From xen-devel-bounces@lists.xenproject.org Mon Jan 01 01:59:19 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 01 Jan 2024 01:59:19 +0000
Received: from list by lists.xenproject.org with outflank-mailman.660372.1029921 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rK7Zx-0002KG-A1; Mon, 01 Jan 2024 01:58:57 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 660372.1029921; Mon, 01 Jan 2024 01:58:57 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rK7Zx-0002K9-72; Mon, 01 Jan 2024 01:58:57 +0000
Received: by outflank-mailman (input) for mailman id 660372;
 Mon, 01 Jan 2024 01:58:56 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rK7Zw-0002Jz-MO; Mon, 01 Jan 2024 01:58:56 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rK7Zw-0004ji-Ds; Mon, 01 Jan 2024 01:58:56 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rK7Zv-0002Ci-OR; Mon, 01 Jan 2024 01:58:55 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rK7Zv-00058T-NJ; Mon, 01 Jan 2024 01:58:55 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=R11YFlZ/055ZstrWOeInTprWqAQWpQeOpb5WHbTbNy8=; b=JK/WvUfZXWGIWIzZBtplHTiEYt
	HFhy5ENz4MD0tGkbVyErqOU8zLX1FMZf/ppdOoi4J6DEuuTaSJG7GoCDMoCn/DPZQ4KhI/cHEJ6Z9
	DZbCjGZAzSifbY1kDyVRn4nvQbPakle7hzYdKggG80gWtpLA2cviieAYWON8+dHnQRGI=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184240-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [linux-linus test] 184240: tolerable FAIL - PUSHED
X-Osstest-Failures:
    linux-linus:test-amd64-amd64-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    linux-linus:test-amd64-amd64-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    linux-linus:test-amd64-amd64-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-raw:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-qcow2:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-qemuu-nested-amd:debian-hvm-install/l1/l2:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-xsm:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-credit2:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-credit2:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-libvirt-xsm:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-thunderx:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-libvirt-xsm:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-thunderx:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit1:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit1:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-rtds:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-rtds:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-arndale:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-arndale:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-credit1:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-credit1:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-xsm:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-xsm:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-qcow2:migrate-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-libvirt-raw:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-vhd:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-vhd:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-vhd:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-vhd:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-multivcpu:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-multivcpu:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit2:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit2:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-qcow2:migrate-support-check:fail:nonblocking
X-Osstest-Versions-This:
    linux=2639772a11c860628c5f7007842eca52a1c34d78
X-Osstest-Versions-That:
    linux=453f5db0619e2ad64076aab16ff5a00e0f7c53a2
From: osstest service owner <osstest-admin@xenproject.org>
Date: Mon, 01 Jan 2024 01:58:55 +0000

flight 184240 linux-linus real [real]
http://logs.test-lab.xenproject.org/osstest/logs/184240/

Failures :-/ but no regressions.

Tests which did not succeed, but are not blocking:
 test-amd64-amd64-xl-qemut-win7-amd64 19 guest-stop            fail like 184238
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 184238
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 184238
 test-armhf-armhf-libvirt-raw 15 saverestore-support-check    fail  like 184238
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 184238
 test-amd64-amd64-xl-qemut-ws16-amd64 19 guest-stop            fail like 184238
 test-armhf-armhf-libvirt-qcow2 15 saverestore-support-check   fail like 184238
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 184238
 test-amd64-amd64-libvirt     15 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit2  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit2  16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl          15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl          16 saverestore-support-check    fail   never pass
 test-arm64-arm64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-thunderx 15 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-xsm 16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-thunderx 16 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-armhf-armhf-xl-credit1  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit1  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-rtds     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-rtds     16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-arndale  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-arndale  16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-credit1  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit1  16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-xsm      15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-xsm      16 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-qcow2 14 migrate-support-check        fail never pass
 test-amd64-amd64-libvirt-raw 14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 15 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-vhd      14 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-vhd      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-raw 14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-multivcpu 15 migrate-support-check        fail  never pass
 test-armhf-armhf-xl-multivcpu 16 saverestore-support-check    fail  never pass
 test-armhf-armhf-libvirt     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-credit2  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit2  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-qcow2 14 migrate-support-check        fail never pass

version targeted for testing:
 linux                2639772a11c860628c5f7007842eca52a1c34d78
baseline version:
 linux                453f5db0619e2ad64076aab16ff5a00e0f7c53a2

Last test of basis   184238  2023-12-30 21:12:09 Z    1 days
Testing same since   184240  2023-12-31 19:13:54 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Alvin Šipraga <alsi@bang-olufsen.dk>
  Linus Torvalds <torvalds@linux-foundation.org>

jobs:
 build-amd64-xsm                                              pass    
 build-arm64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64                                                  pass    
 build-arm64                                                  pass    
 build-armhf                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-arm64-libvirt                                          pass    
 build-armhf-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-pvops                                            pass    
 build-arm64-pvops                                            pass    
 build-armhf-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-amd64-amd64-xl                                          pass    
 test-amd64-coresched-amd64-xl                                pass    
 test-arm64-arm64-xl                                          pass    
 test-armhf-armhf-xl                                          pass    
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm           pass    
 test-amd64-amd64-xl-qemut-stubdom-debianhvm-amd64-xsm        pass    
 test-amd64-amd64-xl-qemut-debianhvm-i386-xsm                 pass    
 test-amd64-amd64-xl-qemuu-debianhvm-i386-xsm                 pass    
 test-amd64-amd64-libvirt-xsm                                 pass    
 test-arm64-arm64-libvirt-xsm                                 pass    
 test-amd64-amd64-xl-xsm                                      pass    
 test-arm64-arm64-xl-xsm                                      pass    
 test-amd64-amd64-qemuu-nested-amd                            fail    
 test-amd64-amd64-xl-pvhv2-amd                                pass    
 test-amd64-amd64-dom0pvh-xl-amd                              pass    
 test-amd64-amd64-xl-qemut-debianhvm-amd64                    pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64                    pass    
 test-amd64-amd64-freebsd11-amd64                             pass    
 test-amd64-amd64-freebsd12-amd64                             pass    
 test-amd64-amd64-xl-qemuu-ovmf-amd64                         pass    
 test-amd64-amd64-xl-qemut-win7-amd64                         fail    
 test-amd64-amd64-xl-qemuu-win7-amd64                         fail    
 test-amd64-amd64-xl-qemut-ws16-amd64                         fail    
 test-amd64-amd64-xl-qemuu-ws16-amd64                         fail    
 test-armhf-armhf-xl-arndale                                  pass    
 test-amd64-amd64-examine-bios                                pass    
 test-amd64-amd64-xl-credit1                                  pass    
 test-arm64-arm64-xl-credit1                                  pass    
 test-armhf-armhf-xl-credit1                                  pass    
 test-amd64-amd64-xl-credit2                                  pass    
 test-arm64-arm64-xl-credit2                                  pass    
 test-armhf-armhf-xl-credit2                                  pass    
 test-amd64-amd64-xl-qemuu-dmrestrict-amd64-dmrestrict        pass    
 test-amd64-amd64-examine                                     pass    
 test-arm64-arm64-examine                                     pass    
 test-armhf-armhf-examine                                     pass    
 test-amd64-amd64-qemuu-nested-intel                          pass    
 test-amd64-amd64-xl-pvhv2-intel                              pass    
 test-amd64-amd64-dom0pvh-xl-intel                            pass    
 test-amd64-amd64-libvirt                                     pass    
 test-armhf-armhf-libvirt                                     pass    
 test-amd64-amd64-xl-multivcpu                                pass    
 test-armhf-armhf-xl-multivcpu                                pass    
 test-amd64-amd64-pair                                        pass    
 test-amd64-amd64-libvirt-pair                                pass    
 test-amd64-amd64-xl-pvshim                                   pass    
 test-amd64-amd64-pygrub                                      pass    
 test-amd64-amd64-libvirt-qcow2                               pass    
 test-armhf-armhf-libvirt-qcow2                               pass    
 test-amd64-amd64-libvirt-raw                                 pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-armhf-armhf-libvirt-raw                                 pass    
 test-amd64-amd64-xl-rtds                                     pass    
 test-armhf-armhf-xl-rtds                                     pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64-shadow             pass    
 test-amd64-amd64-xl-shadow                                   pass    
 test-arm64-arm64-xl-thunderx                                 pass    
 test-amd64-amd64-examine-uefi                                pass    
 test-amd64-amd64-xl-vhd                                      pass    
 test-arm64-arm64-xl-vhd                                      pass    
 test-armhf-armhf-xl-vhd                                      pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Pushing revision :

hint: The 'hooks/update' hook was ignored because it's not set as executable.
hint: You can disable this warning with `git config advice.ignoredHook false`.
hint: The 'hooks/post-receive' hook was ignored because it's not set as executable.
hint: You can disable this warning with `git config advice.ignoredHook false`.
hint: The 'hooks/post-update' hook was ignored because it's not set as executable.
hint: You can disable this warning with `git config advice.ignoredHook false`.
To xenbits.xen.org:/home/xen/git/linux-pvops.git
   453f5db0619e..2639772a11c8  2639772a11c860628c5f7007842eca52a1c34d78 -> tested/linux-linus


From xen-devel-bounces@lists.xenproject.org Mon Jan 01 09:10:50 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 01 Jan 2024 09:10:50 +0000
Received: from list by lists.xenproject.org with outflank-mailman.660387.1029931 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rKEJd-0002dT-7w; Mon, 01 Jan 2024 09:10:33 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 660387.1029931; Mon, 01 Jan 2024 09:10:33 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rKEJd-0002dM-4f; Mon, 01 Jan 2024 09:10:33 +0000
Received: by outflank-mailman (input) for mailman id 660387;
 Mon, 01 Jan 2024 09:10:31 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rKEJb-0002dC-HB; Mon, 01 Jan 2024 09:10:31 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rKEJb-0002lj-BS; Mon, 01 Jan 2024 09:10:31 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rKEJa-0006Ub-RB; Mon, 01 Jan 2024 09:10:30 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rKEJa-0006L9-PS; Mon, 01 Jan 2024 09:10:30 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=9xJOqR1v4MxAkLQq8WH/V5hc+xFHaVXv89dpSr/Yuzo=; b=w2YbyrAlytRAn6xQrBMiMPncEt
	1zFX9UY368QOh2eeS5nRNLBKb6+Cud+q5fi0rsGqUtol1mjdEhW+BBtPdej81kyHIKIKp1lM7bTXL
	RHjKSjtwi3HrW9xsDJyzh+YndLM8MjcnC+YfIYu8XBmk7/WknJYiNDdq7VYfZM9eukuY=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184241-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [xen-unstable test] 184241: tolerable FAIL
X-Osstest-Failures:
    xen-unstable:test-armhf-armhf-libvirt:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-amd64-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-qcow2:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-raw:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-amd64-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-amd64-qemuu-nested-amd:debian-hvm-install/l1/l2:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-amd64-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-i386-libvirt-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-libvirt:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-pvshim:guest-start:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-credit1:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-credit1:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-thunderx:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-thunderx:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-xsm:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-credit2:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-credit2:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-libvirt-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-libvirt-xsm:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-arndale:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-arndale:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-multivcpu:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-multivcpu:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit2:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit2:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit1:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit1:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-libvirt-raw:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-libvirt-raw:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-libvirt-raw:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt-vhd:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-qcow2:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-vhd:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-vhd:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-raw:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-rtds:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-rtds:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-vhd:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-vhd:saverestore-support-check:fail:nonblocking
X-Osstest-Versions-This:
    xen=49818cde637b5ec20383e46b71f93b2e7d867686
X-Osstest-Versions-That:
    xen=49818cde637b5ec20383e46b71f93b2e7d867686
From: osstest service owner <osstest-admin@xenproject.org>
Date: Mon, 01 Jan 2024 09:10:30 +0000

flight 184241 xen-unstable real [real]
http://logs.test-lab.xenproject.org/osstest/logs/184241/

Failures :-/ but no regressions.

Tests which did not succeed, but are not blocking:
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 184239
 test-amd64-amd64-xl-qemut-win7-amd64 19 guest-stop            fail like 184239
 test-amd64-i386-xl-qemuu-win7-amd64 19 guest-stop             fail like 184239
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 184239
 test-armhf-armhf-libvirt-qcow2 15 saverestore-support-check   fail like 184239
 test-amd64-i386-xl-qemut-ws16-amd64 19 guest-stop             fail like 184239
 test-armhf-armhf-libvirt-raw 15 saverestore-support-check    fail  like 184239
 test-amd64-i386-xl-qemut-win7-amd64 19 guest-stop             fail like 184239
 test-amd64-amd64-xl-qemut-ws16-amd64 19 guest-stop            fail like 184239
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 184239
 test-amd64-i386-xl-qemuu-ws16-amd64 19 guest-stop             fail like 184239
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 184239
 test-amd64-i386-libvirt-xsm  15 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt     15 migrate-support-check        fail   never pass
 test-amd64-i386-libvirt      15 migrate-support-check        fail   never pass
 test-amd64-i386-xl-pvshim    14 guest-start                  fail   never pass
 test-amd64-amd64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit1  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit1  16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl          15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl          16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-thunderx 15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-thunderx 16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-xsm      15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-xsm      16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-credit2  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit2  16 saverestore-support-check    fail   never pass
 test-arm64-arm64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-xsm 16 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-armhf-armhf-xl-arndale  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-arndale  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl          15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-multivcpu 15 migrate-support-check        fail  never pass
 test-armhf-armhf-xl-multivcpu 16 saverestore-support-check    fail  never pass
 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-armhf-armhf-libvirt     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit2  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit2  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-credit1  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit1  16 saverestore-support-check    fail   never pass
 test-amd64-i386-libvirt-raw  14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 15 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-vhd 14 migrate-support-check        fail   never pass
 test-armhf-armhf-libvirt-qcow2 14 migrate-support-check        fail never pass
 test-arm64-arm64-xl-vhd      14 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-vhd      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-raw 14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-rtds     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-rtds     16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-vhd      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      15 saverestore-support-check    fail   never pass

version targeted for testing:
 xen                  49818cde637b5ec20383e46b71f93b2e7d867686
baseline version:
 xen                  49818cde637b5ec20383e46b71f93b2e7d867686

Last test of basis   184241  2024-01-01 01:53:52 Z    0 days
Testing same since                          (not found)         0 attempts

jobs:
 build-amd64-xsm                                              pass    
 build-arm64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64-xtf                                              pass    
 build-amd64                                                  pass    
 build-arm64                                                  pass    
 build-armhf                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-arm64-libvirt                                          pass    
 build-armhf-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-prev                                             pass    
 build-i386-prev                                              pass    
 build-amd64-pvops                                            pass    
 build-arm64-pvops                                            pass    
 build-armhf-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-xtf-amd64-amd64-1                                       pass    
 test-xtf-amd64-amd64-2                                       pass    
 test-xtf-amd64-amd64-3                                       pass    
 test-xtf-amd64-amd64-4                                       pass    
 test-xtf-amd64-amd64-5                                       pass    
 test-amd64-amd64-xl                                          pass    
 test-amd64-coresched-amd64-xl                                pass    
 test-arm64-arm64-xl                                          pass    
 test-armhf-armhf-xl                                          pass    
 test-amd64-i386-xl                                           pass    
 test-amd64-coresched-i386-xl                                 pass    
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm           pass    
 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm            pass    
 test-amd64-amd64-xl-qemut-stubdom-debianhvm-amd64-xsm        pass    
 test-amd64-i386-xl-qemut-stubdom-debianhvm-amd64-xsm         pass    
 test-amd64-amd64-xl-qemut-debianhvm-i386-xsm                 pass    
 test-amd64-i386-xl-qemut-debianhvm-i386-xsm                  pass    
 test-amd64-amd64-xl-qemuu-debianhvm-i386-xsm                 pass    
 test-amd64-i386-xl-qemuu-debianhvm-i386-xsm                  pass    
 test-amd64-amd64-libvirt-xsm                                 pass    
 test-arm64-arm64-libvirt-xsm                                 pass    
 test-amd64-i386-libvirt-xsm                                  pass    
 test-amd64-amd64-xl-xsm                                      pass    
 test-arm64-arm64-xl-xsm                                      pass    
 test-amd64-i386-xl-xsm                                       pass    
 test-amd64-amd64-qemuu-nested-amd                            fail    
 test-amd64-amd64-xl-pvhv2-amd                                pass    
 test-amd64-i386-qemut-rhel6hvm-amd                           pass    
 test-amd64-i386-qemuu-rhel6hvm-amd                           pass    
 test-amd64-amd64-dom0pvh-xl-amd                              pass    
 test-amd64-amd64-xl-qemut-debianhvm-amd64                    pass    
 test-amd64-i386-xl-qemut-debianhvm-amd64                     pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64                    pass    
 test-amd64-i386-xl-qemuu-debianhvm-amd64                     pass    
 test-amd64-i386-freebsd10-amd64                              pass    
 test-amd64-amd64-qemuu-freebsd11-amd64                       pass    
 test-amd64-amd64-qemuu-freebsd12-amd64                       pass    
 test-amd64-amd64-xl-qemuu-ovmf-amd64                         pass    
 test-amd64-i386-xl-qemuu-ovmf-amd64                          pass    
 test-amd64-amd64-xl-qemut-win7-amd64                         fail    
 test-amd64-i386-xl-qemut-win7-amd64                          fail    
 test-amd64-amd64-xl-qemuu-win7-amd64                         fail    
 test-amd64-i386-xl-qemuu-win7-amd64                          fail    
 test-amd64-amd64-xl-qemut-ws16-amd64                         fail    
 test-amd64-i386-xl-qemut-ws16-amd64                          fail    
 test-amd64-amd64-xl-qemuu-ws16-amd64                         fail    
 test-amd64-i386-xl-qemuu-ws16-amd64                          fail    
 test-armhf-armhf-xl-arndale                                  pass    
 test-amd64-amd64-examine-bios                                pass    
 test-amd64-i386-examine-bios                                 pass    
 test-amd64-amd64-xl-credit1                                  pass    
 test-arm64-arm64-xl-credit1                                  pass    
 test-armhf-armhf-xl-credit1                                  pass    
 test-amd64-amd64-xl-credit2                                  pass    
 test-arm64-arm64-xl-credit2                                  pass    
 test-armhf-armhf-xl-credit2                                  pass    
 test-amd64-amd64-xl-qemuu-dmrestrict-amd64-dmrestrict        pass    
 test-amd64-i386-xl-qemuu-dmrestrict-amd64-dmrestrict         pass    
 test-amd64-amd64-examine                                     pass    
 test-arm64-arm64-examine                                     pass    
 test-armhf-armhf-examine                                     pass    
 test-amd64-i386-examine                                      pass    
 test-amd64-i386-freebsd10-i386                               pass    
 test-amd64-amd64-qemuu-nested-intel                          pass    
 test-amd64-amd64-xl-pvhv2-intel                              pass    
 test-amd64-i386-qemut-rhel6hvm-intel                         pass    
 test-amd64-i386-qemuu-rhel6hvm-intel                         pass    
 test-amd64-amd64-dom0pvh-xl-intel                            pass    
 test-amd64-amd64-libvirt                                     pass    
 test-armhf-armhf-libvirt                                     pass    
 test-amd64-i386-libvirt                                      pass    
 test-amd64-amd64-livepatch                                   pass    
 test-amd64-i386-livepatch                                    pass    
 test-amd64-amd64-migrupgrade                                 pass    
 test-amd64-i386-migrupgrade                                  pass    
 test-amd64-amd64-xl-multivcpu                                pass    
 test-armhf-armhf-xl-multivcpu                                pass    
 test-amd64-amd64-pair                                        pass    
 test-amd64-i386-pair                                         pass    
 test-amd64-amd64-libvirt-pair                                pass    
 test-amd64-i386-libvirt-pair                                 pass    
 test-amd64-amd64-xl-pvshim                                   pass    
 test-amd64-i386-xl-pvshim                                    fail    
 test-amd64-amd64-pygrub                                      pass    
 test-armhf-armhf-libvirt-qcow2                               pass    
 test-amd64-amd64-xl-qcow2                                    pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-armhf-armhf-libvirt-raw                                 pass    
 test-amd64-i386-libvirt-raw                                  pass    
 test-amd64-amd64-xl-rtds                                     pass    
 test-armhf-armhf-xl-rtds                                     pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64-shadow             pass    
 test-amd64-i386-xl-qemuu-debianhvm-amd64-shadow              pass    
 test-amd64-amd64-xl-shadow                                   pass    
 test-amd64-i386-xl-shadow                                    pass    
 test-arm64-arm64-xl-thunderx                                 pass    
 test-amd64-amd64-examine-uefi                                pass    
 test-amd64-i386-examine-uefi                                 pass    
 test-amd64-amd64-libvirt-vhd                                 pass    
 test-arm64-arm64-xl-vhd                                      pass    
 test-armhf-armhf-xl-vhd                                      pass    
 test-amd64-i386-xl-vhd                                       pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Published tested tree is already up to date.



From xen-devel-bounces@lists.xenproject.org Mon Jan 01 12:49:51 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 01 Jan 2024 12:49:51 +0000
Received: from list by lists.xenproject.org with outflank-mailman.660415.1029941 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rKHjc-0006dC-GF; Mon, 01 Jan 2024 12:49:36 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 660415.1029941; Mon, 01 Jan 2024 12:49:36 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rKHjc-0006d5-D5; Mon, 01 Jan 2024 12:49:36 +0000
Received: by outflank-mailman (input) for mailman id 660415;
 Mon, 01 Jan 2024 12:49:35 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rKHjb-0006cv-DW; Mon, 01 Jan 2024 12:49:35 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rKHja-0006bg-VO; Mon, 01 Jan 2024 12:49:34 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rKHja-0003UW-Jc; Mon, 01 Jan 2024 12:49:34 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rKHja-0004XA-JC; Mon, 01 Jan 2024 12:49:34 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=TIQZ/udIOSCcTRlrX0KoUcM2WGZrX9mfYTGOwBFeqPA=; b=ZY+p18tNm3ee7KG0jh6INluCee
	4OhdUVv6F7uuhL3TBL60yzgjW1yRY0Kiyu1MZ6yJmWYp8n+ofzY+SihPThnd00lTpuC46+VQeGwNl
	oyVbPERc2vrcfdk5UEMtNz03oqmOdqsxpzB0pwsnnZqtzNy35RIDNCCuldSugc4JK+l4=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184242-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [linux-linus test] 184242: tolerable FAIL - PUSHED
X-Osstest-Failures:
    linux-linus:test-amd64-amd64-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    linux-linus:test-amd64-amd64-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    linux-linus:test-amd64-amd64-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-raw:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-qcow2:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-qemuu-nested-amd:debian-hvm-install/l1/l2:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-xsm:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-credit2:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-credit2:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-libvirt-xsm:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-thunderx:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-libvirt-xsm:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-thunderx:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit1:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit1:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-rtds:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-rtds:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-arndale:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-arndale:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-credit1:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-credit1:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-xsm:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-xsm:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-qcow2:migrate-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-libvirt-raw:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-vhd:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-vhd:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-vhd:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-vhd:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-multivcpu:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-multivcpu:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit2:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit2:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-qcow2:migrate-support-check:fail:nonblocking
X-Osstest-Versions-This:
    linux=610a9b8f49fbcf1100716370d3b5f6f884a2835a
X-Osstest-Versions-That:
    linux=2639772a11c860628c5f7007842eca52a1c34d78
From: osstest service owner <osstest-admin@xenproject.org>
Date: Mon, 01 Jan 2024 12:49:34 +0000

flight 184242 linux-linus real [real]
http://logs.test-lab.xenproject.org/osstest/logs/184242/

Failures :-/ but no regressions.

Tests which did not succeed, but are not blocking:
 test-amd64-amd64-xl-qemut-win7-amd64 19 guest-stop            fail like 184240
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 184240
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 184240
 test-armhf-armhf-libvirt-raw 15 saverestore-support-check    fail  like 184240
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 184240
 test-amd64-amd64-xl-qemut-ws16-amd64 19 guest-stop            fail like 184240
 test-armhf-armhf-libvirt-qcow2 15 saverestore-support-check   fail like 184240
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 184240
 test-amd64-amd64-libvirt     15 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit2  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit2  16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl          15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl          16 saverestore-support-check    fail   never pass
 test-arm64-arm64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-thunderx 15 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-xsm 16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-thunderx 16 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-armhf-armhf-xl-credit1  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit1  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-rtds     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-rtds     16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-arndale  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-arndale  16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-credit1  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit1  16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-xsm      15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-xsm      16 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-qcow2 14 migrate-support-check        fail never pass
 test-amd64-amd64-libvirt-raw 14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 15 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-vhd      14 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-vhd      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-raw 14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-multivcpu 15 migrate-support-check        fail  never pass
 test-armhf-armhf-xl-multivcpu 16 saverestore-support-check    fail  never pass
 test-armhf-armhf-libvirt     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-credit2  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit2  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-qcow2 14 migrate-support-check        fail never pass

version targeted for testing:
 linux                610a9b8f49fbcf1100716370d3b5f6f884a2835a
baseline version:
 linux                2639772a11c860628c5f7007842eca52a1c34d78

Last test of basis   184240  2023-12-31 19:13:54 Z    0 days
Testing same since   184242  2024-01-01 02:01:46 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Linus Torvalds <torvalds@linux-foundation.org>

jobs:
 build-amd64-xsm                                              pass    
 build-arm64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64                                                  pass    
 build-arm64                                                  pass    
 build-armhf                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-arm64-libvirt                                          pass    
 build-armhf-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-pvops                                            pass    
 build-arm64-pvops                                            pass    
 build-armhf-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-amd64-amd64-xl                                          pass    
 test-amd64-coresched-amd64-xl                                pass    
 test-arm64-arm64-xl                                          pass    
 test-armhf-armhf-xl                                          pass    
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm           pass    
 test-amd64-amd64-xl-qemut-stubdom-debianhvm-amd64-xsm        pass    
 test-amd64-amd64-xl-qemut-debianhvm-i386-xsm                 pass    
 test-amd64-amd64-xl-qemuu-debianhvm-i386-xsm                 pass    
 test-amd64-amd64-libvirt-xsm                                 pass    
 test-arm64-arm64-libvirt-xsm                                 pass    
 test-amd64-amd64-xl-xsm                                      pass    
 test-arm64-arm64-xl-xsm                                      pass    
 test-amd64-amd64-qemuu-nested-amd                            fail    
 test-amd64-amd64-xl-pvhv2-amd                                pass    
 test-amd64-amd64-dom0pvh-xl-amd                              pass    
 test-amd64-amd64-xl-qemut-debianhvm-amd64                    pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64                    pass    
 test-amd64-amd64-freebsd11-amd64                             pass    
 test-amd64-amd64-freebsd12-amd64                             pass    
 test-amd64-amd64-xl-qemuu-ovmf-amd64                         pass    
 test-amd64-amd64-xl-qemut-win7-amd64                         fail    
 test-amd64-amd64-xl-qemuu-win7-amd64                         fail    
 test-amd64-amd64-xl-qemut-ws16-amd64                         fail    
 test-amd64-amd64-xl-qemuu-ws16-amd64                         fail    
 test-armhf-armhf-xl-arndale                                  pass    
 test-amd64-amd64-examine-bios                                pass    
 test-amd64-amd64-xl-credit1                                  pass    
 test-arm64-arm64-xl-credit1                                  pass    
 test-armhf-armhf-xl-credit1                                  pass    
 test-amd64-amd64-xl-credit2                                  pass    
 test-arm64-arm64-xl-credit2                                  pass    
 test-armhf-armhf-xl-credit2                                  pass    
 test-amd64-amd64-xl-qemuu-dmrestrict-amd64-dmrestrict        pass    
 test-amd64-amd64-examine                                     pass    
 test-arm64-arm64-examine                                     pass    
 test-armhf-armhf-examine                                     pass    
 test-amd64-amd64-qemuu-nested-intel                          pass    
 test-amd64-amd64-xl-pvhv2-intel                              pass    
 test-amd64-amd64-dom0pvh-xl-intel                            pass    
 test-amd64-amd64-libvirt                                     pass    
 test-armhf-armhf-libvirt                                     pass    
 test-amd64-amd64-xl-multivcpu                                pass    
 test-armhf-armhf-xl-multivcpu                                pass    
 test-amd64-amd64-pair                                        pass    
 test-amd64-amd64-libvirt-pair                                pass    
 test-amd64-amd64-xl-pvshim                                   pass    
 test-amd64-amd64-pygrub                                      pass    
 test-amd64-amd64-libvirt-qcow2                               pass    
 test-armhf-armhf-libvirt-qcow2                               pass    
 test-amd64-amd64-libvirt-raw                                 pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-armhf-armhf-libvirt-raw                                 pass    
 test-amd64-amd64-xl-rtds                                     pass    
 test-armhf-armhf-xl-rtds                                     pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64-shadow             pass    
 test-amd64-amd64-xl-shadow                                   pass    
 test-arm64-arm64-xl-thunderx                                 pass    
 test-amd64-amd64-examine-uefi                                pass    
 test-amd64-amd64-xl-vhd                                      pass    
 test-arm64-arm64-xl-vhd                                      pass    
 test-armhf-armhf-xl-vhd                                      pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Pushing revision :

hint: The 'hooks/update' hook was ignored because it's not set as executable.
hint: You can disable this warning with `git config advice.ignoredHook false`.
hint: The 'hooks/post-receive' hook was ignored because it's not set as executable.
hint: You can disable this warning with `git config advice.ignoredHook false`.
hint: The 'hooks/post-update' hook was ignored because it's not set as executable.
hint: You can disable this warning with `git config advice.ignoredHook false`.
To xenbits.xen.org:/home/xen/git/linux-pvops.git
   2639772a11c8..610a9b8f49fb  610a9b8f49fbcf1100716370d3b5f6f884a2835a -> tested/linux-linus


From xen-devel-bounces@lists.xenproject.org Tue Jan 02 03:35:20 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 02 Jan 2024 03:35:20 +0000
Received: from list by lists.xenproject.org with outflank-mailman.660539.1030014 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rKVYM-00047h-Lp; Tue, 02 Jan 2024 03:34:54 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 660539.1030014; Tue, 02 Jan 2024 03:34:54 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rKVYM-00047a-J8; Tue, 02 Jan 2024 03:34:54 +0000
Received: by outflank-mailman (input) for mailman id 660539;
 Tue, 02 Jan 2024 03:34:53 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=IX2N=IM=nxp.com=peng.fan@srs-se1.protection.inumbo.net>)
 id 1rKVYL-00047U-E0
 for xen-devel@lists.xenproject.org; Tue, 02 Jan 2024 03:34:53 +0000
Received: from EUR04-VI1-obe.outbound.protection.outlook.com
 (mail-vi1eur04on0625.outbound.protection.outlook.com
 [2a01:111:f400:fe0e::625])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id e2b84986-a91f-11ee-98ee-6d05b1d4d9a1;
 Tue, 02 Jan 2024 04:34:51 +0100 (CET)
Received: from DU0PR04MB9417.eurprd04.prod.outlook.com (2603:10a6:10:358::11)
 by PAXPR04MB9571.eurprd04.prod.outlook.com (2603:10a6:102:24e::7)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7135.25; Tue, 2 Jan
 2024 03:34:48 +0000
Received: from DU0PR04MB9417.eurprd04.prod.outlook.com
 ([fe80::ff06:bbb2:c068:5fb3]) by DU0PR04MB9417.eurprd04.prod.outlook.com
 ([fe80::ff06:bbb2:c068:5fb3%7]) with mapi id 15.20.7135.023; Tue, 2 Jan 2024
 03:34:48 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: e2b84986-a91f-11ee-98ee-6d05b1d4d9a1
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=RQn6GgkfighoJbZqRNEs2KkyLOsDOy/CbNVOWD9pZe08+lU/q54TcyaSKkP33m8npMePzKbsJnQVevURRO7BMGXjUf98S/ywEL64zxWZ0AbVeDlcMJjaRwY8Ah8MNPjCUR5eBYK0zfQz3d5Ikj+Lmn5qx/XfGYI+DF6ipOYIq1gZnYfVVbkRnZKEiGcGB7qtoBVRQlyj2jLhHwxPJ87F1SEY+g4Z5hahIowMVcSPxvKhh+Fd56A26BEp6sQS6Z+k9vsccCeXXdPcijpkvKnWG7QlzjQeWSmPLyhlzURMsceSOJyHmV6faMxKyBdrg3ubSC/VF/1yPiV9whbQb8jlOQ==
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=uXyV6Bzac3MDIZ10EZTk98WGpEcNSLyE8GxaVCnSTUg=;
 b=gT6RDUaXAi0V1HdGUSuts/cTrGsuLs5yKD6JEQL6Ifcb0u/k3g/jteY2WspWzsLW7PSVtGmOpiMiXDQlArkTHlBpdZ7M8pp1C2yg/XnFcWA/OjhmH8g6qxaa051zEoCMSnDhmUib4J9SAjs8a+0wM+n2Nx1mK8P7DDX5wRwMXLf1A+Z4fFt37tC2eNGUXeFiPkXhtCgPNkTjbgJJm867VleWRBcNLYSpA7MpYe9JvaAdOpcNki8agTw4bNgTYIe0yWr7PDXTVWENN/WeP39axWySzvPUfRzikfI5v159U2ZQeONunU7T1LJIJPYg1IIbAKrPqz7zxI/RYsX9bSGgjA==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass
 header.d=nxp.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector2;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=uXyV6Bzac3MDIZ10EZTk98WGpEcNSLyE8GxaVCnSTUg=;
 b=NKro5KDM2YxFKhqboV8R3PtsYICvETx/VOc3PTY1ZCrF/kwMYk2IZJiWAKPR3uUXY1iBxPo4DQIIJ1WtXoWBQzpcOLsFtvOuxH1UBqkNU/ScaqfRzSl0Z6L7mSmuHAIejcwITtPMKmBXpS0v4iELtLQ+40jJrRJYMexlPA/4gQI=
From: Peng Fan <peng.fan@nxp.com>
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>, Julien
 Grall <julien@xen.org>, "sstabellini@kernel.org" <sstabellini@kernel.org>,
	Viresh Kumar <viresh.kumar@linaro.org>, Oleksii Moisieiev
	<oleksii_moisieiev@epam.com>
Subject: XEN virtio question
Thread-Topic: XEN virtio question
Thread-Index: Ado9Jqd+1Kgsx7mlTliX2A2ozl2Qzg==
Date: Tue, 2 Jan 2024 03:34:47 +0000
Message-ID:
 <DU0PR04MB941725CE43965686FD8B9A948861A@DU0PR04MB9417.eurprd04.prod.outlook.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=nxp.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: DU0PR04MB9417:EE_|PAXPR04MB9571:EE_
x-ms-office365-filtering-correlation-id: 197af49d-2b81-4c0f-4cf8-08dc0b43c532
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam: BCL:0;
x-microsoft-antispam-message-info:
 dBewbvnW7yYRlM7+lTuhqc1uqVgp8hRGSiHYGkF9MmoidW1IC86nseU7QKMBRU25+qHTAoWSXNGGZJ97JyPKph0oOJTPeS3AprmECAGKwjKe/AD19Mg/KgqLPJWD+RGH+9vn2gQnUz648ckvynE7B1H+wZt/Z1GCYjkKMsaZxPszaXKfB9eumBPUIFaIHl2bSuU48bJ3pjjddL9+3NlygwryjV9qYAR1CE7kgUbN91Nrwevr9OrjFkad49yssy3x5ELj5pWRlnWQs5RKesy8anhCYpH4LIahzOdMxRj0YvMV8OrZa0Np34cRgKbKJECyJfNqeNTsWzGfDJfwrEWUSoU5sXcrZplGNFNnSiyyp/Dck8HKAw9HgTCSAmxV3d6i7ADYVHs769yUaY3fz7OCcjMXsKq6ynxgHN0nmYyvyGrm+UED/jf8RK1yaWY4Tq8QqUhjPgsQ3jOWvlbkbif1KWubGtjWg+3YCHdLCWXtOl1uVY0LaO2sff6t+hgX9nGnPJfBqGyDSrwQfyW1qadoSM/LtQ6ChlVBV87JzJmffTyo+BcbXSD0YKNdxhWtHR+0J6irCLgqzRYLQAKGNV6I26OjiKJmbx39hN7hD/WyI5qj/f+tgoGGI1BEDPdhkEZ7
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DU0PR04MB9417.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230031)(376002)(346002)(136003)(39860400002)(396003)(366004)(230922051799003)(64100799003)(186009)(451199024)(1800799012)(64756008)(76116006)(66446008)(66476007)(66556008)(66946007)(7116003)(52536014)(44832011)(316002)(110136005)(8676002)(8936002)(26005)(478600001)(71200400001)(9686003)(6506007)(7696005)(5660300002)(2906002)(4744005)(41300700001)(33656002)(38070700009)(122000001)(38100700002)(3480700007)(86362001)(55016003);DIR:OUT;SFP:1101;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?us-ascii?Q?KSnTt5EjQrYrLOTk2BAXjWDjXfcXpDEf4Qdn0QHQp9CL0OAF7sUhQmMWsiEK?=
 =?us-ascii?Q?PgqK73cEOEQAI/+WdO9J0B1gtvMxCLWsYkTA9af0G5XBSg6vP8GtlzWcfrVE?=
 =?us-ascii?Q?WNcPG68VHlAxs2yZ7u909QzL8AkDTN4lSSLxcK8mXgDJNFG2aC9x9Y/+V9IR?=
 =?us-ascii?Q?GHlPIYxdYArSQLPno5U+R2lyGLfi//p+saMjfe/5WV3SEbG6Kkiqf361kWM/?=
 =?us-ascii?Q?H7Cdn4RU3gGFo2jxG6f978q9Smc1uVWyV5+lPkOOLcZlJzrhOSRk4r6wvgck?=
 =?us-ascii?Q?EHzmaNY/V4I1vJbg5D1FrsRb43MLOiAFomLxixRNZf/w1dBCghlz9eppcnAi?=
 =?us-ascii?Q?QwUWYVYmRv9P+fqSjZw7Z7XLQtlPpOAnTLK4yX+ZlGUUftqOC0wYy9MEKp70?=
 =?us-ascii?Q?C4Ru0sMP7MIjP2y5PdJXg5MjFFooiCXm+vS93X04kcrjb6hKiHk5PySa0xBi?=
 =?us-ascii?Q?I2mKPuhM5z8Tsua+9h3K9T1N2BsFeNLriM8NXKeXBrBJ6xaKDJJeseEPaqFl?=
 =?us-ascii?Q?VxgF97p2t44dNAr0593XeMRQ+ciF8mETCmMPNEqQw0+ePPmhVheVpEUAu8QY?=
 =?us-ascii?Q?nL4wCw28BtpjigNO+/fGDAiRFzE1/HTIuallx+jvS6idUwKs0nOUmfHNHyF5?=
 =?us-ascii?Q?M8XerljlWVTzc1GIwwkoqnJsuPYfoucU4Wm6Qj3rT+HdLRN6mhEz86Owa5C5?=
 =?us-ascii?Q?96UNnGXnlr6Qd46+AL4rxBD8qIFDwNy4XONKc39cDE17ldf1ckvuanDjd/a5?=
 =?us-ascii?Q?teYHBi70CWdk9Z+ORvDoJqUraFMhtjaLdZ4i3GjrzpEyrwGCc+MGL+3zesVa?=
 =?us-ascii?Q?EdHwBUsCqynqV2K0eqjG653t6uoMCs+UAKcvniGkVkCp0rnzie7XLf8eXVV/?=
 =?us-ascii?Q?70/o8gQwMqOsFscjwl+vKN72O0uMJFDzTCatJ9expvRwRwjzrO3uzddBNqEO?=
 =?us-ascii?Q?JbmIff1BbUUjIytA8zfdqvkW0c6hFJUNMBgYPcAVYXjrl3KMIfxyLXUfXtcl?=
 =?us-ascii?Q?LBptsUnJVAqB47v+pJao+acThEXCWMjgjd1Nsaea5KDaxJZ9VbIgtuiZC9Cw?=
 =?us-ascii?Q?eYbmu+MMmT748tkJ3SbVAgeDtWkIYm7wwg1S4oMpsHbIa+K9P45UJRhLyQLC?=
 =?us-ascii?Q?e3JT4l+E2AneJo086fh4RvlECuldIImvua1cB4jEBvtqQdWnplLo18wmaYy3?=
 =?us-ascii?Q?+3e/K0J2K/OvwlKzCW+3xSsj9fUr8TH5c8oUK8MYTxrRLrAzVFx1Nrs7MKa+?=
 =?us-ascii?Q?DVnpgJSfCw+yNCCbs6hjA9hUBZLlk1n0gyDx+6ajXeD60q0UnXUqWLk0LQt5?=
 =?us-ascii?Q?DMvcjP72eTim5d2h1ksiZ70Cb1ml5pX2eF2s/olItS7/SMTCvy2nboTblBXB?=
 =?us-ascii?Q?jXdLJtQH4MXSp2LgHSe02N8BzraD8Mh+g/B1jx3F4LNp0S1eIXR45eGvDRhi?=
 =?us-ascii?Q?df5tsHl3/OG9qtYuzAF3kIvw9m4F93fWK8oHMg8B2TuFOcKtR74BcETGkZws?=
 =?us-ascii?Q?3rvBwJqFQsS41wf/T8GlxuA7xLm+dGfv+jVvQN55ucKgqfiF1fcu1jFEXbHb?=
 =?us-ascii?Q?NKgqihb+xQMgE//Mi40=3D?=
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-OriginatorOrg: nxp.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: DU0PR04MB9417.eurprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 197af49d-2b81-4c0f-4cf8-08dc0b43c532
X-MS-Exchange-CrossTenant-originalarrivaltime: 02 Jan 2024 03:34:47.8516
 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: XALXKeKEKL1AVW1X/3Kr7nljCcIQElQXmKgnlLzzrPkVpeTb/Ske/gSwaHBYv4bPWgPSpY8nDGVRGcdOSkC2jA==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAXPR04MB9571

All,

I am trying to setup xen virtio on NXP i.MX9, but when build xen tools,
I always met qemu build error, such as:

In file included from ../qemu-xen-dir-remote/hw/xen/xen-operations.c:16:
/home/Freenix/work/sw-stash/xen/upstream/tools/qemu-xen-dir-remote/
include/hw/xen/xen_native.h:5:2: error: #error In Xen native files,=20
include xen_native.h before other Xen headers
    5 | #error In Xen native files, include xen_native.h before other Xen h=
eaders
      |  ^~~~~

Anyone met this?

BTW, do u build qemu together with xen or build standalone qemu out of
xen repo? Does the default qemu-system-i386 built out works well
for virtio trying?

Thanks,
Peng.


From xen-devel-bounces@lists.xenproject.org Tue Jan 02 07:57:22 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 02 Jan 2024 07:57:22 +0000
Received: from list by lists.xenproject.org with outflank-mailman.660544.1030025 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rKZe6-0000BV-0U; Tue, 02 Jan 2024 07:57:06 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 660544.1030025; Tue, 02 Jan 2024 07:57:05 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rKZe5-0000BO-T2; Tue, 02 Jan 2024 07:57:05 +0000
Received: by outflank-mailman (input) for mailman id 660544;
 Tue, 02 Jan 2024 07:57:04 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=30cU=IM=amd.com=Michal.Orzel@srs-se1.protection.inumbo.net>)
 id 1rKZe4-0000BH-CG
 for xen-devel@lists.xenproject.org; Tue, 02 Jan 2024 07:57:04 +0000
Received: from NAM10-MW2-obe.outbound.protection.outlook.com
 (mail-mw2nam10on20601.outbound.protection.outlook.com
 [2a01:111:f403:2412::601])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 82797e21-a944-11ee-98ee-6d05b1d4d9a1;
 Tue, 02 Jan 2024 08:57:02 +0100 (CET)
Received: from BYAPR08CA0060.namprd08.prod.outlook.com (2603:10b6:a03:117::37)
 by CH3PR12MB8936.namprd12.prod.outlook.com (2603:10b6:610:179::17)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7135.25; Tue, 2 Jan
 2024 07:56:57 +0000
Received: from SJ5PEPF000001D0.namprd05.prod.outlook.com
 (2603:10b6:a03:117:cafe::28) by BYAPR08CA0060.outlook.office365.com
 (2603:10b6:a03:117::37) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7135.20 via Frontend
 Transport; Tue, 2 Jan 2024 07:56:57 +0000
Received: from SATLEXMB04.amd.com (165.204.84.17) by
 SJ5PEPF000001D0.mail.protection.outlook.com (10.167.242.52) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.7159.9 via Frontend Transport; Tue, 2 Jan 2024 07:56:56 +0000
Received: from SATLEXMB03.amd.com (10.181.40.144) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.34; Tue, 2 Jan
 2024 01:56:55 -0600
Received: from [10.252.147.188] (10.180.168.240) by SATLEXMB03.amd.com
 (10.181.40.144) with Microsoft SMTP Server id 15.1.2507.34 via Frontend
 Transport; Tue, 2 Jan 2024 01:56:54 -0600
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 82797e21-a944-11ee-98ee-6d05b1d4d9a1
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=Frr2Omk54ICTEFZh7diewfEbLAuA37uutmMMEB8rNbRp8uyrk+nSa7o75P8aEpoU9DifBTGY16laGAWNPdEGxPudEk/tTLovWn7mz5QZm7lIFz9ofwi6J7Zrlixln246n5NI6NYXhHXBvQTq6bD3O5yKvfZQP2FbjD/SwKAF+MkCyzoQJckGaPNecCVsFOVFgxcCp3wyTKXM0eoYze3x+Hyv0HFRvLpFhcBuPQiQ+itDLvfspqZPVoW78cA464kACFe8hxTfqk9+Zl+Uc0nQmS2unO29IwwqECMeDQpkMUfaLvl3/ERpDDem3jqhiqhnUkzDFJgTvCuwwWLuPPE8Nw==
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=nOgcyxDXGUPIQ91SjdZyUHA7Xur2gDiNmkItHCNMXEU=;
 b=OM/8PnsZs7ZAQZDdw/m6Kst37I0FWqzdNNDMoc2UM9dMVrB4AuZvpYgFB96T7x9sN5oIJgyjWHCyHdXBGHAMI0BAf6Hq1x347q39Om8gAp6YGewieSGlrlbhEPvU9TGRZZq3U91A/7pk/NiloMV4AcmHNM/010zBcARKLeL8hSv0op0dStI0JJQq0JznXc+Z9P4Z72CKJRgnMcylwOwAs7OZd7fcQ6PxN++XzDnhwuceBMIaifOKz1bSbAQ+pZbSNdQ3SjFjcrPj20bh4xDmGXqltO32/qGqx40/yC8Tx3CXBJ27usplzSRigkZdJTM/wrJSQk/8fWoKmMFk7Q/hCw==
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)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=nOgcyxDXGUPIQ91SjdZyUHA7Xur2gDiNmkItHCNMXEU=;
 b=pD9RImWlDcnBHNBx0ksPS5Kvu9+7qN9FcJ9S1viE98Xk1ihTcahK8Vd6CdPS9YAMjnVAOHTf0KsiS5/qUnwV4QtHdNDaFGe1jQIMUkfv5xJM2N7PELaTjU2Bq2EP9OaDMziEZ6hN2wSu7698cD+/Yy48OOkwox0WM8cSimXYAJY=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C
Message-ID: <39e7a217-b829-42e6-bfec-fb297a058521@amd.com>
Date: Tue, 2 Jan 2024 08:56:48 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
From: Michal Orzel <michal.orzel@amd.com>
Subject: Re: [PATCH v2 1/3] xen/arm: Add emulation of Debug Data Transfer
 Registers
To: <julien@xen.org>, <ayan.kumar.halder@amd.com>, <sstabellini@kernel.org>,
	<bertrand.marquis@arm.com>, <Volodymyr_Babchuk@epam.com>,
	<stefano.stabellini@amd.com>
CC: <xen-devel@lists.xenproject.org>
References: <20231218203242.1393268-1-michal.orzel@amd.com>
Content-Language: en-US
In-Reply-To: <20231218203242.1393268-1-michal.orzel@amd.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 7bit
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: SJ5PEPF000001D0:EE_|CH3PR12MB8936:EE_
X-MS-Office365-Filtering-Correlation-Id: f94a56e9-fe88-449d-97d5-08dc0b68644a
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam: BCL:0;
X-Microsoft-Antispam-Message-Info:
	bMd2dUjzNK6+SOIkDv5HybwPWldYBDvllcaT77G6yfX9eEX3/NsNdizBdOLvrNzI0zNIH41yXWj88Jw5VMUqOp7INWAF8QuJCxNVR2TXE+3Rg5h2F1IjBAfAPw+9crcFTIvkohDv7CHZZsRoQYijI3rOHP5MpzakCtGLoltTMt7YfEmfXa725Zj2WGCTx93tNKq8vresq6uUlpHThUzHBQ2Z/7UBaJC9Oc/NgsHgGcqSe8ycMHcxJOTlSp4fV94evXUSbu32FLPktQ/h9cgKcBNC3g7RRH6WfgrGB/FH/KD9Kg+MGVmj+RRa9TGTR0rie6rzwB91MI8l5g4SEv6NfoKqBWPuKGbjBbCww5tkKfhQMXTRCaN98Wz6815uR+0lN4vB1W4cvWOwm5iW7avfPF3wR5QeVjSf+1SIPUb9ZdnnnBxvjzkG5YxfQLtjyTSfX9zgFkUdkqx8oflkzJW2Ddwg09RPmTNemcbcKCMP6/jDdFfj185ddQ78PaoiZyRi37osf+nFmeKQVPftgbztGc+8pWAReLsIQbjTwaSxABVue47vrYGLLbVoqi1O5KUOWqafcM0ksAbnU/LRZD01WlLH6FAs6nunBBSix1kLaBDFhDIWkx/tixaqEnFveweGTwrE94qGcwV73ezsGIVI3Vo8wa4JbRSQ/Mkt6JzbR4lbTms/nDAQZV3gmgK4BtZHVE9EFNGkkkk9llrSbAMc3nqxAPHjtyGVAE5slrFzLhgKdWqKlTmMxTk12xdAYPTRPagqRvffGZxBr8ZqyMywDTIB55O86I8E6hFsYo9mpiXI5yW5vm2fk5j6qGuX3ZyczJbBf0bSwkzc0YC4L/4ypmI1GgwevBacvIRhp7m7a5A=
X-Forefront-Antispam-Report:
	CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230031)(4636009)(396003)(376002)(346002)(39860400002)(136003)(230922051799003)(230173577357003)(230273577357003)(64100799003)(186009)(82310400011)(451199024)(1800799012)(46966006)(40470700004)(36840700001)(31686004)(36756003)(40480700001)(40460700003)(70206006)(53546011)(70586007)(86362001)(31696002)(426003)(336012)(83380400001)(41300700001)(82740400003)(81166007)(356005)(26005)(2616005)(47076005)(2906002)(4326008)(5660300002)(30864003)(6666004)(478600001)(6636002)(44832011)(36860700001)(110136005)(16576012)(316002)(8676002)(8936002)(36900700001)(43740500002);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Jan 2024 07:56:56.5632
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: f94a56e9-fe88-449d-97d5-08dc0b68644a
X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com]
X-MS-Exchange-CrossTenant-AuthSource:
	SJ5PEPF000001D0.namprd05.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH3PR12MB8936

Hi Ayan,

On 18/12/2023 21:32, michal.orzel@amd.com wrote:
> From: Michal Orzel <michal.orzel@amd.com>
> 
> Currently if user enables HVC_DCC config option in Linux, it invokes
> access to debug data transfer registers (ie MDCCSR_EL0 on arm64,
you mention status reg on arm64 and TX reg on arm32.
Instead, it should be DBGDTRTX_EL0 on arm64.

> DBGDTRTXINT on arm32). As these registers are not emulated, Xen injects
> an undefined exception to the guest. And Linux crashes.
no need for a full stop before And

> 
> We wish to avoid this crash by adding a "partial" emulation. DBGDTR_EL0
MDCCSR_EL0 (not DBGDTR_EL0)

> is emulated as TXfull.
> Refer ARM DDI 0487I.a ID081822, D17.3.8, DBGDTRTX_EL0
NIT: best practice is to refer to the latest version of a doc (i.e. J.a)

> "If TXfull is set to 1, set DTRRX and DTRTX to UNKNOWN"
> 
> Thus, any OS is expected to read DBGDTR_EL0 and check for TXfull
MDCCSR_EL0 (not DBGDTR_EL0)

> before using DBGDTRTX_EL0. Linux does it via hvc_dcc_init() --->
> hvc_dcc_check() , it returns -ENODEV. In this way, we are preventing
> the guest to be aborted.
> 
> We also emulate DBGDTRTX_EL0 as RAZ/WI.
s/DBGDTRTX_EL0/DBGDTR[TR]X_EL0/
> 
> We have added emulation for AArch32 variant of these registers as well.
> 
> Also in the case of AArch32, DBGOSLSR is emulated in the same way as
> its AArch64 variant (ie OSLSR_EL1). This is to ensure that
> DBGOSLSR.OSLK is 0, thus MDSCR_EL1.TXfull is treated as UNK/SBZP.
> Thus only MDCCSR_EL0 can be emulated (which is DBGDTRTXINT on arm32).
> So, DBGDTR[TR]XINT is emulated as RAZ/WI.

I can see in the code that you followed my suggestion to fix DBGDSCRINT,
so that it can be accessed at EL0 (because DBGDSCREXT is RAZ). However, you do not mention it anywhere.

> 
> Signed-off-by: Michal Orzel <michal.orzel@amd.com>
> Signed-off-by: Ayan Kumar Halder <ayan.kumar.halder@amd.com>
> ---
> Changes from 
> 
> v1 :- 1. DBGDTR_EL0 does not emulate RXfull. This is to avoid giving the OS any
> indication that the RX buffer is full and is waiting to be read.
> 
> 2. In Arm32, DBGOSLSR is emulated. Also DBGDTRTXINT is emulated at EL0 only.
> 
> 3. Fixed the commit message and inline code comments.
> 
>  xen/arch/arm/arm64/vsysreg.c         | 26 +++++++++++++++----
>  xen/arch/arm/include/asm/arm64/hsr.h |  3 +++
>  xen/arch/arm/include/asm/cpregs.h    |  2 ++
>  xen/arch/arm/include/asm/traps.h     |  4 +++
>  xen/arch/arm/traps.c                 | 18 +++++++++++++
>  xen/arch/arm/vcpreg.c                | 38 +++++++++++++++++++++++-----
>  6 files changed, 79 insertions(+), 12 deletions(-)
> 
> diff --git a/xen/arch/arm/arm64/vsysreg.c b/xen/arch/arm/arm64/vsysreg.c
> index b5d54c569b..ebeb83dd65 100644
> --- a/xen/arch/arm/arm64/vsysreg.c
> +++ b/xen/arch/arm/arm64/vsysreg.c
> @@ -159,9 +159,6 @@ void do_sysreg(struct cpu_user_regs *regs,
>       *
>       * Unhandled:
>       *    MDCCINT_EL1
> -     *    DBGDTR_EL0
> -     *    DBGDTRRX_EL0
> -     *    DBGDTRTX_EL0
>       *    OSDTRRX_EL1
>       *    OSDTRTX_EL1
>       *    OSECCR_EL1
> @@ -172,11 +169,29 @@ void do_sysreg(struct cpu_user_regs *regs,
>      case HSR_SYSREG_MDSCR_EL1:
>          return handle_raz_wi(regs, regidx, hsr.sysreg.read, hsr, 1);
>      case HSR_SYSREG_MDCCSR_EL0:
> +    {
>          /*
> +         * Xen doesn't expose a real (or emulated) Debug Communications Channel
> +         * (DCC) to a domain. Yet the Arm ARM implies this is not an optional
> +         * feature. So some domains may start to probe it. For instance, the
> +         * HVC_DCC driver in Linux (since f377775dc083 and at least up to v6.7),
> +         * will try to write some characters and check if the transmit buffer
> +         * has emptied. By setting TX status bit to indicate the transmit buffer
> +         * is full. This we would hint the OS that the DCC is probably not
... is full, we would hint...

> +         * working.
> +         *
> +         * Bit 29: TX full
> +         *
>           * Accessible at EL0 only if MDSCR_EL1.TDCC is set to 0. We emulate that
>           * register as RAZ/WI above. So RO at both EL0 and EL1.
>           */
> -        return handle_ro_raz(regs, regidx, hsr.sysreg.read, hsr, 0);
> +        return handle_ro_read_val(regs, regidx, hsr.sysreg.read, hsr, 0,
> +                                  1U << 29);
> +    }
> +    case HSR_SYSREG_DBGDTR_EL0:
> +    /* DBGDTR[TR]X_EL0 share the same encoding */
> +    case HSR_SYSREG_DBGDTRTX_EL0:
> +        return handle_raz_wi(regs, regidx, hsr.sysreg.read, hsr, 0);
>      HSR_SYSREG_DBG_CASES(DBGBVR):
>      HSR_SYSREG_DBG_CASES(DBGBCR):
>      HSR_SYSREG_DBG_CASES(DBGWVR):
> @@ -393,7 +408,8 @@ void do_sysreg(struct cpu_user_regs *regs,
>       *
>       * And all other unknown registers.
>       */
> -    default:
> +    default: goto fail;
> +    fail:
What is going on here? I see no use so please remove.

>          {
>              const struct hsr_sysreg sysreg = hsr.sysreg;
>  
> diff --git a/xen/arch/arm/include/asm/arm64/hsr.h b/xen/arch/arm/include/asm/arm64/hsr.h
> index e691d41c17..1495ccddea 100644
> --- a/xen/arch/arm/include/asm/arm64/hsr.h
> +++ b/xen/arch/arm/include/asm/arm64/hsr.h
> @@ -47,6 +47,9 @@
>  #define HSR_SYSREG_OSDLR_EL1      HSR_SYSREG(2,0,c1,c3,4)
>  #define HSR_SYSREG_DBGPRCR_EL1    HSR_SYSREG(2,0,c1,c4,4)
>  #define HSR_SYSREG_MDCCSR_EL0     HSR_SYSREG(2,3,c0,c1,0)
> +#define HSR_SYSREG_DBGDTR_EL0     HSR_SYSREG(2,3,c0,c4,0)
> +#define HSR_SYSREG_DBGDTRTX_EL0   HSR_SYSREG(2,3,c0,c5,0)
> +#define HSR_SYSREG_DBGDTRRX_EL0   HSR_SYSREG(2,3,c0,c5,0)
>  
>  #define HSR_SYSREG_DBGBVRn_EL1(n) HSR_SYSREG(2,0,c0,c##n,4)
>  #define HSR_SYSREG_DBGBCRn_EL1(n) HSR_SYSREG(2,0,c0,c##n,5)
> diff --git a/xen/arch/arm/include/asm/cpregs.h b/xen/arch/arm/include/asm/cpregs.h
> index 6b083de204..aec9e8f329 100644
> --- a/xen/arch/arm/include/asm/cpregs.h
> +++ b/xen/arch/arm/include/asm/cpregs.h
> @@ -75,6 +75,8 @@
>  #define DBGDIDR         p14,0,c0,c0,0   /* Debug ID Register */
>  #define DBGDSCRINT      p14,0,c0,c1,0   /* Debug Status and Control Internal */
>  #define DBGDSCREXT      p14,0,c0,c2,2   /* Debug Status and Control External */
> +#define DBGDTRRXINT     p14,0,c0,c5,0   /* Debug Data Transfer Register, Receive */
> +#define DBGDTRTXINT     p14,0,c0,c5,0   /* Debug Data Transfer Register, Transmit */
>  #define DBGVCR          p14,0,c0,c7,0   /* Vector Catch */
>  #define DBGBVR0         p14,0,c0,c0,4   /* Breakpoint Value 0 */
>  #define DBGBCR0         p14,0,c0,c0,5   /* Breakpoint Control 0 */
> diff --git a/xen/arch/arm/include/asm/traps.h b/xen/arch/arm/include/asm/traps.h
> index 883dae368e..a2692722d5 100644
> --- a/xen/arch/arm/include/asm/traps.h
> +++ b/xen/arch/arm/include/asm/traps.h
> @@ -56,6 +56,10 @@ void handle_ro_raz(struct cpu_user_regs *regs, int regidx, bool read,
>  void handle_ro_read_val(struct cpu_user_regs *regs, int regidx, bool read,
>                          const union hsr hsr, int min_el, register_t val);
>  
> +/* Read only as value provided with 'val' argument, write ignore */
> +void handle_read_val_wi(struct cpu_user_regs *regs, int regidx,
> +                        const union hsr hsr, int min_el, register_t val);
> +
Leftover change? Please remove this prototype.

>  /* Co-processor registers emulation (see arch/arm/vcpreg.c). */
>  void do_cp15_32(struct cpu_user_regs *regs, const union hsr hsr);
>  void do_cp15_64(struct cpu_user_regs *regs, const union hsr hsr);
> diff --git a/xen/arch/arm/traps.c b/xen/arch/arm/traps.c
> index 3784e8276e..f5ab555b19 100644
> --- a/xen/arch/arm/traps.c
> +++ b/xen/arch/arm/traps.c
> @@ -1676,6 +1676,24 @@ void handle_ro_read_val(struct cpu_user_regs *regs,
>      advance_pc(regs, hsr);
>  }
>  
> +/* Read as value provided with 'val' argument of this function, write ignore */
> +void handle_read_val_wi(struct cpu_user_regs *regs,
> +                        int regidx,
> +                        const union hsr hsr,
> +                        int min_el,
> +                        register_t val)
> +{
> +    ASSERT((min_el == 0) || (min_el == 1));
> +
> +    if ( min_el > 0 && regs_mode_is_user(regs) )
> +        return inject_undef_exception(regs, hsr);
> +
> +    set_user_reg(regs, regidx, val);
> +
> +    advance_pc(regs, hsr);
> +}
Leftover change? Please remove this function.

> +
> +
>  /* Read only as read as zero */
>  void handle_ro_raz(struct cpu_user_regs *regs,
>                     int regidx,
> diff --git a/xen/arch/arm/vcpreg.c b/xen/arch/arm/vcpreg.c
> index 39aeda9dab..5087125111 100644
> --- a/xen/arch/arm/vcpreg.c
> +++ b/xen/arch/arm/vcpreg.c
> @@ -549,18 +549,41 @@ void do_cp14_32(struct cpu_user_regs *regs, const union hsr hsr)
>      }
>  
Above DBGDIDR, there is a comment listing unhandled registers. It looks like you forgot to
update it.

>      case HSR_CPREG32(DBGDSCRINT):
> +    {
>          /*
> -         * Read-only register. Accessible by EL0 if DBGDSCRext.UDCCdis
> -         * is set to 0, which we emulated below.
> +         * Xen doesn't expose a real (or emulated) Debug Communications Channel
> +         * (DCC) to a domain. Yet the Arm ARM implies this is not an optional
> +         * feature. So some domains may start to probe it. For instance, the
> +         * HVC_DCC driver in Linux (since f377775dc083 and at least up to v6.7),
> +         * will try to write some characters and check if the transmit buffer
> +         * has emptied. By setting TX status bit to indicate the transmit buffer
> +         * is full. This we would hint the OS that the DCC is probably not
> +         * working.
> +         *
> +         * Bit 29: TX full
> +         *
> +         * Accessible by EL0 if DBGDSCRext.UDCCdis is set to 0, which we emulate
> +         * as RAZ/WI in the next case.
>           */
> -        return handle_ro_raz(regs, regidx, cp32.read, hsr, 1);
> +
> +        return handle_ro_read_val(regs, regidx, cp32.read, hsr, 0, 1 << 29);
Why not 1U << 29 like in AArch64 case?

> +    }
>  
>      case HSR_CPREG32(DBGDSCREXT):
I would keep the comment that was here about MDBGen.

> +        return handle_raz_wi(regs, regidx, cp32.read, hsr, 1);
> +
> +    case HSR_CPREG32(DBGOSLSR):
> +         return handle_ro_read_val(regs, regidx, cp32.read, hsr, 1, 1 << 3);
This should be moved between DBGOSLAR and DBGOSDLR. Also, you should update a comment
listing unhandled registers (above DBGOSLAR).

> +
Please add: /* DBGDTR[TR]XINT share the same encoding */
> +    case HSR_CPREG32(DBGDTRTXINT):
> +    {
>          /*
> -         * Implement debug status and control register as RAZ/WI.
> -         * The OS won't use Hardware debug if MDBGen not set.
> +         * As DBGDSCRINT is emulated which is architecturally mapped to AArch64
> +         * register MDCCSR_EL0. MDSCR_EL1 is not emulated. So DBGDTR[TR]XINT can
> +         * only be accessed as EL0 level.
>           */
I struggle to understand this comment. The minimum EL for DBGDTR[TR]XINT is 0, which means it can
be accessed at any level. I see no need for this comment (just like there is none for arm64).

> -        return handle_raz_wi(regs, regidx, cp32.read, hsr, 1);
> +        return handle_raz_wi(regs, regidx, cp32.read, hsr, 0);
> +    }
>  
>      case HSR_CPREG32(DBGVCR):
>      case HSR_CPREG32(DBGBVR0):
> @@ -590,7 +613,8 @@ void do_cp14_32(struct cpu_user_regs *regs, const union hsr hsr)
>       *
>       * And all other unknown registers.
>       */
> -    default:
> +    default: goto fail;
> +    fail:
same as before

>          gdprintk(XENLOG_ERR,
>                   "%s p14, %d, r%d, cr%d, cr%d, %d @ 0x%"PRIregister"\n",
>                    cp32.read ? "mrc" : "mcr",


~Michal


From xen-devel-bounces@lists.xenproject.org Tue Jan 02 09:51:58 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 02 Jan 2024 09:51:58 +0000
Received: from list by lists.xenproject.org with outflank-mailman.660564.1030085 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rKbRC-0007EV-5P; Tue, 02 Jan 2024 09:51:54 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 660564.1030085; Tue, 02 Jan 2024 09:51:54 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rKbRC-0007EK-0u; Tue, 02 Jan 2024 09:51:54 +0000
Received: by outflank-mailman (input) for mailman id 660564;
 Tue, 02 Jan 2024 09:51:52 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=mpFB=IM=minervasys.tech=carlo.nonato@srs-se1.protection.inumbo.net>)
 id 1rKbRA-0006VR-CN
 for xen-devel@lists.xenproject.org; Tue, 02 Jan 2024 09:51:52 +0000
Received: from mail-ej1-x635.google.com (mail-ej1-x635.google.com
 [2a00:1450:4864:20::635])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 8bb78e21-a954-11ee-98ef-6d05b1d4d9a1;
 Tue, 02 Jan 2024 10:51:50 +0100 (CET)
Received: by mail-ej1-x635.google.com with SMTP id
 a640c23a62f3a-a279ce3aab9so292230966b.0
 for <xen-devel@lists.xenproject.org>; Tue, 02 Jan 2024 01:51:48 -0800 (PST)
Received: from carlo-ubuntu.minervasys.tech (nonato.mo54.unimo.it.
 [155.185.85.8]) by smtp.gmail.com with ESMTPSA id
 s4-20020a1709066c8400b00a1f7ab65d3fsm11541845ejr.131.2024.01.02.01.51.45
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 02 Jan 2024 01:51:46 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 8bb78e21-a954-11ee-98ef-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=minervasys-tech.20230601.gappssmtp.com; s=20230601; t=1704189107; x=1704793907; darn=lists.xenproject.org;
        h=content-transfer-encoding:mime-version:references:in-reply-to
         :message-id:date:subject:cc:to:from:from:to:cc:subject:date
         :message-id:reply-to;
        bh=6cdVnvQoUyPRwYMQxfZ9u1dR3w5GTzbkoxvk1ADPypg=;
        b=b6mljZsd/lUWLDdVY9R6HALCm+npOIbXFwIGPXCQ65QGr+HyTEt9Wy6WgClz2NeyIl
         dNOF+qWEKou6Dd5NjraGVo49rLFizwENmO/wWILXqBMPcvpYTC598+8zmsZFKELloZzn
         yZgij2bCxsT3unYfVConMGS7WonKPkh1Q94r2Q8Wd9vQa+r8F9h36BkApEttaQsk3RKm
         EHFvPmrWhkjSxxpn6Vv5BRyk7qfkqqeWSNp8KwJWb4hfafkfZPEbCWR+aVIvf5v/+aym
         FaMJ7Ht4PIopm8CPLNCxuvRsZFBFHJcIIJ6DLVDgDYgZaVVjleGlhnAFbKuItJQhHJeZ
         CFPg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704189107; x=1704793907;
        h=content-transfer-encoding:mime-version:references:in-reply-to
         :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to;
        bh=6cdVnvQoUyPRwYMQxfZ9u1dR3w5GTzbkoxvk1ADPypg=;
        b=lr4Hf0geRxOG724eiKGFAYzaFdb7Efibz0M8YCz15P4/Bo1qzIPeJy/JOuoW+xgBAU
         YJ3DxrjVvd95DIycJWkD35+cnwsPOV0P31VYqsHL8jeLmD//Dl96ji1FaXvvNzwl92uD
         SezlExDHYGgCSV5veG9fMuyqz5nzYLP8gK8sBE5YuDfCe4q1eykXLiET9I9u0u+fxYft
         +nNPRKsie1GkijWWMqH2NZIy0ZzkZdgIEDhaY04yRKW8lOAoCR4P6WL4DkeJweVoltC0
         BXMJvzPRg4FnC40zMZ/IYh/G0ENCXJ080SWL3aXdcjLrkAY/D0IXIN8q46PpUgUxzBH8
         eD6g==
X-Gm-Message-State: AOJu0Yxcw5+0mQpB1/FvfGEwqN/y3Boo4lz8PhDOpyagSKweUyzTm26M
	R9lTcCGPvAilPwd9TO7g078dgtx/T587Kow3nJDbQxIj5Ys=
X-Google-Smtp-Source: AGHT+IHbUsHvCnMCDXcDi1ikGMVPplEsFaGr+NqMxS47lMqoodPrke//UqsHnlyBsUxdi/oWUpVCqw==
X-Received: by 2002:a17:906:f109:b0:a1d:8351:a00e with SMTP id gv9-20020a170906f10900b00a1d8351a00emr3902124ejb.121.1704189107184;
        Tue, 02 Jan 2024 01:51:47 -0800 (PST)
From: Carlo Nonato <carlo.nonato@minervasys.tech>
To: xen-devel@lists.xenproject.org
Cc: Carlo Nonato <carlo.nonato@minervasys.tech>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Julien Grall <julien@xen.org>,
	Bertrand Marquis <bertrand.marquis@arm.com>,
	Michal Orzel <michal.orzel@amd.com>,
	Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	George Dunlap <george.dunlap@citrix.com>,
	Jan Beulich <jbeulich@suse.com>,
	Wei Liu <wl@xen.org>,
	Marco Solieri <marco.solieri@minervasys.tech>
Subject: [PATCH v5 03/13] xen/arm: add Dom0 cache coloring support
Date: Tue,  2 Jan 2024 10:51:28 +0100
Message-Id: <20240102095138.17933-4-carlo.nonato@minervasys.tech>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20240102095138.17933-1-carlo.nonato@minervasys.tech>
References: <20240102095138.17933-1-carlo.nonato@minervasys.tech>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

This commit allows the user to set the cache coloring configuration for
Dom0 via a command line parameter.
Since cache coloring and static memory are incompatible, direct mapping
Dom0 isn't possible when coloring is enabled.

A common configuration syntax for cache colors is also introduced.

Based on original work from: Luca Miccio <lucmiccio@gmail.com>

Signed-off-by: Carlo Nonato <carlo.nonato@minervasys.tech>
Signed-off-by: Marco Solieri <marco.solieri@minervasys.tech>
---
v5:
- Carlo Nonato as the new author
- moved dom0 colors parsing (parse_colors()) in this patch
- added dom0_set_llc_colors() to set dom0 colors after creation
- moved color allocation and checking in this patch
- error handling when allocating color arrays
- FIXME: copy pasted allocate_memory() cause it got moved
v4:
- dom0 colors are dynamically allocated as for any other domain
  (colors are duplicated in dom0_colors and in the new array, but logic
  is simpler)
---
 docs/misc/arm/cache-coloring.rst        |  29 ++++++
 docs/misc/xen-command-line.pandoc       |   9 ++
 xen/arch/arm/domain_build.c             |  60 ++++++++++-
 xen/arch/arm/include/asm/llc-coloring.h |   1 +
 xen/arch/arm/llc-coloring.c             | 128 ++++++++++++++++++++++++
 5 files changed, 224 insertions(+), 3 deletions(-)

diff --git a/docs/misc/arm/cache-coloring.rst b/docs/misc/arm/cache-coloring.rst
index eabf8f5d1b..acf82c3df8 100644
--- a/docs/misc/arm/cache-coloring.rst
+++ b/docs/misc/arm/cache-coloring.rst
@@ -84,6 +84,35 @@ More specific documentation is available at `docs/misc/xen-command-line.pandoc`.
 +----------------------+-------------------------------+
 | ``llc-way-size``     | set the LLC way size          |
 +----------------------+-------------------------------+
+| ``dom0-llc-colors``  | Dom0 color configuration      |
++----------------------+-------------------------------+
+
+Colors selection format
+***********************
+
+Regardless of the memory pool that has to be colored (Xen, Dom0/DomUs),
+the color selection can be expressed using the same syntax. In particular a
+comma-separated list of colors or ranges of colors is used.
+Ranges are hyphen-separated intervals (such as `0-4`) and are inclusive on both
+sides.
+
+Note that:
+
+- no spaces are allowed between values.
+- no overlapping ranges or duplicated colors are allowed.
+- values must be written in ascending order.
+
+Examples:
+
++-------------------+-----------------------------+
+| **Configuration** | **Actual selection**        |
++-------------------+-----------------------------+
+| 1-2,5-8           | [1, 2, 5, 6, 7, 8]          |
++-------------------+-----------------------------+
+| 4-8,10,11,12      | [4, 5, 6, 7, 8, 10, 11, 12] |
++-------------------+-----------------------------+
+| 0                 | [0]                         |
++-------------------+-----------------------------+
 
 Known issues and limitations
 ****************************
diff --git a/docs/misc/xen-command-line.pandoc b/docs/misc/xen-command-line.pandoc
index 22d2d5b6cf..51f6adf035 100644
--- a/docs/misc/xen-command-line.pandoc
+++ b/docs/misc/xen-command-line.pandoc
@@ -963,6 +963,15 @@ Controls for the dom0 IOMMU setup.
 
 Specify a list of IO ports to be excluded from dom0 access.
 
+### dom0-llc-colors (arm64)
+> `= List of [ <integer> | <integer>-<integer> ]`
+
+> Default: `All available LLC colors`
+
+Specify dom0 LLC color configuration. This options is available only when
+`CONFIG_LLC_COLORING` is enabled. If the parameter is not set, all available
+colors are chosen and the user is warned on Xen serial console.
+
 ### dom0_max_vcpus
 
 Either:
diff --git a/xen/arch/arm/domain_build.c b/xen/arch/arm/domain_build.c
index 6945b9755d..482c059bfa 100644
--- a/xen/arch/arm/domain_build.c
+++ b/xen/arch/arm/domain_build.c
@@ -2,6 +2,7 @@
 #include <xen/init.h>
 #include <xen/compile.h>
 #include <xen/lib.h>
+#include <xen/llc-coloring.h>
 #include <xen/mm.h>
 #include <xen/param.h>
 #include <xen/domain_page.h>
@@ -414,7 +415,7 @@ static void __init allocate_memory_11(struct domain *d,
     }
 }
 
-#ifdef CONFIG_DOM0LESS_BOOT
+#if defined(CONFIG_DOM0LESS_BOOT) || defined(CONFIG_LLC_COLORING)
 bool __init allocate_bank_memory(struct domain *d, struct kernel_info *kinfo,
                                  gfn_t sgfn, paddr_t tot_size)
 {
@@ -478,6 +479,49 @@ bool __init allocate_bank_memory(struct domain *d, struct kernel_info *kinfo,
 }
 #endif
 
+static void __init allocate_memory(struct domain *d, struct kernel_info *kinfo)
+{
+    unsigned int i;
+    paddr_t bank_size;
+
+    printk(XENLOG_INFO "Allocating mappings totalling %ldMB for %pd:\n",
+           /* Don't want format this as PRIpaddr (16 digit hex) */
+           (unsigned long)(kinfo->unassigned_mem >> 20), d);
+
+    kinfo->mem.nr_banks = 0;
+    bank_size = MIN(GUEST_RAM0_SIZE, kinfo->unassigned_mem);
+    if ( !allocate_bank_memory(d, kinfo, gaddr_to_gfn(GUEST_RAM0_BASE),
+                               bank_size) )
+        goto fail;
+
+    bank_size = MIN(GUEST_RAM1_SIZE, kinfo->unassigned_mem);
+    if ( !allocate_bank_memory(d, kinfo, gaddr_to_gfn(GUEST_RAM1_BASE),
+                               bank_size) )
+        goto fail;
+
+    if ( kinfo->unassigned_mem )
+        goto fail;
+
+    for( i = 0; i < kinfo->mem.nr_banks; i++ )
+    {
+        printk(XENLOG_INFO "%pd BANK[%d] %#"PRIpaddr"-%#"PRIpaddr" (%ldMB)\n",
+               d,
+               i,
+               kinfo->mem.bank[i].start,
+               kinfo->mem.bank[i].start + kinfo->mem.bank[i].size,
+               /* Don't want format this as PRIpaddr (16 digit hex) */
+               (unsigned long)(kinfo->mem.bank[i].size >> 20));
+    }
+
+    return;
+
+fail:
+    panic("Failed to allocate requested domain memory."
+          /* Don't want format this as PRIpaddr (16 digit hex) */
+          " %ldKB unallocated. Fix the VMs configurations.\n",
+          (unsigned long)kinfo->unassigned_mem >> 10);
+}
+
 /*
  * When PCI passthrough is available we want to keep the
  * "linux,pci-domain" in sync for every host bridge.
@@ -2072,7 +2116,10 @@ static int __init construct_dom0(struct domain *d)
     /* type must be set before allocate_memory */
     d->arch.type = kinfo.type;
 #endif
-    allocate_memory_11(d, &kinfo);
+    if ( is_domain_llc_colored(d) )
+        allocate_memory(d, &kinfo);
+    else
+        allocate_memory_11(d, &kinfo);
     find_gnttab_region(d, &kinfo);
 
     rc = process_shm_chosen(d, &kinfo);
@@ -2116,6 +2163,7 @@ void __init create_dom0(void)
         .max_maptrack_frames = -1,
         .grant_opts = XEN_DOMCTL_GRANT_version(opt_gnttab_max_version),
     };
+    unsigned int flags = CDF_privileged;
     int rc;
 
     /* The vGIC for DOM0 is exactly emulating the hardware GIC */
@@ -2143,10 +2191,16 @@ void __init create_dom0(void)
             panic("SVE vector length error\n");
     }
 
-    dom0 = domain_create(0, &dom0_cfg, CDF_privileged | CDF_directmap);
+    if ( !llc_coloring_enabled )
+        flags |= CDF_directmap;
+
+    dom0 = domain_create(0, &dom0_cfg, flags);
     if ( IS_ERR(dom0) )
         panic("Error creating domain 0 (rc = %ld)\n", PTR_ERR(dom0));
 
+    if ( llc_coloring_enabled && (rc = dom0_set_llc_colors(dom0)) )
+        panic("Error initializing LLC coloring for domain 0 (rc = %d)", rc);
+
     if ( alloc_dom0_vcpu0(dom0) == NULL )
         panic("Error creating domain 0 vcpu0\n");
 
diff --git a/xen/arch/arm/include/asm/llc-coloring.h b/xen/arch/arm/include/asm/llc-coloring.h
index 7885e9e3f5..ee5551e3cc 100644
--- a/xen/arch/arm/include/asm/llc-coloring.h
+++ b/xen/arch/arm/include/asm/llc-coloring.h
@@ -14,6 +14,7 @@
 #include <xen/init.h>
 
 bool __init llc_coloring_init(void);
+int dom0_set_llc_colors(struct domain *d);
 
 #endif /* __ASM_ARM_COLORING_H__ */
 
diff --git a/xen/arch/arm/llc-coloring.c b/xen/arch/arm/llc-coloring.c
index 37d647f038..5ce58aba70 100644
--- a/xen/arch/arm/llc-coloring.c
+++ b/xen/arch/arm/llc-coloring.c
@@ -26,6 +26,63 @@ size_param("llc-way-size", llc_way_size);
 /* Number of colors available in the LLC */
 static unsigned int __ro_after_init nr_colors = CONFIG_NR_LLC_COLORS;
 
+static unsigned int __ro_after_init dom0_colors[CONFIG_NR_LLC_COLORS];
+static unsigned int __ro_after_init dom0_num_colors;
+
+/*
+ * Parse the coloring configuration given in the buf string, following the
+ * syntax below.
+ *
+ * COLOR_CONFIGURATION ::= COLOR | RANGE,...,COLOR | RANGE
+ * RANGE               ::= COLOR-COLOR
+ *
+ * Example: "0,2-6,15-16" represents the set of colors: 0,2,3,4,5,6,15,16.
+ */
+static int parse_color_config(const char *buf, unsigned int *colors,
+                              unsigned int *num_colors)
+{
+    const char *s = buf;
+
+    if ( !colors || !num_colors )
+        return -EINVAL;
+
+    *num_colors = 0;
+
+    while ( *s != '\0' )
+    {
+        if ( *s != ',' )
+        {
+            unsigned int color, start, end;
+
+            start = simple_strtoul(s, &s, 0);
+
+            if ( *s == '-' )    /* Range */
+            {
+                s++;
+                end = simple_strtoul(s, &s, 0);
+            }
+            else                /* Single value */
+                end = start;
+
+            if ( start > end || (end - start) > UINT_MAX - *num_colors ||
+                 *num_colors + (end - start) >= nr_colors )
+                return -EINVAL;
+            for ( color = start; color <= end; color++ )
+                colors[(*num_colors)++] = color;
+        }
+        else
+            s++;
+    }
+
+    return *s ? -EINVAL : 0;
+}
+
+static int __init parse_dom0_colors(const char *s)
+{
+    return parse_color_config(s, dom0_colors, &dom0_num_colors);
+}
+custom_param("dom0-llc-colors", parse_dom0_colors);
+
 /* Return the LLC way size by probing the hardware */
 static unsigned int __init get_llc_way_size(void)
 {
@@ -102,6 +159,28 @@ static void dump_coloring_info(unsigned char key)
     printk("Number of LLC colors supported: %u\n", nr_colors);
 }
 
+static bool check_colors(unsigned int *colors, unsigned int num_colors)
+{
+    unsigned int i;
+
+    if ( num_colors > nr_colors )
+    {
+        printk(XENLOG_ERR "Number of LLC colors requested > %u\n", nr_colors);
+        return false;
+    }
+
+    for ( i = 0; i < num_colors; i++ )
+    {
+        if ( colors[i] >= nr_colors )
+        {
+            printk(XENLOG_ERR "LLC color %u >= %u\n", colors[i], nr_colors);
+            return false;
+        }
+    }
+
+    return true;
+}
+
 bool __init llc_coloring_init(void)
 {
     if ( !llc_way_size && !(llc_way_size = get_llc_way_size()) )
@@ -150,6 +229,55 @@ void domain_dump_llc_colors(struct domain *d)
     print_colors(d->llc_colors, d->num_llc_colors);
 }
 
+static int domain_alloc_colors(struct domain *d, unsigned int num_colors)
+{
+    d->num_llc_colors = num_colors;
+
+    if ( !num_colors )
+        return 0;
+
+    d->llc_colors = xmalloc_array(unsigned int, num_colors);
+    if ( !d->llc_colors )
+    {
+        printk("Can't allocate LLC colors for domain %pd\n", d);
+        return -1;
+    }
+
+    return 0;
+}
+
+static int domain_check_colors(struct domain *d)
+{
+    unsigned int i;
+
+    if ( !d->num_llc_colors )
+    {
+        printk(XENLOG_WARNING
+               "LLC color config not found for %pd. Using default\n", d);
+        if ( domain_alloc_colors(d, nr_colors) )
+            return -ENOMEM;
+        for ( i = 0; i < nr_colors; i++ )
+            d->llc_colors[i] = i;
+    }
+    else if ( !check_colors(d->llc_colors, d->num_llc_colors) )
+    {
+        printk(XENLOG_ERR "Bad LLC color config for %pd\n", d);
+        return -EINVAL;
+    }
+
+    return 0;
+}
+
+int dom0_set_llc_colors(struct domain *d)
+{
+    if ( domain_alloc_colors(d, dom0_num_colors) )
+        return -ENOMEM;
+
+    memcpy(d->llc_colors, dom0_colors, sizeof(unsigned int) * dom0_num_colors);
+
+    return domain_check_colors(d);
+}
+
 /*
  * Local variables:
  * mode: C
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Tue Jan 02 09:51:58 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 02 Jan 2024 09:51:58 +0000
Received: from list by lists.xenproject.org with outflank-mailman.660566.1030100 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rKbRD-0007XW-9t; Tue, 02 Jan 2024 09:51:55 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 660566.1030100; Tue, 02 Jan 2024 09:51:55 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rKbRD-0007Uu-3T; Tue, 02 Jan 2024 09:51:55 +0000
Received: by outflank-mailman (input) for mailman id 660566;
 Tue, 02 Jan 2024 09:51:54 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=mpFB=IM=minervasys.tech=carlo.nonato@srs-se1.protection.inumbo.net>)
 id 1rKbRC-00060C-4f
 for xen-devel@lists.xenproject.org; Tue, 02 Jan 2024 09:51:54 +0000
Received: from mail-ed1-x52a.google.com (mail-ed1-x52a.google.com
 [2a00:1450:4864:20::52a])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 8e26080d-a954-11ee-9b0f-b553b5be7939;
 Tue, 02 Jan 2024 10:51:52 +0100 (CET)
Received: by mail-ed1-x52a.google.com with SMTP id
 4fb4d7f45d1cf-5534dcfdd61so15741353a12.0
 for <xen-devel@lists.xenproject.org>; Tue, 02 Jan 2024 01:51:52 -0800 (PST)
Received: from carlo-ubuntu.minervasys.tech (nonato.mo54.unimo.it.
 [155.185.85.8]) by smtp.gmail.com with ESMTPSA id
 s4-20020a1709066c8400b00a1f7ab65d3fsm11541845ejr.131.2024.01.02.01.51.50
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 02 Jan 2024 01:51:50 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 8e26080d-a954-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=minervasys-tech.20230601.gappssmtp.com; s=20230601; t=1704189111; x=1704793911; darn=lists.xenproject.org;
        h=content-transfer-encoding:mime-version:references:in-reply-to
         :message-id:date:subject:cc:to:from:from:to:cc:subject:date
         :message-id:reply-to;
        bh=sP9qQ4nWMhVEqh2w5k34a2KqREJgBIKIufbFzw/gkj0=;
        b=ecE6WAHRUfIqOWJvNjMbA71GLSIneRm3nz3q4CLSXM7OWfi/YYs6VGQiDVhI7iYZ80
         tBJSV0DKdGIZ2+OU3aOlkACU6XnQd6gPMK/ZeZXgc+as6kMJ+cHyGdJLEHcCo93eKDck
         /bQ5RsoXbLfPvv+jhOIs9rdaUg+cGpzhle45+9xkyBYCLEQZUD/4U3XJBLInIr26laGO
         DMMeEelxTzTOnTSCFwu5qIilzroOjh0jpHpaZ0c+wH/FNKzjwl9F5nwe1AO5/jlXFDH7
         9laCZbWKEqXlTVgdfPOJWPmg+dGSmxQ1gPZiPgi5pWtGXY8LtEewisLy2LzJxY0gHwAr
         XjJA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704189111; x=1704793911;
        h=content-transfer-encoding:mime-version:references:in-reply-to
         :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to;
        bh=sP9qQ4nWMhVEqh2w5k34a2KqREJgBIKIufbFzw/gkj0=;
        b=cpWUm+Mrd8GW7FY2FZg33GuT1St6KZsGrnYTFJhAY2V54HecHAfJFeqwq8b2rIwkqD
         tZJrEb9S2PfB72UQBUbO5UlfA1MgkJoPwk5EOL/ZS04rPZ9IwmMbtO1vyUp/2TNJEfUw
         RVHF7CPoOILA7aFxhA5O3pNDAeMVMji9ddxWl6hMw4AKmltJXdRnwjrRoFKlAJbJSjgb
         F4R75nEOVKDemQK/p02kQ2e08/SICXr0I63t7awvH/IoxyzzZJPg1S+QKaR/gBJce7nx
         jWIR1PUV4K2cHXtcGiCB5ud6Oz7WyqAZkz/kmK7mVug6jdrDLkq/PCHaB/E/gOVY7rjq
         kjmA==
X-Gm-Message-State: AOJu0YyGErk2wYI6i8s8SSh39iXyY5aikUDnORP9rFXtJnMokbeGm6+6
	dCHvsKDnHGhQkkRyyICP9NzloeN/CUVLxzG95V0xB1Lkfl0=
X-Google-Smtp-Source: AGHT+IEiZwHgqGDzuq+CofvQaRdVDEsDJPXCGOUEkAORhykUWO5dX2Iao98Y4vvHu0kxk7Vf/wPajw==
X-Received: by 2002:a17:907:318c:b0:a27:a80a:917c with SMTP id xe12-20020a170907318c00b00a27a80a917cmr6506165ejb.2.1704189111430;
        Tue, 02 Jan 2024 01:51:51 -0800 (PST)
From: Carlo Nonato <carlo.nonato@minervasys.tech>
To: xen-devel@lists.xenproject.org
Cc: Carlo Nonato <carlo.nonato@minervasys.tech>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	George Dunlap <george.dunlap@citrix.com>,
	Jan Beulich <jbeulich@suse.com>,
	Julien Grall <julien@xen.org>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Wei Liu <wl@xen.org>,
	Marco Solieri <marco.solieri@minervasys.tech>
Subject: [PATCH v5 07/13] xen/page_alloc: introduce init_free_page_fields() helper
Date: Tue,  2 Jan 2024 10:51:32 +0100
Message-Id: <20240102095138.17933-8-carlo.nonato@minervasys.tech>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20240102095138.17933-1-carlo.nonato@minervasys.tech>
References: <20240102095138.17933-1-carlo.nonato@minervasys.tech>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Introduce a new helper to initialize fields that have different uses for
free pages.

Signed-off-by: Carlo Nonato <carlo.nonato@minervasys.tech>
Signed-off-by: Marco Solieri <marco.solieri@minervasys.tech>
---
v5:
- new patch
---
 xen/common/page_alloc.c | 16 +++++++++-------
 1 file changed, 9 insertions(+), 7 deletions(-)

diff --git a/xen/common/page_alloc.c b/xen/common/page_alloc.c
index d874525916..9ee3981bb5 100644
--- a/xen/common/page_alloc.c
+++ b/xen/common/page_alloc.c
@@ -928,6 +928,13 @@ static struct page_info *get_free_buddy(unsigned int zone_lo,
     }
 }
 
+/* Initialise fields which have other uses for free pages. */
+static void init_free_page_fields(struct page_info *pg)
+{
+    pg->u.inuse.type_info = PGT_TYPE_INFO_INITIALIZER;
+    page_set_owner(pg, NULL);
+}
+
 /* Allocate 2^@order contiguous pages. */
 static struct page_info *alloc_heap_pages(
     unsigned int zone_lo, unsigned int zone_hi,
@@ -1036,10 +1043,7 @@ static struct page_info *alloc_heap_pages(
             accumulate_tlbflush(&need_tlbflush, &pg[i],
                                 &tlbflush_timestamp);
 
-        /* Initialise fields which have other uses for free pages. */
-        pg[i].u.inuse.type_info = PGT_TYPE_INFO_INITIALIZER;
-        page_set_owner(&pg[i], NULL);
-
+        init_free_page_fields(&pg[i]);
     }
 
     spin_unlock(&heap_lock);
@@ -2802,9 +2806,7 @@ static bool prepare_staticmem_pages(struct page_info *pg, unsigned long nr_mfns,
          * to PGC_state_inuse.
          */
         pg[i].count_info = PGC_static | PGC_state_inuse;
-        /* Initialise fields which have other uses for free pages. */
-        pg[i].u.inuse.type_info = PGT_TYPE_INFO_INITIALIZER;
-        page_set_owner(&pg[i], NULL);
+        init_free_page_fields(&pg[i]);
     }
 
     spin_unlock(&heap_lock);
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Tue Jan 02 09:51:58 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 02 Jan 2024 09:51:58 +0000
Received: from list by lists.xenproject.org with outflank-mailman.660568.1030121 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rKbRF-00084o-7o; Tue, 02 Jan 2024 09:51:57 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 660568.1030121; Tue, 02 Jan 2024 09:51:57 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rKbRE-00083l-Vu; Tue, 02 Jan 2024 09:51:56 +0000
Received: by outflank-mailman (input) for mailman id 660568;
 Tue, 02 Jan 2024 09:51:55 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=mpFB=IM=minervasys.tech=carlo.nonato@srs-se1.protection.inumbo.net>)
 id 1rKbRD-0006VR-Ig
 for xen-devel@lists.xenproject.org; Tue, 02 Jan 2024 09:51:55 +0000
Received: from mail-ed1-x52f.google.com (mail-ed1-x52f.google.com
 [2a00:1450:4864:20::52f])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 8fd18725-a954-11ee-98ef-6d05b1d4d9a1;
 Tue, 02 Jan 2024 10:51:55 +0100 (CET)
Received: by mail-ed1-x52f.google.com with SMTP id
 4fb4d7f45d1cf-55539cac143so5756691a12.0
 for <xen-devel@lists.xenproject.org>; Tue, 02 Jan 2024 01:51:55 -0800 (PST)
Received: from carlo-ubuntu.minervasys.tech (nonato.mo54.unimo.it.
 [155.185.85.8]) by smtp.gmail.com with ESMTPSA id
 s4-20020a1709066c8400b00a1f7ab65d3fsm11541845ejr.131.2024.01.02.01.51.53
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 02 Jan 2024 01:51:53 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 8fd18725-a954-11ee-98ef-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=minervasys-tech.20230601.gappssmtp.com; s=20230601; t=1704189114; x=1704793914; darn=lists.xenproject.org;
        h=content-transfer-encoding:mime-version:references:in-reply-to
         :message-id:date:subject:cc:to:from:from:to:cc:subject:date
         :message-id:reply-to;
        bh=Yh1Spa5a2++HjujwNRVja92wtQd0bdVMGwtSuj79fk4=;
        b=g+jiiIOdGr+aw4rEtsXCTNGhkH1+y4XmhYTbaf9NuR+rqLrf2e9JLyaRhiuZeNjpiz
         mLMpY+Ah6b5j/xwsuJ/qn0Jv/Gm2o+gv8e91/KQ3MaL1uGn7j34XZ4zAtZMrY1l2NMdT
         4XAFd63sbaUFU4vQSFdduvqXfb2TwK7EPsyEQ9I3f4REdJtH3L4o05SPlRId+oKY50DX
         FwcNkOCFV4yXkX/D2rfcULdudGDGmSUf2gc624yVHa/aA4ouLRkimuymJ4Gscz30y5XT
         8uNw1L4dd3fnuXRi2x01zR0q7L2uQYNv1QJ0O7HJuQpBssPjR2bH9L+ayuR7nRO/BDPX
         sj9g==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704189114; x=1704793914;
        h=content-transfer-encoding:mime-version:references:in-reply-to
         :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to;
        bh=Yh1Spa5a2++HjujwNRVja92wtQd0bdVMGwtSuj79fk4=;
        b=dt7T2Zw6ZJYbH0NuB4R1rMbKGEK4ZPn3LcHx2redNNXpBQY3ofxGmi8eOoUVJD86/v
         5k1JKemWUdcR3HOFc2ZLBTsJtz8DCUPIoRExiLlI/kCDWp8S1sI3FPSTg5tn02FnR4Uv
         8JAQvoO6ch7Wx9x64hgyw0Pb3RK9Dj1ZVlFJ3yUep8dN6lCv0C93LYPpjtSovzWgBsNV
         SaRk8pc2INkXMAzObbtj8CPZiZbvoqVE/IU1vnyJTfrewLj/aLxEf5x+0ldj2hpKxiUS
         izQ67T1mxN/qv9EB7lPndl+7lD1uiYZXLTUdq++yHpP3fGg91QV+29A2uFZHfpSU9eor
         wkvA==
X-Gm-Message-State: AOJu0YxmA0dm/9K0LNZ8y2RdPauk6zmZEDMNRr8oGTK7/eH7aCU45KQ5
	acozzFr3FoSzhN6U52buRYl5pX3dON06aZqZnPYYgiecqOc=
X-Google-Smtp-Source: AGHT+IGsDNMl5Y9JClEF0mL/6gxoCKBwi9CxutTOJTPmX7FLmvMDFBlSRc7c6XX9heUNA5DON57FyQ==
X-Received: by 2002:a17:907:928b:b0:a27:6648:cc3e with SMTP id bw11-20020a170907928b00b00a276648cc3emr5019435ejc.74.1704189114633;
        Tue, 02 Jan 2024 01:51:54 -0800 (PST)
From: Carlo Nonato <carlo.nonato@minervasys.tech>
To: xen-devel@lists.xenproject.org
Cc: Carlo Nonato <carlo.nonato@minervasys.tech>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Julien Grall <julien@xen.org>,
	Bertrand Marquis <bertrand.marquis@arm.com>,
	Michal Orzel <michal.orzel@amd.com>,
	Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
	Marco Solieri <marco.solieri@minervasys.tech>
Subject: [PATCH v5 10/13] xen/arm: use domain memory to allocate p2m page tables
Date: Tue,  2 Jan 2024 10:51:35 +0100
Message-Id: <20240102095138.17933-11-carlo.nonato@minervasys.tech>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20240102095138.17933-1-carlo.nonato@minervasys.tech>
References: <20240102095138.17933-1-carlo.nonato@minervasys.tech>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Cache colored domains can benefit from having p2m page tables allocated
with the same coloring schema so that isolation can be achieved also for
those kind of memory accesses.
In order to do that, the domain struct is passed to the allocator and the
MEMF_no_owner flag is used.

This will be useful also when NUMA will be supported on Arm.

Signed-off-by: Carlo Nonato <carlo.nonato@minervasys.tech>
Signed-off-by: Marco Solieri <marco.solieri@minervasys.tech>
---
v5:
- new patch
---
 xen/arch/arm/mmu/p2m.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/xen/arch/arm/mmu/p2m.c b/xen/arch/arm/mmu/p2m.c
index 41fcca011c..d02a478cb8 100644
--- a/xen/arch/arm/mmu/p2m.c
+++ b/xen/arch/arm/mmu/p2m.c
@@ -32,7 +32,7 @@ static struct page_info *p2m_alloc_page(struct domain *d)
      */
     if ( is_hardware_domain(d) )
     {
-        pg = alloc_domheap_page(NULL, 0);
+        pg = alloc_domheap_page(d, MEMF_no_owner);
         if ( pg == NULL )
             printk(XENLOG_G_ERR "Failed to allocate P2M pages for hwdom.\n");
     }
@@ -81,7 +81,7 @@ int p2m_set_allocation(struct domain *d, unsigned long pages, bool *preempted)
         if ( d->arch.paging.p2m_total_pages < pages )
         {
             /* Need to allocate more memory from domheap */
-            pg = alloc_domheap_page(NULL, 0);
+            pg = alloc_domheap_page(d, MEMF_no_owner);
             if ( pg == NULL )
             {
                 printk(XENLOG_ERR "Failed to allocate P2M pages.\n");
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Tue Jan 02 09:51:58 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 02 Jan 2024 09:51:58 +0000
Received: from list by lists.xenproject.org with outflank-mailman.660563.1030075 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rKbRA-0006xj-T5; Tue, 02 Jan 2024 09:51:52 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 660563.1030075; Tue, 02 Jan 2024 09:51:52 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rKbRA-0006wV-Ok; Tue, 02 Jan 2024 09:51:52 +0000
Received: by outflank-mailman (input) for mailman id 660563;
 Tue, 02 Jan 2024 09:51:52 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=mpFB=IM=minervasys.tech=carlo.nonato@srs-se1.protection.inumbo.net>)
 id 1rKbRA-0006VR-12
 for xen-devel@lists.xenproject.org; Tue, 02 Jan 2024 09:51:52 +0000
Received: from mail-ed1-x52d.google.com (mail-ed1-x52d.google.com
 [2a00:1450:4864:20::52d])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 8ce3d89a-a954-11ee-98ef-6d05b1d4d9a1;
 Tue, 02 Jan 2024 10:51:50 +0100 (CET)
Received: by mail-ed1-x52d.google.com with SMTP id
 4fb4d7f45d1cf-5565b66e9c5so927858a12.3
 for <xen-devel@lists.xenproject.org>; Tue, 02 Jan 2024 01:51:50 -0800 (PST)
Received: from carlo-ubuntu.minervasys.tech (nonato.mo54.unimo.it.
 [155.185.85.8]) by smtp.gmail.com with ESMTPSA id
 s4-20020a1709066c8400b00a1f7ab65d3fsm11541845ejr.131.2024.01.02.01.51.48
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 02 Jan 2024 01:51:48 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 8ce3d89a-a954-11ee-98ef-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=minervasys-tech.20230601.gappssmtp.com; s=20230601; t=1704189109; x=1704793909; darn=lists.xenproject.org;
        h=content-transfer-encoding:mime-version:references:in-reply-to
         :message-id:date:subject:cc:to:from:from:to:cc:subject:date
         :message-id:reply-to;
        bh=WZCx1mNMuVohrVNBngIS2gZlUF4VUOJwKdzo4Q3IzJY=;
        b=pB1N7RJvknJjQbFXF1fxze4UWz8mwkQ0nunhzRZKedi6QHGNSP7bzcrtXIGcuWzxzu
         qniXAC7oM0zlY+tsOsApKiapGuj53pifJ1QloXHWbVhflCndnTo/+2JTdbZ03i9TM3ws
         Or9U6lLlPUabHxA9BtprAVFhf/Hjk2kKq3SDBp2dotcFMF5KatGfOtY9FjKsPcr7HTRO
         d5DDbM9lkSQo0af7VGvFGUzxHgqU2bU6l/JySCzz8DpVjcnp8IZ2easUpjZPzThgvjNx
         HyD41kOBbS4WDvr/WCefAovMhWh7q6RO4qinTcV9lpNussSjuZF1F4K997fifLXvB596
         x/og==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704189109; x=1704793909;
        h=content-transfer-encoding:mime-version:references:in-reply-to
         :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to;
        bh=WZCx1mNMuVohrVNBngIS2gZlUF4VUOJwKdzo4Q3IzJY=;
        b=EaKBJhf8jJ2TT6xyAv0GCiUnccBwrtzpPn9OssV+bwAtSqgphCOkR8tA1ZA5l26zHv
         xQI0ORQv7VpW5BcbXUsEvFizGoh5a6YEwA4xVsi1FP6WM1Z6yml2X/cA2MMu0nBdc54F
         bCkkC+9cYw4updyJiZ/p2WnS3syOXwVqSMBlAJvCMdxopiLG+shib5P8CQHdQvMvThaF
         UTZwkX9xFWKJ4rceqc84cKzPn0DTrZ5LI610uxhfdQS9I+4E8kLRzgiSz0dNKzaXEJxs
         6CHEx/j2STA4150oO1LTZgiAeKfwJB2HGWbzkIJU35jfw9CZMPb/UVHZqD69SATF3jDD
         Q0lQ==
X-Gm-Message-State: AOJu0YwQVRKhkYVdFXvqi9CreFXiSWHF3GKqse5DjWwScGQyLaRK0GqS
	/3eJQgysKuVXqaJbMxNcfXdScsVwX31HxQtKMr+gJXNE3nA=
X-Google-Smtp-Source: AGHT+IFlqU5SdPTuwtq8lj35xFUfIZtPtpLvlk/l2RstDbCY5IWXnvLWxX2h+NW5W0zOQR7pTURucg==
X-Received: by 2002:a17:906:5354:b0:a23:53b0:45aa with SMTP id j20-20020a170906535400b00a2353b045aamr7006270ejo.141.1704189109246;
        Tue, 02 Jan 2024 01:51:49 -0800 (PST)
From: Carlo Nonato <carlo.nonato@minervasys.tech>
To: xen-devel@lists.xenproject.org
Cc: Carlo Nonato <carlo.nonato@minervasys.tech>,
	Wei Liu <wl@xen.org>,
	Anthony PERARD <anthony.perard@citrix.com>,
	Juergen Gross <jgross@suse.com>,
	Marco Solieri <marco.solieri@minervasys.tech>
Subject: [PATCH v5 05/13] tools: add support for cache coloring configuration
Date: Tue,  2 Jan 2024 10:51:30 +0100
Message-Id: <20240102095138.17933-6-carlo.nonato@minervasys.tech>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20240102095138.17933-1-carlo.nonato@minervasys.tech>
References: <20240102095138.17933-1-carlo.nonato@minervasys.tech>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Add a new "llc_colors" parameter that defines the LLC color assignment for
a domain. The user can specify one or more color ranges using the same
syntax used everywhere else for color config described in the
documentation.
The parameter is defined as a list of strings that represent the color
ranges.

Documentation is also added.

Based on original work from: Luca Miccio <lucmiccio@gmail.com>

Signed-off-by: Carlo Nonato <carlo.nonato@minervasys.tech>
Signed-off-by: Marco Solieri <marco.solieri@minervasys.tech>
---
v5:
- added LIBXL_HAVE_BUILDINFO_LLC_COLORS
- moved color configuration in xc_domain_set_llc_colors() cause of the new
  hypercall
v4:
- removed overlapping color ranges checks during parsing
- moved hypercall buffer initialization in libxenctrl
---
 docs/man/xl.cfg.5.pod.in         | 10 +++++++++
 tools/include/libxl.h            |  5 +++++
 tools/include/xenctrl.h          |  9 ++++++++
 tools/libs/ctrl/xc_domain.c      | 34 ++++++++++++++++++++++++++++
 tools/libs/light/libxl_create.c  |  9 ++++++++
 tools/libs/light/libxl_types.idl |  1 +
 tools/xl/xl_parse.c              | 38 +++++++++++++++++++++++++++++++-
 7 files changed, 105 insertions(+), 1 deletion(-)

diff --git a/docs/man/xl.cfg.5.pod.in b/docs/man/xl.cfg.5.pod.in
index 2e234b450e..c50b280190 100644
--- a/docs/man/xl.cfg.5.pod.in
+++ b/docs/man/xl.cfg.5.pod.in
@@ -3031,6 +3031,16 @@ raised.
 
 =back
 
+=over 4
+
+=item B<llc_colors=[ "RANGE", "RANGE", ...]>
+
+Specify the Last Level Cache (LLC) color configuration for the guest.
+B<RANGE> can be either a single color value or a hypen-separated closed
+interval of colors (such as "0-4").
+
+=back
+
 =head3 x86
 
 =over 4
diff --git a/tools/include/libxl.h b/tools/include/libxl.h
index 907aa0a330..16f56913b2 100644
--- a/tools/include/libxl.h
+++ b/tools/include/libxl.h
@@ -1340,6 +1340,11 @@ void libxl_mac_copy(libxl_ctx *ctx, libxl_mac *dst, const libxl_mac *src);
  */
 #define LIBXL_HAVE_BUILDINFO_HVM_SYSTEM_FIRMWARE
 
+/*
+ * The libxl_domain_build_info has the llc_colors array.
+ */
+#define LIBXL_HAVE_BUILDINFO_LLC_COLORS 1
+
 /*
  * ERROR_REMUS_XXX error code only exists from Xen 4.5, Xen 4.6 and it
  * is changed to ERROR_CHECKPOINT_XXX in Xen 4.7
diff --git a/tools/include/xenctrl.h b/tools/include/xenctrl.h
index 2ef8b4e054..4b541fffd2 100644
--- a/tools/include/xenctrl.h
+++ b/tools/include/xenctrl.h
@@ -2653,6 +2653,15 @@ int xc_livepatch_replace(xc_interface *xch, char *name, uint32_t timeout, uint32
 int xc_domain_cacheflush(xc_interface *xch, uint32_t domid,
                          xen_pfn_t start_pfn, xen_pfn_t nr_pfns);
 
+/*
+ * Set LLC colors for a domain.
+ * This is an internal hypercall. It can only be used directly after domain
+ * creation. An attempt to use it afterwards will result in an error.
+ */
+int xc_domain_set_llc_colors(xc_interface *xch, uint32_t domid,
+                             const unsigned int *llc_colors,
+                             unsigned int num_llc_colors);
+
 #if defined(__arm__) || defined(__aarch64__)
 int xc_dt_overlay(xc_interface *xch, void *overlay_fdt,
                   uint32_t overlay_fdt_size, uint8_t overlay_op);
diff --git a/tools/libs/ctrl/xc_domain.c b/tools/libs/ctrl/xc_domain.c
index f2d9d14b4d..734f68acd6 100644
--- a/tools/libs/ctrl/xc_domain.c
+++ b/tools/libs/ctrl/xc_domain.c
@@ -2180,6 +2180,40 @@ int xc_domain_soft_reset(xc_interface *xch,
     domctl.domain = domid;
     return do_domctl(xch, &domctl);
 }
+
+int xc_domain_set_llc_colors(xc_interface *xch, uint32_t domid,
+                             const unsigned int *llc_colors,
+                             unsigned int num_llc_colors)
+{
+    DECLARE_DOMCTL;
+    DECLARE_HYPERCALL_BUFFER(uint32_t, local);
+    int ret = -1;
+
+    if ( num_llc_colors )
+    {
+        size_t bytes = sizeof(uint32_t) * num_llc_colors;
+
+        local = xc_hypercall_buffer_alloc(xch, local, bytes);
+        if ( local == NULL )
+        {
+            PERROR("Could not allocate LLC colors for set_llc_colors");
+            return -ENOMEM;
+        }
+        memcpy(local, llc_colors, bytes);
+        set_xen_guest_handle(domctl.u.set_llc_colors.llc_colors, local);
+    }
+
+    domctl.cmd = XEN_DOMCTL_set_llc_colors;
+    domctl.domain = domid;
+    domctl.u.set_llc_colors.num_llc_colors = num_llc_colors;
+
+    ret = do_domctl(xch, &domctl);
+
+    if ( local )
+        xc_hypercall_buffer_free(xch, local);
+
+    return ret;
+}
 /*
  * Local variables:
  * mode: C
diff --git a/tools/libs/light/libxl_create.c b/tools/libs/light/libxl_create.c
index ce1d431103..db25019452 100644
--- a/tools/libs/light/libxl_create.c
+++ b/tools/libs/light/libxl_create.c
@@ -725,6 +725,15 @@ int libxl__domain_make(libxl__gc *gc, libxl_domain_config *d_config,
             /* A new domain now exists */
             *domid = local_domid;
 
+            ret = xc_domain_set_llc_colors(ctx->xch, local_domid,
+                                           b_info->llc_colors,
+                                           b_info->num_llc_colors);
+            if (ret < 0) {
+                LOGED(ERROR, local_domid, "LLC colors allocation failed");
+                rc = ERROR_FAIL;
+                goto out;
+            }
+
             rc = libxl__is_domid_recent(gc, local_domid, &recent);
             if (rc)
                 goto out;
diff --git a/tools/libs/light/libxl_types.idl b/tools/libs/light/libxl_types.idl
index 7d8bd5d216..78031d8bcb 100644
--- a/tools/libs/light/libxl_types.idl
+++ b/tools/libs/light/libxl_types.idl
@@ -610,6 +610,7 @@ libxl_domain_build_info = Struct("domain_build_info",[
     ("ioports",          Array(libxl_ioport_range, "num_ioports")),
     ("irqs",             Array(uint32, "num_irqs")),
     ("iomem",            Array(libxl_iomem_range, "num_iomem")),
+    ("llc_colors",       Array(uint32, "num_llc_colors")),
     ("claim_mode",	     libxl_defbool),
     ("event_channels",   uint32),
     ("kernel",           string),
diff --git a/tools/xl/xl_parse.c b/tools/xl/xl_parse.c
index ed983200c3..0eefe873a4 100644
--- a/tools/xl/xl_parse.c
+++ b/tools/xl/xl_parse.c
@@ -1294,7 +1294,7 @@ void parse_config_data(const char *config_source,
     XLU_ConfigList *cpus, *vbds, *nics, *pcis, *cvfbs, *cpuids, *vtpms,
                    *usbctrls, *usbdevs, *p9devs, *vdispls, *pvcallsifs_devs;
     XLU_ConfigList *channels, *ioports, *irqs, *iomem, *viridian, *dtdevs,
-                   *mca_caps, *smbios;
+                   *mca_caps, *smbios, *llc_colors;
     int num_ioports, num_irqs, num_iomem, num_cpus, num_viridian, num_mca_caps;
     int num_smbios;
     int pci_power_mgmt = 0;
@@ -1302,6 +1302,7 @@ void parse_config_data(const char *config_source,
     int pci_permissive = 0;
     int pci_seize = 0;
     int i, e;
+    int num_llc_colors;
     char *kernel_basename;
 
     libxl_domain_create_info *c_info = &d_config->c_info;
@@ -1445,6 +1446,41 @@ void parse_config_data(const char *config_source,
     if (!xlu_cfg_get_long (config, "maxmem", &l, 0))
         b_info->max_memkb = l * 1024;
 
+    if (!xlu_cfg_get_list(config, "llc_colors", &llc_colors, &num_llc_colors, 0)) {
+        int cur_index = 0;
+
+        b_info->num_llc_colors = 0;
+        for (i = 0; i < num_llc_colors; i++) {
+            uint32_t start = 0, end = 0, k;
+
+            buf = xlu_cfg_get_listitem(llc_colors, i);
+            if (!buf) {
+                fprintf(stderr,
+                        "xl: Can't get element %d in LLC color list\n", i);
+                exit(1);
+            }
+
+            if (sscanf(buf, "%" SCNu32 "-%" SCNu32, &start, &end) != 2) {
+                if (sscanf(buf, "%" SCNu32, &start) != 1) {
+                    fprintf(stderr, "xl: Invalid LLC color range: %s\n", buf);
+                    exit(1);
+                }
+                end = start;
+            } else if (start > end) {
+                fprintf(stderr,
+                        "xl: Start LLC color is greater than end: %s\n", buf);
+                exit(1);
+            }
+
+            b_info->num_llc_colors += (end - start) + 1;
+            b_info->llc_colors = (uint32_t *)realloc(b_info->llc_colors,
+                        sizeof(*b_info->llc_colors) * b_info->num_llc_colors);
+
+            for (k = start; k <= end; k++)
+                b_info->llc_colors[cur_index++] = k;
+        }
+    }
+
     if (!xlu_cfg_get_long (config, "vcpus", &l, 0)) {
         vcpus = l;
         if (libxl_cpu_bitmap_alloc(ctx, &b_info->avail_vcpus, l)) {
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Tue Jan 02 09:51:58 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 02 Jan 2024 09:51:58 +0000
Received: from list by lists.xenproject.org with outflank-mailman.660559.1030035 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rKbR7-00060a-OB; Tue, 02 Jan 2024 09:51:49 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 660559.1030035; Tue, 02 Jan 2024 09:51:49 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rKbR7-00060T-LA; Tue, 02 Jan 2024 09:51:49 +0000
Received: by outflank-mailman (input) for mailman id 660559;
 Tue, 02 Jan 2024 09:51:48 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=mpFB=IM=minervasys.tech=carlo.nonato@srs-se1.protection.inumbo.net>)
 id 1rKbR6-00060C-Cd
 for xen-devel@lists.xenproject.org; Tue, 02 Jan 2024 09:51:48 +0000
Received: from mail-ej1-x630.google.com (mail-ej1-x630.google.com
 [2a00:1450:4864:20::630])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 898aadf1-a954-11ee-9b0f-b553b5be7939;
 Tue, 02 Jan 2024 10:51:44 +0100 (CET)
Received: by mail-ej1-x630.google.com with SMTP id
 a640c23a62f3a-a2343c31c4bso1029653166b.1
 for <xen-devel@lists.xenproject.org>; Tue, 02 Jan 2024 01:51:44 -0800 (PST)
Received: from carlo-ubuntu.minervasys.tech (nonato.mo54.unimo.it.
 [155.185.85.8]) by smtp.gmail.com with ESMTPSA id
 s4-20020a1709066c8400b00a1f7ab65d3fsm11541845ejr.131.2024.01.02.01.51.42
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 02 Jan 2024 01:51:43 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 898aadf1-a954-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=minervasys-tech.20230601.gappssmtp.com; s=20230601; t=1704189103; x=1704793903; darn=lists.xenproject.org;
        h=content-transfer-encoding:mime-version:message-id:date:subject:cc
         :to:from:from:to:cc:subject:date:message-id:reply-to;
        bh=beeGC4zsHWhix8z9+UTegvQD7zyehBOaMLb6lMZd4h0=;
        b=ScFGNVRFD+QEHsy+3uBdFkoarlQxzfjEjHWNKd509cKufCuDx8vDjb5QecpAlh7fCZ
         gIrp825vFtFtpV9bp3nAr84rFa3+8m3bgg+nv1OiD2M1/vi4Kx3c2dPTBB+CzSQJwX5f
         g9PaFprpEwF4NPUU/sVAdaP8vRS+J4Ri9pM/OG7sE+ZJDQd+Z6Q1YdF9WAQaCFQgBHTd
         EcIZrskphQo8xF4FQtc5PRIvkjFsFa3CYkJ8udaqYc25nKvVTbijWgtSc2tKmNnRm6ao
         lUpw7AulTfYq9cse/x4nLX+Z8OUYb4Zs8jgMCajKeQ4ytTtSlkRNXtLqnwKaieepJ3qG
         Yyyw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704189103; x=1704793903;
        h=content-transfer-encoding:mime-version:message-id:date:subject:cc
         :to:from:x-gm-message-state:from:to:cc:subject:date:message-id
         :reply-to;
        bh=beeGC4zsHWhix8z9+UTegvQD7zyehBOaMLb6lMZd4h0=;
        b=oOS9VxmOfOraS55t+DIJ5YVRPttQ5oAUhHLF/Fho08soKA0LIucnQyUp3NbHJ1NlzG
         pPwQpDAByRZDImW6SEretziujduEhAOgcFwmvzbdY33rUK1o/lZ6aGTzm9hu83AeVwr5
         M00CLIcYB0bCvMPFNSw+nERH3KtcaiD20AcewcruuSy1OMzic2sNkT/5KyMXalnd4Sw2
         oa+wQ1+3MSG+/N4waAWtuCA1R6e4LrYJbO30WOEPfJxISPJpXavm0jGjsEQuSidruxhV
         4ThL4iGx0EZl0vBhWmUUkBPUVk5S5FUDtupgzstdfAf/+R/P798v6dt1SAEIhG7IIM39
         bFRg==
X-Gm-Message-State: AOJu0YzUsqX6J2WokpL4AmiQZ+vXoDFl2zw9QzEsFxbjpZA8HozGCU3o
	ym7CfYC40xedUYR1FFvCAQax9TLuJB3PcCdS06gV0KgZTOw=
X-Google-Smtp-Source: AGHT+IFBeOlKj/wqrRUDDlGS4B5/Oh/4prEYxZjEKVhij9gmAKGfR7wZKQFvlI3x0eq+AD9Ow2FleA==
X-Received: by 2002:a17:907:12d5:b0:a27:c65b:67ed with SMTP id vp21-20020a17090712d500b00a27c65b67edmr883137ejb.26.1704189103396;
        Tue, 02 Jan 2024 01:51:43 -0800 (PST)
From: Carlo Nonato <carlo.nonato@minervasys.tech>
To: xen-devel@lists.xenproject.org
Cc: Carlo Nonato <carlo.nonato@minervasys.tech>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	George Dunlap <george.dunlap@citrix.com>,
	Jan Beulich <jbeulich@suse.com>,
	Julien Grall <julien@xen.org>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Wei Liu <wl@xen.org>,
	Bertrand Marquis <bertrand.marquis@arm.com>,
	Michal Orzel <michal.orzel@amd.com>,
	Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
	Anthony PERARD <anthony.perard@citrix.com>,
	Juergen Gross <jgross@suse.com>
Subject: [PATCH v5 00/13] Arm cache coloring
Date: Tue,  2 Jan 2024 10:51:25 +0100
Message-Id: <20240102095138.17933-1-carlo.nonato@minervasys.tech>
X-Mailer: git-send-email 2.34.1
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Shared caches in multi-core CPU architectures represent a problem for
predictability of memory access latency. This jeopardizes applicability
of many Arm platform in real-time critical and mixed-criticality
scenarios. We introduce support for cache partitioning with page
coloring, a transparent software technique that enables isolation
between domains and Xen, and thus avoids cache interference.

When creating a domain, a simple syntax (e.g. `0-3` or `4-11`) allows
the user to define assignments of cache partitions ids, called colors,
where assigning different colors guarantees no mutual eviction on cache
will ever happen. This instructs the Xen memory allocator to provide
the i-th color assignee only with pages that maps to color i, i.e. that
are indexed in the i-th cache partition.

The proposed implementation supports the dom0less feature.
The proposed implementation doesn't support the static-mem feature.
The solution has been tested in several scenarios, including Xilinx Zynq
MPSoCs.

In this patch series there are two major unacceptable workarounds for which
I want to ask you for comments:
 - #3: allocate_memory() has been moved in dom0less_build.c, so I just copied
 it back to make it compile.
 - #13: consider_modules() has been moved to arm32 only. Again I just copied it.

Carlo Nonato (12):
  xen/common: add cache coloring common code
  xen/arm: add cache coloring initialization
  xen/arm: add Dom0 cache coloring support
  xen: extend domctl interface for cache coloring
  tools: add support for cache coloring configuration
  xen/arm: add support for cache coloring configuration via device-tree
  xen/page_alloc: introduce init_free_page_fields() helper
  xen/page_alloc: introduce preserved page flags macro
  xen: add cache coloring allocator for domains
  xen/arm: use domain memory to allocate p2m page tables
  Revert "xen/arm: Remove unused BOOT_RELOC_VIRT_START"
  xen/arm: add cache coloring support for Xen

Luca Miccio (1):
  xen/arm: add Xen cache colors command line parameter

 docs/man/xl.cfg.5.pod.in                |  10 +
 docs/misc/arm/cache-coloring.rst        | 209 ++++++++++++
 docs/misc/arm/device-tree/booting.txt   |   4 +
 docs/misc/xen-command-line.pandoc       |  61 ++++
 tools/include/libxl.h                   |   5 +
 tools/include/xenctrl.h                 |   9 +
 tools/libs/ctrl/xc_domain.c             |  34 ++
 tools/libs/light/libxl_create.c         |   9 +
 tools/libs/light/libxl_types.idl        |   1 +
 tools/xl/xl_parse.c                     |  38 ++-
 xen/arch/Kconfig                        |  28 ++
 xen/arch/arm/Kconfig                    |   1 +
 xen/arch/arm/Makefile                   |   1 +
 xen/arch/arm/alternative.c              |   9 +-
 xen/arch/arm/arm64/mmu/head.S           |  48 +++
 xen/arch/arm/arm64/mmu/mm.c             |  26 +-
 xen/arch/arm/dom0less-build.c           |  19 ++
 xen/arch/arm/domain_build.c             |  60 +++-
 xen/arch/arm/include/asm/llc-coloring.h |  46 +++
 xen/arch/arm/include/asm/mm.h           |  12 +-
 xen/arch/arm/include/asm/mmu/layout.h   |   2 +
 xen/arch/arm/include/asm/processor.h    |  16 +
 xen/arch/arm/llc-coloring.c             | 409 ++++++++++++++++++++++++
 xen/arch/arm/mmu/p2m.c                  |   4 +-
 xen/arch/arm/mmu/setup.c                |  83 ++++-
 xen/arch/arm/mmu/smpboot.c              |  11 +-
 xen/arch/arm/psci.c                     |   9 +-
 xen/arch/arm/setup.c                    | 172 +++++++++-
 xen/arch/arm/smpboot.c                  |   9 +-
 xen/common/Kconfig                      |   3 +
 xen/common/domain.c                     |   4 +
 xen/common/domctl.c                     |  11 +
 xen/common/keyhandler.c                 |   4 +
 xen/common/page_alloc.c                 | 217 ++++++++++++-
 xen/include/public/domctl.h             |  10 +-
 xen/include/xen/llc-coloring.h          |  53 +++
 xen/include/xen/sched.h                 |   5 +
 37 files changed, 1610 insertions(+), 42 deletions(-)
 create mode 100644 docs/misc/arm/cache-coloring.rst
 create mode 100644 xen/arch/arm/include/asm/llc-coloring.h
 create mode 100644 xen/arch/arm/llc-coloring.c
 create mode 100644 xen/include/xen/llc-coloring.h

-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Tue Jan 02 09:51:58 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 02 Jan 2024 09:51:58 +0000
Received: from list by lists.xenproject.org with outflank-mailman.660561.1030054 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rKbR9-0006TV-6F; Tue, 02 Jan 2024 09:51:51 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 660561.1030054; Tue, 02 Jan 2024 09:51:51 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rKbR9-0006TO-3g; Tue, 02 Jan 2024 09:51:51 +0000
Received: by outflank-mailman (input) for mailman id 660561;
 Tue, 02 Jan 2024 09:51:49 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=mpFB=IM=minervasys.tech=carlo.nonato@srs-se1.protection.inumbo.net>)
 id 1rKbR7-00060C-7d
 for xen-devel@lists.xenproject.org; Tue, 02 Jan 2024 09:51:49 +0000
Received: from mail-ej1-x631.google.com (mail-ej1-x631.google.com
 [2a00:1450:4864:20::631])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 8afc4bd4-a954-11ee-9b0f-b553b5be7939;
 Tue, 02 Jan 2024 10:51:47 +0100 (CET)
Received: by mail-ej1-x631.google.com with SMTP id
 a640c23a62f3a-a1915034144so1036087166b.0
 for <xen-devel@lists.xenproject.org>; Tue, 02 Jan 2024 01:51:47 -0800 (PST)
Received: from carlo-ubuntu.minervasys.tech (nonato.mo54.unimo.it.
 [155.185.85.8]) by smtp.gmail.com with ESMTPSA id
 s4-20020a1709066c8400b00a1f7ab65d3fsm11541845ejr.131.2024.01.02.01.51.44
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 02 Jan 2024 01:51:45 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 8afc4bd4-a954-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=minervasys-tech.20230601.gappssmtp.com; s=20230601; t=1704189106; x=1704793906; darn=lists.xenproject.org;
        h=content-transfer-encoding:mime-version:references:in-reply-to
         :message-id:date:subject:cc:to:from:from:to:cc:subject:date
         :message-id:reply-to;
        bh=+3wy66iUxtnoUDV+3jrP2ySeug0AmKVeI8nRHMPDTHo=;
        b=gUJw/owfirFRV+XADwTjhcN7bWgh7n2XvTQcbLH+n4InfL0xnNvQz0bA373CGMO/7/
         Jhx42sf3UYKqUrFwbxOn1rIaZ3vuI1zOHkluwDtgH2Gb7Uhxbzm02Y8qXlNGArXd3T3Y
         AjWOGRYr4j7SVltlhPRJuZCCysMhWGjE5lhNKlH1RzN7ulr7/pjvwt+Mltsxe0n5/lOu
         8hXeh/SSImiDfqJIE87kAM+XgEwOW6RS1euIAx5SMjG7XiMphOb9VrK1VCCOq5pr1AHv
         lp8m9ApSXcyJ8t/gWoCWCUrs/BEqnySdBJ1kqLIaiQg9rw0Q3Rr85X5OL9LLe5Fd5BDI
         Cs1A==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704189106; x=1704793906;
        h=content-transfer-encoding:mime-version:references:in-reply-to
         :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to;
        bh=+3wy66iUxtnoUDV+3jrP2ySeug0AmKVeI8nRHMPDTHo=;
        b=dTTO1bYO9Xe5mR4B06tjNaih5TkOJ/Fq9KdUZ9po9+AP2Y5HNx2jyQVnK9+3qEVXfR
         Q4kIiY6aOPssfY+oq66v4cf58kq4EPc4CHc8TfU4VB49JcFyEGed8ooY28CGdu2Ig41z
         X+eF7ovey/2stP18zUSFPV0kvZjzC1fr3nzFz7TcZHcq6Xj9D9g+MFDgzyfIl8+CPThy
         bRE1vZTiSxIp9rlhVpcywKcltNDK531kHNlUgloKBJ90QzMSZH02GrvC47xRWryUQFG8
         h4DPckRmLAzsd+VcL/zw4ZCJiVZ8WuXFWfHr36NghLk2LuFHRdrtpnW0eBxzbo4BVPML
         FQ7w==
X-Gm-Message-State: AOJu0Yx3vv9rVaG3DgdS7y0zLLOhjq2s6/cmM4LNpLQy5A/71/4phclZ
	CRFz1MgfPiKVMA8v0psIBwOI+opNfqqu8lCrCSpcYB9IERk=
X-Google-Smtp-Source: AGHT+IG8x5m5vL2LC1Vaz3Fuk/l9bhg4KseE5ILgFYKBQ2VhWoEymTgBveZjKlc8EoQhRJn5gGVgtQ==
X-Received: by 2002:a17:906:388e:b0:a23:71cf:ab11 with SMTP id q14-20020a170906388e00b00a2371cfab11mr8040497ejd.10.1704189105830;
        Tue, 02 Jan 2024 01:51:45 -0800 (PST)
From: Carlo Nonato <carlo.nonato@minervasys.tech>
To: xen-devel@lists.xenproject.org
Cc: Carlo Nonato <carlo.nonato@minervasys.tech>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Julien Grall <julien@xen.org>,
	Bertrand Marquis <bertrand.marquis@arm.com>,
	Michal Orzel <michal.orzel@amd.com>,
	Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	George Dunlap <george.dunlap@citrix.com>,
	Jan Beulich <jbeulich@suse.com>,
	Wei Liu <wl@xen.org>,
	Marco Solieri <marco.solieri@minervasys.tech>
Subject: [PATCH v5 02/13] xen/arm: add cache coloring initialization
Date: Tue,  2 Jan 2024 10:51:27 +0100
Message-Id: <20240102095138.17933-3-carlo.nonato@minervasys.tech>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20240102095138.17933-1-carlo.nonato@minervasys.tech>
References: <20240102095138.17933-1-carlo.nonato@minervasys.tech>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

This commit implements functions declared in the LLC coloring common header
for arm64 and adds documentation. It also adds two command line options: a
runtime switch for the cache coloring feature and the LLC way size
parameter.

The feature init function consists of an auto probing of the cache layout
necessary to retrieve the LLC way size which is used to compute the number
of platform colors. It also adds a debug-key to dump general cache coloring
info.

Static memory allocation and cache coloring are incompatible because static
memory can't be guaranteed to use only colors assigned to the domain.
Panic during domUs creation when both are enabled.

Based on original work from: Luca Miccio <lucmiccio@gmail.com>

Signed-off-by: Carlo Nonato <carlo.nonato@minervasys.tech>
Signed-off-by: Marco Solieri <marco.solieri@minervasys.tech>
---
v5:
- used - instead of _ for filenames
- moved static-mem check in this patch
- moved dom0 colors parsing in next patch
- moved color allocation and configuration in next patch
- moved check_colors() in next patch
- colors are now printed in short form
v4:
- added "llc-coloring" cmdline option for the boot-time switch
- dom0 colors are now checked during domain init as for any other domain
- fixed processor.h masks bit width
- check for overflow in parse_color_config()
- check_colors() now checks also that colors are sorted and unique
---
 docs/misc/arm/cache-coloring.rst        |  97 ++++++++++++++
 docs/misc/xen-command-line.pandoc       |  28 +++++
 xen/arch/arm/Kconfig                    |   1 +
 xen/arch/arm/Makefile                   |   1 +
 xen/arch/arm/dom0less-build.c           |   6 +
 xen/arch/arm/include/asm/llc-coloring.h |  28 +++++
 xen/arch/arm/include/asm/processor.h    |  16 +++
 xen/arch/arm/llc-coloring.c             | 161 ++++++++++++++++++++++++
 xen/arch/arm/setup.c                    |   7 ++
 9 files changed, 345 insertions(+)
 create mode 100644 docs/misc/arm/cache-coloring.rst
 create mode 100644 xen/arch/arm/include/asm/llc-coloring.h
 create mode 100644 xen/arch/arm/llc-coloring.c

diff --git a/docs/misc/arm/cache-coloring.rst b/docs/misc/arm/cache-coloring.rst
new file mode 100644
index 0000000000..eabf8f5d1b
--- /dev/null
+++ b/docs/misc/arm/cache-coloring.rst
@@ -0,0 +1,97 @@
+Xen cache coloring user guide
+=============================
+
+The cache coloring support in Xen allows to reserve Last Level Cache (LLC)
+partitions for Dom0, DomUs and Xen itself. Currently only ARM64 is supported.
+
+To compile LLC coloring support set ``CONFIG_LLC_COLORING=y``.
+
+If needed, change the maximum number of colors with
+``CONFIG_NR_LLC_COLORS=<n>``.
+
+Compile Xen and the toolstack and then configure it via
+`Command line parameters`_.
+
+Background
+**********
+
+Cache hierarchy of a modern multi-core CPU typically has first levels dedicated
+to each core (hence using multiple cache units), while the last level is shared
+among all of them. Such configuration implies that memory operations on one
+core (e.g. running a DomU) are able to generate interference on another core
+(e.g .hosting another DomU). Cache coloring allows eliminating this
+mutual interference, and thus guaranteeing higher and more predictable
+performances for memory accesses.
+The key concept underlying cache coloring is a fragmentation of the memory
+space into a set of sub-spaces called colors that are mapped to disjoint cache
+partitions. Technically, the whole memory space is first divided into a number
+of subsequent regions. Then each region is in turn divided into a number of
+subsequent sub-colors. The generic i-th color is then obtained by all the
+i-th sub-colors in each region.
+
+::
+
+                            Region j            Region j+1
+                .....................   ............
+                .                     . .
+                .                       .
+            _ _ _______________ _ _____________________ _ _
+                |     |     |     |     |     |     |
+                | c_0 | c_1 |     | c_n | c_0 | c_1 |
+           _ _ _|_____|_____|_ _ _|_____|_____|_____|_ _ _
+                    :                       :
+                    :                       :...         ... .
+                    :                            color 0
+                    :...........................         ... .
+                                                :
+          . . ..................................:
+
+There are two pragmatic lesson to be learnt.
+
+1. If one wants to avoid cache interference between two domains, different
+   colors needs to be used for their memory.
+
+2. Color assignment must privilege contiguity in the partitioning. E.g.,
+   assigning colors (0,1) to domain I  and (2,3) to domain  J is better than
+   assigning colors (0,2) to I and (1,3) to J.
+
+How to compute the number of colors
+***********************************
+
+To compute the number of available colors for a specific platform, the size of
+an LLC way and the page size used by Xen must be known. The first parameter can
+be found in the processor manual or can be also computed dividing the total
+cache size by the number of its ways. The second parameter is the minimum
+amount of memory that can be mapped by the hypervisor, thus dividing the way
+size by the page size, the number of total cache partitions is found. So for
+example, an Arm Cortex-A53 with a 16-ways associative 1 MiB LLC, can isolate up
+to 16 colors when pages are 4 KiB in size.
+
+Cache layout is probed automatically by Xen itself, but a possibility to
+manually set the way size it's left for the user to overcome failing situations
+or for debugging/testing purposes. See `Command line parameters`_ for more
+information on that.
+
+Command line parameters
+***********************
+
+More specific documentation is available at `docs/misc/xen-command-line.pandoc`.
+
++----------------------+-------------------------------+
+| **Parameter**        | **Description**               |
++----------------------+-------------------------------+
+| ``llc-coloring``     | enable coloring at runtime    |
++----------------------+-------------------------------+
+| ``llc-way-size``     | set the LLC way size          |
++----------------------+-------------------------------+
+
+Known issues and limitations
+****************************
+
+"xen,static-mem" isn't supported when coloring is enabled
+#########################################################
+
+In the domain configuration, "xen,static-mem" allows memory to be statically
+allocated to the domain. This isn't possibile when LLC coloring is enabled,
+because that memory can't be guaranteed to use only colors assigned to the
+domain.
diff --git a/docs/misc/xen-command-line.pandoc b/docs/misc/xen-command-line.pandoc
index 8e65f8bd18..22d2d5b6cf 100644
--- a/docs/misc/xen-command-line.pandoc
+++ b/docs/misc/xen-command-line.pandoc
@@ -1713,6 +1713,34 @@ This option is intended for debugging purposes only.  Enable MSR_DEBUGCTL.LBR
 in hypervisor context to be able to dump the Last Interrupt/Exception To/From
 record with other registers.
 
+### llc-coloring (arm64)
+> `= <boolean>`
+
+> Default: `false`
+
+Flag to enable or disable LLC coloring support at runtime. This options is
+available only when `CONFIG_LLC_COLORING` is enabled. See the general
+cache coloring documentation for more info.
+
+### llc-way-size (arm64)
+> `= <size>`
+
+> Default: `Obtained from the hardware`
+
+Specify the way size of the Last Level Cache. This options is available only
+when `CONFIG_LLC_COLORING` is enabled. It is an optional, expert-only parameter
+and it is used to calculate the number of available LLC colors on the platform.
+It can be obtained by dividing the total LLC size by the number of its
+associative ways.
+By default, the value is automatically computed by probing the hardware, but in
+case of specific needs, it can be manually set. Those include failing probing
+and debugging/testing purposes so that it's possibile to emulate platforms with
+different number of supported colors.
+An important detail to highlight is that the current implementation of the
+cache coloring technique requires the number of colors to be a power of 2, and
+consequently, also the LLC way size must be so. A value that doesn't match this
+requirement is aligned down to the previous power of 2.
+
 ### lock-depth-size
 > `= <integer>`
 
diff --git a/xen/arch/arm/Kconfig b/xen/arch/arm/Kconfig
index 50e9bfae1a..55143f86a9 100644
--- a/xen/arch/arm/Kconfig
+++ b/xen/arch/arm/Kconfig
@@ -8,6 +8,7 @@ config ARM_64
 	depends on !ARM_32
 	select 64BIT
 	select HAS_FAST_MULTIPLY
+	select HAS_LLC_COLORING
 
 config ARM
 	def_bool y
diff --git a/xen/arch/arm/Makefile b/xen/arch/arm/Makefile
index 33c677672f..c9a1cd298d 100644
--- a/xen/arch/arm/Makefile
+++ b/xen/arch/arm/Makefile
@@ -37,6 +37,7 @@ obj-$(CONFIG_IOREQ_SERVER) += ioreq.o
 obj-y += irq.o
 obj-y += kernel.init.o
 obj-$(CONFIG_LIVEPATCH) += livepatch.o
+obj-$(CONFIG_LLC_COLORING) += llc-coloring.o
 obj-y += mem_access.o
 obj-y += mm.o
 obj-y += monitor.o
diff --git a/xen/arch/arm/dom0less-build.c b/xen/arch/arm/dom0less-build.c
index fb63ec6fd1..1142f7f74a 100644
--- a/xen/arch/arm/dom0less-build.c
+++ b/xen/arch/arm/dom0less-build.c
@@ -5,6 +5,7 @@
 #include <xen/grant_table.h>
 #include <xen/iocap.h>
 #include <xen/libfdt/libfdt.h>
+#include <xen/llc-coloring.h>
 #include <xen/sched.h>
 #include <xen/serial.h>
 #include <xen/sizes.h>
@@ -879,7 +880,12 @@ void __init create_domUs(void)
             panic("No more domain IDs available\n");
 
         if ( dt_find_property(node, "xen,static-mem", NULL) )
+        {
+            if ( llc_coloring_enabled )
+                panic("LLC coloring and static memory are incompatible\n");
+
             flags |= CDF_staticmem;
+        }
 
         if ( dt_property_read_bool(node, "direct-map") )
         {
diff --git a/xen/arch/arm/include/asm/llc-coloring.h b/xen/arch/arm/include/asm/llc-coloring.h
new file mode 100644
index 0000000000..7885e9e3f5
--- /dev/null
+++ b/xen/arch/arm/include/asm/llc-coloring.h
@@ -0,0 +1,28 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+/*
+ * Last Level Cache (LLC) coloring support for ARM
+ *
+ * Copyright (C) 2022 Xilinx Inc.
+ *
+ * Authors:
+ *    Luca Miccio <lucmiccio@gmail.com>
+ *    Carlo Nonato <carlo.nonato@minervasys.tech>
+ */
+#ifndef __ASM_ARM_COLORING_H__
+#define __ASM_ARM_COLORING_H__
+
+#include <xen/init.h>
+
+bool __init llc_coloring_init(void);
+
+#endif /* __ASM_ARM_COLORING_H__ */
+
+/*
+ * Local variables:
+ * mode: C
+ * c-file-style: "BSD"
+ * c-basic-offset: 4
+ * tab-width: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/xen/arch/arm/include/asm/processor.h b/xen/arch/arm/include/asm/processor.h
index 8e02410465..fd5e8eba98 100644
--- a/xen/arch/arm/include/asm/processor.h
+++ b/xen/arch/arm/include/asm/processor.h
@@ -18,6 +18,22 @@
 #define CTR_IDC_SHIFT       28
 #define CTR_DIC_SHIFT       29
 
+/* CCSIDR Current Cache Size ID Register */
+#define CCSIDR_LINESIZE_MASK            _AC(0x7, ULL)
+#define CCSIDR_NUMSETS_SHIFT            13
+#define CCSIDR_NUMSETS_MASK             _AC(0x3fff, ULL)
+#define CCSIDR_NUMSETS_SHIFT_FEAT_CCIDX 32
+#define CCSIDR_NUMSETS_MASK_FEAT_CCIDX  _AC(0xffffff, ULL)
+
+/* CCSELR Cache Size Selection Register */
+#define CCSELR_LEVEL_MASK  _AC(0x7, UL)
+#define CCSELR_LEVEL_SHIFT 1
+
+/* CLIDR Cache Level ID Register */
+#define CLIDR_CTYPEn_SHIFT(n) (3 * (n - 1))
+#define CLIDR_CTYPEn_MASK     _AC(0x7, UL)
+#define CLIDR_CTYPEn_LEVELS   7
+
 #define ICACHE_POLICY_VPIPT  0
 #define ICACHE_POLICY_AIVIVT 1
 #define ICACHE_POLICY_VIPT   2
diff --git a/xen/arch/arm/llc-coloring.c b/xen/arch/arm/llc-coloring.c
new file mode 100644
index 0000000000..37d647f038
--- /dev/null
+++ b/xen/arch/arm/llc-coloring.c
@@ -0,0 +1,161 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+/*
+ * Last Level Cache (LLC) coloring support for ARM
+ *
+ * Copyright (C) 2022 Xilinx Inc.
+ *
+ * Authors:
+ *    Luca Miccio <lucmiccio@gmail.com>
+ *    Carlo Nonato <carlo.nonato@minervasys.tech>
+ */
+#include <xen/errno.h>
+#include <xen/keyhandler.h>
+#include <xen/llc-coloring.h>
+#include <xen/param.h>
+#include <xen/types.h>
+
+#include <asm/processor.h>
+#include <asm/sysregs.h>
+
+bool __ro_after_init llc_coloring_enabled;
+boolean_param("llc-coloring", llc_coloring_enabled);
+
+/* Size of an LLC way */
+static unsigned int __ro_after_init llc_way_size;
+size_param("llc-way-size", llc_way_size);
+/* Number of colors available in the LLC */
+static unsigned int __ro_after_init nr_colors = CONFIG_NR_LLC_COLORS;
+
+/* Return the LLC way size by probing the hardware */
+static unsigned int __init get_llc_way_size(void)
+{
+    register_t ccsidr_el1;
+    register_t clidr_el1 = READ_SYSREG(CLIDR_EL1);
+    register_t csselr_el1 = READ_SYSREG(CSSELR_EL1);
+    register_t id_aa64mmfr2_el1 = READ_SYSREG(ID_AA64MMFR2_EL1);
+    uint32_t ccsidr_numsets_shift = CCSIDR_NUMSETS_SHIFT;
+    uint32_t ccsidr_numsets_mask = CCSIDR_NUMSETS_MASK;
+    unsigned int n, line_size, num_sets;
+
+    for ( n = CLIDR_CTYPEn_LEVELS;
+          n != 0 && !((clidr_el1 >> CLIDR_CTYPEn_SHIFT(n)) & CLIDR_CTYPEn_MASK);
+          n-- );
+
+    if ( n == 0 )
+        return 0;
+
+    WRITE_SYSREG(((n - 1) & CCSELR_LEVEL_MASK) << CCSELR_LEVEL_SHIFT,
+                 CSSELR_EL1);
+    isb();
+
+    ccsidr_el1 = READ_SYSREG(CCSIDR_EL1);
+
+    /* Arm ARM: (Log2(Number of bytes in cache line)) - 4 */
+    line_size = 1 << ((ccsidr_el1 & CCSIDR_LINESIZE_MASK) + 4);
+
+    /* If FEAT_CCIDX is enabled, CCSIDR_EL1 has a different bit layout */
+    if ( (id_aa64mmfr2_el1 >> ID_AA64MMFR2_CCIDX_SHIFT) & 0x7 )
+    {
+        ccsidr_numsets_shift = CCSIDR_NUMSETS_SHIFT_FEAT_CCIDX;
+        ccsidr_numsets_mask = CCSIDR_NUMSETS_MASK_FEAT_CCIDX;
+    }
+    /* Arm ARM: (Number of sets in cache) - 1 */
+    num_sets = ((ccsidr_el1 >> ccsidr_numsets_shift) & ccsidr_numsets_mask) + 1;
+
+    printk(XENLOG_INFO "LLC found: L%u (line size: %u bytes, sets num: %u)\n",
+           n, line_size, num_sets);
+
+    /* Restore value in CSSELR_EL1 */
+    WRITE_SYSREG(csselr_el1, CSSELR_EL1);
+    isb();
+
+    return line_size * num_sets;
+}
+
+static void print_colors(unsigned int *colors, unsigned int num_colors)
+{
+    unsigned int i;
+
+    printk("{ ");
+    for ( i = 0; i < num_colors; i++ ) {
+        unsigned int start = colors[i], end = colors[i];
+
+        printk("%u", start);
+
+        for ( ;
+              i < num_colors - 1 && colors[i] + 1 == colors[i + 1];
+              i++, end++ );
+
+        if ( start != end )
+            printk("-%u", end);
+
+        if ( i < num_colors - 1 )
+            printk(", ");
+    }
+    printk(" }\n");
+}
+
+static void dump_coloring_info(unsigned char key)
+{
+    printk("'%c' pressed -> dumping LLC coloring general info\n", key);
+    printk("LLC way size: %u KiB\n", llc_way_size >> 10);
+    printk("Number of LLC colors supported: %u\n", nr_colors);
+}
+
+bool __init llc_coloring_init(void)
+{
+    if ( !llc_way_size && !(llc_way_size = get_llc_way_size()) )
+    {
+        printk(XENLOG_ERR
+               "Probed LLC way size is 0 and no custom value provided\n");
+        return false;
+    }
+
+    /*
+     * The maximum number of colors must be a power of 2 in order to correctly
+     * map them to bits of an address, so also the LLC way size must be so.
+     */
+    if ( llc_way_size & (llc_way_size - 1) )
+    {
+        printk(XENLOG_WARNING "LLC way size (%u) isn't a power of 2.\n",
+               llc_way_size);
+        llc_way_size = 1U << flsl(llc_way_size);
+        printk(XENLOG_WARNING
+               "Using %u instead. Performances will be suboptimal\n",
+               llc_way_size);
+    }
+
+    nr_colors = llc_way_size >> PAGE_SHIFT;
+
+    if ( nr_colors < 2 || nr_colors > CONFIG_NR_LLC_COLORS )
+    {
+        printk(XENLOG_ERR "Number of LLC colors (%u) not in range [2, %u]\n",
+               nr_colors, CONFIG_NR_LLC_COLORS);
+        return false;
+    }
+
+    register_keyhandler('K', dump_coloring_info, "dump LLC coloring info", 1);
+
+    return true;
+}
+
+void domain_llc_coloring_free(struct domain *d)
+{
+    xfree(d->llc_colors);
+}
+
+void domain_dump_llc_colors(struct domain *d)
+{
+    printk("Domain %pd has %u LLC colors: ", d, d->num_llc_colors);
+    print_colors(d->llc_colors, d->num_llc_colors);
+}
+
+/*
+ * Local variables:
+ * mode: C
+ * c-file-style: "BSD"
+ * c-basic-offset: 4
+ * tab-width: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/xen/arch/arm/setup.c b/xen/arch/arm/setup.c
index 59dd9bb25a..4c16b566db 100644
--- a/xen/arch/arm/setup.c
+++ b/xen/arch/arm/setup.c
@@ -12,6 +12,7 @@
 #include <xen/device_tree.h>
 #include <xen/domain_page.h>
 #include <xen/grant_table.h>
+#include <xen/llc-coloring.h>
 #include <xen/types.h>
 #include <xen/string.h>
 #include <xen/serial.h>
@@ -746,6 +747,12 @@ void asmlinkage __init start_xen(unsigned long boot_phys_offset,
     printk("Command line: %s\n", cmdline);
     cmdline_parse(cmdline);
 
+    if ( llc_coloring_enabled )
+    {
+        if ( !llc_coloring_init() )
+            panic("Xen LLC coloring support: setup failed\n");
+    }
+
     setup_mm();
 
     /* Parse the ACPI tables for possible boot-time configuration */
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Tue Jan 02 09:51:58 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 02 Jan 2024 09:51:58 +0000
Received: from list by lists.xenproject.org with outflank-mailman.660562.1030062 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rKbR9-0006a7-L9; Tue, 02 Jan 2024 09:51:51 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 660562.1030062; Tue, 02 Jan 2024 09:51:51 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rKbR9-0006ZZ-H0; Tue, 02 Jan 2024 09:51:51 +0000
Received: by outflank-mailman (input) for mailman id 660562;
 Tue, 02 Jan 2024 09:51:50 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=mpFB=IM=minervasys.tech=carlo.nonato@srs-se1.protection.inumbo.net>)
 id 1rKbR8-00060C-QX
 for xen-devel@lists.xenproject.org; Tue, 02 Jan 2024 09:51:50 +0000
Received: from mail-ej1-x635.google.com (mail-ej1-x635.google.com
 [2a00:1450:4864:20::635])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 8c456ca3-a954-11ee-9b0f-b553b5be7939;
 Tue, 02 Jan 2024 10:51:49 +0100 (CET)
Received: by mail-ej1-x635.google.com with SMTP id
 a640c23a62f3a-a26f73732c5so591225166b.3
 for <xen-devel@lists.xenproject.org>; Tue, 02 Jan 2024 01:51:49 -0800 (PST)
Received: from carlo-ubuntu.minervasys.tech (nonato.mo54.unimo.it.
 [155.185.85.8]) by smtp.gmail.com with ESMTPSA id
 s4-20020a1709066c8400b00a1f7ab65d3fsm11541845ejr.131.2024.01.02.01.51.47
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 02 Jan 2024 01:51:47 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 8c456ca3-a954-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=minervasys-tech.20230601.gappssmtp.com; s=20230601; t=1704189108; x=1704793908; darn=lists.xenproject.org;
        h=content-transfer-encoding:mime-version:references:in-reply-to
         :message-id:date:subject:cc:to:from:from:to:cc:subject:date
         :message-id:reply-to;
        bh=VQRNz81fimbLLr0I8jJGaXDeWrq4/HkqdivnNzazx98=;
        b=iz4mGAwapK8tT/WcRGthefgxpQYI6rDQ6qeIqNIbXNNmqGhienYGAIDDSYIb69hzQl
         CsnozwKsrkBwBO5imJ9ARim2WabG5KARqy52k7iXxP5nVxikWzikBS0AuvQZkhiqxJjH
         /PTVy6bssUg2CZiCF4cUZKoeumlYVGjb4nbHEOt98tKSc2cFWuNj9lDCts3B0RgqKDSj
         yDpL5LayUGEhwxHaICorJIE7RAJtkv3XE0az/uv8Jdbmn3zCV+isah8Ok4RSELZVhP9G
         T5W1r572ac0YoSJMKAMKPBkGVyQuBOBUWV2W2kz7t1mIpu82u2M5wnu7M0fxqQJvuRnS
         Btnw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704189108; x=1704793908;
        h=content-transfer-encoding:mime-version:references:in-reply-to
         :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to;
        bh=VQRNz81fimbLLr0I8jJGaXDeWrq4/HkqdivnNzazx98=;
        b=XM8oL9Qo7KaZ8Nv7mti38Vq82FARQaerfs8P/xvYgDqXL3sm7J2XHgRTAeXDqDtn8E
         ndANyjdysqm80KiYMS4OT5RRc1JzpejzvRL4X0HHs+9Srqq296rLVl8/eZDER1lViFyg
         tjDHJHeNWPkkC1D7og4D1oAecwUYJKgBuDBe3NnJeyG+m2l6mBja2eIUHXCi/ywTygi+
         UaU6Z3SmgrMwNt2r0QrSzNbDkoBiKxfN2Ut02K/OPepk8C7S9VT4N/AFmlLnlQ5At94k
         NaPfW9lxNnxUFLqEuQwTS0+293HoceV0LWtBobn26x9HdnigtrHDZnnXeSfKw1RLHAXg
         9jgQ==
X-Gm-Message-State: AOJu0YzvmUGlieIvIDJ8XG19h/GfqoPpg9k7OcbegG+nUYKyxOseZGGM
	TW25MfYQO8aX9tyHCIDl+Ao/tx9F92u56UgW/zAy/XGs7e8=
X-Google-Smtp-Source: AGHT+IELXlZfIdw0RuAD1JY9Yn7d1evpLkgyhlQamNfyEMCkS/VP7srlA2A17TbDyWOsMYFbYDBIhQ==
X-Received: by 2002:a17:906:b3a1:b0:a1d:15ac:14fc with SMTP id uh33-20020a170906b3a100b00a1d15ac14fcmr6335287ejc.22.1704189108303;
        Tue, 02 Jan 2024 01:51:48 -0800 (PST)
From: Carlo Nonato <carlo.nonato@minervasys.tech>
To: xen-devel@lists.xenproject.org
Cc: Carlo Nonato <carlo.nonato@minervasys.tech>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Julien Grall <julien@xen.org>,
	Bertrand Marquis <bertrand.marquis@arm.com>,
	Michal Orzel <michal.orzel@amd.com>,
	Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	George Dunlap <george.dunlap@citrix.com>,
	Jan Beulich <jbeulich@suse.com>,
	Wei Liu <wl@xen.org>,
	Marco Solieri <marco.solieri@minervasys.tech>
Subject: [PATCH v5 04/13] xen: extend domctl interface for cache coloring
Date: Tue,  2 Jan 2024 10:51:29 +0100
Message-Id: <20240102095138.17933-5-carlo.nonato@minervasys.tech>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20240102095138.17933-1-carlo.nonato@minervasys.tech>
References: <20240102095138.17933-1-carlo.nonato@minervasys.tech>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

This commit updates the domctl interface to allow the user to set cache
coloring configurations from the toolstack.
It also implements the functionality for arm64.

Based on original work from: Luca Miccio <lucmiccio@gmail.com>

Signed-off-by: Carlo Nonato <carlo.nonato@minervasys.tech>
Signed-off-by: Marco Solieri <marco.solieri@minervasys.tech>
---
v5:
- added a new hypercall to set colors
- uint for the guest handle
v4:
- updated XEN_DOMCTL_INTERFACE_VERSION
---
 xen/arch/arm/llc-coloring.c    | 17 +++++++++++++++++
 xen/common/domctl.c            | 11 +++++++++++
 xen/include/public/domctl.h    | 10 +++++++++-
 xen/include/xen/llc-coloring.h |  3 +++
 4 files changed, 40 insertions(+), 1 deletion(-)

diff --git a/xen/arch/arm/llc-coloring.c b/xen/arch/arm/llc-coloring.c
index 5ce58aba70..a08614ec36 100644
--- a/xen/arch/arm/llc-coloring.c
+++ b/xen/arch/arm/llc-coloring.c
@@ -9,6 +9,7 @@
  *    Carlo Nonato <carlo.nonato@minervasys.tech>
  */
 #include <xen/errno.h>
+#include <xen/guest_access.h>
 #include <xen/keyhandler.h>
 #include <xen/llc-coloring.h>
 #include <xen/param.h>
@@ -278,6 +279,22 @@ int dom0_set_llc_colors(struct domain *d)
     return domain_check_colors(d);
 }
 
+int domain_set_llc_colors_domctl(struct domain *d,
+                                 const struct xen_domctl_set_llc_colors *config)
+{
+    if ( d->num_llc_colors )
+        return -EEXIST;
+
+    if ( domain_alloc_colors(d, config->num_llc_colors) )
+        return -ENOMEM;
+
+    if ( copy_from_guest(d->llc_colors, config->llc_colors,
+                         config->num_llc_colors) )
+        return -EFAULT;
+
+    return domain_check_colors(d);
+}
+
 /*
  * Local variables:
  * mode: C
diff --git a/xen/common/domctl.c b/xen/common/domctl.c
index f5a71ee5f7..b6867d0602 100644
--- a/xen/common/domctl.c
+++ b/xen/common/domctl.c
@@ -8,6 +8,7 @@
 
 #include <xen/types.h>
 #include <xen/lib.h>
+#include <xen/llc-coloring.h>
 #include <xen/err.h>
 #include <xen/mm.h>
 #include <xen/sched.h>
@@ -858,6 +859,16 @@ long do_domctl(XEN_GUEST_HANDLE_PARAM(xen_domctl_t) u_domctl)
                 __HYPERVISOR_domctl, "h", u_domctl);
         break;
 
+    case XEN_DOMCTL_set_llc_colors:
+        if ( !llc_coloring_enabled )
+            break;
+
+        ret = domain_set_llc_colors_domctl(d, &op->u.set_llc_colors);
+        if ( ret == -EEXIST )
+            printk(XENLOG_ERR
+                   "Can't set LLC colors on an already created domain\n");
+        break;
+
     default:
         ret = arch_do_domctl(op, d, u_domctl);
         break;
diff --git a/xen/include/public/domctl.h b/xen/include/public/domctl.h
index a33f9ec32b..2b12069294 100644
--- a/xen/include/public/domctl.h
+++ b/xen/include/public/domctl.h
@@ -21,7 +21,7 @@
 #include "hvm/save.h"
 #include "memory.h"
 
-#define XEN_DOMCTL_INTERFACE_VERSION 0x00000016
+#define XEN_DOMCTL_INTERFACE_VERSION 0x00000017
 
 /*
  * NB. xen_domctl.domain is an IN/OUT parameter for this operation.
@@ -1190,6 +1190,12 @@ struct xen_domctl_vmtrace_op {
 typedef struct xen_domctl_vmtrace_op xen_domctl_vmtrace_op_t;
 DEFINE_XEN_GUEST_HANDLE(xen_domctl_vmtrace_op_t);
 
+struct xen_domctl_set_llc_colors {
+    /* IN LLC coloring parameters */
+    unsigned int num_llc_colors;
+    XEN_GUEST_HANDLE_64(uint) llc_colors;
+};
+
 struct xen_domctl {
     uint32_t cmd;
 #define XEN_DOMCTL_createdomain                   1
@@ -1277,6 +1283,7 @@ struct xen_domctl {
 #define XEN_DOMCTL_vmtrace_op                    84
 #define XEN_DOMCTL_get_paging_mempool_size       85
 #define XEN_DOMCTL_set_paging_mempool_size       86
+#define XEN_DOMCTL_set_llc_colors                87
 #define XEN_DOMCTL_gdbsx_guestmemio            1000
 #define XEN_DOMCTL_gdbsx_pausevcpu             1001
 #define XEN_DOMCTL_gdbsx_unpausevcpu           1002
@@ -1339,6 +1346,7 @@ struct xen_domctl {
         struct xen_domctl_vuart_op          vuart_op;
         struct xen_domctl_vmtrace_op        vmtrace_op;
         struct xen_domctl_paging_mempool    paging_mempool;
+        struct xen_domctl_set_llc_colors    set_llc_colors;
         uint8_t                             pad[128];
     } u;
 };
diff --git a/xen/include/xen/llc-coloring.h b/xen/include/xen/llc-coloring.h
index cedd97d4b5..fa2edc8ad8 100644
--- a/xen/include/xen/llc-coloring.h
+++ b/xen/include/xen/llc-coloring.h
@@ -33,6 +33,9 @@ extern bool llc_coloring_enabled;
 void domain_llc_coloring_free(struct domain *d);
 void domain_dump_llc_colors(struct domain *d);
 
+int domain_set_llc_colors_domctl(struct domain *d,
+                                 const struct xen_domctl_set_llc_colors *config);
+
 #endif /* __COLORING_H__ */
 
 /*
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Tue Jan 02 09:51:58 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 02 Jan 2024 09:51:58 +0000
Received: from list by lists.xenproject.org with outflank-mailman.660560.1030040 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rKbR8-000639-2W; Tue, 02 Jan 2024 09:51:50 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 660560.1030040; Tue, 02 Jan 2024 09:51:50 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rKbR7-00062C-SP; Tue, 02 Jan 2024 09:51:49 +0000
Received: by outflank-mailman (input) for mailman id 660560;
 Tue, 02 Jan 2024 09:51:48 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=mpFB=IM=minervasys.tech=carlo.nonato@srs-se1.protection.inumbo.net>)
 id 1rKbR6-00060C-NN
 for xen-devel@lists.xenproject.org; Tue, 02 Jan 2024 09:51:48 +0000
Received: from mail-ed1-x535.google.com (mail-ed1-x535.google.com
 [2a00:1450:4864:20::535])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 8a3e4b36-a954-11ee-9b0f-b553b5be7939;
 Tue, 02 Jan 2024 10:51:45 +0100 (CET)
Received: by mail-ed1-x535.google.com with SMTP id
 4fb4d7f45d1cf-55642663ac4so1250055a12.1
 for <xen-devel@lists.xenproject.org>; Tue, 02 Jan 2024 01:51:45 -0800 (PST)
Received: from carlo-ubuntu.minervasys.tech (nonato.mo54.unimo.it.
 [155.185.85.8]) by smtp.gmail.com with ESMTPSA id
 s4-20020a1709066c8400b00a1f7ab65d3fsm11541845ejr.131.2024.01.02.01.51.43
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 02 Jan 2024 01:51:43 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 8a3e4b36-a954-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=minervasys-tech.20230601.gappssmtp.com; s=20230601; t=1704189105; x=1704793905; darn=lists.xenproject.org;
        h=content-transfer-encoding:mime-version:references:in-reply-to
         :message-id:date:subject:cc:to:from:from:to:cc:subject:date
         :message-id:reply-to;
        bh=OL4f1m83hPDbhj+UPG8Dssp4ZlvBduVN7Pf6KlCuLUs=;
        b=AInNBGg08I/EQ/0YT/Gn+lWam/v6iGIhI0kr02EYUETYauv/2UfBYihP/9XOmZobUP
         +POWQ6ELWsz8v/7w9CFq2uIYj2/DubZClVol/RPfNa7swuG8SzQqAhDdXSE2joeuECQx
         TTgtaZulXK3OtByAg76+FtVintmeLMtbRB2lEmJfMK8Hj4pxElyBrmZElgHKejEExYhI
         IcNddVqNq3kiRVlifG+72qrjmtZlngV0RYAHrIO+qI8iohnd+4g3CkDQANGUSlxZ/qdn
         xZRLPtxFTV8zm8BIci8Isu3DHxDjfBeIp3HaXUq3dBCtsTtHF/B3RYwBToDUxPcelIR4
         OEsg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704189105; x=1704793905;
        h=content-transfer-encoding:mime-version:references:in-reply-to
         :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to;
        bh=OL4f1m83hPDbhj+UPG8Dssp4ZlvBduVN7Pf6KlCuLUs=;
        b=lREI+2s3LG2H77MOv+YKvkI6FoI4oRAy/USgot9RSgPwlw8/w9guY6Ldiz4kC41Uj0
         9KQQczrnr1WATGXYYF5KD7sXgzUJTfZUQSbmRQKC1zFv6vTimXfCp1tKdNk6Z/0O23N3
         8zMa/PKsSTEd+zDkLXmuWknBLyCgx59h9VRMikAxBLgGK9fyXw4M1sn6NuO7liay8nTz
         Y8LmsRrbqoEZTP9fXEkqfIQTWng0gUiMyYUpMqKfy5D6WmssVOlswO4xuoleiK8EgyeO
         /OxWEGhwXlLMrG45GOD9D7HbtJ51xBNFq57PHEneKJB0LgJTELeh3o4ifiXU0LdPqtL3
         zTVg==
X-Gm-Message-State: AOJu0YzFl2UN3jGtjLT9a2rTcGDDyDHRnBWGT1I4OkF2GKPuoxa4Kt11
	42/jAVdX0U7wA5dEN6Wx+VWrnVB/1HrJlD2h81BfyzXPV/0=
X-Google-Smtp-Source: AGHT+IGcYzPzPCk3GYwYAqo1Lq5Eg2hqUHGkXA0KpjTSuGSGSbKgCvXr8KlByYLBYBmcIr9weZWytA==
X-Received: by 2002:a17:906:c801:b0:a26:ac91:143a with SMTP id cx1-20020a170906c80100b00a26ac91143amr8018799ejb.50.1704189104654;
        Tue, 02 Jan 2024 01:51:44 -0800 (PST)
From: Carlo Nonato <carlo.nonato@minervasys.tech>
To: xen-devel@lists.xenproject.org
Cc: Carlo Nonato <carlo.nonato@minervasys.tech>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	George Dunlap <george.dunlap@citrix.com>,
	Jan Beulich <jbeulich@suse.com>,
	Julien Grall <julien@xen.org>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Wei Liu <wl@xen.org>,
	Marco Solieri <marco.solieri@minervasys.tech>
Subject: [PATCH v5 01/13] xen/common: add cache coloring common code
Date: Tue,  2 Jan 2024 10:51:26 +0100
Message-Id: <20240102095138.17933-2-carlo.nonato@minervasys.tech>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20240102095138.17933-1-carlo.nonato@minervasys.tech>
References: <20240102095138.17933-1-carlo.nonato@minervasys.tech>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

This commit adds the Last Level Cache (LLC) coloring common header, Kconfig
options and functions. Since this is an arch specific feature, actual
implementation is postponed to later patches and Kconfig options are placed
under xen/arch.

LLC colors are a property of the domain, so the domain struct has to be
extended.

Based on original work from: Luca Miccio <lucmiccio@gmail.com>

Signed-off-by: Carlo Nonato <carlo.nonato@minervasys.tech>
Signed-off-by: Marco Solieri <marco.solieri@minervasys.tech>
---
v5:
- used - instead of _ for filenames
- removed domain_create_llc_colored()
- removed stub functions
- coloring domain fields are now #ifdef protected
v4:
- Kconfig options moved to xen/arch
- removed range for CONFIG_NR_LLC_COLORS
- added "llc_coloring_enabled" global to later implement the boot-time
  switch
- added domain_create_llc_colored() to be able to pass colors
- added is_domain_llc_colored() macro
---
 xen/arch/Kconfig               | 16 ++++++++++++
 xen/common/Kconfig             |  3 +++
 xen/common/domain.c            |  4 +++
 xen/common/keyhandler.c        |  4 +++
 xen/include/xen/llc-coloring.h | 46 ++++++++++++++++++++++++++++++++++
 xen/include/xen/sched.h        |  5 ++++
 6 files changed, 78 insertions(+)
 create mode 100644 xen/include/xen/llc-coloring.h

diff --git a/xen/arch/Kconfig b/xen/arch/Kconfig
index 67ba38f32f..aad7e9da38 100644
--- a/xen/arch/Kconfig
+++ b/xen/arch/Kconfig
@@ -31,3 +31,19 @@ config NR_NUMA_NODES
 	  associated with multiple-nodes management. It is the upper bound of
 	  the number of NUMA nodes that the scheduler, memory allocation and
 	  other NUMA-aware components can handle.
+
+config LLC_COLORING
+	bool "Last Level Cache (LLC) coloring" if EXPERT
+	depends on HAS_LLC_COLORING
+
+config NR_LLC_COLORS
+	int "Maximum number of LLC colors"
+	default 128
+	depends on LLC_COLORING
+	help
+	  Controls the build-time size of various arrays associated with LLC
+	  coloring. Refer to cache coloring documentation for how to compute the
+	  number of colors supported by the platform. This is only an upper
+	  bound. The runtime value is autocomputed or manually set via cmdline.
+	  The default value corresponds to an 8 MiB 16-ways LLC, which should be
+	  more than what needed in the general case.
diff --git a/xen/common/Kconfig b/xen/common/Kconfig
index 310ad4229c..e383f09d97 100644
--- a/xen/common/Kconfig
+++ b/xen/common/Kconfig
@@ -71,6 +71,9 @@ config HAS_IOPORTS
 config HAS_KEXEC
 	bool
 
+config HAS_LLC_COLORING
+	bool
+
 config HAS_PMAP
 	bool
 
diff --git a/xen/common/domain.c b/xen/common/domain.c
index f6f5574996..491585b0bb 100644
--- a/xen/common/domain.c
+++ b/xen/common/domain.c
@@ -7,6 +7,7 @@
 #include <xen/compat.h>
 #include <xen/init.h>
 #include <xen/lib.h>
+#include <xen/llc-coloring.h>
 #include <xen/ctype.h>
 #include <xen/err.h>
 #include <xen/param.h>
@@ -1144,6 +1145,9 @@ static void cf_check complete_domain_destroy(struct rcu_head *head)
     struct vcpu *v;
     int i;
 
+    if ( is_domain_llc_colored(d) )
+        domain_llc_coloring_free(d);
+
     /*
      * Flush all state for the vCPU previously having run on the current CPU.
      * This is in particular relevant for x86 HVM ones on VMX, so that this
diff --git a/xen/common/keyhandler.c b/xen/common/keyhandler.c
index 99a2d72a02..27c2d324d8 100644
--- a/xen/common/keyhandler.c
+++ b/xen/common/keyhandler.c
@@ -6,6 +6,7 @@
 #include <xen/debugger.h>
 #include <xen/delay.h>
 #include <xen/keyhandler.h>
+#include <xen/llc-coloring.h>
 #include <xen/param.h>
 #include <xen/shutdown.h>
 #include <xen/event.h>
@@ -307,6 +308,9 @@ static void cf_check dump_domains(unsigned char key)
 
         arch_dump_domain_info(d);
 
+        if ( is_domain_llc_colored(d) )
+            domain_dump_llc_colors(d);
+
         rangeset_domain_printk(d);
 
         dump_pageframe_info(d);
diff --git a/xen/include/xen/llc-coloring.h b/xen/include/xen/llc-coloring.h
new file mode 100644
index 0000000000..cedd97d4b5
--- /dev/null
+++ b/xen/include/xen/llc-coloring.h
@@ -0,0 +1,46 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+/*
+ * Last Level Cache (LLC) coloring common header
+ *
+ * Copyright (C) 2022 Xilinx Inc.
+ *
+ * Authors:
+ *    Carlo Nonato <carlo.nonato@minervasys.tech>
+ */
+#ifndef __COLORING_H__
+#define __COLORING_H__
+
+#include <xen/sched.h>
+#include <public/domctl.h>
+
+#ifdef CONFIG_HAS_LLC_COLORING
+
+#include <asm/llc-coloring.h>
+
+#ifdef CONFIG_LLC_COLORING
+extern bool llc_coloring_enabled;
+#define llc_coloring_enabled (llc_coloring_enabled)
+#endif
+
+#endif
+
+#ifndef llc_coloring_enabled
+#define llc_coloring_enabled (false)
+#endif
+
+#define is_domain_llc_colored(d) (llc_coloring_enabled)
+
+void domain_llc_coloring_free(struct domain *d);
+void domain_dump_llc_colors(struct domain *d);
+
+#endif /* __COLORING_H__ */
+
+/*
+ * Local variables:
+ * mode: C
+ * c-file-style: "BSD"
+ * c-basic-offset: 4
+ * tab-width: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/xen/include/xen/sched.h b/xen/include/xen/sched.h
index 9da91e0e62..dae7fab673 100644
--- a/xen/include/xen/sched.h
+++ b/xen/include/xen/sched.h
@@ -626,6 +626,11 @@ struct domain
 
     /* Holding CDF_* constant. Internal flags for domain creation. */
     unsigned int cdf;
+
+#ifdef CONFIG_LLC_COLORING
+    unsigned int *llc_colors;
+    unsigned int num_llc_colors;
+#endif
 };
 
 static inline struct page_list_head *page_to_list(
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Tue Jan 02 09:51:58 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 02 Jan 2024 09:51:58 +0000
Received: from list by lists.xenproject.org with outflank-mailman.660565.1030090 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rKbRC-0007IV-I6; Tue, 02 Jan 2024 09:51:54 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 660565.1030090; Tue, 02 Jan 2024 09:51:54 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rKbRC-0007Hp-Bd; Tue, 02 Jan 2024 09:51:54 +0000
Received: by outflank-mailman (input) for mailman id 660565;
 Tue, 02 Jan 2024 09:51:53 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=mpFB=IM=minervasys.tech=carlo.nonato@srs-se1.protection.inumbo.net>)
 id 1rKbRB-00060C-4b
 for xen-devel@lists.xenproject.org; Tue, 02 Jan 2024 09:51:53 +0000
Received: from mail-ed1-x52e.google.com (mail-ed1-x52e.google.com
 [2a00:1450:4864:20::52e])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 8d959b31-a954-11ee-9b0f-b553b5be7939;
 Tue, 02 Jan 2024 10:51:51 +0100 (CET)
Received: by mail-ed1-x52e.google.com with SMTP id
 4fb4d7f45d1cf-555f95cc2e4so2216417a12.3
 for <xen-devel@lists.xenproject.org>; Tue, 02 Jan 2024 01:51:51 -0800 (PST)
Received: from carlo-ubuntu.minervasys.tech (nonato.mo54.unimo.it.
 [155.185.85.8]) by smtp.gmail.com with ESMTPSA id
 s4-20020a1709066c8400b00a1f7ab65d3fsm11541845ejr.131.2024.01.02.01.51.49
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 02 Jan 2024 01:51:49 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 8d959b31-a954-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=minervasys-tech.20230601.gappssmtp.com; s=20230601; t=1704189110; x=1704793910; darn=lists.xenproject.org;
        h=content-transfer-encoding:mime-version:references:in-reply-to
         :message-id:date:subject:cc:to:from:from:to:cc:subject:date
         :message-id:reply-to;
        bh=73zQ6mdEMBzClWviA9+IRZfbHegcYkbBhPrmh7vmHt4=;
        b=F4F9GaksiUKI3IZ3Peu9TSrsm47aaKlskPmQAiwbvJlcMLE+EKZamgIRI8pQ98OOj8
         9sdW7UiokQF4tQjmZndgct2xtAAvDgVcKzpu3Kd4eJffwRc3mTn5urTZwxMn7mCsQGom
         BgusOrednWyD0ti226c4/WXqiWkodJ75qIEbq/YRwJrHvxOvrDz91/3XLfyUI5cVbzYP
         CNYygw86AggOm4WBYaC9zAMC/En5TiGztwvV1xpYSdp4AZyNFRcYOkl2pSFqK1yYTIHW
         8RntLPGNWUNUjkr+EfBdPAtFdyZOGZaEe0kOO1SacIGQyg14BmFFTRrhPS96UXPklB4l
         R1MQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704189110; x=1704793910;
        h=content-transfer-encoding:mime-version:references:in-reply-to
         :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to;
        bh=73zQ6mdEMBzClWviA9+IRZfbHegcYkbBhPrmh7vmHt4=;
        b=O/5Mz6cTE6KfThrPieu2Wt66fe3enggep21sLub3haPmqOaFI9+0kUPQDkyzGCtTOA
         0sJ0SqTLUHKONcB3QyZHBRRyJevj+pP38fRX8uZN55q/yyFfbWNZEJIinVPJiYJu9WPb
         CUsYI1y8W73jpFShGpUHN0Eh+kRfRWD8uEoaXeCnJTrqcll7960r/F76R/024uPk+mPW
         k3U8HSwCA2pKtoEa1vOV5u+eRRCNExvZ0b0YpsxdJE3nWKZqmQnlUEHS4nPCmEUhi/4n
         gJPBvdn9mEIQsaQCwDvWP1t1v6JGuXZ7G/AXEe5JOHZ9xtBSatOUah5nNNs5WEKbeWpa
         UEkQ==
X-Gm-Message-State: AOJu0Yzte09I2YFUE37VFKXW9/A6LJ/2vG9fRsb8ENf5KuUXnnCrhJv1
	Mf9W8xIp1kQuroaNNZX3dtULZw1HsaNOmZ6GR/wjoC5/68g=
X-Google-Smtp-Source: AGHT+IHjx+BBxiNfQf2Ybyxnqy1PrJ9FjTW1mafSepJnbgj3AtAc3jBAug91zSRILwH3dvu/0L5UZg==
X-Received: by 2002:a17:906:74cc:b0:a28:61f7:bbdb with SMTP id z12-20020a17090674cc00b00a2861f7bbdbmr135203ejl.71.1704189110245;
        Tue, 02 Jan 2024 01:51:50 -0800 (PST)
From: Carlo Nonato <carlo.nonato@minervasys.tech>
To: xen-devel@lists.xenproject.org
Cc: Carlo Nonato <carlo.nonato@minervasys.tech>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Julien Grall <julien@xen.org>,
	Bertrand Marquis <bertrand.marquis@arm.com>,
	Michal Orzel <michal.orzel@amd.com>,
	Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
	Marco Solieri <marco.solieri@minervasys.tech>
Subject: [PATCH v5 06/13] xen/arm: add support for cache coloring configuration via device-tree
Date: Tue,  2 Jan 2024 10:51:31 +0100
Message-Id: <20240102095138.17933-7-carlo.nonato@minervasys.tech>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20240102095138.17933-1-carlo.nonato@minervasys.tech>
References: <20240102095138.17933-1-carlo.nonato@minervasys.tech>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

This commit adds the "llc-colors" Device Tree attribute that can be used
for DomUs and Dom0less color configurations. The syntax is the same used
for every color config.

Based on original work from: Luca Miccio <lucmiccio@gmail.com>

Signed-off-by: Carlo Nonato <carlo.nonato@minervasys.tech>
Signed-off-by: Marco Solieri <marco.solieri@minervasys.tech>
---
v5:
- static-mem check has been moved in a previous patch
- added domain_set_llc_colors_from_str() to set colors after domain creation
---
 docs/misc/arm/cache-coloring.rst        | 48 ++++++++++++++++++++++++-
 docs/misc/arm/device-tree/booting.txt   |  4 +++
 xen/arch/arm/dom0less-build.c           | 13 +++++++
 xen/arch/arm/include/asm/llc-coloring.h |  1 +
 xen/arch/arm/llc-coloring.c             | 17 +++++++++
 5 files changed, 82 insertions(+), 1 deletion(-)

diff --git a/docs/misc/arm/cache-coloring.rst b/docs/misc/arm/cache-coloring.rst
index acf82c3df8..ae1dd8f4af 100644
--- a/docs/misc/arm/cache-coloring.rst
+++ b/docs/misc/arm/cache-coloring.rst
@@ -10,7 +10,7 @@ If needed, change the maximum number of colors with
 ``CONFIG_NR_LLC_COLORS=<n>``.
 
 Compile Xen and the toolstack and then configure it via
-`Command line parameters`_.
+`Command line parameters`_. For DomUs follow `DomUs configuration`_.
 
 Background
 **********
@@ -114,6 +114,52 @@ Examples:
 | 0                 | [0]                         |
 +-------------------+-----------------------------+
 
+DomUs configuration
+*******************
+
+DomUs colors can be set via Device Tree, also for Dom0less configurations
+(documentation at `docs/misc/arm/device-tree/booting.txt`) using the
+``llc-colors`` option. For example:
+
+::
+
+    xen,xen-bootargs = "console=dtuart dtuart=serial0 dom0_mem=1G dom0_max_vcpus=1 sched=null llc-coloring=on llc-way-size=64K dom0-llc-colors=2-6";
+    xen,dom0-bootargs "console=hvc0 earlycon=xen earlyprintk=xen root=/dev/ram0"
+
+    dom0 {
+        compatible = "xen,linux-zimage" "xen,multiboot-module";
+        reg = <0x0 0x1000000 0x0 15858176>;
+    };
+
+    dom0-ramdisk {
+        compatible = "xen,linux-initrd" "xen,multiboot-module";
+        reg = <0x0 0x2000000 0x0 20638062>;
+    };
+
+    domU0 {
+        #address-cells = <0x1>;
+        #size-cells = <0x1>;
+        compatible = "xen,domain";
+        memory = <0x0 0x40000>;
+        llc-colors = "4-8,10,11,12";
+        cpus = <0x1>;
+        vpl011 = <0x1>;
+
+        module@2000000 {
+            compatible = "multiboot,kernel", "multiboot,module";
+            reg = <0x2000000 0xffffff>;
+            bootargs = "console=ttyAMA0";
+        };
+
+        module@30000000 {
+            compatible = "multiboot,ramdisk", "multiboot,module";
+            reg = <0x3000000 0xffffff>;
+        };
+    };
+
+**Note:** If no color configuration is provided for a domain, the default one,
+which corresponds to all available colors, is used instead.
+
 Known issues and limitations
 ****************************
 
diff --git a/docs/misc/arm/device-tree/booting.txt b/docs/misc/arm/device-tree/booting.txt
index bbd955e9c2..e9f9862e9c 100644
--- a/docs/misc/arm/device-tree/booting.txt
+++ b/docs/misc/arm/device-tree/booting.txt
@@ -162,6 +162,10 @@ with the following properties:
 
     An integer specifying the number of vcpus to allocate to the guest.
 
+- llc-colors
+    A string specifying the LLC color configuration for the guest.
+    Refer to "docs/misc/arm/cache_coloring.rst" for syntax.
+
 - vpl011
 
     An empty property to enable/disable a virtual pl011 for the guest to
diff --git a/xen/arch/arm/dom0less-build.c b/xen/arch/arm/dom0less-build.c
index 1142f7f74a..eb39f5291f 100644
--- a/xen/arch/arm/dom0less-build.c
+++ b/xen/arch/arm/dom0less-build.c
@@ -850,6 +850,7 @@ void __init create_domUs(void)
     struct dt_device_node *node;
     const struct dt_device_node *cpupool_node,
                                 *chosen = dt_find_node_by_path("/chosen");
+    const char *llc_colors_str = NULL;
 
     BUG_ON(chosen == NULL);
     dt_for_each_child_node(chosen, node)
@@ -993,6 +994,13 @@ void __init create_domUs(void)
 #endif
         }
 
+        dt_property_read_string(node, "llc-colors", &llc_colors_str);
+        if ( llc_coloring_enabled && !llc_colors_str )
+            panic("'llc-colors' is required when LLC coloring is enabled\n");
+        else if ( !llc_coloring_enabled && llc_colors_str)
+            printk(XENLOG_WARNING
+                   "'llc-colors' found, but LLC coloring is disabled\n");
+
         /*
          * The variable max_init_domid is initialized with zero, so here it's
          * very important to use the pre-increment operator to call
@@ -1003,6 +1011,11 @@ void __init create_domUs(void)
             panic("Error creating domain %s (rc = %ld)\n",
                   dt_node_name(node), PTR_ERR(d));
 
+        if ( llc_coloring_enabled &&
+             (rc = domain_set_llc_colors_from_str(d, llc_colors_str)) )
+            panic("Error initializing LLC coloring for domain %s (rc = %d)\n",
+                  dt_node_name(node), rc);
+
         d->is_console = true;
         dt_device_set_used_by(node, d->domain_id);
 
diff --git a/xen/arch/arm/include/asm/llc-coloring.h b/xen/arch/arm/include/asm/llc-coloring.h
index ee5551e3cc..5f9b0a8121 100644
--- a/xen/arch/arm/include/asm/llc-coloring.h
+++ b/xen/arch/arm/include/asm/llc-coloring.h
@@ -15,6 +15,7 @@
 
 bool __init llc_coloring_init(void);
 int dom0_set_llc_colors(struct domain *d);
+int domain_set_llc_colors_from_str(struct domain *d, const char *str);
 
 #endif /* __ASM_ARM_COLORING_H__ */
 
diff --git a/xen/arch/arm/llc-coloring.c b/xen/arch/arm/llc-coloring.c
index a08614ec36..d3de5f14cb 100644
--- a/xen/arch/arm/llc-coloring.c
+++ b/xen/arch/arm/llc-coloring.c
@@ -295,6 +295,23 @@ int domain_set_llc_colors_domctl(struct domain *d,
     return domain_check_colors(d);
 }
 
+int domain_set_llc_colors_from_str(struct domain *d, const char *str)
+{
+    int err;
+
+    if ( domain_alloc_colors(d, nr_colors) )
+        return -ENOMEM;
+
+    err = parse_color_config(str, d->llc_colors, &d->num_llc_colors);
+    if ( err )
+    {
+        printk(XENLOG_ERR "Error parsing LLC color configuration.");
+        return err;
+    }
+
+    return domain_check_colors(d);
+}
+
 /*
  * Local variables:
  * mode: C
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Tue Jan 02 09:51:58 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 02 Jan 2024 09:51:58 +0000
Received: from list by lists.xenproject.org with outflank-mailman.660567.1030114 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rKbRE-0007y8-L3; Tue, 02 Jan 2024 09:51:56 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 660567.1030114; Tue, 02 Jan 2024 09:51:56 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rKbRE-0007wi-Gk; Tue, 02 Jan 2024 09:51:56 +0000
Received: by outflank-mailman (input) for mailman id 660567;
 Tue, 02 Jan 2024 09:51:55 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=mpFB=IM=minervasys.tech=carlo.nonato@srs-se1.protection.inumbo.net>)
 id 1rKbRD-00060C-4x
 for xen-devel@lists.xenproject.org; Tue, 02 Jan 2024 09:51:55 +0000
Received: from mail-ej1-x62c.google.com (mail-ej1-x62c.google.com
 [2a00:1450:4864:20::62c])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 8ebc50e0-a954-11ee-9b0f-b553b5be7939;
 Tue, 02 Jan 2024 10:51:53 +0100 (CET)
Received: by mail-ej1-x62c.google.com with SMTP id
 a640c23a62f3a-a26f73732c5so591231466b.3
 for <xen-devel@lists.xenproject.org>; Tue, 02 Jan 2024 01:51:53 -0800 (PST)
Received: from carlo-ubuntu.minervasys.tech (nonato.mo54.unimo.it.
 [155.185.85.8]) by smtp.gmail.com with ESMTPSA id
 s4-20020a1709066c8400b00a1f7ab65d3fsm11541845ejr.131.2024.01.02.01.51.51
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 02 Jan 2024 01:51:51 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 8ebc50e0-a954-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=minervasys-tech.20230601.gappssmtp.com; s=20230601; t=1704189112; x=1704793912; darn=lists.xenproject.org;
        h=content-transfer-encoding:mime-version:references:in-reply-to
         :message-id:date:subject:cc:to:from:from:to:cc:subject:date
         :message-id:reply-to;
        bh=CcRHPr39Ase6Icq3b5rN9tDIxrSmfJ7neiBccxr3jrg=;
        b=p6D1+SqpkbGD0c8wn2kT8YuCLrQPOitpGYSbnr7vmmsAvsPtkcImJYwO653W1uJBpM
         Ka+K0ZVi7xOBYTe1UL4BzjzUUkfS2RQWK4gnLDGIIBa8XRoWa6Bd4ZN95/TA8OkZCps1
         VzEosBY8LX+5GX1RqOEA5AibCTA8fm9DX+KQAZsJBcV2zS5ng40cWuH5sXv6Hav1fHS4
         l4IX18yAk5qz/y56/UeboSeCo0cwQgjXM4JfdggAcY0YrHALKOlQ6HbpiYLh8jvC/9sW
         P4bfXBj22nX8NLERFON/3w57L4Qje9KcRG5HqBg0D0va6r4hDgiiQWrUycngoPTh7HvL
         tegw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704189112; x=1704793912;
        h=content-transfer-encoding:mime-version:references:in-reply-to
         :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to;
        bh=CcRHPr39Ase6Icq3b5rN9tDIxrSmfJ7neiBccxr3jrg=;
        b=vc/HOjDI1bKj7poxxwDIxjn6U5D/7fk5hNAbx1zk3jGXDNkzg5mQ/5h5UIz+Fwdmsl
         fMKyd8VBM+bNu5TraC2c5re7LwU5jdzwpZZ70tT9twjmDSzqF1CaI2D4y5yNgBLFSw2X
         4u/bfgP8PRoM7n0Hjwc+gnijxvQpo2LTgcICpnFNrFqNNpDuWRJs+xpzOP4ELTaf3uGm
         nTmYTb+SQieMCJ6P6hsaOddOBTEd4TcaF7dNMZhnFABlXRU2oNO6K9XxxELx9dpOqOfP
         BEIyLG9Nx1J937m0BfAedAOWD9PScgSKb0txL4sbajkeDW3I3+M6K23Sp4NFm9iTQxSI
         Miig==
X-Gm-Message-State: AOJu0YwLDiJEBp2k77v2IjOo4Wm+qJYK47jQdkdVCTlxcW+5glHJyK+g
	508zruPwh3JLuCB1ZVQAjsITz77MShL0DDJRKGKquC3GUwU=
X-Google-Smtp-Source: AGHT+IFkKg2Atq8Mx1lI55ksS3FUhVs3unVFFXvmR1U7NRnE9JwsE85OqUkKJy1oOf0ZRrFChr1ioA==
X-Received: by 2002:a17:906:58f:b0:a23:57a1:d85b with SMTP id 15-20020a170906058f00b00a2357a1d85bmr8264149ejn.74.1704189112379;
        Tue, 02 Jan 2024 01:51:52 -0800 (PST)
From: Carlo Nonato <carlo.nonato@minervasys.tech>
To: xen-devel@lists.xenproject.org
Cc: Carlo Nonato <carlo.nonato@minervasys.tech>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	George Dunlap <george.dunlap@citrix.com>,
	Jan Beulich <jbeulich@suse.com>,
	Julien Grall <julien@xen.org>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Wei Liu <wl@xen.org>,
	Marco Solieri <marco.solieri@minervasys.tech>
Subject: [PATCH v5 08/13] xen/page_alloc: introduce preserved page flags macro
Date: Tue,  2 Jan 2024 10:51:33 +0100
Message-Id: <20240102095138.17933-9-carlo.nonato@minervasys.tech>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20240102095138.17933-1-carlo.nonato@minervasys.tech>
References: <20240102095138.17933-1-carlo.nonato@minervasys.tech>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

PGC_static and PGC_extra are flags that needs to be preserved when assigning
a page. Define a new macro that groups those flags and use it instead of
or'ing every time.

The new macro is used also in free_heap_pages() allowing future commits to
extended it with other flags that must stop merging, as it now works for
PGC_static. PGC_extra is no harm here since it's only ever being set on
allocated pages.

Signed-off-by: Carlo Nonato <carlo.nonato@minervasys.tech>
Signed-off-by: Marco Solieri <marco.solieri@minervasys.tech>
---
v5:
- new patch
---
 xen/common/page_alloc.c | 10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)

diff --git a/xen/common/page_alloc.c b/xen/common/page_alloc.c
index 9ee3981bb5..3bf3120287 100644
--- a/xen/common/page_alloc.c
+++ b/xen/common/page_alloc.c
@@ -158,6 +158,8 @@
 #define PGC_static 0
 #endif
 
+#define preserved_flags (PGC_extra | PGC_static)
+
 #ifndef PGT_TYPE_INFO_INITIALIZER
 #define PGT_TYPE_INFO_INITIALIZER 0
 #endif
@@ -1504,7 +1506,7 @@ static void free_heap_pages(
             /* Merge with predecessor block? */
             if ( !mfn_valid(page_to_mfn(predecessor)) ||
                  !page_state_is(predecessor, free) ||
-                 (predecessor->count_info & PGC_static) ||
+                 (predecessor->count_info & preserved_flags) ||
                  (PFN_ORDER(predecessor) != order) ||
                  (page_to_nid(predecessor) != node) )
                 break;
@@ -1528,7 +1530,7 @@ static void free_heap_pages(
             /* Merge with successor block? */
             if ( !mfn_valid(page_to_mfn(successor)) ||
                  !page_state_is(successor, free) ||
-                 (successor->count_info & PGC_static) ||
+                 (successor->count_info & preserved_flags) ||
                  (PFN_ORDER(successor) != order) ||
                  (page_to_nid(successor) != node) )
                 break;
@@ -2365,7 +2367,7 @@ int assign_pages(
 
         for ( i = 0; i < nr; i++ )
         {
-            ASSERT(!(pg[i].count_info & ~(PGC_extra | PGC_static)));
+            ASSERT(!(pg[i].count_info & ~preserved_flags));
             if ( pg[i].count_info & PGC_extra )
                 extra_pages++;
         }
@@ -2425,7 +2427,7 @@ int assign_pages(
         page_set_owner(&pg[i], d);
         smp_wmb(); /* Domain pointer must be visible before updating refcnt. */
         pg[i].count_info =
-            (pg[i].count_info & (PGC_extra | PGC_static)) | PGC_allocated | 1;
+            (pg[i].count_info & preserved_flags) | PGC_allocated | 1;
 
         page_list_add_tail(&pg[i], page_to_list(d, &pg[i]));
     }
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Tue Jan 02 09:51:58 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 02 Jan 2024 09:51:58 +0000
Received: from list by lists.xenproject.org with outflank-mailman.660569.1030132 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rKbRG-0008UU-O4; Tue, 02 Jan 2024 09:51:58 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 660569.1030132; Tue, 02 Jan 2024 09:51:58 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rKbRG-0008St-AW; Tue, 02 Jan 2024 09:51:58 +0000
Received: by outflank-mailman (input) for mailman id 660569;
 Tue, 02 Jan 2024 09:51:56 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=mpFB=IM=minervasys.tech=carlo.nonato@srs-se1.protection.inumbo.net>)
 id 1rKbRE-00060C-M9
 for xen-devel@lists.xenproject.org; Tue, 02 Jan 2024 09:51:56 +0000
Received: from mail-ed1-x532.google.com (mail-ed1-x532.google.com
 [2a00:1450:4864:20::532])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 8f6f314f-a954-11ee-9b0f-b553b5be7939;
 Tue, 02 Jan 2024 10:51:54 +0100 (CET)
Received: by mail-ed1-x532.google.com with SMTP id
 4fb4d7f45d1cf-554e902064aso6578161a12.1
 for <xen-devel@lists.xenproject.org>; Tue, 02 Jan 2024 01:51:54 -0800 (PST)
Received: from carlo-ubuntu.minervasys.tech (nonato.mo54.unimo.it.
 [155.185.85.8]) by smtp.gmail.com with ESMTPSA id
 s4-20020a1709066c8400b00a1f7ab65d3fsm11541845ejr.131.2024.01.02.01.51.52
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 02 Jan 2024 01:51:52 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 8f6f314f-a954-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=minervasys-tech.20230601.gappssmtp.com; s=20230601; t=1704189113; x=1704793913; darn=lists.xenproject.org;
        h=content-transfer-encoding:mime-version:references:in-reply-to
         :message-id:date:subject:cc:to:from:from:to:cc:subject:date
         :message-id:reply-to;
        bh=nYNO35ZrOJhK49+UqaVbf/gG5fwEIjK1DLow2UXReX0=;
        b=Z16Yr32lEOVCAJRc8AJhkopUdNFOUA+GP3ILWrZ6+OdcQZP4LtKbcA84nRF2u5avYS
         G5Fvq8Jbv5dvAO1BD9kWBvYBseOIMxu8SHSxp2+E2l96TWqQGWlMSJwgVvoQzkQ/kDw6
         oqVo3bYu590oJ0D8cRjwsgxrxxWXr/qLSG14PvNBMBD+yJPFzu4CvvuwOlE55eFJ5Z8F
         0U7MhgxBLdTAwbi3bH8h574DlnTd7ZNYgYmuGUg3fQWlM3d3exuSBKrV9mnkX8knqoiE
         SlxhQNgi0OZJPFu1RbYpmGpIMxg/NxOJ0smNe4pERRnSjV/bXT489K1fasOEh+N7rVPZ
         Y/jw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704189113; x=1704793913;
        h=content-transfer-encoding:mime-version:references:in-reply-to
         :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to;
        bh=nYNO35ZrOJhK49+UqaVbf/gG5fwEIjK1DLow2UXReX0=;
        b=VOL85cOITFikrXJiSgO6ZKJL/9s0uuBVC8nVCoscbozYwwBgxWF5Wo3mrsuFzBVewy
         rYGBTUg0UGr9tQaHywfqtxHwWYmTkap/KAfPop1mhCUcVCorfLFuDqfgCKhJuZB09dWy
         +lJ045fVDURn0+wli4z0wsVaTovBT8rcFzfbN37keqBUp/B+eV8g/jUOeSP2ZYSuAvmS
         Qsb6qgjkRGeL8Q91UrX0+dk6IdkXzS9T3VH0KE2O6AkK2ty5YeVL7B+EWOAAFV451FPg
         gER8MmWu4KpvtsmtvB6G9oNwOSRcfsmAsrgZ+sPaxbTZP8r/vB58u8OBkf8j9FaUGZHl
         qhug==
X-Gm-Message-State: AOJu0YzkGNXFnaFndHw/BDqLJurP96xZrp5HfKnROvnvvWJ44v7Z/hgW
	fStwObtGHJAb+lcQ/9VRdQ3bhEjTqB/j93NK/RDDEv9LkzU=
X-Google-Smtp-Source: AGHT+IGGYgYlT4gKP7S4ynp2ZJmiR4+StiBbSIWcMipb7C8Q5JJOisd5I2XCrzNBRuj/AJ4RocWkGA==
X-Received: by 2002:a17:906:38da:b0:a23:56a6:97b6 with SMTP id r26-20020a17090638da00b00a2356a697b6mr7849468ejd.66.1704189113382;
        Tue, 02 Jan 2024 01:51:53 -0800 (PST)
From: Carlo Nonato <carlo.nonato@minervasys.tech>
To: xen-devel@lists.xenproject.org
Cc: Carlo Nonato <carlo.nonato@minervasys.tech>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Julien Grall <julien@xen.org>,
	Bertrand Marquis <bertrand.marquis@arm.com>,
	Michal Orzel <michal.orzel@amd.com>,
	Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	George Dunlap <george.dunlap@citrix.com>,
	Jan Beulich <jbeulich@suse.com>,
	Wei Liu <wl@xen.org>,
	Marco Solieri <marco.solieri@minervasys.tech>
Subject: [PATCH v5 09/13] xen: add cache coloring allocator for domains
Date: Tue,  2 Jan 2024 10:51:34 +0100
Message-Id: <20240102095138.17933-10-carlo.nonato@minervasys.tech>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20240102095138.17933-1-carlo.nonato@minervasys.tech>
References: <20240102095138.17933-1-carlo.nonato@minervasys.tech>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

This commit adds a new memory page allocator that implements the cache
coloring mechanism. The allocation algorithm enforces equal frequency
distribution of cache partitions, following the coloring configuration of a
domain. This allows an even utilization of cache sets for every domain.

Pages are stored in a color-indexed array of lists. Those lists are filled
by a simple init function which computes the color of each page.
When a domain requests a page, the allocator extract the page from the list
with the maximum number of free pages between those that the domain can
access, given its coloring configuration.

The allocator can only handle requests of order-0 pages. This allows for
easier implementation and since cache coloring targets only embedded systems,
it's assumed not to be a major problem.

The buddy allocator must coexist with the colored one because the Xen heap
isn't colored. For this reason a new Kconfig option and a command line
parameter are added to let the user set the amount of memory reserved for
the buddy allocator. Even when cache coloring is enabled, this memory
isn't managed by the colored allocator.

Colored heap information is dumped in the dump_heap() debug-key function.

Based on original work from: Luca Miccio <lucmiccio@gmail.com>

Signed-off-by: Marco Solieri <marco.solieri@minervasys.tech>
Signed-off-by: Carlo Nonato <carlo.nonato@minervasys.tech>
---
v5:
- Carlo Nonato as the new author
- the colored allocator balances color usage for each domain and it searches
  linearly only in the number of colors (FIXME removed)
- addedd scrub functionality
- removed stub functions (still requires some macro definition)
- addr_to_color turned to mfn_to_color for easier operations
- removed BUG_ON in init_color_heap_pages() in favor of panic()
- only non empty page lists are logged in dump_color_heap()
v4:
- moved colored allocator code after buddy allocator because it now has
  some dependencies on buddy functions
- buddy_alloc_size is now used only by the colored allocator
- fixed a bug that allowed the buddy to merge pages when they were colored
- free_color_heap_page() now calls mark_page_free()
- free_color_heap_page() uses of the frametable array for faster searches
- added FIXME comment for the linear search in free_color_heap_page()
- removed alloc_color_domheap_page() to let the colored allocator exploit
  some more buddy allocator code
- alloc_color_heap_page() now allocs min address pages first
- reduced the mess in end_boot_allocator(): use the first loop for
  init_color_heap_pages()
- fixed page_list_add_prev() (list.h) since it was doing the opposite of
  what it was supposed to do
- fixed page_list_add_prev() (non list.h) to check also for next existence
- removed unused page_list_add_next()
- moved p2m code in another patch
---
 docs/misc/arm/cache-coloring.rst  |  37 ++++++
 docs/misc/xen-command-line.pandoc |  14 +++
 xen/arch/Kconfig                  |  12 ++
 xen/arch/arm/include/asm/mm.h     |   5 +
 xen/arch/arm/llc-coloring.c       |  13 ++
 xen/common/page_alloc.c           | 193 +++++++++++++++++++++++++++++-
 xen/include/xen/llc-coloring.h    |   4 +
 7 files changed, 273 insertions(+), 5 deletions(-)

diff --git a/docs/misc/arm/cache-coloring.rst b/docs/misc/arm/cache-coloring.rst
index ae1dd8f4af..c5582340da 100644
--- a/docs/misc/arm/cache-coloring.rst
+++ b/docs/misc/arm/cache-coloring.rst
@@ -9,6 +9,9 @@ To compile LLC coloring support set ``CONFIG_LLC_COLORING=y``.
 If needed, change the maximum number of colors with
 ``CONFIG_NR_LLC_COLORS=<n>``.
 
+If needed, change the buddy allocator reserved size with
+``CONFIG_BUDDY_ALLOCATOR_SIZE=<n>``.
+
 Compile Xen and the toolstack and then configure it via
 `Command line parameters`_. For DomUs follow `DomUs configuration`_.
 
@@ -86,6 +89,8 @@ More specific documentation is available at `docs/misc/xen-command-line.pandoc`.
 +----------------------+-------------------------------+
 | ``dom0-llc-colors``  | Dom0 color configuration      |
 +----------------------+-------------------------------+
+| ``buddy-alloc-size`` | Buddy allocator reserved size |
++----------------------+-------------------------------+
 
 Colors selection format
 ***********************
@@ -160,6 +165,17 @@ DomUs colors can be set via Device Tree, also for Dom0less configurations
 **Note:** If no color configuration is provided for a domain, the default one,
 which corresponds to all available colors, is used instead.
 
+Colored allocator and buddy allocator
+*************************************
+
+The colored allocator distributes pages based on color configurations of
+domains so that each domains only gets pages of its own colors.
+The colored allocator is meant as an alternative to the buddy allocator because
+its allocation policy is by definition incompatible with the generic one. Since
+the Xen heap is not colored yet, we need to support the coexistence of the two
+allocators and some memory must be left for the buddy one. Buddy memory
+reservation is configured via Kconfig or via command-line.
+
 Known issues and limitations
 ****************************
 
@@ -170,3 +186,24 @@ In the domain configuration, "xen,static-mem" allows memory to be statically
 allocated to the domain. This isn't possibile when LLC coloring is enabled,
 because that memory can't be guaranteed to use only colors assigned to the
 domain.
+
+Cache coloring is intended only for embedded systems
+####################################################
+
+The current implementation aims to satisfy the need of predictability in
+embedded systems with small amount of memory to be managed in a colored way.
+Given that, some shortcuts are taken in the development. Expect worse
+performances on larger systems.
+
+Colored allocator can only make use of order-0 pages
+####################################################
+
+The cache coloring technique relies on memory mappings and on the smallest
+amount of memory that can be mapped to achieve the maximum number of colors
+(cache partitions) possible. This amount is what is normally called a page and,
+in Xen terminology, the order-0 page is the smallest one. The fairly simple
+colored allocator currently implemented, makes use only of such pages.
+It must be said that a more complex one could, in theory, adopt higher order
+pages if the colors selection contained adjacent colors. Two subsequent colors,
+for example, can be represented by an order-1 page, four colors correspond to
+an order-2 page, etc.
diff --git a/docs/misc/xen-command-line.pandoc b/docs/misc/xen-command-line.pandoc
index 51f6adf035..163fe7bcb1 100644
--- a/docs/misc/xen-command-line.pandoc
+++ b/docs/misc/xen-command-line.pandoc
@@ -270,6 +270,20 @@ and not running softirqs. Reduce this if softirqs are not being run frequently
 enough. Setting this to a high value may cause boot failure, particularly if
 the NMI watchdog is also enabled.
 
+### buddy-alloc-size (arm64)
+> `= <size>`
+
+> Default: `64M`
+
+Amount of memory reserved for the buddy allocator when colored allocator is
+active. This options is parsed only when LLC coloring support is enabled.
+The colored allocator is meant as an alternative to the buddy allocator,
+because its allocation policy is by definition incompatible with the generic
+one. Since the Xen heap systems is not colored yet, we need to support the
+coexistence of the two allocators for now. This parameter, which is optional
+and for expert only, it's used to set the amount of memory reserved to the
+buddy allocator.
+
 ### cet
     = List of [ shstk=<bool>, ibt=<bool> ]
 
diff --git a/xen/arch/Kconfig b/xen/arch/Kconfig
index aad7e9da38..f4c1406c02 100644
--- a/xen/arch/Kconfig
+++ b/xen/arch/Kconfig
@@ -47,3 +47,15 @@ config NR_LLC_COLORS
 	  bound. The runtime value is autocomputed or manually set via cmdline.
 	  The default value corresponds to an 8 MiB 16-ways LLC, which should be
 	  more than what needed in the general case.
+
+config BUDDY_ALLOCATOR_SIZE
+	int "Buddy allocator reserved memory size (MiB)"
+	default "64"
+	depends on LLC_COLORING
+	help
+	  Amount of memory reserved for the buddy allocator to work alongside
+	  the colored one. The colored allocator is meant as an alternative to
+	  the buddy allocator because its allocation policy is by definition
+	  incompatible with the generic one. Since the Xen heap is not colored
+	  yet, we need to support the coexistence of the two allocators and some
+	  memory must be left for the buddy one.
diff --git a/xen/arch/arm/include/asm/mm.h b/xen/arch/arm/include/asm/mm.h
index cbcf3bf147..1829c559d6 100644
--- a/xen/arch/arm/include/asm/mm.h
+++ b/xen/arch/arm/include/asm/mm.h
@@ -145,6 +145,11 @@ struct page_info
 #else
 #define PGC_static     0
 #endif
+#ifdef CONFIG_LLC_COLORING
+/* Page is cache colored */
+#define _PGC_colored      PG_shift(4)
+#define PGC_colored       PG_mask(1, 4)
+#endif
 /* ... */
 /* Page is broken? */
 #define _PGC_broken       PG_shift(7)
diff --git a/xen/arch/arm/llc-coloring.c b/xen/arch/arm/llc-coloring.c
index d3de5f14cb..526129cc43 100644
--- a/xen/arch/arm/llc-coloring.c
+++ b/xen/arch/arm/llc-coloring.c
@@ -30,6 +30,9 @@ static unsigned int __ro_after_init nr_colors = CONFIG_NR_LLC_COLORS;
 static unsigned int __ro_after_init dom0_colors[CONFIG_NR_LLC_COLORS];
 static unsigned int __ro_after_init dom0_num_colors;
 
+#define mfn_color_mask              (nr_colors - 1)
+#define mfn_to_color(mfn)           (mfn_x(mfn) & mfn_color_mask)
+
 /*
  * Parse the coloring configuration given in the buf string, following the
  * syntax below.
@@ -312,6 +315,16 @@ int domain_set_llc_colors_from_str(struct domain *d, const char *str)
     return domain_check_colors(d);
 }
 
+unsigned int page_to_llc_color(const struct page_info *pg)
+{
+    return mfn_to_color(page_to_mfn(pg));
+}
+
+unsigned int get_nr_llc_colors(void)
+{
+    return nr_colors;
+}
+
 /*
  * Local variables:
  * mode: C
diff --git a/xen/common/page_alloc.c b/xen/common/page_alloc.c
index 3bf3120287..54f52e8677 100644
--- a/xen/common/page_alloc.c
+++ b/xen/common/page_alloc.c
@@ -126,6 +126,7 @@
 #include <xen/irq.h>
 #include <xen/keyhandler.h>
 #include <xen/lib.h>
+#include <xen/llc-coloring.h>
 #include <xen/mm.h>
 #include <xen/nodemask.h>
 #include <xen/numa.h>
@@ -158,7 +159,11 @@
 #define PGC_static 0
 #endif
 
-#define preserved_flags (PGC_extra | PGC_static)
+#ifndef PGC_colored
+#define PGC_colored 0
+#endif
+
+#define preserved_flags (PGC_extra | PGC_static | PGC_colored)
 
 #ifndef PGT_TYPE_INFO_INITIALIZER
 #define PGT_TYPE_INFO_INITIALIZER 0
@@ -1946,6 +1951,162 @@ static unsigned long avail_heap_pages(
     return free_pages;
 }
 
+/*************************
+ * COLORED SIDE-ALLOCATOR
+ *
+ * Pages are grouped by LLC color in lists which are globally referred to as the
+ * color heap. Lists are populated in end_boot_allocator().
+ * After initialization there will be N lists where N is the number of
+ * available colors on the platform.
+ */
+static struct page_list_head *__ro_after_init _color_heap;
+static unsigned long *__ro_after_init free_colored_pages;
+
+/* Memory required for buddy allocator to work with colored one */
+#ifdef CONFIG_LLC_COLORING
+static unsigned long __initdata buddy_alloc_size =
+    MB(CONFIG_BUDDY_ALLOCATOR_SIZE);
+size_param("buddy-alloc-size", buddy_alloc_size);
+
+#define domain_num_llc_colors(d) ((d)->num_llc_colors)
+#define domain_llc_color(d, i)   ((d)->llc_colors[(i)])
+#else
+static unsigned long __initdata buddy_alloc_size;
+
+#define domain_num_llc_colors(d) 0
+#define domain_llc_color(d, i)   0
+#define page_to_llc_color(p)     0
+#define get_nr_llc_colors()      0
+#endif
+
+#define color_heap(color) (&_color_heap[color])
+
+void free_color_heap_page(struct page_info *pg, bool need_scrub)
+{
+    unsigned int color = page_to_llc_color(pg);
+    struct page_list_head *head = color_heap(color);
+
+    spin_lock(&heap_lock);
+
+    mark_page_free(pg, page_to_mfn(pg));
+
+    if ( need_scrub )
+    {
+        pg->count_info |= PGC_need_scrub;
+        poison_one_page(pg);
+    }
+
+    pg->count_info |= PGC_colored;
+    free_colored_pages[color]++;
+    page_list_add(pg, head);
+
+    spin_unlock(&heap_lock);
+}
+
+struct page_info *alloc_color_heap_page(unsigned int memflags, struct domain *d)
+{
+    struct page_info *pg = NULL;
+    unsigned int i, color;
+    unsigned long max = 0;
+    bool need_tlbflush = false;
+    uint32_t tlbflush_timestamp = 0;
+    bool scrub = !(memflags & MEMF_no_scrub);
+
+    spin_lock(&heap_lock);
+
+    for ( i = 0; i < domain_num_llc_colors(d); i++ )
+    {
+        unsigned long free = free_colored_pages[domain_llc_color(d, i)];
+
+        if ( free > max )
+        {
+            color = domain_llc_color(d, i);
+            pg = page_list_first(color_heap(color));
+            max = free;
+        }
+    }
+
+    if ( !pg )
+    {
+        spin_unlock(&heap_lock);
+        return NULL;
+    }
+
+    pg->count_info = PGC_state_inuse | PGC_colored |
+                     (pg->count_info & PGC_need_scrub);
+    free_colored_pages[color]--;
+    page_list_del(pg, color_heap(color));
+
+    if ( !(memflags & MEMF_no_tlbflush) )
+        accumulate_tlbflush(&need_tlbflush, pg, &tlbflush_timestamp);
+
+    init_free_page_fields(pg);
+
+    spin_unlock(&heap_lock);
+
+    if ( test_and_clear_bit(_PGC_need_scrub, &pg->count_info) && scrub )
+        scrub_one_page(pg);
+    else if ( scrub )
+        check_one_page(pg);
+
+    if ( need_tlbflush )
+        filtered_flush_tlb_mask(tlbflush_timestamp);
+
+    flush_page_to_ram(mfn_x(page_to_mfn(pg)),
+                      !(memflags & MEMF_no_icache_flush));
+
+    return pg;
+}
+
+void __init init_color_heap_pages(struct page_info *pg, unsigned long nr_pages)
+{
+    unsigned int i;
+    bool need_scrub = (system_state < SYS_STATE_active &&
+                       opt_bootscrub == BOOTSCRUB_IDLE);
+
+    if ( buddy_alloc_size )
+    {
+        unsigned long buddy_pages = min(PFN_DOWN(buddy_alloc_size), nr_pages);
+
+        init_heap_pages(pg, buddy_pages);
+        nr_pages -= buddy_pages;
+        buddy_alloc_size -= buddy_pages << PAGE_SHIFT;
+        pg += buddy_pages;
+    }
+
+    if ( !_color_heap )
+    {
+        unsigned int nr_colors = get_nr_llc_colors();
+
+        _color_heap = xmalloc_array(struct page_list_head, nr_colors);
+        free_colored_pages = xzalloc_array(unsigned long, nr_colors);
+        if ( !_color_heap || !free_colored_pages )
+            panic("Can't allocate colored heap. Buddy reserved size is too low");
+
+        for ( i = 0; i < nr_colors; i++ )
+            INIT_PAGE_LIST_HEAD(color_heap(i));
+    }
+
+    if ( nr_pages )
+        printk(XENLOG_DEBUG
+               "Init color heap with %lu pages starting from: %#"PRIx64"\n",
+               nr_pages, page_to_maddr(pg));
+
+    for ( i = 0; i < nr_pages; i++ )
+        free_color_heap_page(&pg[i], need_scrub);
+}
+
+void dump_color_heap(void)
+{
+    unsigned int color;
+
+    printk("Dumping color heap info\n");
+    for ( color = 0; color < get_nr_llc_colors(); color++ )
+        if ( free_colored_pages[color] > 0 )
+            printk("Color heap[%u]: %lu pages\n",
+                   color, free_colored_pages[color]);
+}
+
 void __init end_boot_allocator(void)
 {
     unsigned int i;
@@ -1965,7 +2126,13 @@ void __init end_boot_allocator(void)
     for ( i = nr_bootmem_regions; i-- > 0; )
     {
         struct bootmem_region *r = &bootmem_region_list[i];
-        if ( r->s < r->e )
+
+        if ( r->s >= r->e )
+            continue;
+
+        if ( llc_coloring_enabled )
+            init_color_heap_pages(mfn_to_page(_mfn(r->s)), r->e - r->s);
+        else
             init_heap_pages(mfn_to_page(_mfn(r->s)), r->e - r->s);
     }
     nr_bootmem_regions = 0;
@@ -2461,7 +2628,14 @@ struct page_info *alloc_domheap_pages(
     if ( memflags & MEMF_no_owner )
         memflags |= MEMF_no_refcount;
 
-    if ( !dma_bitsize )
+    /* Only domains are supported for coloring */
+    if ( d && is_domain_llc_colored(d) )
+    {
+        /* Colored allocation must be done on 0 order */
+        if ( order || (pg = alloc_color_heap_page(memflags, d)) == NULL )
+            return NULL;
+    }
+    else if ( !dma_bitsize )
         memflags &= ~MEMF_no_dma;
     else if ( (dma_zone = bits_to_zone(dma_bitsize)) < zone_hi )
         pg = alloc_heap_pages(dma_zone + 1, zone_hi, order, memflags, d);
@@ -2486,7 +2660,10 @@ struct page_info *alloc_domheap_pages(
         }
         if ( assign_page(pg, order, d, memflags) )
         {
-            free_heap_pages(pg, order, memflags & MEMF_no_scrub);
+            if ( pg->count_info & PGC_colored )
+                free_color_heap_page(pg, memflags & MEMF_no_scrub);
+            else
+                free_heap_pages(pg, order, memflags & MEMF_no_scrub);
             return NULL;
         }
     }
@@ -2569,7 +2746,10 @@ void free_domheap_pages(struct page_info *pg, unsigned int order)
             scrub = 1;
         }
 
-        free_heap_pages(pg, order, scrub);
+        if ( pg->count_info & PGC_colored )
+            free_color_heap_page(pg, scrub);
+        else
+            free_heap_pages(pg, order, scrub);
     }
 
     if ( drop_dom_ref )
@@ -2676,6 +2856,9 @@ static void cf_check dump_heap(unsigned char key)
             continue;
         printk("Node %d has %lu unscrubbed pages\n", i, node_need_scrub[i]);
     }
+
+    if ( llc_coloring_enabled )
+        dump_color_heap();
 }
 
 static __init int cf_check register_heap_trigger(void)
diff --git a/xen/include/xen/llc-coloring.h b/xen/include/xen/llc-coloring.h
index fa2edc8ad8..7cd481e955 100644
--- a/xen/include/xen/llc-coloring.h
+++ b/xen/include/xen/llc-coloring.h
@@ -36,6 +36,10 @@ void domain_dump_llc_colors(struct domain *d);
 int domain_set_llc_colors_domctl(struct domain *d,
                                  const struct xen_domctl_set_llc_colors *config);
 
+struct page_info;
+unsigned int page_to_llc_color(const struct page_info *pg);
+unsigned int get_nr_llc_colors(void);
+
 #endif /* __COLORING_H__ */
 
 /*
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Tue Jan 02 09:51:59 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 02 Jan 2024 09:51:59 +0000
Received: from list by lists.xenproject.org with outflank-mailman.660570.1030138 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rKbRH-00006y-Aa; Tue, 02 Jan 2024 09:51:59 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 660570.1030138; Tue, 02 Jan 2024 09:51:59 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rKbRG-00004y-Pa; Tue, 02 Jan 2024 09:51:58 +0000
Received: by outflank-mailman (input) for mailman id 660570;
 Tue, 02 Jan 2024 09:51:57 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=mpFB=IM=minervasys.tech=carlo.nonato@srs-se1.protection.inumbo.net>)
 id 1rKbRF-0006VR-Dt
 for xen-devel@lists.xenproject.org; Tue, 02 Jan 2024 09:51:57 +0000
Received: from mail-ed1-x536.google.com (mail-ed1-x536.google.com
 [2a00:1450:4864:20::536])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 90d9161f-a954-11ee-98ef-6d05b1d4d9a1;
 Tue, 02 Jan 2024 10:51:56 +0100 (CET)
Received: by mail-ed1-x536.google.com with SMTP id
 4fb4d7f45d1cf-556431c7d51so1221806a12.2
 for <xen-devel@lists.xenproject.org>; Tue, 02 Jan 2024 01:51:56 -0800 (PST)
Received: from carlo-ubuntu.minervasys.tech (nonato.mo54.unimo.it.
 [155.185.85.8]) by smtp.gmail.com with ESMTPSA id
 s4-20020a1709066c8400b00a1f7ab65d3fsm11541845ejr.131.2024.01.02.01.51.55
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 02 Jan 2024 01:51:55 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 90d9161f-a954-11ee-98ef-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=minervasys-tech.20230601.gappssmtp.com; s=20230601; t=1704189116; x=1704793916; darn=lists.xenproject.org;
        h=content-transfer-encoding:mime-version:references:in-reply-to
         :message-id:date:subject:cc:to:from:from:to:cc:subject:date
         :message-id:reply-to;
        bh=O+nY1AcQoCECW9cvYTyCa0KuWYpxftrNLY7zKkG+lX0=;
        b=p6VmLlhs+6VMCbJpQVSixQtlUe1Oi/JKJPsU1NYopCtF2sJotzmkVfKuzWkl671LCv
         po14ttvQCW15jRP72qS6GhyEhjB6wefiN91JpzK58NGqRL8CXwzFfAms2J8HDWt36HiA
         VHd3luFdG7a2nHwSUThJJ4+A019YAtZYoPxG9XU7tBu7Cp4v4qACUe3DaZdO04MDiPVg
         p4r9cFtRWJ2DYa9Wto4kXzLXYQJTfGPOTGSwY3XeKywR836k5FQpNNQUhqg8/YV9bMOb
         Gw7g6i7SU38fjcqx43vL6mfQLyIDThvUJQ9tbbG5Wj2R3E4jq61bWE7UyCfyLn9b5/mq
         3HLA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704189116; x=1704793916;
        h=content-transfer-encoding:mime-version:references:in-reply-to
         :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to;
        bh=O+nY1AcQoCECW9cvYTyCa0KuWYpxftrNLY7zKkG+lX0=;
        b=HDLId8AAinwNaupFWMNuP7SjyupgmRp5Pf5JMRQfNRJwGqptuNkeV9pQkQ0pF2TWcI
         N191fTFnK4d8nfAXmElqFQgA89FJihy+/1PI4kyAHiRWVZkR0T6wW6LhVJ5ajR0QlBBY
         zD5iRcGV4M5zPsiQylBCJUNNKmpiUWigtuDbgFL9jN5LxmnvGQAPOrKJTqmFc6o6uFNg
         sY2Or7dm439u3Qh39D+aiP8X9AFwFdN4h7UeY2nNlBB3/zJxeUZ23Iz6ky331r36V+ss
         Ft4ggehmuLBQaDZrlxTvLBU0TsEuhUky4gwfHP646Kgkgtr73d5NjD4jlHtItJAWXDTw
         vtGQ==
X-Gm-Message-State: AOJu0YynuSRSJv46kxTnyp/7BlNugnQE+pgZmE/Dzui+k5xN0ALgIRus
	PDXGc5hZPkVA7rCbNI02/SSORD0ve/82z8uxAB1/QCpEtO0=
X-Google-Smtp-Source: AGHT+IH4y/zq1O7BDpjHBHIcYJ/XVuHSLzMuDKRzUA0tlTTyF5q1wpx+WPkHpbSnn0Tf82YWSlUSVg==
X-Received: by 2002:a17:906:1d6:b0:a26:8dee:a601 with SMTP id 22-20020a17090601d600b00a268deea601mr4140269ejj.247.1704189116239;
        Tue, 02 Jan 2024 01:51:56 -0800 (PST)
From: Carlo Nonato <carlo.nonato@minervasys.tech>
To: xen-devel@lists.xenproject.org
Cc: Luca Miccio <lucmiccio@gmail.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	George Dunlap <george.dunlap@citrix.com>,
	Jan Beulich <jbeulich@suse.com>,
	Julien Grall <julien@xen.org>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Wei Liu <wl@xen.org>,
	Bertrand Marquis <bertrand.marquis@arm.com>,
	Michal Orzel <michal.orzel@amd.com>,
	Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
	Marco Solieri <marco.solieri@minervasys.tech>,
	Carlo Nonato <carlo.nonato@minervasys.tech>
Subject: [PATCH v5 12/13] xen/arm: add Xen cache colors command line parameter
Date: Tue,  2 Jan 2024 10:51:37 +0100
Message-Id: <20240102095138.17933-13-carlo.nonato@minervasys.tech>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20240102095138.17933-1-carlo.nonato@minervasys.tech>
References: <20240102095138.17933-1-carlo.nonato@minervasys.tech>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

From: Luca Miccio <lucmiccio@gmail.com>

This commit adds a new command line parameter to configure Xen cache colors.
These colors can be dumped with the cache coloring info debug-key.

By default, Xen uses the first color.
Benchmarking the VM interrupt response time provides an estimation of
LLC usage by Xen's most latency-critical runtime task. Results on Arm
Cortex-A53 on Xilinx Zynq UltraScale+ XCZU9EG show that one color, which
reserves 64 KiB of L2, is enough to attain best responsiveness.

More colors are instead very likely to be needed on processors whose L1
cache is physically-indexed and physically-tagged, such as Cortex-A57.
In such cases, coloring applies to L1 also, and there typically are two
distinct L1-colors. Therefore, reserving only one color for Xen would
senselessly partitions a cache memory that is already private, i.e.
underutilize it. The default amount of Xen colors is thus set to one.

Signed-off-by: Luca Miccio <lucmiccio@gmail.com>
Signed-off-by: Marco Solieri <marco.solieri@minervasys.tech>
Signed-off-by: Carlo Nonato <carlo.nonato@minervasys.tech>
---
 docs/misc/xen-command-line.pandoc | 10 ++++++++++
 xen/arch/arm/llc-coloring.c       | 29 +++++++++++++++++++++++++++++
 2 files changed, 39 insertions(+)

diff --git a/docs/misc/xen-command-line.pandoc b/docs/misc/xen-command-line.pandoc
index 163fe7bcb1..f983f22796 100644
--- a/docs/misc/xen-command-line.pandoc
+++ b/docs/misc/xen-command-line.pandoc
@@ -2877,6 +2877,16 @@ mode.
 **WARNING: `x2apic_phys` is deprecated and superseded by `x2apic-mode`.
 The latter takes precedence if both are set.**
 
+### xen-llc-colors (arm64)
+> `= List of [ <integer> | <integer>-<integer> ]`
+
+> Default: `0: the lowermost color`
+
+Specify Xen LLC color configuration. This options is available only when
+`CONFIG_LLC_COLORING` is enabled.
+Two colors are most likely needed on platforms where private caches are
+physically indexed, e.g. the L1 instruction cache of the Arm Cortex-A57.
+
 ### xenheap_megabytes (arm32)
 > `= <size>`
 
diff --git a/xen/arch/arm/llc-coloring.c b/xen/arch/arm/llc-coloring.c
index 526129cc43..99ea69ad39 100644
--- a/xen/arch/arm/llc-coloring.c
+++ b/xen/arch/arm/llc-coloring.c
@@ -18,6 +18,9 @@
 #include <asm/processor.h>
 #include <asm/sysregs.h>
 
+#define XEN_DEFAULT_COLOR       0
+#define XEN_DEFAULT_NUM_COLORS  1
+
 bool __ro_after_init llc_coloring_enabled;
 boolean_param("llc-coloring", llc_coloring_enabled);
 
@@ -30,6 +33,9 @@ static unsigned int __ro_after_init nr_colors = CONFIG_NR_LLC_COLORS;
 static unsigned int __ro_after_init dom0_colors[CONFIG_NR_LLC_COLORS];
 static unsigned int __ro_after_init dom0_num_colors;
 
+static unsigned int __ro_after_init xen_colors[CONFIG_NR_LLC_COLORS];
+static unsigned int __ro_after_init xen_num_colors;
+
 #define mfn_color_mask              (nr_colors - 1)
 #define mfn_to_color(mfn)           (mfn_x(mfn) & mfn_color_mask)
 
@@ -87,6 +93,12 @@ static int __init parse_dom0_colors(const char *s)
 }
 custom_param("dom0-llc-colors", parse_dom0_colors);
 
+static int __init parse_xen_colors(const char *s)
+{
+    return parse_color_config(s, xen_colors, &xen_num_colors);
+}
+custom_param("xen-llc-colors", parse_xen_colors);
+
 /* Return the LLC way size by probing the hardware */
 static unsigned int __init get_llc_way_size(void)
 {
@@ -161,6 +173,8 @@ static void dump_coloring_info(unsigned char key)
     printk("'%c' pressed -> dumping LLC coloring general info\n", key);
     printk("LLC way size: %u KiB\n", llc_way_size >> 10);
     printk("Number of LLC colors supported: %u\n", nr_colors);
+    printk("Xen has %u LLC colors: ", xen_num_colors);
+    print_colors(xen_colors, xen_num_colors);
 }
 
 static bool check_colors(unsigned int *colors, unsigned int num_colors)
@@ -217,6 +231,21 @@ bool __init llc_coloring_init(void)
         return false;
     }
 
+    if ( !xen_num_colors )
+    {
+        printk(XENLOG_WARNING
+               "Xen LLC color config not found. Using default color: %u\n",
+               XEN_DEFAULT_COLOR);
+        xen_colors[0] = XEN_DEFAULT_COLOR;
+        xen_num_colors = XEN_DEFAULT_NUM_COLORS;
+    }
+
+    if ( !check_colors(xen_colors, xen_num_colors) )
+    {
+        printk(XENLOG_ERR "Bad LLC color config for Xen\n");
+        return false;
+    }
+
     register_keyhandler('K', dump_coloring_info, "dump LLC coloring info", 1);
 
     return true;
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Tue Jan 02 09:52:00 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 02 Jan 2024 09:52:00 +0000
Received: from list by lists.xenproject.org with outflank-mailman.660571.1030146 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rKbRI-0000O6-57; Tue, 02 Jan 2024 09:52:00 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 660571.1030146; Tue, 02 Jan 2024 09:52:00 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rKbRH-0000Lk-Rx; Tue, 02 Jan 2024 09:51:59 +0000
Received: by outflank-mailman (input) for mailman id 660571;
 Tue, 02 Jan 2024 09:51:58 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=mpFB=IM=minervasys.tech=carlo.nonato@srs-se1.protection.inumbo.net>)
 id 1rKbRG-00060C-2D
 for xen-devel@lists.xenproject.org; Tue, 02 Jan 2024 09:51:58 +0000
Received: from mail-ej1-x633.google.com (mail-ej1-x633.google.com
 [2a00:1450:4864:20::633])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 9071b3ae-a954-11ee-9b0f-b553b5be7939;
 Tue, 02 Jan 2024 10:51:56 +0100 (CET)
Received: by mail-ej1-x633.google.com with SMTP id
 a640c23a62f3a-a28005f9b9cso114748666b.3
 for <xen-devel@lists.xenproject.org>; Tue, 02 Jan 2024 01:51:56 -0800 (PST)
Received: from carlo-ubuntu.minervasys.tech (nonato.mo54.unimo.it.
 [155.185.85.8]) by smtp.gmail.com with ESMTPSA id
 s4-20020a1709066c8400b00a1f7ab65d3fsm11541845ejr.131.2024.01.02.01.51.54
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 02 Jan 2024 01:51:55 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 9071b3ae-a954-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=minervasys-tech.20230601.gappssmtp.com; s=20230601; t=1704189115; x=1704793915; darn=lists.xenproject.org;
        h=content-transfer-encoding:mime-version:references:in-reply-to
         :message-id:date:subject:cc:to:from:from:to:cc:subject:date
         :message-id:reply-to;
        bh=PcO0kEIMg/LgcpSllNj/odMrO/ou7iqngmDP7yYGSAQ=;
        b=AXfFNeXEd/5wC4Ze1yGgN+ciYn4rqmPNUrJdlXLBpjDwGqCqW0nv7/iTTc5ngiS5LE
         yfw51DbInyM9rkg1zlMyN1dff5Qr6AU0hgadWjgQBa6y1KnxcAZYJvLmuanWb6YATOVX
         8YU6fzWwwKLoEM2gvPDh2ZZ4/RuNuTaY+qn3Jc/vq7MD2KotZiHOeZ2EHlNCjj2VuhMv
         Hxbi+SpAQDavhN/LM1Ojyy29p1dMLidIx0K4TXPw9GKj+xtfhpjLcVrG8kYkiSPGlzNB
         6EswUsp52mDvDmQA2gh4PxCC4HkgyVe6GPKeOEWFczOVi0AX2zGM/u59WqG3UCEF8xDd
         OOiw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704189115; x=1704793915;
        h=content-transfer-encoding:mime-version:references:in-reply-to
         :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to;
        bh=PcO0kEIMg/LgcpSllNj/odMrO/ou7iqngmDP7yYGSAQ=;
        b=GD7/mRRWsNv/zN7LwIpiDbclvJXilaQS/GuSezymVafShtsRg7jiormPeLYkIZk3G4
         ydNxikPc1sJc//F1d8GW408HyrZoC04Jlc5fSkm3nu0fMM0VSSJ9Lz7jeSXRkiY1/BWM
         H1I1fwXzCzFzfjXNfb/wKHMGubqEUModHyk6YisQi5rQhxr9RGlJ3vBMJ/pXIL2poXs+
         Oje4wCZQ98czOGDC7hYD0q7vju5wAjh+ph378L5QUNvOxc41ixFb0K5iACSnu5BrmXHK
         hXU6EY4Yduu7V4yB+Swzt5yQAa6ImUPYcy6NnNGGSuK80wD6ItCO2WliIOw21x02NQuv
         Opnw==
X-Gm-Message-State: AOJu0Yy7xiPsucJja/J4wK2Ae+X4qQLrhB/39XvMMfuVyyd9TULADTIh
	vjNFFLQTmpTtUSritzDAh6hvkreegqiQKGv1g1t3lHrYZtU=
X-Google-Smtp-Source: AGHT+IGYJ/FbaOnnjGdfsmIIcCIEpyNdigCmNAnLVYN1SMaA0OWzdwtLOdGXGWIGV6865STxxqucYQ==
X-Received: by 2002:a17:906:1cd:b0:a26:db4e:955 with SMTP id 13-20020a17090601cd00b00a26db4e0955mr5915269ejj.64.1704189115261;
        Tue, 02 Jan 2024 01:51:55 -0800 (PST)
From: Carlo Nonato <carlo.nonato@minervasys.tech>
To: xen-devel@lists.xenproject.org
Cc: Carlo Nonato <carlo.nonato@minervasys.tech>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Julien Grall <julien@xen.org>,
	Bertrand Marquis <bertrand.marquis@arm.com>,
	Michal Orzel <michal.orzel@amd.com>,
	Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
	Marco Solieri <marco.solieri@minervasys.tech>
Subject: [PATCH v5 11/13] Revert "xen/arm: Remove unused BOOT_RELOC_VIRT_START"
Date: Tue,  2 Jan 2024 10:51:36 +0100
Message-Id: <20240102095138.17933-12-carlo.nonato@minervasys.tech>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20240102095138.17933-1-carlo.nonato@minervasys.tech>
References: <20240102095138.17933-1-carlo.nonato@minervasys.tech>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

This reverts commit 0c18fb76323bfb13615b6f13c98767face2d8097 (not clean).

This is not a clean revert since the rework of the memory layout, but it is
sufficiently similar to a clean one.
The only difference is that the BOOT_RELOC_VIRT_START must match the new
layout.

Cache coloring support for Xen needs to relocate Xen code and data in a new
colored physical space. The BOOT_RELOC_VIRT_START will be used as the virtual
base address for a temporary mapping to this new space.

Signed-off-by: Carlo Nonato <carlo.nonato@minervasys.tech>
Signed-off-by: Marco Solieri <marco.solieri@minervasys.tech>
---
 xen/arch/arm/include/asm/mmu/layout.h | 2 ++
 xen/arch/arm/mmu/setup.c              | 1 +
 2 files changed, 3 insertions(+)

diff --git a/xen/arch/arm/include/asm/mmu/layout.h b/xen/arch/arm/include/asm/mmu/layout.h
index eac7eef885..30031f74d9 100644
--- a/xen/arch/arm/include/asm/mmu/layout.h
+++ b/xen/arch/arm/include/asm/mmu/layout.h
@@ -74,6 +74,8 @@
 #define BOOT_FDT_VIRT_START     (FIXMAP_VIRT_START + FIXMAP_VIRT_SIZE)
 #define BOOT_FDT_VIRT_SIZE      _AT(vaddr_t, MB(4))
 
+#define BOOT_RELOC_VIRT_START   (BOOT_FDT_VIRT_START + BOOT_FDT_VIRT_SIZE)
+
 #ifdef CONFIG_LIVEPATCH
 #define LIVEPATCH_VMAP_START    (BOOT_FDT_VIRT_START + BOOT_FDT_VIRT_SIZE)
 #define LIVEPATCH_VMAP_SIZE    _AT(vaddr_t, MB(2))
diff --git a/xen/arch/arm/mmu/setup.c b/xen/arch/arm/mmu/setup.c
index d5264e51bc..37b6d230ad 100644
--- a/xen/arch/arm/mmu/setup.c
+++ b/xen/arch/arm/mmu/setup.c
@@ -69,6 +69,7 @@ static void __init __maybe_unused build_assertions(void)
     /* 2MB aligned regions */
     BUILD_BUG_ON(XEN_VIRT_START & ~SECOND_MASK);
     BUILD_BUG_ON(FIXMAP_ADDR(0) & ~SECOND_MASK);
+    BUILD_BUG_ON(BOOT_RELOC_VIRT_START & ~SECOND_MASK);
     /* 1GB aligned regions */
 #ifdef CONFIG_ARM_32
     BUILD_BUG_ON(XENHEAP_VIRT_START & ~FIRST_MASK);
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Tue Jan 02 09:52:01 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 02 Jan 2024 09:52:01 +0000
Received: from list by lists.xenproject.org with outflank-mailman.660572.1030160 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rKbRJ-0000rj-MS; Tue, 02 Jan 2024 09:52:01 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 660572.1030160; Tue, 02 Jan 2024 09:52:01 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rKbRJ-0000q7-Ez; Tue, 02 Jan 2024 09:52:01 +0000
Received: by outflank-mailman (input) for mailman id 660572;
 Tue, 02 Jan 2024 09:52:00 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=mpFB=IM=minervasys.tech=carlo.nonato@srs-se1.protection.inumbo.net>)
 id 1rKbRI-00060C-1Z
 for xen-devel@lists.xenproject.org; Tue, 02 Jan 2024 09:52:00 +0000
Received: from mail-ed1-x52f.google.com (mail-ed1-x52f.google.com
 [2a00:1450:4864:20::52f])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 9158e1f7-a954-11ee-9b0f-b553b5be7939;
 Tue, 02 Jan 2024 10:51:57 +0100 (CET)
Received: by mail-ed1-x52f.google.com with SMTP id
 4fb4d7f45d1cf-556ab26227cso13513a12.1
 for <xen-devel@lists.xenproject.org>; Tue, 02 Jan 2024 01:51:57 -0800 (PST)
Received: from carlo-ubuntu.minervasys.tech (nonato.mo54.unimo.it.
 [155.185.85.8]) by smtp.gmail.com with ESMTPSA id
 s4-20020a1709066c8400b00a1f7ab65d3fsm11541845ejr.131.2024.01.02.01.51.56
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 02 Jan 2024 01:51:56 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 9158e1f7-a954-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=minervasys-tech.20230601.gappssmtp.com; s=20230601; t=1704189117; x=1704793917; darn=lists.xenproject.org;
        h=content-transfer-encoding:mime-version:references:in-reply-to
         :message-id:date:subject:cc:to:from:from:to:cc:subject:date
         :message-id:reply-to;
        bh=WMy02P2ugeOoYavgONgNbpFFD/A3TCZgNfOsvu4lMaM=;
        b=luWMUfNaKy5Sw6h65LmChIMl9ZJegIknF5rvXezoy7SHX3/26symp4LE0EUi6l65Ni
         sY8vp3iY2Hy4a6nVsZJor2+1Jk/tUMMQe/S3f2EPGv9MpLILTRPq+PaN5i7MWTVsCE0A
         Ud4VT0nWUipWKym7UdbPFNdyRX0B/dJHk242oCwxExb/kCiabBebLFbOq5Jks2E3zLB0
         Di7crGPu9w9xSsHqO3h88yVfBAzI+ZL701t2JQsS2P0+mYeC/2lCtCwPXe0IJdRYousd
         Oauv4yXjuRNwoxR1bV0zqiIs/BIVQ1d6l+JpDNuN/QPQFFBV+L6mC77Qoowq2P8KI7zy
         dH5w==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704189117; x=1704793917;
        h=content-transfer-encoding:mime-version:references:in-reply-to
         :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to;
        bh=WMy02P2ugeOoYavgONgNbpFFD/A3TCZgNfOsvu4lMaM=;
        b=MoX66jSp50n1IOeprvlNcuf3fEd3hcpaKLXEFt4W7wQ4izeHEXiAJ44z024b2pkM46
         dK1Q8y053COD/Dcg+izg3KqS6BuRr9Ppvu3bpC+MB2CQaL7LSTIIGKXBJWh65iOBOW/A
         pGRVPHNXFTTcGU9v6+fpGfo8gGeN3ZeILMxv7giKyjPAMppH7G4j1seOGeQQGx4ZEcoY
         BHe1VLAyFVLch/bVGWYOuky6ZuK1rQ1M2kSCxKtB9uWVNlm8XvnTCOPLAhP1oGtyV9uQ
         hjvmQh7f+sDvqfr2/w4R3MwCVWkGULrjzmBB9U1rJdhCcY1FuVvzGsIRIj409AHJHPl0
         aj5Q==
X-Gm-Message-State: AOJu0YxUVr99bhoxnConZB13w6k25f4kyZFe8a7Cxse7zhL74x4dV/XT
	6y+bY2jJW2nYwg4KBoqqP5lzF/9djPyk83N4Kby2i8D9Cvg=
X-Google-Smtp-Source: AGHT+IGNcjW25nK1HrJzJj+6Mu5WuA3NQdYyTlLCLPzh0swT7iChnL+TA2HS96sL+pj4fLbJPc+VKA==
X-Received: by 2002:a17:906:3612:b0:a26:97dd:2110 with SMTP id q18-20020a170906361200b00a2697dd2110mr4943796ejb.62.1704189116972;
        Tue, 02 Jan 2024 01:51:56 -0800 (PST)
From: Carlo Nonato <carlo.nonato@minervasys.tech>
To: xen-devel@lists.xenproject.org
Cc: Carlo Nonato <carlo.nonato@minervasys.tech>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Julien Grall <julien@xen.org>,
	Bertrand Marquis <bertrand.marquis@arm.com>,
	Michal Orzel <michal.orzel@amd.com>,
	Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
	Marco Solieri <marco.solieri@minervasys.tech>
Subject: [PATCH v5 13/13] xen/arm: add cache coloring support for Xen
Date: Tue,  2 Jan 2024 10:51:38 +0100
Message-Id: <20240102095138.17933-14-carlo.nonato@minervasys.tech>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20240102095138.17933-1-carlo.nonato@minervasys.tech>
References: <20240102095138.17933-1-carlo.nonato@minervasys.tech>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

This commit adds the cache coloring support for Xen own physical space.

It extends the implementation of setup_pagetables() to make use of Xen
cache coloring configuration. Page tables construction is essentially the
same except for the fact that PTEs point to a new temporary mapped,
physically colored space.

The temporary mapping is also used to relocate Xen to the new physical
space starting at the address taken from the old get_xen_paddr() function
which is brought back for the occasion.
The temporary mapping is finally converted to a mapping of the "old"
(meaning the original physical space) Xen code, so that the boot CPU can
actually address the variables and functions used by secondary CPUs until
they enable the MMU. This happens when the boot CPU needs to bring up other
CPUs (psci.c and smpboot.c) and when the TTBR value is passed to them
(prepare_secondary_mm()).

Finally, since the alternative framework needs to remap the Xen text and
inittext sections, this operation must be done in a coloring-aware way.
The function xen_remap_colored() is introduced for that.

Signed-off-by: Carlo Nonato <carlo.nonato@minervasys.tech>
Signed-off-by: Marco Solieri <marco.solieri@minervasys.tech>
---
v5:
- FIXME: consider_modules copy pasted since it got moved
v4:
- removed set_value_for_secondary() because it was wrongly cleaning cache
- relocate_xen() now calls switch_ttbr_id()
---
 xen/arch/arm/alternative.c              |   9 +-
 xen/arch/arm/arm64/mmu/head.S           |  48 +++++++
 xen/arch/arm/arm64/mmu/mm.c             |  26 +++-
 xen/arch/arm/include/asm/llc-coloring.h |  16 +++
 xen/arch/arm/include/asm/mm.h           |   7 +-
 xen/arch/arm/llc-coloring.c             |  44 +++++++
 xen/arch/arm/mmu/setup.c                |  82 +++++++++++-
 xen/arch/arm/mmu/smpboot.c              |  11 +-
 xen/arch/arm/psci.c                     |   9 +-
 xen/arch/arm/setup.c                    | 165 +++++++++++++++++++++++-
 xen/arch/arm/smpboot.c                  |   9 +-
 11 files changed, 406 insertions(+), 20 deletions(-)

diff --git a/xen/arch/arm/alternative.c b/xen/arch/arm/alternative.c
index 016e66978b..54cbc2afad 100644
--- a/xen/arch/arm/alternative.c
+++ b/xen/arch/arm/alternative.c
@@ -9,6 +9,7 @@
 #include <xen/init.h>
 #include <xen/types.h>
 #include <xen/kernel.h>
+#include <xen/llc-coloring.h>
 #include <xen/mm.h>
 #include <xen/vmap.h>
 #include <xen/smp.h>
@@ -209,8 +210,12 @@ void __init apply_alternatives_all(void)
      * The text and inittext section are read-only. So re-map Xen to
      * be able to patch the code.
      */
-    xenmap = __vmap(&xen_mfn, 1U << xen_order, 1, 1, PAGE_HYPERVISOR,
-                    VMAP_DEFAULT);
+    if ( llc_coloring_enabled )
+        xenmap = xen_remap_colored(xen_mfn, xen_size);
+    else
+        xenmap = __vmap(&xen_mfn, 1U << xen_order, 1, 1, PAGE_HYPERVISOR,
+                        VMAP_DEFAULT);
+
     /* Re-mapping Xen is not expected to fail during boot. */
     BUG_ON(!xenmap);
 
diff --git a/xen/arch/arm/arm64/mmu/head.S b/xen/arch/arm/arm64/mmu/head.S
index 10774f30e4..6f0cc72897 100644
--- a/xen/arch/arm/arm64/mmu/head.S
+++ b/xen/arch/arm/arm64/mmu/head.S
@@ -419,6 +419,54 @@ fail:   PRINT("- Boot failed -\r\n")
         b     1b
 ENDPROC(fail)
 
+/* Copy Xen to new location and switch TTBR
+ * x0    ttbr
+ * x1    source address
+ * x2    destination address
+ * x3    length
+ *
+ * Source and destination must be word aligned, length is rounded up
+ * to a 16 byte boundary.
+ *
+ * MUST BE VERY CAREFUL when saving things to RAM over the copy */
+ENTRY(relocate_xen)
+        /* Copy 16 bytes at a time using:
+         *   x9: counter
+         *   x10: data
+         *   x11: data
+         *   x12: source
+         *   x13: destination
+         */
+        mov     x9, x3
+        mov     x12, x1
+        mov     x13, x2
+
+1:      ldp     x10, x11, [x12], #16
+        stp     x10, x11, [x13], #16
+
+        subs    x9, x9, #16
+        bgt     1b
+
+        /* Flush destination from dcache using:
+         * x9: counter
+         * x10: step
+         * x11: vaddr
+         */
+        dsb   sy        /* So the CPU issues all writes to the range */
+
+        mov   x9, x3
+        ldr   x10, =dcache_line_bytes /* x10 := step */
+        ldr   x10, [x10]
+        mov   x11, x2
+
+1:      dc    cvac, x11
+
+        add   x11, x11, x10
+        subs  x9, x9, x10
+        bgt   1b
+
+        b switch_ttbr_id
+
 /*
  * Switch TTBR
  *
diff --git a/xen/arch/arm/arm64/mmu/mm.c b/xen/arch/arm/arm64/mmu/mm.c
index d2651c9486..5a26d64ab7 100644
--- a/xen/arch/arm/arm64/mmu/mm.c
+++ b/xen/arch/arm/arm64/mmu/mm.c
@@ -1,6 +1,7 @@
 /* SPDX-License-Identifier: GPL-2.0 */
 
 #include <xen/init.h>
+#include <xen/llc-coloring.h>
 #include <xen/mm.h>
 #include <xen/pfn.h>
 
@@ -125,27 +126,44 @@ void update_identity_mapping(bool enable)
 }
 
 extern void switch_ttbr_id(uint64_t ttbr);
+extern void relocate_xen(uint64_t ttbr, void *src, void *dst, size_t len);
 
 typedef void (switch_ttbr_fn)(uint64_t ttbr);
+typedef void (relocate_xen_fn)(uint64_t ttbr, void *src, void *dst, size_t len);
 
 void __init switch_ttbr(uint64_t ttbr)
 {
-    vaddr_t id_addr = virt_to_maddr(switch_ttbr_id);
-    switch_ttbr_fn *fn = (switch_ttbr_fn *)id_addr;
+    vaddr_t vaddr, id_addr;
     lpae_t pte;
 
+    if ( llc_coloring_enabled )
+        vaddr = (vaddr_t)relocate_xen;
+    else
+        vaddr = (vaddr_t)switch_ttbr_id;
+
+    id_addr = virt_to_maddr(vaddr);
+
     /* Enable the identity mapping in the boot page tables */
     update_identity_mapping(true);
 
     /* Enable the identity mapping in the runtime page tables */
-    pte = pte_of_xenaddr((vaddr_t)switch_ttbr_id);
+    pte = pte_of_xenaddr(vaddr);
     pte.pt.table = 1;
     pte.pt.xn = 0;
     pte.pt.ro = 1;
     write_pte(&xen_third_id[third_table_offset(id_addr)], pte);
 
     /* Switch TTBR */
-    fn(ttbr);
+    if ( llc_coloring_enabled )
+    {
+        relocate_xen_fn *fn = (relocate_xen_fn *)id_addr;
+        fn(ttbr, _start, (void *)BOOT_RELOC_VIRT_START, _end - _start);
+    }
+    else
+    {
+        switch_ttbr_fn *fn = (switch_ttbr_fn *)id_addr;
+        fn(ttbr);
+    }
 
     /*
      * Disable the identity mapping in the runtime page tables.
diff --git a/xen/arch/arm/include/asm/llc-coloring.h b/xen/arch/arm/include/asm/llc-coloring.h
index 5f9b0a8121..4d6071e50b 100644
--- a/xen/arch/arm/include/asm/llc-coloring.h
+++ b/xen/arch/arm/include/asm/llc-coloring.h
@@ -12,11 +12,27 @@
 #define __ASM_ARM_COLORING_H__
 
 #include <xen/init.h>
+#include <xen/mm-frame.h>
+
+/**
+ * Iterate over each Xen mfn in the colored space.
+ * @mfn:    the current mfn. The first non colored mfn must be provided as the
+ *          starting point.
+ * @i:      loop index.
+ */
+#define for_each_xen_colored_mfn(mfn, i)        \
+    for ( i = 0, mfn = xen_colored_mfn(mfn);    \
+          i < (_end - _start) >> PAGE_SHIFT;    \
+          i++, mfn = xen_colored_mfn(mfn_add(mfn, 1)) )
 
 bool __init llc_coloring_init(void);
 int dom0_set_llc_colors(struct domain *d);
 int domain_set_llc_colors_from_str(struct domain *d, const char *str);
 
+paddr_t xen_colored_map_size(paddr_t size);
+mfn_t xen_colored_mfn(mfn_t mfn);
+void *xen_remap_colored(mfn_t xen_fn, paddr_t xen_size);
+
 #endif /* __ASM_ARM_COLORING_H__ */
 
 /*
diff --git a/xen/arch/arm/include/asm/mm.h b/xen/arch/arm/include/asm/mm.h
index 1829c559d6..311f092cf2 100644
--- a/xen/arch/arm/include/asm/mm.h
+++ b/xen/arch/arm/include/asm/mm.h
@@ -203,12 +203,17 @@ extern unsigned long frametable_base_pdx;
 
 #define PDX_GROUP_SHIFT SECOND_SHIFT
 
+#define virt_to_reloc_virt(virt) \
+    (((vaddr_t)virt) - XEN_VIRT_START + BOOT_RELOC_VIRT_START)
+
 /* Boot-time pagetable setup */
-extern void setup_pagetables(unsigned long boot_phys_offset);
+extern void setup_pagetables(unsigned long boot_phys_offset, paddr_t xen_paddr);
 /* Map FDT in boot pagetable */
 extern void *early_fdt_map(paddr_t fdt_paddr);
 /* Remove early mappings */
 extern void remove_early_mappings(void);
+/* Remove early LLC coloring mappings */
+extern void remove_llc_coloring_mappings(void);
 /* Prepare the memory subystem to bring-up the given secondary CPU */
 extern int prepare_secondary_mm(int cpu);
 /* Map a frame table to cover physical addresses ps through pe */
diff --git a/xen/arch/arm/llc-coloring.c b/xen/arch/arm/llc-coloring.c
index 99ea69ad39..f434efc45b 100644
--- a/xen/arch/arm/llc-coloring.c
+++ b/xen/arch/arm/llc-coloring.c
@@ -14,6 +14,7 @@
 #include <xen/llc-coloring.h>
 #include <xen/param.h>
 #include <xen/types.h>
+#include <xen/vmap.h>
 
 #include <asm/processor.h>
 #include <asm/sysregs.h>
@@ -38,6 +39,7 @@ static unsigned int __ro_after_init xen_num_colors;
 
 #define mfn_color_mask              (nr_colors - 1)
 #define mfn_to_color(mfn)           (mfn_x(mfn) & mfn_color_mask)
+#define mfn_set_color(mfn, color)   ((mfn_x(mfn) & ~mfn_color_mask) | (color))
 
 /*
  * Parse the coloring configuration given in the buf string, following the
@@ -354,6 +356,48 @@ unsigned int get_nr_llc_colors(void)
     return nr_colors;
 }
 
+paddr_t xen_colored_map_size(paddr_t size)
+{
+    return ROUNDUP(size * nr_colors, XEN_PADDR_ALIGN);
+}
+
+mfn_t xen_colored_mfn(mfn_t mfn)
+{
+    unsigned int i, color = mfn_to_color(mfn);
+
+    for( i = 0; i < xen_num_colors; i++ )
+    {
+        if ( color == xen_colors[i] )
+            return mfn;
+        else if ( color < xen_colors[i] )
+            return mfn_set_color(mfn, xen_colors[i]);
+    }
+
+    /* Jump to next color space (nr_colors mfns) and use the first color */
+    return mfn_set_color(mfn_add(mfn, nr_colors), xen_colors[0]);
+}
+
+void *xen_remap_colored(mfn_t xen_mfn, paddr_t xen_size)
+{
+    unsigned int i;
+    void *xenmap;
+    mfn_t *xen_colored_mfns;
+
+    xen_colored_mfns = xmalloc_array(mfn_t, xen_size >> PAGE_SHIFT);
+    if ( !xen_colored_mfns )
+        panic("Can't allocate LLC colored MFNs\n");
+
+    for_each_xen_colored_mfn( xen_mfn, i )
+    {
+        xen_colored_mfns[i] = xen_mfn;
+    }
+
+    xenmap = vmap(xen_colored_mfns, xen_size >> PAGE_SHIFT);
+    xfree(xen_colored_mfns);
+
+    return xenmap;
+}
+
 /*
  * Local variables:
  * mode: C
diff --git a/xen/arch/arm/mmu/setup.c b/xen/arch/arm/mmu/setup.c
index 37b6d230ad..66b674eeab 100644
--- a/xen/arch/arm/mmu/setup.c
+++ b/xen/arch/arm/mmu/setup.c
@@ -7,6 +7,7 @@
 
 #include <xen/init.h>
 #include <xen/libfdt/libfdt.h>
+#include <xen/llc-coloring.h>
 #include <xen/sizes.h>
 #include <xen/vmap.h>
 
@@ -39,6 +40,10 @@ DEFINE_PER_CPU(lpae_t *, xen_pgtable);
 static DEFINE_PAGE_TABLE(cpu0_pgtable);
 #endif
 
+#ifdef CONFIG_LLC_COLORING
+static DEFINE_PAGE_TABLE(xen_colored_temp);
+#endif
+
 /* Common pagetable leaves */
 /* Second level page table used to cover Xen virtual address space */
 static DEFINE_PAGE_TABLE(xen_second);
@@ -130,7 +135,12 @@ static void __init __maybe_unused build_assertions(void)
 
 lpae_t __init pte_of_xenaddr(vaddr_t va)
 {
-    paddr_t ma = va + phys_offset;
+    paddr_t ma;
+
+    if ( llc_coloring_enabled )
+        ma = virt_to_maddr(virt_to_reloc_virt(va));
+    else
+        ma = va + phys_offset;
 
     return mfn_to_xen_entry(maddr_to_mfn(ma), MT_NORMAL);
 }
@@ -216,11 +226,55 @@ static void xen_pt_enforce_wnx(void)
     flush_xen_tlb_local();
 }
 
+#ifdef CONFIG_LLC_COLORING
+static void __init create_llc_coloring_mappings(paddr_t xen_paddr)
+{
+    lpae_t pte;
+    unsigned int i;
+    mfn_t mfn = maddr_to_mfn(xen_paddr);
+
+    for_each_xen_colored_mfn( mfn, i )
+    {
+        pte = mfn_to_xen_entry(mfn, MT_NORMAL);
+        pte.pt.table = 1; /* level 3 mappings always have this bit set */
+        xen_colored_temp[i] = pte;
+    }
+
+    pte = mfn_to_xen_entry(virt_to_mfn(xen_colored_temp), MT_NORMAL);
+    pte.pt.table = 1;
+    write_pte(&boot_second[second_table_offset(BOOT_RELOC_VIRT_START)], pte);
+}
+
+void __init remove_llc_coloring_mappings(void)
+{
+    int rc;
+
+    /* destroy the _PAGE_BLOCK mapping */
+    rc = modify_xen_mappings(BOOT_RELOC_VIRT_START,
+                             BOOT_RELOC_VIRT_START + SZ_2M,
+                             _PAGE_BLOCK);
+    BUG_ON(rc);
+}
+#else
+static void __init create_llc_coloring_mappings(paddr_t xen_paddr) {}
+void __init remove_llc_coloring_mappings(void) {}
+#endif /* CONFIG_LLC_COLORING */
+
 /*
- * Boot-time pagetable setup.
+ * Boot-time pagetable setup with coloring support
  * Changes here may need matching changes in head.S
+ *
+ * The coloring support consists of:
+ * - Create a temporary colored mapping that conforms to Xen color selection.
+ * - pte_of_xenaddr takes care of translating the virtual addresses to the
+ *   new colored physical space and the returns the pte, so that the page table
+ *   initialization can remain the same.
+ * - Copy Xen to the new colored physical space by exploiting the temporary
+ *   mapping.
+ * - Update TTBR0_EL2 with the new root page table address.
  */
-void __init setup_pagetables(unsigned long boot_phys_offset)
+
+void __init setup_pagetables(unsigned long boot_phys_offset, paddr_t xen_paddr)
 {
     uint64_t ttbr;
     lpae_t pte, *p;
@@ -228,6 +282,9 @@ void __init setup_pagetables(unsigned long boot_phys_offset)
 
     phys_offset = boot_phys_offset;
 
+    if ( llc_coloring_enabled )
+        create_llc_coloring_mappings(xen_paddr);
+
     arch_setup_page_tables();
 
 #ifdef CONFIG_ARM_64
@@ -281,10 +338,13 @@ void __init setup_pagetables(unsigned long boot_phys_offset)
     pte.pt.table = 1;
     xen_second[second_table_offset(FIXMAP_ADDR(0))] = pte;
 
+    if ( llc_coloring_enabled )
+        ttbr = virt_to_maddr(virt_to_reloc_virt(xen_pgtable));
+    else
 #ifdef CONFIG_ARM_64
-    ttbr = (uintptr_t) xen_pgtable + phys_offset;
+        ttbr = (uintptr_t) xen_pgtable + phys_offset;
 #else
-    ttbr = (uintptr_t) cpu0_pgtable + phys_offset;
+        ttbr = (uintptr_t) cpu0_pgtable + phys_offset;
 #endif
 
     switch_ttbr(ttbr);
@@ -294,6 +354,18 @@ void __init setup_pagetables(unsigned long boot_phys_offset)
 #ifdef CONFIG_ARM_32
     per_cpu(xen_pgtable, 0) = cpu0_pgtable;
 #endif
+
+    /*
+    * Keep original Xen memory mapped because secondary CPUs still point to it
+    * and a few variables needs to be accessed by the master CPU in order to
+    * let them boot. This mapping will also replace the one created at the
+    * beginning of setup_pagetables.
+    */
+    if ( llc_coloring_enabled )
+        map_pages_to_xen(BOOT_RELOC_VIRT_START,
+                         maddr_to_mfn(XEN_VIRT_START + phys_offset),
+                         SZ_2M >> PAGE_SHIFT, PAGE_HYPERVISOR_RW | _PAGE_BLOCK);
+
 }
 
 void *__init arch_vmap_virt_end(void)
diff --git a/xen/arch/arm/mmu/smpboot.c b/xen/arch/arm/mmu/smpboot.c
index b6fc0aae07..a69183ec88 100644
--- a/xen/arch/arm/mmu/smpboot.c
+++ b/xen/arch/arm/mmu/smpboot.c
@@ -6,6 +6,7 @@
  */
 
 #include <xen/domain_page.h>
+#include <xen/llc-coloring.h>
 
 #include <asm/setup.h>
 
@@ -71,14 +72,20 @@ static void clear_boot_pagetables(void)
 #ifdef CONFIG_ARM_64
 int prepare_secondary_mm(int cpu)
 {
+    uint64_t *init_ttbr_addr = &init_ttbr;
+
     clear_boot_pagetables();
 
+    if ( llc_coloring_enabled )
+        init_ttbr_addr = (uint64_t *)virt_to_reloc_virt(&init_ttbr);
+
     /*
      * Set init_ttbr for this CPU coming up. All CPUs share a single setof
      * pagetables, but rewrite it each time for consistency with 32 bit.
      */
-    init_ttbr = virt_to_maddr(xen_pgtable);
-    clean_dcache(init_ttbr);
+    *init_ttbr_addr = virt_to_maddr(xen_pgtable);
+    clean_dcache(*init_ttbr_addr);
+
     return 0;
 }
 #else
diff --git a/xen/arch/arm/psci.c b/xen/arch/arm/psci.c
index 695d2fa1f1..23e298c477 100644
--- a/xen/arch/arm/psci.c
+++ b/xen/arch/arm/psci.c
@@ -11,6 +11,7 @@
 
 #include <xen/types.h>
 #include <xen/init.h>
+#include <xen/llc-coloring.h>
 #include <xen/mm.h>
 #include <xen/smp.h>
 #include <asm/cpufeature.h>
@@ -39,9 +40,13 @@ static uint32_t psci_cpu_on_nr;
 int call_psci_cpu_on(int cpu)
 {
     struct arm_smccc_res res;
+    vaddr_t init_secondary_addr = (vaddr_t)init_secondary;
 
-    arm_smccc_smc(psci_cpu_on_nr, cpu_logical_map(cpu), __pa(init_secondary),
-                  &res);
+    if ( llc_coloring_enabled )
+        init_secondary_addr = virt_to_reloc_virt(init_secondary);
+
+    arm_smccc_smc(psci_cpu_on_nr, cpu_logical_map(cpu),
+                  __pa(init_secondary_addr), &res);
 
     return PSCI_RET(res);
 }
diff --git a/xen/arch/arm/setup.c b/xen/arch/arm/setup.c
index 4c16b566db..ebbbf39477 100644
--- a/xen/arch/arm/setup.c
+++ b/xen/arch/arm/setup.c
@@ -545,6 +545,100 @@ static void * __init relocate_fdt(paddr_t dtb_paddr, size_t dtb_size)
     return fdt;
 }
 
+#ifdef CONFIG_LLC_COLORING
+/*
+ * Returns the end address of the highest region in the range s..e
+ * with required size and alignment that does not conflict with the
+ * modules from first_mod to nr_modules.
+ *
+ * For non-recursive callers first_mod should normally be 0 (all
+ * modules and Xen itself) or 1 (all modules but not Xen).
+ */
+static paddr_t __init consider_modules(paddr_t s, paddr_t e,
+                                       uint32_t size, paddr_t align,
+                                       int first_mod)
+{
+    const struct bootmodules *mi = &bootinfo.modules;
+    int i;
+    int nr;
+
+    s = (s+align-1) & ~(align-1);
+    e = e & ~(align-1);
+
+    if ( s > e ||  e - s < size )
+        return 0;
+
+    /* First check the boot modules */
+    for ( i = first_mod; i < mi->nr_mods; i++ )
+    {
+        paddr_t mod_s = mi->module[i].start;
+        paddr_t mod_e = mod_s + mi->module[i].size;
+
+        if ( s < mod_e && mod_s < e )
+        {
+            mod_e = consider_modules(mod_e, e, size, align, i+1);
+            if ( mod_e )
+                return mod_e;
+
+            return consider_modules(s, mod_s, size, align, i+1);
+        }
+    }
+
+    /* Now check any fdt reserved areas. */
+
+    nr = fdt_num_mem_rsv(device_tree_flattened);
+
+    for ( ; i < mi->nr_mods + nr; i++ )
+    {
+        paddr_t mod_s, mod_e;
+
+        if ( fdt_get_mem_rsv_paddr(device_tree_flattened,
+                                   i - mi->nr_mods,
+                                   &mod_s, &mod_e ) < 0 )
+            /* If we can't read it, pretend it doesn't exist... */
+            continue;
+
+        /* fdt_get_mem_rsv_paddr returns length */
+        mod_e += mod_s;
+
+        if ( s < mod_e && mod_s < e )
+        {
+            mod_e = consider_modules(mod_e, e, size, align, i+1);
+            if ( mod_e )
+                return mod_e;
+
+            return consider_modules(s, mod_s, size, align, i+1);
+        }
+    }
+
+    /*
+     * i is the current bootmodule we are evaluating, across all
+     * possible kinds of bootmodules.
+     *
+     * When retrieving the corresponding reserved-memory addresses, we
+     * need to index the bootinfo.reserved_mem bank starting from 0, and
+     * only counting the reserved-memory modules. Hence, we need to use
+     * i - nr.
+     */
+    nr += mi->nr_mods;
+    for ( ; i - nr < bootinfo.reserved_mem.nr_banks; i++ )
+    {
+        paddr_t r_s = bootinfo.reserved_mem.bank[i - nr].start;
+        paddr_t r_e = r_s + bootinfo.reserved_mem.bank[i - nr].size;
+
+        if ( s < r_e && r_s < e )
+        {
+            r_e = consider_modules(r_e, e, size, align, i + 1);
+            if ( r_e )
+                return r_e;
+
+            return consider_modules(s, r_s, size, align, i + 1);
+        }
+    }
+    return e;
+}
+#endif
+
 /*
  * Return the end of the non-module region starting at s. In other
  * words return s the start of the next modules after s.
@@ -579,6 +673,62 @@ static paddr_t __init next_module(paddr_t s, paddr_t *end)
     return lowest;
 }
 
+#ifdef CONFIG_LLC_COLORING
+/**
+ * get_xen_paddr - get physical address to relocate Xen to
+ *
+ * Xen is relocated to as near to the top of RAM as possible and
+ * aligned to a XEN_PADDR_ALIGN boundary.
+ */
+static paddr_t __init get_xen_paddr(uint32_t xen_size)
+{
+    struct meminfo *mi = &bootinfo.mem;
+    paddr_t min_size;
+    paddr_t paddr = 0;
+    int i;
+
+    min_size = (xen_size + (XEN_PADDR_ALIGN-1)) & ~(XEN_PADDR_ALIGN-1);
+
+    /* Find the highest bank with enough space. */
+    for ( i = 0; i < mi->nr_banks; i++ )
+    {
+        const struct membank *bank = &mi->bank[i];
+        paddr_t s, e;
+
+        if ( bank->size >= min_size )
+        {
+            e = consider_modules(bank->start, bank->start + bank->size,
+                                 min_size, XEN_PADDR_ALIGN, 0);
+            if ( !e )
+                continue;
+
+#ifdef CONFIG_ARM_32
+            /* Xen must be under 4GB */
+            if ( e > 0x100000000ULL )
+                e = 0x100000000ULL;
+            if ( e < bank->start )
+                continue;
+#endif
+
+            s = e - min_size;
+
+            if ( s > paddr )
+                paddr = s;
+        }
+    }
+
+    if ( !paddr )
+        panic("Not enough memory to relocate Xen\n");
+
+    printk("Placing Xen at 0x%"PRIpaddr"-0x%"PRIpaddr"\n",
+           paddr, paddr + min_size);
+
+    return paddr;
+}
+#else
+static paddr_t __init get_xen_paddr(uint32_t xen_size) { return 0; }
+#endif
+
 void __init init_pdx(void)
 {
     paddr_t bank_start, bank_size, bank_end;
@@ -724,8 +874,6 @@ void asmlinkage __init start_xen(unsigned long boot_phys_offset,
     /* Initialize traps early allow us to get backtrace when an error occurred */
     init_traps();
 
-    setup_pagetables(boot_phys_offset);
-
     smp_clear_cpu_maps();
 
     device_tree_flattened = early_fdt_map(fdt_paddr);
@@ -751,8 +899,13 @@ void asmlinkage __init start_xen(unsigned long boot_phys_offset,
     {
         if ( !llc_coloring_init() )
             panic("Xen LLC coloring support: setup failed\n");
+        xen_bootmodule->size = xen_colored_map_size(_end - _start);
+        xen_bootmodule->start = get_xen_paddr(xen_bootmodule->size);
     }
 
+    setup_pagetables(boot_phys_offset, xen_bootmodule->start);
+    device_tree_flattened = early_fdt_map(fdt_paddr);
+
     setup_mm();
 
     /* Parse the ACPI tables for possible boot-time configuration */
@@ -867,6 +1020,14 @@ void asmlinkage __init start_xen(unsigned long boot_phys_offset,
 
     setup_virt_paging();
 
+    /*
+     * The removal is done earlier than discard_initial_modules beacuse the
+     * livepatch init uses a virtual address equal to BOOT_RELOC_VIRT_START.
+     * Remove LLC coloring mappings to expose a clear state to the livepatch
+     * module.
+     */
+    if ( llc_coloring_enabled )
+        remove_llc_coloring_mappings();
     do_initcalls();
 
     /*
diff --git a/xen/arch/arm/smpboot.c b/xen/arch/arm/smpboot.c
index 7110bc11fc..7ed7357d58 100644
--- a/xen/arch/arm/smpboot.c
+++ b/xen/arch/arm/smpboot.c
@@ -14,6 +14,7 @@
 #include <xen/domain_page.h>
 #include <xen/errno.h>
 #include <xen/init.h>
+#include <xen/llc-coloring.h>
 #include <xen/mm.h>
 #include <xen/param.h>
 #include <xen/sched.h>
@@ -444,6 +445,7 @@ int __cpu_up(unsigned int cpu)
 {
     int rc;
     s_time_t deadline;
+    unsigned long *smp_up_cpu_addr = &smp_up_cpu;
 
     printk("Bringing up CPU%d\n", cpu);
 
@@ -459,9 +461,12 @@ int __cpu_up(unsigned int cpu)
     /* Tell the remote CPU what its logical CPU ID is. */
     init_data.cpuid = cpu;
 
+    if ( llc_coloring_enabled )
+        smp_up_cpu_addr = (unsigned long *)virt_to_reloc_virt(&smp_up_cpu);
+
     /* Open the gate for this CPU */
-    smp_up_cpu = cpu_logical_map(cpu);
-    clean_dcache(smp_up_cpu);
+    *smp_up_cpu_addr = cpu_logical_map(cpu);
+    clean_dcache(*smp_up_cpu_addr);
 
     rc = arch_cpu_up(cpu);
 
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Tue Jan 02 10:43:07 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 02 Jan 2024 10:43:07 +0000
Received: from list by lists.xenproject.org with outflank-mailman.660638.1030177 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rKcEe-0001h6-Ra; Tue, 02 Jan 2024 10:43:00 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 660638.1030177; Tue, 02 Jan 2024 10:43:00 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rKcEe-0001gz-Oq; Tue, 02 Jan 2024 10:43:00 +0000
Received: by outflank-mailman (input) for mailman id 660638;
 Tue, 02 Jan 2024 10:42:59 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=nGpE=IM=gmail.com=marcandre.lureau@srs-se1.protection.inumbo.net>)
 id 1rKcEd-0001fi-GY
 for xen-devel@lists.xenproject.org; Tue, 02 Jan 2024 10:42:59 +0000
Received: from mail-qt1-x830.google.com (mail-qt1-x830.google.com
 [2607:f8b0:4864:20::830])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id b0b07097-a95b-11ee-9b0f-b553b5be7939;
 Tue, 02 Jan 2024 11:42:57 +0100 (CET)
Received: by mail-qt1-x830.google.com with SMTP id
 d75a77b69052e-42828505b96so3932051cf.1
 for <xen-devel@lists.xenproject.org>; Tue, 02 Jan 2024 02:42:57 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: b0b07097-a95b-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1704192176; x=1704796976; darn=lists.xenproject.org;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:from:to:cc:subject:date
         :message-id:reply-to;
        bh=JTlbJfG49FXk96s4oJ9RThaa8t9INNDD3eL8LRERVLc=;
        b=E4dCvyaNjBs95xkexHl2map3UboEQNY601dp+vNO0TXoy29k4sW+VyLxsT0yWIgHZR
         NwPIF1trVp+brTKpvVMXyTSwqx4d5h4bhHITOHUJP3P5CYGvUuV1wW9HwESdNbDYH4cs
         aTl3UGJK2TvokvbUQdMwRWYF9D2ZgcfggVtCr/uYGLlDI1KTpxEmq+nagROU6mgzkfHV
         eXV4aloE/tTzQeqwGIytHabhm2z8Af9r+eu7xihoLZWBtemdnYC0ixA/o7IOi2EO8MLK
         hlfCLJtlfE0YMKXNFufiPgnoF28j41vH//YG+3l4zDpZsQ6+x3W1/GfVXtHs2LI5zfwB
         KeDg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704192176; x=1704796976;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to;
        bh=JTlbJfG49FXk96s4oJ9RThaa8t9INNDD3eL8LRERVLc=;
        b=CxfxH8OcbhyMdQwdpvzWNDZXsT0+s7paxLej0iUpdb0tQeTb4k1w35oTPshmUILkCG
         OYRSX9pQSxhoXGSpXOJLqajUf0EqG1sjSQESub92hDNe2UyoF3jQtFHeMfCRQlSXGKdr
         t+c/ft9WzWCrs4s+toCddO8bJmbvW7rWsVUp8S9JF7W8QWzAcDnaN/IL4EZ+v9fY3ZCu
         8gu7++r4nRC3bv0FJjJcU2cHV30ouDQV7cE97cenVZud2SFwqYLZcn1lx8SXMJv4Ixi9
         oin1tR0ChCNCcLFNqtrBDF5ep3Kc7ndcegPN8I2w+d9kZ/J6Dpcmwix4J3EfwYAOygWk
         Rl4A==
X-Gm-Message-State: AOJu0YyIYik+Os0mQVCmMcngE/ykqNiUlHNbAHPMucBqAbXqu7CXpbqH
	0wVAnaKVo9cefdxpLlTde5B1dWR9Fku1i3T6C68=
X-Google-Smtp-Source: AGHT+IG+dGscGnQcQ2gYtf0pCV3DKsQ9eE3HvQS3itcI+yz2wtXVsk/iLEAUfGLvkZme1TcR2oyjULRqJRtAhKJddTM=
X-Received: by 2002:a05:622a:1646:b0:427:860c:40b2 with SMTP id
 y6-20020a05622a164600b00427860c40b2mr21410322qtj.49.1704192176122; Tue, 02
 Jan 2024 02:42:56 -0800 (PST)
MIME-Version: 1.0
References: <20231219075320.165227-1-ray.huang@amd.com> <20231219075320.165227-2-ray.huang@amd.com>
 <6adff6d2-7c58-4c78-93a5-5a4594a60d27@daynix.com> <ZYGe4GcFPt0k5PTM@amd.com>
 <CAFEAcA_=iedJw4BbNHrDALC4mL4g3ZEihsDbLkEzsy-1zAWFWw@mail.gmail.com> <af89f683-2b6e-4ca1-aa37-8bedd12a781d@daynix.com>
In-Reply-To: <af89f683-2b6e-4ca1-aa37-8bedd12a781d@daynix.com>
From: =?UTF-8?B?TWFyYy1BbmRyw6kgTHVyZWF1?= <marcandre.lureau@gmail.com>
Date: Tue, 2 Jan 2024 14:42:44 +0400
Message-ID: <CAJ+F1CJnanuw_VQ0DDwUMfRjwHwQAZ3yif4FANcKVHMZXH3dyg@mail.gmail.com>
Subject: Re: [PATCH v6 01/11] linux-headers: Update to kernel headers to add
 venus capset
To: Akihiko Odaki <akihiko.odaki@daynix.com>
Cc: Peter Maydell <peter.maydell@linaro.org>, Huang Rui <ray.huang@amd.com>, 
	=?UTF-8?Q?Philippe_Mathieu=2DDaud=C3=A9?= <philmd@linaro.org>, 
	Gerd Hoffmann <kraxel@redhat.com>, "Michael S . Tsirkin" <mst@redhat.com>, 
	Stefano Stabellini <sstabellini@kernel.org>, Anthony PERARD <anthony.perard@citrix.com>, 
	Antonio Caggiano <quic_acaggian@quicinc.com>, "Dr . David Alan Gilbert" <dgilbert@redhat.com>, 
	Robert Beckett <bob.beckett@collabora.com>, Dmitry Osipenko <dmitry.osipenko@collabora.com>, 
	Gert Wollny <gert.wollny@collabora.com>, =?UTF-8?B?QWxleCBCZW5uw6ll?= <alex.bennee@linaro.org>, 
	"qemu-devel@nongnu.org" <qemu-devel@nongnu.org>, 
	"xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>, 
	Gurchetan Singh <gurchetansingh@chromium.org>, "ernunes@redhat.com" <ernunes@redhat.com>, 
	Alyssa Ross <hi@alyssa.is>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>, 
	"Deucher, Alexander" <Alexander.Deucher@amd.com>, 
	"Stabellini, Stefano" <stefano.stabellini@amd.com>, "Koenig, Christian" <Christian.Koenig@amd.com>, 
	"Ragiadakou, Xenia" <Xenia.Ragiadakou@amd.com>, 
	"Pelloux-Prayer, Pierre-Eric" <Pierre-eric.Pelloux-prayer@amd.com>, 
	"Huang, Honglei1" <Honglei1.Huang@amd.com>, "Zhang, Julia" <Julia.Zhang@amd.com>, 
	"Chen, Jiqian" <Jiqian.Chen@amd.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

Hi

On Thu, Dec 21, 2023 at 10:55=E2=80=AFAM Akihiko Odaki <akihiko.odaki@dayni=
x.com> wrote:
>
> On 2023/12/19 23:14, Peter Maydell wrote:
> > On Tue, 19 Dec 2023 at 13:49, Huang Rui <ray.huang@amd.com> wrote:
> >>
> >> On Tue, Dec 19, 2023 at 08:20:22PM +0800, Akihiko Odaki wrote:
> >>> On 2023/12/19 16:53, Huang Rui wrote:
> >>>> Sync up kernel headers to update venus macro till they are merged in=
to
> >>>> mainline.
> >>>
> >>> Thanks for sorting things out with the kernel and spec.
> >>>
> >>>>
> >>>> Signed-off-by: Huang Rui <ray.huang@amd.com>
> >>>> ---
> >>>>
> >>>> Changes in v6:
> >>>> - Venus capset is applied in kernel, so update it in qemu for future=
 use.
> >>>>
> >>>> https://lore.kernel.org/lkml/b79dcf75-c9e8-490e-644f-3b97d95f7397@co=
llabora.com/
> >>>> https://cgit.freedesktop.org/drm-misc/commit/?id=3D216d86b9a430f3280=
e5b631c51e6fd1a7774cfa0
> >>> Please include the link to the upstream commit in the commit message.
> >>
> >> So far, it's in drm maintainers' branch not in kernel mainline yet. Do=
 I
> >> need to wait it to be merged into kernel mainline?
> >
> > For an RFC patchset, no. For patches to be merged into QEMU
> > the headers change must be in the kernel mainline, and the
> > QEMU commit that updates our copy of the headers must be a
> > full-sync done with scripts/update-linux-headers.sh, not a
> > manual edit.
>
> Apparently the kernel change is unlikely to be merged to mainline before
> QEMU 9.0 so we need to come up with some idea to deal with this.
>
> The release of Linux 6.7 is near and the development of 6.8 will start
> soon. So it was nice if the change made into 6.8, but unfortunately it
> missed the *probably last* drm-misc tree pull request for 6.8:
> https://lore.kernel.org/all/aqpn5miejmkks7pbcfex7b6u63uwsruywxsnr3x5ljs45=
qatin@nbkkej2elk46/
>
> It will still get into linux-next so we may retrieve headers from
> linux-next. Or we may add the definition to
> hw/display/virtio-gpu-virgl.c; the duplicate definition warning will
> tell when the definition becomes no longer necessary. I'm fine with
> either option.

The second option seems better to me, as it can avoid pulling unwanted chan=
ges.

thanks

--=20
Marc-Andr=C3=A9 Lureau


From xen-devel-bounces@lists.xenproject.org Tue Jan 02 11:43:56 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 02 Jan 2024 11:43:56 +0000
Received: from list by lists.xenproject.org with outflank-mailman.660643.1030188 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rKdBL-0000sn-2f; Tue, 02 Jan 2024 11:43:39 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 660643.1030188; Tue, 02 Jan 2024 11:43:39 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rKdBK-0000sg-Uw; Tue, 02 Jan 2024 11:43:38 +0000
Received: by outflank-mailman (input) for mailman id 660643;
 Tue, 02 Jan 2024 11:43:38 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=nGpE=IM=gmail.com=marcandre.lureau@srs-se1.protection.inumbo.net>)
 id 1rKdBK-0000sQ-7F
 for xen-devel@lists.xenproject.org; Tue, 02 Jan 2024 11:43:38 +0000
Received: from mail-qt1-x82c.google.com (mail-qt1-x82c.google.com
 [2607:f8b0:4864:20::82c])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 280f65bd-a964-11ee-9b0f-b553b5be7939;
 Tue, 02 Jan 2024 12:43:33 +0100 (CET)
Received: by mail-qt1-x82c.google.com with SMTP id
 d75a77b69052e-4283271739fso919971cf.2
 for <xen-devel@lists.xenproject.org>; Tue, 02 Jan 2024 03:43:33 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 280f65bd-a964-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1704195812; x=1704800612; darn=lists.xenproject.org;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:from:to:cc:subject:date
         :message-id:reply-to;
        bh=uRWEY18VciRq+byvwMCRJuF5oX/xWtKPpJhz2/bbeoM=;
        b=mC8qT7D5EXgBH8wrru/UrPy/ovVdfrfXOaVdGfN/9uejZPuGLlK7QiHRYTHO/nkpxI
         1hXF4tPYucBL9HKB/qeLE2ocdyXZVuBY0kX/EYeOlfcs/Lt7H4ftKw66omrntxscN1k0
         jst5l8cpopc3udkMt/a5jsPLHhU1r2XoIFmS4vh4ro89v+biulsyW9BlUY31+bZwUHMX
         VU+1QB21OuU/57YdbMDqkD+9Kx/VVkFfViJwrihQyiSa7q+2zbreAQCbtUShjyXbvSck
         TKtu1L4COiDOwETZynvP634c77ZwhLo92Kmx617XEvXerymUT2HZUiW0wouKNjDXrh7W
         3DZg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704195812; x=1704800612;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to;
        bh=uRWEY18VciRq+byvwMCRJuF5oX/xWtKPpJhz2/bbeoM=;
        b=Jq8Eoi8rrnjqWwSoGc0UAs7cW6zxeF8idVk834JrS88zcMFN0cVLrmlJQm+1s8XVmY
         sTK45X+KvhS5Q6MKQCGRD56ZHku3wVeKSdZd5rwBgdECr1sPV1PAK41nRXI0w+bJqsAd
         GJkR8NiEigssgaGJh9HjjUxlOaM1YxPopGSt5Jg9avi4DWQ9B28q7SKpTpDPxt1M9uvd
         vI8qd6nQQAoxyyaa48EOKWMQMbPTcX5Bo5dWuU85/rvEm50dk8bXHgzCpNazZ+xWcula
         yIfKRr+YEC6jXdw9tCizqAdQodreEWoIHUGJwKO/T9IJOu73rz1hUmHVgmrnHhIO+dNn
         JlMQ==
X-Gm-Message-State: AOJu0YzCsUelFheKEU+mw/5cL/uEMpOKV1y42imaLScbOmbxXj6dFklB
	wBVmKSFMv9oJ3umKk/ZnCzlr1Ik1tN/3ezLQp6c=
X-Google-Smtp-Source: AGHT+IElUCV1tBN7z3T8PqF76mDlw2yI+JJQJrvkY3fbF7Kd8h10J0xQcAoWiSbWqyJXU4H5PkT7ziqveKo2VLi0OMk=
X-Received: by 2002:ac8:5844:0:b0:428:3018:7ee7 with SMTP id
 h4-20020ac85844000000b0042830187ee7mr918581qth.77.1704195812322; Tue, 02 Jan
 2024 03:43:32 -0800 (PST)
MIME-Version: 1.0
References: <20231219075320.165227-1-ray.huang@amd.com> <20231219075320.165227-4-ray.huang@amd.com>
In-Reply-To: <20231219075320.165227-4-ray.huang@amd.com>
From: =?UTF-8?B?TWFyYy1BbmRyw6kgTHVyZWF1?= <marcandre.lureau@gmail.com>
Date: Tue, 2 Jan 2024 15:43:20 +0400
Message-ID: <CAJ+F1CJ7cH3v9vXy+g-2ANZ1MowprW451dhzSDdsSn=P+c7LFg@mail.gmail.com>
Subject: Re: [PATCH v6 03/11] virtio-gpu: Support context init feature with virglrenderer
To: Huang Rui <ray.huang@amd.com>
Cc: Akihiko Odaki <akihiko.odaki@daynix.com>, =?UTF-8?Q?Philippe_Mathieu=2DDaud=C3=A9?= <philmd@linaro.org>, 
	Gerd Hoffmann <kraxel@redhat.com>, "Michael S . Tsirkin" <mst@redhat.com>, 
	Stefano Stabellini <sstabellini@kernel.org>, Anthony PERARD <anthony.perard@citrix.com>, 
	Antonio Caggiano <quic_acaggian@quicinc.com>, "Dr . David Alan Gilbert" <dgilbert@redhat.com>, 
	Robert Beckett <bob.beckett@collabora.com>, Dmitry Osipenko <dmitry.osipenko@collabora.com>, 
	Gert Wollny <gert.wollny@collabora.com>, =?UTF-8?B?QWxleCBCZW5uw6ll?= <alex.bennee@linaro.org>, 
	qemu-devel@nongnu.org, xen-devel@lists.xenproject.org, 
	Gurchetan Singh <gurchetansingh@chromium.org>, ernunes@redhat.com, 
	Alyssa Ross <hi@alyssa.is>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>, 
	Alex Deucher <alexander.deucher@amd.com>, Stefano Stabellini <stefano.stabellini@amd.com>, 
	=?UTF-8?Q?Christian_K=C3=B6nig?= <christian.koenig@amd.com>, 
	Xenia Ragiadakou <xenia.ragiadakou@amd.com>, 
	Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com>, Honglei Huang <honglei1.huang@amd.com>, 
	Julia Zhang <julia.zhang@amd.com>, Chen Jiqian <Jiqian.Chen@amd.com>, 
	Antonio Caggiano <antonio.caggiano@collabora.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

Hi

On Tue, Dec 19, 2023 at 11:54=E2=80=AFAM Huang Rui <ray.huang@amd.com> wrot=
e:
>
> Patch "virtio-gpu: CONTEXT_INIT feature" has added the context_init
> feature flags.
> We would like to enable the feature with virglrenderer, so add to create
> virgl renderer context with flags using context_id when valid.
>
> Originally-by: Antonio Caggiano <antonio.caggiano@collabora.com>
> Signed-off-by: Huang Rui <ray.huang@amd.com>
> ---
>
> Changes in v6:
> - Handle the case while context_init is disabled.
> - Enable context_init by default.
>
>  hw/display/virtio-gpu-virgl.c | 13 +++++++++++--
>  hw/display/virtio-gpu.c       |  4 ++++
>  2 files changed, 15 insertions(+), 2 deletions(-)
>
> diff --git a/hw/display/virtio-gpu-virgl.c b/hw/display/virtio-gpu-virgl.=
c
> index 8bb7a2c21f..5bbc8071b2 100644
> --- a/hw/display/virtio-gpu-virgl.c
> +++ b/hw/display/virtio-gpu-virgl.c
> @@ -106,8 +106,17 @@ static void virgl_cmd_context_create(VirtIOGPU *g,
>      trace_virtio_gpu_cmd_ctx_create(cc.hdr.ctx_id,
>                                      cc.debug_name);
>
> -    virgl_renderer_context_create(cc.hdr.ctx_id, cc.nlen,
> -                                  cc.debug_name);
> +#ifdef HAVE_VIRGL_CONTEXT_CREATE_WITH_FLAGS
> +    if (cc.context_init && virtio_gpu_context_init_enabled(g->parent_obj=
.conf)) {
> +        virgl_renderer_context_create_with_flags(cc.hdr.ctx_id,
> +                                                 cc.context_init,
> +                                                 cc.nlen,
> +                                                 cc.debug_name);
> +        return;
> +    }
> +#endif
> +
> +    virgl_renderer_context_create(cc.hdr.ctx_id, cc.nlen, cc.debug_name)=
;
>  }
>
>  static void virgl_cmd_context_destroy(VirtIOGPU *g,
> diff --git a/hw/display/virtio-gpu.c b/hw/display/virtio-gpu.c
> index b016d3bac8..8b2f4c6be3 100644
> --- a/hw/display/virtio-gpu.c
> +++ b/hw/display/virtio-gpu.c
> @@ -1619,6 +1619,10 @@ static Property virtio_gpu_properties[] =3D {
>      DEFINE_PROP_BIT("blob", VirtIOGPU, parent_obj.conf.flags,
>                      VIRTIO_GPU_FLAG_BLOB_ENABLED, false),
>      DEFINE_PROP_SIZE("hostmem", VirtIOGPU, parent_obj.conf.hostmem, 0),
> +#ifdef HAVE_VIRGL_CONTEXT_CREATE_WITH_FLAGS
> +    DEFINE_PROP_BIT("context_init", VirtIOGPU, parent_obj.conf.flags,
> +                    VIRTIO_GPU_FLAG_CONTEXT_INIT_ENABLED, true),
> +#endif

Does it make sense to make this configurable? If the context to be
created asked for a capset id but the one created doesn't respect it,
what's the outcome?

It looks like it should instead set cmd->error.

--=20
Marc-Andr=C3=A9 Lureau


From xen-devel-bounces@lists.xenproject.org Tue Jan 02 11:50:34 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 02 Jan 2024 11:50:34 +0000
Received: from list by lists.xenproject.org with outflank-mailman.660647.1030198 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rKdHy-0002kT-QO; Tue, 02 Jan 2024 11:50:30 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 660647.1030198; Tue, 02 Jan 2024 11:50:30 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rKdHy-0002kM-Lv; Tue, 02 Jan 2024 11:50:30 +0000
Received: by outflank-mailman (input) for mailman id 660647;
 Tue, 02 Jan 2024 11:50:29 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=nGpE=IM=gmail.com=marcandre.lureau@srs-se1.protection.inumbo.net>)
 id 1rKdHx-0002kG-Mp
 for xen-devel@lists.xenproject.org; Tue, 02 Jan 2024 11:50:29 +0000
Received: from mail-qt1-x82c.google.com (mail-qt1-x82c.google.com
 [2607:f8b0:4864:20::82c])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 1f8d5984-a965-11ee-98ef-6d05b1d4d9a1;
 Tue, 02 Jan 2024 12:50:28 +0100 (CET)
Received: by mail-qt1-x82c.google.com with SMTP id
 d75a77b69052e-42782601608so45244651cf.2
 for <xen-devel@lists.xenproject.org>; Tue, 02 Jan 2024 03:50:28 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 1f8d5984-a965-11ee-98ef-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1704196227; x=1704801027; darn=lists.xenproject.org;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:from:to:cc:subject:date
         :message-id:reply-to;
        bh=QwbypJ73LcLsDwIupB/a+pv5MQVKwJbdWWDIfRz9jok=;
        b=b4HkCB0Mm1yFtbbN8kEtXQywMUm330qONPWqLU9XHVgtH6dZQJ0z5RQT2JpIM4NE2L
         ByYjmuPONlocB3/2DztJTP7OOXdQGa4GTVXbgKhIVSRQ4uhSV08UuhX1XD9v1njycAf6
         lEkTRRtPxinjemBSiMSiJvnvIOSCfn6jDLRzpcYKPFqUEI2SKdpM6EYZh+VazZYFqDpi
         dAgc2kzI+cVy8ioxRBbJoo8DtxQN3mtJ/Xjp1KA97g/boUSL1Cqb/YP61xhkBv4RO6EP
         NzXUnPEDYiZgEFziC03Pp6TYFju37oTFYW4Ux4MIL0NolX7JrXdc/pXwI8RBj6Iie5Kl
         7wAg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704196227; x=1704801027;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to;
        bh=QwbypJ73LcLsDwIupB/a+pv5MQVKwJbdWWDIfRz9jok=;
        b=VOZBMNqQQqNksDDnSFxIr6f19tVVNEAXSaNZZnkMDqT8xo11pC0dzeAIA98FtavWrx
         S43+918RbANPvOkJsaEHxU9s8R+MFMPiTI+LWYX103yQZZCF2pRWT9arZ11a7Y5STD7a
         TEa1ga0I3zMNhYICyRquO8RIiv8d7RzmBH/y9Wta3tgY+Mtsu5nLj+GbjDhU0ctrFYRT
         IITVCl+ge5tsxzAR9VgUL4bUtHVmSNfW1w7Gq062QESUejEVe1E6hzj6zkPeMRj68QBA
         n4rKSCFStUm+EUUvl190wRQ2lCMYQuJQpio6kV/uqAI5i3ebUTrYTkP347k3R+yrwuEF
         atow==
X-Gm-Message-State: AOJu0YwmydwVoDDkK3W8UmPjHYHZgPkC7zkPZUTak3GsBs5ed0wT3W7e
	AXwMTyNAdkq7I30y4M3BCUKBHyLyDqIjOv1Tu34=
X-Google-Smtp-Source: AGHT+IGotzR+IbHSvLyCTquJ++TDP/oxY3q2zmw1Iu0n3CSYZAH8Gw3eD1Fr7WRXBgiyURwS/8vn0RIOkL1U8tBC/70=
X-Received: by 2002:ac8:5788:0:b0:427:f474:89c3 with SMTP id
 v8-20020ac85788000000b00427f47489c3mr8227656qta.121.1704196227540; Tue, 02
 Jan 2024 03:50:27 -0800 (PST)
MIME-Version: 1.0
References: <20231219075320.165227-1-ray.huang@amd.com> <20231219075320.165227-5-ray.huang@amd.com>
In-Reply-To: <20231219075320.165227-5-ray.huang@amd.com>
From: =?UTF-8?B?TWFyYy1BbmRyw6kgTHVyZWF1?= <marcandre.lureau@gmail.com>
Date: Tue, 2 Jan 2024 15:50:16 +0400
Message-ID: <CAJ+F1C+gu0Jh9KSJK5jgUx0xOq7Da0wkN+U0zOBLffC3wDgVpA@mail.gmail.com>
Subject: Re: [PATCH v6 04/11] virtio-gpu: Don't require udmabuf when blobs and
 virgl are enabled
To: Huang Rui <ray.huang@amd.com>
Cc: Akihiko Odaki <akihiko.odaki@daynix.com>, =?UTF-8?Q?Philippe_Mathieu=2DDaud=C3=A9?= <philmd@linaro.org>, 
	Gerd Hoffmann <kraxel@redhat.com>, "Michael S . Tsirkin" <mst@redhat.com>, 
	Stefano Stabellini <sstabellini@kernel.org>, Anthony PERARD <anthony.perard@citrix.com>, 
	Antonio Caggiano <quic_acaggian@quicinc.com>, "Dr . David Alan Gilbert" <dgilbert@redhat.com>, 
	Robert Beckett <bob.beckett@collabora.com>, Dmitry Osipenko <dmitry.osipenko@collabora.com>, 
	Gert Wollny <gert.wollny@collabora.com>, =?UTF-8?B?QWxleCBCZW5uw6ll?= <alex.bennee@linaro.org>, 
	qemu-devel@nongnu.org, xen-devel@lists.xenproject.org, 
	Gurchetan Singh <gurchetansingh@chromium.org>, ernunes@redhat.com, 
	Alyssa Ross <hi@alyssa.is>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>, 
	Alex Deucher <alexander.deucher@amd.com>, Stefano Stabellini <stefano.stabellini@amd.com>, 
	=?UTF-8?Q?Christian_K=C3=B6nig?= <christian.koenig@amd.com>, 
	Xenia Ragiadakou <xenia.ragiadakou@amd.com>, 
	Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com>, Honglei Huang <honglei1.huang@amd.com>, 
	Julia Zhang <julia.zhang@amd.com>, Chen Jiqian <Jiqian.Chen@amd.com>, 
	Antonio Caggiano <antonio.caggiano@collabora.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

On Tue, Dec 19, 2023 at 11:54=E2=80=AFAM Huang Rui <ray.huang@amd.com> wrot=
e:
>
> From: Dmitry Osipenko <dmitry.osipenko@collabora.com>
>
> The udmabuf usage is mandatory when virgl is disabled and blobs feature
> enabled in the Qemu machine configuration. If virgl and blobs are enabled=
,
> then udmabuf requirement is optional. Since udmabuf isn't widely supporte=
d
> by a popular Linux distros today, let's relax the udmabuf requirement for
> blobs=3Don,virgl=3Don. Now, a full-featured virtio-gpu acceleration is
> available to Qemu users without a need to have udmabuf available in the
> system.
>
> Reviewed-by: Antonio Caggiano <antonio.caggiano@collabora.com>
> Signed-off-by: Dmitry Osipenko <dmitry.osipenko@collabora.com>
> Signed-off-by: Huang Rui <ray.huang@amd.com>

Reviewed-by: Marc-Andr=C3=A9 Lureau <marcandre.lureau@redhat.com>

> ---
>
> No change in v6.
>
>  hw/display/virtio-gpu.c | 1 +
>  1 file changed, 1 insertion(+)
>
> diff --git a/hw/display/virtio-gpu.c b/hw/display/virtio-gpu.c
> index 8b2f4c6be3..4c3ec9d0ea 100644
> --- a/hw/display/virtio-gpu.c
> +++ b/hw/display/virtio-gpu.c
> @@ -1443,6 +1443,7 @@ void virtio_gpu_device_realize(DeviceState *qdev, E=
rror **errp)
>
>      if (virtio_gpu_blob_enabled(g->parent_obj.conf)) {
>          if (!virtio_gpu_rutabaga_enabled(g->parent_obj.conf) &&
> +            !virtio_gpu_virgl_enabled(g->parent_obj.conf) &&
>              !virtio_gpu_have_udmabuf()) {
>              error_setg(errp, "need rutabaga or udmabuf for blob resource=
s");
>              return;
> --
> 2.25.1
>


--=20
Marc-Andr=C3=A9 Lureau


From xen-devel-bounces@lists.xenproject.org Tue Jan 02 11:52:21 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 02 Jan 2024 11:52:21 +0000
Received: from list by lists.xenproject.org with outflank-mailman.660652.1030208 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rKdJk-0003gz-3n; Tue, 02 Jan 2024 11:52:20 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 660652.1030208; Tue, 02 Jan 2024 11:52:20 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rKdJk-0003gs-0n; Tue, 02 Jan 2024 11:52:20 +0000
Received: by outflank-mailman (input) for mailman id 660652;
 Tue, 02 Jan 2024 11:52:18 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=nGpE=IM=gmail.com=marcandre.lureau@srs-se1.protection.inumbo.net>)
 id 1rKdJi-0003fY-8I
 for xen-devel@lists.xenproject.org; Tue, 02 Jan 2024 11:52:18 +0000
Received: from mail-oi1-x236.google.com (mail-oi1-x236.google.com
 [2607:f8b0:4864:20::236])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 60134d43-a965-11ee-98ef-6d05b1d4d9a1;
 Tue, 02 Jan 2024 12:52:17 +0100 (CET)
Received: by mail-oi1-x236.google.com with SMTP id
 5614622812f47-3bbc755167fso4136440b6e.0
 for <xen-devel@lists.xenproject.org>; Tue, 02 Jan 2024 03:52:17 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 60134d43-a965-11ee-98ef-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1704196336; x=1704801136; darn=lists.xenproject.org;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:from:to:cc:subject:date
         :message-id:reply-to;
        bh=hFmcKa0V1SXEd2KZZXGrlYbPhOuudVLjDBKA5R7e/lM=;
        b=VB9sWVAyBmV4bZ71VAFd+pdX/caTJTRl6xspgbwE45fN7AB+O6i/YVIknTJs+nl7Ks
         Y2xAMZNI/7uSTYUsr1QLyNzJbpyMZK1WpFmL5fWFZ0ML4nBVPZIomxFvlRgqDkUWeauL
         lj/Ap2R85JWW1TekHBleHT10REEPhCGy38d1pS/zA4ug9uBNCneZXOW/4N/gDfDdEujM
         0xj6Ra34stA4y5ZH8pkFysE92DUEN2FTtKkYORE1nkWmhWIiIdrFvyRnreQV1f5jina9
         WowinuxlklfnKmBMRLUB42TnIbXe2VOsNDaaIrKvB3DfshaA96U77HBqAD8CD5K1faSY
         /4Bg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704196336; x=1704801136;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to;
        bh=hFmcKa0V1SXEd2KZZXGrlYbPhOuudVLjDBKA5R7e/lM=;
        b=STav0qJjFyswenrCo0CIUin+kmQLlNaTaTOspG70+khf6Fzbz31NLWgO2EEb/LHcRb
         svza+kKgQ5RgvIBUCWcHe99aYkCXJNcyyQ9wwkLGyUEJg8FfcW9LJKpP+RTJx4ApIL4s
         nQLbRFzSsm3cmV3bHmfhk2j44LZ5+jb0Lds5TsiyEs5tOWXrmdzE9pzFGBHmnxCErPZY
         /a+DxsyOAft5EMxBQS90c3R8Z0/W5ZKFaeRJyWZwMWt6J41UmBmMdvPAISgJbGv2qtqp
         90PNF2Pm9fPMGs5hLxO5jGjlUwVROzqoOnHAcSKSC7sHtZNo7gZAv6VDW52zOKTBiv5u
         wAnw==
X-Gm-Message-State: AOJu0Yw6zGPFPaZQcgzEBxx/yUxyMktd38K/PYREZ0ACLQLP0kUCOqXD
	6wGEfPwFKbhXL3KBQL6pST751crTLaffJTk8VDU=
X-Google-Smtp-Source: AGHT+IHudrFSrTiSo9q3MtaVIl5rejRXuPWYRNchd/Kok95sEO10YWSEraRSZCSSP/MkRfsU8pKG3dNaLS2KbqKkPDk=
X-Received: by 2002:a05:6808:2f1a:b0:3bc:804:580e with SMTP id
 gu26-20020a0568082f1a00b003bc0804580emr4550071oib.99.1704196335863; Tue, 02
 Jan 2024 03:52:15 -0800 (PST)
MIME-Version: 1.0
References: <20231219075320.165227-1-ray.huang@amd.com> <20231219075320.165227-6-ray.huang@amd.com>
In-Reply-To: <20231219075320.165227-6-ray.huang@amd.com>
From: =?UTF-8?B?TWFyYy1BbmRyw6kgTHVyZWF1?= <marcandre.lureau@gmail.com>
Date: Tue, 2 Jan 2024 15:52:04 +0400
Message-ID: <CAJ+F1CKOsDk835H8j56mfS7e=8BusYjo3mJYwuPbdRPq1MmNzw@mail.gmail.com>
Subject: Re: [PATCH v6 05/11] virtio-gpu: Introduce virgl_gpu_resource structure
To: Huang Rui <ray.huang@amd.com>
Cc: Akihiko Odaki <akihiko.odaki@daynix.com>, =?UTF-8?Q?Philippe_Mathieu=2DDaud=C3=A9?= <philmd@linaro.org>, 
	Gerd Hoffmann <kraxel@redhat.com>, "Michael S . Tsirkin" <mst@redhat.com>, 
	Stefano Stabellini <sstabellini@kernel.org>, Anthony PERARD <anthony.perard@citrix.com>, 
	Antonio Caggiano <quic_acaggian@quicinc.com>, "Dr . David Alan Gilbert" <dgilbert@redhat.com>, 
	Robert Beckett <bob.beckett@collabora.com>, Dmitry Osipenko <dmitry.osipenko@collabora.com>, 
	Gert Wollny <gert.wollny@collabora.com>, =?UTF-8?B?QWxleCBCZW5uw6ll?= <alex.bennee@linaro.org>, 
	qemu-devel@nongnu.org, xen-devel@lists.xenproject.org, 
	Gurchetan Singh <gurchetansingh@chromium.org>, ernunes@redhat.com, 
	Alyssa Ross <hi@alyssa.is>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>, 
	Alex Deucher <alexander.deucher@amd.com>, Stefano Stabellini <stefano.stabellini@amd.com>, 
	=?UTF-8?Q?Christian_K=C3=B6nig?= <christian.koenig@amd.com>, 
	Xenia Ragiadakou <xenia.ragiadakou@amd.com>, 
	Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com>, Honglei Huang <honglei1.huang@amd.com>, 
	Julia Zhang <julia.zhang@amd.com>, Chen Jiqian <Jiqian.Chen@amd.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

Hi

On Tue, Dec 19, 2023 at 11:55=E2=80=AFAM Huang Rui <ray.huang@amd.com> wrot=
e:
>
> Introduce a new virgl_gpu_resource data structure and helper functions
> for virgl. It's used to add new member which is specific for virgl in
> following patches of blob memory support.
>
> Signed-off-by: Huang Rui <ray.huang@amd.com>
> ---
>
> New patch:
> - Introduce new struct virgl_gpu_resource to store virgl specific members=
.
> - Move resource initialization from path "virtio-gpu: Resource UUID" here=
.
> - Remove error handling of g_new0, because glib will abort() on OOM.
> - Set iov and iov_cnt in struct virtio_gpu_simple_resource for all types
>   of resources.
>
>  hw/display/virtio-gpu-virgl.c | 84 ++++++++++++++++++++++++++---------
>  1 file changed, 64 insertions(+), 20 deletions(-)
>
> diff --git a/hw/display/virtio-gpu-virgl.c b/hw/display/virtio-gpu-virgl.=
c
> index 5bbc8071b2..faab374336 100644
> --- a/hw/display/virtio-gpu-virgl.c
> +++ b/hw/display/virtio-gpu-virgl.c
> @@ -22,6 +22,23 @@
>
>  #include <virglrenderer.h>
>
> +struct virgl_gpu_resource {
> +    struct virtio_gpu_simple_resource res;
> +};
> +
> +static struct virgl_gpu_resource *
> +virgl_gpu_find_resource(VirtIOGPU *g, uint32_t resource_id)
> +{
> +    struct virtio_gpu_simple_resource *res;
> +
> +    res =3D virtio_gpu_find_resource(g, resource_id);
> +    if (!res) {
> +        return NULL;
> +    }
> +
> +    return container_of(res, struct virgl_gpu_resource, res);
> +}
> +
>  #if VIRGL_RENDERER_CALLBACKS_VERSION >=3D 4
>  static void *
>  virgl_get_egl_display(G_GNUC_UNUSED void *cookie)
> @@ -35,11 +52,19 @@ static void virgl_cmd_create_resource_2d(VirtIOGPU *g=
,
>  {
>      struct virtio_gpu_resource_create_2d c2d;
>      struct virgl_renderer_resource_create_args args;
> +    struct virgl_gpu_resource *vres;
>
>      VIRTIO_GPU_FILL_CMD(c2d);
>      trace_virtio_gpu_cmd_res_create_2d(c2d.resource_id, c2d.format,
>                                         c2d.width, c2d.height);
>

It should check the resource doesn't already exist (similar to 2d code)

> +    vres =3D g_new0(struct virgl_gpu_resource, 1);
> +    vres->res.width =3D c2d.width;
> +    vres->res.height =3D c2d.height;
> +    vres->res.format =3D c2d.format;
> +    vres->res.resource_id =3D c2d.resource_id;
> +    QTAILQ_INSERT_HEAD(&g->reslist, &vres->res, next);
> +
>      args.handle =3D c2d.resource_id;
>      args.target =3D 2;
>      args.format =3D c2d.format;
> @@ -59,11 +84,19 @@ static void virgl_cmd_create_resource_3d(VirtIOGPU *g=
,
>  {
>      struct virtio_gpu_resource_create_3d c3d;
>      struct virgl_renderer_resource_create_args args;
> +    struct virgl_gpu_resource *vres;
>
>      VIRTIO_GPU_FILL_CMD(c3d);
>      trace_virtio_gpu_cmd_res_create_3d(c3d.resource_id, c3d.format,
>                                         c3d.width, c3d.height, c3d.depth)=
;
>

same

> +    vres =3D g_new0(struct virgl_gpu_resource, 1);
> +    vres->res.width =3D c3d.width;
> +    vres->res.height =3D c3d.height;
> +    vres->res.format =3D c3d.format;
> +    vres->res.resource_id =3D c3d.resource_id;
> +    QTAILQ_INSERT_HEAD(&g->reslist, &vres->res, next);
> +
>      args.handle =3D c3d.resource_id;
>      args.target =3D c3d.target;
>      args.format =3D c3d.format;
> @@ -82,19 +115,23 @@ static void virgl_cmd_resource_unref(VirtIOGPU *g,
>                                       struct virtio_gpu_ctrl_command *cmd=
)
>  {
>      struct virtio_gpu_resource_unref unref;
> -    struct iovec *res_iovs =3D NULL;
> -    int num_iovs =3D 0;
> +    struct virgl_gpu_resource *vres;
>
>      VIRTIO_GPU_FILL_CMD(unref);
>      trace_virtio_gpu_cmd_res_unref(unref.resource_id);
>
> -    virgl_renderer_resource_detach_iov(unref.resource_id,
> -                                       &res_iovs,
> -                                       &num_iovs);
> -    if (res_iovs !=3D NULL && num_iovs !=3D 0) {
> -        virtio_gpu_cleanup_mapping_iov(g, res_iovs, num_iovs);
> +    vres =3D virgl_gpu_find_resource(g, unref.resource_id);
> +    if (!vres) {
> +        cmd->error =3D VIRTIO_GPU_RESP_ERR_INVALID_RESOURCE_ID;
> +        return;
>      }
> +
> +    virgl_renderer_resource_detach_iov(unref.resource_id, NULL, NULL);
>      virgl_renderer_resource_unref(unref.resource_id);
> +
> +    QTAILQ_REMOVE(&g->reslist, &vres->res, next);
> +    virtio_gpu_cleanup_mapping(g, &vres->res);
> +    g_free(vres);
>  }
>
>  static void virgl_cmd_context_create(VirtIOGPU *g,
> @@ -310,44 +347,51 @@ static void virgl_resource_attach_backing(VirtIOGPU=
 *g,
>                                            struct virtio_gpu_ctrl_command=
 *cmd)
>  {
>      struct virtio_gpu_resource_attach_backing att_rb;
> -    struct iovec *res_iovs;
> -    uint32_t res_niov;
> +    struct virgl_gpu_resource *vres;
>      int ret;
>
>      VIRTIO_GPU_FILL_CMD(att_rb);
>      trace_virtio_gpu_cmd_res_back_attach(att_rb.resource_id);
>
> +    vres =3D virgl_gpu_find_resource(g, att_rb.resource_id);
> +    if (!vres) {
> +        cmd->error =3D VIRTIO_GPU_RESP_ERR_INVALID_RESOURCE_ID;
> +        return;
> +    }
> +
>      ret =3D virtio_gpu_create_mapping_iov(g, att_rb.nr_entries, sizeof(a=
tt_rb),
> -                                        cmd, NULL, &res_iovs, &res_niov)=
;
> +                                        cmd, NULL, &vres->res.iov,
> +                                        &vres->res.iov_cnt);
>      if (ret !=3D 0) {
>          cmd->error =3D VIRTIO_GPU_RESP_ERR_UNSPEC;
>          return;
>      }
>
>      ret =3D virgl_renderer_resource_attach_iov(att_rb.resource_id,
> -                                             res_iovs, res_niov);
> +                                             vres->res.iov, vres->res.io=
v_cnt);
>
> -    if (ret !=3D 0)
> -        virtio_gpu_cleanup_mapping_iov(g, res_iovs, res_niov);
> +    if (ret !=3D 0) {
> +        virtio_gpu_cleanup_mapping(g, &vres->res);
> +    }
>  }
>
>  static void virgl_resource_detach_backing(VirtIOGPU *g,
>                                            struct virtio_gpu_ctrl_command=
 *cmd)
>  {
>      struct virtio_gpu_resource_detach_backing detach_rb;
> -    struct iovec *res_iovs =3D NULL;
> -    int num_iovs =3D 0;
> +    struct virgl_gpu_resource *vres;
>
>      VIRTIO_GPU_FILL_CMD(detach_rb);
>      trace_virtio_gpu_cmd_res_back_detach(detach_rb.resource_id);
>
> -    virgl_renderer_resource_detach_iov(detach_rb.resource_id,
> -                                       &res_iovs,
> -                                       &num_iovs);
> -    if (res_iovs =3D=3D NULL || num_iovs =3D=3D 0) {
> +    vres =3D virgl_gpu_find_resource(g, detach_rb.resource_id);
> +    if (!vres) {
> +        cmd->error =3D VIRTIO_GPU_RESP_ERR_INVALID_RESOURCE_ID;
>          return;
>      }
> -    virtio_gpu_cleanup_mapping_iov(g, res_iovs, num_iovs);
> +
> +    virgl_renderer_resource_detach_iov(detach_rb.resource_id, NULL, NULL=
);
> +    virtio_gpu_cleanup_mapping(g, &vres->res);
>  }
>
>
> --
> 2.25.1
>
>


--=20
Marc-Andr=C3=A9 Lureau


From xen-devel-bounces@lists.xenproject.org Tue Jan 02 12:13:29 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 02 Jan 2024 12:13:29 +0000
Received: from list by lists.xenproject.org with outflank-mailman.660667.1030218 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rKde6-0000gL-51; Tue, 02 Jan 2024 12:13:22 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 660667.1030218; Tue, 02 Jan 2024 12:13:22 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rKde6-0000gE-2F; Tue, 02 Jan 2024 12:13:22 +0000
Received: by outflank-mailman (input) for mailman id 660667;
 Tue, 02 Jan 2024 12:13:21 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rKde5-0000g4-3Y; Tue, 02 Jan 2024 12:13:21 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rKde4-00038n-He; Tue, 02 Jan 2024 12:13:20 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rKde4-0000PJ-1U; Tue, 02 Jan 2024 12:13:20 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rKde4-0000jl-0y; Tue, 02 Jan 2024 12:13:20 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=JgtkHNhIYtVcoU4fBf7e6hz08bV2EMCdDCRWU8xkDq8=; b=4AiMoIXr7yuoYkBVCouWp5X2jI
	hqEcVfJqxA2f93mCt36VaHZ0zk0p8J4rSCiEUT4bVCwW4t4blMJvAgZVYYKwku2kp8+TrPhLloPf3
	awVqtybswh3uEmGxloO1sLpbGvJv/Ej2PrsURfaUUwJ3zvzMNq59vZ4OrZiCdrXQKad4=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184243-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [xen-unstable test] 184243: tolerable FAIL
X-Osstest-Failures:
    xen-unstable:test-armhf-armhf-libvirt-raw:guest-start:fail:heisenbug
    xen-unstable:test-armhf-armhf-libvirt-raw:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-raw:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-amd64-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-qcow2:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-amd64-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-amd64-qemuu-nested-amd:debian-hvm-install/l1/l2:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-amd64-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-i386-libvirt-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-libvirt:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-pvshim:guest-start:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-credit1:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-credit1:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-thunderx:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-thunderx:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-xsm:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-credit2:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-credit2:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-libvirt-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-libvirt-xsm:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-arndale:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-arndale:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-multivcpu:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-multivcpu:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit2:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit2:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit1:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit1:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-libvirt-raw:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-libvirt-raw:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-libvirt-raw:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt-vhd:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-qcow2:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-vhd:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-vhd:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-rtds:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-rtds:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-vhd:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-vhd:saverestore-support-check:fail:nonblocking
X-Osstest-Versions-This:
    xen=49818cde637b5ec20383e46b71f93b2e7d867686
X-Osstest-Versions-That:
    xen=49818cde637b5ec20383e46b71f93b2e7d867686
From: osstest service owner <osstest-admin@xenproject.org>
Date: Tue, 02 Jan 2024 12:13:20 +0000

flight 184243 xen-unstable real [real]
http://logs.test-lab.xenproject.org/osstest/logs/184243/

Failures :-/ but no regressions.

Tests which are failing intermittently (not blocking):
 test-armhf-armhf-libvirt-raw 13 guest-start                fail pass in 184241

Tests which did not succeed, but are not blocking:
 test-armhf-armhf-libvirt-raw 15 saverestore-support-check fail in 184241 like 184239
 test-armhf-armhf-libvirt-raw 14 migrate-support-check fail in 184241 never pass
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 184241
 test-amd64-amd64-xl-qemut-win7-amd64 19 guest-stop            fail like 184241
 test-amd64-i386-xl-qemuu-win7-amd64 19 guest-stop             fail like 184241
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 184241
 test-armhf-armhf-libvirt-qcow2 15 saverestore-support-check   fail like 184241
 test-amd64-i386-xl-qemut-ws16-amd64 19 guest-stop             fail like 184241
 test-amd64-i386-xl-qemut-win7-amd64 19 guest-stop             fail like 184241
 test-amd64-amd64-xl-qemut-ws16-amd64 19 guest-stop            fail like 184241
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 184241
 test-amd64-i386-xl-qemuu-ws16-amd64 19 guest-stop             fail like 184241
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 184241
 test-amd64-i386-libvirt-xsm  15 migrate-support-check        fail   never pass
 test-amd64-i386-libvirt      15 migrate-support-check        fail   never pass
 test-amd64-i386-xl-pvshim    14 guest-start                  fail   never pass
 test-amd64-amd64-libvirt     15 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit1  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit1  16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl          15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl          16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-thunderx 15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-thunderx 16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-xsm      15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-xsm      16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-credit2  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit2  16 saverestore-support-check    fail   never pass
 test-arm64-arm64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-xsm 16 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-armhf-armhf-xl-arndale  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-arndale  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl          15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-multivcpu 15 migrate-support-check        fail  never pass
 test-armhf-armhf-xl-multivcpu 16 saverestore-support-check    fail  never pass
 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-armhf-armhf-libvirt     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit2  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit2  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-credit1  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit1  16 saverestore-support-check    fail   never pass
 test-amd64-i386-libvirt-raw  14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 15 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-vhd 14 migrate-support-check        fail   never pass
 test-armhf-armhf-libvirt-qcow2 14 migrate-support-check        fail never pass
 test-arm64-arm64-xl-vhd      14 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-vhd      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-rtds     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-rtds     16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-vhd      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      15 saverestore-support-check    fail   never pass

version targeted for testing:
 xen                  49818cde637b5ec20383e46b71f93b2e7d867686
baseline version:
 xen                  49818cde637b5ec20383e46b71f93b2e7d867686

Last test of basis   184243  2024-01-02 01:55:39 Z    0 days
Testing same since                          (not found)         0 attempts

jobs:
 build-amd64-xsm                                              pass    
 build-arm64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64-xtf                                              pass    
 build-amd64                                                  pass    
 build-arm64                                                  pass    
 build-armhf                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-arm64-libvirt                                          pass    
 build-armhf-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-prev                                             pass    
 build-i386-prev                                              pass    
 build-amd64-pvops                                            pass    
 build-arm64-pvops                                            pass    
 build-armhf-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-xtf-amd64-amd64-1                                       pass    
 test-xtf-amd64-amd64-2                                       pass    
 test-xtf-amd64-amd64-3                                       pass    
 test-xtf-amd64-amd64-4                                       pass    
 test-xtf-amd64-amd64-5                                       pass    
 test-amd64-amd64-xl                                          pass    
 test-amd64-coresched-amd64-xl                                pass    
 test-arm64-arm64-xl                                          pass    
 test-armhf-armhf-xl                                          pass    
 test-amd64-i386-xl                                           pass    
 test-amd64-coresched-i386-xl                                 pass    
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm           pass    
 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm            pass    
 test-amd64-amd64-xl-qemut-stubdom-debianhvm-amd64-xsm        pass    
 test-amd64-i386-xl-qemut-stubdom-debianhvm-amd64-xsm         pass    
 test-amd64-amd64-xl-qemut-debianhvm-i386-xsm                 pass    
 test-amd64-i386-xl-qemut-debianhvm-i386-xsm                  pass    
 test-amd64-amd64-xl-qemuu-debianhvm-i386-xsm                 pass    
 test-amd64-i386-xl-qemuu-debianhvm-i386-xsm                  pass    
 test-amd64-amd64-libvirt-xsm                                 pass    
 test-arm64-arm64-libvirt-xsm                                 pass    
 test-amd64-i386-libvirt-xsm                                  pass    
 test-amd64-amd64-xl-xsm                                      pass    
 test-arm64-arm64-xl-xsm                                      pass    
 test-amd64-i386-xl-xsm                                       pass    
 test-amd64-amd64-qemuu-nested-amd                            fail    
 test-amd64-amd64-xl-pvhv2-amd                                pass    
 test-amd64-i386-qemut-rhel6hvm-amd                           pass    
 test-amd64-i386-qemuu-rhel6hvm-amd                           pass    
 test-amd64-amd64-dom0pvh-xl-amd                              pass    
 test-amd64-amd64-xl-qemut-debianhvm-amd64                    pass    
 test-amd64-i386-xl-qemut-debianhvm-amd64                     pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64                    pass    
 test-amd64-i386-xl-qemuu-debianhvm-amd64                     pass    
 test-amd64-i386-freebsd10-amd64                              pass    
 test-amd64-amd64-qemuu-freebsd11-amd64                       pass    
 test-amd64-amd64-qemuu-freebsd12-amd64                       pass    
 test-amd64-amd64-xl-qemuu-ovmf-amd64                         pass    
 test-amd64-i386-xl-qemuu-ovmf-amd64                          pass    
 test-amd64-amd64-xl-qemut-win7-amd64                         fail    
 test-amd64-i386-xl-qemut-win7-amd64                          fail    
 test-amd64-amd64-xl-qemuu-win7-amd64                         fail    
 test-amd64-i386-xl-qemuu-win7-amd64                          fail    
 test-amd64-amd64-xl-qemut-ws16-amd64                         fail    
 test-amd64-i386-xl-qemut-ws16-amd64                          fail    
 test-amd64-amd64-xl-qemuu-ws16-amd64                         fail    
 test-amd64-i386-xl-qemuu-ws16-amd64                          fail    
 test-armhf-armhf-xl-arndale                                  pass    
 test-amd64-amd64-examine-bios                                pass    
 test-amd64-i386-examine-bios                                 pass    
 test-amd64-amd64-xl-credit1                                  pass    
 test-arm64-arm64-xl-credit1                                  pass    
 test-armhf-armhf-xl-credit1                                  pass    
 test-amd64-amd64-xl-credit2                                  pass    
 test-arm64-arm64-xl-credit2                                  pass    
 test-armhf-armhf-xl-credit2                                  pass    
 test-amd64-amd64-xl-qemuu-dmrestrict-amd64-dmrestrict        pass    
 test-amd64-i386-xl-qemuu-dmrestrict-amd64-dmrestrict         pass    
 test-amd64-amd64-examine                                     pass    
 test-arm64-arm64-examine                                     pass    
 test-armhf-armhf-examine                                     pass    
 test-amd64-i386-examine                                      pass    
 test-amd64-i386-freebsd10-i386                               pass    
 test-amd64-amd64-qemuu-nested-intel                          pass    
 test-amd64-amd64-xl-pvhv2-intel                              pass    
 test-amd64-i386-qemut-rhel6hvm-intel                         pass    
 test-amd64-i386-qemuu-rhel6hvm-intel                         pass    
 test-amd64-amd64-dom0pvh-xl-intel                            pass    
 test-amd64-amd64-libvirt                                     pass    
 test-armhf-armhf-libvirt                                     pass    
 test-amd64-i386-libvirt                                      pass    
 test-amd64-amd64-livepatch                                   pass    
 test-amd64-i386-livepatch                                    pass    
 test-amd64-amd64-migrupgrade                                 pass    
 test-amd64-i386-migrupgrade                                  pass    
 test-amd64-amd64-xl-multivcpu                                pass    
 test-armhf-armhf-xl-multivcpu                                pass    
 test-amd64-amd64-pair                                        pass    
 test-amd64-i386-pair                                         pass    
 test-amd64-amd64-libvirt-pair                                pass    
 test-amd64-i386-libvirt-pair                                 pass    
 test-amd64-amd64-xl-pvshim                                   pass    
 test-amd64-i386-xl-pvshim                                    fail    
 test-amd64-amd64-pygrub                                      pass    
 test-armhf-armhf-libvirt-qcow2                               pass    
 test-amd64-amd64-xl-qcow2                                    pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-armhf-armhf-libvirt-raw                                 fail    
 test-amd64-i386-libvirt-raw                                  pass    
 test-amd64-amd64-xl-rtds                                     pass    
 test-armhf-armhf-xl-rtds                                     pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64-shadow             pass    
 test-amd64-i386-xl-qemuu-debianhvm-amd64-shadow              pass    
 test-amd64-amd64-xl-shadow                                   pass    
 test-amd64-i386-xl-shadow                                    pass    
 test-arm64-arm64-xl-thunderx                                 pass    
 test-amd64-amd64-examine-uefi                                pass    
 test-amd64-i386-examine-uefi                                 pass    
 test-amd64-amd64-libvirt-vhd                                 pass    
 test-arm64-arm64-xl-vhd                                      pass    
 test-armhf-armhf-xl-vhd                                      pass    
 test-amd64-i386-xl-vhd                                       pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Published tested tree is already up to date.



From xen-devel-bounces@lists.xenproject.org Tue Jan 02 12:39:00 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 02 Jan 2024 12:39:00 +0000
Received: from list by lists.xenproject.org with outflank-mailman.660674.1030228 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rKe2o-00076U-7o; Tue, 02 Jan 2024 12:38:54 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 660674.1030228; Tue, 02 Jan 2024 12:38:54 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rKe2o-00076N-4n; Tue, 02 Jan 2024 12:38:54 +0000
Received: by outflank-mailman (input) for mailman id 660674;
 Tue, 02 Jan 2024 12:38:53 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=nGpE=IM=gmail.com=marcandre.lureau@srs-se1.protection.inumbo.net>)
 id 1rKe2m-00076H-TD
 for xen-devel@lists.xenproject.org; Tue, 02 Jan 2024 12:38:53 +0000
Received: from mail-qt1-x82d.google.com (mail-qt1-x82d.google.com
 [2607:f8b0:4864:20::82d])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id e1111f61-a96b-11ee-9b0f-b553b5be7939;
 Tue, 02 Jan 2024 13:38:50 +0100 (CET)
Received: by mail-qt1-x82d.google.com with SMTP id
 d75a77b69052e-427fcbcd6fbso30861101cf.1
 for <xen-devel@lists.xenproject.org>; Tue, 02 Jan 2024 04:38:50 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: e1111f61-a96b-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1704199129; x=1704803929; darn=lists.xenproject.org;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:from:to:cc:subject:date
         :message-id:reply-to;
        bh=GcbpqKmrxIcVGhe9jtn9l/ecXesNzVaRkKW9DjDnWgo=;
        b=RWfMDcfAkh6k9dJipZ7xeDgWN3HVAYn55IeCFhhpm3NA8eL/Ub7RJfF6V320nRgVYv
         uqnR0txYZJo+VUCY7Cct+YQdPCKq6NLxb1FjerkS3PsHraXdCFuu7HKtgwB4Pn+jZ3QL
         Nl/GSXTmOg6Q9Gis6qW1d3gaR9Qv+LZCY45CLoOFFpE91PYLRQJoyzINwkyEP1hX/QW4
         2HaeKGbqTMwlWpL0N1FPAZ625XJyGuYdfNcFFjXQJQDIAWiwpOSmdZPJrQ7fSq+1YjyO
         ULoJF8PgIIbYBooabv34lHor8xbMgGOlYl4ioN7V7KCskE6DTf48z17TFekb2qSBnrUJ
         5utg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704199129; x=1704803929;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to;
        bh=GcbpqKmrxIcVGhe9jtn9l/ecXesNzVaRkKW9DjDnWgo=;
        b=CiZ27c4tgCeZyNR+o8AOiE7AMKKwmpo0k9b7uhBxZUbNcj5Kv472cdpXEbfiMtoIgW
         uftSFWRFYQSUTaol8pnSnFgjUl+bUMV1R4gqwA7bUkWFCY8zbQfxSvh8RNxatDBMEllv
         cYh7vP0cAx9vaGFvT6zioTa8ERasQh88FvMwZL9w7etzEVpRfbGtQNNagzuh38AqPA1d
         0FDWF+u2IPMKax9c4NsFVhCrtw+lHb2lTxR0231HJxLDAj54CbzdC7zVis/LveTpIG1z
         6YTCnzQXpAXFWhCRbqKPJ9AyAhjIihvldIV95Bz6kKHHfWaTAqxKmhZMnXiks8YcJ9fg
         YV9Q==
X-Gm-Message-State: AOJu0Yzv/bNrC+D/GwCthz8OPmxmZshPxCmlHCZ/CXJaU7hM7XGdynVL
	LoRPTiZMZNzmd7eGKH6oDpeOww46pEmb2NQGL/I=
X-Google-Smtp-Source: AGHT+IG26kYUFaWjf5uZDH3egMIl6ti9fbtHooLz/bmbTpxtaSMd+ZpifQ3ZfowgyeX7A31OlfuSAlPW2KuImvPJXE8=
X-Received: by 2002:ac8:5906:0:b0:428:272c:a655 with SMTP id
 6-20020ac85906000000b00428272ca655mr3086343qty.2.1704199129149; Tue, 02 Jan
 2024 04:38:49 -0800 (PST)
MIME-Version: 1.0
References: <20231219075320.165227-1-ray.huang@amd.com> <20231219075320.165227-8-ray.huang@amd.com>
In-Reply-To: <20231219075320.165227-8-ray.huang@amd.com>
From: =?UTF-8?B?TWFyYy1BbmRyw6kgTHVyZWF1?= <marcandre.lureau@gmail.com>
Date: Tue, 2 Jan 2024 16:38:37 +0400
Message-ID: <CAJ+F1CKDJdXFdVx0qLs9mFAdWucrkA3m19XECs6jwN4xH+5j6g@mail.gmail.com>
Subject: Re: [PATCH v6 07/11] virtio-gpu: Handle resource blob commands
To: Huang Rui <ray.huang@amd.com>
Cc: Akihiko Odaki <akihiko.odaki@daynix.com>, =?UTF-8?Q?Philippe_Mathieu=2DDaud=C3=A9?= <philmd@linaro.org>, 
	Gerd Hoffmann <kraxel@redhat.com>, "Michael S . Tsirkin" <mst@redhat.com>, 
	Stefano Stabellini <sstabellini@kernel.org>, Anthony PERARD <anthony.perard@citrix.com>, 
	Antonio Caggiano <quic_acaggian@quicinc.com>, "Dr . David Alan Gilbert" <dgilbert@redhat.com>, 
	Robert Beckett <bob.beckett@collabora.com>, Dmitry Osipenko <dmitry.osipenko@collabora.com>, 
	Gert Wollny <gert.wollny@collabora.com>, =?UTF-8?B?QWxleCBCZW5uw6ll?= <alex.bennee@linaro.org>, 
	qemu-devel@nongnu.org, xen-devel@lists.xenproject.org, 
	Gurchetan Singh <gurchetansingh@chromium.org>, ernunes@redhat.com, 
	Alyssa Ross <hi@alyssa.is>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>, 
	Alex Deucher <alexander.deucher@amd.com>, Stefano Stabellini <stefano.stabellini@amd.com>, 
	=?UTF-8?Q?Christian_K=C3=B6nig?= <christian.koenig@amd.com>, 
	Xenia Ragiadakou <xenia.ragiadakou@amd.com>, 
	Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com>, Honglei Huang <honglei1.huang@amd.com>, 
	Julia Zhang <julia.zhang@amd.com>, Chen Jiqian <Jiqian.Chen@amd.com>, 
	Antonio Caggiano <antonio.caggiano@collabora.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

Hi

On Tue, Dec 19, 2023 at 11:55=E2=80=AFAM Huang Rui <ray.huang@amd.com> wrot=
e:
>
> From: Antonio Caggiano <antonio.caggiano@collabora.com>
>
> Support BLOB resources creation, mapping and unmapping by calling the
> new stable virglrenderer 0.10 interface. Only enabled when available and
> via the blob config. E.g. -device virtio-vga-gl,blob=3Dtrue
>
> Signed-off-by: Antonio Caggiano <antonio.caggiano@collabora.com>
> Signed-off-by: Dmitry Osipenko <dmitry.osipenko@collabora.com>
> Signed-off-by: Xenia Ragiadakou <xenia.ragiadakou@amd.com>
> Signed-off-by: Huang Rui <ray.huang@amd.com>
> ---
>
> Changes in v6:
> - Use new struct virgl_gpu_resource.
> - Unmap, unref and destroy the resource only after the memory region
>   has been completely removed.
> - In unref check whether the resource is still mapped.
> - In unmap_blob check whether the resource has been already unmapped.
> - Fix coding style
>
>  hw/display/virtio-gpu-virgl.c | 274 +++++++++++++++++++++++++++++++++-
>  hw/display/virtio-gpu.c       |   4 +-
>  meson.build                   |   4 +
>  3 files changed, 276 insertions(+), 6 deletions(-)

Could you split this patch to introduce the new resource
ref/get/put/destroy functions first, before adding the blob commands.
Please explain the rationale of the changes, why they are safe or
equivalent to current code. I'd also suggest documentation and better
naming for the functions, or inlined code as appropriate, as it's
confusing to understand together what should be used and when.

>
> diff --git a/hw/display/virtio-gpu-virgl.c b/hw/display/virtio-gpu-virgl.=
c
> index faab374336..5a3a292f79 100644
> --- a/hw/display/virtio-gpu-virgl.c
> +++ b/hw/display/virtio-gpu-virgl.c
> @@ -17,6 +17,7 @@
>  #include "trace.h"
>  #include "hw/virtio/virtio.h"
>  #include "hw/virtio/virtio-gpu.h"
> +#include "hw/virtio/virtio-gpu-bswap.h"
>
>  #include "ui/egl-helpers.h"
>
> @@ -24,8 +25,62 @@
>
>  struct virgl_gpu_resource {
>      struct virtio_gpu_simple_resource res;
> +    uint32_t ref;
> +    VirtIOGPU *g;
> +
> +#ifdef HAVE_VIRGL_RESOURCE_BLOB
> +    /* only blob resource needs this region to be mapped as guest mmio *=
/
> +    MemoryRegion *region;
> +#endif
>  };
>
> +static void vres_get_ref(struct virgl_gpu_resource *vres)
> +{
> +    uint32_t ref;
> +
> +    ref =3D qatomic_fetch_inc(&vres->ref);
> +    g_assert(ref < INT_MAX);
> +}
> +
> +static void virgl_resource_destroy(struct virgl_gpu_resource *vres)
> +{
> +    struct virtio_gpu_simple_resource *res;
> +    VirtIOGPU *g;
> +
> +    if (!vres) {
> +        return;
> +    }
> +
> +    g =3D vres->g;
> +    res =3D &vres->res;
> +    QTAILQ_REMOVE(&g->reslist, res, next);
> +    virtio_gpu_cleanup_mapping(g, res);
> +    g_free(vres);
> +}
> +
> +static void virgl_resource_unref(struct virgl_gpu_resource *vres)
> +{
> +    struct virtio_gpu_simple_resource *res;
> +
> +    if (!vres) {
> +        return;
> +    }
> +
> +    res =3D &vres->res;
> +    virgl_renderer_resource_detach_iov(res->resource_id, NULL, NULL);
> +    virgl_renderer_resource_unref(res->resource_id);
> +}
> +
> +static void vres_put_ref(struct virgl_gpu_resource *vres)
> +{
> +    g_assert(vres->ref > 0);
> +
> +    if (qatomic_fetch_dec(&vres->ref) =3D=3D 1) {
> +        virgl_resource_unref(vres);
> +        virgl_resource_destroy(vres);
> +    }
> +}
> +
>  static struct virgl_gpu_resource *
>  virgl_gpu_find_resource(VirtIOGPU *g, uint32_t resource_id)
>  {
> @@ -59,6 +114,8 @@ static void virgl_cmd_create_resource_2d(VirtIOGPU *g,
>                                         c2d.width, c2d.height);
>
>      vres =3D g_new0(struct virgl_gpu_resource, 1);
> +    vres_get_ref(vres);
> +    vres->g =3D g;
>      vres->res.width =3D c2d.width;
>      vres->res.height =3D c2d.height;
>      vres->res.format =3D c2d.format;
> @@ -91,6 +148,8 @@ static void virgl_cmd_create_resource_3d(VirtIOGPU *g,
>                                         c3d.width, c3d.height, c3d.depth)=
;
>
>      vres =3D g_new0(struct virgl_gpu_resource, 1);
> +    vres_get_ref(vres);
> +    vres->g =3D g;
>      vres->res.width =3D c3d.width;
>      vres->res.height =3D c3d.height;
>      vres->res.format =3D c3d.format;
> @@ -126,12 +185,21 @@ static void virgl_cmd_resource_unref(VirtIOGPU *g,
>          return;
>      }
>
> -    virgl_renderer_resource_detach_iov(unref.resource_id, NULL, NULL);
> -    virgl_renderer_resource_unref(unref.resource_id);
> +#ifdef HAVE_VIRGL_RESOURCE_BLOB
> +    if (vres->region) {
> +        VirtIOGPUBase *b =3D VIRTIO_GPU_BASE(g);
> +        MemoryRegion *mr =3D vres->region;
> +
> +        warn_report("%s: blob resource %d not unmapped",
> +                    __func__, unref.resource_id);
> +        vres->region =3D NULL;
> +        memory_region_set_enabled(mr, false);
> +        memory_region_del_subregion(&b->hostmem, mr);
> +        object_unparent(OBJECT(mr));
> +    }
> +#endif /* HAVE_VIRGL_RESOURCE_BLOB */
>
> -    QTAILQ_REMOVE(&g->reslist, &vres->res, next);
> -    virtio_gpu_cleanup_mapping(g, &vres->res);
> -    g_free(vres);
> +    vres_put_ref(vres);
>  }
>
>  static void virgl_cmd_context_create(VirtIOGPU *g,
> @@ -470,6 +538,191 @@ static void virgl_cmd_get_capset(VirtIOGPU *g,
>      g_free(resp);
>  }
>
> +#ifdef HAVE_VIRGL_RESOURCE_BLOB
> +
> +static void virgl_resource_unmap(struct virgl_gpu_resource *vres)
> +{
> +    if (!vres) {
> +        return;
> +    }
> +
> +    virgl_renderer_resource_unmap(vres->res.resource_id);
> +
> +    vres_put_ref(vres);
> +}
> +
> +static void virgl_resource_blob_async_unmap(void *obj)
> +{
> +    MemoryRegion *mr =3D MEMORY_REGION(obj);
> +    struct virgl_gpu_resource *vres =3D mr->opaque;
> +
> +    virgl_resource_unmap(vres);
> +
> +    g_free(obj);
> +}
> +
> +static void virgl_cmd_resource_create_blob(VirtIOGPU *g,
> +                                           struct virtio_gpu_ctrl_comman=
d *cmd)
> +{
> +    struct virgl_gpu_resource *vres;
> +    struct virtio_gpu_resource_create_blob cblob;
> +    struct virgl_renderer_resource_create_blob_args virgl_args =3D { 0 }=
;
> +    int ret;
> +
> +    VIRTIO_GPU_FILL_CMD(cblob);
> +    virtio_gpu_create_blob_bswap(&cblob);
> +    trace_virtio_gpu_cmd_res_create_blob(cblob.resource_id, cblob.size);
> +
> +    if (cblob.resource_id =3D=3D 0) {
> +        qemu_log_mask(LOG_GUEST_ERROR, "%s: resource id 0 is not allowed=
\n",
> +                      __func__);
> +        cmd->error =3D VIRTIO_GPU_RESP_ERR_INVALID_RESOURCE_ID;
> +        return;
> +    }
> +
> +    vres =3D virgl_gpu_find_resource(g, cblob.resource_id);
> +    if (vres) {
> +        qemu_log_mask(LOG_GUEST_ERROR, "%s: resource already exists %d\n=
",
> +                      __func__, cblob.resource_id);
> +        cmd->error =3D VIRTIO_GPU_RESP_ERR_INVALID_RESOURCE_ID;
> +        return;
> +    }
> +
> +    vres =3D g_new0(struct virgl_gpu_resource, 1);
> +    vres_get_ref(vres);
> +    vres->g =3D g;
> +    vres->res.resource_id =3D cblob.resource_id;
> +    vres->res.blob_size =3D cblob.size;
> +
> +    if (cblob.blob_mem !=3D VIRTIO_GPU_BLOB_MEM_HOST3D) {
> +        ret =3D virtio_gpu_create_mapping_iov(g, cblob.nr_entries, sizeo=
f(cblob),
> +                                            cmd, &vres->res.addrs,
> +                                            &vres->res.iov, &vres->res.i=
ov_cnt);
> +        if (!ret) {
> +            g_free(vres);
> +            cmd->error =3D VIRTIO_GPU_RESP_ERR_UNSPEC;
> +            return;
> +        }
> +    }
> +
> +    QTAILQ_INSERT_HEAD(&g->reslist, &vres->res, next);
> +
> +    virgl_args.res_handle =3D cblob.resource_id;
> +    virgl_args.ctx_id =3D cblob.hdr.ctx_id;
> +    virgl_args.blob_mem =3D cblob.blob_mem;
> +    virgl_args.blob_id =3D cblob.blob_id;
> +    virgl_args.blob_flags =3D cblob.blob_flags;
> +    virgl_args.size =3D cblob.size;
> +    virgl_args.iovecs =3D vres->res.iov;
> +    virgl_args.num_iovs =3D vres->res.iov_cnt;
> +
> +    ret =3D virgl_renderer_resource_create_blob(&virgl_args);
> +    if (ret) {
> +        qemu_log_mask(LOG_GUEST_ERROR, "%s: virgl blob create error: %s\=
n",
> +                      __func__, strerror(-ret));
> +        cmd->error =3D VIRTIO_GPU_RESP_ERR_UNSPEC;
> +    }
> +}
> +
> +static void virgl_cmd_resource_map_blob(VirtIOGPU *g,
> +                                        struct virtio_gpu_ctrl_command *=
cmd)
> +{
> +    struct virgl_gpu_resource *vres;
> +    struct virtio_gpu_resource_map_blob mblob;
> +    int ret;
> +    void *data;
> +    uint64_t size;
> +    struct virtio_gpu_resp_map_info resp;
> +    VirtIOGPUBase *b =3D VIRTIO_GPU_BASE(g);
> +
> +    VIRTIO_GPU_FILL_CMD(mblob);
> +    virtio_gpu_map_blob_bswap(&mblob);
> +
> +    if (mblob.resource_id =3D=3D 0) {
> +        qemu_log_mask(LOG_GUEST_ERROR, "%s: resource id 0 is not allowed=
\n",
> +                      __func__);
> +        cmd->error =3D VIRTIO_GPU_RESP_ERR_INVALID_RESOURCE_ID;
> +        return;
> +    }
> +
> +    vres =3D virgl_gpu_find_resource(g, mblob.resource_id);
> +    if (!vres) {
> +        qemu_log_mask(LOG_GUEST_ERROR, "%s: resource does not exist %d\n=
",
> +                      __func__, mblob.resource_id);
> +        cmd->error =3D VIRTIO_GPU_RESP_ERR_INVALID_RESOURCE_ID;
> +        return;
> +    }
> +    if (vres->region) {
> +        qemu_log_mask(LOG_GUEST_ERROR, "%s: resource already mapped %d\n=
",
> +                      __func__, mblob.resource_id);
> +        cmd->error =3D VIRTIO_GPU_RESP_ERR_INVALID_RESOURCE_ID;
> +        return;
> +    }
> +
> +    ret =3D virgl_renderer_resource_map(vres->res.resource_id, &data, &s=
ize);
> +    if (ret) {
> +        qemu_log_mask(LOG_GUEST_ERROR, "%s: resource map error: %s\n",
> +                      __func__, strerror(-ret));
> +        cmd->error =3D VIRTIO_GPU_RESP_ERR_INVALID_RESOURCE_ID;
> +        return;
> +    }
> +
> +    vres_get_ref(vres);
> +    vres->region =3D g_new0(MemoryRegion, 1);
> +    memory_region_init_ram_ptr(vres->region, OBJECT(g), NULL, size, data=
);
> +    vres->region->opaque =3D vres;
> +    OBJECT(vres->region)->free =3D virgl_resource_blob_async_unmap;
> +    memory_region_add_subregion(&b->hostmem, mblob.offset, vres->region)=
;
> +    memory_region_set_enabled(vres->region, true);
> +
> +    memset(&resp, 0, sizeof(resp));
> +    resp.hdr.type =3D VIRTIO_GPU_RESP_OK_MAP_INFO;
> +    virgl_renderer_resource_get_map_info(mblob.resource_id, &resp.map_in=
fo);
> +    virtio_gpu_ctrl_response(g, cmd, &resp.hdr, sizeof(resp));
> +}
> +
> +static void virgl_cmd_resource_unmap_blob(VirtIOGPU *g,
> +                                          struct virtio_gpu_ctrl_command=
 *cmd)
> +{
> +    struct virgl_gpu_resource *vres;
> +    struct virtio_gpu_resource_unmap_blob ublob;
> +    VirtIOGPUBase *b =3D VIRTIO_GPU_BASE(g);
> +    MemoryRegion *mr;
> +
> +    VIRTIO_GPU_FILL_CMD(ublob);
> +    virtio_gpu_unmap_blob_bswap(&ublob);
> +
> +    if (ublob.resource_id =3D=3D 0) {
> +        qemu_log_mask(LOG_GUEST_ERROR, "%s: resource id 0 is not allowed=
\n",
> +                      __func__);
> +        cmd->error =3D VIRTIO_GPU_RESP_ERR_INVALID_RESOURCE_ID;
> +        return;
> +    }
> +
> +    vres =3D virgl_gpu_find_resource(g, ublob.resource_id);
> +    if (!vres) {
> +        qemu_log_mask(LOG_GUEST_ERROR, "%s: resource does not exist %d\n=
",
> +                      __func__, ublob.resource_id);
> +        cmd->error =3D VIRTIO_GPU_RESP_ERR_INVALID_RESOURCE_ID;
> +        return;
> +    }
> +
> +    if (!vres->region) {
> +        qemu_log_mask(LOG_GUEST_ERROR, "%s: resource already unmapped %d=
\n",
> +                      __func__, ublob.resource_id);
> +        cmd->error =3D VIRTIO_GPU_RESP_ERR_INVALID_RESOURCE_ID;
> +        return;
> +    }
> +
> +    mr =3D vres->region;
> +    vres->region =3D NULL;
> +    memory_region_set_enabled(mr, false);
> +    memory_region_del_subregion(&b->hostmem, mr);
> +    object_unparent(OBJECT(mr));
> +}
> +
> +#endif /* HAVE_VIRGL_RESOURCE_BLOB */
> +
>  void virtio_gpu_virgl_process_cmd(VirtIOGPU *g,
>                                        struct virtio_gpu_ctrl_command *cm=
d)
>  {
> @@ -536,6 +789,17 @@ void virtio_gpu_virgl_process_cmd(VirtIOGPU *g,
>      case VIRTIO_GPU_CMD_GET_EDID:
>          virtio_gpu_get_edid(g, cmd);
>          break;
> +#ifdef HAVE_VIRGL_RESOURCE_BLOB
> +    case VIRTIO_GPU_CMD_RESOURCE_CREATE_BLOB:
> +        virgl_cmd_resource_create_blob(g, cmd);
> +        break;
> +    case VIRTIO_GPU_CMD_RESOURCE_MAP_BLOB:
> +        virgl_cmd_resource_map_blob(g, cmd);
> +        break;
> +    case VIRTIO_GPU_CMD_RESOURCE_UNMAP_BLOB:
> +        virgl_cmd_resource_unmap_blob(g, cmd);
> +        break;
> +#endif /* HAVE_VIRGL_RESOURCE_BLOB */
>      default:
>          cmd->error =3D VIRTIO_GPU_RESP_ERR_UNSPEC;
>          break;
> diff --git a/hw/display/virtio-gpu.c b/hw/display/virtio-gpu.c
> index 4c3ec9d0ea..8189c392dc 100644
> --- a/hw/display/virtio-gpu.c
> +++ b/hw/display/virtio-gpu.c
> @@ -1449,10 +1449,12 @@ void virtio_gpu_device_realize(DeviceState *qdev,=
 Error **errp)
>              return;
>          }
>
> +#ifndef HAVE_VIRGL_RESOURCE_BLOB
>          if (virtio_gpu_virgl_enabled(g->parent_obj.conf)) {
> -            error_setg(errp, "blobs and virgl are not compatible (yet)")=
;
> +            error_setg(errp, "Linked virglrenderer does not support blob=
 resources");
>              return;
>          }
> +#endif
>      }
>
>      if (!virtio_gpu_base_device_realize(qdev,
> diff --git a/meson.build b/meson.build
> index ea52ef1b9c..629407128e 100644
> --- a/meson.build
> +++ b/meson.build
> @@ -1054,6 +1054,10 @@ if not get_option('virglrenderer').auto() or have_=
system or have_vhost_user_gpu
>                           cc.has_function('virgl_renderer_context_create_=
with_flags',
>                                           prefix: '#include <virglrendere=
r.h>',
>                                           dependencies: virgl))
> +    config_host_data.set('HAVE_VIRGL_RESOURCE_BLOB',
> +                         cc.has_function('virgl_renderer_resource_create=
_blob',
> +                                         prefix: '#include <virglrendere=
r.h>',
> +                                         dependencies: virgl))
>    endif
>  endif
>  rutabaga =3D not_found
> --
> 2.25.1
>


--=20
Marc-Andr=C3=A9 Lureau


From xen-devel-bounces@lists.xenproject.org Tue Jan 02 12:50:26 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 02 Jan 2024 12:50:26 +0000
Received: from list by lists.xenproject.org with outflank-mailman.660681.1030238 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rKeDl-0003Bs-D9; Tue, 02 Jan 2024 12:50:13 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 660681.1030238; Tue, 02 Jan 2024 12:50:13 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rKeDl-0003Bl-9k; Tue, 02 Jan 2024 12:50:13 +0000
Received: by outflank-mailman (input) for mailman id 660681;
 Tue, 02 Jan 2024 12:50:12 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=nGpE=IM=gmail.com=marcandre.lureau@srs-se1.protection.inumbo.net>)
 id 1rKeDj-0003AO-Td
 for xen-devel@lists.xenproject.org; Tue, 02 Jan 2024 12:50:12 +0000
Received: from mail-yb1-xb2b.google.com (mail-yb1-xb2b.google.com
 [2607:f8b0:4864:20::b2b])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 74c8d2fd-a96d-11ee-9b0f-b553b5be7939;
 Tue, 02 Jan 2024 13:50:07 +0100 (CET)
Received: by mail-yb1-xb2b.google.com with SMTP id
 3f1490d57ef6-dbd722b55afso6284840276.2
 for <xen-devel@lists.xenproject.org>; Tue, 02 Jan 2024 04:50:07 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 74c8d2fd-a96d-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1704199806; x=1704804606; darn=lists.xenproject.org;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:from:to:cc:subject:date
         :message-id:reply-to;
        bh=P2n8zDne58pWS6ImjvSfvSCaO/MXEURGtI1qmUk0clk=;
        b=V7cW3AmEUCuptjt0kjjAxTucuuNa2LU1UHcW71zdjU+qk00l8wJBhjkWFGTENKlEMy
         tre/WSYrVcOxpbXSypGeHM0IxbUWPLi4DImAiStX1D7+HxM42cJXRM8tkrECuqSvErET
         DCsbOC85RFvlPr5GI5mcwR81VNS5FPaVFMu6l9c1pBGH7K3qc/1Uu2Lk4lOsqZaJDhjD
         /FU5jAFkvvHejjLvabu3JEf77/HVcpA0rIVYYkb0UnwjZBQhzzObB10FyV90goDLVQFY
         QM2+Ve+Vh4r+ssre2kLfCp6az/N+rAUHONsW0MvTDTqliTG5Iqc6ILfeAJmA154JkwVX
         r+KA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704199806; x=1704804606;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to;
        bh=P2n8zDne58pWS6ImjvSfvSCaO/MXEURGtI1qmUk0clk=;
        b=qwc+CqBm/Tt1+++MAj1hZzbtFxqxzdjHlcOAzTbh+KlMDKY1MpYVqNNY99qEJjfcG5
         YB9UT8sFL91gv9ecXbh0Q00L4CyPOrw+d75oKOY3KLop+0gmI1SqWHfl/qu7VTvZ21dY
         qAGq+7YB7dasKi8gLZGe1nofvZi5tzOVX/HCUP2tSLD3VlQ/nb6b6tCvjSu/CtSAKTwz
         YoLfppxq7y1ghDgubjnprKvEkR/76nd4TO/fWUqySQlYyeUsIUd8egJrk7iodzT3Ndl0
         O6JvlwwBj/q/801WQlxmuYs4N4ZMzPPp0zoAKTN8+hgRkXi9gYCvUH+PQWcG4orpf5vs
         BSrA==
X-Gm-Message-State: AOJu0YxoigMWmDnaQ/SPKXMtNOTe9xoKgll5spy8pKd/FDbhkq+pZho9
	Y0GjEEG0UZIed1WhvwsMmj1WkUyBTFlKxpOEbWc=
X-Google-Smtp-Source: AGHT+IGruFL6BYIztHmU1iipd9OJgk6z0yZHPlM2cQkgHMbKfbO0tj+ETwzjB0qD11EM0Q/JOHpeuTPJjvigPCccB7U=
X-Received: by 2002:a25:f823:0:b0:dbd:cf36:1e66 with SMTP id
 u35-20020a25f823000000b00dbdcf361e66mr9752503ybd.88.1704199806416; Tue, 02
 Jan 2024 04:50:06 -0800 (PST)
MIME-Version: 1.0
References: <20231219075320.165227-1-ray.huang@amd.com> <20231219075320.165227-9-ray.huang@amd.com>
In-Reply-To: <20231219075320.165227-9-ray.huang@amd.com>
From: =?UTF-8?B?TWFyYy1BbmRyw6kgTHVyZWF1?= <marcandre.lureau@gmail.com>
Date: Tue, 2 Jan 2024 16:49:54 +0400
Message-ID: <CAJ+F1C+NbeFkiGkN=JRifbs6QU2zyiMKUfQxA9KdonfFrL1CUg@mail.gmail.com>
Subject: Re: [PATCH v6 08/11] virtio-gpu: Resource UUID
To: Huang Rui <ray.huang@amd.com>
Cc: Akihiko Odaki <akihiko.odaki@daynix.com>, =?UTF-8?Q?Philippe_Mathieu=2DDaud=C3=A9?= <philmd@linaro.org>, 
	Gerd Hoffmann <kraxel@redhat.com>, "Michael S . Tsirkin" <mst@redhat.com>, 
	Stefano Stabellini <sstabellini@kernel.org>, Anthony PERARD <anthony.perard@citrix.com>, 
	Antonio Caggiano <quic_acaggian@quicinc.com>, "Dr . David Alan Gilbert" <dgilbert@redhat.com>, 
	Robert Beckett <bob.beckett@collabora.com>, Dmitry Osipenko <dmitry.osipenko@collabora.com>, 
	Gert Wollny <gert.wollny@collabora.com>, =?UTF-8?B?QWxleCBCZW5uw6ll?= <alex.bennee@linaro.org>, 
	qemu-devel@nongnu.org, xen-devel@lists.xenproject.org, 
	Gurchetan Singh <gurchetansingh@chromium.org>, ernunes@redhat.com, 
	Alyssa Ross <hi@alyssa.is>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>, 
	Alex Deucher <alexander.deucher@amd.com>, Stefano Stabellini <stefano.stabellini@amd.com>, 
	=?UTF-8?Q?Christian_K=C3=B6nig?= <christian.koenig@amd.com>, 
	Xenia Ragiadakou <xenia.ragiadakou@amd.com>, 
	Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com>, Honglei Huang <honglei1.huang@amd.com>, 
	Julia Zhang <julia.zhang@amd.com>, Chen Jiqian <Jiqian.Chen@amd.com>, 
	Antonio Caggiano <antonio.caggiano@collabora.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

Hi

On Tue, Dec 19, 2023 at 11:55=E2=80=AFAM Huang Rui <ray.huang@amd.com> wrot=
e:
>
> From: Antonio Caggiano <antonio.caggiano@collabora.com>
>
> Enable resource UUID feature and implement command resource assign UUID.
> This is done by introducing a hash table to map resource IDs to their
> UUIDs.

I agree with Akihiko, what about putting QemuUUID in struct
virtio_gpu_simple_resource?

(I also doubt about the hash table usefulness, but I don't know
how/why the UUID is used)

>
> Signed-off-by: Antonio Caggiano <antonio.caggiano@collabora.com>
> Signed-off-by: Huang Rui <ray.huang@amd.com>
> ---
>
> Changes in v6:
> - Set resource uuid as option.
> - Implement optional subsection of vmstate_virtio_gpu_resource_uuid_state
>   or virtio live migration.
> - Use g_int_hash/g_int_equal instead of the default.
> - Move virtio_vgpu_simple_resource initialization in the earlier new patc=
h
>   "virtio-gpu: Introduce virgl_gpu_resource structure"
>
>  hw/display/trace-events        |   1 +
>  hw/display/virtio-gpu-base.c   |   4 ++
>  hw/display/virtio-gpu-virgl.c  |   3 +
>  hw/display/virtio-gpu.c        | 119 +++++++++++++++++++++++++++++++++
>  include/hw/virtio/virtio-gpu.h |   7 ++
>  5 files changed, 134 insertions(+)
>
> diff --git a/hw/display/trace-events b/hw/display/trace-events
> index 2336a0ca15..54d6894c59 100644
> --- a/hw/display/trace-events
> +++ b/hw/display/trace-events
> @@ -41,6 +41,7 @@ virtio_gpu_cmd_res_create_blob(uint32_t res, uint64_t s=
ize) "res 0x%x, size %" P
>  virtio_gpu_cmd_res_unref(uint32_t res) "res 0x%x"
>  virtio_gpu_cmd_res_back_attach(uint32_t res) "res 0x%x"
>  virtio_gpu_cmd_res_back_detach(uint32_t res) "res 0x%x"
> +virtio_gpu_cmd_res_assign_uuid(uint32_t res) "res 0x%x"
>  virtio_gpu_cmd_res_xfer_toh_2d(uint32_t res) "res 0x%x"
>  virtio_gpu_cmd_res_xfer_toh_3d(uint32_t res) "res 0x%x"
>  virtio_gpu_cmd_res_xfer_fromh_3d(uint32_t res) "res 0x%x"
> diff --git a/hw/display/virtio-gpu-base.c b/hw/display/virtio-gpu-base.c
> index 37af256219..6bcee3882f 100644
> --- a/hw/display/virtio-gpu-base.c
> +++ b/hw/display/virtio-gpu-base.c
> @@ -236,6 +236,10 @@ virtio_gpu_base_get_features(VirtIODevice *vdev, uin=
t64_t features,
>          features |=3D (1 << VIRTIO_GPU_F_CONTEXT_INIT);
>      }
>
> +    if (virtio_gpu_resource_uuid_enabled(g->conf)) {
> +        features |=3D (1 << VIRTIO_GPU_F_RESOURCE_UUID);
> +    }
> +
>      return features;
>  }
>
> diff --git a/hw/display/virtio-gpu-virgl.c b/hw/display/virtio-gpu-virgl.=
c
> index 5a3a292f79..be9da6e780 100644
> --- a/hw/display/virtio-gpu-virgl.c
> +++ b/hw/display/virtio-gpu-virgl.c
> @@ -777,6 +777,9 @@ void virtio_gpu_virgl_process_cmd(VirtIOGPU *g,
>          /* TODO add security */
>          virgl_cmd_ctx_detach_resource(g, cmd);
>          break;
> +    case VIRTIO_GPU_CMD_RESOURCE_ASSIGN_UUID:
> +        virtio_gpu_resource_assign_uuid(g, cmd);
> +        break;
>      case VIRTIO_GPU_CMD_GET_CAPSET_INFO:
>          virgl_cmd_get_capset_info(g, cmd);
>          break;
> diff --git a/hw/display/virtio-gpu.c b/hw/display/virtio-gpu.c
> index 8189c392dc..466debb256 100644
> --- a/hw/display/virtio-gpu.c
> +++ b/hw/display/virtio-gpu.c
> @@ -958,6 +958,37 @@ virtio_gpu_resource_detach_backing(VirtIOGPU *g,
>      virtio_gpu_cleanup_mapping(g, res);
>  }
>
> +void virtio_gpu_resource_assign_uuid(VirtIOGPU *g,
> +                                     struct virtio_gpu_ctrl_command *cmd=
)
> +{
> +    struct virtio_gpu_simple_resource *res;
> +    struct virtio_gpu_resource_assign_uuid assign;
> +    struct virtio_gpu_resp_resource_uuid resp;
> +    QemuUUID *uuid;
> +
> +    VIRTIO_GPU_FILL_CMD(assign);
> +    virtio_gpu_bswap_32(&assign, sizeof(assign));
> +    trace_virtio_gpu_cmd_res_assign_uuid(assign.resource_id);
> +
> +    res =3D virtio_gpu_find_check_resource(g, assign.resource_id, false,=
 __func__, &cmd->error);
> +    if (!res) {
> +        return;
> +    }
> +
> +    memset(&resp, 0, sizeof(resp));
> +    resp.hdr.type =3D VIRTIO_GPU_RESP_OK_RESOURCE_UUID;
> +
> +    uuid =3D g_hash_table_lookup(g->resource_uuids, &assign.resource_id)=
;
> +    if (!uuid) {
> +        uuid =3D g_new(QemuUUID, 1);
> +        qemu_uuid_generate(uuid);
> +        g_hash_table_insert(g->resource_uuids, &assign.resource_id, uuid=
);
> +    }
> +
> +    memcpy(resp.uuid, uuid, sizeof(QemuUUID));
> +    virtio_gpu_ctrl_response(g, cmd, &resp.hdr, sizeof(resp));
> +}
> +
>  void virtio_gpu_simple_process_cmd(VirtIOGPU *g,
>                                     struct virtio_gpu_ctrl_command *cmd)
>  {
> @@ -1006,6 +1037,9 @@ void virtio_gpu_simple_process_cmd(VirtIOGPU *g,
>      case VIRTIO_GPU_CMD_RESOURCE_DETACH_BACKING:
>          virtio_gpu_resource_detach_backing(g, cmd);
>          break;
> +    case VIRTIO_GPU_CMD_RESOURCE_ASSIGN_UUID:
> +        virtio_gpu_resource_assign_uuid(g, cmd);
> +        break;
>      default:
>          cmd->error =3D VIRTIO_GPU_RESP_ERR_UNSPEC;
>          break;
> @@ -1400,6 +1434,57 @@ static int virtio_gpu_blob_load(QEMUFile *f, void =
*opaque, size_t size,
>      return 0;
>  }
>
> +static int virtio_gpu_resource_uuid_save(QEMUFile *f, void *opaque, size=
_t size,
> +                                         const VMStateField *field,
> +                                         JSONWriter *vmdesc)
> +{
> +    VirtIOGPU *g =3D opaque;
> +    struct virtio_gpu_simple_resource *res;
> +    QemuUUID *uuid;
> +
> +    /* in 2d mode we should never find unprocessed commands here */
> +    assert(QTAILQ_EMPTY(&g->cmdq));
> +
> +    QTAILQ_FOREACH(res, &g->reslist, next) {
> +        qemu_put_be32(f, res->resource_id);
> +        uuid =3D g_hash_table_lookup(g->resource_uuids, &res->resource_i=
d);
> +        qemu_put_buffer(f, (void *)uuid, sizeof(QemuUUID));
> +    }
> +    qemu_put_be32(f, 0); /* end of list */
> +
> +    g_hash_table_destroy(g->resource_uuids);
> +
> +    return 0;
> +}
> +
> +static int virtio_gpu_resource_uuid_load(QEMUFile *f, void *opaque, size=
_t size,
> +                                         const VMStateField *field)
> +{
> +    VirtIOGPU *g =3D opaque;
> +    struct virtio_gpu_simple_resource *res;
> +    uint32_t resource_id;
> +    QemuUUID *uuid =3D NULL;
> +
> +    g->resource_uuids =3D g_hash_table_new_full(g_int_hash, g_int_equal,=
 NULL, g_free);
> +    resource_id =3D qemu_get_be32(f);
> +    while (resource_id !=3D 0) {
> +        res =3D virtio_gpu_find_resource(g, resource_id);
> +        if (res) {
> +            return -EINVAL;
> +        }
> +
> +        res =3D g_new0(struct virtio_gpu_simple_resource, 1);
> +        res->resource_id =3D resource_id;
> +
> +        qemu_get_buffer(f, (void *)uuid, sizeof(QemuUUID));
> +        g_hash_table_insert(g->resource_uuids, &res->resource_id, uuid);
> +
> +        resource_id =3D qemu_get_be32(f);
> +    }
> +
> +    return 0;
> +}
> +
>  static int virtio_gpu_post_load(void *opaque, int version_id)
>  {
>      VirtIOGPU *g =3D opaque;
> @@ -1475,12 +1560,15 @@ void virtio_gpu_device_realize(DeviceState *qdev,=
 Error **errp)
>      QTAILQ_INIT(&g->reslist);
>      QTAILQ_INIT(&g->cmdq);
>      QTAILQ_INIT(&g->fenceq);
> +
> +    g->resource_uuids =3D g_hash_table_new_full(g_int_hash, g_int_equal,=
 NULL, g_free);
>  }
>
>  static void virtio_gpu_device_unrealize(DeviceState *qdev)
>  {
>      VirtIOGPU *g =3D VIRTIO_GPU(qdev);
>
> +    g_hash_table_destroy(g->resource_uuids);

better:
g_clear_pointer(&g->resource_uuids, g_hash_table_unref);

>      g_clear_pointer(&g->ctrl_bh, qemu_bh_delete);
>      g_clear_pointer(&g->cursor_bh, qemu_bh_delete);
>      g_clear_pointer(&g->reset_bh, qemu_bh_delete);
> @@ -1534,6 +1622,8 @@ void virtio_gpu_reset(VirtIODevice *vdev)
>          g_free(cmd);
>      }
>
> +    g_hash_table_remove_all(g->resource_uuids);
> +
>      virtio_gpu_base_reset(VIRTIO_GPU_BASE(vdev));
>  }
>
> @@ -1583,6 +1673,32 @@ const VMStateDescription vmstate_virtio_gpu_blob_s=
tate =3D {
>      },
>  };
>
> +static bool virtio_gpu_resource_uuid_state_needed(void *opaque)
> +{
> +    VirtIOGPU *g =3D VIRTIO_GPU(opaque);
> +
> +    return virtio_gpu_resource_uuid_enabled(g->parent_obj.conf);
> +}
> +
> +const VMStateDescription vmstate_virtio_gpu_resource_uuid_state =3D {
> +    .name =3D "virtio-gpu/resource_uuid",
> +    .minimum_version_id =3D VIRTIO_GPU_VM_VERSION,
> +    .version_id =3D VIRTIO_GPU_VM_VERSION,
> +    .needed =3D virtio_gpu_resource_uuid_state_needed,
> +    .fields =3D (const VMStateField[]){
> +        {
> +            .name =3D "virtio-gpu/resource_uuid",
> +            .info =3D &(const VMStateInfo) {
> +                .name =3D "resource_uuid",
> +                .get =3D virtio_gpu_resource_uuid_load,
> +                .put =3D virtio_gpu_resource_uuid_save,
> +            },
> +            .flags =3D VMS_SINGLE,
> +        } /* device */,
> +        VMSTATE_END_OF_LIST()
> +    },
> +};
> +
>  /*
>   * For historical reasons virtio_gpu does not adhere to virtio migration
>   * scheme as described in doc/virtio-migration.txt, in a sense that no
> @@ -1610,6 +1726,7 @@ static const VMStateDescription vmstate_virtio_gpu =
=3D {
>      },
>      .subsections =3D (const VMStateDescription * []) {
>          &vmstate_virtio_gpu_blob_state,
> +        &vmstate_virtio_gpu_resource_uuid_state,
>          NULL
>      },
>      .post_load =3D virtio_gpu_post_load,
> @@ -1622,6 +1739,8 @@ static Property virtio_gpu_properties[] =3D {
>      DEFINE_PROP_BIT("blob", VirtIOGPU, parent_obj.conf.flags,
>                      VIRTIO_GPU_FLAG_BLOB_ENABLED, false),
>      DEFINE_PROP_SIZE("hostmem", VirtIOGPU, parent_obj.conf.hostmem, 0),
> +    DEFINE_PROP_BIT("resource_uuid", VirtIOGPU, parent_obj.conf.flags,
> +                    VIRTIO_GPU_FLAG_RESOURCE_UUID_ENABLED, false),

why not enable it by default? (and set it to false for machine < 9.0

>  #ifdef HAVE_VIRGL_CONTEXT_CREATE_WITH_FLAGS
>      DEFINE_PROP_BIT("context_init", VirtIOGPU, parent_obj.conf.flags,
>                      VIRTIO_GPU_FLAG_CONTEXT_INIT_ENABLED, true),
> diff --git a/include/hw/virtio/virtio-gpu.h b/include/hw/virtio/virtio-gp=
u.h
> index 584ba2ed73..76b410fe91 100644
> --- a/include/hw/virtio/virtio-gpu.h
> +++ b/include/hw/virtio/virtio-gpu.h
> @@ -98,6 +98,7 @@ enum virtio_gpu_base_conf_flags {
>      VIRTIO_GPU_FLAG_BLOB_ENABLED,
>      VIRTIO_GPU_FLAG_CONTEXT_INIT_ENABLED,
>      VIRTIO_GPU_FLAG_RUTABAGA_ENABLED,
> +    VIRTIO_GPU_FLAG_RESOURCE_UUID_ENABLED,
>  };
>
>  #define virtio_gpu_virgl_enabled(_cfg) \
> @@ -114,6 +115,8 @@ enum virtio_gpu_base_conf_flags {
>      (_cfg.flags & (1 << VIRTIO_GPU_FLAG_CONTEXT_INIT_ENABLED))
>  #define virtio_gpu_rutabaga_enabled(_cfg) \
>      (_cfg.flags & (1 << VIRTIO_GPU_FLAG_RUTABAGA_ENABLED))
> +#define virtio_gpu_resource_uuid_enabled(_cfg) \
> +    (_cfg.flags & (1 << VIRTIO_GPU_FLAG_RESOURCE_UUID_ENABLED))
>  #define virtio_gpu_hostmem_enabled(_cfg) \
>      (_cfg.hostmem > 0)
>
> @@ -209,6 +212,8 @@ struct VirtIOGPU {
>          QTAILQ_HEAD(, VGPUDMABuf) bufs;
>          VGPUDMABuf *primary[VIRTIO_GPU_MAX_SCANOUTS];
>      } dmabuf;
> +
> +    GHashTable *resource_uuids;
>  };
>
>  struct VirtIOGPUClass {
> @@ -307,6 +312,8 @@ void virtio_gpu_cleanup_mapping_iov(VirtIOGPU *g,
>                                      struct iovec *iov, uint32_t count);
>  void virtio_gpu_cleanup_mapping(VirtIOGPU *g,
>                                  struct virtio_gpu_simple_resource *res);
> +void virtio_gpu_resource_assign_uuid(VirtIOGPU *g,
> +                                     struct virtio_gpu_ctrl_command *cmd=
);
>  void virtio_gpu_process_cmdq(VirtIOGPU *g);
>  void virtio_gpu_device_realize(DeviceState *qdev, Error **errp);
>  void virtio_gpu_reset(VirtIODevice *vdev);
> --
> 2.25.1
>


--=20
Marc-Andr=C3=A9 Lureau


From xen-devel-bounces@lists.xenproject.org Tue Jan 02 13:33:32 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 02 Jan 2024 13:33:32 +0000
Received: from list by lists.xenproject.org with outflank-mailman.660686.1030248 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rKeta-0005Bj-H3; Tue, 02 Jan 2024 13:33:26 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 660686.1030248; Tue, 02 Jan 2024 13:33:26 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rKeta-0005Bc-EG; Tue, 02 Jan 2024 13:33:26 +0000
Received: by outflank-mailman (input) for mailman id 660686;
 Tue, 02 Jan 2024 13:33:24 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=nGpE=IM=gmail.com=marcandre.lureau@srs-se1.protection.inumbo.net>)
 id 1rKetY-0005AA-Od
 for xen-devel@lists.xenproject.org; Tue, 02 Jan 2024 13:33:24 +0000
Received: from mail-qt1-x82f.google.com (mail-qt1-x82f.google.com
 [2607:f8b0:4864:20::82f])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 801d3a2e-a973-11ee-98ef-6d05b1d4d9a1;
 Tue, 02 Jan 2024 14:33:23 +0100 (CET)
Received: by mail-qt1-x82f.google.com with SMTP id
 d75a77b69052e-427d5bfe24cso55653611cf.1
 for <xen-devel@lists.xenproject.org>; Tue, 02 Jan 2024 05:33:23 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 801d3a2e-a973-11ee-98ef-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1704202402; x=1704807202; darn=lists.xenproject.org;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:from:to:cc:subject:date
         :message-id:reply-to;
        bh=EEwnovX2NIh6Wxa8+hZ77jwuvVFwPUA/9RKw8czw9Dc=;
        b=RsERoNfjf5ON88V9yL29sA2wRBWbAB+PFNio3q1TP/2r7r5B22HhfVm/I2rGYNYYL7
         JhhWRkZofoCo9VTnCNetaleuW859EEm0p3JbO8tT2eF91jMXfWG/joRoxxBz+pbL3+u6
         iqgJta8p71a5GRTIkuil/K+PunfcH5Mdi0A+a8LwBPdvX7rhMrrV0a47fELr3+CKABtx
         o67dbDaGOEKfGWP8pAXVxbGWbco1G4LdWpNSujFa2mZza/pOAFROt7jUQAYMPcqAicCy
         cZ73Lxk7M2exotGpn0AvXAwQ9FdWTbp2v4f8ZX/o2M/KeKCCYAoCzFn+tvWRZ6syrZ2I
         t1dw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704202402; x=1704807202;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to;
        bh=EEwnovX2NIh6Wxa8+hZ77jwuvVFwPUA/9RKw8czw9Dc=;
        b=i/XPtnCkU5TTcQuaFGt5I5yp2gpVkxTZkK1sEvnwwpd4WyxXUP1y5FihDaZbaNixY7
         tBb88PXbKWeJq2qvOphIYu4ygU0Tj5fD4PUvSIM4BvwaxBB/gxdItcvEWvtW3C9iuGlh
         1Krly1ryVztKwlhmmwH1UJuIqbn6Aoul61gqXF4VQhCkjAgJ5ITSdsRl8Vj161ClkdyB
         MfMJtCBFfQSTps9HIvkxe2BCKMkwcvBK2LHdy3f+PKEzdih0hehp1H1XpH7wgCe7zOR4
         WrjYhNzTiO2rziHcXyA7htVg3ssjoa/ILjqqUW/A9LpLeqj+H3xpC5IEBvoRwEdFECe6
         XkKA==
X-Gm-Message-State: AOJu0Yyj/xYdJmvYCngTEAxAE6o536yE+EXq86pG0llkfv7zRwx+e73o
	9ObWaynEnMAAoi7kx/kkw9jfs/2oUuXiI2lxr/s=
X-Google-Smtp-Source: AGHT+IG0KAjA8lZc5pB7ytIHUlKTzRKAF2WkhpKmMjlwxjZAZ3KCwdr3O3fCHbhBkW143mphlYO3eRUjo88cG0q5eDM=
X-Received: by 2002:a05:622a:6107:b0:428:1915:60de with SMTP id
 hg7-20020a05622a610700b00428191560demr6063368qtb.18.1704202402558; Tue, 02
 Jan 2024 05:33:22 -0800 (PST)
MIME-Version: 1.0
References: <20231219075320.165227-1-ray.huang@amd.com> <20231219075320.165227-11-ray.huang@amd.com>
In-Reply-To: <20231219075320.165227-11-ray.huang@amd.com>
From: =?UTF-8?B?TWFyYy1BbmRyw6kgTHVyZWF1?= <marcandre.lureau@gmail.com>
Date: Tue, 2 Jan 2024 17:33:11 +0400
Message-ID: <CAJ+F1C+gQ7kwAD=Tv7uAgKtgA57wPkZcE_zadAogtMUEFUmFnQ@mail.gmail.com>
Subject: Re: [PATCH v6 10/11] virtio-gpu: Initialize Venus
To: Huang Rui <ray.huang@amd.com>
Cc: Akihiko Odaki <akihiko.odaki@daynix.com>, =?UTF-8?Q?Philippe_Mathieu=2DDaud=C3=A9?= <philmd@linaro.org>, 
	Gerd Hoffmann <kraxel@redhat.com>, "Michael S . Tsirkin" <mst@redhat.com>, 
	Stefano Stabellini <sstabellini@kernel.org>, Anthony PERARD <anthony.perard@citrix.com>, 
	Antonio Caggiano <quic_acaggian@quicinc.com>, "Dr . David Alan Gilbert" <dgilbert@redhat.com>, 
	Robert Beckett <bob.beckett@collabora.com>, Dmitry Osipenko <dmitry.osipenko@collabora.com>, 
	Gert Wollny <gert.wollny@collabora.com>, =?UTF-8?B?QWxleCBCZW5uw6ll?= <alex.bennee@linaro.org>, 
	qemu-devel@nongnu.org, xen-devel@lists.xenproject.org, 
	Gurchetan Singh <gurchetansingh@chromium.org>, ernunes@redhat.com, 
	Alyssa Ross <hi@alyssa.is>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>, 
	Alex Deucher <alexander.deucher@amd.com>, Stefano Stabellini <stefano.stabellini@amd.com>, 
	=?UTF-8?Q?Christian_K=C3=B6nig?= <christian.koenig@amd.com>, 
	Xenia Ragiadakou <xenia.ragiadakou@amd.com>, 
	Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com>, Honglei Huang <honglei1.huang@amd.com>, 
	Julia Zhang <julia.zhang@amd.com>, Chen Jiqian <Jiqian.Chen@amd.com>, 
	Antonio Caggiano <antonio.caggiano@collabora.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

Hi

On Tue, Dec 19, 2023 at 11:55=E2=80=AFAM Huang Rui <ray.huang@amd.com> wrot=
e:
>
> From: Antonio Caggiano <antonio.caggiano@collabora.com>
>
> Request Venus when initializing VirGL.
>
> Signed-off-by: Antonio Caggiano <antonio.caggiano@collabora.com>
> Signed-off-by: Huang Rui <ray.huang@amd.com>
> ---
>
> Changes in v6:
> - Remove the unstable API flags check because virglrenderer is already 1.=
0.
> - Squash the render server flag support into "Initialize Venus".
>
>  hw/display/virtio-gpu-virgl.c | 4 ++++
>  1 file changed, 4 insertions(+)
>
> diff --git a/hw/display/virtio-gpu-virgl.c b/hw/display/virtio-gpu-virgl.=
c
> index f35a751824..c523a6717a 100644
> --- a/hw/display/virtio-gpu-virgl.c
> +++ b/hw/display/virtio-gpu-virgl.c
> @@ -964,6 +964,10 @@ int virtio_gpu_virgl_init(VirtIOGPU *g)
>      }
>  #endif
>
> +#ifdef VIRGL_RENDERER_VENUS
> +    flags |=3D VIRGL_RENDERER_VENUS | VIRGL_RENDERER_RENDER_SERVER;
> +#endif
> +

I wonder if it's a good idea to initialize venus by default. It
doesn't seem to require vulkan during initialization, but this may
evolve. Make it optional?

>      ret =3D virgl_renderer_init(g, flags, &virtio_gpu_3d_cbs);
>      if (ret !=3D 0) {
>          error_report("virgl could not be initialized: %d", ret);
> --
> 2.25.1
>


--=20
Marc-Andr=C3=A9 Lureau


From xen-devel-bounces@lists.xenproject.org Tue Jan 02 13:39:42 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 02 Jan 2024 13:39:42 +0000
Received: from list by lists.xenproject.org with outflank-mailman.660691.1030257 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rKezb-000617-61; Tue, 02 Jan 2024 13:39:39 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 660691.1030257; Tue, 02 Jan 2024 13:39:39 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rKezb-000610-3J; Tue, 02 Jan 2024 13:39:39 +0000
Received: by outflank-mailman (input) for mailman id 660691;
 Tue, 02 Jan 2024 13:39:38 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=nGpE=IM=gmail.com=marcandre.lureau@srs-se1.protection.inumbo.net>)
 id 1rKeza-0005zl-As
 for xen-devel@lists.xenproject.org; Tue, 02 Jan 2024 13:39:38 +0000
Received: from mail-yb1-xb33.google.com (mail-yb1-xb33.google.com
 [2607:f8b0:4864:20::b33])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 5ec8d242-a974-11ee-98ef-6d05b1d4d9a1;
 Tue, 02 Jan 2024 14:39:37 +0100 (CET)
Received: by mail-yb1-xb33.google.com with SMTP id
 3f1490d57ef6-db4364ecd6aso4189458276.2
 for <xen-devel@lists.xenproject.org>; Tue, 02 Jan 2024 05:39:37 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 5ec8d242-a974-11ee-98ef-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1704202776; x=1704807576; darn=lists.xenproject.org;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:from:to:cc:subject:date
         :message-id:reply-to;
        bh=HV86xnmwiB7VDINqEd3kWQpMQ8gj64ZmQMvMJnPxJHw=;
        b=UaOt3vTRHw3TUppav1RsqkyeDv5DEKacOzb/LY2VqzbKs6+S7ylff+Bt84LxmGrg6+
         zWPKRuFUsDHcqMxCTSMX3+HiiSzvX3omMYDkc6Nqa1RmDxxAYRO7FZoIC4bqebxLoi5f
         HabS1WpltIG3VlCavrg42So1A4+rl1rV9n8B/TOXXEACB3KNZL1EIhRJt8mp4lAMnREW
         rjy4rayQ4/xdBHKe9Kh4iGB2utUqoOSQjqLUABbpoOO5UItkKjOOLBfMVLvMBCFikCBK
         fOq7+PyxpegA3ep9xD1CWpRZPnNDbh+oyVMFIpFHtl3MR1MFiId/6W4OpYPb+CsynIh9
         va2w==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704202776; x=1704807576;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to;
        bh=HV86xnmwiB7VDINqEd3kWQpMQ8gj64ZmQMvMJnPxJHw=;
        b=ij5j3ItVt5btOM/lqNbjYC4MNK0x0VlB+cVUPXxJ7eYUxw/bGMVceSZbUUvOFL2sG8
         501wh18OTeD71oM+wIsQjWwZyujh1AeQMrAhCkv2Mg+kakF2GxpNEWl/eDDnRc693GEf
         eFYfQOW1d5ejrNX2YBCQ2U0u3UU1PJHCImhI4KYIZaN0g+y9pjw9+D7ZZPbCDiitSreZ
         4WrnIU2cx3OnVt792xHiaiM4RgejlLk5PyPbQOADBwIdlK52Ogq0PfAgJ5UUZfacZzHT
         RDUxBe2yQj6DayrjZKU3AcS5x6QNdRYCReSrvSQb6q6f52CpM2KzQHe1q6JVkeGVvqJb
         GYXQ==
X-Gm-Message-State: AOJu0YyYEIdM4/Bit9pNCDT90U44kQXNy56ZA7a+CtzIHEyqXNw5ZYqk
	A098UB/DR/ulRrZDRads4fFjkqFf1A9VwWP+ZWk=
X-Google-Smtp-Source: AGHT+IG+OQYIob6RBPwlMR5/Is7PbLOVZQdhhuLkKJ8r9LQnsDgBQJMOskfpkohbDgZyhVoTqqDc1z++SdXMfyS9huI=
X-Received: by 2002:a05:6902:1207:b0:dbe:346b:b9d with SMTP id
 s7-20020a056902120700b00dbe346b0b9dmr3885495ybu.125.1704202776077; Tue, 02
 Jan 2024 05:39:36 -0800 (PST)
MIME-Version: 1.0
References: <20231221102342.4022630-1-julia.zhang@amd.com> <20231221102342.4022630-2-julia.zhang@amd.com>
In-Reply-To: <20231221102342.4022630-2-julia.zhang@amd.com>
From: =?UTF-8?B?TWFyYy1BbmRyw6kgTHVyZWF1?= <marcandre.lureau@gmail.com>
Date: Tue, 2 Jan 2024 17:39:24 +0400
Message-ID: <CAJ+F1CLEG1+JVrjqe2-+kngMSA7xOZ3xL=1kh3fswRJHkLk2ZA@mail.gmail.com>
Subject: Re: [PATCH v2 1/1] virgl: Implement resource_query_layout
To: Julia Zhang <julia.zhang@amd.com>
Cc: Gerd Hoffmann <kraxel@redhat.com>, "Michael S . Tsirkin" <mst@redhat.com>, 
	Stefano Stabellini <sstabellini@kernel.org>, Anthony PERARD <anthony.perard@citrix.com>, 
	Antonio Caggiano <antonio.caggiano@collabora.com>, 
	"Dr . David Alan Gilbert" <dgilbert@redhat.com>, Robert Beckett <bob.beckett@collabora.com>, qemu-devel@nongnu.org, 
	xen-devel@lists.xenproject.org, Alex Deucher <alexander.deucher@amd.com>, 
	=?UTF-8?Q?Christian_K=C3=B6nig?= <christian.koenig@amd.com>, 
	Xenia Ragiadakou <burzalodowa@gmail.com>, Honglei Huang <honglei1.huang@amd.com>, 
	Chen Jiqian <Jiqian.Chen@amd.com>, Daniel Stone <daniels@collabora.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

Hi

On Thu, Dec 21, 2023 at 3:36=E2=80=AFPM Julia Zhang <julia.zhang@amd.com> w=
rote:
>
> From: Daniel Stone <daniels@collabora.com>
>
> A new ioctl to shuttle information between host and guest about the
> actual buffer allocation, which can be used for interop between GL and
> Vulkan when supporting standard window systems.
>

The command hasn't been added to the kernel yet. The function is not
in the virgl library either.

> Signed-off-by: Daniel Stone <daniels@collabora.com>
> Co-developed-by: Julia Zhang <julia.zhang@amd.com>
> Signed-off-by: Julia Zhang <julia.zhang@amd.com>
> ---
>  hw/display/virtio-gpu-base.c                |  4 +++
>  hw/display/virtio-gpu-virgl.c               | 40 +++++++++++++++++++++
>  include/hw/virtio/virtio-gpu-bswap.h        |  7 ++++
>  include/standard-headers/linux/virtio_gpu.h | 30 ++++++++++++++++
>  meson.build                                 |  4 +++
>  5 files changed, 85 insertions(+)
>
> diff --git a/hw/display/virtio-gpu-base.c b/hw/display/virtio-gpu-base.c
> index 6bcee3882f..09b37f015d 100644
> --- a/hw/display/virtio-gpu-base.c
> +++ b/hw/display/virtio-gpu-base.c
> @@ -240,6 +240,10 @@ virtio_gpu_base_get_features(VirtIODevice *vdev, uin=
t64_t features,
>          features |=3D (1 << VIRTIO_GPU_F_RESOURCE_UUID);
>      }
>
> +#ifdef HAVE_VIRGL_RESOURCE_QUERY_LAYOUT
> +    features |=3D (1 << VIRTIO_GPU_F_RESOURCE_QUERY_LAYOUT);
> +#endif /* HAVE_VIRGL_RESOURCE_QUERY_LAYOUT */
> +
>      return features;
>  }
>
> diff --git a/hw/display/virtio-gpu-virgl.c b/hw/display/virtio-gpu-virgl.=
c
> index c1e7c6d0c6..b331232fee 100644
> --- a/hw/display/virtio-gpu-virgl.c
> +++ b/hw/display/virtio-gpu-virgl.c
> @@ -813,6 +813,40 @@ static void virgl_cmd_set_scanout_blob(VirtIOGPU *g,
>
>  #endif /* HAVE_VIRGL_RESOURCE_BLOB */
>
> +#ifdef HAVE_VIRGL_RESOURCE_QUERY_LAYOUT
> +static void virgl_cmd_resource_query_layout(VirtIOGPU *g,
> +                                           struct virtio_gpu_ctrl_comman=
d *cmd)
> +{
> +    struct virtio_gpu_resource_query_layout qlayout;
> +    struct virtio_gpu_resp_resource_layout resp;
> +    struct virgl_renderer_resource_layout rlayout;
> +    int ret;
> +    int i;
> +    VIRTIO_GPU_FILL_CMD(qlayout);
> +    virtio_gpu_resource_query_layout_bswap(&qlayout);
> +
> +    ret =3D virgl_renderer_resource_query_layout(qlayout.resource_id, &r=
layout,
> +                                              qlayout.width, qlayout.hei=
ght,
> +                                              qlayout.format, qlayout.bi=
nd);
> +    if (ret !=3D 0) {
> +        qemu_log_mask(LOG_GUEST_ERROR, "%s: resource %d is not externall=
y-allocated\n",
> +                      __func__, qlayout.resource_id);
> +        cmd->error =3D VIRTIO_GPU_RESP_ERR_INVALID_RESOURCE_ID;
> +        return;
> +    }
> +
> +    memset(&resp, 0, sizeof(resp));
> +    resp.hdr.type =3D VIRTIO_GPU_RESP_OK_RESOURCE_LAYOUT;
> +    resp.num_planes =3D rlayout.num_planes;
> +    resp.modifier =3D rlayout.modifier;
> +    for (i =3D 0; i < resp.num_planes; i++) {
> +        resp.planes[i].offset =3D rlayout.planes[i].offset;
> +        resp.planes[i].stride =3D rlayout.planes[i].stride;
> +    }
> +    virtio_gpu_ctrl_response(g, cmd, &resp.hdr, sizeof(resp));
> +}
> +#endif /* HAVE_VIRGL_RESOURCE_QUERY_LAYOUT */
> +
>  void virtio_gpu_virgl_process_cmd(VirtIOGPU *g,
>                                        struct virtio_gpu_ctrl_command *cm=
d)
>  {
> @@ -896,6 +930,12 @@ void virtio_gpu_virgl_process_cmd(VirtIOGPU *g,
>          virgl_cmd_set_scanout_blob(g, cmd);
>          break;
>  #endif /* HAVE_VIRGL_RESOURCE_BLOB */
> +
> +#ifdef HAVE_VIRGL_RESOURCE_QUERY_LAYOUT
> +    case VIRTIO_GPU_CMD_RESOURCE_QUERY_LAYOUT:
> +       virgl_cmd_resource_query_layout(g, cmd);
> +       break;
> +#endif /* HAVE_VIRGL_RESOURCE_QUERY_LAYOUT*/
>      default:
>          cmd->error =3D VIRTIO_GPU_RESP_ERR_UNSPEC;
>          break;
> diff --git a/include/hw/virtio/virtio-gpu-bswap.h b/include/hw/virtio/vir=
tio-gpu-bswap.h
> index dd1975e2d4..dea8cf6fd3 100644
> --- a/include/hw/virtio/virtio-gpu-bswap.h
> +++ b/include/hw/virtio/virtio-gpu-bswap.h
> @@ -92,4 +92,11 @@ virtio_gpu_scanout_blob_bswap(struct virtio_gpu_set_sc=
anout_blob *ssb)
>      le32_to_cpus(&ssb->offsets[3]);
>  }
>
> +static inline void
> +virtio_gpu_resource_query_layout_bswap(struct virtio_gpu_resource_query_=
layout *rql)
> +{
> +    virtio_gpu_ctrl_hdr_bswap(&rql->hdr);
> +    le32_to_cpus(&rql->resource_id);
> +}
> +
>  #endif
> diff --git a/include/standard-headers/linux/virtio_gpu.h b/include/standa=
rd-headers/linux/virtio_gpu.h
> index c621389f3d..c9a2f58237 100644
> --- a/include/standard-headers/linux/virtio_gpu.h
> +++ b/include/standard-headers/linux/virtio_gpu.h
> @@ -65,6 +65,11 @@
>   */
>  #define VIRTIO_GPU_F_CONTEXT_INIT        4
>
> +/*
> + * VIRTIO_GPU_CMD_RESOURCE_QUERY_LAYOUT
> + */
> +#define VIRTIO_GPU_F_RESOURCE_QUERY_LAYOUT 5
> +
>  enum virtio_gpu_ctrl_type {
>         VIRTIO_GPU_UNDEFINED =3D 0,
>
> @@ -95,6 +100,7 @@ enum virtio_gpu_ctrl_type {
>         VIRTIO_GPU_CMD_SUBMIT_3D,
>         VIRTIO_GPU_CMD_RESOURCE_MAP_BLOB,
>         VIRTIO_GPU_CMD_RESOURCE_UNMAP_BLOB,
> +       VIRTIO_GPU_CMD_RESOURCE_QUERY_LAYOUT,
>
>         /* cursor commands */
>         VIRTIO_GPU_CMD_UPDATE_CURSOR =3D 0x0300,
> @@ -108,6 +114,7 @@ enum virtio_gpu_ctrl_type {
>         VIRTIO_GPU_RESP_OK_EDID,
>         VIRTIO_GPU_RESP_OK_RESOURCE_UUID,
>         VIRTIO_GPU_RESP_OK_MAP_INFO,
> +       VIRTIO_GPU_RESP_OK_RESOURCE_LAYOUT,
>
>         /* error responses */
>         VIRTIO_GPU_RESP_ERR_UNSPEC =3D 0x1200,
> @@ -455,4 +462,27 @@ struct virtio_gpu_resource_unmap_blob {
>         uint32_t padding;
>  };
>
> +
> +/* VIRTIO_GPU_CMD_RESOURCE_QUERY_LAYOUT */
> +struct virtio_gpu_resource_query_layout {
> +       struct virtio_gpu_ctrl_hdr hdr;
> +       uint32_t resource_id;
> +       uint32_t width;
> +       uint32_t height;
> +       uint32_t format;
> +       uint32_t bind;
> +};
> +
> +/* VIRTIO_GPU_RESP_OK_RESOURCE_LAYOUT */
> +#define VIRTIO_GPU_RES_MAX_PLANES 4
> +struct virtio_gpu_resp_resource_layout {
> +       struct virtio_gpu_ctrl_hdr hdr;
> +       uint64_t modifier;
> +       uint32_t num_planes;
> +       struct virtio_gpu_resource_plane {
> +               uint64_t offset;
> +               uint32_t stride;
> +       } planes[VIRTIO_GPU_RES_MAX_PLANES];
> +};
> +
>  #endif
> diff --git a/meson.build b/meson.build
> index a739a62f2c..72024f5f01 100644
> --- a/meson.build
> +++ b/meson.build
> @@ -1058,6 +1058,10 @@ if not get_option('virglrenderer').auto() or have_=
system or have_vhost_user_gpu
>                           cc.has_function('virgl_renderer_resource_create=
_blob',
>                                           prefix: '#include <virglrendere=
r.h>',
>                                           dependencies: virgl))
> +    config_host_data.set('HAVE_VIRGL_RESOURCE_QUERY_LAYOUT',
> +                         cc.has_function('virgl_renderer_resource_query_=
layout',
> +                                         prefix: '#include <virglrendere=
r.h>',
> +                                         dependencies: virgl))
>    endif
>  endif
>  rutabaga =3D not_found
> --
> 2.34.1
>
>


--=20
Marc-Andr=C3=A9 Lureau


From xen-devel-bounces@lists.xenproject.org Tue Jan 02 14:40:24 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 02 Jan 2024 14:40:24 +0000
Received: from list by lists.xenproject.org with outflank-mailman.660727.1030284 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rKfwI-0004PY-Q7; Tue, 02 Jan 2024 14:40:18 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 660727.1030284; Tue, 02 Jan 2024 14:40:18 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rKfwI-0004PR-MW; Tue, 02 Jan 2024 14:40:18 +0000
Received: by outflank-mailman (input) for mailman id 660727;
 Tue, 02 Jan 2024 14:40:17 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=11RI=IM=gmail.com=j.tretter@srs-se1.protection.inumbo.net>)
 id 1rKfwH-0004PL-Mq
 for xen-devel@lists.xenproject.org; Tue, 02 Jan 2024 14:40:17 +0000
Received: from mail-ot1-x32d.google.com (mail-ot1-x32d.google.com
 [2607:f8b0:4864:20::32d])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id d71ed23e-a97c-11ee-9b0f-b553b5be7939;
 Tue, 02 Jan 2024 15:40:15 +0100 (CET)
Received: by mail-ot1-x32d.google.com with SMTP id
 46e09a7af769-6dbdbf680d6so3456643a34.0
 for <xen-devel@lists.xenproject.org>; Tue, 02 Jan 2024 06:40:15 -0800 (PST)
Received: from ?IPV6:2603:8080:a900:257c::1004?
 (2603-8080-a900-257c-0000-0000-0000-1004.res6.spectrum.com.
 [2603:8080:a900:257c::1004]) by smtp.gmail.com with ESMTPSA id
 r2-20020a056830134200b006dc0623b202sm1934543otq.73.2024.01.02.06.40.13
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 02 Jan 2024 06:40:13 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
X-Inumbo-ID: d71ed23e-a97c-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1704206414; x=1704811214; darn=lists.xenproject.org;
        h=in-reply-to:from:content-language:references:cc:to:subject
         :user-agent:mime-version:date:message-id:sender:from:to:cc:subject
         :date:message-id:reply-to;
        bh=4ONLUtK4TlZmu94GP5gLzTnRTXIraKo+f2GaDY4sCHU=;
        b=CKtZ38ytPOQ+SF+90bR8QgrQQ3mKghWTf/edpMMvaZVpMzb/bKTOo+Zqgpqpj6KQKj
         XhgkHm/l3UcCxrYqSbciag1qL3KP/4XTWogEXqTYHqL44uQ8mjBEdqc/TB0zV0eUvM3z
         UbbxdhYknulGbfgtSsxplSclTMx2v/rnYVzsYBeZMkzCjGEuxoXoWKmel/oyMsUINV54
         0TuHquQRm1YtdoFNxQBSBm2QoaPXm7qipMK3fzn889iShst9FyHsbL8XF0pABG3l4RBo
         +yo69kmi4ja3QTqV6S9+viLonCelHz0k3jqWQ9LTHKWMBsrYpwUOsX1PDvUPetL2lsVA
         KfFA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704206414; x=1704811214;
        h=in-reply-to:from:content-language:references:cc:to:subject
         :user-agent:mime-version:date:message-id:sender:x-gm-message-state
         :from:to:cc:subject:date:message-id:reply-to;
        bh=4ONLUtK4TlZmu94GP5gLzTnRTXIraKo+f2GaDY4sCHU=;
        b=prX2E/t0ibK/XMa/0nFtNxhBFCnfZvsukZ7/EFtb2zCmnHKFch96P0wiUHHoTxi5Sd
         QrlG6aXTmGNOqmNlPWgJ/2c5WYzF9UAj8iGa1hqEiKVhLujmcnXr4zdtgg4AExFy8n7E
         4wYadzNXtPtKD7NlKF2E+UOu41l2BCgNV+2dp2EcEWLvLjl+6GbCQ11ZZ16rvu3dtIQe
         3APXjun3KiKxhW7kQH3a9T6QStN6YTt8C+CpA1Q99/q4ACtDgT0Nc6Uu0zsHUj4Deqmb
         PTHa/Jbl0nKe16pwvNLpjVEBUO+Hkn9mxbrWfYfM6dt3Rmm7reqDaw/6N0LigUJsSQQN
         R+gA==
X-Gm-Message-State: AOJu0YzfqoBVxsCFFyGe6LcktQv37MHTtndtOz9NH+l7At4zDxwSXl1B
	hPIm1Hhx1ULFu506vxOiqDA=
X-Google-Smtp-Source: AGHT+IFPVCme0Ogqf0jsAcCSjZLVKYqvVDpefFqDBd/0Z1IZ8nwiWjPPK+8PihzwcTGiMVNmBkDxUQ==
X-Received: by 2002:a05:6830:22e8:b0:6dc:17a:663e with SMTP id t8-20020a05683022e800b006dc017a663emr5959912otc.70.1704206413742;
        Tue, 02 Jan 2024 06:40:13 -0800 (PST)
Sender: Joe Tretter <joerg.tretter@gmail.com>
Content-Type: multipart/alternative;
 boundary="------------CGd0ViBKbw8it84gzjmsfZe0"
Message-ID: <6f81654d-ff07-44c0-a625-d8465e3ac0ed@gmail.com>
Date: Tue, 2 Jan 2024 08:42:40 -0600
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: Possible bug in Xen
To: Andrew Cooper <andrew.cooper3@citrix.com>, xen-devel@lists.xenproject.org
Cc: Jan Beulich <jbeulich@suse.com>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger.pau@citrix.com>
References: <de8b87e2-a4a2-4e49-80f5-97c745f46500@gmail.com>
 <9cc86706-5791-4967-802c-3e665bc97804@citrix.com>
 <a0aa0326-398f-44a1-a5df-fde3e7fea138@gmail.com>
 <cd153225-5cef-4ff5-97e3-44e485c12305@citrix.com>
 <e787b9ba-7a30-4804-b64e-ef56c71f5ed3@gmail.com>
 <caf76de4-89f5-4ce4-b1e3-1de7a21325dc@citrix.com>
 <15ece71b-d1d1-49d8-b937-f697b50fac39@gmail.com>
 <1b1116d0-bbda-4fa3-ae41-321e69626641@citrix.com>
Content-Language: en-US
From: Joe Tretter <j.tretter@gmail.com>
In-Reply-To: <1b1116d0-bbda-4fa3-ae41-321e69626641@citrix.com>

This is a multi-part message in MIME format.
--------------CGd0ViBKbw8it84gzjmsfZe0
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit

Happy New Year! I think it's time I send you an update:
I have spent a considerable amount of time trying to get the latest 
firmware working, but I find a way that does the job.
When I replaced the file with yours, the machine directly restarts on 
application of the firmware.
All ways I have tried either result in the firmware not being considered 
or the machine rebooting on application.
The machine is dual boot with Archlinux and on Archlinux, I have the 
latest firmware running.
I have reached out to the Qubes people for help getting the latest 
firmware working. I'll let you know when I succeed with that.

~Joe

On 12/19/23 11:00, Andrew Cooper wrote:
> On 19/12/2023 4:28 pm, Joe Tretter wrote:
>> On 12/19/23 10:05, Andrew Cooper wrote:
>>> Is it always the same test which fails, or is it random?
>> Which test fails seems to be random (see attached screenshot).
>>> Looking athttps://github.com/Tarsnap/scrypt  it's only a trivial piece
>>> of userspace crypto.
>>>
>>> The fact that running multiple instances makes it fail more easily
>>> points towards some kind of register handling issue, but the fact that
>>> it repros only under Xen, and even with eager-fpu (which isn't the
>>> default on AMD, sadly), is weird.
>>>
>>> Looking at the scrypt source, it has alternative routines for the AESNI
>>> and SHANI instruction groups.  However, because it's a Zen1, we don't
>>> have a useful way of filtering visible for PV dom0 userspace.
>>>
>>> First of all, can you get the exact CPU model and microcode version.
>>> `head /proc/cpuinfo` will be enough.  But while you're at it, can you
>>> include `xl dmesg` too just in case there's something obvious showing up
>>> there too.
>>>
>> I have attachted text files with the (full) cpuinfo and the dmesg.
> microcode    : 0x8001129
>
> That's 0x08001129 when not rendered brokenly, and the up-to-date version
> is 0x08001138 (which itself dates from 2019).
>
> If you can, get a firmware update.  Given that it's a Dell, there's a
> good chance it's already on LFVS/fwupd.  This is definitely the
> preferred option.
>
> If not, and you're willing to experiment in definitely unsupported
> territory, then move /lib/firmware/amd-ucode/microcode_amd_fam17h.bin
> sideways in dom0, and replace it with the attached SummitRidge-08001138
> file (it's important to still be named microcode_amd_fam17h.bin in the
> end), then rebuild the initrd and reboot.
>
> You already have ucode=scan on Xen's command line, so after the reboot
> you should see some messages about updating microcode too.
>
> Irritatingly, AMD don't put client microcode into linux-firmware, but
> there are various collections of blobs found in the wild online.  I've
> picked the one which I think is right for your CPU, and packaged it it
> appropriately for Xen.
>
>
> Anyway, I'm not sure if this will fix anything, but life is too short to
> be debugging stuff like this on out-of-date firmware/ucode.
>
> ~Andrew

--------------CGd0ViBKbw8it84gzjmsfZe0
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: 8bit

<!DOCTYPE html>
<html data-lt-installed="true">
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  </head>
  <body style="padding-bottom: 1px;">
    Happy New Year! I think it's time I send you an update:<br>
    I have spent a considerable amount of time trying to get the latest
    firmware working, but I find a way that does the job.<br>
    When I replaced the file with yours, the machine directly restarts
    on application of the firmware.<br>
    All ways I have tried either result in the firmware not being
    considered or the machine rebooting on application.<br>
    The machine is dual boot with Archlinux and on Archlinux, I have the
    latest firmware running.<br>
    I have reached out to the Qubes people for help getting the latest
    firmware working. I'll let you know when I succeed with that.<br>
    <br>
    ~Joe<br>
    <br>
    <div class="moz-cite-prefix">On 12/19/23 11:00, Andrew Cooper wrote:<br>
    </div>
    <blockquote type="cite"
      cite="mid:1b1116d0-bbda-4fa3-ae41-321e69626641@citrix.com">
      <pre class="moz-quote-pre" wrap="">On 19/12/2023 4:28 pm, Joe Tretter wrote:
</pre>
      <blockquote type="cite">
        <pre class="moz-quote-pre" wrap="">On 12/19/23 10:05, Andrew Cooper wrote:
</pre>
        <blockquote type="cite">
          <pre class="moz-quote-pre" wrap="">Is it always the same test which fails, or is it random?
</pre>
        </blockquote>
        <pre class="moz-quote-pre" wrap="">Which test fails seems to be random (see attached screenshot).
</pre>
        <blockquote type="cite">
          <pre class="moz-quote-pre" wrap="">Looking at <a class="moz-txt-link-freetext" href="https://github.com/Tarsnap/scrypt">https://github.com/Tarsnap/scrypt</a> it's only a trivial piece
of userspace crypto.

The fact that running multiple instances makes it fail more easily
points towards some kind of register handling issue, but the fact that
it repros only under Xen, and even with eager-fpu (which isn't the
default on AMD, sadly), is weird.

Looking at the scrypt source, it has alternative routines for the AESNI
and SHANI instruction groups.  However, because it's a Zen1, we don't
have a useful way of filtering visible for PV dom0 userspace.

First of all, can you get the exact CPU model and microcode version. 
`head /proc/cpuinfo` will be enough.  But while you're at it, can you
include `xl dmesg` too just in case there's something obvious showing up
there too.

</pre>
        </blockquote>
        <pre class="moz-quote-pre" wrap="">I have attachted text files with the (full) cpuinfo and the dmesg.
</pre>
      </blockquote>
      <pre class="moz-quote-pre" wrap="">
microcode    : 0x8001129

That's 0x08001129 when not rendered brokenly, and the up-to-date version
is 0x08001138 (which itself dates from 2019).

If you can, get a firmware update.  Given that it's a Dell, there's a
good chance it's already on LFVS/fwupd.  This is definitely the
preferred option.

If not, and you're willing to experiment in definitely unsupported
territory, then move /lib/firmware/amd-ucode/microcode_amd_fam17h.bin
sideways in dom0, and replace it with the attached SummitRidge-08001138
file (it's important to still be named microcode_amd_fam17h.bin in the
end), then rebuild the initrd and reboot.

You already have ucode=scan on Xen's command line, so after the reboot
you should see some messages about updating microcode too.

Irritatingly, AMD don't put client microcode into linux-firmware, but
there are various collections of blobs found in the wild online.  I've
picked the one which I think is right for your CPU, and packaged it it
appropriately for Xen.


Anyway, I'm not sure if this will fix anything, but life is too short to
be debugging stuff like this on out-of-date firmware/ucode.

~Andrew</pre>
    </blockquote>
    <br>
  </body>
  <lt-container></lt-container>
</html>

--------------CGd0ViBKbw8it84gzjmsfZe0--


From xen-devel-bounces@lists.xenproject.org Tue Jan 02 15:34:16 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 02 Jan 2024 15:34:16 +0000
Received: from list by lists.xenproject.org with outflank-mailman.660733.1030293 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rKgmL-0006it-PP; Tue, 02 Jan 2024 15:34:05 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 660733.1030293; Tue, 02 Jan 2024 15:34:05 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rKgmL-0006im-MW; Tue, 02 Jan 2024 15:34:05 +0000
Received: by outflank-mailman (input) for mailman id 660733;
 Tue, 02 Jan 2024 15:34:04 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=JX1x=IM=redhat.com=stefanha@srs-se1.protection.inumbo.net>)
 id 1rKgmK-0006ie-FX
 for xen-devel@lists.xenproject.org; Tue, 02 Jan 2024 15:34:04 +0000
Received: from us-smtp-delivery-124.mimecast.com
 (us-smtp-delivery-124.mimecast.com [170.10.133.124])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 5914675a-a984-11ee-9b0f-b553b5be7939;
 Tue, 02 Jan 2024 16:34:00 +0100 (CET)
Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com
 [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS
 (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id
 us-mta-664-pzkIouvUPDeibrT9BgRP0w-1; Tue, 02 Jan 2024 10:33:56 -0500
Received: from smtp.corp.redhat.com (int-mx10.intmail.prod.int.rdu2.redhat.com
 [10.11.54.10])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256)
 (No client certificate requested)
 by mimecast-mx02.redhat.com (Postfix) with ESMTPS id A0700881F02;
 Tue,  2 Jan 2024 15:33:52 +0000 (UTC)
Received: from localhost (unknown [10.39.193.188])
 by smtp.corp.redhat.com (Postfix) with ESMTP id 79635492BFA;
 Tue,  2 Jan 2024 15:33:46 +0000 (UTC)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 5914675a-a984-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
	s=mimecast20190719; t=1704209638;
	h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
	 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
	 in-reply-to:in-reply-to:references:references;
	bh=qivEXDFa8JGXsGjfK5660gJbyc7eHqwbc8ku83Ng7G0=;
	b=iFSyC9bH860ROgz/wPSstuq6Jiw04sVIsTqGNcSkpFt2QUciV4C1I2zb7yKEIOFprPTYyd
	JE1YMwPbZCB36cOqdBKosGeJs9eEdfzgTSS8J3Pi00Vx/lEJhlEZvB9OfImH/CwomBCAGp
	N38JVFom7ARByQTB2bh+CVCrVYr3VLg=
X-MC-Unique: pzkIouvUPDeibrT9BgRP0w-1
Date: Tue, 2 Jan 2024 10:33:45 -0500
From: Stefan Hajnoczi <stefanha@redhat.com>
To: Akihiko Odaki <akihiko.odaki@daynix.com>
Cc: qemu-devel@nongnu.org,
	Daniel =?iso-8859-1?Q?P=2E_Berrang=E9?= <berrange@redhat.com>,
	Marcel Apfelbaum <marcel.apfelbaum@gmail.com>,
	Artyom Tarasenko <atar4qemu@gmail.com>, Paul Durrant <paul@xen.org>,
	Daniel Henrique Barboza <danielhb413@gmail.com>,
	=?iso-8859-1?Q?C=E9dric?= Le Goater <clg@kaod.org>,
	Paolo Bonzini <pbonzini@redhat.com>,
	BALATON Zoltan <balaton@eik.bme.hu>,
	Jagannathan Raman <jag.raman@oracle.com>,
	Anthony Perard <anthony.perard@citrix.com>,
	Nicholas Piggin <npiggin@gmail.com>,
	David Gibson <david@gibson.dropbear.id.au>,
	Aleksandar Rikalo <aleksandar.rikalo@syrmia.com>,
	Alexander Graf <agraf@csgraf.de>,
	Hailiang Zhang <zhanghailiang@xfusion.com>,
	Marcelo Tosatti <mtosatti@redhat.com>,
	Jiaxun Yang <jiaxun.yang@flygoat.com>,
	Huacai Chen <chenhuacai@kernel.org>,
	Harsh Prateek Bora <harshpb@linux.ibm.com>,
	Ilya Leoshkevich <iii@linux.ibm.com>, Peter Xu <peterx@redhat.com>,
	Hyman Huang <yong.huang@smartx.com>, Fam Zheng <fam@euphon.net>,
	Song Gao <gaosong@loongson.cn>,
	Alistair Francis <alistair.francis@wdc.com>,
	=?iso-8859-1?Q?Marc-Andr=E9?= Lureau <marcandre.lureau@redhat.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	David Woodhouse <dwmw2@infradead.org>,
	Christian Borntraeger <borntraeger@linux.ibm.com>,
	Palmer Dabbelt <palmer@dabbelt.com>,
	Aurelien Jarno <aurelien@aurel32.net>,
	Leonardo Bras <leobras@redhat.com>, Jiri Slaby <jslaby@suse.cz>,
	Eric Farman <farman@linux.ibm.com>, Thomas Huth <thuth@redhat.com>,
	Richard Henderson <richard.henderson@linaro.org>,
	David Hildenbrand <david@redhat.com>,
	Michael Roth <michael.roth@amd.com>,
	Elena Ufimtseva <elena.ufimtseva@oracle.com>,
	Gerd Hoffmann <kraxel@redhat.com>,
	Cameron Esfahani <dirty@apple.com>, qemu-ppc@nongnu.org,
	John Snow <jsnow@redhat.com>,
	Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>,
	Weiwei Li <liwei1518@gmail.com>, Hanna Reitz <hreitz@redhat.com>,
	qemu-s390x@nongnu.org, qemu-block@nongnu.org,
	Alex =?iso-8859-1?Q?Benn=E9e?= <alex.bennee@linaro.org>,
	kvm@vger.kernel.org, "Michael S. Tsirkin" <mst@redhat.com>,
	Pavel Dovgalyuk <pavel.dovgaluk@ispras.ru>,
	Vladimir Sementsov-Ogievskiy <vsementsov@yandex-team.ru>,
	Andrey Smirnov <andrew.smirnov@gmail.com>,
	Reinoud Zandijk <reinoud@netbsd.org>, Kevin Wolf <kwolf@redhat.com>,
	Bin Meng <bin.meng@windriver.com>,
	Sunil Muthuswamy <sunilmut@microsoft.com>,
	Peter Maydell <peter.maydell@linaro.org>, qemu-riscv@nongnu.org,
	Liu Zhiwei <zhiwei_liu@linux.alibaba.com>,
	Stafford Horne <shorne@gmail.com>, Fabiano Rosas <farosas@suse.de>,
	Juan Quintela <quintela@redhat.com>,
	Markus Armbruster <armbru@redhat.com>, qemu-arm@nongnu.org,
	Jason Wang <jasowang@redhat.com>,
	Eduardo Habkost <eduardo@habkost.net>,
	Max Filippov <jcmvbkbc@gmail.com>,
	Jean-Christophe Dubois <jcd@tribudubois.net>,
	Eric Blake <eblake@redhat.com>,
	Roman Bolshakov <rbolshakov@ddn.com>,
	Halil Pasic <pasic@linux.ibm.com>, xen-devel@lists.xenproject.org,
	Philippe =?iso-8859-1?Q?Mathieu-Daud=E9?= <philmd@linaro.org>,
	David Woodhouse <dwmw@amazon.co.uk>
Subject: Re: [PATCH v2 1/5] system/cpus: rename qemu_mutex_lock_iothread() to
 bql_lock()
Message-ID: <20240102153345.GA485043@fedora>
References: <20231212153905.631119-1-stefanha@redhat.com>
 <20231212153905.631119-2-stefanha@redhat.com>
 <389fff8c-9f5d-4b6b-acd2-bc3e2110a9b3@daynix.com>
MIME-Version: 1.0
Content-Type: multipart/signed; micalg=pgp-sha256;
	protocol="application/pgp-signature"; boundary="DI3ersSYWO3ysvwX"
Content-Disposition: inline
In-Reply-To: <389fff8c-9f5d-4b6b-acd2-bc3e2110a9b3@daynix.com>
X-Scanned-By: MIMEDefang 3.4.1 on 10.11.54.10


--DI3ersSYWO3ysvwX
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable

On Wed, Dec 13, 2023 at 03:37:00PM +0900, Akihiko Odaki wrote:
> On 2023/12/13 0:39, Stefan Hajnoczi wrote:
> > @@ -312,58 +312,58 @@ bool qemu_in_main_thread(void);
> >       } while (0)
> >   /**
> > - * qemu_mutex_lock_iothread: Lock the main loop mutex.
> > + * bql_lock: Lock the Big QEMU Lock (BQL).
> >    *
> > - * This function locks the main loop mutex.  The mutex is taken by
> > + * This function locks the Big QEMU Lock (BQL).  The lock is taken by
> >    * main() in vl.c and always taken except while waiting on
> > - * external events (such as with select).  The mutex should be taken
> > + * external events (such as with select).  The lock should be taken
> >    * by threads other than the main loop thread when calling
> >    * qemu_bh_new(), qemu_set_fd_handler() and basically all other
> >    * functions documented in this file.
> >    *
> > - * NOTE: tools currently are single-threaded and qemu_mutex_lock_iothr=
ead
> > + * NOTE: tools currently are single-threaded and bql_lock
> >    * is a no-op there.
> >    */
> > -#define qemu_mutex_lock_iothread()                      \
> > -    qemu_mutex_lock_iothread_impl(__FILE__, __LINE__)
> > -void qemu_mutex_lock_iothread_impl(const char *file, int line);
> > +#define bql_lock()                      \
> > +    bql_lock_impl(__FILE__, __LINE__)
>=20
> This line break is no longer necessary.

Will fix in v3.

Stefan

--DI3ersSYWO3ysvwX
Content-Type: application/pgp-signature; name="signature.asc"

-----BEGIN PGP SIGNATURE-----

iQEzBAEBCAAdFiEEhpWov9P5fNqsNXdanKSrs4Grc8gFAmWULNkACgkQnKSrs4Gr
c8gQ1wf/SKDGDIkJDmyj8M85Uyj3OSfk6tILO0qMqPCHK2Xyw3+EA0ugnFsOQ0eT
UcvEcmAyA0hewn7VKrk4Ge1wuPQ6Qm9DgLNb6oojftMAxktuhOAwC8VRaYiUFIF/
JP46P0qatEeghim4KwM4VV8EGGClPZU0vVsAQ/6rAxs2ZWbgBMPFfg9TSspauGWY
4tObr3E/T3RO4aajdJMcobO9ocG3TTdJAGwcOY6nGHnfS+DE/+a2yr4NwmQrxgqS
jcmYNPM+uSCzilu3csBqEtYtklAsVkArXGkf0pcSb73VmfgeBdHlIRupD0aCq3SE
4rE39ETbAHOxe0+sS7oasRYcUNKBxA==
=P1kw
-----END PGP SIGNATURE-----

--DI3ersSYWO3ysvwX--



From xen-devel-bounces@lists.xenproject.org Tue Jan 02 15:35:04 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 02 Jan 2024 15:35:04 +0000
Received: from list by lists.xenproject.org with outflank-mailman.660736.1030304 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rKgnI-0007FG-38; Tue, 02 Jan 2024 15:35:04 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 660736.1030304; Tue, 02 Jan 2024 15:35:04 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rKgnI-0007F9-0O; Tue, 02 Jan 2024 15:35:04 +0000
Received: by outflank-mailman (input) for mailman id 660736;
 Tue, 02 Jan 2024 15:35:02 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=yTtD=IM=alien8.de=bp@srs-se1.protection.inumbo.net>)
 id 1rKgnF-0007Ez-VX
 for xen-devel@lists.xenproject.org; Tue, 02 Jan 2024 15:35:02 +0000
Received: from mail.alien8.de (mail.alien8.de [65.109.113.108])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 7d53a83c-a984-11ee-9b0f-b553b5be7939;
 Tue, 02 Jan 2024 16:35:00 +0100 (CET)
Received: from localhost (localhost.localdomain [127.0.0.1])
 by mail.alien8.de (SuperMail on ZX Spectrum 128k) with ESMTP id 8709340E0171; 
 Tue,  2 Jan 2024 15:34:57 +0000 (UTC)
Received: from mail.alien8.de ([127.0.0.1])
 by localhost (mail.alien8.de [127.0.0.1]) (amavisd-new, port 10026)
 with ESMTP id E4pJd0VlcEXb; Tue,  2 Jan 2024 15:34:55 +0000 (UTC)
Received: from zn.tnic (pd9530f8c.dip0.t-ipconnect.de [217.83.15.140])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange ECDHE (P-256) server-signature ECDSA (P-256) server-digest
 SHA256) (No client certificate requested)
 by mail.alien8.de (SuperMail on ZX Spectrum 128k) with ESMTPSA id 661D840E0191;
 Tue,  2 Jan 2024 15:34:31 +0000 (UTC)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 7d53a83c-a984-11ee-9b0f-b553b5be7939
X-Virus-Scanned: Debian amavisd-new at mail.alien8.de
Authentication-Results: mail.alien8.de (amavisd-new); dkim=pass (4096-bit key)
	header.d=alien8.de
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=alien8.de; s=alien8;
	t=1704209694; bh=AFlNAs1eTyy0BO95pQ2N7wyFVzTaEas2yI1v/Adat8k=;
	h=Date:From:To:Cc:Subject:References:In-Reply-To:From;
	b=d8TtmPOAiItQ4yR0tJO0GMvu0OoyPQwEUd5BFlrnpX8H7UdXl82/LACGiyqsrOsPP
	 HG4wHYqNoXUWPAZ02jeYSaysgqwVHotJBk4GL954LxUvMd8aty8Bx0Z18h+mQkFCom
	 WfqPrMr+rDCFaZjkU3Va3Ig0rdHwEe1FS/C/WURxOJZCnPNqcKeHB510oyqWEY1e1q
	 DF7uPwIfh8Qb7wnzAaGaWLRCgDetMJKMaeS71XEcFxH9eOwyYNH9XTn1YKCzzHKEVE
	 gicvKn8vIBGHvBCkU8aQ5IiHWdbSsUBym1NzBrExwAt3xxSi7PUvtP/e1KlMOhfeEg
	 cGD71cet6qH2D8gjTMdwtK3i29cI71MVQCa2P/F/hKf/KjhG9pYs51oai7RYWAcVLg
	 Jks2gnt/TFS17V/nUewsNAAbrepP0EZBfAmsoMopLzFQUdxsn6kAsRhb+mUI0rFp2y
	 T8ioePBl5ZQq0MkZS8KIb6b7acGAMzigjd9xu5x+P1/LCXGnfBS9vnDQBSPpygAWFZ
	 G8ywQ9Ez+SvCBQcHqYoBE4VxV1yYRd1nJktrtxaVPBpiaOY3p5wNRsi+bo33MuQnJd
	 VjGqKbCIrCBdsphTPg0PiCGge+AkwjuGqyujKUXD6Mk/1GqTjnUxre6DtuWbmZvusm
	 b6tfbgHO44zTLM5K+pBI+cvM=
Date: Tue, 2 Jan 2024 16:34:26 +0100
From: Borislav Petkov <bp@alien8.de>
To: Xin Li <xin3.li@intel.com>
Cc: linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org,
	linux-edac@vger.kernel.org, linux-hyperv@vger.kernel.org,
	kvm@vger.kernel.org, xen-devel@lists.xenproject.org,
	tglx@linutronix.de, mingo@redhat.com, dave.hansen@linux.intel.com,
	x86@kernel.org, hpa@zytor.com, luto@kernel.org, pbonzini@redhat.com,
	seanjc@google.com, peterz@infradead.org, jgross@suse.com,
	ravi.v.shankar@intel.com, mhiramat@kernel.org,
	andrew.cooper3@citrix.com, jiangshanlai@gmail.com,
	nik.borisov@suse.com, shan.kang@intel.com
Subject: Re: [PATCH v13 01/35] x86/cpufeatures,opcode,msr: Add the WRMSRNS
 instruction support
Message-ID: <20240102153426.GBZZQtAiWSdGAgKoIL@fat_crate.local>
References: <20231205105030.8698-1-xin3.li@intel.com>
 <20231205105030.8698-2-xin3.li@intel.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
In-Reply-To: <20231205105030.8698-2-xin3.li@intel.com>

On Tue, Dec 05, 2023 at 02:49:50AM -0800, Xin Li wrote:

> Subject: Re: [PATCH v13 01/35] x86/cpufeatures,opcode,msr: Add the WRMSRNS instruction support

Or simply "x86/fred: Add ... "

Other than that,

Acked-by: Borislav Petkov (AMD) <bp@alien8.de>

-- 
Regards/Gruss,
    Boris.

https://people.kernel.org/tglx/notes-about-netiquette


From xen-devel-bounces@lists.xenproject.org Tue Jan 02 15:35:42 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 02 Jan 2024 15:35:42 +0000
Received: from list by lists.xenproject.org with outflank-mailman.660740.1030314 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rKgnt-0007kz-CD; Tue, 02 Jan 2024 15:35:41 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 660740.1030314; Tue, 02 Jan 2024 15:35:41 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rKgnt-0007kr-81; Tue, 02 Jan 2024 15:35:41 +0000
Received: by outflank-mailman (input) for mailman id 660740;
 Tue, 02 Jan 2024 15:35:39 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=JX1x=IM=redhat.com=stefanha@srs-se1.protection.inumbo.net>)
 id 1rKgnr-0007fS-RL
 for xen-devel@lists.xenproject.org; Tue, 02 Jan 2024 15:35:39 +0000
Received: from us-smtp-delivery-124.mimecast.com
 (us-smtp-delivery-124.mimecast.com [170.10.129.124])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 94330e01-a984-11ee-98ef-6d05b1d4d9a1;
 Tue, 02 Jan 2024 16:35:39 +0100 (CET)
Received: from mimecast-mx02.redhat.com (mx-ext.redhat.com [66.187.233.73])
 by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3,
 cipher=TLS_AES_256_GCM_SHA384) id us-mta-383-TFxt5OeqMum2uB9b2QHDrA-1; Tue,
 02 Jan 2024 10:35:35 -0500
Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.rdu2.redhat.com
 [10.11.54.6])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256)
 (No client certificate requested)
 by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 014B03C02748;
 Tue,  2 Jan 2024 15:35:33 +0000 (UTC)
Received: from localhost (unknown [10.39.193.188])
 by smtp.corp.redhat.com (Postfix) with ESMTP id 0D5AA2166B31;
 Tue,  2 Jan 2024 15:35:31 +0000 (UTC)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 94330e01-a984-11ee-98ef-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
	s=mimecast20190719; t=1704209738;
	h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
	 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
	 content-transfer-encoding:content-transfer-encoding;
	bh=ouwQCxUmvOVgAb+tQSARaZyGpSNS0e2t7AfE4iNocH4=;
	b=SvskHH0CYnf24VvJo9TnLF4N/S6oU50gjY7L7Ho04VGh7wbeFhByjEmdWy9GUVOw4ICN7i
	7mZj/8pF3DXu9oejOCNU6HCSqywiiIQyqpTMlBUmQCQ8PjW1m3Lnxdb+MmxkGDVc4rsxhC
	3b/pviSXpXCg5yYafIijnsnuX/s96iM=
X-MC-Unique: TFxt5OeqMum2uB9b2QHDrA-1
From: Stefan Hajnoczi <stefanha@redhat.com>
To: qemu-devel@nongnu.org
Cc: Hanna Reitz <hreitz@redhat.com>,
	qemu-riscv@nongnu.org,
	Roman Bolshakov <rbolshakov@ddn.com>,
	=?UTF-8?q?C=C3=A9dric=20Le=20Goater?= <clg@kaod.org>,
	Elena Ufimtseva <elena.ufimtseva@oracle.com>,
	Eduardo Habkost <eduardo@habkost.net>,
	Thomas Huth <thuth@redhat.com>,
	Stefan Hajnoczi <stefanha@redhat.com>,
	qemu-block@nongnu.org,
	Andrey Smirnov <andrew.smirnov@gmail.com>,
	Peter Maydell <peter.maydell@linaro.org>,
	Huacai Chen <chenhuacai@kernel.org>,
	Fam Zheng <fam@euphon.net>,
	Gerd Hoffmann <kraxel@redhat.com>,
	David Gibson <david@gibson.dropbear.id.au>,
	John Snow <jsnow@redhat.com>,
	Stafford Horne <shorne@gmail.com>,
	Weiwei Li <liwei1518@gmail.com>,
	Jean-Christophe Dubois <jcd@tribudubois.net>,
	Cameron Esfahani <dirty@apple.com>,
	Alexander Graf <agraf@csgraf.de>,
	David Hildenbrand <david@redhat.com>,
	Juan Quintela <quintela@redhat.com>,
	Nicholas Piggin <npiggin@gmail.com>,
	Max Filippov <jcmvbkbc@gmail.com>,
	=?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= <berrange@redhat.com>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Daniel Henrique Barboza <danielhb413@gmail.com>,
	Markus Armbruster <armbru@redhat.com>,
	Peter Xu <peterx@redhat.com>,
	Vladimir Sementsov-Ogievskiy <vsementsov@yandex-team.ru>,
	Richard Henderson <richard.henderson@linaro.org>,
	qemu-s390x@nongnu.org,
	Jiri Slaby <jslaby@suse.cz>,
	Pavel Dovgalyuk <pavel.dovgaluk@ispras.ru>,
	Eric Blake <eblake@redhat.com>,
	Akihiko Odaki <akihiko.odaki@daynix.com>,
	=?UTF-8?q?Alex=20Benn=C3=A9e?= <alex.bennee@linaro.org>,
	Aleksandar Rikalo <aleksandar.rikalo@syrmia.com>,
	"Michael S. Tsirkin" <mst@redhat.com>,
	Jason Wang <jasowang@redhat.com>,
	Jiaxun Yang <jiaxun.yang@flygoat.com>,
	Sunil Muthuswamy <sunilmut@microsoft.com>,
	Alistair Francis <alistair.francis@wdc.com>,
	=?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= <philmd@linaro.org>,
	Fabiano Rosas <farosas@suse.de>,
	Michael Roth <michael.roth@amd.com>,
	Paul Durrant <paul@xen.org>,
	Jagannathan Raman <jag.raman@oracle.com>,
	Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Hyman Huang <yong.huang@smartx.com>,
	=?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= <marcandre.lureau@redhat.com>,
	xen-devel@lists.xenproject.org,
	Halil Pasic <pasic@linux.ibm.com>,
	Christian Borntraeger <borntraeger@linux.ibm.com>,
	Song Gao <gaosong@loongson.cn>,
	Kevin Wolf <kwolf@redhat.com>,
	Ilya Leoshkevich <iii@linux.ibm.com>,
	Artyom Tarasenko <atar4qemu@gmail.com>,
	Marcel Apfelbaum <marcel.apfelbaum@gmail.com>,
	Reinoud Zandijk <reinoud@netbsd.org>,
	qemu-ppc@nongnu.org,
	Marcelo Tosatti <mtosatti@redhat.com>,
	David Woodhouse <dwmw2@infradead.org>,
	Aurelien Jarno <aurelien@aurel32.net>,
	Bin Meng <bin.meng@windriver.com>,
	qemu-arm@nongnu.org,
	Anthony Perard <anthony.perard@citrix.com>,
	Leonardo Bras <leobras@redhat.com>,
	Hailiang Zhang <zhanghailiang@xfusion.com>,
	Harsh Prateek Bora <harshpb@linux.ibm.com>,
	kvm@vger.kernel.org,
	Palmer Dabbelt <palmer@dabbelt.com>,
	Eric Farman <farman@linux.ibm.com>,
	BALATON Zoltan <balaton@eik.bme.hu>,
	Liu Zhiwei <zhiwei_liu@linux.alibaba.com>
Subject: [PATCH v3 0/5] Make Big QEMU Lock naming consistent
Date: Tue,  2 Jan 2024 10:35:24 -0500
Message-ID: <20240102153529.486531-1-stefanha@redhat.com>
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 8bit
X-Scanned-By: MIMEDefang 3.4.1 on 10.11.54.6

v3:
- Rebase
- Define bql_lock() macro on a single line [Akihiko Odaki]
v2:
- Rename APIs bql_*() [PeterX]
- Spell out "Big QEMU Lock (BQL)" in doc comments [PeterX]
- Rename "iolock" variables in hw/remote/mpqemu-link.c [Harsh]
- Fix bql_auto_lock() indentation in Patch 2 [Ilya]
- "with BQL taken" -> "with the BQL taken" [Philippe]
- "under BQL" -> "under the BQL" [Philippe]

The Big QEMU Lock ("BQL") has two other names: "iothread lock" and "QEMU global
mutex". The term "iothread lock" is easily confused with the unrelated --object
iothread (iothread.c).

This series updates the code and documentation to consistently use "BQL". This
makes the code easier to understand.

Stefan Hajnoczi (5):
  system/cpus: rename qemu_mutex_lock_iothread() to bql_lock()
  qemu/main-loop: rename QEMU_IOTHREAD_LOCK_GUARD to BQL_LOCK_GUARD
  qemu/main-loop: rename qemu_cond_wait_iothread() to
    qemu_cond_wait_bql()
  Replace "iothread lock" with "BQL" in comments
  Rename "QEMU global mutex" to "BQL" in comments and docs

 docs/devel/multi-thread-tcg.rst      |   7 +-
 docs/devel/qapi-code-gen.rst         |   2 +-
 docs/devel/replay.rst                |   2 +-
 docs/devel/reset.rst                 |   2 +-
 docs/devel/multiple-iothreads.txt    |  14 ++--
 hw/display/qxl.h                     |   2 +-
 include/block/aio-wait.h             |   2 +-
 include/block/blockjob.h             |   6 +-
 include/exec/cpu-common.h            |   2 +-
 include/exec/memory.h                |   4 +-
 include/exec/ramblock.h              |   2 +-
 include/io/task.h                    |   2 +-
 include/migration/register.h         |   8 +-
 include/qemu/coroutine-core.h        |   2 +-
 include/qemu/coroutine.h             |   2 +-
 include/qemu/main-loop.h             |  68 ++++++++-------
 include/qemu/thread.h                |   2 +-
 target/arm/internals.h               |   4 +-
 accel/accel-blocker.c                |  10 +--
 accel/dummy-cpus.c                   |   8 +-
 accel/hvf/hvf-accel-ops.c            |   4 +-
 accel/kvm/kvm-accel-ops.c            |   4 +-
 accel/kvm/kvm-all.c                  |  22 ++---
 accel/tcg/cpu-exec.c                 |  26 +++---
 accel/tcg/cputlb.c                   |  20 ++---
 accel/tcg/tcg-accel-ops-icount.c     |   6 +-
 accel/tcg/tcg-accel-ops-mttcg.c      |  12 +--
 accel/tcg/tcg-accel-ops-rr.c         |  18 ++--
 accel/tcg/tcg-accel-ops.c            |   2 +-
 accel/tcg/translate-all.c            |   2 +-
 cpu-common.c                         |   4 +-
 dump/dump.c                          |   4 +-
 hw/block/dataplane/virtio-blk.c      |   8 +-
 hw/block/virtio-blk.c                |   2 +-
 hw/core/cpu-common.c                 |   6 +-
 hw/display/virtio-gpu.c              |   2 +-
 hw/i386/intel_iommu.c                |   6 +-
 hw/i386/kvm/xen_evtchn.c             |  30 +++----
 hw/i386/kvm/xen_gnttab.c             |   2 +-
 hw/i386/kvm/xen_overlay.c            |   2 +-
 hw/i386/kvm/xen_xenstore.c           |   2 +-
 hw/intc/arm_gicv3_cpuif.c            |   2 +-
 hw/intc/s390_flic.c                  |  18 ++--
 hw/mips/mips_int.c                   |   2 +-
 hw/misc/edu.c                        |   4 +-
 hw/misc/imx6_src.c                   |   2 +-
 hw/misc/imx7_src.c                   |   2 +-
 hw/net/xen_nic.c                     |   8 +-
 hw/ppc/pegasos2.c                    |   2 +-
 hw/ppc/ppc.c                         |   6 +-
 hw/ppc/spapr.c                       |   2 +-
 hw/ppc/spapr_events.c                |   2 +-
 hw/ppc/spapr_rng.c                   |   4 +-
 hw/ppc/spapr_softmmu.c               |   4 +-
 hw/remote/mpqemu-link.c              |  22 ++---
 hw/remote/vfio-user-obj.c            |   2 +-
 hw/s390x/s390-skeys.c                |   2 +-
 hw/scsi/virtio-scsi-dataplane.c      |   6 +-
 migration/block-dirty-bitmap.c       |  14 ++--
 migration/block.c                    |  38 ++++-----
 migration/colo.c                     |  62 +++++++-------
 migration/dirtyrate.c                |  12 +--
 migration/migration.c                |  54 ++++++------
 migration/ram.c                      |  16 ++--
 net/tap.c                            |   2 +-
 replay/replay-internal.c             |   2 +-
 semihosting/console.c                |   8 +-
 stubs/iothread-lock.c                |   6 +-
 system/cpu-throttle.c                |   6 +-
 system/cpus.c                        |  55 +++++++------
 system/dirtylimit.c                  |   4 +-
 system/memory.c                      |   2 +-
 system/physmem.c                     |  14 ++--
 system/runstate.c                    |   2 +-
 system/watchpoint.c                  |   4 +-
 target/arm/arm-powerctl.c            |  14 ++--
 target/arm/helper.c                  |   6 +-
 target/arm/hvf/hvf.c                 |   8 +-
 target/arm/kvm.c                     |   8 +-
 target/arm/ptw.c                     |   6 +-
 target/arm/tcg/helper-a64.c          |   8 +-
 target/arm/tcg/m_helper.c            |   6 +-
 target/arm/tcg/op_helper.c           |  24 +++---
 target/arm/tcg/psci.c                |   2 +-
 target/hppa/int_helper.c             |   8 +-
 target/i386/hvf/hvf.c                |   6 +-
 target/i386/kvm/hyperv.c             |   4 +-
 target/i386/kvm/kvm.c                |  28 +++----
 target/i386/kvm/xen-emu.c            |  16 ++--
 target/i386/nvmm/nvmm-accel-ops.c    |   6 +-
 target/i386/nvmm/nvmm-all.c          |  20 ++---
 target/i386/tcg/sysemu/fpu_helper.c  |   6 +-
 target/i386/tcg/sysemu/misc_helper.c |   4 +-
 target/i386/whpx/whpx-accel-ops.c    |   6 +-
 target/i386/whpx/whpx-all.c          |  24 +++---
 target/loongarch/csr_helper.c        |   4 +-
 target/mips/kvm.c                    |   4 +-
 target/mips/tcg/sysemu/cp0_helper.c  |   4 +-
 target/openrisc/sys_helper.c         |  16 ++--
 target/ppc/excp_helper.c             |  14 ++--
 target/ppc/helper_regs.c             |   2 +-
 target/ppc/kvm.c                     |   4 +-
 target/ppc/misc_helper.c             |   8 +-
 target/ppc/timebase_helper.c         |   8 +-
 target/riscv/cpu_helper.c            |   4 +-
 target/s390x/kvm/kvm.c               |   4 +-
 target/s390x/tcg/misc_helper.c       | 118 +++++++++++++--------------
 target/sparc/int32_helper.c          |   2 +-
 target/sparc/int64_helper.c          |   6 +-
 target/sparc/win_helper.c            |  20 ++---
 target/xtensa/exc_helper.c           |   8 +-
 ui/spice-core.c                      |   6 +-
 util/async.c                         |   2 +-
 util/main-loop.c                     |   8 +-
 util/qsp.c                           |   6 +-
 util/rcu.c                           |  16 ++--
 audio/coreaudio.m                    |   8 +-
 memory_ldst.c.inc                    |  18 ++--
 target/i386/hvf/README.md            |   2 +-
 ui/cocoa.m                           |  56 ++++++-------
 120 files changed, 641 insertions(+), 643 deletions(-)

-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Tue Jan 02 15:35:50 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 02 Jan 2024 15:35:50 +0000
Received: from list by lists.xenproject.org with outflank-mailman.660741.1030324 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rKgo2-00083v-N1; Tue, 02 Jan 2024 15:35:50 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 660741.1030324; Tue, 02 Jan 2024 15:35:50 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rKgo2-00083i-Jx; Tue, 02 Jan 2024 15:35:50 +0000
Received: by outflank-mailman (input) for mailman id 660741;
 Tue, 02 Jan 2024 15:35:48 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=JX1x=IM=redhat.com=stefanha@srs-se1.protection.inumbo.net>)
 id 1rKgo0-00082L-QX
 for xen-devel@lists.xenproject.org; Tue, 02 Jan 2024 15:35:48 +0000
Received: from us-smtp-delivery-124.mimecast.com
 (us-smtp-delivery-124.mimecast.com [170.10.133.124])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 988df774-a984-11ee-9b0f-b553b5be7939;
 Tue, 02 Jan 2024 16:35:46 +0100 (CET)
Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com
 [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS
 (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id
 us-mta-596-i1Sg-AuUNZ-LM4Nzo0jp8A-1; Tue, 02 Jan 2024 10:35:41 -0500
Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.rdu2.redhat.com
 [10.11.54.4])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256)
 (No client certificate requested)
 by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 68CAE185A786;
 Tue,  2 Jan 2024 15:35:38 +0000 (UTC)
Received: from localhost (unknown [10.39.193.188])
 by smtp.corp.redhat.com (Postfix) with ESMTP id 8BFAE2027042;
 Tue,  2 Jan 2024 15:35:37 +0000 (UTC)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 988df774-a984-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
	s=mimecast20190719; t=1704209745;
	h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
	 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=C6keNf8ENMxa5hxSNThwu7kx0Y76THaDxXwlioY2QjA=;
	b=B1MSeSoJdrOPhoxx1hAh0vZhAiSON8HaGHikBNVHBIDHpjd9WyXYuXIutIWDoEmjZd2eqR
	W+FPxQDDjd7w+zAy6UfndI/UykihTfujXUyoR+V7Uqcn9ceJaJWrQ0Dz6lVSaNNysrm2Uh
	I1mGY5Hilo/rQp3REfTDhtwDUFJY78I=
X-MC-Unique: i1Sg-AuUNZ-LM4Nzo0jp8A-1
From: Stefan Hajnoczi <stefanha@redhat.com>
To: qemu-devel@nongnu.org
Cc: Hanna Reitz <hreitz@redhat.com>,
	qemu-riscv@nongnu.org,
	Roman Bolshakov <rbolshakov@ddn.com>,
	=?UTF-8?q?C=C3=A9dric=20Le=20Goater?= <clg@kaod.org>,
	Elena Ufimtseva <elena.ufimtseva@oracle.com>,
	Eduardo Habkost <eduardo@habkost.net>,
	Thomas Huth <thuth@redhat.com>,
	Stefan Hajnoczi <stefanha@redhat.com>,
	qemu-block@nongnu.org,
	Andrey Smirnov <andrew.smirnov@gmail.com>,
	Peter Maydell <peter.maydell@linaro.org>,
	Huacai Chen <chenhuacai@kernel.org>,
	Fam Zheng <fam@euphon.net>,
	Gerd Hoffmann <kraxel@redhat.com>,
	David Gibson <david@gibson.dropbear.id.au>,
	John Snow <jsnow@redhat.com>,
	Stafford Horne <shorne@gmail.com>,
	Weiwei Li <liwei1518@gmail.com>,
	Jean-Christophe Dubois <jcd@tribudubois.net>,
	Cameron Esfahani <dirty@apple.com>,
	Alexander Graf <agraf@csgraf.de>,
	David Hildenbrand <david@redhat.com>,
	Juan Quintela <quintela@redhat.com>,
	Nicholas Piggin <npiggin@gmail.com>,
	Max Filippov <jcmvbkbc@gmail.com>,
	=?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= <berrange@redhat.com>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Daniel Henrique Barboza <danielhb413@gmail.com>,
	Markus Armbruster <armbru@redhat.com>,
	Peter Xu <peterx@redhat.com>,
	Vladimir Sementsov-Ogievskiy <vsementsov@yandex-team.ru>,
	Richard Henderson <richard.henderson@linaro.org>,
	qemu-s390x@nongnu.org,
	Jiri Slaby <jslaby@suse.cz>,
	Pavel Dovgalyuk <pavel.dovgaluk@ispras.ru>,
	Eric Blake <eblake@redhat.com>,
	Akihiko Odaki <akihiko.odaki@daynix.com>,
	=?UTF-8?q?Alex=20Benn=C3=A9e?= <alex.bennee@linaro.org>,
	Aleksandar Rikalo <aleksandar.rikalo@syrmia.com>,
	"Michael S. Tsirkin" <mst@redhat.com>,
	Jason Wang <jasowang@redhat.com>,
	Jiaxun Yang <jiaxun.yang@flygoat.com>,
	Sunil Muthuswamy <sunilmut@microsoft.com>,
	Alistair Francis <alistair.francis@wdc.com>,
	=?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= <philmd@linaro.org>,
	Fabiano Rosas <farosas@suse.de>,
	Michael Roth <michael.roth@amd.com>,
	Paul Durrant <paul@xen.org>,
	Jagannathan Raman <jag.raman@oracle.com>,
	Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Hyman Huang <yong.huang@smartx.com>,
	=?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= <marcandre.lureau@redhat.com>,
	xen-devel@lists.xenproject.org,
	Halil Pasic <pasic@linux.ibm.com>,
	Christian Borntraeger <borntraeger@linux.ibm.com>,
	Song Gao <gaosong@loongson.cn>,
	Kevin Wolf <kwolf@redhat.com>,
	Ilya Leoshkevich <iii@linux.ibm.com>,
	Artyom Tarasenko <atar4qemu@gmail.com>,
	Marcel Apfelbaum <marcel.apfelbaum@gmail.com>,
	Reinoud Zandijk <reinoud@netbsd.org>,
	qemu-ppc@nongnu.org,
	Marcelo Tosatti <mtosatti@redhat.com>,
	David Woodhouse <dwmw2@infradead.org>,
	Aurelien Jarno <aurelien@aurel32.net>,
	Bin Meng <bin.meng@windriver.com>,
	qemu-arm@nongnu.org,
	Anthony Perard <anthony.perard@citrix.com>,
	Leonardo Bras <leobras@redhat.com>,
	Hailiang Zhang <zhanghailiang@xfusion.com>,
	Harsh Prateek Bora <harshpb@linux.ibm.com>,
	kvm@vger.kernel.org,
	Palmer Dabbelt <palmer@dabbelt.com>,
	Eric Farman <farman@linux.ibm.com>,
	BALATON Zoltan <balaton@eik.bme.hu>,
	Liu Zhiwei <zhiwei_liu@linux.alibaba.com>,
	David Woodhouse <dwmw@amazon.co.uk>
Subject: [PATCH v3 2/5] qemu/main-loop: rename QEMU_IOTHREAD_LOCK_GUARD to BQL_LOCK_GUARD
Date: Tue,  2 Jan 2024 10:35:26 -0500
Message-ID: <20240102153529.486531-3-stefanha@redhat.com>
In-Reply-To: <20240102153529.486531-1-stefanha@redhat.com>
References: <20240102153529.486531-1-stefanha@redhat.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Scanned-By: MIMEDefang 3.4.1 on 10.11.54.4

The name "iothread" is overloaded. Use the term Big QEMU Lock (BQL)
instead, it is already widely used and unambiguous.

Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
Reviewed-by: Paul Durrant <paul@xen.org>
Acked-by: David Woodhouse <dwmw@amazon.co.uk>
Reviewed-by: Cédric Le Goater <clg@kaod.org>
Acked-by: Ilya Leoshkevich <iii@linux.ibm.com>
---
 include/qemu/main-loop.h  | 19 +++++++++----------
 hw/i386/kvm/xen_evtchn.c  | 14 +++++++-------
 hw/i386/kvm/xen_gnttab.c  |  2 +-
 hw/mips/mips_int.c        |  2 +-
 hw/ppc/ppc.c              |  2 +-
 target/i386/kvm/xen-emu.c |  2 +-
 target/ppc/excp_helper.c  |  2 +-
 target/ppc/helper_regs.c  |  2 +-
 target/riscv/cpu_helper.c |  4 ++--
 9 files changed, 24 insertions(+), 25 deletions(-)

diff --git a/include/qemu/main-loop.h b/include/qemu/main-loop.h
index 72ebc0cb3a..c26ad2a029 100644
--- a/include/qemu/main-loop.h
+++ b/include/qemu/main-loop.h
@@ -343,33 +343,32 @@ void bql_lock_impl(const char *file, int line);
 void bql_unlock(void);
 
 /**
- * QEMU_IOTHREAD_LOCK_GUARD
+ * BQL_LOCK_GUARD
  *
  * Wrap a block of code in a conditional bql_{lock,unlock}.
  */
-typedef struct IOThreadLockAuto IOThreadLockAuto;
+typedef struct BQLLockAuto BQLLockAuto;
 
-static inline IOThreadLockAuto *qemu_iothread_auto_lock(const char *file,
-                                                        int line)
+static inline BQLLockAuto *bql_auto_lock(const char *file, int line)
 {
     if (bql_locked()) {
         return NULL;
     }
     bql_lock_impl(file, line);
     /* Anything non-NULL causes the cleanup function to be called */
-    return (IOThreadLockAuto *)(uintptr_t)1;
+    return (BQLLockAuto *)(uintptr_t)1;
 }
 
-static inline void qemu_iothread_auto_unlock(IOThreadLockAuto *l)
+static inline void bql_auto_unlock(BQLLockAuto *l)
 {
     bql_unlock();
 }
 
-G_DEFINE_AUTOPTR_CLEANUP_FUNC(IOThreadLockAuto, qemu_iothread_auto_unlock)
+G_DEFINE_AUTOPTR_CLEANUP_FUNC(BQLLockAuto, bql_auto_unlock)
 
-#define QEMU_IOTHREAD_LOCK_GUARD() \
-    g_autoptr(IOThreadLockAuto) _iothread_lock_auto __attribute__((unused)) \
-        = qemu_iothread_auto_lock(__FILE__, __LINE__)
+#define BQL_LOCK_GUARD() \
+    g_autoptr(BQLLockAuto) _bql_lock_auto __attribute__((unused)) \
+        = bql_auto_lock(__FILE__, __LINE__)
 
 /*
  * qemu_cond_wait_iothread: Wait on condition for the main loop mutex
diff --git a/hw/i386/kvm/xen_evtchn.c b/hw/i386/kvm/xen_evtchn.c
index d7d15cfaf7..bd077eda6d 100644
--- a/hw/i386/kvm/xen_evtchn.c
+++ b/hw/i386/kvm/xen_evtchn.c
@@ -1127,7 +1127,7 @@ int xen_evtchn_reset_op(struct evtchn_reset *reset)
         return -ESRCH;
     }
 
-    QEMU_IOTHREAD_LOCK_GUARD();
+    BQL_LOCK_GUARD();
     return xen_evtchn_soft_reset();
 }
 
@@ -1145,7 +1145,7 @@ int xen_evtchn_close_op(struct evtchn_close *close)
         return -EINVAL;
     }
 
-    QEMU_IOTHREAD_LOCK_GUARD();
+    BQL_LOCK_GUARD();
     qemu_mutex_lock(&s->port_lock);
 
     ret = close_port(s, close->port, &flush_kvm_routes);
@@ -1272,7 +1272,7 @@ int xen_evtchn_bind_pirq_op(struct evtchn_bind_pirq *pirq)
         return -EINVAL;
     }
 
-    QEMU_IOTHREAD_LOCK_GUARD();
+    BQL_LOCK_GUARD();
 
     if (s->pirq[pirq->pirq].port) {
         return -EBUSY;
@@ -1824,7 +1824,7 @@ int xen_physdev_map_pirq(struct physdev_map_pirq *map)
         return -ENOTSUP;
     }
 
-    QEMU_IOTHREAD_LOCK_GUARD();
+    BQL_LOCK_GUARD();
     QEMU_LOCK_GUARD(&s->port_lock);
 
     if (map->domid != DOMID_SELF && map->domid != xen_domid) {
@@ -1884,7 +1884,7 @@ int xen_physdev_unmap_pirq(struct physdev_unmap_pirq *unmap)
         return -EINVAL;
     }
 
-    QEMU_IOTHREAD_LOCK_GUARD();
+    BQL_LOCK_GUARD();
     qemu_mutex_lock(&s->port_lock);
 
     if (!pirq_inuse(s, pirq)) {
@@ -1924,7 +1924,7 @@ int xen_physdev_eoi_pirq(struct physdev_eoi *eoi)
         return -ENOTSUP;
     }
 
-    QEMU_IOTHREAD_LOCK_GUARD();
+    BQL_LOCK_GUARD();
     QEMU_LOCK_GUARD(&s->port_lock);
 
     if (!pirq_inuse(s, pirq)) {
@@ -1956,7 +1956,7 @@ int xen_physdev_query_pirq(struct physdev_irq_status_query *query)
         return -ENOTSUP;
     }
 
-    QEMU_IOTHREAD_LOCK_GUARD();
+    BQL_LOCK_GUARD();
     QEMU_LOCK_GUARD(&s->port_lock);
 
     if (!pirq_inuse(s, pirq)) {
diff --git a/hw/i386/kvm/xen_gnttab.c b/hw/i386/kvm/xen_gnttab.c
index 0a24f53f20..d9477ae927 100644
--- a/hw/i386/kvm/xen_gnttab.c
+++ b/hw/i386/kvm/xen_gnttab.c
@@ -176,7 +176,7 @@ int xen_gnttab_map_page(uint64_t idx, uint64_t gfn)
         return -EINVAL;
     }
 
-    QEMU_IOTHREAD_LOCK_GUARD();
+    BQL_LOCK_GUARD();
     QEMU_LOCK_GUARD(&s->gnt_lock);
 
     xen_overlay_do_map_page(&s->gnt_aliases[idx], gpa);
diff --git a/hw/mips/mips_int.c b/hw/mips/mips_int.c
index 6c32e466a3..eef2fd2cd1 100644
--- a/hw/mips/mips_int.c
+++ b/hw/mips/mips_int.c
@@ -36,7 +36,7 @@ static void cpu_mips_irq_request(void *opaque, int irq, int level)
         return;
     }
 
-    QEMU_IOTHREAD_LOCK_GUARD();
+    BQL_LOCK_GUARD();
 
     if (level) {
         env->CP0_Cause |= 1 << (irq + CP0Ca_IP);
diff --git a/hw/ppc/ppc.c b/hw/ppc/ppc.c
index b6581c16fc..7387b5b677 100644
--- a/hw/ppc/ppc.c
+++ b/hw/ppc/ppc.c
@@ -47,7 +47,7 @@ void ppc_set_irq(PowerPCCPU *cpu, int irq, int level)
     unsigned int old_pending;
 
     /* We may already have the BQL if coming from the reset path */
-    QEMU_IOTHREAD_LOCK_GUARD();
+    BQL_LOCK_GUARD();
 
     old_pending = env->pending_interrupts;
 
diff --git a/target/i386/kvm/xen-emu.c b/target/i386/kvm/xen-emu.c
index b0ed2e6aeb..fc2c2321ac 100644
--- a/target/i386/kvm/xen-emu.c
+++ b/target/i386/kvm/xen-emu.c
@@ -581,7 +581,7 @@ static int xen_set_shared_info(uint64_t gfn)
     uint64_t gpa = gfn << TARGET_PAGE_BITS;
     int i, err;
 
-    QEMU_IOTHREAD_LOCK_GUARD();
+    BQL_LOCK_GUARD();
 
     /*
      * The xen_overlay device tells KVM about it too, since it had to
diff --git a/target/ppc/excp_helper.c b/target/ppc/excp_helper.c
index 8a2bfb5aa2..2ec6429e36 100644
--- a/target/ppc/excp_helper.c
+++ b/target/ppc/excp_helper.c
@@ -2222,7 +2222,7 @@ static int ppc_next_unmasked_interrupt(CPUPPCState *env)
 void ppc_maybe_interrupt(CPUPPCState *env)
 {
     CPUState *cs = env_cpu(env);
-    QEMU_IOTHREAD_LOCK_GUARD();
+    BQL_LOCK_GUARD();
 
     if (ppc_next_unmasked_interrupt(env)) {
         cpu_interrupt(cs, CPU_INTERRUPT_HARD);
diff --git a/target/ppc/helper_regs.c b/target/ppc/helper_regs.c
index f380342d4d..e0b2dcd02e 100644
--- a/target/ppc/helper_regs.c
+++ b/target/ppc/helper_regs.c
@@ -244,7 +244,7 @@ void cpu_interrupt_exittb(CPUState *cs)
      * unless running with TCG.
      */
     if (tcg_enabled()) {
-        QEMU_IOTHREAD_LOCK_GUARD();
+        BQL_LOCK_GUARD();
         cpu_interrupt(cs, CPU_INTERRUPT_EXITTB);
     }
 }
diff --git a/target/riscv/cpu_helper.c b/target/riscv/cpu_helper.c
index e7e23b34f4..99d1275729 100644
--- a/target/riscv/cpu_helper.c
+++ b/target/riscv/cpu_helper.c
@@ -655,7 +655,7 @@ void riscv_cpu_interrupt(CPURISCVState *env)
     uint64_t gein, vsgein = 0, vstip = 0, irqf = 0;
     CPUState *cs = env_cpu(env);
 
-    QEMU_IOTHREAD_LOCK_GUARD();
+    BQL_LOCK_GUARD();
 
     if (env->virt_enabled) {
         gein = get_field(env->hstatus, HSTATUS_VGEIN);
@@ -681,7 +681,7 @@ uint64_t riscv_cpu_update_mip(CPURISCVState *env, uint64_t mask, uint64_t value)
     /* No need to update mip for VSTIP */
     mask = ((mask == MIP_VSTIP) && env->vstime_irq) ? 0 : mask;
 
-    QEMU_IOTHREAD_LOCK_GUARD();
+    BQL_LOCK_GUARD();
 
     env->mip = (env->mip & ~mask) | (value & mask);
 
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Tue Jan 02 15:35:52 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 02 Jan 2024 15:35:52 +0000
Received: from list by lists.xenproject.org with outflank-mailman.660742.1030334 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rKgo4-0008JW-0i; Tue, 02 Jan 2024 15:35:52 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 660742.1030334; Tue, 02 Jan 2024 15:35:51 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rKgo3-0008JP-T1; Tue, 02 Jan 2024 15:35:51 +0000
Received: by outflank-mailman (input) for mailman id 660742;
 Tue, 02 Jan 2024 15:35:49 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=JX1x=IM=redhat.com=stefanha@srs-se1.protection.inumbo.net>)
 id 1rKgo1-0007fS-UV
 for xen-devel@lists.xenproject.org; Tue, 02 Jan 2024 15:35:49 +0000
Received: from us-smtp-delivery-124.mimecast.com
 (us-smtp-delivery-124.mimecast.com [170.10.133.124])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 9a362117-a984-11ee-98ef-6d05b1d4d9a1;
 Tue, 02 Jan 2024 16:35:49 +0100 (CET)
Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com
 [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS
 (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id
 us-mta-460-1PB8t8t1Oum-Zc_LQMCeiA-1; Tue, 02 Jan 2024 10:35:43 -0500
Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.rdu2.redhat.com
 [10.11.54.7])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256)
 (No client certificate requested)
 by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 48BBC1019DE2;
 Tue,  2 Jan 2024 15:35:41 +0000 (UTC)
Received: from localhost (unknown [10.39.193.188])
 by smtp.corp.redhat.com (Postfix) with ESMTP id D0B151C060AF;
 Tue,  2 Jan 2024 15:35:39 +0000 (UTC)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 9a362117-a984-11ee-98ef-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
	s=mimecast20190719; t=1704209748;
	h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
	 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=OwajIiXGKStV/z0IMsU+Fr0XyTy0YZLrRynkJ5gSOmo=;
	b=ERMBnmfTM7XPAGNNV5Aeguj58lOnhz1oyFAwarZAdO6EC79ubZki2C956JXpF9aVd0vRWI
	3JegJVkLhO55S6wP8zLlirefROnImI8d3KWNG7W8RMRw2yoLf0RSHxhxI6guX/ZO8aYJC3
	RDGxhvMaRWULd/cbhRxBmBmVVSZZDgM=
X-MC-Unique: 1PB8t8t1Oum-Zc_LQMCeiA-1
From: Stefan Hajnoczi <stefanha@redhat.com>
To: qemu-devel@nongnu.org
Cc: Hanna Reitz <hreitz@redhat.com>,
	qemu-riscv@nongnu.org,
	Roman Bolshakov <rbolshakov@ddn.com>,
	=?UTF-8?q?C=C3=A9dric=20Le=20Goater?= <clg@kaod.org>,
	Elena Ufimtseva <elena.ufimtseva@oracle.com>,
	Eduardo Habkost <eduardo@habkost.net>,
	Thomas Huth <thuth@redhat.com>,
	Stefan Hajnoczi <stefanha@redhat.com>,
	qemu-block@nongnu.org,
	Andrey Smirnov <andrew.smirnov@gmail.com>,
	Peter Maydell <peter.maydell@linaro.org>,
	Huacai Chen <chenhuacai@kernel.org>,
	Fam Zheng <fam@euphon.net>,
	Gerd Hoffmann <kraxel@redhat.com>,
	David Gibson <david@gibson.dropbear.id.au>,
	John Snow <jsnow@redhat.com>,
	Stafford Horne <shorne@gmail.com>,
	Weiwei Li <liwei1518@gmail.com>,
	Jean-Christophe Dubois <jcd@tribudubois.net>,
	Cameron Esfahani <dirty@apple.com>,
	Alexander Graf <agraf@csgraf.de>,
	David Hildenbrand <david@redhat.com>,
	Juan Quintela <quintela@redhat.com>,
	Nicholas Piggin <npiggin@gmail.com>,
	Max Filippov <jcmvbkbc@gmail.com>,
	=?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= <berrange@redhat.com>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Daniel Henrique Barboza <danielhb413@gmail.com>,
	Markus Armbruster <armbru@redhat.com>,
	Peter Xu <peterx@redhat.com>,
	Vladimir Sementsov-Ogievskiy <vsementsov@yandex-team.ru>,
	Richard Henderson <richard.henderson@linaro.org>,
	qemu-s390x@nongnu.org,
	Jiri Slaby <jslaby@suse.cz>,
	Pavel Dovgalyuk <pavel.dovgaluk@ispras.ru>,
	Eric Blake <eblake@redhat.com>,
	Akihiko Odaki <akihiko.odaki@daynix.com>,
	=?UTF-8?q?Alex=20Benn=C3=A9e?= <alex.bennee@linaro.org>,
	Aleksandar Rikalo <aleksandar.rikalo@syrmia.com>,
	"Michael S. Tsirkin" <mst@redhat.com>,
	Jason Wang <jasowang@redhat.com>,
	Jiaxun Yang <jiaxun.yang@flygoat.com>,
	Sunil Muthuswamy <sunilmut@microsoft.com>,
	Alistair Francis <alistair.francis@wdc.com>,
	=?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= <philmd@linaro.org>,
	Fabiano Rosas <farosas@suse.de>,
	Michael Roth <michael.roth@amd.com>,
	Paul Durrant <paul@xen.org>,
	Jagannathan Raman <jag.raman@oracle.com>,
	Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Hyman Huang <yong.huang@smartx.com>,
	=?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= <marcandre.lureau@redhat.com>,
	xen-devel@lists.xenproject.org,
	Halil Pasic <pasic@linux.ibm.com>,
	Christian Borntraeger <borntraeger@linux.ibm.com>,
	Song Gao <gaosong@loongson.cn>,
	Kevin Wolf <kwolf@redhat.com>,
	Ilya Leoshkevich <iii@linux.ibm.com>,
	Artyom Tarasenko <atar4qemu@gmail.com>,
	Marcel Apfelbaum <marcel.apfelbaum@gmail.com>,
	Reinoud Zandijk <reinoud@netbsd.org>,
	qemu-ppc@nongnu.org,
	Marcelo Tosatti <mtosatti@redhat.com>,
	David Woodhouse <dwmw2@infradead.org>,
	Aurelien Jarno <aurelien@aurel32.net>,
	Bin Meng <bin.meng@windriver.com>,
	qemu-arm@nongnu.org,
	Anthony Perard <anthony.perard@citrix.com>,
	Leonardo Bras <leobras@redhat.com>,
	Hailiang Zhang <zhanghailiang@xfusion.com>,
	Harsh Prateek Bora <harshpb@linux.ibm.com>,
	kvm@vger.kernel.org,
	Palmer Dabbelt <palmer@dabbelt.com>,
	Eric Farman <farman@linux.ibm.com>,
	BALATON Zoltan <balaton@eik.bme.hu>,
	Liu Zhiwei <zhiwei_liu@linux.alibaba.com>
Subject: [PATCH v3 3/5] qemu/main-loop: rename qemu_cond_wait_iothread() to qemu_cond_wait_bql()
Date: Tue,  2 Jan 2024 10:35:27 -0500
Message-ID: <20240102153529.486531-4-stefanha@redhat.com>
In-Reply-To: <20240102153529.486531-1-stefanha@redhat.com>
References: <20240102153529.486531-1-stefanha@redhat.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Scanned-By: MIMEDefang 3.4.1 on 10.11.54.7

The name "iothread" is overloaded. Use the term Big QEMU Lock (BQL)
instead, it is already widely used and unambiguous.

Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
Reviewed-by: Cédric Le Goater <clg@kaod.org>
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
---
 include/qemu/main-loop.h          | 10 +++++-----
 accel/tcg/tcg-accel-ops-rr.c      |  4 ++--
 hw/display/virtio-gpu.c           |  2 +-
 hw/ppc/spapr_events.c             |  2 +-
 system/cpu-throttle.c             |  2 +-
 system/cpus.c                     |  4 ++--
 target/i386/nvmm/nvmm-accel-ops.c |  2 +-
 target/i386/whpx/whpx-accel-ops.c |  2 +-
 8 files changed, 14 insertions(+), 14 deletions(-)

diff --git a/include/qemu/main-loop.h b/include/qemu/main-loop.h
index c26ad2a029..5764db157c 100644
--- a/include/qemu/main-loop.h
+++ b/include/qemu/main-loop.h
@@ -371,17 +371,17 @@ G_DEFINE_AUTOPTR_CLEANUP_FUNC(BQLLockAuto, bql_auto_unlock)
         = bql_auto_lock(__FILE__, __LINE__)
 
 /*
- * qemu_cond_wait_iothread: Wait on condition for the main loop mutex
+ * qemu_cond_wait_bql: Wait on condition for the Big QEMU Lock (BQL)
  *
- * This function atomically releases the main loop mutex and causes
+ * This function atomically releases the Big QEMU Lock (BQL) and causes
  * the calling thread to block on the condition.
  */
-void qemu_cond_wait_iothread(QemuCond *cond);
+void qemu_cond_wait_bql(QemuCond *cond);
 
 /*
- * qemu_cond_timedwait_iothread: like the previous, but with timeout
+ * qemu_cond_timedwait_bql: like the previous, but with timeout
  */
-void qemu_cond_timedwait_iothread(QemuCond *cond, int ms);
+void qemu_cond_timedwait_bql(QemuCond *cond, int ms);
 
 /* internal interfaces */
 
diff --git a/accel/tcg/tcg-accel-ops-rr.c b/accel/tcg/tcg-accel-ops-rr.c
index c4ea372a3f..5794e5a9ce 100644
--- a/accel/tcg/tcg-accel-ops-rr.c
+++ b/accel/tcg/tcg-accel-ops-rr.c
@@ -111,7 +111,7 @@ static void rr_wait_io_event(void)
 
     while (all_cpu_threads_idle()) {
         rr_stop_kick_timer();
-        qemu_cond_wait_iothread(first_cpu->halt_cond);
+        qemu_cond_wait_bql(first_cpu->halt_cond);
     }
 
     rr_start_kick_timer();
@@ -198,7 +198,7 @@ static void *rr_cpu_thread_fn(void *arg)
 
     /* wait for initial kick-off after machine start */
     while (first_cpu->stopped) {
-        qemu_cond_wait_iothread(first_cpu->halt_cond);
+        qemu_cond_wait_bql(first_cpu->halt_cond);
 
         /* process any pending work */
         CPU_FOREACH(cpu) {
diff --git a/hw/display/virtio-gpu.c b/hw/display/virtio-gpu.c
index b016d3bac8..67c5be1a4e 100644
--- a/hw/display/virtio-gpu.c
+++ b/hw/display/virtio-gpu.c
@@ -1512,7 +1512,7 @@ void virtio_gpu_reset(VirtIODevice *vdev)
         g->reset_finished = false;
         qemu_bh_schedule(g->reset_bh);
         while (!g->reset_finished) {
-            qemu_cond_wait_iothread(&g->reset_cond);
+            qemu_cond_wait_bql(&g->reset_cond);
         }
     } else {
         virtio_gpu_reset_bh(g);
diff --git a/hw/ppc/spapr_events.c b/hw/ppc/spapr_events.c
index deb4641505..cb0eeee587 100644
--- a/hw/ppc/spapr_events.c
+++ b/hw/ppc/spapr_events.c
@@ -899,7 +899,7 @@ void spapr_mce_req_event(PowerPCCPU *cpu, bool recovered)
             }
             return;
         }
-        qemu_cond_wait_iothread(&spapr->fwnmi_machine_check_interlock_cond);
+        qemu_cond_wait_bql(&spapr->fwnmi_machine_check_interlock_cond);
         if (spapr->fwnmi_machine_check_addr == -1) {
             /*
              * If the machine was reset while waiting for the interlock,
diff --git a/system/cpu-throttle.c b/system/cpu-throttle.c
index 786a9a5639..c951a6c65e 100644
--- a/system/cpu-throttle.c
+++ b/system/cpu-throttle.c
@@ -54,7 +54,7 @@ static void cpu_throttle_thread(CPUState *cpu, run_on_cpu_data opaque)
     endtime_ns = qemu_clock_get_ns(QEMU_CLOCK_REALTIME) + sleeptime_ns;
     while (sleeptime_ns > 0 && !cpu->stop) {
         if (sleeptime_ns > SCALE_MS) {
-            qemu_cond_timedwait_iothread(cpu->halt_cond,
+            qemu_cond_timedwait_bql(cpu->halt_cond,
                                          sleeptime_ns / SCALE_MS);
         } else {
             bql_unlock();
diff --git a/system/cpus.c b/system/cpus.c
index 9b68dc9c7c..c8e2772b5f 100644
--- a/system/cpus.c
+++ b/system/cpus.c
@@ -514,12 +514,12 @@ void bql_unlock(void)
     qemu_mutex_unlock(&bql);
 }
 
-void qemu_cond_wait_iothread(QemuCond *cond)
+void qemu_cond_wait_bql(QemuCond *cond)
 {
     qemu_cond_wait(cond, &bql);
 }
 
-void qemu_cond_timedwait_iothread(QemuCond *cond, int ms)
+void qemu_cond_timedwait_bql(QemuCond *cond, int ms)
 {
     qemu_cond_timedwait(cond, &bql, ms);
 }
diff --git a/target/i386/nvmm/nvmm-accel-ops.c b/target/i386/nvmm/nvmm-accel-ops.c
index f9d5e9a37a..6b2bfd9b9c 100644
--- a/target/i386/nvmm/nvmm-accel-ops.c
+++ b/target/i386/nvmm/nvmm-accel-ops.c
@@ -48,7 +48,7 @@ static void *qemu_nvmm_cpu_thread_fn(void *arg)
             }
         }
         while (cpu_thread_is_idle(cpu)) {
-            qemu_cond_wait_iothread(cpu->halt_cond);
+            qemu_cond_wait_bql(cpu->halt_cond);
         }
         qemu_wait_io_event_common(cpu);
     } while (!cpu->unplug || cpu_can_run(cpu));
diff --git a/target/i386/whpx/whpx-accel-ops.c b/target/i386/whpx/whpx-accel-ops.c
index e783a760a7..189ae0f140 100644
--- a/target/i386/whpx/whpx-accel-ops.c
+++ b/target/i386/whpx/whpx-accel-ops.c
@@ -48,7 +48,7 @@ static void *whpx_cpu_thread_fn(void *arg)
             }
         }
         while (cpu_thread_is_idle(cpu)) {
-            qemu_cond_wait_iothread(cpu->halt_cond);
+            qemu_cond_wait_bql(cpu->halt_cond);
         }
         qemu_wait_io_event_common(cpu);
     } while (!cpu->unplug || cpu_can_run(cpu));
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Tue Jan 02 15:35:52 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 02 Jan 2024 15:35:52 +0000
Received: from list by lists.xenproject.org with outflank-mailman.660743.1030340 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rKgo4-0008NR-Db; Tue, 02 Jan 2024 15:35:52 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 660743.1030340; Tue, 02 Jan 2024 15:35:52 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rKgo4-0008MG-6J; Tue, 02 Jan 2024 15:35:52 +0000
Received: by outflank-mailman (input) for mailman id 660743;
 Tue, 02 Jan 2024 15:35:51 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=JX1x=IM=redhat.com=stefanha@srs-se1.protection.inumbo.net>)
 id 1rKgo2-00082L-Tk
 for xen-devel@lists.xenproject.org; Tue, 02 Jan 2024 15:35:51 +0000
Received: from us-smtp-delivery-124.mimecast.com
 (us-smtp-delivery-124.mimecast.com [170.10.133.124])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 99362393-a984-11ee-9b0f-b553b5be7939;
 Tue, 02 Jan 2024 16:35:47 +0100 (CET)
Received: from mimecast-mx02.redhat.com (mx-ext.redhat.com [66.187.233.73])
 by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3,
 cipher=TLS_AES_256_GCM_SHA384) id us-mta-120-FIsNIqSXNuCRXMJwqv4Q0w-1; Tue,
 02 Jan 2024 10:35:38 -0500
Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.rdu2.redhat.com
 [10.11.54.3])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256)
 (No client certificate requested)
 by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 0059F3C02744;
 Tue,  2 Jan 2024 15:35:36 +0000 (UTC)
Received: from localhost (unknown [10.39.193.188])
 by smtp.corp.redhat.com (Postfix) with ESMTP id 4E2611121306;
 Tue,  2 Jan 2024 15:35:34 +0000 (UTC)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 99362393-a984-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
	s=mimecast20190719; t=1704209746;
	h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
	 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=E8p8BuMPu5oMP295LAIPy181Yf88Uwg+wqHoFxFCwIk=;
	b=i3MWDCHPz5ByvyALcNGkxIrQ1LcXdvAwTq8Xr8n9aR/bq5pFN0l/GQl7WD3rHX5GXf/1ew
	lu+507bLQJCa4TsbxRhxPtQbaCLVFT57LH8hVm8U7WjZLnYga/O9n6TeRVQ0QaIFw21OAv
	uPjX3cO5vEDgcX+1OVy1b6BJDCFZKLw=
X-MC-Unique: FIsNIqSXNuCRXMJwqv4Q0w-1
From: Stefan Hajnoczi <stefanha@redhat.com>
To: qemu-devel@nongnu.org
Cc: Hanna Reitz <hreitz@redhat.com>,
	qemu-riscv@nongnu.org,
	Roman Bolshakov <rbolshakov@ddn.com>,
	=?UTF-8?q?C=C3=A9dric=20Le=20Goater?= <clg@kaod.org>,
	Elena Ufimtseva <elena.ufimtseva@oracle.com>,
	Eduardo Habkost <eduardo@habkost.net>,
	Thomas Huth <thuth@redhat.com>,
	Stefan Hajnoczi <stefanha@redhat.com>,
	qemu-block@nongnu.org,
	Andrey Smirnov <andrew.smirnov@gmail.com>,
	Peter Maydell <peter.maydell@linaro.org>,
	Huacai Chen <chenhuacai@kernel.org>,
	Fam Zheng <fam@euphon.net>,
	Gerd Hoffmann <kraxel@redhat.com>,
	David Gibson <david@gibson.dropbear.id.au>,
	John Snow <jsnow@redhat.com>,
	Stafford Horne <shorne@gmail.com>,
	Weiwei Li <liwei1518@gmail.com>,
	Jean-Christophe Dubois <jcd@tribudubois.net>,
	Cameron Esfahani <dirty@apple.com>,
	Alexander Graf <agraf@csgraf.de>,
	David Hildenbrand <david@redhat.com>,
	Juan Quintela <quintela@redhat.com>,
	Nicholas Piggin <npiggin@gmail.com>,
	Max Filippov <jcmvbkbc@gmail.com>,
	=?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= <berrange@redhat.com>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Daniel Henrique Barboza <danielhb413@gmail.com>,
	Markus Armbruster <armbru@redhat.com>,
	Peter Xu <peterx@redhat.com>,
	Vladimir Sementsov-Ogievskiy <vsementsov@yandex-team.ru>,
	Richard Henderson <richard.henderson@linaro.org>,
	qemu-s390x@nongnu.org,
	Jiri Slaby <jslaby@suse.cz>,
	Pavel Dovgalyuk <pavel.dovgaluk@ispras.ru>,
	Eric Blake <eblake@redhat.com>,
	Akihiko Odaki <akihiko.odaki@daynix.com>,
	=?UTF-8?q?Alex=20Benn=C3=A9e?= <alex.bennee@linaro.org>,
	Aleksandar Rikalo <aleksandar.rikalo@syrmia.com>,
	"Michael S. Tsirkin" <mst@redhat.com>,
	Jason Wang <jasowang@redhat.com>,
	Jiaxun Yang <jiaxun.yang@flygoat.com>,
	Sunil Muthuswamy <sunilmut@microsoft.com>,
	Alistair Francis <alistair.francis@wdc.com>,
	=?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= <philmd@linaro.org>,
	Fabiano Rosas <farosas@suse.de>,
	Michael Roth <michael.roth@amd.com>,
	Paul Durrant <paul@xen.org>,
	Jagannathan Raman <jag.raman@oracle.com>,
	Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Hyman Huang <yong.huang@smartx.com>,
	=?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= <marcandre.lureau@redhat.com>,
	xen-devel@lists.xenproject.org,
	Halil Pasic <pasic@linux.ibm.com>,
	Christian Borntraeger <borntraeger@linux.ibm.com>,
	Song Gao <gaosong@loongson.cn>,
	Kevin Wolf <kwolf@redhat.com>,
	Ilya Leoshkevich <iii@linux.ibm.com>,
	Artyom Tarasenko <atar4qemu@gmail.com>,
	Marcel Apfelbaum <marcel.apfelbaum@gmail.com>,
	Reinoud Zandijk <reinoud@netbsd.org>,
	qemu-ppc@nongnu.org,
	Marcelo Tosatti <mtosatti@redhat.com>,
	David Woodhouse <dwmw2@infradead.org>,
	Aurelien Jarno <aurelien@aurel32.net>,
	Bin Meng <bin.meng@windriver.com>,
	qemu-arm@nongnu.org,
	Anthony Perard <anthony.perard@citrix.com>,
	Leonardo Bras <leobras@redhat.com>,
	Hailiang Zhang <zhanghailiang@xfusion.com>,
	Harsh Prateek Bora <harshpb@linux.ibm.com>,
	kvm@vger.kernel.org,
	Palmer Dabbelt <palmer@dabbelt.com>,
	Eric Farman <farman@linux.ibm.com>,
	BALATON Zoltan <balaton@eik.bme.hu>,
	Liu Zhiwei <zhiwei_liu@linux.alibaba.com>,
	David Woodhouse <dwmw@amazon.co.uk>
Subject: [PATCH v3 1/5] system/cpus: rename qemu_mutex_lock_iothread() to bql_lock()
Date: Tue,  2 Jan 2024 10:35:25 -0500
Message-ID: <20240102153529.486531-2-stefanha@redhat.com>
In-Reply-To: <20240102153529.486531-1-stefanha@redhat.com>
References: <20240102153529.486531-1-stefanha@redhat.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Scanned-By: MIMEDefang 3.4.1 on 10.11.54.3

The Big QEMU Lock (BQL) has many names and they are confusing. The
actual QemuMutex variable is called qemu_global_mutex but it's commonly
referred to as the BQL in discussions and some code comments. The
locking APIs, however, are called qemu_mutex_lock_iothread() and
qemu_mutex_unlock_iothread().

The "iothread" name is historic and comes from when the main thread was
split into into KVM vcpu threads and the "iothread" (now called the main
loop thread). I have contributed to the confusion myself by introducing
a separate --object iothread, a separate concept unrelated to the BQL.

The "iothread" name is no longer appropriate for the BQL. Rename the
locking APIs to:
- void bql_lock(void)
- void bql_unlock(void)
- bool bql_locked(void)

There are more APIs with "iothread" in their names. Subsequent patches
will rename them. There are also comments and documentation that will be
updated in later patches.

Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
Reviewed-by: Paul Durrant <paul@xen.org>
Acked-by: Fabiano Rosas <farosas@suse.de>
Acked-by: David Woodhouse <dwmw@amazon.co.uk>
Reviewed-by: Cédric Le Goater <clg@kaod.org>
Acked-by: Peter Xu <peterx@redhat.com>
Acked-by: Eric Farman <farman@linux.ibm.com>
Reviewed-by: Harsh Prateek Bora <harshpb@linux.ibm.com>
Acked-by: Hyman Huang <yong.huang@smartx.com>
---
 include/block/aio-wait.h             |   2 +-
 include/qemu/main-loop.h             |  39 +++++----
 include/qemu/thread.h                |   2 +-
 accel/accel-blocker.c                |  10 +--
 accel/dummy-cpus.c                   |   8 +-
 accel/hvf/hvf-accel-ops.c            |   4 +-
 accel/kvm/kvm-accel-ops.c            |   4 +-
 accel/kvm/kvm-all.c                  |  22 ++---
 accel/tcg/cpu-exec.c                 |  26 +++---
 accel/tcg/cputlb.c                   |  16 ++--
 accel/tcg/tcg-accel-ops-icount.c     |   4 +-
 accel/tcg/tcg-accel-ops-mttcg.c      |  12 +--
 accel/tcg/tcg-accel-ops-rr.c         |  14 ++--
 accel/tcg/tcg-accel-ops.c            |   2 +-
 accel/tcg/translate-all.c            |   2 +-
 cpu-common.c                         |   4 +-
 dump/dump.c                          |   4 +-
 hw/core/cpu-common.c                 |   6 +-
 hw/i386/intel_iommu.c                |   6 +-
 hw/i386/kvm/xen_evtchn.c             |  16 ++--
 hw/i386/kvm/xen_overlay.c            |   2 +-
 hw/i386/kvm/xen_xenstore.c           |   2 +-
 hw/intc/arm_gicv3_cpuif.c            |   2 +-
 hw/intc/s390_flic.c                  |  18 ++--
 hw/misc/edu.c                        |   4 +-
 hw/misc/imx6_src.c                   |   2 +-
 hw/misc/imx7_src.c                   |   2 +-
 hw/net/xen_nic.c                     |   8 +-
 hw/ppc/pegasos2.c                    |   2 +-
 hw/ppc/ppc.c                         |   4 +-
 hw/ppc/spapr.c                       |   2 +-
 hw/ppc/spapr_rng.c                   |   4 +-
 hw/ppc/spapr_softmmu.c               |   4 +-
 hw/remote/mpqemu-link.c              |  20 ++---
 hw/remote/vfio-user-obj.c            |   2 +-
 hw/s390x/s390-skeys.c                |   2 +-
 migration/block-dirty-bitmap.c       |   4 +-
 migration/block.c                    |  16 ++--
 migration/colo.c                     |  60 +++++++-------
 migration/dirtyrate.c                |  12 +--
 migration/migration.c                |  52 ++++++------
 migration/ram.c                      |  12 +--
 replay/replay-internal.c             |   2 +-
 semihosting/console.c                |   8 +-
 stubs/iothread-lock.c                |   6 +-
 system/cpu-throttle.c                |   4 +-
 system/cpus.c                        |  51 ++++++------
 system/dirtylimit.c                  |   4 +-
 system/memory.c                      |   2 +-
 system/physmem.c                     |   8 +-
 system/runstate.c                    |   2 +-
 system/watchpoint.c                  |   4 +-
 target/arm/arm-powerctl.c            |  14 ++--
 target/arm/helper.c                  |   4 +-
 target/arm/hvf/hvf.c                 |   8 +-
 target/arm/kvm.c                     |   8 +-
 target/arm/ptw.c                     |   6 +-
 target/arm/tcg/helper-a64.c          |   8 +-
 target/arm/tcg/m_helper.c            |   6 +-
 target/arm/tcg/op_helper.c           |  24 +++---
 target/arm/tcg/psci.c                |   2 +-
 target/hppa/int_helper.c             |   8 +-
 target/i386/hvf/hvf.c                |   6 +-
 target/i386/kvm/hyperv.c             |   4 +-
 target/i386/kvm/kvm.c                |  28 +++----
 target/i386/kvm/xen-emu.c            |  14 ++--
 target/i386/nvmm/nvmm-accel-ops.c    |   4 +-
 target/i386/nvmm/nvmm-all.c          |  20 ++---
 target/i386/tcg/sysemu/fpu_helper.c  |   6 +-
 target/i386/tcg/sysemu/misc_helper.c |   4 +-
 target/i386/whpx/whpx-accel-ops.c    |   4 +-
 target/i386/whpx/whpx-all.c          |  24 +++---
 target/loongarch/csr_helper.c        |   4 +-
 target/mips/kvm.c                    |   4 +-
 target/mips/tcg/sysemu/cp0_helper.c  |   4 +-
 target/openrisc/sys_helper.c         |  16 ++--
 target/ppc/excp_helper.c             |  12 +--
 target/ppc/kvm.c                     |   4 +-
 target/ppc/misc_helper.c             |   8 +-
 target/ppc/timebase_helper.c         |   8 +-
 target/s390x/kvm/kvm.c               |   4 +-
 target/s390x/tcg/misc_helper.c       | 118 +++++++++++++--------------
 target/sparc/int32_helper.c          |   2 +-
 target/sparc/int64_helper.c          |   6 +-
 target/sparc/win_helper.c            |  20 ++---
 target/xtensa/exc_helper.c           |   8 +-
 ui/spice-core.c                      |   4 +-
 util/async.c                         |   2 +-
 util/main-loop.c                     |   8 +-
 util/qsp.c                           |   6 +-
 util/rcu.c                           |  14 ++--
 audio/coreaudio.m                    |   4 +-
 memory_ldst.c.inc                    |  18 ++--
 target/i386/hvf/README.md            |   2 +-
 ui/cocoa.m                           |  50 ++++++------
 95 files changed, 529 insertions(+), 529 deletions(-)

diff --git a/include/block/aio-wait.h b/include/block/aio-wait.h
index 157f105916..cf5e8bde1c 100644
--- a/include/block/aio-wait.h
+++ b/include/block/aio-wait.h
@@ -143,7 +143,7 @@ static inline bool in_aio_context_home_thread(AioContext *ctx)
     }
 
     if (ctx == qemu_get_aio_context()) {
-        return qemu_mutex_iothread_locked();
+        return bql_locked();
     } else {
         return false;
     }
diff --git a/include/qemu/main-loop.h b/include/qemu/main-loop.h
index 68e70e61aa..72ebc0cb3a 100644
--- a/include/qemu/main-loop.h
+++ b/include/qemu/main-loop.h
@@ -248,19 +248,19 @@ GSource *iohandler_get_g_source(void);
 AioContext *iohandler_get_aio_context(void);
 
 /**
- * qemu_mutex_iothread_locked: Return lock status of the main loop mutex.
+ * bql_locked: Return lock status of the Big QEMU Lock (BQL)
  *
- * The main loop mutex is the coarsest lock in QEMU, and as such it
+ * The Big QEMU Lock (BQL) is the coarsest lock in QEMU, and as such it
  * must always be taken outside other locks.  This function helps
  * functions take different paths depending on whether the current
- * thread is running within the main loop mutex.
+ * thread is running within the BQL.
  *
  * This function should never be used in the block layer, because
  * unit tests, block layer tools and qemu-storage-daemon do not
  * have a BQL.
  * Please instead refer to qemu_in_main_thread().
  */
-bool qemu_mutex_iothread_locked(void);
+bool bql_locked(void);
 
 /**
  * qemu_in_main_thread: return whether it's possible to safely access
@@ -312,58 +312,57 @@ bool qemu_in_main_thread(void);
     } while (0)
 
 /**
- * qemu_mutex_lock_iothread: Lock the main loop mutex.
+ * bql_lock: Lock the Big QEMU Lock (BQL).
  *
- * This function locks the main loop mutex.  The mutex is taken by
+ * This function locks the Big QEMU Lock (BQL).  The lock is taken by
  * main() in vl.c and always taken except while waiting on
- * external events (such as with select).  The mutex should be taken
+ * external events (such as with select).  The lock should be taken
  * by threads other than the main loop thread when calling
  * qemu_bh_new(), qemu_set_fd_handler() and basically all other
  * functions documented in this file.
  *
- * NOTE: tools currently are single-threaded and qemu_mutex_lock_iothread
+ * NOTE: tools currently are single-threaded and bql_lock
  * is a no-op there.
  */
-#define qemu_mutex_lock_iothread()                      \
-    qemu_mutex_lock_iothread_impl(__FILE__, __LINE__)
-void qemu_mutex_lock_iothread_impl(const char *file, int line);
+#define bql_lock() bql_lock_impl(__FILE__, __LINE__)
+void bql_lock_impl(const char *file, int line);
 
 /**
- * qemu_mutex_unlock_iothread: Unlock the main loop mutex.
+ * bql_unlock: Unlock the Big QEMU Lock (BQL).
  *
- * This function unlocks the main loop mutex.  The mutex is taken by
+ * This function unlocks the Big QEMU Lock.  The lock is taken by
  * main() in vl.c and always taken except while waiting on
- * external events (such as with select).  The mutex should be unlocked
+ * external events (such as with select).  The lock should be unlocked
  * as soon as possible by threads other than the main loop thread,
  * because it prevents the main loop from processing callbacks,
  * including timers and bottom halves.
  *
- * NOTE: tools currently are single-threaded and qemu_mutex_unlock_iothread
+ * NOTE: tools currently are single-threaded and bql_unlock
  * is a no-op there.
  */
-void qemu_mutex_unlock_iothread(void);
+void bql_unlock(void);
 
 /**
  * QEMU_IOTHREAD_LOCK_GUARD
  *
- * Wrap a block of code in a conditional qemu_mutex_{lock,unlock}_iothread.
+ * Wrap a block of code in a conditional bql_{lock,unlock}.
  */
 typedef struct IOThreadLockAuto IOThreadLockAuto;
 
 static inline IOThreadLockAuto *qemu_iothread_auto_lock(const char *file,
                                                         int line)
 {
-    if (qemu_mutex_iothread_locked()) {
+    if (bql_locked()) {
         return NULL;
     }
-    qemu_mutex_lock_iothread_impl(file, line);
+    bql_lock_impl(file, line);
     /* Anything non-NULL causes the cleanup function to be called */
     return (IOThreadLockAuto *)(uintptr_t)1;
 }
 
 static inline void qemu_iothread_auto_unlock(IOThreadLockAuto *l)
 {
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
 }
 
 G_DEFINE_AUTOPTR_CLEANUP_FUNC(IOThreadLockAuto, qemu_iothread_auto_unlock)
diff --git a/include/qemu/thread.h b/include/qemu/thread.h
index dd3822d7ce..fb74e21c08 100644
--- a/include/qemu/thread.h
+++ b/include/qemu/thread.h
@@ -47,7 +47,7 @@ typedef void (*QemuCondWaitFunc)(QemuCond *c, QemuMutex *m, const char *f,
 typedef bool (*QemuCondTimedWaitFunc)(QemuCond *c, QemuMutex *m, int ms,
                                       const char *f, int l);
 
-extern QemuMutexLockFunc qemu_bql_mutex_lock_func;
+extern QemuMutexLockFunc bql_mutex_lock_func;
 extern QemuMutexLockFunc qemu_mutex_lock_func;
 extern QemuMutexTrylockFunc qemu_mutex_trylock_func;
 extern QemuRecMutexLockFunc qemu_rec_mutex_lock_func;
diff --git a/accel/accel-blocker.c b/accel/accel-blocker.c
index 1e7f423462..e083f24aa8 100644
--- a/accel/accel-blocker.c
+++ b/accel/accel-blocker.c
@@ -41,7 +41,7 @@ void accel_blocker_init(void)
 
 void accel_ioctl_begin(void)
 {
-    if (likely(qemu_mutex_iothread_locked())) {
+    if (likely(bql_locked())) {
         return;
     }
 
@@ -51,7 +51,7 @@ void accel_ioctl_begin(void)
 
 void accel_ioctl_end(void)
 {
-    if (likely(qemu_mutex_iothread_locked())) {
+    if (likely(bql_locked())) {
         return;
     }
 
@@ -62,7 +62,7 @@ void accel_ioctl_end(void)
 
 void accel_cpu_ioctl_begin(CPUState *cpu)
 {
-    if (unlikely(qemu_mutex_iothread_locked())) {
+    if (unlikely(bql_locked())) {
         return;
     }
 
@@ -72,7 +72,7 @@ void accel_cpu_ioctl_begin(CPUState *cpu)
 
 void accel_cpu_ioctl_end(CPUState *cpu)
 {
-    if (unlikely(qemu_mutex_iothread_locked())) {
+    if (unlikely(bql_locked())) {
         return;
     }
 
@@ -105,7 +105,7 @@ void accel_ioctl_inhibit_begin(void)
      * We allow to inhibit only when holding the BQL, so we can identify
      * when an inhibitor wants to issue an ioctl easily.
      */
-    g_assert(qemu_mutex_iothread_locked());
+    g_assert(bql_locked());
 
     /* Block further invocations of the ioctls outside the BQL.  */
     CPU_FOREACH(cpu) {
diff --git a/accel/dummy-cpus.c b/accel/dummy-cpus.c
index b75c919ac3..f4b0ec5890 100644
--- a/accel/dummy-cpus.c
+++ b/accel/dummy-cpus.c
@@ -24,7 +24,7 @@ static void *dummy_cpu_thread_fn(void *arg)
 
     rcu_register_thread();
 
-    qemu_mutex_lock_iothread();
+    bql_lock();
     qemu_thread_get_self(cpu->thread);
     cpu->thread_id = qemu_get_thread_id();
     cpu->neg.can_do_io = true;
@@ -43,7 +43,7 @@ static void *dummy_cpu_thread_fn(void *arg)
     qemu_guest_random_seed_thread_part2(cpu->random_seed);
 
     do {
-        qemu_mutex_unlock_iothread();
+        bql_unlock();
 #ifndef _WIN32
         do {
             int sig;
@@ -56,11 +56,11 @@ static void *dummy_cpu_thread_fn(void *arg)
 #else
         qemu_sem_wait(&cpu->sem);
 #endif
-        qemu_mutex_lock_iothread();
+        bql_lock();
         qemu_wait_io_event(cpu);
     } while (!cpu->unplug);
 
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
     rcu_unregister_thread();
     return NULL;
 }
diff --git a/accel/hvf/hvf-accel-ops.c b/accel/hvf/hvf-accel-ops.c
index abe7adf7ee..8eabb696fa 100644
--- a/accel/hvf/hvf-accel-ops.c
+++ b/accel/hvf/hvf-accel-ops.c
@@ -424,7 +424,7 @@ static void *hvf_cpu_thread_fn(void *arg)
 
     rcu_register_thread();
 
-    qemu_mutex_lock_iothread();
+    bql_lock();
     qemu_thread_get_self(cpu->thread);
 
     cpu->thread_id = qemu_get_thread_id();
@@ -449,7 +449,7 @@ static void *hvf_cpu_thread_fn(void *arg)
 
     hvf_vcpu_destroy(cpu);
     cpu_thread_signal_destroyed(cpu);
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
     rcu_unregister_thread();
     return NULL;
 }
diff --git a/accel/kvm/kvm-accel-ops.c b/accel/kvm/kvm-accel-ops.c
index 6195150a0b..45ff06e953 100644
--- a/accel/kvm/kvm-accel-ops.c
+++ b/accel/kvm/kvm-accel-ops.c
@@ -33,7 +33,7 @@ static void *kvm_vcpu_thread_fn(void *arg)
 
     rcu_register_thread();
 
-    qemu_mutex_lock_iothread();
+    bql_lock();
     qemu_thread_get_self(cpu->thread);
     cpu->thread_id = qemu_get_thread_id();
     cpu->neg.can_do_io = true;
@@ -58,7 +58,7 @@ static void *kvm_vcpu_thread_fn(void *arg)
 
     kvm_destroy_vcpu(cpu);
     cpu_thread_signal_destroyed(cpu);
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
     rcu_unregister_thread();
     return NULL;
 }
diff --git a/accel/kvm/kvm-all.c b/accel/kvm/kvm-all.c
index eb17773f0b..bbc60146d1 100644
--- a/accel/kvm/kvm-all.c
+++ b/accel/kvm/kvm-all.c
@@ -806,7 +806,7 @@ static void kvm_dirty_ring_flush(void)
      * should always be with BQL held, serialization is guaranteed.
      * However, let's be sure of it.
      */
-    assert(qemu_mutex_iothread_locked());
+    assert(bql_locked());
     /*
      * First make sure to flush the hardware buffers by kicking all
      * vcpus out in a synchronous way.
@@ -1391,9 +1391,9 @@ static void *kvm_dirty_ring_reaper_thread(void *data)
         trace_kvm_dirty_ring_reaper("wakeup");
         r->reaper_state = KVM_DIRTY_RING_REAPER_REAPING;
 
-        qemu_mutex_lock_iothread();
+        bql_lock();
         kvm_dirty_ring_reap(s, NULL);
-        qemu_mutex_unlock_iothread();
+        bql_unlock();
 
         r->reaper_iteration++;
     }
@@ -2817,7 +2817,7 @@ int kvm_cpu_exec(CPUState *cpu)
         return EXCP_HLT;
     }
 
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
     cpu_exec_start(cpu);
 
     do {
@@ -2857,11 +2857,11 @@ int kvm_cpu_exec(CPUState *cpu)
 
 #ifdef KVM_HAVE_MCE_INJECTION
         if (unlikely(have_sigbus_pending)) {
-            qemu_mutex_lock_iothread();
+            bql_lock();
             kvm_arch_on_sigbus_vcpu(cpu, pending_sigbus_code,
                                     pending_sigbus_addr);
             have_sigbus_pending = false;
-            qemu_mutex_unlock_iothread();
+            bql_unlock();
         }
 #endif
 
@@ -2927,7 +2927,7 @@ int kvm_cpu_exec(CPUState *cpu)
              * still full.  Got kicked by KVM_RESET_DIRTY_RINGS.
              */
             trace_kvm_dirty_ring_full(cpu->cpu_index);
-            qemu_mutex_lock_iothread();
+            bql_lock();
             /*
              * We throttle vCPU by making it sleep once it exit from kernel
              * due to dirty ring full. In the dirtylimit scenario, reaping
@@ -2939,7 +2939,7 @@ int kvm_cpu_exec(CPUState *cpu)
             } else {
                 kvm_dirty_ring_reap(kvm_state, NULL);
             }
-            qemu_mutex_unlock_iothread();
+            bql_unlock();
             dirtylimit_vcpu_execute(cpu);
             ret = 0;
             break;
@@ -2956,9 +2956,9 @@ int kvm_cpu_exec(CPUState *cpu)
                 break;
             case KVM_SYSTEM_EVENT_CRASH:
                 kvm_cpu_synchronize_state(cpu);
-                qemu_mutex_lock_iothread();
+                bql_lock();
                 qemu_system_guest_panicked(cpu_get_crash_info(cpu));
-                qemu_mutex_unlock_iothread();
+                bql_unlock();
                 ret = 0;
                 break;
             default:
@@ -2973,7 +2973,7 @@ int kvm_cpu_exec(CPUState *cpu)
     } while (ret == 0);
 
     cpu_exec_end(cpu);
-    qemu_mutex_lock_iothread();
+    bql_lock();
 
     if (ret < 0) {
         cpu_dump_state(cpu, stderr, CPU_DUMP_CODE);
diff --git a/accel/tcg/cpu-exec.c b/accel/tcg/cpu-exec.c
index c938eb96f8..67eda9865e 100644
--- a/accel/tcg/cpu-exec.c
+++ b/accel/tcg/cpu-exec.c
@@ -558,8 +558,8 @@ static void cpu_exec_longjmp_cleanup(CPUState *cpu)
         tcg_ctx->gen_tb = NULL;
     }
 #endif
-    if (qemu_mutex_iothread_locked()) {
-        qemu_mutex_unlock_iothread();
+    if (bql_locked()) {
+        bql_unlock();
     }
     assert_no_pages_locked();
 }
@@ -680,10 +680,10 @@ static inline bool cpu_handle_halt(CPUState *cpu)
 #if defined(TARGET_I386)
         if (cpu->interrupt_request & CPU_INTERRUPT_POLL) {
             X86CPU *x86_cpu = X86_CPU(cpu);
-            qemu_mutex_lock_iothread();
+            bql_lock();
             apic_poll_irq(x86_cpu->apic_state);
             cpu_reset_interrupt(cpu, CPU_INTERRUPT_POLL);
-            qemu_mutex_unlock_iothread();
+            bql_unlock();
         }
 #endif /* TARGET_I386 */
         if (!cpu_has_work(cpu)) {
@@ -749,9 +749,9 @@ static inline bool cpu_handle_exception(CPUState *cpu, int *ret)
 #else
         if (replay_exception()) {
             CPUClass *cc = CPU_GET_CLASS(cpu);
-            qemu_mutex_lock_iothread();
+            bql_lock();
             cc->tcg_ops->do_interrupt(cpu);
-            qemu_mutex_unlock_iothread();
+            bql_unlock();
             cpu->exception_index = -1;
 
             if (unlikely(cpu->singlestep_enabled)) {
@@ -812,7 +812,7 @@ static inline bool cpu_handle_interrupt(CPUState *cpu,
 
     if (unlikely(qatomic_read(&cpu->interrupt_request))) {
         int interrupt_request;
-        qemu_mutex_lock_iothread();
+        bql_lock();
         interrupt_request = cpu->interrupt_request;
         if (unlikely(cpu->singlestep_enabled & SSTEP_NOIRQ)) {
             /* Mask out external interrupts for this step. */
@@ -821,7 +821,7 @@ static inline bool cpu_handle_interrupt(CPUState *cpu,
         if (interrupt_request & CPU_INTERRUPT_DEBUG) {
             cpu->interrupt_request &= ~CPU_INTERRUPT_DEBUG;
             cpu->exception_index = EXCP_DEBUG;
-            qemu_mutex_unlock_iothread();
+            bql_unlock();
             return true;
         }
 #if !defined(CONFIG_USER_ONLY)
@@ -832,7 +832,7 @@ static inline bool cpu_handle_interrupt(CPUState *cpu,
             cpu->interrupt_request &= ~CPU_INTERRUPT_HALT;
             cpu->halted = 1;
             cpu->exception_index = EXCP_HLT;
-            qemu_mutex_unlock_iothread();
+            bql_unlock();
             return true;
         }
 #if defined(TARGET_I386)
@@ -843,14 +843,14 @@ static inline bool cpu_handle_interrupt(CPUState *cpu,
             cpu_svm_check_intercept_param(env, SVM_EXIT_INIT, 0, 0);
             do_cpu_init(x86_cpu);
             cpu->exception_index = EXCP_HALTED;
-            qemu_mutex_unlock_iothread();
+            bql_unlock();
             return true;
         }
 #else
         else if (interrupt_request & CPU_INTERRUPT_RESET) {
             replay_interrupt();
             cpu_reset(cpu);
-            qemu_mutex_unlock_iothread();
+            bql_unlock();
             return true;
         }
 #endif /* !TARGET_I386 */
@@ -873,7 +873,7 @@ static inline bool cpu_handle_interrupt(CPUState *cpu,
                  */
                 if (unlikely(cpu->singlestep_enabled)) {
                     cpu->exception_index = EXCP_DEBUG;
-                    qemu_mutex_unlock_iothread();
+                    bql_unlock();
                     return true;
                 }
                 cpu->exception_index = -1;
@@ -892,7 +892,7 @@ static inline bool cpu_handle_interrupt(CPUState *cpu,
         }
 
         /* If we exit via cpu_loop_exit/longjmp it is reset in cpu_exec */
-        qemu_mutex_unlock_iothread();
+        bql_unlock();
     }
 
     /* Finally, check if we need to exit to the main loop.  */
diff --git a/accel/tcg/cputlb.c b/accel/tcg/cputlb.c
index db3f93fda9..5698a9fd8e 100644
--- a/accel/tcg/cputlb.c
+++ b/accel/tcg/cputlb.c
@@ -2030,10 +2030,10 @@ static uint64_t do_ld_mmio_beN(CPUState *cpu, CPUTLBEntryFull *full,
     section = io_prepare(&mr_offset, cpu, full->xlat_section, attrs, addr, ra);
     mr = section->mr;
 
-    qemu_mutex_lock_iothread();
+    bql_lock();
     ret = int_ld_mmio_beN(cpu, full, ret_be, addr, size, mmu_idx,
                           type, ra, mr, mr_offset);
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
 
     return ret;
 }
@@ -2054,12 +2054,12 @@ static Int128 do_ld16_mmio_beN(CPUState *cpu, CPUTLBEntryFull *full,
     section = io_prepare(&mr_offset, cpu, full->xlat_section, attrs, addr, ra);
     mr = section->mr;
 
-    qemu_mutex_lock_iothread();
+    bql_lock();
     a = int_ld_mmio_beN(cpu, full, ret_be, addr, size - 8, mmu_idx,
                         MMU_DATA_LOAD, ra, mr, mr_offset);
     b = int_ld_mmio_beN(cpu, full, ret_be, addr + size - 8, 8, mmu_idx,
                         MMU_DATA_LOAD, ra, mr, mr_offset + size - 8);
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
 
     return int128_make128(b, a);
 }
@@ -2577,10 +2577,10 @@ static uint64_t do_st_mmio_leN(CPUState *cpu, CPUTLBEntryFull *full,
     section = io_prepare(&mr_offset, cpu, full->xlat_section, attrs, addr, ra);
     mr = section->mr;
 
-    qemu_mutex_lock_iothread();
+    bql_lock();
     ret = int_st_mmio_leN(cpu, full, val_le, addr, size, mmu_idx,
                           ra, mr, mr_offset);
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
 
     return ret;
 }
@@ -2601,12 +2601,12 @@ static uint64_t do_st16_mmio_leN(CPUState *cpu, CPUTLBEntryFull *full,
     section = io_prepare(&mr_offset, cpu, full->xlat_section, attrs, addr, ra);
     mr = section->mr;
 
-    qemu_mutex_lock_iothread();
+    bql_lock();
     int_st_mmio_leN(cpu, full, int128_getlo(val_le), addr, 8,
                     mmu_idx, ra, mr, mr_offset);
     ret = int_st_mmio_leN(cpu, full, int128_gethi(val_le), addr + 8,
                           size - 8, mmu_idx, ra, mr, mr_offset + 8);
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
 
     return ret;
 }
diff --git a/accel/tcg/tcg-accel-ops-icount.c b/accel/tcg/tcg-accel-ops-icount.c
index b25685fb71..5824d92580 100644
--- a/accel/tcg/tcg-accel-ops-icount.c
+++ b/accel/tcg/tcg-accel-ops-icount.c
@@ -126,9 +126,9 @@ void icount_prepare_for_run(CPUState *cpu, int64_t cpu_budget)
          * We're called without the iothread lock, so must take it while
          * we're calling timer handlers.
          */
-        qemu_mutex_lock_iothread();
+        bql_lock();
         icount_notify_aio_contexts();
-        qemu_mutex_unlock_iothread();
+        bql_unlock();
     }
 }
 
diff --git a/accel/tcg/tcg-accel-ops-mttcg.c b/accel/tcg/tcg-accel-ops-mttcg.c
index fac80095bb..af7307013a 100644
--- a/accel/tcg/tcg-accel-ops-mttcg.c
+++ b/accel/tcg/tcg-accel-ops-mttcg.c
@@ -76,7 +76,7 @@ static void *mttcg_cpu_thread_fn(void *arg)
     rcu_add_force_rcu_notifier(&force_rcu.notifier);
     tcg_register_thread();
 
-    qemu_mutex_lock_iothread();
+    bql_lock();
     qemu_thread_get_self(cpu->thread);
 
     cpu->thread_id = qemu_get_thread_id();
@@ -91,9 +91,9 @@ static void *mttcg_cpu_thread_fn(void *arg)
     do {
         if (cpu_can_run(cpu)) {
             int r;
-            qemu_mutex_unlock_iothread();
+            bql_unlock();
             r = tcg_cpus_exec(cpu);
-            qemu_mutex_lock_iothread();
+            bql_lock();
             switch (r) {
             case EXCP_DEBUG:
                 cpu_handle_guest_debug(cpu);
@@ -105,9 +105,9 @@ static void *mttcg_cpu_thread_fn(void *arg)
                  */
                 break;
             case EXCP_ATOMIC:
-                qemu_mutex_unlock_iothread();
+                bql_unlock();
                 cpu_exec_step_atomic(cpu);
-                qemu_mutex_lock_iothread();
+                bql_lock();
             default:
                 /* Ignore everything else? */
                 break;
@@ -119,7 +119,7 @@ static void *mttcg_cpu_thread_fn(void *arg)
     } while (!cpu->unplug || cpu_can_run(cpu));
 
     tcg_cpus_destroy(cpu);
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
     rcu_remove_force_rcu_notifier(&force_rcu.notifier);
     rcu_unregister_thread();
     return NULL;
diff --git a/accel/tcg/tcg-accel-ops-rr.c b/accel/tcg/tcg-accel-ops-rr.c
index 611932f3c3..c4ea372a3f 100644
--- a/accel/tcg/tcg-accel-ops-rr.c
+++ b/accel/tcg/tcg-accel-ops-rr.c
@@ -188,7 +188,7 @@ static void *rr_cpu_thread_fn(void *arg)
     rcu_add_force_rcu_notifier(&force_rcu);
     tcg_register_thread();
 
-    qemu_mutex_lock_iothread();
+    bql_lock();
     qemu_thread_get_self(cpu->thread);
 
     cpu->thread_id = qemu_get_thread_id();
@@ -218,9 +218,9 @@ static void *rr_cpu_thread_fn(void *arg)
         /* Only used for icount_enabled() */
         int64_t cpu_budget = 0;
 
-        qemu_mutex_unlock_iothread();
+        bql_unlock();
         replay_mutex_lock();
-        qemu_mutex_lock_iothread();
+        bql_lock();
 
         if (icount_enabled()) {
             int cpu_count = rr_cpu_count();
@@ -254,7 +254,7 @@ static void *rr_cpu_thread_fn(void *arg)
             if (cpu_can_run(cpu)) {
                 int r;
 
-                qemu_mutex_unlock_iothread();
+                bql_unlock();
                 if (icount_enabled()) {
                     icount_prepare_for_run(cpu, cpu_budget);
                 }
@@ -262,15 +262,15 @@ static void *rr_cpu_thread_fn(void *arg)
                 if (icount_enabled()) {
                     icount_process_data(cpu);
                 }
-                qemu_mutex_lock_iothread();
+                bql_lock();
 
                 if (r == EXCP_DEBUG) {
                     cpu_handle_guest_debug(cpu);
                     break;
                 } else if (r == EXCP_ATOMIC) {
-                    qemu_mutex_unlock_iothread();
+                    bql_unlock();
                     cpu_exec_step_atomic(cpu);
-                    qemu_mutex_lock_iothread();
+                    bql_lock();
                     break;
                 }
             } else if (cpu->stop) {
diff --git a/accel/tcg/tcg-accel-ops.c b/accel/tcg/tcg-accel-ops.c
index 1b57290682..813065c0ec 100644
--- a/accel/tcg/tcg-accel-ops.c
+++ b/accel/tcg/tcg-accel-ops.c
@@ -88,7 +88,7 @@ static void tcg_cpu_reset_hold(CPUState *cpu)
 /* mask must never be zero, except for A20 change call */
 void tcg_handle_interrupt(CPUState *cpu, int mask)
 {
-    g_assert(qemu_mutex_iothread_locked());
+    g_assert(bql_locked());
 
     cpu->interrupt_request |= mask;
 
diff --git a/accel/tcg/translate-all.c b/accel/tcg/translate-all.c
index 79a88f5fb7..1737bb3da5 100644
--- a/accel/tcg/translate-all.c
+++ b/accel/tcg/translate-all.c
@@ -649,7 +649,7 @@ void cpu_io_recompile(CPUState *cpu, uintptr_t retaddr)
 
 void cpu_interrupt(CPUState *cpu, int mask)
 {
-    g_assert(qemu_mutex_iothread_locked());
+    g_assert(bql_locked());
     cpu->interrupt_request |= mask;
     qatomic_set(&cpu->neg.icount_decr.u16.high, -1);
 }
diff --git a/cpu-common.c b/cpu-common.c
index c81fd72d16..ce78273af5 100644
--- a/cpu-common.c
+++ b/cpu-common.c
@@ -351,11 +351,11 @@ void process_queued_cpu_work(CPUState *cpu)
              * BQL, so it goes to sleep; start_exclusive() is sleeping too, so
              * neither CPU can proceed.
              */
-            qemu_mutex_unlock_iothread();
+            bql_unlock();
             start_exclusive();
             wi->func(cpu, wi->data);
             end_exclusive();
-            qemu_mutex_lock_iothread();
+            bql_lock();
         } else {
             wi->func(cpu, wi->data);
         }
diff --git a/dump/dump.c b/dump/dump.c
index 4819050764..84064d890d 100644
--- a/dump/dump.c
+++ b/dump/dump.c
@@ -108,11 +108,11 @@ static int dump_cleanup(DumpState *s)
     s->guest_note = NULL;
     if (s->resume) {
         if (s->detached) {
-            qemu_mutex_lock_iothread();
+            bql_lock();
         }
         vm_start();
         if (s->detached) {
-            qemu_mutex_unlock_iothread();
+            bql_unlock();
         }
     }
     migrate_del_blocker(&dump_migration_blocker);
diff --git a/hw/core/cpu-common.c b/hw/core/cpu-common.c
index 82dae51a55..a59e2ce645 100644
--- a/hw/core/cpu-common.c
+++ b/hw/core/cpu-common.c
@@ -70,14 +70,14 @@ CPUState *cpu_create(const char *typename)
  * BQL here if we need to.  cpu_interrupt assumes it is held.*/
 void cpu_reset_interrupt(CPUState *cpu, int mask)
 {
-    bool need_lock = !qemu_mutex_iothread_locked();
+    bool need_lock = !bql_locked();
 
     if (need_lock) {
-        qemu_mutex_lock_iothread();
+        bql_lock();
     }
     cpu->interrupt_request &= ~mask;
     if (need_lock) {
-        qemu_mutex_unlock_iothread();
+        bql_unlock();
     }
 }
 
diff --git a/hw/i386/intel_iommu.c b/hw/i386/intel_iommu.c
index 5085a6fee3..7e310109cf 100644
--- a/hw/i386/intel_iommu.c
+++ b/hw/i386/intel_iommu.c
@@ -1665,7 +1665,7 @@ static bool vtd_switch_address_space(VTDAddressSpace *as)
 {
     bool use_iommu, pt;
     /* Whether we need to take the BQL on our own */
-    bool take_bql = !qemu_mutex_iothread_locked();
+    bool take_bql = !bql_locked();
 
     assert(as);
 
@@ -1683,7 +1683,7 @@ static bool vtd_switch_address_space(VTDAddressSpace *as)
      * it. We'd better make sure we have had it already, or, take it.
      */
     if (take_bql) {
-        qemu_mutex_lock_iothread();
+        bql_lock();
     }
 
     /* Turn off first then on the other */
@@ -1738,7 +1738,7 @@ static bool vtd_switch_address_space(VTDAddressSpace *as)
     }
 
     if (take_bql) {
-        qemu_mutex_unlock_iothread();
+        bql_unlock();
     }
 
     return use_iommu;
diff --git a/hw/i386/kvm/xen_evtchn.c b/hw/i386/kvm/xen_evtchn.c
index 02b8cbf8df..d7d15cfaf7 100644
--- a/hw/i386/kvm/xen_evtchn.c
+++ b/hw/i386/kvm/xen_evtchn.c
@@ -425,7 +425,7 @@ void xen_evtchn_set_callback_level(int level)
      * effect immediately. That just leaves interdomain loopback as the case
      * which uses the BH.
      */
-    if (!qemu_mutex_iothread_locked()) {
+    if (!bql_locked()) {
         qemu_bh_schedule(s->gsi_bh);
         return;
     }
@@ -459,7 +459,7 @@ int xen_evtchn_set_callback_param(uint64_t param)
      * We need the BQL because set_callback_pci_intx() may call into PCI code,
      * and because we may need to manipulate the old and new GSI levels.
      */
-    assert(qemu_mutex_iothread_locked());
+    assert(bql_locked());
     qemu_mutex_lock(&s->port_lock);
 
     switch (type) {
@@ -1037,7 +1037,7 @@ static int close_port(XenEvtchnState *s, evtchn_port_t port,
     XenEvtchnPort *p = &s->port_table[port];
 
     /* Because it *might* be a PIRQ port */
-    assert(qemu_mutex_iothread_locked());
+    assert(bql_locked());
 
     switch (p->type) {
     case EVTCHNSTAT_closed:
@@ -1104,7 +1104,7 @@ int xen_evtchn_soft_reset(void)
         return -ENOTSUP;
     }
 
-    assert(qemu_mutex_iothread_locked());
+    assert(bql_locked());
 
     qemu_mutex_lock(&s->port_lock);
 
@@ -1601,7 +1601,7 @@ bool xen_evtchn_set_gsi(int gsi, int level)
     XenEvtchnState *s = xen_evtchn_singleton;
     int pirq;
 
-    assert(qemu_mutex_iothread_locked());
+    assert(bql_locked());
 
     if (!s || gsi < 0 || gsi >= IOAPIC_NUM_PINS) {
         return false;
@@ -1712,7 +1712,7 @@ void xen_evtchn_snoop_msi(PCIDevice *dev, bool is_msix, unsigned int vector,
         return;
     }
 
-    assert(qemu_mutex_iothread_locked());
+    assert(bql_locked());
 
     pirq = msi_pirq_target(addr, data);
 
@@ -1749,7 +1749,7 @@ int xen_evtchn_translate_pirq_msi(struct kvm_irq_routing_entry *route,
         return 1; /* Not a PIRQ */
     }
 
-    assert(qemu_mutex_iothread_locked());
+    assert(bql_locked());
 
     pirq = msi_pirq_target(address, data);
     if (!pirq || pirq >= s->nr_pirqs) {
@@ -1796,7 +1796,7 @@ bool xen_evtchn_deliver_pirq_msi(uint64_t address, uint32_t data)
         return false;
     }
 
-    assert(qemu_mutex_iothread_locked());
+    assert(bql_locked());
 
     pirq = msi_pirq_target(address, data);
     if (!pirq || pirq >= s->nr_pirqs) {
diff --git a/hw/i386/kvm/xen_overlay.c b/hw/i386/kvm/xen_overlay.c
index 39fda1b72c..1722294638 100644
--- a/hw/i386/kvm/xen_overlay.c
+++ b/hw/i386/kvm/xen_overlay.c
@@ -194,7 +194,7 @@ int xen_overlay_map_shinfo_page(uint64_t gpa)
         return -ENOENT;
     }
 
-    assert(qemu_mutex_iothread_locked());
+    assert(bql_locked());
 
     if (s->shinfo_gpa) {
         /* If removing shinfo page, turn the kernel magic off first */
diff --git a/hw/i386/kvm/xen_xenstore.c b/hw/i386/kvm/xen_xenstore.c
index 6e651960b3..ae27889a3f 100644
--- a/hw/i386/kvm/xen_xenstore.c
+++ b/hw/i386/kvm/xen_xenstore.c
@@ -1341,7 +1341,7 @@ static void fire_watch_cb(void *opaque, const char *path, const char *token)
 {
     XenXenstoreState *s = opaque;
 
-    assert(qemu_mutex_iothread_locked());
+    assert(bql_locked());
 
     /*
      * If there's a response pending, we obviously can't scribble over
diff --git a/hw/intc/arm_gicv3_cpuif.c b/hw/intc/arm_gicv3_cpuif.c
index ab1a00508e..77c2a6dd3b 100644
--- a/hw/intc/arm_gicv3_cpuif.c
+++ b/hw/intc/arm_gicv3_cpuif.c
@@ -934,7 +934,7 @@ void gicv3_cpuif_update(GICv3CPUState *cs)
     ARMCPU *cpu = ARM_CPU(cs->cpu);
     CPUARMState *env = &cpu->env;
 
-    g_assert(qemu_mutex_iothread_locked());
+    g_assert(bql_locked());
 
     trace_gicv3_cpuif_update(gicv3_redist_affid(cs), cs->hppi.irq,
                              cs->hppi.grp, cs->hppi.prio);
diff --git a/hw/intc/s390_flic.c b/hw/intc/s390_flic.c
index 74e02858d4..93b8531ad0 100644
--- a/hw/intc/s390_flic.c
+++ b/hw/intc/s390_flic.c
@@ -106,7 +106,7 @@ static int qemu_s390_clear_io_flic(S390FLICState *fs, uint16_t subchannel_id,
     QEMUS390FlicIO *cur, *next;
     uint8_t isc;
 
-    g_assert(qemu_mutex_iothread_locked());
+    g_assert(bql_locked());
     if (!(flic->pending & FLIC_PENDING_IO)) {
         return 0;
     }
@@ -223,7 +223,7 @@ uint32_t qemu_s390_flic_dequeue_service(QEMUS390FLICState *flic)
 {
     uint32_t tmp;
 
-    g_assert(qemu_mutex_iothread_locked());
+    g_assert(bql_locked());
     g_assert(flic->pending & FLIC_PENDING_SERVICE);
     tmp = flic->service_param;
     flic->service_param = 0;
@@ -238,7 +238,7 @@ QEMUS390FlicIO *qemu_s390_flic_dequeue_io(QEMUS390FLICState *flic, uint64_t cr6)
     QEMUS390FlicIO *io;
     uint8_t isc;
 
-    g_assert(qemu_mutex_iothread_locked());
+    g_assert(bql_locked());
     if (!(flic->pending & CR6_TO_PENDING_IO(cr6))) {
         return NULL;
     }
@@ -262,7 +262,7 @@ QEMUS390FlicIO *qemu_s390_flic_dequeue_io(QEMUS390FLICState *flic, uint64_t cr6)
 
 void qemu_s390_flic_dequeue_crw_mchk(QEMUS390FLICState *flic)
 {
-    g_assert(qemu_mutex_iothread_locked());
+    g_assert(bql_locked());
     g_assert(flic->pending & FLIC_PENDING_MCHK_CR);
     flic->pending &= ~FLIC_PENDING_MCHK_CR;
 }
@@ -271,7 +271,7 @@ static void qemu_s390_inject_service(S390FLICState *fs, uint32_t parm)
 {
     QEMUS390FLICState *flic = s390_get_qemu_flic(fs);
 
-    g_assert(qemu_mutex_iothread_locked());
+    g_assert(bql_locked());
     /* multiplexing is good enough for sclp - kvm does it internally as well */
     flic->service_param |= parm;
     flic->pending |= FLIC_PENDING_SERVICE;
@@ -287,7 +287,7 @@ static void qemu_s390_inject_io(S390FLICState *fs, uint16_t subchannel_id,
     QEMUS390FLICState *flic = s390_get_qemu_flic(fs);
     QEMUS390FlicIO *io;
 
-    g_assert(qemu_mutex_iothread_locked());
+    g_assert(bql_locked());
     io = g_new0(QEMUS390FlicIO, 1);
     io->id = subchannel_id;
     io->nr = subchannel_nr;
@@ -304,7 +304,7 @@ static void qemu_s390_inject_crw_mchk(S390FLICState *fs)
 {
     QEMUS390FLICState *flic = s390_get_qemu_flic(fs);
 
-    g_assert(qemu_mutex_iothread_locked());
+    g_assert(bql_locked());
     flic->pending |= FLIC_PENDING_MCHK_CR;
 
     qemu_s390_flic_notify(FLIC_PENDING_MCHK_CR);
@@ -330,7 +330,7 @@ bool qemu_s390_flic_has_crw_mchk(QEMUS390FLICState *flic)
 
 bool qemu_s390_flic_has_any(QEMUS390FLICState *flic)
 {
-    g_assert(qemu_mutex_iothread_locked());
+    g_assert(bql_locked());
     return !!flic->pending;
 }
 
@@ -340,7 +340,7 @@ static void qemu_s390_flic_reset(DeviceState *dev)
     QEMUS390FlicIO *cur, *next;
     int isc;
 
-    g_assert(qemu_mutex_iothread_locked());
+    g_assert(bql_locked());
     flic->simm = 0;
     flic->nimm = 0;
     flic->pending = 0;
diff --git a/hw/misc/edu.c b/hw/misc/edu.c
index a1f8bc77e7..fa05bdd4f3 100644
--- a/hw/misc/edu.c
+++ b/hw/misc/edu.c
@@ -355,9 +355,9 @@ static void *edu_fact_thread(void *opaque)
         smp_mb__after_rmw();
 
         if (qatomic_read(&edu->status) & EDU_STATUS_IRQFACT) {
-            qemu_mutex_lock_iothread();
+            bql_lock();
             edu_raise_irq(edu, FACT_IRQ);
-            qemu_mutex_unlock_iothread();
+            bql_unlock();
         }
     }
 
diff --git a/hw/misc/imx6_src.c b/hw/misc/imx6_src.c
index a9c64d06eb..2b9bb07540 100644
--- a/hw/misc/imx6_src.c
+++ b/hw/misc/imx6_src.c
@@ -131,7 +131,7 @@ static void imx6_clear_reset_bit(CPUState *cpu, run_on_cpu_data data)
     struct SRCSCRResetInfo *ri = data.host_ptr;
     IMX6SRCState *s = ri->s;
 
-    assert(qemu_mutex_iothread_locked());
+    assert(bql_locked());
 
     s->regs[SRC_SCR] = deposit32(s->regs[SRC_SCR], ri->reset_bit, 1, 0);
     DPRINTF("reg[%s] <= 0x%" PRIx32 "\n",
diff --git a/hw/misc/imx7_src.c b/hw/misc/imx7_src.c
index 983251e86f..77ad7a7eef 100644
--- a/hw/misc/imx7_src.c
+++ b/hw/misc/imx7_src.c
@@ -136,7 +136,7 @@ static void imx7_clear_reset_bit(CPUState *cpu, run_on_cpu_data data)
     struct SRCSCRResetInfo *ri = data.host_ptr;
     IMX7SRCState *s = ri->s;
 
-    assert(qemu_mutex_iothread_locked());
+    assert(bql_locked());
 
     s->regs[SRC_A7RCR0] = deposit32(s->regs[SRC_A7RCR0], ri->reset_bit, 1, 0);
 
diff --git a/hw/net/xen_nic.c b/hw/net/xen_nic.c
index 1e2b3baeb1..453fdb9819 100644
--- a/hw/net/xen_nic.c
+++ b/hw/net/xen_nic.c
@@ -133,7 +133,7 @@ static bool net_tx_packets(struct XenNetDev *netdev)
     void *page;
     void *tmpbuf = NULL;
 
-    assert(qemu_mutex_iothread_locked());
+    assert(bql_locked());
 
     for (;;) {
         rc = netdev->tx_ring.req_cons;
@@ -260,7 +260,7 @@ static ssize_t net_rx_packet(NetClientState *nc, const uint8_t *buf, size_t size
     RING_IDX rc, rp;
     void *page;
 
-    assert(qemu_mutex_iothread_locked());
+    assert(bql_locked());
 
     if (xen_device_backend_get_state(&netdev->xendev) != XenbusStateConnected) {
         return -1;
@@ -354,7 +354,7 @@ static bool xen_netdev_connect(XenDevice *xendev, Error **errp)
     XenNetDev *netdev = XEN_NET_DEVICE(xendev);
     unsigned int port, rx_copy;
 
-    assert(qemu_mutex_iothread_locked());
+    assert(bql_locked());
 
     if (xen_device_frontend_scanf(xendev, "tx-ring-ref", "%u",
                                   &netdev->tx_ring_ref) != 1) {
@@ -425,7 +425,7 @@ static void xen_netdev_disconnect(XenDevice *xendev, Error **errp)
 
     trace_xen_netdev_disconnect(netdev->dev);
 
-    assert(qemu_mutex_iothread_locked());
+    assert(bql_locked());
 
     netdev->tx_ring.sring = NULL;
     netdev->rx_ring.sring = NULL;
diff --git a/hw/ppc/pegasos2.c b/hw/ppc/pegasos2.c
index 3203a4a728..d84f3f977d 100644
--- a/hw/ppc/pegasos2.c
+++ b/hw/ppc/pegasos2.c
@@ -515,7 +515,7 @@ static void pegasos2_hypercall(PPCVirtualHypervisor *vhyp, PowerPCCPU *cpu)
     CPUPPCState *env = &cpu->env;
 
     /* The TCG path should also be holding the BQL at this point */
-    g_assert(qemu_mutex_iothread_locked());
+    g_assert(bql_locked());
 
     if (FIELD_EX64(env->msr, MSR, PR)) {
         qemu_log_mask(LOG_GUEST_ERROR, "Hypercall made with MSR[PR]=1\n");
diff --git a/hw/ppc/ppc.c b/hw/ppc/ppc.c
index be167710a3..b6581c16fc 100644
--- a/hw/ppc/ppc.c
+++ b/hw/ppc/ppc.c
@@ -314,7 +314,7 @@ void store_40x_dbcr0(CPUPPCState *env, uint32_t val)
 {
     PowerPCCPU *cpu = env_archcpu(env);
 
-    qemu_mutex_lock_iothread();
+    bql_lock();
 
     switch ((val >> 28) & 0x3) {
     case 0x0:
@@ -334,7 +334,7 @@ void store_40x_dbcr0(CPUPPCState *env, uint32_t val)
         break;
     }
 
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
 }
 
 /* PowerPC 40x internal IRQ controller */
diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c
index 9b6c1c129f..f1204903f2 100644
--- a/hw/ppc/spapr.c
+++ b/hw/ppc/spapr.c
@@ -1304,7 +1304,7 @@ static void emulate_spapr_hypercall(PPCVirtualHypervisor *vhyp,
     CPUPPCState *env = &cpu->env;
 
     /* The TCG path should also be holding the BQL at this point */
-    g_assert(qemu_mutex_iothread_locked());
+    g_assert(bql_locked());
 
     g_assert(!vhyp_cpu_in_nested(cpu));
 
diff --git a/hw/ppc/spapr_rng.c b/hw/ppc/spapr_rng.c
index df5c4b9687..c2fda7ad20 100644
--- a/hw/ppc/spapr_rng.c
+++ b/hw/ppc/spapr_rng.c
@@ -82,9 +82,9 @@ static target_ulong h_random(PowerPCCPU *cpu, SpaprMachineState *spapr,
     while (hrdata.received < 8) {
         rng_backend_request_entropy(rngstate->backend, 8 - hrdata.received,
                                     random_recv, &hrdata);
-        qemu_mutex_unlock_iothread();
+        bql_unlock();
         qemu_sem_wait(&hrdata.sem);
-        qemu_mutex_lock_iothread();
+        bql_lock();
     }
 
     qemu_sem_destroy(&hrdata.sem);
diff --git a/hw/ppc/spapr_softmmu.c b/hw/ppc/spapr_softmmu.c
index 278666317e..fc1bbc0b61 100644
--- a/hw/ppc/spapr_softmmu.c
+++ b/hw/ppc/spapr_softmmu.c
@@ -334,7 +334,7 @@ static void *hpt_prepare_thread(void *opaque)
         pending->ret = H_NO_MEM;
     }
 
-    qemu_mutex_lock_iothread();
+    bql_lock();
 
     if (SPAPR_MACHINE(qdev_get_machine())->pending_hpt == pending) {
         /* Ready to go */
@@ -344,7 +344,7 @@ static void *hpt_prepare_thread(void *opaque)
         free_pending_hpt(pending);
     }
 
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
     return NULL;
 }
 
diff --git a/hw/remote/mpqemu-link.c b/hw/remote/mpqemu-link.c
index 9bd98e8219..d04ac93621 100644
--- a/hw/remote/mpqemu-link.c
+++ b/hw/remote/mpqemu-link.c
@@ -33,7 +33,7 @@
  */
 bool mpqemu_msg_send(MPQemuMsg *msg, QIOChannel *ioc, Error **errp)
 {
-    bool iolock = qemu_mutex_iothread_locked();
+    bool drop_bql = bql_locked();
     bool iothread = qemu_in_iothread();
     struct iovec send[2] = {};
     int *fds = NULL;
@@ -63,8 +63,8 @@ bool mpqemu_msg_send(MPQemuMsg *msg, QIOChannel *ioc, Error **errp)
      * for IOThread case.
      * Also skip lock handling while in a co-routine in the main context.
      */
-    if (iolock && !iothread && !qemu_in_coroutine()) {
-        qemu_mutex_unlock_iothread();
+    if (drop_bql && !iothread && !qemu_in_coroutine()) {
+        bql_unlock();
     }
 
     if (!qio_channel_writev_full_all(ioc, send, G_N_ELEMENTS(send),
@@ -74,9 +74,9 @@ bool mpqemu_msg_send(MPQemuMsg *msg, QIOChannel *ioc, Error **errp)
         trace_mpqemu_send_io_error(msg->cmd, msg->size, nfds);
     }
 
-    if (iolock && !iothread && !qemu_in_coroutine()) {
+    if (drop_bql && !iothread && !qemu_in_coroutine()) {
         /* See above comment why skip locking here. */
-        qemu_mutex_lock_iothread();
+        bql_lock();
     }
 
     return ret;
@@ -96,7 +96,7 @@ static ssize_t mpqemu_read(QIOChannel *ioc, void *buf, size_t len, int **fds,
                            size_t *nfds, Error **errp)
 {
     struct iovec iov = { .iov_base = buf, .iov_len = len };
-    bool iolock = qemu_mutex_iothread_locked();
+    bool drop_bql = bql_locked();
     bool iothread = qemu_in_iothread();
     int ret = -1;
 
@@ -106,14 +106,14 @@ static ssize_t mpqemu_read(QIOChannel *ioc, void *buf, size_t len, int **fds,
      */
     assert(qemu_in_coroutine() || !iothread);
 
-    if (iolock && !iothread && !qemu_in_coroutine()) {
-        qemu_mutex_unlock_iothread();
+    if (drop_bql && !iothread && !qemu_in_coroutine()) {
+        bql_unlock();
     }
 
     ret = qio_channel_readv_full_all_eof(ioc, &iov, 1, fds, nfds, errp);
 
-    if (iolock && !iothread && !qemu_in_coroutine()) {
-        qemu_mutex_lock_iothread();
+    if (drop_bql && !iothread && !qemu_in_coroutine()) {
+        bql_lock();
     }
 
     return (ret <= 0) ? ret : iov.iov_len;
diff --git a/hw/remote/vfio-user-obj.c b/hw/remote/vfio-user-obj.c
index 8b10c32a3c..d9b879e056 100644
--- a/hw/remote/vfio-user-obj.c
+++ b/hw/remote/vfio-user-obj.c
@@ -400,7 +400,7 @@ static int vfu_object_mr_rw(MemoryRegion *mr, uint8_t *buf, hwaddr offset,
         }
 
         if (release_lock) {
-            qemu_mutex_unlock_iothread();
+            bql_unlock();
             release_lock = false;
         }
 
diff --git a/hw/s390x/s390-skeys.c b/hw/s390x/s390-skeys.c
index 8f5159d85d..5c535d483e 100644
--- a/hw/s390x/s390-skeys.c
+++ b/hw/s390x/s390-skeys.c
@@ -153,7 +153,7 @@ void qmp_dump_skeys(const char *filename, Error **errp)
         goto out;
     }
 
-    assert(qemu_mutex_iothread_locked());
+    assert(bql_locked());
     guest_phys_blocks_init(&guest_phys_blocks);
     guest_phys_blocks_append(&guest_phys_blocks);
 
diff --git a/migration/block-dirty-bitmap.c b/migration/block-dirty-bitmap.c
index 24347ab0f7..92e031b6fa 100644
--- a/migration/block-dirty-bitmap.c
+++ b/migration/block-dirty-bitmap.c
@@ -774,7 +774,7 @@ static void dirty_bitmap_state_pending(void *opaque,
     SaveBitmapState *dbms;
     uint64_t pending = 0;
 
-    qemu_mutex_lock_iothread();
+    bql_lock();
 
     QSIMPLEQ_FOREACH(dbms, &s->dbms_list, entry) {
         uint64_t gran = bdrv_dirty_bitmap_granularity(dbms->bitmap);
@@ -784,7 +784,7 @@ static void dirty_bitmap_state_pending(void *opaque,
         pending += DIV_ROUND_UP(sectors * BDRV_SECTOR_SIZE, gran);
     }
 
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
 
     trace_dirty_bitmap_state_pending(pending);
 
diff --git a/migration/block.c b/migration/block.c
index 6ec6a1d6e6..b731d7d778 100644
--- a/migration/block.c
+++ b/migration/block.c
@@ -269,7 +269,7 @@ static int mig_save_device_bulk(QEMUFile *f, BlkMigDevState *bmds)
     int64_t count;
 
     if (bmds->shared_base) {
-        qemu_mutex_lock_iothread();
+        bql_lock();
         /* Skip unallocated sectors; intentionally treats failure or
          * partial sector as an allocated sector */
         while (cur_sector < total_sectors &&
@@ -280,7 +280,7 @@ static int mig_save_device_bulk(QEMUFile *f, BlkMigDevState *bmds)
             }
             cur_sector += count >> BDRV_SECTOR_BITS;
         }
-        qemu_mutex_unlock_iothread();
+        bql_unlock();
     }
 
     if (cur_sector >= total_sectors) {
@@ -316,12 +316,12 @@ static int mig_save_device_bulk(QEMUFile *f, BlkMigDevState *bmds)
      * I/O runs in the main loop AioContext (see
      * qemu_get_current_aio_context()).
      */
-    qemu_mutex_lock_iothread();
+    bql_lock();
     bdrv_reset_dirty_bitmap(bmds->dirty_bitmap, cur_sector * BDRV_SECTOR_SIZE,
                             nr_sectors * BDRV_SECTOR_SIZE);
     blk->aiocb = blk_aio_preadv(bb, cur_sector * BDRV_SECTOR_SIZE, &blk->qiov,
                                 0, blk_mig_read_cb, blk);
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
 
     bmds->cur_sector = cur_sector + nr_sectors;
     return (bmds->cur_sector >= total_sectors);
@@ -770,9 +770,9 @@ static int block_save_iterate(QEMUFile *f, void *opaque)
             /* Always called with iothread lock taken for
              * simplicity, block_save_complete also calls it.
              */
-            qemu_mutex_lock_iothread();
+            bql_lock();
             ret = blk_mig_save_dirty_block(f, 1);
-            qemu_mutex_unlock_iothread();
+            bql_unlock();
         }
         if (ret < 0) {
             return ret;
@@ -844,9 +844,9 @@ static void block_state_pending(void *opaque, uint64_t *must_precopy,
     /* Estimate pending number of bytes to send */
     uint64_t pending;
 
-    qemu_mutex_lock_iothread();
+    bql_lock();
     pending = get_remaining_dirty();
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
 
     blk_mig_lock();
     pending += block_mig_state.submitted * BLK_MIG_BLOCK_SIZE +
diff --git a/migration/colo.c b/migration/colo.c
index 4447e34914..2a74efdd77 100644
--- a/migration/colo.c
+++ b/migration/colo.c
@@ -420,13 +420,13 @@ static int colo_do_checkpoint_transaction(MigrationState *s,
     qio_channel_io_seek(QIO_CHANNEL(bioc), 0, 0, NULL);
     bioc->usage = 0;
 
-    qemu_mutex_lock_iothread();
+    bql_lock();
     if (failover_get_state() != FAILOVER_STATUS_NONE) {
-        qemu_mutex_unlock_iothread();
+        bql_unlock();
         goto out;
     }
     vm_stop_force_state(RUN_STATE_COLO);
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
     trace_colo_vm_state_change("run", "stop");
     /*
      * Failover request bh could be called after vm_stop_force_state(),
@@ -435,23 +435,23 @@ static int colo_do_checkpoint_transaction(MigrationState *s,
     if (failover_get_state() != FAILOVER_STATUS_NONE) {
         goto out;
     }
-    qemu_mutex_lock_iothread();
+    bql_lock();
 
     replication_do_checkpoint_all(&local_err);
     if (local_err) {
-        qemu_mutex_unlock_iothread();
+        bql_unlock();
         goto out;
     }
 
     colo_send_message(s->to_dst_file, COLO_MESSAGE_VMSTATE_SEND, &local_err);
     if (local_err) {
-        qemu_mutex_unlock_iothread();
+        bql_unlock();
         goto out;
     }
     /* Note: device state is saved into buffer */
     ret = qemu_save_device_state(fb);
 
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
     if (ret < 0) {
         goto out;
     }
@@ -504,9 +504,9 @@ static int colo_do_checkpoint_transaction(MigrationState *s,
 
     ret = 0;
 
-    qemu_mutex_lock_iothread();
+    bql_lock();
     vm_start();
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
     trace_colo_vm_state_change("stop", "run");
 
 out:
@@ -557,15 +557,15 @@ static void colo_process_checkpoint(MigrationState *s)
     fb = qemu_file_new_output(QIO_CHANNEL(bioc));
     object_unref(OBJECT(bioc));
 
-    qemu_mutex_lock_iothread();
+    bql_lock();
     replication_start_all(REPLICATION_MODE_PRIMARY, &local_err);
     if (local_err) {
-        qemu_mutex_unlock_iothread();
+        bql_unlock();
         goto out;
     }
 
     vm_start();
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
     trace_colo_vm_state_change("stop", "run");
 
     timer_mod(s->colo_delay_timer, qemu_clock_get_ms(QEMU_CLOCK_HOST) +
@@ -639,14 +639,14 @@ out:
 
 void migrate_start_colo_process(MigrationState *s)
 {
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
     qemu_event_init(&s->colo_checkpoint_event, false);
     s->colo_delay_timer =  timer_new_ms(QEMU_CLOCK_HOST,
                                 colo_checkpoint_notify, s);
 
     qemu_sem_init(&s->colo_exit_sem, 0);
     colo_process_checkpoint(s);
-    qemu_mutex_lock_iothread();
+    bql_lock();
 }
 
 static void colo_incoming_process_checkpoint(MigrationIncomingState *mis,
@@ -657,9 +657,9 @@ static void colo_incoming_process_checkpoint(MigrationIncomingState *mis,
     Error *local_err = NULL;
     int ret;
 
-    qemu_mutex_lock_iothread();
+    bql_lock();
     vm_stop_force_state(RUN_STATE_COLO);
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
     trace_colo_vm_state_change("run", "stop");
 
     /* FIXME: This is unnecessary for periodic checkpoint mode */
@@ -677,10 +677,10 @@ static void colo_incoming_process_checkpoint(MigrationIncomingState *mis,
         return;
     }
 
-    qemu_mutex_lock_iothread();
+    bql_lock();
     cpu_synchronize_all_states();
     ret = qemu_loadvm_state_main(mis->from_src_file, mis);
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
 
     if (ret < 0) {
         error_setg(errp, "Load VM's live state (ram) error");
@@ -719,14 +719,14 @@ static void colo_incoming_process_checkpoint(MigrationIncomingState *mis,
         return;
     }
 
-    qemu_mutex_lock_iothread();
+    bql_lock();
     vmstate_loading = true;
     colo_flush_ram_cache();
     ret = qemu_load_device_state(fb);
     if (ret < 0) {
         error_setg(errp, "COLO: load device state failed");
         vmstate_loading = false;
-        qemu_mutex_unlock_iothread();
+        bql_unlock();
         return;
     }
 
@@ -734,7 +734,7 @@ static void colo_incoming_process_checkpoint(MigrationIncomingState *mis,
     if (local_err) {
         error_propagate(errp, local_err);
         vmstate_loading = false;
-        qemu_mutex_unlock_iothread();
+        bql_unlock();
         return;
     }
 
@@ -743,7 +743,7 @@ static void colo_incoming_process_checkpoint(MigrationIncomingState *mis,
     if (local_err) {
         error_propagate(errp, local_err);
         vmstate_loading = false;
-        qemu_mutex_unlock_iothread();
+        bql_unlock();
         return;
     }
     /* Notify all filters of all NIC to do checkpoint */
@@ -752,13 +752,13 @@ static void colo_incoming_process_checkpoint(MigrationIncomingState *mis,
     if (local_err) {
         error_propagate(errp, local_err);
         vmstate_loading = false;
-        qemu_mutex_unlock_iothread();
+        bql_unlock();
         return;
     }
 
     vmstate_loading = false;
     vm_start();
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
     trace_colo_vm_state_change("stop", "run");
 
     if (failover_get_state() == FAILOVER_STATUS_RELAUNCH) {
@@ -851,14 +851,14 @@ static void *colo_process_incoming_thread(void *opaque)
     fb = qemu_file_new_input(QIO_CHANNEL(bioc));
     object_unref(OBJECT(bioc));
 
-    qemu_mutex_lock_iothread();
+    bql_lock();
     replication_start_all(REPLICATION_MODE_SECONDARY, &local_err);
     if (local_err) {
-        qemu_mutex_unlock_iothread();
+        bql_unlock();
         goto out;
     }
     vm_start();
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
     trace_colo_vm_state_change("stop", "run");
 
     colo_send_message(mis->to_src_file, COLO_MESSAGE_CHECKPOINT_READY,
@@ -920,7 +920,7 @@ int coroutine_fn colo_incoming_co(void)
     Error *local_err = NULL;
     QemuThread th;
 
-    assert(qemu_mutex_iothread_locked());
+    assert(bql_locked());
 
     if (!migration_incoming_colo_enabled()) {
         return 0;
@@ -940,10 +940,10 @@ int coroutine_fn colo_incoming_co(void)
     qemu_coroutine_yield();
     mis->colo_incoming_co = NULL;
 
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
     /* Wait checkpoint incoming thread exit before free resource */
     qemu_thread_join(&th);
-    qemu_mutex_lock_iothread();
+    bql_lock();
 
     /* We hold the global iothread lock, so it is safe here */
     colo_release_ram_cache();
diff --git a/migration/dirtyrate.c b/migration/dirtyrate.c
index 62d86b8be2..1d2e85746f 100644
--- a/migration/dirtyrate.c
+++ b/migration/dirtyrate.c
@@ -90,13 +90,13 @@ static int64_t do_calculate_dirtyrate(DirtyPageRecord dirty_pages,
 
 void global_dirty_log_change(unsigned int flag, bool start)
 {
-    qemu_mutex_lock_iothread();
+    bql_lock();
     if (start) {
         memory_global_dirty_log_start(flag);
     } else {
         memory_global_dirty_log_stop(flag);
     }
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
 }
 
 /*
@@ -106,12 +106,12 @@ void global_dirty_log_change(unsigned int flag, bool start)
  */
 static void global_dirty_log_sync(unsigned int flag, bool one_shot)
 {
-    qemu_mutex_lock_iothread();
+    bql_lock();
     memory_global_dirty_log_sync(false);
     if (one_shot) {
         memory_global_dirty_log_stop(flag);
     }
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
 }
 
 static DirtyPageRecord *vcpu_dirty_stat_alloc(VcpuStat *stat)
@@ -609,7 +609,7 @@ static void calculate_dirtyrate_dirty_bitmap(struct DirtyRateConfig config)
     int64_t start_time;
     DirtyPageRecord dirty_pages;
 
-    qemu_mutex_lock_iothread();
+    bql_lock();
     memory_global_dirty_log_start(GLOBAL_DIRTY_DIRTY_RATE);
 
     /*
@@ -626,7 +626,7 @@ static void calculate_dirtyrate_dirty_bitmap(struct DirtyRateConfig config)
      * KVM_DIRTY_LOG_MANUAL_PROTECT_ENABLE cap is enabled.
      */
     dirtyrate_manual_reset_protect();
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
 
     record_dirtypages_bitmap(&dirty_pages, true);
 
diff --git a/migration/migration.c b/migration/migration.c
index 3ce04b2aaf..be74c714d6 100644
--- a/migration/migration.c
+++ b/migration/migration.c
@@ -1294,12 +1294,12 @@ static void migrate_fd_cleanup(MigrationState *s)
         QEMUFile *tmp;
 
         trace_migrate_fd_cleanup();
-        qemu_mutex_unlock_iothread();
+        bql_unlock();
         if (s->migration_thread_running) {
             qemu_thread_join(&s->thread);
             s->migration_thread_running = false;
         }
-        qemu_mutex_lock_iothread();
+        bql_lock();
 
         multifd_save_cleanup();
         qemu_mutex_lock(&s->qemu_file_lock);
@@ -2411,7 +2411,7 @@ static int postcopy_start(MigrationState *ms, Error **errp)
     }
 
     trace_postcopy_start();
-    qemu_mutex_lock_iothread();
+    bql_lock();
     trace_postcopy_start_set_run();
 
     migration_downtime_start(ms);
@@ -2520,7 +2520,7 @@ static int postcopy_start(MigrationState *ms, Error **errp)
 
     migration_downtime_end(ms);
 
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
 
     if (migrate_postcopy_ram()) {
         /*
@@ -2561,7 +2561,7 @@ fail:
             error_report_err(local_err);
         }
     }
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
     return -1;
 }
 
@@ -2595,14 +2595,14 @@ static int migration_maybe_pause(MigrationState *s,
      * wait for the 'pause_sem' semaphore.
      */
     if (s->state != MIGRATION_STATUS_CANCELLING) {
-        qemu_mutex_unlock_iothread();
+        bql_unlock();
         migrate_set_state(&s->state, *current_active_state,
                           MIGRATION_STATUS_PRE_SWITCHOVER);
         qemu_sem_wait(&s->pause_sem);
         migrate_set_state(&s->state, MIGRATION_STATUS_PRE_SWITCHOVER,
                           new_state);
         *current_active_state = new_state;
-        qemu_mutex_lock_iothread();
+        bql_lock();
     }
 
     return s->state == new_state ? 0 : -EINVAL;
@@ -2613,7 +2613,7 @@ static int migration_completion_precopy(MigrationState *s,
 {
     int ret;
 
-    qemu_mutex_lock_iothread();
+    bql_lock();
     migration_downtime_start(s);
     qemu_system_wakeup_request(QEMU_WAKEUP_REASON_OTHER, NULL);
 
@@ -2641,7 +2641,7 @@ static int migration_completion_precopy(MigrationState *s,
     ret = qemu_savevm_state_complete_precopy(s->to_dst_file, false,
                                              s->block_inactive);
 out_unlock:
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
     return ret;
 }
 
@@ -2649,9 +2649,9 @@ static void migration_completion_postcopy(MigrationState *s)
 {
     trace_migration_completion_postcopy_end();
 
-    qemu_mutex_lock_iothread();
+    bql_lock();
     qemu_savevm_state_complete_postcopy(s->to_dst_file);
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
 
     /*
      * Shutdown the postcopy fast path thread.  This is only needed when dest
@@ -2675,14 +2675,14 @@ static void migration_completion_failed(MigrationState *s,
          */
         Error *local_err = NULL;
 
-        qemu_mutex_lock_iothread();
+        bql_lock();
         bdrv_activate_all(&local_err);
         if (local_err) {
             error_report_err(local_err);
         } else {
             s->block_inactive = false;
         }
-        qemu_mutex_unlock_iothread();
+        bql_unlock();
     }
 
     migrate_set_state(&s->state, current_active_state,
@@ -3122,7 +3122,7 @@ static void migration_iteration_finish(MigrationState *s)
     /* If we enabled cpu throttling for auto-converge, turn it off. */
     cpu_throttle_stop();
 
-    qemu_mutex_lock_iothread();
+    bql_lock();
     switch (s->state) {
     case MIGRATION_STATUS_COMPLETED:
         migration_calculate_complete(s);
@@ -3153,7 +3153,7 @@ static void migration_iteration_finish(MigrationState *s)
         break;
     }
     migrate_fd_cleanup_schedule(s);
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
 }
 
 static void bg_migration_iteration_finish(MigrationState *s)
@@ -3165,7 +3165,7 @@ static void bg_migration_iteration_finish(MigrationState *s)
      */
     ram_write_tracking_stop();
 
-    qemu_mutex_lock_iothread();
+    bql_lock();
     switch (s->state) {
     case MIGRATION_STATUS_COMPLETED:
         migration_calculate_complete(s);
@@ -3184,7 +3184,7 @@ static void bg_migration_iteration_finish(MigrationState *s)
     }
 
     migrate_fd_cleanup_schedule(s);
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
 }
 
 /*
@@ -3306,9 +3306,9 @@ static void *migration_thread(void *opaque)
     object_ref(OBJECT(s));
     update_iteration_initial_status(s);
 
-    qemu_mutex_lock_iothread();
+    bql_lock();
     qemu_savevm_state_header(s->to_dst_file);
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
 
     /*
      * If we opened the return path, we need to make sure dst has it
@@ -3336,9 +3336,9 @@ static void *migration_thread(void *opaque)
         qemu_savevm_send_colo_enable(s->to_dst_file);
     }
 
-    qemu_mutex_lock_iothread();
+    bql_lock();
     qemu_savevm_state_setup(s->to_dst_file);
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
 
     qemu_savevm_wait_unplug(s, MIGRATION_STATUS_SETUP,
                                MIGRATION_STATUS_ACTIVE);
@@ -3449,10 +3449,10 @@ static void *bg_migration_thread(void *opaque)
     ram_write_tracking_prepare();
 #endif
 
-    qemu_mutex_lock_iothread();
+    bql_lock();
     qemu_savevm_state_header(s->to_dst_file);
     qemu_savevm_state_setup(s->to_dst_file);
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
 
     qemu_savevm_wait_unplug(s, MIGRATION_STATUS_SETUP,
                                MIGRATION_STATUS_ACTIVE);
@@ -3462,7 +3462,7 @@ static void *bg_migration_thread(void *opaque)
     trace_migration_thread_setup_complete();
     migration_downtime_start(s);
 
-    qemu_mutex_lock_iothread();
+    bql_lock();
 
     /*
      * If VM is currently in suspended state, then, to make a valid runstate
@@ -3505,7 +3505,7 @@ static void *bg_migration_thread(void *opaque)
     s->vm_start_bh = qemu_bh_new(bg_migration_vm_start_bh, s);
     qemu_bh_schedule(s->vm_start_bh);
 
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
 
     while (migration_is_active(s)) {
         MigIterateState iter_state = bg_migration_iteration_run(s);
@@ -3534,7 +3534,7 @@ fail:
     if (early_fail) {
         migrate_set_state(&s->state, MIGRATION_STATUS_ACTIVE,
                 MIGRATION_STATUS_FAILED);
-        qemu_mutex_unlock_iothread();
+        bql_unlock();
     }
 
     bg_migration_iteration_finish(s);
diff --git a/migration/ram.c b/migration/ram.c
index 8c7886ab79..08dc7e2909 100644
--- a/migration/ram.c
+++ b/migration/ram.c
@@ -2984,9 +2984,9 @@ static int ram_save_setup(QEMUFile *f, void *opaque)
     migration_ops = g_malloc0(sizeof(MigrationOps));
     migration_ops->ram_save_target_page = ram_save_target_page_legacy;
 
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
     ret = multifd_send_sync_main(f);
-    qemu_mutex_lock_iothread();
+    bql_lock();
     if (ret < 0) {
         return ret;
     }
@@ -3221,11 +3221,11 @@ static void ram_state_pending_exact(void *opaque, uint64_t *must_precopy,
     uint64_t remaining_size = rs->migration_dirty_pages * TARGET_PAGE_SIZE;
 
     if (!migration_in_postcopy() && remaining_size < s->threshold_size) {
-        qemu_mutex_lock_iothread();
+        bql_lock();
         WITH_RCU_READ_LOCK_GUARD() {
             migration_bitmap_sync_precopy(rs, false);
         }
-        qemu_mutex_unlock_iothread();
+        bql_unlock();
         remaining_size = rs->migration_dirty_pages * TARGET_PAGE_SIZE;
     }
 
@@ -3453,7 +3453,7 @@ void colo_incoming_start_dirty_log(void)
 {
     RAMBlock *block = NULL;
     /* For memory_global_dirty_log_start below. */
-    qemu_mutex_lock_iothread();
+    bql_lock();
     qemu_mutex_lock_ramlist();
 
     memory_global_dirty_log_sync(false);
@@ -3467,7 +3467,7 @@ void colo_incoming_start_dirty_log(void)
     }
     ram_state->migration_dirty_pages = 0;
     qemu_mutex_unlock_ramlist();
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
 }
 
 /* It is need to hold the global lock to call this helper */
diff --git a/replay/replay-internal.c b/replay/replay-internal.c
index 77d0c82327..3e08e381cb 100644
--- a/replay/replay-internal.c
+++ b/replay/replay-internal.c
@@ -216,7 +216,7 @@ void replay_mutex_lock(void)
 {
     if (replay_mode != REPLAY_MODE_NONE) {
         unsigned long id;
-        g_assert(!qemu_mutex_iothread_locked());
+        g_assert(!bql_locked());
         g_assert(!replay_mutex_locked());
         qemu_mutex_lock(&lock);
         id = mutex_tail++;
diff --git a/semihosting/console.c b/semihosting/console.c
index 5d61e8207e..60102bbab6 100644
--- a/semihosting/console.c
+++ b/semihosting/console.c
@@ -43,7 +43,7 @@ static SemihostingConsole console;
 static int console_can_read(void *opaque)
 {
     SemihostingConsole *c = opaque;
-    g_assert(qemu_mutex_iothread_locked());
+    g_assert(bql_locked());
     return (int)fifo8_num_free(&c->fifo);
 }
 
@@ -58,7 +58,7 @@ static void console_wake_up(gpointer data, gpointer user_data)
 static void console_read(void *opaque, const uint8_t *buf, int size)
 {
     SemihostingConsole *c = opaque;
-    g_assert(qemu_mutex_iothread_locked());
+    g_assert(bql_locked());
     while (size-- && !fifo8_is_full(&c->fifo)) {
         fifo8_push(&c->fifo, *buf++);
     }
@@ -70,7 +70,7 @@ bool qemu_semihosting_console_ready(void)
 {
     SemihostingConsole *c = &console;
 
-    g_assert(qemu_mutex_iothread_locked());
+    g_assert(bql_locked());
     return !fifo8_is_empty(&c->fifo);
 }
 
@@ -78,7 +78,7 @@ void qemu_semihosting_console_block_until_ready(CPUState *cs)
 {
     SemihostingConsole *c = &console;
 
-    g_assert(qemu_mutex_iothread_locked());
+    g_assert(bql_locked());
 
     /* Block if the fifo is completely empty. */
     if (fifo8_is_empty(&c->fifo)) {
diff --git a/stubs/iothread-lock.c b/stubs/iothread-lock.c
index 5b45b7fc8b..d7890e5581 100644
--- a/stubs/iothread-lock.c
+++ b/stubs/iothread-lock.c
@@ -1,15 +1,15 @@
 #include "qemu/osdep.h"
 #include "qemu/main-loop.h"
 
-bool qemu_mutex_iothread_locked(void)
+bool bql_locked(void)
 {
     return false;
 }
 
-void qemu_mutex_lock_iothread_impl(const char *file, int line)
+void bql_lock_impl(const char *file, int line)
 {
 }
 
-void qemu_mutex_unlock_iothread(void)
+void bql_unlock(void)
 {
 }
diff --git a/system/cpu-throttle.c b/system/cpu-throttle.c
index d9bb30a223..786a9a5639 100644
--- a/system/cpu-throttle.c
+++ b/system/cpu-throttle.c
@@ -57,9 +57,9 @@ static void cpu_throttle_thread(CPUState *cpu, run_on_cpu_data opaque)
             qemu_cond_timedwait_iothread(cpu->halt_cond,
                                          sleeptime_ns / SCALE_MS);
         } else {
-            qemu_mutex_unlock_iothread();
+            bql_unlock();
             g_usleep(sleeptime_ns / SCALE_US);
-            qemu_mutex_lock_iothread();
+            bql_lock();
         }
         sleeptime_ns = endtime_ns - qemu_clock_get_ns(QEMU_CLOCK_REALTIME);
     }
diff --git a/system/cpus.c b/system/cpus.c
index a444a747f0..9b68dc9c7c 100644
--- a/system/cpus.c
+++ b/system/cpus.c
@@ -65,7 +65,8 @@
 
 #endif /* CONFIG_LINUX */
 
-static QemuMutex qemu_global_mutex;
+/* The Big QEMU Lock (BQL) */
+static QemuMutex bql;
 
 /*
  * The chosen accelerator is supposed to register this.
@@ -389,14 +390,14 @@ void qemu_init_cpu_loop(void)
     qemu_init_sigbus();
     qemu_cond_init(&qemu_cpu_cond);
     qemu_cond_init(&qemu_pause_cond);
-    qemu_mutex_init(&qemu_global_mutex);
+    qemu_mutex_init(&bql);
 
     qemu_thread_get_self(&io_thread);
 }
 
 void run_on_cpu(CPUState *cpu, run_on_cpu_func func, run_on_cpu_data data)
 {
-    do_run_on_cpu(cpu, func, data, &qemu_global_mutex);
+    do_run_on_cpu(cpu, func, data, &bql);
 }
 
 static void qemu_cpu_stop(CPUState *cpu, bool exit)
@@ -428,7 +429,7 @@ void qemu_wait_io_event(CPUState *cpu)
             slept = true;
             qemu_plugin_vcpu_idle_cb(cpu);
         }
-        qemu_cond_wait(cpu->halt_cond, &qemu_global_mutex);
+        qemu_cond_wait(cpu->halt_cond, &bql);
     }
     if (slept) {
         qemu_plugin_vcpu_resume_cb(cpu);
@@ -481,46 +482,46 @@ bool qemu_in_vcpu_thread(void)
     return current_cpu && qemu_cpu_is_self(current_cpu);
 }
 
-QEMU_DEFINE_STATIC_CO_TLS(bool, iothread_locked)
+QEMU_DEFINE_STATIC_CO_TLS(bool, bql_locked)
 
-bool qemu_mutex_iothread_locked(void)
+bool bql_locked(void)
 {
-    return get_iothread_locked();
+    return get_bql_locked();
 }
 
 bool qemu_in_main_thread(void)
 {
-    return qemu_mutex_iothread_locked();
+    return bql_locked();
 }
 
 /*
  * The BQL is taken from so many places that it is worth profiling the
  * callers directly, instead of funneling them all through a single function.
  */
-void qemu_mutex_lock_iothread_impl(const char *file, int line)
+void bql_lock_impl(const char *file, int line)
 {
-    QemuMutexLockFunc bql_lock = qatomic_read(&qemu_bql_mutex_lock_func);
+    QemuMutexLockFunc bql_lock_fn = qatomic_read(&bql_mutex_lock_func);
 
-    g_assert(!qemu_mutex_iothread_locked());
-    bql_lock(&qemu_global_mutex, file, line);
-    set_iothread_locked(true);
+    g_assert(!bql_locked());
+    bql_lock_fn(&bql, file, line);
+    set_bql_locked(true);
 }
 
-void qemu_mutex_unlock_iothread(void)
+void bql_unlock(void)
 {
-    g_assert(qemu_mutex_iothread_locked());
-    set_iothread_locked(false);
-    qemu_mutex_unlock(&qemu_global_mutex);
+    g_assert(bql_locked());
+    set_bql_locked(false);
+    qemu_mutex_unlock(&bql);
 }
 
 void qemu_cond_wait_iothread(QemuCond *cond)
 {
-    qemu_cond_wait(cond, &qemu_global_mutex);
+    qemu_cond_wait(cond, &bql);
 }
 
 void qemu_cond_timedwait_iothread(QemuCond *cond, int ms)
 {
-    qemu_cond_timedwait(cond, &qemu_global_mutex, ms);
+    qemu_cond_timedwait(cond, &bql, ms);
 }
 
 /* signal CPU creation */
@@ -571,15 +572,15 @@ void pause_all_vcpus(void)
     replay_mutex_unlock();
 
     while (!all_vcpus_paused()) {
-        qemu_cond_wait(&qemu_pause_cond, &qemu_global_mutex);
+        qemu_cond_wait(&qemu_pause_cond, &bql);
         CPU_FOREACH(cpu) {
             qemu_cpu_kick(cpu);
         }
     }
 
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
     replay_mutex_lock();
-    qemu_mutex_lock_iothread();
+    bql_lock();
 }
 
 void cpu_resume(CPUState *cpu)
@@ -608,9 +609,9 @@ void cpu_remove_sync(CPUState *cpu)
     cpu->stop = true;
     cpu->unplug = true;
     qemu_cpu_kick(cpu);
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
     qemu_thread_join(cpu->thread);
-    qemu_mutex_lock_iothread();
+    bql_lock();
 }
 
 void cpus_register_accel(const AccelOpsClass *ops)
@@ -649,7 +650,7 @@ void qemu_init_vcpu(CPUState *cpu)
     cpus_accel->create_vcpu_thread(cpu);
 
     while (!cpu->created) {
-        qemu_cond_wait(&qemu_cpu_cond, &qemu_global_mutex);
+        qemu_cond_wait(&qemu_cpu_cond, &bql);
     }
 }
 
diff --git a/system/dirtylimit.c b/system/dirtylimit.c
index 495c7a7082..b5607eb8c2 100644
--- a/system/dirtylimit.c
+++ b/system/dirtylimit.c
@@ -148,9 +148,9 @@ void vcpu_dirty_rate_stat_stop(void)
 {
     qatomic_set(&vcpu_dirty_rate_stat->running, 0);
     dirtylimit_state_unlock();
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
     qemu_thread_join(&vcpu_dirty_rate_stat->thread);
-    qemu_mutex_lock_iothread();
+    bql_lock();
     dirtylimit_state_lock();
 }
 
diff --git a/system/memory.c b/system/memory.c
index 798b6c0a17..7a9dc43c2d 100644
--- a/system/memory.c
+++ b/system/memory.c
@@ -1119,7 +1119,7 @@ void memory_region_transaction_commit(void)
     AddressSpace *as;
 
     assert(memory_region_transaction_depth);
-    assert(qemu_mutex_iothread_locked());
+    assert(bql_locked());
 
     --memory_region_transaction_depth;
     if (!memory_region_transaction_depth) {
diff --git a/system/physmem.c b/system/physmem.c
index a63853a7bc..4937e67bad 100644
--- a/system/physmem.c
+++ b/system/physmem.c
@@ -2639,8 +2639,8 @@ bool prepare_mmio_access(MemoryRegion *mr)
 {
     bool release_lock = false;
 
-    if (!qemu_mutex_iothread_locked()) {
-        qemu_mutex_lock_iothread();
+    if (!bql_locked()) {
+        bql_lock();
         release_lock = true;
     }
     if (mr->flush_coalesced_mmio) {
@@ -2721,7 +2721,7 @@ static MemTxResult flatview_write_continue(FlatView *fv, hwaddr addr,
         }
 
         if (release_lock) {
-            qemu_mutex_unlock_iothread();
+            bql_unlock();
             release_lock = false;
         }
 
@@ -2799,7 +2799,7 @@ MemTxResult flatview_read_continue(FlatView *fv, hwaddr addr,
         }
 
         if (release_lock) {
-            qemu_mutex_unlock_iothread();
+            bql_unlock();
             release_lock = false;
         }
 
diff --git a/system/runstate.c b/system/runstate.c
index ea9d6c2a32..5833ba0675 100644
--- a/system/runstate.c
+++ b/system/runstate.c
@@ -810,7 +810,7 @@ void qemu_init_subsystems(void)
 
     qemu_init_cpu_list();
     qemu_init_cpu_loop();
-    qemu_mutex_lock_iothread();
+    bql_lock();
 
     atexit(qemu_run_exit_notifiers);
 
diff --git a/system/watchpoint.c b/system/watchpoint.c
index ba5ad13352..b76007ebf6 100644
--- a/system/watchpoint.c
+++ b/system/watchpoint.c
@@ -155,9 +155,9 @@ void cpu_check_watchpoint(CPUState *cpu, vaddr addr, vaddr len,
          * Now raise the debug interrupt so that it will
          * trigger after the current instruction.
          */
-        qemu_mutex_lock_iothread();
+        bql_lock();
         cpu_interrupt(cpu, CPU_INTERRUPT_DEBUG);
-        qemu_mutex_unlock_iothread();
+        bql_unlock();
         return;
     }
 
diff --git a/target/arm/arm-powerctl.c b/target/arm/arm-powerctl.c
index c078849403..8850381565 100644
--- a/target/arm/arm-powerctl.c
+++ b/target/arm/arm-powerctl.c
@@ -88,7 +88,7 @@ static void arm_set_cpu_on_async_work(CPUState *target_cpu_state,
     g_free(info);
 
     /* Finally set the power status */
-    assert(qemu_mutex_iothread_locked());
+    assert(bql_locked());
     target_cpu->power_state = PSCI_ON;
 }
 
@@ -99,7 +99,7 @@ int arm_set_cpu_on(uint64_t cpuid, uint64_t entry, uint64_t context_id,
     ARMCPU *target_cpu;
     struct CpuOnInfo *info;
 
-    assert(qemu_mutex_iothread_locked());
+    assert(bql_locked());
 
     DPRINTF("cpu %" PRId64 " (EL %d, %s) @ 0x%" PRIx64 " with R0 = 0x%" PRIx64
             "\n", cpuid, target_el, target_aa64 ? "aarch64" : "aarch32", entry,
@@ -196,7 +196,7 @@ static void arm_set_cpu_on_and_reset_async_work(CPUState *target_cpu_state,
     target_cpu_state->halted = 0;
 
     /* Finally set the power status */
-    assert(qemu_mutex_iothread_locked());
+    assert(bql_locked());
     target_cpu->power_state = PSCI_ON;
 }
 
@@ -205,7 +205,7 @@ int arm_set_cpu_on_and_reset(uint64_t cpuid)
     CPUState *target_cpu_state;
     ARMCPU *target_cpu;
 
-    assert(qemu_mutex_iothread_locked());
+    assert(bql_locked());
 
     /* Retrieve the cpu we are powering up */
     target_cpu_state = arm_get_cpu_by_id(cpuid);
@@ -247,7 +247,7 @@ static void arm_set_cpu_off_async_work(CPUState *target_cpu_state,
 {
     ARMCPU *target_cpu = ARM_CPU(target_cpu_state);
 
-    assert(qemu_mutex_iothread_locked());
+    assert(bql_locked());
     target_cpu->power_state = PSCI_OFF;
     target_cpu_state->halted = 1;
     target_cpu_state->exception_index = EXCP_HLT;
@@ -258,7 +258,7 @@ int arm_set_cpu_off(uint64_t cpuid)
     CPUState *target_cpu_state;
     ARMCPU *target_cpu;
 
-    assert(qemu_mutex_iothread_locked());
+    assert(bql_locked());
 
     DPRINTF("cpu %" PRId64 "\n", cpuid);
 
@@ -294,7 +294,7 @@ int arm_reset_cpu(uint64_t cpuid)
     CPUState *target_cpu_state;
     ARMCPU *target_cpu;
 
-    assert(qemu_mutex_iothread_locked());
+    assert(bql_locked());
 
     DPRINTF("cpu %" PRId64 "\n", cpuid);
 
diff --git a/target/arm/helper.c b/target/arm/helper.c
index fc546df5c7..c66c292342 100644
--- a/target/arm/helper.c
+++ b/target/arm/helper.c
@@ -5851,7 +5851,7 @@ static void do_hcr_write(CPUARMState *env, uint64_t value, uint64_t valid_mask)
      * VFIQ are masked unless running at EL0 or EL1, and HCR
      * can only be written at EL2.
      */
-    g_assert(qemu_mutex_iothread_locked());
+    g_assert(bql_locked());
     arm_cpu_update_virq(cpu);
     arm_cpu_update_vfiq(cpu);
     arm_cpu_update_vserr(cpu);
@@ -11319,7 +11319,7 @@ void arm_cpu_do_interrupt(CPUState *cs)
      * BQL needs to be held for any modification of
      * cs->interrupt_request.
      */
-    g_assert(qemu_mutex_iothread_locked());
+    g_assert(bql_locked());
 
     arm_call_pre_el_change_hook(cpu);
 
diff --git a/target/arm/hvf/hvf.c b/target/arm/hvf/hvf.c
index 757e13b0f9..f8dffb815f 100644
--- a/target/arm/hvf/hvf.c
+++ b/target/arm/hvf/hvf.c
@@ -1718,9 +1718,9 @@ static void hvf_wait_for_ipi(CPUState *cpu, struct timespec *ts)
      * sleeping.
      */
     qatomic_set_mb(&cpu->thread_kicked, false);
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
     pselect(0, 0, 0, 0, ts, &cpu->accel->unblock_ipi_mask);
-    qemu_mutex_lock_iothread();
+    bql_lock();
 }
 
 static void hvf_wfi(CPUState *cpu)
@@ -1821,7 +1821,7 @@ int hvf_vcpu_exec(CPUState *cpu)
 
     flush_cpu_state(cpu);
 
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
     assert_hvf_ok(hv_vcpu_run(cpu->accel->fd));
 
     /* handle VMEXIT */
@@ -1830,7 +1830,7 @@ int hvf_vcpu_exec(CPUState *cpu)
     uint32_t ec = syn_get_ec(syndrome);
 
     ret = 0;
-    qemu_mutex_lock_iothread();
+    bql_lock();
     switch (exit_reason) {
     case HV_EXIT_REASON_EXCEPTION:
         /* This is the main one, handle below. */
diff --git a/target/arm/kvm.c b/target/arm/kvm.c
index c5a3183843..8f52b211f9 100644
--- a/target/arm/kvm.c
+++ b/target/arm/kvm.c
@@ -1250,7 +1250,7 @@ MemTxAttrs kvm_arch_post_run(CPUState *cs, struct kvm_run *run)
     if (run->s.regs.device_irq_level != cpu->device_irq_level) {
         switched_level = cpu->device_irq_level ^ run->s.regs.device_irq_level;
 
-        qemu_mutex_lock_iothread();
+        bql_lock();
 
         if (switched_level & KVM_ARM_DEV_EL1_VTIMER) {
             qemu_set_irq(cpu->gt_timer_outputs[GTIMER_VIRT],
@@ -1279,7 +1279,7 @@ MemTxAttrs kvm_arch_post_run(CPUState *cs, struct kvm_run *run)
 
         /* We also mark unknown levels as processed to not waste cycles */
         cpu->device_irq_level = run->s.regs.device_irq_level;
-        qemu_mutex_unlock_iothread();
+        bql_unlock();
     }
 
     return MEMTXATTRS_UNSPECIFIED;
@@ -1410,9 +1410,9 @@ static bool kvm_arm_handle_debug(ARMCPU *cpu,
     env->exception.syndrome = debug_exit->hsr;
     env->exception.vaddress = debug_exit->far;
     env->exception.target_el = 1;
-    qemu_mutex_lock_iothread();
+    bql_lock();
     arm_cpu_do_interrupt(cs);
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
 
     return false;
 }
diff --git a/target/arm/ptw.c b/target/arm/ptw.c
index 1762b058ae..0ecd3a36da 100644
--- a/target/arm/ptw.c
+++ b/target/arm/ptw.c
@@ -772,9 +772,9 @@ static uint64_t arm_casq_ptw(CPUARMState *env, uint64_t old_val,
 #if !TCG_OVERSIZED_GUEST
 # error "Unexpected configuration"
 #endif
-    bool locked = qemu_mutex_iothread_locked();
+    bool locked = bql_locked();
     if (!locked) {
-       qemu_mutex_lock_iothread();
+        bql_lock();
     }
     if (ptw->out_be) {
         cur_val = ldq_be_p(host);
@@ -788,7 +788,7 @@ static uint64_t arm_casq_ptw(CPUARMState *env, uint64_t old_val,
         }
     }
     if (!locked) {
-        qemu_mutex_unlock_iothread();
+        bql_unlock();
     }
 #endif
 
diff --git a/target/arm/tcg/helper-a64.c b/target/arm/tcg/helper-a64.c
index 8ad84623d3..198b975f20 100644
--- a/target/arm/tcg/helper-a64.c
+++ b/target/arm/tcg/helper-a64.c
@@ -809,9 +809,9 @@ void HELPER(exception_return)(CPUARMState *env, uint64_t new_pc)
         goto illegal_return;
     }
 
-    qemu_mutex_lock_iothread();
+    bql_lock();
     arm_call_pre_el_change_hook(env_archcpu(env));
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
 
     if (!return_to_aa64) {
         env->aarch64 = false;
@@ -876,9 +876,9 @@ void HELPER(exception_return)(CPUARMState *env, uint64_t new_pc)
      */
     aarch64_sve_change_el(env, cur_el, new_el, return_to_aa64);
 
-    qemu_mutex_lock_iothread();
+    bql_lock();
     arm_call_el_change_hook(env_archcpu(env));
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
 
     return;
 
diff --git a/target/arm/tcg/m_helper.c b/target/arm/tcg/m_helper.c
index a26adb75aa..d1f1e02acc 100644
--- a/target/arm/tcg/m_helper.c
+++ b/target/arm/tcg/m_helper.c
@@ -373,8 +373,8 @@ void HELPER(v7m_preserve_fp_state)(CPUARMState *env)
     bool ts = is_secure && (env->v7m.fpccr[M_REG_S] & R_V7M_FPCCR_TS_MASK);
     bool take_exception;
 
-    /* Take the iothread lock as we are going to touch the NVIC */
-    qemu_mutex_lock_iothread();
+    /* Take the BQL as we are going to touch the NVIC */
+    bql_lock();
 
     /* Check the background context had access to the FPU */
     if (!v7m_cpacr_pass(env, is_secure, is_priv)) {
@@ -428,7 +428,7 @@ void HELPER(v7m_preserve_fp_state)(CPUARMState *env)
     take_exception = !stacked_ok &&
         armv7m_nvic_can_take_pending_exception(env->nvic);
 
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
 
     if (take_exception) {
         raise_exception_ra(env, EXCP_LAZYFP, 0, 1, GETPC());
diff --git a/target/arm/tcg/op_helper.c b/target/arm/tcg/op_helper.c
index 9de0fa2d1f..105ab63ed7 100644
--- a/target/arm/tcg/op_helper.c
+++ b/target/arm/tcg/op_helper.c
@@ -482,9 +482,9 @@ void HELPER(cpsr_write_eret)(CPUARMState *env, uint32_t val)
 {
     uint32_t mask;
 
-    qemu_mutex_lock_iothread();
+    bql_lock();
     arm_call_pre_el_change_hook(env_archcpu(env));
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
 
     mask = aarch32_cpsr_valid_mask(env->features, &env_archcpu(env)->isar);
     cpsr_write(env, val, mask, CPSRWriteExceptionReturn);
@@ -497,9 +497,9 @@ void HELPER(cpsr_write_eret)(CPUARMState *env, uint32_t val)
     env->regs[15] &= (env->thumb ? ~1 : ~3);
     arm_rebuild_hflags(env);
 
-    qemu_mutex_lock_iothread();
+    bql_lock();
     arm_call_el_change_hook(env_archcpu(env));
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
 }
 
 /* Access to user mode registers from privileged modes.  */
@@ -858,9 +858,9 @@ void HELPER(set_cp_reg)(CPUARMState *env, const void *rip, uint32_t value)
     const ARMCPRegInfo *ri = rip;
 
     if (ri->type & ARM_CP_IO) {
-        qemu_mutex_lock_iothread();
+        bql_lock();
         ri->writefn(env, ri, value);
-        qemu_mutex_unlock_iothread();
+        bql_unlock();
     } else {
         ri->writefn(env, ri, value);
     }
@@ -872,9 +872,9 @@ uint32_t HELPER(get_cp_reg)(CPUARMState *env, const void *rip)
     uint32_t res;
 
     if (ri->type & ARM_CP_IO) {
-        qemu_mutex_lock_iothread();
+        bql_lock();
         res = ri->readfn(env, ri);
-        qemu_mutex_unlock_iothread();
+        bql_unlock();
     } else {
         res = ri->readfn(env, ri);
     }
@@ -887,9 +887,9 @@ void HELPER(set_cp_reg64)(CPUARMState *env, const void *rip, uint64_t value)
     const ARMCPRegInfo *ri = rip;
 
     if (ri->type & ARM_CP_IO) {
-        qemu_mutex_lock_iothread();
+        bql_lock();
         ri->writefn(env, ri, value);
-        qemu_mutex_unlock_iothread();
+        bql_unlock();
     } else {
         ri->writefn(env, ri, value);
     }
@@ -901,9 +901,9 @@ uint64_t HELPER(get_cp_reg64)(CPUARMState *env, const void *rip)
     uint64_t res;
 
     if (ri->type & ARM_CP_IO) {
-        qemu_mutex_lock_iothread();
+        bql_lock();
         res = ri->readfn(env, ri);
-        qemu_mutex_unlock_iothread();
+        bql_unlock();
     } else {
         res = ri->readfn(env, ri);
     }
diff --git a/target/arm/tcg/psci.c b/target/arm/tcg/psci.c
index 6c1239bb96..9080a91d9c 100644
--- a/target/arm/tcg/psci.c
+++ b/target/arm/tcg/psci.c
@@ -107,7 +107,7 @@ void arm_handle_psci_call(ARMCPU *cpu)
             }
             target_cpu = ARM_CPU(target_cpu_state);
 
-            g_assert(qemu_mutex_iothread_locked());
+            g_assert(bql_locked());
             ret = target_cpu->power_state;
             break;
         default:
diff --git a/target/hppa/int_helper.c b/target/hppa/int_helper.c
index 98e9d688f6..efe638b36e 100644
--- a/target/hppa/int_helper.c
+++ b/target/hppa/int_helper.c
@@ -84,17 +84,17 @@ void hppa_cpu_alarm_timer(void *opaque)
 void HELPER(write_eirr)(CPUHPPAState *env, target_ulong val)
 {
     env->cr[CR_EIRR] &= ~val;
-    qemu_mutex_lock_iothread();
+    bql_lock();
     eval_interrupt(env_archcpu(env));
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
 }
 
 void HELPER(write_eiem)(CPUHPPAState *env, target_ulong val)
 {
     env->cr[CR_EIEM] = val;
-    qemu_mutex_lock_iothread();
+    bql_lock();
     eval_interrupt(env_archcpu(env));
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
 }
 
 void hppa_cpu_do_interrupt(CPUState *cs)
diff --git a/target/i386/hvf/hvf.c b/target/i386/hvf/hvf.c
index 20b9ca3ef5..11ffdd4c69 100644
--- a/target/i386/hvf/hvf.c
+++ b/target/i386/hvf/hvf.c
@@ -429,9 +429,9 @@ int hvf_vcpu_exec(CPUState *cpu)
         }
         vmx_update_tpr(cpu);
 
-        qemu_mutex_unlock_iothread();
+        bql_unlock();
         if (!cpu_is_bsp(X86_CPU(cpu)) && cpu->halted) {
-            qemu_mutex_lock_iothread();
+            bql_lock();
             return EXCP_HLT;
         }
 
@@ -450,7 +450,7 @@ int hvf_vcpu_exec(CPUState *cpu)
         rip = rreg(cpu->accel->fd, HV_X86_RIP);
         env->eflags = rreg(cpu->accel->fd, HV_X86_RFLAGS);
 
-        qemu_mutex_lock_iothread();
+        bql_lock();
 
         update_apic_tpr(cpu);
         current_cpu = cpu;
diff --git a/target/i386/kvm/hyperv.c b/target/i386/kvm/hyperv.c
index e3ac978648..6825c89af3 100644
--- a/target/i386/kvm/hyperv.c
+++ b/target/i386/kvm/hyperv.c
@@ -45,9 +45,9 @@ void hyperv_x86_synic_update(X86CPU *cpu)
 
 static void async_synic_update(CPUState *cs, run_on_cpu_data data)
 {
-    qemu_mutex_lock_iothread();
+    bql_lock();
     hyperv_x86_synic_update(X86_CPU(cs));
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
 }
 
 int kvm_hv_handle_exit(X86CPU *cpu, struct kvm_hyperv_exit *exit)
diff --git a/target/i386/kvm/kvm.c b/target/i386/kvm/kvm.c
index 4ce80555b4..76a66246eb 100644
--- a/target/i386/kvm/kvm.c
+++ b/target/i386/kvm/kvm.c
@@ -4713,9 +4713,9 @@ void kvm_arch_pre_run(CPUState *cpu, struct kvm_run *run)
     /* Inject NMI */
     if (cpu->interrupt_request & (CPU_INTERRUPT_NMI | CPU_INTERRUPT_SMI)) {
         if (cpu->interrupt_request & CPU_INTERRUPT_NMI) {
-            qemu_mutex_lock_iothread();
+            bql_lock();
             cpu->interrupt_request &= ~CPU_INTERRUPT_NMI;
-            qemu_mutex_unlock_iothread();
+            bql_unlock();
             DPRINTF("injected NMI\n");
             ret = kvm_vcpu_ioctl(cpu, KVM_NMI);
             if (ret < 0) {
@@ -4724,9 +4724,9 @@ void kvm_arch_pre_run(CPUState *cpu, struct kvm_run *run)
             }
         }
         if (cpu->interrupt_request & CPU_INTERRUPT_SMI) {
-            qemu_mutex_lock_iothread();
+            bql_lock();
             cpu->interrupt_request &= ~CPU_INTERRUPT_SMI;
-            qemu_mutex_unlock_iothread();
+            bql_unlock();
             DPRINTF("injected SMI\n");
             ret = kvm_vcpu_ioctl(cpu, KVM_SMI);
             if (ret < 0) {
@@ -4737,7 +4737,7 @@ void kvm_arch_pre_run(CPUState *cpu, struct kvm_run *run)
     }
 
     if (!kvm_pic_in_kernel()) {
-        qemu_mutex_lock_iothread();
+        bql_lock();
     }
 
     /* Force the VCPU out of its inner loop to process any INIT requests
@@ -4790,7 +4790,7 @@ void kvm_arch_pre_run(CPUState *cpu, struct kvm_run *run)
         DPRINTF("setting tpr\n");
         run->cr8 = cpu_get_apic_tpr(x86_cpu->apic_state);
 
-        qemu_mutex_unlock_iothread();
+        bql_unlock();
     }
 }
 
@@ -4838,12 +4838,12 @@ MemTxAttrs kvm_arch_post_run(CPUState *cpu, struct kvm_run *run)
     /* We need to protect the apic state against concurrent accesses from
      * different threads in case the userspace irqchip is used. */
     if (!kvm_irqchip_in_kernel()) {
-        qemu_mutex_lock_iothread();
+        bql_lock();
     }
     cpu_set_apic_tpr(x86_cpu->apic_state, run->cr8);
     cpu_set_apic_base(x86_cpu->apic_state, run->apic_base);
     if (!kvm_irqchip_in_kernel()) {
-        qemu_mutex_unlock_iothread();
+        bql_unlock();
     }
     return cpu_get_mem_attrs(env);
 }
@@ -5277,17 +5277,17 @@ int kvm_arch_handle_exit(CPUState *cs, struct kvm_run *run)
     switch (run->exit_reason) {
     case KVM_EXIT_HLT:
         DPRINTF("handle_hlt\n");
-        qemu_mutex_lock_iothread();
+        bql_lock();
         ret = kvm_handle_halt(cpu);
-        qemu_mutex_unlock_iothread();
+        bql_unlock();
         break;
     case KVM_EXIT_SET_TPR:
         ret = 0;
         break;
     case KVM_EXIT_TPR_ACCESS:
-        qemu_mutex_lock_iothread();
+        bql_lock();
         ret = kvm_handle_tpr_access(cpu);
-        qemu_mutex_unlock_iothread();
+        bql_unlock();
         break;
     case KVM_EXIT_FAIL_ENTRY:
         code = run->fail_entry.hardware_entry_failure_reason;
@@ -5313,9 +5313,9 @@ int kvm_arch_handle_exit(CPUState *cs, struct kvm_run *run)
         break;
     case KVM_EXIT_DEBUG:
         DPRINTF("kvm_exit_debug\n");
-        qemu_mutex_lock_iothread();
+        bql_lock();
         ret = kvm_handle_debug(cpu, &run->debug.arch);
-        qemu_mutex_unlock_iothread();
+        bql_unlock();
         break;
     case KVM_EXIT_HYPERV:
         ret = kvm_hv_handle_exit(cpu, &run->hyperv);
diff --git a/target/i386/kvm/xen-emu.c b/target/i386/kvm/xen-emu.c
index c0631f9cf4..b0ed2e6aeb 100644
--- a/target/i386/kvm/xen-emu.c
+++ b/target/i386/kvm/xen-emu.c
@@ -403,7 +403,7 @@ void kvm_xen_maybe_deassert_callback(CPUState *cs)
 
     /* If the evtchn_upcall_pending flag is cleared, turn the GSI off. */
     if (!vi->evtchn_upcall_pending) {
-        qemu_mutex_lock_iothread();
+        bql_lock();
         /*
          * Check again now we have the lock, because it may have been
          * asserted in the interim. And we don't want to take the lock
@@ -413,7 +413,7 @@ void kvm_xen_maybe_deassert_callback(CPUState *cs)
             X86_CPU(cs)->env.xen_callback_asserted = false;
             xen_evtchn_set_callback_level(0);
         }
-        qemu_mutex_unlock_iothread();
+        bql_unlock();
     }
 }
 
@@ -773,9 +773,9 @@ static bool handle_set_param(struct kvm_xen_exit *exit, X86CPU *cpu,
 
     switch (hp.index) {
     case HVM_PARAM_CALLBACK_IRQ:
-        qemu_mutex_lock_iothread();
+        bql_lock();
         err = xen_evtchn_set_callback_param(hp.value);
-        qemu_mutex_unlock_iothread();
+        bql_unlock();
         xen_set_long_mode(exit->u.hcall.longmode);
         break;
     default:
@@ -1408,7 +1408,7 @@ int kvm_xen_soft_reset(void)
     CPUState *cpu;
     int err;
 
-    assert(qemu_mutex_iothread_locked());
+    assert(bql_locked());
 
     trace_kvm_xen_soft_reset();
 
@@ -1481,9 +1481,9 @@ static int schedop_shutdown(CPUState *cs, uint64_t arg)
         break;
 
     case SHUTDOWN_soft_reset:
-        qemu_mutex_lock_iothread();
+        bql_lock();
         ret = kvm_xen_soft_reset();
-        qemu_mutex_unlock_iothread();
+        bql_unlock();
         break;
 
     default:
diff --git a/target/i386/nvmm/nvmm-accel-ops.c b/target/i386/nvmm/nvmm-accel-ops.c
index 6c46101ac1..f9d5e9a37a 100644
--- a/target/i386/nvmm/nvmm-accel-ops.c
+++ b/target/i386/nvmm/nvmm-accel-ops.c
@@ -25,7 +25,7 @@ static void *qemu_nvmm_cpu_thread_fn(void *arg)
 
     rcu_register_thread();
 
-    qemu_mutex_lock_iothread();
+    bql_lock();
     qemu_thread_get_self(cpu->thread);
     cpu->thread_id = qemu_get_thread_id();
     current_cpu = cpu;
@@ -55,7 +55,7 @@ static void *qemu_nvmm_cpu_thread_fn(void *arg)
 
     nvmm_destroy_vcpu(cpu);
     cpu_thread_signal_destroyed(cpu);
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
     rcu_unregister_thread();
     return NULL;
 }
diff --git a/target/i386/nvmm/nvmm-all.c b/target/i386/nvmm/nvmm-all.c
index 7d752bc5e0..cfdca91123 100644
--- a/target/i386/nvmm/nvmm-all.c
+++ b/target/i386/nvmm/nvmm-all.c
@@ -399,7 +399,7 @@ nvmm_vcpu_pre_run(CPUState *cpu)
     uint8_t tpr;
     int ret;
 
-    qemu_mutex_lock_iothread();
+    bql_lock();
 
     tpr = cpu_get_apic_tpr(x86_cpu->apic_state);
     if (tpr != qcpu->tpr) {
@@ -462,7 +462,7 @@ nvmm_vcpu_pre_run(CPUState *cpu)
         }
     }
 
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
 }
 
 /*
@@ -485,9 +485,9 @@ nvmm_vcpu_post_run(CPUState *cpu, struct nvmm_vcpu_exit *exit)
     tpr = exit->exitstate.cr8;
     if (qcpu->tpr != tpr) {
         qcpu->tpr = tpr;
-        qemu_mutex_lock_iothread();
+        bql_lock();
         cpu_set_apic_tpr(x86_cpu->apic_state, qcpu->tpr);
-        qemu_mutex_unlock_iothread();
+        bql_unlock();
     }
 }
 
@@ -648,7 +648,7 @@ nvmm_handle_halted(struct nvmm_machine *mach, CPUState *cpu,
     CPUX86State *env = cpu_env(cpu);
     int ret = 0;
 
-    qemu_mutex_lock_iothread();
+    bql_lock();
 
     if (!((cpu->interrupt_request & CPU_INTERRUPT_HARD) &&
           (env->eflags & IF_MASK)) &&
@@ -658,7 +658,7 @@ nvmm_handle_halted(struct nvmm_machine *mach, CPUState *cpu,
         ret = 1;
     }
 
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
 
     return ret;
 }
@@ -721,7 +721,7 @@ nvmm_vcpu_loop(CPUState *cpu)
         return 0;
     }
 
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
     cpu_exec_start(cpu);
 
     /*
@@ -806,16 +806,16 @@ nvmm_vcpu_loop(CPUState *cpu)
             error_report("NVMM: Unexpected VM exit code 0x%lx [hw=0x%lx]",
                 exit->reason, exit->u.inv.hwcode);
             nvmm_get_registers(cpu);
-            qemu_mutex_lock_iothread();
+            bql_lock();
             qemu_system_guest_panicked(cpu_get_crash_info(cpu));
-            qemu_mutex_unlock_iothread();
+            bql_unlock();
             ret = -1;
             break;
         }
     } while (ret == 0);
 
     cpu_exec_end(cpu);
-    qemu_mutex_lock_iothread();
+    bql_lock();
 
     qatomic_set(&cpu->exit_request, false);
 
diff --git a/target/i386/tcg/sysemu/fpu_helper.c b/target/i386/tcg/sysemu/fpu_helper.c
index 93506cdd94..e0305ba234 100644
--- a/target/i386/tcg/sysemu/fpu_helper.c
+++ b/target/i386/tcg/sysemu/fpu_helper.c
@@ -32,9 +32,9 @@ void x86_register_ferr_irq(qemu_irq irq)
 void fpu_check_raise_ferr_irq(CPUX86State *env)
 {
     if (ferr_irq && !(env->hflags2 & HF2_IGNNE_MASK)) {
-        qemu_mutex_lock_iothread();
+        bql_lock();
         qemu_irq_raise(ferr_irq);
-        qemu_mutex_unlock_iothread();
+        bql_unlock();
         return;
     }
 }
@@ -49,7 +49,7 @@ void cpu_set_ignne(void)
 {
     CPUX86State *env = &X86_CPU(first_cpu)->env;
 
-    assert(qemu_mutex_iothread_locked());
+    assert(bql_locked());
 
     env->hflags2 |= HF2_IGNNE_MASK;
     /*
diff --git a/target/i386/tcg/sysemu/misc_helper.c b/target/i386/tcg/sysemu/misc_helper.c
index e1528b7f80..1ddfc9fe09 100644
--- a/target/i386/tcg/sysemu/misc_helper.c
+++ b/target/i386/tcg/sysemu/misc_helper.c
@@ -118,9 +118,9 @@ void helper_write_crN(CPUX86State *env, int reg, target_ulong t0)
         break;
     case 8:
         if (!(env->hflags2 & HF2_VINTR_MASK)) {
-            qemu_mutex_lock_iothread();
+            bql_lock();
             cpu_set_apic_tpr(env_archcpu(env)->apic_state, t0);
-            qemu_mutex_unlock_iothread();
+            bql_unlock();
         }
         env->int_ctl = (env->int_ctl & ~V_TPR_MASK) | (t0 & V_TPR_MASK);
 
diff --git a/target/i386/whpx/whpx-accel-ops.c b/target/i386/whpx/whpx-accel-ops.c
index 67cad86720..e783a760a7 100644
--- a/target/i386/whpx/whpx-accel-ops.c
+++ b/target/i386/whpx/whpx-accel-ops.c
@@ -25,7 +25,7 @@ static void *whpx_cpu_thread_fn(void *arg)
 
     rcu_register_thread();
 
-    qemu_mutex_lock_iothread();
+    bql_lock();
     qemu_thread_get_self(cpu->thread);
     cpu->thread_id = qemu_get_thread_id();
     current_cpu = cpu;
@@ -55,7 +55,7 @@ static void *whpx_cpu_thread_fn(void *arg)
 
     whpx_destroy_vcpu(cpu);
     cpu_thread_signal_destroyed(cpu);
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
     rcu_unregister_thread();
     return NULL;
 }
diff --git a/target/i386/whpx/whpx-all.c b/target/i386/whpx/whpx-all.c
index d29ba916a0..a7262654ac 100644
--- a/target/i386/whpx/whpx-all.c
+++ b/target/i386/whpx/whpx-all.c
@@ -1324,7 +1324,7 @@ static int whpx_first_vcpu_starting(CPUState *cpu)
     struct whpx_state *whpx = &whpx_global;
     HRESULT hr;
 
-    g_assert(qemu_mutex_iothread_locked());
+    g_assert(bql_locked());
 
     if (!QTAILQ_EMPTY(&cpu->breakpoints) ||
             (whpx->breakpoints.breakpoints &&
@@ -1442,7 +1442,7 @@ static int whpx_handle_halt(CPUState *cpu)
     CPUX86State *env = cpu_env(cpu);
     int ret = 0;
 
-    qemu_mutex_lock_iothread();
+    bql_lock();
     if (!((cpu->interrupt_request & CPU_INTERRUPT_HARD) &&
           (env->eflags & IF_MASK)) &&
         !(cpu->interrupt_request & CPU_INTERRUPT_NMI)) {
@@ -1450,7 +1450,7 @@ static int whpx_handle_halt(CPUState *cpu)
         cpu->halted = true;
         ret = 1;
     }
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
 
     return ret;
 }
@@ -1472,7 +1472,7 @@ static void whpx_vcpu_pre_run(CPUState *cpu)
     memset(&new_int, 0, sizeof(new_int));
     memset(reg_values, 0, sizeof(reg_values));
 
-    qemu_mutex_lock_iothread();
+    bql_lock();
 
     /* Inject NMI */
     if (!vcpu->interruption_pending &&
@@ -1563,7 +1563,7 @@ static void whpx_vcpu_pre_run(CPUState *cpu)
         reg_count += 1;
     }
 
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
     vcpu->ready_for_pic_interrupt = false;
 
     if (reg_count) {
@@ -1590,9 +1590,9 @@ static void whpx_vcpu_post_run(CPUState *cpu)
     uint64_t tpr = vcpu->exit_ctx.VpContext.Cr8;
     if (vcpu->tpr != tpr) {
         vcpu->tpr = tpr;
-        qemu_mutex_lock_iothread();
+        bql_lock();
         cpu_set_apic_tpr(x86_cpu->apic_state, whpx_cr8_to_apic_tpr(vcpu->tpr));
-        qemu_mutex_unlock_iothread();
+        bql_unlock();
     }
 
     vcpu->interruption_pending =
@@ -1652,7 +1652,7 @@ static int whpx_vcpu_run(CPUState *cpu)
     WhpxStepMode exclusive_step_mode = WHPX_STEP_NONE;
     int ret;
 
-    g_assert(qemu_mutex_iothread_locked());
+    g_assert(bql_locked());
 
     if (whpx->running_cpus++ == 0) {
         /* Insert breakpoints into memory, update exception exit bitmap. */
@@ -1690,7 +1690,7 @@ static int whpx_vcpu_run(CPUState *cpu)
         }
     }
 
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
 
     if (exclusive_step_mode != WHPX_STEP_NONE) {
         start_exclusive();
@@ -2028,9 +2028,9 @@ static int whpx_vcpu_run(CPUState *cpu)
             error_report("WHPX: Unexpected VP exit code %d",
                          vcpu->exit_ctx.ExitReason);
             whpx_get_registers(cpu);
-            qemu_mutex_lock_iothread();
+            bql_lock();
             qemu_system_guest_panicked(cpu_get_crash_info(cpu));
-            qemu_mutex_unlock_iothread();
+            bql_unlock();
             break;
         }
 
@@ -2055,7 +2055,7 @@ static int whpx_vcpu_run(CPUState *cpu)
         cpu_exec_end(cpu);
     }
 
-    qemu_mutex_lock_iothread();
+    bql_lock();
     current_cpu = cpu;
 
     if (--whpx->running_cpus == 0) {
diff --git a/target/loongarch/csr_helper.c b/target/loongarch/csr_helper.c
index 55341551a5..15f94caefa 100644
--- a/target/loongarch/csr_helper.c
+++ b/target/loongarch/csr_helper.c
@@ -89,9 +89,9 @@ target_ulong helper_csrwr_ticlr(CPULoongArchState *env, target_ulong val)
     int64_t old_v = 0;
 
     if (val & 0x1) {
-        qemu_mutex_lock_iothread();
+        bql_lock();
         loongarch_cpu_set_irq(cpu, IRQ_TIMER, 0);
-        qemu_mutex_unlock_iothread();
+        bql_unlock();
     }
     return old_v;
 }
diff --git a/target/mips/kvm.c b/target/mips/kvm.c
index e22e24ed97..15d0cf9adb 100644
--- a/target/mips/kvm.c
+++ b/target/mips/kvm.c
@@ -138,7 +138,7 @@ void kvm_arch_pre_run(CPUState *cs, struct kvm_run *run)
     int r;
     struct kvm_mips_interrupt intr;
 
-    qemu_mutex_lock_iothread();
+    bql_lock();
 
     if ((cs->interrupt_request & CPU_INTERRUPT_HARD) &&
             cpu_mips_io_interrupts_pending(cpu)) {
@@ -151,7 +151,7 @@ void kvm_arch_pre_run(CPUState *cs, struct kvm_run *run)
         }
     }
 
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
 }
 
 MemTxAttrs kvm_arch_post_run(CPUState *cs, struct kvm_run *run)
diff --git a/target/mips/tcg/sysemu/cp0_helper.c b/target/mips/tcg/sysemu/cp0_helper.c
index d349548743..cc545aed9c 100644
--- a/target/mips/tcg/sysemu/cp0_helper.c
+++ b/target/mips/tcg/sysemu/cp0_helper.c
@@ -59,9 +59,9 @@ static inline void mips_vpe_wake(MIPSCPU *c)
      * because there might be other conditions that state that c should
      * be sleeping.
      */
-    qemu_mutex_lock_iothread();
+    bql_lock();
     cpu_interrupt(CPU(c), CPU_INTERRUPT_WAKE);
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
 }
 
 static inline void mips_vpe_sleep(MIPSCPU *cpu)
diff --git a/target/openrisc/sys_helper.c b/target/openrisc/sys_helper.c
index 782a5751b7..77567afba4 100644
--- a/target/openrisc/sys_helper.c
+++ b/target/openrisc/sys_helper.c
@@ -160,20 +160,20 @@ void HELPER(mtspr)(CPUOpenRISCState *env, target_ulong spr, target_ulong rb)
         break;
     case TO_SPR(9, 0):  /* PICMR */
         env->picmr = rb;
-        qemu_mutex_lock_iothread();
+        bql_lock();
         if (env->picsr & env->picmr) {
             cpu_interrupt(cs, CPU_INTERRUPT_HARD);
         } else {
             cpu_reset_interrupt(cs, CPU_INTERRUPT_HARD);
         }
-        qemu_mutex_unlock_iothread();
+        bql_unlock();
         break;
     case TO_SPR(9, 2):  /* PICSR */
         env->picsr &= ~rb;
         break;
     case TO_SPR(10, 0): /* TTMR */
         {
-            qemu_mutex_lock_iothread();
+            bql_lock();
             if ((env->ttmr & TTMR_M) ^ (rb & TTMR_M)) {
                 switch (rb & TTMR_M) {
                 case TIMER_NONE:
@@ -198,15 +198,15 @@ void HELPER(mtspr)(CPUOpenRISCState *env, target_ulong spr, target_ulong rb)
                 cs->interrupt_request &= ~CPU_INTERRUPT_TIMER;
             }
             cpu_openrisc_timer_update(cpu);
-            qemu_mutex_unlock_iothread();
+            bql_unlock();
         }
         break;
 
     case TO_SPR(10, 1): /* TTCR */
-        qemu_mutex_lock_iothread();
+        bql_lock();
         cpu_openrisc_count_set(cpu, rb);
         cpu_openrisc_timer_update(cpu);
-        qemu_mutex_unlock_iothread();
+        bql_unlock();
         break;
     }
 #endif
@@ -347,9 +347,9 @@ target_ulong HELPER(mfspr)(CPUOpenRISCState *env, target_ulong rd,
         return env->ttmr;
 
     case TO_SPR(10, 1): /* TTCR */
-        qemu_mutex_lock_iothread();
+        bql_lock();
         cpu_openrisc_count_update(cpu);
-        qemu_mutex_unlock_iothread();
+        bql_unlock();
         return cpu_openrisc_count_get(cpu);
     }
 #endif
diff --git a/target/ppc/excp_helper.c b/target/ppc/excp_helper.c
index a42743a3e0..8a2bfb5aa2 100644
--- a/target/ppc/excp_helper.c
+++ b/target/ppc/excp_helper.c
@@ -3056,7 +3056,7 @@ void helper_msgsnd(target_ulong rb)
         return;
     }
 
-    qemu_mutex_lock_iothread();
+    bql_lock();
     CPU_FOREACH(cs) {
         PowerPCCPU *cpu = POWERPC_CPU(cs);
         CPUPPCState *cenv = &cpu->env;
@@ -3065,7 +3065,7 @@ void helper_msgsnd(target_ulong rb)
             ppc_set_irq(cpu, irq, 1);
         }
     }
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
 }
 
 /* Server Processor Control */
@@ -3093,7 +3093,7 @@ static void book3s_msgsnd_common(int pir, int irq)
 {
     CPUState *cs;
 
-    qemu_mutex_lock_iothread();
+    bql_lock();
     CPU_FOREACH(cs) {
         PowerPCCPU *cpu = POWERPC_CPU(cs);
         CPUPPCState *cenv = &cpu->env;
@@ -3103,7 +3103,7 @@ static void book3s_msgsnd_common(int pir, int irq)
             ppc_set_irq(cpu, irq, 1);
         }
     }
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
 }
 
 void helper_book3s_msgsnd(target_ulong rb)
@@ -3157,14 +3157,14 @@ void helper_book3s_msgsndp(CPUPPCState *env, target_ulong rb)
     }
 
     /* Does iothread need to be locked for walking CPU list? */
-    qemu_mutex_lock_iothread();
+    bql_lock();
     THREAD_SIBLING_FOREACH(cs, ccs) {
         PowerPCCPU *ccpu = POWERPC_CPU(ccs);
         uint32_t thread_id = ppc_cpu_tir(ccpu);
 
         if (ttir == thread_id) {
             ppc_set_irq(ccpu, PPC_INTERRUPT_DOORBELL, 1);
-            qemu_mutex_unlock_iothread();
+            bql_unlock();
             return;
         }
     }
diff --git a/target/ppc/kvm.c b/target/ppc/kvm.c
index 9b1abe2fc4..26fa9d0575 100644
--- a/target/ppc/kvm.c
+++ b/target/ppc/kvm.c
@@ -1656,7 +1656,7 @@ int kvm_arch_handle_exit(CPUState *cs, struct kvm_run *run)
     CPUPPCState *env = &cpu->env;
     int ret;
 
-    qemu_mutex_lock_iothread();
+    bql_lock();
 
     switch (run->exit_reason) {
     case KVM_EXIT_DCR:
@@ -1715,7 +1715,7 @@ int kvm_arch_handle_exit(CPUState *cs, struct kvm_run *run)
         break;
     }
 
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
     return ret;
 }
 
diff --git a/target/ppc/misc_helper.c b/target/ppc/misc_helper.c
index a05bdf78c9..a9d41d2802 100644
--- a/target/ppc/misc_helper.c
+++ b/target/ppc/misc_helper.c
@@ -238,7 +238,7 @@ target_ulong helper_load_dpdes(CPUPPCState *env)
         return dpdes;
     }
 
-    qemu_mutex_lock_iothread();
+    bql_lock();
     THREAD_SIBLING_FOREACH(cs, ccs) {
         PowerPCCPU *ccpu = POWERPC_CPU(ccs);
         CPUPPCState *cenv = &ccpu->env;
@@ -248,7 +248,7 @@ target_ulong helper_load_dpdes(CPUPPCState *env)
             dpdes |= (0x1 << thread_id);
         }
     }
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
 
     return dpdes;
 }
@@ -278,14 +278,14 @@ void helper_store_dpdes(CPUPPCState *env, target_ulong val)
     }
 
     /* Does iothread need to be locked for walking CPU list? */
-    qemu_mutex_lock_iothread();
+    bql_lock();
     THREAD_SIBLING_FOREACH(cs, ccs) {
         PowerPCCPU *ccpu = POWERPC_CPU(ccs);
         uint32_t thread_id = ppc_cpu_tir(ccpu);
 
         ppc_set_irq(cpu, PPC_INTERRUPT_DOORBELL, val & (0x1 << thread_id));
     }
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
 }
 #endif /* defined(TARGET_PPC64) */
 
diff --git a/target/ppc/timebase_helper.c b/target/ppc/timebase_helper.c
index 08a6b47ee0..f618ed2922 100644
--- a/target/ppc/timebase_helper.c
+++ b/target/ppc/timebase_helper.c
@@ -173,9 +173,9 @@ target_ulong helper_load_dcr(CPUPPCState *env, target_ulong dcrn)
     } else {
         int ret;
 
-        qemu_mutex_lock_iothread();
+        bql_lock();
         ret = ppc_dcr_read(env->dcr_env, (uint32_t)dcrn, &val);
-        qemu_mutex_unlock_iothread();
+        bql_unlock();
         if (unlikely(ret != 0)) {
             qemu_log_mask(LOG_GUEST_ERROR, "DCR read error %d %03x\n",
                           (uint32_t)dcrn, (uint32_t)dcrn);
@@ -196,9 +196,9 @@ void helper_store_dcr(CPUPPCState *env, target_ulong dcrn, target_ulong val)
                                POWERPC_EXCP_INVAL_INVAL, GETPC());
     } else {
         int ret;
-        qemu_mutex_lock_iothread();
+        bql_lock();
         ret = ppc_dcr_write(env->dcr_env, (uint32_t)dcrn, (uint32_t)val);
-        qemu_mutex_unlock_iothread();
+        bql_unlock();
         if (unlikely(ret != 0)) {
             qemu_log_mask(LOG_GUEST_ERROR, "DCR write error %d %03x\n",
                           (uint32_t)dcrn, (uint32_t)dcrn);
diff --git a/target/s390x/kvm/kvm.c b/target/s390x/kvm/kvm.c
index 33ab3551f4..888d6c1a1c 100644
--- a/target/s390x/kvm/kvm.c
+++ b/target/s390x/kvm/kvm.c
@@ -1923,7 +1923,7 @@ int kvm_arch_handle_exit(CPUState *cs, struct kvm_run *run)
     S390CPU *cpu = S390_CPU(cs);
     int ret = 0;
 
-    qemu_mutex_lock_iothread();
+    bql_lock();
 
     kvm_cpu_synchronize_state(cs);
 
@@ -1947,7 +1947,7 @@ int kvm_arch_handle_exit(CPUState *cs, struct kvm_run *run)
             fprintf(stderr, "Unknown KVM exit: %d\n", run->exit_reason);
             break;
     }
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
 
     if (ret == 0) {
         ret = EXCP_INTERRUPT;
diff --git a/target/s390x/tcg/misc_helper.c b/target/s390x/tcg/misc_helper.c
index 6aa7907438..89b5268fd4 100644
--- a/target/s390x/tcg/misc_helper.c
+++ b/target/s390x/tcg/misc_helper.c
@@ -101,9 +101,9 @@ uint64_t HELPER(stck)(CPUS390XState *env)
 /* SCLP service call */
 uint32_t HELPER(servc)(CPUS390XState *env, uint64_t r1, uint64_t r2)
 {
-    qemu_mutex_lock_iothread();
+    bql_lock();
     int r = sclp_service_call(env_archcpu(env), r1, r2);
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
     if (r < 0) {
         tcg_s390_program_interrupt(env, -r, GETPC());
     }
@@ -117,9 +117,9 @@ void HELPER(diag)(CPUS390XState *env, uint32_t r1, uint32_t r3, uint32_t num)
     switch (num) {
     case 0x500:
         /* KVM hypercall */
-        qemu_mutex_lock_iothread();
+        bql_lock();
         r = s390_virtio_hypercall(env);
-        qemu_mutex_unlock_iothread();
+        bql_unlock();
         break;
     case 0x44:
         /* yield */
@@ -127,9 +127,9 @@ void HELPER(diag)(CPUS390XState *env, uint32_t r1, uint32_t r3, uint32_t num)
         break;
     case 0x308:
         /* ipl */
-        qemu_mutex_lock_iothread();
+        bql_lock();
         handle_diag_308(env, r1, r3, GETPC());
-        qemu_mutex_unlock_iothread();
+        bql_unlock();
         r = 0;
         break;
     case 0x288:
@@ -185,7 +185,7 @@ static void update_ckc_timer(CPUS390XState *env)
 
     /* stop the timer and remove pending CKC IRQs */
     timer_del(env->tod_timer);
-    g_assert(qemu_mutex_iothread_locked());
+    g_assert(bql_locked());
     env->pending_int &= ~INTERRUPT_EXT_CLOCK_COMPARATOR;
 
     /* the tod has to exceed the ckc, this can never happen if ckc is all 1's */
@@ -207,9 +207,9 @@ void HELPER(sckc)(CPUS390XState *env, uint64_t ckc)
 {
     env->ckc = ckc;
 
-    qemu_mutex_lock_iothread();
+    bql_lock();
     update_ckc_timer(env);
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
 }
 
 void tcg_s390_tod_updated(CPUState *cs, run_on_cpu_data opaque)
@@ -229,9 +229,9 @@ uint32_t HELPER(sck)(CPUS390XState *env, uint64_t tod_low)
         .low = tod_low,
     };
 
-    qemu_mutex_lock_iothread();
+    bql_lock();
     tdc->set(td, &tod, &error_abort);
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
     return 0;
 }
 
@@ -421,9 +421,9 @@ uint32_t HELPER(sigp)(CPUS390XState *env, uint64_t order_code, uint32_t r1,
     int cc;
 
     /* TODO: needed to inject interrupts  - push further down */
-    qemu_mutex_lock_iothread();
+    bql_lock();
     cc = handle_sigp(env, order_code & SIGP_ORDER_MASK, r1, r3);
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
 
     return cc;
 }
@@ -433,92 +433,92 @@ uint32_t HELPER(sigp)(CPUS390XState *env, uint64_t order_code, uint32_t r1,
 void HELPER(xsch)(CPUS390XState *env, uint64_t r1)
 {
     S390CPU *cpu = env_archcpu(env);
-    qemu_mutex_lock_iothread();
+    bql_lock();
     ioinst_handle_xsch(cpu, r1, GETPC());
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
 }
 
 void HELPER(csch)(CPUS390XState *env, uint64_t r1)
 {
     S390CPU *cpu = env_archcpu(env);
-    qemu_mutex_lock_iothread();
+    bql_lock();
     ioinst_handle_csch(cpu, r1, GETPC());
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
 }
 
 void HELPER(hsch)(CPUS390XState *env, uint64_t r1)
 {
     S390CPU *cpu = env_archcpu(env);
-    qemu_mutex_lock_iothread();
+    bql_lock();
     ioinst_handle_hsch(cpu, r1, GETPC());
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
 }
 
 void HELPER(msch)(CPUS390XState *env, uint64_t r1, uint64_t inst)
 {
     S390CPU *cpu = env_archcpu(env);
-    qemu_mutex_lock_iothread();
+    bql_lock();
     ioinst_handle_msch(cpu, r1, inst >> 16, GETPC());
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
 }
 
 void HELPER(rchp)(CPUS390XState *env, uint64_t r1)
 {
     S390CPU *cpu = env_archcpu(env);
-    qemu_mutex_lock_iothread();
+    bql_lock();
     ioinst_handle_rchp(cpu, r1, GETPC());
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
 }
 
 void HELPER(rsch)(CPUS390XState *env, uint64_t r1)
 {
     S390CPU *cpu = env_archcpu(env);
-    qemu_mutex_lock_iothread();
+    bql_lock();
     ioinst_handle_rsch(cpu, r1, GETPC());
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
 }
 
 void HELPER(sal)(CPUS390XState *env, uint64_t r1)
 {
     S390CPU *cpu = env_archcpu(env);
 
-    qemu_mutex_lock_iothread();
+    bql_lock();
     ioinst_handle_sal(cpu, r1, GETPC());
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
 }
 
 void HELPER(schm)(CPUS390XState *env, uint64_t r1, uint64_t r2, uint64_t inst)
 {
     S390CPU *cpu = env_archcpu(env);
 
-    qemu_mutex_lock_iothread();
+    bql_lock();
     ioinst_handle_schm(cpu, r1, r2, inst >> 16, GETPC());
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
 }
 
 void HELPER(ssch)(CPUS390XState *env, uint64_t r1, uint64_t inst)
 {
     S390CPU *cpu = env_archcpu(env);
-    qemu_mutex_lock_iothread();
+    bql_lock();
     ioinst_handle_ssch(cpu, r1, inst >> 16, GETPC());
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
 }
 
 void HELPER(stcrw)(CPUS390XState *env, uint64_t inst)
 {
     S390CPU *cpu = env_archcpu(env);
 
-    qemu_mutex_lock_iothread();
+    bql_lock();
     ioinst_handle_stcrw(cpu, inst >> 16, GETPC());
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
 }
 
 void HELPER(stsch)(CPUS390XState *env, uint64_t r1, uint64_t inst)
 {
     S390CPU *cpu = env_archcpu(env);
-    qemu_mutex_lock_iothread();
+    bql_lock();
     ioinst_handle_stsch(cpu, r1, inst >> 16, GETPC());
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
 }
 
 uint32_t HELPER(tpi)(CPUS390XState *env, uint64_t addr)
@@ -533,10 +533,10 @@ uint32_t HELPER(tpi)(CPUS390XState *env, uint64_t addr)
         tcg_s390_program_interrupt(env, PGM_SPECIFICATION, ra);
     }
 
-    qemu_mutex_lock_iothread();
+    bql_lock();
     io = qemu_s390_flic_dequeue_io(flic, env->cregs[6]);
     if (!io) {
-        qemu_mutex_unlock_iothread();
+        bql_unlock();
         return 0;
     }
 
@@ -554,7 +554,7 @@ uint32_t HELPER(tpi)(CPUS390XState *env, uint64_t addr)
         if (s390_cpu_virt_mem_write(cpu, addr, 0, &intc, sizeof(intc))) {
             /* writing failed, reinject and properly clean up */
             s390_io_interrupt(io->id, io->nr, io->parm, io->word);
-            qemu_mutex_unlock_iothread();
+            bql_unlock();
             g_free(io);
             s390_cpu_virt_mem_handle_exc(cpu, ra);
             return 0;
@@ -570,24 +570,24 @@ uint32_t HELPER(tpi)(CPUS390XState *env, uint64_t addr)
     }
 
     g_free(io);
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
     return 1;
 }
 
 void HELPER(tsch)(CPUS390XState *env, uint64_t r1, uint64_t inst)
 {
     S390CPU *cpu = env_archcpu(env);
-    qemu_mutex_lock_iothread();
+    bql_lock();
     ioinst_handle_tsch(cpu, r1, inst >> 16, GETPC());
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
 }
 
 void HELPER(chsc)(CPUS390XState *env, uint64_t inst)
 {
     S390CPU *cpu = env_archcpu(env);
-    qemu_mutex_lock_iothread();
+    bql_lock();
     ioinst_handle_chsc(cpu, inst >> 16, GETPC());
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
 }
 #endif
 
@@ -726,27 +726,27 @@ void HELPER(clp)(CPUS390XState *env, uint32_t r2)
 {
     S390CPU *cpu = env_archcpu(env);
 
-    qemu_mutex_lock_iothread();
+    bql_lock();
     clp_service_call(cpu, r2, GETPC());
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
 }
 
 void HELPER(pcilg)(CPUS390XState *env, uint32_t r1, uint32_t r2)
 {
     S390CPU *cpu = env_archcpu(env);
 
-    qemu_mutex_lock_iothread();
+    bql_lock();
     pcilg_service_call(cpu, r1, r2, GETPC());
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
 }
 
 void HELPER(pcistg)(CPUS390XState *env, uint32_t r1, uint32_t r2)
 {
     S390CPU *cpu = env_archcpu(env);
 
-    qemu_mutex_lock_iothread();
+    bql_lock();
     pcistg_service_call(cpu, r1, r2, GETPC());
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
 }
 
 void HELPER(stpcifc)(CPUS390XState *env, uint32_t r1, uint64_t fiba,
@@ -754,9 +754,9 @@ void HELPER(stpcifc)(CPUS390XState *env, uint32_t r1, uint64_t fiba,
 {
     S390CPU *cpu = env_archcpu(env);
 
-    qemu_mutex_lock_iothread();
+    bql_lock();
     stpcifc_service_call(cpu, r1, fiba, ar, GETPC());
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
 }
 
 void HELPER(sic)(CPUS390XState *env, uint64_t r1, uint64_t r3)
@@ -764,9 +764,9 @@ void HELPER(sic)(CPUS390XState *env, uint64_t r1, uint64_t r3)
     S390CPU *cpu = env_archcpu(env);
     int r;
 
-    qemu_mutex_lock_iothread();
+    bql_lock();
     r = css_do_sic(cpu, (r3 >> 27) & 0x7, r1 & 0xffff);
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
     /* css_do_sic() may actually return a PGM_xxx value to inject */
     if (r) {
         tcg_s390_program_interrupt(env, -r, GETPC());
@@ -777,9 +777,9 @@ void HELPER(rpcit)(CPUS390XState *env, uint32_t r1, uint32_t r2)
 {
     S390CPU *cpu = env_archcpu(env);
 
-    qemu_mutex_lock_iothread();
+    bql_lock();
     rpcit_service_call(cpu, r1, r2, GETPC());
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
 }
 
 void HELPER(pcistb)(CPUS390XState *env, uint32_t r1, uint32_t r3,
@@ -787,9 +787,9 @@ void HELPER(pcistb)(CPUS390XState *env, uint32_t r1, uint32_t r3,
 {
     S390CPU *cpu = env_archcpu(env);
 
-    qemu_mutex_lock_iothread();
+    bql_lock();
     pcistb_service_call(cpu, r1, r3, gaddr, ar, GETPC());
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
 }
 
 void HELPER(mpcifc)(CPUS390XState *env, uint32_t r1, uint64_t fiba,
@@ -797,8 +797,8 @@ void HELPER(mpcifc)(CPUS390XState *env, uint32_t r1, uint64_t fiba,
 {
     S390CPU *cpu = env_archcpu(env);
 
-    qemu_mutex_lock_iothread();
+    bql_lock();
     mpcifc_service_call(cpu, r1, fiba, ar, GETPC());
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
 }
 #endif
diff --git a/target/sparc/int32_helper.c b/target/sparc/int32_helper.c
index 1563613582..49a9149263 100644
--- a/target/sparc/int32_helper.c
+++ b/target/sparc/int32_helper.c
@@ -70,7 +70,7 @@ void cpu_check_irqs(CPUSPARCState *env)
     CPUState *cs;
 
     /* We should be holding the BQL before we mess with IRQs */
-    g_assert(qemu_mutex_iothread_locked());
+    g_assert(bql_locked());
 
     if (env->pil_in && (env->interrupt_index == 0 ||
                         (env->interrupt_index & ~15) == TT_EXTINT)) {
diff --git a/target/sparc/int64_helper.c b/target/sparc/int64_helper.c
index 1b4155f5f3..27df9dba89 100644
--- a/target/sparc/int64_helper.c
+++ b/target/sparc/int64_helper.c
@@ -69,7 +69,7 @@ void cpu_check_irqs(CPUSPARCState *env)
                   (env->softint & ~(SOFTINT_TIMER | SOFTINT_STIMER));
 
     /* We should be holding the BQL before we mess with IRQs */
-    g_assert(qemu_mutex_iothread_locked());
+    g_assert(bql_locked());
 
     /* TT_IVEC has a higher priority (16) than TT_EXTINT (31..17) */
     if (env->ivec_status & 0x20) {
@@ -267,9 +267,9 @@ static bool do_modify_softint(CPUSPARCState *env, uint32_t value)
         env->softint = value;
 #if !defined(CONFIG_USER_ONLY)
         if (cpu_interrupts_enabled(env)) {
-            qemu_mutex_lock_iothread();
+            bql_lock();
             cpu_check_irqs(env);
-            qemu_mutex_unlock_iothread();
+            bql_unlock();
         }
 #endif
         return true;
diff --git a/target/sparc/win_helper.c b/target/sparc/win_helper.c
index 16d1c70fe7..b53fc9ce94 100644
--- a/target/sparc/win_helper.c
+++ b/target/sparc/win_helper.c
@@ -179,9 +179,9 @@ void helper_wrpsr(CPUSPARCState *env, target_ulong new_psr)
         cpu_raise_exception_ra(env, TT_ILL_INSN, GETPC());
     } else {
         /* cpu_put_psr may trigger interrupts, hence BQL */
-        qemu_mutex_lock_iothread();
+        bql_lock();
         cpu_put_psr(env, new_psr);
-        qemu_mutex_unlock_iothread();
+        bql_unlock();
     }
 }
 
@@ -407,9 +407,9 @@ void helper_wrpstate(CPUSPARCState *env, target_ulong new_state)
 
 #if !defined(CONFIG_USER_ONLY)
     if (cpu_interrupts_enabled(env)) {
-        qemu_mutex_lock_iothread();
+        bql_lock();
         cpu_check_irqs(env);
-        qemu_mutex_unlock_iothread();
+        bql_unlock();
     }
 #endif
 }
@@ -422,9 +422,9 @@ void helper_wrpil(CPUSPARCState *env, target_ulong new_pil)
     env->psrpil = new_pil;
 
     if (cpu_interrupts_enabled(env)) {
-        qemu_mutex_lock_iothread();
+        bql_lock();
         cpu_check_irqs(env);
-        qemu_mutex_unlock_iothread();
+        bql_unlock();
     }
 #endif
 }
@@ -451,9 +451,9 @@ void helper_done(CPUSPARCState *env)
 
 #if !defined(CONFIG_USER_ONLY)
     if (cpu_interrupts_enabled(env)) {
-        qemu_mutex_lock_iothread();
+        bql_lock();
         cpu_check_irqs(env);
-        qemu_mutex_unlock_iothread();
+        bql_unlock();
     }
 #endif
 }
@@ -480,9 +480,9 @@ void helper_retry(CPUSPARCState *env)
 
 #if !defined(CONFIG_USER_ONLY)
     if (cpu_interrupts_enabled(env)) {
-        qemu_mutex_lock_iothread();
+        bql_lock();
         cpu_check_irqs(env);
-        qemu_mutex_unlock_iothread();
+        bql_unlock();
     }
 #endif
 }
diff --git a/target/xtensa/exc_helper.c b/target/xtensa/exc_helper.c
index 91354884f7..168419a505 100644
--- a/target/xtensa/exc_helper.c
+++ b/target/xtensa/exc_helper.c
@@ -105,9 +105,9 @@ void HELPER(waiti)(CPUXtensaState *env, uint32_t pc, uint32_t intlevel)
     env->sregs[PS] = (env->sregs[PS] & ~PS_INTLEVEL) |
         (intlevel << PS_INTLEVEL_SHIFT);
 
-    qemu_mutex_lock_iothread();
+    bql_lock();
     check_interrupts(env);
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
 
     if (env->pending_irq_level) {
         cpu_loop_exit(cpu);
@@ -120,9 +120,9 @@ void HELPER(waiti)(CPUXtensaState *env, uint32_t pc, uint32_t intlevel)
 
 void HELPER(check_interrupts)(CPUXtensaState *env)
 {
-    qemu_mutex_lock_iothread();
+    bql_lock();
     check_interrupts(env);
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
 }
 
 void HELPER(intset)(CPUXtensaState *env, uint32_t v)
diff --git a/ui/spice-core.c b/ui/spice-core.c
index db21db2c94..b6ee495a8f 100644
--- a/ui/spice-core.c
+++ b/ui/spice-core.c
@@ -222,7 +222,7 @@ static void channel_event(int event, SpiceChannelEventInfo *info)
      */
     bool need_lock = !qemu_thread_is_self(&me);
     if (need_lock) {
-        qemu_mutex_lock_iothread();
+        bql_lock();
     }
 
     if (info->flags & SPICE_CHANNEL_EVENT_FLAG_ADDR_EXT) {
@@ -260,7 +260,7 @@ static void channel_event(int event, SpiceChannelEventInfo *info)
     }
 
     if (need_lock) {
-        qemu_mutex_unlock_iothread();
+        bql_unlock();
     }
 
     qapi_free_SpiceServerInfo(server);
diff --git a/util/async.c b/util/async.c
index 460529057c..36a8e76ab0 100644
--- a/util/async.c
+++ b/util/async.c
@@ -727,7 +727,7 @@ AioContext *qemu_get_current_aio_context(void)
     if (ctx) {
         return ctx;
     }
-    if (qemu_mutex_iothread_locked()) {
+    if (bql_locked()) {
         /* Possibly in a vCPU thread.  */
         return qemu_get_aio_context();
     }
diff --git a/util/main-loop.c b/util/main-loop.c
index 797b640c41..bfbff4f246 100644
--- a/util/main-loop.c
+++ b/util/main-loop.c
@@ -302,13 +302,13 @@ static int os_host_main_loop_wait(int64_t timeout)
 
     glib_pollfds_fill(&timeout);
 
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
     replay_mutex_unlock();
 
     ret = qemu_poll_ns((GPollFD *)gpollfds->data, gpollfds->len, timeout);
 
     replay_mutex_lock();
-    qemu_mutex_lock_iothread();
+    bql_lock();
 
     glib_pollfds_poll();
 
@@ -517,7 +517,7 @@ static int os_host_main_loop_wait(int64_t timeout)
 
     poll_timeout_ns = qemu_soonest_timeout(poll_timeout_ns, timeout);
 
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
 
     replay_mutex_unlock();
 
@@ -525,7 +525,7 @@ static int os_host_main_loop_wait(int64_t timeout)
 
     replay_mutex_lock();
 
-    qemu_mutex_lock_iothread();
+    bql_lock();
     if (g_poll_ret > 0) {
         for (i = 0; i < w->num; i++) {
             w->revents[i] = poll_fds[n_poll_fds + i].revents;
diff --git a/util/qsp.c b/util/qsp.c
index 2fe3764906..6b783e2e7f 100644
--- a/util/qsp.c
+++ b/util/qsp.c
@@ -124,7 +124,7 @@ static const char * const qsp_typenames[] = {
     [QSP_CONDVAR]   = "condvar",
 };
 
-QemuMutexLockFunc qemu_bql_mutex_lock_func = qemu_mutex_lock_impl;
+QemuMutexLockFunc bql_mutex_lock_func = qemu_mutex_lock_impl;
 QemuMutexLockFunc qemu_mutex_lock_func = qemu_mutex_lock_impl;
 QemuMutexTrylockFunc qemu_mutex_trylock_func = qemu_mutex_trylock_impl;
 QemuRecMutexLockFunc qemu_rec_mutex_lock_func = qemu_rec_mutex_lock_impl;
@@ -439,7 +439,7 @@ void qsp_enable(void)
 {
     qatomic_set(&qemu_mutex_lock_func, qsp_mutex_lock);
     qatomic_set(&qemu_mutex_trylock_func, qsp_mutex_trylock);
-    qatomic_set(&qemu_bql_mutex_lock_func, qsp_bql_mutex_lock);
+    qatomic_set(&bql_mutex_lock_func, qsp_bql_mutex_lock);
     qatomic_set(&qemu_rec_mutex_lock_func, qsp_rec_mutex_lock);
     qatomic_set(&qemu_rec_mutex_trylock_func, qsp_rec_mutex_trylock);
     qatomic_set(&qemu_cond_wait_func, qsp_cond_wait);
@@ -450,7 +450,7 @@ void qsp_disable(void)
 {
     qatomic_set(&qemu_mutex_lock_func, qemu_mutex_lock_impl);
     qatomic_set(&qemu_mutex_trylock_func, qemu_mutex_trylock_impl);
-    qatomic_set(&qemu_bql_mutex_lock_func, qemu_mutex_lock_impl);
+    qatomic_set(&bql_mutex_lock_func, qemu_mutex_lock_impl);
     qatomic_set(&qemu_rec_mutex_lock_func, qemu_rec_mutex_lock_impl);
     qatomic_set(&qemu_rec_mutex_trylock_func, qemu_rec_mutex_trylock_impl);
     qatomic_set(&qemu_cond_wait_func, qemu_cond_wait_impl);
diff --git a/util/rcu.c b/util/rcu.c
index e587bcc483..bb7f633b5c 100644
--- a/util/rcu.c
+++ b/util/rcu.c
@@ -283,24 +283,24 @@ static void *call_rcu_thread(void *opaque)
 
         qatomic_sub(&rcu_call_count, n);
         synchronize_rcu();
-        qemu_mutex_lock_iothread();
+        bql_lock();
         while (n > 0) {
             node = try_dequeue();
             while (!node) {
-                qemu_mutex_unlock_iothread();
+                bql_unlock();
                 qemu_event_reset(&rcu_call_ready_event);
                 node = try_dequeue();
                 if (!node) {
                     qemu_event_wait(&rcu_call_ready_event);
                     node = try_dequeue();
                 }
-                qemu_mutex_lock_iothread();
+                bql_lock();
             }
 
             n--;
             node->func(node);
         }
-        qemu_mutex_unlock_iothread();
+        bql_unlock();
     }
     abort();
 }
@@ -337,13 +337,13 @@ static void drain_rcu_callback(struct rcu_head *node)
 void drain_call_rcu(void)
 {
     struct rcu_drain rcu_drain;
-    bool locked = qemu_mutex_iothread_locked();
+    bool locked = bql_locked();
 
     memset(&rcu_drain, 0, sizeof(struct rcu_drain));
     qemu_event_init(&rcu_drain.drain_complete_event, false);
 
     if (locked) {
-        qemu_mutex_unlock_iothread();
+        bql_unlock();
     }
 
 
@@ -365,7 +365,7 @@ void drain_call_rcu(void)
     qatomic_dec(&in_drain_call_rcu);
 
     if (locked) {
-        qemu_mutex_lock_iothread();
+        bql_lock();
     }
 
 }
diff --git a/audio/coreaudio.m b/audio/coreaudio.m
index 8cd129a27d..9d2db9883c 100644
--- a/audio/coreaudio.m
+++ b/audio/coreaudio.m
@@ -547,7 +547,7 @@ static OSStatus handle_voice_change(
 {
     coreaudioVoiceOut *core = in_client_data;
 
-    qemu_mutex_lock_iothread();
+    bql_lock();
 
     if (core->outputDeviceID) {
         fini_out_device(core);
@@ -557,7 +557,7 @@ static OSStatus handle_voice_change(
         update_device_playback_state(core);
     }
 
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
     return 0;
 }
 
diff --git a/memory_ldst.c.inc b/memory_ldst.c.inc
index 84b868f294..0e6f3940a9 100644
--- a/memory_ldst.c.inc
+++ b/memory_ldst.c.inc
@@ -61,7 +61,7 @@ static inline uint32_t glue(address_space_ldl_internal, SUFFIX)(ARG1_DECL,
         *result = r;
     }
     if (release_lock) {
-        qemu_mutex_unlock_iothread();
+        bql_unlock();
     }
     RCU_READ_UNLOCK();
     return val;
@@ -130,7 +130,7 @@ static inline uint64_t glue(address_space_ldq_internal, SUFFIX)(ARG1_DECL,
         *result = r;
     }
     if (release_lock) {
-        qemu_mutex_unlock_iothread();
+        bql_unlock();
     }
     RCU_READ_UNLOCK();
     return val;
@@ -186,7 +186,7 @@ uint8_t glue(address_space_ldub, SUFFIX)(ARG1_DECL,
         *result = r;
     }
     if (release_lock) {
-        qemu_mutex_unlock_iothread();
+        bql_unlock();
     }
     RCU_READ_UNLOCK();
     return val;
@@ -234,7 +234,7 @@ static inline uint16_t glue(address_space_lduw_internal, SUFFIX)(ARG1_DECL,
         *result = r;
     }
     if (release_lock) {
-        qemu_mutex_unlock_iothread();
+        bql_unlock();
     }
     RCU_READ_UNLOCK();
     return val;
@@ -295,7 +295,7 @@ void glue(address_space_stl_notdirty, SUFFIX)(ARG1_DECL,
         *result = r;
     }
     if (release_lock) {
-        qemu_mutex_unlock_iothread();
+        bql_unlock();
     }
     RCU_READ_UNLOCK();
 }
@@ -339,7 +339,7 @@ static inline void glue(address_space_stl_internal, SUFFIX)(ARG1_DECL,
         *result = r;
     }
     if (release_lock) {
-        qemu_mutex_unlock_iothread();
+        bql_unlock();
     }
     RCU_READ_UNLOCK();
 }
@@ -391,7 +391,7 @@ void glue(address_space_stb, SUFFIX)(ARG1_DECL,
         *result = r;
     }
     if (release_lock) {
-        qemu_mutex_unlock_iothread();
+        bql_unlock();
     }
     RCU_READ_UNLOCK();
 }
@@ -435,7 +435,7 @@ static inline void glue(address_space_stw_internal, SUFFIX)(ARG1_DECL,
         *result = r;
     }
     if (release_lock) {
-        qemu_mutex_unlock_iothread();
+        bql_unlock();
     }
     RCU_READ_UNLOCK();
 }
@@ -499,7 +499,7 @@ static void glue(address_space_stq_internal, SUFFIX)(ARG1_DECL,
         *result = r;
     }
     if (release_lock) {
-        qemu_mutex_unlock_iothread();
+        bql_unlock();
     }
     RCU_READ_UNLOCK();
 }
diff --git a/target/i386/hvf/README.md b/target/i386/hvf/README.md
index 2d33477aca..64a8935237 100644
--- a/target/i386/hvf/README.md
+++ b/target/i386/hvf/README.md
@@ -4,4 +4,4 @@ These sources (and ../hvf-all.c) are adapted from Veertu Inc's vdhh (Veertu Desk
 
 1. Adapt to our current QEMU's `CPUState` structure and `address_space_rw` API; many struct members have been moved around (emulated x86 state, xsave_buf) due to historical differences + QEMU needing to handle more emulation targets.
 2. Removal of `apic_page` and hyperv-related functionality.
-3. More relaxed use of `qemu_mutex_lock_iothread`.
+3. More relaxed use of `bql_lock`.
diff --git a/ui/cocoa.m b/ui/cocoa.m
index cd069da696..5ebb535070 100644
--- a/ui/cocoa.m
+++ b/ui/cocoa.m
@@ -117,29 +117,29 @@ static void cocoa_switch(DisplayChangeListener *dcl,
 typedef void (^CodeBlock)(void);
 typedef bool (^BoolCodeBlock)(void);
 
-static void with_iothread_lock(CodeBlock block)
+static void with_bql(CodeBlock block)
 {
-    bool locked = qemu_mutex_iothread_locked();
+    bool locked = bql_locked();
     if (!locked) {
-        qemu_mutex_lock_iothread();
+        bql_lock();
     }
     block();
     if (!locked) {
-        qemu_mutex_unlock_iothread();
+        bql_unlock();
     }
 }
 
-static bool bool_with_iothread_lock(BoolCodeBlock block)
+static bool bool_with_bql(BoolCodeBlock block)
 {
-    bool locked = qemu_mutex_iothread_locked();
+    bool locked = bql_locked();
     bool val;
 
     if (!locked) {
-        qemu_mutex_lock_iothread();
+        bql_lock();
     }
     val = block();
     if (!locked) {
-        qemu_mutex_unlock_iothread();
+        bql_unlock();
     }
     return val;
 }
@@ -605,7 +605,7 @@ - (void) updateUIInfo
         return;
     }
 
-    with_iothread_lock(^{
+    with_bql(^{
         [self updateUIInfoLocked];
     });
 }
@@ -790,7 +790,7 @@ - (void) handleMonitorInput:(NSEvent *)event
 
 - (bool) handleEvent:(NSEvent *)event
 {
-    return bool_with_iothread_lock(^{
+    return bool_with_bql(^{
         return [self handleEventLocked:event];
     });
 }
@@ -1182,7 +1182,7 @@ - (QEMUScreen) gscreen {return screen;}
  */
 - (void) raiseAllKeys
 {
-    with_iothread_lock(^{
+    with_bql(^{
         qkbd_state_lift_all_keys(kbd);
     });
 }
@@ -1282,7 +1282,7 @@ - (void)applicationWillTerminate:(NSNotification *)aNotification
 {
     COCOA_DEBUG("QemuCocoaAppController: applicationWillTerminate\n");
 
-    with_iothread_lock(^{
+    with_bql(^{
         shutdown_action = SHUTDOWN_ACTION_POWEROFF;
         qemu_system_shutdown_request(SHUTDOWN_CAUSE_HOST_UI);
     });
@@ -1420,7 +1420,7 @@ - (void)displayConsole:(id)sender
 /* Pause the guest */
 - (void)pauseQEMU:(id)sender
 {
-    with_iothread_lock(^{
+    with_bql(^{
         qmp_stop(NULL);
     });
     [sender setEnabled: NO];
@@ -1431,7 +1431,7 @@ - (void)pauseQEMU:(id)sender
 /* Resume running the guest operating system */
 - (void)resumeQEMU:(id) sender
 {
-    with_iothread_lock(^{
+    with_bql(^{
         qmp_cont(NULL);
     });
     [sender setEnabled: NO];
@@ -1461,7 +1461,7 @@ - (void)removePause
 /* Restarts QEMU */
 - (void)restartQEMU:(id)sender
 {
-    with_iothread_lock(^{
+    with_bql(^{
         qmp_system_reset(NULL);
     });
 }
@@ -1469,7 +1469,7 @@ - (void)restartQEMU:(id)sender
 /* Powers down QEMU */
 - (void)powerDownQEMU:(id)sender
 {
-    with_iothread_lock(^{
+    with_bql(^{
         qmp_system_powerdown(NULL);
     });
 }
@@ -1488,7 +1488,7 @@ - (void)ejectDeviceMedia:(id)sender
     }
 
     __block Error *err = NULL;
-    with_iothread_lock(^{
+    with_bql(^{
         qmp_eject([drive cStringUsingEncoding: NSASCIIStringEncoding],
                   NULL, false, false, &err);
     });
@@ -1523,7 +1523,7 @@ - (void)changeDeviceMedia:(id)sender
         }
 
         __block Error *err = NULL;
-        with_iothread_lock(^{
+        with_bql(^{
             qmp_blockdev_change_medium([drive cStringUsingEncoding:
                                                   NSASCIIStringEncoding],
                                        NULL,
@@ -1605,7 +1605,7 @@ - (void)adjustSpeed:(id)sender
     // get the throttle percentage
     throttle_pct = [sender tag];
 
-    with_iothread_lock(^{
+    with_bql(^{
         cpu_throttle_set(throttle_pct);
     });
     COCOA_DEBUG("cpu throttling at %d%c\n", cpu_throttle_get_percentage(), '%');
@@ -1819,7 +1819,7 @@ - (void)pasteboard:(NSPasteboard *)sender provideDataForType:(NSPasteboardType)t
         return;
     }
 
-    with_iothread_lock(^{
+    with_bql(^{
         QemuClipboardInfo *info = qemu_clipboard_info_ref(cbinfo);
         qemu_event_reset(&cbevent);
         qemu_clipboard_request(info, QEMU_CLIPBOARD_TYPE_TEXT);
@@ -1827,9 +1827,9 @@ - (void)pasteboard:(NSPasteboard *)sender provideDataForType:(NSPasteboardType)t
         while (info == cbinfo &&
                info->types[QEMU_CLIPBOARD_TYPE_TEXT].available &&
                info->types[QEMU_CLIPBOARD_TYPE_TEXT].data == NULL) {
-            qemu_mutex_unlock_iothread();
+            bql_unlock();
             qemu_event_wait(&cbevent);
-            qemu_mutex_lock_iothread();
+            bql_lock();
         }
 
         if (info == cbinfo) {
@@ -1927,9 +1927,9 @@ static void cocoa_clipboard_request(QemuClipboardInfo *info,
     int status;
 
     COCOA_DEBUG("Second thread: calling qemu_default_main()\n");
-    qemu_mutex_lock_iothread();
+    bql_lock();
     status = qemu_default_main();
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
     COCOA_DEBUG("Second thread: qemu_default_main() returned, exiting\n");
     [cbowner release];
     exit(status);
@@ -1941,7 +1941,7 @@ static int cocoa_main(void)
 
     COCOA_DEBUG("Entered %s()\n", __func__);
 
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
     qemu_thread_create(&thread, "qemu_main", call_qemu_main,
                        NULL, QEMU_THREAD_DETACHED);
 
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Tue Jan 02 15:35:54 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 02 Jan 2024 15:35:54 +0000
Received: from list by lists.xenproject.org with outflank-mailman.660744.1030354 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rKgo6-0000QF-R5; Tue, 02 Jan 2024 15:35:54 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 660744.1030354; Tue, 02 Jan 2024 15:35:54 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rKgo6-0000Q2-Nz; Tue, 02 Jan 2024 15:35:54 +0000
Received: by outflank-mailman (input) for mailman id 660744;
 Tue, 02 Jan 2024 15:35:53 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=JX1x=IM=redhat.com=stefanha@srs-se1.protection.inumbo.net>)
 id 1rKgo5-00082L-0L
 for xen-devel@lists.xenproject.org; Tue, 02 Jan 2024 15:35:53 +0000
Received: from us-smtp-delivery-124.mimecast.com
 (us-smtp-delivery-124.mimecast.com [170.10.133.124])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 9b15823f-a984-11ee-9b0f-b553b5be7939;
 Tue, 02 Jan 2024 16:35:50 +0100 (CET)
Received: from mimecast-mx02.redhat.com (mx-ext.redhat.com [66.187.233.73])
 by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3,
 cipher=TLS_AES_256_GCM_SHA384) id us-mta-150-8mic1hvAMqaHHYtdnGtvKg-1; Tue,
 02 Jan 2024 10:35:47 -0500
Received: from smtp.corp.redhat.com (int-mx10.intmail.prod.int.rdu2.redhat.com
 [10.11.54.10])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256)
 (No client certificate requested)
 by mimecast-mx02.redhat.com (Postfix) with ESMTPS id A6B5E1C04B56;
 Tue,  2 Jan 2024 15:35:44 +0000 (UTC)
Received: from localhost (unknown [10.39.193.188])
 by smtp.corp.redhat.com (Postfix) with ESMTP id 1F597492BFA;
 Tue,  2 Jan 2024 15:35:43 +0000 (UTC)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 9b15823f-a984-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
	s=mimecast20190719; t=1704209749;
	h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
	 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=gqCKfdKBlhZqp15rV8rqIjLks4TV2Rlkm/xxFYjB+P8=;
	b=aIyKIQFID/qPUntpn5bwUmC6hBNMvs2ClCdNKb86P4T71gpWgI0kD3yXG9hcJeLjP1ajsX
	VXgvGlP1TVlRmU4Ize1m3mywv3KJNSAcy2TnGYgTnzKXpoGI++8UjALVnjcoyUhq76bswu
	ki8FDb+wSs7FlU5ZWIskWx9+rDyqUIY=
X-MC-Unique: 8mic1hvAMqaHHYtdnGtvKg-1
From: Stefan Hajnoczi <stefanha@redhat.com>
To: qemu-devel@nongnu.org
Cc: Hanna Reitz <hreitz@redhat.com>,
	qemu-riscv@nongnu.org,
	Roman Bolshakov <rbolshakov@ddn.com>,
	=?UTF-8?q?C=C3=A9dric=20Le=20Goater?= <clg@kaod.org>,
	Elena Ufimtseva <elena.ufimtseva@oracle.com>,
	Eduardo Habkost <eduardo@habkost.net>,
	Thomas Huth <thuth@redhat.com>,
	Stefan Hajnoczi <stefanha@redhat.com>,
	qemu-block@nongnu.org,
	Andrey Smirnov <andrew.smirnov@gmail.com>,
	Peter Maydell <peter.maydell@linaro.org>,
	Huacai Chen <chenhuacai@kernel.org>,
	Fam Zheng <fam@euphon.net>,
	Gerd Hoffmann <kraxel@redhat.com>,
	David Gibson <david@gibson.dropbear.id.au>,
	John Snow <jsnow@redhat.com>,
	Stafford Horne <shorne@gmail.com>,
	Weiwei Li <liwei1518@gmail.com>,
	Jean-Christophe Dubois <jcd@tribudubois.net>,
	Cameron Esfahani <dirty@apple.com>,
	Alexander Graf <agraf@csgraf.de>,
	David Hildenbrand <david@redhat.com>,
	Juan Quintela <quintela@redhat.com>,
	Nicholas Piggin <npiggin@gmail.com>,
	Max Filippov <jcmvbkbc@gmail.com>,
	=?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= <berrange@redhat.com>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Daniel Henrique Barboza <danielhb413@gmail.com>,
	Markus Armbruster <armbru@redhat.com>,
	Peter Xu <peterx@redhat.com>,
	Vladimir Sementsov-Ogievskiy <vsementsov@yandex-team.ru>,
	Richard Henderson <richard.henderson@linaro.org>,
	qemu-s390x@nongnu.org,
	Jiri Slaby <jslaby@suse.cz>,
	Pavel Dovgalyuk <pavel.dovgaluk@ispras.ru>,
	Eric Blake <eblake@redhat.com>,
	Akihiko Odaki <akihiko.odaki@daynix.com>,
	=?UTF-8?q?Alex=20Benn=C3=A9e?= <alex.bennee@linaro.org>,
	Aleksandar Rikalo <aleksandar.rikalo@syrmia.com>,
	"Michael S. Tsirkin" <mst@redhat.com>,
	Jason Wang <jasowang@redhat.com>,
	Jiaxun Yang <jiaxun.yang@flygoat.com>,
	Sunil Muthuswamy <sunilmut@microsoft.com>,
	Alistair Francis <alistair.francis@wdc.com>,
	=?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= <philmd@linaro.org>,
	Fabiano Rosas <farosas@suse.de>,
	Michael Roth <michael.roth@amd.com>,
	Paul Durrant <paul@xen.org>,
	Jagannathan Raman <jag.raman@oracle.com>,
	Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Hyman Huang <yong.huang@smartx.com>,
	=?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= <marcandre.lureau@redhat.com>,
	xen-devel@lists.xenproject.org,
	Halil Pasic <pasic@linux.ibm.com>,
	Christian Borntraeger <borntraeger@linux.ibm.com>,
	Song Gao <gaosong@loongson.cn>,
	Kevin Wolf <kwolf@redhat.com>,
	Ilya Leoshkevich <iii@linux.ibm.com>,
	Artyom Tarasenko <atar4qemu@gmail.com>,
	Marcel Apfelbaum <marcel.apfelbaum@gmail.com>,
	Reinoud Zandijk <reinoud@netbsd.org>,
	qemu-ppc@nongnu.org,
	Marcelo Tosatti <mtosatti@redhat.com>,
	David Woodhouse <dwmw2@infradead.org>,
	Aurelien Jarno <aurelien@aurel32.net>,
	Bin Meng <bin.meng@windriver.com>,
	qemu-arm@nongnu.org,
	Anthony Perard <anthony.perard@citrix.com>,
	Leonardo Bras <leobras@redhat.com>,
	Hailiang Zhang <zhanghailiang@xfusion.com>,
	Harsh Prateek Bora <harshpb@linux.ibm.com>,
	kvm@vger.kernel.org,
	Palmer Dabbelt <palmer@dabbelt.com>,
	Eric Farman <farman@linux.ibm.com>,
	BALATON Zoltan <balaton@eik.bme.hu>,
	Liu Zhiwei <zhiwei_liu@linux.alibaba.com>
Subject: [PATCH v3 4/5] Replace "iothread lock" with "BQL" in comments
Date: Tue,  2 Jan 2024 10:35:28 -0500
Message-ID: <20240102153529.486531-5-stefanha@redhat.com>
In-Reply-To: <20240102153529.486531-1-stefanha@redhat.com>
References: <20240102153529.486531-1-stefanha@redhat.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Scanned-By: MIMEDefang 3.4.1 on 10.11.54.10

The term "iothread lock" is obsolete. The APIs use Big QEMU Lock (BQL)
in their names. Update the code comments to use "BQL" instead of
"iothread lock".

Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
---
 docs/devel/reset.rst             |  2 +-
 hw/display/qxl.h                 |  2 +-
 include/exec/cpu-common.h        |  2 +-
 include/exec/memory.h            |  4 ++--
 include/exec/ramblock.h          |  2 +-
 include/migration/register.h     |  8 ++++----
 target/arm/internals.h           |  4 ++--
 accel/tcg/cputlb.c               |  4 ++--
 accel/tcg/tcg-accel-ops-icount.c |  2 +-
 hw/remote/mpqemu-link.c          |  2 +-
 migration/block-dirty-bitmap.c   | 10 +++++-----
 migration/block.c                | 22 +++++++++++-----------
 migration/colo.c                 |  2 +-
 migration/migration.c            |  2 +-
 migration/ram.c                  |  4 ++--
 system/physmem.c                 |  6 +++---
 target/arm/helper.c              |  2 +-
 ui/spice-core.c                  |  2 +-
 util/rcu.c                       |  2 +-
 audio/coreaudio.m                |  4 ++--
 ui/cocoa.m                       |  6 +++---
 21 files changed, 47 insertions(+), 47 deletions(-)

diff --git a/docs/devel/reset.rst b/docs/devel/reset.rst
index 38ed1790f7..d4e79718ba 100644
--- a/docs/devel/reset.rst
+++ b/docs/devel/reset.rst
@@ -19,7 +19,7 @@ Triggering reset
 
 This section documents the APIs which "users" of a resettable object should use
 to control it. All resettable control functions must be called while holding
-the iothread lock.
+the BQL.
 
 You can apply a reset to an object using ``resettable_assert_reset()``. You need
 to call ``resettable_release_reset()`` to release the object from reset. To
diff --git a/hw/display/qxl.h b/hw/display/qxl.h
index fdac14edad..e0a85a5ca4 100644
--- a/hw/display/qxl.h
+++ b/hw/display/qxl.h
@@ -159,7 +159,7 @@ OBJECT_DECLARE_SIMPLE_TYPE(PCIQXLDevice, PCI_QXL)
  *
  * Use with care; by the time this function returns, the returned pointer is
  * not protected by RCU anymore.  If the caller is not within an RCU critical
- * section and does not hold the iothread lock, it must have other means of
+ * section and does not hold the BQL, it must have other means of
  * protecting the pointer, such as a reference to the region that includes
  * the incoming ram_addr_t.
  *
diff --git a/include/exec/cpu-common.h b/include/exec/cpu-common.h
index 41115d8919..fef3138d29 100644
--- a/include/exec/cpu-common.h
+++ b/include/exec/cpu-common.h
@@ -92,7 +92,7 @@ RAMBlock *qemu_ram_block_by_name(const char *name);
  *
  * By the time this function returns, the returned pointer is not protected
  * by RCU anymore.  If the caller is not within an RCU critical section and
- * does not hold the iothread lock, it must have other means of protecting the
+ * does not hold the BQL, it must have other means of protecting the
  * pointer, such as a reference to the memory region that owns the RAMBlock.
  */
 RAMBlock *qemu_ram_block_from_host(void *ptr, bool round_offset,
diff --git a/include/exec/memory.h b/include/exec/memory.h
index f172e82ac9..991ab8c6e8 100644
--- a/include/exec/memory.h
+++ b/include/exec/memory.h
@@ -1962,7 +1962,7 @@ int memory_region_get_fd(MemoryRegion *mr);
  *
  * Use with care; by the time this function returns, the returned pointer is
  * not protected by RCU anymore.  If the caller is not within an RCU critical
- * section and does not hold the iothread lock, it must have other means of
+ * section and does not hold the BQL, it must have other means of
  * protecting the pointer, such as a reference to the region that includes
  * the incoming ram_addr_t.
  *
@@ -1979,7 +1979,7 @@ MemoryRegion *memory_region_from_host(void *ptr, ram_addr_t *offset);
  *
  * Use with care; by the time this function returns, the returned pointer is
  * not protected by RCU anymore.  If the caller is not within an RCU critical
- * section and does not hold the iothread lock, it must have other means of
+ * section and does not hold the BQL, it must have other means of
  * protecting the pointer, such as a reference to the region that includes
  * the incoming ram_addr_t.
  *
diff --git a/include/exec/ramblock.h b/include/exec/ramblock.h
index 69c6a53902..3eb79723c6 100644
--- a/include/exec/ramblock.h
+++ b/include/exec/ramblock.h
@@ -34,7 +34,7 @@ struct RAMBlock {
     ram_addr_t max_length;
     void (*resized)(const char*, uint64_t length, void *host);
     uint32_t flags;
-    /* Protected by iothread lock.  */
+    /* Protected by the BQL.  */
     char idstr[256];
     /* RCU-enabled, writes protected by the ramlist lock */
     QLIST_ENTRY(RAMBlock) next;
diff --git a/include/migration/register.h b/include/migration/register.h
index fed1d04a3c..9ab1f79512 100644
--- a/include/migration/register.h
+++ b/include/migration/register.h
@@ -17,7 +17,7 @@
 #include "hw/vmstate-if.h"
 
 typedef struct SaveVMHandlers {
-    /* This runs inside the iothread lock.  */
+    /* This runs inside the BQL.  */
     SaveStateHandler *save_state;
 
     /*
@@ -30,7 +30,7 @@ typedef struct SaveVMHandlers {
     int (*save_live_complete_postcopy)(QEMUFile *f, void *opaque);
     int (*save_live_complete_precopy)(QEMUFile *f, void *opaque);
 
-    /* This runs both outside and inside the iothread lock.  */
+    /* This runs both outside and inside the BQL.  */
     bool (*is_active)(void *opaque);
     bool (*has_postcopy)(void *opaque);
 
@@ -43,14 +43,14 @@ typedef struct SaveVMHandlers {
      */
     bool (*is_active_iterate)(void *opaque);
 
-    /* This runs outside the iothread lock in the migration case, and
+    /* This runs outside the BQL in the migration case, and
      * within the lock in the savevm case.  The callback had better only
      * use data that is local to the migration thread or protected
      * by other locks.
      */
     int (*save_live_iterate)(QEMUFile *f, void *opaque);
 
-    /* This runs outside the iothread lock!  */
+    /* This runs outside the BQL!  */
     /* Note for save_live_pending:
      * must_precopy:
      * - must be migrated in precopy or in stopped state
diff --git a/target/arm/internals.h b/target/arm/internals.h
index 143d57c0fe..71d6c70bf3 100644
--- a/target/arm/internals.h
+++ b/target/arm/internals.h
@@ -940,7 +940,7 @@ static inline const char *aarch32_mode_name(uint32_t psr)
  *
  * Update the CPU_INTERRUPT_VIRQ bit in cs->interrupt_request, following
  * a change to either the input VIRQ line from the GIC or the HCR_EL2.VI bit.
- * Must be called with the iothread lock held.
+ * Must be called with the BQL held.
  */
 void arm_cpu_update_virq(ARMCPU *cpu);
 
@@ -949,7 +949,7 @@ void arm_cpu_update_virq(ARMCPU *cpu);
  *
  * Update the CPU_INTERRUPT_VFIQ bit in cs->interrupt_request, following
  * a change to either the input VFIQ line from the GIC or the HCR_EL2.VF bit.
- * Must be called with the iothread lock held.
+ * Must be called with the BQL held.
  */
 void arm_cpu_update_vfiq(ARMCPU *cpu);
 
diff --git a/accel/tcg/cputlb.c b/accel/tcg/cputlb.c
index 5698a9fd8e..3facfcbb24 100644
--- a/accel/tcg/cputlb.c
+++ b/accel/tcg/cputlb.c
@@ -1975,7 +1975,7 @@ static void *atomic_mmu_lookup(CPUState *cpu, vaddr addr, MemOpIdx oi,
  * @size: number of bytes
  * @mmu_idx: virtual address context
  * @ra: return address into tcg generated code, or 0
- * Context: iothread lock held
+ * Context: BQL held
  *
  * Load @size bytes from @addr, which is memory-mapped i/o.
  * The bytes are concatenated in big-endian order with @ret_be.
@@ -2521,7 +2521,7 @@ static Int128 do_ld16_mmu(CPUState *cpu, vaddr addr,
  * @size: number of bytes
  * @mmu_idx: virtual address context
  * @ra: return address into tcg generated code, or 0
- * Context: iothread lock held
+ * Context: BQL held
  *
  * Store @size bytes at @addr, which is memory-mapped i/o.
  * The bytes to store are extracted in little-endian order from @val_le;
diff --git a/accel/tcg/tcg-accel-ops-icount.c b/accel/tcg/tcg-accel-ops-icount.c
index 5824d92580..9e1ae66f65 100644
--- a/accel/tcg/tcg-accel-ops-icount.c
+++ b/accel/tcg/tcg-accel-ops-icount.c
@@ -123,7 +123,7 @@ void icount_prepare_for_run(CPUState *cpu, int64_t cpu_budget)
 
     if (cpu->icount_budget == 0) {
         /*
-         * We're called without the iothread lock, so must take it while
+         * We're called without the BQL, so must take it while
          * we're calling timer handlers.
          */
         bql_lock();
diff --git a/hw/remote/mpqemu-link.c b/hw/remote/mpqemu-link.c
index d04ac93621..4394dc4d82 100644
--- a/hw/remote/mpqemu-link.c
+++ b/hw/remote/mpqemu-link.c
@@ -58,7 +58,7 @@ bool mpqemu_msg_send(MPQemuMsg *msg, QIOChannel *ioc, Error **errp)
     assert(qemu_in_coroutine() || !iothread);
 
     /*
-     * Skip unlocking/locking iothread lock when the IOThread is running
+     * Skip unlocking/locking BQL when the IOThread is running
      * in co-routine context. Co-routine context is asserted above
      * for IOThread case.
      * Also skip lock handling while in a co-routine in the main context.
diff --git a/migration/block-dirty-bitmap.c b/migration/block-dirty-bitmap.c
index 92e031b6fa..2708abf3d7 100644
--- a/migration/block-dirty-bitmap.c
+++ b/migration/block-dirty-bitmap.c
@@ -464,7 +464,7 @@ static void send_bitmap_bits(QEMUFile *f, DBMSaveState *s,
     g_free(buf);
 }
 
-/* Called with iothread lock taken.  */
+/* Called with the BQL taken.  */
 static void dirty_bitmap_do_save_cleanup(DBMSaveState *s)
 {
     SaveBitmapState *dbms;
@@ -479,7 +479,7 @@ static void dirty_bitmap_do_save_cleanup(DBMSaveState *s)
     }
 }
 
-/* Called with iothread lock taken. */
+/* Called with the BQL taken. */
 static int add_bitmaps_to_list(DBMSaveState *s, BlockDriverState *bs,
                                const char *bs_name, GHashTable *alias_map)
 {
@@ -598,7 +598,7 @@ static int add_bitmaps_to_list(DBMSaveState *s, BlockDriverState *bs,
     return 0;
 }
 
-/* Called with iothread lock taken. */
+/* Called with the BQL taken. */
 static int init_dirty_bitmap_migration(DBMSaveState *s)
 {
     BlockDriverState *bs;
@@ -607,7 +607,7 @@ static int init_dirty_bitmap_migration(DBMSaveState *s)
     BlockBackend *blk;
     GHashTable *alias_map = NULL;
 
-    /* Runs in the migration thread, but holds the iothread lock */
+    /* Runs in the migration thread, but holds the BQL */
     GLOBAL_STATE_CODE();
     GRAPH_RDLOCK_GUARD_MAINLOOP();
 
@@ -742,7 +742,7 @@ static int dirty_bitmap_save_iterate(QEMUFile *f, void *opaque)
     return s->bulk_completed;
 }
 
-/* Called with iothread lock taken.  */
+/* Called with the BQL taken.  */
 
 static int dirty_bitmap_save_complete(QEMUFile *f, void *opaque)
 {
diff --git a/migration/block.c b/migration/block.c
index b731d7d778..8c6ebafacc 100644
--- a/migration/block.c
+++ b/migration/block.c
@@ -101,7 +101,7 @@ typedef struct BlkMigState {
     int prev_progress;
     int bulk_completed;
 
-    /* Lock must be taken _inside_ the iothread lock.  */
+    /* Lock must be taken _inside_ the BQL.  */
     QemuMutex lock;
 } BlkMigState;
 
@@ -117,7 +117,7 @@ static void blk_mig_unlock(void)
     qemu_mutex_unlock(&block_mig_state.lock);
 }
 
-/* Must run outside of the iothread lock during the bulk phase,
+/* Must run outside of the BQL during the bulk phase,
  * or the VM will stall.
  */
 
@@ -327,7 +327,7 @@ static int mig_save_device_bulk(QEMUFile *f, BlkMigDevState *bmds)
     return (bmds->cur_sector >= total_sectors);
 }
 
-/* Called with iothread lock taken.  */
+/* Called with the BQL taken.  */
 
 static int set_dirty_tracking(void)
 {
@@ -354,7 +354,7 @@ fail:
     return ret;
 }
 
-/* Called with iothread lock taken.  */
+/* Called with the BQL taken.  */
 
 static void unset_dirty_tracking(void)
 {
@@ -505,7 +505,7 @@ static void blk_mig_reset_dirty_cursor(void)
     }
 }
 
-/* Called with iothread lock taken.  */
+/* Called with the BQL taken.  */
 
 static int mig_save_device_dirty(QEMUFile *f, BlkMigDevState *bmds,
                                  int is_async)
@@ -587,7 +587,7 @@ error:
     return ret;
 }
 
-/* Called with iothread lock taken.
+/* Called with the BQL taken.
  *
  * return value:
  * 0: too much data for max_downtime
@@ -649,7 +649,7 @@ static int flush_blks(QEMUFile *f)
     return ret;
 }
 
-/* Called with iothread lock taken.  */
+/* Called with the BQL taken.  */
 
 static int64_t get_remaining_dirty(void)
 {
@@ -667,7 +667,7 @@ static int64_t get_remaining_dirty(void)
 
 
 
-/* Called with iothread lock taken.  */
+/* Called with the BQL taken.  */
 static void block_migration_cleanup_bmds(void)
 {
     BlkMigDevState *bmds;
@@ -690,7 +690,7 @@ static void block_migration_cleanup_bmds(void)
     }
 }
 
-/* Called with iothread lock taken.  */
+/* Called with the BQL taken.  */
 static void block_migration_cleanup(void *opaque)
 {
     BlkMigBlock *blk;
@@ -767,7 +767,7 @@ static int block_save_iterate(QEMUFile *f, void *opaque)
             }
             ret = 0;
         } else {
-            /* Always called with iothread lock taken for
+            /* Always called with the BQL taken for
              * simplicity, block_save_complete also calls it.
              */
             bql_lock();
@@ -795,7 +795,7 @@ static int block_save_iterate(QEMUFile *f, void *opaque)
     return (delta_bytes > 0);
 }
 
-/* Called with iothread lock taken.  */
+/* Called with the BQL taken.  */
 
 static int block_save_complete(QEMUFile *f, void *opaque)
 {
diff --git a/migration/colo.c b/migration/colo.c
index 2a74efdd77..315e31fe32 100644
--- a/migration/colo.c
+++ b/migration/colo.c
@@ -945,7 +945,7 @@ int coroutine_fn colo_incoming_co(void)
     qemu_thread_join(&th);
     bql_lock();
 
-    /* We hold the global iothread lock, so it is safe here */
+    /* We hold the global BQL, so it is safe here */
     colo_release_ram_cache();
 
     return 0;
diff --git a/migration/migration.c b/migration/migration.c
index be74c714d6..fb0a1a766f 100644
--- a/migration/migration.c
+++ b/migration/migration.c
@@ -2567,7 +2567,7 @@ fail:
 
 /**
  * migration_maybe_pause: Pause if required to by
- * migrate_pause_before_switchover called with the iothread locked
+ * migrate_pause_before_switchover called with the BQL locked
  * Returns: 0 on success
  */
 static int migration_maybe_pause(MigrationState *s,
diff --git a/migration/ram.c b/migration/ram.c
index 08dc7e2909..890f31cf66 100644
--- a/migration/ram.c
+++ b/migration/ram.c
@@ -2395,7 +2395,7 @@ static void ram_save_cleanup(void *opaque)
 
     /* We don't use dirty log with background snapshots */
     if (!migrate_background_snapshot()) {
-        /* caller have hold iothread lock or is in a bh, so there is
+        /* caller have hold BQL or is in a bh, so there is
          * no writing race against the migration bitmap
          */
         if (global_dirty_tracking & GLOBAL_DIRTY_MIGRATION) {
@@ -3131,7 +3131,7 @@ out:
  *
  * Returns zero to indicate success or negative on error
  *
- * Called with iothread lock
+ * Called with the BQL
  *
  * @f: QEMUFile where to send the data
  * @opaque: RAMState pointer
diff --git a/system/physmem.c b/system/physmem.c
index 4937e67bad..cc68a79763 100644
--- a/system/physmem.c
+++ b/system/physmem.c
@@ -799,7 +799,7 @@ static RAMBlock *qemu_get_ram_block(ram_addr_t addr)
     abort();
 
 found:
-    /* It is safe to write mru_block outside the iothread lock.  This
+    /* It is safe to write mru_block outside the BQL.  This
      * is what happens:
      *
      *     mru_block = xxx
@@ -1597,7 +1597,7 @@ int qemu_ram_get_fd(RAMBlock *rb)
     return rb->fd;
 }
 
-/* Called with iothread lock held.  */
+/* Called with the BQL held.  */
 void qemu_ram_set_idstr(RAMBlock *new_block, const char *name, DeviceState *dev)
 {
     RAMBlock *block;
@@ -1625,7 +1625,7 @@ void qemu_ram_set_idstr(RAMBlock *new_block, const char *name, DeviceState *dev)
     }
 }
 
-/* Called with iothread lock held.  */
+/* Called with the BQL held.  */
 void qemu_ram_unset_idstr(RAMBlock *block)
 {
     /* FIXME: arch_init.c assumes that this is not called throughout
diff --git a/target/arm/helper.c b/target/arm/helper.c
index c66c292342..9f89644cae 100644
--- a/target/arm/helper.c
+++ b/target/arm/helper.c
@@ -5844,7 +5844,7 @@ static void do_hcr_write(CPUARMState *env, uint64_t value, uint64_t valid_mask)
      * Updates to VI and VF require us to update the status of
      * virtual interrupts, which are the logical OR of these bits
      * and the state of the input lines from the GIC. (This requires
-     * that we have the iothread lock, which is done by marking the
+     * that we have the BQL, which is done by marking the
      * reginfo structs as ARM_CP_IO.)
      * Note that if a write to HCR pends a VIRQ or VFIQ it is never
      * possible for it to be taken immediately, because VIRQ and
diff --git a/ui/spice-core.c b/ui/spice-core.c
index b6ee495a8f..37b277fd09 100644
--- a/ui/spice-core.c
+++ b/ui/spice-core.c
@@ -217,7 +217,7 @@ static void channel_event(int event, SpiceChannelEventInfo *info)
      * not do that.  It isn't that easy to fix it in spice and even
      * when it is fixed we still should cover the already released
      * spice versions.  So detect that we've been called from another
-     * thread and grab the iothread lock if so before calling qemu
+     * thread and grab the BQL if so before calling qemu
      * functions.
      */
     bool need_lock = !qemu_thread_is_self(&me);
diff --git a/util/rcu.c b/util/rcu.c
index bb7f633b5c..fa32c942e4 100644
--- a/util/rcu.c
+++ b/util/rcu.c
@@ -409,7 +409,7 @@ static void rcu_init_complete(void)
 
     qemu_event_init(&rcu_call_ready_event, false);
 
-    /* The caller is assumed to have iothread lock, so the call_rcu thread
+    /* The caller is assumed to have BQL, so the call_rcu thread
      * must have been quiescent even after forking, just recreate it.
      */
     qemu_thread_create(&thread, "call_rcu", call_rcu_thread,
diff --git a/audio/coreaudio.m b/audio/coreaudio.m
index 9d2db9883c..ab632b9bbb 100644
--- a/audio/coreaudio.m
+++ b/audio/coreaudio.m
@@ -299,7 +299,7 @@ static ret_type glue(coreaudio_, name)args_decl             \
 #undef COREAUDIO_WRAPPER_FUNC
 
 /*
- * callback to feed audiooutput buffer. called without iothread lock.
+ * callback to feed audiooutput buffer. called without BQL.
  * allowed to lock "buf_mutex", but disallowed to have any other locks.
  */
 static OSStatus audioDeviceIOProc(
@@ -538,7 +538,7 @@ static void update_device_playback_state(coreaudioVoiceOut *core)
     }
 }
 
-/* called without iothread lock. */
+/* called without BQL. */
 static OSStatus handle_voice_change(
     AudioObjectID in_object_id,
     UInt32 in_number_addresses,
diff --git a/ui/cocoa.m b/ui/cocoa.m
index 5ebb535070..eb99064bee 100644
--- a/ui/cocoa.m
+++ b/ui/cocoa.m
@@ -113,7 +113,7 @@ static void cocoa_switch(DisplayChangeListener *dcl,
 static QemuClipboardInfo *cbinfo;
 static QemuEvent cbevent;
 
-// Utility functions to run specified code block with iothread lock held
+// Utility functions to run specified code block with the BQL held
 typedef void (^CodeBlock)(void);
 typedef bool (^BoolCodeBlock)(void);
 
@@ -548,7 +548,7 @@ - (void) setContentDimensions
 
 - (void) updateUIInfoLocked
 {
-    /* Must be called with the iothread lock, i.e. via updateUIInfo */
+    /* Must be called with the BQL, i.e. via updateUIInfo */
     NSSize frameSize;
     QemuUIInfo info;
 
@@ -2075,7 +2075,7 @@ static void cocoa_display_init(DisplayState *ds, DisplayOptions *opts)
      * Create the menu entries which depend on QEMU state (for consoles
      * and removable devices). These make calls back into QEMU functions,
      * which is OK because at this point we know that the second thread
-     * holds the iothread lock and is synchronously waiting for us to
+     * holds the BQL and is synchronously waiting for us to
      * finish.
      */
     add_console_menu_entries();
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Tue Jan 02 15:35:58 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 02 Jan 2024 15:35:58 +0000
Received: from list by lists.xenproject.org with outflank-mailman.660745.1030364 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rKgoA-0000kb-3E; Tue, 02 Jan 2024 15:35:58 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 660745.1030364; Tue, 02 Jan 2024 15:35:58 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rKgoA-0000kQ-08; Tue, 02 Jan 2024 15:35:58 +0000
Received: by outflank-mailman (input) for mailman id 660745;
 Tue, 02 Jan 2024 15:35:56 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=JX1x=IM=redhat.com=stefanha@srs-se1.protection.inumbo.net>)
 id 1rKgo8-0007fS-9Q
 for xen-devel@lists.xenproject.org; Tue, 02 Jan 2024 15:35:56 +0000
Received: from us-smtp-delivery-124.mimecast.com
 (us-smtp-delivery-124.mimecast.com [170.10.133.124])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 9dc9ec2f-a984-11ee-98ef-6d05b1d4d9a1;
 Tue, 02 Jan 2024 16:35:55 +0100 (CET)
Received: from mimecast-mx02.redhat.com (mx-ext.redhat.com [66.187.233.73])
 by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3,
 cipher=TLS_AES_256_GCM_SHA384) id us-mta-136-inPGJ8nHMNK_cp7DeWQH7w-1; Tue,
 02 Jan 2024 10:35:49 -0500
Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.rdu2.redhat.com
 [10.11.54.6])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256)
 (No client certificate requested)
 by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 3B19229AC00E;
 Tue,  2 Jan 2024 15:35:47 +0000 (UTC)
Received: from localhost (unknown [10.39.193.188])
 by smtp.corp.redhat.com (Postfix) with ESMTP id 1B0B42166B31;
 Tue,  2 Jan 2024 15:35:46 +0000 (UTC)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 9dc9ec2f-a984-11ee-98ef-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
	s=mimecast20190719; t=1704209754;
	h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
	 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=Mwe9XqG5X3Ix2ddHCkgzOyNbVW2fFHn0m6xtKqg3KkU=;
	b=OI9+qgExYhAwWzs3dq7PvLWz3eQh/SZgbtR5Bmh0sGa1jq3G2m5TFGD+7+Cmovx28il7cv
	f9K9rCiHQzLdgC8VMlpQvVX8P3XmBhHUP8NPBuXFf8TfHWsvQoLPiWwiWM4HO0QTGrXzNz
	+dLC4tZc+tF/PhLpQZ1k8ZcqcgVgJHo=
X-MC-Unique: inPGJ8nHMNK_cp7DeWQH7w-1
From: Stefan Hajnoczi <stefanha@redhat.com>
To: qemu-devel@nongnu.org
Cc: Hanna Reitz <hreitz@redhat.com>,
	qemu-riscv@nongnu.org,
	Roman Bolshakov <rbolshakov@ddn.com>,
	=?UTF-8?q?C=C3=A9dric=20Le=20Goater?= <clg@kaod.org>,
	Elena Ufimtseva <elena.ufimtseva@oracle.com>,
	Eduardo Habkost <eduardo@habkost.net>,
	Thomas Huth <thuth@redhat.com>,
	Stefan Hajnoczi <stefanha@redhat.com>,
	qemu-block@nongnu.org,
	Andrey Smirnov <andrew.smirnov@gmail.com>,
	Peter Maydell <peter.maydell@linaro.org>,
	Huacai Chen <chenhuacai@kernel.org>,
	Fam Zheng <fam@euphon.net>,
	Gerd Hoffmann <kraxel@redhat.com>,
	David Gibson <david@gibson.dropbear.id.au>,
	John Snow <jsnow@redhat.com>,
	Stafford Horne <shorne@gmail.com>,
	Weiwei Li <liwei1518@gmail.com>,
	Jean-Christophe Dubois <jcd@tribudubois.net>,
	Cameron Esfahani <dirty@apple.com>,
	Alexander Graf <agraf@csgraf.de>,
	David Hildenbrand <david@redhat.com>,
	Juan Quintela <quintela@redhat.com>,
	Nicholas Piggin <npiggin@gmail.com>,
	Max Filippov <jcmvbkbc@gmail.com>,
	=?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= <berrange@redhat.com>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Daniel Henrique Barboza <danielhb413@gmail.com>,
	Markus Armbruster <armbru@redhat.com>,
	Peter Xu <peterx@redhat.com>,
	Vladimir Sementsov-Ogievskiy <vsementsov@yandex-team.ru>,
	Richard Henderson <richard.henderson@linaro.org>,
	qemu-s390x@nongnu.org,
	Jiri Slaby <jslaby@suse.cz>,
	Pavel Dovgalyuk <pavel.dovgaluk@ispras.ru>,
	Eric Blake <eblake@redhat.com>,
	Akihiko Odaki <akihiko.odaki@daynix.com>,
	=?UTF-8?q?Alex=20Benn=C3=A9e?= <alex.bennee@linaro.org>,
	Aleksandar Rikalo <aleksandar.rikalo@syrmia.com>,
	"Michael S. Tsirkin" <mst@redhat.com>,
	Jason Wang <jasowang@redhat.com>,
	Jiaxun Yang <jiaxun.yang@flygoat.com>,
	Sunil Muthuswamy <sunilmut@microsoft.com>,
	Alistair Francis <alistair.francis@wdc.com>,
	=?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= <philmd@linaro.org>,
	Fabiano Rosas <farosas@suse.de>,
	Michael Roth <michael.roth@amd.com>,
	Paul Durrant <paul@xen.org>,
	Jagannathan Raman <jag.raman@oracle.com>,
	Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Hyman Huang <yong.huang@smartx.com>,
	=?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= <marcandre.lureau@redhat.com>,
	xen-devel@lists.xenproject.org,
	Halil Pasic <pasic@linux.ibm.com>,
	Christian Borntraeger <borntraeger@linux.ibm.com>,
	Song Gao <gaosong@loongson.cn>,
	Kevin Wolf <kwolf@redhat.com>,
	Ilya Leoshkevich <iii@linux.ibm.com>,
	Artyom Tarasenko <atar4qemu@gmail.com>,
	Marcel Apfelbaum <marcel.apfelbaum@gmail.com>,
	Reinoud Zandijk <reinoud@netbsd.org>,
	qemu-ppc@nongnu.org,
	Marcelo Tosatti <mtosatti@redhat.com>,
	David Woodhouse <dwmw2@infradead.org>,
	Aurelien Jarno <aurelien@aurel32.net>,
	Bin Meng <bin.meng@windriver.com>,
	qemu-arm@nongnu.org,
	Anthony Perard <anthony.perard@citrix.com>,
	Leonardo Bras <leobras@redhat.com>,
	Hailiang Zhang <zhanghailiang@xfusion.com>,
	Harsh Prateek Bora <harshpb@linux.ibm.com>,
	kvm@vger.kernel.org,
	Palmer Dabbelt <palmer@dabbelt.com>,
	Eric Farman <farman@linux.ibm.com>,
	BALATON Zoltan <balaton@eik.bme.hu>,
	Liu Zhiwei <zhiwei_liu@linux.alibaba.com>
Subject: [PATCH v3 5/5] Rename "QEMU global mutex" to "BQL" in comments and docs
Date: Tue,  2 Jan 2024 10:35:29 -0500
Message-ID: <20240102153529.486531-6-stefanha@redhat.com>
In-Reply-To: <20240102153529.486531-1-stefanha@redhat.com>
References: <20240102153529.486531-1-stefanha@redhat.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Scanned-By: MIMEDefang 3.4.1 on 10.11.54.6

The term "QEMU global mutex" is identical to the more widely used Big
QEMU Lock ("BQL"). Update the code comments and documentation to use
"BQL" instead of "QEMU global mutex".

Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
Acked-by: Markus Armbruster <armbru@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
---
 docs/devel/multi-thread-tcg.rst   |  7 +++----
 docs/devel/qapi-code-gen.rst      |  2 +-
 docs/devel/replay.rst             |  2 +-
 docs/devel/multiple-iothreads.txt | 14 +++++++-------
 include/block/blockjob.h          |  6 +++---
 include/io/task.h                 |  2 +-
 include/qemu/coroutine-core.h     |  2 +-
 include/qemu/coroutine.h          |  2 +-
 hw/block/dataplane/virtio-blk.c   |  8 ++++----
 hw/block/virtio-blk.c             |  2 +-
 hw/scsi/virtio-scsi-dataplane.c   |  6 +++---
 net/tap.c                         |  2 +-
 12 files changed, 27 insertions(+), 28 deletions(-)

diff --git a/docs/devel/multi-thread-tcg.rst b/docs/devel/multi-thread-tcg.rst
index c9541a7b20..7302c3bf53 100644
--- a/docs/devel/multi-thread-tcg.rst
+++ b/docs/devel/multi-thread-tcg.rst
@@ -226,10 +226,9 @@ instruction. This could be a future optimisation.
 Emulated hardware state
 -----------------------
 
-Currently thanks to KVM work any access to IO memory is automatically
-protected by the global iothread mutex, also known as the BQL (Big
-QEMU Lock). Any IO region that doesn't use global mutex is expected to
-do its own locking.
+Currently thanks to KVM work any access to IO memory is automatically protected
+by the BQL (Big QEMU Lock). Any IO region that doesn't use the BQL is expected
+to do its own locking.
 
 However IO memory isn't the only way emulated hardware state can be
 modified. Some architectures have model specific registers that
diff --git a/docs/devel/qapi-code-gen.rst b/docs/devel/qapi-code-gen.rst
index 7f78183cd4..ea8228518c 100644
--- a/docs/devel/qapi-code-gen.rst
+++ b/docs/devel/qapi-code-gen.rst
@@ -594,7 +594,7 @@ blocking the guest and other background operations.
 Coroutine safety can be hard to prove, similar to thread safety.  Common
 pitfalls are:
 
-- The global mutex isn't held across ``qemu_coroutine_yield()``, so
+- The BQL isn't held across ``qemu_coroutine_yield()``, so
   operations that used to assume that they execute atomically may have
   to be more careful to protect against changes in the global state.
 
diff --git a/docs/devel/replay.rst b/docs/devel/replay.rst
index 0244be8b9c..effd856f0c 100644
--- a/docs/devel/replay.rst
+++ b/docs/devel/replay.rst
@@ -184,7 +184,7 @@ modes.
 Reading and writing requests are created by CPU thread of QEMU. Later these
 requests proceed to block layer which creates "bottom halves". Bottom
 halves consist of callback and its parameters. They are processed when
-main loop locks the global mutex. These locks are not synchronized with
+main loop locks the BQL. These locks are not synchronized with
 replaying process because main loop also processes the events that do not
 affect the virtual machine state (like user interaction with monitor).
 
diff --git a/docs/devel/multiple-iothreads.txt b/docs/devel/multiple-iothreads.txt
index 4865196bde..de85767b12 100644
--- a/docs/devel/multiple-iothreads.txt
+++ b/docs/devel/multiple-iothreads.txt
@@ -5,7 +5,7 @@ the COPYING file in the top-level directory.
 
 
 This document explains the IOThread feature and how to write code that runs
-outside the QEMU global mutex.
+outside the BQL.
 
 The main loop and IOThreads
 ---------------------------
@@ -29,13 +29,13 @@ scalability bottleneck on hosts with many CPUs.  Work can be spread across
 several IOThreads instead of just one main loop.  When set up correctly this
 can improve I/O latency and reduce jitter seen by the guest.
 
-The main loop is also deeply associated with the QEMU global mutex, which is a
-scalability bottleneck in itself.  vCPU threads and the main loop use the QEMU
-global mutex to serialize execution of QEMU code.  This mutex is necessary
-because a lot of QEMU's code historically was not thread-safe.
+The main loop is also deeply associated with the BQL, which is a
+scalability bottleneck in itself.  vCPU threads and the main loop use the BQL
+to serialize execution of QEMU code.  This mutex is necessary because a lot of
+QEMU's code historically was not thread-safe.
 
 The fact that all I/O processing is done in a single main loop and that the
-QEMU global mutex is contended by all vCPU threads and the main loop explain
+BQL is contended by all vCPU threads and the main loop explain
 why it is desirable to place work into IOThreads.
 
 The experimental virtio-blk data-plane implementation has been benchmarked and
@@ -66,7 +66,7 @@ There are several old APIs that use the main loop AioContext:
 
 Since they implicitly work on the main loop they cannot be used in code that
 runs in an IOThread.  They might cause a crash or deadlock if called from an
-IOThread since the QEMU global mutex is not held.
+IOThread since the BQL is not held.
 
 Instead, use the AioContext functions directly (see include/block/aio.h):
  * aio_set_fd_handler() - monitor a file descriptor
diff --git a/include/block/blockjob.h b/include/block/blockjob.h
index e594c10d23..7061ab7201 100644
--- a/include/block/blockjob.h
+++ b/include/block/blockjob.h
@@ -54,7 +54,7 @@ typedef struct BlockJob {
 
     /**
      * Speed that was set with @block_job_set_speed.
-     * Always modified and read under QEMU global mutex (GLOBAL_STATE_CODE).
+     * Always modified and read under the BQL (GLOBAL_STATE_CODE).
      */
     int64_t speed;
 
@@ -66,7 +66,7 @@ typedef struct BlockJob {
 
     /**
      * Block other operations when block job is running.
-     * Always modified and read under QEMU global mutex (GLOBAL_STATE_CODE).
+     * Always modified and read under the BQL (GLOBAL_STATE_CODE).
      */
     Error *blocker;
 
@@ -89,7 +89,7 @@ typedef struct BlockJob {
 
     /**
      * BlockDriverStates that are involved in this block job.
-     * Always modified and read under QEMU global mutex (GLOBAL_STATE_CODE).
+     * Always modified and read under the BQL (GLOBAL_STATE_CODE).
      */
     GSList *nodes;
 } BlockJob;
diff --git a/include/io/task.h b/include/io/task.h
index dc7d32ebd0..0b5342ee84 100644
--- a/include/io/task.h
+++ b/include/io/task.h
@@ -149,7 +149,7 @@ typedef void (*QIOTaskWorker)(QIOTask *task,
  * lookups) to be easily run non-blocking. Reporting the
  * results in the main thread context means that the caller
  * typically does not need to be concerned about thread
- * safety wrt the QEMU global mutex.
+ * safety wrt the BQL.
  *
  * For example, the socket_listen() method will block the caller
  * while DNS lookups take place if given a name, instead of IP
diff --git a/include/qemu/coroutine-core.h b/include/qemu/coroutine-core.h
index 230bb56517..503bad6e0e 100644
--- a/include/qemu/coroutine-core.h
+++ b/include/qemu/coroutine-core.h
@@ -22,7 +22,7 @@
  * rather than callbacks, for operations that need to give up control while
  * waiting for events to complete.
  *
- * These functions are re-entrant and may be used outside the global mutex.
+ * These functions are re-entrant and may be used outside the BQL.
  *
  * Functions that execute in coroutine context cannot be called
  * directly from normal functions.  Use @coroutine_fn to mark such
diff --git a/include/qemu/coroutine.h b/include/qemu/coroutine.h
index a65be6697f..e6aff45301 100644
--- a/include/qemu/coroutine.h
+++ b/include/qemu/coroutine.h
@@ -26,7 +26,7 @@
  * rather than callbacks, for operations that need to give up control while
  * waiting for events to complete.
  *
- * These functions are re-entrant and may be used outside the global mutex.
+ * These functions are re-entrant and may be used outside the BQL.
  *
  * Functions that execute in coroutine context cannot be called
  * directly from normal functions.  Use @coroutine_fn to mark such
diff --git a/hw/block/dataplane/virtio-blk.c b/hw/block/dataplane/virtio-blk.c
index 97a302cf49..ba22732497 100644
--- a/hw/block/dataplane/virtio-blk.c
+++ b/hw/block/dataplane/virtio-blk.c
@@ -84,7 +84,7 @@ apply_vq_mapping(IOThreadVirtQueueMappingList *iothread_vq_mapping_list,
     }
 }
 
-/* Context: QEMU global mutex held */
+/* Context: BQL held */
 bool virtio_blk_data_plane_create(VirtIODevice *vdev, VirtIOBlkConf *conf,
                                   VirtIOBlockDataPlane **dataplane,
                                   Error **errp)
@@ -148,7 +148,7 @@ bool virtio_blk_data_plane_create(VirtIODevice *vdev, VirtIOBlkConf *conf,
     return true;
 }
 
-/* Context: QEMU global mutex held */
+/* Context: BQL held */
 void virtio_blk_data_plane_destroy(VirtIOBlockDataPlane *s)
 {
     VirtIOBlock *vblk;
@@ -179,7 +179,7 @@ void virtio_blk_data_plane_destroy(VirtIOBlockDataPlane *s)
     g_free(s);
 }
 
-/* Context: QEMU global mutex held */
+/* Context: BQL held */
 int virtio_blk_data_plane_start(VirtIODevice *vdev)
 {
     VirtIOBlock *vblk = VIRTIO_BLK(vdev);
@@ -310,7 +310,7 @@ static void virtio_blk_data_plane_stop_vq_bh(void *opaque)
     virtio_queue_host_notifier_read(host_notifier);
 }
 
-/* Context: QEMU global mutex held */
+/* Context: BQL held */
 void virtio_blk_data_plane_stop(VirtIODevice *vdev)
 {
     VirtIOBlock *vblk = VIRTIO_BLK(vdev);
diff --git a/hw/block/virtio-blk.c b/hw/block/virtio-blk.c
index 46e73b2c96..f84339b10b 100644
--- a/hw/block/virtio-blk.c
+++ b/hw/block/virtio-blk.c
@@ -1539,7 +1539,7 @@ static void virtio_blk_resize(void *opaque)
     VirtIODevice *vdev = VIRTIO_DEVICE(opaque);
 
     /*
-     * virtio_notify_config() needs to acquire the global mutex,
+     * virtio_notify_config() needs to acquire the BQL,
      * so it can't be called from an iothread. Instead, schedule
      * it to be run in the main context BH.
      */
diff --git a/hw/scsi/virtio-scsi-dataplane.c b/hw/scsi/virtio-scsi-dataplane.c
index 135e23fe54..2806a121b2 100644
--- a/hw/scsi/virtio-scsi-dataplane.c
+++ b/hw/scsi/virtio-scsi-dataplane.c
@@ -20,7 +20,7 @@
 #include "scsi/constants.h"
 #include "hw/virtio/virtio-bus.h"
 
-/* Context: QEMU global mutex held */
+/* Context: BQL held */
 void virtio_scsi_dataplane_setup(VirtIOSCSI *s, Error **errp)
 {
     VirtIOSCSICommon *vs = VIRTIO_SCSI_COMMON(s);
@@ -93,7 +93,7 @@ static void virtio_scsi_dataplane_stop_bh(void *opaque)
     }
 }
 
-/* Context: QEMU global mutex held */
+/* Context: BQL held */
 int virtio_scsi_dataplane_start(VirtIODevice *vdev)
 {
     int i;
@@ -185,7 +185,7 @@ fail_guest_notifiers:
     return -ENOSYS;
 }
 
-/* Context: QEMU global mutex held */
+/* Context: BQL held */
 void virtio_scsi_dataplane_stop(VirtIODevice *vdev)
 {
     BusState *qbus = qdev_get_parent_bus(DEVICE(vdev));
diff --git a/net/tap.c b/net/tap.c
index c23d0323c2..c698b70475 100644
--- a/net/tap.c
+++ b/net/tap.c
@@ -219,7 +219,7 @@ static void tap_send(void *opaque)
 
         /*
          * When the host keeps receiving more packets while tap_send() is
-         * running we can hog the QEMU global mutex.  Limit the number of
+         * running we can hog the BQL.  Limit the number of
          * packets that are processed per tap_send() callback to prevent
          * stalling the guest.
          */
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Tue Jan 02 16:02:59 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 02 Jan 2024 16:02:59 +0000
Received: from list by lists.xenproject.org with outflank-mailman.660779.1030373 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rKhEB-0001Y9-Bm; Tue, 02 Jan 2024 16:02:51 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 660779.1030373; Tue, 02 Jan 2024 16:02:51 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rKhEB-0001Y2-9B; Tue, 02 Jan 2024 16:02:51 +0000
Received: by outflank-mailman (input) for mailman id 660779;
 Tue, 02 Jan 2024 16:02:49 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=hBD0=IM=kaod.org=clg@ozlabs.org>)
 id 1rKhE9-0001Xw-UB
 for xen-devel@lists.xenproject.org; Tue, 02 Jan 2024 16:02:49 +0000
Received: from gandalf.ozlabs.org (mail.ozlabs.org [2404:9400:2221:ea00::3])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 5da1115c-a988-11ee-98ef-6d05b1d4d9a1;
 Tue, 02 Jan 2024 17:02:47 +0100 (CET)
Received: from gandalf.ozlabs.org (gandalf.ozlabs.org [150.107.74.76])
 by gandalf.ozlabs.org (Postfix) with ESMTP id 4T4HgQ2NfRz4x22;
 Wed,  3 Jan 2024 03:02:42 +1100 (AEDT)
Received: from authenticated.ozlabs.org (localhost [127.0.0.1])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
 (No client certificate requested)
 by mail.ozlabs.org (Postfix) with ESMTPSA id 4T4Hfs3GGMz4x23;
 Wed,  3 Jan 2024 03:02:13 +1100 (AEDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 5da1115c-a988-11ee-98ef-6d05b1d4d9a1
Message-ID: <6fe17c0c-e9c4-46fc-bac0-8e977e531c8c@kaod.org>
Date: Tue, 2 Jan 2024 17:02:08 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 4/5] Replace "iothread lock" with "BQL" in comments
Content-Language: en-US
To: Stefan Hajnoczi <stefanha@redhat.com>, qemu-devel@nongnu.org
Cc: Hanna Reitz <hreitz@redhat.com>, qemu-riscv@nongnu.org,
 Roman Bolshakov <rbolshakov@ddn.com>,
 Elena Ufimtseva <elena.ufimtseva@oracle.com>,
 Eduardo Habkost <eduardo@habkost.net>, Thomas Huth <thuth@redhat.com>,
 qemu-block@nongnu.org, Andrey Smirnov <andrew.smirnov@gmail.com>,
 Peter Maydell <peter.maydell@linaro.org>, Huacai Chen
 <chenhuacai@kernel.org>, Fam Zheng <fam@euphon.net>,
 Gerd Hoffmann <kraxel@redhat.com>, David Gibson
 <david@gibson.dropbear.id.au>, John Snow <jsnow@redhat.com>,
 Stafford Horne <shorne@gmail.com>, Weiwei Li <liwei1518@gmail.com>,
 Jean-Christophe Dubois <jcd@tribudubois.net>,
 Cameron Esfahani <dirty@apple.com>, Alexander Graf <agraf@csgraf.de>,
 David Hildenbrand <david@redhat.com>, Juan Quintela <quintela@redhat.com>,
 Nicholas Piggin <npiggin@gmail.com>, Max Filippov <jcmvbkbc@gmail.com>,
 =?UTF-8?Q?Daniel_P=2E_Berrang=C3=A9?= <berrange@redhat.com>,
 Paolo Bonzini <pbonzini@redhat.com>,
 Daniel Henrique Barboza <danielhb413@gmail.com>,
 Markus Armbruster <armbru@redhat.com>, Peter Xu <peterx@redhat.com>,
 Vladimir Sementsov-Ogievskiy <vsementsov@yandex-team.ru>,
 Richard Henderson <richard.henderson@linaro.org>, qemu-s390x@nongnu.org,
 Jiri Slaby <jslaby@suse.cz>, Pavel Dovgalyuk <pavel.dovgaluk@ispras.ru>,
 Eric Blake <eblake@redhat.com>, Akihiko Odaki <akihiko.odaki@daynix.com>,
 =?UTF-8?Q?Alex_Benn=C3=A9e?= <alex.bennee@linaro.org>,
 Aleksandar Rikalo <aleksandar.rikalo@syrmia.com>,
 "Michael S. Tsirkin" <mst@redhat.com>, Jason Wang <jasowang@redhat.com>,
 Jiaxun Yang <jiaxun.yang@flygoat.com>,
 Sunil Muthuswamy <sunilmut@microsoft.com>,
 Alistair Francis <alistair.francis@wdc.com>,
 =?UTF-8?Q?Philippe_Mathieu-Daud=C3=A9?= <philmd@linaro.org>,
 Fabiano Rosas <farosas@suse.de>, Michael Roth <michael.roth@amd.com>,
 Paul Durrant <paul@xen.org>, Jagannathan Raman <jag.raman@oracle.com>,
 Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>,
 Stefano Stabellini <sstabellini@kernel.org>,
 Hyman Huang <yong.huang@smartx.com>,
 =?UTF-8?Q?Marc-Andr=C3=A9_Lureau?= <marcandre.lureau@redhat.com>,
 xen-devel@lists.xenproject.org, Halil Pasic <pasic@linux.ibm.com>,
 Christian Borntraeger <borntraeger@linux.ibm.com>,
 Song Gao <gaosong@loongson.cn>, Kevin Wolf <kwolf@redhat.com>,
 Ilya Leoshkevich <iii@linux.ibm.com>, Artyom Tarasenko
 <atar4qemu@gmail.com>, Marcel Apfelbaum <marcel.apfelbaum@gmail.com>,
 Reinoud Zandijk <reinoud@netbsd.org>, qemu-ppc@nongnu.org,
 Marcelo Tosatti <mtosatti@redhat.com>, David Woodhouse
 <dwmw2@infradead.org>, Aurelien Jarno <aurelien@aurel32.net>,
 Bin Meng <bin.meng@windriver.com>, qemu-arm@nongnu.org,
 Anthony Perard <anthony.perard@citrix.com>,
 Leonardo Bras <leobras@redhat.com>,
 Hailiang Zhang <zhanghailiang@xfusion.com>,
 Harsh Prateek Bora <harshpb@linux.ibm.com>, kvm@vger.kernel.org,
 Palmer Dabbelt <palmer@dabbelt.com>, Eric Farman <farman@linux.ibm.com>,
 BALATON Zoltan <balaton@eik.bme.hu>,
 Liu Zhiwei <zhiwei_liu@linux.alibaba.com>
References: <20240102153529.486531-1-stefanha@redhat.com>
 <20240102153529.486531-5-stefanha@redhat.com>
From: =?UTF-8?Q?C=C3=A9dric_Le_Goater?= <clg@kaod.org>
In-Reply-To: <20240102153529.486531-5-stefanha@redhat.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit

On 1/2/24 16:35, Stefan Hajnoczi wrote:
> The term "iothread lock" is obsolete. The APIs use Big QEMU Lock (BQL)
> in their names. Update the code comments to use "BQL" instead of
> "iothread lock".
> 
> Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
> Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>


Reviewed-by: Cédric Le Goater <clg@kaod.org>

Thanks,

C.





From xen-devel-bounces@lists.xenproject.org Tue Jan 02 16:05:42 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 02 Jan 2024 16:05:42 +0000
Received: from list by lists.xenproject.org with outflank-mailman.660784.1030384 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rKhGt-0002Ab-QD; Tue, 02 Jan 2024 16:05:39 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 660784.1030384; Tue, 02 Jan 2024 16:05:39 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rKhGt-0002AU-MF; Tue, 02 Jan 2024 16:05:39 +0000
Received: by outflank-mailman (input) for mailman id 660784;
 Tue, 02 Jan 2024 16:05:38 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=hBD0=IM=kaod.org=clg@ozlabs.org>)
 id 1rKhGs-0002AK-Tz
 for xen-devel@lists.xenproject.org; Tue, 02 Jan 2024 16:05:38 +0000
Received: from gandalf.ozlabs.org (gandalf.ozlabs.org [150.107.74.76])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id c30124a3-a988-11ee-9b0f-b553b5be7939;
 Tue, 02 Jan 2024 17:05:36 +0100 (CET)
Received: from gandalf.ozlabs.org (mail.ozlabs.org
 [IPv6:2404:9400:2221:ea00::3])
 by gandalf.ozlabs.org (Postfix) with ESMTP id 4T4Hkj6Q0lz4wdB;
 Wed,  3 Jan 2024 03:05:33 +1100 (AEDT)
Received: from authenticated.ozlabs.org (localhost [127.0.0.1])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (4096 bits))
 (No client certificate requested)
 by mail.ozlabs.org (Postfix) with ESMTPSA id 4T4HkK0K3sz4wcM;
 Wed,  3 Jan 2024 03:05:12 +1100 (AEDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: c30124a3-a988-11ee-9b0f-b553b5be7939
Message-ID: <5bcc750f-2736-4eca-aec2-f45e56a6fa92@kaod.org>
Date: Tue, 2 Jan 2024 17:05:09 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 5/5] Rename "QEMU global mutex" to "BQL" in comments
 and docs
Content-Language: en-US
To: Stefan Hajnoczi <stefanha@redhat.com>, qemu-devel@nongnu.org
Cc: Hanna Reitz <hreitz@redhat.com>, qemu-riscv@nongnu.org,
 Roman Bolshakov <rbolshakov@ddn.com>,
 Elena Ufimtseva <elena.ufimtseva@oracle.com>,
 Eduardo Habkost <eduardo@habkost.net>, Thomas Huth <thuth@redhat.com>,
 qemu-block@nongnu.org, Andrey Smirnov <andrew.smirnov@gmail.com>,
 Peter Maydell <peter.maydell@linaro.org>, Huacai Chen
 <chenhuacai@kernel.org>, Fam Zheng <fam@euphon.net>,
 Gerd Hoffmann <kraxel@redhat.com>, David Gibson
 <david@gibson.dropbear.id.au>, John Snow <jsnow@redhat.com>,
 Stafford Horne <shorne@gmail.com>, Weiwei Li <liwei1518@gmail.com>,
 Jean-Christophe Dubois <jcd@tribudubois.net>,
 Cameron Esfahani <dirty@apple.com>, Alexander Graf <agraf@csgraf.de>,
 David Hildenbrand <david@redhat.com>, Juan Quintela <quintela@redhat.com>,
 Nicholas Piggin <npiggin@gmail.com>, Max Filippov <jcmvbkbc@gmail.com>,
 =?UTF-8?Q?Daniel_P=2E_Berrang=C3=A9?= <berrange@redhat.com>,
 Paolo Bonzini <pbonzini@redhat.com>,
 Daniel Henrique Barboza <danielhb413@gmail.com>,
 Markus Armbruster <armbru@redhat.com>, Peter Xu <peterx@redhat.com>,
 Vladimir Sementsov-Ogievskiy <vsementsov@yandex-team.ru>,
 Richard Henderson <richard.henderson@linaro.org>, qemu-s390x@nongnu.org,
 Jiri Slaby <jslaby@suse.cz>, Pavel Dovgalyuk <pavel.dovgaluk@ispras.ru>,
 Eric Blake <eblake@redhat.com>, Akihiko Odaki <akihiko.odaki@daynix.com>,
 =?UTF-8?Q?Alex_Benn=C3=A9e?= <alex.bennee@linaro.org>,
 Aleksandar Rikalo <aleksandar.rikalo@syrmia.com>,
 "Michael S. Tsirkin" <mst@redhat.com>, Jason Wang <jasowang@redhat.com>,
 Jiaxun Yang <jiaxun.yang@flygoat.com>,
 Sunil Muthuswamy <sunilmut@microsoft.com>,
 Alistair Francis <alistair.francis@wdc.com>,
 =?UTF-8?Q?Philippe_Mathieu-Daud=C3=A9?= <philmd@linaro.org>,
 Fabiano Rosas <farosas@suse.de>, Michael Roth <michael.roth@amd.com>,
 Paul Durrant <paul@xen.org>, Jagannathan Raman <jag.raman@oracle.com>,
 Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>,
 Stefano Stabellini <sstabellini@kernel.org>,
 Hyman Huang <yong.huang@smartx.com>,
 =?UTF-8?Q?Marc-Andr=C3=A9_Lureau?= <marcandre.lureau@redhat.com>,
 xen-devel@lists.xenproject.org, Halil Pasic <pasic@linux.ibm.com>,
 Christian Borntraeger <borntraeger@linux.ibm.com>,
 Song Gao <gaosong@loongson.cn>, Kevin Wolf <kwolf@redhat.com>,
 Ilya Leoshkevich <iii@linux.ibm.com>, Artyom Tarasenko
 <atar4qemu@gmail.com>, Marcel Apfelbaum <marcel.apfelbaum@gmail.com>,
 Reinoud Zandijk <reinoud@netbsd.org>, qemu-ppc@nongnu.org,
 Marcelo Tosatti <mtosatti@redhat.com>, David Woodhouse
 <dwmw2@infradead.org>, Aurelien Jarno <aurelien@aurel32.net>,
 Bin Meng <bin.meng@windriver.com>, qemu-arm@nongnu.org,
 Anthony Perard <anthony.perard@citrix.com>,
 Leonardo Bras <leobras@redhat.com>,
 Hailiang Zhang <zhanghailiang@xfusion.com>,
 Harsh Prateek Bora <harshpb@linux.ibm.com>, kvm@vger.kernel.org,
 Palmer Dabbelt <palmer@dabbelt.com>, Eric Farman <farman@linux.ibm.com>,
 BALATON Zoltan <balaton@eik.bme.hu>,
 Liu Zhiwei <zhiwei_liu@linux.alibaba.com>
References: <20240102153529.486531-1-stefanha@redhat.com>
 <20240102153529.486531-6-stefanha@redhat.com>
From: =?UTF-8?Q?C=C3=A9dric_Le_Goater?= <clg@kaod.org>
In-Reply-To: <20240102153529.486531-6-stefanha@redhat.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit

On 1/2/24 16:35, Stefan Hajnoczi wrote:
> The term "QEMU global mutex" is identical to the more widely used Big
> QEMU Lock ("BQL"). Update the code comments and documentation to use
> "BQL" instead of "QEMU global mutex".
> 
> Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
> Acked-by: Markus Armbruster <armbru@redhat.com>
> Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>


Reviewed-by: Cédric Le Goater <clg@kaod.org>

Thanks,

C.




From xen-devel-bounces@lists.xenproject.org Tue Jan 02 16:59:43 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 02 Jan 2024 16:59:43 +0000
Received: from list by lists.xenproject.org with outflank-mailman.660792.1030394 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rKi70-0007rq-N8; Tue, 02 Jan 2024 16:59:30 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 660792.1030394; Tue, 02 Jan 2024 16:59:30 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rKi70-0007rj-KF; Tue, 02 Jan 2024 16:59:30 +0000
Received: by outflank-mailman (input) for mailman id 660792;
 Tue, 02 Jan 2024 16:59:29 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=KMnO=IM=gmail.com=oleksii.kurochko@srs-se1.protection.inumbo.net>)
 id 1rKi6z-0007p3-5v
 for xen-devel@lists.xenproject.org; Tue, 02 Jan 2024 16:59:29 +0000
Received: from mail-lj1-x229.google.com (mail-lj1-x229.google.com
 [2a00:1450:4864:20::229])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 491ea738-a990-11ee-9b0f-b553b5be7939;
 Tue, 02 Jan 2024 17:59:26 +0100 (CET)
Received: by mail-lj1-x229.google.com with SMTP id
 38308e7fff4ca-2ccbc328744so76447621fa.3
 for <xen-devel@lists.xenproject.org>; Tue, 02 Jan 2024 08:59:26 -0800 (PST)
Received: from [192.168.220.211] ([94.75.70.14])
 by smtp.gmail.com with ESMTPSA id
 d14-20020a05651c01ce00b002ccc5f01c49sm2455308ljn.83.2024.01.02.08.59.23
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 02 Jan 2024 08:59:24 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 491ea738-a990-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1704214765; x=1704819565; darn=lists.xenproject.org;
        h=mime-version:user-agent:content-transfer-encoding:references
         :in-reply-to:date:cc:to:from:subject:message-id:from:to:cc:subject
         :date:message-id:reply-to;
        bh=GHB74tuse0d4xjbuj4Hx6CiYW1Afi3meGCt1zNvd1j8=;
        b=mBKwHnsJ9ySEPDP5DWLLaQJGgSD9M4BmoGeXX8ENtlK3maVnj8vh3c0O1bVgiQjnYD
         Sl/NmrdP33BW8/ejU1bDDLHpH1gFQxQG2hLvM30E0BqetB5EPY3WTKyXrAiZJUi2aA1P
         9mDVfgrE3nyQlTououexnjg/12k+c8wUutkOM6D3iXRteegteaoiMxbLVAuVWkpFgrUG
         5/NodtX0Em0H3rWHbrGkQyuD7CqHJTXAhPBw1Wn8cFKlUlzj5lXAjCdflZ8W+z7tGBN/
         Sz/DlNvJDz1jAZ4VSxkJyBz4CL5tB+cLINJZU9iSaIHwAb3xmiAHdl3HmwZYvK1hmVdB
         F9gA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704214765; x=1704819565;
        h=mime-version:user-agent:content-transfer-encoding:references
         :in-reply-to:date:cc:to:from:subject:message-id:x-gm-message-state
         :from:to:cc:subject:date:message-id:reply-to;
        bh=GHB74tuse0d4xjbuj4Hx6CiYW1Afi3meGCt1zNvd1j8=;
        b=vPSwBZr5DoVaGSA9l/Rv1e3y1KSA39lwJ2ZXgJhwrgLs8JyPPQKYLxomG869GyAuEs
         Q29PqI2pLJhL5vlw4VmQV1E1nasfuibtDPpJ+bgK8te11L0C6sK9mcGl378mlNAajwrw
         RbEsn7UitIxrDbSwNScgFcx8uXzAtK8NsU6WjToO2NM7Nm80R8RZUkXhbxUiseqLW41V
         O1RWVAeNQJ5Ixvp2ZhJmkynfBxRHAatm8WQlpNqSWpj7QKay8zIQlz3Bq2s4a4ECZWB9
         vfA9HfDjhFVP/oydc/KSeZ+kGGLneoI3w4sRGuLSHNioyZXqZ6D12UjodnlbysjfInq7
         9pUA==
X-Gm-Message-State: AOJu0YzD/Oq+RzT/5MY+4t+WO8JwaoN7jogQxqUsjJ/h9X8rYe6T5RrC
	sK9d8wPDdn2VyQGCF5PdRkuCSl5rYkk=
X-Google-Smtp-Source: AGHT+IFAhdh1p0ip7Gc3Fhr8IGJYJIJwd343RPr+ux8b7xnmzUQ7OJG436GK5zpXLs1QUzJDyGIHaA==
X-Received: by 2002:a05:651c:388:b0:2c8:39fc:acf5 with SMTP id e8-20020a05651c038800b002c839fcacf5mr6052412ljp.2.1704214764835;
        Tue, 02 Jan 2024 08:59:24 -0800 (PST)
Message-ID: <26152790b0b8c3330d9cfc3c0462a1c072d6d598.camel@gmail.com>
Subject: Xen 4.19 release schedule proposal
From: Oleksii <oleksii.kurochko@gmail.com>
To: xen-devel@lists.xenproject.org
Cc: community.manager@xenproject.org, julien@xen.org,
 sstabellini@kernel.org,  Bertrand.Marquis@arm.com,
 andrew.cooper3@citrix.com, jbeulich@suse.com,  roger.pau@citrix.com,
 anthony.perard@citrix.com, george.dunlap@cloud.com,  jgross@suse.com,
 Wei.Chen@arm.com
Date: Tue, 02 Jan 2024 18:59:22 +0200
In-Reply-To: <0f729b61-b839-48f6-89ae-b5570b1eae0b@xen.org>
References: <cover.1703072575.git.oleksii.kurochko@gmail.com>
	 <08bca9a4158a190a0a953e5bc071a512cfe5f0f8.1703072575.git.oleksii.kurochko@gmail.com>
	 <341249d1-217f-4ad2-9455-b1aded4b9b56@xen.org>
	 <03cf5145-2124-4150-9f20-904f08bcabda@suse.com>
	 <9f8c4fe0a87742444b52a42aa5924cf046ee18b0.camel@gmail.com>
	 <67bf2be7-53f4-40d0-a856-8ae631a054b0@suse.com>
	 <955e9b02-20bd-4279-9f60-bb757cdf1a03@xen.org>
	 <0f729b61-b839-48f6-89ae-b5570b1eae0b@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
User-Agent: Evolution 3.50.2 (3.50.2-1.fc39) 
MIME-Version: 1.0

Dear community,

Wishing you a Happy New Year!

I'd like to propose the release schedule for Xen 4.19.

Based on the previous release schedules [1] and [2], it seems the next
release date should be on Wednesday, July 10, 2024:

** Proposed option: Wed Jul 10, 2024 **
(+9 months from Xen 4.18 release)

- Last posting date          Fri Apr 26, 2024

Patches adding new features are expected to be posted to the mailing
list by this date, although perhaps not in their final version.

- Feature freeze             Fri May 17, 2024 (+3 weeks from Last
posting date)

Patches adding new features should be committed by this date.
Straightforward bugfixes may continue to be accepted by maintainers.

- Code freeze                Fri May 31, 2024 (+2 weeks from Feature
freeze)

Bugfixes only.

- Hard code freeze           Fri Jun 21, 2024 (+3 weeks from Code
freeze)

Bugfixes for serious bugs (including regressions), and low-risk fixes
only.

- Final commits              Fri Jul 05, 2024 (+2 weeks from Hard code
freeze)

Branch off staging-4.19.

- Release                    Wed Jul 10, 2024

If there are no objections, we will stick to the proposed schedule.

One more thing I'd like to discuss is whether to add a file
(RELEASE.md) with the release schedule to the source code or update an
existing one (xen-release-management.pandoc). I think it will help to
find the final release schedule for the nearest release. For example,
for the previous release, there are a lot of emails with proposed
schedules, polls of Xen release schedules, and I found the final
release schedule in just one of the replies (but probably I missed
something).

I'll be happy to hear any comments from you. Thanks in advance.

Best regards,
 Oleksii

[1]
https://lore.kernel.org/xen-devel/AS8PR08MB7991424A3167C70A9B29530C92929@AS=
8PR08MB7991.eurprd08.prod.outlook.com/
[2] https://lists.xen.org/archives/html/xen-devel/2018-07/msg02240.html


From xen-devel-bounces@lists.xenproject.org Tue Jan 02 17:01:50 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 02 Jan 2024 17:01:50 +0000
Received: from list by lists.xenproject.org with outflank-mailman.660796.1030404 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rKi9F-0001D1-3u; Tue, 02 Jan 2024 17:01:49 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 660796.1030404; Tue, 02 Jan 2024 17:01:49 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rKi9F-0001Cu-01; Tue, 02 Jan 2024 17:01:49 +0000
Received: by outflank-mailman (input) for mailman id 660796;
 Tue, 02 Jan 2024 17:01:47 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=KMnO=IM=gmail.com=oleksii.kurochko@srs-se1.protection.inumbo.net>)
 id 1rKi9D-0001Co-ON
 for xen-devel@lists.xenproject.org; Tue, 02 Jan 2024 17:01:47 +0000
Received: from mail-lj1-x231.google.com (mail-lj1-x231.google.com
 [2a00:1450:4864:20::231])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 9c4be82f-a990-11ee-9b0f-b553b5be7939;
 Tue, 02 Jan 2024 18:01:45 +0100 (CET)
Received: by mail-lj1-x231.google.com with SMTP id
 38308e7fff4ca-2cca5e7b390so96061661fa.3
 for <xen-devel@lists.xenproject.org>; Tue, 02 Jan 2024 09:01:45 -0800 (PST)
Received: from [192.168.220.211] ([94.75.70.14])
 by smtp.gmail.com with ESMTPSA id
 w14-20020a2e300e000000b002ccd1b79639sm3278959ljw.43.2024.01.02.09.01.44
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 02 Jan 2024 09:01:44 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 9c4be82f-a990-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1704214905; x=1704819705; darn=lists.xenproject.org;
        h=mime-version:user-agent:content-transfer-encoding:date:cc:to:from
         :subject:message-id:from:to:cc:subject:date:message-id:reply-to;
        bh=GHB74tuse0d4xjbuj4Hx6CiYW1Afi3meGCt1zNvd1j8=;
        b=FhkiQCWmS3uQj32HSujAK9/Ocdfk2bWS7x3D1zMBTeUE+0isXiDGp5AWnJ5INVRMMr
         p3UpuJ2EP3k6pQDQ08KfWCQg7wR8flBpgg6VLM8C/gihYbTYuaZtRIrPAZoD1jI2i4wR
         klXfIZlIp09pFP8VEPKfok5TTk8o/rzBoEmVf34S11ZN54jXX8CHmlQF9Q/1dDvThYuV
         qkssStMfzHV2fXsQ14qvESlPtWMxQwp2mYIADGfiX892h7wOsg3bcQF50pQx3ZMAKmL9
         3bTBFcY9/GPAOYEUBhMYe7fX9W32GVaNbd4lIKw5mVmTRkY2mz+H1qazpql49RqgZtHQ
         cl9w==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704214905; x=1704819705;
        h=mime-version:user-agent:content-transfer-encoding:date:cc:to:from
         :subject:message-id:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to;
        bh=GHB74tuse0d4xjbuj4Hx6CiYW1Afi3meGCt1zNvd1j8=;
        b=eINueCiDhcomynZdVD5geQRJxbIr2iR6SdgfVvOTOmuC8EgFV1hD5RVouBA2tuFGZJ
         7R0gduHRmUm7dze8R/MiFL2/Txpea0cwCSzaAsQPBUDzi8WX6sp/7QJrXxzOpfd7/5Hl
         1ozHkiqv9sLkGlKK8elI5SCH+tAkxhq93z95M6lRKj6J6dTdexBebdIlFExIAW4hAwF8
         gAYaZzHX/BwS6QfL+6vpzAaR5+hDJ3imLOa3oz+csWqkXOXt73qPRLaPlK/yyyrjEDz3
         uagyVq91lPj4I+sfZwh4LeNyckAxgG/FjVmkxnLADOMvoUGy5ziau3qNfdqvw9Et9fCh
         496w==
X-Gm-Message-State: AOJu0YywgKuoNJXlF3tR8SnzUIVJWsvoCnW74kHyadDYIwxfTvYuzeiT
	7U63pYH/28qmY8JTq5kc5EVTXYtWHEw=
X-Google-Smtp-Source: AGHT+IEEfp4cXhiPVZ/PnQtZMUkJfkKcU683fDdoNNvg5b7IOWEhNMeSpNrYkDesFnHNl/QvV5F8pw==
X-Received: by 2002:a2e:8556:0:b0:2cd:1038:3fa8 with SMTP id u22-20020a2e8556000000b002cd10383fa8mr546353ljj.104.1704214905012;
        Tue, 02 Jan 2024 09:01:45 -0800 (PST)
Message-ID: <5b323738a57fb3f7b41de00903e993360a5712eb.camel@gmail.com>
Subject: Xen 4.19 release schedule proposal
From: Oleksii <oleksii.kurochko@gmail.com>
To: xen-devel@lists.xenproject.org
Cc: community.manager@xenproject.org, julien@xen.org,
 sstabellini@kernel.org,  Bertrand.Marquis@arm.com,
 andrew.cooper3@citrix.com, jbeulich@suse.com,  roger.pau@citrix.com,
 anthony.perard@citrix.com, george.dunlap@cloud.com,  jgross@suse.com,
 Wei.Chen@arm.com
Date: Tue, 02 Jan 2024 19:01:42 +0200
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
User-Agent: Evolution 3.50.2 (3.50.2-1.fc39) 
MIME-Version: 1.0

Dear community,

Wishing you a Happy New Year!

I'd like to propose the release schedule for Xen 4.19.

Based on the previous release schedules [1] and [2], it seems the next
release date should be on Wednesday, July 10, 2024:

** Proposed option: Wed Jul 10, 2024 **
(+9 months from Xen 4.18 release)

- Last posting date          Fri Apr 26, 2024

Patches adding new features are expected to be posted to the mailing
list by this date, although perhaps not in their final version.

- Feature freeze             Fri May 17, 2024 (+3 weeks from Last
posting date)

Patches adding new features should be committed by this date.
Straightforward bugfixes may continue to be accepted by maintainers.

- Code freeze                Fri May 31, 2024 (+2 weeks from Feature
freeze)

Bugfixes only.

- Hard code freeze           Fri Jun 21, 2024 (+3 weeks from Code
freeze)

Bugfixes for serious bugs (including regressions), and low-risk fixes
only.

- Final commits              Fri Jul 05, 2024 (+2 weeks from Hard code
freeze)

Branch off staging-4.19.

- Release                    Wed Jul 10, 2024

If there are no objections, we will stick to the proposed schedule.

One more thing I'd like to discuss is whether to add a file
(RELEASE.md) with the release schedule to the source code or update an
existing one (xen-release-management.pandoc). I think it will help to
find the final release schedule for the nearest release. For example,
for the previous release, there are a lot of emails with proposed
schedules, polls of Xen release schedules, and I found the final
release schedule in just one of the replies (but probably I missed
something).

I'll be happy to hear any comments from you. Thanks in advance.

Best regards,
 Oleksii

[1]
https://lore.kernel.org/xen-devel/AS8PR08MB7991424A3167C70A9B29530C92929@AS=
8PR08MB7991.eurprd08.prod.outlook.com/
[2] https://lists.xen.org/archives/html/xen-devel/2018-07/msg02240.html


From xen-devel-bounces@lists.xenproject.org Tue Jan 02 17:03:42 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 02 Jan 2024 17:03:42 +0000
Received: from list by lists.xenproject.org with outflank-mailman.660800.1030414 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rKiB2-0001u3-E3; Tue, 02 Jan 2024 17:03:40 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 660800.1030414; Tue, 02 Jan 2024 17:03:40 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rKiB2-0001tw-BQ; Tue, 02 Jan 2024 17:03:40 +0000
Received: by outflank-mailman (input) for mailman id 660800;
 Tue, 02 Jan 2024 17:03:39 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=KMnO=IM=gmail.com=oleksii.kurochko@srs-se1.protection.inumbo.net>)
 id 1rKiB1-0001tq-1X
 for xen-devel@lists.xenproject.org; Tue, 02 Jan 2024 17:03:39 +0000
Received: from mail-lf1-x12f.google.com (mail-lf1-x12f.google.com
 [2a00:1450:4864:20::12f])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id de9b1c1b-a990-11ee-9b0f-b553b5be7939;
 Tue, 02 Jan 2024 18:03:37 +0100 (CET)
Received: by mail-lf1-x12f.google.com with SMTP id
 2adb3069b0e04-50e759ece35so7326445e87.3
 for <xen-devel@lists.xenproject.org>; Tue, 02 Jan 2024 09:03:37 -0800 (PST)
Received: from [192.168.220.211] ([94.75.70.14])
 by smtp.gmail.com with ESMTPSA id
 d25-20020a193859000000b0050e74e5a152sm3103055lfj.258.2024.01.02.09.03.33
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 02 Jan 2024 09:03:35 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: de9b1c1b-a990-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1704215016; x=1704819816; darn=lists.xenproject.org;
        h=mime-version:user-agent:content-transfer-encoding:references
         :in-reply-to:date:cc:to:from:subject:message-id:from:to:cc:subject
         :date:message-id:reply-to;
        bh=I+E9cE7AGsw6BkTS1wfoNobXZiyuELP3RDIRTKXpufk=;
        b=SALB2jWIU+CBEvchgF9iviLx28bYzW+0g1hpwfLL/5C6aczQqGUxSotyyrBUrylCEU
         qXqEoddm8KRmySX9HCi87B8dN4FAv4crBUTxiZSHihVAvj2tBDKX7opAL7kgN/rECGqv
         F05cKzQQFL2wXcA4/qx0oHAZPqu8SrOFJ+MMUVwCt3uCC9iZ4lDUZ1oceWS1E8xBr/W9
         qnjNP0KEIgd7dU1PVhbZxVaTYjdG4QKQ05O3nR9akJSnh2W3fRt+zK6nf3ljlECWGL+v
         LRujsgtojE5MGZ206mgsZ8jfqG3OAiPgSzA11lq8ON0LguQOczryWyCCLp370c0V0sVr
         LoWQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704215016; x=1704819816;
        h=mime-version:user-agent:content-transfer-encoding:references
         :in-reply-to:date:cc:to:from:subject:message-id:x-gm-message-state
         :from:to:cc:subject:date:message-id:reply-to;
        bh=I+E9cE7AGsw6BkTS1wfoNobXZiyuELP3RDIRTKXpufk=;
        b=C03afZh5YB/wPiJieMjotMh2pqENTjWXNg/f98Y489oQqe/Av3NNx4MDnha7diM/Q1
         AvjuUeLKbwi7c84ZkX64KcGNyJHhXr180WdLKsBNL0kb2TbpqKuQeCX5qIrfE4rPq0ii
         rBgn7h9NL3kij1MaE0tzQSo1yjIiakGOqk3Td0Wi3vfZSGJdSJSSuMflwuYvN4DbZoch
         8qZmA15OqNXHRYStKP/OfyuZTJg3h0z7TVyy12I10Y8M+jmAc0HMg60OS9eLyPbAryrE
         eRaaK8QBOaUhEXR8n2PNTWUaFSV/5tR9Sb+/1B3bS9dFo05fL6FfmPpR30lDU/OLy33s
         RPpQ==
X-Gm-Message-State: AOJu0YyjyDawybD2TRj6hLadlPBAUaaghuUxb+bF87gikl1huunhkUBF
	FQYD+pWATpDyt0a8syHiVDfTV3A1g9s=
X-Google-Smtp-Source: AGHT+IFmaWTYqmw9RAOt+zbo427myMIZOmPOXtcdDlizNDzQg8RcKtNRoyJH2ZgKVw8xLNB/MrDf7g==
X-Received: by 2002:a05:6512:39d2:b0:50e:8102:3ada with SMTP id k18-20020a05651239d200b0050e81023adamr4571893lfu.67.1704215015693;
        Tue, 02 Jan 2024 09:03:35 -0800 (PST)
Message-ID: <78162a7f9d1e38d6e09a53fc4c58edf7b7d5f2bc.camel@gmail.com>
Subject: Re: Xen 4.19 release schedule proposal
From: Oleksii <oleksii.kurochko@gmail.com>
To: xen-devel@lists.xenproject.org
Cc: community.manager@xenproject.org, julien@xen.org,
 sstabellini@kernel.org,  Bertrand.Marquis@arm.com,
 andrew.cooper3@citrix.com, jbeulich@suse.com,  roger.pau@citrix.com,
 anthony.perard@citrix.com, george.dunlap@cloud.com,  jgross@suse.com,
 Wei.Chen@arm.com
Date: Tue, 02 Jan 2024 19:03:32 +0200
In-Reply-To: <26152790b0b8c3330d9cfc3c0462a1c072d6d598.camel@gmail.com>
References: <cover.1703072575.git.oleksii.kurochko@gmail.com>
	 <08bca9a4158a190a0a953e5bc071a512cfe5f0f8.1703072575.git.oleksii.kurochko@gmail.com>
	 <341249d1-217f-4ad2-9455-b1aded4b9b56@xen.org>
	 <03cf5145-2124-4150-9f20-904f08bcabda@suse.com>
	 <9f8c4fe0a87742444b52a42aa5924cf046ee18b0.camel@gmail.com>
	 <67bf2be7-53f4-40d0-a856-8ae631a054b0@suse.com>
	 <955e9b02-20bd-4279-9f60-bb757cdf1a03@xen.org>
	 <0f729b61-b839-48f6-89ae-b5570b1eae0b@xen.org>
	 <26152790b0b8c3330d9cfc3c0462a1c072d6d598.camel@gmail.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
User-Agent: Evolution 3.50.2 (3.50.2-1.fc39) 
MIME-Version: 1.0

Something went wrong, and this email wasn't sent as a separate topic,
so I re-sent it.

Sorry for any inconvenience.

~ Oleksii
On Tue, 2024-01-02 at 18:59 +0200, Oleksii wrote:
> Dear community,
>=20
> Wishing you a Happy New Year!
>=20
> I'd like to propose the release schedule for Xen 4.19.
>=20
> Based on the previous release schedules [1] and [2], it seems the
> next
> release date should be on Wednesday, July 10, 2024:
>=20
> ** Proposed option: Wed Jul 10, 2024 **
> (+9 months from Xen 4.18 release)
>=20
> - Last posting date=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
 Fri Apr 26, 2024
>=20
> Patches adding new features are expected to be posted to the mailing
> list by this date, although perhaps not in their final version.
>=20
> - Feature freeze=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0 Fri May 17, 2024 (+3 weeks from Last
> posting date)
>=20
> Patches adding new features should be committed by this date.
> Straightforward bugfixes may continue to be accepted by maintainers.
>=20
> - Code freeze=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 Fri May 31, 2024 (+2 weeks from Feature
> freeze)
>=20
> Bugfixes only.
>=20
> - Hard code freeze=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0 Fri Jun 21, 2024 (+3 weeks from Code
> freeze)
>=20
> Bugfixes for serious bugs (including regressions), and low-risk fixes
> only.
>=20
> - Final commits=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0 Fri Jul 05, 2024 (+2 weeks from Hard
> code
> freeze)
>=20
> Branch off staging-4.19.
>=20
> - Release=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 Wed Jul 10, 2024
>=20
> If there are no objections, we will stick to the proposed schedule.
>=20
> One more thing I'd like to discuss is whether to add a file
> (RELEASE.md) with the release schedule to the source code or update
> an
> existing one (xen-release-management.pandoc). I think it will help to
> find the final release schedule for the nearest release. For example,
> for the previous release, there are a lot of emails with proposed
> schedules, polls of Xen release schedules, and I found the final
> release schedule in just one of the replies (but probably I missed
> something).
>=20
> I'll be happy to hear any comments from you. Thanks in advance.
>=20
> Best regards,
> =C2=A0Oleksii
>=20
> [1]
> https://lore.kernel.org/xen-devel/AS8PR08MB7991424A3167C70A9B29530C92929@=
AS8PR08MB7991.eurprd08.prod.outlook.com/
> [2]
> https://lists.xen.org/archives/html/xen-devel/2018-07/msg02240.html



From xen-devel-bounces@lists.xenproject.org Tue Jan 02 17:13:27 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 02 Jan 2024 17:13:27 +0000
Received: from list by lists.xenproject.org with outflank-mailman.660809.1030424 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rKiKQ-0004lX-Ek; Tue, 02 Jan 2024 17:13:22 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 660809.1030424; Tue, 02 Jan 2024 17:13:22 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rKiKQ-0004lQ-BH; Tue, 02 Jan 2024 17:13:22 +0000
Received: by outflank-mailman (input) for mailman id 660809;
 Tue, 02 Jan 2024 17:13:21 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=oNM8=IM=amd.com=Stewart.Hildebrand@srs-se1.protection.inumbo.net>)
 id 1rKiKO-0004lK-Sm
 for xen-devel@lists.xenproject.org; Tue, 02 Jan 2024 17:13:21 +0000
Received: from NAM10-DM6-obe.outbound.protection.outlook.com
 (mail-dm6nam10on2060c.outbound.protection.outlook.com
 [2a01:111:f400:7e88::60c])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 386ff301-a992-11ee-98ef-6d05b1d4d9a1;
 Tue, 02 Jan 2024 18:13:18 +0100 (CET)
Received: from BYAPR11CA0065.namprd11.prod.outlook.com (2603:10b6:a03:80::42)
 by SA1PR12MB6895.namprd12.prod.outlook.com (2603:10b6:806:24e::5)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7135.25; Tue, 2 Jan
 2024 17:13:13 +0000
Received: from MWH0EPF000971E8.namprd02.prod.outlook.com
 (2603:10b6:a03:80:cafe::7b) by BYAPR11CA0065.outlook.office365.com
 (2603:10b6:a03:80::42) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7135.20 via Frontend
 Transport; Tue, 2 Jan 2024 17:13:13 +0000
Received: from SATLEXMB03.amd.com (165.204.84.17) by
 MWH0EPF000971E8.mail.protection.outlook.com (10.167.243.68) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.7159.9 via Frontend Transport; Tue, 2 Jan 2024 17:13:13 +0000
Received: from SATLEXMB04.amd.com (10.181.40.145) by SATLEXMB03.amd.com
 (10.181.40.144) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.34; Tue, 2 Jan
 2024 11:13:12 -0600
Received: from [172.23.76.218] (10.180.168.240) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server id 15.1.2507.34 via Frontend
 Transport; Tue, 2 Jan 2024 11:13:11 -0600
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 386ff301-a992-11ee-98ef-6d05b1d4d9a1
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=YBh6SQzS6+eZfEfGjWnxlPbsuN5GQoYibq37+CKLi6qoAMqvOXFu0ILmEYAenC5P+44HBM+I6qWUFUN85eZWIFrMKpKRX1PofLQYBKfze7BF9W667As8He2VuXlcG1BJZIaVTkENiiS26vTdWBRbIBMZCDOQGMH/+Vg5pAGuoYmuylIDEVXBqrX6F8j9gjbhZ4g8AQXB6qp+IqvQRFdCFyVaIbAHeLC6T9d5hN5J+P0bSha7muSmgILjqUuJ73KnRXEg6MQvpeG6XEN8PfYJaEybEkrIVfK+psH3YdNgDLpmjNwSViV59AodgChF2L15/vy/Ene6f6BE62sXowAkTg==
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=KHurskgfPuMSQErVGNBaJoVRRcbOzBbb+xAChHB57cc=;
 b=jXizbrKCWzAisZfhu5BM2cv2fUuSQCTG2MvPob3cdkZYjC9u7wbbIIlsmjXmbyw2RB3LZieaN3A+i36Wxd29R8iVNB4Lyp9caNDNGQAHYzmPgcTBugk1DuR7k/zzYwHo6cYslvMR/8k5EpclMS9QJAYOifiyh/5uqqBVchbuY4G+Fj4k4WIocBOa3VAGoCtHpXrchuCHIOpK186mjCcFn720OUuEzSxVs9jR85lfaepSaSqoTmeKFacoVyP0CTwW0nHzbeXKvyFkpSR6Er0UVGCsKv38gE3WRKyzLrpDmjAURYYYrYMDwV+szjeYEAuyJh5QDBbT7JjFgyOGtJ9pEg==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=citrix.com 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)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=KHurskgfPuMSQErVGNBaJoVRRcbOzBbb+xAChHB57cc=;
 b=oqizuxNbAcCMZXrK+11ZdXytC0K/D8opjyRcOj8Ni4ePs+gXTHtetd0f98ElwNaDQ3wy8lXjqAYZH/Qz2VQ5kP/M2KgDL0hEQ5qyfd/8HrXp9Imjz+NpsqTgVnnzdQ60mFLtbSOEfwOqKOxBhYUdaUc/VFP0JgmbuYgC7dG+5bI=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=SATLEXMB03.amd.com; pr=C
Message-ID: <85a52f8d-d6db-4478-92b1-2b6305769c96@amd.com>
Date: Tue, 2 Jan 2024 12:13:10 -0500
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v11 03/17] vpci: use per-domain PCI lock to protect vpci
 structure
To: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>, Volodymyr Babchuk
	<Volodymyr_Babchuk@epam.com>
CC: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>,
	Oleksandr Andrushchenko <Oleksandr_Andrushchenko@epam.com>, Jan Beulich
	<jbeulich@suse.com>, Andrew Cooper <andrew.cooper3@citrix.com>, Wei Liu
	<wl@xen.org>, Jun Nakajima <jun.nakajima@intel.com>, Kevin Tian
	<kevin.tian@intel.com>, Paul Durrant <paul@xen.org>
References: <20231202012556.2012281-1-volodymyr_babchuk@epam.com>
 <20231202012556.2012281-4-volodymyr_babchuk@epam.com>
 <ZYRGMFKhwurDzHrT@macbook>
Content-Language: en-US
From: Stewart Hildebrand <stewart.hildebrand@amd.com>
In-Reply-To: <ZYRGMFKhwurDzHrT@macbook>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: MWH0EPF000971E8:EE_|SA1PR12MB6895:EE_
X-MS-Office365-Filtering-Correlation-Id: f58e8f39-acc2-463c-2cb9-08dc0bb61a41
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam: BCL:0;
X-Microsoft-Antispam-Message-Info:
	l+YYc9tXLoRvmLYUX53SVpY9zgEbrBvckl/ZUjka9JcRoG+MBlDvLQl3or/E+1tAco0Rnwoo9zzagdj6kmjGjRreKS7pZ70/8G6whIsUMzLeFGynFNNyEhMTRlH4rs+3VqydlCiRhaeYcjxxJZXSkahpIZbqxLBzB0kK8gBpgh0Xbz5BwKzRvgwjHr9e0ogye2L272nGs/KGPsqkrxwSxtc1DKVuOnGx4k4eAkrT1FuRxO7mmIMaCGA5zs9Qzx2gk/3nECGKOH8XnQ/29E9VQmy6kYgHeZrKwN0NwW4t2yGE4nRqFbw05JqU9eFnfsDu0IrP50cGgh5uZSygfRDuW+AFKeOzbJRdGU78R34Qr6DWRGrv3MZhDC59zvKT5uRG1fsvkJC0Qvsl9bSY/qFqq88rdurbQeTJDCUGm2hkhVGuY8T9Xu4OOaVoXvRXg4Bh0NiKmKRJXiEDSz04ZshLWDwkyblzUJZlQxy4FdbFd4xx54ArcWQYF2TxM3z6EoprNiz9Rv54/r/cTS7T/H/gGeXI/dGaOp7C/F39xuQif8YFmllyQXaKhGMmUG614wHt/zcAtrQQZudDg4FKBBnQBoseE2UFNxDvt4ib+Wj6NaVsuKf2bWTHwlvYJoST+XupmT1v/OyMgCu2yOiwvpulPURFdOu7KIWYpeDE2wkry9rPV4vOMOw9S6QmwSLWvuHErES4n9oJbIEqARNhFvWg1XlP4E97hInbKjk2EoTNBFS02IGmEokdqFfr0DzAdcZR6eyKrCT6Q8yOm9IitkM1rhMMZfGYddzREW7XDvuzGq7331Hg/EUsqICS6XNRKqqmBw2XqUeSQyXTbHVJNfKkAg==
X-Forefront-Antispam-Report:
	CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB03.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230031)(4636009)(136003)(396003)(346002)(39860400002)(376002)(230922051799003)(186009)(64100799003)(82310400011)(451199024)(1800799012)(46966006)(40470700004)(36840700001)(70206006)(4326008)(316002)(478600001)(16576012)(110136005)(8936002)(70586007)(54906003)(8676002)(47076005)(83380400001)(36860700001)(53546011)(336012)(426003)(2616005)(26005)(44832011)(5660300002)(2906002)(30864003)(7416002)(41300700001)(36756003)(82740400003)(81166007)(356005)(31696002)(86362001)(40460700003)(31686004)(40480700001)(43740500002)(36900700001)(309714004);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Jan 2024 17:13:13.0793
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: f58e8f39-acc2-463c-2cb9-08dc0bb61a41
X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB03.amd.com]
X-MS-Exchange-CrossTenant-AuthSource:
	MWH0EPF000971E8.namprd02.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA1PR12MB6895

On 12/21/23 09:05, Roger Pau Monné wrote:
> On Sat, Dec 02, 2023 at 01:27:03AM +0000, Volodymyr Babchuk wrote:
>> From: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>
>>
>> Use a previously introduced per-domain read/write lock to check
>> whether vpci is present, so we are sure there are no accesses to the
>> contents of the vpci struct if not. This lock can be used (and in a
>> few cases is used right away) so that vpci removal can be performed
>> while holding the lock in write mode. Previously such removal could
>> race with vpci_read for example.
>>
>> When taking both d->pci_lock and pdev->vpci->lock, they should be
>> taken in this exact order: d->pci_lock then pdev->vpci->lock to avoid
>> possible deadlock situations.
>>
>> 1. Per-domain's pci_rwlock is used to protect pdev->vpci structure
>> from being removed.
>>
>> 2. Writing the command register and ROM BAR register may trigger
>> modify_bars to run, which in turn may access multiple pdevs while
>> checking for the existing BAR's overlap. The overlapping check, if
>> done under the read lock, requires vpci->lock to be acquired on both
>> devices being compared, which may produce a deadlock. It is not
>> possible to upgrade read lock to write lock in such a case. So, in
>> order to prevent the deadlock, use d->pci_lock instead. To prevent
>> deadlock while locking both hwdom->pci_lock and dom_xen->pci_lock,
>> always lock hwdom first.
> 
> FWIW (I think it was also mentioned in the previous version) for
> devices assigned to dom_xen taking the hwdom lock should be enough.
> There are no other accesses to such devices that don't originate from
> hwdom, and it's not possible to degassing devices from dom_xen.

OK, we will re-word the commit message and make the change in vpci_{read,write}.

> 
>>
>> All other code, which doesn't lead to pdev->vpci destruction and does
>> not access multiple pdevs at the same time, can still use a
>> combination of the read lock and pdev->vpci->lock.
>>
>> 3. Drop const qualifier where the new rwlock is used and this is
>> appropriate.
>>
>> 4. Do not call process_pending_softirqs with any locks held. For that
>> unlock prior the call and re-acquire the locks after. After
>> re-acquiring the lock there is no need to check if pdev->vpci exists:
>>  - in apply_map because of the context it is called (no race condition
>>    possible)
>>  - for MSI/MSI-X debug code because it is called at the end of
>>    pdev->vpci access and no further access to pdev->vpci is made
>>
>> 5. Use d->pci_lock around for_each_pdev and pci_get_pdev_by_domain
>> while accessing pdevs in vpci code.
>>
>> 6. We are removing multiple ASSERT(pcidevs_locked()) instances because
>> they are too strict now: they should be corrected to
>> ASSERT(pcidevs_locked() || rw_is_locked(&d->pci_lock)), but problem is
>> that mentioned instances does not have access to the domain
>> pointer and it is not feasible to pass a domain pointer to a function
>> just for debugging purposes.
>>
>> Suggested-by: Roger Pau Monné <roger.pau@citrix.com>
>> Suggested-by: Jan Beulich <jbeulich@suse.com>
>> Signed-off-by: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>
>> Signed-off-by: Volodymyr Babchuk <volodymyr_babchuk@epam.com>
>>
>> ---
>> Changes in v11:
>>  - Fixed commit message regarding possible spinlocks
>>  - Removed parameter from allocate_and_map_msi_pirq(), which was added
>>  in the prev version. Now we are taking pcidevs_lock in
>>  physdev_map_pirq()
>>  - Returned ASSERT to pci_enable_msi
>>  - Fixed case when we took read lock instead of write one
>>  - Fixed label indentation
>>
>> Changes in v10:
>>  - Moved printk pas locked area
>>  - Returned back ASSERTs
>>  - Added new parameter to allocate_and_map_msi_pirq() so it knows if
>>  it should take the global pci lock
>>  - Added comment about possible improvement in vpci_write
>>  - Changed ASSERT(rw_is_locked()) to rw_is_write_locked() in
>>    appropriate places
>>  - Renamed release_domain_locks() to release_domain_write_locks()
>>  - moved domain_done label in vpci_dump_msi() to correct place
>> Changes in v9:
>>  - extended locked region to protect vpci_remove_device and
>>    vpci_add_handlers() calls
>>  - vpci_write() takes lock in the write mode to protect
>>    potential call to modify_bars()
>>  - renamed lock releasing function
>>  - removed ASSERT()s from msi code
>>  - added trylock in vpci_dump_msi
>>
>> Changes in v8:
>>  - changed d->vpci_lock to d->pci_lock
>>  - introducing d->pci_lock in a separate patch
>>  - extended locked region in vpci_process_pending
>>  - removed pcidevs_lockis vpci_dump_msi()
>>  - removed some changes as they are not needed with
>>    the new locking scheme
>>  - added handling for hwdom && dom_xen case
>> ---
>>  xen/arch/x86/hvm/vmsi.c       | 22 +++++++--------
>>  xen/arch/x86/hvm/vmx/vmx.c    |  2 --
>>  xen/arch/x86/irq.c            |  8 +++---
>>  xen/arch/x86/msi.c            | 10 ++-----
>>  xen/arch/x86/physdev.c        |  2 ++
>>  xen/drivers/passthrough/pci.c |  9 +++---
>>  xen/drivers/vpci/header.c     | 18 ++++++++++++
>>  xen/drivers/vpci/msi.c        | 28 +++++++++++++++++--
>>  xen/drivers/vpci/msix.c       | 52 ++++++++++++++++++++++++++++++-----
>>  xen/drivers/vpci/vpci.c       | 50 +++++++++++++++++++++++++++++++--
>>  10 files changed, 160 insertions(+), 41 deletions(-)
>>
>> diff --git a/xen/arch/x86/hvm/vmsi.c b/xen/arch/x86/hvm/vmsi.c
>> index 128f236362..03caf91bee 100644
>> --- a/xen/arch/x86/hvm/vmsi.c
>> +++ b/xen/arch/x86/hvm/vmsi.c
>> @@ -468,7 +468,7 @@ int msixtbl_pt_register(struct domain *d, struct pirq *pirq, uint64_t gtable)
>>      struct msixtbl_entry *entry, *new_entry;
>>      int r = -EINVAL;
>>  
>> -    ASSERT(pcidevs_locked());
>> +    ASSERT(pcidevs_locked() || rw_is_locked(&d->pci_lock));
>>      ASSERT(rw_is_write_locked(&d->event_lock));
>>  
>>      if ( !msixtbl_initialised(d) )
>> @@ -538,7 +538,7 @@ void msixtbl_pt_unregister(struct domain *d, struct pirq *pirq)
>>      struct pci_dev *pdev;
>>      struct msixtbl_entry *entry;
>>  
>> -    ASSERT(pcidevs_locked());
>> +    ASSERT(pcidevs_locked() || rw_is_locked(&d->pci_lock));
>>      ASSERT(rw_is_write_locked(&d->event_lock));
>>  
>>      if ( !msixtbl_initialised(d) )
>> @@ -684,7 +684,7 @@ static int vpci_msi_update(const struct pci_dev *pdev, uint32_t data,
>>  {
>>      unsigned int i;
>>  
>> -    ASSERT(pcidevs_locked());
>> +    ASSERT(rw_is_locked(&pdev->domain->pci_lock));
>>  
>>      if ( (address & MSI_ADDR_BASE_MASK) != MSI_ADDR_HEADER )
>>      {
>> @@ -725,8 +725,8 @@ void vpci_msi_arch_update(struct vpci_msi *msi, const struct pci_dev *pdev)
>>      int rc;
>>  
>>      ASSERT(msi->arch.pirq != INVALID_PIRQ);
>> +    ASSERT(rw_is_locked(&pdev->domain->pci_lock));
>>  
>> -    pcidevs_lock();
>>      for ( i = 0; i < msi->vectors && msi->arch.bound; i++ )
>>      {
>>          struct xen_domctl_bind_pt_irq unbind = {
>> @@ -745,7 +745,6 @@ void vpci_msi_arch_update(struct vpci_msi *msi, const struct pci_dev *pdev)
>>  
>>      msi->arch.bound = !vpci_msi_update(pdev, msi->data, msi->address,
>>                                         msi->vectors, msi->arch.pirq, msi->mask);
>> -    pcidevs_unlock();
>>  }
>>  
>>  static int vpci_msi_enable(const struct pci_dev *pdev, unsigned int nr,
>> @@ -778,15 +777,14 @@ int vpci_msi_arch_enable(struct vpci_msi *msi, const struct pci_dev *pdev,
>>      int rc;
>>  
>>      ASSERT(msi->arch.pirq == INVALID_PIRQ);
>> +    ASSERT(rw_is_locked(&pdev->domain->pci_lock));
>>      rc = vpci_msi_enable(pdev, vectors, 0);
>>      if ( rc < 0 )
>>          return rc;
>>      msi->arch.pirq = rc;
>>  
>> -    pcidevs_lock();
>>      msi->arch.bound = !vpci_msi_update(pdev, msi->data, msi->address, vectors,
>>                                         msi->arch.pirq, msi->mask);
>> -    pcidevs_unlock();
>>  
>>      return 0;
>>  }
>> @@ -797,8 +795,8 @@ static void vpci_msi_disable(const struct pci_dev *pdev, int pirq,
>>      unsigned int i;
>>  
>>      ASSERT(pirq != INVALID_PIRQ);
>> +    ASSERT(rw_is_locked(&pdev->domain->pci_lock));
>>  
>> -    pcidevs_lock();
>>      for ( i = 0; i < nr && bound; i++ )
>>      {
>>          struct xen_domctl_bind_pt_irq bind = {
>> @@ -814,7 +812,6 @@ static void vpci_msi_disable(const struct pci_dev *pdev, int pirq,
>>      write_lock(&pdev->domain->event_lock);
>>      unmap_domain_pirq(pdev->domain, pirq);
>>      write_unlock(&pdev->domain->event_lock);
>> -    pcidevs_unlock();
>>  }
>>  
>>  void vpci_msi_arch_disable(struct vpci_msi *msi, const struct pci_dev *pdev)
>> @@ -854,6 +851,7 @@ int vpci_msix_arch_enable_entry(struct vpci_msix_entry *entry,
>>      int rc;
>>  
>>      ASSERT(entry->arch.pirq == INVALID_PIRQ);
>> +    ASSERT(rw_is_locked(&pdev->domain->pci_lock));
>>      rc = vpci_msi_enable(pdev, vmsix_entry_nr(pdev->vpci->msix, entry),
>>                           table_base);
>>      if ( rc < 0 )
>> @@ -861,7 +859,6 @@ int vpci_msix_arch_enable_entry(struct vpci_msix_entry *entry,
>>  
>>      entry->arch.pirq = rc;
>>  
>> -    pcidevs_lock();
>>      rc = vpci_msi_update(pdev, entry->data, entry->addr, 1, entry->arch.pirq,
>>                           entry->masked);
>>      if ( rc )
>> @@ -869,7 +866,6 @@ int vpci_msix_arch_enable_entry(struct vpci_msix_entry *entry,
>>          vpci_msi_disable(pdev, entry->arch.pirq, 1, false);
>>          entry->arch.pirq = INVALID_PIRQ;
>>      }
>> -    pcidevs_unlock();
>>  
>>      return rc;
>>  }
>> @@ -895,6 +891,8 @@ int vpci_msix_arch_print(const struct vpci_msix *msix)
>>  {
>>      unsigned int i;
>>  
>> +    ASSERT(rw_is_locked(&msix->pdev->domain->pci_lock));
>> +
>>      for ( i = 0; i < msix->max_entries; i++ )
>>      {
>>          const struct vpci_msix_entry *entry = &msix->entries[i];
>> @@ -913,7 +911,9 @@ int vpci_msix_arch_print(const struct vpci_msix *msix)
>>              struct pci_dev *pdev = msix->pdev;
>>  
>>              spin_unlock(&msix->pdev->vpci->lock);
>> +            read_unlock(&pdev->domain->pci_lock);
>>              process_pending_softirqs();
>> +            read_lock(&pdev->domain->pci_lock);
>>              /* NB: we assume that pdev cannot go away for an alive domain. */
>>              if ( !pdev->vpci || !spin_trylock(&pdev->vpci->lock) )
>>                  return -EBUSY;
>> diff --git a/xen/arch/x86/hvm/vmx/vmx.c b/xen/arch/x86/hvm/vmx/vmx.c
>> index 5663bc0178..dd836e49f3 100644
>> --- a/xen/arch/x86/hvm/vmx/vmx.c
>> +++ b/xen/arch/x86/hvm/vmx/vmx.c
>> @@ -413,8 +413,6 @@ static int cf_check vmx_pi_update_irte(const struct vcpu *v,
>>  
>>      spin_unlock_irq(&desc->lock);
>>  
>> -    ASSERT(pcidevs_locked());
> 
> Can't you do?
> 
> ASSERT(pcidevs_locked() || rw_is_locked(&msi_desc->dev->domain->pci_lock));
> 
> The iommu_update_ire_from_msi() call below does rely on msi_desc->dev
> being set, so we can do the same here.

Yes, we will reintroduce the modified ASSERT

> 
>> -
>>      return iommu_update_ire_from_msi(msi_desc, &msi_desc->msg);
>>  
>>   unlock_out:
>> diff --git a/xen/arch/x86/irq.c b/xen/arch/x86/irq.c
>> index 50e49e1a4b..4d89d9af99 100644
>> --- a/xen/arch/x86/irq.c
>> +++ b/xen/arch/x86/irq.c
>> @@ -2166,7 +2166,7 @@ int map_domain_pirq(
>>          struct pci_dev *pdev;
>>          unsigned int nr = 0;
>>  
>> -        ASSERT(pcidevs_locked());
>> +        ASSERT(pcidevs_locked() || rw_is_locked(&d->pci_lock));
>>  
>>          ret = -ENODEV;
>>          if ( !cpu_has_apic )
>> @@ -2323,7 +2323,7 @@ int unmap_domain_pirq(struct domain *d, int pirq)
>>      if ( (pirq < 0) || (pirq >= d->nr_pirqs) )
>>          return -EINVAL;
>>  
>> -    ASSERT(pcidevs_locked());
>> +    ASSERT(pcidevs_locked() || rw_is_locked(&d->pci_lock));
>>      ASSERT(rw_is_write_locked(&d->event_lock));
>>  
>>      info = pirq_info(d, pirq);
>> @@ -2888,6 +2888,8 @@ int allocate_and_map_msi_pirq(struct domain *d, int index, int *pirq_p,
>>  {
>>      int irq, pirq, ret;
>>  
>> +    ASSERT(pcidevs_locked() || rw_is_locked(&d->pci_lock));
>> +
>>      switch ( type )
>>      {
>>      case MAP_PIRQ_TYPE_MSI:
>> @@ -2917,7 +2919,6 @@ int allocate_and_map_msi_pirq(struct domain *d, int index, int *pirq_p,
>>  
>>      msi->irq = irq;
>>  
>> -    pcidevs_lock();
> 
> Since you remove the locking here, it might be good to replace with an
> assert.

The ASSERT was added at the beginning of this function - see above

> 
>>      /* Verify or get pirq. */
>>      write_lock(&d->event_lock);
>>      pirq = allocate_pirq(d, index, *pirq_p, irq, type, &msi->entry_nr);
>> @@ -2933,7 +2934,6 @@ int allocate_and_map_msi_pirq(struct domain *d, int index, int *pirq_p,
>>  
>>   done:
>>      write_unlock(&d->event_lock);
>> -    pcidevs_unlock();
>>      if ( ret )
>>      {
>>          switch ( type )
>> diff --git a/xen/arch/x86/msi.c b/xen/arch/x86/msi.c
>> index 335c0868a2..6a548611a5 100644
>> --- a/xen/arch/x86/msi.c
>> +++ b/xen/arch/x86/msi.c
>> @@ -602,7 +602,7 @@ static int msi_capability_init(struct pci_dev *dev,
>>      unsigned int i, mpos;
>>      uint16_t control;
>>  
>> -    ASSERT(pcidevs_locked());
>> +    ASSERT(pcidevs_locked() || rw_is_locked(&dev->domain->pci_lock));
>>      pos = pci_find_cap_offset(dev->sbdf, PCI_CAP_ID_MSI);
>>      if ( !pos )
>>          return -ENODEV;
>> @@ -771,7 +771,7 @@ static int msix_capability_init(struct pci_dev *dev,
>>      if ( !pos )
>>          return -ENODEV;
>>  
>> -    ASSERT(pcidevs_locked());
>> +    ASSERT(pcidevs_locked() || rw_is_locked(&dev->domain->pci_lock));
>>  
>>      control = pci_conf_read16(dev->sbdf, msix_control_reg(pos));
>>      /*
>> @@ -988,8 +988,6 @@ static int __pci_enable_msi(struct pci_dev *pdev, struct msi_info *msi,
>>  {
>>      struct msi_desc *old_desc;
>>  
>> -    ASSERT(pcidevs_locked());
>> -
>>      if ( !pdev )
>>          return -ENODEV;
>>  
>> @@ -1043,8 +1041,6 @@ static int __pci_enable_msix(struct pci_dev *pdev, struct msi_info *msi,
>>  {
>>      struct msi_desc *old_desc;
>>  
>> -    ASSERT(pcidevs_locked());
>> -
>>      if ( !pdev || !pdev->msix )
>>          return -ENODEV;
> 
> For both __pci_enable_msi{,x}(), can you move the check after making
> sure that pdev != NULL, and then expand the condition to cover
> pdev->domain->pci_lock taken?

Yes, will do

> 
>>  
>> @@ -1154,7 +1150,7 @@ int pci_prepare_msix(u16 seg, u8 bus, u8 devfn, bool off)
>>  int pci_enable_msi(struct pci_dev *pdev, struct msi_info *msi,
>>                     struct msi_desc **desc)
>>  {
>> -    ASSERT(pcidevs_locked());
>> +    ASSERT(pcidevs_locked() || rw_is_locked(&pdev->domain->pci_lock));
>>  
>>      if ( !use_msi )
>>          return -EPERM;
>> diff --git a/xen/arch/x86/physdev.c b/xen/arch/x86/physdev.c
>> index 47c4da0af7..369c9e788c 100644
>> --- a/xen/arch/x86/physdev.c
>> +++ b/xen/arch/x86/physdev.c
>> @@ -123,7 +123,9 @@ int physdev_map_pirq(domid_t domid, int type, int *index, int *pirq_p,
>>  
>>      case MAP_PIRQ_TYPE_MSI:
>>      case MAP_PIRQ_TYPE_MULTI_MSI:
>> +        pcidevs_lock();
>>          ret = allocate_and_map_msi_pirq(d, *index, pirq_p, type, msi);
>> +        pcidevs_unlock();
>>          break;
>>  
>>      default:
>> diff --git a/xen/drivers/passthrough/pci.c b/xen/drivers/passthrough/pci.c
>> index b8ad4fa07c..182da45acb 100644
>> --- a/xen/drivers/passthrough/pci.c
>> +++ b/xen/drivers/passthrough/pci.c
>> @@ -750,7 +750,6 @@ int pci_add_device(u16 seg, u8 bus, u8 devfn,
>>          pdev->domain = hardware_domain;
>>          write_lock(&hardware_domain->pci_lock);
>>          list_add(&pdev->domain_list, &hardware_domain->pdev_list);
>> -        write_unlock(&hardware_domain->pci_lock);
>>  
>>          /*
>>           * For devices not discovered by Xen during boot, add vPCI handlers
>> @@ -759,18 +758,18 @@ int pci_add_device(u16 seg, u8 bus, u8 devfn,
>>          ret = vpci_add_handlers(pdev);
>>          if ( ret )
>>          {
>> -            printk(XENLOG_ERR "Setup of vPCI failed: %d\n", ret);
>> -            write_lock(&hardware_domain->pci_lock);
>>              list_del(&pdev->domain_list);
>>              write_unlock(&hardware_domain->pci_lock);
>>              pdev->domain = NULL;
>> +            printk(XENLOG_ERR "Setup of vPCI failed: %d\n", ret);
>>              goto out;
>>          }
>> +        write_unlock(&hardware_domain->pci_lock);
>>          ret = iommu_add_device(pdev);
>>          if ( ret )
>>          {
>> -            vpci_remove_device(pdev);
>>              write_lock(&hardware_domain->pci_lock);
>> +            vpci_remove_device(pdev);
>>              list_del(&pdev->domain_list);
>>              write_unlock(&hardware_domain->pci_lock);
>>              pdev->domain = NULL;
>> @@ -1146,7 +1145,9 @@ static void __hwdom_init setup_one_hwdom_device(const struct setup_hwdom *ctxt,
>>      } while ( devfn != pdev->devfn &&
>>                PCI_SLOT(devfn) == PCI_SLOT(pdev->devfn) );
>>  
>> +    write_lock(&ctxt->d->pci_lock);
>>      err = vpci_add_handlers(pdev);
>> +    write_unlock(&ctxt->d->pci_lock);
>>      if ( err )
>>          printk(XENLOG_ERR "setup of vPCI for d%d failed: %d\n",
>>                 ctxt->d->domain_id, err);
>> diff --git a/xen/drivers/vpci/header.c b/xen/drivers/vpci/header.c
>> index 767c1ba718..c86d33d0cd 100644
>> --- a/xen/drivers/vpci/header.c
>> +++ b/xen/drivers/vpci/header.c
>> @@ -172,6 +172,7 @@ bool vpci_process_pending(struct vcpu *v)
>>          if ( rc == -ERESTART )
>>              return true;
>>  
>> +        write_lock(&v->domain->pci_lock);
>>          spin_lock(&v->vpci.pdev->vpci->lock);
>>          /* Disable memory decoding unconditionally on failure. */
>>          modify_decoding(v->vpci.pdev,
>> @@ -190,6 +191,7 @@ bool vpci_process_pending(struct vcpu *v)
>>               * failure.
>>               */
>>              vpci_remove_device(v->vpci.pdev);
>> +        write_unlock(&v->domain->pci_lock);
>>      }
>>  
>>      return false;
>> @@ -201,8 +203,20 @@ static int __init apply_map(struct domain *d, const struct pci_dev *pdev,
>>      struct map_data data = { .d = d, .map = true };
>>      int rc;
>>  
>> +    ASSERT(rw_is_write_locked(&d->pci_lock));
>> +
>>      while ( (rc = rangeset_consume_ranges(mem, map_range, &data)) == -ERESTART )
>> +    {
>> +        /*
>> +         * It's safe to drop and reacquire the lock in this context
>> +         * without risking pdev disappearing because devices cannot be
>> +         * removed until the initial domain has been started.
>> +         */
>> +        write_unlock(&d->pci_lock);
>>          process_pending_softirqs();
>> +        write_lock(&d->pci_lock);
>> +    }
>> +
>>      rangeset_destroy(mem);
>>      if ( !rc )
>>          modify_decoding(pdev, cmd, false);
>> @@ -243,6 +257,8 @@ static int modify_bars(const struct pci_dev *pdev, uint16_t cmd, bool rom_only)
>>      unsigned int i;
>>      int rc;
>>  
>> +    ASSERT(rw_is_write_locked(&pdev->domain->pci_lock));
>> +
>>      if ( !mem )
>>          return -ENOMEM;
>>  
>> @@ -522,6 +538,8 @@ static int cf_check init_bars(struct pci_dev *pdev)
>>      struct vpci_bar *bars = header->bars;
>>      int rc;
>>  
>> +    ASSERT(rw_is_write_locked(&pdev->domain->pci_lock));
>> +
>>      switch ( pci_conf_read8(pdev->sbdf, PCI_HEADER_TYPE) & 0x7f )
>>      {
>>      case PCI_HEADER_TYPE_NORMAL:
>> diff --git a/xen/drivers/vpci/msi.c b/xen/drivers/vpci/msi.c
>> index a253ccbd7d..6ff71e5f9a 100644
>> --- a/xen/drivers/vpci/msi.c
>> +++ b/xen/drivers/vpci/msi.c
>> @@ -263,7 +263,7 @@ REGISTER_VPCI_INIT(init_msi, VPCI_PRIORITY_LOW);
>>  
>>  void vpci_dump_msi(void)
>>  {
>> -    const struct domain *d;
>> +    struct domain *d;
>>  
>>      rcu_read_lock(&domlist_read_lock);
>>      for_each_domain ( d )
>> @@ -275,6 +275,9 @@ void vpci_dump_msi(void)
>>  
>>          printk("vPCI MSI/MSI-X d%d\n", d->domain_id);
>>  
>> +        if ( !read_trylock(&d->pci_lock) )
>> +            continue;
>> +
>>          for_each_pdev ( d, pdev )
>>          {
>>              const struct vpci_msi *msi;
>> @@ -316,14 +319,33 @@ void vpci_dump_msi(void)
>>                       * holding the lock.
>>                       */
>>                      printk("unable to print all MSI-X entries: %d\n", rc);
>> -                    process_pending_softirqs();
>> -                    continue;
>> +                    goto pdev_done;
>>                  }
>>              }
>>  
>>              spin_unlock(&pdev->vpci->lock);
>> +        pdev_done:
>> +            /*
>> +             * Unlock lock to process pending softirqs. This is
>> +             * potentially unsafe, as d->pdev_list can be changed in
>> +             * meantime.
>> +             */
>> +            read_unlock(&d->pci_lock);
>>              process_pending_softirqs();
>> +            if ( !read_trylock(&d->pci_lock) )
>> +            {
>> +                printk("unable to access other devices for the domain\n");
>> +                goto domain_done;
>> +            }
>>          }
>> +        read_unlock(&d->pci_lock);
>> +    domain_done:
>> +        /*
>> +         * We need this label at the end of the loop, but some
>> +         * compilers might not be happy about label at the end of the
>> +         * compound statement so we adding an empty statement here.
>> +         */
>> +        ;
>>      }
>>      rcu_read_unlock(&domlist_read_lock);
>>  }
>> diff --git a/xen/drivers/vpci/msix.c b/xen/drivers/vpci/msix.c
>> index d1126a417d..b6abab47ef 100644
>> --- a/xen/drivers/vpci/msix.c
>> +++ b/xen/drivers/vpci/msix.c
>> @@ -147,6 +147,8 @@ static struct vpci_msix *msix_find(const struct domain *d, unsigned long addr)
>>  {
>>      struct vpci_msix *msix;
>>  
>> +    ASSERT(rw_is_locked(&d->pci_lock));
>> +
>>      list_for_each_entry ( msix, &d->arch.hvm.msix_tables, next )
>>      {
>>          const struct vpci_bar *bars = msix->pdev->vpci->header.bars;
>> @@ -163,7 +165,13 @@ static struct vpci_msix *msix_find(const struct domain *d, unsigned long addr)
>>  
>>  static int cf_check msix_accept(struct vcpu *v, unsigned long addr)
>>  {
>> -    return !!msix_find(v->domain, addr);
>> +    int rc;
>> +
>> +    read_lock(&v->domain->pci_lock);
>> +    rc = !!msix_find(v->domain, addr);
>> +    read_unlock(&v->domain->pci_lock);
>> +
>> +    return rc;
>>  }
>>  
>>  static bool access_allowed(const struct pci_dev *pdev, unsigned long addr,
>> @@ -358,21 +366,35 @@ static int adjacent_read(const struct domain *d, const struct vpci_msix *msix,
>>  static int cf_check msix_read(
>>      struct vcpu *v, unsigned long addr, unsigned int len, unsigned long *data)
>>  {
>> -    const struct domain *d = v->domain;
>> -    struct vpci_msix *msix = msix_find(d, addr);
>> +    struct domain *d = v->domain;
>> +    struct vpci_msix *msix;
>>      const struct vpci_msix_entry *entry;
>>      unsigned int offset;
>>  
>>      *data = ~0UL;
>>  
>> +    read_lock(&d->pci_lock);
>> +
>> +    msix = msix_find(d, addr);
>>      if ( !msix )
>> +    {
>> +        read_unlock(&d->pci_lock);
>>          return X86EMUL_RETRY;
>> +    }
>>  
>>      if ( adjacent_handle(msix, addr) )
>> -        return adjacent_read(d, msix, addr, len, data);
>> +    {
>> +        int rc = adjacent_read(d, msix, addr, len, data);
>> +
>> +        read_unlock(&d->pci_lock);
>> +        return rc;
>> +    }
>>  
>>      if ( !access_allowed(msix->pdev, addr, len) )
>> +    {
>> +        read_unlock(&d->pci_lock);
>>          return X86EMUL_OKAY;
>> +    }
>>  
>>      spin_lock(&msix->pdev->vpci->lock);
>>      entry = get_entry(msix, addr);
>> @@ -404,6 +426,7 @@ static int cf_check msix_read(
>>          break;
>>      }
>>      spin_unlock(&msix->pdev->vpci->lock);
>> +    read_unlock(&d->pci_lock);
>>  
>>      return X86EMUL_OKAY;
>>  }
>> @@ -491,19 +514,33 @@ static int adjacent_write(const struct domain *d, const struct vpci_msix *msix,
>>  static int cf_check msix_write(
>>      struct vcpu *v, unsigned long addr, unsigned int len, unsigned long data)
>>  {
>> -    const struct domain *d = v->domain;
>> -    struct vpci_msix *msix = msix_find(d, addr);
>> +    struct domain *d = v->domain;
>> +    struct vpci_msix *msix;
>>      struct vpci_msix_entry *entry;
>>      unsigned int offset;
>>  
>> +    read_lock(&d->pci_lock);
>> +
>> +    msix = msix_find(d, addr);
>>      if ( !msix )
>> +    {
>> +        read_unlock(&d->pci_lock);
>>          return X86EMUL_RETRY;
>> +    }
>>  
>>      if ( adjacent_handle(msix, addr) )
>> -        return adjacent_write(d, msix, addr, len, data);
>> +    {
>> +        int rc = adjacent_write(d, msix, addr, len, data);
>> +
>> +        read_unlock(&d->pci_lock);
>> +        return rc;
>> +    }
>>  
>>      if ( !access_allowed(msix->pdev, addr, len) )
>> +    {
>> +        read_unlock(&d->pci_lock);
>>          return X86EMUL_OKAY;
>> +    }
>>  
>>      spin_lock(&msix->pdev->vpci->lock);
>>      entry = get_entry(msix, addr);
>> @@ -579,6 +616,7 @@ static int cf_check msix_write(
>>          break;
>>      }
>>      spin_unlock(&msix->pdev->vpci->lock);
>> +    read_unlock(&d->pci_lock);
>>  
>>      return X86EMUL_OKAY;
>>  }
>> diff --git a/xen/drivers/vpci/vpci.c b/xen/drivers/vpci/vpci.c
>> index 3bec9a4153..0b694beadf 100644
>> --- a/xen/drivers/vpci/vpci.c
>> +++ b/xen/drivers/vpci/vpci.c
>> @@ -38,6 +38,8 @@ extern vpci_register_init_t *const __end_vpci_array[];
>>  
>>  void vpci_remove_device(struct pci_dev *pdev)
>>  {
>> +    ASSERT(rw_is_write_locked(&pdev->domain->pci_lock));
>> +
>>      if ( !has_vpci(pdev->domain) || !pdev->vpci )
>>          return;
>>  
>> @@ -73,6 +75,8 @@ int vpci_add_handlers(struct pci_dev *pdev)
>>      const unsigned long *ro_map;
>>      int rc = 0;
>>  
>> +    ASSERT(rw_is_write_locked(&pdev->domain->pci_lock));
>> +
>>      if ( !has_vpci(pdev->domain) )
>>          return 0;
>>  
>> @@ -326,11 +330,12 @@ static uint32_t merge_result(uint32_t data, uint32_t new, unsigned int size,
>>  
>>  uint32_t vpci_read(pci_sbdf_t sbdf, unsigned int reg, unsigned int size)
>>  {
>> -    const struct domain *d = current->domain;
>> +    struct domain *d = current->domain;
>>      const struct pci_dev *pdev;
>>      const struct vpci_register *r;
>>      unsigned int data_offset = 0;
>>      uint32_t data = ~(uint32_t)0;
>> +    rwlock_t *lock;
>>  
>>      if ( !size )
>>      {
>> @@ -342,11 +347,21 @@ uint32_t vpci_read(pci_sbdf_t sbdf, unsigned int reg, unsigned int size)
>>       * Find the PCI dev matching the address, which for hwdom also requires
>>       * consulting DomXEN.  Passthrough everything that's not trapped.
>>       */
>> +    lock = &d->pci_lock;
>> +    read_lock(lock);
>>      pdev = pci_get_pdev(d, sbdf);
>>      if ( !pdev && is_hardware_domain(d) )
>> +    {
>> +        read_unlock(lock);
>> +        lock = &dom_xen->pci_lock;
>> +        read_lock(lock);
>>          pdev = pci_get_pdev(dom_xen, sbdf);
>> +    }
>>      if ( !pdev || !pdev->vpci )
>> +    {
>> +        read_unlock(lock);
>>          return vpci_read_hw(sbdf, reg, size);
>> +    }
> 
> As said above in the commit message, I'm unsure you really need both
> locks, as the devices assigned to dom_xen can only be accessed by the
> hardware domain, so considering those protected by the hwdom pci_lock
> would be OK IMO.  A comment would need to be added here and in
> vpci_write() to that regard.

Will do

> 
> I also wonder whether you don't nest locks here like you do in
> vpci_write().  Maybe I'm missing something that justifies the
> asymmetry with the locking pattern used in vpci_write().
> 
>>  
>>      spin_lock(&pdev->vpci->lock);
>>  
>> @@ -392,6 +407,7 @@ uint32_t vpci_read(pci_sbdf_t sbdf, unsigned int reg, unsigned int size)
>>          ASSERT(data_offset < size);
>>      }
>>      spin_unlock(&pdev->vpci->lock);
>> +    read_unlock(lock);
>>  
>>      if ( data_offset < size )
>>      {
>> @@ -431,10 +447,23 @@ static void vpci_write_helper(const struct pci_dev *pdev,
>>               r->private);
>>  }
>>  
>> +/* Helper function to unlock locks taken by vpci_write in proper order */
>> +static void release_domain_write_locks(struct domain *d)
>> +{
>> +    ASSERT(rw_is_write_locked(&d->pci_lock));
>> +
>> +    if ( is_hardware_domain(d) )
>> +    {
>> +        ASSERT(rw_is_write_locked(&dom_xen->pci_lock));
>> +        write_unlock(&dom_xen->pci_lock);
>> +    }
>> +    write_unlock(&d->pci_lock);
>> +}
>> +
>>  void vpci_write(pci_sbdf_t sbdf, unsigned int reg, unsigned int size,
>>                  uint32_t data)
>>  {
>> -    const struct domain *d = current->domain;
>> +    struct domain *d = current->domain;
>>      const struct pci_dev *pdev;
>>      const struct vpci_register *r;
>>      unsigned int data_offset = 0;
>> @@ -447,8 +476,20 @@ void vpci_write(pci_sbdf_t sbdf, unsigned int reg, unsigned int size,
>>  
>>      /*
>>       * Find the PCI dev matching the address, which for hwdom also requires
>> -     * consulting DomXEN.  Passthrough everything that's not trapped.
>> +     * consulting DomXEN. Passthrough everything that's not trapped.
>> +     * If this is hwdom, we need to hold locks for both domain in case if
>> +     * modify_bars() is called
>>       */
>> +    /*
>> +     * TODO: We need to take pci_locks in exclusive mode only if we
>> +     * are modifying BARs, so there is a room for improvement.
> 
> Nit: could be joined with the previous comment block.

Will do

> 
> Thanks, Roger.


From xen-devel-bounces@lists.xenproject.org Tue Jan 02 17:58:46 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 02 Jan 2024 17:58:46 +0000
Received: from list by lists.xenproject.org with outflank-mailman.660816.1030434 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rKj2F-00073v-R8; Tue, 02 Jan 2024 17:58:39 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 660816.1030434; Tue, 02 Jan 2024 17:58:39 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rKj2F-00073o-OL; Tue, 02 Jan 2024 17:58:39 +0000
Received: by outflank-mailman (input) for mailman id 660816;
 Tue, 02 Jan 2024 17:58:38 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=oNM8=IM=amd.com=Stewart.Hildebrand@srs-se1.protection.inumbo.net>)
 id 1rKj2E-00073Y-2l
 for xen-devel@lists.xenproject.org; Tue, 02 Jan 2024 17:58:38 +0000
Received: from NAM11-CO1-obe.outbound.protection.outlook.com
 (mail-co1nam11on20600.outbound.protection.outlook.com
 [2a01:111:f403:2416::600])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 8be686e8-a998-11ee-98ef-6d05b1d4d9a1;
 Tue, 02 Jan 2024 18:58:35 +0100 (CET)
Received: from BLAPR03CA0022.namprd03.prod.outlook.com (2603:10b6:208:32b::27)
 by MN0PR12MB6342.namprd12.prod.outlook.com (2603:10b6:208:3c1::9)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7135.24; Tue, 2 Jan
 2024 17:58:31 +0000
Received: from MN1PEPF0000ECD6.namprd02.prod.outlook.com
 (2603:10b6:208:32b:cafe::b3) by BLAPR03CA0022.outlook.office365.com
 (2603:10b6:208:32b::27) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7135.21 via Frontend
 Transport; Tue, 2 Jan 2024 17:58:31 +0000
Received: from SATLEXMB03.amd.com (165.204.84.17) by
 MN1PEPF0000ECD6.mail.protection.outlook.com (10.167.242.135) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.7159.9 via Frontend Transport; Tue, 2 Jan 2024 17:58:31 +0000
Received: from SATLEXMB04.amd.com (10.181.40.145) by SATLEXMB03.amd.com
 (10.181.40.144) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.34; Tue, 2 Jan
 2024 11:58:31 -0600
Received: from [172.23.76.218] (10.180.168.240) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server id 15.1.2507.34 via Frontend
 Transport; Tue, 2 Jan 2024 11:58:30 -0600
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 8be686e8-a998-11ee-98ef-6d05b1d4d9a1
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=Fkh9oD5H99+VapfSFPn61xitZ9A+ChQ5SiXqieTnLcUwUK3eCEYbIKxpF287Ps1JOwme/qxDfJJfS8v3lfG6p3cbRmYAknA/toqmmrDnfPB+5AY3XTthkG0STOd0oHBG9we6ihYZfCJbHidJ/vCyM0XIH3FsIAu7lEo506K5BfcGF9LCCgQNoM8AmKcBORph8dY60SqPj3b/pqg7VYOk8vKZjUMy7wTmPoOD6HoXW1DxqsIf0dHdKl6eQq/yyiOmIC+p+gym8EpYtYvQ2ALG43lYuGo8fcZRKomDKchumFNOXn4GIN2d5tF95qYI6/QhkLxBzxewCqFD5UK/Q55z8Q==
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=dmlAGsq62p60bgTa2od48s76HuFm7BEBMLogG5n7PUE=;
 b=fq+kE1C5dTs47kLrf4bJQaikLra5j3NrF0RLXXLx4qxc2wbApZ3fdjVmkV4TQm8lSI6hoHCN+Te66He3slWCa86owGFmmLDIE2s1ffSiJYk5vf/J/l1tf0tFaE85+jZ6iJOdVzgcICno3m25WfY4uLzMjjI3I5Gpm8QR7y9yxmN2lEO6FbnCdpqoLma0tE/oCnXJEzCRYLoo7AJ3SAD+mDNaetiXJNB22AUh1aRWF1jsIYW2fEQS1VM5AOPk4wH29MM3oxYlsM70DVGIxCqOD0SdPdW+yOdsdvZ1191k21jat1AYacXL+uEvQQcND6e+0zs0G3/9z6KvlHngD1whVQ==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=suse.com 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)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=dmlAGsq62p60bgTa2od48s76HuFm7BEBMLogG5n7PUE=;
 b=pMWRPBdEOhJcwwSu4+XLghHcg3ZbBd6TgThmxhs2nYa23JyTH/wNCsTPrybQdPmOK3OKjf+fUXtgI0So+XoYRRz9pzGKdKE07IklctZzVci3rvargKjT3l4QMWdBuI8G9V1JLTY02e2d4dKv0ozGZcLGYLsJGNKHCBWxVCsE90Y=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=SATLEXMB03.amd.com; pr=C
Message-ID: <f6592a39-539f-4a4f-ad3f-9d84393fdc53@amd.com>
Date: Tue, 2 Jan 2024 12:58:29 -0500
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v11 05/17] vpci: add hooks for PCI device assign/de-assign
Content-Language: en-US
To: Jan Beulich <jbeulich@suse.com>, Volodymyr Babchuk
	<Volodymyr_Babchuk@epam.com>
CC: Oleksandr Andrushchenko <Oleksandr_Andrushchenko@epam.com>, Paul Durrant
	<paul@xen.org>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
	"xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
References: <20231202012556.2012281-1-volodymyr_babchuk@epam.com>
 <20231202012556.2012281-6-volodymyr_babchuk@epam.com>
 <c8e09053-53ae-47e0-a3a5-c9c6b58762d7@suse.com>
From: Stewart Hildebrand <stewart.hildebrand@amd.com>
In-Reply-To: <c8e09053-53ae-47e0-a3a5-c9c6b58762d7@suse.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 7bit
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: MN1PEPF0000ECD6:EE_|MN0PR12MB6342:EE_
X-MS-Office365-Filtering-Correlation-Id: ec382809-c645-4433-e30b-08dc0bbc6e8f
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam: BCL:0;
X-Microsoft-Antispam-Message-Info:
	6bz8uUDkO8fKVe3hQODXIM7j+tNkD9jqUYLsCZmx16IUBK0bS6vpj2BsTcq34pORwRbY3DmXNgsiFlvW1A0NqEh78E31mt0Lw9y0rl0bbo4vlfF3jH8MjiWcaXxn2I3qmLYlJVfXtJ9Y1L7SXBQcc54Bm7QfPnySJQHMeeHZ/JBYAYxsOYZPdwHJsXah8D1lmKAtdxrcaiHr7h0zXUXG0h/Hw3hhUfJ6O/nXH7sdJ4y2NIBooryAKlKhn7ceG2/kI8gosCqoE5O1VXYI0CBQSbxxqzgKHKqd9K+bMoB4bTcG6wmi7fggaqtTgrbNTZ9XVoB5Se5pR/kpABQTZnpXcSCMnIW6mpZXQtqhAX2vxP25FQ7QEYoZpvjbVEERoO36QkrEBwS+R+qd7bE5ONCuyE6xd9+JL/MKBxdGvwvJgbaxnHQIxLsbBgaVxgxMEAr9oC+gynB/ut7aYGwP/p5gv3IWmJxjwSFhppPa1VykliwQh/8TfFnboV2WT8oWhXBvhmAMWaecS/Mk7DP/oxeoEK3yDVObfuWGeeEpVlHInL9goto9hVJTH9wMw/PwKqrBCgYIRgo5gUqoIPI2dqAwITNWhbveds8efXFcV0BUzo5Mj0tmzhTRt5vRvvLKDjqESbwLq8ji0FWiEFUZZ5ptecCXKQqyJDk9A+3Q1nsUOu7q5DJT/r/0FxEv6TcPQWmh/xMkTCVDXZIxM3Qml2JCWFoFK/lGCzX1X/neytN3JegSTLZYrdGpHqZvODlU9cEXaDu5/oy5+j5jk7nNpuxBzo2Lj6tCAKIcpeQGrms79FoBOhAM35+5+liC1FK2y8HP
X-Forefront-Antispam-Report:
	CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB03.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230031)(4636009)(136003)(346002)(376002)(396003)(39860400002)(230922051799003)(1800799012)(451199024)(64100799003)(186009)(82310400011)(36840700001)(46966006)(40470700004)(31686004)(40480700001)(40460700003)(2616005)(336012)(426003)(26005)(83380400001)(31696002)(86362001)(36756003)(356005)(81166007)(82740400003)(47076005)(44832011)(4326008)(4744005)(53546011)(16576012)(36860700001)(8676002)(5660300002)(8936002)(478600001)(70206006)(54906003)(70586007)(316002)(110136005)(41300700001)(2906002)(43740500002)(36900700001);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Jan 2024 17:58:31.5979
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: ec382809-c645-4433-e30b-08dc0bbc6e8f
X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB03.amd.com]
X-MS-Exchange-CrossTenant-AuthSource:
	MN1PEPF0000ECD6.namprd02.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN0PR12MB6342

On 12/22/23 03:52, Jan Beulich wrote:
> On 02.12.2023 02:27, Volodymyr Babchuk wrote:
>> @@ -886,6 +890,10 @@ static int deassign_device(struct domain *d, uint16_t seg, uint8_t bus,
>>  
>>      pdev->fault.count = 0;
>>  
>> +    write_lock(&target->pci_lock);
>> +    ret = vpci_assign_device(pdev);
>> +    write_unlock(&target->pci_lock);
>> +
>>   out:
>>      if ( ret )
>>          printk(XENLOG_G_ERR "%pd: deassign (%pp) failed (%d)\n",
> 
> Considering the function we're in, I think this "assign" deserves a comment.

OK, we will add a comment along the lines of:

    /* Re-assign back to hardware_domain */

> It's necessary for hwdom only aiui, i.e. particularly not for the more
> typical case of putting the device in quarantine?

Right, since dom_io doesn't have vPCI

> 
> Jan


From xen-devel-bounces@lists.xenproject.org Tue Jan 02 18:00:12 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 02 Jan 2024 18:00:12 +0000
Received: from list by lists.xenproject.org with outflank-mailman.660820.1030445 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rKj3d-0000Ws-8z; Tue, 02 Jan 2024 18:00:05 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 660820.1030445; Tue, 02 Jan 2024 18:00:05 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rKj3d-0000WK-3V; Tue, 02 Jan 2024 18:00:05 +0000
Received: by outflank-mailman (input) for mailman id 660820;
 Tue, 02 Jan 2024 18:00:03 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=oNM8=IM=amd.com=Stewart.Hildebrand@srs-se1.protection.inumbo.net>)
 id 1rKj3b-00089d-Pk
 for xen-devel@lists.xenproject.org; Tue, 02 Jan 2024 18:00:03 +0000
Received: from NAM02-BN1-obe.outbound.protection.outlook.com
 (mail-bn1nam02on20609.outbound.protection.outlook.com
 [2a01:111:f400:7eb2::609])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id be40f6ae-a998-11ee-9b0f-b553b5be7939;
 Tue, 02 Jan 2024 18:59:59 +0100 (CET)
Received: from BYAPR05CA0011.namprd05.prod.outlook.com (2603:10b6:a03:c0::24)
 by CY8PR12MB7338.namprd12.prod.outlook.com (2603:10b6:930:52::8) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7135.25; Tue, 2 Jan
 2024 17:59:56 +0000
Received: from MWH0EPF000989EB.namprd02.prod.outlook.com
 (2603:10b6:a03:c0:cafe::e) by BYAPR05CA0011.outlook.office365.com
 (2603:10b6:a03:c0::24) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7159.7 via Frontend
 Transport; Tue, 2 Jan 2024 17:59:55 +0000
Received: from SATLEXMB04.amd.com (165.204.84.17) by
 MWH0EPF000989EB.mail.protection.outlook.com (10.167.241.138) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.7159.9 via Frontend Transport; Tue, 2 Jan 2024 17:59:55 +0000
Received: from SATLEXMB04.amd.com (10.181.40.145) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.34; Tue, 2 Jan
 2024 11:59:54 -0600
Received: from [172.23.76.218] (10.180.168.240) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server id 15.1.2507.34 via Frontend
 Transport; Tue, 2 Jan 2024 11:59:53 -0600
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: be40f6ae-a998-11ee-9b0f-b553b5be7939
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=Yg/ShcVHaU3auk6Py5D5evMVc3RKDdZ1Ud8TYzLzJIDOzWjz0MYilLbWHYmuQ+v1Zrin058jUapwHZWqpLEAJmTrsPBDCBdQakzkH7sg897DngeEo4ukSdOCF3silLjD8gAn1CVsktTicQ1Zsxa9jy+CjpaOaGvIdrvKG1NGtSkgGkmYICNBFA1SZFLN1BrHDbajXmPCfRYgY29LqZF4g/qk1sLP5xPnubIbmjj/qwMZWe/ho+BdMelx2Aw0oKgOGJh2CB4w+Fe5CcBM2DcVtlGi4mwRD2Z24g9Aui+xQWdkGZqDSH5n5xgVgzoebeihGJj7DKBTaCN9kgsLLjkdhQ==
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=LNv9SfU0t1uskTV7tV/6zk668SUCL/wWCzQAB04Vwo0=;
 b=NEAn2HGv0897OisgeNLBEM7yj/wl62XEGGDEidHMBSlmH0Uuv5lrED4hOIuEtmil+UnD9cd5vGbPP2b/lDs1Pc5bi7/jK3McvcmW+pgLXKaNxYH6CaFjsC+9491Z5Bx8ZiuDZMR6cb6pH1jjABB8rdo94wOr8RDtxZAfOQ2YGlghZplqSl6qForAcgiWPXvtfIjawKSPUGIt+knUISk8vz0vbo8N7p15iCAy0wL07NsdOKPPzXoBZwb4qJ8/S/0VuOQS2pC++iHSZRjh17pGLevN2vBSGBZ7mpoaGxIWgh6gK4IYPN+lAeLQ3Om2/AqxTcIag5SVDWk2Y47KAwVjFg==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=citrix.com 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)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=LNv9SfU0t1uskTV7tV/6zk668SUCL/wWCzQAB04Vwo0=;
 b=Ey1bgFrvQfxrNWfWBkl72nufpr5l9iZqHvzwqnocNfRAh8nB+NtUDX1Dikl7uKM9KT8u8UKdyKmajkGtpeAkgHVV4umPbMTLSeM9u8Gk2sgLzoTOKSuSWuTLg+a8ZsCuhWUdBFmFcz6NZbeQSIPZ7/G0G40m4+jHJ/FuzVDcTGc=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C
Message-ID: <2c085876-fc9c-428e-b064-5be0d19c78e3@amd.com>
Date: Tue, 2 Jan 2024 12:59:53 -0500
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v11 05/17] vpci: add hooks for PCI device assign/de-assign
Content-Language: en-US
To: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>, Volodymyr Babchuk
	<Volodymyr_Babchuk@epam.com>
CC: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>,
	Oleksandr Andrushchenko <Oleksandr_Andrushchenko@epam.com>, Jan Beulich
	<jbeulich@suse.com>, Paul Durrant <paul@xen.org>
References: <20231202012556.2012281-1-volodymyr_babchuk@epam.com>
 <20231202012556.2012281-6-volodymyr_babchuk@epam.com>
 <ZYRYDO2MPOIfx64b@macbook>
From: Stewart Hildebrand <stewart.hildebrand@amd.com>
In-Reply-To: <ZYRYDO2MPOIfx64b@macbook>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: MWH0EPF000989EB:EE_|CY8PR12MB7338:EE_
X-MS-Office365-Filtering-Correlation-Id: 2ee0ce15-37f4-4b7b-116a-08dc0bbca055
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam: BCL:0;
X-Microsoft-Antispam-Message-Info:
	8y74gQeAG8eI6h2vQ2qO2Ug92GI+e2gipzdmf167IwPJaF8LeZ4UxBvgBeGyg1/fRMMACCqL/sq5qXUI7RzBDXsWILWqfRFZBUgQn0t/N9QQr8IDBh/KQQnCq2Nd6j6dNa5djVAi7uh9sJG1mDrQx+598ymZ21haxTGmJ70fehtK4Sp4n41mIHgv3oO9k1OPAFUX3EukOp5jij50uV+ybzVXcFm6RgFSob6voCdRyfrR09D/3/F5zfLAjl/XE9/eHQcZf2lw4C8uPnnYjZk+p/NibqqjmI5W7rDeRAneEVAgnpgLosmkyAjT+AywUAhKC3VOEM/IR6pbgS6XWAYePi/n8TYbl8LfA/Sd7gfmWqolfl3jpbbWhesNs9OQw9SuEekEeUupqZGAQOLghYfyMqX1E64Rnz8DlNPICS5gWmBX6sJAGE/L4q3QRuWjHmgvhHoVpvumgHYFz5LklG6cIgWchvWweg5zH830HSCQn93uOnOYzFjtsOGk0jykzcQlQCuq4xY1+wR8HWVx5FSA5DGPpPm/7QYLWf34tZbGH/oA7q2ZEQpgEOYv9AndIg4ulQF38SKGfH2vDe4vQhsKr+23VhML094plN7C4ATS7lHCXeWEBkT0Nnr0qRc2TwmViYh8lLtxzxp0hyJGjxMGKFBPpxQGETAgvkFnCAqy4S9n79pQUPra0eetoHmQWAsw+EdNZVg2+iTdq1rVM81LbwwVyDv5zxToI61/33/TSLj9LLHlze0SKn0vGgzW+ox16eb00BvMcHO9Ck97Bo72cu3YkmDZ7bjIVemumIK2S4gIEWJz68RAC3lq4Fusq5yJ
X-Forefront-Antispam-Report:
	CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230031)(4636009)(396003)(376002)(39860400002)(346002)(136003)(230922051799003)(451199024)(1800799012)(64100799003)(82310400011)(186009)(36840700001)(46966006)(40470700004)(356005)(82740400003)(81166007)(36756003)(31686004)(31696002)(40480700001)(40460700003)(86362001)(2616005)(426003)(336012)(26005)(53546011)(47076005)(54906003)(4326008)(16576012)(316002)(478600001)(8936002)(8676002)(36860700001)(110136005)(70206006)(70586007)(41300700001)(5660300002)(44832011)(2906002)(43740500002)(36900700001);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Jan 2024 17:59:55.0048
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 2ee0ce15-37f4-4b7b-116a-08dc0bbca055
X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com]
X-MS-Exchange-CrossTenant-AuthSource:
	MWH0EPF000989EB.namprd02.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY8PR12MB7338

On 12/21/23 10:21, Roger Pau Monné wrote:
> On Sat, Dec 02, 2023 at 01:27:03AM +0000, Volodymyr Babchuk wrote:
>> From: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>
>>
>> When a PCI device gets assigned/de-assigned we need to
>> initialize/de-initialize vPCI state for the device.
>>
>> Also, rename vpci_add_handlers() to vpci_assign_device() and
>> vpci_remove_device() to vpci_deassign_device() to better reflect role
>> of the functions.
>>
>> Signed-off-by: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>
>> Signed-off-by: Volodymyr Babchuk <volodymyr_babchuk@epam.com>
> 
> Reviewed-by: Roger Pau Monné <roger.pau@citrix.com>

Thanks!

> 
>> diff --git a/xen/include/xen/vpci.h b/xen/include/xen/vpci.h
>> index d743d96a10..75cfb532ee 100644
>> --- a/xen/include/xen/vpci.h
>> +++ b/xen/include/xen/vpci.h
>> @@ -25,11 +25,11 @@ typedef int vpci_register_init_t(struct pci_dev *dev);
>>    static vpci_register_init_t *const x##_entry  \
>>                 __used_section(".data.vpci." p) = x
>>  
>> -/* Add vPCI handlers to device. */
>> -int __must_check vpci_add_handlers(struct pci_dev *pdev);
>> +/* Assign vPCI to device by adding handlers to device. */
> 
> Nit: the comment would likely benefit from removing the last device
> before the full stop.

Will fix

> 
>> +int __must_check vpci_assign_device(struct pci_dev *pdev);
> 
> Thanks, Roger.


From xen-devel-bounces@lists.xenproject.org Tue Jan 02 19:09:59 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 02 Jan 2024 19:09:59 +0000
Received: from list by lists.xenproject.org with outflank-mailman.660826.1030454 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rKk92-0006qy-8v; Tue, 02 Jan 2024 19:09:44 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 660826.1030454; Tue, 02 Jan 2024 19:09:44 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rKk92-0006qr-5t; Tue, 02 Jan 2024 19:09:44 +0000
Received: by outflank-mailman (input) for mailman id 660826;
 Tue, 02 Jan 2024 19:09:43 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>) id 1rKk91-0006ql-Mf
 for xen-devel@lists.xenproject.org; Tue, 02 Jan 2024 19:09:43 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rKk8x-00034K-1n; Tue, 02 Jan 2024 19:09:39 +0000
Received: from [54.239.6.182] (helo=[10.95.76.173])
 by xenbits.xenproject.org with esmtpsa
 (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rKk8w-0003mb-Qi; Tue, 02 Jan 2024 19:09:38 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
	s=20200302mail; h=Content-Transfer-Encoding:Content-Type:In-Reply-To:From:
	References:Cc:To:Subject:MIME-Version:Date:Message-ID;
	bh=ftVZ3aGf9z8uzFxxrchpWDI70XVg+aUI4vstfPeAkCE=; b=rmeFlXah8dYrBaFjf77bB0kbjX
	mCsW9GHHLBhwqM8oJlLynPSrt/jNKlwIJQ2qrVToj/Eaw/sAR+i99w9XNzXAYl/Jk0/5Sau6MYYiE
	YSjhIgvULKUNv0OHqziUrE9CqxAe14b7zqMVfgbMSN5U7EW6UrezF5EhLJO+vFfldwsg=;
Message-ID: <d0daf858-eda8-4b2a-9cfe-82fff834df8f@xen.org>
Date: Tue, 2 Jan 2024 19:09:36 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2 1/2] xen/x86: io_apic: Introduce a command line option
 to skip timer check
Content-Language: en-GB
To: Jan Beulich <jbeulich@suse.com>
Cc: Julien Grall <jgrall@amazon.com>,
 Andrew Cooper <andrew.cooper3@citrix.com>,
 George Dunlap <george.dunlap@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 xen-devel@lists.xenproject.org
References: <20231211122322.15815-1-julien@xen.org>
 <20231211122322.15815-2-julien@xen.org>
 <b17bb7d1-1206-4ad1-96b1-7b903a740c83@suse.com>
 <8b8a62a0-f854-405e-b256-5eee4bfdcb6c@xen.org>
 <b74f1f28-58da-4604-a7ef-370aeb0522ce@suse.com>
From: Julien Grall <julien@xen.org>
In-Reply-To: <b74f1f28-58da-4604-a7ef-370aeb0522ce@suse.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

Hi Jan,

On 14/12/2023 10:35, Jan Beulich wrote:
> On 14.12.2023 11:14, Julien Grall wrote:
>> On 14/12/2023 10:10, Jan Beulich wrote:
>>> On 11.12.2023 13:23, Julien Grall wrote:
>>>> --- a/xen/arch/x86/io_apic.c
>>>> +++ b/xen/arch/x86/io_apic.c
>>>> @@ -57,6 +57,14 @@ bool __initdata ioapic_ack_forced;
>>>>    int __read_mostly nr_ioapic_entries[MAX_IO_APICS];
>>>>    int __read_mostly nr_ioapics;
>>>>    
>>>> +/*
>>>> + * The logic to check if the timer is working is expensive. So allow
>>>> + * the admin to bypass it if they know their platform doesn't have
>>>> + * a buggy timer.
>>>> + */
>>>> +static bool __initdata pit_irq_works;
>>>> +boolean_param("pit-irq-works", pit_irq_works);
>>>> +
>>>>    /*
>>>>     * Rough estimation of how many shared IRQs there are, can
>>>>     * be changed anytime.
>>>> @@ -1502,6 +1510,9 @@ static int __init timer_irq_works(void)
>>>>    {
>>>>        unsigned long t1, flags;
>>>>    
>>>> +    if ( pit_irq_works )
>>>> +        return 1;
>>>
>>> When the check is placed here, what exactly use of the option means is
>>> system dependent. I consider this somewhat risky, so I'd prefer if the
>>> check was put on the "normal" path in check_timer(). That way it'll
>>> affect only the one case which we can generally consider "known good",
>>> but not the cases where the virtual wire setups are being probed. I.e.

By "known good", do you mean the following:

diff --git a/xen/arch/x86/io_apic.c b/xen/arch/x86/io_apic.c
index c89fbed8d675..c39d39ee951a 100644
--- a/xen/arch/x86/io_apic.c
+++ b/xen/arch/x86/io_apic.c
@@ -1960,7 +1959,8 @@ static void __init check_timer(void)
           * Ok, does IRQ0 through the IOAPIC work?
           */
          unmask_IO_APIC_irq(irq_to_desc(0));
-        if (timer_irq_works()) {
+        if (pit_irq_works || timer_irq_works()) {
+            printk("====== pirq_irq_works %d =====\n", pit_irq_works);
              local_irq_restore(flags);
              return;
          }

>>
>> I am not against restricting when we allow skipping the timer check. But
>> in that case, I wonder why Linux is doing it differently?
> 
> Sadly Linux'es git history doesn't go back far enough (begins only at past
> 2.6.11), so I can't (easily) find the patch (and description) for the x86-64
> change. The later i386 change is justified mainly by paravirt needs, so
> isn't applicable here. I wouldn't therefore exclude that my point above
> wasn't even taken into consideration. Furthermore their command line option
> is "no_timer_check", which to me firmly says "don't check" without regard to
> whether the source (PIT) is actually okay. That's different with the option
> name you (imo validly) chose.

Just to note that the name was suggested by Roger. I have to admit that 
I didn't check if this made sense for the existing placement.

Anyway, I tested the change on the HW where I wanted to skip the timer 
check. And I can confirm this is still skipping the timer check.

So I will send a new version with the diff above and some updated comments.

Cheers,

-- 
Julien Grall


From xen-devel-bounces@lists.xenproject.org Tue Jan 02 20:17:00 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 02 Jan 2024 20:17:00 +0000
Received: from list by lists.xenproject.org with outflank-mailman.660831.1030463 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rKlBs-0002Rm-Qe; Tue, 02 Jan 2024 20:16:44 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 660831.1030463; Tue, 02 Jan 2024 20:16:44 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rKlBs-0002Rf-O9; Tue, 02 Jan 2024 20:16:44 +0000
Received: by outflank-mailman (input) for mailman id 660831;
 Tue, 02 Jan 2024 20:16:44 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=BNED=IM=gmail.com=rosbrookn@srs-se1.protection.inumbo.net>)
 id 1rKlBs-0002RW-5h
 for xen-devel@lists.xenproject.org; Tue, 02 Jan 2024 20:16:44 +0000
Received: from mail-lf1-x12d.google.com (mail-lf1-x12d.google.com
 [2a00:1450:4864:20::12d])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id d81d3cc9-a9ab-11ee-98ef-6d05b1d4d9a1;
 Tue, 02 Jan 2024 21:16:42 +0100 (CET)
Received: by mail-lf1-x12d.google.com with SMTP id
 2adb3069b0e04-50e7e6283bdso6543404e87.1
 for <xen-devel@lists.xenproject.org>; Tue, 02 Jan 2024 12:16:42 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: d81d3cc9-a9ab-11ee-98ef-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1704226602; x=1704831402; darn=lists.xenproject.org;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:from:to:cc:subject:date
         :message-id:reply-to;
        bh=gG8DR5rZpNagP+W787Mka3E5XABWlS7AaAtnT6wDokk=;
        b=Drw4cbaoiguTbigtjWcd2BeO4x/+sHf2YKntF51+saQ757bwt2rKemeBYe/jATkLBB
         bbn/6GxyoVxVql7fRQd8g/iavra8Eb9df1271mjN4QokV5pggt48hUjOw1dy5pO3Sf82
         PWHzWXDEKMKym7ooh+7cPlCNRYD6QEAb1koW9oHrbyk4YHdX3MqWIEJHAJKGe0f7psIL
         CCd7Se0zrGfOngut3LjrvDdpFr34aWlMUDC/ZVg9F4igxLGndQJeUesap8Pnm91rV4Hl
         h6bnwjvrCmaBaP8+1vslQDVIz0vBBWigIKYWvsYDhKb4igrNq7CpVnc0NzQUhcPMBYCa
         Jvxg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704226602; x=1704831402;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to;
        bh=gG8DR5rZpNagP+W787Mka3E5XABWlS7AaAtnT6wDokk=;
        b=XqxuffUYtkX9/n7frfpG2mpquvkB96r0hhHQ5tjqsz/NCjE6OTLacfPNnSVzX071qA
         kMl57vIGvxXZu4rtwf02TLNCLiidALpieQZmKE/AobEy4gb+sInwdZxFpMtA6RDluqEL
         JCtiwchLEQISS6FPJv4E7o9F4rbtkOeIdRlqC+vJyKE72LlZ9qah/ey59XnzgpE7A8mQ
         6sLsg/RbQpFmQjKpZg8wD0N+6ovJJQLiSkDKlFAx2y4hYYmn5Gfj93WvhCMR6p7FqhUp
         /1A2RMWmLl4O6wCfS+BqYkdUlqrzBxQfFI3HvnD2uoFrs7aTBLki0gxu5ZAHmjpLyPMU
         ObNg==
X-Gm-Message-State: AOJu0YzUTujxL8lCVoJjO0OZN5uryqJAoSrR6CUQqgwiAzoezQozpuvl
	XHrExkRYOUP6i8kmg2Slw7NInkut9KKEcnN5lwU=
X-Google-Smtp-Source: AGHT+IGpeIgmAQgJeYkRE1kUnbYPBcRZAErv0zQOrWqSBJqnu3VhcQHXimxgCWVN0XgIiYlPfWZrIDrnefDzXHjl6hc=
X-Received: by 2002:a05:6512:3d08:b0:50e:791f:2b07 with SMTP id
 d8-20020a0565123d0800b0050e791f2b07mr3328264lfv.152.1704226601829; Tue, 02
 Jan 2024 12:16:41 -0800 (PST)
MIME-Version: 1.0
References: <20231110160804.29021-1-jgross@suse.com> <20231110160804.29021-16-jgross@suse.com>
 <CAKf6xpty3ENpuPgTf7=Gk1Q-Ekn+FjOx=-ySMQF6v3kx7zntrw@mail.gmail.com>
 <CAEBZRSdyoCH2CFP14imC9We+sTiGn8f-DWecQ1t+ftd0+=0xwg@mail.gmail.com> <CAKf6xpuamYUe_HPuw_m38PBO9cgLpq-H4f_1qjGt5C7ptSkCoA@mail.gmail.com>
In-Reply-To: <CAKf6xpuamYUe_HPuw_m38PBO9cgLpq-H4f_1qjGt5C7ptSkCoA@mail.gmail.com>
From: Nick Rosbrook <rosbrookn@gmail.com>
Date: Tue, 2 Jan 2024 15:16:30 -0500
Message-ID: <CAEBZRSeWjivhLgjQ-9_MKAx6-dOqWLeFMsMoV54fdwhhtJLDjQ@mail.gmail.com>
Subject: Re: [PATCH v2 15/29] tools/libs/light: add backend type for 9pfs PV devices
To: Jason Andryuk <jandryuk@gmail.com>
Cc: Juergen Gross <jgross@suse.com>, xen-devel@lists.xenproject.org, Wei Liu <wl@xen.org>, 
	Anthony PERARD <anthony.perard@citrix.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

On Wed, Dec 6, 2023 at 1:53=E2=80=AFPM Jason Andryuk <jandryuk@gmail.com> w=
rote:
>
> On Wed, Dec 6, 2023 at 12:44=E2=80=AFPM Nick Rosbrook <rosbrookn@gmail.co=
m> wrote:
> >
> > On Wed, Dec 6, 2023 at 9:36=E2=80=AFAM Jason Andryuk <jandryuk@gmail.co=
m> wrote:
> > > FYI, these IDL changes will require golang binding regeneration.
> > > (Maybe we shouldn't have generated code checked in...)
> >
> > The generated code needs to be checked in for it to work as a go module=
.
>
> I don't follow. The build system generates the *.gen.go binding files
> if they are missing.  They can then be used, installed or packaged.
> Why do they need to be checked into the git repo?  Checked in, they
> have a tendency to go stale.
>

That's not how go modules are typically consumed. E.g., the Debian
packages with go source code are only there to satisfy Build-Depends
of other packages. One can use locally installed go modules as
overrides at build-time, but normally go modules are fetched via git
(internally by the go tooling) according to what is specified in a
project's go.mod file. See https://go.dev/blog/using-go-modules for
more.

-Nick


From xen-devel-bounces@lists.xenproject.org Tue Jan 02 20:24:06 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 02 Jan 2024 20:24:06 +0000
Received: from list by lists.xenproject.org with outflank-mailman.660835.1030473 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rKlIv-0004Yf-Ho; Tue, 02 Jan 2024 20:24:01 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 660835.1030473; Tue, 02 Jan 2024 20:24:01 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rKlIv-0004YY-FJ; Tue, 02 Jan 2024 20:24:01 +0000
Received: by outflank-mailman (input) for mailman id 660835;
 Tue, 02 Jan 2024 20:24:00 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=J0cx=IM=gmail.com=euidzero@srs-se1.protection.inumbo.net>)
 id 1rKlIu-0004YQ-2i
 for xen-devel@lists.xenproject.org; Tue, 02 Jan 2024 20:24:00 +0000
Received: from mail-pg1-x534.google.com (mail-pg1-x534.google.com
 [2607:f8b0:4864:20::534])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id db5e2b84-a9ac-11ee-98ef-6d05b1d4d9a1;
 Tue, 02 Jan 2024 21:23:58 +0100 (CET)
Received: by mail-pg1-x534.google.com with SMTP id
 41be03b00d2f7-5cddfe0cb64so2730263a12.0
 for <xen-devel@lists.xenproject.org>; Tue, 02 Jan 2024 12:23:58 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: db5e2b84-a9ac-11ee-98ef-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1704227037; x=1704831837; darn=lists.xenproject.org;
        h=cc:to:subject:message-id:date:from:in-reply-to:references
         :mime-version:from:to:cc:subject:date:message-id:reply-to;
        bh=eaRHl4sQmsFBiWds27wFOjzMHHzIv48kVTaFV0130P8=;
        b=h6uWHdSYPdo1mIJ5RO7LoH+0/WGlTvG3nKsXeQnCU34AlL0nqKCULIGYewf4sq8Pr7
         qLoNFtm672/UFDL1cHDyqikkXyuj62v7tEfU5VMajq4co/zxr+AubYq/lrIf/Qke5lzG
         ep1+CFvkfCXxaCwIwOSCl89ByCyJatzZrRA81jhmn1ITj0Ko8E9k4YhAvfyXv8lRdu+W
         VYi+uhXyxG21VkYUxak1LqPGWeDXqYancZuXkXOF1bxqWIFSFbWzDa/BxSqxnWxsilKW
         ms/M4507ALViorvTEaahItzOBS/wV78hjZhokL2TQKVGb7wCxmlqqHEuGnf/kCpyovlp
         HxKQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704227037; x=1704831837;
        h=cc:to:subject:message-id:date:from:in-reply-to:references
         :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id
         :reply-to;
        bh=eaRHl4sQmsFBiWds27wFOjzMHHzIv48kVTaFV0130P8=;
        b=eNoaobhPva0vM6G5oR1lZHpr8TVPBRBhtLWhzqZmLErGwGe90WgR+L9YWETueI5W0V
         DmNSwSh59dRysFLKxH1nfK27fJaqTdWjfuZ7AWBy27JP0fF1GN/QEjZZAKB+UR7/2P0W
         VoyXZxz/TRF+PpkZme6XYjmR5yrMyyYpkYMni1MGO8nLHckfsNVjfHeRhpMfMEe4n9FW
         zJc5Hycus8ghtaXfE1Sbe8poRqe/94BQ+3Tfp1zVSfpw8L0K9lu6Pe6oOiww82uY+sgm
         hCPF63OCC5hJ0ItsVRjripoWMuqgarzMKjF1CwdWARM1rwZjO/0K8mlxFohnojOrCaBP
         dgNQ==
X-Gm-Message-State: AOJu0YzMYH51tmmr/StlvbxpXtgh/CrZbES1cJ4mDutAvgZRXdEAigXj
	Lryg6SzfX75ou/9eESAG+YeUTUY+WKPHF9FGHt8DzrjgGOJ+Eg==
X-Google-Smtp-Source: AGHT+IHwdFPC8ZlOyhLKPnwc2hjy1il8mRAAXJbQizM142Suctj2RAhVcKvt1O9XOlRrB9MF83ABMbww7inc5HdWrNw=
X-Received: by 2002:a05:6a20:9756:b0:18b:e692:8f01 with SMTP id
 hs22-20020a056a20975600b0018be6928f01mr7298370pzc.5.1704227036749; Tue, 02
 Jan 2024 12:23:56 -0800 (PST)
MIME-Version: 1.0
References: <CAKm-Umas=5=JzooRzPHxUDigKpFK3Ze7cQcG8eR5kWgn-d_7fQ@mail.gmail.com>
 <64d738b7-08c1-4b2c-a828-a137c870408e@suse.com> <CAKm-UmayUxd8F337g+BnR=_50_o__oV_PeUv9Z+9gNZ5MXYmrA@mail.gmail.com>
 <b4f46a91-b3b9-49b9-9a26-e2f962dee54c@suse.com> <CAKm-UmY9yYv2gOwm-O3DF7dBBNeNjs+3pDGuU+sYgJ+OHwcLNw@mail.gmail.com>
 <CAKm-UmZ1Q77EqUit9J6RX0-MCALdu4gjaU2zrX6oneW+45a+Kw@mail.gmail.com>
 <CAKm-UmYZcsY=C2Yhmy_EeZi0iAguVH0Eqy83upBLa_ikQtPwnw@mail.gmail.com>
 <CAKm-Umapq5LW9yhSOGk8TOg1iuvUogUDKbEXbUcE5T5-vVzW3w@mail.gmail.com>
 <CAKm-UmaUZ=rj-F3RvMoR7H3OvBHm1iy4PTRZAjyi=MQUVTuYVg@mail.gmail.com>
 <CAKm-Umat77MTh6=GEuH+bf1WRX+_B4-N5hY4xwADALfhj4QCPA@mail.gmail.com>
 <6ba9568a-ff8e-48ad-907f-74303e04d3a2@suse.com> <CAKm-UmZVoUhidEV15Xk+J_XN5a2GsBqMbXL9wqdFdoAFf_u5AA@mail.gmail.com>
 <bcbceba7-42ac-45be-80ab-e3dfe7741ec6@suse.com> <2eafe45b-fd97-472c-a173-459d6ff0b957@suse.com>
 <CAKm-Umbs2D7NHFE+NW2xKOu7-AZhFpH4uzE5QTuQusnGA_eNWA@mail.gmail.com>
 <f539144c-885a-461c-a506-bdb73e626a65@suse.com> <CAKm-UmY126AfdGhWcZ3s9vwN9+ksVRRFEhOu0ZFMoDvxrqOibw@mail.gmail.com>
 <CAKm-UmYt3iV8zOhSmtqMGhi_8T93c_nCbnefs4m3UC+3UABqeQ@mail.gmail.com>
In-Reply-To: <CAKm-UmYt3iV8zOhSmtqMGhi_8T93c_nCbnefs4m3UC+3UABqeQ@mail.gmail.com>
From: =?UTF-8?Q?S=C3=A9bastien_Chaumat?= <euidzero@gmail.com>
Date: Tue, 2 Jan 2024 21:23:45 +0100
Message-ID: <CAKm-UmY-KXEAtBagikW4Jvp=SFXtmEg8P62pHfSo3Hr2s-0_-A@mail.gmail.com>
Subject: Re: [BUG]i2c_hid_acpi broken with 4.17.2 on Framework Laptop 13 AMD
To: Jan Beulich <jbeulich@suse.com>
Cc: xen-devel@lists.xenproject.org, Juergen Gross <jgross@suse.com>
Content-Type: multipart/alternative; boundary="000000000000246572060dfc47d0"

--000000000000246572060dfc47d0
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

>  output of gpioinfo
>
> kernel alone :
>
>         line   5: unnamed         input active-low consumer=3Dinterrupt
>         line  84: unnamed         input active-low consumer=3Dinterrupt
>
> xen:
>
>         line   5: unnamed         input active-low
>         line  84: unnamed         input active-low
>
> xen with skipping IRQ7 double init :
>
>         line   5: unnamed         input active-low consumer=3Dinterrupt
>         line  84: unnamed         input active-low
>
>
> So definitely progressing.
>

Checking /sys/kernel/irq/7

kernel alone :
 actions: pinctrl_amd
 chip_name: IR-IO-APIC
 hwirq: 7
 name: fasteoi
 per_cpu_count: 0,0,0,0,0,20,0,0,0,0,0,0,0,0,0,0
 type: level
 wakeup: enabled

xen skipping IRQ7 double init :

actions: pinctrl_amd
 chip_name: xen-pirq
 hwirq:
 name: ioapic-level
 per_cpu_count: 0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0
 type: edge
 wakeup: disabled

So the skip of IRQ7 in pci_xen_initial_domain() sets the correct handler
 (IIUC xen uses the ioapic-level and handles the eoi separately), but not
the correct type (still edge).
I guess this may explains the results above.

S=C3=A9bastien

--000000000000246572060dfc47d0
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><br><div class=3D"gmail_quote"><blockquote class=3D"gmail_=
quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,=
204);padding-left:1ex"><div dir=3D"ltr"><div class=3D"gmail_quote"><div>=C2=
=A0output of gpioinfo<br><br>kernel alone :<br><br>=C2=A0 =C2=A0 =C2=A0 =C2=
=A0 line =C2=A0 5:	unnamed =C2=A0 =C2=A0 =C2=A0 =C2=A0 	input active-low co=
nsumer=3Dinterrupt<br>=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 line =C2=
=A084:	unnamed =C2=A0 =C2=A0 =C2=A0 =C2=A0 	input active-low consumer=3Dint=
errupt<br><br>xen:<br><br>=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 line =
=C2=A0 5:	unnamed =C2=A0 =C2=A0 =C2=A0 =C2=A0 	input active-low<br>=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 line =C2=A084:	unnamed =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 	input active-low<br><br>xen with skipping IRQ7 double init :=
</div><div><br></div><div>=C2=A0 =C2=A0 =C2=A0 =C2=A0 line =C2=A0 5:	unname=
d =C2=A0 =C2=A0 =C2=A0 =C2=A0 	input active-low consumer=3Dinterrupt<br>=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 line =C2=A084:	unnamed =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 	input active-low<br><br><br>So definitely progressing.</=
div></div></div></blockquote><div><br></div><div><div>Checking /sys/kernel/=
irq/7</div><div><br></div><div>kernel alone :<br>=C2=A0actions: pinctrl_amd=
<br>=C2=A0chip_name: IR-IO-APIC<br>=C2=A0hwirq: 7<br>=C2=A0name: fasteoi<br=
>=C2=A0per_cpu_count: 0,0,0,0,0,20,0,0,0,0,0,0,0,0,0,0<br>=C2=A0type: level=
<br>=C2=A0wakeup: enabled</div><div><br></div><div>xen skipping IRQ7 double=
 init :</div><div><br></div><div>actions: pinctrl_amd<br>=C2=A0chip_name: x=
en-pirq<br>=C2=A0hwirq:</div><div>=C2=A0name: ioapic-level<br>=C2=A0per_cpu=
_count: 0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0<br>=C2=A0type: edge<br>=C2=A0wakeup=
: disabled</div><div><br></div><div>So the skip of IRQ7 in pci_xen_initial_=
domain() sets the correct handler</div><div>=C2=A0(IIUC xen uses the ioapic=
-level and handles the eoi separately), but not the correct type (still edg=
e).</div><div>I guess this may explains the results above.</div><div><br></=
div><div>S=C3=A9bastien<br></div>=C2=A0</div></div></div>

--000000000000246572060dfc47d0--


From xen-devel-bounces@lists.xenproject.org Tue Jan 02 21:00:47 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 02 Jan 2024 21:00:47 +0000
Received: from list by lists.xenproject.org with outflank-mailman.660849.1030488 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rKlsP-0003Wj-Ea; Tue, 02 Jan 2024 21:00:41 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 660849.1030488; Tue, 02 Jan 2024 21:00:41 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rKlsP-0003Wc-Bj; Tue, 02 Jan 2024 21:00:41 +0000
Received: by outflank-mailman (input) for mailman id 660849;
 Tue, 02 Jan 2024 21:00:40 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=mnqv=IM=kernel.org=sstabellini@srs-se1.protection.inumbo.net>)
 id 1rKlsO-0003WW-GX
 for xen-devel@lists.xenproject.org; Tue, 02 Jan 2024 21:00:40 +0000
Received: from sin.source.kernel.org (sin.source.kernel.org [145.40.73.55])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id f9e903e5-a9b1-11ee-9b0f-b553b5be7939;
 Tue, 02 Jan 2024 22:00:38 +0100 (CET)
Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58])
 by sin.source.kernel.org (Postfix) with ESMTP id 02657CE09E3;
 Tue,  2 Jan 2024 21:00:33 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 5A965C433C8;
 Tue,  2 Jan 2024 21:00:31 +0000 (UTC)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: f9e903e5-a9b1-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
	s=k20201202; t=1704229232;
	bh=NGph2zjxj+3ZgIZZyXjHEjd+fsObZ5b1FkXBVLE8Vnk=;
	h=Date:From:To:cc:Subject:In-Reply-To:References:From;
	b=CwTE4nLeHrZ9kb7uFijEQk6zTs3TbqWCViSNFR8zXP+FLNI8ZEa5RKqx3AXNKyFsE
	 C2/i/0/mDQAiXzhWTdVd3SjeVijGfnoKeFIlOCkAoFLy/XSkeoXRH+xexfsq8StQ0N
	 e1ITIT3MN278Exj5bS2iwJ+IIw8xyYKxXnRo2hF7jLArRBUWWinkrT1le0NczcEQ7a
	 k29q8SDOC20ukybTy1gqkU4YnHP6cMiUx8isR8thsrRiF//PTd9qA5DzMBjwnFTy5d
	 HMy8DxyPhGgmLJ7YYLEZBZojsHKF8+hVxj04iDmFYDYuiOrBZC9Z61BvWOD/3OyB9K
	 FsSiOMhstZ/SA==
Date: Tue, 2 Jan 2024 13:00:29 -0800 (PST)
From: Stefano Stabellini <sstabellini@kernel.org>
X-X-Sender: sstabellini@ubuntu-linux-20-04-desktop
To: Peng Fan <peng.fan@nxp.com>
cc: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>, 
    Julien Grall <julien@xen.org>, 
    "sstabellini@kernel.org" <sstabellini@kernel.org>, 
    Viresh Kumar <viresh.kumar@linaro.org>, 
    Oleksii Moisieiev <oleksii_moisieiev@epam.com>, vikram.garhwal@amd.com
Subject: Re: XEN virtio question
In-Reply-To: <DU0PR04MB941725CE43965686FD8B9A948861A@DU0PR04MB9417.eurprd04.prod.outlook.com>
Message-ID: <alpine.DEB.2.22.394.2401021259560.1322202@ubuntu-linux-20-04-desktop>
References: <DU0PR04MB941725CE43965686FD8B9A948861A@DU0PR04MB9417.eurprd04.prod.outlook.com>
User-Agent: Alpine 2.22 (DEB 394 2020-01-19)
MIME-Version: 1.0
Content-Type: text/plain; charset=US-ASCII

Hi Peng,

Let me CC Vikram who might have seen this.


On Tue, 2 Jan 2024, Peng Fan wrote:
> All,
> 
> I am trying to setup xen virtio on NXP i.MX9, but when build xen tools,
> I always met qemu build error, such as:
> 
> In file included from ../qemu-xen-dir-remote/hw/xen/xen-operations.c:16:
> /home/Freenix/work/sw-stash/xen/upstream/tools/qemu-xen-dir-remote/
> include/hw/xen/xen_native.h:5:2: error: #error In Xen native files, 
> include xen_native.h before other Xen headers
>     5 | #error In Xen native files, include xen_native.h before other Xen headers
>       |  ^~~~~
> 
> Anyone met this?
> 
> BTW, do u build qemu together with xen or build standalone qemu out of
> xen repo? Does the default qemu-system-i386 built out works well
> for virtio trying?
> 
> Thanks,
> Peng.
> 


From xen-devel-bounces@lists.xenproject.org Tue Jan 02 21:09:41 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 02 Jan 2024 21:09:41 +0000
Received: from list by lists.xenproject.org with outflank-mailman.660854.1030499 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rKm14-0004GR-8u; Tue, 02 Jan 2024 21:09:38 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 660854.1030499; Tue, 02 Jan 2024 21:09:38 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rKm14-0004GK-5w; Tue, 02 Jan 2024 21:09:38 +0000
Received: by outflank-mailman (input) for mailman id 660854;
 Tue, 02 Jan 2024 21:09:36 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=oNM8=IM=amd.com=Stewart.Hildebrand@srs-se1.protection.inumbo.net>)
 id 1rKm12-0004FB-6G
 for xen-devel@lists.xenproject.org; Tue, 02 Jan 2024 21:09:36 +0000
Received: from NAM10-BN7-obe.outbound.protection.outlook.com
 (mail-bn7nam10on20600.outbound.protection.outlook.com
 [2a01:111:f403:2009::600])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 39ddaf13-a9b3-11ee-98ef-6d05b1d4d9a1;
 Tue, 02 Jan 2024 22:09:33 +0100 (CET)
Received: from DM6PR06CA0040.namprd06.prod.outlook.com (2603:10b6:5:54::17) by
 IA0PR12MB9047.namprd12.prod.outlook.com (2603:10b6:208:402::8) with
 Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.7159.13; Tue, 2 Jan 2024 21:09:28 +0000
Received: from SN1PEPF0002636C.namprd02.prod.outlook.com
 (2603:10b6:5:54:cafe::d) by DM6PR06CA0040.outlook.office365.com
 (2603:10b6:5:54::17) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7135.21 via Frontend
 Transport; Tue, 2 Jan 2024 21:09:28 +0000
Received: from SATLEXMB04.amd.com (165.204.84.17) by
 SN1PEPF0002636C.mail.protection.outlook.com (10.167.241.137) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.7159.9 via Frontend Transport; Tue, 2 Jan 2024 21:09:27 +0000
Received: from SATLEXMB03.amd.com (10.181.40.144) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.34; Tue, 2 Jan
 2024 15:09:26 -0600
Received: from [172.23.76.218] (10.180.168.240) by SATLEXMB03.amd.com
 (10.181.40.144) with Microsoft SMTP Server id 15.1.2507.34 via Frontend
 Transport; Tue, 2 Jan 2024 15:09:25 -0600
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 39ddaf13-a9b3-11ee-98ef-6d05b1d4d9a1
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=CkF5gg5gRHd9hPwad4UoUxdEGJENaPxR7uscHtjbfi06d5MlPfoWouLjlmkgZtniIhHGmx4Jn6NMRaVK0AAEPp/AxurHxhZCuJ5BWV4YNlnm4ECjNDYpu5HzGtAI/TBBNA7xHKh3Rr7enToq7oGKpY6tG+NH76L6tzAFxO8zGLGrUW/X+o+54vM9JXRZjGheXmmf7I2qli1no5kIP3Y8Q1cEmwVIOpVLNlH3Sq3sRke2OjVmps2wwjExBIgWip6v4+Kbbl4AVS5ZKe/McbWg7YycLEYdCN8hkUqt9Q4A2bF2Fk2ZWXaraz0lG1jWdtKajr6POz2u2R0ekIPDTturag==
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=4CYnwMDi0gbgs6xNItHRJp5E5OCLunzKzpgM/T95x0M=;
 b=fxfMaG0VtBUh9YN4sgOJMIXVOpi1EFqHDigcfVDiKNoqMFON90WNhUNWnBVg4igPhPraM5/9ewtUVSle38m9ciaI65hXa3gMu9ruZwEWR3P4AcbcPeH2HnLdCFdR2J9DgsQrW/WZtZ8HsGw/nbz6k94RfxZJbTZXcK8kvm2nGuaCYmyz3b/PW8hnpss+s8XFmBlfeZ/7RNSlOVN34P8iex2GqDTrvgf/Q0yDTFldlyQtNZx1umFuDRLGVdVOVzqG3tfd3W7tfShr3PzQ9oz30Epud+7hUzzGubdpdOHjR4peWhmZ8B5bhxhK2EhqQgob5jj6Gp+mRYYJtgAw6pZBfA==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=citrix.com 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)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=4CYnwMDi0gbgs6xNItHRJp5E5OCLunzKzpgM/T95x0M=;
 b=voP4yS/gGK/ThcKiWsG3cUH6Gx9rZ6RcqmT9YDH4jN38q0v3nQe4+jBpVKVv/3Rc+jJrByhsdp9+oVqkLZ1kMumcg2mty3VhsCDb7QAHaWs6IMiZtJeoD1CxDQCOlxZFFq9zgNY5nbYDzv5l5LFVBR9K7d2cU/pilEX7gBJ5vPY=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C
Message-ID: <32cf97de-d769-46b2-8af4-3891bb2497e3@amd.com>
Date: Tue, 2 Jan 2024 16:09:20 -0500
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v11 07/17] vpci/header: implement guest BAR register
 handlers
To: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>, Volodymyr Babchuk
	<Volodymyr_Babchuk@epam.com>
CC: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>,
	Oleksandr Andrushchenko <Oleksandr_Andrushchenko@epam.com>
References: <20231202012556.2012281-1-volodymyr_babchuk@epam.com>
 <20231202012556.2012281-8-volodymyr_babchuk@epam.com>
 <ZYRdKyxo6kfkijOF@macbook>
Content-Language: en-US
From: Stewart Hildebrand <stewart.hildebrand@amd.com>
In-Reply-To: <ZYRdKyxo6kfkijOF@macbook>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: SN1PEPF0002636C:EE_|IA0PR12MB9047:EE_
X-MS-Office365-Filtering-Correlation-Id: 43bd6634-322d-4368-7bc6-08dc0bd71b13
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam: BCL:0;
X-Microsoft-Antispam-Message-Info:
	sKtRyDP5slIkeOl2KGA3v6NzX91IhWhfL4BONg3fhfk+ptj7aa+3yfKFIcTOT6cTEtNoVW4Dz8tNOK+wSG/1oo6Rw7Sl0W8Bmf0TWZb90CrrIHeaY0tKbQc5nK0IQWWEB3aO3TCFi42865pQB1rvkmNqgdlBbOFWg5GFYUl0eyHI8fpFeoLZ/AwWXLRP8O1vCB/mvJOosOCrd9rKBCUBCgOSuI3UPFgWO7+Os9xaoLjL7AmJi4IbVP3deCNqUN7oNsD/QZNrl7Bjb+ZbLMnQBjaGr8yD1QJGfkIfmUFbdfQF/Nd/qYnkLZS/QcfNa9GkNNl3zci5RNKM6rCMYDcn0+AvxPcG7zNz9g+Zj6Q5j2yOKhetBFSlUunBq+2503aKDMW0mfufdveslkHaUrz/CKSXuzcTertyLF3HtL29WZYfjTSQLhSl+KtCyPJXmigx9Qd1Y5qZKwBrSYhuLTB1i5gofHq7mZyUnBvhDsiWJrvtgxx14SceYgJ1SNIaplY/AEr3bHIi9kR9JICE6NA5nd0CEAq1ok2849Ri/SMq/UiFsJYDw7mLep5dsbSa2SuL20wIBLL4BI8qtp9cwBqoNgAFkW3rvBEyjdhg+i5D8fYur7j7+oDNZqlH914t0QO6WnIvXEMLGbHNjpgCWvS+H8XNDO9Iy58SqQyLyzV5k3bjrUslVnjXqkllz8KXEaZGgDTavVSRctAJZyPK55WKevMI0qLasSw/rKIFl+HCTZbc2Oe1hTscOx9whgoBYM1x7JUkXUPwoZQV3CavNpW+poTtV/hV5Jtw9CeTZY0iJsit5QeJJ+a5ipMVP1x24H2VKJMZAfFllJvStTNPxpSpNg==
X-Forefront-Antispam-Report:
	CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230031)(4636009)(346002)(396003)(136003)(376002)(39860400002)(230922051799003)(230273577357003)(230173577357003)(64100799003)(82310400011)(186009)(451199024)(1800799012)(46966006)(40470700004)(36840700001)(31686004)(36756003)(40480700001)(40460700003)(70206006)(53546011)(70586007)(31696002)(86362001)(336012)(83380400001)(41300700001)(426003)(81166007)(356005)(82740400003)(26005)(2616005)(47076005)(36860700001)(2906002)(6666004)(478600001)(5660300002)(44832011)(16576012)(110136005)(316002)(8676002)(54906003)(8936002)(4326008)(36900700001)(43740500002);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Jan 2024 21:09:27.9123
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 43bd6634-322d-4368-7bc6-08dc0bd71b13
X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com]
X-MS-Exchange-CrossTenant-AuthSource:
	SN1PEPF0002636C.namprd02.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA0PR12MB9047

On 12/21/23 10:43, Roger Pau Monné wrote:
> On Sat, Dec 02, 2023 at 01:27:04AM +0000, Volodymyr Babchuk wrote:
>> From: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>
>>
>> Add relevant vpci register handlers when assigning PCI device to a domain
>> and remove those when de-assigning. This allows having different
>> handlers for different domains, e.g. hwdom and other guests.
>>
>> Emulate guest BAR register values: this allows creating a guest view
>> of the registers and emulates size and properties probe as it is done
>> during PCI device enumeration by the guest.
>>
>> All empty, IO and ROM BARs for guests are emulated by returning 0 on
>> reads and ignoring writes: this BARs are special with this respect as
>> their lower bits have special meaning, so returning default ~0 on read
>> may confuse guest OS.
>>
>> Signed-off-by: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>
>> Signed-off-by: Volodymyr Babchuk <volodymyr_babchuk@epam.com>
> 
> Just a couple of nits.
> 
> Reviewed-by: Roger Pau Monné <roger.pau@citrix.com>

Thanks!

> 
>> ---
>> In v11:
>> - Access guest_addr after adjusting for MEM64_HI bar in
>> guest_bar_write()
>> - guest bar handlers renamed and now  _mem_ part to denote
>> that they are handling only memory BARs
>> - refuse to update guest BAR address if BAR is enabled
>> In v10:
>> - ull -> ULL to be MISRA-compatbile
>> - Use PAGE_OFFSET() instead of combining with ~PAGE_MASK
>> - Set type of empty bars to VPCI_BAR_EMPTY
>> In v9:
>> - factored-out "fail" label introduction in init_bars()
>> - replaced #ifdef CONFIG_X86 with IS_ENABLED()
>> - do not pass bars[i] to empty_bar_read() handler
>> - store guest's BAR address instead of guests BAR register view
>> Since v6:
>> - unify the writing of the PCI_COMMAND register on the
>>   error path into a label
>> - do not introduce bar_ignore_access helper and open code
>> - s/guest_bar_ignore_read/empty_bar_read
>> - update error message in guest_bar_write
>> - only setup empty_bar_read for IO if !x86
>> Since v5:
>> - make sure that the guest set address has the same page offset
>>   as the physical address on the host
>> - remove guest_rom_{read|write} as those just implement the default
>>   behaviour of the registers not being handled
>> - adjusted comment for struct vpci.addr field
>> - add guest handlers for BARs which are not handled and will otherwise
>>   return ~0 on read and ignore writes. The BARs are special with this
>>   respect as their lower bits have special meaning, so returning ~0
>>   doesn't seem to be right
>> Since v4:
>> - updated commit message
>> - s/guest_addr/guest_reg
>> Since v3:
>> - squashed two patches: dynamic add/remove handlers and guest BAR
>>   handler implementation
>> - fix guest BAR read of the high part of a 64bit BAR (Roger)
>> - add error handling to vpci_assign_device
>> - s/dom%pd/%pd
>> - blank line before return
>> Since v2:
>> - remove unneeded ifdefs for CONFIG_HAS_VPCI_GUEST_SUPPORT as more code
>>   has been eliminated from being built on x86
>> Since v1:
>>  - constify struct pci_dev where possible
>>  - do not open code is_system_domain()
>>  - simplify some code3. simplify
>>  - use gdprintk + error code instead of gprintk
>>  - gate vpci_bar_{add|remove}_handlers with CONFIG_HAS_VPCI_GUEST_SUPPORT,
>>    so these do not get compiled for x86
>>  - removed unneeded is_system_domain check
>>  - re-work guest read/write to be much simpler and do more work on write
>>    than read which is expected to be called more frequently
>>  - removed one too obvious comment
>> ---
>>  xen/drivers/vpci/header.c | 135 +++++++++++++++++++++++++++++++++-----
>>  xen/include/xen/vpci.h    |   3 +
>>  2 files changed, 122 insertions(+), 16 deletions(-)
>>
>> diff --git a/xen/drivers/vpci/header.c b/xen/drivers/vpci/header.c
>> index e6a1d58c42..43216429d9 100644
>> --- a/xen/drivers/vpci/header.c
>> +++ b/xen/drivers/vpci/header.c
>> @@ -477,6 +477,75 @@ static void cf_check bar_write(
>>      pci_conf_write32(pdev->sbdf, reg, val);
>>  }
>>  
>> +static void cf_check guest_mem_bar_write(const struct pci_dev *pdev,
>> +                                         unsigned int reg, uint32_t val,
>> +                                         void *data)
>> +{
>> +    struct vpci_bar *bar = data;
>> +    bool hi = false;
>> +    uint64_t guest_addr;
>> +
>> +    if ( bar->type == VPCI_BAR_MEM64_HI )
>> +    {
>> +        ASSERT(reg > PCI_BASE_ADDRESS_0);
>> +        bar--;
>> +        hi = true;
>> +    }
>> +    else
>> +    {
>> +        val &= PCI_BASE_ADDRESS_MEM_MASK;
>> +    }
>> +
>> +    guest_addr = bar->guest_addr;
>> +    guest_addr &= ~(0xffffffffULL << (hi ? 32 : 0));
>> +    guest_addr |= (uint64_t)val << (hi ? 32 : 0);
>> +
>> +    /* Allow guest to size BAR correctly */
>> +    guest_addr &= ~(bar->size - 1);
>> +
>> +    /*
>> +     * Xen only cares whether the BAR is mapped into the p2m, so allow BAR
>> +     * writes as long as the BAR is not mapped into the p2m.
>> +     */
>> +    if ( bar->enabled )
>> +    {
>> +        /* If the value written is the current one avoid printing a warning. */
>> +        if ( guest_addr != bar->guest_addr )
>> +            gprintk(XENLOG_WARNING,
>> +                    "%pp: ignored guest BAR %zu write while mapped\n",
>> +                    &pdev->sbdf, bar - pdev->vpci->header.bars + hi);
>> +        return;
>> +    }
>> +    bar->guest_addr = guest_addr;
>> +}
>> +
>> +static uint32_t cf_check guest_mem_bar_read(const struct pci_dev *pdev,
>> +                                            unsigned int reg, void *data)
>> +{
>> +    const struct vpci_bar *bar = data;
>> +    uint32_t reg_val;
>> +
>> +    if ( bar->type == VPCI_BAR_MEM64_HI )
>> +    {
>> +        ASSERT(reg > PCI_BASE_ADDRESS_0);
>> +        bar--;
>> +        return bar->guest_addr >> 32;
>> +    }
>> +
>> +    reg_val = bar->guest_addr;
>> +    reg_val |= bar->type == VPCI_BAR_MEM32 ? PCI_BASE_ADDRESS_MEM_TYPE_32 :
>> +                                             PCI_BASE_ADDRESS_MEM_TYPE_64;
>> +    reg_val |= bar->prefetchable ? PCI_BASE_ADDRESS_MEM_PREFETCH : 0;
>> +
>> +    return reg_val;
>> +}
>> +
>> +static uint32_t cf_check empty_bar_read(const struct pci_dev *pdev,
>> +                                        unsigned int reg, void *data)
>> +{
>> +    return 0;
>> +}
>> +
>>  static void cf_check rom_write(
>>      const struct pci_dev *pdev, unsigned int reg, uint32_t val, void *data)
>>  {
>> @@ -537,6 +606,7 @@ static int cf_check init_bars(struct pci_dev *pdev)
>>      struct vpci_header *header = &pdev->vpci->header;
>>      struct vpci_bar *bars = header->bars;
>>      int rc;
>> +    bool is_hwdom = is_hardware_domain(pdev->domain);
>>  
>>      ASSERT(rw_is_write_locked(&pdev->domain->pci_lock));
>>  
>> @@ -578,8 +648,11 @@ static int cf_check init_bars(struct pci_dev *pdev)
>>          if ( i && bars[i - 1].type == VPCI_BAR_MEM64_LO )
>>          {
>>              bars[i].type = VPCI_BAR_MEM64_HI;
>> -            rc = vpci_add_register(pdev->vpci, vpci_hw_read32, bar_write, reg,
>> -                                   4, &bars[i]);
>> +            rc = vpci_add_register(pdev->vpci,
>> +                                   is_hwdom ? vpci_hw_read32 :
>> +                                                        guest_mem_bar_read,
> 
> Nit: I would usually indent this as:
> 
> is_hwdom ? vpci_hw_read32
>          : guest_mem_bar_read,

Will fix

> 
>> +                                   is_hwdom ? bar_write : guest_mem_bar_write,
>> +                                   reg, 4, &bars[i]);
>>              if ( rc )
>>                  goto fail;
>>  
>> @@ -590,6 +663,14 @@ static int cf_check init_bars(struct pci_dev *pdev)
>>          if ( (val & PCI_BASE_ADDRESS_SPACE) == PCI_BASE_ADDRESS_SPACE_IO )
>>          {
>>              bars[i].type = VPCI_BAR_IO;
>> +            if ( !IS_ENABLED(CONFIG_X86) && !is_hwdom )
>> +            {
>> +                rc = vpci_add_register(pdev->vpci, empty_bar_read, NULL,
>> +                                       reg, 4, NULL);
>> +                if ( rc )
>> +                    goto fail;
>> +            }
>> +
>>              continue;
>>          }
>>          if ( (val & PCI_BASE_ADDRESS_MEM_TYPE_MASK) ==
>> @@ -606,6 +687,15 @@ static int cf_check init_bars(struct pci_dev *pdev)
>>          if ( size == 0 )
>>          {
>>              bars[i].type = VPCI_BAR_EMPTY;
>> +
>> +            if ( !is_hwdom )
>> +            {
>> +                rc = vpci_add_register(pdev->vpci, empty_bar_read, NULL,
>> +                                       reg, 4, NULL);
>> +                if ( rc )
>> +                    goto fail;
>> +            }
>> +
>>              continue;
>>          }
>>  
>> @@ -613,28 +703,41 @@ static int cf_check init_bars(struct pci_dev *pdev)
>>          bars[i].size = size;
>>          bars[i].prefetchable = val & PCI_BASE_ADDRESS_MEM_PREFETCH;
>>  
>> -        rc = vpci_add_register(pdev->vpci, vpci_hw_read32, bar_write, reg, 4,
>> -                               &bars[i]);
>> +        rc = vpci_add_register(pdev->vpci,
>> +                               is_hwdom ? vpci_hw_read32 : guest_mem_bar_read,
>> +                               is_hwdom ? bar_write : guest_mem_bar_write,
>> +                               reg, 4, &bars[i]);
>>          if ( rc )
>>              goto fail;
>>      }
>>  
>> -    /* Check expansion ROM. */
>> -    rc = pci_size_mem_bar(pdev->sbdf, rom_reg, &addr, &size, PCI_BAR_ROM);
> 
> Nit: I guess you could do something like:
> 
> rc = is_hwdom ? pci_size_mem_bar(pdev->sbdf, rom_reg, &addr, &size, PCI_BAR_ROM)
>               : 0;
> 
> And that would avoid having to re-indent the whole block?
> 
> You could still place the domU code on an else ( !is_hwdom ) branch.
> 
> Overall I'm not sure what I prefer, as the re-indentation would be
> better done in a non-functional change IMO.

I'm in favor of a smaller diffstat for now. I'll do as you suggest with the ternary/conditional operator.

> 
> Thanks, Roger.


From xen-devel-bounces@lists.xenproject.org Tue Jan 02 21:32:17 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 02 Jan 2024 21:32:17 +0000
Received: from list by lists.xenproject.org with outflank-mailman.660859.1030508 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rKmMm-0001S2-2K; Tue, 02 Jan 2024 21:32:04 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 660859.1030508; Tue, 02 Jan 2024 21:32:04 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rKmMl-0001Rv-Vz; Tue, 02 Jan 2024 21:32:03 +0000
Received: by outflank-mailman (input) for mailman id 660859;
 Tue, 02 Jan 2024 21:32:02 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=oNM8=IM=amd.com=Stewart.Hildebrand@srs-se1.protection.inumbo.net>)
 id 1rKmMk-0001RW-G7
 for xen-devel@lists.xenproject.org; Tue, 02 Jan 2024 21:32:02 +0000
Received: from NAM02-SN1-obe.outbound.protection.outlook.com
 (mail-sn1nam02on2060f.outbound.protection.outlook.com
 [2a01:111:f400:7ea9::60f])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 5be80520-a9b6-11ee-9b0f-b553b5be7939;
 Tue, 02 Jan 2024 22:31:58 +0100 (CET)
Received: from DM6PR07CA0068.namprd07.prod.outlook.com (2603:10b6:5:74::45) by
 SJ1PR12MB6363.namprd12.prod.outlook.com (2603:10b6:a03:453::9) with
 Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.7159.13; Tue, 2 Jan 2024 21:31:54 +0000
Received: from DS2PEPF00003446.namprd04.prod.outlook.com
 (2603:10b6:5:74:cafe::b2) by DM6PR07CA0068.outlook.office365.com
 (2603:10b6:5:74::45) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7135.20 via Frontend
 Transport; Tue, 2 Jan 2024 21:31:54 +0000
Received: from SATLEXMB04.amd.com (165.204.84.17) by
 DS2PEPF00003446.mail.protection.outlook.com (10.167.17.73) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.7159.9 via Frontend Transport; Tue, 2 Jan 2024 21:31:54 +0000
Received: from SATLEXMB06.amd.com (10.181.40.147) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.34; Tue, 2 Jan
 2024 15:31:53 -0600
Received: from SATLEXMB04.amd.com (10.181.40.145) by SATLEXMB06.amd.com
 (10.181.40.147) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.34; Tue, 2 Jan
 2024 15:31:53 -0600
Received: from [172.23.76.218] (10.180.168.240) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server id 15.1.2507.34 via Frontend
 Transport; Tue, 2 Jan 2024 15:31:52 -0600
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 5be80520-a9b6-11ee-9b0f-b553b5be7939
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=Ylb/4QdCh2smlKSVcrNYh43YusqbLvF2R6YMWAhH1R1U5QgIH0HJI7p7As1CioIzJq2meBgy+x0L5tkGWeD6A3kv38nBf9jHnjKvbLieFp54Xm2lxrds1u+uhc9Am9/W5yckQyTDh1RRMbnevoSpggxNaiXDKqpKevSOCIHkvcGfdSY6/meoP+h3xWwkCQ51frHhFAxDwp/NVqNVFPfIPONeciSR4ORBdXLvHWLAVNKt/kIS+v6bMZWRWBk0xWrK0nKH8ZP7SydVzHFsyVGWyTVG/AhlfouFW9MiXo3N0BW2Tj7hckhQqw8W8pgQYfzMzDGqKc0QhlkDHK52z1DzlA==
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=XG6vUQ6DENq+W56RI8NWXjugR1dCYi6z16wlbBg63yk=;
 b=YLr4maTLU6Qs0m92uYxz4GJaSgvV3utuMFqDJN5Dv0+PJ8Fbu/FQnRhm5HmdlRYnjnXYPYJyQNpvca6EK5Lcy5nNTBZuaWY+K6kqZIGg3O8Wlj2gd2S1p+XgdLElIAk1i4XSh/dOdIyNxLa3aBlOI3l5S3eaoZhLQZ9dzNCxFIytkEaSUu7YZfv0txexjCFxLK75mxg3aoYmHmo/B11i8yD0l2JqYBYYUGI17FVRjoCO3gx3tfoMYPeUMhPSUkkZnFUz87q0f6DOGqyGNQXZ/JOr6MXiywsEdK2HNSYZKZZNAgLbrx2XD8veiA318CKQQnH9UnosmWUhKnPZcf4GgA==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=epam.com 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)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=XG6vUQ6DENq+W56RI8NWXjugR1dCYi6z16wlbBg63yk=;
 b=LccmGFdyn8xjTjLjnNnRdi+EeVJTYRKrFDPyFn2gqhyDVONCougAbmSbqQm89LJqBViwSH7Sz+Ojn4I8lfumswiFBlI7myS5Ae066JP/dxoyhkdrKzA632RJvrljGad9VVwtGC3EOgrRn6wRyR1M76CBjTt9gCOVk+ukxAGoEhE=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C
Message-ID: <fc4eae35-82d5-4aae-9dd5-f2f50785bc3e@amd.com>
Date: Tue, 2 Jan 2024 16:31:52 -0500
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v11 10/17] vpci/header: handle p2m range sets per BAR
Content-Language: en-US
To: Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
	"xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
CC: Oleksandr Andrushchenko <Oleksandr_Andrushchenko@epam.com>,
	=?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
References: <20231202012556.2012281-1-volodymyr_babchuk@epam.com>
 <20231202012556.2012281-11-volodymyr_babchuk@epam.com>
From: Stewart Hildebrand <stewart.hildebrand@amd.com>
In-Reply-To: <20231202012556.2012281-11-volodymyr_babchuk@epam.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 7bit
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: DS2PEPF00003446:EE_|SJ1PR12MB6363:EE_
X-MS-Office365-Filtering-Correlation-Id: 41bf9c23-6f68-4d24-77b4-08dc0bda3d9f
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam: BCL:0;
X-Microsoft-Antispam-Message-Info:
	EZp1mJZjcR9IdpQtY/Awe+UX+Ou0aQpxr3EB/8PQchF0AgE0pCgk6ePktW9EFSEabDLHP2UP++pgzPgF0trdnqjvmaJw1wcCEV3+6EA4vkff4esyA/90bEBAeSOwONIwdKTiv6nsXWepatZWdJI+VgPn+QTKLNVb7gRIqaeCNDMFIbI3s/+0vwV1Hi9Malmr9QbRT4UMKGPC8Mrvly0AQKCc5WXADNopjiq8L91HkwwIdrdb1OGisBTVSJ/7+EHRySc6IPuJSJ4aI1+ctVrZ+a6BiW1INE7Kij5CEVD4QQwp4WfPUmYVb8pW1rNymoYyAv8+xKt++Gykrv4cGykTzKlRnRB3rapr2625cqZJUEUYgdTML4DjPL2ANv0D0MY5M9vajhHL0RqjeAjLEdW0q8NIBs375+pjaQXY841MF8iYiFtzMuKCS66Tbx8x5s71khjm8Div/KfVPCcQjmxQvV9r15Dq7WCI8EJuZZNXsLdjVTkKsw2XEW66csDZLusyXysIGMelhJQ1qLAU/4kKTdYNkTU2pBvl/iljg5l97ZOAGdZ7CJT98ThZqZig24lVGRctp91SU+zdYLrIXzVGv5kXaE7zr45XhdJ0ICPIcGCkztk+8Hk4ccpu4Mm9EjN+O6oul0DEeCvFxaCilDbl6HHIcFeWooDYYqgMnQ31UKDuh7iWqQ8zQ/n5Br96I8zrQ+FenBYxwSyJuzl9Xjy8DRiMWj3ltPzpObemC7TjW44Sk8onhAL/D/4mQzqWr+Z1G3WkvyuK9WwkUbSi1N3Z3SgB61Blh4qYD030vUeCm+apBhMykRrnK7tPNdeqYHAN3BLChtL1NPXXXrZPyj1/665o5LmsoEESfdVA2ZwfkBA=
X-Forefront-Antispam-Report:
	CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230031)(4636009)(346002)(39860400002)(396003)(136003)(376002)(230922051799003)(1800799012)(64100799003)(451199024)(186009)(82310400011)(40470700004)(46966006)(36840700001)(426003)(26005)(336012)(2616005)(36860700001)(81166007)(356005)(82740400003)(70586007)(110136005)(47076005)(70206006)(16576012)(54906003)(36756003)(316002)(478600001)(31696002)(86362001)(5660300002)(31686004)(2906002)(44832011)(8936002)(8676002)(4326008)(40460700003)(40480700001)(53546011)(41300700001)(36900700001)(43740500002);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Jan 2024 21:31:54.3623
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 41bf9c23-6f68-4d24-77b4-08dc0bda3d9f
X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com]
X-MS-Exchange-CrossTenant-AuthSource:
	DS2PEPF00003446.namprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ1PR12MB6363

On 12/1/23 20:27, Volodymyr Babchuk wrote:
> diff --git a/xen/drivers/vpci/header.c b/xen/drivers/vpci/header.c
> index 43216429d9..7c84cee5d1 100644
> --- a/xen/drivers/vpci/header.c
> +++ b/xen/drivers/vpci/header.c
> @@ -598,6 +675,18 @@ static void cf_check rom_write(
>          rom->addr = val & PCI_ROM_ADDRESS_MASK;
>  }
>  
> +static int bar_add_rangeset(const struct pci_dev *pdev, struct vpci_bar *bar,
> +                            unsigned int i)
> +{
> +    char str[32];
> +
> +    snprintf(str, sizeof(str), "%pp:BAR%u", &pdev->sbdf, i);
> +
> +    bar->mem = rangeset_new(pdev->domain, str, RANGESETF_no_print);
> +
> +    return !bar->mem ? -ENOMEM : 0;
> +}
> +
>  static int cf_check init_bars(struct pci_dev *pdev)
>  {
>      uint16_t cmd;
> @@ -679,6 +768,10 @@ static int cf_check init_bars(struct pci_dev *pdev)
>          else
>              bars[i].type = VPCI_BAR_MEM32;
>  
> +        rc = bar_add_rangeset(pdev, &bars[i], i);
> +        if ( rc )
> +            goto fail;
> +
>          rc = pci_size_mem_bar(pdev->sbdf, reg, &addr, &size,
>                                (i == num_bars - 1) ? PCI_BAR_LAST : 0);
>          if ( rc < 0 )
> @@ -728,6 +821,12 @@ static int cf_check init_bars(struct pci_dev *pdev)
>                                     rom_reg, 4, rom);
>              if ( rc )
>                  rom->type = VPCI_BAR_EMPTY;
> +            else
> +            {
> +                rc = bar_add_rangeset(pdev, rom, i);

Although purely cosmetic, it looks like this should use num_bars, not i.

> +                if ( rc )
> +                    goto fail;
> +            }
>          }
>      }
>      else


From xen-devel-bounces@lists.xenproject.org Tue Jan 02 21:37:23 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 02 Jan 2024 21:37:23 +0000
Received: from list by lists.xenproject.org with outflank-mailman.660866.1030518 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rKmRq-000275-Rt; Tue, 02 Jan 2024 21:37:18 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 660866.1030518; Tue, 02 Jan 2024 21:37:18 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rKmRq-00026y-PB; Tue, 02 Jan 2024 21:37:18 +0000
Received: by outflank-mailman (input) for mailman id 660866;
 Tue, 02 Jan 2024 21:37:17 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=cwBk=IM=gmail.com=shentey@srs-se1.protection.inumbo.net>)
 id 1rKmRp-00026n-SN
 for xen-devel@lists.xenproject.org; Tue, 02 Jan 2024 21:37:17 +0000
Received: from mail-wr1-x42b.google.com (mail-wr1-x42b.google.com
 [2a00:1450:4864:20::42b])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 18ccf019-a9b7-11ee-9b0f-b553b5be7939;
 Tue, 02 Jan 2024 22:37:15 +0100 (CET)
Received: by mail-wr1-x42b.google.com with SMTP id
 ffacd0b85a97d-3367601a301so9586896f8f.2
 for <xen-devel@lists.xenproject.org>; Tue, 02 Jan 2024 13:37:15 -0800 (PST)
Received: from [127.0.0.1] (dynamic-089-014-091-072.89.14.pool.telefonica.de.
 [89.14.91.72]) by smtp.gmail.com with ESMTPSA id
 p34-20020a05600c1da200b0040d8b4ebd55sm252596wms.0.2024.01.02.13.37.14
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 02 Jan 2024 13:37:14 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 18ccf019-a9b7-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1704231435; x=1704836235; darn=lists.xenproject.org;
        h=content-transfer-encoding:mime-version:message-id:references
         :in-reply-to:subject:cc:to:from:date:from:to:cc:subject:date
         :message-id:reply-to;
        bh=/j7/rdcZmoVQjecAI6/HxXOPJUcRBJCUvX9qQzCAcW8=;
        b=gFH2EDqpSGxAYr7aZ2Oi3Xw7WftiluMIQEY3cu3akD6P0KRkduWDLZHEblbaWJYV8n
         wnlFS+e8c7vNUWnUufahnWXvxNd3DpCYuLzc18Ti6LMygDrXiFqx6zNvvoQcL+eDwm6w
         7Eiaf3yjXhGa0Rs3jODVa8TxZBV166Y/Py9wU5AxvYl3nLWZ+w5e0LszrDHlqv1288j/
         wku+AezAagAXZ5xcKgIyZcfG/ieFbRc4IdIx+S1Rj2LupW/eUFwS2WEJr0aQHTV2wntZ
         PcJkvWZ/Ff2kgrFeGtmy8oRASDJY6V0qE87HAR0/1iv0Lem3z2P/a16/qz2M+ooYfwGz
         kCXA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704231435; x=1704836235;
        h=content-transfer-encoding:mime-version:message-id:references
         :in-reply-to:subject:cc:to:from:date:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to;
        bh=/j7/rdcZmoVQjecAI6/HxXOPJUcRBJCUvX9qQzCAcW8=;
        b=Z1g8dRwlMaOg3Rt89sLW6fGKNpnMMY2Wm0qwGfN3Ric4H2tOXvFY7tNiQ+T2N0etdB
         QbOj5eOk3jv5YoIgMBmpIMrIG95z5uMYFGlGJxYRXLmeAoz1xFcnyBzeKLViflQ7Hxx7
         RPO64SX99Jzk3iCmsyKIvcZAXlhmiDKKaGWbXGiLSCP2W7zMJPf2nT9q8Zg1PQ02qSHp
         NPh9pn5xdBIO6p1tfxsYN7sG0BkILXMkBimraZxNeHnytI9tpDKgmQN0az2dV0Bl2qGP
         IC00binP7NcOHS+FhX6U+I+MfK4XH8uWHHgPT7ItY/Vgd00B8KhOUs2//JHFMWdTJZUm
         nRWQ==
X-Gm-Message-State: AOJu0YwMYGms6o0XIIKHKhAJ+jcmE7lOgV5c7jnJ4UyC8p7cH1jiL86u
	IzUbb8f2cLfS/5ZCz6EmD/Y=
X-Google-Smtp-Source: AGHT+IFrz+8G4XaufDC1u0mAfvhOGqc3F19J3DroZasFggdJGsufr8PGV5ZiaTqLN5DOoVoj9N8dAg==
X-Received: by 2002:a7b:ce13:0:b0:40d:6f34:5c13 with SMTP id m19-20020a7bce13000000b0040d6f345c13mr2971570wmc.231.1704231434891;
        Tue, 02 Jan 2024 13:37:14 -0800 (PST)
Date: Tue, 02 Jan 2024 21:37:00 +0000
From: Bernhard Beschow <shentey@gmail.com>
To: Stefan Hajnoczi <stefanha@redhat.com>, qemu-devel@nongnu.org
CC: =?ISO-8859-1?Q?Daniel_P=2E_Berrang=E9?= <berrange@redhat.com>,
 Marcel Apfelbaum <marcel.apfelbaum@gmail.com>,
 Akihiko Odaki <akihiko.odaki@daynix.com>,
 Artyom Tarasenko <atar4qemu@gmail.com>, Paul Durrant <paul@xen.org>,
 Daniel Henrique Barboza <danielhb413@gmail.com>,
 =?ISO-8859-1?Q?C=E9dric_Le_Goater?= <clg@kaod.org>,
 Paolo Bonzini <pbonzini@redhat.com>, BALATON Zoltan <balaton@eik.bme.hu>,
 Jagannathan Raman <jag.raman@oracle.com>,
 Anthony Perard <anthony.perard@citrix.com>,
 Nicholas Piggin <npiggin@gmail.com>,
 David Gibson <david@gibson.dropbear.id.au>,
 Aleksandar Rikalo <aleksandar.rikalo@syrmia.com>,
 Alexander Graf <agraf@csgraf.de>, Hailiang Zhang <zhanghailiang@xfusion.com>,
 Marcelo Tosatti <mtosatti@redhat.com>, Jiaxun Yang <jiaxun.yang@flygoat.com>,
 Huacai Chen <chenhuacai@kernel.org>,
 Harsh Prateek Bora <harshpb@linux.ibm.com>,
 Ilya Leoshkevich <iii@linux.ibm.com>, Peter Xu <peterx@redhat.com>,
 Hyman Huang <yong.huang@smartx.com>, Fam Zheng <fam@euphon.net>,
 Song Gao <gaosong@loongson.cn>, Alistair Francis <alistair.francis@wdc.com>,
 =?ISO-8859-1?Q?Marc-Andr=E9_Lureau?= <marcandre.lureau@redhat.com>,
 Stefano Stabellini <sstabellini@kernel.org>,
 David Woodhouse <dwmw2@infradead.org>,
 Christian Borntraeger <borntraeger@linux.ibm.com>,
 Palmer Dabbelt <palmer@dabbelt.com>, Aurelien Jarno <aurelien@aurel32.net>,
 Leonardo Bras <leobras@redhat.com>, Jiri Slaby <jslaby@suse.cz>,
 Eric Farman <farman@linux.ibm.com>, Thomas Huth <thuth@redhat.com>,
 Richard Henderson <richard.henderson@linaro.org>,
 David Hildenbrand <david@redhat.com>, Michael Roth <michael.roth@amd.com>,
 Elena Ufimtseva <elena.ufimtseva@oracle.com>,
 Gerd Hoffmann <kraxel@redhat.com>, Cameron Esfahani <dirty@apple.com>,
 qemu-ppc@nongnu.org, John Snow <jsnow@redhat.com>,
 Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>,
 Weiwei Li <liwei1518@gmail.com>, Hanna Reitz <hreitz@redhat.com>,
 qemu-s390x@nongnu.org, qemu-block@nongnu.org,
 =?ISO-8859-1?Q?Alex_Benn=E9e?= <alex.bennee@linaro.org>, kvm@vger.kernel.org,
 "Michael S. Tsirkin" <mst@redhat.com>,
 Pavel Dovgalyuk <pavel.dovgaluk@ispras.ru>,
 Vladimir Sementsov-Ogievskiy <vsementsov@yandex-team.ru>,
 Andrey Smirnov <andrew.smirnov@gmail.com>,
 Reinoud Zandijk <reinoud@netbsd.org>, Kevin Wolf <kwolf@redhat.com>,
 Bin Meng <bin.meng@windriver.com>, Sunil Muthuswamy <sunilmut@microsoft.com>,
 Peter Maydell <peter.maydell@linaro.org>, qemu-riscv@nongnu.org,
 Liu Zhiwei <zhiwei_liu@linux.alibaba.com>, Stafford Horne <shorne@gmail.com>,
 Fabiano Rosas <farosas@suse.de>, Juan Quintela <quintela@redhat.com>,
 Markus Armbruster <armbru@redhat.com>, qemu-arm@nongnu.org,
 Jason Wang <jasowang@redhat.com>, Eduardo Habkost <eduardo@habkost.net>,
 Max Filippov <jcmvbkbc@gmail.com>,
 Jean-Christophe Dubois <jcd@tribudubois.net>, Eric Blake <eblake@redhat.com>,
 Roman Bolshakov <rbolshakov@ddn.com>, Halil Pasic <pasic@linux.ibm.com>,
 xen-devel@lists.xenproject.org,
 =?ISO-8859-1?Q?Philippe_Mathieu-Daud=E9?= <philmd@linaro.org>,
 David Woodhouse <dwmw@amazon.co.uk>
Subject: =?US-ASCII?Q?Re=3A_=5BPATCH_v2_1/5=5D_system/cpus=3A_rename_?= =?US-ASCII?Q?qemu=5Fmutex=5Flock=5Fiothread=28=29_to_bql=5Flock=28=29?=
In-Reply-To: <20231212153905.631119-2-stefanha@redhat.com>
References: <20231212153905.631119-1-stefanha@redhat.com> <20231212153905.631119-2-stefanha@redhat.com>
Message-ID: <CFD7EE4A-D216-4CE8-B963-0CCEEA623E53@gmail.com>
MIME-Version: 1.0
Content-Type: text/plain;
 charset=utf-8
Content-Transfer-Encoding: quoted-printable



Am 12=2E Dezember 2023 15:39:00 UTC schrieb Stefan Hajnoczi <stefanha@redh=
at=2Ecom>:
>The Big QEMU Lock (BQL) has many names and they are confusing=2E The
>actual QemuMutex variable is called qemu_global_mutex but it's commonly
>referred to as the BQL in discussions and some code comments=2E The
>locking APIs, however, are called qemu_mutex_lock_iothread() and
>qemu_mutex_unlock_iothread()=2E
>
>The "iothread" name is historic and comes from when the main thread was
>split into into KVM vcpu threads and the "iothread" (now called the main

Duplicate "into" here=2E

>loop thread)=2E I have contributed to the confusion myself by introducing
>a separate --object iothread, a separate concept unrelated to the BQL=2E
>
>The "iothread" name is no longer appropriate for the BQL=2E Rename the
>locking APIs to:
>- void bql_lock(void)
>- void bql_unlock(void)
>- bool bql_locked(void)
>
>There are more APIs with "iothread" in their names=2E Subsequent patches
>will rename them=2E There are also comments and documentation that will b=
e
>updated in later patches=2E
>
>Signed-off-by: Stefan Hajnoczi <stefanha@redhat=2Ecom>
>Reviewed-by: Paul Durrant <paul@xen=2Eorg>
>Acked-by: Fabiano Rosas <farosas@suse=2Ede>
>Acked-by: David Woodhouse <dwmw@amazon=2Eco=2Euk>
>Reviewed-by: C=C3=A9dric Le Goater <clg@kaod=2Eorg>
>Acked-by: Peter Xu <peterx@redhat=2Ecom>
>Acked-by: Eric Farman <farman@linux=2Eibm=2Ecom>
>Reviewed-by: Harsh Prateek Bora <harshpb@linux=2Eibm=2Ecom>


From xen-devel-bounces@lists.xenproject.org Tue Jan 02 22:06:53 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 02 Jan 2024 22:06:53 +0000
Received: from list by lists.xenproject.org with outflank-mailman.660871.1030529 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rKmuL-00086V-3q; Tue, 02 Jan 2024 22:06:45 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 660871.1030529; Tue, 02 Jan 2024 22:06:45 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rKmuL-00086O-12; Tue, 02 Jan 2024 22:06:45 +0000
Received: by outflank-mailman (input) for mailman id 660871;
 Tue, 02 Jan 2024 22:06:43 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=g3W0=IM=intel.com=xin3.li@srs-se1.protection.inumbo.net>)
 id 1rKmuI-00086F-Ri
 for xen-devel@lists.xenproject.org; Tue, 02 Jan 2024 22:06:43 +0000
Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.11])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 32f7670e-a9bb-11ee-9b0f-b553b5be7939;
 Tue, 02 Jan 2024 23:06:39 +0100 (CET)
Received: from orsmga002.jf.intel.com ([10.7.209.21])
 by fmvoesa105.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;
 02 Jan 2024 14:06:37 -0800
Received: from orsmsx602.amr.corp.intel.com ([10.22.229.15])
 by orsmga002.jf.intel.com with ESMTP/TLS/AES256-GCM-SHA384;
 02 Jan 2024 14:06:36 -0800
Received: from orsmsx610.amr.corp.intel.com (10.22.229.23) by
 ORSMSX602.amr.corp.intel.com (10.22.229.15) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.1.2507.35; Tue, 2 Jan 2024 14:06:35 -0800
Received: from ORSEDG602.ED.cps.intel.com (10.7.248.7) by
 orsmsx610.amr.corp.intel.com (10.22.229.23) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.1.2507.35 via Frontend Transport; Tue, 2 Jan 2024 14:06:35 -0800
Received: from NAM12-DM6-obe.outbound.protection.outlook.com (104.47.59.169)
 by edgegateway.intel.com (134.134.137.103) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.1.2507.35; Tue, 2 Jan 2024 14:06:35 -0800
Received: from SA1PR11MB6734.namprd11.prod.outlook.com (2603:10b6:806:25d::22)
 by CH0PR11MB5345.namprd11.prod.outlook.com (2603:10b6:610:b8::22)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7135.25; Tue, 2 Jan
 2024 22:06:28 +0000
Received: from SA1PR11MB6734.namprd11.prod.outlook.com
 ([fe80::8ccb:4e83:8802:c277]) by SA1PR11MB6734.namprd11.prod.outlook.com
 ([fe80::8ccb:4e83:8802:c277%4]) with mapi id 15.20.7135.023; Tue, 2 Jan 2024
 22:06:27 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 32f7670e-a9bb-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple;
  d=intel.com; i=@intel.com; q=dns/txt; s=Intel;
  t=1704233199; x=1735769199;
  h=from:to:cc:subject:date:message-id:references:
   in-reply-to:content-transfer-encoding:mime-version;
  bh=3AZ7RQ/UaGnQPAdKdGT39AX9H5SWFi3wrLzKiPii1Eg=;
  b=mKIWUlhWKawe+pf80IV+ZJ4Yh5uhLyoqaYKb9V5jpl1i/YdtKjny5KeN
   33+Q7YjVcCoLRmo02aUUxIrvMD+SrjKMgDLiVuFC06hx2XKltiG5eUtX2
   ItzEiNF3MNdbHEoWrqidJMOtjtChqnmUrfRp2g/G/ce09dEDRvrqFnSf3
   gAhqjDzcGh9RrmP2rzZCa37apucp0mIyEZieUjoZS0y2yNpfNIjocT3zh
   /l2LG5A6QCBvTbGowjp4HoSBOFst7uh4apPzcVz0mIm2uRmb1dNGSP3Bn
   /eiPbizHoESaGpCwCPdpOGXSADzd/y0+QIUcBaaxVX2op0iFUXCjcMlQX
   Q==;
X-IronPort-AV: E=McAfee;i="6600,9927,10941"; a="3741694"
X-IronPort-AV: E=Sophos;i="6.04,326,1695711600"; 
   d="scan'208";a="3741694"
X-ExtLoop1: 1
X-IronPort-AV: E=McAfee;i="6600,9927,10941"; a="779805682"
X-IronPort-AV: E=Sophos;i="6.04,326,1695711600"; 
   d="scan'208";a="779805682"
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=MKO1m3iK6dfaDwMIMPled7PGT/ILf9fmx8d+bMtAYQr4+SrzxsdwrksckY44UkPuaUzbC6WQmxxZzANQrdT3f4v3/x5m4ilh1dFViPMYUtT7A3aQyiZKslQRbqbYmT4dTaMGlcONh2QF2DgU7vYBsxx7/3R1hnMErKOqZwOvcj32D1qGs5i50kUZk2XyKzfpeK2Pn6+vqro5Z+++EoSerI5IKRm+tEr9oqspxMoxaDPz6f8QlGFgsP4/G2eXAgUPsvS9CPc4nJr27nD2cZ5WwhBAgt14/nX8P2nSslif0bNdyBkMyzxvI8HOEJO2khTS+zP4A1Eyp3Ocrw+Nhfrq+Q==
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=3AZ7RQ/UaGnQPAdKdGT39AX9H5SWFi3wrLzKiPii1Eg=;
 b=XoIl+89taw3wfs9f8rxM0WVnNat3DaV4AqQLc8e5wlIol1OchK9rO+TSqz96mJNEc7x6qIGh60AwhiWW9NqW600A+pIIWJXBW1Nlu+TBfEUecLjn71fXWEKFCQxugUvVyNmyQfeyRzhLLumEn1TkPFUIe8OzbNp3U273LbF0ehitYpBEj27t6NrQM9Pl8+3TSKSUwEaGrfFQhwZPXX5AY1EYl7ijO22GqQr1458iq2PszqwkRsBmTk4/4HkuTKM1fe3Y3mIY80sPvAZ0twRzYg37x1Fk6paseEMGmU5yGv9qGLaKhexVo5Eup3TzLx5+YteOU5TdE1Fb92GlHNX16A==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com;
 dkim=pass header.d=intel.com; arc=none
From: "Li, Xin3" <xin3.li@intel.com>
To: Borislav Petkov <bp@alien8.de>
CC: "linux-doc@vger.kernel.org" <linux-doc@vger.kernel.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"linux-edac@vger.kernel.org" <linux-edac@vger.kernel.org>,
	"linux-hyperv@vger.kernel.org" <linux-hyperv@vger.kernel.org>,
	"kvm@vger.kernel.org" <kvm@vger.kernel.org>, "xen-devel@lists.xenproject.org"
	<xen-devel@lists.xenproject.org>, "tglx@linutronix.de" <tglx@linutronix.de>,
	"mingo@redhat.com" <mingo@redhat.com>, "dave.hansen@linux.intel.com"
	<dave.hansen@linux.intel.com>, "x86@kernel.org" <x86@kernel.org>,
	"hpa@zytor.com" <hpa@zytor.com>, "Lutomirski, Andy" <luto@kernel.org>,
	"pbonzini@redhat.com" <pbonzini@redhat.com>, "seanjc@google.com"
	<seanjc@google.com>, "peterz@infradead.org" <peterz@infradead.org>,
	"jgross@suse.com" <jgross@suse.com>, "Shankar, Ravi V"
	<ravi.v.shankar@intel.com>, "mhiramat@kernel.org" <mhiramat@kernel.org>,
	"andrew.cooper3@citrix.com" <andrew.cooper3@citrix.com>,
	"jiangshanlai@gmail.com" <jiangshanlai@gmail.com>, "nik.borisov@suse.com"
	<nik.borisov@suse.com>, "Kang, Shan" <shan.kang@intel.com>
Subject: RE: [PATCH v13 01/35] x86/cpufeatures,opcode,msr: Add the WRMSRNS
 instruction support
Thread-Topic: [PATCH v13 01/35] x86/cpufeatures,opcode,msr: Add the WRMSRNS
 instruction support
Thread-Index: AQHaJ201kUjsNoxyR0GoMj8PcRD1drDG03sAgABsu1A=
Date: Tue, 2 Jan 2024 22:06:27 +0000
Message-ID: <SA1PR11MB67348F79B44BE92FD2C8F12DA861A@SA1PR11MB6734.namprd11.prod.outlook.com>
References: <20231205105030.8698-1-xin3.li@intel.com>
 <20231205105030.8698-2-xin3.li@intel.com>
 <20240102153426.GBZZQtAiWSdGAgKoIL@fat_crate.local>
In-Reply-To: <20240102153426.GBZZQtAiWSdGAgKoIL@fat_crate.local>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=intel.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: SA1PR11MB6734:EE_|CH0PR11MB5345:EE_
x-ms-office365-filtering-correlation-id: 055a227c-2c25-4ce6-0dfb-08dc0bdf114c
x-ld-processed: 46c98d88-e344-4ed4-8496-4ed7712e255d,ExtAddr
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam: BCL:0;
x-microsoft-antispam-message-info: XObTKZMf0w8tMOeNXIcdsCiizh6S2r8eDXMx4PWH1tlONSiz80t9sdKpC7jGcwK/F1Mb7czGEcsCNfOlKoGL5zTWGoaYX11VYzsxTqM+YwnyJVMXEgv6NGC8+gCOXEoM0CIgkbdbRDWae9F9w5V+Gsj7KM3xNRjehC28N8OQyys/jcG1I6E9Vb27lNf/+b2CDmiut+7Q661zhBvIk7RqQqal0CDaJ75r8MflEa88eIhuxoOVBEMMdX34jkWa/PZZO7y3PYJi5jMNL/hObfFhazn93Enq2H1fTgqDvYlCmV+tMwxRf4HDbYEHyj0f5asSpWvKrepyJf+2Are3KIcVy3n34tgprhJjqNZWtH+x4WRJU+wn7Z+YzIN0mQR+u6LriOszIrwaBv1BiJ9JlAvhNu98Yt3lsW05AAG3hTbgmFkUhuu41vDeftxgjVEUPStAwpA0MCPFypG6TzcwswLH983Bg566kEl0DInXWumj+isVwhd5qw+s4HuXxs8FTo4PGXNseEP+lbl+EkBqz9wlgSEUmhfmbd37ubeiS8WDTrNQsf3wk8fkbQCsKST2y8nfUFxS/5yzOAOA/NPpuusbbo/Iw61wNXEuCerkrDNQXY4u/6kqJ8pp8P+AJkVgK3Oo
x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SA1PR11MB6734.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230031)(346002)(136003)(39860400002)(366004)(396003)(376002)(230922051799003)(64100799003)(186009)(1800799012)(451199024)(55016003)(33656002)(9686003)(66946007)(64756008)(7696005)(6506007)(66446008)(66556008)(76116006)(38070700009)(86362001)(66476007)(4744005)(122000001)(38100700002)(41300700001)(26005)(83380400001)(2906002)(4326008)(5660300002)(71200400001)(7416002)(478600001)(6916009)(966005)(52536014)(54906003)(316002)(82960400001)(8936002)(8676002)(133343001);DIR:OUT;SFP:1102;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0: =?utf-8?B?WkNJcUk0YlVhb1IwTktYRDdFd3Rjc0VKUjlwd2FKTE5tenpaM3dQSlZQaWhl?=
 =?utf-8?B?eThvcHpuTGpTOGtxWWhtWlRsU08rS1Bzd01nQ0V2S2YvWGVTSnVJUTJUYlQ2?=
 =?utf-8?B?SjdHZ1dRbnFnYnBVaDh5MkNaLzRwOW5iTGVPUUlyRTFRcEdQQnVNWjRiVUxj?=
 =?utf-8?B?K1R1NitHTHNQcjBOM1ZsVFpjc2cvRzRpTEV1OUkycVZWRUdiR2tkblh3ektC?=
 =?utf-8?B?V0hzbTZ0bTYxR0xLdDJBNVpBSTB1ZFpUdWpDZ1Q1cUZCQitWcVRBLy9qeU4y?=
 =?utf-8?B?Q3V3R2pmLytwRFFuc09vRDdBbVp2MHRCbTNER3g1RFZkZUJhdFlzTjl3Wkt3?=
 =?utf-8?B?cjAyd1RTSnI4QTJCQlhmRFhUSFZzWGs1QW1OWGtzdDZOdTJuWE50TVp4dlVO?=
 =?utf-8?B?NjFmaHEyRCt6K0d2SmdNTFZGTGwwTEhncXJrSkJhZktQVUtCcjBYMUVzRVhO?=
 =?utf-8?B?c24rZnhoT3BzcTBsaEMzb2w0UzREbWV5MXRoMHprODdYY3pRVEJHQjdiTnYy?=
 =?utf-8?B?Uy92V3lrMUhPRVBoMENrUCs3N3hpRFdCcEdhbVlDK0ZNcWZ5MXRDU0xFdVQw?=
 =?utf-8?B?R3ZtUWNoVFA0cDhqQmZwbWIrc1p0ZTVGc29xMWMxZGFxMHRTeHRsQ3pwTTJG?=
 =?utf-8?B?TjBRNURuT3VyQ1NqV0VGOTN2ajUzSzVySnpGYmpCand3alhaN1NpVDdwbkRM?=
 =?utf-8?B?b3pHS1Q3ODY0RXNFOXN3SEdSNWNHTFpEakNPeWp3VHFSSHJkNkx5SFhjaUZY?=
 =?utf-8?B?dy9qaURlU3dEZ0pOUitoYnhvU1ZRVm4zNTNXbFl2L2NYcHNBT1pFWEJXRm8r?=
 =?utf-8?B?dzJDWFFVeVh5VlY5TUdsblNDRUNXZUQ3Vms0ZnZCd0lvay9PbDlvenlVSHAx?=
 =?utf-8?B?TG94aU1XdEgvbm5HVXRvTjJBN2loVlhOVGR4RkM2ejVUT3RoSVlNZ3NlNnBS?=
 =?utf-8?B?cDNsRWVWdEx1cEVXS09mYXE2bjlFbUdxM1RQRC9MOGdLV2ZQMzZ5Tkt4Uk1K?=
 =?utf-8?B?cUcrL2lmR3YvR0t3Y21Tb3pWUGlkZXNlNktsaVRYS2JZM0pCakgrZStreFpq?=
 =?utf-8?B?ZVNBUFNvK0ZUR1BWajk4dlJPRW42SkZYbmNSc2QrZnlKV2hieXordytnUVhU?=
 =?utf-8?B?YlFQVG5palJzOFVBcFZCRDNCQ1hKcC84RTBoRjJuTTd6a2xJbjdJVlFLY3k0?=
 =?utf-8?B?T1krM3BWdzF4T1k0U1MyWEdCMlFKaWk1Z0NUcHdtWjhDc0liTC9UbHFZNzZK?=
 =?utf-8?B?Ykh2ZnIxYWF1NkN0T0J1ZzVZSnhLb3FrbWl6VFlBT2dldlVidGI5UlZJcFJP?=
 =?utf-8?B?aXZTWEU2NXZPOU9oejdzQzlWbUFNWlJuOVBtWmNiZUNQTU05MktST1haOXJS?=
 =?utf-8?B?Yk1IRzd0V2RzRG9NbTBrV1QzZ0NnZVdYc2ZxTHBqNGt3REN3TGdHeG5rOUlG?=
 =?utf-8?B?OTY5M2gzUnY3S1ExeXlEL3F4a3h4VDdwcHU1b0VPRFBnQjkyWjI5NjNtWlFo?=
 =?utf-8?B?ak1JU0YwdlFsMTNBK0Naa0xhYlF3ajdyTDNzamhPMFJhQWovejFUVUswaWxN?=
 =?utf-8?B?STZkY29kdjgvOTBLQ0NHOG4vZEo0N2VxMWdJaFppdWxKOHNxYUZRUTM5bWtX?=
 =?utf-8?B?SWlIWnQxUW50NndFTjNrRFdhN1g0MVFnZTFVaSt1bjVRdStqTnlyUWc0TUox?=
 =?utf-8?B?UlVoVXQyOXkySjVZK1BvOGRhQTFONXV2akJQZ2hybWdTdlRrci9LR2xGVkNX?=
 =?utf-8?B?MGdwbHRScEl5MXJxVjRJRnRNVW5IbVVnMm16cFlHQnhiWGU2UzJqcjROcW55?=
 =?utf-8?B?M1QyaVRycnhKYVp1RTBwelcvUE9LdkV1SDhGaUdrUXFqM1drTU9EVnhuTy95?=
 =?utf-8?B?ak42WWZBMnU5d2lPd3NUY2kzQXhvMmY4b05Ob0RIOXZ4cVpHbmgxMko0MWZo?=
 =?utf-8?B?YUd5UzZrOVdkUEJhb0dkYlZzV0lQUk03eitUa3FxREwrZXJlQ09EaVlFWkJ0?=
 =?utf-8?B?aHlqVHFlM3VzNngzOFVqMXFGNlBFMS9KTHE0ZVk2NXduL2N0eGFWTWRYZWh0?=
 =?utf-8?B?elN3YUNMZG1xeWtOcXQ3VngydTRraVRCdWozK1lOTVd4QllMcG1jcW9NbENM?=
 =?utf-8?Q?YU/k=3D?=
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: SA1PR11MB6734.namprd11.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 055a227c-2c25-4ce6-0dfb-08dc0bdf114c
X-MS-Exchange-CrossTenant-originalarrivaltime: 02 Jan 2024 22:06:27.5496
 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: 2AjJwpb/OVe4rVHsbyr5dxOPUeyXaI0feaWWD5AYXJA3lre91Hz6U7sq/zF0zmLa2MsnXZmdPl1RryHjcWY+BQ==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH0PR11MB5345
X-OriginatorOrg: intel.com

PiA+IFN1YmplY3Q6IFJlOiBbUEFUQ0ggdjEzIDAxLzM1XSB4ODYvY3B1ZmVhdHVyZXMsb3Bjb2Rl
LG1zcjogQWRkIHRoZQ0KPiBXUk1TUk5TIGluc3RydWN0aW9uIHN1cHBvcnQNCj4gDQo+IE9yIHNp
bXBseSAieDg2L2ZyZWQ6IEFkZCAuLi4gIg0KDQpEbyBJIG5lZWQgdG8gc2VuZCBhbiB1cGRhdGVk
IHBhdGNoPw0KDQpPciBqdXN0IGxlYXZlIGl0IHRvIHRoZSBtYWludGFpbmVyIHdobyBpcyBnb2lu
ZyB0byB0YWtlIGNhcmUgb2YgaXQ/DQoNCj4gDQo+IE90aGVyIHRoYW4gdGhhdCwNCj4gDQo+IEFj
a2VkLWJ5OiBCb3Jpc2xhdiBQZXRrb3YgKEFNRCkgPGJwQGFsaWVuOC5kZT4NCg0KVGhhbmtzIGEg
bG90IQ0KICAgIC1YaW4NCg0KPiANCj4gLS0NCj4gUmVnYXJkcy9HcnVzcywNCj4gICAgIEJvcmlz
Lg0KPiANCj4gaHR0cHM6Ly9wZW9wbGUua2VybmVsLm9yZy90Z2x4L25vdGVzLWFib3V0LW5ldGlx
dWV0dGUNCg==


From xen-devel-bounces@lists.xenproject.org Tue Jan 02 23:48:14 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 02 Jan 2024 23:48:14 +0000
Received: from list by lists.xenproject.org with outflank-mailman.660876.1030539 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rKoUJ-0007N7-5m; Tue, 02 Jan 2024 23:47:59 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 660876.1030539; Tue, 02 Jan 2024 23:47:59 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rKoUJ-0007N0-2f; Tue, 02 Jan 2024 23:47:59 +0000
Received: by outflank-mailman (input) for mailman id 660876;
 Tue, 02 Jan 2024 23:47:57 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=mnqv=IM=kernel.org=sstabellini@srs-se1.protection.inumbo.net>)
 id 1rKoUH-0007Mu-Bg
 for xen-devel@lists.xenproject.org; Tue, 02 Jan 2024 23:47:57 +0000
Received: from sin.source.kernel.org (sin.source.kernel.org [145.40.73.55])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 5817430f-a9c9-11ee-98ef-6d05b1d4d9a1;
 Wed, 03 Jan 2024 00:47:54 +0100 (CET)
Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58])
 by sin.source.kernel.org (Postfix) with ESMTP id 00D5ACE11E7;
 Tue,  2 Jan 2024 23:47:48 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id D7F7FC433C8;
 Tue,  2 Jan 2024 23:47:45 +0000 (UTC)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 5817430f-a9c9-11ee-98ef-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
	s=k20201202; t=1704239267;
	bh=tmqDTWj2+RT5cFcRkWtyllUV3Y62nDZA8cHigj/xZWU=;
	h=Date:From:To:cc:Subject:In-Reply-To:References:From;
	b=qdwIv682H9p+qomQTdDftwB7MZPJNkfRu6ONHjZNfF1r5J1yKkkw3PFxZlo0avyvo
	 Ikmup41d2HJIdR3PD2YYCdr2DDlgYI+ddQhjZIISthwZL2fqgeYuwDpR+x5tGgZ+EF
	 BivSvgDKg0XhRI8toVCdGlvxcF7AqKg3GQfbdAJuP6q8Nib4iyocvcSURunXPsqglH
	 ajbp2Z4ZLOBaToGbOXYjUXK1OGBXsAJOoG3qbBdaYdVPIybd9R4mhwoXPNKWE/ID+t
	 XO0sPcWqtWon/XX69jmMI/EmFGSHQTn3MdbJg9fcOukcktP3shnlqCttLhGH56nRuY
	 R9hR46+TEXLoA==
Date: Tue, 2 Jan 2024 15:47:44 -0800 (PST)
From: Stefano Stabellini <sstabellini@kernel.org>
X-X-Sender: sstabellini@ubuntu-linux-20-04-desktop
To: Julien Grall <julien@xen.org>
cc: Jan Beulich <jbeulich@suse.com>, Luca Fancellu <Luca.Fancellu@arm.com>, 
    Andrew Cooper <andrew.cooper3@citrix.com>, 
    =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>, 
    Stefano Stabellini <sstabellini@kernel.org>, 
    Bertrand Marquis <Bertrand.Marquis@arm.com>, 
    Michal Orzel <Michal.Orzel@amd.com>, Wei Liu <wl@xen.org>, 
    "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>, 
    George Dunlap <george.dunlap@cloud.com>
Subject: Re: Clang-format configuration discussion - pt 2
In-Reply-To: <52f25f40-ab42-4845-9912-81ce92cc4de6@xen.org>
Message-ID: <alpine.DEB.2.22.394.2401021544050.1322202@ubuntu-linux-20-04-desktop>
References: <1B83FF45-E93B-47D7-AD21-615CFCFD0816@arm.com> <2E778E49-C2F5-421F-9598-CED15E7D4284@arm.com> <827e24a2-0ecd-48c4-becb-12129c4208dc@suse.com> <CA+zSX=b77av9rHwWHsRD8MAnprfXQiotUPPPKFDOU9cTOA2OzA@mail.gmail.com> <4ce995a3-78a1-49e5-881d-d6af10514673@xen.org>
 <b71c4e81-7026-40b2-ad76-ea4de5bbf6b3@suse.com> <52f25f40-ab42-4845-9912-81ce92cc4de6@xen.org>
User-Agent: Alpine 2.22 (DEB 394 2020-01-19)
MIME-Version: 1.0
Content-Type: text/plain; charset=US-ASCII

On Thu, 7 Dec 2023, Julien Grall wrote:
> > > > Most modern languages, including golang (and I think rust) have
> > > > built-in style correctors (`go fmt` is go's official one).  If you
> > > > haven't worked with an automatic style checker / fixer, you don't know
> > > > how much time, hassle, and emotional energy you're saving.  I don't
> > > > think I know anyone who, after using one, wants to go back to not
> > > > using one any more.
> > > > 
> > > > In general, I'm in favor of making changes to our style such that we
> > > > can make clang's style checker official.  The only reason I would vote
> > > > against it is if one of the style requirements was really intolerable;
> > > > but I find that pretty unlikely.
> > > 
> > > +1

+1


> > > > And as I've said before, the main reservation I have going forward
> > > > with this discussion is that I can't see clearly what it is that I'm
> > > > agreeing to.
> > > 
> > > +1

+1


> > > I found the way we dealt with MISRA rules quite helpful. We had a weekly
> > > meeting to discuss some of the rules and then the outcome was posted on
> > > the ML. Maybe we should do the same here? Any other suggestion how to
> > > move?
> > 
> > I have mixed feelings with meetings like the Misra ones. That's probably
> > unavoidable because of it being a goal to move fast. I'm not sure the
> > same applies here. 
> 
> I think in this situation is less about moving fast but more about making a
> closure of the 3 years+ discussion about the coding style.

Exactly. The meeting is useful to find alignment in a more fruitful way.

We don't have many MISRA rules left to discuss anyway. We could discuss
the codestyle changes after MISRA or in parallel.


> We had several persons (including maintainers) expressing there frustration
> about the coding style [1]. And this is not really going better...
> 
> We have a couple of solutions:
>   1. Properly codify our coding style
>   2. Pick an existing one close enough to Xen
> 
> The first one would require the less change in Xen but given nobody really
> agree on changes to CODING_STYLE, I feer it is going to take a very long time
> to retrofit. From the discussion here, it also seems like we will not be able
> to get the automatic checker doing what we want.
> 
> For the second one, this may have an impact on Xen. But it would help to use
> an automatic checker. I also don't expect many contributors been able to sink
> a lot of time trying to come to a conclusion with the coding style. So I would
> chose the least path of resistance which is 2. I believe this is what Luca is
> attempting.

I also think we need an automatic checker and 2. seems like the best way
forward.


From xen-devel-bounces@lists.xenproject.org Wed Jan 03 05:38:40 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 03 Jan 2024 05:38:40 +0000
Received: from list by lists.xenproject.org with outflank-mailman.660881.1030549 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rKtxG-00087M-30; Wed, 03 Jan 2024 05:38:14 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 660881.1030549; Wed, 03 Jan 2024 05:38:14 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rKtxF-00087F-Vb; Wed, 03 Jan 2024 05:38:13 +0000
Received: by outflank-mailman (input) for mailman id 660881;
 Wed, 03 Jan 2024 05:38:12 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=OHFH=IN=nxp.com=peng.fan@srs-se1.protection.inumbo.net>)
 id 1rKtxE-000879-MB
 for xen-devel@lists.xenproject.org; Wed, 03 Jan 2024 05:38:12 +0000
Received: from EUR02-VI1-obe.outbound.protection.outlook.com
 (mail-vi1eur02on20613.outbound.protection.outlook.com
 [2a01:111:f400:fe16::613])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 475fba3c-a9fa-11ee-98ef-6d05b1d4d9a1;
 Wed, 03 Jan 2024 06:38:10 +0100 (CET)
Received: from DU0PR04MB9417.eurprd04.prod.outlook.com (2603:10a6:10:358::11)
 by AS8PR04MB9125.eurprd04.prod.outlook.com (2603:10a6:20b:448::7)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7159.13; Wed, 3 Jan
 2024 05:38:07 +0000
Received: from DU0PR04MB9417.eurprd04.prod.outlook.com
 ([fe80::ff06:bbb2:c068:5fb3]) by DU0PR04MB9417.eurprd04.prod.outlook.com
 ([fe80::ff06:bbb2:c068:5fb3%7]) with mapi id 15.20.7135.023; Wed, 3 Jan 2024
 05:38:07 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 475fba3c-a9fa-11ee-98ef-6d05b1d4d9a1
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=heATBl+6ygAu0NFGIqYxgeJi4xiAMof+tnlj3zowroSN1qDlIdASkAf7gbk02Y0PkmvV8lwWenSRS5YpTrHn7ANwoUrgX9FffkMPHVChlF96m6pclKVQJCZ4XOSwg5fLmOaYbo6MGoQh8+dVBRdnDv2iJMnik6s9za5cBEWz7gDl/6+ex0WoQZNobrlS5MHDoAyL1RWvFQHTA/v62W8mB/ul1dWjik7N1ApGGRfe+rNJ0bYTLCfiAxzVXI6SYMeJ3n27fZzELnHJFXXgDWTAANUCKESV3DqPiSpPPTshP6Asbx9VNKMhvPwacEoln7Cgj2mnkmhcf6TuVUjNxsQQIA==
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=8ETsO5+JX7KzNBcdLnVsyeZy/HIXoTag9YZ4/LrRo+0=;
 b=cKo91lBUrAJzynYEhKjiefnEjGt80ungN6ZoF1CQK+xfsQ1DhOSDZ2m55sgvIzvnushPMsLgWSSzuyKulYJWEIxRqiE4L6u504hSVgdDgQGvJH9KP4EWtw5+749625h03Awyd1jLejiyivoKpcIur/9vnfEitYnZcY574g9MIzTVxHq9jxJzuZmGEdfRWkcdm9ceOQw7NLXwhWyJwNDeiJ+vVTrlZ1XC3eqpa9apvviJj9MAt8aLOV+BYLfAikrIJx32M3R9XsJuBjeKDWTjU4Ty1khU/MXUpuitjIUnGO/gvSLkDYGkE/1lOIa9aSwIP5GsELnhnGupXWLpuO5lDA==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass
 header.d=nxp.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector2;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=8ETsO5+JX7KzNBcdLnVsyeZy/HIXoTag9YZ4/LrRo+0=;
 b=Pz8mKM7KuC9wQ4v1dLQJE/Q/a1GgWoVBwLuMMEAHeVLMqT8jvDWtyCMy4JYyTMY3E3TgT0JUcU0uzsQXTelv1CXNx5kO2OJpOQfW+wZVzJ2LiMdJLf94CRUHM4SuLY1J15vfhLKmU6g8Kc8Tqas/5qxepLf4KF56IhrRBm2IliM=
From: Peng Fan <peng.fan@nxp.com>
To: "vikram.garhwal@amd.com" <vikram.garhwal@amd.com>,
	"stefano.stabellini@amd.com" <stefano.stabellini@amd.com>, Oleksii Moisieiev
	<oleksii_moisieiev@epam.com>, Viresh Kumar <viresh.kumar@linaro.org>
CC: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Subject: Xen and Qemu virtio question
Thread-Topic: Xen and Qemu virtio question
Thread-Index: Ado+Bh/9MuDR+84cSOCs1HJKnhYJ1A==
Date: Wed, 3 Jan 2024 05:38:07 +0000
Message-ID:
 <DU0PR04MB9417F7A337D7CAA59B38ED038860A@DU0PR04MB9417.eurprd04.prod.outlook.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=nxp.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: DU0PR04MB9417:EE_|AS8PR04MB9125:EE_
x-ms-office365-filtering-correlation-id: 7eae12b5-2b29-4b64-793e-08dc0c1e2a3e
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam: BCL:0;
x-microsoft-antispam-message-info:
 SIkkDGz2y7P/QaJ845B567HW0IoBu0XA6lLHrfYjaCDO1NgwSY+zeo/mDvbwOD1mEjhGWWgCuGkN/Mv0iaJJx5H86GpVqieIJpHsmp+1iVUS2hNpXa18kxIZEBJ4bo9cQ8wYgTScXokTsggfAVQ+VgIaCslfSoXZreijm5pI/qp3/wgU8dpvP81CZt2t6kmYWCtmXMoylhNAuAYzHsc59Hnb+uy3uqJ8vrIaE/0us/yRqC37jinumN1IG3xxJE9CgLxpfu4ppyveqE60HS29lPGKbDF3ZP4eKiRj/yb6QuyVyScRdjW4FYeP8iTx9GRaDHK443wFv7XII6ow9SZCR1xxAIi5aNkC0WF0nKf/lOiTezdgT8wfx4emCmjPsshlIhFE4BsA6dK/IgvNYz89d/N1arPLIbQM2ZHyyZmLG3D0Tc/vhVSGNy9X4laDlmD0oaM9xXBR0ZTN072kRz9LR+H2kMCc9cgbfxuAg+BcUZjLd3HFdasXzlv7u1KMaw+gM/4Di9Xv9GcLj0QPIkx49ovJ8MEXu1Lgr9bGeQGo4cCFh1ArfY5EuZ8niit6u+bNBmOJm5rgJmjyXdFG1MwOh993FSbOWPJCqRpDteYg3Y0=
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DU0PR04MB9417.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230031)(136003)(39860400002)(346002)(376002)(396003)(366004)(230922051799003)(451199024)(1800799012)(186009)(64100799003)(41300700001)(83380400001)(26005)(38100700002)(122000001)(52536014)(8676002)(8936002)(316002)(110136005)(5660300002)(2906002)(4326008)(44832011)(71200400001)(478600001)(9686003)(6506007)(7696005)(64756008)(66446008)(66476007)(66556008)(66946007)(76116006)(38070700009)(86362001)(33656002)(55016003);DIR:OUT;SFP:1101;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?us-ascii?Q?bmlGRtdi/MeCWKpAPXhSJguGx221EynbGDLnc0vsW0iGnKBsEu2yjx7Swwiq?=
 =?us-ascii?Q?r7QXfn2XPqt9Ca0kNSRmT0X9Na0g8ZECr9lsK2YHnnMQwYn37ml0VBlYpOhd?=
 =?us-ascii?Q?TtNzfZGq6BhrvHIVtVDFO/l4s4J7PVuY3TPjZAR/ygj1vu3nrwddFesAlIxr?=
 =?us-ascii?Q?T+9xmyEoBMsxZWHB1LDwHiLz54v8gQURTSnogn4a+UBn+OsVWGQ7ePMK5FWO?=
 =?us-ascii?Q?VmivWOz1qmIyfuUKe1S8hXXWh6B0nI+i5PpXglV21GRlkRw83T2vAhyM8OwT?=
 =?us-ascii?Q?v9hximSyH6TfNtqcUJzv30u5p3vFn63j0r+nQYqYKc5BgwaXRETS3gqoqZ6m?=
 =?us-ascii?Q?yPQm0Z4daH0TH9xDbqDDhQM/vWZt84VZFiatDeRDnLt5ZzVGnfbNPy2N3TwN?=
 =?us-ascii?Q?OJxQsX488TUwQMFa8M2tXQhvGib8K/amc8De59wWNj/yTAaww5cQksmC4rDC?=
 =?us-ascii?Q?2freKzgltKzaoAsaXSXq9X8qXAfowNTYNW7OJRsF0rKhKeoOnhLrfiKZ8C5p?=
 =?us-ascii?Q?Zi3NTrFr9mBplHOulkcfBfUsztye2geO+86iYUlKpqAsoi1MP1PHJoNPLYNO?=
 =?us-ascii?Q?V6zCd9slDg8VXyfOFVf99uZdzhdZiR3T3/gro5/WOvYZQdscHRWxNUxEk7Gk?=
 =?us-ascii?Q?C4feaq/9nCqXRIwJ8GfMd4fq0CFCIMdYUG7UpyJUaLwy+UN7p0iE1AuyICIw?=
 =?us-ascii?Q?x9TUUKqfcwTWs2pBJLoYYppGqgApgiSfiCxAPnvb9ctWVRO0+N8D/v152pjv?=
 =?us-ascii?Q?kUDOxnFHq6KN+8et5Rj++f6hNd6D2hrC95ZuvUdhQPpqOgeNOEsOuK6gdQIS?=
 =?us-ascii?Q?S/1DDBfZBRGrD/eDxj154Pc8upqJ8evYctNUvOdfiCX0sirDtDGiqRoGL8Op?=
 =?us-ascii?Q?3namDnAjAimgLhAAJHSbsvMV+YNHPyR2mVUWHeuyxKsPuqcwLa1YaLKhirJh?=
 =?us-ascii?Q?qpwgq90aiiEPd52ZCYQa3lAriHbq16eiyBQ1EwY8txvppF7VF6rmwk1QC0HL?=
 =?us-ascii?Q?/E9eB9CNzCWotwhtxT5Oj+rYnHg7DG3Pdr4LLgVXeDvI46XDialTAfAM1vVz?=
 =?us-ascii?Q?iceAcQLkVaMtE+d2m641fAAAs48jOlE4GESdTqgE8afJLpQushftc7pRmUC5?=
 =?us-ascii?Q?D4KRIGTZdrA0yieg/o/aps5tm/VSOQfCJSgcI519iGLUpxixTWWEoGZhzsJx?=
 =?us-ascii?Q?XcCxe73SCWxaMhbINT1RlBwihxWdAmGCAFH749ekQIqpw5s42U1szmOTwIZ7?=
 =?us-ascii?Q?DGbNGNBQgb8NvM6n2+XnbBRA62GmhZmwYhd4JiKLw7qNxYvFaXOjcRbWYknC?=
 =?us-ascii?Q?9laJKU8GXdi31EToPAuyWj3NtPbfPojZtfentra4L3x2UUtRW80pbIvgROVr?=
 =?us-ascii?Q?hldZmKFK0geeA6MXfXit/VHlsVEH7wnj6cIxC2/6FqJm+1a7+TQUmPl4oIIa?=
 =?us-ascii?Q?utTO9aOMBnGR2fV9PBbFVrdH5j/uVhvX275Ay4Rzm2qQhrBDKD/V+E97Ysf0?=
 =?us-ascii?Q?T61lD3YHZNJ3Xz4sukxl9Mze3MMDT93hrDvaM1sDQaB0Qy/RJvzsGPQPu2kk?=
 =?us-ascii?Q?6dfiiW96ApaA+95XAvI=3D?=
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-OriginatorOrg: nxp.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: DU0PR04MB9417.eurprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 7eae12b5-2b29-4b64-793e-08dc0c1e2a3e
X-MS-Exchange-CrossTenant-originalarrivaltime: 03 Jan 2024 05:38:07.6580
 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: 6H3oYhtDg9DXnxP3deJaaGFJKSZVO4ybCDTElAwDatBzKmGaRTxSTR6RIS7/2vrM/BBl6njFTTom/7HPLZU5lw==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR04MB9125

Hi Vikram, Oleksii

I follow the slide virtio for Xen on ARM[1], but I met some issues, and
stuck for about two days.

I use upstream lastest qemu repo master branch, not qemu-xen.git
repo.

My start command as below[2], but seems I need first `xl create domu.cfg`,
otherwise it will fail, because xen hypervisor
dm_op->rcu_lock_remote_domain_by_id will return failure if domu
not created.  My domu cfg is simple:
kernel =3D "/run/media/boot-mmcblk1p1/Image"
disk =3D [ '/etc/xen/disk_1.img,,xvda,specification=3Dvirtio' ]
cmdline =3D "console=3Dhvc0 root=3D/dev/xvda rw"
name =3D "DomU"
memory =3D 512
serial =3D "pty"

I drop qdisk in the disk entry, because xen tool report qdisk and virtio
not compatible.

And the arg xen_domid should be same as domu domain id? Is
there any dynamic way to set xen_domid, start qemu when start
domu?

Does the domu dts still needed to include the virtio,mmio node?

however xl create domu.cfg relies virtio disk ready, which needs qemu
start first. This confuses me. How do you address this
or I do something wrong?

Then after xl create,  I quickly start qemu, but met:
failed to create ioreq server, then I see there is mismatch.
qemu use HVM_IOREQSRV_BUFIOREQ_ATOMIC to create ioreq server,
but xen ioreq_server_create will return failure:
     if ( !IS_ENABLED(CONFIG_X86) && bufioreq_handling )                   =
                         =20
               return -EINVAL;

So I change HVM_IOREQSRV_BUFIOREQ_OFF in qemu, but met:
qemu-system-aarch64: failed to map ioreq server resources: error 2
handle=3D0xaaaad26c7f30
qemu-system-aarch64: xen hardware virtual machine initialisation failed

Do you have out of box repo that works well? Including Qemu and Xen,
I am trying virtio disk, but will move to test virtio gpu soon.

I am not sure there are some downstream patches in your side to
address and make it work well.

Thanks for your help.

Thanks,
Peng.

[1]https://www.youtube.com/watch?v=3DboRQ8UHc760

[2]qemu-system-aarch64  -xen-domid 1 \
-chardev socket,id=3Dlibxl-cmd,path=3Dqmp-libxl-1,server=3Don,wait=3Doff \
-mon chardev=3Dlibxl-cmd,mode=3Dcontrol \
-chardev socket,id=3Dlibxenstat-cmd,path=3Dqmp-libxenstat-1,server=3Don,wai=
t=3Doff \
-mon chardev=3Dlibxenstat-cmd,mode=3Dcontrol \
-xen-attach -name guest0 -vnc none -display none -nographic \
-machine xenpvh -m 513 &


From xen-devel-bounces@lists.xenproject.org Wed Jan 03 05:53:28 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 03 Jan 2024 05:53:28 +0000
Received: from list by lists.xenproject.org with outflank-mailman.660888.1030558 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rKuBu-0002cc-Fv; Wed, 03 Jan 2024 05:53:22 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 660888.1030558; Wed, 03 Jan 2024 05:53:22 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rKuBu-0002cV-Cw; Wed, 03 Jan 2024 05:53:22 +0000
Received: by outflank-mailman (input) for mailman id 660888;
 Wed, 03 Jan 2024 05:53:21 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=tcLg=IN=suse.com=jgross@srs-se1.protection.inumbo.net>)
 id 1rKuBt-0002cP-0y
 for xen-devel@lists.xenproject.org; Wed, 03 Jan 2024 05:53:21 +0000
Received: from smtp-out2.suse.de (smtp-out2.suse.de [195.135.223.131])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 64b0b574-a9fc-11ee-9b0f-b553b5be7939;
 Wed, 03 Jan 2024 06:53:19 +0100 (CET)
Received: from imap1.dmz-prg2.suse.org (imap1.dmz-prg2.suse.org
 [IPv6:2a07:de40:b281:104:10:150:64:97])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
 (No client certificate requested)
 by smtp-out2.suse.de (Postfix) with ESMTPS id 58B9C1F78D;
 Wed,  3 Jan 2024 05:53:17 +0000 (UTC)
Received: from imap1.dmz-prg2.suse.org (localhost [127.0.0.1])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
 (No client certificate requested)
 by imap1.dmz-prg2.suse.org (Postfix) with ESMTPS id 0190F13418;
 Wed,  3 Jan 2024 05:53:16 +0000 (UTC)
Received: from dovecot-director2.suse.de ([10.150.64.162])
 by imap1.dmz-prg2.suse.org with ESMTPSA id IOTyOUz2lGV8OgAAD6G6ig
 (envelope-from <jgross@suse.com>); Wed, 03 Jan 2024 05:53:16 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 64b0b574-a9fc-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1704261197; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:content-type:content-type:
	 in-reply-to:in-reply-to:references:references:autocrypt:autocrypt;
	bh=A4y9+iKixrUT2kJ/gjgCrHQHgcvQaFAmrJTfAN0z+kI=;
	b=nAyEJUduWo3Q0XeHo/wxUsZHGmFXGwJQpZLUldNiVqLTjfmjCumvfXpDcXJ+zx5Fx71LqO
	qIXww4FWw6XL9yFJkZzwR0hZ1smR1VAVlMDSACpCKJZ0UBJJEkjAir8HjztbJnmZyfzuK+
	N72JZEDEL5GcQxLJJA/rL5bgwtYmSAA=
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1704261197; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:content-type:content-type:
	 in-reply-to:in-reply-to:references:references:autocrypt:autocrypt;
	bh=A4y9+iKixrUT2kJ/gjgCrHQHgcvQaFAmrJTfAN0z+kI=;
	b=nAyEJUduWo3Q0XeHo/wxUsZHGmFXGwJQpZLUldNiVqLTjfmjCumvfXpDcXJ+zx5Fx71LqO
	qIXww4FWw6XL9yFJkZzwR0hZ1smR1VAVlMDSACpCKJZ0UBJJEkjAir8HjztbJnmZyfzuK+
	N72JZEDEL5GcQxLJJA/rL5bgwtYmSAA=
Message-ID: <9637302c-9fcf-46c5-9b70-ec44cd25f89d@suse.com>
Date: Wed, 3 Jan 2024 06:53:16 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: Xen 4.19 release schedule proposal
Content-Language: en-US
To: Oleksii <oleksii.kurochko@gmail.com>, xen-devel@lists.xenproject.org
Cc: community.manager@xenproject.org, julien@xen.org, sstabellini@kernel.org,
 Bertrand.Marquis@arm.com, andrew.cooper3@citrix.com, jbeulich@suse.com,
 roger.pau@citrix.com, anthony.perard@citrix.com, george.dunlap@cloud.com,
 Wei.Chen@arm.com
References: <cover.1703072575.git.oleksii.kurochko@gmail.com>
 <08bca9a4158a190a0a953e5bc071a512cfe5f0f8.1703072575.git.oleksii.kurochko@gmail.com>
 <341249d1-217f-4ad2-9455-b1aded4b9b56@xen.org>
 <03cf5145-2124-4150-9f20-904f08bcabda@suse.com>
 <9f8c4fe0a87742444b52a42aa5924cf046ee18b0.camel@gmail.com>
 <67bf2be7-53f4-40d0-a856-8ae631a054b0@suse.com>
 <955e9b02-20bd-4279-9f60-bb757cdf1a03@xen.org>
 <0f729b61-b839-48f6-89ae-b5570b1eae0b@xen.org>
 <26152790b0b8c3330d9cfc3c0462a1c072d6d598.camel@gmail.com>
From: Juergen Gross <jgross@suse.com>
Autocrypt: addr=jgross@suse.com; keydata=
 xsBNBFOMcBYBCACgGjqjoGvbEouQZw/ToiBg9W98AlM2QHV+iNHsEs7kxWhKMjrioyspZKOB
 ycWxw3ie3j9uvg9EOB3aN4xiTv4qbnGiTr3oJhkB1gsb6ToJQZ8uxGq2kaV2KL9650I1SJve
 dYm8Of8Zd621lSmoKOwlNClALZNew72NjJLEzTalU1OdT7/i1TXkH09XSSI8mEQ/ouNcMvIJ
 NwQpd369y9bfIhWUiVXEK7MlRgUG6MvIj6Y3Am/BBLUVbDa4+gmzDC9ezlZkTZG2t14zWPvx
 XP3FAp2pkW0xqG7/377qptDmrk42GlSKN4z76ELnLxussxc7I2hx18NUcbP8+uty4bMxABEB
 AAHNH0p1ZXJnZW4gR3Jvc3MgPGpncm9zc0BzdXNlLmNvbT7CwHkEEwECACMFAlOMcK8CGwMH
 CwkIBwMCAQYVCAIJCgsEFgIDAQIeAQIXgAAKCRCw3p3WKL8TL8eZB/9G0juS/kDY9LhEXseh
 mE9U+iA1VsLhgDqVbsOtZ/S14LRFHczNd/Lqkn7souCSoyWsBs3/wO+OjPvxf7m+Ef+sMtr0
 G5lCWEWa9wa0IXx5HRPW/ScL+e4AVUbL7rurYMfwCzco+7TfjhMEOkC+va5gzi1KrErgNRHH
 kg3PhlnRY0Udyqx++UYkAsN4TQuEhNN32MvN0Np3WlBJOgKcuXpIElmMM5f1BBzJSKBkW0Jc
 Wy3h2Wy912vHKpPV/Xv7ZwVJ27v7KcuZcErtptDevAljxJtE7aJG6WiBzm+v9EswyWxwMCIO
 RoVBYuiocc51872tRGywc03xaQydB+9R7BHPzsBNBFOMcBYBCADLMfoA44MwGOB9YT1V4KCy
 vAfd7E0BTfaAurbG+Olacciz3yd09QOmejFZC6AnoykydyvTFLAWYcSCdISMr88COmmCbJzn
 sHAogjexXiif6ANUUlHpjxlHCCcELmZUzomNDnEOTxZFeWMTFF9Rf2k2F0Tl4E5kmsNGgtSa
 aMO0rNZoOEiD/7UfPP3dfh8JCQ1VtUUsQtT1sxos8Eb/HmriJhnaTZ7Hp3jtgTVkV0ybpgFg
 w6WMaRkrBh17mV0z2ajjmabB7SJxcouSkR0hcpNl4oM74d2/VqoW4BxxxOD1FcNCObCELfIS
 auZx+XT6s+CE7Qi/c44ibBMR7hyjdzWbABEBAAHCwF8EGAECAAkFAlOMcBYCGwwACgkQsN6d
 1ii/Ey9D+Af/WFr3q+bg/8v5tCknCtn92d5lyYTBNt7xgWzDZX8G6/pngzKyWfedArllp0Pn
 fgIXtMNV+3t8Li1Tg843EXkP7+2+CQ98MB8XvvPLYAfW8nNDV85TyVgWlldNcgdv7nn1Sq8g
 HwB2BHdIAkYce3hEoDQXt/mKlgEGsLpzJcnLKimtPXQQy9TxUaLBe9PInPd+Ohix0XOlY+Uk
 QFEx50Ki3rSDl2Zt2tnkNYKUCvTJq7jvOlaPd6d/W0tZqpyy7KVay+K4aMobDsodB3dvEAs6
 ScCnh03dDAFgIq5nsB11j3KPKdVoPlfucX2c7kGNH+LUMbzqV6beIENfNexkOfxHfw==
In-Reply-To: <26152790b0b8c3330d9cfc3c0462a1c072d6d598.camel@gmail.com>
Content-Type: multipart/signed; micalg=pgp-sha256;
 protocol="application/pgp-signature";
 boundary="------------o8VjT7LNoJWb3XjoVuhJQawp"
X-Spam-Level: 
X-Rspamd-Server: rspamd1.dmz-prg2.suse.org
X-Spam-Level: 
X-Spam-Flag: NO
X-Spamd-Result: default: False [-6.20 / 50.00];
	 RCVD_VIA_SMTP_AUTH(0.00)[];
	 XM_UA_NO_VERSION(0.01)[];
	 TO_DN_SOME(0.00)[];
	 HAS_ATTACHMENT(0.00)[];
	 MIME_BASE64_TEXT_BOGUS(1.00)[];
	 RCVD_COUNT_THREE(0.00)[3];
	 DKIM_TRACE(0.00)[suse.com:+];
	 MIME_BASE64_TEXT(0.10)[];
	 MX_GOOD(-0.01)[];
	 SIGNED_PGP(-2.00)[];
	 FREEMAIL_TO(0.00)[gmail.com,lists.xenproject.org];
	 FROM_EQ_ENVFROM(0.00)[];
	 MIME_TRACE(0.00)[0:+,1:+,2:+,3:+,4:~,5:~];
	 MID_RHS_MATCH_FROM(0.00)[];
	 BAYES_HAM(-3.00)[100.00%];
	 MIME_UNKNOWN(0.10)[application/pgp-keys];
	 ARC_NA(0.00)[];
	 R_DKIM_ALLOW(-0.20)[suse.com:s=susede1];
	 FROM_HAS_DN(0.00)[];
	 FREEMAIL_ENVRCPT(0.00)[gmail.com];
	 TO_MATCH_ENVRCPT_ALL(0.00)[];
	 TAGGED_RCPT(0.00)[];
	 MIME_GOOD(-0.20)[multipart/signed,multipart/mixed,text/plain];
	 DWL_DNSWL_HI(-3.50)[suse.com:dkim];
	 DKIM_SIGNED(0.00)[suse.com:s=susede1];
	 RCPT_COUNT_TWELVE(0.00)[12];
	 DBL_BLOCKED_OPENRESOLVER(0.00)[suse.com:dkim];
	 FUZZY_BLOCKED(0.00)[rspamd.com];
	 RCVD_TLS_ALL(0.00)[];
	 SUSPICIOUS_RECIPS(1.50)[]
Authentication-Results: smtp-out2.suse.de;
	dkim=pass header.d=suse.com header.s=susede1 header.b=nAyEJUdu
X-Spam-Score: -6.20
X-Rspamd-Queue-Id: 58B9C1F78D

This is an OpenPGP/MIME signed message (RFC 4880 and 3156)
--------------o8VjT7LNoJWb3XjoVuhJQawp
Content-Type: multipart/mixed; boundary="------------kYp6rgkP7vMRAhtfrv088vgt";
 protected-headers="v1"
From: Juergen Gross <jgross@suse.com>
To: Oleksii <oleksii.kurochko@gmail.com>, xen-devel@lists.xenproject.org
Cc: community.manager@xenproject.org, julien@xen.org, sstabellini@kernel.org,
 Bertrand.Marquis@arm.com, andrew.cooper3@citrix.com, jbeulich@suse.com,
 roger.pau@citrix.com, anthony.perard@citrix.com, george.dunlap@cloud.com,
 Wei.Chen@arm.com
Message-ID: <9637302c-9fcf-46c5-9b70-ec44cd25f89d@suse.com>
Subject: Re: Xen 4.19 release schedule proposal
References: <cover.1703072575.git.oleksii.kurochko@gmail.com>
 <08bca9a4158a190a0a953e5bc071a512cfe5f0f8.1703072575.git.oleksii.kurochko@gmail.com>
 <341249d1-217f-4ad2-9455-b1aded4b9b56@xen.org>
 <03cf5145-2124-4150-9f20-904f08bcabda@suse.com>
 <9f8c4fe0a87742444b52a42aa5924cf046ee18b0.camel@gmail.com>
 <67bf2be7-53f4-40d0-a856-8ae631a054b0@suse.com>
 <955e9b02-20bd-4279-9f60-bb757cdf1a03@xen.org>
 <0f729b61-b839-48f6-89ae-b5570b1eae0b@xen.org>
 <26152790b0b8c3330d9cfc3c0462a1c072d6d598.camel@gmail.com>
In-Reply-To: <26152790b0b8c3330d9cfc3c0462a1c072d6d598.camel@gmail.com>

--------------kYp6rgkP7vMRAhtfrv088vgt
Content-Type: multipart/mixed; boundary="------------bopPjl3JN87y0A9PseU7SoxU"

--------------bopPjl3JN87y0A9PseU7SoxU
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: base64

T24gMDIuMDEuMjQgMTc6NTksIE9sZWtzaWkgd3JvdGU6DQo+IERlYXIgY29tbXVuaXR5LA0K
PiANCj4gV2lzaGluZyB5b3UgYSBIYXBweSBOZXcgWWVhciENCj4gDQo+IEknZCBsaWtlIHRv
IHByb3Bvc2UgdGhlIHJlbGVhc2Ugc2NoZWR1bGUgZm9yIFhlbiA0LjE5Lg0KPiANCj4gQmFz
ZWQgb24gdGhlIHByZXZpb3VzIHJlbGVhc2Ugc2NoZWR1bGVzIFsxXSBhbmQgWzJdLCBpdCBz
ZWVtcyB0aGUgbmV4dA0KPiByZWxlYXNlIGRhdGUgc2hvdWxkIGJlIG9uIFdlZG5lc2RheSwg
SnVseSAxMCwgMjAyNDoNCj4gDQo+ICoqIFByb3Bvc2VkIG9wdGlvbjogV2VkIEp1bCAxMCwg
MjAyNCAqKg0KPiAoKzkgbW9udGhzIGZyb20gWGVuIDQuMTggcmVsZWFzZSkNCj4gDQo+IC0g
TGFzdCBwb3N0aW5nIGRhdGUgICAgICAgICAgRnJpIEFwciAyNiwgMjAyNA0KPiANCj4gUGF0
Y2hlcyBhZGRpbmcgbmV3IGZlYXR1cmVzIGFyZSBleHBlY3RlZCB0byBiZSBwb3N0ZWQgdG8g
dGhlIG1haWxpbmcNCj4gbGlzdCBieSB0aGlzIGRhdGUsIGFsdGhvdWdoIHBlcmhhcHMgbm90
IGluIHRoZWlyIGZpbmFsIHZlcnNpb24uDQo+IA0KPiAtIEZlYXR1cmUgZnJlZXplICAgICAg
ICAgICAgIEZyaSBNYXkgMTcsIDIwMjQgKCszIHdlZWtzIGZyb20gTGFzdA0KPiBwb3N0aW5n
IGRhdGUpDQo+IA0KPiBQYXRjaGVzIGFkZGluZyBuZXcgZmVhdHVyZXMgc2hvdWxkIGJlIGNv
bW1pdHRlZCBieSB0aGlzIGRhdGUuDQo+IFN0cmFpZ2h0Zm9yd2FyZCBidWdmaXhlcyBtYXkg
Y29udGludWUgdG8gYmUgYWNjZXB0ZWQgYnkgbWFpbnRhaW5lcnMuDQo+IA0KPiAtIENvZGUg
ZnJlZXplICAgICAgICAgICAgICAgIEZyaSBNYXkgMzEsIDIwMjQgKCsyIHdlZWtzIGZyb20g
RmVhdHVyZQ0KPiBmcmVlemUpDQo+IA0KPiBCdWdmaXhlcyBvbmx5Lg0KPiANCj4gLSBIYXJk
IGNvZGUgZnJlZXplICAgICAgICAgICBGcmkgSnVuIDIxLCAyMDI0ICgrMyB3ZWVrcyBmcm9t
IENvZGUNCj4gZnJlZXplKQ0KPiANCj4gQnVnZml4ZXMgZm9yIHNlcmlvdXMgYnVncyAoaW5j
bHVkaW5nIHJlZ3Jlc3Npb25zKSwgYW5kIGxvdy1yaXNrIGZpeGVzDQo+IG9ubHkuDQo+IA0K
PiAtIEZpbmFsIGNvbW1pdHMgICAgICAgICAgICAgIEZyaSBKdWwgMDUsIDIwMjQgKCsyIHdl
ZWtzIGZyb20gSGFyZCBjb2RlDQo+IGZyZWV6ZSkNCj4gDQo+IEJyYW5jaCBvZmYgc3RhZ2lu
Zy00LjE5Lg0KPiANCj4gLSBSZWxlYXNlICAgICAgICAgICAgICAgICAgICBXZWQgSnVsIDEw
LCAyMDI0DQo+IA0KPiBJZiB0aGVyZSBhcmUgbm8gb2JqZWN0aW9ucywgd2Ugd2lsbCBzdGlj
ayB0byB0aGUgcHJvcG9zZWQgc2NoZWR1bGUuDQo+IA0KPiBPbmUgbW9yZSB0aGluZyBJJ2Qg
bGlrZSB0byBkaXNjdXNzIGlzIHdoZXRoZXIgdG8gYWRkIGEgZmlsZQ0KPiAoUkVMRUFTRS5t
ZCkgd2l0aCB0aGUgcmVsZWFzZSBzY2hlZHVsZSB0byB0aGUgc291cmNlIGNvZGUgb3IgdXBk
YXRlIGFuDQo+IGV4aXN0aW5nIG9uZSAoeGVuLXJlbGVhc2UtbWFuYWdlbWVudC5wYW5kb2Mp
LiBJIHRoaW5rIGl0IHdpbGwgaGVscCB0bw0KPiBmaW5kIHRoZSBmaW5hbCByZWxlYXNlIHNj
aGVkdWxlIGZvciB0aGUgbmVhcmVzdCByZWxlYXNlLiBGb3IgZXhhbXBsZSwNCj4gZm9yIHRo
ZSBwcmV2aW91cyByZWxlYXNlLCB0aGVyZSBhcmUgYSBsb3Qgb2YgZW1haWxzIHdpdGggcHJv
cG9zZWQNCj4gc2NoZWR1bGVzLCBwb2xscyBvZiBYZW4gcmVsZWFzZSBzY2hlZHVsZXMsIGFu
ZCBJIGZvdW5kIHRoZSBmaW5hbA0KPiByZWxlYXNlIHNjaGVkdWxlIGluIGp1c3Qgb25lIG9m
IHRoZSByZXBsaWVzIChidXQgcHJvYmFibHkgSSBtaXNzZWQNCj4gc29tZXRoaW5nKS4NCg0K
V2hhdCBhYm91dCBwdXR0aW5nIGl0IGludG8gdGhlIHdpa2kgdW5kZXIgWGVuX1Byb2plY3Rf
WC5ZWV9SZWxlYXNlX05vdGVzPw0KVGhhdCB3YXkgaXQgd291bGQgYWxyZWFkeSBiZSBhY2Nl
c3NpYmxlIHZpYSBTVVBQT1JULm1kIChpbiB0aGUgd2lraSB1bmRlcg0KaHR0cHM6Ly94ZW5i
aXRzLnhlbi5vcmcvZG9jcy91bnN0YWJsZS1zdGFnaW5nL3N1cHBvcnQtbWF0cml4Lmh0bWwg
KS4NCg0KDQpKdWVyZ2VuDQo=
--------------bopPjl3JN87y0A9PseU7SoxU
Content-Type: application/pgp-keys; name="OpenPGP_0xB0DE9DD628BF132F.asc"
Content-Disposition: attachment; filename="OpenPGP_0xB0DE9DD628BF132F.asc"
Content-Description: OpenPGP public key
Content-Transfer-Encoding: quoted-printable

-----BEGIN PGP PUBLIC KEY BLOCK-----

xsBNBFOMcBYBCACgGjqjoGvbEouQZw/ToiBg9W98AlM2QHV+iNHsEs7kxWhKMjri
oyspZKOBycWxw3ie3j9uvg9EOB3aN4xiTv4qbnGiTr3oJhkB1gsb6ToJQZ8uxGq2
kaV2KL9650I1SJvedYm8Of8Zd621lSmoKOwlNClALZNew72NjJLEzTalU1OdT7/i
1TXkH09XSSI8mEQ/ouNcMvIJNwQpd369y9bfIhWUiVXEK7MlRgUG6MvIj6Y3Am/B
BLUVbDa4+gmzDC9ezlZkTZG2t14zWPvxXP3FAp2pkW0xqG7/377qptDmrk42GlSK
N4z76ELnLxussxc7I2hx18NUcbP8+uty4bMxABEBAAHNHEp1ZXJnZW4gR3Jvc3Mg
PGpnQHBmdXBmLm5ldD7CwHkEEwECACMFAlOMcBYCGwMHCwkIBwMCAQYVCAIJCgsE
FgIDAQIeAQIXgAAKCRCw3p3WKL8TL0KdB/93FcIZ3GCNwFU0u3EjNbNjmXBKDY4F
UGNQH2lvWAUy+dnyThpwdtF/jQ6j9RwE8VP0+NXcYpGJDWlNb9/JmYqLiX2Q3Tye
vpB0CA3dbBQp0OW0fgCetToGIQrg0MbD1C/sEOv8Mr4NAfbauXjZlvTj30H2jO0u
+6WGM6nHwbh2l5O8ZiHkH32iaSTfN7Eu5RnNVUJbvoPHZ8SlM4KWm8rG+lIkGurq
qu5gu8q8ZMKdsdGC4bBxdQKDKHEFExLJK/nRPFmAuGlId1E3fe10v5QL+qHI3EIP
tyfE7i9Hz6rVwi7lWKgh7pe0ZvatAudZ+JNIlBKptb64FaiIOAWDCx1SzR9KdWVy
Z2VuIEdyb3NzIDxqZ3Jvc3NAc3VzZS5jb20+wsB5BBMBAgAjBQJTjHCvAhsDBwsJ
CAcDAgEGFQgCCQoLBBYCAwECHgECF4AACgkQsN6d1ii/Ey/HmQf/RtI7kv5A2PS4
RF7HoZhPVPogNVbC4YA6lW7DrWf0teC0RR3MzXfy6pJ+7KLgkqMlrAbN/8Dvjoz7
8X+5vhH/rDLa9BuZQlhFmvcGtCF8eR0T1v0nC/nuAFVGy+67q2DH8As3KPu0344T
BDpAvr2uYM4tSqxK4DURx5INz4ZZ0WNFHcqsfvlGJALDeE0LhITTd9jLzdDad1pQ
SToCnLl6SBJZjDOX9QQcyUigZFtCXFst4dlsvddrxyqT1f17+2cFSdu7+ynLmXBK
7abQ3rwJY8SbRO2iRulogc5vr/RLMMlscDAiDkaFQWLoqHHOdfO9rURssHNN8WkM
nQfvUewRz80hSnVlcmdlbiBHcm9zcyA8amdyb3NzQG5vdmVsbC5jb20+wsB5BBMB
AgAjBQJTjHDXAhsDBwsJCAcDAgEGFQgCCQoLBBYCAwECHgECF4AACgkQsN6d1ii/
Ey8PUQf/ehmgCI9jB9hlgexLvgOtf7PJnFOXgMLdBQgBlVPO3/D9R8LtF9DBAFPN
hlrsfIG/SqICoRCqUcJ96Pn3P7UUinFG/I0ECGF4EvTE1jnDkfJZr6jrbjgyoZHi
w/4BNwSTL9rWASyLgqlA8u1mf+c2yUwcGhgkRAd1gOwungxcwzwqgljf0N51N5Jf
VRHRtyfwq/ge+YEkDGcTU6Y0sPOuj4Dyfm8fJzdfHNQsWq3PnczLVELStJNdapwP
OoE+lotufe3AM2vAEYJ9rTz3Cki4JFUsgLkHFqGZarrPGi1eyQcXeluldO3m91NK
/1xMI3/+8jbO0tsn1tqSEUGIJi7ox80eSnVlcmdlbiBHcm9zcyA8amdyb3NzQHN1
c2UuZGU+wsB5BBMBAgAjBQJTjHDrAhsDBwsJCAcDAgEGFQgCCQoLBBYCAwECHgEC
F4AACgkQsN6d1ii/Ey+LhQf9GL45eU5vOowA2u5N3g3OZUEBmDHVVbqMtzwlmNC4
k9Kx39r5s2vcFl4tXqW7g9/ViXYuiDXb0RfUpZiIUW89siKrkzmQ5dM7wRqzgJpJ
wK8Bn2MIxAKArekWpiCKvBOB/Cc+3EXE78XdlxLyOi/NrmSGRIov0karw2RzMNOu
5D+jLRZQd1Sv27AR+IP3I8U4aqnhLpwhK7MEy9oCILlgZ1QZe49kpcumcZKORmzB
TNh30FVKK1EvmV2xAKDoaEOgQB4iFQLhJCdP1I5aSgM5IVFdn7v5YgEYuJYx37Io
N1EblHI//x/e2AaIHpzK5h88NEawQsaNRpNSrcfbFmAg987ATQRTjHAWAQgAyzH6
AOODMBjgfWE9VeCgsrwH3exNAU32gLq2xvjpWnHIs98ndPUDpnoxWQugJ6MpMncr
0xSwFmHEgnSEjK/PAjppgmyc57BwKII3sV4on+gDVFJR6Y8ZRwgnBC5mVM6JjQ5x
Dk8WRXljExRfUX9pNhdE5eBOZJrDRoLUmmjDtKzWaDhIg/+1Hzz93X4fCQkNVbVF
LELU9bMaLPBG/x5q4iYZ2k2ex6d47YE1ZFdMm6YBYMOljGkZKwYde5ldM9mo45mm
we0icXKLkpEdIXKTZeKDO+Hdv1aqFuAcccTg9RXDQjmwhC3yEmrmcfl0+rPghO0I
v3OOImwTEe4co3c1mwARAQABwsBfBBgBAgAJBQJTjHAWAhsMAAoJELDendYovxMv
Q/gH/1ha96vm4P/L+bQpJwrZ/dneZcmEwTbe8YFsw2V/Buv6Z4Mysln3nQK5ZadD
534CF7TDVft7fC4tU4PONxF5D+/tvgkPfDAfF77zy2AH1vJzQ1fOU8lYFpZXTXIH
b+559UqvIB8AdgR3SAJGHHt4RKA0F7f5ipYBBrC6cyXJyyoprT10EMvU8VGiwXvT
yJz3fjoYsdFzpWPlJEBRMedCot60g5dmbdrZ5DWClAr0yau47zpWj3enf1tLWaqc
suylWsviuGjKGw7KHQd3bxALOknAp4dN3QwBYCKuZ7AddY9yjynVaD5X7nF9nO5B
jR/i1DG86lem3iBDXzXsZDn8R3/CwO0EGAEIACAWIQSFEmdy6PYElKXQl/ew3p3W
KL8TLwUCWt3w0AIbAgCBCRCw3p3WKL8TL3YgBBkWCAAdFiEEUy2wekH2OPMeOLge
gFxhu0/YY74FAlrd8NAACgkQgFxhu0/YY75NiwD/fQf/RXpyv9ZX4n8UJrKDq422
bcwkujisT6jix2mOOwYBAKiip9+mAD6W5NPXdhk1XraECcIspcf2ff5kCAlG0DIN
aTUH/RIwNWzXDG58yQoLdD/UPcFgi8GWtNUp0Fhc/GeBxGipXYnvuWxwS+Qs1Qay
7/Nbal/v4/eZZaWs8wl2VtrHTS96/IF6q2o0qMey0dq2AxnZbQIULiEndgR625EF
RFg+IbO4ldSkB3trsF2ypYLij4ZObm2casLIP7iB8NKmQ5PndL8Y07TtiQ+Sb/wn
g4GgV+BJoKdDWLPCAlCMilwbZ88Ijb+HF/aipc9hsqvW/hnXC2GajJSAY3Qs9Mib
4Hm91jzbAjmp7243pQ4bJMfYHemFFBRaoLC7ayqQjcsttN2ufINlqLFPZPR/i3IX
kt+z4drzFUyEjLM1vVvIMjkUoJs=3D
=3DeeAB
-----END PGP PUBLIC KEY BLOCK-----

--------------bopPjl3JN87y0A9PseU7SoxU--

--------------kYp6rgkP7vMRAhtfrv088vgt--

--------------o8VjT7LNoJWb3XjoVuhJQawp
Content-Type: application/pgp-signature; name="OpenPGP_signature.asc"
Content-Description: OpenPGP digital signature
Content-Disposition: attachment; filename="OpenPGP_signature.asc"

-----BEGIN PGP SIGNATURE-----

wsB5BAABCAAjFiEEhRJncuj2BJSl0Jf3sN6d1ii/Ey8FAmWU9kwFAwAAAAAACgkQsN6d1ii/Ey9k
3Af7B2hyWy1zgUWRr2I2mTdlbJxMTWof7NBTH5H1Ih3gv9IIRP/D70ROU4WSQCkrhHlbxJphC2Pj
/DYdbjAT0Xl5xtYUBCrS5ooLVo78ZbxUViSL8CYmFwA0TGO8vYRO0Ms7K3ocRDyQCds4kjskjxj7
P2MbSIZ4TsLSgdAmqZOZxSzmjGo7Wkywze3oWi0bjLGSVu8kaBOl+c+nk8K2qpy3+129MBASAinL
I81LD7xDDKpv7Cc5P+Dy+uM3pRRXxBsWkIVhYQLhvunzS93bpDjJBt/kelpZKL+Ie69vg2NG5z9K
NRamP/Ch/llX9MQWxXRyt11qeVv2OWWvoCuKP3XCsg==
=5j8e
-----END PGP SIGNATURE-----

--------------o8VjT7LNoJWb3XjoVuhJQawp--


From xen-devel-bounces@lists.xenproject.org Wed Jan 03 05:58:53 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 03 Jan 2024 05:58:53 +0000
Received: from list by lists.xenproject.org with outflank-mailman.660893.1030569 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rKuH9-0003Dn-3L; Wed, 03 Jan 2024 05:58:47 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 660893.1030569; Wed, 03 Jan 2024 05:58:47 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rKuH9-0003Dg-02; Wed, 03 Jan 2024 05:58:47 +0000
Received: by outflank-mailman (input) for mailman id 660893;
 Wed, 03 Jan 2024 05:58:46 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=08Ob=IN=amd.com=Ray.Huang@srs-se1.protection.inumbo.net>)
 id 1rKuH7-0003DY-UM
 for xen-devel@lists.xenproject.org; Wed, 03 Jan 2024 05:58:46 +0000
Received: from NAM11-CO1-obe.outbound.protection.outlook.com
 (mail-co1nam11on20600.outbound.protection.outlook.com
 [2a01:111:f403:2416::600])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 25b26b3e-a9fd-11ee-9b0f-b553b5be7939;
 Wed, 03 Jan 2024 06:58:43 +0100 (CET)
Received: from SJ2PR12MB8690.namprd12.prod.outlook.com (2603:10b6:a03:540::10)
 by SA1PR12MB8985.namprd12.prod.outlook.com (2603:10b6:806:377::18)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7135.25; Wed, 3 Jan
 2024 05:58:36 +0000
Received: from SJ2PR12MB8690.namprd12.prod.outlook.com
 ([fe80::9b8e:816d:20b9:9845]) by SJ2PR12MB8690.namprd12.prod.outlook.com
 ([fe80::9b8e:816d:20b9:9845%5]) with mapi id 15.20.7159.013; Wed, 3 Jan 2024
 05:58:35 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 25b26b3e-a9fd-11ee-9b0f-b553b5be7939
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=BWkwc2bkoSvvQln1Gu2zjFUHISCpFmAhPuFfN1zygBK7ZYWwm0uuZpCGkINDDygrQqMvl8cIB3IGt2wEFta6hoXG/r2xyp5FAhqWLFoTAjDAPMJvJtEZnihC3sg7C5hKo3wHosUJ6PsmEiIvH/PaVuUr+DHD3fXI/9Dw0JhlXycP9xl/jELa5PNmHYba+tNVWHA6Dl3QTPwFN5jYTyr506/4aRKmFAsC+uBs2h2WN0VqcOJh9RPtc7snyJtyI7bnf0+nALIUE+tOCXit5Es5EaoWgyxpIm6z4Di9LK5hRMa4NxAJZvTWo5fcMH+96xbQVshiFKGYaIUWGLZlhqrrug==
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=k1jaHvZHUzXcrhv92fjJ0baTkP8/HSKem5AfXymKesA=;
 b=TUGq9agQZNvJetWNsZl0y7sga6Kx46qNC95sJt6iNSVr3Zp+sCXrfLni4bud8eB4cEZkBVQnN/I/biDYzJONfsUOdvF4VM2/Ix5VZs/jy8H6se18xXNldpFI1hUaHAsBtoxOzM0EIBnf+1/fJNImXbJ0QOYkCWXYvBlRGFdEDnzHyy1ecRSkz33fi33bi3spH/zQzR/Fi5WoiCybnrVcaojW4uEFN77XJ+KZ86vPzFNlw9wF59z9dn07BHdrme5thDDuZ3W0BRdNsDhey1Nmx3Val4kqDLJAtBwIcNe+D9FPP6IVjUi6CYOpsqsdnIJMF1P6Zodi6zdHX4Mlns0oGw==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=amd.com; dmarc=pass action=none header.from=amd.com; dkim=pass
 header.d=amd.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=k1jaHvZHUzXcrhv92fjJ0baTkP8/HSKem5AfXymKesA=;
 b=TADxnQ0GmJ76D2TRBLyYnUP9dtE1m9j+Uwa67bXlGEyNkDe8sqHosdYKEykA9QiWQ+TtRc8SgCRPAxcX1D1Y+DnuJn2oLxScuusn1gfpnik+UfljMTSDc4/xYpssGzmJJuJ+0BJm/VqkcsZivPzizHMzOdkQOX+PD35U1kYonH8=
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=amd.com;
Date: Wed, 3 Jan 2024 13:58:09 +0800
From: Huang Rui <ray.huang@amd.com>
To: Akihiko Odaki <akihiko.odaki@daynix.com>
Cc: =?iso-8859-1?Q?Marc-Andr=E9?= Lureau <marcandre.lureau@gmail.com>,
	Philippe =?iso-8859-1?Q?Mathieu-Daud=E9?= <philmd@linaro.org>,
	Gerd Hoffmann <kraxel@redhat.com>,
	"Michael S . Tsirkin" <mst@redhat.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Anthony PERARD <anthony.perard@citrix.com>,
	Antonio Caggiano <quic_acaggian@quicinc.com>,
	"Dr . David Alan Gilbert" <dgilbert@redhat.com>,
	Robert Beckett <bob.beckett@collabora.com>,
	Dmitry Osipenko <dmitry.osipenko@collabora.com>,
	Gert Wollny <gert.wollny@collabora.com>,
	Alex =?iso-8859-1?Q?Benn=E9e?= <alex.bennee@linaro.org>,
	"qemu-devel@nongnu.org" <qemu-devel@nongnu.org>,
	"xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>,
	Gurchetan Singh <gurchetansingh@chromium.org>,
	"ernunes@redhat.com" <ernunes@redhat.com>,
	Alyssa Ross <hi@alyssa.is>,
	Roger Pau =?iso-8859-1?Q?Monn=E9?= <roger.pau@citrix.com>,
	"Deucher, Alexander" <Alexander.Deucher@amd.com>,
	"Stabellini, Stefano" <stefano.stabellini@amd.com>,
	"Koenig, Christian" <Christian.Koenig@amd.com>,
	"Ragiadakou, Xenia" <Xenia.Ragiadakou@amd.com>,
	"Pelloux-Prayer, Pierre-Eric" <Pierre-eric.Pelloux-prayer@amd.com>,
	"Huang, Honglei1" <Honglei1.Huang@amd.com>,
	"Zhang, Julia" <Julia.Zhang@amd.com>,
	"Chen, Jiqian" <Jiqian.Chen@amd.com>
Subject: Re: [PATCH v6 01/11] linux-headers: Update to kernel headers to add
 venus capset
Message-ID: <ZZT3cSw3dKai90LV@amd.com>
References: <20231219075320.165227-1-ray.huang@amd.com>
 <20231219075320.165227-2-ray.huang@amd.com>
 <6adff6d2-7c58-4c78-93a5-5a4594a60d27@daynix.com>
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <6adff6d2-7c58-4c78-93a5-5a4594a60d27@daynix.com>
X-ClientProxiedBy: SI2PR06CA0003.apcprd06.prod.outlook.com
 (2603:1096:4:186::14) To SJ2PR12MB8690.namprd12.prod.outlook.com
 (2603:10b6:a03:540::10)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: SJ2PR12MB8690:EE_|SA1PR12MB8985:EE_
X-MS-Office365-Filtering-Correlation-Id: 1365a7eb-6b86-4009-248f-08dc0c210624
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam: BCL:0;
X-Microsoft-Antispam-Message-Info:
	nQGuTkc3yY37QjaxTd55dW+n7VJqQ3MNdGOYIpzamNs4x7fWsKlqq/8mbuo7IjlPyCdNaJ7cPaz6qYi6gZXg9tuURTIp0fAsa31rqqDCbR4s54uzg0t/ugls1vdRrnr5KvUZZQFsDE0OrorG0oqp5mjRiSZVcaqhzBBQTQ7nS84Ha+pEu9Vmbja3iDbFLekDBd7uqeDSr89yTJQxLjds/vF2u99ZHPLi/n/fi9oMsdzGzceQw5TFVleNI8cP10CfmklEgLGiHI0SIZo6i5fnoZA0Tz1uCDS8tBpQ5nq4r61XvOdQjnf1YvlVSMdGRk8Z+lRyKGh3ocT/hd9jgRUr/puyTEAPlTVMRqcDQgUPoH2Nsj1gfw7Qb5pA7gBbqaQuOJatQjsrUFjIf47WUEtZlgijv8VAAZmn/OLuexunzHpipZqiW9Psi1bTVbU8jdVPCjK9AWKfZ8RoG7LhjH+NLzAjpJlmzJUcDi0aZ+/wpYUyz7z5nzcnJX0jlL8vSeHdpGnuIu8uIIgHzG17aS0oSafExt+H2++zO4KVaA4z7/c=
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SJ2PR12MB8690.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230031)(346002)(366004)(396003)(136003)(39860400002)(376002)(230922051799003)(451199024)(1800799012)(186009)(64100799003)(26005)(4744005)(2616005)(38100700002)(54906003)(8936002)(8676002)(5660300002)(316002)(2906002)(4326008)(41300700001)(6666004)(7416002)(6916009)(966005)(83380400001)(15650500001)(6486002)(66946007)(6512007)(478600001)(66556008)(6506007)(86362001)(53546011)(66476007)(36756003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?us-ascii?Q?VxCOgNodG/ELCQUEB25feEZpmWLvedF8xTfhcmxTFfUvxAkSUijjXwnWR0kh?=
 =?us-ascii?Q?Kedt2mYAt/9KPZEcLQDCeidvqjAesbKopD/oX7nn/fkUHIcgdbgEf7XDYnXZ?=
 =?us-ascii?Q?v4jxjnZxKQ+GV+wBV3meEZXstVI5aK2EKWam26AifuBC/jp24xVdoOUtFXai?=
 =?us-ascii?Q?lF0w8OxMU58SlT3m+zX0mkFVV/CvcH+aJ8dFlcqBAru3MrQpBjFuPlPul7W1?=
 =?us-ascii?Q?6XoLiju8MDT0bEDe1j/GWCsF7PWA63cUqxDY2wL/3kKJdEBat9wJTVofyf22?=
 =?us-ascii?Q?Y2UrCVNLuUOUsswwkNdMeE4OIypE7m1ka+qe1pPhPwaj6yv9pNjdiPztQACx?=
 =?us-ascii?Q?qzjELcAQdXhGE9u+7AP1g6yOp0j4H5hvOxjYvSBNkSdWPg84XZ71pouoOHUP?=
 =?us-ascii?Q?GujPvj7d2zQcs3wxSMI57oQtPqeYI6908KYByH2OG7nYPruCpnodldso5QJR?=
 =?us-ascii?Q?JUzlYZF7Da1YSbNqChyIBH52BOO337qGNKKLBXBVHTUlh3yAgFAOY2NqbILj?=
 =?us-ascii?Q?4E8ffmnYGHQpkGKpJZ484XI32tUDBo64lLgJGqrFsJEJfHOlO1LNIBfVR24F?=
 =?us-ascii?Q?yzR9jMQjDqmHZti1ezt3V7DllnWfJ3rNDh3t9nJFl2oOGsFs+QKa7b870Qqn?=
 =?us-ascii?Q?NG9dN9XlNmHR3Qs6TysIYUdlqIqImVK79PxOOV+Dddv1Ppi93rQroWZGE94X?=
 =?us-ascii?Q?8JJWvc8CPNj95mtUiUtK2IX0+GLXW300lKzQUfioR+XBaENzbj7tyFsjWDiT?=
 =?us-ascii?Q?3xGWYo0LxUw8Lj4DHQOsas0SLfRTxlVQnLvwMpu6IzCVnaC19d6yeLzy0Oou?=
 =?us-ascii?Q?c/PtpG1KeGRJEbyt9vimJiY2i8dzBi4EskakRHMnrefy0aHn5lj6MF18YSHk?=
 =?us-ascii?Q?CMQMWNEPIPYL75CVmtP/k9N9oOAMIjmYJQm2Td9UnO+GPUNKOJEdpe/Xac7p?=
 =?us-ascii?Q?sGGs4MzM040ADRkkip13NYf2uIJSJZVXgSPVbrMGrMxihrqGoPUvAS3RAkb3?=
 =?us-ascii?Q?deSQIK3IgVXopkulIxKMCm4fa0la4WZN8NOSmK/+yXK+nBNlDMlA3lcD4bmp?=
 =?us-ascii?Q?uNSE8ln24Bb9lWdoFDIYR+UPlp/X9V37aOgIaJS92Bo5VqK5HuE+0xDDWzUO?=
 =?us-ascii?Q?2S3HQHsQxVJOPczv8sTYQfBd36Exl+SgVfj+YHjCAiPrHw0gXYMGsqLE/E7Y?=
 =?us-ascii?Q?J6SSdIA4GBOIllsYv5ZyDMG13oSQ1NR0dl7o/AjrbWh2smHgBNlldnQ7C0eK?=
 =?us-ascii?Q?JBbajGCU4dfWD+D+8TrwtjB7GM2ARJ3HzruR6YHpCQnkOPSM9pAa8twGTu7I?=
 =?us-ascii?Q?MxY/uWalg1bapDM4+yAIoSfYQ9AzKCAIu0hU9rng2CKR84kaMOYhf1kcH2jE?=
 =?us-ascii?Q?vdMYRrwGqwfLbCqEMLMOY5lL9uElpI5j9GpEuDAzUwJXNd2stOgCbtf9GOOf?=
 =?us-ascii?Q?SwGhH1g5NGL1ckE+cJr/K2/iG6E68uj7nYJtNXRKPNu+y76hF54y5It/Q1O9?=
 =?us-ascii?Q?AFekXhx5nTJEJffdfk6AN3nll4ZsJQToTIldVlLvmDIJfxJlQ6+7Y/Y2Okih?=
 =?us-ascii?Q?Drn7tlFSnq+oACZbH4yrv/2kiiKk0j+fXHmJdNEp?=
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 1365a7eb-6b86-4009-248f-08dc0c210624
X-MS-Exchange-CrossTenant-AuthSource: SJ2PR12MB8690.namprd12.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Jan 2024 05:58:35.8358
 (UTC)
X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted
X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d
X-MS-Exchange-CrossTenant-MailboxType: HOSTED
X-MS-Exchange-CrossTenant-UserPrincipalName: E4ugCWreKYj5v/BwtnxU5We6BBHdHAgI/m6kaasXHBCSUdONHxv8QL5Z1vHnGDvkf+zL4pvWNMSE0/dQk9xrNg==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA1PR12MB8985

On Tue, Dec 19, 2023 at 08:20:22PM +0800, Akihiko Odaki wrote:
> On 2023/12/19 16:53, Huang Rui wrote:
> > Sync up kernel headers to update venus macro till they are merged into
> > mainline.
> 
> Thanks for sorting things out with the kernel and spec.
> 
> > 
> > Signed-off-by: Huang Rui <ray.huang@amd.com>
> > ---
> > 
> > Changes in v6:
> > - Venus capset is applied in kernel, so update it in qemu for future use.
> > 
> > https://lore.kernel.org/lkml/b79dcf75-c9e8-490e-644f-3b97d95f7397@collabora.com/
> > https://cgit.freedesktop.org/drm-misc/commit/?id=216d86b9a430f3280e5b631c51e6fd1a7774cfa0
> Please include the link to the upstream commit in the commit message.

OK, I will add this info in qemu commit message.

Thanks,
Ray


From xen-devel-bounces@lists.xenproject.org Wed Jan 03 06:04:15 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 03 Jan 2024 06:04:15 +0000
Received: from list by lists.xenproject.org with outflank-mailman.660898.1030578 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rKuML-0005C9-Lu; Wed, 03 Jan 2024 06:04:09 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 660898.1030578; Wed, 03 Jan 2024 06:04:09 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rKuML-0005C2-JK; Wed, 03 Jan 2024 06:04:09 +0000
Received: by outflank-mailman (input) for mailman id 660898;
 Wed, 03 Jan 2024 06:04:08 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=08Ob=IN=amd.com=Ray.Huang@srs-se1.protection.inumbo.net>)
 id 1rKuMK-0005Bg-MW
 for xen-devel@lists.xenproject.org; Wed, 03 Jan 2024 06:04:08 +0000
Received: from NAM12-MW2-obe.outbound.protection.outlook.com
 (mail-mw2nam12on20625.outbound.protection.outlook.com
 [2a01:111:f400:fe5a::625])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id e648aa3d-a9fd-11ee-9b0f-b553b5be7939;
 Wed, 03 Jan 2024 07:04:06 +0100 (CET)
Received: from SJ2PR12MB8690.namprd12.prod.outlook.com (2603:10b6:a03:540::10)
 by SA1PR12MB8985.namprd12.prod.outlook.com (2603:10b6:806:377::18)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7135.25; Wed, 3 Jan
 2024 06:04:02 +0000
Received: from SJ2PR12MB8690.namprd12.prod.outlook.com
 ([fe80::9b8e:816d:20b9:9845]) by SJ2PR12MB8690.namprd12.prod.outlook.com
 ([fe80::9b8e:816d:20b9:9845%5]) with mapi id 15.20.7159.013; Wed, 3 Jan 2024
 06:04:02 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: e648aa3d-a9fd-11ee-9b0f-b553b5be7939
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=F2A8HZCxZTFrJ6e3+CkxMHYb/AinLS3YUa8yfIVsz0RtyHKlmIv9LN9cxFFwUj85XZSeTZqkh6YZvrrgoebGM7ATdB0BryUsSJncv6MMKmEKvn7uwb8RkqFuH+QTaTqdAzUEUTQhCfJ6y4oyA+sBF+t2bQyTE5QbNjHZ2hDDUSZEe4Ot3b6GtyPQA5R4chAMzyTKkFzJ1Z7vogIoAd9JJaEWy2B//tkA1KUO5yAdCQChdOHz1QpnWDpaZN5Gyk+VU/SQGtrgJTGYO4Td668OFZKYnvhT5tLHt3XzAH5MStZ24zL2E3uoPeju0/MekgXqPWvCq0l3N8TpQoLugGFF1w==
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=XAORpwd4Qt+iAovmqjXfno/ufuH52c3GzEWiKJ85OdE=;
 b=n5DelmL4IYWcdnwfCLKy+uZp0N9+yuKiN7ub/YoWW52Nwkiji9bBvrFXltYynTxGPiD2RQYuls4tpdh4lsUCOU44vx4o06JKl0p454dVoIDuMALh/dp+cIY0yB3vtFezcAvJEdKI4PhK9XFS9VkrKco6ctFHn74SE/+kHcXR3qJ15cLlV+VsDEzi0ZNBRu+WHFUgBagGanPyAma7z1cBytQCpmPxMpB/EcB20J7Hpm0QOeEa7s9wrZa8U7ohPkLOImkCAh3IpcADvx3oGC28lf1Yl8xTj4Xox8RVPQg9QGgicZMJnq/4uJLekoftbvurDfXh4ZuPc//jIAFXXiPYUA==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=amd.com; dmarc=pass action=none header.from=amd.com; dkim=pass
 header.d=amd.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=XAORpwd4Qt+iAovmqjXfno/ufuH52c3GzEWiKJ85OdE=;
 b=GysBy70jJk3wulT5f0PldUHljJDITAPzMu0uEaPLCFjsOEzRg5YMdeoiln2AIiDRT4B1s6mjqv7Ee+0iW7go5k30WQTXTmHtEm2zXEcuPiubj/UW7ylDubv+hjYYvHcX3dmGxWwar3yfOa5hXNWUElQBmbY+djE56DlZqJ5I91A=
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=amd.com;
Date: Wed, 3 Jan 2024 14:03:35 +0800
From: Huang Rui <ray.huang@amd.com>
To: Peter Maydell <peter.maydell@linaro.org>
Cc: Akihiko Odaki <akihiko.odaki@daynix.com>,
	=?iso-8859-1?Q?Marc-Andr=E9?= Lureau <marcandre.lureau@gmail.com>,
	Philippe =?iso-8859-1?Q?Mathieu-Daud=E9?= <philmd@linaro.org>,
	Gerd Hoffmann <kraxel@redhat.com>,
	"Michael S . Tsirkin" <mst@redhat.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Anthony PERARD <anthony.perard@citrix.com>,
	Antonio Caggiano <quic_acaggian@quicinc.com>,
	"Dr . David Alan Gilbert" <dgilbert@redhat.com>,
	Robert Beckett <bob.beckett@collabora.com>,
	Dmitry Osipenko <dmitry.osipenko@collabora.com>,
	Gert Wollny <gert.wollny@collabora.com>,
	Alex =?iso-8859-1?Q?Benn=E9e?= <alex.bennee@linaro.org>,
	"qemu-devel@nongnu.org" <qemu-devel@nongnu.org>,
	"xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>,
	Gurchetan Singh <gurchetansingh@chromium.org>,
	"ernunes@redhat.com" <ernunes@redhat.com>,
	Alyssa Ross <hi@alyssa.is>,
	Roger Pau =?iso-8859-1?Q?Monn=E9?= <roger.pau@citrix.com>,
	"Deucher, Alexander" <Alexander.Deucher@amd.com>,
	"Stabellini, Stefano" <stefano.stabellini@amd.com>,
	"Koenig, Christian" <Christian.Koenig@amd.com>,
	"Ragiadakou, Xenia" <Xenia.Ragiadakou@amd.com>,
	"Pelloux-Prayer, Pierre-Eric" <Pierre-eric.Pelloux-prayer@amd.com>,
	"Huang, Honglei1" <Honglei1.Huang@amd.com>,
	"Zhang, Julia" <Julia.Zhang@amd.com>,
	"Chen, Jiqian" <Jiqian.Chen@amd.com>
Subject: Re: [PATCH v6 01/11] linux-headers: Update to kernel headers to add
 venus capset
Message-ID: <ZZT4t6+VkVrn8nvd@amd.com>
References: <20231219075320.165227-1-ray.huang@amd.com>
 <20231219075320.165227-2-ray.huang@amd.com>
 <6adff6d2-7c58-4c78-93a5-5a4594a60d27@daynix.com>
 <ZYGe4GcFPt0k5PTM@amd.com>
 <CAFEAcA_=iedJw4BbNHrDALC4mL4g3ZEihsDbLkEzsy-1zAWFWw@mail.gmail.com>
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <CAFEAcA_=iedJw4BbNHrDALC4mL4g3ZEihsDbLkEzsy-1zAWFWw@mail.gmail.com>
X-ClientProxiedBy: SG2PR02CA0109.apcprd02.prod.outlook.com
 (2603:1096:4:92::25) To SJ2PR12MB8690.namprd12.prod.outlook.com
 (2603:10b6:a03:540::10)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: SJ2PR12MB8690:EE_|SA1PR12MB8985:EE_
X-MS-Office365-Filtering-Correlation-Id: 2dc094f5-7ac4-4e28-06ad-08dc0c21c88c
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam: BCL:0;
X-Microsoft-Antispam-Message-Info:
	ypB9wWckwpvZsUZWKlM1EhCaDGfgC9DSy7x9wvrEqcwTt8qJGpkUoqBKwYzGE8L9ZgKuVZo8nJ6ukE1a8BFjttibNYg4PRnZ1zEBL6sG/Tg0gR5FJ7AW1fLTlahMerfU5wM0+/V5Xr9tg6Tej3SwHEd7jr0tTLTGYtDg1xwf23kXHgCDXMri0U1Td8Sf/aj8luSIFRAK9BQowdUsbWB5F6iuJg5nWp81yEdrw6lOtF6AzaqrTpvEIXFexx4As9jP5fn+seec7y4IngfZBe+OsB0Tlo7nQ7qdWN8lx6BypDLqg8uI0AOMlWc6Yg9OXwyA6uvTmtjM7Gsva+KLGxFi/FYQRTg+LE8fWG/OCiEDOdy5WzWKDGVPPGpQx9MRoUCaQJeCFbMcBONcza6PJxo/0xizewmg+LRHzEtAtT5HIUAChOIcbsWllmsILN93FT0yf7zLIE++58VKcMC0rm9OIjS7VoOQmdLKjyL8xn2t6/Izpun6JyFF9nUOBuRObehE9g93S7ekx/GrFRhXnkkkkod0sGin49izKT5HZMJBfOAOltNW+hzH5vHg245zmwMeOm2IjpjdWhvUEuztJ/l/dDNJeliTa9kmfUbS9M2difo=
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SJ2PR12MB8690.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230031)(346002)(366004)(396003)(136003)(39860400002)(376002)(230922051799003)(451199024)(1800799012)(186009)(64100799003)(26005)(2616005)(38100700002)(54906003)(8936002)(8676002)(5660300002)(316002)(2906002)(4326008)(41300700001)(6666004)(7416002)(6916009)(966005)(83380400001)(15650500001)(6486002)(66946007)(6512007)(478600001)(66556008)(6506007)(86362001)(53546011)(66476007)(36756003)(67856001);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?us-ascii?Q?oHvGHGkaAUQT/68GX7Ht0QrEueosQ4cKzoSce0HplL7GKc2FLeFORzbjRCPS?=
 =?us-ascii?Q?gK6wXsTGvbhLkLSNu8QMc94e4ViR6DJBdD/XVRmCwLvfh8R3iSR0251x+wJx?=
 =?us-ascii?Q?8IT8mrPCUCrRedO3WcSZqvW+EG+ILPx1/Eb0OwbCsKDSEaAwlWyEaQdjT/YX?=
 =?us-ascii?Q?B4oZK0ud2D9fkuPiAMlUtLECW+PpZbHM16GzTMFJi6+K+RzmBPlEzoJcdY7b?=
 =?us-ascii?Q?olr817BAEWetyVyTq28VtTCQmo+Crg1nIscc4IZvmhWHGKQG1rSfe4/Afhgs?=
 =?us-ascii?Q?Hk1UTTFcylUobxvWRINMUgzMF2klgKOde4apEIk4TBISASmvA7i5JMVs9QWm?=
 =?us-ascii?Q?fFYezAU72zbBFU6/03kyF8iiUFq91UBZp+tiNrDuHchNQ7zaRnzMgagQ6wZS?=
 =?us-ascii?Q?/IJQmDl+QxgsSsQGkSYLw1qL/w18TSP2Xx3ZuYZfHYv2oX9ugt04+J+xJMbl?=
 =?us-ascii?Q?O6yX1akOukV2SVcnBkAOHlAPG2UsHJ5W5Q+Y6km/NCMH3JjN9VUgLcdKRD82?=
 =?us-ascii?Q?9baUvbABLUUhUoK3N9v58KNOw9yX2dePPVDBu+4tcmUY355HYYMQ5oSq+oGw?=
 =?us-ascii?Q?MgQ3EzEvG29sISktlZs5prm2TGn12AkplkPQv82/BUFu+ZXbTtCe7d4kercd?=
 =?us-ascii?Q?MMs9KxhABE+vUAWf+g3Iyv37/IUPq07oJYiwkLqkHpHuawoiQ+5vcieNeE4o?=
 =?us-ascii?Q?DPrSWIbLgI7HjxUMDrmYnCPs4CbR10Dj7Xwtybh7W4e1HTvWToLlQIFyuYw2?=
 =?us-ascii?Q?neagtXNQKwrfHG0RNyoakpjTmd10ngpjy1BQOk9YyVyeiufzv1Rp1vlM2kOJ?=
 =?us-ascii?Q?3i6z9OJZnFwBkftwfD8sBtpmb1AICi8NtjcbjqzzAWtrMU6tn/UAKbyOSvio?=
 =?us-ascii?Q?CWWQHw6Dr5d+vGzusB1Z8fYwwZa+EWVSIo8Ela7Kb6BmCvYMVC1sJRumZdu9?=
 =?us-ascii?Q?BMV17nfWXEvaNZuZh2CBrueRtQktQOx6mfZyw14K+A9P29yqabgYtNih7jsh?=
 =?us-ascii?Q?X0+gcfhuXnYC620AfuNR3G1aVMDmgwqT5TIocrUmRfj2+aX4fqyULJxi6dp8?=
 =?us-ascii?Q?kTO6inND8AfNWgLB2z7JJ/iaomul45x+XqFMhqDWlJkX/8bZukbO7pDxafxE?=
 =?us-ascii?Q?2ddBt4k9q8Mgv+yeWeHjfoqlOFKl3wXOmgxaTA1hP2EwZQtMxfhwlub7yhbz?=
 =?us-ascii?Q?UNdOopW2decJb1Zanbva56sve5kb5SsP4viZiHLhRA767GstL04F4pqeQxmV?=
 =?us-ascii?Q?+gUN+zoQPE/LBhOU8uzYfWbkJAC/SbcVhI2rtObypxx0Y8GelB5HuwmvrMJ3?=
 =?us-ascii?Q?FPIOpKRrJGebDY1dtHP4OTYA+9r5CvwWZGcLeycVoeGTw7vyybtvceYda9xO?=
 =?us-ascii?Q?9Xyp1B/jQMad6UUVFdZyyDbe4+AOuLnNAYMens4/zhNif6Ib5MbYcgWrE0Qk?=
 =?us-ascii?Q?1OOE4vAzAOhRZsNxYNco2WTvlEimyZ4QMHsc8olwriEmSqmrUtrVSDdBI7BM?=
 =?us-ascii?Q?niAYeLAjIcxIFNoDm9cgrmxMVHjf4L5+vWai5hbsp0ThUAO3UnUEAwpnGmI3?=
 =?us-ascii?Q?YmNQisOCc7pUdP7d4mRnBSCKIJlqKj8w6KPNdBR0?=
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 2dc094f5-7ac4-4e28-06ad-08dc0c21c88c
X-MS-Exchange-CrossTenant-AuthSource: SJ2PR12MB8690.namprd12.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Jan 2024 06:04:01.9493
 (UTC)
X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted
X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d
X-MS-Exchange-CrossTenant-MailboxType: HOSTED
X-MS-Exchange-CrossTenant-UserPrincipalName: 9nNy5piJRK7UcpmVhmjfxjvsV/HBM/hiEGZBOCkPp08EY9Pfxx+o3dLlJuzggF10ZzmYBUwQf0waFu9DJhTFYw==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA1PR12MB8985

On Tue, Dec 19, 2023 at 10:14:28PM +0800, Peter Maydell wrote:
> On Tue, 19 Dec 2023 at 13:49, Huang Rui <ray.huang@amd.com> wrote:
> >
> > On Tue, Dec 19, 2023 at 08:20:22PM +0800, Akihiko Odaki wrote:
> > > On 2023/12/19 16:53, Huang Rui wrote:
> > > > Sync up kernel headers to update venus macro till they are merged into
> > > > mainline.
> > >
> > > Thanks for sorting things out with the kernel and spec.
> > >
> > > >
> > > > Signed-off-by: Huang Rui <ray.huang@amd.com>
> > > > ---
> > > >
> > > > Changes in v6:
> > > > - Venus capset is applied in kernel, so update it in qemu for future use.
> > > >
> > > > https://lore.kernel.org/lkml/b79dcf75-c9e8-490e-644f-3b97d95f7397@collabora.com/
> > > > https://cgit.freedesktop.org/drm-misc/commit/?id=216d86b9a430f3280e5b631c51e6fd1a7774cfa0
> > > Please include the link to the upstream commit in the commit message.
> >
> > So far, it's in drm maintainers' branch not in kernel mainline yet. Do I
> > need to wait it to be merged into kernel mainline?
> 
> For an RFC patchset, no. For patches to be merged into QEMU
> the headers change must be in the kernel mainline, and the
> QEMU commit that updates our copy of the headers must be a
> full-sync done with scripts/update-linux-headers.sh, not a
> manual edit.
> 

Yes, according to the comment in previous series, I am using
update-linux-headers.sh to generate the patch. But here, the patch is not
merged in mainline yet.

Thanks,
Ray


From xen-devel-bounces@lists.xenproject.org Wed Jan 03 06:35:50 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 03 Jan 2024 06:35:50 +0000
Received: from list by lists.xenproject.org with outflank-mailman.660905.1030589 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rKuqt-0001jR-5g; Wed, 03 Jan 2024 06:35:43 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 660905.1030589; Wed, 03 Jan 2024 06:35:43 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rKuqt-0001jK-2n; Wed, 03 Jan 2024 06:35:43 +0000
Received: by outflank-mailman (input) for mailman id 660905;
 Wed, 03 Jan 2024 06:35:41 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=08Ob=IN=amd.com=Ray.Huang@srs-se1.protection.inumbo.net>)
 id 1rKuqr-0001jE-3E
 for xen-devel@lists.xenproject.org; Wed, 03 Jan 2024 06:35:41 +0000
Received: from NAM12-DM6-obe.outbound.protection.outlook.com
 (mail-dm6nam12on20613.outbound.protection.outlook.com
 [2a01:111:f400:fe59::613])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 4deef936-aa02-11ee-9b0f-b553b5be7939;
 Wed, 03 Jan 2024 07:35:38 +0100 (CET)
Received: from SJ2PR12MB8690.namprd12.prod.outlook.com (2603:10b6:a03:540::10)
 by DS7PR12MB8345.namprd12.prod.outlook.com (2603:10b6:8:e5::5) with
 Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.7135.25; Wed, 3 Jan 2024 06:35:34 +0000
Received: from SJ2PR12MB8690.namprd12.prod.outlook.com
 ([fe80::9b8e:816d:20b9:9845]) by SJ2PR12MB8690.namprd12.prod.outlook.com
 ([fe80::9b8e:816d:20b9:9845%5]) with mapi id 15.20.7159.013; Wed, 3 Jan 2024
 06:35:34 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 4deef936-aa02-11ee-9b0f-b553b5be7939
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=gehibU//sot9iPiOhBO0esNqKm28dDwBr/qnLOs5FXPa2DHNk5kaGzMOjHURKBy31IOL5F54oU3Hcbm8NgycQ6NvGbkOh9bHGJF2Ne6xhAmY5vI5QUCTEdnkRkS7JBnPswRdoDkdPM2aWMGM6FqWNneUWhAqNM/eS4p0PvRv7rIDmRZa+PbvdieF//Cu+TGfCsUZ6H6+Q8Tpv2+Dmd0r0aUpe7hV+WFWHSmMQ73UUidZdwUqdtKoqfVyCGFUtjkQ8acj9O09Y08dKcpPF7+mqq7W+oPUcOvtVRwMt/OF2zzWMhP2454rvAVo9fEKvfC11NxEs90hcoB1VltzjK0UhQ==
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=Y6qyFn0w4cpNDfCC4nkR+kAI3jEPiLbeAWsOtXh73NQ=;
 b=EMn4SUCl097RguofyHWa4J76Wvz7zPAGtdVJpHESRSTrm4IphE5HzdriOd85ug/uBN9crpZNo5h+6tY6UiOyDWfTBis3r2LIr8Akuz7OiwyTCLRy85t4ILIwF46hCTtmX3bsPFg9cbuYK7IKYCJvUCLMjvWuZ83t4ecopwauWJq8r42q5j521jXRn9YveSXit24HRl2i9mWZPGxBlLQkoQLPgK3mx4jFbgAG/dIhDsMlPcvOSXURga2mbEkbyhsMtiUhyqdBgNbyg3L3DITzzU96NCgNzQdJRlbSFFvrlbxKM+L0qSUO3yrAZRxddRMIvNdKr9AquLZaHdysZa0yGg==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=amd.com; dmarc=pass action=none header.from=amd.com; dkim=pass
 header.d=amd.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=Y6qyFn0w4cpNDfCC4nkR+kAI3jEPiLbeAWsOtXh73NQ=;
 b=TqmRbLMiHWGBd6l432FLYU0yV3h0F+aqagWYQcGgmTSCjNK0emLRM5NCE8Ooa9G0iVbYtGR+SreNJdWyJSrXQLcrbgrP7EznQAW2wuBr0c9WVqtfHeOVVATftJWY+MmQrOQAKdAM4Yje24bPw5UTYV1jurmr3Q7oW5iLPo+HJXM=
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=amd.com;
Date: Wed, 3 Jan 2024 14:35:08 +0800
From: Huang Rui <ray.huang@amd.com>
To: =?iso-8859-1?Q?Marc-Andr=E9?= Lureau <marcandre.lureau@gmail.com>,
	Akihiko Odaki <akihiko.odaki@daynix.com>
Cc: Peter Maydell <peter.maydell@linaro.org>,
	Philippe =?iso-8859-1?Q?Mathieu-Daud=E9?= <philmd@linaro.org>,
	Gerd Hoffmann <kraxel@redhat.com>,
	"Michael S . Tsirkin" <mst@redhat.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Anthony PERARD <anthony.perard@citrix.com>,
	Antonio Caggiano <quic_acaggian@quicinc.com>,
	"Dr . David Alan Gilbert" <dgilbert@redhat.com>,
	Robert Beckett <bob.beckett@collabora.com>,
	Dmitry Osipenko <dmitry.osipenko@collabora.com>,
	Gert Wollny <gert.wollny@collabora.com>,
	Alex =?iso-8859-1?Q?Benn=E9e?= <alex.bennee@linaro.org>,
	"qemu-devel@nongnu.org" <qemu-devel@nongnu.org>,
	"xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>,
	Gurchetan Singh <gurchetansingh@chromium.org>,
	"ernunes@redhat.com" <ernunes@redhat.com>,
	Alyssa Ross <hi@alyssa.is>,
	Roger Pau =?iso-8859-1?Q?Monn=E9?= <roger.pau@citrix.com>,
	"Deucher, Alexander" <Alexander.Deucher@amd.com>,
	"Stabellini, Stefano" <stefano.stabellini@amd.com>,
	"Koenig, Christian" <Christian.Koenig@amd.com>,
	"Ragiadakou, Xenia" <Xenia.Ragiadakou@amd.com>,
	"Pelloux-Prayer, Pierre-Eric" <Pierre-eric.Pelloux-prayer@amd.com>,
	"Huang, Honglei1" <Honglei1.Huang@amd.com>,
	"Zhang, Julia" <Julia.Zhang@amd.com>,
	"Chen, Jiqian" <Jiqian.Chen@amd.com>
Subject: Re: [PATCH v6 01/11] linux-headers: Update to kernel headers to add
 venus capset
Message-ID: <ZZUAHOiP0+nBKS8b@amd.com>
References: <20231219075320.165227-1-ray.huang@amd.com>
 <20231219075320.165227-2-ray.huang@amd.com>
 <6adff6d2-7c58-4c78-93a5-5a4594a60d27@daynix.com>
 <ZYGe4GcFPt0k5PTM@amd.com>
 <CAFEAcA_=iedJw4BbNHrDALC4mL4g3ZEihsDbLkEzsy-1zAWFWw@mail.gmail.com>
 <af89f683-2b6e-4ca1-aa37-8bedd12a781d@daynix.com>
 <CAJ+F1CJnanuw_VQ0DDwUMfRjwHwQAZ3yif4FANcKVHMZXH3dyg@mail.gmail.com>
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <CAJ+F1CJnanuw_VQ0DDwUMfRjwHwQAZ3yif4FANcKVHMZXH3dyg@mail.gmail.com>
X-ClientProxiedBy: SI2PR01CA0035.apcprd01.prod.exchangelabs.com
 (2603:1096:4:192::13) To SJ2PR12MB8690.namprd12.prod.outlook.com
 (2603:10b6:a03:540::10)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: SJ2PR12MB8690:EE_|DS7PR12MB8345:EE_
X-MS-Office365-Filtering-Correlation-Id: 65e84e6e-5ba4-46d4-3293-08dc0c263089
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam: BCL:0;
X-Microsoft-Antispam-Message-Info:
	zJLU2nUP0HIIRLEBeQncv1j2lAAVOdydVm6rDZ18pDyrPZtUEY3TswDhNjYuG5kJno34NMUrfW86iDTyWYUhCRo9jxjZsiFF3ZKqAtKFdqvGZFtNVru4Yfvlz8yrgt77UxQzXqs8HIUmOkTUcMGww2RvL4WZXBw9Ji+9fleJD3oG1MyOTSzXY6pysbI/UpKSjyJP66Bmnkg4fvmHhJHZD0xq+Ws+7H+MPbUaUY5i/wj7AhOEu1Xyob5HBKxix7/qEJvQjSQ42k/b+GJSFdeensoxV1K1pqhL8ppPZfrpha22oF9wC9FM5EsjSzQIwcpxrPX1DZxl9NQjFNJnfmuZjXmh4AZvmklOebdvJQGcgWqNttOEYoaeBKpVtYCFA8uMzDPTrkEe0FxjwskOtGhl+PmUdPzarwFk0pzaz1NshqDCcseB9qy5me0rVH9mdcOouazudZ93iOH/51vXCIQauKu3yjvW3zk+f2G8E4i+nNZM7Mrx3YgvFAdr9NpC3dnF0ww7CQt573wm0xvJFqfCzBXG5wmvRNU79DvKDq9MrD/2+BzOc1g+v7hdVFV5BQ8Yz9mo68V+6WwyBSUOXmwJXRYZ4nCMEMx+008FTCvIOJ7MGOTQ41q4AvFAltOD7hDBoehi+n143vsP9djkIKhHmw==
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SJ2PR12MB8690.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230031)(376002)(136003)(346002)(366004)(396003)(39860400002)(230173577357003)(230922051799003)(230273577357003)(1800799012)(451199024)(64100799003)(186009)(7416002)(5660300002)(2906002)(966005)(15650500001)(41300700001)(38100700002)(316002)(6666004)(478600001)(8936002)(6506007)(6486002)(36756003)(86362001)(53546011)(2616005)(26005)(83380400001)(6512007)(4326008)(8676002)(66476007)(110136005)(54906003)(66946007)(66556008)(66899024)(67856001);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?aW9qZjRaUVdIZy9SaWhIMlZha2p3NkRmRUYweVdKUC9EdllwSmp2dW80M3dZ?=
 =?utf-8?B?OGNVSU91d01nSUpoRVhETmw1d0pUQXBNbUtEa3ZnUmkrZWpNdGV0UWZvNy9Y?=
 =?utf-8?B?U0FXajJEbVdrcnpZdzlSc2YxTHdxTWg1dXRHOTRHNzFpcDI1clpkVCtzVG8x?=
 =?utf-8?B?WDM3eDhNc3duQWdKSDZreGNCVldaTFZtTnBXVGIzTkt2Z0UvUzlzUUZkaXdV?=
 =?utf-8?B?YUZuektVcVBIVS9HRHJCbzF6UkNyMTRTMFZOWFg5VlJMVlE4UDZCQTI3WExH?=
 =?utf-8?B?N0dNTDI2bVU0Sm1YSkJmWkdKQWNBMXI1YW5kMEpSZE56YmtpSnRMZVNwQTB6?=
 =?utf-8?B?ZUs2cTVYT2czOUdJYXE5Wmt2T1RNdGt3NlRGRXY1a3YreVBNakJWOGNLU1cz?=
 =?utf-8?B?cUNZZi9NY3hGem9XV2JBVDNaQ2xQbXZDbHVpSUlkWkU1NGFGSXVNWjRIcGZ6?=
 =?utf-8?B?b3ZvWVpxNVpVSHVXL0ZoMkhBWFpIZU4xVnRuYlEvUk5jYnJLODNwOXRCaTRj?=
 =?utf-8?B?V0Fyd0Y5MGxDMDM5TlFvakpkb1p0cjM1Z1Z5Q0lpa0E5bTBnelg0ZC9wcVpI?=
 =?utf-8?B?cjdyTG5PeHlheEc2d1hEcXFMM2pPbTFRTXF1U3lMQTJQZ0tPYUxkQ1BQUC8x?=
 =?utf-8?B?aTJ4NXJLZ2h1UlJpb2pkaHVGSVRHV2xNZXJoMU9lbGNBZGg3RGpqalVCcFpN?=
 =?utf-8?B?dTlIb0xKbngzM2tUeWs0ZmVuZ3QrcGM0U094OXE4ajZnMDJLMlJBUTZFYWcw?=
 =?utf-8?B?QUJnM2Q2SnBtUWpJVTZRSlhrZGxxeE9mVVhEMllFc09rMkt1bnBFWWpFaXVO?=
 =?utf-8?B?QmpnRmtMY3JlaGt5SkFDOStkdTRGR2c4UVRTUnNUUENCbzYxSHlzUk9oK3o0?=
 =?utf-8?B?c3B1M08zYXkrcm9yb0VLSEQ0Nk1TdnhWTHZGYlMyenBxdzFHV3dGbmRkUUVG?=
 =?utf-8?B?akFoR0t0SHM5dnR1Z1ZYbkxXZmZ5RXk0bXJnVGlkbWYxbkVxSU5ERUtJMHhR?=
 =?utf-8?B?QU56cWcwUitvRzM0OHJ3ZnVISHRxSlgyRWdRN1NoUDFRZHk1ZDRTOURKTmtr?=
 =?utf-8?B?QnFxbzhRWnduS0hFMHZLdGNEUjNKZkoxK2F0VUEyclk2Qk9xcUlFL0hJTk5p?=
 =?utf-8?B?eXcyd0c2U28zUk5aZ0dkSHRObW9YSWI2QVhEWGg2WmZ6TVJUeWZJRldzTzZl?=
 =?utf-8?B?RGxJY3Q3NXhidVdWQXJiazRERUZZcnlJWlJON2ZkT3ExaWZicUp6b01zSnhQ?=
 =?utf-8?B?RjhXenpuQ2tEQktia1l6cVRNbHJCK3RmTUl4SG1SMS83OVJDU2IxZk9YY3BG?=
 =?utf-8?B?bDkwOUpRMzhnMjF0NEI3ZklKZnZQcGRyUjZWbXRHUmZaT3V4L3RnRU1XYmZx?=
 =?utf-8?B?bHQ4WTV6K09XdFVlaXV5RFo4NURDK2U3Wmw5bUU3ZzlodFFzblZXOXVVSDJi?=
 =?utf-8?B?dUQxWVE5bXVvb3hHbnZUTnVGSzZnQ0JQUmZ0L09Gck9SY3A3RVFjYmZFTkdD?=
 =?utf-8?B?bTJvVFdJajByelVyM1MyWTYvZFBGTk9tVlFBdVBNRnNBTzBSOThmYXJPT0dQ?=
 =?utf-8?B?eFppM1ZiV2VMckxZNU5YWGtoUzFQTUpvbGR2OXRuaHlJdGttRU5VL3NZK3N2?=
 =?utf-8?B?aDVzcG8vbVlPQ1RFeWJSSUwyWkNtTmVxbjZhMDIyVTVnNGozVW9MamJobXhF?=
 =?utf-8?B?WEFhZUI0WmxBbHZKYzBDZjd4MHJqNEoyRWZHMnAya3FQb3B0QmU5MEJNbHps?=
 =?utf-8?B?bXpmTHN3M05XMVZmYno3VGtacWdKVERHTk45Y29aWk9UcVIyeEY1cXV1Z09R?=
 =?utf-8?B?ckFoTExlWHB6UXJIV016UFNIQjJYSGcrREJxRTQwdFBCc0Y3VEVQaUJ5OE1O?=
 =?utf-8?B?MEFDLy9mYnlYMzkwaXFlcjVzRkxzQ1QrbFQ2THhleWNJcFZZTFBScDlDQWNr?=
 =?utf-8?B?bFQxRXJPMTRpVHRUbTU0RjlyYWxtQXc4NXZURnVYVW9BQWdvVUN5blZibG9z?=
 =?utf-8?B?TmQvS3hIT09HVnY4eXoxUzBFSldWVG5GREFHVVh5Ky9ydTlrT3VGeVowYktW?=
 =?utf-8?B?R1JMc1lrUkFLNjA0MlBQSlk5YXkyamRpaXpNUWJldGw2ODNZVmtDSVRxSmkr?=
 =?utf-8?Q?yYfXH/4WYgc5gj7GFolTDHzNY?=
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 65e84e6e-5ba4-46d4-3293-08dc0c263089
X-MS-Exchange-CrossTenant-AuthSource: SJ2PR12MB8690.namprd12.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Jan 2024 06:35:34.5818
 (UTC)
X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted
X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d
X-MS-Exchange-CrossTenant-MailboxType: HOSTED
X-MS-Exchange-CrossTenant-UserPrincipalName: ZWZbwTjRtOrZFzB9io1ZfDdjLa3SiK/I2HFLFnQB/71qj9gG8zFDuc3+Axf3ueQdE2zlhpvBR4s9g1lREiffGQ==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS7PR12MB8345

On Tue, Jan 02, 2024 at 06:42:44PM +0800, Marc-André Lureau wrote:
> Hi
> 
> On Thu, Dec 21, 2023 at 10:55 AM Akihiko Odaki <akihiko.odaki@daynix.com> wrote:
> >
> > On 2023/12/19 23:14, Peter Maydell wrote:
> > > On Tue, 19 Dec 2023 at 13:49, Huang Rui <ray.huang@amd.com> wrote:
> > >>
> > >> On Tue, Dec 19, 2023 at 08:20:22PM +0800, Akihiko Odaki wrote:
> > >>> On 2023/12/19 16:53, Huang Rui wrote:
> > >>>> Sync up kernel headers to update venus macro till they are merged into
> > >>>> mainline.
> > >>>
> > >>> Thanks for sorting things out with the kernel and spec.
> > >>>
> > >>>>
> > >>>> Signed-off-by: Huang Rui <ray.huang@amd.com>
> > >>>> ---
> > >>>>
> > >>>> Changes in v6:
> > >>>> - Venus capset is applied in kernel, so update it in qemu for future use.
> > >>>>
> > >>>> https://lore.kernel.org/lkml/b79dcf75-c9e8-490e-644f-3b97d95f7397@collabora.com/
> > >>>> https://cgit.freedesktop.org/drm-misc/commit/?id=216d86b9a430f3280e5b631c51e6fd1a7774cfa0
> > >>> Please include the link to the upstream commit in the commit message.
> > >>
> > >> So far, it's in drm maintainers' branch not in kernel mainline yet. Do I
> > >> need to wait it to be merged into kernel mainline?
> > >
> > > For an RFC patchset, no. For patches to be merged into QEMU
> > > the headers change must be in the kernel mainline, and the
> > > QEMU commit that updates our copy of the headers must be a
> > > full-sync done with scripts/update-linux-headers.sh, not a
> > > manual edit.
> >
> > Apparently the kernel change is unlikely to be merged to mainline before
> > QEMU 9.0 so we need to come up with some idea to deal with this.

May I know when QEMU 9.0 will be released?

> >
> > The release of Linux 6.7 is near and the development of 6.8 will start
> > soon. So it was nice if the change made into 6.8, but unfortunately it
> > missed the *probably last* drm-misc tree pull request for 6.8:
> > https://lore.kernel.org/all/aqpn5miejmkks7pbcfex7b6u63uwsruywxsnr3x5ljs45qatin@nbkkej2elk46/
> >
> > It will still get into linux-next so we may retrieve headers from
> > linux-next. Or we may add the definition to
> > hw/display/virtio-gpu-virgl.c; the duplicate definition warning will
> > tell when the definition becomes no longer necessary. I'm fine with
> > either option.
> 
> The second option seems better to me, as it can avoid pulling unwanted changes.
> 

I will keep an eye on dri-devel mailing list. And ok, I will add the
definition in virtio-gpu-virgl.c and remove it once kernel patch is merged
by mainline.

Thanks,
Ray


From xen-devel-bounces@lists.xenproject.org Wed Jan 03 08:47:49 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 03 Jan 2024 08:47:49 +0000
Received: from list by lists.xenproject.org with outflank-mailman.660916.1030599 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rKwuV-0004A7-O6; Wed, 03 Jan 2024 08:47:35 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 660916.1030599; Wed, 03 Jan 2024 08:47:35 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rKwuV-0004A0-Jw; Wed, 03 Jan 2024 08:47:35 +0000
Received: by outflank-mailman (input) for mailman id 660916;
 Wed, 03 Jan 2024 08:47:34 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=08Ob=IN=amd.com=Ray.Huang@srs-se1.protection.inumbo.net>)
 id 1rKwuT-00049u-V0
 for xen-devel@lists.xenproject.org; Wed, 03 Jan 2024 08:47:34 +0000
Received: from NAM11-CO1-obe.outbound.protection.outlook.com
 (mail-co1nam11on20601.outbound.protection.outlook.com
 [2a01:111:f403:2416::601])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id ba6596a0-aa14-11ee-9b0f-b553b5be7939;
 Wed, 03 Jan 2024 09:47:31 +0100 (CET)
Received: from SJ2PR12MB8690.namprd12.prod.outlook.com (2603:10b6:a03:540::10)
 by SA1PR12MB5672.namprd12.prod.outlook.com (2603:10b6:806:23c::5)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7135.25; Wed, 3 Jan
 2024 08:47:26 +0000
Received: from SJ2PR12MB8690.namprd12.prod.outlook.com
 ([fe80::9b8e:816d:20b9:9845]) by SJ2PR12MB8690.namprd12.prod.outlook.com
 ([fe80::9b8e:816d:20b9:9845%5]) with mapi id 15.20.7159.013; Wed, 3 Jan 2024
 08:47:26 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: ba6596a0-aa14-11ee-9b0f-b553b5be7939
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=h64Bt/HcFkGy5TfC3YbeBRH/3WvPJjVjMcSBcscmu811W+dOpi21h393Nyy3LFRwWk2QZF5gPCeBsWKDKUceZMCZ5syp2RuOOvZ7UlV3C11Dqhfj2DO81J70pPMojCmAgFwv19vmaA+rPKh0ODiyjHmT/xO1FHaQZkP5Cp+Vrfbqyfu25QInWmkKZFny8p9glGekAmc8rTkOsaShGI6redf2JHKtL5p2THcB9pjQZDenkWDcpL1YeA5lva+zKDmgyGr7FfstXTMqtJWdcf3I22hroDv0MPkbycKlkbN62zCh5JrcFUzHKomTlSfEqzaQnWHDg0IaUVkYlo6NeWRyfw==
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=30UsxFmHmKLAyDmhZfRz5WKNFF4i8bqWX+v7pNDaabk=;
 b=CNSVHgW6REB2frTJOUfEp5qVzgi2bSW5csC1vXm1xCIXyiogge5vNYZ/1hmMuhLI2fjxh2Pa0h/u/35uUy/ww5SZvIhkqxCwGjH2dYRMa259bWIOcsf/PMmnbo1d1oeiYGgHOec+pA7jxIl+EmgzEJjlZ96pMFVhxfDaK69U8luYZO52cYuS2pBjMDEcxa1DEtnK5cEHZDFtguHldMeG0B9TXcRI7B8eoA3AJjlEdffBLD9Nun5UU4zcZJ6HRcB14pYll4OMuBrlaHGU0HCjVcHX99txq91w1+D5EM4y0QGb52KfYoqoxXiLehWcxz7nu2wxT87JbPIuPYFKpEYVaw==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=amd.com; dmarc=pass action=none header.from=amd.com; dkim=pass
 header.d=amd.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=30UsxFmHmKLAyDmhZfRz5WKNFF4i8bqWX+v7pNDaabk=;
 b=yFHwhVD/epuIvE0xxMCTRcM85jfKhsfnvoYoIath8n3oKv2a1p4+AltzlW/b6hBhiRGCYqvd+EwxiDdPymkkswrGJGr9y+XYIuCd48jCeyovEEEoMrjm44SY+3tgy6xvS0488cbXGXEbI+5qHgouyCDwOp1+6/vjakpGERZpAbU=
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=amd.com;
Date: Wed, 3 Jan 2024 16:46:58 +0800
From: Huang Rui <ray.huang@amd.com>
To: =?iso-8859-1?Q?Marc-Andr=E9?= Lureau <marcandre.lureau@gmail.com>
Cc: Akihiko Odaki <akihiko.odaki@daynix.com>,
	Philippe =?iso-8859-1?Q?Mathieu-Daud=E9?= <philmd@linaro.org>,
	Gerd Hoffmann <kraxel@redhat.com>,
	"Michael S . Tsirkin" <mst@redhat.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Anthony PERARD <anthony.perard@citrix.com>,
	Antonio Caggiano <quic_acaggian@quicinc.com>,
	"Dr . David Alan Gilbert" <dgilbert@redhat.com>,
	Robert Beckett <bob.beckett@collabora.com>,
	Dmitry Osipenko <dmitry.osipenko@collabora.com>,
	Gert Wollny <gert.wollny@collabora.com>,
	Alex =?iso-8859-1?Q?Benn=E9e?= <alex.bennee@linaro.org>,
	"qemu-devel@nongnu.org" <qemu-devel@nongnu.org>,
	"xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>,
	Gurchetan Singh <gurchetansingh@chromium.org>,
	"ernunes@redhat.com" <ernunes@redhat.com>,
	Alyssa Ross <hi@alyssa.is>,
	Roger Pau =?iso-8859-1?Q?Monn=E9?= <roger.pau@citrix.com>,
	"Deucher, Alexander" <Alexander.Deucher@amd.com>,
	"Stabellini, Stefano" <stefano.stabellini@amd.com>,
	"Koenig, Christian" <Christian.Koenig@amd.com>,
	"Ragiadakou, Xenia" <Xenia.Ragiadakou@amd.com>,
	"Pelloux-Prayer, Pierre-Eric" <Pierre-eric.Pelloux-prayer@amd.com>,
	"Huang, Honglei1" <Honglei1.Huang@amd.com>,
	"Zhang, Julia" <Julia.Zhang@amd.com>,
	"Chen, Jiqian" <Jiqian.Chen@amd.com>,
	Antonio Caggiano <antonio.caggiano@collabora.com>
Subject: Re: [PATCH v6 03/11] virtio-gpu: Support context init feature with
 virglrenderer
Message-ID: <ZZUfAu5vXRWNUwjY@amd.com>
References: <20231219075320.165227-1-ray.huang@amd.com>
 <20231219075320.165227-4-ray.huang@amd.com>
 <CAJ+F1CJ7cH3v9vXy+g-2ANZ1MowprW451dhzSDdsSn=P+c7LFg@mail.gmail.com>
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <CAJ+F1CJ7cH3v9vXy+g-2ANZ1MowprW451dhzSDdsSn=P+c7LFg@mail.gmail.com>
X-ClientProxiedBy: SI2PR04CA0005.apcprd04.prod.outlook.com
 (2603:1096:4:197::16) To SJ2PR12MB8690.namprd12.prod.outlook.com
 (2603:10b6:a03:540::10)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: SJ2PR12MB8690:EE_|SA1PR12MB5672:EE_
X-MS-Office365-Filtering-Correlation-Id: 6cb4165b-007e-4a6e-e416-08dc0c389c41
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam: BCL:0;
X-Microsoft-Antispam-Message-Info:
	OTwRtRJT5ivHVbZBT+4dTF26k1iInlBQVljjSZTgn23rjJDewhSHIRXJei+jTXkoIPinxQc6oiyt1li5XVXopiofVIMAMNk9sdXePjEC97qHg2EBIjN2fy3Fku0/TF0UvRoEwggt5W/wuXce/EfWZsL5/AAl/ODWdL+Tx1UAQCrkc3IoSWiuEnrQOTuE0CdkNT3tNTe/bV2x0ORn/d4uT0DOPHorske8YYAHnlPqHWuhAnI1TPvrpboPND/IgrMVvFi40qIf3z/9led3QSm83t+0aQtufrAJsbhgMG+66jYasGJxl3Q2UO4HXkBiHwysJT/QGqTcogSHZm0BKVfj4pFUU9aOziwc2GmQlDDTn70icH0ens6/s0vCT9xlU4FFxQiRuJTx3vXk5M1qkZWm7ic8b/iNPQutOloW6ldUgoP++LFTv2TDc42J9RXszgckjfxx+7OOIzySePrko39sZgK1XZYjKWoG1paDD4kRX8M1Fdhxrj4UB8lkW7OmMb8+PpuR06XR+pI1bfUl0wwpCeEo84v7xT/fupmd2RIWi4cIhSHut/iKL8JKDFauErK1
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SJ2PR12MB8690.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230031)(366004)(346002)(376002)(39860400002)(136003)(396003)(230922051799003)(451199024)(1800799012)(64100799003)(186009)(41300700001)(26005)(2616005)(38100700002)(83380400001)(8676002)(54906003)(6666004)(5660300002)(8936002)(316002)(7416002)(4326008)(2906002)(478600001)(6916009)(66556008)(6486002)(6506007)(53546011)(66476007)(6512007)(66946007)(86362001)(36756003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?aGVjRFZGN2x3VHZTbVdWbHlXN3N5RTVpRnl6cGtEVUZ1VHNqcFE1TmtDbFF2?=
 =?utf-8?B?WTQwUnEveWFwOXNYVElEMmltNDZVZFExNktRbkRSejYzTWw4b29qSlQ2S2Fo?=
 =?utf-8?B?eUhxM28xSHZ0Tm1wdW1BSGFnYi8zT2hLT1E5R3lTWjUvdDB4bGFDeUt6Y3Zt?=
 =?utf-8?B?Mk1OejdFb3l1eEJYK3dvQ3R1OGJkZ3Y2RG1YaEJDZzF6TTdITzZNazNYVzh4?=
 =?utf-8?B?ZjNwRmxlalZ3VmdwSjJiTzlDbHM5NFlscWZPYnYvdzFyV0dJdi92Sk5xNTVB?=
 =?utf-8?B?N01MN3V4cXFtVEM3YU5sbGNGOEkybHZSZE5OQnMxcXNDZ3RoVkxJS0ZLRFlm?=
 =?utf-8?B?VmNReG1WT1hkb3RvUU1jcDFUbS9ySEoyd1ZDQ052bW95YytDRVRZcE9wWmcz?=
 =?utf-8?B?OEQzZHJMWDRuK0k4d0IyTFpBTHBnWEYra09ONkN3ZFRxSzdya0RJSGljRlRs?=
 =?utf-8?B?aktReWEwdE9jL0VkSTlLTHp2Uk1ESE1Sa21BdlRSNkt2U0ttcFZBWFNmQTFG?=
 =?utf-8?B?UVJWQ0tySTlsTmc1SmlkVWRuWVE4djZDTnhoOVhYVlBGR1JtQy96cVU1RXhS?=
 =?utf-8?B?bW85eU5KcVBZT0lITW5Pc0xiT25HbHVpOUdwNlp4SGR0VDdnZUpLZHNBYkVU?=
 =?utf-8?B?cTRpRGhCa1hscU9EVUlxUG5IVWM1UEtNQnViQzlzZVRUTzBrVEkxbFJGa3pL?=
 =?utf-8?B?YVBPNWROVDJ3WU1qZU1uUmhHdXVwZHZwN2hkejlkc0dzVXZSaWh1U2ZWNmNF?=
 =?utf-8?B?UDJCQmhlWHlyRFFLT2hyVklyeU9yQ21Ga0lPOFlKa2g1eUV2cTJDSTUwaDVt?=
 =?utf-8?B?RDloZWV5Wm1nNmZaRVU1emFta2NqWmZpMDRwTjlSNzg4R00zaFVLUllzbWRC?=
 =?utf-8?B?dERpYkhUeXIweFFTb2FKMnl5LzBvb3N1RWlDWXNUSG0vY0hsUXo5SysvSFBi?=
 =?utf-8?B?bUZJallMTk1DNGxhUGpObGtNVmZWVDlDaS8wcmpFTXAzZUsrVVZXdlVtN3pE?=
 =?utf-8?B?STA2Q2VaZHZwU3BqaDNYaEUweUNzdE8zSzdFQlNwY2MwamdzWGdDMTByK09r?=
 =?utf-8?B?SnZMaDNSejAxNFFVVUpOc1U0R1dmZFRXOGFQRGFLS3d1THNpYWZzanJEZ29C?=
 =?utf-8?B?T1pzSnBzQ3JvNHNVT0RGZkNGN0V1TlZtc2dpS3pPZzMzbnlMV1pqT3UwZ3cr?=
 =?utf-8?B?QjM0UzdRTTdVdjEySlJHbDBLeS9yL3pteUUvaW5oRVh5R1N1dUtTR1FBSnE1?=
 =?utf-8?B?TVZCQzdPMGRYaFVvMlpOazdxNEtZQjBQc25oOGg1djVHREhKTDRpb1lmOHM0?=
 =?utf-8?B?MEd5cmxWeTMxNUZKenNKWW1JNG00S2xsc0thZklmWFRZa3oxdUJNUlZQUHpT?=
 =?utf-8?B?azJTVlg4RWp0aVRJaVEzSm92RDN0QXNWc0ZyTzE1RnlWR0tnOEw2RWVsR2V6?=
 =?utf-8?B?Ti9QNFE0ZFZOUXJWK1o0QUtOM2VXdURDSVhnZm91dU43VUV3cStTOVhHRTBa?=
 =?utf-8?B?WVYydW82ZFlrdUY1MlNkWXB0aTJNVWRka0FvNkRUdnJ4WGhnRHVKNGVrQ0Rn?=
 =?utf-8?B?U2FVWDFBaEVVbkxqQ09pS1YvN3pSVWFLMGpxcTVWakkxOFVjQld3Z3M1eXY1?=
 =?utf-8?B?aWZBeVJ3T0dJTVc2NjNoN09RUko1ZG01cnVJdUVVbDk5azg4NEU1SjBPS0gx?=
 =?utf-8?B?Mmw4SkxEdWpSNmdDZ0VLZy95UC8zRmpQQVgxK2Z3cWozaG1hcU03SitscnNp?=
 =?utf-8?B?VUo2UXY0TW5zQlc4eEFxR0hMdkMxM0UxTTltY3BGNjVGR2wwRmFocDR4M3lj?=
 =?utf-8?B?aG1SdHI4bWliSW5hbG4yei85VC9iVlBlZmNMckE3TWw1RzFBV3BMZ1VRUW1N?=
 =?utf-8?B?Y2Y1cmltSG9lbkVlWUJpNUlpK3JqSnc5Skw5Sy8yV2VVTE5OUDBhbnBlZitP?=
 =?utf-8?B?eEtMYmJEUlQ0WkY3N1FCNjJCMkdKUWU2WTVBcFJqTnE1RXc4clFSWkg0MDla?=
 =?utf-8?B?czhoM1V6T3ArVFlMWXplOVVhVVA3dlZjTDVtS0VsV3NCTzBHZXV4dThDTEFo?=
 =?utf-8?B?SEQzSkZiTnFWUXpKdFJnNkk5YTFUUjRXNERlN284N0JRQ3c1VnpENXJnVmRi?=
 =?utf-8?Q?QqT77XIa5Uu5W0BcJV+L2cm2V?=
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 6cb4165b-007e-4a6e-e416-08dc0c389c41
X-MS-Exchange-CrossTenant-AuthSource: SJ2PR12MB8690.namprd12.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Jan 2024 08:47:26.2247
 (UTC)
X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted
X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d
X-MS-Exchange-CrossTenant-MailboxType: HOSTED
X-MS-Exchange-CrossTenant-UserPrincipalName: O55xT5eNe9QJH70aJCxe517aD0oV+zuQDThkDAL4vx6rIdWtZn0tGYm2DxDrJFy9UNMZUqFaIoutMGglgs2a8Q==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA1PR12MB5672

On Tue, Jan 02, 2024 at 07:43:20PM +0800, Marc-André Lureau wrote:
> Hi
> 
> On Tue, Dec 19, 2023 at 11:54 AM Huang Rui <ray.huang@amd.com> wrote:
> >
> > Patch "virtio-gpu: CONTEXT_INIT feature" has added the context_init
> > feature flags.
> > We would like to enable the feature with virglrenderer, so add to create
> > virgl renderer context with flags using context_id when valid.
> >
> > Originally-by: Antonio Caggiano <antonio.caggiano@collabora.com>
> > Signed-off-by: Huang Rui <ray.huang@amd.com>
> > ---
> >
> > Changes in v6:
> > - Handle the case while context_init is disabled.
> > - Enable context_init by default.
> >
> >  hw/display/virtio-gpu-virgl.c | 13 +++++++++++--
> >  hw/display/virtio-gpu.c       |  4 ++++
> >  2 files changed, 15 insertions(+), 2 deletions(-)
> >
> > diff --git a/hw/display/virtio-gpu-virgl.c b/hw/display/virtio-gpu-virgl.c
> > index 8bb7a2c21f..5bbc8071b2 100644
> > --- a/hw/display/virtio-gpu-virgl.c
> > +++ b/hw/display/virtio-gpu-virgl.c
> > @@ -106,8 +106,17 @@ static void virgl_cmd_context_create(VirtIOGPU *g,
> >      trace_virtio_gpu_cmd_ctx_create(cc.hdr.ctx_id,
> >                                      cc.debug_name);
> >
> > -    virgl_renderer_context_create(cc.hdr.ctx_id, cc.nlen,
> > -                                  cc.debug_name);
> > +#ifdef HAVE_VIRGL_CONTEXT_CREATE_WITH_FLAGS
> > +    if (cc.context_init && virtio_gpu_context_init_enabled(g->parent_obj.conf)) {
> > +        virgl_renderer_context_create_with_flags(cc.hdr.ctx_id,
> > +                                                 cc.context_init,
> > +                                                 cc.nlen,
> > +                                                 cc.debug_name);
> > +        return;
> > +    }
> > +#endif
> > +
> > +    virgl_renderer_context_create(cc.hdr.ctx_id, cc.nlen, cc.debug_name);
> >  }
> >
> >  static void virgl_cmd_context_destroy(VirtIOGPU *g,
> > diff --git a/hw/display/virtio-gpu.c b/hw/display/virtio-gpu.c
> > index b016d3bac8..8b2f4c6be3 100644
> > --- a/hw/display/virtio-gpu.c
> > +++ b/hw/display/virtio-gpu.c
> > @@ -1619,6 +1619,10 @@ static Property virtio_gpu_properties[] = {
> >      DEFINE_PROP_BIT("blob", VirtIOGPU, parent_obj.conf.flags,
> >                      VIRTIO_GPU_FLAG_BLOB_ENABLED, false),
> >      DEFINE_PROP_SIZE("hostmem", VirtIOGPU, parent_obj.conf.hostmem, 0),
> > +#ifdef HAVE_VIRGL_CONTEXT_CREATE_WITH_FLAGS
> > +    DEFINE_PROP_BIT("context_init", VirtIOGPU, parent_obj.conf.flags,
> > +                    VIRTIO_GPU_FLAG_CONTEXT_INIT_ENABLED, true),
> > +#endif
> 
> Does it make sense to make this configurable? If the context to be
> created asked for a capset id but the one created doesn't respect it,
> what's the outcome?
> 
> It looks like it should instead set cmd->error.
> 

Hmm, how about setting VIRTIO_GPU_FLAG_CONTEXT_INIT_ENABLED in
virtio_gpu_gl_device_realize(). And then drop context_init DEFINE_PROP_BIT
in virtio_gpu_properties. We treat all gl device as context_init enabled
and let virglrenderer report the error if command fails.

Thanks,
Ray


From xen-devel-bounces@lists.xenproject.org Wed Jan 03 08:49:24 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 03 Jan 2024 08:49:24 +0000
Received: from list by lists.xenproject.org with outflank-mailman.660920.1030609 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rKwwE-0004gP-2u; Wed, 03 Jan 2024 08:49:22 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 660920.1030609; Wed, 03 Jan 2024 08:49:22 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rKwwD-0004gI-WA; Wed, 03 Jan 2024 08:49:21 +0000
Received: by outflank-mailman (input) for mailman id 660920;
 Wed, 03 Jan 2024 08:49:21 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=08Ob=IN=amd.com=Ray.Huang@srs-se1.protection.inumbo.net>)
 id 1rKwwD-0004gA-28
 for xen-devel@lists.xenproject.org; Wed, 03 Jan 2024 08:49:21 +0000
Received: from NAM11-CO1-obe.outbound.protection.outlook.com
 (mail-co1nam11on20601.outbound.protection.outlook.com
 [2a01:111:f403:2416::601])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id fb109e15-aa14-11ee-98ef-6d05b1d4d9a1;
 Wed, 03 Jan 2024 09:49:19 +0100 (CET)
Received: from SJ2PR12MB8690.namprd12.prod.outlook.com (2603:10b6:a03:540::10)
 by DS0PR12MB7748.namprd12.prod.outlook.com (2603:10b6:8:130::22) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7135.25; Wed, 3 Jan
 2024 08:49:13 +0000
Received: from SJ2PR12MB8690.namprd12.prod.outlook.com
 ([fe80::9b8e:816d:20b9:9845]) by SJ2PR12MB8690.namprd12.prod.outlook.com
 ([fe80::9b8e:816d:20b9:9845%5]) with mapi id 15.20.7159.013; Wed, 3 Jan 2024
 08:49:13 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: fb109e15-aa14-11ee-98ef-6d05b1d4d9a1
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=c5pWTeRjfLlrr5CuzPG8UtFL2Vyap2570rOYsyFhptFAQ2wPbFpyV3d0/XNNjXS8BB1GF6moaMM7C+72j+5Dj4K91Vm0QNRqxqPUadwRgzxJROc7AeAWvzIje1Z0OhEwk4mSLgkAfxgPL0KSqT/b2UfJlEpWsgmlUsuUmwcvTfSuPeQNuXGIhpUL/i6J83ZEDQFyW5tFgCHYlfWW1rOOFtpFBfRPLpC60TG74ydSwudMoObO51Rr6ylGgvwuXeKpM6i1jdWdKf3IqMbZcMUnfeXaDnT4buzCTY3jieEyBivFD/l1gPi5QYJISKTQjuyOXKopub7g31zWMPO+1F09WA==
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=dn2ThuHqlgJOFeiBw7gJaeZ7iDX0yPVeR+GYzaTbJ/Y=;
 b=Ufv8P9IaJSoLapmU7cIL4hceE9EYW+nCGYg+j+Pq5MKpymIU9tb7vJ9FhAxXS+QWp1c10PYJn16k6mmm9eAFUFS+sLRNH4qHekVbn6tbAe7MmtQiyRqYjUV6UUokQF8gorkzvatO4fxqkKGL5JzgjngL9ACre71wSZGlZW+KRHfQT6eOkltKeL7+BFjkvicMvxa3+SpH3oAymVdwHFZvf4QpBezC3ZkLAis4vaPjicMWIOrYrDEw7q7qNcu+Au839YrN4Ohcef/ZeDtNpa3c4ocH1bDPKUuDzLXIEa5eOBgTHgDWYDQPeG+I5FnRuhiXCk5KUmzBMY1EpUb9WdnfrQ==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=amd.com; dmarc=pass action=none header.from=amd.com; dkim=pass
 header.d=amd.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=dn2ThuHqlgJOFeiBw7gJaeZ7iDX0yPVeR+GYzaTbJ/Y=;
 b=1yFZ0TBV22aYkfr0LVJiantkOG32lrTJFQqfMmrZUQckHP11VeiV6gnb7UHyM/DaRwm/sB6cdNcf0Ps46pG8GSgjjD9yMrTwafvilQxIT9aWsM6bQt4n19S1bgpkJSglIiDRr8uLqJkzK4ZizDGZzDZyOcJAq/dZ8lECfF9b9z4=
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=amd.com;
Date: Wed, 3 Jan 2024 16:48:47 +0800
From: Huang Rui <ray.huang@amd.com>
To: Akihiko Odaki <akihiko.odaki@daynix.com>
Cc: =?iso-8859-1?Q?Marc-Andr=E9?= Lureau <marcandre.lureau@gmail.com>,
	Philippe =?iso-8859-1?Q?Mathieu-Daud=E9?= <philmd@linaro.org>,
	Gerd Hoffmann <kraxel@redhat.com>,
	"Michael S . Tsirkin" <mst@redhat.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Anthony PERARD <anthony.perard@citrix.com>,
	Antonio Caggiano <quic_acaggian@quicinc.com>,
	"Dr . David Alan Gilbert" <dgilbert@redhat.com>,
	Robert Beckett <bob.beckett@collabora.com>,
	Dmitry Osipenko <dmitry.osipenko@collabora.com>,
	Gert Wollny <gert.wollny@collabora.com>,
	Alex =?iso-8859-1?Q?Benn=E9e?= <alex.bennee@linaro.org>,
	"qemu-devel@nongnu.org" <qemu-devel@nongnu.org>,
	"xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>,
	Gurchetan Singh <gurchetansingh@chromium.org>,
	"ernunes@redhat.com" <ernunes@redhat.com>,
	Alyssa Ross <hi@alyssa.is>,
	Roger Pau =?iso-8859-1?Q?Monn=E9?= <roger.pau@citrix.com>,
	"Deucher, Alexander" <Alexander.Deucher@amd.com>,
	"Stabellini, Stefano" <stefano.stabellini@amd.com>,
	"Koenig, Christian" <Christian.Koenig@amd.com>,
	"Ragiadakou, Xenia" <Xenia.Ragiadakou@amd.com>,
	"Pelloux-Prayer, Pierre-Eric" <Pierre-eric.Pelloux-prayer@amd.com>,
	"Huang, Honglei1" <Honglei1.Huang@amd.com>,
	"Zhang, Julia" <Julia.Zhang@amd.com>,
	"Chen, Jiqian" <Jiqian.Chen@amd.com>
Subject: Re: [PATCH v6 05/11] virtio-gpu: Introduce virgl_gpu_resource
 structure
Message-ID: <ZZUfb/t652zPyey1@amd.com>
References: <20231219075320.165227-1-ray.huang@amd.com>
 <20231219075320.165227-6-ray.huang@amd.com>
 <3105531c-bfc4-4421-a197-4ab8ddb9f4a5@daynix.com>
 <ZYGaWs6OmZpaMH46@amd.com>
 <c5d9e074-de7c-4056-becc-8fd1ce24f3e4@daynix.com>
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <c5d9e074-de7c-4056-becc-8fd1ce24f3e4@daynix.com>
X-ClientProxiedBy: SG2PR01CA0188.apcprd01.prod.exchangelabs.com
 (2603:1096:4:189::10) To SJ2PR12MB8690.namprd12.prod.outlook.com
 (2603:10b6:a03:540::10)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: SJ2PR12MB8690:EE_|DS0PR12MB7748:EE_
X-MS-Office365-Filtering-Correlation-Id: f9697f18-64d5-4108-dbc7-08dc0c38dc2f
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam: BCL:0;
X-Microsoft-Antispam-Message-Info:
	EmZPKhZRx20f8LeMx89snZsM+11EvKu5JDiZvmhBm8WaLnUqC/pM03GQe/Vrzhogq/+UrNI3mJh11fh9u2n6owJEIaq6XTAUDXzvOmqMieYif1/usPL5UEL3L3pQHHhrJGI7VjMrsBqKNgyJrzPu7Ra1iv0WW75T6rZOXnz0rkpq8mMk63bKBSPG6tPW+q6Kde0b+jl9jn6efAdFWFcoVNgflqvh/5ZveINtsLHxHLudyaNbNXllOJzxvufJEOo6KE96pq5uT0DWxm9ndwLPR0qtqXyrKQjtXiz7ng9E6YBMAa5XVIQk5Q1DtAa0fa2XLUPYGtkixzW7C9fisdHwkl5UMs3IWzAAtDDaG4pGlP/gq7F+hwx48hDQDXJDJ0owrmC6dh5GCKjd54gygXZqX+32cxMD+kCo5Jad9Ne1O78CqCpznSf3WF3SIUlEQQzHEZ/ueuloP7yIZAFUSQ3y6wARhLV8PzJFvyKKmz9hSeRXCrjrVODTdF52mz8vfRJmUVPr5xIgMIpFuRRxITliS0qQ7mLekKdCtaBCh+LUFxnzks76xBOM50vhoa8YYgc7
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SJ2PR12MB8690.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230031)(346002)(39860400002)(136003)(366004)(376002)(396003)(230922051799003)(1800799012)(64100799003)(451199024)(186009)(26005)(2616005)(66556008)(38100700002)(66946007)(83380400001)(36756003)(66476007)(316002)(6916009)(54906003)(478600001)(86362001)(6486002)(5660300002)(2906002)(7416002)(4744005)(8676002)(8936002)(4326008)(6506007)(6666004)(6512007)(53546011)(41300700001);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?us-ascii?Q?eaSb+Ra/g5P5CKDAMlC+olAj3AUfEFj2d9aUiMopJ+zVEF9f+fWNZOGoMFWa?=
 =?us-ascii?Q?xlSia15fJZjfpiBLywZLCK8dwKjoekn1xnKWnn7gmzi9tgjt10CKfirlPoX6?=
 =?us-ascii?Q?n/KpFZ4zPN90ywxuzMxvkP65hp5K4VAkhSmY9B+kVTPcpI44a+IDbOFXBbaE?=
 =?us-ascii?Q?zHKRTzSmrSgFKDlPrrB8rZRSj6sJIdMb1068wP+3h0TQBZVbVRnXgBQAS/Bd?=
 =?us-ascii?Q?X2UMT7Ac5NKA4buuqd3A8muTrk1wPF7fzLbKQrPEcVhIMJZjyO5YMJ6JD+63?=
 =?us-ascii?Q?tpdnEvjMf9bxvgBP6SZ35Y8khZECZ4ZVlLc/crFMcMyZQxDExyyNH/NVIsUb?=
 =?us-ascii?Q?DS6CNCO62vyIMf0SFaXn8RHfvhcmFYVnKvuy1sTiK1IHMWp9ojf+XvRI9mjq?=
 =?us-ascii?Q?ygmuuw7RHH4+gjrb3CwtKXSOPGg/xA1cWSHdTiInO2rxwNVlkkjZX0OJB2mH?=
 =?us-ascii?Q?UvSiE2XOVuJa4x9uw0oUTQz0gA76MDtQhePENx08roNSim+6t9z6hp6p3KS4?=
 =?us-ascii?Q?Eav1KzUR06YbF62/J6vA/yc2zDtDaFaxAq6tSO5fdccmljhdy0FDeDeDqz8F?=
 =?us-ascii?Q?HxRWeMm/sRNgOmDUqCPwxp69pJmvK6moCqZ9r7HlTBd32nfgp2nk7459izvS?=
 =?us-ascii?Q?Ypl3V9uh/507n9IZR4UojE4LydaLachE12gJCPa/z5l6tUlCP91ud4d+J66y?=
 =?us-ascii?Q?124qiAQx9rEYic+9FheoU/P3VsmL+CIBvXIhOikbBBtAzy1SsU1sEb0LwLOm?=
 =?us-ascii?Q?RSksYQlh0vvpjjoVTOQ8Opb0XwM4xu2hOHi9vWgGq6HZjq0a6kRjoSUbcMbB?=
 =?us-ascii?Q?qkCeljywFWrTxousrPkvmZEDQheRxPMXBjlR/9nkSRv9A5WbzSXzFbrdN/cn?=
 =?us-ascii?Q?ELOJHWN+4JyH1E4/BYdLv9/ZAQSvYHCd5m2XnMz1X7qQ+pbk1TBNg+hddmsQ?=
 =?us-ascii?Q?Ny13jSC57/yFYuohIDmeSziPmSVT/zRqkOAbIIhTZh5DhpLsCmLMeJuvz/na?=
 =?us-ascii?Q?NyeGHR67WeDGr1wEiifFfF7xqDghXgbAcuebKO6YL76ch+wn/beHoycUw2Ns?=
 =?us-ascii?Q?Az7rlJ+gSQCN8YCWvF2Va8cYeJGm02q2rGceI1UnGPGi06srAqJ6pAPlgPTb?=
 =?us-ascii?Q?SDP0DpipKPoCR97DZSv+S0aGtS//4kzw7MIJ95oOGmUPemU93TCraWnY+HsQ?=
 =?us-ascii?Q?Ihd4R77xfmsUZzTGXowZSsdtaJrjSFFVZ6o4iG0+52HWENjoAx7xtrhcoTEg?=
 =?us-ascii?Q?eitugK0ZPdCCfsp1TLvCmH4VEUlNVjBlGf9CS3QLCMzZYyb9FdCyvhjXqbPg?=
 =?us-ascii?Q?Mwsgi7abF3+iHXMlsGKg7lMWn6wf++v0B1217E0xtrl0Gqc2QkcIS7UPCXIf?=
 =?us-ascii?Q?m3O6FEBHShkJUypMNJSAyOL7PPEquxYiMvYVRB+Qap3MdchbAqc6+n1t3sCl?=
 =?us-ascii?Q?4YTzgArHy6L2arCZfxsuATp1341znkThmWDveEt1waPVDjzuywRJT9NCdVXc?=
 =?us-ascii?Q?XL8vKiiejK36gKhSeXnYMuIG47cI3YObLCFa1FFZQGJWucNx9C8eUDIt222F?=
 =?us-ascii?Q?lQwrcBdjPxe3HwV8llfSIxTMW9YxBIVT+LTmRNGd?=
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-Network-Message-Id: f9697f18-64d5-4108-dbc7-08dc0c38dc2f
X-MS-Exchange-CrossTenant-AuthSource: SJ2PR12MB8690.namprd12.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Jan 2024 08:49:13.3674
 (UTC)
X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted
X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d
X-MS-Exchange-CrossTenant-MailboxType: HOSTED
X-MS-Exchange-CrossTenant-UserPrincipalName: ULg6QtEhJzV22SoWiZdi2FBKS2hQ8n/X+zp494tHpNGqop8XGUQa7ErOytitf4Q+BxTmq84HFvA1JL8AaV5NDA==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS0PR12MB7748

On Thu, Dec 21, 2023 at 01:43:37PM +0800, Akihiko Odaki wrote:
> On 2023/12/19 22:27, Huang Rui wrote:
> > On Tue, Dec 19, 2023 at 08:35:27PM +0800, Akihiko Odaki wrote:
> >> On 2023/12/19 16:53, Huang Rui wrote:
> >>> Introduce a new virgl_gpu_resource data structure and helper functions
> >>> for virgl. It's used to add new member which is specific for virgl in
> >>> following patches of blob memory support.
> >>
> >> The name is ambigious. It should tell that it's specific for virgl.
> > 
> > How about "virgl_resource" which inherits virtio_gpu_simple_resource? But
> > this name is exactly same with the name in virglrenderer.
> 
> You can prefix it with virtio_gpu_virgl as virtio_gpu_virgl_init() and 
> other functions do.
> 

Thanks, will update it in V7.

Ray


From xen-devel-bounces@lists.xenproject.org Wed Jan 03 09:03:55 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 03 Jan 2024 09:03:55 +0000
Received: from list by lists.xenproject.org with outflank-mailman.660928.1030619 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rKxAE-00082Q-Hr; Wed, 03 Jan 2024 09:03:50 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 660928.1030619; Wed, 03 Jan 2024 09:03:50 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rKxAE-00082J-CX; Wed, 03 Jan 2024 09:03:50 +0000
Received: by outflank-mailman (input) for mailman id 660928;
 Wed, 03 Jan 2024 09:03:50 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rKxAD-000829-W1; Wed, 03 Jan 2024 09:03:50 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rKxAD-00030z-JC; Wed, 03 Jan 2024 09:03:49 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rKxAD-0001i1-3j; Wed, 03 Jan 2024 09:03:49 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rKxAD-0003ib-3J; Wed, 03 Jan 2024 09:03:49 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=dUC7jdbCGdSeKVvhiYZiKCtJNC7+o6RE9y6JQS2qAYw=; b=DXZzfe4iiLfpzGyYJ7L8P2HW+f
	NYqMfpSANPfJTsddQivCdmvQofy/+MygMRoz1U8YAwl8lO1c3k1MEBI3RD4CyHgSZ6X0Qs+AICh3J
	F5GQN5If9/fDP0Bvt6OroQI8BPVhwaV/vZYRzoZ04ia47NcKyhrTJaF5X1Ux8ip84MRw=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184244-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [xen-unstable test] 184244: tolerable FAIL
X-Osstest-Failures:
    xen-unstable:test-armhf-armhf-libvirt-raw:guest-start:fail:heisenbug
    xen-unstable:test-armhf-armhf-libvirt-qcow2:guest-start:fail:heisenbug
    xen-unstable:test-armhf-armhf-libvirt-qcow2:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-qcow2:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-raw:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-amd64-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-amd64-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-amd64-qemuu-nested-amd:debian-hvm-install/l1/l2:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-amd64-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-i386-libvirt-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-libvirt:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-pvshim:guest-start:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-credit1:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-credit1:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-thunderx:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-thunderx:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-xsm:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-credit2:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-credit2:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-libvirt-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-libvirt-xsm:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-arndale:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-arndale:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-multivcpu:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-multivcpu:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit2:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit2:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit1:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit1:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-libvirt-raw:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-libvirt-raw:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-libvirt-raw:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt-vhd:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-vhd:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-vhd:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-raw:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-rtds:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-rtds:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-vhd:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-vhd:saverestore-support-check:fail:nonblocking
X-Osstest-Versions-This:
    xen=49818cde637b5ec20383e46b71f93b2e7d867686
X-Osstest-Versions-That:
    xen=49818cde637b5ec20383e46b71f93b2e7d867686
From: osstest service owner <osstest-admin@xenproject.org>
Date: Wed, 03 Jan 2024 09:03:49 +0000

flight 184244 xen-unstable real [real]
http://logs.test-lab.xenproject.org/osstest/logs/184244/

Failures :-/ but no regressions.

Tests which are failing intermittently (not blocking):
 test-armhf-armhf-libvirt-raw 13 guest-start      fail in 184243 pass in 184244
 test-armhf-armhf-libvirt-qcow2 13 guest-start              fail pass in 184243

Tests which did not succeed, but are not blocking:
 test-armhf-armhf-libvirt-qcow2 15 saverestore-support-check fail in 184243 like 184241
 test-armhf-armhf-libvirt-qcow2 14 migrate-support-check fail in 184243 never pass
 test-armhf-armhf-libvirt-raw 15 saverestore-support-check    fail  like 184241
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 184243
 test-amd64-amd64-xl-qemut-win7-amd64 19 guest-stop            fail like 184243
 test-amd64-i386-xl-qemuu-win7-amd64 19 guest-stop             fail like 184243
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 184243
 test-amd64-i386-xl-qemut-ws16-amd64 19 guest-stop             fail like 184243
 test-amd64-i386-xl-qemut-win7-amd64 19 guest-stop             fail like 184243
 test-amd64-amd64-xl-qemut-ws16-amd64 19 guest-stop            fail like 184243
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 184243
 test-amd64-i386-xl-qemuu-ws16-amd64 19 guest-stop             fail like 184243
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 184243
 test-amd64-i386-libvirt-xsm  15 migrate-support-check        fail   never pass
 test-amd64-i386-libvirt      15 migrate-support-check        fail   never pass
 test-amd64-i386-xl-pvshim    14 guest-start                  fail   never pass
 test-amd64-amd64-libvirt     15 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit1  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit1  16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl          15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl          16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-thunderx 15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-thunderx 16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-xsm      15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-xsm      16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-credit2  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit2  16 saverestore-support-check    fail   never pass
 test-arm64-arm64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-xsm 16 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-armhf-armhf-xl-arndale  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-arndale  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl          15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-multivcpu 15 migrate-support-check        fail  never pass
 test-armhf-armhf-xl-multivcpu 16 saverestore-support-check    fail  never pass
 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-armhf-armhf-libvirt     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit2  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit2  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-credit1  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit1  16 saverestore-support-check    fail   never pass
 test-amd64-i386-libvirt-raw  14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 15 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-vhd 14 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-vhd      14 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-vhd      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-raw 14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-rtds     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-rtds     16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-vhd      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      15 saverestore-support-check    fail   never pass

version targeted for testing:
 xen                  49818cde637b5ec20383e46b71f93b2e7d867686
baseline version:
 xen                  49818cde637b5ec20383e46b71f93b2e7d867686

Last test of basis   184244  2024-01-03 01:55:26 Z    0 days
Testing same since                          (not found)         0 attempts

jobs:
 build-amd64-xsm                                              pass    
 build-arm64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64-xtf                                              pass    
 build-amd64                                                  pass    
 build-arm64                                                  pass    
 build-armhf                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-arm64-libvirt                                          pass    
 build-armhf-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-prev                                             pass    
 build-i386-prev                                              pass    
 build-amd64-pvops                                            pass    
 build-arm64-pvops                                            pass    
 build-armhf-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-xtf-amd64-amd64-1                                       pass    
 test-xtf-amd64-amd64-2                                       pass    
 test-xtf-amd64-amd64-3                                       pass    
 test-xtf-amd64-amd64-4                                       pass    
 test-xtf-amd64-amd64-5                                       pass    
 test-amd64-amd64-xl                                          pass    
 test-amd64-coresched-amd64-xl                                pass    
 test-arm64-arm64-xl                                          pass    
 test-armhf-armhf-xl                                          pass    
 test-amd64-i386-xl                                           pass    
 test-amd64-coresched-i386-xl                                 pass    
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm           pass    
 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm            pass    
 test-amd64-amd64-xl-qemut-stubdom-debianhvm-amd64-xsm        pass    
 test-amd64-i386-xl-qemut-stubdom-debianhvm-amd64-xsm         pass    
 test-amd64-amd64-xl-qemut-debianhvm-i386-xsm                 pass    
 test-amd64-i386-xl-qemut-debianhvm-i386-xsm                  pass    
 test-amd64-amd64-xl-qemuu-debianhvm-i386-xsm                 pass    
 test-amd64-i386-xl-qemuu-debianhvm-i386-xsm                  pass    
 test-amd64-amd64-libvirt-xsm                                 pass    
 test-arm64-arm64-libvirt-xsm                                 pass    
 test-amd64-i386-libvirt-xsm                                  pass    
 test-amd64-amd64-xl-xsm                                      pass    
 test-arm64-arm64-xl-xsm                                      pass    
 test-amd64-i386-xl-xsm                                       pass    
 test-amd64-amd64-qemuu-nested-amd                            fail    
 test-amd64-amd64-xl-pvhv2-amd                                pass    
 test-amd64-i386-qemut-rhel6hvm-amd                           pass    
 test-amd64-i386-qemuu-rhel6hvm-amd                           pass    
 test-amd64-amd64-dom0pvh-xl-amd                              pass    
 test-amd64-amd64-xl-qemut-debianhvm-amd64                    pass    
 test-amd64-i386-xl-qemut-debianhvm-amd64                     pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64                    pass    
 test-amd64-i386-xl-qemuu-debianhvm-amd64                     pass    
 test-amd64-i386-freebsd10-amd64                              pass    
 test-amd64-amd64-qemuu-freebsd11-amd64                       pass    
 test-amd64-amd64-qemuu-freebsd12-amd64                       pass    
 test-amd64-amd64-xl-qemuu-ovmf-amd64                         pass    
 test-amd64-i386-xl-qemuu-ovmf-amd64                          pass    
 test-amd64-amd64-xl-qemut-win7-amd64                         fail    
 test-amd64-i386-xl-qemut-win7-amd64                          fail    
 test-amd64-amd64-xl-qemuu-win7-amd64                         fail    
 test-amd64-i386-xl-qemuu-win7-amd64                          fail    
 test-amd64-amd64-xl-qemut-ws16-amd64                         fail    
 test-amd64-i386-xl-qemut-ws16-amd64                          fail    
 test-amd64-amd64-xl-qemuu-ws16-amd64                         fail    
 test-amd64-i386-xl-qemuu-ws16-amd64                          fail    
 test-armhf-armhf-xl-arndale                                  pass    
 test-amd64-amd64-examine-bios                                pass    
 test-amd64-i386-examine-bios                                 pass    
 test-amd64-amd64-xl-credit1                                  pass    
 test-arm64-arm64-xl-credit1                                  pass    
 test-armhf-armhf-xl-credit1                                  pass    
 test-amd64-amd64-xl-credit2                                  pass    
 test-arm64-arm64-xl-credit2                                  pass    
 test-armhf-armhf-xl-credit2                                  pass    
 test-amd64-amd64-xl-qemuu-dmrestrict-amd64-dmrestrict        pass    
 test-amd64-i386-xl-qemuu-dmrestrict-amd64-dmrestrict         pass    
 test-amd64-amd64-examine                                     pass    
 test-arm64-arm64-examine                                     pass    
 test-armhf-armhf-examine                                     pass    
 test-amd64-i386-examine                                      pass    
 test-amd64-i386-freebsd10-i386                               pass    
 test-amd64-amd64-qemuu-nested-intel                          pass    
 test-amd64-amd64-xl-pvhv2-intel                              pass    
 test-amd64-i386-qemut-rhel6hvm-intel                         pass    
 test-amd64-i386-qemuu-rhel6hvm-intel                         pass    
 test-amd64-amd64-dom0pvh-xl-intel                            pass    
 test-amd64-amd64-libvirt                                     pass    
 test-armhf-armhf-libvirt                                     pass    
 test-amd64-i386-libvirt                                      pass    
 test-amd64-amd64-livepatch                                   pass    
 test-amd64-i386-livepatch                                    pass    
 test-amd64-amd64-migrupgrade                                 pass    
 test-amd64-i386-migrupgrade                                  pass    
 test-amd64-amd64-xl-multivcpu                                pass    
 test-armhf-armhf-xl-multivcpu                                pass    
 test-amd64-amd64-pair                                        pass    
 test-amd64-i386-pair                                         pass    
 test-amd64-amd64-libvirt-pair                                pass    
 test-amd64-i386-libvirt-pair                                 pass    
 test-amd64-amd64-xl-pvshim                                   pass    
 test-amd64-i386-xl-pvshim                                    fail    
 test-amd64-amd64-pygrub                                      pass    
 test-armhf-armhf-libvirt-qcow2                               fail    
 test-amd64-amd64-xl-qcow2                                    pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-armhf-armhf-libvirt-raw                                 pass    
 test-amd64-i386-libvirt-raw                                  pass    
 test-amd64-amd64-xl-rtds                                     pass    
 test-armhf-armhf-xl-rtds                                     pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64-shadow             pass    
 test-amd64-i386-xl-qemuu-debianhvm-amd64-shadow              pass    
 test-amd64-amd64-xl-shadow                                   pass    
 test-amd64-i386-xl-shadow                                    pass    
 test-arm64-arm64-xl-thunderx                                 pass    
 test-amd64-amd64-examine-uefi                                pass    
 test-amd64-i386-examine-uefi                                 pass    
 test-amd64-amd64-libvirt-vhd                                 pass    
 test-arm64-arm64-xl-vhd                                      pass    
 test-armhf-armhf-xl-vhd                                      pass    
 test-amd64-i386-xl-vhd                                       pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Published tested tree is already up to date.



From xen-devel-bounces@lists.xenproject.org Wed Jan 03 11:11:36 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 03 Jan 2024 11:11:36 +0000
Received: from list by lists.xenproject.org with outflank-mailman.660937.1030629 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rKz9a-0000QE-9L; Wed, 03 Jan 2024 11:11:18 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 660937.1030629; Wed, 03 Jan 2024 11:11:18 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rKz9a-0000Q7-6g; Wed, 03 Jan 2024 11:11:18 +0000
Received: by outflank-mailman (input) for mailman id 660937;
 Wed, 03 Jan 2024 11:11:17 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=AhKI=IN=alien8.de=bp@srs-se1.protection.inumbo.net>)
 id 1rKz9Z-0000PF-MQ
 for xen-devel@lists.xenproject.org; Wed, 03 Jan 2024 11:11:17 +0000
Received: from mail.alien8.de (mail.alien8.de [2a01:4f9:3051:3f93::2])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id cd5e586d-aa28-11ee-98ef-6d05b1d4d9a1;
 Wed, 03 Jan 2024 12:11:14 +0100 (CET)
Received: from localhost (localhost.localdomain [127.0.0.1])
 by mail.alien8.de (SuperMail on ZX Spectrum 128k) with ESMTP id 3C69140E0198; 
 Wed,  3 Jan 2024 11:11:09 +0000 (UTC)
Received: from mail.alien8.de ([127.0.0.1])
 by localhost (mail.alien8.de [127.0.0.1]) (amavisd-new, port 10026)
 with ESMTP id r8QeUS3cq4S7; Wed,  3 Jan 2024 11:11:06 +0000 (UTC)
Received: from zn.tnic (pd9530f8c.dip0.t-ipconnect.de [217.83.15.140])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange ECDHE (P-256) server-signature ECDSA (P-256) server-digest
 SHA256) (No client certificate requested)
 by mail.alien8.de (SuperMail on ZX Spectrum 128k) with ESMTPSA id 5A60640E01C5;
 Wed,  3 Jan 2024 11:10:42 +0000 (UTC)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: cd5e586d-aa28-11ee-98ef-6d05b1d4d9a1
X-Virus-Scanned: Debian amavisd-new at mail.alien8.de
Authentication-Results: mail.alien8.de (amavisd-new); dkim=pass (4096-bit key)
	header.d=alien8.de
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=alien8.de; s=alien8;
	t=1704280265; bh=EvFqA3G5zQt9g3fKMcrj1bE1ehqHXcw6mBCV4JtQWIw=;
	h=Date:From:To:Cc:Subject:References:In-Reply-To:From;
	b=YKx6rgmbRhf22e3UsoUMcNKqmDR9RA/CD4yEkGpCYrErsbXxbT093dcqKmHSXdCxP
	 LkV5RQUGPWUCaejPCF3Kii2sVRFCL6Ife0SQcbk/8riaTljlOgWrHDozGPvhXuMQ2Z
	 yrL1E2HjpBrhuJW5FL4SxiSpRIYBOe6dJQaJKf6Ey/TH8I8ge5eK0TaF3DTcYUNhDt
	 oGb9rlDwR0GwE/5PPWN+Os+Yzo7r6DIJhAnt/Sekwu4ny/9UIsed3mK9aY7600geYW
	 i+seCwzXQuNGD3cYPWTyVS+XXc1d97MVR55ACNC+oaCH3PbfpIMTt+mG4Ijn9mYUnu
	 VUgjl6O1JRCSGUKJti7cgFoq5U2YRjpSppqv/Osyg6KRB5o2iCzjhDYQgGN7cCiSgZ
	 8E+iqSF4BwVsT+BC9K+6T9yBaHR1X5L+92QxzXJxMXUpG972F0wzoU58pOCYjAM+Pl
	 4NS3GqFoyhlzvGRpQld7IsAVbL7dRzLolISmTSe2nb4QprN3lUPKZfn4oQ8e0ArEVN
	 Z2IAapg2TGR72DOeBBkP3nEIrf13tLIWGJ+k0w6AwCMT+EwZbfpnVHR/ciaBsCsM1C
	 StHl+kOjaXHS/aeOEPojCmdVHu8iupHgvOTjK3mRe9BVvjET2p1qSAIXIOxXZsKQmK
	 2dRfDvvHVHlh3jHhVZQrvpkA=
Date: Wed, 3 Jan 2024 12:10:36 +0100
From: Borislav Petkov <bp@alien8.de>
To: "Li, Xin3" <xin3.li@intel.com>
Cc: "linux-doc@vger.kernel.org" <linux-doc@vger.kernel.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"linux-edac@vger.kernel.org" <linux-edac@vger.kernel.org>,
	"linux-hyperv@vger.kernel.org" <linux-hyperv@vger.kernel.org>,
	"kvm@vger.kernel.org" <kvm@vger.kernel.org>,
	"xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>,
	"tglx@linutronix.de" <tglx@linutronix.de>,
	"mingo@redhat.com" <mingo@redhat.com>,
	"dave.hansen@linux.intel.com" <dave.hansen@linux.intel.com>,
	"x86@kernel.org" <x86@kernel.org>, "hpa@zytor.com" <hpa@zytor.com>,
	"Lutomirski, Andy" <luto@kernel.org>,
	"pbonzini@redhat.com" <pbonzini@redhat.com>,
	"seanjc@google.com" <seanjc@google.com>,
	"peterz@infradead.org" <peterz@infradead.org>,
	"jgross@suse.com" <jgross@suse.com>,
	"Shankar, Ravi V" <ravi.v.shankar@intel.com>,
	"mhiramat@kernel.org" <mhiramat@kernel.org>,
	"andrew.cooper3@citrix.com" <andrew.cooper3@citrix.com>,
	"jiangshanlai@gmail.com" <jiangshanlai@gmail.com>,
	"nik.borisov@suse.com" <nik.borisov@suse.com>,
	"Kang, Shan" <shan.kang@intel.com>
Subject: Re: [PATCH v13 01/35] x86/cpufeatures,opcode,msr: Add the WRMSRNS
 instruction support
Message-ID: <20240103111036.GCZZVArGsoHdPauDFs@fat_crate.local>
References: <20231205105030.8698-1-xin3.li@intel.com>
 <20231205105030.8698-2-xin3.li@intel.com>
 <20240102153426.GBZZQtAiWSdGAgKoIL@fat_crate.local>
 <SA1PR11MB67348F79B44BE92FD2C8F12DA861A@SA1PR11MB6734.namprd11.prod.outlook.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
In-Reply-To: <SA1PR11MB67348F79B44BE92FD2C8F12DA861A@SA1PR11MB6734.namprd11.prod.outlook.com>

On Tue, Jan 02, 2024 at 10:06:27PM +0000, Li, Xin3 wrote:
> Do I need to send an updated patch?

> Or just leave it to the maintainer who is going to take care of it?

While waiting, please take a look at this:

https://kernel.org/doc/html/latest/process/submitting-patches.html#don-t-get-discouraged-or-impatient

Might want to read the whole doc too.

But to answer your question: you wait a few weeks and collect all
comments and review feedback that you've received and incorporate them
into the patchset.

Then, after the time passes you send a new revision and explain in the
0th message what has changed.

Ok?

Thx.

-- 
Regards/Gruss,
    Boris.

https://people.kernel.org/tglx/notes-about-netiquette


From xen-devel-bounces@lists.xenproject.org Wed Jan 03 13:35:15 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 03 Jan 2024 13:35:15 +0000
Received: from list by lists.xenproject.org with outflank-mailman.660953.1030639 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rL1Od-0001aA-Nh; Wed, 03 Jan 2024 13:34:59 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 660953.1030639; Wed, 03 Jan 2024 13:34:59 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rL1Od-0001a3-KY; Wed, 03 Jan 2024 13:34:59 +0000
Received: by outflank-mailman (input) for mailman id 660953;
 Wed, 03 Jan 2024 13:34:58 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=+sDa=IN=amd.com=Michal.Orzel@srs-se1.protection.inumbo.net>)
 id 1rL1Oc-0001Zx-3f
 for xen-devel@lists.xenproject.org; Wed, 03 Jan 2024 13:34:58 +0000
Received: from NAM11-CO1-obe.outbound.protection.outlook.com
 (mail-co1nam11on20601.outbound.protection.outlook.com
 [2a01:111:f403:2416::601])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id e1c01b49-aa3c-11ee-98ef-6d05b1d4d9a1;
 Wed, 03 Jan 2024 14:34:56 +0100 (CET)
Received: from CY5PR20CA0011.namprd20.prod.outlook.com (2603:10b6:930:3::6) by
 LV8PR12MB9358.namprd12.prod.outlook.com (2603:10b6:408:201::12) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7135.25; Wed, 3 Jan
 2024 13:34:51 +0000
Received: from CY4PEPF0000E9DB.namprd05.prod.outlook.com
 (2603:10b6:930:3:cafe::ce) by CY5PR20CA0011.outlook.office365.com
 (2603:10b6:930:3::6) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7159.13 via Frontend
 Transport; Wed, 3 Jan 2024 13:34:50 +0000
Received: from SATLEXMB03.amd.com (165.204.84.17) by
 CY4PEPF0000E9DB.mail.protection.outlook.com (10.167.241.81) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.7159.9 via Frontend Transport; Wed, 3 Jan 2024 13:34:50 +0000
Received: from SATLEXMB05.amd.com (10.181.40.146) by SATLEXMB03.amd.com
 (10.181.40.144) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.34; Wed, 3 Jan
 2024 07:34:49 -0600
Received: from SATLEXMB04.amd.com (10.181.40.145) by SATLEXMB05.amd.com
 (10.181.40.146) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.34; Wed, 3 Jan
 2024 07:34:49 -0600
Received: from [10.252.147.188] (10.180.168.240) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server id 15.1.2507.34 via Frontend
 Transport; Wed, 3 Jan 2024 07:34:47 -0600
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: e1c01b49-aa3c-11ee-98ef-6d05b1d4d9a1
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=iwwP/VxVW+8Yi6tynv5X8H6up19yyDnorOh20hxlmjKEsbyaFOnuDtjvtDy/dZffxdzF9+O2b8g1UfTDygJRQem0ZQPuJvt2+ymXZFZGeD82zUH6j/C9RrchMVZIA+Ay9vzM1W5PTYBlkvjCfxX7AkoHO35C35Z61/fjv6ai54Ce3iH6sSOHzHxt1oeBEZobvEXZXKGw8Z3woQBgGvScuGvcf2+iWm0plbBn9j5a3MV7LB7FMp07OTZ5lfO3PpIoFiettC/LSMyJOzvRkCjIuGk3qo3DfXpgIXRCnoVeWsW5TA5JCVyDHCthViwmCteTMZ00yA2AOkdya7anUVkvRA==
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=nXIH0y8c2NXSOH6MYca59Y5ms4J4oWRk9WSB63zMS4w=;
 b=L1XQKmqrSvSxlqkc9OjXfFfiJ50wxQ12GuL58qcGIrJ+2WtYOifN0Ft0EuFpepRY4QPxDvTkTeB0ONMDF2SZKMX9qM9VsmgjeaJztiJxDYaeGbx7SzCegJbesPZFsBDXPZuD+pVw0v7XVxAP/59GioPfZx+ta4IWXh6SFhYH5f7P/deE+pUpYwhnj0EgV0OgPHgKtOsnIgC0ssAOFhAVJdQWSxheV0iOJyd3mcWn4ErK43YGbr+cqqq32yfCp/0r5qiiX1lm38/X6HP5jl7VfNJtFPn0PygQ6PIizbA34zR3sxc8HLZnEVxdZzTqgSz7cCLWJTOuLE+M1q6ZfWx+TA==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=minervasys.tech 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)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=nXIH0y8c2NXSOH6MYca59Y5ms4J4oWRk9WSB63zMS4w=;
 b=u+cRmB9Ku3X1VNE7whFbOuRjlWj6EzJSzff8mOttlnJcu2BI4hzQ3qWHN3RZafS7VeZ+KaRpduxRbGmwnkvqZlwBacidFxCxHmGBUIB17q09e2VRfWFEbuJRyNp46vmNJoO+DFbJMlur5kyojg7qd9MoGkI1SyzHlOO0Wq2TXIo=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=SATLEXMB03.amd.com; pr=C
Message-ID: <6d652309-50e1-4850-ac52-d086a3a32726@amd.com>
Date: Wed, 3 Jan 2024 14:34:41 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v5 00/13] Arm cache coloring
Content-Language: en-US
To: Carlo Nonato <carlo.nonato@minervasys.tech>,
	<xen-devel@lists.xenproject.org>
CC: Andrew Cooper <andrew.cooper3@citrix.com>, George Dunlap
	<george.dunlap@citrix.com>, Jan Beulich <jbeulich@suse.com>, Julien Grall
	<julien@xen.org>, Stefano Stabellini <sstabellini@kernel.org>, Wei Liu
	<wl@xen.org>, Bertrand Marquis <bertrand.marquis@arm.com>, Volodymyr Babchuk
	<Volodymyr_Babchuk@epam.com>, Anthony PERARD <anthony.perard@citrix.com>,
	Juergen Gross <jgross@suse.com>
References: <20240102095138.17933-1-carlo.nonato@minervasys.tech>
From: Michal Orzel <michal.orzel@amd.com>
In-Reply-To: <20240102095138.17933-1-carlo.nonato@minervasys.tech>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 7bit
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CY4PEPF0000E9DB:EE_|LV8PR12MB9358:EE_
X-MS-Office365-Filtering-Correlation-Id: 9fef1119-f272-4006-2766-08dc0c60c2e5
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam: BCL:0;
X-Microsoft-Antispam-Message-Info:
	WWsLzV4mtwGdAGl2LZ89SMQhFZN6TZWH/7OvKl/4iZMZK8qJHCyk6YO7Y4dqK9BIEZGQB8MEbkNDR9RZ4mxIla7dAobNTnrthIFmrDt6mQEMw5BpoIVvg6eMfoN9wCG7cKEXaWzECCbZJzEiCHfsZvpaeoB4cFWkn1H6JTmjq+mzMqjRb9aJgu9si0VIF3EViNBtAXtUxz8dZG/93vDnq1/29O8Aslx29mDZZu2jE/QkKPGT55nxgkl6y3WRVzCobeluytptCgkGjP10OTGuZ+dpkuugOPtle3/k5ddJRDz6scUdRLhS9YmSKt+q7emGDz7Zyj1yAUikLsrQEECcYg6sRChKgmouL2JhiUBqOTBAHCbjQgVMcB6Txme5N0+pGJhQIdrSSa0VxEGD6GnWywCJgeAWj9+g4d1JqskdH8gdXDjAEkSAJm14yb2zi4b7WC55D4FtUeyHYd1pr19GhJJZryRNVJULPOUg1NBptSIzw1ArTM0vzVWL0sC4ni7rQGh2zqBiKp8XuzOC0RBmyIbEW9E6FDVWldpKVhFCqHHDCtmzkPSJzArPtqqmfcOhYVk4k7LctW5Va4UA5rMZbReBe+Ql+cZWW7Ya8/h20LoRGcDWfuMDeAKO3HwZIDvkBE6kFvxcRIIp1ABurANUGvPK6FtTCAwpganBj8W9JSYz+FYMNm3z7n72AYFWRf9ij4/XMCzFjd4iYYXqM2C2O3hVbM933i6/fWtO6R8HfTJPPq707R9BF0m7eZ/YH4Qe6tLlV9kpNZcG0TqTD8axLaNzu44dh1e2i2rsEYL7IfE=
X-Forefront-Antispam-Report:
	CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB03.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230031)(4636009)(136003)(376002)(39860400002)(346002)(396003)(230922051799003)(1800799012)(64100799003)(82310400011)(186009)(451199024)(40470700004)(46966006)(36840700001)(31686004)(40460700003)(40480700001)(426003)(336012)(83380400001)(26005)(36756003)(86362001)(31696002)(6666004)(81166007)(82740400003)(356005)(8676002)(44832011)(47076005)(4326008)(41300700001)(7416002)(5660300002)(8936002)(2616005)(53546011)(36860700001)(70586007)(70206006)(54906003)(110136005)(16576012)(316002)(478600001)(966005)(2906002)(43740500002)(36900700001);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Jan 2024 13:34:50.2521
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 9fef1119-f272-4006-2766-08dc0c60c2e5
X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB03.amd.com]
X-MS-Exchange-CrossTenant-AuthSource:
	CY4PEPF0000E9DB.namprd05.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: LV8PR12MB9358

Hi,

On 02/01/2024 10:51, Carlo Nonato wrote:
> 
> 
> Shared caches in multi-core CPU architectures represent a problem for
> predictability of memory access latency. This jeopardizes applicability
> of many Arm platform in real-time critical and mixed-criticality
> scenarios. We introduce support for cache partitioning with page
> coloring, a transparent software technique that enables isolation
> between domains and Xen, and thus avoids cache interference.
> 
> When creating a domain, a simple syntax (e.g. `0-3` or `4-11`) allows
> the user to define assignments of cache partitions ids, called colors,
> where assigning different colors guarantees no mutual eviction on cache
> will ever happen. This instructs the Xen memory allocator to provide
> the i-th color assignee only with pages that maps to color i, i.e. that
> are indexed in the i-th cache partition.
> 
> The proposed implementation supports the dom0less feature.
> The proposed implementation doesn't support the static-mem feature.
> The solution has been tested in several scenarios, including Xilinx Zynq
> MPSoCs.
> 
> In this patch series there are two major unacceptable workarounds for which
> I want to ask you for comments:
>  - #3: allocate_memory() has been moved in dom0less_build.c, so I just copied
>  it back to make it compile.
I would move it to domain_build.c and add a prototype in domain_build.h.
You could guard it together with allocate_bank_memory() for DOM0LESS || LLC or just
remove the guards (in former case, you would need to protect your call with #ifdef in construct_dom0()).

>  - #13: consider_modules() has been moved to arm32 only. Again I just copied it.
I would move it to setup.c and add a prototype in setup.h.
As for the guards, if we want them (personally I don't see the need), you would need LLC || (ARM_32 && MMU).

BTW. Patchew reports some build issues in your series:
https://gitlab.com/xen-project/patchew/xen/-/pipelines/1124313980

Make sure to build test your series on different arches. You can ask on IRC to become a member
on gitlab so that you can trigger the pipeline by pushing the changes to your fork on people/<you>/xen.

~Michal


From xen-devel-bounces@lists.xenproject.org Wed Jan 03 14:23:11 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 03 Jan 2024 14:23:11 +0000
Received: from list by lists.xenproject.org with outflank-mailman.660958.1030649 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rL298-0008Ru-6L; Wed, 03 Jan 2024 14:23:02 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 660958.1030649; Wed, 03 Jan 2024 14:23:02 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rL298-0008Rn-3Y; Wed, 03 Jan 2024 14:23:02 +0000
Received: by outflank-mailman (input) for mailman id 660958;
 Wed, 03 Jan 2024 14:23:01 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=lN8p=IN=cloud.com=kelly.choi@srs-se1.protection.inumbo.net>)
 id 1rL297-0008Rh-Er
 for xen-devel@lists.xenproject.org; Wed, 03 Jan 2024 14:23:01 +0000
Received: from mail-ed1-x52e.google.com (mail-ed1-x52e.google.com
 [2a00:1450:4864:20::52e])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 9833bc65-aa43-11ee-9b0f-b553b5be7939;
 Wed, 03 Jan 2024 15:22:59 +0100 (CET)
Received: by mail-ed1-x52e.google.com with SMTP id
 4fb4d7f45d1cf-556c3f0d6c5so893652a12.2
 for <xen-devel@lists.xenproject.org>; Wed, 03 Jan 2024 06:22:59 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 9833bc65-aa43-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1704291778; x=1704896578; darn=lists.xenproject.org;
        h=to:subject:message-id:date:from:mime-version:from:to:cc:subject
         :date:message-id:reply-to;
        bh=sfUd50JuQ7t5eBNDEI5gQYk96jpnuEgj/78a/sZUKgg=;
        b=Hw5RJHBdML0NfeG7RCMXrUvzOoX5MUpYcRd2wKQ83IR7fk1pp5IW/lxBzhVwINzRTx
         hy6FxwmLmk7w4fnuIF27uEUNozIEV/4rQ1ph+EZ+Zxd5WJ99f3ueM3VNm8vlMQuHv+FU
         Pp/1hNHKbthWr/kLXGFYta/9rZaN1E1ghlZj8=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704291778; x=1704896578;
        h=to:subject:message-id:date:from:mime-version:x-gm-message-state
         :from:to:cc:subject:date:message-id:reply-to;
        bh=sfUd50JuQ7t5eBNDEI5gQYk96jpnuEgj/78a/sZUKgg=;
        b=gjxRKKgDE6rA969EApcO4elWVNohQRDFDvQHSlhFDebC94jqxeP6XRf6DmBIMbWVLm
         Az8X9j00hTxASx9zYzDbpIP8CiqfPjFNa9YyKUpVjuP1mGyjc97gva9yv0SQfU6jhjpH
         bhR+wLFcItEKOFkiqmWQQJCbg0w5WmRaMlrGVRXkw86SixePM3Cu0J4a97M5LpjoLoZW
         CSsQ2N6c/Md0VfCYQUlvPrsIRsPEK6rHbwAIaTrVwCCK88kzrGtKLW7THVceuWguZh4R
         ncWYiZ9BaW+wxs+5B8aLrgt4ZdiN2RNgkNFB0hT9R6uPeehINp2RQCWGOIWSo5B94abA
         u5Pw==
X-Gm-Message-State: AOJu0YxM+FMZrlW9YaZC92Fdg193il54u3pHRG1cyac8O5DRGQnyas0X
	ZFGaTdDUsUM6Fxx2B5lzKAgyxNLFmmhObr4oJ1qaSl6mlMVP7lkXvMMnhQAEgjqCvsQN
X-Google-Smtp-Source: AGHT+IGiWfVumdl4kz71qOxQtdR5gjLwAZfSH4PxfevQ1UPZ3L0gzkRRfDuXnwOep7jjy8kg8caMieVRFQTPR+BWA/M=
X-Received: by 2002:a50:c111:0:b0:556:c883:4763 with SMTP id
 l17-20020a50c111000000b00556c8834763mr312030edf.119.1704291778128; Wed, 03
 Jan 2024 06:22:58 -0800 (PST)
MIME-Version: 1.0
From: Kelly Choi <kelly.choi@cloud.com>
Date: Wed, 3 Jan 2024 14:22:21 +0000
Message-ID: <CAO-mL=zSuaajjj7Ynxfvf9YhV5sR+M=njdxzCXYA9Pty1kw4Gg@mail.gmail.com>
Subject: [ANNOUNCE] Call for agenda items for Community Call @ 1600 UTC, 18th
 Jan 2024
To: xen-devel@lists.xenproject.org
Content-Type: multipart/alternative; boundary="000000000000078885060e0b5abe"

--000000000000078885060e0b5abe
Content-Type: text/plain; charset="UTF-8"

Hi all,

Please add your proposed agenda and name next to any items in this *link
here* <https://cryptpad.fr/pad/#/2/pad/edit/FoIa1svj6GD4rYr-H2DtEn9c/>

If any action items have been resolved, please remove them from the sheet.

*CALL LINK: https://meet.jit.si/XenProjectCommunityCall
<https://www.google.com/url?q=https://meet.jit.si/XenProjectCommunityCall&sa=D&source=calendar&ust=1699196661201312&usg=AOvVaw1FcogEsMjFSd1Pmi7V0cBc>*

*DATE: Postponing till 18th January 2024 to allow everyone on PTO to join *

*TIME: 1600 UTC (4 pm UK time)*
Note the following administrative conventions for the call:

* To allow time to switch between meetings, we plan on starting the
agenda at 16:05 UTC sharp.  Aim to join by 16:03 UTC if possible to allocate
time to sort out technical difficulties.

* If you want to be CC'ed please add or remove yourself from the
sign-up-sheet at
https://cryptpad.fr/pad/#/2/pad/edit/D9vGzihPxxAOe6RFPz0sRCf+/

== Dial-in Information ==
## Meeting time
16:00 - 17:00 British time
Further International meeting times:
https://www.timeanddate.com/worldclock/meetingdetails.html?year=2024&month=1&day=18&hour=16&min=0&sec=0&p1=1234&p2=37&p3=224&p4=179

## Dial in details
https://meet.jit.si/static/dialInInfo.html?room=XenProjectCommunityCall

Many thanks,
Kelly Choi

Community Manager
Xen Project

--000000000000078885060e0b5abe
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr">Hi all,<br><p>Please add your proposed agenda and name nex=
t to any items in this=C2=A0<a href=3D"https://cryptpad.fr/pad/#/2/pad/edit=
/FoIa1svj6GD4rYr-H2DtEn9c/" target=3D"_blank"><b>link here</b></a>=C2=A0</p=
><p>If any action items have been resolved, please remove them from the she=
et.=C2=A0</p><p><b><span class=3D"gmail-il">CALL</span>=C2=A0LINK:=C2=A0<a =
href=3D"https://www.google.com/url?q=3Dhttps://meet.jit.si/XenProjectCommun=
ityCall&amp;sa=3DD&amp;source=3Dcalendar&amp;ust=3D1699196661201312&amp;usg=
=3DAOvVaw1FcogEsMjFSd1Pmi7V0cBc" target=3D"_blank">https://meet.jit.si/XenP=
rojectCommunityCall</a></b></p><p><b>DATE: Postponing till 18th January 202=
4 to allow everyone on PTO to join=C2=A0</b></p><p><b>TIME: 1600 UTC (4 pm =
UK time)</b></p>Note the following administrative conventions for the=C2=A0=
<span class=3D"gmail-il">call</span>:<div><br>* To allow time to switch bet=
ween meetings, we plan on starting the<br>agenda at 16:05 UTC sharp.=C2=A0 =
Aim to join by 16:03 UTC if possible to allocate<br>time to sort out techni=
cal difficulties.<br><br>* If you want to be CC&#39;ed please add or remove=
 yourself from the<br>sign-up-sheet at=C2=A0<a href=3D"https://cryptpad.fr/=
pad/#/2/pad/edit/D9vGzihPxxAOe6RFPz0sRCf+/" rel=3D"noreferrer" target=3D"_b=
lank">https://cryptpad.fr/pad/#/2/pad/edit/D9vGzihPxxAOe6RFPz0sRCf+/</a><br=
><br>=3D=3D=C2=A0<span class=3D"gmail-il">Dial</span>-in Information =3D=3D=
<br>## Meeting time<br>16:00 - 17:00 British time<br>Further International =
meeting times:<br><a href=3D"https://www.timeanddate.com/worldclock/meeting=
details.html?year=3D2024&amp;month=3D1&amp;day=3D18&amp;hour=3D16&amp;min=
=3D0&amp;sec=3D0&amp;p1=3D1234&amp;p2=3D37&amp;p3=3D224&amp;p4=3D179">https=
://www.timeanddate.com/worldclock/meetingdetails.html?year=3D2024&amp;month=
=3D1&amp;day=3D18&amp;hour=3D16&amp;min=3D0&amp;sec=3D0&amp;p1=3D1234&amp;p=
2=3D37&amp;p3=3D224&amp;p4=3D179</a><br><br>##=C2=A0<span class=3D"gmail-il=
">Dial</span>=C2=A0in details<br><a href=3D"https://meet.jit.si/static/dial=
InInfo.html?room=3DXenProjectCommunityCall" rel=3D"noreferrer" target=3D"_b=
lank">https://meet.jit.si/static/dialInInfo.html?room=3DXenProjectCommunity=
Call</a><div class=3D"gmail-yj6qo"></div><br class=3D"gmail-Apple-interchan=
ge-newline"><div><div dir=3D"ltr" class=3D"gmail_signature" data-smartmail=
=3D"gmail_signature"><div dir=3D"ltr"><div>Many thanks,</div><div>Kelly Cho=
i</div><div><br></div><div><div style=3D"color:rgb(136,136,136)">Community =
Manager</div><div style=3D"color:rgb(136,136,136)">Xen Project=C2=A0<br></d=
iv></div></div></div></div></div></div>

--000000000000078885060e0b5abe--


From xen-devel-bounces@lists.xenproject.org Wed Jan 03 15:10:51 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 03 Jan 2024 15:10:51 +0000
Received: from list by lists.xenproject.org with outflank-mailman.660964.1030658 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rL2tA-00071V-Km; Wed, 03 Jan 2024 15:10:36 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 660964.1030658; Wed, 03 Jan 2024 15:10:36 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rL2tA-00071O-I6; Wed, 03 Jan 2024 15:10:36 +0000
Received: by outflank-mailman (input) for mailman id 660964;
 Wed, 03 Jan 2024 15:10:35 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>) id 1rL2t9-00071I-M9
 for xen-devel@lists.xenproject.org; Wed, 03 Jan 2024 15:10:35 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rL2t8-0001M8-Tu; Wed, 03 Jan 2024 15:10:34 +0000
Received: from 54-240-197-233.amazon.com ([54.240.197.233] helo=[192.168.6.12])
 by xenbits.xenproject.org with esmtpsa
 (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rL2t8-0002Jv-MA; Wed, 03 Jan 2024 15:10:34 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
	s=20200302mail; h=Content-Transfer-Encoding:Content-Type:In-Reply-To:From:
	References:Cc:To:Subject:MIME-Version:Date:Message-ID;
	bh=z86yiwuWRdk7PWdIze4M68IkZGZ24eESYeRXBDOMy8E=; b=O5lGFMk+0EYL9nQcwTdMN9/cWF
	00Ox51XKqDnpfAigDlGB8QuFW3Kz4Zb5M5t7JNjGNwiqtimjeM3sWf177HnNJRiClIkSV2lMwcVDO
	f5XXGrO9IYp763luoMet1c1XmqWqJRLOvo8ZFX5ufyW0xY1YBZUohT2IwTeJtl6UJx/k=;
Message-ID: <a19d8964-733a-4037-bef6-3cdd79f56f13@xen.org>
Date: Wed, 3 Jan 2024 15:10:32 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v6 02/17] xen/arm: implement helpers to get and update
 NUMA status
Content-Language: en-GB
To: Henry Wang <Henry.Wang@arm.com>, xen-devel@lists.xenproject.org
Cc: Wei Chen <wei.chen@arm.com>, Stefano Stabellini <sstabellini@kernel.org>,
 Bertrand Marquis <bertrand.marquis@arm.com>,
 Michal Orzel <michal.orzel@amd.com>,
 Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>
References: <20231120025431.14845-1-Henry.Wang@arm.com>
 <20231120025431.14845-3-Henry.Wang@arm.com>
From: Julien Grall <julien@xen.org>
In-Reply-To: <20231120025431.14845-3-Henry.Wang@arm.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

Hi Henry,

On 20/11/2023 02:54, Henry Wang wrote:
> From: Wei Chen <wei.chen@arm.com>
> 
> NUMA has one global and one implementation specific switches. For
> ACPI NUMA implementation, Xen has acpi_numa, so we introduce
> device_tree_numa for device tree NUMA implementation. And use
> enumerations to indicate init, off and on status.
> 
> arch_numa_disabled will get device_tree_numa status, but for
> arch_numa_setup we have not provided boot arguments to setup
> device_tree_numa. So we just return -EINVAL in this patch.
> 
> Signed-off-by: Wei Chen <wei.chen@arm.com>
> Signed-off-by: Henry Wang <Henry.Wang@arm.com>
> ---
> v3 -> v6:
> - Rebase on top of staging without code changes.
> v2 -> v3:
> - Rename the first entry of enum dt_numa_status as DT_NUMA_DEFAULT.
> - Make enum dt_numa_status device_tree_numa as __ro_after_init and
> - assign it explicitly to DT_NUMA_DEFAULT.
> - Update the year in copyright to 2023.
> - Don't move the x86 numa_disabled() and make Arm's numa_disabled()
>    a static inline function for !CONFIG_NUMA.
> v1 -> v2:
> - Use arch_numa_disabled to replace numa_enable_with_firmware.
> - Introduce enumerations for device tree numa status.
> - Use common numa_disabled, drop Arm version numa_disabled.
> - Introduce arch_numa_setup for Arm.
> - Rename bad_srat to numa_bad.
> - Add numa_enable_with_firmware helper.
> - Add numa_disabled helper.
> - Refine commit message.
> ---
>   xen/arch/arm/include/asm/numa.h | 17 +++++++++++
>   xen/arch/arm/numa.c             | 50 +++++++++++++++++++++++++++++++++
>   2 files changed, 67 insertions(+)
>   create mode 100644 xen/arch/arm/numa.c
> 
> diff --git a/xen/arch/arm/include/asm/numa.h b/xen/arch/arm/include/asm/numa.h
> index 7d6ae36a19..83f60ad05b 100644
> --- a/xen/arch/arm/include/asm/numa.h
> +++ b/xen/arch/arm/include/asm/numa.h
> @@ -22,6 +22,8 @@ typedef u8 nodeid_t;
>    */
>   #define NR_NODE_MEMBLKS NR_MEM_BANKS
>   
> +extern bool numa_disabled(void);
> +
>   #else
>   
>   /* Fake one node for now. See also node_online_map. */
> @@ -39,6 +41,21 @@ extern mfn_t first_valid_mfn;
>   #define node_start_pfn(nid) (mfn_x(first_valid_mfn))
>   #define __node_distance(a, b) (20)
>   
> +static inline bool numa_disabled(void)
> +{
> +    return true;
> +}
> +
> +static inline bool arch_numa_unavailable(void)
> +{
> +    return true;
> +}
> +
> +static inline bool arch_numa_broken(void)
> +{
> +    return true;
> +}
> +
>   #endif
>   
>   #define arch_want_default_dmazone() (false)
> diff --git a/xen/arch/arm/numa.c b/xen/arch/arm/numa.c
> new file mode 100644
> index 0000000000..eb5d0632cb
> --- /dev/null
> +++ b/xen/arch/arm/numa.c
> @@ -0,0 +1,50 @@
> +/* SPDX-License-Identifier: GPL-2.0 */

Please use GPL-2.0-only for the SPDX tag.

> +/*
> + * Arm Architecture support layer for NUMA.
> + *
> + * Copyright (C) 2023 Arm Ltd
> + *
> + * This program is free software; you can redistribute it and/or modify
> + * it under the terms of the GNU General Public License version 2 as
> + * published by the Free Software Foundation.
> + *
> + * This program is distributed in the hope that it will be useful,
> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> + * GNU General Public License for more details.
> + *
> + * You should have received a copy of the GNU General Public License
> + * along with this program. If not, see <http://www.gnu.org/licenses/>.
> + *

You provided a SPDX tag, so the full license txt should not be added.

> + */
> +#include <xen/init.h>
> +#include <xen/numa.h>
> +
> +enum dt_numa_status {
> +    DT_NUMA_DEFAULT,
> +    DT_NUMA_ON,
> +    DT_NUMA_OFF,
> +};

NIT: I am guessing at some point we will want to support ACPI. So I 
would consider to remove dt/DT from the name. So we avoid some churn in 
the future.

> +
> +static enum dt_numa_status __ro_after_init device_tree_numa = DT_NUMA_DEFAULT;
> +
> +void __init numa_fw_bad(void)
> +{
> +    printk(KERN_ERR "NUMA: device tree numa info table not used.\n");

KERN_ERR is used for compatibility with Linux. Given this is a Xen file, 
then please use XENLOG_ERR.

Acked-by: Julien Grall <julien@xen.org>

Cheers,

-- 
Julien Grall


From xen-devel-bounces@lists.xenproject.org Wed Jan 03 15:14:59 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 03 Jan 2024 15:14:59 +0000
Received: from list by lists.xenproject.org with outflank-mailman.660968.1030668 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rL2xO-0007oq-32; Wed, 03 Jan 2024 15:14:58 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 660968.1030668; Wed, 03 Jan 2024 15:14:58 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rL2xO-0007oj-0I; Wed, 03 Jan 2024 15:14:58 +0000
Received: by outflank-mailman (input) for mailman id 660968;
 Wed, 03 Jan 2024 15:14:56 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>) id 1rL2xM-0007od-U6
 for xen-devel@lists.xenproject.org; Wed, 03 Jan 2024 15:14:56 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rL2xK-0001RO-Um; Wed, 03 Jan 2024 15:14:54 +0000
Received: from 54-240-197-233.amazon.com ([54.240.197.233] helo=[192.168.6.12])
 by xenbits.xenproject.org with esmtpsa
 (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rL2xK-0002ZD-Ow; Wed, 03 Jan 2024 15:14:54 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
	s=20200302mail; h=Content-Transfer-Encoding:Content-Type:In-Reply-To:From:
	References:Cc:To:Subject:MIME-Version:Date:Message-ID;
	bh=ypHAj2wdIO5QnT/ET1099BP7ySScEeYhwpu3zBJ78rU=; b=3rzcynuTMEg9Rlr2lOFJrNE/IT
	dEioij6pj6aWAnO7Ht4Cbg6/au0NHcdsy8STzNr+1JY13ifFoZPrCWKuX3T+o3doNCJG48/WfdpO3
	0r6CrKRyUFkf/SRLztylSPWsBDWeUsaSIgrzOjCfoAeUKtUHvnUjQesSZwlon2p07wBY=;
Message-ID: <dcf4b52c-15a4-4a1b-85e0-1b95c653f0ce@xen.org>
Date: Wed, 3 Jan 2024 15:14:52 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v6 00/17] Device tree based NUMA support for Arm
Content-Language: en-GB
To: Henry Wang <Henry.Wang@arm.com>, xen-devel@lists.xenproject.org
Cc: Stefano Stabellini <sstabellini@kernel.org>,
 Bertrand Marquis <bertrand.marquis@arm.com>,
 Michal Orzel <michal.orzel@amd.com>,
 Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
 Andrew Cooper <andrew.cooper3@citrix.com>,
 George Dunlap <george.dunlap@citrix.com>, Jan Beulich <jbeulich@suse.com>,
 Wei Liu <wl@xen.org>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger.pau@citrix.com>, Community Manager <community.manager@xenproject.org>
References: <20231120025431.14845-1-Henry.Wang@arm.com>
From: Julien Grall <julien@xen.org>
In-Reply-To: <20231120025431.14845-1-Henry.Wang@arm.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

Hi Henry,

On 20/11/2023 02:54, Henry Wang wrote:
> The preparation work to support NUMA on Arm has been merged
> and can be found at [1] and [2]. The initial discussions of
> the Arm NUMA support can be found at [3].
> 
> - Background of this series:
> 
> Xen memory allocation and scheduler modules are NUMA aware.
> But actually, on x86 has implemented the architecture APIs
> to support NUMA. Arm was providing a set of fake architecture
> APIs to make it compatible with NUMA awared memory allocation
> and scheduler.
> 
> Arm system was working well as a single node NUMA system with
> these fake APIs, because we didn't have multiple nodes NUMA
> system on Arm. But in recent years, more and more Arm devices
> support multiple nodes NUMA system.
> 
> So now we have a new problem. When Xen is running on these Arm
> devices, Xen still treat them as single node SMP systems. The
> NUMA affinity capability of Xen memory allocation and scheduler
> becomes meaningless. Because they rely on input data that does
> not reflect real NUMA layout.
> 
> Xen still think the access time for all of the memory is the
> same for all CPUs. However, Xen may allocate memory to a VM
> from different NUMA nodes with different access speeds. This
> difference can be amplified in workloads inside VM, causing
> performance instability and timeouts.
> 
> So in this patch series, we implement a set of NUMA API to use
> device tree to describe the NUMA layout. We reuse most of the
> code of x86 NUMA to create and maintain the mapping between
> memory and CPU, create the matrix between any two NUMA nodes.
> Except ACPI and some x86 specified code, we have moved other
> code to common. In next stage, when we implement ACPI based
> NUMA for Arm64, we may move the ACPI NUMA code to common too,
> but in current stage, we keep it as x86 only.
> 
> This patch serires has been tested and booted well on FVP in
> Arm64 mode with NUMA configs in device tree and one HPE x86
> NUMA machine.

This series doesn't seem to apply cleanly to staging. Do you have a tree 
with the series applied? This would help to check some of the final 
behavior.

Cheers,

-- 
Julien Grall


From xen-devel-bounces@lists.xenproject.org Wed Jan 03 16:02:19 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 03 Jan 2024 16:02:19 +0000
Received: from list by lists.xenproject.org with outflank-mailman.660974.1030678 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rL3h6-0007Uf-IQ; Wed, 03 Jan 2024 16:02:12 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 660974.1030678; Wed, 03 Jan 2024 16:02:12 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rL3h6-0007UY-Fq; Wed, 03 Jan 2024 16:02:12 +0000
Received: by outflank-mailman (input) for mailman id 660974;
 Wed, 03 Jan 2024 16:02:11 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rL3h5-0007UO-G6; Wed, 03 Jan 2024 16:02:11 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rL3h5-00032I-80; Wed, 03 Jan 2024 16:02:11 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rL3h4-0002X7-PV; Wed, 03 Jan 2024 16:02:10 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rL3h4-0007Qo-Oy; Wed, 03 Jan 2024 16:02:10 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=h23pBEQkfEHnho+OoXDLF1ukqwV4WEoLxSOBSW7OPFA=; b=1LVLJByyj4288j17fBjDf7fw+J
	4eoY7kFPW0cvaeGAfl5FLMfWlJwcHYTXSCfy9z9ruKmEh7M9G8VqMJEz73sOuNOIC4mnlR7DLIhOC
	nZKpGXEKYYG0nhl86DSernPKUWiXL1M/EU/6vfUXVAxyn06tK5zTyovRC0Cpmw5TyAkI=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184245-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [ovmf test] 184245: all pass - PUSHED
X-Osstest-Versions-This:
    ovmf=7a5823f85be99b9a92751fcf4141f7982fa5cc80
X-Osstest-Versions-That:
    ovmf=d7d4f09ff815794761f84d06e307001afe6376c4
From: osstest service owner <osstest-admin@xenproject.org>
Date: Wed, 03 Jan 2024 16:02:10 +0000

flight 184245 ovmf real [real]
http://logs.test-lab.xenproject.org/osstest/logs/184245/

Perfect :-)
All tests in this flight passed as required
version targeted for testing:
 ovmf                 7a5823f85be99b9a92751fcf4141f7982fa5cc80
baseline version:
 ovmf                 d7d4f09ff815794761f84d06e307001afe6376c4

Last test of basis   184228  2023-12-27 00:12:45 Z    7 days
Testing same since   184245  2024-01-03 14:14:26 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Jeff Brasen <jbrasen@nvidia.com>
  Jeff Brasen via groups.io <jbrasen=nvidia.com@groups.io>

jobs:
 build-amd64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-amd64-amd64-xl-qemuu-ovmf-amd64                         pass    
 test-amd64-i386-xl-qemuu-ovmf-amd64                          pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Pushing revision :

To xenbits.xen.org:/home/xen/git/osstest/ovmf.git
   d7d4f09ff8..7a5823f85b  7a5823f85be99b9a92751fcf4141f7982fa5cc80 -> xen-tested-master


From xen-devel-bounces@lists.xenproject.org Wed Jan 03 18:41:58 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 03 Jan 2024 18:41:58 +0000
Received: from list by lists.xenproject.org with outflank-mailman.661017.1030705 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rL6BT-0004DV-78; Wed, 03 Jan 2024 18:41:43 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 661017.1030705; Wed, 03 Jan 2024 18:41:43 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rL6BT-0004DO-47; Wed, 03 Jan 2024 18:41:43 +0000
Received: by outflank-mailman (input) for mailman id 661017;
 Wed, 03 Jan 2024 18:41:42 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rL6BS-0004DC-4V; Wed, 03 Jan 2024 18:41:42 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rL6BR-00060h-WB; Wed, 03 Jan 2024 18:41:41 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rL6BR-0006Bk-GN; Wed, 03 Jan 2024 18:41:41 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rL6BR-0000R5-Fx; Wed, 03 Jan 2024 18:41:41 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=1QkfrbJEpt8iIrmS4Ps/foMKXoabp4qqXtu4SzCBqFs=; b=UIpQ90o+Ei9B+Lk3TRdkFINrv5
	F7zGh0FMMpnUoQtxt2XcVyg0uqZfpcuUvCgt0OvAuJM6SXstQks5mgJQN6u2SxWH6rtmlDS8CZyrL
	/qXjDMDczQb7nP0jtRbW0/xUCVDsW2zBw4UFex2B1fauT1cd723bbdV00GuGFxOXFyF8=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184246-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [ovmf test] 184246: all pass - PUSHED
X-Osstest-Versions-This:
    ovmf=16c8cfc81054aa76e133eab1033560052727cab5
X-Osstest-Versions-That:
    ovmf=7a5823f85be99b9a92751fcf4141f7982fa5cc80
From: osstest service owner <osstest-admin@xenproject.org>
Date: Wed, 03 Jan 2024 18:41:41 +0000

flight 184246 ovmf real [real]
http://logs.test-lab.xenproject.org/osstest/logs/184246/

Perfect :-)
All tests in this flight passed as required
version targeted for testing:
 ovmf                 16c8cfc81054aa76e133eab1033560052727cab5
baseline version:
 ovmf                 7a5823f85be99b9a92751fcf4141f7982fa5cc80

Last test of basis   184245  2024-01-03 14:14:26 Z    0 days
Testing same since   184246  2024-01-03 16:12:35 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Abdul Lateef Attar <AbdulLateef.Attar@amd.com>

jobs:
 build-amd64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-amd64-amd64-xl-qemuu-ovmf-amd64                         pass    
 test-amd64-i386-xl-qemuu-ovmf-amd64                          pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Pushing revision :

To xenbits.xen.org:/home/xen/git/osstest/ovmf.git
   7a5823f85b..16c8cfc810  16c8cfc81054aa76e133eab1033560052727cab5 -> xen-tested-master


From xen-devel-bounces@lists.xenproject.org Wed Jan 03 20:44:30 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 03 Jan 2024 20:44:30 +0000
Received: from list by lists.xenproject.org with outflank-mailman.661024.1030714 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rL864-0002dk-Hh; Wed, 03 Jan 2024 20:44:16 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 661024.1030714; Wed, 03 Jan 2024 20:44:16 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rL864-0002dd-El; Wed, 03 Jan 2024 20:44:16 +0000
Received: by outflank-mailman (input) for mailman id 661024;
 Wed, 03 Jan 2024 20:44:15 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=HTR4=IN=amd.com=vikram.garhwal@srs-se1.protection.inumbo.net>)
 id 1rL862-0002dX-Ub
 for xen-devel@lists.xenproject.org; Wed, 03 Jan 2024 20:44:15 +0000
Received: from NAM12-DM6-obe.outbound.protection.outlook.com
 (mail-dm6nam12on20622.outbound.protection.outlook.com
 [2a01:111:f400:fe59::622])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id d8254227-aa78-11ee-9b0f-b553b5be7939;
 Wed, 03 Jan 2024 21:44:10 +0100 (CET)
Received: from MW3PR12MB4409.namprd12.prod.outlook.com (2603:10b6:303:2d::23)
 by MW3PR12MB4522.namprd12.prod.outlook.com (2603:10b6:303:5f::8) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7159.13; Wed, 3 Jan
 2024 20:44:06 +0000
Received: from MW3PR12MB4409.namprd12.prod.outlook.com
 ([fe80::5aa3:9748:d8d0:87e1]) by MW3PR12MB4409.namprd12.prod.outlook.com
 ([fe80::5aa3:9748:d8d0:87e1%5]) with mapi id 15.20.7159.013; Wed, 3 Jan 2024
 20:44:06 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: d8254227-aa78-11ee-9b0f-b553b5be7939
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=WohSmIGts9SAu9OqlpNqy1zliQFf7bLjMdtd1So6mORATLlvLoIbEnjO/ydN5ZNzpn98OsQBNx9nFEVX/xBvwqNDYRTkPzWJGG6smJyquO/kDMre+myFBZgjXwh0RQNI1YyNbi957s3r3X+fRWAKi3c4JYWZNeN54DF0OApW5ekcA7/Q2Kl8br/tTWuZEppYTWux4+FNN7kzsvxpH8qkIVC/zuq551GbfTM+6hvsk8hy2VwDFmMgNGtEMrQTHAKMSbe8hZ2AbT1bGcouSo5NAoxVMfw2HX0gkSsQTM0fOxrf0zKkYktzg3OKIuQ2kg7QPjRIdprFHwrFlMop+ydTWw==
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=2uTJStMK/t5DjuDa/IOmkAUgSq293zzv3oMcwzsx8T8=;
 b=UxuYpfFfm0Jv4hkZOR1Fkz8+IPqz5oMXNgno53mDTMH/hxYricegjDfE57Jb05mIKU9KfcZFTJ5CI3u4uZdzxVxMAT9SVuhzb1YP8MIZ7EUx9Nl9HwrbyKu5/rAb+AKj0ScEKyBI+TDoeVGoghsCkEWryNFXWvQT5z/hooBDEBjzGxe3qi26eWDsZb/KQpdJER3oLFH+aHXwSIuIn1Gfe/nNGCIJ3sCiyY7VFBg0B/C0cfelX9bRpO03cJ4sanBelk7Z1G1SycuSc0IqoBO3ATTzcTVbyp04JNz8J9Rc1eyCNxRj5Br9B3A2vRnoAzHVG9ySG73gm9VeHYjVrhDtHg==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=amd.com; dmarc=pass action=none header.from=amd.com; dkim=pass
 header.d=amd.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=2uTJStMK/t5DjuDa/IOmkAUgSq293zzv3oMcwzsx8T8=;
 b=kxEgtKfixVis7/f8Q/v4tB4OiGg6weKDTnGB3YwvAwYrrduM1czpBujZtaeEWJSIEE7i2h9JLaOcgmaM8xPF1vXdmHHPJDn8ak9GtdoCcgU1XY7l3wVxjSfYpSAV/cZXUWHTBe+qkB+01Qtg9qVBydFUzA0EtpPmjxySvJgx+yA=
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=amd.com;
Date: Wed, 3 Jan 2024 12:44:03 -0800
From: Vikram Garhwal <vikram.garhwal@amd.com>
To: Peng Fan <peng.fan@nxp.com>
Cc: "stefano.stabellini@amd.com" <stefano.stabellini@amd.com>,
	Oleksii Moisieiev <oleksii_moisieiev@epam.com>,
	Viresh Kumar <viresh.kumar@linaro.org>,
	"xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Subject: Re: Xen and Qemu virtio question
Message-ID: <ZZXHE3lQ3XPOj80o@amd.com>
References: <DU0PR04MB9417F7A337D7CAA59B38ED038860A@DU0PR04MB9417.eurprd04.prod.outlook.com>
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
In-Reply-To: <DU0PR04MB9417F7A337D7CAA59B38ED038860A@DU0PR04MB9417.eurprd04.prod.outlook.com>
X-ClientProxiedBy: BY5PR04CA0030.namprd04.prod.outlook.com
 (2603:10b6:a03:1d0::40) To MW3PR12MB4409.namprd12.prod.outlook.com
 (2603:10b6:303:2d::23)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: MW3PR12MB4409:EE_|MW3PR12MB4522:EE_
X-MS-Office365-Filtering-Correlation-Id: ca2623a1-a0d4-4d9a-92d8-08dc0c9cba7e
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam: BCL:0;
X-Microsoft-Antispam-Message-Info:
	tTM4eEJOEgTxt4T58N9ymEZ1hsZjijb755Ptib7DgDsX+ZbOltvBKP0E+e069HQRMMU9Pa4Sp3+0onjfq4xIPSYR2+iFF/FfwbdczZXZmI2vuxBokbHy48xbjoSLG1XNeSLJaosJTC5HbFCX+BX9RFgpvf97IM60mijl+dfmZJ9oU0TYudnM6DUYmKEEK0/7PfE1/9yXi+q+EsIdhhAh7M+g8ZRuHHhW5EXVinw1U4axvp0zr+fl2WF/4lsDSZLfqEGHvS71e87LBV9dPwjAkUVe1eX8WtvcqbrQaEatU4KPSZ2g4gMg0ghyFHjlw1m4E9eaqtEEOCVaDOtxUtFzykF6EEZ+5zUGQCF55UT3pLLKKhEf90hRVH4GUbGCJyZfI5YawU/aHWSTZ5RiBs94Ans+HvPxb4/jXCtN9QD1ZxbB20MUKlpUYGJW6zaToYh2Iq83L2xd6mf71YMYeeq21kc6yhYuvG5/kb4lLQQAGWT/1srF0t3j7L6LQaC1S//q1g2T4jvN9k92QV03MpzVtjEBm4I/lAuTmtJsFnU2Y9C3ykTKH0I5SGDnS/TDQerqGF0lbWp1SMcleeGwwcSvrg==
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:MW3PR12MB4409.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230031)(39860400002)(376002)(136003)(366004)(396003)(346002)(230922051799003)(1800799012)(186009)(64100799003)(451199024)(6512007)(26005)(2616005)(6506007)(6666004)(5660300002)(4326008)(8936002)(41300700001)(44832011)(2906002)(83380400001)(6486002)(478600001)(6916009)(66476007)(966005)(66556008)(66946007)(316002)(54906003)(8676002)(86362001)(38100700002)(36756003);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?WFdwa3pZWXpCQ0Z5Zy9OamcwUmdYMkIzdTV0QnU1UDJVK0pNS0xSYmlzMEhl?=
 =?utf-8?B?bGdMbXBjbjVzekViVDl6Q25LOXRrbWRjdzVxbGdiZ2crdExOWU13Y2UveCtt?=
 =?utf-8?B?YkwrUXBhMzVld01BTm1UQWp0MUYxSGM2SEVjSDdJWUNXYThoRFRwc1lRZTB1?=
 =?utf-8?B?Z1RZcHdWZjV6L0tHdjA5S3BDTTlKM2Y4NXNpREV4ZldwczdIM25iaUwxd0V6?=
 =?utf-8?B?b1dxQ2ZTN0tiWXJnTG1nczNiUHAyKzNkZVFPV0dUc3c5RWNnVXFVcExjaVVE?=
 =?utf-8?B?Q2IzWHI1aW0xcStObDk2VzRZbUJJVUxPelpiQmphd0ZmdDFJKzdvcGNYN0xX?=
 =?utf-8?B?TkNQWGl4SE9SQTJPTE50SGMxV3Nad0NkeWV0MkpjZUQ1Zzc2b0hnRzVTakxT?=
 =?utf-8?B?Q0FoNnR0bEtSOVc1WHVlOVRlU3hkWFQzOGVzUVBMNHJuT0ROOStVL0E0WjZh?=
 =?utf-8?B?Z2ZMWVpFZU9Dc0V4elNXR2lRSVVhS0M2STJUdW1sOXlad1p2c3Q1MTJBN2lz?=
 =?utf-8?B?bXpTMjNKMGxXY2tPYkh6di9RY3NKSUwzLzdQNCt5T2tjMXhzanB5bXFhWjAr?=
 =?utf-8?B?VG9hL0FHRE9WWUU4b3RsVEFkWVNqSDhnUUJhRXE3dGpZWjB0Y0hScktUZmVp?=
 =?utf-8?B?eXlJNnJzVXRvTXI0QWsxSjJqZEg3MHZxaEdBUHJYTjdLT2VjWlVUaDlVbm1u?=
 =?utf-8?B?YW4yQUlFMk5DbHpFQ0JWdmdZUUZ0emhLY3E3UThEMnBPTFRLVkxFc0VqeE4w?=
 =?utf-8?B?enJBb0pZbVpiNkp1enNSQjYvaFBXVVh3MGl6OEhLclNmVlBkQjc1ZHFDOFhz?=
 =?utf-8?B?OEpkS25QUVlCeTFMYktwWGx4R3o4ajc4SUxNVnRKTGt1c1NyTGU2ZnFUOTU5?=
 =?utf-8?B?RFVrS0hSbDFBamhKMGh6dkxhR0p3eEw2d1EzTmNOc2YyMDlCMlNlQ2Fhalla?=
 =?utf-8?B?eURXK2tCU084VllrV2tLM1hqUXpjalE2dVpDV25FMENTMUNIQzg1bER0ZU04?=
 =?utf-8?B?djBpdjF3V3JrRnQxQ2hGMzI4MXBPOFJrRlpLNWVPVEdjZ25HN1hQUzJmTno4?=
 =?utf-8?B?SXovNnBEakpiTitKdVlna3VleHpibjZDUzdORzZnVlB1QXZoRnR4Z2haV1dt?=
 =?utf-8?B?SDNHQ0U0MndKekVNSmxrektXSTJYbklUeGw4Uk85R1JIWXNCemZSR0h2TE9Q?=
 =?utf-8?B?NEV0dzlXZVgzNjMwK3JUaG5wSUowVnhBeHk3djBKTm1KbjFub3JUelprU1Za?=
 =?utf-8?B?SkVkQUxKY0NVTmVqYWxhM21VdnJNMlNQOC9FZHJHOTlzKzRYWGZZNlNUeVox?=
 =?utf-8?B?L1NxNWx1Zkg1cFNiN080Mi9sWWNvcXcvV0l4eGg0Y3FIbkNLY3VRZWFnbVBT?=
 =?utf-8?B?T0wzSWlPLzd5NjlGaVZPcWF2Vi85dko4bVJrc1lkS3RHVW50eDgwdnVNVVlC?=
 =?utf-8?B?S25qT2tnOHJoaEhTQXZyWndwTlpxYlR4cnNvc3paU2pVV3NuaXdXSjdiQTlk?=
 =?utf-8?B?K3J3ZysraU84SmpaOUN3eWRTTkFXS3doKytwTGhheXREaHgraG9WQXZSQ0Zq?=
 =?utf-8?B?YWhzaG9QUDZXZ0N0WFg3YURNNGdUQThadjVOUSsxVGdKUHJpVkU1ekVIMFRZ?=
 =?utf-8?B?SFpPQTJ0R2xZOGtlOWJ2TDFhM3U2NmowbnN3YjdLMkVrL05aWUkxeDlXaTc5?=
 =?utf-8?B?dzRQd2lVUTJZT1pzWUdjK1lnU3czT3JSeHdNMW1oaGsvU2l3RDdvOTBDa3BP?=
 =?utf-8?B?UmtXOGpIVnhlQ2lxYXlHdkdKM0xtUkU4NkVrQ1lhU2VtMEhHUUorMjRpQW42?=
 =?utf-8?B?R1U0UUJYUDBQaURyQWZTNzg2UHk1MVpidktobXlSSDRodGMyL3VrWDJPSkg0?=
 =?utf-8?B?RmdNcTNZa0VJamVzTk1rSFdRRGZHMUJZaXFMd1prc3pvdFl0NStscC9jNGV6?=
 =?utf-8?B?bTNmbWQ3WkNta1NNUVBaRjRmdHdEQjZIWExSU1NpeXBzSE0yMW5yU0FXU1pz?=
 =?utf-8?B?ZHZCUTBxUHRLeFhJUHNEMy9vU01CaXAvSThucFYzMG0wd3ZWN0FVVENYY3RH?=
 =?utf-8?B?TTgwM085NVBqYm9EMnM2ZHZRbGE4bWUzcEM2eVZHcVlnRk9hdFQycEVpRVl4?=
 =?utf-8?Q?3y6kx7+8GjM0BQo9qFIWCNjQP?=
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-Network-Message-Id: ca2623a1-a0d4-4d9a-92d8-08dc0c9cba7e
X-MS-Exchange-CrossTenant-AuthSource: MW3PR12MB4409.namprd12.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Jan 2024 20:44:06.4843
 (UTC)
X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted
X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d
X-MS-Exchange-CrossTenant-MailboxType: HOSTED
X-MS-Exchange-CrossTenant-UserPrincipalName: kh0l+vI1MxIrYSZLQGkTujFAXZq9gsVjjoso1yZ25ZwoI3vJiZivYgIyJRwObT4c7+yjBDnNfzB5pnHE3M/Whg==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW3PR12MB4522

Hi Peng,
Please see my comments below.
On Wed, Jan 03, 2024 at 05:38:07AM +0000, Peng Fan wrote:
> Hi Vikram, Oleksii
> 
> I follow the slide virtio for Xen on ARM[1], but I met some issues, and
> stuck for about two days.
> 
> I use upstream lastest qemu repo master branch, not qemu-xen.git
> repo.
This is right.
> 
> My start command as below[2], but seems I need first `xl create domu.cfg`,
> otherwise it will fail, because xen hypervisor
> dm_op->rcu_lock_remote_domain_by_id will return failure if domu
> not created.  My domu cfg is simple:
> kernel = "/run/media/boot-mmcblk1p1/Image"
> disk = [ '/etc/xen/disk_1.img,,xvda,specification=virtio' ]
> cmdline = "console=hvc0 root=/dev/xvda rw"
> name = "DomU"
> memory = 512
> serial = "pty"
> 
> I drop qdisk in the disk entry, because xen tool report qdisk and virtio
> not compatible.
> 
> And the arg xen_domid should be same as domu domain id? Is
> there any dynamic way to set xen_domid, start qemu when start
> domu?
Yes, it should be xen_domid. Below virtio-disk patches will take care of
invoking QEMU with right domid.
> 
> Does the domu dts still needed to include the virtio,mmio node?
> 
> however xl create domu.cfg relies virtio disk ready, which needs qemu
> start first. This confuses me. How do you address this
> or I do something wrong?
> 
> Then after xl create,  I quickly start qemu, but met:
> failed to create ioreq server, then I see there is mismatch.
> qemu use HVM_IOREQSRV_BUFIOREQ_ATOMIC to create ioreq server,
> but xen ioreq_server_create will return failure:
>      if ( !IS_ENABLED(CONFIG_X86) && bufioreq_handling )                                             
>                return -EINVAL;
> 
There is a downstream patch for this:
https://github.com/Xilinx/xen/commit/be35b46e907c7c78fd23888d837475eb28334638

> So I change HVM_IOREQSRV_BUFIOREQ_OFF in qemu, but met:
> qemu-system-aarch64: failed to map ioreq server resources: error 2
> handle=0xaaaad26c7f30
> qemu-system-aarch64: xen hardware virtual machine initialisation failed
> 
> Do you have out of box repo that works well? Including Qemu and Xen,
> I am trying virtio disk, but will move to test virtio gpu soon.
> 
> I am not sure there are some downstream patches in your side to
> address and make it work well.
> 
We have a few downstream patches for xen-tools.	
For Virtio disk backend:
https://github.com/Xilinx/xen/commit/947280803294bbb963f428423f679d074c60d632
For Virtio-net:
https://github.com/Xilinx/xen/commit/32fcc702718591270e5c8928b7687d853249c882
For changing the machine name to Xenpvh(to align with QEMU changes):
https://github.com/Xilinx/xen/commit/5f669949c9ffdb1947cb47038956b5fb8eeb072a

With above 4 patches it should work for you. Please re-compile Xen and Xen-tools
first and finally compile QEMU with this Xen.

> Thanks for your help.
> 
> Thanks,
> Peng.
> 
> [1]https://www.youtube.com/watch?v=boRQ8UHc760
> 
> [2]qemu-system-aarch64  -xen-domid 1 \
> -chardev socket,id=libxl-cmd,path=qmp-libxl-1,server=on,wait=off \
> -mon chardev=libxl-cmd,mode=control \
> -chardev socket,id=libxenstat-cmd,path=qmp-libxenstat-1,server=on,wait=off \
> -mon chardev=libxenstat-cmd,mode=control \
> -xen-attach -name guest0 -vnc none -display none -nographic \
> -machine xenpvh -m 513 &


From xen-devel-bounces@lists.xenproject.org Wed Jan 03 21:34:26 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 03 Jan 2024 21:34:26 +0000
Received: from list by lists.xenproject.org with outflank-mailman.661029.1030725 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rL8sW-0000t3-3J; Wed, 03 Jan 2024 21:34:20 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 661029.1030725; Wed, 03 Jan 2024 21:34:20 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rL8sV-0000sw-Vx; Wed, 03 Jan 2024 21:34:19 +0000
Received: by outflank-mailman (input) for mailman id 661029;
 Wed, 03 Jan 2024 21:34:18 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rL8sU-0000sW-A3; Wed, 03 Jan 2024 21:34:18 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rL8sU-0000uB-1K; Wed, 03 Jan 2024 21:34:18 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rL8sT-0001UY-Io; Wed, 03 Jan 2024 21:34:17 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rL8sT-0008PX-IK; Wed, 03 Jan 2024 21:34:17 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=1mD1eBH4Yf43FXZZ36xec+MiuAwr5FODJbkWalOvoJU=; b=x+JvtooeeIkFLvvdIycL+woYkm
	qfnq7BDvH2A4Q/sPlwqM5LOuXCTxn9gL/2uzatXsTty7ooekh+x52qQXIHXZSGTq2MfpriqqpydOs
	906K9130HDmtPmB0u3R8C+lmg2P85SBiPmUVobexiYcDxZllnL8nIWxkjG/GVqsamHGU=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184247-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [xtf test] 184247: all pass - PUSHED
X-Osstest-Versions-This:
    xtf=0a58a1471eb5f692700c0fd026ff96969b6ad7b0
X-Osstest-Versions-That:
    xtf=8ab636aee07918402d80da2ea605ce449b0fd657
From: osstest service owner <osstest-admin@xenproject.org>
Date: Wed, 03 Jan 2024 21:34:17 +0000

flight 184247 xtf real [real]
http://logs.test-lab.xenproject.org/osstest/logs/184247/

Perfect :-)
All tests in this flight passed as required
version targeted for testing:
 xtf                  0a58a1471eb5f692700c0fd026ff96969b6ad7b0
baseline version:
 xtf                  8ab636aee07918402d80da2ea605ce449b0fd657

Last test of basis   183261  2023-10-04 12:44:07 Z   91 days
Testing same since   184247  2024-01-03 20:42:38 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Andrew Cooper <andrew.cooper3@citrix.com>

jobs:
 build-amd64-xtf                                              pass    
 build-amd64                                                  pass    
 build-amd64-pvops                                            pass    
 test-xtf-amd64-amd64-1                                       pass    
 test-xtf-amd64-amd64-2                                       pass    
 test-xtf-amd64-amd64-3                                       pass    
 test-xtf-amd64-amd64-4                                       pass    
 test-xtf-amd64-amd64-5                                       pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Pushing revision :

To xenbits.xen.org:/home/xen/git/xtf.git
   8ab636a..0a58a14  0a58a1471eb5f692700c0fd026ff96969b6ad7b0 -> xen-tested-master


From xen-devel-bounces@lists.xenproject.org Thu Jan 04 00:05:37 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 04 Jan 2024 00:05:37 +0000
Received: from list by lists.xenproject.org with outflank-mailman.661038.1030736 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLBEe-0002mU-7x; Thu, 04 Jan 2024 00:05:20 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 661038.1030736; Thu, 04 Jan 2024 00:05:20 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLBEe-0002mN-2w; Thu, 04 Jan 2024 00:05:20 +0000
Received: by outflank-mailman (input) for mailman id 661038;
 Thu, 04 Jan 2024 00:05:18 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=eCom=IO=kernel.org=sstabellini@srs-se1.protection.inumbo.net>)
 id 1rLBEc-0002mH-42
 for xen-devel@lists.xenproject.org; Thu, 04 Jan 2024 00:05:18 +0000
Received: from ams.source.kernel.org (ams.source.kernel.org
 [2604:1380:4601:e00::1])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id f07e72d4-aa94-11ee-98ef-6d05b1d4d9a1;
 Thu, 04 Jan 2024 01:05:16 +0100 (CET)
Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58])
 by ams.source.kernel.org (Postfix) with ESMTP id CB6CDB81637;
 Thu,  4 Jan 2024 00:05:15 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 90273C433C7;
 Thu,  4 Jan 2024 00:05:13 +0000 (UTC)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: f07e72d4-aa94-11ee-98ef-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
	s=k20201202; t=1704326715;
	bh=kbTRdsAZw32A7DCyHKTuFAkjOUAtpAcfuu3ugOo9xEc=;
	h=Date:From:To:cc:Subject:In-Reply-To:References:From;
	b=Fn5KZodnieewnCb3up8PsJHTUcrPi49EIqXfn8PqiWwrbS+sxZ8cOBJWCmpEqQFp5
	 JcmJRs1I3/CYFFTgToMeZvfYnqlVQl0eUqqVY6qmYeMFnR7L5B3rc4qWdlw7PwEa16
	 tNRWeG/7Knr317lxlbWz3yZPYd3gfjXAebgR74yafmIcU30jICTZ5kvoVpTuLgxk3u
	 2gz6vQRzS78uxCVo3+0XlUFCdULR5lN0nRrr8K4X6Evk6M2x27EbGWe714G+oWWprT
	 rF1L2M8LXQncF6KjqeiS/WXdzXxl4w8YTL+XR6qE2PiT/ObIhBqQ9xrKQ3EBvhiQEM
	 NjkLYQW7Od2Vw==
Date: Wed, 3 Jan 2024 16:05:12 -0800 (PST)
From: Stefano Stabellini <sstabellini@kernel.org>
X-X-Sender: sstabellini@ubuntu-linux-20-04-desktop
To: Michal Orzel <michal.orzel@amd.com>
cc: Carlo Nonato <carlo.nonato@minervasys.tech>, 
    xen-devel@lists.xenproject.org, Andrew Cooper <andrew.cooper3@citrix.com>, 
    George Dunlap <george.dunlap@citrix.com>, Jan Beulich <jbeulich@suse.com>, 
    Julien Grall <julien@xen.org>, Stefano Stabellini <sstabellini@kernel.org>, 
    Wei Liu <wl@xen.org>, Bertrand Marquis <bertrand.marquis@arm.com>, 
    Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>, 
    Anthony PERARD <anthony.perard@citrix.com>, 
    Juergen Gross <jgross@suse.com>
Subject: Re: [PATCH v5 00/13] Arm cache coloring
In-Reply-To: <6d652309-50e1-4850-ac52-d086a3a32726@amd.com>
Message-ID: <alpine.DEB.2.22.394.2401031601180.1322202@ubuntu-linux-20-04-desktop>
References: <20240102095138.17933-1-carlo.nonato@minervasys.tech> <6d652309-50e1-4850-ac52-d086a3a32726@amd.com>
User-Agent: Alpine 2.22 (DEB 394 2020-01-19)
MIME-Version: 1.0
Content-Type: text/plain; charset=US-ASCII

On Wed, 3 Jan 2024, Michal Orzel wrote:
> Hi,
> 
> On 02/01/2024 10:51, Carlo Nonato wrote:
> > 
> > 
> > Shared caches in multi-core CPU architectures represent a problem for
> > predictability of memory access latency. This jeopardizes applicability
> > of many Arm platform in real-time critical and mixed-criticality
> > scenarios. We introduce support for cache partitioning with page
> > coloring, a transparent software technique that enables isolation
> > between domains and Xen, and thus avoids cache interference.
> > 
> > When creating a domain, a simple syntax (e.g. `0-3` or `4-11`) allows
> > the user to define assignments of cache partitions ids, called colors,
> > where assigning different colors guarantees no mutual eviction on cache
> > will ever happen. This instructs the Xen memory allocator to provide
> > the i-th color assignee only with pages that maps to color i, i.e. that
> > are indexed in the i-th cache partition.
> > 
> > The proposed implementation supports the dom0less feature.
> > The proposed implementation doesn't support the static-mem feature.
> > The solution has been tested in several scenarios, including Xilinx Zynq
> > MPSoCs.
> > 
> > In this patch series there are two major unacceptable workarounds for which
> > I want to ask you for comments:
> >  - #3: allocate_memory() has been moved in dom0less_build.c, so I just copied
> >  it back to make it compile.
> I would move it to domain_build.c and add a prototype in domain_build.h.
> You could guard it together with allocate_bank_memory() for DOM0LESS || LLC or just
> remove the guards (in former case, you would need to protect your call with #ifdef in construct_dom0()).
> 
> >  - #13: consider_modules() has been moved to arm32 only. Again I just copied it.
> I would move it to setup.c and add a prototype in setup.h.
> As for the guards, if we want them (personally I don't see the need), you would need LLC || (ARM_32 && MMU).
> 
> BTW. Patchew reports some build issues in your series:
> https://gitlab.com/xen-project/patchew/xen/-/pipelines/1124313980
> 
> Make sure to build test your series on different arches. You can ask on IRC to become a member
> on gitlab so that you can trigger the pipeline by pushing the changes to your fork on people/<you>/xen.

Also I tried this patch series on the "staging" branch and Xen failed to
boot, no messages at all from Xen so it must be an early boot failure. I
am passing this command line options to Xen and running it on QEMU:

dom0_mem=1024M dom0_max_vcpus=1 xen-llc-colors=0 dom0-llc-colors=1-5 llc-way-size=65535 llc-coloring=true



From xen-devel-bounces@lists.xenproject.org Thu Jan 04 01:56:07 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 04 Jan 2024 01:56:07 +0000
Received: from list by lists.xenproject.org with outflank-mailman.661043.1030744 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLCxa-0006UF-Vv; Thu, 04 Jan 2024 01:55:50 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 661043.1030744; Thu, 04 Jan 2024 01:55:50 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLCxa-0006U8-Sx; Thu, 04 Jan 2024 01:55:50 +0000
Received: by outflank-mailman (input) for mailman id 661043;
 Thu, 04 Jan 2024 01:55:50 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=eCom=IO=kernel.org=sstabellini@srs-se1.protection.inumbo.net>)
 id 1rLCxa-0006U2-6c
 for xen-devel@lists.xenproject.org; Thu, 04 Jan 2024 01:55:50 +0000
Received: from ams.source.kernel.org (ams.source.kernel.org
 [2604:1380:4601:e00::1])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 6184cb84-aaa4-11ee-98ef-6d05b1d4d9a1;
 Thu, 04 Jan 2024 02:55:48 +0100 (CET)
Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58])
 by ams.source.kernel.org (Postfix) with ESMTP id E6EA9B8125E;
 Thu,  4 Jan 2024 01:55:47 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 95BF9C433C8;
 Thu,  4 Jan 2024 01:55:45 +0000 (UTC)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 6184cb84-aaa4-11ee-98ef-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
	s=k20201202; t=1704333347;
	bh=ZrRpdbQ+J37DSaDg0Qodi7tYw0llzPbtp38wwy4PWAs=;
	h=Date:From:To:cc:Subject:In-Reply-To:References:From;
	b=gssN8I7TdsDLg+N/6aM9O/l++iOBjq6XoxjFdIBJEvEmQewoluO5I6UXW5mz4gvNZ
	 BshghNoGmRxuwhv3NfWEZ/tLu5Qc5XFiMUVm+7LqoIAS28I5S5fITO3Dt8fw3vewkb
	 uLUle+hnGcFUU8UDW78K2YU4oNy/iTNMKqfxQ4leK/ifmISNTkT8PCswlJYpGDtOKY
	 6iA+rCtrgcN+ZlPjB0PsJcaTXssxxfJ1+87bAirRG2adRoMMuk6L4LO+nhsiqHqQdV
	 ULfb9vtWD2VbghiUhrV3fd83MUD517ABR3uvSbiwkW42pCjAMhBmlSjuE6v2xGCfG7
	 l322pJYV9Zcjw==
Date: Wed, 3 Jan 2024 17:55:43 -0800 (PST)
From: Stefano Stabellini <sstabellini@kernel.org>
X-X-Sender: sstabellini@ubuntu-linux-20-04-desktop
To: Stefano Stabellini <sstabellini@kernel.org>
cc: Michal Orzel <michal.orzel@amd.com>, 
    Carlo Nonato <carlo.nonato@minervasys.tech>, 
    xen-devel@lists.xenproject.org, Andrew Cooper <andrew.cooper3@citrix.com>, 
    George Dunlap <george.dunlap@citrix.com>, Jan Beulich <jbeulich@suse.com>, 
    Julien Grall <julien@xen.org>, Wei Liu <wl@xen.org>, 
    Bertrand Marquis <bertrand.marquis@arm.com>, 
    Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>, 
    Anthony PERARD <anthony.perard@citrix.com>, 
    Juergen Gross <jgross@suse.com>
Subject: Re: [PATCH v5 00/13] Arm cache coloring
In-Reply-To: <alpine.DEB.2.22.394.2401031601180.1322202@ubuntu-linux-20-04-desktop>
Message-ID: <alpine.DEB.2.22.394.2401031748040.1322202@ubuntu-linux-20-04-desktop>
References: <20240102095138.17933-1-carlo.nonato@minervasys.tech> <6d652309-50e1-4850-ac52-d086a3a32726@amd.com> <alpine.DEB.2.22.394.2401031601180.1322202@ubuntu-linux-20-04-desktop>
User-Agent: Alpine 2.22 (DEB 394 2020-01-19)
MIME-Version: 1.0
Content-Type: text/plain; charset=US-ASCII

On Wed, 3 Jan 2024, Stefano Stabellini wrote:
> Also I tried this patch series on the "staging" branch and Xen failed to
> boot, no messages at all from Xen so it must be an early boot failure. I
> am passing this command line options to Xen and running it on QEMU:
> 
> dom0_mem=1024M dom0_max_vcpus=1 xen-llc-colors=0 dom0-llc-colors=1-5 llc-way-size=65535 llc-coloring=true

I managed to make it to work successfully with the following command
line:

xen-llc-colors=0 dom0-llc-colors=1-5 llc-way-size=64K llc-coloring=on

I think the problem was llc-way-size that needs to be rounded up (64K
instead of 65535).

Also I found a few build issues when building for other architectures or
different kconfig options. This patch addresses those issues (however it
is not to be taken as is as the build issues should not be introduced in
the first place and there are probably better way to fix them, but I
hope it can help).

Cheers,

Stefano


diff --git a/xen/arch/arm/llc-coloring.c b/xen/arch/arm/llc-coloring.c
index f434efc45b..efe5cf3c23 100644
--- a/xen/arch/arm/llc-coloring.c
+++ b/xen/arch/arm/llc-coloring.c
@@ -39,7 +39,7 @@ static unsigned int __ro_after_init xen_num_colors;
 
 #define mfn_color_mask              (nr_colors - 1)
 #define mfn_to_color(mfn)           (mfn_x(mfn) & mfn_color_mask)
-#define mfn_set_color(mfn, color)   ((mfn_x(mfn) & ~mfn_color_mask) | (color))
+#define mfn_set_color(mfn, color)   (_mfn((mfn_x(mfn) & ~mfn_color_mask) | (color)))
 
 /*
  * Parse the coloring configuration given in the buf string, following the
diff --git a/xen/arch/arm/mm.c b/xen/arch/arm/mm.c
index 3bb0c9221f..bf16703e24 100644
--- a/xen/arch/arm/mm.c
+++ b/xen/arch/arm/mm.c
@@ -610,10 +610,10 @@ void __init setup_pagetables(unsigned long boot_phys_offset, paddr_t xen_paddr)
     pte.pt.table = 1;
     xen_second[second_table_offset(FIXMAP_ADDR(0))] = pte;
 
+#ifdef CONFIG_ARM_64
     if ( llc_coloring_enabled )
         ttbr = virt_to_maddr(virt_to_reloc_virt(xen_pgtable));
     else
-#ifdef CONFIG_ARM_64
         ttbr = (uintptr_t) xen_pgtable + phys_offset;
 #else
         ttbr = (uintptr_t) cpu0_pgtable + phys_offset;
diff --git a/xen/include/xen/llc-coloring.h b/xen/include/xen/llc-coloring.h
index 7cd481e955..516139c4ff 100644
--- a/xen/include/xen/llc-coloring.h
+++ b/xen/include/xen/llc-coloring.h
@@ -21,7 +21,27 @@
 extern bool llc_coloring_enabled;
 #define llc_coloring_enabled (llc_coloring_enabled)
 #endif
-
+#else
+static inline void *xen_remap_colored(mfn_t xen_fn, paddr_t xen_size)
+{
+    return NULL;
+}
+static inline int domain_set_llc_colors_from_str(struct domain *d, const char *str)
+{
+    return -ENOSYS;
+}
+static inline int dom0_set_llc_colors(struct domain *d)
+{
+    return 0;
+}
+static inline bool llc_coloring_init(void)
+{
+    return false;
+}
+static inline paddr_t xen_colored_map_size(paddr_t size)
+{
+    return 0;
+}
 #endif
 
 #ifndef llc_coloring_enabled


From xen-devel-bounces@lists.xenproject.org Thu Jan 04 06:01:51 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 04 Jan 2024 06:01:51 +0000
Received: from list by lists.xenproject.org with outflank-mailman.661080.1030771 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLGnG-0007uj-6O; Thu, 04 Jan 2024 06:01:26 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 661080.1030771; Thu, 04 Jan 2024 06:01:26 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLGnG-0007uc-3Y; Thu, 04 Jan 2024 06:01:26 +0000
Received: by outflank-mailman (input) for mailman id 661080;
 Thu, 04 Jan 2024 06:01:24 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rLGnE-0007u9-9F; Thu, 04 Jan 2024 06:01:24 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rLGnE-0001jX-20; Thu, 04 Jan 2024 06:01:24 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rLGnD-0006FQ-F5; Thu, 04 Jan 2024 06:01:23 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rLGnD-000830-C8; Thu, 04 Jan 2024 06:01:23 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=xJvuiE2M+xEljzaleAGtrmbX8F8t1ROS802p2fw890k=; b=itwkB8q9euxme61S/k4kZsgLud
	qghwGln0s009sODpeAqyelbFw9Z9xQUBgK7Mfd5UaHffX6Gtnchcd4tAKbXTPm9Us1O620GHd3okl
	VzOS5NDhsXB6YJN+k8rLElkfKFWdOr7GRx/zeWLw2j6R4uA337a6s8UIgmkzITs0gK4Y=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184248-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [linux-linus test] 184248: tolerable FAIL - PUSHED
X-Osstest-Failures:
    linux-linus:test-amd64-amd64-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    linux-linus:test-amd64-amd64-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    linux-linus:test-amd64-amd64-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-raw:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-qcow2:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-qemuu-nested-amd:debian-hvm-install/l1/l2:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-xsm:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-thunderx:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-thunderx:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-xsm:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-credit2:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-xsm:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-credit2:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-libvirt-xsm:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-libvirt-xsm:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-rtds:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-rtds:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit1:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-multivcpu:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-multivcpu:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit1:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-arndale:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-arndale:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-credit1:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-credit1:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-qcow2:migrate-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-libvirt-raw:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-vhd:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-vhd:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-vhd:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-vhd:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit2:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit2:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-qcow2:migrate-support-check:fail:nonblocking
X-Osstest-Versions-This:
    linux=ac865f00af293d081356bec56eea90815094a60e
X-Osstest-Versions-That:
    linux=610a9b8f49fbcf1100716370d3b5f6f884a2835a
From: osstest service owner <osstest-admin@xenproject.org>
Date: Thu, 04 Jan 2024 06:01:23 +0000

flight 184248 linux-linus real [real]
http://logs.test-lab.xenproject.org/osstest/logs/184248/

Failures :-/ but no regressions.

Tests which did not succeed, but are not blocking:
 test-amd64-amd64-xl-qemut-win7-amd64 19 guest-stop            fail like 184242
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 184242
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 184242
 test-armhf-armhf-libvirt-raw 15 saverestore-support-check    fail  like 184242
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 184242
 test-amd64-amd64-xl-qemut-ws16-amd64 19 guest-stop            fail like 184242
 test-armhf-armhf-libvirt-qcow2 15 saverestore-support-check   fail like 184242
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 184242
 test-amd64-amd64-libvirt     15 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-thunderx 15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl          15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-thunderx 16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl          16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-xsm      15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit2  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-xsm      16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-credit2  16 saverestore-support-check    fail   never pass
 test-arm64-arm64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-xsm 16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-rtds     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-rtds     16 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-armhf-armhf-xl-credit1  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-multivcpu 15 migrate-support-check        fail  never pass
 test-armhf-armhf-xl-multivcpu 16 saverestore-support-check    fail  never pass
 test-armhf-armhf-xl-credit1  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-arndale  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-arndale  16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-credit1  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit1  16 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-qcow2 14 migrate-support-check        fail never pass
 test-amd64-amd64-libvirt-raw 14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 15 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-vhd      14 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-vhd      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-raw 14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-credit2  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit2  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-qcow2 14 migrate-support-check        fail never pass

version targeted for testing:
 linux                ac865f00af293d081356bec56eea90815094a60e
baseline version:
 linux                610a9b8f49fbcf1100716370d3b5f6f884a2835a

Last test of basis   184242  2024-01-01 02:01:46 Z    3 days
Testing same since   184248  2024-01-03 22:40:42 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Ard Biesheuvel <ardb@kernel.org>
  Bjorn Helgaas <bhelgaas@google.com>
  John Johansen <john.johansen@canonical.com>
  Kent Overstreet <kent.overstreet@linux.dev>
  Linus Torvalds <torvalds@linux-foundation.org>
  Steven Rostedt (Google) <rostedt@goodmis.org>
  Yuntao Wang <ytcoode@gmail.com>

jobs:
 build-amd64-xsm                                              pass    
 build-arm64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64                                                  pass    
 build-arm64                                                  pass    
 build-armhf                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-arm64-libvirt                                          pass    
 build-armhf-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-pvops                                            pass    
 build-arm64-pvops                                            pass    
 build-armhf-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-amd64-amd64-xl                                          pass    
 test-amd64-coresched-amd64-xl                                pass    
 test-arm64-arm64-xl                                          pass    
 test-armhf-armhf-xl                                          pass    
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm           pass    
 test-amd64-amd64-xl-qemut-stubdom-debianhvm-amd64-xsm        pass    
 test-amd64-amd64-xl-qemut-debianhvm-i386-xsm                 pass    
 test-amd64-amd64-xl-qemuu-debianhvm-i386-xsm                 pass    
 test-amd64-amd64-libvirt-xsm                                 pass    
 test-arm64-arm64-libvirt-xsm                                 pass    
 test-amd64-amd64-xl-xsm                                      pass    
 test-arm64-arm64-xl-xsm                                      pass    
 test-amd64-amd64-qemuu-nested-amd                            fail    
 test-amd64-amd64-xl-pvhv2-amd                                pass    
 test-amd64-amd64-dom0pvh-xl-amd                              pass    
 test-amd64-amd64-xl-qemut-debianhvm-amd64                    pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64                    pass    
 test-amd64-amd64-freebsd11-amd64                             pass    
 test-amd64-amd64-freebsd12-amd64                             pass    
 test-amd64-amd64-xl-qemuu-ovmf-amd64                         pass    
 test-amd64-amd64-xl-qemut-win7-amd64                         fail    
 test-amd64-amd64-xl-qemuu-win7-amd64                         fail    
 test-amd64-amd64-xl-qemut-ws16-amd64                         fail    
 test-amd64-amd64-xl-qemuu-ws16-amd64                         fail    
 test-armhf-armhf-xl-arndale                                  pass    
 test-amd64-amd64-examine-bios                                pass    
 test-amd64-amd64-xl-credit1                                  pass    
 test-arm64-arm64-xl-credit1                                  pass    
 test-armhf-armhf-xl-credit1                                  pass    
 test-amd64-amd64-xl-credit2                                  pass    
 test-arm64-arm64-xl-credit2                                  pass    
 test-armhf-armhf-xl-credit2                                  pass    
 test-amd64-amd64-xl-qemuu-dmrestrict-amd64-dmrestrict        pass    
 test-amd64-amd64-examine                                     pass    
 test-arm64-arm64-examine                                     pass    
 test-armhf-armhf-examine                                     pass    
 test-amd64-amd64-qemuu-nested-intel                          pass    
 test-amd64-amd64-xl-pvhv2-intel                              pass    
 test-amd64-amd64-dom0pvh-xl-intel                            pass    
 test-amd64-amd64-libvirt                                     pass    
 test-armhf-armhf-libvirt                                     pass    
 test-amd64-amd64-xl-multivcpu                                pass    
 test-armhf-armhf-xl-multivcpu                                pass    
 test-amd64-amd64-pair                                        pass    
 test-amd64-amd64-libvirt-pair                                pass    
 test-amd64-amd64-xl-pvshim                                   pass    
 test-amd64-amd64-pygrub                                      pass    
 test-amd64-amd64-libvirt-qcow2                               pass    
 test-armhf-armhf-libvirt-qcow2                               pass    
 test-amd64-amd64-libvirt-raw                                 pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-armhf-armhf-libvirt-raw                                 pass    
 test-amd64-amd64-xl-rtds                                     pass    
 test-armhf-armhf-xl-rtds                                     pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64-shadow             pass    
 test-amd64-amd64-xl-shadow                                   pass    
 test-arm64-arm64-xl-thunderx                                 pass    
 test-amd64-amd64-examine-uefi                                pass    
 test-amd64-amd64-xl-vhd                                      pass    
 test-arm64-arm64-xl-vhd                                      pass    
 test-armhf-armhf-xl-vhd                                      pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Pushing revision :

hint: The 'hooks/update' hook was ignored because it's not set as executable.
hint: You can disable this warning with `git config advice.ignoredHook false`.
hint: The 'hooks/post-receive' hook was ignored because it's not set as executable.
hint: You can disable this warning with `git config advice.ignoredHook false`.
hint: The 'hooks/post-update' hook was ignored because it's not set as executable.
hint: You can disable this warning with `git config advice.ignoredHook false`.
To xenbits.xen.org:/home/xen/git/linux-pvops.git
   610a9b8f49fb..ac865f00af29  ac865f00af293d081356bec56eea90815094a60e -> tested/linux-linus


From xen-devel-bounces@lists.xenproject.org Thu Jan 04 07:28:29 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 04 Jan 2024 07:28:29 +0000
Received: from list by lists.xenproject.org with outflank-mailman.661087.1030781 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLI9G-00019F-HC; Thu, 04 Jan 2024 07:28:14 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 661087.1030781; Thu, 04 Jan 2024 07:28:14 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLI9G-000198-D7; Thu, 04 Jan 2024 07:28:14 +0000
Received: by outflank-mailman (input) for mailman id 661087;
 Thu, 04 Jan 2024 07:28:13 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=NmwG=IO=amd.com=Ray.Huang@srs-se1.protection.inumbo.net>)
 id 1rLI9E-000192-QX
 for xen-devel@lists.xenproject.org; Thu, 04 Jan 2024 07:28:13 +0000
Received: from NAM02-DM3-obe.outbound.protection.outlook.com
 (mail-dm3nam02on20611.outbound.protection.outlook.com
 [2a01:111:f400:7e83::611])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id cf286c82-aad2-11ee-98ef-6d05b1d4d9a1;
 Thu, 04 Jan 2024 08:28:10 +0100 (CET)
Received: from SJ2PR12MB8690.namprd12.prod.outlook.com (2603:10b6:a03:540::10)
 by IA1PR12MB6385.namprd12.prod.outlook.com (2603:10b6:208:38b::6)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7135.25; Thu, 4 Jan
 2024 07:28:05 +0000
Received: from SJ2PR12MB8690.namprd12.prod.outlook.com
 ([fe80::9b8e:816d:20b9:9845]) by SJ2PR12MB8690.namprd12.prod.outlook.com
 ([fe80::9b8e:816d:20b9:9845%5]) with mapi id 15.20.7159.013; Thu, 4 Jan 2024
 07:28:05 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: cf286c82-aad2-11ee-98ef-6d05b1d4d9a1
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=kKfb7ELqUk5W1M1Az+Wcid8+QRnAjrdmUkzFrWrvX/nU2JbtyuuAPLmeFb0SpUczC5h2U/BrOIUhFoq4c1QhGI1lzyNtPIXz1pc4woBC+qjgDFBYbwEcCcX/6KcL0NZZQ+ofNcIoTdfT8SCRpJdjOXeL4zKMpQaSzn4XAp4Frk7T8nS+gOCM4En1gnQw0gp0abtGNE5gnsmMFMHRYUipLkoxk/0O/HvY/E0iQTaq6ZDSP4W1cfkOqCZgg0wSxd/hJqunGVardz7Itf1ddfRD8Mh2iKn5HAXhce4yXFuY7bF142doPl/AFkF7RAo2ngiOgLUf9loXnjkqyL/OKPaQjg==
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=bQgBZZHXKDiWsObp33Dylkkgai5L0Y9yrgbatlk5dXc=;
 b=npRbXebCEOPPHgo2RafMCtA0r4calyedCZEHY2gqkIf76I4Od6QSAxBe6kLLWqUESOaf3U8E8h+hpFWwuBgrVx+OjkZeAnKiVbZJuBKno2lxXI89C+tV20N+EoUhCYzhpPusC8l3kPcEXBRt+++4F3L1dt7VUIwcm3H5QDNm+RinCS7DRsb3OFO/5rOy44aaUH2uD6C4ruy5JiIlGLL3RS8/ZmxneMcP+8t3cWrsc4YrSiV4wvbFosiiWZE8UNRsTvxSlrLvmEF0ZsoS6O3jCBZ+2cbfjpnhEXU810Eb0UrCbJjqZXycDhexB13p2ynVpkbgyUhO2oUA2kjs1pe4Mw==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=amd.com; dmarc=pass action=none header.from=amd.com; dkim=pass
 header.d=amd.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=bQgBZZHXKDiWsObp33Dylkkgai5L0Y9yrgbatlk5dXc=;
 b=CWwaVrjhhvyVZPHPdfnFIg+v92segp59XCno+2Dihg2CwFJhlQ2p4mtaJJBVrNNAEJIKzQBURVX0UAMkAD7p5arY4CalypYc8+i8+moJc7RZS0Hqq9AUxC9mUvfCQ9ABr4xX29uqWTV0TibwjX2IAW8VPA63+/hI2bCJh1ZZILs=
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=amd.com;
Date: Thu, 4 Jan 2024 15:27:38 +0800
From: Huang Rui <ray.huang@amd.com>
To: =?iso-8859-1?Q?Marc-Andr=E9?= Lureau <marcandre.lureau@gmail.com>
Cc: Akihiko Odaki <akihiko.odaki@daynix.com>,
	Philippe =?iso-8859-1?Q?Mathieu-Daud=E9?= <philmd@linaro.org>,
	Gerd Hoffmann <kraxel@redhat.com>,
	"Michael S . Tsirkin" <mst@redhat.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Anthony PERARD <anthony.perard@citrix.com>,
	Antonio Caggiano <quic_acaggian@quicinc.com>,
	"Dr . David Alan Gilbert" <dgilbert@redhat.com>,
	Robert Beckett <bob.beckett@collabora.com>,
	Dmitry Osipenko <dmitry.osipenko@collabora.com>,
	Gert Wollny <gert.wollny@collabora.com>,
	Alex =?iso-8859-1?Q?Benn=E9e?= <alex.bennee@linaro.org>,
	"qemu-devel@nongnu.org" <qemu-devel@nongnu.org>,
	"xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>,
	Gurchetan Singh <gurchetansingh@chromium.org>,
	"ernunes@redhat.com" <ernunes@redhat.com>,
	Alyssa Ross <hi@alyssa.is>,
	Roger Pau =?iso-8859-1?Q?Monn=E9?= <roger.pau@citrix.com>,
	"Deucher, Alexander" <Alexander.Deucher@amd.com>,
	"Stabellini, Stefano" <stefano.stabellini@amd.com>,
	"Koenig, Christian" <Christian.Koenig@amd.com>,
	"Ragiadakou, Xenia" <Xenia.Ragiadakou@amd.com>,
	"Pelloux-Prayer, Pierre-Eric" <Pierre-eric.Pelloux-prayer@amd.com>,
	"Huang, Honglei1" <Honglei1.Huang@amd.com>,
	"Zhang, Julia" <Julia.Zhang@amd.com>,
	"Chen, Jiqian" <Jiqian.Chen@amd.com>
Subject: Re: [PATCH v6 05/11] virtio-gpu: Introduce virgl_gpu_resource
 structure
Message-ID: <ZZZd6rueZGmzSbPb@amd.com>
References: <20231219075320.165227-1-ray.huang@amd.com>
 <20231219075320.165227-6-ray.huang@amd.com>
 <CAJ+F1CKOsDk835H8j56mfS7e=8BusYjo3mJYwuPbdRPq1MmNzw@mail.gmail.com>
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <CAJ+F1CKOsDk835H8j56mfS7e=8BusYjo3mJYwuPbdRPq1MmNzw@mail.gmail.com>
X-ClientProxiedBy: SG2PR02CA0108.apcprd02.prod.outlook.com
 (2603:1096:4:92::24) To SJ2PR12MB8690.namprd12.prod.outlook.com
 (2603:10b6:a03:540::10)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: SJ2PR12MB8690:EE_|IA1PR12MB6385:EE_
X-MS-Office365-Filtering-Correlation-Id: 80af6f06-263d-4c9a-b561-08dc0cf6b0ca
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam: BCL:0;
X-Microsoft-Antispam-Message-Info:
	mwATAW5smQUBr/NkiutoK/x0weguozx4lOB3rXBkvh1Ijvb3dd2YR6PqUpgDE4kHjINk1qcHnnNmRlqziB2KoOAEkom7DCvW4WgmSHDTIC6XidPDz+Aglda4DeDVVTdY0FSTy3AkhjUTNyjBoIhkPT9uTzRbQbDBLRZau+WD88sq1JBVNkAnaG+vbMocj3SrZ+TNoW1C/oeh+LusDtwjT9p/k1At/GPGk/DoyIr5saiJTU0DpFYkmpdp/kV2CT+QE+JxrdN2KaxzYylvRhZPRAh0cezIFTv/U10PSj8SLE0XuLb1xQUwt2znf6UxjBF5jpFgX+rUFKSd4YiQIsiJxnxDzsw9GUaVUIPNq7nk4ZqCVxB02MOJfaHmivFAp1/v/+JyFFdkgMC4ZPHxaD3K4MpG9BACL2SMRJp6JTpaNNgtVuuH/OV9WKnr6YZGXnyIHFYHR0LP5l4znuY/LiMXuZtO+t9u7sY/h8XobugyC4p78UKslqDVgf486ExcTyn+c/w9nxzR3RCluY0Ghot9FJZ2uUrlOyMJcVPGSQnkyIs7TokA+yT5LJ1K/yuKA8P9
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SJ2PR12MB8690.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230031)(136003)(396003)(346002)(39860400002)(376002)(366004)(230922051799003)(186009)(1800799012)(451199024)(64100799003)(66946007)(4326008)(8676002)(316002)(478600001)(54906003)(6916009)(66556008)(8936002)(6486002)(66476007)(83380400001)(6512007)(53546011)(6506007)(6666004)(2616005)(26005)(7416002)(5660300002)(41300700001)(2906002)(36756003)(38100700002)(86362001);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?aGtKYnhSZ1dyTkF5aW5qL2d1YWtBYTZYQUVBOGtZNkhUdVhBYTh4b1h5OWdn?=
 =?utf-8?B?NncwVEszSWp3MXVlTzFzZFhzcGlVNVRlN3FaaHJnU0FYbHZGb0pEVmhJbW9O?=
 =?utf-8?B?a1hMRTNRdGQwL1NrQXNJeFFpVjFLbEJWRy9PUTgwczlHNUhtT0NKOXJnelFw?=
 =?utf-8?B?S1BnUFpNTlVDNWtYNUo5K2lPTEprUjF3STVJTnZmb0tFVFA3NGZYblJQSUU1?=
 =?utf-8?B?TXRiZ2lCM3FMZ2YvREtPQng1aGpoQ1RSWWNNc2pIY0FSWjRqQVhMRXZSWjUx?=
 =?utf-8?B?WlY5NjMzVkloM0x4cGhSWFR1Q2xvV04zSDRVSmI0MDduNTAwVWdYZ0dOdGxQ?=
 =?utf-8?B?ZEMyYXZJdk14Rmw3ZzNlbnJQa0QxalZ5cnB6OWc2aXA1TmpUMURXcFRyb2I3?=
 =?utf-8?B?TXhFTHdGLzl1SXkxZjRiNytvNklVTS9aVmZEcjIzMVl4S2kyZXNTTHRGc2Zo?=
 =?utf-8?B?ejc4RkR1alpRT3NDT2VwdjNVd21iRUpOZStvUFcxT241cS9DUnUwNkN2RnhJ?=
 =?utf-8?B?Q0hTeGtZUERKaHNCMlNINEdjVE5qWXpVb1FqU0p4dlRWa2JFRlNSSUVBOVBO?=
 =?utf-8?B?Q01wTlN1VXhrQVpML20yVEU4TXo1RDNjeHlCbGZQMEttUHdBdjVWT0RxSE42?=
 =?utf-8?B?NzlIS3F2VHBvNlZqYlRsbHA0MjNEZG1EdGRTYlc3VlpsVmpBZ3NnNWl3WVZS?=
 =?utf-8?B?SEZkZHRNV3dCTFpQUjk2V0Y1elM5SjF6TFVHWDgxZjByMnZTUy9pUGorN2xj?=
 =?utf-8?B?c0dGUGpCV3lmWWRRWC8xbk85aDh1c1ErRkFpUVk1QVBrWXJFY3NMdmgvZm5B?=
 =?utf-8?B?OUk4QU42RUMxUnlCNnQzYTlUVnZWcVhoMEZobGkvUTBRQmxOb0JiVXhwdW1y?=
 =?utf-8?B?UXlMMFhOeHNyOGRYSUdoNitVYVYxUkhIYWFselpNOW9xZEZWcFFtUjI5OFJp?=
 =?utf-8?B?RTZZcUFGQWUvQWU0UktNUVlkZFlxck5qSG9LdzJQcEwxcFFBZm5BWlFBeW40?=
 =?utf-8?B?S1VZMzM0aEFHYUlZUkx0Y3EwdjNWb25ScFZaVGJpYmw2RjYwbnh4bzZEK1c5?=
 =?utf-8?B?MFRablEyUmdTNVIyT2s4dTRDTktnTE0rQVdmbHdGRWt1VE5vR1dSZERuTFk5?=
 =?utf-8?B?VzROSDJwY1VROTVPSXZwUmtmeCs1aHZ1MlpsTmFxL1lNKzZ4ejZmYjZoWnc1?=
 =?utf-8?B?N3g2REIxd1BqUXVHN1NXYk5ubTB5WWN1aERHaTMwV2VnK0R5K1ZqeHRYT1k5?=
 =?utf-8?B?SkVvVi9yRzkrcHBTdnlRVkJod0xFZXZveGRrTmRXU0xvQlpTdFBIVWhaRUgx?=
 =?utf-8?B?MkthYXN0bGxvWG9RK3lveGFpbUpKSHRUWlhObnFEMHJpMC9Gb2RtNWZJWVI1?=
 =?utf-8?B?NG10RHR2SDVrRlUxeS9SeEh3b1hqUHBqYXJxMmtYTTZvK2tqRXJrRFR2RzZL?=
 =?utf-8?B?ckRqUDJoTmg4NlpPdFlwVnZ6cmR3NTdOSEhYQXB5Y2dHWVZwTUVzSEhsdlpM?=
 =?utf-8?B?MG50U1k5TGV0a0N4RXo1WTBEcGExdkFNNmxIS0orTk8vV3AwOU1ZVnhnZjF6?=
 =?utf-8?B?UEJ5eHQrdXdtYW8vVENlZnpSbnY2U3NUckRGU3czSjBtVDV4aUpMWiszRjNu?=
 =?utf-8?B?ajAvL3V5T0dycWpHQlpBbVQxdHgybHJkV3c3NUVHd3FLZHU2TCtjcURSejl4?=
 =?utf-8?B?WThCdndqbncwNDVseXdFTXl2bXk0Z1Q3WWVsSDJPTkx5L2xSOGZmRzU2WTRx?=
 =?utf-8?B?YytMc0lqQW1hcmdDamdkTDZodHBZaFliYXpOMVA1dHZjTno1NEpJS1dQbFZE?=
 =?utf-8?B?aktqa2Z0MDhPdURqNU9KdFlrb1JQalJUQWhvbFRWSXRJUEZReUxnM0RWV293?=
 =?utf-8?B?ZGtTTmo2djJwZjQzTmx0MFNJaGRSU3gxYkwya0J6RXZqZHdaQ2NSK012RzhW?=
 =?utf-8?B?YzdOOXU4UzZibnFyaFJhQlREbWpxMUM4Qlc1SzkrRy8wT0ZkSUlydVRwV3pU?=
 =?utf-8?B?MElNTVFwNHh3VTZJZ29BczNaK0gzaVVyOGNMWktQZFR1Yk9UZVNGV2RaVFRT?=
 =?utf-8?B?Mk1XbnQ0VjdNTlFHWGh1Y3V5Y2QyMjgrYUg1UVF0NC91aS8zcFVXcURCR3g0?=
 =?utf-8?Q?L4JfW/BgisnLy1GGB37a1DV0v?=
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 80af6f06-263d-4c9a-b561-08dc0cf6b0ca
X-MS-Exchange-CrossTenant-AuthSource: SJ2PR12MB8690.namprd12.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Jan 2024 07:28:05.0412
 (UTC)
X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted
X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d
X-MS-Exchange-CrossTenant-MailboxType: HOSTED
X-MS-Exchange-CrossTenant-UserPrincipalName: RgzTUAvY+G9IZ6e+zkwoKGfrs8PPcp/eurA+ouvUrSrKI1mshTFPBkY78fdRxoInnNZsv1jwn7uaIxYH4Piafg==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA1PR12MB6385

On Tue, Jan 02, 2024 at 07:52:04PM +0800, Marc-André Lureau wrote:
> Hi
> 
> On Tue, Dec 19, 2023 at 11:55 AM Huang Rui <ray.huang@amd.com> wrote:
> >
> > Introduce a new virgl_gpu_resource data structure and helper functions
> > for virgl. It's used to add new member which is specific for virgl in
> > following patches of blob memory support.
> >
> > Signed-off-by: Huang Rui <ray.huang@amd.com>
> > ---
> >
> > New patch:
> > - Introduce new struct virgl_gpu_resource to store virgl specific members.
> > - Move resource initialization from path "virtio-gpu: Resource UUID" here.
> > - Remove error handling of g_new0, because glib will abort() on OOM.
> > - Set iov and iov_cnt in struct virtio_gpu_simple_resource for all types
> >   of resources.
> >
> >  hw/display/virtio-gpu-virgl.c | 84 ++++++++++++++++++++++++++---------
> >  1 file changed, 64 insertions(+), 20 deletions(-)
> >
> > diff --git a/hw/display/virtio-gpu-virgl.c b/hw/display/virtio-gpu-virgl.c
> > index 5bbc8071b2..faab374336 100644
> > --- a/hw/display/virtio-gpu-virgl.c
> > +++ b/hw/display/virtio-gpu-virgl.c
> > @@ -22,6 +22,23 @@
> >
> >  #include <virglrenderer.h>
> >
> > +struct virgl_gpu_resource {
> > +    struct virtio_gpu_simple_resource res;
> > +};
> > +
> > +static struct virgl_gpu_resource *
> > +virgl_gpu_find_resource(VirtIOGPU *g, uint32_t resource_id)
> > +{
> > +    struct virtio_gpu_simple_resource *res;
> > +
> > +    res = virtio_gpu_find_resource(g, resource_id);
> > +    if (!res) {
> > +        return NULL;
> > +    }
> > +
> > +    return container_of(res, struct virgl_gpu_resource, res);
> > +}
> > +
> >  #if VIRGL_RENDERER_CALLBACKS_VERSION >= 4
> >  static void *
> >  virgl_get_egl_display(G_GNUC_UNUSED void *cookie)
> > @@ -35,11 +52,19 @@ static void virgl_cmd_create_resource_2d(VirtIOGPU *g,
> >  {
> >      struct virtio_gpu_resource_create_2d c2d;
> >      struct virgl_renderer_resource_create_args args;
> > +    struct virgl_gpu_resource *vres;
> >
> >      VIRTIO_GPU_FILL_CMD(c2d);
> >      trace_virtio_gpu_cmd_res_create_2d(c2d.resource_id, c2d.format,
> >                                         c2d.width, c2d.height);
> >
> 
> It should check the resource doesn't already exist (similar to 2d code)
> 

Will add the resource check here in V7.

Thanks,
Ray

> > +    vres = g_new0(struct virgl_gpu_resource, 1);
> > +    vres->res.width = c2d.width;
> > +    vres->res.height = c2d.height;
> > +    vres->res.format = c2d.format;
> > +    vres->res.resource_id = c2d.resource_id;
> > +    QTAILQ_INSERT_HEAD(&g->reslist, &vres->res, next);
> > +
> >      args.handle = c2d.resource_id;
> >      args.target = 2;
> >      args.format = c2d.format;
> > @@ -59,11 +84,19 @@ static void virgl_cmd_create_resource_3d(VirtIOGPU *g,
> >  {
> >      struct virtio_gpu_resource_create_3d c3d;
> >      struct virgl_renderer_resource_create_args args;
> > +    struct virgl_gpu_resource *vres;
> >
> >      VIRTIO_GPU_FILL_CMD(c3d);
> >      trace_virtio_gpu_cmd_res_create_3d(c3d.resource_id, c3d.format,
> >                                         c3d.width, c3d.height, c3d.depth);
> >
> 
> same
> 
> > +    vres = g_new0(struct virgl_gpu_resource, 1);
> > +    vres->res.width = c3d.width;
> > +    vres->res.height = c3d.height;
> > +    vres->res.format = c3d.format;
> > +    vres->res.resource_id = c3d.resource_id;
> > +    QTAILQ_INSERT_HEAD(&g->reslist, &vres->res, next);
> > +
> >      args.handle = c3d.resource_id;
> >      args.target = c3d.target;
> >      args.format = c3d.format;
> > @@ -82,19 +115,23 @@ static void virgl_cmd_resource_unref(VirtIOGPU *g,
> >                                       struct virtio_gpu_ctrl_command *cmd)
> >  {
> >      struct virtio_gpu_resource_unref unref;
> > -    struct iovec *res_iovs = NULL;
> > -    int num_iovs = 0;
> > +    struct virgl_gpu_resource *vres;
> >
> >      VIRTIO_GPU_FILL_CMD(unref);
> >      trace_virtio_gpu_cmd_res_unref(unref.resource_id);
> >
> > -    virgl_renderer_resource_detach_iov(unref.resource_id,
> > -                                       &res_iovs,
> > -                                       &num_iovs);
> > -    if (res_iovs != NULL && num_iovs != 0) {
> > -        virtio_gpu_cleanup_mapping_iov(g, res_iovs, num_iovs);
> > +    vres = virgl_gpu_find_resource(g, unref.resource_id);
> > +    if (!vres) {
> > +        cmd->error = VIRTIO_GPU_RESP_ERR_INVALID_RESOURCE_ID;
> > +        return;
> >      }
> > +
> > +    virgl_renderer_resource_detach_iov(unref.resource_id, NULL, NULL);
> >      virgl_renderer_resource_unref(unref.resource_id);
> > +
> > +    QTAILQ_REMOVE(&g->reslist, &vres->res, next);
> > +    virtio_gpu_cleanup_mapping(g, &vres->res);
> > +    g_free(vres);
> >  }
> >
> >  static void virgl_cmd_context_create(VirtIOGPU *g,
> > @@ -310,44 +347,51 @@ static void virgl_resource_attach_backing(VirtIOGPU *g,
> >                                            struct virtio_gpu_ctrl_command *cmd)
> >  {
> >      struct virtio_gpu_resource_attach_backing att_rb;
> > -    struct iovec *res_iovs;
> > -    uint32_t res_niov;
> > +    struct virgl_gpu_resource *vres;
> >      int ret;
> >
> >      VIRTIO_GPU_FILL_CMD(att_rb);
> >      trace_virtio_gpu_cmd_res_back_attach(att_rb.resource_id);
> >
> > +    vres = virgl_gpu_find_resource(g, att_rb.resource_id);
> > +    if (!vres) {
> > +        cmd->error = VIRTIO_GPU_RESP_ERR_INVALID_RESOURCE_ID;
> > +        return;
> > +    }
> > +
> >      ret = virtio_gpu_create_mapping_iov(g, att_rb.nr_entries, sizeof(att_rb),
> > -                                        cmd, NULL, &res_iovs, &res_niov);
> > +                                        cmd, NULL, &vres->res.iov,
> > +                                        &vres->res.iov_cnt);
> >      if (ret != 0) {
> >          cmd->error = VIRTIO_GPU_RESP_ERR_UNSPEC;
> >          return;
> >      }
> >
> >      ret = virgl_renderer_resource_attach_iov(att_rb.resource_id,
> > -                                             res_iovs, res_niov);
> > +                                             vres->res.iov, vres->res.iov_cnt);
> >
> > -    if (ret != 0)
> > -        virtio_gpu_cleanup_mapping_iov(g, res_iovs, res_niov);
> > +    if (ret != 0) {
> > +        virtio_gpu_cleanup_mapping(g, &vres->res);
> > +    }
> >  }
> >
> >  static void virgl_resource_detach_backing(VirtIOGPU *g,
> >                                            struct virtio_gpu_ctrl_command *cmd)
> >  {
> >      struct virtio_gpu_resource_detach_backing detach_rb;
> > -    struct iovec *res_iovs = NULL;
> > -    int num_iovs = 0;
> > +    struct virgl_gpu_resource *vres;
> >
> >      VIRTIO_GPU_FILL_CMD(detach_rb);
> >      trace_virtio_gpu_cmd_res_back_detach(detach_rb.resource_id);
> >
> > -    virgl_renderer_resource_detach_iov(detach_rb.resource_id,
> > -                                       &res_iovs,
> > -                                       &num_iovs);
> > -    if (res_iovs == NULL || num_iovs == 0) {
> > +    vres = virgl_gpu_find_resource(g, detach_rb.resource_id);
> > +    if (!vres) {
> > +        cmd->error = VIRTIO_GPU_RESP_ERR_INVALID_RESOURCE_ID;
> >          return;
> >      }
> > -    virtio_gpu_cleanup_mapping_iov(g, res_iovs, num_iovs);
> > +
> > +    virgl_renderer_resource_detach_iov(detach_rb.resource_id, NULL, NULL);
> > +    virtio_gpu_cleanup_mapping(g, &vres->res);
> >  }
> >
> >
> > --
> > 2.25.1
> >
> >
> 
> 
> -- 
> Marc-André Lureau


From xen-devel-bounces@lists.xenproject.org Thu Jan 04 08:12:09 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 04 Jan 2024 08:12:09 +0000
Received: from list by lists.xenproject.org with outflank-mailman.661104.1030791 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLIpe-0008Td-5y; Thu, 04 Jan 2024 08:12:02 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 661104.1030791; Thu, 04 Jan 2024 08:12:02 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLIpe-0008TW-3J; Thu, 04 Jan 2024 08:12:02 +0000
Received: by outflank-mailman (input) for mailman id 661104;
 Thu, 04 Jan 2024 08:12:01 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=0by4=IO=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rLIpd-0008TQ-3G
 for xen-devel@lists.xenproject.org; Thu, 04 Jan 2024 08:12:01 +0000
Received: from mail-lf1-x12b.google.com (mail-lf1-x12b.google.com
 [2a00:1450:4864:20::12b])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id ee4ca39b-aad8-11ee-9b0f-b553b5be7939;
 Thu, 04 Jan 2024 09:11:58 +0100 (CET)
Received: by mail-lf1-x12b.google.com with SMTP id
 2adb3069b0e04-50e7ddd999bso243494e87.1
 for <xen-devel@lists.xenproject.org>; Thu, 04 Jan 2024 00:11:58 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 r23-20020a6b5d17000000b007bbbe46713asm1332149iob.37.2024.01.04.00.11.57
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 04 Jan 2024 00:11:57 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: ee4ca39b-aad8-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1704355918; x=1704960718; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=63oIr0HHWvpQUpc7d8B1Atmx1b4H0HYqXW4OQTBgAAs=;
        b=DKZlBm6HrLLwZw/2BcDhem6dMLEcubAKDBTMb6GnSBplO+Wf4HIUyxORNnXasetMn3
         XPLUOBx81jKNn+fpmJR6k9H5cnaDI2wQ0Xd4C5egIZ7mi3JVr/G95jOvLGuQ4BI2YqjV
         nnKdWsBmdoVhGsIUbDXtQ0ocTdiVtDdmkylo3baS8A7UCO5+xqV3EuMdosroTbkVCy1C
         lMecFIQbvAifzSwf1Pd5JAoS9hu6oXdPVtl1CBRpnrxd1O2ubWbiU46vGuQKo/wVq4Ej
         DF4A4MlWP/XP6fIutmPfAgHT6sumbN0S+wqFjrLsd2+Ya8h/xpt3/jxWul2B7DnyFBCL
         mgQQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704355918; x=1704960718;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=63oIr0HHWvpQUpc7d8B1Atmx1b4H0HYqXW4OQTBgAAs=;
        b=uDZfWDGAxn2URQgbF89h+VB02xBTYK0IB0iNGB2mGQ6/INzh1CDTPpS6ME4Xd6QPxp
         20xATGJlk7fdhit/kM5p2liegfAO6xjI0fh5K5CYsk1W60EcOqMXgLGSfaNwkXPOoGAJ
         6lurk3AbpigO0vi/N7/FOPzxdeJuWG+1FLKopBeKkSO5waCfILzGDMLThQ1dFYUi8Kqs
         6Hvo7VR+t6ZJFwR4K/ajvCSk3RSMyC/294z6TycWDyGwujY/IH57Kr7ESZ+lGWa3gDCR
         MJjFHy0+DjnnYJ8WNnkRCnQZ/Ku3OHVaNehQAjhCZ12DcYzihSWZcynYeXDR/irbBLhs
         XcoA==
X-Gm-Message-State: AOJu0Yx/RLGQIRb+++WHg6bMzlmaYBAncNU0vbF2FcGGNIAVzrY4xBE7
	8iU3GIcFdfYJT1KJ1WOwUWHo/J8LDb3Q
X-Google-Smtp-Source: AGHT+IFvlsbFNHyNC7+V3f6T39sgf3MogKYinwWmdALANh/aBaXJnvYaBc5e+ynkNN9mF2YYk7FWHw==
X-Received: by 2002:a05:6512:b84:b0:50e:72fc:aff5 with SMTP id b4-20020a0565120b8400b0050e72fcaff5mr181843lfv.36.1704355918194;
        Thu, 04 Jan 2024 00:11:58 -0800 (PST)
Message-ID: <5aea32e3-033e-4299-9088-279d23801ba6@suse.com>
Date: Thu, 4 Jan 2024 09:12:06 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: Ping: [PATCH] Argo: drop meaningless mfn_valid() check
Content-Language: en-US
To: Christopher Clark <christopher.w.clark@gmail.com>
Cc: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
References: <580c6c48-9dd5-4296-8696-2b40beac2bc3@suse.com>
 <5d76295f-0438-4c5d-8b2e-73a1abcc96e6@suse.com>
 <CACMJ4GbvMhDdgOp=kUeL_+_j2yS_NVU69P8Xh9QYDLUwJ31Eow@mail.gmail.com>
 <CACMJ4GbNJgsg7tts=9UQPUr9ofsXajuHz7wYO1r5LnevWEL4_g@mail.gmail.com>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <CACMJ4GbNJgsg7tts=9UQPUr9ofsXajuHz7wYO1r5LnevWEL4_g@mail.gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 23.12.2023 22:35, Christopher Clark wrote:
> On Sat, Dec 23, 2023 at 12:47 PM Christopher Clark
> <christopher.w.clark@gmail.com> wrote:
>>
>> On Sun, Dec 17, 2023 at 11:55 PM Jan Beulich <jbeulich@suse.com> wrote:
>>>
>>> Christopher,
>>>
>>> On 27.11.2023 14:55, Jan Beulich wrote:
>>>> Holding a valid struct page_info * in hands already means the referenced
>>>> MFN is valid; there's no need to check that again. Convert the checking
>>>> logic to a switch(), to help keeping the extra (and questionable) x86-
>>>> only check in somewhat tidy shape.
>>>>
>>>> Signed-off-by: Jan Beulich <jbeulich@suse.com>
>>
>> Reviewed-by: Christopher Clark <christopher.w.clark@gmail.com>
> 
> I'd like to hold off on this just yet, sorry -- the change does look
> ok as far as a transform being applied the prior logic and the
> necessity of the check, but with it applied, it's not obvious that it
> handles all the page types as best that it could there, so I'd like to
> look at this (and the previously submitted patch again) please.

I'm puzzled: This patch merely removes a pointless check. Whatever is
lacking with it in place will have been lacking before. Also can you
please give a rough estimate towards when you'll be getting back on
this, or ideally on both patches?

Jan


From xen-devel-bounces@lists.xenproject.org Thu Jan 04 08:54:42 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 04 Jan 2024 08:54:42 +0000
Received: from list by lists.xenproject.org with outflank-mailman.661116.1030801 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLJUg-0005zO-EY; Thu, 04 Jan 2024 08:54:26 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 661116.1030801; Thu, 04 Jan 2024 08:54:26 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLJUg-0005zH-Bc; Thu, 04 Jan 2024 08:54:26 +0000
Received: by outflank-mailman (input) for mailman id 661116;
 Thu, 04 Jan 2024 08:54:24 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=0by4=IO=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rLJUe-0005zA-S1
 for xen-devel@lists.xenproject.org; Thu, 04 Jan 2024 08:54:24 +0000
Received: from mail-lj1-x233.google.com (mail-lj1-x233.google.com
 [2a00:1450:4864:20::233])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id db3de34a-aade-11ee-98ef-6d05b1d4d9a1;
 Thu, 04 Jan 2024 09:54:23 +0100 (CET)
Received: by mail-lj1-x233.google.com with SMTP id
 38308e7fff4ca-2cd0d05838fso3108071fa.1
 for <xen-devel@lists.xenproject.org>; Thu, 04 Jan 2024 00:54:23 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 bg11-20020a056e02310b00b0035faf00c555sm8980889ilb.31.2024.01.04.00.54.21
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 04 Jan 2024 00:54:22 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: db3de34a-aade-11ee-98ef-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1704358463; x=1704963263; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=1eqeZzEvc5/VJZVlCnrJsCnmNWfBylCL5wi1ctFiICk=;
        b=I4UpuZby4L0Ol3y5fichf4LN+KsSv4lAD1QDIC7lG2+Kv3VUcC2xDADg+EO9QjskRJ
         6b6pDwhzCTZ7S56w7tdXACmEOGPFph+xRAc6JKncHxpWhpjVkZNMHBLRrZYqMVbwlGOO
         rhS7BA6CL7vdvoYS35jF8FRFr+T2rdvv2Q52b62+fwwYeiAxbm9ZeOftlNFMGB+8WrLj
         vgX22Id2UYodv8PqLjFJJZ6hfqD69tJ5/vYIM7W5ENkNlRW7APfuLF71X8+nJvAd2SZT
         vJs4Qfa1+0/dJiYq80IIfV+m31/QzgoLKGL4fBDdI5JCFcjY7rbwWZ6HRN2wc4/N4gAm
         pfuw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704358463; x=1704963263;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=1eqeZzEvc5/VJZVlCnrJsCnmNWfBylCL5wi1ctFiICk=;
        b=VgIyYL6e8ntGKZ0tshc8c4yKZwTvCOyGsF5woNIbkYm5PefHaJh0rv+LE66yUsx9bL
         CBjLpT4gHVvnXjpYLte4C9TaqW/1nq0Pt2LqFYtnhJsEGskVITH2GTPV2fo52ieT5n8J
         vPfKH3EU/0eZ8mQaXAYIYSW0R0aqoUXS7861228vXhSa/6ZKCVzI3vhfpJwi/e79Q627
         ANblnVhVLmLADHrvderOL/KzysPyto00c66tejmj2kLJciYanxIiPmXZad1BjJUAkyKT
         AKhZJjXvZ7a+g30rZ/1AHeE9qrUnRkh26JuUIGUvGFPnXfM9Zgp6bVZfjETIRzWKEPfE
         DFwA==
X-Gm-Message-State: AOJu0Ywvqkd7qRk62oKq83eH8FnkNLlAWGpvQn47CB9q9DQlYaPfGUtC
	wpUNK3gpf24k5KvMU+Sv6vl4+xacsNyv
X-Google-Smtp-Source: AGHT+IFycV3qyEiC6pmNePQERjtxcUwQvvitgBlmsNTDdB8+wmoRlF/dBa2fzoLWYtKFzezQkJ+qWw==
X-Received: by 2002:a05:651c:1a06:b0:2cc:769e:723d with SMTP id by6-20020a05651c1a0600b002cc769e723dmr201118ljb.87.1704358462874;
        Thu, 04 Jan 2024 00:54:22 -0800 (PST)
Message-ID: <3a0b6d8a-d9f3-41d0-9acc-e84b5d9d3e33@suse.com>
Date: Thu, 4 Jan 2024 09:54:30 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2 1/2] xen/x86: io_apic: Introduce a command line option
 to skip timer check
Content-Language: en-US
To: Julien Grall <julien@xen.org>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger.pau@citrix.com>
Cc: Julien Grall <jgrall@amazon.com>,
 Andrew Cooper <andrew.cooper3@citrix.com>,
 George Dunlap <george.dunlap@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>,
 xen-devel@lists.xenproject.org
References: <20231211122322.15815-1-julien@xen.org>
 <20231211122322.15815-2-julien@xen.org>
 <b17bb7d1-1206-4ad1-96b1-7b903a740c83@suse.com>
 <8b8a62a0-f854-405e-b256-5eee4bfdcb6c@xen.org>
 <b74f1f28-58da-4604-a7ef-370aeb0522ce@suse.com>
 <d0daf858-eda8-4b2a-9cfe-82fff834df8f@xen.org>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <d0daf858-eda8-4b2a-9cfe-82fff834df8f@xen.org>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 02.01.2024 20:09, Julien Grall wrote:
> Hi Jan,
> 
> On 14/12/2023 10:35, Jan Beulich wrote:
>> On 14.12.2023 11:14, Julien Grall wrote:
>>> On 14/12/2023 10:10, Jan Beulich wrote:
>>>> On 11.12.2023 13:23, Julien Grall wrote:
>>>>> --- a/xen/arch/x86/io_apic.c
>>>>> +++ b/xen/arch/x86/io_apic.c
>>>>> @@ -57,6 +57,14 @@ bool __initdata ioapic_ack_forced;
>>>>>    int __read_mostly nr_ioapic_entries[MAX_IO_APICS];
>>>>>    int __read_mostly nr_ioapics;
>>>>>    
>>>>> +/*
>>>>> + * The logic to check if the timer is working is expensive. So allow
>>>>> + * the admin to bypass it if they know their platform doesn't have
>>>>> + * a buggy timer.
>>>>> + */
>>>>> +static bool __initdata pit_irq_works;
>>>>> +boolean_param("pit-irq-works", pit_irq_works);
>>>>> +
>>>>>    /*
>>>>>     * Rough estimation of how many shared IRQs there are, can
>>>>>     * be changed anytime.
>>>>> @@ -1502,6 +1510,9 @@ static int __init timer_irq_works(void)
>>>>>    {
>>>>>        unsigned long t1, flags;
>>>>>    
>>>>> +    if ( pit_irq_works )
>>>>> +        return 1;
>>>>
>>>> When the check is placed here, what exactly use of the option means is
>>>> system dependent. I consider this somewhat risky, so I'd prefer if the
>>>> check was put on the "normal" path in check_timer(). That way it'll
>>>> affect only the one case which we can generally consider "known good",
>>>> but not the cases where the virtual wire setups are being probed. I.e.
> 
> By "known good", do you mean the following:
> 
> diff --git a/xen/arch/x86/io_apic.c b/xen/arch/x86/io_apic.c
> index c89fbed8d675..c39d39ee951a 100644
> --- a/xen/arch/x86/io_apic.c
> +++ b/xen/arch/x86/io_apic.c
> @@ -1960,7 +1959,8 @@ static void __init check_timer(void)
>            * Ok, does IRQ0 through the IOAPIC work?
>            */
>           unmask_IO_APIC_irq(irq_to_desc(0));
> -        if (timer_irq_works()) {
> +        if (pit_irq_works || timer_irq_works()) {
> +            printk("====== pirq_irq_works %d =====\n", pit_irq_works);
>               local_irq_restore(flags);
>               return;
>           }

Yes.

>>> I am not against restricting when we allow skipping the timer check. But
>>> in that case, I wonder why Linux is doing it differently?
>>
>> Sadly Linux'es git history doesn't go back far enough (begins only at past
>> 2.6.11), so I can't (easily) find the patch (and description) for the x86-64
>> change. The later i386 change is justified mainly by paravirt needs, so
>> isn't applicable here. I wouldn't therefore exclude that my point above
>> wasn't even taken into consideration. Furthermore their command line option
>> is "no_timer_check", which to me firmly says "don't check" without regard to
>> whether the source (PIT) is actually okay. That's different with the option
>> name you (imo validly) chose.
> 
> Just to note that the name was suggested by Roger. I have to admit that 
> I didn't check if this made sense for the existing placement.

Roger, thoughts?

Jan

> Anyway, I tested the change on the HW where I wanted to skip the timer 
> check. And I can confirm this is still skipping the timer check.
> 
> So I will send a new version with the diff above and some updated comments.
> 
> Cheers,
> 



From xen-devel-bounces@lists.xenproject.org Thu Jan 04 09:01:10 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 04 Jan 2024 09:01:10 +0000
Received: from list by lists.xenproject.org with outflank-mailman.661121.1030810 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLJb7-0007Zz-5a; Thu, 04 Jan 2024 09:01:05 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 661121.1030810; Thu, 04 Jan 2024 09:01:05 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLJb7-0007Zs-2a; Thu, 04 Jan 2024 09:01:05 +0000
Received: by outflank-mailman (input) for mailman id 661121;
 Thu, 04 Jan 2024 09:01:03 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=4u2H=IO=suse.com=jgross@srs-se1.protection.inumbo.net>)
 id 1rLJb5-0007Zm-5J
 for xen-devel@lists.xenproject.org; Thu, 04 Jan 2024 09:01:03 +0000
Received: from smtp-out1.suse.de (smtp-out1.suse.de
 [2a07:de40:b251:101:10:150:64:1])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id c7e0e578-aadf-11ee-9b0f-b553b5be7939;
 Thu, 04 Jan 2024 10:01:01 +0100 (CET)
Received: from imap1.dmz-prg2.suse.org (imap1.dmz-prg2.suse.org [10.150.64.97])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
 (No client certificate requested)
 by smtp-out1.suse.de (Postfix) with ESMTPS id A2A5A21EE1;
 Thu,  4 Jan 2024 09:00:59 +0000 (UTC)
Received: from imap1.dmz-prg2.suse.org (localhost [127.0.0.1])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
 (No client certificate requested)
 by imap1.dmz-prg2.suse.org (Postfix) with ESMTPS id 676FF13722;
 Thu,  4 Jan 2024 09:00:59 +0000 (UTC)
Received: from dovecot-director2.suse.de ([2a07:de40:b281:106:10:150:64:167])
 by imap1.dmz-prg2.suse.org with ESMTPSA id M8nwF8tzlmVwWAAAD6G6ig
 (envelope-from <jgross@suse.com>); Thu, 04 Jan 2024 09:00:59 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: c7e0e578-aadf-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1704358859; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:  content-transfer-encoding:content-transfer-encoding;
	bh=tDJDwV+ksS3RcAqm58GYLupDCL+N1fVsF7xQ9JzawIY=;
	b=oN/uwXM9xTVeWz4AiYt+Hjn3kHdi4fD3EMr2tRh2J9WzrmrHZjZlmGeEK8jclRHAuIvX5S
	tB0D8cvteBAz9dtsacnpzgX9IhXlmovezZeA3sF1HJZ+dNCBAmI/vkBIhAQyjx46vnmkrl
	OcL91DjbyJ0RAR9NhFCQDqfj0qidFxA=
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1704358859; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:  content-transfer-encoding:content-transfer-encoding;
	bh=tDJDwV+ksS3RcAqm58GYLupDCL+N1fVsF7xQ9JzawIY=;
	b=oN/uwXM9xTVeWz4AiYt+Hjn3kHdi4fD3EMr2tRh2J9WzrmrHZjZlmGeEK8jclRHAuIvX5S
	tB0D8cvteBAz9dtsacnpzgX9IhXlmovezZeA3sF1HJZ+dNCBAmI/vkBIhAQyjx46vnmkrl
	OcL91DjbyJ0RAR9NhFCQDqfj0qidFxA=
From: Juergen Gross <jgross@suse.com>
To: xen-devel@lists.xenproject.org
Cc: Juergen Gross <jgross@suse.com>,
	Wei Liu <wl@xen.org>,
	Anthony PERARD <anthony.perard@citrix.com>,
	George Dunlap <george.dunlap@citrix.com>,
	Nick Rosbrook <rosbrookn@gmail.com>,
	Julien Grall <julien@xen.org>,
	Samuel Thibault <samuel.thibault@ens-lyon.org>
Subject: [PATCH v3 00/33] tools: enable xenstore-stubdom to use 9pfs
Date: Thu,  4 Jan 2024 10:00:22 +0100
Message-Id: <20240104090055.27323-1-jgross@suse.com>
X-Mailer: git-send-email 2.35.3
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Spam-Score: 1.90
X-Spamd-Result: default: False [1.90 / 50.00];
	 ARC_NA(0.00)[];
	 RCVD_VIA_SMTP_AUTH(0.00)[];
	 FROM_HAS_DN(0.00)[];
	 TO_DN_SOME(0.00)[];
	 FREEMAIL_ENVRCPT(0.00)[gmail.com];
	 R_MISSING_CHARSET(2.50)[];
	 MIME_GOOD(-0.10)[text/plain];
	 TO_MATCH_ENVRCPT_ALL(0.00)[];
	 BROKEN_CONTENT_TYPE(1.50)[];
	 RCVD_COUNT_THREE(0.00)[3];
	 DKIM_SIGNED(0.00)[suse.com:s=susede1];
	 RCPT_COUNT_SEVEN(0.00)[8];
	 MID_CONTAINS_FROM(1.00)[];
	 FUZZY_BLOCKED(0.00)[rspamd.com];
	 FROM_EQ_ENVFROM(0.00)[];
	 MIME_TRACE(0.00)[0:+];
	 FREEMAIL_CC(0.00)[suse.com,xen.org,citrix.com,gmail.com,ens-lyon.org];
	 RCVD_TLS_ALL(0.00)[];
	 BAYES_HAM(-3.00)[100.00%]
Authentication-Results: smtp-out1.suse.de;
	none
X-Spam-Level: *
X-Spam-Flag: NO

This series is adding 9pfs support to Xenstore-stubdom, enabling it
to do logging to a dom0 directory.

This is a prerequisite for the final goal to add live update support
to Xenstore-stubdom, as it enables the stubdom to store its state in
a dom0 file.

The 9pfs backend is a new daemon written from scratch. Using a
dedicated 9pfs daemon has several advantages:

- it is using much less resources than a full blown qemu process
- it can serve multiple guests (the idea is to use it for other
  infrastructure domains, like qemu-stubdom or driver domains, too)
- it is designed to support several security enhancements, like
  limiting the number of files for a guest, or limiting the allocated
  file system space
- it doesn't support file links (neither hard nor soft links) or
  referencing parent directories via "..", minimizing the risk that
  a guest can "escape" from its home directory

Note that for now the daemon only contains the minimal needed
functionality to do logging from Xenstore-stubdom. I didn't want to
add all the 9pfs commands and security add-ons in the beginning, in
order to avoid needless efforts in case the idea of the daemon is
being rejected.

Changes in V3:
- new patches 1, 23-25
- addressed review comments

Changes in V2:
- support of multiple rings per device
- xenlogd->xen-9pfsd rename
- addressed review comments
- fixed some bugs

Juergen Gross (33):
  tools: add access macros for unaligned data
  xen/public: add some more 9pfs xenstore paths
  tools: add a new xen logging daemon
  tools/xenlogd: connect to frontend
  tools/xenlogd: add transport layer
  tools/xenlogd: add 9pfs response generation support
  tools/xenlogd: add 9pfs version request support
  tools/xenlogd: add 9pfs attach request support
  tools/xenlogd: add 9pfs walk request support
  tools/xenlogd: add 9pfs open request support
  tools/xenlogd: add 9pfs clunk request support
  tools/xenlogd: add 9pfs create request support
  tools/xenlogd: add 9pfs stat request support
  tools/xenlogd: add 9pfs write request support
  tools/xenlogd: add 9pfs read request support
  tools/libs/light: add backend type for 9pfs PV devices
  tools/xl: support new 9pfs backend xen-9pfsd
  tools/helpers: allocate xenstore event channel for xenstore stubdom
  tools/xenstored: rename xenbus_evtchn()
  stubdom: extend xenstore stubdom configs
  tools: add 9pfs device to xenstore-stubdom
  tools/xenstored: add early_init() function
  tools/xenstored: move systemd handling to posix.c
  tools/xenstored: move all log-pipe handling into posix.c
  tools/xenstored: move all socket handling into posix.c
  tools/xenstored: get own domid in stubdom case
  tools/xenstored: rework ring page (un)map functions
  tools/xenstored: split domain_init()
  tools/xenstored: map stubdom interface
  tools/xenstored: mount 9pfs device in stubdom
  tools/xenstored: add helpers for filename handling
  tools/xenstored: support complete log capabilities in stubdom
  tools/xenstored: have a single do_control_memreport()

 docs/man/xl.cfg.5.pod.in                      |   36 +-
 stubdom/xenstore-minios.cfg                   |    2 +-
 stubdom/xenstorepvh-minios.cfg                |    2 +-
 tools/Makefile                                |    1 +
 tools/golang/xenlight/helpers.gen.go          |   10 +
 tools/golang/xenlight/types.gen.go            |   12 +
 tools/helpers/init-xenstore-domain.c          |    9 +
 .../Linux/init.d/sysconfig.xencommons.in      |    1 -
 tools/hotplug/Linux/launch-xenstore.in        |    1 +
 tools/include/libxl.h                         |   17 +
 tools/include/xen-tools/common-macros.h       |   17 +
 tools/libs/light/libxl_9pfs.c                 |  174 +-
 tools/libs/light/libxl_create.c               |    4 +-
 tools/libs/light/libxl_dm.c                   |    2 +-
 tools/libs/light/libxl_types.idl              |   11 +
 tools/libs/light/libxl_types_internal.idl     |    1 +
 tools/xen-9pfsd/.gitignore                    |    1 +
 tools/xen-9pfsd/Makefile                      |   38 +
 tools/xen-9pfsd/io.c                          | 1467 +++++++++++++++++
 tools/xen-9pfsd/xen-9pfsd.c                   |  798 +++++++++
 tools/xen-9pfsd/xen-9pfsd.h                   |   99 ++
 tools/xenstored/Makefile.common               |    4 -
 tools/xenstored/control.c                     |   29 +-
 tools/xenstored/core.c                        |  250 +--
 tools/xenstored/core.h                        |   35 +-
 tools/xenstored/domain.c                      |   81 +-
 tools/xenstored/domain.h                      |    2 +
 tools/xenstored/lu_daemon.c                   |    4 +-
 tools/xenstored/minios.c                      |   93 +-
 tools/xenstored/posix.c                       |  251 ++-
 tools/xl/xl_parse.c                           |   36 +
 xen/include/public/io/9pfs.h                  |   34 +
 32 files changed, 3197 insertions(+), 325 deletions(-)
 create mode 100644 tools/xen-9pfsd/.gitignore
 create mode 100644 tools/xen-9pfsd/Makefile
 create mode 100644 tools/xen-9pfsd/io.c
 create mode 100644 tools/xen-9pfsd/xen-9pfsd.c
 create mode 100644 tools/xen-9pfsd/xen-9pfsd.h

-- 
2.35.3



From xen-devel-bounces@lists.xenproject.org Thu Jan 04 09:01:10 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 04 Jan 2024 09:01:10 +0000
Received: from list by lists.xenproject.org with outflank-mailman.661122.1030821 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLJbA-0007p5-CJ; Thu, 04 Jan 2024 09:01:08 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 661122.1030821; Thu, 04 Jan 2024 09:01:08 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLJbA-0007ow-9h; Thu, 04 Jan 2024 09:01:08 +0000
Received: by outflank-mailman (input) for mailman id 661122;
 Thu, 04 Jan 2024 09:01:07 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=4u2H=IO=suse.com=jgross@srs-se1.protection.inumbo.net>)
 id 1rLJb9-0007Zm-1w
 for xen-devel@lists.xenproject.org; Thu, 04 Jan 2024 09:01:07 +0000
Received: from smtp-out1.suse.de (smtp-out1.suse.de [195.135.223.130])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id cae1fdd1-aadf-11ee-9b0f-b553b5be7939;
 Thu, 04 Jan 2024 10:01:05 +0100 (CET)
Received: from imap1.dmz-prg2.suse.org (imap1.dmz-prg2.suse.org
 [IPv6:2a07:de40:b281:104:10:150:64:97])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
 (No client certificate requested)
 by smtp-out1.suse.de (Postfix) with ESMTPS id 2679921F8C;
 Thu,  4 Jan 2024 09:01:05 +0000 (UTC)
Received: from imap1.dmz-prg2.suse.org (localhost [127.0.0.1])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
 (No client certificate requested)
 by imap1.dmz-prg2.suse.org (Postfix) with ESMTPS id 0333D13722;
 Thu,  4 Jan 2024 09:01:04 +0000 (UTC)
Received: from dovecot-director2.suse.de ([2a07:de40:b281:106:10:150:64:167])
 by imap1.dmz-prg2.suse.org with ESMTPSA id 86syO9BzlmV2WAAAD6G6ig
 (envelope-from <jgross@suse.com>); Thu, 04 Jan 2024 09:01:04 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: cae1fdd1-aadf-11ee-9b0f-b553b5be7939
From: Juergen Gross <jgross@suse.com>
To: xen-devel@lists.xenproject.org
Cc: Juergen Gross <jgross@suse.com>,
	Wei Liu <wl@xen.org>,
	Anthony PERARD <anthony.perard@citrix.com>
Subject: [PATCH v3 01/33] tools: add access macros for unaligned data
Date: Thu,  4 Jan 2024 10:00:23 +0100
Message-Id: <20240104090055.27323-2-jgross@suse.com>
X-Mailer: git-send-email 2.35.3
In-Reply-To: <20240104090055.27323-1-jgross@suse.com>
References: <20240104090055.27323-1-jgross@suse.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Spam-Level: 
X-Spam-Level: 
Authentication-Results: smtp-out1.suse.de;
	none
X-Rspamd-Server: rspamd2.dmz-prg2.suse.org
X-Spamd-Result: default: False [-4.00 / 50.00];
	 REPLY(-4.00)[]
X-Spam-Score: -4.00
X-Rspamd-Queue-Id: 2679921F8C
X-Spam-Flag: NO

Add the basic access macros for unaligned data to common-macros.h.

Signed-off-by: Juergen Gross <jgross@suse.com>
---
V3:
- new patch
---
 tools/include/xen-tools/common-macros.h | 17 +++++++++++++++++
 1 file changed, 17 insertions(+)

diff --git a/tools/include/xen-tools/common-macros.h b/tools/include/xen-tools/common-macros.h
index e5ed603904..81fba2e9f5 100644
--- a/tools/include/xen-tools/common-macros.h
+++ b/tools/include/xen-tools/common-macros.h
@@ -79,6 +79,10 @@
 #define __must_check __attribute__((__warn_unused_result__))
 #endif
 
+#ifndef __packed
+#define __packed __attribute__((__packed__))
+#endif
+
 #define container_of(ptr, type, member) ({              \
     typeof(((type *)0)->member) *mptr__ = (ptr);        \
     (type *)((char *)mptr__ - offsetof(type, member));  \
@@ -87,4 +91,17 @@
 #define __AC(X, Y)   (X ## Y)
 #define _AC(X, Y)    __AC(X, Y)
 
+#define get_unaligned_t(type, ptr) ({                               \
+    const struct { type x; } __packed *ptr_ = (typeof(ptr_))(ptr);  \
+    ptr_->x;                                                        \
+})
+
+#define put_unaligned_t(type, val, ptr) do {                        \
+    struct { type x; } __packed *ptr_ = (typeof(ptr_))(ptr);        \
+    ptr_->x = val;                                                  \
+} while (0)
+
+#define get_unaligned(ptr)      get_unaligned_t(typeof(*(ptr)), ptr)
+#define put_unaligned(val, ptr) put_unaligned_t(typeof(*(ptr)), val, ptr)
+
 #endif	/* __XEN_TOOLS_COMMON_MACROS__ */
-- 
2.35.3



From xen-devel-bounces@lists.xenproject.org Thu Jan 04 09:01:12 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 04 Jan 2024 09:01:12 +0000
Received: from list by lists.xenproject.org with outflank-mailman.661123.1030831 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLJbE-00086i-Nz; Thu, 04 Jan 2024 09:01:12 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 661123.1030831; Thu, 04 Jan 2024 09:01:12 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLJbE-00086Z-Kt; Thu, 04 Jan 2024 09:01:12 +0000
Received: by outflank-mailman (input) for mailman id 661123;
 Thu, 04 Jan 2024 09:01:11 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=4u2H=IO=suse.com=jgross@srs-se1.protection.inumbo.net>)
 id 1rLJbD-00085z-Ri
 for xen-devel@lists.xenproject.org; Thu, 04 Jan 2024 09:01:11 +0000
Received: from smtp-out1.suse.de (smtp-out1.suse.de
 [2a07:de40:b251:101:10:150:64:1])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id ce16e9ce-aadf-11ee-98ef-6d05b1d4d9a1;
 Thu, 04 Jan 2024 10:01:10 +0100 (CET)
Received: from imap1.dmz-prg2.suse.org (imap1.dmz-prg2.suse.org
 [IPv6:2a07:de40:b281:104:10:150:64:97])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
 (No client certificate requested)
 by smtp-out1.suse.de (Postfix) with ESMTPS id 9B22C21F94;
 Thu,  4 Jan 2024 09:01:10 +0000 (UTC)
Received: from imap1.dmz-prg2.suse.org (localhost [127.0.0.1])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
 (No client certificate requested)
 by imap1.dmz-prg2.suse.org (Postfix) with ESMTPS id 7B83813722;
 Thu,  4 Jan 2024 09:01:10 +0000 (UTC)
Received: from dovecot-director2.suse.de ([2a07:de40:b281:106:10:150:64:167])
 by imap1.dmz-prg2.suse.org with ESMTPSA id PV71HNZzlmWHWAAAD6G6ig
 (envelope-from <jgross@suse.com>); Thu, 04 Jan 2024 09:01:10 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: ce16e9ce-aadf-11ee-98ef-6d05b1d4d9a1
From: Juergen Gross <jgross@suse.com>
To: xen-devel@lists.xenproject.org
Cc: Juergen Gross <jgross@suse.com>,
	Jason Andryuk <jandryuk@gmail.com>
Subject: [PATCH v3 02/33] xen/public: add some more 9pfs xenstore paths
Date: Thu,  4 Jan 2024 10:00:24 +0100
Message-Id: <20240104090055.27323-3-jgross@suse.com>
X-Mailer: git-send-email 2.35.3
In-Reply-To: <20240104090055.27323-1-jgross@suse.com>
References: <20240104090055.27323-1-jgross@suse.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Spam-Level: 
X-Rspamd-Server: rspamd1.dmz-prg2.suse.org
X-Spam-Level: 
X-Spam-Flag: NO
X-Spamd-Result: default: False [-4.00 / 50.00];
	 REPLY(-4.00)[]
Authentication-Results: smtp-out1.suse.de;
	none
X-Spam-Score: -4.00
X-Rspamd-Queue-Id: 9B22C21F94

Add some optional additional backend paths for 9pfs PV devices. Those
paths will be supported by the new xen-9pfsd 9pfs backend.

Signed-off-by: Juergen Gross <jgross@suse.com>
Reviewed-by: Jason Andryuk <jandryuk@gmail.com>
---
 xen/include/public/io/9pfs.h | 34 ++++++++++++++++++++++++++++++++++
 1 file changed, 34 insertions(+)

diff --git a/xen/include/public/io/9pfs.h b/xen/include/public/io/9pfs.h
index 9ad2773082..ac4bf0434b 100644
--- a/xen/include/public/io/9pfs.h
+++ b/xen/include/public/io/9pfs.h
@@ -71,6 +71,40 @@
  *                 created on the guest (no user ownership squash or remap)
  *         Only "none" is supported in this version of the protocol.
  *
+ *    max-files
+ *         Values:        <uint32_t>
+ *
+ *         The maximum number of files (including directories) allowed for
+ *         this device. Backend support of this node is optional. If the node
+ *         is not present or the value is zero the number of files is not
+ *         limited.
+ *
+ *    max-open-files
+ *         Values:        <uint32_t>
+ *
+ *         The maximum number of files the guest is allowed to have opened
+ *         concurrently. Multiple concurrent opens of the same file are counted
+ *         individually. Backend support of this node is optional. If the node
+ *         is not present or the value is zero a backend specific default is
+ *         applied.
+ *
+ *    max-space
+ *         Values:        <uint32_t>
+ *
+ *         The maximum file space in MiBs the guest is allowed to use for this
+ *         device. Backend support of this node is optional. If the node is
+ *         not present or the value is zero the space is not limited.
+ *
+ *    auto-delete
+ *         Values:        <bool>
+ *
+ *         When set to "1" the backend will delete the file with the oldest
+ *         modification date below <path> in case the allowed maximum file
+ *         space (see <max-space>) or file number (see <max-files>) is being
+ *         exceeded due to guest activity (creation or extension of files).
+ *         Files currently opened by the guest won't be deleted. Backend
+ *         support of this node is optional.
+ *
  ******************************************************************************
  *                            Frontend XenBus Nodes
  ******************************************************************************
-- 
2.35.3



From xen-devel-bounces@lists.xenproject.org Thu Jan 04 09:01:19 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 04 Jan 2024 09:01:19 +0000
Received: from list by lists.xenproject.org with outflank-mailman.661124.1030841 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLJbL-0008SB-0I; Thu, 04 Jan 2024 09:01:19 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 661124.1030841; Thu, 04 Jan 2024 09:01:18 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLJbK-0008Ry-Sm; Thu, 04 Jan 2024 09:01:18 +0000
Received: by outflank-mailman (input) for mailman id 661124;
 Thu, 04 Jan 2024 09:01:17 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=4u2H=IO=suse.com=jgross@srs-se1.protection.inumbo.net>)
 id 1rLJbJ-00085z-5T
 for xen-devel@lists.xenproject.org; Thu, 04 Jan 2024 09:01:17 +0000
Received: from smtp-out1.suse.de (smtp-out1.suse.de
 [2a07:de40:b251:101:10:150:64:1])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id d167242d-aadf-11ee-98ef-6d05b1d4d9a1;
 Thu, 04 Jan 2024 10:01:16 +0100 (CET)
Received: from imap1.dmz-prg2.suse.org (imap1.dmz-prg2.suse.org
 [IPv6:2a07:de40:b281:104:10:150:64:97])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
 (No client certificate requested)
 by smtp-out1.suse.de (Postfix) with ESMTPS id 2D5F921EE1;
 Thu,  4 Jan 2024 09:01:16 +0000 (UTC)
Received: from imap1.dmz-prg2.suse.org (localhost [127.0.0.1])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
 (No client certificate requested)
 by imap1.dmz-prg2.suse.org (Postfix) with ESMTPS id 03AEA13722;
 Thu,  4 Jan 2024 09:01:15 +0000 (UTC)
Received: from dovecot-director2.suse.de ([2a07:de40:b281:106:10:150:64:167])
 by imap1.dmz-prg2.suse.org with ESMTPSA id +7k+O9tzlmWSWAAAD6G6ig
 (envelope-from <jgross@suse.com>); Thu, 04 Jan 2024 09:01:15 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: d167242d-aadf-11ee-98ef-6d05b1d4d9a1
From: Juergen Gross <jgross@suse.com>
To: xen-devel@lists.xenproject.org
Cc: Juergen Gross <jgross@suse.com>,
	Wei Liu <wl@xen.org>,
	Anthony PERARD <anthony.perard@citrix.com>,
	Jason Andryuk <jandryuk@gmail.com>
Subject: [PATCH v3 03/33] tools: add a new xen logging daemon
Date: Thu,  4 Jan 2024 10:00:25 +0100
Message-Id: <20240104090055.27323-4-jgross@suse.com>
X-Mailer: git-send-email 2.35.3
In-Reply-To: <20240104090055.27323-1-jgross@suse.com>
References: <20240104090055.27323-1-jgross@suse.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Spam-Level: 
X-Rspamd-Server: rspamd1.dmz-prg2.suse.org
X-Spam-Level: 
X-Spam-Flag: NO
X-Spamd-Result: default: False [-4.00 / 50.00];
	 REPLY(-4.00)[]
Authentication-Results: smtp-out1.suse.de;
	none
X-Spam-Score: -4.00
X-Rspamd-Queue-Id: 2D5F921EE1

Add "xen-9pfsd", a new logging daemon meant to support infrastructure
domains (e.g. xenstore-stubdom) to access files in dom0.

For now only add the code needed for starting the daemon and
registering it with Xenstore via a new "libxl/xen-9pfs/state" node by
writing the "running" state to it.

Signed-off-by: Juergen Gross <jgross@suse.com>
Reviewed-by: Jason Andryuk <jandryuk@gmail.com>
---
V2:
- rename from xenlogd to xen-9pfsd (Andrew Cooper)
- use a backend domain local Xenstore node (Jason Andryuk)
- use "volatile" for stop_me (Andrew Cooper)
V3:
- fix SPDX Identifier (Andrew Cooper)
---
 tools/Makefile              |   1 +
 tools/xen-9pfsd/.gitignore  |   1 +
 tools/xen-9pfsd/Makefile    |  38 ++++++++++
 tools/xen-9pfsd/xen-9pfsd.c | 145 ++++++++++++++++++++++++++++++++++++
 4 files changed, 185 insertions(+)
 create mode 100644 tools/xen-9pfsd/.gitignore
 create mode 100644 tools/xen-9pfsd/Makefile
 create mode 100644 tools/xen-9pfsd/xen-9pfsd.c

diff --git a/tools/Makefile b/tools/Makefile
index 3a510663a0..f8faa3a902 100644
--- a/tools/Makefile
+++ b/tools/Makefile
@@ -32,6 +32,7 @@ SUBDIRS-y += xenpmd
 SUBDIRS-$(CONFIG_GOLANG) += golang
 SUBDIRS-y += xl
 SUBDIRS-y += helpers
+SUBDIRS-y += xen-9pfsd
 SUBDIRS-$(CONFIG_X86) += xenpaging
 SUBDIRS-$(CONFIG_X86) += debugger
 SUBDIRS-$(CONFIG_TESTS) += tests
diff --git a/tools/xen-9pfsd/.gitignore b/tools/xen-9pfsd/.gitignore
new file mode 100644
index 0000000000..d0c2d223ef
--- /dev/null
+++ b/tools/xen-9pfsd/.gitignore
@@ -0,0 +1 @@
+/xen-9pfsd
diff --git a/tools/xen-9pfsd/Makefile b/tools/xen-9pfsd/Makefile
new file mode 100644
index 0000000000..4e35202f08
--- /dev/null
+++ b/tools/xen-9pfsd/Makefile
@@ -0,0 +1,38 @@
+#
+# tools/xen-9pfsd/Makefile
+#
+
+XEN_ROOT = $(CURDIR)/../..
+include $(XEN_ROOT)/tools/Rules.mk
+
+CFLAGS += $(PTHREAD_CFLAGS)
+LDFLAGS += $(PTHREAD_LDFLAGS)
+
+TARGETS := xen-9pfsd
+
+XEN-9PFSD_OBJS = xen-9pfsd.o
+$(XEN-9PFSD_OBJS): CFLAGS += $(CFLAGS_libxenstore)
+$(XEN-9PFSD_OBJS): CFLAGS += $(CFLAGS_libxenevtchn)
+$(XEN-9PFSD_OBJS): CFLAGS += $(CFLAGS_libxengnttab)
+xen-9pfsd: LDLIBS += $(call xenlibs-ldlibs,store evtchn gnttab)
+
+.PHONY: all
+all: $(TARGETS)
+
+xen-9pfsd: $(XEN-9PFSD_OBJS)
+	$(CC) $(LDFLAGS) -o $@ $(XEN-9PFSD_OBJS) $(LDLIBS) $(APPEND_LDFLAGS)
+
+.PHONY: install
+install: all
+	$(INSTALL_DIR) $(DESTDIR)$(LIBEXEC_BIN)
+	for i in $(TARGETS); do $(INSTALL_PROG) $$i $(DESTDIR)$(LIBEXEC_BIN); done
+
+.PHONY: uninstall
+uninstall:
+	for i in $(TARGETS); do rm -f $(DESTDIR)$(LIBEXEC_BIN)/$$i; done
+
+.PHONY: clean
+clean:
+	$(RM) *.o $(TARGETS) $(DEPS_RM)
+
+distclean: clean
diff --git a/tools/xen-9pfsd/xen-9pfsd.c b/tools/xen-9pfsd/xen-9pfsd.c
new file mode 100644
index 0000000000..22cfff0c4e
--- /dev/null
+++ b/tools/xen-9pfsd/xen-9pfsd.c
@@ -0,0 +1,145 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+
+/*
+ * xen-9pfsd - Xen 9pfs daemon
+ *
+ * Copyright (C) 2023 Juergen Gross <jgross@suse.com>
+ *
+ * Daemon to enable guests to access a directory of the dom0 file system.
+ * Access is made via the 9pfs protocol (xen-9pfsd acts as a PV 9pfs backend).
+ *
+ * Usage: xen-9pfsd
+ *
+ * xen-9pfsd does NOT support writing any links (neither soft links nor hard
+ * links), and it is accepting only canonicalized file paths in order to
+ * avoid the possibility to "escape" from the guest specific directory.
+ *
+ * The backend device string is "xen_9pfs", the tag used for mounting the
+ * 9pfs device is "Xen".
+ *
+ * As an additional security measure the maximum file space used by the guest
+ * can be limited by the backend Xenstore node "max-size" specifying the size
+ * in MBytes. This size includes the size of the root directory of the guest.
+ */
+
+#include <err.h>
+#include <errno.h>
+#include <signal.h>
+#include <stdbool.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <syslog.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <unistd.h>
+#include <xenevtchn.h>
+#include <xengnttab.h>
+#include <xenstore.h>
+
+static volatile bool stop_me;
+static bool daemon_running;
+static struct xs_handle *xs;
+static xengnttab_handle *xg;
+static xenevtchn_handle *xe;
+
+static void handle_stop(int sig)
+{
+    stop_me = true;
+}
+
+static void close_all(void)
+{
+    if ( daemon_running )
+        xs_rm(xs, XBT_NULL, "libxl/xen-9pfs");
+    if ( xe )
+        xenevtchn_close(xe);
+    if ( xg )
+        xengnttab_close(xg);
+    if ( xs )
+        xs_close(xs);
+    closelog();
+}
+
+static void do_err(const char *msg)
+{
+    syslog(LOG_ALERT, "%s, errno = %d", msg, errno);
+    close_all();
+    exit(1);
+}
+
+static void xen_connect(void)
+{
+    xs_transaction_t t;
+    char *val;
+    unsigned int len;
+
+    xs = xs_open(0);
+    if ( xs == NULL )
+        do_err("xs_open() failed");
+
+    xg = xengnttab_open(NULL, 0);
+    if ( xg == NULL )
+        do_err("xengnttab_open() failed");
+
+    xe = xenevtchn_open(NULL, 0);
+    if ( xe == NULL )
+        do_err("xenevtchn_open() failed");
+
+    while ( true )
+    {
+        t = xs_transaction_start(xs);
+        if ( t == XBT_NULL )
+            do_err("xs_transaction_start() failed");
+
+        val = xs_read(xs, t, "libxl/xen-9pfs/state", &len);
+        if ( val )
+        {
+            free(val);
+            xs_transaction_end(xs, t, true);
+            do_err("daemon already running");
+        }
+
+        if ( !xs_write(xs, t, "libxl/xen-9pfs/state", "running",
+                       strlen("running")) )
+        {
+            xs_transaction_end(xs, t, true);
+            do_err("xs_write() failed writing state");
+        }
+
+        if ( xs_transaction_end(xs, t, false) )
+            break;
+        if ( errno != EAGAIN )
+            do_err("xs_transaction_end() failed");
+    }
+
+    daemon_running = true;
+}
+
+int main(int argc, char *argv[])
+{
+    struct sigaction act = { .sa_handler = handle_stop, };
+    int syslog_mask = LOG_MASK(LOG_WARNING) | LOG_MASK(LOG_ERR) |
+                      LOG_MASK(LOG_CRIT) | LOG_MASK(LOG_ALERT) |
+                      LOG_MASK(LOG_EMERG);
+
+    umask(027);
+    if ( getenv("XEN_9PFSD_VERBOSE") )
+        syslog_mask |= LOG_MASK(LOG_NOTICE) | LOG_MASK(LOG_INFO);
+    openlog("xen-9pfsd", LOG_CONS, LOG_DAEMON);
+    setlogmask(syslog_mask);
+
+    sigemptyset(&act.sa_mask);
+    sigaction(SIGHUP, &act, NULL);
+
+    xen_connect();
+
+    while ( !stop_me )
+    {
+        sleep(60);
+    }
+
+    close_all();
+
+    return 0;
+}
-- 
2.35.3



From xen-devel-bounces@lists.xenproject.org Thu Jan 04 09:01:26 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 04 Jan 2024 09:01:26 +0000
Received: from list by lists.xenproject.org with outflank-mailman.661127.1030851 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLJbS-0000RG-8A; Thu, 04 Jan 2024 09:01:26 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 661127.1030851; Thu, 04 Jan 2024 09:01:26 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLJbS-0000R7-4S; Thu, 04 Jan 2024 09:01:26 +0000
Received: by outflank-mailman (input) for mailman id 661127;
 Thu, 04 Jan 2024 09:01:24 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=4u2H=IO=suse.com=jgross@srs-se1.protection.inumbo.net>)
 id 1rLJbQ-0007Zm-AR
 for xen-devel@lists.xenproject.org; Thu, 04 Jan 2024 09:01:24 +0000
Received: from smtp-out1.suse.de (smtp-out1.suse.de [195.135.223.130])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id d4c6e305-aadf-11ee-9b0f-b553b5be7939;
 Thu, 04 Jan 2024 10:01:22 +0100 (CET)
Received: from imap1.dmz-prg2.suse.org (imap1.dmz-prg2.suse.org [10.150.64.97])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
 (No client certificate requested)
 by smtp-out1.suse.de (Postfix) with ESMTPS id AF72221EE1;
 Thu,  4 Jan 2024 09:01:21 +0000 (UTC)
Received: from imap1.dmz-prg2.suse.org (localhost [127.0.0.1])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
 (No client certificate requested)
 by imap1.dmz-prg2.suse.org (Postfix) with ESMTPS id 870B313722;
 Thu,  4 Jan 2024 09:01:21 +0000 (UTC)
Received: from dovecot-director2.suse.de ([2a07:de40:b281:106:10:150:64:167])
 by imap1.dmz-prg2.suse.org with ESMTPSA id rFG4H+FzlmWYWAAAD6G6ig
 (envelope-from <jgross@suse.com>); Thu, 04 Jan 2024 09:01:21 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: d4c6e305-aadf-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1704358881; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:content-type:content-type:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=9l1zFck36AXwEapU2Gj9ECie0Zocm/mcpIzingvfm50=;
	b=oJb1G/Ximy9O2WBkntcRwp4qve9sbCEZkIXToIvqnK6MZXB71gzoybmZn1rEEAdzUFMabL
	utWTYnmc5frDsWl+pHLWudXVojY454lsy3idO2NadM6wkHXX/OJq5GG5Gaa9uf4W/yOYgR
	qkqBa90Tbh2r5S88rnGt73V5UOYSrcA=
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1704358881; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:content-type:content-type:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=9l1zFck36AXwEapU2Gj9ECie0Zocm/mcpIzingvfm50=;
	b=oJb1G/Ximy9O2WBkntcRwp4qve9sbCEZkIXToIvqnK6MZXB71gzoybmZn1rEEAdzUFMabL
	utWTYnmc5frDsWl+pHLWudXVojY454lsy3idO2NadM6wkHXX/OJq5GG5Gaa9uf4W/yOYgR
	qkqBa90Tbh2r5S88rnGt73V5UOYSrcA=
From: Juergen Gross <jgross@suse.com>
To: xen-devel@lists.xenproject.org
Cc: Juergen Gross <jgross@suse.com>,
	Wei Liu <wl@xen.org>,
	Anthony PERARD <anthony.perard@citrix.com>
Subject: [PATCH v3 04/33] tools/xenlogd: connect to frontend
Date: Thu,  4 Jan 2024 10:00:26 +0100
Message-Id: <20240104090055.27323-5-jgross@suse.com>
X-Mailer: git-send-email 2.35.3
In-Reply-To: <20240104090055.27323-1-jgross@suse.com>
References: <20240104090055.27323-1-jgross@suse.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Spam-Level: 
Authentication-Results: smtp-out1.suse.de;
	none
X-Spam-Level: 
X-Spam-Score: -6.58
X-Spamd-Result: default: False [-6.58 / 50.00];
	 ARC_NA(0.00)[];
	 RCVD_VIA_SMTP_AUTH(0.00)[];
	 FROM_HAS_DN(0.00)[];
	 RCPT_COUNT_THREE(0.00)[4];
	 TO_DN_SOME(0.00)[];
	 TO_MATCH_ENVRCPT_ALL(0.00)[];
	 MIME_GOOD(-0.10)[text/plain];
	 REPLY(-4.00)[];
	 NEURAL_HAM_LONG(-0.28)[-0.280];
	 RCVD_COUNT_THREE(0.00)[3];
	 DKIM_SIGNED(0.00)[suse.com:s=susede1];
	 NEURAL_HAM_SHORT(-0.20)[-1.000];
	 MID_CONTAINS_FROM(1.00)[];
	 DBL_BLOCKED_OPENRESOLVER(0.00)[suse.com:email];
	 FUZZY_BLOCKED(0.00)[rspamd.com];
	 FROM_EQ_ENVFROM(0.00)[];
	 MIME_TRACE(0.00)[0:+];
	 RCVD_TLS_ALL(0.00)[];
	 BAYES_HAM(-3.00)[100.00%]
X-Spam-Flag: NO

Add the code for connecting to frontends to xenlogd.

Signed-off-by: Juergen Gross <jgross@suse.com>
---
V2:
- support multiple rings per device (Jason Andryuk)
- don't set .revents initially (Jason Andryuk)
- call poll() with infinite timeout (Jason Andryuk)
- take mutex before calling pthread_cond_signal()
V3:
- fix SPDX indentifier (Andrew Cooper)
- better validation of host path (Jason Andryuk)
- don't hard-code dom0 in backend nodes (Jason Andryuk)
- use bool instead of int for some functions' return types
- open root directory (Jason Andryuk)

Signed-off-by: Juergen Gross <jgross@suse.com>
---
 tools/xen-9pfsd/Makefile    |   2 +-
 tools/xen-9pfsd/io.c        |  45 +++
 tools/xen-9pfsd/xen-9pfsd.c | 653 +++++++++++++++++++++++++++++++++++-
 tools/xen-9pfsd/xen-9pfsd.h |  61 ++++
 4 files changed, 757 insertions(+), 4 deletions(-)
 create mode 100644 tools/xen-9pfsd/io.c
 create mode 100644 tools/xen-9pfsd/xen-9pfsd.h

diff --git a/tools/xen-9pfsd/Makefile b/tools/xen-9pfsd/Makefile
index 4e35202f08..2023b19c62 100644
--- a/tools/xen-9pfsd/Makefile
+++ b/tools/xen-9pfsd/Makefile
@@ -10,7 +10,7 @@ LDFLAGS += $(PTHREAD_LDFLAGS)
 
 TARGETS := xen-9pfsd
 
-XEN-9PFSD_OBJS = xen-9pfsd.o
+XEN-9PFSD_OBJS = xen-9pfsd.o io.o
 $(XEN-9PFSD_OBJS): CFLAGS += $(CFLAGS_libxenstore)
 $(XEN-9PFSD_OBJS): CFLAGS += $(CFLAGS_libxenevtchn)
 $(XEN-9PFSD_OBJS): CFLAGS += $(CFLAGS_libxengnttab)
diff --git a/tools/xen-9pfsd/io.c b/tools/xen-9pfsd/io.c
new file mode 100644
index 0000000000..027e87af4c
--- /dev/null
+++ b/tools/xen-9pfsd/io.c
@@ -0,0 +1,45 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+
+/*
+ * xen-9pfsd - Xen 9pfs daemon
+ *
+ * Copyright (C) 2023 Juergen Gross <jgross@suse.com>
+ *
+ * I/O thread handling.
+ */
+
+#include <stdbool.h>
+#include <string.h>
+#include <syslog.h>
+
+#include "xen-9pfsd.h"
+
+static bool io_work_pending(struct ring *ring)
+{
+    if ( ring->stop_thread )
+        return true;
+    return false;
+}
+
+void *io_thread(void *arg)
+{
+    struct ring *ring = arg;
+
+    while ( !ring->stop_thread )
+    {
+        pthread_mutex_lock(&ring->mutex);
+        if ( !io_work_pending(ring) )
+        {
+            if ( xenevtchn_unmask(xe, ring->evtchn) < 0 )
+                syslog(LOG_WARNING, "xenevtchn_unmask() failed");
+            pthread_cond_wait(&ring->cond, &ring->mutex);
+        }
+        pthread_mutex_unlock(&ring->mutex);
+
+        /* TODO: I/O handling. */
+    }
+
+    ring->thread_active = false;
+
+    return NULL;
+}
diff --git a/tools/xen-9pfsd/xen-9pfsd.c b/tools/xen-9pfsd/xen-9pfsd.c
index 22cfff0c4e..9ce9ae559b 100644
--- a/tools/xen-9pfsd/xen-9pfsd.c
+++ b/tools/xen-9pfsd/xen-9pfsd.c
@@ -24,34 +24,632 @@
 
 #include <err.h>
 #include <errno.h>
+#include <fcntl.h>
+#include <poll.h>
+#include <pthread.h>
 #include <signal.h>
 #include <stdbool.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
 #include <syslog.h>
+#include <sys/mman.h>
 #include <sys/types.h>
 #include <sys/stat.h>
 #include <unistd.h>
-#include <xenevtchn.h>
 #include <xengnttab.h>
 #include <xenstore.h>
 
+#include "xen-9pfsd.h"
+
+/*
+ * List of currently known devices.
+ * The list itself is modified only in the main thread. When a device is being
+ * removed its memory needs to be freed after the I/O thread (if existing)
+ * has stopped.
+ */
+static XEN_TAILQ_HEAD(devhead, device) devs = XEN_TAILQ_HEAD_INITIALIZER(devs);
+
+struct path {
+    char path[100];
+};
+
 static volatile bool stop_me;
 static bool daemon_running;
 static struct xs_handle *xs;
 static xengnttab_handle *xg;
-static xenevtchn_handle *xe;
+static unsigned int now;
+
+xenevtchn_handle *xe;
 
 static void handle_stop(int sig)
 {
     stop_me = true;
 }
 
+static int check_host_path(device *device)
+{
+    struct stat statbuf;
+    char *path, *p;
+    int ret = 1;
+
+    if ( !device->host_path )
+        return 1;
+
+    /* Path must be absolute. */
+    if ( device->host_path[0] != '/' )
+        return 1;
+
+    /* No double "/". */
+    if ( strstr(device->host_path, "//") )
+        return 1;
+
+    /* No trailing "/" (includes refusing to share "/"). */
+    if ( device->host_path[strlen(device->host_path) - 1] == '/' )
+        return 1;
+
+    path = strdup(device->host_path);
+    if ( !path )
+    {
+        syslog(LOG_CRIT, "memory allocation failure!");
+        return 1;
+    }
+
+    for ( p = path; p; )
+    {
+        p = strchr(p + 1, '/');
+        if ( p )
+            *p = 0;
+        if ( !stat(path, &statbuf) )
+        {
+            if ( !(statbuf.st_mode & S_IFDIR) )
+                break;
+            if ( !p )
+            {
+                ret = 0;
+                break;
+            }
+            *p = '/';
+            continue;
+        }
+        if ( mkdir(path, 0777) )
+            break;
+        if ( p )
+            *p = '/';
+    }
+
+    free(path);
+    return ret;
+}
+
+static void construct_frontend_path(device *device, const char *node,
+                                    struct path *p)
+{
+    snprintf(p->path, sizeof(p->path), "/local/domain/%u/device/9pfs/%u/%s",
+             device->domid, device->devid, node);
+}
+
+static void construct_backend_path(device *device, const char *node,
+                                   struct path *p)
+{
+    snprintf(p->path, sizeof(p->path), "backend/xen_9pfs/%u/%u/%s",
+             device->domid, device->devid, node);
+}
+
+static char *read_backend_node(device *device, const char *node)
+{
+    struct path p;
+    char *val;
+    unsigned int len;
+
+    construct_backend_path(device, node, &p);
+    val = xs_read(xs, XBT_NULL, p.path, &len);
+
+    return val;
+}
+
+static unsigned int uint_from_string(char *string, unsigned int def)
+{
+    unsigned long val;
+    char *end;
+
+    if ( !string )
+        return def;
+
+    val = strtoul(string, &end, 10);
+    if ( *end || val > UINT_MAX )
+        val = def;
+    free(string);
+
+    return val;
+}
+
+static unsigned int read_backend_node_uint(device *device, const char *node,
+                                           unsigned int def)
+{
+    return uint_from_string(read_backend_node(device, node), def);
+}
+
+static unsigned int read_frontend_node_uint(device *device, const char *node,
+                                            unsigned int def)
+{
+    struct path p;
+    unsigned int len;
+
+    construct_frontend_path(device, node, &p);
+
+    return uint_from_string(xs_read(xs, XBT_NULL, p.path, &len), def);
+}
+
+static bool write_backend_node(device *device, const char *node,
+                               const char *val)
+{
+    struct path p;
+    unsigned int num_perms;
+    struct xs_permissions *old_perms;
+    struct xs_permissions perms[2] = {
+        { .id = 0, .perms = XS_PERM_NONE },
+        { .id = device->domid, .perms = XS_PERM_READ }
+    };
+
+    construct_backend_path(device, node, &p);
+    if ( !xs_write(xs, XBT_NULL, p.path, val, strlen(val)) )
+    {
+        syslog(LOG_ERR, "error writing bacḱend node \"%s\" for device %u/%u",
+               node, device->domid, device->devid);
+        return false;
+    }
+
+    old_perms = xs_get_permissions(xs, XBT_NULL, p.path, &num_perms);
+    if ( !old_perms )
+    {
+        syslog(LOG_ERR, "error getting permissions for \"%s\"", p.path);
+        return false;
+    }
+
+    perms[0] = old_perms[0];
+    free(old_perms);
+    if ( !xs_set_permissions(xs, XBT_NULL, p.path, perms, 2) )
+    {
+        syslog(LOG_ERR, "error setting permissions for \"%s\"", p.path);
+        return false;
+    }
+
+    return true;
+}
+
+static bool write_backend_node_uint(device *device, const char *node,
+                                   unsigned int val)
+{
+    char str[12];
+
+    snprintf(str, sizeof(str), "%u", val);
+
+    return write_backend_node(device, node, str);
+}
+
+static bool write_backend_state(device *device, enum xenbus_state state)
+{
+    struct path p;
+    char val[2];
+
+    snprintf(val, sizeof(val), "%u", state);
+    construct_backend_path(device, "state", &p);
+    if ( !xs_write(xs, XBT_NULL, p.path, val, 1) )
+    {
+        syslog(LOG_ERR, "error writing backend state %u for device %u/%u",
+               state, device->domid, device->devid);
+        return false;
+    }
+
+    device->backend_state = state;
+
+    return true;
+}
+
+static device *find_device(unsigned int domid, unsigned int devid)
+{
+    device *device;
+
+    XEN_TAILQ_FOREACH( device, &devs, list )
+    {
+        if ( domid == device->domid && devid == device->devid )
+            return device;
+    }
+
+    return NULL;
+}
+
+static void free_device(device *device)
+{
+    char token[20];
+    struct path p;
+
+    construct_frontend_path(device, "state", &p);
+    snprintf(token, sizeof(token), "%u/%u", device->domid, device->devid);
+    xs_unwatch(xs, p.path, token);
+
+    if ( device->root_fd >= 0 )
+        close(device->root_fd);
+
+    free(device->host_path);
+    free(device);
+}
+
+static device *new_device(unsigned int domid, unsigned int devid)
+{
+    device *device;
+    char token[20];
+    struct path p;
+    char *val;
+
+    device = calloc(1, sizeof(*device));
+    if ( !device )
+    {
+        syslog(LOG_CRIT, "Got no memory for new device %u/%u", domid, devid);
+        return NULL;
+    }
+
+    device->domid = domid;
+    device->devid = devid;
+    device->root_fd = -1;
+
+    construct_frontend_path(device, "state", &p);
+    snprintf(token, sizeof(token), "%u/%u", domid, devid);
+    if ( !xs_watch(xs, p.path, token) )
+    {
+        syslog(LOG_ERR, "Setting up watch for device %u/%u failed",
+               domid, devid);
+        free(device);
+        return NULL;
+    }
+
+    val = read_backend_node(device, "security_model");
+    if ( !val || strcmp(val, "none") )
+    {
+        syslog(LOG_ERR, "Security model \"%s\" for device %u/%u invalid.",
+               val, domid, devid);
+        free(val);
+        goto err;
+    }
+    free(val);
+
+    device->max_space = read_backend_node_uint(device, "max-space", 0);
+    device->max_files = read_backend_node_uint(device, "max-files", 0);
+    device->max_open_files =
+        read_backend_node_uint(device, "max-open-files", 0)
+        ?: MAX_OPEN_FILES_DEFAULT;
+    device->auto_delete = read_backend_node_uint(device, "auto-delete", 0);
+
+    device->host_path = read_backend_node(device, "path");
+    if ( check_host_path(device) )
+    {
+        syslog(LOG_ERR, "Host path \"%s\" for device %u/%u invalid.",
+               device->host_path, domid, devid);
+        goto err;
+    }
+    device->root_fd = open(device->host_path, O_RDONLY | O_DIRECTORY);
+    if ( device->root_fd < 0 )
+        goto err;
+
+    if ( !write_backend_node(device, "versions", "1") )
+        goto err;
+    if ( !write_backend_node_uint(device, "max-rings", MAX_RINGS) )
+        goto err;
+    if ( !write_backend_node_uint(device, "max-ring-page-order",
+                                 MAX_RING_ORDER) )
+        goto err;
+
+    if ( !write_backend_state(device, XenbusStateInitWait) )
+        goto err;
+
+    XEN_TAILQ_INSERT_TAIL(&devs, device, list);
+    syslog(LOG_INFO, "New device %u/%u added", domid, devid);
+
+    return device;
+
+ err:
+    free_device(device);
+    return NULL;
+}
+
+static void disconnect_ring(struct ring *ring)
+{
+    if ( !ring )
+        return;
+
+    if ( ring->thread_active )
+    {
+        ring->stop_thread = true;
+        pthread_cond_signal(&ring->cond);
+        pthread_join(ring->thread, NULL);
+        ring->stop_thread = false;
+    }
+
+    if ( ring->data.in )
+    {
+        xengnttab_unmap(xg, ring->data.in, 1 << ring->ring_order);
+        ring->data.in = NULL;
+    }
+    if ( ring->intf )
+    {
+        xengnttab_unmap(xg, ring->intf, 1 );
+        ring->intf = NULL;
+    }
+
+    if ( ring->evtchn )
+    {
+        xenevtchn_unbind(xe, ring->evtchn);
+        ring->evtchn = 0;
+    }
+
+    pthread_mutex_destroy(&ring->mutex);
+    pthread_cond_destroy(&ring->cond);
+}
+
+static void disconnect_guest(device *device)
+{
+    unsigned int ring_idx;
+
+    for ( ring_idx = 0; ring_idx < device->num_rings; ring_idx++ )
+    {
+        disconnect_ring(device->ring[ring_idx]);
+        free(device->ring[ring_idx]);
+        device->ring[ring_idx] = NULL;
+    }
+
+    device->num_rings = 0;
+}
+
+static void close_device(device *device, enum xenbus_state state)
+{
+    disconnect_guest(device);
+    write_backend_state(device, state);
+}
+
+static void connect_err(device *device, const char *msg)
+{
+    syslog(LOG_WARNING, "%s", msg);
+    close_device(device, XenbusStateClosed);
+}
+
+static void connect_device(device *device)
+{
+    unsigned int val;
+    unsigned int ring_idx;
+    char node[20];
+    struct ring *ring;
+    xenevtchn_port_or_error_t evtchn;
+
+    val = read_frontend_node_uint(device, "version", 0);
+    if ( val != 1 )
+        return connect_err(device, "frontend specifies illegal version");
+    device->num_rings = read_frontend_node_uint(device, "num-rings", 0);
+    if ( device->num_rings < 1 || device->num_rings > MAX_RINGS )
+        return connect_err(device, "frontend specifies illegal ring number");
+
+    for ( ring_idx = 0; ring_idx < device->num_rings; ring_idx++ )
+    {
+        ring = calloc(1, sizeof(*ring));
+        if ( !ring )
+            return connect_err(device, "could not allocate ring memory");
+        device->ring[ring_idx] = ring;
+        ring->device = device;
+        pthread_cond_init(&ring->cond, NULL);
+        pthread_mutex_init(&ring->mutex, NULL);
+
+        snprintf(node, sizeof(node), "event-channel-%u", ring_idx);
+        val = read_frontend_node_uint(device, node, 0);
+        if ( val == 0 )
+            return connect_err(device, "frontend specifies illegal evtchn");
+        evtchn = xenevtchn_bind_interdomain(xe, device->domid, val);
+        if ( evtchn < 0 )
+            return connect_err(device, "could not bind to event channel");
+        ring->evtchn = evtchn;
+
+        snprintf(node, sizeof(node), "ring-ref%u", ring_idx);
+        val = read_frontend_node_uint(device, node, 0);
+        if ( val == 0 )
+            return connect_err(device,
+                               "frontend specifies illegal grant for ring");
+        ring->intf = xengnttab_map_grant_ref(xg, device->domid, val,
+                                             PROT_READ | PROT_WRITE);
+        if ( !ring->intf )
+            return connect_err(device, "could not map interface page");
+        ring->ring_order = ring->intf->ring_order;
+        if ( ring->ring_order > MAX_RING_ORDER || ring->ring_order < 1 )
+            return connect_err(device, "frontend specifies illegal ring order");
+        ring->ring_size = XEN_FLEX_RING_SIZE(ring->ring_order);
+        ring->data.in = xengnttab_map_domain_grant_refs(xg,
+                                                        1 << ring->ring_order,
+                                                        device->domid,
+                                                        ring->intf->ref,
+                                                        PROT_READ | PROT_WRITE);
+        if ( !ring->data.in )
+            return connect_err(device, "could not map ring pages");
+        ring->data.out = ring->data.in + ring->ring_size;
+
+        if ( pthread_create(&ring->thread, NULL, io_thread, ring) )
+            return connect_err(device, "could not start I/O thread");
+        ring->thread_active = true;
+    }
+
+    write_backend_state(device, XenbusStateConnected);
+}
+
+static void remove_device(device *device)
+{
+    XEN_TAILQ_REMOVE(&devs, device, list);
+
+    disconnect_guest(device);
+    free_device(device);
+}
+
+static void remove_all_devices(void)
+{
+    device *device, *tmp;
+
+    XEN_TAILQ_FOREACH_SAFE( device, &devs, list, tmp )
+        remove_device(device);
+}
+
+static void frontend_changed(device *device)
+{
+    struct path p;
+    char *state, *end;
+    unsigned int len;
+    unsigned long new_state;
+
+    construct_frontend_path(device, "state", &p);
+    state = xs_read(xs, XBT_NULL, p.path, &len);
+    if ( !state )
+    {
+        close_device(device, XenbusStateClosed);
+        return;
+    }
+
+    new_state = strtoul(state, &end, 10);
+    if ( *end || new_state > XenbusStateReconfigured )
+    {
+        syslog(LOG_WARNING, "unknown state \"%s\" seen for device %u/%u", state,
+               device->domid, device->devid);
+        new_state = XenbusStateUnknown;
+    }
+    free(state);
+
+    if ( new_state == device->frontend_state )
+        return;
+
+    switch ( new_state )
+    {
+    case XenbusStateInitialising:
+        break;
+
+    case XenbusStateInitialised:
+        connect_device(device);
+        break;
+
+    case XenbusStateConnected:
+        break;
+
+    case XenbusStateClosing:
+        close_device(device, XenbusStateClosing);
+        break;
+
+    case XenbusStateClosed:
+        close_device(device, XenbusStateClosed);
+        break;
+
+    default:
+        syslog(LOG_WARNING, "not handled frontend state %lu for device %u/%u",
+               new_state, device->domid, device->devid);
+        break;
+    }
+
+    device->frontend_state = new_state;
+}
+
+static void check_device(unsigned int domid, unsigned int devid)
+{
+    device *device;
+
+    device = find_device(domid, devid);
+    if ( !device )
+    {
+        device = new_device(domid, devid);
+        if ( !device )
+            return;
+    }
+
+    device->last_seen = now;
+}
+
+static void scan_backend(void)
+{
+    char **doms;
+    unsigned int n_doms, dom;
+    char **devices;
+    unsigned int n_devs, dev;
+    char dom_path[24];
+    unsigned long domid, devid;
+    char *end;
+    device *device, *tmp;
+
+    now++;
+
+    doms = xs_directory(xs, XBT_NULL, "backend/xen_9pfs", &n_doms);
+    if ( doms == NULL )
+        return;
+
+    for ( dom = 0; dom < n_doms; dom++ )
+    {
+        errno = 0;
+        domid = strtoul(doms[dom], &end, 10);
+        if ( errno || *end || domid >= DOMID_FIRST_RESERVED )
+            continue;
+
+        snprintf(dom_path, sizeof(dom_path), "backend/xen_9pfs/%lu", domid);
+        devices = xs_directory(xs, XBT_NULL, dom_path, &n_devs);
+
+        for ( dev = 0; dev < n_devs; dev++ )
+        {
+            errno = 0;
+            devid = strtoul(devices[dev], &end, 10);
+            if ( errno || *end || devid > UINT_MAX )
+                continue;
+
+            check_device(domid, devid);
+        }
+
+        free(devices);
+    }
+
+    free(doms);
+
+    XEN_TAILQ_FOREACH_SAFE( device, &devs, list, tmp )
+    {
+        if ( device->last_seen != now )
+            remove_device(device);
+    }
+}
+
+static void handle_watch(char *path, char *token)
+{
+    unsigned int domid, devid;
+    device *device;
+
+    if ( !strcmp(token, "main") )
+    {
+        scan_backend();
+        return;
+    }
+
+    if ( sscanf(token, "%u/%u", &domid, &devid) != 2 )
+    {
+        syslog(LOG_WARNING, "unknown watch event %s %s", path, token);
+        return;
+    }
+
+    device = find_device(domid, devid);
+    if ( !device )
+    {
+        syslog(LOG_WARNING, "watch event for unknown device %u/%u",
+               domid, devid);
+        return;
+    }
+
+    frontend_changed(device);
+}
+
 static void close_all(void)
 {
     if ( daemon_running )
+    {
         xs_rm(xs, XBT_NULL, "libxl/xen-9pfs");
+        xs_unwatch(xs, "backend/xen_9pfs", "main");
+
+        remove_all_devices();
+    }
     if ( xe )
         xenevtchn_close(xe);
     if ( xg )
@@ -68,6 +666,33 @@ static void do_err(const char *msg)
     exit(1);
 }
 
+static void handle_event(void)
+{
+    xenevtchn_port_or_error_t evtchn;
+    device *device;
+    struct ring *ring;
+    unsigned int ring_idx;
+
+    evtchn = xenevtchn_pending(xe);
+    if ( evtchn < 0 )
+        do_err("xenevtchn_pending() failed");
+
+    XEN_TAILQ_FOREACH( device, &devs, list )
+    {
+        for ( ring_idx = 0; ring_idx < device->num_rings; ring_idx++ )
+        {
+            ring = device->ring[ring_idx];
+            if ( ring && ring->evtchn == evtchn )
+            {
+                pthread_mutex_lock(&ring->mutex);
+                pthread_cond_signal(&ring->cond);
+                pthread_mutex_unlock(&ring->mutex);
+                return;
+            }
+        }
+    }
+}
+
 static void xen_connect(void)
 {
     xs_transaction_t t;
@@ -122,6 +747,11 @@ int main(int argc, char *argv[])
     int syslog_mask = LOG_MASK(LOG_WARNING) | LOG_MASK(LOG_ERR) |
                       LOG_MASK(LOG_CRIT) | LOG_MASK(LOG_ALERT) |
                       LOG_MASK(LOG_EMERG);
+    char **watch;
+    struct pollfd p[2] = {
+        { .events = POLLIN },
+        { .events = POLLIN }
+    };
 
     umask(027);
     if ( getenv("XEN_9PFSD_VERBOSE") )
@@ -134,9 +764,26 @@ int main(int argc, char *argv[])
 
     xen_connect();
 
+    if ( !xs_watch(xs, "backend/xen_9pfs", "main") )
+        do_err("xs_watch() in main thread failed");
+    p[0].fd = xs_fileno(xs);
+    p[1].fd = xenevtchn_fd(xe);
+
+    scan_backend();
+
     while ( !stop_me )
     {
-        sleep(60);
+        while ( (p[0].revents & POLLIN) &&
+                (watch = xs_check_watch(xs)) != NULL )
+        {
+            handle_watch(watch[XS_WATCH_PATH], watch[XS_WATCH_TOKEN]);
+            free(watch);
+        }
+
+        if ( p[1].revents & POLLIN )
+            handle_event();
+
+        poll(p, 2, -1);
     }
 
     close_all();
diff --git a/tools/xen-9pfsd/xen-9pfsd.h b/tools/xen-9pfsd/xen-9pfsd.h
new file mode 100644
index 0000000000..ff3562164a
--- /dev/null
+++ b/tools/xen-9pfsd/xen-9pfsd.h
@@ -0,0 +1,61 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+
+#ifndef XEN_9PFSD_H
+#define XEN_9PFSD_H
+
+#include <pthread.h>
+#include <stdbool.h>
+#include <xenevtchn.h>
+#include <xen_list.h>
+#include <xen/xen.h>
+#include <xen/io/xenbus.h>
+#include <xen/io/9pfs.h>
+
+#define MAX_RINGS                4
+#define MAX_RING_ORDER           9
+#define MAX_OPEN_FILES_DEFAULT   5
+
+typedef struct device device;
+
+struct ring {
+    device *device;
+    pthread_t thread;
+    bool thread_active;
+    bool stop_thread;
+    pthread_cond_t cond;
+    pthread_mutex_t mutex;
+
+    evtchn_port_t evtchn;
+    struct xen_9pfs_data_intf *intf;
+    unsigned int ring_order;
+    RING_IDX ring_size;
+    struct xen_9pfs_data data;
+};
+
+struct device {
+    /* Admin data. */
+    XEN_TAILQ_ENTRY(device) list;
+    unsigned int last_seen;    /* Set in scan_backend(). */
+    unsigned int domid;
+    unsigned int devid;
+
+    /* Tool side configuration data. */
+    char *host_path;
+    unsigned int max_space;
+    unsigned int max_files;
+    unsigned int max_open_files;
+    bool auto_delete;
+
+    /* Connection data. */
+    enum xenbus_state backend_state;
+    enum xenbus_state frontend_state;
+    unsigned int num_rings;
+    struct ring *ring[MAX_RINGS];
+    int root_fd;
+};
+
+extern xenevtchn_handle *xe;
+
+void *io_thread(void *arg);
+
+#endif /* XEN_9PFSD_H */
-- 
2.35.3



From xen-devel-bounces@lists.xenproject.org Thu Jan 04 09:01:29 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 04 Jan 2024 09:01:29 +0000
Received: from list by lists.xenproject.org with outflank-mailman.661131.1030861 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLJbV-0000ni-Nb; Thu, 04 Jan 2024 09:01:29 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 661131.1030861; Thu, 04 Jan 2024 09:01:29 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLJbV-0000nR-Js; Thu, 04 Jan 2024 09:01:29 +0000
Received: by outflank-mailman (input) for mailman id 661131;
 Thu, 04 Jan 2024 09:01:28 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=4u2H=IO=suse.com=jgross@srs-se1.protection.inumbo.net>)
 id 1rLJbU-00085z-9Y
 for xen-devel@lists.xenproject.org; Thu, 04 Jan 2024 09:01:28 +0000
Received: from smtp-out2.suse.de (smtp-out2.suse.de [195.135.223.131])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id d7fcfc33-aadf-11ee-98ef-6d05b1d4d9a1;
 Thu, 04 Jan 2024 10:01:27 +0100 (CET)
Received: from imap1.dmz-prg2.suse.org (imap1.dmz-prg2.suse.org
 [IPv6:2a07:de40:b281:104:10:150:64:97])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
 (No client certificate requested)
 by smtp-out2.suse.de (Postfix) with ESMTPS id 39A491F7F8;
 Thu,  4 Jan 2024 09:01:27 +0000 (UTC)
Received: from imap1.dmz-prg2.suse.org (localhost [127.0.0.1])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
 (No client certificate requested)
 by imap1.dmz-prg2.suse.org (Postfix) with ESMTPS id 0E77913722;
 Thu,  4 Jan 2024 09:01:27 +0000 (UTC)
Received: from dovecot-director2.suse.de ([2a07:de40:b281:106:10:150:64:167])
 by imap1.dmz-prg2.suse.org with ESMTPSA id Yo1HAudzlmWeWAAAD6G6ig
 (envelope-from <jgross@suse.com>); Thu, 04 Jan 2024 09:01:27 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: d7fcfc33-aadf-11ee-98ef-6d05b1d4d9a1
From: Juergen Gross <jgross@suse.com>
To: xen-devel@lists.xenproject.org
Cc: Juergen Gross <jgross@suse.com>,
	Wei Liu <wl@xen.org>,
	Anthony PERARD <anthony.perard@citrix.com>,
	Jason Andryuk <jandryuk@gmail.com>
Subject: [PATCH v3 05/33] tools/xenlogd: add transport layer
Date: Thu,  4 Jan 2024 10:00:27 +0100
Message-Id: <20240104090055.27323-6-jgross@suse.com>
X-Mailer: git-send-email 2.35.3
In-Reply-To: <20240104090055.27323-1-jgross@suse.com>
References: <20240104090055.27323-1-jgross@suse.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Spam-Level: 
X-Spam-Level: 
Authentication-Results: smtp-out2.suse.de;
	none
X-Rspamd-Server: rspamd2.dmz-prg2.suse.org
X-Spamd-Result: default: False [-4.00 / 50.00];
	 REPLY(-4.00)[]
X-Spam-Score: -4.00
X-Rspamd-Queue-Id: 39A491F7F8
X-Spam-Flag: NO

Add the transport layer of 9pfs. This is basically the infrastructure
to receive requests from the frontend and to send the related answers
via the rings.

Signed-off-by: Juergen Gross <jgross@suse.com>
Reviewed-by: Jason Andryuk <jandryuk@gmail.com>
---
V2:
- rename put_request_bytes() (Jason Andryuk)
- rename get_request_bytes() and put_response_bytes() len parameter
  (Jason Andryuk)
- don't unmask event channel if error indicator is set (Jason Andryuk)
---
 tools/xen-9pfsd/io.c        | 143 +++++++++++++++++++++++++++++++++++-
 tools/xen-9pfsd/xen-9pfsd.h |  16 ++++
 2 files changed, 156 insertions(+), 3 deletions(-)

diff --git a/tools/xen-9pfsd/io.c b/tools/xen-9pfsd/io.c
index 027e87af4c..0b8814a97e 100644
--- a/tools/xen-9pfsd/io.c
+++ b/tools/xen-9pfsd/io.c
@@ -6,39 +6,176 @@
  * Copyright (C) 2023 Juergen Gross <jgross@suse.com>
  *
  * I/O thread handling.
+ *
+ * Only handle one request at a time, pushing out the complete response
+ * before looking for the next request.
  */
 
 #include <stdbool.h>
+#include <stdlib.h>
 #include <string.h>
 #include <syslog.h>
+#include <xenctrl.h>           /* For cpu barriers. */
+#include <xen-tools/common-macros.h>
 
 #include "xen-9pfsd.h"
 
+/*
+ * Note that the ring names "in" and "out" are from the frontend's
+ * perspective, so the "in" ring will be used for responses to the frontend,
+ * while the "out" ring is used for requests from the frontend to the
+ * backend.
+ */
+static unsigned int ring_in_free(struct ring *ring)
+{
+    unsigned int queued;
+
+    queued = xen_9pfs_queued(ring->prod_pvt_in, ring->intf->in_cons,
+                             ring->ring_size);
+    xen_rmb();
+
+    return ring->ring_size - queued;
+}
+
+static unsigned int ring_out_data(struct ring *ring)
+{
+    unsigned int queued;
+
+    queued = xen_9pfs_queued(ring->intf->out_prod, ring->cons_pvt_out,
+                             ring->ring_size);
+    xen_rmb();
+
+    return queued;
+}
+
+static unsigned int get_request_bytes(struct ring *ring, unsigned int off,
+                                      unsigned int total_len)
+{
+    unsigned int size;
+    unsigned int out_data = ring_out_data(ring);
+    RING_IDX prod, cons;
+
+    size = min(total_len - off, out_data);
+    prod = xen_9pfs_mask(ring->intf->out_prod, ring->ring_size);
+    cons = xen_9pfs_mask(ring->cons_pvt_out, ring->ring_size);
+    xen_9pfs_read_packet(ring->buffer + off, ring->data.out, size,
+                         prod, &cons, ring->ring_size);
+
+    xen_rmb();           /* Read data out before setting visible consumer. */
+    ring->cons_pvt_out += size;
+    ring->intf->out_cons = ring->cons_pvt_out;
+
+    /* Signal that more space is available now. */
+    xenevtchn_notify(xe, ring->evtchn);
+
+    return size;
+}
+
+static unsigned int put_response_bytes(struct ring *ring, unsigned int off,
+                                       unsigned int total_len)
+{
+    unsigned int size;
+    unsigned int in_data = ring_in_free(ring);
+    RING_IDX prod, cons;
+
+    size = min(total_len - off, in_data);
+    prod = xen_9pfs_mask(ring->prod_pvt_in, ring->ring_size);
+    cons = xen_9pfs_mask(ring->intf->in_cons, ring->ring_size);
+    xen_9pfs_write_packet(ring->data.in, ring->buffer + off, size,
+                          &prod, cons, ring->ring_size);
+
+    xen_wmb();           /* Write data out before setting visible producer. */
+    ring->prod_pvt_in += size;
+    ring->intf->in_prod = ring->prod_pvt_in;
+
+    return size;
+}
+
 static bool io_work_pending(struct ring *ring)
 {
     if ( ring->stop_thread )
         return true;
-    return false;
+    if ( ring->error )
+        return false;
+    return ring->handle_response ? ring_in_free(ring) : ring_out_data(ring);
 }
 
 void *io_thread(void *arg)
 {
     struct ring *ring = arg;
+    unsigned int count = 0;
+    struct p9_header hdr;
+    bool in_hdr = true;
+
+    ring->max_size = ring->ring_size;
+    ring->buffer = malloc(ring->max_size);
+    if ( !ring->buffer )
+    {
+        syslog(LOG_CRIT, "memory allocation failure!");
+        return NULL;
+    }
 
     while ( !ring->stop_thread )
     {
         pthread_mutex_lock(&ring->mutex);
         if ( !io_work_pending(ring) )
         {
-            if ( xenevtchn_unmask(xe, ring->evtchn) < 0 )
+            if ( !ring->error && xenevtchn_unmask(xe, ring->evtchn) < 0 )
                 syslog(LOG_WARNING, "xenevtchn_unmask() failed");
             pthread_cond_wait(&ring->cond, &ring->mutex);
         }
         pthread_mutex_unlock(&ring->mutex);
 
-        /* TODO: I/O handling. */
+        if ( ring->stop_thread || ring->error )
+            continue;
+
+        if ( !ring->handle_response )
+        {
+            if ( in_hdr )
+            {
+                count += get_request_bytes(ring, count, sizeof(hdr));
+                if ( count != sizeof(hdr) )
+                    continue;
+                hdr = *(struct p9_header *)ring->buffer;
+                if ( hdr.size > ring->max_size || hdr.size < sizeof(hdr) )
+                {
+                    syslog(LOG_ERR, "%u.%u specified illegal request length %u",
+                           ring->device->domid, ring->device->devid, hdr.size);
+                    ring->error = true;
+                    continue;
+                }
+                in_hdr = false;
+            }
+
+            count += get_request_bytes(ring, count, hdr.size);
+            if ( count < hdr.size )
+                continue;
+
+            /* TODO: handle request (will rewrite hdr.size). */
+
+            ring->handle_response = true;
+            hdr.size = ((struct p9_header *)ring->buffer)->size;
+            count = 0;
+        }
+
+        if ( ring->handle_response )
+        {
+            count += put_response_bytes(ring, count, hdr.size);
+
+            if ( count == hdr.size )
+            {
+                /* Signal presence of response. */
+                xenevtchn_notify(xe, ring->evtchn);
+
+                ring->handle_response = false;
+                in_hdr = true;
+                count = 0;
+            }
+        }
     }
 
+    free(ring->buffer);
+
     ring->thread_active = false;
 
     return NULL;
diff --git a/tools/xen-9pfsd/xen-9pfsd.h b/tools/xen-9pfsd/xen-9pfsd.h
index ff3562164a..d587f59a32 100644
--- a/tools/xen-9pfsd/xen-9pfsd.h
+++ b/tools/xen-9pfsd/xen-9pfsd.h
@@ -15,6 +15,12 @@
 #define MAX_RING_ORDER           9
 #define MAX_OPEN_FILES_DEFAULT   5
 
+struct p9_header {
+    uint32_t size;
+    uint8_t cmd;
+    uint16_t tag;
+} __attribute__((packed));
+
 typedef struct device device;
 
 struct ring {
@@ -29,7 +35,17 @@ struct ring {
     struct xen_9pfs_data_intf *intf;
     unsigned int ring_order;
     RING_IDX ring_size;
+
+    /* Transport layer data. */
     struct xen_9pfs_data data;
+    RING_IDX prod_pvt_in;
+    RING_IDX cons_pvt_out;
+
+    /* Request and response handling. */
+    uint32_t max_size;
+    bool error;             /* Protocol error - stop processing. */
+    bool handle_response;   /* Main loop now handling response. */
+    void *buffer;           /* Request/response buffer. */
 };
 
 struct device {
-- 
2.35.3



From xen-devel-bounces@lists.xenproject.org Thu Jan 04 09:01:36 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 04 Jan 2024 09:01:36 +0000
Received: from list by lists.xenproject.org with outflank-mailman.661138.1030870 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLJbb-0001NB-W2; Thu, 04 Jan 2024 09:01:35 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 661138.1030870; Thu, 04 Jan 2024 09:01:35 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLJbb-0001N4-T9; Thu, 04 Jan 2024 09:01:35 +0000
Received: by outflank-mailman (input) for mailman id 661138;
 Thu, 04 Jan 2024 09:01:34 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=4u2H=IO=suse.com=jgross@srs-se1.protection.inumbo.net>)
 id 1rLJba-0007Zm-QO
 for xen-devel@lists.xenproject.org; Thu, 04 Jan 2024 09:01:34 +0000
Received: from smtp-out1.suse.de (smtp-out1.suse.de [195.135.223.130])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id db48d92d-aadf-11ee-9b0f-b553b5be7939;
 Thu, 04 Jan 2024 10:01:33 +0100 (CET)
Received: from imap1.dmz-prg2.suse.org (imap1.dmz-prg2.suse.org
 [IPv6:2a07:de40:b281:104:10:150:64:97])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
 (No client certificate requested)
 by smtp-out1.suse.de (Postfix) with ESMTPS id B409E22044;
 Thu,  4 Jan 2024 09:01:32 +0000 (UTC)
Received: from imap1.dmz-prg2.suse.org (localhost [127.0.0.1])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
 (No client certificate requested)
 by imap1.dmz-prg2.suse.org (Postfix) with ESMTPS id 90CFE13722;
 Thu,  4 Jan 2024 09:01:32 +0000 (UTC)
Received: from dovecot-director2.suse.de ([2a07:de40:b281:106:10:150:64:167])
 by imap1.dmz-prg2.suse.org with ESMTPSA id Dd4fIuxzlmWpWAAAD6G6ig
 (envelope-from <jgross@suse.com>); Thu, 04 Jan 2024 09:01:32 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: db48d92d-aadf-11ee-9b0f-b553b5be7939
From: Juergen Gross <jgross@suse.com>
To: xen-devel@lists.xenproject.org
Cc: Juergen Gross <jgross@suse.com>,
	Wei Liu <wl@xen.org>,
	Anthony PERARD <anthony.perard@citrix.com>
Subject: [PATCH v3 06/33] tools/xenlogd: add 9pfs response generation support
Date: Thu,  4 Jan 2024 10:00:28 +0100
Message-Id: <20240104090055.27323-7-jgross@suse.com>
X-Mailer: git-send-email 2.35.3
In-Reply-To: <20240104090055.27323-1-jgross@suse.com>
References: <20240104090055.27323-1-jgross@suse.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Spam-Level: 
X-Spam-Level: 
Authentication-Results: smtp-out1.suse.de;
	none
X-Rspamd-Server: rspamd2.dmz-prg2.suse.org
X-Spamd-Result: default: False [-4.00 / 50.00];
	 REPLY(-4.00)[]
X-Spam-Score: -4.00
X-Rspamd-Queue-Id: B409E22044
X-Spam-Flag: NO

Add support for generation a 9pfs protocol response via a format based
approach.

Strings are stored in a per device string buffer and they are
referenced via their offset in this buffer. This allows to avoid
having to dynamically allocate memory for each single string.

As a first user of the response handling add a generic p9_error()
function which will be used to return any error to the client.

Add all format parsing variants in order to avoid additional code churn
later when adding the users of those variants. Prepare a special case
for the "read" case already (format character 'D'): in order to avoid
adding another buffer for read data support doing the read I/O directly
into the response buffer.

Signed-off-by: Juergen Gross <jgross@suse.com>
---
V2:
- check parameter size limits (Jason Andryuk)
V3:
- use new unaligned access macros (Jason Andryuk)
---
 tools/xen-9pfsd/io.c        | 199 +++++++++++++++++++++++++++++++++++-
 tools/xen-9pfsd/xen-9pfsd.h |   3 +
 2 files changed, 201 insertions(+), 1 deletion(-)

diff --git a/tools/xen-9pfsd/io.c b/tools/xen-9pfsd/io.c
index 0b8814a97e..476562298b 100644
--- a/tools/xen-9pfsd/io.c
+++ b/tools/xen-9pfsd/io.c
@@ -11,6 +11,7 @@
  * before looking for the next request.
  */
 
+#include <errno.h>
 #include <stdbool.h>
 #include <stdlib.h>
 #include <string.h>
@@ -20,6 +21,16 @@
 
 #include "xen-9pfsd.h"
 
+/* P9 protocol commands (response is either cmd+1 or P9_CMD_ERROR). */
+#define P9_CMD_ERROR      107
+
+struct p9_qid {
+    uint8_t type;
+#define QID_TYPE_DIR      0x80
+    uint32_t version;
+    uint64_t path;
+};
+
 /*
  * Note that the ring names "in" and "out" are from the frontend's
  * perspective, so the "in" ring will be used for responses to the frontend,
@@ -100,6 +111,182 @@ static bool io_work_pending(struct ring *ring)
     return ring->handle_response ? ring_in_free(ring) : ring_out_data(ring);
 }
 
+static void fmt_err(const char *fmt)
+{
+    syslog(LOG_CRIT, "illegal format %s passed to fill_buffer()", fmt);
+    exit(1);
+}
+
+/*
+ * Fill buffer with response data.
+ * fmt is a sequence of format characters. Supported characters are:
+ * a: an array (2 bytes number of elements + the following format as elements)
+ *    The number of elements is passed in the first unsigned int parameter, the
+ *    next parameter is a pointer to an array of elements as denoted by the next
+ *    format character.
+ * b: 2 byte unsigned integer
+ *    The parameter is a pointer to a uint16_t value
+ * D: Data blob (4 byte length + <length> bytes)
+ *    2 parameters are consumed, first an unsigned int for the length, then a
+ *    pointer to the first uint8_t value.
+ *    No array support.
+ * L: 8 byte unsigned integer
+ *    The parameter is a pointer to a uint64_t value
+ * Q: Qid (struct p9_qid)
+ * S: String (2 byte length + <length> characters)
+ *    The length is obtained via strlen() of the parameter, being a pointer
+ *    to the first character of the string
+ * U: 4 byte unsigned integer
+ *    The parameter is a pointer to a uint32_t value
+ */
+static void fill_buffer(struct ring *ring, uint8_t cmd, uint16_t tag,
+                        const char *fmt, ...)
+{
+    struct p9_header *hdr = ring->buffer;
+    void *data = hdr + 1;
+    const char *f;
+    const void *par;
+    const char *str_val;
+    const struct p9_qid *qid;
+    unsigned int len;
+    va_list ap;
+    unsigned int array_sz = 0;
+    unsigned int elem_sz = 0;
+
+    hdr->cmd = cmd;
+    hdr->tag = tag;
+
+    va_start(ap, fmt);
+
+    for ( f = fmt; *f; f++ )
+    {
+        if ( !array_sz )
+            par = va_arg(ap, const void *);
+        else
+        {
+            par += elem_sz;
+            array_sz--;
+        }
+
+        switch ( *f )
+        {
+        case 'a':
+            f++;
+            if ( !*f || array_sz )
+                fmt_err(fmt);
+            array_sz = *(const unsigned int *)par;
+            if ( array_sz > 0xffff )
+            {
+                syslog(LOG_CRIT, "array size %u in fill_buffer()", array_sz);
+                exit(1);
+            }
+            put_unaligned(array_sz, (uint16_t *)data);
+            data += sizeof(uint16_t);
+            par = va_arg(ap, const void *);
+            elem_sz = 0;
+            break;
+
+        case 'u':
+            put_unaligned(*(const uint16_t *)par, (uint16_t *)data);
+            elem_sz = sizeof(uint16_t);
+            data += sizeof(uint16_t);
+            break;
+
+        case 'D':
+            if ( array_sz )
+                fmt_err(fmt);
+            len = *(const unsigned int *)par;
+            put_unaligned(len, (uint32_t *)data);
+            data += sizeof(uint32_t);
+            par = va_arg(ap, const void *);
+            if ( data != par )
+                memcpy(data, par, len);
+            data += len;
+            break;
+
+        case 'L':
+            put_unaligned(*(const uint64_t *)par, (uint64_t *)data);
+            elem_sz = sizeof(uint64_t);
+            data += sizeof(uint64_t);
+            break;
+
+        case 'Q':
+            qid = par;
+            elem_sz = sizeof(*qid);
+            *(uint8_t *)data = qid->type;
+            data += sizeof(uint8_t);
+            put_unaligned(qid->version, (uint32_t *)data);
+            data += sizeof(uint32_t);
+            put_unaligned(qid->path, (uint64_t *)data);
+            data += sizeof(uint64_t);
+            break;
+
+        case 'S':
+            str_val = par;
+            elem_sz = sizeof(str_val);
+            len = strlen(str_val);
+            if ( len > 0xffff )
+            {
+                syslog(LOG_CRIT, "string length %u in fill_buffer()", len);
+                exit(1);
+            }
+            put_unaligned(len, (uint16_t *)data);
+            data += sizeof(uint16_t);
+            memcpy(data, str_val, len);
+            data += len;
+            break;
+
+        case 'U':
+            put_unaligned(*(const uint32_t *)par, (uint32_t *)data);
+            elem_sz = sizeof(uint32_t);
+            data += sizeof(uint32_t);
+            break;
+
+        default:
+            fmt_err(fmt);
+        }
+
+        if ( array_sz )
+            f--;
+    }
+
+    hdr->size = data - ring->buffer;
+}
+
+static unsigned int add_string(struct ring *ring, const char *str,
+                               unsigned int len)
+{
+    char *tmp;
+    unsigned int ret;
+
+    if ( ring->str_used + len + 1 > ring->str_size )
+    {
+        tmp = realloc(ring->str, ring->str_used + len + 1);
+        if ( !tmp )
+            return ~0;
+        ring->str = tmp;
+        ring->str_size = ring->str_used + len + 1;
+    }
+
+    ret = ring->str_used;
+    memcpy(ring->str + ret, str, len);
+    ring->str_used += len;
+    ring->str[ring->str_used++] = 0;
+
+    return ret;
+}
+
+static void p9_error(struct ring *ring, uint16_t tag, uint32_t err)
+{
+    unsigned int erroff;
+
+    strerror_r(err, ring->buffer, ring->ring_size);
+    erroff = add_string(ring, ring->buffer, strlen(ring->buffer));
+    fill_buffer(ring, P9_CMD_ERROR, tag, "SU",
+                erroff != ~0 ? ring->str + erroff : "cannot allocate memory",
+                &err);
+}
+
 void *io_thread(void *arg)
 {
     struct ring *ring = arg;
@@ -151,7 +338,16 @@ void *io_thread(void *arg)
             if ( count < hdr.size )
                 continue;
 
-            /* TODO: handle request (will rewrite hdr.size). */
+            ring->str_used = 0;
+
+            switch ( hdr.cmd )
+            {
+            default:
+                syslog(LOG_DEBUG, "%u.%u sent unhandled command %u\n",
+                       ring->device->domid, ring->device->devid, hdr.cmd);
+                p9_error(ring, hdr.tag, EOPNOTSUPP);
+                break;
+            }
 
             ring->handle_response = true;
             hdr.size = ((struct p9_header *)ring->buffer)->size;
@@ -174,6 +370,7 @@ void *io_thread(void *arg)
         }
     }
 
+    free(ring->str);
     free(ring->buffer);
 
     ring->thread_active = false;
diff --git a/tools/xen-9pfsd/xen-9pfsd.h b/tools/xen-9pfsd/xen-9pfsd.h
index d587f59a32..0cde0d2bb8 100644
--- a/tools/xen-9pfsd/xen-9pfsd.h
+++ b/tools/xen-9pfsd/xen-9pfsd.h
@@ -46,6 +46,9 @@ struct ring {
     bool error;             /* Protocol error - stop processing. */
     bool handle_response;   /* Main loop now handling response. */
     void *buffer;           /* Request/response buffer. */
+    char *str;              /* String work space. */
+    unsigned int str_size;  /* Size of *str. */
+    unsigned int str_used;  /* Currently used size of *str. */
 };
 
 struct device {
-- 
2.35.3



From xen-devel-bounces@lists.xenproject.org Thu Jan 04 09:01:41 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 04 Jan 2024 09:01:41 +0000
Received: from list by lists.xenproject.org with outflank-mailman.661143.1030881 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLJbh-0001s5-9Y; Thu, 04 Jan 2024 09:01:41 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 661143.1030881; Thu, 04 Jan 2024 09:01:41 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLJbh-0001rw-5B; Thu, 04 Jan 2024 09:01:41 +0000
Received: by outflank-mailman (input) for mailman id 661143;
 Thu, 04 Jan 2024 09:01:39 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=4u2H=IO=suse.com=jgross@srs-se1.protection.inumbo.net>)
 id 1rLJbf-00085z-Ok
 for xen-devel@lists.xenproject.org; Thu, 04 Jan 2024 09:01:39 +0000
Received: from smtp-out1.suse.de (smtp-out1.suse.de [195.135.223.130])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id de938e00-aadf-11ee-98ef-6d05b1d4d9a1;
 Thu, 04 Jan 2024 10:01:38 +0100 (CET)
Received: from imap1.dmz-prg2.suse.org (imap1.dmz-prg2.suse.org
 [IPv6:2a07:de40:b281:104:10:150:64:97])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
 (No client certificate requested)
 by smtp-out1.suse.de (Postfix) with ESMTPS id 457AD21F8C;
 Thu,  4 Jan 2024 09:01:38 +0000 (UTC)
Received: from imap1.dmz-prg2.suse.org (localhost [127.0.0.1])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
 (No client certificate requested)
 by imap1.dmz-prg2.suse.org (Postfix) with ESMTPS id 1646213722;
 Thu,  4 Jan 2024 09:01:38 +0000 (UTC)
Received: from dovecot-director2.suse.de ([2a07:de40:b281:106:10:150:64:167])
 by imap1.dmz-prg2.suse.org with ESMTPSA id Df8yBPJzlmWyWAAAD6G6ig
 (envelope-from <jgross@suse.com>); Thu, 04 Jan 2024 09:01:38 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: de938e00-aadf-11ee-98ef-6d05b1d4d9a1
From: Juergen Gross <jgross@suse.com>
To: xen-devel@lists.xenproject.org
Cc: Juergen Gross <jgross@suse.com>,
	Wei Liu <wl@xen.org>,
	Anthony PERARD <anthony.perard@citrix.com>
Subject: [PATCH v3 07/33] tools/xenlogd: add 9pfs version request support
Date: Thu,  4 Jan 2024 10:00:29 +0100
Message-Id: <20240104090055.27323-8-jgross@suse.com>
X-Mailer: git-send-email 2.35.3
In-Reply-To: <20240104090055.27323-1-jgross@suse.com>
References: <20240104090055.27323-1-jgross@suse.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Spam-Level: 
X-Spam-Level: 
Authentication-Results: smtp-out1.suse.de;
	none
X-Rspamd-Server: rspamd2.dmz-prg2.suse.org
X-Spamd-Result: default: False [-4.00 / 50.00];
	 REPLY(-4.00)[]
X-Spam-Score: -4.00
X-Rspamd-Queue-Id: 457AD21F8C
X-Spam-Flag: NO

Add the version request of the 9pfs protocol. For the version use the
"9P2000.u" variant, as it is supported by Mini-OS and Linux.

For the request parsing add all format items needed even in future in
order to avoid code churn for those additions later.

Signed-off-by: Juergen Gross <jgross@suse.com>
---
V3:
- use unaligned helper macros (Jason Andryuk)
---
 tools/xen-9pfsd/io.c | 201 +++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 201 insertions(+)

diff --git a/tools/xen-9pfsd/io.c b/tools/xen-9pfsd/io.c
index 476562298b..245faeb9a6 100644
--- a/tools/xen-9pfsd/io.c
+++ b/tools/xen-9pfsd/io.c
@@ -22,8 +22,12 @@
 #include "xen-9pfsd.h"
 
 /* P9 protocol commands (response is either cmd+1 or P9_CMD_ERROR). */
+#define P9_CMD_VERSION    100
 #define P9_CMD_ERROR      107
 
+#define P9_MIN_MSIZE      2048
+#define P9_VERSION        "9P2000.u"
+
 struct p9_qid {
     uint8_t type;
 #define QID_TYPE_DIR      0x80
@@ -276,6 +280,169 @@ static unsigned int add_string(struct ring *ring, const char *str,
     return ret;
 }
 
+static bool chk_data(struct ring *ring, void *data, unsigned int len)
+{
+    struct p9_header *hdr = ring->buffer;
+
+    if ( data + len <= ring->buffer + hdr->size )
+        return true;
+
+    errno = E2BIG;
+
+    return false;
+}
+
+static bool fill_data_elem(void **par, void **array, unsigned int *array_sz,
+                           unsigned int elem_sz, void *data)
+{
+    if ( *array_sz && !*array )
+    {
+        *array = calloc(*array_sz, elem_sz);
+        if ( !*array )
+            return false;
+        *par = *array;
+    }
+
+    memcpy(*par, data, elem_sz);
+
+    if ( *array_sz )
+    {
+        *par += elem_sz;
+        *array_sz -= 1;
+    }
+
+    return true;
+}
+
+/*
+ * Fill variables with request data.
+ * fmt is a sequence of format characters. Supported characters are:
+ * a: an array (2 bytes number of elements + the following format as elements)
+ *    The number of elements is stored in the first unsigned int parameter, the
+ *    next parameter is a pointer to an array of elements as denoted by the next
+ *    format character. The array is allocated dynamically.
+ * b: 1 byte unsigned integer
+ *    The value is stored in the next parameter with type uint8_t.
+ * D: Data blob (4 byte length + <length> bytes)
+ *    2 parameters are consumed, first an unsigned int for the length, then a
+ *    pointer to the first uint8_t value.
+ *    No array support.
+ * L: 8 byte unsigned integer
+ *    The value is stored in the next parameter with type uint64_t.
+ * S: String (2 byte length + <length> characters)
+ *    The 0-terminated string is stored in device->str + off, off is stored in
+ *    the next parameter with type unsigned int.
+ * U: 4 byte unsigned integer
+ *    The value is stored in the next parameter with type uint32_t.
+ *
+ * Return value: number of filled variables, errno will be set in case of
+ *   error.
+ */
+static int fill_data(struct ring *ring, const char *fmt, ...)
+{
+    struct p9_header *hdr = ring->buffer;
+    void *data = hdr + 1;
+    void *par;
+    unsigned int pars = 0;
+    const char *f;
+    va_list ap;
+    unsigned int len;
+    unsigned int str_off;
+    unsigned int array_sz = 0;
+    void **array = NULL;
+
+    va_start(ap, fmt);
+
+    for ( f = fmt; *f; f++ )
+    {
+        if ( !array_sz )
+            par = va_arg(ap, void *);
+
+        switch ( *f )
+        {
+        case 'a':
+            f++;
+            if ( !*f || array_sz )
+                fmt_err(fmt);
+            if ( !chk_data(ring, data, sizeof(uint16_t)) )
+                return pars;
+            array_sz = get_unaligned((uint16_t *)data);
+            data += sizeof(uint16_t);
+            *(unsigned int *)par = array_sz;
+            array = va_arg(ap, void **);
+            *array = NULL;
+            break;
+
+        case 'b':
+            if ( !chk_data(ring, data, sizeof(uint8_t)) )
+                return pars;
+            if ( !fill_data_elem(&par, array, &array_sz, sizeof(uint8_t),
+                                 data) )
+                return pars;
+            data += sizeof(uint8_t);
+            break;
+
+        case 'D':
+            if ( array_sz )
+                fmt_err(fmt);
+            if ( !chk_data(ring, data, sizeof(uint32_t)) )
+                return pars;
+            len = get_unaligned((uint32_t *)data);
+            data += sizeof(uint32_t);
+            *(unsigned int *)par = len;
+            par = va_arg(ap, void *);
+            if ( !chk_data(ring, data, len) )
+                return pars;
+            memcpy(par, data, len);
+            data += len;
+            break;
+
+        case 'L':
+            if ( !chk_data(ring, data, sizeof(uint64_t)) )
+                return pars;
+            if ( !fill_data_elem(&par, array, &array_sz, sizeof(uint64_t),
+                                 data) )
+                return pars;
+            data += sizeof(uint64_t);
+            break;
+
+        case 'S':
+            if ( !chk_data(ring, data, sizeof(uint16_t)) )
+                return pars;
+            len = get_unaligned((uint16_t *)data);
+            data += sizeof(uint16_t);
+            if ( !chk_data(ring, data, len) )
+                return pars;
+            str_off = add_string(ring, data, len);
+            if ( str_off == ~0 )
+                return pars;
+            if ( !fill_data_elem(&par, array, &array_sz, sizeof(unsigned int),
+                                 &str_off) )
+                return pars;
+            data += len;
+            break;
+
+        case 'U':
+            if ( !chk_data(ring, data, sizeof(uint32_t)) )
+                return pars;
+            if ( !fill_data_elem(&par, array, &array_sz, sizeof(uint32_t),
+                                 data) )
+                return pars;
+            data += sizeof(uint32_t);
+            break;
+
+        default:
+            fmt_err(fmt);
+        }
+
+        if ( array_sz )
+            f--;
+        pars++;
+    }
+
+    return pars;
+}
+
 static void p9_error(struct ring *ring, uint16_t tag, uint32_t err)
 {
     unsigned int erroff;
@@ -287,6 +454,36 @@ static void p9_error(struct ring *ring, uint16_t tag, uint32_t err)
                 &err);
 }
 
+static void p9_version(struct ring *ring, struct p9_header *hdr)
+{
+    uint32_t max_size;
+    unsigned int off;
+    char *version;
+    int ret;
+
+    ret = fill_data(ring, "US", &max_size, &off);
+    if ( ret != 2 )
+    {
+        p9_error(ring, hdr->tag, errno);
+        return;
+    }
+
+    if ( max_size < P9_MIN_MSIZE )
+    {
+        p9_error(ring, hdr->tag, EMSGSIZE);
+        return;
+    }
+
+    if ( max_size < ring->max_size )
+        ring->max_size = max_size;
+
+    version = ring->str + off;
+    if ( strcmp(version, P9_VERSION) )
+        version = "unknown";
+
+    fill_buffer(ring, hdr->cmd + 1, hdr->tag, "US", &ring->max_size, version);
+}
+
 void *io_thread(void *arg)
 {
     struct ring *ring = arg;
@@ -342,6 +539,10 @@ void *io_thread(void *arg)
 
             switch ( hdr.cmd )
             {
+            case P9_CMD_VERSION:
+                p9_version(ring, &hdr);
+                break;
+
             default:
                 syslog(LOG_DEBUG, "%u.%u sent unhandled command %u\n",
                        ring->device->domid, ring->device->devid, hdr.cmd);
-- 
2.35.3



From xen-devel-bounces@lists.xenproject.org Thu Jan 04 09:02:59 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 04 Jan 2024 09:02:59 +0000
Received: from list by lists.xenproject.org with outflank-mailman.661159.1030891 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLJcw-0003eR-Sj; Thu, 04 Jan 2024 09:02:58 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 661159.1030891; Thu, 04 Jan 2024 09:02:58 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLJcw-0003eK-O8; Thu, 04 Jan 2024 09:02:58 +0000
Received: by outflank-mailman (input) for mailman id 661159;
 Thu, 04 Jan 2024 09:02:58 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=4u2H=IO=suse.com=jgross@srs-se1.protection.inumbo.net>)
 id 1rLJcw-0003cj-7D
 for xen-devel@lists.xenproject.org; Thu, 04 Jan 2024 09:02:58 +0000
Received: from smtp-out2.suse.de (smtp-out2.suse.de [195.135.223.131])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 0cc99ad6-aae0-11ee-9b0f-b553b5be7939;
 Thu, 04 Jan 2024 10:02:56 +0100 (CET)
Received: from imap1.dmz-prg2.suse.org (imap1.dmz-prg2.suse.org [10.150.64.97])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
 (No client certificate requested)
 by smtp-out2.suse.de (Postfix) with ESMTPS id A7BE61F7F8;
 Thu,  4 Jan 2024 09:02:55 +0000 (UTC)
Received: from imap1.dmz-prg2.suse.org (localhost [127.0.0.1])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
 (No client certificate requested)
 by imap1.dmz-prg2.suse.org (Postfix) with ESMTPS id 779C913722;
 Thu,  4 Jan 2024 09:02:55 +0000 (UTC)
Received: from dovecot-director2.suse.de ([2a07:de40:b281:106:10:150:64:167])
 by imap1.dmz-prg2.suse.org with ESMTPSA id +YvzGz90lmUmWQAAD6G6ig
 (envelope-from <jgross@suse.com>); Thu, 04 Jan 2024 09:02:55 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 0cc99ad6-aae0-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1704358975; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=cv7YGjBYuGXTYJDwZMRTRJp5WAVNs/V6S8PomLV1qxc=;
	b=kVTrFXfMkiXcby2vjtC11Ap+no9XNstVooLq/KAtRlmvcmqPK5xtoU04H5A3b3dD/2V51m
	zTI/eBbQOUmvApFuvywuI3djP+2DOn3C1dNc/FLcSBGyRj0f2kjyM2AWTQwAAlnslDo8Ne
	Zhi831CR7H7zgfrwCjVyIlrxbkOSRKc=
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1704358975; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=cv7YGjBYuGXTYJDwZMRTRJp5WAVNs/V6S8PomLV1qxc=;
	b=kVTrFXfMkiXcby2vjtC11Ap+no9XNstVooLq/KAtRlmvcmqPK5xtoU04H5A3b3dD/2V51m
	zTI/eBbQOUmvApFuvywuI3djP+2DOn3C1dNc/FLcSBGyRj0f2kjyM2AWTQwAAlnslDo8Ne
	Zhi831CR7H7zgfrwCjVyIlrxbkOSRKc=
From: Juergen Gross <jgross@suse.com>
To: xen-devel@lists.xenproject.org
Cc: Juergen Gross <jgross@suse.com>,
	Wei Liu <wl@xen.org>,
	Julien Grall <julien@xen.org>,
	Anthony PERARD <anthony.perard@citrix.com>,
	Jason Andryuk <jandryuk@gmail.com>
Subject: [PATCH v3 21/33] tools: add 9pfs device to xenstore-stubdom
Date: Thu,  4 Jan 2024 10:00:43 +0100
Message-Id: <20240104090055.27323-22-jgross@suse.com>
X-Mailer: git-send-email 2.35.3
In-Reply-To: <20240104090055.27323-1-jgross@suse.com>
References: <20240104090055.27323-1-jgross@suse.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Spam-Level: 
X-Spam-Level: 
X-Spamd-Result: default: False [0.90 / 50.00];
	 ARC_NA(0.00)[];
	 RCVD_VIA_SMTP_AUTH(0.00)[];
	 FROM_HAS_DN(0.00)[];
	 TO_DN_SOME(0.00)[];
	 FREEMAIL_ENVRCPT(0.00)[gmail.com];
	 R_MISSING_CHARSET(2.50)[];
	 MIME_GOOD(-0.10)[text/plain];
	 TO_MATCH_ENVRCPT_ALL(0.00)[];
	 REPLY(-4.00)[];
	 BROKEN_CONTENT_TYPE(1.50)[];
	 RCPT_COUNT_FIVE(0.00)[6];
	 RCVD_COUNT_THREE(0.00)[3];
	 DKIM_SIGNED(0.00)[suse.com:s=susede1];
	 MID_CONTAINS_FROM(1.00)[];
	 DBL_BLOCKED_OPENRESOLVER(0.00)[suse.com:email];
	 FUZZY_BLOCKED(0.00)[rspamd.com];
	 FROM_EQ_ENVFROM(0.00)[];
	 MIME_TRACE(0.00)[0:+];
	 FREEMAIL_CC(0.00)[suse.com,xen.org,citrix.com,gmail.com];
	 RCVD_TLS_ALL(0.00)[];
	 BAYES_HAM(-0.00)[13.62%]
Authentication-Results: smtp-out2.suse.de;
	none
X-Spam-Score: 0.90
X-Spam-Flag: NO

Add a 9pfs device to Xenstore stubdom in order to allow it to do e.g.
logging into a dom0 file.

Use the following parameters for the new device:

- tag = "xen"
- type = "xen-9pfsd"
- path = "/var/lib/xen/xenstore"
- security-model = "none"

For now don't limit allowed file space or number of files.

Add a new libxl function for adding it similar to the function for
adding the console device.

Signed-off-by: Juergen Gross <jgross@suse.com>
Reviewed-by: Jason Andryuk <jandryuk@gmail.com>
---
V2:
- add security_model parameter to new libxl function (Jason Andryuk)
---
 tools/helpers/init-xenstore-domain.c |  2 ++
 tools/include/libxl.h                | 17 ++++++++++++++++
 tools/libs/light/libxl_9pfs.c        | 29 ++++++++++++++++++++++++++++
 3 files changed, 48 insertions(+)

diff --git a/tools/helpers/init-xenstore-domain.c b/tools/helpers/init-xenstore-domain.c
index 140ed610ae..591cb3766d 100644
--- a/tools/helpers/init-xenstore-domain.c
+++ b/tools/helpers/init-xenstore-domain.c
@@ -543,6 +543,8 @@ int main(int argc, char** argv)
     }
     libxl_console_add_xenstore(ctx, domid, 0, console_evtchn, console_gfn,
                                NULL);
+    libxl_p9_add_xenstore(ctx, domid, 0, LIBXL_P9_TYPE_XEN_9PFSD, "xen",
+                          XEN_LIB_DIR"/xenstore", "none", 0, 0, 0, 0, NULL);
     libxl_ctx_free(ctx);
 
     fd = creat(XEN_RUN_DIR "/xenstored.pid", 0666);
diff --git a/tools/include/libxl.h b/tools/include/libxl.h
index 907aa0a330..00693264f7 100644
--- a/tools/include/libxl.h
+++ b/tools/include/libxl.h
@@ -583,6 +583,13 @@
  * libxl_console_add_xenstore() in libxl.
  */
 #define LIBXL_HAVE_CONSOLE_ADD_XENSTORE 1
+
+/*
+ * LIBXL_HAVE_P9_ADD_XENSTORE indicates presence of the function
+ * libxl_p9_add_xenstore() in libxl.
+ */
+#define LIBXL_HAVE_P9_ADD_XENSTORE 1
+
 /*
  * libxl ABI compatibility
  *
@@ -2060,6 +2067,16 @@ int libxl_console_add_xenstore(libxl_ctx *ctx, uint32_t domid, uint32_t backend,
                                const libxl_asyncop_how *ao_how)
                                LIBXL_EXTERNAL_CALLERS_ONLY;
 
+/* libxl_p9_add_xenstore writes the Xenstore entries for a domain's
+ * primary 9pfs device based on domid, backend type and device parameters.
+ */
+int libxl_p9_add_xenstore(libxl_ctx *ctx, uint32_t domid, uint32_t backend,
+                          libxl_p9_type type, char *tag, char *path,
+                          char *security_model, unsigned int max_space,
+                          unsigned int max_files, unsigned int max_open_files,
+                          bool auto_delete, const libxl_asyncop_how *ao_how)
+                          LIBXL_EXTERNAL_CALLERS_ONLY;
+
 /* May be called with info_r == NULL to check for domain's existence.
  * Returns ERROR_DOMAIN_NOTFOUND if domain does not exist (used to return
  * ERROR_INVAL for this scenario). */
diff --git a/tools/libs/light/libxl_9pfs.c b/tools/libs/light/libxl_9pfs.c
index 486bc4326e..17501c3eaa 100644
--- a/tools/libs/light/libxl_9pfs.c
+++ b/tools/libs/light/libxl_9pfs.c
@@ -176,6 +176,35 @@ static void libxl__device_p9_add(libxl__egc *egc, uint32_t domid,
         aodev->callback(egc, aodev);
 }
 
+int libxl_p9_add_xenstore(libxl_ctx *ctx, uint32_t domid, uint32_t backend,
+                          libxl_p9_type type, char *tag, char *path,
+                          char *security_model, unsigned int max_space,
+                          unsigned int max_files, unsigned int max_open_files,
+                          bool auto_delete, const libxl_asyncop_how *ao_how)
+{
+    AO_CREATE(ctx, domid, ao_how);
+    libxl__ao_device *aodev;
+    libxl_device_p9 p9 = { .backend_domid = backend,
+                           .tag = tag,
+                           .path = path,
+                           .security_model = security_model,
+                           .type = type,
+                           .max_space = max_space,
+                           .max_files = max_files,
+                           .max_open_files = max_open_files,
+                           .auto_delete = auto_delete,
+                         };
+
+    GCNEW(aodev);
+    libxl__prepare_ao_device(ao, aodev);
+    aodev->action = LIBXL__DEVICE_ACTION_ADD;
+    aodev->callback = device_addrm_aocomplete;
+
+    libxl__device_p9_add(egc, domid, &p9, aodev);
+
+    return AO_INPROGRESS;
+}
+
 #define libxl_device_p9_list NULL
 #define libxl_device_p9_compare NULL
 
-- 
2.35.3



From xen-devel-bounces@lists.xenproject.org Thu Jan 04 09:03:37 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 04 Jan 2024 09:03:37 +0000
Received: from list by lists.xenproject.org with outflank-mailman.661164.1030900 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLJdZ-0004KS-3u; Thu, 04 Jan 2024 09:03:37 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 661164.1030900; Thu, 04 Jan 2024 09:03:37 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLJdZ-0004KL-1D; Thu, 04 Jan 2024 09:03:37 +0000
Received: by outflank-mailman (input) for mailman id 661164;
 Thu, 04 Jan 2024 09:03:36 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=4u2H=IO=suse.com=jgross@srs-se1.protection.inumbo.net>)
 id 1rLJdY-0003cj-Ed
 for xen-devel@lists.xenproject.org; Thu, 04 Jan 2024 09:03:36 +0000
Received: from smtp-out2.suse.de (smtp-out2.suse.de [195.135.223.131])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 23e2e423-aae0-11ee-9b0f-b553b5be7939;
 Thu, 04 Jan 2024 10:03:34 +0100 (CET)
Received: from imap1.dmz-prg2.suse.org (imap1.dmz-prg2.suse.org [10.150.64.97])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
 (No client certificate requested)
 by smtp-out2.suse.de (Postfix) with ESMTPS id 6CF6D1F7F8;
 Thu,  4 Jan 2024 09:03:34 +0000 (UTC)
Received: from imap1.dmz-prg2.suse.org (localhost [127.0.0.1])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
 (No client certificate requested)
 by imap1.dmz-prg2.suse.org (Postfix) with ESMTPS id 4251F13722;
 Thu,  4 Jan 2024 09:03:34 +0000 (UTC)
Received: from dovecot-director2.suse.de ([2a07:de40:b281:106:10:150:64:167])
 by imap1.dmz-prg2.suse.org with ESMTPSA id QEOLDmZ0lmVZWQAAD6G6ig
 (envelope-from <jgross@suse.com>); Thu, 04 Jan 2024 09:03:34 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 23e2e423-aae0-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1704359014; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=ZKr5v0Zd94TOVTPo8zPTfeG2cAkiSDv00zjyFxNqKFg=;
	b=ZVmbxzBnf+KsJMz/aKlkijuouiQXOEosoguDbdisleC+cJxuuPZ7XxycmMm95AOZWf9hvL
	LZhiY9OQc+b8a1HwNo3z98qDLP2UBELAU5W3UyJXVqX1ynCiB9svEieGp2+2CeYMAnAJgl
	JLRUlRnrRTvJdOAdp3Rffg/fKOoxdeo=
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1704359014; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=ZKr5v0Zd94TOVTPo8zPTfeG2cAkiSDv00zjyFxNqKFg=;
	b=ZVmbxzBnf+KsJMz/aKlkijuouiQXOEosoguDbdisleC+cJxuuPZ7XxycmMm95AOZWf9hvL
	LZhiY9OQc+b8a1HwNo3z98qDLP2UBELAU5W3UyJXVqX1ynCiB9svEieGp2+2CeYMAnAJgl
	JLRUlRnrRTvJdOAdp3Rffg/fKOoxdeo=
From: Juergen Gross <jgross@suse.com>
To: xen-devel@lists.xenproject.org
Cc: Juergen Gross <jgross@suse.com>,
	Wei Liu <wl@xen.org>,
	Julien Grall <julien@xen.org>,
	Anthony PERARD <anthony.perard@citrix.com>
Subject: [PATCH v3 28/33] tools/xenstored: split domain_init()
Date: Thu,  4 Jan 2024 10:00:50 +0100
Message-Id: <20240104090055.27323-29-jgross@suse.com>
X-Mailer: git-send-email 2.35.3
In-Reply-To: <20240104090055.27323-1-jgross@suse.com>
References: <20240104090055.27323-1-jgross@suse.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Authentication-Results: smtp-out2.suse.de;
	none
X-Spam-Level: ****
X-Spam-Score: 4.20
X-Spamd-Result: default: False [4.20 / 50.00];
	 ARC_NA(0.00)[];
	 RCVD_VIA_SMTP_AUTH(0.00)[];
	 FROM_HAS_DN(0.00)[];
	 TO_DN_SOME(0.00)[];
	 R_MISSING_CHARSET(2.50)[];
	 TO_MATCH_ENVRCPT_ALL(0.00)[];
	 MIME_GOOD(-0.10)[text/plain];
	 REPLY(-4.00)[];
	 BROKEN_CONTENT_TYPE(1.50)[];
	 RCPT_COUNT_FIVE(0.00)[5];
	 RCVD_COUNT_THREE(0.00)[3];
	 DKIM_SIGNED(0.00)[suse.com:s=susede1];
	 NEURAL_HAM_SHORT(-0.20)[-1.000];
	 NEURAL_SPAM_LONG(3.50)[1.000];
	 MID_CONTAINS_FROM(1.00)[];
	 DBL_BLOCKED_OPENRESOLVER(0.00)[suse.com:email];
	 FUZZY_BLOCKED(0.00)[rspamd.com];
	 FROM_EQ_ENVFROM(0.00)[];
	 MIME_TRACE(0.00)[0:+];
	 RCVD_TLS_ALL(0.00)[]
X-Spam-Flag: NO

Today domain_init() is called either just before calling dom0_init()
in case no live update is being performed, or it is called after
reading the global state from read_state_global(), as the event
channel fd is needed.

Split up domain_init() into a preparation part which can be called
unconditionally, and in a part setting up the event channel handle.

Note that there is no chance that chk_domain_generation() can be
called now before xc_handle has been setup, so there is no need for
the related special case anymore.

Signed-off-by: Juergen Gross <jgross@suse.com>
---
V3:
- rename new function to domain_early_init() (Julien Grall)
---
 tools/xenstored/core.c   |  2 ++
 tools/xenstored/domain.c | 12 ++++++------
 tools/xenstored/domain.h |  1 +
 3 files changed, 9 insertions(+), 6 deletions(-)

diff --git a/tools/xenstored/core.c b/tools/xenstored/core.c
index edb2ab97b8..637c2ac113 100644
--- a/tools/xenstored/core.c
+++ b/tools/xenstored/core.c
@@ -2744,6 +2744,8 @@ int main(int argc, char *argv[])
 
 	talloc_enable_null_tracking();
 
+	domain_early_init();
+
 	/* Listen to hypervisor. */
 	if (!live_update) {
 		domain_init(-1);
diff --git a/tools/xenstored/domain.c b/tools/xenstored/domain.c
index af80a8221d..621b415088 100644
--- a/tools/xenstored/domain.c
+++ b/tools/xenstored/domain.c
@@ -1224,10 +1224,8 @@ static int domeq_fn(const void *key1, const void *key2)
 	return *(const unsigned int *)key1 == *(const unsigned int *)key2;
 }
 
-void domain_init(int evtfd)
+void domain_early_init(void)
 {
-	int rc;
-
 	/* Start with a random rather low domain count for the hashtable. */
 	domhash = create_hashtable(NULL, "domains", domhash_fn, domeq_fn, 0);
 	if (!domhash)
@@ -1258,6 +1256,11 @@ void domain_init(int evtfd)
 	xengnttab_set_max_grants(*xgt_handle, DOMID_FIRST_RESERVED);
 
 	talloc_set_destructor(xgt_handle, close_xgt_handle);
+}
+
+void domain_init(int evtfd)
+{
+	int rc;
 
 	if (evtfd < 0)
 		xce_handle = xenevtchn_open(NULL, XENEVTCHN_NO_CLOEXEC);
@@ -1291,9 +1294,6 @@ static bool chk_domain_generation(unsigned int domid, uint64_t gen)
 {
 	struct domain *d;
 
-	if (!xc_handle && domid == dom0_domid)
-		return true;
-
 	d = find_domain_struct(domid);
 
 	return d && d->generation <= gen;
diff --git a/tools/xenstored/domain.h b/tools/xenstored/domain.h
index 7625dca8cd..224c4c23e2 100644
--- a/tools/xenstored/domain.h
+++ b/tools/xenstored/domain.h
@@ -82,6 +82,7 @@ int do_get_domain_path(const void *ctx, struct connection *conn,
 int do_reset_watches(const void *ctx, struct connection *conn,
 		     struct buffered_data *in);
 
+void domain_early_init(void);
 void domain_init(int evtfd);
 void dom0_init(void);
 void domain_deinit(void);
-- 
2.35.3



From xen-devel-bounces@lists.xenproject.org Thu Jan 04 09:03:43 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 04 Jan 2024 09:03:43 +0000
Received: from list by lists.xenproject.org with outflank-mailman.661165.1030911 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLJdf-0004f2-Bw; Thu, 04 Jan 2024 09:03:43 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 661165.1030911; Thu, 04 Jan 2024 09:03:43 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLJdf-0004ev-87; Thu, 04 Jan 2024 09:03:43 +0000
Received: by outflank-mailman (input) for mailman id 661165;
 Thu, 04 Jan 2024 09:03:41 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=4u2H=IO=suse.com=jgross@srs-se1.protection.inumbo.net>)
 id 1rLJdd-0003cj-RH
 for xen-devel@lists.xenproject.org; Thu, 04 Jan 2024 09:03:41 +0000
Received: from smtp-out1.suse.de (smtp-out1.suse.de [195.135.223.130])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 272098ea-aae0-11ee-9b0f-b553b5be7939;
 Thu, 04 Jan 2024 10:03:40 +0100 (CET)
Received: from imap1.dmz-prg2.suse.org (imap1.dmz-prg2.suse.org
 [IPv6:2a07:de40:b281:104:10:150:64:97])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
 (No client certificate requested)
 by smtp-out1.suse.de (Postfix) with ESMTPS id EE03A21EE1;
 Thu,  4 Jan 2024 09:03:39 +0000 (UTC)
Received: from imap1.dmz-prg2.suse.org (localhost [127.0.0.1])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
 (No client certificate requested)
 by imap1.dmz-prg2.suse.org (Postfix) with ESMTPS id C454613722;
 Thu,  4 Jan 2024 09:03:39 +0000 (UTC)
Received: from dovecot-director2.suse.de ([2a07:de40:b281:106:10:150:64:167])
 by imap1.dmz-prg2.suse.org with ESMTPSA id tgyuLmt0lmViWQAAD6G6ig
 (envelope-from <jgross@suse.com>); Thu, 04 Jan 2024 09:03:39 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 272098ea-aae0-11ee-9b0f-b553b5be7939
From: Juergen Gross <jgross@suse.com>
To: xen-devel@lists.xenproject.org
Cc: Juergen Gross <jgross@suse.com>,
	Wei Liu <wl@xen.org>,
	Julien Grall <julien@xen.org>,
	Anthony PERARD <anthony.perard@citrix.com>
Subject: [PATCH v3 29/33] tools/xenstored: map stubdom interface
Date: Thu,  4 Jan 2024 10:00:51 +0100
Message-Id: <20240104090055.27323-30-jgross@suse.com>
X-Mailer: git-send-email 2.35.3
In-Reply-To: <20240104090055.27323-1-jgross@suse.com>
References: <20240104090055.27323-1-jgross@suse.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Spam-Level: 
X-Rspamd-Server: rspamd1.dmz-prg2.suse.org
X-Spam-Level: 
X-Spam-Flag: NO
X-Spamd-Result: default: False [-4.00 / 50.00];
	 REPLY(-4.00)[]
Authentication-Results: smtp-out1.suse.de;
	none
X-Spam-Score: -4.00
X-Rspamd-Queue-Id: EE03A21EE1

When running as stubdom, map the stubdom's Xenstore ring page in order
to support using the 9pfs frontend.

Use the same pattern as in dom0_init() when running as daemon in dom0
(introduce the own domain, then send an event to the client side to
signal Xenstore is ready to communicate).

Signed-off-by: Juergen Gross <jgross@suse.com>
---
 tools/xenstored/core.c   |  2 ++
 tools/xenstored/domain.c | 27 ++++++++++++++++++++++++++-
 tools/xenstored/domain.h |  1 +
 3 files changed, 29 insertions(+), 1 deletion(-)

diff --git a/tools/xenstored/core.c b/tools/xenstored/core.c
index 637c2ac113..b648af16fa 100644
--- a/tools/xenstored/core.c
+++ b/tools/xenstored/core.c
@@ -2769,6 +2769,8 @@ int main(int argc, char *argv[])
 		lu_read_state();
 #endif
 
+	stubdom_init();
+
 	check_store();
 
 	/* Get ready to listen to the tools. */
diff --git a/tools/xenstored/domain.c b/tools/xenstored/domain.c
index 621b415088..1a7d5e9756 100644
--- a/tools/xenstored/domain.c
+++ b/tools/xenstored/domain.c
@@ -37,6 +37,10 @@
 #include <xenctrl.h>
 #include <xen/grant_table.h>
 
+#ifdef __MINIOS__
+#include <mini-os/xenbus.h>
+#endif
+
 static xc_interface **xc_handle;
 xengnttab_handle **xgt_handle;
 static evtchn_port_t virq_port;
@@ -500,6 +504,11 @@ static void *map_interface(domid_t domid)
 	if (domid == xenbus_master_domid())
 		return xenbus_map();
 
+#ifdef __MINIOS__
+	if (domid == stub_domid)
+		return xenstore_buf;
+#endif
+
 	return xengnttab_map_grant_ref(*xgt_handle, domid,
 				       GNTTAB_RESERVED_XENSTORE,
 				       PROT_READ|PROT_WRITE);
@@ -509,7 +518,7 @@ static void unmap_interface(domid_t domid, void *interface)
 {
 	if (domid == xenbus_master_domid())
 		unmap_xenbus(interface);
-	else
+	else if (domid != stub_domid)
 		xengnttab_unmap(*xgt_handle, interface, 1);
 }
 
@@ -1214,6 +1223,22 @@ void dom0_init(void)
 	xenevtchn_notify(xce_handle, dom0->port);
 }
 
+void stubdom_init(void)
+{
+#ifdef __MINIOS__
+	struct domain *stubdom;
+
+	if (stub_domid < 0)
+		return;
+
+	stubdom = introduce_domain(NULL, stub_domid, xenbus_evtchn, false);
+	if (!stubdom)
+		barf_perror("Failed to initialize stubdom");
+
+	xenevtchn_notify(xce_handle, stubdom->port);
+#endif
+}
+
 static unsigned int domhash_fn(const void *k)
 {
 	return *(const unsigned int *)k;
diff --git a/tools/xenstored/domain.h b/tools/xenstored/domain.h
index 224c4c23e2..844ac11510 100644
--- a/tools/xenstored/domain.h
+++ b/tools/xenstored/domain.h
@@ -85,6 +85,7 @@ int do_reset_watches(const void *ctx, struct connection *conn,
 void domain_early_init(void);
 void domain_init(int evtfd);
 void dom0_init(void);
+void stubdom_init(void);
 void domain_deinit(void);
 void ignore_connection(struct connection *conn, unsigned int err);
 
-- 
2.35.3



From xen-devel-bounces@lists.xenproject.org Thu Jan 04 09:09:27 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 04 Jan 2024 09:09:27 +0000
Received: from list by lists.xenproject.org with outflank-mailman.661193.1030931 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLJjB-000626-7H; Thu, 04 Jan 2024 09:09:25 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 661193.1030931; Thu, 04 Jan 2024 09:09:25 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLJjB-00061z-4X; Thu, 04 Jan 2024 09:09:25 +0000
Received: by outflank-mailman (input) for mailman id 661193;
 Thu, 04 Jan 2024 09:09:23 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=4u2H=IO=suse.com=jgross@srs-se1.protection.inumbo.net>)
 id 1rLJcd-00085z-Qr
 for xen-devel@lists.xenproject.org; Thu, 04 Jan 2024 09:02:39 +0000
Received: from smtp-out2.suse.de (smtp-out2.suse.de [195.135.223.131])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 02c8d04a-aae0-11ee-98ef-6d05b1d4d9a1;
 Thu, 04 Jan 2024 10:02:39 +0100 (CET)
Received: from imap1.dmz-prg2.suse.org (imap1.dmz-prg2.suse.org
 [IPv6:2a07:de40:b281:104:10:150:64:97])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
 (No client certificate requested)
 by smtp-out2.suse.de (Postfix) with ESMTPS id 0760F1F7F8;
 Thu,  4 Jan 2024 09:02:39 +0000 (UTC)
Received: from imap1.dmz-prg2.suse.org (localhost [127.0.0.1])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
 (No client certificate requested)
 by imap1.dmz-prg2.suse.org (Postfix) with ESMTPS id CBC9813722;
 Thu,  4 Jan 2024 09:02:38 +0000 (UTC)
Received: from dovecot-director2.suse.de ([2a07:de40:b281:106:10:150:64:167])
 by imap1.dmz-prg2.suse.org with ESMTPSA id G2Z3MC50lmUIWQAAD6G6ig
 (envelope-from <jgross@suse.com>); Thu, 04 Jan 2024 09:02:38 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 02c8d04a-aae0-11ee-98ef-6d05b1d4d9a1
From: Juergen Gross <jgross@suse.com>
To: xen-devel@lists.xenproject.org
Cc: Juergen Gross <jgross@suse.com>,
	Wei Liu <wl@xen.org>,
	Julien Grall <julien@xen.org>,
	Anthony PERARD <anthony.perard@citrix.com>,
	Jason Andryuk <jandryuk@gmail.com>
Subject: [PATCH v3 18/33] tools/helpers: allocate xenstore event channel for xenstore stubdom
Date: Thu,  4 Jan 2024 10:00:40 +0100
Message-Id: <20240104090055.27323-19-jgross@suse.com>
X-Mailer: git-send-email 2.35.3
In-Reply-To: <20240104090055.27323-1-jgross@suse.com>
References: <20240104090055.27323-1-jgross@suse.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Spam-Level: 
X-Rspamd-Server: rspamd1.dmz-prg2.suse.org
X-Spam-Level: 
X-Spam-Flag: NO
X-Spamd-Result: default: False [-4.00 / 50.00];
	 REPLY(-4.00)[]
Authentication-Results: smtp-out2.suse.de;
	none
X-Spam-Score: -4.00
X-Rspamd-Queue-Id: 0760F1F7F8

In order to prepare support of PV frontends in xenstore-stubdom, add
allocation of a Xenstore event channel to init-xenstore-domain.c.

Signed-off-by: Juergen Gross <jgross@suse.com>
Reviewed-by: Jason Andryuk <jandryuk@gmail.com>
---
 tools/helpers/init-xenstore-domain.c | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/tools/helpers/init-xenstore-domain.c b/tools/helpers/init-xenstore-domain.c
index b2d5df8ba5..140ed610ae 100644
--- a/tools/helpers/init-xenstore-domain.c
+++ b/tools/helpers/init-xenstore-domain.c
@@ -248,6 +248,13 @@ static int build(xc_interface *xch)
     dom->cmdline = xc_dom_strdup(dom, cmdline);
     dom->xenstore_domid = domid;
     dom->console_evtchn = console_evtchn;
+    rv = xc_evtchn_alloc_unbound(xch, domid, domid);
+    if ( rv < 0 )
+    {
+        fprintf(stderr, "xc_evtchn_alloc_unbound failed\n");
+        goto err;
+    }
+    dom->xenstore_evtchn = rv;
 
     rv = xc_dom_mem_init(dom, memory);
     if ( rv )
-- 
2.35.3



From xen-devel-bounces@lists.xenproject.org Thu Jan 04 09:09:27 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 04 Jan 2024 09:09:27 +0000
Received: from list by lists.xenproject.org with outflank-mailman.661191.1030921 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLJjA-0005nf-0N; Thu, 04 Jan 2024 09:09:24 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 661191.1030921; Thu, 04 Jan 2024 09:09:23 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLJj9-0005nY-TI; Thu, 04 Jan 2024 09:09:23 +0000
Received: by outflank-mailman (input) for mailman id 661191;
 Thu, 04 Jan 2024 09:09:22 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=4u2H=IO=suse.com=jgross@srs-se1.protection.inumbo.net>)
 id 1rLJdi-00085z-MP
 for xen-devel@lists.xenproject.org; Thu, 04 Jan 2024 09:03:46 +0000
Received: from smtp-out1.suse.de (smtp-out1.suse.de
 [2a07:de40:b251:101:10:150:64:1])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 2a8f7e8d-aae0-11ee-98ef-6d05b1d4d9a1;
 Thu, 04 Jan 2024 10:03:46 +0100 (CET)
Received: from imap1.dmz-prg2.suse.org (imap1.dmz-prg2.suse.org [10.150.64.97])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
 (No client certificate requested)
 by smtp-out1.suse.de (Postfix) with ESMTPS id 8B7E021EE1;
 Thu,  4 Jan 2024 09:03:45 +0000 (UTC)
Received: from imap1.dmz-prg2.suse.org (localhost [127.0.0.1])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
 (No client certificate requested)
 by imap1.dmz-prg2.suse.org (Postfix) with ESMTPS id 5226E13722;
 Thu,  4 Jan 2024 09:03:45 +0000 (UTC)
Received: from dovecot-director2.suse.de ([2a07:de40:b281:106:10:150:64:167])
 by imap1.dmz-prg2.suse.org with ESMTPSA id 9zrOEnF0lmVqWQAAD6G6ig
 (envelope-from <jgross@suse.com>); Thu, 04 Jan 2024 09:03:45 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 2a8f7e8d-aae0-11ee-98ef-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1704359025; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=9KFYlg3KmBFIQsnRzXZPEKmI+cJA9iig/fH3IH6rFN4=;
	b=FrMHG+SvOZEpCyhF5i7igK1KfwUBywjoAJX+ZWoyO5KDereFeSh7wO8QyEP6Y6YsU/lPIE
	imcNmJTVxzHhn8BeeLBq5OAgOyxX5n7Abp+miBmX3NAxt8Mjssl5Y44Pwxp8JzMAemnYaw
	oA5bP6qV19STvVOY/N66ZcavoMTnIVg=
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1704359025; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=9KFYlg3KmBFIQsnRzXZPEKmI+cJA9iig/fH3IH6rFN4=;
	b=FrMHG+SvOZEpCyhF5i7igK1KfwUBywjoAJX+ZWoyO5KDereFeSh7wO8QyEP6Y6YsU/lPIE
	imcNmJTVxzHhn8BeeLBq5OAgOyxX5n7Abp+miBmX3NAxt8Mjssl5Y44Pwxp8JzMAemnYaw
	oA5bP6qV19STvVOY/N66ZcavoMTnIVg=
From: Juergen Gross <jgross@suse.com>
To: xen-devel@lists.xenproject.org
Cc: Juergen Gross <jgross@suse.com>,
	Wei Liu <wl@xen.org>,
	Julien Grall <julien@xen.org>,
	Anthony PERARD <anthony.perard@citrix.com>,
	Jason Andryuk <jandryuk@gmail.com>
Subject: [PATCH v3 30/33] tools/xenstored: mount 9pfs device in stubdom
Date: Thu,  4 Jan 2024 10:00:52 +0100
Message-Id: <20240104090055.27323-31-jgross@suse.com>
X-Mailer: git-send-email 2.35.3
In-Reply-To: <20240104090055.27323-1-jgross@suse.com>
References: <20240104090055.27323-1-jgross@suse.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Authentication-Results: smtp-out1.suse.de;
	none
X-Spam-Level: ****
X-Spam-Score: 4.20
X-Spamd-Result: default: False [4.20 / 50.00];
	 ARC_NA(0.00)[];
	 RCVD_VIA_SMTP_AUTH(0.00)[];
	 FROM_HAS_DN(0.00)[];
	 TO_DN_SOME(0.00)[];
	 FREEMAIL_ENVRCPT(0.00)[gmail.com];
	 R_MISSING_CHARSET(2.50)[];
	 MIME_GOOD(-0.10)[text/plain];
	 TO_MATCH_ENVRCPT_ALL(0.00)[];
	 REPLY(-4.00)[];
	 BROKEN_CONTENT_TYPE(1.50)[];
	 RCPT_COUNT_FIVE(0.00)[6];
	 RCVD_COUNT_THREE(0.00)[3];
	 DKIM_SIGNED(0.00)[suse.com:s=susede1];
	 NEURAL_HAM_SHORT(-0.20)[-1.000];
	 NEURAL_SPAM_LONG(3.50)[1.000];
	 MID_CONTAINS_FROM(1.00)[];
	 DBL_BLOCKED_OPENRESOLVER(0.00)[suse.com:email];
	 FUZZY_BLOCKED(0.00)[rspamd.com];
	 FROM_EQ_ENVFROM(0.00)[];
	 MIME_TRACE(0.00)[0:+];
	 FREEMAIL_CC(0.00)[suse.com,xen.org,citrix.com,gmail.com];
	 RCVD_TLS_ALL(0.00)[]
X-Spam-Flag: NO

Mount the 9pfs device in stubdom enabling it to use files.

This has to happen in a worker thread in order to allow the main thread
handling the required Xenstore accesses in parallel.

Signed-off-by: Juergen Gross <jgross@suse.com>
Reviewed-by: Jason Andryuk <jandryuk@gmail.com>
---
V3:
- add logging in case of errors (Julien Grall)
---
 tools/xenstored/core.h   |  6 +++++
 tools/xenstored/domain.c |  2 ++
 tools/xenstored/minios.c | 54 ++++++++++++++++++++++++++++++++++++++++
 3 files changed, 62 insertions(+)

diff --git a/tools/xenstored/core.h b/tools/xenstored/core.h
index a20c7ee3a0..0cb3a272b5 100644
--- a/tools/xenstored/core.h
+++ b/tools/xenstored/core.h
@@ -36,6 +36,8 @@
 #include "list.h"
 #include "hashtable.h"
 
+#define XENSTORE_LIB_DIR	XEN_LIB_DIR "/xenstore"
+
 #ifndef O_CLOEXEC
 #define O_CLOEXEC 0
 /* O_CLOEXEC support is needed for Live Update in the daemon case. */
@@ -398,6 +400,10 @@ int set_fd(int fd, short events);
 void set_special_fds(void);
 void handle_special_fds(void);
 
+#ifdef __MINIOS__
+void mount_9pfs(void);
+#endif
+
 /* Close stdin/stdout/stderr to complete daemonize */
 void finish_daemonize(void);
 
diff --git a/tools/xenstored/domain.c b/tools/xenstored/domain.c
index 1a7d5e9756..64c8fd0cc3 100644
--- a/tools/xenstored/domain.c
+++ b/tools/xenstored/domain.c
@@ -1236,6 +1236,8 @@ void stubdom_init(void)
 		barf_perror("Failed to initialize stubdom");
 
 	xenevtchn_notify(xce_handle, stubdom->port);
+
+	mount_9pfs();
 #endif
 }
 
diff --git a/tools/xenstored/minios.c b/tools/xenstored/minios.c
index 38a51e671a..10e1765f8d 100644
--- a/tools/xenstored/minios.c
+++ b/tools/xenstored/minios.c
@@ -17,10 +17,20 @@
 */
 #include <sys/types.h>
 #include <sys/mman.h>
+#include <syslog.h>
+#include "talloc.h"
 #include "core.h"
 #include "utils.h"
 #include <xen/grant_table.h>
 #include <mini-os/lib.h>
+#include <mini-os/9pfront.h>
+#include <mini-os/sched.h>
+#include <mini-os/xenbus.h>
+#include <mini-os/xmalloc.h>
+
+#define P9_STATE_PATH	"device/9pfs/0/state"
+
+static void *p9_device;
 
 void finish_daemonize(void)
 {
@@ -65,3 +75,47 @@ void set_special_fds(void)
 void handle_special_fds(void)
 {
 }
+
+static void mount_thread(void *p)
+{
+	xenbus_event_queue events = NULL;
+	char *err;
+	char *dummy;
+
+	err = xenbus_watch_path_token(XBT_NIL, P9_STATE_PATH, "9pfs", &events);
+	if (err) {
+		log("error \"%s\" when setting watch on \"%s\"\n", err,
+		    P9_STATE_PATH);
+		free(err);
+		return;
+	}
+
+	for (;;) {
+		xenbus_wait_for_watch(&events);
+
+		/*
+		 * We only care for existence of the state node.
+		 * State changes are handled in init_9pfront().
+		 */
+		err = xenbus_read(XBT_NIL, P9_STATE_PATH, &dummy);
+		if (!err)
+			break;
+		free(err);
+	}
+
+	free(dummy);
+
+	err = xenbus_unwatch_path_token(XBT_NIL, P9_STATE_PATH, "9pfs");
+	if (err) {
+		log("error \"%s\" when unwatching \"%s\", leaking watch\n",
+		    err, P9_STATE_PATH);
+		free(err);
+	}
+
+	p9_device = init_9pfront(0, XENSTORE_LIB_DIR);
+}
+
+void mount_9pfs(void)
+{
+	create_thread("mount-9pfs", mount_thread, NULL);
+}
-- 
2.35.3



From xen-devel-bounces@lists.xenproject.org Thu Jan 04 09:09:51 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 04 Jan 2024 09:09:51 +0000
Received: from list by lists.xenproject.org with outflank-mailman.661206.1030940 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLJja-0006rU-Kc; Thu, 04 Jan 2024 09:09:50 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 661206.1030940; Thu, 04 Jan 2024 09:09:50 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLJja-0006rM-HZ; Thu, 04 Jan 2024 09:09:50 +0000
Received: by outflank-mailman (input) for mailman id 661206;
 Thu, 04 Jan 2024 09:09:49 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=4u2H=IO=suse.com=jgross@srs-se1.protection.inumbo.net>)
 id 1rLJdG-00085z-Vu
 for xen-devel@lists.xenproject.org; Thu, 04 Jan 2024 09:03:19 +0000
Received: from smtp-out1.suse.de (smtp-out1.suse.de
 [2a07:de40:b251:101:10:150:64:1])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 19e4093b-aae0-11ee-98ef-6d05b1d4d9a1;
 Thu, 04 Jan 2024 10:03:18 +0100 (CET)
Received: from imap1.dmz-prg2.suse.org (imap1.dmz-prg2.suse.org
 [IPv6:2a07:de40:b281:104:10:150:64:97])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
 (No client certificate requested)
 by smtp-out1.suse.de (Postfix) with ESMTPS id C16FD21EE1;
 Thu,  4 Jan 2024 09:03:17 +0000 (UTC)
Received: from imap1.dmz-prg2.suse.org (localhost [127.0.0.1])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
 (No client certificate requested)
 by imap1.dmz-prg2.suse.org (Postfix) with ESMTPS id 928C513722;
 Thu,  4 Jan 2024 09:03:17 +0000 (UTC)
Received: from dovecot-director2.suse.de ([2a07:de40:b281:106:10:150:64:167])
 by imap1.dmz-prg2.suse.org with ESMTPSA id rZKNIlV0lmVEWQAAD6G6ig
 (envelope-from <jgross@suse.com>); Thu, 04 Jan 2024 09:03:17 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 19e4093b-aae0-11ee-98ef-6d05b1d4d9a1
From: Juergen Gross <jgross@suse.com>
To: xen-devel@lists.xenproject.org
Cc: Juergen Gross <jgross@suse.com>,
	Wei Liu <wl@xen.org>,
	Julien Grall <julien@xen.org>,
	Anthony PERARD <anthony.perard@citrix.com>
Subject: [PATCH v3 25/33] tools/xenstored: move all socket handling into posix.c
Date: Thu,  4 Jan 2024 10:00:47 +0100
Message-Id: <20240104090055.27323-26-jgross@suse.com>
X-Mailer: git-send-email 2.35.3
In-Reply-To: <20240104090055.27323-1-jgross@suse.com>
References: <20240104090055.27323-1-jgross@suse.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Spam-Level: 
X-Rspamd-Server: rspamd1.dmz-prg2.suse.org
X-Spam-Level: 
X-Spam-Flag: NO
X-Spamd-Result: default: False [-4.00 / 50.00];
	 REPLY(-4.00)[]
Authentication-Results: smtp-out1.suse.de;
	none
X-Spam-Score: -4.00
X-Rspamd-Queue-Id: C16FD21EE1

All of the socket handling is needed only when running as daemon.

Move it into posix.c, allowing to remove the NO_SOCKETS macro.

Signed-off-by: Juergen Gross <jgross@suse.com>
---
V3:
- new patch
---
 tools/xenstored/Makefile.common |   4 -
 tools/xenstored/core.c          | 156 +-------------------------------
 tools/xenstored/core.h          |   8 +-
 tools/xenstored/domain.c        |   9 +-
 tools/xenstored/minios.c        |   6 ++
 tools/xenstored/posix.c         | 153 +++++++++++++++++++++++++++++++
 6 files changed, 167 insertions(+), 169 deletions(-)

diff --git a/tools/xenstored/Makefile.common b/tools/xenstored/Makefile.common
index 189ab81b8d..ef63ef650c 100644
--- a/tools/xenstored/Makefile.common
+++ b/tools/xenstored/Makefile.common
@@ -16,10 +16,6 @@ CFLAGS += $(CFLAGS_libxenctrl)
 CFLAGS += $(CFLAGS_libxenguest)
 CFLAGS += $(CFLAGS_libxentoolcore)
 
-ifdef CONFIG_STUBDOM
-CFLAGS += -DNO_SOCKETS=1
-endif
-
 $(XENSTORED_OBJS-y): CFLAGS += $(CFLAGS_libxengnttab)
 
 xenstored.a: $(XENSTORED_OBJS-y)
diff --git a/tools/xenstored/core.c b/tools/xenstored/core.c
index 650c1d1574..8ff1faccef 100644
--- a/tools/xenstored/core.c
+++ b/tools/xenstored/core.c
@@ -20,10 +20,6 @@
 #include <sys/types.h>
 #include <sys/stat.h>
 #include <poll.h>
-#ifndef NO_SOCKETS
-#include <sys/socket.h>
-#include <sys/un.h>
-#endif
 #include <sys/time.h>
 #include <time.h>
 #include <unistd.h>
@@ -61,7 +57,7 @@ static unsigned int current_array_size;
 static unsigned int nr_fds;
 static unsigned int delayed_requests;
 
-static int sock = -1;
+int sock = -1;
 
 int orig_argc;
 char **orig_argv;
@@ -486,7 +482,7 @@ fail:
 	return -1;
 }
 
-static void initialize_fds(int *p_sock_pollfd_idx, int *ptimeout)
+static void initialize_fds(int *ptimeout)
 {
 	struct connection *conn;
 	uint64_t msecs;
@@ -499,8 +495,6 @@ static void initialize_fds(int *p_sock_pollfd_idx, int *ptimeout)
 	*ptimeout = delayed_requests ? 1000 : -1;
 
 	set_special_fds();
-	if (sock != -1)
-		*p_sock_pollfd_idx = set_fd(sock, POLLIN|POLLPRI);
 
 	if (xce_handle != NULL)
 		xce_pollfd_idx = set_fd(xenevtchn_fd(xce_handle),
@@ -2260,97 +2254,6 @@ struct connection *get_connection_by_id(unsigned int conn_id)
 	return NULL;
 }
 
-#ifdef NO_SOCKETS
-static void accept_connection(int sock)
-{
-}
-#else
-static int writefd(struct connection *conn, const void *data, unsigned int len)
-{
-	int rc;
-
-	while ((rc = write(conn->fd, data, len)) < 0) {
-		if (errno == EAGAIN) {
-			rc = 0;
-			break;
-		}
-		if (errno != EINTR)
-			break;
-	}
-
-	return rc;
-}
-
-static int readfd(struct connection *conn, void *data, unsigned int len)
-{
-	int rc;
-
-	while ((rc = read(conn->fd, data, len)) < 0) {
-		if (errno == EAGAIN) {
-			rc = 0;
-			break;
-		}
-		if (errno != EINTR)
-			break;
-	}
-
-	/* Reading zero length means we're done with this connection. */
-	if ((rc == 0) && (len != 0)) {
-		errno = EBADF;
-		rc = -1;
-	}
-
-	return rc;
-}
-
-static bool socket_can_process(struct connection *conn, int mask)
-{
-	if (conn->pollfd_idx == -1)
-		return false;
-
-	if (fds[conn->pollfd_idx].revents & ~(POLLIN | POLLOUT)) {
-		talloc_free(conn);
-		return false;
-	}
-
-	return (fds[conn->pollfd_idx].revents & mask);
-}
-
-static bool socket_can_write(struct connection *conn)
-{
-	return socket_can_process(conn, POLLOUT);
-}
-
-static bool socket_can_read(struct connection *conn)
-{
-	return socket_can_process(conn, POLLIN);
-}
-
-const struct interface_funcs socket_funcs = {
-	.write = writefd,
-	.read = readfd,
-	.can_write = socket_can_write,
-	.can_read = socket_can_read,
-};
-
-static void accept_connection(int sock)
-{
-	int fd;
-	struct connection *conn;
-
-	fd = accept(sock, NULL, NULL);
-	if (fd < 0)
-		return;
-
-	conn = new_connection(&socket_funcs);
-	if (conn) {
-		conn->fd = fd;
-		conn->id = dom0_domid;
-	} else
-		close(fd);
-}
-#endif
-
 /* We create initial nodes manually. */
 static void manual_node(const char *name, const char *child)
 {
@@ -2579,46 +2482,6 @@ void corrupt(struct connection *conn, const char *fmt, ...)
 	errno = saved_errno;
 }
 
-#ifndef NO_SOCKETS
-static void destroy_fds(void)
-{
-	if (sock >= 0)
-		close(sock);
-}
-
-void init_sockets(void)
-{
-	struct sockaddr_un addr;
-	const char *soc_str = xenstore_daemon_path();
-
-	if (!soc_str)
-		barf_perror("Failed to obtain xs domain socket");
-
-	/* Create sockets for them to listen to. */
-	atexit(destroy_fds);
-	sock = socket(PF_UNIX, SOCK_STREAM, 0);
-	if (sock < 0)
-		barf_perror("Could not create socket");
-
-	/* FIXME: Be more sophisticated, don't mug running daemon. */
-	unlink(soc_str);
-
-	addr.sun_family = AF_UNIX;
-
-	if(strlen(soc_str) >= sizeof(addr.sun_path))
-		barf_perror("socket string '%s' too long", soc_str);
-	strcpy(addr.sun_path, soc_str);
-	if (bind(sock, (struct sockaddr *)&addr, sizeof(addr)) != 0)
-		barf_perror("Could not bind socket to %s", soc_str);
-
-	if (chmod(soc_str, 0600) != 0)
-		barf_perror("Could not chmod sockets");
-
-	if (listen(sock, 1) != 0)
-		barf_perror("Could not listen on sockets");
-}
-#endif
-
 static void usage(void)
 {
 	fprintf(stderr,
@@ -2796,7 +2659,6 @@ int set_trace_switch(const char *arg)
 int main(int argc, char *argv[])
 {
 	int opt;
-	int sock_pollfd_idx = -1;
 	bool dofork = true;
 	bool live_update = false;
 	const char *pidfile = NULL;
@@ -2907,7 +2769,7 @@ int main(int argc, char *argv[])
 	check_store();
 
 	/* Get ready to listen to the tools. */
-	initialize_fds(&sock_pollfd_idx, &timeout);
+	initialize_fds(&timeout);
 
 	late_init(live_update);
 
@@ -2923,16 +2785,6 @@ int main(int argc, char *argv[])
 
 		handle_special_fds();
 
-		if (sock_pollfd_idx != -1) {
-			if (fds[sock_pollfd_idx].revents & ~POLLIN) {
-				barf_perror("sock poll failed");
-				break;
-			} else if (fds[sock_pollfd_idx].revents & POLLIN) {
-				accept_connection(sock);
-				sock_pollfd_idx = -1;
-			}
-		}
-
 		if (xce_pollfd_idx != -1) {
 			if (fds[xce_pollfd_idx].revents & ~POLLIN) {
 				barf_perror("xce_handle poll failed");
@@ -2986,7 +2838,7 @@ int main(int argc, char *argv[])
 			}
 		}
 
-		initialize_fds(&sock_pollfd_idx, &timeout);
+		initialize_fds(&timeout);
 	}
 }
 
diff --git a/tools/xenstored/core.h b/tools/xenstored/core.h
index 6944f48719..ddc345050c 100644
--- a/tools/xenstored/core.h
+++ b/tools/xenstored/core.h
@@ -301,6 +301,7 @@ int rm_node(struct connection *conn, const void *ctx, const char *name);
 
 void setup_structure(bool live_update);
 struct connection *new_connection(const struct interface_funcs *funcs);
+struct connection *add_socket_connection(int fd);
 struct connection *get_connection_by_id(unsigned int conn_id);
 void check_store(void);
 void corrupt(struct connection *conn, const char *fmt, ...);
@@ -335,6 +336,8 @@ void close_log(void);
 		errno = _saved_errno;					\
 	} while (0)
 
+extern int sock;
+
 extern int orig_argc;
 extern char **orig_argv;
 
@@ -394,14 +397,9 @@ int set_fd(int fd, short events);
 void set_special_fds(void);
 void handle_special_fds(void);
 
-void init_sockets(void);
-
 /* Close stdin/stdout/stderr to complete daemonize */
 void finish_daemonize(void);
 
-#ifndef NO_SOCKETS
-extern const struct interface_funcs socket_funcs;
-#endif
 extern xengnttab_handle **xgt_handle;
 
 int remember_string(struct hashtable *hash, const char *str);
diff --git a/tools/xenstored/domain.c b/tools/xenstored/domain.c
index 6ef136e01f..040df98b8c 100644
--- a/tools/xenstored/domain.c
+++ b/tools/xenstored/domain.c
@@ -1739,14 +1739,7 @@ void read_state_connection(const void *ctx, const void *state)
 	struct domain *domain, *tdomain;
 
 	if (sc->conn_type == XS_STATE_CONN_TYPE_SOCKET) {
-#ifdef NO_SOCKETS
-		barf("socket based connection without sockets");
-#else
-		conn = new_connection(&socket_funcs);
-		if (!conn)
-			barf("error restoring connection");
-		conn->fd = sc->spec.socket_fd;
-#endif
+		conn = add_socket_connection(sc->spec.socket_fd);
 	} else {
 		domain = introduce_domain(ctx, sc->spec.ring.domid,
 					  sc->spec.ring.evtchn, true);
diff --git a/tools/xenstored/minios.c b/tools/xenstored/minios.c
index 3208169187..5d59cc90cc 100644
--- a/tools/xenstored/minios.c
+++ b/tools/xenstored/minios.c
@@ -18,12 +18,18 @@
 #include <sys/types.h>
 #include <sys/mman.h>
 #include "core.h"
+#include "utils.h"
 #include <xen/grant_table.h>
 
 void finish_daemonize(void)
 {
 }
 
+struct connection *add_socket_connection(int fd)
+{
+	barf("socket based connection without sockets");
+}
+
 evtchn_port_t get_xenbus_evtchn(void)
 {
 	return dom0_event;
diff --git a/tools/xenstored/posix.c b/tools/xenstored/posix.c
index 2dbbef4a0b..f72c8406d2 100644
--- a/tools/xenstored/posix.c
+++ b/tools/xenstored/posix.c
@@ -24,6 +24,8 @@
 #include <stdlib.h>
 #include <syslog.h>
 #include <sys/mman.h>
+#include <sys/socket.h>
+#include <sys/un.h>
 #if defined(HAVE_SYSTEMD)
 #include <systemd/sd-daemon.h>
 #endif
@@ -32,10 +34,13 @@
 #include "utils.h"
 #include "core.h"
 #include "osdep.h"
+#include "talloc.h"
 
 static int reopen_log_pipe0_pollfd_idx = -1;
 static int reopen_log_pipe[2];
 
+static int sock_pollfd_idx = -1;
+
 static void write_pidfile(const char *pidfile)
 {
 	char buf[100];
@@ -180,6 +185,142 @@ void *xenbus_map(void)
 	return addr;
 }
 
+static int writefd(struct connection *conn, const void *data, unsigned int len)
+{
+	int rc;
+
+	while ((rc = write(conn->fd, data, len)) < 0) {
+		if (errno == EAGAIN) {
+			rc = 0;
+			break;
+		}
+		if (errno != EINTR)
+			break;
+	}
+
+	return rc;
+}
+
+static int readfd(struct connection *conn, void *data, unsigned int len)
+{
+	int rc;
+
+	while ((rc = read(conn->fd, data, len)) < 0) {
+		if (errno == EAGAIN) {
+			rc = 0;
+			break;
+		}
+		if (errno != EINTR)
+			break;
+	}
+
+	/* Reading zero length means we're done with this connection. */
+	if ((rc == 0) && (len != 0)) {
+		errno = EBADF;
+		rc = -1;
+	}
+
+	return rc;
+}
+
+static bool socket_can_process(struct connection *conn, int mask)
+{
+	if (conn->pollfd_idx == -1)
+		return false;
+
+	if (fds[conn->pollfd_idx].revents & ~(POLLIN | POLLOUT)) {
+		talloc_free(conn);
+		return false;
+	}
+
+	return (fds[conn->pollfd_idx].revents & mask);
+}
+
+static bool socket_can_write(struct connection *conn)
+{
+	return socket_can_process(conn, POLLOUT);
+}
+
+static bool socket_can_read(struct connection *conn)
+{
+	return socket_can_process(conn, POLLIN);
+}
+
+static const struct interface_funcs socket_funcs = {
+	.write = writefd,
+	.read = readfd,
+	.can_write = socket_can_write,
+	.can_read = socket_can_read,
+};
+
+static void accept_connection(int sock)
+{
+	int fd;
+	struct connection *conn;
+
+	fd = accept(sock, NULL, NULL);
+	if (fd < 0)
+		return;
+
+	conn = new_connection(&socket_funcs);
+	if (conn) {
+		conn->fd = fd;
+		conn->id = dom0_domid;
+	} else
+		close(fd);
+}
+
+static void destroy_fds(void)
+{
+	if (sock >= 0)
+		close(sock);
+}
+
+static void init_sockets(void)
+{
+	struct sockaddr_un addr;
+	const char *soc_str = xenstore_daemon_path();
+
+	if (!soc_str)
+		barf_perror("Failed to obtain xs domain socket");
+
+	/* Create sockets for them to listen to. */
+	atexit(destroy_fds);
+	sock = socket(PF_UNIX, SOCK_STREAM, 0);
+	if (sock < 0)
+		barf_perror("Could not create socket");
+
+	/* FIXME: Be more sophisticated, don't mug running daemon. */
+	unlink(soc_str);
+
+	addr.sun_family = AF_UNIX;
+
+	if (strlen(soc_str) >= sizeof(addr.sun_path))
+		barf_perror("socket string '%s' too long", soc_str);
+	strcpy(addr.sun_path, soc_str);
+	if (bind(sock, (struct sockaddr *)&addr, sizeof(addr)) != 0)
+		barf_perror("Could not bind socket to %s", soc_str);
+
+	if (chmod(soc_str, 0600) != 0)
+		barf_perror("Could not chmod sockets");
+
+	if (listen(sock, 1) != 0)
+		barf_perror("Could not listen on sockets");
+}
+
+
+struct connection *add_socket_connection(int fd)
+{
+	struct connection *conn;
+
+	conn = new_connection(&socket_funcs);
+	if (!conn)
+		barf("error restoring connection");
+	conn->fd = fd;
+
+	return conn;
+}
+
 void early_init(bool live_update, bool dofork, const char *pidfile)
 {
 	reopen_log();
@@ -212,6 +353,9 @@ void set_special_fds(void)
 	if (reopen_log_pipe[0] != -1)
 		reopen_log_pipe0_pollfd_idx =
 			set_fd(reopen_log_pipe[0], POLLIN|POLLPRI);
+
+	if (sock != -1)
+		sock_pollfd_idx = set_fd(sock, POLLIN|POLLPRI);
 }
 
 void handle_special_fds(void)
@@ -230,6 +374,15 @@ void handle_special_fds(void)
 		}
 		reopen_log_pipe0_pollfd_idx = -1;
 	}
+
+	if (sock_pollfd_idx != -1) {
+		if (fds[sock_pollfd_idx].revents & ~POLLIN) {
+			barf_perror("sock poll failed");
+		} else if (fds[sock_pollfd_idx].revents & POLLIN) {
+			accept_connection(sock);
+			sock_pollfd_idx = -1;
+		}
+	}
 }
 
 void late_init(bool live_update)
-- 
2.35.3



From xen-devel-bounces@lists.xenproject.org Thu Jan 04 09:10:20 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 04 Jan 2024 09:10:20 +0000
Received: from list by lists.xenproject.org with outflank-mailman.661226.1030951 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLJk3-0008QR-T5; Thu, 04 Jan 2024 09:10:19 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 661226.1030951; Thu, 04 Jan 2024 09:10:19 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLJk3-0008QK-Pl; Thu, 04 Jan 2024 09:10:19 +0000
Received: by outflank-mailman (input) for mailman id 661226;
 Thu, 04 Jan 2024 09:10:18 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=4u2H=IO=suse.com=jgross@srs-se1.protection.inumbo.net>)
 id 1rLJcp-00085z-0J
 for xen-devel@lists.xenproject.org; Thu, 04 Jan 2024 09:02:51 +0000
Received: from smtp-out1.suse.de (smtp-out1.suse.de [195.135.223.130])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 096f51fa-aae0-11ee-98ef-6d05b1d4d9a1;
 Thu, 04 Jan 2024 10:02:50 +0100 (CET)
Received: from imap1.dmz-prg2.suse.org (imap1.dmz-prg2.suse.org [10.150.64.97])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
 (No client certificate requested)
 by smtp-out1.suse.de (Postfix) with ESMTPS id 1AB1121EE1;
 Thu,  4 Jan 2024 09:02:50 +0000 (UTC)
Received: from imap1.dmz-prg2.suse.org (localhost [127.0.0.1])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
 (No client certificate requested)
 by imap1.dmz-prg2.suse.org (Postfix) with ESMTPS id EA5E413722;
 Thu,  4 Jan 2024 09:02:49 +0000 (UTC)
Received: from dovecot-director2.suse.de ([2a07:de40:b281:106:10:150:64:167])
 by imap1.dmz-prg2.suse.org with ESMTPSA id gcMHODl0lmUfWQAAD6G6ig
 (envelope-from <jgross@suse.com>); Thu, 04 Jan 2024 09:02:49 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 096f51fa-aae0-11ee-98ef-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1704358970; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=/eJaaQzJFr9iaY84hbFZ6eF6VnkmvJwoY+5FWl4+J1Y=;
	b=gHkbmH218y0KMHOUNSXdUqKGLonH7D6XONOMfoCygBk+o9WiVnBd9twUa+LYfdx2fqc3gd
	TDa3LHwPa1rEKsFhxrsNNXs4XxS5Cvro14MSKiZKithqqSTuNbc706fJL3MjKuqlNnqA6s
	8/jY/cg1pp5uQOrBJGhXQJ2Gdo5AQ9A=
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1704358970; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=/eJaaQzJFr9iaY84hbFZ6eF6VnkmvJwoY+5FWl4+J1Y=;
	b=gHkbmH218y0KMHOUNSXdUqKGLonH7D6XONOMfoCygBk+o9WiVnBd9twUa+LYfdx2fqc3gd
	TDa3LHwPa1rEKsFhxrsNNXs4XxS5Cvro14MSKiZKithqqSTuNbc706fJL3MjKuqlNnqA6s
	8/jY/cg1pp5uQOrBJGhXQJ2Gdo5AQ9A=
From: Juergen Gross <jgross@suse.com>
To: xen-devel@lists.xenproject.org
Cc: Juergen Gross <jgross@suse.com>,
	Samuel Thibault <samuel.thibault@ens-lyon.org>,
	Jason Andryuk <jandryuk@gmail.com>
Subject: [PATCH v3 20/33] stubdom: extend xenstore stubdom configs
Date: Thu,  4 Jan 2024 10:00:42 +0100
Message-Id: <20240104090055.27323-21-jgross@suse.com>
X-Mailer: git-send-email 2.35.3
In-Reply-To: <20240104090055.27323-1-jgross@suse.com>
References: <20240104090055.27323-1-jgross@suse.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Authentication-Results: smtp-out1.suse.de;
	none
X-Spam-Level: ****
X-Spam-Score: 4.20
X-Spamd-Result: default: False [4.20 / 50.00];
	 ARC_NA(0.00)[];
	 RCVD_VIA_SMTP_AUTH(0.00)[];
	 FROM_HAS_DN(0.00)[];
	 RCPT_COUNT_THREE(0.00)[4];
	 FREEMAIL_ENVRCPT(0.00)[gmail.com];
	 R_MISSING_CHARSET(2.50)[];
	 MIME_GOOD(-0.10)[text/plain];
	 TO_MATCH_ENVRCPT_ALL(0.00)[];
	 REPLY(-4.00)[];
	 BROKEN_CONTENT_TYPE(1.50)[];
	 RCVD_COUNT_THREE(0.00)[3];
	 TO_DN_SOME(0.00)[];
	 DKIM_SIGNED(0.00)[suse.com:s=susede1];
	 NEURAL_HAM_SHORT(-0.20)[-1.000];
	 NEURAL_SPAM_LONG(3.50)[1.000];
	 MID_CONTAINS_FROM(1.00)[];
	 DBL_BLOCKED_OPENRESOLVER(0.00)[suse.com:email];
	 FUZZY_BLOCKED(0.00)[rspamd.com];
	 FROM_EQ_ENVFROM(0.00)[];
	 MIME_TRACE(0.00)[0:+];
	 FREEMAIL_CC(0.00)[suse.com,ens-lyon.org,gmail.com];
	 RCVD_TLS_ALL(0.00)[];
	 BAYES_HAM(-0.00)[41.34%]
X-Spam-Flag: NO

Extend the config files of the Xenstore stubdoms to include XENBUS
and 9PFRONT items in order to support file based logging.

Signed-off-by: Juergen Gross <jgross@suse.com>
Reviewed-by: Jason Andryuk <jandryuk@gmail.com>
---
 stubdom/xenstore-minios.cfg    | 2 +-
 stubdom/xenstorepvh-minios.cfg | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/stubdom/xenstore-minios.cfg b/stubdom/xenstore-minios.cfg
index a41704bb6b..239da519b9 100644
--- a/stubdom/xenstore-minios.cfg
+++ b/stubdom/xenstore-minios.cfg
@@ -3,7 +3,7 @@ CONFIG_NETFRONT=n
 CONFIG_FBFRONT=n
 CONFIG_KBDFRONT=n
 CONFIG_CONSFRONT=n
-CONFIG_XENBUS=n
 CONFIG_LWIP=n
+CONFIG_9PFRONT=y
 CONFIG_BALLOON=y
 XEN_INTERFACE_VERSION=__XEN_LATEST_INTERFACE_VERSION__
diff --git a/stubdom/xenstorepvh-minios.cfg b/stubdom/xenstorepvh-minios.cfg
index 6af51f5753..752b90d7d3 100644
--- a/stubdom/xenstorepvh-minios.cfg
+++ b/stubdom/xenstorepvh-minios.cfg
@@ -4,7 +4,7 @@ CONFIG_NETFRONT=n
 CONFIG_FBFRONT=n
 CONFIG_KBDFRONT=n
 CONFIG_CONSFRONT=n
-CONFIG_XENBUS=n
 CONFIG_LWIP=n
+CONFIG_9PFRONT=y
 CONFIG_BALLOON=y
 XEN_INTERFACE_VERSION=__XEN_LATEST_INTERFACE_VERSION__
-- 
2.35.3



From xen-devel-bounces@lists.xenproject.org Thu Jan 04 09:10:35 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 04 Jan 2024 09:10:35 +0000
Received: from list by lists.xenproject.org with outflank-mailman.661232.1030966 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLJkJ-0000Ub-GR; Thu, 04 Jan 2024 09:10:35 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 661232.1030966; Thu, 04 Jan 2024 09:10:35 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLJkJ-0000Tj-9e; Thu, 04 Jan 2024 09:10:35 +0000
Received: by outflank-mailman (input) for mailman id 661232;
 Thu, 04 Jan 2024 09:10:33 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=4u2H=IO=suse.com=jgross@srs-se1.protection.inumbo.net>)
 id 1rLJbx-00085z-SJ
 for xen-devel@lists.xenproject.org; Thu, 04 Jan 2024 09:01:57 +0000
Received: from smtp-out1.suse.de (smtp-out1.suse.de [195.135.223.130])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id e5202d3e-aadf-11ee-98ef-6d05b1d4d9a1;
 Thu, 04 Jan 2024 10:01:49 +0100 (CET)
Received: from imap1.dmz-prg2.suse.org (imap1.dmz-prg2.suse.org
 [IPv6:2a07:de40:b281:104:10:150:64:97])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
 (No client certificate requested)
 by smtp-out1.suse.de (Postfix) with ESMTPS id 437E621EE1;
 Thu,  4 Jan 2024 09:01:49 +0000 (UTC)
Received: from imap1.dmz-prg2.suse.org (localhost [127.0.0.1])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
 (No client certificate requested)
 by imap1.dmz-prg2.suse.org (Postfix) with ESMTPS id 1D66513722;
 Thu,  4 Jan 2024 09:01:49 +0000 (UTC)
Received: from dovecot-director2.suse.de ([2a07:de40:b281:106:10:150:64:167])
 by imap1.dmz-prg2.suse.org with ESMTPSA id aGjfBf1zlmXEWAAAD6G6ig
 (envelope-from <jgross@suse.com>); Thu, 04 Jan 2024 09:01:49 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: e5202d3e-aadf-11ee-98ef-6d05b1d4d9a1
From: Juergen Gross <jgross@suse.com>
To: xen-devel@lists.xenproject.org
Cc: Juergen Gross <jgross@suse.com>,
	Wei Liu <wl@xen.org>,
	Anthony PERARD <anthony.perard@citrix.com>
Subject: [PATCH v3 09/33] tools/xenlogd: add 9pfs walk request support
Date: Thu,  4 Jan 2024 10:00:31 +0100
Message-Id: <20240104090055.27323-10-jgross@suse.com>
X-Mailer: git-send-email 2.35.3
In-Reply-To: <20240104090055.27323-1-jgross@suse.com>
References: <20240104090055.27323-1-jgross@suse.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Spam-Level: 
X-Rspamd-Server: rspamd1.dmz-prg2.suse.org
X-Spam-Level: 
X-Spam-Flag: NO
X-Spamd-Result: default: False [-4.00 / 50.00];
	 REPLY(-4.00)[]
Authentication-Results: smtp-out1.suse.de;
	none
X-Spam-Score: -4.00
X-Rspamd-Queue-Id: 437E621EE1

Add the walk request of the 9pfs protocol.

Signed-off-by: Juergen Gross <jgross@suse.com>
---
V2:
- don't allow walking across symbolic links
---
 tools/xen-9pfsd/io.c        | 172 ++++++++++++++++++++++++++++++++++++
 tools/xen-9pfsd/xen-9pfsd.h |   1 +
 2 files changed, 173 insertions(+)

diff --git a/tools/xen-9pfsd/io.c b/tools/xen-9pfsd/io.c
index 241f0df5e2..8aff33fd38 100644
--- a/tools/xen-9pfsd/io.c
+++ b/tools/xen-9pfsd/io.c
@@ -28,9 +28,11 @@
 #define P9_CMD_VERSION    100
 #define P9_CMD_ATTACH     104
 #define P9_CMD_ERROR      107
+#define P9_CMD_WALK       110
 
 #define P9_MIN_MSIZE      2048
 #define P9_VERSION        "9P2000.u"
+#define P9_WALK_MAXELEM   16
 
 struct p9_qid {
     uint8_t type;
@@ -460,6 +462,21 @@ static struct p9_fid *find_fid(device *device, unsigned int fid)
     return NULL;
 }
 
+static struct p9_fid *get_fid_ref(device *device, unsigned int fid)
+{
+    struct p9_fid *fidp;
+
+    pthread_mutex_lock(&device->fid_mutex);
+
+    fidp = find_fid(device, fid);
+    if ( fidp )
+        fidp->ref++;
+
+    pthread_mutex_unlock(&device->fid_mutex);
+
+    return fidp;
+}
+
 static struct p9_fid *alloc_fid_mem(device *device, unsigned int fid,
                                     const char *path)
 {
@@ -563,6 +580,10 @@ static int fill_qid(device *device, const char *path, struct p9_qid *qid,
         stbuf = &st;
     }
 
+    /* Don't allow symbolic links. */
+    if ( S_ISLNK(stbuf->st_mode) )
+        return EMLINK;
+
     qid->type = S_ISDIR(stbuf->st_mode) ? QID_TYPE_DIR : 0;
     qid->version = stbuf->st_mtime ^ (stbuf->st_size << 8);
     qid->path = stbuf->st_ino;
@@ -570,6 +591,20 @@ static int fill_qid(device *device, const char *path, struct p9_qid *qid,
     return 0;
 }
 
+static bool name_ok(const char *str)
+{
+    if ( !*str )
+        return false;
+
+    if ( strchr(str, '/' ) )
+        return false;
+
+    if ( !strcmp(str, "..") || !strcmp(str, ".") )
+        return false;
+
+    return true;
+}
+
 static void p9_error(struct ring *ring, uint16_t tag, uint32_t err)
 {
     unsigned int erroff;
@@ -647,6 +682,139 @@ static void p9_attach(struct ring *ring, struct p9_header *hdr)
     fill_buffer(ring, hdr->cmd + 1, hdr->tag, "Q", &qid);
 }
 
+static void p9_walk(struct ring *ring, struct p9_header *hdr)
+{
+    device *device = ring->device;
+    uint32_t fid;
+    uint32_t newfid;
+    struct p9_fid *fidp = NULL;
+    struct p9_qid *qids = NULL;
+    unsigned int n_names = 0;
+    unsigned int *names = NULL;
+    unsigned int walked = 0;
+    unsigned int i;
+    char *path = NULL;
+    unsigned int path_len;
+    int ret;
+
+    ret = fill_data(ring, "UUaS", &fid, &newfid, &n_names, &names);
+    if ( n_names > P9_WALK_MAXELEM )
+    {
+        p9_error(ring, hdr->tag, EINVAL);
+        goto out;
+    }
+    if ( ret != 3 + n_names )
+    {
+        p9_error(ring, hdr->tag, errno);
+        goto out;
+    }
+
+    fidp = get_fid_ref(device, fid);
+    if ( !fidp )
+    {
+        p9_error(ring, hdr->tag, ENOENT);
+        goto out;
+    }
+    if ( fidp->opened )
+    {
+        p9_error(ring, hdr->tag, EINVAL);
+        goto out;
+    }
+
+    path_len = strlen(fidp->path) + 1;
+    for ( i = 0; i < n_names; i++ )
+    {
+        if ( !name_ok(ring->str + names[i]) )
+        {
+            p9_error(ring, hdr->tag, ENOENT);
+            goto out;
+        }
+        path_len += strlen(ring->str + names[i]) + 1;
+    }
+    path = calloc(path_len + 1, 1);
+    if ( !path )
+    {
+        p9_error(ring, hdr->tag, ENOMEM);
+        goto out;
+    }
+    strcpy(path, fidp->path);
+
+    if ( n_names )
+    {
+        qids = calloc(n_names, sizeof(*qids));
+        if ( !qids )
+        {
+            p9_error(ring, hdr->tag, ENOMEM);
+            goto out;
+        }
+        for ( i = 0; i < n_names; i++ )
+        {
+            if (strcmp(path, "/"))
+                strcat(path, "/");
+            strcat(path, ring->str + names[i]);
+            ret = fill_qid(device, path, qids + i, NULL);
+            if ( ret )
+            {
+                if ( !walked )
+                {
+                    p9_error(ring, hdr->tag, errno);
+                    goto out;
+                }
+                break;
+            }
+            walked++;
+        }
+    }
+
+    if ( walked == n_names )
+    {
+        bool ok = false;
+
+        if ( fid == newfid )
+        {
+            struct p9_fid *new_fidp;
+
+            pthread_mutex_lock(&device->fid_mutex);
+
+            if ( fidp->ref != 2 )
+            {
+                errno = EBUSY;
+            }
+            else
+            {
+                new_fidp = alloc_fid_mem(device, fid, path);
+                if ( new_fidp )
+                {
+                    new_fidp->ref = 2;
+                    XEN_TAILQ_REMOVE(&device->fids, fidp, list);
+                    XEN_TAILQ_INSERT_HEAD(&device->fids, new_fidp, list);
+                    free(fidp);
+                    fidp = new_fidp;
+                    ok = true;
+                }
+            }
+
+            pthread_mutex_unlock(&device->fid_mutex);
+        }
+        else
+            ok = alloc_fid(device, newfid, path);
+
+        if ( !ok )
+        {
+            p9_error(ring, hdr->tag, errno);
+            goto out;
+        }
+    }
+
+    fill_buffer(ring, hdr->cmd + 1, hdr->tag, "aQ", &walked, qids);
+
+ out:
+    free_fid(device, fidp);
+    free(qids);
+    free(path);
+    free(names);
+}
+
 void *io_thread(void *arg)
 {
     struct ring *ring = arg;
@@ -710,6 +878,10 @@ void *io_thread(void *arg)
                 p9_attach(ring, &hdr);
                 break;
 
+            case P9_CMD_WALK:
+                p9_walk(ring, &hdr);
+                break;
+
             default:
                 syslog(LOG_DEBUG, "%u.%u sent unhandled command %u\n",
                        ring->device->domid, ring->device->devid, hdr.cmd);
diff --git a/tools/xen-9pfsd/xen-9pfsd.h b/tools/xen-9pfsd/xen-9pfsd.h
index 6c755411a7..f01fffb0bb 100644
--- a/tools/xen-9pfsd/xen-9pfsd.h
+++ b/tools/xen-9pfsd/xen-9pfsd.h
@@ -25,6 +25,7 @@ struct p9_fid {
     XEN_TAILQ_ENTRY(struct p9_fid) list;
     unsigned int fid;
     unsigned int ref;
+    bool opened;
     char path[];
 };
 
-- 
2.35.3



From xen-devel-bounces@lists.xenproject.org Thu Jan 04 09:10:36 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 04 Jan 2024 09:10:36 +0000
Received: from list by lists.xenproject.org with outflank-mailman.661231.1030961 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLJkJ-0000RU-50; Thu, 04 Jan 2024 09:10:35 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 661231.1030961; Thu, 04 Jan 2024 09:10:35 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLJkJ-0000RL-1Q; Thu, 04 Jan 2024 09:10:35 +0000
Received: by outflank-mailman (input) for mailman id 661231;
 Thu, 04 Jan 2024 09:10:33 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=4u2H=IO=suse.com=jgross@srs-se1.protection.inumbo.net>)
 id 1rLJdt-00085z-OW
 for xen-devel@lists.xenproject.org; Thu, 04 Jan 2024 09:03:57 +0000
Received: from smtp-out1.suse.de (smtp-out1.suse.de [195.135.223.130])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 312a8c3b-aae0-11ee-98ef-6d05b1d4d9a1;
 Thu, 04 Jan 2024 10:03:57 +0100 (CET)
Received: from imap1.dmz-prg2.suse.org (imap1.dmz-prg2.suse.org [10.150.64.97])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
 (No client certificate requested)
 by smtp-out1.suse.de (Postfix) with ESMTPS id 9F63321EE1;
 Thu,  4 Jan 2024 09:03:56 +0000 (UTC)
Received: from imap1.dmz-prg2.suse.org (localhost [127.0.0.1])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
 (No client certificate requested)
 by imap1.dmz-prg2.suse.org (Postfix) with ESMTPS id 7099813722;
 Thu,  4 Jan 2024 09:03:56 +0000 (UTC)
Received: from dovecot-director2.suse.de ([2a07:de40:b281:106:10:150:64:167])
 by imap1.dmz-prg2.suse.org with ESMTPSA id BBBBGnx0lmV7WQAAD6G6ig
 (envelope-from <jgross@suse.com>); Thu, 04 Jan 2024 09:03:56 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 312a8c3b-aae0-11ee-98ef-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1704359036; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=e42eKBZw7TAPTT4+EA67aOP59NBUobdQXn2DchzlAu4=;
	b=PHmDFHRLAvyx6DSPcrHLKIRnd/XR7onewPSypyD6VA0sxd11fpqBGDjlaNIvBEaSpALOLe
	Y98ZmUcPv1Mr6K7gLT76HRyrA4f/iENOQvJG5mMV1GiO36oI8bLeYTlsMHvIrxQO5MuNhy
	gY7tsHYPgWLUkuW9OvKrnCpYBiQ/F0I=
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1704359036; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=e42eKBZw7TAPTT4+EA67aOP59NBUobdQXn2DchzlAu4=;
	b=PHmDFHRLAvyx6DSPcrHLKIRnd/XR7onewPSypyD6VA0sxd11fpqBGDjlaNIvBEaSpALOLe
	Y98ZmUcPv1Mr6K7gLT76HRyrA4f/iENOQvJG5mMV1GiO36oI8bLeYTlsMHvIrxQO5MuNhy
	gY7tsHYPgWLUkuW9OvKrnCpYBiQ/F0I=
From: Juergen Gross <jgross@suse.com>
To: xen-devel@lists.xenproject.org
Cc: Juergen Gross <jgross@suse.com>,
	Wei Liu <wl@xen.org>,
	Anthony PERARD <anthony.perard@citrix.com>,
	Julien Grall <julien@xen.org>,
	Jason Andryuk <jandryuk@gmail.com>
Subject: [PATCH v3 32/33] tools/xenstored: support complete log capabilities in stubdom
Date: Thu,  4 Jan 2024 10:00:54 +0100
Message-Id: <20240104090055.27323-33-jgross@suse.com>
X-Mailer: git-send-email 2.35.3
In-Reply-To: <20240104090055.27323-1-jgross@suse.com>
References: <20240104090055.27323-1-jgross@suse.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Authentication-Results: smtp-out1.suse.de;
	none
X-Spam-Level: *
X-Spam-Score: 1.20
X-Spamd-Result: default: False [1.20 / 50.00];
	 ARC_NA(0.00)[];
	 RCVD_VIA_SMTP_AUTH(0.00)[];
	 FROM_HAS_DN(0.00)[];
	 TO_DN_SOME(0.00)[];
	 FREEMAIL_ENVRCPT(0.00)[gmail.com];
	 R_MISSING_CHARSET(2.50)[];
	 MIME_GOOD(-0.10)[text/plain];
	 TO_MATCH_ENVRCPT_ALL(0.00)[];
	 REPLY(-4.00)[];
	 BROKEN_CONTENT_TYPE(1.50)[];
	 RCPT_COUNT_FIVE(0.00)[6];
	 RCVD_COUNT_THREE(0.00)[3];
	 DKIM_SIGNED(0.00)[suse.com:s=susede1];
	 NEURAL_HAM_SHORT(-0.20)[-1.000];
	 NEURAL_SPAM_LONG(3.50)[1.000];
	 MID_CONTAINS_FROM(1.00)[];
	 DBL_BLOCKED_OPENRESOLVER(0.00)[suse.com:email];
	 FUZZY_BLOCKED(0.00)[rspamd.com];
	 FROM_EQ_ENVFROM(0.00)[];
	 MIME_TRACE(0.00)[0:+];
	 FREEMAIL_CC(0.00)[suse.com,xen.org,citrix.com,gmail.com];
	 RCVD_TLS_ALL(0.00)[];
	 BAYES_HAM(-3.00)[100.00%]
X-Spam-Flag: NO

With 9pfs being fully available in Xenstore-stubdom now, there is no
reason to not fully support all logging capabilities in stubdom.

Open the logfile on stubdom only after the 9pfs file system has been
mounted.

Signed-off-by: Juergen Gross <jgross@suse.com>
Reviewed-by: Jason Andryuk <jandryuk@gmail.com>
---
V3:
- remove now stale comment in sysconfig.xencommons.in (Julien Grall)
---
 .../Linux/init.d/sysconfig.xencommons.in      |  1 -
 tools/hotplug/Linux/launch-xenstore.in        |  1 +
 tools/xenstored/control.c                     | 30 +++++++++----------
 tools/xenstored/minios.c                      |  3 ++
 4 files changed, 19 insertions(+), 16 deletions(-)

diff --git a/tools/hotplug/Linux/init.d/sysconfig.xencommons.in b/tools/hotplug/Linux/init.d/sysconfig.xencommons.in
index 433e4849af..1bdd830d8a 100644
--- a/tools/hotplug/Linux/init.d/sysconfig.xencommons.in
+++ b/tools/hotplug/Linux/init.d/sysconfig.xencommons.in
@@ -58,7 +58,6 @@ XENSTORED_ARGS=
 ## Default: Not defined, tracing off
 #
 # Log xenstored messages
-# Only evaluated if XENSTORETYPE is "daemon".
 #XENSTORED_TRACE=[yes|on|1]
 
 ## Type: integer
diff --git a/tools/hotplug/Linux/launch-xenstore.in b/tools/hotplug/Linux/launch-xenstore.in
index e854ca1eb8..da4eeca7c5 100644
--- a/tools/hotplug/Linux/launch-xenstore.in
+++ b/tools/hotplug/Linux/launch-xenstore.in
@@ -98,6 +98,7 @@ test -f @CONFIG_DIR@/@CONFIG_LEAF_DIR@/xencommons && . @CONFIG_DIR@/@CONFIG_LEAF
 	[ -z "$XENSTORE_DOMAIN_SIZE" ] && XENSTORE_DOMAIN_SIZE=8
 	XENSTORE_DOMAIN_ARGS="$XENSTORE_DOMAIN_ARGS --memory $XENSTORE_DOMAIN_SIZE"
 	[ -z "$XENSTORE_MAX_DOMAIN_SIZE" ] || XENSTORE_DOMAIN_ARGS="$XENSTORE_DOMAIN_ARGS --maxmem $XENSTORE_MAX_DOMAIN_SIZE"
+	[ -z "$XENSTORED_TRACE" ] || XENSTORE_DOMAIN_ARGS="$XENSTORE_DOMAIN_ARGS -T xenstored-trace.log"
 
 	echo -n Starting $XENSTORE_DOMAIN_KERNEL...
 	${LIBEXEC_BIN}/init-xenstore-domain $XENSTORE_DOMAIN_ARGS || exit 1
diff --git a/tools/xenstored/control.c b/tools/xenstored/control.c
index b2f64d674f..dae23a5ac0 100644
--- a/tools/xenstored/control.c
+++ b/tools/xenstored/control.c
@@ -201,19 +201,6 @@ static int do_control_quota_s(const void *ctx, struct connection *conn,
 	return EINVAL;
 }
 
-#ifdef __MINIOS__
-static int do_control_memreport(const void *ctx, struct connection *conn,
-				const char **vec, int num)
-{
-	if (num)
-		return EINVAL;
-
-	talloc_report_full(NULL, stdout);
-
-	send_ack(conn, XS_CONTROL);
-	return 0;
-}
-#else
 static int do_control_logfile(const void *ctx, struct connection *conn,
 			      const char **vec, int num)
 {
@@ -222,13 +209,26 @@ static int do_control_logfile(const void *ctx, struct connection *conn,
 
 	close_log();
 	talloc_free(tracefile);
-	tracefile = talloc_strdup(NULL, vec[0]);
+	tracefile = absolute_filename(NULL, vec[0]);
 	reopen_log();
 
 	send_ack(conn, XS_CONTROL);
 	return 0;
 }
 
+#ifdef __MINIOS__
+static int do_control_memreport(const void *ctx, struct connection *conn,
+				const char **vec, int num)
+{
+	if (num)
+		return EINVAL;
+
+	talloc_report_full(NULL, stdout);
+
+	send_ack(conn, XS_CONTROL);
+	return 0;
+}
+#else
 static int do_control_memreport(const void *ctx, struct connection *conn,
 				const char **vec, int num)
 {
@@ -309,10 +309,10 @@ static struct cmd_s cmds[] = {
 		"[-c <cmdline>] [-F] [-t <timeout>] <file>\n"
 		"    Default timeout is 60 seconds.", 5 },
 #endif
+	{ "logfile", do_control_logfile, "<file>" },
 #ifdef __MINIOS__
 	{ "memreport", do_control_memreport, "" },
 #else
-	{ "logfile", do_control_logfile, "<file>" },
 	{ "memreport", do_control_memreport, "[<file>]" },
 #endif
 	{ "print", do_control_print, "<string>" },
diff --git a/tools/xenstored/minios.c b/tools/xenstored/minios.c
index 24fc3150b7..3f3c4b5bc0 100644
--- a/tools/xenstored/minios.c
+++ b/tools/xenstored/minios.c
@@ -113,6 +113,9 @@ static void mount_thread(void *p)
 	}
 
 	p9_device = init_9pfront(0, XENSTORE_LIB_DIR);
+
+	/* Start logging if selected. */
+	reopen_log();
 }
 
 void mount_9pfs(void)
-- 
2.35.3



From xen-devel-bounces@lists.xenproject.org Thu Jan 04 09:10:46 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 04 Jan 2024 09:10:46 +0000
Received: from list by lists.xenproject.org with outflank-mailman.661237.1030981 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLJkT-0001Gm-Ue; Thu, 04 Jan 2024 09:10:45 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 661237.1030981; Thu, 04 Jan 2024 09:10:45 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLJkT-0001Gb-Pc; Thu, 04 Jan 2024 09:10:45 +0000
Received: by outflank-mailman (input) for mailman id 661237;
 Thu, 04 Jan 2024 09:10:44 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=4u2H=IO=suse.com=jgross@srs-se1.protection.inumbo.net>)
 id 1rLJdM-00085z-DL
 for xen-devel@lists.xenproject.org; Thu, 04 Jan 2024 09:03:24 +0000
Received: from smtp-out1.suse.de (smtp-out1.suse.de [195.135.223.130])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 1d428195-aae0-11ee-98ef-6d05b1d4d9a1;
 Thu, 04 Jan 2024 10:03:23 +0100 (CET)
Received: from imap1.dmz-prg2.suse.org (imap1.dmz-prg2.suse.org [10.150.64.97])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
 (No client certificate requested)
 by smtp-out1.suse.de (Postfix) with ESMTPS id 46D4F21EE1;
 Thu,  4 Jan 2024 09:03:23 +0000 (UTC)
Received: from imap1.dmz-prg2.suse.org (localhost [127.0.0.1])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
 (No client certificate requested)
 by imap1.dmz-prg2.suse.org (Postfix) with ESMTPS id 1D5F213722;
 Thu,  4 Jan 2024 09:03:23 +0000 (UTC)
Received: from dovecot-director2.suse.de ([2a07:de40:b281:106:10:150:64:167])
 by imap1.dmz-prg2.suse.org with ESMTPSA id UID0BVt0lmVOWQAAD6G6ig
 (envelope-from <jgross@suse.com>); Thu, 04 Jan 2024 09:03:23 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 1d428195-aae0-11ee-98ef-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1704359003; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=PRwkEgUlvhygA2ICPfUBXzv+stFJ1TKHPnwBlk1TeGM=;
	b=QVOpiHqAsreGoPLztZ/HrswmhEh1C1Zswv9NFUuJkfyIfyX6LSJvfuQ2yrKNknn7wa7MN9
	cAaqTt42rwbzJkhGyqvVNyfwef/+HNfPxOQ1grfNR61UBZKeewnAXOjymmLsc9BQRiBuF9
	QQU8K26TLOUwpcYJoRMbWUueXGz5ABE=
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1704359003; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=PRwkEgUlvhygA2ICPfUBXzv+stFJ1TKHPnwBlk1TeGM=;
	b=QVOpiHqAsreGoPLztZ/HrswmhEh1C1Zswv9NFUuJkfyIfyX6LSJvfuQ2yrKNknn7wa7MN9
	cAaqTt42rwbzJkhGyqvVNyfwef/+HNfPxOQ1grfNR61UBZKeewnAXOjymmLsc9BQRiBuF9
	QQU8K26TLOUwpcYJoRMbWUueXGz5ABE=
From: Juergen Gross <jgross@suse.com>
To: xen-devel@lists.xenproject.org
Cc: Juergen Gross <jgross@suse.com>,
	Wei Liu <wl@xen.org>,
	Julien Grall <julien@xen.org>,
	Anthony PERARD <anthony.perard@citrix.com>
Subject: [PATCH v3 26/33] tools/xenstored: get own domid in stubdom case
Date: Thu,  4 Jan 2024 10:00:48 +0100
Message-Id: <20240104090055.27323-27-jgross@suse.com>
X-Mailer: git-send-email 2.35.3
In-Reply-To: <20240104090055.27323-1-jgross@suse.com>
References: <20240104090055.27323-1-jgross@suse.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Authentication-Results: smtp-out1.suse.de;
	none
X-Spam-Level: ****
X-Spam-Score: 4.20
X-Spamd-Result: default: False [4.20 / 50.00];
	 ARC_NA(0.00)[];
	 RCVD_VIA_SMTP_AUTH(0.00)[];
	 FROM_HAS_DN(0.00)[];
	 TO_DN_SOME(0.00)[];
	 R_MISSING_CHARSET(2.50)[];
	 TO_MATCH_ENVRCPT_ALL(0.00)[];
	 MIME_GOOD(-0.10)[text/plain];
	 REPLY(-4.00)[];
	 BROKEN_CONTENT_TYPE(1.50)[];
	 RCPT_COUNT_FIVE(0.00)[5];
	 RCVD_COUNT_THREE(0.00)[3];
	 DKIM_SIGNED(0.00)[suse.com:s=susede1];
	 NEURAL_HAM_SHORT(-0.20)[-1.000];
	 NEURAL_SPAM_LONG(3.50)[1.000];
	 MID_CONTAINS_FROM(1.00)[];
	 DBL_BLOCKED_OPENRESOLVER(0.00)[suse.com:email];
	 FUZZY_BLOCKED(0.00)[rspamd.com];
	 FROM_EQ_ENVFROM(0.00)[];
	 MIME_TRACE(0.00)[0:+];
	 RCVD_TLS_ALL(0.00)[]
X-Spam-Flag: NO

Obtain the own domid when running as stubdom.

Signed-off-by: Juergen Gross <jgross@suse.com>
---
V2:
- replacement of V1 patch (Andrew Cooper)
V3:
- rename called function to get_domid() (Julien Grall)
- change stub_domid type to domid_t (Julien Grall)
---
 tools/xenstored/core.c   | 1 +
 tools/xenstored/core.h   | 1 +
 tools/xenstored/minios.c | 4 ++++
 3 files changed, 6 insertions(+)

diff --git a/tools/xenstored/core.c b/tools/xenstored/core.c
index 8ff1faccef..edb2ab97b8 100644
--- a/tools/xenstored/core.c
+++ b/tools/xenstored/core.c
@@ -2559,6 +2559,7 @@ static struct option options[] = {
 int dom0_domid = 0;
 int dom0_event = 0;
 int priv_domid = 0;
+domid_t stub_domid = DOMID_INVALID;
 
 static unsigned int get_optval_uint(const char *arg)
 {
diff --git a/tools/xenstored/core.h b/tools/xenstored/core.h
index ddc345050c..a20c7ee3a0 100644
--- a/tools/xenstored/core.h
+++ b/tools/xenstored/core.h
@@ -363,6 +363,7 @@ do {						\
 extern int dom0_domid;
 extern int dom0_event;
 extern int priv_domid;
+extern domid_t stub_domid;
 extern bool keep_orphans;
 
 extern struct pollfd *fds;
diff --git a/tools/xenstored/minios.c b/tools/xenstored/minios.c
index 5d59cc90cc..38a51e671a 100644
--- a/tools/xenstored/minios.c
+++ b/tools/xenstored/minios.c
@@ -20,6 +20,7 @@
 #include "core.h"
 #include "utils.h"
 #include <xen/grant_table.h>
+#include <mini-os/lib.h>
 
 void finish_daemonize(void)
 {
@@ -48,6 +49,9 @@ void unmap_xenbus(void *interface)
 
 void early_init(bool live_update, bool dofork, const char *pidfile)
 {
+	stub_domid = get_domid();
+	if (stub_domid == DOMID_INVALID)
+		barf("could not get own domid");
 }
 
 void late_init(bool live_update)
-- 
2.35.3



From xen-devel-bounces@lists.xenproject.org Thu Jan 04 09:11:18 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 04 Jan 2024 09:11:18 +0000
Received: from list by lists.xenproject.org with outflank-mailman.661255.1030991 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLJl0-0002MJ-6g; Thu, 04 Jan 2024 09:11:18 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 661255.1030991; Thu, 04 Jan 2024 09:11:18 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLJl0-0002MA-45; Thu, 04 Jan 2024 09:11:18 +0000
Received: by outflank-mailman (input) for mailman id 661255;
 Thu, 04 Jan 2024 09:11:17 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=4u2H=IO=suse.com=jgross@srs-se1.protection.inumbo.net>)
 id 1rLJdB-00085z-8T
 for xen-devel@lists.xenproject.org; Thu, 04 Jan 2024 09:03:13 +0000
Received: from smtp-out1.suse.de (smtp-out1.suse.de [195.135.223.130])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 1695d1a6-aae0-11ee-98ef-6d05b1d4d9a1;
 Thu, 04 Jan 2024 10:03:12 +0100 (CET)
Received: from imap1.dmz-prg2.suse.org (imap1.dmz-prg2.suse.org
 [IPv6:2a07:de40:b281:104:10:150:64:97])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
 (No client certificate requested)
 by smtp-out1.suse.de (Postfix) with ESMTPS id 3D54621EE1;
 Thu,  4 Jan 2024 09:03:12 +0000 (UTC)
Received: from imap1.dmz-prg2.suse.org (localhost [127.0.0.1])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
 (No client certificate requested)
 by imap1.dmz-prg2.suse.org (Postfix) with ESMTPS id 1272F13722;
 Thu,  4 Jan 2024 09:03:12 +0000 (UTC)
Received: from dovecot-director2.suse.de ([2a07:de40:b281:106:10:150:64:167])
 by imap1.dmz-prg2.suse.org with ESMTPSA id VRIuA1B0lmVAWQAAD6G6ig
 (envelope-from <jgross@suse.com>); Thu, 04 Jan 2024 09:03:12 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 1695d1a6-aae0-11ee-98ef-6d05b1d4d9a1
From: Juergen Gross <jgross@suse.com>
To: xen-devel@lists.xenproject.org
Cc: Juergen Gross <jgross@suse.com>,
	Wei Liu <wl@xen.org>,
	Julien Grall <julien@xen.org>,
	Anthony PERARD <anthony.perard@citrix.com>
Subject: [PATCH v3 24/33] tools/xenstored: move all log-pipe handling into posix.c
Date: Thu,  4 Jan 2024 10:00:46 +0100
Message-Id: <20240104090055.27323-25-jgross@suse.com>
X-Mailer: git-send-email 2.35.3
In-Reply-To: <20240104090055.27323-1-jgross@suse.com>
References: <20240104090055.27323-1-jgross@suse.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Spam-Level: 
X-Spam-Level: 
Authentication-Results: smtp-out1.suse.de;
	none
X-Rspamd-Server: rspamd2.dmz-prg2.suse.org
X-Spamd-Result: default: False [-4.00 / 50.00];
	 REPLY(-4.00)[]
X-Spam-Score: -4.00
X-Rspamd-Queue-Id: 3D54621EE1
X-Spam-Flag: NO

All of the log-pipe handling is needed only when running as daemon.

Move it into posix.c. This requires to have a service function in the
main event loop for handling the related requests and one for setting
the fds[] array. Use a generic name for those functions, as socket
handling can be added to them later, too.

Signed-off-by: Juergen Gross <jgross@suse.com>
---
V3:
- new patch
---
 tools/xenstored/core.c   | 41 ++++-------------------------------
 tools/xenstored/core.h   | 11 ++++++----
 tools/xenstored/minios.c | 14 ++++++------
 tools/xenstored/posix.c  | 46 +++++++++++++++++++++++++++++++++++++++-
 4 files changed, 64 insertions(+), 48 deletions(-)

diff --git a/tools/xenstored/core.c b/tools/xenstored/core.c
index 7b5e1d0c0f..650c1d1574 100644
--- a/tools/xenstored/core.c
+++ b/tools/xenstored/core.c
@@ -56,7 +56,7 @@
 
 extern xenevtchn_handle *xce_handle; /* in domain.c */
 static int xce_pollfd_idx = -1;
-static struct pollfd *fds;
+struct pollfd *fds;
 static unsigned int current_array_size;
 static unsigned int nr_fds;
 static unsigned int delayed_requests;
@@ -69,8 +69,6 @@ char **orig_argv;
 LIST_HEAD(connections);
 int tracefd = -1;
 bool keep_orphans = false;
-int reopen_log_pipe[2];
-static int reopen_log_pipe0_pollfd_idx = -1;
 char *tracefile = NULL;
 static struct hashtable *nodes;
 unsigned int trace_flags = TRACE_OBJ | TRACE_IO;
@@ -145,18 +143,6 @@ void trace_destroy(const void *data, const char *type)
 		trace("obj: DESTROY %s %p\n", type, data);
 }
 
-/**
- * Signal handler for SIGHUP, which requests that the trace log is reopened
- * (in the main loop).  A single byte is written to reopen_log_pipe, to awaken
- * the poll() in the main loop.
- */
-static void trigger_reopen_log(int signal __attribute__((unused)))
-{
-	char c = 'A';
-	int dummy;
-	dummy = write(reopen_log_pipe[1], &c, 1);
-}
-
 void close_log(void)
 {
 	if (tracefd >= 0)
@@ -467,7 +453,7 @@ static bool conn_can_write(struct connection *conn)
 }
 
 /* This function returns index inside the array if succeed, -1 if fail */
-static int set_fd(int fd, short events)
+int set_fd(int fd, short events)
 {
 	int ret;
 	if (current_array_size < nr_fds + 1) {
@@ -512,11 +498,9 @@ static void initialize_fds(int *p_sock_pollfd_idx, int *ptimeout)
 	/* In case of delayed requests pause for max 1 second. */
 	*ptimeout = delayed_requests ? 1000 : -1;
 
+	set_special_fds();
 	if (sock != -1)
 		*p_sock_pollfd_idx = set_fd(sock, POLLIN|POLLPRI);
-	if (reopen_log_pipe[0] != -1)
-		reopen_log_pipe0_pollfd_idx =
-			set_fd(reopen_log_pipe[0], POLLIN|POLLPRI);
 
 	if (xce_handle != NULL)
 		xce_pollfd_idx = set_fd(xenevtchn_fd(xce_handle),
@@ -2897,8 +2881,6 @@ int main(int argc, char *argv[])
 
 	talloc_enable_null_tracking();
 
-	init_pipe(reopen_log_pipe);
-
 	/* Listen to hypervisor. */
 	if (!live_update) {
 		domain_init(-1);
@@ -2913,7 +2895,6 @@ int main(int argc, char *argv[])
 		xprintf = trace;
 #endif
 
-	signal(SIGHUP, trigger_reopen_log);
 	if (tracefile)
 		tracefile = talloc_strdup(NULL, tracefile);
 
@@ -2940,21 +2921,7 @@ int main(int argc, char *argv[])
 			barf_perror("Poll failed");
 		}
 
-		if (reopen_log_pipe0_pollfd_idx != -1) {
-			if (fds[reopen_log_pipe0_pollfd_idx].revents
-			    & ~POLLIN) {
-				close(reopen_log_pipe[0]);
-				close(reopen_log_pipe[1]);
-				init_pipe(reopen_log_pipe);
-			} else if (fds[reopen_log_pipe0_pollfd_idx].revents
-				   & POLLIN) {
-				char c;
-				if (read(reopen_log_pipe[0], &c, 1) != 1)
-					barf_perror("read failed");
-				reopen_log();
-			}
-			reopen_log_pipe0_pollfd_idx = -1;
-		}
+		handle_special_fds();
 
 		if (sock_pollfd_idx != -1) {
 			if (fds[sock_pollfd_idx].revents & ~POLLIN) {
diff --git a/tools/xenstored/core.h b/tools/xenstored/core.h
index 0de2d8a26e..6944f48719 100644
--- a/tools/xenstored/core.h
+++ b/tools/xenstored/core.h
@@ -25,6 +25,7 @@
 #include <sys/types.h>
 #include <dirent.h>
 #include <fcntl.h>
+#include <poll.h>
 #include <stdbool.h>
 #include <stdint.h>
 #include <time.h>
@@ -361,6 +362,8 @@ extern int dom0_event;
 extern int priv_domid;
 extern bool keep_orphans;
 
+extern struct pollfd *fds;
+
 extern unsigned int timeout_watch_event_msec;
 
 /* Get internal time in milliseconds. */
@@ -387,15 +390,15 @@ evtchn_port_t get_xenbus_evtchn(void);
 void early_init(bool live_update, bool dofork, const char *pidfile);
 void late_init(bool live_update);
 
+int set_fd(int fd, short events);
+void set_special_fds(void);
+void handle_special_fds(void);
+
 void init_sockets(void);
-extern int reopen_log_pipe[2];
 
 /* Close stdin/stdout/stderr to complete daemonize */
 void finish_daemonize(void);
 
-/* Open a pipe for signal handling */
-void init_pipe(int reopen_log_pipe[2]);
-
 #ifndef NO_SOCKETS
 extern const struct interface_funcs socket_funcs;
 #endif
diff --git a/tools/xenstored/minios.c b/tools/xenstored/minios.c
index 45bb0440be..3208169187 100644
--- a/tools/xenstored/minios.c
+++ b/tools/xenstored/minios.c
@@ -24,12 +24,6 @@ void finish_daemonize(void)
 {
 }
 
-void init_pipe(int reopen_log_pipe[2])
-{
-	reopen_log_pipe[0] = -1;
-	reopen_log_pipe[1] = -1;
-}
-
 evtchn_port_t get_xenbus_evtchn(void)
 {
 	return dom0_event;
@@ -53,3 +47,11 @@ void early_init(bool live_update, bool dofork, const char *pidfile)
 void late_init(bool live_update)
 {
 }
+
+void set_special_fds(void)
+{
+}
+
+void handle_special_fds(void)
+{
+}
diff --git a/tools/xenstored/posix.c b/tools/xenstored/posix.c
index 97c8dcaba3..2dbbef4a0b 100644
--- a/tools/xenstored/posix.c
+++ b/tools/xenstored/posix.c
@@ -33,6 +33,9 @@
 #include "core.h"
 #include "osdep.h"
 
+static int reopen_log_pipe0_pollfd_idx = -1;
+static int reopen_log_pipe[2];
+
 static void write_pidfile(const char *pidfile)
 {
 	char buf[100];
@@ -82,6 +85,19 @@ static void daemonize(void)
 	umask(0);
 }
 
+/*
+ * Signal handler for SIGHUP, which requests that the trace log is reopened
+ * (in the main loop).  A single byte is written to reopen_log_pipe, to awaken
+ * the poll() in the main loop.
+ */
+static void trigger_reopen_log(int signal __attribute__((unused)))
+{
+	char c = 'A';
+	int dummy;
+
+	dummy = write(reopen_log_pipe[1], &c, 1);
+}
+
 void finish_daemonize(void)
 {
 	int devnull = open("/dev/null", O_RDWR);
@@ -93,7 +109,7 @@ void finish_daemonize(void)
 	close(devnull);
 }
 
-void init_pipe(int reopen_log_pipe[2])
+static void init_pipe(void)
 {
 	int flags;
 	unsigned int i;
@@ -183,9 +199,37 @@ void early_init(bool live_update, bool dofork, const char *pidfile)
 
 	/* Don't kill us with SIGPIPE. */
 	signal(SIGPIPE, SIG_IGN);
+	signal(SIGHUP, trigger_reopen_log);
 
 	if (!live_update)
 		init_sockets();
+
+	init_pipe();
+}
+
+void set_special_fds(void)
+{
+	if (reopen_log_pipe[0] != -1)
+		reopen_log_pipe0_pollfd_idx =
+			set_fd(reopen_log_pipe[0], POLLIN|POLLPRI);
+}
+
+void handle_special_fds(void)
+{
+	if (reopen_log_pipe0_pollfd_idx != -1) {
+		if (fds[reopen_log_pipe0_pollfd_idx].revents & ~POLLIN) {
+			close(reopen_log_pipe[0]);
+			close(reopen_log_pipe[1]);
+			init_pipe();
+		} else if (fds[reopen_log_pipe0_pollfd_idx].revents & POLLIN) {
+			char c;
+
+			if (read(reopen_log_pipe[0], &c, 1) != 1)
+				barf_perror("read failed");
+			reopen_log();
+		}
+		reopen_log_pipe0_pollfd_idx = -1;
+	}
 }
 
 void late_init(bool live_update)
-- 
2.35.3



From xen-devel-bounces@lists.xenproject.org Thu Jan 04 09:12:27 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 04 Jan 2024 09:12:27 +0000
Received: from list by lists.xenproject.org with outflank-mailman.661273.1031000 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLJm6-0003Er-G2; Thu, 04 Jan 2024 09:12:26 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 661273.1031000; Thu, 04 Jan 2024 09:12:26 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLJm6-0003Ek-DC; Thu, 04 Jan 2024 09:12:26 +0000
Received: by outflank-mailman (input) for mailman id 661273;
 Thu, 04 Jan 2024 09:12:25 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=4u2H=IO=suse.com=jgross@srs-se1.protection.inumbo.net>)
 id 1rLJd0-00085z-4d
 for xen-devel@lists.xenproject.org; Thu, 04 Jan 2024 09:03:02 +0000
Received: from smtp-out2.suse.de (smtp-out2.suse.de [195.135.223.131])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 10047a47-aae0-11ee-98ef-6d05b1d4d9a1;
 Thu, 04 Jan 2024 10:03:01 +0100 (CET)
Received: from imap1.dmz-prg2.suse.org (imap1.dmz-prg2.suse.org
 [IPv6:2a07:de40:b281:104:10:150:64:97])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
 (No client certificate requested)
 by smtp-out2.suse.de (Postfix) with ESMTPS id 38B011F7F8;
 Thu,  4 Jan 2024 09:03:01 +0000 (UTC)
Received: from imap1.dmz-prg2.suse.org (localhost [127.0.0.1])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
 (No client certificate requested)
 by imap1.dmz-prg2.suse.org (Postfix) with ESMTPS id 0523813722;
 Thu,  4 Jan 2024 09:03:01 +0000 (UTC)
Received: from dovecot-director2.suse.de ([2a07:de40:b281:106:10:150:64:167])
 by imap1.dmz-prg2.suse.org with ESMTPSA id BooHAEV0lmUrWQAAD6G6ig
 (envelope-from <jgross@suse.com>); Thu, 04 Jan 2024 09:03:01 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 10047a47-aae0-11ee-98ef-6d05b1d4d9a1
From: Juergen Gross <jgross@suse.com>
To: xen-devel@lists.xenproject.org
Cc: Juergen Gross <jgross@suse.com>,
	Wei Liu <wl@xen.org>,
	Julien Grall <julien@xen.org>,
	Anthony PERARD <anthony.perard@citrix.com>
Subject: [PATCH v3 22/33] tools/xenstored: add early_init() function
Date: Thu,  4 Jan 2024 10:00:44 +0100
Message-Id: <20240104090055.27323-23-jgross@suse.com>
X-Mailer: git-send-email 2.35.3
In-Reply-To: <20240104090055.27323-1-jgross@suse.com>
References: <20240104090055.27323-1-jgross@suse.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Spam-Level: 
X-Spam-Level: 
Authentication-Results: smtp-out2.suse.de;
	none
X-Rspamd-Server: rspamd2.dmz-prg2.suse.org
X-Spamd-Result: default: False [-4.00 / 50.00];
	 REPLY(-4.00)[]
X-Spam-Score: -4.00
X-Rspamd-Queue-Id: 38B011F7F8
X-Spam-Flag: NO

Some xenstored initialization needs to be done in the daemon case only,
so split it out into a new early_init() function being a stub in the
stubdom case.

Remove the call of talloc_enable_leak_report_full(), as it serves no
real purpose: the daemon only ever exits due to a crash, in which case
a log of talloc()ed memory hardly has any value.

Signed-off-by: Juergen Gross <jgross@suse.com>
---
V2:
- rename function
- move patch earlier in the series
V3:
- add more init code for the daemon to early_init()
- move mkdir(XENSTORE_LIB_DIR) into a later patch (Julien Grall)
- remove stale stubs in minios.c
---
 tools/xenstored/core.c   | 30 +++---------------------------
 tools/xenstored/core.h   |  7 +++----
 tools/xenstored/minios.c | 11 +++--------
 tools/xenstored/posix.c  | 31 +++++++++++++++++++++++++++++--
 4 files changed, 38 insertions(+), 41 deletions(-)

diff --git a/tools/xenstored/core.c b/tools/xenstored/core.c
index d4c76d71dc..eba7744fde 100644
--- a/tools/xenstored/core.c
+++ b/tools/xenstored/core.c
@@ -79,7 +79,7 @@ char **orig_argv;
 LIST_HEAD(connections);
 int tracefd = -1;
 bool keep_orphans = false;
-static int reopen_log_pipe[2];
+int reopen_log_pipe[2];
 static int reopen_log_pipe0_pollfd_idx = -1;
 char *tracefile = NULL;
 static struct hashtable *nodes;
@@ -2612,7 +2612,7 @@ static void destroy_fds(void)
 		close(sock);
 }
 
-static void init_sockets(void)
+void init_sockets(void)
 {
 	struct sockaddr_un addr;
 	const char *soc_str = xenstore_daemon_path();
@@ -2903,34 +2903,10 @@ int main(int argc, char *argv[])
 	if (optind != argc)
 		barf("%s: No arguments desired", argv[0]);
 
-	reopen_log();
-
-	/* Make sure xenstored directory exists. */
-	/* Errors ignored here, will be reported when we open files */
-	mkdir(xenstore_daemon_rundir(), 0755);
-
-	if (dofork) {
-		openlog("xenstored", 0, LOG_DAEMON);
-		if (!live_update)
-			daemonize();
-	}
-	if (pidfile)
-		write_pidfile(pidfile);
-
-	/* Talloc leak reports go to stderr, which is closed if we fork. */
-	if (!dofork)
-		talloc_enable_leak_report_full();
-
-	/* Don't kill us with SIGPIPE. */
-	signal(SIGPIPE, SIG_IGN);
+	early_init(live_update, dofork, pidfile);
 
 	talloc_enable_null_tracking();
 
-#ifndef NO_SOCKETS
-	if (!live_update)
-		init_sockets();
-#endif
-
 	init_pipe(reopen_log_pipe);
 
 	/* Listen to hypervisor. */
diff --git a/tools/xenstored/core.h b/tools/xenstored/core.h
index 480b0f5f7b..72173f1684 100644
--- a/tools/xenstored/core.h
+++ b/tools/xenstored/core.h
@@ -384,12 +384,11 @@ static inline bool domain_is_unprivileged(const struct connection *conn)
 
 /* Return the event channel used by xenbus. */
 evtchn_port_t get_xenbus_evtchn(void);
+void early_init(bool live_update, bool dofork, const char *pidfile);
 
-/* Write out the pidfile */
-void write_pidfile(const char *pidfile);
+void init_sockets(void);
+extern int reopen_log_pipe[2];
 
-/* Fork but do not close terminal FDs */
-void daemonize(void);
 /* Close stdin/stdout/stderr to complete daemonize */
 void finish_daemonize(void);
 
diff --git a/tools/xenstored/minios.c b/tools/xenstored/minios.c
index 0779efbf91..4f48f63083 100644
--- a/tools/xenstored/minios.c
+++ b/tools/xenstored/minios.c
@@ -20,14 +20,6 @@
 #include "core.h"
 #include <xen/grant_table.h>
 
-void write_pidfile(const char *pidfile)
-{
-}
-
-void daemonize(void)
-{
-}
-
 void finish_daemonize(void)
 {
 }
@@ -54,3 +46,6 @@ void unmap_xenbus(void *interface)
 	xengnttab_unmap(*xgt_handle, interface, 1);
 }
 
+void early_init(bool live_update, bool dofork, const char *pidfile)
+{
+}
diff --git a/tools/xenstored/posix.c b/tools/xenstored/posix.c
index 7e03dd982d..9463ef5c8d 100644
--- a/tools/xenstored/posix.c
+++ b/tools/xenstored/posix.c
@@ -20,14 +20,17 @@
 #include <sys/stat.h>
 #include <unistd.h>
 #include <fcntl.h>
+#include <signal.h>
 #include <stdlib.h>
+#include <syslog.h>
 #include <sys/mman.h>
+#include <xen-tools/xenstore-common.h>
 
 #include "utils.h"
 #include "core.h"
 #include "osdep.h"
 
-void write_pidfile(const char *pidfile)
+static void write_pidfile(const char *pidfile)
 {
 	char buf[100];
 	int len;
@@ -49,7 +52,7 @@ void write_pidfile(const char *pidfile)
 }
 
 /* Stevens. */
-void daemonize(void)
+static void daemonize(void)
 {
 	pid_t pid;
 
@@ -157,3 +160,27 @@ void *xenbus_map(void)
 
 	return addr;
 }
+
+void early_init(bool live_update, bool dofork, const char *pidfile)
+{
+	reopen_log();
+
+	/* Make sure xenstored directory exists. */
+	/* Errors ignored here, will be reported when we open files */
+	mkdir(xenstore_daemon_rundir(), 0755);
+
+	if (dofork) {
+		openlog("xenstored", 0, LOG_DAEMON);
+		if (!live_update)
+			daemonize();
+	}
+
+	if (pidfile)
+		write_pidfile(pidfile);
+
+	/* Don't kill us with SIGPIPE. */
+	signal(SIGPIPE, SIG_IGN);
+
+	if (!live_update)
+		init_sockets();
+}
-- 
2.35.3



From xen-devel-bounces@lists.xenproject.org Thu Jan 04 09:12:27 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 04 Jan 2024 09:12:27 +0000
Received: from list by lists.xenproject.org with outflank-mailman.661274.1031010 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLJm7-0003UL-NG; Thu, 04 Jan 2024 09:12:27 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 661274.1031010; Thu, 04 Jan 2024 09:12:27 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLJm7-0003U3-KG; Thu, 04 Jan 2024 09:12:27 +0000
Received: by outflank-mailman (input) for mailman id 661274;
 Thu, 04 Jan 2024 09:12:25 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=4u2H=IO=suse.com=jgross@srs-se1.protection.inumbo.net>)
 id 1rLJcH-00085z-LY
 for xen-devel@lists.xenproject.org; Thu, 04 Jan 2024 09:02:17 +0000
Received: from smtp-out1.suse.de (smtp-out1.suse.de [195.135.223.130])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id f590f3ed-aadf-11ee-98ef-6d05b1d4d9a1;
 Thu, 04 Jan 2024 10:02:17 +0100 (CET)
Received: from imap1.dmz-prg2.suse.org (imap1.dmz-prg2.suse.org
 [IPv6:2a07:de40:b281:104:10:150:64:97])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
 (No client certificate requested)
 by smtp-out1.suse.de (Postfix) with ESMTPS id D0BF721EE1;
 Thu,  4 Jan 2024 09:02:16 +0000 (UTC)
Received: from imap1.dmz-prg2.suse.org (localhost [127.0.0.1])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
 (No client certificate requested)
 by imap1.dmz-prg2.suse.org (Postfix) with ESMTPS id A630413722;
 Thu,  4 Jan 2024 09:02:16 +0000 (UTC)
Received: from dovecot-director2.suse.de ([2a07:de40:b281:106:10:150:64:167])
 by imap1.dmz-prg2.suse.org with ESMTPSA id PwgpJxh0lmXpWAAAD6G6ig
 (envelope-from <jgross@suse.com>); Thu, 04 Jan 2024 09:02:16 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: f590f3ed-aadf-11ee-98ef-6d05b1d4d9a1
From: Juergen Gross <jgross@suse.com>
To: xen-devel@lists.xenproject.org
Cc: Juergen Gross <jgross@suse.com>,
	Wei Liu <wl@xen.org>,
	Anthony PERARD <anthony.perard@citrix.com>,
	Jason Andryuk <jandryuk@gmail.com>
Subject: [PATCH v3 14/33] tools/xenlogd: add 9pfs write request support
Date: Thu,  4 Jan 2024 10:00:36 +0100
Message-Id: <20240104090055.27323-15-jgross@suse.com>
X-Mailer: git-send-email 2.35.3
In-Reply-To: <20240104090055.27323-1-jgross@suse.com>
References: <20240104090055.27323-1-jgross@suse.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Spam-Level: 
X-Spam-Level: 
Authentication-Results: smtp-out1.suse.de;
	none
X-Rspamd-Server: rspamd2.dmz-prg2.suse.org
X-Spamd-Result: default: False [-4.00 / 50.00];
	 REPLY(-4.00)[]
X-Spam-Score: -4.00
X-Rspamd-Queue-Id: D0BF721EE1
X-Spam-Flag: NO

Add the write request of the 9pfs protocol.

Signed-off-by: Juergen Gross <jgross@suse.com>
Reviewed-by: Jason Andryuk <jandryuk@gmail.com>
---
 tools/xen-9pfsd/io.c | 54 ++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 54 insertions(+)

diff --git a/tools/xen-9pfsd/io.c b/tools/xen-9pfsd/io.c
index 7d40747b60..c357342a91 100644
--- a/tools/xen-9pfsd/io.c
+++ b/tools/xen-9pfsd/io.c
@@ -33,6 +33,7 @@
 #define P9_CMD_WALK       110
 #define P9_CMD_OPEN       112
 #define P9_CMD_CREATE     114
+#define P9_CMD_WRITE      118
 #define P9_CMD_CLUNK      120
 #define P9_CMD_STAT       124
 
@@ -1122,6 +1123,55 @@ static void p9_create(struct ring *ring, struct p9_header *hdr)
     free_fid(device, fidp);
 }
 
+static void p9_write(struct ring *ring, struct p9_header *hdr)
+{
+    device *device = ring->device;
+    uint32_t fid;
+    uint64_t off;
+    unsigned int len;
+    uint32_t written;
+    void *buf;
+    struct p9_fid *fidp;
+    int ret;
+
+    ret = fill_data(ring, "ULD", &fid, &off, &len, ring->buffer);
+    if ( ret != 3 )
+    {
+        p9_error(ring, hdr->tag, EINVAL);
+        return;
+    }
+
+    fidp = get_fid_ref(device, fid);
+    if ( !fidp || !fidp->opened || fidp->isdir )
+    {
+        p9_error(ring, hdr->tag, EBADF);
+        goto out;
+    }
+
+    buf = ring->buffer;
+
+    while ( len != 0 )
+    {
+        ret = pwrite(fidp->fd, buf, len, off);
+        if ( ret < 0 )
+            break;
+        len -= ret;
+        buf += ret;
+        off += ret;
+    }
+
+    written = buf - ring->buffer;
+    if ( written == 0 )
+    {
+        p9_error(ring, hdr->tag, errno);
+        goto out;
+    }
+    fill_buffer(ring, hdr->cmd + 1, hdr->tag, "U", &written);
+
+ out:
+    free_fid(device, fidp);
+}
+
 static void p9_clunk(struct ring *ring, struct p9_header *hdr)
 {
     device *device = ring->device;
@@ -1304,6 +1354,10 @@ void *io_thread(void *arg)
                 p9_create(ring, &hdr);
                 break;
 
+            case P9_CMD_WRITE:
+                p9_write(ring, &hdr);
+                break;
+
             case P9_CMD_CLUNK:
                 p9_clunk(ring, &hdr);
                 break;
-- 
2.35.3



From xen-devel-bounces@lists.xenproject.org Thu Jan 04 09:12:28 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 04 Jan 2024 09:12:28 +0000
Received: from list by lists.xenproject.org with outflank-mailman.661276.1031015 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLJm8-0003XS-1V; Thu, 04 Jan 2024 09:12:28 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 661276.1031015; Thu, 04 Jan 2024 09:12:28 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLJm7-0003WF-SR; Thu, 04 Jan 2024 09:12:27 +0000
Received: by outflank-mailman (input) for mailman id 661276;
 Thu, 04 Jan 2024 09:12:26 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=4u2H=IO=suse.com=jgross@srs-se1.protection.inumbo.net>)
 id 1rLJc3-0007Zm-K2
 for xen-devel@lists.xenproject.org; Thu, 04 Jan 2024 09:02:03 +0000
Received: from smtp-out1.suse.de (smtp-out1.suse.de [195.135.223.130])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id ebc0d355-aadf-11ee-9b0f-b553b5be7939;
 Thu, 04 Jan 2024 10:02:00 +0100 (CET)
Received: from imap1.dmz-prg2.suse.org (imap1.dmz-prg2.suse.org [10.150.64.97])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
 (No client certificate requested)
 by smtp-out1.suse.de (Postfix) with ESMTPS id 4703521F8C;
 Thu,  4 Jan 2024 09:02:00 +0000 (UTC)
Received: from imap1.dmz-prg2.suse.org (localhost [127.0.0.1])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
 (No client certificate requested)
 by imap1.dmz-prg2.suse.org (Postfix) with ESMTPS id 2237313722;
 Thu,  4 Jan 2024 09:02:00 +0000 (UTC)
Received: from dovecot-director2.suse.de ([2a07:de40:b281:106:10:150:64:167])
 by imap1.dmz-prg2.suse.org with ESMTPSA id Y/4kBwh0lmXVWAAAD6G6ig
 (envelope-from <jgross@suse.com>); Thu, 04 Jan 2024 09:02:00 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: ebc0d355-aadf-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1704358920; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=83zu8qXzCws1nGkvYOUtCjUN1acN1YTYVZrj0SieEXM=;
	b=MGBXku8Uqv5OTyrf79PNCpfNsXNldQC5y1DTA9g1JyasJsekDCw5e4NQEEiSeFwYln8i1m
	9h4mZQ/14zo04logZ5vQjv+ZQAI3iWhZOiU3eKzP2gXO97LQwbMMKCXn1mQzwEW+VQsa0a
	+0oKfhkW9QXQJb2UQB+SrKWlLKlL98w=
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1704358920; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=83zu8qXzCws1nGkvYOUtCjUN1acN1YTYVZrj0SieEXM=;
	b=MGBXku8Uqv5OTyrf79PNCpfNsXNldQC5y1DTA9g1JyasJsekDCw5e4NQEEiSeFwYln8i1m
	9h4mZQ/14zo04logZ5vQjv+ZQAI3iWhZOiU3eKzP2gXO97LQwbMMKCXn1mQzwEW+VQsa0a
	+0oKfhkW9QXQJb2UQB+SrKWlLKlL98w=
From: Juergen Gross <jgross@suse.com>
To: xen-devel@lists.xenproject.org
Cc: Juergen Gross <jgross@suse.com>,
	Wei Liu <wl@xen.org>,
	Anthony PERARD <anthony.perard@citrix.com>
Subject: [PATCH v3 11/33] tools/xenlogd: add 9pfs clunk request support
Date: Thu,  4 Jan 2024 10:00:33 +0100
Message-Id: <20240104090055.27323-12-jgross@suse.com>
X-Mailer: git-send-email 2.35.3
In-Reply-To: <20240104090055.27323-1-jgross@suse.com>
References: <20240104090055.27323-1-jgross@suse.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Spam-Level: 
X-Spam-Level: 
X-Spamd-Result: default: False [0.21 / 50.00];
	 ARC_NA(0.00)[];
	 RCVD_VIA_SMTP_AUTH(0.00)[];
	 FROM_HAS_DN(0.00)[];
	 RCPT_COUNT_THREE(0.00)[4];
	 R_MISSING_CHARSET(2.50)[];
	 TO_MATCH_ENVRCPT_ALL(0.00)[];
	 MIME_GOOD(-0.10)[text/plain];
	 REPLY(-4.00)[];
	 BROKEN_CONTENT_TYPE(1.50)[];
	 RCVD_COUNT_THREE(0.00)[3];
	 TO_DN_SOME(0.00)[];
	 DKIM_SIGNED(0.00)[suse.com:s=susede1];
	 MID_CONTAINS_FROM(1.00)[];
	 DBL_BLOCKED_OPENRESOLVER(0.00)[suse.com:email];
	 FUZZY_BLOCKED(0.00)[rspamd.com];
	 FROM_EQ_ENVFROM(0.00)[];
	 MIME_TRACE(0.00)[0:+];
	 RCVD_TLS_ALL(0.00)[];
	 BAYES_HAM(-0.69)[83.29%]
Authentication-Results: smtp-out1.suse.de;
	none
X-Spam-Score: 0.21
X-Spam-Flag: NO

Add the clunk request of the 9pfs protocol.

Signed-off-by: Juergen Gross <jgross@suse.com>
---
V3:
- use unlinkat() (Jason Andryuk)
---
 tools/xen-9pfsd/io.c | 43 +++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 43 insertions(+)

diff --git a/tools/xen-9pfsd/io.c b/tools/xen-9pfsd/io.c
index e7db90a972..4adef6715f 100644
--- a/tools/xen-9pfsd/io.c
+++ b/tools/xen-9pfsd/io.c
@@ -32,6 +32,7 @@
 #define P9_CMD_ERROR      107
 #define P9_CMD_WALK       110
 #define P9_CMD_OPEN       112
+#define P9_CMD_CLUNK      120
 
 /* P9 protocol open flags. */
 #define P9_OREAD            0   /* read */
@@ -950,6 +951,44 @@ static void p9_open(struct ring *ring, struct p9_header *hdr)
     p9_error(ring, hdr->tag, errno);
 }
 
+static void p9_clunk(struct ring *ring, struct p9_header *hdr)
+{
+    device *device = ring->device;
+    uint32_t fid;
+    struct p9_fid *fidp;
+    int ret;
+
+    ret = fill_data(ring, "U", &fid);
+    if ( ret != 1 )
+    {
+        p9_error(ring, hdr->tag, EINVAL);
+        return;
+    }
+
+    fidp = get_fid_ref(device, fid);
+    if ( !fidp )
+    {
+        p9_error(ring, hdr->tag, ENOENT);
+        return;
+    }
+
+    if ( fidp->opened )
+    {
+        fidp->opened = false;
+        free_fid(device, fidp);
+        close(fidp->fd);
+        if ( fidp->mode & P9_OREMOVE )
+            unlinkat(device->root_fd, relpath_from_path(fidp->path),
+                     fidp->isdir ? AT_REMOVEDIR : 0);
+    }
+
+    /* 2 calls of free_fid(): one for our reference, and one to free it. */
+    free_fid(device, fidp);
+    free_fid(device, fidp);
+
+    fill_buffer(ring, hdr->cmd + 1, hdr->tag, "");
+}
+
 void *io_thread(void *arg)
 {
     struct ring *ring = arg;
@@ -1021,6 +1060,10 @@ void *io_thread(void *arg)
                 p9_open(ring, &hdr);
                 break;
 
+            case P9_CMD_CLUNK:
+                p9_clunk(ring, &hdr);
+                break;
+
             default:
                 syslog(LOG_DEBUG, "%u.%u sent unhandled command %u\n",
                        ring->device->domid, ring->device->devid, hdr.cmd);
-- 
2.35.3



From xen-devel-bounces@lists.xenproject.org Thu Jan 04 09:12:28 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 04 Jan 2024 09:12:28 +0000
Received: from list by lists.xenproject.org with outflank-mailman.661278.1031020 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLJm8-0003eH-Bx; Thu, 04 Jan 2024 09:12:28 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 661278.1031020; Thu, 04 Jan 2024 09:12:28 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLJm8-0003bu-7V; Thu, 04 Jan 2024 09:12:28 +0000
Received: by outflank-mailman (input) for mailman id 661278;
 Thu, 04 Jan 2024 09:12:26 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=4u2H=IO=suse.com=jgross@srs-se1.protection.inumbo.net>)
 id 1rLJbq-00085z-R5
 for xen-devel@lists.xenproject.org; Thu, 04 Jan 2024 09:01:50 +0000
Received: from smtp-out1.suse.de (smtp-out1.suse.de
 [2a07:de40:b251:101:10:150:64:1])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id e1d5a6ba-aadf-11ee-98ef-6d05b1d4d9a1;
 Thu, 04 Jan 2024 10:01:44 +0100 (CET)
Received: from imap1.dmz-prg2.suse.org (imap1.dmz-prg2.suse.org
 [IPv6:2a07:de40:b281:104:10:150:64:97])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
 (No client certificate requested)
 by smtp-out1.suse.de (Postfix) with ESMTPS id B7F4321EE1;
 Thu,  4 Jan 2024 09:01:43 +0000 (UTC)
Received: from imap1.dmz-prg2.suse.org (localhost [127.0.0.1])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
 (No client certificate requested)
 by imap1.dmz-prg2.suse.org (Postfix) with ESMTPS id 92CB613722;
 Thu,  4 Jan 2024 09:01:43 +0000 (UTC)
Received: from dovecot-director2.suse.de ([2a07:de40:b281:106:10:150:64:167])
 by imap1.dmz-prg2.suse.org with ESMTPSA id ps+ZIvdzlmW4WAAAD6G6ig
 (envelope-from <jgross@suse.com>); Thu, 04 Jan 2024 09:01:43 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: e1d5a6ba-aadf-11ee-98ef-6d05b1d4d9a1
From: Juergen Gross <jgross@suse.com>
To: xen-devel@lists.xenproject.org
Cc: Juergen Gross <jgross@suse.com>,
	Wei Liu <wl@xen.org>,
	Anthony PERARD <anthony.perard@citrix.com>
Subject: [PATCH v3 08/33] tools/xenlogd: add 9pfs attach request support
Date: Thu,  4 Jan 2024 10:00:30 +0100
Message-Id: <20240104090055.27323-9-jgross@suse.com>
X-Mailer: git-send-email 2.35.3
In-Reply-To: <20240104090055.27323-1-jgross@suse.com>
References: <20240104090055.27323-1-jgross@suse.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Spam-Level: 
X-Spam-Level: 
Authentication-Results: smtp-out1.suse.de;
	none
X-Rspamd-Server: rspamd2.dmz-prg2.suse.org
X-Spamd-Result: default: False [-4.00 / 50.00];
	 REPLY(-4.00)[]
X-Spam-Score: -4.00
X-Rspamd-Queue-Id: B7F4321EE1
X-Spam-Flag: NO

Add the attach request of the 9pfs protocol. This introduces the "fid"
scheme of the 9pfs protocol.

As this will be needed later, use a dedicated memory allocation
function in alloc_fid() and prepare a fid reference count.

For filling the qid data take the approach from the qemu 9pfs backend
implementation.

Signed-off-by: Juergen Gross <jgross@suse.com>
---
V2:
- make fill_qid() parameter stbuf const (Jason Andryuk)
- free fids after disconnecting guest (Jason Andryuk)
V3:
- only store relative path in fid (Jason Andryuk)
---
 tools/xen-9pfsd/io.c        | 167 ++++++++++++++++++++++++++++++++++++
 tools/xen-9pfsd/xen-9pfsd.c |   6 ++
 tools/xen-9pfsd/xen-9pfsd.h |  14 +++
 3 files changed, 187 insertions(+)

diff --git a/tools/xen-9pfsd/io.c b/tools/xen-9pfsd/io.c
index 245faeb9a6..241f0df5e2 100644
--- a/tools/xen-9pfsd/io.c
+++ b/tools/xen-9pfsd/io.c
@@ -11,11 +11,14 @@
  * before looking for the next request.
  */
 
+#include <assert.h>
 #include <errno.h>
 #include <stdbool.h>
 #include <stdlib.h>
 #include <string.h>
 #include <syslog.h>
+#include <sys/types.h>
+#include <sys/stat.h>
 #include <xenctrl.h>           /* For cpu barriers. */
 #include <xen-tools/common-macros.h>
 
@@ -23,6 +26,7 @@
 
 /* P9 protocol commands (response is either cmd+1 or P9_CMD_ERROR). */
 #define P9_CMD_VERSION    100
+#define P9_CMD_ATTACH     104
 #define P9_CMD_ERROR      107
 
 #define P9_MIN_MSIZE      2048
@@ -443,6 +447,129 @@ static int fill_data(struct ring *ring, const char *fmt, ...)
     return pars;
 }
 
+static struct p9_fid *find_fid(device *device, unsigned int fid)
+{
+    struct p9_fid *fidp;
+
+    XEN_TAILQ_FOREACH(fidp, &device->fids, list)
+    {
+        if ( fidp->fid == fid )
+            return fidp;
+    }
+
+    return NULL;
+}
+
+static struct p9_fid *alloc_fid_mem(device *device, unsigned int fid,
+                                    const char *path)
+{
+    struct p9_fid *fidp;
+    size_t pathlen;
+
+    /* Paths always start with "/" as they are starting at the mount point. */
+    assert(path[0] == '/');
+
+    pathlen = strlen(path);
+    fidp = calloc(sizeof(*fidp) + pathlen + 1, 1);
+    if ( !fidp )
+        return NULL;
+
+    fidp->fid = fid;
+    strncpy(fidp->path, path, pathlen);
+
+    return fidp;
+}
+
+static struct p9_fid *alloc_fid(device *device, unsigned int fid,
+                                const char *path)
+{
+    struct p9_fid *fidp = NULL;
+
+    pthread_mutex_lock(&device->fid_mutex);
+
+    if ( find_fid(device, fid) )
+    {
+        errno = EBADFD;
+        goto out;
+    }
+
+    if ( device->n_fids >= device->max_open_files )
+    {
+        errno = EMFILE;
+        goto out;
+    }
+
+    fidp = alloc_fid_mem(device, fid, path);
+    if ( !fidp )
+        goto out;
+
+    fidp->ref = 1;
+    XEN_TAILQ_INSERT_HEAD(&device->fids, fidp, list);
+    device->n_fids++;
+
+ out:
+    pthread_mutex_unlock(&device->fid_mutex);
+
+    return fidp;
+}
+
+static void free_fid(device *device, struct p9_fid *fidp)
+{
+    if ( !fidp )
+        return;
+
+    pthread_mutex_lock(&device->fid_mutex);
+
+    fidp->ref--;
+    if ( !fidp->ref )
+    {
+        device->n_fids--;
+        XEN_TAILQ_REMOVE(&device->fids, fidp, list);
+        free(fidp);
+    }
+
+    pthread_mutex_unlock(&device->fid_mutex);
+}
+
+void free_fids(device *device)
+{
+    struct p9_fid *fidp;
+
+    while ( (fidp = XEN_TAILQ_FIRST(&device->fids)) != NULL )
+    {
+        XEN_TAILQ_REMOVE(&device->fids, fidp, list);
+        free(fidp);
+    }
+}
+
+static const char *relpath_from_path(const char *path)
+{
+    if (!strcmp(path, "/"))
+        return ".";
+
+    return (path[0] == '/') ? path + 1 : path;
+}
+
+static int fill_qid(device *device, const char *path, struct p9_qid *qid,
+                    const struct stat *stbuf)
+{
+    struct stat st;
+
+    if ( !stbuf )
+    {
+        if ( fstatat(device->root_fd, relpath_from_path(path), &st, 0) )
+            return errno;
+
+        stbuf = &st;
+    }
+
+    qid->type = S_ISDIR(stbuf->st_mode) ? QID_TYPE_DIR : 0;
+    qid->version = stbuf->st_mtime ^ (stbuf->st_size << 8);
+    qid->path = stbuf->st_ino;
+
+    return 0;
+}
+
 static void p9_error(struct ring *ring, uint16_t tag, uint32_t err)
 {
     unsigned int erroff;
@@ -484,6 +611,42 @@ static void p9_version(struct ring *ring, struct p9_header *hdr)
     fill_buffer(ring, hdr->cmd + 1, hdr->tag, "US", &ring->max_size, version);
 }
 
+static void p9_attach(struct ring *ring, struct p9_header *hdr)
+{
+    device *device = ring->device;
+    uint32_t fid;
+    uint32_t dummy_u32;
+    unsigned int dummy_uint;
+    struct p9_qid qid;
+    int ret;
+
+    ret = fill_data(ring, "UUSSU", &fid, &dummy_u32, &dummy_uint, &dummy_uint,
+                    &dummy_u32);
+    if ( ret != 5 )
+    {
+        p9_error(ring, hdr->tag, errno);
+        return;
+    }
+
+    device->root_fid = alloc_fid(device, fid, "/");
+    if ( !device->root_fid )
+    {
+        p9_error(ring, hdr->tag, errno);
+        return;
+    }
+
+    ret = fill_qid(device, "/", &qid, NULL);
+    if ( ret )
+    {
+        free_fid(device, device->root_fid);
+        device->root_fid = NULL;
+        p9_error(ring, hdr->tag, ret);
+        return;
+    }
+
+    fill_buffer(ring, hdr->cmd + 1, hdr->tag, "Q", &qid);
+}
+
 void *io_thread(void *arg)
 {
     struct ring *ring = arg;
@@ -543,6 +706,10 @@ void *io_thread(void *arg)
                 p9_version(ring, &hdr);
                 break;
 
+            case P9_CMD_ATTACH:
+                p9_attach(ring, &hdr);
+                break;
+
             default:
                 syslog(LOG_DEBUG, "%u.%u sent unhandled command %u\n",
                        ring->device->domid, ring->device->devid, hdr.cmd);
diff --git a/tools/xen-9pfsd/xen-9pfsd.c b/tools/xen-9pfsd/xen-9pfsd.c
index 9ce9ae559b..294b415875 100644
--- a/tools/xen-9pfsd/xen-9pfsd.c
+++ b/tools/xen-9pfsd/xen-9pfsd.c
@@ -304,6 +304,9 @@ static device *new_device(unsigned int domid, unsigned int devid)
         return NULL;
     }
 
+    pthread_mutex_init(&device->fid_mutex, NULL);
+    XEN_TAILQ_INIT(&device->fids);
+
     val = read_backend_node(device, "security_model");
     if ( !val || strcmp(val, "none") )
     {
@@ -399,6 +402,8 @@ static void disconnect_guest(device *device)
     }
 
     device->num_rings = 0;
+
+    free_fids(device);
 }
 
 static void close_device(device *device, enum xenbus_state state)
@@ -482,6 +487,7 @@ static void remove_device(device *device)
     XEN_TAILQ_REMOVE(&devs, device, list);
 
     disconnect_guest(device);
+    pthread_mutex_destroy(&device->fid_mutex);
     free_device(device);
 }
 
diff --git a/tools/xen-9pfsd/xen-9pfsd.h b/tools/xen-9pfsd/xen-9pfsd.h
index 0cde0d2bb8..6c755411a7 100644
--- a/tools/xen-9pfsd/xen-9pfsd.h
+++ b/tools/xen-9pfsd/xen-9pfsd.h
@@ -21,6 +21,13 @@ struct p9_header {
     uint16_t tag;
 } __attribute__((packed));
 
+struct p9_fid {
+    XEN_TAILQ_ENTRY(struct p9_fid) list;
+    unsigned int fid;
+    unsigned int ref;
+    char path[];
+};
+
 typedef struct device device;
 
 struct ring {
@@ -71,10 +78,17 @@ struct device {
     unsigned int num_rings;
     struct ring *ring[MAX_RINGS];
     int root_fd;
+
+    /* File system handling. */
+    pthread_mutex_t fid_mutex;
+    XEN_TAILQ_HEAD(fidhead, struct p9_fid) fids;
+    struct p9_fid *root_fid;
+    unsigned int n_fids;
 };
 
 extern xenevtchn_handle *xe;
 
 void *io_thread(void *arg);
+void free_fids(device *device);
 
 #endif /* XEN_9PFSD_H */
-- 
2.35.3



From xen-devel-bounces@lists.xenproject.org Thu Jan 04 09:12:28 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 04 Jan 2024 09:12:28 +0000
Received: from list by lists.xenproject.org with outflank-mailman.661280.1031028 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLJm8-0003kD-PV; Thu, 04 Jan 2024 09:12:28 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 661280.1031028; Thu, 04 Jan 2024 09:12:28 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLJm8-0003iR-Ih; Thu, 04 Jan 2024 09:12:28 +0000
Received: by outflank-mailman (input) for mailman id 661280;
 Thu, 04 Jan 2024 09:12:26 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=4u2H=IO=suse.com=jgross@srs-se1.protection.inumbo.net>)
 id 1rLJcj-00085z-FK
 for xen-devel@lists.xenproject.org; Thu, 04 Jan 2024 09:02:45 +0000
Received: from smtp-out1.suse.de (smtp-out1.suse.de
 [2a07:de40:b251:101:10:150:64:1])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 061b23c4-aae0-11ee-98ef-6d05b1d4d9a1;
 Thu, 04 Jan 2024 10:02:44 +0100 (CET)
Received: from imap1.dmz-prg2.suse.org (imap1.dmz-prg2.suse.org
 [IPv6:2a07:de40:b281:104:10:150:64:97])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
 (No client certificate requested)
 by smtp-out1.suse.de (Postfix) with ESMTPS id 9270121EE1;
 Thu,  4 Jan 2024 09:02:44 +0000 (UTC)
Received: from imap1.dmz-prg2.suse.org (localhost [127.0.0.1])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
 (No client certificate requested)
 by imap1.dmz-prg2.suse.org (Postfix) with ESMTPS id 5DB9413722;
 Thu,  4 Jan 2024 09:02:44 +0000 (UTC)
Received: from dovecot-director2.suse.de ([2a07:de40:b281:106:10:150:64:167])
 by imap1.dmz-prg2.suse.org with ESMTPSA id RlydFTR0lmUSWQAAD6G6ig
 (envelope-from <jgross@suse.com>); Thu, 04 Jan 2024 09:02:44 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 061b23c4-aae0-11ee-98ef-6d05b1d4d9a1
From: Juergen Gross <jgross@suse.com>
To: xen-devel@lists.xenproject.org
Cc: Juergen Gross <jgross@suse.com>,
	Wei Liu <wl@xen.org>,
	Julien Grall <julien@xen.org>,
	Anthony PERARD <anthony.perard@citrix.com>,
	Julien Grall <jgrall@amazon.com>,
	Jason Andryuk <jandryuk@gmail.com>
Subject: [PATCH v3 19/33] tools/xenstored: rename xenbus_evtchn()
Date: Thu,  4 Jan 2024 10:00:41 +0100
Message-Id: <20240104090055.27323-20-jgross@suse.com>
X-Mailer: git-send-email 2.35.3
In-Reply-To: <20240104090055.27323-1-jgross@suse.com>
References: <20240104090055.27323-1-jgross@suse.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Spam-Level: 
X-Spam-Level: 
Authentication-Results: smtp-out1.suse.de;
	none
X-Rspamd-Server: rspamd2.dmz-prg2.suse.org
X-Spamd-Result: default: False [-4.00 / 50.00];
	 REPLY(-4.00)[]
X-Spam-Score: -4.00
X-Rspamd-Queue-Id: 9270121EE1
X-Spam-Flag: NO

Rename the xenbus_evtchn() function to get_xenbus_evtchn() in order to
avoid two externally visible symbols with the same name when Xenstore-
stubdom is being built with a Mini-OS with CONFIG_XENBUS set.

Signed-off-by: Juergen Gross <jgross@suse.com>
Reviewed-by: Julien Grall <jgrall@amazon.com>
Reviewed-by: Jason Andryuk <jandryuk@gmail.com>
---
 tools/xenstored/core.h   | 2 +-
 tools/xenstored/domain.c | 2 +-
 tools/xenstored/minios.c | 2 +-
 tools/xenstored/posix.c  | 2 +-
 4 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/tools/xenstored/core.h b/tools/xenstored/core.h
index ad87199042..480b0f5f7b 100644
--- a/tools/xenstored/core.h
+++ b/tools/xenstored/core.h
@@ -383,7 +383,7 @@ static inline bool domain_is_unprivileged(const struct connection *conn)
 }
 
 /* Return the event channel used by xenbus. */
-evtchn_port_t xenbus_evtchn(void);
+evtchn_port_t get_xenbus_evtchn(void);
 
 /* Write out the pidfile */
 void write_pidfile(const char *pidfile);
diff --git a/tools/xenstored/domain.c b/tools/xenstored/domain.c
index 409b53acf9..6ef136e01f 100644
--- a/tools/xenstored/domain.c
+++ b/tools/xenstored/domain.c
@@ -1208,7 +1208,7 @@ void dom0_init(void)
 	evtchn_port_t port;
 	struct domain *dom0;
 
-	port = xenbus_evtchn();
+	port = get_xenbus_evtchn();
 	if (port == -1)
 		barf_perror("Failed to initialize dom0 port");
 
diff --git a/tools/xenstored/minios.c b/tools/xenstored/minios.c
index b5c3a205e6..0779efbf91 100644
--- a/tools/xenstored/minios.c
+++ b/tools/xenstored/minios.c
@@ -38,7 +38,7 @@ void init_pipe(int reopen_log_pipe[2])
 	reopen_log_pipe[1] = -1;
 }
 
-evtchn_port_t xenbus_evtchn(void)
+evtchn_port_t get_xenbus_evtchn(void)
 {
 	return dom0_event;
 }
diff --git a/tools/xenstored/posix.c b/tools/xenstored/posix.c
index 6ac45fdb45..7e03dd982d 100644
--- a/tools/xenstored/posix.c
+++ b/tools/xenstored/posix.c
@@ -111,7 +111,7 @@ void unmap_xenbus(void *interface)
 	munmap(interface, getpagesize());
 }
 
-evtchn_port_t xenbus_evtchn(void)
+evtchn_port_t get_xenbus_evtchn(void)
 {
 	int fd;
 	int rc;
-- 
2.35.3



From xen-devel-bounces@lists.xenproject.org Thu Jan 04 09:12:29 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 04 Jan 2024 09:12:29 +0000
Received: from list by lists.xenproject.org with outflank-mailman.661281.1031034 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLJm9-0003uM-8S; Thu, 04 Jan 2024 09:12:29 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 661281.1031034; Thu, 04 Jan 2024 09:12:29 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLJm8-0003ra-VT; Thu, 04 Jan 2024 09:12:28 +0000
Received: by outflank-mailman (input) for mailman id 661281;
 Thu, 04 Jan 2024 09:12:26 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=4u2H=IO=suse.com=jgross@srs-se1.protection.inumbo.net>)
 id 1rLJcD-0007Zm-C2
 for xen-devel@lists.xenproject.org; Thu, 04 Jan 2024 09:02:13 +0000
Received: from smtp-out1.suse.de (smtp-out1.suse.de [195.135.223.130])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id f254ffa5-aadf-11ee-9b0f-b553b5be7939;
 Thu, 04 Jan 2024 10:02:11 +0100 (CET)
Received: from imap1.dmz-prg2.suse.org (imap1.dmz-prg2.suse.org [10.150.64.97])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
 (No client certificate requested)
 by smtp-out1.suse.de (Postfix) with ESMTPS id 4E93721EE1;
 Thu,  4 Jan 2024 09:02:11 +0000 (UTC)
Received: from imap1.dmz-prg2.suse.org (localhost [127.0.0.1])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
 (No client certificate requested)
 by imap1.dmz-prg2.suse.org (Postfix) with ESMTPS id 2963E13722;
 Thu,  4 Jan 2024 09:02:11 +0000 (UTC)
Received: from dovecot-director2.suse.de ([2a07:de40:b281:106:10:150:64:167])
 by imap1.dmz-prg2.suse.org with ESMTPSA id QhXeCBN0lmXlWAAAD6G6ig
 (envelope-from <jgross@suse.com>); Thu, 04 Jan 2024 09:02:11 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: f254ffa5-aadf-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1704358931; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=H8wa9pWvrMOGw1akjDhfhUuR8F7bLlS3/Tu/6p/vKMw=;
	b=NyPjfCnUel768c1HJYvf92BSkfRaB74bir+jAuLF/c4m3dvbFqyKScxmWz3g/kE7yB1sGP
	N4JjFGw1jonvOMzB6Ba2oU1hWRDfrNNcsbFzmuT83zhveATgAK2RPy4giTnpkdJOgjhdmC
	dxmrphTSvM5sH7TVzAzuRuFgNAjPVg4=
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1704358931; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=H8wa9pWvrMOGw1akjDhfhUuR8F7bLlS3/Tu/6p/vKMw=;
	b=NyPjfCnUel768c1HJYvf92BSkfRaB74bir+jAuLF/c4m3dvbFqyKScxmWz3g/kE7yB1sGP
	N4JjFGw1jonvOMzB6Ba2oU1hWRDfrNNcsbFzmuT83zhveATgAK2RPy4giTnpkdJOgjhdmC
	dxmrphTSvM5sH7TVzAzuRuFgNAjPVg4=
From: Juergen Gross <jgross@suse.com>
To: xen-devel@lists.xenproject.org
Cc: Juergen Gross <jgross@suse.com>,
	Wei Liu <wl@xen.org>,
	Anthony PERARD <anthony.perard@citrix.com>
Subject: [PATCH v3 13/33] tools/xenlogd: add 9pfs stat request support
Date: Thu,  4 Jan 2024 10:00:35 +0100
Message-Id: <20240104090055.27323-14-jgross@suse.com>
X-Mailer: git-send-email 2.35.3
In-Reply-To: <20240104090055.27323-1-jgross@suse.com>
References: <20240104090055.27323-1-jgross@suse.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Authentication-Results: smtp-out1.suse.de;
	none
X-Spam-Level: *
X-Spam-Score: 1.20
X-Spamd-Result: default: False [1.20 / 50.00];
	 ARC_NA(0.00)[];
	 RCVD_VIA_SMTP_AUTH(0.00)[];
	 FROM_HAS_DN(0.00)[];
	 RCPT_COUNT_THREE(0.00)[4];
	 R_MISSING_CHARSET(2.50)[];
	 TO_MATCH_ENVRCPT_ALL(0.00)[];
	 MIME_GOOD(-0.10)[text/plain];
	 REPLY(-4.00)[];
	 BROKEN_CONTENT_TYPE(1.50)[];
	 RCVD_COUNT_THREE(0.00)[3];
	 TO_DN_SOME(0.00)[];
	 DKIM_SIGNED(0.00)[suse.com:s=susede1];
	 NEURAL_HAM_SHORT(-0.20)[-1.000];
	 NEURAL_SPAM_LONG(3.50)[1.000];
	 MID_CONTAINS_FROM(1.00)[];
	 DBL_BLOCKED_OPENRESOLVER(0.00)[suse.com:email];
	 FUZZY_BLOCKED(0.00)[rspamd.com];
	 FROM_EQ_ENVFROM(0.00)[];
	 MIME_TRACE(0.00)[0:+];
	 RCVD_TLS_ALL(0.00)[];
	 BAYES_HAM(-3.00)[100.00%]
X-Spam-Flag: NO

Add the stat request of the 9pfs protocol.

Signed-off-by: Juergen Gross <jgross@suse.com>
---
V3:
- use fstatat() (Jason Andryuk)
---
 tools/xen-9pfsd/io.c | 93 ++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 93 insertions(+)

diff --git a/tools/xen-9pfsd/io.c b/tools/xen-9pfsd/io.c
index 9d816dc97e..7d40747b60 100644
--- a/tools/xen-9pfsd/io.c
+++ b/tools/xen-9pfsd/io.c
@@ -34,6 +34,7 @@
 #define P9_CMD_OPEN       112
 #define P9_CMD_CREATE     114
 #define P9_CMD_CLUNK      120
+#define P9_CMD_STAT       124
 
 /* P9 protocol open flags. */
 #define P9_OREAD            0   /* read */
@@ -60,6 +61,25 @@ struct p9_qid {
     uint64_t path;
 };
 
+struct p9_stat {
+    uint16_t size;
+    uint16_t type;
+    uint32_t dev;
+    struct p9_qid qid;
+    uint32_t mode;
+    uint32_t atime;
+    uint32_t mtime;
+    uint64_t length;
+    const char *name;
+    const char *uid;
+    const char *gid;
+    const char *muid;
+    const char *extension;
+    uint32_t n_uid;
+    uint32_t n_gid;
+    uint32_t n_muid;
+};
+
 /*
  * Note that the ring names "in" and "out" are from the frontend's
  * perspective, so the "in" ring will be used for responses to the frontend,
@@ -1140,6 +1160,75 @@ static void p9_clunk(struct ring *ring, struct p9_header *hdr)
     fill_buffer(ring, hdr->cmd + 1, hdr->tag, "");
 }
 
+static void fill_p9_stat(device *device, struct p9_stat *p9s, struct stat *st,
+                         const char *name)
+{
+    memset(p9s, 0, sizeof(*p9s));
+    fill_qid(device, NULL, &p9s->qid, st);
+    p9s->mode = st->st_mode & 0777;
+    if ( S_ISDIR(st->st_mode) )
+        p9s->mode |= P9_CREATE_PERM_DIR;
+    p9s->atime = st->st_atime;
+    p9s->mtime = st->st_mtime;
+    p9s->length = st->st_size;
+    p9s->name = name;
+    p9s->uid = "";
+    p9s->gid = "";
+    p9s->muid = "";
+    p9s->extension = "";
+    p9s->n_uid = 0;
+    p9s->n_gid = 0;
+    p9s->n_muid = 0;
+
+    /*
+     * Size of individual fields without the size field, including 5 2-byte
+     * string length fields.
+     */
+    p9s->size = 71 + strlen(p9s->name);
+}
+
+static void p9_stat(struct ring *ring, struct p9_header *hdr)
+{
+    device *device = ring->device;
+    uint32_t fid;
+    struct p9_fid *fidp;
+    struct p9_stat p9s;
+    struct stat st;
+    uint16_t total_length;
+    int ret;
+
+    ret = fill_data(ring, "U", &fid);
+    if ( ret != 1 )
+    {
+        p9_error(ring, hdr->tag, EINVAL);
+        return;
+    }
+
+    fidp = get_fid_ref(device, fid);
+    if ( !fidp )
+    {
+        p9_error(ring, hdr->tag, ENOENT);
+        return;
+    }
+
+    if ( fstatat(device->root_fd, relpath_from_path(fidp->path), &st, 0) < 0 )
+    {
+        p9_error(ring, hdr->tag, errno);
+        goto out;
+    }
+    fill_p9_stat(device, &p9s, &st, strrchr(fidp->path, '/') + 1);
+
+    total_length = p9s.size + sizeof(p9s.size);
+    fill_buffer(ring, hdr->cmd + 1, hdr->tag, "uuuUQUUULSSSSSUUU",
+                &total_length, &p9s.size, &p9s.type, &p9s.dev, &p9s.qid,
+                &p9s.mode, &p9s.atime, &p9s.mtime, &p9s.length, p9s.name,
+                p9s.uid, p9s.gid, p9s.muid, p9s.extension, &p9s.n_uid,
+                &p9s.n_gid, &p9s.n_muid);
+
+ out:
+    free_fid(device, fidp);
+}
+
 void *io_thread(void *arg)
 {
     struct ring *ring = arg;
@@ -1219,6 +1308,10 @@ void *io_thread(void *arg)
                 p9_clunk(ring, &hdr);
                 break;
 
+            case P9_CMD_STAT:
+                p9_stat(ring, &hdr);
+                break;
+
             default:
                 syslog(LOG_DEBUG, "%u.%u sent unhandled command %u\n",
                        ring->device->domid, ring->device->devid, hdr.cmd);
-- 
2.35.3



From xen-devel-bounces@lists.xenproject.org Thu Jan 04 09:12:50 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 04 Jan 2024 09:12:50 +0000
Received: from list by lists.xenproject.org with outflank-mailman.661296.1031061 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLJmU-00067O-L6; Thu, 04 Jan 2024 09:12:50 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 661296.1031061; Thu, 04 Jan 2024 09:12:50 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLJmU-00066x-Hj; Thu, 04 Jan 2024 09:12:50 +0000
Received: by outflank-mailman (input) for mailman id 661296;
 Thu, 04 Jan 2024 09:12:49 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=4u2H=IO=suse.com=jgross@srs-se1.protection.inumbo.net>)
 id 1rLJc8-0007Zm-7Y
 for xen-devel@lists.xenproject.org; Thu, 04 Jan 2024 09:02:08 +0000
Received: from smtp-out1.suse.de (smtp-out1.suse.de [195.135.223.130])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id ef0dd399-aadf-11ee-9b0f-b553b5be7939;
 Thu, 04 Jan 2024 10:02:06 +0100 (CET)
Received: from imap1.dmz-prg2.suse.org (imap1.dmz-prg2.suse.org [10.150.64.97])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
 (No client certificate requested)
 by smtp-out1.suse.de (Postfix) with ESMTPS id C75D921F8C;
 Thu,  4 Jan 2024 09:02:05 +0000 (UTC)
Received: from imap1.dmz-prg2.suse.org (localhost [127.0.0.1])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
 (No client certificate requested)
 by imap1.dmz-prg2.suse.org (Postfix) with ESMTPS id A1CE513722;
 Thu,  4 Jan 2024 09:02:05 +0000 (UTC)
Received: from dovecot-director2.suse.de ([2a07:de40:b281:106:10:150:64:167])
 by imap1.dmz-prg2.suse.org with ESMTPSA id Q5AiJg10lmXYWAAAD6G6ig
 (envelope-from <jgross@suse.com>); Thu, 04 Jan 2024 09:02:05 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: ef0dd399-aadf-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1704358925; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=u9IiqoAT56C+h23tOpIynn8xmHY6LcxxwPGqEgbggL8=;
	b=NIhr69+OtpqXstkMNcDOKP0hbE+nWmJOYDF4ITusVK6zKDXPfIdNKXx7hYm3pnjL8y+Kdd
	9btmPoyXHbrF5GRjVMwY+DG3emoadrQ0q2nhzKKbnYJipTQCLJssGnyUeLDdY/6K75w2sK
	2ENuFPrvJz5KUHd8OTMuPrAGGmp0gl4=
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1704358925; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=u9IiqoAT56C+h23tOpIynn8xmHY6LcxxwPGqEgbggL8=;
	b=NIhr69+OtpqXstkMNcDOKP0hbE+nWmJOYDF4ITusVK6zKDXPfIdNKXx7hYm3pnjL8y+Kdd
	9btmPoyXHbrF5GRjVMwY+DG3emoadrQ0q2nhzKKbnYJipTQCLJssGnyUeLDdY/6K75w2sK
	2ENuFPrvJz5KUHd8OTMuPrAGGmp0gl4=
From: Juergen Gross <jgross@suse.com>
To: xen-devel@lists.xenproject.org
Cc: Juergen Gross <jgross@suse.com>,
	Wei Liu <wl@xen.org>,
	Anthony PERARD <anthony.perard@citrix.com>
Subject: [PATCH v3 12/33] tools/xenlogd: add 9pfs create request support
Date: Thu,  4 Jan 2024 10:00:34 +0100
Message-Id: <20240104090055.27323-13-jgross@suse.com>
X-Mailer: git-send-email 2.35.3
In-Reply-To: <20240104090055.27323-1-jgross@suse.com>
References: <20240104090055.27323-1-jgross@suse.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Spam-Level: 
X-Spam-Level: 
X-Spamd-Result: default: False [-2.10 / 50.00];
	 ARC_NA(0.00)[];
	 RCVD_VIA_SMTP_AUTH(0.00)[];
	 FROM_HAS_DN(0.00)[];
	 RCPT_COUNT_THREE(0.00)[4];
	 R_MISSING_CHARSET(2.50)[];
	 TO_MATCH_ENVRCPT_ALL(0.00)[];
	 MIME_GOOD(-0.10)[text/plain];
	 REPLY(-4.00)[];
	 BROKEN_CONTENT_TYPE(1.50)[];
	 RCVD_COUNT_THREE(0.00)[3];
	 TO_DN_SOME(0.00)[];
	 DKIM_SIGNED(0.00)[suse.com:s=susede1];
	 MID_CONTAINS_FROM(1.00)[];
	 DBL_BLOCKED_OPENRESOLVER(0.00)[suse.com:email];
	 FUZZY_BLOCKED(0.00)[rspamd.com];
	 FROM_EQ_ENVFROM(0.00)[];
	 MIME_TRACE(0.00)[0:+];
	 RCVD_TLS_ALL(0.00)[];
	 BAYES_HAM(-3.00)[100.00%]
Authentication-Results: smtp-out1.suse.de;
	none
X-Spam-Score: -2.10
X-Spam-Flag: NO

Add the create request of the 9pfs protocol.

Signed-off-by: Juergen Gross <jgross@suse.com>
---
V2:
- set permissions correctly (Jason Andryuk)
V3:
- use opendirat() etc. (Jason Andryuk)
- rework error handling a little bit
---
 tools/xen-9pfsd/io.c | 155 +++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 155 insertions(+)

diff --git a/tools/xen-9pfsd/io.c b/tools/xen-9pfsd/io.c
index 4adef6715f..9d816dc97e 100644
--- a/tools/xen-9pfsd/io.c
+++ b/tools/xen-9pfsd/io.c
@@ -32,6 +32,7 @@
 #define P9_CMD_ERROR      107
 #define P9_CMD_WALK       110
 #define P9_CMD_OPEN       112
+#define P9_CMD_CREATE     114
 #define P9_CMD_CLUNK      120
 
 /* P9 protocol open flags. */
@@ -42,6 +43,12 @@
 #define P9_OTRUNC        0x10   /* or'ed in, truncate file first */
 #define P9_OREMOVE       0x40   /* or'ed in, remove file after clunk */
 
+/* P9 protocol create permission masks. */
+#define P9_CREATE_PERM_DIR        0x80000000
+#define P9_CREATE_PERM_NOTSUPP    0x03b00000   /* link, symlink, ... */
+#define P9_CREATE_PERM_DIR_MASK   0777
+#define P9_CREATE_PERM_FILE_MASK  0666
+
 #define P9_MIN_MSIZE      2048
 #define P9_VERSION        "9P2000.u"
 #define P9_WALK_MAXELEM   16
@@ -951,6 +958,150 @@ static void p9_open(struct ring *ring, struct p9_header *hdr)
     p9_error(ring, hdr->tag, errno);
 }
 
+static void p9_create(struct ring *ring, struct p9_header *hdr)
+{
+    device *device = ring->device;
+    uint32_t fid;
+    unsigned int name_off;
+    uint32_t perm;
+    uint8_t mode;
+    unsigned int ext_off;
+    struct p9_fid *fidp;
+    struct p9_fid *new_fidp;
+    char *path;
+    const char *relpath;
+    struct stat st;
+    struct p9_qid qid;
+    uint32_t iounit;
+    int flags;
+    int ret;
+
+    ret = fill_data(ring, "USUbS", &fid, &name_off, &perm, &mode, &ext_off);
+    if ( ret != 5 )
+    {
+        p9_error(ring, hdr->tag, EINVAL);
+        return;
+    }
+
+    if ( !name_ok(ring->str + name_off) )
+    {
+        p9_error(ring, hdr->tag, ENOENT);
+        return;
+    }
+
+    if ( perm & P9_CREATE_PERM_NOTSUPP )
+    {
+        p9_error(ring, hdr->tag, EINVAL);
+        return;
+    }
+
+    fidp = get_fid_ref(device, fid);
+    if ( !fidp || fidp->opened )
+    {
+        free_fid(device, fidp);
+        p9_error(ring, hdr->tag, EINVAL);
+        return;
+    }
+    if ( fstatat(device->root_fd, relpath_from_path(fidp->path), &st, 0) < 0 )
+    {
+        free_fid(device, fidp);
+        p9_error(ring, hdr->tag, errno);
+        return;
+    }
+
+    path = malloc(strlen(fidp->path) + strlen(ring->str + name_off) + 2);
+    if ( !path )
+    {
+        free_fid(device, fidp);
+        p9_error(ring, hdr->tag, ENOMEM);
+        return;
+    }
+    sprintf(path, "%s/%s", strcmp(fidp->path, "/") ? fidp->path : "",
+            ring->str + name_off);
+    new_fidp = alloc_fid_mem(device, fid, path);
+    free(path);
+    if ( !new_fidp )
+    {
+        free_fid(device, fidp);
+        p9_error(ring, hdr->tag, ENOMEM);
+        return;
+    }
+
+    relpath = relpath_from_path(new_fidp->path);
+
+    pthread_mutex_lock(&device->fid_mutex);
+
+    new_fidp->ref = fidp->ref;
+
+    if ( perm & P9_CREATE_PERM_DIR )
+    {
+        perm &= P9_CREATE_PERM_DIR_MASK & st.st_mode;
+        if ( mode != P9_OREAD )
+        {
+            errno = EINVAL;
+            goto err;
+        }
+        if ( mkdirat(device->root_fd, relpath, perm) < 0 )
+            goto err;
+
+        XEN_TAILQ_REMOVE(&device->fids, fidp, list);
+        XEN_TAILQ_INSERT_HEAD(&device->fids, new_fidp, list);
+        free(fidp);
+        fidp = new_fidp;
+        new_fidp = NULL;
+
+        fidp->fd = openat(device->root_fd, relpath, O_RDONLY);
+        if ( fidp->fd < 0 )
+            goto err;
+        fidp->data = fdopendir(fidp->fd);
+        if ( !fidp->data )
+            goto err;
+    }
+    else
+    {
+        flags = open_flags_from_mode(mode);
+        if ( flags < 0 )
+        {
+            errno = EINVAL;
+            goto err;
+        }
+        perm &= P9_CREATE_PERM_FILE_MASK & st.st_mode;
+
+        XEN_TAILQ_REMOVE(&device->fids, fidp, list);
+        XEN_TAILQ_INSERT_HEAD(&device->fids, new_fidp, list);
+        free(fidp);
+        fidp = new_fidp;
+        new_fidp = NULL;
+
+        fidp->fd = openat(device->root_fd, relpath, flags | O_CREAT | O_EXCL,
+                          perm);
+        if ( fidp->fd < 0 )
+            goto err;
+    }
+
+    if ( fstatat(device->root_fd, relpath, &st, 0) < 0 )
+        goto err;
+
+    fill_qid(device, fidp->path, &qid, &st);
+    iounit = get_iounit(ring, &st);
+    fidp->opened = true;
+    fidp->mode = mode;
+
+    pthread_mutex_unlock(&device->fid_mutex);
+
+    fill_buffer(ring, hdr->cmd + 1, hdr->tag, "QU", &qid, &iounit);
+
+    return;
+
+ err:
+    p9_error(ring, hdr->tag, errno);
+
+    pthread_mutex_unlock(&device->fid_mutex);
+
+    free(new_fidp);
+    free_fid(device, fidp);
+}
+
 static void p9_clunk(struct ring *ring, struct p9_header *hdr)
 {
     device *device = ring->device;
@@ -1060,6 +1211,10 @@ void *io_thread(void *arg)
                 p9_open(ring, &hdr);
                 break;
 
+            case P9_CMD_CREATE:
+                p9_create(ring, &hdr);
+                break;
+
             case P9_CMD_CLUNK:
                 p9_clunk(ring, &hdr);
                 break;
-- 
2.35.3



From xen-devel-bounces@lists.xenproject.org Thu Jan 04 09:12:51 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 04 Jan 2024 09:12:51 +0000
Received: from list by lists.xenproject.org with outflank-mailman.661297.1031067 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLJmV-0006DC-1E; Thu, 04 Jan 2024 09:12:51 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 661297.1031067; Thu, 04 Jan 2024 09:12:50 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLJmU-0006CW-RZ; Thu, 04 Jan 2024 09:12:50 +0000
Received: by outflank-mailman (input) for mailman id 661297;
 Thu, 04 Jan 2024 09:12:50 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=4u2H=IO=suse.com=jgross@srs-se1.protection.inumbo.net>)
 id 1rLJd5-00085z-Jz
 for xen-devel@lists.xenproject.org; Thu, 04 Jan 2024 09:03:07 +0000
Received: from smtp-out2.suse.de (smtp-out2.suse.de
 [2a07:de40:b251:101:10:150:64:2])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 1352774b-aae0-11ee-98ef-6d05b1d4d9a1;
 Thu, 04 Jan 2024 10:03:07 +0100 (CET)
Received: from imap1.dmz-prg2.suse.org (imap1.dmz-prg2.suse.org [10.150.64.97])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
 (No client certificate requested)
 by smtp-out2.suse.de (Postfix) with ESMTPS id AA03D1F7F8;
 Thu,  4 Jan 2024 09:03:06 +0000 (UTC)
Received: from imap1.dmz-prg2.suse.org (localhost [127.0.0.1])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
 (No client certificate requested)
 by imap1.dmz-prg2.suse.org (Postfix) with ESMTPS id 8011813722;
 Thu,  4 Jan 2024 09:03:06 +0000 (UTC)
Received: from dovecot-director2.suse.de ([2a07:de40:b281:106:10:150:64:167])
 by imap1.dmz-prg2.suse.org with ESMTPSA id +FH+HUp0lmU0WQAAD6G6ig
 (envelope-from <jgross@suse.com>); Thu, 04 Jan 2024 09:03:06 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 1352774b-aae0-11ee-98ef-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1704358986; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=Ssx28FcEWEf2WDI9VVHEBGrcITBSOtj2P4cTrF0KhcY=;
	b=mg93sztlJ1BGH9KTiHaoUtYeL3OkskcbD0YDM0CwRBw0bFUNtu0hN/Ze9elQfPDslAEZmJ
	TD98sq+9mo1YwK9My4O1xmS0E9t5r1aPbIvwatkaJMGD1zY/ScYrRLGbZnxDGV3wQDVSus
	QkzoOGkonSXVYL+eJxKm8Bil5zOofGk=
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1704358986; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=Ssx28FcEWEf2WDI9VVHEBGrcITBSOtj2P4cTrF0KhcY=;
	b=mg93sztlJ1BGH9KTiHaoUtYeL3OkskcbD0YDM0CwRBw0bFUNtu0hN/Ze9elQfPDslAEZmJ
	TD98sq+9mo1YwK9My4O1xmS0E9t5r1aPbIvwatkaJMGD1zY/ScYrRLGbZnxDGV3wQDVSus
	QkzoOGkonSXVYL+eJxKm8Bil5zOofGk=
From: Juergen Gross <jgross@suse.com>
To: xen-devel@lists.xenproject.org
Cc: Juergen Gross <jgross@suse.com>,
	Wei Liu <wl@xen.org>,
	Julien Grall <julien@xen.org>,
	Anthony PERARD <anthony.perard@citrix.com>
Subject: [PATCH v3 23/33] tools/xenstored: move systemd handling to posix.c
Date: Thu,  4 Jan 2024 10:00:45 +0100
Message-Id: <20240104090055.27323-24-jgross@suse.com>
X-Mailer: git-send-email 2.35.3
In-Reply-To: <20240104090055.27323-1-jgross@suse.com>
References: <20240104090055.27323-1-jgross@suse.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Spam-Level: 
X-Spam-Level: 
X-Spamd-Result: default: False [0.90 / 50.00];
	 ARC_NA(0.00)[];
	 RCVD_VIA_SMTP_AUTH(0.00)[];
	 FROM_HAS_DN(0.00)[];
	 TO_DN_SOME(0.00)[];
	 R_MISSING_CHARSET(2.50)[];
	 TO_MATCH_ENVRCPT_ALL(0.00)[];
	 MIME_GOOD(-0.10)[text/plain];
	 REPLY(-4.00)[];
	 BROKEN_CONTENT_TYPE(1.50)[];
	 RCPT_COUNT_FIVE(0.00)[5];
	 RCVD_COUNT_THREE(0.00)[3];
	 DKIM_SIGNED(0.00)[suse.com:s=susede1];
	 MID_CONTAINS_FROM(1.00)[];
	 DBL_BLOCKED_OPENRESOLVER(0.00)[suse.com:email];
	 FUZZY_BLOCKED(0.00)[rspamd.com];
	 FROM_EQ_ENVFROM(0.00)[];
	 MIME_TRACE(0.00)[0:+];
	 RCVD_TLS_ALL(0.00)[]
Authentication-Results: smtp-out2.suse.de;
	none
X-Spam-Score: 0.90
X-Spam-Flag: NO

Move systemd handling to a new late_init() function in posix.c.

This prepares a future removal of the NO_SOCKETS macro.

Signed-off-by: Juergen Gross <jgross@suse.com>
---
V3:
- new patch
---
 tools/xenstored/core.c   | 17 +----------------
 tools/xenstored/core.h   |  1 +
 tools/xenstored/minios.c |  4 ++++
 tools/xenstored/posix.c  | 13 +++++++++++++
 4 files changed, 19 insertions(+), 16 deletions(-)

diff --git a/tools/xenstored/core.c b/tools/xenstored/core.c
index eba7744fde..7b5e1d0c0f 100644
--- a/tools/xenstored/core.c
+++ b/tools/xenstored/core.c
@@ -54,16 +54,6 @@
 #include "control.h"
 #include "lu.h"
 
-#ifndef NO_SOCKETS
-#if defined(HAVE_SYSTEMD)
-#define XEN_SYSTEMD_ENABLED 1
-#endif
-#endif
-
-#if defined(XEN_SYSTEMD_ENABLED)
-#include <systemd/sd-daemon.h>
-#endif
-
 extern xenevtchn_handle *xce_handle; /* in domain.c */
 static int xce_pollfd_idx = -1;
 static struct pollfd *fds;
@@ -2938,12 +2928,7 @@ int main(int argc, char *argv[])
 	/* Get ready to listen to the tools. */
 	initialize_fds(&sock_pollfd_idx, &timeout);
 
-#if defined(XEN_SYSTEMD_ENABLED)
-	if (!live_update) {
-		sd_notify(1, "READY=1");
-		fprintf(stderr, SD_NOTICE "xenstored is ready\n");
-	}
-#endif
+	late_init(live_update);
 
 	/* Main loop. */
 	for (;;) {
diff --git a/tools/xenstored/core.h b/tools/xenstored/core.h
index 72173f1684..0de2d8a26e 100644
--- a/tools/xenstored/core.h
+++ b/tools/xenstored/core.h
@@ -385,6 +385,7 @@ static inline bool domain_is_unprivileged(const struct connection *conn)
 /* Return the event channel used by xenbus. */
 evtchn_port_t get_xenbus_evtchn(void);
 void early_init(bool live_update, bool dofork, const char *pidfile);
+void late_init(bool live_update);
 
 void init_sockets(void);
 extern int reopen_log_pipe[2];
diff --git a/tools/xenstored/minios.c b/tools/xenstored/minios.c
index 4f48f63083..45bb0440be 100644
--- a/tools/xenstored/minios.c
+++ b/tools/xenstored/minios.c
@@ -49,3 +49,7 @@ void unmap_xenbus(void *interface)
 void early_init(bool live_update, bool dofork, const char *pidfile)
 {
 }
+
+void late_init(bool live_update)
+{
+}
diff --git a/tools/xenstored/posix.c b/tools/xenstored/posix.c
index 9463ef5c8d..97c8dcaba3 100644
--- a/tools/xenstored/posix.c
+++ b/tools/xenstored/posix.c
@@ -24,6 +24,9 @@
 #include <stdlib.h>
 #include <syslog.h>
 #include <sys/mman.h>
+#if defined(HAVE_SYSTEMD)
+#include <systemd/sd-daemon.h>
+#endif
 #include <xen-tools/xenstore-common.h>
 
 #include "utils.h"
@@ -184,3 +187,13 @@ void early_init(bool live_update, bool dofork, const char *pidfile)
 	if (!live_update)
 		init_sockets();
 }
+
+void late_init(bool live_update)
+{
+#if defined(HAVE_SYSTEMD)
+	if (!live_update) {
+		sd_notify(1, "READY=1");
+		fprintf(stderr, SD_NOTICE "xenstored is ready\n");
+	}
+#endif
+}
-- 
2.35.3



From xen-devel-bounces@lists.xenproject.org Thu Jan 04 09:12:52 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 04 Jan 2024 09:12:52 +0000
Received: from list by lists.xenproject.org with outflank-mailman.661298.1031081 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLJmW-0006hF-Hz; Thu, 04 Jan 2024 09:12:52 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 661298.1031081; Thu, 04 Jan 2024 09:12:52 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLJmW-0006h6-Dd; Thu, 04 Jan 2024 09:12:52 +0000
Received: by outflank-mailman (input) for mailman id 661298;
 Thu, 04 Jan 2024 09:12:50 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=4u2H=IO=suse.com=jgross@srs-se1.protection.inumbo.net>)
 id 1rLJdz-00085z-24
 for xen-devel@lists.xenproject.org; Thu, 04 Jan 2024 09:04:03 +0000
Received: from smtp-out2.suse.de (smtp-out2.suse.de [195.135.223.131])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 346225e0-aae0-11ee-98ef-6d05b1d4d9a1;
 Thu, 04 Jan 2024 10:04:02 +0100 (CET)
Received: from imap1.dmz-prg2.suse.org (imap1.dmz-prg2.suse.org
 [IPv6:2a07:de40:b281:104:10:150:64:97])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
 (No client certificate requested)
 by smtp-out2.suse.de (Postfix) with ESMTPS id 3ACDA1F7F8;
 Thu,  4 Jan 2024 09:04:02 +0000 (UTC)
Received: from imap1.dmz-prg2.suse.org (localhost [127.0.0.1])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
 (No client certificate requested)
 by imap1.dmz-prg2.suse.org (Postfix) with ESMTPS id 00BCE13722;
 Thu,  4 Jan 2024 09:04:01 +0000 (UTC)
Received: from dovecot-director2.suse.de ([2a07:de40:b281:106:10:150:64:167])
 by imap1.dmz-prg2.suse.org with ESMTPSA id cmd+OoF0lmV/WQAAD6G6ig
 (envelope-from <jgross@suse.com>); Thu, 04 Jan 2024 09:04:01 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 346225e0-aae0-11ee-98ef-6d05b1d4d9a1
From: Juergen Gross <jgross@suse.com>
To: xen-devel@lists.xenproject.org
Cc: Juergen Gross <jgross@suse.com>,
	Wei Liu <wl@xen.org>,
	Julien Grall <julien@xen.org>,
	Anthony PERARD <anthony.perard@citrix.com>,
	Jason Andryuk <jandryuk@gmail.com>
Subject: [PATCH v3 33/33] tools/xenstored: have a single do_control_memreport()
Date: Thu,  4 Jan 2024 10:00:55 +0100
Message-Id: <20240104090055.27323-34-jgross@suse.com>
X-Mailer: git-send-email 2.35.3
In-Reply-To: <20240104090055.27323-1-jgross@suse.com>
References: <20240104090055.27323-1-jgross@suse.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Spam-Level: 
X-Spam-Level: 
Authentication-Results: smtp-out2.suse.de;
	none
X-Rspamd-Server: rspamd2.dmz-prg2.suse.org
X-Spamd-Result: default: False [-4.00 / 50.00];
	 REPLY(-4.00)[]
X-Spam-Score: -4.00
X-Rspamd-Queue-Id: 3ACDA1F7F8
X-Spam-Flag: NO

With 9pfs now available in Xenstore-stubdom, there is no reason to
have distinct do_control_memreport() variants for the daemon and the
stubdom implementations.

Signed-off-by: Juergen Gross <jgross@suse.com>
Reviewed-by: Jason Andryuk <jandryuk@gmail.com>
---
 tools/xenstored/control.c | 27 +++++++--------------------
 1 file changed, 7 insertions(+), 20 deletions(-)

diff --git a/tools/xenstored/control.c b/tools/xenstored/control.c
index dae23a5ac0..9561289179 100644
--- a/tools/xenstored/control.c
+++ b/tools/xenstored/control.c
@@ -216,23 +216,11 @@ static int do_control_logfile(const void *ctx, struct connection *conn,
 	return 0;
 }
 
-#ifdef __MINIOS__
-static int do_control_memreport(const void *ctx, struct connection *conn,
-				const char **vec, int num)
-{
-	if (num)
-		return EINVAL;
-
-	talloc_report_full(NULL, stdout);
-
-	send_ack(conn, XS_CONTROL);
-	return 0;
-}
-#else
 static int do_control_memreport(const void *ctx, struct connection *conn,
 				const char **vec, int num)
 {
 	FILE *fp;
+	const char *filename;
 	int fd;
 
 	if (num > 1)
@@ -255,8 +243,12 @@ static int do_control_memreport(const void *ctx, struct connection *conn,
 			if (!fp)
 				close(fd);
 		}
-	} else
-		fp = fopen(vec[0], "a");
+	} else {
+		filename = absolute_filename(ctx, vec[0]);
+		if (!filename)
+			return ENOMEM;
+		fp = fopen(filename, "a");
+	}
 
 	if (!fp)
 		return EBADF;
@@ -267,7 +259,6 @@ static int do_control_memreport(const void *ctx, struct connection *conn,
 	send_ack(conn, XS_CONTROL);
 	return 0;
 }
-#endif
 
 static int do_control_print(const void *ctx, struct connection *conn,
 			    const char **vec, int num)
@@ -310,11 +301,7 @@ static struct cmd_s cmds[] = {
 		"    Default timeout is 60 seconds.", 5 },
 #endif
 	{ "logfile", do_control_logfile, "<file>" },
-#ifdef __MINIOS__
-	{ "memreport", do_control_memreport, "" },
-#else
 	{ "memreport", do_control_memreport, "[<file>]" },
-#endif
 	{ "print", do_control_print, "<string>" },
 	{ "quota", do_control_quota,
 		"[set <name> <val>|<domid>|max [-r]]" },
-- 
2.35.3



From xen-devel-bounces@lists.xenproject.org Thu Jan 04 09:12:55 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 04 Jan 2024 09:12:55 +0000
Received: from list by lists.xenproject.org with outflank-mailman.661305.1031091 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLJmZ-00076O-Rd; Thu, 04 Jan 2024 09:12:55 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 661305.1031091; Thu, 04 Jan 2024 09:12:55 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLJmZ-00076F-O7; Thu, 04 Jan 2024 09:12:55 +0000
Received: by outflank-mailman (input) for mailman id 661305;
 Thu, 04 Jan 2024 09:12:54 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=4u2H=IO=suse.com=jgross@srs-se1.protection.inumbo.net>)
 id 1rLJcY-00085z-CH
 for xen-devel@lists.xenproject.org; Thu, 04 Jan 2024 09:02:34 +0000
Received: from smtp-out2.suse.de (smtp-out2.suse.de [195.135.223.131])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id ff7cdd4a-aadf-11ee-98ef-6d05b1d4d9a1;
 Thu, 04 Jan 2024 10:02:33 +0100 (CET)
Received: from imap1.dmz-prg2.suse.org (imap1.dmz-prg2.suse.org
 [IPv6:2a07:de40:b281:104:10:150:64:97])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
 (No client certificate requested)
 by smtp-out2.suse.de (Postfix) with ESMTPS id 779F41F7F8;
 Thu,  4 Jan 2024 09:02:33 +0000 (UTC)
Received: from imap1.dmz-prg2.suse.org (localhost [127.0.0.1])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
 (No client certificate requested)
 by imap1.dmz-prg2.suse.org (Postfix) with ESMTPS id 4C03013722;
 Thu,  4 Jan 2024 09:02:33 +0000 (UTC)
Received: from dovecot-director2.suse.de ([2a07:de40:b281:106:10:150:64:167])
 by imap1.dmz-prg2.suse.org with ESMTPSA id RjdAESl0lmUBWQAAD6G6ig
 (envelope-from <jgross@suse.com>); Thu, 04 Jan 2024 09:02:33 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: ff7cdd4a-aadf-11ee-98ef-6d05b1d4d9a1
From: Juergen Gross <jgross@suse.com>
To: xen-devel@lists.xenproject.org
Cc: Juergen Gross <jgross@suse.com>,
	Wei Liu <wl@xen.org>,
	Anthony PERARD <anthony.perard@citrix.com>,
	Jason Andryuk <jandryuk@gmail.com>
Subject: [PATCH v3 17/33] tools/xl: support new 9pfs backend xen-9pfsd
Date: Thu,  4 Jan 2024 10:00:39 +0100
Message-Id: <20240104090055.27323-18-jgross@suse.com>
X-Mailer: git-send-email 2.35.3
In-Reply-To: <20240104090055.27323-1-jgross@suse.com>
References: <20240104090055.27323-1-jgross@suse.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Spam-Level: 
X-Rspamd-Server: rspamd1.dmz-prg2.suse.org
X-Spam-Level: 
X-Spam-Flag: NO
X-Spamd-Result: default: False [-4.00 / 50.00];
	 REPLY(-4.00)[]
Authentication-Results: smtp-out2.suse.de;
	none
X-Spam-Score: -4.00
X-Rspamd-Queue-Id: 779F41F7F8

Add support for the new 9pfs backend "xen-9pfsd". For this backend type
the tag defaults to "Xen" and the host side path to
"/var/log/xen/guests/<dom-name>".

Signed-off-by: Juergen Gross <jgross@suse.com>
Reviewed-by: Jason Andryuk <jandryuk@gmail.com>
---
V2:
- test max_files and max_open_files, too (Jason Andryuk)
---
 docs/man/xl.cfg.5.pod.in | 36 ++++++++++++++++++++++++++++++++++--
 tools/xl/xl_parse.c      | 36 ++++++++++++++++++++++++++++++++++++
 2 files changed, 70 insertions(+), 2 deletions(-)

diff --git a/docs/man/xl.cfg.5.pod.in b/docs/man/xl.cfg.5.pod.in
index 2e234b450e..80011adbf3 100644
--- a/docs/man/xl.cfg.5.pod.in
+++ b/docs/man/xl.cfg.5.pod.in
@@ -772,10 +772,16 @@ settings, from the following list:
 
 =over 4
 
+=item B<type=TYPE>
+
+The backendtype for the PV device. Supported values are B<qemu> and
+B<xen-9pfsd>.  The default is B<qemu>.
+
 =item B<tag=STRING>
 
 9pfs tag to identify the filesystem share. The tag is needed on the
-guest side to mount it.
+guest side to mount it. For the backendtype of B<xen-9pfsd> the tag defaults to
+"Xen".
 
 =item B<security_model="none">
 
@@ -785,12 +791,38 @@ squash or remap).
 
 =item B<path=STRING>
 
-Filesystem path on the backend to export.
+Filesystem path on the backend to export. For the backendtype of B<xen-9pfsd>
+the path defaults to "@XEN_LOG_DIR@/guests/<guest-name>".
 
 =item B<backend=domain-id>
 
 Specify the backend domain name or id, defaults to dom0.
 
+=item B<max-files=NUMBER>
+
+Specify the maximum number of files below B<path>. A value of 0 (which
+is the default) doesn't limit the number of files. Only valid for
+B<type=xen-9pfsd>.
+
+=item B<max-open-files=NUMBER>
+
+Specify the maximum number of concurrently opened files below B<path>.
+Multiple opens of the same file are counted individually. Only valid for
+B<type=xen-9pfsd>, which has a default of B<max-open-files=5>.
+
+=item B<max-space=NUMBER>
+
+Specify the maximum used disk space in MiB below B<path>. A value of 0 (which
+is the default) doesn't limit the usable disk space. Only valid for
+B<type=xen-9pfsd>.
+
+=item B<auto-delete=BOOLEAN>
+
+When set the backend will delete the oldest file which is currently not
+opened by the guest in case the disk space limit set via B<max-space> or the
+file limit set via B<max-files> is being reached. Only valid for
+B<type=xen-9pfsd>.
+
 =back
 
 =item B<pvcalls=[ "backend=domain-id", ... ]>
diff --git a/tools/xl/xl_parse.c b/tools/xl/xl_parse.c
index ed983200c3..3ded557ebc 100644
--- a/tools/xl/xl_parse.c
+++ b/tools/xl/xl_parse.c
@@ -2232,6 +2232,20 @@ void parse_config_data(const char *config_source,
                     replace_string(&p9->tag, value);
                 } else if (!strcmp(key, "backend")) {
                     replace_string(&p9->backend_domname, value);
+                } else if (!strcmp(key, "type")) {
+                    if (libxl_p9_type_from_string(value, &p9->type)) {
+                        fprintf(stderr, "failed to parse 9pfs type: %s\n",
+                                value);
+                        exit(1);
+                    }
+                } else if (!strcmp(key, "max-files")) {
+                    p9->max_files = parse_ulong(value);
+                } else if (!strcmp(key, "max-open-files")) {
+                    p9->max_open_files = parse_ulong(value);
+                } else if (!strcmp(key, "max-space")) {
+                    p9->max_space = parse_ulong(value);
+                } else if (!strcmp(key, "auto-delete")) {
+                    p9->auto_delete = strtoul(value, NULL, 0);
                 } else {
                     fprintf(stderr, "Unknown 9pfs parameter '%s'\n", key);
                     exit(1);
@@ -2242,6 +2256,28 @@ void parse_config_data(const char *config_source,
 
             libxl_string_list_dispose(&pairs);
 
+            if (p9->type == LIBXL_P9_TYPE_UNKNOWN) {
+                p9->type = LIBXL_P9_TYPE_QEMU;
+            }
+            if (p9->type == LIBXL_P9_TYPE_QEMU &&
+                (p9->max_files || p9->max_open_files || p9->max_space ||
+                 p9->auto_delete)) {
+                fprintf(stderr, "Illegal 9pfs parameter combination\n");
+                exit(1);
+            }
+            if (p9->type == LIBXL_P9_TYPE_XEN_9PFSD) {
+                if (!p9->tag) {
+                    replace_string(&p9->tag, "Xen");
+                }
+                if (!p9->path) {
+                    char *path;
+
+                    xasprintf(&path, XEN_LOG_DIR "/guests/%s", c_info->name);
+                    replace_string(&p9->path, path);
+                    free(path);
+                }
+            }
+
             if (!p9->path || !p9->security_model || !p9->tag) {
                 fprintf(stderr, "9pfs spec missing required field!\n");
                 exit(1);
-- 
2.35.3



From xen-devel-bounces@lists.xenproject.org Thu Jan 04 09:13:22 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 04 Jan 2024 09:13:22 +0000
Received: from list by lists.xenproject.org with outflank-mailman.661322.1031101 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLJn0-00006b-3s; Thu, 04 Jan 2024 09:13:22 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 661322.1031101; Thu, 04 Jan 2024 09:13:22 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLJn0-00006U-0x; Thu, 04 Jan 2024 09:13:22 +0000
Received: by outflank-mailman (input) for mailman id 661322;
 Thu, 04 Jan 2024 09:13:21 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=4u2H=IO=suse.com=jgross@srs-se1.protection.inumbo.net>)
 id 1rLJbw-0007Zm-LE
 for xen-devel@lists.xenproject.org; Thu, 04 Jan 2024 09:01:56 +0000
Received: from smtp-out2.suse.de (smtp-out2.suse.de [195.135.223.131])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id e86b9a0c-aadf-11ee-9b0f-b553b5be7939;
 Thu, 04 Jan 2024 10:01:55 +0100 (CET)
Received: from imap1.dmz-prg2.suse.org (imap1.dmz-prg2.suse.org
 [IPv6:2a07:de40:b281:104:10:150:64:97])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
 (No client certificate requested)
 by smtp-out2.suse.de (Postfix) with ESMTPS id BDE611F7F8;
 Thu,  4 Jan 2024 09:01:54 +0000 (UTC)
Received: from imap1.dmz-prg2.suse.org (localhost [127.0.0.1])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
 (No client certificate requested)
 by imap1.dmz-prg2.suse.org (Postfix) with ESMTPS id 9939813722;
 Thu,  4 Jan 2024 09:01:54 +0000 (UTC)
Received: from dovecot-director2.suse.de ([2a07:de40:b281:106:10:150:64:167])
 by imap1.dmz-prg2.suse.org with ESMTPSA id aokSJAJ0lmXMWAAAD6G6ig
 (envelope-from <jgross@suse.com>); Thu, 04 Jan 2024 09:01:54 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: e86b9a0c-aadf-11ee-9b0f-b553b5be7939
From: Juergen Gross <jgross@suse.com>
To: xen-devel@lists.xenproject.org
Cc: Juergen Gross <jgross@suse.com>,
	Wei Liu <wl@xen.org>,
	Anthony PERARD <anthony.perard@citrix.com>
Subject: [PATCH v3 10/33] tools/xenlogd: add 9pfs open request support
Date: Thu,  4 Jan 2024 10:00:32 +0100
Message-Id: <20240104090055.27323-11-jgross@suse.com>
X-Mailer: git-send-email 2.35.3
In-Reply-To: <20240104090055.27323-1-jgross@suse.com>
References: <20240104090055.27323-1-jgross@suse.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Spam-Level: 
X-Rspamd-Server: rspamd1.dmz-prg2.suse.org
X-Spam-Level: 
X-Spam-Flag: NO
X-Spamd-Result: default: False [-4.00 / 50.00];
	 REPLY(-4.00)[]
Authentication-Results: smtp-out2.suse.de;
	none
X-Spam-Score: -4.00
X-Rspamd-Queue-Id: BDE611F7F8

Add the open request of the 9pfs protocol.

Signed-off-by: Juergen Gross <jgross@suse.com>
---
V2:
- don't allow to open symbolic link
V3:
- use openat() (Jason Andryuk)
- use common error handling in p9_open()
---
 tools/xen-9pfsd/io.c        | 139 ++++++++++++++++++++++++++++++++++++
 tools/xen-9pfsd/xen-9pfsd.h |   4 ++
 2 files changed, 143 insertions(+)

diff --git a/tools/xen-9pfsd/io.c b/tools/xen-9pfsd/io.c
index 8aff33fd38..e7db90a972 100644
--- a/tools/xen-9pfsd/io.c
+++ b/tools/xen-9pfsd/io.c
@@ -19,6 +19,8 @@
 #include <syslog.h>
 #include <sys/types.h>
 #include <sys/stat.h>
+#include <dirent.h>
+#include <fcntl.h>
 #include <xenctrl.h>           /* For cpu barriers. */
 #include <xen-tools/common-macros.h>
 
@@ -29,6 +31,15 @@
 #define P9_CMD_ATTACH     104
 #define P9_CMD_ERROR      107
 #define P9_CMD_WALK       110
+#define P9_CMD_OPEN       112
+
+/* P9 protocol open flags. */
+#define P9_OREAD            0   /* read */
+#define P9_OWRITE           1   /* write */
+#define P9_ORDWR            2   /* read and write */
+#define P9_OMODEMASK     0x03
+#define P9_OTRUNC        0x10   /* or'ed in, truncate file first */
+#define P9_OREMOVE       0x40   /* or'ed in, remove file after clunk */
 
 #define P9_MIN_MSIZE      2048
 #define P9_VERSION        "9P2000.u"
@@ -815,6 +826,130 @@ static void p9_walk(struct ring *ring, struct p9_header *hdr)
     free(names);
 }
 
+static int open_flags_from_mode(uint8_t mode)
+{
+    int flags;
+
+    switch ( mode & P9_OMODEMASK )
+    {
+    case P9_OREAD:
+        flags = O_RDONLY;
+        break;
+
+    case P9_OWRITE:
+        flags = O_WRONLY;
+        break;
+
+    case P9_ORDWR:
+        flags = O_RDWR;
+        break;
+
+    default:
+        errno = EINVAL;
+        return -1;
+    }
+
+    if ( mode & P9_OTRUNC )
+        flags |= O_TRUNC;
+
+    return flags;
+}
+
+static unsigned int get_iounit(struct ring *ring, struct stat *st)
+{
+    return (ring->max_size - st->st_blksize) & ~(st->st_blksize - 1);
+}
+
+static void p9_open(struct ring *ring, struct p9_header *hdr)
+{
+    device *device = ring->device;
+    uint32_t fid;
+    uint8_t mode;
+    struct p9_fid *fidp;
+    struct stat st;
+    struct p9_qid qid;
+    uint32_t iounit;
+    int flags;
+    int ret;
+
+    ret = fill_data(ring, "Ub", &fid, &mode);
+    if ( ret != 2 )
+    {
+        p9_error(ring, hdr->tag, EINVAL);
+        return;
+    }
+    if ( mode & ~(P9_OMODEMASK | P9_OTRUNC | P9_OREMOVE) )
+    {
+        p9_error(ring, hdr->tag, EINVAL);
+        return;
+    }
+
+    fidp = get_fid_ref(device, fid);
+    if ( !fidp )
+    {
+        p9_error(ring, hdr->tag, ENOENT);
+        return;
+    }
+    if ( fidp->opened )
+    {
+        errno = EINVAL;
+        goto err;
+    }
+
+    if ( fstatat(device->root_fd, relpath_from_path(fidp->path), &st, 0) < 0 )
+    {
+        errno = ENOENT;
+        goto err;
+    }
+
+    if ( S_ISLNK(st.st_mode) )
+    {
+        errno = EMLINK;
+        goto err;
+    }
+
+    fidp->isdir = S_ISDIR(st.st_mode);
+    fidp->mode = mode;
+    if ( fidp->isdir )
+    {
+        if ( mode != P9_OREAD )
+        {
+            errno = EINVAL;
+            goto err;
+        }
+        fidp->fd = openat(device->root_fd, relpath_from_path(fidp->path),
+                          O_RDONLY);
+        if ( fidp->fd < 0 )
+            goto err;
+        fidp->data = fdopendir(fidp->fd);
+        if ( !fidp->data )
+            goto err;
+    }
+    else
+    {
+        flags = open_flags_from_mode(mode);
+        if ( flags < 0 )
+            goto err;
+
+        fidp->fd = openat(device->root_fd, relpath_from_path(fidp->path),
+                          flags);
+        if ( fidp->fd < 0 )
+            goto err;
+    }
+
+    fill_qid(device, fidp->path, &qid, &st);
+    iounit = get_iounit(ring, &st);
+    fidp->opened = true;
+
+    fill_buffer(ring, hdr->cmd + 1, hdr->tag, "QU", &qid, &iounit);
+
+    return;
+
+ err:
+    free_fid(device, fidp);
+    p9_error(ring, hdr->tag, errno);
+}
+
 void *io_thread(void *arg)
 {
     struct ring *ring = arg;
@@ -882,6 +1017,10 @@ void *io_thread(void *arg)
                 p9_walk(ring, &hdr);
                 break;
 
+            case P9_CMD_OPEN:
+                p9_open(ring, &hdr);
+                break;
+
             default:
                 syslog(LOG_DEBUG, "%u.%u sent unhandled command %u\n",
                        ring->device->domid, ring->device->devid, hdr.cmd);
diff --git a/tools/xen-9pfsd/xen-9pfsd.h b/tools/xen-9pfsd/xen-9pfsd.h
index f01fffb0bb..757be2da4b 100644
--- a/tools/xen-9pfsd/xen-9pfsd.h
+++ b/tools/xen-9pfsd/xen-9pfsd.h
@@ -25,7 +25,11 @@ struct p9_fid {
     XEN_TAILQ_ENTRY(struct p9_fid) list;
     unsigned int fid;
     unsigned int ref;
+    int fd;
+    uint8_t mode;
     bool opened;
+    bool isdir;
+    void *data;    /* File type specific. */
     char path[];
 };
 
-- 
2.35.3



From xen-devel-bounces@lists.xenproject.org Thu Jan 04 09:13:26 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 04 Jan 2024 09:13:26 +0000
Received: from list by lists.xenproject.org with outflank-mailman.661324.1031111 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLJn4-0000Tc-DX; Thu, 04 Jan 2024 09:13:26 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 661324.1031111; Thu, 04 Jan 2024 09:13:26 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLJn4-0000TV-Al; Thu, 04 Jan 2024 09:13:26 +0000
Received: by outflank-mailman (input) for mailman id 661324;
 Thu, 04 Jan 2024 09:13:24 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=4u2H=IO=suse.com=jgross@srs-se1.protection.inumbo.net>)
 id 1rLJcT-00085z-4E
 for xen-devel@lists.xenproject.org; Thu, 04 Jan 2024 09:02:29 +0000
Received: from smtp-out2.suse.de (smtp-out2.suse.de [195.135.223.131])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id fc311d61-aadf-11ee-98ef-6d05b1d4d9a1;
 Thu, 04 Jan 2024 10:02:28 +0100 (CET)
Received: from imap1.dmz-prg2.suse.org (imap1.dmz-prg2.suse.org
 [IPv6:2a07:de40:b281:104:10:150:64:97])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
 (No client certificate requested)
 by smtp-out2.suse.de (Postfix) with ESMTPS id ECFDB1F7FA;
 Thu,  4 Jan 2024 09:02:27 +0000 (UTC)
Received: from imap1.dmz-prg2.suse.org (localhost [127.0.0.1])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
 (No client certificate requested)
 by imap1.dmz-prg2.suse.org (Postfix) with ESMTPS id B20CE13722;
 Thu,  4 Jan 2024 09:02:27 +0000 (UTC)
Received: from dovecot-director2.suse.de ([2a07:de40:b281:106:10:150:64:167])
 by imap1.dmz-prg2.suse.org with ESMTPSA id L80rKiN0lmXwWAAAD6G6ig
 (envelope-from <jgross@suse.com>); Thu, 04 Jan 2024 09:02:27 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: fc311d61-aadf-11ee-98ef-6d05b1d4d9a1
From: Juergen Gross <jgross@suse.com>
To: xen-devel@lists.xenproject.org
Cc: Juergen Gross <jgross@suse.com>,
	George Dunlap <george.dunlap@citrix.com>,
	Nick Rosbrook <rosbrookn@gmail.com>,
	Wei Liu <wl@xen.org>,
	Anthony PERARD <anthony.perard@citrix.com>,
	Jason Andryuk <jandryuk@gmail.com>
Subject: [PATCH v3 16/33] tools/libs/light: add backend type for 9pfs PV devices
Date: Thu,  4 Jan 2024 10:00:38 +0100
Message-Id: <20240104090055.27323-17-jgross@suse.com>
X-Mailer: git-send-email 2.35.3
In-Reply-To: <20240104090055.27323-1-jgross@suse.com>
References: <20240104090055.27323-1-jgross@suse.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Spam-Level: 
X-Rspamd-Server: rspamd1.dmz-prg2.suse.org
X-Spam-Level: 
X-Spam-Flag: NO
X-Spamd-Result: default: False [-4.00 / 50.00];
	 REPLY(-4.00)[]
Authentication-Results: smtp-out2.suse.de;
	none
X-Spam-Score: -4.00
X-Rspamd-Queue-Id: ECFDB1F7FA

Make the backend type of 9pfs PV devices configurable. The default is
"qemu" with the related Xenstore backend-side directory being "9pfs".

Add another type "xen-9pfsd" with the related Xenstore backend-side
directory "xen_9pfs".

As additional security features it is possible to specify:
- "max-space" for limiting the maximum space consumed on the filesystem
  in MBs
- "max-files" for limiting the maximum number of files in the
  filesystem
- "max-open-files" for limiting the maximum number of concurrent open
  files

For convenience "auto-delete" is available to let the backend delete the
oldest file of the guest in case otherwise "max-space" or "max-files"
would be violated.

The xen-9pfsd daemon will be started by libxenlight automatically when
the first "xen_9pfs" device is being created.

Signed-off-by: Juergen Gross <jgross@suse.com>
Reviewed-by: Jason Andryuk <jandryuk@gmail.com>
---
V3:
- regenerate go bindings
---
 tools/golang/xenlight/helpers.gen.go      |  10 ++
 tools/golang/xenlight/types.gen.go        |  12 ++
 tools/libs/light/libxl_9pfs.c             | 145 +++++++++++++++++++++-
 tools/libs/light/libxl_create.c           |   4 +-
 tools/libs/light/libxl_dm.c               |   2 +-
 tools/libs/light/libxl_types.idl          |  11 ++
 tools/libs/light/libxl_types_internal.idl |   1 +
 7 files changed, 178 insertions(+), 7 deletions(-)

diff --git a/tools/golang/xenlight/helpers.gen.go b/tools/golang/xenlight/helpers.gen.go
index 35e209ff1b..72bcb918f7 100644
--- a/tools/golang/xenlight/helpers.gen.go
+++ b/tools/golang/xenlight/helpers.gen.go
@@ -2434,6 +2434,11 @@ x.Tag = C.GoString(xc.tag)
 x.Path = C.GoString(xc.path)
 x.SecurityModel = C.GoString(xc.security_model)
 x.Devid = Devid(xc.devid)
+x.Type = P9Type(xc._type)
+x.MaxSpace = int(xc.max_space)
+x.MaxFiles = int(xc.max_files)
+x.MaxOpenFiles = int(xc.max_open_files)
+x.AutoDelete = bool(xc.auto_delete)
 
  return nil}
 
@@ -2452,6 +2457,11 @@ xc.path = C.CString(x.Path)}
 if x.SecurityModel != "" {
 xc.security_model = C.CString(x.SecurityModel)}
 xc.devid = C.libxl_devid(x.Devid)
+xc._type = C.libxl_p9_type(x.Type)
+xc.max_space = C.int(x.MaxSpace)
+xc.max_files = C.int(x.MaxFiles)
+xc.max_open_files = C.int(x.MaxOpenFiles)
+xc.auto_delete = C.bool(x.AutoDelete)
 
  return nil
  }
diff --git a/tools/golang/xenlight/types.gen.go b/tools/golang/xenlight/types.gen.go
index 7907aa8999..4ca5d2b332 100644
--- a/tools/golang/xenlight/types.gen.go
+++ b/tools/golang/xenlight/types.gen.go
@@ -122,6 +122,13 @@ NicTypeVifIoemu NicType = 1
 NicTypeVif NicType = 2
 )
 
+type P9Type int
+const(
+P9TypeUnknown P9Type = 0
+P9TypeQemu P9Type = 1
+P9TypeXen9Pfsd P9Type = 2
+)
+
 type ActionOnShutdown int
 const(
 ActionOnShutdownDestroy ActionOnShutdown = 1
@@ -888,6 +895,11 @@ Tag string
 Path string
 SecurityModel string
 Devid Devid
+Type P9Type
+MaxSpace int
+MaxFiles int
+MaxOpenFiles int
+AutoDelete bool
 }
 
 type DevicePvcallsif struct {
diff --git a/tools/libs/light/libxl_9pfs.c b/tools/libs/light/libxl_9pfs.c
index 5ab0d3aa21..486bc4326e 100644
--- a/tools/libs/light/libxl_9pfs.c
+++ b/tools/libs/light/libxl_9pfs.c
@@ -33,20 +33,159 @@ static int libxl__set_xenstore_p9(libxl__gc *gc, uint32_t domid,
 
     flexarray_append_pair(front, "tag", p9->tag);
 
+    if (p9->type == LIBXL_P9_TYPE_XEN_9PFSD) {
+        flexarray_append_pair(back, "max-space",
+                              GCSPRINTF("%u", p9->max_space));
+        flexarray_append_pair(back, "max-files",
+                              GCSPRINTF("%u", p9->max_files));
+        flexarray_append_pair(back, "max-open-files",
+                              GCSPRINTF("%u", p9->max_open_files));
+        flexarray_append_pair(back, "auto-delete",
+                              p9->auto_delete ? "1" : "0");
+    }
+
+    return 0;
+}
+
+static int libxl__device_from_p9(libxl__gc *gc, uint32_t domid,
+                                 libxl_device_p9 *type, libxl__device *device)
+{
+    device->backend_devid   = type->devid;
+    device->backend_domid   = type->backend_domid;
+    device->backend_kind    = type->type == LIBXL_P9_TYPE_QEMU
+                              ? LIBXL__DEVICE_KIND_9PFS
+                              : LIBXL__DEVICE_KIND_XEN_9PFS;
+    device->devid           = type->devid;
+    device->domid           = domid;
+    device->kind            = LIBXL__DEVICE_KIND_9PFS;
+
     return 0;
 }
 
-#define libxl__add_p9s NULL
+static int libxl_device_p9_dm_needed(void *e, unsigned domid)
+{
+    libxl_device_p9 *elem = e;
+
+    return elem->type == LIBXL_P9_TYPE_QEMU && elem->backend_domid == domid;
+}
+
+typedef struct libxl__aop9_state libxl__aop9_state;
+
+struct libxl__aop9_state {
+    libxl__spawn_state spawn;
+    libxl__ao_device *aodev;
+    libxl_device_p9 *p9;
+    uint32_t domid;
+    void (*callback)(libxl__egc *, libxl__aop9_state *, int);
+};
+
+static void xen9pfsd_spawn_outcome(libxl__egc *egc, libxl__aop9_state *aop9,
+                                   int rc)
+{
+    aop9->aodev->rc = rc;
+    if (rc)
+        aop9->aodev->callback(egc, aop9->aodev);
+    else
+        libxl__device_add_async(egc, aop9->domid, &libxl__p9_devtype,
+                                aop9->p9, aop9->aodev);
+}
+
+static void xen9pfsd_confirm(libxl__egc *egc, libxl__spawn_state *spawn,
+                             const char *xsdata)
+{
+    STATE_AO_GC(spawn->ao);
+
+    if (!xsdata)
+        return;
+
+    if (strcmp(xsdata, "running"))
+        return;
+
+    libxl__spawn_initiate_detach(gc, spawn);
+}
+
+static void xen9pfsd_failed(libxl__egc *egc, libxl__spawn_state *spawn, int rc)
+{
+    libxl__aop9_state *aop9 = CONTAINER_OF(spawn, *aop9, spawn);
+
+    xen9pfsd_spawn_outcome(egc, aop9, rc);
+}
+
+static void xen9pfsd_detached(libxl__egc *egc, libxl__spawn_state *spawn)
+{
+    libxl__aop9_state *aop9 = CONTAINER_OF(spawn, *aop9, spawn);
+
+    xen9pfsd_spawn_outcome(egc, aop9, 0);
+}
+
+static int xen9pfsd_spawn(libxl__egc *egc, uint32_t domid, libxl_device_p9 *p9,
+                         libxl__ao_device *aodev)
+{
+    STATE_AO_GC(aodev->ao);
+    struct libxl__aop9_state *aop9;
+    int rc;
+    char *args[] = { "xen-9pfsd", NULL };
+    char *path = GCSPRINTF("/local/domain/%u/libxl/xen-9pfs",
+                           p9->backend_domid);
+
+    if (p9->type != LIBXL_P9_TYPE_XEN_9PFSD ||
+        libxl__xs_read(gc, XBT_NULL, GCSPRINTF("%s/state", path)))
+        return 0;
+
+    GCNEW(aop9);
+    aop9->aodev = aodev;
+    aop9->p9 = p9;
+    aop9->domid = domid;
+    aop9->callback = xen9pfsd_spawn_outcome;
+
+    aop9->spawn.ao = aodev->ao;
+    aop9->spawn.what = "xen-9pfs daemon";
+    aop9->spawn.xspath = GCSPRINTF("%s/state", path);
+    aop9->spawn.timeout_ms = LIBXL_DEVICE_MODEL_START_TIMEOUT * 1000;
+    aop9->spawn.pidpath = GCSPRINTF("%s/pid", path);
+    aop9->spawn.midproc_cb = libxl__spawn_record_pid;
+    aop9->spawn.confirm_cb = xen9pfsd_confirm;
+    aop9->spawn.failure_cb = xen9pfsd_failed;
+    aop9->spawn.detached_cb = xen9pfsd_detached;
+    rc = libxl__spawn_spawn(egc, &aop9->spawn);
+    if (rc < 0)
+        return rc;
+    if (!rc) {
+        setsid();
+        libxl__exec(gc, -1, -1, -1, LIBEXEC_BIN "/xen-9pfsd", args, NULL);
+    }
+
+    return 1;
+}
+
+static void libxl__device_p9_add(libxl__egc *egc, uint32_t domid,
+                                 libxl_device_p9 *p9,
+                                 libxl__ao_device *aodev)
+{
+    int rc;
+
+    rc = xen9pfsd_spawn(egc, domid, p9, aodev);
+    if (rc == 1)
+        return;
+
+    if (rc == 0)
+        libxl__device_add_async(egc, domid, &libxl__p9_devtype, p9, aodev);
+
+    aodev->rc = rc;
+    if (rc)
+        aodev->callback(egc, aodev);
+}
+
 #define libxl_device_p9_list NULL
 #define libxl_device_p9_compare NULL
 
 static LIBXL_DEFINE_UPDATE_DEVID(p9)
-static LIBXL_DEFINE_DEVICE_FROM_TYPE(p9)
+static LIBXL_DEFINE_DEVICES_ADD(p9)
 
 LIBXL_DEFINE_DEVICE_REMOVE(p9)
 
 DEFINE_DEVICE_TYPE_STRUCT(p9, 9PFS, p9s,
-    .skip_attach = 1,
     .set_xenstore_config = (device_set_xenstore_config_fn_t)
                            libxl__set_xenstore_p9,
+    .dm_needed = libxl_device_p9_dm_needed,
 );
diff --git a/tools/libs/light/libxl_create.c b/tools/libs/light/libxl_create.c
index ce1d431103..b19e9379b6 100644
--- a/tools/libs/light/libxl_create.c
+++ b/tools/libs/light/libxl_create.c
@@ -1760,9 +1760,6 @@ static void domcreate_launch_dm(libxl__egc *egc, libxl__multidev *multidev,
         libxl__device_console_dispose(&console);
     }
 
-    for (i = 0; i < d_config->num_p9s; i++)
-        libxl__device_add(gc, domid, &libxl__p9_devtype, &d_config->p9s[i]);
-
     for (i = 0; i < d_config->num_pvcallsifs; i++)
         libxl__device_add(gc, domid, &libxl__pvcallsif_devtype,
                           &d_config->pvcallsifs[i]);
@@ -1899,6 +1896,7 @@ const libxl__device_type *device_type_tbl[] = {
     &libxl__vdispl_devtype,
     &libxl__vsnd_devtype,
     &libxl__virtio_devtype,
+    &libxl__p9_devtype,
     NULL
 };
 
diff --git a/tools/libs/light/libxl_dm.c b/tools/libs/light/libxl_dm.c
index 14b593110f..2aaaeb5aa7 100644
--- a/tools/libs/light/libxl_dm.c
+++ b/tools/libs/light/libxl_dm.c
@@ -3761,7 +3761,7 @@ int libxl__need_xenpv_qemu(libxl__gc *gc, libxl_domain_config *d_config)
         goto out;
     }
 
-    if (d_config->num_vfbs > 0 || d_config->num_p9s > 0) {
+    if (d_config->num_vfbs > 0) {
         ret = 1;
         goto out;
     }
diff --git a/tools/libs/light/libxl_types.idl b/tools/libs/light/libxl_types.idl
index 7d8bd5d216..82565c4c10 100644
--- a/tools/libs/light/libxl_types.idl
+++ b/tools/libs/light/libxl_types.idl
@@ -150,6 +150,12 @@ libxl_nic_type = Enumeration("nic_type", [
     (2, "VIF"),
     ])
 
+libxl_p9_type = Enumeration("p9_type", [
+    (0, "unknown"),
+    (1, "qemu"),
+    (2, "xen_9pfsd"),
+    ])
+
 libxl_action_on_shutdown = Enumeration("action_on_shutdown", [
     (1, "DESTROY"),
 
@@ -942,6 +948,11 @@ libxl_device_p9 = Struct("device_p9", [
     ("path",             string),
     ("security_model",   string),
     ("devid",            libxl_devid),
+    ("type",             libxl_p9_type),
+    ("max_space",        integer),
+    ("max_files",        integer),
+    ("max_open_files",   integer),
+    ("auto_delete",      bool),
 ])
 
 libxl_device_pvcallsif = Struct("device_pvcallsif", [
diff --git a/tools/libs/light/libxl_types_internal.idl b/tools/libs/light/libxl_types_internal.idl
index e24288f1a5..39da71cef5 100644
--- a/tools/libs/light/libxl_types_internal.idl
+++ b/tools/libs/light/libxl_types_internal.idl
@@ -34,6 +34,7 @@ libxl__device_kind = Enumeration("device_kind", [
     (16, "VINPUT"),
     (17, "VIRTIO_DISK"),
     (18, "VIRTIO"),
+    (19, "XEN_9PFS"),
     ])
 
 libxl__console_backend = Enumeration("console_backend", [
-- 
2.35.3



From xen-devel-bounces@lists.xenproject.org Thu Jan 04 09:13:41 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 04 Jan 2024 09:13:41 +0000
Received: from list by lists.xenproject.org with outflank-mailman.661331.1031121 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLJnI-0001Ep-UD; Thu, 04 Jan 2024 09:13:40 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 661331.1031121; Thu, 04 Jan 2024 09:13:40 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLJnI-0001Eg-Qu; Thu, 04 Jan 2024 09:13:40 +0000
Received: by outflank-mailman (input) for mailman id 661331;
 Thu, 04 Jan 2024 09:13:40 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=4u2H=IO=suse.com=jgross@srs-se1.protection.inumbo.net>)
 id 1rLJdo-00085z-7J
 for xen-devel@lists.xenproject.org; Thu, 04 Jan 2024 09:03:52 +0000
Received: from smtp-out2.suse.de (smtp-out2.suse.de [195.135.223.131])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 2dd082b5-aae0-11ee-98ef-6d05b1d4d9a1;
 Thu, 04 Jan 2024 10:03:51 +0100 (CET)
Received: from imap1.dmz-prg2.suse.org (imap1.dmz-prg2.suse.org [10.150.64.97])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
 (No client certificate requested)
 by smtp-out2.suse.de (Postfix) with ESMTPS id 20C2D1F7F9;
 Thu,  4 Jan 2024 09:03:51 +0000 (UTC)
Received: from imap1.dmz-prg2.suse.org (localhost [127.0.0.1])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
 (No client certificate requested)
 by imap1.dmz-prg2.suse.org (Postfix) with ESMTPS id D959713722;
 Thu,  4 Jan 2024 09:03:50 +0000 (UTC)
Received: from dovecot-director2.suse.de ([2a07:de40:b281:106:10:150:64:167])
 by imap1.dmz-prg2.suse.org with ESMTPSA id EX3KM3Z0lmVxWQAAD6G6ig
 (envelope-from <jgross@suse.com>); Thu, 04 Jan 2024 09:03:50 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 2dd082b5-aae0-11ee-98ef-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1704359031; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=l9WYZ2iW1RdmjGibq9R7j87elTm1vcsn9R88rXyUUm0=;
	b=aEx8FKBo4+XJhZY/OUXfWBn34j3uoghPNj1AUc4RaBJJq6AbpPfOqaRiqumOBidao8jErn
	2KnWyxX2JAHC0xx3XVIWap3pz+61pi36rHE8wsRHw05+OZMExGSGf5StZ+XZ0Kq8oT5Ec/
	NuROYfKHD5UKTccpVFmutBGByXRkH0Q=
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1704359031; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=l9WYZ2iW1RdmjGibq9R7j87elTm1vcsn9R88rXyUUm0=;
	b=aEx8FKBo4+XJhZY/OUXfWBn34j3uoghPNj1AUc4RaBJJq6AbpPfOqaRiqumOBidao8jErn
	2KnWyxX2JAHC0xx3XVIWap3pz+61pi36rHE8wsRHw05+OZMExGSGf5StZ+XZ0Kq8oT5Ec/
	NuROYfKHD5UKTccpVFmutBGByXRkH0Q=
From: Juergen Gross <jgross@suse.com>
To: xen-devel@lists.xenproject.org
Cc: Juergen Gross <jgross@suse.com>,
	Wei Liu <wl@xen.org>,
	Julien Grall <julien@xen.org>,
	Anthony PERARD <anthony.perard@citrix.com>,
	Jason Andryuk <jandryuk@gmail.com>
Subject: [PATCH v3 31/33] tools/xenstored: add helpers for filename handling
Date: Thu,  4 Jan 2024 10:00:53 +0100
Message-Id: <20240104090055.27323-32-jgross@suse.com>
X-Mailer: git-send-email 2.35.3
In-Reply-To: <20240104090055.27323-1-jgross@suse.com>
References: <20240104090055.27323-1-jgross@suse.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Authentication-Results: smtp-out2.suse.de;
	none
X-Spam-Level: *
X-Spam-Score: 1.20
X-Spamd-Result: default: False [1.20 / 50.00];
	 ARC_NA(0.00)[];
	 RCVD_VIA_SMTP_AUTH(0.00)[];
	 FROM_HAS_DN(0.00)[];
	 TO_DN_SOME(0.00)[];
	 FREEMAIL_ENVRCPT(0.00)[gmail.com];
	 R_MISSING_CHARSET(2.50)[];
	 MIME_GOOD(-0.10)[text/plain];
	 TO_MATCH_ENVRCPT_ALL(0.00)[];
	 REPLY(-4.00)[];
	 BROKEN_CONTENT_TYPE(1.50)[];
	 RCPT_COUNT_FIVE(0.00)[6];
	 RCVD_COUNT_THREE(0.00)[3];
	 DKIM_SIGNED(0.00)[suse.com:s=susede1];
	 NEURAL_HAM_SHORT(-0.20)[-1.000];
	 NEURAL_SPAM_LONG(3.50)[1.000];
	 MID_CONTAINS_FROM(1.00)[];
	 DBL_BLOCKED_OPENRESOLVER(0.00)[suse.com:email];
	 FUZZY_BLOCKED(0.00)[rspamd.com];
	 FROM_EQ_ENVFROM(0.00)[];
	 MIME_TRACE(0.00)[0:+];
	 FREEMAIL_CC(0.00)[suse.com,xen.org,citrix.com,gmail.com];
	 RCVD_TLS_ALL(0.00)[];
	 BAYES_HAM(-3.00)[100.00%]
X-Spam-Flag: NO

Add some helpers for handling filenames which might need different
implementations between stubdom and daemon environments:

- expansion of relative filenames (those are not really defined today,
  just expand them to be relative to /var/lib/xen/xenstore)
- expansion of xenstore_daemon_rundir() (used e.g. for saving the state
  file in case of live update - needs to be unchanged in the daemon
  case, but should result in /var/lib/xen/xenstore for stubdom)

Signed-off-by: Juergen Gross <jgross@suse.com>
Reviewed-by: Jason Andryuk <jandryuk@gmail.com>
---
V3:
- make absolute_filename() return a pointer to const (Julien Grall)
---
 tools/xenstored/core.c      | 15 +++++++++++++--
 tools/xenstored/core.h      |  5 ++++-
 tools/xenstored/lu_daemon.c |  4 ++--
 tools/xenstored/minios.c    |  5 +++++
 tools/xenstored/posix.c     |  8 +++++++-
 5 files changed, 31 insertions(+), 6 deletions(-)

diff --git a/tools/xenstored/core.c b/tools/xenstored/core.c
index b648af16fa..711be878dc 100644
--- a/tools/xenstored/core.c
+++ b/tools/xenstored/core.c
@@ -65,7 +65,7 @@ char **orig_argv;
 LIST_HEAD(connections);
 int tracefd = -1;
 bool keep_orphans = false;
-char *tracefile = NULL;
+const char *tracefile = NULL;
 static struct hashtable *nodes;
 unsigned int trace_flags = TRACE_OBJ | TRACE_IO;
 
@@ -139,6 +139,17 @@ void trace_destroy(const void *data, const char *type)
 		trace("obj: DESTROY %s %p\n", type, data);
 }
 
+/*
+ * Return an absolute filename.
+ * In case of a relative filename given as input, prepend XENSTORE_LIB_DIR.
+ */
+const char *absolute_filename(const void *ctx, const char *filename)
+{
+	if (filename[0] != '/')
+		return talloc_asprintf(ctx, XENSTORE_LIB_DIR "/%s", filename);
+	return talloc_strdup(ctx, filename);
+}
+
 void close_log(void)
 {
 	if (tracefd >= 0)
@@ -2761,7 +2772,7 @@ int main(int argc, char *argv[])
 #endif
 
 	if (tracefile)
-		tracefile = talloc_strdup(NULL, tracefile);
+		tracefile = absolute_filename(NULL, tracefile);
 
 #ifndef NO_LIVE_UPDATE
 	/* Read state in case of live update. */
diff --git a/tools/xenstored/core.h b/tools/xenstored/core.h
index 0cb3a272b5..9a5615fcbe 100644
--- a/tools/xenstored/core.h
+++ b/tools/xenstored/core.h
@@ -343,7 +343,7 @@ extern int sock;
 extern int orig_argc;
 extern char **orig_argv;
 
-extern char *tracefile;
+extern const char *tracefile;
 extern int tracefd;
 
 /* Trace flag values must be kept in sync with trace_switches[] contents. */
@@ -404,6 +404,9 @@ void handle_special_fds(void);
 void mount_9pfs(void);
 #endif
 
+const char *xenstore_rundir(void);
+const char *absolute_filename(const void *ctx, const char *filename);
+
 /* Close stdin/stdout/stderr to complete daemonize */
 void finish_daemonize(void);
 
diff --git a/tools/xenstored/lu_daemon.c b/tools/xenstored/lu_daemon.c
index 71bcabadd3..6351111ab0 100644
--- a/tools/xenstored/lu_daemon.c
+++ b/tools/xenstored/lu_daemon.c
@@ -24,7 +24,7 @@ void lu_get_dump_state(struct lu_dump_state *state)
 	state->size = 0;
 
 	state->filename = talloc_asprintf(NULL, "%s/state_dump",
-					  xenstore_daemon_rundir());
+					  xenstore_rundir());
 	if (!state->filename)
 		barf("Allocation failure");
 
@@ -65,7 +65,7 @@ FILE *lu_dump_open(const void *ctx)
 	int fd;
 
 	filename = talloc_asprintf(ctx, "%s/state_dump",
-				   xenstore_daemon_rundir());
+				   xenstore_rundir());
 	if (!filename)
 		return NULL;
 
diff --git a/tools/xenstored/minios.c b/tools/xenstored/minios.c
index 10e1765f8d..24fc3150b7 100644
--- a/tools/xenstored/minios.c
+++ b/tools/xenstored/minios.c
@@ -119,3 +119,8 @@ void mount_9pfs(void)
 {
 	create_thread("mount-9pfs", mount_thread, NULL);
 }
+
+const char *xenstore_rundir(void)
+{
+	return XENSTORE_LIB_DIR;
+}
diff --git a/tools/xenstored/posix.c b/tools/xenstored/posix.c
index f72c8406d2..ad6e874c1e 100644
--- a/tools/xenstored/posix.c
+++ b/tools/xenstored/posix.c
@@ -325,9 +325,10 @@ void early_init(bool live_update, bool dofork, const char *pidfile)
 {
 	reopen_log();
 
-	/* Make sure xenstored directory exists. */
+	/* Make sure xenstored directories exist. */
 	/* Errors ignored here, will be reported when we open files */
 	mkdir(xenstore_daemon_rundir(), 0755);
+	mkdir(XENSTORE_LIB_DIR, 0755);
 
 	if (dofork) {
 		openlog("xenstored", 0, LOG_DAEMON);
@@ -394,3 +395,8 @@ void late_init(bool live_update)
 	}
 #endif
 }
+
+const char *xenstore_rundir(void)
+{
+	return xenstore_daemon_rundir();
+}
-- 
2.35.3



From xen-devel-bounces@lists.xenproject.org Thu Jan 04 09:13:55 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 04 Jan 2024 09:13:55 +0000
Received: from list by lists.xenproject.org with outflank-mailman.661336.1031131 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLJnX-0001qz-6N; Thu, 04 Jan 2024 09:13:55 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 661336.1031131; Thu, 04 Jan 2024 09:13:55 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLJnX-0001qm-3b; Thu, 04 Jan 2024 09:13:55 +0000
Received: by outflank-mailman (input) for mailman id 661336;
 Thu, 04 Jan 2024 09:13:53 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=4u2H=IO=suse.com=jgross@srs-se1.protection.inumbo.net>)
 id 1rLJdR-00085z-NY
 for xen-devel@lists.xenproject.org; Thu, 04 Jan 2024 09:03:29 +0000
Received: from smtp-out1.suse.de (smtp-out1.suse.de [195.135.223.130])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 2081e669-aae0-11ee-98ef-6d05b1d4d9a1;
 Thu, 04 Jan 2024 10:03:29 +0100 (CET)
Received: from imap1.dmz-prg2.suse.org (imap1.dmz-prg2.suse.org
 [IPv6:2a07:de40:b281:104:10:150:64:97])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
 (No client certificate requested)
 by smtp-out1.suse.de (Postfix) with ESMTPS id DA59A21EE1;
 Thu,  4 Jan 2024 09:03:28 +0000 (UTC)
Received: from imap1.dmz-prg2.suse.org (localhost [127.0.0.1])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
 (No client certificate requested)
 by imap1.dmz-prg2.suse.org (Postfix) with ESMTPS id A1BA913722;
 Thu,  4 Jan 2024 09:03:28 +0000 (UTC)
Received: from dovecot-director2.suse.de ([2a07:de40:b281:106:10:150:64:167])
 by imap1.dmz-prg2.suse.org with ESMTPSA id wAo8JmB0lmVSWQAAD6G6ig
 (envelope-from <jgross@suse.com>); Thu, 04 Jan 2024 09:03:28 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 2081e669-aae0-11ee-98ef-6d05b1d4d9a1
From: Juergen Gross <jgross@suse.com>
To: xen-devel@lists.xenproject.org
Cc: Juergen Gross <jgross@suse.com>,
	Wei Liu <wl@xen.org>,
	Julien Grall <julien@xen.org>,
	Anthony PERARD <anthony.perard@citrix.com>,
	Jason Andryuk <jandryuk@gmail.com>,
	Julien Grall <jgrall@amazon.com>
Subject: [PATCH v3 27/33] tools/xenstored: rework ring page (un)map functions
Date: Thu,  4 Jan 2024 10:00:49 +0100
Message-Id: <20240104090055.27323-28-jgross@suse.com>
X-Mailer: git-send-email 2.35.3
In-Reply-To: <20240104090055.27323-1-jgross@suse.com>
References: <20240104090055.27323-1-jgross@suse.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Spam-Level: 
X-Rspamd-Server: rspamd1.dmz-prg2.suse.org
X-Spam-Level: 
X-Spam-Flag: NO
X-Spamd-Result: default: False [-4.00 / 50.00];
	 REPLY(-4.00)[]
Authentication-Results: smtp-out1.suse.de;
	none
X-Spam-Score: -4.00
X-Rspamd-Queue-Id: DA59A21EE1

When [un]mapping the ring page of a Xenstore client, different actions
are required for "normal" guests and dom0. Today this distinction is
made at call site.

Move this distinction into [un]map_interface() instead, avoiding code
duplication and preparing special handling for [un]mapping the stub
domain's ring page.

Signed-off-by: Juergen Gross <jgross@suse.com>
Reviewed-by: Jason Andryuk <jandryuk@gmail.com>
Reviewed-by: Julien Grall <jgrall@amazon.com>
---
 tools/xenstored/domain.c | 31 +++++++++++++------------------
 1 file changed, 13 insertions(+), 18 deletions(-)

diff --git a/tools/xenstored/domain.c b/tools/xenstored/domain.c
index 040df98b8c..af80a8221d 100644
--- a/tools/xenstored/domain.c
+++ b/tools/xenstored/domain.c
@@ -497,14 +497,20 @@ static const struct interface_funcs domain_funcs = {
 
 static void *map_interface(domid_t domid)
 {
+	if (domid == xenbus_master_domid())
+		return xenbus_map();
+
 	return xengnttab_map_grant_ref(*xgt_handle, domid,
 				       GNTTAB_RESERVED_XENSTORE,
 				       PROT_READ|PROT_WRITE);
 }
 
-static void unmap_interface(void *interface)
+static void unmap_interface(domid_t domid, void *interface)
 {
-	xengnttab_unmap(*xgt_handle, interface, 1);
+	if (domid == xenbus_master_domid())
+		unmap_xenbus(interface);
+	else
+		xengnttab_unmap(*xgt_handle, interface, 1);
 }
 
 static int domain_tree_remove_sub(const void *ctx, struct connection *conn,
@@ -594,14 +600,8 @@ static int destroy_domain(void *_domain)
 			eprintf("> Unbinding port %i failed!\n", domain->port);
 	}
 
-	if (domain->interface) {
-		/* Domain 0 was mapped by dom0_init, so it must be unmapped
-		   using munmap() and not the grant unmap call. */
-		if (domain->domid == dom0_domid)
-			unmap_xenbus(domain->interface);
-		else
-			unmap_interface(domain->interface);
-	}
+	if (domain->interface)
+		unmap_interface(domain->domid, domain->interface);
 
 	fire_special_watches("@releaseDomain");
 
@@ -966,18 +966,13 @@ static struct domain *introduce_domain(const void *ctx,
 		return NULL;
 
 	if (!domain->introduced) {
-		interface = is_master_domain ? xenbus_map()
-					     : map_interface(domid);
+		interface = map_interface(domid);
 		if (!interface && !restore)
 			return NULL;
 		if (new_domain(domain, port, restore)) {
 			rc = errno;
-			if (interface) {
-				if (is_master_domain)
-					unmap_xenbus(interface);
-				else
-					unmap_interface(interface);
-			}
+			if (interface)
+				unmap_interface(domid, interface);
 			errno = rc;
 			return NULL;
 		}
-- 
2.35.3



From xen-devel-bounces@lists.xenproject.org Thu Jan 04 09:14:33 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 04 Jan 2024 09:14:33 +0000
Received: from list by lists.xenproject.org with outflank-mailman.661343.1031141 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLJo6-0002jv-Ee; Thu, 04 Jan 2024 09:14:30 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 661343.1031141; Thu, 04 Jan 2024 09:14:30 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLJo6-0002jo-C2; Thu, 04 Jan 2024 09:14:30 +0000
Received: by outflank-mailman (input) for mailman id 661343;
 Thu, 04 Jan 2024 09:14:28 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=4u2H=IO=suse.com=jgross@srs-se1.protection.inumbo.net>)
 id 1rLJcO-0007Zm-6w
 for xen-devel@lists.xenproject.org; Thu, 04 Jan 2024 09:02:24 +0000
Received: from smtp-out2.suse.de (smtp-out2.suse.de [195.135.223.131])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id f8df8a52-aadf-11ee-9b0f-b553b5be7939;
 Thu, 04 Jan 2024 10:02:22 +0100 (CET)
Received: from imap1.dmz-prg2.suse.org (imap1.dmz-prg2.suse.org
 [IPv6:2a07:de40:b281:104:10:150:64:97])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
 (No client certificate requested)
 by smtp-out2.suse.de (Postfix) with ESMTPS id 5C55B1F7F8;
 Thu,  4 Jan 2024 09:02:22 +0000 (UTC)
Received: from imap1.dmz-prg2.suse.org (localhost [127.0.0.1])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
 (No client certificate requested)
 by imap1.dmz-prg2.suse.org (Postfix) with ESMTPS id 3247513722;
 Thu,  4 Jan 2024 09:02:22 +0000 (UTC)
Received: from dovecot-director2.suse.de ([2a07:de40:b281:106:10:150:64:167])
 by imap1.dmz-prg2.suse.org with ESMTPSA id qDXrCh50lmXtWAAAD6G6ig
 (envelope-from <jgross@suse.com>); Thu, 04 Jan 2024 09:02:22 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: f8df8a52-aadf-11ee-9b0f-b553b5be7939
From: Juergen Gross <jgross@suse.com>
To: xen-devel@lists.xenproject.org
Cc: Juergen Gross <jgross@suse.com>,
	Wei Liu <wl@xen.org>,
	Anthony PERARD <anthony.perard@citrix.com>,
	Jason Andryuk <jandryuk@gmail.com>
Subject: [PATCH v3 15/33] tools/xenlogd: add 9pfs read request support
Date: Thu,  4 Jan 2024 10:00:37 +0100
Message-Id: <20240104090055.27323-16-jgross@suse.com>
X-Mailer: git-send-email 2.35.3
In-Reply-To: <20240104090055.27323-1-jgross@suse.com>
References: <20240104090055.27323-1-jgross@suse.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Spam-Level: 
X-Spam-Level: 
Authentication-Results: smtp-out2.suse.de;
	none
X-Rspamd-Server: rspamd2.dmz-prg2.suse.org
X-Spamd-Result: default: False [-4.00 / 50.00];
	 REPLY(-4.00)[]
X-Spam-Score: -4.00
X-Rspamd-Queue-Id: 5C55B1F7F8
X-Spam-Flag: NO

Add the read request of the 9pfs protocol.

For now support only reading plain files (no directories).

Signed-off-by: Juergen Gross <jgross@suse.com>
Reviewed-by: Jason Andryuk <jandryuk@gmail.com>
---
V2:
- make error check more readable (Jason Andryuk)
---
 tools/xen-9pfsd/io.c | 64 ++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 64 insertions(+)

diff --git a/tools/xen-9pfsd/io.c b/tools/xen-9pfsd/io.c
index c357342a91..651c5cbb2b 100644
--- a/tools/xen-9pfsd/io.c
+++ b/tools/xen-9pfsd/io.c
@@ -33,6 +33,7 @@
 #define P9_CMD_WALK       110
 #define P9_CMD_OPEN       112
 #define P9_CMD_CREATE     114
+#define P9_CMD_READ       116
 #define P9_CMD_WRITE      118
 #define P9_CMD_CLUNK      120
 #define P9_CMD_STAT       124
@@ -1123,6 +1124,65 @@ static void p9_create(struct ring *ring, struct p9_header *hdr)
     free_fid(device, fidp);
 }
 
+static void p9_read(struct ring *ring, struct p9_header *hdr)
+{
+    device *device = ring->device;
+    uint32_t fid;
+    uint64_t off;
+    unsigned int len;
+    uint32_t count;
+    void *buf;
+    struct p9_fid *fidp;
+    int ret;
+
+    ret = fill_data(ring, "ULU", &fid, &off, &count);
+    if ( ret != 3 )
+    {
+        p9_error(ring, hdr->tag, EINVAL);
+        return;
+    }
+
+    fidp = get_fid_ref(device, fid);
+    if ( !fidp || !fidp->opened )
+    {
+        p9_error(ring, hdr->tag, EBADF);
+        goto out;
+    }
+
+    if ( fidp->isdir )
+    {
+        p9_error(ring, hdr->tag, EOPNOTSUPP);
+        goto out;
+    }
+    else
+    {
+        len = count;
+        buf = ring->buffer + sizeof(*hdr) + sizeof(uint32_t);
+
+        while ( len != 0 )
+        {
+            ret = pread(fidp->fd, buf, len, off);
+            if ( ret <= 0 )
+                break;
+            len -= ret;
+            buf += ret;
+            off += ret;
+        }
+        if ( ret < 0 && len == count )
+        {
+            p9_error(ring, hdr->tag, errno);
+            goto out;
+        }
+
+        buf = ring->buffer + sizeof(*hdr) + sizeof(uint32_t);
+        len = count - len;
+        fill_buffer(ring, hdr->cmd + 1, hdr->tag, "D", &len, buf);
+    }
+
+ out:
+    free_fid(device, fidp);
+}
+
 static void p9_write(struct ring *ring, struct p9_header *hdr)
 {
     device *device = ring->device;
@@ -1354,6 +1414,10 @@ void *io_thread(void *arg)
                 p9_create(ring, &hdr);
                 break;
 
+            case P9_CMD_READ:
+                p9_read(ring, &hdr);
+                break;
+
             case P9_CMD_WRITE:
                 p9_write(ring, &hdr);
                 break;
-- 
2.35.3



From xen-devel-bounces@lists.xenproject.org Thu Jan 04 09:37:29 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 04 Jan 2024 09:37:29 +0000
Received: from list by lists.xenproject.org with outflank-mailman.661430.1031150 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLKAC-0000So-5W; Thu, 04 Jan 2024 09:37:20 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 661430.1031150; Thu, 04 Jan 2024 09:37:20 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLKAC-0000Sh-2p; Thu, 04 Jan 2024 09:37:20 +0000
Received: by outflank-mailman (input) for mailman id 661430;
 Thu, 04 Jan 2024 09:37:18 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=qJxY=IO=minervasys.tech=carlo.nonato@srs-se1.protection.inumbo.net>)
 id 1rLKAA-0000Sb-Am
 for xen-devel@lists.xenproject.org; Thu, 04 Jan 2024 09:37:18 +0000
Received: from mail-ej1-x62c.google.com (mail-ej1-x62c.google.com
 [2a00:1450:4864:20::62c])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id d89df275-aae4-11ee-9b0f-b553b5be7939;
 Thu, 04 Jan 2024 10:37:16 +0100 (CET)
Received: by mail-ej1-x62c.google.com with SMTP id
 a640c23a62f3a-a27e323fdd3so28987966b.2
 for <xen-devel@lists.xenproject.org>; Thu, 04 Jan 2024 01:37:15 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: d89df275-aae4-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=minervasys-tech.20230601.gappssmtp.com; s=20230601; t=1704361035; x=1704965835; darn=lists.xenproject.org;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:from:to:cc:subject:date
         :message-id:reply-to;
        bh=ZCOqmmciQjPCCpGOFfXlM0dgp1VyfSrjS3uCZxuDKoQ=;
        b=y/D2ikuuK3Wxxi0Jhd9JUQrufuei05tSUUBQFfspV0EVxC50ELf22GFMF9c26MQjyC
         Cmm3UMYnfRC2crbV49MltgJQ8jr/hqrUEO1f6ID32WxQUtO5wU1F5mNo2cVFFEqudalV
         P5qdUqqEWX2/7Vl2A/Zhd0EsOvIKc288jSo7er06ZnU5Ky3srny+Oc6XP535bEpWp5MO
         8aAp/sb0gMJ9sEiHn+2wHB9Z/XMsBEp4BaBSovwqril+loG8fg4NopI1IFkhRE6Z7Z1o
         pPhLutlZL8cQVon1PJNEYI1LYOZO2Dv47umgsaqcmnlwPGJCI8S2s0p/36WLEKJjjChr
         2org==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704361035; x=1704965835;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to;
        bh=ZCOqmmciQjPCCpGOFfXlM0dgp1VyfSrjS3uCZxuDKoQ=;
        b=OZ1oruY4mOaSY8DtVA3eLKSfL5RZAkFthVvRqn+NGnznX5tOlpBK61lbfTcIyWtkx7
         IrhKrUcOtxn3UwfFVhJuYXbsoSDerAHrVRXiKbtP5lzu8+ZpQwY9vlNoLfNtlhfC/GDN
         fNKK//XKW4dvKriOg/pwYRMTVC/zJEG9QAW2lIqldLob2tInRCTRdXiNNfbIpmye5Klm
         isZBExMaFTH4W2C1rlhwepzkg7o+xPPStYNlB26iAX/JiFDI6TRcja4WJedKtyw2sTAO
         qRTLHwhFiJJIXuD7qm7M65bk8Xs0jEHSeMMt+Q9y/6T2zllLqKvNwZQaICUjYqVptwY3
         YVyA==
X-Gm-Message-State: AOJu0YxVbZoq9dkyyhEGedZEKNS0NpRqT7AJDvvpnIFJqARj3+/5yjXb
	YbzwDYzOvMi+wuQgP2Kro8zivk80K/rAeCMyPQzWjkEmjyWf4Q==
X-Google-Smtp-Source: AGHT+IErNAGVDRNS+GyL6w9fWLF6JVVSFMrk1NrLFzCzfEZXFVZTBRAiMw72JOy5eNCnV1nBidlyyQ7i6focAs4FoQM=
X-Received: by 2002:a17:906:529a:b0:a23:5753:7ba5 with SMTP id
 c26-20020a170906529a00b00a2357537ba5mr146202ejm.47.1704361035457; Thu, 04 Jan
 2024 01:37:15 -0800 (PST)
MIME-Version: 1.0
References: <20240102095138.17933-1-carlo.nonato@minervasys.tech>
 <6d652309-50e1-4850-ac52-d086a3a32726@amd.com> <alpine.DEB.2.22.394.2401031601180.1322202@ubuntu-linux-20-04-desktop>
 <alpine.DEB.2.22.394.2401031748040.1322202@ubuntu-linux-20-04-desktop>
In-Reply-To: <alpine.DEB.2.22.394.2401031748040.1322202@ubuntu-linux-20-04-desktop>
From: Carlo Nonato <carlo.nonato@minervasys.tech>
Date: Thu, 4 Jan 2024 10:37:04 +0100
Message-ID: <CAG+AhRUAOcT9HTj+v4vfz6nqBG4FumYc1of9XcmyTYKtW-66yA@mail.gmail.com>
Subject: Re: [PATCH v5 00/13] Arm cache coloring
To: Stefano Stabellini <sstabellini@kernel.org>
Cc: Michal Orzel <michal.orzel@amd.com>, xen-devel@lists.xenproject.org, 
	Andrew Cooper <andrew.cooper3@citrix.com>, George Dunlap <george.dunlap@citrix.com>, 
	Jan Beulich <jbeulich@suse.com>, Julien Grall <julien@xen.org>, Wei Liu <wl@xen.org>, 
	Bertrand Marquis <bertrand.marquis@arm.com>, Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>, 
	Anthony PERARD <anthony.perard@citrix.com>, Juergen Gross <jgross@suse.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

Hi Stefano,

On Thu, Jan 4, 2024 at 2:55=E2=80=AFAM Stefano Stabellini
<sstabellini@kernel.org> wrote:
>
> On Wed, 3 Jan 2024, Stefano Stabellini wrote:
> > Also I tried this patch series on the "staging" branch and Xen failed t=
o
> > boot, no messages at all from Xen so it must be an early boot failure. =
I
> > am passing this command line options to Xen and running it on QEMU:
> >
> > dom0_mem=3D1024M dom0_max_vcpus=3D1 xen-llc-colors=3D0 dom0-llc-colors=
=3D1-5 llc-way-size=3D65535 llc-coloring=3Dtrue
>
> I managed to make it to work successfully with the following command
> line:
>
> xen-llc-colors=3D0 dom0-llc-colors=3D1-5 llc-way-size=3D64K llc-coloring=
=3Don
>
> I think the problem was llc-way-size that needs to be rounded up (64K
> instead of 65535).
>
> Also I found a few build issues when building for other architectures or
> different kconfig options. This patch addresses those issues (however it
> is not to be taken as is as the build issues should not be introduced in
> the first place and there are probably better way to fix them, but I
> hope it can help).
>
> Cheers,
>
> Stefano
>
>
> diff --git a/xen/arch/arm/llc-coloring.c b/xen/arch/arm/llc-coloring.c
> index f434efc45b..efe5cf3c23 100644
> --- a/xen/arch/arm/llc-coloring.c
> +++ b/xen/arch/arm/llc-coloring.c
> @@ -39,7 +39,7 @@ static unsigned int __ro_after_init xen_num_colors;
>
>  #define mfn_color_mask              (nr_colors - 1)
>  #define mfn_to_color(mfn)           (mfn_x(mfn) & mfn_color_mask)
> -#define mfn_set_color(mfn, color)   ((mfn_x(mfn) & ~mfn_color_mask) | (c=
olor))
> +#define mfn_set_color(mfn, color)   (_mfn((mfn_x(mfn) & ~mfn_color_mask)=
 | (color)))

Thanks for spotting this.

>  /*
>   * Parse the coloring configuration given in the buf string, following t=
he
> diff --git a/xen/arch/arm/mm.c b/xen/arch/arm/mm.c
> index 3bb0c9221f..bf16703e24 100644
> --- a/xen/arch/arm/mm.c
> +++ b/xen/arch/arm/mm.c
> @@ -610,10 +610,10 @@ void __init setup_pagetables(unsigned long boot_phy=
s_offset, paddr_t xen_paddr)
>      pte.pt.table =3D 1;
>      xen_second[second_table_offset(FIXMAP_ADDR(0))] =3D pte;
>
> +#ifdef CONFIG_ARM_64
>      if ( llc_coloring_enabled )
>          ttbr =3D virt_to_maddr(virt_to_reloc_virt(xen_pgtable));
>      else
> -#ifdef CONFIG_ARM_64
>          ttbr =3D (uintptr_t) xen_pgtable + phys_offset;
>  #else
>          ttbr =3D (uintptr_t) cpu0_pgtable + phys_offset;
> diff --git a/xen/include/xen/llc-coloring.h b/xen/include/xen/llc-colorin=
g.h
> index 7cd481e955..516139c4ff 100644
> --- a/xen/include/xen/llc-coloring.h
> +++ b/xen/include/xen/llc-coloring.h
> @@ -21,7 +21,27 @@
>  extern bool llc_coloring_enabled;
>  #define llc_coloring_enabled (llc_coloring_enabled)
>  #endif
> -
> +#else
> +static inline void *xen_remap_colored(mfn_t xen_fn, paddr_t xen_size)
> +{
> +    return NULL;
> +}
> +static inline int domain_set_llc_colors_from_str(struct domain *d, const=
 char *str)
> +{
> +    return -ENOSYS;
> +}
> +static inline int dom0_set_llc_colors(struct domain *d)
> +{
> +    return 0;
> +}
> +static inline bool llc_coloring_init(void)
> +{
> +    return false;
> +}
> +static inline paddr_t xen_colored_map_size(paddr_t size)
> +{
> +    return 0;
> +}
>  #endif
>
>  #ifndef llc_coloring_enabled

Sorry for the compilation mess.

This is definitely a solution, but I wonder if the best thing to do would b=
e
to move all signatures in the common header, without the stubs, relying aga=
in
on DCE. This seems a little strange to me because users of some of those
functions are only in arm code, and they always have to be protected with
llc_coloring_enabled global variable/macro if, but it works (now I'm
compiling also for arm32 and x86).

Thanks.


From xen-devel-bounces@lists.xenproject.org Thu Jan 04 10:14:27 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 04 Jan 2024 10:14:27 +0000
Received: from list by lists.xenproject.org with outflank-mailman.661473.1031177 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLKjs-0003sT-7U; Thu, 04 Jan 2024 10:14:12 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 661473.1031177; Thu, 04 Jan 2024 10:14:12 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLKjs-0003sM-3h; Thu, 04 Jan 2024 10:14:12 +0000
Received: by outflank-mailman (input) for mailman id 661473;
 Thu, 04 Jan 2024 10:14:11 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=7Jyd=IO=gmail.com=oleksii.kurochko@srs-se1.protection.inumbo.net>)
 id 1rLKjr-0003sG-B4
 for xen-devel@lists.xenproject.org; Thu, 04 Jan 2024 10:14:11 +0000
Received: from mail-lj1-x22c.google.com (mail-lj1-x22c.google.com
 [2a00:1450:4864:20::22c])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 0084ea43-aaea-11ee-98ef-6d05b1d4d9a1;
 Thu, 04 Jan 2024 11:14:10 +0100 (CET)
Received: by mail-lj1-x22c.google.com with SMTP id
 38308e7fff4ca-2cce6bb9b48so3729131fa.1
 for <xen-devel@lists.xenproject.org>; Thu, 04 Jan 2024 02:14:10 -0800 (PST)
Received: from [192.168.220.211] ([94.75.70.14])
 by smtp.gmail.com with ESMTPSA id
 n4-20020a2ea5c4000000b002cd0651db11sm1671512ljp.50.2024.01.04.02.14.08
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 04 Jan 2024 02:14:09 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 0084ea43-aaea-11ee-98ef-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1704363250; x=1704968050; darn=lists.xenproject.org;
        h=mime-version:user-agent:content-transfer-encoding:references
         :in-reply-to:date:cc:to:from:subject:message-id:from:to:cc:subject
         :date:message-id:reply-to;
        bh=zw1LvQiWrC4tM8/3EvC/l4uZmCCd2VC/xJIGQf4sNW0=;
        b=NDmmcJxwBTktaR3LbJDO11fD/e0e2hOk6TM90+5xo0ErSoc7t5J2IkGH07ogk53DiR
         SkMwEl1WDW9MWE+1kUn/Xb2FeIa9IW94rrpIb3WZvcAMkroIddNs8UvRq4yqxTSM8T6r
         MebRlxlUuZogRgP5BXGQ9pD3gu5V0E3GMFiubGysRECqqh8+DIQCMMfQQ4vz06nqkmSv
         LtKyPovYFeLx2ix7RSrM0Oa9MnPk3SPzbHt2zy+eEIuUgj93Evd3BxdfTYKKMnW1aK5G
         HRbDuX1K1yW68/0boi4ppK3zBJtXoVnM3Fh1u5fXpw8fhhHemRSp6ufTbJy4Q2+fdVLT
         zIxw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704363250; x=1704968050;
        h=mime-version:user-agent:content-transfer-encoding:references
         :in-reply-to:date:cc:to:from:subject:message-id:x-gm-message-state
         :from:to:cc:subject:date:message-id:reply-to;
        bh=zw1LvQiWrC4tM8/3EvC/l4uZmCCd2VC/xJIGQf4sNW0=;
        b=w4GDKQcIJVGP35lfRQvdd8I+ZhNdJdR+1Iy3WGcQgKIh3yvkPM58ueQrBUgQKh9CMi
         Nly+ArqiBzr0ZDmWnhnjeL0nBBaYVJPAu29M39yh0ijDIdQUHPak4qQ3qPGtxAFZhoz+
         o75bMM8Wxt8yZ2+0nrdwrvC5W48OWvtSS5GqprQjRS5eiaSMFQ9bt61S4hpkqud2084f
         CPB9gsXf+1XLbxjlk4C70xJDdJquDCO6NYX4WsXmbQdCR0Mst6//JqgpzySdqmo+dPi5
         kl2Ug9YJu8rC6HEcvUYQoKC2lYpXIVEdx91GimopcOXsaMJUHZOAZKLtGs8uHDq0XIC2
         EPXA==
X-Gm-Message-State: AOJu0Yxe7dmHtqJqCNJpBBVPstqFJUowCtJ2Jd2906uHm2leQKZnhi++
	zvyvOW/6WnUqe6QzJPvtU08=
X-Google-Smtp-Source: AGHT+IEKHf9w29QHGu7PY/MSe7A004witrqud/4EIM9MrkNeOvm/tIZMVF345g6K2yPhJMoqbtdXHA==
X-Received: by 2002:a05:651c:1992:b0:2cd:122a:7ed4 with SMTP id bx18-20020a05651c199200b002cd122a7ed4mr140659ljb.8.1704363249646;
        Thu, 04 Jan 2024 02:14:09 -0800 (PST)
Message-ID: <5055a7085e00725394210b5907abbeb8693cca31.camel@gmail.com>
Subject: Re: Xen 4.19 release schedule proposal
From: Oleksii <oleksii.kurochko@gmail.com>
To: Juergen Gross <jgross@suse.com>, xen-devel@lists.xenproject.org
Cc: community.manager@xenproject.org, julien@xen.org,
 sstabellini@kernel.org,  Bertrand.Marquis@arm.com,
 andrew.cooper3@citrix.com, jbeulich@suse.com,  roger.pau@citrix.com,
 anthony.perard@citrix.com, george.dunlap@cloud.com,  Wei.Chen@arm.com
Date: Thu, 04 Jan 2024 12:14:08 +0200
In-Reply-To: <9637302c-9fcf-46c5-9b70-ec44cd25f89d@suse.com>
References: <cover.1703072575.git.oleksii.kurochko@gmail.com>
	 <08bca9a4158a190a0a953e5bc071a512cfe5f0f8.1703072575.git.oleksii.kurochko@gmail.com>
	 <341249d1-217f-4ad2-9455-b1aded4b9b56@xen.org>
	 <03cf5145-2124-4150-9f20-904f08bcabda@suse.com>
	 <9f8c4fe0a87742444b52a42aa5924cf046ee18b0.camel@gmail.com>
	 <67bf2be7-53f4-40d0-a856-8ae631a054b0@suse.com>
	 <955e9b02-20bd-4279-9f60-bb757cdf1a03@xen.org>
	 <0f729b61-b839-48f6-89ae-b5570b1eae0b@xen.org>
	 <26152790b0b8c3330d9cfc3c0462a1c072d6d598.camel@gmail.com>
	 <9637302c-9fcf-46c5-9b70-ec44cd25f89d@suse.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
User-Agent: Evolution 3.50.2 (3.50.2-1.fc39) 
MIME-Version: 1.0

On Wed, 2024-01-03 at 06:53 +0100, Juergen Gross wrote:
> On 02.01.24 17:59, Oleksii wrote:
> > Dear community,
> >=20
> > Wishing you a Happy New Year!
> >=20
> > I'd like to propose the release schedule for Xen 4.19.
> >=20
> > Based on the previous release schedules [1] and [2], it seems the
> > next
> > release date should be on Wednesday, July 10, 2024:
> >=20
> > ** Proposed option: Wed Jul 10, 2024 **
> > (+9 months from Xen 4.18 release)
> >=20
> > - Last posting date=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0 Fri Apr 26, 2024
> >=20
> > Patches adding new features are expected to be posted to the
> > mailing
> > list by this date, although perhaps not in their final version.
> >=20
> > - Feature freeze=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0 Fri May 17, 2024 (+3 weeks from Last
> > posting date)
> >=20
> > Patches adding new features should be committed by this date.
> > Straightforward bugfixes may continue to be accepted by
> > maintainers.
> >=20
> > - Code freeze=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 Fri May 31, 2024 (+2 weeks from
> > Feature
> > freeze)
> >=20
> > Bugfixes only.
> >=20
> > - Hard code freeze=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0 Fri Jun 21, 2024 (+3 weeks from Code
> > freeze)
> >=20
> > Bugfixes for serious bugs (including regressions), and low-risk
> > fixes
> > only.
> >=20
> > - Final commits=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0 Fri Jul 05, 2024 (+2 weeks from Hard
> > code
> > freeze)
> >=20
> > Branch off staging-4.19.
> >=20
> > - Release=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 Wed Jul 10, 2024
> >=20
> > If there are no objections, we will stick to the proposed schedule.
> >=20
> > One more thing I'd like to discuss is whether to add a file
> > (RELEASE.md) with the release schedule to the source code or update
> > an
> > existing one (xen-release-management.pandoc). I think it will help
> > to
> > find the final release schedule for the nearest release. For
> > example,
> > for the previous release, there are a lot of emails with proposed
> > schedules, polls of Xen release schedules, and I found the final
> > release schedule in just one of the replies (but probably I missed
> > something).
>=20
> What about putting it into the wiki under
> Xen_Project_X.YY_Release_Notes?
> That way it would already be accessible via SUPPORT.md (in the wiki
> under
> https://xenbits.xen.org/docs/unstable-staging/support-matrix.html=C2=A0).
It makes sense to me. Thanks.

~ Oleksii


From xen-devel-bounces@lists.xenproject.org Thu Jan 04 10:19:48 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 04 Jan 2024 10:19:48 +0000
Received: from list by lists.xenproject.org with outflank-mailman.661480.1031186 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLKpC-00052k-Tg; Thu, 04 Jan 2024 10:19:42 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 661480.1031186; Thu, 04 Jan 2024 10:19:42 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLKpC-00052d-Qx; Thu, 04 Jan 2024 10:19:42 +0000
Received: by outflank-mailman (input) for mailman id 661480;
 Thu, 04 Jan 2024 10:19:41 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=nu+b=IO=amd.com=Michal.Orzel@srs-se1.protection.inumbo.net>)
 id 1rLKpB-00052X-G3
 for xen-devel@lists.xenproject.org; Thu, 04 Jan 2024 10:19:41 +0000
Received: from NAM11-BN8-obe.outbound.protection.outlook.com
 (mail-bn8nam11on20600.outbound.protection.outlook.com
 [2a01:111:f400:7eae::600])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id c3f53e26-aaea-11ee-9b0f-b553b5be7939;
 Thu, 04 Jan 2024 11:19:39 +0100 (CET)
Received: from DM6PR07CA0100.namprd07.prod.outlook.com (2603:10b6:5:337::33)
 by MW3PR12MB4425.namprd12.prod.outlook.com (2603:10b6:303:5e::21) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7159.14; Thu, 4 Jan
 2024 10:19:34 +0000
Received: from DS2PEPF0000343A.namprd02.prod.outlook.com
 (2603:10b6:5:337:cafe::4e) by DM6PR07CA0100.outlook.office365.com
 (2603:10b6:5:337::33) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7159.15 via Frontend
 Transport; Thu, 4 Jan 2024 10:19:34 +0000
Received: from SATLEXMB03.amd.com (165.204.84.17) by
 DS2PEPF0000343A.mail.protection.outlook.com (10.167.18.37) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.7159.9 via Frontend Transport; Thu, 4 Jan 2024 10:19:33 +0000
Received: from SATLEXMB06.amd.com (10.181.40.147) by SATLEXMB03.amd.com
 (10.181.40.144) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.34; Thu, 4 Jan
 2024 04:19:33 -0600
Received: from SATLEXMB04.amd.com (10.181.40.145) by SATLEXMB06.amd.com
 (10.181.40.147) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.34; Thu, 4 Jan
 2024 04:19:32 -0600
Received: from [10.252.147.188] (10.180.168.240) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server id 15.1.2507.34 via Frontend
 Transport; Thu, 4 Jan 2024 04:19:30 -0600
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: c3f53e26-aaea-11ee-9b0f-b553b5be7939
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=Zqme9GvYB/3pHY6YJo5dFciA09NExqYQoZpXVmteaRCZ3uy1vGEk+APyyG8qG3Msu4ftUdYAqjHuZVMrAGNrmbtYevChATMR9j7Y1meCuBfeD3zZ4RAKhpsNJYVdKJXnsimFPhnB6Uqe7F8CDmZzBU/sPDsFzoW2hQwFEllU2zLQlVAf/8ln69JMQap55rQMzVF8+PHhZ2UsKSk4YB8CkSVEruGAuNVIq0n6CO4KhAJnDFATEaKJ/tiyb7ED4zHzzpKPeeJIq1hMq7pE/8JG2ce+tRzKQidiZ8S6JrSnHYpyiait5/0E5aWmeuibZE8hEyB37wfOa90FU8kJCKU14g==
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=56/EsmmJAImuc/HA8mpDJl0CaOzEPeNKFyL0hwjUg9o=;
 b=BXaKHpRlKRuzo67VUXpZ/oT3dmlNg20Y21hF0FGuFUrR/Uc6SIl+BOtn7T9xAfNt/2Yb/I9zrLnpND97v1Eh4jJ/RWUkohIoyfI3i06PfbHfkzBuY3TqkzTAf9bKpNliwpCA4nRwKUv9zU59oOTZRDUUjGls3cxKS3Krc4dLSvu2MJJCaq7yzt0yCjw5jIc0f+XkNzXN89tHApL8Hbud0AClIefhn2O/0s4OWDE/Rn+HRPYKuGrV+W3D6VwsleigkCY5Ij81mrB6nbVfMdpA5n2IDPgZ4nqC9/gqZPmKZoP7cq94leRkWteOYys9Vvy+LoxxDj21deQaKNLIep+4IA==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=minervasys.tech 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)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=56/EsmmJAImuc/HA8mpDJl0CaOzEPeNKFyL0hwjUg9o=;
 b=M3+//y0Y8imNJ/ayYrAC7cWX/dZ+TXJo2HPlwIxuxFUTqAM5JzHRnmouKtXMj85tse1qdATSXhzN3NbkiZwzKy2V+p11fTfm9pCPB7LR2T35JEi+65xkP0cW5G4SmFK1aRqjlv/L40tGc0vOWIdIRxVrRJGGmgLIzkmjyAPTbug=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=SATLEXMB03.amd.com; pr=C
Message-ID: <fbe44fb6-2be3-4720-8b8e-3a05c0307d25@amd.com>
Date: Thu, 4 Jan 2024 11:19:29 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v5 00/13] Arm cache coloring
To: Carlo Nonato <carlo.nonato@minervasys.tech>, Stefano Stabellini
	<sstabellini@kernel.org>
CC: <xen-devel@lists.xenproject.org>, Andrew Cooper
	<andrew.cooper3@citrix.com>, George Dunlap <george.dunlap@citrix.com>, "Jan
 Beulich" <jbeulich@suse.com>, Julien Grall <julien@xen.org>, Wei Liu
	<wl@xen.org>, Bertrand Marquis <bertrand.marquis@arm.com>, Volodymyr Babchuk
	<Volodymyr_Babchuk@epam.com>, Anthony PERARD <anthony.perard@citrix.com>,
	Juergen Gross <jgross@suse.com>
References: <20240102095138.17933-1-carlo.nonato@minervasys.tech>
 <6d652309-50e1-4850-ac52-d086a3a32726@amd.com>
 <alpine.DEB.2.22.394.2401031601180.1322202@ubuntu-linux-20-04-desktop>
 <alpine.DEB.2.22.394.2401031748040.1322202@ubuntu-linux-20-04-desktop>
 <CAG+AhRUAOcT9HTj+v4vfz6nqBG4FumYc1of9XcmyTYKtW-66yA@mail.gmail.com>
Content-Language: en-US
From: Michal Orzel <michal.orzel@amd.com>
In-Reply-To: <CAG+AhRUAOcT9HTj+v4vfz6nqBG4FumYc1of9XcmyTYKtW-66yA@mail.gmail.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: DS2PEPF0000343A:EE_|MW3PR12MB4425:EE_
X-MS-Office365-Filtering-Correlation-Id: a11536a5-ed60-4777-96a9-08dc0d0ea5a9
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam: BCL:0;
X-Microsoft-Antispam-Message-Info:
	Wpo6+kkQk8Aj4jZkBcD7TgQy2Nuf0cxpWGl4qhCyQyuV6S41gLNWqvVWcd6ZDyqAVwEI03O9V8ocJzcQz1UZCd7QaNH6yiGVp36Qq7dXhl6eVQtrbqMuyBHZaittbmNcD6tDyAtOXonm+EU14A+VYzuXAYcTRkt2aOf84g9MeWbdUxChTpY5TkaH34GJ99sNWwT5ap9NNkrHr68SUmuLpsJD3J7mVCLFBQ5DpNDfYuq1rqIeTfsFnqxIM83KJ6kCYKX2ma+dWjjIgtoyanYkX7OlGXY71UR0iEfwnFoQNUQbEENsMCjPCDaOw+z4roEHtdS1XjyzGVaNeQsqE1OtaLW6bPt6HkG2Lv42OBOwtlx+HRfCAXbuSCERtanRAAX08bafxZ/FGj8IAiEUahvCYDK6MWoXx4HqCCc1U7r0X3MaVLzc5O5LJYLQl3thWSMiGUFyCANewaVaDoB0dLO9p5I6FtlGSPAEv/NxgSpcbxnov+JP55BcqPVv5RnpJ2tKoDfh59RGkFc+e2oEjK5u0Ku5rBgx7XQEiuPlGTi9wVbvotN/U435cU0Qe4XCGM9KBKWg9eRQ67ZwKRPMBHYJjwt8svJ8y/p6O+z9jXyBqwjH8kuhTQUDyX+qw1qz2JTvDnpTA2SLnxQ5fPOy0oIeTFr1ZZFdlPdbk2vZAFLjmWql4/szWgj3anmC+BWvqcE6EQMMtfzi/UycKDqbFX+8Eo4RHU3lVBn+2maVMsszGyD1VaLGYut5+a3wdPQFwD58RZS9Z4T69nBPkE/1gjoeM5udfX4116BYB64i+JeQGsE2fUjE6BLwpV+co8codgnE
X-Forefront-Antispam-Report:
	CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB03.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230031)(4636009)(39860400002)(346002)(396003)(136003)(376002)(230922051799003)(64100799003)(451199024)(1800799012)(82310400011)(186009)(36840700001)(40470700004)(46966006)(86362001)(31696002)(36756003)(356005)(81166007)(478600001)(53546011)(70206006)(70586007)(31686004)(54906003)(16576012)(110136005)(26005)(336012)(2616005)(44832011)(426003)(7416002)(5660300002)(2906002)(8936002)(8676002)(316002)(4326008)(36860700001)(82740400003)(40480700001)(40460700003)(83380400001)(47076005)(41300700001)(43740500002)(36900700001);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Jan 2024 10:19:33.8575
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: a11536a5-ed60-4777-96a9-08dc0d0ea5a9
X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB03.amd.com]
X-MS-Exchange-CrossTenant-AuthSource:
	DS2PEPF0000343A.namprd02.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW3PR12MB4425



On 04/01/2024 10:37, Carlo Nonato wrote:
> 
> 
> Hi Stefano,
> 
> On Thu, Jan 4, 2024 at 2:55 AM Stefano Stabellini
> <sstabellini@kernel.org> wrote:
>>
>> On Wed, 3 Jan 2024, Stefano Stabellini wrote:
>>> Also I tried this patch series on the "staging" branch and Xen failed to
>>> boot, no messages at all from Xen so it must be an early boot failure. I
>>> am passing this command line options to Xen and running it on QEMU:
>>>
>>> dom0_mem=1024M dom0_max_vcpus=1 xen-llc-colors=0 dom0-llc-colors=1-5 llc-way-size=65535 llc-coloring=true
>>
>> I managed to make it to work successfully with the following command
>> line:
>>
>> xen-llc-colors=0 dom0-llc-colors=1-5 llc-way-size=64K llc-coloring=on
>>
>> I think the problem was llc-way-size that needs to be rounded up (64K
>> instead of 65535).
>>
>> Also I found a few build issues when building for other architectures or
>> different kconfig options. This patch addresses those issues (however it
>> is not to be taken as is as the build issues should not be introduced in
>> the first place and there are probably better way to fix them, but I
>> hope it can help).
>>
>> Cheers,
>>
>> Stefano
>>
>>
>> diff --git a/xen/arch/arm/llc-coloring.c b/xen/arch/arm/llc-coloring.c
>> index f434efc45b..efe5cf3c23 100644
>> --- a/xen/arch/arm/llc-coloring.c
>> +++ b/xen/arch/arm/llc-coloring.c
>> @@ -39,7 +39,7 @@ static unsigned int __ro_after_init xen_num_colors;
>>
>>  #define mfn_color_mask              (nr_colors - 1)
>>  #define mfn_to_color(mfn)           (mfn_x(mfn) & mfn_color_mask)
>> -#define mfn_set_color(mfn, color)   ((mfn_x(mfn) & ~mfn_color_mask) | (color))
>> +#define mfn_set_color(mfn, color)   (_mfn((mfn_x(mfn) & ~mfn_color_mask) | (color)))
> 
> Thanks for spotting this.
> 
>>  /*
>>   * Parse the coloring configuration given in the buf string, following the
>> diff --git a/xen/arch/arm/mm.c b/xen/arch/arm/mm.c
>> index 3bb0c9221f..bf16703e24 100644
>> --- a/xen/arch/arm/mm.c
>> +++ b/xen/arch/arm/mm.c
>> @@ -610,10 +610,10 @@ void __init setup_pagetables(unsigned long boot_phys_offset, paddr_t xen_paddr)
>>      pte.pt.table = 1;
>>      xen_second[second_table_offset(FIXMAP_ADDR(0))] = pte;
>>
>> +#ifdef CONFIG_ARM_64
>>      if ( llc_coloring_enabled )
>>          ttbr = virt_to_maddr(virt_to_reloc_virt(xen_pgtable));
>>      else
>> -#ifdef CONFIG_ARM_64
>>          ttbr = (uintptr_t) xen_pgtable + phys_offset;
>>  #else
>>          ttbr = (uintptr_t) cpu0_pgtable + phys_offset;
>> diff --git a/xen/include/xen/llc-coloring.h b/xen/include/xen/llc-coloring.h
>> index 7cd481e955..516139c4ff 100644
>> --- a/xen/include/xen/llc-coloring.h
>> +++ b/xen/include/xen/llc-coloring.h
>> @@ -21,7 +21,27 @@
>>  extern bool llc_coloring_enabled;
>>  #define llc_coloring_enabled (llc_coloring_enabled)
>>  #endif
>> -
>> +#else
>> +static inline void *xen_remap_colored(mfn_t xen_fn, paddr_t xen_size)
>> +{
>> +    return NULL;
>> +}
>> +static inline int domain_set_llc_colors_from_str(struct domain *d, const char *str)
>> +{
>> +    return -ENOSYS;
>> +}
>> +static inline int dom0_set_llc_colors(struct domain *d)
>> +{
>> +    return 0;
>> +}
>> +static inline bool llc_coloring_init(void)
>> +{
>> +    return false;
>> +}
>> +static inline paddr_t xen_colored_map_size(paddr_t size)
>> +{
>> +    return 0;
>> +}
>>  #endif
>>
>>  #ifndef llc_coloring_enabled
> 
> Sorry for the compilation mess.
> 
> This is definitely a solution, but I wonder if the best thing to do would be
> to move all signatures in the common header, without the stubs, relying again
> on DCE. This seems a little strange to me because users of some of those
> functions are only in arm code, and they always have to be protected with
> llc_coloring_enabled global variable/macro if, but it works (now I'm
> compiling also for arm32 and x86).
There are a lot of places in Xen relying on DCE, so I'd be ok with that (you can wait
for Stefano's opinion). Furthermore, you already rely on that in case of e.g. domain_set_llc_colors_domctl,
domain_llc_coloring_free.

~Michal


From xen-devel-bounces@lists.xenproject.org Thu Jan 04 11:01:55 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 04 Jan 2024 11:01:55 +0000
Received: from list by lists.xenproject.org with outflank-mailman.661490.1031196 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLLTt-0007XP-Uw; Thu, 04 Jan 2024 11:01:45 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 661490.1031196; Thu, 04 Jan 2024 11:01:45 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLLTt-0007XI-SP; Thu, 04 Jan 2024 11:01:45 +0000
Received: by outflank-mailman (input) for mailman id 661490;
 Thu, 04 Jan 2024 11:01:44 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=0by4=IO=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rLLTs-0007X9-1V
 for xen-devel@lists.xenproject.org; Thu, 04 Jan 2024 11:01:44 +0000
Received: from mail-lj1-x236.google.com (mail-lj1-x236.google.com
 [2a00:1450:4864:20::236])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id a3713519-aaf0-11ee-9b0f-b553b5be7939;
 Thu, 04 Jan 2024 12:01:40 +0100 (CET)
Received: by mail-lj1-x236.google.com with SMTP id
 38308e7fff4ca-2cd0c151cdcso4485141fa.2
 for <xen-devel@lists.xenproject.org>; Thu, 04 Jan 2024 03:01:40 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 15-20020a5ea50f000000b007b6ea31bb14sm7864751iog.34.2024.01.04.03.01.38
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 04 Jan 2024 03:01:39 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: a3713519-aaf0-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1704366100; x=1704970900; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=lhH2TVX8jN54GBBzY6zIKmHsfVoMq1tKOHf+jzK3nCs=;
        b=EtpKjVCfGCDEpeqf6ERGdsUxWiwDpNHJfuqLemD8X6gkoMNU1+Nbfyt83Tzh0b2nw8
         ug46OO8sMv8nJ6cVMd/HMBexg216tYs2ZuCfAQhoYd11fr5nyMkS+vmpAFEroRuHOLlo
         N4PlYtJCp9PfNHfTYeINCv/6fa7wfWbHTwc1bi58oXLfa3kYDIot9DCjh7mckpfy38TU
         gx+zaAfGtGZ0vm8tusYZyexA1iQd39PeZZADfvxTAC2tQSEV9ajMoITLmBzBqPgMWVV0
         xurHY3JdOggp/yOET1WMsmwt7jiBM3EpERM+9oFrhXIhYb1ni+bR0mt2wNMV44wkLUGf
         HsyA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704366100; x=1704970900;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=lhH2TVX8jN54GBBzY6zIKmHsfVoMq1tKOHf+jzK3nCs=;
        b=UMx++eRG4SBeM1aQBrAA/UhSXpcn7klk08eIoK9gEfR2wQ8iQBfz6rP9rpoRcLMTsU
         oU9h+mJf5jPQ3iaNBvPoQvKkpV66PGZEknetWpiW0BWTjRwC9OG7Yil/ZvMsycL2XApi
         +QX2i59R1OeANSHdlIMxCTVurWjfUaHwjGS+C/mtwWPv2hPYYM/tziaZ7zoO2777z5wj
         ce6kbzukKZeiaODfMMCYHTAMkiDdem7lzoTi3mlX9VdBJ6g6uurLOIqqWFbBz/4P+2Rd
         yt4VNyZZKmNRWuw7PTvrUo/09H2UK3jT8aK5Axy86f5sxWpx/ZglhyJAzhh8J5s4SvpL
         P+7w==
X-Gm-Message-State: AOJu0Yz6xkdqZjXKhU7oKaRSiBmikf9RSbUndT4cfJoPzD/TsaBIjv2B
	6WYhQaMkzH2ZxwIXK3FFXgdnVWSII+GB
X-Google-Smtp-Source: AGHT+IGRqp8CiKhOFODq3AcJHuS66zizR1bLSM2CN4TyWvgHe4ECETSq8dQEj7RDpQ3Lia8R+qc9tg==
X-Received: by 2002:ac2:4307:0:b0:50e:885d:4d1d with SMTP id l7-20020ac24307000000b0050e885d4d1dmr227543lfh.37.1704366100165;
        Thu, 04 Jan 2024 03:01:40 -0800 (PST)
Message-ID: <e506cc91-c03c-436e-bfbe-8ff5a3039dc8@suse.com>
Date: Thu, 4 Jan 2024 12:01:47 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 03/34] xen: add support in public/hvm/save.h for PPC
 and RISC-V
Content-Language: en-US
To: Oleksii Kurochko <oleksii.kurochko@gmail.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 George Dunlap <george.dunlap@citrix.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>,
 xen-devel@lists.xenproject.org
References: <cover.1703255175.git.oleksii.kurochko@gmail.com>
 <365d4ab4591129af3a52176d991146b2f64f944b.1703255175.git.oleksii.kurochko@gmail.com>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <365d4ab4591129af3a52176d991146b2f64f944b.1703255175.git.oleksii.kurochko@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 22.12.2023 16:12, Oleksii Kurochko wrote:
> Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>

Since you change how PPC is handled, this can't go without description (i.e.
justification).

Jan

> --- a/xen/include/public/hvm/save.h
> +++ b/xen/include/public/hvm/save.h
> @@ -89,8 +89,8 @@ DECLARE_HVM_SAVE_TYPE(END, 0, struct hvm_save_end);
>  #include "../arch-x86/hvm/save.h"
>  #elif defined(__arm__) || defined(__aarch64__)
>  #include "../arch-arm/hvm/save.h"
> -#elif defined(__powerpc64__)
> -#include "../arch-ppc.h"
> +#elif defined(__powerpc64__) || defined(__riscv)
> +/* no specific header to include */
>  #else
>  #error "unsupported architecture"
>  #endif



From xen-devel-bounces@lists.xenproject.org Thu Jan 04 11:04:25 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 04 Jan 2024 11:04:25 +0000
Received: from list by lists.xenproject.org with outflank-mailman.661499.1031207 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLLWR-0008B1-Bh; Thu, 04 Jan 2024 11:04:23 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 661499.1031207; Thu, 04 Jan 2024 11:04:23 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLLWR-0008Au-8r; Thu, 04 Jan 2024 11:04:23 +0000
Received: by outflank-mailman (input) for mailman id 661499;
 Thu, 04 Jan 2024 11:04:21 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=0by4=IO=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rLLWP-0008Am-Kx
 for xen-devel@lists.xenproject.org; Thu, 04 Jan 2024 11:04:21 +0000
Received: from mail-lj1-x230.google.com (mail-lj1-x230.google.com
 [2a00:1450:4864:20::230])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 02cfe1ba-aaf1-11ee-98ef-6d05b1d4d9a1;
 Thu, 04 Jan 2024 12:04:20 +0100 (CET)
Received: by mail-lj1-x230.google.com with SMTP id
 38308e7fff4ca-2cd20d9d483so4325491fa.1
 for <xen-devel@lists.xenproject.org>; Thu, 04 Jan 2024 03:04:20 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 w21-20020a029695000000b0046df10baf97sm235185jai.36.2024.01.04.03.04.19
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 04 Jan 2024 03:04:19 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 02cfe1ba-aaf1-11ee-98ef-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1704366260; x=1704971060; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=AGh4cn3QHmlAtXNzq7jjH9bBqsLN1Fv+teEIf7raKkQ=;
        b=ClP3a6VvA2e4NYyy8oMG5nzefH5jI43AZFUXpCmEJBx6E4Co1nFyrfgSBh1qd8OJSX
         57p4MRIIeQgYrMq6JMgZrp6QSrCk63HA7pldRR5H4QWyOwQUlIIjzwQFmHmSneLevVZ2
         aTJthJixPGdj7LfZL2/QvyzEEIrEikyZ+3d23L/7oy8EYqdYyU8yq/SLYQDFTqxGeTnt
         7dTTMjP3R0ZnqPfi94NWg8iWi0QzqMIs6AWVRsaRVXbuHwbD57u3vQT2Fl97uDfeaNXj
         bsKDCkwSGed+IC58eMXAEx+cJLJFSmjpLSnCBfnUQx0duZyJBUyCJwadyBVRDFEy83xK
         +U8Q==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704366260; x=1704971060;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=AGh4cn3QHmlAtXNzq7jjH9bBqsLN1Fv+teEIf7raKkQ=;
        b=eGmsZY1zG3qMVVfkZjjzUutOYoLkEUALOL2lq8iXhJsG86t6yrG0Mb3woiLfRNNwpJ
         NyUnqQqYLCdrdt/YA49HDP+C6vD2Ce2jrci9oXH/Eoc/HSsOyxLvDFT5vgghaEKgPuoB
         0nyLTsIdsHxhoQy+PC2Cf8BtixNtiBTppk2W0zeN3Mdvzf/xuWe17Fao25jMUx5VeI1I
         VVs0nxVpI5Mu1VKWBLC1lEEWAGgCHGECaw9M+l0zyERZtmkbgJv7VitJz/VWx7BaorA0
         YhYxSY8gFfDTRB991QY3W6i9JZIeRLxkzisVG5yS50K1dp2ISJzxLNKPRg1315CRHXi+
         44hg==
X-Gm-Message-State: AOJu0Yy/13PRrs5l/A888d+FOS0kOM6eoUgUwFdWWLONO34SDQir0Xka
	S0V70h4aLnRZT1Nap4mtyqV/qVA8KJIq
X-Google-Smtp-Source: AGHT+IH6MZFas3E8OV1QA/3GJzKgpY4strCZZfLqI8q0uuqhszBZ2GyeA6Pot63voqr6tfOXuNTOzg==
X-Received: by 2002:a2e:b0f5:0:b0:2cc:7156:b631 with SMTP id h21-20020a2eb0f5000000b002cc7156b631mr267175ljl.9.1704366260302;
        Thu, 04 Jan 2024 03:04:20 -0800 (PST)
Message-ID: <b1731dc3-96e3-4763-9bd4-978f44e3a6a9@suse.com>
Date: Thu, 4 Jan 2024 12:04:28 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 06/34] xen: avoid generation of empty asm/iommu.h
Content-Language: en-US
To: Oleksii Kurochko <oleksii.kurochko@gmail.com>
Cc: Paul Durrant <paul@xen.org>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger.pau@citrix.com>, xen-devel@lists.xenproject.org
References: <cover.1703255175.git.oleksii.kurochko@gmail.com>
 <e2a51f6197fce8f2ad636885ed231a6725d4cd8a.1703255175.git.oleksii.kurochko@gmail.com>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <e2a51f6197fce8f2ad636885ed231a6725d4cd8a.1703255175.git.oleksii.kurochko@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 22.12.2023 16:12, Oleksii Kurochko wrote:
> Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>

The change looks okay-ish, but again needs a description: You want to
explain why you use the absolute minimum of the scopes the two (or,
in principle, possibly more) #ifdef-s cover.

Jan

> --- a/xen/include/xen/iommu.h
> +++ b/xen/include/xen/iommu.h
> @@ -337,7 +337,9 @@ extern int iommu_add_extra_reserved_device_memory(unsigned long start,
>  extern int iommu_get_extra_reserved_device_memory(iommu_grdm_t *func,
>                                                    void *ctxt);
>  
> +#ifdef CONFIG_HAS_PASSTHROUGH
>  #include <asm/iommu.h>
> +#endif
>  
>  #ifndef iommu_call
>  # define iommu_call(ops, fn, args...) ((ops)->fn(args))
> @@ -345,7 +347,9 @@ extern int iommu_get_extra_reserved_device_memory(iommu_grdm_t *func,
>  #endif
>  
>  struct domain_iommu {
> +#ifdef CONFIG_HAS_PASSTHROUGH
>      struct arch_iommu arch;
> +#endif
>  
>      /* iommu_ops */
>      const struct iommu_ops *platform_ops;



From xen-devel-bounces@lists.xenproject.org Thu Jan 04 11:06:38 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 04 Jan 2024 11:06:38 +0000
Received: from list by lists.xenproject.org with outflank-mailman.661506.1031217 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLLYa-0000f4-O1; Thu, 04 Jan 2024 11:06:36 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 661506.1031217; Thu, 04 Jan 2024 11:06:36 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLLYa-0000ex-Kl; Thu, 04 Jan 2024 11:06:36 +0000
Received: by outflank-mailman (input) for mailman id 661506;
 Thu, 04 Jan 2024 11:06:35 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=BdYS=IO=suse.cz=jack@srs-se1.protection.inumbo.net>)
 id 1rLLYZ-0000eg-3Y
 for xen-devel@lists.xenproject.org; Thu, 04 Jan 2024 11:06:35 +0000
Received: from smtp-out1.suse.de (smtp-out1.suse.de [195.135.223.130])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 516cd70b-aaf1-11ee-9b0f-b553b5be7939;
 Thu, 04 Jan 2024 12:06:32 +0100 (CET)
Received: from imap1.dmz-prg2.suse.org (imap1.dmz-prg2.suse.org
 [IPv6:2a07:de40:b281:104:10:150:64:97])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
 (No client certificate requested)
 by smtp-out1.suse.de (Postfix) with ESMTPS id B485A21DCD;
 Thu,  4 Jan 2024 11:06:31 +0000 (UTC)
Received: from imap1.dmz-prg2.suse.org (localhost [127.0.0.1])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
 (No client certificate requested)
 by imap1.dmz-prg2.suse.org (Postfix) with ESMTPS id A20CE13722;
 Thu,  4 Jan 2024 11:06:31 +0000 (UTC)
Received: from dovecot-director2.suse.de ([2a07:de40:b281:106:10:150:64:167])
 by imap1.dmz-prg2.suse.org with ESMTPSA id 8zOOJzeRlmXyfQAAD6G6ig
 (envelope-from <jack@suse.cz>); Thu, 04 Jan 2024 11:06:31 +0000
Received: by quack3.suse.cz (Postfix, from userid 1000)
 id 3DC50A07EF; Thu,  4 Jan 2024 12:06:31 +0100 (CET)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 516cd70b-aaf1-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.cz; s=susede2_rsa;
	t=1704366391; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:content-type:content-type:
	 in-reply-to:in-reply-to:references:references;
	bh=z1IF2wF6kwKN1+MUgbe4SPYXy6b3fZ2jaH8f6LqUCAU=;
	b=ed15D+gFpwqrClSMscoZXuYlaFPD5SRis5efpvHvwOFtmLvhKDT31k32lM3uAx1eRSCBKC
	hGWnOxrPK5+SF+IRzKDbnKvvUPebbuYgLoeLF6ITUFuGcKaIsQsfKLkUxjC5o8/NojVblh
	G6DHXJd4vsjP8BrQ30igQ2HAR83E4MQ=
DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.cz;
	s=susede2_ed25519; t=1704366391;
	h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:content-type:content-type:
	 in-reply-to:in-reply-to:references:references;
	bh=z1IF2wF6kwKN1+MUgbe4SPYXy6b3fZ2jaH8f6LqUCAU=;
	b=d34IMjGxeazCejiFudncTLHw7CMgLsIjxWQRRZJ2xAsFnDqQbVIvRRVRb/OJinOkDWu2zI
	4PZWPGF65Myy4bAA==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.cz; s=susede2_rsa;
	t=1704366391; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:content-type:content-type:
	 in-reply-to:in-reply-to:references:references;
	bh=z1IF2wF6kwKN1+MUgbe4SPYXy6b3fZ2jaH8f6LqUCAU=;
	b=ed15D+gFpwqrClSMscoZXuYlaFPD5SRis5efpvHvwOFtmLvhKDT31k32lM3uAx1eRSCBKC
	hGWnOxrPK5+SF+IRzKDbnKvvUPebbuYgLoeLF6ITUFuGcKaIsQsfKLkUxjC5o8/NojVblh
	G6DHXJd4vsjP8BrQ30igQ2HAR83E4MQ=
DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.cz;
	s=susede2_ed25519; t=1704366391;
	h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:content-type:content-type:
	 in-reply-to:in-reply-to:references:references;
	bh=z1IF2wF6kwKN1+MUgbe4SPYXy6b3fZ2jaH8f6LqUCAU=;
	b=d34IMjGxeazCejiFudncTLHw7CMgLsIjxWQRRZJ2xAsFnDqQbVIvRRVRb/OJinOkDWu2zI
	4PZWPGF65Myy4bAA==
Date: Thu, 4 Jan 2024 12:06:31 +0100
From: Jan Kara <jack@suse.cz>
To: Yu Kuai <yukuai1@huaweicloud.com>
Cc: axboe@kernel.dk, roger.pau@citrix.com, colyli@suse.de,
	kent.overstreet@gmail.com, joern@lazybastard.org,
	miquel.raynal@bootlin.com, richard@nod.at, vigneshr@ti.com,
	sth@linux.ibm.com, hoeppner@linux.ibm.com, hca@linux.ibm.com,
	gor@linux.ibm.com, agordeev@linux.ibm.com, jejb@linux.ibm.com,
	martin.petersen@oracle.com, clm@fb.com, josef@toxicpanda.com,
	dsterba@suse.com, viro@zeniv.linux.org.uk, brauner@kernel.org,
	nico@fluxnic.net, xiang@kernel.org, chao@kernel.org, tytso@mit.edu,
	adilger.kernel@dilger.ca, jack@suse.com, konishi.ryusuke@gmail.com,
	willy@infradead.org, akpm@linux-foundation.org, hare@suse.de,
	p.raghav@samsung.com, linux-block@vger.kernel.org,
	linux-kernel@vger.kernel.org, xen-devel@lists.xenproject.org,
	linux-bcache@vger.kernel.org, linux-mtd@lists.infradead.org,
	linux-s390@vger.kernel.org, linux-scsi@vger.kernel.org,
	linux-bcachefs@vger.kernel.org, linux-btrfs@vger.kernel.org,
	linux-fsdevel@vger.kernel.org, linux-erofs@lists.ozlabs.org,
	linux-ext4@vger.kernel.org, linux-nilfs@vger.kernel.org,
	yukuai3@huawei.com, yi.zhang@huawei.com, yangerkun@huawei.com
Subject: Re: [PATCH RFC v3 for-6.8/block 02/17] xen/blkback: use bdev api in
 xen_update_blkif_status()
Message-ID: <20240104110631.3vspsvxbbvcpdqdu@quack3>
References: <20231221085712.1766333-1-yukuai1@huaweicloud.com>
 <20231221085712.1766333-3-yukuai1@huaweicloud.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <20231221085712.1766333-3-yukuai1@huaweicloud.com>
X-Spam-Level: **
X-Spam-Level: 
X-Spamd-Bar: /
Authentication-Results: smtp-out1.suse.de;
	dkim=pass header.d=suse.cz header.s=susede2_rsa header.b=ed15D+gF;
	dkim=pass header.d=suse.cz header.s=susede2_ed25519 header.b=d34IMjGx
X-Rspamd-Server: rspamd2.dmz-prg2.suse.org
X-Spamd-Result: default: False [0.50 / 50.00];
	 RCVD_VIA_SMTP_AUTH(0.00)[];
	 BAYES_SPAM(0.01)[44.94%];
	 SPAMHAUS_XBL(0.00)[2a07:de40:b281:104:10:150:64:97:from];
	 TO_DN_SOME(0.00)[];
	 R_RATELIMIT(0.00)[to_ip_from(RLhr85cyeg3mfw7iggddtjdkgs)];
	 RCVD_COUNT_THREE(0.00)[3];
	 DKIM_TRACE(0.00)[suse.cz:+];
	 MX_GOOD(-0.01)[];
	 NEURAL_HAM_SHORT(-0.20)[-1.000];
	 FROM_EQ_ENVFROM(0.00)[];
	 MIME_TRACE(0.00)[0:+];
	 ARC_NA(0.00)[];
	 R_DKIM_ALLOW(-0.20)[suse.cz:s=susede2_rsa,suse.cz:s=susede2_ed25519];
	 FROM_HAS_DN(0.00)[];
	 FREEMAIL_ENVRCPT(0.00)[gmail.com];
	 TO_MATCH_ENVRCPT_ALL(0.00)[];
	 TAGGED_RCPT(0.00)[];
	 MIME_GOOD(-0.10)[text/plain];
	 NEURAL_HAM_LONG(-1.00)[-1.000];
	 DKIM_SIGNED(0.00)[suse.cz:s=susede2_rsa,suse.cz:s=susede2_ed25519];
	 RCPT_COUNT_TWELVE(0.00)[48];
	 DBL_BLOCKED_OPENRESOLVER(0.00)[suse.cz:dkim,suse.com:email];
	 FUZZY_BLOCKED(0.00)[rspamd.com];
	 MID_RHS_NOT_FQDN(0.50)[];
	 FREEMAIL_CC(0.00)[kernel.dk,citrix.com,suse.de,gmail.com,lazybastard.org,bootlin.com,nod.at,ti.com,linux.ibm.com,oracle.com,fb.com,toxicpanda.com,suse.com,zeniv.linux.org.uk,kernel.org,fluxnic.net,mit.edu,dilger.ca,infradead.org,linux-foundation.org,samsung.com,vger.kernel.org,lists.xenproject.org,lists.infradead.org,lists.ozlabs.org,huawei.com];
	 RCVD_TLS_ALL(0.00)[];
	 SUSPICIOUS_RECIPS(1.50)[]
X-Spam-Score: 0.50
X-Rspamd-Queue-Id: B485A21DCD
X-Spam-Flag: NO

On Thu 21-12-23 16:56:57, Yu Kuai wrote:
> From: Yu Kuai <yukuai3@huawei.com>
> 
> Avoid to access bd_inode directly, prepare to remove bd_inode from
> block_devcie.
> 
> Signed-off-by: Yu Kuai <yukuai3@huawei.com>
> ---
>  drivers/block/xen-blkback/xenbus.c | 3 +--
>  1 file changed, 1 insertion(+), 2 deletions(-)
> 
> diff --git a/drivers/block/xen-blkback/xenbus.c b/drivers/block/xen-blkback/xenbus.c
> index e34219ea2b05..e645afa4af57 100644
> --- a/drivers/block/xen-blkback/xenbus.c
> +++ b/drivers/block/xen-blkback/xenbus.c
> @@ -104,8 +104,7 @@ static void xen_update_blkif_status(struct xen_blkif *blkif)
>  		xenbus_dev_error(blkif->be->dev, err, "block flush");
>  		return;
>  	}
> -	invalidate_inode_pages2(
> -			blkif->vbd.bdev_handle->bdev->bd_inode->i_mapping);
> +	invalidate_bdev(blkif->vbd.bdev_handle->bdev);

This function uses invalidate_inode_pages2() while invalidate_bdev() ends
up using mapping_try_invalidate() and there are subtle behavioral
differences between these two (for example invalidate_inode_pages2() tries
to clean dirty pages using the ->launder_folio method). So I think you'll
need helper like invalidate_bdev2() for this.

								Honza
-- 
Jan Kara <jack@suse.com>
SUSE Labs, CR


From xen-devel-bounces@lists.xenproject.org Thu Jan 04 11:06:56 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 04 Jan 2024 11:06:56 +0000
Received: from list by lists.xenproject.org with outflank-mailman.661510.1031227 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLLYs-00011B-2u; Thu, 04 Jan 2024 11:06:54 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 661510.1031227; Thu, 04 Jan 2024 11:06:54 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLLYr-000114-WE; Thu, 04 Jan 2024 11:06:54 +0000
Received: by outflank-mailman (input) for mailman id 661510;
 Thu, 04 Jan 2024 11:06:52 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=0by4=IO=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rLLYq-0000ek-TU
 for xen-devel@lists.xenproject.org; Thu, 04 Jan 2024 11:06:52 +0000
Received: from mail-lj1-x236.google.com (mail-lj1-x236.google.com
 [2a00:1450:4864:20::236])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 5cbd5caa-aaf1-11ee-98ef-6d05b1d4d9a1;
 Thu, 04 Jan 2024 12:06:51 +0100 (CET)
Received: by mail-lj1-x236.google.com with SMTP id
 38308e7fff4ca-2cd0f4f306fso4421641fa.0
 for <xen-devel@lists.xenproject.org>; Thu, 04 Jan 2024 03:06:51 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 d4-20020a92d5c4000000b0035fac895f48sm9098175ilq.29.2024.01.04.03.06.48
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 04 Jan 2024 03:06:50 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 5cbd5caa-aaf1-11ee-98ef-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1704366411; x=1704971211; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=vcDVCFcm680gqk+XNaj4OvK5RLa/d4T+NrZmRptQQLI=;
        b=NJZuxowvvD5XGvoAWsGD9wjBC9H5tRoPuhQn3AwmJStYuQJxItPOuz360rC06sK9zi
         /Ua3sAi1SsCimbPhBvpd3tNfif9bfFy7J6ON+j90kSoU45kPjK8hZVLl3QfWk26SFYcD
         gJoOKB8LCYfAkDE4RwyOom79ga71zUMijogjfpH2JsCbWt2KdSX1laMbs3tmAC9atNI/
         bDEsUP9UsYvtf7/WndsR1dVXze9mPuvK7ubXXpC5Lbh1FD0T7At9P80w6fU8oQNByMdZ
         uIyvD/dyrF8kKELgT927gXkAQJzMNw+cyS6o8sqtS+oK5jTGGKXpaew/rxW6McBtKI0J
         XvOg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704366411; x=1704971211;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=vcDVCFcm680gqk+XNaj4OvK5RLa/d4T+NrZmRptQQLI=;
        b=dRTjjZ7Gh+UhW9El9p7acOUzFbL6vUsW08Jnk545i7djpxz1Zj34z5Qn9HGkG2h0NS
         Sl3Gu/YNVlvhLgKXqpnnplTK4XI+Rcb6SGnf/bwpCofn11m13CdzlaZ/69SXDjGEaIgd
         ef/zlemz3s7xfDVoCVkOgkb3d7VwtnLVZD3gFIRpIB+KAjC0DQ98EzV7PEGwOAVzhjNU
         k4RHP9dPUuHBUccFFDLNivQRlpg6YEe4+kFqNcHVkPAGubdQDgFtP9xUySyn9RvJwlCD
         y5E2Q/sfJpOlShq1PVNlSfh9tyuz4hkEs30ATkm9yLmWcDtFEzwlqMRr4kTrJCQhmSkf
         hBaw==
X-Gm-Message-State: AOJu0YzLaWqNvMIKPPog7hElUbXovA9jNm9TCPrKZrMRJ6qhK86VnBal
	4mbQyG5kZBm8T0cXfR1cnpr+DVQw6rLy
X-Google-Smtp-Source: AGHT+IEiCKUtDSRqJpy8o1fbINsOv6noWCrar3jxK+dfqeRDgd9tFktKRr64aegL2OS5glwgcK7meA==
X-Received: by 2002:a2e:99ca:0:b0:2cc:8f7d:4e11 with SMTP id l10-20020a2e99ca000000b002cc8f7d4e11mr274307ljj.21.1704366411023;
        Thu, 04 Jan 2024 03:06:51 -0800 (PST)
Message-ID: <d096f14c-96ae-46a6-81fc-55ff8fcaaf39@suse.com>
Date: Thu, 4 Jan 2024 12:06:58 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 07/34] xen/asm-generic: introdure nospec.h
Content-Language: en-US
To: Oleksii Kurochko <oleksii.kurochko@gmail.com>
Cc: Stefano Stabellini <sstabellini@kernel.org>, Julien Grall
 <julien@xen.org>, Bertrand Marquis <bertrand.marquis@arm.com>,
 Michal Orzel <michal.orzel@amd.com>,
 Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
 Andrew Cooper <andrew.cooper3@citrix.com>,
 George Dunlap <george.dunlap@citrix.com>, Wei Liu <wl@xen.org>,
 Shawn Anastasio <sanastasio@raptorengineering.com>,
 Alistair Francis <alistair.francis@wdc.com>,
 Bob Eshleman <bobbyeshleman@gmail.com>, Connor Davis
 <connojdavis@gmail.com>, xen-devel@lists.xenproject.org
References: <cover.1703255175.git.oleksii.kurochko@gmail.com>
 <a1360d3de3da8757c69f11c3fafd99ff65654ae8.1703255175.git.oleksii.kurochko@gmail.com>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <a1360d3de3da8757c69f11c3fafd99ff65654ae8.1703255175.git.oleksii.kurochko@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 22.12.2023 16:12, Oleksii Kurochko wrote:
> The <asm/nospec.h> header is similar between Arm, PPC, and RISC-V,
> so it has been moved to asm-generic.
> 
> Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>

Acked-by: Jan Beulich <jbeulich@suse.com>

A word may want saying though on ...

> --- a/xen/arch/arm/include/asm/nospec.h
> +++ b/xen/include/asm-generic/nospec.h
> @@ -1,8 +1,8 @@
> -/* SPDX-License-Identifier: GPL-2.0 */
> -/* Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. */
> +/* SPDX-License-Identifier: GPL-2.0-only */
> +#ifndef _ASM_GENERIC_NOSPEC_H
> +#define _ASM_GENERIC_NOSPEC_H

... the removal of the copyright line.

Jan


From xen-devel-bounces@lists.xenproject.org Thu Jan 04 11:12:24 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 04 Jan 2024 11:12:24 +0000
Received: from list by lists.xenproject.org with outflank-mailman.661530.1031236 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLLe6-0003Fv-NN; Thu, 04 Jan 2024 11:12:18 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 661530.1031236; Thu, 04 Jan 2024 11:12:18 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLLe6-0003Fo-Ki; Thu, 04 Jan 2024 11:12:18 +0000
Received: by outflank-mailman (input) for mailman id 661530;
 Thu, 04 Jan 2024 11:12:17 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=0by4=IO=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rLLe5-0003Fd-21
 for xen-devel@lists.xenproject.org; Thu, 04 Jan 2024 11:12:17 +0000
Received: from mail-lj1-x22c.google.com (mail-lj1-x22c.google.com
 [2a00:1450:4864:20::22c])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 1d48fa82-aaf2-11ee-98ef-6d05b1d4d9a1;
 Thu, 04 Jan 2024 12:12:15 +0100 (CET)
Received: by mail-lj1-x22c.google.com with SMTP id
 38308e7fff4ca-2cd0c17e42bso4310461fa.0
 for <xen-devel@lists.xenproject.org>; Thu, 04 Jan 2024 03:12:14 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 bo33-20020a056e02342100b003600705e58asm6456484ilb.48.2024.01.04.03.12.12
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 04 Jan 2024 03:12:13 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 1d48fa82-aaf2-11ee-98ef-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1704366734; x=1704971534; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=aq5rkbQj2KpX16nl0ZcGOiVf5PhrMNV5nU2YySiLBBg=;
        b=McjU0ciBuXUy1FAbSrRvN/58ec1UjdSq/z6wid0ybaBpCQLzpbJMS8m/oWcFpksn0x
         tBv8f9jVD3uG/Dz8DTCzf0ImnPrs93V72cPGq3JEkBUtHaNFXMFTQqNY94+2+dRHZa89
         ruXiQ4OsyDt2BEy60gGzfJMtCxfU2kHeikEMHMq4OV/zUbBEmVDzmT5fN63Ki4N2DbNU
         lU4p1c5s7TV7/TnMeKz83vX9JYrnW7pqFq6tqfrI0iVxyfosSx+o2v8z2MO54/RFSdM8
         5pq5Tuk/p5b/nUuw+hhds9xUpL23J7jx+Aa5KznQ/79JFdedUl+KklMbXyNSiV+ol6x2
         z9AA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704366734; x=1704971534;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=aq5rkbQj2KpX16nl0ZcGOiVf5PhrMNV5nU2YySiLBBg=;
        b=q68hPaV83KwlOoLqtIPmV4r/TgnWqglUdzhDVjRfppCOVqbUyLbFaIgn/IWAvz8FDd
         b12SGSIHXYQhqSENnQ24E6fxxkSGGAog022LkCab9qXOkHkFN9wqt0z3SqIw2UxZ7agT
         0NUT7jyuxA2DfHYzxEPlO5n1ts4ELtnEJ0NEeVnqp+JtPpyGVW/l3IjGB+VXAyCuy6c4
         dYcRpkm3FyT2r3ARV1LZtlngIFO3Eo0g+wX9eKna3Q6DcPORiGWrwOv13zX7ilrl5bKI
         gEPSjSVmgNPSEOc/BwKTGZWf6r8m0uTY6er35auFTHT4FhTXRgARoT20SAxEbigA1xpG
         WLdg==
X-Gm-Message-State: AOJu0YzSfaJsib91PBWDjo7xFapuJ6b3nIcqpvG0/nAXIGP1Xd6qJPPr
	nyIoEn8W6P09NwoP6ipEF3ajzHrOASrG
X-Google-Smtp-Source: AGHT+IFE0NtE1Sj3EF1oWdOTx2QPP6WZh2Evo1Klhlp3fTU3agn/4wJQ6nMY4QhVUHdI5Bu8NqResg==
X-Received: by 2002:a05:651c:508:b0:2cd:1d5d:3240 with SMTP id o8-20020a05651c050800b002cd1d5d3240mr316200ljp.0.1704366734074;
        Thu, 04 Jan 2024 03:12:14 -0800 (PST)
Message-ID: <24b83048-7043-47a9-9fc9-3bb6cc849bad@suse.com>
Date: Thu, 4 Jan 2024 12:12:22 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] libxl: Disable relocating memory for qemu-xen in
 stubdomain too
Content-Language: en-US
To: Neowutran <xen@neowutran.ovh>
Cc: xen-devel@lists.xenproject.org, Wei Liu <wl@xen.org>,
 Anthony PERARD <anthony.perard@citrix.com>, Juergen Gross <jgross@suse.com>,
 =?UTF-8?Q?Marek_Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
References: <20231227023544.1253277-1-marmarek@invisiblethingslab.com>
 <dvzyuckd4w7vii3bytpsecdyyzizgbgxslyxiciobw3ac6wmlb@uolzr2buvi2k>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <dvzyuckd4w7vii3bytpsecdyyzizgbgxslyxiciobw3ac6wmlb@uolzr2buvi2k>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 27.12.2023 17:54, Neowutran wrote:
> On 2023-12-27 03:12, Marek Marczykowski-Górecki wrote:
>> According to comments (and experiments) qemu-xen cannot handle memory
>> reolcation done by hvmloader. The code was already disabled when running
>> qemu-xen in dom0 (see libxl__spawn_local_dm()), but it was missed when
>> adding qemu-xen support to stubdomain. Adjust libxl__spawn_stub_dm() to
>> be consistent in this regard.
>>
>> Reported-by: Neowutran <xen@neowutran.ovh>
>> Signed-off-by: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
>> ---
>>  tools/libs/light/libxl_dm.c | 10 ++++++++++
>>  1 file changed, 10 insertions(+)
>>
>> diff --git a/tools/libs/light/libxl_dm.c b/tools/libs/light/libxl_dm.c
>> index 14b593110f7c..ed620a9d8e14 100644
>> --- a/tools/libs/light/libxl_dm.c
>> +++ b/tools/libs/light/libxl_dm.c
>> @@ -2432,6 +2432,16 @@ void libxl__spawn_stub_dm(libxl__egc *egc, libxl__stub_dm_spawn_state *sdss)
>>                          "%s",
>>                          libxl_bios_type_to_string(guest_config->b_info.u.hvm.bios));
>>      }
>> +    /* Disable relocating memory to make the MMIO hole larger
>> +     * unless we're running qemu-traditional and vNUMA is not
>> +     * configured. */
>> +    libxl__xs_printf(gc, XBT_NULL,
>> +                     libxl__sprintf(gc, "%s/hvmloader/allow-memory-relocate",
>> +                                    libxl__xs_get_dompath(gc, guest_domid)),
>> +                     "%d",
>> +                     guest_config->b_info.device_model_version
>> +                        == LIBXL_DEVICE_MODEL_VERSION_QEMU_XEN_TRADITIONAL &&
>> +                     !libxl__vnuma_configured(&guest_config->b_info));
>>      ret = xc_domain_set_target(ctx->xch, dm_domid, guest_domid);
>>      if (ret<0) {
>>          LOGED(ERROR, guest_domid, "setting target domain %d -> %d",
>> -- 
>> 2.41.0
> 
> Seems to work as expected

May we translate this to Tested-by: ?

Jan


From xen-devel-bounces@lists.xenproject.org Thu Jan 04 11:13:34 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 04 Jan 2024 11:13:34 +0000
Received: from list by lists.xenproject.org with outflank-mailman.661539.1031247 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLLfJ-0003zJ-1v; Thu, 04 Jan 2024 11:13:33 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 661539.1031247; Thu, 04 Jan 2024 11:13:33 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLLfI-0003zC-UA; Thu, 04 Jan 2024 11:13:32 +0000
Received: by outflank-mailman (input) for mailman id 661539;
 Thu, 04 Jan 2024 11:13:31 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=wSyo=IO=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1rLLfH-0003z2-EO
 for xen-devel@lists.xenproject.org; Thu, 04 Jan 2024 11:13:31 +0000
Received: from mail-wr1-x433.google.com (mail-wr1-x433.google.com
 [2a00:1450:4864:20::433])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 4a34cfb0-aaf2-11ee-98ef-6d05b1d4d9a1;
 Thu, 04 Jan 2024 12:13:30 +0100 (CET)
Received: by mail-wr1-x433.google.com with SMTP id
 ffacd0b85a97d-336979a566aso322072f8f.1
 for <xen-devel@lists.xenproject.org>; Thu, 04 Jan 2024 03:13:30 -0800 (PST)
Received: from [192.168.86.29] ([90.242.36.164])
 by smtp.gmail.com with ESMTPSA id
 a7-20020a5d4d47000000b00333404e9935sm32836721wru.54.2024.01.04.03.13.28
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 04 Jan 2024 03:13:29 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 4a34cfb0-aaf2-11ee-98ef-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1704366809; x=1704971609; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=i7eYwRrCjOmgEPtBtwjnCe/LynqOaTiHsclqYVnkFhU=;
        b=lZBMVRoyG/VEzE/wpI4mJZH/5Wqby8eZi7s1HKvfvVzfAcLeo/RdzlrF5RKFG6xeu+
         3RnedKgTI80w/MByfTHUsgX2vk1cjeJdUP85GOgUyLuiHkTiOBZMizGDKeY6xxdbI/4P
         7qt+BJKexndJHOR/NZvbIqAHP1w3zaMHUySUo=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704366809; x=1704971609;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=i7eYwRrCjOmgEPtBtwjnCe/LynqOaTiHsclqYVnkFhU=;
        b=wmaJ6KBef1K2HJpzgURB4yTtZI0efu0nVmZLJG8nRhzVkznaNNKVJLJk5DdGNDqZNn
         LgRnR95LqSNiPgyDMBQixgRVG/qLr5+tsttfzB6i5kbBhU4y1gBuAGoDMXPk7LSRCthK
         a5HVTKrIVUg1xKg5oaiQoV1L4243y45pfEjsH/rwKD094yV/5RKNZzlHpwLEpol9uTYw
         UXjZLvL/jOejkyQJtNTCQmmC2Cn2nmM6gPYksUn/USGVVe9PN6b74prBObMtqLf7laxq
         ubPKBLC/buyLE+1Hvsz2T243LH7gwLa7B2rU9MLAmpMDf5Wb7vyTFZmUMgonsLFKYTdO
         Qx/Q==
X-Gm-Message-State: AOJu0YznurJzWl705JQO8KO+r+rWupZujhfpxMQaxfxq9h3zdIpehHiq
	PphdQNL2CYVoaIFtjHNvoTdh2zfmLRiLhw==
X-Google-Smtp-Source: AGHT+IGDsqOMTj98HBJxMJC1yNWHlIyfshFhCRyLd+Ncw6QlSVi0uTc0WG5ZuS1HkajTh3Aj0L3C9Q==
X-Received: by 2002:a05:6000:1967:b0:336:8657:60df with SMTP id da7-20020a056000196700b00336865760dfmr250588wrb.79.1704366809494;
        Thu, 04 Jan 2024 03:13:29 -0800 (PST)
Message-ID: <a429369f-a4b1-44f7-86c2-c8afdee13e1b@citrix.com>
Date: Thu, 4 Jan 2024 11:13:28 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 07/34] xen/asm-generic: introdure nospec.h
Content-Language: en-GB
To: Jan Beulich <jbeulich@suse.com>,
 Oleksii Kurochko <oleksii.kurochko@gmail.com>
Cc: Stefano Stabellini <sstabellini@kernel.org>, Julien Grall
 <julien@xen.org>, Bertrand Marquis <bertrand.marquis@arm.com>,
 Michal Orzel <michal.orzel@amd.com>,
 Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
 George Dunlap <george.dunlap@citrix.com>, Wei Liu <wl@xen.org>,
 Shawn Anastasio <sanastasio@raptorengineering.com>,
 Alistair Francis <alistair.francis@wdc.com>,
 Bob Eshleman <bobbyeshleman@gmail.com>, Connor Davis
 <connojdavis@gmail.com>, xen-devel@lists.xenproject.org
References: <cover.1703255175.git.oleksii.kurochko@gmail.com>
 <a1360d3de3da8757c69f11c3fafd99ff65654ae8.1703255175.git.oleksii.kurochko@gmail.com>
 <d096f14c-96ae-46a6-81fc-55ff8fcaaf39@suse.com>
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 xsFNBFLhNn8BEADVhE+Hb8i0GV6mihnnr/uiQQdPF8kUoFzCOPXkf7jQ5sLYeJa0cQi6Penp
 VtiFYznTairnVsN5J+ujSTIb+OlMSJUWV4opS7WVNnxHbFTPYZVQ3erv7NKc2iVizCRZ2Kxn
 srM1oPXWRic8BIAdYOKOloF2300SL/bIpeD+x7h3w9B/qez7nOin5NzkxgFoaUeIal12pXSR
 Q354FKFoy6Vh96gc4VRqte3jw8mPuJQpfws+Pb+swvSf/i1q1+1I4jsRQQh2m6OTADHIqg2E
 ofTYAEh7R5HfPx0EXoEDMdRjOeKn8+vvkAwhviWXTHlG3R1QkbE5M/oywnZ83udJmi+lxjJ5
 YhQ5IzomvJ16H0Bq+TLyVLO/VRksp1VR9HxCzItLNCS8PdpYYz5TC204ViycobYU65WMpzWe
 LFAGn8jSS25XIpqv0Y9k87dLbctKKA14Ifw2kq5OIVu2FuX+3i446JOa2vpCI9GcjCzi3oHV
 e00bzYiHMIl0FICrNJU0Kjho8pdo0m2uxkn6SYEpogAy9pnatUlO+erL4LqFUO7GXSdBRbw5
 gNt25XTLdSFuZtMxkY3tq8MFss5QnjhehCVPEpE6y9ZjI4XB8ad1G4oBHVGK5LMsvg22PfMJ
 ISWFSHoF/B5+lHkCKWkFxZ0gZn33ju5n6/FOdEx4B8cMJt+cWwARAQABzSlBbmRyZXcgQ29v
 cGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPsLBegQTAQgAJAIbAwULCQgHAwUVCgkI
 CwUWAgMBAAIeAQIXgAUCWKD95wIZAQAKCRBlw/kGpdefoHbdD/9AIoR3k6fKl+RFiFpyAhvO
 59ttDFI7nIAnlYngev2XUR3acFElJATHSDO0ju+hqWqAb8kVijXLops0gOfqt3VPZq9cuHlh
 IMDquatGLzAadfFx2eQYIYT+FYuMoPZy/aTUazmJIDVxP7L383grjIkn+7tAv+qeDfE+txL4
 SAm1UHNvmdfgL2/lcmL3xRh7sub3nJilM93RWX1Pe5LBSDXO45uzCGEdst6uSlzYR/MEr+5Z
 JQQ32JV64zwvf/aKaagSQSQMYNX9JFgfZ3TKWC1KJQbX5ssoX/5hNLqxMcZV3TN7kU8I3kjK
 mPec9+1nECOjjJSO/h4P0sBZyIUGfguwzhEeGf4sMCuSEM4xjCnwiBwftR17sr0spYcOpqET
 ZGcAmyYcNjy6CYadNCnfR40vhhWuCfNCBzWnUW0lFoo12wb0YnzoOLjvfD6OL3JjIUJNOmJy
 RCsJ5IA/Iz33RhSVRmROu+TztwuThClw63g7+hoyewv7BemKyuU6FTVhjjW+XUWmS/FzknSi
 dAG+insr0746cTPpSkGl3KAXeWDGJzve7/SBBfyznWCMGaf8E2P1oOdIZRxHgWj0zNr1+ooF
 /PzgLPiCI4OMUttTlEKChgbUTQ+5o0P080JojqfXwbPAyumbaYcQNiH1/xYbJdOFSiBv9rpt
 TQTBLzDKXok86M7BTQRS4TZ/ARAAkgqudHsp+hd82UVkvgnlqZjzz2vyrYfz7bkPtXaGb9H4
 Rfo7mQsEQavEBdWWjbga6eMnDqtu+FC+qeTGYebToxEyp2lKDSoAsvt8w82tIlP/EbmRbDVn
 7bhjBlfRcFjVYw8uVDPptT0TV47vpoCVkTwcyb6OltJrvg/QzV9f07DJswuda1JH3/qvYu0p
 vjPnYvCq4NsqY2XSdAJ02HrdYPFtNyPEntu1n1KK+gJrstjtw7KsZ4ygXYrsm/oCBiVW/OgU
 g/XIlGErkrxe4vQvJyVwg6YH653YTX5hLLUEL1NS4TCo47RP+wi6y+TnuAL36UtK/uFyEuPy
 wwrDVcC4cIFhYSfsO0BumEI65yu7a8aHbGfq2lW251UcoU48Z27ZUUZd2Dr6O/n8poQHbaTd
 6bJJSjzGGHZVbRP9UQ3lkmkmc0+XCHmj5WhwNNYjgbbmML7y0fsJT5RgvefAIFfHBg7fTY/i
 kBEimoUsTEQz+N4hbKwo1hULfVxDJStE4sbPhjbsPCrlXf6W9CxSyQ0qmZ2bXsLQYRj2xqd1
 bpA+1o1j2N4/au1R/uSiUFjewJdT/LX1EklKDcQwpk06Af/N7VZtSfEJeRV04unbsKVXWZAk
 uAJyDDKN99ziC0Wz5kcPyVD1HNf8bgaqGDzrv3TfYjwqayRFcMf7xJaL9xXedMcAEQEAAcLB
 XwQYAQgACQUCUuE2fwIbDAAKCRBlw/kGpdefoG4XEACD1Qf/er8EA7g23HMxYWd3FXHThrVQ
 HgiGdk5Yh632vjOm9L4sd/GCEACVQKjsu98e8o3ysitFlznEns5EAAXEbITrgKWXDDUWGYxd
 pnjj2u+GkVdsOAGk0kxczX6s+VRBhpbBI2PWnOsRJgU2n10PZ3mZD4Xu9kU2IXYmuW+e5KCA
 vTArRUdCrAtIa1k01sPipPPw6dfxx2e5asy21YOytzxuWFfJTGnVxZZSCyLUO83sh6OZhJkk
 b9rxL9wPmpN/t2IPaEKoAc0FTQZS36wAMOXkBh24PQ9gaLJvfPKpNzGD8XWR5HHF0NLIJhgg
 4ZlEXQ2fVp3XrtocHqhu4UZR4koCijgB8sB7Tb0GCpwK+C4UePdFLfhKyRdSXuvY3AHJd4CP
 4JzW0Bzq/WXY3XMOzUTYApGQpnUpdOmuQSfpV9MQO+/jo7r6yPbxT7CwRS5dcQPzUiuHLK9i
 nvjREdh84qycnx0/6dDroYhp0DFv4udxuAvt1h4wGwTPRQZerSm4xaYegEFusyhbZrI0U9tJ
 B8WrhBLXDiYlyJT6zOV2yZFuW47VrLsjYnHwn27hmxTC/7tvG3euCklmkn9Sl9IAKFu29RSo
 d5bD8kMSCYsTqtTfT6W4A3qHGvIDta3ptLYpIAOD2sY3GYq2nf3Bbzx81wZK14JdDDHUX2Rs
 6+ahAA==
In-Reply-To: <d096f14c-96ae-46a6-81fc-55ff8fcaaf39@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 04/01/2024 11:06 am, Jan Beulich wrote:
> On 22.12.2023 16:12, Oleksii Kurochko wrote:
>> The <asm/nospec.h> header is similar between Arm, PPC, and RISC-V,
>> so it has been moved to asm-generic.
>>
>> Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>
> Acked-by: Jan Beulich <jbeulich@suse.com>
>
> A word may want saying though on ...
>
>> --- a/xen/arch/arm/include/asm/nospec.h
>> +++ b/xen/include/asm-generic/nospec.h
>> @@ -1,8 +1,8 @@
>> -/* SPDX-License-Identifier: GPL-2.0 */
>> -/* Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. */
>> +/* SPDX-License-Identifier: GPL-2.0-only */
>> +#ifndef _ASM_GENERIC_NOSPEC_H
>> +#define _ASM_GENERIC_NOSPEC_H
> ... the removal of the copyright line.

That isn't a removal of ARM's copyright line.

The two files are similar enough to trigger git-diff's "this was a
rename" logic (see the a vs b paths), despite not being a rename.

It's unfortunate rendering in this case.

~Andrew


From xen-devel-bounces@lists.xenproject.org Thu Jan 04 11:18:38 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 04 Jan 2024 11:18:38 +0000
Received: from list by lists.xenproject.org with outflank-mailman.661547.1031257 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLLk0-0005HA-Jn; Thu, 04 Jan 2024 11:18:24 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 661547.1031257; Thu, 04 Jan 2024 11:18:24 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLLk0-0005H3-G5; Thu, 04 Jan 2024 11:18:24 +0000
Received: by outflank-mailman (input) for mailman id 661547;
 Thu, 04 Jan 2024 11:18:22 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=wSyo=IO=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1rLLjy-0005Gw-J1
 for xen-devel@lists.xenproject.org; Thu, 04 Jan 2024 11:18:22 +0000
Received: from mail-wm1-x335.google.com (mail-wm1-x335.google.com
 [2a00:1450:4864:20::335])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id f80f917e-aaf2-11ee-98ef-6d05b1d4d9a1;
 Thu, 04 Jan 2024 12:18:21 +0100 (CET)
Received: by mail-wm1-x335.google.com with SMTP id
 5b1f17b1804b1-40d60c49ee7so3779265e9.0
 for <xen-devel@lists.xenproject.org>; Thu, 04 Jan 2024 03:18:21 -0800 (PST)
Received: from [192.168.86.29] ([90.242.36.164])
 by smtp.gmail.com with ESMTPSA id
 z6-20020a05600c0a0600b0040b3d8907fesm5431742wmp.29.2024.01.04.03.18.20
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 04 Jan 2024 03:18:21 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: f80f917e-aaf2-11ee-98ef-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1704367101; x=1704971901; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=XLa52CHFF2nPw+ELspSX3vYQFc9qRUUli6m+PFBxg+U=;
        b=hSpDoM/ZONMb9WCE56d92ofEHykm1xKl9VNKLFHbrozRT36Hh5C4pQg9aOcLz8i44t
         McDwEoDdTO+3Ose8BxdtfITKruDrNqes5BXitb0NfSO2ID6nW7mTSUlsi7yrLzlKW3b3
         SmN/LWlaGFzJNjDkGyHfD0uNukj7mA+vxVb50=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704367101; x=1704971901;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=XLa52CHFF2nPw+ELspSX3vYQFc9qRUUli6m+PFBxg+U=;
        b=TrLhFVnXVZz9eCFXT2mWwtwdBxBqDT2D2N4TPZN21zeF+lug4c5w3QiZNuEnIhbwfe
         zJ2hPsnKxTM11Si4DWhC1qPwJCKoUWg7m1rfh+ZbiAZnmbj/YslQF0Srnwoi69AGbE0z
         BRV1xK52RUNA6U7ABN0ZSC2+k88IzVNfUPrZ+zDrOF14Md6rQqDYmuG6VtZWqoozYZph
         ahYnh86yREyrGjBR7Nb6dlg+HsC8XARzrtgXUtw9a5NSrkqgv648Y4NS3Za5dD6n7Ilh
         SoeuQJiqXPmUnihnjvqO0hz9NFJk2cRZwwUlhJ63FchwEC8K0CqRdLMUg/Pc98ETslCw
         Nyhw==
X-Gm-Message-State: AOJu0YwBHUXJzpzQkB5vlUC9jmSHV9pU2Ur7ApnthrfIdqn6y0dhn6mo
	ARZQwcV95NZBZ0pXdQTHB8Jc0ty5I6UFoQ==
X-Google-Smtp-Source: AGHT+IF3nvsOylzPkBKP1OD6OLKuFUnSr5g3MYzK7y1RVxbk5cVX5iN0haJPBejAm3FUR0YIQxdARg==
X-Received: by 2002:a7b:ce0e:0:b0:40d:60a9:19f with SMTP id m14-20020a7bce0e000000b0040d60a9019fmr271608wmc.170.1704367101191;
        Thu, 04 Jan 2024 03:18:21 -0800 (PST)
Message-ID: <91a2464a-4c59-4431-8814-7671e1493657@citrix.com>
Date: Thu, 4 Jan 2024 11:18:20 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] libxl: Disable relocating memory for qemu-xen in
 stubdomain too
Content-Language: en-GB
To: =?UTF-8?Q?Marek_Marczykowski-G=C3=B3recki?=
 <marmarek@invisiblethingslab.com>, xen-devel@lists.xenproject.org
Cc: Neowutran <xen@neowutran.ovh>, Wei Liu <wl@xen.org>,
 Anthony PERARD <anthony.perard@citrix.com>, Juergen Gross <jgross@suse.com>
References: <20231227023544.1253277-1-marmarek@invisiblethingslab.com>
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 xsFNBFLhNn8BEADVhE+Hb8i0GV6mihnnr/uiQQdPF8kUoFzCOPXkf7jQ5sLYeJa0cQi6Penp
 VtiFYznTairnVsN5J+ujSTIb+OlMSJUWV4opS7WVNnxHbFTPYZVQ3erv7NKc2iVizCRZ2Kxn
 srM1oPXWRic8BIAdYOKOloF2300SL/bIpeD+x7h3w9B/qez7nOin5NzkxgFoaUeIal12pXSR
 Q354FKFoy6Vh96gc4VRqte3jw8mPuJQpfws+Pb+swvSf/i1q1+1I4jsRQQh2m6OTADHIqg2E
 ofTYAEh7R5HfPx0EXoEDMdRjOeKn8+vvkAwhviWXTHlG3R1QkbE5M/oywnZ83udJmi+lxjJ5
 YhQ5IzomvJ16H0Bq+TLyVLO/VRksp1VR9HxCzItLNCS8PdpYYz5TC204ViycobYU65WMpzWe
 LFAGn8jSS25XIpqv0Y9k87dLbctKKA14Ifw2kq5OIVu2FuX+3i446JOa2vpCI9GcjCzi3oHV
 e00bzYiHMIl0FICrNJU0Kjho8pdo0m2uxkn6SYEpogAy9pnatUlO+erL4LqFUO7GXSdBRbw5
 gNt25XTLdSFuZtMxkY3tq8MFss5QnjhehCVPEpE6y9ZjI4XB8ad1G4oBHVGK5LMsvg22PfMJ
 ISWFSHoF/B5+lHkCKWkFxZ0gZn33ju5n6/FOdEx4B8cMJt+cWwARAQABzSlBbmRyZXcgQ29v
 cGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPsLBegQTAQgAJAIbAwULCQgHAwUVCgkI
 CwUWAgMBAAIeAQIXgAUCWKD95wIZAQAKCRBlw/kGpdefoHbdD/9AIoR3k6fKl+RFiFpyAhvO
 59ttDFI7nIAnlYngev2XUR3acFElJATHSDO0ju+hqWqAb8kVijXLops0gOfqt3VPZq9cuHlh
 IMDquatGLzAadfFx2eQYIYT+FYuMoPZy/aTUazmJIDVxP7L383grjIkn+7tAv+qeDfE+txL4
 SAm1UHNvmdfgL2/lcmL3xRh7sub3nJilM93RWX1Pe5LBSDXO45uzCGEdst6uSlzYR/MEr+5Z
 JQQ32JV64zwvf/aKaagSQSQMYNX9JFgfZ3TKWC1KJQbX5ssoX/5hNLqxMcZV3TN7kU8I3kjK
 mPec9+1nECOjjJSO/h4P0sBZyIUGfguwzhEeGf4sMCuSEM4xjCnwiBwftR17sr0spYcOpqET
 ZGcAmyYcNjy6CYadNCnfR40vhhWuCfNCBzWnUW0lFoo12wb0YnzoOLjvfD6OL3JjIUJNOmJy
 RCsJ5IA/Iz33RhSVRmROu+TztwuThClw63g7+hoyewv7BemKyuU6FTVhjjW+XUWmS/FzknSi
 dAG+insr0746cTPpSkGl3KAXeWDGJzve7/SBBfyznWCMGaf8E2P1oOdIZRxHgWj0zNr1+ooF
 /PzgLPiCI4OMUttTlEKChgbUTQ+5o0P080JojqfXwbPAyumbaYcQNiH1/xYbJdOFSiBv9rpt
 TQTBLzDKXok86M7BTQRS4TZ/ARAAkgqudHsp+hd82UVkvgnlqZjzz2vyrYfz7bkPtXaGb9H4
 Rfo7mQsEQavEBdWWjbga6eMnDqtu+FC+qeTGYebToxEyp2lKDSoAsvt8w82tIlP/EbmRbDVn
 7bhjBlfRcFjVYw8uVDPptT0TV47vpoCVkTwcyb6OltJrvg/QzV9f07DJswuda1JH3/qvYu0p
 vjPnYvCq4NsqY2XSdAJ02HrdYPFtNyPEntu1n1KK+gJrstjtw7KsZ4ygXYrsm/oCBiVW/OgU
 g/XIlGErkrxe4vQvJyVwg6YH653YTX5hLLUEL1NS4TCo47RP+wi6y+TnuAL36UtK/uFyEuPy
 wwrDVcC4cIFhYSfsO0BumEI65yu7a8aHbGfq2lW251UcoU48Z27ZUUZd2Dr6O/n8poQHbaTd
 6bJJSjzGGHZVbRP9UQ3lkmkmc0+XCHmj5WhwNNYjgbbmML7y0fsJT5RgvefAIFfHBg7fTY/i
 kBEimoUsTEQz+N4hbKwo1hULfVxDJStE4sbPhjbsPCrlXf6W9CxSyQ0qmZ2bXsLQYRj2xqd1
 bpA+1o1j2N4/au1R/uSiUFjewJdT/LX1EklKDcQwpk06Af/N7VZtSfEJeRV04unbsKVXWZAk
 uAJyDDKN99ziC0Wz5kcPyVD1HNf8bgaqGDzrv3TfYjwqayRFcMf7xJaL9xXedMcAEQEAAcLB
 XwQYAQgACQUCUuE2fwIbDAAKCRBlw/kGpdefoG4XEACD1Qf/er8EA7g23HMxYWd3FXHThrVQ
 HgiGdk5Yh632vjOm9L4sd/GCEACVQKjsu98e8o3ysitFlznEns5EAAXEbITrgKWXDDUWGYxd
 pnjj2u+GkVdsOAGk0kxczX6s+VRBhpbBI2PWnOsRJgU2n10PZ3mZD4Xu9kU2IXYmuW+e5KCA
 vTArRUdCrAtIa1k01sPipPPw6dfxx2e5asy21YOytzxuWFfJTGnVxZZSCyLUO83sh6OZhJkk
 b9rxL9wPmpN/t2IPaEKoAc0FTQZS36wAMOXkBh24PQ9gaLJvfPKpNzGD8XWR5HHF0NLIJhgg
 4ZlEXQ2fVp3XrtocHqhu4UZR4koCijgB8sB7Tb0GCpwK+C4UePdFLfhKyRdSXuvY3AHJd4CP
 4JzW0Bzq/WXY3XMOzUTYApGQpnUpdOmuQSfpV9MQO+/jo7r6yPbxT7CwRS5dcQPzUiuHLK9i
 nvjREdh84qycnx0/6dDroYhp0DFv4udxuAvt1h4wGwTPRQZerSm4xaYegEFusyhbZrI0U9tJ
 B8WrhBLXDiYlyJT6zOV2yZFuW47VrLsjYnHwn27hmxTC/7tvG3euCklmkn9Sl9IAKFu29RSo
 d5bD8kMSCYsTqtTfT6W4A3qHGvIDta3ptLYpIAOD2sY3GYq2nf3Bbzx81wZK14JdDDHUX2Rs
 6+ahAA==
In-Reply-To: <20231227023544.1253277-1-marmarek@invisiblethingslab.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 27/12/2023 2:35 am, Marek Marczykowski-Górecki wrote:
> According to comments (and experiments) qemu-xen cannot handle memory
> reolcation done by hvmloader. The code was already disabled when running
> qemu-xen in dom0 (see libxl__spawn_local_dm()), but it was missed when
> adding qemu-xen support to stubdomain. Adjust libxl__spawn_stub_dm() to
> be consistent in this regard.
>
> Reported-by: Neowutran <xen@neowutran.ovh>
> Signed-off-by: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>

It turns out that it's unconditionally clobbered in XenServer too.

https://github.com/xapi-project/xen-api/blob/53d2e8cdff76ca6805c7018948a9c414b9ac7c72/ocaml/xenopsd/scripts/qemu-wrapper#L146

Not that I'm surprised - this falls squarely into guest-physmap mess
which is broken in several well-documented ways already.

~Andrew


From xen-devel-bounces@lists.xenproject.org Thu Jan 04 11:19:07 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 04 Jan 2024 11:19:07 +0000
Received: from list by lists.xenproject.org with outflank-mailman.661551.1031266 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLLkg-0005kj-VG; Thu, 04 Jan 2024 11:19:06 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 661551.1031266; Thu, 04 Jan 2024 11:19:06 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLLkg-0005kc-SO; Thu, 04 Jan 2024 11:19:06 +0000
Received: by outflank-mailman (input) for mailman id 661551;
 Thu, 04 Jan 2024 11:19:05 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=Him7=IO=damsy.net=pierre-eric@srs-se1.protection.inumbo.net>)
 id 1rLLkf-0005io-9o
 for xen-devel@lists.xenproject.org; Thu, 04 Jan 2024 11:19:05 +0000
Received: from mail.damsy.net (mail.damsy.net [85.90.245.9])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 10ceb6c7-aaf3-11ee-9b0f-b553b5be7939;
 Thu, 04 Jan 2024 12:19:03 +0100 (CET)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 10ceb6c7-aaf3-11ee-9b0f-b553b5be7939
Message-ID: <4acdfad6-ae3d-4b83-918f-a01019085547@damsy.net>
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=damsy.net; s=201803;
	t=1704367141;
	h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
	 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=4b9ebvtppbjDbWObrdXgfDr/y7eRq4/3Oa5/eNGMebI=;
	b=YyKPTawc/yifINUeC4lQ8vTQD+4oB7T2tpkTXWm3QJYY/zoqJmfPTVUgQrYp/r/cBnpykh
	v/zs/Z2GeCyd3mD0vxBKRSj7DvyBCNZ7CsOel3DKBrBNRNCKUFZxUc/s1u0v//7QxZZHcv
	ak1UDhHs/hZxoYZuwqLPObG6PWmPPa+8lfihbgdzMy103HxIhsD1fTKdmXp8wq+aKrAqX1
	CXFWHYs0/+S7xRkZ9DIR5oMyAhBwRK0PQ7ByakxXzv5zSH1hdBjdkQcXU/sL6EcMAl0EJx
	POQdnE7YCa6V+Hxcfd3pNXJsKSY1t6UEhR0LX/6p2YbN9kYjjzzp8pyPnm5Ctw==
Date: Thu, 4 Jan 2024 12:19:00 +0100
MIME-Version: 1.0
Subject: Re: [PATCH v6 11/11] virtio-gpu: make blob scanout use dmabuf fd
Content-Language: fr
To: Akihiko Odaki <akihiko.odaki@daynix.com>, Huang Rui <ray.huang@amd.com>,
 =?UTF-8?Q?Marc-Andr=C3=A9_Lureau?= <marcandre.lureau@gmail.com>,
 =?UTF-8?Q?Philippe_Mathieu-Daud=C3=A9?= <philmd@linaro.org>,
 Gerd Hoffmann <kraxel@redhat.com>, "Michael S . Tsirkin" <mst@redhat.com>,
 Stefano Stabellini <sstabellini@kernel.org>,
 Anthony PERARD <anthony.perard@citrix.com>,
 Antonio Caggiano <quic_acaggian@quicinc.com>,
 "Dr . David Alan Gilbert" <dgilbert@redhat.com>,
 Robert Beckett <bob.beckett@collabora.com>,
 Dmitry Osipenko <dmitry.osipenko@collabora.com>,
 Gert Wollny <gert.wollny@collabora.com>, =?UTF-8?Q?Alex_Benn=C3=A9e?=
 <alex.bennee@linaro.org>, qemu-devel@nongnu.org
Cc: xen-devel@lists.xenproject.org,
 Gurchetan Singh <gurchetansingh@chromium.org>, ernunes@redhat.com,
 Alyssa Ross <hi@alyssa.is>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger.pau@citrix.com>, Alex Deucher <alexander.deucher@amd.com>,
 Stefano Stabellini <stefano.stabellini@amd.com>,
 =?UTF-8?Q?Christian_K=C3=B6nig?= <christian.koenig@amd.com>,
 Xenia Ragiadakou <xenia.ragiadakou@amd.com>,
 Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com>,
 Honglei Huang <honglei1.huang@amd.com>, Julia Zhang <julia.zhang@amd.com>,
 Chen Jiqian <Jiqian.Chen@amd.com>
References: <20231219075320.165227-1-ray.huang@amd.com>
 <20231219075320.165227-12-ray.huang@amd.com>
 <a2c0a1f1-45a2-4957-9919-0d0cb19cd285@daynix.com>
From: Pierre-Eric Pelloux-Prayer <pierre-eric@damsy.net>
In-Reply-To: <a2c0a1f1-45a2-4957-9919-0d0cb19cd285@daynix.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit


Le 21/12/2023 à 07:25, Akihiko Odaki a écrit :
> On 2023/12/19 16:53, Huang Rui wrote:
>> From: Robert Beckett <bob.beckett@collabora.com>
>>
>> This relies on a virglrenderer change to include the dmabuf fd when
>> returning resource info.
>>
>> Signed-off-by: Robert Beckett <bob.beckett@collabora.com>
>> Signed-off-by: Huang Rui <ray.huang@amd.com>
>> ---
>>
>> Changes in v6:
>> - Add scanout_blob function for virtio-gpu-virgl.
>> - Update for new virgl_gpu_resource.
>>
>>   hw/display/virtio-gpu-virgl.c  | 104 +++++++++++++++++++++++++++++++++
>>   hw/display/virtio-gpu.c        |   4 +-
>>   include/hw/virtio/virtio-gpu.h |   6 ++
>>   3 files changed, 112 insertions(+), 2 deletions(-)
>>
>> diff --git a/hw/display/virtio-gpu-virgl.c b/hw/display/virtio-gpu-virgl.c
>> index c523a6717a..c384225a98 100644
>> --- a/hw/display/virtio-gpu-virgl.c
>> +++ b/hw/display/virtio-gpu-virgl.c
>> @@ -18,6 +18,7 @@
>>   #include "hw/virtio/virtio.h"
>>   #include "hw/virtio/virtio-gpu.h"
>>   #include "hw/virtio/virtio-gpu-bswap.h"
>> +#include "hw/virtio/virtio-gpu-pixman.h"
>>   #include "ui/egl-helpers.h"
>> @@ -726,6 +727,106 @@ static void virgl_cmd_resource_unmap_blob(VirtIOGPU *g,
>>       object_unparent(OBJECT(mr));
>>   }
>> +static void virgl_cmd_set_scanout_blob(VirtIOGPU *g,
>> +                                       struct virtio_gpu_ctrl_command *cmd)
>> +{
>> +    struct virgl_gpu_resource *vres;
>> +    struct virtio_gpu_framebuffer fb = { 0 };
>> +    struct virtio_gpu_set_scanout_blob ss;
>> +    struct virgl_renderer_resource_info info;
>> +    uint64_t fbend;
>> +
>> +    VIRTIO_GPU_FILL_CMD(ss);
>> +    virtio_gpu_scanout_blob_bswap(&ss);
>> +    trace_virtio_gpu_cmd_set_scanout_blob(ss.scanout_id, ss.resource_id,
>> +                                          ss.r.width, ss.r.height, ss.r.x,
>> +                                          ss.r.y);
>> +
>> +    if (ss.scanout_id >= g->parent_obj.conf.max_outputs) {
>> +        qemu_log_mask(LOG_GUEST_ERROR, "%s: illegal scanout id specified %d",
>> +                      __func__, ss.scanout_id);
>> +        cmd->error = VIRTIO_GPU_RESP_ERR_INVALID_SCANOUT_ID;
>> +        return;
>> +    }
>> +
>> +    if (ss.resource_id == 0) {
>> +        virtio_gpu_disable_scanout(g, ss.scanout_id);
>> +        return;
>> +    }
>> +
>> +    if (ss.width < 16 ||
>> +        ss.height < 16 ||
>> +        ss.r.x + ss.r.width > ss.width ||
>> +        ss.r.y + ss.r.height > ss.height) {
>> +        qemu_log_mask(LOG_GUEST_ERROR, "%s: illegal scanout %d bounds for"
>> +                      " resource %d, rect (%d,%d)+%d,%d, fb %d %d\n",
>> +                      __func__, ss.scanout_id, ss.resource_id,
>> +                      ss.r.x, ss.r.y, ss.r.width, ss.r.height,
>> +                      ss.width, ss.height);
>> +        cmd->error = VIRTIO_GPU_RESP_ERR_INVALID_PARAMETER;
>> +        return;
>> +    }
>> +
>> +    if (!console_has_gl(g->parent_obj.scanout[ss.scanout_id].con)) {
> 
> Shouldn't OpenGL always be available for virgl?
> 
>> +        qemu_log_mask(LOG_GUEST_ERROR, "%s: unable to scanout blot without GL!\n", __func__);
>> +        return;
>> +    }
>> +
>> +    vres = virgl_gpu_find_resource(g, ss.resource_id);
>> +    if (!vres) {
>> +        qemu_log_mask(LOG_GUEST_ERROR,
>> +                      "%s: illegal resource specified %d\n",
>> +                      __func__, ss.resource_id);
>> +        cmd->error = VIRTIO_GPU_RESP_ERR_INVALID_RESOURCE_ID;
>> +        return;
>> +    }
>> +    if (virgl_renderer_resource_get_info(ss.resource_id, &info)) {
>> +        qemu_log_mask(LOG_GUEST_ERROR,
>> +                      "%s: illegal virgl resource specified %d\n",
>> +                      __func__, ss.resource_id);
>> +        cmd->error = VIRTIO_GPU_RESP_ERR_INVALID_RESOURCE_ID;
>> +        return;
>> +    }
>> +    if (!vres->res.dmabuf_fd && info.fd)
>> +        vres->res.dmabuf_fd = info.fd;
>> +
>> +    fb.format = virtio_gpu_get_pixman_format(ss.format);
>> +    if (!fb.format) {
>> +        qemu_log_mask(LOG_GUEST_ERROR,
>> +                      "%s: host couldn't handle guest format %d\n",
>> +                      __func__, ss.format);
>> +        cmd->error = VIRTIO_GPU_RESP_ERR_INVALID_PARAMETER;
>> +        return;
>> +    }
>> +
>> +    fb.bytes_pp = DIV_ROUND_UP(PIXMAN_FORMAT_BPP(fb.format), 8);
>> +    fb.width = ss.width;
>> +    fb.height = ss.height;
>> +    fb.stride = ss.strides[0];
>> +    fb.offset = ss.offsets[0] + ss.r.x * fb.bytes_pp + ss.r.y * fb.stride;
>> +
>> +    fbend = fb.offset;
>> +    fbend += fb.stride * (ss.r.height - 1);
>> +    fbend += fb.bytes_pp * ss.r.width;
>> +    if (fbend > vres->res.blob_size) {
>> +        qemu_log_mask(LOG_GUEST_ERROR,
>> +                      "%s: fb end out of range\n",
>> +                      __func__);
>> +        cmd->error = VIRTIO_GPU_RESP_ERR_INVALID_PARAMETER;
>> +        return;
>> +    }
>> +
>> +    g->parent_obj.enable = 1;
>> +    if (virtio_gpu_update_dmabuf(g, ss.scanout_id, &vres->res,
>> +                                 &fb, &ss.r)) {
>> +        qemu_log_mask(LOG_GUEST_ERROR,
>> +                      "%s: failed to update dmabuf\n", __func__);
>> +        cmd->error = VIRTIO_GPU_RESP_ERR_INVALID_PARAMETER;
>> +        return;
>> +    }
>> +    virtio_gpu_update_scanout(g, ss.scanout_id, &vres->res, &ss.r);
>> +}
>> +
>>   #endif /* HAVE_VIRGL_RESOURCE_BLOB */
>>   void virtio_gpu_virgl_process_cmd(VirtIOGPU *g,
>> @@ -807,6 +908,9 @@ void virtio_gpu_virgl_process_cmd(VirtIOGPU *g,
>>       case VIRTIO_GPU_CMD_RESOURCE_UNMAP_BLOB:
>>           virgl_cmd_resource_unmap_blob(g, cmd);
>>           break;
>> +    case VIRTIO_GPU_CMD_SET_SCANOUT_BLOB:
> 
> VIRTIO_GPU_CMD_SET_SCANOUT_BLOB support should be added before allowing the user to enable the resource blob support.

It seems that two patches were squashed together:

- "virtio-gpu: Handle set scanout blob command" by Antonio Caggiano
- "virtio-gpu: Handle set scanout blob command" by Bob Beckett

Restoring the original patches with the appropriate S-o-b tags seems the right thing to do.

Thanks,
Pierre-Eric
> 
> You should also check if virtio_vdev_has_feature(VIRTIO_DEVICE(g), VIRTIO_GPU_F_RESOURCE_BLOB). It also applies to other resource blob commands though I failed to note that for the earlier patch.
> 


From xen-devel-bounces@lists.xenproject.org Thu Jan 04 11:25:25 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 04 Jan 2024 11:25:25 +0000
Received: from list by lists.xenproject.org with outflank-mailman.661564.1031294 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLLqh-0000v4-2S; Thu, 04 Jan 2024 11:25:19 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 661564.1031294; Thu, 04 Jan 2024 11:25:19 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLLqg-0000ux-Tz; Thu, 04 Jan 2024 11:25:18 +0000
Received: by outflank-mailman (input) for mailman id 661564;
 Thu, 04 Jan 2024 11:25:17 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=XEXr=IO=cloud.com=kelly.choi@srs-se1.protection.inumbo.net>)
 id 1rLLqf-0000VA-Ia
 for xen-devel@lists.xenproject.org; Thu, 04 Jan 2024 11:25:17 +0000
Received: from mail-ej1-x636.google.com (mail-ej1-x636.google.com
 [2a00:1450:4864:20::636])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id ee88e1cc-aaf3-11ee-9b0f-b553b5be7939;
 Thu, 04 Jan 2024 12:25:15 +0100 (CET)
Received: by mail-ej1-x636.google.com with SMTP id
 a640c23a62f3a-a28ec136715so32976466b.1
 for <xen-devel@lists.xenproject.org>; Thu, 04 Jan 2024 03:25:15 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: ee88e1cc-aaf3-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1704367514; x=1704972314; darn=lists.xenproject.org;
        h=to:subject:message-id:date:from:mime-version:from:to:cc:subject
         :date:message-id:reply-to;
        bh=Vr5LTPD2hgRo9UjfVUgLpIporLeIsxAWnW5IHdFgINs=;
        b=i3JCY7zqOi0DtKn+2u66mifgh1wEXOsnG2ct1Ox65iuPA7qCaD93ZNyoLLeGSTqzQA
         AJoNO9eNCNFVbGe2Ed7ZZ6fLGVHU4BW2cuqxFOeUoyuDWpKhqTEEIXjfVe0BVtw7IbBB
         iLieA4aZcV4cad+7Z74ZECoiNOiJt1UQHNP4c=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704367514; x=1704972314;
        h=to:subject:message-id:date:from:mime-version:x-gm-message-state
         :from:to:cc:subject:date:message-id:reply-to;
        bh=Vr5LTPD2hgRo9UjfVUgLpIporLeIsxAWnW5IHdFgINs=;
        b=HkHgGtGSjG8Fnv58wUgaFqJpO+NS/UCpACMxLUkTTJBck5Ag2IyOR1uh8rlOsRoeTc
         0yDYFHRKKoigNQqHwjGKiHApffQfSttFXvkjSBLHA76BauXHP9MzJI1Q2HqPm4AVvM6g
         24u++sdiN3vDhIh6dIu+CQSMIfnIcwisQ2dOrOZIfuL/P260EsRkuBIsI65vQ9h/QoHq
         C/U8TF3pZP3w/kpunqhND0kCfR3j9gpwI5Fl5NNOmZTG+J3uNKoaVaLMXjYwBaPzn9S5
         itInCSV8AJyi0DCj0h4FkO6L9igU9rdvNREcu+eC3l6xd0XUtbqomALMQJJ0lZH9aZUE
         TDBw==
X-Gm-Message-State: AOJu0YwgYaVgZ38X6PWrlksy4bsISMAkYYPgfJNjHeNIOKhjBSy8Wyy6
	hdog4vuh+s9fEwiOY80EeSV5PVPBFPf1Eeds+t4tcB9Nzx3hQ/hMYvSVDgrPHT6XXw==
X-Google-Smtp-Source: AGHT+IGECgkUbvJd+4n98sGgXBcQ3tJe4iK+c+vjLDrHPSyOTbi3dfBXxA9PDxAz9deW0UtEZ1VtWb44paCeRo1Avuc=
X-Received: by 2002:a17:906:f810:b0:a23:44e8:81b with SMTP id
 kh16-20020a170906f81000b00a2344e8081bmr252423ejb.73.1704367514307; Thu, 04
 Jan 2024 03:25:14 -0800 (PST)
MIME-Version: 1.0
From: Kelly Choi <kelly.choi@cloud.com>
Date: Thu, 4 Jan 2024 11:24:38 +0000
Message-ID: <CAO-mL=ybPWb_iksuryZnk=MEtog3wGTujg+fcVEwSb4JeQ4xsA@mail.gmail.com>
Subject: Xen Summit 2024
To: xen-devel@lists.xenproject.org, xen-users@lists.xenproject.org, 
	xen-announce@lists.xenproject.org
Content-Type: multipart/alternative; boundary="00000000000041e825060e1cfcec"

--00000000000041e825060e1cfcec
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

Hi Xen Community,

Happy New Year!

It's my pleasure to announce Xen Summit 2024.

Our annual event brings the community=E2=80=99s brilliant minds and power u=
sers
together. This conference is a celebration of idea exchange, showcasing the
latest advancements,
sharing invaluable experiences, fostering strategic planning, and
encouraging collaborative efforts. Above all, it=E2=80=99s a chance to reve=
l in the
vibrant community that defines the Xen Project=E2=80=99s
legacy.

*Join us!*
*Date: 4th-6th June 2024*
*Location: Lisbon, Portugal *
*Website: https://events.linuxfoundation.org/xen-project-summit/
<https://events.linuxfoundation.org/xen-project-summit/> *

The CFP is now open, with more details about the event to follow.
Please save the date and submit any ideas for talks ahead of time.

If you would like to sponsor this event, please contact me or
xenevents@linuxfoundation.org for further information. The community
heavily relies on your support to help make these events successful.

See you all there!

Many thanks,
Kelly Choi

Community Manager
Xen Project

--00000000000041e825060e1cfcec
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr">Hi Xen Community,<div><br></div><div>Happy New Year!=C2=A0=
</div><div><br></div><div>It&#39;s my pleasure to announce Xen Summit 2024.=
</div><div><br></div><div>Our annual event brings the community=E2=80=99s b=
rilliant minds and power users together. This conference is a celebration o=
f idea exchange, showcasing the latest advancements,<br>sharing invaluable =
experiences, fostering strategic planning, and encouraging collaborative ef=
forts. Above all, it=E2=80=99s a chance to revel in the vibrant community t=
hat defines the Xen Project=E2=80=99s<br>legacy.=C2=A0<br></div><div><br></=
div><div><b>Join us!</b></div><div><b>Date: 4th-6th June 2024</b></div><div=
><b>Location: Lisbon, Portugal=C2=A0</b></div><div><b>Website:=C2=A0<a href=
=3D"https://events.linuxfoundation.org/xen-project-summit/">https://events.=
linuxfoundation.org/xen-project-summit/</a>=C2=A0</b></div><div><br></div><=
div>The CFP is now open, with more details about the event to follow.=C2=A0=
</div><div>Please save the date and submit any ideas for talks ahead of tim=
e.</div><div><br></div><div>If you would like to sponsor this event, please=
 contact me or <a href=3D"mailto:xenevents@linuxfoundation.org">xenevents@l=
inuxfoundation.org</a> for further information. The community heavily relie=
s on your support to help make these events successful.=C2=A0</div><div><br=
></div><div>See you all there!=C2=A0</div><div><br></div><div><div><div dir=
=3D"ltr" class=3D"gmail_signature" data-smartmail=3D"gmail_signature"><div =
dir=3D"ltr"><div>Many thanks,</div><div>Kelly Choi</div><div><br></div><div=
><div style=3D"color:rgb(136,136,136)">Community Manager</div><div style=3D=
"color:rgb(136,136,136)">Xen Project=C2=A0<br></div></div></div></div></div=
></div></div>

--00000000000041e825060e1cfcec--


From xen-devel-bounces@lists.xenproject.org Thu Jan 04 11:29:01 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 04 Jan 2024 11:29:01 +0000
Received: from list by lists.xenproject.org with outflank-mailman.661606.1031328 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLLuG-0002r3-7L; Thu, 04 Jan 2024 11:29:00 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 661606.1031328; Thu, 04 Jan 2024 11:29:00 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLLuG-0002qw-4U; Thu, 04 Jan 2024 11:29:00 +0000
Received: by outflank-mailman (input) for mailman id 661606;
 Thu, 04 Jan 2024 11:28:58 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=BdYS=IO=suse.cz=jack@srs-se1.protection.inumbo.net>)
 id 1rLLuE-0002XE-Ii
 for xen-devel@lists.xenproject.org; Thu, 04 Jan 2024 11:28:58 +0000
Received: from smtp-out2.suse.de (smtp-out2.suse.de
 [2a07:de40:b251:101:10:150:64:2])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 7290754c-aaf4-11ee-9b0f-b553b5be7939;
 Thu, 04 Jan 2024 12:28:56 +0100 (CET)
Received: from imap1.dmz-prg2.suse.org (imap1.dmz-prg2.suse.org
 [IPv6:2a07:de40:b281:104:10:150:64:97])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
 (No client certificate requested)
 by smtp-out2.suse.de (Postfix) with ESMTPS id 9EE851F805;
 Thu,  4 Jan 2024 11:28:55 +0000 (UTC)
Received: from imap1.dmz-prg2.suse.org (localhost [127.0.0.1])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
 (No client certificate requested)
 by imap1.dmz-prg2.suse.org (Postfix) with ESMTPS id 89DFF13722;
 Thu,  4 Jan 2024 11:28:55 +0000 (UTC)
Received: from dovecot-director2.suse.de ([2a07:de40:b281:106:10:150:64:167])
 by imap1.dmz-prg2.suse.org with ESMTPSA id BsajIXeWlmXXBQAAD6G6ig
 (envelope-from <jack@suse.cz>); Thu, 04 Jan 2024 11:28:55 +0000
Received: by quack3.suse.cz (Postfix, from userid 1000)
 id 273FFA07EF; Thu,  4 Jan 2024 12:28:55 +0100 (CET)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 7290754c-aaf4-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.cz; s=susede2_rsa;
	t=1704367735; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:content-type:content-type:
	 in-reply-to:in-reply-to:references:references;
	bh=id+paq71QAy1mcff5/EB3PkmVyeX2lIOxwmUvRxr4fA=;
	b=wsQKzVwTEzNXMrID3WBUT2cACh+KzJec60Ql22fl5N5QaM5/2vK+qfg2IueeonhI3lc8Nw
	H4SFayUpxnCxSkdcbmYEGhQVwnDAKL/rHBCVpvzBMWMnq8D8tcrV6BiP5OkgTLI5R6djXs
	huBK7ewNueIlSgrTFcVmz95tuQULxHk=
DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.cz;
	s=susede2_ed25519; t=1704367735;
	h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:content-type:content-type:
	 in-reply-to:in-reply-to:references:references;
	bh=id+paq71QAy1mcff5/EB3PkmVyeX2lIOxwmUvRxr4fA=;
	b=QnmhJ6W9z9hciG62uLQwn7l6XDnoT7FgUsOy4cuGf7GKqEjXmnN5qYZJx69CAE4e0wLDCV
	6voNpMi3rZDHXuCw==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.cz; s=susede2_rsa;
	t=1704367735; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:content-type:content-type:
	 in-reply-to:in-reply-to:references:references;
	bh=id+paq71QAy1mcff5/EB3PkmVyeX2lIOxwmUvRxr4fA=;
	b=wsQKzVwTEzNXMrID3WBUT2cACh+KzJec60Ql22fl5N5QaM5/2vK+qfg2IueeonhI3lc8Nw
	H4SFayUpxnCxSkdcbmYEGhQVwnDAKL/rHBCVpvzBMWMnq8D8tcrV6BiP5OkgTLI5R6djXs
	huBK7ewNueIlSgrTFcVmz95tuQULxHk=
DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.cz;
	s=susede2_ed25519; t=1704367735;
	h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:content-type:content-type:
	 in-reply-to:in-reply-to:references:references;
	bh=id+paq71QAy1mcff5/EB3PkmVyeX2lIOxwmUvRxr4fA=;
	b=QnmhJ6W9z9hciG62uLQwn7l6XDnoT7FgUsOy4cuGf7GKqEjXmnN5qYZJx69CAE4e0wLDCV
	6voNpMi3rZDHXuCw==
Date: Thu, 4 Jan 2024 12:28:55 +0100
From: Jan Kara <jack@suse.cz>
To: Yu Kuai <yukuai1@huaweicloud.com>
Cc: axboe@kernel.dk, roger.pau@citrix.com, colyli@suse.de,
	kent.overstreet@gmail.com, joern@lazybastard.org,
	miquel.raynal@bootlin.com, richard@nod.at, vigneshr@ti.com,
	sth@linux.ibm.com, hoeppner@linux.ibm.com, hca@linux.ibm.com,
	gor@linux.ibm.com, agordeev@linux.ibm.com, jejb@linux.ibm.com,
	martin.petersen@oracle.com, clm@fb.com, josef@toxicpanda.com,
	dsterba@suse.com, viro@zeniv.linux.org.uk, brauner@kernel.org,
	nico@fluxnic.net, xiang@kernel.org, chao@kernel.org, tytso@mit.edu,
	adilger.kernel@dilger.ca, jack@suse.com, konishi.ryusuke@gmail.com,
	willy@infradead.org, akpm@linux-foundation.org, hare@suse.de,
	p.raghav@samsung.com, linux-block@vger.kernel.org,
	linux-kernel@vger.kernel.org, xen-devel@lists.xenproject.org,
	linux-bcache@vger.kernel.org, linux-mtd@lists.infradead.org,
	linux-s390@vger.kernel.org, linux-scsi@vger.kernel.org,
	linux-bcachefs@vger.kernel.org, linux-btrfs@vger.kernel.org,
	linux-fsdevel@vger.kernel.org, linux-erofs@lists.ozlabs.org,
	linux-ext4@vger.kernel.org, linux-nilfs@vger.kernel.org,
	yukuai3@huawei.com, yi.zhang@huawei.com, yangerkun@huawei.com
Subject: Re: [PATCH RFC v3 for-6.8/block 04/17] mtd: block2mtd: use bdev apis
Message-ID: <20240104112855.uci45hhqaiitmsir@quack3>
References: <20231221085712.1766333-1-yukuai1@huaweicloud.com>
 <20231221085712.1766333-5-yukuai1@huaweicloud.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <20231221085712.1766333-5-yukuai1@huaweicloud.com>
X-Rspamd-Server: rspamd1.dmz-prg2.suse.org
X-Spam-Score: 1.61
X-Spamd-Bar: +
X-Spam-Flag: NO
X-Spamd-Result: default: False [1.61 / 50.00];
	 ARC_NA(0.00)[];
	 RCVD_VIA_SMTP_AUTH(0.00)[];
	 R_DKIM_ALLOW(-0.20)[suse.cz:s=susede2_rsa,suse.cz:s=susede2_ed25519];
	 BAYES_HAM(-0.08)[63.79%];
	 FROM_HAS_DN(0.00)[];
	 TO_DN_SOME(0.00)[];
	 FREEMAIL_ENVRCPT(0.00)[gmail.com];
	 TO_MATCH_ENVRCPT_ALL(0.00)[];
	 TAGGED_RCPT(0.00)[];
	 MIME_GOOD(-0.10)[text/plain];
	 R_RATELIMIT(0.00)[to_ip_from(RLhr85cyeg3mfw7iggddtjdkgs)];
	 RCVD_COUNT_THREE(0.00)[3];
	 DKIM_SIGNED(0.00)[suse.cz:s=susede2_rsa,suse.cz:s=susede2_ed25519];
	 DKIM_TRACE(0.00)[suse.cz:+];
	 MX_GOOD(-0.01)[];
	 RCPT_COUNT_TWELVE(0.00)[48];
	 DBL_BLOCKED_OPENRESOLVER(0.00)[suse.com:email,huawei.com:email];
	 FUZZY_BLOCKED(0.00)[rspamd.com];
	 FROM_EQ_ENVFROM(0.00)[];
	 MIME_TRACE(0.00)[0:+];
	 MID_RHS_NOT_FQDN(0.50)[];
	 FREEMAIL_CC(0.00)[kernel.dk,citrix.com,suse.de,gmail.com,lazybastard.org,bootlin.com,nod.at,ti.com,linux.ibm.com,oracle.com,fb.com,toxicpanda.com,suse.com,zeniv.linux.org.uk,kernel.org,fluxnic.net,mit.edu,dilger.ca,infradead.org,linux-foundation.org,samsung.com,vger.kernel.org,lists.xenproject.org,lists.infradead.org,lists.ozlabs.org,huawei.com];
	 RCVD_TLS_ALL(0.00)[];
	 SUSPICIOUS_RECIPS(1.50)[]
Authentication-Results: smtp-out2.suse.de;
	dkim=pass header.d=suse.cz header.s=susede2_rsa header.b=wsQKzVwT;
	dkim=pass header.d=suse.cz header.s=susede2_ed25519 header.b=QnmhJ6W9
X-Spam-Level: *
X-Rspamd-Queue-Id: 9EE851F805

On Thu 21-12-23 16:56:59, Yu Kuai wrote:
> From: Yu Kuai <yukuai3@huawei.com>
> 
> On the one hand covert to use folio while reading bdev inode, on the
> other hand prevent to access bd_inode directly.
> 
> Signed-off-by: Yu Kuai <yukuai3@huawei.com>
...
> +		for (p = folio_address(folio); p < max; p++)
>  			if (*p != -1UL) {
> -				lock_page(page);
> -				memset(page_address(page), 0xff, PAGE_SIZE);
> -				set_page_dirty(page);
> -				unlock_page(page);
> -				balance_dirty_pages_ratelimited(mapping);
> +				folio_lock(folio);
> +				memset(folio_address(folio), 0xff,
> +				       folio_size(folio));
> +				folio_mark_dirty(folio);
> +				folio_unlock(folio);
> +				bdev_balance_dirty_pages_ratelimited(bdev);

Rather then creating this bdev_balance_dirty_pages_ratelimited() just for
MTD perhaps we can have here (and in other functions):

				...
				mapping = folio_mapping(folio);
				folio_unlock(folio);
				if (mapping)
					balance_dirty_pages_ratelimited(mapping);

What do you think? Because when we are working with the folios it is rather
natural to use their mapping for dirty balancing?

								Honza
-- 
Jan Kara <jack@suse.com>
SUSE Labs, CR


From xen-devel-bounces@lists.xenproject.org Thu Jan 04 11:29:01 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 04 Jan 2024 11:29:01 +0000
Received: from list by lists.xenproject.org with outflank-mailman.661602.1031319 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLLuB-0002aR-SO; Thu, 04 Jan 2024 11:28:55 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 661602.1031319; Thu, 04 Jan 2024 11:28:55 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLLuB-0002aK-P4; Thu, 04 Jan 2024 11:28:55 +0000
Received: by outflank-mailman (input) for mailman id 661602;
 Thu, 04 Jan 2024 11:28:55 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rLLuB-0002Z4-C6; Thu, 04 Jan 2024 11:28:55 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rLLuB-0000Wg-0v; Thu, 04 Jan 2024 11:28:55 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rLLuA-0007CE-Bk; Thu, 04 Jan 2024 11:28:54 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rLLuA-0007Eo-BC; Thu, 04 Jan 2024 11:28:54 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=hoKNutX5H67sUlXWH2IHEFZzZJilubH30JR2oX/mWCA=; b=2OWbTrpfQajKyFHx4rrpGPur2z
	8h3X5l3BAwH46o2eZIJUCr/5HzamkDz1yugzk2lMUqewIbWdczROmSt1LLyamm7O00c67zdm3wswr
	k0/xHqq1Qm7wgagnzk27Mz/UJqrNn8bcUjcLfZHlqAENMSaETHALWTAVQgpW/+BliR0k=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184249-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [xen-unstable test] 184249: tolerable FAIL
X-Osstest-Failures:
    xen-unstable:test-armhf-armhf-libvirt-qcow2:guest-start:fail:heisenbug
    xen-unstable:test-amd64-i386-xl-qemut-debianhvm-i386-xsm:debian-hvm-install:fail:heisenbug
    xen-unstable:test-armhf-armhf-libvirt-qcow2:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-amd64-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-raw:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-amd64-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-amd64-qemuu-nested-amd:debian-hvm-install/l1/l2:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-amd64-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-i386-libvirt-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-libvirt:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-pvshim:guest-start:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-credit1:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-credit1:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-thunderx:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-thunderx:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-xsm:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-credit2:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-credit2:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-libvirt-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-libvirt-xsm:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-arndale:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-arndale:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-multivcpu:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-multivcpu:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit1:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit1:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit2:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit2:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-libvirt-raw:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-libvirt-raw:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-libvirt-raw:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt-vhd:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-qcow2:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-vhd:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-vhd:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-raw:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-rtds:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-rtds:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-vhd:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-vhd:saverestore-support-check:fail:nonblocking
X-Osstest-Versions-This:
    xen=49818cde637b5ec20383e46b71f93b2e7d867686
X-Osstest-Versions-That:
    xen=49818cde637b5ec20383e46b71f93b2e7d867686
From: osstest service owner <osstest-admin@xenproject.org>
Date: Thu, 04 Jan 2024 11:28:54 +0000

flight 184249 xen-unstable real [real]
http://logs.test-lab.xenproject.org/osstest/logs/184249/

Failures :-/ but no regressions.

Tests which are failing intermittently (not blocking):
 test-armhf-armhf-libvirt-qcow2 13 guest-start    fail in 184244 pass in 184249
 test-amd64-i386-xl-qemut-debianhvm-i386-xsm 12 debian-hvm-install fail pass in 184244

Tests which did not succeed, but are not blocking:
 test-armhf-armhf-libvirt-qcow2 15 saverestore-support-check   fail like 184243
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 184244
 test-amd64-amd64-xl-qemut-win7-amd64 19 guest-stop            fail like 184244
 test-amd64-i386-xl-qemuu-win7-amd64 19 guest-stop             fail like 184244
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 184244
 test-amd64-i386-xl-qemut-ws16-amd64 19 guest-stop             fail like 184244
 test-armhf-armhf-libvirt-raw 15 saverestore-support-check    fail  like 184244
 test-amd64-i386-xl-qemut-win7-amd64 19 guest-stop             fail like 184244
 test-amd64-amd64-xl-qemut-ws16-amd64 19 guest-stop            fail like 184244
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 184244
 test-amd64-i386-xl-qemuu-ws16-amd64 19 guest-stop             fail like 184244
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 184244
 test-amd64-i386-libvirt-xsm  15 migrate-support-check        fail   never pass
 test-amd64-i386-libvirt      15 migrate-support-check        fail   never pass
 test-amd64-i386-xl-pvshim    14 guest-start                  fail   never pass
 test-amd64-amd64-libvirt     15 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit1  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit1  16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl          15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl          16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-thunderx 15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-thunderx 16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-xsm      15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-xsm      16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-credit2  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit2  16 saverestore-support-check    fail   never pass
 test-arm64-arm64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-xsm 16 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-armhf-armhf-xl-arndale  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-arndale  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-multivcpu 15 migrate-support-check        fail  never pass
 test-armhf-armhf-xl-multivcpu 16 saverestore-support-check    fail  never pass
 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-armhf-armhf-libvirt     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit1  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit1  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-credit2  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit2  16 saverestore-support-check    fail   never pass
 test-amd64-i386-libvirt-raw  14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 15 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-vhd 14 migrate-support-check        fail   never pass
 test-armhf-armhf-libvirt-qcow2 14 migrate-support-check        fail never pass
 test-arm64-arm64-xl-vhd      14 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-vhd      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-raw 14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-rtds     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-rtds     16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-vhd      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      15 saverestore-support-check    fail   never pass

version targeted for testing:
 xen                  49818cde637b5ec20383e46b71f93b2e7d867686
baseline version:
 xen                  49818cde637b5ec20383e46b71f93b2e7d867686

Last test of basis   184249  2024-01-04 01:53:57 Z    0 days
Testing same since                          (not found)         0 attempts

jobs:
 build-amd64-xsm                                              pass    
 build-arm64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64-xtf                                              pass    
 build-amd64                                                  pass    
 build-arm64                                                  pass    
 build-armhf                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-arm64-libvirt                                          pass    
 build-armhf-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-prev                                             pass    
 build-i386-prev                                              pass    
 build-amd64-pvops                                            pass    
 build-arm64-pvops                                            pass    
 build-armhf-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-xtf-amd64-amd64-1                                       pass    
 test-xtf-amd64-amd64-2                                       pass    
 test-xtf-amd64-amd64-3                                       pass    
 test-xtf-amd64-amd64-4                                       pass    
 test-xtf-amd64-amd64-5                                       pass    
 test-amd64-amd64-xl                                          pass    
 test-amd64-coresched-amd64-xl                                pass    
 test-arm64-arm64-xl                                          pass    
 test-armhf-armhf-xl                                          pass    
 test-amd64-i386-xl                                           pass    
 test-amd64-coresched-i386-xl                                 pass    
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm           pass    
 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm            pass    
 test-amd64-amd64-xl-qemut-stubdom-debianhvm-amd64-xsm        pass    
 test-amd64-i386-xl-qemut-stubdom-debianhvm-amd64-xsm         pass    
 test-amd64-amd64-xl-qemut-debianhvm-i386-xsm                 pass    
 test-amd64-i386-xl-qemut-debianhvm-i386-xsm                  fail    
 test-amd64-amd64-xl-qemuu-debianhvm-i386-xsm                 pass    
 test-amd64-i386-xl-qemuu-debianhvm-i386-xsm                  pass    
 test-amd64-amd64-libvirt-xsm                                 pass    
 test-arm64-arm64-libvirt-xsm                                 pass    
 test-amd64-i386-libvirt-xsm                                  pass    
 test-amd64-amd64-xl-xsm                                      pass    
 test-arm64-arm64-xl-xsm                                      pass    
 test-amd64-i386-xl-xsm                                       pass    
 test-amd64-amd64-qemuu-nested-amd                            fail    
 test-amd64-amd64-xl-pvhv2-amd                                pass    
 test-amd64-i386-qemut-rhel6hvm-amd                           pass    
 test-amd64-i386-qemuu-rhel6hvm-amd                           pass    
 test-amd64-amd64-dom0pvh-xl-amd                              pass    
 test-amd64-amd64-xl-qemut-debianhvm-amd64                    pass    
 test-amd64-i386-xl-qemut-debianhvm-amd64                     pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64                    pass    
 test-amd64-i386-xl-qemuu-debianhvm-amd64                     pass    
 test-amd64-i386-freebsd10-amd64                              pass    
 test-amd64-amd64-qemuu-freebsd11-amd64                       pass    
 test-amd64-amd64-qemuu-freebsd12-amd64                       pass    
 test-amd64-amd64-xl-qemuu-ovmf-amd64                         pass    
 test-amd64-i386-xl-qemuu-ovmf-amd64                          pass    
 test-amd64-amd64-xl-qemut-win7-amd64                         fail    
 test-amd64-i386-xl-qemut-win7-amd64                          fail    
 test-amd64-amd64-xl-qemuu-win7-amd64                         fail    
 test-amd64-i386-xl-qemuu-win7-amd64                          fail    
 test-amd64-amd64-xl-qemut-ws16-amd64                         fail    
 test-amd64-i386-xl-qemut-ws16-amd64                          fail    
 test-amd64-amd64-xl-qemuu-ws16-amd64                         fail    
 test-amd64-i386-xl-qemuu-ws16-amd64                          fail    
 test-armhf-armhf-xl-arndale                                  pass    
 test-amd64-amd64-examine-bios                                pass    
 test-amd64-i386-examine-bios                                 pass    
 test-amd64-amd64-xl-credit1                                  pass    
 test-arm64-arm64-xl-credit1                                  pass    
 test-armhf-armhf-xl-credit1                                  pass    
 test-amd64-amd64-xl-credit2                                  pass    
 test-arm64-arm64-xl-credit2                                  pass    
 test-armhf-armhf-xl-credit2                                  pass    
 test-amd64-amd64-xl-qemuu-dmrestrict-amd64-dmrestrict        pass    
 test-amd64-i386-xl-qemuu-dmrestrict-amd64-dmrestrict         pass    
 test-amd64-amd64-examine                                     pass    
 test-arm64-arm64-examine                                     pass    
 test-armhf-armhf-examine                                     pass    
 test-amd64-i386-examine                                      pass    
 test-amd64-i386-freebsd10-i386                               pass    
 test-amd64-amd64-qemuu-nested-intel                          pass    
 test-amd64-amd64-xl-pvhv2-intel                              pass    
 test-amd64-i386-qemut-rhel6hvm-intel                         pass    
 test-amd64-i386-qemuu-rhel6hvm-intel                         pass    
 test-amd64-amd64-dom0pvh-xl-intel                            pass    
 test-amd64-amd64-libvirt                                     pass    
 test-armhf-armhf-libvirt                                     pass    
 test-amd64-i386-libvirt                                      pass    
 test-amd64-amd64-livepatch                                   pass    
 test-amd64-i386-livepatch                                    pass    
 test-amd64-amd64-migrupgrade                                 pass    
 test-amd64-i386-migrupgrade                                  pass    
 test-amd64-amd64-xl-multivcpu                                pass    
 test-armhf-armhf-xl-multivcpu                                pass    
 test-amd64-amd64-pair                                        pass    
 test-amd64-i386-pair                                         pass    
 test-amd64-amd64-libvirt-pair                                pass    
 test-amd64-i386-libvirt-pair                                 pass    
 test-amd64-amd64-xl-pvshim                                   pass    
 test-amd64-i386-xl-pvshim                                    fail    
 test-amd64-amd64-pygrub                                      pass    
 test-armhf-armhf-libvirt-qcow2                               pass    
 test-amd64-amd64-xl-qcow2                                    pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-armhf-armhf-libvirt-raw                                 pass    
 test-amd64-i386-libvirt-raw                                  pass    
 test-amd64-amd64-xl-rtds                                     pass    
 test-armhf-armhf-xl-rtds                                     pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64-shadow             pass    
 test-amd64-i386-xl-qemuu-debianhvm-amd64-shadow              pass    
 test-amd64-amd64-xl-shadow                                   pass    
 test-amd64-i386-xl-shadow                                    pass    
 test-arm64-arm64-xl-thunderx                                 pass    
 test-amd64-amd64-examine-uefi                                pass    
 test-amd64-i386-examine-uefi                                 pass    
 test-amd64-amd64-libvirt-vhd                                 pass    
 test-arm64-arm64-xl-vhd                                      pass    
 test-armhf-armhf-xl-vhd                                      pass    
 test-amd64-i386-xl-vhd                                       pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Published tested tree is already up to date.



From xen-devel-bounces@lists.xenproject.org Thu Jan 04 11:39:24 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 04 Jan 2024 11:39:24 +0000
Received: from list by lists.xenproject.org with outflank-mailman.661646.1031341 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLM4E-00076p-M7; Thu, 04 Jan 2024 11:39:18 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 661646.1031341; Thu, 04 Jan 2024 11:39:18 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLM4E-00076i-JS; Thu, 04 Jan 2024 11:39:18 +0000
Received: by outflank-mailman (input) for mailman id 661646;
 Thu, 04 Jan 2024 11:39:17 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=0by4=IO=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rLM4D-00076c-Ph
 for xen-devel@lists.xenproject.org; Thu, 04 Jan 2024 11:39:17 +0000
Received: from mail-lf1-x133.google.com (mail-lf1-x133.google.com
 [2a00:1450:4864:20::133])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id e382b8bb-aaf5-11ee-9b0f-b553b5be7939;
 Thu, 04 Jan 2024 12:39:15 +0100 (CET)
Received: by mail-lf1-x133.google.com with SMTP id
 2adb3069b0e04-50e7c6f0487so388823e87.3
 for <xen-devel@lists.xenproject.org>; Thu, 04 Jan 2024 03:39:15 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 p18-20020a92d492000000b0036065754088sm305953ilg.18.2024.01.04.03.39.14
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 04 Jan 2024 03:39:14 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: e382b8bb-aaf5-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1704368355; x=1704973155; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:cc:references
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=8ckAMSxSujkrjk1V1U2vRFCQFyTKfXn8M8XVYfl6MZY=;
        b=Mb97eW4/gpfGdjv+yCbVbd7iPyAF15gXi4RdFDs8toADS/U6X3yGx6MgSEuKsnZwas
         KcBTkrzaU8sQIgI3FibujkCUyAB/BrRx94NO8dGx2FTfFxJRffGf8rpcUy76FHPPHvTk
         OLadWMsyBxS3VPPEY4fWun5wvgPDMKwXGGUE38wFQvR/WZVU6kMw3jPm/0o35Jd7+ZQw
         EJTOvD6wF+YRF/zKNIRlc90oYW16v8Njc2flXNlaN+YVvTL66tST+hHhbC8UCKwKhuzd
         ExiBZP3rjvlFbpYAU74FENRkkr+NCtTn9Fmbe80Vsuemoqy0ksPLdhhg2baUR9Bv8y+W
         neHw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704368355; x=1704973155;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:cc:references
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=8ckAMSxSujkrjk1V1U2vRFCQFyTKfXn8M8XVYfl6MZY=;
        b=UiOTj0pZBaXhPzP5QBlG3wRKFvJGzMhfuDxlo4J5AThgdjW+Cw8mt9XKl2qT1afc7J
         i7Bpp3Fk/dHMgR8AxpQ4L0t22dqQh2uD+9d/95X2YqeKJgm4Y1FLy2CkSj0cGRYxH2Ej
         O77YdV/V0IE/bhHBhGpbNrgjKRwi27TgUIHVJTKjbOmTnUVZE7Qje6g1LQhUOlT9wXKa
         iAuKccWhoW4lk7sPiG/c0mb5UHHyr004VNNQFEJsxnuMPBpR5LUGgYXFdyVlXr+/hQNP
         +Os6jlTCI8hJAtw64xaKw5HwGF/M6GxdYAe/57PDVxC6MvHpXNj7FcL5jLCLeVuElqNj
         CUug==
X-Gm-Message-State: AOJu0Yw5IGwN3lyYEXKmasZbE1fryWCpdXtx/2Pdhr3ZlNWskIKCNisj
	4VI0NqyxrjzCL2Lu+Axdbv7wtJe3X15Z
X-Google-Smtp-Source: AGHT+IG0D923rEfJk5lhHFljZtnPK1Tc34TumSK5L9lJfzNDXZF83rPI70tCeLVAORBnpaijwdKoJg==
X-Received: by 2002:a05:6512:5cb:b0:50e:75ec:26ed with SMTP id o11-20020a05651205cb00b0050e75ec26edmr163294lfo.47.1704368355081;
        Thu, 04 Jan 2024 03:39:15 -0800 (PST)
Message-ID: <f5a8bcf4-6d07-4e9a-9da9-917aa4f0c769@suse.com>
Date: Thu, 4 Jan 2024 12:39:23 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: xenpm cpufrequency settings don't work
Content-Language: en-US
To: flamv3421 <flamv3421@proton.me>
References: <syS1MXE7yvGnsDP-cXFUjca-0S1PkY-H2thU-X7ECmFD2VnugsyWnS-7y386-LTwhazuSggAuZI4d7F0Myq1tjLuw18CeOXErRKHJFCowpQ=@proton.me>
Cc: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <syS1MXE7yvGnsDP-cXFUjca-0S1PkY-H2thU-X7ECmFD2VnugsyWnS-7y386-LTwhazuSggAuZI4d7F0Myq1tjLuw18CeOXErRKHJFCowpQ=@proton.me>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 28.12.2023 12:28, flamv3421 wrote:
> I used xenpm to disable turbo mode and set the maximum frequency to 800000 and governor to powersave, but my laptop fans are still running at full speed when I am using xen and the average frequency shown does not match the maximum frequency I set with xenpm which is 800000.

What do you derive from that the maximum freq isn't 800MHz _after_ you set
it? All the CPUs are in P15 as per the output you supplied, which is a good
indication that no lower P-state is in use anymore (as even the CPU where
the command was carried out was still in P15). Lower P-states would of
course have been in use prior to you running xenpm. Sadly while there is a
way to reset the statistics, the hypercall subfunction isn't wired up beyond
the libxc wrapper function.

> Why are my fans running at full speed and why doesn't xenpm maximum frequency setting work?

I'm afraid I can't answer this question, as I don't know how exactly fan
speed is controlled on that system of yours.

Jan


From xen-devel-bounces@lists.xenproject.org Thu Jan 04 11:50:14 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 04 Jan 2024 11:50:14 +0000
Received: from list by lists.xenproject.org with outflank-mailman.661662.1031352 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLMEh-0003DJ-MZ; Thu, 04 Jan 2024 11:50:07 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 661662.1031352; Thu, 04 Jan 2024 11:50:07 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLMEh-0003Co-It; Thu, 04 Jan 2024 11:50:07 +0000
Received: by outflank-mailman (input) for mailman id 661662;
 Thu, 04 Jan 2024 11:50:06 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=BdYS=IO=suse.cz=jack@srs-se1.protection.inumbo.net>)
 id 1rLMEg-0003Cg-EZ
 for xen-devel@lists.xenproject.org; Thu, 04 Jan 2024 11:50:06 +0000
Received: from smtp-out1.suse.de (smtp-out1.suse.de [195.135.223.130])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 65e1655e-aaf7-11ee-9b0f-b553b5be7939;
 Thu, 04 Jan 2024 12:50:04 +0100 (CET)
Received: from imap1.dmz-prg2.suse.org (imap1.dmz-prg2.suse.org
 [IPv6:2a07:de40:b281:104:10:150:64:97])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
 (No client certificate requested)
 by smtp-out1.suse.de (Postfix) with ESMTPS id 160C121EF5;
 Thu,  4 Jan 2024 11:50:03 +0000 (UTC)
Received: from imap1.dmz-prg2.suse.org (localhost [127.0.0.1])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
 (No client certificate requested)
 by imap1.dmz-prg2.suse.org (Postfix) with ESMTPS id 05B81137E8;
 Thu,  4 Jan 2024 11:50:03 +0000 (UTC)
Received: from dovecot-director2.suse.de ([2a07:de40:b281:106:10:150:64:167])
 by imap1.dmz-prg2.suse.org with ESMTPSA id N5lgAWublmUQDAAAD6G6ig
 (envelope-from <jack@suse.cz>); Thu, 04 Jan 2024 11:50:03 +0000
Received: by quack3.suse.cz (Postfix, from userid 1000)
 id A9CF6A07EF; Thu,  4 Jan 2024 12:49:58 +0100 (CET)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 65e1655e-aaf7-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.cz; s=susede2_rsa;
	t=1704369003; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:content-type:content-type:
	 in-reply-to:in-reply-to:references:references;
	bh=XeXpcnQhc7k5wPj1KeDdzxd8IqzZglYqdEMHG+1v698=;
	b=LPy9kLPa52w1LTjGtPYNG0ddRTaUsK2l/chyWjlrzN9YlPHEcnuQYee5oABFJTvAftkB9q
	FjI0zQ5uCaFFznkd94synnqXs7uXb8cRAAI7EO6ytDym9jLmWBPX0BO4sb7N9wbnW2+LFu
	0aOzGcbzAFq+5BQ61moeUz08HE5ZlKs=
DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.cz;
	s=susede2_ed25519; t=1704369003;
	h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:content-type:content-type:
	 in-reply-to:in-reply-to:references:references;
	bh=XeXpcnQhc7k5wPj1KeDdzxd8IqzZglYqdEMHG+1v698=;
	b=RfDu2tLAXy86TXl7DP8sQxwxqulz8lo88WAB157ByWrDk4aXKD88/w5gosTD/z+q/d5Hzm
	g3+FRHbpwvRn6XCg==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.cz; s=susede2_rsa;
	t=1704369003; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:content-type:content-type:
	 in-reply-to:in-reply-to:references:references;
	bh=XeXpcnQhc7k5wPj1KeDdzxd8IqzZglYqdEMHG+1v698=;
	b=LPy9kLPa52w1LTjGtPYNG0ddRTaUsK2l/chyWjlrzN9YlPHEcnuQYee5oABFJTvAftkB9q
	FjI0zQ5uCaFFznkd94synnqXs7uXb8cRAAI7EO6ytDym9jLmWBPX0BO4sb7N9wbnW2+LFu
	0aOzGcbzAFq+5BQ61moeUz08HE5ZlKs=
DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.cz;
	s=susede2_ed25519; t=1704369003;
	h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:content-type:content-type:
	 in-reply-to:in-reply-to:references:references;
	bh=XeXpcnQhc7k5wPj1KeDdzxd8IqzZglYqdEMHG+1v698=;
	b=RfDu2tLAXy86TXl7DP8sQxwxqulz8lo88WAB157ByWrDk4aXKD88/w5gosTD/z+q/d5Hzm
	g3+FRHbpwvRn6XCg==
Date: Thu, 4 Jan 2024 12:49:58 +0100
From: Jan Kara <jack@suse.cz>
To: Matthew Wilcox <willy@infradead.org>
Cc: Yu Kuai <yukuai1@huaweicloud.com>, axboe@kernel.dk,
	roger.pau@citrix.com, colyli@suse.de, kent.overstreet@gmail.com,
	joern@lazybastard.org, miquel.raynal@bootlin.com, richard@nod.at,
	vigneshr@ti.com, sth@linux.ibm.com, hoeppner@linux.ibm.com,
	hca@linux.ibm.com, gor@linux.ibm.com, agordeev@linux.ibm.com,
	jejb@linux.ibm.com, martin.petersen@oracle.com, clm@fb.com,
	josef@toxicpanda.com, dsterba@suse.com, viro@zeniv.linux.org.uk,
	brauner@kernel.org, nico@fluxnic.net, xiang@kernel.org,
	chao@kernel.org, tytso@mit.edu, adilger.kernel@dilger.ca,
	jack@suse.com, konishi.ryusuke@gmail.com, akpm@linux-foundation.org,
	hare@suse.de, p.raghav@samsung.com, linux-block@vger.kernel.org,
	linux-kernel@vger.kernel.org, xen-devel@lists.xenproject.org,
	linux-bcache@vger.kernel.org, linux-mtd@lists.infradead.org,
	linux-s390@vger.kernel.org, linux-scsi@vger.kernel.org,
	linux-bcachefs@vger.kernel.org, linux-btrfs@vger.kernel.org,
	linux-fsdevel@vger.kernel.org, linux-erofs@lists.ozlabs.org,
	linux-ext4@vger.kernel.org, linux-nilfs@vger.kernel.org,
	yukuai3@huawei.com, yi.zhang@huawei.com, yangerkun@huawei.com
Subject: Re: [PATCH RFC v3 for-6.8/block 09/17] btrfs: use bdev apis
Message-ID: <20240104114958.f3cit5q7syp3tn3a@quack3>
References: <20231221085712.1766333-1-yukuai1@huaweicloud.com>
 <20231221085712.1766333-10-yukuai1@huaweicloud.com>
 <ZYcZi5YYvt5QHrG9@casper.infradead.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <ZYcZi5YYvt5QHrG9@casper.infradead.org>
X-Rspamd-Server: rspamd1.dmz-prg2.suse.org
X-Spam-Score: 1.65
X-Spamd-Bar: +
X-Spam-Flag: NO
X-Spamd-Result: default: False [1.65 / 50.00];
	 ARC_NA(0.00)[];
	 RCVD_VIA_SMTP_AUTH(0.00)[];
	 R_DKIM_ALLOW(-0.20)[suse.cz:s=susede2_rsa,suse.cz:s=susede2_ed25519];
	 BAYES_HAM(-0.04)[57.99%];
	 FROM_HAS_DN(0.00)[];
	 TO_DN_SOME(0.00)[];
	 FREEMAIL_ENVRCPT(0.00)[gmail.com];
	 TO_MATCH_ENVRCPT_ALL(0.00)[];
	 TAGGED_RCPT(0.00)[];
	 MIME_GOOD(-0.10)[text/plain];
	 R_RATELIMIT(0.00)[to_ip_from(RLhr85cyeg3mfw7iggddtjdkgs)];
	 RCVD_COUNT_THREE(0.00)[3];
	 DKIM_SIGNED(0.00)[suse.cz:s=susede2_rsa,suse.cz:s=susede2_ed25519];
	 DKIM_TRACE(0.00)[suse.cz:+];
	 MX_GOOD(-0.01)[];
	 RCPT_COUNT_TWELVE(0.00)[48];
	 DBL_BLOCKED_OPENRESOLVER(0.00)[suse.com:email,suse.cz:dkim];
	 FUZZY_BLOCKED(0.00)[rspamd.com];
	 FROM_EQ_ENVFROM(0.00)[];
	 MIME_TRACE(0.00)[0:+];
	 MID_RHS_NOT_FQDN(0.50)[];
	 FREEMAIL_CC(0.00)[huaweicloud.com,kernel.dk,citrix.com,suse.de,gmail.com,lazybastard.org,bootlin.com,nod.at,ti.com,linux.ibm.com,oracle.com,fb.com,toxicpanda.com,suse.com,zeniv.linux.org.uk,kernel.org,fluxnic.net,mit.edu,dilger.ca,linux-foundation.org,samsung.com,vger.kernel.org,lists.xenproject.org,lists.infradead.org,lists.ozlabs.org,huawei.com];
	 RCVD_TLS_ALL(0.00)[];
	 SUSPICIOUS_RECIPS(1.50)[];
	 RBL_SPAMHAUS_BLOCKED_OPENRESOLVER(0.00)[2a07:de40:b281:104:10:150:64:97:from]
Authentication-Results: smtp-out1.suse.de;
	dkim=pass header.d=suse.cz header.s=susede2_rsa header.b=LPy9kLPa;
	dkim=pass header.d=suse.cz header.s=susede2_ed25519 header.b=RfDu2tLA
X-Spam-Level: *
X-Rspamd-Queue-Id: 160C121EF5

On Sat 23-12-23 17:31:55, Matthew Wilcox wrote:
> On Thu, Dec 21, 2023 at 04:57:04PM +0800, Yu Kuai wrote:
> > @@ -3674,16 +3670,17 @@ struct btrfs_super_block *btrfs_read_dev_one_super(struct block_device *bdev,
> >  		 * Drop the page of the primary superblock, so later read will
> >  		 * always read from the device.
> >  		 */
> > -		invalidate_inode_pages2_range(mapping,
> > -				bytenr >> PAGE_SHIFT,
> > +		invalidate_bdev_range(bdev, bytenr >> PAGE_SHIFT,
> >  				(bytenr + BTRFS_SUPER_INFO_SIZE) >> PAGE_SHIFT);
> >  	}
> >  
> > -	page = read_cache_page_gfp(mapping, bytenr >> PAGE_SHIFT, GFP_NOFS);
> > -	if (IS_ERR(page))
> > -		return ERR_CAST(page);
> > +	nofs_flag = memalloc_nofs_save();
> > +	folio = bdev_read_folio(bdev, bytenr);
> > +	memalloc_nofs_restore(nofs_flag);
> 
> This is the wrong way to use memalloc_nofs_save/restore.  They should be
> used at the point that the filesystem takes/releases whatever lock is
> also used during reclaim.  I don't know btrfs well enough to suggest
> what lock is missing these annotations.

In principle I agree with you but in this particular case I agree the ask
is just too big. I suspect it is one of btrfs btree locks or maybe
chunk_mutex but I doubt even btrfs developers know and maybe it is just a
cargo cult. And it is not like this would be the first occurence of this
anti-pattern in btrfs - see e.g. device_list_add(), add_missing_dev(),
btrfs_destroy_delalloc_inodes() (here the wrapping around
invalidate_inode_pages2() looks really weird), and many others...

								Honza
-- 
Jan Kara <jack@suse.com>
SUSE Labs, CR


From xen-devel-bounces@lists.xenproject.org Thu Jan 04 11:59:28 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 04 Jan 2024 11:59:28 +0000
Received: from list by lists.xenproject.org with outflank-mailman.661673.1031361 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLMNf-0004Zo-H7; Thu, 04 Jan 2024 11:59:23 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 661673.1031361; Thu, 04 Jan 2024 11:59:23 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLMNf-0004Zh-EN; Thu, 04 Jan 2024 11:59:23 +0000
Received: by outflank-mailman (input) for mailman id 661673;
 Thu, 04 Jan 2024 11:59:22 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=0by4=IO=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rLMNe-0004Zb-9b
 for xen-devel@lists.xenproject.org; Thu, 04 Jan 2024 11:59:22 +0000
Received: from mail-lf1-x129.google.com (mail-lf1-x129.google.com
 [2a00:1450:4864:20::129])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id b1709c95-aaf8-11ee-9b0f-b553b5be7939;
 Thu, 04 Jan 2024 12:59:20 +0100 (CET)
Received: by mail-lf1-x129.google.com with SMTP id
 2adb3069b0e04-50e7f58c5fbso550667e87.1
 for <xen-devel@lists.xenproject.org>; Thu, 04 Jan 2024 03:59:20 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 bq6-20020a056e02238600b0035d0da89a0asm8397481ilb.6.2024.01.04.03.59.18
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 04 Jan 2024 03:59:19 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: b1709c95-aaf8-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1704369559; x=1704974359; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:cc:autocrypt:from:references
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=4we0YsU44Cl7Tbyz3085Euf6Lzp62iz5/pPL5FcaH/o=;
        b=dgowGHY/ngG7IVBptpiyLT47053dCYeHZWzNAT9kygOMJ/Jg6wDCPWAMq4sObGDu0C
         D76jlYJgYjd7YWwhCWusP3ecoAhAUW9kF1jwBpQ//xeBk97jQEiG+2j40B7YNaSOXaU5
         Il3d9uDuxmjZjpG68DwUDXsjutkISLZbRCGBwGJtpw/IaJz7j1tK/dkFvPv07rjedsSA
         eGt2x/NH8gOOZ2gm3QzlAuhBmC6XWkRvT/f6GfH0Vap6SJ8Cd2i3JFvepoTLzYUcAUbr
         oXXe2Nsb3DL3CMfhnOo5s1/mrBwffIZ/HhT2RWBAuzbeoOmdMT1zT+T/f4Q6xn5lC8GS
         Uocw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704369559; x=1704974359;
        h=content-transfer-encoding:in-reply-to:cc:autocrypt:from:references
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=4we0YsU44Cl7Tbyz3085Euf6Lzp62iz5/pPL5FcaH/o=;
        b=w/j3qDvUJMjGkyG4V5l+DfFpuUA+rbXh67Xe2/x8CZPzbQCmQXjNw0A2rgGW19LXi/
         IPrAp3AkZejIqFxmUmV/7msnEUK+dn6eh4RF0O8BboRsVDB3BoyRrfaTVPXExZyIrGmk
         kfy18LM1vBaxXGciE6lSwbBm1eqgZg1ZYTgeE5euNytcvJb3jb15gaNP+qNnYvn3/QJu
         1EeKq5W1LOqr6PYfomWufrrubzG04rVL4hGHxvJwQeSQ4i3l5VgoPfGaWNB2vuNqE2B5
         jDJD5Nk93yQJIDbOYh456qoPoSAf+plfg+dVVUshYN/0bwn4XNkgR+aPnhH08TY7flv6
         DDFQ==
X-Gm-Message-State: AOJu0Yz/RKs7+Td4E3Ag0Vg0BmjYFyDLUVYA5HqTlxBh+aO7kDfO72xZ
	IaOKqnA9QRyCXOF3bMWGlWKGHoMNOgynhWlKlIFeCeHbSQ==
X-Google-Smtp-Source: AGHT+IFNxExQMjD+PVahx+YCktr3W1mN2ikJAIoTFwDF/rL+mI/Kn4dRmdJXRUoeotA/peaNk+6nfw==
X-Received: by 2002:a2e:8711:0:b0:2cc:f5fa:28ac with SMTP id m17-20020a2e8711000000b002ccf5fa28acmr296568lji.102.1704369559588;
        Thu, 04 Jan 2024 03:59:19 -0800 (PST)
Message-ID: <7d5ecc76-ecd3-4940-b658-fee60e3ab740@suse.com>
Date: Thu, 4 Jan 2024 12:59:28 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: Serial console stuck during boot, unblocked with xl debug-key
Content-Language: en-US
To: =?UTF-8?Q?Marek_Marczykowski-G=C3=B3recki?=
 <marmarek@invisiblethingslab.com>
References: <ZY6WdQlbdQxb1UR2@mail-itl>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
Cc: xen-devel <xen-devel@lists.xenproject.org>
In-Reply-To: <ZY6WdQlbdQxb1UR2@mail-itl>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 29.12.2023 10:50, Marek Marczykowski-Górecki wrote:
> Hi,
> 
> This is continuation from matrix chat. There is an occasional failure on
> qubes-hw2 gitlab runner that console become stuck during boot. I can now
> reproduce it _much_ more often on another system, and the serial console output
> ends with:
> 
>     (XEN) Allocated console ring of 256 KiB.
>     (XEN) Using HWP for cpufreq
>     (XEN) mwait-idle: does not run on family 6
> 
> It should be:
> 
>     (XEN) Allocated console ring of 256 KiB.
>     (XEN) Using HWP for cpufreq
>     (XEN) mwait-idle: does not run on family 6 model 183
>     (XEN) VMX: Supported advanced features:
>     (XEN)  - APIC MMIO access virtualisation
>     (XEN)  - APIC TPR shadow
>     ...
> 
> 
> Otherwise the system works perfectly fine, the logs are available in
> full via `xl dmesg` etc. Doing (any?) `xl debug-key` unblocks the
> console and missing logs gets dumped there too. I narrowed it down to
> the serial console tx buffer and collected some info with the attacked
> patch (it collects info still during boot, after the place where it
> usually breaks). When it works, I get:
> 
>     (XEN) SERIAL DEBUG: txbufc: 0x5b5, txbufp: 0x9f7, uart intr_works: 1, serial_txbufsz: 0x4000, tx_ready: 0, lsr_mask: 0x20, msi: 0, io_size: 8, skipped_interrupts: 0
> 
> And when it breaks, I get:
> 
>     (XEN) SERIAL DEBUG: txbufc: 0x70, txbufp: 0x9fd, uart intr_works: 1, serial_txbufsz: 0x4000, tx_ready: 16, lsr_mask: 0x20, msi: 0, io_size: 8, skipped_interrupts: 0

The only meaningful difference is tx_ready then. Looking at
ns16550_tx_ready() I wonder whether the LSR reports inconsistent
values on successive reads (there are at least three separate calls
to the function out of serial_tx_interrupt() alone). What you didn't
log is the LSR value itself; from the tx_ready value one can conclude
though that in the bad case fifo_size was returned, while in the good
case 0 was passed back. At the first glance this looks backwards, or
in other words I can't explain why it would be this way round. (I
assume you've had each case multiple times, and the output was
sufficiently consistent; that doesn't go without saying as your
invocation of serial_debug() is competing with the asynchronous
transmitting of data [if any].) It being this way round might suggest
that we lost an interrupt. Is this a real serial port, or one mimicked
by a BMC (SoL or alike)?

Jan


From xen-devel-bounces@lists.xenproject.org Thu Jan 04 12:02:13 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 04 Jan 2024 12:02:13 +0000
Received: from list by lists.xenproject.org with outflank-mailman.661687.1031372 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLMQN-0006w5-9N; Thu, 04 Jan 2024 12:02:11 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 661687.1031372; Thu, 04 Jan 2024 12:02:11 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLMQN-0006vy-6f; Thu, 04 Jan 2024 12:02:11 +0000
Received: by outflank-mailman (input) for mailman id 661687;
 Thu, 04 Jan 2024 12:02:10 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=BdYS=IO=suse.cz=jack@srs-se1.protection.inumbo.net>)
 id 1rLMQL-0006vs-Vj
 for xen-devel@lists.xenproject.org; Thu, 04 Jan 2024 12:02:10 +0000
Received: from smtp-out2.suse.de (smtp-out2.suse.de [195.135.223.131])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 15ccd1ab-aaf9-11ee-98ef-6d05b1d4d9a1;
 Thu, 04 Jan 2024 13:02:08 +0100 (CET)
Received: from imap1.dmz-prg2.suse.org (imap1.dmz-prg2.suse.org
 [IPv6:2a07:de40:b281:104:10:150:64:97])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
 (No client certificate requested)
 by smtp-out2.suse.de (Postfix) with ESMTPS id BC0A11F805;
 Thu,  4 Jan 2024 12:02:07 +0000 (UTC)
Received: from imap1.dmz-prg2.suse.org (localhost [127.0.0.1])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
 (No client certificate requested)
 by imap1.dmz-prg2.suse.org (Postfix) with ESMTPS id AA856137E8;
 Thu,  4 Jan 2024 12:02:07 +0000 (UTC)
Received: from dovecot-director2.suse.de ([2a07:de40:b281:106:10:150:64:167])
 by imap1.dmz-prg2.suse.org with ESMTPSA id B2+aKT+elmXdDwAAD6G6ig
 (envelope-from <jack@suse.cz>); Thu, 04 Jan 2024 12:02:07 +0000
Received: by quack3.suse.cz (Postfix, from userid 1000)
 id 46F2EA07EF; Thu,  4 Jan 2024 13:02:07 +0100 (CET)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 15ccd1ab-aaf9-11ee-98ef-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.cz; s=susede2_rsa;
	t=1704369727; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:content-type:content-type:
	 in-reply-to:in-reply-to:references:references;
	bh=mWvdmjnCrvMMkEad6Bqg+px5xJk89umEnoKGFgsKrCs=;
	b=mA9MLCSZPk9YYyGvchTGE7QGfjuvAxQPIOB5bSqI0ShVGuX15p8YvfG4RITiIv4B9Dzufr
	pBagJPjiR4Z4ZPrR4rSg3y7kRhQxg3YLJt/5Wk5xAtOKY9ZIcCpHalmOrCoqz7gQD2Ger5
	HIfrPy1FJ1h/ozC1qSJjAvouN5/Df8A=
DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.cz;
	s=susede2_ed25519; t=1704369727;
	h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:content-type:content-type:
	 in-reply-to:in-reply-to:references:references;
	bh=mWvdmjnCrvMMkEad6Bqg+px5xJk89umEnoKGFgsKrCs=;
	b=jRA844eLB6Y1ZxCGnb1N6KdOvFnePFHAQGW/vxMgV1qx9TUjHNv+uXe5govpUflqSIzCOd
	q/MKgsENsW38BEBw==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.cz; s=susede2_rsa;
	t=1704369727; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:content-type:content-type:
	 in-reply-to:in-reply-to:references:references;
	bh=mWvdmjnCrvMMkEad6Bqg+px5xJk89umEnoKGFgsKrCs=;
	b=mA9MLCSZPk9YYyGvchTGE7QGfjuvAxQPIOB5bSqI0ShVGuX15p8YvfG4RITiIv4B9Dzufr
	pBagJPjiR4Z4ZPrR4rSg3y7kRhQxg3YLJt/5Wk5xAtOKY9ZIcCpHalmOrCoqz7gQD2Ger5
	HIfrPy1FJ1h/ozC1qSJjAvouN5/Df8A=
DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.cz;
	s=susede2_ed25519; t=1704369727;
	h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:content-type:content-type:
	 in-reply-to:in-reply-to:references:references;
	bh=mWvdmjnCrvMMkEad6Bqg+px5xJk89umEnoKGFgsKrCs=;
	b=jRA844eLB6Y1ZxCGnb1N6KdOvFnePFHAQGW/vxMgV1qx9TUjHNv+uXe5govpUflqSIzCOd
	q/MKgsENsW38BEBw==
Date: Thu, 4 Jan 2024 13:02:07 +0100
From: Jan Kara <jack@suse.cz>
To: Yu Kuai <yukuai1@huaweicloud.com>
Cc: axboe@kernel.dk, roger.pau@citrix.com, colyli@suse.de,
	kent.overstreet@gmail.com, joern@lazybastard.org,
	miquel.raynal@bootlin.com, richard@nod.at, vigneshr@ti.com,
	sth@linux.ibm.com, hoeppner@linux.ibm.com, hca@linux.ibm.com,
	gor@linux.ibm.com, agordeev@linux.ibm.com, jejb@linux.ibm.com,
	martin.petersen@oracle.com, clm@fb.com, josef@toxicpanda.com,
	dsterba@suse.com, viro@zeniv.linux.org.uk, brauner@kernel.org,
	nico@fluxnic.net, xiang@kernel.org, chao@kernel.org, tytso@mit.edu,
	adilger.kernel@dilger.ca, jack@suse.com, konishi.ryusuke@gmail.com,
	willy@infradead.org, akpm@linux-foundation.org, hare@suse.de,
	p.raghav@samsung.com, linux-block@vger.kernel.org,
	linux-kernel@vger.kernel.org, xen-devel@lists.xenproject.org,
	linux-bcache@vger.kernel.org, linux-mtd@lists.infradead.org,
	linux-s390@vger.kernel.org, linux-scsi@vger.kernel.org,
	linux-bcachefs@vger.kernel.org, linux-btrfs@vger.kernel.org,
	linux-fsdevel@vger.kernel.org, linux-erofs@lists.ozlabs.org,
	linux-ext4@vger.kernel.org, linux-nilfs@vger.kernel.org,
	yukuai3@huawei.com, yi.zhang@huawei.com, yangerkun@huawei.com
Subject: Re: [PATCH RFC v3 for-6.8/block 11/17] erofs: use bdev api
Message-ID: <20240104120207.ig7tfc3mgckwkp2n@quack3>
References: <20231221085712.1766333-1-yukuai1@huaweicloud.com>
 <20231221085826.1768395-1-yukuai1@huaweicloud.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <20231221085826.1768395-1-yukuai1@huaweicloud.com>
X-Spam-Level: *****
X-Spamd-Bar: +++++
Authentication-Results: smtp-out2.suse.de;
	dkim=pass header.d=suse.cz header.s=susede2_rsa header.b=mA9MLCSZ;
	dkim=pass header.d=suse.cz header.s=susede2_ed25519 header.b=jRA844eL
X-Rspamd-Server: rspamd2.dmz-prg2.suse.org
X-Spamd-Result: default: False [5.59 / 50.00];
	 RCVD_VIA_SMTP_AUTH(0.00)[];
	 BAYES_SPAM(5.10)[100.00%];
	 SPAMHAUS_XBL(0.00)[2a07:de40:b281:104:10:150:64:97:from];
	 TO_DN_SOME(0.00)[];
	 R_RATELIMIT(0.00)[to_ip_from(RLhr85cyeg3mfw7iggddtjdkgs)];
	 RCVD_COUNT_THREE(0.00)[3];
	 DKIM_TRACE(0.00)[suse.cz:+];
	 MX_GOOD(-0.01)[];
	 NEURAL_HAM_SHORT(-0.20)[-1.000];
	 FROM_EQ_ENVFROM(0.00)[];
	 MIME_TRACE(0.00)[0:+];
	 ARC_NA(0.00)[];
	 R_DKIM_ALLOW(-0.20)[suse.cz:s=susede2_rsa,suse.cz:s=susede2_ed25519];
	 FROM_HAS_DN(0.00)[];
	 FREEMAIL_ENVRCPT(0.00)[gmail.com];
	 TO_MATCH_ENVRCPT_ALL(0.00)[];
	 TAGGED_RCPT(0.00)[];
	 MIME_GOOD(-0.10)[text/plain];
	 NEURAL_HAM_LONG(-1.00)[-1.000];
	 DKIM_SIGNED(0.00)[suse.cz:s=susede2_rsa,suse.cz:s=susede2_ed25519];
	 RCPT_COUNT_TWELVE(0.00)[48];
	 DBL_BLOCKED_OPENRESOLVER(0.00)[suse.cz:dkim,suse.com:email];
	 FUZZY_BLOCKED(0.00)[rspamd.com];
	 MID_RHS_NOT_FQDN(0.50)[];
	 FREEMAIL_CC(0.00)[kernel.dk,citrix.com,suse.de,gmail.com,lazybastard.org,bootlin.com,nod.at,ti.com,linux.ibm.com,oracle.com,fb.com,toxicpanda.com,suse.com,zeniv.linux.org.uk,kernel.org,fluxnic.net,mit.edu,dilger.ca,infradead.org,linux-foundation.org,samsung.com,vger.kernel.org,lists.xenproject.org,lists.infradead.org,lists.ozlabs.org,huawei.com];
	 RCVD_TLS_ALL(0.00)[];
	 SUSPICIOUS_RECIPS(1.50)[]
X-Spam-Score: 5.59
X-Rspamd-Queue-Id: BC0A11F805
X-Spam-Flag: NO

On Thu 21-12-23 16:58:26, Yu Kuai wrote:
> From: Yu Kuai <yukuai3@huawei.com>
> 
> Avoid to access bd_inode directly, prepare to remove bd_inode from
> block_device.
> 
> Signed-off-by: Yu Kuai <yukuai3@huawei.com>

I'm not erofs maintainer but IMO this is quite ugly and grows erofs_buf
unnecessarily. I'd rather store 'sb' pointer in erofs_buf and then do the
right thing in erofs_bread() which is the only place that seems to care
about the erofs_is_fscache_mode() distinction... Also blkszbits is then
trivially sb->s_blocksize_bits so it would all seem much more
straightforward.

								Honza

> ---
>  fs/erofs/data.c     | 18 ++++++++++++------
>  fs/erofs/internal.h |  2 ++
>  2 files changed, 14 insertions(+), 6 deletions(-)
> 
> diff --git a/fs/erofs/data.c b/fs/erofs/data.c
> index c98aeda8abb2..bbe2fe199bf3 100644
> --- a/fs/erofs/data.c
> +++ b/fs/erofs/data.c
> @@ -32,8 +32,8 @@ void erofs_put_metabuf(struct erofs_buf *buf)
>  void *erofs_bread(struct erofs_buf *buf, erofs_blk_t blkaddr,
>  		  enum erofs_kmap_type type)
>  {
> -	struct inode *inode = buf->inode;
> -	erofs_off_t offset = (erofs_off_t)blkaddr << inode->i_blkbits;
> +	u8 blkszbits = buf->inode ? buf->inode->i_blkbits : buf->blkszbits;
> +	erofs_off_t offset = (erofs_off_t)blkaddr << blkszbits;
>  	pgoff_t index = offset >> PAGE_SHIFT;
>  	struct page *page = buf->page;
>  	struct folio *folio;
> @@ -43,7 +43,9 @@ void *erofs_bread(struct erofs_buf *buf, erofs_blk_t blkaddr,
>  		erofs_put_metabuf(buf);
>  
>  		nofs_flag = memalloc_nofs_save();
> -		folio = read_cache_folio(inode->i_mapping, index, NULL, NULL);
> +		folio = buf->inode ?
> +			read_mapping_folio(buf->inode->i_mapping, index, NULL) :
> +			bdev_read_folio(buf->bdev, offset);
>  		memalloc_nofs_restore(nofs_flag);
>  		if (IS_ERR(folio))
>  			return folio;
> @@ -67,10 +69,14 @@ void *erofs_bread(struct erofs_buf *buf, erofs_blk_t blkaddr,
>  
>  void erofs_init_metabuf(struct erofs_buf *buf, struct super_block *sb)
>  {
> -	if (erofs_is_fscache_mode(sb))
> +	if (erofs_is_fscache_mode(sb)) {
>  		buf->inode = EROFS_SB(sb)->s_fscache->inode;
> -	else
> -		buf->inode = sb->s_bdev->bd_inode;
> +		buf->bdev = NULL;
> +	} else {
> +		buf->inode = NULL;
> +		buf->bdev = sb->s_bdev;
> +		buf->blkszbits = EROFS_SB(sb)->blkszbits;
> +	}
>  }
>  
>  void *erofs_read_metabuf(struct erofs_buf *buf, struct super_block *sb,
> diff --git a/fs/erofs/internal.h b/fs/erofs/internal.h
> index b0409badb017..c9206351b485 100644
> --- a/fs/erofs/internal.h
> +++ b/fs/erofs/internal.h
> @@ -224,8 +224,10 @@ enum erofs_kmap_type {
>  
>  struct erofs_buf {
>  	struct inode *inode;
> +	struct block_device *bdev;
>  	struct page *page;
>  	void *base;
> +	u8 blkszbits;
>  	enum erofs_kmap_type kmap_type;
>  };
>  #define __EROFS_BUF_INITIALIZER	((struct erofs_buf){ .page = NULL })
> -- 
> 2.39.2
> 
-- 
Jan Kara <jack@suse.com>
SUSE Labs, CR


From xen-devel-bounces@lists.xenproject.org Thu Jan 04 12:03:00 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 04 Jan 2024 12:03:00 +0000
Received: from list by lists.xenproject.org with outflank-mailman.661693.1031381 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLMRA-0007TS-I6; Thu, 04 Jan 2024 12:03:00 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 661693.1031381; Thu, 04 Jan 2024 12:03:00 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLMRA-0007TK-FP; Thu, 04 Jan 2024 12:03:00 +0000
Received: by outflank-mailman (input) for mailman id 661693;
 Thu, 04 Jan 2024 12:02:59 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=0by4=IO=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rLMR9-0007Rf-KD
 for xen-devel@lists.xenproject.org; Thu, 04 Jan 2024 12:02:59 +0000
Received: from mail-lj1-x232.google.com (mail-lj1-x232.google.com
 [2a00:1450:4864:20::232])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 33e82129-aaf9-11ee-98ef-6d05b1d4d9a1;
 Thu, 04 Jan 2024 13:02:59 +0100 (CET)
Received: by mail-lj1-x232.google.com with SMTP id
 38308e7fff4ca-2cd08f0c12aso4539421fa.0
 for <xen-devel@lists.xenproject.org>; Thu, 04 Jan 2024 04:02:59 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 cn18-20020a056e02389200b0036018f3d804sm5611388ilb.12.2024.01.04.04.02.56
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 04 Jan 2024 04:02:58 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 33e82129-aaf9-11ee-98ef-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1704369778; x=1704974578; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=DMcRZwiT2VQupCjWaouJ0LnuvYoSrPvQbo+lK8q9mO4=;
        b=J6zBHc3qFJ+VsLOyykTzAk2Z30iT3M4VMq2ndRzb+C78WxlFOOLcZnkwRERYO1TXTs
         IOK3TSTim/xtjMcN7/rMDhxA2fRgGZcQaTpGxHGCnzWG/mdKIkgXXqgybQurVug6zpMO
         JzehkFsbOoNmVTN2bq2K46Ek7VU8VvBX7k2WJrbITzqSADC3NUzSMgI6t/T+VVsPjvQo
         jbcqIDp1vpANCUBc9LVTIvrMbmDvM7jyExWyfz2UwXDv5y9hVOmEgOqjFb1IWdWySngw
         aRCgIrMLLOarfGKEG3ebkBH6Lhqpgbw2BpRNOwcBq6O79fWT2yGtAwU/Q0dMTWF6aDad
         XiQg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704369778; x=1704974578;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=DMcRZwiT2VQupCjWaouJ0LnuvYoSrPvQbo+lK8q9mO4=;
        b=BI/4cVaywp8y6XCkFirk4uvtLJMDTN15n9kLahzF2G+PoB1unrZ4BhkCHbhuwlGnpe
         XVvDMBzCKWbVSDMKRNPx4r06NkmPXaWLJGv6/gg2p9I/Kau38fo/zPwLS2mKlUWGphBe
         nB06WuGzRr1szcBKgexr1ReuN7N9e66Ahp6fUaidImrn1V/65ohMkb7JMbVPmZWDP9WO
         ygtvJ4L3JWhm0+mVxOTD+LToGjGdm7g3bPSSDZ/vs5tC9Cf1/O7aw9jvm3gZl63EB2YX
         64PXlmNKJ2C0ZhKkD3UZ5qBa3huOnPtisqBqfuwlN1nfqMHmgHsbDx0wva2Z/azvglam
         MHDw==
X-Gm-Message-State: AOJu0YwHxjb7GWTbG9s/N+4oBdrQeFxjW5MhOJlYqBCq4pjJK32rFxq/
	vwek/WkNuWOnDpzgSBy6edaof1t0TIP9
X-Google-Smtp-Source: AGHT+IHeUyD1le7SHFKK+YkXhn9A8O83ppsXzUzPZuQSC5DWi45ZGU2GUNEdzs0iJ5f3+qf6MI0KOg==
X-Received: by 2002:a05:651c:2203:b0:2cd:11c3:fe5e with SMTP id y3-20020a05651c220300b002cd11c3fe5emr232927ljq.80.1704369778605;
        Thu, 04 Jan 2024 04:02:58 -0800 (PST)
Message-ID: <120fd76c-7a16-4b22-bb3e-69013d58388b@suse.com>
Date: Thu, 4 Jan 2024 13:03:05 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 07/34] xen/asm-generic: introdure nospec.h
Content-Language: en-US
To: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: Stefano Stabellini <sstabellini@kernel.org>, Julien Grall
 <julien@xen.org>, Bertrand Marquis <bertrand.marquis@arm.com>,
 Michal Orzel <michal.orzel@amd.com>,
 Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
 George Dunlap <george.dunlap@citrix.com>, Wei Liu <wl@xen.org>,
 Shawn Anastasio <sanastasio@raptorengineering.com>,
 Alistair Francis <alistair.francis@wdc.com>,
 Bob Eshleman <bobbyeshleman@gmail.com>, Connor Davis
 <connojdavis@gmail.com>, xen-devel@lists.xenproject.org,
 Oleksii Kurochko <oleksii.kurochko@gmail.com>
References: <cover.1703255175.git.oleksii.kurochko@gmail.com>
 <a1360d3de3da8757c69f11c3fafd99ff65654ae8.1703255175.git.oleksii.kurochko@gmail.com>
 <d096f14c-96ae-46a6-81fc-55ff8fcaaf39@suse.com>
 <a429369f-a4b1-44f7-86c2-c8afdee13e1b@citrix.com>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <a429369f-a4b1-44f7-86c2-c8afdee13e1b@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 04.01.2024 12:13, Andrew Cooper wrote:
> On 04/01/2024 11:06 am, Jan Beulich wrote:
>> On 22.12.2023 16:12, Oleksii Kurochko wrote:
>>> The <asm/nospec.h> header is similar between Arm, PPC, and RISC-V,
>>> so it has been moved to asm-generic.
>>>
>>> Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>
>> Acked-by: Jan Beulich <jbeulich@suse.com>
>>
>> A word may want saying though on ...
>>
>>> --- a/xen/arch/arm/include/asm/nospec.h
>>> +++ b/xen/include/asm-generic/nospec.h
>>> @@ -1,8 +1,8 @@
>>> -/* SPDX-License-Identifier: GPL-2.0 */
>>> -/* Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. */
>>> +/* SPDX-License-Identifier: GPL-2.0-only */
>>> +#ifndef _ASM_GENERIC_NOSPEC_H
>>> +#define _ASM_GENERIC_NOSPEC_H
>> ... the removal of the copyright line.
> 
> That isn't a removal of ARM's copyright line.
> 
> The two files are similar enough to trigger git-diff's "this was a
> rename" logic (see the a vs b paths), despite not being a rename.
> 
> It's unfortunate rendering in this case.

Hmm, well, might be. If I had done such a change, I surely wouldn't have
created the file anew, but rather moved one of the existing instances.
Even if it was PPC's that was moved, that was (likely) cloned from Arm's
as well.

Jan


From xen-devel-bounces@lists.xenproject.org Thu Jan 04 12:10:54 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 04 Jan 2024 12:10:54 +0000
Received: from list by lists.xenproject.org with outflank-mailman.661713.1031392 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLMYh-0002ki-Am; Thu, 04 Jan 2024 12:10:47 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 661713.1031392; Thu, 04 Jan 2024 12:10:47 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLMYh-0002kb-73; Thu, 04 Jan 2024 12:10:47 +0000
Received: by outflank-mailman (input) for mailman id 661713;
 Thu, 04 Jan 2024 12:10:45 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=PTP6=IO=daynix.com=akihiko.odaki@srs-se1.protection.inumbo.net>)
 id 1rLMYf-0002kV-FG
 for xen-devel@lists.xenproject.org; Thu, 04 Jan 2024 12:10:45 +0000
Received: from mail-pl1-x632.google.com (mail-pl1-x632.google.com
 [2607:f8b0:4864:20::632])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 48f55c84-aafa-11ee-98ef-6d05b1d4d9a1;
 Thu, 04 Jan 2024 13:10:44 +0100 (CET)
Received: by mail-pl1-x632.google.com with SMTP id
 d9443c01a7336-1d4c767d3a8so2658025ad.1
 for <xen-devel@lists.xenproject.org>; Thu, 04 Jan 2024 04:10:44 -0800 (PST)
Received: from ?IPV6:2400:4050:a840:1e00:9ac7:6d57:2b16:6932?
 ([2400:4050:a840:1e00:9ac7:6d57:2b16:6932])
 by smtp.gmail.com with ESMTPSA id
 x22-20020a170902821600b001cfc1b931a9sm25324308pln.249.2024.01.04.04.10.28
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 04 Jan 2024 04:10:42 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 48f55c84-aafa-11ee-98ef-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=daynix-com.20230601.gappssmtp.com; s=20230601; t=1704370243; x=1704975043; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:from:references:cc:to
         :content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=Q23i9yT7yrVEFxnf3fk5D4MyK0KHTuKJKDM3rop1kno=;
        b=yE44NLqUwonY1rOBOjL8u4S1iR5hYGEvQlRfIUDZDUooSmdkiRlqgUZZeIV4j2rUzQ
         E7kfjrAcWvXgSH83gnJTEj1TWL11B74KAzCWEuvNJbtdQeQdQqZNPveNxPgoOyDWDUU6
         gQ6JUUbenTrcdcDJCsMLR6K/zWtWOTEhE0/GTwsXcjfftYy2MMc59HuW09O55beQWkue
         IQO1s9FYTR9L+JdNwHQkxQfqK7js1hjpJLVqKqTTEuiBGNBKRYO+KNgfZKuA9r0lHqBu
         xvD4wWq7rb74fjRn80gH4a0ffvDu1Rv4W+Pg9aYeqTE0FSKxDTuO09yCMLocYa7dKMMQ
         llVw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704370243; x=1704975043;
        h=content-transfer-encoding:in-reply-to:from:references:cc:to
         :content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=Q23i9yT7yrVEFxnf3fk5D4MyK0KHTuKJKDM3rop1kno=;
        b=jBR15QTJioY9Y37Sr6SS/3G/sksbeQGZfyI8WOBQWXTq5SHyjtNHF4dwx4am6tBN3i
         XOsMa6kYhaFMRbW4m2RONfpIOfMcSxh698tpYdcz+wwRpM9O5aLq6h4zcRqQIuGA7PHL
         yJYWQWMMP6akYNRWK30gHf6gN8IiCI4faUHmLDGbmy7wtaQNt7OXcnwyjna1wwW6OYta
         KtTFuqkLwYhh32brSK7ZQLZOl34n8eFBWysdADGrUsID6M+EauXfrsWCti+WiaX0BkLG
         eUJG7wdxt4KR4Sf4lsEOhHRWyL7wUPDiVGg9nhZxtNCzw1xqzcM0m1Xp6Ut1VKv86Blp
         ciyw==
X-Gm-Message-State: AOJu0YylrI0pharM+rA/A4A9Ch0g4gA4LwaT9jFqZGqep3kXHr37IPlL
	s5DIFBpFlVpPVohG05qarBf1X2Qbvh13fw==
X-Google-Smtp-Source: AGHT+IEvVniyWW6+pm7fNDiUCukxNFVRQmngQJsY2M7PnvRddXZwN4RLgEaC/QIRqiAw2JDtmofBpQ==
X-Received: by 2002:a17:903:1d1:b0:1d4:2b5a:9cb7 with SMTP id e17-20020a17090301d100b001d42b5a9cb7mr365235plh.47.1704370243101;
        Thu, 04 Jan 2024 04:10:43 -0800 (PST)
Message-ID: <480302ec-4fb2-4e97-8940-8ec27846efc5@daynix.com>
Date: Thu, 4 Jan 2024 21:10:26 +0900
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 0/5] Make Big QEMU Lock naming consistent
Content-Language: en-US
To: Stefan Hajnoczi <stefanha@redhat.com>, qemu-devel@nongnu.org
Cc: Hanna Reitz <hreitz@redhat.com>, qemu-riscv@nongnu.org,
 Roman Bolshakov <rbolshakov@ddn.com>, =?UTF-8?Q?C=C3=A9dric_Le_Goater?=
 <clg@kaod.org>, Elena Ufimtseva <elena.ufimtseva@oracle.com>,
 Eduardo Habkost <eduardo@habkost.net>, Thomas Huth <thuth@redhat.com>,
 qemu-block@nongnu.org, Andrey Smirnov <andrew.smirnov@gmail.com>,
 Peter Maydell <peter.maydell@linaro.org>, Huacai Chen
 <chenhuacai@kernel.org>, Fam Zheng <fam@euphon.net>,
 Gerd Hoffmann <kraxel@redhat.com>, David Gibson
 <david@gibson.dropbear.id.au>, John Snow <jsnow@redhat.com>,
 Stafford Horne <shorne@gmail.com>, Weiwei Li <liwei1518@gmail.com>,
 Jean-Christophe Dubois <jcd@tribudubois.net>,
 Cameron Esfahani <dirty@apple.com>, Alexander Graf <agraf@csgraf.de>,
 David Hildenbrand <david@redhat.com>, Juan Quintela <quintela@redhat.com>,
 Nicholas Piggin <npiggin@gmail.com>, Max Filippov <jcmvbkbc@gmail.com>,
 =?UTF-8?Q?Daniel_P=2E_Berrang=C3=A9?= <berrange@redhat.com>,
 Paolo Bonzini <pbonzini@redhat.com>,
 Daniel Henrique Barboza <danielhb413@gmail.com>,
 Markus Armbruster <armbru@redhat.com>, Peter Xu <peterx@redhat.com>,
 Vladimir Sementsov-Ogievskiy <vsementsov@yandex-team.ru>,
 Richard Henderson <richard.henderson@linaro.org>, qemu-s390x@nongnu.org,
 Jiri Slaby <jslaby@suse.cz>, Pavel Dovgalyuk <pavel.dovgaluk@ispras.ru>,
 Eric Blake <eblake@redhat.com>, =?UTF-8?Q?Alex_Benn=C3=A9e?=
 <alex.bennee@linaro.org>, Aleksandar Rikalo <aleksandar.rikalo@syrmia.com>,
 "Michael S. Tsirkin" <mst@redhat.com>, Jason Wang <jasowang@redhat.com>,
 Jiaxun Yang <jiaxun.yang@flygoat.com>,
 Sunil Muthuswamy <sunilmut@microsoft.com>,
 Alistair Francis <alistair.francis@wdc.com>,
 =?UTF-8?Q?Philippe_Mathieu-Daud=C3=A9?= <philmd@linaro.org>,
 Fabiano Rosas <farosas@suse.de>, Michael Roth <michael.roth@amd.com>,
 Paul Durrant <paul@xen.org>, Jagannathan Raman <jag.raman@oracle.com>,
 Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>,
 Stefano Stabellini <sstabellini@kernel.org>,
 Hyman Huang <yong.huang@smartx.com>,
 =?UTF-8?Q?Marc-Andr=C3=A9_Lureau?= <marcandre.lureau@redhat.com>,
 xen-devel@lists.xenproject.org, Halil Pasic <pasic@linux.ibm.com>,
 Christian Borntraeger <borntraeger@linux.ibm.com>,
 Song Gao <gaosong@loongson.cn>, Kevin Wolf <kwolf@redhat.com>,
 Ilya Leoshkevich <iii@linux.ibm.com>, Artyom Tarasenko
 <atar4qemu@gmail.com>, Marcel Apfelbaum <marcel.apfelbaum@gmail.com>,
 Reinoud Zandijk <reinoud@netbsd.org>, qemu-ppc@nongnu.org,
 Marcelo Tosatti <mtosatti@redhat.com>, David Woodhouse
 <dwmw2@infradead.org>, Aurelien Jarno <aurelien@aurel32.net>,
 Bin Meng <bin.meng@windriver.com>, qemu-arm@nongnu.org,
 Anthony Perard <anthony.perard@citrix.com>,
 Leonardo Bras <leobras@redhat.com>,
 Hailiang Zhang <zhanghailiang@xfusion.com>,
 Harsh Prateek Bora <harshpb@linux.ibm.com>, kvm@vger.kernel.org,
 Palmer Dabbelt <palmer@dabbelt.com>, Eric Farman <farman@linux.ibm.com>,
 BALATON Zoltan <balaton@eik.bme.hu>,
 Liu Zhiwei <zhiwei_liu@linux.alibaba.com>
References: <20240102153529.486531-1-stefanha@redhat.com>
From: Akihiko Odaki <akihiko.odaki@daynix.com>
In-Reply-To: <20240102153529.486531-1-stefanha@redhat.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

On 2024/01/03 0:35, Stefan Hajnoczi wrote:
> v3:
> - Rebase
> - Define bql_lock() macro on a single line [Akihiko Odaki]
> v2:
> - Rename APIs bql_*() [PeterX]
> - Spell out "Big QEMU Lock (BQL)" in doc comments [PeterX]
> - Rename "iolock" variables in hw/remote/mpqemu-link.c [Harsh]
> - Fix bql_auto_lock() indentation in Patch 2 [Ilya]
> - "with BQL taken" -> "with the BQL taken" [Philippe]
> - "under BQL" -> "under the BQL" [Philippe]
> 
> The Big QEMU Lock ("BQL") has two other names: "iothread lock" and "QEMU global
> mutex". The term "iothread lock" is easily confused with the unrelated --object
> iothread (iothread.c).
> 
> This series updates the code and documentation to consistently use "BQL". This
> makes the code easier to understand.

For the whole series,
Reviewed-by: Akihiko Odaki <akihiko.odaki@daynix.com>

Thank you for sorting this out.


From xen-devel-bounces@lists.xenproject.org Thu Jan 04 12:11:56 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 04 Jan 2024 12:11:56 +0000
Received: from list by lists.xenproject.org with outflank-mailman.661716.1031402 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLMZm-0003pv-Jy; Thu, 04 Jan 2024 12:11:54 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 661716.1031402; Thu, 04 Jan 2024 12:11:54 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLMZm-0003po-Gw; Thu, 04 Jan 2024 12:11:54 +0000
Received: by outflank-mailman (input) for mailman id 661716;
 Thu, 04 Jan 2024 12:11:53 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=BdYS=IO=suse.cz=jack@srs-se1.protection.inumbo.net>)
 id 1rLMZl-0003oB-4e
 for xen-devel@lists.xenproject.org; Thu, 04 Jan 2024 12:11:53 +0000
Received: from smtp-out2.suse.de (smtp-out2.suse.de [195.135.223.131])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 7184aca5-aafa-11ee-98ef-6d05b1d4d9a1;
 Thu, 04 Jan 2024 13:11:52 +0100 (CET)
Received: from imap1.dmz-prg2.suse.org (imap1.dmz-prg2.suse.org [10.150.64.97])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
 (No client certificate requested)
 by smtp-out2.suse.de (Postfix) with ESMTPS id 1152E1F805;
 Thu,  4 Jan 2024 12:11:51 +0000 (UTC)
Received: from imap1.dmz-prg2.suse.org (localhost [127.0.0.1])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
 (No client certificate requested)
 by imap1.dmz-prg2.suse.org (Postfix) with ESMTPS id E4BA2137E8;
 Thu,  4 Jan 2024 12:11:50 +0000 (UTC)
Received: from dovecot-director2.suse.de ([2a07:de40:b281:106:10:150:64:167])
 by imap1.dmz-prg2.suse.org with ESMTPSA id 63jMN4aglmWaEgAAD6G6ig
 (envelope-from <jack@suse.cz>); Thu, 04 Jan 2024 12:11:50 +0000
Received: by quack3.suse.cz (Postfix, from userid 1000)
 id 3F4B9A07EF; Thu,  4 Jan 2024 13:11:50 +0100 (CET)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 7184aca5-aafa-11ee-98ef-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.cz; s=susede2_rsa;
	t=1704370311; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:content-type:content-type:
	 in-reply-to:in-reply-to:references:references;
	bh=9ZeDUh4C7zA3YQ4fYm2i65EzKNR/mQAuN7BWkbo24yo=;
	b=e3sjw3qzaFj1bR2K3ph+SCgBs0W5KbKSkTDh6j9mOfMzcA4ll5T88VX7DvbyrfhjMaOgEU
	ULNk5uKyzCEeOrIlpEpgveioXn6k/trmuztnPHJGyuhf31ImQ2Y/fqDPmQvtkeijr8KG0S
	hbXlHYuGqhsgRPRLiscvp4MGINF5+lk=
DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.cz;
	s=susede2_ed25519; t=1704370311;
	h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:content-type:content-type:
	 in-reply-to:in-reply-to:references:references;
	bh=9ZeDUh4C7zA3YQ4fYm2i65EzKNR/mQAuN7BWkbo24yo=;
	b=yQXb9LPjRaWSg2B28C8A0dOdwxgSX7f2zAKDyWfCb78V8RXDAvfljmM2SO6fP/MQIajAvj
	t7RHhrFKNOkLHNCw==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.cz; s=susede2_rsa;
	t=1704370311; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:content-type:content-type:
	 in-reply-to:in-reply-to:references:references;
	bh=9ZeDUh4C7zA3YQ4fYm2i65EzKNR/mQAuN7BWkbo24yo=;
	b=e3sjw3qzaFj1bR2K3ph+SCgBs0W5KbKSkTDh6j9mOfMzcA4ll5T88VX7DvbyrfhjMaOgEU
	ULNk5uKyzCEeOrIlpEpgveioXn6k/trmuztnPHJGyuhf31ImQ2Y/fqDPmQvtkeijr8KG0S
	hbXlHYuGqhsgRPRLiscvp4MGINF5+lk=
DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.cz;
	s=susede2_ed25519; t=1704370311;
	h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:content-type:content-type:
	 in-reply-to:in-reply-to:references:references;
	bh=9ZeDUh4C7zA3YQ4fYm2i65EzKNR/mQAuN7BWkbo24yo=;
	b=yQXb9LPjRaWSg2B28C8A0dOdwxgSX7f2zAKDyWfCb78V8RXDAvfljmM2SO6fP/MQIajAvj
	t7RHhrFKNOkLHNCw==
Date: Thu, 4 Jan 2024 13:11:50 +0100
From: Jan Kara <jack@suse.cz>
To: Yu Kuai <yukuai1@huaweicloud.com>
Cc: axboe@kernel.dk, roger.pau@citrix.com, colyli@suse.de,
	kent.overstreet@gmail.com, joern@lazybastard.org,
	miquel.raynal@bootlin.com, richard@nod.at, vigneshr@ti.com,
	sth@linux.ibm.com, hoeppner@linux.ibm.com, hca@linux.ibm.com,
	gor@linux.ibm.com, agordeev@linux.ibm.com, jejb@linux.ibm.com,
	martin.petersen@oracle.com, clm@fb.com, josef@toxicpanda.com,
	dsterba@suse.com, viro@zeniv.linux.org.uk, brauner@kernel.org,
	nico@fluxnic.net, xiang@kernel.org, chao@kernel.org, tytso@mit.edu,
	adilger.kernel@dilger.ca, jack@suse.com, konishi.ryusuke@gmail.com,
	willy@infradead.org, akpm@linux-foundation.org, hare@suse.de,
	p.raghav@samsung.com, linux-block@vger.kernel.org,
	linux-kernel@vger.kernel.org, xen-devel@lists.xenproject.org,
	linux-bcache@vger.kernel.org, linux-mtd@lists.infradead.org,
	linux-s390@vger.kernel.org, linux-scsi@vger.kernel.org,
	linux-bcachefs@vger.kernel.org, linux-btrfs@vger.kernel.org,
	linux-fsdevel@vger.kernel.org, linux-erofs@lists.ozlabs.org,
	linux-ext4@vger.kernel.org, linux-nilfs@vger.kernel.org,
	yukuai3@huawei.com, yi.zhang@huawei.com, yangerkun@huawei.com
Subject: Re: [PATCH RFC v3 for-6.8/block 13/17] jbd2: use bdev apis
Message-ID: <20240104121150.cxrykpptpgnwkqge@quack3>
References: <20231221085712.1766333-1-yukuai1@huaweicloud.com>
 <20231221085846.1768977-1-yukuai1@huaweicloud.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <20231221085846.1768977-1-yukuai1@huaweicloud.com>
X-Spam-Score: 1.90
X-Spamd-Result: default: False [1.90 / 50.00];
	 ARC_NA(0.00)[];
	 RCVD_VIA_SMTP_AUTH(0.00)[];
	 FROM_HAS_DN(0.00)[];
	 TO_DN_SOME(0.00)[];
	 FREEMAIL_ENVRCPT(0.00)[gmail.com];
	 TO_MATCH_ENVRCPT_ALL(0.00)[];
	 TAGGED_RCPT(0.00)[];
	 MIME_GOOD(-0.10)[text/plain];
	 R_RATELIMIT(0.00)[to_ip_from(RLdan9jouj5dxnqx1npfmn4ucx)];
	 RCVD_COUNT_THREE(0.00)[3];
	 DKIM_SIGNED(0.00)[suse.cz:s=susede2_rsa,suse.cz:s=susede2_ed25519];
	 RCPT_COUNT_TWELVE(0.00)[48];
	 DBL_BLOCKED_OPENRESOLVER(0.00)[suse.com:email];
	 FUZZY_BLOCKED(0.00)[rspamd.com];
	 FROM_EQ_ENVFROM(0.00)[];
	 MIME_TRACE(0.00)[0:+];
	 MID_RHS_NOT_FQDN(0.50)[];
	 FREEMAIL_CC(0.00)[kernel.dk,citrix.com,suse.de,gmail.com,lazybastard.org,bootlin.com,nod.at,ti.com,linux.ibm.com,oracle.com,fb.com,toxicpanda.com,suse.com,zeniv.linux.org.uk,kernel.org,fluxnic.net,mit.edu,dilger.ca,infradead.org,linux-foundation.org,samsung.com,vger.kernel.org,lists.xenproject.org,lists.infradead.org,lists.ozlabs.org,huawei.com];
	 RCVD_TLS_ALL(0.00)[];
	 SUSPICIOUS_RECIPS(1.50)[]
Authentication-Results: smtp-out2.suse.de;
	none
X-Spam-Level: *
X-Spam-Flag: NO

On Thu 21-12-23 16:58:46, Yu Kuai wrote:
> From: Yu Kuai <yukuai3@huawei.com>
> 
> Avoid to access bd_inode directly, prepare to remove bd_inode from
> block_device.
> 
> Signed-off-by: Yu Kuai <yukuai3@huawei.com>

Looks good to me. Feel free to add:

Reviewed-by: Jan Kara <jack@suse.cz>

But note there are changes pending to this code for the coming merge window
so you'll have to rebase...

								Honza

> ---
>  fs/jbd2/journal.c  | 3 +--
>  fs/jbd2/recovery.c | 6 ++----
>  2 files changed, 3 insertions(+), 6 deletions(-)
> 
> diff --git a/fs/jbd2/journal.c b/fs/jbd2/journal.c
> index ed53188472f9..f1b5ffeaf02a 100644
> --- a/fs/jbd2/journal.c
> +++ b/fs/jbd2/journal.c
> @@ -2003,8 +2003,7 @@ static int __jbd2_journal_erase(journal_t *journal, unsigned int flags)
>  		byte_count = (block_stop - block_start + 1) *
>  				journal->j_blocksize;
>  
> -		truncate_inode_pages_range(journal->j_dev->bd_inode->i_mapping,
> -				byte_start, byte_stop);
> +		truncate_bdev_range(journal->j_dev, 0, byte_start, byte_stop);
>  
>  		if (flags & JBD2_JOURNAL_FLUSH_DISCARD) {
>  			err = blkdev_issue_discard(journal->j_dev,
> diff --git a/fs/jbd2/recovery.c b/fs/jbd2/recovery.c
> index 01f744cb97a4..6b6a2c4585fa 100644
> --- a/fs/jbd2/recovery.c
> +++ b/fs/jbd2/recovery.c
> @@ -290,7 +290,6 @@ int jbd2_journal_recover(journal_t *journal)
>  
>  	struct recovery_info	info;
>  	errseq_t		wb_err;
> -	struct address_space	*mapping;
>  
>  	memset(&info, 0, sizeof(info));
>  	sb = journal->j_superblock;
> @@ -309,8 +308,7 @@ int jbd2_journal_recover(journal_t *journal)
>  	}
>  
>  	wb_err = 0;
> -	mapping = journal->j_fs_dev->bd_inode->i_mapping;
> -	errseq_check_and_advance(&mapping->wb_err, &wb_err);
> +	bdev_wb_err_check_and_advance(journal->j_fs_dev, &wb_err);
>  	err = do_one_pass(journal, &info, PASS_SCAN);
>  	if (!err)
>  		err = do_one_pass(journal, &info, PASS_REVOKE);
> @@ -334,7 +332,7 @@ int jbd2_journal_recover(journal_t *journal)
>  	err2 = sync_blockdev(journal->j_fs_dev);
>  	if (!err)
>  		err = err2;
> -	err2 = errseq_check_and_advance(&mapping->wb_err, &wb_err);
> +	err2 = bdev_wb_err_check_and_advance(journal->j_fs_dev, &wb_err);
>  	if (!err)
>  		err = err2;
>  	/* Make sure all replayed data is on permanent storage */
> -- 
> 2.39.2
> 
-- 
Jan Kara <jack@suse.com>
SUSE Labs, CR


From xen-devel-bounces@lists.xenproject.org Thu Jan 04 12:16:47 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 04 Jan 2024 12:16:47 +0000
Received: from list by lists.xenproject.org with outflank-mailman.661728.1031412 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLMeP-0006Fz-9n; Thu, 04 Jan 2024 12:16:41 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 661728.1031412; Thu, 04 Jan 2024 12:16:41 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLMeP-0006Fs-5l; Thu, 04 Jan 2024 12:16:41 +0000
Received: by outflank-mailman (input) for mailman id 661728;
 Thu, 04 Jan 2024 12:16:40 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=PTP6=IO=daynix.com=akihiko.odaki@srs-se1.protection.inumbo.net>)
 id 1rLMeO-0006Fm-Hx
 for xen-devel@lists.xenproject.org; Thu, 04 Jan 2024 12:16:40 +0000
Received: from mail-pl1-x632.google.com (mail-pl1-x632.google.com
 [2607:f8b0:4864:20::632])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 1c9d07d0-aafb-11ee-98ef-6d05b1d4d9a1;
 Thu, 04 Jan 2024 13:16:39 +0100 (CET)
Received: by mail-pl1-x632.google.com with SMTP id
 d9443c01a7336-1d3f8af8297so2291915ad.2
 for <xen-devel@lists.xenproject.org>; Thu, 04 Jan 2024 04:16:39 -0800 (PST)
Received: from ?IPV6:2400:4050:a840:1e00:9ac7:6d57:2b16:6932?
 ([2400:4050:a840:1e00:9ac7:6d57:2b16:6932])
 by smtp.gmail.com with ESMTPSA id
 r1-20020a1709028bc100b001d4be72802esm6337823plo.150.2024.01.04.04.16.32
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 04 Jan 2024 04:16:37 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 1c9d07d0-aafb-11ee-98ef-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=daynix-com.20230601.gappssmtp.com; s=20230601; t=1704370598; x=1704975398; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:from:references:cc:to
         :content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=EYyEGe5ydr4mM6eWvaqTfQv1BLtvmj92kc4KF6KDejI=;
        b=sDSGSns+kotuv4jIPypOtB3t/OCGS4DP1DfUxSIcLXSc8o11PwkXhSdzikNMNZrKoC
         8U/UIr1ZCWkyfBM1sPEXNJ34nZBDFmY2M4nLt4PaWDpE8DDrvAxnaaDxgX4Rn6PXxOxo
         qFpdklEfB3uLs65PiJsS2bzbyw+pIlJkOzg0wlKvxrM2YxjGgC3XHvDxlxR+ZdFqDw6H
         Pe2WklUXthW3Ocfz9D/WxBbVzwjZ/5n1UOwlMIwpgezpKW5Z+bCnDyRurgltQ9mcKzNm
         KKAUBbv6EKTM7PwvPo3hFgUBgkfX1e/ShJT8iChIqK+yNAeeN7sYBCLluKPqs3jACWVi
         M1zg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704370598; x=1704975398;
        h=content-transfer-encoding:in-reply-to:from:references:cc:to
         :content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=EYyEGe5ydr4mM6eWvaqTfQv1BLtvmj92kc4KF6KDejI=;
        b=B1CIdTwn785we/C4KjAeS6kyUoOy8Ury2PgonkFj3iHE9SzUe4tLHpqopcrK/C5kwA
         eGibrTbDaKsCbfVzZtdZhauaXtXFSH/zi2oWmmKQ7QN1cBPmAzj+NCDAPBvu4bRBGxKZ
         FN1opgt9kX0GvYOWbuypt4HIHi/mhCpQYk2HI8pzyq4jeMRYCcAOvLHCGzLv1R0AhLYA
         Y/coe/Ls+91FTrvzD8/07QGCXYp6mE8FzjnK1aVGQJcXIC9BR1fxS2KB4f2BjS+ycvIb
         S8usDNKsGgyrFEbqYpH9jyF7wEkTIoi8nceCokxx0Y1D1OrYT0144CgJ/vWYuXITZZrp
         Ztnw==
X-Gm-Message-State: AOJu0Yx/+F+0Zgrt7waFirMunA27piJHQs28KMGk7I/D4k5RhrJ2xTQY
	5CcxLLQtFhfuUiSS41kfDpGEZFgldvMCdg==
X-Google-Smtp-Source: AGHT+IEeXiQT8qwQqiGs7lXDTBoTsxUSIfBM7UACGvrgKBmcagbrJKZAJ638hD8/dLLbDq855NNbyw==
X-Received: by 2002:a17:902:6b42:b0:1d4:60b2:b1b1 with SMTP id g2-20020a1709026b4200b001d460b2b1b1mr388277plt.6.1704370598276;
        Thu, 04 Jan 2024 04:16:38 -0800 (PST)
Message-ID: <bde05200-a450-470e-8a62-feb0235ac56f@daynix.com>
Date: Thu, 4 Jan 2024 21:16:31 +0900
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v6 03/11] virtio-gpu: Support context init feature with
 virglrenderer
Content-Language: en-US
To: Huang Rui <ray.huang@amd.com>,
 =?UTF-8?Q?Marc-Andr=C3=A9_Lureau?= <marcandre.lureau@gmail.com>,
 =?UTF-8?Q?Philippe_Mathieu-Daud=C3=A9?= <philmd@linaro.org>,
 Gerd Hoffmann <kraxel@redhat.com>, "Michael S . Tsirkin" <mst@redhat.com>,
 Stefano Stabellini <sstabellini@kernel.org>,
 Anthony PERARD <anthony.perard@citrix.com>,
 Antonio Caggiano <quic_acaggian@quicinc.com>,
 "Dr . David Alan Gilbert" <dgilbert@redhat.com>,
 Robert Beckett <bob.beckett@collabora.com>,
 Dmitry Osipenko <dmitry.osipenko@collabora.com>,
 Gert Wollny <gert.wollny@collabora.com>, =?UTF-8?Q?Alex_Benn=C3=A9e?=
 <alex.bennee@linaro.org>, qemu-devel@nongnu.org
Cc: xen-devel@lists.xenproject.org,
 Gurchetan Singh <gurchetansingh@chromium.org>, ernunes@redhat.com,
 Alyssa Ross <hi@alyssa.is>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger.pau@citrix.com>, Alex Deucher <alexander.deucher@amd.com>,
 Stefano Stabellini <stefano.stabellini@amd.com>,
 =?UTF-8?Q?Christian_K=C3=B6nig?= <christian.koenig@amd.com>,
 Xenia Ragiadakou <xenia.ragiadakou@amd.com>,
 Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com>,
 Honglei Huang <honglei1.huang@amd.com>, Julia Zhang <julia.zhang@amd.com>,
 Chen Jiqian <Jiqian.Chen@amd.com>,
 Antonio Caggiano <antonio.caggiano@collabora.com>
References: <20231219075320.165227-1-ray.huang@amd.com>
 <20231219075320.165227-4-ray.huang@amd.com>
From: Akihiko Odaki <akihiko.odaki@daynix.com>
In-Reply-To: <20231219075320.165227-4-ray.huang@amd.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

On 2023/12/19 16:53, Huang Rui wrote:
> Patch "virtio-gpu: CONTEXT_INIT feature" has added the context_init
> feature flags.
> We would like to enable the feature with virglrenderer, so add to create
> virgl renderer context with flags using context_id when valid.
> 
> Originally-by: Antonio Caggiano <antonio.caggiano@collabora.com>
> Signed-off-by: Huang Rui <ray.huang@amd.com>
> ---
> 
> Changes in v6:
> - Handle the case while context_init is disabled.
> - Enable context_init by default.
> 
>   hw/display/virtio-gpu-virgl.c | 13 +++++++++++--
>   hw/display/virtio-gpu.c       |  4 ++++
>   2 files changed, 15 insertions(+), 2 deletions(-)
> 
> diff --git a/hw/display/virtio-gpu-virgl.c b/hw/display/virtio-gpu-virgl.c
> index 8bb7a2c21f..5bbc8071b2 100644
> --- a/hw/display/virtio-gpu-virgl.c
> +++ b/hw/display/virtio-gpu-virgl.c
> @@ -106,8 +106,17 @@ static void virgl_cmd_context_create(VirtIOGPU *g,
>       trace_virtio_gpu_cmd_ctx_create(cc.hdr.ctx_id,
>                                       cc.debug_name);
>   
> -    virgl_renderer_context_create(cc.hdr.ctx_id, cc.nlen,
> -                                  cc.debug_name);
> +#ifdef HAVE_VIRGL_CONTEXT_CREATE_WITH_FLAGS
> +    if (cc.context_init && virtio_gpu_context_init_enabled(g->parent_obj.conf)) {
> +        virgl_renderer_context_create_with_flags(cc.hdr.ctx_id,
> +                                                 cc.context_init,
> +                                                 cc.nlen,
> +                                                 cc.debug_name);
> +        return;
> +    }
> +#endif
> +
> +    virgl_renderer_context_create(cc.hdr.ctx_id, cc.nlen, cc.debug_name);
>   }
>   
>   static void virgl_cmd_context_destroy(VirtIOGPU *g,
> diff --git a/hw/display/virtio-gpu.c b/hw/display/virtio-gpu.c
> index b016d3bac8..8b2f4c6be3 100644
> --- a/hw/display/virtio-gpu.c
> +++ b/hw/display/virtio-gpu.c
> @@ -1619,6 +1619,10 @@ static Property virtio_gpu_properties[] = {
>       DEFINE_PROP_BIT("blob", VirtIOGPU, parent_obj.conf.flags,
>                       VIRTIO_GPU_FLAG_BLOB_ENABLED, false),
>       DEFINE_PROP_SIZE("hostmem", VirtIOGPU, parent_obj.conf.hostmem, 0),
> +#ifdef HAVE_VIRGL_CONTEXT_CREATE_WITH_FLAGS
> +    DEFINE_PROP_BIT("context_init", VirtIOGPU, parent_obj.conf.flags,

The convention is to use "-" instead of "_" as delimiters. See comments 
for object_property_add() in: include/qom/object.h

Regards,
Akihiko Odaki


From xen-devel-bounces@lists.xenproject.org Thu Jan 04 12:20:21 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 04 Jan 2024 12:20:21 +0000
Received: from list by lists.xenproject.org with outflank-mailman.661736.1031421 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLMhp-0008Jm-OJ; Thu, 04 Jan 2024 12:20:13 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 661736.1031421; Thu, 04 Jan 2024 12:20:13 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLMhp-0008Jf-Ld; Thu, 04 Jan 2024 12:20:13 +0000
Received: by outflank-mailman (input) for mailman id 661736;
 Thu, 04 Jan 2024 12:20:12 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=riih=IO=huaweicloud.com=yukuai1@srs-se1.protection.inumbo.net>)
 id 1rLMho-0008JW-Ms
 for xen-devel@lists.xenproject.org; Thu, 04 Jan 2024 12:20:12 +0000
Received: from dggsgout11.his.huawei.com (unknown [45.249.212.51])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 8f64bd4c-aafb-11ee-98ef-6d05b1d4d9a1;
 Thu, 04 Jan 2024 13:20:09 +0100 (CET)
Received: from mail.maildlp.com (unknown [172.19.163.216])
 by dggsgout11.his.huawei.com (SkyGuard) with ESMTP id 4T5QcR1kf6z4f3l1m
 for <xen-devel@lists.xenproject.org>; Thu,  4 Jan 2024 20:19:03 +0800 (CST)
Received: from mail02.huawei.com (unknown [10.116.40.112])
 by mail.maildlp.com (Postfix) with ESMTP id E8F9D1A0AFF
 for <xen-devel@lists.xenproject.org>; Thu,  4 Jan 2024 20:19:08 +0800 (CST)
Received: from [10.174.176.73] (unknown [10.174.176.73])
 by APP1 (Coremail) with SMTP id cCh0CgBHShA5opZl+60EFg--.63321S3;
 Thu, 04 Jan 2024 20:19:08 +0800 (CST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 8f64bd4c-aafb-11ee-98ef-6d05b1d4d9a1
Subject: Re: [PATCH RFC v3 for-6.8/block 02/17] xen/blkback: use bdev api in
 xen_update_blkif_status()
To: Jan Kara <jack@suse.cz>, Yu Kuai <yukuai1@huaweicloud.com>
Cc: axboe@kernel.dk, roger.pau@citrix.com, colyli@suse.de,
 kent.overstreet@gmail.com, joern@lazybastard.org, miquel.raynal@bootlin.com,
 richard@nod.at, vigneshr@ti.com, sth@linux.ibm.com, hoeppner@linux.ibm.com,
 hca@linux.ibm.com, gor@linux.ibm.com, agordeev@linux.ibm.com,
 jejb@linux.ibm.com, martin.petersen@oracle.com, clm@fb.com,
 josef@toxicpanda.com, dsterba@suse.com, viro@zeniv.linux.org.uk,
 brauner@kernel.org, nico@fluxnic.net, xiang@kernel.org, chao@kernel.org,
 tytso@mit.edu, adilger.kernel@dilger.ca, jack@suse.com,
 konishi.ryusuke@gmail.com, willy@infradead.org, akpm@linux-foundation.org,
 hare@suse.de, p.raghav@samsung.com, linux-block@vger.kernel.org,
 linux-kernel@vger.kernel.org, xen-devel@lists.xenproject.org,
 linux-bcache@vger.kernel.org, linux-mtd@lists.infradead.org,
 linux-s390@vger.kernel.org, linux-scsi@vger.kernel.org,
 linux-bcachefs@vger.kernel.org, linux-btrfs@vger.kernel.org,
 linux-fsdevel@vger.kernel.org, linux-erofs@lists.ozlabs.org,
 linux-ext4@vger.kernel.org, linux-nilfs@vger.kernel.org,
 yi.zhang@huawei.com, yangerkun@huawei.com, "yukuai (C)" <yukuai3@huawei.com>
References: <20231221085712.1766333-1-yukuai1@huaweicloud.com>
 <20231221085712.1766333-3-yukuai1@huaweicloud.com>
 <20240104110631.3vspsvxbbvcpdqdu@quack3>
From: Yu Kuai <yukuai1@huaweicloud.com>
Message-ID: <29bfcfc7-62b0-3876-78ce-f7ebe3506eb6@huaweicloud.com>
Date: Thu, 4 Jan 2024 20:19:05 +0800
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:60.0) Gecko/20100101
 Thunderbird/60.8.0
MIME-Version: 1.0
In-Reply-To: <20240104110631.3vspsvxbbvcpdqdu@quack3>
Content-Type: text/plain; charset=gbk; format=flowed
Content-Transfer-Encoding: 8bit
X-CM-TRANSID:cCh0CgBHShA5opZl+60EFg--.63321S3
X-Coremail-Antispam: 1UD129KBjvJXoW7ur1xtw4fZF13Gr48Wr1rZwb_yoW8WF4rpr
	y7GF48AryDKFWjkFs3Xa1I9Fn3Ka17GrW5urZxA34fXr90qr92gasYy34YgFWxXrn3Jrs2
	qw47XFs3Ary8W3DanT9S1TB71UUUUUUqnTZGkaVYY2UrUUUUjbIjqfuFe4nvWSU5nxnvy2
	9KBjDU0xBIdaVrnRJUUU9214x267AKxVWrJVCq3wAFc2x0x2IEx4CE42xK8VAvwI8IcIk0
	rVWrJVCq3wAFIxvE14AKwVWUJVWUGwA2ocxC64kIII0Yj41l84x0c7CEw4AK67xGY2AK02
	1l84ACjcxK6xIIjxv20xvE14v26F1j6w1UM28EF7xvwVC0I7IYx2IY6xkF7I0E14v26r4U
	JVWxJr1l84ACjcxK6I8E87Iv67AKxVW0oVCq3wA2z4x0Y4vEx4A2jsIEc7CjxVAFwI0_Gc
	CE3s1le2I262IYc4CY6c8Ij28IcVAaY2xG8wAqx4xG64xvF2IEw4CE5I8CrVC2j2WlYx0E
	2Ix0cI8IcVAFwI0_Jr0_Jr4lYx0Ex4A2jsIE14v26r1j6r4UMcvjeVCFs4IE7xkEbVWUJV
	W8JwACjcxG0xvEwIxGrwACjI8F5VA0II8E6IAqYI8I648v4I1lFIxGxcIEc7CjxVA2Y2ka
	0xkIwI1lc7I2V7IY0VAS07AlzVAYIcxG8wCF04k20xvY0x0EwIxGrwCFx2IqxVCFs4IE7x
	kEbVWUJVW8JwC20s026c02F40E14v26r1j6r18MI8I3I0E7480Y4vE14v26r106r1rMI8E
	67AF67kF1VAFwI0_Wrv_Gr1UMIIYrxkI7VAKI48JMIIF0xvE2Ix0cI8IcVAFwI0_Jr0_JF
	4lIxAIcVC0I7IYx2IY6xkF7I0E14v26r4j6F4UMIIF0xvE42xK8VAvwI8IcIk0rVWrZr1j
	6s0DMIIF0xvEx4A2jsIE14v26r1j6r4UMIIF0xvEx4A2jsIEc7CjxVAFwI0_Gr0_Gr1UYx
	BIdaVFxhVjvjDU0xZFpf9x0JUd8n5UUUUU=
X-CM-SenderInfo: 51xn3trlr6x35dzhxuhorxvhhfrp/

Hi, Jan!

 2024/01/04 19:06, Jan Kara д:
> On Thu 21-12-23 16:56:57, Yu Kuai wrote:
>> From: Yu Kuai <yukuai3@huawei.com>
>>
>> Avoid to access bd_inode directly, prepare to remove bd_inode from
>> block_devcie.
>>
>> Signed-off-by: Yu Kuai <yukuai3@huawei.com>
>> ---
>>   drivers/block/xen-blkback/xenbus.c | 3 +--
>>   1 file changed, 1 insertion(+), 2 deletions(-)
>>
>> diff --git a/drivers/block/xen-blkback/xenbus.c b/drivers/block/xen-blkback/xenbus.c
>> index e34219ea2b05..e645afa4af57 100644
>> --- a/drivers/block/xen-blkback/xenbus.c
>> +++ b/drivers/block/xen-blkback/xenbus.c
>> @@ -104,8 +104,7 @@ static void xen_update_blkif_status(struct xen_blkif *blkif)
>>   		xenbus_dev_error(blkif->be->dev, err, "block flush");
>>   		return;
>>   	}
>> -	invalidate_inode_pages2(
>> -			blkif->vbd.bdev_handle->bdev->bd_inode->i_mapping);
>> +	invalidate_bdev(blkif->vbd.bdev_handle->bdev);
> 
> This function uses invalidate_inode_pages2() while invalidate_bdev() ends
> up using mapping_try_invalidate() and there are subtle behavioral
> differences between these two (for example invalidate_inode_pages2() tries
> to clean dirty pages using the ->launder_folio method). So I think you'll
> need helper like invalidate_bdev2() for this.

Thanks for reviewing this patch, I know the differenct between then,
what I don't understand is that why using invalidate_inode_pages2()
here. sync_blockdev() is just called and 0 is returned, I think in this
case it's safe to call invalidate_bdev() directly, or am I missing
other things?

Thanks,
Kuai

> 
> 								Honza
> 



From xen-devel-bounces@lists.xenproject.org Thu Jan 04 12:21:53 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 04 Jan 2024 12:21:53 +0000
Received: from list by lists.xenproject.org with outflank-mailman.661747.1031432 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLMjN-0000xe-3M; Thu, 04 Jan 2024 12:21:49 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 661747.1031432; Thu, 04 Jan 2024 12:21:49 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLMjN-0000xX-0i; Thu, 04 Jan 2024 12:21:49 +0000
Received: by outflank-mailman (input) for mailman id 661747;
 Thu, 04 Jan 2024 12:21:47 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rLMjL-0000xL-RN; Thu, 04 Jan 2024 12:21:47 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rLMjL-0001XF-Ns; Thu, 04 Jan 2024 12:21:47 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rLMjL-0000AF-8R; Thu, 04 Jan 2024 12:21:47 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rLMjL-000497-7y; Thu, 04 Jan 2024 12:21:47 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=AwPM9LCnYsvilaL90V06/4mWmJznxnQLhREL4UIuRYE=; b=p1dnSf5AnrNcyKBJe97y71yera
	V+rmoLl4S1UhuVDCt6gAri380wlkuJHPQJKuLgrPIR6TP+8UPjAhhtBtyEGyExKX4prE1OvVDmK3b
	WMjgZ3Pl0KzDIArUZ6ahFpJRH8SQNUsErueT2q1Lsi+mmZOsS21LENAlQ9okjk4pA/n4=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184251-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [ovmf test] 184251: all pass - PUSHED
X-Osstest-Versions-This:
    ovmf=e449451770193c8eb36e4dc3a770c8ee353183aa
X-Osstest-Versions-That:
    ovmf=16c8cfc81054aa76e133eab1033560052727cab5
From: osstest service owner <osstest-admin@xenproject.org>
Date: Thu, 04 Jan 2024 12:21:47 +0000

flight 184251 ovmf real [real]
http://logs.test-lab.xenproject.org/osstest/logs/184251/

Perfect :-)
All tests in this flight passed as required
version targeted for testing:
 ovmf                 e449451770193c8eb36e4dc3a770c8ee353183aa
baseline version:
 ovmf                 16c8cfc81054aa76e133eab1033560052727cab5

Last test of basis   184246  2024-01-03 16:12:35 Z    0 days
Testing same since   184251  2024-01-04 10:14:25 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Hou, Wenxing <wenxing.hou@intel.com>
  Wenxing Hou <wenxing.hou@intel.com>

jobs:
 build-amd64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-amd64-amd64-xl-qemuu-ovmf-amd64                         pass    
 test-amd64-i386-xl-qemuu-ovmf-amd64                          pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Pushing revision :

To xenbits.xen.org:/home/xen/git/osstest/ovmf.git
   16c8cfc810..e449451770  e449451770193c8eb36e4dc3a770c8ee353183aa -> xen-tested-master


From xen-devel-bounces@lists.xenproject.org Thu Jan 04 12:22:19 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 04 Jan 2024 12:22:19 +0000
Received: from list by lists.xenproject.org with outflank-mailman.661751.1031441 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLMjr-0001YP-C3; Thu, 04 Jan 2024 12:22:19 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 661751.1031441; Thu, 04 Jan 2024 12:22:19 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLMjr-0001YI-9Q; Thu, 04 Jan 2024 12:22:19 +0000
Received: by outflank-mailman (input) for mailman id 661751;
 Thu, 04 Jan 2024 12:22:18 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=BdYS=IO=suse.cz=jack@srs-se1.protection.inumbo.net>)
 id 1rLMjq-0001Wl-3H
 for xen-devel@lists.xenproject.org; Thu, 04 Jan 2024 12:22:18 +0000
Received: from smtp-out1.suse.de (smtp-out1.suse.de [195.135.223.130])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id e554c727-aafb-11ee-9b0f-b553b5be7939;
 Thu, 04 Jan 2024 13:22:15 +0100 (CET)
Received: from imap1.dmz-prg2.suse.org (imap1.dmz-prg2.suse.org
 [IPv6:2a07:de40:b281:104:10:150:64:97])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
 (No client certificate requested)
 by smtp-out1.suse.de (Postfix) with ESMTPS id C3FE921D3A;
 Thu,  4 Jan 2024 12:22:14 +0000 (UTC)
Received: from imap1.dmz-prg2.suse.org (localhost [127.0.0.1])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
 (No client certificate requested)
 by imap1.dmz-prg2.suse.org (Postfix) with ESMTPS id A408A137E8;
 Thu,  4 Jan 2024 12:22:14 +0000 (UTC)
Received: from dovecot-director2.suse.de ([2a07:de40:b281:106:10:150:64:167])
 by imap1.dmz-prg2.suse.org with ESMTPSA id aIvDJ/ailmWuFQAAD6G6ig
 (envelope-from <jack@suse.cz>); Thu, 04 Jan 2024 12:22:14 +0000
Received: by quack3.suse.cz (Postfix, from userid 1000)
 id 12451A07EF; Thu,  4 Jan 2024 13:22:14 +0100 (CET)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: e554c727-aafb-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.cz; s=susede2_rsa;
	t=1704370935; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:content-type:content-type:
	 in-reply-to:in-reply-to:references:references;
	bh=dEOhbl6BxUdU6y2PPLv5OY3ZqGBD0PFejfclreExChI=;
	b=XFc8VLBsnl9aL7k3OjwpBjEyurAPHn/wozw7huEJg8Kh1XtexFXGnCOFrF5cdJObzIoVOB
	WSl0qwfGcHDQRAYaR70hDrxP5dEBoB1H4OgNdM9BCSFoyD0dNvFgWPJz8qJrVSt4tKq5qM
	SM0EzBf8FjQO8tP69JsU/iZJsUbAZBg=
DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.cz;
	s=susede2_ed25519; t=1704370935;
	h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:content-type:content-type:
	 in-reply-to:in-reply-to:references:references;
	bh=dEOhbl6BxUdU6y2PPLv5OY3ZqGBD0PFejfclreExChI=;
	b=BRLIxIrqPa8P6c1xZvwUjFY/XF/4q/Hh7Fr9qUPo3HG8bI8kuWp+Geq4NwDCe18M+n1X29
	u6rW+t5czthqMXCw==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.cz; s=susede2_rsa;
	t=1704370934; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:content-type:content-type:
	 in-reply-to:in-reply-to:references:references;
	bh=dEOhbl6BxUdU6y2PPLv5OY3ZqGBD0PFejfclreExChI=;
	b=dWaipx2c9mtfXsouDbDbhmlJanWKJIihT+c3mI9H4+BEJ9hmUZtaN5Uu4ae2qTdtLH7xKW
	DDYet+i2/F2cAa+agkhhbr3Cv4olBkJ/pv8A4qgM43c2v3EY3PHpUBczoq93IpuUDz4twc
	YFhcZIKVsPkTvaHSTOYEQ6iZivXOeek=
DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.cz;
	s=susede2_ed25519; t=1704370934;
	h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:content-type:content-type:
	 in-reply-to:in-reply-to:references:references;
	bh=dEOhbl6BxUdU6y2PPLv5OY3ZqGBD0PFejfclreExChI=;
	b=VFhD00b5yP8kUic6tuTXvk6P7y+b439KNlXOG1em78AjaLBeb4nyWpSfko2ONapIBWJ8nM
	q4ULVr0ImRgl9xDA==
Date: Thu, 4 Jan 2024 13:22:14 +0100
From: Jan Kara <jack@suse.cz>
To: Yu Kuai <yukuai1@huaweicloud.com>
Cc: axboe@kernel.dk, roger.pau@citrix.com, colyli@suse.de,
	kent.overstreet@gmail.com, joern@lazybastard.org,
	miquel.raynal@bootlin.com, richard@nod.at, vigneshr@ti.com,
	sth@linux.ibm.com, hoeppner@linux.ibm.com, hca@linux.ibm.com,
	gor@linux.ibm.com, agordeev@linux.ibm.com, jejb@linux.ibm.com,
	martin.petersen@oracle.com, clm@fb.com, josef@toxicpanda.com,
	dsterba@suse.com, viro@zeniv.linux.org.uk, brauner@kernel.org,
	nico@fluxnic.net, xiang@kernel.org, chao@kernel.org, tytso@mit.edu,
	adilger.kernel@dilger.ca, jack@suse.com, konishi.ryusuke@gmail.com,
	willy@infradead.org, akpm@linux-foundation.org, hare@suse.de,
	p.raghav@samsung.com, linux-block@vger.kernel.org,
	linux-kernel@vger.kernel.org, xen-devel@lists.xenproject.org,
	linux-bcache@vger.kernel.org, linux-mtd@lists.infradead.org,
	linux-s390@vger.kernel.org, linux-scsi@vger.kernel.org,
	linux-bcachefs@vger.kernel.org, linux-btrfs@vger.kernel.org,
	linux-fsdevel@vger.kernel.org, linux-erofs@lists.ozlabs.org,
	linux-ext4@vger.kernel.org, linux-nilfs@vger.kernel.org,
	yukuai3@huawei.com, yi.zhang@huawei.com, yangerkun@huawei.com
Subject: Re: [PATCH RFC v3 for-6.8/block 14/17] buffer: add a new helper to
 read sb block
Message-ID: <20240104122214.jndsqygnmljxmj5d@quack3>
References: <20231221085712.1766333-1-yukuai1@huaweicloud.com>
 <20231221085853.1770062-1-yukuai1@huaweicloud.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <20231221085853.1770062-1-yukuai1@huaweicloud.com>
X-Spam-Level: 
X-Rspamd-Server: rspamd1.dmz-prg2.suse.org
X-Spam-Level: 
X-Spam-Flag: NO
X-Spamd-Result: default: False [-1.31 / 50.00];
	 RCVD_VIA_SMTP_AUTH(0.00)[];
	 RECEIVED_SPAMHAUS_BLOCKED_OPENRESOLVER(0.00)[2a07:de40:b281:106:10:150:64:167:received];
	 TO_DN_SOME(0.00)[];
	 R_RATELIMIT(0.00)[to_ip_from(RLhr85cyeg3mfw7iggddtjdkgs)];
	 RCVD_COUNT_THREE(0.00)[3];
	 DKIM_TRACE(0.00)[suse.cz:+];
	 MX_GOOD(-0.01)[];
	 FROM_EQ_ENVFROM(0.00)[];
	 MIME_TRACE(0.00)[0:+];
	 BAYES_HAM(-3.00)[99.99%];
	 ARC_NA(0.00)[];
	 R_DKIM_ALLOW(-0.20)[suse.cz:s=susede2_rsa,suse.cz:s=susede2_ed25519];
	 FROM_HAS_DN(0.00)[];
	 FREEMAIL_ENVRCPT(0.00)[gmail.com];
	 TO_MATCH_ENVRCPT_ALL(0.00)[];
	 TAGGED_RCPT(0.00)[];
	 MIME_GOOD(-0.10)[text/plain];
	 DKIM_SIGNED(0.00)[suse.cz:s=susede2_rsa,suse.cz:s=susede2_ed25519];
	 RCPT_COUNT_TWELVE(0.00)[48];
	 DBL_BLOCKED_OPENRESOLVER(0.00)[huawei.com:email,suse.com:email];
	 FUZZY_BLOCKED(0.00)[rspamd.com];
	 MID_RHS_NOT_FQDN(0.50)[];
	 FREEMAIL_CC(0.00)[kernel.dk,citrix.com,suse.de,gmail.com,lazybastard.org,bootlin.com,nod.at,ti.com,linux.ibm.com,oracle.com,fb.com,toxicpanda.com,suse.com,zeniv.linux.org.uk,kernel.org,fluxnic.net,mit.edu,dilger.ca,infradead.org,linux-foundation.org,samsung.com,vger.kernel.org,lists.xenproject.org,lists.infradead.org,lists.ozlabs.org,huawei.com];
	 RCVD_TLS_ALL(0.00)[];
	 SUSPICIOUS_RECIPS(1.50)[];
	 RBL_SPAMHAUS_BLOCKED_OPENRESOLVER(0.00)[2a07:de40:b281:104:10:150:64:97:from]
Authentication-Results: smtp-out1.suse.de;
	dkim=pass header.d=suse.cz header.s=susede2_rsa header.b=dWaipx2c;
	dkim=pass header.d=suse.cz header.s=susede2_ed25519 header.b=VFhD00b5
X-Spam-Score: -1.31
X-Rspamd-Queue-Id: C3FE921D3A

On Thu 21-12-23 16:58:53, Yu Kuai wrote:
> From: Yu Kuai <yukuai3@huawei.com>
> 
> Unlike __bread_gfp(), ext4 has special handing while reading sb block:
> 
> 1) __GFP_NOFAIL is not set, and memory allocation can fail;
> 2) If buffer write failed before, set buffer uptodate and don't read
>    block from disk;
> 3) REQ_META is set for all IO, and REQ_PRIO is set for reading xattr;
> 4) If failed, return error ptr instead of NULL;
> 
> This patch add a new helper __bread_gfp2() that will match above 2 and 3(
> 1 will be used, and 4 will still be encapsulated by ext4), and prepare to
> prevent calling mapping_gfp_constraint() directly on bd_inode->i_mapping
> in ext4.
> 
> Signed-off-by: Yu Kuai <yukuai3@huawei.com>

I'm not enthusiastic about this but I guess it is as good as it gets
without larger cleanups in this area. So feel free to add:

Reviewed-by: Jan Kara <jack@suse.cz>

								Honza

> ---
>  fs/buffer.c                 | 68 ++++++++++++++++++++++++++-----------
>  include/linux/buffer_head.h | 18 +++++++++-
>  2 files changed, 65 insertions(+), 21 deletions(-)
> 
> diff --git a/fs/buffer.c b/fs/buffer.c
> index 967f34b70aa8..188bd36c9fea 100644
> --- a/fs/buffer.c
> +++ b/fs/buffer.c
> @@ -1255,16 +1255,19 @@ void __bforget(struct buffer_head *bh)
>  }
>  EXPORT_SYMBOL(__bforget);
>  
> -static struct buffer_head *__bread_slow(struct buffer_head *bh)
> +static struct buffer_head *__bread_slow(struct buffer_head *bh,
> +					blk_opf_t op_flags,
> +					bool check_write_error)
>  {
>  	lock_buffer(bh);
> -	if (buffer_uptodate(bh)) {
> +	if (buffer_uptodate(bh) ||
> +	    (check_write_error && buffer_uptodate_or_error(bh))) {
>  		unlock_buffer(bh);
>  		return bh;
>  	} else {
>  		get_bh(bh);
>  		bh->b_end_io = end_buffer_read_sync;
> -		submit_bh(REQ_OP_READ, bh);
> +		submit_bh(REQ_OP_READ | op_flags, bh);
>  		wait_on_buffer(bh);
>  		if (buffer_uptodate(bh))
>  			return bh;
> @@ -1445,6 +1448,31 @@ void __breadahead(struct block_device *bdev, sector_t block, unsigned size)
>  }
>  EXPORT_SYMBOL(__breadahead);
>  
> +static struct buffer_head *
> +bread_gfp(struct block_device *bdev, sector_t block, unsigned int size,
> +	  blk_opf_t op_flags, gfp_t gfp, bool check_write_error)
> +{
> +	struct buffer_head *bh;
> +
> +	gfp |= mapping_gfp_constraint(bdev->bd_inode->i_mapping, ~__GFP_FS);
> +
> +	/*
> +	 * Prefer looping in the allocator rather than here, at least that
> +	 * code knows what it's doing.
> +	 */
> +	gfp |= __GFP_NOFAIL;
> +
> +	bh = bdev_getblk(bdev, block, size, gfp);
> +	if (unlikely(!bh))
> +		return NULL;
> +
> +	if (buffer_uptodate(bh) ||
> +	    (check_write_error && buffer_uptodate_or_error(bh)))
> +		return bh;
> +
> +	return __bread_slow(bh, op_flags, check_write_error);
> +}
> +
>  /**
>   *  __bread_gfp() - reads a specified block and returns the bh
>   *  @bdev: the block_device to read from
> @@ -1458,27 +1486,27 @@ EXPORT_SYMBOL(__breadahead);
>   *  It returns NULL if the block was unreadable.
>   */
>  struct buffer_head *
> -__bread_gfp(struct block_device *bdev, sector_t block,
> -		   unsigned size, gfp_t gfp)
> +__bread_gfp(struct block_device *bdev, sector_t block, unsigned int size,
> +	    gfp_t gfp)
>  {
> -	struct buffer_head *bh;
> -
> -	gfp |= mapping_gfp_constraint(bdev->bd_inode->i_mapping, ~__GFP_FS);
> -
> -	/*
> -	 * Prefer looping in the allocator rather than here, at least that
> -	 * code knows what it's doing.
> -	 */
> -	gfp |= __GFP_NOFAIL;
> -
> -	bh = bdev_getblk(bdev, block, size, gfp);
> -
> -	if (likely(bh) && !buffer_uptodate(bh))
> -		bh = __bread_slow(bh);
> -	return bh;
> +	return bread_gfp(bdev, block, size, 0, gfp, false);
>  }
>  EXPORT_SYMBOL(__bread_gfp);
>  
> +/*
> + * This works like __bread_gfp() except:
> + * 1) If buffer write failed before, set buffer uptodate and don't read
> + * block from disk;
> + * 2) Caller can pass in additional op_flags like REQ_META;
> + */
> +struct buffer_head *
> +__bread_gfp2(struct block_device *bdev, sector_t block, unsigned int size,
> +	     blk_opf_t op_flags, gfp_t gfp)
> +{
> +	return bread_gfp(bdev, block, size, op_flags, gfp, true);
> +}
> +EXPORT_SYMBOL(__bread_gfp2);
> +
>  static void __invalidate_bh_lrus(struct bh_lru *b)
>  {
>  	int i;
> diff --git a/include/linux/buffer_head.h b/include/linux/buffer_head.h
> index 5f23ee599889..751b2744b4ae 100644
> --- a/include/linux/buffer_head.h
> +++ b/include/linux/buffer_head.h
> @@ -171,6 +171,18 @@ static __always_inline int buffer_uptodate(const struct buffer_head *bh)
>  	return test_bit_acquire(BH_Uptodate, &bh->b_state);
>  }
>  
> +static __always_inline int buffer_uptodate_or_error(struct buffer_head *bh)
> +{
> +	/*
> +	 * If the buffer has the write error flag, data was failed to write
> +	 * out in the block. In this case, set buffer uptodate to prevent
> +	 * reading old data.
> +	 */
> +	if (buffer_write_io_error(bh))
> +		set_buffer_uptodate(bh);
> +	return buffer_uptodate(bh);
> +}
> +
>  static inline unsigned long bh_offset(const struct buffer_head *bh)
>  {
>  	return (unsigned long)(bh)->b_data & (page_size(bh->b_page) - 1);
> @@ -231,7 +243,11 @@ void __brelse(struct buffer_head *);
>  void __bforget(struct buffer_head *);
>  void __breadahead(struct block_device *, sector_t block, unsigned int size);
>  struct buffer_head *__bread_gfp(struct block_device *,
> -				sector_t block, unsigned size, gfp_t gfp);
> +				sector_t block, unsigned int size, gfp_t gfp);
> +struct buffer_head *__bread_gfp2(struct block_device *bdev, sector_t block,
> +				 unsigned int size, blk_opf_t op_flags,
> +				 gfp_t gfp);
> +
>  struct buffer_head *alloc_buffer_head(gfp_t gfp_flags);
>  void free_buffer_head(struct buffer_head * bh);
>  void unlock_buffer(struct buffer_head *bh);
> -- 
> 2.39.2
> 
-- 
Jan Kara <jack@suse.com>
SUSE Labs, CR


From xen-devel-bounces@lists.xenproject.org Thu Jan 04 12:22:44 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 04 Jan 2024 12:22:44 +0000
Received: from list by lists.xenproject.org with outflank-mailman.661755.1031452 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLMkG-00029U-Oy; Thu, 04 Jan 2024 12:22:44 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 661755.1031452; Thu, 04 Jan 2024 12:22:44 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLMkG-00029N-Ky; Thu, 04 Jan 2024 12:22:44 +0000
Received: by outflank-mailman (input) for mailman id 661755;
 Thu, 04 Jan 2024 12:22:43 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=riih=IO=huaweicloud.com=yukuai1@srs-se1.protection.inumbo.net>)
 id 1rLMkF-0001Pm-Iz
 for xen-devel@lists.xenproject.org; Thu, 04 Jan 2024 12:22:43 +0000
Received: from dggsgout12.his.huawei.com (unknown [45.249.212.56])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id f3d2e302-aafb-11ee-98ef-6d05b1d4d9a1;
 Thu, 04 Jan 2024 13:22:42 +0100 (CET)
Received: from mail.maildlp.com (unknown [172.19.93.142])
 by dggsgout12.his.huawei.com (SkyGuard) with ESMTP id 4T5QhT54zTz4f3jRG
 for <xen-devel@lists.xenproject.org>; Thu,  4 Jan 2024 20:22:33 +0800 (CST)
Received: from mail02.huawei.com (unknown [10.116.40.112])
 by mail.maildlp.com (Postfix) with ESMTP id 08D561A02FD
 for <xen-devel@lists.xenproject.org>; Thu,  4 Jan 2024 20:22:37 +0800 (CST)
Received: from [10.174.176.73] (unknown [10.174.176.73])
 by APP1 (Coremail) with SMTP id cCh0CgAXZgwKo5ZlregEFg--.33832S3;
 Thu, 04 Jan 2024 20:22:36 +0800 (CST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: f3d2e302-aafb-11ee-98ef-6d05b1d4d9a1
Subject: Re: [PATCH RFC v3 for-6.8/block 04/17] mtd: block2mtd: use bdev apis
To: Jan Kara <jack@suse.cz>, Yu Kuai <yukuai1@huaweicloud.com>
Cc: axboe@kernel.dk, roger.pau@citrix.com, colyli@suse.de,
 kent.overstreet@gmail.com, joern@lazybastard.org, miquel.raynal@bootlin.com,
 richard@nod.at, vigneshr@ti.com, sth@linux.ibm.com, hoeppner@linux.ibm.com,
 hca@linux.ibm.com, gor@linux.ibm.com, agordeev@linux.ibm.com,
 jejb@linux.ibm.com, martin.petersen@oracle.com, clm@fb.com,
 josef@toxicpanda.com, dsterba@suse.com, viro@zeniv.linux.org.uk,
 brauner@kernel.org, nico@fluxnic.net, xiang@kernel.org, chao@kernel.org,
 tytso@mit.edu, adilger.kernel@dilger.ca, jack@suse.com,
 konishi.ryusuke@gmail.com, willy@infradead.org, akpm@linux-foundation.org,
 hare@suse.de, p.raghav@samsung.com, linux-block@vger.kernel.org,
 linux-kernel@vger.kernel.org, xen-devel@lists.xenproject.org,
 linux-bcache@vger.kernel.org, linux-mtd@lists.infradead.org,
 linux-s390@vger.kernel.org, linux-scsi@vger.kernel.org,
 linux-bcachefs@vger.kernel.org, linux-btrfs@vger.kernel.org,
 linux-fsdevel@vger.kernel.org, linux-erofs@lists.ozlabs.org,
 linux-ext4@vger.kernel.org, linux-nilfs@vger.kernel.org,
 yi.zhang@huawei.com, yangerkun@huawei.com, "yukuai (C)" <yukuai3@huawei.com>
References: <20231221085712.1766333-1-yukuai1@huaweicloud.com>
 <20231221085712.1766333-5-yukuai1@huaweicloud.com>
 <20240104112855.uci45hhqaiitmsir@quack3>
From: Yu Kuai <yukuai1@huaweicloud.com>
Message-ID: <b97810e9-c1bc-9198-c0d2-e132dde3e1f6@huaweicloud.com>
Date: Thu, 4 Jan 2024 20:22:34 +0800
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:60.0) Gecko/20100101
 Thunderbird/60.8.0
MIME-Version: 1.0
In-Reply-To: <20240104112855.uci45hhqaiitmsir@quack3>
Content-Type: text/plain; charset=gbk; format=flowed
Content-Transfer-Encoding: 8bit
X-CM-TRANSID:cCh0CgAXZgwKo5ZlregEFg--.33832S3
X-Coremail-Antispam: 1UD129KBjvJXoW7CFWUCFyfWw48WrW7Wr1ftFb_yoW8JFWUpF
	WIk3Z5Ars0ywnrCrs2q3ZrZF1xKasxXayxJ3W3Gw1rAF15WryfKr1fC34kCw4IkF18ArWv
	9F4jyF1ku3Z8KrDanT9S1TB71UUUUUUqnTZGkaVYY2UrUUUUjbIjqfuFe4nvWSU5nxnvy2
	9KBjDU0xBIdaVrnRJUUU9214x267AKxVWrJVCq3wAFc2x0x2IEx4CE42xK8VAvwI8IcIk0
	rVWrJVCq3wAFIxvE14AKwVWUJVWUGwA2ocxC64kIII0Yj41l84x0c7CEw4AK67xGY2AK02
	1l84ACjcxK6xIIjxv20xvE14v26w1j6s0DM28EF7xvwVC0I7IYx2IY6xkF7I0E14v26r4U
	JVWxJr1l84ACjcxK6I8E87Iv67AKxVW0oVCq3wA2z4x0Y4vEx4A2jsIEc7CjxVAFwI0_Gc
	CE3s1le2I262IYc4CY6c8Ij28IcVAaY2xG8wAqx4xG64xvF2IEw4CE5I8CrVC2j2WlYx0E
	2Ix0cI8IcVAFwI0_JrI_JrylYx0Ex4A2jsIE14v26r1j6r4UMcvjeVCFs4IE7xkEbVWUJV
	W8JwACjcxG0xvEwIxGrwACjI8F5VA0II8E6IAqYI8I648v4I1lFIxGxcIEc7CjxVA2Y2ka
	0xkIwI1lc7I2V7IY0VAS07AlzVAYIcxG8wCF04k20xvY0x0EwIxGrwCFx2IqxVCFs4IE7x
	kEbVWUJVW8JwC20s026c02F40E14v26r1j6r18MI8I3I0E7480Y4vE14v26r106r1rMI8E
	67AF67kF1VAFwI0_Wrv_Gr1UMIIYrxkI7VAKI48JMIIF0xvE2Ix0cI8IcVAFwI0_Jr0_JF
	4lIxAIcVC0I7IYx2IY6xkF7I0E14v26F4j6r4UJwCI42IY6xAIw20EY4v20xvaj40_Zr0_
	Wr1UMIIF0xvEx4A2jsIE14v26r1j6r4UMIIF0xvEx4A2jsIEc7CjxVAFwI0_Gr0_Gr1UYx
	BIdaVFxhVjvjDU0xZFpf9x0JUCXdbUUUUU=
X-CM-SenderInfo: 51xn3trlr6x35dzhxuhorxvhhfrp/

Hi,

 2024/01/04 19:28, Jan Kara д:
> On Thu 21-12-23 16:56:59, Yu Kuai wrote:
>> From: Yu Kuai <yukuai3@huawei.com>
>>
>> On the one hand covert to use folio while reading bdev inode, on the
>> other hand prevent to access bd_inode directly.
>>
>> Signed-off-by: Yu Kuai <yukuai3@huawei.com>
> ...
>> +		for (p = folio_address(folio); p < max; p++)
>>   			if (*p != -1UL) {
>> -				lock_page(page);
>> -				memset(page_address(page), 0xff, PAGE_SIZE);
>> -				set_page_dirty(page);
>> -				unlock_page(page);
>> -				balance_dirty_pages_ratelimited(mapping);
>> +				folio_lock(folio);
>> +				memset(folio_address(folio), 0xff,
>> +				       folio_size(folio));
>> +				folio_mark_dirty(folio);
>> +				folio_unlock(folio);
>> +				bdev_balance_dirty_pages_ratelimited(bdev);
> 
> Rather then creating this bdev_balance_dirty_pages_ratelimited() just for
> MTD perhaps we can have here (and in other functions):
> 
> 				...
> 				mapping = folio_mapping(folio);
> 				folio_unlock(folio);
> 				if (mapping)
> 					balance_dirty_pages_ratelimited(mapping);
> 
> What do you think? Because when we are working with the folios it is rather
> natural to use their mapping for dirty balancing?

I think this is a great idea! And bdev_balance_dirty_pages_ratelimited()
can be removed as well.

Thanks,
Kuai

> 
> 								Honza
> 



From xen-devel-bounces@lists.xenproject.org Thu Jan 04 12:33:05 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 04 Jan 2024 12:33:05 +0000
Received: from list by lists.xenproject.org with outflank-mailman.661765.1031462 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLMu8-0005go-MR; Thu, 04 Jan 2024 12:32:56 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 661765.1031462; Thu, 04 Jan 2024 12:32:56 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLMu8-0005gh-Ie; Thu, 04 Jan 2024 12:32:56 +0000
Received: by outflank-mailman (input) for mailman id 661765;
 Thu, 04 Jan 2024 12:32:54 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=riih=IO=huaweicloud.com=yukuai1@srs-se1.protection.inumbo.net>)
 id 1rLMu6-0005gb-UI
 for xen-devel@lists.xenproject.org; Thu, 04 Jan 2024 12:32:54 +0000
Received: from dggsgout11.his.huawei.com (unknown [45.249.212.51])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 5f3e8da5-aafd-11ee-98ef-6d05b1d4d9a1;
 Thu, 04 Jan 2024 13:32:51 +0100 (CET)
Received: from mail.maildlp.com (unknown [172.19.93.142])
 by dggsgout11.his.huawei.com (SkyGuard) with ESMTP id 4T5QwD6lfnz4f3jJB
 for <xen-devel@lists.xenproject.org>; Thu,  4 Jan 2024 20:32:44 +0800 (CST)
Received: from mail02.huawei.com (unknown [10.116.40.112])
 by mail.maildlp.com (Postfix) with ESMTP id B4D691A0843
 for <xen-devel@lists.xenproject.org>; Thu,  4 Jan 2024 20:32:46 +0800 (CST)
Received: from [10.174.176.73] (unknown [10.174.176.73])
 by APP1 (Coremail) with SMTP id cCh0CgCnqxFrpZZlWpgFFg--.9161S3;
 Thu, 04 Jan 2024 20:32:46 +0800 (CST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 5f3e8da5-aafd-11ee-98ef-6d05b1d4d9a1
Subject: Re: [PATCH RFC v3 for-6.8/block 11/17] erofs: use bdev api
To: Jan Kara <jack@suse.cz>, Yu Kuai <yukuai1@huaweicloud.com>
Cc: axboe@kernel.dk, roger.pau@citrix.com, colyli@suse.de,
 kent.overstreet@gmail.com, joern@lazybastard.org, miquel.raynal@bootlin.com,
 richard@nod.at, vigneshr@ti.com, sth@linux.ibm.com, hoeppner@linux.ibm.com,
 hca@linux.ibm.com, gor@linux.ibm.com, agordeev@linux.ibm.com,
 jejb@linux.ibm.com, martin.petersen@oracle.com, clm@fb.com,
 josef@toxicpanda.com, dsterba@suse.com, viro@zeniv.linux.org.uk,
 brauner@kernel.org, nico@fluxnic.net, xiang@kernel.org, chao@kernel.org,
 tytso@mit.edu, adilger.kernel@dilger.ca, jack@suse.com,
 konishi.ryusuke@gmail.com, willy@infradead.org, akpm@linux-foundation.org,
 hare@suse.de, p.raghav@samsung.com, linux-block@vger.kernel.org,
 linux-kernel@vger.kernel.org, xen-devel@lists.xenproject.org,
 linux-bcache@vger.kernel.org, linux-mtd@lists.infradead.org,
 linux-s390@vger.kernel.org, linux-scsi@vger.kernel.org,
 linux-bcachefs@vger.kernel.org, linux-btrfs@vger.kernel.org,
 linux-fsdevel@vger.kernel.org, linux-erofs@lists.ozlabs.org,
 linux-ext4@vger.kernel.org, linux-nilfs@vger.kernel.org,
 yi.zhang@huawei.com, yangerkun@huawei.com, "yukuai (C)" <yukuai3@huawei.com>
References: <20231221085712.1766333-1-yukuai1@huaweicloud.com>
 <20231221085826.1768395-1-yukuai1@huaweicloud.com>
 <20240104120207.ig7tfc3mgckwkp2n@quack3>
From: Yu Kuai <yukuai1@huaweicloud.com>
Message-ID: <7f868579-f993-aaa1-b7d7-eccbe0b0173c@huaweicloud.com>
Date: Thu, 4 Jan 2024 20:32:43 +0800
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:60.0) Gecko/20100101
 Thunderbird/60.8.0
MIME-Version: 1.0
In-Reply-To: <20240104120207.ig7tfc3mgckwkp2n@quack3>
Content-Type: text/plain; charset=gbk; format=flowed
Content-Transfer-Encoding: 8bit
X-CM-TRANSID:cCh0CgCnqxFrpZZlWpgFFg--.9161S3
X-Coremail-Antispam: 1UD129KBjvJXoWxJFy8ury3GFW8AF18AFy3twb_yoW5CFW7pF
	y5CF1rGrWrXr9I9w1Igr1jvF4rta97tr48C3yxJw1FvayjqrySgFy0ywnxGF4jkr4vkr4I
	qF12vryxuw4UKrDanT9S1TB71UUUUUUqnTZGkaVYY2UrUUUUjbIjqfuFe4nvWSU5nxnvy2
	9KBjDU0xBIdaVrnRJUUU9q14x267AKxVWrJVCq3wAFc2x0x2IEx4CE42xK8VAvwI8IcIk0
	rVWrJVCq3wAFIxvE14AKwVWUJVWUGwA2ocxC64kIII0Yj41l84x0c7CEw4AK67xGY2AK02
	1l84ACjcxK6xIIjxv20xvE14v26w1j6s0DM28EF7xvwVC0I7IYx2IY6xkF7I0E14v26r4U
	JVWxJr1l84ACjcxK6I8E87Iv67AKxVW0oVCq3wA2z4x0Y4vEx4A2jsIEc7CjxVAFwI0_Gc
	CE3s1le2I262IYc4CY6c8Ij28IcVAaY2xG8wAqx4xG64xvF2IEw4CE5I8CrVC2j2WlYx0E
	2Ix0cI8IcVAFwI0_Jrv_JF1lYx0Ex4A2jsIE14v26r1j6r4UMcvjeVCFs4IE7xkEbVWUJV
	W8JwACjcxG0xvEwIxGrwACjI8F5VA0II8E6IAqYI8I648v4I1lFIxGxcIEc7CjxVA2Y2ka
	0xkIwI1lc7I2V7IY0VAS07AlzVAYIcxG8wCF04k20xvY0x0EwIxGrwCFx2IqxVCFs4IE7x
	kEbVWUJVW8JwC20s026c02F40E14v26r1j6r18MI8I3I0E7480Y4vE14v26r106r1rMI8E
	67AF67kF1VAFwI0_Wrv_Gr1UMIIYrxkI7VAKI48JMIIF0xvE2Ix0cI8IcVAFwI0_Jr0_JF
	4lIxAIcVC0I7IYx2IY6xkF7I0E14v26r4UJVWxJr1lIxAIcVCF04k26cxKx2IYs7xG6rWU
	JVWrZr1UMIIF0xvEx4A2jsIE14v26r1j6r4UMIIF0xvEx4A2jsIEc7CjxVAFwI0_Gr1j6F
	4UJbIYCTnIWIevJa73UjIFyTuYvjfUoL0eDUUUU
X-CM-SenderInfo: 51xn3trlr6x35dzhxuhorxvhhfrp/

Hi, Jan!

 2024/01/04 20:02, Jan Kara д:
> On Thu 21-12-23 16:58:26, Yu Kuai wrote:
>> From: Yu Kuai <yukuai3@huawei.com>
>>
>> Avoid to access bd_inode directly, prepare to remove bd_inode from
>> block_device.
>>
>> Signed-off-by: Yu Kuai <yukuai3@huawei.com>
> 
> I'm not erofs maintainer but IMO this is quite ugly and grows erofs_buf
> unnecessarily. I'd rather store 'sb' pointer in erofs_buf and then do the
> right thing in erofs_bread() which is the only place that seems to care
> about the erofs_is_fscache_mode() distinction... Also blkszbits is then
> trivially sb->s_blocksize_bits so it would all seem much more
> straightforward.

Thanks for your suggestion, I'll follow this unless Gao Xiang has other
suggestions.

Kuai
> 
> 								Honza
> 
>> ---
>>   fs/erofs/data.c     | 18 ++++++++++++------
>>   fs/erofs/internal.h |  2 ++
>>   2 files changed, 14 insertions(+), 6 deletions(-)
>>
>> diff --git a/fs/erofs/data.c b/fs/erofs/data.c
>> index c98aeda8abb2..bbe2fe199bf3 100644
>> --- a/fs/erofs/data.c
>> +++ b/fs/erofs/data.c
>> @@ -32,8 +32,8 @@ void erofs_put_metabuf(struct erofs_buf *buf)
>>   void *erofs_bread(struct erofs_buf *buf, erofs_blk_t blkaddr,
>>   		  enum erofs_kmap_type type)
>>   {
>> -	struct inode *inode = buf->inode;
>> -	erofs_off_t offset = (erofs_off_t)blkaddr << inode->i_blkbits;
>> +	u8 blkszbits = buf->inode ? buf->inode->i_blkbits : buf->blkszbits;
>> +	erofs_off_t offset = (erofs_off_t)blkaddr << blkszbits;
>>   	pgoff_t index = offset >> PAGE_SHIFT;
>>   	struct page *page = buf->page;
>>   	struct folio *folio;
>> @@ -43,7 +43,9 @@ void *erofs_bread(struct erofs_buf *buf, erofs_blk_t blkaddr,
>>   		erofs_put_metabuf(buf);
>>   
>>   		nofs_flag = memalloc_nofs_save();
>> -		folio = read_cache_folio(inode->i_mapping, index, NULL, NULL);
>> +		folio = buf->inode ?
>> +			read_mapping_folio(buf->inode->i_mapping, index, NULL) :
>> +			bdev_read_folio(buf->bdev, offset);
>>   		memalloc_nofs_restore(nofs_flag);
>>   		if (IS_ERR(folio))
>>   			return folio;
>> @@ -67,10 +69,14 @@ void *erofs_bread(struct erofs_buf *buf, erofs_blk_t blkaddr,
>>   
>>   void erofs_init_metabuf(struct erofs_buf *buf, struct super_block *sb)
>>   {
>> -	if (erofs_is_fscache_mode(sb))
>> +	if (erofs_is_fscache_mode(sb)) {
>>   		buf->inode = EROFS_SB(sb)->s_fscache->inode;
>> -	else
>> -		buf->inode = sb->s_bdev->bd_inode;
>> +		buf->bdev = NULL;
>> +	} else {
>> +		buf->inode = NULL;
>> +		buf->bdev = sb->s_bdev;
>> +		buf->blkszbits = EROFS_SB(sb)->blkszbits;
>> +	}
>>   }
>>   
>>   void *erofs_read_metabuf(struct erofs_buf *buf, struct super_block *sb,
>> diff --git a/fs/erofs/internal.h b/fs/erofs/internal.h
>> index b0409badb017..c9206351b485 100644
>> --- a/fs/erofs/internal.h
>> +++ b/fs/erofs/internal.h
>> @@ -224,8 +224,10 @@ enum erofs_kmap_type {
>>   
>>   struct erofs_buf {
>>   	struct inode *inode;
>> +	struct block_device *bdev;
>>   	struct page *page;
>>   	void *base;
>> +	u8 blkszbits;
>>   	enum erofs_kmap_type kmap_type;
>>   };
>>   #define __EROFS_BUF_INITIALIZER	((struct erofs_buf){ .page = NULL })
>> -- 
>> 2.39.2
>>



From xen-devel-bounces@lists.xenproject.org Thu Jan 04 12:52:26 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 04 Jan 2024 12:52:26 +0000
Received: from list by lists.xenproject.org with outflank-mailman.661771.1031471 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLNCu-0006AI-6f; Thu, 04 Jan 2024 12:52:20 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 661771.1031471; Thu, 04 Jan 2024 12:52:20 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLNCu-0006AB-3z; Thu, 04 Jan 2024 12:52:20 +0000
Received: by outflank-mailman (input) for mailman id 661771;
 Thu, 04 Jan 2024 12:52:18 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=0by4=IO=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rLNCs-0006A5-U0
 for xen-devel@lists.xenproject.org; Thu, 04 Jan 2024 12:52:18 +0000
Received: from mail-lj1-x22a.google.com (mail-lj1-x22a.google.com
 [2a00:1450:4864:20::22a])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 1796cee2-ab00-11ee-98ef-6d05b1d4d9a1;
 Thu, 04 Jan 2024 13:52:18 +0100 (CET)
Received: by mail-lj1-x22a.google.com with SMTP id
 38308e7fff4ca-2ccbf8cbf3aso6528171fa.3
 for <xen-devel@lists.xenproject.org>; Thu, 04 Jan 2024 04:52:17 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 a2-20020a0566380b0200b004691fd9260esm7910872jab.24.2024.01.04.04.52.15
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 04 Jan 2024 04:52:17 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 1796cee2-ab00-11ee-98ef-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1704372737; x=1704977537; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:from:to:cc:subject:date:message-id:reply-to;
        bh=8MyVd5X51fE5PzwCc3SGP0/RA3NamsyLJgqWLQQGDV8=;
        b=Tm/G7PjrQQd+gSUuBBIve/xVLP7Qkh+uuspR/LmvgNVIwC9htXYBjCCXuSGPMG01AX
         Oxh6GlUbpEMwkLymUC+AUsoM3TFSw5i+z7ivicosXzZtEI/XNLbTR+5j4KB1J6tPUQcB
         JXIJvylj3qze8WZa4+rIsgut3ogzqVRLzRSaae/VBhVsslqj5RCEDr3Xs4OtVkyry3I8
         RxzHbgBjgB4+6/S2SbEd2srRUlaKuX14Xj5eU+cMGD1LrTly6YXidRSLVfPB35fBveOf
         IV/3DBJCBEY/bWP9Wtyxf08qSckoa0x7x+VPgFnigFzcCabtiTPul06UQ/Zzw+SaDSGS
         REpA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704372737; x=1704977537;
        h=content-transfer-encoding:in-reply-to:autocrypt:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to;
        bh=8MyVd5X51fE5PzwCc3SGP0/RA3NamsyLJgqWLQQGDV8=;
        b=qI3QGnQ8VuonWfp6Sm+ddudivGQo06Kp1+FdpK1jiCgX2f2q906EQxHhyJJWvd/eit
         TpAXZUXpxb3BxoTWtqsTQhsUZoCRD/Xm1aJEU6a8rKDDFw1NQGZ4JxtoNR1QYg5Q/Y3i
         gq6VwIt53dNc+LKnsT48Sc6Fd9y7ewa6fwBVd/xt10lsIxsrs8J/9k6toP4G2S+bdnRQ
         Ml0U2ClYLRjryjQAW7mEA0MjtzCodxUIepp4wO+QGtsu5jXfk3k82bdi7XX7n/ktoaCt
         Qirxj9DRPU4skANJj34gidJcAI1cdtlslqxPXhE/8kmwJZ9pGq6rMrY6V64CPDK8HdTO
         hdaQ==
X-Gm-Message-State: AOJu0YzmdnsO/XoUgQCpyc83pcZu6sShX0cyA85NkjLyIM8FBNqwtq7x
	fR4L4zGiAsl/YoIe6EJHGSwbgJUNgiPc
X-Google-Smtp-Source: AGHT+IHgL/1DeEp+dg9yR0HT1XtIwrtagLTpUe7TIySmidXEkwWCU5GS4hagxMCQKc9xbePe+DGYbw==
X-Received: by 2002:a2e:9b8c:0:b0:2cc:effb:cbb2 with SMTP id z12-20020a2e9b8c000000b002cceffbcbb2mr325926lji.52.1704372737575;
        Thu, 04 Jan 2024 04:52:17 -0800 (PST)
Message-ID: <87f4c67a-3902-499a-b4e3-c1429a0d9167@suse.com>
Date: Thu, 4 Jan 2024 13:52:13 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: Xen 4.19 release schedule proposal
To: Oleksii <oleksii.kurochko@gmail.com>
Cc: community.manager@xenproject.org, julien@xen.org, sstabellini@kernel.org,
 Bertrand.Marquis@arm.com, andrew.cooper3@citrix.com, roger.pau@citrix.com,
 anthony.perard@citrix.com, george.dunlap@cloud.com, jgross@suse.com,
 Wei.Chen@arm.com, xen-devel@lists.xenproject.org
References: <cover.1703072575.git.oleksii.kurochko@gmail.com>
 <08bca9a4158a190a0a953e5bc071a512cfe5f0f8.1703072575.git.oleksii.kurochko@gmail.com>
 <341249d1-217f-4ad2-9455-b1aded4b9b56@xen.org>
 <03cf5145-2124-4150-9f20-904f08bcabda@suse.com>
 <9f8c4fe0a87742444b52a42aa5924cf046ee18b0.camel@gmail.com>
 <67bf2be7-53f4-40d0-a856-8ae631a054b0@suse.com>
 <955e9b02-20bd-4279-9f60-bb757cdf1a03@xen.org>
 <0f729b61-b839-48f6-89ae-b5570b1eae0b@xen.org>
 <26152790b0b8c3330d9cfc3c0462a1c072d6d598.camel@gmail.com>
Content-Language: en-US
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <26152790b0b8c3330d9cfc3c0462a1c072d6d598.camel@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 02.01.2024 17:59, Oleksii wrote:
> I'd like to propose the release schedule for Xen 4.19.
> 
> Based on the previous release schedules [1] and [2], it seems the next
> release date should be on Wednesday, July 10, 2024:
> 
> ** Proposed option: Wed Jul 10, 2024 **
> (+9 months from Xen 4.18 release)

Hmm, aren't we intending to be on a 8 month cadence?

Jan


From xen-devel-bounces@lists.xenproject.org Thu Jan 04 12:56:27 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 04 Jan 2024 12:56:27 +0000
Received: from list by lists.xenproject.org with outflank-mailman.661779.1031482 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLNGr-0006ly-Nt; Thu, 04 Jan 2024 12:56:25 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 661779.1031482; Thu, 04 Jan 2024 12:56:25 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLNGr-0006lr-K6; Thu, 04 Jan 2024 12:56:25 +0000
Received: by outflank-mailman (input) for mailman id 661779;
 Thu, 04 Jan 2024 12:56:24 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rLNGq-0006lh-Hi; Thu, 04 Jan 2024 12:56:24 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rLNGq-00029l-0J; Thu, 04 Jan 2024 12:56:24 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rLNGp-0000xt-Ic; Thu, 04 Jan 2024 12:56:23 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rLNGp-0006j9-IB; Thu, 04 Jan 2024 12:56:23 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=shwo8QsE2vzrUNHlDPop28JqrXF17XWjL9cbCm/uPg8=; b=HeRLHofWj+fkv4S6umGS4Jculw
	uOVupHf4iQwt2Q55aOoNUhZUK+uqp02OYPnXfVvCD3jrreQYY5I0zhkyZJ5OrJJHwq6Gk8KVEuGkP
	h7KMZF6FZRN9S/iZy9Ks699CtN1uiwiSvb08B313v3Czj7uJDvUkoogNeGpOOUltxAYY=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184250-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [libvirt test] 184250: tolerable all pass - PUSHED
X-Osstest-Failures:
    libvirt:test-armhf-armhf-libvirt:saverestore-support-check:fail:nonblocking
    libvirt:test-armhf-armhf-libvirt-qcow2:saverestore-support-check:fail:nonblocking
    libvirt:test-armhf-armhf-libvirt-raw:saverestore-support-check:fail:nonblocking
    libvirt:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    libvirt:test-amd64-amd64-libvirt-xsm:migrate-support-check:fail:nonblocking
    libvirt:test-amd64-i386-libvirt-xsm:migrate-support-check:fail:nonblocking
    libvirt:test-amd64-i386-libvirt:migrate-support-check:fail:nonblocking
    libvirt:test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    libvirt:test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    libvirt:test-arm64-arm64-libvirt:migrate-support-check:fail:nonblocking
    libvirt:test-arm64-arm64-libvirt:saverestore-support-check:fail:nonblocking
    libvirt:test-arm64-arm64-libvirt-xsm:migrate-support-check:fail:nonblocking
    libvirt:test-arm64-arm64-libvirt-xsm:saverestore-support-check:fail:nonblocking
    libvirt:test-amd64-amd64-libvirt-vhd:migrate-support-check:fail:nonblocking
    libvirt:test-armhf-armhf-libvirt:migrate-support-check:fail:nonblocking
    libvirt:test-amd64-i386-libvirt-raw:migrate-support-check:fail:nonblocking
    libvirt:test-arm64-arm64-libvirt-qcow2:migrate-support-check:fail:nonblocking
    libvirt:test-arm64-arm64-libvirt-qcow2:saverestore-support-check:fail:nonblocking
    libvirt:test-arm64-arm64-libvirt-raw:migrate-support-check:fail:nonblocking
    libvirt:test-arm64-arm64-libvirt-raw:saverestore-support-check:fail:nonblocking
    libvirt:test-armhf-armhf-libvirt-qcow2:migrate-support-check:fail:nonblocking
    libvirt:test-armhf-armhf-libvirt-raw:migrate-support-check:fail:nonblocking
X-Osstest-Versions-This:
    libvirt=dd2f36d66ecff58a309ee5629b9a263cb22f3016
X-Osstest-Versions-That:
    libvirt=b72d7c46e54109c5df98977d30d7c78dac79514d
From: osstest service owner <osstest-admin@xenproject.org>
Date: Thu, 04 Jan 2024 12:56:23 +0000

flight 184250 libvirt real [real]
http://logs.test-lab.xenproject.org/osstest/logs/184250/

Failures :-/ but no regressions.

Tests which did not succeed, but are not blocking:
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 184208
 test-armhf-armhf-libvirt-qcow2 15 saverestore-support-check   fail like 184208
 test-armhf-armhf-libvirt-raw 15 saverestore-support-check    fail  like 184208
 test-amd64-amd64-libvirt     15 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-amd64-i386-libvirt-xsm  15 migrate-support-check        fail   never pass
 test-amd64-i386-libvirt      15 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-arm64-arm64-libvirt     15 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt     16 saverestore-support-check    fail   never pass
 test-arm64-arm64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-xsm 16 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-vhd 14 migrate-support-check        fail   never pass
 test-armhf-armhf-libvirt     15 migrate-support-check        fail   never pass
 test-amd64-i386-libvirt-raw  14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-qcow2 14 migrate-support-check        fail never pass
 test-arm64-arm64-libvirt-qcow2 15 saverestore-support-check    fail never pass
 test-arm64-arm64-libvirt-raw 14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 15 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-qcow2 14 migrate-support-check        fail never pass
 test-armhf-armhf-libvirt-raw 14 migrate-support-check        fail   never pass

version targeted for testing:
 libvirt              dd2f36d66ecff58a309ee5629b9a263cb22f3016
baseline version:
 libvirt              b72d7c46e54109c5df98977d30d7c78dac79514d

Last test of basis   184208  2023-12-22 04:20:26 Z   13 days
Testing same since   184250  2024-01-04 04:20:35 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  dengpengcheng <dengpc12@chinatelecom.cn>
  Foster Snowhill <2486761-ForstPenguin@users.noreply.gitlab.com>
  Guoyi Tu <tugy@chinatelecom.cn>
  Göran Uddeborg <goeran@uddeborg.se>
  Jonathan Wright <jonathan@almalinux.org>
  Martin Kletzander <mkletzan@redhat.com>
  Michal Privoznik <mprivozn@redhat.com>
  Peter Krempa <pkrempa@redhat.com>
  Temuri Doghonadze <temuri.doghonadze@gmail.com>
  Weblate <noreply-mt-weblate@weblate.org>

jobs:
 build-amd64-xsm                                              pass    
 build-arm64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64                                                  pass    
 build-arm64                                                  pass    
 build-armhf                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-arm64-libvirt                                          pass    
 build-armhf-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-pvops                                            pass    
 build-arm64-pvops                                            pass    
 build-armhf-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm           pass    
 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm            pass    
 test-amd64-amd64-libvirt-xsm                                 pass    
 test-arm64-arm64-libvirt-xsm                                 pass    
 test-amd64-i386-libvirt-xsm                                  pass    
 test-amd64-amd64-libvirt                                     pass    
 test-arm64-arm64-libvirt                                     pass    
 test-armhf-armhf-libvirt                                     pass    
 test-amd64-i386-libvirt                                      pass    
 test-amd64-amd64-libvirt-pair                                pass    
 test-amd64-i386-libvirt-pair                                 pass    
 test-arm64-arm64-libvirt-qcow2                               pass    
 test-armhf-armhf-libvirt-qcow2                               pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-armhf-armhf-libvirt-raw                                 pass    
 test-amd64-i386-libvirt-raw                                  pass    
 test-amd64-amd64-libvirt-vhd                                 pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Pushing revision :

To xenbits.xen.org:/home/xen/git/libvirt.git
   b72d7c46e5..dd2f36d66e  dd2f36d66ecff58a309ee5629b9a263cb22f3016 -> xen-tested-master


From xen-devel-bounces@lists.xenproject.org Thu Jan 04 13:02:52 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 04 Jan 2024 13:02:52 +0000
Received: from list by lists.xenproject.org with outflank-mailman.661787.1031492 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLNN0-0008W3-H1; Thu, 04 Jan 2024 13:02:46 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 661787.1031492; Thu, 04 Jan 2024 13:02:46 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLNN0-0008Vw-Dq; Thu, 04 Jan 2024 13:02:46 +0000
Received: by outflank-mailman (input) for mailman id 661787;
 Thu, 04 Jan 2024 13:02:45 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=bqCR=IO=invisiblethingslab.com=marmarek@srs-se1.protection.inumbo.net>)
 id 1rLNMz-0008Vq-I6
 for xen-devel@lists.xenproject.org; Thu, 04 Jan 2024 13:02:45 +0000
Received: from wout2-smtp.messagingengine.com (wout2-smtp.messagingengine.com
 [64.147.123.25]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 8a5ec5c6-ab01-11ee-98ef-6d05b1d4d9a1;
 Thu, 04 Jan 2024 14:02:43 +0100 (CET)
Received: from compute2.internal (compute2.nyi.internal [10.202.2.46])
 by mailout.west.internal (Postfix) with ESMTP id 849063200A74;
 Thu,  4 Jan 2024 08:02:38 -0500 (EST)
Received: from mailfrontend2 ([10.202.2.163])
 by compute2.internal (MEProxy); Thu, 04 Jan 2024 08:02:38 -0500
Received: by mail.messagingengine.com (Postfix) with ESMTPA; Thu,
 4 Jan 2024 08:02:36 -0500 (EST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 8a5ec5c6-ab01-11ee-98ef-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=
	invisiblethingslab.com; h=cc:cc:content-type:content-type:date
	:date:from:from:in-reply-to:in-reply-to:message-id:mime-version
	:references:reply-to:subject:subject:to:to; s=fm2; t=1704373358;
	 x=1704459758; bh=zPx0OILoY20c1cPR6PBAV8PCQwNt0l5e11x0PpcZyGA=; b=
	p4Un+SUqAa7mMHsyAvqE6rsvid6OLWu6kP0w98WBgJUDuuhkTu2j/7WR68x9aLvH
	ACOoAvxJvPI/HGPNr/M40W6TeSvqDBR/VC2yRetd/Pr7doNMvFs0tNYD5TLXSttE
	ZZpiKkJIfAn282JVaxLrKzszxG31ha448nmToOhBOGAhChq1e5qLjVWPplZ0bsa8
	W0bjorc1EA0AD3z6Qojy5DNjlZFoob4+okj5qAdkP0zu5Karb3AbgI4wBGSnjBXy
	tumcJMEtL3bRn7j0YMj6GjXaR2JsCl3VjfV2F152g9M8qSpFmDBv+8COQEjmb/MM
	XLRkDaBwsMRE/cdElEzNTA==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=
	messagingengine.com; h=cc:cc:content-type:content-type:date:date
	:feedback-id:feedback-id:from:from:in-reply-to:in-reply-to
	:message-id:mime-version:references:reply-to:subject:subject:to
	:to:x-me-proxy:x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s=
	fm2; t=1704373358; x=1704459758; bh=zPx0OILoY20c1cPR6PBAV8PCQwNt
	0l5e11x0PpcZyGA=; b=MTPoG/o8qScyHXqQoECWGHuq056iOTKI2ah6F1BjLKvT
	IBU1AmQBr5hrx9xEvA7bQkECde4DVsp9l03A78UlDi+rXmMIR9dTpZ8Opvll1QZP
	CNFVTjZGDa7ri6UWiSK50FTQqrHg/naKGrT7Y6Xm9igjsYuNyILA9lCs+CeWrK7P
	rO0BWJY30PqEe90z/uJfocMLstMOV/5GkC8bbe/k+xKvdsibOs2Lkqct1Bui+yaf
	/1augszcCW/mal6P4Gl3WMbASHqlU0mzcKvoma2275+ELFtidU3julnReZvW/CNc
	YI8oHq9zej7UXJHUvudE1Xxwtc/tHbL9t/SLLN4lXw==
X-ME-Sender: <xms:bayWZdQyA3LtLSofejKj7Oy67raukR06FtvCUCd7HGIOh2gaZXL2wA>
    <xme:bayWZWw4bWY5B8VgxJwAVWPbxOfHaBeUCNqFGV1YRUqWs3klOwu1E7QmoHoNK-vVd
    7Czdtk9ym8qww>
X-ME-Received: <xmr:bayWZS1mImDM2z7ITjx0vu5reRMjFU74D1mVJgkz-qHGe7dsI8RxTeWwny22TErn2cVHbicxEbhloTXiU6t7hpeDskzy3d70mA>
X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvkedrvdegjedggeeiucetufdoteggodetrfdotf
    fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen
    uceurghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmne
    cujfgurhepfffhvfevuffkfhggtggujgesghdtreertddtjeenucfhrhhomhepofgrrhgv
    khcuofgrrhgtiiihkhhofihskhhiqdfikphrvggtkhhiuceomhgrrhhmrghrvghksehinh
    hvihhsihgslhgvthhhihhnghhslhgrsgdrtghomheqnecuggftrfgrthhtvghrnhepgfdu
    leetfeevhfefheeiteeliefhjefhleduveetteekveettddvgeeuteefjedunecuvehluh
    hsthgvrhfuihiivgeptdenucfrrghrrghmpehmrghilhhfrhhomhepmhgrrhhmrghrvghk
    sehinhhvihhsihgslhgvthhhihhnghhslhgrsgdrtghomh
X-ME-Proxy: <xmx:bayWZVBb0VJQkRKMQtXtle9DxacAwNwLyJyxd0l-TlwXSsWDbAl-oA>
    <xmx:bayWZWiFMSWkq8HNkB_dUiauKlnhk_a_RNqq8przmC6KsFWc5t2R4w>
    <xmx:bayWZZrZtwCsTDEFo9xUNsGHf1GuV1QoEVFDkqqQaXoMidx7cfH1IQ>
    <xmx:bqyWZceMf7V-DIZgOHagR2wEIV32CgpfIqKR9EWxNLni6ufJkeyzEQ>
Feedback-ID: i1568416f:Fastmail
Date: Thu, 4 Jan 2024 14:02:32 +0100
From: Marek =?utf-8?Q?Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
To: Jan Beulich <jbeulich@suse.com>
Cc: xen-devel <xen-devel@lists.xenproject.org>
Subject: Re: Serial console stuck during boot, unblocked with xl debug-key
Message-ID: <ZZasam3zMBtrGvte@mail-itl>
References: <ZY6WdQlbdQxb1UR2@mail-itl>
 <7d5ecc76-ecd3-4940-b658-fee60e3ab740@suse.com>
MIME-Version: 1.0
Content-Type: multipart/signed; micalg=pgp-sha256;
	protocol="application/pgp-signature"; boundary="TCsDXA/P7EK/jcos"
Content-Disposition: inline
In-Reply-To: <7d5ecc76-ecd3-4940-b658-fee60e3ab740@suse.com>


--TCsDXA/P7EK/jcos
Content-Type: text/plain; protected-headers=v1; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable
Date: Thu, 4 Jan 2024 14:02:32 +0100
From: Marek =?utf-8?Q?Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
To: Jan Beulich <jbeulich@suse.com>
Cc: xen-devel <xen-devel@lists.xenproject.org>
Subject: Re: Serial console stuck during boot, unblocked with xl debug-key

On Thu, Jan 04, 2024 at 12:59:28PM +0100, Jan Beulich wrote:
> On 29.12.2023 10:50, Marek Marczykowski-G=C3=B3recki wrote:
> > Hi,
> >=20
> > This is continuation from matrix chat. There is an occasional failure on
> > qubes-hw2 gitlab runner that console become stuck during boot. I can now
> > reproduce it _much_ more often on another system, and the serial consol=
e output
> > ends with:
> >=20
> >     (XEN) Allocated console ring of 256 KiB.
> >     (XEN) Using HWP for cpufreq
> >     (XEN) mwait-idle: does not run on family 6
> >=20
> > It should be:
> >=20
> >     (XEN) Allocated console ring of 256 KiB.
> >     (XEN) Using HWP for cpufreq
> >     (XEN) mwait-idle: does not run on family 6 model 183
> >     (XEN) VMX: Supported advanced features:
> >     (XEN)  - APIC MMIO access virtualisation
> >     (XEN)  - APIC TPR shadow
> >     ...
> >=20
> >=20
> > Otherwise the system works perfectly fine, the logs are available in
> > full via `xl dmesg` etc. Doing (any?) `xl debug-key` unblocks the
> > console and missing logs gets dumped there too. I narrowed it down to
> > the serial console tx buffer and collected some info with the attacked
> > patch (it collects info still during boot, after the place where it
> > usually breaks). When it works, I get:
> >=20
> >     (XEN) SERIAL DEBUG: txbufc: 0x5b5, txbufp: 0x9f7, uart intr_works: =
1, serial_txbufsz: 0x4000, tx_ready: 0, lsr_mask: 0x20, msi: 0, io_size: 8,=
 skipped_interrupts: 0
> >=20
> > And when it breaks, I get:
> >=20
> >     (XEN) SERIAL DEBUG: txbufc: 0x70, txbufp: 0x9fd, uart intr_works: 1=
, serial_txbufsz: 0x4000, tx_ready: 16, lsr_mask: 0x20, msi: 0, io_size: 8,=
 skipped_interrupts: 0
>=20
> The only meaningful difference is tx_ready then. Looking at
> ns16550_tx_ready() I wonder whether the LSR reports inconsistent
> values on successive reads (there are at least three separate calls
> to the function out of serial_tx_interrupt() alone). What you didn't
> log is the LSR value itself; from the tx_ready value one can conclude
> though that in the bad case fifo_size was returned, while in the good
> case 0 was passed back. At the first glance this looks backwards, or
> in other words I can't explain why it would be this way round. (I
> assume you've had each case multiple times, and the output was
> sufficiently consistent; that doesn't go without saying as your
> invocation of serial_debug() is competing with the asynchronous
> transmitting of data [if any].) It being this way round might suggest
> that we lost an interrupt.

That is my current hypothesis too. Either at the hw level (being masked
for some reason at some point?) or on sw level (somehow not calling the
handler - that's why adding skipped_interrupts).

> Is this a real serial port, or one mimicked
> by a BMC (SoL or alike)?

This one is a real serial port. It isn't fully reproducible, but
happened sufficiently often that I'm quite sure of the above info.
Yes, my serial_debug() can interfere with data transfer, but I
intentionally added it significantly later than the issue happens (I
realize that console output end may not directly coincide with actual
time of the problem due to async sending, but still IMO should
be good enough). I later moved it to keyhandler, but that didn't give
any more info.

--=20
Best Regards,
Marek Marczykowski-G=C3=B3recki
Invisible Things Lab

--TCsDXA/P7EK/jcos
Content-Type: application/pgp-signature; name="signature.asc"

-----BEGIN PGP SIGNATURE-----

iQEzBAEBCAAdFiEEhrpukzGPukRmQqkK24/THMrX1ywFAmWWrGoACgkQ24/THMrX
1yzoXAf/TA87SDCCPz8xEaFXrLERP7ZYylNyi+9JSIf86ChblIaA5HYCfyhKI+YN
NAYP3RXJcX6hu8C7IaeSdx8i0xHJ15QSgw7EEXxZTiRbqvUK8p5P2C0HwHuIC2c2
FGCinajaY0TTk1nd+wpFBLZulZxjT8ZsNWX7yWSVBhbgJxstybcr5sOtdGGezRa3
hDjR3KKo2WKTqAe3AExCi7xa6pcKT2qDth2TkXElj47w98pShVdP2dzokq7i1aYO
Yco0lCwsPLPs+wZZ30hQmInBBLJ+OlE17d5wNF+q6aTzfi5+fKzNlniUjCXljH96
GsUtE3/MSoLRKubFzDQ9kyVRUpFf2w==
=eCqL
-----END PGP SIGNATURE-----

--TCsDXA/P7EK/jcos--


From xen-devel-bounces@lists.xenproject.org Thu Jan 04 13:17:13 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 04 Jan 2024 13:17:13 +0000
Received: from list by lists.xenproject.org with outflank-mailman.661792.1031502 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLNaq-0004At-PW; Thu, 04 Jan 2024 13:17:04 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 661792.1031502; Thu, 04 Jan 2024 13:17:04 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLNaq-0004Am-Li; Thu, 04 Jan 2024 13:17:04 +0000
Received: by outflank-mailman (input) for mailman id 661792;
 Thu, 04 Jan 2024 13:17:04 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=0by4=IO=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rLNaq-0004Ac-5b
 for xen-devel@lists.xenproject.org; Thu, 04 Jan 2024 13:17:04 +0000
Received: from mail-lj1-x22d.google.com (mail-lj1-x22d.google.com
 [2a00:1450:4864:20::22d])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 8c4e8ea3-ab03-11ee-98ef-6d05b1d4d9a1;
 Thu, 04 Jan 2024 14:17:02 +0100 (CET)
Received: by mail-lj1-x22d.google.com with SMTP id
 38308e7fff4ca-2cc7d2c1ff0so5726301fa.3
 for <xen-devel@lists.xenproject.org>; Thu, 04 Jan 2024 05:17:02 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 b16-20020a92dcd0000000b0035fc82879a4sm9191412ilr.45.2024.01.04.05.17.00
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 04 Jan 2024 05:17:01 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 8c4e8ea3-ab03-11ee-98ef-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1704374222; x=1704979022; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=kOI3oQwAgohong0NCjBRbivF8Iuh+3qejyQXg5mYyck=;
        b=DXu/jTfWwGkT9fgw/sUOIF5cuX4fBHdEkWdsjKNhD9gYbytRyckFXlJv/tZ2Zpjzrj
         8z1T22BIhiG60X4PYPCPw4WMX5ow1HsobX+Z80mO/GUeWalNunIaHmqTe+v1Kat/pqyo
         zQhGA1m3Lli6W5IjwwhodptTTrdjawooy49mkwa+mptwGxpGMfof8lMBIlA2EGwsJasu
         c9WO2fxo0LWpGDCAOpmAv+HCyeRDfgmjLvcQcJlnAgGpq7UvtYZdRUkaeyl9sidzgNVH
         pQAj7REsWxiLh/s9yD0oabBzpsNa9Lv1V4Dg4dHfk5jEpSMJ/VwsGA2TMMAxPXN+Vdpm
         5b0A==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704374222; x=1704979022;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=kOI3oQwAgohong0NCjBRbivF8Iuh+3qejyQXg5mYyck=;
        b=MXDYBagDKDL3VhE1UNa49yRXIHNugYlHqJmP1s+I+anqOxB0FMJ5BRbjIKG99Hoqgr
         ohxnRYfVGRprmFiabyFmuGuCk4Ux0vVTwcAaFKo6cqxhZHfImOyzs0NbeIxrmL3xJr0M
         iLBPNyDBtp9JNQnS2wT47KpkENLs+4zwRlR3F8N4QTB3lfoPOK/YF6hm9lGe3Oh9Z9Zs
         zgPYyBM2fw/xA3SHDSelkND/J4eNBRbmEOGQ4N7klLCEBoQDwCbCOEgYXs4PrlLQZPvW
         jCF7vH60NiXBKBZCBCwPSjGVWM+CE1yGXjM5bLAQ69z1uj0V1r9qVILL3rNlxYOVSqPq
         +JUg==
X-Gm-Message-State: AOJu0Yyw1cK83YlnCmIezz0eR6SQ7l9/FuklBzPjWvZKEHxuvhHYqQxb
	RgAVhIvbd51Y/Yq9jUwvtPaL2Q9rsnpwX5oZgJPUY1UjVw==
X-Google-Smtp-Source: AGHT+IGdoM0B2091y9+sPMzB4uhxpFHnJZePS7ZFCek9c4bwgL2HKNRI0+YeEfuN90j8hZKcwApPEA==
X-Received: by 2002:a05:6512:11c9:b0:50e:682a:3303 with SMTP id h9-20020a05651211c900b0050e682a3303mr340022lfr.54.1704374221814;
        Thu, 04 Jan 2024 05:17:01 -0800 (PST)
Message-ID: <6db70696-4b40-46d2-b19c-881820338ba4@suse.com>
Date: Thu, 4 Jan 2024 14:16:59 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: hvmloader - allow_memory_relocate overlaps
Content-Language: en-US
To: Neowutran <xen@neowutran.ovh>
Cc: xen-devel@lists.xenproject.org, Anthony Perard
 <anthony.perard@citrix.com>, George Dunlap <george.dunlap@citrix.com>
References: <7oe275z3eap7rhdwmrm4mvqnjnhrpag5cjwnfvwsf7rchhkyjv@pd3abzwdhg6v>
 <217649a9-8399-48d3-ba49-ae22cacf0d4b@suse.com>
 <lyqv62ezqqaybcfuhkvbhiltvnxyy32wzr36kclh7bzrupcvib@a5fpoe6atykl>
 <1c857c96-9f2d-4787-8804-799a63a00480@suse.com>
 <7lhrvh2ad46gjke5kvy4pbvrhstv7ihwm64suqrkle4v43tos6@oktohrjfupkc>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <7lhrvh2ad46gjke5kvy4pbvrhstv7ihwm64suqrkle4v43tos6@oktohrjfupkc>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 22.12.2023 16:49, Neowutran wrote:
> Full logs without my patch to set allow-memory-relocate (https://github.com/neowutran/qubes-vmm-xen/blob/allowmemoryrelocate/ALLOWMEMORYRELOCATE.patch)
> https://pastebin.com/g 
> QGg55WZ
> (GPU passthrough doesn't work, hvmloader overlaps with guest memory)

So there are oddities, but I can't spot any overlaps. What's odd is that
the two blocks already above 4Gb are accounted for (and later relocated)
when calculating total MMIO size. BARs of size 2Gb and more shouldn't be
accounted for at all when deciding whether low RAM needs relocating, as
those can't live below 4Gb anyway. I vaguely recall pointing this out
years ago, but it was thought we'd get away for a fair while. What's
further odd is where the two blocks are moved to: F800000 moves (down)
to C00000, while the smaller FC00000 moves further up to FC80000.

I'll try to get to addressing at least the first oddity; if I can figure
out why the second one occurs, I may try to address that as well.

Jan



From xen-devel-bounces@lists.xenproject.org Thu Jan 04 13:24:56 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 04 Jan 2024 13:24:56 +0000
Received: from list by lists.xenproject.org with outflank-mailman.661795.1031511 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLNiH-0000Tk-Fx; Thu, 04 Jan 2024 13:24:45 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 661795.1031511; Thu, 04 Jan 2024 13:24:45 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLNiH-0000Td-DM; Thu, 04 Jan 2024 13:24:45 +0000
Received: by outflank-mailman (input) for mailman id 661795;
 Thu, 04 Jan 2024 13:24:44 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=0by4=IO=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rLNiG-0000TX-Mu
 for xen-devel@lists.xenproject.org; Thu, 04 Jan 2024 13:24:44 +0000
Received: from mail-lj1-x232.google.com (mail-lj1-x232.google.com
 [2a00:1450:4864:20::232])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 9e98994c-ab04-11ee-9b0f-b553b5be7939;
 Thu, 04 Jan 2024 14:24:42 +0100 (CET)
Received: by mail-lj1-x232.google.com with SMTP id
 38308e7fff4ca-2cce70ad1a3so6066871fa.1
 for <xen-devel@lists.xenproject.org>; Thu, 04 Jan 2024 05:24:42 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 bo18-20020a056638439200b0046993034c91sm7838595jab.77.2024.01.04.05.24.40
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 04 Jan 2024 05:24:41 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 9e98994c-ab04-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1704374682; x=1704979482; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=l/Y/pHB1cOv89Zwm8ZKzvm42bYzUtc5kUIKjcJZbFdY=;
        b=By5shpZcS5qgiSQ78oMF2l3LC9TI0EOvYgJumy290vE69+KOPu8oSd9CQ/2JrCKdQK
         SNr8ET1BYoQ8sbiPnZpDLMB6iY8+TklYYcHoAGFzmO7B8Ig9nM7LuxsLpjHzYw7FOi/a
         NXlINFQV95jTgVLIk4ACVenGfsfaVInem9gls//9oAH+26hkWyPt87NvAka4oihyBRk5
         wfFX+/jM8GzaqYUV70us7bohkNNqdwYtYyvJJ/O0aQuerjadupU3ce62JWq8cFwA3d/4
         i72MLC/zpVCgx6QqKz5/HsQkLYYhivGdw7suEKWoKUhEDGgCYfiKVAl+QS2EptsHBNaA
         pjWw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704374682; x=1704979482;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=l/Y/pHB1cOv89Zwm8ZKzvm42bYzUtc5kUIKjcJZbFdY=;
        b=gNjhnK4qGCQnG9SRPLJIiH7KdPkET6tbQ0HKssZjBd+VWrdaIjCQgHvBf46lBGWWsT
         G+pYlv5vDyXIUnIPRgVOMFblMZxIO1XXxx5aukzk4Jy2T/ToAvXjgr8/8269YOhg7PGt
         p09wkDt4Wsai1YU/lbG4jlmyRydr+kymNAtX/3l+eVYMGdfpyy93d7ORcACzbd+McxnA
         1ruxG3pdRj0WojnsdEzLAknZivVlj+d1e4nktxnO2s6LPe0NjTitY+LkcDYN+XOIsExR
         HC5Cy/8FRF93ObXibbU5hw6YSl9AAvCuxD6F2Ha8gF4lTWQWOtn44nX+H5RF9QvaK746
         N9Tw==
X-Gm-Message-State: AOJu0Yy1qPjEcd5X+/pUN+Lf6vx+FIpi9VnaeOWPI4sANYtJSNJ3a4kC
	df9avJ1mkp6v5cvcknM/ny3XOIwezezq
X-Google-Smtp-Source: AGHT+IEAnTbf13WwzQuShuJT0+HyMwTqhV1U5Clf6pe2mYMMZTLx2HFz/OuCWM84hi93QqX1j2RvTw==
X-Received: by 2002:a2e:b170:0:b0:2cc:811f:f9ae with SMTP id a16-20020a2eb170000000b002cc811ff9aemr318969ljm.47.1704374682079;
        Thu, 04 Jan 2024 05:24:42 -0800 (PST)
Message-ID: <07c7d954-c0f8-447c-9205-646ca2a1de1d@suse.com>
Date: Thu, 4 Jan 2024 14:24:39 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] xen/livepatch: Make check_for_livepatch_work() faster in
 the common case
Content-Language: en-US
To: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>,
 Ross Lagerwall <ross.lagerwall@citrix.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>, Wei Liu
 <wl@xen.org>, Xen-devel <xen-devel@lists.xenproject.org>
References: <20231222220045.2840714-1-andrew.cooper3@citrix.com>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <20231222220045.2840714-1-andrew.cooper3@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 22.12.2023 23:00, Andrew Cooper wrote:
> When livepatching is enabled, this function is used all the time.  Really do
> check the fastpath first, and annotate it likely() as this is the right answer
> 100% of the time (to many significant figures).
> 
> This cuts out 3 pointer dereferences in the "nothing to do path", and it seems
> the optimiser has an easier time too.  Bloat-o-meter reports:
> 
>   add/remove: 0/0 grow/shrink: 0/2 up/down: 0/-57 (-57)
>   Function                                     old     new   delta
>   check_for_livepatch_work.cold               1201    1183     -18
>   check_for_livepatch_work                    1021     982     -39
> 
> which isn't too shabby for no logical change.
> 
> Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>

Reviewed-by: Jan Beulich <jbeulich@suse.com>

> I'm still a little disappointed with the code generation.  GCC still chooses
> to set up the full stack frame (6 regs, +3 more slots) intermixed with the
> per-cpu calculations.
> 
> In isolation, GCC can check the boolean without creating a stack frame:
> 
>   <work_to_to>:
>     48 89 e2                mov    %rsp,%rdx
>     48 8d 05 de e1 37 00    lea    0x37e1de(%rip),%rax        # ffff82d0405b6068 <per_cpu__work_to_do>
>     48 81 ca ff 7f 00 00    or     $0x7fff,%rdx
>     8b 4a c1                mov    -0x3f(%rdx),%ecx
>     48 8d 15 45 aa 39 00    lea    0x39aa45(%rip),%rdx        # ffff82d0405d28e0 <__per_cpu_offset>
>     48 8b 14 ca             mov    (%rdx,%rcx,8),%rdx
>     0f b6 04 02             movzbl (%rdx,%rax,1),%eax
>     c3                      retq
> 
> but I can't find a way to convince GCC that it would be worth not setting up a
> stack frame in in the common case, and having a few extra mov reg/reg's later
> in the uncommon case.
> 
> I haven't tried manually splitting the function into a check() and a do()
> function.  Views on whether that might be acceptable?  At a guess, do() would
> need to be a static noinline to avoid it turning back into what it currently
> is.

Or maybe move the fast-path check into an inline function, which calls the
(renamed) out-of-line one only when the fast-path check passes? Downside
would be that the per-CPU work_to_do variable then couldn't be static anymore.

Jan


From xen-devel-bounces@lists.xenproject.org Thu Jan 04 13:33:13 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 04 Jan 2024 13:33:13 +0000
Received: from list by lists.xenproject.org with outflank-mailman.661800.1031522 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLNqK-0002QF-AQ; Thu, 04 Jan 2024 13:33:04 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 661800.1031522; Thu, 04 Jan 2024 13:33:04 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLNqK-0002Q8-6q; Thu, 04 Jan 2024 13:33:04 +0000
Received: by outflank-mailman (input) for mailman id 661800;
 Thu, 04 Jan 2024 13:33:02 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=wSyo=IO=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1rLNqI-0002Q2-E8
 for xen-devel@lists.xenproject.org; Thu, 04 Jan 2024 13:33:02 +0000
Received: from mail-lj1-x230.google.com (mail-lj1-x230.google.com
 [2a00:1450:4864:20::230])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id c7f24dba-ab05-11ee-98ef-6d05b1d4d9a1;
 Thu, 04 Jan 2024 14:33:01 +0100 (CET)
Received: by mail-lj1-x230.google.com with SMTP id
 38308e7fff4ca-2cca5d81826so7094481fa.2
 for <xen-devel@lists.xenproject.org>; Thu, 04 Jan 2024 05:33:01 -0800 (PST)
Received: from [192.168.86.29] ([90.242.36.164])
 by smtp.gmail.com with ESMTPSA id
 fm23-20020a056a002f9700b006dac20d4a57sm1299972pfb.121.2024.01.04.05.32.58
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 04 Jan 2024 05:33:00 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: c7f24dba-ab05-11ee-98ef-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1704375181; x=1704979981; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=IOoarImjikDHhb23oqGwyNsvSSa8KI8+QHayYth4w4U=;
        b=dQCnXVgnhb8rXRdN5GcKaPSXbjeZsJfq0dJ4vRm7UWHPdoFYuyiM4xJVeTVkgk6MKR
         3Da2Sby1LEe3IeM7C+XlCDHoIUacYNgHigHylCTWhTKlRbwWgGaFezsueCcnAcptZ71q
         z6X9A6p4ZcuuY9yfXMZaFNfBFsmqm7HmP5SoM=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704375181; x=1704979981;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=IOoarImjikDHhb23oqGwyNsvSSa8KI8+QHayYth4w4U=;
        b=Fh7/dfMa2huouD1NTJfXq32sY3YYqDmE8f8OFmF3lhNIilvtdm13soqMdOOiqCMpTB
         Asmoa8VD/jOYx/5pAzwak6lamLOhautgRVrp+8WCiXJ12Ycx5Tj8/XX9McEaKQ20rY43
         GCN3rLvQL0QKPiXfL6MHDsE8yDoBRjFrcTKShCm2erMT2eXzkQlyaieVqIOVY5s1lMyN
         3O/kkK875BsX8+qiKcfzFvqTbopvxN6MO2CvxDNWozRjW5kaNgfiDGJtgxrs4LCmfOnC
         KYnmMLOnIgyOQBq09l5OOGF70fhuwy84JLwULXODBqfpgOBuQ6ChUn/CnCqat+IjUFV1
         d9Fg==
X-Gm-Message-State: AOJu0Yw219xmV0nict2Xo4BzWwJucX6mCTQz/lOzHIhvH/n10ostuNT9
	yYJaw6iRJNX+7jrwH+0u8tYaFb3EChnvJg==
X-Google-Smtp-Source: AGHT+IE2kgv2LNFO6SVWq2fhcuI6svAHjbDNWZ4Q+AGG02KNmi2uaCxTolgCMXsS6hjZdikmUvaa8A==
X-Received: by 2002:a05:651c:2313:b0:2cc:1d55:eb27 with SMTP id bi19-20020a05651c231300b002cc1d55eb27mr317344ljb.47.1704375180886;
        Thu, 04 Jan 2024 05:33:00 -0800 (PST)
Message-ID: <4458e025-0a4d-4182-bda2-203b1a08ced7@citrix.com>
Date: Thu, 4 Jan 2024 13:32:57 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] xen/livepatch: Make check_for_livepatch_work() faster in
 the common case
Content-Language: en-GB
To: Jan Beulich <jbeulich@suse.com>
Cc: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>,
 Ross Lagerwall <ross.lagerwall@citrix.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>, Wei Liu
 <wl@xen.org>, Xen-devel <xen-devel@lists.xenproject.org>
References: <20231222220045.2840714-1-andrew.cooper3@citrix.com>
 <07c7d954-c0f8-447c-9205-646ca2a1de1d@suse.com>
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 xsFNBFLhNn8BEADVhE+Hb8i0GV6mihnnr/uiQQdPF8kUoFzCOPXkf7jQ5sLYeJa0cQi6Penp
 VtiFYznTairnVsN5J+ujSTIb+OlMSJUWV4opS7WVNnxHbFTPYZVQ3erv7NKc2iVizCRZ2Kxn
 srM1oPXWRic8BIAdYOKOloF2300SL/bIpeD+x7h3w9B/qez7nOin5NzkxgFoaUeIal12pXSR
 Q354FKFoy6Vh96gc4VRqte3jw8mPuJQpfws+Pb+swvSf/i1q1+1I4jsRQQh2m6OTADHIqg2E
 ofTYAEh7R5HfPx0EXoEDMdRjOeKn8+vvkAwhviWXTHlG3R1QkbE5M/oywnZ83udJmi+lxjJ5
 YhQ5IzomvJ16H0Bq+TLyVLO/VRksp1VR9HxCzItLNCS8PdpYYz5TC204ViycobYU65WMpzWe
 LFAGn8jSS25XIpqv0Y9k87dLbctKKA14Ifw2kq5OIVu2FuX+3i446JOa2vpCI9GcjCzi3oHV
 e00bzYiHMIl0FICrNJU0Kjho8pdo0m2uxkn6SYEpogAy9pnatUlO+erL4LqFUO7GXSdBRbw5
 gNt25XTLdSFuZtMxkY3tq8MFss5QnjhehCVPEpE6y9ZjI4XB8ad1G4oBHVGK5LMsvg22PfMJ
 ISWFSHoF/B5+lHkCKWkFxZ0gZn33ju5n6/FOdEx4B8cMJt+cWwARAQABzSlBbmRyZXcgQ29v
 cGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPsLBegQTAQgAJAIbAwULCQgHAwUVCgkI
 CwUWAgMBAAIeAQIXgAUCWKD95wIZAQAKCRBlw/kGpdefoHbdD/9AIoR3k6fKl+RFiFpyAhvO
 59ttDFI7nIAnlYngev2XUR3acFElJATHSDO0ju+hqWqAb8kVijXLops0gOfqt3VPZq9cuHlh
 IMDquatGLzAadfFx2eQYIYT+FYuMoPZy/aTUazmJIDVxP7L383grjIkn+7tAv+qeDfE+txL4
 SAm1UHNvmdfgL2/lcmL3xRh7sub3nJilM93RWX1Pe5LBSDXO45uzCGEdst6uSlzYR/MEr+5Z
 JQQ32JV64zwvf/aKaagSQSQMYNX9JFgfZ3TKWC1KJQbX5ssoX/5hNLqxMcZV3TN7kU8I3kjK
 mPec9+1nECOjjJSO/h4P0sBZyIUGfguwzhEeGf4sMCuSEM4xjCnwiBwftR17sr0spYcOpqET
 ZGcAmyYcNjy6CYadNCnfR40vhhWuCfNCBzWnUW0lFoo12wb0YnzoOLjvfD6OL3JjIUJNOmJy
 RCsJ5IA/Iz33RhSVRmROu+TztwuThClw63g7+hoyewv7BemKyuU6FTVhjjW+XUWmS/FzknSi
 dAG+insr0746cTPpSkGl3KAXeWDGJzve7/SBBfyznWCMGaf8E2P1oOdIZRxHgWj0zNr1+ooF
 /PzgLPiCI4OMUttTlEKChgbUTQ+5o0P080JojqfXwbPAyumbaYcQNiH1/xYbJdOFSiBv9rpt
 TQTBLzDKXok86M7BTQRS4TZ/ARAAkgqudHsp+hd82UVkvgnlqZjzz2vyrYfz7bkPtXaGb9H4
 Rfo7mQsEQavEBdWWjbga6eMnDqtu+FC+qeTGYebToxEyp2lKDSoAsvt8w82tIlP/EbmRbDVn
 7bhjBlfRcFjVYw8uVDPptT0TV47vpoCVkTwcyb6OltJrvg/QzV9f07DJswuda1JH3/qvYu0p
 vjPnYvCq4NsqY2XSdAJ02HrdYPFtNyPEntu1n1KK+gJrstjtw7KsZ4ygXYrsm/oCBiVW/OgU
 g/XIlGErkrxe4vQvJyVwg6YH653YTX5hLLUEL1NS4TCo47RP+wi6y+TnuAL36UtK/uFyEuPy
 wwrDVcC4cIFhYSfsO0BumEI65yu7a8aHbGfq2lW251UcoU48Z27ZUUZd2Dr6O/n8poQHbaTd
 6bJJSjzGGHZVbRP9UQ3lkmkmc0+XCHmj5WhwNNYjgbbmML7y0fsJT5RgvefAIFfHBg7fTY/i
 kBEimoUsTEQz+N4hbKwo1hULfVxDJStE4sbPhjbsPCrlXf6W9CxSyQ0qmZ2bXsLQYRj2xqd1
 bpA+1o1j2N4/au1R/uSiUFjewJdT/LX1EklKDcQwpk06Af/N7VZtSfEJeRV04unbsKVXWZAk
 uAJyDDKN99ziC0Wz5kcPyVD1HNf8bgaqGDzrv3TfYjwqayRFcMf7xJaL9xXedMcAEQEAAcLB
 XwQYAQgACQUCUuE2fwIbDAAKCRBlw/kGpdefoG4XEACD1Qf/er8EA7g23HMxYWd3FXHThrVQ
 HgiGdk5Yh632vjOm9L4sd/GCEACVQKjsu98e8o3ysitFlznEns5EAAXEbITrgKWXDDUWGYxd
 pnjj2u+GkVdsOAGk0kxczX6s+VRBhpbBI2PWnOsRJgU2n10PZ3mZD4Xu9kU2IXYmuW+e5KCA
 vTArRUdCrAtIa1k01sPipPPw6dfxx2e5asy21YOytzxuWFfJTGnVxZZSCyLUO83sh6OZhJkk
 b9rxL9wPmpN/t2IPaEKoAc0FTQZS36wAMOXkBh24PQ9gaLJvfPKpNzGD8XWR5HHF0NLIJhgg
 4ZlEXQ2fVp3XrtocHqhu4UZR4koCijgB8sB7Tb0GCpwK+C4UePdFLfhKyRdSXuvY3AHJd4CP
 4JzW0Bzq/WXY3XMOzUTYApGQpnUpdOmuQSfpV9MQO+/jo7r6yPbxT7CwRS5dcQPzUiuHLK9i
 nvjREdh84qycnx0/6dDroYhp0DFv4udxuAvt1h4wGwTPRQZerSm4xaYegEFusyhbZrI0U9tJ
 B8WrhBLXDiYlyJT6zOV2yZFuW47VrLsjYnHwn27hmxTC/7tvG3euCklmkn9Sl9IAKFu29RSo
 d5bD8kMSCYsTqtTfT6W4A3qHGvIDta3ptLYpIAOD2sY3GYq2nf3Bbzx81wZK14JdDDHUX2Rs
 6+ahAA==
In-Reply-To: <07c7d954-c0f8-447c-9205-646ca2a1de1d@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 04/01/2024 1:24 pm, Jan Beulich wrote:
> On 22.12.2023 23:00, Andrew Cooper wrote:
>> When livepatching is enabled, this function is used all the time.  Really do
>> check the fastpath first, and annotate it likely() as this is the right answer
>> 100% of the time (to many significant figures).
>>
>> This cuts out 3 pointer dereferences in the "nothing to do path", and it seems
>> the optimiser has an easier time too.  Bloat-o-meter reports:
>>
>>   add/remove: 0/0 grow/shrink: 0/2 up/down: 0/-57 (-57)
>>   Function                                     old     new   delta
>>   check_for_livepatch_work.cold               1201    1183     -18
>>   check_for_livepatch_work                    1021     982     -39
>>
>> which isn't too shabby for no logical change.
>>
>> Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
> Reviewed-by: Jan Beulich <jbeulich@suse.com>

Thanks.

>
>> I'm still a little disappointed with the code generation.  GCC still chooses
>> to set up the full stack frame (6 regs, +3 more slots) intermixed with the
>> per-cpu calculations.
>>
>> In isolation, GCC can check the boolean without creating a stack frame:
>>
>>   <work_to_to>:
>>     48 89 e2                mov    %rsp,%rdx
>>     48 8d 05 de e1 37 00    lea    0x37e1de(%rip),%rax        # ffff82d0405b6068 <per_cpu__work_to_do>
>>     48 81 ca ff 7f 00 00    or     $0x7fff,%rdx
>>     8b 4a c1                mov    -0x3f(%rdx),%ecx
>>     48 8d 15 45 aa 39 00    lea    0x39aa45(%rip),%rdx        # ffff82d0405d28e0 <__per_cpu_offset>
>>     48 8b 14 ca             mov    (%rdx,%rcx,8),%rdx
>>     0f b6 04 02             movzbl (%rdx,%rax,1),%eax
>>     c3                      retq
>>
>> but I can't find a way to convince GCC that it would be worth not setting up a
>> stack frame in in the common case, and having a few extra mov reg/reg's later
>> in the uncommon case.
>>
>> I haven't tried manually splitting the function into a check() and a do()
>> function.  Views on whether that might be acceptable?  At a guess, do() would
>> need to be a static noinline to avoid it turning back into what it currently
>> is.
> Or maybe move the fast-path check into an inline function, which calls the
> (renamed) out-of-line one only when the fast-path check passes? Downside
> would be that the per-CPU work_to_do variable then couldn't be static anymore.

We can't do that unfortunately.  It's called from assembly in
reset_stack_and_*()

But, I've had another idea.  I think attribute cold can help here, as it
will move the majority of the implementation into a separate section.

~Andrew


From xen-devel-bounces@lists.xenproject.org Thu Jan 04 13:41:32 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 04 Jan 2024 13:41:32 +0000
Received: from list by lists.xenproject.org with outflank-mailman.661811.1031531 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLNyR-0005Vl-8M; Thu, 04 Jan 2024 13:41:27 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 661811.1031531; Thu, 04 Jan 2024 13:41:27 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLNyR-0005Ve-5Y; Thu, 04 Jan 2024 13:41:27 +0000
Received: by outflank-mailman (input) for mailman id 661811;
 Thu, 04 Jan 2024 13:41:25 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=0by4=IO=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rLNyP-0005VY-E5
 for xen-devel@lists.xenproject.org; Thu, 04 Jan 2024 13:41:25 +0000
Received: from mail-lj1-x22e.google.com (mail-lj1-x22e.google.com
 [2a00:1450:4864:20::22e])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id f3b4b9ac-ab06-11ee-98ef-6d05b1d4d9a1;
 Thu, 04 Jan 2024 14:41:24 +0100 (CET)
Received: by mail-lj1-x22e.google.com with SMTP id
 38308e7fff4ca-2cc9fa5e8e1so6205221fa.3
 for <xen-devel@lists.xenproject.org>; Thu, 04 Jan 2024 05:41:24 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 gi8-20020a05663869c800b004664ecd1249sm8105076jab.106.2024.01.04.05.41.22
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 04 Jan 2024 05:41:23 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: f3b4b9ac-ab06-11ee-98ef-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1704375684; x=1704980484; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=SoyA/SIWvN+N7kSIfA7Um37JqWaP5lPBVq9e7hfC48g=;
        b=Djj4vqocMVNbGzeMzRGlpjmhJCxB/RDXL/YWPzh0xMDnQXFT83KMbb9UwljU6J/DwA
         CR8DikhYUNkzCNI00ztVAIIibQtHgdoik1e7a75kmBUQIOeohkiTFHqOeHWVOGOj9Z/g
         93RW5iUWbZxr6vn/hWWsfjCQ/vZrEDFASO1tbxGFUasuIkAt1lZnJKD+DdQaklr9ne8m
         h1NmEgx/NT5JhiXFQNRz/p/iGyUFHg8XlVB+82eNsICg/mTO3fZOr4kkfNdhg4eXLitr
         sE+0aQg+3PoTe2CRgtqT5ecYOCMhu8cLOuUgXD1z1d9C1CSnhl/Rzl4o3bIR+tCH98TU
         g6Jg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704375684; x=1704980484;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=SoyA/SIWvN+N7kSIfA7Um37JqWaP5lPBVq9e7hfC48g=;
        b=wqQFCk3MoEjnDrNgHg3Eg/EHbxsNMVqCxaJLpjo3SIvd0MJqz+scMDdxC85/oieB25
         DwZdkyOXTXAYH83I0v5dgmR1lS+4vHM5kGBdQFYg6Ww/FL/B6ZtFyP5uPRhPmuDXuc4w
         fHtWAEYD20Hw/vRUYd7+B9ndn0NVQlSVU/62q3/io138HUhaBIDkkrn0IRUIXMm/0yhA
         aWLeFJ/501X/2z2rqm1rTD8boLm1PsTlEY8pnMbUNIyhZL/nq/dzn7OPMDCgMJ8ZcAVV
         PX7nNnu0r7ELFnrVp639fTLioIm9JSQrzhhxKQ9riqDcGkLx90lSAKopLFjwsnbYsura
         uMfw==
X-Gm-Message-State: AOJu0Yyo+NZVix5bBuGt/x6hzeRZ2HXSnpY9Bnf6JnkCDPLrmuEMOluU
	4BkYgOmyOVLWWUX0f7v612hsiZSyjuyL
X-Google-Smtp-Source: AGHT+IFuZSDAsIvIZZCRYlvM1rEVgD8nn5fho7z7vauHy5FoVqHH9kSsb+F4LLXbEC60xUIrtvbzXQ==
X-Received: by 2002:a2e:97d9:0:b0:2cc:6fe2:4ddc with SMTP id m25-20020a2e97d9000000b002cc6fe24ddcmr328734ljj.3.1704375683742;
        Thu, 04 Jan 2024 05:41:23 -0800 (PST)
Message-ID: <1248487f-4852-41f5-9ffd-d4d12897a622@suse.com>
Date: Thu, 4 Jan 2024 14:41:21 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] xen: Use -Wuninitialized and -Winit-self
Content-Language: en-US
To: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Wei Liu <wl@xen.org>, Xen-devel <xen-devel@lists.xenproject.org>
References: <20231228193907.3052681-1-andrew.cooper3@citrix.com>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <20231228193907.3052681-1-andrew.cooper3@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 28.12.2023 20:39, Andrew Cooper wrote:
> The use of uninitialised data is undefined behaviour.  At -O2 with trivial
> examples, both Clang and GCC delete the variable, and in the case of a
> function return, the caller gets whatever was stale in %rax prior to the call.
> 
> Clang includes -Wuninitialized within -Wall, but GCC only includes it in
> -Wextra, which is not used by Xen at this time.
> 
> Furthermore, the specific pattern of assigning a variable to itself in its
> declaration is only diagnosed by GCC with -Winit-self.  Clang does diagnoise
> simple forms of this pattern with a plain -Wuninitialized, but it fails to
> diagnose the instances in Xen that GCC manages to find.
> 
> GCC, with -Wuninitialized and -Winit-self notices:
> 
>   arch/x86/time.c: In function ‘read_pt_and_tsc’:
>   arch/x86/time.c:297:14: error: ‘best’ is used uninitialized in this function [-Werror=uninitialized]
>     297 |     uint32_t best = best;
>         |              ^~~~
>   arch/x86/time.c: In function ‘read_pt_and_tmcct’:
>   arch/x86/time.c:1022:14: error: ‘best’ is used uninitialized in this function [-Werror=uninitialized]
>    1022 |     uint64_t best = best;
>         |              ^~~~
> 
> and both have logic paths where best can be returned while uninitalised.

I disagree. In both cases the variables are reliably set during the first
loop iteration. Therefore I also disagree that there want to be Fixes: tags
here. There's one case where initialization could be bypassed, but that's a
purely theoretical case afaict.

Furthermore this initialize-to-self is a well known pattern to suppress the
-Wuninitialized induced warnings, originally used by Linux'es
uninitialized_var(). If we really want to use -Winit-self (and hence disallow
use of this pattern even in cases like the ones here, where they're used to
suppress false positive warnings), this should imo be done separately from
adding -Wuninitialized, and only after proper weighing of the pros and cons
(a wider Cc list would be required anyway for the xen/Makefile change).

>  In
> both cases, initialise to ~0 like the associated *_min variable which also
> gates updating best.

Considering the affected functions are both __init, this change isn't a big
problem. But if you were truly concerned of the one theoretical case, you
can't get away with this either: If the variables really remained unwritten,
by returning ~0 you'd end up confusing the caller.

Jan


From xen-devel-bounces@lists.xenproject.org Thu Jan 04 13:56:55 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 04 Jan 2024 13:56:55 +0000
Received: from list by lists.xenproject.org with outflank-mailman.661820.1031541 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLODJ-0002PK-Im; Thu, 04 Jan 2024 13:56:49 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 661820.1031541; Thu, 04 Jan 2024 13:56:49 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLODJ-0002PD-Fa; Thu, 04 Jan 2024 13:56:49 +0000
Received: by outflank-mailman (input) for mailman id 661820;
 Thu, 04 Jan 2024 13:56:48 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=0by4=IO=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rLODI-0002P7-4k
 for xen-devel@lists.xenproject.org; Thu, 04 Jan 2024 13:56:48 +0000
Received: from mail-lj1-x22a.google.com (mail-lj1-x22a.google.com
 [2a00:1450:4864:20::22a])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 18fe7b23-ab09-11ee-9b0f-b553b5be7939;
 Thu, 04 Jan 2024 14:56:45 +0100 (CET)
Received: by mail-lj1-x22a.google.com with SMTP id
 38308e7fff4ca-2cd0f4f306fso6188961fa.0
 for <xen-devel@lists.xenproject.org>; Thu, 04 Jan 2024 05:56:45 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 cb7-20020a0566381b0700b0046dfa285b6esm1729jab.88.2024.01.04.05.56.43
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 04 Jan 2024 05:56:45 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 18fe7b23-ab09-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1704376605; x=1704981405; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=NsK59aOcnwYik5dcJBcILgaEN9ETgllbPPj1XPFlj/4=;
        b=cg7e3DlDKveo4CDg0+dEPbGKW/zJUbH0VuZyyONca3W3tBiAs0tDHAEkxxj2/C+1of
         5BQV1j5f+s67mAoV+CeFbhofnrjua/nzJNjP5ftC+XS7RaxzVc3gVgHUWtE2lWSsFytN
         7mseua3hZgc/HnJsF1SYYbwi/YVyY+n7XK4SyuU1Xc0hOyrE6jWtVZg7zKCrcjQ4uBQI
         G2KRm41FalhSINpsh4+b9RTXnUlLjxb3OUBcUoQEAiIKqRg8VnkEfKWGSZW25T7FPhwj
         9cVImBOkoG2vZNhMlT2SyFmA3v2JMpbz0FFsKtT9Yf7wuE5MqNMzj56hTBqX76jgIE0p
         VWrw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704376605; x=1704981405;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=NsK59aOcnwYik5dcJBcILgaEN9ETgllbPPj1XPFlj/4=;
        b=EvUBYdiy4IHGatHyFmOKHxUkaWsgWPqXs+MYjc3yp9AI0cdGbG7NNJPCCy/v/7PObg
         /4rukWyFnvWh0lcWrcJ/smUjdHoKooPcXy1S3WQb/LR/3pFJ2/NWWdQZ1vNaTdI0afzN
         1fH33bxRF43M+QX0eF1pE3xAeB9Mj+zvMAGocSkAofCDvjbKFl4/RMvKRwUK1aRcFh4H
         J0lUzIn5uAfb+dp7vmcn14Db+9x1c8tUYagZRO67IM7qMRLVrPEoedsMHK/qw19WDIf5
         RyopgXMcG7R+Yg1FonvEqyiJAFBFGOihmgWR4gLinOAzlCfVtRGzd0sSWL01mxKt4r+I
         n60A==
X-Gm-Message-State: AOJu0YzvMYUXwN4Ou1m0zzEphBr60uQsPUCPVvvFSjTRgLhO7dYXPGcj
	H/+FbxKyUm1U62hni4YwrSq0+/wG/sOR
X-Google-Smtp-Source: AGHT+IF0QlOxQTu5Mamq6M87IvXH53PkDyEv+1KhUMUJPYes7s2ozrRKKjhsKSVnfFh7uiYhBckXUg==
X-Received: by 2002:a05:651c:2213:b0:2cc:8bd4:b860 with SMTP id y19-20020a05651c221300b002cc8bd4b860mr430123ljq.85.1704376605433;
        Thu, 04 Jan 2024 05:56:45 -0800 (PST)
Message-ID: <c604e8a5-6287-4175-93a0-3509d0e2686a@suse.com>
Date: Thu, 4 Jan 2024 14:56:42 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2 29/39] xen/riscv: add definition of __read_mostly
Content-Language: en-US
To: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: Alistair Francis <alistair.francis@wdc.com>,
 Bob Eshleman <bobbyeshleman@gmail.com>, Connor Davis
 <connojdavis@gmail.com>, George Dunlap <george.dunlap@citrix.com>,
 Julien Grall <julien@xen.org>, Stefano Stabellini <sstabellini@kernel.org>,
 Wei Liu <wl@xen.org>, xen-devel@lists.xenproject.org,
 Oleksii Kurochko <oleksii.kurochko@gmail.com>
References: <cover.1700761381.git.oleksii.kurochko@gmail.com>
 <7fec1c9f906ee120ebae606de59f9f70efb79aff.1700761381.git.oleksii.kurochko@gmail.com>
 <95542550-5f95-4231-8210-79dc2419ce61@suse.com>
 <3df1dad8-3476-458f-9022-160e0af57d39@citrix.com>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <3df1dad8-3476-458f-9022-160e0af57d39@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 21.12.2023 16:23, Andrew Cooper wrote:
> On 12/12/2023 5:04 pm, Jan Beulich wrote:
>> On 24.11.2023 11:30, Oleksii Kurochko wrote:
>>> The definition of __read_mostly should be removed in:
>>> https://lore.kernel.org/xen-devel/f25eb5c9-7c14-6e23-8535-2c66772b333e@suse.com/
>> Andrew, can we settle on what to do with that patch? If you don't like me
>> putting __read_mostly in xen/cache.h (consistent with __ro_after_init),
>> would you please make an alternative suggestion?
> 
> xen/linkage.h?  xen/sections.h?

Well, that's the problem: There's no xen/sections.h (and I don't see why we'd
introduce one just for this), and while xen/linkage.h is about to appear for
the entry point annotations, I don't think it is a reasonable fit.

Otoh with __ro_after_init ...

> Sorry - I didn't mean to block it specifically, but I do think
> xen/cache.h is the wrong place for both to live and that it's a small
> enough change to warrant sorting out nicely once and for all.

... living in xen/cache.h already, __read_mostly is even more logical to put
there than __ro_after_init. For the latter I agree the purpose isn't really
cache related, while for the former it is. From your original reply to the
patch submission, I have to admit I don't really understand what
"micro-architectural" detail you mean: The goal of avoiding unnecessary cache
line ping-pong doesn't look to be what you mean, as imo that's a valid (and
generic) goal. And that's what I think is the reason the #define presently
lives in asm/cache.h, justifying my moving of it to xen/cache.h.

So if you can't get yourself to accept xen/cache.h as the new (even if only
temporary) location, I think you can be expected to make a better proposal.
With "better" there meaning you supplying a reason for why you think that
placement is better than xen/cache.h. For example, if I knew what you
expected xen/sections.h to further contain (in the long run), I might find
myself agreeing to that. Yet other section annotation #define-s live
elsewhere anyway, with - in particular - __init and friends imo not likely
to move out of their present header (xen/init.h).

Jan


From xen-devel-bounces@lists.xenproject.org Thu Jan 04 14:34:22 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 04 Jan 2024 14:34:22 +0000
Received: from list by lists.xenproject.org with outflank-mailman.661825.1031551 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLOnO-0005Ma-Bf; Thu, 04 Jan 2024 14:34:06 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 661825.1031551; Thu, 04 Jan 2024 14:34:06 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLOnO-0005MT-98; Thu, 04 Jan 2024 14:34:06 +0000
Received: by outflank-mailman (input) for mailman id 661825;
 Thu, 04 Jan 2024 14:34:05 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=wSyo=IO=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1rLOnN-0005MJ-EY
 for xen-devel@lists.xenproject.org; Thu, 04 Jan 2024 14:34:05 +0000
Received: from mail-wr1-x433.google.com (mail-wr1-x433.google.com
 [2a00:1450:4864:20::433])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 3451d3ff-ab0e-11ee-98ef-6d05b1d4d9a1;
 Thu, 04 Jan 2024 15:33:19 +0100 (CET)
Received: by mail-wr1-x433.google.com with SMTP id
 ffacd0b85a97d-3368b1e056eso473319f8f.3
 for <xen-devel@lists.xenproject.org>; Thu, 04 Jan 2024 06:33:19 -0800 (PST)
Received: from [192.168.86.29] ([90.242.36.164])
 by smtp.gmail.com with ESMTPSA id
 n15-20020a5d400f000000b0033662fb321esm33068774wrp.33.2024.01.04.06.33.17
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 04 Jan 2024 06:33:18 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 3451d3ff-ab0e-11ee-98ef-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1704378798; x=1704983598; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=tdLWVidecd4pqMf0ialDaWCHom88oN+zLUYeachWikY=;
        b=c1GO43n8fyAZanMUdeS3CzUdD9KiewOHOJnpwChBWrAXiSzMG+eEkrYlxnfHzkxlQy
         23GjjWQcBPqF6tCo5nps5At/eH0IM54sTcozxLv4JIhsAdpi6q0cGPEHKox+or4au4Cb
         J33S5poCUDgUDAcaQMRXQK6JX0ckR+l7+3+p4=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704378798; x=1704983598;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=tdLWVidecd4pqMf0ialDaWCHom88oN+zLUYeachWikY=;
        b=bDC5qcsCeeXN5ltqqk85j1qfXV7tDYtdPp/3XfATXdlRC89W0U2CdrFtda4wb9DULy
         ptPJKzoMTZDTdu7woIkOXG/pqZs5Ne8JcvoCC2s7aMSWiI+FYxJ8zUa3sUX4wJKstwdf
         qOcjLPVXF8he/NDgKXccsAVBWzdwDApH44is6Ttu/ffnMV/0RgVVTW1gBJGNZbbFdnfw
         AIxaKUsydqTOXlBYpVNCP4Bbc8nZBJ4B5Cdw0wKzsgrZ8vtmRcC5agEYDiJnSbDOeRvR
         04P//YgDoTMLajJ0XFk4Pbcj9euWsKZZlzqucNW2/mQJmEHPkvaIAUodj0v4cq8l4Bj6
         6IWQ==
X-Gm-Message-State: AOJu0YylU2UI2HovJlSQWARY3fSmLdre3BFqhomqqriXwPDiv9Kv2WZj
	XfIu1adWLoUq+fEvU0qgDeYiWjdY3l5xrw==
X-Google-Smtp-Source: AGHT+IFYEzXB/bjpfy6TJUyBflrImP8LFKWzGO+44MEIddFFbjJsV8GngFEa1IWvzdZrSu0xk0NLQw==
X-Received: by 2002:adf:ed8c:0:b0:336:d9ca:5c6c with SMTP id c12-20020adfed8c000000b00336d9ca5c6cmr411705wro.137.1704378798676;
        Thu, 04 Jan 2024 06:33:18 -0800 (PST)
Message-ID: <7d35a648-a69b-4dfb-bf4f-d30272df5e9b@citrix.com>
Date: Thu, 4 Jan 2024 14:33:17 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] xen: Use -Wuninitialized and -Winit-self
Content-Language: en-GB
To: Jan Beulich <jbeulich@suse.com>
Cc: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Wei Liu <wl@xen.org>, Xen-devel <xen-devel@lists.xenproject.org>,
 Roberto Bagnara <roberto.bagnara@bugseng.com>,
 "consulting@bugseng.com" <consulting@bugseng.com>,
 Stefano Stabellini <sstabellini@kernel.org>
References: <20231228193907.3052681-1-andrew.cooper3@citrix.com>
 <1248487f-4852-41f5-9ffd-d4d12897a622@suse.com>
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 xsFNBFLhNn8BEADVhE+Hb8i0GV6mihnnr/uiQQdPF8kUoFzCOPXkf7jQ5sLYeJa0cQi6Penp
 VtiFYznTairnVsN5J+ujSTIb+OlMSJUWV4opS7WVNnxHbFTPYZVQ3erv7NKc2iVizCRZ2Kxn
 srM1oPXWRic8BIAdYOKOloF2300SL/bIpeD+x7h3w9B/qez7nOin5NzkxgFoaUeIal12pXSR
 Q354FKFoy6Vh96gc4VRqte3jw8mPuJQpfws+Pb+swvSf/i1q1+1I4jsRQQh2m6OTADHIqg2E
 ofTYAEh7R5HfPx0EXoEDMdRjOeKn8+vvkAwhviWXTHlG3R1QkbE5M/oywnZ83udJmi+lxjJ5
 YhQ5IzomvJ16H0Bq+TLyVLO/VRksp1VR9HxCzItLNCS8PdpYYz5TC204ViycobYU65WMpzWe
 LFAGn8jSS25XIpqv0Y9k87dLbctKKA14Ifw2kq5OIVu2FuX+3i446JOa2vpCI9GcjCzi3oHV
 e00bzYiHMIl0FICrNJU0Kjho8pdo0m2uxkn6SYEpogAy9pnatUlO+erL4LqFUO7GXSdBRbw5
 gNt25XTLdSFuZtMxkY3tq8MFss5QnjhehCVPEpE6y9ZjI4XB8ad1G4oBHVGK5LMsvg22PfMJ
 ISWFSHoF/B5+lHkCKWkFxZ0gZn33ju5n6/FOdEx4B8cMJt+cWwARAQABzSlBbmRyZXcgQ29v
 cGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPsLBegQTAQgAJAIbAwULCQgHAwUVCgkI
 CwUWAgMBAAIeAQIXgAUCWKD95wIZAQAKCRBlw/kGpdefoHbdD/9AIoR3k6fKl+RFiFpyAhvO
 59ttDFI7nIAnlYngev2XUR3acFElJATHSDO0ju+hqWqAb8kVijXLops0gOfqt3VPZq9cuHlh
 IMDquatGLzAadfFx2eQYIYT+FYuMoPZy/aTUazmJIDVxP7L383grjIkn+7tAv+qeDfE+txL4
 SAm1UHNvmdfgL2/lcmL3xRh7sub3nJilM93RWX1Pe5LBSDXO45uzCGEdst6uSlzYR/MEr+5Z
 JQQ32JV64zwvf/aKaagSQSQMYNX9JFgfZ3TKWC1KJQbX5ssoX/5hNLqxMcZV3TN7kU8I3kjK
 mPec9+1nECOjjJSO/h4P0sBZyIUGfguwzhEeGf4sMCuSEM4xjCnwiBwftR17sr0spYcOpqET
 ZGcAmyYcNjy6CYadNCnfR40vhhWuCfNCBzWnUW0lFoo12wb0YnzoOLjvfD6OL3JjIUJNOmJy
 RCsJ5IA/Iz33RhSVRmROu+TztwuThClw63g7+hoyewv7BemKyuU6FTVhjjW+XUWmS/FzknSi
 dAG+insr0746cTPpSkGl3KAXeWDGJzve7/SBBfyznWCMGaf8E2P1oOdIZRxHgWj0zNr1+ooF
 /PzgLPiCI4OMUttTlEKChgbUTQ+5o0P080JojqfXwbPAyumbaYcQNiH1/xYbJdOFSiBv9rpt
 TQTBLzDKXok86M7BTQRS4TZ/ARAAkgqudHsp+hd82UVkvgnlqZjzz2vyrYfz7bkPtXaGb9H4
 Rfo7mQsEQavEBdWWjbga6eMnDqtu+FC+qeTGYebToxEyp2lKDSoAsvt8w82tIlP/EbmRbDVn
 7bhjBlfRcFjVYw8uVDPptT0TV47vpoCVkTwcyb6OltJrvg/QzV9f07DJswuda1JH3/qvYu0p
 vjPnYvCq4NsqY2XSdAJ02HrdYPFtNyPEntu1n1KK+gJrstjtw7KsZ4ygXYrsm/oCBiVW/OgU
 g/XIlGErkrxe4vQvJyVwg6YH653YTX5hLLUEL1NS4TCo47RP+wi6y+TnuAL36UtK/uFyEuPy
 wwrDVcC4cIFhYSfsO0BumEI65yu7a8aHbGfq2lW251UcoU48Z27ZUUZd2Dr6O/n8poQHbaTd
 6bJJSjzGGHZVbRP9UQ3lkmkmc0+XCHmj5WhwNNYjgbbmML7y0fsJT5RgvefAIFfHBg7fTY/i
 kBEimoUsTEQz+N4hbKwo1hULfVxDJStE4sbPhjbsPCrlXf6W9CxSyQ0qmZ2bXsLQYRj2xqd1
 bpA+1o1j2N4/au1R/uSiUFjewJdT/LX1EklKDcQwpk06Af/N7VZtSfEJeRV04unbsKVXWZAk
 uAJyDDKN99ziC0Wz5kcPyVD1HNf8bgaqGDzrv3TfYjwqayRFcMf7xJaL9xXedMcAEQEAAcLB
 XwQYAQgACQUCUuE2fwIbDAAKCRBlw/kGpdefoG4XEACD1Qf/er8EA7g23HMxYWd3FXHThrVQ
 HgiGdk5Yh632vjOm9L4sd/GCEACVQKjsu98e8o3ysitFlznEns5EAAXEbITrgKWXDDUWGYxd
 pnjj2u+GkVdsOAGk0kxczX6s+VRBhpbBI2PWnOsRJgU2n10PZ3mZD4Xu9kU2IXYmuW+e5KCA
 vTArRUdCrAtIa1k01sPipPPw6dfxx2e5asy21YOytzxuWFfJTGnVxZZSCyLUO83sh6OZhJkk
 b9rxL9wPmpN/t2IPaEKoAc0FTQZS36wAMOXkBh24PQ9gaLJvfPKpNzGD8XWR5HHF0NLIJhgg
 4ZlEXQ2fVp3XrtocHqhu4UZR4koCijgB8sB7Tb0GCpwK+C4UePdFLfhKyRdSXuvY3AHJd4CP
 4JzW0Bzq/WXY3XMOzUTYApGQpnUpdOmuQSfpV9MQO+/jo7r6yPbxT7CwRS5dcQPzUiuHLK9i
 nvjREdh84qycnx0/6dDroYhp0DFv4udxuAvt1h4wGwTPRQZerSm4xaYegEFusyhbZrI0U9tJ
 B8WrhBLXDiYlyJT6zOV2yZFuW47VrLsjYnHwn27hmxTC/7tvG3euCklmkn9Sl9IAKFu29RSo
 d5bD8kMSCYsTqtTfT6W4A3qHGvIDta3ptLYpIAOD2sY3GYq2nf3Bbzx81wZK14JdDDHUX2Rs
 6+ahAA==
In-Reply-To: <1248487f-4852-41f5-9ffd-d4d12897a622@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 04/01/2024 1:41 pm, Jan Beulich wrote:
> On 28.12.2023 20:39, Andrew Cooper wrote:
>> The use of uninitialised data is undefined behaviour.  At -O2 with trivial
>> examples, both Clang and GCC delete the variable, and in the case of a
>> function return, the caller gets whatever was stale in %rax prior to the call.
>>
>> Clang includes -Wuninitialized within -Wall, but GCC only includes it in
>> -Wextra, which is not used by Xen at this time.
>>
>> Furthermore, the specific pattern of assigning a variable to itself in its
>> declaration is only diagnosed by GCC with -Winit-self.  Clang does diagnoise
>> simple forms of this pattern with a plain -Wuninitialized, but it fails to
>> diagnose the instances in Xen that GCC manages to find.
>>
>> GCC, with -Wuninitialized and -Winit-self notices:
>>
>>   arch/x86/time.c: In function ‘read_pt_and_tsc’:
>>   arch/x86/time.c:297:14: error: ‘best’ is used uninitialized in this function [-Werror=uninitialized]
>>     297 |     uint32_t best = best;
>>         |              ^~~~
>>   arch/x86/time.c: In function ‘read_pt_and_tmcct’:
>>   arch/x86/time.c:1022:14: error: ‘best’ is used uninitialized in this function [-Werror=uninitialized]
>>    1022 |     uint64_t best = best;
>>         |              ^~~~
>>
>> and both have logic paths where best can be returned while uninitalised.
> I disagree. In both cases the variables are reliably set during the first
> loop iteration.

I suggest you pay attention to the precision of the integers.

It is hard (likely prohibitively hard) to avoid entering the if(), but
it is not impossible.

The compiler really has emitted logic paths where stack rubble is returned.

> Furthermore this initialize-to-self is a well known pattern to suppress the
> -Wuninitialized induced warnings, originally used by Linux'es
> uninitialized_var().

I'm glad you cited this, because it proves my point.

Notice how it was purged from Linux slowly over the course of 8 years
because it had been shown to create real bugs, by hiding real uses of
uninitialised variables.

I'm honestly surprised that it hasn't come up yet in the MISRA work.

>  If we really want to use -Winit-self (and hence disallow
> use of this pattern even in cases like the ones here, where they're used to
> suppress false positive warnings), this should imo be done separately from
> adding -Wuninitialized, and only after proper weighing of the pros and cons
> (a wider Cc list would be required anyway for the xen/Makefile change).

There are exactly two uses of this antipattern in the entirety of Xen. 
They are both in x86 init code.

Do you honestly think trying to block a patch this clear and obvious is
going to be a good use of anyone's time.

>
>>  In
>> both cases, initialise to ~0 like the associated *_min variable which also
>> gates updating best.
> Considering the affected functions are both __init, this change isn't a big
> problem. But if you were truly concerned of the one theoretical case, you
> can't get away with this either: If the variables really remained unwritten,
> by returning ~0 you'd end up confusing the caller.

The fact this is a crap API design doesn't make it ok to use undefined
behaviour.

Getting ~0 back is strictly less bad than getting stack rubble because
at least it's obviously wrong.

~Andrew


From xen-devel-bounces@lists.xenproject.org Thu Jan 04 15:17:06 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 04 Jan 2024 15:17:06 +0000
Received: from list by lists.xenproject.org with outflank-mailman.661835.1031562 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLPSu-0006iU-HB; Thu, 04 Jan 2024 15:17:00 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 661835.1031562; Thu, 04 Jan 2024 15:17:00 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLPSu-0006iN-Eb; Thu, 04 Jan 2024 15:17:00 +0000
Received: by outflank-mailman (input) for mailman id 661835;
 Thu, 04 Jan 2024 15:16:59 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=BdYS=IO=suse.cz=jack@srs-se1.protection.inumbo.net>)
 id 1rLPSt-0006iH-8Y
 for xen-devel@lists.xenproject.org; Thu, 04 Jan 2024 15:16:59 +0000
Received: from smtp-out1.suse.de (smtp-out1.suse.de [195.135.223.130])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 4c66696b-ab14-11ee-9b0f-b553b5be7939;
 Thu, 04 Jan 2024 16:16:56 +0100 (CET)
Received: from imap1.dmz-prg2.suse.org (imap1.dmz-prg2.suse.org [10.150.64.97])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
 (No client certificate requested)
 by smtp-out1.suse.de (Postfix) with ESMTPS id B3CFB21D82;
 Thu,  4 Jan 2024 15:16:55 +0000 (UTC)
Received: from imap1.dmz-prg2.suse.org (localhost [127.0.0.1])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
 (No client certificate requested)
 by imap1.dmz-prg2.suse.org (Postfix) with ESMTPS id 88C6E13722;
 Thu,  4 Jan 2024 15:16:55 +0000 (UTC)
Received: from dovecot-director2.suse.de ([2a07:de40:b281:106:10:150:64:167])
 by imap1.dmz-prg2.suse.org with ESMTPSA id CnlcIefLlmUgTAAAD6G6ig
 (envelope-from <jack@suse.cz>); Thu, 04 Jan 2024 15:16:55 +0000
Received: by quack3.suse.cz (Postfix, from userid 1000)
 id 21D02A07EF; Thu,  4 Jan 2024 16:16:55 +0100 (CET)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 4c66696b-ab14-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.cz; s=susede2_rsa;
	t=1704381415; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:content-type:content-type:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=FMPvsZKYHk+D5kb1N2CM5rR4TjKGNh05qKhD/IuVB8c=;
	b=mHk6v/mPh0nrF36XeRd9n1G+3dVH07YiQx9gWm/SG7NmXFbckEmPHT+psVuS+Q55O5Ewmm
	fzZp736IzVr5FNkauue7PYolsCdGhN9oZfdxiUjjwUo5SvRhYKG4JdOSw0VhUWvKC+wi2H
	9fs2A0RPq42k8lt/8HUXEBH2gHBffpc=
DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.cz;
	s=susede2_ed25519; t=1704381415;
	h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:content-type:content-type:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=FMPvsZKYHk+D5kb1N2CM5rR4TjKGNh05qKhD/IuVB8c=;
	b=6J4uw5uqBb70vbWXOXdU9583F4KrmBOAGYenVBa6jTwgLx70IbxaS5CKgObceVLtg+Uuvf
	BlSynn3hFCWD0KCQ==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.cz; s=susede2_rsa;
	t=1704381415; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:content-type:content-type:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=FMPvsZKYHk+D5kb1N2CM5rR4TjKGNh05qKhD/IuVB8c=;
	b=mHk6v/mPh0nrF36XeRd9n1G+3dVH07YiQx9gWm/SG7NmXFbckEmPHT+psVuS+Q55O5Ewmm
	fzZp736IzVr5FNkauue7PYolsCdGhN9oZfdxiUjjwUo5SvRhYKG4JdOSw0VhUWvKC+wi2H
	9fs2A0RPq42k8lt/8HUXEBH2gHBffpc=
DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.cz;
	s=susede2_ed25519; t=1704381415;
	h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:content-type:content-type:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=FMPvsZKYHk+D5kb1N2CM5rR4TjKGNh05qKhD/IuVB8c=;
	b=6J4uw5uqBb70vbWXOXdU9583F4KrmBOAGYenVBa6jTwgLx70IbxaS5CKgObceVLtg+Uuvf
	BlSynn3hFCWD0KCQ==
Date: Thu, 4 Jan 2024 16:16:55 +0100
From: Jan Kara <jack@suse.cz>
To: Yu Kuai <yukuai1@huaweicloud.com>
Cc: Jan Kara <jack@suse.cz>, axboe@kernel.dk, roger.pau@citrix.com,
	colyli@suse.de, kent.overstreet@gmail.com, joern@lazybastard.org,
	miquel.raynal@bootlin.com, richard@nod.at, vigneshr@ti.com,
	sth@linux.ibm.com, hoeppner@linux.ibm.com, hca@linux.ibm.com,
	gor@linux.ibm.com, agordeev@linux.ibm.com, jejb@linux.ibm.com,
	martin.petersen@oracle.com, clm@fb.com, josef@toxicpanda.com,
	dsterba@suse.com, viro@zeniv.linux.org.uk, brauner@kernel.org,
	nico@fluxnic.net, xiang@kernel.org, chao@kernel.org, tytso@mit.edu,
	adilger.kernel@dilger.ca, jack@suse.com, konishi.ryusuke@gmail.com,
	willy@infradead.org, akpm@linux-foundation.org, hare@suse.de,
	p.raghav@samsung.com, linux-block@vger.kernel.org,
	linux-kernel@vger.kernel.org, xen-devel@lists.xenproject.org,
	linux-bcache@vger.kernel.org, linux-mtd@lists.infradead.org,
	linux-s390@vger.kernel.org, linux-scsi@vger.kernel.org,
	linux-bcachefs@vger.kernel.org, linux-btrfs@vger.kernel.org,
	linux-fsdevel@vger.kernel.org, linux-erofs@lists.ozlabs.org,
	linux-ext4@vger.kernel.org, linux-nilfs@vger.kernel.org,
	yi.zhang@huawei.com, yangerkun@huawei.com,
	"yukuai (C)" <yukuai3@huawei.com>
Subject: Re: [PATCH RFC v3 for-6.8/block 02/17] xen/blkback: use bdev api in
 xen_update_blkif_status()
Message-ID: <20240104151655.oiqtn6onge2etlcn@quack3>
References: <20231221085712.1766333-1-yukuai1@huaweicloud.com>
 <20231221085712.1766333-3-yukuai1@huaweicloud.com>
 <20240104110631.3vspsvxbbvcpdqdu@quack3>
 <29bfcfc7-62b0-3876-78ce-f7ebe3506eb6@huaweicloud.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <29bfcfc7-62b0-3876-78ce-f7ebe3506eb6@huaweicloud.com>
Authentication-Results: smtp-out1.suse.de;
	none
X-Spam-Score: 1.90
X-Spam-Level: *
X-Spam-Flag: NO
X-Spamd-Result: default: False [1.90 / 50.00];
	 ARC_NA(0.00)[];
	 RCVD_VIA_SMTP_AUTH(0.00)[];
	 URIBL_BLOCKED(0.00)[suse.com:email,huawei.com:email];
	 FROM_HAS_DN(0.00)[];
	 TO_DN_SOME(0.00)[];
	 FREEMAIL_ENVRCPT(0.00)[gmail.com];
	 TO_MATCH_ENVRCPT_ALL(0.00)[];
	 TAGGED_RCPT(0.00)[];
	 MIME_GOOD(-0.10)[text/plain];
	 R_RATELIMIT(0.00)[to_ip_from(RLdan9jouj5dxnqx1npfmn4ucx)];
	 RCVD_COUNT_THREE(0.00)[3];
	 DKIM_SIGNED(0.00)[suse.cz:s=susede2_rsa,suse.cz:s=susede2_ed25519];
	 RCPT_COUNT_TWELVE(0.00)[49];
	 DBL_BLOCKED_OPENRESOLVER(0.00)[suse.com:email,huawei.com:email];
	 FUZZY_BLOCKED(0.00)[rspamd.com];
	 FROM_EQ_ENVFROM(0.00)[];
	 MIME_TRACE(0.00)[0:+];
	 MID_RHS_NOT_FQDN(0.50)[];
	 FREEMAIL_CC(0.00)[suse.cz,kernel.dk,citrix.com,suse.de,gmail.com,lazybastard.org,bootlin.com,nod.at,ti.com,linux.ibm.com,oracle.com,fb.com,toxicpanda.com,suse.com,zeniv.linux.org.uk,kernel.org,fluxnic.net,mit.edu,dilger.ca,infradead.org,linux-foundation.org,samsung.com,vger.kernel.org,lists.xenproject.org,lists.infradead.org,lists.ozlabs.org,huawei.com];
	 RCVD_TLS_ALL(0.00)[];
	 SUSPICIOUS_RECIPS(1.50)[]

Hi Kuai!

On Thu 04-01-24 20:19:05, Yu Kuai wrote:
> 在 2024/01/04 19:06, Jan Kara 写道:
> > On Thu 21-12-23 16:56:57, Yu Kuai wrote:
> > > From: Yu Kuai <yukuai3@huawei.com>
> > > 
> > > Avoid to access bd_inode directly, prepare to remove bd_inode from
> > > block_devcie.
> > > 
> > > Signed-off-by: Yu Kuai <yukuai3@huawei.com>
> > > ---
> > >   drivers/block/xen-blkback/xenbus.c | 3 +--
> > >   1 file changed, 1 insertion(+), 2 deletions(-)
> > > 
> > > diff --git a/drivers/block/xen-blkback/xenbus.c b/drivers/block/xen-blkback/xenbus.c
> > > index e34219ea2b05..e645afa4af57 100644
> > > --- a/drivers/block/xen-blkback/xenbus.c
> > > +++ b/drivers/block/xen-blkback/xenbus.c
> > > @@ -104,8 +104,7 @@ static void xen_update_blkif_status(struct xen_blkif *blkif)
> > >   		xenbus_dev_error(blkif->be->dev, err, "block flush");
> > >   		return;
> > >   	}
> > > -	invalidate_inode_pages2(
> > > -			blkif->vbd.bdev_handle->bdev->bd_inode->i_mapping);
> > > +	invalidate_bdev(blkif->vbd.bdev_handle->bdev);
> > 
> > This function uses invalidate_inode_pages2() while invalidate_bdev() ends
> > up using mapping_try_invalidate() and there are subtle behavioral
> > differences between these two (for example invalidate_inode_pages2() tries
> > to clean dirty pages using the ->launder_folio method). So I think you'll
> > need helper like invalidate_bdev2() for this.
> 
> Thanks for reviewing this patch, I know the differenct between then,
> what I don't understand is that why using invalidate_inode_pages2()
> here.

Well, then the change in behavior should be at least noted in the
changelog.

> sync_blockdev() is just called and 0 is returned, I think in this
> case it's safe to call invalidate_bdev() directly, or am I missing
> other things?

I still think there's a difference. invalidate_inode_pages2() also unmaps
memory mappings which mapping_try_invalidate() does not do. That being said
in xen_update_blkif_status() we seem to be bringing up a virtual block
device so before this function is called, anybody would have hard time
using anything in it. But this definitely needs a confirmation from Xen
maintainers and a good documentation of the behavioral change in the
changelog.

								Honza
-- 
Jan Kara <jack@suse.com>
SUSE Labs, CR


From xen-devel-bounces@lists.xenproject.org Thu Jan 04 15:33:53 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 04 Jan 2024 15:33:53 +0000
Received: from list by lists.xenproject.org with outflank-mailman.661846.1031572 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLPj8-0002ks-1C; Thu, 04 Jan 2024 15:33:46 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 661846.1031572; Thu, 04 Jan 2024 15:33:46 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLPj7-0002kl-UN; Thu, 04 Jan 2024 15:33:45 +0000
Received: by outflank-mailman (input) for mailman id 661846;
 Thu, 04 Jan 2024 15:33:44 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=0by4=IO=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rLPj6-0002jO-B9
 for xen-devel@lists.xenproject.org; Thu, 04 Jan 2024 15:33:44 +0000
Received: from mail-lj1-x234.google.com (mail-lj1-x234.google.com
 [2a00:1450:4864:20::234])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id a3c3d27b-ab16-11ee-9b0f-b553b5be7939;
 Thu, 04 Jan 2024 16:33:42 +0100 (CET)
Received: by mail-lj1-x234.google.com with SMTP id
 38308e7fff4ca-2ccb4adbffbso7641091fa.0
 for <xen-devel@lists.xenproject.org>; Thu, 04 Jan 2024 07:33:42 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 r5-20020a922a05000000b0035ff4335bd6sm7530093ile.19.2024.01.04.07.33.39
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 04 Jan 2024 07:33:41 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: a3c3d27b-ab16-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1704382421; x=1704987221; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=D7+afRLTAZzEL3gTG8+aIdeS1qKWQF/ZgaHX5p3pp9Q=;
        b=WBlVRKsSrwJw16pJSVN4oqk0HEaPIeun/u9kV9dr7Y41DS4JDsRl8NW46rqqeUMhGC
         zqOil+a5hpDhvr6Y5YZimXOQvg2q1Q1LpVcrPJGz0A0XwC1/mIfdeVWI34DiMYthoYhy
         1cBxZ/dwoGfxUlKuYpoIzGSTKzjOK15LHx47l/kz/mxsBA1SHbsBACqY/Fyl3c/h+ZiF
         rT5Y8HlyqXC93HyzwfzsYodYLyo0rdnd9k3LC7ORu+X2IiX8UmvpEj2rSvhsux3S3FoQ
         6I6ogdiNLUbzMyrolbPsXIXbMshjUJh/Ds67cUxs2OUijCzeIjJzCLK/ctfu1hyRg3uG
         vFUg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704382421; x=1704987221;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=D7+afRLTAZzEL3gTG8+aIdeS1qKWQF/ZgaHX5p3pp9Q=;
        b=nHgcdIIpaD9Wl5eHBZ3/8I/lZYgsftiFGVPKyM1cXJpSvYZYEJ8aUza0Uo7cL3ODhM
         kFN7YGwVGkBLATnP8blW779FkQry9L9wW5aFE0iwbesjuXiErjcMWLCV8DWio13vVrT9
         S8uvEKS1foFNbCECnnhDpalmeZkZD2tIxKGF76uA71+EWVhQmdwsHP8+yRUk0Vw2ie+g
         aNs0p3o3JgpOsC0uu3CVzQEZNHG7mErqYQ1+VYrfMOeySAWZBsTjjwFYCkVaARNpx++/
         QKUS15u9AvD+jJrur/P/0BFd2yBwpiL+zUvCaH2Ig0db2ZKe4+CAUoIa3XdwyqpAZRI5
         joPA==
X-Gm-Message-State: AOJu0YyPEdIDdRX1F47W7138as8UJRGDbLaVGN1QhRtoWpSUlgYLSY8I
	TvhRYlrH8+4ps375DJ/dFJQfKh0Mn8xU
X-Google-Smtp-Source: AGHT+IFm7a5CoP2ST7F/19QiivJ+JsvxDKkljiEAP54J8urys4+q4T01PqZ4Kvz4xUlP2jFJom+MuQ==
X-Received: by 2002:a05:651c:1690:b0:2cc:7575:edf9 with SMTP id bd16-20020a05651c169000b002cc7575edf9mr390451ljb.91.1704382421579;
        Thu, 04 Jan 2024 07:33:41 -0800 (PST)
Message-ID: <5fd69614-a236-4a5b-8ec1-8cfea6d28d32@suse.com>
Date: Thu, 4 Jan 2024 16:33:38 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] xen: Use -Wuninitialized and -Winit-self
Content-Language: en-US
To: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Wei Liu <wl@xen.org>, Xen-devel <xen-devel@lists.xenproject.org>,
 Roberto Bagnara <roberto.bagnara@bugseng.com>,
 "consulting@bugseng.com" <consulting@bugseng.com>,
 Stefano Stabellini <sstabellini@kernel.org>
References: <20231228193907.3052681-1-andrew.cooper3@citrix.com>
 <1248487f-4852-41f5-9ffd-d4d12897a622@suse.com>
 <7d35a648-a69b-4dfb-bf4f-d30272df5e9b@citrix.com>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <7d35a648-a69b-4dfb-bf4f-d30272df5e9b@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 04.01.2024 15:33, Andrew Cooper wrote:
> On 04/01/2024 1:41 pm, Jan Beulich wrote:
>> On 28.12.2023 20:39, Andrew Cooper wrote:
>>> The use of uninitialised data is undefined behaviour.  At -O2 with trivial
>>> examples, both Clang and GCC delete the variable, and in the case of a
>>> function return, the caller gets whatever was stale in %rax prior to the call.
>>>
>>> Clang includes -Wuninitialized within -Wall, but GCC only includes it in
>>> -Wextra, which is not used by Xen at this time.
>>>
>>> Furthermore, the specific pattern of assigning a variable to itself in its
>>> declaration is only diagnosed by GCC with -Winit-self.  Clang does diagnoise
>>> simple forms of this pattern with a plain -Wuninitialized, but it fails to
>>> diagnose the instances in Xen that GCC manages to find.
>>>
>>> GCC, with -Wuninitialized and -Winit-self notices:
>>>
>>>   arch/x86/time.c: In function ‘read_pt_and_tsc’:
>>>   arch/x86/time.c:297:14: error: ‘best’ is used uninitialized in this function [-Werror=uninitialized]
>>>     297 |     uint32_t best = best;
>>>         |              ^~~~
>>>   arch/x86/time.c: In function ‘read_pt_and_tmcct’:
>>>   arch/x86/time.c:1022:14: error: ‘best’ is used uninitialized in this function [-Werror=uninitialized]
>>>    1022 |     uint64_t best = best;
>>>         |              ^~~~
>>>
>>> and both have logic paths where best can be returned while uninitalised.
>> I disagree. In both cases the variables are reliably set during the first
>> loop iteration.
> 
> I suggest you pay attention to the precision of the integers.
> 
> It is hard (likely prohibitively hard) to avoid entering the if(), but
> it is not impossible.

Okay, let's go into the details then. For initialization to be skipped,
two successive rdtsc_ordered() (taking read_pt_and_tsc() as reference)
need to return values 2^^64-1 apart. How do you see that happening, when
(iirc) we've been in agreement more than once that TSC rollover isn't
possible with current or foreseeable hardware?

Things are naturally less unlikely in read_pt_and_tmcct(), for it being
32-bit quantities there. Otoh iirc the APIC timer ticks at rate quite a
bit lower than the TSC. So 2^^32-1 ticks are still a lot of time.

> The compiler really has emitted logic paths where stack rubble is returned.

Of course, since it can't make assumptions on realistic value ranges.

>> Furthermore this initialize-to-self is a well known pattern to suppress the
>> -Wuninitialized induced warnings, originally used by Linux'es
>> uninitialized_var().
> 
> I'm glad you cited this, because it proves my point.
> 
> Notice how it was purged from Linux slowly over the course of 8 years
> because it had been shown to create real bugs, by hiding real uses of
> uninitialised variables.

I'm fully aware of this. The construct was used wrongly in too many cases.
Still I recall times where I was actively asked to use the construct.

> I'm honestly surprised that it hasn't come up yet in the MISRA work.
> 
>>  If we really want to use -Winit-self (and hence disallow
>> use of this pattern even in cases like the ones here, where they're used to
>> suppress false positive warnings), this should imo be done separately from
>> adding -Wuninitialized, and only after proper weighing of the pros and cons
>> (a wider Cc list would be required anyway for the xen/Makefile change).
> 
> There are exactly two uses of this antipattern in the entirety of Xen. 
> They are both in x86 init code.

These two instances aren't all that old. If you deem them antipatterns (I
don't, albeit I see fair room for abuse), why did you not object (suggesting
whatever better alternative)?

> Do you honestly think trying to block a patch this clear and obvious is
> going to be a good use of anyone's time.

Well, you're dong two things at a time, both of which may be clear and
obvious to you. I agree for one half, but I have reservations with the
other. Hence asking that you at least involve all REST maintainers by
Cc-ing them on the patch submission isn't a waste of time, I don't think.
And note, I'm not saying "no" to that second part of the change, but I
do see downsides alongside the upsides you (and I) see.

>>>  In
>>> both cases, initialise to ~0 like the associated *_min variable which also
>>> gates updating best.
>> Considering the affected functions are both __init, this change isn't a big
>> problem. But if you were truly concerned of the one theoretical case, you
>> can't get away with this either: If the variables really remained unwritten,
>> by returning ~0 you'd end up confusing the caller.
> 
> The fact this is a crap API design doesn't make it ok to use undefined
> behaviour.

Thank you for wording it that way.

> Getting ~0 back is strictly less bad than getting stack rubble because
> at least it's obviously wrong.

But then why not change things so there's no issue anymore? Plus I'm not
sure how / whether "obviously wrong" would manifest. I expect it would
be an entirely unobvious boot hang, or other misbehavior.

Jan


From xen-devel-bounces@lists.xenproject.org Thu Jan 04 15:43:47 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 04 Jan 2024 15:43:47 +0000
Received: from list by lists.xenproject.org with outflank-mailman.661850.1031581 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLPsc-0005AS-UG; Thu, 04 Jan 2024 15:43:34 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 661850.1031581; Thu, 04 Jan 2024 15:43:34 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLPsc-0005AL-RB; Thu, 04 Jan 2024 15:43:34 +0000
Received: by outflank-mailman (input) for mailman id 661850;
 Thu, 04 Jan 2024 15:43:34 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=gVu/=IO=gmail.com=morel.dav@srs-se1.protection.inumbo.net>)
 id 1rLPsc-0005AF-Ex
 for xen-devel@lists.xenproject.org; Thu, 04 Jan 2024 15:43:34 +0000
Received: from mail-wr1-f51.google.com (mail-wr1-f51.google.com
 [209.85.221.51]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 038350ff-ab18-11ee-98ef-6d05b1d4d9a1;
 Thu, 04 Jan 2024 16:43:32 +0100 (CET)
Received: by mail-wr1-f51.google.com with SMTP id
 ffacd0b85a97d-336755f1688so542527f8f.0
 for <xen-devel@lists.xenproject.org>; Thu, 04 Jan 2024 07:43:32 -0800 (PST)
Received: from raton (lfbn-idf1-1-1403-15.w90-79.abo.wanadoo.fr. [90.79.94.15])
 by smtp.gmail.com with ESMTPSA id
 j18-20020a5d5652000000b00336ca349bdesm23911759wrw.47.2024.01.04.07.43.30
 for <xen-devel@lists.xenproject.org>
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 04 Jan 2024 07:43:30 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 038350ff-ab18-11ee-98ef-6d05b1d4d9a1
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704383011; x=1704987811;
        h=content-transfer-encoding:content-disposition:mime-version
         :message-id:subject:to:from:date:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to;
        bh=M/jQ392ySSMapBNFvsK70mTOdSzLd1jVw2ztILM002o=;
        b=S5vcMiwMBEwSiap6xKV39STamSlGKUcI/j9XXn7sjT6BHeyMxyYVKdnMxhueL5Amxj
         1F3hsGa6Jw4C4D7Aw7WvLTueTh9FnWsyIXC8AllHKlDH0QE1iE58RDtwXF7uHV9+Wf2e
         3XLhVN4xZgMKVJebgupOeV/ScOLselQJt3pq6CFfBFb+ngv9IJei8/SC3x1JgmgNyxKV
         kxiKN8LthGuUvGSePfielmjggkaJKspcUrOutvKSRtotuWHB4HuzDFtAuAKYPVnB7HG2
         EFMyzCE+U532CQhUvueLQcBqeJ2tWFILSkQIYrjI/DrydaqOggVTOpso+WBCJfxC6PB9
         yg4g==
X-Gm-Message-State: AOJu0YyJXA8zgLFUwDY8BWxKmYawdgSnzTVU+RY63CaBBnlZ/MjaGocv
	0ET9PaCq0BToWzhUwFBHhiYgS2H2Tnz42nxY
X-Google-Smtp-Source: AGHT+IH+mAbvgsB/H9ZDkLmkJ1Xi/nhSj6WBqoCDGsoXKdrPdNAjedsROeiiPEDXlDmn/3Ibl1KCjQ==
X-Received: by 2002:adf:f741:0:b0:336:c9ab:593a with SMTP id z1-20020adff741000000b00336c9ab593amr470733wrp.141.1704383011183;
        Thu, 04 Jan 2024 07:43:31 -0800 (PST)
Date: Thu, 4 Jan 2024 16:43:28 +0100
From: David Morel <david.morel@vates.tech>
To: xen-devel@lists.xenproject.org
Subject: AMD EPYC VM to VM performance investigation
Message-ID: <ZZbSIH_pGjaQr5x-@raton>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: 8bit

Hello,

We have a customer and multiple users on our forum having performances that
seems quite low related to the general performance of the machines on AMD EPYC
Zen hosts when doing VM to VM networking.

Below you'll find a write up about what we had a look at and what's in the
TODO on our side, but in the meantime we would like to ask here for some
feedback, suggestions and possible leads.

To sum up, the VM to VM performance on Zen generation server CPUs seems quite
low, and only minimally scaling when adding threads. They are outperformed by
10 year old AMD desktop cpu and pretty low frequency XEON bronze from 2014.
CPU usage does not seem to be the limiting factor as neither the VM threads or
the kthreads on host seems to go to a 100% cpu usage.

As we're Vates, I'm talking about XCP-ng here, so Xen 4.13.5 and a dom0 kernel
4.19. I did try a Xen 4.18-rc2 and kernel 6.1.56 on a Zen4 epyc, but as it was
borrowed from a colleague I was unsure of the setup, so although it was
actually worse than on my other test setups, I would not consider that a
complete validation the issues is also present on recent Xen versions.

1. Has anybody else noticed a similar behavior?
2. Has anybody done any kind of investigation about it beside us?
3. Any insight and suggestions of other points to look at would be welcome :)

And now the lengthy part about what we tested, I tried to make it shorter and
more legible than a full report…

Investigated
------------

- Bench various cpu with iperf2 (iperf3 is not actually multithreaded):
  - amd fx8320e, xeon 3106: not impacted.
  - epyc 7451, 7443, 7302p, 7313p, 9124: impacted, but the zen4 one scales a
    bit more than zen1, 2 and 3.
  - ryzen 5950x, ryzen 7600: performances should likely be better than
    observed results, but still way better than epycs, and scaling nicely with
    more threads.
- Bench with tinymembench[1]: performances were as expected and didn't show
  issues with rep movsb as discussed in this article[2] and issue[3]. Which
  makes sense as it looks like this issues is related to ERMS support which is
  not present on Zen1 and 2 where the issue has been raised.
- Bench skb allocation with a small kernel module measuring cycles: actually
  same or lower on epyc than on the xeon with higher frequency so can be
  considered faster and likely not related to our issue.
- mitigations: we tried disabling what can be disabled through boot
  parameters, both for xen, dom0 and guests, but this made no differences.
- disabling AVX; Zen cpus before zen4 are know to limit boost and cpu scaling
  when doing heavy AVX load on one core, there was no reason to think this was
  related, but it was a quick test and as expected had no effect.
- localhost iperf bench on dom0 and guests: we noticed that on other machines
  host/guest with 1 threads are almost 1:1, with 4 threads guests are about
  generally not scaling as well in guests. On epyc machines, host tests were
  significantly slower than guests both with 1 and 4 threads, first
  investigation of profiling didn't help finding a cause yet. More in the
  profiling and TODO.
- cpu load: top/htop/xentop all seem to indicate that machines are not under
  full load, queue allocations on dom0 for VIF are by default (1 per vcpu) and
  seem to be all used when traffic is running but at a percentage below 100%
  per core/thread.
- pinning: manually pinning dom0 and guests to the same node and avoiding
  sharing cpu "threads" between host and guests gives a minimal increase of a
  few percents, but nothing drastic. Note, we do not know about the
  ccd/ccx/node mapping on these cpus, so we are not sure all memory access are
  "local".
- sched weight: playing with sched weight to prioritize dom0 did not make a
  difference either, which makes sense as the system are not under full load.
- cpu scaling: it is unlikely the core of the issue, but indeed the cpu
  scaling does not take advantage of the boost, never going above the base
  clock of these cpus. Also it also seems that less cores that the number of
  working kthreads/vcpus are going to base clock, may be normal in regard to
  the system not being fully loaded, to be defined.
  - QUESTION: is the powernow support in xen cpufreq implementation sufficient
    for zen cpus? Recent kernels/distributions use acpi_cpufreq and can use
    amd_pstate or even amd_pstate_epp. More concerning than the turbo boost
    could be the handling of package power limitation used in Zen CPUs that
    could prevent even all cores to base clock, to be checked…

Profiling
---------

We profiled iperf on dom0 and guests on epyc, older amd desktop, and xeon
machines and gathered profiling traces, but analysis are still ongoing.

- localhost:
Client and server were profiled both on dom0 and guests runs for a xeon, an
old FX and a zen platform, to analyze the discrepancy shown by the localhost
tests earlier. It shows we spend a larger chunk of time in the copyout() or
copyin() functions on epyc and fx. This is likely related to the use of
copy_user_generic_string() on epyc (zen1) and old FX, whereas xeon uses
copy_user_enhanced_fast_string(), as it has ERMS support.  But on the same
machine, guests are going way faster, and the implementation of
copy_user_generic_string() is the same between the dom0 and guests, so this is
likely related to other changes in kernel and userland, and not only to these
function. Therefore it likely isn't directly linked to the issue.

- vm to vm: server, client & dom0 -> profiling traces to be analysed.

TODO
----

- More Analysis of profiling traces in VM to VM case
- X2APIC (not enabled on the machines and setup we are using)
- Profiling at xen level / hypercalls
- Tests on a clean install of a newer Xen version
- Dig some more on cpu scaling, likely not the root of the problem but could
  be some gain to make.

[1] https://github.com/ssvb/tinymembench
[2] https://xuanwo.io/2023/04-rust-std-fs-slower-than-python/
[3] https://bugs.launchpad.net/ubuntu/+source/glibc/+bug/2030515

-- 
David Morel


From xen-devel-bounces@lists.xenproject.org Thu Jan 04 16:55:56 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 04 Jan 2024 16:55:56 +0000
Received: from list by lists.xenproject.org with outflank-mailman.661860.1031591 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLR0Q-0000zK-1v; Thu, 04 Jan 2024 16:55:42 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 661860.1031591; Thu, 04 Jan 2024 16:55:42 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLR0P-0000zD-VU; Thu, 04 Jan 2024 16:55:41 +0000
Received: by outflank-mailman (input) for mailman id 661860;
 Thu, 04 Jan 2024 16:55:41 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=8QvE=IO=amd.com=Stewart.Hildebrand@srs-se1.protection.inumbo.net>)
 id 1rLR0O-0000z7-U5
 for xen-devel@lists.xenproject.org; Thu, 04 Jan 2024 16:55:41 +0000
Received: from NAM04-DM6-obe.outbound.protection.outlook.com
 (mail-dm6nam04on20600.outbound.protection.outlook.com
 [2a01:111:f403:2409::600])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 141cf65a-ab22-11ee-9b0f-b553b5be7939;
 Thu, 04 Jan 2024 17:55:36 +0100 (CET)
Received: from SJ2PR07CA0013.namprd07.prod.outlook.com (2603:10b6:a03:505::15)
 by DM4PR12MB6447.namprd12.prod.outlook.com (2603:10b6:8:bf::16) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7135.25; Thu, 4 Jan
 2024 16:55:32 +0000
Received: from CO1PEPF000044F4.namprd05.prod.outlook.com
 (2603:10b6:a03:505:cafe::c1) by SJ2PR07CA0013.outlook.office365.com
 (2603:10b6:a03:505::15) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7159.15 via Frontend
 Transport; Thu, 4 Jan 2024 16:55:31 +0000
Received: from SATLEXMB04.amd.com (165.204.84.17) by
 CO1PEPF000044F4.mail.protection.outlook.com (10.167.241.74) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.7159.9 via Frontend Transport; Thu, 4 Jan 2024 16:55:31 +0000
Received: from SATLEXMB06.amd.com (10.181.40.147) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.34; Thu, 4 Jan
 2024 10:55:30 -0600
Received: from SATLEXMB04.amd.com (10.181.40.145) by SATLEXMB06.amd.com
 (10.181.40.147) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.34; Thu, 4 Jan
 2024 10:55:30 -0600
Received: from [172.23.76.218] (10.180.168.240) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server id 15.1.2507.34 via Frontend
 Transport; Thu, 4 Jan 2024 10:55:29 -0600
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 141cf65a-ab22-11ee-9b0f-b553b5be7939
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=GxM4hv3pqV34ZwYFoh/ZArWw61mKeDxaQLAxSI1qz45vWqg+KEf71OlE20NvfhXYHFXM7rc9O//TZoV27VoADSP9nAwE6fpqrHPRha0GzzGdJB0JeBou7xOMKmKr0qwI/+04rmhHnOsjvjGqNqszCNSQj70T/uoFarRrE3IGi3Trj0xB0Vp68hTc+nD5r74jnodrwFMqsy2whf3pShObIcyIZudyZYuJrBC7X8re2jjcoGMWRQedzgChS5PaB2rM83s6yrrGo+030tzpfff5j/LdpywVFdaY4A2P9RKz10qlXkCK5xuA55Y5BajoKGFGatueBahscE9NWr6KAxfxrw==
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=phW/kb0bfYa3IB96crxmzLVjxMnbOCt1HAlhULMmXU8=;
 b=KU6XTGhFjD24/x2q/vddBqmAoeicd6v2KpsSnUywxs7ZsFWWHjmM8eeA9eSUDI4kdFyNPif1+LENPIQ78rur1/pHN8HjAqj2dPAmPjPL20Rh1l+30yH+b8vD0y1+ZLLuJSGRz1Ah3Iz1QvDYL6iTbtJ4hgsaU26mgI0Q6FCQNtM2CzW4+bD47qIiEEdb4hXZ4Muz/rSqLyfIgUyzDs6tPYMG240o2gAF2GD+7mIXw5ify1DMD6xagma0hOQQPIapbVppniIZMKBedCrPvFKPXIn9+H70/ojIaSfmxjaAcR8pqZnhGqcnyQMLxNyHcMyrJJlHqjK2I+VOYYdgqM4zDg==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=citrix.com 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)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=phW/kb0bfYa3IB96crxmzLVjxMnbOCt1HAlhULMmXU8=;
 b=Hq7w9fOX7fq3vpdIyO5PG7F728rkjDAqRJNUDONExvtSEJpCZd7SRP6Sj9atJMU4OjyG51JzUTqCaJxudUQqQiXDnyALo7HauHV9WaolvCSP75RtyEPnv4H8AQRhn+AGVRYVC+w0w81UP9Hr5zJE4htV+q4YxoiY/USeJpTMm3k=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C
Message-ID: <bd2bcb2e-fe8a-4b4e-a681-8edca4285821@amd.com>
Date: Thu, 4 Jan 2024 11:55:28 -0500
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v11 11/17] vpci/header: program p2m with guest BAR view
Content-Language: en-US
To: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>, Volodymyr Babchuk
	<Volodymyr_Babchuk@epam.com>
CC: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>,
	Oleksandr Andrushchenko <Oleksandr_Andrushchenko@epam.com>, "Daniel P. Smith"
	<dpsmith@apertussolutions.com>
References: <20231202012556.2012281-1-volodymyr_babchuk@epam.com>
 <20231202012556.2012281-12-volodymyr_babchuk@epam.com>
 <ZYRg75b6mUWvQyr7@macbook>
From: Stewart Hildebrand <stewart.hildebrand@amd.com>
In-Reply-To: <ZYRg75b6mUWvQyr7@macbook>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CO1PEPF000044F4:EE_|DM4PR12MB6447:EE_
X-MS-Office365-Filtering-Correlation-Id: 93b8e577-5f25-4ea8-51d6-08dc0d45f655
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam: BCL:0;
X-Microsoft-Antispam-Message-Info:
	tyIHbxX3JfoNkPNdoA8jIgnMtBE8cRwnJH6w6B+Wm/EZGldi4PTCgVin/H+b2WSGVVD/nQZKORobrngeivfIA/uidciGnxSK4a2/WeNCts4MikM5dJ2a3wNc0KhIVqo4m/QMQkD4tY8uF4V9R5Pp9ziyA83necBGW1RhQdfa06B6Zx3N4BUeK4a2IDmiby15Wagyc0LSlOePXDYfjKFlXHkcVyAv+7z1dnHt/2XGKI8P/EW+mbFrkWYGc2lsUb6jzox8QjUUmTMyBFBgEpAPmxqIwmIxbitrk0729G/G1DGhtEG64ZLqOvfPVFXIESNW32K/X+IDpBwAW3SQ9aBGFShV7uovRrlKLJN/v+aumx7MJUFNXGbP8dVyH6CkZxvbsRTblZCsNHsvAuSaDqPLoCI8r4HJQqQkZ9DqOZzo8fe5TBICdwgUyGoiAL3r4yxRgeWNlDTGaZmiAMlAq7jr1QouDsDybkECJ3YXkbbm8P0xINq6TrPBL9F9geJI0D8cpCVyZqluw+tcNxNRLyYzzxw5tsEWxPRlrVtcc79GgO14GXjEy7XsOWLyiH1v3u8A/LIz0+3uLuFDrKFFa17sd/QfuKdX6Q2IjByu8VGI94JWxZ3ObuCVpwtdQKEdY8oEV+Dje6udKFRBBn7X08+mL1Bjr6s7ijtY9YjeCD8gBWAhCvMmc6mMGWflDk3ZUbWLQjOl4EvxKXqKAD9zwAarUwwwO32dVQryMhpzN5Mpxx/bn28VT7b6utNJutGEykL0Pcbify+YXLbg4bzA0N1688h0Ogl7AGncXpSumkjArDTrI0Idgu72kUh8R3GwWhPcP19zon/nktZmsGnm20PlFv/Q1aHpTYhggIjz7KVG3iw=
X-Forefront-Antispam-Report:
	CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230031)(4636009)(346002)(39860400002)(396003)(136003)(376002)(230273577357003)(230173577357003)(230922051799003)(1800799012)(64100799003)(451199024)(82310400011)(186009)(36840700001)(46966006)(40470700004)(426003)(356005)(26005)(2616005)(336012)(36860700001)(83380400001)(81166007)(82740400003)(47076005)(70586007)(70206006)(110136005)(36756003)(54906003)(16576012)(478600001)(31696002)(86362001)(316002)(5660300002)(2906002)(30864003)(31686004)(44832011)(4326008)(8676002)(8936002)(40480700001)(41300700001)(40460700003)(53546011)(36900700001)(43740500002);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Jan 2024 16:55:31.4271
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 93b8e577-5f25-4ea8-51d6-08dc0d45f655
X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com]
X-MS-Exchange-CrossTenant-AuthSource:
	CO1PEPF000044F4.namprd05.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM4PR12MB6447

On 12/21/23 10:59, Roger Pau Monné wrote:
> On Sat, Dec 02, 2023 at 01:27:05AM +0000, Volodymyr Babchuk wrote:
>> From: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>
>>
>> Take into account guest's BAR view and program its p2m accordingly:
>> gfn is guest's view of the BAR and mfn is the physical BAR value.
>> This way hardware domain sees physical BAR values and guest sees
>> emulated ones.
>>
>> Hardware domain continues getting the BARs identity mapped, while for
>> domUs the BARs are mapped at the requested guest address without
>> modifying the BAR address in the device PCI config space.
>>
>> Signed-off-by: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>
>> Signed-off-by: Volodymyr Babchuk <volodymyr_babchuk@epam.com>
>> ---
>> In v11:
>> - Add vmsix_guest_table_addr() and vmsix_guest_table_base() functions
>>   to access guest's view of the VMSIx tables.
>> - Use MFN (not GFN) to check access permissions
>> - Move page offset check to this patch
>> - Call rangeset_remove_range() with correct parameters
>> In v10:
>> - Moved GFN variable definition outside the loop in map_range()
>> - Updated printk error message in map_range()
>> - Now BAR address is always stored in bar->guest_addr, even for
>>   HW dom, this removes bunch of ugly is_hwdom() checks in modify_bars()
>> - vmsix_table_base() now uses .guest_addr instead of .addr
>> In v9:
>> - Extended the commit message
>> - Use bar->guest_addr in modify_bars
>> - Extended printk error message in map_range
>> - Moved map_data initialization so .bar can be initialized during declaration
>> Since v5:
>> - remove debug print in map_range callback
>> - remove "identity" from the debug print
>> Since v4:
>> - moved start_{gfn|mfn} calculation into map_range
>> - pass vpci_bar in the map_data instead of start_{gfn|mfn}
>> - s/guest_addr/guest_reg
>> Since v3:
>> - updated comment (Roger)
>> - removed gfn_add(map->start_gfn, rc); which is wrong
>> - use v->domain instead of v->vpci.pdev->domain
>> - removed odd e.g. in comment
>> - s/d%d/%pd in altered code
>> - use gdprintk for map/unmap logs
>> Since v2:
>> - improve readability for data.start_gfn and restructure ?: construct
>> Since v1:
>>  - s/MSI/MSI-X in comments
>> ---
>>  xen/drivers/vpci/header.c | 79 +++++++++++++++++++++++++++++----------
>>  xen/include/xen/vpci.h    | 13 +++++++
>>  2 files changed, 73 insertions(+), 19 deletions(-)
>>
>> diff --git a/xen/drivers/vpci/header.c b/xen/drivers/vpci/header.c
>> index 7c84cee5d1..21b3fb5579 100644
>> --- a/xen/drivers/vpci/header.c
>> +++ b/xen/drivers/vpci/header.c
>> @@ -33,6 +33,7 @@
>>  
>>  struct map_data {
>>      struct domain *d;
>> +    const struct vpci_bar *bar;
>>      bool map;
>>  };
>>  
>> @@ -40,13 +41,24 @@ static int cf_check map_range(
>>      unsigned long s, unsigned long e, void *data, unsigned long *c)
>>  {
>>      const struct map_data *map = data;
>> +    /* Start address of the BAR as seen by the guest. */
>> +    unsigned long start_gfn = PFN_DOWN(map->bar->guest_addr);
>> +    /* Physical start address of the BAR. */
>> +    mfn_t start_mfn = _mfn(PFN_DOWN(map->bar->addr));
>>      int rc;
>>  
>>      for ( ; ; )
>>      {
>>          unsigned long size = e - s + 1;
>> +        /*
>> +         * Ranges to be mapped don't always start at the BAR start address, as
>> +         * there can be holes or partially consumed ranges. Account for the
>> +         * offset of the current address from the BAR start.
>> +         */
>> +        mfn_t map_mfn = mfn_add(start_mfn, s - start_gfn);
>> +        unsigned long m_end = mfn_x(map_mfn) + size - 1;
>>  
>> -        if ( !iomem_access_permitted(map->d, s, e) )
>> +        if ( !iomem_access_permitted(map->d, mfn_x(map_mfn), m_end) )
>>          {
>>              printk(XENLOG_G_WARNING
>>                     "%pd denied access to MMIO range [%#lx, %#lx]\n",
>> @@ -54,7 +66,8 @@ static int cf_check map_range(
>>              return -EPERM;
>>          }
>>  
>> -        rc = xsm_iomem_mapping(XSM_HOOK, map->d, s, e, map->map);
>> +        rc = xsm_iomem_mapping(XSM_HOOK, map->d, mfn_x(map_mfn), m_end,
>> +                               map->map);
>>          if ( rc )
>>          {
>>              printk(XENLOG_G_WARNING
>> @@ -72,8 +85,8 @@ static int cf_check map_range(
>>           * - {un}map_mmio_regions doesn't support preemption.
>>           */
>>  
>> -        rc = map->map ? map_mmio_regions(map->d, _gfn(s), size, _mfn(s))
>> -                      : unmap_mmio_regions(map->d, _gfn(s), size, _mfn(s));
>> +        rc = map->map ? map_mmio_regions(map->d, _gfn(s), size, map_mfn)
>> +                      : unmap_mmio_regions(map->d, _gfn(s), size, map_mfn);
>>          if ( rc == 0 )
>>          {
>>              *c += size;
>> @@ -82,8 +95,9 @@ static int cf_check map_range(
>>          if ( rc < 0 )
>>          {
>>              printk(XENLOG_G_WARNING
>> -                   "Failed to identity %smap [%lx, %lx] for d%d: %d\n",
>> -                   map->map ? "" : "un", s, e, map->d->domain_id, rc);
>> +                   "Failed to %smap [%lx %lx] -> [%lx %lx] for %pd: %d\n",
>> +                   map->map ? "" : "un", s, e, mfn_x(map_mfn),
>> +                   mfn_x(map_mfn) + size, map->d, rc);
> 
> Seeing the amount of mfn_x calls, it might be better to do the
> calculations as unsigned long, and use _mfn() in the
> {,un}map_mmio_regions() calls.

Agreed, I'll change to unsigned long.

> 
>>              break;
>>          }
>>          ASSERT(rc < size);
>> @@ -162,10 +176,6 @@ static void modify_decoding(const struct pci_dev *pdev, uint16_t cmd,
>>  bool vpci_process_pending(struct vcpu *v)
>>  {
>>      struct pci_dev *pdev = v->vpci.pdev;
>> -    struct map_data data = {
>> -        .d = v->domain,
>> -        .map = v->vpci.cmd & PCI_COMMAND_MEMORY,
>> -    };
>>      struct vpci_header *header = NULL;
>>      unsigned int i;
>>  
>> @@ -185,6 +195,11 @@ bool vpci_process_pending(struct vcpu *v)
>>      for ( i = 0; i < ARRAY_SIZE(header->bars); i++ )
>>      {
>>          struct vpci_bar *bar = &header->bars[i];
>> +        struct map_data data = {
>> +            .d = v->domain,
>> +            .map = v->vpci.cmd & PCI_COMMAND_MEMORY,
>> +            .bar = bar,
>> +        };
>>          int rc;
>>  
>>          if ( rangeset_is_empty(bar->mem) )
>> @@ -235,7 +250,6 @@ bool vpci_process_pending(struct vcpu *v)
>>  static int __init apply_map(struct domain *d, const struct pci_dev *pdev,
>>                              uint16_t cmd)
>>  {
>> -    struct map_data data = { .d = d, .map = true };
>>      struct vpci_header *header = &pdev->vpci->header;
>>      int rc = 0;
>>      unsigned int i;
>> @@ -245,6 +259,7 @@ static int __init apply_map(struct domain *d, const struct pci_dev *pdev,
>>      for ( i = 0; i < ARRAY_SIZE(header->bars); i++ )
>>      {
>>          struct vpci_bar *bar = &header->bars[i];
>> +        struct map_data data = { .d = d, .map = true, .bar = bar };
>>  
>>          if ( rangeset_is_empty(bar->mem) )
>>              continue;
>> @@ -310,12 +325,16 @@ static int modify_bars(const struct pci_dev *pdev, uint16_t cmd, bool rom_only)
>>       * First fill the rangesets with the BAR of this device or with the ROM
>>       * BAR only, depending on whether the guest is toggling the memory decode
>>       * bit of the command register, or the enable bit of the ROM BAR register.
>> +     *
>> +     * For non-hardware domain we use guest physical addresses.
>>       */
>>      for ( i = 0; i < ARRAY_SIZE(header->bars); i++ )
>>      {
>>          struct vpci_bar *bar = &header->bars[i];
>>          unsigned long start = PFN_DOWN(bar->addr);
>>          unsigned long end = PFN_DOWN(bar->addr + bar->size - 1);
>> +        unsigned long start_guest = PFN_DOWN(bar->guest_addr);
>> +        unsigned long end_guest = PFN_DOWN(bar->guest_addr + bar->size - 1);
>>  
>>          if ( !bar->mem )
>>              continue;
>> @@ -335,11 +354,25 @@ static int modify_bars(const struct pci_dev *pdev, uint16_t cmd, bool rom_only)
>>              continue;
>>          }
>>  
>> -        rc = rangeset_add_range(bar->mem, start, end);
>> +        /*
>> +         * Make sure that the guest set address has the same page offset
>> +         * as the physical address on the host or otherwise things won't work as
>> +         * expected.
>> +         */
>> +        if ( PAGE_OFFSET(bar->guest_addr) != PAGE_OFFSET(bar->addr) )
>> +        {
>> +            gprintk(XENLOG_G_WARNING,
>> +                    "%pp: Can't map BAR%d because of page offset mismatch: %lx vs %lx\n",
>> +                    &pdev->sbdf, i, PAGE_OFFSET(bar->guest_addr),
>> +                    PAGE_OFFSET(bar->addr));
>> +            return -EINVAL;
>> +        }
>> +
>> +        rc = rangeset_add_range(bar->mem, start_guest, end_guest);
>>          if ( rc )
>>          {
>>              printk(XENLOG_G_WARNING "Failed to add [%lx, %lx]: %d\n",
>> -                   start, end, rc);
>> +                   start_guest, end_guest, rc);
>>              return rc;
>>          }
>>  
>> @@ -351,12 +384,12 @@ static int modify_bars(const struct pci_dev *pdev, uint16_t cmd, bool rom_only)
>>              if ( rangeset_is_empty(prev_bar->mem) )
>>                  continue;
>>  
>> -            rc = rangeset_remove_range(prev_bar->mem, start, end);
>> +            rc = rangeset_remove_range(prev_bar->mem, start_guest, end_guest);
>>              if ( rc )
>>              {
>>                  gprintk(XENLOG_WARNING,
>>                         "%pp: failed to remove overlapping range [%lx, %lx]: %d\n",
>> -                        &pdev->sbdf, start, end, rc);
>> +                        &pdev->sbdf, start_guest, end_guest, rc);
>>                  return rc;
>>              }
>>          }
>> @@ -365,8 +398,8 @@ static int modify_bars(const struct pci_dev *pdev, uint16_t cmd, bool rom_only)
>>      /* Remove any MSIX regions if present. */
>>      for ( i = 0; msix && i < ARRAY_SIZE(msix->tables); i++ )
>>      {
>> -        unsigned long start = PFN_DOWN(vmsix_table_addr(pdev->vpci, i));
>> -        unsigned long end = PFN_DOWN(vmsix_table_addr(pdev->vpci, i) +
>> +        unsigned long start = PFN_DOWN(vmsix_guest_table_addr(pdev->vpci, i));
>> +        unsigned long end = PFN_DOWN(vmsix_guest_table_addr(pdev->vpci, i) +
>>                                       vmsix_table_size(pdev->vpci, i) - 1);
>>  
>>          for ( j = 0; j < ARRAY_SIZE(header->bars); j++ )
>> @@ -424,8 +457,8 @@ static int modify_bars(const struct pci_dev *pdev, uint16_t cmd, bool rom_only)
>>              for ( i = 0; i < ARRAY_SIZE(tmp->vpci->header.bars); i++ )
>>              {
>>                  const struct vpci_bar *remote_bar = &tmp->vpci->header.bars[i];
>> -                unsigned long start = PFN_DOWN(remote_bar->addr);
>> -                unsigned long end = PFN_DOWN(remote_bar->addr +
>> +                unsigned long start = PFN_DOWN(remote_bar->guest_addr);
>> +                unsigned long end = PFN_DOWN(remote_bar->guest_addr +
>>                                               remote_bar->size - 1);
>>  
>>                  if ( !remote_bar->enabled )
>> @@ -512,6 +545,8 @@ static void cf_check bar_write(
>>      struct vpci_bar *bar = data;
>>      bool hi = false;
>>  
>> +    ASSERT(is_hardware_domain(pdev->domain));
>> +
>>      if ( bar->type == VPCI_BAR_MEM64_HI )
>>      {
>>          ASSERT(reg > PCI_BASE_ADDRESS_0);
>> @@ -542,6 +577,10 @@ static void cf_check bar_write(
>>       */
>>      bar->addr &= ~(0xffffffffULL << (hi ? 32 : 0));
>>      bar->addr |= (uint64_t)val << (hi ? 32 : 0);
>> +    /*
>> +     * Update guest address as well, so hardware domain sees BAR identity mapped
>> +     */
>> +    bar->guest_addr = bar->addr;
>>  
>>      /* Make sure Xen writes back the same value for the BAR RO bits. */
>>      if ( !hi )
>> @@ -793,6 +832,7 @@ static int cf_check init_bars(struct pci_dev *pdev)
>>          }
>>  
>>          bars[i].addr = addr;
>> +        bars[i].guest_addr = addr;
>>          bars[i].size = size;
>>          bars[i].prefetchable = val & PCI_BASE_ADDRESS_MEM_PREFETCH;
>>  
>> @@ -814,6 +854,7 @@ static int cf_check init_bars(struct pci_dev *pdev)
>>              rom->type = VPCI_BAR_ROM;
>>              rom->size = size;
>>              rom->addr = addr;
>> +            rom->guest_addr = addr;
> 
> I think you are missing updating guest_addr also in rom_write()?

Yep, I'll fix

> 
>>              header->rom_enabled = pci_conf_read32(pdev->sbdf, rom_reg) &
>>                                    PCI_ROM_ADDRESS_ENABLE;
>>  
>> diff --git a/xen/include/xen/vpci.h b/xen/include/xen/vpci.h
>> index 18a0eca3da..c39fab4832 100644
>> --- a/xen/include/xen/vpci.h
>> +++ b/xen/include/xen/vpci.h
>> @@ -205,6 +205,19 @@ static inline paddr_t vmsix_table_addr(const struct vpci *vpci, unsigned int nr)
>>             (vpci->msix->tables[nr] & ~PCI_MSIX_BIRMASK);
>>  }
>>  
>> +static inline paddr_t vmsix_guest_table_base(const struct vpci *vpci,
>> +                                             unsigned int nr)
>> +{
>> +    return (vpci->header.bars[vpci->msix->tables[nr] &
>> +           PCI_MSIX_BIRMASK].guest_addr & PCI_BASE_ADDRESS_MEM_MASK);
>> +}
>> +
>> +static inline paddr_t vmsix_guest_table_addr(const struct vpci *vpci,
>> +                                             unsigned int nr)
>> +{
>> +    return vmsix_guest_table_base(vpci, nr) +
>> +           (vpci->msix->tables[nr] & ~PCI_MSIX_BIRMASK);
>> +}
> 
> Do we really need guest versions of this?  I was expecting that for
> guests those functions should always returns the guest addresses of
> the MSI-X structures, which in the dom0 case matches the host address.
> 
> If we really need guest specific versions, it's worth mentioning in
> the commit message explicitly why.

I don't have any good rationale, no. I'll change vmsix_table_base() to use .guest_addr instead of plain .addr.

> 
> Thanks, Roger.


From xen-devel-bounces@lists.xenproject.org Thu Jan 04 17:14:48 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 04 Jan 2024 17:14:48 +0000
Received: from list by lists.xenproject.org with outflank-mailman.661866.1031602 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLRIo-0004fW-O6; Thu, 04 Jan 2024 17:14:42 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 661866.1031602; Thu, 04 Jan 2024 17:14:42 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLRIo-0004fP-LO; Thu, 04 Jan 2024 17:14:42 +0000
Received: by outflank-mailman (input) for mailman id 661866;
 Thu, 04 Jan 2024 17:14:41 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=zyaM=IO=intel.com=tamas.lengyel@srs-se1.protection.inumbo.net>)
 id 1rLRIn-0004fJ-68
 for xen-devel@lists.xenproject.org; Thu, 04 Jan 2024 17:14:41 +0000
Received: from mgamail.intel.com (mgamail.intel.com [134.134.136.100])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id bca6a095-ab24-11ee-98ef-6d05b1d4d9a1;
 Thu, 04 Jan 2024 18:14:38 +0100 (CET)
Received: from orsmga008.jf.intel.com ([10.7.209.65])
 by orsmga105.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;
 04 Jan 2024 09:13:18 -0800
Received: from prasann2-mobl.amr.corp.intel.com (HELO ubuntu.localdomain)
 ([10.212.20.62])
 by orsmga008-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;
 04 Jan 2024 09:13:17 -0800
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: bca6a095-ab24-11ee-98ef-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple;
  d=intel.com; i=@intel.com; q=dns/txt; s=Intel;
  t=1704388478; x=1735924478;
  h=from:to:cc:subject:date:message-id:mime-version:
   content-transfer-encoding;
  bh=T0bQcWJseRf0WGgp4VcVxsN/kO6X4OpiBTQalTQ5bcY=;
  b=ZIOfcyhkgn9Nhxoud+qnDs8gFbESTI7CwWgbjfAzXEtu0EdSUzJD/EH5
   F+fFjLtKSZ1mtRUpfcIJLTn4a4w7/PAlUwoCjzDPWDan8Jxn/y/GaahUZ
   s2LEgXo2GPwIbosleub3+5kJ8Z5FudvWnESkZtEECxICpbPwTQz/NloQv
   9Y0FJDEEd8VG+F9m9FzA9NGqNfn5U2m3K90Nb8cZ59OhVU7WMgA/2D2t9
   55WmaAIthyUW8k3AUq7G3XXrwAs7LpaxzSVgCz75abmBw0w2f7v6KkGgM
   hz3YJgDgLUF7F8v5I6vA/uJPHdDY0xVcxtKvMt0ywZNYbzZoYeUjJt65I
   Q==;
X-IronPort-AV: E=McAfee;i="6600,9927,10943"; a="463698812"
X-IronPort-AV: E=Sophos;i="6.04,331,1695711600"; 
   d="scan'208";a="463698812"
X-ExtLoop1: 1
X-IronPort-AV: E=McAfee;i="6600,9927,10943"; a="809300059"
X-IronPort-AV: E=Sophos;i="6.04,331,1695711600"; 
   d="scan'208";a="809300059"
From: Tamas K Lengyel <tamas.lengyel@intel.com>
To: xen-devel@lists.xenproject.org
Cc: Tamas K Lengyel <tamas.lengyel@intel.com>,
	Jan Beulich <jbeulich@suse.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>,
	Wei Liu <wl@xen.org>
Subject: [PATCH] x86/mwait-idle: fix ubsan warning
Date: Thu,  4 Jan 2024 12:13:07 -0500
Message-Id: <f0ac3890b5e2e1e98bfd3fe5fffcf3c3c031e12c.1704388276.git.tamas.lengyel@intel.com>
X-Mailer: git-send-email 2.34.1
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Fix warning:
(XEN) UBSAN: Undefined behaviour in arch/x86/cpu/mwait-idle.c:1300:44
(XEN) left shift of 15 by 28 places cannot be represented in type 'int'

Signed-off-by: Tamas K Lengyel <tamas.lengyel@intel.com>
Fixes: 5a211704e88 ("mwait-idle: prevent SKL-H boot failure when C8+C9+C10 enabled")
---
 xen/arch/x86/include/asm/mwait.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/xen/arch/x86/include/asm/mwait.h b/xen/arch/x86/include/asm/mwait.h
index f377d9f..9298f98 100644
--- a/xen/arch/x86/include/asm/mwait.h
+++ b/xen/arch/x86/include/asm/mwait.h
@@ -4,7 +4,7 @@
 #include <xen/types.h>
 
 #define MWAIT_SUBSTATE_MASK		0xf
-#define MWAIT_CSTATE_MASK		0xf
+#define MWAIT_CSTATE_MASK		0xfU
 #define MWAIT_SUBSTATE_SIZE		4
 
 #define CPUID_MWAIT_LEAF		5
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Thu Jan 04 17:26:24 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 04 Jan 2024 17:26:24 +0000
Received: from list by lists.xenproject.org with outflank-mailman.661870.1031612 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLRU2-0006mv-PU; Thu, 04 Jan 2024 17:26:18 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 661870.1031612; Thu, 04 Jan 2024 17:26:18 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLRU2-0006mo-L6; Thu, 04 Jan 2024 17:26:18 +0000
Received: by outflank-mailman (input) for mailman id 661870;
 Thu, 04 Jan 2024 17:26:16 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=wSyo=IO=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1rLRU0-0006lw-UG
 for xen-devel@lists.xenproject.org; Thu, 04 Jan 2024 17:26:16 +0000
Received: from mail-wm1-x32f.google.com (mail-wm1-x32f.google.com
 [2a00:1450:4864:20::32f])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 5c8902ad-ab26-11ee-9b0f-b553b5be7939;
 Thu, 04 Jan 2024 18:26:14 +0100 (CET)
Received: by mail-wm1-x32f.google.com with SMTP id
 5b1f17b1804b1-40d604b4b30so10227365e9.1
 for <xen-devel@lists.xenproject.org>; Thu, 04 Jan 2024 09:26:14 -0800 (PST)
Received: from [192.168.86.29] ([90.242.36.164])
 by smtp.gmail.com with ESMTPSA id
 t14-20020a05600c450e00b0040d6d755c90sm6330811wmo.42.2024.01.04.09.26.13
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 04 Jan 2024 09:26:13 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 5c8902ad-ab26-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1704389174; x=1704993974; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=zl3s3dm8rgvRqhVkji3JDLLBa2an6jmyOkMJ3GTxoiQ=;
        b=umwUSr7sI6VH3u99zZ94mmPzPwmm2BY6eBCH6MS06AQ4yZneIjA1gislW39Oulu/W4
         GIueG/0/yThJVGCDsF3qkAWEu8CXedA7bBXrkuR7d5NZUaYjbuQyMpHxZq04Wu2D6A0V
         zNIeaM8u4MBj8x8w1SstFRFxQvjL+/yeoKhhI=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704389174; x=1704993974;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=zl3s3dm8rgvRqhVkji3JDLLBa2an6jmyOkMJ3GTxoiQ=;
        b=NM22tCOv3UREL6ak27VgTFCuGWuBswztmZNFceSiWmMWY5Rime5RjhKvVM9WvVxTU2
         LOxfWDEe/Z1RhF3wvgvGyPhP/3huO0mWkNtBqbxHUkcFptNyPmi8IU/gE+8XQWhppYAH
         c0HenAmrz30p0P/k8P1zvGz0SHRdNS+fdH5ghtaXbTtBKs8sUxjIkuf0oJgaNyNYQ5O4
         Cja0IKPAsxb9qXlOExNQG0Ek9SZjeb2A3BNCtdFR9ZD7P1mwRLY7kKxLbK6W9qJIJLqh
         +5QfFhLtDa36LNDo0E/bDGXAMDbtnSxT9PlwuhBQN+DzqV+UI//i0UKLEUiBvRmJtvxx
         a2tg==
X-Gm-Message-State: AOJu0YyL2RF1RLJCidJWqAeTzs4lCvqJq1himQqcL6q/3vyVIc25oQUS
	LjzRzQsyBQT6SySo1VH/CqDbfUE55tRN3qnuF4NUpSV6aIOMMA==
X-Google-Smtp-Source: AGHT+IE89bsOaI0SdhH2tMVtXiL5KJu0ZMySsYAIDo5PQrmJfDDQXJesU+7YhAtKGOYrMUkRD5pEXg==
X-Received: by 2002:a05:600c:1f88:b0:40d:5c50:f76f with SMTP id je8-20020a05600c1f8800b0040d5c50f76fmr574673wmb.158.1704389173981;
        Thu, 04 Jan 2024 09:26:13 -0800 (PST)
Message-ID: <b19936ee-a5cd-4b3a-8435-9fc3151fc7ef@citrix.com>
Date: Thu, 4 Jan 2024 17:26:13 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] x86/mwait-idle: fix ubsan warning
Content-Language: en-GB
To: Tamas K Lengyel <tamas.lengyel@intel.com>, xen-devel@lists.xenproject.org
Cc: Jan Beulich <jbeulich@suse.com>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger.pau@citrix.com>, Wei Liu <wl@xen.org>
References: <f0ac3890b5e2e1e98bfd3fe5fffcf3c3c031e12c.1704388276.git.tamas.lengyel@intel.com>
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 xsFNBFLhNn8BEADVhE+Hb8i0GV6mihnnr/uiQQdPF8kUoFzCOPXkf7jQ5sLYeJa0cQi6Penp
 VtiFYznTairnVsN5J+ujSTIb+OlMSJUWV4opS7WVNnxHbFTPYZVQ3erv7NKc2iVizCRZ2Kxn
 srM1oPXWRic8BIAdYOKOloF2300SL/bIpeD+x7h3w9B/qez7nOin5NzkxgFoaUeIal12pXSR
 Q354FKFoy6Vh96gc4VRqte3jw8mPuJQpfws+Pb+swvSf/i1q1+1I4jsRQQh2m6OTADHIqg2E
 ofTYAEh7R5HfPx0EXoEDMdRjOeKn8+vvkAwhviWXTHlG3R1QkbE5M/oywnZ83udJmi+lxjJ5
 YhQ5IzomvJ16H0Bq+TLyVLO/VRksp1VR9HxCzItLNCS8PdpYYz5TC204ViycobYU65WMpzWe
 LFAGn8jSS25XIpqv0Y9k87dLbctKKA14Ifw2kq5OIVu2FuX+3i446JOa2vpCI9GcjCzi3oHV
 e00bzYiHMIl0FICrNJU0Kjho8pdo0m2uxkn6SYEpogAy9pnatUlO+erL4LqFUO7GXSdBRbw5
 gNt25XTLdSFuZtMxkY3tq8MFss5QnjhehCVPEpE6y9ZjI4XB8ad1G4oBHVGK5LMsvg22PfMJ
 ISWFSHoF/B5+lHkCKWkFxZ0gZn33ju5n6/FOdEx4B8cMJt+cWwARAQABzSlBbmRyZXcgQ29v
 cGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPsLBegQTAQgAJAIbAwULCQgHAwUVCgkI
 CwUWAgMBAAIeAQIXgAUCWKD95wIZAQAKCRBlw/kGpdefoHbdD/9AIoR3k6fKl+RFiFpyAhvO
 59ttDFI7nIAnlYngev2XUR3acFElJATHSDO0ju+hqWqAb8kVijXLops0gOfqt3VPZq9cuHlh
 IMDquatGLzAadfFx2eQYIYT+FYuMoPZy/aTUazmJIDVxP7L383grjIkn+7tAv+qeDfE+txL4
 SAm1UHNvmdfgL2/lcmL3xRh7sub3nJilM93RWX1Pe5LBSDXO45uzCGEdst6uSlzYR/MEr+5Z
 JQQ32JV64zwvf/aKaagSQSQMYNX9JFgfZ3TKWC1KJQbX5ssoX/5hNLqxMcZV3TN7kU8I3kjK
 mPec9+1nECOjjJSO/h4P0sBZyIUGfguwzhEeGf4sMCuSEM4xjCnwiBwftR17sr0spYcOpqET
 ZGcAmyYcNjy6CYadNCnfR40vhhWuCfNCBzWnUW0lFoo12wb0YnzoOLjvfD6OL3JjIUJNOmJy
 RCsJ5IA/Iz33RhSVRmROu+TztwuThClw63g7+hoyewv7BemKyuU6FTVhjjW+XUWmS/FzknSi
 dAG+insr0746cTPpSkGl3KAXeWDGJzve7/SBBfyznWCMGaf8E2P1oOdIZRxHgWj0zNr1+ooF
 /PzgLPiCI4OMUttTlEKChgbUTQ+5o0P080JojqfXwbPAyumbaYcQNiH1/xYbJdOFSiBv9rpt
 TQTBLzDKXok86M7BTQRS4TZ/ARAAkgqudHsp+hd82UVkvgnlqZjzz2vyrYfz7bkPtXaGb9H4
 Rfo7mQsEQavEBdWWjbga6eMnDqtu+FC+qeTGYebToxEyp2lKDSoAsvt8w82tIlP/EbmRbDVn
 7bhjBlfRcFjVYw8uVDPptT0TV47vpoCVkTwcyb6OltJrvg/QzV9f07DJswuda1JH3/qvYu0p
 vjPnYvCq4NsqY2XSdAJ02HrdYPFtNyPEntu1n1KK+gJrstjtw7KsZ4ygXYrsm/oCBiVW/OgU
 g/XIlGErkrxe4vQvJyVwg6YH653YTX5hLLUEL1NS4TCo47RP+wi6y+TnuAL36UtK/uFyEuPy
 wwrDVcC4cIFhYSfsO0BumEI65yu7a8aHbGfq2lW251UcoU48Z27ZUUZd2Dr6O/n8poQHbaTd
 6bJJSjzGGHZVbRP9UQ3lkmkmc0+XCHmj5WhwNNYjgbbmML7y0fsJT5RgvefAIFfHBg7fTY/i
 kBEimoUsTEQz+N4hbKwo1hULfVxDJStE4sbPhjbsPCrlXf6W9CxSyQ0qmZ2bXsLQYRj2xqd1
 bpA+1o1j2N4/au1R/uSiUFjewJdT/LX1EklKDcQwpk06Af/N7VZtSfEJeRV04unbsKVXWZAk
 uAJyDDKN99ziC0Wz5kcPyVD1HNf8bgaqGDzrv3TfYjwqayRFcMf7xJaL9xXedMcAEQEAAcLB
 XwQYAQgACQUCUuE2fwIbDAAKCRBlw/kGpdefoG4XEACD1Qf/er8EA7g23HMxYWd3FXHThrVQ
 HgiGdk5Yh632vjOm9L4sd/GCEACVQKjsu98e8o3ysitFlznEns5EAAXEbITrgKWXDDUWGYxd
 pnjj2u+GkVdsOAGk0kxczX6s+VRBhpbBI2PWnOsRJgU2n10PZ3mZD4Xu9kU2IXYmuW+e5KCA
 vTArRUdCrAtIa1k01sPipPPw6dfxx2e5asy21YOytzxuWFfJTGnVxZZSCyLUO83sh6OZhJkk
 b9rxL9wPmpN/t2IPaEKoAc0FTQZS36wAMOXkBh24PQ9gaLJvfPKpNzGD8XWR5HHF0NLIJhgg
 4ZlEXQ2fVp3XrtocHqhu4UZR4koCijgB8sB7Tb0GCpwK+C4UePdFLfhKyRdSXuvY3AHJd4CP
 4JzW0Bzq/WXY3XMOzUTYApGQpnUpdOmuQSfpV9MQO+/jo7r6yPbxT7CwRS5dcQPzUiuHLK9i
 nvjREdh84qycnx0/6dDroYhp0DFv4udxuAvt1h4wGwTPRQZerSm4xaYegEFusyhbZrI0U9tJ
 B8WrhBLXDiYlyJT6zOV2yZFuW47VrLsjYnHwn27hmxTC/7tvG3euCklmkn9Sl9IAKFu29RSo
 d5bD8kMSCYsTqtTfT6W4A3qHGvIDta3ptLYpIAOD2sY3GYq2nf3Bbzx81wZK14JdDDHUX2Rs
 6+ahAA==
In-Reply-To: <f0ac3890b5e2e1e98bfd3fe5fffcf3c3c031e12c.1704388276.git.tamas.lengyel@intel.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 04/01/2024 5:13 pm, Tamas K Lengyel wrote:
> Fix warning:
> (XEN) UBSAN: Undefined behaviour in arch/x86/cpu/mwait-idle.c:1300:44
> (XEN) left shift of 15 by 28 places cannot be represented in type 'int'
>
> Signed-off-by: Tamas K Lengyel <tamas.lengyel@intel.com>
> Fixes: 5a211704e88 ("mwait-idle: prevent SKL-H boot failure when C8+C9+C10 enabled")

Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>

It's perhaps worth saying this is in sklh_idle_state_table_update()
which is why it only manifests on a single CPU.  Happy to adjust on commit.

All other uses of this constant shift right first, and then mask, hence
why they don't trip UBSAN.

~Andrew


From xen-devel-bounces@lists.xenproject.org Thu Jan 04 17:57:08 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 04 Jan 2024 17:57:08 +0000
Received: from list by lists.xenproject.org with outflank-mailman.661875.1031622 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLRxd-0003kG-06; Thu, 04 Jan 2024 17:56:53 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 661875.1031622; Thu, 04 Jan 2024 17:56:52 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLRxc-0003k9-Sk; Thu, 04 Jan 2024 17:56:52 +0000
Received: by outflank-mailman (input) for mailman id 661875;
 Thu, 04 Jan 2024 17:56:51 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=eCom=IO=kernel.org=sstabellini@srs-se1.protection.inumbo.net>)
 id 1rLRxb-0003k1-Me
 for xen-devel@lists.xenproject.org; Thu, 04 Jan 2024 17:56:51 +0000
Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 9fef49bc-ab2a-11ee-9b0f-b553b5be7939;
 Thu, 04 Jan 2024 18:56:46 +0100 (CET)
Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58])
 by dfw.source.kernel.org (Postfix) with ESMTP id 9F06A618E1;
 Thu,  4 Jan 2024 17:56:44 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 32E66C433C7;
 Thu,  4 Jan 2024 17:56:42 +0000 (UTC)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 9fef49bc-ab2a-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
	s=k20201202; t=1704391004;
	bh=vtF2BB2dGdve6HMG0pH4hzcVLZ9JrWvpHtdB2Uci+Lc=;
	h=Date:From:To:cc:Subject:In-Reply-To:References:From;
	b=EF/hAgI3KzVja5R/6o/S3e2hYkK0z31FR0VeLDRfdMxkA9XCIV6r45Mw5kTJlwqyL
	 wPG1oeRb4U1UALfb00BT5q4pmXgjiN6HV3xl8EVOaXZFrzARPBDp/9rHJzPwlOugBz
	 MnesYuzLI54h4HoDucKobBZZeusjB5i/vv8DTz4O47Hl2isn3HYHIoro1kki3j/aqS
	 kyK/5otHD3MKqgZd8ZBJIg+KIj01H6NUt3w5iRviF2IgBMiZgpvzL7pDDSuJVHUDJP
	 X4ELFVw5jG+wEva8oaVRAvttgulfKWqOdpUasmpvpABi17OLjfFRt7sU05NVJC0jg6
	 yMIvfAjsomiNA==
Date: Thu, 4 Jan 2024 09:56:40 -0800 (PST)
From: Stefano Stabellini <sstabellini@kernel.org>
X-X-Sender: sstabellini@ubuntu-linux-20-04-desktop
To: Michal Orzel <michal.orzel@amd.com>
cc: Carlo Nonato <carlo.nonato@minervasys.tech>, 
    Stefano Stabellini <sstabellini@kernel.org>, 
    xen-devel@lists.xenproject.org, Andrew Cooper <andrew.cooper3@citrix.com>, 
    George Dunlap <george.dunlap@citrix.com>, Jan Beulich <jbeulich@suse.com>, 
    Julien Grall <julien@xen.org>, Wei Liu <wl@xen.org>, 
    Bertrand Marquis <bertrand.marquis@arm.com>, 
    Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>, 
    Anthony PERARD <anthony.perard@citrix.com>, 
    Juergen Gross <jgross@suse.com>
Subject: Re: [PATCH v5 00/13] Arm cache coloring
In-Reply-To: <fbe44fb6-2be3-4720-8b8e-3a05c0307d25@amd.com>
Message-ID: <alpine.DEB.2.22.394.2401040956170.1322202@ubuntu-linux-20-04-desktop>
References: <20240102095138.17933-1-carlo.nonato@minervasys.tech> <6d652309-50e1-4850-ac52-d086a3a32726@amd.com> <alpine.DEB.2.22.394.2401031601180.1322202@ubuntu-linux-20-04-desktop> <alpine.DEB.2.22.394.2401031748040.1322202@ubuntu-linux-20-04-desktop>
 <CAG+AhRUAOcT9HTj+v4vfz6nqBG4FumYc1of9XcmyTYKtW-66yA@mail.gmail.com> <fbe44fb6-2be3-4720-8b8e-3a05c0307d25@amd.com>
User-Agent: Alpine 2.22 (DEB 394 2020-01-19)
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="8323329-1773981272-1704391004=:1322202"

  This message is in MIME format.  The first part should be readable text,
  while the remaining parts are likely unreadable without MIME-aware tools.

--8323329-1773981272-1704391004=:1322202
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8BIT

On Thu, 4 Jan 2024, Michal Orzel wrote:
> On 04/01/2024 10:37, Carlo Nonato wrote:
> > Hi Stefano,
> > 
> > On Thu, Jan 4, 2024 at 2:55 AM Stefano Stabellini
> > <sstabellini@kernel.org> wrote:
> >>
> >> On Wed, 3 Jan 2024, Stefano Stabellini wrote:
> >>> Also I tried this patch series on the "staging" branch and Xen failed to
> >>> boot, no messages at all from Xen so it must be an early boot failure. I
> >>> am passing this command line options to Xen and running it on QEMU:
> >>>
> >>> dom0_mem=1024M dom0_max_vcpus=1 xen-llc-colors=0 dom0-llc-colors=1-5 llc-way-size=65535 llc-coloring=true
> >>
> >> I managed to make it to work successfully with the following command
> >> line:
> >>
> >> xen-llc-colors=0 dom0-llc-colors=1-5 llc-way-size=64K llc-coloring=on
> >>
> >> I think the problem was llc-way-size that needs to be rounded up (64K
> >> instead of 65535).
> >>
> >> Also I found a few build issues when building for other architectures or
> >> different kconfig options. This patch addresses those issues (however it
> >> is not to be taken as is as the build issues should not be introduced in
> >> the first place and there are probably better way to fix them, but I
> >> hope it can help).
> >>
> >> Cheers,
> >>
> >> Stefano
> >>
> >>
> >> diff --git a/xen/arch/arm/llc-coloring.c b/xen/arch/arm/llc-coloring.c
> >> index f434efc45b..efe5cf3c23 100644
> >> --- a/xen/arch/arm/llc-coloring.c
> >> +++ b/xen/arch/arm/llc-coloring.c
> >> @@ -39,7 +39,7 @@ static unsigned int __ro_after_init xen_num_colors;
> >>
> >>  #define mfn_color_mask              (nr_colors - 1)
> >>  #define mfn_to_color(mfn)           (mfn_x(mfn) & mfn_color_mask)
> >> -#define mfn_set_color(mfn, color)   ((mfn_x(mfn) & ~mfn_color_mask) | (color))
> >> +#define mfn_set_color(mfn, color)   (_mfn((mfn_x(mfn) & ~mfn_color_mask) | (color)))
> > 
> > Thanks for spotting this.
> > 
> >>  /*
> >>   * Parse the coloring configuration given in the buf string, following the
> >> diff --git a/xen/arch/arm/mm.c b/xen/arch/arm/mm.c
> >> index 3bb0c9221f..bf16703e24 100644
> >> --- a/xen/arch/arm/mm.c
> >> +++ b/xen/arch/arm/mm.c
> >> @@ -610,10 +610,10 @@ void __init setup_pagetables(unsigned long boot_phys_offset, paddr_t xen_paddr)
> >>      pte.pt.table = 1;
> >>      xen_second[second_table_offset(FIXMAP_ADDR(0))] = pte;
> >>
> >> +#ifdef CONFIG_ARM_64
> >>      if ( llc_coloring_enabled )
> >>          ttbr = virt_to_maddr(virt_to_reloc_virt(xen_pgtable));
> >>      else
> >> -#ifdef CONFIG_ARM_64
> >>          ttbr = (uintptr_t) xen_pgtable + phys_offset;
> >>  #else
> >>          ttbr = (uintptr_t) cpu0_pgtable + phys_offset;
> >> diff --git a/xen/include/xen/llc-coloring.h b/xen/include/xen/llc-coloring.h
> >> index 7cd481e955..516139c4ff 100644
> >> --- a/xen/include/xen/llc-coloring.h
> >> +++ b/xen/include/xen/llc-coloring.h
> >> @@ -21,7 +21,27 @@
> >>  extern bool llc_coloring_enabled;
> >>  #define llc_coloring_enabled (llc_coloring_enabled)
> >>  #endif
> >> -
> >> +#else
> >> +static inline void *xen_remap_colored(mfn_t xen_fn, paddr_t xen_size)
> >> +{
> >> +    return NULL;
> >> +}
> >> +static inline int domain_set_llc_colors_from_str(struct domain *d, const char *str)
> >> +{
> >> +    return -ENOSYS;
> >> +}
> >> +static inline int dom0_set_llc_colors(struct domain *d)
> >> +{
> >> +    return 0;
> >> +}
> >> +static inline bool llc_coloring_init(void)
> >> +{
> >> +    return false;
> >> +}
> >> +static inline paddr_t xen_colored_map_size(paddr_t size)
> >> +{
> >> +    return 0;
> >> +}
> >>  #endif
> >>
> >>  #ifndef llc_coloring_enabled
> > 
> > Sorry for the compilation mess.
> > 
> > This is definitely a solution, but I wonder if the best thing to do would be
> > to move all signatures in the common header, without the stubs, relying again
> > on DCE. This seems a little strange to me because users of some of those
> > functions are only in arm code, and they always have to be protected with
> > llc_coloring_enabled global variable/macro if, but it works (now I'm
> > compiling also for arm32 and x86).
> There are a lot of places in Xen relying on DCE, so I'd be ok with that (you can wait
> for Stefano's opinion). Furthermore, you already rely on that in case of e.g. domain_set_llc_colors_domctl,
> domain_llc_coloring_free.
 
Yeah I think that would be fine
--8323329-1773981272-1704391004=:1322202--


From xen-devel-bounces@lists.xenproject.org Thu Jan 04 18:39:38 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 04 Jan 2024 18:39:38 +0000
Received: from list by lists.xenproject.org with outflank-mailman.661879.1031633 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLScs-0002du-2l; Thu, 04 Jan 2024 18:39:30 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 661879.1031633; Thu, 04 Jan 2024 18:39:30 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLScr-0002dK-UA; Thu, 04 Jan 2024 18:39:29 +0000
Received: by outflank-mailman (input) for mailman id 661879;
 Thu, 04 Jan 2024 18:39:28 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>) id 1rLScq-0002dE-6U
 for xen-devel@lists.xenproject.org; Thu, 04 Jan 2024 18:39:28 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rLScp-0000hC-Il; Thu, 04 Jan 2024 18:39:27 +0000
Received: from gw1.octic.net ([88.97.20.152] helo=[10.0.1.240])
 by xenbits.xenproject.org with esmtpsa
 (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rLScp-0006Uy-CA; Thu, 04 Jan 2024 18:39:27 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
	s=20200302mail; h=Content-Transfer-Encoding:Content-Type:In-Reply-To:From:
	References:Cc:To:Subject:MIME-Version:Date:Message-ID;
	bh=IEc0qfpWPLF016jVroMDGdIFRKsenq5c6LXn4XMn20U=; b=GcSL04CzXS9G53al2WJUx/dvEx
	uAJLvpFYLYLMC0xT7zaQG9hm3KxFA+jVtC2O3tahXMr4WEWAumCA2RPqr2PBiRc7M0rqZJrXyQtEh
	QXau6YGwO/IFwbfNkPuYGNhXCOJFSx1WHgIqD1jwPomIo2VgQUJqzaKOlQNl05VxjYyA=;
Message-ID: <a407d6da-1e9a-4d9d-8b9f-38696daf31dc@xen.org>
Date: Thu, 4 Jan 2024 18:39:25 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v5 01/13] xen/common: add cache coloring common code
To: Carlo Nonato <carlo.nonato@minervasys.tech>,
 xen-devel@lists.xenproject.org
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 George Dunlap <george.dunlap@citrix.com>, Jan Beulich <jbeulich@suse.com>,
 Stefano Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>,
 Marco Solieri <marco.solieri@minervasys.tech>
References: <20240102095138.17933-1-carlo.nonato@minervasys.tech>
 <20240102095138.17933-2-carlo.nonato@minervasys.tech>
Content-Language: en-GB
From: Julien Grall <julien@xen.org>
In-Reply-To: <20240102095138.17933-2-carlo.nonato@minervasys.tech>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

Hi Carlo,

On 02/01/2024 09:51, Carlo Nonato wrote:
> This commit adds the Last Level Cache (LLC) coloring common header, Kconfig
> options and functions. Since this is an arch specific feature, actual
> implementation is postponed to later patches and Kconfig options are placed
> under xen/arch.
> 
> LLC colors are a property of the domain, so the domain struct has to be
> extended.

The interface below looks ok. I have left some comments below.

> 
> Based on original work from: Luca Miccio <lucmiccio@gmail.com>
> 
> Signed-off-by: Carlo Nonato <carlo.nonato@minervasys.tech>
> Signed-off-by: Marco Solieri <marco.solieri@minervasys.tech>
> ---
> v5:
> - used - instead of _ for filenames
> - removed domain_create_llc_colored()
> - removed stub functions
> - coloring domain fields are now #ifdef protected
> v4:
> - Kconfig options moved to xen/arch
> - removed range for CONFIG_NR_LLC_COLORS
> - added "llc_coloring_enabled" global to later implement the boot-time
>    switch
> - added domain_create_llc_colored() to be able to pass colors
> - added is_domain_llc_colored() macro
> ---
>   xen/arch/Kconfig               | 16 ++++++++++++
>   xen/common/Kconfig             |  3 +++
>   xen/common/domain.c            |  4 +++
>   xen/common/keyhandler.c        |  4 +++
>   xen/include/xen/llc-coloring.h | 46 ++++++++++++++++++++++++++++++++++
>   xen/include/xen/sched.h        |  5 ++++
>   6 files changed, 78 insertions(+)
>   create mode 100644 xen/include/xen/llc-coloring.h
> 
> diff --git a/xen/arch/Kconfig b/xen/arch/Kconfig
> index 67ba38f32f..aad7e9da38 100644
> --- a/xen/arch/Kconfig
> +++ b/xen/arch/Kconfig
> @@ -31,3 +31,19 @@ config NR_NUMA_NODES
>   	  associated with multiple-nodes management. It is the upper bound of
>   	  the number of NUMA nodes that the scheduler, memory allocation and
>   	  other NUMA-aware components can handle.
> +
> +config LLC_COLORING
> +	bool "Last Level Cache (LLC) coloring" if EXPERT
> +	depends on HAS_LLC_COLORING
> +
> +config NR_LLC_COLORS
> +	int "Maximum number of LLC colors"
> +	default 128
> +	depends on LLC_COLORING
> +	help
> +	  Controls the build-time size of various arrays associated with LLC
> +	  coloring. Refer to cache coloring documentation for how to compute the
> +	  number of colors supported by the platform. This is only an upper
> +	  bound. The runtime value is autocomputed or manually set via cmdline.
> +	  The default value corresponds to an 8 MiB 16-ways LLC, which should be
> +	  more than what needed in the general case.
> diff --git a/xen/common/Kconfig b/xen/common/Kconfig
> index 310ad4229c..e383f09d97 100644
> --- a/xen/common/Kconfig
> +++ b/xen/common/Kconfig
> @@ -71,6 +71,9 @@ config HAS_IOPORTS
>   config HAS_KEXEC
>   	bool
>   
> +config HAS_LLC_COLORING
> +	bool
> +
>   config HAS_PMAP
>   	bool
>   
> diff --git a/xen/common/domain.c b/xen/common/domain.c
> index f6f5574996..491585b0bb 100644
> --- a/xen/common/domain.c
> +++ b/xen/common/domain.c
> @@ -7,6 +7,7 @@
>   #include <xen/compat.h>
>   #include <xen/init.h>
>   #include <xen/lib.h>
> +#include <xen/llc-coloring.h>
>   #include <xen/ctype.h>
>   #include <xen/err.h>
>   #include <xen/param.h>
> @@ -1144,6 +1145,9 @@ static void cf_check complete_domain_destroy(struct rcu_head *head)
>       struct vcpu *v;
>       int i;
>   
> +    if ( is_domain_llc_colored(d) )
> +        domain_llc_coloring_free(d);
> +
>       /*
>        * Flush all state for the vCPU previously having run on the current CPU.
>        * This is in particular relevant for x86 HVM ones on VMX, so that this
> diff --git a/xen/common/keyhandler.c b/xen/common/keyhandler.c
> index 99a2d72a02..27c2d324d8 100644
> --- a/xen/common/keyhandler.c
> +++ b/xen/common/keyhandler.c
> @@ -6,6 +6,7 @@
>   #include <xen/debugger.h>
>   #include <xen/delay.h>
>   #include <xen/keyhandler.h>
> +#include <xen/llc-coloring.h>
>   #include <xen/param.h>
>   #include <xen/shutdown.h>
>   #include <xen/event.h>
> @@ -307,6 +308,9 @@ static void cf_check dump_domains(unsigned char key)
>   
>           arch_dump_domain_info(d);
>   
> +        if ( is_domain_llc_colored(d) )
> +            domain_dump_llc_colors(d);
> +
>           rangeset_domain_printk(d);
>   
>           dump_pageframe_info(d);
> diff --git a/xen/include/xen/llc-coloring.h b/xen/include/xen/llc-coloring.h
> new file mode 100644
> index 0000000000..cedd97d4b5
> --- /dev/null
> +++ b/xen/include/xen/llc-coloring.h
> @@ -0,0 +1,46 @@
> +/* SPDX-License-Identifier: GPL-2.0 */

For new SPDX we should use GPL-2.0-only. AFAIK, this is equivalent 
license but with a clearer name.

> +/*
> + * Last Level Cache (LLC) coloring common header
> + *
> + * Copyright (C) 2022 Xilinx Inc.
> + *
> + * Authors:
> + *    Carlo Nonato <carlo.nonato@minervasys.tech>

NIT: We don't usually add the authors in the code and instead rely on 
the Author/Signed-off-by in the commit.

If you want to keep it, then I will query why you added yourself but not 
Marco Solieri or Luca Miccio.

> + */
> +#ifndef __COLORING_H__
> +#define __COLORING_H__
> +
> +#include <xen/sched.h>
> +#include <public/domctl.h>
> +
> +#ifdef CONFIG_HAS_LLC_COLORING
> +
> +#include <asm/llc-coloring.h>
> +
> +#ifdef CONFIG_LLC_COLORING
> +extern bool llc_coloring_enabled;
> +#define llc_coloring_enabled (llc_coloring_enabled)

I don't really understand why you need the define here. Wouldn't it be 
clearer to have a #else and then ...

> +#endif
> +
> +#endif
> +
> +#ifndef llc_coloring_enabled
> +#define llc_coloring_enabled (false)

... define llc_coloring_enabled?

Also NIT: The parentheses are not necessary.

> +#endif
> +
> +#define is_domain_llc_colored(d) (llc_coloring_enabled)

You want to evaluate d. But here I would consider to use a static 
inline. Nowadays, we favor static inline helpers over macros as they add 
typesafety and you don't need to do trick (e.v. (void)(d)) to interpret 
the arguments.

> +
> +void domain_llc_coloring_free(struct domain *d);
> +void domain_dump_llc_colors(struct domain *d);

Looking at the usage, 'd' could be const.

> +
> +#endif /* __COLORING_H__ */
> +
> +/*
> + * Local variables:
> + * mode: C
> + * c-file-style: "BSD"
> + * c-basic-offset: 4
> + * tab-width: 4
> + * indent-tabs-mode: nil
> + * End:
> + */
> diff --git a/xen/include/xen/sched.h b/xen/include/xen/sched.h
> index 9da91e0e62..dae7fab673 100644
> --- a/xen/include/xen/sched.h
> +++ b/xen/include/xen/sched.h
> @@ -626,6 +626,11 @@ struct domain
>   
>       /* Holding CDF_* constant. Internal flags for domain creation. */
>       unsigned int cdf;
> +
> +#ifdef CONFIG_LLC_COLORING
> +    unsigned int *llc_colors;
> +    unsigned int num_llc_colors;
> +#endif
>   };
>   
>   static inline struct page_list_head *page_to_list(

Cheers,

-- 
Julien Grall


From xen-devel-bounces@lists.xenproject.org Thu Jan 04 18:54:15 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 04 Jan 2024 18:54:15 +0000
Received: from list by lists.xenproject.org with outflank-mailman.661883.1031642 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLSr3-0005oC-8f; Thu, 04 Jan 2024 18:54:09 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 661883.1031642; Thu, 04 Jan 2024 18:54:09 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLSr3-0005o5-5B; Thu, 04 Jan 2024 18:54:09 +0000
Received: by outflank-mailman (input) for mailman id 661883;
 Thu, 04 Jan 2024 18:54:08 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=NKvI=IO=gmail.com=olekstysh@srs-se1.protection.inumbo.net>)
 id 1rLSr2-0005nz-AE
 for xen-devel@lists.xenproject.org; Thu, 04 Jan 2024 18:54:08 +0000
Received: from mail-ej1-x633.google.com (mail-ej1-x633.google.com
 [2a00:1450:4864:20::633])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id a31ba564-ab32-11ee-98ef-6d05b1d4d9a1;
 Thu, 04 Jan 2024 19:54:07 +0100 (CET)
Received: by mail-ej1-x633.google.com with SMTP id
 a640c23a62f3a-a28e6392281so92053866b.0
 for <xen-devel@lists.xenproject.org>; Thu, 04 Jan 2024 10:54:06 -0800 (PST)
Received: from EPUAKYIW03DD.. ([91.123.150.198])
 by smtp.gmail.com with ESMTPSA id
 d21-20020a170906305500b00a2699b0fd49sm13966430ejd.86.2024.01.04.10.54.04
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 04 Jan 2024 10:54:05 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: a31ba564-ab32-11ee-98ef-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1704394446; x=1704999246; darn=lists.xenproject.org;
        h=content-transfer-encoding:mime-version:message-id:date:subject:cc
         :to:from:from:to:cc:subject:date:message-id:reply-to;
        bh=jKANwIhqa+LvmlQt2znhD615O1LJ668Njt6YHHfEb+I=;
        b=c7mCVOiiseVvh46CRE6azdsILwdIstpNV/8Zmp0FybiYBvWgFZ/AqMgK/fZmK7pjgX
         72ZQQJoIK4gUXmYMYGpHK93t9/x9CBFazDOF8N7CoCtmGTPPJLKLMDfOEx7pMuNvZyWp
         eU/ZJnVNvz4bvU5qG5MaW2DsBlSwS1xc0vsD+ja+W9hITQycdn5KOMOMlpko2KKHP6L0
         qQsu7jJiZSb+oB3Sy5pL3geEJbWj0HoBwEN9bxocHYR0VKCeh+NwOI5gyvYOMutDjr+l
         GbbizCEaV8bhAY2MC23KRrZmJRbS8qRCcsNkB49BItPUM0YiTBnjHVU/Ai9KOxhELSjm
         6ZDQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704394446; x=1704999246;
        h=content-transfer-encoding:mime-version:message-id:date:subject:cc
         :to:from:x-gm-message-state:from:to:cc:subject:date:message-id
         :reply-to;
        bh=jKANwIhqa+LvmlQt2znhD615O1LJ668Njt6YHHfEb+I=;
        b=s4nmLyYqUtLuciuY5dslNTXzjhHzGewbco4rIOwnn2Svqw6LnDnI3vN1QdXsr+Pgh+
         6nqBI4clJEHWdB0qY06AhIlOKFBnfo+EHsgPmauWER6i5bhzSDvWtqivYpmpQravATQC
         lcjfetgDH5yfvai8V+F6PTqG7zrMqcDHCjYMb59pWYcD6VhuVxwX/HnD21kwLcJ7oOho
         vFmj71DmzsAY4zc8wqyJ6oTmvaNdsqoMpAVJva8iAddB7LQ0KDKF6RYuCm7B2rLN/VIZ
         iAmz6j4oX+cihN0MuCw15tK8mKnbtsbMqsR4WfTTp0ZtjlQ0j1z/R3ogQcbW41MICDJH
         TOiA==
X-Gm-Message-State: AOJu0Yw1/z/oO73l+1P2192K9MtaDZcv0vspfi5bmQ3oVbWtoZ3KRVuE
	kb8OHtpleIR0xjlOtn+jetRwW+irAb0=
X-Google-Smtp-Source: AGHT+IFhdU/VMhwpjMnGX2lcnofrQbURePzE/VM+99mptm3emNVixnMZdqIgEEfDKwqVyqXeZhYK+g==
X-Received: by 2002:a17:906:f810:b0:a23:44e8:81b with SMTP id kh16-20020a170906f81000b00a2344e8081bmr562135ejb.73.1704394445767;
        Thu, 04 Jan 2024 10:54:05 -0800 (PST)
From: Oleksandr Tyshchenko <olekstysh@gmail.com>
To: xen-devel@lists.xenproject.org,
	linux-kernel@vger.kernel.org
Cc: Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>,
	=?UTF-8?q?Christian=20K=C3=B6nig?= <christian.koenig@amd.com>,
	Daniel Vetter <daniel@ffwll.ch>,
	Juergen Gross <jgross@suse.com>,
	Stefano Stabellini <sstabellini@kernel.org>
Subject: [PATCH] xen/gntdev: Fix the abuse of underlying struct page in DMA-buf import
Date: Thu,  4 Jan 2024 20:53:27 +0200
Message-Id: <20240104185327.177376-1-olekstysh@gmail.com>
X-Mailer: git-send-email 2.34.1
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

From: Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>

DO NOT access the underlying struct page of an sg table exported
by DMA-buf in dmabuf_imp_to_refs(), this is not allowed.
Please see drivers/dma-buf/dma-buf.c:mangle_sg_table() for details.

Fortunately, here (for special Xen device) we can avoid using
pages and calculate gfns directly from dma addresses provided by
the sg table.

Suggested-by: Daniel Vetter <daniel@ffwll.ch>
Signed-off-by: Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>
---
Please note, I didn't manage to test the patch against the latest master branch
on real HW (patch was only build tested there). Patch was tested on Arm64
guests using Linux v5.10.41 from vendor's BSP, this is the environment where
running this use-case is possible and to which I have an access (Xen PV display
with zero-copy and backend domain as a buffer provider - be-alloc=1, so dma-buf
import part was involved). A little bit old, but the dma-buf import code
in gntdev-dmabuf.c hasn't been changed much since that time, all context
remains allmost the same according to my code inspection.
---
---
 drivers/xen/gntdev-dmabuf.c | 42 +++++++++++++++----------------------
 1 file changed, 17 insertions(+), 25 deletions(-)

diff --git a/drivers/xen/gntdev-dmabuf.c b/drivers/xen/gntdev-dmabuf.c
index 4440e626b797..0dde49fca9a5 100644
--- a/drivers/xen/gntdev-dmabuf.c
+++ b/drivers/xen/gntdev-dmabuf.c
@@ -11,6 +11,7 @@
 #include <linux/kernel.h>
 #include <linux/errno.h>
 #include <linux/dma-buf.h>
+#include <linux/dma-direct.h>
 #include <linux/slab.h>
 #include <linux/types.h>
 #include <linux/uaccess.h>
@@ -50,7 +51,7 @@ struct gntdev_dmabuf {
 
 	/* Number of pages this buffer has. */
 	int nr_pages;
-	/* Pages of this buffer. */
+	/* Pages of this buffer (only for dma-buf export). */
 	struct page **pages;
 };
 
@@ -484,7 +485,7 @@ static int dmabuf_exp_from_refs(struct gntdev_priv *priv, int flags,
 /* DMA buffer import support. */
 
 static int
-dmabuf_imp_grant_foreign_access(struct page **pages, u32 *refs,
+dmabuf_imp_grant_foreign_access(unsigned long *gfns, u32 *refs,
 				int count, int domid)
 {
 	grant_ref_t priv_gref_head;
@@ -507,7 +508,7 @@ dmabuf_imp_grant_foreign_access(struct page **pages, u32 *refs,
 		}
 
 		gnttab_grant_foreign_access_ref(cur_ref, domid,
-						xen_page_to_gfn(pages[i]), 0);
+						gfns[i], 0);
 		refs[i] = cur_ref;
 	}
 
@@ -529,7 +530,6 @@ static void dmabuf_imp_end_foreign_access(u32 *refs, int count)
 
 static void dmabuf_imp_free_storage(struct gntdev_dmabuf *gntdev_dmabuf)
 {
-	kfree(gntdev_dmabuf->pages);
 	kfree(gntdev_dmabuf->u.imp.refs);
 	kfree(gntdev_dmabuf);
 }
@@ -549,12 +549,6 @@ static struct gntdev_dmabuf *dmabuf_imp_alloc_storage(int count)
 	if (!gntdev_dmabuf->u.imp.refs)
 		goto fail;
 
-	gntdev_dmabuf->pages = kcalloc(count,
-				       sizeof(gntdev_dmabuf->pages[0]),
-				       GFP_KERNEL);
-	if (!gntdev_dmabuf->pages)
-		goto fail;
-
 	gntdev_dmabuf->nr_pages = count;
 
 	for (i = 0; i < count; i++)
@@ -576,7 +570,8 @@ dmabuf_imp_to_refs(struct gntdev_dmabuf_priv *priv, struct device *dev,
 	struct dma_buf *dma_buf;
 	struct dma_buf_attachment *attach;
 	struct sg_table *sgt;
-	struct sg_page_iter sg_iter;
+	struct sg_dma_page_iter sg_iter;
+	unsigned long *gfns;
 	int i;
 
 	dma_buf = dma_buf_get(fd);
@@ -624,26 +619,23 @@ dmabuf_imp_to_refs(struct gntdev_dmabuf_priv *priv, struct device *dev,
 
 	gntdev_dmabuf->u.imp.sgt = sgt;
 
-	/* Now convert sgt to array of pages and check for page validity. */
+	gfns = kcalloc(count, sizeof(*gfns), GFP_KERNEL);
+	if (!gfns)
+		goto fail_unmap;
+
+	/* Now convert sgt to array of gfns without accessing underlying pages. */
 	i = 0;
-	for_each_sgtable_page(sgt, &sg_iter, 0) {
-		struct page *page = sg_page_iter_page(&sg_iter);
-		/*
-		 * Check if page is valid: this can happen if we are given
-		 * a page from VRAM or other resources which are not backed
-		 * by a struct page.
-		 */
-		if (!pfn_valid(page_to_pfn(page))) {
-			ret = ERR_PTR(-EINVAL);
-			goto fail_unmap;
-		}
+	for_each_sgtable_dma_page(sgt, &sg_iter, 0) {
+		dma_addr_t addr = sg_page_iter_dma_address(&sg_iter);
+		unsigned long pfn = bfn_to_pfn(XEN_PFN_DOWN(dma_to_phys(dev, addr)));
 
-		gntdev_dmabuf->pages[i++] = page;
+		gfns[i++] = pfn_to_gfn(pfn);
 	}
 
-	ret = ERR_PTR(dmabuf_imp_grant_foreign_access(gntdev_dmabuf->pages,
+	ret = ERR_PTR(dmabuf_imp_grant_foreign_access(gfns,
 						      gntdev_dmabuf->u.imp.refs,
 						      count, domid));
+	kfree(gfns);
 	if (IS_ERR(ret))
 		goto fail_end_access;
 
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Thu Jan 04 19:25:17 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 04 Jan 2024 19:25:17 +0000
Received: from list by lists.xenproject.org with outflank-mailman.661889.1031651 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLTKw-0002pv-KC; Thu, 04 Jan 2024 19:25:02 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 661889.1031651; Thu, 04 Jan 2024 19:25:02 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLTKw-0002po-HY; Thu, 04 Jan 2024 19:25:02 +0000
Received: by outflank-mailman (input) for mailman id 661889;
 Thu, 04 Jan 2024 19:25:01 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>) id 1rLTKv-0002pi-CN
 for xen-devel@lists.xenproject.org; Thu, 04 Jan 2024 19:25:01 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rLTKu-0001Up-P3; Thu, 04 Jan 2024 19:25:00 +0000
Received: from gw1.octic.net ([88.97.20.152] helo=[10.0.1.240])
 by xenbits.xenproject.org with esmtpsa
 (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rLTKu-0008T2-An; Thu, 04 Jan 2024 19:25:00 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
	s=20200302mail; h=Content-Transfer-Encoding:Content-Type:In-Reply-To:From:
	References:Cc:To:Subject:MIME-Version:Date:Message-ID;
	bh=H5jbqCvL2UaiubVyGvC3lQ8QoAbu3bBC2WrZAd609rc=; b=gz2WmSnUtUi5ih8WVKC3m5UQyL
	YpLr9j8v7cZSfr7PPOgZQYPX3iRJuOGOjZKqbN3v7NELtqbHiezM3jMRjE37yVHP3IaZRAF9y/dp/
	+Mq3wAdBqlZPDfiR6m0rKK3pEkXGC8xMiQ8eeT8rFz93o9XeWyO1rYL3y0g9qjNtaK1w=;
Message-ID: <5eb9fa24-c95e-4ea0-84ef-be74c629c106@xen.org>
Date: Thu, 4 Jan 2024 19:24:58 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v5 02/13] xen/arm: add cache coloring initialization
Content-Language: en-GB
To: Carlo Nonato <carlo.nonato@minervasys.tech>,
 xen-devel@lists.xenproject.org
Cc: Stefano Stabellini <sstabellini@kernel.org>,
 Bertrand Marquis <bertrand.marquis@arm.com>,
 Michal Orzel <michal.orzel@amd.com>,
 Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
 Andrew Cooper <andrew.cooper3@citrix.com>,
 George Dunlap <george.dunlap@citrix.com>, Jan Beulich <jbeulich@suse.com>,
 Wei Liu <wl@xen.org>, Marco Solieri <marco.solieri@minervasys.tech>
References: <20240102095138.17933-1-carlo.nonato@minervasys.tech>
 <20240102095138.17933-3-carlo.nonato@minervasys.tech>
From: Julien Grall <julien@xen.org>
In-Reply-To: <20240102095138.17933-3-carlo.nonato@minervasys.tech>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

Hi Carlo,

On 02/01/2024 09:51, Carlo Nonato wrote:
> This commit implements functions declared in the LLC coloring common header
> for arm64 and adds documentation. It also adds two command line options: a
> runtime switch for the cache coloring feature and the LLC way size
> parameter.
> 
> The feature init function consists of an auto probing of the cache layout
> necessary to retrieve the LLC way size which is used to compute the number
> of platform colors. It also adds a debug-key to dump general cache coloring
> info.
> 
> Static memory allocation and cache coloring are incompatible because static
> memory can't be guaranteed to use only colors assigned to the domain.
> Panic during domUs creation when both are enabled.
> 
> Based on original work from: Luca Miccio <lucmiccio@gmail.com>
> 
> Signed-off-by: Carlo Nonato <carlo.nonato@minervasys.tech>
> Signed-off-by: Marco Solieri <marco.solieri@minervasys.tech>
> ---
> v5:
> - used - instead of _ for filenames
> - moved static-mem check in this patch
> - moved dom0 colors parsing in next patch
> - moved color allocation and configuration in next patch
> - moved check_colors() in next patch
> - colors are now printed in short form
> v4:
> - added "llc-coloring" cmdline option for the boot-time switch
> - dom0 colors are now checked during domain init as for any other domain
> - fixed processor.h masks bit width
> - check for overflow in parse_color_config()
> - check_colors() now checks also that colors are sorted and unique
> ---
>   docs/misc/arm/cache-coloring.rst        |  97 ++++++++++++++
>   docs/misc/xen-command-line.pandoc       |  28 +++++
>   xen/arch/arm/Kconfig                    |   1 +
>   xen/arch/arm/Makefile                   |   1 +
>   xen/arch/arm/dom0less-build.c           |   6 +
>   xen/arch/arm/include/asm/llc-coloring.h |  28 +++++
>   xen/arch/arm/include/asm/processor.h    |  16 +++
>   xen/arch/arm/llc-coloring.c             | 161 ++++++++++++++++++++++++
>   xen/arch/arm/setup.c                    |   7 ++
>   9 files changed, 345 insertions(+)
>   create mode 100644 docs/misc/arm/cache-coloring.rst
>   create mode 100644 xen/arch/arm/include/asm/llc-coloring.h
>   create mode 100644 xen/arch/arm/llc-coloring.c
> 
> diff --git a/docs/misc/arm/cache-coloring.rst b/docs/misc/arm/cache-coloring.rst
> new file mode 100644
> index 0000000000..eabf8f5d1b
> --- /dev/null
> +++ b/docs/misc/arm/cache-coloring.rst
> @@ -0,0 +1,97 @@
> +Xen cache coloring user guide
> +=============================
> +
> +The cache coloring support in Xen allows to reserve Last Level Cache (LLC)
> +partitions for Dom0, DomUs and Xen itself. Currently only ARM64 is supported.
> +
> +To compile LLC coloring support set ``CONFIG_LLC_COLORING=y``.
> +
> +If needed, change the maximum number of colors with
> +``CONFIG_NR_LLC_COLORS=<n>``.
> +
> +Compile Xen and the toolstack and then configure it via
> +`Command line parameters`_.
> +
> +Background
> +**********
> +
> +Cache hierarchy of a modern multi-core CPU typically has first levels dedicated
> +to each core (hence using multiple cache units), while the last level is shared
> +among all of them. Such configuration implies that memory operations on one
> +core (e.g. running a DomU) are able to generate interference on another core
> +(e.g .hosting another DomU). Cache coloring allows eliminating this
> +mutual interference, and thus guaranteeing higher and more predictable
> +performances for memory accesses.
> +The key concept underlying cache coloring is a fragmentation of the memory
> +space into a set of sub-spaces called colors that are mapped to disjoint cache
> +partitions. Technically, the whole memory space is first divided into a number
> +of subsequent regions. Then each region is in turn divided into a number of
> +subsequent sub-colors. The generic i-th color is then obtained by all the
> +i-th sub-colors in each region.
> +
> +::
> +
> +                            Region j            Region j+1
> +                .....................   ............
> +                .                     . .
> +                .                       .
> +            _ _ _______________ _ _____________________ _ _
> +                |     |     |     |     |     |     |
> +                | c_0 | c_1 |     | c_n | c_0 | c_1 |
> +           _ _ _|_____|_____|_ _ _|_____|_____|_____|_ _ _
> +                    :                       :
> +                    :                       :...         ... .
> +                    :                            color 0
> +                    :...........................         ... .
> +                                                :
> +          . . ..................................:
> +
> +There are two pragmatic lesson to be learnt.
> +
> +1. If one wants to avoid cache interference between two domains, different
> +   colors needs to be used for their memory.
> +
> +2. Color assignment must privilege contiguity in the partitioning. E.g.,
> +   assigning colors (0,1) to domain I  and (2,3) to domain  J is better than
> +   assigning colors (0,2) to I and (1,3) to J.
> +
> +How to compute the number of colors
> +***********************************
> +
> +To compute the number of available colors for a specific platform, the size of
> +an LLC way and the page size used by Xen must be known.

Looking at the get_llc_way_size(), you are using CLIDR_EL1 which doesn't 
contains the system caches. They are invisible to the software but I 
guess could have an impact for cache coloring.

Can you clarify if by Last Cache Level, you mean the last visible cache?

> The first parameter can
> +be found in the processor manual or can be also computed dividing the total
> +cache size by the number of its ways. The second parameter is the minimum
> +amount of memory that can be mapped by the hypervisor, thus dividing the way
> +size by the page size, the number of total cache partitions is found. So for
> +example, an Arm Cortex-A53 with a 16-ways associative 1 MiB LLC, can isolate up
> +to 16 colors when pages are 4 KiB in size.
> +
> +Cache layout is probed automatically by Xen itself, but a possibility to
> +manually set the way size it's left for the user to overcome failing situations
> +or for debugging/testing purposes. See `Command line parameters`_ for more
> +information on that.
> +
> +Command line parameters
> +***********************
> +
> +More specific documentation is available at `docs/misc/xen-command-line.pandoc`.
> +
> ++----------------------+-------------------------------+
> +| **Parameter**        | **Description**               |
> ++----------------------+-------------------------------+
> +| ``llc-coloring``     | enable coloring at runtime    |
> ++----------------------+-------------------------------+
> +| ``llc-way-size``     | set the LLC way size          |
> ++----------------------+-------------------------------+
> +
> +Known issues and limitations
> +****************************
> +
> +"xen,static-mem" isn't supported when coloring is enabled
> +#########################################################
> +
> +In the domain configuration, "xen,static-mem" allows memory to be statically
> +allocated to the domain. This isn't possibile when LLC coloring is enabled,
> +because that memory can't be guaranteed to use only colors assigned to the
> +domain.
> diff --git a/docs/misc/xen-command-line.pandoc b/docs/misc/xen-command-line.pandoc
> index 8e65f8bd18..22d2d5b6cf 100644
> --- a/docs/misc/xen-command-line.pandoc
> +++ b/docs/misc/xen-command-line.pandoc
> @@ -1713,6 +1713,34 @@ This option is intended for debugging purposes only.  Enable MSR_DEBUGCTL.LBR
>   in hypervisor context to be able to dump the Last Interrupt/Exception To/From
>   record with other registers.
>   
> +### llc-coloring (arm64)
> +> `= <boolean>`
> +
> +> Default: `false`
> +
> +Flag to enable or disable LLC coloring support at runtime. This options is
> +available only when `CONFIG_LLC_COLORING` is enabled. See the general
> +cache coloring documentation for more info.
> +
> +### llc-way-size (arm64)
> +> `= <size>`
> +
> +> Default: `Obtained from the hardware`
> +
> +Specify the way size of the Last Level Cache. This options is available only
> +when `CONFIG_LLC_COLORING` is enabled. It is an optional, expert-only parameter
> +and it is used to calculate the number of available LLC colors on the platform.
> +It can be obtained by dividing the total LLC size by the number of its
> +associative ways.
> +By default, the value is automatically computed by probing the hardware, but in
> +case of specific needs, it can be manually set. Those include failing probing
> +and debugging/testing purposes so that it's possibile to emulate platforms with

typo: s/possibile/possible/

> +different number of supported colors.
> +An important detail to highlight is that the current implementation of the
> +cache coloring technique requires the number of colors to be a power of 2, and
> +consequently, also the LLC way size must be so. A value that doesn't match this
> +requirement is aligned down to the previous power of 2.

Possibly a matter of taste here, but I would prefer if we simply throw 
an error. This makes more obvious that the size provided by the user was 
incorrect.

> +
>   ### lock-depth-size
>   > `= <integer>`
>   
> diff --git a/xen/arch/arm/Kconfig b/xen/arch/arm/Kconfig
> index 50e9bfae1a..55143f86a9 100644
> --- a/xen/arch/arm/Kconfig
> +++ b/xen/arch/arm/Kconfig
> @@ -8,6 +8,7 @@ config ARM_64
>   	depends on !ARM_32
>   	select 64BIT
>   	select HAS_FAST_MULTIPLY
> +	select HAS_LLC_COLORING
>   
>   config ARM
>   	def_bool y
> diff --git a/xen/arch/arm/Makefile b/xen/arch/arm/Makefile
> index 33c677672f..c9a1cd298d 100644
> --- a/xen/arch/arm/Makefile
> +++ b/xen/arch/arm/Makefile
> @@ -37,6 +37,7 @@ obj-$(CONFIG_IOREQ_SERVER) += ioreq.o
>   obj-y += irq.o
>   obj-y += kernel.init.o
>   obj-$(CONFIG_LIVEPATCH) += livepatch.o
> +obj-$(CONFIG_LLC_COLORING) += llc-coloring.o
>   obj-y += mem_access.o
>   obj-y += mm.o
>   obj-y += monitor.o
> diff --git a/xen/arch/arm/dom0less-build.c b/xen/arch/arm/dom0less-build.c
> index fb63ec6fd1..1142f7f74a 100644
> --- a/xen/arch/arm/dom0less-build.c
> +++ b/xen/arch/arm/dom0less-build.c
> @@ -5,6 +5,7 @@
>   #include <xen/grant_table.h>
>   #include <xen/iocap.h>
>   #include <xen/libfdt/libfdt.h>
> +#include <xen/llc-coloring.h>
>   #include <xen/sched.h>
>   #include <xen/serial.h>
>   #include <xen/sizes.h>
> @@ -879,7 +880,12 @@ void __init create_domUs(void)
>               panic("No more domain IDs available\n");
>   
>           if ( dt_find_property(node, "xen,static-mem", NULL) )
> +        {
> +            if ( llc_coloring_enabled )
> +                panic("LLC coloring and static memory are incompatible\n");
> +
>               flags |= CDF_staticmem;
> +        }
>   
>           if ( dt_property_read_bool(node, "direct-map") )
>           {
> diff --git a/xen/arch/arm/include/asm/llc-coloring.h b/xen/arch/arm/include/asm/llc-coloring.h
> new file mode 100644
> index 0000000000..7885e9e3f5
> --- /dev/null
> +++ b/xen/arch/arm/include/asm/llc-coloring.h
> @@ -0,0 +1,28 @@
> +/* SPDX-License-Identifier: GPL-2.0 */

Please use GPL-2.0-only.

> +/*
> + * Last Level Cache (LLC) coloring support for ARM
> + *
> + * Copyright (C) 2022 Xilinx Inc.
> + *
> + * Authors:
> + *    Luca Miccio <lucmiccio@gmail.com>
> + *    Carlo Nonato <carlo.nonato@minervasys.tech>

Same question as before for the authorship.

> + */
> +#ifndef __ASM_ARM_COLORING_H__
> +#define __ASM_ARM_COLORING_H__
> +
> +#include <xen/init.h>
> +
> +bool __init llc_coloring_init(void);

The __init attribute is not necessary here. It is sufficient on the 
definition.

> +
> +#endif /* __ASM_ARM_COLORING_H__ */
> +
> +/*
> + * Local variables:
> + * mode: C
> + * c-file-style: "BSD"
> + * c-basic-offset: 4
> + * tab-width: 4
> + * indent-tabs-mode: nil
> + * End:
> + */
> diff --git a/xen/arch/arm/include/asm/processor.h b/xen/arch/arm/include/asm/processor.h
> index 8e02410465..fd5e8eba98 100644
> --- a/xen/arch/arm/include/asm/processor.h
> +++ b/xen/arch/arm/include/asm/processor.h
> @@ -18,6 +18,22 @@
>   #define CTR_IDC_SHIFT       28
>   #define CTR_DIC_SHIFT       29
>   
> +/* CCSIDR Current Cache Size ID Register */
> +#define CCSIDR_LINESIZE_MASK            _AC(0x7, ULL)
> +#define CCSIDR_NUMSETS_SHIFT            13
> +#define CCSIDR_NUMSETS_MASK             _AC(0x3fff, ULL)
> +#define CCSIDR_NUMSETS_SHIFT_FEAT_CCIDX 32
> +#define CCSIDR_NUMSETS_MASK_FEAT_CCIDX  _AC(0xffffff, ULL)
> +
> +/* CCSELR Cache Size Selection Register */

Typo: s/CCSELR/CSSELR/

> +#define CCSELR_LEVEL_MASK  _AC(0x7, UL)
> +#define CCSELR_LEVEL_SHIFT 1
> +
> +/* CLIDR Cache Level ID Register */
> +#define CLIDR_CTYPEn_SHIFT(n) (3 * (n - 1))
> +#define CLIDR_CTYPEn_MASK     _AC(0x7, UL)
> +#define CLIDR_CTYPEn_LEVELS   7
> +
>   #define ICACHE_POLICY_VPIPT  0
>   #define ICACHE_POLICY_AIVIVT 1
>   #define ICACHE_POLICY_VIPT   2
> diff --git a/xen/arch/arm/llc-coloring.c b/xen/arch/arm/llc-coloring.c
> new file mode 100644
> index 0000000000..37d647f038
> --- /dev/null
> +++ b/xen/arch/arm/llc-coloring.c
> @@ -0,0 +1,161 @@
> +/* SPDX-License-Identifier: GPL-2.0 */

GPL-2.0-only

> +/*
> + * Last Level Cache (LLC) coloring support for ARM
> + *
> + * Copyright (C) 2022 Xilinx Inc.
> + *
> + * Authors:
> + *    Luca Miccio <lucmiccio@gmail.com>
> + *    Carlo Nonato <carlo.nonato@minervasys.tech>

Same question as before for the authorship.

> + */
> +#include <xen/errno.h>
> +#include <xen/keyhandler.h>
> +#include <xen/llc-coloring.h>
> +#include <xen/param.h>
> +#include <xen/types.h>
> +
> +#include <asm/processor.h>
> +#include <asm/sysregs.h>
> +
> +bool __ro_after_init llc_coloring_enabled;
> +boolean_param("llc-coloring", llc_coloring_enabled);
> +
> +/* Size of an LLC way */
> +static unsigned int __ro_after_init llc_way_size;
> +size_param("llc-way-size", llc_way_size);
> +/* Number of colors available in the LLC */
> +static unsigned int __ro_after_init nr_colors = CONFIG_NR_LLC_COLORS;
> +
> +/* Return the LLC way size by probing the hardware */
> +static unsigned int __init get_llc_way_size(void)
> +{
> +    register_t ccsidr_el1;
> +    register_t clidr_el1 = READ_SYSREG(CLIDR_EL1);
> +    register_t csselr_el1 = READ_SYSREG(CSSELR_EL1);
> +    register_t id_aa64mmfr2_el1 = READ_SYSREG(ID_AA64MMFR2_EL1);
> +    uint32_t ccsidr_numsets_shift = CCSIDR_NUMSETS_SHIFT;
> +    uint32_t ccsidr_numsets_mask = CCSIDR_NUMSETS_MASK;
> +    unsigned int n, line_size, num_sets;
> +
> +    for ( n = CLIDR_CTYPEn_LEVELS;
> +          n != 0 && !((clidr_el1 >> CLIDR_CTYPEn_SHIFT(n)) & CLIDR_CTYPEn_MASK);
> +          n-- );
> +
> +    if ( n == 0 )
> +        return 0;


Shouldn't you check cache type of the level is either 0b011 (Separate 
instruction and cache) or 0b100 (Unified cache)?

> +
> +    WRITE_SYSREG(((n - 1) & CCSELR_LEVEL_MASK) << CCSELR_LEVEL_SHIFT,

NIT: masking (n - 1) looks a bit odd as it already indicates the cache 
level. It actually made me wonder if the other bits have a meaning. So I 
would drop the mask.

> +                 CSSELR_EL1);
> +    isb();
> +
> +    ccsidr_el1 = READ_SYSREG(CCSIDR_EL1);
> +
> +    /* Arm ARM: (Log2(Number of bytes in cache line)) - 4 */
> +    line_size = 1 << ((ccsidr_el1 & CCSIDR_LINESIZE_MASK) + 4);

Please use 1U even thought the shift should not be big enough to result 
to an overflow.

> +
> +    /* If FEAT_CCIDX is enabled, CCSIDR_EL1 has a different bit layout */
> +    if ( (id_aa64mmfr2_el1 >> ID_AA64MMFR2_CCIDX_SHIFT) & 0x7 )
> +    {
> +        ccsidr_numsets_shift = CCSIDR_NUMSETS_SHIFT_FEAT_CCIDX;
> +        ccsidr_numsets_mask = CCSIDR_NUMSETS_MASK_FEAT_CCIDX;
> +    }
> +    /* Arm ARM: (Number of sets in cache) - 1 */
> +    num_sets = ((ccsidr_el1 >> ccsidr_numsets_shift) & ccsidr_numsets_mask) + 1;
> +
> +    printk(XENLOG_INFO "LLC found: L%u (line size: %u bytes, sets num: %u)\n",
> +           n, line_size, num_sets);
> +
> +    /* Restore value in CSSELR_EL1 */
> +    WRITE_SYSREG(csselr_el1, CSSELR_EL1);
> +    isb();
> +
> +    return line_size * num_sets;
> +}
> +
> +static void print_colors(unsigned int *colors, unsigned int num_colors)

I think colors can be const. In general, I would prefer if 
variable/parameters that should not be modified are const.

> +{
> +    unsigned int i;
> +
> +    printk("{ ");
> +    for ( i = 0; i < num_colors; i++ ) {
> +        unsigned int start = colors[i], end = colors[i];
> +
> +        printk("%u", start);
> +
> +        for ( ;
> +              i < num_colors - 1 && colors[i] + 1 == colors[i + 1];
> +              i++, end++ );
> +
> +        if ( start != end )
> +            printk("-%u", end);
> +
> +        if ( i < num_colors - 1 )
> +            printk(", ");
> +    }
> +    printk(" }\n");
> +}
> +
> +static void dump_coloring_info(unsigned char key)
> +{
> +    printk("'%c' pressed -> dumping LLC coloring general info\n", key);
> +    printk("LLC way size: %u KiB\n", llc_way_size >> 10);
> +    printk("Number of LLC colors supported: %u\n", nr_colors);
> +}
> +
> +bool __init llc_coloring_init(void)
> +{
> +    if ( !llc_way_size && !(llc_way_size = get_llc_way_size()) )
> +    {
> +        printk(XENLOG_ERR
> +               "Probed LLC way size is 0 and no custom value provided\n");
> +        return false;
> +    }
> +
> +    /*
> +     * The maximum number of colors must be a power of 2 in order to correctly
> +     * map them to bits of an address, so also the LLC way size must be so.
> +     */
> +    if ( llc_way_size & (llc_way_size - 1) )
> +    {
> +        printk(XENLOG_WARNING "LLC way size (%u) isn't a power of 2.\n",
> +               llc_way_size);
> +        llc_way_size = 1U << flsl(llc_way_size);
> +        printk(XENLOG_WARNING
> +               "Using %u instead. Performances will be suboptimal\n",
> +               llc_way_size);
> +    }
> +
> +    nr_colors = llc_way_size >> PAGE_SHIFT;
> +
> +    if ( nr_colors < 2 || nr_colors > CONFIG_NR_LLC_COLORS )

I didn't find any documentation explaining why we need at least two 
colors. I guess you want to make sure that there is a color for Xen and 
domain. But I wonder what could wrong with just one color (other than 
been pointless)?

> +    {
> +        printk(XENLOG_ERR "Number of LLC colors (%u) not in range [2, %u]\n",
> +               nr_colors, CONFIG_NR_LLC_COLORS);
> +        return false;
> +    }
> +
> +    register_keyhandler('K', dump_coloring_info, "dump LLC coloring info", 1);
> +
> +    return true;
> +}
> +
> +void domain_llc_coloring_free(struct domain *d)
> +{
> +    xfree(d->llc_colors);
> +}
> +
> +void domain_dump_llc_colors(struct domain *d)
> +{
> +    printk("Domain %pd has %u LLC colors: ", d, d->num_llc_colors);
> +    print_colors(d->llc_colors, d->num_llc_colors);
> +}
> +
> +/*
> + * Local variables:
> + * mode: C
> + * c-file-style: "BSD"
> + * c-basic-offset: 4
> + * tab-width: 4
> + * indent-tabs-mode: nil
> + * End:
> + */
> diff --git a/xen/arch/arm/setup.c b/xen/arch/arm/setup.c
> index 59dd9bb25a..4c16b566db 100644
> --- a/xen/arch/arm/setup.c
> +++ b/xen/arch/arm/setup.c
> @@ -12,6 +12,7 @@
>   #include <xen/device_tree.h>
>   #include <xen/domain_page.h>
>   #include <xen/grant_table.h>
> +#include <xen/llc-coloring.h>
>   #include <xen/types.h>
>   #include <xen/string.h>
>   #include <xen/serial.h>
> @@ -746,6 +747,12 @@ void asmlinkage __init start_xen(unsigned long boot_phys_offset,
>       printk("Command line: %s\n", cmdline);
>       cmdline_parse(cmdline);
>   
> +    if ( llc_coloring_enabled )

I would consider to move llc_coloring_enabled in llc_coloring_init(). 
But if you prefer to keep the check here, then I would at least request 
to merge the two ifs. I.e.

if ( llc_coloring_enabled && !llc_coloring_init() )

That said...

> +    {
> +        if ( !llc_coloring_init() )
> +            panic("Xen LLC coloring support: setup failed\n");
> +    }
> +
>       setup_mm();

... shouldn't the coloring happen in setup_mm()? After all, this is part 
of the memory subystem and I suspect this will not work with the 
upcoming MPU support.

>   
>       /* Parse the ACPI tables for possible boot-time configuration */

Cheers,

-- 
Julien Grall


From xen-devel-bounces@lists.xenproject.org Thu Jan 04 19:54:20 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 04 Jan 2024 19:54:20 +0000
Received: from list by lists.xenproject.org with outflank-mailman.661893.1031663 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLTnA-00085u-UD; Thu, 04 Jan 2024 19:54:12 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 661893.1031663; Thu, 04 Jan 2024 19:54:12 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLTnA-00085n-On; Thu, 04 Jan 2024 19:54:12 +0000
Received: by outflank-mailman (input) for mailman id 661893;
 Thu, 04 Jan 2024 19:54:11 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>) id 1rLTn9-00085h-8u
 for xen-devel@lists.xenproject.org; Thu, 04 Jan 2024 19:54:11 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rLTn8-00021f-Gu; Thu, 04 Jan 2024 19:54:10 +0000
Received: from 54-240-197-235.amazon.com ([54.240.197.235] helo=[192.168.4.89])
 by xenbits.xenproject.org with esmtpsa
 (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rLTn8-0001Ae-4s; Thu, 04 Jan 2024 19:54:10 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
	s=20200302mail; h=Content-Transfer-Encoding:Content-Type:In-Reply-To:From:
	References:Cc:To:Subject:MIME-Version:Date:Message-ID;
	bh=C1dY1STPhmBddEIVw3ANp/fqH7PDSqde690anWikGZ8=; b=W1GgTGoc+mSt40qL4u6u+3+Zti
	cYnS9BbRN/dKBgFk6Nl0tKupeY3p8OotzVe1qegMDx/l55vwnwBKfisRBD/zY/7CGF0ldDAT8S5vt
	/jdU6mQg/Wog8VBqA3p3bu5HdGQuhRYokjTM61BKtJnzxL0lK/sFrGEZL1xnMsSL4y5M=;
Message-ID: <046e9949-d126-42b1-90a6-12af540d63bf@xen.org>
Date: Thu, 4 Jan 2024 19:54:07 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v5 03/13] xen/arm: add Dom0 cache coloring support
Content-Language: en-GB
To: Carlo Nonato <carlo.nonato@minervasys.tech>,
 xen-devel@lists.xenproject.org
Cc: Stefano Stabellini <sstabellini@kernel.org>,
 Bertrand Marquis <bertrand.marquis@arm.com>,
 Michal Orzel <michal.orzel@amd.com>,
 Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
 Andrew Cooper <andrew.cooper3@citrix.com>,
 George Dunlap <george.dunlap@citrix.com>, Jan Beulich <jbeulich@suse.com>,
 Wei Liu <wl@xen.org>, Marco Solieri <marco.solieri@minervasys.tech>
References: <20240102095138.17933-1-carlo.nonato@minervasys.tech>
 <20240102095138.17933-4-carlo.nonato@minervasys.tech>
From: Julien Grall <julien@xen.org>
In-Reply-To: <20240102095138.17933-4-carlo.nonato@minervasys.tech>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

Hi Carlo,

On 02/01/2024 09:51, Carlo Nonato wrote:
> This commit allows the user to set the cache coloring configuration for
> Dom0 via a command line parameter.
> Since cache coloring and static memory are incompatible, direct mapping
> Dom0 isn't possible when coloring is enabled.
> 
> A common configuration syntax for cache colors is also introduced.
> 
> Based on original work from: Luca Miccio <lucmiccio@gmail.com>
> 
> Signed-off-by: Carlo Nonato <carlo.nonato@minervasys.tech>
> Signed-off-by: Marco Solieri <marco.solieri@minervasys.tech>
> ---
> v5:
> - Carlo Nonato as the new author
> - moved dom0 colors parsing (parse_colors()) in this patch
> - added dom0_set_llc_colors() to set dom0 colors after creation
> - moved color allocation and checking in this patch
> - error handling when allocating color arrays
> - FIXME: copy pasted allocate_memory() cause it got moved
> v4:
> - dom0 colors are dynamically allocated as for any other domain
>    (colors are duplicated in dom0_colors and in the new array, but logic
>    is simpler)
> ---
>   docs/misc/arm/cache-coloring.rst        |  29 ++++++
>   docs/misc/xen-command-line.pandoc       |   9 ++
>   xen/arch/arm/domain_build.c             |  60 ++++++++++-
>   xen/arch/arm/include/asm/llc-coloring.h |   1 +
>   xen/arch/arm/llc-coloring.c             | 128 ++++++++++++++++++++++++
>   5 files changed, 224 insertions(+), 3 deletions(-)
> 
> diff --git a/docs/misc/arm/cache-coloring.rst b/docs/misc/arm/cache-coloring.rst
> index eabf8f5d1b..acf82c3df8 100644
> --- a/docs/misc/arm/cache-coloring.rst
> +++ b/docs/misc/arm/cache-coloring.rst
> @@ -84,6 +84,35 @@ More specific documentation is available at `docs/misc/xen-command-line.pandoc`.
>   +----------------------+-------------------------------+
>   | ``llc-way-size``     | set the LLC way size          |
>   +----------------------+-------------------------------+
> +| ``dom0-llc-colors``  | Dom0 color configuration      |
> ++----------------------+-------------------------------+
> +
> +Colors selection format
> +***********************
> +
> +Regardless of the memory pool that has to be colored (Xen, Dom0/DomUs),
> +the color selection can be expressed using the same syntax. In particular a
> +comma-separated list of colors or ranges of colors is used.
> +Ranges are hyphen-separated intervals (such as `0-4`) and are inclusive on both
> +sides.
> +
> +Note that:
> +
> +- no spaces are allowed between values.
> +- no overlapping ranges or duplicated colors are allowed.
> +- values must be written in ascending order.
> +
> +Examples:
> +
> ++-------------------+-----------------------------+
> +| **Configuration** | **Actual selection**        |
> ++-------------------+-----------------------------+
> +| 1-2,5-8           | [1, 2, 5, 6, 7, 8]          |
> ++-------------------+-----------------------------+
> +| 4-8,10,11,12      | [4, 5, 6, 7, 8, 10, 11, 12] |
> ++-------------------+-----------------------------+
> +| 0                 | [0]                         |
> ++-------------------+-----------------------------+
>   
>   Known issues and limitations
>   ****************************
> diff --git a/docs/misc/xen-command-line.pandoc b/docs/misc/xen-command-line.pandoc
> index 22d2d5b6cf..51f6adf035 100644
> --- a/docs/misc/xen-command-line.pandoc
> +++ b/docs/misc/xen-command-line.pandoc
> @@ -963,6 +963,15 @@ Controls for the dom0 IOMMU setup.
>   
>   Specify a list of IO ports to be excluded from dom0 access.
>   
> +### dom0-llc-colors (arm64)
> +> `= List of [ <integer> | <integer>-<integer> ]`

Someone reading only xen-command-line.pandoc would not know how each 
item of the list is separated. Can this be clarified?

> +
> +> Default: `All available LLC colors`
> +
> +Specify dom0 LLC color configuration. This options is available only when
> +`CONFIG_LLC_COLORING` is enabled. If the parameter is not set, all available
> +colors are chosen and the user is warned on Xen serial console.

I would drop anything starting from  "and the user ...". This is really 
implementation define and the reader of the doc should not need to know 
that.

> +
>   ### dom0_max_vcpus
>   
>   Either:
> diff --git a/xen/arch/arm/domain_build.c b/xen/arch/arm/domain_build.c
> index 6945b9755d..482c059bfa 100644
> --- a/xen/arch/arm/domain_build.c
> +++ b/xen/arch/arm/domain_build.c
> @@ -2,6 +2,7 @@
>   #include <xen/init.h>
>   #include <xen/compile.h>
>   #include <xen/lib.h>
> +#include <xen/llc-coloring.h>
>   #include <xen/mm.h>
>   #include <xen/param.h>
>   #include <xen/domain_page.h>
> @@ -414,7 +415,7 @@ static void __init allocate_memory_11(struct domain *d,
>       }
>   }
>   
> -#ifdef CONFIG_DOM0LESS_BOOT
> +#if defined(CONFIG_DOM0LESS_BOOT) || defined(CONFIG_LLC_COLORING)
>   bool __init allocate_bank_memory(struct domain *d, struct kernel_info *kinfo,
>                                    gfn_t sgfn, paddr_t tot_size)
>   {
> @@ -478,6 +479,49 @@ bool __init allocate_bank_memory(struct domain *d, struct kernel_info *kinfo,
>   }
>   #endif
>   
> +static void __init allocate_memory(struct domain *d, struct kernel_info *kinfo)

I saw the discussion on the cover letter. I agree that allocate_memory() 
should be moved back here (ideally in a separate patch) to avoid 
duplication.

> +{
> +    unsigned int i;
> +    paddr_t bank_size;
> +
> +    printk(XENLOG_INFO "Allocating mappings totalling %ldMB for %pd:\n",
> +           /* Don't want format this as PRIpaddr (16 digit hex) */
> +           (unsigned long)(kinfo->unassigned_mem >> 20), d);
> +
> +    kinfo->mem.nr_banks = 0;
> +    bank_size = MIN(GUEST_RAM0_SIZE, kinfo->unassigned_mem);
> +    if ( !allocate_bank_memory(d, kinfo, gaddr_to_gfn(GUEST_RAM0_BASE),
> +                               bank_size) )
> +        goto fail;
> +
> +    bank_size = MIN(GUEST_RAM1_SIZE, kinfo->unassigned_mem);
> +    if ( !allocate_bank_memory(d, kinfo, gaddr_to_gfn(GUEST_RAM1_BASE),
> +                               bank_size) )
> +        goto fail;
> +
> +    if ( kinfo->unassigned_mem )
> +        goto fail;
> +
> +    for( i = 0; i < kinfo->mem.nr_banks; i++ )
> +    {
> +        printk(XENLOG_INFO "%pd BANK[%d] %#"PRIpaddr"-%#"PRIpaddr" (%ldMB)\n",
> +               d,
> +               i,
> +               kinfo->mem.bank[i].start,
> +               kinfo->mem.bank[i].start + kinfo->mem.bank[i].size,
> +               /* Don't want format this as PRIpaddr (16 digit hex) */
> +               (unsigned long)(kinfo->mem.bank[i].size >> 20));
> +    }
> +
> +    return;
> +
> +fail:
> +    panic("Failed to allocate requested domain memory."
> +          /* Don't want format this as PRIpaddr (16 digit hex) */
> +          " %ldKB unallocated. Fix the VMs configurations.\n",
> +          (unsigned long)kinfo->unassigned_mem >> 10);
> +}
> +
>   /*
>    * When PCI passthrough is available we want to keep the
>    * "linux,pci-domain" in sync for every host bridge.
> @@ -2072,7 +2116,10 @@ static int __init construct_dom0(struct domain *d)
>       /* type must be set before allocate_memory */
>       d->arch.type = kinfo.type;
>   #endif
> -    allocate_memory_11(d, &kinfo);
> +    if ( is_domain_llc_colored(d) )

To me the choice here is more related to whether the domain direct 
mapped rather than the color itself. So I would rather prefer if we use 
is_domain_direct_mapped() even if this means the compiler will not be 
able to drop optimize the if when cache coloring is disabled.

> +        allocate_memory(d, &kinfo);
> +    else
> +        allocate_memory_11(d, &kinfo);
>       find_gnttab_region(d, &kinfo);
>   
>       rc = process_shm_chosen(d, &kinfo);
> @@ -2116,6 +2163,7 @@ void __init create_dom0(void)
>           .max_maptrack_frames = -1,
>           .grant_opts = XEN_DOMCTL_GRANT_version(opt_gnttab_max_version),
>       };
> +    unsigned int flags = CDF_privileged;
>       int rc;
>   
>       /* The vGIC for DOM0 is exactly emulating the hardware GIC */
> @@ -2143,10 +2191,16 @@ void __init create_dom0(void)
>               panic("SVE vector length error\n");
>       }
>   
> -    dom0 = domain_create(0, &dom0_cfg, CDF_privileged | CDF_directmap);
> +    if ( !llc_coloring_enabled )
> +        flags |= CDF_directmap;
> +
> +    dom0 = domain_create(0, &dom0_cfg, flags);
>       if ( IS_ERR(dom0) )
>           panic("Error creating domain 0 (rc = %ld)\n", PTR_ERR(dom0));
>   
> +    if ( llc_coloring_enabled && (rc = dom0_set_llc_colors(dom0)) )
> +        panic("Error initializing LLC coloring for domain 0 (rc = %d)", rc);
> +
>       if ( alloc_dom0_vcpu0(dom0) == NULL )
>           panic("Error creating domain 0 vcpu0\n");
>   
> diff --git a/xen/arch/arm/include/asm/llc-coloring.h b/xen/arch/arm/include/asm/llc-coloring.h
> index 7885e9e3f5..ee5551e3cc 100644
> --- a/xen/arch/arm/include/asm/llc-coloring.h
> +++ b/xen/arch/arm/include/asm/llc-coloring.h
> @@ -14,6 +14,7 @@
>   #include <xen/init.h>
>   
>   bool __init llc_coloring_init(void);
> +int dom0_set_llc_colors(struct domain *d);
>   
>   #endif /* __ASM_ARM_COLORING_H__ */
>   
> diff --git a/xen/arch/arm/llc-coloring.c b/xen/arch/arm/llc-coloring.c
> index 37d647f038..5ce58aba70 100644
> --- a/xen/arch/arm/llc-coloring.c
> +++ b/xen/arch/arm/llc-coloring.c
> @@ -26,6 +26,63 @@ size_param("llc-way-size", llc_way_size);
>   /* Number of colors available in the LLC */
>   static unsigned int __ro_after_init nr_colors = CONFIG_NR_LLC_COLORS;
>   
> +static unsigned int __ro_after_init dom0_colors[CONFIG_NR_LLC_COLORS];
> +static unsigned int __ro_after_init dom0_num_colors;

Any reason to keep dom0_colors/dom0_num_colors after init?

> +
> +/*
> + * Parse the coloring configuration given in the buf string, following the
> + * syntax below.
> + *
> + * COLOR_CONFIGURATION ::= COLOR | RANGE,...,COLOR | RANGE
> + * RANGE               ::= COLOR-COLOR
> + *
> + * Example: "0,2-6,15-16" represents the set of colors: 0,2,3,4,5,6,15,16.
> + */
> +static int parse_color_config(const char *buf, unsigned int *colors,
> +                              unsigned int *num_colors)
> +{
> +    const char *s = buf;
> +
> +    if ( !colors || !num_colors )
> +        return -EINVAL;
> +
> +    *num_colors = 0;
> +
> +    while ( *s != '\0' )
> +    {
> +        if ( *s != ',' )
> +        {
> +            unsigned int color, start, end;
> +
> +            start = simple_strtoul(s, &s, 0);
> +
> +            if ( *s == '-' )    /* Range */
> +            {
> +                s++;
> +                end = simple_strtoul(s, &s, 0);
> +            }
> +            else                /* Single value */
> +                end = start;
> +
> +            if ( start > end || (end - start) > UINT_MAX - *num_colors ||

I am always confused with operatator predence and this is even more 
confusing because some similar operations have parentheses but not 
others. Can you ask you to use () around UINT_MAX - *num_colors.

> +                 *num_colors + (end - start) >= nr_colors )

Same here. This will make a lot more obvious what you intend to write.

> +                return -EINVAL;
> +            for ( color = start; color <= end; color++ )
> +                colors[(*num_colors)++] = color;
> +        }
> +        else
> +            s++;
> +    }
> +
> +    return *s ? -EINVAL : 0;
> +}
> +
> +static int __init parse_dom0_colors(const char *s)
> +{
> +    return parse_color_config(s, dom0_colors, &dom0_num_colors);
> +}
> +custom_param("dom0-llc-colors", parse_dom0_colors);
> +
>   /* Return the LLC way size by probing the hardware */
>   static unsigned int __init get_llc_way_size(void)
>   {
> @@ -102,6 +159,28 @@ static void dump_coloring_info(unsigned char key)
>       printk("Number of LLC colors supported: %u\n", nr_colors);
>   }
>   
> +static bool check_colors(unsigned int *colors, unsigned int num_colors)
> +{
> +    unsigned int i;
> +
> +    if ( num_colors > nr_colors )
> +    {
> +        printk(XENLOG_ERR "Number of LLC colors requested > %u\n", nr_colors);
> +        return false;
> +    }
> +
> +    for ( i = 0; i < num_colors; i++ )
> +    {
> +        if ( colors[i] >= nr_colors )
> +        {
> +            printk(XENLOG_ERR "LLC color %u >= %u\n", colors[i], nr_colors);
> +            return false;
> +        }
> +    }
> +
> +    return true;
> +}
> +
>   bool __init llc_coloring_init(void)
>   {
>       if ( !llc_way_size && !(llc_way_size = get_llc_way_size()) )
> @@ -150,6 +229,55 @@ void domain_dump_llc_colors(struct domain *d)
>       print_colors(d->llc_colors, d->num_llc_colors);
>   }
>   
> +static int domain_alloc_colors(struct domain *d, unsigned int num_colors)
> +{
> +    d->num_llc_colors = num_colors;

Shouldn't this be set *only* after the array was allocated?

> +
> +    if ( !num_colors )
> +        return 0;
> +
> +    d->llc_colors = xmalloc_array(unsigned int, num_colors);

Can I ask to introduce malloc and free within the same patch? I know 
this could introduce unused temporarily unused code. But at least it is 
easier to confirm that the two paths are correct.

> +    if ( !d->llc_colors )
> +    {
> +        printk("Can't allocate LLC colors for domain %pd\n", d);

NIT: Above you use XENLOG_ERR for printk. But not here. To me they have 
the same severity. So can you explain the difference?

> +        return -1;
> +    }
> +
> +    return 0;
> +}
> +
> +static int domain_check_colors(struct domain *d)
> +{
> +    unsigned int i;
> +
> +    if ( !d->num_llc_colors )
> +    {
> +        printk(XENLOG_WARNING
> +               "LLC color config not found for %pd. Using default\n", d);
> +        if ( domain_alloc_colors(d, nr_colors) )
> +            return -ENOMEM;
> +        for ( i = 0; i < nr_colors; i++ )
> +            d->llc_colors[i] = i;
> +    }
> +    else if ( !check_colors(d->llc_colors, d->num_llc_colors) )
> +    {
> +        printk(XENLOG_ERR "Bad LLC color config for %pd\n", d);
> +        return -EINVAL;
> +    }
> +
> +    return 0;
> +}
> +
> +int dom0_set_llc_colors(struct domain *d)
> +{
> +    if ( domain_alloc_colors(d, dom0_num_colors) )
> +        return -ENOMEM;
> +
> +    memcpy(d->llc_colors, dom0_colors, sizeof(unsigned int) * dom0_num_colors);
> +
> +    return domain_check_colors(d);
> +}
> +
>   /*
>    * Local variables:
>    * mode: C

Cheers,

-- 
Julien Grall


From xen-devel-bounces@lists.xenproject.org Thu Jan 04 19:59:08 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 04 Jan 2024 19:59:08 +0000
Received: from list by lists.xenproject.org with outflank-mailman.661899.1031672 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLTru-0000Kj-H6; Thu, 04 Jan 2024 19:59:06 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 661899.1031672; Thu, 04 Jan 2024 19:59:06 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLTru-0000Kc-EP; Thu, 04 Jan 2024 19:59:06 +0000
Received: by outflank-mailman (input) for mailman id 661899;
 Thu, 04 Jan 2024 19:59:05 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>) id 1rLTrt-0000KW-4Q
 for xen-devel@lists.xenproject.org; Thu, 04 Jan 2024 19:59:05 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rLTrs-00028X-SU; Thu, 04 Jan 2024 19:59:04 +0000
Received: from 54-240-197-235.amazon.com ([54.240.197.235] helo=[192.168.4.89])
 by xenbits.xenproject.org with esmtpsa
 (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rLTrs-0001PJ-Lu; Thu, 04 Jan 2024 19:59:04 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
	s=20200302mail; h=Content-Transfer-Encoding:Content-Type:In-Reply-To:From:
	References:Cc:To:Subject:MIME-Version:Date:Message-ID;
	bh=pv1trKsXFHCTS8+oDtehFcg0Zr0OUhpUGoTqn1nNY/s=; b=EYVAr9GwKwidz2TZhsuyQbaYGf
	UyeVyUC02rVtY4VcR2VRZh53r6gXkFLmXYmZScUXCoWTXuuobzb3u+VYFLTn/l+Wgp8C+kfiQ9zkM
	eSlQWnKFgaV1ZUmXOdNh4pxHb9PnmFPAm+7S89lxXeZaxZ2ZashnQRmsz8exnP0iLEVU=;
Message-ID: <1ac0e50d-0551-4abb-a929-03d5b0be25c1@xen.org>
Date: Thu, 4 Jan 2024 19:59:02 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v5 01/13] xen/common: add cache coloring common code
Content-Language: en-GB
To: Carlo Nonato <carlo.nonato@minervasys.tech>,
 xen-devel@lists.xenproject.org
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 George Dunlap <george.dunlap@citrix.com>, Jan Beulich <jbeulich@suse.com>,
 Stefano Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>,
 Marco Solieri <marco.solieri@minervasys.tech>
References: <20240102095138.17933-1-carlo.nonato@minervasys.tech>
 <20240102095138.17933-2-carlo.nonato@minervasys.tech>
From: Julien Grall <julien@xen.org>
In-Reply-To: <20240102095138.17933-2-carlo.nonato@minervasys.tech>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

Hi,

On 02/01/2024 09:51, Carlo Nonato wrote:
> This commit adds the Last Level Cache (LLC) coloring common header, Kconfig
> options and functions. Since this is an arch specific feature, actual
> implementation is postponed to later patches and Kconfig options are placed
> under xen/arch.
> 
> LLC colors are a property of the domain, so the domain struct has to be
> extended.
> 
> Based on original work from: Luca Miccio <lucmiccio@gmail.com>
> 
> Signed-off-by: Carlo Nonato <carlo.nonato@minervasys.tech>
> Signed-off-by: Marco Solieri <marco.solieri@minervasys.tech>
> ---
> v5:
> - used - instead of _ for filenames
> - removed domain_create_llc_colored()
> - removed stub functions
> - coloring domain fields are now #ifdef protected
> v4:
> - Kconfig options moved to xen/arch
> - removed range for CONFIG_NR_LLC_COLORS
> - added "llc_coloring_enabled" global to later implement the boot-time
>    switch
> - added domain_create_llc_colored() to be able to pass colors
> - added is_domain_llc_colored() macro
> ---
>   xen/arch/Kconfig               | 16 ++++++++++++
>   xen/common/Kconfig             |  3 +++
>   xen/common/domain.c            |  4 +++
>   xen/common/keyhandler.c        |  4 +++
>   xen/include/xen/llc-coloring.h | 46 ++++++++++++++++++++++++++++++++++
>   xen/include/xen/sched.h        |  5 ++++
>   6 files changed, 78 insertions(+)
>   create mode 100644 xen/include/xen/llc-coloring.h
> 
> diff --git a/xen/arch/Kconfig b/xen/arch/Kconfig
> index 67ba38f32f..aad7e9da38 100644
> --- a/xen/arch/Kconfig
> +++ b/xen/arch/Kconfig
> @@ -31,3 +31,19 @@ config NR_NUMA_NODES
>   	  associated with multiple-nodes management. It is the upper bound of
>   	  the number of NUMA nodes that the scheduler, memory allocation and
>   	  other NUMA-aware components can handle.
> +
> +config LLC_COLORING
> +	bool "Last Level Cache (LLC) coloring" if EXPERT

While look at the rest of the series, I noticed that SUPPORT.md is not 
updated. Can this be done?

I think the feature should be in experimental for now. We can decide to 
switch to tech preview before Xen 4.19 is out and the support is completed.

Stefano, what do you think?

Cheers

-- 
Julien Grall


From xen-devel-bounces@lists.xenproject.org Thu Jan 04 20:44:06 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 04 Jan 2024 20:44:06 +0000
Received: from list by lists.xenproject.org with outflank-mailman.661903.1031682 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLUZD-0000R8-O1; Thu, 04 Jan 2024 20:43:51 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 661903.1031682; Thu, 04 Jan 2024 20:43:51 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLUZD-0000R1-LC; Thu, 04 Jan 2024 20:43:51 +0000
Received: by outflank-mailman (input) for mailman id 661903;
 Thu, 04 Jan 2024 20:43:51 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=d6V4=IO=bugseng.com=roberto.bagnara@srs-se1.protection.inumbo.net>)
 id 1rLUZD-0000Qt-0o
 for xen-devel@lists.xenproject.org; Thu, 04 Jan 2024 20:43:51 +0000
Received: from support.bugseng.com (mail.bugseng.com [162.55.131.47])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id f4f9dce0-ab41-11ee-9b0f-b553b5be7939;
 Thu, 04 Jan 2024 21:43:47 +0100 (CET)
Received: from [192.168.1.219] (unknown [151.29.148.194])
 by support.bugseng.com (Postfix) with ESMTPSA id 0BA5A4EE073C;
 Thu,  4 Jan 2024 21:43:46 +0100 (CET)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: f4f9dce0-ab41-11ee-9b0f-b553b5be7939
Message-ID: <d1d43877-912c-4f83-aa9b-bc28be418a0c@bugseng.com>
Date: Thu, 4 Jan 2024 21:43:44 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] xen: Use -Wuninitialized and -Winit-self
Content-Language: en-US
To: Andrew Cooper <andrew.cooper3@citrix.com>, Jan Beulich <jbeulich@suse.com>
Cc: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Wei Liu <wl@xen.org>, Xen-devel <xen-devel@lists.xenproject.org>,
 "consulting@bugseng.com" <consulting@bugseng.com>,
 Stefano Stabellini <sstabellini@kernel.org>
References: <20231228193907.3052681-1-andrew.cooper3@citrix.com>
 <1248487f-4852-41f5-9ffd-d4d12897a622@suse.com>
 <7d35a648-a69b-4dfb-bf4f-d30272df5e9b@citrix.com>
From: Roberto Bagnara <roberto.bagnara@bugseng.com>
In-Reply-To: <7d35a648-a69b-4dfb-bf4f-d30272df5e9b@citrix.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit

On 2024-01-04 15:33, Andrew Cooper wrote:
> On 04/01/2024 1:41 pm, Jan Beulich wrote:
>> On 28.12.2023 20:39, Andrew Cooper wrote:
>>> The use of uninitialised data is undefined behaviour.  At -O2 with trivial
>>> examples, both Clang and GCC delete the variable, and in the case of a
>>> function return, the caller gets whatever was stale in %rax prior to the call.
>>>
>>> Clang includes -Wuninitialized within -Wall, but GCC only includes it in
>>> -Wextra, which is not used by Xen at this time.
>>>
>>> Furthermore, the specific pattern of assigning a variable to itself in its
>>> declaration is only diagnosed by GCC with -Winit-self.  Clang does diagnoise
>>> simple forms of this pattern with a plain -Wuninitialized, but it fails to
>>> diagnose the instances in Xen that GCC manages to find.
>>>
>>> GCC, with -Wuninitialized and -Winit-self notices:
>>>
>>>    arch/x86/time.c: In function ‘read_pt_and_tsc’:
>>>    arch/x86/time.c:297:14: error: ‘best’ is used uninitialized in this function [-Werror=uninitialized]
>>>      297 |     uint32_t best = best;
>>>          |              ^~~~
>>>    arch/x86/time.c: In function ‘read_pt_and_tmcct’:
>>>    arch/x86/time.c:1022:14: error: ‘best’ is used uninitialized in this function [-Werror=uninitialized]
>>>     1022 |     uint64_t best = best;
>>>          |              ^~~~
>>>
>>> and both have logic paths where best can be returned while uninitalised.
>> I disagree. In both cases the variables are reliably set during the first
>> loop iteration.
> 
> I suggest you pay attention to the precision of the integers.
> 
> It is hard (likely prohibitively hard) to avoid entering the if(), but
> it is not impossible.
> 
> The compiler really has emitted logic paths where stack rubble is returned.
> 
>> Furthermore this initialize-to-self is a well known pattern to suppress the
>> -Wuninitialized induced warnings, originally used by Linux'es
>> uninitialized_var().
> 
> I'm glad you cited this, because it proves my point.
> 
> Notice how it was purged from Linux slowly over the course of 8 years
> because it had been shown to create real bugs, by hiding real uses of
> uninitialised variables.

There is a worse problem for initialize-to-self: it is undefined behavior
per se.  If this is done to suppress a warning, then what happens is
paradoxical: in order to suppress a warning about a potential undefined
behavior (the variable might indeed be always written before being read)
one introduces a definite undefined behavior.
Kind regards,

    Roberto


From xen-devel-bounces@lists.xenproject.org Thu Jan 04 21:28:00 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 04 Jan 2024 21:28:00 +0000
Received: from list by lists.xenproject.org with outflank-mailman.661908.1031693 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLVFp-0006zG-2F; Thu, 04 Jan 2024 21:27:53 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 661908.1031693; Thu, 04 Jan 2024 21:27:53 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLVFo-0006z9-U0; Thu, 04 Jan 2024 21:27:52 +0000
Received: by outflank-mailman (input) for mailman id 661908;
 Thu, 04 Jan 2024 21:27:51 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=a8MA=IO=gmail.com=tamas.k.lengyel@srs-se1.protection.inumbo.net>)
 id 1rLVFn-0006z3-KA
 for xen-devel@lists.xenproject.org; Thu, 04 Jan 2024 21:27:51 +0000
Received: from mail-yb1-xb32.google.com (mail-yb1-xb32.google.com
 [2607:f8b0:4864:20::b32])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 1c85f46c-ab48-11ee-98ef-6d05b1d4d9a1;
 Thu, 04 Jan 2024 22:27:50 +0100 (CET)
Received: by mail-yb1-xb32.google.com with SMTP id
 3f1490d57ef6-db4364ecd6aso857758276.2
 for <xen-devel@lists.xenproject.org>; Thu, 04 Jan 2024 13:27:50 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 1c85f46c-ab48-11ee-98ef-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1704403669; x=1705008469; darn=lists.xenproject.org;
        h=cc:to:subject:message-id:date:from:in-reply-to:references
         :mime-version:from:to:cc:subject:date:message-id:reply-to;
        bh=KvHya6V6w88PX2+fR0diTH9XlozJR6iVhdv4BsUSx+0=;
        b=CNm47DLh2QUIw216TVovzVuGtNRnh5ytyusI1uaMvEDxRd3txWy0p8NJ9JYfhHNtHO
         5Em9YSy5bbwePkGQmXRMitDGyHhejXZ4tIiAEJS6h5iY0ZyWzCP2mF96PyO0NEl7+UsV
         JQ8iGRkQkgEjrFf5cbTg3PUm4c07VHfeRS5DTLJBAy3OODKeLpsZVhGplXBRuTGH/R3h
         5/81YStQqh7/3Amoa55j2Rs6hHBi9QuNOVAAZPKPAUzfwwLzOt0Q65OUdGPZMcqcdPEK
         seDQGgwgN0hQcVsjJpfwKF/BvEwAVW5JW+7vJWOnJFofTcspSnEAXObXfCurgDd1R3+z
         w5kQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704403669; x=1705008469;
        h=cc:to:subject:message-id:date:from:in-reply-to:references
         :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id
         :reply-to;
        bh=KvHya6V6w88PX2+fR0diTH9XlozJR6iVhdv4BsUSx+0=;
        b=swW8871p5XOT+B2Gng60GScvtkQUZ1gg+z5UwtwSCRymGs8ybJ3ArQb1Kxys+62WRG
         c9gIlGM0qzQyKTBbSwiu/9Sf3FNVdAsAYdevu5jTlEUCJ/3KFgTOopEHobOFCIL0BZET
         z4UvD/CJS9K3EckT1jn7IQmUy9Lcww/0j3tk4lLnjd6Hc3vtTJ2TCsheoPbIPmOTf80J
         tQezcfod2FXE0BTCBkQgB0zIdeUA/ye12EMoZ3XgUuCbZBWy6Av2EJ4ATqT0K4jlkS1Z
         /lCOsOyUPL3muRV4tLixbKNxATPS5aPaK3Znz1jpxZvntlUZMsm8fv+KQUWZunMNmqSo
         nltg==
X-Gm-Message-State: AOJu0YwYwMBaN7mkALrWivX6jYypXrzcb3Hi12O1tHWUEqvurbg3D/Yr
	d1m7APuTFPL8pn/FsOiv3xYZ+priCUuqdpggVgs=
X-Google-Smtp-Source: AGHT+IF0k9k7UT+AIzjGwe9U5q3OSKdXFyDVEeqJt9U8gOb+1FuD+y7gbcgmjTeRawRV/YjTqDDcLaI5K7iGHyIVqQE=
X-Received: by 2002:a25:b226:0:b0:dbe:a4d8:c5c6 with SMTP id
 i38-20020a25b226000000b00dbea4d8c5c6mr1149784ybj.48.1704403669340; Thu, 04
 Jan 2024 13:27:49 -0800 (PST)
MIME-Version: 1.0
References: <20231228193907.3052681-1-andrew.cooper3@citrix.com>
 <1248487f-4852-41f5-9ffd-d4d12897a622@suse.com> <7d35a648-a69b-4dfb-bf4f-d30272df5e9b@citrix.com>
 <5fd69614-a236-4a5b-8ec1-8cfea6d28d32@suse.com>
In-Reply-To: <5fd69614-a236-4a5b-8ec1-8cfea6d28d32@suse.com>
From: Tamas K Lengyel <tamas.k.lengyel@gmail.com>
Date: Thu, 4 Jan 2024 16:27:13 -0500
Message-ID: <CABfawh=0JmGXZeR980bR-bx3cH3hkBsqOGFe-x_tuuubESK9-A@mail.gmail.com>
Subject: Re: [PATCH] xen: Use -Wuninitialized and -Winit-self
To: Jan Beulich <jbeulich@suse.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>, 
	Wei Liu <wl@xen.org>, Xen-devel <xen-devel@lists.xenproject.org>, 
	Roberto Bagnara <roberto.bagnara@bugseng.com>, 
	"consulting@bugseng.com" <consulting@bugseng.com>, Stefano Stabellini <sstabellini@kernel.org>
Content-Type: text/plain; charset="UTF-8"

> > Getting ~0 back is strictly less bad than getting stack rubble because
> > at least it's obviously wrong.
>
> But then why not change things so there's no issue anymore? Plus I'm not
> sure how / whether "obviously wrong" would manifest. I expect it would
> be an entirely unobvious boot hang, or other misbehavior.

+1 for changing these APIs to make it clear when an error happened
instead of returning magic value. Otherwise yea clearly should not use
init-to-self anywhere just to silence other warnings..

Tamas


From xen-devel-bounces@lists.xenproject.org Thu Jan 04 21:43:30 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 04 Jan 2024 21:43:30 +0000
Received: from list by lists.xenproject.org with outflank-mailman.661912.1031702 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLVUq-0001rU-Az; Thu, 04 Jan 2024 21:43:24 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 661912.1031702; Thu, 04 Jan 2024 21:43:24 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLVUq-0001rN-7Z; Thu, 04 Jan 2024 21:43:24 +0000
Received: by outflank-mailman (input) for mailman id 661912;
 Thu, 04 Jan 2024 21:43:22 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=eCom=IO=kernel.org=sstabellini@srs-se1.protection.inumbo.net>)
 id 1rLVUo-0001rH-GV
 for xen-devel@lists.xenproject.org; Thu, 04 Jan 2024 21:43:22 +0000
Received: from ams.source.kernel.org (ams.source.kernel.org [145.40.68.75])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 46de5ed4-ab4a-11ee-9b0f-b553b5be7939;
 Thu, 04 Jan 2024 22:43:20 +0100 (CET)
Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58])
 by ams.source.kernel.org (Postfix) with ESMTP id B6E2FB81AB8;
 Thu,  4 Jan 2024 21:43:19 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id E2F3DC433C7;
 Thu,  4 Jan 2024 21:43:17 +0000 (UTC)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 46de5ed4-ab4a-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
	s=k20201202; t=1704404599;
	bh=nhWrUlUU087/5MfUy4FmX0VzEgZKt3OhOIKu3hBjp2U=;
	h=Date:From:To:cc:Subject:In-Reply-To:References:From;
	b=OpRmNLl3QBEVdV37GOpbZmrwFIgC/cQEDQpKL8qdsrnSfRwIat/1j1Oj1gYpZ6Tk4
	 sDz2396KDBw6zA91VF+qc+/zFohcV8AhLo22ZMxsXo9LAJa8QuKza08eWqU6/ZWUCY
	 kqd8/r0z/b3gQNE9vNDw4kJB4k0whyu4KOkTW7swZy5Gl7PF00cs8CgPyg3a2hd8Nd
	 CWcOUOOtnSHY59G89ox2sUvji89U18HKfUjQD4ejtZqp1RtV/RWLNH2uysqOldoQI3
	 WlCvlM6qFVakaBYjroyXrqbP35ZHxNPTvnpU4q0U5/iSpWbGyaAnWyAUQWeugiNpS/
	 Vw/PCKFU9yNfQ==
Date: Thu, 4 Jan 2024 13:43:16 -0800 (PST)
From: Stefano Stabellini <sstabellini@kernel.org>
X-X-Sender: sstabellini@ubuntu-linux-20-04-desktop
To: Julien Grall <julien@xen.org>
cc: Carlo Nonato <carlo.nonato@minervasys.tech>, 
    xen-devel@lists.xenproject.org, Andrew Cooper <andrew.cooper3@citrix.com>, 
    George Dunlap <george.dunlap@citrix.com>, Jan Beulich <jbeulich@suse.com>, 
    Stefano Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>, 
    Marco Solieri <marco.solieri@minervasys.tech>
Subject: Re: [PATCH v5 01/13] xen/common: add cache coloring common code
In-Reply-To: <1ac0e50d-0551-4abb-a929-03d5b0be25c1@xen.org>
Message-ID: <alpine.DEB.2.22.394.2401041343100.1322202@ubuntu-linux-20-04-desktop>
References: <20240102095138.17933-1-carlo.nonato@minervasys.tech> <20240102095138.17933-2-carlo.nonato@minervasys.tech> <1ac0e50d-0551-4abb-a929-03d5b0be25c1@xen.org>
User-Agent: Alpine 2.22 (DEB 394 2020-01-19)
MIME-Version: 1.0
Content-Type: text/plain; charset=US-ASCII

On Thu, 4 Jan 2024, Julien Grall wrote:
> Hi,
> 
> On 02/01/2024 09:51, Carlo Nonato wrote:
> > This commit adds the Last Level Cache (LLC) coloring common header, Kconfig
> > options and functions. Since this is an arch specific feature, actual
> > implementation is postponed to later patches and Kconfig options are placed
> > under xen/arch.
> > 
> > LLC colors are a property of the domain, so the domain struct has to be
> > extended.
> > 
> > Based on original work from: Luca Miccio <lucmiccio@gmail.com>
> > 
> > Signed-off-by: Carlo Nonato <carlo.nonato@minervasys.tech>
> > Signed-off-by: Marco Solieri <marco.solieri@minervasys.tech>
> > ---
> > v5:
> > - used - instead of _ for filenames
> > - removed domain_create_llc_colored()
> > - removed stub functions
> > - coloring domain fields are now #ifdef protected
> > v4:
> > - Kconfig options moved to xen/arch
> > - removed range for CONFIG_NR_LLC_COLORS
> > - added "llc_coloring_enabled" global to later implement the boot-time
> >    switch
> > - added domain_create_llc_colored() to be able to pass colors
> > - added is_domain_llc_colored() macro
> > ---
> >   xen/arch/Kconfig               | 16 ++++++++++++
> >   xen/common/Kconfig             |  3 +++
> >   xen/common/domain.c            |  4 +++
> >   xen/common/keyhandler.c        |  4 +++
> >   xen/include/xen/llc-coloring.h | 46 ++++++++++++++++++++++++++++++++++
> >   xen/include/xen/sched.h        |  5 ++++
> >   6 files changed, 78 insertions(+)
> >   create mode 100644 xen/include/xen/llc-coloring.h
> > 
> > diff --git a/xen/arch/Kconfig b/xen/arch/Kconfig
> > index 67ba38f32f..aad7e9da38 100644
> > --- a/xen/arch/Kconfig
> > +++ b/xen/arch/Kconfig
> > @@ -31,3 +31,19 @@ config NR_NUMA_NODES
> >   	  associated with multiple-nodes management. It is the upper bound of
> >   	  the number of NUMA nodes that the scheduler, memory allocation and
> >   	  other NUMA-aware components can handle.
> > +
> > +config LLC_COLORING
> > +	bool "Last Level Cache (LLC) coloring" if EXPERT
> 
> While look at the rest of the series, I noticed that SUPPORT.md is not
> updated. Can this be done?
> 
> I think the feature should be in experimental for now. We can decide to switch
> to tech preview before Xen 4.19 is out and the support is completed.
> 
> Stefano, what do you think?

That's reasonable


From xen-devel-bounces@lists.xenproject.org Fri Jan 05 00:02:54 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 05 Jan 2024 00:02:54 +0000
Received: from list by lists.xenproject.org with outflank-mailman.661916.1031711 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLXfb-00049G-E2; Fri, 05 Jan 2024 00:02:39 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 661916.1031711; Fri, 05 Jan 2024 00:02:39 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLXfb-000499-B0; Fri, 05 Jan 2024 00:02:39 +0000
Received: by outflank-mailman (input) for mailman id 661916;
 Fri, 05 Jan 2024 00:02:37 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=PmVw=IP=kernel.org=sstabellini@srs-se1.protection.inumbo.net>)
 id 1rLXfZ-00048n-DT
 for xen-devel@lists.xenproject.org; Fri, 05 Jan 2024 00:02:37 +0000
Received: from ams.source.kernel.org (ams.source.kernel.org
 [2604:1380:4601:e00::1])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id ba97adcb-ab5d-11ee-98ef-6d05b1d4d9a1;
 Fri, 05 Jan 2024 01:02:34 +0100 (CET)
Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58])
 by ams.source.kernel.org (Postfix) with ESMTP id 137EEB81BB5;
 Fri,  5 Jan 2024 00:02:34 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 47D87C433C7;
 Fri,  5 Jan 2024 00:02:32 +0000 (UTC)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: ba97adcb-ab5d-11ee-98ef-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
	s=k20201202; t=1704412953;
	bh=OdwkGuplSUt6otvozDxlJMZ11DSGQ9mDd92ltR+mT2M=;
	h=Date:From:To:cc:Subject:In-Reply-To:References:From;
	b=WRRXNvRGmPU83K4U1T2KcY3Cwl3RfTTlXR1qI9dLdtxcOnvfdgJe6K7QOoXUrLwvU
	 l36/iBeXxQSmFCPcLkxpznWNOaY+hgqYR2V1oGOu1iPXQvC1PZYHT9xu5OS89OSMl4
	 Cif3JDU58kzNZHWUbwxFfMiTyOMAhOi5MDKXGqsQAzmNc4U5S151OuL1D9tBrk4qBK
	 IBljZ/VKFOO1oZvrt+Qq1PBjqdUk2C8uky1MXW84ODYMpMvJMWwXsK3/IWr+4A4v9v
	 4gCZFNloXSKEuU++fxIqeXSkOp0kVhPjGsFQbpCIC6WTL2ttArSHpQXg2Jcc1Vz4Wh
	 BthUScdS0Hfdw==
Date: Thu, 4 Jan 2024 16:02:30 -0800 (PST)
From: Stefano Stabellini <sstabellini@kernel.org>
X-X-Sender: sstabellini@ubuntu-linux-20-04-desktop
To: Roberto Bagnara <roberto.bagnara@bugseng.com>
cc: Andrew Cooper <andrew.cooper3@citrix.com>, Jan Beulich <jbeulich@suse.com>, 
    =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>, 
    Wei Liu <wl@xen.org>, Xen-devel <xen-devel@lists.xenproject.org>, 
    "consulting@bugseng.com" <consulting@bugseng.com>, 
    Stefano Stabellini <sstabellini@kernel.org>
Subject: Re: [PATCH] xen: Use -Wuninitialized and -Winit-self
In-Reply-To: <d1d43877-912c-4f83-aa9b-bc28be418a0c@bugseng.com>
Message-ID: <alpine.DEB.2.22.394.2401041545180.1322202@ubuntu-linux-20-04-desktop>
References: <20231228193907.3052681-1-andrew.cooper3@citrix.com> <1248487f-4852-41f5-9ffd-d4d12897a622@suse.com> <7d35a648-a69b-4dfb-bf4f-d30272df5e9b@citrix.com> <d1d43877-912c-4f83-aa9b-bc28be418a0c@bugseng.com>
User-Agent: Alpine 2.22 (DEB 394 2020-01-19)
MIME-Version: 1.0
Content-Type: multipart/mixed; BOUNDARY="8323329-468806282-1704412204=:1322202"
Content-ID: <alpine.DEB.2.22.394.2401041550060.1322202@ubuntu-linux-20-04-desktop>

  This message is in MIME format.  The first part should be readable text,
  while the remaining parts are likely unreadable without MIME-aware tools.

--8323329-468806282-1704412204=:1322202
Content-Type: text/plain; CHARSET=UTF-8
Content-Transfer-Encoding: 8BIT
Content-ID: <alpine.DEB.2.22.394.2401041550061.1322202@ubuntu-linux-20-04-desktop>

On Thu, 4 Jan 2024, Roberto Bagnara wrote:
> On 2024-01-04 15:33, Andrew Cooper wrote:
> > On 04/01/2024 1:41 pm, Jan Beulich wrote:
> > > On 28.12.2023 20:39, Andrew Cooper wrote:
> > > > The use of uninitialised data is undefined behaviour.  At -O2 with
> > > > trivial
> > > > examples, both Clang and GCC delete the variable, and in the case of a
> > > > function return, the caller gets whatever was stale in %rax prior to the
> > > > call.
> > > > 
> > > > Clang includes -Wuninitialized within -Wall, but GCC only includes it in
> > > > -Wextra, which is not used by Xen at this time.
> > > > 
> > > > Furthermore, the specific pattern of assigning a variable to itself in
> > > > its
> > > > declaration is only diagnosed by GCC with -Winit-self.  Clang does
> > > > diagnoise
> > > > simple forms of this pattern with a plain -Wuninitialized, but it fails
> > > > to
> > > > diagnose the instances in Xen that GCC manages to find.
> > > > 
> > > > GCC, with -Wuninitialized and -Winit-self notices:
> > > > 
> > > >    arch/x86/time.c: In function ‘read_pt_and_tsc’:
> > > >    arch/x86/time.c:297:14: error: ‘best’ is used uninitialized in this
> > > > function [-Werror=uninitialized]
> > > >      297 |     uint32_t best = best;
> > > >          |              ^~~~
> > > >    arch/x86/time.c: In function ‘read_pt_and_tmcct’:
> > > >    arch/x86/time.c:1022:14: error: ‘best’ is used uninitialized in this
> > > > function [-Werror=uninitialized]
> > > >     1022 |     uint64_t best = best;
> > > >          |              ^~~~
> > > > 
> > > > and both have logic paths where best can be returned while uninitalised.
> > > I disagree. In both cases the variables are reliably set during the first
> > > loop iteration.
> > 
> > I suggest you pay attention to the precision of the integers.
> > 
> > It is hard (likely prohibitively hard) to avoid entering the if(), but
> > it is not impossible.
> > 
> > The compiler really has emitted logic paths where stack rubble is returned.
> > 
> > > Furthermore this initialize-to-self is a well known pattern to suppress
> > > the
> > > -Wuninitialized induced warnings, originally used by Linux'es
> > > uninitialized_var().
> > 
> > I'm glad you cited this, because it proves my point.
> > 
> > Notice how it was purged from Linux slowly over the course of 8 years
> > because it had been shown to create real bugs, by hiding real uses of
> > uninitialised variables.
> 
> There is a worse problem for initialize-to-self: it is undefined behavior
> per se.  If this is done to suppress a warning, then what happens is
> paradoxical: in order to suppress a warning about a potential undefined
> behavior (the variable might indeed be always written before being read)
> one introduces a definite undefined behavior.

Thanks for the insight, Roberto. I think best = best is the worst option
because it tries to suppress an uninitialized warning by introducing an
undefined behavior.

I think anything else is better, including:
- best = ~0;
- best = 0;
- some sort of uninitialized_var implementation without init-to-self

I am in favor of adding -Winit-self to the build. That's a good idea. I
don't have an opinion on whether it should be done as part of this patch
or separately. I also don't have an opinion on whether the Fixes tags
are appropriate. I would be happy with or without them.

So, I would ack this patch.

I see that updating the function to return a proper error would be good
but I wouldn't scope-creep an otherwise simple improvement, so I
wouldn't ask the contributor to do it necessarily as part of this patch.
--8323329-468806282-1704412204=:1322202--


From xen-devel-bounces@lists.xenproject.org Fri Jan 05 00:39:59 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 05 Jan 2024 00:39:59 +0000
Received: from list by lists.xenproject.org with outflank-mailman.661920.1031722 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLYFe-00007l-0A; Fri, 05 Jan 2024 00:39:54 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 661920.1031722; Fri, 05 Jan 2024 00:39:53 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLYFd-00007e-Tj; Fri, 05 Jan 2024 00:39:53 +0000
Received: by outflank-mailman (input) for mailman id 661920;
 Fri, 05 Jan 2024 00:39:52 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=PmVw=IP=kernel.org=sstabellini@srs-se1.protection.inumbo.net>)
 id 1rLYFc-00007W-KQ
 for xen-devel@lists.xenproject.org; Fri, 05 Jan 2024 00:39:52 +0000
Received: from ams.source.kernel.org (ams.source.kernel.org [145.40.68.75])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id ef4cef74-ab62-11ee-98ef-6d05b1d4d9a1;
 Fri, 05 Jan 2024 01:39:51 +0100 (CET)
Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58])
 by ams.source.kernel.org (Postfix) with ESMTP id 00371B818C6;
 Fri,  5 Jan 2024 00:39:49 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 42510C433C8;
 Fri,  5 Jan 2024 00:39:48 +0000 (UTC)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: ef4cef74-ab62-11ee-98ef-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
	s=k20201202; t=1704415189;
	bh=Tv5Mg9kg3ML2AuKAifFRdqtaKFp/eEmSgNwyP4cugzY=;
	h=Date:From:To:cc:Subject:In-Reply-To:References:From;
	b=JWNYtyHobN1txdfERChMC6iuE2LIu73B9h+INK+rVLWpNdHjcWag2FmA01yj3e4T8
	 5XqGRLFR43pLGf+BxBrD8134CcX5XPVsmxVcEqqjvUV216mqV4cqlqKy6TeAW0DJ8j
	 GmbmxBTHGYqiXbIrS6OUQEGxLD/D7NbBGD1eohR5Kk277tmin4ACR2LzR866vady11
	 p/4n4v5wZfwjNo3/BOx/UssO1+TpPg6Zx8qbPv5t+F8S7N1pBBTPaKy0ILpSSdn7AW
	 NhhhjPCP5Ti+hhUWzpotfwpSzDYUvLBeyhuAaHjOfNb5n3b7pZYVnfFQvmJHTRaXzA
	 OvkT0RMzVye1w==
Date: Thu, 4 Jan 2024 16:39:46 -0800 (PST)
From: Stefano Stabellini <sstabellini@kernel.org>
X-X-Sender: sstabellini@ubuntu-linux-20-04-desktop
To: David Morel <david.morel@vates.tech>
cc: xen-devel@lists.xenproject.org, xenia.ragiadakou@amd.com, 
    andrew.cooper3@citrix.com, Jan Beulich <jbeulich@suse.com>, 
    =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>, 
    Juergen Gross <jgross@suse.com>, sstabellini@kernel.org
Subject: Re: AMD EPYC VM to VM performance investigation
In-Reply-To: <ZZbSIH_pGjaQr5x-@raton>
Message-ID: <alpine.DEB.2.22.394.2401041624500.1322202@ubuntu-linux-20-04-desktop>
References: <ZZbSIH_pGjaQr5x-@raton>
User-Agent: Alpine 2.22 (DEB 394 2020-01-19)
MIME-Version: 1.0
Content-Type: multipart/mixed; BOUNDARY="8323329-1520601601-1704414333=:1322202"
Content-ID: <alpine.DEB.2.22.394.2401041625430.1322202@ubuntu-linux-20-04-desktop>

  This message is in MIME format.  The first part should be readable text,
  while the remaining parts are likely unreadable without MIME-aware tools.

--8323329-1520601601-1704414333=:1322202
Content-Type: text/plain; CHARSET=UTF-8
Content-Transfer-Encoding: 8BIT
Content-ID: <alpine.DEB.2.22.394.2401041625431.1322202@ubuntu-linux-20-04-desktop>

On Thu, 4 Jan 2024, David Morel wrote:
> Hello,
> 
> We have a customer and multiple users on our forum having performances that
> seems quite low related to the general performance of the machines on AMD EPYC
> Zen hosts when doing VM to VM networking.

By "VM to VM networking" I take you mean VM-to-VM on the same host using
PV network?


> Below you'll find a write up about what we had a look at and what's in the
> TODO on our side, but in the meantime we would like to ask here for some
> feedback, suggestions and possible leads.
> 
> To sum up, the VM to VM performance on Zen generation server CPUs seems quite
> low, and only minimally scaling when adding threads. They are outperformed by
> 10 year old AMD desktop cpu and pretty low frequency XEON bronze from 2014.
> CPU usage does not seem to be the limiting factor as neither the VM threads or
> the kthreads on host seems to go to a 100% cpu usage.
> 
> As we're Vates, I'm talking about XCP-ng here, so Xen 4.13.5 and a dom0 kernel
> 4.19. I did try a Xen 4.18-rc2 and kernel 6.1.56 on a Zen4 epyc, but as it was
> borrowed from a colleague I was unsure of the setup, so although it was
> actually worse than on my other test setups, I would not consider that a
> complete validation the issues is also present on recent Xen versions.

I think it might be difficult to triage this if you are working on a
Xen/Linux version that is so different from upstream


> 1. Has anybody else noticed a similar behavior?
> 2. Has anybody done any kind of investigation about it beside us?
> 3. Any insight and suggestions of other points to look at would be welcome :)
> 
> And now the lengthy part about what we tested, I tried to make it shorter and
> more legible than a full report…
> 
> Investigated
> ------------
> 
> - Bench various cpu with iperf2 (iperf3 is not actually multithreaded):
>   - amd fx8320e, xeon 3106: not impacted.
>   - epyc 7451, 7443, 7302p, 7313p, 9124: impacted, but the zen4 one scales a
>     bit more than zen1, 2 and 3.
>   - ryzen 5950x, ryzen 7600: performances should likely be better than
>     observed results, but still way better than epycs, and scaling nicely with
>     more threads.
> - Bench with tinymembench[1]: performances were as expected and didn't show
>   issues with rep movsb as discussed in this article[2] and issue[3]. Which
>   makes sense as it looks like this issues is related to ERMS support which is
>   not present on Zen1 and 2 where the issue has been raised.
> - Bench skb allocation with a small kernel module measuring cycles: actually
>   same or lower on epyc than on the xeon with higher frequency so can be
>   considered faster and likely not related to our issue.
> - mitigations: we tried disabling what can be disabled through boot
>   parameters, both for xen, dom0 and guests, but this made no differences.
> - disabling AVX; Zen cpus before zen4 are know to limit boost and cpu scaling
>   when doing heavy AVX load on one core, there was no reason to think this was
>   related, but it was a quick test and as expected had no effect.
> - localhost iperf bench on dom0 and guests: we noticed that on other machines
>   host/guest with 1 threads are almost 1:1, with 4 threads guests are about
>   generally not scaling as well in guests. On epyc machines, host tests were
>   significantly slower than guests both with 1 and 4 threads, first
>   investigation of profiling didn't help finding a cause yet. More in the
>   profiling and TODO.

Wait, are you saying that the localhost iperf benchmark is faster in a
VM compared to host ("host" I take means baremetal Linux without a
hypervisor) ?   Maybe you meant the other way around?


> - cpu load: top/htop/xentop all seem to indicate that machines are not under
>   full load, queue allocations on dom0 for VIF are by default (1 per vcpu) and
>   seem to be all used when traffic is running but at a percentage below 100%
>   per core/thread.
> - pinning: manually pinning dom0 and guests to the same node and avoiding
>   sharing cpu "threads" between host and guests gives a minimal increase of a
>   few percents, but nothing drastic. Note, we do not know about the
>   ccd/ccx/node mapping on these cpus, so we are not sure all memory access are
>   "local".
> - sched weight: playing with sched weight to prioritize dom0 did not make a
>   difference either, which makes sense as the system are not under full load.
> - cpu scaling: it is unlikely the core of the issue, but indeed the cpu
>   scaling does not take advantage of the boost, never going above the base
>   clock of these cpus. Also it also seems that less cores that the number of
>   working kthreads/vcpus are going to base clock, may be normal in regard to
>   the system not being fully loaded, to be defined.
>   - QUESTION: is the powernow support in xen cpufreq implementation sufficient
>     for zen cpus? Recent kernels/distributions use acpi_cpufreq and can use
>     amd_pstate or even amd_pstate_epp. More concerning than the turbo boost
>     could be the handling of package power limitation used in Zen CPUs that
>     could prevent even all cores to base clock, to be checked…
> 
> Profiling
> ---------
> 
> We profiled iperf on dom0 and guests on epyc, older amd desktop, and xeon
> machines and gathered profiling traces, but analysis are still ongoing.
> 
> - localhost:
> Client and server were profiled both on dom0 and guests runs for a xeon, an
> old FX and a zen platform, to analyze the discrepancy shown by the localhost
> tests earlier. It shows we spend a larger chunk of time in the copyout() or
> copyin() functions on epyc and fx. This is likely related to the use of
> copy_user_generic_string() on epyc (zen1) and old FX, whereas xeon uses
> copy_user_enhanced_fast_string(), as it has ERMS support.  But on the same
> machine, guests are going way faster, and the implementation of
> copy_user_generic_string() is the same between the dom0 and guests, so this is
> likely related to other changes in kernel and userland, and not only to these
> function. Therefore it likely isn't directly linked to the issue.
> 
> - vm to vm: server, client & dom0 -> profiling traces to be analysed.
> 
> TODO
> ----
> 
> - More Analysis of profiling traces in VM to VM case
> - X2APIC (not enabled on the machines and setup we are using)
> - Profiling at xen level / hypercalls
> - Tests on a clean install of a newer Xen version
> - Dig some more on cpu scaling, likely not the root of the problem but could
>   be some gain to make.
> 
> [1] https://github.com/ssvb/tinymembench
> [2] https://xuanwo.io/2023/04-rust-std-fs-slower-than-python/
> [3] https://bugs.launchpad.net/ubuntu/+source/glibc/+bug/2030515
> 
> -- 
> David Morel
> 
--8323329-1520601601-1704414333=:1322202--


From xen-devel-bounces@lists.xenproject.org Fri Jan 05 00:59:07 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 05 Jan 2024 00:59:07 +0000
Received: from list by lists.xenproject.org with outflank-mailman.661927.1031731 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLYY8-00030p-Ks; Fri, 05 Jan 2024 00:59:00 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 661927.1031731; Fri, 05 Jan 2024 00:59:00 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLYY8-00030i-IJ; Fri, 05 Jan 2024 00:59:00 +0000
Received: by outflank-mailman (input) for mailman id 661927;
 Fri, 05 Jan 2024 00:59:00 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=PmVw=IP=kernel.org=sstabellini@srs-se1.protection.inumbo.net>)
 id 1rLYY7-00030c-UY
 for xen-devel@lists.xenproject.org; Fri, 05 Jan 2024 00:58:59 +0000
Received: from sin.source.kernel.org (sin.source.kernel.org [145.40.73.55])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 9a44aef9-ab65-11ee-98ef-6d05b1d4d9a1;
 Fri, 05 Jan 2024 01:58:58 +0100 (CET)
Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58])
 by sin.source.kernel.org (Postfix) with ESMTP id 1A618CE1C59;
 Fri,  5 Jan 2024 00:58:51 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id D7803C433C7;
 Fri,  5 Jan 2024 00:58:48 +0000 (UTC)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 9a44aef9-ab65-11ee-98ef-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
	s=k20201202; t=1704416330;
	bh=LbWufgpY2x1b9pPxEw8zyOci1BCSYD9ImieN+zxIa/w=;
	h=Date:From:To:cc:Subject:In-Reply-To:References:From;
	b=ZJqR8yDPn9AzVbQuyqNZlCBakm6CAC5NDXhDq160wUqttEUt7OXwRWhdZJnEz3ZQk
	 8TGt8ZEqVFjK1jiPYS6usSVop+XpLuDOjaqD8NdlSJkYVsT4LMVhSQB0w2HvLZhuTQ
	 B/qSSuDx270axwXqk7Kb7kzVKMZ7hkJB4XLuWcwmNzZutXmHambwqQeTV0beo7ffNk
	 7jpZwzDkIfpbsnMOIRl4M/MmmqaU/O6Q952Baay+cibrSbxqeCOPtKhDSXAHQkCwsf
	 t1S3lMxn57wz1UMqqLqZvQrr3B9DyreCWn9DUdzk5tMAQrbmu2AVPHaZAI856N+PvD
	 Zm6U3+d9Mh7dQ==
Date: Thu, 4 Jan 2024 16:58:47 -0800 (PST)
From: Stefano Stabellini <sstabellini@kernel.org>
X-X-Sender: sstabellini@ubuntu-linux-20-04-desktop
To: Oleksandr Tyshchenko <olekstysh@gmail.com>
cc: xen-devel@lists.xenproject.org, linux-kernel@vger.kernel.org, 
    Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>, 
    =?UTF-8?Q?Christian_K=C3=B6nig?= <christian.koenig@amd.com>, 
    Daniel Vetter <daniel@ffwll.ch>, Juergen Gross <jgross@suse.com>, 
    Stefano Stabellini <sstabellini@kernel.org>
Subject: Re: [PATCH] xen/gntdev: Fix the abuse of underlying struct page in
 DMA-buf import
In-Reply-To: <20240104185327.177376-1-olekstysh@gmail.com>
Message-ID: <alpine.DEB.2.22.394.2401041658200.1322202@ubuntu-linux-20-04-desktop>
References: <20240104185327.177376-1-olekstysh@gmail.com>
User-Agent: Alpine 2.22 (DEB 394 2020-01-19)
MIME-Version: 1.0
Content-Type: text/plain; charset=US-ASCII

On Thu, 4 Jan 2024, Oleksandr Tyshchenko wrote:
> From: Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>
> 
> DO NOT access the underlying struct page of an sg table exported
> by DMA-buf in dmabuf_imp_to_refs(), this is not allowed.
> Please see drivers/dma-buf/dma-buf.c:mangle_sg_table() for details.
> 
> Fortunately, here (for special Xen device) we can avoid using
> pages and calculate gfns directly from dma addresses provided by
> the sg table.
> 
> Suggested-by: Daniel Vetter <daniel@ffwll.ch>
> Signed-off-by: Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>

Reviewed-by: Stefano Stabellini <sstabellini@kernel.org>


> ---
> Please note, I didn't manage to test the patch against the latest master branch
> on real HW (patch was only build tested there). Patch was tested on Arm64
> guests using Linux v5.10.41 from vendor's BSP, this is the environment where
> running this use-case is possible and to which I have an access (Xen PV display
> with zero-copy and backend domain as a buffer provider - be-alloc=1, so dma-buf
> import part was involved). A little bit old, but the dma-buf import code
> in gntdev-dmabuf.c hasn't been changed much since that time, all context
> remains allmost the same according to my code inspection.
> ---
> ---
>  drivers/xen/gntdev-dmabuf.c | 42 +++++++++++++++----------------------
>  1 file changed, 17 insertions(+), 25 deletions(-)
> 
> diff --git a/drivers/xen/gntdev-dmabuf.c b/drivers/xen/gntdev-dmabuf.c
> index 4440e626b797..0dde49fca9a5 100644
> --- a/drivers/xen/gntdev-dmabuf.c
> +++ b/drivers/xen/gntdev-dmabuf.c
> @@ -11,6 +11,7 @@
>  #include <linux/kernel.h>
>  #include <linux/errno.h>
>  #include <linux/dma-buf.h>
> +#include <linux/dma-direct.h>
>  #include <linux/slab.h>
>  #include <linux/types.h>
>  #include <linux/uaccess.h>
> @@ -50,7 +51,7 @@ struct gntdev_dmabuf {
>  
>  	/* Number of pages this buffer has. */
>  	int nr_pages;
> -	/* Pages of this buffer. */
> +	/* Pages of this buffer (only for dma-buf export). */
>  	struct page **pages;
>  };
>  
> @@ -484,7 +485,7 @@ static int dmabuf_exp_from_refs(struct gntdev_priv *priv, int flags,
>  /* DMA buffer import support. */
>  
>  static int
> -dmabuf_imp_grant_foreign_access(struct page **pages, u32 *refs,
> +dmabuf_imp_grant_foreign_access(unsigned long *gfns, u32 *refs,
>  				int count, int domid)
>  {
>  	grant_ref_t priv_gref_head;
> @@ -507,7 +508,7 @@ dmabuf_imp_grant_foreign_access(struct page **pages, u32 *refs,
>  		}
>  
>  		gnttab_grant_foreign_access_ref(cur_ref, domid,
> -						xen_page_to_gfn(pages[i]), 0);
> +						gfns[i], 0);
>  		refs[i] = cur_ref;
>  	}
>  
> @@ -529,7 +530,6 @@ static void dmabuf_imp_end_foreign_access(u32 *refs, int count)
>  
>  static void dmabuf_imp_free_storage(struct gntdev_dmabuf *gntdev_dmabuf)
>  {
> -	kfree(gntdev_dmabuf->pages);
>  	kfree(gntdev_dmabuf->u.imp.refs);
>  	kfree(gntdev_dmabuf);
>  }
> @@ -549,12 +549,6 @@ static struct gntdev_dmabuf *dmabuf_imp_alloc_storage(int count)
>  	if (!gntdev_dmabuf->u.imp.refs)
>  		goto fail;
>  
> -	gntdev_dmabuf->pages = kcalloc(count,
> -				       sizeof(gntdev_dmabuf->pages[0]),
> -				       GFP_KERNEL);
> -	if (!gntdev_dmabuf->pages)
> -		goto fail;
> -
>  	gntdev_dmabuf->nr_pages = count;
>  
>  	for (i = 0; i < count; i++)
> @@ -576,7 +570,8 @@ dmabuf_imp_to_refs(struct gntdev_dmabuf_priv *priv, struct device *dev,
>  	struct dma_buf *dma_buf;
>  	struct dma_buf_attachment *attach;
>  	struct sg_table *sgt;
> -	struct sg_page_iter sg_iter;
> +	struct sg_dma_page_iter sg_iter;
> +	unsigned long *gfns;
>  	int i;
>  
>  	dma_buf = dma_buf_get(fd);
> @@ -624,26 +619,23 @@ dmabuf_imp_to_refs(struct gntdev_dmabuf_priv *priv, struct device *dev,
>  
>  	gntdev_dmabuf->u.imp.sgt = sgt;
>  
> -	/* Now convert sgt to array of pages and check for page validity. */
> +	gfns = kcalloc(count, sizeof(*gfns), GFP_KERNEL);
> +	if (!gfns)
> +		goto fail_unmap;
> +
> +	/* Now convert sgt to array of gfns without accessing underlying pages. */
>  	i = 0;
> -	for_each_sgtable_page(sgt, &sg_iter, 0) {
> -		struct page *page = sg_page_iter_page(&sg_iter);
> -		/*
> -		 * Check if page is valid: this can happen if we are given
> -		 * a page from VRAM or other resources which are not backed
> -		 * by a struct page.
> -		 */
> -		if (!pfn_valid(page_to_pfn(page))) {
> -			ret = ERR_PTR(-EINVAL);
> -			goto fail_unmap;
> -		}
> +	for_each_sgtable_dma_page(sgt, &sg_iter, 0) {
> +		dma_addr_t addr = sg_page_iter_dma_address(&sg_iter);
> +		unsigned long pfn = bfn_to_pfn(XEN_PFN_DOWN(dma_to_phys(dev, addr)));
>  
> -		gntdev_dmabuf->pages[i++] = page;
> +		gfns[i++] = pfn_to_gfn(pfn);
>  	}
>  
> -	ret = ERR_PTR(dmabuf_imp_grant_foreign_access(gntdev_dmabuf->pages,
> +	ret = ERR_PTR(dmabuf_imp_grant_foreign_access(gfns,
>  						      gntdev_dmabuf->u.imp.refs,
>  						      count, domid));
> +	kfree(gfns);
>  	if (IS_ERR(ret))
>  		goto fail_end_access;
>  
> -- 
> 2.34.1
> 


From xen-devel-bounces@lists.xenproject.org Fri Jan 05 04:19:26 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 05 Jan 2024 04:19:26 +0000
Received: from list by lists.xenproject.org with outflank-mailman.661932.1031742 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLbfq-0000fp-KV; Fri, 05 Jan 2024 04:19:10 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 661932.1031742; Fri, 05 Jan 2024 04:19:10 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLbfq-0000fi-FW; Fri, 05 Jan 2024 04:19:10 +0000
Received: by outflank-mailman (input) for mailman id 661932;
 Fri, 05 Jan 2024 04:19:08 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rLbfo-0000fY-SQ; Fri, 05 Jan 2024 04:19:08 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rLbfo-0002wX-NB; Fri, 05 Jan 2024 04:19:08 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rLbfo-0002PQ-3I; Fri, 05 Jan 2024 04:19:08 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rLbfo-000690-2s; Fri, 05 Jan 2024 04:19:08 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=+5gWDYVc+4JaKBuexPKS2+8CyexUcPBFAypz6Qj/Kls=; b=SAnlnCKeS6jm/xaYBf6qZSxrP5
	DTF7cbxAnqWJJiWlhJOUwWXgPWY1ANjnoc2OdDwrUqEQvg0vA2eifS9zjm2sq59poUtZoxhNOWAYW
	2Qar88TqlH1P3nn3l9sueVeelMqrUZUJo9huAmVkQWAxzE/je6tENpXnAAFp2wJqUEWo=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184252-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [linux-linus test] 184252: tolerable FAIL - PUSHED
X-Osstest-Failures:
    linux-linus:test-arm64-arm64-examine:reboot:fail:heisenbug
    linux-linus:test-amd64-amd64-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    linux-linus:test-amd64-amd64-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    linux-linus:test-amd64-amd64-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-raw:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-qcow2:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-qemuu-nested-amd:debian-hvm-install/l1/l2:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-xsm:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-thunderx:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-thunderx:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-xsm:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-credit2:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-xsm:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-credit2:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-credit1:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-credit1:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-libvirt-xsm:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-libvirt-xsm:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-multivcpu:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-multivcpu:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit1:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit1:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-arndale:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-arndale:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-rtds:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-rtds:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-qcow2:migrate-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-libvirt-raw:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-vhd:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-vhd:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-vhd:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-vhd:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit2:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit2:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-qcow2:migrate-support-check:fail:nonblocking
X-Osstest-Versions-This:
    linux=5eff55d725a4e0dc6fc7709c4b1ca4fe40588d07
X-Osstest-Versions-That:
    linux=ac865f00af293d081356bec56eea90815094a60e
From: osstest service owner <osstest-admin@xenproject.org>
Date: Fri, 05 Jan 2024 04:19:08 +0000

flight 184252 linux-linus real [real]
flight 184254 linux-linus real-retest [real]
http://logs.test-lab.xenproject.org/osstest/logs/184252/
http://logs.test-lab.xenproject.org/osstest/logs/184254/

Failures :-/ but no regressions.

Tests which are failing intermittently (not blocking):
 test-arm64-arm64-examine      8 reboot              fail pass in 184254-retest

Tests which did not succeed, but are not blocking:
 test-amd64-amd64-xl-qemut-win7-amd64 19 guest-stop            fail like 184248
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 184248
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 184248
 test-armhf-armhf-libvirt-raw 15 saverestore-support-check    fail  like 184248
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 184248
 test-amd64-amd64-xl-qemut-ws16-amd64 19 guest-stop            fail like 184248
 test-armhf-armhf-libvirt-qcow2 15 saverestore-support-check   fail like 184248
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 184248
 test-amd64-amd64-libvirt     15 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl          15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl          16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-thunderx 15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-thunderx 16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-xsm      15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit2  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-xsm      16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-credit2  16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-credit1  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit1  16 saverestore-support-check    fail   never pass
 test-arm64-arm64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-xsm 16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-multivcpu 15 migrate-support-check        fail  never pass
 test-armhf-armhf-xl-multivcpu 16 saverestore-support-check    fail  never pass
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-armhf-armhf-xl-credit1  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit1  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-arndale  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-arndale  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-rtds     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-rtds     16 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-qcow2 14 migrate-support-check        fail never pass
 test-amd64-amd64-libvirt-raw 14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 15 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-vhd      14 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-vhd      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-raw 14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-credit2  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit2  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-qcow2 14 migrate-support-check        fail never pass

version targeted for testing:
 linux                5eff55d725a4e0dc6fc7709c4b1ca4fe40588d07
baseline version:
 linux                ac865f00af293d081356bec56eea90815094a60e

Last test of basis   184248  2024-01-03 22:40:42 Z    1 days
Testing same since   184252  2024-01-04 19:43:56 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Aabish Malik <aabishmalik3337@gmail.com>
  Andy Chi <andy.chi@canonical.com>
  Arnd Bergmann <arnd@arndb.de>
  Chancel Liu <chancel.liu@nxp.com>
  Dave Airlie <airlied@redhat.com>
  Douglas Anderson <dianders@chromium.org>
  Eugen Hristev <eugen.hristev@collabora.com>
  Geoffrey D. Bennett <g@b4.vu>
  Gergo Koteles <soyer@irl.hu>
  Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
  Jani Nikula <jani.nikula@intel.com>
  Jeffrey Hugo <quic_jhugo@quicinc.com>
  Jocelyn Falempe <jfalempe@redhat.com>
  Khaled Almahallawy <khaled.almahallawy@intel.com>
  Linus Torvalds <torvalds@linux-foundation.org>
  Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
  Mark Brown <broonie@kernel.org>
  Peter Ujfalusi <peter.ujfalusi@linux.intel.com>
  Pranjal Ramajor Asha Kanojiya <quic_pkanojiy@quicinc.com>
  Shengjiu Wang <shengjiu.wang@gmail.com>
  Shin'ichiro Kawasaki <shinichiro.kawasaki@wdc.com>
  Siddhesh Dharme <siddheshdharme18@gmail.com>
  Takashi Iwai <tiwai@suse.de>
  Umesh Nerlige Ramappa <umesh.nerlige.ramappa@intel.com>

jobs:
 build-amd64-xsm                                              pass    
 build-arm64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64                                                  pass    
 build-arm64                                                  pass    
 build-armhf                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-arm64-libvirt                                          pass    
 build-armhf-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-pvops                                            pass    
 build-arm64-pvops                                            pass    
 build-armhf-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-amd64-amd64-xl                                          pass    
 test-amd64-coresched-amd64-xl                                pass    
 test-arm64-arm64-xl                                          pass    
 test-armhf-armhf-xl                                          pass    
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm           pass    
 test-amd64-amd64-xl-qemut-stubdom-debianhvm-amd64-xsm        pass    
 test-amd64-amd64-xl-qemut-debianhvm-i386-xsm                 pass    
 test-amd64-amd64-xl-qemuu-debianhvm-i386-xsm                 pass    
 test-amd64-amd64-libvirt-xsm                                 pass    
 test-arm64-arm64-libvirt-xsm                                 pass    
 test-amd64-amd64-xl-xsm                                      pass    
 test-arm64-arm64-xl-xsm                                      pass    
 test-amd64-amd64-qemuu-nested-amd                            fail    
 test-amd64-amd64-xl-pvhv2-amd                                pass    
 test-amd64-amd64-dom0pvh-xl-amd                              pass    
 test-amd64-amd64-xl-qemut-debianhvm-amd64                    pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64                    pass    
 test-amd64-amd64-freebsd11-amd64                             pass    
 test-amd64-amd64-freebsd12-amd64                             pass    
 test-amd64-amd64-xl-qemuu-ovmf-amd64                         pass    
 test-amd64-amd64-xl-qemut-win7-amd64                         fail    
 test-amd64-amd64-xl-qemuu-win7-amd64                         fail    
 test-amd64-amd64-xl-qemut-ws16-amd64                         fail    
 test-amd64-amd64-xl-qemuu-ws16-amd64                         fail    
 test-armhf-armhf-xl-arndale                                  pass    
 test-amd64-amd64-examine-bios                                pass    
 test-amd64-amd64-xl-credit1                                  pass    
 test-arm64-arm64-xl-credit1                                  pass    
 test-armhf-armhf-xl-credit1                                  pass    
 test-amd64-amd64-xl-credit2                                  pass    
 test-arm64-arm64-xl-credit2                                  pass    
 test-armhf-armhf-xl-credit2                                  pass    
 test-amd64-amd64-xl-qemuu-dmrestrict-amd64-dmrestrict        pass    
 test-amd64-amd64-examine                                     pass    
 test-arm64-arm64-examine                                     fail    
 test-armhf-armhf-examine                                     pass    
 test-amd64-amd64-qemuu-nested-intel                          pass    
 test-amd64-amd64-xl-pvhv2-intel                              pass    
 test-amd64-amd64-dom0pvh-xl-intel                            pass    
 test-amd64-amd64-libvirt                                     pass    
 test-armhf-armhf-libvirt                                     pass    
 test-amd64-amd64-xl-multivcpu                                pass    
 test-armhf-armhf-xl-multivcpu                                pass    
 test-amd64-amd64-pair                                        pass    
 test-amd64-amd64-libvirt-pair                                pass    
 test-amd64-amd64-xl-pvshim                                   pass    
 test-amd64-amd64-pygrub                                      pass    
 test-amd64-amd64-libvirt-qcow2                               pass    
 test-armhf-armhf-libvirt-qcow2                               pass    
 test-amd64-amd64-libvirt-raw                                 pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-armhf-armhf-libvirt-raw                                 pass    
 test-amd64-amd64-xl-rtds                                     pass    
 test-armhf-armhf-xl-rtds                                     pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64-shadow             pass    
 test-amd64-amd64-xl-shadow                                   pass    
 test-arm64-arm64-xl-thunderx                                 pass    
 test-amd64-amd64-examine-uefi                                pass    
 test-amd64-amd64-xl-vhd                                      pass    
 test-arm64-arm64-xl-vhd                                      pass    
 test-armhf-armhf-xl-vhd                                      pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Pushing revision :

hint: The 'hooks/update' hook was ignored because it's not set as executable.
hint: You can disable this warning with `git config advice.ignoredHook false`.
hint: The 'hooks/post-receive' hook was ignored because it's not set as executable.
hint: You can disable this warning with `git config advice.ignoredHook false`.
hint: The 'hooks/post-update' hook was ignored because it's not set as executable.
hint: You can disable this warning with `git config advice.ignoredHook false`.
To xenbits.xen.org:/home/xen/git/linux-pvops.git
   ac865f00af29..5eff55d725a4  5eff55d725a4e0dc6fc7709c4b1ca4fe40588d07 -> tested/linux-linus


From xen-devel-bounces@lists.xenproject.org Fri Jan 05 04:44:15 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 05 Jan 2024 04:44:15 +0000
Received: from list by lists.xenproject.org with outflank-mailman.661938.1031753 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLc41-0004Hf-J6; Fri, 05 Jan 2024 04:44:09 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 661938.1031753; Fri, 05 Jan 2024 04:44:09 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLc41-0004HY-Ev; Fri, 05 Jan 2024 04:44:09 +0000
Received: by outflank-mailman (input) for mailman id 661938;
 Fri, 05 Jan 2024 04:44:07 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=ItCV=IP=linux.alibaba.com=hsiangkao@srs-se1.protection.inumbo.net>)
 id 1rLc3z-0004HS-Mm
 for xen-devel@lists.xenproject.org; Fri, 05 Jan 2024 04:44:07 +0000
Received: from out30-111.freemail.mail.aliyun.com
 (out30-111.freemail.mail.aliyun.com [115.124.30.111])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 0acaf808-ab85-11ee-9b0f-b553b5be7939;
 Fri, 05 Jan 2024 05:44:02 +0100 (CET)
Received: from 30.222.33.160(mailfrom:hsiangkao@linux.alibaba.com
 fp:SMTPD_---0VzzUQHt_1704429833) by smtp.aliyun-inc.com;
 Fri, 05 Jan 2024 12:43:56 +0800
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 0acaf808-ab85-11ee-9b0f-b553b5be7939
X-Alimail-AntiSpam:AC=PASS;BC=-1|-1;BR=01201311R881e4;CH=green;DM=||false|;DS=||;FP=0|-1|-1|-1|0|-1|-1|-1;HT=ay29a033018046060;MF=hsiangkao@linux.alibaba.com;NM=1;PH=DS;RN=49;SR=0;TI=SMTPD_---0VzzUQHt_1704429833;
Message-ID: <a2c7910c-4c2f-4290-a895-1c4255b2ee62@linux.alibaba.com>
Date: Fri, 5 Jan 2024 12:43:52 +0800
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH RFC v3 for-6.8/block 11/17] erofs: use bdev api
To: Yu Kuai <yukuai1@huaweicloud.com>, Jan Kara <jack@suse.cz>
Cc: axboe@kernel.dk, roger.pau@citrix.com, colyli@suse.de,
 kent.overstreet@gmail.com, joern@lazybastard.org, miquel.raynal@bootlin.com,
 richard@nod.at, vigneshr@ti.com, sth@linux.ibm.com, hoeppner@linux.ibm.com,
 hca@linux.ibm.com, gor@linux.ibm.com, agordeev@linux.ibm.com,
 jejb@linux.ibm.com, martin.petersen@oracle.com, clm@fb.com,
 josef@toxicpanda.com, dsterba@suse.com, viro@zeniv.linux.org.uk,
 brauner@kernel.org, nico@fluxnic.net, xiang@kernel.org, chao@kernel.org,
 tytso@mit.edu, adilger.kernel@dilger.ca, jack@suse.com,
 konishi.ryusuke@gmail.com, willy@infradead.org, akpm@linux-foundation.org,
 hare@suse.de, p.raghav@samsung.com, linux-block@vger.kernel.org,
 linux-kernel@vger.kernel.org, xen-devel@lists.xenproject.org,
 linux-bcache@vger.kernel.org, linux-mtd@lists.infradead.org,
 linux-s390@vger.kernel.org, linux-scsi@vger.kernel.org,
 linux-bcachefs@vger.kernel.org, linux-btrfs@vger.kernel.org,
 linux-fsdevel@vger.kernel.org, linux-erofs@lists.ozlabs.org,
 linux-ext4@vger.kernel.org, linux-nilfs@vger.kernel.org,
 yi.zhang@huawei.com, yangerkun@huawei.com, "yukuai (C)" <yukuai3@huawei.com>
References: <20231221085712.1766333-1-yukuai1@huaweicloud.com>
 <20231221085826.1768395-1-yukuai1@huaweicloud.com>
 <20240104120207.ig7tfc3mgckwkp2n@quack3>
 <7f868579-f993-aaa1-b7d7-eccbe0b0173c@huaweicloud.com>
From: Gao Xiang <hsiangkao@linux.alibaba.com>
In-Reply-To: <7f868579-f993-aaa1-b7d7-eccbe0b0173c@huaweicloud.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit



On 2024/1/4 20:32, Yu Kuai wrote:
> Hi, Jan!
> 
> 在 2024/01/04 20:02, Jan Kara 写道:
>> On Thu 21-12-23 16:58:26, Yu Kuai wrote:
>>> From: Yu Kuai <yukuai3@huawei.com>
>>>
>>> Avoid to access bd_inode directly, prepare to remove bd_inode from
>>> block_device.
>>>
>>> Signed-off-by: Yu Kuai <yukuai3@huawei.com>
>>
>> I'm not erofs maintainer but IMO this is quite ugly and grows erofs_buf
>> unnecessarily. I'd rather store 'sb' pointer in erofs_buf and then do the
>> right thing in erofs_bread() which is the only place that seems to care
>> about the erofs_is_fscache_mode() distinction... Also blkszbits is then
>> trivially sb->s_blocksize_bits so it would all seem much more
>> straightforward.
> 
> Thanks for your suggestion, I'll follow this unless Gao Xiang has other
> suggestions.

Yes, that would be better, I'm fine with that.  Yet in the future we
may support a seperate large dirblocksize more than block size, but
we could revisit later.

Thanks,
Gao Xiang

> 
> Kuai
>>
>>                                 Honza
>>


From xen-devel-bounces@lists.xenproject.org Fri Jan 05 06:09:53 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 05 Jan 2024 06:09:53 +0000
Received: from list by lists.xenproject.org with outflank-mailman.661944.1031762 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLdOi-0005FB-Db; Fri, 05 Jan 2024 06:09:36 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 661944.1031762; Fri, 05 Jan 2024 06:09:36 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLdOi-0005F4-Ak; Fri, 05 Jan 2024 06:09:36 +0000
Received: by outflank-mailman (input) for mailman id 661944;
 Fri, 05 Jan 2024 06:09:34 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=0sKf=IP=bombadil.srs.infradead.org=BATV+47ea59da63ebb99efca2+7439+infradead.org+hch@srs-se1.protection.inumbo.net>)
 id 1rLdOd-0005Ey-Lp
 for xen-devel@lists.xenproject.org; Fri, 05 Jan 2024 06:09:34 +0000
Received: from bombadil.infradead.org (bombadil.infradead.org
 [2607:7c80:54:3::133])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id fa2196ac-ab90-11ee-9b0f-b553b5be7939;
 Fri, 05 Jan 2024 07:09:27 +0100 (CET)
Received: from hch by bombadil.infradead.org with local (Exim 4.96 #2 (Red Hat
 Linux)) id 1rLdNq-00G2Lb-1Y; Fri, 05 Jan 2024 06:08:42 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: fa2196ac-ab90-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=infradead.org; s=bombadil.20210309; h=In-Reply-To:Content-Type:MIME-Version
	:References:Message-ID:Subject:Cc:To:From:Date:Sender:Reply-To:
	Content-Transfer-Encoding:Content-ID:Content-Description;
	bh=MfpbILepFAZMB7h2HpBoL7ju9YNJfneelNa0zdsWGTE=; b=e70OEnapxROCnryMJ+/p/ZRb6q
	Co5Z26/TzQb4j3uqh1HZXPyKmCgH2RwmGzkFPqv/2KSdkod23+EEjl5k+gUFVeqhE5cLIgjhrZRln
	/TXAnczuvmS/5fv3lonygpNZAr1rkpjLeOKpUo4IcO+WT8eqyhpsxuK7Ezd7daqbCvaeMhieEDC36
	2YdiX92FOcKP4zmjzJggSzAOI+XBEn3tUqKwk8TRuVaK3ZW0yVd/FMa71m8GX6rJkaQu4CkxJRsNW
	K9G8CtK6Nzof6XV0ra5vX4twK05qlkoQTCHmArqOs9K34hsqfqleQt54ZZt7JnrErtkJGz1qKQ4DI
	JcEjMrNg==;
Date: Thu, 4 Jan 2024 22:08:42 -0800
From: Christoph Hellwig <hch@infradead.org>
To: Jan Kara <jack@suse.cz>
Cc: Yu Kuai <yukuai1@huaweicloud.com>, axboe@kernel.dk,
	roger.pau@citrix.com, colyli@suse.de, kent.overstreet@gmail.com,
	joern@lazybastard.org, miquel.raynal@bootlin.com, richard@nod.at,
	vigneshr@ti.com, sth@linux.ibm.com, hoeppner@linux.ibm.com,
	hca@linux.ibm.com, gor@linux.ibm.com, agordeev@linux.ibm.com,
	jejb@linux.ibm.com, martin.petersen@oracle.com, clm@fb.com,
	josef@toxicpanda.com, dsterba@suse.com, viro@zeniv.linux.org.uk,
	brauner@kernel.org, nico@fluxnic.net, xiang@kernel.org,
	chao@kernel.org, tytso@mit.edu, adilger.kernel@dilger.ca,
	jack@suse.com, konishi.ryusuke@gmail.com, willy@infradead.org,
	akpm@linux-foundation.org, hare@suse.de, p.raghav@samsung.com,
	linux-block@vger.kernel.org, linux-kernel@vger.kernel.org,
	xen-devel@lists.xenproject.org, linux-bcache@vger.kernel.org,
	linux-mtd@lists.infradead.org, linux-s390@vger.kernel.org,
	linux-scsi@vger.kernel.org, linux-bcachefs@vger.kernel.org,
	linux-btrfs@vger.kernel.org, linux-fsdevel@vger.kernel.org,
	linux-erofs@lists.ozlabs.org, linux-ext4@vger.kernel.org,
	linux-nilfs@vger.kernel.org, yukuai3@huawei.com,
	yi.zhang@huawei.com, yangerkun@huawei.com
Subject: Re: [PATCH RFC v3 for-6.8/block 02/17] xen/blkback: use bdev api in
 xen_update_blkif_status()
Message-ID: <ZZec6mX1vz4ayRq1@infradead.org>
References: <20231221085712.1766333-1-yukuai1@huaweicloud.com>
 <20231221085712.1766333-3-yukuai1@huaweicloud.com>
 <20240104110631.3vspsvxbbvcpdqdu@quack3>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <20240104110631.3vspsvxbbvcpdqdu@quack3>
X-SRS-Rewrite: SMTP reverse-path rewritten from <hch@infradead.org> by bombadil.infradead.org. See http://www.infradead.org/rpr.html

On Thu, Jan 04, 2024 at 12:06:31PM +0100, Jan Kara wrote:
> This function uses invalidate_inode_pages2() while invalidate_bdev() ends
> up using mapping_try_invalidate() and there are subtle behavioral
> differences between these two (for example invalidate_inode_pages2() tries
> to clean dirty pages using the ->launder_folio method). So I think you'll
> need helper like invalidate_bdev2() for this.

That assues that the existing code actually does this intentionally,
which seems doubtful.  But the change in behavior does not to be
documented and explained.



From xen-devel-bounces@lists.xenproject.org Fri Jan 05 06:10:47 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 05 Jan 2024 06:10:47 +0000
Received: from list by lists.xenproject.org with outflank-mailman.661947.1031772 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLdPq-0006a7-OS; Fri, 05 Jan 2024 06:10:46 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 661947.1031772; Fri, 05 Jan 2024 06:10:46 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLdPq-0006a0-KV; Fri, 05 Jan 2024 06:10:46 +0000
Received: by outflank-mailman (input) for mailman id 661947;
 Fri, 05 Jan 2024 06:10:44 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=0sKf=IP=bombadil.srs.infradead.org=BATV+47ea59da63ebb99efca2+7439+infradead.org+hch@srs-se1.protection.inumbo.net>)
 id 1rLdPo-0006Zq-Tt
 for xen-devel@lists.xenproject.org; Fri, 05 Jan 2024 06:10:44 +0000
Received: from bombadil.infradead.org (bombadil.infradead.org
 [2607:7c80:54:3::133])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 27506bd4-ab91-11ee-98ef-6d05b1d4d9a1;
 Fri, 05 Jan 2024 07:10:43 +0100 (CET)
Received: from hch by bombadil.infradead.org with local (Exim 4.96 #2 (Red Hat
 Linux)) id 1rLdPN-00G2Yc-1R; Fri, 05 Jan 2024 06:10:17 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 27506bd4-ab91-11ee-98ef-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=infradead.org; s=bombadil.20210309; h=In-Reply-To:Content-Type:MIME-Version
	:References:Message-ID:Subject:Cc:To:From:Date:Sender:Reply-To:
	Content-Transfer-Encoding:Content-ID:Content-Description;
	bh=dSHA2/+sx7Ginf1zZQjwMoxOOLN3aAKl+o5J049zcoQ=; b=VzS7OQo05vKzjkbMgtDbyoqlq1
	xMjqJoHMrYZx0z8X2pzLagECzGMwlohl9ymKqBvvmtpDIlsWY6AG4N/f1Z7a0npjBNyE4ZwknljfO
	Adoqi4XTmVgFGXh4zBStmNMnqV7aBBtXocYkaX6HML2N7/QqnRhhdS2TWAoeezhinIAaanN7Ej7dv
	hxVnm2Vk5habqISRNzPmh9q8JmfV7hW/bJTp3S/nkUAXM07TMl3K+hndw/tt6Sa2uemEb90WWvc6e
	e9D7SiAdy2v6KE4fIeq1gb230I0mhq6ROH5a4jotGgz0Zrj+acjX4nO0JO/pnPZhJ1+dxysUg9Aw0
	JvaSlTvg==;
Date: Thu, 4 Jan 2024 22:10:17 -0800
From: Christoph Hellwig <hch@infradead.org>
To: Jan Kara <jack@suse.cz>
Cc: Yu Kuai <yukuai1@huaweicloud.com>, axboe@kernel.dk,
	roger.pau@citrix.com, colyli@suse.de, kent.overstreet@gmail.com,
	joern@lazybastard.org, miquel.raynal@bootlin.com, richard@nod.at,
	vigneshr@ti.com, sth@linux.ibm.com, hoeppner@linux.ibm.com,
	hca@linux.ibm.com, gor@linux.ibm.com, agordeev@linux.ibm.com,
	jejb@linux.ibm.com, martin.petersen@oracle.com, clm@fb.com,
	josef@toxicpanda.com, dsterba@suse.com, viro@zeniv.linux.org.uk,
	brauner@kernel.org, nico@fluxnic.net, xiang@kernel.org,
	chao@kernel.org, tytso@mit.edu, adilger.kernel@dilger.ca,
	jack@suse.com, konishi.ryusuke@gmail.com, willy@infradead.org,
	akpm@linux-foundation.org, hare@suse.de, p.raghav@samsung.com,
	linux-block@vger.kernel.org, linux-kernel@vger.kernel.org,
	xen-devel@lists.xenproject.org, linux-bcache@vger.kernel.org,
	linux-mtd@lists.infradead.org, linux-s390@vger.kernel.org,
	linux-scsi@vger.kernel.org, linux-bcachefs@vger.kernel.org,
	linux-btrfs@vger.kernel.org, linux-fsdevel@vger.kernel.org,
	linux-erofs@lists.ozlabs.org, linux-ext4@vger.kernel.org,
	linux-nilfs@vger.kernel.org, yukuai3@huawei.com,
	yi.zhang@huawei.com, yangerkun@huawei.com
Subject: Re: [PATCH RFC v3 for-6.8/block 04/17] mtd: block2mtd: use bdev apis
Message-ID: <ZZedSYAedA05Oex2@infradead.org>
References: <20231221085712.1766333-1-yukuai1@huaweicloud.com>
 <20231221085712.1766333-5-yukuai1@huaweicloud.com>
 <20240104112855.uci45hhqaiitmsir@quack3>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <20240104112855.uci45hhqaiitmsir@quack3>
X-SRS-Rewrite: SMTP reverse-path rewritten from <hch@infradead.org> by bombadil.infradead.org. See http://www.infradead.org/rpr.html

On Thu, Jan 04, 2024 at 12:28:55PM +0100, Jan Kara wrote:
> What do you think? Because when we are working with the folios it is rather
> natural to use their mapping for dirty balancing?

The real problem is that block2mtd pokes way to deep into block
internals.

I think the saviour here is Christians series to replace the bdev handle
with a struct file, which will allow to use the normal file write path
here and get rid of the entire layering volation.



From xen-devel-bounces@lists.xenproject.org Fri Jan 05 06:23:02 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 05 Jan 2024 06:23:02 +0000
Received: from list by lists.xenproject.org with outflank-mailman.661955.1031791 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLdbg-0008Th-0C; Fri, 05 Jan 2024 06:23:00 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 661955.1031791; Fri, 05 Jan 2024 06:22:59 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLdbf-0008Ta-Tg; Fri, 05 Jan 2024 06:22:59 +0000
Received: by outflank-mailman (input) for mailman id 661955;
 Fri, 05 Jan 2024 06:22:58 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=YI+5=IP=amd.com=Jiqian.Chen@srs-se1.protection.inumbo.net>)
 id 1rLdbd-0008En-TA
 for xen-devel@lists.xenproject.org; Fri, 05 Jan 2024 06:22:58 +0000
Received: from NAM12-BN8-obe.outbound.protection.outlook.com
 (mail-bn8nam12on20610.outbound.protection.outlook.com
 [2a01:111:f400:fe5b::610])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id daf98ba1-ab92-11ee-9b0f-b553b5be7939;
 Fri, 05 Jan 2024 07:22:53 +0100 (CET)
Received: from SJ0PR03CA0075.namprd03.prod.outlook.com (2603:10b6:a03:331::20)
 by BY5PR12MB4194.namprd12.prod.outlook.com (2603:10b6:a03:210::7)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7159.16; Fri, 5 Jan
 2024 06:22:49 +0000
Received: from DS2PEPF0000343B.namprd02.prod.outlook.com
 (2603:10b6:a03:331:cafe::7) by SJ0PR03CA0075.outlook.office365.com
 (2603:10b6:a03:331::20) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7159.16 via Frontend
 Transport; Fri, 5 Jan 2024 06:22:48 +0000
Received: from SATLEXMB04.amd.com (165.204.84.17) by
 DS2PEPF0000343B.mail.protection.outlook.com (10.167.18.38) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.7159.9 via Frontend Transport; Fri, 5 Jan 2024 06:22:48 +0000
Received: from cjq-desktop.amd.com (10.180.168.240) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.34; Fri, 5 Jan
 2024 00:22:32 -0600
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: daf98ba1-ab92-11ee-9b0f-b553b5be7939
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=nsWvq6KavCQe5g9hllVICUqZhNdKMSsQyNvouB0T82wmhk7L+7sHnypdgrvHuhmJWTcWGn5GHbjIChYc+qAcziSOby/9LX5cJVpyYfYGNBMgflpRdwtGnuhDqTml6bw7wxMsNIIHLm2ltI9C3UowpTxlBYp+a1LnXqJDIWWnTylFSn2TzbkYyfgKIc1vJIQWzx+ROkmt6aZkWxOUU+PUxOmVL1lQBt5VoAGUS4nnjSquIJZwvbhOgw+zOC3aZqi6OeLg0F5L9HLKjWMCL8C0EZFWHvU8FyTogHBKQbRe1+zPdT9lbW64CEw9mJkcp8JQtAcj0APvp6FwKwMF25PwEQ==
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=WU8XRv+JnqaDF1y6IiTVZ7L1pOo+p7PmuQARS50kZOk=;
 b=AntXcpL6/v/5oYvF0L2g41knNDvQyM5goqrTtbXekWQDpjorR+i1mzduzcwUMjghEjWau8j0lX74FYxy6AE+cXpkFdeWhBgY4WLrb2NlJy7N/qw0BTU2O9cMsmLraNsTThb9WpMyb3R7BIBW7nKaYgIdZRkcdiJm8FBsVy0iWs8VAFZJF23ZyBZYXW3w6BEVJf3ElU8v6bStb3hQmlUUOPPNzHvOG8jSmg8W0P/o3BbQTsg8ueyKzeo057G+kSg+DB6EidKcyBM3IjJ1BWvWkMEgupNpUXfjt21DDFB+OUxuShPTDqblURv4tLf2x9mZgpHAaMD8rWftan7ruqMbdQ==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=suse.com 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)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=WU8XRv+JnqaDF1y6IiTVZ7L1pOo+p7PmuQARS50kZOk=;
 b=PnEm8AkPQFTT8HhRtigUTYQcXsJj1riscDanHnKVjgEoJ9KC74fFeb8VO94dvji3dPCCmwdHouMr48aPbcgFp49XKmYOwktDNltS+QZ8GfBnaMR2+o8H0YY88elQ8IPYuOskpxfVdgMEeoeymc/Zlac0Vg1qHezz8o4V2RSCWOc=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C
From: Jiqian Chen <Jiqian.Chen@amd.com>
To: Juergen Gross <jgross@suse.com>, Stefano Stabellini
	<sstabellini@kernel.org>, Oleksandr Tyshchenko
	<oleksandr_tyshchenko@epam.com>, Boris Ostrovsky
	<boris.ostrovsky@oracle.com>, Bjorn Helgaas <bhelgaas@google.com>, "Rafael J
 . Wysocki" <rafael@kernel.org>, Len Brown <lenb@kernel.org>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>
CC: <xen-devel@lists.xenproject.org>, <linux-pci@vger.kernel.org>,
	<linux-kernel@vger.kernel.org>, <linux-acpi@vger.kernel.org>, "Stewart
 Hildebrand" <Stewart.Hildebrand@amd.com>, Huang Rui <Ray.Huang@amd.com>,
	Jiqian Chen <Jiqian.Chen@amd.com>
Subject: [RFC KERNEL PATCH v4 0/3] Support device passthrough when dom0 is PVH on Xen
Date: Fri, 5 Jan 2024 14:22:14 +0800
Message-ID: <20240105062217.349645-1-Jiqian.Chen@amd.com>
X-Mailer: git-send-email 2.34.1
MIME-Version: 1.0
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
X-Originating-IP: [10.180.168.240]
X-ClientProxiedBy: SATLEXMB04.amd.com (10.181.40.145) To SATLEXMB04.amd.com
 (10.181.40.145)
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: DS2PEPF0000343B:EE_|BY5PR12MB4194:EE_
X-MS-Office365-Filtering-Correlation-Id: 1ab493ed-44f6-4cfc-2b35-08dc0db6bd1f
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam: BCL:0;
X-Microsoft-Antispam-Message-Info:
	v34HGsXe2tXTIZIqvabmf6fI8wZuYmrASPHsO/7Cg7LVh/1844Y2bJNQvb0oDqBWKsuR1boynog7BwBEJ+/PTQx6RPn7rYAs4urJS9Rmp+hCqxR0NaD2XjwM4VLEqeDsrW2ShdOUnj+4VaOgdJM7F2YliHAV0KsyvP+hyrmxUPZA5qJZox88apuNCyTWyc1H22ATidijxGw/qPaL//iPTon+WNZCgZWtN7mkx1CfDDL1Mb9G4UeqcK1MIIzVW2zIn2xb9TcVqqy4VawXYeMtawVzSh9Glz/nmjRFq3T1HxXPS4t+dXvpo7qb39QcQDrqpVAoL0Y6jyVNS8/V819+f5mXkvtmOAvhxRc6nU88n9dts9T9WNiJi4k7Sq3tIk7qMl4MTcIWk0FndtW3KXR8xTYQxyBGbvlXJpKehURVcNACSzDZjfEY6jaNl86r7W9cxpRfhrdP7O/6Hfy1aJWNGWfWGFmT9jciMKtgsY9hve6KjAyrg/VP8Erf1U2aAsv7jr6ASE9RnCGsKLl2hpak73tMW8l+2O2JsNZ7rmkQL5otafekWZhpQfLnpyfCempvkpvDcUl/MFg8nTm30x5dXG/09PZGFYDN7s6IqMl2mUHDBy/MtfuCTIqY1M7BHd/mQS76kohD/SbfsMT8hduT0pzk6cRPMArJC2scJ8QWJJvomEdiknc/g3f0dCN1ahYr2AFvZ+Z5hsoO/9Ii53569XLTXz4lcsohUOo9pE5pgnHCYyD3fAO7pxSuB5EweqHHI8GwR6yuYGGU9vybfiD32mtnAHcC9RM+YwswWaMtK70=
X-Forefront-Antispam-Report:
	CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230031)(4636009)(136003)(376002)(39860400002)(346002)(396003)(230922051799003)(451199024)(82310400011)(186009)(64100799003)(1800799012)(46966006)(40470700004)(36840700001)(356005)(82740400003)(81166007)(36756003)(40480700001)(40460700003)(86362001)(1076003)(16526019)(26005)(2616005)(426003)(336012)(70586007)(110136005)(70206006)(6666004)(316002)(8936002)(966005)(478600001)(36860700001)(8676002)(7696005)(47076005)(83380400001)(54906003)(7416002)(2906002)(5660300002)(4326008)(41300700001)(36900700001);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Jan 2024 06:22:48.6663
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 1ab493ed-44f6-4cfc-2b35-08dc0db6bd1f
X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com]
X-MS-Exchange-CrossTenant-AuthSource:
	DS2PEPF0000343B.namprd02.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY5PR12MB4194

Hi All,
This is v4 series to support passthrough on Xen when dom0 is PVH.
v3->v4 changes:
* patch#1: change the comment of PHYSDEVOP_pci_device_state_reset; use a new function pcistub_reset_device_state to wrap __pci_reset_function_locked and xen_reset_device_state, and call pcistub_reset_device_state in pci_stub.c
* patch#2: remove map_pirq from xen_pvh_passthrough_gsi

v3 link:
https://lore.kernel.org/lkml/20231210161519.1550860-1-Jiqian.Chen@amd.com/T/#t
v2->v3 changes:
* patch#1: add condition to limit do xen_reset_device_state for no-pv domain in pcistub_init_device.
* patch#2: Abandoning previous implementations that call unmask_irq. To setup gsi and map pirq for passthrough device in pcistub_init_device.
* patch#3: Abandoning previous implementations that adds new syscall to get gsi from irq. To add a new sysfs for gsi, then userspace can get gsi number from sysfs.


v2 link:
https://lore.kernel.org/lkml/20231124103123.3263471-1-Jiqian.Chen@amd.com/T/#t

Below is the description of v2 cover letter:
This series of patches are the v2 of the implementation of passthrough when dom0 is PVH on Xen.
We sent the v1 to upstream before, but the v1 had so many problems and we got lots of suggestions.
I will introduce all issues that these patches try to fix and the differences between v1 and v2.

Issues we encountered:
1. pci_stub failed to write bar for a passthrough device.
Problem: when we run “sudo xl pci-assignable-add <sbdf>” to assign a device, pci_stub will call “pcistub_init_device() -> pci_restore_state() -> pci_restore_config_space() ->
pci_restore_config_space_range() -> pci_restore_config_dword() -> pci_write_config_dword()”, the pci config write will trigger an io interrupt to bar_write() in the xen, but the
bar->enabled was set before, the write is not allowed now, and then when 
bar->Qemu config the
passthrough device in xen_pt_realize(), it gets invalid bar values.

Reason: the reason is that we don't tell vPCI that the device has been reset, so the current cached state in pdev->vpci is all out of date and is different from the real device state.

Solution: to solve this problem, the first patch of kernel(xen/pci: Add xen_reset_device_state
function) and the fist patch of xen(xen/vpci: Clear all vpci status of device) add a new hypercall to reset the state stored in vPCI when the state of real device has changed.
Thank Roger for the suggestion of this v2, and it is different from v1 (https://lore.kernel.org/xen-devel/20230312075455.450187-3-ray.huang@amd.com/), v1 simply allow domU to write pci bar, it does not comply with the design principles of vPCI.

2. failed to do PHYSDEVOP_map_pirq when dom0 is PVH
Problem: HVM domU will do PHYSDEVOP_map_pirq for a passthrough device by using gsi. See xen_pt_realize->xc_physdev_map_pirq and pci_add_dm_done->xc_physdev_map_pirq. Then xc_physdev_map_pirq will call into Xen, but in hvm_physdev_op(), PHYSDEVOP_map_pirq is not allowed.

Reason: In hvm_physdev_op(), the variable "currd" is PVH dom0 and PVH has no X86_EMU_USE_PIRQ flag, it will fail at has_pirq check.

Solution: I think we may need to allow PHYSDEVOP_map_pirq when "currd" is dom0 (at present dom0 is PVH). The second patch of xen(x86/pvh: Open PHYSDEVOP_map_pirq for PVH dom0) allow PVH dom0 do PHYSDEVOP_map_pirq. This v2 patch is better than v1, v1 simply remove the has_pirq check(xen https://lore.kernel.org/xen-devel/20230312075455.450187-4-ray.huang@amd.com/).

3. the gsi of a passthrough device doesn't be unmasked
 3.1 failed to check the permission of pirq
 3.2 the gsi of passthrough device was not registered in PVH dom0

Problem:
3.1 callback function pci_add_dm_done() will be called when qemu config a passthrough device for domU.
This function will call xc_domain_irq_permission()-> pirq_access_permitted() to check if the gsi has corresponding mappings in dom0. But it didn’t, so failed. See XEN_DOMCTL_irq_permission->pirq_access_permitted, "current" is PVH dom0 and it return irq is 0.
3.2 it's possible for a gsi (iow: vIO-APIC pin) to never get registered on PVH dom0, because the devices of PVH are using MSI(-X) interrupts. However, the IO-APIC pin must be configured for it to be able to be mapped into a domU.

Reason: After searching codes, I find "map_pirq" and "register_gsi" will be done in function vioapic_write_redirent->vioapic_hwdom_map_gsi when the gsi(aka ioapic's pin) is unmasked in PVH dom0.
So the two problems can be concluded to that the gsi of a passthrough device doesn't be unmasked.

Solution: to solve these problems, the second patch of kernel(xen/pvh: Unmask irq for passthrough device in PVH dom0) call the unmask_irq() when we assign a device to be passthrough. So that passthrough devices can have the mapping of gsi on PVH dom0 and gsi can be registered. This v2 patch is different from the v1( kernel https://lore.kernel.org/xen-devel/20230312120157.452859-5-ray.huang@amd.com/,
kernel https://lore.kernel.org/xen-devel/20230312120157.452859-5-ray.huang@amd.com/ and xen https://lore.kernel.org/xen-devel/20230312075455.450187-5-ray.huang@amd.com/),
v1 performed "map_pirq" and "register_gsi" on all pci devices on PVH dom0, which is unnecessary and may cause multiple registration.

4. failed to map pirq for gsi
Problem: qemu will call xc_physdev_map_pirq() to map a passthrough device’s gsi to pirq in function xen_pt_realize(). But failed.

Reason: According to the implement of xc_physdev_map_pirq(), it needs gsi instead of irq, but qemu pass irq to it and treat irq as gsi, it is got from file /sys/bus/pci/devices/xxxx:xx:xx.x/irq in function xen_host_pci_device_get(). But actually the gsi number is not equal with irq. On PVH dom0, when it allocates irq for a gsi in function acpi_register_gsi_ioapic(), allocation is dynamic, and follow the principle of applying first, distributing first. And if you debug the kernel codes(see function __irq_alloc_descs), you will find the irq number is allocated from small to large by order, but the applying gsi number is not, gsi 38 may come before gsi 28, that causes gsi 38 get a smaller irq number than gsi 28, and then gsi != irq.

Solution: we can record the relation between gsi and irq, then when userspace(qemu) want to use gsi, we can do a translation. The third patch of kernel(xen/privcmd: Add new syscall to get gsi from irq) records all the relations in acpi_register_gsi_xen_pvh() when dom0 initialize pci devices, and provide a syscall for userspace to get the gsi from irq. The third patch of xen(tools: Add new function to get gsi from irq) add a new function xc_physdev_gsi_from_irq() to call the new syscall added on kernel side.
And then userspace can use that function to get gsi. Then xc_physdev_map_pirq() will success. This v2 patch is the same as v1( kernel https://lore.kernel.org/xen-devel/20230312120157.452859-6-ray.huang@amd.com/ and xen https://lore.kernel.org/xen-devel/20230312075455.450187-6-ray.huang@amd.com/)

About the v2 patch of qemu, just change an included head file, other are similar to the v1 ( qemu https://lore.kernel.org/xen-devel/20230312092244.451465-19-ray.huang@amd.com/), just call
xc_physdev_gsi_from_irq() to get gsi from irq.


Jiqian Chen (3):
  xen/pci: Add xen_reset_device_state function
  xen/pvh: Setup gsi for passthrough device
  PCI/sysfs: Add gsi sysfs for pci_dev

 arch/x86/xen/enlighten_pvh.c       | 90 ++++++++++++++++++++++++++++++
 drivers/acpi/pci_irq.c             |  3 +-
 drivers/pci/pci-sysfs.c            | 11 ++++
 drivers/xen/pci.c                  | 12 ++++
 drivers/xen/xen-pciback/pci_stub.c | 26 ++++++++-
 include/linux/acpi.h               |  1 +
 include/linux/pci.h                |  2 +
 include/xen/acpi.h                 |  6 ++
 include/xen/interface/physdev.h    |  7 +++
 include/xen/pci.h                  |  6 ++
 10 files changed, 160 insertions(+), 4 deletions(-)

-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Fri Jan 05 06:23:02 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 05 Jan 2024 06:23:02 +0000
Received: from list by lists.xenproject.org with outflank-mailman.661956.1031798 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLdbg-00005a-Bz; Fri, 05 Jan 2024 06:23:00 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 661956.1031798; Fri, 05 Jan 2024 06:23:00 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLdbg-00005J-5C; Fri, 05 Jan 2024 06:23:00 +0000
Received: by outflank-mailman (input) for mailman id 661956;
 Fri, 05 Jan 2024 06:22:58 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=YI+5=IP=amd.com=Jiqian.Chen@srs-se1.protection.inumbo.net>)
 id 1rLdbe-0008Eh-FV
 for xen-devel@lists.xenproject.org; Fri, 05 Jan 2024 06:22:58 +0000
Received: from NAM10-MW2-obe.outbound.protection.outlook.com
 (mail-mw2nam10on20600.outbound.protection.outlook.com
 [2a01:111:f403:2412::600])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id dd6d7cb2-ab92-11ee-98ef-6d05b1d4d9a1;
 Fri, 05 Jan 2024 07:22:57 +0100 (CET)
Received: from SJ0PR03CA0067.namprd03.prod.outlook.com (2603:10b6:a03:331::12)
 by DM8PR12MB5430.namprd12.prod.outlook.com (2603:10b6:8:28::6) with
 Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.7159.17; Fri, 5 Jan 2024 06:22:51 +0000
Received: from DS2PEPF0000343B.namprd02.prod.outlook.com
 (2603:10b6:a03:331:cafe::a7) by SJ0PR03CA0067.outlook.office365.com
 (2603:10b6:a03:331::12) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7159.14 via Frontend
 Transport; Fri, 5 Jan 2024 06:22:51 +0000
Received: from SATLEXMB04.amd.com (165.204.84.17) by
 DS2PEPF0000343B.mail.protection.outlook.com (10.167.18.38) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.7159.9 via Frontend Transport; Fri, 5 Jan 2024 06:22:51 +0000
Received: from cjq-desktop.amd.com (10.180.168.240) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.34; Fri, 5 Jan
 2024 00:22:40 -0600
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: dd6d7cb2-ab92-11ee-98ef-6d05b1d4d9a1
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=N4m0EWegQmhRTrEJKBoaIufqDKD6u6YBNKO6kKi8bfKIDKM8bdB4zEBxtNMCResQEFt1yeDxiMWuSSIUxxDokrmZeNBvhuucH4XYn7BbXXS9mTDfUx9sHCkMka2grRiNBLKFJ38dkoEp8XciHPC7kjJMO4dzza8u9bkhKHJebh63VAiyiKXKC/a3rOQeTstXjnPx8ti8KBvSI8WIwjv2jLGVENgmTdkwT4+ZHnuO5Xg+nHbh2YuhLU+23wRkApesI8i2Aa+rdOQmwNIWiL61FX3J6e9MBlHNXlM0EG4AaiQjGeaR6t4ArytNtGQV4Jm9ZTrVwpAQKlPR65VpjAyLZw==
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=RXqnYEfJ7mLljaqmJdZX4G1SrM2H3l3MYlqNsjGgGEw=;
 b=Se7TC4lHN9t4D6zDAODmzGBShbg3TAcbH1WG9QSPsZyKUi21xuCGtqiz1YG+STkh5EaXy0KEQ1IJbEheohcsTf72DVdoc5MtePMWleRz5/0WFaWz53svl8j4zPDtqGgaqHA3ESHMu5ItSEAXMrR/uQQkJoGCavNsVRW7BdWR10QnEpzyrIHY5ovrwudVNqy1d3d4pIG3VqFzaFgEAO2t4xFH/KJTokiclo8/sQe6mH95AflXejpG5CoiS5+oxK7Ns074p1N5FHbMaeru6+f2t+u3LujxewQP5iAppJ4tIb0xzEHNc4YGBsQL2WPcI9KnluE8pWv3WlU7zur2hF2i8w==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=suse.com 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)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=RXqnYEfJ7mLljaqmJdZX4G1SrM2H3l3MYlqNsjGgGEw=;
 b=CyPIM26Q7Z6BHCq606/iJsRpGGDJyraG64OZZ+stjK7foZj+KBy6nRGSOvvUUF62W2/eT7JzCyFExp93tCPNFXkI6l8ktGYlOSIHTQUVUK0TE6EOq4uRecfkSyQ99NbkYAdEhzhOk+Y3n/3Ia/oj7O3pD6/MvoD7Xx9X06GucWE=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C
From: Jiqian Chen <Jiqian.Chen@amd.com>
To: Juergen Gross <jgross@suse.com>, Stefano Stabellini
	<sstabellini@kernel.org>, Oleksandr Tyshchenko
	<oleksandr_tyshchenko@epam.com>, Boris Ostrovsky
	<boris.ostrovsky@oracle.com>, Bjorn Helgaas <bhelgaas@google.com>, "Rafael J
 . Wysocki" <rafael@kernel.org>, Len Brown <lenb@kernel.org>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>
CC: <xen-devel@lists.xenproject.org>, <linux-pci@vger.kernel.org>,
	<linux-kernel@vger.kernel.org>, <linux-acpi@vger.kernel.org>, "Stewart
 Hildebrand" <Stewart.Hildebrand@amd.com>, Huang Rui <Ray.Huang@amd.com>,
	Jiqian Chen <Jiqian.Chen@amd.com>, Huang Rui <ray.huang@amd.com>
Subject: [RFC KERNEL PATCH v4 2/3] xen/pvh: Setup gsi for passthrough device
Date: Fri, 5 Jan 2024 14:22:16 +0800
Message-ID: <20240105062217.349645-3-Jiqian.Chen@amd.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20240105062217.349645-1-Jiqian.Chen@amd.com>
References: <20240105062217.349645-1-Jiqian.Chen@amd.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-Originating-IP: [10.180.168.240]
X-ClientProxiedBy: SATLEXMB04.amd.com (10.181.40.145) To SATLEXMB04.amd.com
 (10.181.40.145)
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: DS2PEPF0000343B:EE_|DM8PR12MB5430:EE_
X-MS-Office365-Filtering-Correlation-Id: 2c29200f-2865-448f-2d8b-08dc0db6be87
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam: BCL:0;
X-Microsoft-Antispam-Message-Info:
	m7GCGwSKSpzWwXgiJPdhPrAVEEa/9pNiNOx2iHiZIiDPMfHVME0r/ACL9FPoy5bJAaQgUa3TjyucPiKWBznOSqoI67ZBeET90EeDc24T5noqjoMn+2xqZkih5n+2ojTW0FchkXN/eS3HqII54YYXMIdpOYV0b0Wft+Yna34gmeLcrYiGHw0CHzdIejn6wOalepBJPsESoXwWB49p1sQgfyQsslcDeklaWWzatqmTme2ch6oNl4cEAlEg6BZjhlB/EAb8krkNiYnXEgLMa2fcU4PLfoYH45PZ0OnmYawNdtw07tovQkAc3WSKOOhbY4MzA7zMI4F4mHAa9YACMwPCZZikip1u72SFy6p8oOC3QoLRNvCX4kLze77Jc6Zo47bG0AgCSpofLWMeJwrgSbtnmowAljdbcBy/9RyMRt8Zx/GcFIRAq0kpCEblMEKb3GvcLZuvf5/wN2YfHIrhRfRxXtCpY9kGwTnkshPd0kvxYnkFNkpYCUtGBV+XtMqTILZiEZzQovDHlucKpqJlp1a/LG1iwdFE93xtf2+mjDFYFkkHH8sJxP9s97dkvlAlaxX8jgxp1rVpqG8v9VcAS4VH6M78qshsc9IUfzxPcqskVF6UFhwE0J6gdd8EsuOJfjCs05dJgREYL1OKamL2yce+1TaFWfxkD1UyB4idhm/YK6s4JAQsbvxWphrvJ5Qlfxr+YH9ZsyROO31JLrTIDAls6p0gZJRmBeSJlndIn4EbKRJ96f1Jiz6Ui7DdehEc4C8SSKTmhATqWVii7b1pTz7prQ==
X-Forefront-Antispam-Report:
	CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230031)(4636009)(39860400002)(376002)(346002)(396003)(136003)(230922051799003)(451199024)(186009)(82310400011)(1800799012)(64100799003)(40470700004)(46966006)(36840700001)(2616005)(336012)(26005)(1076003)(426003)(7696005)(6666004)(16526019)(86362001)(83380400001)(4326008)(8676002)(8936002)(316002)(54906003)(7416002)(36756003)(2906002)(5660300002)(110136005)(478600001)(70206006)(70586007)(82740400003)(356005)(81166007)(47076005)(36860700001)(41300700001)(40460700003)(40480700001)(36900700001);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Jan 2024 06:22:51.0725
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 2c29200f-2865-448f-2d8b-08dc0db6be87
X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com]
X-MS-Exchange-CrossTenant-AuthSource:
	DS2PEPF0000343B.namprd02.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM8PR12MB5430

In PVH dom0, the gsis don't get registered, but the gsi of
a passthrough device must be configured for it to be able to be
mapped into a domU.

When assign a device to passthrough, proactively setup the gsi
of the device during that process.

Co-developed-by: Huang Rui <ray.huang@amd.com>
Signed-off-by: Jiqian Chen <Jiqian.Chen@amd.com>
---
 arch/x86/xen/enlighten_pvh.c       | 90 ++++++++++++++++++++++++++++++
 drivers/acpi/pci_irq.c             |  2 +-
 drivers/xen/xen-pciback/pci_stub.c |  8 +++
 include/linux/acpi.h               |  1 +
 include/xen/acpi.h                 |  6 ++
 5 files changed, 106 insertions(+), 1 deletion(-)

diff --git a/arch/x86/xen/enlighten_pvh.c b/arch/x86/xen/enlighten_pvh.c
index ada3868c02c2..ecadd966c684 100644
--- a/arch/x86/xen/enlighten_pvh.c
+++ b/arch/x86/xen/enlighten_pvh.c
@@ -1,6 +1,7 @@
 // SPDX-License-Identifier: GPL-2.0
 #include <linux/acpi.h>
 #include <linux/export.h>
+#include <linux/pci.h>
 
 #include <xen/hvc-console.h>
 
@@ -25,6 +26,95 @@
 bool __ro_after_init xen_pvh;
 EXPORT_SYMBOL_GPL(xen_pvh);
 
+typedef struct gsi_info {
+	int gsi;
+	int trigger;
+	int polarity;
+} gsi_info_t;
+
+struct acpi_prt_entry {
+	struct acpi_pci_id	id;
+	u8			pin;
+	acpi_handle		link;
+	u32			index;		/* GSI, or link _CRS index */
+};
+
+static int xen_pvh_get_gsi_info(struct pci_dev *dev,
+								gsi_info_t *gsi_info)
+{
+	int gsi;
+	u8 pin = 0;
+	struct acpi_prt_entry *entry;
+	int trigger = ACPI_LEVEL_SENSITIVE;
+	int polarity = acpi_irq_model == ACPI_IRQ_MODEL_GIC ?
+				      ACPI_ACTIVE_HIGH : ACPI_ACTIVE_LOW;
+
+	if (dev)
+		pin = dev->pin;
+	if (!dev || !pin || !gsi_info)
+		return -EINVAL;
+
+	entry = acpi_pci_irq_lookup(dev, pin);
+	if (entry) {
+		if (entry->link)
+			gsi = acpi_pci_link_allocate_irq(entry->link,
+							 entry->index,
+							 &trigger, &polarity,
+							 NULL);
+		else
+			gsi = entry->index;
+	} else
+		gsi = -1;
+
+	if (gsi < 0)
+		return -EINVAL;
+
+	gsi_info->gsi = gsi;
+	gsi_info->trigger = trigger;
+	gsi_info->polarity = polarity;
+
+	return 0;
+}
+
+static int xen_pvh_setup_gsi(gsi_info_t *gsi_info)
+{
+	struct physdev_setup_gsi setup_gsi;
+
+	if (!gsi_info)
+		return -EINVAL;
+
+	setup_gsi.gsi = gsi_info->gsi;
+	setup_gsi.triggering = (gsi_info->trigger == ACPI_EDGE_SENSITIVE ? 0 : 1);
+	setup_gsi.polarity = (gsi_info->polarity == ACPI_ACTIVE_HIGH ? 0 : 1);
+
+	return HYPERVISOR_physdev_op(PHYSDEVOP_setup_gsi, &setup_gsi);
+}
+
+int xen_pvh_passthrough_gsi(struct pci_dev *dev)
+{
+	int ret;
+	gsi_info_t gsi_info;
+
+	if (!dev)
+		return -EINVAL;
+
+	ret = xen_pvh_get_gsi_info(dev, &gsi_info);
+	if (ret) {
+		xen_raw_printk("Fail to get gsi info!\n");
+		return ret;
+	}
+
+	ret = xen_pvh_setup_gsi(&gsi_info);
+	if (ret == -EEXIST) {
+		xen_raw_printk("Already setup the GSI :%d\n", gsi_info.gsi);
+		ret = 0;
+	} else if (ret)
+		xen_raw_printk("Fail to setup GSI (%d)!\n", gsi_info.gsi);
+
+	return ret;
+}
+EXPORT_SYMBOL_GPL(xen_pvh_passthrough_gsi);
+
 void __init xen_pvh_init(struct boot_params *boot_params)
 {
 	u32 msr;
diff --git a/drivers/acpi/pci_irq.c b/drivers/acpi/pci_irq.c
index ff30ceca2203..630fe0a34bc6 100644
--- a/drivers/acpi/pci_irq.c
+++ b/drivers/acpi/pci_irq.c
@@ -288,7 +288,7 @@ static int acpi_reroute_boot_interrupt(struct pci_dev *dev,
 }
 #endif /* CONFIG_X86_IO_APIC */
 
-static struct acpi_prt_entry *acpi_pci_irq_lookup(struct pci_dev *dev, int pin)
+struct acpi_prt_entry *acpi_pci_irq_lookup(struct pci_dev *dev, int pin)
 {
 	struct acpi_prt_entry *entry = NULL;
 	struct pci_dev *bridge;
diff --git a/drivers/xen/xen-pciback/pci_stub.c b/drivers/xen/xen-pciback/pci_stub.c
index 46c40ec8a18e..22d4380d2b04 100644
--- a/drivers/xen/xen-pciback/pci_stub.c
+++ b/drivers/xen/xen-pciback/pci_stub.c
@@ -20,6 +20,7 @@
 #include <linux/atomic.h>
 #include <xen/events.h>
 #include <xen/pci.h>
+#include <xen/acpi.h>
 #include <xen/xen.h>
 #include <asm/xen/hypervisor.h>
 #include <xen/interface/physdev.h>
@@ -435,6 +436,13 @@ static int pcistub_init_device(struct pci_dev *dev)
 			goto config_release;
 		pci_restore_state(dev);
 	}
+
+	if (xen_initial_domain() && xen_pvh_domain()) {
+		err = xen_pvh_passthrough_gsi(dev);
+		if (err)
+			goto config_release;
+	}
+
 	/* Now disable the device (this also ensures some private device
 	 * data is setup before we export)
 	 */
diff --git a/include/linux/acpi.h b/include/linux/acpi.h
index 4db54e928b36..7ea3be981cc3 100644
--- a/include/linux/acpi.h
+++ b/include/linux/acpi.h
@@ -360,6 +360,7 @@ void acpi_unregister_gsi (u32 gsi);
 
 struct pci_dev;
 
+struct acpi_prt_entry *acpi_pci_irq_lookup(struct pci_dev *dev, int pin);
 int acpi_pci_irq_enable (struct pci_dev *dev);
 void acpi_penalize_isa_irq(int irq, int active);
 bool acpi_isa_irq_available(int irq);
diff --git a/include/xen/acpi.h b/include/xen/acpi.h
index b1e11863144d..17c4d37f1e60 100644
--- a/include/xen/acpi.h
+++ b/include/xen/acpi.h
@@ -67,10 +67,16 @@ static inline void xen_acpi_sleep_register(void)
 		acpi_suspend_lowlevel = xen_acpi_suspend_lowlevel;
 	}
 }
+int xen_pvh_passthrough_gsi(struct pci_dev *dev);
 #else
 static inline void xen_acpi_sleep_register(void)
 {
 }
+
+static inline int xen_pvh_passthrough_gsi(struct pci_dev *dev)
+{
+	return -1;
+}
 #endif
 
 #endif	/* _XEN_ACPI_H */
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Fri Jan 05 06:23:02 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 05 Jan 2024 06:23:02 +0000
Received: from list by lists.xenproject.org with outflank-mailman.661957.1031803 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLdbg-0000DO-Jr; Fri, 05 Jan 2024 06:23:00 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 661957.1031803; Fri, 05 Jan 2024 06:23:00 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLdbg-0000Bt-Fl; Fri, 05 Jan 2024 06:23:00 +0000
Received: by outflank-mailman (input) for mailman id 661957;
 Fri, 05 Jan 2024 06:22:58 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=YI+5=IP=amd.com=Jiqian.Chen@srs-se1.protection.inumbo.net>)
 id 1rLdbe-0008Eh-Md
 for xen-devel@lists.xenproject.org; Fri, 05 Jan 2024 06:22:58 +0000
Received: from NAM11-CO1-obe.outbound.protection.outlook.com
 (mail-co1nam11on20601.outbound.protection.outlook.com
 [2a01:111:f403:2416::601])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id dd9d2ec0-ab92-11ee-98ef-6d05b1d4d9a1;
 Fri, 05 Jan 2024 07:22:58 +0100 (CET)
Received: from SJ0PR03CA0089.namprd03.prod.outlook.com (2603:10b6:a03:331::34)
 by IA0PR12MB7507.namprd12.prod.outlook.com (2603:10b6:208:441::13)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7159.16; Fri, 5 Jan
 2024 06:22:53 +0000
Received: from DS2PEPF0000343B.namprd02.prod.outlook.com
 (2603:10b6:a03:331:cafe::5b) by SJ0PR03CA0089.outlook.office365.com
 (2603:10b6:a03:331::34) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7159.14 via Frontend
 Transport; Fri, 5 Jan 2024 06:22:52 +0000
Received: from SATLEXMB04.amd.com (165.204.84.17) by
 DS2PEPF0000343B.mail.protection.outlook.com (10.167.18.38) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.7159.9 via Frontend Transport; Fri, 5 Jan 2024 06:22:52 +0000
Received: from cjq-desktop.amd.com (10.180.168.240) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.34; Fri, 5 Jan
 2024 00:22:44 -0600
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: dd9d2ec0-ab92-11ee-98ef-6d05b1d4d9a1
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=k09RoEikwXJcESAx7pGucEnlEsmBefpWHk6rwqeY8ahnl7CvvOGAapb1RbrW9cCh+yNBR+5OvVyJrFXooAtyFXnXsqFeF/FF5l1OZhNuZnlzwQi26NNiDrWDFZea0zBmYI5CfKN6m9vqE/Z38P4oVe3TcsE7NzldjLrpctd67lYxgri2ttRgkH4PgECWxicS7ig21wSWAsE7qun1PRy2imF9HeK5mcm0Fdm34DN/bbjS0U85rvb0AX+YxfiryPbCfN2/m1DYOD+4vHcYaFoONJI88vW8gXdMEkI2U/YvXtGJ9F96Pi14oCVYq64s8Y0oS0nRZ6t/z7ZWQbaMpwWI2Q==
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=mEBEqKqA7iCm+KmSP0HqBc3BzXcAJJq0BwRgpVVeKfk=;
 b=AnSt9qZLSku8IYIySet92jIngBS0xVuCpkVc8E7ew7XHz/tTyO0kt6zhbwshR1vpUzKQPaqzGfhcL3B3egHI9XMom/9Wqvdpq7nP66LHiluUxxJX/tBTckreh30MXrgXnMNk8wALNXxTfvXO6RXXklBZfgZc9QdKQb54RB9BcMzqeBWxJT26VP+tPG62hNkECgWgQs39s9chS3m38FLSpP+fieiYzP8kq2u81v7Pf282/A6cIzdMP4J8FZme9cNr2sPBwC5Enp6GHSx5rmJErz4sHLlbtn3rFJPBcksU6dsij4V4bNgfgvaIb5Z9tD2Rcjiyo0EmiRcCP50s1L2OAg==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=suse.com 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)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=mEBEqKqA7iCm+KmSP0HqBc3BzXcAJJq0BwRgpVVeKfk=;
 b=Gi8POD9k2yEB/Dld1hZhzYUqRirs+P+aMbrUvZTrK7UGzwsmlztMgaq9iy8J0F5TNu3z1u4DXiw7wbSsHrNkawFjZgWpQFqisdcGeo/ZojrfGdr9E2XTbsWkbIJbxx4rAXZcBloV/ajXSZSAsTQ20F21w18U/2OgwJPmE2yulAs=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C
From: Jiqian Chen <Jiqian.Chen@amd.com>
To: Juergen Gross <jgross@suse.com>, Stefano Stabellini
	<sstabellini@kernel.org>, Oleksandr Tyshchenko
	<oleksandr_tyshchenko@epam.com>, Boris Ostrovsky
	<boris.ostrovsky@oracle.com>, Bjorn Helgaas <bhelgaas@google.com>, "Rafael J
 . Wysocki" <rafael@kernel.org>, Len Brown <lenb@kernel.org>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>
CC: <xen-devel@lists.xenproject.org>, <linux-pci@vger.kernel.org>,
	<linux-kernel@vger.kernel.org>, <linux-acpi@vger.kernel.org>, "Stewart
 Hildebrand" <Stewart.Hildebrand@amd.com>, Huang Rui <Ray.Huang@amd.com>,
	Jiqian Chen <Jiqian.Chen@amd.com>, Huang Rui <ray.huang@amd.com>
Subject: [RFC KERNEL PATCH v4 3/3] PCI/sysfs: Add gsi sysfs for pci_dev
Date: Fri, 5 Jan 2024 14:22:17 +0800
Message-ID: <20240105062217.349645-4-Jiqian.Chen@amd.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20240105062217.349645-1-Jiqian.Chen@amd.com>
References: <20240105062217.349645-1-Jiqian.Chen@amd.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-Originating-IP: [10.180.168.240]
X-ClientProxiedBy: SATLEXMB04.amd.com (10.181.40.145) To SATLEXMB04.amd.com
 (10.181.40.145)
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: DS2PEPF0000343B:EE_|IA0PR12MB7507:EE_
X-MS-Office365-Filtering-Correlation-Id: 7a331728-29ab-46e1-0d3b-08dc0db6bf8b
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam: BCL:0;
X-Microsoft-Antispam-Message-Info:
	1RJFOBH2EQw+BwQCZTJX02YzJm8vOWMFi4e3B/Wv6JhFbstCIk4TolRme10eQRaC89MHDZoeSE96Qh9R3fjSq6vc3uL7Xm/DFNHaXIxFh1qhk/yuEnOPE1IVxUpFZt7KxGSyQxiplr6ZWiBrA8ALsZGNSDP33d/yHEHckgaH0d/Z4JjhOTGmv65+PnsN2zs2B9dmBRwWxZJTfgXa8XVBPJGUx2+y5MKezk+jErj/hPkGJ0jyNIFhxCdz3Fa6CD/eocmGrbU5gwoYzIgpdmBnwrQkFnjmcmIhRG+3O036CrjJsHTqD7XOz1gkbo5dUsDE32IQNAa9UXEslF531UGGcz6ZZ2NS9alBSETxr34qhkaehJDKJp1D0FwRliPjGU29FqZAT4C8BNobBgavvATehSLTqT+86r4uyE0nS0lauqBOPOLmUrHKLiod3uCYNNznLHn/E8xN84Es1auHj9REMGJOXZsoQ3aA0SNVCWuE/W8vl3BDBdH6IFV3KQz6nBXp/Tw5Wr7mi4xkAYrHGzA8GntdmsU4Cnm1lKS0hfdeMJm3dGAngznjqd6vw84E2Wquly3NEodiB84ZxNpk6XmX7dAUHpdgJ11MEzsoBwkL3Ig9FT5+9kaqwi1K9VfbVl9FecQdOrdpU1dVB+9ShwUXncsDhufhixZamzl+Kk9ArGrTvBwZoQOTiMRiE51Btr+uDT9cZ7xd/bpO/2Inqk8HnT0R0kiF1LBdsEUIY3zHPQFaK/KPsz4OkxNmS8ajEtVF90mZPB7gTbDAu9E3hSmCuA==
X-Forefront-Antispam-Report:
	CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230031)(4636009)(376002)(396003)(136003)(39860400002)(346002)(230922051799003)(186009)(82310400011)(64100799003)(451199024)(1800799012)(40470700004)(36840700001)(46966006)(2616005)(336012)(426003)(16526019)(26005)(1076003)(7696005)(6666004)(86362001)(83380400001)(4326008)(316002)(54906003)(110136005)(8676002)(8936002)(7416002)(2906002)(36756003)(5660300002)(478600001)(70206006)(70586007)(82740400003)(81166007)(356005)(47076005)(36860700001)(41300700001)(40460700003)(40480700001)(36900700001);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Jan 2024 06:22:52.7600
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 7a331728-29ab-46e1-0d3b-08dc0db6bf8b
X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com]
X-MS-Exchange-CrossTenant-AuthSource:
	DS2PEPF0000343B.namprd02.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA0PR12MB7507

There is a need for some scenarios to use gsi sysfs.
For example, when xen passthrough a device to dumU, it will
use gsi to map pirq, but currently userspace can't get gsi
number.
So, add gsi sysfs for that and for other potential scenarios.

Co-developed-by: Huang Rui <ray.huang@amd.com>
Signed-off-by: Jiqian Chen <Jiqian.Chen@amd.com>
---
 drivers/acpi/pci_irq.c  |  1 +
 drivers/pci/pci-sysfs.c | 11 +++++++++++
 include/linux/pci.h     |  2 ++
 3 files changed, 14 insertions(+)

diff --git a/drivers/acpi/pci_irq.c b/drivers/acpi/pci_irq.c
index 630fe0a34bc6..739a58755df2 100644
--- a/drivers/acpi/pci_irq.c
+++ b/drivers/acpi/pci_irq.c
@@ -449,6 +449,7 @@ int acpi_pci_irq_enable(struct pci_dev *dev)
 		kfree(entry);
 		return 0;
 	}
+	dev->gsi = gsi;
 
 	rc = acpi_register_gsi(&dev->dev, gsi, triggering, polarity);
 	if (rc < 0) {
diff --git a/drivers/pci/pci-sysfs.c b/drivers/pci/pci-sysfs.c
index 2321fdfefd7d..c51df88d079e 100644
--- a/drivers/pci/pci-sysfs.c
+++ b/drivers/pci/pci-sysfs.c
@@ -71,6 +71,16 @@ static ssize_t irq_show(struct device *dev,
 }
 static DEVICE_ATTR_RO(irq);
 
+static ssize_t gsi_show(struct device *dev,
+			struct device_attribute *attr,
+			char *buf)
+{
+	struct pci_dev *pdev = to_pci_dev(dev);
+
+	return sysfs_emit(buf, "%u\n", pdev->gsi);
+}
+static DEVICE_ATTR_RO(gsi);
+
 static ssize_t broken_parity_status_show(struct device *dev,
 					 struct device_attribute *attr,
 					 char *buf)
@@ -596,6 +606,7 @@ static struct attribute *pci_dev_attrs[] = {
 	&dev_attr_revision.attr,
 	&dev_attr_class.attr,
 	&dev_attr_irq.attr,
+	&dev_attr_gsi.attr,
 	&dev_attr_local_cpus.attr,
 	&dev_attr_local_cpulist.attr,
 	&dev_attr_modalias.attr,
diff --git a/include/linux/pci.h b/include/linux/pci.h
index dea043bc1e38..0618d4a87a50 100644
--- a/include/linux/pci.h
+++ b/include/linux/pci.h
@@ -529,6 +529,8 @@ struct pci_dev {
 
 	/* These methods index pci_reset_fn_methods[] */
 	u8 reset_methods[PCI_NUM_RESET_METHODS]; /* In priority order */
+
+	unsigned int	gsi;
 };
 
 static inline struct pci_dev *pci_physfn(struct pci_dev *dev)
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Fri Jan 05 06:23:02 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 05 Jan 2024 06:23:02 +0000
Received: from list by lists.xenproject.org with outflank-mailman.661954.1031781 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLdbd-0008Ev-OJ; Fri, 05 Jan 2024 06:22:57 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 661954.1031781; Fri, 05 Jan 2024 06:22:57 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLdbd-0008Eo-Lj; Fri, 05 Jan 2024 06:22:57 +0000
Received: by outflank-mailman (input) for mailman id 661954;
 Fri, 05 Jan 2024 06:22:56 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=YI+5=IP=amd.com=Jiqian.Chen@srs-se1.protection.inumbo.net>)
 id 1rLdbc-0008Eh-FQ
 for xen-devel@lists.xenproject.org; Fri, 05 Jan 2024 06:22:56 +0000
Received: from NAM11-BN8-obe.outbound.protection.outlook.com
 (mail-bn8nam11on20601.outbound.protection.outlook.com
 [2a01:111:f400:7eae::601])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id dbdba9d5-ab92-11ee-98ef-6d05b1d4d9a1;
 Fri, 05 Jan 2024 07:22:54 +0100 (CET)
Received: from SJ0PR03CA0089.namprd03.prod.outlook.com (2603:10b6:a03:331::34)
 by DS0PR12MB6656.namprd12.prod.outlook.com (2603:10b6:8:d2::10) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7159.16; Fri, 5 Jan
 2024 06:22:50 +0000
Received: from DS2PEPF0000343B.namprd02.prod.outlook.com
 (2603:10b6:a03:331:cafe::5b) by SJ0PR03CA0089.outlook.office365.com
 (2603:10b6:a03:331::34) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7159.14 via Frontend
 Transport; Fri, 5 Jan 2024 06:22:50 +0000
Received: from SATLEXMB04.amd.com (165.204.84.17) by
 DS2PEPF0000343B.mail.protection.outlook.com (10.167.18.38) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.7159.9 via Frontend Transport; Fri, 5 Jan 2024 06:22:50 +0000
Received: from cjq-desktop.amd.com (10.180.168.240) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.34; Fri, 5 Jan
 2024 00:22:36 -0600
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: dbdba9d5-ab92-11ee-98ef-6d05b1d4d9a1
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=oEhtSa3kYHRU8uNUp+j3P/QlrwM2NSFB303BsTRtQHcvOF9PxOC6vY+Vi7lsh89CBv/KOBkL9y1bzfz5t7t8yidqxQZwXobMsYKGehpbgFC0jAbMgvOtCgaqeARucGU5VjI8sDwKo4+W8vco8/yHNFQ9Y3Npc8rDpDv1vGvwucNFUs62Tx8pLU36PUgJSVpns5UMg4PiLr3P6HcZyUqPUSbzIybVB8bkapiwF0rpRiAED74N0D4wk5+ZIW4QCeOAXjTJaXAuJJaJrJKiy+0wtbm9RrXWWR+J35dQih36KVTSnDFp05Jo7jw1N8vbd3CoxMfKuuYB7uUKE8r0eg3UmQ==
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=YkowvZMsFwNSstUDVoFne+G6SJyHwKKq3d0p+Fl+0dw=;
 b=AmMxTz9Vsw7XqvMv/w0zCSEafQmIwMoukzhwis08OVoI8FDxdDAAlsacu2hXGZ1QSQFr2MtK/1f94YEc7C8ao8bsL1eoj+zxxaQkv/b3wuULOz6IYUvkBfftIQHdeN6S+RwLbUgyx9ryl4V1SbVN/GRy52RNy8Ftbzem6fDoWi67vXafuC7DdMJHBJBY6cYDOfotBZ+bcEYnGLqkj1uRzeElt+cXvc13o0oQTpGjcfWAFdv4GnW5RD6Sauyu2uI+EnB8egeuirCDVwd8UElueHHRM4HG8cCRRZzEBj1XVgkTAGTA2J+vBGZtzkOuJXO1JueKNRk+LpoqbvYI63nSDQ==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=suse.com 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)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=YkowvZMsFwNSstUDVoFne+G6SJyHwKKq3d0p+Fl+0dw=;
 b=4/x1QNk8jX7wsB67on2UIQ4dAydgSPgmhVIqiPIk4+s1wtLvFYpb73745XHannVB5SlnKDUZBEFGEXAgtqxtmmCTzKYhppOO0L1iD595n2uDJCSrPfZsGt+EzUDku1hlOqAbwtY3MfFUh0CyvqrqCL95RtJW0S4vDi2t4PckBNM=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C
From: Jiqian Chen <Jiqian.Chen@amd.com>
To: Juergen Gross <jgross@suse.com>, Stefano Stabellini
	<sstabellini@kernel.org>, Oleksandr Tyshchenko
	<oleksandr_tyshchenko@epam.com>, Boris Ostrovsky
	<boris.ostrovsky@oracle.com>, Bjorn Helgaas <bhelgaas@google.com>, "Rafael J
 . Wysocki" <rafael@kernel.org>, Len Brown <lenb@kernel.org>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>
CC: <xen-devel@lists.xenproject.org>, <linux-pci@vger.kernel.org>,
	<linux-kernel@vger.kernel.org>, <linux-acpi@vger.kernel.org>, "Stewart
 Hildebrand" <Stewart.Hildebrand@amd.com>, Huang Rui <Ray.Huang@amd.com>,
	Jiqian Chen <Jiqian.Chen@amd.com>, Huang Rui <ray.huang@amd.com>
Subject: [RFC KERNEL PATCH v4 1/3] xen/pci: Add xen_reset_device_state function
Date: Fri, 5 Jan 2024 14:22:15 +0800
Message-ID: <20240105062217.349645-2-Jiqian.Chen@amd.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20240105062217.349645-1-Jiqian.Chen@amd.com>
References: <20240105062217.349645-1-Jiqian.Chen@amd.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-Originating-IP: [10.180.168.240]
X-ClientProxiedBy: SATLEXMB04.amd.com (10.181.40.145) To SATLEXMB04.amd.com
 (10.181.40.145)
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: DS2PEPF0000343B:EE_|DS0PR12MB6656:EE_
X-MS-Office365-Filtering-Correlation-Id: 3e9be37a-7e12-479a-9742-08dc0db6bdee
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam: BCL:0;
X-Microsoft-Antispam-Message-Info:
	cdqETgE98Fa46OVW2jnU/rfYvwb/5+QcfhHiW836Tp0+lxFdgE3dhLL46rVh7qln1xkQkQmOQeS7G1p9lL1SrXy4OFg7JdyPEzcGbxCNmRW6Cq5oNJU4ltQkTHMQssteW8z4dXs/0JJgsmoTKLb8KATfdcM71pJiLsOPgIH6lcXwfA1HbXS7yk1567H3YS5Rnw/bIOeR96+9J2gn9qhkwW0ecDPfxyNUo8Idv+wN+v5VnFwaJuk5/wmAwL/MlkQmRS5xH7LkCB+qmFGbIUOKPU2j0OODRyiuScaInHBewlsBNI08Z3eCUpOSg33JK73RG1ifGjvbo/mGspa9hZIfVB0ztD30+Bv4fzwqytJoJgGzrpN6+SYyeODLDuTEWKmj3AXN/xWht5cMBc5cIa+ved3k1DTZn9iZNyskFIBIYBqq/wCy3f3YNF0rsbAvVNY05rbBPYSTwNhTHythqH477RPsaM4YVqgmYrU9bze+U78fh8DTPQB4PaNxsT4kdjMtWpnJY9BoEQSlDYHvVXMMmWXULZDDDSrXPJoAI81CbrN8rJwssrO+YeiaJCiUAlUmjV4OQRNs9OLxI8TC5TFow1mjShKUvjJz6LWzufzexJldHoZ5WIen/AS1OVETvcBL5I7cYiqTwNWS27dMfBwKlER7OZ/kHjrgrtJ8HD5LFpy6LQ8BchLm4UZ4N5TPKPJf8cP0ExXTnb6wZTFCDG1M2Lhf48rNqMjEUXlDF0TiMX9aGywMsDIumoVTxq5AoZFID7BsOuBo7xPM52KhpaL3Sg==
X-Forefront-Antispam-Report:
	CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230031)(4636009)(136003)(376002)(39860400002)(346002)(396003)(230922051799003)(64100799003)(451199024)(1800799012)(186009)(82310400011)(36840700001)(46966006)(40470700004)(40460700003)(40480700001)(2616005)(1076003)(336012)(426003)(478600001)(7696005)(6666004)(26005)(82740400003)(86362001)(36860700001)(36756003)(81166007)(356005)(2906002)(83380400001)(5660300002)(41300700001)(7416002)(47076005)(54906003)(110136005)(70586007)(316002)(8936002)(16526019)(70206006)(8676002)(4326008)(36900700001);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Jan 2024 06:22:50.0725
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 3e9be37a-7e12-479a-9742-08dc0db6bdee
X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com]
X-MS-Exchange-CrossTenant-AuthSource:
	DS2PEPF0000343B.namprd02.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS0PR12MB6656

When device on dom0 side has been reset, the vpci on Xen side
won't get notification, so that the cached state in vpci is
all out of date with the real device state.
To solve that problem, add a new function to clear all vpci
device state when device is reset on dom0 side.

And call that function in pcistub_init_device. Because when
using "pci-assignable-add" to assign a passthrough device in
Xen, it will reset passthrough device and the vpci state will
out of date, and then device will fail to restore bar state.

Co-developed-by: Huang Rui <ray.huang@amd.com>
Signed-off-by: Jiqian Chen <Jiqian.Chen@amd.com>
---
 drivers/xen/pci.c                  | 12 ++++++++++++
 drivers/xen/xen-pciback/pci_stub.c | 18 +++++++++++++++---
 include/xen/interface/physdev.h    |  7 +++++++
 include/xen/pci.h                  |  6 ++++++
 4 files changed, 40 insertions(+), 3 deletions(-)

diff --git a/drivers/xen/pci.c b/drivers/xen/pci.c
index 72d4e3f193af..e9b30bc09139 100644
--- a/drivers/xen/pci.c
+++ b/drivers/xen/pci.c
@@ -177,6 +177,18 @@ static int xen_remove_device(struct device *dev)
 	return r;
 }
 
+int xen_reset_device_state(const struct pci_dev *dev)
+{
+	struct physdev_pci_device device = {
+		.seg = pci_domain_nr(dev->bus),
+		.bus = dev->bus->number,
+		.devfn = dev->devfn
+	};
+
+	return HYPERVISOR_physdev_op(PHYSDEVOP_pci_device_state_reset, &device);
+}
+EXPORT_SYMBOL_GPL(xen_reset_device_state);
+
 static int xen_pci_notifier(struct notifier_block *nb,
 			    unsigned long action, void *data)
 {
diff --git a/drivers/xen/xen-pciback/pci_stub.c b/drivers/xen/xen-pciback/pci_stub.c
index e34b623e4b41..46c40ec8a18e 100644
--- a/drivers/xen/xen-pciback/pci_stub.c
+++ b/drivers/xen/xen-pciback/pci_stub.c
@@ -89,6 +89,16 @@ static struct pcistub_device *pcistub_device_alloc(struct pci_dev *dev)
 	return psdev;
 }
 
+static int pcistub_reset_device_state(struct pci_dev *dev)
+{
+	__pci_reset_function_locked(dev);
+
+	if (!xen_pv_domain())
+		return xen_reset_device_state(dev);
+	else
+		return 0;
+}
+
 /* Don't call this directly as it's called by pcistub_device_put */
 static void pcistub_device_release(struct kref *kref)
 {
@@ -107,7 +117,7 @@ static void pcistub_device_release(struct kref *kref)
 	/* Call the reset function which does not take lock as this
 	 * is called from "unbind" which takes a device_lock mutex.
 	 */
-	__pci_reset_function_locked(dev);
+	pcistub_reset_device_state(dev);
 	if (dev_data &&
 	    pci_load_and_free_saved_state(dev, &dev_data->pci_saved_state))
 		dev_info(&dev->dev, "Could not reload PCI state\n");
@@ -284,7 +294,7 @@ void pcistub_put_pci_dev(struct pci_dev *dev)
 	 * (so it's ready for the next domain)
 	 */
 	device_lock_assert(&dev->dev);
-	__pci_reset_function_locked(dev);
+	pcistub_reset_device_state(dev);
 
 	dev_data = pci_get_drvdata(dev);
 	ret = pci_load_saved_state(dev, dev_data->pci_saved_state);
@@ -420,7 +430,9 @@ static int pcistub_init_device(struct pci_dev *dev)
 		dev_err(&dev->dev, "Could not store PCI conf saved state!\n");
 	else {
 		dev_dbg(&dev->dev, "resetting (FLR, D3, etc) the device\n");
-		__pci_reset_function_locked(dev);
+		err = pcistub_reset_device_state(dev);
+		if (err)
+			goto config_release;
 		pci_restore_state(dev);
 	}
 	/* Now disable the device (this also ensures some private device
diff --git a/include/xen/interface/physdev.h b/include/xen/interface/physdev.h
index a237af867873..8609770e28f5 100644
--- a/include/xen/interface/physdev.h
+++ b/include/xen/interface/physdev.h
@@ -256,6 +256,13 @@ struct physdev_pci_device_add {
  */
 #define PHYSDEVOP_prepare_msix          30
 #define PHYSDEVOP_release_msix          31
+/*
+ * Notify the hypervisor that a PCI device has been reset, so that any
+ * internally cached state is regenerated.  Should be called after any
+ * device reset performed by the hardware domain.
+ */
+#define PHYSDEVOP_pci_device_state_reset     32
+
 struct physdev_pci_device {
     /* IN */
     uint16_t seg;
diff --git a/include/xen/pci.h b/include/xen/pci.h
index b8337cf85fd1..b2e2e856efd6 100644
--- a/include/xen/pci.h
+++ b/include/xen/pci.h
@@ -4,10 +4,16 @@
 #define __XEN_PCI_H__
 
 #if defined(CONFIG_XEN_DOM0)
+int xen_reset_device_state(const struct pci_dev *dev);
 int xen_find_device_domain_owner(struct pci_dev *dev);
 int xen_register_device_domain_owner(struct pci_dev *dev, uint16_t domain);
 int xen_unregister_device_domain_owner(struct pci_dev *dev);
 #else
+static inline int xen_reset_device_state(const struct pci_dev *dev)
+{
+	return -1;
+}
+
 static inline int xen_find_device_domain_owner(struct pci_dev *dev)
 {
 	return -1;
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Fri Jan 05 06:56:39 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 05 Jan 2024 06:56:39 +0000
Received: from list by lists.xenproject.org with outflank-mailman.661972.1031822 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLe87-0006Xm-B0; Fri, 05 Jan 2024 06:56:31 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 661972.1031822; Fri, 05 Jan 2024 06:56:31 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLe87-0006Xf-8J; Fri, 05 Jan 2024 06:56:31 +0000
Received: by outflank-mailman (input) for mailman id 661972;
 Fri, 05 Jan 2024 06:56:29 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=nS5B=IP=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rLe85-0006XZ-Lt
 for xen-devel@lists.xenproject.org; Fri, 05 Jan 2024 06:56:29 +0000
Received: from mail-lj1-x231.google.com (mail-lj1-x231.google.com
 [2a00:1450:4864:20::231])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 8b72ba18-ab97-11ee-9b0f-b553b5be7939;
 Fri, 05 Jan 2024 07:56:27 +0100 (CET)
Received: by mail-lj1-x231.google.com with SMTP id
 38308e7fff4ca-2cd1232a2c7so16091261fa.0
 for <xen-devel@lists.xenproject.org>; Thu, 04 Jan 2024 22:56:26 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 dn14-20020a056638090e00b0046d17aff31bsm268399jab.157.2024.01.04.22.56.24
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 04 Jan 2024 22:56:25 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 8b72ba18-ab97-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1704437786; x=1705042586; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=MoYyhbl17X5DmfZhtUwBK45nI8GPL7Lj1OThPNob6Qc=;
        b=NiX9JFTKKjJjGQ1cN6+AiETyrUJclMkBfaOZQ6AHSDZa8mTp7y0SYfwb7qvuvj65ZM
         j8DHEnBhoF2lRF2p5lJDp/SBTao9JzejZuwNJNfg3+xZU2Hqvyyp1jDTPmx+tYc6UIN6
         TU0/tJKmYs9OudoSNRPfXLS0RLm7RzzsAUsfXHBu8DO7CXxAojfZMPDEMSXGrT6oW+Zk
         8uFCa45z7iXg+tDKRehOSejNXbiFFy3IVmdddnCRehqycy9YDBAPpgcc2WYJGv6EiaAc
         W/Hw+nrvPwLD6V34qjtlPXNcGxpzruBpgd24QJmkK6BHft0Dy52Ec66Q3dZkhOlwFthI
         /stw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704437786; x=1705042586;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=MoYyhbl17X5DmfZhtUwBK45nI8GPL7Lj1OThPNob6Qc=;
        b=wghOz0t4S10qAQa6DMhL6pHXasVa5pjSC2/wBFNGi3/EYwDGlCurOcfz+NSc/5o1B+
         Z+1iEiJQBK60Cke8/imILmr2Eypc4GLcJ3JJpNYVxdvGT4frh9KHDPSGxX85YvJ04bjG
         obaBr29c4M/Rdqn4yh+gUgDJIOLjOe0YaEQYKmf0AlV63Ficy9N5VlhG3KfqVeLz/SZp
         YtFJfcz8SECIl4wh4q0hqb6KsXIm67vpVTJB1YHl0ARHkpe1RC2dMjj+VC+JuK+Pk8s9
         j77YPAmPiObZAHCEHRI5DBUGLBgd0MfYS+8Sltf8yOrtslE6nYweSMIfLQrrPshFoBhd
         SPqA==
X-Gm-Message-State: AOJu0YwkyJSUZHVIfxh4vsdM+Y/x2hiMOs3vxVjJR/AU+Y6Z+hTdJsKh
	qPOvqa80uqlgxG1WdtYyq19pqjzHyqdo
X-Google-Smtp-Source: AGHT+IHtwM4QvlqPq3n973MigLexWEmYlnPqD2Q6asl36qjLd6vePFmDu5S4ksb+N8OTRB6SFRdM4Q==
X-Received: by 2002:a2e:a583:0:b0:2cd:16fe:da17 with SMTP id m3-20020a2ea583000000b002cd16feda17mr1082702ljp.71.1704437785869;
        Thu, 04 Jan 2024 22:56:25 -0800 (PST)
Message-ID: <6406b9d4-b5e2-41eb-9cce-93a27086fb8a@suse.com>
Date: Fri, 5 Jan 2024 07:56:22 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] xen: Use -Wuninitialized and -Winit-self
Content-Language: en-US
To: Roberto Bagnara <roberto.bagnara@bugseng.com>
Cc: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Wei Liu <wl@xen.org>, Xen-devel <xen-devel@lists.xenproject.org>,
 "consulting@bugseng.com" <consulting@bugseng.com>,
 Stefano Stabellini <sstabellini@kernel.org>,
 Andrew Cooper <andrew.cooper3@citrix.com>
References: <20231228193907.3052681-1-andrew.cooper3@citrix.com>
 <1248487f-4852-41f5-9ffd-d4d12897a622@suse.com>
 <7d35a648-a69b-4dfb-bf4f-d30272df5e9b@citrix.com>
 <d1d43877-912c-4f83-aa9b-bc28be418a0c@bugseng.com>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <d1d43877-912c-4f83-aa9b-bc28be418a0c@bugseng.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 04.01.2024 21:43, Roberto Bagnara wrote:
> On 2024-01-04 15:33, Andrew Cooper wrote:
>> On 04/01/2024 1:41 pm, Jan Beulich wrote:
>>> On 28.12.2023 20:39, Andrew Cooper wrote:
>>>> The use of uninitialised data is undefined behaviour.  At -O2 with trivial
>>>> examples, both Clang and GCC delete the variable, and in the case of a
>>>> function return, the caller gets whatever was stale in %rax prior to the call.
>>>>
>>>> Clang includes -Wuninitialized within -Wall, but GCC only includes it in
>>>> -Wextra, which is not used by Xen at this time.
>>>>
>>>> Furthermore, the specific pattern of assigning a variable to itself in its
>>>> declaration is only diagnosed by GCC with -Winit-self.  Clang does diagnoise
>>>> simple forms of this pattern with a plain -Wuninitialized, but it fails to
>>>> diagnose the instances in Xen that GCC manages to find.
>>>>
>>>> GCC, with -Wuninitialized and -Winit-self notices:
>>>>
>>>>    arch/x86/time.c: In function ‘read_pt_and_tsc’:
>>>>    arch/x86/time.c:297:14: error: ‘best’ is used uninitialized in this function [-Werror=uninitialized]
>>>>      297 |     uint32_t best = best;
>>>>          |              ^~~~
>>>>    arch/x86/time.c: In function ‘read_pt_and_tmcct’:
>>>>    arch/x86/time.c:1022:14: error: ‘best’ is used uninitialized in this function [-Werror=uninitialized]
>>>>     1022 |     uint64_t best = best;
>>>>          |              ^~~~
>>>>
>>>> and both have logic paths where best can be returned while uninitalised.
>>> I disagree. In both cases the variables are reliably set during the first
>>> loop iteration.
>>
>> I suggest you pay attention to the precision of the integers.
>>
>> It is hard (likely prohibitively hard) to avoid entering the if(), but
>> it is not impossible.
>>
>> The compiler really has emitted logic paths where stack rubble is returned.
>>
>>> Furthermore this initialize-to-self is a well known pattern to suppress the
>>> -Wuninitialized induced warnings, originally used by Linux'es
>>> uninitialized_var().
>>
>> I'm glad you cited this, because it proves my point.
>>
>> Notice how it was purged from Linux slowly over the course of 8 years
>> because it had been shown to create real bugs, by hiding real uses of
>> uninitialised variables.
> 
> There is a worse problem for initialize-to-self: it is undefined behavior
> per se.  If this is done to suppress a warning, then what happens is
> paradoxical: in order to suppress a warning about a potential undefined
> behavior (the variable might indeed be always written before being read)
> one introduces a definite undefined behavior.

I don't think so - aiui this is another of the many gcc extensions to the
language (no code is generated for this type of initialization, iirc).

Jan


From xen-devel-bounces@lists.xenproject.org Fri Jan 05 07:01:01 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 05 Jan 2024 07:01:01 +0000
Received: from list by lists.xenproject.org with outflank-mailman.661977.1031831 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLeCS-0000Aj-13; Fri, 05 Jan 2024 07:01:00 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 661977.1031831; Fri, 05 Jan 2024 07:00:59 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLeCR-0000Ac-U7; Fri, 05 Jan 2024 07:00:59 +0000
Received: by outflank-mailman (input) for mailman id 661977;
 Fri, 05 Jan 2024 07:00:59 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=nS5B=IP=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rLeCR-0000AW-D4
 for xen-devel@lists.xenproject.org; Fri, 05 Jan 2024 07:00:59 +0000
Received: from mail-ed1-x52d.google.com (mail-ed1-x52d.google.com
 [2a00:1450:4864:20::52d])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 2cfc3099-ab98-11ee-9b0f-b553b5be7939;
 Fri, 05 Jan 2024 08:00:57 +0100 (CET)
Received: by mail-ed1-x52d.google.com with SMTP id
 4fb4d7f45d1cf-552d39ac3ccso525751a12.0
 for <xen-devel@lists.xenproject.org>; Thu, 04 Jan 2024 23:00:57 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 cl5-20020a0566383d0500b0046de4c01195sm267327jab.179.2024.01.04.23.00.55
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 04 Jan 2024 23:00:56 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 2cfc3099-ab98-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1704438057; x=1705042857; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:references:cc:to
         :from:content-language:subject:user-agent:mime-version:date
         :message-id:from:to:cc:subject:date:message-id:reply-to;
        bh=gVWhwcB9ghzenISWXKk5PUJ6rB1ZcqGlp/oVxWG+AP0=;
        b=bkjWhHSL/swl8aWsD/+L3NgFjCes6nezrPSdcVLWojtel9EHAax+RL3sLItORVjfD+
         mvUSu1D+65F1oZ/A142wOjWHJWDsLuoutj/hVgI+7H7NrDw+SRuCc1kyHqALvA5xypOo
         zQVz6CsTIxVFUrp47SUvjyMAG4n7aqlSxu3wCICLgFt/CB4lOpL2w5b1dvS+HatDHUX7
         HVz7JDiFn2kCJkvQj6R8USXbGGaSFvsxVyQi0VjNJPj0jDzsfr3TRGhdP4wRlIBi1w3z
         dHY5c2PMfQiW9zLNnHtPxw1bnRXp0JfwLtQ1U3HvMcgPzg+J8rdYoRYJS7o5IV8jNqJk
         IZqQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704438057; x=1705042857;
        h=content-transfer-encoding:in-reply-to:autocrypt:references:cc:to
         :from:content-language:subject:user-agent:mime-version:date
         :message-id:x-gm-message-state:from:to:cc:subject:date:message-id
         :reply-to;
        bh=gVWhwcB9ghzenISWXKk5PUJ6rB1ZcqGlp/oVxWG+AP0=;
        b=cv5TW5B/hKyreN0QiVe4YqVBKutx8mvr+8zTNsRHOjZde/HkQQ/HhUn4gsg3Qjgcym
         7tLRByzTrme58rHvfzyoKXPp6ya7PG++5iwRgcFlUOffRCv+hSpf1j+EXVYkKHnmPwuv
         M/QX9QxEh1JGGk02Yj3DQJjwR0bFyJvW7x4i2xi8T22r51PLJKCXLc1io7U+n8JjR0Qn
         mfgFYRXxvXzjyinWAxZslYaqPwIpKNwWcWQ+u0hFAiCyY/t5th9S4AdVsEVmDHEzCVOa
         biNinK2aP9QIZrDVtoYZOYe4Tdllgwci/7IMehBsabW5dTyii5hHesE74YZuUZ7oyE28
         Rv/Q==
X-Gm-Message-State: AOJu0YxaI/q6ISjKQ08iBFJV7f8VLW+K8rcW5hv0RsffyiQDjSX2U0wP
	oZnARQTOpSsQqgeX52lq3nSvyDcGy+Z4
X-Google-Smtp-Source: AGHT+IEe3d0kmNK9utXaa0cQegYBOGJ9vig+BW047X7Cxik1DIZYqBe1hQXJ4vvzRWPrb+npH4FDMw==
X-Received: by 2002:a17:907:b9cc:b0:a28:bc4f:16ff with SMTP id xa12-20020a170907b9cc00b00a28bc4f16ffmr1627600ejc.28.1704438056964;
        Thu, 04 Jan 2024 23:00:56 -0800 (PST)
Message-ID: <4835dfad-cf7e-42a9-825d-f436eb84e0d6@suse.com>
Date: Fri, 5 Jan 2024 08:00:53 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] xen: Use -Wuninitialized and -Winit-self
Content-Language: en-US
From: Jan Beulich <jbeulich@suse.com>
To: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Wei Liu <wl@xen.org>, Xen-devel <xen-devel@lists.xenproject.org>,
 Roberto Bagnara <roberto.bagnara@bugseng.com>,
 "consulting@bugseng.com" <consulting@bugseng.com>,
 Stefano Stabellini <sstabellini@kernel.org>
References: <20231228193907.3052681-1-andrew.cooper3@citrix.com>
 <1248487f-4852-41f5-9ffd-d4d12897a622@suse.com>
 <7d35a648-a69b-4dfb-bf4f-d30272df5e9b@citrix.com>
 <5fd69614-a236-4a5b-8ec1-8cfea6d28d32@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <5fd69614-a236-4a5b-8ec1-8cfea6d28d32@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 04.01.2024 16:33, Jan Beulich wrote:
> On 04.01.2024 15:33, Andrew Cooper wrote:
>> On 04/01/2024 1:41 pm, Jan Beulich wrote:
>>> Furthermore this initialize-to-self is a well known pattern to suppress the
>>> -Wuninitialized induced warnings, originally used by Linux'es
>>> uninitialized_var().
>>
>> I'm glad you cited this, because it proves my point.
>>
>> Notice how it was purged from Linux slowly over the course of 8 years
>> because it had been shown to create real bugs, by hiding real uses of
>> uninitialised variables.
> 
> I'm fully aware of this. The construct was used wrongly in too many cases.
> Still I recall times where I was actively asked to use the construct.

And, btw: The construct was (meant to be) used in particular for suppressing
false-positive -Wuninitialized warnings on, in particular, older gcc. Which
means that by enabling this option we may also subsequently need to deal with
fallout. I'm not convinced we want to uniformly do so by adding "normal"
initializers wherever (not really) needed.

Jan


From xen-devel-bounces@lists.xenproject.org Fri Jan 05 07:10:06 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 05 Jan 2024 07:10:06 +0000
Received: from list by lists.xenproject.org with outflank-mailman.661981.1031842 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLeL8-00010B-Tz; Fri, 05 Jan 2024 07:09:58 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 661981.1031842; Fri, 05 Jan 2024 07:09:58 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLeL8-000104-RH; Fri, 05 Jan 2024 07:09:58 +0000
Received: by outflank-mailman (input) for mailman id 661981;
 Fri, 05 Jan 2024 07:09:57 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=YI+5=IP=amd.com=Jiqian.Chen@srs-se1.protection.inumbo.net>)
 id 1rLeL7-0000zs-H5
 for xen-devel@lists.xenproject.org; Fri, 05 Jan 2024 07:09:57 +0000
Received: from NAM11-DM6-obe.outbound.protection.outlook.com
 (mail-dm6nam11on20630.outbound.protection.outlook.com
 [2a01:111:f400:7eaa::630])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 6dd838f0-ab99-11ee-98ef-6d05b1d4d9a1;
 Fri, 05 Jan 2024 08:09:55 +0100 (CET)
Received: from PH7PR17CA0030.namprd17.prod.outlook.com (2603:10b6:510:323::25)
 by SA1PR12MB6996.namprd12.prod.outlook.com (2603:10b6:806:24f::18)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7159.16; Fri, 5 Jan
 2024 07:09:49 +0000
Received: from SA2PEPF000015CA.namprd03.prod.outlook.com
 (2603:10b6:510:323:cafe::dd) by PH7PR17CA0030.outlook.office365.com
 (2603:10b6:510:323::25) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7159.16 via Frontend
 Transport; Fri, 5 Jan 2024 07:09:49 +0000
Received: from SATLEXMB04.amd.com (165.204.84.17) by
 SA2PEPF000015CA.mail.protection.outlook.com (10.167.241.200) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.7159.9 via Frontend Transport; Fri, 5 Jan 2024 07:09:48 +0000
Received: from cjq-desktop.amd.com (10.180.168.240) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.34; Fri, 5 Jan
 2024 01:09:43 -0600
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 6dd838f0-ab99-11ee-98ef-6d05b1d4d9a1
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=f0iEb1x4ldfMMxtR2mgjY2jz+/Pi8NNpStXYYxUPJpGtX/lI2sdkrlKNJmS3YpI62Pdi6ZBIdZgfyPUtB3qdCUVADrtK+0Dqf+n4ozO8UGsUUguhQhdunG18yXcwPX0KnzRISWJ5enqWQrCZM4pIO7A6xIj2fJkyQzK5Ebrkgg92yjSeWqqPNcovT+Ibd5koisQeezZdnnbh/IwWSOfGbTpOL3UIqqiuM3RvI518wz2cGIOOPpgWJg6sIoJt0qSFdhoGpclKN4fXfXTdbOBBKisWvREL3T97fDaEwTfdSJ8DULp3RESsQCrw1W9LwIw8qw4Bp9f67L3DGhYM9oFrHA==
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=U2J87t3smH/+PmMBxkixHyu6GZJYqDWtA3ECUIAzmcM=;
 b=gbCdnQZJJbxtUzXfv5LmkodRj6d1Y/JhT83/1LVcxYIB/E79eezj1xmzZ9hBMQZPyJTo+dU05cEW+VPTTHeyIwoNEFuiF1Ym7fzg97w6wilRt+LuRyTgK5RzhcxQFIqdGaurIWt9fR3/fpK9WbsJUYopd0UKzXh7V2/8w5xAiDcCvV8oO+kN0iSmO+e0FMPjmOHwgNEgT2qUX9vPGBANhGcTAhsp1aeoP2WBPU1G3dHtBeqSSplPrSZEqILKhpt2kfT66LhI34vwASdSG75gC38XHq+NxxeV6PJ17UgbJqZ7VOswgz741LEqb1/8npmM41otMpnZJBcjwcH9f7lY4w==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=lists.xenproject.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)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=U2J87t3smH/+PmMBxkixHyu6GZJYqDWtA3ECUIAzmcM=;
 b=kPMqy7Ev23UulccbYQhsi4fYDrOvenrLZLhme7SELsSVS7TMtMdENpKwJcBNuqIob5LC5I84EHqfBsxe+aAbv5a7Pf8flD01NOoeIthnhcZZV1UsqtxPIDFqF3hHA+TBQ3gFe1RUFbrdm0slPa18S9WA/bbeupCoO1AxBKfiAhs=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C
From: Jiqian Chen <Jiqian.Chen@amd.com>
To: <xen-devel@lists.xenproject.org>
CC: Jan Beulich <jbeulich@suse.com>, Andrew Cooper
	<andrew.cooper3@citrix.com>, =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?=
	<roger.pau@citrix.com>, Wei Liu <wl@xen.org>, George Dunlap
	<george.dunlap@citrix.com>, Julien Grall <julien@xen.org>, Stefano Stabellini
	<sstabellini@kernel.org>, Anthony PERARD <anthony.perard@citrix.com>,
	"Juergen Gross" <jgross@suse.com>, Stewart Hildebrand
	<Stewart.Hildebrand@amd.com>, Huang Rui <Ray.Huang@amd.com>, Jiqian Chen
	<Jiqian.Chen@amd.com>, Huang Rui <ray.huang@amd.com>
Subject: [RFC XEN PATCH v4 1/5] xen/vpci: Clear all vpci status of device
Date: Fri, 5 Jan 2024 15:09:16 +0800
Message-ID: <20240105070920.350113-2-Jiqian.Chen@amd.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20240105070920.350113-1-Jiqian.Chen@amd.com>
References: <20240105070920.350113-1-Jiqian.Chen@amd.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-Originating-IP: [10.180.168.240]
X-ClientProxiedBy: SATLEXMB04.amd.com (10.181.40.145) To SATLEXMB04.amd.com
 (10.181.40.145)
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: SA2PEPF000015CA:EE_|SA1PR12MB6996:EE_
X-MS-Office365-Filtering-Correlation-Id: 52780fa8-e3d5-457d-c054-08dc0dbd4ded
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam: BCL:0;
X-Microsoft-Antispam-Message-Info:
	+uhmnsT5KZfNHTl4eT286/zcPLQ/AuUgISn900gKbopJzdEOOXb6TsGsUi0ptxWeJy/BU7b5qY9Cr1orgqKQP5Q2J6t5pbcb0dN+teOrwfZiHo2HZsUPgQeWgLFcDMUW+3SIeWmli58wUooJ81vq9Zne1YheNoOHK1rGb907v2H2n5EQrY9DGy3cGudynyN1d/zWYZJV/LJP8bTXu4XWbh5iaLNyDA16WYecpqNAvZz53OX+HNvyE7QXzJc47MW/azM/VVSbhSV2kE8pCbQ4u34DAEC2N4EFPYAs47MHzVBJmPTLu7NtloRK113nK2O7PfRp79pQao6tFBlx7WzCEd+WOA/u9JP5y1MaNz+l7aPvgXQuxmjD4ZkKV8FN2ZDZHMDw3JHsFlinafgHw9do6USxQmsid1C9KTqU1rWNPAI7DfreG0UYyC9BeNIGM3aP1AF7I+4RiDLXK13Dfj19wOIaK2EbFjzXlr++3lhy+7D2tjG90+Gk4+nxo+5i/8vwntXB7804bk9bMmYBUwlgY5DS54wZ1ovOwUIpkDvJcDhbIVSId49EbX34JeHsgGUzyl1Lbs/Jp0LR+V3Jap+I5v3vei+9iA8CPuj4QhBfvPvZ8o/USFTFIOOYt5ZaysB7vjaZJ/Mq5d2yjprOTVoeBUoEtm02GfCvz0w8DeMawpAB3q8QitIbeQqtMo5yLQeXUMWjjYkV2NpvRkVsUCQs2uBX0dlS7fwktzrmSDCaVFOB4kEiPbjKCmKFudtCbTCLq++9FVAtS7hkdT4I7dHwJg==
X-Forefront-Antispam-Report:
	CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230031)(4636009)(136003)(376002)(346002)(39860400002)(396003)(230922051799003)(82310400011)(186009)(64100799003)(1800799012)(451199024)(36840700001)(46966006)(40470700004)(40480700001)(40460700003)(2906002)(478600001)(5660300002)(7416002)(6666004)(81166007)(356005)(4326008)(41300700001)(316002)(54906003)(70586007)(6916009)(36756003)(70206006)(7696005)(8676002)(8936002)(86362001)(2616005)(426003)(336012)(26005)(1076003)(83380400001)(82740400003)(16526019)(47076005)(36860700001)(36900700001);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Jan 2024 07:09:48.6393
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 52780fa8-e3d5-457d-c054-08dc0dbd4ded
X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com]
X-MS-Exchange-CrossTenant-AuthSource:
	SA2PEPF000015CA.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA1PR12MB6996

When a device has been reset on dom0 side, the vpci on Xen
side won't get notification, so the cached state in vpci is
all out of date compare with the real device state.
To solve that problem, add a new hypercall to clear all vpci
device state. When the state of device is reset on dom0 side,
dom0 can call this hypercall to notify vpci.

Co-developed-by: Huang Rui <ray.huang@amd.com>
Signed-off-by: Jiqian Chen <Jiqian.Chen@amd.com>
---
 xen/arch/x86/hvm/hypercall.c |  1 +
 xen/drivers/pci/physdev.c    | 34 ++++++++++++++++++++++++++++++++++
 xen/drivers/vpci/vpci.c      |  9 +++++++++
 xen/include/public/physdev.h |  7 +++++++
 xen/include/xen/vpci.h       |  6 ++++++
 5 files changed, 57 insertions(+)

diff --git a/xen/arch/x86/hvm/hypercall.c b/xen/arch/x86/hvm/hypercall.c
index eeb73e1aa5d0..6ad5b4d5f11f 100644
--- a/xen/arch/x86/hvm/hypercall.c
+++ b/xen/arch/x86/hvm/hypercall.c
@@ -84,6 +84,7 @@ long hvm_physdev_op(int cmd, XEN_GUEST_HANDLE_PARAM(void) arg)
     case PHYSDEVOP_pci_mmcfg_reserved:
     case PHYSDEVOP_pci_device_add:
     case PHYSDEVOP_pci_device_remove:
+    case PHYSDEVOP_pci_device_state_reset:
     case PHYSDEVOP_dbgp_op:
         if ( !is_hardware_domain(currd) )
             return -ENOSYS;
diff --git a/xen/drivers/pci/physdev.c b/xen/drivers/pci/physdev.c
index 42db3e6d133c..552ccbf747cb 100644
--- a/xen/drivers/pci/physdev.c
+++ b/xen/drivers/pci/physdev.c
@@ -2,6 +2,7 @@
 #include <xen/guest_access.h>
 #include <xen/hypercall.h>
 #include <xen/init.h>
+#include <xen/vpci.h>
 
 #ifndef COMPAT
 typedef long ret_t;
@@ -67,6 +68,39 @@ ret_t pci_physdev_op(int cmd, XEN_GUEST_HANDLE_PARAM(void) arg)
         break;
     }
 
+    case PHYSDEVOP_pci_device_state_reset: {
+        struct physdev_pci_device dev;
+        struct pci_dev *pdev;
+        pci_sbdf_t sbdf;
+
+        if ( !is_pci_passthrough_enabled() )
+            return -EOPNOTSUPP;
+
+        ret = -EFAULT;
+        if ( copy_from_guest(&dev, arg, 1) != 0 )
+            break;
+        sbdf = PCI_SBDF(dev.seg, dev.bus, dev.devfn);
+
+        ret = xsm_resource_setup_pci(XSM_PRIV, sbdf.sbdf);
+        if ( ret )
+            break;
+
+        pcidevs_lock();
+        pdev = pci_get_pdev(NULL, sbdf);
+        if ( !pdev )
+        {
+            pcidevs_unlock();
+            ret = -ENODEV;
+            break;
+        }
+
+        ret = vpci_reset_device_state(pdev);
+        pcidevs_unlock();
+        if ( ret )
+            printk(XENLOG_ERR "%pp: failed to reset PCI device state\n", &sbdf);
+        break;
+    }
+
     default:
         ret = -ENOSYS;
         break;
diff --git a/xen/drivers/vpci/vpci.c b/xen/drivers/vpci/vpci.c
index 72ef277c4f8e..3c64cb10ccbb 100644
--- a/xen/drivers/vpci/vpci.c
+++ b/xen/drivers/vpci/vpci.c
@@ -107,6 +107,15 @@ int vpci_add_handlers(struct pci_dev *pdev)
 
     return rc;
 }
+
+int vpci_reset_device_state(struct pci_dev *pdev)
+{
+    ASSERT(pcidevs_locked());
+
+    vpci_remove_device(pdev);
+    return vpci_add_handlers(pdev);
+}
+
 #endif /* __XEN__ */
 
 static int vpci_register_cmp(const struct vpci_register *r1,
diff --git a/xen/include/public/physdev.h b/xen/include/public/physdev.h
index f0c0d4727c0b..f5bab1f29779 100644
--- a/xen/include/public/physdev.h
+++ b/xen/include/public/physdev.h
@@ -296,6 +296,13 @@ DEFINE_XEN_GUEST_HANDLE(physdev_pci_device_add_t);
  */
 #define PHYSDEVOP_prepare_msix          30
 #define PHYSDEVOP_release_msix          31
+/*
+ * Notify the hypervisor that a PCI device has been reset, so that any
+ * internally cached state is regenerated.  Should be called after any
+ * device reset performed by the hardware domain.
+ */
+#define PHYSDEVOP_pci_device_state_reset     32
+
 struct physdev_pci_device {
     /* IN */
     uint16_t seg;
diff --git a/xen/include/xen/vpci.h b/xen/include/xen/vpci.h
index d20c301a3db3..6ec83ce9ae13 100644
--- a/xen/include/xen/vpci.h
+++ b/xen/include/xen/vpci.h
@@ -30,6 +30,7 @@ int __must_check vpci_add_handlers(struct pci_dev *pdev);
 
 /* Remove all handlers and free vpci related structures. */
 void vpci_remove_device(struct pci_dev *pdev);
+int __must_check vpci_reset_device_state(struct pci_dev *pdev);
 
 /* Add/remove a register handler. */
 int __must_check vpci_add_register_mask(struct vpci *vpci,
@@ -262,6 +263,11 @@ static inline int vpci_add_handlers(struct pci_dev *pdev)
 
 static inline void vpci_remove_device(struct pci_dev *pdev) { }
 
+static inline int __must_check vpci_reset_device_state(struct pci_dev *pdev)
+{
+    return 0;
+}
+
 static inline void vpci_dump_msi(void) { }
 
 static inline uint32_t vpci_read(pci_sbdf_t sbdf, unsigned int reg,
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Fri Jan 05 07:10:06 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 05 Jan 2024 07:10:06 +0000
Received: from list by lists.xenproject.org with outflank-mailman.661984.1031867 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLeLD-0001zB-VA; Fri, 05 Jan 2024 07:10:03 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 661984.1031867; Fri, 05 Jan 2024 07:10:03 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLeLD-0001yP-Ov; Fri, 05 Jan 2024 07:10:03 +0000
Received: by outflank-mailman (input) for mailman id 661984;
 Fri, 05 Jan 2024 07:10:01 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=YI+5=IP=amd.com=Jiqian.Chen@srs-se1.protection.inumbo.net>)
 id 1rLeLB-0000zx-ND
 for xen-devel@lists.xenproject.org; Fri, 05 Jan 2024 07:10:01 +0000
Received: from NAM12-BN8-obe.outbound.protection.outlook.com
 (mail-bn8nam12on2061f.outbound.protection.outlook.com
 [2a01:111:f400:fe5b::61f])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 6fe59fe5-ab99-11ee-9b0f-b553b5be7939;
 Fri, 05 Jan 2024 08:09:59 +0100 (CET)
Received: from PA7P264CA0365.FRAP264.PROD.OUTLOOK.COM (2603:10a6:102:37c::18)
 by MN0PR12MB6272.namprd12.prod.outlook.com (2603:10b6:208:3c0::22)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7159.13; Fri, 5 Jan
 2024 07:09:56 +0000
Received: from SA2PEPF000015C9.namprd03.prod.outlook.com
 (2603:10a6:102:37c:cafe::d5) by PA7P264CA0365.outlook.office365.com
 (2603:10a6:102:37c::18) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7159.16 via Frontend
 Transport; Fri, 5 Jan 2024 07:09:55 +0000
Received: from SATLEXMB04.amd.com (165.204.84.17) by
 SA2PEPF000015C9.mail.protection.outlook.com (10.167.241.199) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.7159.9 via Frontend Transport; Fri, 5 Jan 2024 07:09:54 +0000
Received: from cjq-desktop.amd.com (10.180.168.240) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.34; Fri, 5 Jan
 2024 01:09:50 -0600
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 6fe59fe5-ab99-11ee-9b0f-b553b5be7939
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=cWNNWv8hN34QhIJMkKPtzV0FPc7MvzmLSMCmy9gPv+Nxjj/xFJKoVIkdm1HOp+TQpHp1srsmu7wUZPQK0vgbAG/hjEnjt8xnWjyPe0xema9kAtjRyjtOtCZqZXNn4Ro076uZnlJMZxUVZ5mzl+NDNKb0YEKpwOsONjjc60fEPrh/K79hvyUcLZZS1Ud813WuHdqy+sCpSrriXhwi49l4IxfHDc21DeseuraMYJwbMUXjWw3bNmqjUXam7mxNGZHYa//QFri4nnnHs2SK1bvrL4lhJr3LLMZ90DywXbtncgvPfju40mcS+ZzuCqEE1b7dv9qlG06bCPJLu+ZA92Ul+Q==
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=OmRlmS0ceKu4lnk3o9j1hrAbxc9dIx9eF+B0pjAKXWo=;
 b=VYnTDX+t8pHDViXX3/gxOpVYMMaCULWa8vfADn3jhZ+jnihCg9xasSU/ftjq8B8pYnJKt+DYfPQn632f+gpx4hWx5NK0hqJ/oR59rDkJbQMXSkwqT715KHMY67WH37gTW3H0VcVgvA6eJsym+vMqtYDYm0f30v5iK9ALwE0ULokdieLPHvYqs3+7XJSTBUIQTDRSZYyiCd9s2oTibnDZsN/73RQ1KFxroNb1qPqGtpYkd0DviGVTvqAcSSEeT97ILRVJcemYSFnVj+7ztXwjIEQtRwUpUlia7ZkiQsZYdxfGeyeQ5oO3dqO4gilGtgIXapHyFGe9k9SmqfpTgyUk/w==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=lists.xenproject.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)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=OmRlmS0ceKu4lnk3o9j1hrAbxc9dIx9eF+B0pjAKXWo=;
 b=V+4voI1EvakpvS8FjJwV/9Q7Y7svzjNG15EpjTFDpuSCsJcKyQLjcWg++yKPIDb2hIn0hRd15K1s/cGdrdKaOvLxuRtTBLNWmoYK9CZ79WXpKS8V7GUOChBWCMruuXIKrAJcnJfhnujS4JJETQJgUo5pwVbwsbfx3OxCjBUMZrE=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C
From: Jiqian Chen <Jiqian.Chen@amd.com>
To: <xen-devel@lists.xenproject.org>
CC: Jan Beulich <jbeulich@suse.com>, Andrew Cooper
	<andrew.cooper3@citrix.com>, =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?=
	<roger.pau@citrix.com>, Wei Liu <wl@xen.org>, George Dunlap
	<george.dunlap@citrix.com>, Julien Grall <julien@xen.org>, Stefano Stabellini
	<sstabellini@kernel.org>, Anthony PERARD <anthony.perard@citrix.com>,
	"Juergen Gross" <jgross@suse.com>, Stewart Hildebrand
	<Stewart.Hildebrand@amd.com>, Huang Rui <Ray.Huang@amd.com>, Jiqian Chen
	<Jiqian.Chen@amd.com>, Huang Rui <ray.huang@amd.com>
Subject: [RFC XEN PATCH v4 3/5] x86/pvh: Add PHYSDEVOP_setup_gsi for PVH dom0
Date: Fri, 5 Jan 2024 15:09:18 +0800
Message-ID: <20240105070920.350113-4-Jiqian.Chen@amd.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20240105070920.350113-1-Jiqian.Chen@amd.com>
References: <20240105070920.350113-1-Jiqian.Chen@amd.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-Originating-IP: [10.180.168.240]
X-ClientProxiedBy: SATLEXMB04.amd.com (10.181.40.145) To SATLEXMB04.amd.com
 (10.181.40.145)
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: SA2PEPF000015C9:EE_|MN0PR12MB6272:EE_
X-MS-Office365-Filtering-Correlation-Id: 11e9be3b-8632-454d-3bc8-08dc0dbd519f
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam: BCL:0;
X-Microsoft-Antispam-Message-Info:
	kRj9lZv7kay1ZNy7vv1QeyUVVO66pwZagvLjbuXKh8uIfXj4ZKGCBRRCoq+ndZ/lm0KQu6gZbV4/X8vP1z/JOK1lh7oXES4OzVjYQM8qifFqC0mT0cuHlSerf4UAV9OCs46lpiYcpJP7GnkwoferMD+h28y9vj3fIk477nRzCRayOg+GL3upJvu3bfVTdVbX1HWX4lG7+ucP6+mXvmlBaG8sSbVUBRSlAhHpAQoMkO3ArmC7PsObGz/YfUV9YRiZpWe1wgxj35ojOfIfmeMgREoML40yT9zVfR8NWanDJmmXA54LTXcbiyu9435DgEdFl4l3/1OZQ4GX0VgDZtIp9PiYi9EtXXSqt6UzWAJnEzV9aybZr0V2BXONkV0TkQSn27KT1EMt5Cy/d740dym7FWDsdEd17g/p+rR7Ub6mF4mnqUf4N3g0XajQN1OjcmObmEFch+qbK9u8Rrr5rhRqShg8XEstFoHOMnZWYKRKFso5VE0O6iL3ZCWF3imLuBEqoso5HpEb34u1oewy9z14ROBTyU8vtqQiQxBsN4IbBmnM+Ypq3Nc9XkNnFDHkXI7u/VRp3+FRRYzC3SdRoaxqeY9F3rRUBth9vtpVspCCAnmDax9mWUH8JdfHgb8nH7iO42GuHPjGHls7AR9p3Dql/N2TMYPklsGEwnJZQ3WKqDPz6oRL9oveQ/PKB//DU1vSpq3e7kuireGyVuS/X+Ceke26bTGdYyjRG4Lr76/GkSSVFwPutW2oiE5CWqQAOZPszwIUfsDcFdpK+9v0+Y6srw==
X-Forefront-Antispam-Report:
	CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230031)(4636009)(39860400002)(396003)(136003)(346002)(376002)(230922051799003)(1800799012)(64100799003)(82310400011)(186009)(451199024)(46966006)(40470700004)(36840700001)(82740400003)(478600001)(7696005)(6666004)(356005)(8936002)(36860700001)(26005)(336012)(426003)(16526019)(8676002)(1076003)(47076005)(316002)(4326008)(6916009)(81166007)(86362001)(70586007)(70206006)(54906003)(40480700001)(2906002)(40460700003)(4744005)(7416002)(5660300002)(36756003)(41300700001)(2616005)(36900700001);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Jan 2024 07:09:54.7419
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 11e9be3b-8632-454d-3bc8-08dc0dbd519f
X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com]
X-MS-Exchange-CrossTenant-AuthSource:
	SA2PEPF000015C9.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN0PR12MB6272

On PVH dom0, the gsis don't get registered, but
the gsi of a passthrough device must be configured for it to
be able to be mapped into a hvm domU.
On Linux kernel side, it calles PHYSDEVOP_setup_gsi for
passthrough devices to register gsi when dom0 is PVH.
So, add PHYSDEVOP_setup_gsi for above purpose.

Co-developed-by: Huang Rui <ray.huang@amd.com>
Signed-off-by: Jiqian Chen <Jiqian.Chen@amd.com>
---
 xen/arch/x86/hvm/hypercall.c | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/xen/arch/x86/hvm/hypercall.c b/xen/arch/x86/hvm/hypercall.c
index 632a68be3cc4..e27d3ca15185 100644
--- a/xen/arch/x86/hvm/hypercall.c
+++ b/xen/arch/x86/hvm/hypercall.c
@@ -97,6 +97,12 @@ long hvm_physdev_op(int cmd, XEN_GUEST_HANDLE_PARAM(void) arg)
         break;
     }
 
+    case PHYSDEVOP_setup_gsi:
+        if ( is_hardware_domain(currd) && !has_pirq(currd) )
+            break;
+        else
+            return -ENOSYS;
+
     case PHYSDEVOP_eoi:
     case PHYSDEVOP_irq_status_query:
     case PHYSDEVOP_get_free_pirq:
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Fri Jan 05 07:10:06 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 05 Jan 2024 07:10:06 +0000
Received: from list by lists.xenproject.org with outflank-mailman.661982.1031847 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLeL9-00013X-6H; Fri, 05 Jan 2024 07:09:59 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 661982.1031847; Fri, 05 Jan 2024 07:09:59 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLeL9-00012Y-1S; Fri, 05 Jan 2024 07:09:59 +0000
Received: by outflank-mailman (input) for mailman id 661982;
 Fri, 05 Jan 2024 07:09:57 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=YI+5=IP=amd.com=Jiqian.Chen@srs-se1.protection.inumbo.net>)
 id 1rLeL7-0000zs-PS
 for xen-devel@lists.xenproject.org; Fri, 05 Jan 2024 07:09:57 +0000
Received: from NAM04-MW2-obe.outbound.protection.outlook.com
 (mail-mw2nam04on20616.outbound.protection.outlook.com
 [2a01:111:f400:7e8c::616])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 6cd46d48-ab99-11ee-98ef-6d05b1d4d9a1;
 Fri, 05 Jan 2024 08:09:55 +0100 (CET)
Received: from PR1P264CA0066.FRAP264.PROD.OUTLOOK.COM (2603:10a6:102:2ca::20)
 by MW4PR12MB6802.namprd12.prod.outlook.com (2603:10b6:303:20f::19)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7159.15; Fri, 5 Jan
 2024 07:09:50 +0000
Received: from SA2PEPF000015CB.namprd03.prod.outlook.com
 (2603:10a6:102:2ca:cafe::d1) by PR1P264CA0066.outlook.office365.com
 (2603:10a6:102:2ca::20) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7159.15 via Frontend
 Transport; Fri, 5 Jan 2024 07:09:49 +0000
Received: from SATLEXMB04.amd.com (165.204.84.17) by
 SA2PEPF000015CB.mail.protection.outlook.com (10.167.241.201) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.7159.9 via Frontend Transport; Fri, 5 Jan 2024 07:09:48 +0000
Received: from cjq-desktop.amd.com (10.180.168.240) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.34; Fri, 5 Jan
 2024 01:09:39 -0600
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 6cd46d48-ab99-11ee-98ef-6d05b1d4d9a1
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=UHwFnU0lknjpew7E3XPdqsJATKkk2j+aFceGwhokd8S7LYKKTR7h4RNIu7VlItcLkBLkBF1+wsjYQOMQllKxo9Ac1d50OPnfy807uUZ6IuIGPjEygyAkZq2tWoAWoMXGpihv9iGeba2g9z0XyUlmiQreAjl/JG7S5/BWA2iAAxWxeWY1lR4IdgGZny8yLaQTTOkTnecsL0eTgGtrBByn8P5PpEaLPm4nF2dwKdZh0+pw466g5UK9UdJW/PihZjYeGEhNiOzCFYrQLjhvirPztJhMsiLy6EPkcEtYE4c9+i7ryibvf2SD2iVwgeLZTyyVNAaYfiUzVCKBVgaoRwUbQg==
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=1MaiNespvmscH9FQyQVkPQFpEobitIbsmCE4OfFf8qg=;
 b=VhHZS7uCAbjIOeDb/1oxXw15VEG6NmLtbtJsVF38USTWcM3y6SrnsZbi3KJGgRPjzl6QL1E6BpZQjW545jdXkzXy/yxr0G0cY5NfzdMyc7fyGyrMW74rMRkqZIhwlXXd0larSgcGzZVPiErBrPNJlDDla0GJcDHxypNhpG7pz7aiBU0EIHxbujYiab0U2ZYwSoY+Gyuu9BDVCm/W7wHUn52aaecK87NRKhTNckj6aK+pLl5yz9oaNlqxq87KID0x7W1vRhD6+hW47ueNUkmBoCzB0v6fDo5K8Px6SFp2O/SUZcWT+2eZWVXq5VwLxtmWUdg9ATDX2NDpUCmbLHipGA==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=lists.xenproject.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)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=1MaiNespvmscH9FQyQVkPQFpEobitIbsmCE4OfFf8qg=;
 b=RnJUggU4/SbHk8RepxfcbIyAHpGapNq/WcgjDXgpor4++UQpoqJNB2tKC7jl+ze0UdCXxtcIQ/fprHthuGMaXkUVBX+Ck8QVDwVZgJs+T0Xh56KhfZ5doAvqXiKW90UmAuMzyfatPozBLeYAx0cKti3FfP82UxEDBER1Bk7fyg0=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C
From: Jiqian Chen <Jiqian.Chen@amd.com>
To: <xen-devel@lists.xenproject.org>
CC: Jan Beulich <jbeulich@suse.com>, Andrew Cooper
	<andrew.cooper3@citrix.com>, =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?=
	<roger.pau@citrix.com>, Wei Liu <wl@xen.org>, George Dunlap
	<george.dunlap@citrix.com>, Julien Grall <julien@xen.org>, Stefano Stabellini
	<sstabellini@kernel.org>, Anthony PERARD <anthony.perard@citrix.com>,
	"Juergen Gross" <jgross@suse.com>, Stewart Hildebrand
	<Stewart.Hildebrand@amd.com>, Huang Rui <Ray.Huang@amd.com>, Jiqian Chen
	<Jiqian.Chen@amd.com>
Subject: [RFC XEN PATCH v4 0/5] Support device passthrough when dom0 is PVH on Xen
Date: Fri, 5 Jan 2024 15:09:15 +0800
Message-ID: <20240105070920.350113-1-Jiqian.Chen@amd.com>
X-Mailer: git-send-email 2.34.1
MIME-Version: 1.0
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
X-Originating-IP: [10.180.168.240]
X-ClientProxiedBy: SATLEXMB04.amd.com (10.181.40.145) To SATLEXMB04.amd.com
 (10.181.40.145)
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: SA2PEPF000015CB:EE_|MW4PR12MB6802:EE_
X-MS-Office365-Filtering-Correlation-Id: b67d0233-5687-4abc-250e-08dc0dbd4e2b
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam: BCL:0;
X-Microsoft-Antispam-Message-Info:
	RS+L2W+TjL7/WSqmZ091Av20ftV6sXspYDyFDlQOmPa/quky62Afa7xDx8RiwtsJXrGiOKcNvygvXvfEU/R0kIDUfi1f7o2xex/Ay3xTdyCfVL2vEJ3qyWgfb31vXWKyVWbbw0/qfgWCozfVz+/Qeser0u+3c6R7l+sjW72XyI2XC8BOtxUfLcYVGa3zr+9pqYpOEqKBDpMbG0Nkz+XAezJDORB7lXA0WGuZ0c/DhT+HVbosuebGHJpO3LpZJm65LArKyfkqbThoEOaXESqIQxzD9IrBsy9yLa6Vj8EQFSOAcxcGz6F/X52qVma68mDbR9Py1Chu5ICuP749MaxHA4ZjR3OpMdHn2sGdb86/in32V647eqI+YAaEn/5uVLdDE7IFB8maeVwc1p7hRtvgCUdo6INbJpKJ1JcS/vqbazDrMfXuVE98xlxH0jqGom6qVHyLxj7UwqCwfJOfhEHtXCVsvlv0ifydvKoSNLjEGs/d4rOkOJvtN+3n3FwGxgNLTi4h2C6eACZWa0A87nMHs5gpDdNczFDS5CgjqlQfAInyCciUu68i2UrKcBh3RVl1S/o61yR4JA1YS6VnkqhCxkwUtpgYkdjp3d4lysxsotOvJ7yh7gV7xZvxUmqKCT/+dS7Vlm4fiPf/sgUrc25dSlUMPg6XlXzvvFMFYYlBZJntc8YbCpS4kSsNw24s6KkQr9haXNVZ9pQSNxMKuNf+htKezWP7vB9nC2rDFVctwxoRdO1YmrxHVDInJH6bow9PL+V15n7g/JbvOA9J6lLlhfJpKSWFK2bnkOUD5vm+DTc=
X-Forefront-Antispam-Report:
	CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230031)(4636009)(376002)(346002)(136003)(396003)(39860400002)(230922051799003)(451199024)(64100799003)(186009)(82310400011)(1800799012)(46966006)(36840700001)(40470700004)(83380400001)(16526019)(426003)(26005)(2616005)(336012)(82740400003)(36860700001)(1076003)(47076005)(478600001)(966005)(8936002)(8676002)(4326008)(5660300002)(7416002)(7696005)(6666004)(6916009)(316002)(54906003)(2906002)(70206006)(41300700001)(70586007)(86362001)(81166007)(36756003)(356005)(40480700001)(40460700003)(36900700001);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Jan 2024 07:09:48.4323
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: b67d0233-5687-4abc-250e-08dc0dbd4e2b
X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com]
X-MS-Exchange-CrossTenant-AuthSource:
	SA2PEPF000015CB.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW4PR12MB6802

Hi All,
This is v4 series to support passthrough when dom0 is PVH
v3->v4 changes:
* patch#1: change the comment of PHYSDEVOP_pci_device_state_reset; move printings behind pcidevs_unlock
* patch#2: add check to prevent PVH self map
* patch#3: new patch, The implementation of adding PHYSDEVOP_setup_gsi for PVH is treated as a separate patch
* patch#4: new patch to solve the map_pirq problem of PVH dom0. use gsi to grant irq permission in XEN_DOMCTL_irq_permission.
* patch#5: to be compatible with previous kernel versions, when there is no gsi sysfs, still use irq

v2->v3 changes:
* patch#1: move the content out of pci_reset_device_state and delete pci_reset_device_state; add xsm_resource_setup_pci check for PHYSDEVOP_pci_device_state_reset; add description for PHYSDEVOP_pci_device_state_reset;
* patch#2: du to changes in the implementation of the second patch on kernel side(that it will do setup_gsi and map_pirq when assigning a device to passthrough), add PHYSDEVOP_setup_gsi for PVH dom0, and we need to support self mapping.
* patch#3: du to changes in the implementation of the second patch on kernel side(that adds a new sysfs for gsi instead of a new syscall), so read gsi number from the sysfs of gsi.
v3 link:
https://lore.kernel.org/xen-devel/20231210164009.1551147-1-Jiqian.Chen@amd.com/T/#t

v2 link:
https://lore.kernel.org/xen-devel/20231124104136.3263722-1-Jiqian.Chen@amd.com/T/#t
Below is the description of v2 cover letter:
This series of patches are the v2 of the implementation of passthrough when dom0 is PVH on Xen.
We sent the v1 to upstream before, but the v1 had so many problems and we got lots of suggestions.
I will introduce all issues that these patches try to fix and the differences between v1 and v2.

Issues we encountered:
1. pci_stub failed to write bar for a passthrough device.
Problem: when we run “sudo xl pci-assignable-add <sbdf>” to assign a device, pci_stub will call “pcistub_init_device() -> pci_restore_state() -> pci_restore_config_space() ->
pci_restore_config_space_range() -> pci_restore_config_dword() -> pci_write_config_dword()”, the pci config write will trigger an io interrupt to bar_write() in the xen, but the
bar->enabled was set before, the write is not allowed now, and then when 
bar->Qemu config the
passthrough device in xen_pt_realize(), it gets invalid bar values.

Reason: the reason is that we don't tell vPCI that the device has been reset, so the current cached state in pdev->vpci is all out of date and is different from the real device state.

Solution: to solve this problem, the first patch of kernel(xen/pci: Add xen_reset_device_state
function) and the fist patch of xen(xen/vpci: Clear all vpci status of device) add a new hypercall to reset the state stored in vPCI when the state of real device has changed.
Thank Roger for the suggestion of this v2, and it is different from v1 (https://lore.kernel.org/xen-devel/20230312075455.450187-3-ray.huang@amd.com/), v1 simply allow domU to write pci bar, it does not comply with the design principles of vPCI.

2. failed to do PHYSDEVOP_map_pirq when dom0 is PVH
Problem: HVM domU will do PHYSDEVOP_map_pirq for a passthrough device by using gsi. See xen_pt_realize->xc_physdev_map_pirq and pci_add_dm_done->xc_physdev_map_pirq. Then xc_physdev_map_pirq will call into Xen, but in hvm_physdev_op(), PHYSDEVOP_map_pirq is not allowed.

Reason: In hvm_physdev_op(), the variable "currd" is PVH dom0 and PVH has no X86_EMU_USE_PIRQ flag, it will fail at has_pirq check.

Solution: I think we may need to allow PHYSDEVOP_map_pirq when "currd" is dom0 (at present dom0 is PVH). The second patch of xen(x86/pvh: Open PHYSDEVOP_map_pirq for PVH dom0) allow PVH dom0 do PHYSDEVOP_map_pirq. This v2 patch is better than v1, v1 simply remove the has_pirq check(xen https://lore.kernel.org/xen-devel/20230312075455.450187-4-ray.huang@amd.com/).

3. the gsi of a passthrough device doesn't be unmasked
 3.1 failed to check the permission of pirq
 3.2 the gsi of passthrough device was not registered in PVH dom0

Problem:
3.1 callback function pci_add_dm_done() will be called when qemu config a passthrough device for domU.
This function will call xc_domain_irq_permission()-> pirq_access_permitted() to check if the gsi has corresponding mappings in dom0. But it didn’t, so failed. See XEN_DOMCTL_irq_permission->pirq_access_permitted, "current" is PVH dom0 and it return irq is 0.
3.2 it's possible for a gsi (iow: vIO-APIC pin) to never get registered on PVH dom0, because the devices of PVH are using MSI(-X) interrupts. However, the IO-APIC pin must be configured for it to be able to be mapped into a domU.

Reason: After searching codes, I find "map_pirq" and "register_gsi" will be done in function vioapic_write_redirent->vioapic_hwdom_map_gsi when the gsi(aka ioapic's pin) is unmasked in PVH dom0.
So the two problems can be concluded to that the gsi of a passthrough device doesn't be unmasked.

Solution: to solve these problems, the second patch of kernel(xen/pvh: Unmask irq for passthrough device in PVH dom0) call the unmask_irq() when we assign a device to be passthrough. So that passthrough devices can have the mapping of gsi on PVH dom0 and gsi can be registered. This v2 patch is different from the v1( kernel https://lore.kernel.org/xen-devel/20230312120157.452859-5-ray.huang@amd.com/,
kernel https://lore.kernel.org/xen-devel/20230312120157.452859-5-ray.huang@amd.com/ and xen https://lore.kernel.org/xen-devel/20230312075455.450187-5-ray.huang@amd.com/),
v1 performed "map_pirq" and "register_gsi" on all pci devices on PVH dom0, which is unnecessary and may cause multiple registration.

4. failed to map pirq for gsi
Problem: qemu will call xc_physdev_map_pirq() to map a passthrough device’s gsi to pirq in function xen_pt_realize(). But failed.

Reason: According to the implement of xc_physdev_map_pirq(), it needs gsi instead of irq, but qemu pass irq to it and treat irq as gsi, it is got from file /sys/bus/pci/devices/xxxx:xx:xx.x/irq in function xen_host_pci_device_get(). But actually the gsi number is not equal with irq. On PVH dom0, when it allocates irq for a gsi in function acpi_register_gsi_ioapic(), allocation is dynamic, and follow the principle of applying first, distributing first. And if you debug the kernel codes(see function __irq_alloc_descs), you will find the irq number is allocated from small to large by order, but the applying gsi number is not, gsi 38 may come before gsi 28, that causes gsi 38 get a smaller irq number than gsi 28, and then gsi != irq.

Solution: we can record the relation between gsi and irq, then when userspace(qemu) want to use gsi, we can do a translation. The third patch of kernel(xen/privcmd: Add new syscall to get gsi from irq) records all the relations in acpi_register_gsi_xen_pvh() when dom0 initialize pci devices, and provide a syscall for userspace to get the gsi from irq. The third patch of xen(tools: Add new function to get gsi from irq) add a new function xc_physdev_gsi_from_irq() to call the new syscall added on kernel side.
And then userspace can use that function to get gsi. Then xc_physdev_map_pirq() will success. This v2 patch is the same as v1( kernel https://lore.kernel.org/xen-devel/20230312120157.452859-6-ray.huang@amd.com/ and xen https://lore.kernel.org/xen-devel/20230312075455.450187-6-ray.huang@amd.com/)

About the v2 patch of qemu, just change an included head file, other are similar to the v1 ( qemu https://lore.kernel.org/xen-devel/20230312092244.451465-19-ray.huang@amd.com/), just call
xc_physdev_gsi_from_irq() to get gsi from irq.

Jiqian Chen (5):
  xen/vpci: Clear all vpci status of device
  x86/pvh: Allow (un)map_pirq when caller isn't DOMID_SELF
  x86/pvh: Add PHYSDEVOP_setup_gsi for PVH dom0
  domctl: Use gsi to grant/revoke irq permission
  libxl: Use gsi instead of irq for mapping pirq

 tools/libs/light/libxl_pci.c | 21 +++++++++++++++++----
 tools/libs/light/libxl_x86.c |  5 ++++-
 xen/arch/x86/hvm/hypercall.c | 34 ++++++++++++++++++++++++++++++++--
 xen/common/domctl.c          | 12 ++++++++++--
 xen/drivers/pci/physdev.c    | 34 ++++++++++++++++++++++++++++++++++
 xen/drivers/vpci/vpci.c      |  9 +++++++++
 xen/include/public/physdev.h |  7 +++++++
 xen/include/xen/vpci.h       |  6 ++++++
 8 files changed, 119 insertions(+), 9 deletions(-)

-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Fri Jan 05 07:10:07 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 05 Jan 2024 07:10:07 +0000
Received: from list by lists.xenproject.org with outflank-mailman.661983.1031862 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLeLD-0001u5-JZ; Fri, 05 Jan 2024 07:10:03 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 661983.1031862; Fri, 05 Jan 2024 07:10:03 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLeLD-0001tX-G6; Fri, 05 Jan 2024 07:10:03 +0000
Received: by outflank-mailman (input) for mailman id 661983;
 Fri, 05 Jan 2024 07:10:01 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=YI+5=IP=amd.com=Jiqian.Chen@srs-se1.protection.inumbo.net>)
 id 1rLeLB-0000zx-G0
 for xen-devel@lists.xenproject.org; Fri, 05 Jan 2024 07:10:01 +0000
Received: from NAM10-DM6-obe.outbound.protection.outlook.com
 (mail-dm6nam10on2060a.outbound.protection.outlook.com
 [2a01:111:f400:7e88::60a])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 6ce5f08e-ab99-11ee-9b0f-b553b5be7939;
 Fri, 05 Jan 2024 08:09:55 +0100 (CET)
Received: from PH7PR17CA0028.namprd17.prod.outlook.com (2603:10b6:510:323::8)
 by LV2PR12MB5821.namprd12.prod.outlook.com (2603:10b6:408:17a::8)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7159.15; Fri, 5 Jan
 2024 07:09:51 +0000
Received: from SA2PEPF000015CA.namprd03.prod.outlook.com
 (2603:10b6:510:323:cafe::f0) by PH7PR17CA0028.outlook.office365.com
 (2603:10b6:510:323::8) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7159.16 via Frontend
 Transport; Fri, 5 Jan 2024 07:09:50 +0000
Received: from SATLEXMB04.amd.com (165.204.84.17) by
 SA2PEPF000015CA.mail.protection.outlook.com (10.167.241.200) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.7159.9 via Frontend Transport; Fri, 5 Jan 2024 07:09:50 +0000
Received: from cjq-desktop.amd.com (10.180.168.240) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.34; Fri, 5 Jan
 2024 01:09:46 -0600
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 6ce5f08e-ab99-11ee-9b0f-b553b5be7939
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=f6tqJ1o0BJp7rd1FHwuK016caGGlEZSBy91owYqcZEeoH3A6gijdN69nYBtDNbrbNrYkojKFGIsPPukFefQMgr6MjI9DXkA1GYtwffMuGw3cBjCOR84TghDTMbAJXEL0hq0By59ZdJ7qoW6OJKgSQYBNShZafFxR5Ri/O25LT92sKQzLWsXHCjhNkYkmGg0NodMd+a80M9bYyEeVPVq/YBs/vg08g3W1pmzF9DkjGbg4XCffeQ8SQpeRY9bTkS4hTqEvO/zPyF0MBtvm4kd1lBm0AnGchFujmdkQnBITVZ1f8txHKl7r+kwr1nLffMaiQrZJiin+YLM0TKCwlhj5pw==
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=oxn0adhoslWIcg9D/tXdZK/xxeNrhrHf6QBk9BQZz0A=;
 b=nsIYaKCSI6Z6wnHX8Piu35RZe28lZNJKZjQ5ZD01AqOHe5ZnoHJyIYqZjvmCDnaRjAEPobt7syR6HF+e35odRVqdoU4Stfoh/5fNzQ4nB5oa61+KSqDt6IdSlMrhU1cYx/0Cp8IdUdo7qBFQ8TUiaiYt6F9g2ym0Xi5meyKVAqX9AJcAANcfmyTreOXKL2tx6PabjQVj66fdMzUuEZ+outbr6I7xpvPCu0IgdgpJmQUp2WHgfD+tQyGwdnJHpyTfbtnAYI1XZItcch+MKLqNYab7DUQ6WncaWnj2+wlSm/bxXJQICBp9Gw2nHhBHafYR8yKO+SeAmKK2cL7ZGOU23A==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=lists.xenproject.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)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=oxn0adhoslWIcg9D/tXdZK/xxeNrhrHf6QBk9BQZz0A=;
 b=tT/wugzSZ61MPH3iEELpzScqjEdsuF0MHBujxTCrYAfOSTleYgWxxZ4RPG+v/q39l/Dlnf39Lpd/y1f0/RRfrJivRw2gnGOGWJmiillhgZZSj04LZ/dDAiucBwHAeFiS3Ob9jAtaCYqVfmUwb2Purs4OA7Fv8S0KpmjVtN0dDys=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C
From: Jiqian Chen <Jiqian.Chen@amd.com>
To: <xen-devel@lists.xenproject.org>
CC: Jan Beulich <jbeulich@suse.com>, Andrew Cooper
	<andrew.cooper3@citrix.com>, =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?=
	<roger.pau@citrix.com>, Wei Liu <wl@xen.org>, George Dunlap
	<george.dunlap@citrix.com>, Julien Grall <julien@xen.org>, Stefano Stabellini
	<sstabellini@kernel.org>, Anthony PERARD <anthony.perard@citrix.com>,
	"Juergen Gross" <jgross@suse.com>, Stewart Hildebrand
	<Stewart.Hildebrand@amd.com>, Huang Rui <Ray.Huang@amd.com>, Jiqian Chen
	<Jiqian.Chen@amd.com>, Huang Rui <ray.huang@amd.com>
Subject: [RFC XEN PATCH v4 2/5] x86/pvh: Allow (un)map_pirq when caller isn't DOMID_SELF
Date: Fri, 5 Jan 2024 15:09:17 +0800
Message-ID: <20240105070920.350113-3-Jiqian.Chen@amd.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20240105070920.350113-1-Jiqian.Chen@amd.com>
References: <20240105070920.350113-1-Jiqian.Chen@amd.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-Originating-IP: [10.180.168.240]
X-ClientProxiedBy: SATLEXMB04.amd.com (10.181.40.145) To SATLEXMB04.amd.com
 (10.181.40.145)
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: SA2PEPF000015CA:EE_|LV2PR12MB5821:EE_
X-MS-Office365-Filtering-Correlation-Id: 93b343a8-97bf-4c6c-9e04-08dc0dbd4f2f
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam: BCL:0;
X-Microsoft-Antispam-Message-Info:
	UVcaDDInTWyOMMhUoc0J6PcykjQ1/GRev4KGyp4EIfbwmia74RAEGv9cz1TG/1SgDQ99iDpcuArn0U3BOjN+PpA0X3lPHsj1KZXhglLmtkWPz8nh8fzPLHzg2sZHwXsCKBqby4M1lUZi0Vcbb80A0hsaSsS6Vm+p67YuaugPaHSjVqdpB5YFik1OPE+OIuvtBF6PUkxb9WbMdwRUvL9gU3lPSgCLWI/jqDN2+DlcNOMmWOdEWpG1zy1ww9mT1M+I8N+HqmaW0CyRqORuB21AytlhEM+bAYDoryZdxyb8/pbuAqYvCL5yRr/NqyfESe1LdoUqQ222VoLtlT0AiUOUUkF9leV3rSChFuLztleOpl2WfwGt4O5+cgSKDoO0nXc3niSE61RU9Dkk3rb06KGy9zXwm5D013ayJ92u9OwynZMHmJljZK8kFsfHd7Q14TrUd8aejAqyoGEVyuupOXWJiKwsl/XM+LMUx/xQ9n0lB/QQQblu7Ik53HyRt4r8ALC1/bl4eR9U+kEQRMnvQ6NYKRmQHT0OQ783H2SOySSSoRpsCqdc/rh4LARoCCTJPC706Dmfcg/OXny2lgJEe5dk4Tw5MgN9MfEFZTzgEttryTsM0XPHTtA4EGIk+6cd1tGkFzQdukGy+ZP6JlDYzvh/z1uzDd+BSFNaH0R1n61GCsg5FPUVmXkpEfDoM46q89fqT1YWfQbe7bGeXByIXulLWQaSqq7NNR6PNaGsHqaxbRDuuqcrw1h+bKc2m27ileQkzfeDaNAoydeyF/rkVSoHVQ==
X-Forefront-Antispam-Report:
	CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230031)(4636009)(396003)(39860400002)(346002)(376002)(136003)(230922051799003)(82310400011)(64100799003)(451199024)(186009)(1800799012)(40470700004)(36840700001)(46966006)(40480700001)(40460700003)(426003)(26005)(336012)(7696005)(478600001)(6666004)(82740400003)(36860700001)(86362001)(36756003)(81166007)(356005)(83380400001)(2906002)(16526019)(70206006)(5660300002)(54906003)(7416002)(41300700001)(2616005)(47076005)(1076003)(70586007)(6916009)(8936002)(316002)(4326008)(8676002)(36900700001);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Jan 2024 07:09:50.7487
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 93b343a8-97bf-4c6c-9e04-08dc0dbd4f2f
X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com]
X-MS-Exchange-CrossTenant-AuthSource:
	SA2PEPF000015CA.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: LV2PR12MB5821

If run Xen with PVH dom0 and hvm domU, hvm will map a pirq for
a passthrough device by using gsi, see
xen_pt_realize->xc_physdev_map_pirq and
pci_add_dm_done->xc_physdev_map_pirq. Then xc_physdev_map_pirq
will call into Xen, but in hvm_physdev_op, PHYSDEVOP_map_pirq
is not allowed because currd is PVH dom0 and PVH has no
X86_EMU_USE_PIRQ flag, it will fail at has_pirq check.

So, allow PHYSDEVOP_map_pirq when domid of the caller is not
DOMID_SELF no matter whether currd has X86_EMU_USE_PIRQ flag
and also allow PHYSDEVOP_unmap_pirq for the failed path to
unmap pirq.

Co-developed-by: Huang Rui <ray.huang@amd.com>
Signed-off-by: Jiqian Chen <Jiqian.Chen@amd.com>
---
 xen/arch/x86/hvm/hypercall.c | 27 +++++++++++++++++++++++++--
 1 file changed, 25 insertions(+), 2 deletions(-)

diff --git a/xen/arch/x86/hvm/hypercall.c b/xen/arch/x86/hvm/hypercall.c
index 6ad5b4d5f11f..632a68be3cc4 100644
--- a/xen/arch/x86/hvm/hypercall.c
+++ b/xen/arch/x86/hvm/hypercall.c
@@ -10,6 +10,7 @@
 #include <xen/hypercall.h>
 #include <xen/ioreq.h>
 #include <xen/nospec.h>
+#include <xen/guest_access.h>
 
 #include <asm/hvm/emulate.h>
 #include <asm/hvm/support.h>
@@ -72,8 +73,30 @@ long hvm_physdev_op(int cmd, XEN_GUEST_HANDLE_PARAM(void) arg)
 
     switch ( cmd )
     {
-    case PHYSDEVOP_map_pirq:
-    case PHYSDEVOP_unmap_pirq:
+    case PHYSDEVOP_map_pirq: {
+        physdev_map_pirq_t map;
+
+        if ( copy_from_guest(&map, arg, 1) != 0 )
+            return -EFAULT;
+
+        if ( !has_pirq(currd) && map.domid == DOMID_SELF )
+            return -ENOSYS;
+
+        break;
+    }
+
+    case PHYSDEVOP_unmap_pirq: {
+        physdev_unmap_pirq_t unmap;
+
+        if ( copy_from_guest(&unmap, arg, 1) != 0 )
+            return -EFAULT;
+
+        if ( !has_pirq(currd) && unmap.domid == DOMID_SELF )
+            return -ENOSYS;
+
+        break;
+    }
+
     case PHYSDEVOP_eoi:
     case PHYSDEVOP_irq_status_query:
     case PHYSDEVOP_get_free_pirq:
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Fri Jan 05 07:10:07 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 05 Jan 2024 07:10:07 +0000
Received: from list by lists.xenproject.org with outflank-mailman.661985.1031881 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLeLH-0002t0-6P; Fri, 05 Jan 2024 07:10:07 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 661985.1031881; Fri, 05 Jan 2024 07:10:07 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLeLH-0002sS-3J; Fri, 05 Jan 2024 07:10:07 +0000
Received: by outflank-mailman (input) for mailman id 661985;
 Fri, 05 Jan 2024 07:10:06 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=YI+5=IP=amd.com=Jiqian.Chen@srs-se1.protection.inumbo.net>)
 id 1rLeLG-0000zs-6H
 for xen-devel@lists.xenproject.org; Fri, 05 Jan 2024 07:10:06 +0000
Received: from NAM04-BN8-obe.outbound.protection.outlook.com
 (mail-bn8nam04on2060e.outbound.protection.outlook.com
 [2a01:111:f400:7e8d::60e])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 73a42acc-ab99-11ee-98ef-6d05b1d4d9a1;
 Fri, 05 Jan 2024 08:10:05 +0100 (CET)
Received: from PH8PR02CA0015.namprd02.prod.outlook.com (2603:10b6:510:2d0::7)
 by MW4PR12MB5666.namprd12.prod.outlook.com (2603:10b6:303:188::20)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7159.16; Fri, 5 Jan
 2024 07:09:59 +0000
Received: from SA2PEPF000015CC.namprd03.prod.outlook.com
 (2603:10b6:510:2d0:cafe::77) by PH8PR02CA0015.outlook.office365.com
 (2603:10b6:510:2d0::7) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7159.16 via Frontend
 Transport; Fri, 5 Jan 2024 07:09:59 +0000
Received: from SATLEXMB04.amd.com (165.204.84.17) by
 SA2PEPF000015CC.mail.protection.outlook.com (10.167.241.202) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.7159.9 via Frontend Transport; Fri, 5 Jan 2024 07:09:58 +0000
Received: from cjq-desktop.amd.com (10.180.168.240) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.34; Fri, 5 Jan
 2024 01:09:54 -0600
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 73a42acc-ab99-11ee-98ef-6d05b1d4d9a1
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=A8w/ryduOw+w0uWbyaulW8uccfBuvNqqEbWnNjhe+tdzfdGifbjC3aB0T06MvQ07g3x+hH4rWikJFWNZkP5N/UorbtU/KuxpObwfLmMlVGEPf0e7ta/y7piR2WfoGzCvNSneiuj8KC/jpElCIxj7OIiPSPSILSHGENr59xiYJC3AVLYOOsKdgRnqAkbVPiW1AGlRJLxgUdcEs758O+ZXLhiA6pqvfiYZOXXlQc7rao/Pj7mB+CP+BPFPfzLRORX3myD3wHRy6050IRge2txNV1I7MJMWVnDAbEJuDu9J4HL0l6X8FkRixcYZFGa232v5glUcIfJwmXr8ed+J0K/qkQ==
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=rf4Pu/sqcMtXSsRIZdrBWFvuz03FcIxT/N0cvVCw+TI=;
 b=GTpRtNlGgCvORdOnvv+S+i/G18XL313ASrOuoTd8bdFKT4nqmpQ85Fwe2ahUDFhLiRsDbzX2ZvdmaoHh0yY9zElWIVHkY9X2HlBkGPz5eZOTfSF2oDyrLaaPmHJ0xDt1WE0hCXHBwVfjNn+7vIk5vJW2DeuCzVcsfyjuO+uMofh46saspo/QeOVmOuaS4adGZ6v602t4iGCI8ZkWNKjp5JH0EzI40Eac0NKRFWaJe/FmTSlEXdLNRGwKM82M0KoxeMMY/Ta2AKw9BLoG1Sqzj+NNL8QJTDAVhYBy0bo+AjRFnaxLHSi090j1mkrm0dtRBiMlsS+Ms5e3xUrPbd3RCg==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=lists.xenproject.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)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=rf4Pu/sqcMtXSsRIZdrBWFvuz03FcIxT/N0cvVCw+TI=;
 b=DfgE6hLlaNKb8qAmCo6YglFTeU6CKAoscyCLoyR83rI1zBV0JHizmSRYsiC22jhTldX3swp9jL3R8KWARyScSSm3f8wZvuSHWU6POmNwEfILg71i+40LvxftiM2BpqLE7MFh5915JaHUMyqrgORb7Y/73plJhHW2BFCs1G+YWfw=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C
From: Jiqian Chen <Jiqian.Chen@amd.com>
To: <xen-devel@lists.xenproject.org>
CC: Jan Beulich <jbeulich@suse.com>, Andrew Cooper
	<andrew.cooper3@citrix.com>, =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?=
	<roger.pau@citrix.com>, Wei Liu <wl@xen.org>, George Dunlap
	<george.dunlap@citrix.com>, Julien Grall <julien@xen.org>, Stefano Stabellini
	<sstabellini@kernel.org>, Anthony PERARD <anthony.perard@citrix.com>,
	"Juergen Gross" <jgross@suse.com>, Stewart Hildebrand
	<Stewart.Hildebrand@amd.com>, Huang Rui <Ray.Huang@amd.com>, Jiqian Chen
	<Jiqian.Chen@amd.com>, Huang Rui <ray.huang@amd.com>
Subject: [RFC XEN PATCH v4 4/5] domctl: Use gsi to grant/revoke irq permission
Date: Fri, 5 Jan 2024 15:09:19 +0800
Message-ID: <20240105070920.350113-5-Jiqian.Chen@amd.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20240105070920.350113-1-Jiqian.Chen@amd.com>
References: <20240105070920.350113-1-Jiqian.Chen@amd.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-Originating-IP: [10.180.168.240]
X-ClientProxiedBy: SATLEXMB04.amd.com (10.181.40.145) To SATLEXMB04.amd.com
 (10.181.40.145)
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: SA2PEPF000015CC:EE_|MW4PR12MB5666:EE_
X-MS-Office365-Filtering-Correlation-Id: d5ab51ce-7600-4170-774d-08dc0dbd53f8
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam: BCL:0;
X-Microsoft-Antispam-Message-Info:
	9j3sB6Xb1ShR5vObfhkbmDTD3xOOHvJ7Qa/FkkoIG80L1G9SRA0VqGTcsR6ph+P6rXvE6b3RfsUWzdfypYMIiXjm2ape+06Z+ZwQgEA5dtHbGT66aymSCtG7b2QoqhLQ2B8m/TTXz1jnVELoZ+525yN0heJbC5D16BRwmdQ0nLUkJ58M5axDNCJOWv33rjnWkXyqtLN8LAFOzVd+8Dfirb/KTRAbZHDdnw3r7bFntbeO0P7PrMGhY8VUsi3ehRJhao+tm1GRR/5BN22ym785SWDLQ0VCsZkxHn664wFf9o0PNgyHUeRAwajQLr1xK0evCm3Qs49Rdui69bxr8nVy/HGoVx6MSAekzmZj88+fDDkrSB4/DfVRoguag5s09EEdLyIQ5qacKp/31rYkDCJpuhe3w4OUYQX5VbusK4YIamn5niDayjYytEyMrWyUL7HIUg7Xr7Ez6N9ruqcx/CrANh3UUZXjdkcQ0jq/xbLNGD7ckSwoneyA7+4guUyMicge/3teyygGA9XDlTC5EPp7RD06r19tKETWSwlD99UJNIsbh5BUblbA1vGHcRRJrnXEup2V8sRuhYiVRxyol58hGUCuNN88oiUgMJIjHjwTC9VoNVs6oLFLCTscV1W+CDGAglUY+wcuxJj7hrOajFGVxx2+MFg5kupIujzVadyR7JpWHeoF/JM1cFGWAe/xCUxgKVMRbeXhJ+SUsajcX1JgOa25C8nU8eys4VAY06Qr26MxS3Ij6EaAgyNneuV4zhMxQO7rTDMP4CKWSIxrY5Iy0g==
X-Forefront-Antispam-Report:
	CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230031)(4636009)(39860400002)(346002)(396003)(376002)(136003)(230922051799003)(186009)(64100799003)(82310400011)(451199024)(1800799012)(36840700001)(46966006)(40470700004)(40480700001)(40460700003)(83380400001)(41300700001)(70586007)(70206006)(81166007)(356005)(36756003)(86362001)(316002)(82740400003)(36860700001)(47076005)(16526019)(26005)(426003)(336012)(2616005)(1076003)(5660300002)(6666004)(2906002)(478600001)(6916009)(54906003)(7696005)(8936002)(8676002)(7416002)(4326008)(36900700001);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Jan 2024 07:09:58.7602
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: d5ab51ce-7600-4170-774d-08dc0dbd53f8
X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com]
X-MS-Exchange-CrossTenant-AuthSource:
	SA2PEPF000015CC.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW4PR12MB5666

Some type of domain don't have PIRQ, like PVH, current
implementation is not suitable for those domain.

When passthrough a device to guest on PVH dom0, this
pci_add_dm_done->XEN_DOMCTL_irq_permission will failed
at domain_pirq_to_irq.

So, change it to use gsi to grant/revoke irq permission.
And change the caller of XEN_DOMCTL_irq_permission to
pass gsi to it instead of pirq.

Co-developed-by: Huang Rui <ray.huang@amd.com>
Signed-off-by: Jiqian Chen <Jiqian.Chen@amd.com>
---
 tools/libs/light/libxl_pci.c |  6 ++++--
 tools/libs/light/libxl_x86.c |  5 ++++-
 xen/common/domctl.c          | 12 ++++++++++--
 3 files changed, 18 insertions(+), 5 deletions(-)

diff --git a/tools/libs/light/libxl_pci.c b/tools/libs/light/libxl_pci.c
index 96cb4da0794e..e1341d1e9850 100644
--- a/tools/libs/light/libxl_pci.c
+++ b/tools/libs/light/libxl_pci.c
@@ -1418,6 +1418,7 @@ static void pci_add_dm_done(libxl__egc *egc,
     unsigned long long start, end, flags, size;
     int irq, i;
     int r;
+    int gsi;
     uint32_t flag = XEN_DOMCTL_DEV_RDM_RELAXED;
     uint32_t domainid = domid;
     bool isstubdom = libxl_is_stubdom(ctx, domid, &domainid);
@@ -1486,6 +1487,7 @@ static void pci_add_dm_done(libxl__egc *egc,
         goto out_no_irq;
     }
     if ((fscanf(f, "%u", &irq) == 1) && irq) {
+        gsi = irq;
         r = xc_physdev_map_pirq(ctx->xch, domid, irq, &irq);
         if (r < 0) {
             LOGED(ERROR, domainid, "xc_physdev_map_pirq irq=%d (error=%d)",
@@ -1494,10 +1496,10 @@ static void pci_add_dm_done(libxl__egc *egc,
             rc = ERROR_FAIL;
             goto out;
         }
-        r = xc_domain_irq_permission(ctx->xch, domid, irq, 1);
+        r = xc_domain_irq_permission(ctx->xch, domid, gsi, 1);
         if (r < 0) {
             LOGED(ERROR, domainid,
-                  "xc_domain_irq_permission irq=%d (error=%d)", irq, r);
+                  "xc_domain_irq_permission irq=%d (error=%d)", gsi, r);
             fclose(f);
             rc = ERROR_FAIL;
             goto out;
diff --git a/tools/libs/light/libxl_x86.c b/tools/libs/light/libxl_x86.c
index d16573e72cd4..88ad50cf6360 100644
--- a/tools/libs/light/libxl_x86.c
+++ b/tools/libs/light/libxl_x86.c
@@ -654,12 +654,15 @@ out:
 int libxl__arch_domain_map_irq(libxl__gc *gc, uint32_t domid, int irq)
 {
     int ret;
+    int gsi;
+
+    gsi = irq;
 
     ret = xc_physdev_map_pirq(CTX->xch, domid, irq, &irq);
     if (ret)
         return ret;
 
-    ret = xc_domain_irq_permission(CTX->xch, domid, irq, 1);
+    ret = xc_domain_irq_permission(CTX->xch, domid, gsi, 1);
 
     return ret;
 }
diff --git a/xen/common/domctl.c b/xen/common/domctl.c
index f5a71ee5f78d..eeb975bd0194 100644
--- a/xen/common/domctl.c
+++ b/xen/common/domctl.c
@@ -653,12 +653,20 @@ long do_domctl(XEN_GUEST_HANDLE_PARAM(xen_domctl_t) u_domctl)
         unsigned int pirq = op->u.irq_permission.pirq, irq;
         int allow = op->u.irq_permission.allow_access;
 
-        if ( pirq >= current->domain->nr_pirqs )
+        if ( pirq >= nr_irqs_gsi )
         {
             ret = -EINVAL;
             break;
         }
-        irq = pirq_access_permitted(current->domain, pirq);
+
+        if ( irq_access_permitted(current->domain, pirq) )
+            irq = pirq;
+        else
+        {
+            ret = -EPERM;
+            break;
+        }
+
         if ( !irq || xsm_irq_permission(XSM_HOOK, d, irq, allow) )
             ret = -EPERM;
         else if ( allow )
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Fri Jan 05 07:10:08 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 05 Jan 2024 07:10:08 +0000
Received: from list by lists.xenproject.org with outflank-mailman.661986.1031892 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLeLI-0003CR-L7; Fri, 05 Jan 2024 07:10:08 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 661986.1031892; Fri, 05 Jan 2024 07:10:08 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLeLI-0003CC-GS; Fri, 05 Jan 2024 07:10:08 +0000
Received: by outflank-mailman (input) for mailman id 661986;
 Fri, 05 Jan 2024 07:10:07 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=YI+5=IP=amd.com=Jiqian.Chen@srs-se1.protection.inumbo.net>)
 id 1rLeLH-0000zs-6J
 for xen-devel@lists.xenproject.org; Fri, 05 Jan 2024 07:10:07 +0000
Received: from NAM11-DM6-obe.outbound.protection.outlook.com
 (mail-dm6nam11on20623.outbound.protection.outlook.com
 [2a01:111:f400:7eaa::623])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 73a1e0ba-ab99-11ee-98ef-6d05b1d4d9a1;
 Fri, 05 Jan 2024 08:10:06 +0100 (CET)
Received: from PH8PR02CA0014.namprd02.prod.outlook.com (2603:10b6:510:2d0::6)
 by BY5PR12MB4275.namprd12.prod.outlook.com (2603:10b6:a03:20a::18)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7159.16; Fri, 5 Jan
 2024 07:10:03 +0000
Received: from SA2PEPF000015CC.namprd03.prod.outlook.com
 (2603:10b6:510:2d0:cafe::ba) by PH8PR02CA0014.outlook.office365.com
 (2603:10b6:510:2d0::6) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7159.16 via Frontend
 Transport; Fri, 5 Jan 2024 07:10:03 +0000
Received: from SATLEXMB04.amd.com (165.204.84.17) by
 SA2PEPF000015CC.mail.protection.outlook.com (10.167.241.202) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.7159.9 via Frontend Transport; Fri, 5 Jan 2024 07:10:02 +0000
Received: from cjq-desktop.amd.com (10.180.168.240) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.34; Fri, 5 Jan
 2024 01:09:58 -0600
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 73a1e0ba-ab99-11ee-98ef-6d05b1d4d9a1
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=B3C+oTNhuBwj3rsR7miV3w+HLziQBdXp4DsiuaYVP7tsvlX9uIiusqVowmM6aUiu2bHvTbBmcc3b181styYKoEtu5pBgTYh8o8foJtOi0AKqygIEFIAR577QBmNDLV2Gg7EFXEUDNoFPQCCI+NVWbJvU0z2Td4fs7ioj7w267i+zNzxni0Bep59lP80SmcM1IrJNtPoNiudmWCpLSlL3uX00jjkBlhM8+1iRYFEpOEc6yRr7cZ5HPAKnHqxgT4CYKredrb4Lui9WC7X9kUWU/wC0c483cDTwOk0UXUKSKOytuPd/cr8OTa08WHVeNxroMJ4ZssWOhFmLN39rXRegrg==
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=XUq05x2O7uEZgBZIRC0Zh7w0rJnudKOWKK8/cz1mH6c=;
 b=d3I75IWvfiL4DdrWIWW63HxL89rCgfmVm27OyVIJi4QB81cnJgJgY2Hh6HMuCPKVu1gCbop/EU6oiq9+75hzVRJUiU9Qpizsjk1Y6FwnSuELrwJ5Eo7AteFS2Wj1BKvdk7stxt1eCHPvWDj07LYDDp8I/i7TEtb8CNosRbztH0ej2CkKnAkbOjkKOPFEsLaCnkj1OgaMB7q/ox5hK+hgtqxnMyqSylLGyp/mP9Pt04cKoa/fsG3tY9QzqfhEJn2nPDPMtfulP3gMNpuqneGzoAZgMKNLvinXT5XhhOgqwDSkI1aZYVgGrRGucKqdZ6ZktwY8U3kf8PYZhW1BoxO5bg==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=lists.xenproject.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)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=XUq05x2O7uEZgBZIRC0Zh7w0rJnudKOWKK8/cz1mH6c=;
 b=JGCakPB634yiCJzhF7Y8rbzZjptLPnYwqdehwNeeDahBs5qkDbNZm3Ceyjr7Sk3PnyevQNIb66bl+3fUQePeEh1YtV+Ci1Ob17gdYxlp2t8afdCYsizlVF4bPByESSTFFQkXFy6TSNYcbG4U+Tc0SCVa34mVmK7AbcH+haPTRhk=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C
From: Jiqian Chen <Jiqian.Chen@amd.com>
To: <xen-devel@lists.xenproject.org>
CC: Jan Beulich <jbeulich@suse.com>, Andrew Cooper
	<andrew.cooper3@citrix.com>, =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?=
	<roger.pau@citrix.com>, Wei Liu <wl@xen.org>, George Dunlap
	<george.dunlap@citrix.com>, Julien Grall <julien@xen.org>, Stefano Stabellini
	<sstabellini@kernel.org>, Anthony PERARD <anthony.perard@citrix.com>,
	"Juergen Gross" <jgross@suse.com>, Stewart Hildebrand
	<Stewart.Hildebrand@amd.com>, Huang Rui <Ray.Huang@amd.com>, Jiqian Chen
	<Jiqian.Chen@amd.com>, Huang Rui <ray.huang@amd.com>
Subject: [RFC XEN PATCH v4 5/5] libxl: Use gsi instead of irq for mapping pirq
Date: Fri, 5 Jan 2024 15:09:20 +0800
Message-ID: <20240105070920.350113-6-Jiqian.Chen@amd.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20240105070920.350113-1-Jiqian.Chen@amd.com>
References: <20240105070920.350113-1-Jiqian.Chen@amd.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-Originating-IP: [10.180.168.240]
X-ClientProxiedBy: SATLEXMB04.amd.com (10.181.40.145) To SATLEXMB04.amd.com
 (10.181.40.145)
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: SA2PEPF000015CC:EE_|BY5PR12MB4275:EE_
X-MS-Office365-Filtering-Correlation-Id: 7d409d16-f7fe-4b58-e408-08dc0dbd566d
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam: BCL:0;
X-Microsoft-Antispam-Message-Info:
	36h4mVC2Nan1+C+2eYJ7p9MNUGORmlQ9ywT07P0INSXpHhWEI8a/6DKMIiHfvMm3EdtKtiLgBqy2K0QiEWkQDLqAcuPZm1xQ+YOIt31bXfG9Z+WFfT4GfxXbHBpxQOhQJ0/POt5zwRcCAN0sdeQ0fil51h2V0vnbgBOqwEqEa+9wydC7+WxLo/WJeQcHq1v4vEpHlmNTp/GmJIgmlROLvRfG07azK/BdlFRWSau5TTEEnD2Qiwq+lP1uz0VhGHOccj5i/JL814YCvnD20A2kmLb3qQ6oaY3FMa+5xWrM7X3YSYnX6BJh+KpEBhfq2sXn56n3gHLSdeE76Xj3eUCR3CxbzQDPBblmeTDqZRAmRabIyD7MVHHrnwJ3sFXVlVeRZyYWu8oMCgDDX4bTO4ciAy2Lu1WMXxgfsQKzi5ET9xGvTC9LrsxMav8cpSzQVG2m9bCAo8p8ygQIusX4hC6AVBoruzphakJ482p6nb+31bnLKLWBoGO69gHVbgZrWFSlsn7vjmK37Ihki6f7j7h0mwcKUyQpfEHSF6zzLgwKhFKM7FpsH8boXZNTC+GOz8fP63R6K3dbYTIO/qU6mD4CFWC60s/EiewSgOaAr/hC2UhmYhMxDYDeTdehOi7kTJEtDsDDp1brczGa1TH/Vlogq/1zvXOvsMxozL6aR4QoCNYbwVZyNKWWW1b+/uk7x5Z9YZ2WGL1WO+BArQwse3zt5AExFGiRSVuVvj8KWr2OJ7TZWnil+Ctsi8JxyBEzlfRmhmKk2jw+cY1gZURCExqXxQ==
X-Forefront-Antispam-Report:
	CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230031)(4636009)(376002)(136003)(396003)(39860400002)(346002)(230922051799003)(1800799012)(451199024)(186009)(64100799003)(82310400011)(40470700004)(36840700001)(46966006)(82740400003)(6916009)(70586007)(86362001)(36860700001)(356005)(47076005)(81166007)(70206006)(16526019)(6666004)(26005)(2616005)(1076003)(7696005)(426003)(336012)(5660300002)(7416002)(2906002)(36756003)(478600001)(83380400001)(54906003)(316002)(8936002)(8676002)(4326008)(40460700003)(40480700001)(41300700001)(36900700001);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Jan 2024 07:10:02.9165
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 7d409d16-f7fe-4b58-e408-08dc0dbd566d
X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com]
X-MS-Exchange-CrossTenant-AuthSource:
	SA2PEPF000015CC.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY5PR12MB4275

In PVH dom0, it uses the linux local interrupt mechanism,
when it allocs irq for a gsi, it is dynamic, and follow
the principle of applying first, distributing first. And
the irq number is alloced from small to large, but the
applying gsi number is not, may gsi 38 comes before gsi
28, that causes the irq number is not equal with the gsi
number. And when passthrough a device, xl wants to use
gsi to map pirq, see pci_add_dm_done->xc_physdev_map_pirq,
but the gsi number is got from file
/sys/bus/pci/devices/<sbdf>/irq in current code, so it
will fail when mapping.

So, use real gsi number read from gsi sysfs.

Co-developed-by: Huang Rui <ray.huang@amd.com>
Signed-off-by: Jiqian Chen <Jiqian.Chen@amd.com>
---
 tools/libs/light/libxl_pci.c | 15 +++++++++++++--
 1 file changed, 13 insertions(+), 2 deletions(-)

diff --git a/tools/libs/light/libxl_pci.c b/tools/libs/light/libxl_pci.c
index e1341d1e9850..ab51dc099725 100644
--- a/tools/libs/light/libxl_pci.c
+++ b/tools/libs/light/libxl_pci.c
@@ -1479,8 +1479,14 @@ static void pci_add_dm_done(libxl__egc *egc,
     fclose(f);
     if (!pci_supp_legacy_irq())
         goto out_no_irq;
-    sysfs_path = GCSPRINTF(SYSFS_PCI_DEV"/"PCI_BDF"/irq", pci->domain,
+    sysfs_path = GCSPRINTF(SYSFS_PCI_DEV"/"PCI_BDF"/gsi", pci->domain,
                                 pci->bus, pci->dev, pci->func);
+
+    if (access(sysfs_path, F_OK) != 0) {
+        sysfs_path = GCSPRINTF(SYSFS_PCI_DEV"/"PCI_BDF"/irq", pci->domain,
+                                pci->bus, pci->dev, pci->func);
+    }
+
     f = fopen(sysfs_path, "r");
     if (f == NULL) {
         LOGED(ERROR, domainid, "Couldn't open %s", sysfs_path);
@@ -2231,9 +2237,14 @@ skip_bar:
     if (!pci_supp_legacy_irq())
         goto skip_legacy_irq;
 
-    sysfs_path = GCSPRINTF(SYSFS_PCI_DEV"/"PCI_BDF"/irq", pci->domain,
+    sysfs_path = GCSPRINTF(SYSFS_PCI_DEV"/"PCI_BDF"/gsi", pci->domain,
                            pci->bus, pci->dev, pci->func);
 
+    if (access(sysfs_path, F_OK) != 0) {
+        sysfs_path = GCSPRINTF(SYSFS_PCI_DEV"/"PCI_BDF"/irq", pci->domain,
+                           pci->bus, pci->dev, pci->func);
+    }
+
     f = fopen(sysfs_path, "r");
     if (f == NULL) {
         LOGED(ERROR, domid, "Couldn't open %s", sysfs_path);
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Fri Jan 05 07:19:52 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 05 Jan 2024 07:19:52 +0000
Received: from list by lists.xenproject.org with outflank-mailman.662010.1031903 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLeUf-0005sG-KF; Fri, 05 Jan 2024 07:19:49 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 662010.1031903; Fri, 05 Jan 2024 07:19:49 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLeUf-0005s9-Fe; Fri, 05 Jan 2024 07:19:49 +0000
Received: by outflank-mailman (input) for mailman id 662010;
 Fri, 05 Jan 2024 07:19:47 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=YI+5=IP=amd.com=Jiqian.Chen@srs-se1.protection.inumbo.net>)
 id 1rLeUd-0005rx-Ji
 for xen-devel@lists.xenproject.org; Fri, 05 Jan 2024 07:19:47 +0000
Received: from NAM10-BN7-obe.outbound.protection.outlook.com
 (mail-bn7nam10on20601.outbound.protection.outlook.com
 [2a01:111:f403:2009::601])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id cd2b13b5-ab9a-11ee-98ef-6d05b1d4d9a1;
 Fri, 05 Jan 2024 08:19:46 +0100 (CET)
Received: from MN2PR03CA0030.namprd03.prod.outlook.com (2603:10b6:208:23a::35)
 by SA1PR12MB8988.namprd12.prod.outlook.com (2603:10b6:806:38e::22)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7159.16; Fri, 5 Jan
 2024 07:19:42 +0000
Received: from MN1PEPF0000ECD8.namprd02.prod.outlook.com
 (2603:10b6:208:23a:cafe::53) by MN2PR03CA0030.outlook.office365.com
 (2603:10b6:208:23a::35) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7159.15 via Frontend
 Transport; Fri, 5 Jan 2024 07:19:42 +0000
Received: from SATLEXMB04.amd.com (165.204.84.17) by
 MN1PEPF0000ECD8.mail.protection.outlook.com (10.167.242.137) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.7159.9 via Frontend Transport; Fri, 5 Jan 2024 07:19:41 +0000
Received: from cjq-desktop.amd.com (10.180.168.240) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.34; Fri, 5 Jan
 2024 01:19:38 -0600
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: cd2b13b5-ab9a-11ee-98ef-6d05b1d4d9a1
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=CTAuZ/j+nsgq9fmtMqNnLUXRIy8V/hZOzfv1AChxlmmzo8jFULZ0tIsqZdRtzQ0tWTUiLGmJ0Qao2Tr8tY1Yk00mVCuRyki3W/6W0LAzqa0Oqvf4zdOEHeiZAB1Vgr8zaePThIOI1HMuEhAaqvrVNvh6+Fsu6xxIOqp+6c3DiT/Lbx5fOzO/HOLgf4tibqu/gFn7Q9SVJBqRbc+vmppzA12WYyHVT9FhYyxEHsPnHFijNFHj+jTRud/wH93/4INGVJy2vwN5X/MBwmYVvhEFp1AUs4RjpXNIUZacFU7S7xosMBOmcd3SXZCcZY6FdAQ6Wx0bhUYJScuJZIK3vb7qHw==
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=kYi3Wyegxmzc7EKOM+Ed9WYPUa0D9CsuJMsABf608SM=;
 b=eHQb57cVcUebcD9RgcrPksj1fhwtYaHl0ggtRTmp3ivI1FQ7AsxpHqFwqgWeGzLBTjO6dj72pLeEXe0dktr/fMcpAeG2ingPLixWEdfrU2mEs1aXgHmH9LzAj5VD2LZ3wuF3GN+ENox7U5kCcnZFxnoI75WWdT9m6ybovPq5+LLwlCop+euR7V/yKUy6SVLy9RwJjvWt2yadym6Lnb5Taa63QDL8UvcDV/G1GShxuDbIbBgxDzew2f/LERvlUPAHzNFNN+cL9s5TBVjUdah7eDGxUFbl5HZeVReRku5sVG1i/yr2xRDAnrhhIV9aFfwzPVyyANeSBk1B9HMzaJseXg==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=nongnu.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)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=kYi3Wyegxmzc7EKOM+Ed9WYPUa0D9CsuJMsABf608SM=;
 b=nKVzNrI91PjbWfEFjtKKOXlHP9AxxQ1sfsiEgCJuGkpTb9B7v5m+8AGu9AQwBINCZc5EXgGZi6TFGvLEcw6/xA5TB5mOhRRXPnAPWWrPdM0tDvxe/mjohgGBISSMRE2rbxoOyEAC5/2cQcOt3cDfUm9PwWE2bsqq2O8znn13CWo=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C
From: Jiqian Chen <Jiqian.Chen@amd.com>
To: <qemu-devel@nongnu.org>
CC: Stefano Stabellini <sstabellini@kernel.org>, Anthony Perard
	<anthony.perard@citrix.com>, Paul Durrant <paul@xen.org>,
	<xen-devel@lists.xenproject.org>, Huang Rui <Ray.Huang@amd.com>, Jiqian Chen
	<Jiqian.Chen@amd.com>, Huang Rui <ray.huang@amd.com>
Subject: [RFC QEMU PATCH v4 1/1] xen: Use gsi instead of irq for mapping pirq
Date: Fri, 5 Jan 2024 15:19:19 +0800
Message-ID: <20240105071919.350397-2-Jiqian.Chen@amd.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20240105071919.350397-1-Jiqian.Chen@amd.com>
References: <20240105071919.350397-1-Jiqian.Chen@amd.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-Originating-IP: [10.180.168.240]
X-ClientProxiedBy: SATLEXMB04.amd.com (10.181.40.145) To SATLEXMB04.amd.com
 (10.181.40.145)
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: MN1PEPF0000ECD8:EE_|SA1PR12MB8988:EE_
X-MS-Office365-Filtering-Correlation-Id: 6a048163-0ff8-4cad-2bb6-08dc0dbeaf80
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam: BCL:0;
X-Microsoft-Antispam-Message-Info:
	EQ11ChwosA938dS1k/ZPrzlGzTmF233umkMGTawenNS+fSeLg2QCaW24R29sRr1IHldgXrJOMirYKWhPGoPJo+ZIg8AKQIfhgqW1iRAuQjL0pomfP83BBVxEX6u0TW9Q6qOnzNwW3jkLoyjX3SwoRbfudBMJzFgpEqE/Zi79XsaYd2u6igL3ot8ZWcmtiVrTUPwrf1qrHbmRkMmElljKKNoAnmX4aDMO9XCGeoPvRd7BWtwR9qMdpNcAxyMJcW/mTUKW1SsWuwfd3HMrGjkaRko7SGWSkLZyayiBAKZs2e3UeuCBh6aQnvGECc7yXJgua/Va14hzGDHnC3eILaX8t86Lr/wT8H2m+TKn2Lw4OcoBiUZdgukrcCM58y5V/2xvFVAO59/Dc4iH2/Hje2UUVrWX6p3uBq3TdjgaYem+N4O7lKrOCNKRwa8stbg0A8OGfMxMSAiR3WWAYpqhN43bjB6nLmzAcKHNY1D0duEEHtytYzjoyxM22SGU0Wk0JU36GJuIAku8YjUPsf7XDnQP9/wcMVnC3ypg19r46iCrz4DYAOZPz6CLFKMylrZ2ZoDcQ5P+erIaDpYhPLb4U54xORkORdfdwBZAEw66nCX/UnXrVR/GEGFtRYArTgniLqnz2S3M+4CjOn+haJj3ewWz+XZtvQLUDSZUEtLI5Fv42y20XLDH933Qqxw362MYaHajWz1rCBzYo+kjIR9onPzFD9JGhgn1MasZXDlgi/p+oSrpyLdaoHw06Ky+2u4zg5OhzaIvghTpSY8Yd4H9Xc6aLg==
X-Forefront-Antispam-Report:
	CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230031)(4636009)(39860400002)(346002)(396003)(376002)(136003)(230922051799003)(82310400011)(451199024)(186009)(1800799012)(64100799003)(40470700004)(36840700001)(46966006)(40460700003)(40480700001)(2616005)(426003)(26005)(1076003)(336012)(7696005)(6666004)(478600001)(82740400003)(86362001)(36756003)(81166007)(356005)(2906002)(41300700001)(36860700001)(47076005)(16526019)(83380400001)(6916009)(70586007)(54906003)(316002)(70206006)(5660300002)(4326008)(8936002)(8676002)(36900700001);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Jan 2024 07:19:41.3971
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 6a048163-0ff8-4cad-2bb6-08dc0dbeaf80
X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com]
X-MS-Exchange-CrossTenant-AuthSource:
	MN1PEPF0000ECD8.namprd02.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA1PR12MB8988

In PVH dom0, it uses the linux local interrupt mechanism,
when it allocs irq for a gsi, it is dynamic, and follow
the principle of applying first, distributing first. And
the irq number is alloced from small to large, but the
applying gsi number is not, may gsi 38 comes before gsi
28, that causes the irq number is not equal with the gsi
number. And when passthrough a device, qemu wants to use
gsi to map pirq, xen_pt_realize->xc_physdev_map_pirq, but
the gsi number is got from file
/sys/bus/pci/devices/<sbdf>/irq in current code, so it
will fail when mapping.

Add gsi into XenHostPCIDevice and use gsi number that
read from gsi sysfs if it exists.

Co-developed-by: Huang Rui <ray.huang@amd.com>
Signed-off-by: Jiqian Chen <Jiqian.Chen@amd.com>
---
 hw/xen/xen-host-pci-device.c | 7 +++++++
 hw/xen/xen-host-pci-device.h | 1 +
 hw/xen/xen_pt.c              | 6 +++++-
 3 files changed, 13 insertions(+), 1 deletion(-)

diff --git a/hw/xen/xen-host-pci-device.c b/hw/xen/xen-host-pci-device.c
index 8c6e9a1716a2..5be3279aa25b 100644
--- a/hw/xen/xen-host-pci-device.c
+++ b/hw/xen/xen-host-pci-device.c
@@ -370,6 +370,13 @@ void xen_host_pci_device_get(XenHostPCIDevice *d, uint16_t domain,
     }
     d->irq = v;
 
+    xen_host_pci_get_dec_value(d, "gsi", &v, errp);
+    if (*errp) {
+        d->gsi = -1;
+    } else {
+        d->gsi = v;
+    }
+
     xen_host_pci_get_hex_value(d, "class", &v, errp);
     if (*errp) {
         goto error;
diff --git a/hw/xen/xen-host-pci-device.h b/hw/xen/xen-host-pci-device.h
index 4d8d34ecb024..74c552bb5548 100644
--- a/hw/xen/xen-host-pci-device.h
+++ b/hw/xen/xen-host-pci-device.h
@@ -27,6 +27,7 @@ typedef struct XenHostPCIDevice {
     uint16_t device_id;
     uint32_t class_code;
     int irq;
+    int gsi;
 
     XenHostPCIIORegion io_regions[PCI_NUM_REGIONS - 1];
     XenHostPCIIORegion rom;
diff --git a/hw/xen/xen_pt.c b/hw/xen/xen_pt.c
index 36e6f93c372f..d448f3a17306 100644
--- a/hw/xen/xen_pt.c
+++ b/hw/xen/xen_pt.c
@@ -839,7 +839,11 @@ static void xen_pt_realize(PCIDevice *d, Error **errp)
         goto out;
     }
 
-    machine_irq = s->real_device.irq;
+    if (s->real_device.gsi < 0) {
+        machine_irq = s->real_device.irq;
+    } else {
+        machine_irq = s->real_device.gsi;
+    }
     if (machine_irq == 0) {
         XEN_PT_LOG(d, "machine irq is 0\n");
         cmd |= PCI_COMMAND_INTX_DISABLE;
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Fri Jan 05 07:19:52 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 05 Jan 2024 07:19:52 +0000
Received: from list by lists.xenproject.org with outflank-mailman.662011.1031907 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLeUf-0005vj-SU; Fri, 05 Jan 2024 07:19:49 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 662011.1031907; Fri, 05 Jan 2024 07:19:49 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLeUf-0005vT-OM; Fri, 05 Jan 2024 07:19:49 +0000
Received: by outflank-mailman (input) for mailman id 662011;
 Fri, 05 Jan 2024 07:19:48 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=YI+5=IP=amd.com=Jiqian.Chen@srs-se1.protection.inumbo.net>)
 id 1rLeUe-0005s3-Jf
 for xen-devel@lists.xenproject.org; Fri, 05 Jan 2024 07:19:48 +0000
Received: from NAM11-BN8-obe.outbound.protection.outlook.com
 (mail-bn8nam11on20601.outbound.protection.outlook.com
 [2a01:111:f400:7eae::601])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id cd54d8e7-ab9a-11ee-9b0f-b553b5be7939;
 Fri, 05 Jan 2024 08:19:46 +0100 (CET)
Received: from MN2PR14CA0005.namprd14.prod.outlook.com (2603:10b6:208:23e::10)
 by DS0PR12MB8454.namprd12.prod.outlook.com (2603:10b6:8:15e::10) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7159.17; Fri, 5 Jan
 2024 07:19:39 +0000
Received: from MN1PEPF0000ECDA.namprd02.prod.outlook.com
 (2603:10b6:208:23e:cafe::ba) by MN2PR14CA0005.outlook.office365.com
 (2603:10b6:208:23e::10) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7159.16 via Frontend
 Transport; Fri, 5 Jan 2024 07:19:39 +0000
Received: from SATLEXMB04.amd.com (165.204.84.17) by
 MN1PEPF0000ECDA.mail.protection.outlook.com (10.167.242.134) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.7159.9 via Frontend Transport; Fri, 5 Jan 2024 07:19:39 +0000
Received: from cjq-desktop.amd.com (10.180.168.240) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.34; Fri, 5 Jan
 2024 01:19:36 -0600
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: cd54d8e7-ab9a-11ee-9b0f-b553b5be7939
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=iCMubhsKVTGWjk7XzJD7vuG4lnQHNzd+yQK4N2VDpvHkw1K41CeYmaXE8o+4cfZGxytkLDCmq011/wgj8GYdraTfgWUXAihXwQRiL7fIsCgj6eDf5XVi9mifjXHjL64sFPtIVL7uJ0b0OKkAb7FQaq/SanAo0ZkSYKQ4AXb4NXMJE1g4CuotpDwKj3vXeZh0aV5gy9epgz2T2ManZU2vm79xVOrc1Th41LEI3QDB1Rm7IoVfDDJvZy8f0j881TrjYuai1Imq3tao2Hwuvmrc6eTgtJM4KSRFllFsd0UoqfR77cJnM/IIdGP8KnSZ6ddXPsGC00WIpNyay6gQut4HQw==
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=Q0roh1gGW/4i+nfz8YP4YEt9OMHF9n0XqY0kXBc4kSA=;
 b=ZqDyeAfqpOKIg7/yfcHypvLl/tr78HISnODcYZ/telHtPoGPs2GgnQBSBNXlXPs+8+BJw1EuI7ejOn/kIU5nEEn5DeEND5E0w4maxYegQlYrkHjwWmCp9QAnAu2T329Y6IEuAdVRHx2S3jpOJzmqM9MgHK833LmHKKm84xQNXiMAOU743K+flRY1J8QzG/cvXg4SXpiKAzHxpX2VqqefOjCL6BhRv+KRsGAsTbgOxYRX+BHMzSJmXLPExl1U68oFb2/byfOEJQ45f9BhUYaQlyh5m9kujV7tM2YWki2nEIMaDhZQ4c897fer90EGdAWQOdRl3J3g3nkj/CpYF/ObGA==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=nongnu.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)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=Q0roh1gGW/4i+nfz8YP4YEt9OMHF9n0XqY0kXBc4kSA=;
 b=ZuLR7ZNOOqGHUgQlpt9s9ekdI521mJxg7m43R5qApXPXgCW5DtxSX9Qqg2pzJbny7asri5oDJD1H15xEVNJNdocdgYmbBE08MpXhs1DcMG4nZlkgN1tEZx3jG9zh4J8sFvRtndNxdRZjVDjulS6NgWi4QBdcrwyvg4PefrY+Zeg=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C
From: Jiqian Chen <Jiqian.Chen@amd.com>
To: <qemu-devel@nongnu.org>
CC: Stefano Stabellini <sstabellini@kernel.org>, Anthony Perard
	<anthony.perard@citrix.com>, Paul Durrant <paul@xen.org>,
	<xen-devel@lists.xenproject.org>, Huang Rui <Ray.Huang@amd.com>, Jiqian Chen
	<Jiqian.Chen@amd.com>
Subject: [RFC QEMU PATCH v4 0/1] Support device passthrough when dom0 is PVH on Xen
Date: Fri, 5 Jan 2024 15:19:18 +0800
Message-ID: <20240105071919.350397-1-Jiqian.Chen@amd.com>
X-Mailer: git-send-email 2.34.1
MIME-Version: 1.0
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
X-Originating-IP: [10.180.168.240]
X-ClientProxiedBy: SATLEXMB04.amd.com (10.181.40.145) To SATLEXMB04.amd.com
 (10.181.40.145)
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: MN1PEPF0000ECDA:EE_|DS0PR12MB8454:EE_
X-MS-Office365-Filtering-Correlation-Id: 64f4f821-16eb-4066-fe90-08dc0dbeade0
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam: BCL:0;
X-Microsoft-Antispam-Message-Info:
	4pu6y3uRf6JmFpwgnHSbcGaZoY3IQb55qfu49/0cso6ugDlpVj8rkmS9WwgUzDbbEduqCK44KsvtIGdBQIE+sODZrGHEv2fGxbM3TG2RDpicbZ6eajvOjLHO/XI1vk0hcnG0Ojr9LS9vURu0+0MhAic3G/bPDmSnA/6m3jqjHFbqFOzB/D/gTyUSGIwcaWCuDlGzgpvICV8l+AfaEGXpMJTIuA5LrHvffNd5hkTGYnpKpNYQdpwYZTOnM4Xn9jg0hCIyUpkuO4YZqCzKRY6LSfaD3ZVAXEUfcwRI/0MaydQOxRzvC8rapBTrHalrME6/8UXasVm4FsW0Y9S+oQvCX8TdLkaji/iFr6d36JifUsygW+mrYgaJKEWGfD+oR8wJLaPhBjgkvYZsysuCAbDtoQ23XvHrc+2+F/x9djLr1HriJZubH+hrvxOUj3nl4RFyrE1bK+Ato5sg38x9lyIp+fTOF1IWHi/46gQd/kKT3lAGlxbR8I9gK4/R3n7uyWKTXGkJrTGEn37xQXI3OZtEtrOt6igQQu4WKPMkc8sD7tZQyqp4a3XUC3qXvhs6vtd/kdfTSRG02NjWUXZJCBLz2xXlxIDGcWebuEOQaAW+F2KnH0CkIsVyjlLAXj+alFzujKwl1p3PBWH3leNzKdNZlWkfpjGX7R0DLIPgkeV1uhwyqUdrFCcMg9pD6TfYmseipu16C+G/nXdNSfXxiakd5Ju8FGopo424J0jAsqngdN7uRf7sRD1ZZnotGbhwI31h
X-Forefront-Antispam-Report:
	CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230031)(4636009)(376002)(346002)(396003)(136003)(39860400002)(230922051799003)(451199024)(1800799012)(82310400011)(64100799003)(186009)(40470700004)(46966006)(36840700001)(83380400001)(16526019)(1076003)(336012)(426003)(26005)(2616005)(82740400003)(47076005)(36860700001)(8676002)(8936002)(4326008)(5660300002)(2906002)(966005)(6666004)(7696005)(478600001)(6916009)(54906003)(316002)(70206006)(70586007)(41300700001)(36756003)(356005)(81166007)(86362001)(40480700001)(40460700003)(36900700001);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Jan 2024 07:19:39.1449
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 64f4f821-16eb-4066-fe90-08dc0dbeade0
X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com]
X-MS-Exchange-CrossTenant-AuthSource:
	MN1PEPF0000ECDA.namprd02.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS0PR12MB8454

Hi All,
This is v4 series to support passthrough on Xen when dom0 is PVH.
v3->v4 changes:
* Add gsi into struct XenHostPCIDevice and use gsi number that read from gsi sysfs if it exists, if there is no gsi sysfs, still use irq.

v2->v3 changes:
* du to changes in the implementation of the second patch on kernel side(that adds a new sysfs for gsi instead of a new syscall), so read gsi number from the sysfs of gsi.

Below is the description of v2 cover letter:
This patch is the v2 of the implementation of passthrough when dom0 is PVH on Xen.
Issues we encountered:
1. failed to map pirq for gsi
Problem: qemu will call xc_physdev_map_pirq() to map a passthrough device’s gsi to pirq in function xen_pt_realize(). But failed.

Reason: According to the implement of xc_physdev_map_pirq(), it needs gsi instead of irq, but qemu pass irq to it and treat irq as gsi, it is got from file /sys/bus/pci/devices/xxxx:xx:xx.x/irq in function xen_host_pci_device_get(). But actually the gsi number is not equal with irq. On PVH dom0, when it allocates irq for a gsi in function acpi_register_gsi_ioapic(), allocation is dynamic, and follow the principle of applying first, distributing first. And if you debug the kernel codes(see function __irq_alloc_descs), you will find the irq number is allocated from small to large by order, but the applying gsi number is not, gsi 38 may come before gsi 28, that causes gsi 38 get a smaller irq number than gsi 28, and then gsi != irq.

Solution: we can record the relation between gsi and irq, then when userspace(qemu) want to use gsi, we can do a translation. The third patch of kernel(xen/privcmd: Add new syscall to get gsi from irq) records all the relations in acpi_register_gsi_xen_pvh() when dom0 initialize pci devices, and provide a syscall for userspace to get the gsi from irq. The third patch of xen(tools: Add new function to get gsi from irq) add a new function xc_physdev_gsi_from_irq() to call the new syscall added on kernel side.
And then userspace can use that function to get gsi. Then xc_physdev_map_pirq() will success.

This v2 on qemu side is the same as the v1 ( qemu https://lore.kernel.org/xen-devel/20230312092244.451465-19-ray.huang@amd.com/), just call
xc_physdev_gsi_from_irq() to get gsi from irq.

Jiqian Chen (1):
  xen: Use gsi instead of irq for mapping pirq

 hw/xen/xen-host-pci-device.c | 7 +++++++
 hw/xen/xen-host-pci-device.h | 1 +
 hw/xen/xen_pt.c              | 6 +++++-
 3 files changed, 13 insertions(+), 1 deletion(-)

-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Fri Jan 05 07:33:46 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 05 Jan 2024 07:33:46 +0000
Received: from list by lists.xenproject.org with outflank-mailman.662020.1031922 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLei4-0002Qz-7g; Fri, 05 Jan 2024 07:33:40 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 662020.1031922; Fri, 05 Jan 2024 07:33:40 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLei4-0002Qs-4U; Fri, 05 Jan 2024 07:33:40 +0000
Received: by outflank-mailman (input) for mailman id 662020;
 Fri, 05 Jan 2024 07:33:38 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=nS5B=IP=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rLei2-0002Qc-KT
 for xen-devel@lists.xenproject.org; Fri, 05 Jan 2024 07:33:38 +0000
Received: from mail-lj1-x232.google.com (mail-lj1-x232.google.com
 [2a00:1450:4864:20::232])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id bc26970a-ab9c-11ee-9b0f-b553b5be7939;
 Fri, 05 Jan 2024 08:33:35 +0100 (CET)
Received: by mail-lj1-x232.google.com with SMTP id
 38308e7fff4ca-2cd1eac006eso14085131fa.3
 for <xen-devel@lists.xenproject.org>; Thu, 04 Jan 2024 23:33:36 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 l22-20020a02ccf6000000b0046cd8bac20dsm282558jaq.12.2024.01.04.23.33.34
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 04 Jan 2024 23:33:35 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: bc26970a-ab9c-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1704440015; x=1705044815; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=43C2VMZ7ZAef5DrhPf+e+832iGWRVsljEjo0BGopKRA=;
        b=dGQmBOZlg5x9inouGfcJzolZOR1/r+DeXSy3rJfR2PFdPdV65IuguX9SlZyOKyhJaV
         i6HSHBwbQ6/D7qInsB24WXQnMoTdFrPVm7612BegIUwX+z95U4G19oue5PGf5EQdyN9o
         1ELtxdyyaaUusCqydJJPhDPeoztnvopzChdDUQZt0Ag1T5DECCNm+fz2njJhn6DzYVAr
         C+TxEHDgFBnlDy/sOzZg8C67IB5CdzgeJiO/haoGSkUkIR3r0j7Ha8EjqcYXfYgrKBBf
         r4MlF1aJQIYH9LqomshU2ZPkoNekgEJPAI9Kl961Ig23AfxgTMy1bvMIXwQqMtsZPZx2
         X+vQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704440015; x=1705044815;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=43C2VMZ7ZAef5DrhPf+e+832iGWRVsljEjo0BGopKRA=;
        b=TjB7jOoNsS4euIhhdIY9egr90MnkzbkXv3/bEeA2nCUNCSTzyi/teUWLfG6g/gppnw
         8/bdOi2CuP60AgvN0pXJ0KPwhgiFQcrU5lXA3v/8nzWJV32R/nmSHPBK2jWwTKnuARhw
         Cl/opng8lD3fBOoXkBdXJDm35Q7koHaqg78azEwSNxAIiT8i6EVkS9hLmOcFIHsJa73L
         aspFcJhQCu/KP8B0VZiz4pkYIWcvLLISp8dFJacsr50Ot9K05/Otk9OW4IPWbf+YYW76
         H0CRTNjUCObDBuPJBN9JrmvrVqL2+wEfh17UA3PhbdrAyvbgzUQb4QkyMVlFnwHOl6Cn
         9wgw==
X-Gm-Message-State: AOJu0YwqLyVJpGQt4Dx3dg/2Rbhj8CKVlck8EEc7D/oYjsZ8mEdaGvCB
	lc3ECx37k4jLdA3UqkaodDooIHsw4ga5
X-Google-Smtp-Source: AGHT+IEej+bw87r008nXU4E5tGcezvoPLbvJxqyqpEyoWZb41RLFuk0SeIl97RHqr+SkSfZtKkG0yg==
X-Received: by 2002:a05:6512:220f:b0:50e:76b2:6c6a with SMTP id h15-20020a056512220f00b0050e76b26c6amr709701lfu.148.1704440015566;
        Thu, 04 Jan 2024 23:33:35 -0800 (PST)
Message-ID: <ba53053f-a2c6-4e4f-a805-4d60970bae39@suse.com>
Date: Fri, 5 Jan 2024 08:33:32 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] x86/mwait-idle: fix ubsan warning
Content-Language: en-US
To: Tamas K Lengyel <tamas.lengyel@intel.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 xen-devel@lists.xenproject.org, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger.pau@citrix.com>, Wei Liu <wl@xen.org>
References: <f0ac3890b5e2e1e98bfd3fe5fffcf3c3c031e12c.1704388276.git.tamas.lengyel@intel.com>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <f0ac3890b5e2e1e98bfd3fe5fffcf3c3c031e12c.1704388276.git.tamas.lengyel@intel.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 04.01.2024 18:13, Tamas K Lengyel wrote:
> Fix warning:
> (XEN) UBSAN: Undefined behaviour in arch/x86/cpu/mwait-idle.c:1300:44
> (XEN) left shift of 15 by 28 places cannot be represented in type 'int'
> 
> Signed-off-by: Tamas K Lengyel <tamas.lengyel@intel.com>
> Fixes: 5a211704e88 ("mwait-idle: prevent SKL-H boot failure when C8+C9+C10 enabled")

No matter that I appreciate the change, I think this wants fixing by a
patch to the (Linux) original, which we'd then import (like we do for
other changes, including the one referenced by the Fixes: tag).

Jan



From xen-devel-bounces@lists.xenproject.org Fri Jan 05 07:36:37 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 05 Jan 2024 07:36:37 +0000
Received: from list by lists.xenproject.org with outflank-mailman.662023.1031932 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLekr-0003dl-JD; Fri, 05 Jan 2024 07:36:33 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 662023.1031932; Fri, 05 Jan 2024 07:36:33 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLekr-0003de-FR; Fri, 05 Jan 2024 07:36:33 +0000
Received: by outflank-mailman (input) for mailman id 662023;
 Fri, 05 Jan 2024 07:36:32 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=nS5B=IP=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rLekq-0003dV-Hk
 for xen-devel@lists.xenproject.org; Fri, 05 Jan 2024 07:36:32 +0000
Received: from mail-lj1-x22f.google.com (mail-lj1-x22f.google.com
 [2a00:1450:4864:20::22f])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 2426c70b-ab9d-11ee-9b0f-b553b5be7939;
 Fri, 05 Jan 2024 08:36:30 +0100 (CET)
Received: by mail-lj1-x22f.google.com with SMTP id
 38308e7fff4ca-2ccbbb5eb77so15677931fa.2
 for <xen-devel@lists.xenproject.org>; Thu, 04 Jan 2024 23:36:30 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 cx18-20020a056638491200b0046dbee1478csm291775jab.31.2024.01.04.23.36.27
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 04 Jan 2024 23:36:29 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 2426c70b-ab9d-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1704440190; x=1705044990; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=EwFpg5TZAplEfnIVtLS/IoAFhBpQn7Byi+4swrnZL5w=;
        b=L0aSgWnFodKf2t2h59Hg+fsBT8dzZXa/jTNKQbte9XKKYV2vxrC4YBQdltOKwRXcyc
         Xn0YMe+oxDWYWcLHge5YHahjSQMg87UG/yzBHycsHLSquHRGymzrKRgGq/6l/y4HKhrP
         3qN/1FwDI6618fL+l5I+dmb1op5tiXowAUlmfQNoFLLZmygwwsFdqA5NIlBcpYJ/wKK0
         ChARsxmAgrwT/uh2Psw81+rSDPQYbEAfolQwtTO1yTbfq8D3sIsVcE20DIsKXAi/+KnB
         flsvICAyghGsMr/Yk67jlhoP/J0dHF68IapzTtQI05Y/9LltNHkSQZAUZEUTHMgWQXtN
         saeg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704440190; x=1705044990;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=EwFpg5TZAplEfnIVtLS/IoAFhBpQn7Byi+4swrnZL5w=;
        b=tLdhyc3kJ22oVimwA3QPeo9U1/l3AGTjjbSFbtLYVmUhI5Wgrax3/z2gc1safgPmOi
         dqnuvRFBfUvvej+90gnU7Zlny2tbRbHpkN28t5Xi6fG91Luuz3sg9kQFIEwSrckOOXiV
         49WodjYNobk8l6gXKDbLAqUTMbwJsDwBxdinG1fbtqLgopViaKMx4IFY87teBaVkb8pF
         9X013WOAwTuWeLv2oHaQSC5KkBvicjv8Iv/c3r5jtOxD4MqfUibdisdDm9yLadbvdeOy
         FlEXjwHK2Jk0OmxDZ6w8x/ubPf0viUffi3S9xpVHFIyOujjAi/0zQ/Ptyw3jVmr14MSY
         vtug==
X-Gm-Message-State: AOJu0YxAWMBQ9UkKmTmsCPi702zCl1VX5lNo/xD6Wpu6MuXgVZNZU6Ey
	urLI+ELTWelV2PncDHo8k8sAwdEU0YO94UCt3H/ht0L6mg==
X-Google-Smtp-Source: AGHT+IHZTKqnxAQhZQM2m+lfbj7XfXSO4SxUpsy4tlYQdcaC34XR/3JA5GJtEF3QYZ6nkfpF7YiWPQ==
X-Received: by 2002:a2e:b70f:0:b0:2cc:d030:1557 with SMTP id j15-20020a2eb70f000000b002ccd0301557mr948663ljo.107.1704440190164;
        Thu, 04 Jan 2024 23:36:30 -0800 (PST)
Message-ID: <7cea57a4-c3e6-4f50-be45-e71c50097d19@suse.com>
Date: Fri, 5 Jan 2024 08:36:26 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [RFC XEN PATCH v4 5/5] libxl: Use gsi instead of irq for mapping
 pirq
Content-Language: en-US
To: Jiqian Chen <Jiqian.Chen@amd.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>, Wei Liu
 <wl@xen.org>, George Dunlap <george.dunlap@citrix.com>,
 Julien Grall <julien@xen.org>, Stefano Stabellini <sstabellini@kernel.org>,
 Anthony PERARD <anthony.perard@citrix.com>, Juergen Gross <jgross@suse.com>,
 Stewart Hildebrand <Stewart.Hildebrand@amd.com>,
 Huang Rui <Ray.Huang@amd.com>, xen-devel@lists.xenproject.org
References: <20240105070920.350113-1-Jiqian.Chen@amd.com>
 <20240105070920.350113-6-Jiqian.Chen@amd.com>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <20240105070920.350113-6-Jiqian.Chen@amd.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 05.01.2024 08:09, Jiqian Chen wrote:
> --- a/tools/libs/light/libxl_pci.c
> +++ b/tools/libs/light/libxl_pci.c
> @@ -1479,8 +1479,14 @@ static void pci_add_dm_done(libxl__egc *egc,
>      fclose(f);
>      if (!pci_supp_legacy_irq())
>          goto out_no_irq;
> -    sysfs_path = GCSPRINTF(SYSFS_PCI_DEV"/"PCI_BDF"/irq", pci->domain,
> +    sysfs_path = GCSPRINTF(SYSFS_PCI_DEV"/"PCI_BDF"/gsi", pci->domain,
>                                  pci->bus, pci->dev, pci->func);
> +
> +    if (access(sysfs_path, F_OK) != 0) {

I suppose you want to also check errno, and fall back only when you got
back (I guess) ENOENT.

Jan

> +        sysfs_path = GCSPRINTF(SYSFS_PCI_DEV"/"PCI_BDF"/irq", pci->domain,
> +                                pci->bus, pci->dev, pci->func);
> +    }
> +
>      f = fopen(sysfs_path, "r");
>      if (f == NULL) {
>          LOGED(ERROR, domainid, "Couldn't open %s", sysfs_path);
> @@ -2231,9 +2237,14 @@ skip_bar:
>      if (!pci_supp_legacy_irq())
>          goto skip_legacy_irq;
>  
> -    sysfs_path = GCSPRINTF(SYSFS_PCI_DEV"/"PCI_BDF"/irq", pci->domain,
> +    sysfs_path = GCSPRINTF(SYSFS_PCI_DEV"/"PCI_BDF"/gsi", pci->domain,
>                             pci->bus, pci->dev, pci->func);
>  
> +    if (access(sysfs_path, F_OK) != 0) {
> +        sysfs_path = GCSPRINTF(SYSFS_PCI_DEV"/"PCI_BDF"/irq", pci->domain,
> +                           pci->bus, pci->dev, pci->func);
> +    }
> +
>      f = fopen(sysfs_path, "r");
>      if (f == NULL) {
>          LOGED(ERROR, domid, "Couldn't open %s", sysfs_path);



From xen-devel-bounces@lists.xenproject.org Fri Jan 05 08:00:06 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 05 Jan 2024 08:00:06 +0000
Received: from list by lists.xenproject.org with outflank-mailman.662028.1031942 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLf7V-0000hH-Fi; Fri, 05 Jan 2024 07:59:57 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 662028.1031942; Fri, 05 Jan 2024 07:59:57 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLf7V-0000hA-BH; Fri, 05 Jan 2024 07:59:57 +0000
Received: by outflank-mailman (input) for mailman id 662028;
 Fri, 05 Jan 2024 07:59:55 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=YI+5=IP=amd.com=Jiqian.Chen@srs-se1.protection.inumbo.net>)
 id 1rLf7T-0000h4-N8
 for xen-devel@lists.xenproject.org; Fri, 05 Jan 2024 07:59:55 +0000
Received: from NAM10-MW2-obe.outbound.protection.outlook.com
 (mail-mw2nam10on20600.outbound.protection.outlook.com
 [2a01:111:f403:2412::600])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 68341605-aba0-11ee-98ef-6d05b1d4d9a1;
 Fri, 05 Jan 2024 08:59:54 +0100 (CET)
Received: from BL1PR12MB5849.namprd12.prod.outlook.com (2603:10b6:208:384::18)
 by PH7PR12MB6719.namprd12.prod.outlook.com (2603:10b6:510:1b2::21)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7159.16; Fri, 5 Jan
 2024 07:59:48 +0000
Received: from BL1PR12MB5849.namprd12.prod.outlook.com
 ([fe80::969f:11b3:5ec2:3aa1]) by BL1PR12MB5849.namprd12.prod.outlook.com
 ([fe80::969f:11b3:5ec2:3aa1%3]) with mapi id 15.20.7159.013; Fri, 5 Jan 2024
 07:59:48 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 68341605-aba0-11ee-98ef-6d05b1d4d9a1
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=JHYbU86+BS3ltDxFcCT6wc4Rha33VAVxTRNgmdWB1vOeLQsxqhUYkxjGtbFTt5tPRfbkvjaimfKxf1qSq7QBP5cQyFplRo0MxOcMxx6yBhp01WpbXEoyImWGtaETjY7mG4hEHL1k/YTwkcTmw/V42gupnAB/0e3QNqix1fKG0Ih/3/jOPYEoP/3Dn51aHeSY+Wdz511DaEHJn3x0zLOQz5UaTpOG8tQ9hR7wNfkLDBct9hbVHq9b3oZT0G5WxNdlqPTNontRXA00clJNfz1ZOdgmOr9paS5CGJoa1t0f/UxKJbGwO8Ru8rWSNW60nmdRqPt0mDpV+JNWr+xUVuDRLQ==
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=UF2+6CmOgts5Jd5H1iy89Xf6TWMrLIQq6E3AzRzjjDo=;
 b=gva58OH4ULbJIbYnRcr2sggWasv+fgkCmy2d//KVTjS/6X12IAq5mmWJSg3lZiHTJvZURMA+ShcjuxmWVCsxkW2Li7A6l3WwwbLDgpiIviONpAVuGVDSSu5HVgX0Ev6YPBsngfP/dSSjPSMjYbIWKXRgQ/RStjwLMxZ/Ob46z6YAfdfO/EFVvIcwUOqF8wCNklTP75ezb3FvtJjJ5r3rY0vpkf6w41xTPjhhST29Q3L+TFKky2yc7/bWPrcKZWMiUX+SHdL8oOtQixYiQ3jhKaERxwqh9JgtIx3gDMo50rw3caayza2WmmiZjDI9YJIr1bLNZqbGHjH60M7KSzdYww==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=amd.com; dmarc=pass action=none header.from=amd.com; dkim=pass
 header.d=amd.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=UF2+6CmOgts5Jd5H1iy89Xf6TWMrLIQq6E3AzRzjjDo=;
 b=NZnfS7kd5wFzCNZdxFEdM78oT3awmQMc0jkUuAx7O454BO7Ty0qS/YUVQbXGjQFzqa9XQz1cPmpSdydIqK93P5Yuw3DF0aF857haTPL7j9QzJn3HH+hiEoPqE6ghMvrtTZkhM1I4lKYBhGUbmkF0ILOH0wV3rn9B8rW1EB6w1gI=
From: "Chen, Jiqian" <Jiqian.Chen@amd.com>
To: Jan Beulich <jbeulich@suse.com>
CC: Andrew Cooper <andrew.cooper3@citrix.com>,
	=?utf-8?B?Um9nZXIgUGF1IE1vbm7DqQ==?= <roger.pau@citrix.com>, Wei Liu
	<wl@xen.org>, George Dunlap <george.dunlap@citrix.com>, Julien Grall
	<julien@xen.org>, Stefano Stabellini <sstabellini@kernel.org>, Anthony PERARD
	<anthony.perard@citrix.com>, Juergen Gross <jgross@suse.com>, "Hildebrand,
 Stewart" <Stewart.Hildebrand@amd.com>, "Huang, Ray" <Ray.Huang@amd.com>,
	"xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>, "Chen,
 Jiqian" <Jiqian.Chen@amd.com>
Subject: Re: [RFC XEN PATCH v4 5/5] libxl: Use gsi instead of irq for mapping
 pirq
Thread-Topic: [RFC XEN PATCH v4 5/5] libxl: Use gsi instead of irq for mapping
 pirq
Thread-Index: AQHaP6Y3HXW6ZoMbT0+Rfz8pptyOwLDK1HoAgACMDIA=
Date: Fri, 5 Jan 2024 07:59:48 +0000
Message-ID:
 <BL1PR12MB58495E6A924B94D70824374DE7662@BL1PR12MB5849.namprd12.prod.outlook.com>
References: <20240105070920.350113-1-Jiqian.Chen@amd.com>
 <20240105070920.350113-6-Jiqian.Chen@amd.com>
 <7cea57a4-c3e6-4f50-be45-e71c50097d19@suse.com>
In-Reply-To: <7cea57a4-c3e6-4f50-be45-e71c50097d19@suse.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-ms-exchange-imapappendstamp: MN0PR12MB6054.namprd12.prod.outlook.com
 (15.20.7181.000)
authentication-results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=amd.com;
x-ms-exchange-messagesentrepresentingtype: 1
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: BL1PR12MB5849:EE_|PH7PR12MB6719:EE_
x-ms-office365-filtering-correlation-id: 5d05c9a3-32f6-48b4-034a-08dc0dc449c7
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam: BCL:0;
x-microsoft-antispam-message-info:
 m8qt8zvAkqm549McZqc/0ac9kSkICPqFE3li2khJHQlYvLy1+N1qFkzWTEXHg3xXkTqVagYQXaxzSjF0lP0fV46i6mDp63rfCQzAG7UyONH3wHDeu6/VuRBXfuYXCqI8fws9TfvD61Pq6Myd72cnZT7ue4wYT9emDPfJucvFWcyDJ4hPa9i9cYNl25DGJZRW7t+qMG/fWWe/y195Ybuu9aguisPjJEvHpzZvi0s03+HFvW0J6EwMDJ3x8AazZqCS4PA5nhtM17eB/1MvTLylsB1PgMJdAWhyXRag5mArkasuxMs6rQN655XzOMlm3bNv5hmHDNxhxQJZXLcApEcIOXkRsiuVJZhrheThQ/yoa6S3EBR4xesETjO+hW59sHUwIhxnVeqMRaiRGuNQIIwCJXWgJ63DAvb4FfeoxEN0Pgx7v2OKe8zHcRAnYmzQ/Fy6o79ODdbNcMpxRF1UIvmDe4CBuyeHvFYhNy6oYtIvAjMVBbKld0wY+9NSgMPV2zJ79SH3PofP4TTMZe3Y8XZpcHKgA/avICrKJH9d4G4dXLwuDE8jTRQunMCIEgNmaOOV8KJ/YyO3u4AYINVzu3w3DNfootGOmnXjUpQgQ8mdkgm16WXbnXtS+GjBWkmmMUUu
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BL1PR12MB5849.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230031)(396003)(39860400002)(346002)(376002)(136003)(366004)(230922051799003)(451199024)(186009)(1800799012)(64100799003)(55016003)(26005)(53546011)(71200400001)(7696005)(478600001)(9686003)(6506007)(122000001)(38100700002)(33656002)(2906002)(41300700001)(7416002)(83380400001)(38070700009)(6916009)(54906003)(66946007)(66556008)(66476007)(66446008)(316002)(64756008)(76116006)(5660300002)(4326008)(8676002)(8936002)(52536014);DIR:OUT;SFP:1101;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?utf-8?B?MUV5ZVVYTU8wTjB6UE1qUFVKbGE1aGE5OGtvRW5UakRFcHZPTnI0T2s1TDJB?=
 =?utf-8?B?RVljRkl4NkFTbnJ5b04wNmMzK0o5THBQbjFVVXhFa3BWZVRud01EWnB2YTJ5?=
 =?utf-8?B?WndxN1BMMDNPWkNVeURzWHlWM2c4emVPaXRGNHRpTXlPcFpJTENxWGREM3Ev?=
 =?utf-8?B?a2IrZ0trb1JOOENkcjRLUmNpUGIrc3BqMjhUT3lFb0JEMUE5c2l4VVlmdzh5?=
 =?utf-8?B?L29rMFVXcVo2Wmw2TTA0TDVDL0NOeFR3Z3dYelVmdGZLRTZBNWU1bjc2QjVT?=
 =?utf-8?B?UG5vSVZVMnhWZVV3bEJFc2tPQndNRmhVa3VWbU54dDRaeTZTNVZvYnErTkxZ?=
 =?utf-8?B?VkN0ZG9lRmc3N1FtZWt0VjczaHlHN290amJKeFN0RkUraUwzbENtVmZOcmR3?=
 =?utf-8?B?NmFLbGkyNEFyNVNlMExLMC9DYzNMNVlzTlZENzNQZVltWnpudzEzU09pM1pj?=
 =?utf-8?B?ZVFRdDdYUHMzRERDbE94cVF4ZURBWFBaaDBQQkxGcG1GRjRLNXVOWkpxSity?=
 =?utf-8?B?SVlyS21ZaDQ0ZnRtN2hWeHNTTEEycG5kanRFVXRaQ1lJc3E2NmVuQ2g0NEp4?=
 =?utf-8?B?N0c5K3FxaFhlQjlmQUxGeUxjSkdwbm5CRFhGRGRVeTNaL0g4WUdNeDZvZHZK?=
 =?utf-8?B?TXR0KytWbklQY1pUS3N5WHdIYktvSHFZUnFrdFZUa1IvUVM3RXNkeUl3WG1v?=
 =?utf-8?B?V0M0NEhRb1V5TmFHKzRXN0N2cGRQMG8xWFpKL0lQMWxzb0pQekFzNmpPajgz?=
 =?utf-8?B?UUxibE1zcFNYenA4YUk3NEdobis0YjJGQ1JaWG9FdVRjT0RnNUJGTEpoMGh4?=
 =?utf-8?B?RzhVc3NQMjRGdXF6SURLc0g4Mjk4TERCOVBHVFQzODdON2cxRVVZbmlSZDNq?=
 =?utf-8?B?K3phL08ya0tQL29OUzJQd0pNcWtFL05FWDB2cllydzhCTE1YejU3Tm96cE5n?=
 =?utf-8?B?bFQzLzhnUTdyRkNWZ1J2dHFZbU5OY1dPUlFzVk1rb3ViY3ZMcTMwTCtIMC9s?=
 =?utf-8?B?VW1sMDFOQU9ETnlVcElPTVVMT0dKSWU4YVB0dVBkUS8xZkUvVHVXdmdLZzdP?=
 =?utf-8?B?b2hFTUp3WURqZFVBRnJmZFA0dkJkQlZSalRwYWRNaFJUK21yWFBCMW9XN2Js?=
 =?utf-8?B?OGlwdDNyMDMyazRDbUlpUXI4NFptVm5kNlNwc2pkcWM2Z1Vud0lvU29SZjA3?=
 =?utf-8?B?aVljVjJ6YjdqSzd2T2VXN2QwYTJKem1JRitOZ0ozM1l0Mm9IQTFlVTE4aTBB?=
 =?utf-8?B?ODBWUmQzV3d2SkNoSkJGanJUSnVySWd5a1pBUWpBZ2YwUDFOVlhFb2tOUkhz?=
 =?utf-8?B?Z214N3MzNlZHeDVNUXoyMDZQbGc4MHprODFSVlR6L1hyUmhlcTJpMGpmTmg3?=
 =?utf-8?B?Y3o5WXFCY21NM0pjV3NGNkdmdjQ4Q1FJV1kyZEVwVktwWTNla1NqaTRMRkNi?=
 =?utf-8?B?Y0x6T01lOFpkN1kvNFNlUjV1cGxRTTdYVWk2dDcxT0l1VkhIM0paTlovdS9j?=
 =?utf-8?B?TGthV0pTL1c1YnF4TWdBdU9icDQvVnhaM05oOVB4S1pTY29sK2tMNmRSM0dI?=
 =?utf-8?B?M2R4WTBLSXUrVkxVblJhZ3NQT21DMnBVdlIxNStEMkJwalYxeGtlZkdZTU5i?=
 =?utf-8?B?eUxQSTJOeklnWWFjVWFjUWtqdzQxTXNaQzVseUJPaEk0UkpOSHN0bVIzdmQz?=
 =?utf-8?B?SGNxY1RuTmJLTk5pclZKWTJ5UFAxL3o1S0VRZ0FJSW0xRG1TS1NqUjhCNDZq?=
 =?utf-8?B?WVhLMWc3TmZvSnhOZ3haby9US1lPbUZjdGF6NVRsbmd0VUJtTzN5RHMwUzFD?=
 =?utf-8?B?TDJhTks5NVNQRnJhZzZsTlFEaHlJOWpEc1R4TjRmelo4NGYrS041RlUwWEox?=
 =?utf-8?B?RDE1UE4yT3VVaHFpdTFXVjZmY1I1eStidXB6eEJPQlFUdHNlV0lVbEs3SWVD?=
 =?utf-8?B?SlRIandhWTdTam02YnB1UW11STJRNnRLa2wrTGVGakd1dUVHLzR3QkdROTJZ?=
 =?utf-8?B?TTltZ2ZMWVJpRkpZOTM5emI5V3E3UFl0L2syVU5wQWNYREdMR3Z2V3Noakdj?=
 =?utf-8?B?d2Q0amY5bXBuUnJYSWdwMTZsc3pFWUsyaUwxSVY2TVJQdms1YTFVTnJDOEhj?=
 =?utf-8?Q?gbGE=3D?=
Content-Type: text/plain; charset="utf-8"
Content-ID: <D568ACC9B0784E4A85BEC2FD945D0BF6@amdcloud.onmicrosoft.com>
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: BL1PR12MB5849.namprd12.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 5d05c9a3-32f6-48b4-034a-08dc0dc449c7
X-MS-Exchange-CrossTenant-originalarrivaltime: 05 Jan 2024 07:59:48.1946
 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 3dd8961f-e488-4e60-8e11-a82d994e183d
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: Uyh80qCX9tn2UJlxP0W2x/McPmNQo76CJTMYe35/c1WfPb5allOaBb05972Q1xNEEVvOQmmB8RX5ISDrZTTvUw==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR12MB6719

T24gMjAyNC8xLzUgMTU6MzYsIEphbiBCZXVsaWNoIHdyb3RlOg0KPiBPbiAwNS4wMS4yMDI0IDA4
OjA5LCBKaXFpYW4gQ2hlbiB3cm90ZToNCj4+IC0tLSBhL3Rvb2xzL2xpYnMvbGlnaHQvbGlieGxf
cGNpLmMNCj4+ICsrKyBiL3Rvb2xzL2xpYnMvbGlnaHQvbGlieGxfcGNpLmMNCj4+IEBAIC0xNDc5
LDggKzE0NzksMTQgQEAgc3RhdGljIHZvaWQgcGNpX2FkZF9kbV9kb25lKGxpYnhsX19lZ2MgKmVn
YywNCj4+ICAgICAgZmNsb3NlKGYpOw0KPj4gICAgICBpZiAoIXBjaV9zdXBwX2xlZ2FjeV9pcnEo
KSkNCj4+ICAgICAgICAgIGdvdG8gb3V0X25vX2lycTsNCj4+IC0gICAgc3lzZnNfcGF0aCA9IEdD
U1BSSU5URihTWVNGU19QQ0lfREVWIi8iUENJX0JERiIvaXJxIiwgcGNpLT5kb21haW4sDQo+PiAr
ICAgIHN5c2ZzX3BhdGggPSBHQ1NQUklOVEYoU1lTRlNfUENJX0RFViIvIlBDSV9CREYiL2dzaSIs
IHBjaS0+ZG9tYWluLA0KPj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGNpLT5i
dXMsIHBjaS0+ZGV2LCBwY2ktPmZ1bmMpOw0KPj4gKw0KPj4gKyAgICBpZiAoYWNjZXNzKHN5c2Zz
X3BhdGgsIEZfT0spICE9IDApIHsNCj4gDQo+IEkgc3VwcG9zZSB5b3Ugd2FudCB0byBhbHNvIGNo
ZWNrIGVycm5vLCBhbmQgZmFsbCBiYWNrIG9ubHkgd2hlbiB5b3UgZ290DQo+IGJhY2sgKEkgZ3Vl
c3MpIEVOT0VOVC4NCk9rLCB3aWxsIGNoZWNrIGVycm5vIGluIG5leHQgdmVyc2lvbiwgaWYgaXQg
aXMgRU5PRU5ULCB0aGVuIHVzZSBpcnEsIGlmIGl0IGlzIG5vdCBFTk9FTlQsIHRoZW4gbG9nIGVy
cm9yIGFuZCBnbyB0byBvdXQuDQoNCj4gDQo+IEphbg0KPiANCj4+ICsgICAgICAgIHN5c2ZzX3Bh
dGggPSBHQ1NQUklOVEYoU1lTRlNfUENJX0RFViIvIlBDSV9CREYiL2lycSIsIHBjaS0+ZG9tYWlu
LA0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGNpLT5idXMsIHBjaS0+ZGV2
LCBwY2ktPmZ1bmMpOw0KPj4gKyAgICB9DQo+PiArDQo+PiAgICAgIGYgPSBmb3BlbihzeXNmc19w
YXRoLCAiciIpOw0KPj4gICAgICBpZiAoZiA9PSBOVUxMKSB7DQo+PiAgICAgICAgICBMT0dFRChF
UlJPUiwgZG9tYWluaWQsICJDb3VsZG4ndCBvcGVuICVzIiwgc3lzZnNfcGF0aCk7DQo+PiBAQCAt
MjIzMSw5ICsyMjM3LDE0IEBAIHNraXBfYmFyOg0KPj4gICAgICBpZiAoIXBjaV9zdXBwX2xlZ2Fj
eV9pcnEoKSkNCj4+ICAgICAgICAgIGdvdG8gc2tpcF9sZWdhY3lfaXJxOw0KPj4gIA0KPj4gLSAg
ICBzeXNmc19wYXRoID0gR0NTUFJJTlRGKFNZU0ZTX1BDSV9ERVYiLyJQQ0lfQkRGIi9pcnEiLCBw
Y2ktPmRvbWFpbiwNCj4+ICsgICAgc3lzZnNfcGF0aCA9IEdDU1BSSU5URihTWVNGU19QQ0lfREVW
Ii8iUENJX0JERiIvZ3NpIiwgcGNpLT5kb21haW4sDQo+PiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcGNpLT5idXMsIHBjaS0+ZGV2LCBwY2ktPmZ1bmMpOw0KPj4gIA0KPj4gKyAgICBpZiAo
YWNjZXNzKHN5c2ZzX3BhdGgsIEZfT0spICE9IDApIHsNCj4+ICsgICAgICAgIHN5c2ZzX3BhdGgg
PSBHQ1NQUklOVEYoU1lTRlNfUENJX0RFViIvIlBDSV9CREYiL2lycSIsIHBjaS0+ZG9tYWluLA0K
Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHBjaS0+YnVzLCBwY2ktPmRldiwgcGNpLT5m
dW5jKTsNCj4+ICsgICAgfQ0KPj4gKw0KPj4gICAgICBmID0gZm9wZW4oc3lzZnNfcGF0aCwgInIi
KTsNCj4+ICAgICAgaWYgKGYgPT0gTlVMTCkgew0KPj4gICAgICAgICAgTE9HRUQoRVJST1IsIGRv
bWlkLCAiQ291bGRuJ3Qgb3BlbiAlcyIsIHN5c2ZzX3BhdGgpOw0KPiANCg0KLS0gDQpCZXN0IHJl
Z2FyZHMsDQpKaXFpYW4gQ2hlbi4NCg==


From xen-devel-bounces@lists.xenproject.org Fri Jan 05 09:03:57 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 05 Jan 2024 09:03:57 +0000
Received: from list by lists.xenproject.org with outflank-mailman.662038.1031952 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLg79-0007jU-Tz; Fri, 05 Jan 2024 09:03:39 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 662038.1031952; Fri, 05 Jan 2024 09:03:39 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLg79-0007jN-Qo; Fri, 05 Jan 2024 09:03:39 +0000
Received: by outflank-mailman (input) for mailman id 662038;
 Fri, 05 Jan 2024 09:03:38 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=Az7I=IP=gmail.com=morel.dav@srs-se1.protection.inumbo.net>)
 id 1rLg78-0007j7-3e
 for xen-devel@lists.xenproject.org; Fri, 05 Jan 2024 09:03:38 +0000
Received: from mail-wm1-f44.google.com (mail-wm1-f44.google.com
 [209.85.128.44]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 4f4cbc43-aba9-11ee-98ef-6d05b1d4d9a1;
 Fri, 05 Jan 2024 10:03:36 +0100 (CET)
Received: by mail-wm1-f44.google.com with SMTP id
 5b1f17b1804b1-40d604b4b30so1734245e9.1
 for <xen-devel@lists.xenproject.org>; Fri, 05 Jan 2024 01:03:36 -0800 (PST)
Received: from raton (lfbn-idf1-1-1403-15.w90-79.abo.wanadoo.fr. [90.79.94.15])
 by smtp.gmail.com with ESMTPSA id
 k3-20020a5d5243000000b0033668b27f8fsm1009350wrc.4.2024.01.05.01.03.34
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Fri, 05 Jan 2024 01:03:35 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 4f4cbc43-aba9-11ee-98ef-6d05b1d4d9a1
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704445416; x=1705050216;
        h=in-reply-to:content-transfer-encoding:content-disposition
         :mime-version:references:message-id:subject:cc:to:from:date
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=pmBzSiJQ9afgYbWWIaP5PBRvLmuTxmJEocWE0vpf3F8=;
        b=XytEGY4f47NWaGeIaZCoQipCBYclcrpSC7CElI68mDbW365XMCFxO7z35BFX0v+kwA
         EF+uECuvXj7TToZ1VbPtNjYKpIEh/3NOef/B1tyHyrytioxhe/9JhOv6VMomSkLnFzqv
         xbp0irD6jMP1WFASMm/pQs2Iq/yKg6CwjF7uiGDzIq+/N/WrU7kbCbam0DRP9pKSF+3i
         VphjtMsePHXWXlkywp2SXZPCpa5b7RMNjltjq7xj61JTw87c/+kCUqZUGZ8mXf6IctpE
         TjEkK8X3x2xEVGaAXoNw7pJShb6LB33cV/InvVUyZUqap+bdQ3x5s/F+zVjsHZx6I5AW
         eyzg==
X-Gm-Message-State: AOJu0Yye1TAZKP+Y0XZ1zB5tf+4vcpUtIIwYTpAFxPzxfyDt1P43Q/ai
	Bh+g2rgC3rQpOwobypzDYpDb+AZ2FWumgBFU90Y=
X-Google-Smtp-Source: AGHT+IG91H6fg4Zln7kmjvbsOL9KppsKdkWkpd4DLeqmJ2XpOUN0NFyLenj/TdtsQaxtLgpfp61S/g==
X-Received: by 2002:a05:600c:3846:b0:40e:364d:d526 with SMTP id s6-20020a05600c384600b0040e364dd526mr512926wmr.87.1704445415537;
        Fri, 05 Jan 2024 01:03:35 -0800 (PST)
Date: Fri, 5 Jan 2024 10:03:28 +0100
From: David Morel <david.morel@vates.tech>
To: Stefano Stabellini <sstabellini@kernel.org>
Cc: xen-devel@lists.xenproject.org, xenia.ragiadakou@amd.com,
	andrew.cooper3@citrix.com, Jan Beulich <jbeulich@suse.com>,
	Roger Pau =?iso-8859-1?Q?Monn=E9?= <roger.pau@citrix.com>,
	Juergen Gross <jgross@suse.com>
Subject: Re: AMD EPYC VM to VM performance investigation
Message-ID: <ZZfF4Pz1Dj1Xc9xu@raton>
References: <ZZbSIH_pGjaQr5x-@raton>
 <alpine.DEB.2.22.394.2401041624500.1322202@ubuntu-linux-20-04-desktop>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <alpine.DEB.2.22.394.2401041624500.1322202@ubuntu-linux-20-04-desktop>

On Thu, Jan 04, 2024 at 16:39:46PM, Stefano Stabellini wrote:
> On Thu, 4 Jan 2024, David Morel wrote:
> > Hello,
> > 
> > We have a customer and multiple users on our forum having performances that
> > seems quite low related to the general performance of the machines on AMD EPYC
> > Zen hosts when doing VM to VM networking.
> 
> By "VM to VM networking" I take you mean VM-to-VM on the same host using
> PV network?

Yes sorry, I though I mentionned it.
> 
> 
> > Below you'll find a write up about what we had a look at and what's in the
> > TODO on our side, but in the meantime we would like to ask here for some
> > feedback, suggestions and possible leads.
> > 
> > To sum up, the VM to VM performance on Zen generation server CPUs seems quite
> > low, and only minimally scaling when adding threads. They are outperformed by
> > 10 year old AMD desktop cpu and pretty low frequency XEON bronze from 2014.
> > CPU usage does not seem to be the limiting factor as neither the VM threads or
> > the kthreads on host seems to go to a 100% cpu usage.
> > 
> > As we're Vates, I'm talking about XCP-ng here, so Xen 4.13.5 and a dom0 kernel
> > 4.19. I did try a Xen 4.18-rc2 and kernel 6.1.56 on a Zen4 epyc, but as it was
> > borrowed from a colleague I was unsure of the setup, so although it was
> > actually worse than on my other test setups, I would not consider that a
> > complete validation the issues is also present on recent Xen versions.
> 
> I think it might be difficult to triage this if you are working on a
> Xen/Linux version that is so different from upstream

That's what I feared, also why I listed it here.
> 
> 
> > 1. Has anybody else noticed a similar behavior?
> > 2. Has anybody done any kind of investigation about it beside us?
> > 3. Any insight and suggestions of other points to look at would be welcome :)
> > 
> > And now the lengthy part about what we tested, I tried to make it shorter and
> > more legible than a full report…
> > 
> > Investigated
> > ------------
> > 
> > - Bench various cpu with iperf2 (iperf3 is not actually multithreaded):
> >   - amd fx8320e, xeon 3106: not impacted.
> >   - epyc 7451, 7443, 7302p, 7313p, 9124: impacted, but the zen4 one scales a
> >     bit more than zen1, 2 and 3.
> >   - ryzen 5950x, ryzen 7600: performances should likely be better than
> >     observed results, but still way better than epycs, and scaling nicely with
> >     more threads.
> > - Bench with tinymembench[1]: performances were as expected and didn't show
> >   issues with rep movsb as discussed in this article[2] and issue[3]. Which
> >   makes sense as it looks like this issues is related to ERMS support which is
> >   not present on Zen1 and 2 where the issue has been raised.
> > - Bench skb allocation with a small kernel module measuring cycles: actually
> >   same or lower on epyc than on the xeon with higher frequency so can be
> >   considered faster and likely not related to our issue.
> > - mitigations: we tried disabling what can be disabled through boot
> >   parameters, both for xen, dom0 and guests, but this made no differences.
> > - disabling AVX; Zen cpus before zen4 are know to limit boost and cpu scaling
> >   when doing heavy AVX load on one core, there was no reason to think this was
> >   related, but it was a quick test and as expected had no effect.
> > - localhost iperf bench on dom0 and guests: we noticed that on other machines
> >   host/guest with 1 threads are almost 1:1, with 4 threads guests are about
> >   generally not scaling as well in guests. On epyc machines, host tests were
> >   significantly slower than guests both with 1 and 4 threads, first
> >   investigation of profiling didn't help finding a cause yet. More in the
> >   profiling and TODO.
> 
> Wait, are you saying that the localhost iperf benchmark is faster in a
> VM compared to host ("host" I take means baremetal Linux without a
> hypervisor) ?   Maybe you meant the other way around?

I meant it is faster on domUs than on dom0, as mentionned below in the
profiling part, it does seem to come down to the kernel and/or userland,
but unlike I thought at first, not from the copy_user_* functions as
they are precisely the same, I was kind of hoping it could be related to
a better handling of rep movsb in those on newer kernel... An
additionnal test with an alma8 to have a closer environment to the dom0
seems to yields similar performances as dom0.

> > - cpu load: top/htop/xentop all seem to indicate that machines are not under
> >   full load, queue allocations on dom0 for VIF are by default (1 per vcpu) and
> >   seem to be all used when traffic is running but at a percentage below 100%
> >   per core/thread.
> > - pinning: manually pinning dom0 and guests to the same node and avoiding
> >   sharing cpu "threads" between host and guests gives a minimal increase of a
> >   few percents, but nothing drastic. Note, we do not know about the
> >   ccd/ccx/node mapping on these cpus, so we are not sure all memory access are
> >   "local".
> > - sched weight: playing with sched weight to prioritize dom0 did not make a
> >   difference either, which makes sense as the system are not under full load.
> > - cpu scaling: it is unlikely the core of the issue, but indeed the cpu
> >   scaling does not take advantage of the boost, never going above the base
> >   clock of these cpus. Also it also seems that less cores that the number of
> >   working kthreads/vcpus are going to base clock, may be normal in regard to
> >   the system not being fully loaded, to be defined.
> >   - QUESTION: is the powernow support in xen cpufreq implementation sufficient
> >     for zen cpus? Recent kernels/distributions use acpi_cpufreq and can use
> >     amd_pstate or even amd_pstate_epp. More concerning than the turbo boost
> >     could be the handling of package power limitation used in Zen CPUs that
> >     could prevent even all cores to base clock, to be checked…
> > 
> > Profiling
> > ---------
> > 
> > We profiled iperf on dom0 and guests on epyc, older amd desktop, and xeon
> > machines and gathered profiling traces, but analysis are still ongoing.
> > 
> > - localhost:
> > Client and server were profiled both on dom0 and guests runs for a xeon, an
> > old FX and a zen platform, to analyze the discrepancy shown by the localhost
> > tests earlier. It shows we spend a larger chunk of time in the copyout() or
> > copyin() functions on epyc and fx. This is likely related to the use of
> > copy_user_generic_string() on epyc (zen1) and old FX, whereas xeon uses
> > copy_user_enhanced_fast_string(), as it has ERMS support.  But on the same
> > machine, guests are going way faster, and the implementation of
> > copy_user_generic_string() is the same between the dom0 and guests, so this is
> > likely related to other changes in kernel and userland, and not only to these
> > function. Therefore it likely isn't directly linked to the issue.
> > 
> > - vm to vm: server, client & dom0 -> profiling traces to be analysed.
> > 
> > TODO
> > ----
> > 
> > - More Analysis of profiling traces in VM to VM case
> > - X2APIC (not enabled on the machines and setup we are using)
> > - Profiling at xen level / hypercalls
> > - Tests on a clean install of a newer Xen version
> > - Dig some more on cpu scaling, likely not the root of the problem but could
> >   be some gain to make.
> > 
> > [1] https://github.com/ssvb/tinymembench
> > [2] https://xuanwo.io/2023/04-rust-std-fs-slower-than-python/
> > [3] https://bugs.launchpad.net/ubuntu/+source/glibc/+bug/2030515
> > 
> > -- 
> > David Morel


From xen-devel-bounces@lists.xenproject.org Fri Jan 05 09:38:44 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 05 Jan 2024 09:38:44 +0000
Received: from list by lists.xenproject.org with outflank-mailman.662045.1031962 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLgey-0004rj-Kk; Fri, 05 Jan 2024 09:38:36 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 662045.1031962; Fri, 05 Jan 2024 09:38:36 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLgey-0004rc-Hr; Fri, 05 Jan 2024 09:38:36 +0000
Received: by outflank-mailman (input) for mailman id 662045;
 Fri, 05 Jan 2024 09:38:35 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=upBt=IP=amd.com=Christian.Koenig@srs-se1.protection.inumbo.net>)
 id 1rLgex-0004rW-K9
 for xen-devel@lists.xenproject.org; Fri, 05 Jan 2024 09:38:35 +0000
Received: from NAM11-CO1-obe.outbound.protection.outlook.com
 (mail-co1nam11on20600.outbound.protection.outlook.com
 [2a01:111:f403:2416::600])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 30980c3b-abae-11ee-98ef-6d05b1d4d9a1;
 Fri, 05 Jan 2024 10:38:33 +0100 (CET)
Received: from PH7PR12MB5685.namprd12.prod.outlook.com (2603:10b6:510:13c::22)
 by SJ0PR12MB5488.namprd12.prod.outlook.com (2603:10b6:a03:3ad::15)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7159.17; Fri, 5 Jan
 2024 09:38:27 +0000
Received: from PH7PR12MB5685.namprd12.prod.outlook.com
 ([fe80::e1fb:4123:48b1:653]) by PH7PR12MB5685.namprd12.prod.outlook.com
 ([fe80::e1fb:4123:48b1:653%4]) with mapi id 15.20.7159.013; Fri, 5 Jan 2024
 09:38:27 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 30980c3b-abae-11ee-98ef-6d05b1d4d9a1
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=TrWXQrau2wC/HtAdeb7VniXixpzfii60Lb27ZHahD3914UGUv4FHCZYxYr91gTXPFqlPm/y5KKLByJDVB5VcWgwvrocgEDvsG67Sz6Uk52Z0OFxrcol8V1YipE8QD4AgCr1VJgD1fB9w+/IBS+DnXN/r9XcTgPGm7oPvrcAM9iHckReKHWxvSFK9/9fNKYuRyHdOzKs7Tg6APxwLu/wEBqxtUxJ9vDd6+iH+QWTVXjzs53BgG+RKIYjj0yakHfQNr83NOdnF0xaAerHDXUIHAPFHK5z6W6WmltI/Pl7yUsGQO7uA/POjip5SlBoWmllVifHKzklOlb2tgf4i06s4nA==
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=j9rrwwJeKmFxJoHeXpV2sEnkUMJYcEVwJ70+NIhNCHE=;
 b=UGG0er1YcGMZpronte5DHoNi9uo6V39W223jYmPTkk+B/es84GYx+5DmI4iR91qx8OnFn7L5l1FcGL/16mkT8Mq7xD4gPmPiHWXBP9bAE+dfZ4ginErZzJozmFegwIB6lEPw0Y5+UX2EHqaHicu07HAD8W1oH0Ryp8n+DGhNeMzd4b4JUxqw6MAPrE46IyBa47avdBRmwpCTWz1gIhVBRryKocgwLnL5F+tWolozN7pt0gHkOTeONPUaXHAxqSL2opQpZBJ1WvhGO3/zgYwkFW23mHiOaxi2bYiVL159QzvSNiqVob02NDwd1rLxTitVy1E/CPxykK1KcPQIaC+Jvw==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=amd.com; dmarc=pass action=none header.from=amd.com; dkim=pass
 header.d=amd.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=j9rrwwJeKmFxJoHeXpV2sEnkUMJYcEVwJ70+NIhNCHE=;
 b=UANw19nmjIfvOUj6PCKTuWt1UxSK78xF45wTsL9XVCGOt+FR6BwDc9oXwwXLQvDFZavT0+Haipmv5meckYvBnrN43vi6U2xR38ijFeKbKliBvMptMreso60Ba1piYCCR8SaeoViIRFyFbfEnqaO+ZUUCh7rhBSRnrx4IgsIaafE=
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=amd.com;
Message-ID: <e4952a68-82aa-4336-b287-7d03ed925a2e@amd.com>
Date: Fri, 5 Jan 2024 10:38:21 +0100
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] xen/gntdev: Fix the abuse of underlying struct page in
 DMA-buf import
Content-Language: en-US
To: Oleksandr Tyshchenko <olekstysh@gmail.com>,
 xen-devel@lists.xenproject.org, linux-kernel@vger.kernel.org
Cc: Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>,
 Daniel Vetter <daniel@ffwll.ch>, Juergen Gross <jgross@suse.com>,
 Stefano Stabellini <sstabellini@kernel.org>
References: <20240104185327.177376-1-olekstysh@gmail.com>
From: =?UTF-8?Q?Christian_K=C3=B6nig?= <christian.koenig@amd.com>
In-Reply-To: <20240104185327.177376-1-olekstysh@gmail.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
X-ClientProxiedBy: FR2P281CA0095.DEUP281.PROD.OUTLOOK.COM
 (2603:10a6:d10:9b::17) To PH7PR12MB5685.namprd12.prod.outlook.com
 (2603:10b6:510:13c::22)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: PH7PR12MB5685:EE_|SJ0PR12MB5488:EE_
X-MS-Office365-Filtering-Correlation-Id: 39277d24-9b81-41a9-974a-08dc0dd211b4
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam: BCL:0;
X-Microsoft-Antispam-Message-Info:
	ShCTAvQh9CC68/CDlerQGYGWdpkOzI0rXNn59m4RKfiJH4Z9aDIOwojN3sdOXlRK24zYngnanOVvwAwNtvds4Veu9cW29BEk3HN0iIsbGfcV7U1S26JPiCmRZ2T2KItWH9+KAIJjgSlVBwXbuwL1Q6Rd+G29YoTFVX2IJlE+7eEYPakw6ohFKGuR/FKe9Qc3yUtFmtmGqOhZWcfLIOxmKwvgQA1dL2oBuhBlw7IzL7yCEYlmN4KB7Rd9jUJReLORh8PPHbfJiVwALi7Jy+M44CM2zIxasEWGCtRpi6iD5ppzCodw97Z4Mq/SC/t5J5EZPVCm9LKuc29++JdriIlWtFKqbgEXzgev3CAA+GFTyhG/9BjBAweghxBhpt4ZfNZcsEFUcN9IC5PrqZ5kXCcUSxbWbb4hYLb3kX0MKnh4oafutxAKmOAHG8Af7E4YwYe2Vji8X/JofPLplO6pm5GFunhZHW47OI13ePPwzt4rIn/5cnPng/1A4pc84nCjjNCezQK/OHjLRclrBeNqRmiA01mvFN30oyl9VaEtcV8W/b3iSxzl6zZ4JXwl8JOcDP+TMT7HeYR7PmRpyTfR72JSpcZdgTyU2jofmsjvHati1xpNl1A20HXtU6OcaUqr4NRcAw/wNj6Ioh9aApr+eD74SQ==
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PH7PR12MB5685.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230031)(376002)(346002)(396003)(39860400002)(366004)(136003)(230922051799003)(186009)(64100799003)(1800799012)(451199024)(31686004)(2906002)(478600001)(5660300002)(4326008)(6666004)(41300700001)(316002)(54906003)(36756003)(66556008)(66946007)(66476007)(6486002)(6506007)(8936002)(8676002)(6512007)(2616005)(86362001)(31696002)(26005)(83380400001)(66574015)(38100700002)(45980500001)(43740500002);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?MUdMQzNkZnk2cWRGNVFhYU1jbzVUZzFjVW1RQ3J6dlBpK0c5ZEQyN2wrYmFC?=
 =?utf-8?B?UXBOVkQxekhMRjQ4czNFQnBsY1BsMDdCZXhIdjdUbzk4OXlRUkhnM0xBak5i?=
 =?utf-8?B?OTZqT3NLYTVLZm1nVmNyZXplNDV3M3V3NGMrbFMvQllWQ2x5c3hXTWpuZzNt?=
 =?utf-8?B?UkhtQXI1V1VZZm1SQndQRW5UT3ltUGNodGdpVGpma0g3Ky85aTFxTzN3VVJN?=
 =?utf-8?B?Q3hMLzl5NG9aVFh4ZVl0ZkdvUjBCaEl2dTcyZlhWVzljTVdTREpuSEVoZlRp?=
 =?utf-8?B?dGF0UGkyQ2xySGdCNm02eXBqYlcvVHZxcktac0VVSVNLNENHalJrYnBiNE8y?=
 =?utf-8?B?Zy9za1VKeGl0TnJ0YmxCQnl5TE9PaktKTHg2RG1RYWI0UkIxR05jbWlIU3ha?=
 =?utf-8?B?UVBIM2M4NTI2TlJWbnFqTEJOK0FZdGxUQ0R0bG1ia1RiUW53b1ZnOGs1azNL?=
 =?utf-8?B?TjdLRWFVSEg0Mm56VFlJNDNMVmwwYmNMc3J3VU9hUkJLV3A1SDBWNWljaW1O?=
 =?utf-8?B?R1FBU3IzOHZnVXcrdklzbU9pY3dwRDJKTjE2eEJvaHdNdmRCTkNsb3REMGZD?=
 =?utf-8?B?ZHVVWFV5ckNJd1pIaXpTa0RuZmcrU28rQ1NYM2prN1FLelNvQkpoWmlaRElI?=
 =?utf-8?B?YnlrbkkwZGFXUW5kYlhHR1dwMXNESjFjR3FNakY5NmJNeXBYWmUwVDBmTkYr?=
 =?utf-8?B?S3JsbUZ2YThwRlhyUkQ0bGdrdXVYcEg4S1pqOXNqRmJZZnhsb3ZwTy9ZTmh2?=
 =?utf-8?B?d2FQaGh5RmlUS1JNcFFSbTloeThiVzhmSFNzTE5PTlA4VE95MXlCTm03ZStz?=
 =?utf-8?B?eUg0OWo4aDRqZnB3NllPdFpJVG9qTHVZQUFIZ21ILzVVYVNEd1BGdm80UlFV?=
 =?utf-8?B?aDRTRW1iUldzN1ByZUpVK01yZEFjR0p0U3l6a1EzKzNyWkRraG9oOHBhb2V3?=
 =?utf-8?B?cUt4OTB0cFFLalpENnJheXA0MUV3M0xrV2MrWmZOUVBjUG9vTDN2OE1ldDVp?=
 =?utf-8?B?clBnSmNEQWowd1dCdHpTbVZSMyswemJySmpwVG5YS3NxeFNYZ2J0Ynkxek03?=
 =?utf-8?B?bXg1VFNlb1EyRFZNN3JXQ1YyL1Z0MmgzMzdUU2lTNzJPQ3MrYzlTZzNueTZu?=
 =?utf-8?B?eXZhYmZJWk82UkhqcFM4Q1ZNcmZxKzZGUEplcC92TlR4QmZuN3g4TDMvMUda?=
 =?utf-8?B?REwvU2hYRHg3Vks3NVNNQm1jVm84Q245N05LazBFR3B3UkkyaExhejRXaFpW?=
 =?utf-8?B?UWdIRjZSQitjcFBPZDRlSFhOMGNGVkZNQ0lab1VQcjNqWE5PTmZUTkhCQ1Jh?=
 =?utf-8?B?d2NnRnRTOXJRYzQ2TXRoNE0rTHNWVHJmOCtUeUY1YkcrLzc5K1oxSEt4a2ho?=
 =?utf-8?B?T2t3eEkrK1VsZ3VBaStZdUEzSFlqdHVKd1d1bkIrSHdoTzlNYVdCZEY5QjQ0?=
 =?utf-8?B?bytzT0FWVGhVQ3ZoMkthY2JGalpRSHp5YWtPM0tuS29vZjZ3UTduajdNbVA0?=
 =?utf-8?B?bWlVUzRYb3FwVEl5MkZrbGNtd0lRa1VVY3U5NmVBSEdBbFI3Q1pvbGp3TGhV?=
 =?utf-8?B?S1Z4SmRvaWN4QkI0SDJNUmxjTHR0VGtOUTZaRmxwOURGMEdvOHRDd2ducDhN?=
 =?utf-8?B?RG02MEFZcGNLQXJpOU5ObEVoa25LZjB1K0RrVU4wd2lubkpCb2llMmZnVXhW?=
 =?utf-8?B?S2x4SFY3VVYyMXJaU2NncHFmWktLSHBWUUc4UlpiSFlxN2ZlZENtR1dJcjRV?=
 =?utf-8?B?Qnlubm83aTB4VDdjV3ZZOWtObnlhclZSK2J2YWYxNXBBTUIxRkZEOGFsT3JQ?=
 =?utf-8?B?b0hJd0d2bTFnc0pYVFVVaFJBWVhRclNZdWtNUU1uRmRvRHpRVjVscFlLdXFF?=
 =?utf-8?B?S2ZpaHBKV2dYSTBQdlJGK3ZVTmp6L2I1aTlPL1NWdVNrTnRaZGhvT2NURmY5?=
 =?utf-8?B?UWRnV2M5cWxteW9tK2NOT2VKWFkyMWJPRmdwZTlBU1l3UCtUbkE1UndYUHM3?=
 =?utf-8?B?d3RaRmNPVlBvcDh5blBQL2ZsdHViVU9CMjdVMmJmTnJRSGp2VWtFeC9TeWh3?=
 =?utf-8?B?WjI1Z3krYWtaYVYxSnFocUcxVzRUTFpsRUNWQWZhSFlFOTBxSFUzRDR4Y2xy?=
 =?utf-8?Q?HaxBhl8ino7hjLF3Ny2TNowZv?=
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 39277d24-9b81-41a9-974a-08dc0dd211b4
X-MS-Exchange-CrossTenant-AuthSource: PH7PR12MB5685.namprd12.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Jan 2024 09:38:27.2320
 (UTC)
X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted
X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d
X-MS-Exchange-CrossTenant-MailboxType: HOSTED
X-MS-Exchange-CrossTenant-UserPrincipalName: sx6wQNRUOA57ZlltYcOl15bFQ1R4WESeZzqDIZ6t1PpMe8hlDf47Khx7obfbOS3H
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ0PR12MB5488

Am 04.01.24 um 19:53 schrieb Oleksandr Tyshchenko:
> From: Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>
>
> DO NOT access the underlying struct page of an sg table exported
> by DMA-buf in dmabuf_imp_to_refs(), this is not allowed.
> Please see drivers/dma-buf/dma-buf.c:mangle_sg_table() for details.
>
> Fortunately, here (for special Xen device) we can avoid using
> pages and calculate gfns directly from dma addresses provided by
> the sg table.
>
> Suggested-by: Daniel Vetter <daniel@ffwll.ch>
> Signed-off-by: Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>

I can't say that I can judge the full technical background, but that 
looks reasonable to me.

Acked-by: Christian König <christian.koenig@amd.com>

> ---
> Please note, I didn't manage to test the patch against the latest master branch
> on real HW (patch was only build tested there). Patch was tested on Arm64
> guests using Linux v5.10.41 from vendor's BSP, this is the environment where
> running this use-case is possible and to which I have an access (Xen PV display
> with zero-copy and backend domain as a buffer provider - be-alloc=1, so dma-buf
> import part was involved). A little bit old, but the dma-buf import code
> in gntdev-dmabuf.c hasn't been changed much since that time, all context
> remains allmost the same according to my code inspection.
> ---
> ---
>   drivers/xen/gntdev-dmabuf.c | 42 +++++++++++++++----------------------
>   1 file changed, 17 insertions(+), 25 deletions(-)
>
> diff --git a/drivers/xen/gntdev-dmabuf.c b/drivers/xen/gntdev-dmabuf.c
> index 4440e626b797..0dde49fca9a5 100644
> --- a/drivers/xen/gntdev-dmabuf.c
> +++ b/drivers/xen/gntdev-dmabuf.c
> @@ -11,6 +11,7 @@
>   #include <linux/kernel.h>
>   #include <linux/errno.h>
>   #include <linux/dma-buf.h>
> +#include <linux/dma-direct.h>
>   #include <linux/slab.h>
>   #include <linux/types.h>
>   #include <linux/uaccess.h>
> @@ -50,7 +51,7 @@ struct gntdev_dmabuf {
>   
>   	/* Number of pages this buffer has. */
>   	int nr_pages;
> -	/* Pages of this buffer. */
> +	/* Pages of this buffer (only for dma-buf export). */
>   	struct page **pages;
>   };
>   
> @@ -484,7 +485,7 @@ static int dmabuf_exp_from_refs(struct gntdev_priv *priv, int flags,
>   /* DMA buffer import support. */
>   
>   static int
> -dmabuf_imp_grant_foreign_access(struct page **pages, u32 *refs,
> +dmabuf_imp_grant_foreign_access(unsigned long *gfns, u32 *refs,
>   				int count, int domid)
>   {
>   	grant_ref_t priv_gref_head;
> @@ -507,7 +508,7 @@ dmabuf_imp_grant_foreign_access(struct page **pages, u32 *refs,
>   		}
>   
>   		gnttab_grant_foreign_access_ref(cur_ref, domid,
> -						xen_page_to_gfn(pages[i]), 0);
> +						gfns[i], 0);
>   		refs[i] = cur_ref;
>   	}
>   
> @@ -529,7 +530,6 @@ static void dmabuf_imp_end_foreign_access(u32 *refs, int count)
>   
>   static void dmabuf_imp_free_storage(struct gntdev_dmabuf *gntdev_dmabuf)
>   {
> -	kfree(gntdev_dmabuf->pages);
>   	kfree(gntdev_dmabuf->u.imp.refs);
>   	kfree(gntdev_dmabuf);
>   }
> @@ -549,12 +549,6 @@ static struct gntdev_dmabuf *dmabuf_imp_alloc_storage(int count)
>   	if (!gntdev_dmabuf->u.imp.refs)
>   		goto fail;
>   
> -	gntdev_dmabuf->pages = kcalloc(count,
> -				       sizeof(gntdev_dmabuf->pages[0]),
> -				       GFP_KERNEL);
> -	if (!gntdev_dmabuf->pages)
> -		goto fail;
> -
>   	gntdev_dmabuf->nr_pages = count;
>   
>   	for (i = 0; i < count; i++)
> @@ -576,7 +570,8 @@ dmabuf_imp_to_refs(struct gntdev_dmabuf_priv *priv, struct device *dev,
>   	struct dma_buf *dma_buf;
>   	struct dma_buf_attachment *attach;
>   	struct sg_table *sgt;
> -	struct sg_page_iter sg_iter;
> +	struct sg_dma_page_iter sg_iter;
> +	unsigned long *gfns;
>   	int i;
>   
>   	dma_buf = dma_buf_get(fd);
> @@ -624,26 +619,23 @@ dmabuf_imp_to_refs(struct gntdev_dmabuf_priv *priv, struct device *dev,
>   
>   	gntdev_dmabuf->u.imp.sgt = sgt;
>   
> -	/* Now convert sgt to array of pages and check for page validity. */
> +	gfns = kcalloc(count, sizeof(*gfns), GFP_KERNEL);
> +	if (!gfns)
> +		goto fail_unmap;
> +
> +	/* Now convert sgt to array of gfns without accessing underlying pages. */
>   	i = 0;
> -	for_each_sgtable_page(sgt, &sg_iter, 0) {
> -		struct page *page = sg_page_iter_page(&sg_iter);
> -		/*
> -		 * Check if page is valid: this can happen if we are given
> -		 * a page from VRAM or other resources which are not backed
> -		 * by a struct page.
> -		 */
> -		if (!pfn_valid(page_to_pfn(page))) {
> -			ret = ERR_PTR(-EINVAL);
> -			goto fail_unmap;
> -		}
> +	for_each_sgtable_dma_page(sgt, &sg_iter, 0) {
> +		dma_addr_t addr = sg_page_iter_dma_address(&sg_iter);
> +		unsigned long pfn = bfn_to_pfn(XEN_PFN_DOWN(dma_to_phys(dev, addr)));
>   
> -		gntdev_dmabuf->pages[i++] = page;
> +		gfns[i++] = pfn_to_gfn(pfn);
>   	}
>   
> -	ret = ERR_PTR(dmabuf_imp_grant_foreign_access(gntdev_dmabuf->pages,
> +	ret = ERR_PTR(dmabuf_imp_grant_foreign_access(gfns,
>   						      gntdev_dmabuf->u.imp.refs,
>   						      count, domid));
> +	kfree(gfns);
>   	if (IS_ERR(ret))
>   		goto fail_end_access;
>   



From xen-devel-bounces@lists.xenproject.org Fri Jan 05 09:52:21 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 05 Jan 2024 09:52:21 +0000
Received: from list by lists.xenproject.org with outflank-mailman.662049.1031971 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLgsB-0008Kc-Pw; Fri, 05 Jan 2024 09:52:15 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 662049.1031971; Fri, 05 Jan 2024 09:52:15 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLgsB-0008KV-NK; Fri, 05 Jan 2024 09:52:15 +0000
Received: by outflank-mailman (input) for mailman id 662049;
 Fri, 05 Jan 2024 09:52:14 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=5Pm0=IP=dingwall.me.uk=james@srs-se1.protection.inumbo.net>)
 id 1rLgsA-0008KP-KW
 for xen-devel@lists.xenproject.org; Fri, 05 Jan 2024 09:52:14 +0000
Received: from smarthost01a.ixn.mail.zen.net.uk
 (smarthost01a.ixn.mail.zen.net.uk [212.23.1.20])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 18c3cb3a-abb0-11ee-9b0f-b553b5be7939;
 Fri, 05 Jan 2024 10:52:11 +0100 (CET)
Received: from [217.155.64.189] (helo=mail0.xen.dingwall.me.uk)
 by smarthost01a.ixn.mail.zen.net.uk with esmtpsa (TLS1.0) tls
 TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA (Exim 4.95)
 (envelope-from <james@dingwall.me.uk>) id 1rLgs7-00C7TE-Dg;
 Fri, 05 Jan 2024 09:52:11 +0000
Received: from localhost (localhost [IPv6:::1])
 by mail0.xen.dingwall.me.uk (Postfix) with ESMTP id 3E2D88F7761;
 Fri,  5 Jan 2024 09:52:10 +0000 (GMT)
Received: from mail0.xen.dingwall.me.uk ([127.0.0.1])
 by localhost (mail0.xen.dingwall.me.uk [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id tRi9pq5r9c3B; Fri,  5 Jan 2024 09:52:10 +0000 (GMT)
Received: from ghoul.dingwall.me.uk (ghoul.dingwall.me.uk [192.168.1.200])
 by dingwall.me.uk (Postfix) with ESMTP id 1235B8F775E;
 Fri,  5 Jan 2024 09:52:10 +0000 (GMT)
Received: by ghoul.dingwall.me.uk (Postfix, from userid 1000)
 id 0070D21C; Fri,  5 Jan 2024 09:52:09 +0000 (GMT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 18c3cb3a-abb0-11ee-9b0f-b553b5be7939
X-Virus-Scanned: Debian amavisd-new at dingwall.me.uk
Date: Fri, 5 Jan 2024 09:52:09 +0000
From: James Dingwall <james-xen@dingwall.me.uk>
To: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: James Dingwall <james-xen@dingwall.me.uk>,
	xen-devel@lists.xenproject.org
Subject: Re: XSA-446 relevance on Intel
Message-ID: <ZZfRSU7mXCmmXCXI@dingwall.me.uk>
References: <ZXgrQdVvDuQCbCRP@dingwall.me.uk>
 <f4c7141c-5f37-4366-890c-ab8b86b6f5dd@citrix.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=iso-8859-1
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <f4c7141c-5f37-4366-890c-ab8b86b6f5dd@citrix.com>
X-Originating-smarthost01a-IP: [217.155.64.189]
Feedback-ID: 217.155.64.189

On Tue, Dec 12, 2023 at 10:56:48AM +0000, Andrew Cooper wrote:
> On 12/12/2023 9:43 am, James Dingwall wrote:
> > Hi,
> >
> > We were experiencing a crash during PV domU boot on several different models
> > of hardware but all with Intel CPUs.  The Xen version was based on stable-4.15
> > at 4a4daf6bddbe8a741329df5cc8768f7dec664aed (XSA-444) with some local
> > patches.  Since updating the branch to b918c4cdc7ab2c1c9e9a9b54fa9d9c595913e028
> > (XSA-446) we have not observed the same crash.
> 
> That range covers:
> 
> 1f5f515da0f6 - iommu/amd-vi: use correct level for quarantine domain
> page tables
> b918c4cdc7ab - x86/spec-ctrl: Remove conditional IRQs-on-ness for INT
> $0x80/0x82 paths
> 
> so yeah - not much in the way of change.
> 
> > The occurrence was on 1-2% of boots and we couldn't determine a particular
> > sequence of events that would trigger it.  The kernel is based on Ubuntu's
> > 5.15.0-91 tag but we also observed the same with -85.  Due to the low
> > frequency it is possible that we simply haven't observed it again since
> > updating our Xen build.
> >
> > If I have followed the early startup this is happening shortly after detection
> > of possible CPU vulnerabilities and patching in alternative instructions.  As
> > the RIP was native_irq_return_iret and XSA-446 related to interupt management
> > I wondered if it was possible that despite "Xen is not believed to be vulnerable
> > in default configurations on CPUs from other hardware vendors." there could
> > be some conditions in which an Intel CPU is affected?
> 
> In short, XSA-446 isn't plausibly related. It's completely internal to
> Xen, with no alteration on guest state.
> 
> It is an error that Linux has ended up in native_irq_return_iret. Linux
> cannot return to itself with an IRET instruction, and must use
> HYPERCALL_iret instead.
> 
> In recent versions of Linux, this is fixed up as about the earliest
> action a PV kernel takes, but on older versions of Linux, any
> interrupt/exception early enough on boot was fatal in this way.
> 
> 
> This part of the backtrace is odd:
> 
> [ 0.398962] ? native_iret+0x7/0x7
> [ 0.398967] ? insn_decode+0x79/0x100
> [ 0.398975] ? insn_decode+0xcf/0x100
> [ 0.398980] optimize_nops+0x68/0x150
> 
> as it's not clear how we've ended up in a case wanting to return back to
> the kernel to begin with. However, it's most likely a pagefault, as
> optimize_nops() is making changes in arbitrary locations.
> 
> It is possible that a change in visible features has altered the
> behaviour enough not to crash, but if everything is still the same as
> far as you can tell, then it's likely just chance that you haven't seen
> it again.
> 
> This is definitely a Linux bug, so I suspect something bad has been
> backported into Ubuntu.
> 
> ~Andrew

Thanks for the response.  I had a look at the more recent kernels and managed
to backport "x86/entry,xen: Early rewrite of restore_regs_and_return_to_kernel()"
without too much trouble.  It may still be a coincidence that we haven't
encountered the problem but it seems to have gone away for now. 

Regards,
James


From xen-devel-bounces@lists.xenproject.org Fri Jan 05 10:00:08 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 05 Jan 2024 10:00:08 +0000
Received: from list by lists.xenproject.org with outflank-mailman.662053.1031981 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLgzi-0000tD-I3; Fri, 05 Jan 2024 10:00:02 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 662053.1031981; Fri, 05 Jan 2024 10:00:02 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLgzi-0000sm-Ec; Fri, 05 Jan 2024 10:00:02 +0000
Received: by outflank-mailman (input) for mailman id 662053;
 Fri, 05 Jan 2024 10:00:01 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rLgzh-0000fv-4E; Fri, 05 Jan 2024 10:00:01 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rLgzg-0002Gs-TT; Fri, 05 Jan 2024 10:00:00 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rLgzg-0003Wk-Cr; Fri, 05 Jan 2024 10:00:00 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rLgzg-00051S-CN; Fri, 05 Jan 2024 10:00:00 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=NnceCi2E4ShAuRDJkNDNBjoFJMUzqcbGBxI29TXoefI=; b=U86i//DnxNnqQd87kTnSb82wWW
	81uQ0Bhy4EVfsYoI8Nh+L1capDtadEOvQJZlDwWpnwFQO5wR3w3+FhkjShVniO3m02UhTPBEE5Ani
	AEhtDL/U4rjUM2ABcm1h1zGjPBZ3+6Pl0+qCofgINFFOSQo2HHiFinlZ2ybQDlNj3bQk=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184257-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [ovmf test] 184257: all pass - PUSHED
X-Osstest-Versions-This:
    ovmf=e8166a852e63ee0c7c37291c1f88b19cc4692514
X-Osstest-Versions-That:
    ovmf=e449451770193c8eb36e4dc3a770c8ee353183aa
From: osstest service owner <osstest-admin@xenproject.org>
Date: Fri, 05 Jan 2024 10:00:00 +0000

flight 184257 ovmf real [real]
http://logs.test-lab.xenproject.org/osstest/logs/184257/

Perfect :-)
All tests in this flight passed as required
version targeted for testing:
 ovmf                 e8166a852e63ee0c7c37291c1f88b19cc4692514
baseline version:
 ovmf                 e449451770193c8eb36e4dc3a770c8ee353183aa

Last test of basis   184251  2024-01-04 10:14:25 Z    0 days
Testing same since   184257  2024-01-05 07:43:00 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Zhiguang Liu <zhiguang.liu@intel.com>

jobs:
 build-amd64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-amd64-amd64-xl-qemuu-ovmf-amd64                         pass    
 test-amd64-i386-xl-qemuu-ovmf-amd64                          pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Pushing revision :

To xenbits.xen.org:/home/xen/git/osstest/ovmf.git
   e449451770..e8166a852e  e8166a852e63ee0c7c37291c1f88b19cc4692514 -> xen-tested-master


From xen-devel-bounces@lists.xenproject.org Fri Jan 05 10:26:17 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 05 Jan 2024 10:26:17 +0000
Received: from list by lists.xenproject.org with outflank-mailman.662060.1031991 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLhOt-0005KJ-Hi; Fri, 05 Jan 2024 10:26:03 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 662060.1031991; Fri, 05 Jan 2024 10:26:03 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLhOt-0005KC-Ep; Fri, 05 Jan 2024 10:26:03 +0000
Received: by outflank-mailman (input) for mailman id 662060;
 Fri, 05 Jan 2024 10:26:02 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=Fzlm=IP=nxp.com=peng.fan@srs-se1.protection.inumbo.net>)
 id 1rLhOs-0005K6-6r
 for xen-devel@lists.xenproject.org; Fri, 05 Jan 2024 10:26:02 +0000
Received: from EUR03-AM7-obe.outbound.protection.outlook.com
 (mail-am7eur03on20601.outbound.protection.outlook.com
 [2a01:111:f403:260e::601])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id d1ffff84-abb4-11ee-98ef-6d05b1d4d9a1;
 Fri, 05 Jan 2024 11:26:00 +0100 (CET)
Received: from DU0PR04MB9417.eurprd04.prod.outlook.com (2603:10a6:10:358::11)
 by AS8PR04MB7781.eurprd04.prod.outlook.com (2603:10a6:20b:2a6::24)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7159.16; Fri, 5 Jan
 2024 10:25:58 +0000
Received: from DU0PR04MB9417.eurprd04.prod.outlook.com
 ([fe80::ff06:bbb2:c068:5fb3]) by DU0PR04MB9417.eurprd04.prod.outlook.com
 ([fe80::ff06:bbb2:c068:5fb3%7]) with mapi id 15.20.7135.023; Fri, 5 Jan 2024
 10:25:58 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: d1ffff84-abb4-11ee-98ef-6d05b1d4d9a1
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=QTba9/BgxItHJULkueSGiTUW1a1DMFi5zEnk4iCB5JJ7IZJSC8ROUJjYfgiNrku4jnBlE2borCsw9Gxc3gTt/ja7QjEPKeDYyRcfm5591DcF0VgfN2d93rwlW+DjlEx/vtJWz+tVGWfvF0c1HYxkETlx9Q3yqviIGDz1TaLU5ixjKN157MLF26+09FWOYhT2ocUgdqA8mD9abUnRoOkjjPUoMpkJiGZdQic9CIQplt45GI/Ac+mzujSlAw1f6ZYxTlSfl6U4j/NbEF06oZ41w6nnW/h4Y/WtpKQ33K8p+YJHyxhtyNpCEGnaoO4c1zM/lKNE60QdvSb/HUxl1hWTTw==
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=7fBchUzrHlye6vjgeBqx+2rSs8evyNW3KlPmksgmqTQ=;
 b=WpPqnbPK2syLJgPn+tTUlWz5eZVcKn4N0dxxmcrD2S9pt1YRX0hILHSzhbeeH9gGDIFbCTc0VQP+PSSPVS7D+U84HYd+Gdu3pvDmhIkbPIs+oIdi0RaBxFj0kC2AkpHcmFADyjCHqircdqPZk2d3gl2ACmCFNVjfk0ZkiycgH4IBCl00iOpCeIFYdd0aWp4BciwHNykG/E5Mqnz/krx81gK5eamYQv+iPIyocQwb2xQmaHulfPXxCVNy5WMgdM55KGgtNpPOJP+u6GbXMFNzgu+Zdqe0gkmbtV/OBo9qama+AkzaMWStbAg7xh4g+22A+dmaKBi/sw/LxG9a8aqFnw==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass
 header.d=nxp.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector2;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=7fBchUzrHlye6vjgeBqx+2rSs8evyNW3KlPmksgmqTQ=;
 b=n1VC0YQnKiHF9SYcvcGDSAgY8dDfZbitQL99Y8MrXRE37jG0ToWdpyeif1x7GdkqqYdBjjSOhAYuaxp0ZiULBpU9kpeUWlDmB4IO5oVrf6URb3fttDo1WPqnqUXqRN7RhghXKM1MjIaIPj/rhUFtgotdQ6Dtl2rqxOALXJm0g1A=
From: Peng Fan <peng.fan@nxp.com>
To: Vikram Garhwal <vikram.garhwal@amd.com>
CC: "stefano.stabellini@amd.com" <stefano.stabellini@amd.com>, Oleksii
 Moisieiev <oleksii_moisieiev@epam.com>, Viresh Kumar
	<viresh.kumar@linaro.org>, "xen-devel@lists.xenproject.org"
	<xen-devel@lists.xenproject.org>
Subject: RE: Xen and Qemu virtio question
Thread-Topic: Xen and Qemu virtio question
Thread-Index: Ado+Bh/9MuDR+84cSOCs1HJKnhYJ1AAf3YSAAE7uAHA=
Date: Fri, 5 Jan 2024 10:25:58 +0000
Message-ID:
 <DU0PR04MB9417C886FF942AB7E8B0CEB488662@DU0PR04MB9417.eurprd04.prod.outlook.com>
References:
 <DU0PR04MB9417F7A337D7CAA59B38ED038860A@DU0PR04MB9417.eurprd04.prod.outlook.com>
 <ZZXHE3lQ3XPOj80o@amd.com>
In-Reply-To: <ZZXHE3lQ3XPOj80o@amd.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=nxp.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: DU0PR04MB9417:EE_|AS8PR04MB7781:EE_
x-ms-office365-filtering-correlation-id: 7fe6a15a-cba9-40e6-4849-08dc0dd8b51b
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam: BCL:0;
x-microsoft-antispam-message-info:
 SORr8an3sAr3Z6ixnSbalV/1METzBIv1wk5UROHM2LQ5oYdtEJJUS7fhoypo4w4js5F/DQj9Z+NnWLryjaV0HOGYwFJYIjA8/atikSMyzgfUTt/4ze5EZyqiLRp57H2G2eArUqxhGgdnwihhuM+ilAyZQDJZHkW/zmsqY+Oph2NuuoSEC60njqR/vtnU5EBPpn/slz3bhHEnNGnfpNrpH0963IhcF8cuImltRlXquWsZltU/PrumiX3jG9CGglcHqM1YU1qAdrYEglYUn4NA/0dc1rRhMtK8lbyhIeHI4v9jvyE5nre9+Q+N7CP7iJ4VsODpM/448Zaa6fjfF6PB+r+13cXjLSOOrofaQ+68kdA3RwMmBhy7L0KKfVurLh67gwzO4EPO/Ip4yqAvou2UFXy06MqWicxgV8OX8SiTLU3BR4S+Dh+5Y46pCKk7wwdgicEC8EvQfg18rGuZT4aAK9gxLRIXm8z2SCzOGC+oJF4KrYdkC1VEZdZ5i4a931PyOumZuvehLHyd0Du1nUc6RsOsAlw0K4HgEU09WDM7gYuMg3MU1PqDeeWPKCuzwKDrUsG47OYZ21tPOoqJyBTvz8JyR0P9fNKAsG/uwRdiP9IZhaNgx/k4XmewFRjotRfD
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DU0PR04MB9417.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230031)(136003)(366004)(376002)(346002)(396003)(39860400002)(230922051799003)(451199024)(186009)(1800799012)(64100799003)(26005)(7696005)(45080400002)(71200400001)(6506007)(9686003)(86362001)(55016003)(83380400001)(4326008)(8676002)(52536014)(8936002)(316002)(54906003)(2906002)(5660300002)(44832011)(33656002)(478600001)(966005)(76116006)(66946007)(64756008)(66446008)(66476007)(66556008)(6916009)(38100700002)(122000001)(41300700001)(38070700009);DIR:OUT;SFP:1101;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?us-ascii?Q?Oc6sDFEU+l46yrctM7gZRuSK/fOeDAb2vkahYLtMXXgEwGSBnnH/fp3SOsVD?=
 =?us-ascii?Q?awYSR/GzxN2UQ6aGdudhARGDl9JnOinU1ZVNA2+C2U05VXLLe3wPzv5YarMF?=
 =?us-ascii?Q?InTFin5SGs4DWknkO2s+Zv7OpQR6/EsDoAHY3N6/WGjLcOqCwC0lfMcIl+Is?=
 =?us-ascii?Q?XaNiAs+A2N//acOs4hgfraft2IGR5feSp4bQoKh5MHcpxUKa6UJ+47emb/TD?=
 =?us-ascii?Q?/gpsMKyrec8uvafddrxJNSBZi5azOCd3dU2b5/7c0RE8vxXHXyfl6nvjEO3X?=
 =?us-ascii?Q?auyzsfsZgdqC9+4EOWUPnTCOhlHNDubETQlxOTZ/rOeqzM/3Jl1d+1Fa4whz?=
 =?us-ascii?Q?N0TsQQdUaiyjoKAoNZ09NKwGGA67kBdUdIZ99BcrLis4U98AR6HlWEKU59pS?=
 =?us-ascii?Q?VjOmRVMjtu4i3VHGy/3e7f1FPOqKW+DdErSiDk3nWMpFEjAJVXvoBfMeAsMi?=
 =?us-ascii?Q?QHx6l+ydZ/XQ4g2c8GaldMv1zsQz/GlhNzfCJh3RF6ZiYNl1fB9nC56vRupk?=
 =?us-ascii?Q?q81AvL/IM27UITxOj+DXdOfh993YZB7l4ZDrF/WniZG3vl4w0DyTyAnq/CBI?=
 =?us-ascii?Q?FSW5uHPkEZxROjmyc2RypEMhBCgOuwFcWhXGsUK6bT0zINqZfLP4u+9LoY3y?=
 =?us-ascii?Q?I8kennqfAB6DSEiUzUcVM8fZBZ6uouSb7XPv6x1/ZwzU21GCov3rkxaomLuT?=
 =?us-ascii?Q?imP8JbVPlb+mse8+Dana8BGPmxw5eurlkOOJVz5W26ErQTVkMXdDqXGsFZgT?=
 =?us-ascii?Q?u4WLTLzOShGYFljLbfQRtCW4snDzE/KrosjgW/eBvRXIE3ZF3lYmnQo8PloG?=
 =?us-ascii?Q?rJbbi9LMyDQE4tubznEYx4g3SVYCBwqyFX7dWz7OstromiOvhZpa/uLqOtBf?=
 =?us-ascii?Q?a0SgkwmnDPfIjZ+xiCXdLidCG0h8RdcDGa5Wt7YDyUwp7HF+e4A0s94CypoY?=
 =?us-ascii?Q?oL4vmYOZV0I3Da8/RTJjf8xMk7MwPOcRI0XqySGaJOVpyWJtNaQ8hMBgaJdc?=
 =?us-ascii?Q?4wze0mpkuQtd9HcfBX+nY0ZM7GVNw0tl83wLnpcEOIXtsf1jGxb+9ozW00kV?=
 =?us-ascii?Q?5IqFmyKaWR4sxUfmKY5cfyMNya8Li6+CIOTba1KaCqBT9lOy4AqgWJSsYiAd?=
 =?us-ascii?Q?4WsLljfSHP6AUIC6kmwbb7WhBzMb29dMOJo3r8JJasvsLgqnodH5QgMaBkWz?=
 =?us-ascii?Q?PV69DvH1iLwqgMIkGNS73bRetms2/2eBgNgpeDJYfscopVMecPcVuhf9QoNu?=
 =?us-ascii?Q?sUrX2Jq06uob1KZnWKfbfSc13a4cQmls6v/Cmg+23DeWaP1gRna9AsaVjqha?=
 =?us-ascii?Q?2R6aQ0fw7Mm1yAWPLiQsxRCvJbaOQTl+qpHgdgtCvihxFkXWIGQdnCbJXWGp?=
 =?us-ascii?Q?s6BVFNynZthGRR+fpUBcYi+frXnTfTBWTJJAqjOUAFxZCqWYyvWtXsvb/ENk?=
 =?us-ascii?Q?iU2WUEBDdoDW0xu+C1x4D5nici1XM35hh6/jCiqjyGdmTOGhm5y53kZstp8p?=
 =?us-ascii?Q?Yj4fgYfYKpgJDJoSekYO+E0HhA7g6lM1LqmFP6rtBtLsIBiVjO1Z61LvjFGu?=
 =?us-ascii?Q?lXNmt7RUQs4kTs9/17I=3D?=
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-OriginatorOrg: nxp.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: DU0PR04MB9417.eurprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 7fe6a15a-cba9-40e6-4849-08dc0dd8b51b
X-MS-Exchange-CrossTenant-originalarrivaltime: 05 Jan 2024 10:25:58.2044
 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: y75G5qDlPS5nP1vbASVjYZx2iXLM0mf9eA/yWPwGGEUybHwDnKdF7bkzk3M5M0c+nB3N6MzVPRlojEKJKwtDuA==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR04MB7781

Hi Vikram,

> Subject: Re: Xen and Qemu virtio question
>=20
> Hi Peng,
> Please see my comments below.
> On Wed, Jan 03, 2024 at 05:38:07AM +0000, Peng Fan wrote:
> > Hi Vikram, Oleksii
> >
> > I follow the slide virtio for Xen on ARM[1], but I met some issues,
> > and stuck for about two days.
> >
> > I use upstream lastest qemu repo master branch, not qemu-xen.git repo.
> This is right.
> >
> > My start command as below[2], but seems I need first `xl create
> > domu.cfg`, otherwise it will fail, because xen hypervisor
> > dm_op->rcu_lock_remote_domain_by_id will return failure if domu not
> > created.  My domu cfg is simple:
> > kernel =3D "/run/media/boot-mmcblk1p1/Image"
> > disk =3D [ '/etc/xen/disk_1.img,,xvda,specification=3Dvirtio' ] cmdline=
 =3D
> > "console=3Dhvc0 root=3D/dev/xvda rw"
> > name =3D "DomU"
> > memory =3D 512
> > serial =3D "pty"
> >
> > I drop qdisk in the disk entry, because xen tool report qdisk and
> > virtio not compatible.
> >
> > And the arg xen_domid should be same as domu domain id? Is there any
> > dynamic way to set xen_domid, start qemu when start domu?
> Yes, it should be xen_domid. Below virtio-disk patches will take care of
> invoking QEMU with right domid.
> >
> > Does the domu dts still needed to include the virtio,mmio node?
> >
> > however xl create domu.cfg relies virtio disk ready, which needs qemu
> > start first. This confuses me. How do you address this or I do
> > something wrong?
> >
> > Then after xl create,  I quickly start qemu, but met:
> > failed to create ioreq server, then I see there is mismatch.
> > qemu use HVM_IOREQSRV_BUFIOREQ_ATOMIC to create ioreq server, but
> xen
> > ioreq_server_create will return failure:
> >      if ( !IS_ENABLED(CONFIG_X86) && bufioreq_handling )
> >                return -EINVAL;
> >
> There is a downstream patch for this:
> https://eur01.safelinks.protection.outlook.com/?url=3Dhttps%3A%2F%2Fgithu=
b
> .com%2FXilinx%2Fxen%2Fcommit%2Fbe35b46e907c7c78fd23888d837475e
> b28334638&data=3D05%7C02%7Cpeng.fan%40nxp.com%7C52a0d96c7d95474
> c016408dc0c9cbc2e%7C686ea1d3bc2b4c6fa92cd99c5c301635%7C0%7C0%
> 7C638399114509848564%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLj
> AwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%
> 7C%7C&sdata=3DKylGkFrL2hOazsLjFwwj%2FIAPDQU80LhFfONQL4ytaic%3D&re
> served=3D0
>=20
> > So I change HVM_IOREQSRV_BUFIOREQ_OFF in qemu, but met:
> > qemu-system-aarch64: failed to map ioreq server resources: error 2
> > handle=3D0xaaaad26c7f30
> > qemu-system-aarch64: xen hardware virtual machine initialisation
> > failed
> >
> > Do you have out of box repo that works well? Including Qemu and Xen, I
> > am trying virtio disk, but will move to test virtio gpu soon.
> >
> > I am not sure there are some downstream patches in your side to
> > address and make it work well.
> >
> We have a few downstream patches for xen-tools.
> For Virtio disk backend:
> https://eur01.safelinks.protection.outlook.com/?url=3Dhttps%3A%2F%2Fgithu=
b
> .com%2FXilinx%2Fxen%2Fcommit%2F947280803294bbb963f428423f679d0
> 74c60d632&data=3D05%7C02%7Cpeng.fan%40nxp.com%7C52a0d96c7d95474
> c016408dc0c9cbc2e%7C686ea1d3bc2b4c6fa92cd99c5c301635%7C0%7C0%
> 7C638399114509848564%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLj
> AwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%
> 7C%7C&sdata=3D%2Bfjlzz%2Bvut3WyRWARfCij03kJ5ZuiGIika8uK5MIdM8%3D&
> reserved=3D0
> For Virtio-net:
> https://eur01.safelinks.protection.outlook.com/?url=3Dhttps%3A%2F%2Fgithu=
b
> .com%2FXilinx%2Fxen%2Fcommit%2F32fcc702718591270e5c8928b7687d8
> 53249c882&data=3D05%7C02%7Cpeng.fan%40nxp.com%7C52a0d96c7d95474
> c016408dc0c9cbc2e%7C686ea1d3bc2b4c6fa92cd99c5c301635%7C0%7C0%
> 7C638399114509848564%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLj
> AwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%
> 7C%7C&sdata=3DBLtX2GbY77J65H6mBF1r3nXkCWN%2B0SfRJTkH1CnTiQE%3D
> &reserved=3D0
> For changing the machine name to Xenpvh(to align with QEMU changes):
> https://eur01.safelinks.protection.outlook.com/?url=3Dhttps%3A%2F%2Fgithu=
b
> .com%2FXilinx%2Fxen%2Fcommit%2F5f669949c9ffdb1947cb47038956b5fb
> 8eeb072a&data=3D05%7C02%7Cpeng.fan%40nxp.com%7C52a0d96c7d95474c
> 016408dc0c9cbc2e%7C686ea1d3bc2b4c6fa92cd99c5c301635%7C0%7C0%7
> C638399114509848564%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjA
> wMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7
> C%7C&sdata=3DFbmQpeyrc86qapDK8gDNr7o0fYj09t6RrBA3RdmR4EQ%3D&res
> erved=3D0
>=20
> With above 4 patches it should work for you. Please re-compile Xen and Xe=
n-
> tools first and finally compile QEMU with this Xen.

Thanks very much on your information. I will pick up your patches and
give a try.

BTW, any plan to upstream the patches?

Thanks,
Peng.

>=20
> > Thanks for your help.
> >
> > Thanks,
> > Peng.
> >
> > [1]https://eur01.safelinks.protection.outlook.com/?url=3Dhttps%3A%2F%2F=
w
> >
> ww.youtube.com%2Fwatch%3Fv%3DboRQ8UHc760&data=3D05%7C02%7Cpen
> g.fan%40nxp
> > .com%7C52a0d96c7d95474c016408dc0c9cbc2e%7C686ea1d3bc2b4c6fa9
> 2cd99c5c30
> >
> 1635%7C0%7C0%7C638399114509848564%7CUnknown%7CTWFpbGZsb3d
> 8eyJWIjoiMC4w
> >
> LjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C
> %7C%7C
> >
> &sdata=3DVUs6u5qmXi7X5M0JgYJypNO10SIdFkBdVz7RRmUkuNM%3D&reserv
> ed=3D0
> >
> > [2]qemu-system-aarch64  -xen-domid 1 \ -chardev
> > socket,id=3Dlibxl-cmd,path=3Dqmp-libxl-1,server=3Don,wait=3Doff \ -mon
> > chardev=3Dlibxl-cmd,mode=3Dcontrol \ -chardev
> > socket,id=3Dlibxenstat-cmd,path=3Dqmp-libxenstat-1,server=3Don,wait=3Do=
ff \
> > -mon chardev=3Dlibxenstat-cmd,mode=3Dcontrol \ -xen-attach -name guest0
> > -vnc none -display none -nographic \ -machine xenpvh -m 513 &


From xen-devel-bounces@lists.xenproject.org Fri Jan 05 10:32:13 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 05 Jan 2024 10:32:13 +0000
Received: from list by lists.xenproject.org with outflank-mailman.662066.1032002 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLhUm-0007OS-A0; Fri, 05 Jan 2024 10:32:08 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 662066.1032002; Fri, 05 Jan 2024 10:32:08 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLhUm-0007OL-7Q; Fri, 05 Jan 2024 10:32:08 +0000
Received: by outflank-mailman (input) for mailman id 662066;
 Fri, 05 Jan 2024 10:32:06 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=O0HT=IP=huaweicloud.com=yukuai1@srs-se1.protection.inumbo.net>)
 id 1rLhUk-0007OD-EG
 for xen-devel@lists.xenproject.org; Fri, 05 Jan 2024 10:32:06 +0000
Received: from dggsgout11.his.huawei.com (unknown [45.249.212.51])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id a9606d52-abb5-11ee-98ef-6d05b1d4d9a1;
 Fri, 05 Jan 2024 11:32:03 +0100 (CET)
Received: from mail.maildlp.com (unknown [172.19.163.216])
 by dggsgout11.his.huawei.com (SkyGuard) with ESMTP id 4T60BJ0Yyxz4f3lWC
 for <xen-devel@lists.xenproject.org>; Fri,  5 Jan 2024 18:31:52 +0800 (CST)
Received: from mail02.huawei.com (unknown [10.116.40.112])
 by mail.maildlp.com (Postfix) with ESMTP id C7A911A0193
 for <xen-devel@lists.xenproject.org>; Fri,  5 Jan 2024 18:31:57 +0800 (CST)
Received: from [10.174.176.73] (unknown [10.174.176.73])
 by APP1 (Coremail) with SMTP id cCh0CgDX2xGZ2pdlGeddFg--.44050S3;
 Fri, 05 Jan 2024 18:31:56 +0800 (CST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: a9606d52-abb5-11ee-98ef-6d05b1d4d9a1
Subject: Re: [PATCH RFC v3 for-6.8/block 04/17] mtd: block2mtd: use bdev apis
To: Christoph Hellwig <hch@infradead.org>, Jan Kara <jack@suse.cz>
Cc: Yu Kuai <yukuai1@huaweicloud.com>, axboe@kernel.dk, roger.pau@citrix.com,
 colyli@suse.de, kent.overstreet@gmail.com, joern@lazybastard.org,
 miquel.raynal@bootlin.com, richard@nod.at, vigneshr@ti.com,
 sth@linux.ibm.com, hoeppner@linux.ibm.com, hca@linux.ibm.com,
 gor@linux.ibm.com, agordeev@linux.ibm.com, jejb@linux.ibm.com,
 martin.petersen@oracle.com, clm@fb.com, josef@toxicpanda.com,
 dsterba@suse.com, viro@zeniv.linux.org.uk, brauner@kernel.org,
 nico@fluxnic.net, xiang@kernel.org, chao@kernel.org, tytso@mit.edu,
 adilger.kernel@dilger.ca, jack@suse.com, konishi.ryusuke@gmail.com,
 willy@infradead.org, akpm@linux-foundation.org, hare@suse.de,
 p.raghav@samsung.com, linux-block@vger.kernel.org,
 linux-kernel@vger.kernel.org, xen-devel@lists.xenproject.org,
 linux-bcache@vger.kernel.org, linux-mtd@lists.infradead.org,
 linux-s390@vger.kernel.org, linux-scsi@vger.kernel.org,
 linux-bcachefs@vger.kernel.org, linux-btrfs@vger.kernel.org,
 linux-fsdevel@vger.kernel.org, linux-erofs@lists.ozlabs.org,
 linux-ext4@vger.kernel.org, linux-nilfs@vger.kernel.org,
 yi.zhang@huawei.com, yangerkun@huawei.com, "yukuai (C)" <yukuai3@huawei.com>
References: <20231221085712.1766333-1-yukuai1@huaweicloud.com>
 <20231221085712.1766333-5-yukuai1@huaweicloud.com>
 <20240104112855.uci45hhqaiitmsir@quack3> <ZZedSYAedA05Oex2@infradead.org>
From: Yu Kuai <yukuai1@huaweicloud.com>
Message-ID: <28237ec3-c3c1-1f0c-5250-04a88845d4a6@huaweicloud.com>
Date: Fri, 5 Jan 2024 18:31:53 +0800
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:60.0) Gecko/20100101
 Thunderbird/60.8.0
MIME-Version: 1.0
In-Reply-To: <ZZedSYAedA05Oex2@infradead.org>
Content-Type: text/plain; charset=gbk; format=flowed
Content-Transfer-Encoding: 8bit
X-CM-TRANSID:cCh0CgDX2xGZ2pdlGeddFg--.44050S3
X-Coremail-Antispam: 1UD129KBjvdXoW7XryUXFWDtw1fXr4DKF17Jrb_yoWxuFgEgF
	yvkFZrKa13JrZ2vFsxKw15tFZ2ya47Zry8JrW0qay7W3s5Xa9rG3WkGr13XF1qqan7WFnI
	9r9FqayrKay2qjkaLaAFLSUrUUUUUb8apTn2vfkv8UJUUUU8Yxn0WfASr-VFAUDa7-sFnT
	9fnUUIcSsGvfJTRUUUbaxFF20E14v26rWj6s0DM7CY07I20VC2zVCF04k26cxKx2IYs7xG
	6rWj6s0DM7CIcVAFz4kK6r1j6r18M28lY4IEw2IIxxk0rwA2F7IY1VAKz4vEj48ve4kI8w
	A2z4x0Y4vE2Ix0cI8IcVAFwI0_tr0E3s1l84ACjcxK6xIIjxv20xvEc7CjxVAFwI0_Gr1j
	6F4UJwA2z4x0Y4vEx4A2jsIE14v26rxl6s0DM28EF7xvwVC2z280aVCY1x0267AKxVW0oV
	Cq3wAS0I0E0xvYzxvE52x082IY62kv0487Mc02F40EFcxC0VAKzVAqx4xG6I80ewAv7VC0
	I7IYx2IY67AKxVWUJVWUGwAv7VC2z280aVAFwI0_Jr0_Gr1lOx8S6xCaFVCjc4AY6r1j6r
	4UM4x0Y48IcVAKI48JM4x0x7Aq67IIx4CEVc8vx2IErcIFxwACI402YVCY1x02628vn2kI
	c2xKxwCYjI0SjxkI62AI1cAE67vIY487MxAIw28IcxkI7VAKI48JMxC20s026xCaFVCjc4
	AY6r1j6r4UMI8I3I0E5I8CrVAFwI0_Jr0_Jr4lx2IqxVCjr7xvwVAFwI0_JrI_JrWlx4CE
	17CEb7AF67AKxVWrXVW8Jr1lIxkGc2Ij64vIr41lIxAIcVC0I7IYx2IY67AKxVWUJVWUCw
	CI42IY6xIIjxv20xvEc7CjxVAFwI0_Gr0_Cr1lIxAIcVCF04k26cxKx2IYs7xG6rWUJVWr
	Zr1UMIIF0xvEx4A2jsIE14v26r1j6r4UMIIF0xvEx4A2jsIEc7CjxVAFwI0_Gr0_Gr1UYx
	BIdaVFxhVjvjDU0xZFpf9x0JUd8n5UUUUU=
X-CM-SenderInfo: 51xn3trlr6x35dzhxuhorxvhhfrp/

Hi,

 2024/01/05 14:10, Christoph Hellwig д:
> On Thu, Jan 04, 2024 at 12:28:55PM +0100, Jan Kara wrote:
>> What do you think? Because when we are working with the folios it is rather
>> natural to use their mapping for dirty balancing?
> 
> The real problem is that block2mtd pokes way to deep into block
> internals.
> 
> I think the saviour here is Christians series to replace the bdev handle
> with a struct file, which will allow to use the normal file write path
> here and get rid of the entire layering volation.

Yes, looks like lots of patches from this set is not needed anymore.
I'll stop sending v4 and just send some patches that is not related to
'bd_inode' separately.

Thanks,
Kuai

> 
> .
> 



From xen-devel-bounces@lists.xenproject.org Fri Jan 05 11:00:55 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 05 Jan 2024 11:00:55 +0000
Received: from list by lists.xenproject.org with outflank-mailman.662130.1032043 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLhwX-0006H2-6x; Fri, 05 Jan 2024 11:00:49 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 662130.1032043; Fri, 05 Jan 2024 11:00:49 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLhwX-0006Gv-43; Fri, 05 Jan 2024 11:00:49 +0000
Received: by outflank-mailman (input) for mailman id 662130;
 Fri, 05 Jan 2024 11:00:47 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=8DC4=IP=cloud.com=george.dunlap@srs-se1.protection.inumbo.net>)
 id 1rLhwV-0006Gp-QI
 for xen-devel@lists.xenproject.org; Fri, 05 Jan 2024 11:00:47 +0000
Received: from mail-lf1-x12e.google.com (mail-lf1-x12e.google.com
 [2a00:1450:4864:20::12e])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id ad0d4686-abb9-11ee-9b0f-b553b5be7939;
 Fri, 05 Jan 2024 12:00:45 +0100 (CET)
Received: by mail-lf1-x12e.google.com with SMTP id
 2adb3069b0e04-50e72e3d435so1513169e87.2
 for <xen-devel@lists.xenproject.org>; Fri, 05 Jan 2024 03:00:45 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: ad0d4686-abb9-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1704452445; x=1705057245; darn=lists.xenproject.org;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:from:to:cc:subject:date
         :message-id:reply-to;
        bh=zvETyhMXNpgufszU7B8WEonmZkTWwWXALuVC/A9t5JE=;
        b=J3nDWF9HqckwdHTGCqpjkQnPmI+0lDw+nsWhOSlh0K5Ss5hDJC6BkiCDzQSMxoLSZh
         g9eTZ9cAfcsHNa8e35TeFoKQmt+kkkdUHuKc+AsZU6SQIf4AcFLcW9RJ4gupJghy7yrP
         2Cnk4XpTFyMYsy0iZJlDTnDeCWFNANaG+mxRE=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704452445; x=1705057245;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to;
        bh=zvETyhMXNpgufszU7B8WEonmZkTWwWXALuVC/A9t5JE=;
        b=mGj3Qn/5Ys0LzbJQLsqLzCwrNAxC6xjTkI5mGd1I4xvnEONoMPpD8N1AC2U4yI3wXh
         uFmqz8/baI8h8HyaPtaf6LOGXpVRgo19qpjaymmgwWXY/ezZxL/vpaUvZEqh1hwWb21S
         EXQVXOlTse2UY8CA3Q7N4w+fNnu1JzUHeF9pSzvcZPJHMf7IyHa/S9qCY1GJ9IwNziVJ
         Q5HL7JBhnAyciZWv9wHwRcZI6hcJRykfMkpTqS1G9qpqUi8v7NhnfzCasSHcJuo0J40Y
         0kBdV+e2iW/Ncy3RhIl4/zLU8lWW/x6myEqbtBTwxYyhFtO6eIFEb0geoJDQU0+pAp1M
         jtdw==
X-Gm-Message-State: AOJu0YzbaAZBqgQFhVLhcpPUOgaKThjxKFiEkOl1l3wXV/lIHM+IULJ/
	OyrrYGDvjoy4K+B6rBjiYm9Jo9SQFbPkajC46bvH4+TCjpUJsA==
X-Google-Smtp-Source: AGHT+IFBO8bquWvete2LZqNkUAbyyY0hKdL5zTAEnub/omtOY2zrtEZT3OERsXDA8jQ+Osr16vVi9lsnGtK5yPf6HdU=
X-Received: by 2002:a05:6512:304b:b0:50e:ab4d:abc5 with SMTP id
 b11-20020a056512304b00b0050eab4dabc5mr850339lfb.116.1704452444756; Fri, 05
 Jan 2024 03:00:44 -0800 (PST)
MIME-Version: 1.0
References: <20240104090055.27323-1-jgross@suse.com> <20240104090055.27323-17-jgross@suse.com>
In-Reply-To: <20240104090055.27323-17-jgross@suse.com>
From: George Dunlap <george.dunlap@cloud.com>
Date: Fri, 5 Jan 2024 11:00:34 +0000
Message-ID: <CA+zSX=bkDeH8GYDrcKxo7Ph9y5rHB7s64z2c-RnZgHYN8tSbzg@mail.gmail.com>
Subject: Re: [PATCH v3 16/33] tools/libs/light: add backend type for 9pfs PV devices
To: Juergen Gross <jgross@suse.com>
Cc: xen-devel@lists.xenproject.org, Nick Rosbrook <rosbrookn@gmail.com>, 
	Wei Liu <wl@xen.org>, Anthony PERARD <anthony.perard@citrix.com>, 
	Jason Andryuk <jandryuk@gmail.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

On Thu, Jan 4, 2024 at 9:02=E2=80=AFAM Juergen Gross <jgross@suse.com> wrot=
e:
>
> Make the backend type of 9pfs PV devices configurable. The default is
> "qemu" with the related Xenstore backend-side directory being "9pfs".
>
> Add another type "xen-9pfsd" with the related Xenstore backend-side
> directory "xen_9pfs".
>
> As additional security features it is possible to specify:
> - "max-space" for limiting the maximum space consumed on the filesystem
>   in MBs
> - "max-files" for limiting the maximum number of files in the
>   filesystem
> - "max-open-files" for limiting the maximum number of concurrent open
>   files
>
> For convenience "auto-delete" is available to let the backend delete the
> oldest file of the guest in case otherwise "max-space" or "max-files"
> would be violated.
>
> The xen-9pfsd daemon will be started by libxenlight automatically when
> the first "xen_9pfs" device is being created.
>
> Signed-off-by: Juergen Gross <jgross@suse.com>
> Reviewed-by: Jason Andryuk <jandryuk@gmail.com>

Golang bits:
Acked-by: George Dunlap <george.dunlap@cloud.com>


From xen-devel-bounces@lists.xenproject.org Fri Jan 05 11:12:31 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 05 Jan 2024 11:12:31 +0000
Received: from list by lists.xenproject.org with outflank-mailman.662134.1032053 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLi7l-0008CZ-6J; Fri, 05 Jan 2024 11:12:25 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 662134.1032053; Fri, 05 Jan 2024 11:12:25 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLi7l-0008CS-2l; Fri, 05 Jan 2024 11:12:25 +0000
Received: by outflank-mailman (input) for mailman id 662134;
 Fri, 05 Jan 2024 11:12:23 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rLi7j-0008CI-PD; Fri, 05 Jan 2024 11:12:23 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rLi7j-0003ia-In; Fri, 05 Jan 2024 11:12:23 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rLi7j-0006dl-49; Fri, 05 Jan 2024 11:12:23 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rLi7j-0002NN-36; Fri, 05 Jan 2024 11:12:23 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=0AMAg1DJOid0aitn5AFTcxkOkJAzn3zJWzMszmJ/bHk=; b=SjUE4krHXPMmkxoTMjVb/H6s9r
	7YtCD4326PCb7vCbRwSF9TxGqB1c6elj49JhdWjVpDoecnyhxiRCRY+nQ7Pa6uzy1VL6sHEPYrzGx
	tphlWmMMgUivpuGLciKt6RAikqtkx573pUShRVJeUO0xhWdTSsrs9K2aoo/McgbxD6PY=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184253-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [xen-unstable test] 184253: tolerable FAIL
X-Osstest-Failures:
    xen-unstable:test-amd64-i386-xl-qemut-debianhvm-i386-xsm:debian-hvm-install:fail:heisenbug
    xen-unstable:test-amd64-amd64-xl-qemut-debianhvm-i386-xsm:xen-boot:fail:heisenbug
    xen-unstable:test-amd64-amd64-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-amd64-xl-qemuu-win7-amd64:windows-install:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-amd64-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-qcow2:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-raw:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-amd64-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-amd64-qemuu-nested-amd:debian-hvm-install/l1/l2:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-i386-libvirt-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-libvirt:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-pvshim:guest-start:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-xsm:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-credit2:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-credit2:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-credit1:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-thunderx:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-credit1:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-thunderx:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-libvirt-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-libvirt-xsm:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-arndale:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-arndale:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-multivcpu:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-multivcpu:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit1:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit1:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit2:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit2:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-libvirt-raw:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-libvirt-raw:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-libvirt-raw:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt-vhd:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-qcow2:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-vhd:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-vhd:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-raw:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-rtds:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-rtds:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-vhd:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-vhd:saverestore-support-check:fail:nonblocking
X-Osstest-Versions-This:
    xen=49818cde637b5ec20383e46b71f93b2e7d867686
X-Osstest-Versions-That:
    xen=49818cde637b5ec20383e46b71f93b2e7d867686
From: osstest service owner <osstest-admin@xenproject.org>
Date: Fri, 05 Jan 2024 11:12:23 +0000

flight 184253 xen-unstable real [real]
http://logs.test-lab.xenproject.org/osstest/logs/184253/

Failures :-/ but no regressions.

Tests which are failing intermittently (not blocking):
 test-amd64-i386-xl-qemut-debianhvm-i386-xsm 12 debian-hvm-install fail in 184249 pass in 184253
 test-amd64-amd64-xl-qemut-debianhvm-i386-xsm  8 xen-boot   fail pass in 184249

Tests which did not succeed, but are not blocking:
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop  fail in 184249 like 184244
 test-amd64-amd64-xl-qemuu-win7-amd64 12 windows-install       fail like 184231
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 184249
 test-amd64-amd64-xl-qemut-win7-amd64 19 guest-stop            fail like 184249
 test-amd64-i386-xl-qemuu-win7-amd64 19 guest-stop             fail like 184249
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 184249
 test-armhf-armhf-libvirt-qcow2 15 saverestore-support-check   fail like 184249
 test-amd64-i386-xl-qemut-ws16-amd64 19 guest-stop             fail like 184249
 test-armhf-armhf-libvirt-raw 15 saverestore-support-check    fail  like 184249
 test-amd64-i386-xl-qemut-win7-amd64 19 guest-stop             fail like 184249
 test-amd64-amd64-xl-qemut-ws16-amd64 19 guest-stop            fail like 184249
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 184249
 test-amd64-i386-xl-qemuu-ws16-amd64 19 guest-stop             fail like 184249
 test-amd64-i386-libvirt-xsm  15 migrate-support-check        fail   never pass
 test-amd64-i386-libvirt      15 migrate-support-check        fail   never pass
 test-amd64-i386-xl-pvshim    14 guest-start                  fail   never pass
 test-amd64-amd64-libvirt     15 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-arm64-arm64-xl-xsm      15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl          15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-xsm      16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl          16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-credit2  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit2  16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-credit1  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-thunderx 15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit1  16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-thunderx 16 saverestore-support-check    fail   never pass
 test-arm64-arm64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-xsm 16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-arndale  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-arndale  16 saverestore-support-check    fail   never pass
 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-armhf-armhf-xl-multivcpu 15 migrate-support-check        fail  never pass
 test-armhf-armhf-xl-multivcpu 16 saverestore-support-check    fail  never pass
 test-armhf-armhf-libvirt     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit1  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit1  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-credit2  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit2  16 saverestore-support-check    fail   never pass
 test-amd64-i386-libvirt-raw  14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 15 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-vhd 14 migrate-support-check        fail   never pass
 test-armhf-armhf-libvirt-qcow2 14 migrate-support-check        fail never pass
 test-arm64-arm64-xl-vhd      14 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-vhd      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-raw 14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-rtds     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-rtds     16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-vhd      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      15 saverestore-support-check    fail   never pass

version targeted for testing:
 xen                  49818cde637b5ec20383e46b71f93b2e7d867686
baseline version:
 xen                  49818cde637b5ec20383e46b71f93b2e7d867686

Last test of basis   184253  2024-01-05 01:52:10 Z    0 days
Testing same since                          (not found)         0 attempts

jobs:
 build-amd64-xsm                                              pass    
 build-arm64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64-xtf                                              pass    
 build-amd64                                                  pass    
 build-arm64                                                  pass    
 build-armhf                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-arm64-libvirt                                          pass    
 build-armhf-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-prev                                             pass    
 build-i386-prev                                              pass    
 build-amd64-pvops                                            pass    
 build-arm64-pvops                                            pass    
 build-armhf-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-xtf-amd64-amd64-1                                       pass    
 test-xtf-amd64-amd64-2                                       pass    
 test-xtf-amd64-amd64-3                                       pass    
 test-xtf-amd64-amd64-4                                       pass    
 test-xtf-amd64-amd64-5                                       pass    
 test-amd64-amd64-xl                                          pass    
 test-amd64-coresched-amd64-xl                                pass    
 test-arm64-arm64-xl                                          pass    
 test-armhf-armhf-xl                                          pass    
 test-amd64-i386-xl                                           pass    
 test-amd64-coresched-i386-xl                                 pass    
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm           pass    
 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm            pass    
 test-amd64-amd64-xl-qemut-stubdom-debianhvm-amd64-xsm        pass    
 test-amd64-i386-xl-qemut-stubdom-debianhvm-amd64-xsm         pass    
 test-amd64-amd64-xl-qemut-debianhvm-i386-xsm                 fail    
 test-amd64-i386-xl-qemut-debianhvm-i386-xsm                  pass    
 test-amd64-amd64-xl-qemuu-debianhvm-i386-xsm                 pass    
 test-amd64-i386-xl-qemuu-debianhvm-i386-xsm                  pass    
 test-amd64-amd64-libvirt-xsm                                 pass    
 test-arm64-arm64-libvirt-xsm                                 pass    
 test-amd64-i386-libvirt-xsm                                  pass    
 test-amd64-amd64-xl-xsm                                      pass    
 test-arm64-arm64-xl-xsm                                      pass    
 test-amd64-i386-xl-xsm                                       pass    
 test-amd64-amd64-qemuu-nested-amd                            fail    
 test-amd64-amd64-xl-pvhv2-amd                                pass    
 test-amd64-i386-qemut-rhel6hvm-amd                           pass    
 test-amd64-i386-qemuu-rhel6hvm-amd                           pass    
 test-amd64-amd64-dom0pvh-xl-amd                              pass    
 test-amd64-amd64-xl-qemut-debianhvm-amd64                    pass    
 test-amd64-i386-xl-qemut-debianhvm-amd64                     pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64                    pass    
 test-amd64-i386-xl-qemuu-debianhvm-amd64                     pass    
 test-amd64-i386-freebsd10-amd64                              pass    
 test-amd64-amd64-qemuu-freebsd11-amd64                       pass    
 test-amd64-amd64-qemuu-freebsd12-amd64                       pass    
 test-amd64-amd64-xl-qemuu-ovmf-amd64                         pass    
 test-amd64-i386-xl-qemuu-ovmf-amd64                          pass    
 test-amd64-amd64-xl-qemut-win7-amd64                         fail    
 test-amd64-i386-xl-qemut-win7-amd64                          fail    
 test-amd64-amd64-xl-qemuu-win7-amd64                         fail    
 test-amd64-i386-xl-qemuu-win7-amd64                          fail    
 test-amd64-amd64-xl-qemut-ws16-amd64                         fail    
 test-amd64-i386-xl-qemut-ws16-amd64                          fail    
 test-amd64-amd64-xl-qemuu-ws16-amd64                         fail    
 test-amd64-i386-xl-qemuu-ws16-amd64                          fail    
 test-armhf-armhf-xl-arndale                                  pass    
 test-amd64-amd64-examine-bios                                pass    
 test-amd64-i386-examine-bios                                 pass    
 test-amd64-amd64-xl-credit1                                  pass    
 test-arm64-arm64-xl-credit1                                  pass    
 test-armhf-armhf-xl-credit1                                  pass    
 test-amd64-amd64-xl-credit2                                  pass    
 test-arm64-arm64-xl-credit2                                  pass    
 test-armhf-armhf-xl-credit2                                  pass    
 test-amd64-amd64-xl-qemuu-dmrestrict-amd64-dmrestrict        pass    
 test-amd64-i386-xl-qemuu-dmrestrict-amd64-dmrestrict         pass    
 test-amd64-amd64-examine                                     pass    
 test-arm64-arm64-examine                                     pass    
 test-armhf-armhf-examine                                     pass    
 test-amd64-i386-examine                                      pass    
 test-amd64-i386-freebsd10-i386                               pass    
 test-amd64-amd64-qemuu-nested-intel                          pass    
 test-amd64-amd64-xl-pvhv2-intel                              pass    
 test-amd64-i386-qemut-rhel6hvm-intel                         pass    
 test-amd64-i386-qemuu-rhel6hvm-intel                         pass    
 test-amd64-amd64-dom0pvh-xl-intel                            pass    
 test-amd64-amd64-libvirt                                     pass    
 test-armhf-armhf-libvirt                                     pass    
 test-amd64-i386-libvirt                                      pass    
 test-amd64-amd64-livepatch                                   pass    
 test-amd64-i386-livepatch                                    pass    
 test-amd64-amd64-migrupgrade                                 pass    
 test-amd64-i386-migrupgrade                                  pass    
 test-amd64-amd64-xl-multivcpu                                pass    
 test-armhf-armhf-xl-multivcpu                                pass    
 test-amd64-amd64-pair                                        pass    
 test-amd64-i386-pair                                         pass    
 test-amd64-amd64-libvirt-pair                                pass    
 test-amd64-i386-libvirt-pair                                 pass    
 test-amd64-amd64-xl-pvshim                                   pass    
 test-amd64-i386-xl-pvshim                                    fail    
 test-amd64-amd64-pygrub                                      pass    
 test-armhf-armhf-libvirt-qcow2                               pass    
 test-amd64-amd64-xl-qcow2                                    pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-armhf-armhf-libvirt-raw                                 pass    
 test-amd64-i386-libvirt-raw                                  pass    
 test-amd64-amd64-xl-rtds                                     pass    
 test-armhf-armhf-xl-rtds                                     pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64-shadow             pass    
 test-amd64-i386-xl-qemuu-debianhvm-amd64-shadow              pass    
 test-amd64-amd64-xl-shadow                                   pass    
 test-amd64-i386-xl-shadow                                    pass    
 test-arm64-arm64-xl-thunderx                                 pass    
 test-amd64-amd64-examine-uefi                                pass    
 test-amd64-i386-examine-uefi                                 pass    
 test-amd64-amd64-libvirt-vhd                                 pass    
 test-arm64-arm64-xl-vhd                                      pass    
 test-armhf-armhf-xl-vhd                                      pass    
 test-amd64-i386-xl-vhd                                       pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Published tested tree is already up to date.



From xen-devel-bounces@lists.xenproject.org Fri Jan 05 11:22:21 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 05 Jan 2024 11:22:21 +0000
Received: from list by lists.xenproject.org with outflank-mailman.662142.1032064 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLiHI-0002gt-8Q; Fri, 05 Jan 2024 11:22:16 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 662142.1032064; Fri, 05 Jan 2024 11:22:16 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLiHI-0002gm-5P; Fri, 05 Jan 2024 11:22:16 +0000
Received: by outflank-mailman (input) for mailman id 662142;
 Fri, 05 Jan 2024 11:22:14 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=0BO+=IP=amd.com=ayan.kumar.halder@srs-se1.protection.inumbo.net>)
 id 1rLiHG-0002gg-J6
 for xen-devel@lists.xenproject.org; Fri, 05 Jan 2024 11:22:14 +0000
Received: from NAM10-BN7-obe.outbound.protection.outlook.com
 (mail-bn7nam10on20600.outbound.protection.outlook.com
 [2a01:111:f403:2009::600])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id aa7f55d7-abbc-11ee-98ef-6d05b1d4d9a1;
 Fri, 05 Jan 2024 12:22:12 +0100 (CET)
Received: from BY5PR04CA0008.namprd04.prod.outlook.com (2603:10b6:a03:1d0::18)
 by IA0PR12MB8349.namprd12.prod.outlook.com (2603:10b6:208:407::17)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7159.16; Fri, 5 Jan
 2024 11:22:05 +0000
Received: from MWH0EPF000989EC.namprd02.prod.outlook.com
 (2603:10b6:a03:1d0:cafe::dd) by BY5PR04CA0008.outlook.office365.com
 (2603:10b6:a03:1d0::18) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7159.16 via Frontend
 Transport; Fri, 5 Jan 2024 11:22:04 +0000
Received: from SATLEXMB04.amd.com (165.204.84.17) by
 MWH0EPF000989EC.mail.protection.outlook.com (10.167.241.139) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.7159.9 via Frontend Transport; Fri, 5 Jan 2024 11:22:04 +0000
Received: from SATLEXMB03.amd.com (10.181.40.144) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.34; Fri, 5 Jan
 2024 05:22:03 -0600
Received: from xcbayankuma40.xilinx.com (10.180.168.240) by SATLEXMB03.amd.com
 (10.181.40.144) with Microsoft SMTP Server id 15.1.2507.34 via
 Frontend Transport; Fri, 5 Jan 2024 05:22:02 -0600
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: aa7f55d7-abbc-11ee-98ef-6d05b1d4d9a1
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=Cf4+H0x2ddP44VqYKY+Zr+LFUr5sPOWz/ZlhwDWGJz+paDpsWshH9GXRN/nrvxsigP9x4kSNFe/5GSis28Nh0oA+OF817rswMmpDdFbNqbNupdcTBFcGKey2x7nr0I8kNNL/vQcI7UsY5Aa33KMlZGJxLd4k+++ivTeQByN1lAAApyNM854iE9qaLCpJsbwvcdzLHmZid0AJrQ0/Q/z2a/toIgRxjSpOA2vtmeTzq2G8EB1r0gQcdwxSCJ/pjF6x10dvrjfCIT8R1dt7L8pYv5CoHroC9IOi9aOkGVqT9yo+8gHGMuw4L8ntTrHrg93wnSXIPwKLSCI2fC5hLI9XGw==
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=ZSCPV8VAwCz21WRagwjp8pOvRQ1IEBsprgtBT3e6UMM=;
 b=aHxbHwgL4zyE2lLN7iT5zTUG2CclTJ8Mu1K2yFfBvo8xPofxAlucpzAvfKsxEujV1j1D73QxHrx2jApiqVbmcb0qfUaT5WdXF0QrkONYimB/ibXEsZY/f4nRu1R6fpUy8VMRg2FE8qz+c1nsRLXM949QsHVNZX7jg2e8uoFLSP1f5eQT0r4Rp2NnGTZkLXt0fkVxTtMgBAaghB++HqRmB5w7RHsx05hpVSZUhgJDmd5WNX2Z+zFsVBqRxoJxPbmh59hwhwgdE+y2FP1a7pSd7PHjyYw+wKMiwL8OVKyXfVXXr7FlTYqpVssGjvaqyUpoh37ebiimQf4RAe8H64cWpA==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=lists.xenproject.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)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=ZSCPV8VAwCz21WRagwjp8pOvRQ1IEBsprgtBT3e6UMM=;
 b=f6fouVp0XPUuHppBjLS4L4aaxri+g9JgnIKNwun6R1pFDz/a5XTkIwcHV0/QPWIwn9N7QoGKvtSK2bgYyZZoHsNuQ43bW40SnMAzQt5IC0JctNpxuY183sv1vMIyZ/U6Um4/vv3cs+Y7py66lRfooSWGtu7Uf7fu4I35JxkZY/A=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C
From: Ayan Kumar Halder <ayan.kumar.halder@amd.com>
To: <xen-devel@lists.xenproject.org>
CC: <sstabellini@kernel.org>, <stefano.stabellini@amd.com>, <julien@xen.org>,
	<Volodymyr_Babchuk@epam.com>, <bertrand.marquis@arm.com>,
	<michal.orzel@amd.com>, Ayan Kumar Halder <ayan.kumar.halder@amd.com>
Subject: [XEN v3 0/3] xen/arm: Add emulation of Debug Data Transfer Registers
Date: Fri, 5 Jan 2024 11:21:53 +0000
Message-ID: <20240105112156.154807-1-ayan.kumar.halder@amd.com>
X-Mailer: git-send-email 2.25.1
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: MWH0EPF000989EC:EE_|IA0PR12MB8349:EE_
X-MS-Office365-Filtering-Correlation-Id: f1012798-9681-4929-ee78-08dc0de08b71
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam: BCL:0;
X-Microsoft-Antispam-Message-Info:
	ZvjJvuIp+gAWb9Hssq+Yq7A+4V/dCEowI0q1yU34YTD5ula0wV23MLWQzIHXDY5Zf9PNgcLXjdGDYfcmgHDNlUdynGXgcV2/0740/wRhPWubOcXSo/rr/CSQuoiz5t9PaDZty4WDPtAdx4oXFcqzG/InU83R7Ke0U4tDkt/EN/ft9AGGCT3V4o0YQPtJlNLy77Ku02bZnwER2ByY7XrNx3UjxdhMpFXaZIsH0IsiBlUHPO+saVl6YQJFA4OeRbdlaeJ7vGmXSRZwgOJP4BTmbucXmb+1+a23vXR4xinmjk4zo4E+Cwn7SRv2xXkPiIlndUx5YeuiDAZa2F6MVqfaJ5gPewtKD8xUnBfpyWuYh0R6rTq0JgA2PQaOoxL7wTCpwi8gdUvYHOOy/O2/SHMfjjuo7GJ8XZkb5K5cDpMls+C7YZbolsYU/dBwCc+yTZaJXJ8PVJDjcw9cJH6PT1RaxHjheZm3fpHucmyY8JVV/QKlFXY4UseIE4ideyW2vgt8N7ULlIW/8vxpRhbrY4tt49VGnx+MSako/ihZxQ+7EIeE20ilyyLOLi/olZHXbB4MeMTMcNUW8S7R/K8jGWlf16fe0yJPLEKa/3MqyDR/ZiQt5uh+o1rsV1a24M4plG92sswp3SxVyYkWaNrwAN3V789mnv/fOLNWWQd5IcZfWT1HlD5FhcOArxlwYNdLVPXsPG8Spgwaa8cnuKS8mWMKVjVO4sgDPQnqp264VDIdeLK3wdd2bvfT9TQCSgEQXoUIBxoggyNc9ylOK0pAqDH0tw==
X-Forefront-Antispam-Report:
	CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230031)(4636009)(376002)(39860400002)(396003)(136003)(346002)(230922051799003)(64100799003)(82310400011)(1800799012)(186009)(451199024)(46966006)(40470700004)(36840700001)(426003)(26005)(1076003)(336012)(2616005)(966005)(478600001)(6666004)(47076005)(83380400001)(2906002)(5660300002)(41300700001)(70586007)(54906003)(70206006)(316002)(8676002)(8936002)(4326008)(6916009)(36860700001)(82740400003)(36756003)(103116003)(86362001)(356005)(81166007)(40460700003)(40480700001)(36900700001);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Jan 2024 11:22:04.1227
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: f1012798-9681-4929-ee78-08dc0de08b71
X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com]
X-MS-Exchange-CrossTenant-AuthSource:
	MWH0EPF000989EC.namprd02.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA0PR12MB8349

Hi,

Refer https://lore.kernel.org/all/alpine.DEB.2.22.394.2312071341540.1265976@ubuntu-linux-20-04-desktop/T/
for the previous discussion on this issue.

Also, the linux earlycon hvc driver has been fixed.
See https://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty.git/commit/?h=tty-next&id=0ec058ece2f933aed66b76bd5cb9b5e6764853c3

Changes from v1:-
1. Split the change across 3 patches as per the design consensus.

v2 :-
1. Reordered the patches.

Ayan Kumar Halder (2):
  xen/arm: Introduce CONFIG_PARTIAL_EMULATION and "partial-emulation"
    cmd option
  xen/arm: arm32: Add emulation of Debug Data Transfer Registers

Michal Orzel (1):
  xen/arm: arm64: Add emulation of Debug Data Transfer Registers

 docs/misc/xen-command-line.pandoc    |  7 ++++++
 xen/arch/arm/Kconfig                 |  8 +++++++
 xen/arch/arm/arm64/vsysreg.c         | 25 +++++++++++++++----
 xen/arch/arm/include/asm/arm64/hsr.h |  3 +++
 xen/arch/arm/include/asm/cpregs.h    |  2 ++
 xen/arch/arm/include/asm/regs.h      |  6 +++++
 xen/arch/arm/traps.c                 |  3 +++
 xen/arch/arm/vcpreg.c                | 36 ++++++++++++++++++++--------
 8 files changed, 76 insertions(+), 14 deletions(-)

-- 
2.25.1



From xen-devel-bounces@lists.xenproject.org Fri Jan 05 11:22:37 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 05 Jan 2024 11:22:37 +0000
Received: from list by lists.xenproject.org with outflank-mailman.662143.1032074 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLiHb-00030S-Fp; Fri, 05 Jan 2024 11:22:35 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 662143.1032074; Fri, 05 Jan 2024 11:22:35 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLiHb-00030L-Cm; Fri, 05 Jan 2024 11:22:35 +0000
Received: by outflank-mailman (input) for mailman id 662143;
 Fri, 05 Jan 2024 11:22:33 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=0BO+=IP=amd.com=ayan.kumar.halder@srs-se1.protection.inumbo.net>)
 id 1rLiHZ-0002gg-HS
 for xen-devel@lists.xenproject.org; Fri, 05 Jan 2024 11:22:33 +0000
Received: from NAM11-DM6-obe.outbound.protection.outlook.com
 (mail-dm6nam11on20619.outbound.protection.outlook.com
 [2a01:111:f400:7eaa::619])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id b7a01b58-abbc-11ee-98ef-6d05b1d4d9a1;
 Fri, 05 Jan 2024 12:22:32 +0100 (CET)
Received: from BL1PR13CA0257.namprd13.prod.outlook.com (2603:10b6:208:2ba::22)
 by IA0PR12MB8226.namprd12.prod.outlook.com (2603:10b6:208:403::21)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7159.14; Fri, 5 Jan
 2024 11:22:29 +0000
Received: from BL02EPF0001A0FF.namprd03.prod.outlook.com
 (2603:10b6:208:2ba:cafe::25) by BL1PR13CA0257.outlook.office365.com
 (2603:10b6:208:2ba::22) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7181.10 via Frontend
 Transport; Fri, 5 Jan 2024 11:22:29 +0000
Received: from SATLEXMB03.amd.com (165.204.84.17) by
 BL02EPF0001A0FF.mail.protection.outlook.com (10.167.242.106) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.7159.9 via Frontend Transport; Fri, 5 Jan 2024 11:22:28 +0000
Received: from SATLEXMB05.amd.com (10.181.40.146) by SATLEXMB03.amd.com
 (10.181.40.144) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.34; Fri, 5 Jan
 2024 05:22:28 -0600
Received: from SATLEXMB03.amd.com (10.181.40.144) by SATLEXMB05.amd.com
 (10.181.40.146) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.34; Fri, 5 Jan
 2024 05:22:28 -0600
Received: from xcbayankuma40.xilinx.com (10.180.168.240) by SATLEXMB03.amd.com
 (10.181.40.144) with Microsoft SMTP Server id 15.1.2507.34 via
 Frontend Transport; Fri, 5 Jan 2024 05:22:27 -0600
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: b7a01b58-abbc-11ee-98ef-6d05b1d4d9a1
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=mMVBRpn8645p/6azceEfdPkUaEUUuvqtckF86NsCni8cavGjmhXrdvLyMpm3Y8Bwk3Uhd46JteV9yPyjbt3Yzro4WSCSV33JvjXXnzrJyGgRvA1wqVbHev7FaAC5yeNllvVq2BghWYq4QTDJwkM0Oj5Ur3yyKo/CEy12dFMMKLD0if5zRAVimw5PyeI/Pr5qigX0SAIFp3KBzVkKVmHO98Gj6zG53CKnuCRWapCSA0Beu/KHF22Ifj2z6JGj5VPvp/goL7Vmp3Nc+qLpRy7o8q3NxyXJ2Oe2Cx0DUsWkw95kuJTmjkErH5lCi1oA+9QanT3YXYQ6FpudFMHmcMKt9Q==
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=pIDvVmOkKFngVRiJ+yzMlRj3x/lbGAVWUO/0Wysz9hM=;
 b=jlMmg3PHSkRtoeQeprCYj9tU0az1avOJfjfiEoHDjpBwNnzf6O9xcY0Ki4Yx0FHJPBey7uoAo76Eti9UeugzeHeSPpx43bsg8JxYo1CUqYrCCk0B1yCxmoUhIZcUfZnvHhgLXOIx43pgWDUWcIrKM+O8uFI+th5px99ZRRrYr99V7hAA2+PcJL6hftV6Wqh9aohNOcaWYdxMwGxfHeMAzGHO4zRXVZTsJLsL7q+23hmPWB4peFMXL1hTWZZ71EPypbxPQcdDyjvNEVBbMmMRKGAe6xuVCMKiOBmrkm5SBUKJat3L8Uzd0U8irI2JumUrZwVr+974NS3IAKOBn3ZcpA==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=lists.xenproject.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)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=pIDvVmOkKFngVRiJ+yzMlRj3x/lbGAVWUO/0Wysz9hM=;
 b=AB2rsWYTrAGZsxnuJyzufHWLhhrmHh6+PgaWbSZVJDIOnnr+tKDCg3A01pNDoueGOQo7IIQDofTy8WWRuoKLXmBXdwrRYLF4LAdujFQtxJvWlfqfeOli3v2TKNoTz5dC5YCQ7OnDq8zxxZlhLwjlMPKxna18z/tiBinhtd3mELs=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=SATLEXMB03.amd.com; pr=C
From: Ayan Kumar Halder <ayan.kumar.halder@amd.com>
To: <xen-devel@lists.xenproject.org>
CC: <sstabellini@kernel.org>, <stefano.stabellini@amd.com>, <julien@xen.org>,
	<Volodymyr_Babchuk@epam.com>, <bertrand.marquis@arm.com>,
	<michal.orzel@amd.com>, Ayan Kumar Halder <ayan.kumar.halder@amd.com>
Subject: [XEN v3 1/3] xen/arm: Introduce CONFIG_PARTIAL_EMULATION and "partial-emulation" cmd option
Date: Fri, 5 Jan 2024 11:21:54 +0000
Message-ID: <20240105112156.154807-2-ayan.kumar.halder@amd.com>
X-Mailer: git-send-email 2.25.1
In-Reply-To: <20240105112156.154807-1-ayan.kumar.halder@amd.com>
References: <20240105112156.154807-1-ayan.kumar.halder@amd.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: BL02EPF0001A0FF:EE_|IA0PR12MB8226:EE_
X-MS-Office365-Filtering-Correlation-Id: 93ef1c4d-3c84-4804-0729-08dc0de09a2f
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam: BCL:0;
X-Microsoft-Antispam-Message-Info:
	/cHKAoeBxEBXOczf5GlfLHWLxqr5FPMelFMl0hxq/v6NlsfJm0ntBbrU+j4n5ChrhGT/cQKs0svZGCw5LnDOIHidJaMFuzXeFqHx9PBE65BRJzekdIuAI1ttQ5V57yhP1yMutigS3UXGS22TRYu3HJ9BlrTDKZgnkA+lPnumu7XiI9jXlNn90Rb8d0zSYrX6bXlF0P3LCgojrS8fQLEh2oQi8Gzrzdt/eSpV9aqjQwdnUFv9AslErZC+CrQYz4MWUECE5RGcI8EvImtxxA4he++JZl5426yTQVbOh2mPMPwkDvsYyVcazA7YzIgJ7x2aAn0A/J/a5SwmSROa1LeE03X5/9S4ZnAmf3Z6dMXhLOTM4lRlA9Bp7ZpG0nFVo6aG5Sv0cqRBo6EC1KpsAD5RIYcy89Bd+RFRLES7pGw9CVe8a1lVevksMU1rmlQ6/tPYJLp1NmfW/DVvQTFba5wjWJ7JlmAwTMC8bZFJrOC2fozwwgdX6ctbuNLVpYUjmxbVSEAASxrpY6U45mKdnqkITxfE+6tHf4Wn6GbwPWo+lVDMb+1QUhHPh0nDSh+LoJnzIJ6s4MPrPARt+fh/tW3g2Njk+ZPbvPBcnzDjP9fpVwtRe4MO+cdxfMcYRqFWICBn4sg1TVlAxqB5wYUc9yR5Jog+LoBNGuVsUvfNtK7sx4j3cMI7/NveYGeWY+2SVen/6hhO25cqzfZ4pHPjPXkprV18x4h4TRumyVROBS5W6Z+8uERatDVGIeA8pSvRgK3q7weWQWL1WkQuXcAsWc8qEA==
X-Forefront-Antispam-Report:
	CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB03.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230031)(4636009)(39860400002)(136003)(346002)(376002)(396003)(230922051799003)(451199024)(64100799003)(1800799012)(82310400011)(186009)(40470700004)(36840700001)(46966006)(41300700001)(36860700001)(83380400001)(47076005)(82740400003)(103116003)(86362001)(356005)(70586007)(4326008)(54906003)(70206006)(81166007)(8676002)(5660300002)(316002)(2906002)(26005)(426003)(1076003)(336012)(8936002)(6666004)(2616005)(6916009)(36756003)(478600001)(40460700003)(40480700001)(36900700001);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Jan 2024 11:22:28.9907
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 93ef1c4d-3c84-4804-0729-08dc0de09a2f
X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB03.amd.com]
X-MS-Exchange-CrossTenant-AuthSource:
	BL02EPF0001A0FF.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA0PR12MB8226

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. We call them as partial emulation.

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 partially emulated as RAZ/WI and they can be enclosed
within CONFIG_PARTIAL_EMULATION.

Further, "partial-emulation" command line option enables us to
enable/disable partial emulation at run time. While CONFIG_PARTIAL_EMULATION
enables support for partial emulation at compile time (ie 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, customers
can use cripts 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.

Signed-off-by: Ayan Kumar Halder <ayan.kumar.halder@amd.com>
---
Changes from v1 :-
1. New patch introduced in v2.

v2 :-
1. Reordered the patches so that the config and command line option is
introduced in the first patch.

 docs/misc/xen-command-line.pandoc | 7 +++++++
 xen/arch/arm/Kconfig              | 8 ++++++++
 xen/arch/arm/include/asm/regs.h   | 6 ++++++
 xen/arch/arm/traps.c              | 3 +++
 4 files changed, 24 insertions(+)

diff --git a/docs/misc/xen-command-line.pandoc b/docs/misc/xen-command-line.pandoc
index 8e65f8bd18..dd2a76fb19 100644
--- a/docs/misc/xen-command-line.pandoc
+++ b/docs/misc/xen-command-line.pandoc
@@ -1949,6 +1949,13 @@ This option is ignored in **pv-shim** mode.
 
 > Default: `on`
 
+### partial-emulation (arm)
+> `= <boolean>`
+
+> Default: `false`
+
+Flag to enable or disable partial emulation of registers
+
 ### pci
     = List of [ serr=<bool>, perr=<bool> ]
 
diff --git a/xen/arch/arm/Kconfig b/xen/arch/arm/Kconfig
index 50e9bfae1a..8f25d9cba0 100644
--- a/xen/arch/arm/Kconfig
+++ b/xen/arch/arm/Kconfig
@@ -225,6 +225,14 @@ config STATIC_EVTCHN
 	  This option enables establishing static event channel communication
 	  between domains on a dom0less system (domU-domU as well as domU-dom0).
 
+config PARTIAL_EMULATION
+    bool "Enable partial emulation for registers"
+    default y
+    help
+      This option enabled partial emulation for registers to avoid guests
+      crashing when accessing registers which are not optional but has not been
+      emulated to its complete functionality.
+
 endmenu
 
 menu "ARM errata workaround via the alternative framework"
diff --git a/xen/arch/arm/include/asm/regs.h b/xen/arch/arm/include/asm/regs.h
index f998aedff5..b71fa20f91 100644
--- a/xen/arch/arm/include/asm/regs.h
+++ b/xen/arch/arm/include/asm/regs.h
@@ -13,6 +13,12 @@
 
 #define psr_mode(psr,m) (((psr) & PSR_MODE_MASK) == (m))
 
+/*
+ * opt_partial_emulation: If true, partial emulation for registers will be
+ * enabled.
+ */
+extern bool opt_partial_emulation;
+
 static inline bool regs_mode_is_32bit(const struct cpu_user_regs *regs)
 {
 #ifdef CONFIG_ARM_32
diff --git a/xen/arch/arm/traps.c b/xen/arch/arm/traps.c
index 9c10e8f78c..d5fb9c1035 100644
--- a/xen/arch/arm/traps.c
+++ b/xen/arch/arm/traps.c
@@ -42,6 +42,9 @@
 #include <asm/vgic.h>
 #include <asm/vtimer.h>
 
+bool opt_partial_emulation = false;
+boolean_param("partial-emulation", opt_partial_emulation);
+
 /* The base of the stack must always be double-word aligned, which means
  * that both the kernel half of struct cpu_user_regs (which is pushed in
  * entry.S) and struct cpu_info (which lives at the bottom of a Xen
-- 
2.25.1



From xen-devel-bounces@lists.xenproject.org Fri Jan 05 11:23:20 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 05 Jan 2024 11:23:20 +0000
Received: from list by lists.xenproject.org with outflank-mailman.662146.1032084 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLiIJ-0003it-Pd; Fri, 05 Jan 2024 11:23:19 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 662146.1032084; Fri, 05 Jan 2024 11:23:19 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLiIJ-0003ik-LV; Fri, 05 Jan 2024 11:23:19 +0000
Received: by outflank-mailman (input) for mailman id 662146;
 Fri, 05 Jan 2024 11:23:18 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=0BO+=IP=amd.com=ayan.kumar.halder@srs-se1.protection.inumbo.net>)
 id 1rLiII-0002gg-Nj
 for xen-devel@lists.xenproject.org; Fri, 05 Jan 2024 11:23:18 +0000
Received: from NAM02-SN1-obe.outbound.protection.outlook.com
 (mail-sn1nam02on2061f.outbound.protection.outlook.com
 [2a01:111:f400:7ea9::61f])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id d260058b-abbc-11ee-98ef-6d05b1d4d9a1;
 Fri, 05 Jan 2024 12:23:17 +0100 (CET)
Received: from MW4PR04CA0095.namprd04.prod.outlook.com (2603:10b6:303:83::10)
 by DS0PR12MB7581.namprd12.prod.outlook.com (2603:10b6:8:13d::21) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7159.13; Fri, 5 Jan
 2024 11:23:12 +0000
Received: from MWH0EPF000989EB.namprd02.prod.outlook.com
 (2603:10b6:303:83:cafe::b6) by MW4PR04CA0095.outlook.office365.com
 (2603:10b6:303:83::10) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7159.15 via Frontend
 Transport; Fri, 5 Jan 2024 11:23:12 +0000
Received: from SATLEXMB04.amd.com (165.204.84.17) by
 MWH0EPF000989EB.mail.protection.outlook.com (10.167.241.138) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.7159.9 via Frontend Transport; Fri, 5 Jan 2024 11:23:11 +0000
Received: from SATLEXMB03.amd.com (10.181.40.144) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.34; Fri, 5 Jan
 2024 05:23:10 -0600
Received: from xcbayankuma40.xilinx.com (10.180.168.240) by SATLEXMB03.amd.com
 (10.181.40.144) with Microsoft SMTP Server id 15.1.2507.34 via
 Frontend Transport; Fri, 5 Jan 2024 05:23:09 -0600
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: d260058b-abbc-11ee-98ef-6d05b1d4d9a1
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=UsbNK+KauPCj+SXTuxBmem+lKWAkymMrx1NSP3aVAUtE/6M3BBIHRDTxTfXg0lrkaudTH86ruir3mp4eoUe+SoAv71eBDm6HbihMhIkq6j6AcSRkltCyNvbITLW8+r/Eg98ch/8hEuTBZRSM4vDoZ1npW7A4YAZxRgZw17O4kHuwzxOf0LH2wpUwslsRR8rr1hzdzH6/6ehKVOAjeQ4JYQTyx9bJqcSBcs5NuuW35Id4MdyXZkw9SOemD96+3qOdppBzlCFSOkSRBOOSsvfx/JlR4cDrOOBp6BznZ84Xjf0H9fOLf5oMtaDtiXtQTY6/D38hmESDeu43KC4fkITq4g==
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=3vEYAbR5qQnhqgkIaraifN+bUkAXWzEogvZPRK6DI0Q=;
 b=YqIrW5KnHABjyFpFpHrkaC4tgL2VcF4bf9ti8iaiyxDXd5jpS8qVblc1flX4QRjEHUuRXgTDOMkcl0UfJ/hyPzVdz44PWt/JNsmmgRZXJhH+yS5bi85wxr5J+xM1XJ8Bp0G04+PRnS+8rtkBWfBrSMLT4Y/MD11KqwaocKi9ivWcFcghsQGz9SO3ieJ6VeSGGdKCKD6jkw+GM1pRKi7NkRCR27SHYAo+2WELSLuZLF1OBLO14qGwVmXBDsnGhHdndI5BjBYNMg1AnfNPXpLNj9hOxUKmdfvrFpzzUq8+eoYDFzW+r9T9sZ/2ck1mxkM2YfeeK1KYPAr2bfsw6QKLSA==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=lists.xenproject.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)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=3vEYAbR5qQnhqgkIaraifN+bUkAXWzEogvZPRK6DI0Q=;
 b=YmKQd2mOLMqoSZzJs+/HBX7Uih28jQ0BkFKDp7d9mfo+wgvEdf7aMbRLTUJ1G/0dXpewyyZR4LNnq+BC3qA1rjvG78C0poJ53ueXPUhUppGqi+gkSXWVH52+WNERG/lRULNjxteYPddO4DkysZ93jAH0Acn7xvVQ6vsePsWMCQw=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C
From: Ayan Kumar Halder <ayan.kumar.halder@amd.com>
To: <xen-devel@lists.xenproject.org>
CC: <sstabellini@kernel.org>, <stefano.stabellini@amd.com>, <julien@xen.org>,
	<Volodymyr_Babchuk@epam.com>, <bertrand.marquis@arm.com>,
	<michal.orzel@amd.com>, Ayan Kumar Halder <ayan.kumar.halder@amd.com>
Subject: [XEN v3 2/3] xen/arm: arm64: Add emulation of Debug Data Transfer Registers
Date: Fri, 5 Jan 2024 11:21:55 +0000
Message-ID: <20240105112156.154807-3-ayan.kumar.halder@amd.com>
X-Mailer: git-send-email 2.25.1
In-Reply-To: <20240105112156.154807-1-ayan.kumar.halder@amd.com>
References: <20240105112156.154807-1-ayan.kumar.halder@amd.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: MWH0EPF000989EB:EE_|DS0PR12MB7581:EE_
X-MS-Office365-Filtering-Correlation-Id: 376ddd6b-b2bc-4c8e-eb23-08dc0de0b3c2
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam: BCL:0;
X-Microsoft-Antispam-Message-Info:
	qqLbAVKkBuicqnu6OwiryFDjyXdApzVvXHopdV0aSb4S+rDJPYaI6kJ36vR2CzpHvC0xESqGQZqWcPLiJXHFSPJOjJAf41FxLfctlsIo6lQili7FpPGEn6hO5HYihXJkLaQhq3qX68rgh2D8x/EJFccu6br0ddGPFFkLXqiQXBvIp8kVyBxo5R84kVNU3GF9L0/kekEiSemIxSfZgstK+0xFLTbHgY1PpBIbd+qciuWU0kg5Az8GtVmssWvOjA0X/hg4rcF+/vqY8nmAh6Ej3QmQYAdOAfN9Zb3A53Crt5bhgcVHW9sXUp1r+ZH+6zFBHdhF73eMj0RUiWVv/mS0vHCBQeq7zsw+wPsWfSPcjGyIHOQw6SHIHtEITtKlZEpO3DixcTdNVBvQqvp4kITWSq7pVuzsfYD3waYcEer9XJPuCNmkOXTSSI1wH+gBCyJcQvhc//oAOMgoODfndQ3JrVLOYkgWHJ8DQkzc0nwdm8Bd6vw4KPoxp8JmMGDwitYHRm0Qh6gal6gNXfBIuhlPcqRQhHceWlmDpPT9wctF1INMUgJVMMxqlwXJMK/2OGUL1VCiqObFhxVDEY9LXI/kfglsVSt7n4BTHoE8gRmknrG1+epABce8UBwVIQLAcMsD5PTgX/IeQIAQ8pg5KyxwBm056fTfZahcYHSJG2+wogkeeGzeViNKs2tn7ALTkQtf4yws+NXmTdIaFBF5lDp7rvmwAevKtfDuB5tkNWdrFWfZfdiuFgBjnRRUX4cjcUBkLZNktU3QwmecX0w53BOhlQ==
X-Forefront-Antispam-Report:
	CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230031)(4636009)(39860400002)(376002)(346002)(396003)(136003)(230922051799003)(64100799003)(1800799012)(451199024)(82310400011)(186009)(46966006)(36840700001)(40470700004)(86362001)(103116003)(36756003)(356005)(81166007)(6666004)(478600001)(70586007)(6916009)(316002)(70206006)(26005)(1076003)(336012)(2616005)(426003)(4326008)(2906002)(5660300002)(8936002)(8676002)(54906003)(36860700001)(82740400003)(40480700001)(83380400001)(47076005)(41300700001)(40460700003)(36900700001);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Jan 2024 11:23:11.8092
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 376ddd6b-b2bc-4c8e-eb23-08dc0de0b3c2
X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com]
X-MS-Exchange-CrossTenant-AuthSource:
	MWH0EPF000989EB.namprd02.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS0PR12MB7581

From: Michal Orzel <michal.orzel@amd.com>

Currently if user enables HVC_DCC config option in Linux, it invokes access
to debug data transfer registers (ie DBGDTRTX_EL0 on arm64, DBGDTRTXINT on
arm32). As these registers are not emulated, Xen injects an undefined
exception to the VM and Linux (running as VM) crashes.

We wish to avoid this crash by adding a partial emulation of DBGDTRTX_EL0.
MDCCSR_EL0 is emulated as TXfull.

Refer ARM DDI 0487J.a ID042523, D19.3.8, DBGDTRTX_EL0
"If TXfull is set to 1, set DTRRX and DTRTX to UNKNOWN".

Thus, any OS is expected to read MDCCSR_EL0 and check for TXfull before
using DBGDTRTX_EL0. Linux does it via hvc_dcc_init() ---> hvc_dcc_check(),
it returns -ENODEV. In this way, we are preventing the VM from accessing
DBGDTRTX_EL0 register.

We also emulate DBGDTR[TR]X_EL0 as RAZ/WI.

Signed-off-by: Michal Orzel <michal.orzel@amd.com>
Signed-off-by: Ayan Kumar Halder <ayan.kumar.halder@amd.com>
---
Changes from

v1 :- 1. DBGDTR_EL0 does not emulate RXfull. This is to avoid giving the OS any
indication that the RX buffer is full and is waiting to be read.

2. In Arm32, DBGOSLSR is emulated. Also DBGDTRTXINT is emulated at EL0 only.

3. Fixed the commit message and inline code comments.

v2 :- 1. Split the patch into two (separate patches for arm64 and arm32).
2. Removed the "fail" label.
3. Fixed the commit message.

 xen/arch/arm/arm64/vsysreg.c         | 25 +++++++++++++++++++++----
 xen/arch/arm/include/asm/arm64/hsr.h |  3 +++
 2 files changed, 24 insertions(+), 4 deletions(-)

diff --git a/xen/arch/arm/arm64/vsysreg.c b/xen/arch/arm/arm64/vsysreg.c
index b5d54c569b..2f70eea2e5 100644
--- a/xen/arch/arm/arm64/vsysreg.c
+++ b/xen/arch/arm/arm64/vsysreg.c
@@ -159,9 +159,6 @@ void do_sysreg(struct cpu_user_regs *regs,
      *
      * Unhandled:
      *    MDCCINT_EL1
-     *    DBGDTR_EL0
-     *    DBGDTRRX_EL0
-     *    DBGDTRTX_EL0
      *    OSDTRRX_EL1
      *    OSDTRTX_EL1
      *    OSECCR_EL1
@@ -172,11 +169,31 @@ void do_sysreg(struct cpu_user_regs *regs,
     case HSR_SYSREG_MDSCR_EL1:
         return handle_raz_wi(regs, regidx, hsr.sysreg.read, hsr, 1);
     case HSR_SYSREG_MDCCSR_EL0:
+    {
         /*
+         * Xen doesn't expose a real (or emulated) Debug Communications Channel
+         * (DCC) to a domain. Yet the Arm ARM implies this is not an optional
+         * feature. So some domains may start to probe it. For instance, the
+         * HVC_DCC driver in Linux (since f377775dc083 and at least up to v6.7),
+         * will try to write some characters and check if the transmit buffer
+         * has emptied. By setting TX status bit to indicate the transmit buffer
+         * is full, we would hint the OS that the DCC is probably not working.
+         *
+         * Bit 29: TX full
+         *
          * Accessible at EL0 only if MDSCR_EL1.TDCC is set to 0. We emulate that
          * register as RAZ/WI above. So RO at both EL0 and EL1.
          */
-        return handle_ro_raz(regs, regidx, hsr.sysreg.read, hsr, 0);
+        return handle_ro_read_val(regs, regidx, hsr.sysreg.read, hsr, 0,
+                                  1U << 29);
+    }
+#ifdef CONFIG_PARTIAL_EMULATION
+    case HSR_SYSREG_DBGDTR_EL0:
+    /* DBGDTR[TR]X_EL0 share the same encoding */
+    case HSR_SYSREG_DBGDTRTX_EL0:
+        if ( opt_partial_emulation )
+            return handle_raz_wi(regs, regidx, hsr.sysreg.read, hsr, 0);
+#endif
     HSR_SYSREG_DBG_CASES(DBGBVR):
     HSR_SYSREG_DBG_CASES(DBGBCR):
     HSR_SYSREG_DBG_CASES(DBGWVR):
diff --git a/xen/arch/arm/include/asm/arm64/hsr.h b/xen/arch/arm/include/asm/arm64/hsr.h
index e691d41c17..1495ccddea 100644
--- a/xen/arch/arm/include/asm/arm64/hsr.h
+++ b/xen/arch/arm/include/asm/arm64/hsr.h
@@ -47,6 +47,9 @@
 #define HSR_SYSREG_OSDLR_EL1      HSR_SYSREG(2,0,c1,c3,4)
 #define HSR_SYSREG_DBGPRCR_EL1    HSR_SYSREG(2,0,c1,c4,4)
 #define HSR_SYSREG_MDCCSR_EL0     HSR_SYSREG(2,3,c0,c1,0)
+#define HSR_SYSREG_DBGDTR_EL0     HSR_SYSREG(2,3,c0,c4,0)
+#define HSR_SYSREG_DBGDTRTX_EL0   HSR_SYSREG(2,3,c0,c5,0)
+#define HSR_SYSREG_DBGDTRRX_EL0   HSR_SYSREG(2,3,c0,c5,0)
 
 #define HSR_SYSREG_DBGBVRn_EL1(n) HSR_SYSREG(2,0,c0,c##n,4)
 #define HSR_SYSREG_DBGBCRn_EL1(n) HSR_SYSREG(2,0,c0,c##n,5)
-- 
2.25.1



From xen-devel-bounces@lists.xenproject.org Fri Jan 05 11:23:25 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 05 Jan 2024 11:23:25 +0000
Received: from list by lists.xenproject.org with outflank-mailman.662148.1032094 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLiIP-00040m-4O; Fri, 05 Jan 2024 11:23:25 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 662148.1032094; Fri, 05 Jan 2024 11:23:25 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLiIP-00040f-1U; Fri, 05 Jan 2024 11:23:25 +0000
Received: by outflank-mailman (input) for mailman id 662148;
 Fri, 05 Jan 2024 11:23:23 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=0BO+=IP=amd.com=ayan.kumar.halder@srs-se1.protection.inumbo.net>)
 id 1rLiIN-0003zp-Te
 for xen-devel@lists.xenproject.org; Fri, 05 Jan 2024 11:23:23 +0000
Received: from NAM11-CO1-obe.outbound.protection.outlook.com
 (mail-co1nam11on20600.outbound.protection.outlook.com
 [2a01:111:f403:2416::600])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id d45db023-abbc-11ee-9b0f-b553b5be7939;
 Fri, 05 Jan 2024 12:23:21 +0100 (CET)
Received: from BL1PR13CA0257.namprd13.prod.outlook.com (2603:10b6:208:2ba::22)
 by MN2PR12MB4568.namprd12.prod.outlook.com (2603:10b6:208:260::12)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7159.17; Fri, 5 Jan
 2024 11:23:16 +0000
Received: from BL02EPF0001A0FF.namprd03.prod.outlook.com
 (2603:10b6:208:2ba:cafe::4) by BL1PR13CA0257.outlook.office365.com
 (2603:10b6:208:2ba::22) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7181.10 via Frontend
 Transport; Fri, 5 Jan 2024 11:23:16 +0000
Received: from SATLEXMB03.amd.com (165.204.84.17) by
 BL02EPF0001A0FF.mail.protection.outlook.com (10.167.242.106) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.7159.9 via Frontend Transport; Fri, 5 Jan 2024 11:23:16 +0000
Received: from SATLEXMB08.amd.com (10.181.40.132) by SATLEXMB03.amd.com
 (10.181.40.144) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.34; Fri, 5 Jan
 2024 05:23:16 -0600
Received: from SATLEXMB03.amd.com (10.181.40.144) by SATLEXMB08.amd.com
 (10.181.40.132) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.32; Fri, 5 Jan
 2024 03:23:15 -0800
Received: from xcbayankuma40.xilinx.com (10.180.168.240) by SATLEXMB03.amd.com
 (10.181.40.144) with Microsoft SMTP Server id 15.1.2507.34 via
 Frontend Transport; Fri, 5 Jan 2024 05:23:14 -0600
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: d45db023-abbc-11ee-9b0f-b553b5be7939
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=ElTwWiiNsKAbSRKwsHoFSxtq2Gbn6MPfnNTfQ5WoMtP7axax7/kX+LD2M7PXOh9vmmiiz0YJhLfdXLrGLiKzd08TBSlTrJeSsKXg3X/w5K0lyh88FZF2ZOpzGPqQLh8R7E6p9sYW0wQdub2Dny7um3FlGrRDD5kj0CTuI/8Dn4QGBk54G1cx81DZTVSrxUF5ad6FBIGlfE/V+hbZkgU5YO96jXajSCRTvu0BBdNDP5wf0KmxU/fD9KLdx2cPtmA5gXSg1kpG/O+eB3cpMLv+0syyPh/zQK3clzkSVKJ6Y8VXMgRc7XrXvX9mntsqpi6K0sPA1Bnma85k4Wrlotm9Ng==
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=dTZ0gV6JvJaaRc3bSM9b2x61yi4ymB65XMOL+sI8HO0=;
 b=C4pHbam01Q/JHwV1OsKyEM08hN+MYsI6vZlvbcUk+f21zVLeKVhSGfKQcEKMECNqBI+JD8FqRML+ENe2xRqxrREc5L5wwsbFqtxh0vWHKd2a515jD2VxJWpPUex/RHNyLjTKrhQ4KgmeApCc71Pt+V1dXmoxx8uzzyg5TGs2xRxwCmC2TSRGzLuCcbNthAeOzXze72ewPb4Wfq+0/PRziCuAXPuxHLkxyvJZ/mum1PrgWEUUrFev2JjjWIOpAt3WLpBOBEC73Es5oMbtIq2XSFUyViQGr7coGG6YG0iZa+iMjm8c8kqnyTDWPfpYv0ZbwssjPGsjeKCFSqjBIzyRgQ==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=lists.xenproject.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)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=dTZ0gV6JvJaaRc3bSM9b2x61yi4ymB65XMOL+sI8HO0=;
 b=Z2urBQHQFMUmmsxYqxsksqYM4xwzd+yi3EYP+VobblCEJhCvEabI1qUbgYQlnDt8bl7MdxanfESz4Yksl2i2i0eTs8kkatf/uaqz07UEDCSofRYI6V8n1GlESno1YtZjIFKlORVXcCx9PUFweKiFKYlWoY+YjSdrnwlXkprIWMk=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=SATLEXMB03.amd.com; pr=C
From: Ayan Kumar Halder <ayan.kumar.halder@amd.com>
To: <xen-devel@lists.xenproject.org>
CC: <sstabellini@kernel.org>, <stefano.stabellini@amd.com>, <julien@xen.org>,
	<Volodymyr_Babchuk@epam.com>, <bertrand.marquis@arm.com>,
	<michal.orzel@amd.com>, Ayan Kumar Halder <ayan.kumar.halder@amd.com>
Subject: [XEN v3 3/3] xen/arm: arm32: Add emulation of Debug Data Transfer Registers
Date: Fri, 5 Jan 2024 11:21:56 +0000
Message-ID: <20240105112156.154807-4-ayan.kumar.halder@amd.com>
X-Mailer: git-send-email 2.25.1
In-Reply-To: <20240105112156.154807-1-ayan.kumar.halder@amd.com>
References: <20240105112156.154807-1-ayan.kumar.halder@amd.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: BL02EPF0001A0FF:EE_|MN2PR12MB4568:EE_
X-MS-Office365-Filtering-Correlation-Id: a28ecb33-580c-4420-b16d-08dc0de0b67c
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam: BCL:0;
X-Microsoft-Antispam-Message-Info:
	iMc/GfiAlIpa0utVAqG7GskI5g376XoPxRdmFLg5ufxELDp2zH0jDxO/8T8Sj0jKwSDv9+mq5eFQy72A9L3QIof00qJLZDR5n/LIKGSuvqB09ck7S8SHV0mZC4I5u/JiGPSh1Qq7g6p5+9oW0PfKBmgP3fTpE+CAeXkTAveovMVZhVtfdIlDvHngoun1IQZJU6PS9OQurYcmBdufM3C/0NI618Ltgl37eYljGTNV/bT3SPAJN/+eGRE0+MECdm+bmzfyEexHWHNFrzXYWQ7ry/9O6dgAb/2m7XOrb5uUmwDsrfbFc8XFBSU/qcTmzesogFtZUJ59SfEziuyrqdNC9qZQNcnr0CP0u0LTh0GCsN5fE1y0qE+8Rxsat0seGwj4+1HoX0m5ZW5Y5+0ya9lR3pYBZylk9cUJ4pkrhLJFCDBF3FLe0ak5MJA0dsysA2EWOSopEbsNI0CzhYMsNzXNSj1lFbFUQzQ6ABkmA5mMtXJZvHKlkwlHWu0O1MK0hpKAe58hYsPurH6vVZqa0Onr/HmTUz3jfm1G1oJWrWonyKkLuDKGxz0IbxLb4V7tg+SOMxiSAFe6O+5IuM3whzaeJkSJzLgfZu/2EPacCReEe3eEUNkDBpx6FNGXavMx8zbrRx5qpsFlfLgOC6KObXncVS4DPtq6LeejoRWFPSFqQjDQd5TQ/gLX5Btzj9ar1TnYOVpfetsH1bMhPbYuQG2EvP/LNzYYVoC3Nri+UlpUH0bbyYFgzPxbBZBJwZSCZREU+huTsAebsaQNvqKlhOv15RqfXJwIfhQNqCOzZ3u4XaMaTB30i1I/mYo65yrnvcia
X-Forefront-Antispam-Report:
	CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB03.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230031)(4636009)(346002)(136003)(376002)(39860400002)(396003)(230922051799003)(230273577357003)(230173577357003)(82310400011)(186009)(451199024)(1800799012)(64100799003)(46966006)(40470700004)(36840700001)(40460700003)(40480700001)(2616005)(426003)(26005)(1076003)(336012)(6666004)(478600001)(82740400003)(103116003)(36756003)(86362001)(81166007)(356005)(2906002)(41300700001)(36860700001)(47076005)(83380400001)(70586007)(6916009)(54906003)(316002)(70206006)(5660300002)(4326008)(8936002)(8676002)(36900700001);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Jan 2024 11:23:16.4759
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: a28ecb33-580c-4420-b16d-08dc0de0b67c
X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB03.amd.com]
X-MS-Exchange-CrossTenant-AuthSource:
	BL02EPF0001A0FF.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR12MB4568

DBGOSLSR is emulated in the same way as its AArch64 variant (ie OSLSR_EL1).
This is to ensure that DBGOSLSR.OSLK is 0, thus MDSCR_EL1.TXfull is treated
as UNK/SBZP.
Thus only MDCCSR_EL0 can be emulated (which is DBGDSCRINT on arm32).
DBGDSCRINT can be accessed at EL0 as DBGDSCREXT is emulated as RAZ (as
DBGOSLSR.OSLK == 0). DBGDSCRINT.TXfull is set to 1.

Refer ARM DDI 0487J.a ID042523, G8.3.19, DBGDTRTXint
"If TXfull is set to 1, set DTRTX to UNKNOWN".
So, DBGDTR[TR]XINT is emulated as RAZ/WI.

Signed-off-by: Ayan Kumar Halder <ayan.kumar.halder@amd.com>
---
Changes from

v1 :- 1. DBGDTR_EL0 does not emulate RXfull. This is to avoid giving the OS any
indication that the RX buffer is full and is waiting to be read.

2. In Arm32, DBGOSLSR is emulated. Also DBGDTRTXINT is emulated at EL0 only.

3. Fixed the commit message and inline code comments.

v2 :- 1. Split the patch into two (separate patches for arm64 and arm32).
2. Fixed in line comments and style related issues.
3. Updated commit message to mention DBGDSCRINT handling.

 xen/arch/arm/include/asm/cpregs.h |  2 ++
 xen/arch/arm/vcpreg.c             | 36 ++++++++++++++++++++++---------
 2 files changed, 28 insertions(+), 10 deletions(-)

diff --git a/xen/arch/arm/include/asm/cpregs.h b/xen/arch/arm/include/asm/cpregs.h
index 6b083de204..aec9e8f329 100644
--- a/xen/arch/arm/include/asm/cpregs.h
+++ b/xen/arch/arm/include/asm/cpregs.h
@@ -75,6 +75,8 @@
 #define DBGDIDR         p14,0,c0,c0,0   /* Debug ID Register */
 #define DBGDSCRINT      p14,0,c0,c1,0   /* Debug Status and Control Internal */
 #define DBGDSCREXT      p14,0,c0,c2,2   /* Debug Status and Control External */
+#define DBGDTRRXINT     p14,0,c0,c5,0   /* Debug Data Transfer Register, Receive */
+#define DBGDTRTXINT     p14,0,c0,c5,0   /* Debug Data Transfer Register, Transmit */
 #define DBGVCR          p14,0,c0,c7,0   /* Vector Catch */
 #define DBGBVR0         p14,0,c0,c0,4   /* Breakpoint Value 0 */
 #define DBGBCR0         p14,0,c0,c0,5   /* Breakpoint Control 0 */
diff --git a/xen/arch/arm/vcpreg.c b/xen/arch/arm/vcpreg.c
index a2d0500704..474f872b5f 100644
--- a/xen/arch/arm/vcpreg.c
+++ b/xen/arch/arm/vcpreg.c
@@ -493,11 +493,12 @@ void do_cp14_32(struct cpu_user_regs *regs, const union hsr hsr)
      * ARMv8 (DDI 0487A.d): D1-1509 Table D1-58
      *
      * Unhandled:
-     *    DBGOSLSR
      *    DBGPRCR
      */
     case HSR_CPREG32(DBGOSLAR):
         return handle_wo_wi(regs, regidx, cp32.read, hsr, 1);
+    case HSR_CPREG32(DBGOSLSR):
+        return handle_ro_read_val(regs, regidx, cp32.read, hsr, 1, 1U << 3);
     case HSR_CPREG32(DBGOSDLR):
         return handle_raz_wi(regs, regidx, cp32.read, hsr, 1);
 
@@ -509,8 +510,6 @@ void do_cp14_32(struct cpu_user_regs *regs, const union hsr hsr)
      *
      * Unhandled:
      *    DBGDCCINT
-     *    DBGDTRRXint
-     *    DBGDTRTXint
      *    DBGWFAR
      *    DBGDTRTXext
      *    DBGDTRRXext,
@@ -549,11 +548,24 @@ void do_cp14_32(struct cpu_user_regs *regs, const union hsr hsr)
     }
 
     case HSR_CPREG32(DBGDSCRINT):
+    {
         /*
-         * Read-only register. Accessible by EL0 if DBGDSCRext.UDCCdis
-         * is set to 0, which we emulated below.
+         * Xen doesn't expose a real (or emulated) Debug Communications Channel
+         * (DCC) to a domain. Yet the Arm ARM implies this is not an optional
+         * feature. So some domains may start to probe it. For instance, the
+         * HVC_DCC driver in Linux (since f377775dc083 and at least up to v6.7),
+         * will try to write some characters and check if the transmit buffer
+         * has emptied. By setting TX status bit to indicate the transmit buffer
+         * is full. This we would hint the OS that the DCC is probably not
+         * working.
+         *
+         * Bit 29: TX full
+         *
+         * Accessible by EL0 if DBGDSCRext.UDCCdis is set to 0, which we emulate
+         * as RAZ/WI in the next case.
          */
-        return handle_ro_raz(regs, regidx, cp32.read, hsr, 1);
+        return handle_ro_read_val(regs, regidx, cp32.read, hsr, 0, 1U << 29);
+    }
 
     case HSR_CPREG32(DBGDSCREXT):
         /*
@@ -562,6 +574,13 @@ void do_cp14_32(struct cpu_user_regs *regs, const union hsr hsr)
          */
         return handle_raz_wi(regs, regidx, cp32.read, hsr, 1);
 
+#ifdef CONFIG_PARTIAL_EMULATION
+    /* DBGDTR[TR]XINT share the same encoding */
+    case HSR_CPREG32(DBGDTRTXINT):
+        if ( opt_partial_emulation )
+            return handle_raz_wi(regs, regidx, cp32.read, hsr, 0);
+#endif
+
     case HSR_CPREG32(DBGVCR):
     case HSR_CPREG32(DBGBVR0):
     case HSR_CPREG32(DBGBCR0):
@@ -659,10 +678,7 @@ void do_cp14_dbg(struct cpu_user_regs *regs, const union hsr hsr)
      * ARMv8 (DDI 0487A.d): D1-1509 Table D1-58
      *
      * Unhandled:
-     *    DBGDTRTXint
-     *    DBGDTRRXint
-     *
-     * And all other unknown registers.
+     * All unknown registers.
      */
     gdprintk(XENLOG_ERR,
              "%s p14, %d, r%d, r%d, cr%d @ 0x%"PRIregister"\n",
-- 
2.25.1



From xen-devel-bounces@lists.xenproject.org Fri Jan 05 12:25:51 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 05 Jan 2024 12:25:51 +0000
Received: from list by lists.xenproject.org with outflank-mailman.662168.1032104 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLjGc-0000GV-W9; Fri, 05 Jan 2024 12:25:38 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 662168.1032104; Fri, 05 Jan 2024 12:25:38 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLjGc-0000GO-Rf; Fri, 05 Jan 2024 12:25:38 +0000
Received: by outflank-mailman (input) for mailman id 662168;
 Fri, 05 Jan 2024 12:25:38 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rLjGc-0000GE-23; Fri, 05 Jan 2024 12:25:38 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rLjGb-00059F-NE; Fri, 05 Jan 2024 12:25:37 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rLjGb-0008VY-9U; Fri, 05 Jan 2024 12:25:37 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rLjGb-0007uc-92; Fri, 05 Jan 2024 12:25:37 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=xy33jtFvA4vtidCVT6cOSNiDi7itLaPR0NLH86UyJI8=; b=jsIsiPz2ecEfMwoXW4fd3eIbZo
	rwrKE9ZD9Ha4Awn3QwDMznHacfeD4tQB1ITtrCSVeCWjd+NT0AZ5sznb1wdRBiBoaYQliCx7zb8eZ
	sFP2WUL3OI1/el+DMpodOop3te74qKi1/m7hH2fvqi5vdAjqMu93YoiT9l7JQFOnrXvY=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184255-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [libvirt test] 184255: tolerable all pass - PUSHED
X-Osstest-Failures:
    libvirt:test-armhf-armhf-libvirt:saverestore-support-check:fail:nonblocking
    libvirt:test-armhf-armhf-libvirt-qcow2:saverestore-support-check:fail:nonblocking
    libvirt:test-armhf-armhf-libvirt-raw:saverestore-support-check:fail:nonblocking
    libvirt:test-amd64-i386-libvirt-xsm:migrate-support-check:fail:nonblocking
    libvirt:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    libvirt:test-arm64-arm64-libvirt-raw:migrate-support-check:fail:nonblocking
    libvirt:test-arm64-arm64-libvirt-raw:saverestore-support-check:fail:nonblocking
    libvirt:test-amd64-amd64-libvirt-xsm:migrate-support-check:fail:nonblocking
    libvirt:test-amd64-i386-libvirt:migrate-support-check:fail:nonblocking
    libvirt:test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    libvirt:test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    libvirt:test-arm64-arm64-libvirt-xsm:migrate-support-check:fail:nonblocking
    libvirt:test-arm64-arm64-libvirt-xsm:saverestore-support-check:fail:nonblocking
    libvirt:test-arm64-arm64-libvirt:migrate-support-check:fail:nonblocking
    libvirt:test-arm64-arm64-libvirt:saverestore-support-check:fail:nonblocking
    libvirt:test-amd64-i386-libvirt-raw:migrate-support-check:fail:nonblocking
    libvirt:test-amd64-amd64-libvirt-vhd:migrate-support-check:fail:nonblocking
    libvirt:test-armhf-armhf-libvirt:migrate-support-check:fail:nonblocking
    libvirt:test-arm64-arm64-libvirt-qcow2:migrate-support-check:fail:nonblocking
    libvirt:test-arm64-arm64-libvirt-qcow2:saverestore-support-check:fail:nonblocking
    libvirt:test-armhf-armhf-libvirt-qcow2:migrate-support-check:fail:nonblocking
    libvirt:test-armhf-armhf-libvirt-raw:migrate-support-check:fail:nonblocking
X-Osstest-Versions-This:
    libvirt=3a85755f668abd15b7936778a6a13fb8ce4a8c12
X-Osstest-Versions-That:
    libvirt=dd2f36d66ecff58a309ee5629b9a263cb22f3016
From: osstest service owner <osstest-admin@xenproject.org>
Date: Fri, 05 Jan 2024 12:25:37 +0000

flight 184255 libvirt real [real]
http://logs.test-lab.xenproject.org/osstest/logs/184255/

Failures :-/ but no regressions.

Tests which did not succeed, but are not blocking:
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 184250
 test-armhf-armhf-libvirt-qcow2 15 saverestore-support-check   fail like 184250
 test-armhf-armhf-libvirt-raw 15 saverestore-support-check    fail  like 184250
 test-amd64-i386-libvirt-xsm  15 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt     15 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 15 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-amd64-i386-libvirt      15 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-arm64-arm64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-xsm 16 saverestore-support-check    fail   never pass
 test-arm64-arm64-libvirt     15 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt     16 saverestore-support-check    fail   never pass
 test-amd64-i386-libvirt-raw  14 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt-vhd 14 migrate-support-check        fail   never pass
 test-armhf-armhf-libvirt     15 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-qcow2 14 migrate-support-check        fail never pass
 test-arm64-arm64-libvirt-qcow2 15 saverestore-support-check    fail never pass
 test-armhf-armhf-libvirt-qcow2 14 migrate-support-check        fail never pass
 test-armhf-armhf-libvirt-raw 14 migrate-support-check        fail   never pass

version targeted for testing:
 libvirt              3a85755f668abd15b7936778a6a13fb8ce4a8c12
baseline version:
 libvirt              dd2f36d66ecff58a309ee5629b9a263cb22f3016

Last test of basis   184250  2024-01-04 04:20:35 Z    1 days
Testing same since   184255  2024-01-05 04:21:01 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Artem Chernyshev <artem.chernyshev@red-soft.ru>
  Jonathon Jongsma <jjongsma@redhat.com>
  Michal Privoznik <mprivozn@redhat.com>
  Peter Krempa <pkrempa@redhat.com>

jobs:
 build-amd64-xsm                                              pass    
 build-arm64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64                                                  pass    
 build-arm64                                                  pass    
 build-armhf                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-arm64-libvirt                                          pass    
 build-armhf-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-pvops                                            pass    
 build-arm64-pvops                                            pass    
 build-armhf-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm           pass    
 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm            pass    
 test-amd64-amd64-libvirt-xsm                                 pass    
 test-arm64-arm64-libvirt-xsm                                 pass    
 test-amd64-i386-libvirt-xsm                                  pass    
 test-amd64-amd64-libvirt                                     pass    
 test-arm64-arm64-libvirt                                     pass    
 test-armhf-armhf-libvirt                                     pass    
 test-amd64-i386-libvirt                                      pass    
 test-amd64-amd64-libvirt-pair                                pass    
 test-amd64-i386-libvirt-pair                                 pass    
 test-arm64-arm64-libvirt-qcow2                               pass    
 test-armhf-armhf-libvirt-qcow2                               pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-armhf-armhf-libvirt-raw                                 pass    
 test-amd64-i386-libvirt-raw                                  pass    
 test-amd64-amd64-libvirt-vhd                                 pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Pushing revision :

To xenbits.xen.org:/home/xen/git/libvirt.git
   dd2f36d66e..3a85755f66  3a85755f668abd15b7936778a6a13fb8ce4a8c12 -> xen-tested-master


From xen-devel-bounces@lists.xenproject.org Fri Jan 05 12:25:51 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 05 Jan 2024 12:25:51 +0000
Received: from list by lists.xenproject.org with outflank-mailman.662171.1032114 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLjGh-0000Vv-7U; Fri, 05 Jan 2024 12:25:43 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 662171.1032114; Fri, 05 Jan 2024 12:25:43 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLjGh-0000Vo-3b; Fri, 05 Jan 2024 12:25:43 +0000
Received: by outflank-mailman (input) for mailman id 662171;
 Fri, 05 Jan 2024 12:25:41 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=v9dN=IP=bugseng.com=roberto.bagnara@srs-se1.protection.inumbo.net>)
 id 1rLjGf-0000VW-Eq
 for xen-devel@lists.xenproject.org; Fri, 05 Jan 2024 12:25:41 +0000
Received: from support.bugseng.com (mail.bugseng.com [162.55.131.47])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 88f433d5-abc5-11ee-9b0f-b553b5be7939;
 Fri, 05 Jan 2024 13:25:39 +0100 (CET)
Received: from [192.168.1.219] (unknown [151.29.148.194])
 by support.bugseng.com (Postfix) with ESMTPSA id 6C9404EE073F;
 Fri,  5 Jan 2024 13:25:38 +0100 (CET)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 88f433d5-abc5-11ee-9b0f-b553b5be7939
Message-ID: <7497be2d-744e-4c37-9107-79c289799135@bugseng.com>
Date: Fri, 5 Jan 2024 13:25:37 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] xen: Use -Wuninitialized and -Winit-self
To: Jan Beulich <jbeulich@suse.com>
Cc: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Wei Liu <wl@xen.org>, Xen-devel <xen-devel@lists.xenproject.org>,
 "consulting@bugseng.com" <consulting@bugseng.com>,
 Stefano Stabellini <sstabellini@kernel.org>,
 Andrew Cooper <andrew.cooper3@citrix.com>
References: <20231228193907.3052681-1-andrew.cooper3@citrix.com>
 <1248487f-4852-41f5-9ffd-d4d12897a622@suse.com>
 <7d35a648-a69b-4dfb-bf4f-d30272df5e9b@citrix.com>
 <d1d43877-912c-4f83-aa9b-bc28be418a0c@bugseng.com>
 <6406b9d4-b5e2-41eb-9cce-93a27086fb8a@suse.com>
Content-Language: en-US
From: Roberto Bagnara <roberto.bagnara@bugseng.com>
In-Reply-To: <6406b9d4-b5e2-41eb-9cce-93a27086fb8a@suse.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit

On 2024-01-05 07:56, Jan Beulich wrote:
> On 04.01.2024 21:43, Roberto Bagnara wrote:
>> On 2024-01-04 15:33, Andrew Cooper wrote:
>>> On 04/01/2024 1:41 pm, Jan Beulich wrote:
>>>> On 28.12.2023 20:39, Andrew Cooper wrote:
>>>>> The use of uninitialised data is undefined behaviour.  At -O2 with trivial
>>>>> examples, both Clang and GCC delete the variable, and in the case of a
>>>>> function return, the caller gets whatever was stale in %rax prior to the call.
>>>>>
>>>>> Clang includes -Wuninitialized within -Wall, but GCC only includes it in
>>>>> -Wextra, which is not used by Xen at this time.
>>>>>
>>>>> Furthermore, the specific pattern of assigning a variable to itself in its
>>>>> declaration is only diagnosed by GCC with -Winit-self.  Clang does diagnoise
>>>>> simple forms of this pattern with a plain -Wuninitialized, but it fails to
>>>>> diagnose the instances in Xen that GCC manages to find.
>>>>>
>>>>> GCC, with -Wuninitialized and -Winit-self notices:
>>>>>
>>>>>     arch/x86/time.c: In function ‘read_pt_and_tsc’:
>>>>>     arch/x86/time.c:297:14: error: ‘best’ is used uninitialized in this function [-Werror=uninitialized]
>>>>>       297 |     uint32_t best = best;
>>>>>           |              ^~~~
>>>>>     arch/x86/time.c: In function ‘read_pt_and_tmcct’:
>>>>>     arch/x86/time.c:1022:14: error: ‘best’ is used uninitialized in this function [-Werror=uninitialized]
>>>>>      1022 |     uint64_t best = best;
>>>>>           |              ^~~~
>>>>>
>>>>> and both have logic paths where best can be returned while uninitalised.
>>>> I disagree. In both cases the variables are reliably set during the first
>>>> loop iteration.
>>>
>>> I suggest you pay attention to the precision of the integers.
>>>
>>> It is hard (likely prohibitively hard) to avoid entering the if(), but
>>> it is not impossible.
>>>
>>> The compiler really has emitted logic paths where stack rubble is returned.
>>>
>>>> Furthermore this initialize-to-self is a well known pattern to suppress the
>>>> -Wuninitialized induced warnings, originally used by Linux'es
>>>> uninitialized_var().
>>>
>>> I'm glad you cited this, because it proves my point.
>>>
>>> Notice how it was purged from Linux slowly over the course of 8 years
>>> because it had been shown to create real bugs, by hiding real uses of
>>> uninitialised variables.
>>
>> There is a worse problem for initialize-to-self: it is undefined behavior
>> per se.  If this is done to suppress a warning, then what happens is
>> paradoxical: in order to suppress a warning about a potential undefined
>> behavior (the variable might indeed be always written before being read)
>> one introduces a definite undefined behavior.
> 
> I don't think so - aiui this is another of the many gcc extensions to the
> language (no code is generated for this type of initialization, iirc).

Well, it is undefined behavior for the C Standard: "undefined behavior"
is a technical term (see, e.g., C18 3.4.3p1) that is not dependent on
any compiler or any implementation technique for the C language.
Any implementation can deal with undefined behavior with absolute
freedom, which includes, among infinite other possibilities, doing what
you believe it does (iyrc ;-)

In addition, the compiler is typically not the only element of the toolchain
that needs to reliably interpret and process C code: so, even if we could reach
absolute certainty about what a specific version of one compiler does in response
to one instance of undefined behavior (and I think we cannot), then we would
need to obtain similar guarantees for other tools.


From xen-devel-bounces@lists.xenproject.org Fri Jan 05 13:28:33 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 05 Jan 2024 13:28:33 +0000
Received: from list by lists.xenproject.org with outflank-mailman.662185.1032128 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLkFG-0002in-R8; Fri, 05 Jan 2024 13:28:18 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 662185.1032128; Fri, 05 Jan 2024 13:28:18 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLkFG-0002ig-OJ; Fri, 05 Jan 2024 13:28:18 +0000
Received: by outflank-mailman (input) for mailman id 662185;
 Fri, 05 Jan 2024 13:28:17 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=c7fs=IP=linaro.org=alex.bennee@srs-se1.protection.inumbo.net>)
 id 1rLkFF-0002ia-Ns
 for xen-devel@lists.xenproject.org; Fri, 05 Jan 2024 13:28:17 +0000
Received: from mail-wr1-x42e.google.com (mail-wr1-x42e.google.com
 [2a00:1450:4864:20::42e])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 47cbfc3c-abce-11ee-9b0f-b553b5be7939;
 Fri, 05 Jan 2024 14:28:15 +0100 (CET)
Received: by mail-wr1-x42e.google.com with SMTP id
 ffacd0b85a97d-3368ae75082so302743f8f.1
 for <xen-devel@lists.xenproject.org>; Fri, 05 Jan 2024 05:28:15 -0800 (PST)
Received: from draig.lan ([85.9.250.243]) by smtp.gmail.com with ESMTPSA id
 t7-20020a05600c198700b0040d6b91efd9sm1588578wmq.44.2024.01.05.05.28.14
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Fri, 05 Jan 2024 05:28:14 -0800 (PST)
Received: from draig (localhost [IPv6:::1])
 by draig.lan (Postfix) with ESMTP id AB8405F933;
 Fri,  5 Jan 2024 13:28:13 +0000 (GMT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 47cbfc3c-abce-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=linaro.org; s=google; t=1704461295; x=1705066095; darn=lists.xenproject.org;
        h=content-transfer-encoding:mime-version:message-id:date:user-agent
         :references:in-reply-to:subject:cc:to:from:from:to:cc:subject:date
         :message-id:reply-to;
        bh=W+nznXisO2RYjzhLV92DU75Gbl2Luk+CfaiuHjsEqz4=;
        b=QbZq5Zz/KozqCDNP6PQhb/Lj3WDyVkAHA8uSJbwPXA3rUWpOlojEfRAV4lDwKiARAS
         v1h7Ghte/NYS2TTB0mNlSnZKjPKtVm/AAt1/qjPMJC6ZnVjv5vG71l6cEfTWqW+k/neO
         w9tIBIYY5SZDHPJFgDRwH58mzjri4lQbB6o1DVzNMK0OY4CZDPq+hJWqSRwMtf1KhrM8
         qY0VwQgTBlZDSD/x8txptqMOX75wwyJEYUII6jvBqST4F1C3SW8/09xlbFeBTFzunjON
         Yy9WxgascHAsEt+ecCvUEDdJRUoLuqFkUQ+z/x7umrzkBXI+QIXVosrqkrN/rgb2FWOv
         1sew==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704461295; x=1705066095;
        h=content-transfer-encoding:mime-version:message-id:date:user-agent
         :references:in-reply-to:subject:cc:to:from:x-gm-message-state:from
         :to:cc:subject:date:message-id:reply-to;
        bh=W+nznXisO2RYjzhLV92DU75Gbl2Luk+CfaiuHjsEqz4=;
        b=GQz6PxZ8QmdOHUf+J1XOeZYBMRsZ9UDjfkFgJLKoGmhXMA1Vwr9bu1UseNLm+58k/Q
         JQ0/RbJ6fnr1XPmcmd5sCGSFzvSpG7C7bXbd83v74OEfgNAYhlH1TGb4TTYsGfGNE63A
         g3xwu5MemFz5JPpYQa8V+7DRwMRy6F0qgMxUCTPsqKQeAnT2643YvJgeFayA4jKvcBm0
         hmOJkupdxh0PAQOMkhAfRHH1s494Hczz8kFeEsL13EXWyF/LWHZZ8Tyq8KxxdOz0HD6B
         0P1Nujj+jML/DvTHlbJSeLyhjNPI/+S7/tXIzHA0uZIcxl8qQWB6amtc6YrpakSxGn5V
         QgDg==
X-Gm-Message-State: AOJu0YyzmolLpL/E3GjwJJAnHkHo5fWQY2LZu1EMrrOW26p0VckFYHSz
	44dqJClaAzB1Y2sA6wuh0f+HIpeyihQjJg==
X-Google-Smtp-Source: AGHT+IHOG8IUfwKAVC8ut9ElsstIjLu6dL48QYO12QNDqpajE4/ZBkXzwk2yH0skphSmP2Vb8MlBCQ==
X-Received: by 2002:a05:600c:1c9f:b0:40c:31f1:1464 with SMTP id k31-20020a05600c1c9f00b0040c31f11464mr1129028wms.139.1704461294651;
        Fri, 05 Jan 2024 05:28:14 -0800 (PST)
From: =?utf-8?Q?Alex_Benn=C3=A9e?= <alex.bennee@linaro.org>
To: Huang Rui <ray.huang@amd.com>
Cc: Akihiko Odaki <akihiko.odaki@daynix.com>,  =?utf-8?Q?Marc-Andr=C3=A9?=
 Lureau
 <marcandre.lureau@gmail.com>,  Philippe =?utf-8?Q?Mathieu-Daud=C3=A9?=
 <philmd@linaro.org>,
  Gerd Hoffmann <kraxel@redhat.com>,  "Michael S . Tsirkin"
 <mst@redhat.com>,  "Stefano Stabellini" <sstabellini@kernel.org>,  Anthony
 PERARD <anthony.perard@citrix.com>,  Antonio Caggiano
 <quic_acaggian@quicinc.com>,  "Dr . David Alan Gilbert"
 <dgilbert@redhat.com>,  Robert Beckett <bob.beckett@collabora.com>,
  Dmitry Osipenko <dmitry.osipenko@collabora.com>,  Gert Wollny
 <gert.wollny@collabora.com>,  <qemu-devel@nongnu.org>,
  <xen-devel@lists.xenproject.org>,  Gurchetan Singh
 <gurchetansingh@chromium.org>,  <ernunes@redhat.com>,  Alyssa Ross
 <hi@alyssa.is>,  Roger Pau =?utf-8?Q?Monn=C3=A9?= <roger.pau@citrix.com>,
  Alex Deucher
 <alexander.deucher@amd.com>,  Stefano Stabellini
 <stefano.stabellini@amd.com>,  Christian =?utf-8?Q?K=C3=B6nig?=
 <christian.koenig@amd.com>,
  Xenia Ragiadakou <xenia.ragiadakou@amd.com>,  Pierre-Eric Pelloux-Prayer
 <pierre-eric.pelloux-prayer@amd.com>,  "Honglei Huang"
 <honglei1.huang@amd.com>,  Julia Zhang <julia.zhang@amd.com>,  "Chen
 Jiqian" <Jiqian.Chen@amd.com>, Manos Pitsidianakis
 <manos.pitsidianakis@linaro.org>, AKASHI Takahiro
 <takahiro.akashi@linaro.org>
Subject: Re: [PATCH v6 11/11] virtio-gpu: make blob scanout use dmabuf fd
In-Reply-To: <20231219075320.165227-12-ray.huang@amd.com> (Huang Rui's message
	of "Tue, 19 Dec 2023 15:53:20 +0800")
References: <20231219075320.165227-1-ray.huang@amd.com>
	<20231219075320.165227-12-ray.huang@amd.com>
User-Agent: mu4e 1.11.27; emacs 29.1
Date: Fri, 05 Jan 2024 13:28:13 +0000
Message-ID: <87jzongb9u.fsf@draig.linaro.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable

Huang Rui <ray.huang@amd.com> writes:

> From: Robert Beckett <bob.beckett@collabora.com>
>
> This relies on a virglrenderer change to include the dmabuf fd when
> returning resource info.
>
<snip>
> +static void virgl_cmd_set_scanout_blob(VirtIOGPU *g,
> +                                       struct virtio_gpu_ctrl_command *c=
md)
> +{
> +    struct virgl_gpu_resource *vres;
> +    struct virtio_gpu_framebuffer fb =3D { 0 };
> +    struct virtio_gpu_set_scanout_blob ss;
> +    struct virgl_renderer_resource_info info;
> +    uint64_t fbend;
> +
> +    VIRTIO_GPU_FILL_CMD(ss);
> +    virtio_gpu_scanout_blob_bswap(&ss);
> +    trace_virtio_gpu_cmd_set_scanout_blob(ss.scanout_id, ss.resource_id,
> +                                          ss.r.width, ss.r.height, ss.r.=
x,
> +                                          ss.r.y);
> +
> +    if (ss.scanout_id >=3D g->parent_obj.conf.max_outputs) {
> +        qemu_log_mask(LOG_GUEST_ERROR, "%s: illegal scanout id specified=
 %d",
> +                      __func__, ss.scanout_id);
> +        cmd->error =3D VIRTIO_GPU_RESP_ERR_INVALID_SCANOUT_ID;
> +        return;
> +    }
> +
> +    if (ss.resource_id =3D=3D 0) {
> +        virtio_gpu_disable_scanout(g, ss.scanout_id);
> +        return;
> +    }
> +
> +    if (ss.width < 16 ||
> +        ss.height < 16 ||
> +        ss.r.x + ss.r.width > ss.width ||
> +        ss.r.y + ss.r.height > ss.height) {
> +        qemu_log_mask(LOG_GUEST_ERROR, "%s: illegal scanout %d bounds fo=
r"
> +                      " resource %d, rect (%d,%d)+%d,%d, fb %d %d\n",
> +                      __func__, ss.scanout_id, ss.resource_id,
> +                      ss.r.x, ss.r.y, ss.r.width, ss.r.height,
> +                      ss.width, ss.height);
> +        cmd->error =3D VIRTIO_GPU_RESP_ERR_INVALID_PARAMETER;
> +        return;
> +    }
> +
> +    if (!console_has_gl(g->parent_obj.scanout[ss.scanout_id].con)) {
> +        qemu_log_mask(LOG_GUEST_ERROR, "%s: unable to scanout blot witho=
ut GL!\n", __func__);
> +        return;
> +    }
> +
> +    vres =3D virgl_gpu_find_resource(g, ss.resource_id);
> +    if (!vres) {
> +        qemu_log_mask(LOG_GUEST_ERROR,
> +                      "%s: illegal resource specified %d\n",
> +                      __func__, ss.resource_id);
> +        cmd->error =3D VIRTIO_GPU_RESP_ERR_INVALID_RESOURCE_ID;
> +        return;
> +    }
> +    if (virgl_renderer_resource_get_info(ss.resource_id, &info)) {
> +        qemu_log_mask(LOG_GUEST_ERROR,
> +                      "%s: illegal virgl resource specified %d\n",
> +                      __func__, ss.resource_id);
> +        cmd->error =3D VIRTIO_GPU_RESP_ERR_INVALID_RESOURCE_ID;
> +        return;
> +    }

Minor nit, the format of the following needs to include braces.

> +    if (!vres->res.dmabuf_fd && info.fd)
> +        vres->res.dmabuf_fd =3D info.fd;

However I'm seeing:

  cc -m64 -mcx16 -Ilibcommon.fa.p -I../../common-user/host/x86_64 -I../../l=
inux-user/include/host/x86_64 -I../../linux-user/include -Iui -I../../ui -I=
/usr/include/capstone -I/usr/include/p11-kit-1 -I/usr/include/pixman-1 -I/u=
sr/include/libpng16 -I/usr/include/spice-server -I/usr/include/spice-1 -I/u=
sr/include/libusb-1.0 -I/usr/include/SDL2 -I/usr/include/glib-2.0 -I/usr/li=
b/x86_64-linux-gnu/glib-2.0/include -I/usr/include/libmount -I/usr/include/=
blkid -I/usr/include/gio-unix-2.0 -I/usr/include/slirp -I/usr/include/gtk-3=
.0 -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/freetype=
2 -I/usr/include/fribidi -I/usr/include/cairo -I/usr/include/gdk-pixbuf-2.0=
 -I/usr/include/x86_64-linux-gnu -I/usr/include/atk-1.0 -I/usr/include/at-s=
pi2-atk/2.0 -I/usr/include/at-spi-2.0 -I/usr/include/dbus-1.0 -I/usr/lib/x8=
6_64-linux-gnu/dbus-1.0/include -I/usr/include/vte-2.91 -I/usr/include/virg=
l -I/home/alex/lsrc/qemu.git/builds/extra.libs/install/include -I/usr/inclu=
de/cacard -I/usr/include/nss -I/usr/include/nspr -I/usr/include/PCSC -I/usr=
/include/pipewire-0.3 -I/usr/include/spa-0.2 -fdiagnostics-color=3Dauto -Wa=
ll -Winvalid-pch -Werror -std=3Dgnu11 -O2 -g -fstack-protector-strong -Wund=
ef -Wwrite-strings -Wmissing-prototypes -Wstrict-prototypes -Wredundant-dec=
ls -Wold-style-declaration -Wold-style-definition -Wtype-limits -Wformat-se=
curity -Wformat-y2k -Winit-self -Wignored-qualifiers -Wempty-body -Wnested-=
externs -Wendif-labels -Wexpansion-to-defined -Wimplicit-fallthrough=3D2 -W=
missing-format-attribute -Wno-missing-include-dirs -Wno-shift-negative-valu=
e -Wno-psabi -Wshadow=3Dlocal -isystem /home/alex/lsrc/qemu.git/linux-heade=
rs -isystem linux-headers -iquote . -iquote /home/alex/lsrc/qemu.git -iquot=
e /home/alex/lsrc/qemu.git/include -iquote /home/alex/lsrc/qemu.git/host/in=
clude/x86_64 -iquote /home/alex/lsrc/qemu.git/host/include/generic -iquote =
/home/alex/lsrc/qemu.git/tcg/i386 -pthread -D_GNU_SOURCE -D_FILE_OFFSET_BIT=
S=3D64 -D_LARGEFILE_SOURCE -fno-strict-aliasing -fno-common -fwrapv -fPIE -=
D_DEFAULT_SOURCE -D_XOPEN_SOURCE=3D600 -DNCURSES_WIDECHAR=3D1 -D_REENTRANT =
-DSTRUCT_IOVEC_DEFINED -MD -MQ libcommon.fa.p/hw_display_virtio-gpu-virgl.c=
.o -MF libcommon.fa.p/hw_display_virtio-gpu-virgl.c.o.d -o libcommon.fa.p/h=
w_display_virtio-gpu-virgl.c.o -c ../../hw/display/virtio-gpu-virgl.c
  ../../hw/display/virtio-gpu-virgl.c: In function =E2=80=98virgl_cmd_set_s=
canout_blob=E2=80=99:
  ../../hw/display/virtio-gpu-virgl.c:790:37: error: =E2=80=98struct virgl_=
renderer_resource_info=E2=80=99 has no member named =E2=80=98fd=E2=80=99
    790 |     if (!vres->res.dmabuf_fd && info.fd)
        |                                     ^
  ../../hw/display/virtio-gpu-virgl.c:791:35: error: =E2=80=98struct virgl_=
renderer_resource_info=E2=80=99 has no member named =E2=80=98fd=E2=80=99
    791 |         vres->res.dmabuf_fd =3D info.fd;
        |                                   ^

But searching my extra libs (for aemu/gfstream/rutabaga_ffi) I can see
the bindings.rs but nothing generated a header:

  $ ag -r "virgl_renderer_resource_info"=20
  crosvm.git/rutabaga_gfx/src/generated/virgl_renderer_bindings.rs
  33:pub const VIRGL_RENDERER_RESOURCE_INFO_EXT_VERSION: u32 =3D 0;
  337:pub struct virgl_renderer_resource_info {
  351:pub struct virgl_renderer_resource_info_ext {
  353:    pub base: virgl_renderer_resource_info,
  359:impl Default for virgl_renderer_resource_info_ext {
  373:        info: *mut virgl_renderer_resource_info,
  379:        info: *mut virgl_renderer_resource_info_ext,

Which makes me think a) its picked up the older virgl headers and b) the
crosvm/rutabaf_gfx install needs a fix.


--=20
Alex Benn=C3=A9e
Virtualisation Tech Lead @ Linaro


From xen-devel-bounces@lists.xenproject.org Fri Jan 05 15:04:32 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 05 Jan 2024 15:04:32 +0000
Received: from list by lists.xenproject.org with outflank-mailman.662190.1032138 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLlk8-0000uC-2l; Fri, 05 Jan 2024 15:04:16 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 662190.1032138; Fri, 05 Jan 2024 15:04:16 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLlk8-0000u5-0D; Fri, 05 Jan 2024 15:04:16 +0000
Received: by outflank-mailman (input) for mailman id 662190;
 Fri, 05 Jan 2024 15:04:14 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=7et4=IP=bugseng.com=federico.serafini@srs-se1.protection.inumbo.net>)
 id 1rLlk6-0000tz-Nh
 for xen-devel@lists.xenproject.org; Fri, 05 Jan 2024 15:04:14 +0000
Received: from support.bugseng.com (mail.bugseng.com [162.55.131.47])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id aeef1894-abdb-11ee-98ef-6d05b1d4d9a1;
 Fri, 05 Jan 2024 16:04:11 +0100 (CET)
Received: from [192.168.1.15] (host-79-44-205-232.retail.telecomitalia.it
 [79.44.205.232])
 by support.bugseng.com (Postfix) with ESMTPSA id E20154EE073F;
 Fri,  5 Jan 2024 16:04:10 +0100 (CET)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: aeef1894-abdb-11ee-98ef-6d05b1d4d9a1
Message-ID: <a6a6ce27-76ad-4304-aaa8-d4cdc8e3badc@bugseng.com>
Date: Fri, 5 Jan 2024 16:04:10 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [XEN PATCH 7/7] xen/arm: smmu-v3: address violations of MISRA
 C:2012 Rule 16.3
Content-Language: en-US, it
To: Julien Grall <julien@xen.org>, xen-devel@lists.xenproject.org
Cc: consulting@bugseng.com, Bertrand Marquis <bertrand.marquis@arm.com>,
 Rahul Singh <rahul.singh@arm.com>,
 Stefano Stabellini <sstabellini@kernel.org>,
 Michal Orzel <michal.orzel@amd.com>,
 Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>
References: <cover.1703066935.git.federico.serafini@bugseng.com>
 <93d32bf20bb85b93618be5140edb1be527606b77.1703066935.git.federico.serafini@bugseng.com>
 <0b26cab9-8422-4f5f-ab96-b64a4afbdb24@xen.org>
From: Federico Serafini <federico.serafini@bugseng.com>
Organization: BUGSENG srl
In-Reply-To: <0b26cab9-8422-4f5f-ab96-b64a4afbdb24@xen.org>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

Hi Julien,

On 20/12/23 12:49, Julien Grall wrote:
> Hi Federico,
> 
> On 20/12/2023 11:03, Federico Serafini wrote:
>> Add a break statement at the end of the switch-clauses to address
>> violations of MISRA C:2012 Rule 16.3 ("An unconditional `break'
>> statement shall terminate every switch-clause").
>> No funtional change.
>>
>> Signed-off-by: Federico Serafini <federico.serafini@bugseng.com>
> 
> Acked-by: Julien Grall <jgrall@amazon.com>
>

I noticed that this has not yet been committed.

-- 
Federico Serafini, M.Sc.

Software Engineer, BUGSENG (http://bugseng.com)


From xen-devel-bounces@lists.xenproject.org Fri Jan 05 15:07:13 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 05 Jan 2024 15:07:13 +0000
Received: from list by lists.xenproject.org with outflank-mailman.662194.1032149 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLlmx-0001U9-Ml; Fri, 05 Jan 2024 15:07:11 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 662194.1032149; Fri, 05 Jan 2024 15:07:11 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLlmx-0001U2-K2; Fri, 05 Jan 2024 15:07:11 +0000
Received: by outflank-mailman (input) for mailman id 662194;
 Fri, 05 Jan 2024 15:07:10 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=Qw3+=IP=gmail.com=jandryuk@srs-se1.protection.inumbo.net>)
 id 1rLlmw-0001Tw-Qt
 for xen-devel@lists.xenproject.org; Fri, 05 Jan 2024 15:07:10 +0000
Received: from mail-ed1-x52f.google.com (mail-ed1-x52f.google.com
 [2a00:1450:4864:20::52f])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 188ac485-abdc-11ee-9b0f-b553b5be7939;
 Fri, 05 Jan 2024 16:07:08 +0100 (CET)
Received: by mail-ed1-x52f.google.com with SMTP id
 4fb4d7f45d1cf-5572ffdba53so728220a12.1
 for <xen-devel@lists.xenproject.org>; Fri, 05 Jan 2024 07:07:08 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 188ac485-abdc-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1704467228; x=1705072028; darn=lists.xenproject.org;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:from:to:cc:subject:date
         :message-id:reply-to;
        bh=57EA3Pee1hhACBB6gT+9NULYhceeX3zvghZDugvPfsg=;
        b=YBrxkZ+JoqPK4cN0TLOlU1zb05lKM1ETq/RAg85edxViwPCpzi6qZ24+8Fe182NCGk
         9zdg+x24eMtZAzkKSrXWCShX69FF7pkrdYNyWIARSrit3UTx9+yRNg+zWjYbXQOU38Xc
         B9IuQTDqS2x+LB2jHVen7khXqNO0ynFSxX5n+Wa8WEhBV3LUlBL+aYyw/bLRJ+ieymlN
         aUqlwWt8SZFaZuouuwW7imGnrqoVuACPGNWHW4GFTVZe0EJxnVxYo2cEfy1BpOL+UQNa
         lgEILD1IqJP/8vx2+eQHOwfBbcQ03HX9e7wo8Ih4kf0NHOZhPG+NActCG/ZZNEoF1++6
         Zm5g==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704467228; x=1705072028;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to;
        bh=57EA3Pee1hhACBB6gT+9NULYhceeX3zvghZDugvPfsg=;
        b=qilQ6IjwxSJYFYRyTufIJY3fR7ZSbM3SLJM5XWWkoGt72IHsDf/Z3VpgKupLcr1cKT
         TRfzD8hfJ8z+6P2O57OnDstxLeTvERtSjs64RhLAbBCej0EfF+zS+OR4Jd3anL+OEpQS
         tRXdR1CQmcrKEkdze+Fl+Sa24ifBM5uC1lSwgSqWiH11A8tzvXNdv5+/o0WYr0q+YWmV
         Ti5aQWv6ceVMi6tisyVMmZ1zcolgVRvyxVSXIw9rrFXt8va/7dyFFj+Lw/Ze8JPnEs7K
         bufJkUY06NB4jcfn/VlQ5u9umMFAtv36sKBbWTR4bpaZcoL08+4cy+FcJPESTHRN8dqA
         rvyQ==
X-Gm-Message-State: AOJu0Yx/Met6xM/PMAUVKBd2A2JqOfBBHgzp8+G7NBevpdpcMQeWIyXQ
	9nJ8nwOWK0panihhlCQuUl7MzZ9soykJ8dtF8t8=
X-Google-Smtp-Source: AGHT+IGc2r5KRZMDrcIhKGfo3XNxOrSFyNixck6AGZ2uPicsxsOK2nDdoisHyDBe+PuSmJRoqKWBu7zxUSDSLqFH/9I=
X-Received: by 2002:a50:d64e:0:b0:557:1267:e380 with SMTP id
 c14-20020a50d64e000000b005571267e380mr925019edj.77.1704467228111; Fri, 05 Jan
 2024 07:07:08 -0800 (PST)
MIME-Version: 1.0
References: <20240104090055.27323-1-jgross@suse.com> <20240104090055.27323-5-jgross@suse.com>
In-Reply-To: <20240104090055.27323-5-jgross@suse.com>
From: Jason Andryuk <jandryuk@gmail.com>
Date: Fri, 5 Jan 2024 10:06:56 -0500
Message-ID: <CAKf6xptD0U1CH7FPH+w=ayA22GkGBbiMjWXym5Lw-RtbmDinRA@mail.gmail.com>
Subject: Re: [PATCH v3 04/33] tools/xenlogd: connect to frontend
To: Juergen Gross <jgross@suse.com>
Cc: xen-devel@lists.xenproject.org, Wei Liu <wl@xen.org>, 
	Anthony PERARD <anthony.perard@citrix.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

On Thu, Jan 4, 2024 at 5:12=E2=80=AFAM Juergen Gross <jgross@suse.com> wrot=
e:
>
> Add the code for connecting to frontends to xenlogd.
>
> Signed-off-by: Juergen Gross <jgross@suse.com>

Reviewed-by: Jason Andryuk <jandryuk@gmail.com>


From xen-devel-bounces@lists.xenproject.org Fri Jan 05 15:08:39 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 05 Jan 2024 15:08:39 +0000
Received: from list by lists.xenproject.org with outflank-mailman.662199.1032159 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLloM-000222-1w; Fri, 05 Jan 2024 15:08:38 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 662199.1032159; Fri, 05 Jan 2024 15:08:38 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLloL-00021v-VU; Fri, 05 Jan 2024 15:08:37 +0000
Received: by outflank-mailman (input) for mailman id 662199;
 Fri, 05 Jan 2024 15:08:36 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=Qw3+=IP=gmail.com=jandryuk@srs-se1.protection.inumbo.net>)
 id 1rLloK-00021l-Gg
 for xen-devel@lists.xenproject.org; Fri, 05 Jan 2024 15:08:36 +0000
Received: from mail-ed1-x530.google.com (mail-ed1-x530.google.com
 [2a00:1450:4864:20::530])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 4c362e67-abdc-11ee-98ef-6d05b1d4d9a1;
 Fri, 05 Jan 2024 16:08:35 +0100 (CET)
Received: by mail-ed1-x530.google.com with SMTP id
 4fb4d7f45d1cf-5572ffdba53so729915a12.1
 for <xen-devel@lists.xenproject.org>; Fri, 05 Jan 2024 07:08:35 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 4c362e67-abdc-11ee-98ef-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1704467315; x=1705072115; darn=lists.xenproject.org;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:from:to:cc:subject:date
         :message-id:reply-to;
        bh=FJoUSU45VczFCaNl1ConIbPerIl2uDTgCHev27F2Jlk=;
        b=b09NzTZrE+ZuU9VZRqentzyvHmxYNDNBtrJSAjOL8abh6odvQ3p8aa1n2rbxQOs73y
         oHMNONEb3i6PUQcaTZZEKrq9jjJeSWYVmjFMYsKvQnw4qKsVvbkyPa5gCmHQhsSOuW+e
         63wTR7IX2EGOYHEeTO9lT7CTJw3goGp2LbRHHADBtPhXV0D3ZPKmhhnrxyruptfKWNbw
         VCCbNdsscXb1qESefZmjH/e18pxfj00sxazz950AypPDl03JSSRASmeYY98aOpJZA+2g
         W39uyUbvr4eyVQxHMsoIBYExMOnVRxsHWCCEWz7dcK+DutcgGkexkhxCjjaC418epbaD
         0szA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704467315; x=1705072115;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to;
        bh=FJoUSU45VczFCaNl1ConIbPerIl2uDTgCHev27F2Jlk=;
        b=FJHgHTc007pAPo/FPR+PEkq+5YpTMDpRvp6jnCS753/5jbZqNpUY6cvHfX3RHqBhyn
         x8dMer+6gag3BKFHUZkK7JoLN5ZGi1oAIshKk0JmLF6Nevsr4hk4/4kjsH/XdYq+ayl1
         +JSd48Zp4/oKcYGNsqOOVdw+hUzrkPdq9hd4fWmsrmNXwQs8CdUyBL+bKE3ed0kd1QC0
         kxwqppALSlJ3Tsun8pLGitaeYuvs7rOsJkmFQlb/p7YtbbHGll96KUS66RsFrmq3sgk0
         n4PLFIxoMNwF4zanO8YU9G2PIw6MI9u7lA8KdWVIQ2YGHLUMLVrhwpiY1NDQYt81qtBR
         8T4g==
X-Gm-Message-State: AOJu0YwaN7bFFoMrF5hyxuFgm9/54heAfqRosQI0xHTzRllJ7hLp+l0p
	xfm83LFmPmlCu2nwoPeQy0eCimMQX27M3QVr0y4=
X-Google-Smtp-Source: AGHT+IGSkLuNJL0XoG2TRoF71Va+FkvVLt4sZXYanemN1ZKuiuHdkRCWEe6423GVx6LIaRf5hDSw9dMKx7aiHOjFa/I=
X-Received: by 2002:a05:6402:329:b0:557:4ea:bca1 with SMTP id
 q9-20020a056402032900b0055704eabca1mr1223761edw.21.1704467314974; Fri, 05 Jan
 2024 07:08:34 -0800 (PST)
MIME-Version: 1.0
References: <20240104090055.27323-1-jgross@suse.com> <20240104090055.27323-7-jgross@suse.com>
In-Reply-To: <20240104090055.27323-7-jgross@suse.com>
From: Jason Andryuk <jandryuk@gmail.com>
Date: Fri, 5 Jan 2024 10:08:23 -0500
Message-ID: <CAKf6xpvMhNLJtZEjRCPxSrwm0juRz+QS5LcM-SPr0RU0WRhbPA@mail.gmail.com>
Subject: Re: [PATCH v3 06/33] tools/xenlogd: add 9pfs response generation support
To: Juergen Gross <jgross@suse.com>
Cc: xen-devel@lists.xenproject.org, Wei Liu <wl@xen.org>, 
	Anthony PERARD <anthony.perard@citrix.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

On Thu, Jan 4, 2024 at 4:01=E2=80=AFAM Juergen Gross <jgross@suse.com> wrot=
e:
>
> Add support for generation a 9pfs protocol response via a format based
> approach.
>
> Strings are stored in a per device string buffer and they are
> referenced via their offset in this buffer. This allows to avoid
> having to dynamically allocate memory for each single string.
>
> As a first user of the response handling add a generic p9_error()
> function which will be used to return any error to the client.
>
> Add all format parsing variants in order to avoid additional code churn
> later when adding the users of those variants. Prepare a special case
> for the "read" case already (format character 'D'): in order to avoid
> adding another buffer for read data support doing the read I/O directly
> into the response buffer.
>
> Signed-off-by: Juergen Gross <jgross@suse.com>

Reviewed-by: Jason Andryuk <jandryuk@gmail.com>


From xen-devel-bounces@lists.xenproject.org Fri Jan 05 15:09:36 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 05 Jan 2024 15:09:36 +0000
Received: from list by lists.xenproject.org with outflank-mailman.662202.1032169 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLlpF-0002ZJ-CS; Fri, 05 Jan 2024 15:09:33 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 662202.1032169; Fri, 05 Jan 2024 15:09:33 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLlpF-0002ZC-9j; Fri, 05 Jan 2024 15:09:33 +0000
Received: by outflank-mailman (input) for mailman id 662202;
 Fri, 05 Jan 2024 15:09:32 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=Qw3+=IP=gmail.com=jandryuk@srs-se1.protection.inumbo.net>)
 id 1rLlpD-0002Z4-WE
 for xen-devel@lists.xenproject.org; Fri, 05 Jan 2024 15:09:32 +0000
Received: from mail-ed1-x529.google.com (mail-ed1-x529.google.com
 [2a00:1450:4864:20::529])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 6d55c8cc-abdc-11ee-98ef-6d05b1d4d9a1;
 Fri, 05 Jan 2024 16:09:31 +0100 (CET)
Received: by mail-ed1-x529.google.com with SMTP id
 4fb4d7f45d1cf-5569472f775so1987507a12.2
 for <xen-devel@lists.xenproject.org>; Fri, 05 Jan 2024 07:09:31 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 6d55c8cc-abdc-11ee-98ef-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1704467371; x=1705072171; darn=lists.xenproject.org;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:from:to:cc:subject:date
         :message-id:reply-to;
        bh=lCKIIRz+q3qlePX03YNB6mmvSBt8cIGmgNPfE7a813c=;
        b=g+g09bpldCgFxzQYdDcqhokiu73BJ6GCrehNtmAK7xnl4fIkoBLZxp4EYveNFUH7m+
         E1Vs8lUtSbQLYUZ21fKVI5R7tyKnv3q/4WZOMHYXGhxua70bW6PrXGO0BysaCd9NOewB
         bSCft2iKD4FgG6mriTkntaS6Q4zDxtlwQseW0MAya67VF5Qv3F4P27rWojrL/ur0kEF5
         65thT2bIOuNTBvtOUmMHOfK7sTLKWhPzBagSG2JOsPr9kCyPkcj0hSV3F9c/20CHSR7M
         6RIE2Ki2GIJSRRCrIV141/NptWqjIDJbyKgN6XR5CjwFUBP1iYpE2/fTBpG5GB8o0e6r
         kFZg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704467371; x=1705072171;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to;
        bh=lCKIIRz+q3qlePX03YNB6mmvSBt8cIGmgNPfE7a813c=;
        b=AyWpA9SfQEgTOL+0E57y2tw7RnKi/yU43ljx+2p985r9gjQB2i1WqbX6dhbM9vOn1f
         F0ijnWIdfAJI2OL+eYeZ+VkU/5XZHNwpKBALMw7y+aGX2nHNFsfWfQcImfAMondq3/DT
         enI0UIscuUJnI/ch46kZIoRWCD+JzPbuTK3BfiFKXAN6wK+9C1H/DDb7Z0j/0Q0iuEu2
         CUbYdJ4RDmuVt5qUxjAZTHFVtmR7gihFkHpoIgVwlM4IpMQxUKOEPUjWFAq3JS+f25BA
         Jlyw2VfZ4uQ5oXmutmQCfrMWGrOCBlTKjQuG9IDapGtwmQvivg89eRLpfzg/9OyyVsof
         ZFSg==
X-Gm-Message-State: AOJu0YwsYgNFkTLEly2bHsROsPGEipj/TeLn4UZ56aXa1qPHe+3SfM2H
	wU+1R6qj/ta1JO5P4ScGHtA3OYaVHYx9E2cTDWwz+XZO
X-Google-Smtp-Source: AGHT+IFQmsBFGDDtfqS889GQwoeuTlNoiXi4phkdbkfA/8yWE/TvN5vSNoipbBYsNfViKkSuQ16i3l1ti3HpAQ87Zxs=
X-Received: by 2002:a50:8751:0:b0:54c:4837:8b80 with SMTP id
 17-20020a508751000000b0054c48378b80mr1239250edv.78.1704467370671; Fri, 05 Jan
 2024 07:09:30 -0800 (PST)
MIME-Version: 1.0
References: <20240104090055.27323-1-jgross@suse.com> <20240104090055.27323-8-jgross@suse.com>
In-Reply-To: <20240104090055.27323-8-jgross@suse.com>
From: Jason Andryuk <jandryuk@gmail.com>
Date: Fri, 5 Jan 2024 10:09:18 -0500
Message-ID: <CAKf6xptKi_+gCvdR8CPw-2XSk_9hMxsFyjDr0kLfMbbkBVBLSQ@mail.gmail.com>
Subject: Re: [PATCH v3 07/33] tools/xenlogd: add 9pfs version request support
To: Juergen Gross <jgross@suse.com>
Cc: xen-devel@lists.xenproject.org, Wei Liu <wl@xen.org>, 
	Anthony PERARD <anthony.perard@citrix.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

On Thu, Jan 4, 2024 at 4:01=E2=80=AFAM Juergen Gross <jgross@suse.com> wrot=
e:
>
> Add the version request of the 9pfs protocol. For the version use the
> "9P2000.u" variant, as it is supported by Mini-OS and Linux.
>
> For the request parsing add all format items needed even in future in
> order to avoid code churn for those additions later.
>
> Signed-off-by: Juergen Gross <jgross@suse.com>

Reviewed-by: Jason Andryuk <jandryuk@gmail.com>


From xen-devel-bounces@lists.xenproject.org Fri Jan 05 15:10:05 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 05 Jan 2024 15:10:05 +0000
Received: from list by lists.xenproject.org with outflank-mailman.662204.1032179 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLlpj-0003Wu-LJ; Fri, 05 Jan 2024 15:10:03 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 662204.1032179; Fri, 05 Jan 2024 15:10:03 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLlpj-0003W3-II; Fri, 05 Jan 2024 15:10:03 +0000
Received: by outflank-mailman (input) for mailman id 662204;
 Fri, 05 Jan 2024 15:10:01 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>) id 1rLlph-00036n-NX
 for xen-devel@lists.xenproject.org; Fri, 05 Jan 2024 15:10:01 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rLlpg-0008Fp-Q0; Fri, 05 Jan 2024 15:10:00 +0000
Received: from [54.239.6.189] (helo=[192.168.15.166])
 by xenbits.xenproject.org with esmtpsa
 (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rLlpg-0003mq-Hr; Fri, 05 Jan 2024 15:10:00 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
	s=20200302mail; h=Content-Transfer-Encoding:Content-Type:In-Reply-To:From:
	References:Cc:To:Subject:MIME-Version:Date:Message-ID;
	bh=1CatBldUfLSMIToE+BROeYV/HCODUxCyQZIH3uY2Qlo=; b=lZogrI9NgJtPMd2A6JXCdijbnS
	k1pGDwPAi6xKgVvxQC3sPDVvmtbP8Nz0SDIzsuicuXg2X1OQZJJYmQGR9opo8bsLqMrfNZLbTiaqi
	XQvkCBOaTjoCOnTjC4TLvwcImU8QGb3o9UrOBr7R7F7kpPNwdawRAiY06DDQPHo4V/jM=;
Message-ID: <d4d5f0fc-14e5-4e36-8747-e06d2ad057e4@xen.org>
Date: Fri, 5 Jan 2024 15:09:58 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [XEN PATCH 7/7] xen/arm: smmu-v3: address violations of MISRA
 C:2012 Rule 16.3
Content-Language: en-GB
To: Federico Serafini <federico.serafini@bugseng.com>,
 xen-devel@lists.xenproject.org
Cc: consulting@bugseng.com, Bertrand Marquis <bertrand.marquis@arm.com>,
 Rahul Singh <rahul.singh@arm.com>,
 Stefano Stabellini <sstabellini@kernel.org>,
 Michal Orzel <michal.orzel@amd.com>,
 Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>
References: <cover.1703066935.git.federico.serafini@bugseng.com>
 <93d32bf20bb85b93618be5140edb1be527606b77.1703066935.git.federico.serafini@bugseng.com>
 <0b26cab9-8422-4f5f-ab96-b64a4afbdb24@xen.org>
 <a6a6ce27-76ad-4304-aaa8-d4cdc8e3badc@bugseng.com>
From: Julien Grall <julien@xen.org>
In-Reply-To: <a6a6ce27-76ad-4304-aaa8-d4cdc8e3badc@bugseng.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

Hi,

On 05/01/2024 15:04, Federico Serafini wrote:
> On 20/12/23 12:49, Julien Grall wrote:
>> Hi Federico,
>>
>> On 20/12/2023 11:03, Federico Serafini wrote:
>>> Add a break statement at the end of the switch-clauses to address
>>> violations of MISRA C:2012 Rule 16.3 ("An unconditional `break'
>>> statement shall terminate every switch-clause").
>>> No funtional change.
>>>
>>> Signed-off-by: Federico Serafini <federico.serafini@bugseng.com>
>>
>> Acked-by: Julien Grall <jgrall@amazon.com>
>>
>  > I noticed that this has not yet been committed.

The SMMUv3 maintainers are not the same as the rest of the Arm code. So 
you technically need an Ack from one of them before this can get merged.

I have pinged Bertrand on Matrix.

Cheers,

-- 
Julien Grall


From xen-devel-bounces@lists.xenproject.org Fri Jan 05 15:15:46 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 05 Jan 2024 15:15:46 +0000
Received: from list by lists.xenproject.org with outflank-mailman.662209.1032189 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLlvB-00054W-99; Fri, 05 Jan 2024 15:15:41 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 662209.1032189; Fri, 05 Jan 2024 15:15:41 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLlvB-00054P-6W; Fri, 05 Jan 2024 15:15:41 +0000
Received: by outflank-mailman (input) for mailman id 662209;
 Fri, 05 Jan 2024 15:15:40 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=MyhP=IP=arm.com=Bertrand.Marquis@srs-se1.protection.inumbo.net>)
 id 1rLlvA-00054H-LK
 for xen-devel@lists.xenproject.org; Fri, 05 Jan 2024 15:15:40 +0000
Received: from EUR04-HE1-obe.outbound.protection.outlook.com
 (mail-he1eur04on2077.outbound.protection.outlook.com [40.107.7.77])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 4880138e-abdd-11ee-98ef-6d05b1d4d9a1;
 Fri, 05 Jan 2024 16:15:38 +0100 (CET)
Received: from DUZPR01CA0085.eurprd01.prod.exchangelabs.com
 (2603:10a6:10:46a::17) by DB8PR08MB5385.eurprd08.prod.outlook.com
 (2603:10a6:10:119::11) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7159.16; Fri, 5 Jan
 2024 15:15:08 +0000
Received: from DB5PEPF00014B8C.eurprd02.prod.outlook.com
 (2603:10a6:10:46a:cafe::1c) by DUZPR01CA0085.outlook.office365.com
 (2603:10a6:10:46a::17) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7159.15 via Frontend
 Transport; Fri, 5 Jan 2024 15:15:08 +0000
Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by
 DB5PEPF00014B8C.mail.protection.outlook.com (10.167.8.200) with
 Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.7159.9 via Frontend Transport; Fri, 5 Jan 2024 15:15:07 +0000
Received: ("Tessian outbound 52fd419df13e:v239");
 Fri, 05 Jan 2024 15:15:07 +0000
Received: from d66c59e7e8c2.1
 by 64aa7808-outbound-1.mta.getcheckrecipient.com id
 531983D3-29F4-4018-BA66-07A8241E6944.1; 
 Fri, 05 Jan 2024 15:14:56 +0000
Received: from EUR05-DB8-obe.outbound.protection.outlook.com
 by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id d66c59e7e8c2.1
 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384);
 Fri, 05 Jan 2024 15:14:56 +0000
Received: from DB9PR08MB6588.eurprd08.prod.outlook.com (2603:10a6:10:25a::24)
 by AS4PR08MB8045.eurprd08.prod.outlook.com (2603:10a6:20b:585::20)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7159.13; Fri, 5 Jan
 2024 15:14:55 +0000
Received: from DB9PR08MB6588.eurprd08.prod.outlook.com
 ([fe80::a856:52ca:c1c6:a21d]) by DB9PR08MB6588.eurprd08.prod.outlook.com
 ([fe80::a856:52ca:c1c6:a21d%4]) with mapi id 15.20.7159.015; Fri, 5 Jan 2024
 15:14:54 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 4880138e-abdd-11ee-98ef-6d05b1d4d9a1
ARC-Seal: i=2; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=pass;
 b=KxwojB/YABp/DLbiQTZmsJh/PS0xdQZuKOEWfLksb72RtYFc7h+HsIU6hrJMrsfcV+COHlok1jIyNf3c/QJaABjswWlkOy1I06epB+PXpedovqaUMhoJXr0f6OibmDQeJwE+/9ok8CjHEbLmV13ny2ZdgGLqNA769FGtegkMlosMQHzExHcy4Fj0QLq72ql2riXoWQ+hsXUUgdXTFUgp+BzDbYiRywuEsCFJiNjLr0ni5VhCZmHZd4LPazVaIeM6Ud4qmGYA+e5/mPhcLdQeJ2djqgGr5KdvKUJ5l+2AYFOL+MpMuuFINy1XfLlaAs4C4vxdqVYtFL+l8p9dr6pG8A==
ARC-Message-Signature: i=2; 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=+XT5fN8X8PNaqRLJd1A23nK8nI39vK+Zl192zIDlJdI=;
 b=OUJiUUWZrySBkZP5TWy5nEk89Fl48eQKuDyGkO35gdYAaJnOy1HuHiZOVePxYmz7aD5wmVxI7eoH7Bksmh6YVf1Pn8a39q5a/zuIZtuoGT2eqq0h6k45mqJm3VcXSS/9xEHas1LNO3AdX1DXjlO5SjuAA/2ERbnm6n//XFyBHrd43Dhv6mHxqy1d7ElCEtYFAb5PrQfpVHM8/zfD17aa3xeAd0WYhXhwGN9IHbYWCJtKcrkRLh89gxjIZYY1jCS0eXI849kOxak3n0PvjIChsRUlmm0vyjedIrUN3ZMQXrRYL+PfNwgsKLaHBdXshV5MtXrz22pMeqzutuaiTBNZ5g==
ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is
 63.35.35.123) smtp.rcpttodomain=lists.xenproject.org smtp.mailfrom=arm.com;
 dmarc=pass (p=none sp=none pct=100) action=none header.from=arm.com;
 dkim=pass (signature was verified) header.d=armh.onmicrosoft.com; arc=pass (0
 oda=1 ltdi=1 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com]
 dmarc=[1,1,header.from=arm.com])
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com;
 s=selector2-armh-onmicrosoft-com;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=+XT5fN8X8PNaqRLJd1A23nK8nI39vK+Zl192zIDlJdI=;
 b=C31V+bhe0oo9KC8dyq+My3YjaBylyCBeP1HcIDA6MkbAbalyBjDFARmaS1n6TpjwKi5T6SVzKmd/vCwgyy56WE2pc8t4jNEoIyogIw3N7jij6oTce3XdF95kggqCpFBn9u09dRyZnQGHaZfQQx1MizQD60MWduUOR36J9xYCqjA=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 63.35.35.123)
 smtp.mailfrom=arm.com; dkim=pass (signature was verified)
 header.d=armh.onmicrosoft.com;dmarc=pass action=none header.from=arm.com;
Received-SPF: Pass (protection.outlook.com: domain of arm.com designates
 63.35.35.123 as permitted sender) receiver=protection.outlook.com;
 client-ip=63.35.35.123; helo=64aa7808-outbound-1.mta.getcheckrecipient.com;
 pr=C
X-CheckRecipientChecked: true
X-CR-MTA-CID: 2322184d385b1081
X-CR-MTA-TID: 64aa7808
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=N8CuwJpdM86dJxrGGOR0C3pvB32M7owT0dR0NTS0nEdJZYmpZSbYAmuEEelXL5W8oDKHJq2lvS3VB4YJfJaLDvnsqEUkB9woakpgfs9OunVmAo6GY88nIPS6C87cc6tI9/Zq6l8BNhYXXGue7sra07vw4hgX3Di/NPwHXz+lwP+aalmRFvHqw/S1Bd0HMxjBBK3P7AkjbkkMkaXR0wT4MWKOd127xRtY4z+8hfG+RvbRHio+YW10vLT27XrvV7UhCRyzlfz1IWV1nqcUAhO7BUtaqXMt+UmNRfyrYzP5HY5h4zH/6ETUDEM2W2Mgl6G1MK9Ua2gUQ2wosLaZrlf9Tg==
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=+XT5fN8X8PNaqRLJd1A23nK8nI39vK+Zl192zIDlJdI=;
 b=bVJpYJB7U81RZ1ONiW9dJyQYsJpNy5n3c3Iqjo+XEqE3r1pc0vIknYuOnBfVdBBFXNXLkL5RZLQ9snsvr6k8/9uEXUBEu4eqSrt/ckD1IagVDXBmLD5RZYj9PQ7uoY/nDwBEWyANcJ7eC6MFPMH8CnAmY8LNBkEPOFuEH7cJxC6FFxc84s3rJxdOz872IV6uiwq8tYEtlopDnLwYV2C9iYP8IjBEhgqd0Pk8JbGbGFJmyoWCAk8YdWh0U52PjhQLitjGQIYCwIaPohi/QRKqq6lVFFWQ2kbhRl4hsVIDZz4qi4LANpKOOulyBot3+KB0NRkEznQ5YC2ciQPtNZ0scg==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass
 header.d=arm.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com;
 s=selector2-armh-onmicrosoft-com;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=+XT5fN8X8PNaqRLJd1A23nK8nI39vK+Zl192zIDlJdI=;
 b=C31V+bhe0oo9KC8dyq+My3YjaBylyCBeP1HcIDA6MkbAbalyBjDFARmaS1n6TpjwKi5T6SVzKmd/vCwgyy56WE2pc8t4jNEoIyogIw3N7jij6oTce3XdF95kggqCpFBn9u09dRyZnQGHaZfQQx1MizQD60MWduUOR36J9xYCqjA=
From: Bertrand Marquis <Bertrand.Marquis@arm.com>
To: Federico Serafini <federico.serafini@bugseng.com>
CC: Xen-devel <xen-devel@lists.xenproject.org>, "consulting@bugseng.com"
	<consulting@bugseng.com>, Rahul Singh <Rahul.Singh@arm.com>, Stefano
 Stabellini <sstabellini@kernel.org>, Julien Grall <julien@xen.org>, Michal
 Orzel <michal.orzel@amd.com>, Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>
Subject: Re: [XEN PATCH 7/7] xen/arm: smmu-v3: address violations of MISRA
 C:2012 Rule 16.3
Thread-Topic: [XEN PATCH 7/7] xen/arm: smmu-v3: address violations of MISRA
 C:2012 Rule 16.3
Thread-Index: AQHaMzQuu+t0ikhiokmCnvr+/E49RLDLbWoA
Date: Fri, 5 Jan 2024 15:14:54 +0000
Message-ID: <8E1C54FC-4464-4564-AC0A-FA8C4CB22DC6@arm.com>
References: <cover.1703066935.git.federico.serafini@bugseng.com>
 <93d32bf20bb85b93618be5140edb1be527606b77.1703066935.git.federico.serafini@bugseng.com>
In-Reply-To:
 <93d32bf20bb85b93618be5140edb1be527606b77.1703066935.git.federico.serafini@bugseng.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-mailer: Apple Mail (2.3774.200.91.1.1)
Authentication-Results-Original: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=arm.com;
x-ms-traffictypediagnostic:
	DB9PR08MB6588:EE_|AS4PR08MB8045:EE_|DB5PEPF00014B8C:EE_|DB8PR08MB5385:EE_
X-MS-Office365-Filtering-Correlation-Id: a9a6e232-f0c2-4711-31a0-08dc0e011a40
x-checkrecipientrouted: true
nodisclaimer: true
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted: BCL:0;
X-Microsoft-Antispam-Message-Info-Original:
 m3wb/IQ6B+46IY59Z1Ril6hGSAqmpHcj6sdHMAJP17XDFIts7s3SgPOVfwbPU/i6L7fYcpbf/KEvthtDE7HKSi2q6l57wlJurj8MxrR5VXaKYdtV6vKlz8DTfUb3i31zXLF/K/VxuyYJb4Unti+2gO54tGZ0ejg/S7V8MPpVBDB0jsel0qeHVWh9Xnv50awfYq9WrBXOz6354bNzfOxC6ZIS5Y1oMWOUc4TE42NNbK/dUiPRkO22TdGOWY5SSsKZ/EfdEr9VBreuZb69zH53U3biMh/YVSY4m/2hWk1kvTLadp9nIzitwQ2iRfimK7GHoK4MCLpxpaMrnhjbZOySPi/WhCF1j62GAMmBliIW/BbUCLDz83whD15BRrsFnp5dUT9F7lTKyWCkgIHOAUEahPBEIDGza9ccWvBdyFR6FfXNMkKlTnB2DFmBjU8tNnHQQNY8Cv2nk32s/h8M3afLL/VV/SMxtE8fGqkyLZ+goFKk9x3JG8LtVfGCzWjQYv0mj8ZIGYU1JYgaNAdKzDxR7+QKwqaBrwKP6cyVVwEy2j68DHchrt432mXTlFr4tYNGPvb+1VFg7fKWRjKLGDcssEndImeT88xv7LCreKQOk5FvaEEK7reemwjOGF1fwdSxiImVkko8KeOB2FCzjYfpvw==
X-Forefront-Antispam-Report-Untrusted:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DB9PR08MB6588.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230031)(396003)(346002)(376002)(39860400002)(136003)(366004)(230922051799003)(451199024)(64100799003)(1800799012)(186009)(8676002)(6486002)(66556008)(478600001)(76116006)(38100700002)(36756003)(8936002)(316002)(66476007)(66946007)(6916009)(41300700001)(71200400001)(86362001)(66446008)(33656002)(91956017)(54906003)(53546011)(64756008)(122000001)(6506007)(2616005)(6512007)(4326008)(5660300002)(38070700009)(2906002)(45980500001);DIR:OUT;SFP:1101;
Content-Type: text/plain; charset="us-ascii"
Content-ID: <A92C5D21A57C3945998DEFF80C189B0C@eurprd08.prod.outlook.com>
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS4PR08MB8045
Original-Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=arm.com;
X-EOPAttributedMessage: 0
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 DB5PEPF00014B8C.eurprd02.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	3acec913-8f7f-4170-6d3b-08dc0e011259
X-Microsoft-Antispam: BCL:0;
X-Microsoft-Antispam-Message-Info:
	sV3BxAi10hm8hz9YbIyog4w3dZFb/h1YjSxRglb8Ov8zOdHqqfbDCaEXIFCU+Y1T1/04IZgJtRLVVqm+Rm0fJ9VwIt6b/Tw95w07L6ef6riBH6G5/MPRZAOO5Qg5eAU5h/NBa6fq/DG8eJFzCOdxHsmNhlhWgoROTp6dwmgxYXk5LsHH6XGwteTHuydz3UEO3uYxrXddOBR2JH+K+aDcE7qKRlJuSK1iVDpHv3qiYToXVHfJjJwi7Pux+BB/rxIYXaaGOgk0ySo9wqqSVEL6jnQASUFYpAzlc5esmfkuM/atF4JTWROb/TWQwakiJ32oml3DBGqxHA/pKt1gHG0IRSqVIyqSzGlW2kmyGMcOwwF6NTxQ9bTOri+Oi/Buhz4C43lei85BYxXnwzU2tRZuPLouFy7CEJfzbt0tTsEePvEzO0ZeChVR2PYHaCGx2JoJsHrGFjphVXMDgsgP0uEVLGtXwPl1hmwOhqJ6MM5przpCT0VYvnHmPa6ZB8jV2Iztqdxo1iiphdjqBtGcf7XNSi6BvGkMGza8aBqm+atgmsCdhVi9Dm7lZ511zPxoKhwf+6zibPkeMsXkGqWeheIrPi9dAMCD8yZU6ZIVJp/t5ZxHTkeziJssX6J3nhEENFjf3mL7ki/hnQ7onB8+715dBFM75HTjQpa8hup41ifcksbRhxTDtfnPUP4JZ+cjSz677yWOX2A9Qb0boE4mMVtkkomHZqEDN1yJmexMtEu/sQI=
X-Forefront-Antispam-Report:
	CIP:63.35.35.123;CTRY:IE;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:64aa7808-outbound-1.mta.getcheckrecipient.com;PTR:ec2-63-35-35-123.eu-west-1.compute.amazonaws.com;CAT:NONE;SFS:(13230031)(4636009)(136003)(376002)(396003)(346002)(39860400002)(230922051799003)(64100799003)(1800799012)(82310400011)(451199024)(186009)(46966006)(40470700004)(36840700001)(2616005)(6486002)(53546011)(26005)(336012)(478600001)(6506007)(6512007)(36860700001)(107886003)(2906002)(41300700001)(70206006)(54906003)(316002)(8936002)(8676002)(4326008)(6862004)(5660300002)(70586007)(47076005)(82740400003)(86362001)(36756003)(33656002)(81166007)(356005)(40480700001)(40460700003);DIR:OUT;SFP:1101;
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Jan 2024 15:15:07.7313
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: a9a6e232-f0c2-4711-31a0-08dc0e011a40
X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[63.35.35.123];Helo=[64aa7808-outbound-1.mta.getcheckrecipient.com]
X-MS-Exchange-CrossTenant-AuthSource:
	DB5PEPF00014B8C.eurprd02.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB8PR08MB5385

Hi Frederico,

Sorry to have missed that one.

> On 20 Dec 2023, at 12:03, Federico Serafini <federico.serafini@bugseng.co=
m> wrote:
>=20
> Add a break statement at the end of the switch-clauses to address
> violations of MISRA C:2012 Rule 16.3 ("An unconditional `break'
> statement shall terminate every switch-clause").
> No funtional change.
>=20
> Signed-off-by: Federico Serafini <federico.serafini@bugseng.com>

Reviewed-by: Bertrand Marquis <bertrand.marquis@arm.com

Cheers
Bertrand

> ---
> xen/drivers/passthrough/arm/smmu-v3.c | 2 ++
> 1 file changed, 2 insertions(+)
>=20
> diff --git a/xen/drivers/passthrough/arm/smmu-v3.c b/xen/drivers/passthro=
ugh/arm/smmu-v3.c
> index cdbb505134..bca5866b35 100644
> --- a/xen/drivers/passthrough/arm/smmu-v3.c
> +++ b/xen/drivers/passthrough/arm/smmu-v3.c
> @@ -2200,6 +2200,7 @@ static int arm_smmu_device_hw_probe(struct arm_smmu=
_device *smmu)
> fallthrough;
> case IDR0_STALL_MODEL_STALL:
> smmu->features |=3D ARM_SMMU_FEAT_STALLS;
> + break;
> }
>=20
> if (reg & IDR0_S2P)
> @@ -2301,6 +2302,7 @@ static int arm_smmu_device_hw_probe(struct arm_smmu=
_device *smmu)
> fallthrough;
> case IDR5_OAS_48_BIT:
> smmu->oas =3D 48;
> + break;
> }
>=20
> smmu->oas =3D min_t(unsigned long, PADDR_BITS, smmu->oas);
> --=20
> 2.34.1
>=20



From xen-devel-bounces@lists.xenproject.org Fri Jan 05 15:20:16 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 05 Jan 2024 15:20:16 +0000
Received: from list by lists.xenproject.org with outflank-mailman.662218.1032199 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLlzb-0006vZ-0T; Fri, 05 Jan 2024 15:20:15 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 662218.1032199; Fri, 05 Jan 2024 15:20:14 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLlza-0006vS-SV; Fri, 05 Jan 2024 15:20:14 +0000
Received: by outflank-mailman (input) for mailman id 662218;
 Fri, 05 Jan 2024 15:20:14 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=EEqs=IP=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1rLlzZ-0006vM-Up
 for xen-devel@lists.xenproject.org; Fri, 05 Jan 2024 15:20:13 +0000
Received: from mail-wm1-x331.google.com (mail-wm1-x331.google.com
 [2a00:1450:4864:20::331])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id ebd3d401-abdd-11ee-98ef-6d05b1d4d9a1;
 Fri, 05 Jan 2024 16:20:12 +0100 (CET)
Received: by mail-wm1-x331.google.com with SMTP id
 5b1f17b1804b1-40d4a222818so3880185e9.0
 for <xen-devel@lists.xenproject.org>; Fri, 05 Jan 2024 07:20:12 -0800 (PST)
Received: from [10.80.67.30] (default-46-102-197-194.interdsl.co.uk.
 [46.102.197.194]) by smtp.gmail.com with ESMTPSA id
 u7-20020a05600c138700b0040d8d11bf63sm1878411wmf.41.2024.01.05.07.20.11
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Fri, 05 Jan 2024 07:20:12 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: ebd3d401-abdd-11ee-98ef-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1704468012; x=1705072812; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=apR7gjP2/pank4iw5nBEpEp5aZZs6/vmySBaf8Fp/sU=;
        b=oZFasCLlXkSdRMSAybOS1vVNI2DXWdLvZvCNrcjQ5GJS28hYDENhxINwvP5zbWUZdj
         K+Spfufptp4nxTi1B4sD9Meoli19qt5sThavII+z286GPxUaZsWVushiyDObWFm/D9MI
         NLMOUUKIG5j0sd0VjjK7xe1uWMrtGwLWhPxdA=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704468012; x=1705072812;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=apR7gjP2/pank4iw5nBEpEp5aZZs6/vmySBaf8Fp/sU=;
        b=EFBQSHIrvYlitOh7NSoXUtgL2gIVJJw17j0dJ6/5oLqCgV879Rz7f197Z7lHv9Gg7e
         y8BUlCv6pfGTVy3tHee9ANN9F0qYCZqgspiJ/yhjIbkH0Lj8T6da2uGgnYjcj8iC6ril
         8WBTP2GI8mYSwjI0ENb2QdT6CeUoLqJ9/s9OMh+yOHVQ/SdUI9S3m/gRusXu0zJlfZYO
         oqpPHBork2F5nXVAjrje69LPqRQrU7y0BrpegL2R9H0ZZdvAb4vBEM+vkx4aZ90u1x4A
         XxqGwIhviFrnBtJuw+m2f7Ls+s2ovBqZse2RPX3ircL3z4J6EVzeEEvf48MALX9hHXUf
         sdjA==
X-Gm-Message-State: AOJu0YzZ29qRydqMN5HcJ2vXq447g3EDSTttfNAJ2XxuRdvVYoqT+XNT
	x9KjDuNKRJedbXjL3X0/upi/rGMkJC44iw==
X-Google-Smtp-Source: AGHT+IFnULwq7TEqfxmgtdy9hBf8qAzd+QiXx5vSB6uC7HJeuKY+7nZQUDGqit8hb6/usrfWjXr2vQ==
X-Received: by 2002:a7b:ca50:0:b0:40d:5aea:c89b with SMTP id m16-20020a7bca50000000b0040d5aeac89bmr1238576wml.64.1704468012370;
        Fri, 05 Jan 2024 07:20:12 -0800 (PST)
Message-ID: <db974c3d-7bd8-4317-8757-e7fd3ebda7b3@citrix.com>
Date: Fri, 5 Jan 2024 15:20:11 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 00/33] tools: enable xenstore-stubdom to use 9pfs
Content-Language: en-GB
To: Juergen Gross <jgross@suse.com>, xen-devel@lists.xenproject.org
Cc: Wei Liu <wl@xen.org>, Anthony PERARD <anthony.perard@citrix.com>,
 George Dunlap <george.dunlap@citrix.com>, Nick Rosbrook
 <rosbrookn@gmail.com>, Julien Grall <julien@xen.org>,
 Samuel Thibault <samuel.thibault@ens-lyon.org>
References: <20240104090055.27323-1-jgross@suse.com>
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 xsFNBFLhNn8BEADVhE+Hb8i0GV6mihnnr/uiQQdPF8kUoFzCOPXkf7jQ5sLYeJa0cQi6Penp
 VtiFYznTairnVsN5J+ujSTIb+OlMSJUWV4opS7WVNnxHbFTPYZVQ3erv7NKc2iVizCRZ2Kxn
 srM1oPXWRic8BIAdYOKOloF2300SL/bIpeD+x7h3w9B/qez7nOin5NzkxgFoaUeIal12pXSR
 Q354FKFoy6Vh96gc4VRqte3jw8mPuJQpfws+Pb+swvSf/i1q1+1I4jsRQQh2m6OTADHIqg2E
 ofTYAEh7R5HfPx0EXoEDMdRjOeKn8+vvkAwhviWXTHlG3R1QkbE5M/oywnZ83udJmi+lxjJ5
 YhQ5IzomvJ16H0Bq+TLyVLO/VRksp1VR9HxCzItLNCS8PdpYYz5TC204ViycobYU65WMpzWe
 LFAGn8jSS25XIpqv0Y9k87dLbctKKA14Ifw2kq5OIVu2FuX+3i446JOa2vpCI9GcjCzi3oHV
 e00bzYiHMIl0FICrNJU0Kjho8pdo0m2uxkn6SYEpogAy9pnatUlO+erL4LqFUO7GXSdBRbw5
 gNt25XTLdSFuZtMxkY3tq8MFss5QnjhehCVPEpE6y9ZjI4XB8ad1G4oBHVGK5LMsvg22PfMJ
 ISWFSHoF/B5+lHkCKWkFxZ0gZn33ju5n6/FOdEx4B8cMJt+cWwARAQABzSlBbmRyZXcgQ29v
 cGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPsLBegQTAQgAJAIbAwULCQgHAwUVCgkI
 CwUWAgMBAAIeAQIXgAUCWKD95wIZAQAKCRBlw/kGpdefoHbdD/9AIoR3k6fKl+RFiFpyAhvO
 59ttDFI7nIAnlYngev2XUR3acFElJATHSDO0ju+hqWqAb8kVijXLops0gOfqt3VPZq9cuHlh
 IMDquatGLzAadfFx2eQYIYT+FYuMoPZy/aTUazmJIDVxP7L383grjIkn+7tAv+qeDfE+txL4
 SAm1UHNvmdfgL2/lcmL3xRh7sub3nJilM93RWX1Pe5LBSDXO45uzCGEdst6uSlzYR/MEr+5Z
 JQQ32JV64zwvf/aKaagSQSQMYNX9JFgfZ3TKWC1KJQbX5ssoX/5hNLqxMcZV3TN7kU8I3kjK
 mPec9+1nECOjjJSO/h4P0sBZyIUGfguwzhEeGf4sMCuSEM4xjCnwiBwftR17sr0spYcOpqET
 ZGcAmyYcNjy6CYadNCnfR40vhhWuCfNCBzWnUW0lFoo12wb0YnzoOLjvfD6OL3JjIUJNOmJy
 RCsJ5IA/Iz33RhSVRmROu+TztwuThClw63g7+hoyewv7BemKyuU6FTVhjjW+XUWmS/FzknSi
 dAG+insr0746cTPpSkGl3KAXeWDGJzve7/SBBfyznWCMGaf8E2P1oOdIZRxHgWj0zNr1+ooF
 /PzgLPiCI4OMUttTlEKChgbUTQ+5o0P080JojqfXwbPAyumbaYcQNiH1/xYbJdOFSiBv9rpt
 TQTBLzDKXok86M7BTQRS4TZ/ARAAkgqudHsp+hd82UVkvgnlqZjzz2vyrYfz7bkPtXaGb9H4
 Rfo7mQsEQavEBdWWjbga6eMnDqtu+FC+qeTGYebToxEyp2lKDSoAsvt8w82tIlP/EbmRbDVn
 7bhjBlfRcFjVYw8uVDPptT0TV47vpoCVkTwcyb6OltJrvg/QzV9f07DJswuda1JH3/qvYu0p
 vjPnYvCq4NsqY2XSdAJ02HrdYPFtNyPEntu1n1KK+gJrstjtw7KsZ4ygXYrsm/oCBiVW/OgU
 g/XIlGErkrxe4vQvJyVwg6YH653YTX5hLLUEL1NS4TCo47RP+wi6y+TnuAL36UtK/uFyEuPy
 wwrDVcC4cIFhYSfsO0BumEI65yu7a8aHbGfq2lW251UcoU48Z27ZUUZd2Dr6O/n8poQHbaTd
 6bJJSjzGGHZVbRP9UQ3lkmkmc0+XCHmj5WhwNNYjgbbmML7y0fsJT5RgvefAIFfHBg7fTY/i
 kBEimoUsTEQz+N4hbKwo1hULfVxDJStE4sbPhjbsPCrlXf6W9CxSyQ0qmZ2bXsLQYRj2xqd1
 bpA+1o1j2N4/au1R/uSiUFjewJdT/LX1EklKDcQwpk06Af/N7VZtSfEJeRV04unbsKVXWZAk
 uAJyDDKN99ziC0Wz5kcPyVD1HNf8bgaqGDzrv3TfYjwqayRFcMf7xJaL9xXedMcAEQEAAcLB
 XwQYAQgACQUCUuE2fwIbDAAKCRBlw/kGpdefoG4XEACD1Qf/er8EA7g23HMxYWd3FXHThrVQ
 HgiGdk5Yh632vjOm9L4sd/GCEACVQKjsu98e8o3ysitFlznEns5EAAXEbITrgKWXDDUWGYxd
 pnjj2u+GkVdsOAGk0kxczX6s+VRBhpbBI2PWnOsRJgU2n10PZ3mZD4Xu9kU2IXYmuW+e5KCA
 vTArRUdCrAtIa1k01sPipPPw6dfxx2e5asy21YOytzxuWFfJTGnVxZZSCyLUO83sh6OZhJkk
 b9rxL9wPmpN/t2IPaEKoAc0FTQZS36wAMOXkBh24PQ9gaLJvfPKpNzGD8XWR5HHF0NLIJhgg
 4ZlEXQ2fVp3XrtocHqhu4UZR4koCijgB8sB7Tb0GCpwK+C4UePdFLfhKyRdSXuvY3AHJd4CP
 4JzW0Bzq/WXY3XMOzUTYApGQpnUpdOmuQSfpV9MQO+/jo7r6yPbxT7CwRS5dcQPzUiuHLK9i
 nvjREdh84qycnx0/6dDroYhp0DFv4udxuAvt1h4wGwTPRQZerSm4xaYegEFusyhbZrI0U9tJ
 B8WrhBLXDiYlyJT6zOV2yZFuW47VrLsjYnHwn27hmxTC/7tvG3euCklmkn9Sl9IAKFu29RSo
 d5bD8kMSCYsTqtTfT6W4A3qHGvIDta3ptLYpIAOD2sY3GYq2nf3Bbzx81wZK14JdDDHUX2Rs
 6+ahAA==
In-Reply-To: <20240104090055.27323-1-jgross@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 04/01/2024 9:00 am, Juergen Gross wrote:
>   tools: add a new xen logging daemon
>   tools/xenlogd: connect to frontend
>   tools/xenlogd: add transport layer
>   tools/xenlogd: add 9pfs response generation support
>   tools/xenlogd: add 9pfs version request support
>   tools/xenlogd: add 9pfs attach request support
>   tools/xenlogd: add 9pfs walk request support
>   tools/xenlogd: add 9pfs open request support
>   tools/xenlogd: add 9pfs clunk request support
>   tools/xenlogd: add 9pfs create request support
>   tools/xenlogd: add 9pfs stat request support
>   tools/xenlogd: add 9pfs write request support
>   tools/xenlogd: add 9pfs read request support

These all need s/logd/9pfsd/, although I think mostly in the subject only.

Can be fixed on commit, because some of them look like they're otherwise
ready to go in.

~Andrew


From xen-devel-bounces@lists.xenproject.org Fri Jan 05 15:21:48 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 05 Jan 2024 15:21:48 +0000
Received: from list by lists.xenproject.org with outflank-mailman.662220.1032209 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLm12-0007qU-9O; Fri, 05 Jan 2024 15:21:44 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 662220.1032209; Fri, 05 Jan 2024 15:21:44 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLm12-0007qN-6V; Fri, 05 Jan 2024 15:21:44 +0000
Received: by outflank-mailman (input) for mailman id 662220;
 Fri, 05 Jan 2024 15:21:42 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=EEqs=IP=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1rLm10-0007qA-Ds
 for xen-devel@lists.xenproject.org; Fri, 05 Jan 2024 15:21:42 +0000
Received: from mail-wm1-x333.google.com (mail-wm1-x333.google.com
 [2a00:1450:4864:20::333])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 20a579b9-abde-11ee-98ef-6d05b1d4d9a1;
 Fri, 05 Jan 2024 16:21:41 +0100 (CET)
Received: by mail-wm1-x333.google.com with SMTP id
 5b1f17b1804b1-40d89446895so3910755e9.0
 for <xen-devel@lists.xenproject.org>; Fri, 05 Jan 2024 07:21:41 -0800 (PST)
Received: from [10.80.67.30] (default-46-102-197-194.interdsl.co.uk.
 [46.102.197.194]) by smtp.gmail.com with ESMTPSA id
 u7-20020a05600c138700b0040d8d11bf63sm1878411wmf.41.2024.01.05.07.21.40
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Fri, 05 Jan 2024 07:21:40 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 20a579b9-abde-11ee-98ef-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1704468101; x=1705072901; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=BpaRolvuHdXPIydnSYjUishtD4yDSzFcPvBDhNGqws8=;
        b=Wmo8dCXf+MT2GN5Yo1ABZnkJYiT+x5XvYA+WwniXbywNcwc7UNt+J2M5LIsVT3w6W+
         9kETbddEuN+H0lP4CJysxKUHf/kDm7gOD4v18kDIwMHr8wfwcDnx/pZ4Z4l4EaQSzmJq
         8MWHJBAJe6uZNw/uvCX2/bls6lReBA8aUzQ3o=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704468101; x=1705072901;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=BpaRolvuHdXPIydnSYjUishtD4yDSzFcPvBDhNGqws8=;
        b=JP/yS3wWwo8AXDvR0LaRwDoU5OiuoQ8B6NfG3icxV2VgLbi2zRyoMo9J6hT3nEmkAg
         vdv0juBKbelaHUj4M3N/Sx8FBilgFMNbdGM9qBTeYRpxz9OOtVVgfSeriBhTeC6/lCca
         ROzNRNq4QOwdC73WyVMhux7L1vpIMfd0Z56RrP/fjWi7C8Czn/BTKDfBAOKlLxkwpzDY
         Brgu1MGyDVyhJlo+YtYvPgEps/OXB9pVJRsfO+T48a//coXyXPaJqPoElAXcMKEEmErg
         Wr2XrkQWVzzy15qt3uzTOfsmDaeQ24XTTJ+meQESVhXV5je1USupcHhNLoQrmpNAeBcP
         nLXA==
X-Gm-Message-State: AOJu0Yz2eX45GsLf67ChWvYorZwwRUWY/stTKvvvCYWKOhdPqi9nWkHu
	QWYSrvngJ+gmkWtkmtiI1rvCM/YEtnEJTA==
X-Google-Smtp-Source: AGHT+IEytZUn5EQu+Dr9vQWVvXjMN6LNoqxgaMkeh9VvGGs9o2CpXUeQrvF5pXd1rs7LZk/3kAq2Gg==
X-Received: by 2002:a05:600c:3145:b0:40d:61bc:cf55 with SMTP id h5-20020a05600c314500b0040d61bccf55mr1319558wmo.89.1704468101070;
        Fri, 05 Jan 2024 07:21:41 -0800 (PST)
Message-ID: <90e5c9b1-d6b8-44d4-a170-9ffcb13577cf@citrix.com>
Date: Fri, 5 Jan 2024 15:21:40 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 01/33] tools: add access macros for unaligned data
Content-Language: en-GB
To: Juergen Gross <jgross@suse.com>, xen-devel@lists.xenproject.org
Cc: Wei Liu <wl@xen.org>, Anthony PERARD <anthony.perard@citrix.com>
References: <20240104090055.27323-1-jgross@suse.com>
 <20240104090055.27323-2-jgross@suse.com>
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 xsFNBFLhNn8BEADVhE+Hb8i0GV6mihnnr/uiQQdPF8kUoFzCOPXkf7jQ5sLYeJa0cQi6Penp
 VtiFYznTairnVsN5J+ujSTIb+OlMSJUWV4opS7WVNnxHbFTPYZVQ3erv7NKc2iVizCRZ2Kxn
 srM1oPXWRic8BIAdYOKOloF2300SL/bIpeD+x7h3w9B/qez7nOin5NzkxgFoaUeIal12pXSR
 Q354FKFoy6Vh96gc4VRqte3jw8mPuJQpfws+Pb+swvSf/i1q1+1I4jsRQQh2m6OTADHIqg2E
 ofTYAEh7R5HfPx0EXoEDMdRjOeKn8+vvkAwhviWXTHlG3R1QkbE5M/oywnZ83udJmi+lxjJ5
 YhQ5IzomvJ16H0Bq+TLyVLO/VRksp1VR9HxCzItLNCS8PdpYYz5TC204ViycobYU65WMpzWe
 LFAGn8jSS25XIpqv0Y9k87dLbctKKA14Ifw2kq5OIVu2FuX+3i446JOa2vpCI9GcjCzi3oHV
 e00bzYiHMIl0FICrNJU0Kjho8pdo0m2uxkn6SYEpogAy9pnatUlO+erL4LqFUO7GXSdBRbw5
 gNt25XTLdSFuZtMxkY3tq8MFss5QnjhehCVPEpE6y9ZjI4XB8ad1G4oBHVGK5LMsvg22PfMJ
 ISWFSHoF/B5+lHkCKWkFxZ0gZn33ju5n6/FOdEx4B8cMJt+cWwARAQABzSlBbmRyZXcgQ29v
 cGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPsLBegQTAQgAJAIbAwULCQgHAwUVCgkI
 CwUWAgMBAAIeAQIXgAUCWKD95wIZAQAKCRBlw/kGpdefoHbdD/9AIoR3k6fKl+RFiFpyAhvO
 59ttDFI7nIAnlYngev2XUR3acFElJATHSDO0ju+hqWqAb8kVijXLops0gOfqt3VPZq9cuHlh
 IMDquatGLzAadfFx2eQYIYT+FYuMoPZy/aTUazmJIDVxP7L383grjIkn+7tAv+qeDfE+txL4
 SAm1UHNvmdfgL2/lcmL3xRh7sub3nJilM93RWX1Pe5LBSDXO45uzCGEdst6uSlzYR/MEr+5Z
 JQQ32JV64zwvf/aKaagSQSQMYNX9JFgfZ3TKWC1KJQbX5ssoX/5hNLqxMcZV3TN7kU8I3kjK
 mPec9+1nECOjjJSO/h4P0sBZyIUGfguwzhEeGf4sMCuSEM4xjCnwiBwftR17sr0spYcOpqET
 ZGcAmyYcNjy6CYadNCnfR40vhhWuCfNCBzWnUW0lFoo12wb0YnzoOLjvfD6OL3JjIUJNOmJy
 RCsJ5IA/Iz33RhSVRmROu+TztwuThClw63g7+hoyewv7BemKyuU6FTVhjjW+XUWmS/FzknSi
 dAG+insr0746cTPpSkGl3KAXeWDGJzve7/SBBfyznWCMGaf8E2P1oOdIZRxHgWj0zNr1+ooF
 /PzgLPiCI4OMUttTlEKChgbUTQ+5o0P080JojqfXwbPAyumbaYcQNiH1/xYbJdOFSiBv9rpt
 TQTBLzDKXok86M7BTQRS4TZ/ARAAkgqudHsp+hd82UVkvgnlqZjzz2vyrYfz7bkPtXaGb9H4
 Rfo7mQsEQavEBdWWjbga6eMnDqtu+FC+qeTGYebToxEyp2lKDSoAsvt8w82tIlP/EbmRbDVn
 7bhjBlfRcFjVYw8uVDPptT0TV47vpoCVkTwcyb6OltJrvg/QzV9f07DJswuda1JH3/qvYu0p
 vjPnYvCq4NsqY2XSdAJ02HrdYPFtNyPEntu1n1KK+gJrstjtw7KsZ4ygXYrsm/oCBiVW/OgU
 g/XIlGErkrxe4vQvJyVwg6YH653YTX5hLLUEL1NS4TCo47RP+wi6y+TnuAL36UtK/uFyEuPy
 wwrDVcC4cIFhYSfsO0BumEI65yu7a8aHbGfq2lW251UcoU48Z27ZUUZd2Dr6O/n8poQHbaTd
 6bJJSjzGGHZVbRP9UQ3lkmkmc0+XCHmj5WhwNNYjgbbmML7y0fsJT5RgvefAIFfHBg7fTY/i
 kBEimoUsTEQz+N4hbKwo1hULfVxDJStE4sbPhjbsPCrlXf6W9CxSyQ0qmZ2bXsLQYRj2xqd1
 bpA+1o1j2N4/au1R/uSiUFjewJdT/LX1EklKDcQwpk06Af/N7VZtSfEJeRV04unbsKVXWZAk
 uAJyDDKN99ziC0Wz5kcPyVD1HNf8bgaqGDzrv3TfYjwqayRFcMf7xJaL9xXedMcAEQEAAcLB
 XwQYAQgACQUCUuE2fwIbDAAKCRBlw/kGpdefoG4XEACD1Qf/er8EA7g23HMxYWd3FXHThrVQ
 HgiGdk5Yh632vjOm9L4sd/GCEACVQKjsu98e8o3ysitFlznEns5EAAXEbITrgKWXDDUWGYxd
 pnjj2u+GkVdsOAGk0kxczX6s+VRBhpbBI2PWnOsRJgU2n10PZ3mZD4Xu9kU2IXYmuW+e5KCA
 vTArRUdCrAtIa1k01sPipPPw6dfxx2e5asy21YOytzxuWFfJTGnVxZZSCyLUO83sh6OZhJkk
 b9rxL9wPmpN/t2IPaEKoAc0FTQZS36wAMOXkBh24PQ9gaLJvfPKpNzGD8XWR5HHF0NLIJhgg
 4ZlEXQ2fVp3XrtocHqhu4UZR4koCijgB8sB7Tb0GCpwK+C4UePdFLfhKyRdSXuvY3AHJd4CP
 4JzW0Bzq/WXY3XMOzUTYApGQpnUpdOmuQSfpV9MQO+/jo7r6yPbxT7CwRS5dcQPzUiuHLK9i
 nvjREdh84qycnx0/6dDroYhp0DFv4udxuAvt1h4wGwTPRQZerSm4xaYegEFusyhbZrI0U9tJ
 B8WrhBLXDiYlyJT6zOV2yZFuW47VrLsjYnHwn27hmxTC/7tvG3euCklmkn9Sl9IAKFu29RSo
 d5bD8kMSCYsTqtTfT6W4A3qHGvIDta3ptLYpIAOD2sY3GYq2nf3Bbzx81wZK14JdDDHUX2Rs
 6+ahAA==
In-Reply-To: <20240104090055.27323-2-jgross@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 04/01/2024 9:00 am, Juergen Gross wrote:
> Add the basic access macros for unaligned data to common-macros.h.
>
> Signed-off-by: Juergen Gross <jgross@suse.com>

Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>


From xen-devel-bounces@lists.xenproject.org Fri Jan 05 15:24:44 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 05 Jan 2024 15:24:44 +0000
Received: from list by lists.xenproject.org with outflank-mailman.662224.1032218 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLm3v-0008RJ-Mc; Fri, 05 Jan 2024 15:24:43 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 662224.1032218; Fri, 05 Jan 2024 15:24:43 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLm3v-0008RC-Jw; Fri, 05 Jan 2024 15:24:43 +0000
Received: by outflank-mailman (input) for mailman id 662224;
 Fri, 05 Jan 2024 15:24:41 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=DYK8=IP=cloud.com=ross.lagerwall@srs-se1.protection.inumbo.net>)
 id 1rLm3t-0008R4-IX
 for xen-devel@lists.xenproject.org; Fri, 05 Jan 2024 15:24:41 +0000
Received: from mail-wm1-x32b.google.com (mail-wm1-x32b.google.com
 [2a00:1450:4864:20::32b])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 8b588947-abde-11ee-98ef-6d05b1d4d9a1;
 Fri, 05 Jan 2024 16:24:40 +0100 (CET)
Received: by mail-wm1-x32b.google.com with SMTP id
 5b1f17b1804b1-40d8909a6feso17745805e9.2
 for <xen-devel@lists.xenproject.org>; Fri, 05 Jan 2024 07:24:40 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 8b588947-abde-11ee-98ef-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1704468280; x=1705073080; darn=lists.xenproject.org;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:from:to:cc:subject:date
         :message-id:reply-to;
        bh=OnYvA6C259NsK5O+esL6YhNa/qj2wVkZ0Gh31+CLHi4=;
        b=adn7K4fOHj45TMThr5cKm4BQyJKnYvCGBnHvwoL5pRTWk1Z37yM5dopQe1JsJLCKxe
         KLsmXN/+BXj6OAxLF2qv1/JTxdaGQtHQzT1PcG6JeOOP7T5+N8TCRdxydmcdvECErkik
         xoMe867Wk9k2yAyKAa+W1w0ZN3OkxTuxHC4dk=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704468280; x=1705073080;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to;
        bh=OnYvA6C259NsK5O+esL6YhNa/qj2wVkZ0Gh31+CLHi4=;
        b=PeyVulXpMkJa5CL0anT7s5GaFane9vhppaf5Y3ujgoT9j8PecS+7IsrGNb49//ndMj
         RnkA/VocIZkPyy+hBZdRra/cj42XlMX7YQE0naO0SokFSxa5iHuPCffv2dxAKM+fqqCv
         MdHazew1brbCXVkPCfeIqfbuHHtFp13SZKQQBhwLyYYhfpD7pE2HOtSd7KLGpqNT5oJ7
         pJSy7jTixinULibwrY+n58PfpBng3rnGJhp9cgtPn3OKmN9OQtn0+ddqo5aMV4T/kAiD
         nFawemdLbfy/6qEoG3z3JC7z95A4ERqgvbyTtQlYfXk1NhgIYqs2wKnmdNMgfN/491hL
         GAlw==
X-Gm-Message-State: AOJu0YxW66V/gqSK/TK74MiSmV74f2WeISela+k2kggCSV0hOxRFDGNc
	02UFQmo8aoeRAS8UMTJVZENAFx/pyy1lulqFBr1NboWV3nil
X-Google-Smtp-Source: AGHT+IHfzicJsepAJwlvjE2CM9hgEEBHUHHn46FN6cegpe7wHIq3Qynau2VhxqntYFMS5/rGf7InWFkQmam93YnKRic=
X-Received: by 2002:a05:600c:601d:b0:40e:393e:8de4 with SMTP id
 az29-20020a05600c601d00b0040e393e8de4mr330199wmb.114.1704468280046; Fri, 05
 Jan 2024 07:24:40 -0800 (PST)
MIME-Version: 1.0
References: <20231222220045.2840714-1-andrew.cooper3@citrix.com>
In-Reply-To: <20231222220045.2840714-1-andrew.cooper3@citrix.com>
From: Ross Lagerwall <ross.lagerwall@cloud.com>
Date: Fri, 5 Jan 2024 15:24:28 +0000
Message-ID: <CAG7k0Erh3xE5EdWhNm4Koi-hU+77Swsx_GvSSNzfY2uOh3AoLQ@mail.gmail.com>
Subject: Re: [PATCH] xen/livepatch: Make check_for_livepatch_work() faster in
 the common case
To: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: Xen-devel <xen-devel@lists.xenproject.org>, 
	Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>, Jan Beulich <JBeulich@suse.com>, 
	=?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>, Wei Liu <wl@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

On Fri, Dec 22, 2023 at 10:01=E2=80=AFPM Andrew Cooper
<andrew.cooper3@citrix.com> wrote:
>
> When livepatching is enabled, this function is used all the time.  Really=
 do
> check the fastpath first, and annotate it likely() as this is the right a=
nswer
> 100% of the time (to many significant figures).
>
> This cuts out 3 pointer dereferences in the "nothing to do path", and it =
seems
> the optimiser has an easier time too.  Bloat-o-meter reports:
>
>   add/remove: 0/0 grow/shrink: 0/2 up/down: 0/-57 (-57)
>   Function                                     old     new   delta
>   check_for_livepatch_work.cold               1201    1183     -18
>   check_for_livepatch_work                    1021     982     -39
>
> which isn't too shabby for no logical change.
>
> Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>

Reviewed-by: Ross Lagerwall <ross.lagerwall@citrix.com>


From xen-devel-bounces@lists.xenproject.org Fri Jan 05 15:48:29 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 05 Jan 2024 15:48:29 +0000
Received: from list by lists.xenproject.org with outflank-mailman.662230.1032229 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLmQp-0004Z1-Gm; Fri, 05 Jan 2024 15:48:23 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 662230.1032229; Fri, 05 Jan 2024 15:48:23 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLmQp-0004Yu-E5; Fri, 05 Jan 2024 15:48:23 +0000
Received: by outflank-mailman (input) for mailman id 662230;
 Fri, 05 Jan 2024 15:48:22 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=EEqs=IP=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1rLmQo-0004Yo-U8
 for xen-devel@lists.xenproject.org; Fri, 05 Jan 2024 15:48:22 +0000
Received: from mail-wr1-x42d.google.com (mail-wr1-x42d.google.com
 [2a00:1450:4864:20::42d])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id d9c95374-abe1-11ee-9b0f-b553b5be7939;
 Fri, 05 Jan 2024 16:48:20 +0100 (CET)
Received: by mail-wr1-x42d.google.com with SMTP id
 ffacd0b85a97d-3374c693f92so1225569f8f.1
 for <xen-devel@lists.xenproject.org>; Fri, 05 Jan 2024 07:48:20 -0800 (PST)
Received: from [10.80.67.30] (default-46-102-197-194.interdsl.co.uk.
 [46.102.197.194]) by smtp.gmail.com with ESMTPSA id
 e8-20020a5d5948000000b00336898daceasm1609008wri.96.2024.01.05.07.48.19
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Fri, 05 Jan 2024 07:48:19 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: d9c95374-abe1-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1704469700; x=1705074500; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=+Zc+rMfjVudvak2rGkGjWrD94OPYcM/V1m5czJ96iFM=;
        b=q6zbFRkscxvNUNh5FFTqoDyUvgoiOunaRkG7OYdRy+ecXPgUkwc1KWOoUdzZNQvU2V
         F/UVPVJ1Zae1N1jV35go8ztAloLuDub8c5sc0XwWAQtj4c63XeIEBC7TElXJ4v8dJ4nE
         H3JkDzwHsFKNod1MHr9JsqU3SQEciLojnUscA=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704469700; x=1705074500;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=+Zc+rMfjVudvak2rGkGjWrD94OPYcM/V1m5czJ96iFM=;
        b=PdlnOvJ3vS6pRSSJEAKxDZHqxsKHLFhnCF32zzZQoqyPs3dc+772kH+jJzmvy61vZh
         bobeFAhB5pf/dcnPxBQkzv4scixMofOXlmmLs2im4lTea6lKB3ADJp1oYOWOal2y6fxA
         Go50SZXB8L6KI+wYrgEIZ5dRY9h6CcW6hCGh5YTQbxEto2IJBbLHOXrULbohsKI1RxCd
         8/2x1B2SbteFIVKt2fr2YNRod39reMbD+E8vwWt9oIcjpJRqFfHcLZxgQuLRF+OSMS46
         2t7VgHwsCf3Tj+TEvHyq9V4wmeg3F63QTM0ke2mj5v1mw2i68onthFayTJys7ICh2DeB
         bDLw==
X-Gm-Message-State: AOJu0YxM/ufzx6VJI/ZAKIRiNuUjdG6YUYMGmr0g8nTSXBZkePrDS2FY
	Jrqa9dyEAmgRItooD9LFGW63LUmf1WQHUw==
X-Google-Smtp-Source: AGHT+IEOD/LO3dwrCR6VleskKHqWadqa1CSLc1/WYYcHaxQVdWZnxyziMx5tvBWFA9MJ9cZqXS1dfg==
X-Received: by 2002:adf:fc90:0:b0:337:5c86:2055 with SMTP id g16-20020adffc90000000b003375c862055mr318661wrr.133.1704469700102;
        Fri, 05 Jan 2024 07:48:20 -0800 (PST)
Message-ID: <39250f3a-40f0-493d-b292-040773ab8427@citrix.com>
Date: Fri, 5 Jan 2024 15:48:19 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 03/33] tools: add a new xen logging daemon
Content-Language: en-GB
To: Juergen Gross <jgross@suse.com>, xen-devel@lists.xenproject.org
Cc: Wei Liu <wl@xen.org>, Anthony PERARD <anthony.perard@citrix.com>,
 Jason Andryuk <jandryuk@gmail.com>
References: <20240104090055.27323-1-jgross@suse.com>
 <20240104090055.27323-4-jgross@suse.com>
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 xsFNBFLhNn8BEADVhE+Hb8i0GV6mihnnr/uiQQdPF8kUoFzCOPXkf7jQ5sLYeJa0cQi6Penp
 VtiFYznTairnVsN5J+ujSTIb+OlMSJUWV4opS7WVNnxHbFTPYZVQ3erv7NKc2iVizCRZ2Kxn
 srM1oPXWRic8BIAdYOKOloF2300SL/bIpeD+x7h3w9B/qez7nOin5NzkxgFoaUeIal12pXSR
 Q354FKFoy6Vh96gc4VRqte3jw8mPuJQpfws+Pb+swvSf/i1q1+1I4jsRQQh2m6OTADHIqg2E
 ofTYAEh7R5HfPx0EXoEDMdRjOeKn8+vvkAwhviWXTHlG3R1QkbE5M/oywnZ83udJmi+lxjJ5
 YhQ5IzomvJ16H0Bq+TLyVLO/VRksp1VR9HxCzItLNCS8PdpYYz5TC204ViycobYU65WMpzWe
 LFAGn8jSS25XIpqv0Y9k87dLbctKKA14Ifw2kq5OIVu2FuX+3i446JOa2vpCI9GcjCzi3oHV
 e00bzYiHMIl0FICrNJU0Kjho8pdo0m2uxkn6SYEpogAy9pnatUlO+erL4LqFUO7GXSdBRbw5
 gNt25XTLdSFuZtMxkY3tq8MFss5QnjhehCVPEpE6y9ZjI4XB8ad1G4oBHVGK5LMsvg22PfMJ
 ISWFSHoF/B5+lHkCKWkFxZ0gZn33ju5n6/FOdEx4B8cMJt+cWwARAQABzSlBbmRyZXcgQ29v
 cGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPsLBegQTAQgAJAIbAwULCQgHAwUVCgkI
 CwUWAgMBAAIeAQIXgAUCWKD95wIZAQAKCRBlw/kGpdefoHbdD/9AIoR3k6fKl+RFiFpyAhvO
 59ttDFI7nIAnlYngev2XUR3acFElJATHSDO0ju+hqWqAb8kVijXLops0gOfqt3VPZq9cuHlh
 IMDquatGLzAadfFx2eQYIYT+FYuMoPZy/aTUazmJIDVxP7L383grjIkn+7tAv+qeDfE+txL4
 SAm1UHNvmdfgL2/lcmL3xRh7sub3nJilM93RWX1Pe5LBSDXO45uzCGEdst6uSlzYR/MEr+5Z
 JQQ32JV64zwvf/aKaagSQSQMYNX9JFgfZ3TKWC1KJQbX5ssoX/5hNLqxMcZV3TN7kU8I3kjK
 mPec9+1nECOjjJSO/h4P0sBZyIUGfguwzhEeGf4sMCuSEM4xjCnwiBwftR17sr0spYcOpqET
 ZGcAmyYcNjy6CYadNCnfR40vhhWuCfNCBzWnUW0lFoo12wb0YnzoOLjvfD6OL3JjIUJNOmJy
 RCsJ5IA/Iz33RhSVRmROu+TztwuThClw63g7+hoyewv7BemKyuU6FTVhjjW+XUWmS/FzknSi
 dAG+insr0746cTPpSkGl3KAXeWDGJzve7/SBBfyznWCMGaf8E2P1oOdIZRxHgWj0zNr1+ooF
 /PzgLPiCI4OMUttTlEKChgbUTQ+5o0P080JojqfXwbPAyumbaYcQNiH1/xYbJdOFSiBv9rpt
 TQTBLzDKXok86M7BTQRS4TZ/ARAAkgqudHsp+hd82UVkvgnlqZjzz2vyrYfz7bkPtXaGb9H4
 Rfo7mQsEQavEBdWWjbga6eMnDqtu+FC+qeTGYebToxEyp2lKDSoAsvt8w82tIlP/EbmRbDVn
 7bhjBlfRcFjVYw8uVDPptT0TV47vpoCVkTwcyb6OltJrvg/QzV9f07DJswuda1JH3/qvYu0p
 vjPnYvCq4NsqY2XSdAJ02HrdYPFtNyPEntu1n1KK+gJrstjtw7KsZ4ygXYrsm/oCBiVW/OgU
 g/XIlGErkrxe4vQvJyVwg6YH653YTX5hLLUEL1NS4TCo47RP+wi6y+TnuAL36UtK/uFyEuPy
 wwrDVcC4cIFhYSfsO0BumEI65yu7a8aHbGfq2lW251UcoU48Z27ZUUZd2Dr6O/n8poQHbaTd
 6bJJSjzGGHZVbRP9UQ3lkmkmc0+XCHmj5WhwNNYjgbbmML7y0fsJT5RgvefAIFfHBg7fTY/i
 kBEimoUsTEQz+N4hbKwo1hULfVxDJStE4sbPhjbsPCrlXf6W9CxSyQ0qmZ2bXsLQYRj2xqd1
 bpA+1o1j2N4/au1R/uSiUFjewJdT/LX1EklKDcQwpk06Af/N7VZtSfEJeRV04unbsKVXWZAk
 uAJyDDKN99ziC0Wz5kcPyVD1HNf8bgaqGDzrv3TfYjwqayRFcMf7xJaL9xXedMcAEQEAAcLB
 XwQYAQgACQUCUuE2fwIbDAAKCRBlw/kGpdefoG4XEACD1Qf/er8EA7g23HMxYWd3FXHThrVQ
 HgiGdk5Yh632vjOm9L4sd/GCEACVQKjsu98e8o3ysitFlznEns5EAAXEbITrgKWXDDUWGYxd
 pnjj2u+GkVdsOAGk0kxczX6s+VRBhpbBI2PWnOsRJgU2n10PZ3mZD4Xu9kU2IXYmuW+e5KCA
 vTArRUdCrAtIa1k01sPipPPw6dfxx2e5asy21YOytzxuWFfJTGnVxZZSCyLUO83sh6OZhJkk
 b9rxL9wPmpN/t2IPaEKoAc0FTQZS36wAMOXkBh24PQ9gaLJvfPKpNzGD8XWR5HHF0NLIJhgg
 4ZlEXQ2fVp3XrtocHqhu4UZR4koCijgB8sB7Tb0GCpwK+C4UePdFLfhKyRdSXuvY3AHJd4CP
 4JzW0Bzq/WXY3XMOzUTYApGQpnUpdOmuQSfpV9MQO+/jo7r6yPbxT7CwRS5dcQPzUiuHLK9i
 nvjREdh84qycnx0/6dDroYhp0DFv4udxuAvt1h4wGwTPRQZerSm4xaYegEFusyhbZrI0U9tJ
 B8WrhBLXDiYlyJT6zOV2yZFuW47VrLsjYnHwn27hmxTC/7tvG3euCklmkn9Sl9IAKFu29RSo
 d5bD8kMSCYsTqtTfT6W4A3qHGvIDta3ptLYpIAOD2sY3GYq2nf3Bbzx81wZK14JdDDHUX2Rs
 6+ahAA==
In-Reply-To: <20240104090055.27323-4-jgross@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Subject s/logging/9pfs/

On 04/01/2024 9:00 am, Juergen Gross wrote:
> diff --git a/tools/xen-9pfsd/xen-9pfsd.c b/tools/xen-9pfsd/xen-9pfsd.c
> new file mode 100644
> index 0000000000..22cfff0c4e
> --- /dev/null
> +++ b/tools/xen-9pfsd/xen-9pfsd.c
> @@ -0,0 +1,145 @@
> +/* SPDX-License-Identifier: GPL-2.0-only */
> +
> +/*
> + * xen-9pfsd - Xen 9pfs daemon
> + *
> + * Copyright (C) 2023 Juergen Gross <jgross@suse.com>

Presumably the year wants bumping now?

Both can be fixed on commit.  This is otherwise looking fine now.

Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>, although one other
suggestion

> +static void do_err(const char *msg)
> +{
> +    syslog(LOG_ALERT, "%s, errno = %d", msg, errno);

... errno %d, %s"

also passing in strerror() for the benefit of those who don't know the
errno number off by heart?

~Andrew


From xen-devel-bounces@lists.xenproject.org Fri Jan 05 16:09:48 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 05 Jan 2024 16:09:48 +0000
Received: from list by lists.xenproject.org with outflank-mailman.662234.1032238 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLmlK-00018v-6f; Fri, 05 Jan 2024 16:09:34 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 662234.1032238; Fri, 05 Jan 2024 16:09:34 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLmlK-00018o-3z; Fri, 05 Jan 2024 16:09:34 +0000
Received: by outflank-mailman (input) for mailman id 662234;
 Fri, 05 Jan 2024 16:09:32 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=c7fs=IP=linaro.org=alex.bennee@srs-se1.protection.inumbo.net>)
 id 1rLmlI-00018i-Ic
 for xen-devel@lists.xenproject.org; Fri, 05 Jan 2024 16:09:32 +0000
Received: from mail-wm1-x334.google.com (mail-wm1-x334.google.com
 [2a00:1450:4864:20::334])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id cec942ef-abe4-11ee-98ef-6d05b1d4d9a1;
 Fri, 05 Jan 2024 17:09:30 +0100 (CET)
Received: by mail-wm1-x334.google.com with SMTP id
 5b1f17b1804b1-40d4a7f0c4dso17633875e9.1
 for <xen-devel@lists.xenproject.org>; Fri, 05 Jan 2024 08:09:30 -0800 (PST)
Received: from draig.lan ([85.9.250.243]) by smtp.gmail.com with ESMTPSA id
 d10-20020a056000114a00b00336710ddea0sm1647921wrx.59.2024.01.05.08.09.29
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Fri, 05 Jan 2024 08:09:29 -0800 (PST)
Received: from draig (localhost [IPv6:::1])
 by draig.lan (Postfix) with ESMTP id 549BC5F933;
 Fri,  5 Jan 2024 16:09:29 +0000 (GMT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: cec942ef-abe4-11ee-98ef-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=linaro.org; s=google; t=1704470970; x=1705075770; darn=lists.xenproject.org;
        h=content-transfer-encoding:mime-version:message-id:date:user-agent
         :references:in-reply-to:subject:cc:to:from:from:to:cc:subject:date
         :message-id:reply-to;
        bh=JPjS24N6aCuE7w72QsslxPMj1wECkZRdY4dZFhSTMGQ=;
        b=Yy3u/dOrTjJ9AXbQ/SOo6SUzSavmMFvBBIZAsWpfe/8yer1PufaisZx1BXodEMjEZU
         P0CUwsO5krl7S+SnImAaRAlEDL5yFYZ9o8pnJ+/L7ehSpvVJI6xiLj3NFhEd+0EQSn+N
         EuptaQ+PN2G650bDJHR6ajSuqmmGtPkAGEIwp+4LsQwrcymOPguNTrTSU6BPC0r8blHX
         61E+g2bDOb+gJ9nhjg39KuXgk4A5Inxi6dgOO6ALcsomAN1ZMsSCseQpWsy+zE5ljXlj
         7/s0hBr0kke4DLBFX0H93JEYwgfcvHtmt81oWLs50aAZHa6Gua+j+wehDv+m+FtwWH12
         WVMA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704470970; x=1705075770;
        h=content-transfer-encoding:mime-version:message-id:date:user-agent
         :references:in-reply-to:subject:cc:to:from:x-gm-message-state:from
         :to:cc:subject:date:message-id:reply-to;
        bh=JPjS24N6aCuE7w72QsslxPMj1wECkZRdY4dZFhSTMGQ=;
        b=sGkdrOwmfHt/VlPqmXM9P/yxJhtFRA/YDSoqfbsZfTndW913xlYfp9hVTbel2PItbU
         BNcJVufc7BJgsg2NF4c7MdwBDwyoHheLRx3VjwglTJAxmIlTGoJNAbOEtf8DMZOUZWQS
         5EFE+s2EZOGbUlEB2u9UcEx3XfOc/YvvxhhkWSLRGy+T1dVYam0VtJ9rAqYYdxEpT6yi
         uIsjbt2OjgPXHdlETgArZy5XpjrDCZXP4rUAHwZSlnLHuGUNMfRuU/EU5tv4GZn0K8YC
         ivvWSj8v157+4okTIPB0k0KlIvzdL6bz1+fl021Sk0WSL43BTomzTwnpOW6D5U0BDB8j
         sKLw==
X-Gm-Message-State: AOJu0Yxm7Sp1fBdcSaLqcEO7yaV4wRLKio56wMoGVb4ziP423rfgDiBm
	9oQRhGGn3Ywwg0tHi9LVEd+i6bVPitzllg==
X-Google-Smtp-Source: AGHT+IFVgvkYokI7P2l5tvklCXid3qCE3ppbuWAimO0DAMUHfSfSv1G9f9CVAS/MkVLQFzp2ejEE/A==
X-Received: by 2002:a05:600c:3f8b:b0:40d:5fd4:ce2c with SMTP id fs11-20020a05600c3f8b00b0040d5fd4ce2cmr1261935wmb.53.1704470970048;
        Fri, 05 Jan 2024 08:09:30 -0800 (PST)
From: =?utf-8?Q?Alex_Benn=C3=A9e?= <alex.bennee@linaro.org>
To: Huang Rui <ray.huang@amd.com>
Cc: Akihiko Odaki <akihiko.odaki@daynix.com>,  =?utf-8?Q?Marc-Andr=C3=A9?=
 Lureau
 <marcandre.lureau@gmail.com>,  Philippe =?utf-8?Q?Mathieu-Daud=C3=A9?=
 <philmd@linaro.org>,
  Gerd Hoffmann <kraxel@redhat.com>,  "Michael S . Tsirkin"
 <mst@redhat.com>,  "Stefano Stabellini" <sstabellini@kernel.org>,  Anthony
 PERARD <anthony.perard@citrix.com>,  Antonio Caggiano
 <quic_acaggian@quicinc.com>,  "Dr . David Alan Gilbert"
 <dgilbert@redhat.com>,  Robert Beckett <bob.beckett@collabora.com>,
  Dmitry Osipenko <dmitry.osipenko@collabora.com>,  Gert Wollny
 <gert.wollny@collabora.com>,  <qemu-devel@nongnu.org>,
  <xen-devel@lists.xenproject.org>,  Gurchetan Singh
 <gurchetansingh@chromium.org>,  <ernunes@redhat.com>,  Alyssa Ross
 <hi@alyssa.is>,  Roger Pau =?utf-8?Q?Monn=C3=A9?= <roger.pau@citrix.com>,
  Alex Deucher
 <alexander.deucher@amd.com>,  Stefano Stabellini
 <stefano.stabellini@amd.com>,  Christian =?utf-8?Q?K=C3=B6nig?=
 <christian.koenig@amd.com>,
  Xenia Ragiadakou <xenia.ragiadakou@amd.com>,  Pierre-Eric Pelloux-Prayer
 <pierre-eric.pelloux-prayer@amd.com>,  "Honglei Huang"
 <honglei1.huang@amd.com>,  Julia Zhang <julia.zhang@amd.com>,  "Chen
 Jiqian" <Jiqian.Chen@amd.com>,  Manos Pitsidianakis
 <manos.pitsidianakis@linaro.org>,  AKASHI Takahiro
 <takahiro.akashi@linaro.org>
Subject: Re: [PATCH v6 11/11] virtio-gpu: make blob scanout use dmabuf fd
In-Reply-To: <87jzongb9u.fsf@draig.linaro.org> ("Alex =?utf-8?Q?Benn=C3=A9?=
 =?utf-8?Q?e=22's?= message of
	"Fri, 05 Jan 2024 13:28:13 +0000")
References: <20231219075320.165227-1-ray.huang@amd.com>
	<20231219075320.165227-12-ray.huang@amd.com>
	<87jzongb9u.fsf@draig.linaro.org>
User-Agent: mu4e 1.11.27; emacs 29.1
Date: Fri, 05 Jan 2024 16:09:29 +0000
Message-ID: <878r53g3t2.fsf@draig.linaro.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable

Alex Benn=C3=A9e <alex.bennee@linaro.org> writes:

> Huang Rui <ray.huang@amd.com> writes:
>
>> From: Robert Beckett <bob.beckett@collabora.com>
>>
>> This relies on a virglrenderer change to include the dmabuf fd when
>> returning resource info.
>>
> <snip>
>> +static void virgl_cmd_set_scanout_blob(VirtIOGPU *g,
>> +                                       struct virtio_gpu_ctrl_command *=
cmd)
>> +{
>> +    struct virgl_gpu_resource *vres;
>> +    struct virtio_gpu_framebuffer fb =3D { 0 };
>> +    struct virtio_gpu_set_scanout_blob ss;
>> +    struct virgl_renderer_resource_info info;
>> +    uint64_t fbend;
>> +
>> +    VIRTIO_GPU_FILL_CMD(ss);
>> +    virtio_gpu_scanout_blob_bswap(&ss);
>> +    trace_virtio_gpu_cmd_set_scanout_blob(ss.scanout_id, ss.resource_id,
>> +                                          ss.r.width, ss.r.height, ss.r=
.x,
>> +                                          ss.r.y);
>> +
>> +    if (ss.scanout_id >=3D g->parent_obj.conf.max_outputs) {
>> +        qemu_log_mask(LOG_GUEST_ERROR, "%s: illegal scanout id specifie=
d %d",
>> +                      __func__, ss.scanout_id);
>> +        cmd->error =3D VIRTIO_GPU_RESP_ERR_INVALID_SCANOUT_ID;
>> +        return;
>> +    }
>> +
>> +    if (ss.resource_id =3D=3D 0) {
>> +        virtio_gpu_disable_scanout(g, ss.scanout_id);
>> +        return;
>> +    }
>> +
>> +    if (ss.width < 16 ||
>> +        ss.height < 16 ||
>> +        ss.r.x + ss.r.width > ss.width ||
>> +        ss.r.y + ss.r.height > ss.height) {
>> +        qemu_log_mask(LOG_GUEST_ERROR, "%s: illegal scanout %d bounds f=
or"
>> +                      " resource %d, rect (%d,%d)+%d,%d, fb %d %d\n",
>> +                      __func__, ss.scanout_id, ss.resource_id,
>> +                      ss.r.x, ss.r.y, ss.r.width, ss.r.height,
>> +                      ss.width, ss.height);
>> +        cmd->error =3D VIRTIO_GPU_RESP_ERR_INVALID_PARAMETER;
>> +        return;
>> +    }
>> +
>> +    if (!console_has_gl(g->parent_obj.scanout[ss.scanout_id].con)) {
>> +        qemu_log_mask(LOG_GUEST_ERROR, "%s: unable to scanout blot with=
out GL!\n", __func__);
>> +        return;
>> +    }
>> +
>> +    vres =3D virgl_gpu_find_resource(g, ss.resource_id);
>> +    if (!vres) {
>> +        qemu_log_mask(LOG_GUEST_ERROR,
>> +                      "%s: illegal resource specified %d\n",
>> +                      __func__, ss.resource_id);
>> +        cmd->error =3D VIRTIO_GPU_RESP_ERR_INVALID_RESOURCE_ID;
>> +        return;
>> +    }
>> +    if (virgl_renderer_resource_get_info(ss.resource_id, &info)) {
>> +        qemu_log_mask(LOG_GUEST_ERROR,
>> +                      "%s: illegal virgl resource specified %d\n",
>> +                      __func__, ss.resource_id);
>> +        cmd->error =3D VIRTIO_GPU_RESP_ERR_INVALID_RESOURCE_ID;
>> +        return;
>> +    }
>
> Minor nit, the format of the following needs to include braces.
>
>> +    if (!vres->res.dmabuf_fd && info.fd)
>> +        vres->res.dmabuf_fd =3D info.fd;
>
> However I'm seeing:
>
>   cc -m64 -mcx16 -Ilibcommon.fa.p -I../../common-user/host/x86_64 -I../..=
/linux-user/include/host/x86_64 -I../../linux-user/include -Iui -I../../ui =
-I/usr/include/capstone -I/usr/include/p11-kit-1 -I/usr/include/pixman-1 -I=
/usr/include/libpng16 -I/usr/include/spice-server -I/usr/include/spice-1 -I=
/usr/include/libusb-1.0 -I/usr/include/SDL2 -I/usr/include/glib-2.0 -I/usr/=
lib/x86_64-linux-gnu/glib-2.0/include -I/usr/include/libmount -I/usr/includ=
e/blkid -I/usr/include/gio-unix-2.0 -I/usr/include/slirp -I/usr/include/gtk=
-3.0 -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/freety=
pe2 -I/usr/include/fribidi -I/usr/include/cairo -I/usr/include/gdk-pixbuf-2=
.0 -I/usr/include/x86_64-linux-gnu -I/usr/include/atk-1.0 -I/usr/include/at=
-spi2-atk/2.0 -I/usr/include/at-spi-2.0 -I/usr/include/dbus-1.0 -I/usr/lib/=
x86_64-linux-gnu/dbus-1.0/include -I/usr/include/vte-2.91 -I/usr/include/vi=
rgl -I/home/alex/lsrc/qemu.git/builds/extra.libs/install/include -I/usr/inc=
lude/cacard -I/usr/include/nss -I/usr/include/nspr -I/usr/include/PCSC -I/u=
sr/include/pipewire-0.3 -I/usr/include/spa-0.2 -fdiagnostics-color=3Dauto -=
Wall -Winvalid-pch -Werror -std=3Dgnu11 -O2 -g -fstack-protector-strong -Wu=
ndef -Wwrite-strings -Wmissing-prototypes -Wstrict-prototypes -Wredundant-d=
ecls -Wold-style-declaration -Wold-style-definition -Wtype-limits -Wformat-=
security -Wformat-y2k -Winit-self -Wignored-qualifiers -Wempty-body -Wneste=
d-externs -Wendif-labels -Wexpansion-to-defined -Wimplicit-fallthrough=3D2 =
-Wmissing-format-attribute -Wno-missing-include-dirs -Wno-shift-negative-va=
lue -Wno-psabi -Wshadow=3Dlocal -isystem /home/alex/lsrc/qemu.git/linux-hea=
ders -isystem linux-headers -iquote . -iquote /home/alex/lsrc/qemu.git -iqu=
ote /home/alex/lsrc/qemu.git/include -iquote /home/alex/lsrc/qemu.git/host/=
include/x86_64 -iquote /home/alex/lsrc/qemu.git/host/include/generic -iquot=
e /home/alex/lsrc/qemu.git/tcg/i386 -pthread -D_GNU_SOURCE -D_FILE_OFFSET_B=
ITS=3D64 -D_LARGEFILE_SOURCE -fno-strict-aliasing -fno-common -fwrapv -fPIE=
 -D_DEFAULT_SOURCE -D_XOPEN_SOURCE=3D600 -DNCURSES_WIDECHAR=3D1 -D_REENTRAN=
T -DSTRUCT_IOVEC_DEFINED -MD -MQ libcommon.fa.p/hw_display_virtio-gpu-virgl=
.c.o -MF libcommon.fa.p/hw_display_virtio-gpu-virgl.c.o.d -o libcommon.fa.p=
/hw_display_virtio-gpu-virgl.c.o -c ../../hw/display/virtio-gpu-virgl.c
>   ../../hw/display/virtio-gpu-virgl.c: In function =E2=80=98virgl_cmd_set=
_scanout_blob=E2=80=99:
>   ../../hw/display/virtio-gpu-virgl.c:790:37: error: =E2=80=98struct virg=
l_renderer_resource_info=E2=80=99 has no member named =E2=80=98fd=E2=80=99
>     790 |     if (!vres->res.dmabuf_fd && info.fd)
>         |                                     ^
>   ../../hw/display/virtio-gpu-virgl.c:791:35: error: =E2=80=98struct virg=
l_renderer_resource_info=E2=80=99 has no member named =E2=80=98fd=E2=80=99
>     791 |         vres->res.dmabuf_fd =3D info.fd;
>         |                                   ^
>
> But searching my extra libs (for aemu/gfstream/rutabaga_ffi) I can see
> the bindings.rs but nothing generated a header:
>
>   $ ag -r "virgl_renderer_resource_info"=20
>   crosvm.git/rutabaga_gfx/src/generated/virgl_renderer_bindings.rs
>   33:pub const VIRGL_RENDERER_RESOURCE_INFO_EXT_VERSION: u32 =3D 0;
>   337:pub struct virgl_renderer_resource_info {
>   351:pub struct virgl_renderer_resource_info_ext {
>   353:    pub base: virgl_renderer_resource_info,
>   359:impl Default for virgl_renderer_resource_info_ext {
>   373:        info: *mut virgl_renderer_resource_info,
>   379:        info: *mut virgl_renderer_resource_info_ext,
>
> Which makes me think a) its picked up the older virgl headers and b) the
> crosvm/rutabaf_gfx install needs a fix.

Actually it was libvirglrenderer was too old (I got it the wrong way
round, the rust bindings come from libvirglrenderer). As we want to
build with older libvirglrenderers on older systems I think this needs a
tweak to meson.build, maybe something like:

    config_host_data.set('HAVE_VIRGL_RESOURCE_BLOB',
                         cc.has_function('virgl_renderer_resource_create_bl=
ob',
                                          prefix: '#include <virglrenderer.=
h>',
                                          dependencies: virgl)
                         and
                         cc.has_member('struct virgl_renderer_resource_info=
', 'fd',
                                       prefix: '#include <virglrenderer.h>',
                                       dependencies: virgl))

--=20
Alex Benn=C3=A9e
Virtualisation Tech Lead @ Linaro


From xen-devel-bounces@lists.xenproject.org Fri Jan 05 16:10:23 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 05 Jan 2024 16:10:23 +0000
Received: from list by lists.xenproject.org with outflank-mailman.662236.1032248 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLmm7-0002We-JE; Fri, 05 Jan 2024 16:10:23 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 662236.1032248; Fri, 05 Jan 2024 16:10:23 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLmm7-0002WX-Gd; Fri, 05 Jan 2024 16:10:23 +0000
Received: by outflank-mailman (input) for mailman id 662236;
 Fri, 05 Jan 2024 16:10:21 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=DU2f=IP=gmail.com=tamas.k.lengyel@srs-se1.protection.inumbo.net>)
 id 1rLmm5-0002WL-N2
 for xen-devel@lists.xenproject.org; Fri, 05 Jan 2024 16:10:21 +0000
Received: from mail-yw1-x1133.google.com (mail-yw1-x1133.google.com
 [2607:f8b0:4864:20::1133])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id eaeafa73-abe4-11ee-9b0f-b553b5be7939;
 Fri, 05 Jan 2024 17:10:18 +0100 (CET)
Received: by mail-yw1-x1133.google.com with SMTP id
 00721157ae682-5f0c0ca5ef1so17740557b3.2
 for <xen-devel@lists.xenproject.org>; Fri, 05 Jan 2024 08:10:18 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: eaeafa73-abe4-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1704471017; x=1705075817; darn=lists.xenproject.org;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:from:to:cc:subject:date
         :message-id:reply-to;
        bh=wIoh3KZ7V69xhJl51mNyC87qlkTU4QgvDupNxDwBSus=;
        b=lENNTULXVMLtjhK4YOr45XhqQrzuEfJbC2wDZBORqGZTF2K5FVMnEcXJAMXgjwpBXW
         RKG3yd9eRHLmOb9ss74fHUZYyKkGXYg9SydCaevvig6gyeCh5cSguphA0wy2tDU90RkO
         a3ftbvLZhGz4w/CPV9AYLYqzGh7CSM8T9V2FVSnKdpLN/jMDd5BAGW/IuI3uxY2YJXWr
         DVq6qYbyGxbbtXjnC3STFHKkDWCsNKh5nAJIYyf/Id2jUd7IbDdDHxSJspD7D9bIHpQx
         1zRqtJ3u5LIM0gFa6VqqqQVztYQQkcGUF/YJdu8ZIYu2GkFPN8p7NEjrifZE8AQVHvQv
         PJ8Q==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704471017; x=1705075817;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to;
        bh=wIoh3KZ7V69xhJl51mNyC87qlkTU4QgvDupNxDwBSus=;
        b=JrYyLnA2HvfczlvrgM6qJKJyeHqzcQTFQpZo9B0tidYsmnMNBBCzYw4JRbvIvNPcUs
         1JWc65Z47ZLGJIoaEIxqar/jaY+3VkBFmennYYxQAti5Vqz9K9MXN14LKSbApk92sUHz
         YYzU+sTcVdYCL6C54el4xJDxUetsPGtXJfWDjxoGFzHtK1ZKUE16oBOKbKVqZllSGMu5
         MCGEFjOZA5jbilCaZSj81GM9h+JABftgpGSufFPa8GnSBFmZnir91JMcsCI/L/SCu7DM
         CiHRm3NOQKXS4dE98pd5UAX8h+I35f7rweqzNo7tx+/3w6R0veuTP6PoAQZ4dtGI9WFQ
         dIQw==
X-Gm-Message-State: AOJu0YyQB2Yyi2FK6q7kP5UU9xE1AskPCCYZBt9UqKA6KFXNLLF5Y7bH
	m372AZ4ikMdmARzynCSNMdyw5BPomVQKbiAJpp1X8/t7
X-Google-Smtp-Source: AGHT+IFNBhU4uqo0OOaKREkUnfSgTpSdWPjDW3WVKrYC6I1Ac628ywpPkGtLy3Ubn8Fr3ZSEkB3wNjwdRsQ+xthGHPQ=
X-Received: by 2002:a0d:c306:0:b0:5eb:1ec0:9c50 with SMTP id
 f6-20020a0dc306000000b005eb1ec09c50mr2135521ywd.43.1704471017185; Fri, 05 Jan
 2024 08:10:17 -0800 (PST)
MIME-Version: 1.0
References: <f0ac3890b5e2e1e98bfd3fe5fffcf3c3c031e12c.1704388276.git.tamas.lengyel@intel.com>
 <ba53053f-a2c6-4e4f-a805-4d60970bae39@suse.com>
In-Reply-To: <ba53053f-a2c6-4e4f-a805-4d60970bae39@suse.com>
From: Tamas K Lengyel <tamas.k.lengyel@gmail.com>
Date: Fri, 5 Jan 2024 11:09:42 -0500
Message-ID: <CABfawhmovqKjTSRbjgSqhY7kDhANyHrXFHYyPTGhsrnT1cdtBQ@mail.gmail.com>
Subject: Re: [PATCH] x86/mwait-idle: fix ubsan warning
To: Jan Beulich <jbeulich@suse.com>
Cc: Tamas K Lengyel <tamas.lengyel@intel.com>, Andrew Cooper <andrew.cooper3@citrix.com>, 
	xen-devel@lists.xenproject.org, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>, 
	Wei Liu <wl@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

On Fri, Jan 5, 2024 at 2:34=E2=80=AFAM Jan Beulich <jbeulich@suse.com> wrot=
e:
>
> On 04.01.2024 18:13, Tamas K Lengyel wrote:
> > Fix warning:
> > (XEN) UBSAN: Undefined behaviour in arch/x86/cpu/mwait-idle.c:1300:44
> > (XEN) left shift of 15 by 28 places cannot be represented in type 'int'
> >
> > Signed-off-by: Tamas K Lengyel <tamas.lengyel@intel.com>
> > Fixes: 5a211704e88 ("mwait-idle: prevent SKL-H boot failure when C8+C9+=
C10 enabled")
>
> No matter that I appreciate the change, I think this wants fixing by a
> patch to the (Linux) original, which we'd then import (like we do for
> other changes, including the one referenced by the Fixes: tag).

Feel free to submit it to other projects if the same issue applies to
them. I only ran into this with Xen and can only test it with Xen.

Tamas


From xen-devel-bounces@lists.xenproject.org Fri Jan 05 16:18:28 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 05 Jan 2024 16:18:28 +0000
Received: from list by lists.xenproject.org with outflank-mailman.662242.1032259 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLmts-0004K5-CA; Fri, 05 Jan 2024 16:18:24 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 662242.1032259; Fri, 05 Jan 2024 16:18:24 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLmts-0004Jy-8z; Fri, 05 Jan 2024 16:18:24 +0000
Received: by outflank-mailman (input) for mailman id 662242;
 Fri, 05 Jan 2024 16:18:23 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=c7fs=IP=linaro.org=alex.bennee@srs-se1.protection.inumbo.net>)
 id 1rLmtr-0004Js-Nz
 for xen-devel@lists.xenproject.org; Fri, 05 Jan 2024 16:18:23 +0000
Received: from mail-wm1-x333.google.com (mail-wm1-x333.google.com
 [2a00:1450:4864:20::333])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 0b56173a-abe6-11ee-9b0f-b553b5be7939;
 Fri, 05 Jan 2024 17:18:21 +0100 (CET)
Received: by mail-wm1-x333.google.com with SMTP id
 5b1f17b1804b1-40d60c49ee7so17734805e9.0
 for <xen-devel@lists.xenproject.org>; Fri, 05 Jan 2024 08:18:21 -0800 (PST)
Received: from draig.lan ([85.9.250.243]) by smtp.gmail.com with ESMTPSA id
 l8-20020a05600c1d0800b0040d6e07a147sm2023004wms.23.2024.01.05.08.18.20
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Fri, 05 Jan 2024 08:18:20 -0800 (PST)
Received: from draig (localhost [IPv6:::1])
 by draig.lan (Postfix) with ESMTP id 805485F933;
 Fri,  5 Jan 2024 16:18:20 +0000 (GMT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 0b56173a-abe6-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=linaro.org; s=google; t=1704471501; x=1705076301; darn=lists.xenproject.org;
        h=content-transfer-encoding:mime-version:message-id:date:user-agent
         :references:in-reply-to:subject:cc:to:from:from:to:cc:subject:date
         :message-id:reply-to;
        bh=SEiADKruN8GjNvJIGFayWYZ3vy9JdtqPKB4YiY3EGLE=;
        b=jIuIwiwKhdRhGM/Nue/IDJImRDhvRnUhjt0QXgHV47nClpq13UyaicmnTR0KOCqyio
         zxbTjvJLwFbQfVj+NpeHEePSDXla5YLKG6kAybsQVrrMKpioXndoChZODLAFguNprvle
         dPFbNFZ4xkWJO4ptpGgeIX4Sf9Ict/fiFuNNYIXx4EfVWhO/3+U0AYQ3aNnSzqEOS4cu
         7J8W5ePhOojAunXFcEXpXfYJT1xvhvrFxmJAEI79jwvO7LW9xStASDtZd8f12DYmk6/D
         6wJiT2Di5jcA2mRPn0Wav0R0dkCPw72CyPZUYmQuTU/qn9Ox7izZMcCmFF/J0KTi35Pl
         cHZA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704471501; x=1705076301;
        h=content-transfer-encoding:mime-version:message-id:date:user-agent
         :references:in-reply-to:subject:cc:to:from:x-gm-message-state:from
         :to:cc:subject:date:message-id:reply-to;
        bh=SEiADKruN8GjNvJIGFayWYZ3vy9JdtqPKB4YiY3EGLE=;
        b=FATGk4XLfHX0HZUZyKLy5AAgjKLu4Uk1/bxE1fyEdYcZYFVlu92dc6TsSKmPs8CU7+
         oEOyO/lrUZsbqEwMKhT4ygun4BBqnIjYM/yA2AiNt3DsZ2z7aai3UXytKSO6M+mWL46W
         Uyko6/kll6sdthl6p4fixX1qYH+HyNe3hHvYNNuhH5J5ESGUbVr3aZFgc7e4z5fWWZeZ
         yN6hR/rNi66FvGORFEhArvhhs5lUYGF+3v7Rvp8EX54E7aX0aQCOFvauLn64ZHolwbsI
         4Bk0CeQftEIAGeB2I9yPV00Ds+tcmLPgAyPGgwvpC0cTNA5zRMZQIGf41jqKWB/moH/M
         dBow==
X-Gm-Message-State: AOJu0YymYszx4AC4OnvmZj8eprxXNh+RNvAq2xOICQhhvYZOp1I4LUvz
	HltHOpOwxRV5qOF0QTJPlL35SFzVEpS6Xg==
X-Google-Smtp-Source: AGHT+IFLOdfJJ812jifatfiC3IcTBBvRkTvL8BUTT061m8hZIOGYUty7xb39NvJ0LSVQxWL6yhDAWg==
X-Received: by 2002:a05:600c:1d95:b0:40e:3733:3a81 with SMTP id p21-20020a05600c1d9500b0040e37333a81mr655985wms.46.1704471501225;
        Fri, 05 Jan 2024 08:18:21 -0800 (PST)
From: =?utf-8?Q?Alex_Benn=C3=A9e?= <alex.bennee@linaro.org>
To: Huang Rui <ray.huang@amd.com>
Cc: Akihiko Odaki <akihiko.odaki@daynix.com>,  =?utf-8?Q?Marc-Andr=C3=A9?=
 Lureau
 <marcandre.lureau@gmail.com>,  Philippe =?utf-8?Q?Mathieu-Daud=C3=A9?=
 <philmd@linaro.org>,
  Gerd Hoffmann <kraxel@redhat.com>,  "Michael S . Tsirkin"
 <mst@redhat.com>,  "Stefano Stabellini" <sstabellini@kernel.org>,  Anthony
 PERARD <anthony.perard@citrix.com>,  Antonio Caggiano
 <quic_acaggian@quicinc.com>,  "Dr . David Alan Gilbert"
 <dgilbert@redhat.com>,  Robert Beckett <bob.beckett@collabora.com>,
  Dmitry Osipenko <dmitry.osipenko@collabora.com>,  Gert Wollny
 <gert.wollny@collabora.com>,  <qemu-devel@nongnu.org>,
  <xen-devel@lists.xenproject.org>,  Gurchetan Singh
 <gurchetansingh@chromium.org>,  <ernunes@redhat.com>,  Alyssa Ross
 <hi@alyssa.is>,  Roger Pau =?utf-8?Q?Monn=C3=A9?= <roger.pau@citrix.com>,
  Alex Deucher
 <alexander.deucher@amd.com>,  Stefano Stabellini
 <stefano.stabellini@amd.com>,  Christian =?utf-8?Q?K=C3=B6nig?=
 <christian.koenig@amd.com>,
  Xenia Ragiadakou <xenia.ragiadakou@amd.com>,  Pierre-Eric Pelloux-Prayer
 <pierre-eric.pelloux-prayer@amd.com>,  "Honglei Huang"
 <honglei1.huang@amd.com>,  Julia Zhang <julia.zhang@amd.com>,  "Chen
 Jiqian" <Jiqian.Chen@amd.com>,  Antonio Caggiano
 <antonio.caggiano@collabora.com>
Subject: Re: [PATCH v6 02/11] virtio-gpu: Configure new feature flag
 context_create_with_flags for virglrenderer
In-Reply-To: <20231219075320.165227-3-ray.huang@amd.com> (Huang Rui's message
	of "Tue, 19 Dec 2023 15:53:11 +0800")
References: <20231219075320.165227-1-ray.huang@amd.com>
	<20231219075320.165227-3-ray.huang@amd.com>
User-Agent: mu4e 1.11.27; emacs 29.1
Date: Fri, 05 Jan 2024 16:18:20 +0000
Message-ID: <8734vbg3eb.fsf@draig.linaro.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable

Huang Rui <ray.huang@amd.com> writes:

> Configure a new feature flag (context_create_with_flags) for
> virglrenderer.
>
> Originally-by: Antonio Caggiano <antonio.caggiano@collabora.com>
> Signed-off-by: Huang Rui <ray.huang@amd.com>

Reviewed-by: Alex Benn=C3=A9e <alex.bennee@linaro.org>

--=20
Alex Benn=C3=A9e
Virtualisation Tech Lead @ Linaro


From xen-devel-bounces@lists.xenproject.org Fri Jan 05 16:20:01 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 05 Jan 2024 16:20:01 +0000
Received: from list by lists.xenproject.org with outflank-mailman.662245.1032269 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLmvP-000514-MW; Fri, 05 Jan 2024 16:19:59 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 662245.1032269; Fri, 05 Jan 2024 16:19:59 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLmvP-00050x-Je; Fri, 05 Jan 2024 16:19:59 +0000
Received: by outflank-mailman (input) for mailman id 662245;
 Fri, 05 Jan 2024 16:19:58 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=7et4=IP=bugseng.com=federico.serafini@srs-se1.protection.inumbo.net>)
 id 1rLmvO-00050r-Je
 for xen-devel@lists.xenproject.org; Fri, 05 Jan 2024 16:19:58 +0000
Received: from support.bugseng.com (mail.bugseng.com [162.55.131.47])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 4447f4e5-abe6-11ee-98ef-6d05b1d4d9a1;
 Fri, 05 Jan 2024 17:19:57 +0100 (CET)
Received: from [192.168.1.15] (host-79-44-205-232.retail.telecomitalia.it
 [79.44.205.232])
 by support.bugseng.com (Postfix) with ESMTPSA id 877FE4EE073F;
 Fri,  5 Jan 2024 17:19:56 +0100 (CET)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 4447f4e5-abe6-11ee-98ef-6d05b1d4d9a1
Message-ID: <6a39fe3e-524f-4e39-81bc-ffb3d48ba306@bugseng.com>
Date: Fri, 5 Jan 2024 17:19:55 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [XEN RFC] x86/uaccess: remove __{put,get}_user_bad()
To: Jan Beulich <jbeulich@suse.com>,
 Nicola Vetrini <nicola.vetrini@bugseng.com>,
 Andrew Cooper <andrew.cooper3@citrix.com>
Cc: consulting@bugseng.com, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger.pau@citrix.com>, Wei Liu <wl@xen.org>,
 xen-devel@lists.xenproject.org, Stefano Stabellini <sstabellini@kernel.org>
References: <9cf852da1c03b614bf5010132c58a18adc2a4161.1703155225.git.federico.serafini@bugseng.com>
 <a2050ac1-e205-4d7f-b9b1-aa625136e63a@suse.com>
 <0c5bbfde-4cf0-4878-b1ee-ccc8eb775464@citrix.com>
 <eb53449bd6595ea0931460e62dd57b9c@bugseng.com>
 <1330c757-1ca3-4b07-898b-799cbfa67e8a@suse.com>
Content-Language: en-US, it
From: Federico Serafini <federico.serafini@bugseng.com>
Organization: BUGSENG srl
In-Reply-To: <1330c757-1ca3-4b07-898b-799cbfa67e8a@suse.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit

Hello everyone,

On 21/12/23 13:41, Jan Beulich wrote:
> On 21.12.2023 13:01, Nicola Vetrini wrote:
>> Hi Andrew,
>>
>> On 2023-12-21 12:03, Andrew Cooper wrote:
>>> On 21/12/2023 10:58 am, Jan Beulich wrote:
>>>> On 21.12.2023 11:53, Federico Serafini wrote:
>>>>> Remove declarations of __put_user_bad() and __get_user_bad()
>>>>> since they have no definition.
>>>>> Replace their uses with a break statement to address violations of
>>>>> MISRA C:2012 Rule 16.3 ("An unconditional `break' statement shall
>>>>> terminate every switch-clause").
>>>>> No functional change.
>>>>>
>>>>> Signed-off-by: Federico Serafini <federico.serafini@bugseng.com>
>>>>> ---
>>>>> Several violations of Rule 16.3 come from uses of macros
>>>>> get_unsafe_size() and put_unsafe_size().
>>>>> Looking at the macro definitions I found __get_user_bad() and
>>>>> __put_user_bad().
>>>>> I was wondering if instead of just adding the break statement I can
>>>>> also remove
>>>>> such functions which seem to not have a definition.
>>>> No, you can't. Try introducing a caller which "accidentally" uses the
>>>> wrong size. Without your change you'll observe the build failing (in
>>>> a somewhat obscure way, but still), while with your change bad code
>>>> will silently be generated.
>>>
>>> The construct here is deliberate.  It's a build time assertion that bad
>>> sizes aren't used.
>>>
>>> __bitop_bad_size() and __xsm_action_mismatch_detected() are the same
>>> pattern in other areas of code too, with the latter being more explicit
>>> because of how it's wrapped by LINKER_BUG_ON().
>>>
>>>
>>> It is slightly horrible, and not the most obvious construct for
>>> newcomers.  If there's an alternative way to get a build assertion, we
>>> could consider switching to a new pattern.
>>
>> would you be in favour of a solution with a BUILD_BUG_ON in the default
>> branch followed by a break?
>>
>> default:
>>       BUILD_BUG_ON(!size || size >=8 || (size & (size - 1)));
>>       break;
> 
> I don't think this would compile - BUILD_BUG_ON() wants a compile-time
> constant passed.

What do you think about adding the following macro to compiler.h:

#define static_assert_unreachable(identifier) \
     asm("unreachable " #identifier " reached")

It expands to an invalid assembly instruction that will lead to a
customizable error message generated by the assembler instead of the
linker (anticipating the error detection).

The use of this macro will indicate a program point considered
unreachable (and as such removed) by the static analysis performed by 
the compiler, even at an optimization level -O0.

An example of use is in the default case of put_unsafe_size():

default: static_assert_unreachable(default);

In case a wrong size will be used, the following message will be
generated:

./arch/x86/include/asm/uaccess.h: Assembler messages:
./arch/x86/include/asm/uaccess.h:257: Error: no such instruction: 
`unreachable default reached'


Note that adopting the macro and discussing its definition are two
separate things:
I think we can all agree on the fact that the use of such macro improves
readability, so I would suggest its adoption.
Whereas for its definition, if you don't like the invalid asm
instruction, we could discuss for a different solution, for example,
the following is something similar to what you are doing now:

#define static_assert_unreachable(identifier) \
     extern void identifier(void);             \
     identifier()


Note also that the problem of the missing break statement (that violates
Rule 16.3) is still present, it could be addressed by adding the break
or deviating for such special cases, do you have any preferences?

-- 
Federico Serafini, M.Sc.

Software Engineer, BUGSENG (http://bugseng.com)


From xen-devel-bounces@lists.xenproject.org Fri Jan 05 16:21:11 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 05 Jan 2024 16:21:11 +0000
Received: from list by lists.xenproject.org with outflank-mailman.662249.1032279 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLmwX-0006nV-W7; Fri, 05 Jan 2024 16:21:09 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 662249.1032279; Fri, 05 Jan 2024 16:21:09 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLmwX-0006nO-Sp; Fri, 05 Jan 2024 16:21:09 +0000
Received: by outflank-mailman (input) for mailman id 662249;
 Fri, 05 Jan 2024 16:21:09 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rLmwX-0006nE-AL; Fri, 05 Jan 2024 16:21:09 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rLmwW-0001fB-VL; Fri, 05 Jan 2024 16:21:08 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rLmwW-0005ZD-E3; Fri, 05 Jan 2024 16:21:08 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rLmwW-00063g-DZ; Fri, 05 Jan 2024 16:21:08 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=E4WafRWy26Xg375flTYyfJ2STDs0Ls+KFM3N7dtwT98=; b=gNT76xK1AwAawKWTTwKinsezbm
	tKoVAMQnZ7NsJWwTcbsenEz4q65cwZbZS6pFHmlzNxtsmrhbQsoYnzMhjkRGg8ZJlbK0rsp/s7lP+
	UjBfqBxeH8wiyKKLTTsdF77y2QtCBkF3Q5K+jv/0ijY4LJHHQA/Do7NDkADvNATVn0Ew=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184256-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [linux-linus test] 184256: tolerable FAIL - PUSHED
X-Osstest-Failures:
    linux-linus:test-amd64-amd64-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    linux-linus:test-amd64-amd64-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    linux-linus:test-amd64-amd64-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-raw:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-qcow2:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-qemuu-nested-amd:debian-hvm-install/l1/l2:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-xsm:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-credit1:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-thunderx:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-credit1:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-thunderx:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-xsm:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-credit2:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-xsm:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-credit2:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-libvirt-xsm:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-libvirt-xsm:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-multivcpu:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-multivcpu:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-qcow2:migrate-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit1:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit1:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-arndale:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-arndale:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-rtds:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-rtds:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-libvirt-raw:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-vhd:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-vhd:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-vhd:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-vhd:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit2:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit2:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-qcow2:migrate-support-check:fail:nonblocking
X-Osstest-Versions-This:
    linux=1f874787ed9a2d78ed59cb21d0d90ac0178eceb0
X-Osstest-Versions-That:
    linux=5eff55d725a4e0dc6fc7709c4b1ca4fe40588d07
From: osstest service owner <osstest-admin@xenproject.org>
Date: Fri, 05 Jan 2024 16:21:08 +0000

flight 184256 linux-linus real [real]
http://logs.test-lab.xenproject.org/osstest/logs/184256/

Failures :-/ but no regressions.

Tests which did not succeed, but are not blocking:
 test-amd64-amd64-xl-qemut-win7-amd64 19 guest-stop            fail like 184252
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 184252
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 184252
 test-armhf-armhf-libvirt-raw 15 saverestore-support-check    fail  like 184252
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 184252
 test-amd64-amd64-xl-qemut-ws16-amd64 19 guest-stop            fail like 184252
 test-armhf-armhf-libvirt-qcow2 15 saverestore-support-check   fail like 184252
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 184252
 test-amd64-amd64-libvirt     15 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl          15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl          16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-credit1  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-thunderx 15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit1  16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-thunderx 16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-xsm      15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit2  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-xsm      16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-credit2  16 saverestore-support-check    fail   never pass
 test-arm64-arm64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-xsm 16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-multivcpu 15 migrate-support-check        fail  never pass
 test-armhf-armhf-xl-multivcpu 16 saverestore-support-check    fail  never pass
 test-amd64-amd64-libvirt-qcow2 14 migrate-support-check        fail never pass
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-armhf-armhf-xl-credit1  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit1  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-arndale  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-arndale  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-rtds     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-rtds     16 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-raw 14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 15 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-vhd      14 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-vhd      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-raw 14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-credit2  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit2  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-qcow2 14 migrate-support-check        fail never pass

version targeted for testing:
 linux                1f874787ed9a2d78ed59cb21d0d90ac0178eceb0
baseline version:
 linux                5eff55d725a4e0dc6fc7709c4b1ca4fe40588d07

Last test of basis   184252  2024-01-04 19:43:56 Z    0 days
Testing same since   184256  2024-01-05 04:22:32 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Aaron Conole <aconole@redhat.com>
  Adrian Cinal <adriancinal1@gmail.com>
  Adrian Cinal <adriancinal@gmail.com>
  Aleksandr Loktionov <aleksandr.loktionov@intel.com>
  Alex Henrie <alexhenrie24@gmail.com>
  Alexander Lobakin <aleksander.lobakin@intel.com>
  Andrii Staikov <andrii.staikov@intel.com>
  Arkadiusz Kubalewski <arkadiusz.kubalewski@intel.com>
  Bagas Sanjaya <bagasdotme@gmail.com>
  Benjamin Berg <benjamin.berg@intel.com>
  Benjamin Poirier <benjamin.poirier@gmail.com>
  Bharathi Sreenivas <bharathi.sreenivas@intel.com>
  Brad Cowie <brad@faucet.nz>
  Chen Ni <nichen@iscas.ac.cn>
  Claudiu Beznea <claudiu.beznea.uj@bp.renesas.com>
  David S. Miller <davem@davemloft.net>
  David Thompson <davthompson@nvidia.com>
  Ding Hui <dinghui@sangfor.com.cn>
  Dinghao Liu <dinghao.liu@zju.edu.cn>
  Dmitry Safonov <dima@arista.com>
  Doug Berger <opendmb@gmail.com>
  Florian Fainelli <florian.fainelli@broadcom.com>
  Geliang Tang <geliang.tang@linux.dev>
  Hangbin Liu <liuhangbin@gmail.com>
  Hangyu Hua <hbh25y@gmail.com>
  Jakub Kicinski <kuba@kernel.org>
  Jamal Hadi Salim <jhs@mojatatu.com>
  Johannes Berg <johannes.berg@intel.com>
  Jörn-Thorben Hinz <jthinz@mailbox.tu-berlin.de>
  Kai-Heng Feng <kai.heng.feng@canonical.com>
  Kalle Valo <kvalo@kernel.org>
  Karen Ostrowska <karen.ostrowska@intel.com>
  Katarzyna Wieczerzycka <katarzyna.wieczerzycka@intel.com>
  Ke Xiao <xiaoke@sangfor.com.cn>
  Kurt Kanzenbach <kurt@linutronix.de>
  Linus Torvalds <torvalds@linux-foundation.org>
  Lukas Bulwahn <lukas.bulwahn@gmail.com>
  Marc Dionne <marc.dionne@auristor.com>
  Marcin Wojtas <marcin.s.wojtas@gmail.com>
  Mat Martineau <martineau@kernel.org>
  Mateusz Palczewski <mateusz.palczewski@intel.com>
  Matthieu Baerts <matttbe@kernel.org>
  Michael Chan <michael.chan@broadcom.com>
  Michael S. Tsirkin <mst@redhat.com>
  Miri Korenblit <miriam.rachel.korenblit@intel.com>
  Naama Meir <naamax.meir@linux.intel.com>
  Naveen Mamindlapalli <naveenm@marvell.com>
  Ngai-Mint Kwan <ngai-mint.kwan@intel.com>
  Nithin Kumar Dabilpuram <ndabilpuram@marvell.com>
  Noah Goldstein <goldstein.w.n@gmail.com>
  Pablo Neira Ayuso <pablo@netfilter.org>
  Paolo Abeni <pabeni@redhat.com>
  Paul Greenwalt <paul.greenwalt@intel.com>
  Pavan Kumar Linga <pavan.kumar.linga@intel.com>
  Pucha Himasekhar Reddy <himasekharx.reddy.pucha@intel.com> (A Contingent worker at Intel)
  Radu Pirea (NXP OSS) <radu-nicolae.pirea@oss.nxp.com>
  Rafal Romanowski <rafal.romanowski@intel.com>
  Randy Dunlap <rdunlap@infradead.org>
  Rodrigo Cataldo <rodrigo.cadore@l-acoustics.com>
  Sagi Maimon <maimon.sagi@gmail.com>
  Sarannya S <quic_sarannya@quicinc.com>
  Sarannya Sasikumar <quic_sarannya@quicinc.com>
  Scott Register <scott.register@intel.com>
  Siddh Raman Pant <code@siddh.me>
  Sudheer Mogilappagari <sudheer.mogilappagari@intel.com>
  Suman Ghosh <sumang@marvell.com>
  Sunil Kovvuri Goutham <sgoutham@marvell.com>
  Thomas Lange <thomas@corelatus.se>
  Tony Nguyen <anthony.l.nguyen@intel.com>
  Vinicius Costa Gomes <vinicius.gomes@intel.com>
  wangkeqi <wangkeqiwang@didiglobal.com>
  Wen Gu <guwen@linux.alibaba.com>
  Wojciech Drewek <wojciech.drewek@intel.com>
  Xin Long <lucien.xin@gmail.com>
  Xuan Zhuo <xuanzhuo@linux.alibaba.com>
  Zhipeng Lu <alexious@zju.edu.cn>

jobs:
 build-amd64-xsm                                              pass    
 build-arm64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64                                                  pass    
 build-arm64                                                  pass    
 build-armhf                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-arm64-libvirt                                          pass    
 build-armhf-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-pvops                                            pass    
 build-arm64-pvops                                            pass    
 build-armhf-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-amd64-amd64-xl                                          pass    
 test-amd64-coresched-amd64-xl                                pass    
 test-arm64-arm64-xl                                          pass    
 test-armhf-armhf-xl                                          pass    
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm           pass    
 test-amd64-amd64-xl-qemut-stubdom-debianhvm-amd64-xsm        pass    
 test-amd64-amd64-xl-qemut-debianhvm-i386-xsm                 pass    
 test-amd64-amd64-xl-qemuu-debianhvm-i386-xsm                 pass    
 test-amd64-amd64-libvirt-xsm                                 pass    
 test-arm64-arm64-libvirt-xsm                                 pass    
 test-amd64-amd64-xl-xsm                                      pass    
 test-arm64-arm64-xl-xsm                                      pass    
 test-amd64-amd64-qemuu-nested-amd                            fail    
 test-amd64-amd64-xl-pvhv2-amd                                pass    
 test-amd64-amd64-dom0pvh-xl-amd                              pass    
 test-amd64-amd64-xl-qemut-debianhvm-amd64                    pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64                    pass    
 test-amd64-amd64-freebsd11-amd64                             pass    
 test-amd64-amd64-freebsd12-amd64                             pass    
 test-amd64-amd64-xl-qemuu-ovmf-amd64                         pass    
 test-amd64-amd64-xl-qemut-win7-amd64                         fail    
 test-amd64-amd64-xl-qemuu-win7-amd64                         fail    
 test-amd64-amd64-xl-qemut-ws16-amd64                         fail    
 test-amd64-amd64-xl-qemuu-ws16-amd64                         fail    
 test-armhf-armhf-xl-arndale                                  pass    
 test-amd64-amd64-examine-bios                                pass    
 test-amd64-amd64-xl-credit1                                  pass    
 test-arm64-arm64-xl-credit1                                  pass    
 test-armhf-armhf-xl-credit1                                  pass    
 test-amd64-amd64-xl-credit2                                  pass    
 test-arm64-arm64-xl-credit2                                  pass    
 test-armhf-armhf-xl-credit2                                  pass    
 test-amd64-amd64-xl-qemuu-dmrestrict-amd64-dmrestrict        pass    
 test-amd64-amd64-examine                                     pass    
 test-arm64-arm64-examine                                     pass    
 test-armhf-armhf-examine                                     pass    
 test-amd64-amd64-qemuu-nested-intel                          pass    
 test-amd64-amd64-xl-pvhv2-intel                              pass    
 test-amd64-amd64-dom0pvh-xl-intel                            pass    
 test-amd64-amd64-libvirt                                     pass    
 test-armhf-armhf-libvirt                                     pass    
 test-amd64-amd64-xl-multivcpu                                pass    
 test-armhf-armhf-xl-multivcpu                                pass    
 test-amd64-amd64-pair                                        pass    
 test-amd64-amd64-libvirt-pair                                pass    
 test-amd64-amd64-xl-pvshim                                   pass    
 test-amd64-amd64-pygrub                                      pass    
 test-amd64-amd64-libvirt-qcow2                               pass    
 test-armhf-armhf-libvirt-qcow2                               pass    
 test-amd64-amd64-libvirt-raw                                 pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-armhf-armhf-libvirt-raw                                 pass    
 test-amd64-amd64-xl-rtds                                     pass    
 test-armhf-armhf-xl-rtds                                     pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64-shadow             pass    
 test-amd64-amd64-xl-shadow                                   pass    
 test-arm64-arm64-xl-thunderx                                 pass    
 test-amd64-amd64-examine-uefi                                pass    
 test-amd64-amd64-xl-vhd                                      pass    
 test-arm64-arm64-xl-vhd                                      pass    
 test-armhf-armhf-xl-vhd                                      pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Pushing revision :

hint: The 'hooks/update' hook was ignored because it's not set as executable.
hint: You can disable this warning with `git config advice.ignoredHook false`.
hint: The 'hooks/post-receive' hook was ignored because it's not set as executable.
hint: You can disable this warning with `git config advice.ignoredHook false`.
hint: The 'hooks/post-update' hook was ignored because it's not set as executable.
hint: You can disable this warning with `git config advice.ignoredHook false`.
To xenbits.xen.org:/home/xen/git/linux-pvops.git
   5eff55d725a4..1f874787ed9a  1f874787ed9a2d78ed59cb21d0d90ac0178eceb0 -> tested/linux-linus


From xen-devel-bounces@lists.xenproject.org Fri Jan 05 16:33:13 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 05 Jan 2024 16:33:13 +0000
Received: from list by lists.xenproject.org with outflank-mailman.662259.1032288 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLn88-0001Eb-4I; Fri, 05 Jan 2024 16:33:08 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 662259.1032288; Fri, 05 Jan 2024 16:33:08 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLn88-0001EU-1p; Fri, 05 Jan 2024 16:33:08 +0000
Received: by outflank-mailman (input) for mailman id 662259;
 Fri, 05 Jan 2024 16:33:07 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=8Ewp=IP=minervasys.tech=carlo.nonato@srs-se1.protection.inumbo.net>)
 id 1rLn87-0001EO-8e
 for xen-devel@lists.xenproject.org; Fri, 05 Jan 2024 16:33:07 +0000
Received: from mail-lf1-x12c.google.com (mail-lf1-x12c.google.com
 [2a00:1450:4864:20::12c])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 1a22ef14-abe8-11ee-98ef-6d05b1d4d9a1;
 Fri, 05 Jan 2024 17:33:05 +0100 (CET)
Received: by mail-lf1-x12c.google.com with SMTP id
 2adb3069b0e04-50eabfac2b7so1894213e87.0
 for <xen-devel@lists.xenproject.org>; Fri, 05 Jan 2024 08:33:05 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 1a22ef14-abe8-11ee-98ef-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=minervasys-tech.20230601.gappssmtp.com; s=20230601; t=1704472385; x=1705077185; darn=lists.xenproject.org;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:from:to:cc:subject:date
         :message-id:reply-to;
        bh=zneEtLu/ULoQnKCpHeMm44R6ycA7kpLHQd0iHcGdc8w=;
        b=xeK48usPnDGTKg5NS9RUj7lIP+nemcyNmE9Gx2WBLCxiz02OrUnskJNXUpP11Iu79b
         Trm88O5OF2FcHsbNK4NE0i/imXlozlNAuVu1sa0u8Ug8OxTQIhZNttOw0u4MFjOqtyzu
         FWEMz8uSI4T04vwOZEeHqUvTqYPVPWCDLYHdTItY9Jd/qnEZa84oS6HUCrQzYkuXXQtQ
         yTIQ9BScwn5JLFuWkrkfA5hamnENcWos30C70WNH0LSJ+KxCvmrZbkkgBiczKrsF915u
         i/K9z0+PnaJjZnubVnVNj0NMiitxw7tIWdrHsIanoB26UdCV9vD9pZ8mX1ZNDAo4CBcK
         Q2QA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704472385; x=1705077185;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to;
        bh=zneEtLu/ULoQnKCpHeMm44R6ycA7kpLHQd0iHcGdc8w=;
        b=nXuBF2StFvkyiLmOZpWJOIqEBID/dFrheWm0IHbj6lSi7LBJwmStMHT86TnwaWSxYM
         00cSGvVf3GGCtZlgj3SMzSuZjNvCRoNQ0lvKqRmsBMWPYGTJGeQ0PxKnBGFpUWyTqfNZ
         4+0plFC4KpIDoRKokTTOMyK4BSClG/nzsdioazUZ3sCCwgp9lwRrFfntJakjZ7xjS6dv
         O93sacKucpLIcv7EXNUhPlbA1mkbqR7u+LdsNo48PbCaNe2gu+Y4xUdGbLl0/37ODilN
         tQGZt+PKH1/7KXrZVpEPDtzMo3BSw+r50SoA0q6xQfqRTfaQl1l6bJFizBfr4fZmmK5X
         0jGg==
X-Gm-Message-State: AOJu0YyTVvhfPqNQyUGMI+GIPtMDlO7gSZ83knD+QDc4y5tgA/oyBjKH
	8R39SommPn7/ivV4LimbyAq05lzfUxKGoC/ZEc0xHCqsiJnH8A==
X-Google-Smtp-Source: AGHT+IF5/2YdEy21H8GgiuQkf+VuVQg817g8BVnz5Q2+eckN65ddAk9xXp0dpu1Yf0RPVcbj8FkzGpzINdS1azZOKzA=
X-Received: by 2002:ac2:5dc7:0:b0:50e:af1a:1dcf with SMTP id
 x7-20020ac25dc7000000b0050eaf1a1dcfmr1059852lfq.87.1704472384958; Fri, 05 Jan
 2024 08:33:04 -0800 (PST)
MIME-Version: 1.0
References: <20240102095138.17933-1-carlo.nonato@minervasys.tech>
 <20240102095138.17933-2-carlo.nonato@minervasys.tech> <1ac0e50d-0551-4abb-a929-03d5b0be25c1@xen.org>
 <alpine.DEB.2.22.394.2401041343100.1322202@ubuntu-linux-20-04-desktop>
In-Reply-To: <alpine.DEB.2.22.394.2401041343100.1322202@ubuntu-linux-20-04-desktop>
From: Carlo Nonato <carlo.nonato@minervasys.tech>
Date: Fri, 5 Jan 2024 17:32:53 +0100
Message-ID: <CAG+AhRVJ7jnTzdaPMqJxOjsRMhLCN8OinRQYC=6-DYYc32vEpw@mail.gmail.com>
Subject: Re: [PATCH v5 01/13] xen/common: add cache coloring common code
To: Stefano Stabellini <sstabellini@kernel.org>
Cc: Julien Grall <julien@xen.org>, xen-devel@lists.xenproject.org, 
	Andrew Cooper <andrew.cooper3@citrix.com>, George Dunlap <george.dunlap@citrix.com>, 
	Jan Beulich <jbeulich@suse.com>, Wei Liu <wl@xen.org>, 
	Marco Solieri <marco.solieri@minervasys.tech>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

Hi Stefano, Julien,

On Thu, Jan 4, 2024 at 10:43=E2=80=AFPM Stefano Stabellini
<sstabellini@kernel.org> wrote:
>
> On Thu, 4 Jan 2024, Julien Grall wrote:
> > Hi,
> >
> > On 02/01/2024 09:51, Carlo Nonato wrote:
> > > This commit adds the Last Level Cache (LLC) coloring common header, K=
config
> > > options and functions. Since this is an arch specific feature, actual
> > > implementation is postponed to later patches and Kconfig options are =
placed
> > > under xen/arch.
> > >
> > > LLC colors are a property of the domain, so the domain struct has to =
be
> > > extended.
> > >
> > > Based on original work from: Luca Miccio <lucmiccio@gmail.com>
> > >
> > > Signed-off-by: Carlo Nonato <carlo.nonato@minervasys.tech>
> > > Signed-off-by: Marco Solieri <marco.solieri@minervasys.tech>
> > > ---
> > > v5:
> > > - used - instead of _ for filenames
> > > - removed domain_create_llc_colored()
> > > - removed stub functions
> > > - coloring domain fields are now #ifdef protected
> > > v4:
> > > - Kconfig options moved to xen/arch
> > > - removed range for CONFIG_NR_LLC_COLORS
> > > - added "llc_coloring_enabled" global to later implement the boot-tim=
e
> > >    switch
> > > - added domain_create_llc_colored() to be able to pass colors
> > > - added is_domain_llc_colored() macro
> > > ---
> > >   xen/arch/Kconfig               | 16 ++++++++++++
> > >   xen/common/Kconfig             |  3 +++
> > >   xen/common/domain.c            |  4 +++
> > >   xen/common/keyhandler.c        |  4 +++
> > >   xen/include/xen/llc-coloring.h | 46 +++++++++++++++++++++++++++++++=
+++
> > >   xen/include/xen/sched.h        |  5 ++++
> > >   6 files changed, 78 insertions(+)
> > >   create mode 100644 xen/include/xen/llc-coloring.h
> > >
> > > diff --git a/xen/arch/Kconfig b/xen/arch/Kconfig
> > > index 67ba38f32f..aad7e9da38 100644
> > > --- a/xen/arch/Kconfig
> > > +++ b/xen/arch/Kconfig
> > > @@ -31,3 +31,19 @@ config NR_NUMA_NODES
> > >       associated with multiple-nodes management. It is the upper boun=
d of
> > >       the number of NUMA nodes that the scheduler, memory allocation =
and
> > >       other NUMA-aware components can handle.
> > > +
> > > +config LLC_COLORING
> > > +   bool "Last Level Cache (LLC) coloring" if EXPERT
> >
> > While look at the rest of the series, I noticed that SUPPORT.md is not
> > updated. Can this be done?
> >
> > I think the feature should be in experimental for now. We can decide to=
 switch
> > to tech preview before Xen 4.19 is out and the support is completed.
> >
> > Stefano, what do you think?
>
> That's reasonable

I would put it under "Resource management" features. Are you ok with it?

Thanks.


From xen-devel-bounces@lists.xenproject.org Fri Jan 05 16:34:40 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 05 Jan 2024 16:34:40 +0000
Received: from list by lists.xenproject.org with outflank-mailman.662262.1032299 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLn9a-00023Q-Gq; Fri, 05 Jan 2024 16:34:38 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 662262.1032299; Fri, 05 Jan 2024 16:34:38 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLn9a-00023J-Cz; Fri, 05 Jan 2024 16:34:38 +0000
Received: by outflank-mailman (input) for mailman id 662262;
 Fri, 05 Jan 2024 16:34:37 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=8Ewp=IP=minervasys.tech=carlo.nonato@srs-se1.protection.inumbo.net>)
 id 1rLn9Z-00023D-6z
 for xen-devel@lists.xenproject.org; Fri, 05 Jan 2024 16:34:37 +0000
Received: from mail-ed1-x52f.google.com (mail-ed1-x52f.google.com
 [2a00:1450:4864:20::52f])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 4f19bba0-abe8-11ee-9b0f-b553b5be7939;
 Fri, 05 Jan 2024 17:34:34 +0100 (CET)
Received: by mail-ed1-x52f.google.com with SMTP id
 4fb4d7f45d1cf-55590da560dso2063148a12.0
 for <xen-devel@lists.xenproject.org>; Fri, 05 Jan 2024 08:34:34 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 4f19bba0-abe8-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=minervasys-tech.20230601.gappssmtp.com; s=20230601; t=1704472474; x=1705077274; darn=lists.xenproject.org;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:from:to:cc:subject:date
         :message-id:reply-to;
        bh=d8kd6+sf4DWEw/vzbqh3Vxw/aTUg0tifj/myOQQrXK0=;
        b=y5WBUg0rE4p9+++zDx5A5ocaHyB94pm8nRJ0iv0Z0B0X2lyq/fv+n/+1z7aqTtpN8e
         0mjYqqAHFhkRDjL2Km/SnTF/2t0bOZGvDPDv9XM1bSzk0ap1grf4wPa8wNC+P2KiOjkL
         +Kj/eKbCvUs2yIfQb+7WLr7/KC1+fCzvfc2Wwc5No9BenHxOebXF4AGaJSF52PQUp2V0
         P2fFNetnJcWqXp8w6kWkEM+tR4Q5S3/u0EC2FF17LO7MoLQS6WClS8ksOU9WlN/Ssmsu
         wg5+AihAiNJPavSABx8LSnr22WIV2PHkGZUNAk1hI9Nw1OJ7CFzsUoczAbMANFu9B9ny
         EO1w==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704472474; x=1705077274;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to;
        bh=d8kd6+sf4DWEw/vzbqh3Vxw/aTUg0tifj/myOQQrXK0=;
        b=GoGsDmyJna28bLUf31pSOldoKz5SBocDaRH1xrxJ3n++EnzCCY5JuZECIBixJoRfFm
         NX0fT7HUgEJf6efxJuOuj53mAt3w3sFImqwWTMF7D5zfbxHgg9lgQ78OkEZ401yxcLUh
         x0AX+dIx6e4w05tjPoMNIP8FSO7aDTpUMQcXEsBS/TDq0J4X3J0RJDZJwkiurAzPsm6a
         dFnNkd1teeS4rGgNfJOKZF1rsM2CFiaPZrsjGb/6mai4Lb9vBGBONeOsuVG7NfETaLa4
         yffyeQoTHjxu8FbvMKvqbv1dasawb8jTEMzj55GPkshpLvH4tlK3haSvd6yMVYgy1aiW
         7Alg==
X-Gm-Message-State: AOJu0YyvOhmr7fpTzFmP46XJaQprKM+KoMDdzeNhUDl8JFiNadqm19pk
	JYv1A4A3TR0BImdEHWA1PqCXkSWkOfsZ9TcbfZkwdhq4l5fkvA==
X-Google-Smtp-Source: AGHT+IHT3dgc5MZKBSjw1/qJvBhhILlbNAvAOZx4DsDQpeMtLg4IR0eRuK4HEwu3dSSAZMwInNdfrllUVNcJezlw08Y=
X-Received: by 2002:a17:906:6d04:b0:a23:5c13:20ce with SMTP id
 m4-20020a1709066d0400b00a235c1320cemr1283635ejr.144.1704472473695; Fri, 05
 Jan 2024 08:34:33 -0800 (PST)
MIME-Version: 1.0
References: <20240102095138.17933-1-carlo.nonato@minervasys.tech>
 <20240102095138.17933-3-carlo.nonato@minervasys.tech> <5eb9fa24-c95e-4ea0-84ef-be74c629c106@xen.org>
In-Reply-To: <5eb9fa24-c95e-4ea0-84ef-be74c629c106@xen.org>
From: Carlo Nonato <carlo.nonato@minervasys.tech>
Date: Fri, 5 Jan 2024 17:34:22 +0100
Message-ID: <CAG+AhRW5Xxy7BHVhmfkBqbdeKqRz7E1Mrc7wNv6F+ecM4P_QPw@mail.gmail.com>
Subject: Re: [PATCH v5 02/13] xen/arm: add cache coloring initialization
To: Julien Grall <julien@xen.org>
Cc: xen-devel@lists.xenproject.org, 
	Stefano Stabellini <sstabellini@kernel.org>, Bertrand Marquis <bertrand.marquis@arm.com>, 
	Michal Orzel <michal.orzel@amd.com>, Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>, 
	Andrew Cooper <andrew.cooper3@citrix.com>, George Dunlap <george.dunlap@citrix.com>, 
	Jan Beulich <jbeulich@suse.com>, Wei Liu <wl@xen.org>, 
	Marco Solieri <marco.solieri@minervasys.tech>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

Hi Julien,

On Thu, Jan 4, 2024 at 8:25=E2=80=AFPM Julien Grall <julien@xen.org> wrote:
>
> Hi Carlo,
>
> On 02/01/2024 09:51, Carlo Nonato wrote:
> > This commit implements functions declared in the LLC coloring common he=
ader
> > for arm64 and adds documentation. It also adds two command line options=
: a
> > runtime switch for the cache coloring feature and the LLC way size
> > parameter.
> >
> > The feature init function consists of an auto probing of the cache layo=
ut
> > necessary to retrieve the LLC way size which is used to compute the num=
ber
> > of platform colors. It also adds a debug-key to dump general cache colo=
ring
> > info.
> >
> > Static memory allocation and cache coloring are incompatible because st=
atic
> > memory can't be guaranteed to use only colors assigned to the domain.
> > Panic during domUs creation when both are enabled.
> >
> > Based on original work from: Luca Miccio <lucmiccio@gmail.com>
> >
> > Signed-off-by: Carlo Nonato <carlo.nonato@minervasys.tech>
> > Signed-off-by: Marco Solieri <marco.solieri@minervasys.tech>
> > ---
> > v5:
> > - used - instead of _ for filenames
> > - moved static-mem check in this patch
> > - moved dom0 colors parsing in next patch
> > - moved color allocation and configuration in next patch
> > - moved check_colors() in next patch
> > - colors are now printed in short form
> > v4:
> > - added "llc-coloring" cmdline option for the boot-time switch
> > - dom0 colors are now checked during domain init as for any other domai=
n
> > - fixed processor.h masks bit width
> > - check for overflow in parse_color_config()
> > - check_colors() now checks also that colors are sorted and unique
> > ---
> >   docs/misc/arm/cache-coloring.rst        |  97 ++++++++++++++
> >   docs/misc/xen-command-line.pandoc       |  28 +++++
> >   xen/arch/arm/Kconfig                    |   1 +
> >   xen/arch/arm/Makefile                   |   1 +
> >   xen/arch/arm/dom0less-build.c           |   6 +
> >   xen/arch/arm/include/asm/llc-coloring.h |  28 +++++
> >   xen/arch/arm/include/asm/processor.h    |  16 +++
> >   xen/arch/arm/llc-coloring.c             | 161 +++++++++++++++++++++++=
+
> >   xen/arch/arm/setup.c                    |   7 ++
> >   9 files changed, 345 insertions(+)
> >   create mode 100644 docs/misc/arm/cache-coloring.rst
> >   create mode 100644 xen/arch/arm/include/asm/llc-coloring.h
> >   create mode 100644 xen/arch/arm/llc-coloring.c
> >
> > diff --git a/docs/misc/arm/cache-coloring.rst b/docs/misc/arm/cache-col=
oring.rst
> > new file mode 100644
> > index 0000000000..eabf8f5d1b
> > --- /dev/null
> > +++ b/docs/misc/arm/cache-coloring.rst
> > @@ -0,0 +1,97 @@
> > +Xen cache coloring user guide
> > +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D
> > +
> > +The cache coloring support in Xen allows to reserve Last Level Cache (=
LLC)
> > +partitions for Dom0, DomUs and Xen itself. Currently only ARM64 is sup=
ported.
> > +
> > +To compile LLC coloring support set ``CONFIG_LLC_COLORING=3Dy``.
> > +
> > +If needed, change the maximum number of colors with
> > +``CONFIG_NR_LLC_COLORS=3D<n>``.
> > +
> > +Compile Xen and the toolstack and then configure it via
> > +`Command line parameters`_.
> > +
> > +Background
> > +**********
> > +
> > +Cache hierarchy of a modern multi-core CPU typically has first levels =
dedicated
> > +to each core (hence using multiple cache units), while the last level =
is shared
> > +among all of them. Such configuration implies that memory operations o=
n one
> > +core (e.g. running a DomU) are able to generate interference on anothe=
r core
> > +(e.g .hosting another DomU). Cache coloring allows eliminating this
> > +mutual interference, and thus guaranteeing higher and more predictable
> > +performances for memory accesses.
> > +The key concept underlying cache coloring is a fragmentation of the me=
mory
> > +space into a set of sub-spaces called colors that are mapped to disjoi=
nt cache
> > +partitions. Technically, the whole memory space is first divided into =
a number
> > +of subsequent regions. Then each region is in turn divided into a numb=
er of
> > +subsequent sub-colors. The generic i-th color is then obtained by all =
the
> > +i-th sub-colors in each region.
> > +
> > +::
> > +
> > +                            Region j            Region j+1
> > +                .....................   ............
> > +                .                     . .
> > +                .                       .
> > +            _ _ _______________ _ _____________________ _ _
> > +                |     |     |     |     |     |     |
> > +                | c_0 | c_1 |     | c_n | c_0 | c_1 |
> > +           _ _ _|_____|_____|_ _ _|_____|_____|_____|_ _ _
> > +                    :                       :
> > +                    :                       :...         ... .
> > +                    :                            color 0
> > +                    :...........................         ... .
> > +                                                :
> > +          . . ..................................:
> > +
> > +There are two pragmatic lesson to be learnt.
> > +
> > +1. If one wants to avoid cache interference between two domains, diffe=
rent
> > +   colors needs to be used for their memory.
> > +
> > +2. Color assignment must privilege contiguity in the partitioning. E.g=
.,
> > +   assigning colors (0,1) to domain I  and (2,3) to domain  J is bette=
r than
> > +   assigning colors (0,2) to I and (1,3) to J.
> > +
> > +How to compute the number of colors
> > +***********************************
> > +
> > +To compute the number of available colors for a specific platform, the=
 size of
> > +an LLC way and the page size used by Xen must be known.
>
> Looking at the get_llc_way_size(), you are using CLIDR_EL1 which doesn't
> contains the system caches. They are invisible to the software but I
> guess could have an impact for cache coloring.
>
> Can you clarify if by Last Cache Level, you mean the last visible cache?

We are targeting only Cortex-A53, A57 and A72 where the "last level" is L2.
This "generic" approach for last level computation is inevitably problemati=
c,
but I think that defining it as the last visible cache is the best thing we
can do. Remember also that this computation is overridable with the
appropriate command line parameter, so it's still possible to target
cache architectures that aren't discovered by this code (which are rare cas=
es
since cache-coloring is already a small niche).

> > The first parameter can
> > +be found in the processor manual or can be also computed dividing the =
total
> > +cache size by the number of its ways. The second parameter is the mini=
mum
> > +amount of memory that can be mapped by the hypervisor, thus dividing t=
he way
> > +size by the page size, the number of total cache partitions is found. =
So for
> > +example, an Arm Cortex-A53 with a 16-ways associative 1 MiB LLC, can i=
solate up
> > +to 16 colors when pages are 4 KiB in size.
> > +
> > +Cache layout is probed automatically by Xen itself, but a possibility =
to
> > +manually set the way size it's left for the user to overcome failing s=
ituations
> > +or for debugging/testing purposes. See `Command line parameters`_ for =
more
> > +information on that.
> > +
> > +Command line parameters
> > +***********************
> > +
> > +More specific documentation is available at `docs/misc/xen-command-lin=
e.pandoc`.
> > +
> > ++----------------------+-------------------------------+
> > +| **Parameter**        | **Description**               |
> > ++----------------------+-------------------------------+
> > +| ``llc-coloring``     | enable coloring at runtime    |
> > ++----------------------+-------------------------------+
> > +| ``llc-way-size``     | set the LLC way size          |
> > ++----------------------+-------------------------------+
> > +
> > +Known issues and limitations
> > +****************************
> > +
> > +"xen,static-mem" isn't supported when coloring is enabled
> > +#########################################################
> > +
> > +In the domain configuration, "xen,static-mem" allows memory to be stat=
ically
> > +allocated to the domain. This isn't possibile when LLC coloring is ena=
bled,
> > +because that memory can't be guaranteed to use only colors assigned to=
 the
> > +domain.
> > diff --git a/docs/misc/xen-command-line.pandoc b/docs/misc/xen-command-=
line.pandoc
> > index 8e65f8bd18..22d2d5b6cf 100644
> > --- a/docs/misc/xen-command-line.pandoc
> > +++ b/docs/misc/xen-command-line.pandoc
> > @@ -1713,6 +1713,34 @@ This option is intended for debugging purposes o=
nly.  Enable MSR_DEBUGCTL.LBR
> >   in hypervisor context to be able to dump the Last Interrupt/Exception=
 To/From
> >   record with other registers.
> >
> > +### llc-coloring (arm64)
> > +> `=3D <boolean>`
> > +
> > +> Default: `false`
> > +
> > +Flag to enable or disable LLC coloring support at runtime. This option=
s is
> > +available only when `CONFIG_LLC_COLORING` is enabled. See the general
> > +cache coloring documentation for more info.
> > +
> > +### llc-way-size (arm64)
> > +> `=3D <size>`
> > +
> > +> Default: `Obtained from the hardware`
> > +
> > +Specify the way size of the Last Level Cache. This options is availabl=
e only
> > +when `CONFIG_LLC_COLORING` is enabled. It is an optional, expert-only =
parameter
> > +and it is used to calculate the number of available LLC colors on the =
platform.
> > +It can be obtained by dividing the total LLC size by the number of its
> > +associative ways.
> > +By default, the value is automatically computed by probing the hardwar=
e, but in
> > +case of specific needs, it can be manually set. Those include failing =
probing
> > +and debugging/testing purposes so that it's possibile to emulate platf=
orms with
>
> typo: s/possibile/possible/
>
> > +different number of supported colors.
> > +An important detail to highlight is that the current implementation of=
 the
> > +cache coloring technique requires the number of colors to be a power o=
f 2, and
> > +consequently, also the LLC way size must be so. A value that doesn't m=
atch this
> > +requirement is aligned down to the previous power of 2.
>
> Possibly a matter of taste here, but I would prefer if we simply throw
> an error. This makes more obvious that the size provided by the user was
> incorrect.
>
> > +
> >   ### lock-depth-size
> >   > `=3D <integer>`
> >
> > diff --git a/xen/arch/arm/Kconfig b/xen/arch/arm/Kconfig
> > index 50e9bfae1a..55143f86a9 100644
> > --- a/xen/arch/arm/Kconfig
> > +++ b/xen/arch/arm/Kconfig
> > @@ -8,6 +8,7 @@ config ARM_64
> >       depends on !ARM_32
> >       select 64BIT
> >       select HAS_FAST_MULTIPLY
> > +     select HAS_LLC_COLORING
> >
> >   config ARM
> >       def_bool y
> > diff --git a/xen/arch/arm/Makefile b/xen/arch/arm/Makefile
> > index 33c677672f..c9a1cd298d 100644
> > --- a/xen/arch/arm/Makefile
> > +++ b/xen/arch/arm/Makefile
> > @@ -37,6 +37,7 @@ obj-$(CONFIG_IOREQ_SERVER) +=3D ioreq.o
> >   obj-y +=3D irq.o
> >   obj-y +=3D kernel.init.o
> >   obj-$(CONFIG_LIVEPATCH) +=3D livepatch.o
> > +obj-$(CONFIG_LLC_COLORING) +=3D llc-coloring.o
> >   obj-y +=3D mem_access.o
> >   obj-y +=3D mm.o
> >   obj-y +=3D monitor.o
> > diff --git a/xen/arch/arm/dom0less-build.c b/xen/arch/arm/dom0less-buil=
d.c
> > index fb63ec6fd1..1142f7f74a 100644
> > --- a/xen/arch/arm/dom0less-build.c
> > +++ b/xen/arch/arm/dom0less-build.c
> > @@ -5,6 +5,7 @@
> >   #include <xen/grant_table.h>
> >   #include <xen/iocap.h>
> >   #include <xen/libfdt/libfdt.h>
> > +#include <xen/llc-coloring.h>
> >   #include <xen/sched.h>
> >   #include <xen/serial.h>
> >   #include <xen/sizes.h>
> > @@ -879,7 +880,12 @@ void __init create_domUs(void)
> >               panic("No more domain IDs available\n");
> >
> >           if ( dt_find_property(node, "xen,static-mem", NULL) )
> > +        {
> > +            if ( llc_coloring_enabled )
> > +                panic("LLC coloring and static memory are incompatible=
\n");
> > +
> >               flags |=3D CDF_staticmem;
> > +        }
> >
> >           if ( dt_property_read_bool(node, "direct-map") )
> >           {
> > diff --git a/xen/arch/arm/include/asm/llc-coloring.h b/xen/arch/arm/inc=
lude/asm/llc-coloring.h
> > new file mode 100644
> > index 0000000000..7885e9e3f5
> > --- /dev/null
> > +++ b/xen/arch/arm/include/asm/llc-coloring.h
> > @@ -0,0 +1,28 @@
> > +/* SPDX-License-Identifier: GPL-2.0 */
>
> Please use GPL-2.0-only.
>
> > +/*
> > + * Last Level Cache (LLC) coloring support for ARM
> > + *
> > + * Copyright (C) 2022 Xilinx Inc.
> > + *
> > + * Authors:
> > + *    Luca Miccio <lucmiccio@gmail.com>
> > + *    Carlo Nonato <carlo.nonato@minervasys.tech>
>
> Same question as before for the authorship.
>
> > + */
> > +#ifndef __ASM_ARM_COLORING_H__
> > +#define __ASM_ARM_COLORING_H__
> > +
> > +#include <xen/init.h>
> > +
> > +bool __init llc_coloring_init(void);
>
> The __init attribute is not necessary here. It is sufficient on the
> definition.
>
> > +
> > +#endif /* __ASM_ARM_COLORING_H__ */
> > +
> > +/*
> > + * Local variables:
> > + * mode: C
> > + * c-file-style: "BSD"
> > + * c-basic-offset: 4
> > + * tab-width: 4
> > + * indent-tabs-mode: nil
> > + * End:
> > + */
> > diff --git a/xen/arch/arm/include/asm/processor.h b/xen/arch/arm/includ=
e/asm/processor.h
> > index 8e02410465..fd5e8eba98 100644
> > --- a/xen/arch/arm/include/asm/processor.h
> > +++ b/xen/arch/arm/include/asm/processor.h
> > @@ -18,6 +18,22 @@
> >   #define CTR_IDC_SHIFT       28
> >   #define CTR_DIC_SHIFT       29
> >
> > +/* CCSIDR Current Cache Size ID Register */
> > +#define CCSIDR_LINESIZE_MASK            _AC(0x7, ULL)
> > +#define CCSIDR_NUMSETS_SHIFT            13
> > +#define CCSIDR_NUMSETS_MASK             _AC(0x3fff, ULL)
> > +#define CCSIDR_NUMSETS_SHIFT_FEAT_CCIDX 32
> > +#define CCSIDR_NUMSETS_MASK_FEAT_CCIDX  _AC(0xffffff, ULL)
> > +
> > +/* CCSELR Cache Size Selection Register */
>
> Typo: s/CCSELR/CSSELR/
>
> > +#define CCSELR_LEVEL_MASK  _AC(0x7, UL)
> > +#define CCSELR_LEVEL_SHIFT 1
> > +
> > +/* CLIDR Cache Level ID Register */
> > +#define CLIDR_CTYPEn_SHIFT(n) (3 * (n - 1))
> > +#define CLIDR_CTYPEn_MASK     _AC(0x7, UL)
> > +#define CLIDR_CTYPEn_LEVELS   7
> > +
> >   #define ICACHE_POLICY_VPIPT  0
> >   #define ICACHE_POLICY_AIVIVT 1
> >   #define ICACHE_POLICY_VIPT   2
> > diff --git a/xen/arch/arm/llc-coloring.c b/xen/arch/arm/llc-coloring.c
> > new file mode 100644
> > index 0000000000..37d647f038
> > --- /dev/null
> > +++ b/xen/arch/arm/llc-coloring.c
> > @@ -0,0 +1,161 @@
> > +/* SPDX-License-Identifier: GPL-2.0 */
>
> GPL-2.0-only
>
> > +/*
> > + * Last Level Cache (LLC) coloring support for ARM
> > + *
> > + * Copyright (C) 2022 Xilinx Inc.
> > + *
> > + * Authors:
> > + *    Luca Miccio <lucmiccio@gmail.com>
> > + *    Carlo Nonato <carlo.nonato@minervasys.tech>
>
> Same question as before for the authorship.
>
> > + */
> > +#include <xen/errno.h>
> > +#include <xen/keyhandler.h>
> > +#include <xen/llc-coloring.h>
> > +#include <xen/param.h>
> > +#include <xen/types.h>
> > +
> > +#include <asm/processor.h>
> > +#include <asm/sysregs.h>
> > +
> > +bool __ro_after_init llc_coloring_enabled;
> > +boolean_param("llc-coloring", llc_coloring_enabled);
> > +
> > +/* Size of an LLC way */
> > +static unsigned int __ro_after_init llc_way_size;
> > +size_param("llc-way-size", llc_way_size);
> > +/* Number of colors available in the LLC */
> > +static unsigned int __ro_after_init nr_colors =3D CONFIG_NR_LLC_COLORS=
;
> > +
> > +/* Return the LLC way size by probing the hardware */
> > +static unsigned int __init get_llc_way_size(void)
> > +{
> > +    register_t ccsidr_el1;
> > +    register_t clidr_el1 =3D READ_SYSREG(CLIDR_EL1);
> > +    register_t csselr_el1 =3D READ_SYSREG(CSSELR_EL1);
> > +    register_t id_aa64mmfr2_el1 =3D READ_SYSREG(ID_AA64MMFR2_EL1);
> > +    uint32_t ccsidr_numsets_shift =3D CCSIDR_NUMSETS_SHIFT;
> > +    uint32_t ccsidr_numsets_mask =3D CCSIDR_NUMSETS_MASK;
> > +    unsigned int n, line_size, num_sets;
> > +
> > +    for ( n =3D CLIDR_CTYPEn_LEVELS;
> > +          n !=3D 0 && !((clidr_el1 >> CLIDR_CTYPEn_SHIFT(n)) & CLIDR_C=
TYPEn_MASK);
> > +          n-- );
> > +
> > +    if ( n =3D=3D 0 )
> > +        return 0;
>
>
> Shouldn't you check cache type of the level is either 0b011 (Separate
> instruction and cache) or 0b100 (Unified cache)?

Yes this is better.

> > +
> > +    WRITE_SYSREG(((n - 1) & CCSELR_LEVEL_MASK) << CCSELR_LEVEL_SHIFT,
>
> NIT: masking (n - 1) looks a bit odd as it already indicates the cache
> level. It actually made me wonder if the other bits have a meaning. So I
> would drop the mask.
>
> > +                 CSSELR_EL1);
> > +    isb();
> > +
> > +    ccsidr_el1 =3D READ_SYSREG(CCSIDR_EL1);
> > +
> > +    /* Arm ARM: (Log2(Number of bytes in cache line)) - 4 */
> > +    line_size =3D 1 << ((ccsidr_el1 & CCSIDR_LINESIZE_MASK) + 4);
>
> Please use 1U even thought the shift should not be big enough to result
> to an overflow.
>
> > +
> > +    /* If FEAT_CCIDX is enabled, CCSIDR_EL1 has a different bit layout=
 */
> > +    if ( (id_aa64mmfr2_el1 >> ID_AA64MMFR2_CCIDX_SHIFT) & 0x7 )
> > +    {
> > +        ccsidr_numsets_shift =3D CCSIDR_NUMSETS_SHIFT_FEAT_CCIDX;
> > +        ccsidr_numsets_mask =3D CCSIDR_NUMSETS_MASK_FEAT_CCIDX;
> > +    }
> > +    /* Arm ARM: (Number of sets in cache) - 1 */
> > +    num_sets =3D ((ccsidr_el1 >> ccsidr_numsets_shift) & ccsidr_numset=
s_mask) + 1;
> > +
> > +    printk(XENLOG_INFO "LLC found: L%u (line size: %u bytes, sets num:=
 %u)\n",
> > +           n, line_size, num_sets);
> > +
> > +    /* Restore value in CSSELR_EL1 */
> > +    WRITE_SYSREG(csselr_el1, CSSELR_EL1);
> > +    isb();
> > +
> > +    return line_size * num_sets;
> > +}
> > +
> > +static void print_colors(unsigned int *colors, unsigned int num_colors=
)
>
> I think colors can be const. In general, I would prefer if
> variable/parameters that should not be modified are const.
>
> > +{
> > +    unsigned int i;
> > +
> > +    printk("{ ");
> > +    for ( i =3D 0; i < num_colors; i++ ) {
> > +        unsigned int start =3D colors[i], end =3D colors[i];
> > +
> > +        printk("%u", start);
> > +
> > +        for ( ;
> > +              i < num_colors - 1 && colors[i] + 1 =3D=3D colors[i + 1]=
;
> > +              i++, end++ );
> > +
> > +        if ( start !=3D end )
> > +            printk("-%u", end);
> > +
> > +        if ( i < num_colors - 1 )
> > +            printk(", ");
> > +    }
> > +    printk(" }\n");
> > +}
> > +
> > +static void dump_coloring_info(unsigned char key)
> > +{
> > +    printk("'%c' pressed -> dumping LLC coloring general info\n", key)=
;
> > +    printk("LLC way size: %u KiB\n", llc_way_size >> 10);
> > +    printk("Number of LLC colors supported: %u\n", nr_colors);
> > +}
> > +
> > +bool __init llc_coloring_init(void)
> > +{
> > +    if ( !llc_way_size && !(llc_way_size =3D get_llc_way_size()) )
> > +    {
> > +        printk(XENLOG_ERR
> > +               "Probed LLC way size is 0 and no custom value provided\=
n");
> > +        return false;
> > +    }
> > +
> > +    /*
> > +     * The maximum number of colors must be a power of 2 in order to c=
orrectly
> > +     * map them to bits of an address, so also the LLC way size must b=
e so.
> > +     */
> > +    if ( llc_way_size & (llc_way_size - 1) )
> > +    {
> > +        printk(XENLOG_WARNING "LLC way size (%u) isn't a power of 2.\n=
",
> > +               llc_way_size);
> > +        llc_way_size =3D 1U << flsl(llc_way_size);
> > +        printk(XENLOG_WARNING
> > +               "Using %u instead. Performances will be suboptimal\n",
> > +               llc_way_size);
> > +    }
> > +
> > +    nr_colors =3D llc_way_size >> PAGE_SHIFT;
> > +
> > +    if ( nr_colors < 2 || nr_colors > CONFIG_NR_LLC_COLORS )
>
> I didn't find any documentation explaining why we need at least two
> colors. I guess you want to make sure that there is a color for Xen and
> domain. But I wonder what could wrong with just one color (other than
> been pointless)?

Yes, it would just be pointless. I'll change it to 1.

> > +    {
> > +        printk(XENLOG_ERR "Number of LLC colors (%u) not in range [2, =
%u]\n",
> > +               nr_colors, CONFIG_NR_LLC_COLORS);
> > +        return false;
> > +    }
> > +
> > +    register_keyhandler('K', dump_coloring_info, "dump LLC coloring in=
fo", 1);
> > +
> > +    return true;
> > +}
> > +
> > +void domain_llc_coloring_free(struct domain *d)
> > +{
> > +    xfree(d->llc_colors);
> > +}
> > +
> > +void domain_dump_llc_colors(struct domain *d)
> > +{
> > +    printk("Domain %pd has %u LLC colors: ", d, d->num_llc_colors);
> > +    print_colors(d->llc_colors, d->num_llc_colors);
> > +}
> > +
> > +/*
> > + * Local variables:
> > + * mode: C
> > + * c-file-style: "BSD"
> > + * c-basic-offset: 4
> > + * tab-width: 4
> > + * indent-tabs-mode: nil
> > + * End:
> > + */
> > diff --git a/xen/arch/arm/setup.c b/xen/arch/arm/setup.c
> > index 59dd9bb25a..4c16b566db 100644
> > --- a/xen/arch/arm/setup.c
> > +++ b/xen/arch/arm/setup.c
> > @@ -12,6 +12,7 @@
> >   #include <xen/device_tree.h>
> >   #include <xen/domain_page.h>
> >   #include <xen/grant_table.h>
> > +#include <xen/llc-coloring.h>
> >   #include <xen/types.h>
> >   #include <xen/string.h>
> >   #include <xen/serial.h>
> > @@ -746,6 +747,12 @@ void asmlinkage __init start_xen(unsigned long boo=
t_phys_offset,
> >       printk("Command line: %s\n", cmdline);
> >       cmdline_parse(cmdline);
> >
> > +    if ( llc_coloring_enabled )
>
> I would consider to move llc_coloring_enabled in llc_coloring_init().
> But if you prefer to keep the check here, then I would at least request
> to merge the two ifs. I.e.
>
> if ( llc_coloring_enabled && !llc_coloring_init() )
>
> That said...
>
> > +    {
> > +        if ( !llc_coloring_init() )
> > +            panic("Xen LLC coloring support: setup failed\n");
> > +    }
> > +
> >       setup_mm();
>
> ... shouldn't the coloring happen in setup_mm()? After all, this is part
> of the memory subystem and I suspect this will not work with the
> upcoming MPU support.

Coloring initialization must happen before setup_pagetables() otherwise it
isn't possible to color the hypervisor code. In later patches
setup_pagetables() is moved after coloring init so I don't think it would
make sense to have it in setup_mm().

> >
> >       /* Parse the ACPI tables for possible boot-time configuration */
>
> Cheers,
>
> --
> Julien Grall

Thanks.


From xen-devel-bounces@lists.xenproject.org Fri Jan 05 16:52:30 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 05 Jan 2024 16:52:30 +0000
Received: from list by lists.xenproject.org with outflank-mailman.662270.1032308 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLnQm-0007FN-3Z; Fri, 05 Jan 2024 16:52:24 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 662270.1032308; Fri, 05 Jan 2024 16:52:24 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLnQm-0007FG-11; Fri, 05 Jan 2024 16:52:24 +0000
Received: by outflank-mailman (input) for mailman id 662270;
 Fri, 05 Jan 2024 16:52:22 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=8Ewp=IP=minervasys.tech=carlo.nonato@srs-se1.protection.inumbo.net>)
 id 1rLnQk-0007Dr-Cd
 for xen-devel@lists.xenproject.org; Fri, 05 Jan 2024 16:52:22 +0000
Received: from mail-ej1-x62e.google.com (mail-ej1-x62e.google.com
 [2a00:1450:4864:20::62e])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id ca1b7c3e-abea-11ee-9b0f-b553b5be7939;
 Fri, 05 Jan 2024 17:52:19 +0100 (CET)
Received: by mail-ej1-x62e.google.com with SMTP id
 a640c23a62f3a-a27733ae1dfso206813166b.3
 for <xen-devel@lists.xenproject.org>; Fri, 05 Jan 2024 08:52:19 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: ca1b7c3e-abea-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=minervasys-tech.20230601.gappssmtp.com; s=20230601; t=1704473539; x=1705078339; darn=lists.xenproject.org;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:from:to:cc:subject:date
         :message-id:reply-to;
        bh=rRqeJhVhQtExIxhkrij+EMClpXEiYKfGl59c7a/eTbU=;
        b=2GUdNM3ye1Y0WWWkZjqYBM8+YYEXpbqy5LdyGUwy7HcqtKLXuGYyyGt0ipLntR+fD2
         gOa7WDuxoAa1Op68YsoHY1i6CqqabZudCHk1NzPa/xyYzR45Z0d0obTh346hN9xouCMV
         cVPBqyL85UDlbXvDsPT+yeRAUeS2WieTxYLg8ZbB/8GKYo8zaXoS1rIybV/P0VKNGR08
         ehpFiK//aGA5OO06KElObxVKx6/EB8ljLVTlsquYoXHjfMFv4uoYImsngTMp3OCzgx7/
         fLJqhUXkqIkdHCkcLhTap59rpros9cnT+AYLYJ4/7MOguC2nEcZhNIwezp1IIf+PgVIQ
         HNGg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704473539; x=1705078339;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to;
        bh=rRqeJhVhQtExIxhkrij+EMClpXEiYKfGl59c7a/eTbU=;
        b=jUCqZEZfQmGYVvaXtpKACLTvoNCK23m5g1fU2cD6JVpzA7uf8am+Nxy3Vn7uhhPUI7
         Dt56+lRhFWLzyvwGySd7ELkMT5vreJ/bQNCIN7DUzGqIZo8t1e1UaekjBVrjvS9A8ceu
         NdGdH6QG47SvawhWwq6KvIZf4nsO4NepCoWggvBli5jdwHMdQjaYagezy9RwROFfX+hO
         wG+szF01xqUd/AGwNPgzP0J9C9lDUz8jY4n723CqIzQSTh6IskGrVS5WCzOYW/ZVFSI1
         miyxZPEqeiIYe5EzAdSllbL6lB3w8YxGU265TEHV14SZrY5NArDgQTPN6fCO//0RwXQ+
         D3uw==
X-Gm-Message-State: AOJu0Yxc1ndbNjS20uPR/uhVL1k1unZ4vvgrenJD2V0G2Mk37ANXFv4z
	tek2/4pTbKaSAyR8WrEeVP1iF1wtXu6TjE9hf/AlBeKP9dPaWEZ807Z6C5FXkuk=
X-Google-Smtp-Source: AGHT+IEQ3LHwcunMj1HSOHeIXxPD5DwZX2LpsOK0SmnefzxPVPnAgRN4Y1vI4EnYPojZP9+LsUmnQTIN33w7+gSGwg8=
X-Received: by 2002:a17:907:1b26:b0:a29:8f93:9e20 with SMTP id
 mp38-20020a1709071b2600b00a298f939e20mr298079ejc.130.1704473539140; Fri, 05
 Jan 2024 08:52:19 -0800 (PST)
MIME-Version: 1.0
References: <20240102095138.17933-1-carlo.nonato@minervasys.tech>
 <20240102095138.17933-4-carlo.nonato@minervasys.tech> <046e9949-d126-42b1-90a6-12af540d63bf@xen.org>
In-Reply-To: <046e9949-d126-42b1-90a6-12af540d63bf@xen.org>
From: Carlo Nonato <carlo.nonato@minervasys.tech>
Date: Fri, 5 Jan 2024 17:52:08 +0100
Message-ID: <CAG+AhRWm4N7GV3HfkTNCvXQw7-6Woq=+zBqdHAgN=-PgGr-WRg@mail.gmail.com>
Subject: Re: [PATCH v5 03/13] xen/arm: add Dom0 cache coloring support
To: Julien Grall <julien@xen.org>
Cc: xen-devel@lists.xenproject.org, 
	Stefano Stabellini <sstabellini@kernel.org>, Bertrand Marquis <bertrand.marquis@arm.com>, 
	Michal Orzel <michal.orzel@amd.com>, Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>, 
	Andrew Cooper <andrew.cooper3@citrix.com>, George Dunlap <george.dunlap@citrix.com>, 
	Jan Beulich <jbeulich@suse.com>, Wei Liu <wl@xen.org>, 
	Marco Solieri <marco.solieri@minervasys.tech>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

Hi Julien,

On Thu, Jan 4, 2024 at 8:54=E2=80=AFPM Julien Grall <julien@xen.org> wrote:
>
> Hi Carlo,
>
> On 02/01/2024 09:51, Carlo Nonato wrote:
> > This commit allows the user to set the cache coloring configuration for
> > Dom0 via a command line parameter.
> > Since cache coloring and static memory are incompatible, direct mapping
> > Dom0 isn't possible when coloring is enabled.
> >
> > A common configuration syntax for cache colors is also introduced.
> >
> > Based on original work from: Luca Miccio <lucmiccio@gmail.com>
> >
> > Signed-off-by: Carlo Nonato <carlo.nonato@minervasys.tech>
> > Signed-off-by: Marco Solieri <marco.solieri@minervasys.tech>
> > ---
> > v5:
> > - Carlo Nonato as the new author
> > - moved dom0 colors parsing (parse_colors()) in this patch
> > - added dom0_set_llc_colors() to set dom0 colors after creation
> > - moved color allocation and checking in this patch
> > - error handling when allocating color arrays
> > - FIXME: copy pasted allocate_memory() cause it got moved
> > v4:
> > - dom0 colors are dynamically allocated as for any other domain
> >    (colors are duplicated in dom0_colors and in the new array, but logi=
c
> >    is simpler)
> > ---
> >   docs/misc/arm/cache-coloring.rst        |  29 ++++++
> >   docs/misc/xen-command-line.pandoc       |   9 ++
> >   xen/arch/arm/domain_build.c             |  60 ++++++++++-
> >   xen/arch/arm/include/asm/llc-coloring.h |   1 +
> >   xen/arch/arm/llc-coloring.c             | 128 +++++++++++++++++++++++=
+
> >   5 files changed, 224 insertions(+), 3 deletions(-)
> >
> > diff --git a/docs/misc/arm/cache-coloring.rst b/docs/misc/arm/cache-col=
oring.rst
> > index eabf8f5d1b..acf82c3df8 100644
> > --- a/docs/misc/arm/cache-coloring.rst
> > +++ b/docs/misc/arm/cache-coloring.rst
> > @@ -84,6 +84,35 @@ More specific documentation is available at `docs/mi=
sc/xen-command-line.pandoc`.
> >   +----------------------+-------------------------------+
> >   | ``llc-way-size``     | set the LLC way size          |
> >   +----------------------+-------------------------------+
> > +| ``dom0-llc-colors``  | Dom0 color configuration      |
> > ++----------------------+-------------------------------+
> > +
> > +Colors selection format
> > +***********************
> > +
> > +Regardless of the memory pool that has to be colored (Xen, Dom0/DomUs)=
,
> > +the color selection can be expressed using the same syntax. In particu=
lar a
> > +comma-separated list of colors or ranges of colors is used.
> > +Ranges are hyphen-separated intervals (such as `0-4`) and are inclusiv=
e on both
> > +sides.
> > +
> > +Note that:
> > +
> > +- no spaces are allowed between values.
> > +- no overlapping ranges or duplicated colors are allowed.
> > +- values must be written in ascending order.
> > +
> > +Examples:
> > +
> > ++-------------------+-----------------------------+
> > +| **Configuration** | **Actual selection**        |
> > ++-------------------+-----------------------------+
> > +| 1-2,5-8           | [1, 2, 5, 6, 7, 8]          |
> > ++-------------------+-----------------------------+
> > +| 4-8,10,11,12      | [4, 5, 6, 7, 8, 10, 11, 12] |
> > ++-------------------+-----------------------------+
> > +| 0                 | [0]                         |
> > ++-------------------+-----------------------------+
> >
> >   Known issues and limitations
> >   ****************************
> > diff --git a/docs/misc/xen-command-line.pandoc b/docs/misc/xen-command-=
line.pandoc
> > index 22d2d5b6cf..51f6adf035 100644
> > --- a/docs/misc/xen-command-line.pandoc
> > +++ b/docs/misc/xen-command-line.pandoc
> > @@ -963,6 +963,15 @@ Controls for the dom0 IOMMU setup.
> >
> >   Specify a list of IO ports to be excluded from dom0 access.
> >
> > +### dom0-llc-colors (arm64)
> > +> `=3D List of [ <integer> | <integer>-<integer> ]`
>
> Someone reading only xen-command-line.pandoc would not know how each
> item of the list is separated. Can this be clarified?

Isn't it already known that the list is comma separated? It's written at th=
e
beginning of this file for the "List" type.
I can also point to cache-coloring documentation if needed.

> > +
> > +> Default: `All available LLC colors`
> > +
> > +Specify dom0 LLC color configuration. This options is available only w=
hen
> > +`CONFIG_LLC_COLORING` is enabled. If the parameter is not set, all ava=
ilable
> > +colors are chosen and the user is warned on Xen serial console.
>
> I would drop anything starting from  "and the user ...". This is really
> implementation define and the reader of the doc should not need to know
> that.
>
> > +
> >   ### dom0_max_vcpus
> >
> >   Either:
> > diff --git a/xen/arch/arm/domain_build.c b/xen/arch/arm/domain_build.c
> > index 6945b9755d..482c059bfa 100644
> > --- a/xen/arch/arm/domain_build.c
> > +++ b/xen/arch/arm/domain_build.c
> > @@ -2,6 +2,7 @@
> >   #include <xen/init.h>
> >   #include <xen/compile.h>
> >   #include <xen/lib.h>
> > +#include <xen/llc-coloring.h>
> >   #include <xen/mm.h>
> >   #include <xen/param.h>
> >   #include <xen/domain_page.h>
> > @@ -414,7 +415,7 @@ static void __init allocate_memory_11(struct domain=
 *d,
> >       }
> >   }
> >
> > -#ifdef CONFIG_DOM0LESS_BOOT
> > +#if defined(CONFIG_DOM0LESS_BOOT) || defined(CONFIG_LLC_COLORING)
> >   bool __init allocate_bank_memory(struct domain *d, struct kernel_info=
 *kinfo,
> >                                    gfn_t sgfn, paddr_t tot_size)
> >   {
> > @@ -478,6 +479,49 @@ bool __init allocate_bank_memory(struct domain *d,=
 struct kernel_info *kinfo,
> >   }
> >   #endif
> >
> > +static void __init allocate_memory(struct domain *d, struct kernel_inf=
o *kinfo)
>
> I saw the discussion on the cover letter. I agree that allocate_memory()
> should be moved back here (ideally in a separate patch) to avoid
> duplication.
>
> > +{
> > +    unsigned int i;
> > +    paddr_t bank_size;
> > +
> > +    printk(XENLOG_INFO "Allocating mappings totalling %ldMB for %pd:\n=
",
> > +           /* Don't want format this as PRIpaddr (16 digit hex) */
> > +           (unsigned long)(kinfo->unassigned_mem >> 20), d);
> > +
> > +    kinfo->mem.nr_banks =3D 0;
> > +    bank_size =3D MIN(GUEST_RAM0_SIZE, kinfo->unassigned_mem);
> > +    if ( !allocate_bank_memory(d, kinfo, gaddr_to_gfn(GUEST_RAM0_BASE)=
,
> > +                               bank_size) )
> > +        goto fail;
> > +
> > +    bank_size =3D MIN(GUEST_RAM1_SIZE, kinfo->unassigned_mem);
> > +    if ( !allocate_bank_memory(d, kinfo, gaddr_to_gfn(GUEST_RAM1_BASE)=
,
> > +                               bank_size) )
> > +        goto fail;
> > +
> > +    if ( kinfo->unassigned_mem )
> > +        goto fail;
> > +
> > +    for( i =3D 0; i < kinfo->mem.nr_banks; i++ )
> > +    {
> > +        printk(XENLOG_INFO "%pd BANK[%d] %#"PRIpaddr"-%#"PRIpaddr" (%l=
dMB)\n",
> > +               d,
> > +               i,
> > +               kinfo->mem.bank[i].start,
> > +               kinfo->mem.bank[i].start + kinfo->mem.bank[i].size,
> > +               /* Don't want format this as PRIpaddr (16 digit hex) */
> > +               (unsigned long)(kinfo->mem.bank[i].size >> 20));
> > +    }
> > +
> > +    return;
> > +
> > +fail:
> > +    panic("Failed to allocate requested domain memory."
> > +          /* Don't want format this as PRIpaddr (16 digit hex) */
> > +          " %ldKB unallocated. Fix the VMs configurations.\n",
> > +          (unsigned long)kinfo->unassigned_mem >> 10);
> > +}
> > +
> >   /*
> >    * When PCI passthrough is available we want to keep the
> >    * "linux,pci-domain" in sync for every host bridge.
> > @@ -2072,7 +2116,10 @@ static int __init construct_dom0(struct domain *=
d)
> >       /* type must be set before allocate_memory */
> >       d->arch.type =3D kinfo.type;
> >   #endif
> > -    allocate_memory_11(d, &kinfo);
> > +    if ( is_domain_llc_colored(d) )
>
> To me the choice here is more related to whether the domain direct
> mapped rather than the color itself. So I would rather prefer if we use
> is_domain_direct_mapped() even if this means the compiler will not be
> able to drop optimize the if when cache coloring is disabled.
>
> > +        allocate_memory(d, &kinfo);
> > +    else
> > +        allocate_memory_11(d, &kinfo);
> >       find_gnttab_region(d, &kinfo);
> >
> >       rc =3D process_shm_chosen(d, &kinfo);
> > @@ -2116,6 +2163,7 @@ void __init create_dom0(void)
> >           .max_maptrack_frames =3D -1,
> >           .grant_opts =3D XEN_DOMCTL_GRANT_version(opt_gnttab_max_versi=
on),
> >       };
> > +    unsigned int flags =3D CDF_privileged;
> >       int rc;
> >
> >       /* The vGIC for DOM0 is exactly emulating the hardware GIC */
> > @@ -2143,10 +2191,16 @@ void __init create_dom0(void)
> >               panic("SVE vector length error\n");
> >       }
> >
> > -    dom0 =3D domain_create(0, &dom0_cfg, CDF_privileged | CDF_directma=
p);
> > +    if ( !llc_coloring_enabled )
> > +        flags |=3D CDF_directmap;
> > +
> > +    dom0 =3D domain_create(0, &dom0_cfg, flags);
> >       if ( IS_ERR(dom0) )
> >           panic("Error creating domain 0 (rc =3D %ld)\n", PTR_ERR(dom0)=
);
> >
> > +    if ( llc_coloring_enabled && (rc =3D dom0_set_llc_colors(dom0)) )
> > +        panic("Error initializing LLC coloring for domain 0 (rc =3D %d=
)", rc);
> > +
> >       if ( alloc_dom0_vcpu0(dom0) =3D=3D NULL )
> >           panic("Error creating domain 0 vcpu0\n");
> >
> > diff --git a/xen/arch/arm/include/asm/llc-coloring.h b/xen/arch/arm/inc=
lude/asm/llc-coloring.h
> > index 7885e9e3f5..ee5551e3cc 100644
> > --- a/xen/arch/arm/include/asm/llc-coloring.h
> > +++ b/xen/arch/arm/include/asm/llc-coloring.h
> > @@ -14,6 +14,7 @@
> >   #include <xen/init.h>
> >
> >   bool __init llc_coloring_init(void);
> > +int dom0_set_llc_colors(struct domain *d);
> >
> >   #endif /* __ASM_ARM_COLORING_H__ */
> >
> > diff --git a/xen/arch/arm/llc-coloring.c b/xen/arch/arm/llc-coloring.c
> > index 37d647f038..5ce58aba70 100644
> > --- a/xen/arch/arm/llc-coloring.c
> > +++ b/xen/arch/arm/llc-coloring.c
> > @@ -26,6 +26,63 @@ size_param("llc-way-size", llc_way_size);
> >   /* Number of colors available in the LLC */
> >   static unsigned int __ro_after_init nr_colors =3D CONFIG_NR_LLC_COLOR=
S;
> >
> > +static unsigned int __ro_after_init dom0_colors[CONFIG_NR_LLC_COLORS];
> > +static unsigned int __ro_after_init dom0_num_colors;
>
> Any reason to keep dom0_colors/dom0_num_colors after init?

Nope.

> > +
> > +/*
> > + * Parse the coloring configuration given in the buf string, following=
 the
> > + * syntax below.
> > + *
> > + * COLOR_CONFIGURATION ::=3D COLOR | RANGE,...,COLOR | RANGE
> > + * RANGE               ::=3D COLOR-COLOR
> > + *
> > + * Example: "0,2-6,15-16" represents the set of colors: 0,2,3,4,5,6,15=
,16.
> > + */
> > +static int parse_color_config(const char *buf, unsigned int *colors,
> > +                              unsigned int *num_colors)
> > +{
> > +    const char *s =3D buf;
> > +
> > +    if ( !colors || !num_colors )
> > +        return -EINVAL;
> > +
> > +    *num_colors =3D 0;
> > +
> > +    while ( *s !=3D '\0' )
> > +    {
> > +        if ( *s !=3D ',' )
> > +        {
> > +            unsigned int color, start, end;
> > +
> > +            start =3D simple_strtoul(s, &s, 0);
> > +
> > +            if ( *s =3D=3D '-' )    /* Range */
> > +            {
> > +                s++;
> > +                end =3D simple_strtoul(s, &s, 0);
> > +            }
> > +            else                /* Single value */
> > +                end =3D start;
> > +
> > +            if ( start > end || (end - start) > UINT_MAX - *num_colors=
 ||
>
> I am always confused with operatator predence and this is even more
> confusing because some similar operations have parentheses but not
> others. Can you ask you to use () around UINT_MAX - *num_colors.
>
> > +                 *num_colors + (end - start) >=3D nr_colors )
>
> Same here. This will make a lot more obvious what you intend to write.
>
> > +                return -EINVAL;
> > +            for ( color =3D start; color <=3D end; color++ )
> > +                colors[(*num_colors)++] =3D color;
> > +        }
> > +        else
> > +            s++;
> > +    }
> > +
> > +    return *s ? -EINVAL : 0;
> > +}
> > +
> > +static int __init parse_dom0_colors(const char *s)
> > +{
> > +    return parse_color_config(s, dom0_colors, &dom0_num_colors);
> > +}
> > +custom_param("dom0-llc-colors", parse_dom0_colors);
> > +
> >   /* Return the LLC way size by probing the hardware */
> >   static unsigned int __init get_llc_way_size(void)
> >   {
> > @@ -102,6 +159,28 @@ static void dump_coloring_info(unsigned char key)
> >       printk("Number of LLC colors supported: %u\n", nr_colors);
> >   }
> >
> > +static bool check_colors(unsigned int *colors, unsigned int num_colors=
)
> > +{
> > +    unsigned int i;
> > +
> > +    if ( num_colors > nr_colors )
> > +    {
> > +        printk(XENLOG_ERR "Number of LLC colors requested > %u\n", nr_=
colors);
> > +        return false;
> > +    }
> > +
> > +    for ( i =3D 0; i < num_colors; i++ )
> > +    {
> > +        if ( colors[i] >=3D nr_colors )
> > +        {
> > +            printk(XENLOG_ERR "LLC color %u >=3D %u\n", colors[i], nr_=
colors);
> > +            return false;
> > +        }
> > +    }
> > +
> > +    return true;
> > +}
> > +
> >   bool __init llc_coloring_init(void)
> >   {
> >       if ( !llc_way_size && !(llc_way_size =3D get_llc_way_size()) )
> > @@ -150,6 +229,55 @@ void domain_dump_llc_colors(struct domain *d)
> >       print_colors(d->llc_colors, d->num_llc_colors);
> >   }
> >
> > +static int domain_alloc_colors(struct domain *d, unsigned int num_colo=
rs)
> > +{
> > +    d->num_llc_colors =3D num_colors;
>
> Shouldn't this be set *only* after the array was allocated?

Yes, it works also like I did, but it's cleaner like you said. I can also d=
rop
the next if.

> > +
> > +    if ( !num_colors )
> > +        return 0;
> > +
> > +    d->llc_colors =3D xmalloc_array(unsigned int, num_colors);
>
> Can I ask to introduce malloc and free within the same patch? I know
> this could introduce unused temporarily unused code. But at least it is
> easier to confirm that the two paths are correct.

Ok.

> > +    if ( !d->llc_colors )
> > +    {
> > +        printk("Can't allocate LLC colors for domain %pd\n", d);
>
> NIT: Above you use XENLOG_ERR for printk. But not here. To me they have
> the same severity. So can you explain the difference?

Just forgot it.

> > +        return -1;
> > +    }
> > +
> > +    return 0;
> > +}
> > +
> > +static int domain_check_colors(struct domain *d)
> > +{
> > +    unsigned int i;
> > +
> > +    if ( !d->num_llc_colors )
> > +    {
> > +        printk(XENLOG_WARNING
> > +               "LLC color config not found for %pd. Using default\n", =
d);
> > +        if ( domain_alloc_colors(d, nr_colors) )
> > +            return -ENOMEM;
> > +        for ( i =3D 0; i < nr_colors; i++ )
> > +            d->llc_colors[i] =3D i;
> > +    }
> > +    else if ( !check_colors(d->llc_colors, d->num_llc_colors) )
> > +    {
> > +        printk(XENLOG_ERR "Bad LLC color config for %pd\n", d);
> > +        return -EINVAL;
> > +    }
> > +
> > +    return 0;
> > +}
> > +
> > +int dom0_set_llc_colors(struct domain *d)
> > +{
> > +    if ( domain_alloc_colors(d, dom0_num_colors) )
> > +        return -ENOMEM;
> > +
> > +    memcpy(d->llc_colors, dom0_colors, sizeof(unsigned int) * dom0_num=
_colors);
> > +
> > +    return domain_check_colors(d);
> > +}
> > +
> >   /*
> >    * Local variables:
> >    * mode: C
>
> Cheers,
>
> --
> Julien Grall

Thanks.


From xen-devel-bounces@lists.xenproject.org Fri Jan 05 17:26:43 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 05 Jan 2024 17:26:43 +0000
Received: from list by lists.xenproject.org with outflank-mailman.662274.1032319 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLnxj-0005zm-Kd; Fri, 05 Jan 2024 17:26:27 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 662274.1032319; Fri, 05 Jan 2024 17:26:27 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLnxj-0005zf-Hc; Fri, 05 Jan 2024 17:26:27 +0000
Received: by outflank-mailman (input) for mailman id 662274;
 Fri, 05 Jan 2024 17:26:26 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>) id 1rLnxi-0005zZ-MG
 for xen-devel@lists.xenproject.org; Fri, 05 Jan 2024 17:26:26 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rLnxi-00038p-2X; Fri, 05 Jan 2024 17:26:26 +0000
Received: from [54.239.6.189] (helo=[192.168.15.166])
 by xenbits.xenproject.org with esmtpsa
 (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rLnxh-00076G-Ps; Fri, 05 Jan 2024 17:26:25 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
	s=20200302mail; h=Content-Transfer-Encoding:Content-Type:In-Reply-To:From:
	References:Cc:To:Subject:MIME-Version:Date:Message-ID;
	bh=tHp+kUsNDMEKqK+HQIYg0aMd3qIhsDMFTsbzq1Ss57A=; b=CFSIFxT0ytwt0O4Ri1zlESnPWz
	i6XEGRWskzeoiX05Drkt0mZfBHQrW/xv7xV+K+VuQJEK/UNnfrN45bKAwjBLChZLdZqqs+vTdvqrw
	h4EglK8A1/fCZlkbGB3YH79AmPa/qC7Wb/5gTRqaKWdM4lqJWIiHR6r68OsajrLmB0jM=;
Message-ID: <99295edf-6c9c-4d06-ba20-86db67100561@xen.org>
Date: Fri, 5 Jan 2024 17:26:23 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v5 04/13] xen: extend domctl interface for cache coloring
Content-Language: en-GB
To: Carlo Nonato <carlo.nonato@minervasys.tech>,
 xen-devel@lists.xenproject.org
Cc: Stefano Stabellini <sstabellini@kernel.org>,
 Bertrand Marquis <bertrand.marquis@arm.com>,
 Michal Orzel <michal.orzel@amd.com>,
 Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
 Andrew Cooper <andrew.cooper3@citrix.com>,
 George Dunlap <george.dunlap@citrix.com>, Jan Beulich <jbeulich@suse.com>,
 Wei Liu <wl@xen.org>, Marco Solieri <marco.solieri@minervasys.tech>
References: <20240102095138.17933-1-carlo.nonato@minervasys.tech>
 <20240102095138.17933-5-carlo.nonato@minervasys.tech>
From: Julien Grall <julien@xen.org>
In-Reply-To: <20240102095138.17933-5-carlo.nonato@minervasys.tech>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

Hi Carlo,

On 02/01/2024 09:51, Carlo Nonato wrote:
> This commit updates the domctl interface to allow the user to set cache
> coloring configurations from the toolstack.
> It also implements the functionality for arm64.
> 
> Based on original work from: Luca Miccio <lucmiccio@gmail.com>
> 
> Signed-off-by: Carlo Nonato <carlo.nonato@minervasys.tech>
> Signed-off-by: Marco Solieri <marco.solieri@minervasys.tech>
> ---
> v5:
> - added a new hypercall to set colors
> - uint for the guest handle
> v4:
> - updated XEN_DOMCTL_INTERFACE_VERSION
> ---
>   xen/arch/arm/llc-coloring.c    | 17 +++++++++++++++++
>   xen/common/domctl.c            | 11 +++++++++++
>   xen/include/public/domctl.h    | 10 +++++++++-
>   xen/include/xen/llc-coloring.h |  3 +++
>   4 files changed, 40 insertions(+), 1 deletion(-)
> 
> diff --git a/xen/arch/arm/llc-coloring.c b/xen/arch/arm/llc-coloring.c
> index 5ce58aba70..a08614ec36 100644
> --- a/xen/arch/arm/llc-coloring.c
> +++ b/xen/arch/arm/llc-coloring.c
> @@ -9,6 +9,7 @@
>    *    Carlo Nonato <carlo.nonato@minervasys.tech>
>    */
>   #include <xen/errno.h>
> +#include <xen/guest_access.h>
>   #include <xen/keyhandler.h>
>   #include <xen/llc-coloring.h>
>   #include <xen/param.h>
> @@ -278,6 +279,22 @@ int dom0_set_llc_colors(struct domain *d)
>       return domain_check_colors(d);
>   }
>   
> +int domain_set_llc_colors_domctl(struct domain *d,
> +                                 const struct xen_domctl_set_llc_colors *config)
> +{
> +    if ( d->num_llc_colors )
> +        return -EEXIST;
> +
> +    if ( domain_alloc_colors(d, config->num_llc_colors) )

domain_alloc_colors() doesn't sanity check config->num_llc_colors before 
allocating the array. You want a check the size before so we would not 
try to allocate an arbitrary amount of memory.

> +        return -ENOMEM;
> +
> +    if ( copy_from_guest(d->llc_colors, config->llc_colors,
> +                         config->num_llc_colors) )
> +        return -EFAULT;
> +
> +    return domain_check_colors(d);
> +}
> +
>   /*
>    * Local variables:
>    * mode: C
> diff --git a/xen/common/domctl.c b/xen/common/domctl.c
> index f5a71ee5f7..b6867d0602 100644
> --- a/xen/common/domctl.c
> +++ b/xen/common/domctl.c
> @@ -8,6 +8,7 @@
>   
>   #include <xen/types.h>
>   #include <xen/lib.h>
> +#include <xen/llc-coloring.h>
>   #include <xen/err.h>
>   #include <xen/mm.h>
>   #include <xen/sched.h>
> @@ -858,6 +859,16 @@ long do_domctl(XEN_GUEST_HANDLE_PARAM(xen_domctl_t) u_domctl)
>                   __HYPERVISOR_domctl, "h", u_domctl);
>           break;
>   
> +    case XEN_DOMCTL_set_llc_colors:
> +        if ( !llc_coloring_enabled )
> +            break;
> +
> +        ret = domain_set_llc_colors_domctl(d, &op->u.set_llc_colors);
> +        if ( ret == -EEXIST )
> +            printk(XENLOG_ERR
> +                   "Can't set LLC colors on an already created domain\n");

To me, the message doesn't match the check in 
domain_set_llc_colors_domctl(). But I think you want to check that no 
memory was yet allocated to the domain. Otherwise, you coloring will be 
wrong.

Also, it is a bit unclear why you print a message for -EEXIST but not 
the others. In this instance, I would consider to print nothing at all.

> +        break;
> +
>       default:
>           ret = arch_do_domctl(op, d, u_domctl);
>           break;
> diff --git a/xen/include/public/domctl.h b/xen/include/public/domctl.h
> index a33f9ec32b..2b12069294 100644
> --- a/xen/include/public/domctl.h
> +++ b/xen/include/public/domctl.h
> @@ -21,7 +21,7 @@
>   #include "hvm/save.h"
>   #include "memory.h"
>   
> -#define XEN_DOMCTL_INTERFACE_VERSION 0x00000016
> +#define XEN_DOMCTL_INTERFACE_VERSION 0x00000017
>   
>   /*
>    * NB. xen_domctl.domain is an IN/OUT parameter for this operation.
> @@ -1190,6 +1190,12 @@ struct xen_domctl_vmtrace_op {
>   typedef struct xen_domctl_vmtrace_op xen_domctl_vmtrace_op_t;
>   DEFINE_XEN_GUEST_HANDLE(xen_domctl_vmtrace_op_t);
>   
> +struct xen_domctl_set_llc_colors {
> +    /* IN LLC coloring parameters */
> +    unsigned int num_llc_colors;

I think there will be a padding here. So can you make it explicit?

> +    XEN_GUEST_HANDLE_64(uint) llc_colors;
> +};
> +
>   struct xen_domctl {
>       uint32_t cmd;
>   #define XEN_DOMCTL_createdomain                   1
> @@ -1277,6 +1283,7 @@ struct xen_domctl {
>   #define XEN_DOMCTL_vmtrace_op                    84
>   #define XEN_DOMCTL_get_paging_mempool_size       85
>   #define XEN_DOMCTL_set_paging_mempool_size       86
> +#define XEN_DOMCTL_set_llc_colors                87
>   #define XEN_DOMCTL_gdbsx_guestmemio            1000
>   #define XEN_DOMCTL_gdbsx_pausevcpu             1001
>   #define XEN_DOMCTL_gdbsx_unpausevcpu           1002
> @@ -1339,6 +1346,7 @@ struct xen_domctl {
>           struct xen_domctl_vuart_op          vuart_op;
>           struct xen_domctl_vmtrace_op        vmtrace_op;
>           struct xen_domctl_paging_mempool    paging_mempool;
> +        struct xen_domctl_set_llc_colors    set_llc_colors;
>           uint8_t                             pad[128];
>       } u;
>   };
> diff --git a/xen/include/xen/llc-coloring.h b/xen/include/xen/llc-coloring.h
> index cedd97d4b5..fa2edc8ad8 100644
> --- a/xen/include/xen/llc-coloring.h
> +++ b/xen/include/xen/llc-coloring.h
> @@ -33,6 +33,9 @@ extern bool llc_coloring_enabled;
>   void domain_llc_coloring_free(struct domain *d);
>   void domain_dump_llc_colors(struct domain *d);
>   
> +int domain_set_llc_colors_domctl(struct domain *d,
> +                                 const struct xen_domctl_set_llc_colors *config);
> +
>   #endif /* __COLORING_H__ */
>   
>   /*

Cheers,

-- 
Julien Grall


From xen-devel-bounces@lists.xenproject.org Fri Jan 05 17:38:19 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 05 Jan 2024 17:38:19 +0000
Received: from list by lists.xenproject.org with outflank-mailman.662277.1032328 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLo98-0000Oo-MF; Fri, 05 Jan 2024 17:38:14 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 662277.1032328; Fri, 05 Jan 2024 17:38:14 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLo98-0000Oh-J6; Fri, 05 Jan 2024 17:38:14 +0000
Received: by outflank-mailman (input) for mailman id 662277;
 Fri, 05 Jan 2024 17:38:13 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>) id 1rLo97-0000Ob-Lx
 for xen-devel@lists.xenproject.org; Fri, 05 Jan 2024 17:38:13 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rLo97-0003YP-2h; Fri, 05 Jan 2024 17:38:13 +0000
Received: from [54.239.6.189] (helo=[192.168.15.166])
 by xenbits.xenproject.org with esmtpsa
 (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rLo96-0007ic-Qf; Fri, 05 Jan 2024 17:38:12 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
	s=20200302mail; h=Content-Transfer-Encoding:Content-Type:In-Reply-To:From:
	References:Cc:To:Subject:MIME-Version:Date:Message-ID;
	bh=kf6T5i3vYgPyaEsZYkQZj+k2CJJCYSvVE8T0mj/9WPw=; b=ugOSRZiQSfQgIr+lDbACIeCUWQ
	RTn02WPN1OWVmRMebdU+0KRBPRWz0WNITKiD9/kBaoGllMQ1Ji7Uwxk33vxO02nPuSUlJUWBLrum/
	2ZfAj9FQ2fOzFr0ldjGeXml+l5x7tpHU1DErGNYoQHg1USjBOTcYGqbPAc0LvGe8Q39A=;
Message-ID: <849b166d-a1a1-407e-8a9c-e0beac6ee955@xen.org>
Date: Fri, 5 Jan 2024 17:38:10 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v5 06/13] xen/arm: add support for cache coloring
 configuration via device-tree
Content-Language: en-GB
To: Carlo Nonato <carlo.nonato@minervasys.tech>,
 xen-devel@lists.xenproject.org
Cc: Stefano Stabellini <sstabellini@kernel.org>,
 Bertrand Marquis <bertrand.marquis@arm.com>,
 Michal Orzel <michal.orzel@amd.com>,
 Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
 Marco Solieri <marco.solieri@minervasys.tech>
References: <20240102095138.17933-1-carlo.nonato@minervasys.tech>
 <20240102095138.17933-7-carlo.nonato@minervasys.tech>
From: Julien Grall <julien@xen.org>
In-Reply-To: <20240102095138.17933-7-carlo.nonato@minervasys.tech>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

Hi Carlo,

On 02/01/2024 09:51, Carlo Nonato wrote:
> This commit adds the "llc-colors" Device Tree attribute that can be used
> for DomUs and Dom0less color configurations. The syntax is the same used
> for every color config.
> 
> Based on original work from: Luca Miccio <lucmiccio@gmail.com>
> 
> Signed-off-by: Carlo Nonato <carlo.nonato@minervasys.tech>
> Signed-off-by: Marco Solieri <marco.solieri@minervasys.tech>
> ---
> v5:
> - static-mem check has been moved in a previous patch
> - added domain_set_llc_colors_from_str() to set colors after domain creation
> ---
>   docs/misc/arm/cache-coloring.rst        | 48 ++++++++++++++++++++++++-
>   docs/misc/arm/device-tree/booting.txt   |  4 +++
>   xen/arch/arm/dom0less-build.c           | 13 +++++++
>   xen/arch/arm/include/asm/llc-coloring.h |  1 +
>   xen/arch/arm/llc-coloring.c             | 17 +++++++++
>   5 files changed, 82 insertions(+), 1 deletion(-)
> 
> diff --git a/docs/misc/arm/cache-coloring.rst b/docs/misc/arm/cache-coloring.rst
> index acf82c3df8..ae1dd8f4af 100644
> --- a/docs/misc/arm/cache-coloring.rst
> +++ b/docs/misc/arm/cache-coloring.rst
> @@ -10,7 +10,7 @@ If needed, change the maximum number of colors with
>   ``CONFIG_NR_LLC_COLORS=<n>``.
>   
>   Compile Xen and the toolstack and then configure it via
> -`Command line parameters`_.
> +`Command line parameters`_. For DomUs follow `DomUs configuration`_.
>   
>   Background
>   **********
> @@ -114,6 +114,52 @@ Examples:
>   | 0                 | [0]                         |
>   +-------------------+-----------------------------+
>   
> +DomUs configuration
> +*******************
> +
> +DomUs colors can be set via Device Tree, also for Dom0less configurations
> +(documentation at `docs/misc/arm/device-tree/booting.txt`) using the
> +``llc-colors`` option. For example:
> +
> +::
> +
> +    xen,xen-bootargs = "console=dtuart dtuart=serial0 dom0_mem=1G dom0_max_vcpus=1 sched=null llc-coloring=on llc-way-size=64K dom0-llc-colors=2-6";
> +    xen,dom0-bootargs "console=hvc0 earlycon=xen earlyprintk=xen root=/dev/ram0"
> +
> +    dom0 {
> +        compatible = "xen,linux-zimage" "xen,multiboot-module";
> +        reg = <0x0 0x1000000 0x0 15858176>;
> +    };
> +
> +    dom0-ramdisk {
> +        compatible = "xen,linux-initrd" "xen,multiboot-module";
> +        reg = <0x0 0x2000000 0x0 20638062>;
> +    };
> +
> +    domU0 {
> +        #address-cells = <0x1>;
> +        #size-cells = <0x1>;
> +        compatible = "xen,domain";
> +        memory = <0x0 0x40000>;
> +        llc-colors = "4-8,10,11,12";
> +        cpus = <0x1>;
> +        vpl011 = <0x1>;
> +
> +        module@2000000 {
> +            compatible = "multiboot,kernel", "multiboot,module";
> +            reg = <0x2000000 0xffffff>;
> +            bootargs = "console=ttyAMA0";
> +        };
> +
> +        module@30000000 {
> +            compatible = "multiboot,ramdisk", "multiboot,module";
> +            reg = <0x3000000 0xffffff>;
> +        };
> +    };
> +
> +**Note:** If no color configuration is provided for a domain, the default one,
> +which corresponds to all available colors, is used instead.

Looking at your code, it will use *all* the colors. Some of the colors 
might have been assigned to a domain. I am not entirely convinced this 
is good idea to allow this as a default setup.


> +
>   Known issues and limitations
>   ****************************
>   
> diff --git a/docs/misc/arm/device-tree/booting.txt b/docs/misc/arm/device-tree/booting.txt
> index bbd955e9c2..e9f9862e9c 100644
> --- a/docs/misc/arm/device-tree/booting.txt
> +++ b/docs/misc/arm/device-tree/booting.txt
> @@ -162,6 +162,10 @@ with the following properties:
>   
>       An integer specifying the number of vcpus to allocate to the guest.
>   
> +- llc-colors
> +    A string specifying the LLC color configuration for the guest.
> +    Refer to "docs/misc/arm/cache_coloring.rst" for syntax.
> +
>   - vpl011
>   
>       An empty property to enable/disable a virtual pl011 for the guest to
> diff --git a/xen/arch/arm/dom0less-build.c b/xen/arch/arm/dom0less-build.c
> index 1142f7f74a..eb39f5291f 100644
> --- a/xen/arch/arm/dom0less-build.c
> +++ b/xen/arch/arm/dom0less-build.c
> @@ -850,6 +850,7 @@ void __init create_domUs(void)
>       struct dt_device_node *node;
>       const struct dt_device_node *cpupool_node,
>                                   *chosen = dt_find_node_by_path("/chosen");
> +    const char *llc_colors_str = NULL;
>   
>       BUG_ON(chosen == NULL);
>       dt_for_each_child_node(chosen, node)
> @@ -993,6 +994,13 @@ void __init create_domUs(void)
>   #endif
>           }
>   
> +        dt_property_read_string(node, "llc-colors", &llc_colors_str);
> +        if ( llc_coloring_enabled && !llc_colors_str )
> +            panic("'llc-colors' is required when LLC coloring is enabled\n");

In the documentation you wrote:

"**Note:** If no color configuration is provided for a domain, the 
default one,which corresponds to all available colors, is used instead."

I interpret as you want to continue rather than panic-ing. That said, I 
much prefer the panic version.

> +        else if ( !llc_coloring_enabled && llc_colors_str)
> +            printk(XENLOG_WARNING
> +                   "'llc-colors' found, but LLC coloring is disabled\n");
> +
>           /*
>            * The variable max_init_domid is initialized with zero, so here it's
>            * very important to use the pre-increment operator to call
> @@ -1003,6 +1011,11 @@ void __init create_domUs(void)
>               panic("Error creating domain %s (rc = %ld)\n",
>                     dt_node_name(node), PTR_ERR(d));
>   
> +        if ( llc_coloring_enabled &&
> +             (rc = domain_set_llc_colors_from_str(d, llc_colors_str)) )
> +            panic("Error initializing LLC coloring for domain %s (rc = %d)\n",
> +                  dt_node_name(node), rc);
> +
>           d->is_console = true;
>           dt_device_set_used_by(node, d->domain_id);
>   
> diff --git a/xen/arch/arm/include/asm/llc-coloring.h b/xen/arch/arm/include/asm/llc-coloring.h
> index ee5551e3cc..5f9b0a8121 100644
> --- a/xen/arch/arm/include/asm/llc-coloring.h
> +++ b/xen/arch/arm/include/asm/llc-coloring.h
> @@ -15,6 +15,7 @@
>   
>   bool __init llc_coloring_init(void);
>   int dom0_set_llc_colors(struct domain *d);
> +int domain_set_llc_colors_from_str(struct domain *d, const char *str);
>   
>   #endif /* __ASM_ARM_COLORING_H__ */
>   
> diff --git a/xen/arch/arm/llc-coloring.c b/xen/arch/arm/llc-coloring.c
> index a08614ec36..d3de5f14cb 100644
> --- a/xen/arch/arm/llc-coloring.c
> +++ b/xen/arch/arm/llc-coloring.c
> @@ -295,6 +295,23 @@ int domain_set_llc_colors_domctl(struct domain *d,
>       return domain_check_colors(d);
>   }
>   
> +int domain_set_llc_colors_from_str(struct domain *d, const char *str)
> +{
> +    int err;
> +
> +    if ( domain_alloc_colors(d, nr_colors) )

This code is somewhat confusing and would deserve some explanation. 
AFAICT, you are allocating a large array because parse_color_config() 
expects an array of nr_colors.

d->num_llc_colors will also be set to nr_colors but then overriden by 
parse_color_config().

It feels to me that maybe set num_llc_colors() in domain_alloc_colors() 
is not right.

> +        return -ENOMEM;
> +
> +    err = parse_color_config(str, d->llc_colors, &d->num_llc_colors);
> +    if ( err )
> +    {
> +        printk(XENLOG_ERR "Error parsing LLC color configuration.");
> +        return err;
> +    }
> +
> +    return domain_check_colors(d);
> +}
> +
>   /*
>    * Local variables:
>    * mode: C

Cheers,

-- 
Julien Grall


From xen-devel-bounces@lists.xenproject.org Fri Jan 05 17:44:18 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 05 Jan 2024 17:44:18 +0000
Received: from list by lists.xenproject.org with outflank-mailman.662284.1032339 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLoEw-0003Fp-F0; Fri, 05 Jan 2024 17:44:14 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 662284.1032339; Fri, 05 Jan 2024 17:44:14 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLoEw-0003Fi-BA; Fri, 05 Jan 2024 17:44:14 +0000
Received: by outflank-mailman (input) for mailman id 662284;
 Fri, 05 Jan 2024 17:44:13 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>) id 1rLoEv-0003Fc-D9
 for xen-devel@lists.xenproject.org; Fri, 05 Jan 2024 17:44:13 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rLoEu-0003jX-GE; Fri, 05 Jan 2024 17:44:12 +0000
Received: from [54.239.6.189] (helo=[192.168.15.166])
 by xenbits.xenproject.org with esmtpsa
 (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rLoEu-00084K-7C; Fri, 05 Jan 2024 17:44:12 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
	s=20200302mail; h=Content-Transfer-Encoding:Content-Type:In-Reply-To:From:
	References:Cc:To:Subject:MIME-Version:Date:Message-ID;
	bh=snDLMfYxl5ayrer8vruM9ZaCXAsIDpjf5hiwth4ksEU=; b=PU75kD94Z+maSDn2E2zG/V5idi
	bAIrpaA7ERSDuqBrqvABIcdsgVNlkXBKhL0asjYwTUANT254W0Kh3j2H7vJiOievAeKaU+eYdV4M/
	fVxGQVvyiOBSDtPJpyvVctyrDFM+6/ycuhFWXuiU+aH5wrDvvuoi9RRg51eoZkK+sSpM=;
Message-ID: <6916e8d4-b528-4fa4-b5ac-403b6632b6dd@xen.org>
Date: Fri, 5 Jan 2024 17:44:09 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v5 02/13] xen/arm: add cache coloring initialization
Content-Language: en-GB
To: Carlo Nonato <carlo.nonato@minervasys.tech>
Cc: xen-devel@lists.xenproject.org,
 Stefano Stabellini <sstabellini@kernel.org>,
 Bertrand Marquis <bertrand.marquis@arm.com>,
 Michal Orzel <michal.orzel@amd.com>,
 Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
 Andrew Cooper <andrew.cooper3@citrix.com>,
 George Dunlap <george.dunlap@citrix.com>, Jan Beulich <jbeulich@suse.com>,
 Wei Liu <wl@xen.org>, Marco Solieri <marco.solieri@minervasys.tech>
References: <20240102095138.17933-1-carlo.nonato@minervasys.tech>
 <20240102095138.17933-3-carlo.nonato@minervasys.tech>
 <5eb9fa24-c95e-4ea0-84ef-be74c629c106@xen.org>
 <CAG+AhRW5Xxy7BHVhmfkBqbdeKqRz7E1Mrc7wNv6F+ecM4P_QPw@mail.gmail.com>
From: Julien Grall <julien@xen.org>
In-Reply-To: <CAG+AhRW5Xxy7BHVhmfkBqbdeKqRz7E1Mrc7wNv6F+ecM4P_QPw@mail.gmail.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit

Hi Carlo,

On 05/01/2024 16:34, Carlo Nonato wrote:
> On Thu, Jan 4, 2024 at 8:25 PM Julien Grall <julien@xen.org> wrote:
>>
>> Hi Carlo,
>>
>> On 02/01/2024 09:51, Carlo Nonato wrote:
>>> This commit implements functions declared in the LLC coloring common header
>>> for arm64 and adds documentation. It also adds two command line options: a
>>> runtime switch for the cache coloring feature and the LLC way size
>>> parameter.
>>>
>>> The feature init function consists of an auto probing of the cache layout
>>> necessary to retrieve the LLC way size which is used to compute the number
>>> of platform colors. It also adds a debug-key to dump general cache coloring
>>> info.
>>>
>>> Static memory allocation and cache coloring are incompatible because static
>>> memory can't be guaranteed to use only colors assigned to the domain.
>>> Panic during domUs creation when both are enabled.
>>>
>>> Based on original work from: Luca Miccio <lucmiccio@gmail.com>
>>>
>>> Signed-off-by: Carlo Nonato <carlo.nonato@minervasys.tech>
>>> Signed-off-by: Marco Solieri <marco.solieri@minervasys.tech>
>>> ---
>>> v5:
>>> - used - instead of _ for filenames
>>> - moved static-mem check in this patch
>>> - moved dom0 colors parsing in next patch
>>> - moved color allocation and configuration in next patch
>>> - moved check_colors() in next patch
>>> - colors are now printed in short form
>>> v4:
>>> - added "llc-coloring" cmdline option for the boot-time switch
>>> - dom0 colors are now checked during domain init as for any other domain
>>> - fixed processor.h masks bit width
>>> - check for overflow in parse_color_config()
>>> - check_colors() now checks also that colors are sorted and unique
>>> ---
>>>    docs/misc/arm/cache-coloring.rst        |  97 ++++++++++++++
>>>    docs/misc/xen-command-line.pandoc       |  28 +++++
>>>    xen/arch/arm/Kconfig                    |   1 +
>>>    xen/arch/arm/Makefile                   |   1 +
>>>    xen/arch/arm/dom0less-build.c           |   6 +
>>>    xen/arch/arm/include/asm/llc-coloring.h |  28 +++++
>>>    xen/arch/arm/include/asm/processor.h    |  16 +++
>>>    xen/arch/arm/llc-coloring.c             | 161 ++++++++++++++++++++++++
>>>    xen/arch/arm/setup.c                    |   7 ++
>>>    9 files changed, 345 insertions(+)
>>>    create mode 100644 docs/misc/arm/cache-coloring.rst
>>>    create mode 100644 xen/arch/arm/include/asm/llc-coloring.h
>>>    create mode 100644 xen/arch/arm/llc-coloring.c
>>>
>>> diff --git a/docs/misc/arm/cache-coloring.rst b/docs/misc/arm/cache-coloring.rst
>>> new file mode 100644
>>> index 0000000000..eabf8f5d1b
>>> --- /dev/null
>>> +++ b/docs/misc/arm/cache-coloring.rst
>>> @@ -0,0 +1,97 @@
>>> +Xen cache coloring user guide
>>> +=============================
>>> +
>>> +The cache coloring support in Xen allows to reserve Last Level Cache (LLC)
>>> +partitions for Dom0, DomUs and Xen itself. Currently only ARM64 is supported.
>>> +
>>> +To compile LLC coloring support set ``CONFIG_LLC_COLORING=y``.
>>> +
>>> +If needed, change the maximum number of colors with
>>> +``CONFIG_NR_LLC_COLORS=<n>``.
>>> +
>>> +Compile Xen and the toolstack and then configure it via
>>> +`Command line parameters`_.
>>> +
>>> +Background
>>> +**********
>>> +
>>> +Cache hierarchy of a modern multi-core CPU typically has first levels dedicated
>>> +to each core (hence using multiple cache units), while the last level is shared
>>> +among all of them. Such configuration implies that memory operations on one
>>> +core (e.g. running a DomU) are able to generate interference on another core
>>> +(e.g .hosting another DomU). Cache coloring allows eliminating this
>>> +mutual interference, and thus guaranteeing higher and more predictable
>>> +performances for memory accesses.
>>> +The key concept underlying cache coloring is a fragmentation of the memory
>>> +space into a set of sub-spaces called colors that are mapped to disjoint cache
>>> +partitions. Technically, the whole memory space is first divided into a number
>>> +of subsequent regions. Then each region is in turn divided into a number of
>>> +subsequent sub-colors. The generic i-th color is then obtained by all the
>>> +i-th sub-colors in each region.
>>> +
>>> +::
>>> +
>>> +                            Region j            Region j+1
>>> +                .....................   ............
>>> +                .                     . .
>>> +                .                       .
>>> +            _ _ _______________ _ _____________________ _ _
>>> +                |     |     |     |     |     |     |
>>> +                | c_0 | c_1 |     | c_n | c_0 | c_1 |
>>> +           _ _ _|_____|_____|_ _ _|_____|_____|_____|_ _ _
>>> +                    :                       :
>>> +                    :                       :...         ... .
>>> +                    :                            color 0
>>> +                    :...........................         ... .
>>> +                                                :
>>> +          . . ..................................:
>>> +
>>> +There are two pragmatic lesson to be learnt.
>>> +
>>> +1. If one wants to avoid cache interference between two domains, different
>>> +   colors needs to be used for their memory.
>>> +
>>> +2. Color assignment must privilege contiguity in the partitioning. E.g.,
>>> +   assigning colors (0,1) to domain I  and (2,3) to domain  J is better than
>>> +   assigning colors (0,2) to I and (1,3) to J.
>>> +
>>> +How to compute the number of colors
>>> +***********************************
>>> +
>>> +To compute the number of available colors for a specific platform, the size of
>>> +an LLC way and the page size used by Xen must be known.
>>
>> Looking at the get_llc_way_size(), you are using CLIDR_EL1 which doesn't
>> contains the system caches. They are invisible to the software but I
>> guess could have an impact for cache coloring.
>>
>> Can you clarify if by Last Cache Level, you mean the last visible cache?
> 
> We are targeting only Cortex-A53, A57 and A72 where the "last level" is L2.
> This "generic" approach for last level computation is inevitably problematic,
> but I think that defining it as the last visible cache is the best thing we
> can do. Remember also that this computation is overridable with the
> appropriate command line parameter, so it's still possible to target
> cache architectures that aren't discovered by this code (which are rare cases
> since cache-coloring is already a small niche).

I understand that and I don't mind which definition is chosen. I just 
want the documentation to be clear enough so there is little to no 
interpretation left.

[...]

>>> +    {
>>> +        printk(XENLOG_ERR "Number of LLC colors (%u) not in range [2, %u]\n",
>>> +               nr_colors, CONFIG_NR_LLC_COLORS);
>>> +        return false;
>>> +    }
>>> +
>>> +    register_keyhandler('K', dump_coloring_info, "dump LLC coloring info", 1);
>>> +
>>> +    return true;
>>> +}
>>> +
>>> +void domain_llc_coloring_free(struct domain *d)
>>> +{
>>> +    xfree(d->llc_colors);
>>> +}
>>> +
>>> +void domain_dump_llc_colors(struct domain *d)
>>> +{
>>> +    printk("Domain %pd has %u LLC colors: ", d, d->num_llc_colors);
>>> +    print_colors(d->llc_colors, d->num_llc_colors);
>>> +}
>>> +
>>> +/*
>>> + * Local variables:
>>> + * mode: C
>>> + * c-file-style: "BSD"
>>> + * c-basic-offset: 4
>>> + * tab-width: 4
>>> + * indent-tabs-mode: nil
>>> + * End:
>>> + */
>>> diff --git a/xen/arch/arm/setup.c b/xen/arch/arm/setup.c
>>> index 59dd9bb25a..4c16b566db 100644
>>> --- a/xen/arch/arm/setup.c
>>> +++ b/xen/arch/arm/setup.c
>>> @@ -12,6 +12,7 @@
>>>    #include <xen/device_tree.h>
>>>    #include <xen/domain_page.h>
>>>    #include <xen/grant_table.h>
>>> +#include <xen/llc-coloring.h>
>>>    #include <xen/types.h>
>>>    #include <xen/string.h>
>>>    #include <xen/serial.h>
>>> @@ -746,6 +747,12 @@ void asmlinkage __init start_xen(unsigned long boot_phys_offset,
>>>        printk("Command line: %s\n", cmdline);
>>>        cmdline_parse(cmdline);
>>>
>>> +    if ( llc_coloring_enabled )
>>
>> I would consider to move llc_coloring_enabled in llc_coloring_init().
>> But if you prefer to keep the check here, then I would at least request
>> to merge the two ifs. I.e.
>>
>> if ( llc_coloring_enabled && !llc_coloring_init() )
>>
>> That said...
>>
>>> +    {
>>> +        if ( !llc_coloring_init() )
>>> +            panic("Xen LLC coloring support: setup failed\n");
>>> +    }
>>> +
>>>        setup_mm();
>>
>> ... shouldn't the coloring happen in setup_mm()? After all, this is part
>> of the memory subystem and I suspect this will not work with the
>> upcoming MPU support.
> 
> Coloring initialization must happen before setup_pagetables() otherwise it
> isn't possible to color the hypervisor code. In later patches
> setup_pagetables() is moved after coloring init so I don't think it would
> make sense to have it in setup_mm().

If you decide to move setup_page_tables() just close to setup_mm(). 
Then, I think the call should be moved to setup_mm().

I will have a look at the rest of the series and come back to this point.

Cheers,

-- 
Julien Grall


From xen-devel-bounces@lists.xenproject.org Fri Jan 05 17:50:25 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 05 Jan 2024 17:50:25 +0000
Received: from list by lists.xenproject.org with outflank-mailman.662288.1032348 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLoKo-0005Bu-2M; Fri, 05 Jan 2024 17:50:18 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 662288.1032348; Fri, 05 Jan 2024 17:50:18 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLoKn-0005Bn-Vv; Fri, 05 Jan 2024 17:50:17 +0000
Received: by outflank-mailman (input) for mailman id 662288;
 Fri, 05 Jan 2024 17:50:16 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>) id 1rLoKm-0005AO-Jh
 for xen-devel@lists.xenproject.org; Fri, 05 Jan 2024 17:50:16 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rLoKl-0003qm-Ol; Fri, 05 Jan 2024 17:50:15 +0000
Received: from [54.239.6.189] (helo=[192.168.15.166])
 by xenbits.xenproject.org with esmtpsa
 (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rLoKl-0008Bp-IL; Fri, 05 Jan 2024 17:50:15 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
	s=20200302mail; h=Content-Transfer-Encoding:Content-Type:In-Reply-To:From:
	References:Cc:To:Subject:MIME-Version:Date:Message-ID;
	bh=F4FTVQ/CdV6mHXOiwbPqgQWqm1MO1+0VFe3vv1C2vCs=; b=IubX9K25POrmkEtG609NfoqUGB
	mXgnKhfTatSG2w9PZhaBKpq68deshsO7Dwk+RmTb6c24q6ft32mtPR9N/EmlJueq+zmES9/pxXt2c
	IaV8eQx4/ZllApUtdefURDUUk3NRLu353BA6pDYtBQF5It5eCRZy7BNK5n8jgwn3Tfvo=;
Message-ID: <0905b0f4-9a5e-48c7-8764-58cdd440130f@xen.org>
Date: Fri, 5 Jan 2024 17:50:13 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v5 03/13] xen/arm: add Dom0 cache coloring support
Content-Language: en-GB
To: Carlo Nonato <carlo.nonato@minervasys.tech>
Cc: xen-devel@lists.xenproject.org,
 Stefano Stabellini <sstabellini@kernel.org>,
 Bertrand Marquis <bertrand.marquis@arm.com>,
 Michal Orzel <michal.orzel@amd.com>,
 Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
 Andrew Cooper <andrew.cooper3@citrix.com>,
 George Dunlap <george.dunlap@citrix.com>, Jan Beulich <jbeulich@suse.com>,
 Wei Liu <wl@xen.org>, Marco Solieri <marco.solieri@minervasys.tech>
References: <20240102095138.17933-1-carlo.nonato@minervasys.tech>
 <20240102095138.17933-4-carlo.nonato@minervasys.tech>
 <046e9949-d126-42b1-90a6-12af540d63bf@xen.org>
 <CAG+AhRWm4N7GV3HfkTNCvXQw7-6Woq=+zBqdHAgN=-PgGr-WRg@mail.gmail.com>
From: Julien Grall <julien@xen.org>
In-Reply-To: <CAG+AhRWm4N7GV3HfkTNCvXQw7-6Woq=+zBqdHAgN=-PgGr-WRg@mail.gmail.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit



On 05/01/2024 16:52, Carlo Nonato wrote:
> Hi Julien,
> 
> On Thu, Jan 4, 2024 at 8:54 PM Julien Grall <julien@xen.org> wrote:
>>
>> Hi Carlo,
>>
>> On 02/01/2024 09:51, Carlo Nonato wrote:
>>> This commit allows the user to set the cache coloring configuration for
>>> Dom0 via a command line parameter.
>>> Since cache coloring and static memory are incompatible, direct mapping
>>> Dom0 isn't possible when coloring is enabled.
>>>
>>> A common configuration syntax for cache colors is also introduced.
>>>
>>> Based on original work from: Luca Miccio <lucmiccio@gmail.com>
>>>
>>> Signed-off-by: Carlo Nonato <carlo.nonato@minervasys.tech>
>>> Signed-off-by: Marco Solieri <marco.solieri@minervasys.tech>
>>> ---
>>> v5:
>>> - Carlo Nonato as the new author
>>> - moved dom0 colors parsing (parse_colors()) in this patch
>>> - added dom0_set_llc_colors() to set dom0 colors after creation
>>> - moved color allocation and checking in this patch
>>> - error handling when allocating color arrays
>>> - FIXME: copy pasted allocate_memory() cause it got moved
>>> v4:
>>> - dom0 colors are dynamically allocated as for any other domain
>>>     (colors are duplicated in dom0_colors and in the new array, but logic
>>>     is simpler)
>>> ---
>>>    docs/misc/arm/cache-coloring.rst        |  29 ++++++
>>>    docs/misc/xen-command-line.pandoc       |   9 ++
>>>    xen/arch/arm/domain_build.c             |  60 ++++++++++-
>>>    xen/arch/arm/include/asm/llc-coloring.h |   1 +
>>>    xen/arch/arm/llc-coloring.c             | 128 ++++++++++++++++++++++++
>>>    5 files changed, 224 insertions(+), 3 deletions(-)
>>>
>>> diff --git a/docs/misc/arm/cache-coloring.rst b/docs/misc/arm/cache-coloring.rst
>>> index eabf8f5d1b..acf82c3df8 100644
>>> --- a/docs/misc/arm/cache-coloring.rst
>>> +++ b/docs/misc/arm/cache-coloring.rst
>>> @@ -84,6 +84,35 @@ More specific documentation is available at `docs/misc/xen-command-line.pandoc`.
>>>    +----------------------+-------------------------------+
>>>    | ``llc-way-size``     | set the LLC way size          |
>>>    +----------------------+-------------------------------+
>>> +| ``dom0-llc-colors``  | Dom0 color configuration      |
>>> ++----------------------+-------------------------------+
>>> +
>>> +Colors selection format
>>> +***********************
>>> +
>>> +Regardless of the memory pool that has to be colored (Xen, Dom0/DomUs),
>>> +the color selection can be expressed using the same syntax. In particular a
>>> +comma-separated list of colors or ranges of colors is used.
>>> +Ranges are hyphen-separated intervals (such as `0-4`) and are inclusive on both
>>> +sides.
>>> +
>>> +Note that:
>>> +
>>> +- no spaces are allowed between values.
>>> +- no overlapping ranges or duplicated colors are allowed.
>>> +- values must be written in ascending order.
>>> +
>>> +Examples:
>>> +
>>> ++-------------------+-----------------------------+
>>> +| **Configuration** | **Actual selection**        |
>>> ++-------------------+-----------------------------+
>>> +| 1-2,5-8           | [1, 2, 5, 6, 7, 8]          |
>>> ++-------------------+-----------------------------+
>>> +| 4-8,10,11,12      | [4, 5, 6, 7, 8, 10, 11, 12] |
>>> ++-------------------+-----------------------------+
>>> +| 0                 | [0]                         |
>>> ++-------------------+-----------------------------+
>>>
>>>    Known issues and limitations
>>>    ****************************
>>> diff --git a/docs/misc/xen-command-line.pandoc b/docs/misc/xen-command-line.pandoc
>>> index 22d2d5b6cf..51f6adf035 100644
>>> --- a/docs/misc/xen-command-line.pandoc
>>> +++ b/docs/misc/xen-command-line.pandoc
>>> @@ -963,6 +963,15 @@ Controls for the dom0 IOMMU setup.
>>>
>>>    Specify a list of IO ports to be excluded from dom0 access.
>>>
>>> +### dom0-llc-colors (arm64)
>>> +> `= List of [ <integer> | <integer>-<integer> ]`
>>
>> Someone reading only xen-command-line.pandoc would not know how each
>> item of the list is separated. Can this be clarified?
> 
> Isn't it already known that the list is comma separated? It's written at the
> beginning of this file for the "List" type.
> I can also point to cache-coloring documentation if needed.

Ah I forgot that part. Please ignore this comment.

[...]

>>> +                return -EINVAL;
>>> +            for ( color = start; color <= end; color++ )
>>> +                colors[(*num_colors)++] = color;
>>> +        }
>>> +        else
>>> +            s++;
>>> +    }
>>> +
>>> +    return *s ? -EINVAL : 0;
>>> +}
>>> +
>>> +static int __init parse_dom0_colors(const char *s)
>>> +{
>>> +    return parse_color_config(s, dom0_colors, &dom0_num_colors);
>>> +}
>>> +custom_param("dom0-llc-colors", parse_dom0_colors);
>>> +
>>>    /* Return the LLC way size by probing the hardware */
>>>    static unsigned int __init get_llc_way_size(void)
>>>    {
>>> @@ -102,6 +159,28 @@ static void dump_coloring_info(unsigned char key)
>>>        printk("Number of LLC colors supported: %u\n", nr_colors);
>>>    }
>>>
>>> +static bool check_colors(unsigned int *colors, unsigned int num_colors)
>>> +{
>>> +    unsigned int i;
>>> +
>>> +    if ( num_colors > nr_colors )
>>> +    {
>>> +        printk(XENLOG_ERR "Number of LLC colors requested > %u\n", nr_colors);
>>> +        return false;
>>> +    }
>>> +
>>> +    for ( i = 0; i < num_colors; i++ )
>>> +    {
>>> +        if ( colors[i] >= nr_colors )
>>> +        {
>>> +            printk(XENLOG_ERR "LLC color %u >= %u\n", colors[i], nr_colors);
>>> +            return false;
>>> +        }
>>> +    }
>>> +
>>> +    return true;
>>> +}
>>> +
>>>    bool __init llc_coloring_init(void)
>>>    {
>>>        if ( !llc_way_size && !(llc_way_size = get_llc_way_size()) )
>>> @@ -150,6 +229,55 @@ void domain_dump_llc_colors(struct domain *d)
>>>        print_colors(d->llc_colors, d->num_llc_colors);
>>>    }
>>>
>>> +static int domain_alloc_colors(struct domain *d, unsigned int num_colors)
>>> +{
>>> +    d->num_llc_colors = num_colors;
>>
>> Shouldn't this be set *only* after the array was allocated?
> 
> Yes, it works also like I did, but it's cleaner like you said. 

Actually, looking at the rest of the code. I think  d->num_llc_colors 
should be set outside of domain_alloc_colors().

One of the reason is at least in the dom0less case, you will override 
the value afterwards.

Cheers,

-- 
Julien Grall


From xen-devel-bounces@lists.xenproject.org Fri Jan 05 17:54:21 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 05 Jan 2024 17:54:21 +0000
Received: from list by lists.xenproject.org with outflank-mailman.662292.1032359 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLoOh-00065L-II; Fri, 05 Jan 2024 17:54:19 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 662292.1032359; Fri, 05 Jan 2024 17:54:19 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLoOh-00065E-Ec; Fri, 05 Jan 2024 17:54:19 +0000
Received: by outflank-mailman (input) for mailman id 662292;
 Fri, 05 Jan 2024 17:54:18 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>) id 1rLoOf-000658-W7
 for xen-devel@lists.xenproject.org; Fri, 05 Jan 2024 17:54:17 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rLoOf-0003wT-J4; Fri, 05 Jan 2024 17:54:17 +0000
Received: from [54.239.6.189] (helo=[192.168.15.166])
 by xenbits.xenproject.org with esmtpsa
 (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rLoOf-0008HP-CP; Fri, 05 Jan 2024 17:54:17 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
	s=20200302mail; h=Content-Transfer-Encoding:Content-Type:In-Reply-To:From:
	References:Cc:To:Subject:MIME-Version:Date:Message-ID;
	bh=S3vmpLQerDH02jHaHA5VMeyjerGjQU61velfKMZwFo0=; b=GEoOIBD0/7/wYxY37WG+9UO69Y
	FHfaLOKT+62pEkc/H8j7Gi+BnXh6IdQ8bGMJaz1cxzVaSgzahypyKE6l7jIj9AsKf6b/Da6hxRDro
	QW5yDGWjKmJFOjBH0yT44lteAuqzwda7DdToWBECf3v3DmKoEhHkNMCirMibWdABg8ec=;
Message-ID: <881bdea6-4d66-49ac-a22c-2142cf447fb6@xen.org>
Date: Fri, 5 Jan 2024 17:54:15 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v5 10/13] xen/arm: use domain memory to allocate p2m page
 tables
Content-Language: en-GB
To: Carlo Nonato <carlo.nonato@minervasys.tech>,
 xen-devel@lists.xenproject.org
Cc: Stefano Stabellini <sstabellini@kernel.org>,
 Bertrand Marquis <bertrand.marquis@arm.com>,
 Michal Orzel <michal.orzel@amd.com>,
 Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
 Marco Solieri <marco.solieri@minervasys.tech>
References: <20240102095138.17933-1-carlo.nonato@minervasys.tech>
 <20240102095138.17933-11-carlo.nonato@minervasys.tech>
From: Julien Grall <julien@xen.org>
In-Reply-To: <20240102095138.17933-11-carlo.nonato@minervasys.tech>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

Hi Carlo,

On 02/01/2024 09:51, Carlo Nonato wrote:
> Cache colored domains can benefit from having p2m page tables allocated
> with the same coloring schema so that isolation can be achieved also for
> those kind of memory accesses.
> In order to do that, the domain struct is passed to the allocator and the
> MEMF_no_owner flag is used.
> 
> This will be useful also when NUMA will be supported on Arm.
> 
> Signed-off-by: Carlo Nonato <carlo.nonato@minervasys.tech>
> Signed-off-by: Marco Solieri <marco.solieri@minervasys.tech>

Acked-by: Julien Grall <julien@xen.org>

Cheers,

-- 
Julien Grall


From xen-devel-bounces@lists.xenproject.org Fri Jan 05 18:00:59 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 05 Jan 2024 18:00:59 +0000
Received: from list by lists.xenproject.org with outflank-mailman.662296.1032368 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLoV3-0007u0-6Z; Fri, 05 Jan 2024 18:00:53 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 662296.1032368; Fri, 05 Jan 2024 18:00:53 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLoV3-0007tt-45; Fri, 05 Jan 2024 18:00:53 +0000
Received: by outflank-mailman (input) for mailman id 662296;
 Fri, 05 Jan 2024 18:00:52 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>) id 1rLoV2-0007tn-E7
 for xen-devel@lists.xenproject.org; Fri, 05 Jan 2024 18:00:52 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rLoV1-0004DU-Te; Fri, 05 Jan 2024 18:00:51 +0000
Received: from [54.239.6.189] (helo=[192.168.15.166])
 by xenbits.xenproject.org with esmtpsa
 (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rLoV1-0000JE-Mf; Fri, 05 Jan 2024 18:00:51 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
	s=20200302mail; h=Content-Transfer-Encoding:Content-Type:In-Reply-To:From:
	References:Cc:To:Subject:MIME-Version:Date:Message-ID;
	bh=R7/oPbFOObvrsFjNmsOK4ipe+8DXTx17VRIvyMPYQw0=; b=W+r2Rf9+Jnno7g/Vcw3ATyB51b
	XcsXcVTb9u1aDu0GsZIhl+8aGh26gqIMQjDYXy6roA9NzVFIyA8kYZZ/Kcp3Jad7qtAU9eEjjJ7OM
	NCkWYOtzq44cQN5aHaC8tdIetYkI0nmGpZGuZEHSpGu6M5gaDC7fOYMNsDw3g/PcpkWM=;
Message-ID: <7e69b9de-8156-4944-87be-207ad79f2df9@xen.org>
Date: Fri, 5 Jan 2024 18:00:49 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v5 12/13] xen/arm: add Xen cache colors command line
 parameter
Content-Language: en-GB
To: Carlo Nonato <carlo.nonato@minervasys.tech>,
 xen-devel@lists.xenproject.org
Cc: Luca Miccio <lucmiccio@gmail.com>,
 Andrew Cooper <andrew.cooper3@citrix.com>,
 George Dunlap <george.dunlap@citrix.com>, Jan Beulich <jbeulich@suse.com>,
 Stefano Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>,
 Bertrand Marquis <bertrand.marquis@arm.com>,
 Michal Orzel <michal.orzel@amd.com>,
 Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
 Marco Solieri <marco.solieri@minervasys.tech>
References: <20240102095138.17933-1-carlo.nonato@minervasys.tech>
 <20240102095138.17933-13-carlo.nonato@minervasys.tech>
From: Julien Grall <julien@xen.org>
In-Reply-To: <20240102095138.17933-13-carlo.nonato@minervasys.tech>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

Hi,

On 02/01/2024 09:51, Carlo Nonato wrote:
> From: Luca Miccio <lucmiccio@gmail.com>
> 
> This commit adds a new command line parameter to configure Xen cache colors.
> These colors can be dumped with the cache coloring info debug-key.
> 
> By default, Xen uses the first color.
> Benchmarking the VM interrupt response time provides an estimation of
> LLC usage by Xen's most latency-critical runtime task. Results on Arm
> Cortex-A53 on Xilinx Zynq UltraScale+ XCZU9EG show that one color, which
> reserves 64 KiB of L2, is enough to attain best responsiveness.

Would you be able to share some numbers? This is quite helpful if in the 
future we need to revise the default.

> 
> More colors are instead very likely to be needed on processors whose L1
> cache is physically-indexed and physically-tagged, such as Cortex-A57.
> In such cases, coloring applies to L1 also, and there typically are two
> distinct L1-colors. Therefore, reserving only one color for Xen would
> senselessly partitions a cache memory that is already private, i.e.
> underutilize it. The default amount of Xen colors is thus set to one.
> 
> Signed-off-by: Luca Miccio <lucmiccio@gmail.com>
> Signed-off-by: Marco Solieri <marco.solieri@minervasys.tech>
> Signed-off-by: Carlo Nonato <carlo.nonato@minervasys.tech>
> ---
>   docs/misc/xen-command-line.pandoc | 10 ++++++++++
>   xen/arch/arm/llc-coloring.c       | 29 +++++++++++++++++++++++++++++
>   2 files changed, 39 insertions(+)
> 
> diff --git a/docs/misc/xen-command-line.pandoc b/docs/misc/xen-command-line.pandoc
> index 163fe7bcb1..f983f22796 100644
> --- a/docs/misc/xen-command-line.pandoc
> +++ b/docs/misc/xen-command-line.pandoc
> @@ -2877,6 +2877,16 @@ mode.
>   **WARNING: `x2apic_phys` is deprecated and superseded by `x2apic-mode`.
>   The latter takes precedence if both are set.**
>   
> +### xen-llc-colors (arm64)
> +> `= List of [ <integer> | <integer>-<integer> ]`
> +
> +> Default: `0: the lowermost color`
> +
> +Specify Xen LLC color configuration. This options is available only when
> +`CONFIG_LLC_COLORING` is enabled.
> +Two colors are most likely needed on platforms where private caches are
> +physically indexed, e.g. the L1 instruction cache of the Arm Cortex-A57.
> +
>   ### xenheap_megabytes (arm32)
>   > `= <size>`
>   
> diff --git a/xen/arch/arm/llc-coloring.c b/xen/arch/arm/llc-coloring.c
> index 526129cc43..99ea69ad39 100644
> --- a/xen/arch/arm/llc-coloring.c
> +++ b/xen/arch/arm/llc-coloring.c
> @@ -18,6 +18,9 @@
>   #include <asm/processor.h>
>   #include <asm/sysregs.h>
>   
> +#define XEN_DEFAULT_COLOR       0
> +#define XEN_DEFAULT_NUM_COLORS  1
> +
>   bool __ro_after_init llc_coloring_enabled;
>   boolean_param("llc-coloring", llc_coloring_enabled);
>   
> @@ -30,6 +33,9 @@ static unsigned int __ro_after_init nr_colors = CONFIG_NR_LLC_COLORS;
>   static unsigned int __ro_after_init dom0_colors[CONFIG_NR_LLC_COLORS];
>   static unsigned int __ro_after_init dom0_num_colors;
>   
> +static unsigned int __ro_after_init xen_colors[CONFIG_NR_LLC_COLORS];
> +static unsigned int __ro_after_init xen_num_colors;
> +
>   #define mfn_color_mask              (nr_colors - 1)
>   #define mfn_to_color(mfn)           (mfn_x(mfn) & mfn_color_mask)
>   
> @@ -87,6 +93,12 @@ static int __init parse_dom0_colors(const char *s)
>   }
>   custom_param("dom0-llc-colors", parse_dom0_colors);
>   
> +static int __init parse_xen_colors(const char *s)
> +{
> +    return parse_color_config(s, xen_colors, &xen_num_colors);
> +}
> +custom_param("xen-llc-colors", parse_xen_colors);
> +
>   /* Return the LLC way size by probing the hardware */
>   static unsigned int __init get_llc_way_size(void)
>   {
> @@ -161,6 +173,8 @@ static void dump_coloring_info(unsigned char key)
>       printk("'%c' pressed -> dumping LLC coloring general info\n", key);
>       printk("LLC way size: %u KiB\n", llc_way_size >> 10);
>       printk("Number of LLC colors supported: %u\n", nr_colors);
> +    printk("Xen has %u LLC colors: ", xen_num_colors);
> +    print_colors(xen_colors, xen_num_colors);
>   }
>   
>   static bool check_colors(unsigned int *colors, unsigned int num_colors)
> @@ -217,6 +231,21 @@ bool __init llc_coloring_init(void)
>           return false;
>       }
>   
> +    if ( !xen_num_colors )
> +    {
> +        printk(XENLOG_WARNING
> +               "Xen LLC color config not found. Using default color: %u\n",
> +               XEN_DEFAULT_COLOR);
> +        xen_colors[0] = XEN_DEFAULT_COLOR;
> +        xen_num_colors = XEN_DEFAULT_NUM_COLORS;
> +    }
> +
> +    if ( !check_colors(xen_colors, xen_num_colors) )
> +    {
> +        printk(XENLOG_ERR "Bad LLC color config for Xen\n");
> +        return false;
> +    }
> +
>       register_keyhandler('K', dump_coloring_info, "dump LLC coloring info", 1);
>   
>       return true;

Cheers,

-- 
Julien Grall


From xen-devel-bounces@lists.xenproject.org Fri Jan 05 18:20:50 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 05 Jan 2024 18:20:50 +0000
Received: from list by lists.xenproject.org with outflank-mailman.662302.1032379 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLooF-00051x-Rp; Fri, 05 Jan 2024 18:20:43 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 662302.1032379; Fri, 05 Jan 2024 18:20:43 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLooF-00051q-Ok; Fri, 05 Jan 2024 18:20:43 +0000
Received: by outflank-mailman (input) for mailman id 662302;
 Fri, 05 Jan 2024 18:20:42 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>) id 1rLooE-00051k-Fz
 for xen-devel@lists.xenproject.org; Fri, 05 Jan 2024 18:20:42 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rLooD-0004YC-N1; Fri, 05 Jan 2024 18:20:41 +0000
Received: from [54.239.6.189] (helo=[192.168.15.166])
 by xenbits.xenproject.org with esmtpsa
 (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rLooD-0001Fv-Es; Fri, 05 Jan 2024 18:20:41 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
	s=20200302mail; h=Content-Transfer-Encoding:Content-Type:In-Reply-To:From:
	References:Cc:To:Subject:MIME-Version:Date:Message-ID;
	bh=FhyHWogUoR6wJurez7rt/RUmtOGEyj7hn5JTYfeJkxA=; b=X5TL5nl93d7zHAUWB0QJt2KwrW
	V17MUOpedRYEM0w3zTkcBP3ACaV9LGfqhH4o0fYMJeW6PeKXhr5NmVbmIqywPe4KWoMq2kaBDPMx4
	7LNxpYePdg14fIg4cUDnjmye+vBtzNvXHIIAj4zMuig+uZzPf6Rr5Cy4j0oeUTWknHpk=;
Message-ID: <05b6e12c-059d-47e7-8859-a291080c4dd4@xen.org>
Date: Fri, 5 Jan 2024 18:20:39 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v5 11/13] Revert "xen/arm: Remove unused
 BOOT_RELOC_VIRT_START"
Content-Language: en-GB
To: Carlo Nonato <carlo.nonato@minervasys.tech>,
 xen-devel@lists.xenproject.org
Cc: Stefano Stabellini <sstabellini@kernel.org>,
 Bertrand Marquis <bertrand.marquis@arm.com>,
 Michal Orzel <michal.orzel@amd.com>,
 Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
 Marco Solieri <marco.solieri@minervasys.tech>
References: <20240102095138.17933-1-carlo.nonato@minervasys.tech>
 <20240102095138.17933-12-carlo.nonato@minervasys.tech>
From: Julien Grall <julien@xen.org>
In-Reply-To: <20240102095138.17933-12-carlo.nonato@minervasys.tech>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

Hi Carlo,

On 02/01/2024 09:51, Carlo Nonato wrote:
> This reverts commit 0c18fb76323bfb13615b6f13c98767face2d8097 (not clean).
> 
> This is not a clean revert since the rework of the memory layout, but it is
> sufficiently similar to a clean one.
> The only difference is that the BOOT_RELOC_VIRT_START must match the new
> layout.
> 
> Cache coloring support for Xen needs to relocate Xen code and data in a new
> colored physical space. The BOOT_RELOC_VIRT_START will be used as the virtual
> base address for a temporary mapping to this new space.
> 
> Signed-off-by: Carlo Nonato <carlo.nonato@minervasys.tech>
> Signed-off-by: Marco Solieri <marco.solieri@minervasys.tech>
> ---
>   xen/arch/arm/include/asm/mmu/layout.h | 2 ++
>   xen/arch/arm/mmu/setup.c              | 1 +
>   2 files changed, 3 insertions(+)
> 
> diff --git a/xen/arch/arm/include/asm/mmu/layout.h b/xen/arch/arm/include/asm/mmu/layout.h
> index eac7eef885..30031f74d9 100644
> --- a/xen/arch/arm/include/asm/mmu/layout.h
> +++ b/xen/arch/arm/include/asm/mmu/layout.h
> @@ -74,6 +74,8 @@
>   #define BOOT_FDT_VIRT_START     (FIXMAP_VIRT_START + FIXMAP_VIRT_SIZE)
>   #define BOOT_FDT_VIRT_SIZE      _AT(vaddr_t, MB(4))
>   
> +#define BOOT_RELOC_VIRT_START   (BOOT_FDT_VIRT_START + BOOT_FDT_VIRT_SIZE)

This new addition wants to be documented in the layout comment in a few 
lines above. Also, the area you are using is 2MB whereas Xen can now be 
up to 8MB.

Secondly, you want to add a BOOTRELOC_VIRT_SIZE with a check in 
build_assertions() making sure that this is at least as big as 
XEN_VIRT_SIZE.

Overall, I am not sure this is really a revert at this point. The idea 
is the same, but you are defining BOOT_FDT_VIRT_START differently.

To me it feels like it belong to the first patch where you will use it. 
And that would be ok to mention in the commit message that the idea was 
borrowed from a previously reverted commit.

> +
>   #ifdef CONFIG_LIVEPATCH
>   #define LIVEPATCH_VMAP_START    (BOOT_FDT_VIRT_START + BOOT_FDT_VIRT_SIZE)
>   #define LIVEPATCH_VMAP_SIZE    _AT(vaddr_t, MB(2))
> diff --git a/xen/arch/arm/mmu/setup.c b/xen/arch/arm/mmu/setup.c
> index d5264e51bc..37b6d230ad 100644
> --- a/xen/arch/arm/mmu/setup.c
> +++ b/xen/arch/arm/mmu/setup.c
> @@ -69,6 +69,7 @@ static void __init __maybe_unused build_assertions(void)
>       /* 2MB aligned regions */
>       BUILD_BUG_ON(XEN_VIRT_START & ~SECOND_MASK);
>       BUILD_BUG_ON(FIXMAP_ADDR(0) & ~SECOND_MASK);
> +    BUILD_BUG_ON(BOOT_RELOC_VIRT_START & ~SECOND_MASK);
>       /* 1GB aligned regions */
>   #ifdef CONFIG_ARM_32
>       BUILD_BUG_ON(XENHEAP_VIRT_START & ~FIRST_MASK);

-- 
Julien Grall


From xen-devel-bounces@lists.xenproject.org Fri Jan 05 19:02:48 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 05 Jan 2024 19:02:48 +0000
Received: from list by lists.xenproject.org with outflank-mailman.662336.1032405 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLpSr-0007Fg-9k; Fri, 05 Jan 2024 19:02:41 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 662336.1032405; Fri, 05 Jan 2024 19:02:41 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLpSr-0007FZ-5v; Fri, 05 Jan 2024 19:02:41 +0000
Received: by outflank-mailman (input) for mailman id 662336;
 Fri, 05 Jan 2024 19:02:40 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=iyKn=IP=raptorengineering.com=sanastasio@srs-se1.protection.inumbo.net>)
 id 1rLpSq-0007E5-5X
 for xen-devel@lists.xenproject.org; Fri, 05 Jan 2024 19:02:40 +0000
Received: from raptorengineering.com (mail.raptorengineering.com
 [23.155.224.40]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id fd5244ae-abfc-11ee-98ef-6d05b1d4d9a1;
 Fri, 05 Jan 2024 20:02:38 +0100 (CET)
Received: from localhost (localhost [127.0.0.1])
 by mail.rptsys.com (Postfix) with ESMTP id CA07382856D4;
 Fri,  5 Jan 2024 13:02:35 -0600 (CST)
Received: from mail.rptsys.com ([127.0.0.1])
 by localhost (vali.starlink.edu [127.0.0.1]) (amavisd-new, port 10032)
 with ESMTP id 6wz-5cD6uz1S; Fri,  5 Jan 2024 13:02:35 -0600 (CST)
Received: from localhost (localhost [127.0.0.1])
 by mail.rptsys.com (Postfix) with ESMTP id D75A3828586A;
 Fri,  5 Jan 2024 13:02:34 -0600 (CST)
Received: from mail.rptsys.com ([127.0.0.1])
 by localhost (vali.starlink.edu [127.0.0.1]) (amavisd-new, port 10026)
 with ESMTP id UjSXFmKKYsPU; Fri,  5 Jan 2024 13:02:34 -0600 (CST)
Received: from [10.11.0.2] (5.edge.rptsys.com [23.155.224.38])
 by mail.rptsys.com (Postfix) with ESMTPSA id 114AA82856D4;
 Fri,  5 Jan 2024 13:02:33 -0600 (CST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: fd5244ae-abfc-11ee-98ef-6d05b1d4d9a1
DKIM-Filter: OpenDKIM Filter v2.10.3 mail.rptsys.com D75A3828586A
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
	d=raptorengineering.com; s=B8E824E6-0BE2-11E6-931D-288C65937AAD;
	t=1704481354; bh=NZixcl3E/YkMyxsRAmyeWluwVPnLz7fDXYX9hzKiymI=;
	h=Message-ID:Date:MIME-Version:To:From;
	b=KsqWAyb/HQhtH8G2Me/q3AEnM5v+PnnPdxtSeYNi0d6QnAmlRv8GsyNTF6vE0/jh0
	 mQQ2prDO3fQVctbNvyvktCrTDs8nxrFelgM/Bh6WZ+txBw/cMkJ5TP1KCN4DS4aC7i
	 87r9JJZnOCO6w0NnHyRyV4fLpwH8ghTfpMAKswik=
X-Virus-Scanned: amavisd-new at rptsys.com
Message-ID: <a9793125-599b-432a-8f93-d77244616849@raptorengineering.com>
Date: Fri, 5 Jan 2024 13:02:33 -0600
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 07/34] xen/asm-generic: introdure nospec.h
Content-Language: en-US
To: Oleksii Kurochko <oleksii.kurochko@gmail.com>,
 xen-devel@lists.xenproject.org
Cc: Stefano Stabellini <sstabellini@kernel.org>, Julien Grall
 <julien@xen.org>, Bertrand Marquis <bertrand.marquis@arm.com>,
 Michal Orzel <michal.orzel@amd.com>,
 Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
 Andrew Cooper <andrew.cooper3@citrix.com>,
 George Dunlap <george.dunlap@citrix.com>, Jan Beulich <jbeulich@suse.com>,
 Wei Liu <wl@xen.org>, Alistair Francis <alistair.francis@wdc.com>,
 Bob Eshleman <bobbyeshleman@gmail.com>, Connor Davis <connojdavis@gmail.com>
References: <cover.1703255175.git.oleksii.kurochko@gmail.com>
 <a1360d3de3da8757c69f11c3fafd99ff65654ae8.1703255175.git.oleksii.kurochko@gmail.com>
From: Shawn Anastasio <sanastasio@raptorengineering.com>
In-Reply-To: <a1360d3de3da8757c69f11c3fafd99ff65654ae8.1703255175.git.oleksii.kurochko@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

Hi Oleksii,

On 12/22/23 9:12 AM, Oleksii Kurochko wrote:
> The <asm/nospec.h> header is similar between Arm, PPC, and RISC-V,
> so it has been moved to asm-generic.
> 
> Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>

Acked-by: Shawn Anastasio <sanastasio@raptorengineering.com>

Thanks,
Shawn


From xen-devel-bounces@lists.xenproject.org Fri Jan 05 19:10:50 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 05 Jan 2024 19:10:50 +0000
Received: from list by lists.xenproject.org with outflank-mailman.662339.1032414 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLpag-0000oG-1t; Fri, 05 Jan 2024 19:10:46 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 662339.1032414; Fri, 05 Jan 2024 19:10:46 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLpaf-0000o9-VW; Fri, 05 Jan 2024 19:10:45 +0000
Received: by outflank-mailman (input) for mailman id 662339;
 Fri, 05 Jan 2024 19:10:45 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=iyKn=IP=raptorengineering.com=sanastasio@srs-se1.protection.inumbo.net>)
 id 1rLpaf-0000o3-4D
 for xen-devel@lists.xenproject.org; Fri, 05 Jan 2024 19:10:45 +0000
Received: from raptorengineering.com (mail.raptorengineering.com
 [23.155.224.40]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 1f87d921-abfe-11ee-98ef-6d05b1d4d9a1;
 Fri, 05 Jan 2024 20:10:44 +0100 (CET)
Received: from localhost (localhost [127.0.0.1])
 by mail.rptsys.com (Postfix) with ESMTP id E355F828586A;
 Fri,  5 Jan 2024 13:10:42 -0600 (CST)
Received: from mail.rptsys.com ([127.0.0.1])
 by localhost (vali.starlink.edu [127.0.0.1]) (amavisd-new, port 10032)
 with ESMTP id TqN90OMX73xP; Fri,  5 Jan 2024 13:10:42 -0600 (CST)
Received: from localhost (localhost [127.0.0.1])
 by mail.rptsys.com (Postfix) with ESMTP id 410488285A05;
 Fri,  5 Jan 2024 13:10:42 -0600 (CST)
Received: from mail.rptsys.com ([127.0.0.1])
 by localhost (vali.starlink.edu [127.0.0.1]) (amavisd-new, port 10026)
 with ESMTP id dYY72SbNQJzF; Fri,  5 Jan 2024 13:10:42 -0600 (CST)
Received: from [10.11.0.2] (5.edge.rptsys.com [23.155.224.38])
 by mail.rptsys.com (Postfix) with ESMTPSA id ABF38828586A;
 Fri,  5 Jan 2024 13:10:41 -0600 (CST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 1f87d921-abfe-11ee-98ef-6d05b1d4d9a1
DKIM-Filter: OpenDKIM Filter v2.10.3 mail.rptsys.com 410488285A05
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
	d=raptorengineering.com; s=B8E824E6-0BE2-11E6-931D-288C65937AAD;
	t=1704481842; bh=ew8xSgvt4qKIKMB8n2rlFRAlMFQgtK9DfHRha/wXrDY=;
	h=Message-ID:Date:MIME-Version:To:From;
	b=QG3xhQPnEVevFaBvi885ZT702IhIQQckjHzYWXvjHjF0rrQKDci3nqGqpnX6mghef
	 5jjLC5g+whSB2MVrkvhorflxYUOQWGhIsOOApElZweQjyi4DqSvVv8kjk3LwwpVB8Y
	 caK9PmfJQMhYIlTQI4TALS9cpKgLk8X2zyq1yArw=
X-Virus-Scanned: amavisd-new at rptsys.com
Message-ID: <c119c1df-0d35-4f35-92af-9245b31edcb0@raptorengineering.com>
Date: Fri, 5 Jan 2024 13:10:41 -0600
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v6 7/9] xen: ifdef inclusion of <asm/grant_table.h> in
 <xen/grant_table.h>
Content-Language: en-US
To: Oleksii Kurochko <oleksii.kurochko@gmail.com>,
 xen-devel@lists.xenproject.org
Cc: Stefano Stabellini <sstabellini@kernel.org>, Julien Grall
 <julien@xen.org>, Bertrand Marquis <bertrand.marquis@arm.com>,
 Michal Orzel <michal.orzel@amd.com>,
 Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
 Andrew Cooper <andrew.cooper3@citrix.com>,
 George Dunlap <george.dunlap@citrix.com>, Jan Beulich <jbeulich@suse.com>,
 Wei Liu <wl@xen.org>
References: <cover.1703072575.git.oleksii.kurochko@gmail.com>
 <e49bae656ed6c0fe689703f78df4e815b955f5b2.1703072575.git.oleksii.kurochko@gmail.com>
From: Shawn Anastasio <sanastasio@raptorengineering.com>
In-Reply-To: <e49bae656ed6c0fe689703f78df4e815b955f5b2.1703072575.git.oleksii.kurochko@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

Hi Oleksii,

On 12/20/23 8:08 AM, Oleksii Kurochko wrote:
> Ifdef-ing inclusion of <asm/grant_table.h> allows to avoid
> generation of empty <asm/grant_table.h> for cases when
> CONFIG_GRANT_TABLE is not enabled.
> 
> The following changes were done for Arm:
> <asm/grant_table.h> should be included directly because it contains
> gnttab_dom0_frames() macros which is unique for Arm and is used in
> arch/arm/domain_build.c.
> <asm/grant_table.h> is #ifdef-ed with CONFIG_GRANT_TABLE in
> <xen/grant_table.h> so in case of !CONFIG_GRANT_TABLE gnttab_dom0_frames
> won't be available for use in arch/arm/domain_build.c.
> 
> Suggested-by: Jan Beulich <jbeulich@suse.com>
> Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>

Acked-by: Shawn Anastasio <sanastasio@raptorengineering.com>

Thanks,
Shawn


From xen-devel-bounces@lists.xenproject.org Fri Jan 05 19:12:36 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 05 Jan 2024 19:12:36 +0000
Received: from list by lists.xenproject.org with outflank-mailman.662343.1032424 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLpcR-0001fv-Cz; Fri, 05 Jan 2024 19:12:35 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 662343.1032424; Fri, 05 Jan 2024 19:12:35 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLpcR-0001fo-A0; Fri, 05 Jan 2024 19:12:35 +0000
Received: by outflank-mailman (input) for mailman id 662343;
 Fri, 05 Jan 2024 19:12:33 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>) id 1rLpcP-0001fg-RQ
 for xen-devel@lists.xenproject.org; Fri, 05 Jan 2024 19:12:33 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rLpcO-0005b5-V4; Fri, 05 Jan 2024 19:12:32 +0000
Received: from [54.239.6.189] (helo=[192.168.15.166])
 by xenbits.xenproject.org with esmtpsa
 (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rLpcO-0003hW-KH; Fri, 05 Jan 2024 19:12:32 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
	s=20200302mail; h=Content-Transfer-Encoding:Content-Type:In-Reply-To:From:
	References:Cc:To:Subject:MIME-Version:Date:Message-ID;
	bh=ZKuVLz7mEta1/dzR8cFLC6y9HARFRP149zUSOGnpgkI=; b=xkHh33ZHEC8jVjEXEV01tplTaL
	0eCoSu75OZE9iAXEUwPI3cGOXz/EgRCcqRv6lYgBz8OfvSy/WBqs3mFRoc1Nxw2Cp0CkCWtXF85c9
	RUKJ2AXyd6r1P15MGKxbThVALlflbc1lYds0wCC6v6Y4KxaJT2tXOFC7oqWG22D1HZHk=;
Message-ID: <4553cc26-deb5-42ed-87b9-6cba2a5099eb@xen.org>
Date: Fri, 5 Jan 2024 19:12:30 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v5 13/13] xen/arm: add cache coloring support for Xen
Content-Language: en-GB
To: Carlo Nonato <carlo.nonato@minervasys.tech>,
 xen-devel@lists.xenproject.org
Cc: Stefano Stabellini <sstabellini@kernel.org>,
 Bertrand Marquis <bertrand.marquis@arm.com>,
 Michal Orzel <michal.orzel@amd.com>,
 Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
 Marco Solieri <marco.solieri@minervasys.tech>
References: <20240102095138.17933-1-carlo.nonato@minervasys.tech>
 <20240102095138.17933-14-carlo.nonato@minervasys.tech>
From: Julien Grall <julien@xen.org>
In-Reply-To: <20240102095138.17933-14-carlo.nonato@minervasys.tech>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

Hi Carlo,

On 02/01/2024 09:51, Carlo Nonato wrote:
> This commit adds the cache coloring support for Xen own physical space.
> 
> It extends the implementation of setup_pagetables() to make use of Xen
> cache coloring configuration. Page tables construction is essentially the
> same except for the fact that PTEs point to a new temporary mapped,
> physically colored space.
> 
> The temporary mapping is also used to relocate Xen to the new physical
> space starting at the address taken from the old get_xen_paddr() function
> which is brought back for the occasion.
> The temporary mapping is finally converted to a mapping of the "old"
> (meaning the original physical space) Xen code, so that the boot CPU can
> actually address the variables and functions used by secondary CPUs until
> they enable the MMU. This happens when the boot CPU needs to bring up other
> CPUs (psci.c and smpboot.c) and when the TTBR value is passed to them
> (prepare_secondary_mm()).
> 
> Finally, since the alternative framework needs to remap the Xen text and
> inittext sections, this operation must be done in a coloring-aware way.
> The function xen_remap_colored() is introduced for that.
> 
> Signed-off-by: Carlo Nonato <carlo.nonato@minervasys.tech>
> Signed-off-by: Marco Solieri <marco.solieri@minervasys.tech>
> ---
> v5:
> - FIXME: consider_modules copy pasted since it got moved
> v4:
> - removed set_value_for_secondary() because it was wrongly cleaning cache
> - relocate_xen() now calls switch_ttbr_id()
> ---
>   xen/arch/arm/alternative.c              |   9 +-
>   xen/arch/arm/arm64/mmu/head.S           |  48 +++++++
>   xen/arch/arm/arm64/mmu/mm.c             |  26 +++-
>   xen/arch/arm/include/asm/llc-coloring.h |  16 +++
>   xen/arch/arm/include/asm/mm.h           |   7 +-
>   xen/arch/arm/llc-coloring.c             |  44 +++++++
>   xen/arch/arm/mmu/setup.c                |  82 +++++++++++-
>   xen/arch/arm/mmu/smpboot.c              |  11 +-
>   xen/arch/arm/psci.c                     |   9 +-
>   xen/arch/arm/setup.c                    | 165 +++++++++++++++++++++++-
>   xen/arch/arm/smpboot.c                  |   9 +-

This patch has is touching a lot of different components. I think this 
want to be split in more smaller chunk. It would also be help to mention 
what code has been copied from previous Xen. For instance, 
relocate_xen() is clearly a copy of f60658c6ae47.

>   11 files changed, 406 insertions(+), 20 deletions(-)
> 
> diff --git a/xen/arch/arm/alternative.c b/xen/arch/arm/alternative.c
> index 016e66978b..54cbc2afad 100644
> --- a/xen/arch/arm/alternative.c
> +++ b/xen/arch/arm/alternative.c
> @@ -9,6 +9,7 @@
>   #include <xen/init.h>
>   #include <xen/types.h>
>   #include <xen/kernel.h>
> +#include <xen/llc-coloring.h>
>   #include <xen/mm.h>
>   #include <xen/vmap.h>
>   #include <xen/smp.h>
> @@ -209,8 +210,12 @@ void __init apply_alternatives_all(void)
>        * The text and inittext section are read-only. So re-map Xen to
>        * be able to patch the code.
>        */
> -    xenmap = __vmap(&xen_mfn, 1U << xen_order, 1, 1, PAGE_HYPERVISOR,
> -                    VMAP_DEFAULT);
> +    if ( llc_coloring_enabled )
> +        xenmap = xen_remap_colored(xen_mfn, xen_size);
> +    else
> +        xenmap = __vmap(&xen_mfn, 1U << xen_order, 1, 1, PAGE_HYPERVISOR,
> +                        VMAP_DEFAULT);
> +
>       /* Re-mapping Xen is not expected to fail during boot. */
>       BUG_ON(!xenmap);
>   
> diff --git a/xen/arch/arm/arm64/mmu/head.S b/xen/arch/arm/arm64/mmu/head.S
> index 10774f30e4..6f0cc72897 100644
> --- a/xen/arch/arm/arm64/mmu/head.S
> +++ b/xen/arch/arm/arm64/mmu/head.S
> @@ -419,6 +419,54 @@ fail:   PRINT("- Boot failed -\r\n")
>           b     1b
>   ENDPROC(fail)
>   
> +/* Copy Xen to new location and switch TTBR
> + * x0    ttbr
> + * x1    source address
> + * x2    destination address
> + * x3    length
> + *
> + * Source and destination must be word aligned, length is rounded up
> + * to a 16 byte boundary.
> + *
> + * MUST BE VERY CAREFUL when saving things to RAM over the copy */

If you plan to re-introduce code, then please at least make sure it 
match the coding style. For comments, it should be:

/*
  * Foo
  * Bar
  */

> +ENTRY(relocate_xen)
> +        /* Copy 16 bytes at a time using:
> +         *   x9: counter
> +         *   x10: data
> +         *   x11: data
> +         *   x12: source
> +         *   x13: destination
> +         */
> +        mov     x9, x3
> +        mov     x12, x1
> +        mov     x13, x2
> +
> +1:      ldp     x10, x11, [x12], #16
> +        stp     x10, x11, [x13], #16
> +
> +        subs    x9, x9, #16
> +        bgt     1b
> +
> +        /* Flush destination from dcache using:

I would explain why you need the flush. AFAICT, this is because you want 
the data to be visible to the instruction cache. I would also point out 
that you need the instruction cache flush in switch_ttbr_id() where the 
sentence "This should not be necessary ..." should be now reworked 
(AFAIK it is mandatory for cache coloring).

> +         * x9: counter
> +         * x10: step
> +         * x11: vaddr
> +         */
> +        dsb   sy        /* So the CPU issues all writes to the range */
> +
> +        mov   x9, x3
> +        ldr   x10, =dcache_line_bytes /* x10 := step */
> +        ldr   x10, [x10]
> +        mov   x11, x2
> +
> +1:      dc    cvac, x11
> +
> +        add   x11, x11, x10
> +        subs  x9, x9, x10
> +        bgt   1b
> +

I would add a comment here explaining you are relying on the dsb/isb in 
switch_ttbr_id().

> +        b switch_ttbr_id
> +
>   /*
>    * Switch TTBR
>    *
> diff --git a/xen/arch/arm/arm64/mmu/mm.c b/xen/arch/arm/arm64/mmu/mm.c
> index d2651c9486..5a26d64ab7 100644
> --- a/xen/arch/arm/arm64/mmu/mm.c
> +++ b/xen/arch/arm/arm64/mmu/mm.c
> @@ -1,6 +1,7 @@
>   /* SPDX-License-Identifier: GPL-2.0 */
>   
>   #include <xen/init.h>
> +#include <xen/llc-coloring.h>
>   #include <xen/mm.h>
>   #include <xen/pfn.h>
>   
> @@ -125,27 +126,44 @@ void update_identity_mapping(bool enable)
>   }
>   
>   extern void switch_ttbr_id(uint64_t ttbr);
> +extern void relocate_xen(uint64_t ttbr, void *src, void *dst, size_t len);
>   
>   typedef void (switch_ttbr_fn)(uint64_t ttbr);
> +typedef void (relocate_xen_fn)(uint64_t ttbr, void *src, void *dst, size_t len);
>   
>   void __init switch_ttbr(uint64_t ttbr)
>   {
> -    vaddr_t id_addr = virt_to_maddr(switch_ttbr_id);
> -    switch_ttbr_fn *fn = (switch_ttbr_fn *)id_addr;
> +    vaddr_t vaddr, id_addr;
>       lpae_t pte;
>   
> +    if ( llc_coloring_enabled )
> +        vaddr = (vaddr_t)relocate_xen;
> +    else
> +        vaddr = (vaddr_t)switch_ttbr_id;
> +
> +    id_addr = virt_to_maddr(vaddr);
> +
>       /* Enable the identity mapping in the boot page tables */
>       update_identity_mapping(true);
>   
>       /* Enable the identity mapping in the runtime page tables */
> -    pte = pte_of_xenaddr((vaddr_t)switch_ttbr_id);
> +    pte = pte_of_xenaddr(vaddr);
>       pte.pt.table = 1;
>       pte.pt.xn = 0;
>       pte.pt.ro = 1;
>       write_pte(&xen_third_id[third_table_offset(id_addr)], pte);
>   
>       /* Switch TTBR */
> -    fn(ttbr);
> +    if ( llc_coloring_enabled )
> +    {
> +        relocate_xen_fn *fn = (relocate_xen_fn *)id_addr;

Coding style: We tend to add a new line after variable declaration.

> +        fn(ttbr, _start, (void *)BOOT_RELOC_VIRT_START, _end - _start);
> +    }
> +    else
> +    {
> +        switch_ttbr_fn *fn = (switch_ttbr_fn *)id_addr;

Ditto for the coding style.

> +        fn(ttbr);
> +    }
>   
>       /*
>        * Disable the identity mapping in the runtime page tables.
> diff --git a/xen/arch/arm/include/asm/llc-coloring.h b/xen/arch/arm/include/asm/llc-coloring.h
> index 5f9b0a8121..4d6071e50b 100644
> --- a/xen/arch/arm/include/asm/llc-coloring.h
> +++ b/xen/arch/arm/include/asm/llc-coloring.h
> @@ -12,11 +12,27 @@
>   #define __ASM_ARM_COLORING_H__
>   
>   #include <xen/init.h>
> +#include <xen/mm-frame.h>
> +
> +/**
> + * Iterate over each Xen mfn in the colored space.
> + * @mfn:    the current mfn. The first non colored mfn must be provided as the
> + *          starting point.
> + * @i:      loop index.
> + */
> +#define for_each_xen_colored_mfn(mfn, i)        \
> +    for ( i = 0, mfn = xen_colored_mfn(mfn);    \
> +          i < (_end - _start) >> PAGE_SHIFT;    \
> +          i++, mfn = xen_colored_mfn(mfn_add(mfn, 1)) )
>   
>   bool __init llc_coloring_init(void);
>   int dom0_set_llc_colors(struct domain *d);
>   int domain_set_llc_colors_from_str(struct domain *d, const char *str);
>   
> +paddr_t xen_colored_map_size(paddr_t size);
> +mfn_t xen_colored_mfn(mfn_t mfn);
> +void *xen_remap_colored(mfn_t xen_fn, paddr_t xen_size);
> +
>   #endif /* __ASM_ARM_COLORING_H__ */
>   
>   /*
> diff --git a/xen/arch/arm/include/asm/mm.h b/xen/arch/arm/include/asm/mm.h
> index 1829c559d6..311f092cf2 100644
> --- a/xen/arch/arm/include/asm/mm.h
> +++ b/xen/arch/arm/include/asm/mm.h
> @@ -203,12 +203,17 @@ extern unsigned long frametable_base_pdx;
>   
>   #define PDX_GROUP_SHIFT SECOND_SHIFT
>   
> +#define virt_to_reloc_virt(virt) \
> +    (((vaddr_t)virt) - XEN_VIRT_START + BOOT_RELOC_VIRT_START)
> +
>   /* Boot-time pagetable setup */
> -extern void setup_pagetables(unsigned long boot_phys_offset);
> +extern void setup_pagetables(unsigned long boot_phys_offset, paddr_t xen_paddr);
>   /* Map FDT in boot pagetable */
>   extern void *early_fdt_map(paddr_t fdt_paddr);
>   /* Remove early mappings */
>   extern void remove_early_mappings(void);
> +/* Remove early LLC coloring mappings */
> +extern void remove_llc_coloring_mappings(void);
>   /* Prepare the memory subystem to bring-up the given secondary CPU */
>   extern int prepare_secondary_mm(int cpu);
>   /* Map a frame table to cover physical addresses ps through pe */
> diff --git a/xen/arch/arm/llc-coloring.c b/xen/arch/arm/llc-coloring.c
> index 99ea69ad39..f434efc45b 100644
> --- a/xen/arch/arm/llc-coloring.c
> +++ b/xen/arch/arm/llc-coloring.c
> @@ -14,6 +14,7 @@
>   #include <xen/llc-coloring.h>
>   #include <xen/param.h>
>   #include <xen/types.h>
> +#include <xen/vmap.h>
>   
>   #include <asm/processor.h>
>   #include <asm/sysregs.h>
> @@ -38,6 +39,7 @@ static unsigned int __ro_after_init xen_num_colors;
>   
>   #define mfn_color_mask              (nr_colors - 1)
>   #define mfn_to_color(mfn)           (mfn_x(mfn) & mfn_color_mask)
> +#define mfn_set_color(mfn, color)   ((mfn_x(mfn) & ~mfn_color_mask) | (color))
>   
>   /*
>    * Parse the coloring configuration given in the buf string, following the
> @@ -354,6 +356,48 @@ unsigned int get_nr_llc_colors(void)
>       return nr_colors;
>   }
>   
> +paddr_t xen_colored_map_size(paddr_t size)
> +{
> +    return ROUNDUP(size * nr_colors, XEN_PADDR_ALIGN);
> +}
> + > +mfn_t xen_colored_mfn(mfn_t mfn)

Is this going to be used outside of boot? If not, then please add 
__init. If yes, then can you point me where?

> +{
> +    unsigned int i, color = mfn_to_color(mfn);
> +
> +    for( i = 0; i < xen_num_colors; i++ )
> +    {
> +        if ( color == xen_colors[i] )
> +            return mfn;
> +        else if ( color < xen_colors[i] )
> +            return mfn_set_color(mfn, xen_colors[i]);
> +    }
> +
> +    /* Jump to next color space (nr_colors mfns) and use the first color */
> +    return mfn_set_color(mfn_add(mfn, nr_colors), xen_colors[0]);
> +}
> +
> +void *xen_remap_colored(mfn_t xen_mfn, paddr_t xen_size)

I think this function can be __init.

> +{
> +    unsigned int i;
> +    void *xenmap;
> +    mfn_t *xen_colored_mfns;
> +
> +    xen_colored_mfns = xmalloc_array(mfn_t, xen_size >> PAGE_SHIFT);
> +    if ( !xen_colored_mfns )
> +        panic("Can't allocate LLC colored MFNs\n");
Let's try to limit the number of panic(). In this case, I think you 
should return NULL and let the caller decide.

> +
> +    for_each_xen_colored_mfn( xen_mfn, i )
> +    {
> +        xen_colored_mfns[i] = xen_mfn;
> +    }
> +
> +    xenmap = vmap(xen_colored_mfns, xen_size >> PAGE_SHIFT);
> +    xfree(xen_colored_mfns);
> +
> +    return xenmap;
> +}
> +
>   /*
>    * Local variables:
>    * mode: C
> diff --git a/xen/arch/arm/mmu/setup.c b/xen/arch/arm/mmu/setup.c
> index 37b6d230ad..66b674eeab 100644
> --- a/xen/arch/arm/mmu/setup.c
> +++ b/xen/arch/arm/mmu/setup.c
> @@ -7,6 +7,7 @@
>   
>   #include <xen/init.h>
>   #include <xen/libfdt/libfdt.h>
> +#include <xen/llc-coloring.h>
>   #include <xen/sizes.h>
>   #include <xen/vmap.h>
>   
> @@ -39,6 +40,10 @@ DEFINE_PER_CPU(lpae_t *, xen_pgtable);
>   static DEFINE_PAGE_TABLE(cpu0_pgtable);
>   #endif
>   
> +#ifdef CONFIG_LLC_COLORING
> +static DEFINE_PAGE_TABLE(xen_colored_temp);
> +#endif

Does this actually need to be static? And if yes, then is it necessary 
to be kept the boot as completed?

Also, this is not going to be enough to cover Xen. See above.


> +
>   /* Common pagetable leaves */
>   /* Second level page table used to cover Xen virtual address space */
>   static DEFINE_PAGE_TABLE(xen_second);
> @@ -130,7 +135,12 @@ static void __init __maybe_unused build_assertions(void)
>   
>   lpae_t __init pte_of_xenaddr(vaddr_t va)
>   {
> -    paddr_t ma = va + phys_offset;
> +    paddr_t ma;
> +
> +    if ( llc_coloring_enabled )
> +        ma = virt_to_maddr(virt_to_reloc_virt(va));
> +    else
> +        ma = va + phys_offset;
>   
>       return mfn_to_xen_entry(maddr_to_mfn(ma), MT_NORMAL);
>   }
> @@ -216,11 +226,55 @@ static void xen_pt_enforce_wnx(void)
>       flush_xen_tlb_local();
>   }
>   
> +#ifdef CONFIG_LLC_COLORING
> +static void __init create_llc_coloring_mappings(paddr_t xen_paddr)
> +{
> +    lpae_t pte;
> +    unsigned int i;
> +    mfn_t mfn = maddr_to_mfn(xen_paddr);
> +
> +    for_each_xen_colored_mfn( mfn, i )
> +    {
> +        pte = mfn_to_xen_entry(mfn, MT_NORMAL);
> +        pte.pt.table = 1; /* level 3 mappings always have this bit set */
> +        xen_colored_temp[i] = pte;
> +    }
> +
> +    pte = mfn_to_xen_entry(virt_to_mfn(xen_colored_temp), MT_NORMAL);
> +    pte.pt.table = 1;
> +    write_pte(&boot_second[second_table_offset(BOOT_RELOC_VIRT_START)], pte);
> +}
> +
> +void __init remove_llc_coloring_mappings(void)
> +{
> +    int rc;
> +
> +    /* destroy the _PAGE_BLOCK mapping */
> +    rc = modify_xen_mappings(BOOT_RELOC_VIRT_START,
> +                             BOOT_RELOC_VIRT_START + SZ_2M,

See above, Xen can now be bigger than 2MB. The limit is 8MB and could 
change in the future.

> +                             _PAGE_BLOCK);
> +    BUG_ON(rc);
> +}
> +#else
> +static void __init create_llc_coloring_mappings(paddr_t xen_paddr) {}
> +void __init remove_llc_coloring_mappings(void) {}

Both should never be called when !CONFIG_LCC_COLORING, correct? If so, 
then please add ASSERT_UNREACHABLE() in their body.

> +#endif /* CONFIG_LLC_COLORING */
> +
>   /*
> - * Boot-time pagetable setup.
> + * Boot-time pagetable setup with coloring support
>    * Changes here may need matching changes in head.S
> + *
> + * The coloring support consists of:
> + * - Create a temporary colored mapping that conforms to Xen color selection.
> + * - pte_of_xenaddr takes care of translating the virtual addresses to the
> + *   new colored physical space and the returns the pte, so that the page table
> + *   initialization can remain the same.
> + * - Copy Xen to the new colored physical space by exploiting the temporary
> + *   mapping.
> + * - Update TTBR0_EL2 with the new root page table address.
>    */
> -void __init setup_pagetables(unsigned long boot_phys_offset)
> +
> +void __init setup_pagetables(unsigned long boot_phys_offset, paddr_t xen_paddr)
>   {
>       uint64_t ttbr;
>       lpae_t pte, *p;
> @@ -228,6 +282,9 @@ void __init setup_pagetables(unsigned long boot_phys_offset)
>   
>       phys_offset = boot_phys_offset;
>   
> +    if ( llc_coloring_enabled )
> +        create_llc_coloring_mappings(xen_paddr);
> +
>       arch_setup_page_tables();
>   
>   #ifdef CONFIG_ARM_64
> @@ -281,10 +338,13 @@ void __init setup_pagetables(unsigned long boot_phys_offset)
>       pte.pt.table = 1;
>       xen_second[second_table_offset(FIXMAP_ADDR(0))] = pte;
>   
> +    if ( llc_coloring_enabled )
> +        ttbr = virt_to_maddr(virt_to_reloc_virt(xen_pgtable));

xen_pgtable is only valid for Arm64. But rather than ifdef-ing. I would 
consder to move...

> +    else
>   #ifdef CONFIG_ARM_64
> -    ttbr = (uintptr_t) xen_pgtable + phys_offset;
> +        ttbr = (uintptr_t) xen_pgtable + phys_offset;
>   #else
> -    ttbr = (uintptr_t) cpu0_pgtable + phys_offset;
> +        ttbr = (uintptr_t) cpu0_pgtable + phys_offset;
>   #endif
>   
>       switch_ttbr(ttbr);
> @@ -294,6 +354,18 @@ void __init setup_pagetables(unsigned long boot_phys_offset)
>   #ifdef CONFIG_ARM_32
>       per_cpu(xen_pgtable, 0) = cpu0_pgtable;
>   #endif

.. these two lines before hand so you can use THIS_CPU_PGTABLE.

> +
> +    /*

Coding style: It looks like you have one space too much before /*.

> +    * Keep original Xen memory mapped because secondary CPUs still point to it
> +    * and a few variables needs to be accessed by the master CPU in order to
> +    * let them boot. This mapping will also replace the one created at the
> +    * beginning of setup_pagetables.
> +    */

It feels wrong to keep the full Xen (even temporarily) just for CPU 
bring-up. But I don't think this is necessary. The secondary CPUs 
outside of code in head.S, secondary CPU should only need to access to 
init_ttbr and smp_cpu_up.

The last one is already questionable because the CPU should never wait 
in Xen. Instead they would be held somewhere else. But that's separate 
issue.

Anyway, if you move init_ttbr and smp_cpu_up in the identity mapped 
area, then you will not need to copy of Xen. Instead, secondary CPUs 
should be able to jump to the new Xen directly.

This will also avoid to spread cache coloring changes in every Xen 
components.

> +    if ( llc_coloring_enabled )
> +        map_pages_to_xen(BOOT_RELOC_VIRT_START,
> +                         maddr_to_mfn(XEN_VIRT_START + phys_offset),
> +                         SZ_2M >> PAGE_SHIFT, PAGE_HYPERVISOR_RW | _PAGE_BLOCK);
> +
>   }
>   
>   void *__init arch_vmap_virt_end(void)
> diff --git a/xen/arch/arm/mmu/smpboot.c b/xen/arch/arm/mmu/smpboot.c
> index b6fc0aae07..a69183ec88 100644
> --- a/xen/arch/arm/mmu/smpboot.c
> +++ b/xen/arch/arm/mmu/smpboot.c
> @@ -6,6 +6,7 @@
>    */
>   
>   #include <xen/domain_page.h>
> +#include <xen/llc-coloring.h>
>   
>   #include <asm/setup.h>
>   
> @@ -71,14 +72,20 @@ static void clear_boot_pagetables(void)
>   #ifdef CONFIG_ARM_64
>   int prepare_secondary_mm(int cpu)
>   {
> +    uint64_t *init_ttbr_addr = &init_ttbr;
> +
>       clear_boot_pagetables();
>   
> +    if ( llc_coloring_enabled )
> +        init_ttbr_addr = (uint64_t *)virt_to_reloc_virt(&init_ttbr);
> +
>       /*
>        * Set init_ttbr for this CPU coming up. All CPUs share a single setof
>        * pagetables, but rewrite it each time for consistency with 32 bit.
>        */
> -    init_ttbr = virt_to_maddr(xen_pgtable);
> -    clean_dcache(init_ttbr);
> +    *init_ttbr_addr = virt_to_maddr(xen_pgtable);
> +    clean_dcache(*init_ttbr_addr);
> +
>       return 0;
>   }
>   #else
> diff --git a/xen/arch/arm/psci.c b/xen/arch/arm/psci.c
> index 695d2fa1f1..23e298c477 100644
> --- a/xen/arch/arm/psci.c
> +++ b/xen/arch/arm/psci.c
> @@ -11,6 +11,7 @@
>   
>   #include <xen/types.h>
>   #include <xen/init.h>
> +#include <xen/llc-coloring.h>
>   #include <xen/mm.h>
>   #include <xen/smp.h>
>   #include <asm/cpufeature.h>
> @@ -39,9 +40,13 @@ static uint32_t psci_cpu_on_nr;
>   int call_psci_cpu_on(int cpu)
>   {
>       struct arm_smccc_res res;
> +    vaddr_t init_secondary_addr = (vaddr_t)init_secondary;
>   
> -    arm_smccc_smc(psci_cpu_on_nr, cpu_logical_map(cpu), __pa(init_secondary),
> -                  &res);
> +    if ( llc_coloring_enabled )
> +        init_secondary_addr = virt_to_reloc_virt(init_secondary);
> +
> +    arm_smccc_smc(psci_cpu_on_nr, cpu_logical_map(cpu),
> +                  __pa(init_secondary_addr), &res);
>   
>       return PSCI_RET(res);
>   }

[...]

> +#ifdef CONFIG_LLC_COLORING
> +/**
> + * get_xen_paddr - get physical address to relocate Xen to
> + *
> + * Xen is relocated to as near to the top of RAM as possible and
> + * aligned to a XEN_PADDR_ALIGN boundary.
> + */
> +static paddr_t __init get_xen_paddr(uint32_t xen_size)
> +{
> +    struct meminfo *mi = &bootinfo.mem;
> +    paddr_t min_size;
> +    paddr_t paddr = 0;
> +    int i;
> +
> +    min_size = (xen_size + (XEN_PADDR_ALIGN-1)) & ~(XEN_PADDR_ALIGN-1);
> +
> +    /* Find the highest bank with enough space. */
> +    for ( i = 0; i < mi->nr_banks; i++ )
> +    {
> +        const struct membank *bank = &mi->bank[i];
> +        paddr_t s, e;
> +
> +        if ( bank->size >= min_size )
> +        {
> +            e = consider_modules(bank->start, bank->start + bank->size,
> +                                 min_size, XEN_PADDR_ALIGN, 0);
> +            if ( !e )
> +                continue;
> +
> +#ifdef CONFIG_ARM_32
> +            /* Xen must be under 4GB */
> +            if ( e > 0x100000000ULL )
> +                e = 0x100000000ULL;
> +            if ( e < bank->start )
> +                continue;
> +#endif
> +
> +            s = e - min_size;
> +
> +            if ( s > paddr )
> +                paddr = s;
> +        }
> +    }
> +
> +    if ( !paddr )
> +        panic("Not enough memory to relocate Xen\n");
> +
> +    printk("Placing Xen at 0x%"PRIpaddr"-0x%"PRIpaddr"\n",
> +           paddr, paddr + min_size);
> +
> +    return paddr;
> +}
> +#else
> +static paddr_t __init get_xen_paddr(uint32_t xen_size) { return 0; }
> +#endif
> +
>   void __init init_pdx(void)
>   {
>       paddr_t bank_start, bank_size, bank_end;
> @@ -724,8 +874,6 @@ void asmlinkage __init start_xen(unsigned long boot_phys_offset,
>       /* Initialize traps early allow us to get backtrace when an error occurred */
>       init_traps();
>   
> -    setup_pagetables(boot_phys_offset);
> -
>       smp_clear_cpu_maps();
>   
>       device_tree_flattened = early_fdt_map(fdt_paddr);
> @@ -751,8 +899,13 @@ void asmlinkage __init start_xen(unsigned long boot_phys_offset,
>       {
>           if ( !llc_coloring_init() )
>               panic("Xen LLC coloring support: setup failed\n");
> +        xen_bootmodule->size = xen_colored_map_size(_end - _start);
> +        xen_bootmodule->start = get_xen_paddr(xen_bootmodule->size);

As you update xen_bootmodule, wouldn't this mean that the non-relocated 
Xen would could be passed to the bootallocator?

>       } >
> +    setup_pagetables(boot_phys_offset, xen_bootmodule->start);

The new placement of setup_pagetables() deserve an explanation.

> +    device_tree_flattened = early_fdt_map(fdt_paddr);
> +
>       setup_mm();
>   
>       /* Parse the ACPI tables for possible boot-time configuration */
> @@ -867,6 +1020,14 @@ void asmlinkage __init start_xen(unsigned long boot_phys_offset,
>   
>       setup_virt_paging();
>   
> +    /*
> +     * The removal is done earlier than discard_initial_modules beacuse the

Typo: s/beacuase/because/

> +     * livepatch init uses a virtual address equal to BOOT_RELOC_VIRT_START.
> +     * Remove LLC coloring mappings to expose a clear state to the livepatch
> +     * module.
> +     */
> +    if ( llc_coloring_enabled )
> +        remove_llc_coloring_mappings();
>       do_initcalls();
>   
>       /*
> diff --git a/xen/arch/arm/smpboot.c b/xen/arch/arm/smpboot.c
> index 7110bc11fc..7ed7357d58 100644
> --- a/xen/arch/arm/smpboot.c
> +++ b/xen/arch/arm/smpboot.c
> @@ -14,6 +14,7 @@
>   #include <xen/domain_page.h>
>   #include <xen/errno.h>
>   #include <xen/init.h>
> +#include <xen/llc-coloring.h>
>   #include <xen/mm.h>
>   #include <xen/param.h>
>   #include <xen/sched.h>
> @@ -444,6 +445,7 @@ int __cpu_up(unsigned int cpu)
>   {
>       int rc;
>       s_time_t deadline;
> +    unsigned long *smp_up_cpu_addr = &smp_up_cpu;
>   
>       printk("Bringing up CPU%d\n", cpu);
>   
> @@ -459,9 +461,12 @@ int __cpu_up(unsigned int cpu)
>       /* Tell the remote CPU what its logical CPU ID is. */
>       init_data.cpuid = cpu;
>   
> +    if ( llc_coloring_enabled )
> +        smp_up_cpu_addr = (unsigned long *)virt_to_reloc_virt(&smp_up_cpu);
> +
>       /* Open the gate for this CPU */
> -    smp_up_cpu = cpu_logical_map(cpu);
> -    clean_dcache(smp_up_cpu);
> +    *smp_up_cpu_addr = cpu_logical_map(cpu);
> +    clean_dcache(*smp_up_cpu_addr);
>   
>       rc = arch_cpu_up(cpu);
>   

Cheers,

-- 
Julien Grall


From xen-devel-bounces@lists.xenproject.org Fri Jan 05 19:13:33 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 05 Jan 2024 19:13:33 +0000
Received: from list by lists.xenproject.org with outflank-mailman.662348.1032435 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLpdK-0002KI-Ox; Fri, 05 Jan 2024 19:13:30 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 662348.1032435; Fri, 05 Jan 2024 19:13:30 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLpdK-0002KB-Lv; Fri, 05 Jan 2024 19:13:30 +0000
Received: by outflank-mailman (input) for mailman id 662348;
 Fri, 05 Jan 2024 19:13:29 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=iyKn=IP=raptorengineering.com=sanastasio@srs-se1.protection.inumbo.net>)
 id 1rLpdJ-00029P-0n
 for xen-devel@lists.xenproject.org; Fri, 05 Jan 2024 19:13:29 +0000
Received: from raptorengineering.com (mail.raptorengineering.com
 [23.155.224.40]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 81857cd4-abfe-11ee-98ef-6d05b1d4d9a1;
 Fri, 05 Jan 2024 20:13:28 +0100 (CET)
Received: from localhost (localhost [127.0.0.1])
 by mail.rptsys.com (Postfix) with ESMTP id 6D3D8828586A;
 Fri,  5 Jan 2024 13:13:27 -0600 (CST)
Received: from mail.rptsys.com ([127.0.0.1])
 by localhost (vali.starlink.edu [127.0.0.1]) (amavisd-new, port 10032)
 with ESMTP id MPfjIa65nPFZ; Fri,  5 Jan 2024 13:13:26 -0600 (CST)
Received: from localhost (localhost [127.0.0.1])
 by mail.rptsys.com (Postfix) with ESMTP id 89AD98285A05;
 Fri,  5 Jan 2024 13:13:26 -0600 (CST)
Received: from mail.rptsys.com ([127.0.0.1])
 by localhost (vali.starlink.edu [127.0.0.1]) (amavisd-new, port 10026)
 with ESMTP id WeXMMLT4p_t5; Fri,  5 Jan 2024 13:13:26 -0600 (CST)
Received: from [10.11.0.2] (5.edge.rptsys.com [23.155.224.38])
 by mail.rptsys.com (Postfix) with ESMTPSA id B9507828586A;
 Fri,  5 Jan 2024 13:13:25 -0600 (CST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 81857cd4-abfe-11ee-98ef-6d05b1d4d9a1
DKIM-Filter: OpenDKIM Filter v2.10.3 mail.rptsys.com 89AD98285A05
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
	d=raptorengineering.com; s=B8E824E6-0BE2-11E6-931D-288C65937AAD;
	t=1704482006; bh=xN82Gqj8v7Vgc75h9dhrcm4Ixs2mlCJJ436r5ZZCg1E=;
	h=Message-ID:Date:MIME-Version:To:From;
	b=bau4Wp80CzY/NYQ/j2G/9YFo7tolIyepUhnkHppOi9JBYIlglSmmfM8xaTtiFyhW9
	 RXxj088odxYUX/zcULPpSRXk24xHcqj2peJDp9uHTfgPETYZMZ9jhKLkySShPyJanS
	 tYxudPYQl1W4K2zo/aceCCEctkEl6OYFHEVt4ubw=
X-Virus-Scanned: amavisd-new at rptsys.com
Message-ID: <f1dc274a-7317-41e8-be29-a46d9fe45377@raptorengineering.com>
Date: Fri, 5 Jan 2024 13:13:25 -0600
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v6 8/9] xen/asm-generic: ifdef inclusion of
 <asm/mem_access.h>
Content-Language: en-US
To: Oleksii Kurochko <oleksii.kurochko@gmail.com>,
 xen-devel@lists.xenproject.org
Cc: Stefano Stabellini <sstabellini@kernel.org>, Julien Grall
 <julien@xen.org>, Bertrand Marquis <bertrand.marquis@arm.com>,
 Michal Orzel <michal.orzel@amd.com>,
 Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
 Tamas K Lengyel <tamas@tklengyel.com>,
 Alexandru Isaila <aisaila@bitdefender.com>,
 Petre Pircalabu <ppircalabu@bitdefender.com>,
 Alistair Francis <alistair.francis@wdc.com>,
 Bob Eshleman <bobbyeshleman@gmail.com>, Connor Davis
 <connojdavis@gmail.com>, Jan Beulich <jbeulich@suse.com>
References: <cover.1703072575.git.oleksii.kurochko@gmail.com>
 <bc97ed58ba9118042ff60c2cb6edacf4f64419d8.1703072575.git.oleksii.kurochko@gmail.com>
From: Shawn Anastasio <sanastasio@raptorengineering.com>
In-Reply-To: <bc97ed58ba9118042ff60c2cb6edacf4f64419d8.1703072575.git.oleksii.kurochko@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

Hi Oleksii,

On 12/20/23 8:08 AM, Oleksii Kurochko wrote:
> ifdefing inclusion of <asm/mem_access.h> in <xen/mem_access.h>
> allows to avoid generation of empty <asm/mem_access.h> header
> for the case when !CONFIG_MEM_ACCESS.
> 
> For Arm it was explicitly added inclusion of <asm/mem_access.h> for p2m.c
> and traps.c because they require some functions from <asm/mem_access.h> which
> aren't available in case of !CONFIG_MEM_ACCESS.
> 
> Suggested-by: Jan Beulich <jbeulich@suse.com>
> Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>

Acked-by: Shawn Anastasio <sanastasio@raptorengineering.com>

Thanks,
Shawn


From xen-devel-bounces@lists.xenproject.org Fri Jan 05 19:38:11 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 05 Jan 2024 19:38:11 +0000
Received: from list by lists.xenproject.org with outflank-mailman.662354.1032444 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLq16-0007iF-L8; Fri, 05 Jan 2024 19:38:04 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 662354.1032444; Fri, 05 Jan 2024 19:38:04 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLq16-0007i8-IU; Fri, 05 Jan 2024 19:38:04 +0000
Received: by outflank-mailman (input) for mailman id 662354;
 Fri, 05 Jan 2024 19:38:04 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=EEqs=IP=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1rLq16-0007i2-7e
 for xen-devel@lists.xenproject.org; Fri, 05 Jan 2024 19:38:04 +0000
Received: from mail-wr1-x42e.google.com (mail-wr1-x42e.google.com
 [2a00:1450:4864:20::42e])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id eff975dd-ac01-11ee-9b0f-b553b5be7939;
 Fri, 05 Jan 2024 20:38:01 +0100 (CET)
Received: by mail-wr1-x42e.google.com with SMTP id
 ffacd0b85a97d-336990fb8fbso1365952f8f.1
 for <xen-devel@lists.xenproject.org>; Fri, 05 Jan 2024 11:38:01 -0800 (PST)
Received: from [10.80.67.30] (default-46-102-197-194.interdsl.co.uk.
 [46.102.197.194]) by smtp.gmail.com with ESMTPSA id
 k4-20020a5d6284000000b00336c43b366fsm1942382wru.12.2024.01.05.11.38.00
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Fri, 05 Jan 2024 11:38:00 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: eff975dd-ac01-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1704483481; x=1705088281; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=QqdgfNCdld1H6TGYnTtWN5scasQkJ+Tlke64vk+CQzE=;
        b=fOMxvvEoN9LR/ZB5hUwDKDmu5/Vi4GLNeLKDfLtR5j2bzveoHUJbEyV1GH40+iNen9
         jl/nC27/2oL9/1/HIjpeiSOP4tRYMYu4+cRXM7mIqimbjVlJfsR+wNx/wQy8d7sWsMN2
         zNHlHC8HW97ZPngcqgS07laHdWBrIrvHQLgl8=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704483481; x=1705088281;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=QqdgfNCdld1H6TGYnTtWN5scasQkJ+Tlke64vk+CQzE=;
        b=Ixp85YC7bMvuBenvnA94UbLK8U8cuK+B5Lqgf685d1lDjRhOf52O2rUZ4q/O5u0lft
         VTSi3zSyArEvmFAj45/1Elp4/Lp61/73pYn5sjarjUrPCDxM7P4mIib8I1btNIa9x5pj
         EHtLSZEAl4Wkhm0zb+/dFu0Nw6459UjR2cNP4eIgYG6dR1BJOERFw05cTeBIehy8ez0G
         eLQ7nGGXvCEjy1O/TC9Snu7fGlHozKf7CPqjljddL2tx5q9hn8GmZngE2xjb8NVttYZv
         mebo/xGly40tFvJ9UHnrV9PoE2jmdpLlrJQIh/IBwk7dQHdaZNegH8iF67kS5Z6otDUl
         GiJg==
X-Gm-Message-State: AOJu0Ywh539fOtjOL60np82kNsqeL5QcpMCQ9bBzWSrk0+4gjr6CVcgg
	ouRTjkyPz2aDUb3qeaq9FHxq66Ky4TDWVQ==
X-Google-Smtp-Source: AGHT+IFKTWNkvdDVXgSELdy/5jp9h4WKAIYTf2LVe/W4defr6PzjuxUodMM2HG55BteuFObG/Gu23A==
X-Received: by 2002:adf:c783:0:b0:336:6479:3b0a with SMTP id l3-20020adfc783000000b0033664793b0amr1858354wrg.122.1704483481187;
        Fri, 05 Jan 2024 11:38:01 -0800 (PST)
Message-ID: <64bc70ce-e9e8-482b-9cdc-61465d2e09b5@citrix.com>
Date: Fri, 5 Jan 2024 19:38:00 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] x86/mwait-idle: fix ubsan warning
Content-Language: en-GB
To: Tamas K Lengyel <tamas.k.lengyel@gmail.com>,
 Jan Beulich <jbeulich@suse.com>
Cc: Tamas K Lengyel <tamas.lengyel@intel.com>,
 xen-devel@lists.xenproject.org, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger.pau@citrix.com>, Wei Liu <wl@xen.org>
References: <f0ac3890b5e2e1e98bfd3fe5fffcf3c3c031e12c.1704388276.git.tamas.lengyel@intel.com>
 <ba53053f-a2c6-4e4f-a805-4d60970bae39@suse.com>
 <CABfawhmovqKjTSRbjgSqhY7kDhANyHrXFHYyPTGhsrnT1cdtBQ@mail.gmail.com>
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 xsFNBFLhNn8BEADVhE+Hb8i0GV6mihnnr/uiQQdPF8kUoFzCOPXkf7jQ5sLYeJa0cQi6Penp
 VtiFYznTairnVsN5J+ujSTIb+OlMSJUWV4opS7WVNnxHbFTPYZVQ3erv7NKc2iVizCRZ2Kxn
 srM1oPXWRic8BIAdYOKOloF2300SL/bIpeD+x7h3w9B/qez7nOin5NzkxgFoaUeIal12pXSR
 Q354FKFoy6Vh96gc4VRqte3jw8mPuJQpfws+Pb+swvSf/i1q1+1I4jsRQQh2m6OTADHIqg2E
 ofTYAEh7R5HfPx0EXoEDMdRjOeKn8+vvkAwhviWXTHlG3R1QkbE5M/oywnZ83udJmi+lxjJ5
 YhQ5IzomvJ16H0Bq+TLyVLO/VRksp1VR9HxCzItLNCS8PdpYYz5TC204ViycobYU65WMpzWe
 LFAGn8jSS25XIpqv0Y9k87dLbctKKA14Ifw2kq5OIVu2FuX+3i446JOa2vpCI9GcjCzi3oHV
 e00bzYiHMIl0FICrNJU0Kjho8pdo0m2uxkn6SYEpogAy9pnatUlO+erL4LqFUO7GXSdBRbw5
 gNt25XTLdSFuZtMxkY3tq8MFss5QnjhehCVPEpE6y9ZjI4XB8ad1G4oBHVGK5LMsvg22PfMJ
 ISWFSHoF/B5+lHkCKWkFxZ0gZn33ju5n6/FOdEx4B8cMJt+cWwARAQABzSlBbmRyZXcgQ29v
 cGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPsLBegQTAQgAJAIbAwULCQgHAwUVCgkI
 CwUWAgMBAAIeAQIXgAUCWKD95wIZAQAKCRBlw/kGpdefoHbdD/9AIoR3k6fKl+RFiFpyAhvO
 59ttDFI7nIAnlYngev2XUR3acFElJATHSDO0ju+hqWqAb8kVijXLops0gOfqt3VPZq9cuHlh
 IMDquatGLzAadfFx2eQYIYT+FYuMoPZy/aTUazmJIDVxP7L383grjIkn+7tAv+qeDfE+txL4
 SAm1UHNvmdfgL2/lcmL3xRh7sub3nJilM93RWX1Pe5LBSDXO45uzCGEdst6uSlzYR/MEr+5Z
 JQQ32JV64zwvf/aKaagSQSQMYNX9JFgfZ3TKWC1KJQbX5ssoX/5hNLqxMcZV3TN7kU8I3kjK
 mPec9+1nECOjjJSO/h4P0sBZyIUGfguwzhEeGf4sMCuSEM4xjCnwiBwftR17sr0spYcOpqET
 ZGcAmyYcNjy6CYadNCnfR40vhhWuCfNCBzWnUW0lFoo12wb0YnzoOLjvfD6OL3JjIUJNOmJy
 RCsJ5IA/Iz33RhSVRmROu+TztwuThClw63g7+hoyewv7BemKyuU6FTVhjjW+XUWmS/FzknSi
 dAG+insr0746cTPpSkGl3KAXeWDGJzve7/SBBfyznWCMGaf8E2P1oOdIZRxHgWj0zNr1+ooF
 /PzgLPiCI4OMUttTlEKChgbUTQ+5o0P080JojqfXwbPAyumbaYcQNiH1/xYbJdOFSiBv9rpt
 TQTBLzDKXok86M7BTQRS4TZ/ARAAkgqudHsp+hd82UVkvgnlqZjzz2vyrYfz7bkPtXaGb9H4
 Rfo7mQsEQavEBdWWjbga6eMnDqtu+FC+qeTGYebToxEyp2lKDSoAsvt8w82tIlP/EbmRbDVn
 7bhjBlfRcFjVYw8uVDPptT0TV47vpoCVkTwcyb6OltJrvg/QzV9f07DJswuda1JH3/qvYu0p
 vjPnYvCq4NsqY2XSdAJ02HrdYPFtNyPEntu1n1KK+gJrstjtw7KsZ4ygXYrsm/oCBiVW/OgU
 g/XIlGErkrxe4vQvJyVwg6YH653YTX5hLLUEL1NS4TCo47RP+wi6y+TnuAL36UtK/uFyEuPy
 wwrDVcC4cIFhYSfsO0BumEI65yu7a8aHbGfq2lW251UcoU48Z27ZUUZd2Dr6O/n8poQHbaTd
 6bJJSjzGGHZVbRP9UQ3lkmkmc0+XCHmj5WhwNNYjgbbmML7y0fsJT5RgvefAIFfHBg7fTY/i
 kBEimoUsTEQz+N4hbKwo1hULfVxDJStE4sbPhjbsPCrlXf6W9CxSyQ0qmZ2bXsLQYRj2xqd1
 bpA+1o1j2N4/au1R/uSiUFjewJdT/LX1EklKDcQwpk06Af/N7VZtSfEJeRV04unbsKVXWZAk
 uAJyDDKN99ziC0Wz5kcPyVD1HNf8bgaqGDzrv3TfYjwqayRFcMf7xJaL9xXedMcAEQEAAcLB
 XwQYAQgACQUCUuE2fwIbDAAKCRBlw/kGpdefoG4XEACD1Qf/er8EA7g23HMxYWd3FXHThrVQ
 HgiGdk5Yh632vjOm9L4sd/GCEACVQKjsu98e8o3ysitFlznEns5EAAXEbITrgKWXDDUWGYxd
 pnjj2u+GkVdsOAGk0kxczX6s+VRBhpbBI2PWnOsRJgU2n10PZ3mZD4Xu9kU2IXYmuW+e5KCA
 vTArRUdCrAtIa1k01sPipPPw6dfxx2e5asy21YOytzxuWFfJTGnVxZZSCyLUO83sh6OZhJkk
 b9rxL9wPmpN/t2IPaEKoAc0FTQZS36wAMOXkBh24PQ9gaLJvfPKpNzGD8XWR5HHF0NLIJhgg
 4ZlEXQ2fVp3XrtocHqhu4UZR4koCijgB8sB7Tb0GCpwK+C4UePdFLfhKyRdSXuvY3AHJd4CP
 4JzW0Bzq/WXY3XMOzUTYApGQpnUpdOmuQSfpV9MQO+/jo7r6yPbxT7CwRS5dcQPzUiuHLK9i
 nvjREdh84qycnx0/6dDroYhp0DFv4udxuAvt1h4wGwTPRQZerSm4xaYegEFusyhbZrI0U9tJ
 B8WrhBLXDiYlyJT6zOV2yZFuW47VrLsjYnHwn27hmxTC/7tvG3euCklmkn9Sl9IAKFu29RSo
 d5bD8kMSCYsTqtTfT6W4A3qHGvIDta3ptLYpIAOD2sY3GYq2nf3Bbzx81wZK14JdDDHUX2Rs
 6+ahAA==
In-Reply-To: <CABfawhmovqKjTSRbjgSqhY7kDhANyHrXFHYyPTGhsrnT1cdtBQ@mail.gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 05/01/2024 4:09 pm, Tamas K Lengyel wrote:
> On Fri, Jan 5, 2024 at 2:34 AM Jan Beulich <jbeulich@suse.com> wrote:
>> On 04.01.2024 18:13, Tamas K Lengyel wrote:
>>> Fix warning:
>>> (XEN) UBSAN: Undefined behaviour in arch/x86/cpu/mwait-idle.c:1300:44
>>> (XEN) left shift of 15 by 28 places cannot be represented in type 'int'
>>>
>>> Signed-off-by: Tamas K Lengyel <tamas.lengyel@intel.com>
>>> Fixes: 5a211704e88 ("mwait-idle: prevent SKL-H boot failure when C8+C9+C10 enabled")
>> No matter that I appreciate the change, I think this wants fixing by a
>> patch to the (Linux) original, which we'd then import (like we do for
>> other changes, including the one referenced by the Fixes: tag).
> Feel free to submit it to other projects if the same issue applies to
> them. I only ran into this with Xen and can only test it with Xen.

Linux is affected by this, but a fix to Linux won't apply to Xen because
Xen already diverged from Linux in this function.

~Andrew


From xen-devel-bounces@lists.xenproject.org Fri Jan 05 22:49:02 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 05 Jan 2024 22:49:02 +0000
Received: from list by lists.xenproject.org with outflank-mailman.662389.1032471 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLszd-0000bZ-8M; Fri, 05 Jan 2024 22:48:45 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 662389.1032471; Fri, 05 Jan 2024 22:48:45 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLszd-0000bS-5J; Fri, 05 Jan 2024 22:48:45 +0000
Received: by outflank-mailman (input) for mailman id 662389;
 Fri, 05 Jan 2024 22:48:43 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=PmVw=IP=kernel.org=sstabellini@srs-se1.protection.inumbo.net>)
 id 1rLszb-0000bM-H0
 for xen-devel@lists.xenproject.org; Fri, 05 Jan 2024 22:48:43 +0000
Received: from ams.source.kernel.org (ams.source.kernel.org [145.40.68.75])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 90bf74c6-ac1c-11ee-9b0f-b553b5be7939;
 Fri, 05 Jan 2024 23:48:38 +0100 (CET)
Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58])
 by ams.source.kernel.org (Postfix) with ESMTP id D9086B81E09;
 Fri,  5 Jan 2024 22:48:37 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 774ECC433C7;
 Fri,  5 Jan 2024 22:48:35 +0000 (UTC)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 90bf74c6-ac1c-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
	s=k20201202; t=1704494916;
	bh=aU1WDkSjgKaa2cgEWCoozERaFcSneIEV3tBWAd/2mPw=;
	h=Date:From:To:cc:Subject:In-Reply-To:References:From;
	b=rUER8ZBQ2G8uDOSDRwOAxQoJ+iPyGgVCDmkcj3volmt+LR/YNLMog4EmInVw7qf2e
	 LZdLkknke3o2PQJtHLXcvEkMu6lY7YN3BSwIHEX9jxPfdbC6CeECoBRWzDbPQpTooM
	 cR/qwnly+ae7mAq0dZsC54f9TGiyogJ5dlzCg8V4tKpZA8bmQCT2xXsXFdWtL6bG05
	 HzyNpsSA7gPkYGAMFZR5US8URUbPVsK1SDm9v+ZqIQfNlpcmn5NowIFEqHqlY5lLDB
	 mFUuN9V/VHhbPhQcl2c7Ug42lvPZuKYvC+ZObQ6Dyv1+DQPtEfqKD5J09EiA8HsGvh
	 2PNIouH4yI6kQ==
Date: Fri, 5 Jan 2024 14:48:33 -0800 (PST)
From: Stefano Stabellini <sstabellini@kernel.org>
X-X-Sender: sstabellini@ubuntu-linux-20-04-desktop
To: Federico Serafini <federico.serafini@bugseng.com>
cc: Jan Beulich <jbeulich@suse.com>, 
    Nicola Vetrini <nicola.vetrini@bugseng.com>, 
    Andrew Cooper <andrew.cooper3@citrix.com>, consulting@bugseng.com, 
    =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>, 
    Wei Liu <wl@xen.org>, xen-devel@lists.xenproject.org, 
    Stefano Stabellini <sstabellini@kernel.org>
Subject: Re: [XEN RFC] x86/uaccess: remove __{put,get}_user_bad()
In-Reply-To: <6a39fe3e-524f-4e39-81bc-ffb3d48ba306@bugseng.com>
Message-ID: <alpine.DEB.2.22.394.2401051445120.3675@ubuntu-linux-20-04-desktop>
References: <9cf852da1c03b614bf5010132c58a18adc2a4161.1703155225.git.federico.serafini@bugseng.com> <a2050ac1-e205-4d7f-b9b1-aa625136e63a@suse.com> <0c5bbfde-4cf0-4878-b1ee-ccc8eb775464@citrix.com> <eb53449bd6595ea0931460e62dd57b9c@bugseng.com>
 <1330c757-1ca3-4b07-898b-799cbfa67e8a@suse.com> <6a39fe3e-524f-4e39-81bc-ffb3d48ba306@bugseng.com>
User-Agent: Alpine 2.22 (DEB 394 2020-01-19)
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="8323329-291384912-1704494916=:3675"

  This message is in MIME format.  The first part should be readable text,
  while the remaining parts are likely unreadable without MIME-aware tools.

--8323329-291384912-1704494916=:3675
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8BIT

On Fri, 5 Jan 2024, Federico Serafini wrote:
> Hello everyone,
> 
> On 21/12/23 13:41, Jan Beulich wrote:
> > On 21.12.2023 13:01, Nicola Vetrini wrote:
> > > Hi Andrew,
> > > 
> > > On 2023-12-21 12:03, Andrew Cooper wrote:
> > > > On 21/12/2023 10:58 am, Jan Beulich wrote:
> > > > > On 21.12.2023 11:53, Federico Serafini wrote:
> > > > > > Remove declarations of __put_user_bad() and __get_user_bad()
> > > > > > since they have no definition.
> > > > > > Replace their uses with a break statement to address violations of
> > > > > > MISRA C:2012 Rule 16.3 ("An unconditional `break' statement shall
> > > > > > terminate every switch-clause").
> > > > > > No functional change.
> > > > > > 
> > > > > > Signed-off-by: Federico Serafini <federico.serafini@bugseng.com>
> > > > > > ---
> > > > > > Several violations of Rule 16.3 come from uses of macros
> > > > > > get_unsafe_size() and put_unsafe_size().
> > > > > > Looking at the macro definitions I found __get_user_bad() and
> > > > > > __put_user_bad().
> > > > > > I was wondering if instead of just adding the break statement I can
> > > > > > also remove
> > > > > > such functions which seem to not have a definition.
> > > > > No, you can't. Try introducing a caller which "accidentally" uses the
> > > > > wrong size. Without your change you'll observe the build failing (in
> > > > > a somewhat obscure way, but still), while with your change bad code
> > > > > will silently be generated.
> > > > 
> > > > The construct here is deliberate.  It's a build time assertion that bad
> > > > sizes aren't used.
> > > > 
> > > > __bitop_bad_size() and __xsm_action_mismatch_detected() are the same
> > > > pattern in other areas of code too, with the latter being more explicit
> > > > because of how it's wrapped by LINKER_BUG_ON().
> > > > 
> > > > 
> > > > It is slightly horrible, and not the most obvious construct for
> > > > newcomers.  If there's an alternative way to get a build assertion, we
> > > > could consider switching to a new pattern.
> > > 
> > > would you be in favour of a solution with a BUILD_BUG_ON in the default
> > > branch followed by a break?
> > > 
> > > default:
> > >       BUILD_BUG_ON(!size || size >=8 || (size & (size - 1)));
> > >       break;
> > 
> > I don't think this would compile - BUILD_BUG_ON() wants a compile-time
> > constant passed.
> 
> What do you think about adding the following macro to compiler.h:
> 
> #define static_assert_unreachable(identifier) \
>     asm("unreachable " #identifier " reached")
> 
> It expands to an invalid assembly instruction that will lead to a
> customizable error message generated by the assembler instead of the
> linker (anticipating the error detection).
> 
> The use of this macro will indicate a program point considered
> unreachable (and as such removed) by the static analysis performed by the
> compiler, even at an optimization level -O0.
> 
> An example of use is in the default case of put_unsafe_size():
> 
> default: static_assert_unreachable(default);
> 
> In case a wrong size will be used, the following message will be
> generated:
> 
> ./arch/x86/include/asm/uaccess.h: Assembler messages:
> ./arch/x86/include/asm/uaccess.h:257: Error: no such instruction: `unreachable
> default reached'
> 
> 
> Note that adopting the macro and discussing its definition are two
> separate things:
> I think we can all agree on the fact that the use of such macro improves
> readability, so I would suggest its adoption.
> Whereas for its definition, if you don't like the invalid asm
> instruction, we could discuss for a different solution, for example,
> the following is something similar to what you are doing now:
> 
> #define static_assert_unreachable(identifier) \
>     extern void identifier(void);             \
>     identifier()
> 
> 
> Note also that the problem of the missing break statement (that violates
> Rule 16.3) is still present, it could be addressed by adding the break
> or deviating for such special cases, do you have any preferences?

So overall for clarity you are suggesting:


diff --git a/xen/arch/x86/include/asm/uaccess.h b/xen/arch/x86/include/asm/uaccess.h
index 7443519d5b..7e7ef77e49 100644
--- a/xen/arch/x86/include/asm/uaccess.h
+++ b/xen/arch/x86/include/asm/uaccess.h
@@ -208,7 +205,9 @@ do {                                                                       \
     case 8:                                                                \
         put_unsafe_asm(x, ptr, grd, retval, "q",  "", "ir", errret);       \
         break;                                                             \
-    default: __put_user_bad();                                             \
+    default:                                                               \
+        static_assert_unreachable(default);                                \
+        break;                                                             \
     }                                                                      \
     clac();                                                                \
 } while ( false )


I prefer static_assert_unreachable(default) over __put_user_bad()
because it is even clearer about its intent and still generates a
build-time error.

Regarding the addition of the break, I think that's OK for me. But I am
guessing that Jan will prefer to add static_assert_unreachable to
docs/misra/deviations.rst like we did for BUG() so that we don't need to
add the break.
--8323329-291384912-1704494916=:3675--


From xen-devel-bounces@lists.xenproject.org Fri Jan 05 23:09:59 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 05 Jan 2024 23:09:59 +0000
Received: from list by lists.xenproject.org with outflank-mailman.662395.1032480 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLtK6-0004J4-4d; Fri, 05 Jan 2024 23:09:54 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 662395.1032480; Fri, 05 Jan 2024 23:09:54 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLtK6-0004Ix-23; Fri, 05 Jan 2024 23:09:54 +0000
Received: by outflank-mailman (input) for mailman id 662395;
 Fri, 05 Jan 2024 23:09:53 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rLtK5-0004In-Ad; Fri, 05 Jan 2024 23:09:53 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rLtK4-0001mi-SG; Fri, 05 Jan 2024 23:09:52 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rLtK4-0001ay-EO; Fri, 05 Jan 2024 23:09:52 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rLtK4-0005xG-Da; Fri, 05 Jan 2024 23:09:52 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=k34DtSk6f8jVh69/dpwXoUF2ACIYQ93UXHBXjJXleO0=; b=HDND0wGti0cs5cfC812UmFJRoQ
	cA00PPQN3TWiXzZphay4k4AmgKe4aZ8iDmaTMkIJhQRakJStBwgUQcHCqdcpYD8fPNO0vGHOPsRgt
	fzjb56j/JCN4EdOoA7KdsVhK71uN1rNNxhusNBgFu9KJQf389iwT3QoapKyo+UIGkYuY=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184259-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [ovmf test] 184259: all pass - PUSHED
X-Osstest-Versions-This:
    ovmf=9cf1d03ebe076b3e3825dfebbc19fd6b52b5f336
X-Osstest-Versions-That:
    ovmf=e8166a852e63ee0c7c37291c1f88b19cc4692514
From: osstest service owner <osstest-admin@xenproject.org>
Date: Fri, 05 Jan 2024 23:09:52 +0000

flight 184259 ovmf real [real]
http://logs.test-lab.xenproject.org/osstest/logs/184259/

Perfect :-)
All tests in this flight passed as required
version targeted for testing:
 ovmf                 9cf1d03ebe076b3e3825dfebbc19fd6b52b5f336
baseline version:
 ovmf                 e8166a852e63ee0c7c37291c1f88b19cc4692514

Last test of basis   184257  2024-01-05 07:43:00 Z    0 days
Testing same since   184259  2024-01-05 20:42:55 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Nate DeSimone <nathaniel.l.desimone@intel.com>

jobs:
 build-amd64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-amd64-amd64-xl-qemuu-ovmf-amd64                         pass    
 test-amd64-i386-xl-qemuu-ovmf-amd64                          pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Pushing revision :

To xenbits.xen.org:/home/xen/git/osstest/ovmf.git
   e8166a852e..9cf1d03ebe  9cf1d03ebe076b3e3825dfebbc19fd6b52b5f336 -> xen-tested-master


From xen-devel-bounces@lists.xenproject.org Sat Jan 06 00:46:32 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 06 Jan 2024 00:46:32 +0000
Received: from list by lists.xenproject.org with outflank-mailman.662401.1032491 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLupP-000274-7A; Sat, 06 Jan 2024 00:46:19 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 662401.1032491; Sat, 06 Jan 2024 00:46:19 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLupP-00026x-4H; Sat, 06 Jan 2024 00:46:19 +0000
Received: by outflank-mailman (input) for mailman id 662401;
 Sat, 06 Jan 2024 00:46:17 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=g2yR=IQ=kernel.org=sstabellini@srs-se1.protection.inumbo.net>)
 id 1rLupM-000265-VI
 for xen-devel@lists.xenproject.org; Sat, 06 Jan 2024 00:46:16 +0000
Received: from sin.source.kernel.org (sin.source.kernel.org [145.40.73.55])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id fda94620-ac2c-11ee-98ef-6d05b1d4d9a1;
 Sat, 06 Jan 2024 01:46:14 +0100 (CET)
Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58])
 by sin.source.kernel.org (Postfix) with ESMTP id BA8CDCE1F4A;
 Sat,  6 Jan 2024 00:46:09 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 4C25AC433C7;
 Sat,  6 Jan 2024 00:46:07 +0000 (UTC)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: fda94620-ac2c-11ee-98ef-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
	s=k20201202; t=1704501969;
	bh=51JQYbLOw6xtOk4MFHz9H0ezeQhXUn1O6WTmNNcjXh4=;
	h=Date:From:To:cc:Subject:In-Reply-To:References:From;
	b=T4kmyN97cjbNy9EVAzMDgMWmul4Y9tU4VFX5YDNqcG6ebEYTDbaLr/3GHkhJaxHCQ
	 +uyy68zGDFKMT0K1VOYiYBi8kUgJe4wWTsjlaT4QLVSU5KyQa8ggKTlX9PdBDIHyBs
	 +A1B1e9n7vKTgNh9mcjdScroILwLm6QEGPzu5Y3gGrmd9OyU4TkSNilybpeThMLFlD
	 bqPQSFmSHqkhax9lBeDvsFyGv+UZuREcGjdQX1N4YC2B8TyZ+rRw5d9uKXUmrliqr1
	 d2uXiC9642u3JkQrdRb8/IIQDvOzHEYT50AL6xwYKHRX+8MBAOYBndjjYD9BLl4oo6
	 yapXVQ/M7z3YQ==
Date: Fri, 5 Jan 2024 16:46:05 -0800 (PST)
From: Stefano Stabellini <sstabellini@kernel.org>
X-X-Sender: sstabellini@ubuntu-linux-20-04-desktop
To: Jiqian Chen <Jiqian.Chen@amd.com>
cc: xen-devel@lists.xenproject.org, Jan Beulich <jbeulich@suse.com>, 
    Andrew Cooper <andrew.cooper3@citrix.com>, 
    =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>, 
    Wei Liu <wl@xen.org>, George Dunlap <george.dunlap@citrix.com>, 
    Julien Grall <julien@xen.org>, Stefano Stabellini <sstabellini@kernel.org>, 
    Anthony PERARD <anthony.perard@citrix.com>, 
    Juergen Gross <jgross@suse.com>, 
    Stewart Hildebrand <Stewart.Hildebrand@amd.com>, 
    Huang Rui <Ray.Huang@amd.com>, Huang Rui <ray.huang@amd.com>
Subject: Re: [RFC XEN PATCH v4 2/5] x86/pvh: Allow (un)map_pirq when caller
 isn't DOMID_SELF
In-Reply-To: <20240105070920.350113-3-Jiqian.Chen@amd.com>
Message-ID: <alpine.DEB.2.22.394.2401051639240.3675@ubuntu-linux-20-04-desktop>
References: <20240105070920.350113-1-Jiqian.Chen@amd.com> <20240105070920.350113-3-Jiqian.Chen@amd.com>
User-Agent: Alpine 2.22 (DEB 394 2020-01-19)
MIME-Version: 1.0
Content-Type: text/plain; charset=US-ASCII

On Fri, 5 Jan 2024, Jiqian Chen wrote:
> If run Xen with PVH dom0 and hvm domU, hvm will map a pirq for
> a passthrough device by using gsi, see
> xen_pt_realize->xc_physdev_map_pirq and
> pci_add_dm_done->xc_physdev_map_pirq. Then xc_physdev_map_pirq
> will call into Xen, but in hvm_physdev_op, PHYSDEVOP_map_pirq
> is not allowed because currd is PVH dom0 and PVH has no
> X86_EMU_USE_PIRQ flag, it will fail at has_pirq check.
> 
> So, allow PHYSDEVOP_map_pirq when domid of the caller is not
> DOMID_SELF no matter whether currd has X86_EMU_USE_PIRQ flag
> and also allow PHYSDEVOP_unmap_pirq for the failed path to
> unmap pirq.
> 
> Co-developed-by: Huang Rui <ray.huang@amd.com>
> Signed-off-by: Jiqian Chen <Jiqian.Chen@amd.com>
> ---
>  xen/arch/x86/hvm/hypercall.c | 27 +++++++++++++++++++++++++--
>  1 file changed, 25 insertions(+), 2 deletions(-)
> 
> diff --git a/xen/arch/x86/hvm/hypercall.c b/xen/arch/x86/hvm/hypercall.c
> index 6ad5b4d5f11f..632a68be3cc4 100644
> --- a/xen/arch/x86/hvm/hypercall.c
> +++ b/xen/arch/x86/hvm/hypercall.c
> @@ -10,6 +10,7 @@
>  #include <xen/hypercall.h>
>  #include <xen/ioreq.h>
>  #include <xen/nospec.h>
> +#include <xen/guest_access.h>
>  
>  #include <asm/hvm/emulate.h>
>  #include <asm/hvm/support.h>
> @@ -72,8 +73,30 @@ long hvm_physdev_op(int cmd, XEN_GUEST_HANDLE_PARAM(void) arg)
>  
>      switch ( cmd )
>      {
> -    case PHYSDEVOP_map_pirq:
> -    case PHYSDEVOP_unmap_pirq:
> +    case PHYSDEVOP_map_pirq: {
> +        physdev_map_pirq_t map;
> +
> +        if ( copy_from_guest(&map, arg, 1) != 0 )
> +            return -EFAULT;
> +
> +        if ( !has_pirq(currd) && map.domid == DOMID_SELF )
> +            return -ENOSYS;

This looks OK to me although there is already another copy_from_guest in
do_physdev_op, but I don't see an easy way to make it better.

Also, you could write this check like this:

        d = rcu_lock_domain_by_any_id(map.domid);
        if ( d == NULL )
            return -ESRCH;
        if ( !has_pirq(d) )
            return -ENOSYS;
        rcu_unlock_domain(d);

This way it is a bit more generic and not special-cased to DOMID_SELF.

I'll let the x86 maintainers comment on the way the prefer it.


> +        break;
> +    }
> +
> +    case PHYSDEVOP_unmap_pirq: {
> +        physdev_unmap_pirq_t unmap;
> +
> +        if ( copy_from_guest(&unmap, arg, 1) != 0 )
> +            return -EFAULT;
> +
> +        if ( !has_pirq(currd) && unmap.domid == DOMID_SELF )
> +            return -ENOSYS;
> +
> +        break;
> +    }
> +
>      case PHYSDEVOP_eoi:
>      case PHYSDEVOP_irq_status_query:
>      case PHYSDEVOP_get_free_pirq:
> -- 
> 2.34.1
> 


From xen-devel-bounces@lists.xenproject.org Sat Jan 06 00:54:32 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 06 Jan 2024 00:54:32 +0000
Received: from list by lists.xenproject.org with outflank-mailman.662406.1032500 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLuxI-000443-2y; Sat, 06 Jan 2024 00:54:28 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 662406.1032500; Sat, 06 Jan 2024 00:54:28 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLuxI-00043w-0G; Sat, 06 Jan 2024 00:54:28 +0000
Received: by outflank-mailman (input) for mailman id 662406;
 Sat, 06 Jan 2024 00:54:27 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=g2yR=IQ=kernel.org=sstabellini@srs-se1.protection.inumbo.net>)
 id 1rLuxG-00043q-VN
 for xen-devel@lists.xenproject.org; Sat, 06 Jan 2024 00:54:26 +0000
Received: from sin.source.kernel.org (sin.source.kernel.org
 [2604:1380:40e1:4800::1])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 225b0ba6-ac2e-11ee-98ef-6d05b1d4d9a1;
 Sat, 06 Jan 2024 01:54:25 +0100 (CET)
Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58])
 by sin.source.kernel.org (Postfix) with ESMTP id 0777ECE1F4A;
 Sat,  6 Jan 2024 00:54:23 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id C2EC9C433C7;
 Sat,  6 Jan 2024 00:54:19 +0000 (UTC)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 225b0ba6-ac2e-11ee-98ef-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
	s=k20201202; t=1704502461;
	bh=0/eARfuTJ2vS8WCAOGEEFVqfFAGooNKG++AMQkqckac=;
	h=Date:From:To:cc:Subject:In-Reply-To:References:From;
	b=FiPA+do+vV8O1dF3P2K0CEmZ+pJpY5MAnjkDRew6VRkVouYFsdkkRS7jisoOcnjag
	 bvMJ9fpn4EtxZEk7ccbUOQSwxOsc6yENr9YhEvENtNJDzYyiIHaSDzrOj7KbcgQ5dx
	 Qd+tdWNrVun9CgZ+7tTo0tTQdyE7YgK5/rhqZnkuk1DqIzCJg7LDd6pnwo3LsjWji/
	 nL3z9WikSA7QWBe+eenPoiW7mVZdxgnVyvnvJ3p6OUbCGNKihGOvWt8A9Afwa2DNHW
	 velr3vHTEqdhjmTQ7lobQ2S9Qv9Q+wMDWXFOReXIY5eS6TG3OEILbaMh8I0LIxtlz2
	 SB2IO7YXNVH2w==
Date: Fri, 5 Jan 2024 16:54:17 -0800 (PST)
From: Stefano Stabellini <sstabellini@kernel.org>
X-X-Sender: sstabellini@ubuntu-linux-20-04-desktop
To: Jiqian Chen <Jiqian.Chen@amd.com>
cc: xen-devel@lists.xenproject.org, Jan Beulich <jbeulich@suse.com>, 
    Andrew Cooper <andrew.cooper3@citrix.com>, 
    =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>, 
    Wei Liu <wl@xen.org>, George Dunlap <george.dunlap@citrix.com>, 
    Julien Grall <julien@xen.org>, Stefano Stabellini <sstabellini@kernel.org>, 
    Anthony PERARD <anthony.perard@citrix.com>, 
    Juergen Gross <jgross@suse.com>, 
    Stewart Hildebrand <Stewart.Hildebrand@amd.com>, 
    Huang Rui <Ray.Huang@amd.com>, Huang Rui <ray.huang@amd.com>
Subject: Re: [RFC XEN PATCH v4 3/5] x86/pvh: Add PHYSDEVOP_setup_gsi for PVH
 dom0
In-Reply-To: <20240105070920.350113-4-Jiqian.Chen@amd.com>
Message-ID: <alpine.DEB.2.22.394.2401051651270.3675@ubuntu-linux-20-04-desktop>
References: <20240105070920.350113-1-Jiqian.Chen@amd.com> <20240105070920.350113-4-Jiqian.Chen@amd.com>
User-Agent: Alpine 2.22 (DEB 394 2020-01-19)
MIME-Version: 1.0
Content-Type: text/plain; charset=US-ASCII

On Fri, 5 Jan 2024, Jiqian Chen wrote:
> On PVH dom0, the gsis don't get registered, but
> the gsi of a passthrough device must be configured for it to
> be able to be mapped into a hvm domU.
> On Linux kernel side, it calles PHYSDEVOP_setup_gsi for
> passthrough devices to register gsi when dom0 is PVH.
> So, add PHYSDEVOP_setup_gsi for above purpose.
> 
> Co-developed-by: Huang Rui <ray.huang@amd.com>
> Signed-off-by: Jiqian Chen <Jiqian.Chen@amd.com>
> ---
>  xen/arch/x86/hvm/hypercall.c | 6 ++++++
>  1 file changed, 6 insertions(+)
> 
> diff --git a/xen/arch/x86/hvm/hypercall.c b/xen/arch/x86/hvm/hypercall.c
> index 632a68be3cc4..e27d3ca15185 100644
> --- a/xen/arch/x86/hvm/hypercall.c
> +++ b/xen/arch/x86/hvm/hypercall.c
> @@ -97,6 +97,12 @@ long hvm_physdev_op(int cmd, XEN_GUEST_HANDLE_PARAM(void) arg)
>          break;
>      }
>  
> +    case PHYSDEVOP_setup_gsi:
> +        if ( is_hardware_domain(currd) && !has_pirq(currd) )
> +            break;
> +        else
> +            return -ENOSYS;

I am not sure what is the best "if" check for this situation but I am
guessing we don't need has_pirq(currd). Maybe this is sufficient:

if ( is_hardware_domain(currd) )
    break;
else
    return -ENOSYS;


This is another one for the x86 maintainers.


>      case PHYSDEVOP_eoi:
>      case PHYSDEVOP_irq_status_query:
>      case PHYSDEVOP_get_free_pirq:
> -- 
> 2.34.1
> 


From xen-devel-bounces@lists.xenproject.org Sat Jan 06 01:09:08 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 06 Jan 2024 01:09:08 +0000
Received: from list by lists.xenproject.org with outflank-mailman.662411.1032510 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLvBP-0004RJ-8x; Sat, 06 Jan 2024 01:09:03 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 662411.1032510; Sat, 06 Jan 2024 01:09:03 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLvBP-0004RC-6I; Sat, 06 Jan 2024 01:09:03 +0000
Received: by outflank-mailman (input) for mailman id 662411;
 Sat, 06 Jan 2024 01:09:01 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=g2yR=IQ=kernel.org=sstabellini@srs-se1.protection.inumbo.net>)
 id 1rLvBN-0004R6-Gb
 for xen-devel@lists.xenproject.org; Sat, 06 Jan 2024 01:09:01 +0000
Received: from sin.source.kernel.org (sin.source.kernel.org [145.40.73.55])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 2a9f5ee9-ac30-11ee-9b0f-b553b5be7939;
 Sat, 06 Jan 2024 02:08:58 +0100 (CET)
Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58])
 by sin.source.kernel.org (Postfix) with ESMTP id C30F6CE202D;
 Sat,  6 Jan 2024 01:08:55 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id ED018C433C8;
 Sat,  6 Jan 2024 01:08:52 +0000 (UTC)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 2a9f5ee9-ac30-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
	s=k20201202; t=1704503334;
	bh=NfVZjfWzs8nDOd9iio1oKnFbEtq/60amzNF7MWOYcM4=;
	h=Date:From:To:cc:Subject:In-Reply-To:References:From;
	b=ZXjHYLI9ogABKfGjalClEsedmCckAO4vdhqWoYXDbGuNj5lVELgfkdFvF9j6CCm5O
	 7xpekBgoN+ZdMKC6yyHuawmhSydbAPvEOXmgZgsHlxam+KL7R8Rzdwo5YWXqoVJSvn
	 yZDWngJaeXzYvPs8Gkm1wet/b+nbQ/PtKqV8kiU9HVyKXGtnvywFc5UPABPGgUM9+o
	 Lj/0tDo83Sv1BpcsYQFD5T9o9O16fV9RxJW1fq4jDfp08YM1JW8uMzgi6B4GvV70tp
	 YmIJEbVdiT9lco+9alOawqy3OBnz0//p1oN6VpUSua+F1gY6END55QEwXO82yApotz
	 SQOoBTv5bQWEA==
Date: Fri, 5 Jan 2024 17:08:51 -0800 (PST)
From: Stefano Stabellini <sstabellini@kernel.org>
X-X-Sender: sstabellini@ubuntu-linux-20-04-desktop
To: Jiqian Chen <Jiqian.Chen@amd.com>
cc: xen-devel@lists.xenproject.org, Jan Beulich <jbeulich@suse.com>, 
    Andrew Cooper <andrew.cooper3@citrix.com>, 
    =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>, 
    Wei Liu <wl@xen.org>, George Dunlap <george.dunlap@citrix.com>, 
    Julien Grall <julien@xen.org>, Stefano Stabellini <sstabellini@kernel.org>, 
    Anthony PERARD <anthony.perard@citrix.com>, 
    Juergen Gross <jgross@suse.com>, 
    Stewart Hildebrand <Stewart.Hildebrand@amd.com>, 
    Huang Rui <Ray.Huang@amd.com>, Huang Rui <ray.huang@amd.com>
Subject: Re: [RFC XEN PATCH v4 4/5] domctl: Use gsi to grant/revoke irq
 permission
In-Reply-To: <20240105070920.350113-5-Jiqian.Chen@amd.com>
Message-ID: <alpine.DEB.2.22.394.2401051702200.3675@ubuntu-linux-20-04-desktop>
References: <20240105070920.350113-1-Jiqian.Chen@amd.com> <20240105070920.350113-5-Jiqian.Chen@amd.com>
User-Agent: Alpine 2.22 (DEB 394 2020-01-19)
MIME-Version: 1.0
Content-Type: text/plain; charset=US-ASCII

On Fri, 5 Jan 2024, Jiqian Chen wrote:
> Some type of domain don't have PIRQ, like PVH, current
> implementation is not suitable for those domain.
> 
> When passthrough a device to guest on PVH dom0, this
> pci_add_dm_done->XEN_DOMCTL_irq_permission will failed
> at domain_pirq_to_irq.
> 
> So, change it to use gsi to grant/revoke irq permission.
> And change the caller of XEN_DOMCTL_irq_permission to
> pass gsi to it instead of pirq.
> 
> Co-developed-by: Huang Rui <ray.huang@amd.com>
> Signed-off-by: Jiqian Chen <Jiqian.Chen@amd.com>

I realize there is no explanation or comment right now, but I think this
change would benefit from a in-code comment in xen/include/public/domctl.h
E.g.:

/* XEN_DOMCTL_irq_permission */
struct xen_domctl_irq_permission {
    uint32_t pirq;           /* pirq is the GSI on x86 */
    uint8_t allow_access;    /* flag to specify enable/disable of IRQ access */
    uint8_t pad[3];
};


> ---
>  tools/libs/light/libxl_pci.c |  6 ++++--
>  tools/libs/light/libxl_x86.c |  5 ++++-
>  xen/common/domctl.c          | 12 ++++++++++--
>  3 files changed, 18 insertions(+), 5 deletions(-)
> 
> diff --git a/tools/libs/light/libxl_pci.c b/tools/libs/light/libxl_pci.c
> index 96cb4da0794e..e1341d1e9850 100644
> --- a/tools/libs/light/libxl_pci.c
> +++ b/tools/libs/light/libxl_pci.c
> @@ -1418,6 +1418,7 @@ static void pci_add_dm_done(libxl__egc *egc,
>      unsigned long long start, end, flags, size;
>      int irq, i;
>      int r;
> +    int gsi;
>      uint32_t flag = XEN_DOMCTL_DEV_RDM_RELAXED;
>      uint32_t domainid = domid;
>      bool isstubdom = libxl_is_stubdom(ctx, domid, &domainid);
> @@ -1486,6 +1487,7 @@ static void pci_add_dm_done(libxl__egc *egc,
>          goto out_no_irq;
>      }
>      if ((fscanf(f, "%u", &irq) == 1) && irq) {
> +        gsi = irq;

A question for Roger and Jan: are we always guaranteed that gsi == irq
(also in the PV case)?

Also I don't think we necessarily need the gsi local variable, I would
just add an in-code comment below...


>          r = xc_physdev_map_pirq(ctx->xch, domid, irq, &irq);
>          if (r < 0) {
>              LOGED(ERROR, domainid, "xc_physdev_map_pirq irq=%d (error=%d)",
> @@ -1494,10 +1496,10 @@ static void pci_add_dm_done(libxl__egc *egc,
>              rc = ERROR_FAIL;
>              goto out;
>          }

... like this:

/* xc_domain_irq_permission takes a gsi, here we assume irq == gsi */
r = xc_domain_irq_permission(ctx->xch, domid, irq, 1);


> -        r = xc_domain_irq_permission(ctx->xch, domid, irq, 1);
> +        r = xc_domain_irq_permission(ctx->xch, domid, gsi, 1);
>          if (r < 0) {
>              LOGED(ERROR, domainid,
> -                  "xc_domain_irq_permission irq=%d (error=%d)", irq, r);
> +                  "xc_domain_irq_permission irq=%d (error=%d)", gsi, r);
>              fclose(f);
>              rc = ERROR_FAIL;
>              goto out;
> diff --git a/tools/libs/light/libxl_x86.c b/tools/libs/light/libxl_x86.c
> index d16573e72cd4..88ad50cf6360 100644
> --- a/tools/libs/light/libxl_x86.c
> +++ b/tools/libs/light/libxl_x86.c
> @@ -654,12 +654,15 @@ out:
>  int libxl__arch_domain_map_irq(libxl__gc *gc, uint32_t domid, int irq)

you could just rename the int irq parameter to int gsi ?


>  {
>      int ret;
> +    int gsi;
> +
> +    gsi = irq;
>  
>      ret = xc_physdev_map_pirq(CTX->xch, domid, irq, &irq);
>      if (ret)
>          return ret;
>  
> -    ret = xc_domain_irq_permission(CTX->xch, domid, irq, 1);
> +    ret = xc_domain_irq_permission(CTX->xch, domid, gsi, 1);
>      return ret;
>  }
> diff --git a/xen/common/domctl.c b/xen/common/domctl.c
> index f5a71ee5f78d..eeb975bd0194 100644
> --- a/xen/common/domctl.c
> +++ b/xen/common/domctl.c
> @@ -653,12 +653,20 @@ long do_domctl(XEN_GUEST_HANDLE_PARAM(xen_domctl_t) u_domctl)
>          unsigned int pirq = op->u.irq_permission.pirq, irq;
>          int allow = op->u.irq_permission.allow_access;

here we could benefit from renaming pirq to gsi, at least it becomes
clear:

unsigned int gsi = op->u.irq_permission.pirq, irq;


> -        if ( pirq >= current->domain->nr_pirqs )
> +        if ( pirq >= nr_irqs_gsi )
>          {
>              ret = -EINVAL;
>              break;
>          }
> -        irq = pirq_access_permitted(current->domain, pirq);
> +
> +        if ( irq_access_permitted(current->domain, pirq) )
> +            irq = pirq;
> +        else
> +        {
> +            ret = -EPERM;
> +            break;
> +        }
> +
>          if ( !irq || xsm_irq_permission(XSM_HOOK, d, irq, allow) )
>              ret = -EPERM;
>          else if ( allow )
> -- 
> 2.34.1
> 


From xen-devel-bounces@lists.xenproject.org Sat Jan 06 01:11:32 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 06 Jan 2024 01:11:32 +0000
Received: from list by lists.xenproject.org with outflank-mailman.662414.1032521 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLvDn-0006Lz-M4; Sat, 06 Jan 2024 01:11:31 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 662414.1032521; Sat, 06 Jan 2024 01:11:31 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLvDn-0006Ls-I6; Sat, 06 Jan 2024 01:11:31 +0000
Received: by outflank-mailman (input) for mailman id 662414;
 Sat, 06 Jan 2024 01:11:30 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=g2yR=IQ=kernel.org=sstabellini@srs-se1.protection.inumbo.net>)
 id 1rLvDm-0006Lk-80
 for xen-devel@lists.xenproject.org; Sat, 06 Jan 2024 01:11:30 +0000
Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 84e60213-ac30-11ee-98ef-6d05b1d4d9a1;
 Sat, 06 Jan 2024 02:11:29 +0100 (CET)
Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58])
 by dfw.source.kernel.org (Postfix) with ESMTP id 8AE7260C01;
 Sat,  6 Jan 2024 01:11:27 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 88499C433C7;
 Sat,  6 Jan 2024 01:11:25 +0000 (UTC)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 84e60213-ac30-11ee-98ef-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
	s=k20201202; t=1704503487;
	bh=JwGt2Wm5YFZdbLLMrkFQvX2Vojl2NToPOmw5snNCmfc=;
	h=Date:From:To:cc:Subject:In-Reply-To:References:From;
	b=ocK4xScL+LQUD4JL/CevIlGQXP3toi4OnS83jJ49mW12S8Mw4pkf84S9gb4OBiIT7
	 rQtBKI84m5Bp1klnjJWXFul9kcSfiedab0cmdEgXxeeriU1z3TEzdnvFcnV4wtOBcz
	 h7tt25WDvRZ3ycUKanpo8cg1e9ZG8YpmCZXg7Cei5YakwEWOdlNUzZjnsjgXn4pT2h
	 F1b/oiHJ1zOVsWDOf+nMrh2uqcA9k7MUbZfHcIGYEJM54G8697yRryZoODq8FTMGtr
	 bbhg8gmnlerqeN9bqHEP2C1IdlKReKFA3Ejy7PHH0hDs+AjyeOJzZKHHVRjMhrsSw/
	 cWkhsSVGyaB3Q==
Date: Fri, 5 Jan 2024 17:11:23 -0800 (PST)
From: Stefano Stabellini <sstabellini@kernel.org>
X-X-Sender: sstabellini@ubuntu-linux-20-04-desktop
To: Jiqian Chen <Jiqian.Chen@amd.com>
cc: xen-devel@lists.xenproject.org, Jan Beulich <jbeulich@suse.com>, 
    Andrew Cooper <andrew.cooper3@citrix.com>, 
    =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>, 
    Wei Liu <wl@xen.org>, George Dunlap <george.dunlap@citrix.com>, 
    Julien Grall <julien@xen.org>, Stefano Stabellini <sstabellini@kernel.org>, 
    Anthony PERARD <anthony.perard@citrix.com>, 
    Juergen Gross <jgross@suse.com>, 
    Stewart Hildebrand <Stewart.Hildebrand@amd.com>, 
    Huang Rui <Ray.Huang@amd.com>, Huang Rui <ray.huang@amd.com>
Subject: Re: [RFC XEN PATCH v4 5/5] libxl: Use gsi instead of irq for mapping
 pirq
In-Reply-To: <20240105070920.350113-6-Jiqian.Chen@amd.com>
Message-ID: <alpine.DEB.2.22.394.2401051711160.3675@ubuntu-linux-20-04-desktop>
References: <20240105070920.350113-1-Jiqian.Chen@amd.com> <20240105070920.350113-6-Jiqian.Chen@amd.com>
User-Agent: Alpine 2.22 (DEB 394 2020-01-19)
MIME-Version: 1.0
Content-Type: text/plain; charset=US-ASCII

On Fri, 5 Jan 2024, Jiqian Chen wrote:
> In PVH dom0, it uses the linux local interrupt mechanism,
> when it allocs irq for a gsi, it is dynamic, and follow
> the principle of applying first, distributing first. And
> the irq number is alloced from small to large, but the
> applying gsi number is not, may gsi 38 comes before gsi
> 28, that causes the irq number is not equal with the gsi
> number. And when passthrough a device, xl wants to use
> gsi to map pirq, see pci_add_dm_done->xc_physdev_map_pirq,
> but the gsi number is got from file
> /sys/bus/pci/devices/<sbdf>/irq in current code, so it
> will fail when mapping.
> 
> So, use real gsi number read from gsi sysfs.
> 
> Co-developed-by: Huang Rui <ray.huang@amd.com>
> Signed-off-by: Jiqian Chen <Jiqian.Chen@amd.com>

Reviewed-by: Stefano Stabellini <sstabellini@kernel.org>



From xen-devel-bounces@lists.xenproject.org Sat Jan 06 01:12:14 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 06 Jan 2024 01:12:14 +0000
Received: from list by lists.xenproject.org with outflank-mailman.662416.1032531 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLvET-0006rI-Ua; Sat, 06 Jan 2024 01:12:13 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 662416.1032531; Sat, 06 Jan 2024 01:12:13 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLvET-0006rB-RQ; Sat, 06 Jan 2024 01:12:13 +0000
Received: by outflank-mailman (input) for mailman id 662416;
 Sat, 06 Jan 2024 01:12:11 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=g2yR=IQ=kernel.org=sstabellini@srs-se1.protection.inumbo.net>)
 id 1rLvER-0006Lk-Q6
 for xen-devel@lists.xenproject.org; Sat, 06 Jan 2024 01:12:11 +0000
Received: from sin.source.kernel.org (sin.source.kernel.org [145.40.73.55])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 9d0c897f-ac30-11ee-98ef-6d05b1d4d9a1;
 Sat, 06 Jan 2024 02:12:10 +0100 (CET)
Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58])
 by sin.source.kernel.org (Postfix) with ESMTP id 93F2BCE09B1;
 Sat,  6 Jan 2024 01:12:07 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 237DBC433C7;
 Sat,  6 Jan 2024 01:12:04 +0000 (UTC)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 9d0c897f-ac30-11ee-98ef-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
	s=k20201202; t=1704503526;
	bh=LZGW0rTnjiFVF+gq8jTRBgHQ8qC6OuDow6Brm+Fanw0=;
	h=Date:From:To:cc:Subject:In-Reply-To:References:From;
	b=ptQD2iihbQAj4u5r2UceTsuNKJP9RVi3V/PLIMlO416/shwHHIMkodPqOPCvlWvLn
	 kyBeqP3o8b//dFg8czWnglZH0kFyEYEnWyvwJkGp5O80n3EJETCUdGx+JXwmmaDwpR
	 qrfHgftuVqukjj1jXLAmXMpySxo3vtOsNKMR4t0GidvX/vCZ8eGrrkdgbHR9Sy4hX9
	 CFoJGc0Obz1ugxxCQKoKolrzyV3dVoSp2PptK3bHAAYqvxst9NBVQ21N8Vj3cxX81l
	 er5pRXEK9x9mTHWcyquvOf6k4aYjkVxDCwrB0n0kWYvbchVxFwgjV5jvBNXXojRMQa
	 MDU21wMb0Cujw==
Date: Fri, 5 Jan 2024 17:12:03 -0800 (PST)
From: Stefano Stabellini <sstabellini@kernel.org>
X-X-Sender: sstabellini@ubuntu-linux-20-04-desktop
To: Stefano Stabellini <sstabellini@kernel.org>
cc: Jiqian Chen <Jiqian.Chen@amd.com>, xen-devel@lists.xenproject.org, 
    Jan Beulich <jbeulich@suse.com>, Andrew Cooper <andrew.cooper3@citrix.com>, 
    =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>, 
    Wei Liu <wl@xen.org>, George Dunlap <george.dunlap@citrix.com>, 
    Julien Grall <julien@xen.org>, Anthony PERARD <anthony.perard@citrix.com>, 
    Juergen Gross <jgross@suse.com>, 
    Stewart Hildebrand <Stewart.Hildebrand@amd.com>, 
    Huang Rui <Ray.Huang@amd.com>, Huang Rui <ray.huang@amd.com>
Subject: Re: [RFC XEN PATCH v4 4/5] domctl: Use gsi to grant/revoke irq
 permission
In-Reply-To: <alpine.DEB.2.22.394.2401051702200.3675@ubuntu-linux-20-04-desktop>
Message-ID: <alpine.DEB.2.22.394.2401051711300.3675@ubuntu-linux-20-04-desktop>
References: <20240105070920.350113-1-Jiqian.Chen@amd.com> <20240105070920.350113-5-Jiqian.Chen@amd.com> <alpine.DEB.2.22.394.2401051702200.3675@ubuntu-linux-20-04-desktop>
User-Agent: Alpine 2.22 (DEB 394 2020-01-19)
MIME-Version: 1.0
Content-Type: text/plain; charset=US-ASCII

On Fri, 5 Jan 2024, Stefano Stabellini wrote:
> On Fri, 5 Jan 2024, Jiqian Chen wrote:
> > Some type of domain don't have PIRQ, like PVH, current
> > implementation is not suitable for those domain.
> > 
> > When passthrough a device to guest on PVH dom0, this
> > pci_add_dm_done->XEN_DOMCTL_irq_permission will failed
> > at domain_pirq_to_irq.
> > 
> > So, change it to use gsi to grant/revoke irq permission.
> > And change the caller of XEN_DOMCTL_irq_permission to
> > pass gsi to it instead of pirq.
> > 
> > Co-developed-by: Huang Rui <ray.huang@amd.com>
> > Signed-off-by: Jiqian Chen <Jiqian.Chen@amd.com>
> 
> I realize there is no explanation or comment right now, but I think this
> change would benefit from a in-code comment in xen/include/public/domctl.h
> E.g.:
> 
> /* XEN_DOMCTL_irq_permission */
> struct xen_domctl_irq_permission {
>     uint32_t pirq;           /* pirq is the GSI on x86 */
>     uint8_t allow_access;    /* flag to specify enable/disable of IRQ access */
>     uint8_t pad[3];
> };
> 
> 
> > ---
> >  tools/libs/light/libxl_pci.c |  6 ++++--
> >  tools/libs/light/libxl_x86.c |  5 ++++-
> >  xen/common/domctl.c          | 12 ++++++++++--
> >  3 files changed, 18 insertions(+), 5 deletions(-)
> > 
> > diff --git a/tools/libs/light/libxl_pci.c b/tools/libs/light/libxl_pci.c
> > index 96cb4da0794e..e1341d1e9850 100644
> > --- a/tools/libs/light/libxl_pci.c
> > +++ b/tools/libs/light/libxl_pci.c
> > @@ -1418,6 +1418,7 @@ static void pci_add_dm_done(libxl__egc *egc,
> >      unsigned long long start, end, flags, size;
> >      int irq, i;
> >      int r;
> > +    int gsi;

After reading patch #5 I think you could just rename the int irq local
variable to int gsi.


> >      uint32_t flag = XEN_DOMCTL_DEV_RDM_RELAXED;
> >      uint32_t domainid = domid;
> >      bool isstubdom = libxl_is_stubdom(ctx, domid, &domainid);
> > @@ -1486,6 +1487,7 @@ static void pci_add_dm_done(libxl__egc *egc,
> >          goto out_no_irq;
> >      }
> >      if ((fscanf(f, "%u", &irq) == 1) && irq) {
> > +        gsi = irq;
> 
> A question for Roger and Jan: are we always guaranteed that gsi == irq
> (also in the PV case)?
> 
> Also I don't think we necessarily need the gsi local variable, I would
> just add an in-code comment below...
> 
> 
> >          r = xc_physdev_map_pirq(ctx->xch, domid, irq, &irq);
> >          if (r < 0) {
> >              LOGED(ERROR, domainid, "xc_physdev_map_pirq irq=%d (error=%d)",
> > @@ -1494,10 +1496,10 @@ static void pci_add_dm_done(libxl__egc *egc,
> >              rc = ERROR_FAIL;
> >              goto out;
> >          }
> 
> ... like this:
> 
> /* xc_domain_irq_permission takes a gsi, here we assume irq == gsi */
> r = xc_domain_irq_permission(ctx->xch, domid, irq, 1);
> 
> 
> > -        r = xc_domain_irq_permission(ctx->xch, domid, irq, 1);
> > +        r = xc_domain_irq_permission(ctx->xch, domid, gsi, 1);
> >          if (r < 0) {
> >              LOGED(ERROR, domainid,
> > -                  "xc_domain_irq_permission irq=%d (error=%d)", irq, r);
> > +                  "xc_domain_irq_permission irq=%d (error=%d)", gsi, r);
> >              fclose(f);
> >              rc = ERROR_FAIL;
> >              goto out;
> > diff --git a/tools/libs/light/libxl_x86.c b/tools/libs/light/libxl_x86.c
> > index d16573e72cd4..88ad50cf6360 100644
> > --- a/tools/libs/light/libxl_x86.c
> > +++ b/tools/libs/light/libxl_x86.c
> > @@ -654,12 +654,15 @@ out:
> >  int libxl__arch_domain_map_irq(libxl__gc *gc, uint32_t domid, int irq)
> 
> you could just rename the int irq parameter to int gsi ?
> 
> 
> >  {
> >      int ret;
> > +    int gsi;
> > +
> > +    gsi = irq;
> >  
> >      ret = xc_physdev_map_pirq(CTX->xch, domid, irq, &irq);
> >      if (ret)
> >          return ret;
> >  
> > -    ret = xc_domain_irq_permission(CTX->xch, domid, irq, 1);
> > +    ret = xc_domain_irq_permission(CTX->xch, domid, gsi, 1);
> >      return ret;
> >  }
> > diff --git a/xen/common/domctl.c b/xen/common/domctl.c
> > index f5a71ee5f78d..eeb975bd0194 100644
> > --- a/xen/common/domctl.c
> > +++ b/xen/common/domctl.c
> > @@ -653,12 +653,20 @@ long do_domctl(XEN_GUEST_HANDLE_PARAM(xen_domctl_t) u_domctl)
> >          unsigned int pirq = op->u.irq_permission.pirq, irq;
> >          int allow = op->u.irq_permission.allow_access;
> 
> here we could benefit from renaming pirq to gsi, at least it becomes
> clear:
> 
> unsigned int gsi = op->u.irq_permission.pirq, irq;
> 
> 
> > -        if ( pirq >= current->domain->nr_pirqs )
> > +        if ( pirq >= nr_irqs_gsi )
> >          {
> >              ret = -EINVAL;
> >              break;
> >          }
> > -        irq = pirq_access_permitted(current->domain, pirq);
> > +
> > +        if ( irq_access_permitted(current->domain, pirq) )
> > +            irq = pirq;
> > +        else
> > +        {
> > +            ret = -EPERM;
> > +            break;
> > +        }
> > +
> >          if ( !irq || xsm_irq_permission(XSM_HOOK, d, irq, allow) )
> >              ret = -EPERM;
> >          else if ( allow )
> > -- 
> > 2.34.1
> > 
> 


From xen-devel-bounces@lists.xenproject.org Sat Jan 06 02:03:00 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 06 Jan 2024 02:03:00 +0000
Received: from list by lists.xenproject.org with outflank-mailman.662423.1032541 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLw1N-0007QM-HU; Sat, 06 Jan 2024 02:02:45 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 662423.1032541; Sat, 06 Jan 2024 02:02:45 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLw1N-0007QF-CZ; Sat, 06 Jan 2024 02:02:45 +0000
Received: by outflank-mailman (input) for mailman id 662423;
 Sat, 06 Jan 2024 02:02:44 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rLw1M-0007Q5-EF; Sat, 06 Jan 2024 02:02:44 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rLw1M-0004Zw-58; Sat, 06 Jan 2024 02:02:44 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rLw1L-0005ln-I3; Sat, 06 Jan 2024 02:02:43 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rLw1L-0007n7-HE; Sat, 06 Jan 2024 02:02:43 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=Yt3y3RMC01qhxDeZWusju7gFOTm6j9mf2UIU2IHpA/s=; b=W81FsEF4G6WNmagMbesO3x6bXt
	/OVM1+gZghxDDCi1DqG5QM3RwnQeggG4xP/p//Epca03lWUmX1m2/hB0CveKiJ1L918lehfZiLvLQ
	wwPLUgs4kWvQjBTPQ+PBUUlyXIKDxWmZqUhSKTybmS6ysDeIv631ghrYlDy1PpmtxAYM=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184258-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [linux-linus test] 184258: trouble: broken/fail/pass
X-Osstest-Failures:
    linux-linus:test-amd64-amd64-xl-qemut-debianhvm-amd64:<job status>:broken:regression
    linux-linus:test-amd64-amd64-xl-qemut-debianhvm-amd64:host-install(5):broken:regression
    linux-linus:test-amd64-amd64-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    linux-linus:test-amd64-amd64-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    linux-linus:test-amd64-amd64-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-raw:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-qcow2:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-qemuu-nested-amd:debian-hvm-install/l1/l2:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-xsm:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-credit1:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-thunderx:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-credit1:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-thunderx:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-xsm:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-credit2:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-xsm:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-credit2:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-libvirt-xsm:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-libvirt-xsm:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-multivcpu:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-multivcpu:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-qcow2:migrate-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit1:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit1:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-arndale:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-arndale:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-rtds:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-rtds:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-libvirt-raw:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-vhd:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-vhd:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-vhd:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-vhd:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit2:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit2:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-qcow2:migrate-support-check:fail:nonblocking
X-Osstest-Versions-This:
    linux=6d0dc8559c847e2dcd66c5dd93dbab3d3d887ff5
X-Osstest-Versions-That:
    linux=1f874787ed9a2d78ed59cb21d0d90ac0178eceb0
From: osstest service owner <osstest-admin@xenproject.org>
Date: Sat, 06 Jan 2024 02:02:43 +0000

flight 184258 linux-linus real [real]
http://logs.test-lab.xenproject.org/osstest/logs/184258/

Failures and problems with tests :-(

Tests which did not succeed and are blocking,
including tests which could not be run:
 test-amd64-amd64-xl-qemut-debianhvm-amd64    <job status>               broken
 test-amd64-amd64-xl-qemut-debianhvm-amd64 5 host-install(5) broken REGR. vs. 184256

Tests which did not succeed, but are not blocking:
 test-amd64-amd64-xl-qemut-win7-amd64 19 guest-stop            fail like 184256
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 184256
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 184256
 test-armhf-armhf-libvirt-raw 15 saverestore-support-check    fail  like 184256
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 184256
 test-amd64-amd64-xl-qemut-ws16-amd64 19 guest-stop            fail like 184256
 test-armhf-armhf-libvirt-qcow2 15 saverestore-support-check   fail like 184256
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 184256
 test-amd64-amd64-libvirt     15 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl          15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl          16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-credit1  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-thunderx 15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit1  16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-thunderx 16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-xsm      15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit2  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-xsm      16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-credit2  16 saverestore-support-check    fail   never pass
 test-arm64-arm64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-xsm 16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-multivcpu 15 migrate-support-check        fail  never pass
 test-armhf-armhf-xl-multivcpu 16 saverestore-support-check    fail  never pass
 test-amd64-amd64-libvirt-qcow2 14 migrate-support-check        fail never pass
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-armhf-armhf-xl-credit1  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit1  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-arndale  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-arndale  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-rtds     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-rtds     16 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-raw 14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 15 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-vhd      14 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-vhd      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-raw 14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-credit2  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit2  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-qcow2 14 migrate-support-check        fail never pass

version targeted for testing:
 linux                6d0dc8559c847e2dcd66c5dd93dbab3d3d887ff5
baseline version:
 linux                1f874787ed9a2d78ed59cb21d0d90ac0178eceb0

Last test of basis   184256  2024-01-05 04:22:32 Z    0 days
Testing same since   184258  2024-01-05 18:43:58 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Arnd Bergmann <arnd@arndb.de>
  Jinghao Jia <jinghao7@illinois.edu>
  Linus Torvalds <torvalds@linux-foundation.org>
  Masami Hiramatsu (Google) <mhiramat@kernel.org>
  Paolo Bonzini <pbonzini@redhat.com>
  Paul E. McKenney <paulmck@kernel.org>
  Shyam Prasad N <sprasad@microsoft.com>
  Stefan Wahren <wahrenst@gmx.net>
  Steve French <stfrench@microsoft.com>

jobs:
 build-amd64-xsm                                              pass    
 build-arm64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64                                                  pass    
 build-arm64                                                  pass    
 build-armhf                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-arm64-libvirt                                          pass    
 build-armhf-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-pvops                                            pass    
 build-arm64-pvops                                            pass    
 build-armhf-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-amd64-amd64-xl                                          pass    
 test-amd64-coresched-amd64-xl                                pass    
 test-arm64-arm64-xl                                          pass    
 test-armhf-armhf-xl                                          pass    
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm           pass    
 test-amd64-amd64-xl-qemut-stubdom-debianhvm-amd64-xsm        pass    
 test-amd64-amd64-xl-qemut-debianhvm-i386-xsm                 pass    
 test-amd64-amd64-xl-qemuu-debianhvm-i386-xsm                 pass    
 test-amd64-amd64-libvirt-xsm                                 pass    
 test-arm64-arm64-libvirt-xsm                                 pass    
 test-amd64-amd64-xl-xsm                                      pass    
 test-arm64-arm64-xl-xsm                                      pass    
 test-amd64-amd64-qemuu-nested-amd                            fail    
 test-amd64-amd64-xl-pvhv2-amd                                pass    
 test-amd64-amd64-dom0pvh-xl-amd                              pass    
 test-amd64-amd64-xl-qemut-debianhvm-amd64                    broken  
 test-amd64-amd64-xl-qemuu-debianhvm-amd64                    pass    
 test-amd64-amd64-freebsd11-amd64                             pass    
 test-amd64-amd64-freebsd12-amd64                             pass    
 test-amd64-amd64-xl-qemuu-ovmf-amd64                         pass    
 test-amd64-amd64-xl-qemut-win7-amd64                         fail    
 test-amd64-amd64-xl-qemuu-win7-amd64                         fail    
 test-amd64-amd64-xl-qemut-ws16-amd64                         fail    
 test-amd64-amd64-xl-qemuu-ws16-amd64                         fail    
 test-armhf-armhf-xl-arndale                                  pass    
 test-amd64-amd64-examine-bios                                pass    
 test-amd64-amd64-xl-credit1                                  pass    
 test-arm64-arm64-xl-credit1                                  pass    
 test-armhf-armhf-xl-credit1                                  pass    
 test-amd64-amd64-xl-credit2                                  pass    
 test-arm64-arm64-xl-credit2                                  pass    
 test-armhf-armhf-xl-credit2                                  pass    
 test-amd64-amd64-xl-qemuu-dmrestrict-amd64-dmrestrict        pass    
 test-amd64-amd64-examine                                     pass    
 test-arm64-arm64-examine                                     pass    
 test-armhf-armhf-examine                                     pass    
 test-amd64-amd64-qemuu-nested-intel                          pass    
 test-amd64-amd64-xl-pvhv2-intel                              pass    
 test-amd64-amd64-dom0pvh-xl-intel                            pass    
 test-amd64-amd64-libvirt                                     pass    
 test-armhf-armhf-libvirt                                     pass    
 test-amd64-amd64-xl-multivcpu                                pass    
 test-armhf-armhf-xl-multivcpu                                pass    
 test-amd64-amd64-pair                                        pass    
 test-amd64-amd64-libvirt-pair                                pass    
 test-amd64-amd64-xl-pvshim                                   pass    
 test-amd64-amd64-pygrub                                      pass    
 test-amd64-amd64-libvirt-qcow2                               pass    
 test-armhf-armhf-libvirt-qcow2                               pass    
 test-amd64-amd64-libvirt-raw                                 pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-armhf-armhf-libvirt-raw                                 pass    
 test-amd64-amd64-xl-rtds                                     pass    
 test-armhf-armhf-xl-rtds                                     pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64-shadow             pass    
 test-amd64-amd64-xl-shadow                                   pass    
 test-arm64-arm64-xl-thunderx                                 pass    
 test-amd64-amd64-examine-uefi                                pass    
 test-amd64-amd64-xl-vhd                                      pass    
 test-arm64-arm64-xl-vhd                                      pass    
 test-armhf-armhf-xl-vhd                                      pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary

broken-job test-amd64-amd64-xl-qemut-debianhvm-amd64 broken
broken-step test-amd64-amd64-xl-qemut-debianhvm-amd64 host-install(5)

Not pushing.

(No revision log; it would be 345 lines long.)


From xen-devel-bounces@lists.xenproject.org Sat Jan 06 02:06:37 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 06 Jan 2024 02:06:37 +0000
Received: from list by lists.xenproject.org with outflank-mailman.662430.1032551 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLw56-000855-5q; Sat, 06 Jan 2024 02:06:36 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 662430.1032551; Sat, 06 Jan 2024 02:06:36 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLw56-00084y-2S; Sat, 06 Jan 2024 02:06:36 +0000
Received: by outflank-mailman (input) for mailman id 662430;
 Sat, 06 Jan 2024 02:06:35 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=2tII=IQ=mg.gitlab.com=bounce+c66dc3.947b4-xen-devel=lists.xenproject.org@srs-se1.protection.inumbo.net>)
 id 1rLw54-00084p-RH
 for xen-devel@lists.xenproject.org; Sat, 06 Jan 2024 02:06:35 +0000
Received: from so254-136.mailgun.net (so254-136.mailgun.net [198.61.254.136])
 by se1-gles-flk1.inumbo.com (Halon) with UTF8SMTPS
 id 35b79f3c-ac38-11ee-9b0f-b553b5be7939;
 Sat, 06 Jan 2024 03:06:32 +0100 (CET)
Received: from mg.gitlab.com (29.226.74.34.bc.googleusercontent.com
 [34.74.226.29]) by
 c2d8f6b49f66 with SMTP id 6598b5a627ae30c97676b5c9 (version=TLS1.3,
 cipher=TLS_AES_128_GCM_SHA256); Sat, 06 Jan 2024 02:06:30 GMT
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
X-Inumbo-ID: 35b79f3c-ac38-11ee-9b0f-b553b5be7939
DKIM-Signature: a=rsa-sha256; v=1; c=relaxed/relaxed; d=mg.gitlab.com;
 q=dns/txt; s=mailo; t=1704506790; x=1704513990; h=List-Id:
 Content-Transfer-Encoding: Content-Type: Mime-Version: Subject: Subject:
 Message-ID: To: To: Reply-To: From: From: Date: Sender: Sender;
 bh=N7rR6BkxK4o1b0eEPKe/ktttRs7vAUIK+bIVT1jt7B8=;
 b=AkD0V+exz13KCXtSMawxnCuJr5uNYQ5EL2t9+FuvnDv+af6v1SBsLu/OQv6VOirLtLe1UDkPr9t9W4mLDnnqA+CVcCxgnC6bXePOyP5QBEku7SMmcVJr4yxRrWHKj02f1+jRsueOEqH+7znWmrGdoda6Tx3OhVoJ/hpuFH57j+s=
X-Mailgun-Sending-Ip: 198.61.254.136
X-Mailgun-Sid: WyI4YjA3MiIsInhlbi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZyIsIjk0N2I0Il0=
Sender: gitlab@mg.gitlab.com
Date: Sat, 06 Jan 2024 02:06:30 +0000
From: GitLab <gitlab@mg.gitlab.com>
Reply-To: GitLab <noreply@gitlab.com>
To: xen-devel@lists.xenproject.org
Message-ID: <6598b5a69e55_2c95fc498286@gitlab-sidekiq-catchall-v2-64b6fdf995-q8rzc.mail>
Subject: xen | Successful pipeline for staging | 5a3ace21
Mime-Version: 1.0
Content-Type: multipart/alternative;
 boundary="--==_mimepart_6598b5a62e9_2c95fc49811b";
 charset=UTF-8
Content-Transfer-Encoding: 7bit
X-GitLab-Project: xen
X-GitLab-Project-Id: 2336572
X-GitLab-Project-Path: xen-project/xen
X-GitLab-Pipeline-Id: 1128952078
X-GitLab-Pipeline-Ref: staging
X-GitLab-Pipeline-Status: success
Auto-Submitted: auto-generated
X-Auto-Response-Suppress: All

----==_mimepart_6598b5a62e9_2c95fc49811b
Content-Type: text/plain;
 charset=UTF-8
Content-Transfer-Encoding: 7bit



Pipeline #1128952078 has passed!

Project: xen ( https://gitlab.com/xen-project/xen )
Branch: staging ( https://gitlab.com/xen-project/xen/-/commits/staging )

Commit: 5a3ace21 ( https://gitlab.com/xen-project/xen/-/commit/5a3ace21f3d779b291a2d305824b2820d88de7f1 )
Commit Message: xen/arm: smmu-v3: address violations of MISRA C...
Commit Author: Federico Serafini
Committed by: Stefano Stabellini



Pipeline #1128952078 ( https://gitlab.com/xen-project/xen/-/pipelines/1128952078 ) triggered by Ganis ( https://gitlab.com/ganis )
successfully completed 129 jobs in 3 stages.

-- 
You're receiving this email because of your account on gitlab.com.




----==_mimepart_6598b5a62e9_2c95fc49811b
Content-Type: text/html;
 charset=UTF-8
Content-Transfer-Encoding: quoted-printable

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://ww=
w.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns=3D"http://www.w3.org/1999/xhtml" lang=3D"en" xml:lang=3D"en">=

<head>
<meta content=3D"text/html; charset=3DUTF-8" http-equiv=3D"Content-Type" =
/>
<meta content=3D"width=3Ddevice-width, initial-scale=3D1" name=3D"viewpor=
t" />
<meta content=3D"IE=3Dedge" http-equiv=3D"X-UA-Compatible" />
<title>xen | Successful pipeline for staging | 5a3ace21</title>
<style data-premailer=3D"ignore" type=3D"text/css">
body,table,td,a{-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}t=
able,td{mso-table-lspace:0pt;mso-table-rspace:0pt}img{-ms-interpolation-m=
ode:bicubic}.hidden{display:none !important;visibility:hidden !important}=
a[x-apple-data-detectors]{color:inherit !important;text-decoration:none !=
important;font-size:inherit !important;font-family:inherit !important;fon=
t-weight:inherit !important;line-height:inherit !important}div[style*=3D'=
margin: 16px 0']{margin:0 !important}@media only screen and (max-width: 6=
39px){body,#body{min-width:320px !important}table.wrapper{width:100% !imp=
ortant;min-width:320px !important}table.wrapper td.wrapper-cell{border-le=
ft:0 !important;border-right:0 !important;border-radius:0 !important;padd=
ing-left:10px !important;padding-right:10px !important}}

</style>

<style>body {
margin: 0 !important; background-color: #fafafa; padding: 0; text-align: =
center; min-width: 640px; width: 100%; height: 100%; font-family: "Helvet=
ica Neue", Helvetica, Arial, sans-serif;
}
</style></head>
<body style=3D"text-align: center; min-width: 640px; width: 100%; height:=
 100%; font-family: &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-se=
rif; margin: 0; padding: 0;" bgcolor=3D"#fafafa">

<table border=3D"0" cellpadding=3D"0" cellspacing=3D"0" id=3D"body" style=
=3D"text-align: center; min-width: 640px; width: 100%; margin: 0; padding=
: 0;" bgcolor=3D"#fafafa">
<tbody>
<tr class=3D"line">
<td style=3D"font-family: &quot;Helvetica Neue&quot;, Helvetica, Arial, s=
ans-serif; height: 4px; font-size: 4px; line-height: 4px;" bgcolor=3D"#6b=
4fbb"></td>
</tr>
<tr class=3D"header">
<td style=3D"font-family: &quot;Helvetica Neue&quot;, Helvetica, Arial, s=
ans-serif; font-size: 13px; line-height: 1.6; color: #5c5c5c; padding: 25=
px 0;">

<img alt=3D"GitLab" src=3D"https://gitlab.com/assets/mailers/gitlab_logo-=
2957169c8ef64c58616a1ac3f4fc626e8a35ce4eb3ed31bb0d873712f2a041a0.png" wid=
th=3D"55" height=3D"55" />
</td>
</tr>
<tr>
<td style=3D"font-family: &quot;Helvetica Neue&quot;, Helvetica, Arial, s=
ans-serif;">
<table border=3D"0" cellpadding=3D"0" cellspacing=3D"0" class=3D"wrapper"=
 style=3D"width: 640px; border-collapse: separate; border-spacing: 0; mar=
gin: 0 auto;">
<tbody>
<tr>
<td class=3D"wrapper-cell" style=3D"font-family: &quot;Helvetica Neue&quo=
t;, Helvetica, Arial, sans-serif; border-radius: 3px; overflow: hidden; p=
adding: 18px 25px; border: 1px solid #ededed;" align=3D"left" bgcolor=3D"=
#fff">
<table border=3D"0" cellpadding=3D"0" cellspacing=3D"0" class=3D"content"=
 style=3D"width: 100%; border-collapse: separate; border-spacing: 0;">
<tbody>
<tr class=3D"table-success">
<td style=3D"font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; bo=
rder-radius: 3px; font-size: 14px; line-height: 1.3; overflow: hidden; co=
lor: #ffffff; padding: 10px;" align=3D"center" bgcolor=3D"#31af64">
<table border=3D"0" cellpadding=3D"0" cellspacing=3D"0" class=3D"img" sty=
le=3D"border-collapse: collapse; margin: 0 auto;">
<tbody>
<tr>
<td style=3D"font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; co=
lor: #ffffff; padding-right: 5px;" align=3D"center" valign=3D"middle">
<img alt=3D"&#10003;" height=3D"13" src=3D"https://gitlab.com/assets/mail=
ers/ci_pipeline_notif_v1/icon-check-green-inverted-3fc3485096ebb83ce1d951=
5883c8ca25ee5f382c4d643e064beb5da510aa26d5.gif" style=3D"display: block;"=
 width=3D"13" />
</td>
<td style=3D"font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; co=
lor: #ffffff;" align=3D"center" valign=3D"middle">
Pipeline #1128952078 has passed!
</td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr class=3D"spacer">
<td style=3D"font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; he=
ight: 18px; font-size: 18px; line-height: 18px;">
&#160;
</td>
</tr>
<tr class=3D"section">
<td style=3D"font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; bo=
rder-radius: 3px; overflow: hidden; padding: 0 15px; border: 1px solid #e=
deded;">
<table border=3D"0" cellpadding=3D"0" cellspacing=3D"0" class=3D"table-in=
fo" style=3D"width: 100%;">
<tbody>
<tr>
<td style=3D"font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; fo=
nt-size: 15px; line-height: 1.4; color: #8c8c8c; font-weight: 300; margin=
: 0; padding: 14px 0;">
Project
</td>
<td style=3D"font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; fo=
nt-size: 15px; line-height: 1.4; color: #333333; font-weight: 500; width:=
 75%; margin: 0; padding: 14px 0 14px 5px;">
<a class=3D"muted" href=3D"https://gitlab.com/xen-project" style=3D"color=
: #333333; text-decoration: none;">
xen-project
</a>
/
<a class=3D"muted" href=3D"https://gitlab.com/xen-project/xen" style=3D"c=
olor: #333333; text-decoration: none;">
xen
</a>
</td>
</tr>
<tr>
<td style=3D"font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; fo=
nt-size: 15px; line-height: 1.4; color: #8c8c8c; font-weight: 300; border=
-top-width: 1px; border-top-color: #ededed; border-top-style: solid; marg=
in: 0; padding: 14px 0;">
Branch
</td>
<td style=3D"font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; fo=
nt-size: 15px; line-height: 1.4; color: #333333; font-weight: 500; width:=
 75%; border-top-width: 1px; border-top-color: #ededed; border-top-style:=
 solid; margin: 0; padding: 14px 0 14px 5px;">
<table border=3D"0" cellpadding=3D"0" cellspacing=3D"0" class=3D"img" sty=
le=3D"border-collapse: collapse;">
<tbody>
<tr>
<td style=3D"font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; fo=
nt-size: 15px; line-height: 1.4; padding-right: 5px;" valign=3D"middle">
<img alt=3D"" height=3D"13" src=3D"https://gitlab.com/assets/mailers/ci_p=
ipeline_notif_v1/icon-branch-gray-53618a7fc19d4d32ccbabac2f6d59bebe67202a=
9f2f1255e3f72c69756c0dd9c.gif" style=3D"display: block;" width=3D"13" />
</td>
<td style=3D"font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; fo=
nt-size: 15px; line-height: 1.4;" valign=3D"middle">
<a class=3D"muted" href=3D"https://gitlab.com/xen-project/xen/-/commits/s=
taging" style=3D"color: #333333; text-decoration: none;">
staging
</a>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr>
<td style=3D"font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; fo=
nt-size: 15px; line-height: 1.4; color: #8c8c8c; font-weight: 300; border=
-top-width: 1px; border-top-color: #ededed; border-top-style: solid; marg=
in: 0; padding: 14px 0;">
Commit
</td>
<td style=3D"font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; fo=
nt-size: 15px; line-height: 1.4; color: #333333; font-weight: 400; width:=
 75%; border-top-width: 1px; border-top-color: #ededed; border-top-style:=
 solid; margin: 0; padding: 14px 0 14px 5px;">
<table border=3D"0" cellpadding=3D"0" cellspacing=3D"0" class=3D"img" sty=
le=3D"border-collapse: collapse;">
<tbody>
<tr>
<td style=3D"font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; fo=
nt-size: 15px; line-height: 1.4; padding-right: 5px;" valign=3D"middle">
<img alt=3D"" height=3D"13" src=3D"https://gitlab.com/assets/mailers/ci_p=
ipeline_notif_v1/icon-commit-gray-c10243ac24cde64b549aec91de35e6b49c8739b=
506b86472b54614c10d8b4aac.gif" style=3D"display: block;" width=3D"13" />
</td>
<td style=3D"font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; fo=
nt-size: 15px; line-height: 1.4;" valign=3D"middle">
<a href=3D"https://gitlab.com/xen-project/xen/-/commit/5a3ace21f3d779b291=
a2d305824b2820d88de7f1" style=3D"color: #3777b0; text-decoration: none;">=
5a3ace21</a>
</td>
</tr>
</tbody>
</table>
<div class=3D"commit" style=3D"color: #5c5c5c; font-weight: 300;">
xen/arm: smmu-v3: address violations of MISRA C...
</div>
</td>
</tr>
<tr>
<td style=3D"font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; fo=
nt-size: 15px; line-height: 1.4; color: #8c8c8c; font-weight: 300; border=
-top-width: 1px; border-top-color: #ededed; border-top-style: solid; marg=
in: 0; padding: 14px 0;">
Commit Author
</td>
<td style=3D"font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; fo=
nt-size: 15px; line-height: 1.4; color: #333333; font-weight: 500; width:=
 75%; border-top-width: 1px; border-top-color: #ededed; border-top-style:=
 solid; margin: 0; padding: 14px 0 14px 5px;">
<table border=3D"0" cellpadding=3D"0" cellspacing=3D"0" class=3D"img" sty=
le=3D"border-collapse: collapse;">
<tbody>
<tr>
<td style=3D"font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; fo=
nt-size: 15px; line-height: 1.4; padding-right: 5px;" valign=3D"middle">
<img alt=3D"" class=3D"avatar" height=3D"24" src=3D"https://secure.gravat=
ar.com/avatar/7347c1427cde55f447d83dc392bce562?s=3D48&amp;d=3Didenticon" =
style=3D"display: block; border-radius: 12px; margin: -2px 0;" width=3D"2=
4" />
</td>
<td style=3D"font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; fo=
nt-size: 15px; line-height: 1.4;" valign=3D"middle">
<span>
Federico Serafini
</span>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr>
<td style=3D"font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; fo=
nt-size: 15px; line-height: 1.4; color: #8c8c8c; font-weight: 300; border=
-top-width: 1px; border-top-color: #ededed; border-top-style: solid; marg=
in: 0; padding: 14px 0;">
Committed by
</td>
<td style=3D"font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; fo=
nt-size: 15px; line-height: 1.4; color: #333333; font-weight: 500; width:=
 75%; border-top-width: 1px; border-top-color: #ededed; border-top-style:=
 solid; margin: 0; padding: 14px 0 14px 5px;">
<table border=3D"0" cellpadding=3D"0" cellspacing=3D"0" class=3D"img" sty=
le=3D"border-collapse: collapse;">
<tbody>
<tr>
<td style=3D"font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; fo=
nt-size: 15px; line-height: 1.4; padding-right: 5px;" valign=3D"middle">
<img alt=3D"" class=3D"avatar" height=3D"24" src=3D"https://secure.gravat=
ar.com/avatar/50b82a64e2a9f930cabefa3948871101?s=3D48&amp;d=3Didenticon" =
style=3D"display: block; border-radius: 12px; margin: -2px 0;" width=3D"2=
4" />
</td>
<td style=3D"font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; fo=
nt-size: 15px; line-height: 1.4;" valign=3D"middle">
<span>
Stefano Stabellini
</span>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr class=3D"spacer">
<td style=3D"font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; he=
ight: 18px; font-size: 18px; line-height: 18px;">
&#160;
</td>
</tr>
<tr class=3D"success-message">
<td style=3D"font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; co=
lor: #333333; font-size: 15px; font-weight: 400; line-height: 1.4; paddin=
g: 15px 5px 0;" align=3D"center">
<table border=3D"0" cellpadding=3D"0" cellspacing=3D"0" class=3D"img" sty=
le=3D"border-collapse: collapse; margin: 0 auto;">
<tbody>
<tr>
<td style=3D"font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; fo=
nt-size: 15px; line-height: 1.4; font-weight: 500;" valign=3D"baseline">
Pipeline <a href=3D"https://gitlab.com/xen-project/xen/-/pipelines/112895=
2078" style=3D"color: #3777b0; text-decoration: none;">#1128952078</a> tr=
iggered by
</td>
<td style=3D"font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; fo=
nt-size: 15px; line-height: 1.4; font-weight: 500; padding-right: 5px; pa=
dding-left: 5px;" width=3D"24" valign=3D"middle">
<img alt=3D"" class=3D"avatar" height=3D"24" src=3D"https://secure.gravat=
ar.com/avatar/568538936b4ac45a343cb3a4ab0c6cda?s=3D48&amp;d=3Didenticon" =
style=3D"display: block; border-radius: 12px; margin: -2px 0;" width=3D"2=
4" />
</td>
<td style=3D"font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; fo=
nt-size: 15px; line-height: 1.4;" valign=3D"baseline">
<a class=3D"muted" href=3D"https://gitlab.com/ganis" style=3D"color: #333=
333; text-decoration: none;">
Ganis
</a>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr>
<td colspan=3D"2" style=3D"font-family: 'Helvetica Neue',Helvetica,Arial,=
sans-serif; color: #333333; font-size: 15px; font-weight: 300; line-heigh=
t: 1.4; padding: 15px 5px;" align=3D"center">
successfully completed 129 jobs in 3 stages.
</td>
</tr>


</tbody>
</table>
</td>
</tr>
</tbody>
</table>
</td>
</tr>

<tr class=3D"footer">
<td style=3D"font-family: &quot;Helvetica Neue&quot;, Helvetica, Arial, s=
ans-serif; font-size: 13px; line-height: 1.6; color: #5c5c5c; padding: 25=
px 0;">
<img alt=3D"GitLab" class=3D"footer-logo" src=3D"https://gitlab.com/asset=
s/mailers/gitlab_logo_black_text-5430ca955baf2bbce6d3aa856a025da70ac5c959=
5597537254f665c10beab7a5.png" style=3D"display: block; width: 90px; margi=
n: 0 auto 1em;" />
<div>
You're receiving this email because of your account on <a target=3D"_blan=
k" rel=3D"noopener noreferrer" href=3D"https://gitlab.com" style=3D"color=
: #3777b0; text-decoration: none;">gitlab.com</a>. <a href=3D"https://git=
lab.com/-/profile/notifications" target=3D"_blank" rel=3D"noopener norefe=
rrer" class=3D"mng-notif-link" style=3D"color: #3777b0; text-decoration: =
none;">Manage all notifications</a> &#183; <a href=3D"https://gitlab.com/=
help" target=3D"_blank" rel=3D"noopener noreferrer" class=3D"help-link" s=
tyle=3D"color: #3777b0; text-decoration: none;">Help</a>
</div>
</td>
</tr>


<tr>
<td class=3D"footer-message" style=3D"font-family: &quot;Helvetica Neue&q=
uot;, Helvetica, Arial, sans-serif; font-size: 13px; line-height: 1.6; co=
lor: #5c5c5c; padding: 25px 0;">

</td>
</tr>
</tbody>
</table>
</body>
</html>

----==_mimepart_6598b5a62e9_2c95fc49811b--


From xen-devel-bounces@lists.xenproject.org Sat Jan 06 03:30:08 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 06 Jan 2024 03:30:08 +0000
Received: from list by lists.xenproject.org with outflank-mailman.662472.1032561 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLxNi-0002jh-JK; Sat, 06 Jan 2024 03:29:54 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 662472.1032561; Sat, 06 Jan 2024 03:29:54 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLxNi-0002ja-G0; Sat, 06 Jan 2024 03:29:54 +0000
Received: by outflank-mailman (input) for mailman id 662472;
 Sat, 06 Jan 2024 03:29:53 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rLxNh-0002jQ-8r; Sat, 06 Jan 2024 03:29:53 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rLxNh-0006LY-1o; Sat, 06 Jan 2024 03:29:53 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rLxNg-0000Xx-Ok; Sat, 06 Jan 2024 03:29:52 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rLxNg-0003Vp-OC; Sat, 06 Jan 2024 03:29:52 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=vpRgYBSxJKiPs3aPOkwBdAPFjJ+wOnKfsJjCtiS9Ny8=; b=LJ9D1CcIJwn7cLGkvi1uKSpMj0
	hp7pZd2xnllNiWzmocCrYjNZ4GTYn0NF6JCU5owIwaTdYNjNPANIDYCFwOhH7Z42O7JshElQrv/2z
	vf3jPD+v3203StC2GWzNCZC+OPb3fFx+MAJ44VMMNZS0DZO7uz6LDi9rDimGAIbL+y4g=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184260-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [xen-unstable-smoke test] 184260: tolerable all pass - PUSHED
X-Osstest-Failures:
    xen-unstable-smoke:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    xen-unstable-smoke:test-arm64-arm64-xl-xsm:migrate-support-check:fail:nonblocking
    xen-unstable-smoke:test-arm64-arm64-xl-xsm:saverestore-support-check:fail:nonblocking
    xen-unstable-smoke:test-armhf-armhf-xl:migrate-support-check:fail:nonblocking
    xen-unstable-smoke:test-armhf-armhf-xl:saverestore-support-check:fail:nonblocking
X-Osstest-Versions-This:
    xen=5a3ace21f3d779b291a2d305824b2820d88de7f1
X-Osstest-Versions-That:
    xen=49818cde637b5ec20383e46b71f93b2e7d867686
From: osstest service owner <osstest-admin@xenproject.org>
Date: Sat, 06 Jan 2024 03:29:52 +0000

flight 184260 xen-unstable-smoke real [real]
http://logs.test-lab.xenproject.org/osstest/logs/184260/

Failures :-/ but no regressions.

Tests which did not succeed, but are not blocking:
 test-amd64-amd64-libvirt     15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-xsm      15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-xsm      16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl          15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          16 saverestore-support-check    fail   never pass

version targeted for testing:
 xen                  5a3ace21f3d779b291a2d305824b2820d88de7f1
baseline version:
 xen                  49818cde637b5ec20383e46b71f93b2e7d867686

Last test of basis   184205  2023-12-21 15:00:26 Z   15 days
Testing same since   184260  2024-01-06 01:02:12 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Federico Serafini <federico.serafini@bugseng.com>
  Julien Grall <jgrall@amazon.com>

jobs:
 build-arm64-xsm                                              pass    
 build-amd64                                                  pass    
 build-armhf                                                  pass    
 build-amd64-libvirt                                          pass    
 test-armhf-armhf-xl                                          pass    
 test-arm64-arm64-xl-xsm                                      pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64                    pass    
 test-amd64-amd64-libvirt                                     pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Pushing revision :

To xenbits.xen.org:/home/xen/git/xen.git
   49818cde63..5a3ace21f3  5a3ace21f3d779b291a2d305824b2820d88de7f1 -> smoke


From xen-devel-bounces@lists.xenproject.org Sat Jan 06 05:54:48 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 06 Jan 2024 05:54:48 +0000
Received: from list by lists.xenproject.org with outflank-mailman.662393.1032571 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLzdh-0004GQ-Qz; Sat, 06 Jan 2024 05:54:33 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 662393.1032571; Sat, 06 Jan 2024 05:54:33 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rLzdh-0004GJ-LW; Sat, 06 Jan 2024 05:54:33 +0000
Received: by outflank-mailman (input) for mailman id 662393;
 Fri, 05 Jan 2024 23:09:42 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=PmVw=IP=kernel.org=sstabellini@srs-se1.protection.inumbo.net>)
 id 1rLtJs-0004DO-K5
 for xen-devel@lists.xenproject.org; Fri, 05 Jan 2024 23:09:41 +0000
Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 7f037e22-ac1f-11ee-98ef-6d05b1d4d9a1;
 Sat, 06 Jan 2024 00:09:38 +0100 (CET)
Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58])
 by dfw.source.kernel.org (Postfix) with ESMTP id 6E60461B53;
 Fri,  5 Jan 2024 23:09:34 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 82767C433CB;
 Fri,  5 Jan 2024 23:09:29 +0000 (UTC)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 7f037e22-ac1f-11ee-98ef-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
	s=k20201202; t=1704496174;
	bh=eIWEW8XcGpPZclkWBtwuJeA0odyJDt6ccw7Ub+doKvI=;
	h=Date:From:To:cc:Subject:In-Reply-To:References:From;
	b=AS+pmbu1zu1qSSNxsE9tj9KWRuMZSM1RFL/L+pHvt/HSPqiYWVb4bklO2hI49qWFZ
	 SnVbeJeVvnFWcHyHIKV6GJDwj53jZbHPaJcI8HJmdhxPP0ZNdoYXm0aXbryD4N5uQ7
	 cfH9hZVgY9XuNM1q9AgVHPrZ6VHNuA/+R4pNEXrQAbGXHBaAg1Dd4NJoNlPOGjYuR3
	 Etk9OpnqYgoCc8jze8Y7IduVoe1JIcwT12bwBuIlKsMCsDh7Kd2pjwHmzDiPC1yXSM
	 Y0af+3tP+PXZt1mTTPHZK6CyqFwDpH+8J4Bns/OYvU9Y7U5q7Bkf7SCIH85F2QW4vr
	 dV5h9YEeTmh0g==
Date: Fri, 5 Jan 2024 15:09:27 -0800 (PST)
From: Stefano Stabellini <sstabellini@kernel.org>
X-X-Sender: sstabellini@ubuntu-linux-20-04-desktop
To: Julien Grall <julien@xen.org>
cc: Carlo Nonato <carlo.nonato@minervasys.tech>, 
    xen-devel@lists.xenproject.org, Luca Miccio <lucmiccio@gmail.com>, 
    Andrew Cooper <andrew.cooper3@citrix.com>, 
    George Dunlap <george.dunlap@citrix.com>, Jan Beulich <jbeulich@suse.com>, 
    Stefano Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>, 
    Bertrand Marquis <bertrand.marquis@arm.com>, 
    Michal Orzel <michal.orzel@amd.com>, 
    Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>, 
    Marco Solieri <marco.solieri@minervasys.tech>
Subject: Re: [PATCH v5 12/13] xen/arm: add Xen cache colors command line
 parameter
In-Reply-To: <7e69b9de-8156-4944-87be-207ad79f2df9@xen.org>
Message-ID: <alpine.DEB.2.22.394.2401051449260.3675@ubuntu-linux-20-04-desktop>
References: <20240102095138.17933-1-carlo.nonato@minervasys.tech> <20240102095138.17933-13-carlo.nonato@minervasys.tech> <7e69b9de-8156-4944-87be-207ad79f2df9@xen.org>
User-Agent: Alpine 2.22 (DEB 394 2020-01-19)
MIME-Version: 1.0
Content-Type: multipart/mixed; BOUNDARY="8323329-1191896076-1704495511=:3675"
Content-ID: <alpine.DEB.2.22.394.2401051458370.3675@ubuntu-linux-20-04-desktop>

  This message is in MIME format.  The first part should be readable text,
  while the remaining parts are likely unreadable without MIME-aware tools.

--8323329-1191896076-1704495511=:3675
Content-Type: text/plain; CHARSET=US-ASCII
Content-ID: <alpine.DEB.2.22.394.2401051458371.3675@ubuntu-linux-20-04-desktop>

On Fri, 5 Jan 2024, Julien Grall wrote:
> Hi,
> 
> On 02/01/2024 09:51, Carlo Nonato wrote:
> > From: Luca Miccio <lucmiccio@gmail.com>
> > 
> > This commit adds a new command line parameter to configure Xen cache colors.
> > These colors can be dumped with the cache coloring info debug-key.
> > 
> > By default, Xen uses the first color.
> > Benchmarking the VM interrupt response time provides an estimation of
> > LLC usage by Xen's most latency-critical runtime task. Results on Arm
> > Cortex-A53 on Xilinx Zynq UltraScale+ XCZU9EG show that one color, which
> > reserves 64 KiB of L2, is enough to attain best responsiveness.
> 
> Would you be able to share some numbers? This is quite helpful if in the
> future we need to revise the default.

Here are the numbers for Xen 1 color vs Xen 2 colors.

We are measuring IRQ lantecy using a baremetal app (a unikernel) that
has 0.5 us latency on native without interference.

Running the same application on Xen with 3 interference agents (3 other
VMs that keep thrashing the cache):

- Xen 1 color latency:  3.1 us
- Xen 2 color2 latency: 3.1 us
--8323329-1191896076-1704495511=:3675
Content-Type: application/pdf; NAME="Cache Coloring Xen Summit.pdf"
Content-Transfer-Encoding: BASE64
Content-ID: <alpine.DEB.2.22.394.2401051458310.3675@ubuntu-linux-20-04-desktop>
Content-Description: 
Content-Disposition: ATTACHMENT; FILENAME="Cache Coloring Xen Summit.pdf"

JVBERi0xLjcNCiW1tbW1DQoxIDAgb2JqDQo8PC9UeXBlL0NhdGFsb2cvUGFn
ZXMgMiAwIFIvTGFuZyhlbikgL1N0cnVjdFRyZWVSb290IDE1NyAwIFIvT3V0
bGluZXMgMTI1IDAgUi9NYXJrSW5mbzw8L01hcmtlZCB0cnVlPj4vTWV0YWRh
dGEgMTE1NSAwIFIvVmlld2VyUHJlZmVyZW5jZXMgMTE1NiAwIFI+Pg0KZW5k
b2JqDQoyIDAgb2JqDQo8PC9UeXBlL1BhZ2VzL0NvdW50IDMxL0tpZHNbIDMg
MCBSIDE3IDAgUiAzMyAwIFIgNDAgMCBSIDQyIDAgUiA0NCAwIFIgNDYgMCBS
IDQ4IDAgUiA1MCAwIFIgNTIgMCBSIDU0IDAgUiA1OCAwIFIgNjAgMCBSIDYy
IDAgUiA2NCAwIFIgNjcgMCBSIDcwIDAgUiA3MyAwIFIgNzYgMCBSIDc5IDAg
UiA4MSAwIFIgODQgMCBSIDg3IDAgUiA5MCAwIFIgOTMgMCBSIDk2IDAgUiA5
OCAwIFIgMTAxIDAgUiAxMTEgMCBSIDExNSAwIFIgMTE5IDAgUl0gPj4NCmVu
ZG9iag0KMyAwIG9iag0KPDwvVHlwZS9QYWdlL1BhcmVudCAyIDAgUi9SZXNv
dXJjZXM8PC9FeHRHU3RhdGU8PC9HUzUgNSAwIFIvR1MxMCAxMCAwIFI+Pi9Y
T2JqZWN0PDwvSW1hZ2U2IDYgMCBSL0ltYWdlMTEgMTEgMCBSL0ltYWdlMTMg
MTMgMCBSPj4vRm9udDw8L0YxIDggMCBSL0YyIDE1IDAgUj4+L1Byb2NTZXRb
L1BERi9UZXh0L0ltYWdlQi9JbWFnZUMvSW1hZ2VJXSA+Pi9NZWRpYUJveFsg
MCAwIDk2MCA1NDBdIC9Db250ZW50cyA0IDAgUi9Hcm91cDw8L1R5cGUvR3Jv
dXAvUy9UcmFuc3BhcmVuY3kvQ1MvRGV2aWNlUkdCPj4vVGFicy9TL1N0cnVj
dFBhcmVudHMgMD4+DQplbmRvYmoNCjQgMCBvYmoNCjw8L0ZpbHRlci9GbGF0
ZURlY29kZS9MZW5ndGggNjM5Pj4NCnN0cmVhbQ0KeJy1VU1P20AQvVvyf5hT
tYvkzc5+W0JIJVBEBYc2qYpU9eCmjrGU2NQFqf1J/MvOOikQHEpb4DJeze74
vXnz1h697i7reTG7hP3TMXxLEwlSSClRKekhdxKskdCVafJxB5o0GR1NLFTf
6ZyQwWk6jBhDgK66KZYOpbYb1fOdNHmXJnBIKKP7mEF74S2gF8qCd4KWNiZu
YfskvX29sVEwWxKt42VRlQ4OWviNAqPJRdHA7u7odHx8AHJ0UjQVsLLJPkz4
3h7sH6z67Qmj0TICDBven9Lb3yDkwhPidJ4muCICRuWCNEIlcmIxXcb2q14h
lCuJ4ChNPrFrnmnFgJvAxlwjaznm7CKGn7TjWMeVYzXPPKti8jyGS56pQDUZ
BmQqZmQMt6u4JS0746jlqngRQ79q4oEf/DNM36bJ4fQPwlvMo47agUEDWupN
1bOYjc2ud3Kt18dvNafx3xF9iGBihXH9pFCa+FB4B2OdiyiU3zh+B0Q/DLLV
iEEacIA6gFXC3jhwmzHwScZQYIzQG74gxEBNBivy3hUYXYErL5xxR0BAccwz
x4oZzww7L8kccpVpFzxnbVfzwJqKa5qzZ682R/mP3JTdxk4H4Qbs3vPMsrKI
nBbPiYnGCRceAM2eFcmhcP4BpCnXlm6IZ0vSuNxyP+45Qz3xk6GkUH6b+uiU
8GHAb0K3Hskfc64kK5q2H///ibMVHJUX+Bh68aUk3MWiburHFdIvppCm77we
cDwlip4V3ayn2gLPDZu0i7rkhnV/wde8GF8ZhB/QPbmKRC0rgFu/Jl/P+scq
1u3jnO1LcQ50VeyA81F9tSBahqxHf5FxT7PtuuIrpbYp/As2b7dJDQplbmRz
dHJlYW0NCmVuZG9iag0KNSAwIG9iag0KPDwvVHlwZS9FeHRHU3RhdGUvQk0v
Tm9ybWFsL2NhIDE+Pg0KZW5kb2JqDQo2IDAgb2JqDQo8PC9UeXBlL1hPYmpl
Y3QvU3VidHlwZS9JbWFnZS9XaWR0aCAyMTIvSGVpZ2h0IDQzL0NvbG9yU3Bh
Y2UvRGV2aWNlUkdCL0JpdHNQZXJDb21wb25lbnQgOC9JbnRlcnBvbGF0ZSBm
YWxzZS9TTWFzayA3IDAgUi9GaWx0ZXIvRmxhdGVEZWNvZGUvTGVuZ3RoIDk4
MD4+DQpzdHJlYW0NCnic7dzbaxxVHAfwzG0vk93Z2dvsOjszTfaCZDbNxlw2
2VhIY4QU3/rQViUt6UNBH1TEeEGJ4AUfFY0BRUXxocFgE5M+FoSS0L70SSq+
hehLFUL/hp4YLJvLnnOCs5ns8v3we9wznANf5syZPWc6OmiEphUAxaSu/jNa
eDhWotdSj/mWlWD+rL62a8WLqajf44MT6rQa+LOaZ6bodp/dKe7cxj4vGPzZ
m7Xifo8PTigrIP8+2MWM0G8DXVlF2m2iCMLPPSZP8OYLBuZcOJQmixsVhxmh
rWreVQP1DSOisF6x6a2WXVP2a2BwspFgrLjs2xd5DpyIhQ82NwPS/cY3zPWK
o0ni8Q8KTj4yFS7wPbZNGw1XCr0NHhTJJE6m8uMcDrSQt/mWq+/aCfp1Di6Q
SRpP752gAR57IR3drhWZwfu6mOFZKVwxtPoJ+lldbfoAoDWNx8J/c7zKWyvn
FO416pyT3G01Y2jN7Du0MDcc2OJ4lXe339GPuFL4ppR530k2qdvQBqaiyVv5
UWa9kyod9b0cecLDshboLsecm87TzHpRs/3uKbQbckN7I1FiZm/VHptU0353
FtqN3CF8YpSZ8Vu2av0h3e/OQruJiPJC9ilm/BZzVUc+5E8NgP/DkII/msPM
+H33xGBcVPzuLLSbotK5ZI0w4/dZpi+EVSx4bTgU/8WuMeM3l+rBbijw3HOR
LM9bl5fjeb97Cm3oauwUT/zOR02/ewrtxgnJf/T3bA6U6fWrW8KqAzyky+Id
jt3Lm8P5J8OIHnhGETrWyjlm8B6MFs5oIb87C+2DLF2/KmaYwcM5R/DcezbX
7uU3cc4RPHW5br8xpXDOEbz1TCzM8yGCZddUBEQPPNPofNm+2qg4moy/0sAz
Oeq52seFc47gLU0Smd8TIPVXNd+Hc47gqZmkcc8dYNbrRu6oV+5W1LSEuEJD
ZBL9OM3esbxi1QaCOv9lU2LgB3Poy2y/KkhN6zu0PBIPEhJm/H7KjZBbGc8F
O0Vp/r8LfpQu4xkRKFLyzm2KGb/vzaGkyJhGZUH4MO3Wt3otUTyeUUCLyvPt
WP4iWwkLtNcsryaKB1s9r1nHNhBoRYMhfYVjx/IHaVdq8Hr5kmYd2mTVHpvA
+UqgmurM8GwZfSVeONj2rJomGWvUZNmq9QXxbRagucL3mYIL0T3TaG9QI+mi
N1nMVW2cr4TGyGw6m+T6TMG4mtptYsnh67kqT2K/xflKoPr3MwW9zCDdsEbL
AU0XFZIonuDt1qdZnK8EmoggXdO7X4rn6TUdc85Fssyf7auRELb/AYA/HgF/
vD3iDQplbmRzdHJlYW0NCmVuZG9iag0KNyAwIG9iag0KPDwvVHlwZS9YT2Jq
ZWN0L1N1YnR5cGUvSW1hZ2UvV2lkdGggMjEyL0hlaWdodCA0My9Db2xvclNw
YWNlL0RldmljZUdyYXkvTWF0dGVbIDAgMCAwXSAvQml0c1BlckNvbXBvbmVu
dCA4L0ludGVycG9sYXRlIGZhbHNlL0ZpbHRlci9GbGF0ZURlY29kZS9MZW5n
dGggMTg3ND4+DQpzdHJlYW0NCnic3ZlrUFVVFID3vcDFJEBRDCVIbcqiUITU
dJzINAuzdJpMrRSywCmlyDQdX6DiIx/lWDqZqaSozdiMOYFWYprpjCU+QHzQ
5JgOPoqUp48LeE93rX3PPevs88B77/nV+sFZe629913fPuvsF4zJYjMXppHW
zNSvX9XnSr5FwtKaJUV250pqcY3XNBiPjhGCNfRPsB62M9YdlEPcuhD0CXrh
Xnc76rj6MlRaolOnPThOu5VEjDFf9O8Aa3WUpl3vekJwPNy2Xs00V/tLtkPg
qHSorVPBeKcP85epuZ8JE1sF2s14tftpjHCipln8JQJwMZaxkJ8o0ga9N5vS
Aq4cla1jDdjWMb+ZpFNtTJja/wPqFpXXfhRspUFiq8iTBKCuJ5giyhTLHofY
AGUt+K6p3vnnYLoeHQCTtMiEiWWC6upLvRloGiA2cpQQpKah3BhXJVtORuoi
sWgISFpJLI9iwmezQJia+5gw2UtBP0jSJgzDLBDb2Aponr0lm5M8n9ileLGB
LNngdj6sGIrAUBYcEJNUEWrMxPq7oDBKceZiasWI/c6jSGRW4VNhfW8jJBZc
DhV2eMtDMA1SWWBMmuyjTOxrKJzzYsc2QnmK2O2bLoJUSGeDLEiFYYZI7ikH
mw7ylILwE9zKAmVqfsKEqXMdlKbJvo1QOhUi9PpsE0Har37vi/XmSCrfQKOj
dl54GwoNsQEzSeXqKFRMfLWojeaF5DtQGiJ02rOWIJ0RFi77Nr01kEgcvvoM
1MOvgD5DdvnHdNYlfAAaJscZKK7mhX2gfyt2mkE/pm3iOuSwmzOxWdCsKgzU
fFArvUPsH9PqTZh9KcZM7DmskQDqSFBvPKDpdRGFmtcKgkba4F4oz63F3wQt
zevxkykKV/9yuiIKTOw7KBe7FUclaHO0vdq2ECZXhq9QI6BZo/sjwm52Kg4/
mXiH0nwTpu63wOBeRnPgeU678XBvO/cTKKf4vbUqu6FZAesHH8KtBwNnYoXw
bEo2ZmIL8FUGRV2Dp7iL9rQ5TaBqH/eRqYfT3epOykFovIDY/WbqcBWUMiX7
NExhF8GStRL+7jYIq9sVAnWhi49QS6EVfgUX2lrB5JnUlezTMLFXwVINg+ns
YRRWn0YCdfRe35giLsstR1Gz/0x81WtKMmbiczjIx8ZxvdhCoIqCfYMa52lX
orIGwBT9N6jH5d2BDlOi5wRbFW4S1yTCJK3xjYmfDqWmx6xiYqOwwzxjJn46
lKTXTANbRqGmmVbVyJOSEo5XAmFi22n26TG1x23fb/r3F94QbhOmc+J231ym
YKNj6qNmQEydqkn26TGl4h6qppNZWKr5vCbBJ6QudbzZZOuY2Bjsca4REz/l
6JwFiYTuI0jOZ3xC4oskDMV91jHxyyBnLwOmHM9PugYaRmUrJEg6916mkuo9
fxVYyBTzL+ZziC5TjPcwccJwjl5IkPTuvcwkGE+Ca2+IoxYgE3vDG4yWCTfv
u87C3xyDsDIp0kbzuUQjmAbn78mFRxkZtUCZ2E7MvkQdpoGQGc6HhoG9trNu
VM/TK9gS8RzcivA0eIW1vQDP9y1k6oLXUqUhGqbgE2Bw7yCK4Vmo1618P4Ri
dO9lKJgGP7vf7WhQ6pRRC5iJpWNEszVMeF11OdyzfZbvdKgo93iS2b2XgWAa
NMMtp+0AdLDZQib+HpyJAlOnGiing7oCtApNZkWWE6SGZNHdivA04IH0blGN
mgVM92P0R6LVTBugeBgvFSJxY/ih2OkMgiR9KnqTtGd9lUyGVtc68MKXmLzy
qFnAxCZgVMtUTAPgqsjl+VcBzm71sUwtjr2EqTlN7Yy/VNHODImnwSS5VEtH
zQom2w9ga6FMQXjlXyCXjkFpm9hruwoCVZ9EXfCvgRL9+38umAbl3gl8Ch01
K5hYXJ0cmcz0LhSUqegp+J5dg8VuVf+nqYpTHCF7cEiM16v+mAbKTspxloya
JUzK0ulhisY7iI+UCnh+PK0Z+OQGAlUW4bVv4JZcIySeBvTGEFdBabCFTLY9
aqZ1oP9Bjg3xsIGRpqPeNnPJePlzHkYX3R9l6xyPwZVuwIRpcLMrNRUro2YN
E+taT5n64V3ycFohDywNkF4R+8b2Si+Ww59ImKSvuG2cd2tqsE/viGkwX2XD
VZCPmoap+rwgwXfDxN4hTPbfQd2l8vMNDGTL9PTi3K2zx8qOxRRqFlgGORVD
jfpU7hFMg4thauMn3lHTMGkk5K6YbHsVpiwc4kfUFfhRayhj63sWbc57wbsF
t20lv+V6nbGE6/TX/9LZKPbFNBgjWPkquN1CJtatUWbqgOeP5SL0r2CtDGWT
s7dHFC1R7jBDfyE/djs15rz650s192P2I2A/oJkUM+VRs4yJL+zA9AUoVzU7
0hQc3Zks9PsPBszcRCKKWrVGkfysNYKMFDtKQHOiJoCgpWDPcX9u8JzKjS+J
3aHA/cVy93MFr5QEttE6TPZ8t8OdUuGfQY3h2grZYF8WzOxp7w3Sev8X8h8u
efHrDQplbmRzdHJlYW0NCmVuZG9iag0KOCAwIG9iag0KPDwvVHlwZS9Gb250
L1N1YnR5cGUvVHJ1ZVR5cGUvTmFtZS9GMS9CYXNlRm9udC9BcmlhbE1UL0Vu
Y29kaW5nL1dpbkFuc2lFbmNvZGluZy9Gb250RGVzY3JpcHRvciA5IDAgUi9G
aXJzdENoYXIgMzIvTGFzdENoYXIgMTY5L1dpZHRocyAxMTQ1IDAgUj4+DQpl
bmRvYmoNCjkgMCBvYmoNCjw8L1R5cGUvRm9udERlc2NyaXB0b3IvRm9udE5h
bWUvQXJpYWxNVC9GbGFncyAzMi9JdGFsaWNBbmdsZSAwL0FzY2VudCA5MDUv
RGVzY2VudCAtMjEwL0NhcEhlaWdodCA3MjgvQXZnV2lkdGggNDQxL01heFdp
ZHRoIDI2NjUvRm9udFdlaWdodCA0MDAvWEhlaWdodCAyNTAvTGVhZGluZyAz
My9TdGVtViA0NC9Gb250QkJveFsgLTY2NSAtMjEwIDIwMDAgNzI4XSA+Pg0K
ZW5kb2JqDQoxMCAwIG9iag0KPDwvVHlwZS9FeHRHU3RhdGUvQk0vTm9ybWFs
L0NBIDE+Pg0KZW5kb2JqDQoxMSAwIG9iag0KPDwvVHlwZS9YT2JqZWN0L1N1
YnR5cGUvSW1hZ2UvV2lkdGggOTIyL0hlaWdodCA2NzYvQ29sb3JTcGFjZS9E
ZXZpY2VSR0IvQml0c1BlckNvbXBvbmVudCA4L0ludGVycG9sYXRlIGZhbHNl
L1NNYXNrIDEyIDAgUi9GaWx0ZXIvRmxhdGVEZWNvZGUvTGVuZ3RoIDEwMTAy
Pj4NCnN0cmVhbQ0KeJzs3b1vW9e+JmCLEvWxQdCSKJrm3Zek4I/EhSsVt7F6
Ae4MTGGoHEBwKUxjwO3IzRQCBuNCuM0FnCbFmcLNKTJFDJwmzUHmNGkCOE2K
0+SPmHXMezm8okTxY3OvvcnnwYsURhJvLjLIq+Uf17p3DwAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAgP8kWauExH4KAACYRaiyZ/vN2E8BAAAzukp7x0kt9lMAAMAs3jXb33Ue
daubsR8EAACmdrrbCG32st0xQAsAQOmc1OqhzYacN1qxnwUAAKbzbGu732ZD
QrON/TgAADCdQZs1QAsAQOlctjuDNmuAFgCAcukfazCIAVoAAErkVX1vuM0a
oAUAoESOk9q1NhvybGs79nMBAMDdho81GOQq7RmgBQCgFEbbbMi7Zjv2cwEA
wN0uWumNhfZVfS/2owEAwB3OG60b26wBWgAAim/0WAMDtAAAlMXRTnJbmzVA
CwBAwXWrm2PabMjpbiP2MwIAwK3Gt9mQo50k9jMCAMDNbjvWYHiA9mB9I/Zj
AgDADc72m3duz4bGG/sxAQDgBmOONTBACwBAwd14v60BWgAASuFgfWPCNmuA
FgCAApqwzRqgBQCggN4125MX2rP9ZuznBQCA/+90tzF5mw05TmqxHxkAAP7d
Sa0+VZu9Snvd6mbspwYAgH+Y/FiD4QHaZK0S+8EBAOBe6KXTtlkDtAAAFMdV
2puh0BqgBQCgCKY61sAALQAAhTLtsQYGaAEAKI7jpDZbmzVACwBAdDMcazCc
k1o99isAAGClzdNmQwzQAgAQ0WW7M0+bDf+4AVoAAGKZ7ViD4Zw3WrFfBAAA
K+pVfW/ONmuAFgCAWOY51sAALQAAcYUWmkmbNUALAEAUmbRZA7QAAERx0Uqz
KrSv6nuxXw0AAKvlvNHKqs2GPNvajv2CAABYIZkcazDIVdozQAsAQG6OdpIM
22zIu2Y79msCAGBVZHWsgQFaAACiyLzNGqAFACA3899va4AWAIBYzvabi9ie
NUALAEAOsj3WYDinu43YLw4AgCX3bGt7QW025Ggnif36AABYZgfrG4trs1dp
L/z7Y79EAACW2eLabMhFK439+gAAWGaLONbAAC0AAPkIbXOhbdYALQAAi3NS
qy+6zRqgBQBgQRZ6rIEBWgAAFipZq+TQZkPO9puxXysAAEvoKu3lU2iPk1rs
1woAwLJZ9LEGg4Ta3K1uxn65AAAslRyONRjkopUma5XYrxgAgOVxnNRya7Pf
GaAFACBT+RxrMBwDtAAAZCjnNmuAFgCADF22OzkXWgO0AABkJbdjDYZjgBYA
gEy8qu/l32ZDTmr12C8dAIDSO9pJorTZEAO0AADMKVTKWG32st0xQAsAwJxi
tdmQ80Yr9qsHAKDcLlppxEJrgBYAgHmcN1oR2+x3BmgBAJhDrGMNBjFACwDA
zCIeazCIAVoAAGZzsL4Rvc2GvKrvxV4JAABKKXqV7efZ1nbslQAAoHyi3G87
mqu0Z4AWAIBpne03o1fZfkKvjr0YAACUTPRjDYZjgBYAgKk829qOXmKHY4AW
AIDJFeRYg0EM0AIAMJVQIKOX2OEYoAUAYHIFOdZgOKe7jdirAgBAOYTqGL2+
juZoJ4m9MAAAlMBJrR69u47mKu0drG/EXhsAAIquaMcaDHLRSmOvDQAARZes
VaIX19tigBYAgDsV7ViD4RigBQBgvAIeazCIAVoAAMYr1P22ozFACwDAGMdJ
LXplHZ+z/WbsRQIAoKAKe6zBcELljr1OAAAUVPSyemeu0l63uhl7nQAAKKLL
did6X70zF600WavEXioAAAqnyMcaDMcALQAAowp+rMFwDNACAHDN0U4SvaZO
GAO0AABcE/ph9Jo6eQzQAgBwTfSOOlXOG63YCwYAQIFctNLoHXWqnNTqsdcM
AICiOG+0ohfUaWOAFgCAvhIdazDIZbtjgBYAgHulOtZgOAZoAQAIDtY3olfT
2WKAFgCAe2U71mA4BmgBACjL/bajMUALAMDZfjN6L505oYrHXj8AAGIq47EG
wwnPH3sJAQCI5tnWdvRGOmfCS4i9igAAxJGsVaLX0TlzlfYM0AIArKzQBqM3
0jljgBYAYGWV91iD4RigBQBYTae7jehdNJMYoAUAWEEntXr0IppJDNACAKyg
JTjWYJCLVhp7OQEAyNUSHGswnNPdRuwVBQAgV5ftTvQWmmGOdpLYKwoAQH6W
41iDQa7S3sH6RuxFBQAgJ2W/33Y0BmgBAFbHcVKL3j8zjwFaAIAVsUzHGgzH
AC0AwIqI3jwXEQO0AAArYsmONRjkopW6UgEAYOmdN1rRm+eCcrbfjL26AAAs
1vIdazCc46QWe4EBAFigo50keudcXK7SXre6GXuNAQBYlFD2onfOhcYALQDA
coteOBcdA7QAAEvsopVGL5yLjgFaAIBltcTHGgxigBYAYFkt97EGgxigBQBY
Sst6v+1ozhut2IsNAEDGDtY3ovfM3HJSq8debwAAMha9ZOYZA7QAAEvmXbMd
vWTmlst2xwAtAMAyOdtvRi+ZecYALQDAMlmRYw2GY4AWAGBprM6xBsMxQAsA
sByStUr0bpl/DNACACyNq7QXvV7mn3fNduyFBwAgAyt1rMFwXtX3Yq89AADz
Ot1tRC+WsfJsazv28gMAMJeTWj16q4yVq7RngBYAoNRW81iDQQzQAgCU2moe
azAcA7QAAKV22e5Er5RxY4AWAKC8VvZYg0EM0AIAlNcK3m87motWGvt9AABg
FsdJLXqZLEJOdxux3woK52gnsW8PAAW34scaDCdUl9jvBsUS/uu4aKUKLQAU
XPQaWZBcpb2D9Y3Y7wbFEj4VCi0AFJxjDQYxQMs1Z/vN/gdDoQWAwjpvtKLX
yOLEAO2Enm9uhcR+ioU72kkGP+kotABQTI41uBYDtNe82E5eJrW3uwfv9x58
anV+Th/9cfjsS+fpKrTZe1+HDRRaACiywe6T9LOyA7T1SiUU19e1+6G4fmym
obiGyhqK62hWp8re+49hA4UWAAqrW92MXiCLlqUvLZ2Naiiub+p7obiG1vq5
fXhja70x4W8O/3jsV5Cfaz/uLf1nAwDKKHp7LGDO9pux35ZshNYacm1OYOaE
KluvrFaXC9111X7YAYDSCf93jt4eC5jjpBb7nZnC8JzAh8bDMXMCquy0Rr8p
qdACQKEMTwbKIFdpr1vdjP3m3ODanEBItq31xnxspqtZZe/dcmWeQgsAxeFY
g9sSvbFkOycwcz40HkZchOhGhw0K8vEAAPrcbzsm+QzQ5jAnoMrO47ZjmRVa
ACiCg/WN6KWxyMl2gDbKnMDMeb/3IMPXXl4ntfptHw+FFgCKIHpjLHJmHqAt
yJzAzHldu5/5J62kxv/Ep9ACQHTvmu3opbHIGV9XijwnoMpmZfzRHwotAMTl
WIM7c95o3SvbnIAqm6ExwwYKLQBEd+f/qVcwf+4+Cfmp9/Svvae/9r79/fDb
6CUzh6zUrbVTmWS8XKEFgFhW+ViD778W1x+/Fte/9b4JxfXvsSulKltMk9wz
otACQBS3nai5ZPlT53Eorn/pPg3F9ZevxTV6gSxOVNk7TXgys0ILAFFcpb3o
bTPDfOo+Hp4T+E1xHZvP7cPORjX2Z7DoutXNCT9+Ci0A5K+kxxr05wR+MCcw
X5Vd2Vtrp3XZ7ii0AFBMp7uN6NV0fMwJqLLRTfWfiUILAHkq1LEG5gTyycdm
qspOZfJhA4UWAHIW5VgDcwIR86HxMPaHrpQmHzZQaAEgZwstruYEChVVdmYz
zOQotACQj2k3nW6LOYGC5/3eg9iftRI72klm+I9CoQWAHEx7rIE5gTLGrbXz
m+04O4UWABZtzOHw5gSWI6psJs72m7P9sYVCCwALdZzUBt3VnMDyRZXNymzD
BgotACxat7r5rtkOuWx3QqHtjxD80vtGoS17vnSevthOYn++lso8d+cptACQ
s9Byn21thzr0unb/7e7Bp1YntKPoDU0mTHiznm9uxf4QLZvzRmvmNqvQAkAR
1CuV0G/f1Pc+NB6Gfhu9s8mNUWUXZDCWo9ACwNIIrellUnu7e/Cxmf6cPope
5ORz+1CVXZBQROdsswotABRffzjh/d4DwwlRqqxbaxdqzmEDhRYASqc/nPB2
98Bwgiq7BOYfNlBoAaDsDCcsIuEnBVU2B5kMGyi0ALBkDCfMmQ+Nh7HfwxUy
7fV5Ci0ArJrh4YTP7cPoXbHgUWVzdlKrZ9VmFVoAWBGD4YRPrY7hBFU2roP1
jQzbrEILAKupf+ztig8nuLU2ltA/FVoAIEOdjeqqDSeoshFlO2yg0AIAo5Z7
OEGVjSvzYQOFFgC403IMJ4QnDy8k9lqS/bCBQgsATGUwnPCxmZZlOCFUWbfW
FsTpbmMRbVahBQBmFori69r9wg4nqLKF0q1uLqjNKrQAQCb6x94OhhPiVtnP
7UNVtmgu252lLLSdjWr42Ie/RvndAYDFiTWcEH4vt9YW0OKGDaIU2pdJLfzg
1v9TCecYA8CKyGE4QZUtrIUOG+RTaMMH+E1979ofPYSP3OJ+RwCgyDIfTgj/
ElW2yK7SXukKbfhEvUxqHxoPb/z560vnqY8cADDQ2aj2j72dYTjBn/YW39l+
c9FtNqtC+3xzK3wOx38IfdMQALjTi+1kMJww5thbVbYUjnaSHNrszIW2XqmE
D1v4LE14wLJbOQCAaQ2GE0LlGAwnqLIlksOwwbSFNnyi3u89mPbPAsI/sui1
AgBWganFcsln2ODOQtvZqL6u3f/YTGe75y78JJXzugEAUAS5DRv0c9nudKub
g9+9f6zWnOfFOTcDAGCV5dlmQz6mh/9tt/Gxmc5/aIZvfgEAcN5oLbrBft95
9EP3yV97T38//DaTEjvIy6QWe/0AAIjpOKktqMR+6j7+S/fpr72MG+wgb+p7
sRcPAIDIkrVKttuwP3af/K33TebbsNfi6AwAAPrmHzb41H38U+/pbwvbhr0W
3/wCAGBgtmGDP3Ue97dh/55Lgx3E9bUAAAybatjgz1+/z5XbNuxoHGIAAMA1
F630zm3YX3Lfhh2N62sBABh1UquPltgFHas1c3zzCwCAGx2sbwwfq/VL75vo
3fVaXF8LAMAYZ/vN//kg/bfWP/+PxsO3uwchH5tp6JDXEqXK/pw+8s0vAAAW
IfTMF9vJtbyu3e9X4uHMVo9dXwsAQIlcq8edjWrsJwIAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABbiYH3jOKmF
v8Z+EAAAmMVlu/Nd51H46+lu42gnSdYqsZ8IAAAm9aq+F9rscN412+EXn21t
x340AAC4Q7JWuUp71wptP+HXzxutk1rdKAIAAIU1uj07mst252y/eZzUjCIA
AFAoY7Znb8xFK+0P2cZ+cAAA+IdJtmdvzLtm+6RW71Y3Y78CAABW17Tbs7cN
2TrvCwCAKGbenr1xyNZ5XwAA5Gn+7dnbhmyd9wUAQA4y3J69bRTBkC0AAAuy
oO3ZG0cRnPcFAEDmTncbObTZa6MIzvsCACATB+sbObfZ4VEEW7UAAMzpbL8Z
q9C+qu/FfvUAAJSb7dmVZfEBgOVge3Y1nTdaYf11WgCg7GzPrqb+EW3hLThO
arGfBQBgLqXYnn2Z1L50noZ8bKava/c7G9WFrsnSO9pJBu/Cu2bbycAAQHkV
fHu2XqmEBvvH4bNr+Tl99KHxMLTc8Dfks1DLZPRNP91t2CoHAEqqsNuzL7aT
L52no1X2Wj63D9/vPQh/c24rtgRGr88Iv3JSq8d+LgCAqRVwe7ZeqYSCemeP
Hc2nVudNfe/55lb+y1gu75rtG9+Ri1b6bGs79tMBAEwn4vbs6BeRXmwnP6eP
Zqiyw+kP2YZma8j2RuMvgwufh/AzTuxnBACYVLe6GavNXrY7g8eYeUt2fPpD
tq9r9w3ZDoQfIu7cNneKGgBQIrf90XNu27OZbMlOOGT7cuVPpnq2tT3hzxoG
DwCAUpiw3iwi/6vdWcSW7CRDtm93D1Z2yHbyN+i80TJ4AAAUX5Tt2U/dx78f
fpt/lR3Oag7ZXrTSqd4p14cBAAWX//bsT727D+DKOaszZDvDV/8u252jHSeh
AQDFldv27Kfu4996kbdk78xgyHYpm23/ftsZEj4kBg8AgGLKZ3u2gFuyd6Y/
ZLtMdzTM+V67PgwAKKaFbs+WYkt2fL50noZaG/tdykDoonO+m1dpb/S4YACA
uBa3PVvGLdnRvN97EPstysxluzP/2xp+/HGKFwBQKJlvzy7BluwfX78gtkyT
BvcyfaPP9psGDwCAgsh2e/Yv3SXZkl2+74LN/EWwG3OV9k5q9divCQDgHzL5
M+g/dR7/aku2wI52kmw34UMuWqnBAwAguuOkNv+W7N9jF1FbsuN1q5uZt9l+
XB8GAEQ38/asLdkSWVCb/e7r4MGr+l7s1wcArK7ZtmdtyZbLou/LCD8TGTwA
AGKZant2ObZkv3SevlylM1RPdxsLbbP9uD4MAIhi8u3Z5diS/dhMV2RLduCk
Vs+hzfbzqr7nFC8AIGd3bs9+33n0S++b6EXUluxs8rnLeJDwcTraWf5pZACg
OMZvz/7QfWJLtuzybLP9vGu2u9XN2K8bAFgVF63UluwSu/H9zSGnuw2DBwBA
Pg7WN05q9fNG6yrt2ZJdMuFtjdJmv/t6itfxyv80AQDk7NnW9tvdg0+tTvQ6
aks2E9nebztDXB8GAESRrFVCJ3y/9+Bz+zB6QZ08oYd3NqqxF69Acv4i2G05
228aPAAAYnm4vvG6dv9D4+HP6aPofXXMluwbt1ONOFjfiF5lv/uPwYOTWj32
egAAq+7b6lYojR+baWiP0RusLdlJ9MehCxLXhwEAxfEvWzvRh2xtyd5p0ffb
zpDzRsv1YQBAcdQrcYZsbclOIvoXwW7MVdp75ccQAKB4Qr3MYcjWluzkJr/C
OP8YPAAAiuz55kKGbD+3D23JTq5b3YzeWsfkdLcRe4UAAO72Yjt5u3sw/yhC
+JfEfinlE72yjsm7Zjv28gAATGEwZDvtKEJows83t2I/fikV8Itgg1ylvdjL
AwAwo8GQ7Z2jCLZk53G234zeWsfE+QYAwBIYDNnaks3cSa0evbKOydFOEnuF
AACy9GI7eb/34FOrY0s2EwW53/a2OKoLAIAxkrVK9Mo6JueNVuwVAgCg0C7b
neit9baEZ4u9PAAAFNp5oxW9tY5JslaJvUIAABRXMe+3HcSNYAAAjHG0k0Sv
rGNyUqvHXiEAAIrrYH0jemUdk7P9ZuwVAgCg0K7SXvTWelvcbwsAwHhFvt82
JPbyAABQaKe7jeiVdUy61c3YKwQAQHEdJ7XolXVMwuPFXiEAAIrL/bYAAJRa
9Mo6Jr4IBgDAeBetNHprvS1XaS/28gAAUGhn+83orXVMDtY3Yq8QAADF5X5b
AADKyxfBAAAor2StEr2yjsl5oxV7hQAAKLTLdid6a70tF6009vIAAFBo7rcF
AKC8fBEMAIDyOtpJolfWMTmp1WOvEAAAxdWtbkavrGNyutuIvUIAABRa9Mo6
Ju63BQBgPF8EAwCgvA7WN4pcaLvVzdgrBABA0T3b2i7m2bNHO0nstQEAoBxe
1feu0l70Bjsc99sCADC5g/WNs/1m9BI7iC+CAQAwrX/Z2vk/7cPfD7/9tfft
L71vfuo9Dflz90nI9/m22ct2J/ZiAABQSv+1vvel8/SPw2ej+a33j6L7t69F
9y/dfy+6Cyq0yVol9koAAFBK9Url/d6DGwvtbcm86LrfFgCAeXxb3frU6kzV
accU3b9+nVv48WvL/dR9fGeb9UUwAADm919q9Z/TR/N32hvz6+1F92y/Gful
AwCwDOqVytvdgwUV2tvyfztPPrU64fcNeZnUXmwnnY1q7JUAAKCsQpn831kM
HsyZL52noeUqugAAzCBUx8UNHmRbdMOjhtQrzkYAAOA/CV3xtlO8ipnQwEPL
/dhMFV0AAIKH6xsfGg+j19QFFd3YqwsAQB5C8fvcPozeSBeU8NJC0Q2lPbTc
N/U9RRcAYCm9rt0v1+CBogsAwLAZrg9b1vS/iRZWIxTd0PNDy32+uRX7/QEA
4G6htmVyfdiyZrjo+g4aAEAxvUxqhT3FK3o+NtPXtfuqLABAkUW5PqzIUWIB
AEqns1ENLS56k1RiAQCYWZGvD1NiAQCYROmuD5shn9uHSiwAwLIKNW85rg8b
LbFv6nudjWrsBQYAYOGW5vowJRYAYGWV9/owJRYAgHtluz5MiQUAYFTBrw9T
YgEAuNPr2v1CneKlxAIAMJUiXB+mxAIAMI/QJPMfPFBiAQDIUD7XhymxAAAs
zoKuD1NiAQDIR+icWV0fpsQCABDFPNeHKbEAABRBKKWTDx4osQAAFM2d14f9
nD5SYgEAKLLR68NCiQ0tN/x67EcDAICJvK7dD51WiQUAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAllWyVon9CAAAMKPT3Ua3uhn7KQAAYBZH
O8lV2lNoAQAoo2St8l3nkUILAEBJnTdaCi0AACV1nNRCm1VoAQAoo/6wgUIL
AEBJ9YcNFFoAAMpoMGyg0AIAUDoH6xvDbVahBQCgXC5aqUILAEBJndTq19qs
QgsAQFmMDhsotAAAlMjosIFCCwBAWdw4bKDQAgBQCqGv3tZmFVoAAIrvst1R
aAEAKKnT3caYNqvQAgBQZOOHDRRaAAAKbvywwSDHSS32kwIALINX9b3Yj7BU
7hw2UGgBADJ0tt8Mif0Uy+NoJ5mwzSq0AADz67cvhTZDV2lPoQUAyE2/fSm0
WQkrOXmbVWgBAOY0aF8KbSamGjZQaAEA5hSq1KBWKbSZmGrYQKEFAJhHslYZ
rlUK7fymHTZQaAEA5nHeaCm0GRre7lZoAQAWbbR9KbTzuLbdrdACACzUje1L
oZ3Hte1uhRYAYKFubF8K7cxmHjZQaAEAZnBSq99YqxTa2cwzbJBtoX2+ufV2
9+Bz+/ClhgwALK+D9Y3bapVCO5t5hg3mLLSdjerr2v2PzfRL5+kfh89C3u89
yPbVAQAUzUUrVWgzdNt29+IK7YvtJLTWz+3DfoMdJNTaxb1MAICCGN++FNpp
jdnuzrDQdjaqb+p7w9uw1xLKbb1Sye1VAwDEcmf7UminNWa7e85C+zKpvd97
8HP66MYGO0iouM83t6K8dgCA/N3ZvhTaqWQybDAotKGXvqnvfWp1xjfY4fjm
FwCwUk53G3fWKoV2cvMPG3zfefRD98nfet/8fvjt5CW2n1B9Yy8AAECuutXN
SSqWQju52YYNPnUf/9R7+mtv6gY7yIfGw9gvHQAggst2R6HN0CTb3YNt2B+/
bsP+fdYG65tfAACTty+FdhJ3bnf/ufvkp97T3+bYhh395pcqCwCsrAmHDRTa
yY1ud/+p8/jH7pNfstiGHY1DDACAFTfhsIFCO6HBdvcP3Sd/zXQbdjSva/dj
v1wAgMhCQZ3qK0sK7Xjd6uZ/f/BP/9b6539t/tOnVuda7jwzdvK4vhYAIDja
Sab9Dr5Cm63nm1svtpNrebt7cC2hvg5asUMMAAAGrtKeQgsAQElNO2yg0AIA
UBwzDBsotAAAFMcMwwYKLQAABXHeaM3WZhVaAACiO05qM7dZhRYAgLiStco8
bVahBQAgrnmGDRRaAADimnPYQKEFACCi+YcNFFoA4P+1d4e+bZ1rHIBVx4nd
I8uJa7uuZx07SusuIKg05ZVyUVlUelUFViOVCi5KaXRBpVuckYKSkIFdsEoj
I1M1UjIpIwMj+yPut+vJso4Tx3bsc46T59EL1mmqP5+RX9685/0gQ8etjkAL
AMCKelapLiTNCrQAAKSvsVZcVJoVaAEASN+ihg0EWgAA0rfAYQOBFgCAlC12
2ECgBQAgZSftWKAFAGBFvdiqLzzNCrQAAKSju76xjDQr0AIAkI5lDBsItAAA
pGNJwwYCLQAAKVjesEG2gTYurh9Va6Ey+XQAAFLzvtO7MYH2IKq8rd3/3Nn5
c3v3PO7vbZRS+2gAADIR0uZS0+yyA22IrEfV2lkrDgl2tPbL0fI+FACAnHhy
N1p2ml14oK0WCgdR5V39waANO15mDAAAbo9lDxssKtDubZRebzXG27CJCil3
IY8FAICVkMKwwdyBtlooHFY2Q0A9j/uTQ+ygPrW3l/CEAADIr3SGDWYKtPvl
6G3tfoim0yTYYYXEG9Lvsh8XAAC5Et0ppJZmJwTauLh+WNk8bXambMOOR1lL
DAAAbqdX9VZWgXawVmvWNux4hSSc4QMEACBDT6NKmmn2Y/zw382vTpudaybY
YYU8nPUjBAAgMykMG3yId77vPvq51/99++tFhdhBnbXirJ8fAAAZW9KwwVn3
4Y/d/q+9BSfYYX1qb3vzCwCABQ4bfIh3fug++qX3eOFt2ER58wsAgIHGWvH6
bdifev3fltaGHa+DqJL1YwMAIC+OW5053ucatGH/SCvBDsv1tQAAjHpWqU4Z
Yr/7//tcabZhE+X6WgAAEiYPGwzasF+yaMMmyptfAABcaHzYYElrteau87gf
F9ezfk4AAOTRYNjgY/zXWq0vvceZZ9fxssQAAIDLdNc3/tX86p+b90J9s1V/
vdVI1FkrHq/Uoqzrawcaa8U3zfbzai389LFbKoc/Zn0iAIAbpVoo7JejRIUs
Oh6PT5udKeOxN79GvdiqJ2ZCTtpxiLjh34eUGyJu+MEk6zPeIu5WBgAm89pX
QnSnEOLrldsnBhH35b1miLhP7kYh5WZ98Bso/JgWftoyzg0AMJMQTee75+J9
pzeMuE+jSvh7QjbO+tussE/tbb87AACYw6t6a1H3EYcKETf8hcOIaxx3Gvvl
aDgMoz0LADCT6E7hfae3wEA7XsetzuCNsyd3o6y/bh69qz8w2g0AMLcQMpea
ZkfnEwwkJFQLhcS7itqzAACzWuy8wYQKH5T1d82X11sNmzcAAK4phXmDYZk3
GPW5szO+Sk57FgBgVuYN0jdYzDVer7caWR8NAGD1vGm2zRuk6bJrPs7jvvXI
AACzaqwVzRukZm+jNOEKZu1ZAIA5PKtUb+28QcrTqqOLubRnAQAWJbV5gxdb
9ay/618OokoIlp/a2+EfUvvQ8cVc2rMAAAuR5rzBbqmcyXeMi+tH1dppszNs
hO5tlNI8QPj0K9Os9iwAwHxSmzc4acdpzhvsl6O3tfuJpVif2tvpb8S6cDGX
9iwAwKLcmHmDkFQPK5unzc553B+PiyHKpt//PIgq00RZ7VkAgLl11zfSSbNL
mjfY2yi9rd0PYXVCVszq1q3LFnNpzwIALNDzam215g2qhcJhZTNk1AvbsIkK
Wff6nziHuLg+fZTVngUAuI7jViedQBuS89yH3NsoHVVrk9uwiQqhd4FPaSaT
F3NdWEfXeDgAALdZmvMG4bOmP1i1UBhs1prydarRVmeam7jGjz1N3zhR4Ttm
dWAAgFWX2rzBcatz5WEGm7VmmjtNRNmUN3ElTLOYK2/NZACAVZf5vMFBVBnf
rDVrZbKJK2Hur6A9CwAwt91SOf15g+Fmresk2NEom/m7VPvl6DpfQXsWAGBu
L7bq6aTZ/zyIr9ysNWtltYkrYb5k/rmzEx5ItgMSAACrLrpTOGnHS0qwH+Kd
H7qPvvQe/7G4BDusrDZxJcy6mCvkeSEWAGCBFj5vcNZ9+FOv/1vv64Un2Bz+
dj5E0ylD7FG1lvl8LwDAjXT9eYMP8c733Ue/LKcNO1rncX+/HGX9wP525WIu
IRYAIAVzzxucdR/+2O3/usw2bCLK5up39IeVTSEWACAPZpo3GLRhf99OKcQO
I2Lm6wsSEou5TpudkG/zdkgAgFviVb01IcF+jP9qw37pPU4zwQ7rrBXnLSUO
F3MJsQAAeXDhvMF33Uc/9/opt2ETlZNNXAkhwQqxAAA51Fgr7pbK/6hsfrNV
P2vF/13okthZ6/VWI+vnAQDAyqsWCvvl6LCyGeLlabMTUu7k1/kXUvnZxAUA
wI0UIu5BVAkR9139QYi4iRej5q5cbeK6VV5s1Z9GlaxPAQCQpb2NUsiiIeK+
rd0PEXfWC23ztonr9nhWqX4b77zv9LrrG1mfBQAgX+Lieoi4R9XacFbhwiib
w01ct8STu9Hw7T+BFgBgGqPjuO/qD0LKFWUzEbJrSLCj6yzCH6M7/l8AAJB3
l10Gd9zqCLQAAORcSK2X3Zoh0AIAkGcv7zUnX2Qc/oOszwgAABcYLDG4sgRa
AADyZnSJwZX1vFrL+rwAAPC38SUGV5ZbFQAAyIPLlhgItAAA5N+EJQZXllsV
AADI0JVLDCaXa8IAAMjKlEsMrgy0jbVi1l8FAIDbZaYlBpPLrQoAAKRpjiUG
Ai0AAHkw9xKDyfWq3sr6mwEAcMOFKHudJQaTyzVhAAAs1YuteiKCnrTjN832
lRWS6vNq7cryRhgAAAAAAAAAAAAAAAAAAAAAAACL4i4tAABWVGOteNzqZH0K
AACYx/Nq7dt4Z7dUzvogAAAwm+hO4X2nF9Lsm2Y767MAAMBsnlWqw3tm3QwL
AMBqOWnHwzT78l4z6+MAAMC0nkaVYZTVngUAYLUctzqJNPu8Wsv6UAAAcLXd
UjkRZUO97/TsngUAIP/eNNvjaVZ7FgCA/GusFS+MsqFO2nHWpwMAgEle3mte
lmZDPY0qWR8QAAAuNqExqz0LAEDO7ZbKo2tmLywX3QIAkGeNteKzSvWyd8Fc
dAsAwEqI7hSe3I1e3mu+7/RGA213fSProwEAwAxCgn1erQ1uVXDRLQAAK6qx
VrTZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGB5
9jZK1UIh61MAAMA8Tpud87j/eqsRF9ezPgsAAMygWij8ub07rHf1BzItAACr
4rCyOZpmZVoAAFbIabMznmZlWgAA8i8xZiDTAgCwQi4cM0jUedwPgTbrkwIA
QNKEMYNQnzs7R9Wa5V0AAOTQhDGDs1Z8EFWyPiAAAFxqfMzgPO6/rd03JQsA
QP69qz8YHSoI4dZQAQAAq+I87occe9rs7JejrM8CAAAz2NsoGSoAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC4Af4HwTNF4g0KZW5kc3RyZWFt
DQplbmRvYmoNCjEyIDAgb2JqDQo8PC9UeXBlL1hPYmplY3QvU3VidHlwZS9J
bWFnZS9XaWR0aCA5MjIvSGVpZ2h0IDY3Ni9Db2xvclNwYWNlL0RldmljZUdy
YXkvTWF0dGVbIDAgMCAwXSAvQml0c1BlckNvbXBvbmVudCA4L0ludGVycG9s
YXRlIGZhbHNlL0ZpbHRlci9GbGF0ZURlY29kZS9MZW5ndGggNTU5ND4+DQpz
dHJlYW0NCnic7d3reapKGAbQUwIlWIIlUIIlUIIl0IElWAIlUIIlUIIleGIu
OyqogAwzwbV+7mTDR568mYvDzH//AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEk2WxKwDasn3sCoAOxyJ2BUBb
fVrHLgFo2Z2aLHYNwK3t6VTFrgG4lZ9Op23sIoBbH8k01ITkNB/JNNSE1NTn
RtNQExJTnpNpqAmJKT6Tecpj1wFcyr+SecxiFwJc+krmqY5dB3Dp8B3NMnYh
wIXqO5mGmpCS8ieZhpqQkM1PMg01ISHrf8k87WLXAvzzm8zTJnYtwI/DbzKP
q9jFAN/2F43mIXYxwLfyIpmGmpCK/DKZhpqQiNVVMg01IRFXyTTUhETU19G0
OTQkYXedzFMRuyDgv8+dLa+HmuvYFQG3k7PnoWYWuyTgv+w2mYaakIJjK5pF
7JKA28lZQ01Iwu3krKEmpKBoJ9NQE6JrTc6ebWNXBW+vK5nOIYLYmq5kOocI
ImtPzp45hwjiKjuTaagJcXVNzhpqQmzrO8k01ISo7iTTUBOiOtyLZhm7Mnhn
1b1kOocIIrozOXtyDhHEtLmbTOcQQTz3JmcNNSGqB8k01IRo6gfJNNSEWPaP
Gk1DTYjk/uTsmXOIII7Ol6d/bWLXB+9p9TiZziGCOB4n0zlEEEf9JJqGmhDD
7kkyDTUhhttjhww1IQVPJmcNNSGK9rFDLTaHhvkdn0eziF0jvJ/6eTKdQwSz
2z1PpnOIYHb3dra8YqgJM3s+OXtWxC4T3k2vZBpqwsyaXtE01IR51b2SaagJ
83r88vSvbexC4a082Nny2jp2pfBOHu1secU5RDCnvsl0DhHM6dA7mtvYpcIb
qXon01AT5tN3cvZkqAkz6j05ezLUhPk82dnyWhm7WngbQ5LpHCKYSz0kmc4h
gpnsBzWaziGCeQyYnD0rY9cL76Hfy9O/8tgFw1sYNDl7MtSEmRwHRtNQE+ZQ
D0ymc4hgDruhyXQOEczg6bFDLc4hgvCGTs6enEMEM+hx7FCLoSYEdxwRzU3s
omHx6hHJNNSE0Aauz/tiqAmB9Tp2qMXm0BDWiMnZsyJ23bBw45LpHCIIqxkX
TecQQVD1uGQaakJQoyZnz4rYlcOSDdnZ8oqhJgTU+9ihFkNNCGh0Mm0ODQEd
xkdzG7t2WK5qfDKdQwTBjJ6cPTmHCMIZPTl7ZqgJgQzd2fLaNnb5sFQvJdNQ
EwKpX0qmoSaEsX+t0bQ5NATxyuTsWRn7AWCRRr48/SuP/QSwRGN2trziHCII
4fhqNA01IYD61WQaakIAu5eTaagJ0xt+7FCLoSZM7uXJ2ZPNoWF6L0/OnjmH
CKbWTBHNTeyngKWpp0imc4hgYq+uz/tiqAnTGnfsUIuhJkxqisnZs03sB4Fl
mSiZhpowqWaiaNocGqZUTZRM5xDBlKaZnD0rYj8KLMhLO1tecQ4RTGf8sUMt
hpownemSaagJ0zlMGM0i9sPAYlQTJtNQE6Yy3eTsyVATJjPV+rwvziGCabx2
7FDLNvbzwEJMm0znEME06mmT6RwimMR+2mQaasIkJp2cPdvGfiJYgmknZ8/W
sR8JFmCSnS2vGGrCBI6TR9M5RPC6evJkOocIXrebPpnOIYKXTXDsUItziOBV
00/Ongw14WXTT86elbEfC/66Jkg089iPBX9cHSSZhprwmsnX531xDhG8ZKJj
h1r+3jlEmyx2BfAryOTs2Sb2kw2V2y6FlIRK5t87h+gomiSkCRXNPzfU3Ntk
jIRUoZI5x1BzvZ7wYhv7/5GQQJOzZ5twVeebclc3E29yexRN0jHdsUMtAYaa
WV6UVX38ucF60ovvT6JJMiY8dqhlwl/zVb4t68PN5VeTXf7TZuKa4RUBkznF
OUR5/tlvDZv7L1mYy8Ioh67f+qkUo8s691v3//qtcwTzZzZMNEnCPmQyR4wE
P/ut9dMrV9nkP4mfBVGiSQoCTs4O+y2/32/tEOS8zp934kSTBARbn9c3Qk/7
raOuOkr1fXnRJL6Jjx1qKe7fuV+/tUOoRQz/Nl8RTeKbLIPdOoaag/qtHYpQ
P4rfv1KiSXT1y+F77PeXfEy/tUMR7mdx6Kga4ti/mpRnqhf6rR2KgD+Li70E
RZPIQuxsGc7EK/JuXA66RZO4Ak/OTitsMK/XXYgmUYXZ2TKM0MG8/nRXNInq
GClmw029hr3teoG/aBJTHSdmw80RlGb2O8IduygxG26WmOwi3BM6/ZHJ2RBr
2Ntu31cVTaL5G5OzgZbKtjQ39xVNookRtKHmCma7by+axNLMH7Sh5tvzvb0x
kmgSST1/0gYqZvxpHFt3F03iCPvy9ASKOX8a+/b9RZMoQh07NJVi1p9G1z6f
okkM6/qVtyVDO+Yz/ziOHUWIJhGt87woX39/clrBl8q2VF1liCbRZfl2X88b
v/vmD+adzr1okob1pqyaeVPYlYf1/E9+5+Ub0SQhebGL2b2Nk4YqpWLgriwv
43RvI2Xh3ly1aJKi+bu3dRbnSe++Sy6aJGvG7u1sS2VbatHkTzp3bw/LDeaD
9+JEk/R9dG8DrlCIGMxH+9aLJn9Evg3SvS2iPtRBNFmE1dTd2yLu8zza5kE0
+Wum694WkZ/k4TFMosmf9Hr3dvY17G0H0WSRPrq31cPf7kfBXMeu/tl+gqLJ
37YuRnRvUwhmaws90WRxsnP3tn8wY6xh7/DkD0rvaK62q4BVwqv6dm9TaY12
U9S52TVRP5eFnp52b1MJ5rPu7PNK19v689tmqRYm8KB7G2sNe4fjC9HMNvvv
vz/H+98ESVpt2t3blHp++2fJvBfNdfn7WEnMZsFwVxsPpRTMzi30nkYzK/bH
y+8o5q8bJvO98VBSwex1rOh1NPPd4ebr8+0sD8FksQu4sX+ezN9oroqqneQ6
ZvmwUD26s6dTsz5/Z6ux7GhRgWn0SebpWFb3vrKO/QCwSPci19Mmdv2wTK8d
97KNXT4s1N0t9PpIbKIZFqQaH0yzPxDM+O6sRXkQzvju7Dp26bBkh5HBLGIX
Dov2aAu9B8z+QFAPt9C7y6I8CGxf1/uyrOpPPYPZZLGrhjeU5Z+K8lM7tBbl
QWI+Q7uKXQUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEMGqWMUu
AWhrTs1uk8WuArhWns7qMo9dCHAhO56+HKvtKnYxwI/y9KvZF1nseoCzf43m
t8NuE7sk4LrR/FZv17Grgnd322j+DDt9ngJRdTSa38NOn6dAPN2N5s+w0+cp
EMndRvOnY2vYCRE8bDS/O7Y+T4HZ7Z4m87Nj6/MUmNWqVzLPHdssdqnwTvZ9
o1nGrhTeyZ9pNCPfHmb2VxrNqsziFgCz+iuNZnk6FlELgHmNbDQ3x3mX8W0+
KqjX890PIhvVaGbV1781+7mW8X2VuZvpbhDfiEYzP17882GXz1Hm1y2P2znu
BQkY3Ghmu9aXZnh7rP75Q5CHvhOkoXejWXx+e9505zbwpiW/fw72Qe8DqVj3
TWbzX2eDefENARfZFhd/BMpQN4GU1H2jWdxrMC+EWmSbX/0JyIPcA5KS30tZ
q03c9fu+ulxPX+X1LarV9HeAxNR9o9nf9MPOw80dLApi8Xo3msNMO+zcty6/
me7ikKQ6TDRPn8PObJoau7b6W01zaUhUoEbzJ0CTbCnUWaNFQSxbHTSak3zQ
kXVfuHj5wpCusI3mR9s2QY1N96XrfIJrQ6LqkLmc5uPHuyXusykuDykK2WhO
NBi8vwende4sVxMql5Ot19k8uIl17ixV8eD3/hXTzZ4+Xt9rURAL1YTI5aQL
XB/fyjp3lilEozntx431k7tZ584iNVPn8riZtsDd0ztaFMQCTd1oVtnEBW57
3NQ6d5anmTKXUzeY//X8ZMc6dxZnykZz8gbzrN+tbX7J0hymymWABnNIfda5
szCrbXWcIJhBGswPVd8CrHNnefKyfi2XgRrM/56ekX3JoiAWKNvsDqODGfCT
i0GLe61zZ5FWxb4Zkcugi8t7b1odvhSIaD142Bn4o/6B1VgUxHINGXYGb6X6
l/LNOncWrO+wM/zauAFTQN+sc2fZng875xjWjVkLoUvL0j0cdh5Wc1QwIpmT
7EEEicvLQ+evfznP7ccks56nNIjsY9jZ3PzyH9Yz3bsekczjTLVBfB/DzuPs
DeZ/A876vLSarTxIwMewc94G879+r2i2bOarD9KQ7+py1vuNSeasFcI76j5C
4YkqdtWweM2IZDaxi4bFq8Y0mlnsqmHphq/P+5DHrhqW7tERCndtY1cNSzfs
Fc1v+9hVw+IdRyTT+jwIrR7TaMYuGhZvNyaZ69hVw9KN2q66iF01LJ31eZCk
Mck0BQShHUYk0yuaENp+TKO5il01LJ31eZAiU0CQIq9oQpKaEck8xC4aFq8e
02jGLhoWzxQQpMgrmpAiRyhAksYk0/o8CK0eE83YRcPircZEcx27ali+vBmc
zE3smuEdlMeBySxjVwxvYbUflkxTQDCP/DAkmY5QgLlsjwOimcWuFt5Gtuuf
zDx2sfBG1nXfZJaxS4W3UjT9kukIBZhV1u/lk2Ndlpt8FbtaeB+DFgUdaxGF
mYxYFPQV0TzPYtcOSzZ4UdCvpq5EFAIZuijofkRjPwksy7BFQY8c6n25FVGY
SHGcKpsiChMasihokLrelUW+jv188Ff1XxQ0PqJZ7IeEP2jTBI1mVWSxnxD+
pJ6LgsQSZraqxBJSNGZRkFhCeC8sCmo5iCVMJdtPFMvtKvajwKJMsChILCGA
1xYFiSUEMn5RkFhCSKMWBYklBNd3pyCxhFkNWRQkljCfnjsFiSXM7PmiILGE
GB4uChJLiOXuTkFiCVF1LQoSS4jv5vgwsYQ0XCwKasQS0vG1KKjZrWMXAlwp
arEEAAAAAAAAAAAAAOAdZbELADp40wVStDmuY5cAtGQn0YQEVaIJCSpOognp
yU6iCQmqRBMSVJxEE9KzOokmJOggmpCg7Uk0IT2rk2hCgg6iCQnankQT0rM+
iSYkqBFNSNDvOZ6iCen47c6KJiSkuYjmqYhdDaSqnPl+u5NownP7/bz325xE
E57bnGaO5lE0oYfjzNHcn0QTnvtIyqzRvOnOiiZ0Or/OPGs0j6IJz51355k1
mrfdWdGELtXM0SxayRRNaPtKynzRzNrJFE1o+U7KfNGsRBN6qGaOZkd3VjSh
5ed15rmi2dWdvR/NdXnYzFQYJOVnd57ZotnVne2M5qqojqfTbqayIDGHmaO5
7UzmbTTz3Vdd1TxFQXJ+kzJPNFfdybyI5mp7biw/HbJZaoL0XCRlnmgeOmL5
G83Nrvn9J69X88YukjJLNO90Zz+iud7W1/+ymaMeSNPuIgpzRPNed7ZtO0M1
kKrL3XlmiebhThBvzfzuKCSmmTkOu+4g3jL7w5u7Tkr4aK67k3jjmAUvBJJ2
k5Tw0Ww6o3hjHbwMSNxNUoJHc9eVxBtF6CIgefubVISO5rquq/rT3dbTojxo
784z96zoOv9Uftp9JNa0LPzXsTuPZEACbruzogkpaHVnRRNS0OrOiiYkoOqY
HhVNiK1zdx7RhMi6d+cRTYisqzsrmhBbZ3dWNCGy7u6saEJkB9GEBN3dnUc0
IaL7u/OIJkR0rzsrmhDT3e6saEJEjzabFE2IphFNSNDuQTJFE2J5vNmkaEIk
j7qzogmxPOzOiiZE8mzv9L7RXG23IcuEd3OcIJrn8y8dewlT2j9J5rNo/px/
mc9SLbyLji30ekcz2+yb72/azlcxvIVn3dl70VyX9bA+LzDA0+5sR+6yYn8V
6EOMwmHRnndnb6KZ7w43X3bsJUzu3p4jndFcFdWx9UXTshBA1Team1Zj+aWI
/QSwRHe20LtR3Q2wYy8hhF7d2fvq2PXDQt1tDfs4ZLHLh4Xq153tZvYHQnm0
58gzm9jFw3IdRgdzG7t0WLAHW+g9ZlEeBDS2O2v2B4I6jArmcRW7bli2cd3Z
deyyYeHWdfmj/tIjmEWgYlZ1uc1XgS4OS5Dln4qv0FZXoQ03+7P7vH5T78p8
HewmT4uIdmd4RRbw0s1Fy9zU+3KTh7vZHcVpNfs9IXF5x2zTR0CLPJuthINP
hKCluju4rauPgK6CF3D+2xD+LvDHZMcns0+HutyELGAfdCANf1WPLVBCbnHy
9WLcKtwN4I+635/9pwp39/LzBhpNuPW0P3sK+Z5Lc9JoQqeY/dmfF1bLQNeH
P6yO15/9ubXdOqFlFa0/+3s+Whnk+vCn9VhmP7hRW/X5pn34/jL8YT36s4NW
t272h02Pb7vcS7AcVTgsWp/+bN73Wtuq73Zil221RhPaevRnm6zHdfJdc/7e
w6rXXZvL65cvlA9LVT+P5rP+7O9JLD33Rrn+uEajCW3rdhJb8kf//+Iklr4r
em7+GpSvPwUsTvk8mff6szdnfPadK7rdrUyjCR0Op6fKjv+23t78x6LvDfe3
l99O9SiwIH36s+vr/5Jt9s1tw7fpe7/2et1m2geCZejRn708i361rdvfMODw
lY7p4GLqR4IlODyPZvn9rZvdbWP5ldxV/7t1XECjCR06NgVqWX9+OnLni0N2
ku+8WRHoyeBP2z1P5uHOOfVng95/bqe72a0DPRf8bVebXA42aGXt7UcmB7GE
u/r0Z+8pBt1pdxXL7SrI48BS7LpT99wxH3Sfi49MxBKeGtufHXpU/c8uI2IJ
vYzrzw4+3vPzD0BVDP1v8LaqEcGss4E3ycUShhnRnx2+W2whljDYKt+W9aF3
MMvY9cJbyfKirOrjs2AWseuE95Rvyn19r4878NOSie2KmHeHFKzzctfq4w79
tGRa28j3h3ScB6FV/R3MwZ+WTGoT/U8DpOY8CN1XWcwS1p9DYHuUQFJ+Pt6J
224D1/4NeUUT0rH/nYZyLi6k4moXIdGENNycxlvGrgf472da1kIkSErHqvsi
dk3A7Uqks3XsouDd7TuCaTEQRHbnrM/jKnZh8M423cG04gBiak3LiibE93Az
lCp2dfCmssODYFoMBJHsPgPY1Bf25YVV7AIBAAAAAAAmkMUuAGhbHWJXALSV
pzx2CcCt7HiqY9cA3Dq/d7mKXQRwo7EkHdJTfC5WX8UuA7jy9X5XGbsM4FL+
vZtPFrsQ4EL9/fJzGbsQ4NfqZ1uCJnYlwK/9vx1DitilAD/+NZkaTUhIfrEl
Xh67GOCf1fZnDsgSPUhKttkfz9Fcxy4EuLEuD5boQYpWRewKAAAAAAAAAAAA
AAAAAJjMOotdAdBWHctV7BqAG9l5f5L9KnYZwJWvg4pkE9JS/WyGKZuQjux3
n1rZhGQUF8k82nQPEvGvM3tqtlnsYoAv/zqz9SZ2KcA/X53Z424VuxDgwvlw
v6bIYpcBXDmeqjx2DcCNtW4sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAJCo/wHLwmfGDQplbmRzdHJlYW0NCmVuZG9iag0KMTMg
MCBvYmoNCjw8L1R5cGUvWE9iamVjdC9TdWJ0eXBlL0ltYWdlL1dpZHRoIDI4
OS9IZWlnaHQgNTgvQ29sb3JTcGFjZS9EZXZpY2VSR0IvQml0c1BlckNvbXBv
bmVudCA4L0ludGVycG9sYXRlIGZhbHNlL1NNYXNrIDE0IDAgUi9GaWx0ZXIv
RmxhdGVEZWNvZGUvTGVuZ3RoIDQ3OTg+Pg0Kc3RyZWFtDQp4nO1daXQUVRau
XpJ0dzqdpcneHZqkE7KSPekEWRVFB0UQGQNBcQADLjjCOcARBxWPCIiAKxEY
dRAcMzIsg4pyEhaBTEhyCGLQoKwSIBBQEiAhJMpck7Gnp+6r6npVlQTS/Z36
1X3fffe9V1+9+7b7GMYNN9zofqTrvd6ICqJ9Rhn1yyOpU+En10cjSykiIiJW
k/DAAw9IVx4UFERUnp+f7yim1WqdyjjCarVi+TvuuEO6wSxkZWXhjFJSUrjk
77//fpbwyy+/LLtVPj4+2Krx48c7ygQGBq5atQqLPfzww9INMBgMK1euxMqn
Tp0qXbkdkV7qwxl9fsqNpnpWRQcrGWZGuD9tQtazpm+oSiFbWbZu3XoD4fz5
835+fhI1FxYWYs1NTU1RUVGOYpARFnvnnXe41Pbv3x/LP/300xKtxXjooYdw
Rvfeey+X/EsvvYTlp0yZIq9VvXr1wrm89dZbLLGPP/4Yi12+fDk8PFyiAYsW
LcKaW1tbU1NTJWq2w6hWVqb2puXFloRwz995sSwyUDS/vkw0aZRyFeU3xMTE
XLt2DVfaa6+9JkVtUlISVDtWC+8hS7JnU6yhocFischolUCKmUymxsZGLPnB
Bx9IyT0yMrK5uRmrffvtt6WodYRWwcBLTsuLf6dE+Kr+Rww1fGRiQ0XwqyK1
NxBcrrLY8corr+BKA95FR0eL1rlt2zas8/jx4zqdjiXZsykGKC4uViplazWB
FAPMmTMHS7a1taWnp4vOff369Vgn+Dz+/v4SyvQ/gHu2ti81Nb5Lt5g91SxV
OqViez8zlZ7vM/qAgypLQVjQ6/WnTp3CVbdp0yZxCkeMGEF82UaPHo2FezzF
AE888YRcVgmnmKenZ01NDRb+6quvFAoxI42BAwf++uuvWOGkSZMkF+u/WNyH
2sH7MSsy2duLqC3IQ1WVJtThrM2OytCT9cgC4usEGDp0KK0qtVpNbNkvvviC
KO8KFINBEGsEKhrCKQYYPnw40Z4HH3yQNl/oiCsqKrCqsrIyufro6WF+tPw6
Z4sa5sf2ixwRo/U4kul82uS8zfqHAG9ZSsEF+Kzt2LEDV2BVVRVtBcLbjvWA
Aw+DPqK8K1AMANUry6tIRTEAuCJY/ujRoxoN3aT0xIkTsR5wOzMyMiSX6TeM
Nurrc6y0FHskyOBUc46P5kx2FL+ex0J8ZSkFPxITE69fv46rcfLkycKVBAQE
XLhwASuB4R5XEhehGOCpp56SbhUtxfr06XP16lWcZPbs2cIz9fb2rq2txUoK
CwullwjQ36A5a3PCAvzMNQcI1D+Kl7/zextlKYUQLFu2DFfjmTNnDAbn34oO
vP7661jDjz/+CG3ElcR1KHblyhWr1SrRKlqKAV544QWcpKGhISQkRGCm8+fP
xxrq6+vBGInFAcRqPY5mRtLya4U1mCqXJzm80PdiQuSfQOQGvO1nz57FlcnT
BzkiNja2paUFJ+f3/F2HYoDdu3erVCopVomgmE6nO3bsGE61cuVKITmazWZi
P1hQUCClIB0I8VB9nWah5dem+HAP+rwWobmUzxLCveRbYhaIRx55BFdmU1OT
kMWdTz/9FKctLi7mT+VSFAPMmDFDilUiKMa07zzBqVpbW5OTk53muG7dOpy2
oqJC4rcCoFcqdlLOq8OzJznCIGrvBfRWHzqsCJSlRPirurIH+90MpXLv3r24
SouKivgT3nnnnTgVdGpxcXH8CV2NYtAj9O3bV7RV4ijGcGzjKSkp4U9ls9l+
+eUXVqq2trbs7GzRReiAh0KxPi6Mll/V6RYTWgITDq1CsS3pt3Xtmow+Fk2n
LIEJQVpaGt6YAfV82223cSVRq9XffPMNbsFXX33VaXY9m2L4/bzR7i6Knl0U
TTGubTwjR47kSVVaWoqTrF69WpzxdkAn9FZUEC2/TmZFJuo8JWZtVCu/Sjan
cCyldRlWrFiBK7a8vJzrxZg2bRqWr62tFTJP0rMpBuMd/CNg5syZ4qwSTTHA
woULcdrDhw97eJBHNuPGjcPyFy9eDAwMFGe8HdB/LAlJ2GrJpXreD0/zU8rQ
9ahFrbzLi4CAgPr6ely9xK3avr6+58+fx8J5eXlC8urZFIuPj4c+C/8Ow9vY
2FgRVkmhGNc2nmeeeQYLa7XaEydOYGG5dqroFap3QlK3RPSnepaG9NMw3TCA
6gwUFBTg6oWOCU+/L1myBEvu2LFD4C6dnk0xGHZFR0dfuXIF/1VWVgYONq1V
UijGVaiffvoJT78/99xzWHL//v0y7rcMUWv+FpZBy7K/9IrrGRzj2jDz4osv
OopZrVbs4be0tCQlJQnMqMdTjOHY8QKYM2cOrVUSKca1jYelISws7PLlyywZ
GFdC5dMazA+rh/c/TNm0LHvcP1JeM7oLNputra2NVc/wQTabzXaZDRs24PZa
tmyZ8FxcgWIqlWrXrl343+bm5oSEBCqrJFKM4djGA7+AT2uXee+993AuEg/C
cCFd47fRlEPLsjE+Ug++3SR4//33cVWvXbu2498hQ4bgf6l2gzCuQTGmvbsn
uovl5eVcsw1ESKcYw7GNZ+vWrR3/pqen40/rpUuXgoPpNlQIx536IFqKbTbn
DtLJsLek2xEUFASOOqu2wWGADg48yaqqKtxStKfXXYRigOnTp2MBwNy5c4Vb
JQvFuLbx3H333eBJEjvczqhhR4w3mGlZtsFkS/Ki+JjftCC+GHv37p0yZQr+
XcSKj+tQDGpm586dWAYGs/369RNolSwUYzh2zh86dIhY6q+//lrEzAwVFAzz
5wArLcv+Hp4VodZ2qmFdAKjbgwcP4mrHB8zBnxcRwMF1KAaIiorC0wg32mfq
PD0FLarKRTGubTy4WcFpGThwIK1+EQAOzw+Mp2XZX0PTA5QidizeXBg8eDBx
lwILb775pgjlLkUxwJNPPkmsPdZULRfkohjTPuYixldhwT707gLolKrXQ5Jp
WbY8OFmjuOUn8j/66CP+hqirqxMXwMHVKAbdB3HaHNxFIZtyZaQYwxElzBEN
DQ2hoaHilIsDdEl/DUunZdkLgXGqm2DPhhRwRTSy49FHHxWn2dUoxnC7i1VV
VU5nF+WlGGgjbuOxQ/RGLymA4RUMsmhZ9pS/PKEbuhGzZ8/maojS0lLRi/4u
SDHA448/TqxJp+6ivBRjOLbxdKC6urqzZzm4kORl+KfJRsuyPxpM3WKtXIAP
7HfffYcbAvx5KXHDXJNi8EXavn07lm9paeGvTNkpBpZUVlZinTD6FhEcSUbc
pQ/cac2ierZHZQ7V+3WjzRKhUCiIO1qvXr3au3dv0Wpdk2JMe1QNou998OBB
ntlF2SnGcJylZe336GKIizV6MM0S6iH1oGg3Ij8/HzdEBzZs2CBarctSjOE4
BARYsGABVxLZKXbfffdxNevOnTvFRVyUDhERs09kRsZpb+HZe19f3zNnznC1
BWDEiBHiNLsyxcBJKykpwamgB8nMzCQmkZdiOp3u6NGjPM06YcIEcZqlYCb9
vQ9nbVEDDbf2GjQxtJQjoKW0WjFldGWKASwWS0NDA05YXV3t5UU4mSsvxYih
pRxx9uxZ6ReIUOGhQJ8LlAEVQX5sL5+uNFJ2JCcnC1mjhPYSodzFKQaYOnUq
sT4XL16MhWWkWHR0dFNTk5NGlfVKCKcY5Kutow+oCL1el1nYGeDaaYPR3Nws
IvCLm2IMxy0b8FnLyclhScpIsc8//9x5o0qeMRaOBJ3niSzqgIowausC2zoV
xP2i3377LTEAJrwqtANkN8WY9rsUL126hJPX1NSw3G+5KDZ69Gis59SpU7Nm
zcK/79u3T3pIN36YPNXV6dQBFYtiQ2+GQBxS4O/vX1dXh+v8rrvu0mg0P/zw
A/5r7NixVFm4KdYBriXgJUuWOIrJQjGdTkeMy5GXl6dWqw8cOID/kvcSTBYM
KsWe5Ahafm3vZ9Ypb21+AeBVx7VtvxRp5MiR+F+BgafscFPMji+//BJrAD8t
NzfXLiMLxRYsWICV2C9FIu76liXwFBEeCmZzfDgtvw6k9Q66lZfAOkDcic26
SZb4VixdulR4Lm6K2WE2m4nu4uHDh+3uonSKxcbG4nAr0NCO11gXFRXhXDop
sMC70cG0/Dqa2SfmVl4C6wD43mVlZbieWTfJxsXF4Tj2169fF37G0E0xRxAP
ugKWL1/eISA9PA5xaoVV4TA2xGEQoGsbMGAAVXGcYl6EkZZfZ7Kjcn3obm66
OUFs65MnT+KbZKHPwpJ79uwRuDHYTTFHAAWIkbHb2toGDRrESKYYjJRx8vr6
+oAA9kVC8+bNw5LyHn/+U7CBll8XcqyjjXq5DOhGGI1G4hkH4lQGcIQ4JSLw
eIubYixwuYtHjhzx9vbujFCl06ZNw8Jc97nIdbxluL/3eRv1nX3Tw/xkyb3b
QQwTzRN9dNKkSVj+3LlzQg5puimGMXnyZKzqRvu5cikUW7x4MU5bVVXF1TGN
GTMGyzc2NppMUs+MQH7bYhL2J6RSPUWRfWWZQEzx6oo7MXmQnZ2NY3zxD69g
4FZeXo6b491333WanZtiGPApI64LQ7sQPT0hFIuPj8ejZqfDq+LiYpzdJ598
IqJQLMB7voE+fGK+wexcNS/6a42bzbkTfcWfDZEIriDATuNy5OTkiLslx00x
IsBd/Pnnn7FC4vUBTikGnCXuN163bh1/Qq7riYcPHy6uXI4YqguEt52KYv8y
5w7zDhKdY7ynz/rfT3reoxd6Sai8IJ7GhWYV4vKtWbMGp62srOSf93BTjAsw
mMUKiXBKMeIdK+DyhYc7j6n7xhtv4LTff/89cZcyLcYaTLQd2UZTTprGT0Re
4WrNOod4BRvNOVmart7cGBgYePHiRVyfjz32mJDkYWFhxE3j/NeIuynGBeh6
PvvsM6wTg59iBoPh9OnTOJXAiPrwdSV2nc8//7zoojniCf8oWpYVmbKjPOnm
FX2V6lWhaSw9n5hs0R5dOj9JjGTutBtyBDG+Bzg8PDd3uynGA5PJhKMxY/BT
jLiqAt2QwMiNDMfmLtYmBNFQKRTzesXRsuyDsIxAlVD7vRjla8H9iHrWhGWG
qLroOj94dfFgivYyDo1GA22Hm+PDDz/kSuKmGD+It2+zwEOxpKQk4mCK6git
SqXav38/VgKdLE8q6IWhcfV6592ERqFcGkKmAM/zdkiKXsCNfkpG8VyvWB49
K0JTfRSdHgVIrVYTA9TzUIML8BJiPUDVIUOGEOXdFOMHvKjE2BqO4KEYMUA9
PzWIGDBgADFc7ZgxY4jyEydOPHToUGlpKXCzrKzMaTxhP6UHduScPi8HJagZ
JxP50/wjnepZFJTo4UyPRBAD18PACoZXIrQRJ5yhwolBAt0UcwpoBeIY2Q4u
ik2YMAELX7t2LTo6WoQZxHC1J0+exLc6zpw5s6KiIiYmJiIiwmg02my22tra
jt0pPGBNRwh8Zhr5yvKAT7hAPbONfTsvoHBwcDBxfnjWrFniFMJ7Rby5m6hQ
FopBCx6QDIvF4pjRzUMxhoMsdhApxnX9ysKFC8XZAANDYoRV1ulsf3//xsbG
yMhI+NJCdwkV++yzz44bN668vNxpFo6T6sKfh/0iiNoG6npRLQpM8rOIqxmn
IE6219TUCB8OYxBvp4UGgs8aS1IWiskC+Oo6ZnRTUQzcxS1btnBZTqQYcbId
vkVCBkdcmDt3LtbZ0tKSmJhol7n99tth0MG0OzNArlWrVs2bN8/Hxwf8TBiq
O82iv9a4iXKxDJ7h3uy7zxI8xQQ7vVcvf3RxcJKJPvY999wjRa3BYCB+QnE4
ODfFBALcxQsXLhAtxxRLTU0lznKMHz9eig3AEWLEKsdwcOAQVldXM+0UW7Fi
RWVl5dixY6Fra21tFfjRHqkPpaXGJnNOpsMil0mt/Yje5+zQk6Nl74iWAhgc
ES82gg+mdOVcK6cs8ropJhxc7iKLYkqlcs+ePVhs9+7d0m0YNWoU0Qb71Y06
nQ5GjikpKUCxYcOG5eXlbdy4saCgoKSkRHguk/0stOz4hynb6vHbqNBf6bE6
lPriCfsDnmos5aIbD2bMmIHrqrm52Wq1SlcODb1v3z6s/8iRI44Og5tiVNi8
eTPOhUUx4scNOpG0tDRZbCCeOKurq7OHg4O+Elp58ODBKpUKXoP8/PzTp08L
P0LItM+0zzH2pWXHmrAMi1q3nH7+n/WsDc8MVclwJI1rMwZPKFpaEC9kv/H/
lyO4KUaF0NBQfM7IkWJQn+fOncOWFBYWymVDQkIC0Qt1DAcH/deuXbuOHz9+
7NgxGB3ExcXR5qJmFL3VOtoHXEQRqfAjy7WAAQEBSSQIGZMKB7xjOAvW9axY
gGexAPwQotnSwRopwLuKZXjCkoSEhDjVKQtMJhMrF8fqIpoNkDLLgQF+Ds4C
x8CHxu2ukN1uuOGy+A9EDQGlDQplbmRzdHJlYW0NCmVuZG9iag0KMTQgMCBv
YmoNCjw8L1R5cGUvWE9iamVjdC9TdWJ0eXBlL0ltYWdlL1dpZHRoIDI4OS9I
ZWlnaHQgNTgvQ29sb3JTcGFjZS9EZXZpY2VHcmF5L01hdHRlWyAwIDAgMF0g
L0JpdHNQZXJDb21wb25lbnQgOC9JbnRlcnBvbGF0ZSBmYWxzZS9GaWx0ZXIv
RmxhdGVEZWNvZGUvTGVuZ3RoIDI3NTM+Pg0Kc3RyZWFtDQp4nO1ba3QV1RU+
9yaERxLIg0cwPAxISCBAEPGBhkda6FpkWS1WLC+h1NZ3RVz4oGhtFVqwCroo
rUZoZXWBi2qLtJJi1RQE5CnhrYKGoETSEAIJkITc3Nvc2fvMnNnnnLlDmeFP
+/1I5uy9z+u7M3P22fsMY/+He9y4nGLS65LIwBhNC1mov1OtzkD19GghCa5n
cGU2lMc5DPAmMBnGy3cYxV8F9TU6QY27o9fdlpMe7UgpBvX92sb6/TtC8Gbw
Z1RkYG2cro33wOBUmlJbDNrG7GihMxSKubIAyrP1s2XTwGQCLy+Asn5KLAMs
fm8U1kDhXA+l6QugDV2ra6vrEcrDxnaMvabgZ1sH7YBym8BkiUqZHwLlAqPk
HUH1fbQ1bAT1OgellSrLaxpBuUzXVOI2ysOh6G0Q/67Ez5GuDnNYBDZNObIq
8AHoKpKMoncERUq1D5mNIDYXSi3XKyz/Arpq9b3PWNxaysM3VxuKpN1EXp3t
MAXW8QRYrZNVt2MD+ILykKDIT3U17AS1/RyKmwOS4Whs6ce6ln5L+am/DjXd
y23yCyMcZtCKKWg3lioScHT/xNF5SdC5fpoadoJYEdrfRe3i8DbYrrsXn6D8
NBeZugGnBXlogqYFjsAmMNwXTxSzQd6Ui2UvCYps1EyMEMTWQbm8HbGbCXLl
wxfF5BZK0L2CdlSjJX/EYfyAIc1yC63oUgviRVzgKUGRWeoalKC+DSCYazdL
rgTxa5qOxwgMABbY9JNM/l50GD7HK2Ba1ckmxWf462Qu8Jag8/2VNShB7Jcg
qMuwmT0P0prO6n7zaik/fyJ37OMoX+Pgk5lIrSL3ShQD8b6aZEq8JSiyRemb
SQR1OAaS10Wr3hdAqHGoMisoPx+2pTZLDfnm9g6jt/AjaKWxryArAVmptX54
TFBkjqqGRBCbAJLQUMFqNch2q/3fjnsoPwdSJKP4d1rln6Y7DF5AEF2qty3R
eJBcHGSJvCaoIVdRQyaIbcCfypKMCBuSlpuUnbZ5j/JzopfCLHF75KTeYSUY
Di5zeLTZySFo+iXByDuCYH6RrXTdZEqCctDZ/x4X8N9zhbLPwB8pP3X5SsNu
e4c7DJ2gmNyzD0G5Unxve0fQH3DkT8g1FARxZ/8If49MhfLpbso+Ez6iBFVk
KA1ZG4eRU3SpgbZmQjHtFBSniTbeETRoC/xvGCjVUBGUjM7+Y1BMPA7FhzWd
ph+mDO1Kcpy8KzyAtwws6ouhtMnm4XtH0ID+uArtkH5EFUHc2a/tYpSegVKZ
4gEF9PmGMvSu1tY14vdAU/Ojhf7w1Dfn20w8JIg9hiOfR2soCQpsBKmxcc+E
LX64QN/tdfWUoVed5u4Ot8Cb88LVzPTvX7FbeElQ3Ga4ahpEaigJYoPBKWvO
a71+AyyUIRCOombK0Fwnc3dYCS2tZmwsXJ1MsRt4SRDjD9ku8pCpCeLO/obW
BRc2CWe6O07mJ5Sg8FRHezfofhZaujl+L7T5Q2LgKUHsURz5M/YaGoK4s18U
wDXq0RizeY4y1FQYo0Zs4O592/3wfyvdpXhLUBzOtGmorYaGIL57PzwZ/u+P
9dYNvEEZqqVP8yUj4QC0BBvh0DCq95Ygln0eCmUJYg0dQcGPkU/jb1iXhBBm
I/nTFZkxK8XAt8JCc3Ko12OC2CPY03NiDR1B3NkHrHYxm05llKE9HV1Uc8Qa
q7FqeRvnNUFBjNRdFNMSWoLEbESdq3sh8zhlaMOl+M4q8CxCRBnq9Zog1g+7
2yfEIvQEda4xB6eMA8iQo0Ir5Nj2pWEub0kV6vWcIPYw9jbfqqEniDv7kcih
BIVWhUIprvhzlzV14FmEFtU+13uCgughN1uRZQeC4j8BXVhKL2hxDyUoPNF1
XSUCfBeZpVB6TxC7Bh+yg2ZM3oEgth7pzHM7HTlHeFydpHWNGbwhRZbMD4J4
WMWK9joQxNN0ZA+tR6CY8nNmsLuaOqRVmU3dLmv9IChYinfFjSjQE9Sh3Bzc
dHfTeZry0/RtdxW1EJKR5YmS1g+CWB/ceB/G6LmeoPnW4E7q0s02zBDduijC
d7up5oBrRV9sgaT2hSD2IPaH+SktQdniivQ7F7MZe5HeQE+7qOUE7s3j7SiF
1P0hKIgnJEK3GEUtQf8QBxeKHU3OP0v5Kb5cJwjXxM8wKfcBbc8fglhWHQg/
Nx5qHUHfB/mJp+D/Tu2BJ0Svryk/6y/XjU6vhoaK2n8JF5OIgU8EmQ7gkmhB
Q1ASbhum8ljMA86TSTlA+fkk2blGbOBe529mqq7Snor2jaDg+yANjWRaghaC
eHOAjYFXryalgWhbSvk55hxgc4Hr4Q3d0K/Vf8ARv2y38Isg1hsfsqOJOoLw
HJxx2u7PYOEUcg2uovycHuBg7gpxO6ElY/HKgwWg2R7L8o0gdh9OY6kuaP++
IMW8fHiUvtuFlJ/G0Y6TdwMMI34FGaSXofSxbcvqH0EBDG61FKoJ+gEI8SzH
s1Dar92ycs/BRMvkGLOPDZ44xJZS8fzsPaKNfwSx3rgmlycrE4e4Ij0IRX7e
43FNp7eJ7pyBJ50n7wYroCVzl3MvlKvF8zc+EmRmIZapCPoNyMxM4Z1Qru+p
7LNtJeVnv8YBGufmbBBgBORSrCMm/AjgcsHIT4IC6AeGp8oE4RtReOl8CEZv
S80YGCe50M8r7Sa2LFLKFeCRFsGDL8ATJsIJUD8JMh+yGomgQCmIhDg05hEj
49W9ypsw1VHYggbzoY0JjOydEuPQuFLusfIrvhJEYlsCQXhP2R4oOB4WOao5
HyZt45tlKnOi5zNCtzkM3kJGLTRj80574DZ7linxl6CAbbNlEdQJXym23DE/
ffILTb9SIKiOJrG6fWHIz9/gMHoTK6WbJQr86uPsVVzgL0Gs5xklQUvwZrGf
A0avpEFz3LqNFEo80dtmkLgD5VV91S2IGAmPbHikXdzuKDSxigt8JognT+0E
5ePr5rt22zhMepWYkkC6mPVK2kUZOpgqVl9nyj/THJS1wLd/q6gCQ5xhHobz
m6BAiUxQ8CNKBGIUvoj5d1wzD28v2zHa0meUU4b+JSSXlgnyLbEOuuIpgno5
nI2nJz/Flv0miPWslQjCIHmTfKj6TdB8BZv0ObtzsrqOqBQy0jlWGg2xynR7
7J8pvOXsDl2F6+tTsmogOhT4ftQQVLlPiT6XTpCVM+AEpahOcAN4kvOFaCG1
vm9Jyd55U3YKBgUNlKFfo4Z+prDYkSBczo/QjyGiWAy681lOBGmQ+18QFDDf
rUgQLueVqqQ6ruXGQeWxZaxk3vJnO4bFx2Wi9LkGnDsfJaUTZznwU4jP8q0q
Jf8B37lCBLEe/DMcIGgY7qqmqWzbl4Myuj0ac5CVvLr7rtSQ7WeeTccUis7S
9qkPyvUf/LQ5CCbr1Wruvd16hQhi00WCgluhsEX9krgDbae3rtqnh5aMm7L2
vlK7xRI6qHPD6cdiAP0nY3PAoFH9ZYkZJTKSQFeCoMDfBYLw55FPKiEwSlSV
1trRF4Vx8dMqh5Dhv0VHdXKItP4b0H102BPd5YW6Ad+Mz/H8K0QQy6wxCUrD
mIvukyeWhz5S9CjTdzZVHPur1G67wRQDJAlAc6AmHdV6VyAXDKLTjYdL0x1I
1PQFMHyDVLg2g9sZUFYtCBy9zE5SsCX9KfBsMIDj6MHLzer8j+A/s2omAA0K
ZW5kc3RyZWFtDQplbmRvYmoNCjE1IDAgb2JqDQo8PC9UeXBlL0ZvbnQvU3Vi
dHlwZS9UcnVlVHlwZS9OYW1lL0YyL0Jhc2VGb250L0FyaWFsLUJvbGRNVC9F
bmNvZGluZy9XaW5BbnNpRW5jb2RpbmcvRm9udERlc2NyaXB0b3IgMTYgMCBS
L0ZpcnN0Q2hhciAzMi9MYXN0Q2hhciAxMjEvV2lkdGhzIDExNDYgMCBSPj4N
CmVuZG9iag0KMTYgMCBvYmoNCjw8L1R5cGUvRm9udERlc2NyaXB0b3IvRm9u
dE5hbWUvQXJpYWwtQm9sZE1UL0ZsYWdzIDMyL0l0YWxpY0FuZ2xlIDAvQXNj
ZW50IDkwNS9EZXNjZW50IC0yMTAvQ2FwSGVpZ2h0IDcyOC9BdmdXaWR0aCA0
NzkvTWF4V2lkdGggMjYyOC9Gb250V2VpZ2h0IDcwMC9YSGVpZ2h0IDI1MC9M
ZWFkaW5nIDMzL1N0ZW1WIDQ3L0ZvbnRCQm94WyAtNjI4IC0yMTAgMjAwMCA3
MjhdID4+DQplbmRvYmoNCjE3IDAgb2JqDQo8PC9UeXBlL1BhZ2UvUGFyZW50
IDIgMCBSL1Jlc291cmNlczw8L0V4dEdTdGF0ZTw8L0dTNSA1IDAgUi9HUzEw
IDEwIDAgUj4+L1hPYmplY3Q8PC9JbWFnZTE5IDE5IDAgUi9JbWFnZTIxIDIx
IDAgUj4+L0ZvbnQ8PC9GMSA4IDAgUi9GMiAxNSAwIFIvRjMgMjMgMCBSL0Y0
IDI4IDAgUj4+L1Byb2NTZXRbL1BERi9UZXh0L0ltYWdlQi9JbWFnZUMvSW1h
Z2VJXSA+Pi9NZWRpYUJveFsgMCAwIDk2MCA1NDBdIC9Db250ZW50cyAxOCAw
IFIvR3JvdXA8PC9UeXBlL0dyb3VwL1MvVHJhbnNwYXJlbmN5L0NTL0Rldmlj
ZVJHQj4+L1RhYnMvUy9TdHJ1Y3RQYXJlbnRzIDE+Pg0KZW5kb2JqDQoxOCAw
IG9iag0KPDwvRmlsdGVyL0ZsYXRlRGVjb2RlL0xlbmd0aCA3Nzc+Pg0Kc3Ry
ZWFtDQp4nLVWXWvbMBR9N/g/3KchFazo05KhFNY0Kx3rw5qMFcYe3NTJDEna
pRls+0f7l7uS812TGJw+RLm+lnXPPedeSZ3380U5yocLuLztws844sAZ51xI
yS1kKQejOcyLOPp6BrM46lz3DYxf4kjAeD2Zp4IrszN7dBZHn+MIerhqZz+G
U5ZZA8IyacCmDE3jHZswwYmrL1/sfDCcIoybaT4uRAZXT7AKA53+cz6D8/PO
bffmCnjnUz4bAylmyZc+vbiAy6sqwYBYaMV9hNcZXg5w+Q8CMmYx5GDkUw1I
QMuMISlCsgxhDKY+/3GgRPDACYfrOPpG/tFESQJUO9KlSpAnKjLy7Ic/+CYl
cypTUtLEkrF3/vDDgibS4TeJcIJI7+F+2Fj+FTfkngrFq48nfgjWzE/4Tb/D
4GMc9QYHmD+iLmfOpSHbeVDXKOUZ9xPTlUAHlbVGo3BaIEtGQaa21vYOvzI6
N7M2WkpxQEvRSksJSjK1I6WRzCECZ5hSlZKMa1vVdGUFJe9pYjAoTZF+qUg5
o5ZAjyYpmaLvAZ+KRzQeK+M1/3tpyFZpKBAZM9LUJKKwX/SyJHclXD/d+YTO
MYq9OIpTtWwdqRnfhWlRgD2YdXx3qcZukQYrGol/CeYEfSX+Hv1D7odF+eQ7
KMzxbSFt5Q+OMA29Sm9Wm9LENyBam8WLtbUo/1Ls1+XS2IfZatpRovSbCaoE
U+5kgpoTCCprFd3GWafozQsS6vnUKKTyJOtKv0b8pq1w63B67G3ilgd+uWSi
Eb2ud5xe25ZezuQeTOeYs7s46+jtF0NsAEN+zUs8QUSKJ8xRtO6tSJVYE81q
tgmp2ZuRuo2zjtQ7ZBI39EmZP2DJlpNArW1CrWh36dDL604NtVoz2WyDb8Kt
aHegHiR3G2ltyeYjKgUpGteraHdsHipYoVl2uooV7c5NeYjVbaS1+2wo0VkY
F8U8cDta/hdUueWrIdr+Lpkp8i44gJp0VfD5ZFeMdsixy47DTk4b0aHQx4MO
8NT3dwq8NE+Lmvr7DygkuCMNCmVuZHN0cmVhbQ0KZW5kb2JqDQoxOSAwIG9i
ag0KPDwvVHlwZS9YT2JqZWN0L1N1YnR5cGUvSW1hZ2UvV2lkdGggMjEyL0hl
aWdodCA0My9Db2xvclNwYWNlL0RldmljZVJHQi9CaXRzUGVyQ29tcG9uZW50
IDgvSW50ZXJwb2xhdGUgZmFsc2UvU01hc2sgMjAgMCBSL0ZpbHRlci9GbGF0
ZURlY29kZS9MZW5ndGggOTgwPj4NCnN0cmVhbQ0KeJzt3NtrHFUcB/DMbS+T
3dnZ2+w6OzNN9oJkNs3GXDbZWEhjhBTf+tBWJS3pQ0EfVMR4QYngBR8VjQFF
RfGhwWATkz4WhJLQvvRJKr6F6EsVQv+Gnhgsm8uec4Kzmezy/fB73DOcA1/m
zJk9Zzo6aISmFQDFpK7+M1p4OFai11KP+ZaVYP6svrZrxYupqN/jgxPqtBr4
s5pnpuh2n90p7tzGPi8Y/NmbteJ+jw9OKCsg/z7YxYzQbwNdWUXabaIIws89
Jk/w5gsG5lw4lCaLGxWHGaGtat5VA/UNI6KwXrHprZZdU/ZrYHCykWCsuOzb
F3kOnIiFDzY3A9L9xjfM9YqjSeLxDwpOPjIVLvA9tk0bDVcKvQ0eFMkkTqby
4xwOtJC3+Zar79oJ+nUOLpBJGk/vnaABHnshHd2uFZnB+7qY4VkpXDG0+gn6
WV1t+gCgNY3Hwn9zvMpbK+cU7jXqnJPcbTVjaM3sO7QwNxzY4niVd7ff0Y+4
UvimlHnfSTap29AGpqLJW/lRZr2TKh31vRx5wsOyFugux5ybztPMelGz/e4p
tBtyQ3sjUWJmb9Uem1TTfncW2o3cIXxilJnxW7Zq/SHd785Cu4mI8kL2KWb8
FnNVRz7kTw2A/8OQgj+aw8z4fffEYFxU/O4stJui0rlkjTDj91mmL4RVLHht
OBT/xa4x4zeX6sFuKPDcc5Esz1uXl+N5v3sKbehq7BRP/M5HTb97Cu3GCcl/
9PdsDpTp9atbwqoDPKTL4h2O3cubw/knw4geeEYROtbKOWbwHowWzmghvzsL
7YMsXb8qZpjBwzlH8Nx7Ntfu5TdxzhE8dbluvzGlcM4RvPVMLMzzIYJl11QE
RA880+h82b7aqDiajL/SwDM56rnax4VzjuAtTRKZ3xMg9Vc134dzjuCpmaRx
zx1g1utG7qhX7lbUtIS4QkNkEv04zd6xvGLVBoI6/2VTYuAHc+jLbL8qSE3r
O7Q8Eg8SEmb8fsqNkFsZzwU7RWn+vwt+lC7jGREoUvLObYoZv+/NoaTImEZl
Qfgw7da3ei1RPJ5RQIvK8+1Y/iJbCQu01yyvJooHWz2vWcc2EGhFgyF9hWPH
8gdpV2rwevmSZh3aZNUem8D5SqCa6szwbBl9JV442PasmiYZa9Rk2ar1BfFt
FqC5wveZggvRPdNob1Aj6aI3WcxVbZyvhMbIbDqb5PpMwbia2m1iyeHruSpP
Yr/F+Uqg+vczBb3MIN2wRssBTRcVkiie4O3Wp1mcrwSaiCBd07tfiufpNR1z
zkWyzJ/tq5EQtv8BgD8eAX+8PeINCmVuZHN0cmVhbQ0KZW5kb2JqDQoyMCAw
IG9iag0KPDwvVHlwZS9YT2JqZWN0L1N1YnR5cGUvSW1hZ2UvV2lkdGggMjEy
L0hlaWdodCA0My9Db2xvclNwYWNlL0RldmljZUdyYXkvTWF0dGVbIDAgMCAw
XSAvQml0c1BlckNvbXBvbmVudCA4L0ludGVycG9sYXRlIGZhbHNlL0ZpbHRl
ci9GbGF0ZURlY29kZS9MZW5ndGggMTg3ND4+DQpzdHJlYW0NCnic3ZlrUFVV
FID3vcDFJEBRDCVIbcqiUITUdJzINAuzdJpMrRSywCmlyDQdX6DiIx/lWDqZ
qaSozdiMOYFWYprpjCU+QHzQ5JgOPoqUp48LeE93rX3PPevs88B77/nV+sFZ
e629913fPuvsF4zJYjMXppHWzNSvX9XnSr5FwtKaJUV250pqcY3XNBiPjhGC
NfRPsB62M9YdlEPcuhD0CXrhXnc76rj6MlRaolOnPThOu5VEjDFf9O8Aa3WU
pl3vekJwPNy2Xs00V/tLtkPgqHSorVPBeKcP85epuZ8JE1sF2s14tftpjHCi
pln8JQJwMZaxkJ8o0ga9N5vSAq4cla1jDdjWMb+ZpFNtTJja/wPqFpXXfhRs
pUFiq8iTBKCuJ5giyhTLHofYAGUt+K6p3vnnYLoeHQCTtMiEiWWC6upLvRlo
GiA2cpQQpKah3BhXJVtORuoisWgISFpJLI9iwmezQJia+5gw2UtBP0jSJgzD
LBDb2Aponr0lm5M8n9ileLGBLNngdj6sGIrAUBYcEJNUEWrMxPq7oDBKceZi
asWI/c6jSGRW4VNhfW8jJBZcDhV2eMtDMA1SWWBMmuyjTOxrKJzzYsc2QnmK
2O2bLoJUSGeDLEiFYYZI7ikHmw7ylILwE9zKAmVqfsKEqXMdlKbJvo1QOhUi
9PpsE0Har37vi/XmSCrfQKOjdl54GwoNsQEzSeXqKFRMfLWojeaF5DtQGiJ0
2rOWIJ0RFi77Nr01kEgcvvoM1MOvgD5DdvnHdNYlfAAaJscZKK7mhX2gfyt2
mkE/pm3iOuSwmzOxWdCsKgzUfFArvUPsH9PqTZh9KcZM7DmskQDqSFBvPKDp
dRGFmtcKgkba4F4oz63F3wQtzevxkykKV/9yuiIKTOw7KBe7FUclaHO0vdq2
ECZXhq9QI6BZo/sjwm52Kg4/mXiH0nwTpu63wOBeRnPgeU678XBvO/cTKKf4
vbUqu6FZAesHH8KtBwNnYoXwbEo2ZmIL8FUGRV2Dp7iL9rQ5TaBqH/eRqYfT
3epOykFovIDY/WbqcBWUMiX7NExhF8GStRL+7jYIq9sVAnWhi49QS6EVfgUX
2lrB5JnUlezTMLFXwVINg+nsYRRWn0YCdfRe35giLsstR1Gz/0x81WtKMmbi
czjIx8ZxvdhCoIqCfYMa52lXorIGwBT9N6jH5d2BDlOi5wRbFW4S1yTCJK3x
jYmfDqWmx6xiYqOwwzxjJn46lKTXTANbRqGmmVbVyJOSEo5XAmFi22n26TG1
x23fb/r3F94QbhOmc+J231ymYKNj6qNmQEydqkn26TGl4h6qppNZWKr5vCbB
J6QudbzZZOuY2Bjsca4REz/l6JwFiYTuI0jOZ3xC4oskDMV91jHxyyBnLwOm
HM9PugYaRmUrJEg6916mkuo9fxVYyBTzL+ZziC5TjPcwccJwjl5IkPTuvcwk
GE+Ca2+IoxYgE3vDG4yWCTfvu87C3xyDsDIp0kbzuUQjmAbn78mFRxkZtUCZ
2E7MvkQdpoGQGc6HhoG9trNuVM/TK9gS8RzcivA0eIW1vQDP9y1k6oLXUqUh
GqbgE2Bw7yCK4Vmo1618P4RidO9lKJgGP7vf7WhQ6pRRC5iJpWNEszVMeF11
OdyzfZbvdKgo93iS2b2XgWAaNMMtp+0AdLDZQib+HpyJAlOnGiing7oCtApN
ZkWWE6SGZNHdivA04IH0blGNmgVM92P0R6LVTBugeBgvFSJxY/ih2OkMgiR9
KnqTtGd9lUyGVtc68MKXmLzyqFnAxCZgVMtUTAPgqsjl+VcBzm71sUwtjr2E
qTlN7Yy/VNHODImnwSS5VEtHzQom2w9ga6FMQXjlXyCXjkFpm9hruwoCVZ9E
XfCvgRL9+38umAbl3gl8Ch01K5hYXJ0cmcz0LhSUqegp+J5dg8VuVf+nqYpT
HCF7cEiM16v+mAbKTspxloyaJUzK0ulhisY7iI+UCnh+PK0Z+OQGAlUW4bVv
4JZcIySeBvTGEFdBabCFTLY9aqZ1oP9Bjg3xsIGRpqPeNnPJePlzHkYX3R9l
6xyPwZVuwIRpcLMrNRUro2YNE+taT5n64V3ycFohDywNkF4R+8b2Si+Ww59I
mKSvuG2cd2tqsE/viGkwX2XDVZCPmoap+rwgwXfDxN4hTPbfQd2l8vMNDGTL
9PTi3K2zx8qOxRRqFlgGORVDjfpU7hFMg4thauMn3lHTMGkk5K6YbHsVpiwc
4kfUFfhRayhj63sWbc57wbsFt20lv+V6nbGE6/TX/9LZKPbFNBgjWPkquN1C
JtatUWbqgOeP5SL0r2CtDGWTs7dHFC1R7jBDfyE/djs15rz650s192P2I2A/
oJkUM+VRs4yJL+zA9AUoVzU70hQc3Zks9PsPBszcRCKKWrVGkfysNYKMFDtK
QHOiJoCgpWDPcX9u8JzKjS+J3aHA/cVy93MFr5QEttE6TPZ8t8OdUuGfQY3h
2grZYF8WzOxp7w3Sev8X8h8uefHrDQplbmRzdHJlYW0NCmVuZG9iag0KMjEg
MCBvYmoNCjw8L1R5cGUvWE9iamVjdC9TdWJ0eXBlL0ltYWdlL1dpZHRoIDQy
NC9IZWlnaHQgMjU4L0NvbG9yU3BhY2UvRGV2aWNlUkdCL0JpdHNQZXJDb21w
b25lbnQgOC9JbnRlcnBvbGF0ZSBmYWxzZS9TTWFzayAyMiAwIFIvRmlsdGVy
L0ZsYXRlRGVjb2RlL0xlbmd0aCA3MTE2Pj4NCnN0cmVhbQ0KeJzt3embHFXZ
BvDaurq6qrq6q5fq2pfeBpAlgoJKZIksQQVBJBe8KMqiQBBBBSLbJYRFghBZ
ErLPREBAJC6AgryCC+CCC6AIYRFIQiD6V7xnenCueTOTme6Z7j5VPffvej74
xaS7ZnJznnNOnfMxReVZlgEAmDcWq9rJOZ32pwAA6J8FUmaTF+0nZWh/EACA
PikIwvf96vdsr8QLtD8LAEA/sAyz2glI9F1uWCLtDwMA0B9XVSySeyNetCRf
oP1ZAAD64Ut6keQeqQ1ueFBGpv1xAAB67ihVG8s9UrdaniVgog8ABtw+ojSe
e6S+ZZgZ7OgDgIGW57gRLxrPPfK/T8sXONqfCgCgd0hbe5vtTRzyrXfDQ2SF
9ucCAOgV0tNeUqpMzD1St1iem0rR/mgAAL1yer64W+61JvoslUO/CwCDaZGi
Tc69YS8ieYjFXQAYSDVRnJx7pNa54cdkFYu7ADB4SD+7yQ2njL5bbS8U07Q/
IABAl4kMs8J0p8y9sVd3s5joA4DBQkLtoklLuhN39H1BL/K0PyQAQHctyet7
yr2xV3cXYqIPAAbLoYo6Te6NntFneWEKR1UBwODwU6npc4/UVYatYaIPAAaF
zLJrWweQTlMjXvRFHTv6AGBAkA52uenMOOTb6IaHKZjoA4BBQNrXr5aMGXOP
1B2Oj4k+ABgMJ2nTLelOrGsqmOgDgEHwoYzcZu5t9qKz9RJ29AFA0jnCzEu6
4zXshUeomOgDgGRTWG6V7bcffaudABN9AJBoIsNdaVjt5x6p6ysOXt0FgOQi
+XVuodxR7pE6t1DCjj4ASK7jtXynuTfiRUcqWdofHABglg6QMp3mHqm1mOgD
gMQyeGEWuUdqhenKuHUXABJIYdlbLW920ffVkoHgA4DEIc3q5R0u6U6so1WN
9jcAAOjYmXpp1rm3wQ2rIib6ACBhjlGnuFOy/fqu5eHVXQBIln1ntaQ7sb5W
qvBY4wCA5Cjx/IY93CnZZg170SezOdrfAwCgXSrL3mTt8U7JNmudG+yVlmh/
FQCAtggMc2nZnGPukVphuUUeR1UBQDKcni/OPfdIXVyq4NVdAEiEI9VsV3Jv
2AuP1/K0vw0AwMyGxHRXco/UGifYDxN9ABB7RZ5fM9Odkh1M9JluhUe/CwCx
prDc9W3cKdlmbfaii0sVCTv6ACDGeJYlSdWt3CO1yQ1P1PJ4iwMA4uzUfKGL
uUfqLidYkJFpfy0AgD1aKKvdzT1SN1muJWCiDwBiKkyJI17U9ej7eqki49QC
AIilIs/f4XRwp2SbNexFJ+d0DmscABA/MsteW+naku7EWuMEB2KiDwBi6YKi
0YvcI3Wz5TpCivb3AwDYHWlIe5R7pC4pmxl0uwAQMx/twZLuxIm+U3I6jicF
gFjxU6lNczuAdPpa5wYHYaIPAOKkIAgrZ3unZJt1q+W5Au4hAoC4kFj26srs
75Rss5Zhog8AYoOE0dKeLemO14gXLcnpPIPoA4BYOCGb63Xufb916+7Bskr7
uwIAjFow5zsl26zbbN/Fjj4AiAEvlZrjnZLt15WGhVd3AYC6PMff3OMl3fHa
7EX/ky8g+ACALoFhLjd6vqQ7Xpvc8OCMQvtLA8B89+VCqW+5R+pO27cx0QcA
VC1WtX7mHqlrKraEbS0AQM++/VrSnVhn6EUO0QcAlDhCqot3SrZfh8iY6AMA
OjSW+0737pRsv1Y7AXb0AQAVPMMsM8z+5x6pG0xHRLcLADR8US9SyT1SZ+ol
7OgDgP47qu9LuuM14kUL8eouAPTdPpLUizsl26w1ThCmcEYfAPSVKQh32N2/
U7L9us50VBb9LgD0j8JxN9BY0p3Y7Z6jl3AZBwD0DRlpXVams6Q7Xpvc8Egl
i+ADgL45NV+gm3ukVjlBU0zTfhIAMF8cpvTwTsn2a3nFyeOMPgDoiyExvYne
ku54jXjRVwplgfbTAID5oMILt1Fd0h2vjW54tKphog8Aei3DcddRXdKdWHc6
/t5pifYjAYDB9/VShXrijRcJ4QLH034kADDgPpfTqcfdeI140XmFMt7iAICe
+oisUI+7ibXRDY/FRB8A9FJNTK/v152SbdYqx99XwkQfAPRKSRBW2n26U7L9
usF0Sjwm+gCgJwSGWV6Jy5LuxFpaNDDRBwA9cn7RoJ5yk2uTGx6XzWGiDwB6
4UQtTz3lpqy7nHA/TPQBQA8cLCsUDyCdvm40XUPAG2wA0GVhSiQjK+oRt6e6
cHSiD/0uAHSTzvG3xG9Jd7yGvehT2RyOawGALiJjqWsqNvV8m6bWOsEBUob2
cwKAgfLlQol6uE1fN1tumcdEHwB0DWkkqSfbjHVxqYIdfQDQLaSLHI7rku54
jXjR8VoeE30A0BXB6JJuQD3ZZqz1brg/dvQBQDeoLPtdy6Uea+3U92y/iFd3
AaAbrjIs6pnWZl1aNjHRBwBzd5Ye9yXdiXUiJvoAYM6OVjXqadZ+bXTDBdjR
BwBzs5+U2RizA0inr9ttHzv6AGAuXCG1yonFnZLt17cMM0X7uQFAcoksuyIh
S7oT65ScTvvJAUCCLSsnZkl3vIa96EBJpv3kACCpPp8vUM+xWdQdtl/BRB8A
zMoRSnZz7N9Wm7KuNCzs6AOAWdhHkuJ2p2SbNeJFp+YKOJwUADpV5gXSM1IP
sdnVRjf8qKzQfoQAkDA8w9ycwCXd8brd9l0BG1sAoDPfKFWox9dc6grDkln0
uwDQgVNyOvXsmkuNeNHp+QJe3QWA9i2U1djeKdlmrXfDj8sq7QcJAIkxlE6v
S+aS7sS6zfZDMU37WQJAMuQ4LrlLuhPrSsNSWfS7ADAzlmFuMhO8pDtew170
Bb3IY40DANrwtYQv6Y7XBjc8QtVoP04ASIATc3nqkdWtus32ayLeYAOAGRwi
K/G/U7L9urpiZzlM9AHAdCJRXOcm4E7JNmvEi76oF3FcCwBMQ+W4O5N28PL0
tcENF6lZ2s91PlJYDld+QlJcZzrUw6q7dYftN7Cjr++GROnCoqEj/CAJzi2W
qSdV1+vbFUfDRF9/VcX0iBddbzpN/EcHYu94bXCWdMeL/AM8Uy9hoq+f8hw3
9vBXO8ExqoZhH8TZgZnMpuS/rTa5yJc6StXm1VZmkWEoHlBDBtjjewM2uuG5
hXIOQ26IK0dIrR3E3CO1yvEHteciIbNXSjw2o5yTzS/Xy/cYztNOuMX0AnqX
j5DIvX3Ca49kyH2d6dQH9PlD0pFBwipncLay7FbLK3bSRx06yy0Q059R1As0
fWWx8pDp/tWN3g7q24PGu2FjV9j8TzRE6gnLDwWanX2GZW+2vN2e/11OsGie
jbohKa6u2NQDqnd1TiExE30mxx+SzpyqaJfki3eVzF9Y3it+bUfQ2Bk03vtv
vk1ZW0y3RHshVWTYa8wpfpFI83uWXsrg7WmImTMLJerp1LsaHp3oi9eOPjIA
JWOzwyX5DDX3bb202bCfsoO3gvq7YZPk265pI25ykf97MQZj2hTDXFY29/RT
WF5xPNwLAHGyOKtRT6ee1lo36PNEH9sKNzICyzDsPilxcUY5X9NXFIwHKs5z
bvRuh8m2pyIJua5kKUwshlJkUH3xtMdckJ53oazSD2iAlv2lzMYBXdoYrxtN
t0cTfVzrn7zIMKTT/KAonaxkv5kr3F6q/Mx0X/CqXcm3KYuE540FI1bLBmfp
xel/CmP7i9DzQhyUeWGQ3tLdU51XLM9lom9sCDe6V4ThXEFYmM6coeav1ksb
y9bjlv+KX+tdxE2uHUHjWr0ct77xC/lCOz+IayuOg54XaCP/nAfj4OUZ65i2
z+gjCSkxnMayQ4J4TEb5ipYng6u7Dfs3dvBmUO9nxE2u7UHjG7k4Xqj06bb3
wN9p+wfLSgy/AswrlxsW9VDqQ61zw6H/P9HHt4ZwKssWWG6/VPokJXtRrrCy
WPlRxX3WCbcFDboRN7ne9OvnZPPxTIyj1A4mioe96LR8IRODFRmYt74408zM
ANTdfvVev7rS8uop8WPpzKmqdnm+uKZk/tR0/9K9tYae1ut+/YxsjvYvyx59
VFY6/aFcaVgW1W2HMJ8dqWSTfqfkxLrHr/7Ar97vV7f4tV8E9d8E9efCxt/D
xutRcwft7Jp1bfVrx2YU2r8p09lPyszih3WH7X8YPS/QsHdaSuhbumQId59f
/aFf+0lQeyKoPxM0/ho2/hk2/hU1d9JOqi7Wi251kSTT/jWZQV1Mz+6HSHre
JTldiseGHJg/CoKwPt65d3drCPeAX33Qrz0c1J4M6r8PGi+EjVfC5ltR8z3a
udTTet6rfkiUaP+OzMwQhLn8iC8rm2V67xfD/LTS3v3lSlo11qX+0K8+5Nd+
HtRIl/qnYLRLfS1sbouau2inUJ/rWSfcO5WM+5LyHD/H61rIL+EHMzJ6Xuib
S/b8klFPI+5+v/Zgq0t9PKj/Lqj/JSBdavP1sLk9av6bduZQryftoJ6crW4q
x90+5w1RG9zws7m8hL3N0BentbfpdNZ172iXWnuo1aX+b1B/Nqw/3+pS34ya
70RDiLjJ9ZjlG7RPG+iIPHokSxduoh/xom+UTQM9L/TeYYralSXdu9/vUmtb
/NqjQe2psP6n1lrqq62JuHdph0lS6h7DqSQq9AgySFte6dp1LSss9wApg2Ef
9FRNTHc6OXN3a6/Ij1pd6mOkSw0bfwnf71K3DfpaQ+9qV9gcKdt5NnmzXGR8
tqyrG+DXOOHx2Rx6XuidDMtOczpBayJudKHhZ2PbRcLGWJf6r7C5Y/6tNfQ0
9FYWK0oy/6WPHsnS7VniYTe8sGig54XeGZucuafVpf7Yrz1CutSg/oew8WKr
S30zxERcb2tn2PhOoSwndhsb+dxfLnT/er7NXnSjOdrzJm8EDEnwJb30Xcu7
0/a3eNFvverLQX0e7huhFnpB4wq9lIwNK3vWuxceVzvB8VpOTOx/FCC2SKtb
4IQizztCilRDTO8vSodn5C9p+RuKxn0V51d28LJXm/7Mc9Qs6u2gcb6mJz30
iBN7eS3pJi88v2iQ30/a3xLmEa61MbUmpA5JS2dncysKxhbT/aMTvkX7XKak
1xutI1aEZM7p7ebYTo5kmV3Pe53p7J1OwNsrMKhSDFPh+KHWOeoX5wrryubj
lv+8G3V6Q8R8rtf9+mflLD8o7dtCWe1p7o3VKttfnM0lZj83DDTyTzfLjZ5F
vEBMf07JXqOXf2DYv7YDMp6hHi/xrL971U/K6sCEHtO6s6APuff91tXk5xXK
BZxhBfFDfil1jouE1KFShrRytxUrP2kddvdO/M7z7H+94EZHxP6IlU4107M8
kmUWNeJFy01nUK+Gh0EiMZzB8U0hdbysXpovbjTsJ/p+OUUc6g9OeNAg/oM1
eL5vuTfe8y5Ssxj2QYLwDKNxnMXzpDU+XdWW6+UHKs4zTrhjoAeEpPc/YBBD
jyjyfP/v5iN/4zmFUhZH1kNiiQyTZzmPF46U5PO1/KqS+bDpveQNzoCQjG+r
yTlipVM5jqNyR9VmL7q2YkcJObALYHpc6+rtIsc1U+IJsnpFfvText/awVvJ
XCv5UcV1B/qVK5XjunIky+zqJstND8R2IIDdCK3rz0oc9+G0dIaau7FQJmHy
VzeK+W7qXWHzvkryjljplMxx15ldO5Kl01rvhjJyD+YBttUaZznO54WjM8rX
NH11aXQb4b/iNCAkobe+ZOXmwQSUyLB07yRVEniODcDckd/7dCsJP5AST1ay
V+uluw37D25I66ZI8vfeWqxo8yD0mNZonMrB3ePlY4oPoEVoJWGRtMaS9OVs
/pai8bDpvdaXzTOk+76pYAzsMsZUzu3BkSztV31AF8oB5ohtJSEZFri88GlZ
/XqusNGwn3aCrm+e2Rk2vpErDPiM3iRn6iWKuXdQZtC2ggP0CNvaSSiz7AFi
eokyuo3wwYo7x80z7wSNpZo+DyfZP5vTKebeQkWl/QAAEoxEVonjFkqZpdro
G3a/svxtQYP0re2cukCGjqcpGu1vQMfibG+PZJm+jsnO08cO0COkO24IqRNk
dVm+OFy2/+xGJN/eDRu7JeGbQeM4WaH9Yak5XOnHkSx7qlNyOu0HADDgsix7
sCh9XtWuL5R/YpLWuPq6X180cKcNdOSAfh3JMmWdni/QfgAA805u3u8f2zst
Ucy9C4rGPJxTBQC6KrxAMfcuKlXm+394AKDvDF7Y1PcjWcbrasMe5PefASCW
dI6/w6FwJMtY3WA682qXOADEgcZxt9gerdz7nu3jRTUA6DOF5a6ndyTLBjfE
UVQA0GcSw1xJ9UgWHEUFAH0mMMylVI9ksVOY4QOAfltaMijmXlXEDB8A9NvZ
BZpHsiyQMrQfAADMO/umpZX0lnQPlXEkCwD0G8swfkr8lmGOeFH/c+8TKo5k
AQA6VJY9Qy9u6Pu7G5/VcCQLAFAjMMxhinpbf3ve03AkCwDQtk9autfyfhfU
Hw1qDwa1u3uce+cWy7S/MQAAY/H8qrK1PWhsi5pbw+Yfw8bjQX1LULu3B7n3
NRzJAgDxIDHs2Vp+63/vNf53NPRONPRG1Hw+bPwqqP80qN3n17qSe1cZFo9X
NgAgHsgw7GNS5kk7mOKW4Wjoraj5Uth4Oqj/PKj90J99O3yj6eAoKgCIFZMT
1petaa5x3xUNbY+ar5J2OGj8krTDfu2eTnJvpe3Nt7s7ASD+SM97Xl5/I6jP
eDPdWDv8ZtT8W9h4Kqj/LKj9YKbc2+SFeEEXAOLpUCnzjBN2dCsxaYffjpr/
DBvPhO+3w1NGn8xhZQMAYsrg+WHDfq+NK4mnbId3REOvRc0/hY0nWqvD41OC
poARHwDEl8Qw52n6tqAxi+ib2A7vbK2MPB82fh3Uj5VVicGQDwDii22t8/7Z
rc4l+ibW20HjRa96X8W5KFc4XJLLHBY6ACCODI6/t+J0K/rGa3vQeNWvPW75
1+qlz8hZXxAwEASA+BAZ5uJ8ceespvvaWhYJm2/69T844eqS+aVs/gAxjSNK
AYA6Mhg7IiO/4HWt591T7QqbZCj4sle713C+PtoOZ3QWI0EAoMbmhQdNt9fR
N7F2ho23/foTln99oXyCrNqCgFfdAKDPJIa5TC9N81pH7+q9sLkzaPzFjdaV
zLOyuX1TaWQgAPTNoozyYu973hk74n/59fsrzjdzhYVSRmVx6gEA9JbDCw+Z
7i4aA789jQafsP0b9NF2mHw2nIEAAL0gMezleml7OKe9zT3KwOdIO1y2Wu2w
KHF4QQ4Auuk4WenDOu9c6mWvdr/hXJorHiZl8hyXam3JBgCYi5qQ+qnlze59
3j7XtqDxmOXfWCifpGQDQciwLF4aAYDZyXLctYXyHN/n7XORoP69E64pm2dl
8/uL6VxrKAgA0D6OYU5WtZj3vNPUP7zqAxVnWb54hCSXOC7DYIEYANryAVF6
2PIT0fNOWdtab4s8YnpLFE1G8gFAezSWu7FovJ2QnvfdsLHVrz3nRsNle6mm
Hy7JFo85PwDoGOl5l8S15x3b8Pw3t7rFdK/Il05QsnUhhZMQAKArPiCmH41H
z7utdfTfk3awomCcrmofTkt5nP4HAL2R57gVxcr2vve8pHt9xas9bYebytb5
mv5xKePyOOIPAPqEpM3pau6l3ve8b/j159zogYpzeb74KVnZKyXKONYeAOjZ
T0w/bvndDbodQeN5t0r+2FuKlSVK9kAxXUL3CgBxUuBG13nnsrd5V9h82av9
2g7Wls2vavqh6Uwo4AgCAIg10naeKKsvdnJX0dgR9D+sON/KFxdnRrtXBdvq
ACBphlKpH1f2eG7zu0Hjr270iOndXDROUbIHiGmD4zFPBwBJl2O5a/T33+cl
3etWv/ar0e7VOlfLk+7V5YU07U8IANB1AsuepGSX5YtHZZSGkMqiewUAAAAA
AACIt4Wyelw256dEHl08AMwPjpAa9qLVTnC1YY8FIBamAWDgXVY2v+9XSW1u
BeBVrQD0hBQCEAAG1cEZZSz3xmvEi+76bwC6CEAAGDgiw9xqebtF3+QAdBCA
ADBATtTyU+bexABc44QkABdnNVvA7UYAkHglnt/ghtNH33gArnWCK1sBaOLE
BQBILI5llxaNdnJvYgCuc0kAWiQADR4BCADJs1da6ij3JgbgejckAXisqpUw
AgSA5BAZbnnFmV30jQfghlYAHqNqRdz4BgBJsEjJziX3xmuzF210wysM62hV
03G+NADEmMpxqxy/K9E3Xpvc8LxCmcNLcAAQV1/IF7ube6TWukFVxGmFABBT
rpDa1N6Glo7qDL1I+5sBAExNYJhLypWu595ttoeJPgCIrUMy8mYv6m7ujXjR
J9Tsnv5GlmFKHH+Kkg15QeznVwUAaFFY7ibL7fqQ7xrTnnJvn8QwSxTtz270
n2jonaDxM9O7QNNJAEr9/t4AMK+dNNPrurOoDW64v5SZ+LeQGDxIlB6suO+F
zd1urCMB+FPTW6rlA9zfBAB9UeGF1U7Q9eg7r1ge+/NJY2vx/HWF8ltBffq7
iXcEjS2me6GmDwmijM0wANAzPMueXyh3PffusH1bELIcd5qqPddqbNsvMgL8
ueVdnCvslUIAAkBP7JOWhr0ub2i5268uKxpk/LZrUmPbfpER4COWd1GusHdK
VBCAANA9GY67qmJ3MfQe9Kt/DhrvzjbuJte2oPHwaADqJADJGBIJCABzd5Sq
jXRjQ8t9fvU3QX17NPsx3vT1dtB4zPKX5YofFNMaAhAA5qDI8yvtqc+fb7Pu
8auPBrWtc+hqO6rtQeNxy78s/34A0n5+AJA83Nxe133Ir/0tbLzXl8Sb3AKT
ALy0FYAq5gABoBO1lLjO7XhDC2lsf9vLxnYWAXhQWsrhRTkAaIM4+rqu2dGK
7S+C+mth89+0E2+32hE0fmn5h0ky7ScKAAnwEVlpc3WDNLbPh41dtCNuyvq9
E56maBKDnhcAZpZluRvMGc6fJ43t06ONLf18m1yv+rVr9bKNiz8AoBPTvK57
j199LKi/HoOpvMm1M2j8wLA/KKaxsgsAnXKE1J1Tva7746D2IqUV2xnrt3Zw
ipKV0dgCwKyQ8dKJWv5myx2f6Lvfrz4bNHbQDrcpa6tfW5YvVrB6CwBzlue4
BVLmbL00YgeksY3biu1/Wou2mw17gZjmMcwDgO4hYz9TED6naOvK1t+9WnzS
7yk7OEFRM0g8AOiZsQA8QcneVbb+4dcoJt4rfu3SfLGExhYA+oUbPaeU/6Ss
riqbL/U3AN8JGuvL1l4pEZEHAFSQ8Clz/KdkdXXZ/GePA3BX2Py1HSzOKLiG
AwDigBu9H407vtUCv9KDACR/5kW5QgEnrgBA/JBgKnLcCYq61rC3+jNcpdFO
7Qwba8pmTUgh8gAg5khMFUYDMLu2bL022wB80goWSXIK50oBQKJwrX2AnyEt
cKmDANzq15ZqOq4TAoBEIwGY4/ixbTDTt8CrS6bLC4g8ABgYJAAzDHucrN5S
rLzgVScm3lN28NF0BlN5ADCo2NYxpyToVhSMp53wK1q+F3tU/g+5yU3bDQpl
bmRzdHJlYW0NCmVuZG9iag0KMjIgMCBvYmoNCjw8L1R5cGUvWE9iamVjdC9T
dWJ0eXBlL0ltYWdlL1dpZHRoIDQyNC9IZWlnaHQgMjU4L0NvbG9yU3BhY2Uv
RGV2aWNlR3JheS9NYXR0ZVsgMCAwIDBdIC9CaXRzUGVyQ29tcG9uZW50IDgv
SW50ZXJwb2xhdGUgZmFsc2UvRmlsdGVyL0ZsYXRlRGVjb2RlL0xlbmd0aCAz
NzI5Pj4NCnN0cmVhbQ0KeJztnXt8TNcWx81kSExciUQSr0bEo0WiKPFoy0WV
tl7tRakWcVVbNPVIfKrcllL96C3qUi5Xtbf1Cq26tFU0Pt5vTShaUiWeRQiJ
PCYzc/ZNRCKTmXPOPo85a8856/unzydn//b8nL332XuttYdVroT4AEkfmKAl
IBT0sT8DLQGhIJJcbACtARHHcpPsskKLQEQx7yPOj8zQKhAxTEsJyX8BWgUi
SgIhJKMptApEjG5FPpEdwdAyEBFqcUU+OedaoHUgwvhfLn6hcgdD60CEsWwp
9omcfxRaCCKIaf49n8iOMGgliCCjS3xyzK8CrQQRon2JTyR3KO7IskzNwvtG
ZTwGLQURwJp+3yeyKwJaC8KPZWOpT85P/aHFIPx8VOoTyY/HKYpdhpf5RC61
gRaD8NLqgU9kXy1oNQgfITkPfOKWBEDLQXiwppZ7oWwjcYpiFMvacj6RP9tC
60F4mFHeJ3IYpyhG6e/iE7ccv6LYJMbFJ2IfhVMUk4RmuhqVhV9RTGLd6+oT
OY4bfSxiXlHBJ7ISswNYZGpFn7jROEUxSK+KPpEcnKIYpJGbT+RMCLQoxI3Q
8+5GrfeDVoVUxLrT3SfyFrQqpCKm/3jwKb89tCykIuM9+ETO4VcUa/T05BPZ
gF9RjNEg35NPzkn4FcUWNU97fKHu/hVaGOJCwDaPPpH0+tDKEBf+5dknshHD
JZjiDR6f7FMwx5olOvH4RO5gGRCWiLrDZ9SZJtDakAeEHOfzidtYHVocUkbl
7/h8Ivb3cEeWHebw+kSy+kCLQ8qI5/eJnG4GrQ4ppS0nYNT3QdDykPvUvy7g
k30mTlGMEPKzgE8k+3lofUgJ5nVCPpHfY6EFIiXMEvSJbAmGFojcY4iwT44P
8dCQCVoVChuV+zdohUgxkReFfSLnW0BLRIqofkDEJ7I9GFojUqmSKVnMJ+6f
OEUxwLtiPpH8AdAakUqV+or6RK7gVxQ8j3qMDXNldw1olUjddHGfuE+w3i80
AbvEfSL2F6FlIl9S+ESux0DLNDwTaXwiRzFcApgeVD6RxXgWBUssb2yYK1iS
HpaIX+l8ysKNPlAqb6fziZyoBi3V2Pyb0ieyDKcoSMbS+uSMh5ZqaJ5y0hp1
B8uAAPLINVqfSFpNaLEGJvQXap+4L/AsCgy/n6h9IoVvYI41GALJAG5kdoJW
a1xGSvCJpNaFlmtYOovEhrnAfYU51kA0uSzlhSpIwCkKhqBjUnwi17tBCzYq
/NmfHjn+ELRggyKSDFARbpUVWrExEUkGcKNwAk5REHTMlWhUZg9oyYYkWiwZ
wI0TUdCajUhAqlSfSHIgtGgjIpoM4EYhFlMEYLpkn8htrFSlPQOEykjw8Gs0
tGrj0fa2dJ/IepyitKaeh5sBRHFMxrgWjbEcleETye4Frdtw/FeOTyS9IbRu
ozFZlk9kE05R2tKbOjbMBW4qTlGa0jpL3guV9xy0cmNR86w8n8ilBtDSjUXF
uz+p2YpnUVrymVyfyHScojQkQbZPtt7Q2o1ET5tso67iV5R2xGaKG8LHjqrQ
6o1DIEW5D14+xFtTNIM2+9MTjn7Q6o3DAgU+kWt4a4pWvCbjqPABe/ArSiOe
ylPiEzcHK1VpQ0P67E9P2F6G7oBB8Fey4CviKpYB0YYflPlEdodA98AYzFbo
k3M+TlFaMFzRgq+IvBHQXTAEnaUmA7hx5THoPhiBOsoWfMXsxTIg3sfvN8U+
ORdhGRDvs0GxTyR/FHQnDICMZAA3rrSH7oX+GexQwagD4dDd0D3tclTwybmk
CnQ/9E7YDRV8IgVjIPsQ6g/ZujaYeC97l8SfjwP2ofN6A9S2WKGKT+RwLbgu
tOOO67+g2VR1fOKWwQ0+dQm5OV7vY9/zUuqGCWBTu1JVAHVF7oiiNattZW11
m2eN2Gx1fCKZT6qkKCimb8K8TSe3U0cIhlwtap47DjlFep9ABTF8rvxcR6GU
mnEvTvosJSO3wM4RcoQ+Yzu4JJ/h1hhdn7GI3v1JzRdyiynW7TR82lcHMgvs
DxKyUiLo/7zakZK/sX8WLFOAL7BMNZ8cUqcoS/TTr3+8IS3H4ax4DPatlB2O
gJTSP0trKU2AL5Gomk8km2qKMpn9qrXsl7h4y1k7z3O4NX+R0oMqm8r+Mite
t2Pfsyot+Io5JbjoMluqRLQb8t7nuy4JP8WxUGLserkhwbk0WMFvwTKN7qrn
E1nlaYoyWfytkV1HzV53iGrNUjBX6rfQwvJ/frS5Posw+V1X0Scyrnx2gLmK
NTimz7iFG3+RsNtb8A/JCQZTXB5wfaA+x76davp0t3PxI/0Cqoe1fumdZdt+
pbio15WcBOl5IG+6PsLxSZDqPxIDUF8FRUV6bJf4D1btPC/zXOv2azJ64FZC
dW8zHY59ryuNDVORm33k9KCn23OuDdDf2NdVxQWfQi73lNWDju5PcszW3YV9
kYqSNtTkQkd5PYj29LCfGqn7M8FzQWs/ePgtVmYH6nr8YL7YV2fFE7ZobYhn
0h6R24Gwqx4fmDdTX/dpz9XYEM8ckL/dHsJTAMi5ubGKPxM4I1hY8G1ScMVU
9VS+p57ppaN1Xwe+/VDtcH4bqqADVVN4H3x7qn7GvmD5ZVlUglum6Ncst2Hu
hn29fsY+hdmfiilcKOkcww2TUAVV7uRzeln3LfkjIytLjQBmeRTOUhosJLz1
dWuKTiqlBkdGxca2f7zXhMWbU6/LK0aqgLxExTFdItkMhWuiVPiVWMJc4+En
31yckq7mmZQIdxKU509NEGmDS+umx2pM/nVi+k5dc/CCFq9W1hAVZo/hos1k
TtRrfTNTUGTcK3O+O3bHqzZdeUGNSf5Z8YZsqyJVaIhZLKGNuyYs33HeS0v3
S0+rMh51omiKS+ukw0MpV6y1m/WfvvaIKjk45TnTXp1pozFVa5ljDJGm5RdU
L27k3B9PqfdqHWuj0v/w+nSaCj43TuJjQEiDnhO/3P2nCjYdUa2AX23K8grc
0Ti1mvQJzIHhzQd+uO6EouX7T1Gq6Qn7nbbR08p2PnwSS/WIx19fsC1D1vKd
+0Fp2kA5alBfgp5n1MJZJv+gBr0nrzgkMT2HS66hoojAXdQNK9mX9338qga1
HDJ7YzrtJqFjqaohdgFbqX1qqWa7PoqlatgTby3dnSVu06cqp2nSZxl3ULdh
38VkCYjqP3XtSYGlcuG7ap800CcHPa9yyz6Oya9am2HztnoMMLElqb4xMJPa
p3i1m9YFpvCuScuP5Lnkodm8UFqRPolrvPqN6wZL04EzvjlX4LjnVo43Rp5X
qX2a7YXW9UXwE6Pm77x2+1lvPLsXtU/zvdG8DvHOd2Y3ap++1lGgmO/RhNqn
/6FPgDSiDkE8oPcCO0xTj7oe8Um9nr/7BBHnaH26rJMYMd8klLqMYIEBDzbY
odoeWp+IUQ82mCBgG7VPzaG1GhnTWmqf2kFrNTTLqX3CG5oh6UGdZDwMWqqh
MbXeQZkVORZaqsEJW0RXo2cGtFCj4//qFRqf5kHrNDymTjRfuyv1mGHjY9RP
Ft+P3aCXLFBfJjDxtphPe/FaMQYwdz8p4tMpQyRtsE/kt8LBnhfwAIoNAt8W
TE8oxAMoRjD3ECyIocuipL5Jve8ENicehlaHlGF9mz9sepAVWh1Shqn7RT6f
8i7/8E53Cdd3IF6lHn8RMUIKbh6aMygadyZYoOoM4URHR076ijFtcZUOjrmX
53qk5eAKbnw/9Wlj5xgyQBTVXQf2u0fmD4zUfREQlrHOpjw9dNrPrR7bCr0C
o6+EShdc9uZ3u1ZDs0BosFtamWJn0SBY34JLQc0J/FjyxRTOs2vGtrZiZofG
DBRd93nixuZp3UP9cRTUkOb7ZZZ8zD+4YHDDQDwB1oqgBQXyjCrC8dvKsW1q
4PewJphHyBr7yrjy44we4YE4CHqfxw4pK3ebf2PPMN3dKcUioUvljn2OzLPf
JHV/CLoDRsEySvrYx2VnpMwa0BRnJ01pe1jKN2/+5dTFIzuqWX8OoSRsGd03
r+PGya8Tn4rCL10oLKNFr3W+c3bLrP6xeDgPTFwqv0W2iweXDG2HZ/JMEL7Y
0wWn3I1jqyd1icaRjh3Mgy65epR9ZuvMfjFYsIA5mm8vtciesWfx0Da18RiD
TULm5BEu8+fVE7pEYRgzy1R+6f3nmgZDq0AQBPFN4ie1xhxFHyDWcetAUiv8
8mIdc0rRZ/Kt/Ukt0Sq2ebFkRyNrf1ILDKVgGGtG6eZT1r6kGLSKWaaV2ye8
vS+pGW5vsEkDl51dLntf4sNoFYP4JVfcfc/ZO7ExRicxRxcPByW5eydGQ+tC
XLF6PHzk8veMrw8tDSnPaI/nw8UJi7vHYUAZO4QL3NVduAqX6qxgXsjvE8lu
Dy0PKeVRocp/i6DVIaUIXg17uR60PKSUQQKhts6yIs+miFcaYRA0JCGnBV6o
I/ejMAKG/UEKdyU1CoDVamRM7wv4lH/vVkZLx60luT22HYkNMX4GiCa3BIxa
ba5kemheuQKOtu1vx2A6FQSVVwv4dK150Ig/Kvxb4b4psWiV9nQXWpp/meJp
nVGwd0oLjMPVmKD9Aj7xkr/nnRZBuLWuJQnSKr+UkXtwRhxapR31qS83cqPg
4PtxWGBYI8yfyvaJFNcUmd6uOnQXjEGHXCVGEZJ3cFoHzAf2PlahTT46bIe7
Q/fCAAxRVkukiNMjcKPC+4SfUObSzbmR0F0wBIKbfKIUfh+H4WTaECNw/i7G
L0NxF0krLNN+lzlF3ZxRB1q8kTDX6b2c6j5LV2wb2mKwi8b4Rf79m0xpNqUN
CIRWbUgskUPXCR1HuXJjei3c3YPCUm/wGiqrbMmxOOSB4lf7peQsEZe4Y/0w
WAIeS60hyXeEhrzJYdASkRIstV5Zm+3ZJfuqR/DDliEs4UO/znG3KfUZrGfA
GpaaQ5Nd36qbiRgZwSR+NV4uZ9WKKFyLM4u52qBl9y64TOuMExPbmKp0XnRq
nNBa/P8sqZ9DDQplbmRzdHJlYW0NCmVuZG9iag0KMjMgMCBvYmoNCjw8L1R5
cGUvRm9udC9TdWJ0eXBlL1R5cGUwL0Jhc2VGb250L0JDREVFRStXZWJkaW5n
cy9FbmNvZGluZy9JZGVudGl0eS1IL0Rlc2NlbmRhbnRGb250cyAyNCAwIFIv
VG9Vbmljb2RlIDExNDcgMCBSPj4NCmVuZG9iag0KMjQgMCBvYmoNClsgMjUg
MCBSXSANCmVuZG9iag0KMjUgMCBvYmoNCjw8L0Jhc2VGb250L0JDREVFRStX
ZWJkaW5ncy9TdWJ0eXBlL0NJREZvbnRUeXBlMi9UeXBlL0ZvbnQvQ0lEVG9H
SURNYXAvSWRlbnRpdHkvRFcgMTAwMC9DSURTeXN0ZW1JbmZvIDI2IDAgUi9G
b250RGVzY3JpcHRvciAyNyAwIFIvVyAxMTQ5IDAgUj4+DQplbmRvYmoNCjI2
IDAgb2JqDQo8PC9PcmRlcmluZyhJZGVudGl0eSkgL1JlZ2lzdHJ5KEFkb2Jl
KSAvU3VwcGxlbWVudCAwPj4NCmVuZG9iag0KMjcgMCBvYmoNCjw8L1R5cGUv
Rm9udERlc2NyaXB0b3IvRm9udE5hbWUvQkNERUVFK1dlYmRpbmdzL0ZsYWdz
IDMyL0l0YWxpY0FuZ2xlIDAvQXNjZW50IDgwMC9EZXNjZW50IC0yMDAvQ2Fw
SGVpZ2h0IDgwMC9BdmdXaWR0aCA5NzEvTWF4V2lkdGggNDAwMS9Gb250V2Vp
Z2h0IDQwMC9YSGVpZ2h0IDI1MC9TdGVtViA5Ny9Gb250QkJveFsgLTEgLTIw
MCA0MDAwIDgwMF0gL0ZvbnRGaWxlMiAxMTQ4IDAgUj4+DQplbmRvYmoNCjI4
IDAgb2JqDQo8PC9UeXBlL0ZvbnQvU3VidHlwZS9UeXBlMC9CYXNlRm9udC9C
Q0RGRUUrV2luZ2RpbmdzMy9FbmNvZGluZy9JZGVudGl0eS1IL0Rlc2NlbmRh
bnRGb250cyAyOSAwIFIvVG9Vbmljb2RlIDExNTAgMCBSPj4NCmVuZG9iag0K
MjkgMCBvYmoNClsgMzAgMCBSXSANCmVuZG9iag0KMzAgMCBvYmoNCjw8L0Jh
c2VGb250L0JDREZFRStXaW5nZGluZ3MzL1N1YnR5cGUvQ0lERm9udFR5cGUy
L1R5cGUvRm9udC9DSURUb0dJRE1hcC9JZGVudGl0eS9EVyAxMDAwL0NJRFN5
c3RlbUluZm8gMzEgMCBSL0ZvbnREZXNjcmlwdG9yIDMyIDAgUi9XIDExNTIg
MCBSPj4NCmVuZG9iag0KMzEgMCBvYmoNCjw8L09yZGVyaW5nKElkZW50aXR5
KSAvUmVnaXN0cnkoQWRvYmUpIC9TdXBwbGVtZW50IDA+Pg0KZW5kb2JqDQoz
MiAwIG9iag0KPDwvVHlwZS9Gb250RGVzY3JpcHRvci9Gb250TmFtZS9CQ0RG
RUUrV2luZ2RpbmdzMy9GbGFncyAzMi9JdGFsaWNBbmdsZSAwL0FzY2VudCA5
MjgvRGVzY2VudCAyMDUvQ2FwSGVpZ2h0IDc3MS9BdmdXaWR0aCA1MTQvTWF4
V2lkdGggMTAyNy9Gb250V2VpZ2h0IDQwMC9YSGVpZ2h0IDI1MC9TdGVtViA1
MS9Gb250QkJveFsgMCAyMDUgMTAyNyA3NzFdIC9Gb250RmlsZTIgMTE1MSAw
IFI+Pg0KZW5kb2JqDQozMyAwIG9iag0KPDwvVHlwZS9QYWdlL1BhcmVudCAy
IDAgUi9SZXNvdXJjZXM8PC9FeHRHU3RhdGU8PC9HUzUgNSAwIFIvR1MxMCAx
MCAwIFI+Pi9YT2JqZWN0PDwvSW1hZ2UxOSAxOSAwIFI+Pi9Gb250PDwvRjEg
OCAwIFIvRjIgMTUgMCBSL0YzIDIzIDAgUi9GNSAzNSAwIFIvRjQgMjggMCBS
Pj4vUHJvY1NldFsvUERGL1RleHQvSW1hZ2VCL0ltYWdlQy9JbWFnZUldID4+
L01lZGlhQm94WyAwIDAgOTYwIDU0MF0gL0NvbnRlbnRzIDM0IDAgUi9Hcm91
cDw8L1R5cGUvR3JvdXAvUy9UcmFuc3BhcmVuY3kvQ1MvRGV2aWNlUkdCPj4v
VGFicy9TL1N0cnVjdFBhcmVudHMgMj4+DQplbmRvYmoNCjM0IDAgb2JqDQo8
PC9GaWx0ZXIvRmxhdGVEZWNvZGUvTGVuZ3RoIDExNDU+Pg0Kc3RyZWFtDQp4
nLVYW2/bNhR+N+D/wEeygGleRFECggB1nBUdlmFt3G7AsAfFkWVjjp1aapP8
pP3LnXPo+DatMmr5haJISjz8vnP5pP7bVTWbZOOKDW6u2JduRzEllVLaGOVZ
GivmIsVWebfz+xu26Hb6724dK8puR7Nis1jFWlm3t3ryptv50O2wa3hr/3CP
xHrpHdNeGsd8LKHrcGC7DQ3C29cTew+MH8CM9w9ZkeuUDZfsdRvWv33MFuzi
on9z9X7IVP+XbFEwni96n27F5SUbDMMByWIdWYU7/PeEgxG8/ifNUulhy9EE
j0qWsMikEkDRRqZgxugBz18QJFoRJoq963b+5P+InjWciSjhV8JqvhQ65Y/Y
vMBMzFfCxHwmep4XODjFphI9k8AzPZ1obnBEYbPt4ZRy/A+hrQoPz7Gh3gIX
PIu/2Ojnbud69B3kG9hVMkliOu2K2HXWIuK4MH4laJfZA8j1SZAbZo20e4g7
IxPHosRJawPgUkU+uF7oEeAf84lIeb4SvRj2FjEf54C+5dei5/hz9iAswA+A
5TUQHRzBnHQEy3QqnXE1h7Cpl9qvD7GH8ubuIx7mAnbxl4122hO920RSHdjp
Af0DO+vAvhVa8SoTRvNqNga3tBG/WgqDbgj4T2hgBpAXwkT8K46t0Hd5hvfV
DJa6sJTt03G09a7OepMk0tlG8wHegb78sX1rUbMqkUkzauYHz1q/p8FAadyz
1+qeVkl3hHtEgVlIZp/RUW6I+rI58KKzBR5cdGtx584Wdztm1uH6K4VYCLcH
ApVCaw6BVs2qXBgTgoqijHrjFwGlot0gc7rJ0NYDzMQplp4mfN6it83nwq0x
2vU+GImgCgMwT4CM5Tl277GBmdjxO+y+YKkO9xUumlI1WS+yvCRgA/Kb0XV+
K2lg1ezk8dmcXHmpXGte7s/m5bt21tE4nInXekGgjlEYcUblpixnxabO7DBB
9xVSlwSWQw1i+Jo12eXyoBiNw3AzZcm5KDOxkd62Rll6Lsr27GzKTL9h1FHo
sXukLICNauAbhtc6To4sCfo0CR/Rx8OBhveKsAeleZwWS66boden6V7AXklz
YCeomcTvG1qHPSY4zzP4rtAxvwPVmzqePwvn+Zhm8keIH405Eb4QJtgsV1Cc
FRBlsUJb+uZwoOBo+XJR0vLlMVJZn6aVv0ePiqQ+Lpsdxc/JYvn/+dm1tL4s
EcQAfEkIT7NVDtFwz5Cjx6yAfk79KhBA5OwyOM0WqKVhEYTTfRbozOiRuzzc
PeHr8xzXwXgcaA2ecUyUnU15aZfipa0Mp9vQXnUZbs/OOhIHQmsUVm5bmRwW
oDT08GPIgBI7RfTs26XBvXyzXUNQO0v8mQC2JPwTah/IuhatTCHpRph0DXUW
qIAKXArhDjkio265qZYgIls036apjJvNP+375ODfDAiLJGnecy6iAFkRfsKA
wmD0u+YO7zez479btM2ZWEZHuNmTiMiiaop0sjmRtJH2jgR9kKhRoJi87ws2
X3Een92Ob/2THq7qUsG/mIoZ6g0KZW5kc3RyZWFtDQplbmRvYmoNCjM1IDAg
b2JqDQo8PC9UeXBlL0ZvbnQvU3VidHlwZS9UeXBlMC9CYXNlRm9udC9Bcmlh
bE1UL0VuY29kaW5nL0lkZW50aXR5LUgvRGVzY2VuZGFudEZvbnRzIDM2IDAg
Ui9Ub1VuaWNvZGUgMTE0MiAwIFI+Pg0KZW5kb2JqDQozNiAwIG9iag0KWyAz
NyAwIFJdIA0KZW5kb2JqDQozNyAwIG9iag0KPDwvQmFzZUZvbnQvQXJpYWxN
VC9TdWJ0eXBlL0NJREZvbnRUeXBlMi9UeXBlL0ZvbnQvQ0lEVG9HSURNYXAv
SWRlbnRpdHkvRFcgMTAwMC9DSURTeXN0ZW1JbmZvIDM4IDAgUi9Gb250RGVz
Y3JpcHRvciAzOSAwIFIvVyAxMTQ0IDAgUj4+DQplbmRvYmoNCjM4IDAgb2Jq
DQo8PC9PcmRlcmluZyhJZGVudGl0eSkgL1JlZ2lzdHJ5KEFkb2JlKSAvU3Vw
cGxlbWVudCAwPj4NCmVuZG9iag0KMzkgMCBvYmoNCjw8L1R5cGUvRm9udERl
c2NyaXB0b3IvRm9udE5hbWUvQXJpYWxNVC9GbGFncyAzMi9JdGFsaWNBbmds
ZSAwL0FzY2VudCA5MDUvRGVzY2VudCAtMjEwL0NhcEhlaWdodCA3MjgvQXZn
V2lkdGggNDQxL01heFdpZHRoIDI2NjUvRm9udFdlaWdodCA0MDAvWEhlaWdo
dCAyNTAvTGVhZGluZyAzMy9TdGVtViA0NC9Gb250QkJveFsgLTY2NSAtMjEw
IDIwMDAgNzI4XSAvRm9udEZpbGUyIDExNDMgMCBSPj4NCmVuZG9iag0KNDAg
MCBvYmoNCjw8L1R5cGUvUGFnZS9QYXJlbnQgMiAwIFIvUmVzb3VyY2VzPDwv
RXh0R1N0YXRlPDwvR1M1IDUgMCBSL0dTMTAgMTAgMCBSPj4vWE9iamVjdDw8
L0ltYWdlMTkgMTkgMCBSPj4vRm9udDw8L0YxIDggMCBSL0YyIDE1IDAgUj4+
L1Byb2NTZXRbL1BERi9UZXh0L0ltYWdlQi9JbWFnZUMvSW1hZ2VJXSA+Pi9N
ZWRpYUJveFsgMCAwIDk2MCA1NDBdIC9Db250ZW50cyA0MSAwIFIvR3JvdXA8
PC9UeXBlL0dyb3VwL1MvVHJhbnNwYXJlbmN5L0NTL0RldmljZVJHQj4+L1Rh
YnMvUy9TdHJ1Y3RQYXJlbnRzIDM+Pg0KZW5kb2JqDQo0MSAwIG9iag0KPDwv
RmlsdGVyL0ZsYXRlRGVjb2RlL0xlbmd0aCAxMjM1Pj4NCnN0cmVhbQ0KeJy1
V1tPXEcMfl9p/8M8nhNpZ+d+kZJIhaRRqkZKC1ErVX1ABBakZZMSkrQ/qf+y
tsc+AxRYFMJDTmzv+DLfZ88Myx/OL06PDw4v1M6bXfXXfGaU0cYY65zJqiaj
YjDq/Gg+++2J2sxny1d7Ua0+zWdWrabFJlnj45XVx0/ms1/mM/USoi6v5yg+
6xyVzdpFlZMGMaKhpyEjROcfrjgcnkEZr88OVke2qhcflKRRy72PBxv19Ony
ze7rF8osfz7YrNRwtFm82xufP1c7L9oGqWIbvMEM/9/hzj6E/9GqqjOk3D/G
rVIlKriqARTrdIUy9s9w/yuCxBrCxKhX89kfw7/jwrtBjaEMu6O3w4fR1uEj
fv6BX9JwPro0nI6LPKzQeIKfi3HhCvgsbLGDQ4vBT5fwJxOH30frTXNe44ek
DS74e/xT7f80n73cvwP5LewaXUqi3Z4Tu9F7RBwXJiHoMrPXILcPgtwp77S/
gnh0ukQVStTeN8C1Cbm1XpMI8E+HJ2Mcjt6PaXg2BoAjD5/h33oNHMThy+jc
8BWQD8PxWIbTZwCXGQ4uYMUp/GaHoxuQU8u307Yc7wTBSxU+3gYCyPuKqPhQ
1FnXYtDJgzFqC1uCzfpo6QcQD+ezEI1oa9Sy9oW0kNwlf9EgNjqxZppT01z1
2mfFIVwpimOjCE6cFzVw4oJQ40rZX+o2VN5JY/gmev0D6bVFG3d1pHxByn0b
bCSYuGVad0cbh7fvtrATuJAAnctMkMgwVkt7RHxrEQ5izUJAMp7owhY3VdxI
bNCTaHhtFdDYDdHEYIw4pmC4OTGxAuUIV1jZVqDj9wc6uqJTvANpvx3pxJVI
+4SCsXrnO8AOu4sbLRn8WZqwab3/2dBHgA3S2y2WaC1VHwRnJu9msIBvcjIL
ttB6TsVanwg29KFgA++DY8mujFR+B2P5sUbDAWH+W0ejXBqNzhZpDC83KUNf
yyWeqK0nkqTfm4EGoYUgcaKHNNOdqoDJ/gw0xu6sYN5OCdckFEKxwi3WfR8y
6qONz+1s3GN8rBE64G3zFctxeKFEKEbX7NWvEAtGCdLl3M5tmlVbA/6HZe7d
FNVejTqLJqB3CNTqyHfCx5TPDtHdu+Xmdg98Ld2EmbWIWfDTkXP77b1wAa5h
6On3IMItviHLZ1LgnePwtbMFXS+3tLYx4zfDS0a7kNtVnXy7TuGJk+nMEkPU
KcDxn3WCmQu1QUV3MinYn/DuwzuEdOxQHzS8AJoefJEgTaQE6IWaSRhpLZrF
JOzuKrHMwVnDM6plZwOeUa02NkjdLdakUZ67x8KGRzikoFUjXisJz4Lrc/EF
Gb3fUWUj1xPhLd1ZahqhG63XdMUj6hFqoUcWUxRzpCNbKIoFXmlVFheaIIkj
mhAlhomryUAQcyiGnxN1uriSThfXKetxAxyIxPsQlR7jAPO6fg+esjwCWuc5
OGbgAu0D5QDlUmWgXGhvS+7ppvWRYkOfKTYEWkyBmkhJeKgcYAiIr0WzCDf7
W7hKODaKfZxQ67Nk6SnY6m3+k0axt/BTHm2Q8IKx/kEE1UuD1NlpGiEqDdqg
lv6dqJEOn6iRAeD1bTgklmhCkBgmjiYDwcyxEH/OwzRxGUwTl0jLsHB2JvEe
BLmH/e1/xwB9Gz//AXavdKMNCmVuZHN0cmVhbQ0KZW5kb2JqDQo0MiAwIG9i
ag0KPDwvVHlwZS9QYWdlL1BhcmVudCAyIDAgUi9SZXNvdXJjZXM8PC9FeHRH
U3RhdGU8PC9HUzUgNSAwIFIvR1MxMCAxMCAwIFI+Pi9YT2JqZWN0PDwvSW1h
Z2UxOSAxOSAwIFI+Pi9Gb250PDwvRjEgOCAwIFIvRjIgMTUgMCBSPj4vUHJv
Y1NldFsvUERGL1RleHQvSW1hZ2VCL0ltYWdlQy9JbWFnZUldID4+L01lZGlh
Qm94WyAwIDAgOTYwIDU0MF0gL0NvbnRlbnRzIDQzIDAgUi9Hcm91cDw8L1R5
cGUvR3JvdXAvUy9UcmFuc3BhcmVuY3kvQ1MvRGV2aWNlUkdCPj4vVGFicy9T
L1N0cnVjdFBhcmVudHMgND4+DQplbmRvYmoNCjQzIDAgb2JqDQo8PC9GaWx0
ZXIvRmxhdGVEZWNvZGUvTGVuZ3RoIDExNzk+Pg0Kc3RyZWFtDQp4nMWXbWsb
RxCAvwv0H/bjXUCrndnXgxCo7TSkJNDGKi2YfhCqLAdsJ1UNbX9S/2Vm9u1O
iiyptUU+6HQzd7M7L8/uzk2/Wz98vJ4vHsTZ+3Pxx3ikhJJKKUBUXnROCWuU
WC/Ho19eiPvxaPrm0orVn+MRiFV9WTlQ2m68ff1iPPppPBKvadTp9hxBe+mt
AC/RCu8k3VpW9NNEJY2eH2wYLO7Ijbd389USOnHxSZRpxPTy8/xevHw5fX/+
9kKo6bv5/Uo0y/vJz5ftq1fi7CIFGD0GoxXP8HWEZzMa/nsQnfQ05eyaQ42e
CIOdpKQAyo7cmN1x/KuYElAxJ0q8GY+umn/bicZGtCY0562G5lMLXfOZL//Q
E9esW3TNx3bimxUrb/jy0E4wkM0EAjTIGsWX/o4fKdv82oJWyfiWL/Hunl/4
u/1NzH4Yj17P9mT+QHWVDMHFaNexulZrzji/6EqBhpXdSjk8KeUoNEq9kXGL
MlhhgpVap4RLZXxCL93FhF+2E0tp9M183U5cs/y9dZx+17wjHYoF5baZL25a
2yx3JElMf6wRYHZaSbCer57SIdH4mBAM5KPTElDcZckbeiqwA6lA6BDTpRVK
0EVajEdOU2J9UdySwoDsuqJwFspA8TbNwHYk0SzS6WjEkgdJf9keHdIyyaMn
gazy9Ekmu+xcktnpPEi8TaOT1U2q7FcZ0TUjiJwRZECkYRg4I86xPVgrHQqj
eNl6rJyA+IsrtW35gaq2z/RyN17miSsaglS4taRtJ7tAT6xUaUlHuCJXYkI+
k0ezxVXzDg+AY/s00c9Z8kR2XsckaUX5prJaLvZdlakKIRAsLrLh496mQcdH
PpOjHfTyLcshopXf9nowUBLSLGyaZKimWVac7jKOim/nWVQ1TV4kmU2zj/nt
5H4eKAvF4U2MNsrnnr98mnSOpjdUPtwq3xVtvmB587XNeslXsVnDJ05NmxWt
YIwreHtmOECLr7R02PGi4At0mHAJLhWl8pIVuc60nDnxGYEupGelAMa4gYKK
Z3gTDUVhbBiMVaQKTVFAb50VsdplrARCmarnJjvTg5N9zeDkODI5RToCnXCC
la80HTaPk6OZHBPJweclx1DEdLg8gs6hjaar6FjaXmjnB95VNZjIDh2JfE73
7BRFrjdBAJUdQ8ePH7JjNQwUt6wIUld2rNGDsYpU2SmKyk5VxHqXsRILZarK
TnGmslN8zazlODKHRTqCHXhqI7irhKGTEL7JvmOJW4OP0aMP0ANQ8TFG107P
WruJTVHkUtP50GNjnd/ExoHdxMYhDrBx6AdjFaliUxTQW/tBqctYCYMyVcWm
OFOxKb5mzHIcGcEiHYMNPj82tGLjlvctsAmez+nd1JhD1PRNoNIdNziGelXa
dWzqi0GZdB7E7zkbMz/oAnem9xTNHHW4Hc3MG/uOVk53sZW7uPhwKFy7t+el
poOa6cDppAZA7Q/zFE1PWh9I38jO7+tZD3UhUNoQQ18MPOKxQZ3iOKavatqQ
niGockCaEJuRY4PCUxwT3A/5PUHRd+VRQWHZtq3H/xTUKTYx+mTU/xe/L9GM
p1wNCmVuZHN0cmVhbQ0KZW5kb2JqDQo0NCAwIG9iag0KPDwvVHlwZS9QYWdl
L1BhcmVudCAyIDAgUi9SZXNvdXJjZXM8PC9FeHRHU3RhdGU8PC9HUzUgNSAw
IFIvR1MxMCAxMCAwIFI+Pi9YT2JqZWN0PDwvSW1hZ2UxOSAxOSAwIFI+Pi9G
b250PDwvRjEgOCAwIFIvRjIgMTUgMCBSPj4vUHJvY1NldFsvUERGL1RleHQv
SW1hZ2VCL0ltYWdlQy9JbWFnZUldID4+L01lZGlhQm94WyAwIDAgOTYwIDU0
MF0gL0NvbnRlbnRzIDQ1IDAgUi9Hcm91cDw8L1R5cGUvR3JvdXAvUy9UcmFu
c3BhcmVuY3kvQ1MvRGV2aWNlUkdCPj4vVGFicy9TL1N0cnVjdFBhcmVudHMg
NT4+DQplbmRvYmoNCjQ1IDAgb2JqDQo8PC9GaWx0ZXIvRmxhdGVEZWNvZGUv
TGVuZ3RoIDEzNzM+Pg0Kc3RyZWFtDQp4nMVYbWsbRxD+LtB/2I93Aa12Zt8h
BGo7DSkOtLFKC6YfhCrLAdtJVUPbn9R/2Zl9uTspsqRii3zw+WZu3nbm2dlZ
Tb9bP366mS8exdmHc/HHeKSEkkopQFReRKeENUqsl+PRL6/Ew3g0fXdlxerP
8QjEqhNWDpS2G9I3r8ajn8Yj8ZasTrd9BO2ltwK8RCu8k/RqmdG7SUyyXj5s
KCzuKYz39/PVEqK4+CyqGzG9+jJ/EK9fTz+cv78Qano5f1iJZvkw+fmqffNG
nF3kBaaIwWjFHr5e4dmMzH8PIkpPLmc3vNQUiTAYJSUFUEYKY3bP61+llIBK
OVHi3Xh03fzbTjQ2ojWhOW81NJ9biM0XfvxDX1yzbtE1n9qJb1bMvOXHYzvB
QDoTCNAgcxQ/+jf+pGzzawtaZeU7fqS3Bxb4u/1NzH4Yj97O9mT+QHWVDMGl
1a5Tda3WnHEWdLVAw8pupRyelXIUGqXeyLhFGawwwUqtc8KlMj5DL7+lhF+1
E0tp9M183U5cs/y9dZx+11wSD8WCctvMF7etbZY7kiSmP3YrwBK0kmA9Pz2l
Q6LxKSEYKEanJaC4L5Q39FVgBKlA6JDSpRVK0JVajEdOU2J9ZdwRw4CMsTKc
hWoovWYPrEcUeZFOJyWmPEj6V/TRIW2TYj0TpFXcZ5r0SnCZ5qCLkfSarZPW
ba7sVxnRXUYQOSPIAJGGwcAZcY71wVrpUBjF29ZjhxMQf3GltjU/UtX2qV7t
hpd55o6GIBVubWkbZQz0xUqVt3QCV8KVmFDMFNFscd1c4gHg2D5N9OcsRSKj
1ylJWlG+qayWi33f0VSFEAgsLmHDp96mQadPviBHO+jpO6ZDglaR9npgKBPZ
C6tmGjrVQitOd7WjknTxojrVHEWmWbXEWKRz+MVQIWrAmzDaKJ97+fJp4jly
b6h8uFW+a2q+YLn52ma95KfYrOEzXVOzoh2MaQdve4YDaPEdWiJG3hT8gIgZ
LsHlonR4KYxSZ9rOnPgCgRjyt1oAY9yAQcUz3ERDZRgbBrYq1YGmMqDXLoxU
7WorA6G66nFTgumBU2ItwCnrKMip1BHQCSfY+UrTYfM0cjQjxyTk4Msix9CK
6XB5AjqHGk3soGOpvVDnB+6qGkzCDh2JfE732KmMUm8CAXTYMXT8+CF2rIYB
444ZQeoOO9boga1KddipjA47HSPVu9rKWKiuOuzUYDrs1FgL1so6Cg4rdQR2
4LmD4K4ShighfJO+Ywm3Bp9Cjz6AHoAOPsbobtKz1m7CpjJKqel86GFjnd+E
jQO7CRuHOICNQz+wVakONpUBvbYflLrayjCorjrY1GA62NRYC8zKOgoEK3UM
bPDlYUM7NrW8bwGb4Pmc3o0acwg1/RCodOQBx9CsSl3H5rkYlMnnQbrP2ZT5
wRS4M72nGOZowo3kmRv7jlFOxzTKXVx8PLRcu3fmpaGDhunA6aQBQO1f5imG
nrw/kO7Izu+bWQ9NIVDHEEM3BrZ47KJOcRzTrZoa0gssqh6QJqRh5NhF4SmO
CZ6H/J5F0b3yqEVhbdvW4/9a1CmaGF0Z9UvAD/uuMvzVwXoKzlE9LO24dBaR
Q0XQoK5tTGrx0SS4UtchX3xiKM+yvYSDyG/FRpJwLEsjNmv2EhC4pQ1sAGWW
vPdeWMKHxMhxDCRypL0NliDZ3stTl2o0tZ7R1SsVnY282MwACs+XKDaJIpqN
28g4AKQM6qxt+fADMFLlmGMalIpEiWhXQLXlaZrSoiMvRpo8CYT8UwOGkmxm
aCSG4ymWh3xSwZh+9aguWMZSl6QhDyFb8XzkIVq+bqfcxSSBlGS3Fdh/MKgP
fg0KZW5kc3RyZWFtDQplbmRvYmoNCjQ2IDAgb2JqDQo8PC9UeXBlL1BhZ2Uv
UGFyZW50IDIgMCBSL1Jlc291cmNlczw8L0V4dEdTdGF0ZTw8L0dTNSA1IDAg
Ui9HUzEwIDEwIDAgUj4+L1hPYmplY3Q8PC9JbWFnZTE5IDE5IDAgUj4+L0Zv
bnQ8PC9GMSA4IDAgUi9GMiAxNSAwIFI+Pi9Qcm9jU2V0Wy9QREYvVGV4dC9J
bWFnZUIvSW1hZ2VDL0ltYWdlSV0gPj4vTWVkaWFCb3hbIDAgMCA5NjAgNTQw
XSAvQ29udGVudHMgNDcgMCBSL0dyb3VwPDwvVHlwZS9Hcm91cC9TL1RyYW5z
cGFyZW5jeS9DUy9EZXZpY2VSR0I+Pi9UYWJzL1MvU3RydWN0UGFyZW50cyA2
Pj4NCmVuZG9iag0KNDcgMCBvYmoNCjw8L0ZpbHRlci9GbGF0ZURlY29kZS9M
ZW5ndGggMTM1OD4+DQpzdHJlYW0NCnicxVhtaxtHEP4u0H/Yj3cBrXZm3yEE
ajsNKQm0sUoLph+EKssBy0lVQ9qf1H+ZmX25OymypGKbfPD5Zm7nZWeenZnV
9IfN/cfr+eJenL0/F3+NR0ooqZQCROVFdEpYo8RmOR799kLcjUfTN5dWrP4e
j0CsusXKgdJ2a/X1i/Hol/FIvCat010bQXvprQAv0QrvJL1aZvRmEpO0lw9b
Aos1ufF2PV8tIYqLT6KaEdPLz/M78fLl9P352wuhpu/mdyvRLO8mv162r16J
s4u8weQxGK3Ywrc7PJuR+h9BROnJ5Oyat5o8EQajpKAAykhuzNa8/1UKCagU
EyXejEdXzX/tRGMjWhOa81ZD86mF2Hzmx7/0xTWbFl3zsZ34ZsXMG37ctxMM
JDOBAA0yR/Gjf+NPyja/t6BVFr7lR3q74wX/tH+I2U/j0evZgcgfya6SIbi0
203KrtWaI84LXU3QMLM7IYdHhRyFRqm3Im5RBitMsFLrHHCpjM/Qy28p4Jft
xFIYfTPftBPXLP9sHYffNe+Ih2JBsW3mi5vWNss9QRLTn7sdYHFaSbCen57C
IdH4FBAM5KPTElCsC+UNfRUYQSoQOqRwaYUSdKUW45HTFFhfGbfEMCBjrAxn
oSpKr9kCyxFFVqTTSYgpD5L+FXl0SMekaM8ESRXzmSa54lym2emiJL1m7SR1
kzP7TUR0FxFEjggyQKRhMHBEnGN5sFY6FEbxsfXY4QTEF87UruQHytoh0cv9
8DKPPNEQpMKdI22jjIG+WKnykU7gSrgSE/KZPJotrpp3eAQ4tg8T/TlLnsjo
dQqSVhRvSqvlZK87mrIQAoHFJWz4VNs06PTJF+RoBz19y3RI0CqrvR4oykS2
wqKZhk600IrDXfWotLpYUZ1o9iLTLFp8LKuz+0VRIarD2zDaSp97+vRp4jky
byh9uJO+Kyq+YLn42maz5KfYzuEjTVOxohOM6QTvWoYjaPEdWiJGPhT8gIgZ
LsHlpHR4KYySZzrOHPgCgRjyt5oAY9yAQckzXERDZRgbBroq1YGmMqCXLoyU
7aorA6Ga6nFTnOmBU3wtwCn7KMip1AnQCc9w8pWmZvMwcjQjxyTk4NMix9CO
qbk8AJ1jhSZ20LFUXqjyA1dVDSZhh1oi9+keO5VR8k0ggA47htqPH2LHahgw
bpkRpO6wY40e6KpUh53K6LDTMVK+q66MhWqqw051psNO9bVgreyj4LBSJ2AH
HjsI7kthiBLCd6k7lnBr8CH06CPoAejgY4zuJj1r7TZsKqOkmvpDDxvr/DZs
HNht2DjEAWwc+oGuSnWwqQzopf0g1VVXhkE11cGmOtPBpvpaYFb2USBYqVNg
g08PGzqxqeR9D9gEz316P2rMMdT0Q6DSkQccQ7MqVR2b52JQJveDdJ+zKfKD
KXBveJ9jmKMJN5JlLux7Rjkd0yh3cfHh2HbtwZmXhg4apgOHkwYAdXibzzH0
5POBdEd2/tDMemwKgTqGGLoxsMZTN/Uc7Zhu1VSQnmBTtUGakIaRUzeFz9Em
eB7yBzZF98qTNoW1bFuP/2tTz1HE6MqonwJ+2FeV4a8ONpap0nC7WGdGoIsi
UsFJFT4aacMWnVd7pm6YEaXiBUBNLmuguo/U/Ix0IYsg/6KQVkCRut7noiku
ah1zm6lOaaOSBmolMU26NN2wzZ5O9XboljaY/AbyLrnFSpHdopyGLGTTTnnF
QbdqgUpg+DL8MYSueZFdRK2546XbA5UuMkujOzWd2+HteqDRFY0jQ9fyJI/l
Zw5DHTbJ08T5sHwtJTQ56G15aw2Vzj3yXwE2tAtTDQplbmRzdHJlYW0NCmVu
ZG9iag0KNDggMCBvYmoNCjw8L1R5cGUvUGFnZS9QYXJlbnQgMiAwIFIvUmVz
b3VyY2VzPDwvRXh0R1N0YXRlPDwvR1M1IDUgMCBSL0dTMTAgMTAgMCBSPj4v
WE9iamVjdDw8L0ltYWdlMTkgMTkgMCBSPj4vRm9udDw8L0YxIDggMCBSL0Yy
IDE1IDAgUi9GMyAyMyAwIFIvRjQgMjggMCBSL0Y1IDM1IDAgUj4+L1Byb2NT
ZXRbL1BERi9UZXh0L0ltYWdlQi9JbWFnZUMvSW1hZ2VJXSA+Pi9NZWRpYUJv
eFsgMCAwIDk2MCA1NDBdIC9Db250ZW50cyA0OSAwIFIvR3JvdXA8PC9UeXBl
L0dyb3VwL1MvVHJhbnNwYXJlbmN5L0NTL0RldmljZVJHQj4+L1RhYnMvUy9T
dHJ1Y3RQYXJlbnRzIDc+Pg0KZW5kb2JqDQo0OSAwIG9iag0KPDwvRmlsdGVy
L0ZsYXRlRGVjb2RlL0xlbmd0aCA0Mzc2Pj4NCnN0cmVhbQ0KeJzFXFtvI8eV
fheg/9BPCzKIeup+CYwBPLI368TOOp5xNkCwD1wNNSIgUbOSxo5/Uv5lzq2q
q6meJmlJ8MNQXZdz6vvqnDp1qticV1/ePWwuVxcP3Zvvzrv/Pz1RneqVUtoY
FbscVOed6u7Wpyf/87tue3ry6o9vfffh/vREdx9qZxW0sn7U+/J3pyd/PT3p
vgatr3bHSDb20Xc69sZ3MfTw6LFiGIYqQbs0jAQubgDGNzerD2udu69uuzJM
9+rtx9W2++KLV9+df/NVp159u9p+6Bbr7dmPb5evX3dvvmKChFg7q3CExwzf
vAP1/6m73EcY8t0lUiUknTO5h0nRps8A490N8v9AU6IVzYnq/nh68o/Fv5Zn
1iy6pUuL86XVi9ulzouP+PELtITF3dKExWZ5FhcfsPIKPx6WZyaBzJlOemGw
RuHH8IRNyi/+vtRWsfA1ftDTFjv8c/m/3bs/nZ58/W5m5vdYV/UpBWJ7R9b1
1uKMY8dQDNRadmfK9ZOm3HTW9HY04970yXcu+d5anvBeuciux0804X9fnnkY
dBlgloxdnK8urpZxsYaCXpzfLvPi+hbKd9hrs13itD+eqh0q5klUbKdz783Y
fbzFKXQ29Em4jCa7ln5ATl/AIPH1Xpj2iU5uXK92YEYyeQtzasrPvwdHXPx4
311cf1qeucU9OvBivTQO51mrxT04rPXg+1BzCY9u8bBGe2yXZ2Cme+x9hY+r
QYSkO+r7LTYZ6rqEdXFBvS5IYL3feO6ljGezxj/PZT3/DNabMt4I5pT1vgEr
JDKIkblnE0GFH4zh0Vh+cUGPbJefMJ5tlg7N5gdbebQVlNFOhuzkF40Udb7E
ISJXXzygezgIisa3gzKK26HiZnmWWbxA2Tup4UmT6mjH2Qn8kabTBtO7w4yf
vt5v/PhU46ve7OBMvGeNgE6Z/8uPH5d2oWBpqcXdp+0WChuAsvRpcbvlqAmz
HxffL21a/EhbEG4/YXFB1UACu0rhE6xl7THaZlfqLqj31Zr6rbcP1ONus76n
+m5sxOfhbHOv4wzn9U/IdsMAH+hzc7tl7L+nIhCwi59pR94IAcAPbC5R8hIb
1lz/MPTnqdTUsZ1KmMPPTKXe78LpxVxYqz7YZ3Ph/HIu3AL9vAvrI1xYty58
++n6PYhA/wAxBlo391R/L5aF6hXpfr9eQb/315vtuvR//4kfOWtDZb/Wof3M
DJgUezuziMFExinlLf57bXHHgcc3AYrhNRCFCmVfe/zrPPxL8O8N9XMoll8b
hc/n8Gzgn99vbf20jNpJLv/YK41PB6ZEhzilfloWOueVLdDJbbUJLuQqo3h5
tUKX/bjeFu/5vzUHRoo561IP6T07d/FFaJz2cB5Ioiz3Xt2g067Jdf/7LfX6
j5cItwbSQzMXbie5wYz8Ddfjd6O1Bh0OI3T1C63gj+u7n7C3LNnbu/0BVb9Y
Oq8h1crPl8/r50jop1LCEc4pg/0XJHW/YHa3m5PVlO++ycswlpq4eLvUmtO1
a+jwCVO0h80tHm8pXftDRynfeckXx4lh8BCdQX41qH3YkHhkcRyUHj5gj9//
ejeeOOQYvHQItndmbpNZAqY/48eXy2h/dd5iphBo4yGW7IXAc4epL35cLTXk
U5Rqn9OtwjVMsMULhkQzSNcKULHFigNOufppJ6WZTENbIPZ8Mf3JJyW1c7Mg
cayFOTX9X6+WnNRyMpgwfmWKX4Ej14c1dHio8SxwlNs80HNTc/sznow4zK2u
r2+r2hXHSchFl066XmIn0i5d8I+DuFh6rLd1UEqq98/fix2KtHJ4RfNshn65
U9EI6ZSt/0I7Ee00vLNcre4w03tPyf2BJxs4Ehy09e2fiRc7BETf+2e02Msd
Alqgk+EZ1hEtqzZTWq+unzPf0ZyG74Ny9qxjZtfrvUPKGZZOL2s+qI7SRh+G
4wkfTin4kFduJNOSIw776/qOcq3NdnPfnHLlxEyezfntD/T515dIKyGnUmaO
9PWKI+t6e0GYf5lcSN8P17hKHFL12kf8jODivXGRXD5gXtc5OGxq090M5dA7
3QXYtX3unNFQFywuDylcnJ5k7VCGy9dQBlJOSznD3l7VlAKNgZJUtsHhAfe6
luFoYV0naqzne3ceREogKyikAoQFo1QwfFElBR4HZK/46v7xFOk6RQb+BXA6
1edoeYKsp9tgFfoUaYakQhvMM4PNeNOETHF4R2NJCeEmj2JSgXAhC1VD/zzS
lduhUJorbMi9TSwtFQ6QiiqLX03wMPiIYowCSyjDCKmbbcVtq/zR9Iy/C3ja
6QGDyKP0L7jQA+Rses7+yNNrzqfx4hw3ljV+/vqVNjVwAOsC8agk8WlHnr6b
anzFVl/JJsOnww+dDTlLVHTAH5ylVLCBo8o4shg/wv6kW2eJPvS2dZYYNEbA
0j+MdIV2KJTmisFZagVaW1ShF8gw4iyCQpxFEFI31YqrVvkeZ3laSj1ps6h/
E1eJVtMamXQVs89VfHUVD8EE4pbGyGu1Y1+JsXUULIllEwxajZ4CzvjgJMnE
PpjGSZI1fe2QbFVDj9U7Elm8uAaX0LAsjfYWxcUteNziFgSJvCIWSX46xB+e
lnpPGyZBhP8tPCIpQ+to0iPsPo+I1SOcszXtTC6Mo0apEEN61USNBKt3FDVS
juOokRmiVGTV6iql6hdSMbhGrUAbiypyDx5G3ENQiHsIQurmGvFaOMRLnpbt
TxsL8gD9m3hJNJgzT3uJ2+cleUhHDGZsBg8lvcO3Dyhjw9sUnlijO09WLq8l
QC7U/dwmjJ/v/nZiaKvmMiHIxUDWwI4HzoS5qm7fiHisTM9tlQGoHa7KzIZS
SHGO0GUnF2FgscPVOFFDpg0BZx6FTer3yw47Q0nxA6wRHB7Y3TQlmHHIY8GN
IGmHEwPljNGUR8z18HLTDW1soiInJcs9paRRWZVTOBDrpEfqKeNxW8HCcgPO
mYzaBiEY6DWmwkoKAi5ijl6BJwwRLa+Mx4DSnFTLq5SYVykJL5ETXqJ2oCaj
SjMDEskCdY5YieAhmYaYFASd7X2D3PF8VWKQquc8NMdBLg6UYkVVujPgoq3y
KYNJs2n4VIRzfNLcgs/2uCWRD8iND9bm1Hz6pFN/jDY9ueolwWM1e3WYdslH
Z4uoyfi0T9o+WvTR5eLIN02J3CHCnmrqoo9e960XRQ+k3dBqm3BRS5Z72mb5
VjnF92CstXhTHZNbCx6WHLDO+JMrUTF631IrJQEYRtTiDrU0opZH1PKIWh5R
SyNqcYdaaKkVPCLpD6FWgnYMpvKiR4YWIJEeYAeL1xQNK9ggsh6afcuqlGxz
jivYihzjLmorrTKqNJtBzuwlFGbWfqTvhw5fXnF26Sd3lLI0v/JzPCoPcXk6
69bqwHXvVbvukzGHL3qvHy36ZFJxH34kH0j4Zm31j2RlTyvukyBOuTw0N/tN
KVju1+wAVUjxG8Sis/hOHZKbCQvLCcIZ3/ElFCbaTZkNPQomP2ITdtnEEZvU
skktm9SyiSM2YYdNGVKa3SDn9rIpoTk51WRhtcTInMaLxgLaGbxjazjBdhDC
0OwaTlJgTlJgbEWIQRedlVMZUppVExgaqHPM3MwaT/6Izc/7uRWegj1qTfow
u8QTpp8H6/rMqRoD5cE6UrvEs1IlVTlsledHq1yO0eJJtUT+kFVsPCmrNPak
rHLjSVmrwZNKwfIFvBo8qQoR8qqzeFIdUppD40kN1BlPCiUIZp7QwqyUBJ9t
TipZt4s+432EG9pikxHUkhCLze5c5Ri6bhd9HU/aTEtrwDlHS1daaUQrjWjl
lpbRLS1jWlrGtrRKiWmVEsMrcgzd6BGtPKKVRrTSIbSGA/Pn7hAiTTLeCWhl
Wvf+fOvUlUGwcycIvjKI+D0MmyOn9rrisTY3F2XwzuAIXfP3r3hpcISyMBlk
5NbgCD2xDTR8bUDSdG+wT/iA09oRUA45rh2uLh5yXjtC3eyBTfTsVTJ1YuPp
pri+T3zOt2NsTG/3Gy/OujanyEdMz54vFzhHPkLftH8nlY/UE3dz5SOme869
JVk51PCzvp2CO1RRmvdqTFQOn5w07dOQqTRLba8SM5GqkKxVe2Uf30HgZR86
MH7eDEWNZ+kALu5hB7BGLgnxj5Tk7jHnobmRKxqpF7LKePouAibJRSbp4xL1
5OFKMyEpkgPKmW0vlTXGl3kNq9CyiiNWaZdVblklXeXosbDCQsGWR6zSLqs4
YhVaVuEgVmWt422faWmVsuBzvWqA0/e6Da8UevDd2hwHudjyihWdCAhw0Tfw
kuFKM0Mpog3QOWYl6kSvBlpcIGx4I5VcAY33VZDVD5zwOivroZlfSC6iUhIM
pcwIiySjL4oruTJuaVaDnDqAVqy0QksrDNgiHlYr7sSzNdDKGLBKc2iWZCkU
UqFZJEWsgGatDScetDSHQS4cwKkEZ7xZGjhRQZDZllNwO5yCH3EKLacw5tQs
kSImoEXrwEkGLc1mkDMHcCq7RDJp8BW+mGk8CS9KfIWO9yihXVh4zRLC0GwG
ZqUgOKTICIsYQy9aK7MyqDQLIBFt4c7wy2XzStaN+ZWyoPR4sqgE4ohcwmNK
bctNwKmlSi83MaBIFn6xJScjljbXkmuxzpErm6nchAzkSplBOt2ScyPLOdeS
c74lV0qFnJQFpEgKATeynIxY2lRLrsU6R65s8nI4r+RqmUDisX4gl4foL9cD
A7msdUOullR5l0835IokE8hDkJeLhIFcQSNyLdY5craeuW27S5eiQHT4TV2F
7/GLvJYdvVpYm+OIXdxhF0fsWFIYiOKBoIxbmm3fSNr+EHqu0stjermhZ1ST
hMDxf5yE4O3AkIRksqPIuYYYWYmxiYDAFn0DKxmusMotq3wQq3rgwNQcs+kM
s0gHTwzR+I5m7hW/Q2oivY2Id06B39FM+FsprIA/1yySLL2nGekV0CvsRPc8
VlE2RWr4zTRly9uPMAXgjBbczHmRupyCWr99DvRtr+WdEFXiSyyWgCgGkkPP
GiGfI2AB0wKQKKhyxjefAJRlblAOiNLIy6sh4y9bSAUcNGZA1W+OA+3S9I4q
76HR41sqyuGrNviyVXQ8fa7XAooMZWH/LiOgjAtEBP6QEtDKuFRgLQbnFitY
y+dwpZoyW2SKsEhj8kQRpz/yi2ZQgcChwrA9QAJfQAVcqQCjTommIyRWwzao
wPBlIQKGHjQHrGzOwZDDGRfRHcgx8LUajd+FO3YvUDUqazjqsYApdoQYEMDN
E91qiBLccGHeipStPcwMLq1UBWbQ5jiO1ewcoVegE7JfV9/XjVTWBVgO9DpO
pY4uif+lCiTbpvUwnRT61TVf7Gis0Dilc8B0BeYQAAETF6PXqFGFduwdcBIz
NAjrRBF6Iyc0PubQ6XFelfhYopQE/rC98QokcYWPs8hMRebxTTHjEnqleJkA
caF4WUxklyzI8GdiyCW4xskwvCWKDOJkOGd49sqsRZMl4OwV7CyyshdF8Ec7
MqbxZRCdGQhYF5AlI8ECRaLeMSfMYzTkRVmCoaFzU+NndDePtrDzk1a/S1ca
A8KwACIvaoQWBInGp3GFjeMlEPHnP4HsGQyr4VMPzBpLhZxqj1lk9atwfD/Q
0Qz4UGIZTZoWa1GgYs/j0I8ihidND54WcDvAcW2NZtYSsuKv9P/g4Cym+TVQ
T5QYpix7GruIw8WKQJSEMz6/gud59maFv71gT/PV0xwdP2BiM7+aiVtWGHka
BTascI+R7fx8/Km/7Zp41TDbiP/tg4GNS33+Z5TdGf7iBNov/rH4dvrF5R2o
L/A6JiQMfYBQh196zvzC5avnfBOzjAmRN839yvRFBoX4oOZ+y/PDhCH+DQ3P
MLcNCmVuZHN0cmVhbQ0KZW5kb2JqDQo1MCAwIG9iag0KPDwvVHlwZS9QYWdl
L1BhcmVudCAyIDAgUi9SZXNvdXJjZXM8PC9FeHRHU3RhdGU8PC9HUzUgNSAw
IFIvR1MxMCAxMCAwIFI+Pi9YT2JqZWN0PDwvSW1hZ2UxOSAxOSAwIFI+Pi9G
b250PDwvRjEgOCAwIFIvRjIgMTUgMCBSL0YzIDIzIDAgUi9GNCAyOCAwIFI+
Pi9Qcm9jU2V0Wy9QREYvVGV4dC9JbWFnZUIvSW1hZ2VDL0ltYWdlSV0gPj4v
TWVkaWFCb3hbIDAgMCA5NjAgNTQwXSAvQ29udGVudHMgNTEgMCBSL0dyb3Vw
PDwvVHlwZS9Hcm91cC9TL1RyYW5zcGFyZW5jeS9DUy9EZXZpY2VSR0I+Pi9U
YWJzL1MvU3RydWN0UGFyZW50cyA4Pj4NCmVuZG9iag0KNTEgMCBvYmoNCjw8
L0ZpbHRlci9GbGF0ZURlY29kZS9MZW5ndGggMTg3Nz4+DQpzdHJlYW0NCnic
vVltbxM5EP5eqf/BH3eR4vr95YSQjhYQp0PH0Z5Ah+5DCKFEtAkkPd7+0f3L
m/Haa29IdxMS+FDX3vHMPM94PPZuTn5d3szejCc35P6TU/Lh+IgRRhljXAhm
iTeMaMXIcnp89PwOmR8fnTw61+RydXzEyWU7mRnOpO7MfnPn+OjP4yPyAKye
rPtw0lKrCbdUaGINha7GB9lNeAjWo6CjMLkGGI+vx5dT7snZgiQ35OT8/XhO
7t49eXL6+Iywk9/H80tSTeejv87re/fI/bOGYEDMlWTo4VuG9y/A/ENOPLXg
8uINUg1IiBKeQlC4oB5gXFwj/8sQEs5CTBh5dHz0svqvHklRkVq56rSWvFrU
3FfvsfkCElMta2GqWT2y1SU+fIvNTT0SDnRG3PFK4BOGTe6hiOnqRc0la5Sv
sAm9OU74XP9DLn47Pnpw0RP5gdVl1DkT2C7D6mopMeI40aQFKld2LeR8r5AL
IgWVnYhrQZ0mymkqZRNwypRtUq/phYCfLmpfXS1qC6Ed6WpFasGr0/HV5N/a
VFfjG2hnKJ1vCNEaBbEXBUm4p1roDSSkt5TbSKIT5Xb0DMncBS/23iBOuWd2
C0XZGk4L0V/DuSnYZ9Na2OpmijGeYNpiakpVPYeuqsY1NF8w68l5jekpq684
mg6HXu1FSYVSsbZjLQuhN0BJbhV692A49Hrf0DMq1nA6R51dA7op9h9xo8/G
kN+sWk4vZysoCgprB7fVdLkajrH5YTGWjpqDhdj+uBAXOIci/LnWBiBAemtR
TUKQF9couMZJ4/lrSG6Cc65m8y3y2/2o0iJMOCQPVVr8AUrLpsrSgbmxjNeh
fmg42VQFtXvU9MIjrDeh0hhdTRZpUugs8WTEoo+y63rkG43VuxUZo9IcDb3G
R02hulng05sgQyONYpgVfAYTr3D+NJsnQelNMNCY/YhlLXiagZEW6KuEbRo9
cu1vQTycMny/S0zPfhUSJAfbr3y/k79vw5ZANyXNi1q6agY7EHarhXh3sO6H
gCtB+TCCv/HShlc7aOcfnoT/Tw+JQ8C917tBHL+ECkVqL6tPoUAhJAMPoL8K
stlX7E9DcZut4nR4YrSGUibNFgm53/1Ixfv8hnxkFmN9sITc+350e0KWSDet
wx/L11PY6ctwNHBz0Iy0jvotIIwO6tRh3g36vHfQlGeOimGfk7DZFlcLDLao
Xs3wKuTxfHbVeBWE70ILu0JU7PN3QhSbIErNqXbDGB8eMi7SKHwVGnAaXvIE
JxeTlxV4OiQAxTyVW7A+aAYqbvBe/HNTUOFNcYu9xk143Yz3Q0jFzef601yb
VCxH4FNYbLHAUYXv12DbcEFs+NAhYQk5E+WLt6KafCr93z79fJNrnV3DH9R9
aL2V0bEK32M8fo8JZrzDB8n3t9ZMa80LjxSw4V405oDbDrZsa0sDHqj6HIMi
uWqMSb+LMdcaU0q2R4mBHWt3IuijnbDoxmD0g7ZwdFBZsL5Ye7kbFMH7Ym2Z
3tGc6A235Y7uZE5uDLiVvMioQSOqjLZVstUVPnyFGlDvy21ri6WXWyxeb2pb
p3YLT39yW29323hic3475ne008lvJ8QO4ZZ96e30Lgsve3PbGbW1of6sdtbs
EBy5OacdXAPt9tQ6Oe0Za3UlG9TNCZ3OHQOXZUxgbK/zEHJbEQMpruEEkIGc
seFfHE1wrqTeZ3GhlyyGWcgK1t+QpCACymSvGYWZjbskDkiSZkYJM9/exi/t
MdP8BJBZmZKV7bBy66x8ycrxVi90EyscJGy+w8qts7IdVqZkZbZilfa6caGA
ZVppHPEpygrgGi84BS8HNx6TxTbr2ZKXbdFFhQg82su8orskbqAk1QJoH7NU
daxmmVYzCNigS51KoC3UAOcKTlYL6nkWS5qTsB1FDGncIEyaDfpkuCWX/CYx
y3psC1q+pWVKWiZjs5QVuF0TrUzLY8FKYlNsyTRIpEyxSZJaAt1YLTg1TpPY
ZD0zzEml4myNKDiFQUQmS05GrXEyusPJlJxMl1OxRZJaBB2tZk7RaRKLrCe2
4JROCSdczpVrPLdckUkOTOoWuoNJptxYDmYZk8UiM0uDiCMOG4RJrYGerLbM
ktMojoCiagm3j186vJxUXX5pHFHCVa8gYDvkwL/KMl8UnHbU0vNFDUiaiZ8t
yUWPSaZKciXWPnLpMHWKdcmlcQNS8ZKc6qycUiU5pUtyaZTIxXEEGTUjAdVZ
uegxyVhJrsTaRy4d8p6ZDrl2HEB6eJPM5Hyu/mDac1aQ85wX5NpRhJHGDcik
2RDwucjjzOgxyUxBroO1j1y6hfhwb87c4jBCVFQW8DV+IyjZGap4FtsOO7vG
znbYNZqRQTScCUa/SSxpoSnpNvRMS8936fmCnmDFJcQL3r2EeCGKS4gP6xj1
VEEsrFKDLSpE2NFeZhXdJVa+ZOVvZ9X9NXXf39DgFXD9F2IPm8VAaYBXs77f
0M6++zNMj08IkhM/2ync11nft59nGz71/A++bwKsDQplbmRzdHJlYW0NCmVu
ZG9iag0KNTIgMCBvYmoNCjw8L1R5cGUvUGFnZS9QYXJlbnQgMiAwIFIvUmVz
b3VyY2VzPDwvRXh0R1N0YXRlPDwvR1M1IDUgMCBSL0dTMTAgMTAgMCBSPj4v
WE9iamVjdDw8L0ltYWdlMTkgMTkgMCBSPj4vRm9udDw8L0YxIDggMCBSL0Yy
IDE1IDAgUi9GMyAyMyAwIFIvRjQgMjggMCBSPj4vUHJvY1NldFsvUERGL1Rl
eHQvSW1hZ2VCL0ltYWdlQy9JbWFnZUldID4+L01lZGlhQm94WyAwIDAgOTYw
IDU0MF0gL0NvbnRlbnRzIDUzIDAgUi9Hcm91cDw8L1R5cGUvR3JvdXAvUy9U
cmFuc3BhcmVuY3kvQ1MvRGV2aWNlUkdCPj4vVGFicy9TL1N0cnVjdFBhcmVu
dHMgOT4+DQplbmRvYmoNCjUzIDAgb2JqDQo8PC9GaWx0ZXIvRmxhdGVEZWNv
ZGUvTGVuZ3RoIDg2Mj4+DQpzdHJlYW0NCnictVZfb9owEH9Hynfwo10J4z9x
bEtVpQJd1WmdtpVplaY9pBAYEoUu0HV8pH3L3TlAQ5Y1kygv1uXucr77/c5n
d87z1XScDleke90jP6KWIIILIaRSwhKfCGJiQfIsan05IfOo1bm8MWSyjFqS
THbOIpFCmz3v8UnU+hi1yAVE7VT3cNpya4i0XBliEw6iQcXzNkEJ0TeGvR+G
95DG1X06yaQn/QXZbkM6Nw/pnJyedq57V30iOu/S+YTQbN7+fMPOzki3XxQY
MpaxFrjD3xV2BxD+jSSeW9hyMMZSQyYkVp4DKFJxD2kM7rH+SYBEioCJIJdR
6yv9zdpaUcJiR3tMS7pg0tMHXNZgSWjOVEKnrG3pBJXfcVmxtnLwT1s6SRVq
BC7PEpqEobdMalH8PMMlSHN0+MW+kcHbqHUxeAH5BnYFdy4J1eaBXaM1Io6O
yZagMrMVyOVBkCuiFdd7iBvFnSGxM1zrAnAuYlu0XiEFwHsL5ulswSxA2zY0
G7EE8Eo8PZ+B1tFhumKGTtFhXoNSpQp1UBWaSM+NMjV1aG+5tJs69oDefX3C
ek5hF3vWmKc+sMFVzEUlTwsEVPKsw/t9xpSlT9CS0N3DBVMxNKOmQcixT2mG
4ggXcPKW3j9rC7Hku8YzgrFimm5D7cINg2oFsgT3RkzigzCJw7ipnHorAncJ
YKL/izt30cydOZQ7wVUlT+e4s5VE68i7AtDhHBBmLE1nMHdkQrN8ngLiq2Ca
/sRxkgWHQrMIcvdxBD6jdTMLydFY0I4nr0aCPR4JpTzrOPjAtKNwgQGey4Aw
QcjTHECHPi9UG+jzDFEnzGt6tw5kBd9hYZ0tcuDG0SnwqcTmz+wByczTDbfw
LxyqaTnqsplDd6wpqHwMsL3aFPTHmoJ7edbeOilOwTlrJ5vpdYejKtsMPfh+
RNNybxSCdhzW0vwjt3AvBa8iFg5I3TArE1PMyiXGNPQpDOTt4CzNUrQr2l+g
uQgW1FPw2iYOoV6ezo0UyMOeWi/1Suy5d6/WK/KwB0rRLLW9Us6zrlfg2SYR
YIOwmw1Du6vSAG2hJUy47wxdgVIF8jy+FOECXAYNuhX9A8fdB0vlQXNQMVpY
bPnGaoYh1VnoqlIRI1yKnKGNfKEMUvD/dz/9AXE3opkNCmVuZHN0cmVhbQ0K
ZW5kb2JqDQo1NCAwIG9iag0KPDwvVHlwZS9QYWdlL1BhcmVudCAyIDAgUi9S
ZXNvdXJjZXM8PC9FeHRHU3RhdGU8PC9HUzUgNSAwIFIvR1MxMCAxMCAwIFI+
Pi9YT2JqZWN0PDwvSW1hZ2UxOSAxOSAwIFI+Pi9Gb250PDwvRjEgOCAwIFIv
RjIgMTUgMCBSL0YzIDIzIDAgUi9GNiA1NiAwIFI+Pi9Qcm9jU2V0Wy9QREYv
VGV4dC9JbWFnZUIvSW1hZ2VDL0ltYWdlSV0gPj4vTWVkaWFCb3hbIDAgMCA5
NjAgNTQwXSAvQ29udGVudHMgNTUgMCBSL0dyb3VwPDwvVHlwZS9Hcm91cC9T
L1RyYW5zcGFyZW5jeS9DUy9EZXZpY2VSR0I+Pi9UYWJzL1MvU3RydWN0UGFy
ZW50cyAxMD4+DQplbmRvYmoNCjU1IDAgb2JqDQo8PC9GaWx0ZXIvRmxhdGVE
ZWNvZGUvTGVuZ3RoIDEwMDc+Pg0Kc3RyZWFtDQp4nLVXbWsbORD+bvB/EPdJ
Kqys0bsgDVySXmm5Qu/icIVQinFt1+CXnu2jaf/R/cvOaNdO1t07N2vnwwrt
SFo988yzo1Hv19VmOh4MN+zizSX7u9tRTEmlFGitAkteMWcVW426nb+esUW3
03t57dhk3e0Am+wmKw/KuNrs8bNu549uh73Ar/b294gmyOAYBKkdC15i15Hh
fptsxK9XA7UFwznCeDUfTEaQ2NWSbbdhvevPgwU7O+u9uXx1xVTv98Fiwvho
Udxci/NzdnFVOpgRgzWKdvjRw4s+fv43YEkG3LI/JlczEmZ1kkgKaJkQRn9O
/k8yJaAyJ4q97HZu+b+iMJozYSO/FAb4UkDin6n5iiOer4T2fCqKwCdk/ETN
RhQ64poCInBNFkXNfY+GlOPvBBhVLp5Rk3sLmnAn3rP+627nRf9/mD8QXSVj
9NnbVY6uM4YYp4l+G6CHkd2jHI6iXDOjpakx7rSMjtnopDEl4VLZUEqv7GXC
L5ci8dlSBKS2cHy6EERtQM60KQfJMhaRT8n8z3biYIO9Ka1bNJC355w+yjnD
IEmnXYN7JgUJoXKvxv/u7U9y8wx3CecHcZojda+tVHs4A8ZlD2dTGFCbio+E
tkhn4UmxxvLhkgxzUm/VDnYzPlKvnDYTBrVsSvvocDTsU0VDey2DOVk03FNF
o4azKRpXSHyoKFd1Qo/bH4yX8BMAipNuaq20h/ecjcjp9ZpE5WoU3KwPi8o/
lahAB+ncyUQVnkpUNZxN/N4Jr/O/yk4Z3OSlCT+xO+YLh6cpNlVMT6ow72Uy
h0GUCS3nqTGqrExbk20mMw+MxFNOh83Se7uLZ6xCqCTESPu5wIzNxU40lg5e
rDz0/fHbpIl0lCY8g/gDI97SpsY5CRUfDn8+lCygZKUBW0l430pSZgU64y3r
D2/5l8HXD+vpt1HLaDViA0u1Qjtst/x5jpHHgsBVj8GH3tvquhGkxlIR2qO8
w8JllIuXxD/gM8RnmWvLWe4lrGLSvriOQ2xASds25sQrVatl9Zvwdy1RzrOV
fKCRYWWt+0AjtBpO6Y31UcbWzrQ9v5qhhCjpr26JxR/IIKCqP96V6QKsfETu
gOMKd2hMHpCrKZ1L+kf7i0kUNAqowJvSpnWWb4AV8TwO7XG1P/aasHjpdXss
65EAYoeYYrnt5Xb4CWmjcxJcNWeReew94DQPzm+oVdTgTSnSyYaT8VqJRVOe
sMI6Sid+hlMCZiOrt5OLVK3Lxrj7zPkhmeqaTCM8QqPH3mv+U6Mx3t/nHxWA
Br6e3+bC5Be6x2Muy7ycUDHggGqU1ojbl+SNYMJRYECkiqOSrvcN4vkOlc68
hA0KZW5kc3RyZWFtDQplbmRvYmoNCjU2IDAgb2JqDQo8PC9UeXBlL0ZvbnQv
U3VidHlwZS9UcnVlVHlwZS9OYW1lL0Y2L0Jhc2VGb250L0JDREdFRStDb25z
b2xhcy9FbmNvZGluZy9XaW5BbnNpRW5jb2RpbmcvRm9udERlc2NyaXB0b3Ig
NTcgMCBSL0ZpcnN0Q2hhciAzMi9MYXN0Q2hhciAxMjIvV2lkdGhzIDExNTMg
MCBSPj4NCmVuZG9iag0KNTcgMCBvYmoNCjw8L1R5cGUvRm9udERlc2NyaXB0
b3IvRm9udE5hbWUvQkNER0VFK0NvbnNvbGFzL0ZsYWdzIDMyL0l0YWxpY0Fu
Z2xlIDAvQXNjZW50IDc0My9EZXNjZW50IC0yNTcvQ2FwSGVpZ2h0IDc0My9B
dmdXaWR0aCA1NTAvTWF4V2lkdGggMTEwOS9Gb250V2VpZ2h0IDQwMC9YSGVp
Z2h0IDI1MC9TdGVtViA1NS9Gb250QkJveFsgLTQzMiAtMjU3IDY3NyA3NDNd
IC9Gb250RmlsZTIgMTE1NCAwIFI+Pg0KZW5kb2JqDQo1OCAwIG9iag0KPDwv
VHlwZS9QYWdlL1BhcmVudCAyIDAgUi9SZXNvdXJjZXM8PC9FeHRHU3RhdGU8
PC9HUzUgNSAwIFIvR1MxMCAxMCAwIFI+Pi9YT2JqZWN0PDwvSW1hZ2UxOSAx
OSAwIFI+Pi9Gb250PDwvRjEgOCAwIFIvRjIgMTUgMCBSL0YzIDIzIDAgUi9G
NCAyOCAwIFI+Pi9Qcm9jU2V0Wy9QREYvVGV4dC9JbWFnZUIvSW1hZ2VDL0lt
YWdlSV0gPj4vTWVkaWFCb3hbIDAgMCA5NjAgNTQwXSAvQ29udGVudHMgNTkg
MCBSL0dyb3VwPDwvVHlwZS9Hcm91cC9TL1RyYW5zcGFyZW5jeS9DUy9EZXZp
Y2VSR0I+Pi9UYWJzL1MvU3RydWN0UGFyZW50cyAxMT4+DQplbmRvYmoNCjU5
IDAgb2JqDQo8PC9GaWx0ZXIvRmxhdGVEZWNvZGUvTGVuZ3RoIDE1NjY+Pg0K
c3RyZWFtDQp4nM1ZXW/bNhR9N+D/QOxhkIqZ4TfpoiiwJF3XoQG2xUULFH3w
EscNWtuZ7XTNT9q/3L2XtiXZsuVMUreHMBQlmYf3nEseiic/zpe3N8OrJTu9
OGN/djuCCS6EkEoJz/pOMGsEm4+6nbdP2LTbOXl5adl40e1INt48LJwU2hae
vnnS7fzW7bAX8Ksn230E7bm3THquLPOOQ9ViQ9YNNcKvr24UXriaAIxXk+F4
JPvsfMbW3bCTy7vhlD17dnJx9uqciZPXw+mYJaNp781l+vw5Oz2PAyTE0miB
PeyO8HQAP/+TZH3uocvBDQ6VkDCj+hyCIhXvA4zBBMc/ppBIQTER7GW38z75
O+1plbDUhOQs1TKZpbKf3GHxAHdcMk+VS27Tnk/G2PgRi2XaUwHe6ckgE4Ut
AoushreETd6lUov48mcsqDbFB76mH9jgl27nxeBA5CvYFTwER6OdE7tWa4w4
PujWBOWZ3Qq5rBVyxbTiuhBxq3iwzATLtY4B58L4KL1Yo4CfjqZpSK4+pi6Z
wN9wnvZc8ul2mlqI8G5UtlCrWqg1k4arLaWscBvBjVrhLgR2c/U74n8Gvfjn
lTh1TUHLwIUq4vSSuyLMsvD+DJpLhqk0yfwaZOqTv7KGEZZPQZuKFKpAoEaC
KqH1Mz1L1SlVv6YGnyoMtB5+UDE3tnoEFwjq18sZ4j6rVoRpTREC/oXGFGHb
UkQeZlk83wLVGuc1UMAn5NnFC9JE1MhaE14kpzmpgEisiXzQ9ZIeG2Z6YVnD
HTXEMiemq2H2IjXMosQqw+XaolU7w21ztPqWaC3ALKP1MgY1MrVYIIUSCIGF
6f9CYWiNQuUhaI1R2G+LwjzMMgoHqbQ68rJYrqdloOtqls3DN1ncx9RwT+V8
DykxmyuHLOsZLsOk3OHGC+JGgG6Poia8qKZG1nMpskxDIfDgi0D3LEMWuOkp
CdkBxnABVQPRh+o8lWF165pKlroAKQNczLIX4q2nwHG8L+naUilyJYP3RP7n
J2gTF0eQWM8MHSBRBcn7x82RR7FY2w3tZbGAtIzGV+TipxjXJVIRaSMGqZGo
IuoY3j5IIhRhh77DJOJ1vBc7/pJCguYwPKQ0B4M81I487qPsqsNbzwJFHZTK
wAkufXMyqG2BzDbOtQryQPepALdesB3bqEAhAz4W93jnjhqXq4T1sUa3YYaV
NP2qVZl7P1avqcyYVsi0yz/3gNf0u4EaQSDhKHbrOaED7OrATXPk1jZC+3M8
B7TUCcEqaGO6UtbdUfZQJsdMi2m4TmJgSJZkcfUIW/MzSqBdaMrOyLb8TB5m
GQ9n6XqfEd3jLLOh1zmv2b67Ua25G+npq1JTSaPaszcFpGVsvaOsiQlCK2Hm
VN5j7TuKfsyOH7AhJk1s/nAECa25E2kdt815TNWeOykg3Wsyo92g1WaWOQOy
G2ervfuGpPWaFFaNK+fyrz/T7EKX3uP3mUro5wDNEAod17I3TaJQ0qOvq0RR
KlqTidY/UrRtWSmpDX6TbUyzrVmpAtB9q63LeaNocXCJtauynhy31KgVrP2V
oDIxqibEuJ0ReIhQDeLpxjlutGjI7Jn1BKriLtCs7h0jyLbcn8STkQZXsvbs
XwHpfv+XzYx50xdLtdqjNTlNGsHdEeDanSYlbH9VNYic9c1Nk3FBV9srvH3k
lFnPFh9Y5/sCzwsaU2htW7xXoXmgZeF/TRG9xaWaFnHa2H+NO3/8OhFFekjA
5QTmqNOPI03Xc8gH9jJWY1o0doxW2yDv2cvkYZZTBlmbOw67zx+KYZAXxc/v
jD6/x63NZDLEnVB8ceeAZefFBo/YNNASKsfWa7RLJY7ochLjI6OMm+weDKKo
6p/1sAelFRtcwfCbHb8LuM+qBuB1oO6/TBrtvi+5tt+Y8r4/ps8/SPkPUe5R
7TF1AtbpSKpRKRjv8CPgfycFA8vBUQC8Uy1IwcJCar6xFKz0x/S5nvNu19+C
8MsoTQXY7LBqGp8aLKSGr8LWph6c0NwfMze1owcXjx+/qR6c1lzoyj4/jXCB
HGWHzo0S73yoXhOaHngw1cvA+2R9ygsbQY2CJ+mLTRGPf78v8W//ALrlB2QN
CmVuZHN0cmVhbQ0KZW5kb2JqDQo2MCAwIG9iag0KPDwvVHlwZS9QYWdlL1Bh
cmVudCAyIDAgUi9SZXNvdXJjZXM8PC9FeHRHU3RhdGU8PC9HUzUgNSAwIFIv
R1MxMCAxMCAwIFI+Pi9YT2JqZWN0PDwvSW1hZ2UxOSAxOSAwIFI+Pi9Gb250
PDwvRjEgOCAwIFIvRjIgMTUgMCBSL0YzIDIzIDAgUj4+L1Byb2NTZXRbL1BE
Ri9UZXh0L0ltYWdlQi9JbWFnZUMvSW1hZ2VJXSA+Pi9NZWRpYUJveFsgMCAw
IDk2MCA1NDBdIC9Db250ZW50cyA2MSAwIFIvR3JvdXA8PC9UeXBlL0dyb3Vw
L1MvVHJhbnNwYXJlbmN5L0NTL0RldmljZVJHQj4+L1RhYnMvUy9TdHJ1Y3RQ
YXJlbnRzIDEyPj4NCmVuZG9iag0KNjEgMCBvYmoNCjw8L0ZpbHRlci9GbGF0
ZURlY29kZS9MZW5ndGggNjU4Pj4NCnN0cmVhbQ0KeJy1VE1v2zAMvRvwf+BR
KhBFH5ZlA0GBtemKDslha4YNGHbwPMct1rhdnA3rT+q/HCklqZMayyHrRaEo
8pF8fM7wzXJ1Oy/KFZxNz+FnHEmQQkqptJYO8lSCTSQsqzj6dAJNHA0vry3U
bRwpqLfBMlXS2J3o+UkcvY8juEDU4X6NzDjhLCgntAWXCjQtOZ7LeCeirx92
EsoFtnG1KOpK5TC+h00ZGF4/FA2MRsPp+dUY5HBSNDWwqhl8vOanp3A2DgP6
jlViJFV4OeHZDOHfKsiFw5KzOY3qO4FE5wJJUVrk2MZsQfPXnhIlPScSLuPo
C3viA6MZ8CRj59wods9Vzh7oeMSXlC25TtktHzhWk/OGjhUf6AxzBipTTJNH
0vFs0ZO07DNXRobkOzq81VDAH/4VZu/i6GL2D+YPbFeKLEv9tEu/XWsMMU6B
6WZB3c3uUa6OolyD0cLsMG61yCwkmRXGBMKFTFyQXrA84RPumAKuFfvNtWYt
cqUT79XeWxYlEo9EO1b1sLQ3hT5qCgMqF1bbnjlM7oRy6zl2iN7ePtA8I6zi
Tg/2aY4UuE6E3OvT4QL2+uzne5AyRQfSmyG9HOkub8hRkYn8p3btbnwYvuWo
VcO+k68T5KH0ISjK9ECriva5pG+BzXGna6zgqLb1yk3uJmBOwS7YJX1rJBKs
twWGlpx0XXisB4q8w2sHKRRvfXrwtFRojVA8N0Iw93RtD6steTW14Y/6b2Kz
rya2Tpt9Wpt6Rj25Pzq7aH8R5529Q0MS86yvwC/bR7ThEXdmWUdVEwoOCi5p
nT2ywyLfyHykv/AgwxBV3qKIXUdtVC/NgrQ7bW21VXck5D+EUIKEttaXB34x
0mJP1as+Of0F1FSisA0KZW5kc3RyZWFtDQplbmRvYmoNCjYyIDAgb2JqDQo8
PC9UeXBlL1BhZ2UvUGFyZW50IDIgMCBSL1Jlc291cmNlczw8L0V4dEdTdGF0
ZTw8L0dTNSA1IDAgUi9HUzEwIDEwIDAgUj4+L1hPYmplY3Q8PC9JbWFnZTE5
IDE5IDAgUj4+L0ZvbnQ8PC9GMSA4IDAgUi9GMiAxNSAwIFIvRjMgMjMgMCBS
Pj4vUHJvY1NldFsvUERGL1RleHQvSW1hZ2VCL0ltYWdlQy9JbWFnZUldID4+
L01lZGlhQm94WyAwIDAgOTYwIDU0MF0gL0NvbnRlbnRzIDYzIDAgUi9Hcm91
cDw8L1R5cGUvR3JvdXAvUy9UcmFuc3BhcmVuY3kvQ1MvRGV2aWNlUkdCPj4v
VGFicy9TL1N0cnVjdFBhcmVudHMgMTM+Pg0KZW5kb2JqDQo2MyAwIG9iag0K
PDwvRmlsdGVyL0ZsYXRlRGVjb2RlL0xlbmd0aCA2NzI+Pg0Kc3RyZWFtDQp4
nKVUTW/aQBC9W/J/GKmX3ahe9sO7a1dRpELSKFU5tKFqpaoH5AKxEkzqOGry
k/ovO7NrSKAoOXBgGd587nuzDN63XT2fVh0MxyP4nSYSpJBSKq2lh9JJsLmE
dpYm346gSZPB+aWFxV2aKFhsgqVT0tit6PlRmnxOEzjDqoPdHoXxwltQXmgL
3gk0LQFPbQKI1XvHVkK1xDEultPFTJVwuoJ1Gxhc3k4bOD4ejEcXpyAHn6bN
Atisyb5e8pMTGJ7GC4aJVW4kdfj/hsMJlv+goBQeW07mdNUwCeS6FEiK0qLE
MSZLuv8iUKJk4ETCeZr8YH95ZjQDnhdsxI1iK65KdkvHI3oca7l2rOaZZwsC
r+joeKYLzMlUoZgmRNLxZJFLWvadKyNj8g0dwWoo4IH/hMnHNDmbvMD8K+pK
URQu3LYN6lpjiHEKdGuBniu7Q7k6iHINRguzxbjVorCQF1YYEwkXMvdx9aIV
CB/OGl6w6oo7tsTPtOWZY9cogGVv1DtukTxt2BgpdiiGR7KL8I1x5MsdG614
iTRGV4DJfwNnRO/DrELd2H3vrslFsSFzgka9xB6zPfzv8KMP4seAKoXVdg9D
pvRC+Z6hLQk3v74QU8fYxZ+8Oqc58OnoXMidOT1KuzPnPiXHtOVIpc7ZlI67
e5KyfULxGZicdVc8K7cAlGCD1B2CiGEFxa4DdkdhlnUrgmJKLBrqN3TgjhSx
aV/ykYBbAmpuWBVcN2ih21lcNEpfERirxnoxtwp4KNsRbmJgn40BYagH7nS0
qjBGh5ul7XqaTOmiLxqS+5CGljMkvaVSnv2pceUjIbC9ggcqpoQD4zxu0AuC
TTcX/bWmzjwf6dnoEP78iMtIzKxnrWTzkBUu1W5kDEHVvlf1DxfObNMNCmVu
ZHN0cmVhbQ0KZW5kb2JqDQo2NCAwIG9iag0KPDwvVHlwZS9QYWdlL1BhcmVu
dCAyIDAgUi9SZXNvdXJjZXM8PC9FeHRHU3RhdGU8PC9HUzUgNSAwIFIvR1Mx
MCAxMCAwIFI+Pi9YT2JqZWN0PDwvSW1hZ2UxOSAxOSAwIFIvSW1hZ2U2NiA2
NiAwIFI+Pi9Gb250PDwvRjEgOCAwIFIvRjIgMTUgMCBSPj4vUHJvY1NldFsv
UERGL1RleHQvSW1hZ2VCL0ltYWdlQy9JbWFnZUldID4+L01lZGlhQm94WyAw
IDAgOTYwIDU0MF0gL0NvbnRlbnRzIDY1IDAgUi9Hcm91cDw8L1R5cGUvR3Jv
dXAvUy9UcmFuc3BhcmVuY3kvQ1MvRGV2aWNlUkdCPj4vVGFicy9TL1N0cnVj
dFBhcmVudHMgMTQ+Pg0KZW5kb2JqDQo2NSAwIG9iag0KPDwvRmlsdGVyL0Zs
YXRlRGVjb2RlL0xlbmd0aCA2OTc+Pg0Kc3RyZWFtDQp4nLWV224TMRCG71fa
d5hLu9J6fbYXVZXogQrUIqDhICEu0rBJK5q0JKmAR+It8dhJk23LblHIzWQ0
Htvz/TPxls+n88thfzCH/dMD+J5nHDjjnAspuYPKcjCaw7TOs487MMmz8vjM
wGiWZwJGd8ncCq5MI3u4k2dv8wyOwqnl/Tu8cswZEI5JA86y4BoMrK6JwXD6
YqGxYTAOZbwc90e1qODwGpbXQHl205/A7m55evDyEHh50p+MgNST4v0Z3duD
/cMEGCsWWnG84SHhfi8c/0JAxVy4sjdE1FgJaFmxIIqQrApl9MbIP4qSCB41
4XCcZ5/Jb1ooSYBqTw6oEuSaiorcoPkVViyZUmnJJS0cGWHwAs2cFtKHPYXw
gkiMcDQrD5e4IZ+oUDxtvkITvQkm/KRfoPcqz456Lcp3dJcz722kncbuGqVQ
cUy0ywatd/ae5GIjySUoyVRDcSOZN6C9YUolwRnXLo1e8qLg7+rZLQ2CzIOZ
PSIDlG/uapSrsqTjCKWwOgnWV8hqhG2O4iKOBS3W1veJtXG0tmUc1YbjKDzj
sjmP4e+gQ0jzignXIs9rKgwOoYlDJMPMCB1mpghTOI+BGtemwzU/2pQyCL4l
zx6VtUGot0aofPhtAUzlhhkopMG/hXQLsBlQJ0gCiwJMkwJpw9+BO1nN9li1
Yr5t2E/uuvkDTb3EMjo1dpYQzyNLXE1arLe6G9BuCmgePJ9LQC6ZaQMchMpl
eC+VIrdoeChck0QYWmYDPAaQ2ZKvmJECY+pkSO5Ec1tDk17hw/B0NNGGNkdz
gWn1Wtr5KjBBNx0Z06IA/XTCt24d/PZ0sJrJf2mxbFa7WRFGMNldQvFfr7RM
PwFbrfVxFiW4okouupnsTXffqu31TWvW/iExyxFNEMm/P6iL1+gD1RU5peFJ
fuyb/AfZCCohDQplbmRzdHJlYW0NCmVuZG9iag0KNjYgMCBvYmoNCjw8L1R5
cGUvWE9iamVjdC9TdWJ0eXBlL0ltYWdlL1dpZHRoIDEwMjQvSGVpZ2h0IDc2
OC9Db2xvclNwYWNlL0RldmljZVJHQi9CaXRzUGVyQ29tcG9uZW50IDgvSW50
ZXJwb2xhdGUgZmFsc2UvRmlsdGVyL0ZsYXRlRGVjb2RlL0xlbmd0aCAxNTA5
Mj4+DQpzdHJlYW0NCnic7N0/cipNsydg7URLYSkshaXotWcH18K+zvhjyR7/
+mcqVPH29MefVkMdkVnK54kMRR9AqNDJhB+ohP78AQAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAgJm8vb1FL4H/z3/H3zXR9/NlS53oewIAgd7+0/v7++FwOJ1OP/oVPz4+
bp7VTt/zCN5WuPMLPbKuXU5fHj3rldKu8Ln/jpd1yx7tK7ZrWybleDx+fn4O
XufTy7t329/ue36VD/qL3/O1DDcNAH6B64fOFmlaSmzZ5ue+YstON8/q4erb
a7j36ddf6JF17dW+M9eJtJ3yc9+xR+Vc4dP5/zXd8q323Wtf8Xw+//makXbQ
xqRdeT/laU8vbyP/P7+av+Rvfc83ZLiZADCp7RTRck6LPe3RfHnBc7lATz79
rH5KS5jLJe+9ZtuveSOgrtdz8wqXV/z6YjZWePOmtcu309cv265PaR+XF3jb
wb1Xd9tXWae+dnwRre99K9bftJvX/1eW9+0Kn17ezdt4ccl7V/50/v+L3bKx
vOt+vr6x16df/Ejl0W/sxfJuruHR7+fG9/niZfneTt9+oT93/q8vvtDyz+vv
+Z6b81Dv3buZ6xPXV9iPb17/znstAPhN7oXknnbaA2V7TFzC5/HL8onr/Q/9
sbVnzvXxza/YL3Bxev+UZT0bV7he8/YKby7gYoNTO15SUL+2ftw3e9y8hn7J
5aXgi/C/vfIle6y/7l9f3sYKB5e3XMlyyfVKeppavu69/7X9dnbLzq+7fbGN
/Tzr7/w921d+7xu7Xt71Gp74fm58ny+eBq6fJG50xb3/63v5f+Os575F+2/m
xRrWV/j+tbPx4vr332sBwG9y/TDaNzbc3Ci+PC/4828wW866CEgbu036V7x4
tW15fXVZz8YVbiScixXevMxFulh/of0Ztb92ev3K/7crX75p/YX9H1rexgoH
l7dcyc2kdHF6j45PLH6xv1v2fN3ti21kv/blvn1FeueVX3xjL44v1vDE93P7
+7z8MOViQje64t7/9RP5/7lv0U178v/FFV5f//57LQD4Td5u2Xjxbf1T/ovT
L3at3NwvsXzixYaKJeCtr//eFW5ng3srXF/VvazSf3yw/EBhWwvq7XOvnyjt
X/m9H778leXdW+Hg8rp7efj6yr/979j2dLfc/LpPL2/P4vdf+Ub+f/o6159y
03KB/t27GM+Nrtj4v95zo/48/t+0ceu2L7BnDet/7r/XAoDf5OJh8fPrFxvX
u2j6j877Ftl1kLh+PN2IHDe/4pLi1mlkff33rvDimneucG153e/6Fb9+bW/f
bULum096wL54dXT/yu+tcHx5GyscX97GWdenf/vf8be6Zc/XfWJ5y1d/Ykf6
nm/szuXtX/D2Dflz/1nhzq6494U2bsij/017bsXNC+xZw/qfG7caAH6xm493
y+tyLXy2nPD55eLyF5+4/3Wz5ROXIPf+n7+w+e0Vrr/0/hWuLW9wdPN3S//8
+zzo3s9BtrcN71z5xgoHl7e9wvHl/bmfhy9O3/9Tm2+X9G237Pm6Ty9vz/7/
/Ve+P/8/seDtG7Lsur+45o2u+Iuv/z/3Lbrpr+R/r/YDUNN2/r84d/0blxdn
3dskvP0V2+Nvf0H7+tyNK9x4lN9Y4dqyH3g7ANz75lxsR79IUztXvrHCkeV9
u8Lx5W1cyQ/t/+/2d8tz+/83lnEdmLv1O+Xuv/L9+f8n9v/3V/6v9//f64qN
/f/LN2Q9d9drePS/6dtbce8Cj+b//fdaAPCbXD+Mfn69/38PCUuMbCf2t/5Y
UtB18H5fvbPHxjt4rD/xeivCcu7GFV68mr1zhRfev94PZON3Y2++wc51tF4u
vHzdjZU/9AL7E8vbs8K/srx1Hv648/4//TLP/fLyzTVsdMvG1113y8jyLt7t
/3z1/v/7r/ziSc1yDddreGLB3/6vLf+89/4/F11x7//68O8bVX3++7a0N2/U
n33/TSH5f/+9FgD8Jhd7X3vsXB6U+wt0b6u/dtoz2J/7WaVfz8ZbKa4/8foX
7tbn3rvC/qjdP/GhFa7d3Lq/XNvbnQ32G/tArmPw9cr3h5znlrdzhePLW1/J
4Yff/3853tktN3/2sXziyPI+vvv7vzuvfP3P9fJuruHRBb/d9371/pbruLsx
vzf/r5fY//7vhqKbN+rPvv+mkPy/fasBAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACo5nQ6vb+/v729tY/n
83l91sfHx3JWO15OPx6Pb/+pXeDbzwIAAGK1JN/y/+fnZztuHw+Hw5LY23OB
5RnB+rhpF+ufcm3jswAAgFgXr8+3VL+8kt+eGqzPbcftlH68kf83PgsAAEhl
nf/bwTrkb5y1tvFZAABAKqcv/fjt7e3i3OWUvqvncDhcb/Lf+CwAACCPFuNb
pF/+uZHk28WW3xrom/yXpwDyPwAA5Nfy/MVG/f1Jvj8FePSzbnq7458v/TKO
HW8cL/2WZD2OHb/4uI9AnvU4dvzKY/3vePy4iM/Pz/4uQBenP7STf701aGT/
vx8WMKja/MIFI0Bl+h92OhwON9+i8+KdfNY/ILj45d/+uwDfftYe8j+D3PlT
nBGgMv0Pe1zE9bX+0v36nfyX2L+x/3/js/aQ/wEA4Ofc3Gy/JPYe4K//NHDf
MnTvj/ze+6yd6xm7QQAAwDTkfwb54S/FGQEq0/8wI/mfQe78Kc4IUJn+hxnJ
/wAAUIf8DwAAdcj/DPLDX4ozAlSm/2FG8j+D3PlTnBGgMv0PM5L/AQCgDvkf
AADqkP/Z7+Zfr7snerHwIvY/UJn+hxnJaQzSQhQn/1CZ/ocZCW8M0kIAABMR
3hikhQAAJiK8MUgLUZz9D1Sm/2FGwhuDtBDFyT9Upv9hRsIbg7QQAMBEhDcG
aSEAgIkIbwzSQhRn/wOV6X+YkfDGIC1EcfIPlel/mJHwxiAtBAAwEeGNQVoI
AGAiwhuDtBDF2f9AZfofZiS8MUgLUZz8Q2X6H2YkvDFICwEATER4Y5AWAgCY
iPDGIC1EcfY/UJn+hxkJbwzSQhQn/1CZ/ocZCW8M0kIAABMR3hikhQAAJiK8
MUgLUZz9D1Sm/2FGwhuDtBDFyT9Upv9hRsIbg7QQAMBEhDcGaSEAgIkIbwzS
QhRn/wOV6X+YkfDGIC1EcfIPlel/mJHwFuuNHKIbAQDgRSSfWO37/9+n/6ti
yxQAAHVIPrHk/wxlChhh/wOV6X+YkeQTS/7PUKaAEfIPlel/mJHkE0v+z1Cm
AACoQ/KJJf9nKFMAANQh+cSS/zOUKWCE/Q9Upv9hRpJPLPk/Q5kCRsg/VKb/
YUaSTyz5P0OZAgCgDsknlvyfoUwBAFCH5BNL/s9QpoAR9j9Qmf6HGUk+seT/
DGUKGCH/UJn+hxlJPrHk/wxlCgCAOiSfWPJ/hjIFAEAdkk8s+T9DmQJG2P9A
ZfofZiT5xJL/M5QpYIT8Q2X6H2Yk+cSS/zOUKQAA6pB8Ysn/GcoUAAB1SD6x
5P8MZQoYYf8Dlel/mJHkE0v+z1CmgBHyD5Xpf9jpdDq9v7+3yNE+ns/n9Vkf
Hx/LWe14/KxvST6x5P8MZQoAgJ9zPB5b/v/8/GzH7ePhcFgSe3susDwjWB8/
fdYekk8s+T9DmQIA4OdcvD7fngK0xN6P21OD9bntuJ0yctYekk8s+T9DmQJG
2P9AZfofnrDO/+2g/1zgb521h+QTS/7PUKaAEfIPlel/eMLpSz++DiHLKc+d
tYfkE0v+z1CmAAB4jY+Pj8PhsPxT/i9I/s9QpgAAeIHT6XSxUT8q/9/0z5d+
Gcc/dyz/Z6g+Mhn6wfGMx/2fedbj2PErj//R/46Hj4v4/Pzs7wJ0cbr9/wXJ
/xnKFDCi2kMYrOl/2OlwONx8i86Ld/JZ/4DgubP2kHxiyf8ZyhQAAD/nIq6v
9Zfu1+/kv7yw/9xZe0g+seT/DGUKAICfc3Oz/ZLYe4C/+aeBnztrz3oGbg2j
5P8MZQoYYf8Dlel/mJHkE0v+z1CmgBHyD5Xpf5iR5BNL/s9QpgAAqEPyiSX/
ZyhTAADUIfnEkv8zlClghP0PVKb/YUaSTyz5P0OZAkbIP1Sm/2FGkk8s+T9D
mQIAoA7JJ5b8n6FMAQBQh+QTS/7PUKaAEfY/UJn+hxlJPrHk/wxlChgh/1CZ
/ocZST6x5P8MZQoAgDokn1jyf4YyBQBAHZJPLPk/Q5kCRtj/QGX6H2Yk+cSS
/zOUKWCE/ENl+h9mJPnEkv8zlCkAAOqQfGLJ/xnKFAAAdUg+seT/DGUKGGH/
A5Xpf5iR5BNL/s9QpoAR8g+V6X+YkeQTS/7PUKYAAKhD8okl/2coUwAA1CH5
xJL/M5QpYIT9D1Sm/2FGkk8s+T9DmQJGyD9Upv9hRpJPLPk/Q5kCAKAOySeW
/J+hTAEAUIfkE0v+z1CmgBH2P1CZ/ocZST6x5P8MZQoYIf9Qmf6HGUk+seT/
DGUKAIA6JJ9Y8n+GMgUAQB2STyz5P0OZAkbY/0Bl+h9mJPnEkv8zlClghPxD
ZfofZiT5xJL/M5QpAADqkHxiyf8ZyhQAAHVIPrHk/wxlChhh/wOV6X+YkeQT
S/7PUKaAEfIPlel/mJHkE0v+z1CmAACoQ/KJJf9nKFMAANQh+cSS/zOUKWCE
/Q9Upv9hRpJPLPk/Q5kCRsg/VKb/YUaSTyz5P0OZAgCgDsknlvyfoUwBAFCH
5BNL/s9QpoAR9j9Qmf6HGUk+seT/DGUKGCH/UJn+hxlJPrHk/wxlCgCAOiSf
WPJ/hjIFAEAdkk8s+T9DmQJG2P9AZfofZiT5xJL/M5QpYIT8Q2X6H2Yk+cSS
/zOUKQAA6pB8Ysn/GcoUAAB1SD6x5P8MZQoYYf8Dlel/mJHkE0v+z1CmgBHy
D5Xpf5iR5BNL/s9QpgAAqEPyiSX/ZyhTAADUIfnEkv8zlClghP0PVKb/YUaS
Tyz5P0OZAkbIP1Sm/2FGkk8s+T9DmQIA4Ed9fn4ej8ebkaOddTgc2lnv7+/n
83k5vV9+rV1gOffj46P9s5/Yjh9ajOQTS/7PUKYAAPg5Pau3j9eRowX+Fv57
7O8Xa08H+lnt9OX4+rOWJwvr450kn1jyf4YyBYyw/4HK9D/scTwee5K/jhxL
+O9Op1O78HLWvfzfLrN+zb8dL5+1h+QTS/7PUKaAEfIPlel/eMh15Lg4pb+Y
34/XPwu4cHFWO15vDXpiGbyS/J+hTAEA8ALfvv7fjpfL9F09y68GrF/w//Z5
xKPL4JXk/wxlCgCAF9je/7+k/X5WOz6dTv11/v5zgeUpgPw/Nfk/Q5kCRtj/
QGX6Hx5yM3Issb8/Ebi3k2d91nj+v+mfL/0yjn/uWP7PUH1kMvSD4xmP+z/z
rMex41ce/6P/HQ8fl/JtSu/vBfrtp9v/PzX5P0OZAgDgBa4jx8Vb95++9OOL
X/7tPyboxxfv/7N+16DnlsEryf8ZyhQAAC9wHTlabl8C//X7/9/b/99f8F+/
//+9dwrauQxeSf7PUKaAETV/hA2d/oc9bm62X85d/s7vxRv+9z8ZfO+P/PbY
f/1Xg3euZ+TmMEj+z1CmgBHyD5Xpf5iR5BNL/s9QpgAAqEPyiSX/ZyhTAADU
IfnEkv8zlClghP0PVKb/YUaSTyz5P0OZAkbIP1Sm/2FGkk8s+T9DmQIAoA7J
J5b8n6FMAQBQh+QTS/7PUKaAEfY/UJn+hxlJPrHk/wxlChgh/1CZ/ocZST6x
5P8MZQoAgDokn1jyf4YyBQBAHZJPLPk/Q5kCRtj/QGX6H2Yk+cSS/zOUKWCE
/ENl+h9mJPnEkv8zlCkAAOqQfGLJ/xnKFAAAdUg+seT/DGUKGGH/A5Xpf5iR
5BNL/s9QpoAR8g+V6X+YkeQTS/7PUKYAAKhD8okl/2coUwAA1CH5xJL/M5Qp
YIT9D1Sm/2FGkk8s+T9DmQJGyD9Upv9hRpJPLPk/Q5kCAKAOySeW/J+hTAEA
UIfkE0v+z1CmgBH2P1CZ/ocZST6x5P8MZQoYIf9Qmf6HGUk+seT/DGUKAIA6
JJ9Y8n+GMgUAQB2STyz5P0OZAkbY/0Bl+h9mJPnEkv8zlClghPxDZfofZiT5
xJL/M5QpAADqkHxiyf8ZyhQAAHVIPrHk/wxlChhh/wOV6X+YkeQTS/7PUKaA
EfIPlel/mJHkE0v+z1CmAACoQ/KJJf9nKFMAANQh+cSS/zOUKWCE/Q9Upv9h
RpJPLPk/Q5kCRsg/VKb/YUaSTyz5P0OZAgCgDsknlvyfoUwBAFCH5BNL/s9Q
poAR9j9Qmf6HGUk+seT/DGUKGCH/UJn+hxlJPrHk/wxlCgCAOiSfWPJ/hjIF
AEAdkk8s+T9DmQJG2P9AZfofZiT5xJL/M5QpYIT8Q2X6H2Yk+cSS/zOUKQAA
6pB8Ysn/GcoUAAB1SD6x5P8MZQoYYf8Dlel/mJHkE0v+z1CmgBHyD5Xpf5iR
5BNL/s9QpgAAqEPyiSX/ZyhTAADUIfnEkv8zlClghP0PVKb/YUaSTyz5P0OZ
AkbIP1Sm/2FGkk8s+T9DmQIAoA7JJ5b8n6FMAQDwoz4/P4/H483I0c46HA7t
rPf39/P5vD7r4+OjndjPasc7z/qW5BNL/s9QpoAR9j9Qmf6HPXpWbx+vI0cL
/C3899jfL9aeDixnLc8I1sfbZ+0h+cSS/zOUKWCE/ENl+h/2OB6PPdVfR44l
/Hen06ldePms9Qv77XjPWXtIPrHk/wxlCgCAF7iOHBen9Bfz+/H6ZwF/vrYJ
7TnruWXwSvJ/hjIFAMALfPv6fzteLrPxZOHb5xGPLoNXkv8zlClghP0PVKb/
4SHb+//7sfz/68n/GcoUMEL+oTL9Dw+5GTmW2N+fCCw7eX40/9/0z5d+Gcc/
dyz/Z6g+Mhn6wbFjx44dO652XMq3Kb2/F2g/tv//t5L/M5QpAABe4DpyXLx1
/+lLP754k5+NtwZan/XcMngl+T9DmQJG1HwJCzr9Dw+5jhwtty+B/+L9//ur
+us3+d9z1nPL4JXk/wxlChgh/1CZ/oc9bm62X87tfxe47/+/iPE929/808Ab
Z+1Zz9O3hXHyf4YyBQBAHZJPLPk/Q5kCAKAOySeW/J+hTAEj7H+gMv0PM5J8
Ysn/GcoUMEL+oTL9DzOSfGLJ/xnKFAAAdUg+seT/DGUKAIA6JJ9Y8n+GMgWM
sP+ByvQ/zEjyiSX/ZyhTwAj5h8r0P8xI8okl/2coUwAA1CH5xJL/M5QpAADq
kHxiyf8ZyhQwwv4HKtP/MCPJJ5b8n6FMASPkHyrT/zAjySeW/J+hTAEAUIfk
E0v+z1CmAACoQ/KJJf9nKFPACPsfqEz/w4wkn1jyf4YyBYyQf6hM/8OMJJ9Y
8n+GMgUAQB2STyz5P0OZAgCgDsknlvyfoUwBI+x/oDL9DzOSfGLJ/xnKFDBC
/qEy/Q8zknxiyf8ZyhQAAHVIPrHk/wxlCgCAOiSfWPJ/hjIFjLD/gcr0P8xI
8okl/2coU8AI+YfK9D/MSPKJJf9nKFMAANQh+cSS/zOUKQAA6pB8Ysn/GcoU
MML+ByrT/zAjySeW/J+hTAEj5B8q0/8wI8knlvyfoUwBAFCH5BNL/s9QpgAA
qEPyiSX/ZyhTwAj7H6hM/8OMJJ9Y8n+GMgWMkH+oTP/DjCSfWPJ/hjIFAEAd
kk8s+T9DmQIAoA7JJ5b8n6FMASPsf6Ay/Q8zknxiyf8ZyhQwQv6hMv0PM5J8
Ysn/GcoUAAB1SD6x5P8MZQoAgDokn1jyf4YyBYyw/4HK9D/MSPKJJf9nKFPA
CPmHyvQ/zEjyiSX/ZyhTAADUIfnEkv8zlCkAAOqQfGLJ/xnKFDDC/gcq0/8w
I8knlvyfoUwBI+QfKtP/MCPJJ5b8n6FMAQBQh+QTS/7PUKYAAKhD8okl/2co
U8AI+x+oTP/DjCSfWPJ/hjIFjJB/qEz/w4wkn1hv5BDdCAAALyL5xHrz+n+C
MgUAQB2STyz5P0OZAkbY/0Bl+h9mJPnEkv8zlClghPxDZfofZiT5xJL/M5Qp
AADqkHxiyf8ZyhQAAHVIPrHk/wxlChhh/wOV6X/Y6fPz83g83owc5/P5cDi0
s9rHdryc3i+/9v7+vpz78fHR/tlPbMcPLUbyiSX/ZyhTwAj5h8r0P+zRs3r7
eB052okt57dnB3/+fY6whPn2dKCffq09TWhX2J8srI93knxiyf8ZyhQAAD9n
SfjXkaNF93XIb8fLi/wb+X/9NOHPv08i9q9H8okl/2coUwAAvMBD+f/irJ2f
9dwyeCX5P0OZAkbY/0Bl+h8ecnP/z/I6/8X+n76rp/9qwMUm/+vreSjMSD6x
5P8MZQoYIf9Qmf6Hh9yMHOvf811v42nJ/3Q69acGfZP/8hRA/p+a/J+hTAEA
8ALfvv7fju+9mU9/CnDveh7N/zf986VfxvHPHcv/GaqPTIZ+cOzYsWPHjqsd
l/LQ/v+NT7f/f2ryf4YyBYyo+RAGnf6HhzyU/y9++bf/LkA/vnj/n9Pp5P1/
JiL/ZyhTwAj5h8r0Pzzkod//3dj/358mrN///947Be1cBq8k/2coUwAA/Jyb
m+2Xc3uA72/ys/4zXv3pwL0/8nvvs3auZ+TmMEj+z1CmAACoQ/KJJf9nKFPA
CPsfqEz/w4wkn1jyf4YyBYyQf6hM/8OMJJ9Y8n+GMgUAQB2STyz5P0OZAgCg
DsknlvyfoUwBI+x/oDL9DzOSfGLJ/xnKFDBC/qEy/Q8zknxiyf8ZyhQAAHVI
PrHk/wxlCgCAOiSfWPJ/hjIFjLD/gcr0P8xI8okl/2coU8AI+YfK9D/MSPKJ
Jf9nKFMAANQh+cSS/zOUKQAA6pB8Ysn/GcoUMML+ByrT/zAjySeW/J+hTAEj
5B8q0/8wI8knlvyfoUwBAFCH5BNL/s9QpgAAqEPyiSX/ZyhTwAj7H6hM/8OM
JJ9Y8n+GMgWMkH+oTP8zqfP5fDwe37+0GNAP2int9OilvYLkE0v+z1CmAACK
aAm/Rf3D4XA6ndrx5+dnO7F9bMftlHZ6O/fXPwuQfGLJ/xnKFDBC/wDM4uPj
o8X79nHwMrPzyBVL/s9QpoCnvf0reiEQw/4f5nI4HPoL/tvaZdolf3w1cTxs
xZL/M5Qp4Dlv/yl6ORBA/ocZecyKJf9nKFPA04R/gBmtX+Hvx+2efOdPB34B
D1ux5P8MZQoYoX8AptOi/rLDvx33X/jtv/8bt6jX8cgVS/7PUKaAEfY/UJn+
Z1LLQ//n52c7Xl72LxIJitzMtOT/DGUKGCH/UJn+Z1LLQ39/t5/r03+3Ijcz
Lfk/Q5kCAChl2f9zPB5Pp1M/sZ1i/w8vIP9nKFMAAKUsv/Pb8v9y4vKLAL+e
5BNL/s9QpoAR9j9Qmf6HGUk+seT/DGUKGCH/UJn+hxlJPrHk/wxlCgCAOiSf
WPJ/hjIFAFDKsv//WvTSXqHIzUxL/s9QpoAR9j9Qmf5nUi38n06nIn/t95rk
E0v+z1CmgBHyD5XpfyZV/KG/+M0PJ/9nKFMAAKW8v7+XffH/j/wfTf7PUKYA
AEo5n8913u3/muQTS/7PUKaAEfY/UJn+Z1Lv7+83f/m3SCQocjPTkv8zlClg
hPxDZfofZiT5xJL/M5QpAADqkHxiyf8ZyhQAQAWHw2HPr/32vw7w46uJI/nE
kv8zlClghP0PVKb/mcvHx8f7+3v7OHiZ2Uk+seT/DGUKGCH/UJn+Zzrn87nF
+/73v9px/3FA+9iO2ynt9Hbur39fIMknlvyfoUwBAJTSEv7xeHz/0mJAP2in
/Prk30k+seT/DGUKAIA6JJ9Y8n+GMgWMsP+ByvQ/zEjyiSX/ZyhTwAj5h8r0
P8xI8okl/2coUwAA1CH5xJL/M5QpAADqkHxiyf8ZyhQwwv4HKtP/TGrPXwH7
xSSfWPJ/hjIFjJB/qEz/M6n20F/n3T6vST6x5P8MZQoAoJTPz8+Pj4/+JwBO
p1O1HwdIPrHk/wxlCgCgrPP5fPjSnhEUeSIg+cSS/zOUKWCE/Q9Upv/5NU6n
09uX/kQgejk/S/KJJf9nKFPACPmHyvQ/s+sbgd6/tKcA5/O5PxH4608B2hc6
Ho83I0f/AUR/6nHxKwl9be2s9vFiSRtnfUvyiSX/ZyhTAACltDTecn7L2y08
X/8icPtnO/0vfrme1dvH68jRfw2h7zvqzxGWMN+X0de2Pt4+aw/JJ5b8n6FM
AQCU8u0+n7+bDZaEf321Lbqvf+mgHS9PPdbPBf78+0zh27P2kHxiyf8ZyhQw
wv4HKtP/TCrq93wfyv/PnfXcMngl+T9DmQJGyD9Upv+ZVAvMh8Ph4sR2yk8/
L7i5/2f5uhf7f64vvJyycdZzy+CV5P8MZQoAoJSbm396FP/Rr3szcvTfC+7W
23jk/99K/s9QpgAASrn30P/TkeDb1//XT0x+NP/f9M+XfhnHP3cs/2eoPjIZ
+sFx8uN7d5g3JVmzY8c/etz/mWc9jmc8DnGxf757dBf9E+z/54/8n6NMASP0
D5XFRjh4Wn/V/Xw+Ly+893fR/Om//DXy/j+n0+ne+/+sz3puGbyS/J+hTAEj
9A/AjPpf3Vr+hNb13976CQ/9/m9/LrB+k//lmcLGWc8tg1eS/zOUKWCE/gFg
28Y20T//Bvj+NOTmXyJ79Kw963n6tjBO/s9QpoAR+ofK7P+BGXnkiiX/ZyhT
wAj9Q2XyP8zII1cs+T9DmQJG6B+A6fR32tzelvOLFbmZacn/GcoUMEL/AEyn
hf/T6fTTf+03LY9cseT/DGUKGKF/qMz+HyZV/K67+M0PJ/9nKFPACP1DZfI/
k3r0DTN/GY9cseT/DGUKGKF/AKbT3/z/BW/4n5NHrljyf4YyBYzQPwDT6e+c
7/d/CSH/ZyhTwAj9Q2X2/8CMPHLFkv8zlClghP6hMvkfZuSRK5b8n6FMASP0
D8CMzufz8XjsG4H6KYfDocgvBXvkiiX/ZyhTwAj9AzCdj4+Plvzbxxb4l7vx
0+nUnhGErutFPHLFkv8zlClghP6hMvt/mFQL/8ub/yx34+vnAr9bkZuZlvyf
oUwBI/QPlcn/TGp9133v+BcrcjPTkv8zlClghP4BmM7N1//bKe30qCW9kkeu
WPJ/hjIFjNA/ANO53v/fw387JXppr+CRK5b8n6FMASP0D5XZ/8O8+p8A7n/z
qyX/Un8O2CNXLPk/Q5kCRugfKpP/YUYeuWLJ/xnKFDBC/wAwF49cseT/DGUK
GKF/AKZz733+/f4vLyD/ZyhTwAj9Q2X2/zCpm3fd3v+H15D/M5QpYIT+oTL5
n+kcDocW8t9uWb8p6O/mkSuW/J+hTAEj9A/AdIrfdRe/+eHk/wxlChihfwB+
h+VvAfx6RW5mWvJ/hjIFjNA/VGb/D/M6Ho8XG4HaP0+nU/S6XsEjVyz5P0OZ
AkboHyqT/5nU8cvn5+eff+/GPz4+DodDP+XX88gVS/7PUKaAEfoHYDrv7+9L
1F/uxttTgHvvC/rLeOSKJf9nKFPACP0DMJ31Xffynp/tGYH3/+QF5P8MZQoY
oX+ozP4fJrV+/f/mzwJ+tyI3My35P0OZAkboHyqT/5nU8Xj8+Pjox6cvf/79
FYC4Rb2OR65Y8n+GMgWM0D8A0/n8/FxH/fZ0oN2Z+/1fXkP+z1CmgBH6B4C5
eOSKJf9nKFPACP1DZfb/wIw8csWS/zOUKWCE/qEy+Z9fpshdepGbmZb8n6FM
ASP0D8CvUeQuvcjNTEv+z1CmgBH6B+DXKHKXXuRmpiX/ZyhTwAj9Q2X2//DL
FLlLL3Iz05L/M5QpYIT+oTL5n1+myF16kZuZlvyfoUwBI/QPwK9R5C69yM1M
S/7PUKaAEfoHYCJv34le4CsUuZlpyf8ZyhQwQv9Qmf0/MCOPXLHk/wxlChih
f6hM/ocZeeSKJf9nKFPACP0DwFw8csWS/zOUKWCE/gFgLh65Ysn/GcoUMEL/
UJn9PzAjj1yx5P8MZQoYoX+oTP6HGXnkiiX/ZyhTwAj9A8BcPHLFkv8zlClg
hP4BYC4euWLJ/xnKFAT69u+w8BrRjcCs7P+BGbnbj/Um/ycoUxCoffNP//u/
VGwZAZ4m/8OM3O3Hkv8zlCkIJP9nKCMAUIq7/Vjyf4YyBYHk/wxlBABKcbcf
S/7PUKYgkPyfoYwAT7P/B2bkbj+W/J+hTEEg+T9DGQGeJv/DjNztx5L/M5Qp
CCT/ZygjAPDTPj8/j8fj9f3txnuy9cuvvb+/L5/48fHR/tlPbMcPLcbdfiz5
P0OZgkDyf4YyAgA/qmf19vHb+9t2mRb7+/HhcGjPGm5e7Hw+tytsHy+Od3K3
H0v+z1CmIJD8n6GMAE+z/wf2aJG+J/nt+9ue5JfMv5H/2xWuX/NfP2vYw91+
LPk/Q5mCQPJ/hjICPE3+h4ds39+2wL9O9evnAhcuzmrH661Bg8vgp8n/GcoU
BJL/M5QRAHiNjfvb8/nc8v/6lL6rp514vcn/5u8R/JVl8ALyf4YyBYHk/wxl
BABeY+P+tuX8iz387ZTT6dRf5+9bg5anAPL/1OT/DGUKAsn/GcoI8DT7f+Ah
9+5v92zg6U8B7l3Po/n/pn++9Ms4/rlj+T9D9ZHJ0A8Fj+/dBfFiSfrBcfLj
h5oqyZod5z8u5e1OSj992f/p9v9P7U3+T1CmgBH6h+KMAOx3b16uN//8+Ur1
63+uf0Hg4v1/2nMH7/8zEfk/Q5kCRugfijMCsN+9ebn5Vj8b+//7C/7r9/+/
905BDy2D15D/M5QpYIT+obJ/vnbxRa8Csru3R259gevP6n8y+N4f+e2xv5/1
0B//uvfleBn5P0OZAkboHyqT/2FGxjaW/J+hTAEj9A/FGQGYjrGNJf9nKFPA
CP1DcUYApmNsY8n/GcoUMEL/UJn9PzAjYxtL/s9QpoAR+ofK5H+YkbGNJf9n
KFPACP1DcUYApmNsY8n/GcoUMEL/UJwRgOkY21jyf4YyBYzQP1Rm/w/MyNjG
kv8zlClghP6hMvkfZmRsY8n/GcoUMEL/UJwRgOkY21jyf4YyBYzQPxRnBGA6
xjaW/J+hTAEj9A+V2f8DMzK2seT/DGUKGKF/qEz+hxkZ21jyf4YyBYzQPxRn
BGA6xjaW/J+hTAEj9A/FGQGYjrGNJf9nKFPACP1DZfb/wIyMbSz5P0OZAkbo
HyqT/2FGxjaW/J+hTAEj9A/FGQGYjrGNJf9nKFPACP1DcUYApmNsY8n/GcoU
MEL/UJn9PzAjYxtL/s9QpoAR+ofK5H+YkbGNJf9nKFPACP1DcUYApmNsY8n/
GcoUMEL/MOKNHKIbAV5Kz8d6k/8TlClghP5hROuf//V//kfFlimmGj0fS/7P
UKaAEfqHEfJ/hjLFVKPnY8n/GcoUMEL/MEL+z1CmmGr0fCz5P0OZAkboH0bI
/xnKFFONno8l/2coU8AI/cMI+T9DmWKq0fOx5P8MZQoYoX8YIf9nKFNMNXo+
lvyfoUwBI/QPI+T/DGWKqUbPx5L/M5QpYIT+YYT8n6H+X3t3YJs4s4UBNJ1Q
CqVQCqVkO6EUSskbZfQs/zYYww2xb+45QtEsNsS7+oZ8JrPGLKYamd+W/r+H
m1lAhPwQof/v4WYWU43Mb0v/38PNLCBCfojQ//dwM4upRua3pf/v4WYWECE/
ROj/e7iZxVQj89vS//dwMwuIkB8i9P893MxiqpH5ben/e7iZBaz08YytD5Yc
ngoV77N1EOBXyfy2PvT/HdzMAiL+/fu39SHAZlr+vYRCOqbttvT/PdzMAoCX
eQmFdEzbben/e7iZBQAv8xIK6Zi229L/93AzC4iw/ofKrP+BjEzbben/e7iZ
BUTo/1Sm/0NGpu229P893MwCgJd5CYV0TNtt6f97uJkFAC/zEgrpmLbb0v/3
cDMLiLD+h8qs/4GMTNtt6f97uJkFROj/VKb/Q0am7bb0/z3czAKAl3kJhXRM
223p/3u4mQUAL/MSCumYttvS//dwMwuIsP6Hyqz/gYxM223p/3u4mQVE6P/U
8fGMrQ8WuMsM3Zb+v4ebWQAA1KH5bEv/38PNLAAA6tB8tqX/7+FmFhBh/Q+V
yT9kpPlsS//fw80sIEL/oTL5h4w0n23p/3u4mQUAQB2az7b0/z3czAIA4K2u
1+vpdJpXjuXLZ31+fh4Oh3ZP+9rG4wcubHpI89mW/r+Hm1lAhPUPVCb/sEbv
6u3rw8rR9mmnCX18uVzao9rXyXh50xqaz7b0/z3czAIi9B8qk39Yo1X66/X6
9ah49ybf9+yPGr+xPz41WNi0huazLf1/DzezAAD4BcuV43g8jlv9+Fzg63sF
Ubvn4ab4YfBu+v8ebmYBAPALFirH5XJp/X955+GehU3Bw+AX6P97uJkFRFj/
QGXyD09ZqByt/E/W8Ov/f5X+v4ebWUCE/kNl8g9PuVc5bi7geWv/v+nft76P
8fvG9/79+WU7yYOxsbGxsXG1cSkfd1r6+dvkTuv/2S0RAgBY415rmi/++Zpd
5KedINy7/s94U+QwYCURoriab2FBJ//wlHutafJ+ftff1R9f5H/YZ2FT5DBg
JRGiOP2HyuQf1ri39ni8w80H9m7/8f0hv5NfECxsWnM8z/0F4L9ECAAgEeWN
IBECAEhEeSNIhCjO+gcqk3/ISHkjSIQoTv+hMvmHjJQ3gkQIACAR5Y0gEQIA
SER5I0iEKM76ByqTf8hIeSNIhChO/6Ey+YeMlDeCRAgAIBHljSARAgBIRHkj
SIQozvoHKpN/yEh5I0iEKE7/oTL5h4yUN4JECAAgEeWNIBECAEhEeSNIhCjO
+gcqk3/ISHkjSIQoTv+hMvmHjJQ3gkQIACAR5Y0gEQIASER5I0iEKM76ByqT
f8hIeSNIhChO/6Ey+YeMlDeCRAgAIBHljSARAgBIRHkjSIQozvoHKpN/yEh5
I0iEKE7/oTL5h4yUN4JECAAgEeWNIBECAEhEeSNIhCjO+gcqk3/ISHkjSIQo
Tv+hMvmHjJQ3gkQIACAR5Y0gEQIASER5I0iEKM76ByqTf8hIeSNIhChO/6Ey
+YeMlDeCRAgAIBHljSARAgBIRHkjSIQozvoHKpN/yEh5I0iEKE7/oTL5h4yU
N4JECAAgEeWNIBECAEhEeSNIhCjO+gcqk3/ISHkjSIQoTv+hMvmHjJQ3gkQI
ACAR5Y0gEQIASER5I0iEKM76ByqTf8hIeSNIhChO/6Ey+YeMlDeCRAgAIBHl
jSARAgBIRHkjSIQozvoHKpN/yEh5I0iEKE7/oTL5h4yUN4JECAAgEeWNIBEC
AEhEeSNIhCjO+gcqk3/ISHkjSIQoTv+hMvmHjJQ3gkQIACAR5Y0gEQIASER5
I0iEKM76ByqTf1jper2eTqebraltOh6PbdPhcGj7DPf3/cfaDsPWz8/P9sd+
Zxs/dTDKG0EiRHH6D5XJP6zRu3r7Om9Nvfz3At/G5/N5OAVo97d7bj7h5XJp
T9i+TsYrKW8EiRAAwIJW6XuTn7em87fxPcOb+Qv9vz3h+D3/Nh7/4uAh5Y0g
EQIAWGPemlrJv/fW/eFwuNf/J5vaeLw06IXDgKeIEMVZ/0Bl8g9PmbemvnSn
r/+fvOE/3jRZ5D9/nqf6mPJGkAhRnP5DZfIPT7nZ24dfAfS2P5wCtPH5fO5/
7Iv8h1MA/Z9tiRAAwBo3e/t4/U8/Bbj52H4KsPA8Tx3GTf++9X2MjRfGQ952
cjzGxsbGxsbGical3Fv/s7zPfJP1/2xLhCiu5o8w6OQfnjJvTafTaXz9n/Gb
/JP//Dv+1cDk+j/jq4a+dhjwFBGiOP2HyuQfnnLz+v/Dwv7e8MfX/7y3/r8/
anz9/3tXClp5GPAUEQIAWHBzsf2wdXz9n/FaoP6Rwfc+5LfX/r7pqQ//+lLe
CBMhAIBElDeCRIjirH+gMvmHjJQ3gkSI4vQfKpN/yEh5I0iEAAASUd4IEiEA
gESUN4JEiOKsf6Ay+YeMlDeCRIji9B8qk3/ISHkjSIQAABJR3ggSIQCARJQ3
gkSI4qx/oDL5h4yUN4JEiOL0HyqTf8hIeSNIhAAAElHeCBIhAIBElDeCRIji
rH+gMvmHjJQ3gkSI4vQfKpN/yEh5I0iEAAASUd4IEiEAgESUN4JEiOKsf6Ay
+YeMlDeCRIji9B8qk3/ISHkjSIQAABJR3ggSIQCARJQ3gkSI4qx/oDL5h4yU
N4JEiOL0HyqTf8hIeSNIhAAAElHeCBIhAIBElDeCRIjirH+gMvmHjJQ3gkSI
4vQfKpN/yEh5I0iEAAASUd4IEiEAgESUN4JEiOKsf6Ay+YeMlDeCRIji9B8q
k3/ISHkjSIQAABJR3ggSIQCARJQ3gkSI4qx/oDL5h4yUN4JEiOL0HyqTf8hI
eSNIhAAAElHeCBIhAIBElDeCRIjirH+gMvmHjJQ3gkSI4vQfKpN/yEh5I0iE
AAASUd4IEiEAgESUN4JEiOKsf6Ay+YeMlDeCRIji9B8qk3/ISHkjSIQAABJR
3ggSIQCARJQ3gkSI4qx/oDL5h4yUN4JEiOL0HyqTf8hIeSNIhAAAElHeCBIh
AIBElDeCRIjirH+gMvmHjJQ3gkSI4vQfKpN/yEh5I0iEAAASUd4IEiEAgESU
N4JEiOKsf6Ay+YeMlDeCRIji9B8qk39Y6Xq9nk6nm62pbToej23T4XBo+4w3
fX5+tjv7pjZeuekh5Y0gEQIAWNC7evs6b029/PcC38bn83k4BbhcLu1R7etk
vLxpDeWNIBECAFjQKn3r9l+3WtP52/ie4c389qjxG/ttPJwaLGxaQ3kjSIQo
zvoHKpN/eMq8NR2Px3tv3R8Oh37W0LVxu+fhptcOA54iQhSn/1CZ/MNT5q2p
L93p6//b13Grn+883LOw6bXDgKeIEADAGjd7+/ArgH4iMJwC6P/slggBAKxx
s7eP1//0U4CFnR9uWnkYN/371vcxNl4YD3nbyfEYG//yuP9xP8djbPyb43/y
bxwel3Jv/c/Nfaz/Z7dEiOJq/giDTv7hKfPWdDqdxtf/6RfzHDaNL/IzvjTo
wqbXDgOeIkIAAGvcvP7/8AFeffHPUOz7pvFF/of3/Bc2vXYY8BQRAgBYcHOx
/bB1fP2fyVqg3u37h/yu37TmeF7+u8CXCFGe9Q9UJv+QkfJGkAhRnP5DZfIP
GSlvBIkQAEAiyhtBIgQAkIjyRpAIUZz1D1Qm/5CR8kaQCFGc/kNl8g8ZKW8E
iRAAQCLKG0EiBACQiPJGkAhRnPUPVCb/kJHyRpAIUZz+Q2XyDxkpbwSJEABA
IsobQSIEAJCI8kaQCFGc9Q9UJv+QkfJGkAhRnP5DZfIPGSlvBIkQAEAiyhtB
IgQAkIjyRpAIUZz1D1Qm/5CR8kaQCFGc/kNl8g8ZKW8EiRAAQCLKG0EiBACQ
iPJGkAhRnPUPVCb/kJHyRpAIUZz+Q2XyDxkpbwSJEABAIsobQSIEAJCI8kaQ
CFGc9Q9UJv+QkfJGkAhRnP5DZfIPGSlvBIkQAEAiyhtBIgQAkIjyRpAIUZz1
D1Qm/5CR8kaQCFGc/kNl8g8ZKW8EiRAAQCLKG0EiBACQiPJGkAhRnPUPVCb/
kJHyRpAIUZz+Q2XyDxkpbwSJEABAIsobQSIEAJCI8kaQCFGc9Q9UJv+QkfJG
kAhRnP5DZfIPGSlvBIkQAEAiyhtBIgQAkIjyRpAIUZz1D1Qm/5CR8kaQCFGc
/kNl8g8ZKW8EiRAAQCLKG0EiBACQiPJGkAhRnPUPVCb/kJHyRpAIUZz+Q2Xy
DxkpbwSJEABAIsobQSIEAJCI8sZ6H8/Y+mDhl1j/QGXyDxnpaQR58ac4U4DK
5B8y0v8BAKAO/R8AAOrQ/wnyy1+KMwWoTP4hI/2fIC/+FGcKUJn8Q0b6PwAA
vNX1ej2dTvPi3e8cOxwODzc1n5+f7Y/9zjZ+6mD0fwAAeJ/e1dvXefE+Ho/t
1ODmoxY2XS6X9oTt62S8kv5PkF/+UpwpQGXyD2ucTqfe5H+q/7cnHL/n38bt
nvXHo/8T5MWf4kwBKpN/eMq8eB8Oh3slf/2mNh4vDXrhMAAAgB93s/9fLpfj
8Thfyb+waf48T1V6/R8AAH7BzfU/5/O5v5nfV/IPPX9hk/7Ptvzyl+JMASqT
f3jKw+Lde/7DTfH+f9O/b30fY+OF8ZC3nRyPsfEvj/sU2M/xGBv/5lj+jePj
Uta09IV9hk3B9f8AAMAvmHf7yf/w7Qv+H26aXP/nfD4/df0fAADgF/zU+v/+
hv/4+v/3rhQEAAD8spuL7fum/rnANz/Jd2HT1/9rf9/01Id/AQAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAkNH8k++gGrOAP+lng22aAMRNPnXucDj0z5Uetk4+
V27Q7v/B12Ev6fym87dnN72bWUBQhWCbJgBx89fS6/XafkycTqe+tZ0R3Hxg
O03Q/8mrJXx+btvu6cnfhFlA3J8PtmkCEHfvtbTf374u/DS599h2BtHPDpo2
aH8cP7CdUPTTivHTjp/q3j7ws1qGL5fL8Mc2Hnekezlsf2x79k2TeI8FZ8HC
brDsrcEeP8NrwR4zTQA2cfOVub0I97f929b+E2GyQ/9Jce9Vvb2MD6/DbdD+
OIz7A4dvMfyQGp5qYR/4cS2cQ9jGHanHvm8aj7++szoUlfP5PMR7/swvz4Ll
3eCh9wW77T/s9kKw58dpmgD8vvkrc3v9HFaK9q2T91X6S+7Nx957zm74kTR8
o+HVfnjIwj7w4/rbj5M3SL/+W0u+/rt8op8UDw9/xyxY3g0eel+wJ8m8d/+9
YE+YJgCb+Lhl8ko7FP5uOB2499J9+tb2mfwGue0/vmf8I2Y8uLcPvEM71W0Z
m/zXyHkOhykwCeQ7ZsHybrDGm4Ld9r+5NGhlsCdME4BNTF4t2+tnf8to+P+/
/f6h84/PBRZeadsPnfkC0fn+N/v/8hHCD+rL2HpTGr+RePO8eNg0foZ3zILl
3eCh9wV7/f1r+v+XaQKwhZuvlsO7KMPWofaP1wI9fKXtZxPDbxMmbxzdfOtp
YR/4WQtroRdSt77/dy/MguXdYNlbg33v/f+Vwb7HNAH4TSv7/9f3K21/o2b5
sQvfwvp/9qNXhfFa6N6Uep24t8j56/n+P9nNwmbe6t3B/tn1//eOwTQBeKv5
K/P1+/r/4///281Xky78gHh4SYf+I2n+q4SFfeCnzDtS1+PX34ocX1dkfDmU
9TXp5VmwvBvc8wvBHp9NvBDsCdMEYBOThaCH78//vflKO//V6sIPiKPr/7Nj
k6ugjA0lZMjhx/enYNxbmfymWbCwG9zzC8EeP8NrwR4zTQAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABg4nq9Hg6H
j4+PNu5fN7HhtwYAgN36/Pw8Ho8f31pvP51OrcBHnrA9z+Vy+ZmDe1L7i2zy
fQEAIIXW9ltn7nW91f42OJ/P7SwgUuA3fOO9HflW3xoAAHbu8/PzZmE+fxvv
03810MbDPv0coW9qZxD9Vwbtno+Rr9m5wPBs/SHD1slu4z+Ov1G/pz2wnbYM
R9XGw6O6fs+9b73mLwIAAH9Pq7vjJjzXO/Pw24Hx7wXGbbmdLIwX3oyL93g8
frahjc93mz/DZElSP+x+Tz8XGJ8CPPzW6/8iAADwl7QavPx297A0qGvjoR6P
F/mP38n/ul/CJ8/WOvnK/r+8GKn3+ae+9cq/CAAA/CUPu27bYXyCsHLFzr3x
5HTjhWdbOM6Hh/HCtwYAgL/k4fv/8zIc6f/xZxv0/6TcVxAN/9fgx781AAD8
JQ/X/8/fsb+50ubrpf7/8vv/p9Op9f/rt8k+63/1sOYvAgAAf0m/7s38VwCt
Xff/Ubu8bH78kBfW/7fvMu7tw2H0iwjdfIab94z3f239/8KTAwDAXzK52v/k
+v/jy+b0k4Xh9wUv9P/+QWO950+u/9Pu71ccbVv7h5HdfIZuOIy2c3/O4Sxm
cmGf8bd+4S8CAAB/z/Ln/967bP4L/f/r/vX/h9o/XI3/3jN8/f/d+/HRDr9K
6I/tD195/X/9HwAA3mFyGc/xInwAAOCP6Yt8hs/tevi/jwEAgLz6Z/X2RTht
sPypXgAAAAAAAAAAAAAAAAAAAAAAAADF/Q+xwmAMDQplbmRzdHJlYW0NCmVu
ZG9iag0KNjcgMCBvYmoNCjw8L1R5cGUvUGFnZS9QYXJlbnQgMiAwIFIvUmVz
b3VyY2VzPDwvRXh0R1N0YXRlPDwvR1M1IDUgMCBSL0dTMTAgMTAgMCBSPj4v
WE9iamVjdDw8L0ltYWdlMTkgMTkgMCBSL0ltYWdlNjkgNjkgMCBSPj4vRm9u
dDw8L0YxIDggMCBSL0YyIDE1IDAgUi9GNSAzNSAwIFI+Pi9Qcm9jU2V0Wy9Q
REYvVGV4dC9JbWFnZUIvSW1hZ2VDL0ltYWdlSV0gPj4vTWVkaWFCb3hbIDAg
MCA5NjAgNTQwXSAvQ29udGVudHMgNjggMCBSL0dyb3VwPDwvVHlwZS9Hcm91
cC9TL1RyYW5zcGFyZW5jeS9DUy9EZXZpY2VSR0I+Pi9UYWJzL1MvU3RydWN0
UGFyZW50cyAxNT4+DQplbmRvYmoNCjY4IDAgb2JqDQo8PC9GaWx0ZXIvRmxh
dGVEZWNvZGUvTGVuZ3RoIDc0OD4+DQpzdHJlYW0NCnictVbbattAEH0X6B/m
UQp4tfddlRCInTS0NNA2Lg2UPriurJjGjis7kHxS/7I7K0W2EltKcf0yjGdX
O+ecmVlvclqsppPReAX9ywH8DgMKlFBKGefUQKopKEmhyMLg6xHMwyC5uFKQ
L8OAQV5vpppRoRq7J0dh8CkM4NydmjzPYYUhRgEzhCswmjhXYWCdxgfd6dVC
44PxzMF4NxvlGUvh7A6e0kBytRjN4fg4uRy8OwOafBjNc4iyee/LVXxyAv2z
kqBHzKSgmOElw/7QHf+WQUqMSzmcIFWPBCRPiROFcZI6GMMZ8s+9JIx6TShc
hMG36E/cEzyCWNpoEAsW3cUsjRZoHt2KjoqY62ga90yUY/AGzSruceu+6THL
Io4Rimbt4RJV0XXMBC0/vkXjvTlueIi/w/B9GJwPW5TvqC4l1mrPtvDVVUKg
4rhRPxVos7LPJGd7Sc5BcCIaiitOrAJpFRGiFJxQacrWKz0v+OdseR87QVbO
LLfIAMnHGiNfw+JCYZchOC4lk6DT1KWUSHkNDoOIplqoPtroQt3WhWLPLmSW
UN5sQyaIBekWmGnR5DSWLPrpuspUduo6x3UKurm3EOt0M+pakMkoi50pJs5X
le8sr7aMM9z+ZqvEDdryQLSFkUS3tcI10va45xVJJDVA2HcYvfVz5t3CcWe1
Ip2U1KEolU2+m9KNRzhCyEvAq6MsVBn2VF3URD/Wv5flDh/2gYdalfG9F6Dc
MK1lqcVSanNtlnXrog+kC7eW8DZdxgtP5d5Dp7UOEw+/rLCXq2x/H5jRbj7m
UHy0JtK+lg/bzaez/NWs3vjjZiMsZPGrm7g9FHEpSdtN1eDNd/P+56uqk3G6
F2O1jbFMcZg5d2+E3ZSPKbXmpBMe2/cJswWfcX+xnfhw7nH6q8o8NpXcsyUk
JbobAfzfnIqw7pwb/w3eLKpL8aktL/EW7Xe3FdvvHdQySZS5B9prR0nUo7RE
Zmk5I1nJ7CWJv2aKfxwNCmVuZHN0cmVhbQ0KZW5kb2JqDQo2OSAwIG9iag0K
PDwvVHlwZS9YT2JqZWN0L1N1YnR5cGUvSW1hZ2UvV2lkdGggMTAyNC9IZWln
aHQgNzY4L0NvbG9yU3BhY2UvRGV2aWNlUkdCL0JpdHNQZXJDb21wb25lbnQg
OC9JbnRlcnBvbGF0ZSBmYWxzZS9GaWx0ZXIvRmxhdGVEZWNvZGUvTGVuZ3Ro
IDEyODEwPj4NCnN0cmVhbQ0KeJzs3dFx6kqXBlBnQigKhVAUCieNeeJ5XiYF
nicKpstd1ugXQogNtlDvteqWqy/CuI2/Q39Isny9AgAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAwI59fX1tPQX+nx/He+3o+fyzqe7oOQGADX39p8Ph0HVd3/e/+hVPp9Ps
pnL7mhW8zHDlF3pmXqv0357d9Jc+doaxH8efpWWN8hXLow3/Uo7H4+VyefEx
w9O7971/3Ref5ZPe+JyPfcK3BgANuF06S6UpLbF0m9/7iqU7zW6q5erhI9z7
9Nsv9My81irPzG0jLbf83jP2rM+cYbj//01aHirPXvmK5/P5+v1vpAzKP5Py
4PWWsPD0Fvp/fDZv8q7nfMEnfJsAsFPLLaL0nFJ7ymo+7PAc7lCbT91UbykN
c7jnvX229ZEXCup4PrMPOOzxq5NZmOHst1buX24f77Yd31I+Djt4y+De3t3y
Vcatr4wn1freUzF+0mYf/y3TezjD8PRmv8fJPe89eLj/vzEtC9O7zfPtN3t7
++SQyrNP7GR6s3N49vlceJ4nu+VrnB5+oeudn/XkCw3/e/ucr/l2nsrevW9z
fOP4Aet49vFXvmoBQEvuleTadspCWdbEoXwevw2fOD7/oa6ttXOOx7Nfsd5h
cnv9lGE+Cw84nvPyDGcnMDnBqYyHFlQfrY7ryR6zj1DvOewKnpT/5ZkP3WP8
dd8+vYUZvji94UGGe45nUtvU8HXv/dTWW5mWlV93+W4L5/OMn/l7lh/83hM7
nt7tHALP58LzPHkbOH6TuJCKez/re/1/YVPsKVr/bU7mMH7Aw/eZjZPHX/+q
BQAtuV1G64kNsyeKD+8Lrj/FbNg0KUgLZ5vUrzjZ2zbsXx3ms/CACw1nMsPZ
+0zaxfgLre+odd/p7Z7/hzMfnrS6Y/+XprcwwxenNzzIbFOa3F6rY2Dyg/Vp
WfN1l++20P3Kl3u4R3rlg0+e2Ml4MofA87n8PA8HUyb/QhdSce9nHej/sado
1pr+P3nA28df/6oFAC35mrOw8218lH9y++SsldnzJYZPnJxQMRS88ePfe8Dl
bnBvhuOHutdV6uGD4YDCslLUy+fevlFaP/N7B1/eMr17M3xxetW9Pnz74A9/
HMvCaZn9uuHprZn8+gdf6P/hxxx/yqzhDvXZm/zzXEjFws96zTd1ff7HtPDd
Ld9hzRzG/7v+VQsAWjJZFi/fv9g4PoumHjqvp8iOi8TterpQOWa/4tDixm1k
/Pj3HnDyyCtnODbs97vd41cf7evRScj15JNasCd7R9fP/N4MX5/ewgxfn97C
ptvbH/443pWWNV83ML3hqwfOSF/zxK6c3voJL38j1/vvClem4t4XWvhGnv0x
rfkuZu+wZg7j/134rgGgYbPr3bBfrpTP0hMu3yb3n3zi+v1mwycORe7wn7+w
+fABx196/QzHhgsczf5u6fXnfdC94yDLpw2vnPnCDF+c3vIMX5/e9X4fnty+
/qjNwyk9TMuarxue3prz/9c/+Pr+H5jw8jcynHU/eeSFVLxx/3/sKZr1lv5v
bz8AOS33/8nW8W9cTjbdO0l4+SuW9bfu0L7duvCAC6v8wgzHhvOBlwvAvSdn
cjr6pE2tnPnCDF+Z3sMZvj69hQf5pfP/q/VpiZ3/vzCN28Jcja+Uu/7B1/f/
3zj/v+75vz3//14qFs7/H56Q8b+72zk8+2N6+F3cu8Oz/X/9qxYAtOR2Gb18
X/+/loShRpYb66U/hhZ0W7wPoyt7LFzBY/yJt6ciDFsXHnCyN3vlDCcO39cD
Wfjd2NkL7NxW6+HOw9ddmPlTO9gD01szw7dMb9yHT3eu/1PvE/vl5dk5LKRl
4euO0/LK9CZX+z/fXP9//YNP3tQMj3A7h8CEH/7Uhv+9d/2fSSru/ay7nwtV
XX4uSzv7TV3X/Zg26f/rX7UAoCWTc19r7RwW5bqD7mv0105rB7ve7yr1cRYu
pTj+xNtfuBtvvfeAddWun/jUDMdmT90fHu3rzgn2C+eB3Nbg25mvLzmx6a2c
4evTGz9I98vX/x/GK9Mye+xj+MRXpnd69Pd/Vz74+H/H05udw7MT/rrvcHN9
y3HdXfj3O/uzHmr/4eeEotlv6rrux7RJ/1/+rgEAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMig7/vD4fD1
9VU+ns/n8abT6TRsKuNf3QQAAPy24/FY+v/lcinj8rHruqGWl/cCwzuC8fg3
NgEAAH9gshO+vAUotbyOy1uD8dYyLrf80iYAAODvjft/GdTjAn+wCQAA+Hv9
tzr++vqabB1uefsmAADgj51Op67rhv/V/wEAoFV930/Oxv+0/v91x79v9T7G
xrNjOTHOOR5eYz9kPsbGfzP2mm/84jiDy+VSrwI0uf3Tzv93sICwVP+iYSD5
5CT58FDXdbPX4Zxcrmd8gODtm9bQ/wmzFpCT5JOT5MOySScfq/vnx5frH/be
v33TGvo/AAC8aPaM+qGW15Y++6eB375pzVSf/e4AAICd0v8JcyyYnCSfnCQf
mqH/E2YtICfJJyfJh2bo/wAAkIf+DwAAeej/hDkWTE6ST06SD83Q/wmzFpCT
5JOT5EMz9H8AAMhD/wcAgDz0f8IcCyYnyScnyYdm6P+EWQvISfLJSfKhGfo/
AADkof8DAEAe+j9hjgWTk+STk+RDM/R/wqwF5CT55CT50Az9HwAA8tD/AQAg
D/2fMMeCyUnyyUnyoRn6P2HWAnKSfHKSfGiG/g8AAHno/wAAkIf+T5hjweQk
+eQk+dAM/Z8wawE5ST45ST40Q/8HAIA89H8AAMhD/yfMsWByknxyknxohv5P
mLWAnCSfnCQfmqH/AwBAHvo/AADkof8T5lgwOUk+OUk+NEP/J8xaQE6ST06S
D83Q/wEAIA/9HwAA8tD/CXMsmJwkn5wkH5qh/xNmLSAnyScnyYdm6P8AAJCH
/g8AAHno/4Q5FkxOkk9Okg/N0P8JsxaQk5dNcvKaD82wkAGs9/Vj64kAQJBV
DGClr/+09XQAIMISRphjwSSk/JOW13xohlWMMGsBOXnZJCev+dAMCxkAAOSh
/wMAQB76P2GOBZOT5JOT5EMz9H/CrAXkJPnkJPnQDP0fAADy0P8BACAP/Z8w
x4LJSfLJSfKhGfo/YdYCcpJ8cpJ8aIb+DwAAeej/AACQh/5PmGPB5CT55CT5
0Az9nzBrATlJPjlJPjx0uVyOx+Nsuz6fz13XlU3lYxmPN51Op8PhUDaVj2X8
+qaH9H8AAHhRLeTl4227LjeW9wXl3cH15z3C0NjLe4HyWfUdwXgc3rSG/g8A
AC8aGv5tuy79vG6qyrjcMnzWeO99fafwyqY19H/CHAsmJ8knJ8mHlZ7q/2/f
FJshrGQtICfJJyfJh5Vmz//pum72/J/bOw+3xDbFZggAAMTMtuv6e8HV+Fwd
/R8AAHbt4f7/Mt58//+sf9/qfYyNZ8f/fnzIfIyNjY2Nf2/878eHzMd4d+M8
nP9PwxL+i4ar5JOV5MNKr1z/p+/7exf5WbkpNkMAACDmqd//re8FxlfyH94p
xDbFZggAADxl9oz6YWtt6fXP9U7+VtfbN62Z6nPfG/xwLJicJJ+cJB+aof8T
Zi0gJ8knJ8mHZuj/AACQh/4PAAB56P+EORZMTpJPTpIPzdD/CbMWkJPkk5Pk
QzP0fwAAyEP/BwCAPPR/whwLJifJJyfJh2bo/4RZC8hJ8slJ8qEZ+j8AAOSh
/wMAQB76P2GOBZOT5JOT5EMz9H/CrAXkJPnkJPnQDP0fAADy0P8BACAP/Z8w
x4LJSfLJSfKhGfo/YdYCcpJ8cpJ8aIb+DwAAeej/AACQh/5PmGPB5CT55CT5
0Az9nzBrATlJPjlJPjRD/wcAgDz0fwAAyEP/J8yxYHKSfHKSfGiG/k+YtYCc
JJ+cJB+aof8DAEAe+j8AAOSh/xPmWDA5ST45ST40Q/8nzFpATpJPTpIPzdD/
AQAgD/0fAADy0P8JcyyYnCSfnCQfmqH/E2YtICfJJyfJh2bo/wAAkIf+DwAA
eej/hDkWTE6ST06SD83Q/wmzFpCT5JOT5EMz9H8AAMhD/wcAgDz0f8IcCyYn
yScnyYdm6P+EWQvISfLJSfKhGfo/AADkof8DAEAe+j9hjgWTk+STk+RDM/R/
wqwF5CT55CT50Az9HwAA8tD/AQAgD/2fMMeCyUnyyUnyoRn6P2HWAnKSfHKS
fGiG/g8AAHno/wAAkIf+T5hjweQk+eQk+dAM/Z8wawE5ST45ST40Q/8HAIDX
XS6X4/E4267Lpq7ryqbD4VDuM950Op3KjXVTGb++6SH9HwAAXlQLefl4265r
+a8tvYz7vh/eApzP5/JZ5eNkHN60hv5PmGPB5CT55CT5sKxU+tLtr3Ptuv82
vmXYY18+a7z3voyHtwaxTWvo/4RZC8hJ8slJ8mGl23bddd29/fOHw6G+a6jK
uNzyyqbYDAEAgJjbdl3Pz6nn/5eP4+p+e+fhltim2AwBAICY2XI+HAKobwSG
twD6P/viWDA5ST45ST6sNFvOx+f/1LcAC3d+ZdPKGc76963ex9h4dvzvx4fM
x9jY2Nj498b/fnzIfIx3N87j3vk/s/dx/j8AAOzabbs+Ho/j6//UK3YOm8ZX
8hlfGjS2KTZDAAAgZvb6/8Nf6aon/wztvW4aX8l/2LEf2xSbIayU8IgeXCWf
rCQfls2eUT9sHV//Z3IuUC3w9S/5vmXTmqk+973BD2sBOUk+OUk+NEP/BwCA
PPR/AADIQ/8nzLFgcpJ8cpJ8aIb+T5i1gJwkn5wkH5qh/wMAQB76PwAA5KH/
E+ZYMDlJPjlJPjRD/yfMWkBOkk9Okg/N0P8BACAP/R8AAPLQ/wlzLJicJJ+c
JB+aof8TZi0gJ8knJ8mHZuj/AACQh/4PAAB56P+EORZMTpJPTpIPzdD/CbMW
kJPkk5PkQzP0fwAAyEP/BwCAPPR/whwLJifJJyfJh2bo/4RZC8hJ8slJ8qEZ
+j8AAOSh/wMAQB76P2GOBZOT5JOT5EMz9H/CrAXkJPnkJPnQDP0fAADy0P8B
ACAP/Z8wx4LJSfLJSfKhGfo/YdYCcpJ8cpJ8aIb+DwAAeej/AACQh/5PmGPB
5CT55CT50Az9nzBrATlJPjlJPjRD/wcAgDz0fwAAyEP/J8yxYHKSfHKSfGiG
/k+YtYCcJJ+cJB+aof8DAEAe+j8AAOSh/xPmWDA5ST45ST40Q/8nzFpATpJP
TpIPzdD/AQAgD/0fAADy0P8JcyyYnCSfnCQfmqH/E2YtICfJJyfJh2bo/wAA
kIf+DwAAeej/hDkWTE6ST06SD83Q/wmzFpCT5JOT5EMz9H8AAMhD/wcAgDz0
f8IcCyYnyScnyYdm6P+EWQvISfLJSfKhGfo/AADkof8DAMDrLpfL8Xhcbten
02lyh3LL4XAoN5aPZfz6pof0f8IcCyYnyScnyYdltZDf1vux8gahlvbhlvP5
XG4pHyfj8KY19H/CrAXkJPnkJPmw7Hg8lnp/XWzXXdeVoj6+Q/ms8d77Mi63
vLJpDf0fAADe5V677vu+lvbxHQ6HQ33XUNUDBK9semWGAADAs2bb9fl87rru
9g63dx5uiW0KzxDWcCyYnCSfnCQfVrpt13X//LDHXv9nv6wF5CT55CT5sNJt
uz4ej33fz95hq/4/69+3eh9jY2NjY2NjY2PjV8Z5zJbzW/UdgfP/AQBg1x62
64Xr/5Q3Bfcu8rNy01tmCPckfEcPV8knK8mHlZ7q/3XX/fhK/sOO/dimt8wQ
7rEWkJPkk5Pkw7LZk3zu3XP8v7XA17/kO/kzXrFNa6b61P0BAID90v8BACAP
/Z8wx4LJSfLJSfKhGfo/YdYCcpJ8cpJ8aIb+DwAAeej/AACQh/5PmGPB5CT5
5CT50Az9nzBrATlJPjlJPjRD/wcAgDz0fwAAyEP/J8yxYHKSfHKSfGiG/k+Y
tYCcJJ+cJB+aof8DAEAe+j8AAOSh/xPmWDA5ST45ST40Q/8nzFpATpJPTpIP
zdD/AQAgD/0fAADy0P8JcyyYnCSfnCQfmqH/E2YtICfJJyfJh2bo/wAAkIf+
DwAAeej/hDkWTE6ST06SD83Q/wmzFpCT5JOT5EMz9H8AAMhD/wcAgDz0f8Ic
CyYnyScnyYdm6P+EWQvISfLJSfKhGfo/AADkof8DAEAe+j9hjgWTk+STk+RD
M/R/wqwF5CT55CT50Az9HwAA8tD/AQAgD/2fMMeCyUnyyUnyoRn6P2HWAnKS
fHKSfGiG/g8AAHno/wAAkIf+T5hjweQk+eQk+dAM/Z8wawE5ST45ST40Q/8H
AIA89H8AAMhD/yfMsWByknxyknxohv5PmLWAnCSfnCQfmqH/AwBAHvo/AADk
of8T5lgwOUk+OUk+NEP/J8xaQE6ST06SD83Q/wEAIA/9HwAA8tD/CXMsmJwk
n5wkH5qh/xNmLSAnyScnyYdm6P8AAJCH/g8AAHno/4Q5FkxOkk9Okg8PXS6X
4/E42677vj8cDmVT+Xg+n8ebTqfTsKmMX9/0kP5PmLWAnCSfnCQfltVCXj7e
tuvypqD0//Lu4Pr9HqHruqGxl/cCwzuC8Ti8aQ39HwAAXlRKfm34t+16sn++
3K009uGzxlvLuNzyyqY19H8AAHiXh+163P/LoL5reNemt8wQ7nEsmJwkn5wk
H1Z62K77b/fuPNwS2/SWGcI91gJyknxyknxYabldn06nrusW7qz/AwDAjiy0
677vJyfqb9X/Z/37Vu9jbGxsbGxsbGxs/Mo4j9kqXi8NOpz2M3D+P/uS8F80
XCWfrCQfVppt113XzV6ic3Iln/EBgtim8AxhDWsBOUk+OUk+rDR7/f97f6Kr
7rofX8l/2LEf2xSbIQAA8JTZM+oXNg2NvRb42T8NHNu0ZqrBbxIAANgb/Z8w
x4LJSfLJSfKhGfo/YdYCcpJ8cpJ8aIb+DwAAeej/AACQh/5PmGPB5CT55CT5
0Az9nzBrATlJPjlJPjRD/wcAgDz0fwAAyEP/J8yxYHKSfHKSfGiG/k+YtYCc
JJ+cJB+aof8DAEAe+j8AAOSh/xPmWDA5ST45ST40Q/8nzFpATpJPTpIPzdD/
AQAgD/0fAADy0P8JcyyYnCSfnCQfmqH/E2YtICfJJyfJZ1/O5/PxeDx8K3W3
Dsot5fatp7Y9/R8AgGaUhl+qftd1fd+X8eVyKTeWj2Vcbim3l63J3wXo/wAA
tOF0OpV6Xz6+eJ+26f+EORZMTpJPTpLPLnRdV3f4Lyv3Kff89dl8Kv2fMGsB
OUk+OUk+NEP/BwCgMeM9/HVcSu/KowPN0/8BAGhMqfrDGf5lXH/ht/7+73aT
+hT6P2GOBZOT5JOT5LMvQ8W9XC5lPOz2V32vngReYC0gJ8knJ8lnX4aKW6/2
c3t7Zp4EAAAaM5z/czwe+76vN5ZbnP9z1f8BAGjO8Du/pf8PNw6/CJCc/k+Y
Y8HkJPnkJPnQDP2fMGsBOUk+OUk+NEP/BwCAPPR/AAAaM5z/f2vrqW3Pk0CY
Y8HkJPnkJPnsSyn/fd/7a7+z9H/CrAXkJPnkJPnsi4q7wJMDAEBjDoeDnf/3
6P8AADTmfD672v89+j9hjgWTk+STk+SzL4fDYfaXf1Xfq/7PC6wF5CT55CT5
0Az9HwAA8tD/AQBoQ9d1a37tt/51gF+fzafS/wlzLJicJJ+cJJ9dOJ1Oh8Oh
fHzxPm3T/wmzFpCT5JOT5LMX5/O51Pv697/KuB4OKB/LuNxSbi9bk18XSP8H
AKAxpeEfj8fDt1J366Dckrz5V/o/AADkof8T5lgwOUk+OUk+NEP/J8xaQE6S
T06SD83Q/wEAIA/9HwAA8tD/CXMsmJwkn5wkn31Z81fA0tL/CbMWkJPkk5Pk
sy+l4rra5z36PwAAjblcLqfTqf4JgL7vHQ4Y0/8BAGjY+XzuvpV3BN4IXPV/
XuBYMDlJPjlJPnvX9/3Xt/pGYOvpbEn/J8xaQE6ST06Sz07VE4EO38pbgPP5
XN8I/MZbgPK1jsfjbLuucyibysfJl377pof0f4CneNkE+Hylipee33Vdqce3
vwhc/rfc/t6vWAt5+Xi7TNQvV+cwHv/GpjUsZADrff3YeiIALHl4ns/bX8nL
u4z6ywW3j1w2jWdSfzH5lzatYRUjzLFgsvn6T1tPB/6U13z2ZcPf871dIA6H
w3g+ZTwcfXj7ptgMYSVrAQkp/6TlNZ99KZW467rJjeWWP3hfcLtGLNzy9k2x
GQKwwMsmwOebPfmn3HL7puDt9H8AAPhj9yruH1TfXfT/Wf++1fsYG8+O//34
kPkYGxsbG//e+N+PD5mP8e7Gf2xyhnz17HnyMc7/p2Fb/YuGbUk+OUk++1JP
9Tmfz7Unl4/1Opl/8Je/Hl7/p+/7e1fyeX1TbIYAALB3pfDX6//XP5JV3w78
wde9bdd1//z4cv3D3vu3b4rNEAAAeMrsGfXD1trS6zuR2T9G9sZNa6b63PcG
PxwLJifJJyfJh2bo/4RZC8hJ8slJ8qEZ+j8AAI2pf/9r+ZyctDwJAAA0ppT/
vu//4K/97pH+T5hjweQk+eQk+eyLirvAk0OYtYCcJJ+cJJ99efaSmKno/wBP
8bIJ8Pnqxf//5oL/u2MhA1jPr48B7EK9Nr7f/53lSSDMsWCysYKQmdd8aIYl
jDBrAdno/2TmNR+aYQkDWEn/B9iR8/l8PB7riUD1lq7r/FLwVf9nnXtn0Dmt
jmzkHGAXTqdTaf7lYyn8w4t23/flHcGm8/oIVjHChIeWrMyz/k9azv9hX0r5
Hy7+M7xoj98LZOZJIEx4aMbKVu9QF5np/+zL+FX63jgtTwJhwkMb1rd6/R9g
L2b3/5dbyu1bTelzWMIIEx6aYf8/QGNuz/+v5b/csvXUtmcJI0x4aIb+Dw85
/4fdqX8CuL5il+bvzwEPLGGECQ9tcP4PrKH/QzMsYYQJD834pf3//o0A8IEs
T4QJD814qtK//Z4AvN296/z7/d+rCscLhIc2/Mb5P84Uoj3O/2FfZl97Xf+n
sjARJjy04ZdavfJPY/R/9qLrulLyv+aMLwqambWJMOGhDQutfnb5uGflYwLw
B7z2LvDkECY8NGN9Uf+NewLwN4a/BZCcJ4Ew4aEl6/P8G/eEz+f8H3bneDxO
TgQq/9v3/dbz2p7liTDhISfJJyf9n305frtcLtef1+3T6dR1Xb0lOQsZYcJD
TpIP8PkOh8NQ9YfX7fIW4N51QVOxkBEmPOQk+QCfb/xaPVzzs7wjcP3Pq4WM
FwgPOUk+OTn/h30Z7/+fPRaQmSeBMOEhJ8knJ/2ffTkej6fTqY77b9efXwHY
blKfwkJGmPCQk+QDfL7L5TKu+uXtQHn19vu/lYWMMOEhJ8kHYNcsZIQJDzlJ
Pjk5/weaYSEjTHjISfLJSf+nDV7Dr54EXiA85CT5APvlNfzqSeAFwkNOkg+w
X17Dr54EXiA85CT55OT8H9rgNfzqSeAFwkNOkk9O+j9t8Bp+9STwAuEhJ8kH
2C+v4VdPAi8QHnKSfIBP9vXI1hPcnieBMOEhJ8knJ+f/QDMsZIQJDzlJPjnp
/9AMCxlhwkNOkg/ArlnICBMecpJ8AHbNQkaY8JCT5JOT83+gGRYywoSHnCSf
nPR/aIaFjDDhISfJB2DXLGSECQ85ST4Au2YhI0x4yEnyycn5P9AMCxlhwkNO
kk9O+j80w0JGmPCQk+QDsGsWMsKEh5wkH4Bds5ARJjzkJPnk5PwfaIaFjDDh
ISfJJyf9H5phISNMeMhJ8gF41vl87rqurCDlYxmPN51Op8PhUDaVj2X8+qaH
LGSECQ85ST4ATyn9/Hg8Xi6XMi4fy3ho7OW9QCnw9R3BeBzetIaFjDDhISfJ
Jyfn/0BY6ee1/FdlXG6p4/F7gevPO4VXNq1hISNMeMhJ8slJ/4ewhf7/9k1r
WMgIEx5yknwAnnI6nbqumz3/53ZNGW6JbVrDQkaY8JCT5APwrNL5v36Mz9XR
/9kX4SEnyScn5/9A2GT/fxlvvv9/1r9v9T7GxrNjOTHOOR5eYz9kPsbGfzP+
9+ND5mO8u3Fmzv+nGcJDTpIPwFPWX/+n7/t7F/lZuWkNCxlhwkNOkg/AUxZ+
/7e+FxhfyX94pxDbtIaFjDDhISfJJydnccArakuvf6538re63r7pIQsZYcJD
TpJPTvo/NMNCRpjwkJPkA7BrFjLChIecJB+AXbOQESY85CT55OT8H2iGhYww
4SEnyScn/R+aYSEjTHjISfIB2DULGWHCQ06SD8CuWcgIEx5yknxycv4PNMNC
RpjwkJPkk5P+D82wkBEmPMR8sbWtIwDAliwEhAkPMSU5/f/8l/+2+s+/XIDk
LASECQ8x+r/+zx45/weaYSEgTHiI0f/1f/ZI/4dmWAgIEx5i9H/9H4ANWQgI
Ex5i9H/9H4ANWQgIEx5i/vJCN8zaOgLskvN/oBkWAsKEh5gv+//t/2eH9H9o
hoWAMOEhRv/X/wHYkIWAMOEhZquTXhhsHQEAtmQhIEx4yEnyycn5P9AMC9mG
tt0ByJfwEyI55KT/QzMsZBsqT/5/9//rv63+E35iJAeAXbOQbUj/1//ZI8kB
YNcsZBvS//V/9khyyMn5P9AMC9mG9H/9nz2SHHLS/6EZFrIN6f/6P3skOQDs
moVsQ/q//s8eSQ4Au2Yh29BfXeSSu7aOALskOeTk/B9ohoVsQ1/2/9v/zw5J
Djnp/9AMC9mG9H/9nz2SHAB2zUK2If1f/2ePJAeAXbOQbUj/1//ZI8khJ+f/
QDMsZBvS//V/9khyyEn/h2ZYyDak/+v/7JHkALBrFrIN6f/6P3skOQDsmoVs
Q/q//s8eSQ45Of8HmmEh25D+r/+zR5JDTvo/NMNCtiH9X/9njyQHgF2zkG1I
/9f/2SPJAWDXLGQb0v/1f/ZIcsjJ+T/QDAvZhvR//Z89khxy0v+hGRayDen/
+j97JDkA7JqFbEP6v/7PHkkOALtmIduQ/q//s0eSQ07O/4FmWMg2pP/r/+yR
5JCT/g/NsJBtSP/X/9kjyQFg1yxkG9L/9X8+3Ncztp4sAKxizdqQ/q//s0fO
giAnyYdmqEAb0v/1f/ZICyInyYdmqEAb0v/1fwCAP6YCbUj/1/8BAP6YCrQh
/V//Z4+cBUFOkg/NUIE2pP/r/+yRFkROkg/NUIE2pP/r/wAAf0wF2pD+r/8D
ABlcLpeu60r3OBwOx+NxvOl0OpUb66Yyfn3TQyrQhvR//Z89chYEOUk+hNXy
X1t6Gfd9P7wFOJ/PpcCXj5NxeNMaKtCG9H/9nz3SgshJ8iGs/za+ZdhjX94I
jPfel/Hw1iC2aQ0VaEP6v/4PADSv67p7++cPh8Plchn+t4zLLa9sWkMF2pD+
r/8DAM2r5+fU8//Lx3F1v20jwy2xTWv8X3t3d5y8sm0B1JkQCqEQCqGwn28S
xHGfSOK8+3S5a6v6iB+LJUDuXmPULld/CASuPRFTUluoQBvS//V/emQWBDlJ
PoTV2j9N1293AfT/bPR//Z8eaUHkJPkQVipHO/+n7gJMi67vvGbRwtdz0z8/
6n2M3zTW/zfv/5tnwNjY2NjYOMk4s+vr80x13fz/bPT/zfv/1hEAAMZ3OBza
6//UK3ZOi9or+bSXBo0tWkIF2pD+r//TI8eyyEnyIawen6+NvU7+mdp7XdRe
yX86sB9btIQKtCH9X/+nR1oQOUk+rNFe/2c2F6gW+PpNvi9Z9CsVaEP6v/4P
APBhKtCG9H/9HwDgw1SgDen/+j89MguCnCQfhqECbUj/1//pkRZETpIPw1CB
NqT/6/8AAB+mAm1I/9f/AQA+TAXakP6v/9MjsyDISfJhGCrQhvR//Z8eaUHk
JPkwDBVoQ/q//g8A8GEq0Ib0f/0fAODDVKAN6f/6Pz0yC4KcJB+GoQJtSP/X
/+mRFkROkg/DUIE2pP/r/wAAH6YCbUj/1/8BAD5MBdqQ/q//0yOzIMhJ8mEY
KtCG9H/9nx5pQeQk+TAMFWhD+r/+DwDwYSrQhvR//R8A4MNUoA3p//o/PTIL
gpwkH4ahAm1I/9f/6ZEWRE6SD8NQgTb0xda2jgAAwKepQIQJDwBAd1Q4woSH
nMyCICfJh2GocIQJDzlpQeQk+TAMFY4w4QEA6I4KR5jwAAB0R4UjTHjIySwI
cpJ8GIYKR5jwkJMWRE6SD8NQ4QgTHgCA7qhwhAkPAEB3VDjChIeczIIgJ8mH
YahwhAkPOWlB5CT5MAwVjjDhAQDojgpHmPAAAHRHhSNMeMjJLAhyknwYhgpH
mPCQkxZETpIPw1DhCBMeAIDuqHCECQ8AQHdUOMKEh5zMgiAnyYdhqHCECQ85
aUHkJPkwDBWOMOEBAOiOCkeY8AAAdEeFI0x4yMksCHKSfBiGCkeY8JCTFkRO
kg/DUOEIEx4AgO6ocIQJDwBAd1Q4woSHnMyCICfJh2GocIQJDzlpQeQk+TAM
FY4w4QEA6I4KR5jwAAB0R4UjTHjIySwIcpJ8GIYKR5jwkJMWRE6SD8NQ4QgT
HgCA7qhwhAkPAEB3VDjChIeczIIgJ8mHlzidTrMGVW7Z7XblxvKzjNcv+pUK
R5jwkJMWRE6SD+tdLpda2qdbzudzuaX8nI3Di5ZQ4QgTHgCA5fb7fSnqbYM6
HA7t0fsyLresWbSECkeY8AAALHQ8HmtpbxvUbre7XC7TP+sJgjWLllDhCBMe
cjILgpwkH9Y4n8/7/b6O2wZ13aamW2KLllDhCBMectKCyEnyIawen5+O2Ov/
9Et4AAB+dTgcjsfj9M+/0P9v+udHvY+x8c2xnBgbGxsbGxsvHGd2s2zXPQLz
/+mL8JCTzzJyknx4lQfX/yk7Bfcu8rNw0bMvAJ4iPOSkBZGT5MOrtA2qHrpv
r+Q/HdiPLXr2BcBThAcA4FmzBlULfP0m39nXeMUWPfsCYDnhAQDojgpHmPCQ
k1kQ5CT5MAwVjjDhISctiJwkH4ahwhEmPAAA3VHhCBMeAIDuqHCECQ85mQVB
TpIPw1DhCBMectKCyEnyYRgqHGHCAwDQHRWOMOEBAOiOCkeY8JCTWRDkJPkw
DBWOMOEhJy2InCQfhqHCESY8AADdUeEIEx4AgO6ocIQJDzmZBUFOkg/DUOEI
Ex5y0oLISfJhGCocYcIDANAdFY4w4QEA6I4KR5jwkJNZEOQk+TAMFY4w4SEn
LYicJB+GocIRJjwAAN1R4QgTHgCA7qhwhAkPOZkFQU6SD8NQ4QgTHnLSgshJ
8mEYKhxhwgMA0B0VjjDhAQDojgpHmPCQk1kQ5CT5MAwVjjDhISctiJwkH4ah
whEmPAAA3VHhCBMeAIDuqHCECQ85mQVBTpIPw1DhCBMectKCyEnyYRgqHGHC
AwDQHRWOMOEBAOiOCkeY8JCTWRDkJPkwDBWOMOEhJy2InCQfhqHCESY8AADd
UeEIEx4AgO6ocIQJDzmZBUFOkg/DUOEIEx5y0oLISfJhGCocYcIDANAdFY4w
4QEA6I4KR5jwkJNZEOQk+TAMFY4w4SEnLYicJB+GocIRJjwAAN1R4QgTHgCA
7qhwhAkPOZkFQU6SD8NQ4QgTHnLSgshJ8mEYKhxhwgMA0B0VjjDhAQDojgpH
mPCQk1kQ5CT5MAwVjjDhISctiJwkH4ahwhEmPAAA3VHhCBMeAIDuqHCECQ85
mQVBTpIPw1DhCBMectKCyEnyYY3j8bjb7Up3Kj/P53O76HQ6TYvKeP2iX6lw
hAkPAMCvDodD6f+Xy6WMy8/9fj819rIvMO0RtOPwoiVUOMKEBwDgV7Pj82UX
oDT2Oi67Bu3SMi63rFm0hApHmPCQk1kQ5CT58Cpt/y+Del7gVYuWUOEIEx5y
0oLISfLhVY4/6vi6TU23xBYtocIRJjwAAE85nU77/X76p/5PX4QHAGC54/E4
m6i/Vf+/6Z8f9T7GxjfHcmJsbGycZ/zPv/7I6zHubpzc5XKpVwGa3W7+P30R
HnLyWUZOkg9r7Pf7m5fonF3Jpz1BEFu0hApHmPAAAPxqVtdb9dB9eyX/6cB+
bNESKhxhwgMA8Kubk+2nxl4L/M2vBo4tWvJ6Vvw2pCY85GQWBDnZ5sMwvJ0J
Ex5y0v/5+5ZvnxfeczpiucmzA6/lrceM7TZA15Z39YX3nE1a+PCzAy/nfUfL
dhuga8u7+oN73pyrfM/Lnx14N286Ju/4LIDxmP9DzFMbUt5h6wjAX+HtwGT5
dvLZLaqYMRL9n5j/+///fOy/stVdc8+nSvXLn/1N/239/x/+EMWMyZv6vwMv
AAB/h1bG5B39/9kzBQAAvJVKRmt5UX/HPaEL5v+Qk+TDMLQyZpZH4h33hL9P
CyInyYdhKGYAAJCH/g8AAHno/4Q5F0xOkk9Okg/D0P8J81lATpJPTpIPw9D/
AQAgD/0fAADy0P8Jcy6YnCSfnCQfhqH/E+azgJwkn5wkH4ah/wMAQB76PwAA
5KH/E+ZcMDlJPjlJPgxD/yfMZwE5ST45ST4MQ/8HAIA89H8AAMhD/yfMuWBy
knxyknwYhv5PmM8CcpJ8cpJ8GIb+DwAAeej/AACQh/5PmHPB5CT55CT5MAz9
nzCfBeQk+eQk+TAM/R8AAPLQ/wEAIA/9nzDngslJ8slJ8mEY+j9hPgvISfLJ
SfJhGPo/AADkof8DAEAe+j9hzgWTk+STk+TDMPR/wnwWkJPkk5PkwzD0fwAA
yEP/BwCAPPR/wpwLJifJJyfJh2Ho/4T5LCAnyScnyYdh6P8AAJCH/g8AAHno
/4Q5F0xOkk9Okg/D0P8J81lATpJPTpIPw9D/AQAgD/0fAADy0P8Jcy6YnCSf
nCQfhqH/E+azgJwkn5wkH4ah/wMAQB76PwAA5KH/E+ZcMDlJPjlJPgxD/yfM
ZwE5ST45ST4MQ/8HAIC+nE6n3W5Xmnz5WcZPPVb/BwCAjpzP51L7y8/ZeCH9
nzDngslJ8slJ8uHvOBwO7TH/Mi63LH+4/k+YzwJyknxyknz4O3a73eVymf5Z
xuWW5Q/X/wEAoCPXBf6pSq//AwBAR/R/tuJcMDlJPjlJPvwd6/v/Tf/8qPcx
Nr45lhPjnONpG/tHXo+x8WfGtvnGK8e80Mr5/wAAQEdm1/85Ho9PXf8HAADo
SD3g317/vz0dAAAADKbW/vr9v099+RcAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AACf9/X19b6V1y+ze+tTQNi7kyn//H0P8unTAeAv+PpfZeO53++Px+O09HQ6
3XxguX3NZrY8S+yB5Ul9gR0xxx/PLnoH+ecl/k6kW+sbeOwN4t0BsND1hvpy
uZRPjcPhUJeWPYKbDyzb5zUb+Xur/ZVjO6xRgn29S1tuqYH/GPnnVf5IpFvr
Uxp7g3h3ACx0b4NZby8/H3y4PH5sVTbj5/O5npMtuwxl5+K7OenQfkKVdda7
lZ/tM7ZraEV+W/jpS+1BwjJ+NodTkq/9Gv5v+efV3hrpdg2zu91b88L5P8vf
IN4dAK91c1NZZ1F+/3s69fpQTN3qLun/7Yb9eDxOZ3Vnj63PUj/C2vH3v/sg
7UfDE78e3FJyWANWctU2pcc5vJnkmSXh/5Z/Xu19kS73n+5Wuvd0t9rJpyed
rfne6wy8Qbw7AF7ueoNZNq3TxNG6dHbIpW72bz72ep3thMyylZ4WzR5btvyz
p5g+wmZTOm3hWa9Esfal2RyJhTlskzyzJPzf8s+rvS/S057F49vrbsK05nuv
M/AG8e4AeLmvW2ab8anwV9PuwMIKdHPR9e3taeXpBMSDNcAaZQ+3ZGn2B5Lr
c7gk/DcXyT8rvSnS5f43pwZdr/ne5v3esyx8g3h3ALzcbINZNq31CNL097/1
9qnzt/sCr+3/1x6vAcLq7LXal2bHD1fmMNz/5Z81PhPpx7e/r/97dwC81s0N
5nQkZ1o61f52LtCaCjS7/cHVHmzhea0H04nX5zDW/+WfNd4a6XvH/2e3Pzgs
f+9ZFr5BvDsAXm5h///+2Qgfj8d2U/zC/n9viumDNUBAbSntdOLal2qTWZ/D
WP+Xf8LeHem3zv9fssi7A+DlrjeY9fr/7d//VteTS9dUoPYI1ff/HrOqL+De
R4ktPGHXTamqp7fq5LeVOVxYb+Sfl/hApNu9iXvX/6n3+fXU8HfoDeLdAfBy
s0mVu5/v/725GW9P714vvXf7ve1z3aS3K5yu8Pz18JJutvCEzS4k0pqKzcoc
Lqw38s9LfCDS32+7/v/yN4h3BwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB5XC6X3W739fVVxvXnJjZ8agAA+LNO
p9N+v//6UXr74XAoBX7NCst6zufza17ck8ovssnzAgBAF0rbL5251vVS+8vg
eDyWvYA1BX7DA+/llW/11AAA8MedTqebhfn4o71PPTVQxtN96j5CXVT2IOop
g3LLV+P7al9gWlt9yLR0drf2n+0T1VvKA8tuy/Sqynh6VFVvuffUS34RAAAY
T6m7bRO+VjvzdHagPS/QtuWys9BOvGmLdztu1za18eu7Xa9hNiWpvux6S90X
aHcBfn3q5b8IAACMpNTgx4e7p6lBVRlP9bid5N8eyf++X8JnayudfGH/fzwZ
qfb5p5564S8CAAAj+bXrlju0OwgLZ+zcG892NwJre/A6f30ZgacGAICR/Hr8
/7oMr+n/69c2qX+kXGcQTX9r8PKnBgCAkfw6///6iP3NmTbfof4fPv5/OBxK
/7/8mN1n+amHJb8IAACMpF735voUQGnX9S9qH0+bbx8SmP9fnqXt7dPLqBcR
urmGm7e094/N/3+wcgAAGMnsav+z6/+3l82pOwvT+YJA/69fNFZ7/uz6P+X2
esXRsrR+GdnNNVTTyyh3ruuc9mJmF/ZpnzrwiwAAwHgef//vvcvmB/r/9/3r
/0+1f7oa/701fP979L59tdOphPrY+vCF1//X/wEA4B1ml/FsJ+EDAACDqZN8
pu/t+vWvjwEAgH7V7+qtk3DK4PG3egEAAAAAAAAAAAAAAAAAAAAAAABk81/T
m/hODQplbmRzdHJlYW0NCmVuZG9iag0KNzAgMCBvYmoNCjw8L1R5cGUvUGFn
ZS9QYXJlbnQgMiAwIFIvUmVzb3VyY2VzPDwvRXh0R1N0YXRlPDwvR1M1IDUg
MCBSL0dTMTAgMTAgMCBSPj4vWE9iamVjdDw8L0ltYWdlMTkgMTkgMCBSL0lt
YWdlNzIgNzIgMCBSPj4vRm9udDw8L0YxIDggMCBSL0YyIDE1IDAgUi9GNSAz
NSAwIFI+Pi9Qcm9jU2V0Wy9QREYvVGV4dC9JbWFnZUIvSW1hZ2VDL0ltYWdl
SV0gPj4vTWVkaWFCb3hbIDAgMCA5NjAgNTQwXSAvQ29udGVudHMgNzEgMCBS
L0dyb3VwPDwvVHlwZS9Hcm91cC9TL1RyYW5zcGFyZW5jeS9DUy9EZXZpY2VS
R0I+Pi9UYWJzL1MvU3RydWN0UGFyZW50cyAxNj4+DQplbmRvYmoNCjcxIDAg
b2JqDQo8PC9GaWx0ZXIvRmxhdGVEZWNvZGUvTGVuZ3RoIDgxNz4+DQpzdHJl
YW0NCnictVbbbhoxEH1faf/Bj95Ia3y3t4oilSSNUjXqJVStVPWB0GVBDZcu
RG0+qX9Zz+wSICUsEvBihvHYM+fMZd16Xc6H/W5vTto35+RXHHHCGedcSMkd
ySwnRnNS5nH05YSM46h1dWtIMYsjQYonY24FV2bNun8SRx/jiFyGW1vPfXjl
mDNEOCYNcZYF0YBi6QaV4fZ6Y+1AbxTCuB51i1xk5GJCFm5I63baHZPT09bN
+fUF4a133XFBaD5OP98mZ2ekfVEBxIiFVhw8/I+w3QnXvxEkYy647PQBKkZC
tMxYIEVIloUwOiPAXyAlgiMnnFzF0Tf6N0mVpCTRnp4nStBJIjI6heUx7Fha
JtLSYZI6WoByAMs8SaUPZ1LhBZWg4bAsJdjihn5NhOLV4XtYUBqDwZ/kO+m8
jaPLzhbmG7LLmfcW0ZaYXaMUMA6GdpGg1cw+o1zsRbkkSjK1xriRzBuivWFK
VYQzrl1VepWEhH/KZw9JIGQeltkGGkjrw1OMchmWVK6mwyshiM08gDUSam8Z
XK2GgKotPLZShU5uqUK1ZxUKz7hcL0OhmCc6bAi3hZPrREJhpGHtlXkiJO0m
QtPZEMRKX+BKwDBoVa0NlRjscjAu+0E2tZwvD/ZyMH+1kek19Hov9OZF9Mpp
ZrdUxCnn3p01hmcOnxxlmQqqpgBDH2sBxBqk1GJ7yzAuAq8T0N4j0SiWQ+C/
Mitq4zArUDurzs3m+NMF8zs0qc7nzSmyx0pR1bv7psgdL0UNAdL3gVNFK2YH
SCrmq0T2S5TD2EnlIlmVZciIE/T3UyLLWbC0IX2NUP2RRoUS4Qa5BWhvih+f
B0TBoaxwJvRxEEyw+Ql8sn4salLTEW/Gkx0Jj/Q4kHfEI17GU026Qd0pC7O7
5f962g3wulEXclr+bAYu9n16vIjcWqb9rsjleqT7+TeK2Wb/6UFdZru4VNBk
2JJ97L9J3aMgrwzOqjmrBu6vyCsjuLfDtBT7PXE2jkudwRySWrMt3/Mdx6WQ
hy89F15ljfHREb4JRnUFPh6yEITmzDZHQA7r0zDR7PMe0eJMwWW6fFJJ+H8D
n/n2hrr6B6m1xeYNCmVuZHN0cmVhbQ0KZW5kb2JqDQo3MiAwIG9iag0KPDwv
VHlwZS9YT2JqZWN0L1N1YnR5cGUvSW1hZ2UvV2lkdGggMTAyNC9IZWlnaHQg
NzY4L0NvbG9yU3BhY2UvRGV2aWNlUkdCL0JpdHNQZXJDb21wb25lbnQgOC9J
bnRlcnBvbGF0ZSBmYWxzZS9GaWx0ZXIvRmxhdGVEZWNvZGUvTGVuZ3RoIDEy
MTY1Pj4NCnN0cmVhbQ0KeJzs3etx6kqUBlBnQiiEQiiEwkljfpHBpEAoni6r
rNHlIUvbD1B/a9Utly7C0Mb79P5QC/n9HQAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADbs
7e3t2UPg//l1/KwNvZ5/NtQNvSYA8ERv/7Xb7fb7/fF4/NVnPJ1Od3e125d0
8DbChU+0ZlyLHD+s3fWXXnaEtV/Hn1XLEu0Z26ON/1IOh8PlcvnmY5aH9+hn
f3usPsqVfvA1n3qFHw0AOnDbOlukaSmxZZvfe8aWne7uGsLVl4/w6Ntvn2jN
uJZqr8xtIm23/N4rttZrjrCc//+mWr7UXr32jOfz+f3j30jbaP9M2oMPt5SV
hzeT/+uj+SE/9ZrPeIUfEwA2aj5FtJzTYk/r5uMBz/EOQ/IZdg23tIQ53vPR
MdvhkWcC6nQ8dx9wPOI3DGZmhHd/tHb/dvv0sO30lvZ1PMDbNh4d3W3PMk19
bfsqWj96KaYv2t3H/5HhfTnC8vDu/oxX93z04OX8/4PVMjO823q+/WFvb79a
Uln7wl4N7+4Y1r6eM6/z1WH5oZy+fKL3B7/rqyca//f2NV/y46yqvUc/5vTG
6QMO23cff+GsBQA9eRSSh7TTGmXriWP4PHwYv3F6/sPQW4fMOd2++4zDHa5u
H75lHM/MA07HPD/CuwO4OsGpbY8paHi0YXs42ePuIwz3HA8FX4X/+ZGP2WP6
vD8+vJkRfnN444OM95yOZEhT4/M++q0tt7BaFj7v/N1mzueZvvKPzD/4oxd2
OrzbMRRez5nX+ept4PRN4kxVPPpdP8r/M7tqL9HyH/NqDNMH3H2c2Xj1+Mtn
LQDoyW0bHU5suHui+Pi+4P0zmI27rgLSzNkmwzNeHW0bj6+O45l5wJmEczXC
u/e5ShfTJ1qeUYdjp7dH/r8c+fiiDQf2f2l4MyP85vDGB7mblK5uH6JjYfCj
5dWy5Hnn7zaT/drTfXlEeuGDX72wV9tXYyi8nvOv87iYcvUvdKYqHv2uC/m/
9hLdtST/Xz3g7eMvn7UAoCdv98wcfJuu8l/dfnXWyt3zJcZvvDqhYgx408d/
9IDz2eDRCKcP9SirDMsH44LCvBbU2/fevlFaPvJHiy8/MrxHI/zm8AaP8vDt
g3/565hXrpa7z1se3pLBL3/wmfxffszpt9w13mF49a7+ec5UxczveskP9b7+
1zTz083fYckYpv+7fNYCgJ5ctcXLxwcbp2fRDEvnwymy0yBx209nIsfdZxxT
3DSNTB//0QNePfLCEU6Nx/1uj/gNj/b21UnIw8knQ8C+Ojq6fOSPRvj94c2M
8PvDm9l1e/uXv46fqpYlz1sY3vjshTPSl7ywC4e3fMDzP8j743eFC6vi0RPN
/CBrf01Lfoq7d1gyhun/zvzUANCxu/1uPC7XwmfLCZcPV/e/+sblx83GbxyD
3O6/H9j88gGnT718hFPjBY7ufrb0/fN90KN1kPnThheOfGaE3xze/Ai/P7z3
x3n46vblqzZfDunLalnyvOXhLTn/f/mDL8//hQHP/yDjWfdXjzxTFT94/L/2
Et31I/nf0X4AMs3n/6u9009cXu16dJLw/DO2/jsc0L7dO/OAM11+ZoRT4/nA
8wHg0YtzdTr6VZpaOPKZEX5neF+O8PvDm3mQXzr/f7C8Wmrn/88M4zYwD6ZX
yl3+4Mvz/2+c/z8c+b89//9RVcyc/z++INN/d7djWPtr+vKneHSHtfl/+awF
AD25baOXj+v/DyFhjJHtxuHSH2MKug3eu8mVPWau4DH9xttTEca9Mw94dTR7
4Qiv7D6uBzLz2di7F9i5jdbjncfnnRn5qgPsheEtGeGPDG+ah08Prv8z3Kf2
4eW7Y5iplpnnnVbLd4Z3dbX/8831/5c/+NWbmvERbsdQGPCXv7Xxfx9d/+eq
Kh79rvefF6q6fF6W9u4P9b7s1/SU/L981gKAnlyd+zrEzrEpDwfo3iZ/7XTI
YO+Ps8rwODOXUpx+4+0H7qZ7Hz3g0LWHb1w1wqm7p+6Pj/b24AT7mfNAbmPw
7ciXh5za8BaO8PvDmz7I/pev/z9uL6yWu2sf4zd+Z3inr/7+78IHn/7vdHh3
x7B2wG+P7W6ubzmNuzP/fu/+rsfYv/s8oejuD/W+7Nf0lPw//1MDAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AACQ4Hg87na7t7e39vV0Ok13tf/9s10AAMBvOxwOLf9fLpe23b7u9/sxlp/P
55bS29er7d/YBQAA/IGrBN7eArRYPmy3twbTQ/Rtu93yS7sAAIC/N83/bWNY
F/iDXQAAwB9rgXx6iP7t7e3qDuMtP74LAAD4S28fpifkyP8AANCxFz/+//bA
vw/DfWzbvrutTmxnbo9z7IuMx7btv9k259v+5naaVz7/32IBZbH/ogmn8smk
8mHe1UX4Z67/czweH13J5/u7lpD/KdMLyKTyyaTyYd7M9f+H9wLTy/WPR+9/
fNcS8j8AAHxfewsw/k3eqz8HMKT0v9n1JfkfAAByyP+UWQsmk8onk8qHbsj/
lOkFZFL5ZFL50A35HwAAcsj/AACQQ/6nzFowmVQ+mVQ+dEP+p0wvIJPKJ5PK
h27I/wAAkEP+BwCAHPI/ZdaCyaTyyaTyoRvyP2V6AZlUPplUPnRD/gcAgBzy
PwAA5JD/KbMWTCaVTyaVD92Q/ynTC8ik8smk8qEb8j8AAOSQ/wEAIIf8T5m1
YDKpfDKpfOiG/E+ZXkAmlU8mlQ/dkP8BACCH/A8AADnkf8qsBZNJ5ZNJ5UM3
5H/K9AIyqXwyqXzohvwPAAA55H8AAMgh/1NmLZhMKp9MKh+6If9TpheQSeWT
SeVDN+R/AADIIf8DAEAO+Z8ya8FkUvlkUvnQDfmfMr2ATCqfTCofuiH/AwBA
DvkfAAByyP+UWQsmk8onk8qHbsj/lOkFZFL5ZFL50A35HwAAcsj/AACQQ/6n
zFowmVQ+mVQ+dEP+p0wvIJPKJ5PKh27I/wAAkEP+BwCAHPI/ZdaCyaTyyaTy
oRvyP2V6AZlUPplUPnRD/gcAgBzyPwAA5JD/KbMWTCaVTyaVD92Q/ynTC8ik
8smk8qEb8j8AAOSQ/wEAIIf8T5m1YDKpfDKpfOiG/E+ZXkAmlU8mlQ/dkP8B
ACCH/A8AADnkf8qsBZNJ5ZNJ5UM35H/K9AIyqXwyqXzohvwPAAA55H8AAMgh
/1NmLZhMKp9MKh+6If9TpheQSeWTSeVDN+R/AADIIf8DAEAO+Z8ya8FkUvlk
UvnQDfmfMr2ATCqfTCofuiH/AwBADvkfAAByyP+UWQsmk8onk8qHbsj/lOkF
ZFL5ZFL50A35HwAAcsj/AACQQ/6nzFowmVQ+mVQ+dEP+p0wvIJPKJ5PKh27I
/wAAkEP+BwCAHPI/ZdaCyaTyyaTyoRvyP2V6AZlUPplUPnRD/gcAgBzyPwAA
5JD/KbMWTCaVTyaVD92Q/ynTC8ik8smk8qEb8j8AAOSQ/wEAIIf8T5m1YDKp
fDKpfOiG/E+ZXkAmlU8mlQ/dkP8BACCH/A8AADnkf8qsBZNJ5ZNJ5UM35H/K
9AIyqXwyqXzohvwPAAA55H8AAMgh/1NmLZhMKp9MKh+6If9TpheQSeWTSeVD
N+R/AADIIf8DAEAO+Z8ya8FkUvlkUvnQDfmfMr2ATCqfTCofuiH/AwBADvkf
AAByyP+UWQsmk8onk8qHLx2Px91u19J1+3o+n8fbD4fD23+1O4x7T6fT+F1t
e/qAtV1fkv8p0wvIZNokkzkf5rWQ3/L/5XJp2+3rfr8fY3nbHm6/1d4mjG8W
ptvlXUtoZADLjYdunj0QAF7L1UH4FvjHg/wz+b+9a5h+Y9tut3xn1xK6GMBC
V6u3zx4OAK9rmv/bxqP8f7Vr5rsW7lpCC6PMWjCBhH9imfNhleOHYXs4P2e/
39+ern/bUMZbaruW0MUo0wvIZNokkzkflmsJv6X98X/b9vjRgOF0/fEtgPwP
AACb1qL+/Nn4w1uAYftZ+f+ufx+G+9i2bdu2bdu2bdu2/Z3tBJfLZbgK0Jf3
HOO68//Zlqh/0TBS+WRS+fCl/X5/9zqcVx/+HT4LMGxfXclnunZQ27WE/E+Z
XkAmlU8mlQ/zrjL51Mz5/8Oh++mV/Mc3C7VdS8j/AADwTXfPqB//HFh7d/Do
z/UOAf72rwaXdy0ZauEHBAAAtkj+p8xaMJlUPplUPnRD/qdMLyCTyieTyodu
yP8AAJBD/gcAgBzyP2XWgsmk8smk8qEb8j9legGZVD6ZVD50Q/4HAIAc8j8A
AOSQ/ymzFkwmlU8mlQ/dkP8p0wvIpPLJpPKhG/I/AADkkP8BACCH/E+ZtWAy
qXwyqXzohvxPmV5AJpVPJpUP3ZD/AQAgh/wPAAA55H/KrAWTSeWTSeVDN+R/
yvQCMql8Mql86Ib8DwAAOeR/AADIIf9TZi2YTCqfTCofuiH/U6YXkEnlk0nl
QzfkfwAAyCH/AwBADvmfMmvBZFL5ZFL50A35nzK9gEwqn0wqH7oh/wMAQA75
HwAAcsj/lFkLJpPKJ5PKh27I/5TpBWRS+WRS+dAN+R8AAHLI/wAAkEP+p8xa
MJlUPplUPnRD/qdMLyCTyieTyoduyP8AAJBD/gcAgBzyP2XWgsmk8smk8qEb
8j9legGZVD6ZVD50Q/4HAIAc8j8AAOSQ/ymzFkwmlU8mlQ/dkP8p0wvIpPLJ
pPKhG/I/AADkkP8BACCH/E+ZtWAyqXwyqXzohvxPmV5AJpVPJpUP3ZD/AQAg
h/wPAAA55H/KrAWTSeWTSeVDN+R/yvQCMql8Mql86Ib8DwAAOeR/AADIIf9T
Zi2YTCqfTCofuiH/U6YXkEnlk0nlQzfkfwAAyCH/AwBADvmfMmvBZFL5ZFL5
0A35nzK9gEwqn0wqH7oh/wMAQA75HwAAcsj/lFkLJpPKJ5PKh27I/5TpBWRS
+WRS+dAN+R8AAHLI/wAAkEP+p8xaMJlUPplUPnRD/qdMLyCTyieTyoduyP8A
AJBD/gcAgBzyP2XWgsmk8smk8qEb8j9legGZVD6ZVD50Q/4HAIAc8j8AAOSQ
/ymzFkwmlU8mlQ/dkP8p0wvIpPLJpPKhG/I/AADkkP8BACCH/E+ZtWAyqXwy
qXzohvxPmV5AJpVPJpUP3ZD/AQAgh/wPAAA55H/KrAWTSeWTSeVDN+R/yvQC
Mql8Mql86Ib8DwAAOeR/AADIIf9TZi2YTCqfTCofuiH/U6YXkEnlk0nlQzfk
fwAAyCH/AwBADvmfMmvBZFL5ZFL50A35nzK9gEwqn0wqH7oh/wMAQA75HwAA
csj/lFkLJpPKJ5PKh27I/5TpBWRS+WRS+dAN+R8AAHLI/wAAkEP+p8xaMJlU
PplUPnRD/qdMLyCTyieTyocvHY/H3W7X0nX7ej6fp7tOp9O4q23/6q4vyf8A
APBNh8Oh5f/L5dK229f9fj/G8vZeYHxHMN3+jV1LyP8AAPBNVwfh21uAFsuH
7fbWYLq3bbdbfmnXEvI/ZdaCyaTyyaTyYZVp/m8bw7rAH+xaQv6nTC8gk8on
k8qHVY4fhu3bvD3e8uO7lpD/AQDgB51Op/1+P/6v/A8AAL06Ho9XZ+O/YP6/
69+H4T62bd/d/vfpRcZj27Zt27Z/b/vfpxcZj+3NbSe4XC7DVYCubnf+P92I
+hcNI5VPJpUPX9rv93evw3l1uZ7pAsGP71pC/gcAgG+6yuRTw/H56eX6x6P3
P75rCfkfAAC+6e4Z9WMsH1L63T8N/OO7lgx17U8HA2vBZFL5ZFL50A35nzK9
gEwqn0wqH7oh/wMAQA75HwAAcsj/lFkLJpPKJ5PKh27I/5TpBWRS+WRS+dAN
+R8AAHLI/wAAkEP+p8xaMJlUPplUPnRD/qdMLyCTyieTyoduyP8AAJBD/gcA
gBzyP2XWgsmk8smk8qEb8j9legGZVD6ZVD50Q/4HAIAc8j8AAOSQ/ymzFkwm
lU8mlQ/dkP8p0wvIpPLJpPKhG/I/AADkkP8BACCH/E+ZtWAyqXwyqXzohvxP
mV5AJpVPJpUP3ZD/AQAgh/wPAAA55H/KrAWTSeWTSeVDN+R/yvQCMql8Mql8
6Ib8DwAAOeR/AADIIf9TZi2YTCqfTCofuiH/U6YXkEnlk0nlQzfkfwAAyCH/
AwBADvmfMmvBZFL5ZFL50A35nzK9gEwqn0wqH7oh/wMAQA75HwAAcsj/lFkL
JpPKJ5PKh27I/5TpBWRS+WRS+dAN+R8AAHLI/wAAkEP+p8xaMJlUPplUPnRD
/qdMLyCTyieTyoduyP8AAJBD/gcAgBzyP2XWgsmk8smk8qEb8j9legGZTJtk
MudDNzQygOXePj17IABQpIsBLPT2X88eDgBUaGGUWQsmkPBPLHM+dEMXo0wv
IJNpk0zmfOiGRgYAADnkfwAAyCH/U2YtmEwqn0wqH7oh/1OmF5BJ5ZNJ5UM3
5H8AAMgh/wMAQA75nzJrwWRS+WRS+dAN+Z8yvYBMpk0ymfOhGxoZwHL+/i8A
W6eLASz09l/PHg4AVGhhlFkLJpDwTyxzPnRDF6NMLyCN4/8kM+ezLefz+XA4
7D60GXvYaLe02589tOfTwgCWE/4BXlxL+C3q7/f74/HYti+XS7uxfW3b7ZZ2
e9sb/i5AFwNYxbQJ8LJOp1OL9+3rN+/TN42MMmvBZFL5ZFL5bMJ+vx8O+M9r
92n3/PXRvCr5nzK9gEwqn0wqH7oh/wOsYtoEeH3TI/zDdpu9F64OdE8jA1jO
538BNqFF/fEM/7Y9fOB3+Pzv8wb1KnQxyqwFk8b1P0lmzmdbxln6crm07fGw
v9n73YvAN+gFpJH/SWbOZ1vGWXq42s/t7cm8CADLCf8AmzCe/3M4HI7H43Bj
u8X5P+/yP8BKpk2A1zd+5rfl//HG8YMA4TQyyqwFk0nlk0nlQzfkf8r0AjKp
fDKpfOiG/A8AADnkfwAAOjOe/3/r2UN7Pi8CZdaCyaTyyaTy2ZYW/o/Ho7/2
e5f8T5leQCaVTyaVz7aIuDO8OAAAdGa32zn4/4j8DwBAZ87ns6v9PyL/U2Yt
mEwqn0wqn23Z7XZ3P/wr+r7L/3yDXkAm0yaZzPnQDY0MYDmHjwDYOl0MYCEr
yAAvbr/fL/nY7/DXAX59NK9KC6PMWjCBhH9imfPZhNPptNvt2tdv3qdvuhhl
egFpHP8nmTmfrTifzy3eD3//q20PywHta9tut7Tb297w6wJpYQALyf8AW9ES
/uFw2H1oM/aw0W4JT/4DLQxgOeEfgK3TxSizFkwm0yaZzPnQDY2MMr2ATCqf
TCofuiH/AwBADvkfAAByyP+UWQsmk2mTTOZ8tmXJXwGLpZFRphcQyPV/iGXO
Z1vaRO1qn4/oYgALuf4/wFZcLpfT6TT8CYDj8Wg5YEoLA1hO+AfYnPP5vP/Q
3hF4I/Au//MN1oJJ4/g/ycz5bN3xeBxm7+GNwLOH80xaGGV6AWnkf5KZ89mo
4USg3Yf2FuB8Pg9vBH7jLUB7rsPhcNsghhun2mDGvcPwhhuvRlXb9SUtDOB9
8WQo/ANsQoviLefv9/sWj28/CNz+d5rAf8QQyNvX2x7RhvHovKNhJMPwptvl
XUvoYgALU73j/wBb8eV5Pj8+jbd3GUPIX5X/23dNBzl8Zvk7u5bQwiizFkwf
lqd6+Z9k5ny25Ymf871tELvd7tF4rna17XFhorarNkJYSC+gG47/w5fM+WxL
i8T7/f7qxpnj8D/obv4frkF0e7r+7Z3HW2q7aiMECLRkMpT/Abbi7sk/7Zbb
NwU/7u75P+PfIBhO1x/HJv8DvDL5H2ArHs3SfzB7f/kU008fPyv/3/Xvw3Af
27bvbv/79CLjsW37D7an4f8VxmPb9p9t//v0IuOxvbntP3b3lPu158nXLFxQ
Hjac/8+2POtfNDyL4/8kM+ezLcOpPufzecjJ7evViTe/57ZBXL0TGT4LMGxf
XcnneDw+usjPwl21EQIweLRCetezBwvAfwwxe/wjWcPbgT943lXn/w+H7qdX
8h/fLNR21UYIwCPSPgB3zRwaGv4u8KM/1zsE+GHX3b9TtnbXkqGu/vHgg7Vg
Mpk2yWTOh25oZJTpBWQybZLJnA/d0MgAVjFtAry+4e9/+bjWXV4EgFVMmwCv
b/qRW65oZJRZCyaTaZNM5ny2xVw9w4tDmV5AJtMmmcz5bMvaS2JG0cgAVjFt
Ary+4eL/f3PB/83RyABWMW0CvL7h2vg+/3uXF4Eya8FkMm2SyZwP3dDIKNML
yGTaJJM5H7qhkQGsYtoE2ITz+Xw4HIYTgYZb9vu9DwW/a2QAK5k2AV7f6XRq
yb99bYF/nLePx2N7R/DUcb0EjYwya8FkMm2SyZzPtrTwP178Z5y3p+8FknkR
KNMLyGTaJJM5n22ZztWPtmN5EQBWMW0CvL67x//bLe32Zw3pdWhkAKuYNgFe
3+35/0P4b7c8e2jPp5FRZi2YTKZNMpnz2ZzhTwAPf/OrJX9/DnikkVGmF5DJ
tEkmcz50QyMDWMW0CcCmaWQAq5g2AV7fo+v8+/zvu0bGN1gLJpNpk0zmfLbl
7lzt+j8DjYwyvYBMpk0ymfPZiv1+30L+2z3Ti4Im08gAVjFtArw+c/UMLw7A
KqZNgI0a/xZAOC8CZdaCyWTaJJM5n805HA5XJwK1/z0ej88e1/NpZJTpBWQy
bZLJnM+2HD5cLpf3z3n7dDrt9/vhlnAaGcAqpk2A17fb7caoP87b7S3Ao+uC
RtHIAFYxbQK8vulcPV7zs70jcP3Pd42Mb7AWTCbTJpnM+WzL9Pj/3bWAZF4E
yvQCMpk2yWTOZ1sOh8PpdBq2jx/ePz8C8LxBvQqNDGAV0ybA67tcLtOo394O
tNnb538HGhnAKqZNADZNI6PMWjCZTJtkMudDNzQyyvQCMpk2yWTOpw/m8Hcv
AsBKpk2A7TKHv3sRAFYybQJslzn83YvAN1gLJpNpk0zmfPpgDn/3IvANegGZ
TJtkMufTB3P4uxcBYCXTJsB2mcPfvQgAK5k2AV7Z21eePcDn8yJQZi2YTKZN
MpnzoRsaGWV6AZlMm2Qy50M3NDKAVUybAGyaRgawimkTgE3TyCizFkwm0yaZ
zPnQDY2MMr2ATKZNMpnzoRsaGcAqpk0ANk0jA1jFtAnApmlklFkLJpNpk0zm
fOiGRkaZXkAm0yaZzPnQDY0MYBXTJgCbppEBrGLaBGDTNDLKrAWTybRJJnM+
dEMjo0wvIJNpk0zmfOiGRgawimkTgE3TyABWMW0CsGkaGWXWgslk2iSTOR+6
oZFRpheQybRJJnM+dEMjA1jFtAnApmlkAKuYNgHYNI2MMmvBZDJtksmcD93Q
yCjTC8hk2iSTOR+6oZEBrGLaBGDTNDKAVUybAGyaRkaZtWAymTbJZM6Hbmhk
lOkFZDJtksmcD93QyABWMW0CsGkaGcAqpk0ANk0jo8xaMJlMm2Qy50M3NDLK
9AIymTbJZM6HbmhkAKuYNgHYNI0MYBXTJgCbppFRZi2YTKZNMpnzoRsaGWV6
AZlMm2Qy50M3NDKAVUybAGyaRgawimkTgE3TyCizFkwm0yaZzPnQDY2MMr2A
TKZNMpnzoRsaGcAqpk0ANk0jA1jFtAnApmlklFkLJpNpk0zmfOiGRkaZXkAm
0yaZzPnQDY0MYBXTJgCbppEBrGLaBGDTNDLKrAWTybRJJnM+dEMjo0wvIJNp
k0zmfOiGRgawimkTgE3TyABWMW0CsGkaGWXWgslk2iSTOR+6oZFRpheQybRJ
JnM+dEMjA1jFtAnApmlkAKuYNgHYNI2MMmvBZDJtksmcD93QyCjTC8hk2iST
OR+6oZEBrGLaBGDTNDKAVUybAGyaRkaZtWAymTbJZM6HbmhklOkFZDJtksmc
D1+6XC6Hw+FumzidTrvdru1qX9v2r+76kkYGsIppE4BbQyBvX2/bxPl8brva
16vt39i1hEYGsIppE4Bbh8Phcrm832sTbdf0EH3bbrf80q4lNDLKrAWTybRJ
JnM+LHTbJna73fDWYNC22y2/tKs2QlhILyCTaZNM5nxY6LZNzNzy47tqIwRg
hmkTgBnyP0BnTJsAzNhE/r/r34fhPrZt393+9+lFxmPb9t9sj3Psi4zHtu2/
2f736UXGY3tz2zmc/0/HAv9Fw7tpk1TmfFjoy+v/HI/HR1fy+f6u2ggBftWj
ZUf+zLNLAKBnt9PscHx+ern+8ej9j++qjRDgV7Vp5/i//+O/Z/1n2gf4DfPH
W4aU/vbx53qv/lbXj+9aMtR1Pxt8shZMjfwv/7NF5nzohkZAmV5Ajfwv/7NF
5nzohkYA/DH5X/4H4Ik0AuCPyf/yPwBPpBGwhEuL8IPkf/mfLXL+D3RDI6BM
8VAj/8v/bJH8D93QCChTPNTI//I/AE+kEVCmeKiR/+V/AJ5II6BM8VAj/8v/
bJHzf6AbGgFlioca+V/+Z4vkf+iGRkCZ4qFG/pf/AXgijYAyxUON/C//A/BE
GgFlioca+V/+Z4uc/wPd0AgoUzzUyP/yP1sk/0M3NALKFA818r/8D8ATaQSU
KR5q5H/5H4An0ggoUzzUyP/yP1vk/B/ohkZAmeKhRv6X/9ki+R+6oRFQpnio
kf/lfwCeSCOgTPFQI//L/wA8kUZAmeKhRv6X/9ki5/9ANzQCyhQPNW8827NL
gE2S/6EbGgFlioeaN8f/Hf8H4Hk0AsoUDzXyv/wPwBNpBJQpHmrkf/mfLXL+
D3RDI6BM8VAj/8v/bJH8D93QCChTPNTI//I/AE+kEVCmeKiR/+V/AJ5II6BM
8VAj/8v/bJHzf6AbGgFlioeav7jAPbOeXQJskvwP3dAIKFM8ZFL5AGyaRkaZ
4iGTygdg0zQyyhQPmVQ+mZz/A93QyChTPGRS+WSS/6EbGhlliodMKh+ATdPI
KFM8ZFL5AGyaRkaZ4iGTyieT83+gGxoZZYqHTCqfTPI/dEMjo0zxkEnlA/xf
e/eWnLiSRQGUmTAUD4WhMBRqJv6+o/B3j8Kd4YxSqAQIcXikM89accOh4iFw
95ZyI6UFXTOQESY85CT5AHTNQEaY8JCT5JOT+T8wDAMZYcJDTpJPTvo/DMNA
RpjwkJPkA9A1AxlhwkNOkg9A1wxkhAkPOUk+OZn/A8MwkBEmPOQk+eSk/8Mw
DGSECQ85ST4AXTOQESY85CT5AHTNQEaY8JCT5JOT+T8wDAMZYcJDTpJPTvo/
DMNARpjwkJPkA9A1AxlhwkNOkg9A1wxkhAkPOUk+OZn/A8MwkBEmPOQk+eSk
/8MwDGSECQ85ST4AXTOQNbSjtdYRoEuSA0DXDGQNlf/x/zv+z3+t/hN+YiSH
nMz/gWEYyBrS//V/eiQ55KT/wzAMZA3p//o/PZIcALpmIGuoxYR3/tE6AnRJ
cgDomoGsoZ3j/47/0yHJISfzf2AYBrKG9H/9nx5JDjnp/zAMA1lD+r/+T48k
B4CuGcga0v/1f3okOQB0zUDWkP6v/9MjySEn839gGAayhvR//Z8eSQ456f8w
DANZQ/q//k+PJAeArhnIGtL/9X96JDkAdM1A1pD+r//TI8khJ/N/YBgGsob0
f/2fHkkOOen/MAwDWUP6v/5PjyQHgK4ZyBrS//V/frndPVq/WQDYxJjVkP6v
/9MjsyDISfJhGCpQQ/q//k+PtCByknwYhgrUkP6v/wMAvJkK1JD+r/8DALyZ
CtSQ/q//0yOzIMhJ8mEYKlBD+r/+T4+0IHKSfBiGCtSQ/q//AwC8mQrUkP6v
/wMAvJkK1JD+r//TI7MgyEnyYRgqUEP6v/5Pj7QgcpJ8GIYK1JD+r/8DALyZ
CtSQ/q//AwC8mQrUkP6v/9MjsyDISfJhGCpQQ/q//k+PtCByknwYhgrUkP6v
/wMAvJkK1JD+r/8DALyZCtSQ/q//0yOzIMhJ8mEYKlBD+r/+T4+0IHKSfBiG
CtSQ/q//AwC8mQrUkP6v/wMAvJkK1JD+r//TI7MgyEnyYRgqUEP6v/5Pj7Qg
cpJ8GIYK1JD+r/8DALyZCtSQ/q//AwC8mQrUkP6v/9MjsyDISfJhGCpQQ/q/
/k+PtCByknwYhgrU0I7WWkcAABjf4XBYNJD9fj/dezqdyj/rjWV5/sTYXTep
QIQJDwDATR8fH19fXxfv+vz8LAW+/Fwsh+/aQoUjTHjIySwIcpJ8CFvp/4fD
YX70viyXWx65awsVjjDhISctiJwkH8L2+/21/r+4qyxPU4Nid22hwhEmPAAA
N9X5OR8fH+fT9c/b1HRL7K4tVDjChAcA4KbS/I/HYz1iX6frTx8B9H/6Ijzk
ZBYEOUk+PEv9CFCXW/X/i/78qI+xbPnispxYtmzZcp7lP3/9kvdjubtl5qa6
bv4/fREeAICbFn/8W/8WoC4vruRzPB6vXeRn411bqHCECQ8AwE0r8//rofv5
lfynDwuxu7ZQ4QgTHnJyLpucJB/CSjk/HA7Xvq63Fvh61+JrvGJ33aTCESY8
5KQFkZPkwzBUOMKEBwCgOyocYcIDANAdFY4w4SEnsyDISfJhGCocYcJDTloQ
OUk+DEOFI0x4AAC6o8IRJjwAAN1R4QgTHnIyC4KcJB+GocIRJjzkpAWRk+TD
MFQ4woQHAKA7KhxhwgMA0B0VjjDhISezIMhJ8mEYKhxhwkNOWhA5ST4MQ4Uj
THgAALqjwhEmPAAA3VHhCBMecjILgpwkH4ahwhEmPOSkBZGT5MMwVDjChAcA
oDsqHGHCAwDQHRWOMOEhJ7MgyEnyYRgqHGHCQ05aEDlJPgxDhSNMeAAAuqPC
ESY8AADdUeEIEx5yMguCnCQfhqHCESY85KQFkZPkwzBUOMKEBwCgOyocYcID
ANAdFY4w4SEnsyDISfJhGCocYcJDTloQOUk+DEOFI0x4AAC6o8IRJjwAAN1R
4QgTHnIyC4KcJB+GocIRJjzkpAWRk+TDMFQ4woQHAKA7KhxhwgMA0B0VjjDh
ISezIMhJ8mEYKhxhwkNOWhA5ST4MQ4UjTHgAALqjwhEmPAAA3VHhCBMecjIL
gpwkH4ahwhEmPOSkBZGT5MMwVDjChAcAoDsqHGHCAwDQHRWOMOEhJ7MgyEny
YRgqHGHCQ05aEDlJPgxDhSNMeAAAuqPCESY8AADdUeEIEx5yMguCnCQfhqHC
ESY85KQFkZPkwzBUOMKEBwCgOyocYcIDANAdFY4w4SEnsyDISfJhGCocYcJD
TloQOUk+DEOFI0x4AAC6o8IRJjwAAN1R4QgTHnIyC4KcJB+GocIRJjzkpAWR
k+TDMFQ4woQHAKA7KhxhwgMA0B0VjjDhISezIMhJ8mEYKhxhwkNOWhAj2b4n
t8+HYdicCRMegK7t/nriI7+NDvDr2UgJEx6Afu3+9ZRHft/5SQFowhZKmPCQ
k/k/jGGl1e/usXGdwO9h80ziFTM82z4SWtH/ibmrVPMKrSMAv4XNIYPtu75e
HgnQnddWWzZoHQH4LWwOw9u+91t5ZHgH+5RXB+Cdwvt8oAu23OG9ooG/qNUb
TeiC+T/kJPkwDF1reL30fweU6IUWRE6SD8NQtDLYXqp7eSQAADG6VhLb/4++
q6hvL/ZPfHUAAMLULWIcqyctsyDISfJhGPobYcJDTloQOUk+DEOFAwCAPPR/
AADIQ/8nzLlgcpJ8cpJ8GIb+T5ixgJwkn5wkH4ah/wMAQB76PwAA5KH/E+Zc
MDlJPjlJPgxD/yfMWEBOkk9Okg/D0P8BACAP/R8AAPLQ/wlzLpicJJ+cJB+G
of8TZiwgJ8knJ8mHYej/AACQh/4PAAB56P+EORdMTpJPTpIPw9D/CTMWkJPk
k5PkwzD0fwAAyEP/BwCAPPR/wpwLJifJJyfJh2Ho/4QZC8hJ8slJ8mEY+j8A
AOSh/wMAQB76P2HOBZOT5JOT5MMw9H/CjAXkJPnkJPkwDP0fAAD6cjqd9vt9
afLlZ1m+67n6PwAAdOTz87PU/vJzsbyR/k+Yc8HkJPnkJPnwexwOh/kx/7Jc
btn+dP2fMGMBOUk+OUk+/B77/f7r62v6Z1kut2x/uv4PAAAdOS/wd1V6/R8A
ADqi/9OKc8HkJPnkJPnwezze/y/686M+xrLli8tyYjnn8rSP/SXvx7Ll9yzb
51t+cJknenD+PwAA0JHF9X+Ox+Nd1/8BAAA6Ug/4z6//Pz8dAAAADKbW/vr9
v3d9+RcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACt7Ha71628fqXdS18Cwl6d
TPnnl4iF0OgA8Da7f5U95MfHx/F4nO49nU4Xn1huX9mXljWEv1quvIG7Hj8p
L+dr7Fhx/HHvXYFXeeR7FeWf7d4T6Xut1+wmG4itA2DufEf99fVV9s+Hw6He
W3bRF59YdsLXdvLluWUNZT11beWR1z5EXHTtFW9ybIebSjjP01huqYF/yvof
Cf+3/HOnV0c6YCWKrTYQWwfA3LW9Yr29/FwZXK49d/H4euJ18XL1yE89ClSG
gDocfM/OR8wHr7LC6XjRfOXzlcxt+cVJq0RrfiSwLN8btnliF7aEf2Vt8k/A
SyM9X8PiYdfWvBLCp28gtg6AgIv7w2mfXM+Znh9vqbvWjfvSi3v4+V79eDzO
T+kuVlvfQB3d5svffz+ezIeGLe8HSt5qikp45k1pPWzXErviWr2Rf57rdZEu
j58eVgr29LBavKcXXax549t+cAOxdQDEnO8Vy/5zmjha710cV6m7/YvPvWg+
DXXe/6cdddlFL/b886cvThDPz2svpnTaw7NRnXiwOEz6vTlsi8SuuBj+9bXJ
PwGvi/T0yWL99voxYVrzxrf94AZi6wCI2V2y2I1Phb+aPg5s2aPOjxd9/9v/
F2/j4nL95/yM87XjRRvfD1SldZTALP5A8rlhuxb+9bXJPzEvinR5/MWpQedr
vrZ7v+bxDcTWARCz2CuW/Wc9gjT9/W+9fer8888CN/eo098Rn7/cXf3n3M2V
wIo6e632pcVBwmeFbSX862uTfwJeF+ntt9/V/5+ygdg6AGIu7hWnIznTvVPt
n88FWtmj1jmo51ef27JzXty1crUHe3gCVuYMPyVsN8O/vjb5514vjfS14/+L
21eOvS88cQOxdQDEbOz/3z972nrd5vXnVtemjAb6/7VVra8ELqotZT5nuPal
2mSeErab4V9fm/xzl1dH+unz/5+4gdg6AGLO94r1+v/zv/+tzieXXtujXrxk
6OIpKzvn/b9fCjM/nFXf27VRxh6ededNqaqnt+rktwfDtiX862uTf7Z7Q6Tn
nyauXf+nPmbLqeHnbiC2DoCYxczJ/c/3/17cjc9P757fu7LOqg4fW/p/3aXP
X2u6wvNu9ZJu9vCsW/myoanYPBi2LeFfX5v8s90bIv391Ov/P30DsXUAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
kMHX19d+v9/tdmW5/myi4UsDAMCvdTqdPj4+dj9Kbz8cDqXAP7LCsp7Pz8/n
vLk7lV+kyesCAEAXStsvnbnW9VL7y8LxeCyfAh4p8A0PvJd33uqlAQDglzud
ThcL8/HH/DH11EBZnh5TPyPUu8oniHrKoNyym/k++ywwra0+Zbp38bD5P+cv
VG8pTywfW6Z3VZanZ1X1lmsvveUXAQCA8ZS6O2/C52pnns4OzM8LzNty+bAw
n3gzL97z5fnapjZ+/rDzNSymJNW3XW+pnwXmHwFuvvT2XwQAAEZSavD64e5p
alBVlqd6PJ/kPz+S/329hC/WVjr5xv6/Phmp9vm7XnrjLwIAACO52XXLA+Yf
EDbO2Lm2vPi4EVjbyvu8+TYCLw0AACO5efz/vAw/0v8fX9uk/pFynUE0/a3B
018aAABGcnP+//kR+4szbb5D/T98/P9wOJT+//Vj8Zjtpx62/CIAADCSet2b
81MApV3Xv6hdnzY/f0pg/n95lXlvn95GvYjQxTVcvGX++Nj8/5WVAwDASBZX
+19c/39+2Zz6YWE6XxDo//WLxmrPX1z/p9xerzha7q1fRnZxDdX0NsqD6zqn
TzGLC/vMXzrwiwAAwHjWv//32mXzA/3/+/r1/6faP12N/9oavv8evZ+/2+lU
Qn1uffrG6//r/wAA8AqLy3jOJ+EDAACDqZN8pu/tuvnXxwAAQL/qd/XWSThl
Yf1bvQAAAAAAAAAAAAAAAAAAAAAAAACy+T/hcVkHDQplbmRzdHJlYW0NCmVu
ZG9iag0KNzMgMCBvYmoNCjw8L1R5cGUvUGFnZS9QYXJlbnQgMiAwIFIvUmVz
b3VyY2VzPDwvRXh0R1N0YXRlPDwvR1M1IDUgMCBSL0dTMTAgMTAgMCBSPj4v
WE9iamVjdDw8L0ltYWdlMTkgMTkgMCBSL0ltYWdlNzUgNzUgMCBSPj4vRm9u
dDw8L0YxIDggMCBSL0YyIDE1IDAgUi9GNSAzNSAwIFI+Pi9Qcm9jU2V0Wy9Q
REYvVGV4dC9JbWFnZUIvSW1hZ2VDL0ltYWdlSV0gPj4vTWVkaWFCb3hbIDAg
MCA5NjAgNTQwXSAvQ29udGVudHMgNzQgMCBSL0dyb3VwPDwvVHlwZS9Hcm91
cC9TL1RyYW5zcGFyZW5jeS9DUy9EZXZpY2VSR0I+Pi9UYWJzL1MvU3RydWN0
UGFyZW50cyAxNz4+DQplbmRvYmoNCjc0IDAgb2JqDQo8PC9GaWx0ZXIvRmxh
dGVEZWNvZGUvTGVuZ3RoIDk0OD4+DQpzdHJlYW0NCnicvVfbbhMxEH2PlH/w
o420ju/2oqoSvYCKqLg0CCTEQwibtKJNyyYI+CT+kplx0iS9ZIO25cWZHY/t
8TlzcXrP6tnZaDCcsb3jffa921FMSaWUNkZFVgbFvFOsrrqdD0/YpNvpvTjx
bDztdjQbXxuroJX1a9ajJ93O226HHcKuvZtnJBtl9ExHaTyLQYLoUbE8hpSw
+3xibcHwAtw4uhiMK12yg0u2OIb1Tq4GE7az0zvePzpgqvdqMBkzXk2K9ydi
d5ftHeQLksfaWYUn3L7hXh+2f65ZKSMc2R/hVckT5kwpARRtZAlu9C/w/mOC
RCvCRLEX3c4n/kcU1nAmXOL7wmp+KXTJr3D4DTOB18IEfiaKyMeoPMVhJgqT
YE2hk+YGNQqHpYRTyvOPQluVF5/jQNIEDX6Jz6z/sts57G9AvoFdJVMKdNua
2PXWIuJoGBYErTJ7A3LdCnLDrJF2DXFvZPLMJS+tzYBL5WIOvSwR4O+q6Q8B
gMxgmN4BA+u9ufbRLN0yNjIL11KGRaUg4LzBsFuJQtKiK3lmsWAlBOHj/hC0
LUNQJ6nMegxqKxNzMKHjBkCOhMGoKGAc1pXQhg+Ednx6hmLWj2lkaAhaO9dC
GIJdhcb1CGQ/l6vlwmGF5owMade8E4krOz29k4c1eFwrePy98NjoZNgQLztK
pbjb6J5/ePZskBZUTQ5CljuNyHsCMxDaBooJoHuJ2nOCmMT6DIHPZuO5MVQS
0k7zuumMfgZo/oVM8vqqmaLwWBTlzG5LUXw8ihoc5K8BU8szsqcEKvFVE/o1
yVCUCrMgK1sCI1Hzn9dE1lOwDGssz9kiAvPS82aeUlsgqM3eoskoK23agMIQ
HHTQ26DL/cBBge90ER841I8Et0RFTd2Lf83dEDUXIqqltVYOQKGmqAmqBJiC
bd4oayeooKkq7zmiPecf+JOyTfZpi+Au2wa3v/1EKDFqdIL8bh3cuu0L5g7/
InTYRv/4sTCWgHXIU0bUIMsWXjBrfrfzBp4ysmz0hj3skVGGZgTOBbzgLqkB
5vFqEY4O3mSoIIz2moNMt3sU3XMJyE0dvFT/kpua/MY7+GVuUsUqypWcq1bM
viwVK6lFZhQYg7zDty1gMI8Fg/PSbyrUN2EwDxlOLkqPf0yanCge8tDcmhrP
tJTAOWaB70B8O+I711QilXpYmGd7PVqRK+pwZJILwBYlVbd78m6qqfACjxvC
fdui2u7RuamoNjiYM+Y/VVW9hT+PUlebDm1RWP8CBlNp3Q0KZW5kc3RyZWFt
DQplbmRvYmoNCjc1IDAgb2JqDQo8PC9UeXBlL1hPYmplY3QvU3VidHlwZS9J
bWFnZS9XaWR0aCAxMDI0L0hlaWdodCA3NjgvQ29sb3JTcGFjZS9EZXZpY2VS
R0IvQml0c1BlckNvbXBvbmVudCA4L0ludGVycG9sYXRlIGZhbHNlL0ZpbHRl
ci9GbGF0ZURlY29kZS9MZW5ndGggMTM1MzY+Pg0Kc3RyZWFtDQp4nOzd25Hq
SrAg0PYEUzAFUzCF7cZ88X1/rgt8jxU9FV3RGh0hhJS8uirXihMddSgaCjp3
ZuqB+P4GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAhn19fX16Cfx//hzP1dD7+balNvSe
AMAHff3Xbrfb7/fH4/Glz3g6nWanyu1rKnhZ4con2rKuVY4/tk69059dYezP
8bZoWaM8Y3m04V/K4XC4XC4PPmZ4ebde+9dt8VVu9MT3fOwvvDQA6MB16Swt
TekSS2/zumcsvdPsVG2u7j7CrV+/fqIt61qrvDPXHWm55XXv2FZ/c4Xh/v89
0XJXeffKM57P5++ffyNlUP6ZlAevt4SFl7fQ/8dX8yTPes8X/IWXCQCNWu4i
Sp9T2p5SzYcdnsMdaudTp+otpcMc7nlrn2195IUGdbye2Qcc9vjVxSyscPal
lfuX28e7bce3lJ/DDt4yuLV3tzzLuOsr40lrfeutGL9ps4//lOXdXWF4ebOv
cXLPWw8e7v+fGC0Ly7uO5+sXe3375JDK1jd2srzZNWx9Pxfe58lu+RpOd5/o
+8bfevJEw/9ev+drXs6m2Lv1Msc3jh+wjmcff2XWAoCe3GqSa7dTCmWpiUPz
efgx/OL4/IdaW2vPOR7PPmO9w+T2+ivDehYecLzm5RXOLmByglMZD11QfbQ6
rid7zD5CveewK3jS/C+vfOg9xs/79OUtrPDB5Q0PMtxzvJLaTQ3Pe+uvtt7K
aFn5vMt3WzifZ/zO37L84Lfe2PHyrtcQeD8X3ufJZuB4I3EhKm79rW/1/wtT
sbdo/cucrGH8gLufMxsnj78+awFAT67LaD2xYfZE8WG74Pu3MRumJg3Swtkm
9Rkne9uG/avDehYecKHDmaxw9j6T7mL8ROt71Lrv9HrP/92VD29a3bH/ouUt
rPDB5Q0PMtspTW6vrWNg8YP10bLmeZfvttD7lae7u0d65YNP3tjJeLKGwPu5
/D4PB1Mm/0IXouLW3zrQ/8feollr+v/JA14//vqsBQA9+ZqzsPNtfJR/cvvk
rJXZ8yWGX5ycUDE0eOPHv/WAy73BrRWOH+pWr1IPHwwHFJaVRr387vWG0vqV
3zr48pTl3Vrhg8urbvXD1w9+98+xLBwts88bXt6axa9/8IX+P/yY41+ZNdyh
vnuTf54LUbHwt17zor63/5kWXt3yHdasYfy/67MWAPRkUhYvPx9sHJ9FUw+d
11Nkx43EdT1daDlmn3Ho4sbdyPjxbz3g5JFXrnBs2O93vcevPtrXvZOQ68kn
tcGe7B1dv/JbK3x8eQsrfHx5C1PXt9/9czwrWtY8b2B5w7MHzkhf88auXN76
BS+/kO/bW4Uro+LWEy28kK1/pjWvYvYOa9Yw/t+FVw0AHZutd8N+udJ8lj7h
8mNy/8kvrt9vNvzi0Mjt/vuBzbsPOH7q9SscGy5wNPvZ0u/f7aBbx0GWTxte
ufKFFT64vOUVPr6879v98OT29Udt7i7pbrSsed7w8tac/7/+wdf3/4EFL7+Q
4az7ySMvRMUT9//H3qJZT+n/7e0HIKfl/n8yO/7E5WTq1knCy89Y6m/doX09
u/CAC1V+YYVjw/nAyw3ArTdncjr6pJtaufKFFT6yvLsrfHx5Cw/yovP/q/XR
Ejv/f2EZ1w1zNb5S7voHX9//v+L8/7rn//r8/1tRsXD+//CGjP/dXa9h65/p
7qu4dYet/f/6rAUAPbkuo5ef6//XJmFoI8uN9dIfQxd03XjvRlf2WLiCx/gX
r09FGGYXHnCyN3vlCid2P9cDWfhs7OwFdq5b6+HOw/MurHzTDvbA8tas8CnL
G/fDpxvX/6n3iX14eXYNC9Gy8LzjaHlkeZOr/Z+vrv+//sEnGzXDI1yvIbDg
u3+14X9vXf9nEhW3/tb73wtVXX4vSzv7or7X/Zk+0v+vz1oA0JPJua+17RyK
ct1B9zX6ttPag33f7lXq4yxcSnH8i9cfuBvP3nrAWrXrL25a4djsqfvDo33d
OMF+4TyQ6zb4euXrm5zY8lau8PHljR9k/+Lr/w/jldEye+xj+MVHlne69/2/
Kx98/L/j5c2uYeuCv27bXV3fctzuLvz7nf1bD23/7veEotkX9b3uz/SR/n/5
VQMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAJDB8Xjc7XZfX1/l5/l8Xjl1Op2GqTJ+fAoAAHi1w+FQmvzL
5VLG5ed+vx/a8oWpsi0wbBGMx+EpAADgDSY74UufX9ryu1Nl02A8W8bllkem
AACA9xs3+QtTZVCPCzxrCgAAeL/jj7tTX19fk9nhltgUAADwZqfTab/fr5nS
/wMAQNOOx+Ots/Gvpz7S/3/d8O9HvY+x8exYnBjnHA859o+sx9j4PWM53/jB
cQaXy6Ve6mf91EfO/3ewgLBU/6JhIPLJSeTDXfv9/tZ1OG9NTa7kMz5AEJta
Q/9PmFpATiKfnEQ+LJv05Cun6q778ZX8hx37sak19P8AAPCg2TPqa1u+MPX9
28DPfjVwbGrNUsMvEwAAaIv+nzDHgslJ5JOTyIdu6P8JUwvISeSTk8iHbuj/
AQAgD/0/AADkof8nzLFgchL55CTyoRv6f8LUAnIS+eQk8qEb+n8AAMhD/w8A
AHno/wlzLJicRD45iXzohv6fMLWAnEQ+OYl86Ib+HwAA8tD/AwBAHvp/whwL
JieRT04iH7qh/ydMLSAnaZOc5HzohkIGsN7Xr08vBACCVDGAlb7+69PLAYAI
JYwwx4JJSPNPWnI+dEMVI0wtICdpk5zkfOiGQgYAAHno/wEAIA/9P2GOBZOT
yCcnkQ/d0P8TphaQk8gnJ5EP3dD/AwBAHvp/AADIQ/9PmGPB5CRtkpOcD91Q
yAhTC0jI93+RlpwP3VDFAFb6+q9PLwcAIpQwgPU0/wC0ThUjzLFgcpI2yUnO
h24oZISpBeQk8slJ5EM39P8AAJCH/h8AAPLQ/xPmWDA5iXxyEvnQDf0/YWoB
OYl8chL50A39PwAA5KH/BwCAPPT/hDkWTE4in5xEPnRD/0+YWkBOIp+cRD50
Q/8PAAB56P8BACAP/T9hjgWTk8gnJ5EP3dD/E6YWkJPIJyeRD93Q/wMAQB76
fwAAyEP/T5hjweQk8slJ5EM39P+EqQXkJPLJSeRDN/T/AACQh/4fAAAedzwe
d7td6a7Lz/P5PJ46nU7DVBm/dOou/T9hjgWTk8gnJ5EPyw6HQ+n/L5dLGZef
+/1+aMvLtsCwRTAev2JqDf0/YWoBOYl8chL5sGyyE75sApS2vI7LpsF4tozL
LS+aWkP/DwAAzzXu/8ugHhd4w9Qa+n8AAHiu4486vu63h1uePrWG/p8wx4LJ
SeSTk8iH9U6n036/H/5X/0831AJyEvnkJPJhpePxODkb/w/2/7P+/aj3MTY2
NjY2NjY2Nn5knMHlcqlXAZrc7vx/AADoz36/n70O5+RyPeMDBE+fWkP/T1iq
LXoYSJvkJOfDsklPPlb3z48v1z/svX/61BoKGWFqAQkNJ0l+eiHwbnI+LJs9
o35oy2uXPvvVwE+fWrPUra8OIKdJVv/0cgAgQgkDWE/zD0DrVDHCHAsmJ2mT
nOR86IZCRphaQE4in5xEPnRD/w+wibQJQNMUMoD1nP8PQOtUMcIcCyYb1/8h
MzkfuqGEEaYWkJDmn7TkfOiGKgawibQJQNMUMgAAyEP/T5hjweQk8slJ5EM3
9P+EqQXkJPLJSeRDN/T/AACQh/4fAADy0P8T5lgwOYl8chL50A39P2FqATmJ
fHIS+dAN/T8AAOSh/wcAgDz0/4Q5FkxOIp+cRD50Q/9PmFpATiKfnEQ+dEP/
DwAAeej/AQAgD/0/YY4Fk5PIJyeRD93Q/xOmFpCTyCcnkQ/d0P8DAEAe+n8A
AMhD/0+YY8HkJPLJSeRDN/T/hKkF5CTyyUnkQzf0/wAAkIf+HwAA8tD/E+ZY
MDmJfHIS+dAN/T9hagE5iXxyEvnQDf0/AADkof8HAIA89P+EORZMTiKfnEQ+
dEP/T5haQE4in5xEPnRD/w8AAHno/wEAIA/9P2GOBZOTyCcnkQ/d0P8TphaQ
k8gnJ5EP3dD/AwBAHvp/AADIQ/9PmGPB5CTyyUnkQzf0/4SpBeQk8slJ5EM3
9P8AAJCH/h8AAPLQ/xPmWDA5SZvkJOdDNxQywtQCEvr69emFwLvJ+dANVQxg
pa//+vRyAPhbLpfL4XCYLRDn83m/35ep8rOMx1On02m325Wp8rOMH5+6SwkD
WE/zD8Cs2pCXn9c1otxYtgvK1sH37zbC0LGXbYHyW3WLYDwOT62hihHmWDA5
SZvkJOfDsqHDvy4TpT+vU1UZl1uG3xrvva9bCo9MraGQEaYWkJPIJyeRDytt
6v+fPhVbIQAAEDN7/s9+v589/+f6zsMtsanYCgEAgJjZ7rp+Lrgan6uj/6ct
jgWTk8gnJ5EPK93d/1/GH9//P+vfj3ofY+PZ8b9ff2Q9xsbGxsavG//79UfW
Y9zcOA/n/wMAQB6PXP/neDzeusjPyqnYCgEAgJhNn/+t2wLjK/kPWwqxqdgK
YaWER/TgW+STlciHZbNn1A+ztUuvX9c7+a6up0+tWeq21wa/1AJyEvnkJPKh
G/p/AADIQ/8PAAB56P8JcyyYnEQ+OYl86Ib+nzC1gJxEPjmJfOiG/h8AAPLQ
/wMAQB76f8IcCyYnkU9OIh+6of8nTC0gJ5FPTiIfuqH/B9hE2gSgaQoZwHrX
X+kOAG1RxQhzLJhsvv7r08uBt5LzoRtKGGFqAdno/8lMzoduKGEA62n+AWid
KgawibQJQNMUMsIcCyYnkU9OIh+6of8nTC0gJ5FPTiIfuqH/BwCAPPT/AACQ
h/6fMMeCyUnkk5PIh27o/wlTC8hJ5JOTyIdu6P8BACAP/T8AAOSh/yfMsWBy
EvnkJPKhG/p/wtQCchL55CTyoRv6fwAAyEP/DwAAeej/CXMsmJxEPjmJfOiG
/p8wtYCcpE1ykvOhGwoZwHpfvz69EAAIUsUAVvr6r08vBwAilDDCHAsmG/0/
mcn50A0ljDC1gIQ0/6Ql50M3VDGATaRNAJqmkAFsIm0C0DSFjDDHgknI+T+k
JedDN1QxwtQCsvH5XzKT86EbShjAepp/AFqnigFsIm0C0DSFjDDHgknI/n/S
kvOhG6oYYWoB2Tj/n8zkfOiGEgawnuYfgNapYgCbSJsANE0hI8yxYHqyPhlK
m+Qk50M3FDLC1AK6sf6sHuf/kJacD91QxYDk1n+q1+d/AeiAEgZg/z8Aeahi
hDkWTE82Nf82AUhIzoduKGGEqQUkpPknLTkf7rpcLofDYbZGlKn9fl+mdrtd
uc946nQ6lRvrVBk/PnWXKgawibQJwLXakJef12WiNv+1Sy/j4/E4bAKcz+fy
W+XnZByeWkMhAwCAB5WWvvT233Pd9fHH+JZhj335rfHe+zIeNg1iU2vo/wlz
LJicRD45iXxY6bq73u/3t/bP73a7utVQlXG55ZGp2AphJbWAnEQ+OYl8WOm6
u67n59Tz/8vPcet+fefhlthUbIUALJA2AVgw25wPhwDqhsCwCaD/B/jjXP8H
gGWzzfn4/J+6CbBw50emVq5w1r8f9T7GxrPjf7/+yHqMjV89lieNM4///foj
6zFubpzHrfN/Zu/j/H/akvBfNMn5/i8yk/NhpesCcTgcxtf/qVfsHKbGV/IZ
Xxo0NhVbIQC3aP4BWDZ7/f/hW7rqyT9D916nxlfyH3bsx6ZiKwTgFv0/ALNm
z6gfZsfX/5mcC1Qb+K+fb/J9ytSapW57bfDLsWCycf4Pmcn50A0ljDC1gIQ0
/6Ql50M3VDGA9fT/ALROFQNYyfk/AHRACSPMsWCy0f+TmZwP3VDCCFMLyEb/
T2ZyPnRDCQNYT/MPQOtUMYBNpE0AmqaQEeZYMAnZ/09acj50QxUjTC0gG+f/
k5mcD91QwgBW0v8D0AElDGAl/T8AHVDCCHMsmGz0/2Qm50M3lDDC1AIS0vyT
lpwP3VDFAG752uLTiwWAVdQsgE2kTQCappAR5lgwOUmb5CTnQzcUMsLUAnKS
NslJzoduKGQAm0ibADRNIQPYRNoEoGkKGWGOBZOTtElOcj50QyEjTC0gJ2mT
nOR86IZCBrCJtAlA0xQygE2kTQCappAR5lgwOUmb5CTnQzcUMsLUAnKSNslJ
zoduKGQAm0ibADRNIQPYRNoEoGkKGWGOBZOTtElOcj50QyEjTC0gJ2mTnOR8
6IZCBrCJtAlA0xQygE2kTQCappAR5lgwOUmb5CTnQzcUMsLUAnKSNslJzodu
KGQAm0ibADRNIQPYRNoEoGkKGWGOBZOTtElOcj50QyEjTC0gJ2mTnOR86IZC
BrCJtAlA0xQygE2kTQCappAR5lgwOUmb5CTnQzcUMsLUAnKSNslJzoduKGQA
m0ibADRNIQPYRNoEoGkKGWGOBZOTtElOcj50QyEjTC0gJ2mTnOR86IZCBrCJ
tAlA0xQygE2kTQCappAR5lgwOUmb5CTnw12Xy+VwOCyXidPpNLlDuWW325Ub
y88yfnzqLoWMMLWAnKRNcpLzYVltyK/b+7GygVCb9uGW8/lcbik/J+Pw1BoK
GcAm0iYA1w6HQ2nvvxfLxH6/L436+A7lt8Z778u43PLI1BoKGcAm0iYAC26V
iePxWJv28R12u13daqjqAYJHph5ZIdzlWDA5SZvkJOfDSrNl4nw+7/f76ztc
33m4JTYVXiGsoRaQk7RJTnI+rHRdJur++WGPvf4foC3SJgALrsvE4XA4Ho+z
d/hU/z/r3496H2NjY2PjYTzk2D+yHmNjY+MmxnnMNufX6haB8/9pS8J/0fAt
bZKVnA8r3S0TC9f/KRsFty7ys3LqKSuEW9QCcpI2yUnOh5U29f911/34Sv7D
jv3Y1FNWCMCYtAnAtdmTfG7dc/y/tYGv3+Q7+Rqv2NSapW66P0By0iYATVPI
CHMsmJykTXKS86EbChlhagE5SZvkJOdDNxQygE2kTQCappABbCJtAtA0hYww
x4LJSdokJzkfuqGQEaYWkJO0SU5yPnRDIQPYRNoEoGkKGcAm0iYATVPICHMs
mJykTXKS86EbChlhagE5SZvkJOdDNxQygE2kTQCappABbCJtAtA0hYwwx4LJ
SdokJzkfuqGQEaYWkJO0SU5yPnRDIQPYRNoEoGkKGcAm0iYATVPICHMsmJyk
TXKS86EbChlhagE5SZvkJOdDNxQygE2kTQCappABbCJtAtA0hYwwx4LJSdok
JzkfuqGQEaYWkJO0SU5yPnRDIQPYRNoEoGkKGcAm0iYATVPICHMsmJykTXKS
86EbChlhagE5SZvkJOdDNxQygE2kTQCappABbCJtAtA0hYwwx4LJSdokJzkf
uqGQEaYWkJO0SU5yPnRDIQPYRNoEoGkKGcAm0iYATVPICHMsmJykTXKS86Eb
ChlhagE5SZvkJOdDNxQygE2kTQCappABbCJtAtA0hYwwx4LJSdokJzkfuqGQ
EaYWkJO0SU5yPnRDIQPYRNoEoGkKGcAm0iYATVPICHMsmJykTXKS86EbChlh
agE5SZvkJOfTlvP5fDgcdj9K3q6Dcku5/dNL+zyFDGATaRPgLysdfmn19/v9
8Xgs48vlUm4sP8u43FJuL7PJtwIUMoBNpE2AP+t0OpX2vvx88D59U8gIcyyY
nKRNcpLzacJ+v687/JeV+5R7vnw1f5VCRphaQE7SJjnJ+dANhQxgE2kT4O8b
7+Gv45K9Vx4d6J5CBrCJtAnw95VWfzjDv4zrB37r539f96Rl4+JwOMyWifLU
w5WIJp8+rp9HqFOTTyXEpu5SyAhzLJicpE1ykvNpy5CrS09exsNu/9fl8OFj
xddPUTYKSv8/XIlovG1Sr1ZUtwjG4/DUGgoZYWoBOUmb5CTn05YhV9e2/Pr2
pytNfu3wr59isn++3G1YUvmt8WwZl1semVpDIQPYRNoE+PuGfex133u9sdzy
hsv+3C0T4/6/DMYfSXh86ikrBGBM2gT4+4bP/I53jA8fBHipu2Xi+OPWnYdb
YlNPWSHc4lgwOUmb5CTnw0rLZWJyDEL/T1vUAnKSNslJzoeVFsrE8XicnKj/
qf5/1r8f9T7GxsbGxsN4yLF/ZD3GxsbGTYzzmG3F66VBh9N+Bs7/B/j7pE2A
v284///aq5969iluffRgciWf8QGC2FR4hbBGwi16+JY2yUrOpy2l3x4uuf9m
s9f/v/UVXXXX/fhK/sOaY1OxFcJKagExt0475G0+HQI0Sc6nLe/PdQv5dnZq
6NhrA/8199XAsak1Sw2+SICQknaO//t//Pep/6R9IIOtu8RTUQiAN9P/6/8B
Xu18Pr/nav8tUggIcyyYGP2//p8Wyfm0pZ4b4xzIWd4EwtQCYvT/+n9aJOdD
NxQC4M30//p/AD5IIQDeTP+v/wd4kf1+v+Zjv/XbAV6+mr9KISDMsWBi9P/6
f1ok59OE0+m02+1uXWx//X36phAQphYQo//X/9MiOZ9W1Avj1+//KuN6OKD8
LONyS7k9cMH8zigEwJvp//X/AK9WOvzD4bD7Ub8kqyi3JO/8K4UAeDP9v/4f
gA9SCAhzLJgY/b/+nxbJ+dANhYAwtYAY/b/+nxbJ+dANhQB4M/2//h+AD1II
gDfT/+v/AfgghYAwx4KJ0f/r/2mRnE9b1nwLWFoKAWFqATH6f/0/LZLzaUvJ
da72eYtCALyZ/l//D/Bql8vldDrVrwA4Ho8OB4wpBMCb6f/1/wDvdD6f9z/K
FoENgW/9Pw9wLJgY/b/+nxbJ+bTueDx+/agbAp9ezicpBISpBcTo//X/tEjO
p1H1RKDdj7IJcD6f64ZA5k0AhQB4M/2//h/g1UrbX/r8/X5f2v7rDwKX/y23
f2Zlf4BCALyZ/l//D/Bqd8/zyZwMM792HuRYMDH6f/0/LZLzaYvP+S5QCAhT
C4jR/+v/aZGcT1tK/7/f7yc3lltsF3zr/4G30//r/wFebfbkn3LL9UZBQgoB
8Gb6f/0/wKvdynVy4Lc3gQc4FkyM/l//T4vkfNqy2+2uT/Upt2S+7M9AISBM
LSBG/6//p0VyPm2pp/qcz+e6FVB+1mt+Zr7s/0AhAN5M/6//B3iD0vDX6/+X
vFd+1s2BTy/qT1AIgDfT/+v/AfgghYAwx4KJ+eLTPh0CNEnOh24oBISpBcR8
2f9v/z8NkvOhGwoB8Gb6f/0/wKvV7/9yDHSWNwF4M/2//h/g1Urzfzwefdvv
LIWAMMeCidH/6/9pkZxPW+S6Bd4cwtQCYvT/+n9aJOfTltnv/6JSCIA30//r
/wFerV783wX/ZykEwJvp//X/AK9Wv/bL539neRMIcyyYGP2//p8WyfnQDYWA
MLWAGP2//p8WyfnQDYUAeDP9v/4f4A3O5/PhcKgnAtVb9vu9DwV/6/+Bt9P/
6/8BXu10OpXOv/wsDf+Q947HY9ki+Oi6/gSFgDDHgonR/+v/aZGcT1tK8z9c
/GfIe+Ntgcy8CYSpBcTo//X/tEjOpy3jXHdrnJY3AXgz/b/+H+DVZvf/l1vK
7Z9a0t+hEABvpv/X/wO82vX5/7X5L7d8emmfpxAQ5lgwMfp//T8tkvNpTv0K
4PqdX6Xz93XAA4WAMLWAGP2//p8WyfnQDYUAeDP9v/4fgA9SCIA30//r/wFe
7dZ1/l/6+d/L5VKedzbN1s8j1DORJp9BePrUXQoBYY4FE6P/1//TIjmftszm
upde/2f4xPH1U9fnrZ8+GI9fMbWGQkCYWkCM/l//T4vkfFqx3+/rjvFrW/vk
TQ6Hw+Vy+Z7rrsvUeBd9GQ+HJ54+tYZCALyZ/l//D/BqH8x1109dtjvqpkFV
xsNhiKdPxVYI8FL6f/0/wEcM3wXwUtdPsXDL06diK4SVHAsmRv+v/6dFcj7N
ORwOkxOByv8ej8dXP6/+n46pBcTo//X/tEjOpy2HH+MT8k+n036/H5828yJN
9P+z/v2o9zE2NjZ+4lj//0f6/z8SD8bGxknGbzY+Q37Ie1s/Jxvj/H+ACf3/
H+n/ATo2znVDb7y1T378qavJ5XqOx+OtK/k8PhVbIaz0qS16Wqf/1//TIjmf
toz3kM8eC3id66eo2x3jy/UP63n6VGyFsJJaQIz+X/9Pi+R82jLeQ3788f37
EYAXPePsGfXDbO3SZ7+D4OlTa5a67bUBPEb/r/8HeLXL5TJu9cvmQMl+7/n8
79+nEABvpv/X/wPwQQoBYY4FE6P/1//TIjkfuqEQEKYWEKP/1//TIjmfPsiB
394E4O30//p/gE+RA7+9CcDb6f/1/wCfIgd+exNY59b3RC9f6gpm6f/1/7TI
+T/0QQ789ibwAMFDjP5f/0+L9P/0QQ789ibwAMFDjP5f/w/wKXLgtzeBBwge
YvT/+n+A13Gi8l3eBMIEDzH6f/0/LXL+D3RDISBM8BCj/9f/0yL9P3RDISBM
8BCj/9f/A/BBCgFhgocY/b/+H4APUggIEzzE6P/1/7TI+T/QDYWAMMFDjP5f
/0+L9P/QDYWAMMFDjP5f/w/ABykEhAkeYvT/+n8APkghIEzwEHP3m1l4tU+H
AE1y/g90QyEgTPCQk8gnJ/0/dEMhI0zwkJPIB6BpChlhgoecRD4ATVPICBM8
5CTyycn5P9ANhYwwwUNOIp+c9P/QDYWMMMFDTiIfgKYpZIQJHnIS+QA0TSEj
TPCQk8gnJ+f/QDcUMsIEDzmJfHLS/0M3FDLCBA85iXwAmqaQESZ4yEnkA9A0
hYwwwUNOIp+cnP8D3VDICBM85CTyyUn/D91QyAgTPOQk8gFomkJGmOAhJ5EP
QNMUMsIEDzmJfHJy/g90QyEjTPCQk8gnJ/0/dEMhI0zwkJPIB6BpChlhgoec
RD4ATVPICBM85CTyycn5P9ANhYwwwUNOIp+c9P/QDYWMMMFDTiIfgKYpZIQJ
HnIS+QA0TSEjTPCQk8gnJ+f/QDcUMsIEDzmJfHLS/0M3FDLCBA85iXwAmqaQ
ESZ4yEnkA9A0hYwwwUNOIp+cnP8D3VDICBM85CTyyUn/D91QyAgTPOQk8gHY
6nw+7/f7UkHKzzIeT51Op91uV6bKzzJ+fOouhYwwwUNOIh+ATUp/fjgcLpdL
GZefZTx07GVboDTwdYtgPA5PraGQESZ4yEnkk5PzfyCs9Oe1+a/KuNxSx+Nt
ge/fLYVHptZQyAgTPOQk8slJ/w9hC/3/06fWUMgIEzzkJPIB2OR0Ou33+9nz
f65rynBLbGoNhYwwwUNOIh+ArUrP//VrfK6O/p+2CB5yEvnk5PwfCJvs/y/j
j+//n/XvR72PsfHsWJwY5xwPOfaPrMfY+D3jf7/+yHqMmxtn5vx/uiF4yEnk
A7DJ+uv/HI/HWxf5WTm1hkJGmOAhJ5EPwCYLn/+t2wLjK/kPWwqxqTUUMsIE
DzmJfHJyFgc8onbp9et6J9/V9fSpuxQywgQPOYl8ctL/QzcUMsIEDzmJfACa
ppARJnjISeQD0DSFjDDBQ04in5yc/wPdUMgIEzzkJPLJSf8P3VDICBM85CTy
AWiaQkaY4CEnkQ9A0xQywgQPOYl8cnL+D3RDISNM8NC9ry0+vVh4Lf0/dEPN
IkzwAAA0RwtHmOABAGiOFo4wwUNOzoIgJ5EP3dDCESZ4yEkXRE4iH7qhhSNM
8AAANEcLR5jgAQBojhaOMMFDTs6CICeRD93QwhEmeMhJF0ROIh+6oYX7oE1f
LcQrfDoEAADeTQv0QeXN/5/j//Xfp/4T/ABAQlqgD9L/6/9pkbMgyEnkQze0
QB+k/9f/0yJdEDmJfOiGFuiD9P/6fwCAN9MCfdBHPvHK2KdDAADg3bRAH/Rl
/7/9/zTIWRDkJPKhG1qgD9L/6/9pkS6InEQ+dEML9EH6f/0/AMCbaYE+6P+1
d7fHqfNaGEDTCaVQCqVQCqcTSqGUXE00r0fXgGM2H4601/qR0cFgyJwH89hW
jP6v/wMAfJgKtCH9X/+nR2ZBkJPkwzBUoA3p//o/PdKCyEnyYRgq0Ib0f/0f
AODDVKAN6f/6PwDAh6lAG9L/9X96ZBYEOUk+DEMF2pD+r//TIy2InCQfhqEC
bUj/1/8BAD5MBdqQ/q//AwB8mAq0If1f/6dHZkGQk+TDMFSgDen/+j890oLI
SfJhGCrQhvR//R8A4MNUoA3p//o/AMCHqUAb0v/1f3pkFgQ5ST4MQwXakP6v
/9MjLYicJB+GoQJtSP/X/wEAPkwF2pD+r/8DAHyYCrQh/V//p0dmQZCT5MMw
VKAN6f/6Pz3SgshJ8mEYKtCG9H/9HwDgw1SgDen/+j8AwIepQBvS//V/emQW
BDlJPgxDBdqQ/q//0yMtiJwkH55xuVz2+33pHrvd7nA4tItOp1O5sS4q4+cX
/UoF2pD+r/8DAMOr5b+29DI+Ho/TLsD5fC4FvvycjcOL1lCBNqT/6/8AwPCO
P9pbpiP2ZUegPXpfxtOuQWzRGirQhvR//Z8emQVBTpIPYfv9/t7x+d1ud7lc
pn+WcbnlmUVrqEAb0v/1f3qkBZGT5ENYnZ9T5/+Xn211v24j0y2xRWuoQBvS
//V/AGB4tfZP0/XbXQD9Pxv9X/8HAIZXKkc7/6fuAkyLru/8zKKVr+emfz/q
fYzfNNb/N+//m2fA2NjYuJfxv//8kddj3N04s+vr80x13fz/bPT/zfv/1hGg
Sz7LyEnyIexwOLTX/6lX7JwWtVfyaS8NGlu0hgq0If1f/wcAhlePz9fGXif/
TO29Lmqv5D8d2I8tWkMF2pD+r/8DABm01/+ZzQWqBb5+k+9LFv1KBdqQ/q//
0yOzIMhJ8mEYKtCG9H/9nx5pQeQk+TAMFWhD+r/+DwDwYSrQhvR//R8A4MNU
oA3p//o/PTILgpwkH4ahAm1I/9f/6ZEWRE6SD8NQgTak/+v/AAAfpgJtSP/X
/wEAPkwF2pD+r//TI7MgyEnyYRgq0Ib0f/2fHmlB5CT5MAwVaEP6v/4PAPBh
KtCG9H/9HwDgw1SgDen/+j89MguCnCQfhqECbUj/1//pkRZETpIPw1CBNqT/
6/8AAB+mAm1I/9f/AQA+TAXa0Bdb2zoCdMksCHKSfBiGCkSY8JCTFkROkg/D
UOEIEx4AgO6ocIQJDwBAd1Q4woSHnMyCICfJh2GocIQJDzlpQeQk+TAMFY4w
4QEA6I4KR5jwAAB0R4UjTHjIySwIcpJ8GIYKR5jwkJMWRE6SD8NQ4QgTHgCA
7qhwhAkPAEB3VDjChIeczIIgJ8mHYahwhAkPOWlB5CT5MAwVjjDhAQDojgpH
mPAAAHRHhSNMeMjJLAhyknwYhgpHmPCQkxZETpIPw1DhCBMeAIDuqHCECQ8A
QHdUOMKEh5zMgiAnyYdhqHCECQ85aUHkJPkwDBWOMOEBAOiOCkeY8AAAdEeF
I0x4yMksCHKSfBiGCkeY8JCTFkROkg/DUOEIEx4AgO6ocIQJDwBAd1Q4woSH
nMyCICfJh2GocIQJDzlpQeQk+TAMFY4w4QEA6I4KR5jwAAB0R4UjTHjIySwI
cpJ8eInT6TRrUOWW3W5Xbiw/y/j5Rb9S4QgTHnLSgshJ8uF5l8ullvbplvP5
XG4pP2fj8KI1VDjChAcAYL39fl+KetugDodDe/S+jMstzyxaQ4UjTHgAAFY6
Ho+1tLcNarfbXS6X6Z/1BMEzi9ZQ4QgTHnIyC4KcJB+ecT6f9/t9HbcN6rpN
TbfEFq2hwhEmPOSkBZGT5ENYPT4/HbHX/+mX8AAA/OpwOByPx+mff6H/3/Tv
R72PsfHNsZwYGxsbGxsbrxxndrNs1z0C8//pi/CQk88ycpJ8eJWF6/+UnYJ7
F/lZuejRFwAPER5y0oLISfLhVdoGVQ/dt1fynw7sxxY9+gLgIcIDAPCoWYOq
Bb5+k+/sa7xiix59AbCe8AAAdEeFI0x4yMksCHKSfBiGCkeY8JCTFkROkg/D
UOEIEx4AgO6ocIQJDwBAd1Q4woSHnMyCICfJh2GocIQJDzlpQeQk+TAMFY4w
4QEA6I4KR5jwAAB0R4UjTHjIySwIcpJ8GIYKR5jwkJMWRE6SD8NQ4QgTHgCA
7qhwhAkPAEB3VDjChIeczIIgJ8mHYahwhAkPOWlB5CT5MAwVjjDhAQDojgpH
mPAAAHRHhSNMeMjJLAhyknwYhgpHmPCQkxZETpIPw1DhCBMeAIDuqHCECQ8A
QHdUOMKEh5zMgiAnyYdhqHCECQ85aUHkJPkwDBWOMOEBAOiOCkeY8AAAdEeF
I0x4yMksCHKSfBiGCkeY8JCTFkROkg/DUOEIEx4AgO6ocIQJDwBAd1Q4woSH
nMyCICfJh2GocIQJDzlpQeQk+TAMFY4w4QEA6I4KR5jwAAB0R4UjTHjIySwI
cpJ8GIYKR5jwkJMWRE6SD8NQ4QgTHgCA7qhwhAkPAEB3VDjChIeczIIgJ8mH
YahwhAkPOWlB5CT5MAwVjjDhAQDojgpHmPAAAHRHhSNMeMjJLAhyknwYhgpH
mPCQkxZETpIPw1DhCBMeAIDuqHCECQ8AQHdUOMKEh5zMgiAnyYdhqHCECQ85
aUHkJPkwDBWOMOEBAOiOCkeY8AAArHE8Hne7XelO5ef5fG4XnU6naVEZP7/o
VyocYcJDTmZBkJPkQ9jhcCj9/3K5lHH5ud/vp8Ze9gWmPYJ2HF60hgpHmPCQ
kxZETpIPYbPj82UXoDT2Oi67Bu3SMi63PLNoDRWOMOEBAHhU2//LoJ4XeNWi
NVQ4woQHAOBRxx91fN2mpltii9ZQ4QgTHnIyC4KRrN+S2+bDS5xOp/1+P/1T
/6cvwkNO+j/D+PrPC+/57dMB7jsej7OJ+lv1/5v+/aj3MTa+OZYTY2Nj437H
6z/3Z/dcXn97t81/R+M/NU7ucrnUqwDNbjf/n74ID0C/brb6m4uWrVwnJLff
729eonN2JZ/2BEFs0RrenoQJDzk5lsUw1hf1d9wT8pjV9VY9dN9eyX86sB9b
tIZ3KGHCQ076PzEPHVTnHbaOAHndDOTU2GuB/7r11cCxRWtezxO/DakJD8B6
n6u53LF1BOCv8HZIYv1/dC/3BOjLlsWXH1tHAP4Kb4cM1m/6erknbMj8H4an
VMPYvHOHt35DvXDP8GfBS54d/hT9n5wkH4ahaGWwvlT3ck8AAGJ0reG94wj8
tvcEACBM0cpgZal+U1d3/J/BmAVBTpIPw9C1klj5H/2mrr4+ZgLJ36cFkZPk
wzDULWZevqcAAMDfob8RYK4+AECnlDdilH/SMguCnCQfhqG/ESY85KQFkZPk
wzBUOAAAyEP/BwCAPPR/wpwLJifJJyfJh2Ho/4T5LCAnyScnyYdh6P8AAJCH
/g8AAHno/4Q5F0xOkk9Okg/D0P8J81lATpJPTpIPw9D/AQAgD/0fAADy0P8J
cy6YnCSfnCQfhqH/E+azgJwkn5wkH4ah/wMAQB76PwAA5KH/E+ZcMDlJPjlJ
PgxD/yfMZwE5ST45ST4MQ/8HAIA89H8AAMhD/yfMuWByknxyknwYhv5PmM8C
cpJ8cpJ8GIb+DwAAeej/AACQh/5PmHPB5CT55CT5MAz9nzCfBeQk+eQk+TAM
/R8AAPLQ/wEAIA/9nzDngslJ8slJ8mEY+j9hPgvISfLJSfJhGPo/AADkof8D
AEAe+j9hzgWTk+STk+TDMPR/wnwWkJPkk5PkwzD0fwAAyEP/BwCAPPR/wpwL
JifJJyfJh2Ho/4T5LCAnyScnyYdh6P8AANCX0+m02+1Kky8/y/ihx+r/AADQ
kfP5XGp/+Tkbr6T/E+ZcMDlJPjlJPvwdh8OhPeZfxuWW9Q/X/wnzWUBOkk9O
kg9/x263u1wu0z/LuNyy/uH6PwAAdOS6wD9U6fV/AADoiP7PVpwLJifJJyfJ
h7/j+f5/078f9T7GxjfHcmKcczxtY//I6zE2/szYNt/4yTEv9OT8fwAAoCOz
6/8cj8eHrv8DAAB0pB7wb6//354OAAAABlNrf/3+34e+/AsAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAICtfH19vW/l9Svt3voUEPbuZMo/f0QshD4dAD7m6/+V
LeR+vz8ej9PS0+l084Hl9oVtaVlD+Kvlygt46P6T8nS+xo4Fxx+PLgo8yxT+
e2+fBfLPep+J9KOWa/YmbxDvDoDW9Yb6crmU7fPhcKhLyyb65gPLRvjeRr48
tqyhrKeurdzzoY38vWf8lWM7/KqE8zqN5ZYa+Jes/5nwf8s/D3p3pAMWorjV
G8S7A6B1b6tYby8/Fz5c7j12dv964nX2dPW8QD0KVD4C6sfBd3M+ov3wKiu8
ebyoXUlrzS9OWiVa7ZHAMn40bG1iZ2bHGG+Gf2Ft8k/AWyPdrmF2t3trXgjh
y98g3h0AATe3h9M2uZ4zvT7eUjetK7elN7fw7Vb9eDy2p3Rnq60voH5qtOPv
/3ZP2o+GNa8HSt5qikp42qa0HLZ7iV1wr97IP6/1vkiX+093KwV7ulst3tOT
zta88mU/+Qbx7gCIud4qlu3nNHG0Lp0dV6mb/ZuPvamdhtr2/2lDXTbRsy1/
+/DZCeL2vPZsSqctPCvViQezw6Tfq8M2S+zCs7Snz2Yhl39e6H2RnvYslm+v
uwnTmle+5iffIN4dADFft8w241Phr6bdgTVb1PZ40ff/9//Zy7g5rv9szzjf
O1608vVAVfZJS2BmfyD5wrBdT+NZDvnCIvlnjTdFutz/5tSg6zXf27zf9JI3
iHcHQMxsq1i2n/UI0vT3v/X2qfO3+wK/blGnvyO+frqH+s+1X1cCC+rstdqX
ZgcJXxi25cOb99Ym/wS8L9Lrb3+o/3+/4g3i3QEQc3OrOB3JmZZOtb+dC7Sw
Ra0b9uurz63ZOM8WLVztwRaegIU5wy8P28L05ntrk38e9dZI3zv+P7t94dj7
giffIN4dADEr+//3z5a2Xrd5+bHVvSmjgf5/b1XLK4Gbat9o5wzXvlSbzPNh
W3Pxq+W1yT8PeXekXzv//7VvEO8OgJjrreLl5/r/7d//VteTS+9tUW9eMnT2
kIWN8+7/vzKsPZxVX9u9TxlbeJZdN6Wqnt6qk9+eDNvC5c1X1hv5Z70PRLrd
m7h3/Z96nzWnhl/7BvHuAIiZzZzc/Xz/780Ncnug5nrpwjqrusFf0//rJr19
rukKz1+Ll3SzhWfZwpcNTcXm+bCVR+1uffn1ynoj/6z3mUi/8Pr/369+g3h3
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAJDB5XLZ7XZfX19lXH9uYsOnBgCAP+t0Ou33+68fpbcfDodS4J9ZYVnP
+Xx+zYt7UPlFNnleAADoQmn7pTPXul5qfxkcj8eyF/BMgd/wwHt55Vs9NQAA
/HGn0+lmYT7+aO9TTw2U8XSfuo9QF5U9iHrKoNzy1fi+2heY1lYfMi2d3a39
Z/tE9ZbywLLbMr2qMp4eVdVb7j31ml8EAADGU+pu24Sv1c48nR1ozwu0bbns
LLQTb9ri3Y7btU1t/Ppu12uYTUmqL7veUvcF2l2AX596/S8CAAAjKTV4+XD3
NDWoKuOpHreT/Nsj+d/3S/hsbaWTr+z/y5ORap9/6KlX/iIAADCSX7tuuUO7
g7Byxs698Wx3I7C2hdf568sIPDUAAIzk1+P/12X4mf7//Nom9Y+U6wyi6W8N
Xv7UAAAwkl/n/18fsb850+Y71P/Dx/8Ph0Pp/5cfs/usP/Ww5hcBAICR1Ove
XJ8CKO26/kXt8rT59iGB+f/lWdrePr2MehGhm2u4eUt7/9j8/4WVAwDASGZX
+59d/7+9bE7dWZjOFwT6f/2isdrzZ9f/KbfXK46WpfXLyG6uoZpeRrlzXee0
FzO7sE/71IFfBAAAxrP8/b/3Lpsf6P/f96//P9X+6Wr899bw/d/R+/bVTqcS
6mPrw1de/1//BwCAd5hdxrOdhA8AAAymTvKZvrfr178+BgAA+lW/q7dOwimD
5W/1AgAAAAAAAAAAAAAAAAAAAAAAAMjmf5QSWB4NCmVuZHN0cmVhbQ0KZW5k
b2JqDQo3NiAwIG9iag0KPDwvVHlwZS9QYWdlL1BhcmVudCAyIDAgUi9SZXNv
dXJjZXM8PC9FeHRHU3RhdGU8PC9HUzUgNSAwIFIvR1MxMCAxMCAwIFI+Pi9Y
T2JqZWN0PDwvSW1hZ2UxOSAxOSAwIFIvSW1hZ2U3OCA3OCAwIFI+Pi9Gb250
PDwvRjEgOCAwIFIvRjIgMTUgMCBSPj4vUHJvY1NldFsvUERGL1RleHQvSW1h
Z2VCL0ltYWdlQy9JbWFnZUldID4+L01lZGlhQm94WyAwIDAgOTYwIDU0MF0g
L0NvbnRlbnRzIDc3IDAgUi9Hcm91cDw8L1R5cGUvR3JvdXAvUy9UcmFuc3Bh
cmVuY3kvQ1MvRGV2aWNlUkdCPj4vVGFicy9TL1N0cnVjdFBhcmVudHMgMTg+
Pg0KZW5kb2JqDQo3NyAwIG9iag0KPDwvRmlsdGVyL0ZsYXRlRGVjb2RlL0xl
bmd0aCA1ODg+Pg0Kc3RyZWFtDQp4nLVU22rbQBB9F+gf5nE34NVepRWEQGyn
ISWBtnZpoPTBTWzV4Fslt00/qX/ZmV0ntnKxH0JehvHMrPacM2edndbr6WR0
s4buVQ9+pokEKaSUSmtZQJlLcFZCPU6TL0ewSJPsfOCgatJEQfUwLHMljWtN
T47S5GOawBl+NXt8hzeFKByoQmgHRS4wdVTYXhOK+PVNo3XgZo4wLuajaqxK
6C/h/hrIBqvRAo6Ps6veRR9kdjlaVMDGi87nAT85gW4/EgyIlTWSbnjKsDvE
z79TUIoCrxxOiGpAAlaXAkVRWpQIYzgn/lWQRMmgiYTzNPnK/vGO0Qy49azH
jWJLrkq2ovAXOzmruc7ZlHcKVlHxB4U172iPZzrKK6apIilsM2pJx665MjIe
nlEI2YIG7vg3GL5Pk7PhHuUPbFcK7/PAtg7bdcaQ4jSY3y9od7OPJFevklyD
0cK0FHdaeAfWO2FMFFxIW0TrxSwI/mnc/OIoyBpD84wMkH14wKi3sFAEdFlO
4DTkpSGGTuu2Ezd1wrPp7RxTO2Ys/B4zmleaUXkhdduNyggPFhuq2CNND/1C
BrRsvkKLFWxEeT3lSqFtqFA9K1gLvX0j9KbMhd0D/ppbxcYEOEKlN2DZb6o2
IuRYce6FuS31WXhcIa1xTLPbw5zdW3GOnn6Z9CXBDFj/EIFAqyae9Nix0ER2
3wPT0F2HQoxx/DC9/I3oae+F3kfvlHYVFzLb/Ochj7gWfMXbeuSDbPHPcrm7
Www7vwPhKElDB8uo0u2m+VSI/7VPc98NCmVuZHN0cmVhbQ0KZW5kb2JqDQo3
OCAwIG9iag0KPDwvVHlwZS9YT2JqZWN0L1N1YnR5cGUvSW1hZ2UvV2lkdGgg
MTAyNC9IZWlnaHQgNzY4L0NvbG9yU3BhY2UvRGV2aWNlUkdCL0JpdHNQZXJD
b21wb25lbnQgOC9JbnRlcnBvbGF0ZSBmYWxzZS9GaWx0ZXIvRmxhdGVEZWNv
ZGUvTGVuZ3RoIDEyODM3Pj4NCnN0cmVhbQ0KeJzs3dFx6kqUBVBnQigKhVAI
hfs9SRDHfJHE/Hu63GWVHggh5I2h3WvVK1cbYSxz9ztskIw/PwEAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAICWfHx8vHoX/pSG7s9f29WG7hMAoCGHL49u+jVvu3vbuln5
quPxOLupXL7mNodh2PB9bynftNzgx5fdbrff78/n809ucPPu3frZP27bvpcP
yt7nU+/w0wEAHSqt77qUlkvK5S/YmyvvuXub+3+p2bObag+/ewu3vnyDcgeW
b3o6ncq61P6yKM+nyu3XS7bZvHsL/X/zzqQE7/MF7/CTAgD9KFVw2vrKetqu
S9kuFah212kVr12xbipN8vql43JJ2TS9fHpJ+Ti++Dz75St379Ye3t292Vu4
uOatn31z/194OjO9zdnvO744/Oi/zq2f9/ry6VGVR//dL3ZvdgcevT+X7+eL
V+Zropa/0eeNf+uLbzR+en2fX1xz8/8dd3/S6SXTW6vrWze+8IMDAExNXwqe
1staM+qm6frzq5+M3aOUxtnTJMqF07N0plcri7Gf1BNRNuzewh6u2b3xFsZr
TvekVqnx+1787At7e0v5qrqHF5fXWx5vc/33Xb7mwvk80zt/1vIt37pjp7t3
vQMb7s/l+/nimeD4PHEhtLf+rW/1/+VN2+6llT/pxT5Mb618o9kbX/jBAQAu
1NdOr19avyiK0xNvapsdv3y2ql00n+mtPVShb+3ewh6u2b3xFmZr0sXltTpu
2PlR/aqLF2bHl+LH21z/fZevudD9yndcfkV65S1f3LEX64sd2HB/3r2fx+Mp
02QuhPbWv/W2/r/tXpp1t/9f3NrsjS/84AAA10pXL0Xi4pdqr0/gGV++XuhF
0+vfqlL7L6WirPyd09ndW9jDNbtX3SrDsycv3b21BfWrLs69GZ8OTG985ffd
vIdr6uj6fbi73ry3HzdMr1PvwOlduhDahX/rNT/U9aYN99Ksu/1/zd4u/OAA
ABfq+Se1Y09f0lxoXysbzvia5PWrkfVMho8VJ0jf2r2FPVxfwNa/+Ly+ry7f
4Nj5p8V14cbX3+cr+//d1/+37cPd/v/o3t6tzZ9zTwzXh/bWN1rf/2/dzqv6
/60fHABgauG04YXXD1c2nFLMau2f/dXXz+83n1k+P3/hrOZbe7i+gN0qwxeX
Lxz7WGn8qrH27/77672Pft/Ne3j3/P/1t7y+/2/Y27v383jW/fTGF0Kbff1/
2700K9L/vdoPAKxRS8u0DU7b1K3zpT9XN5zxdOXlcrLw5Qu7t7CH6wvYL5//
X5UfoR7+uN6aOv9/YU8u7sPR+GRt/S2v7/9POv+/vvK/5iT/hU0fkzNnTpPf
xb7eh+mn2+6lWZH+v/CDAwBU1+26qi9Q11fmp+9wMv193odeYC9ftfCbxbfe
/+fu7n3+94jAdA/X7960DN96/596nW2/vDy7D7Nnrdz9vhfHPn6yhxfv9n/6
7/v/r7/liyc14w1e78CGvV3zLGb8dPb9fy5Ce+vfevh+o6rz99vSzv5QF7u0
7V5a+ZNu6P8LPzgAQLVwHsjYjsZ3FP/47zs6rm84s+ft1xdL683eOv9/ze7d
2sOHCtjxt97/f1xf/27mdbG8/r614E2/8Cd7eFz8+78rb3n66XT3Znfg0b29
Ppt99HnVzD8nfxHgVmg/b/xbj7V/PJto9oe63tUN99Ktn3ThkpX9/3PxBwcA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAIAXOhwOu93u4+OjfDydTtNNx+Nx3FTWT90EAAA8236/L/3/fD6X
dfk4DMNYy8tzgfEZwXT9jE0AAMAvuHgRvjwFKLW8rstTg+nWsi6XPGkTAADw
+6b9vyzqcYFf2AQAAPy+w5e6/vj4uNg6XhLfBAAA/LLj8TgMw/ip/g8AAH/V
4XC4OBv/3fr/xw3/vtTrWL/nuv4zvc/+WLe+rqPjffbHuum1xxHr7HrsNm+y
P9Yb1j04n8/1XYAuLn+38/8dLGhXV/9D8QskiiBxIkuiaMIwDLPvw3nxdj3T
AwTxTWvo/+0yDMmSKILEiSyJ4v1ddPKp+vr89O36x1fv45vW0P8BAOCHZs+o
H2t5bemzfxo4vmnNrj760wEAAI3S/9vlYChZEkWQOJElURCk/7fLMCRLoggS
J7IkCoL0fwAA6If+DwAA/dD/2+VgKFkSRZA4kSVREKT/t8swJEuiCBInsiQK
gvR/AADoh/4PAAD90P/b5WAoWRJFkDiRJVEQpP+3yzAkS6IIEieyJAqC9H8A
AOiH/g8AAP3Q/9vlYChZEkWQOJElURCk/7fLMCRLoggSJ7IkCoL0fwAA6If+
DwAA/dD/2+VgKFkSRZA4kSVREKT/t8swJEuiCBInsiQKgvR/AADoh/4PAAD9
0P/b5WAoWRJFkDiRJVEQpP+3yzAkS6IIEieyJAqC9H8AAOiH/g8AAP3Q/9vl
YChZEkWQOJElURCk/7fLMCRLoggSJ7IkCoL0fwAA6If+DwAA/dD/2+VgKFkS
RZA4kSVREKT/t8swJEuiCBInsiQKgvR/AADoh/4PAAD90P/b5WAoWRJFkDiR
JVEQpP+3yzAkS6IIEieyJAqC9H8AAOiH/g8AAP3Q/9vlYChZEkWQOJElURCk
/7fLMCRLogjy4EKWAQVBRjQAWR/fXr0jAMwwnwEI+vivV+8OAJcM53Y5GEqW
RJGi/BNnQEGQ+dwuw5AsiSLIgwtZBhQEGdEAANAP/R8AAPqh/7fLwVCyJIog
cSJLoiBI/2+XYUiWRBEkTmRJFATp/wAA0A/9HwAA+qH/t8vBULIkiiBxIkui
IEj/b5dhSJZEESROZEkUBOn/AADQD/0fAAD6of+3y8FQsiSKIHEiS6IgSP9v
l2FIlkQRJE5kSRRNOJ/P+/1+tl2fTqdhGMqm8rGsp5uOx+Nutyubysey/vmm
u/R/AAD4oVrIy8frdl0uLM8LyrODz+/nCGNjL88FylfVZwTT9eZNa+j/AADw
Q2PDv27XpZ/XTVVZl0vGr5q+el+fKfxk0xr6f7scDCVLoggSJ7IkioY81P/j
m7btIa0wDMmSKILEiSyJoiGz5/8MwzB7/s/1lcdLtm3atocAAMA2s+26/l5w
NT1XR/8HAICm3X39v6xf/vr/rH9f6nWsra17WNdP32d/rJte//v2JvtjbW39
8nU/nP/P83T4PxRPJVEEiRNZEkVDfvL+P4fD4dab/KzctG0PAQCAbR76/d/6
XGD6Tv7jM4Vtm7btIQAA8JDZM+rHrbWl1z/Xe/G3uuKb1uzqYz8bb8PBULIk
iiBxIkuiIEj/b5dhSJZEESROZEkUBOn/AADQD/0fAAD6of+3y8FQsiSKIHEi
S6IgSP9vl2FIlkQRJE5kSRQE6f8AANAP/R8AAPqh/7fLwVCyJIogcSJLoiBI
/2+XYUiWRBEkTmRJFATp/wAA0A/9HwAA+qH/t8vBULIkiiBxIkuiIEj/b5dh
SJZEESROZEkUBOn/AADQD/0fAAD6of+3y8FQsiSKIHEiS6IgSP9vl2FIlkQR
JE5kSRQE6f8AANAP/R8AAPqh/7fLwVCyJIogcSJLoiBI/2+XYUiWRBEkTmRJ
FATp/wAA0A/9HwAA+qH/t8vBULIkiiBxIkuiIEj/b5dhSJZEESROZEkUBOn/
AADQD/0fAAD6of+3y8FQsiSKIHEiS6IgSP9vl2FIlkQRJE5kSRQE6f8AANAP
/R8AAPqh/7fLwVCyJIogcSJLoiBI/2+XYUiWRBEkTmRJFATp/wAA0A/9HwAA
+qH/t8vBULIkiiBxIkuiIEj/b5dhSJZEESROZEkUBOn/AADQD/0fAAD6of+3
y8FQsiSKIHEiS6IgSP9vl2FIlkQRJE5kSRQE6f8AANAP/R8AAPqh/7fLwVCy
JIogcSJLoiBI/2+XYUiWRBEkTmRJFATp/wAA0A/9HwAA+qH/t8vBULIkiiBx
IkuiIEj/b5dhSJZEESROZEkUBOn/AADQD/0fAAD6of+3y8FQsiSKIHEiS6Ig
SP9vl2FIlkQRJE5kSRQE6f8AAPBz5/N5v9/PtuuyaRiGsmm325XrTDcdj8dy
Yd1U1j/fdJf+DwAAP1QLefl43a5r+a8tvawPh8P4FOB0OpWvKh8v1ps3raH/
t8vBULIkiiBxIkuieH+l0pdu/znXrg9fppeMr9iXr5q+el/W41ODbZvW0P/b
ZRiSJVEEiRNZEkVDrtv1MAy3Xp/f7Xb1WUNV1uWSn2zatocAAMA21+26np9T
z/8vH6fV/frK4yXbNm3bQwAAYJvZcj4eAqhPBManAPo/D3EwlCyJIkicyJIo
GjJbzqfn/9SnAAtX/smmlXs469+Xeh1ra+se1vXT99kf66bX/769yf5YW1u/
fN2PW+f/zF7H+f8AANC063a93++n7/9T37Fz3DR9J5/pW4Nu27RtDwEAgG1m
3/9//Ctd9eSfsb3XTdN38h9f2N+2adse0ooOD6jxVBJFkDiRJVG8v9kz6set
0/f/uTgXqBb4+pd8I5vW7OpjPxtvwzAkS6IIEieyJAqC9H8AAOiH/g8AAP3Q
/9vlYChZEkWQOJElURCk/7fLMCRLoggSJ7IkCoL0fwAA6If+DwAA/dD/2+Vg
KFkSRZA4kSVREKT/t8swJEuiCBInsiQKgvR/AADoh/4PAAD90P/b5WAoWRJF
kDiRJVEQpP+3yzAkS6IIEieyJAqC9H8AAOiH/g8AAP3Q/9vlYChZEkWQOJEl
URCk/7fLMCRLoggSJ7IkCoL0fwAA6If+DwAA/dD/2+VgKFkSRZA4kSVREKT/
t8swJEuiCBInsiQKgvR/AADoh/4PAAD90P/b5WAoWRJFkDiRJVEQpP+3yzAk
S6IIEieyJAqC9H8AAOiH/g8AAP3Q/9vlYChZEkWQOJElURCk/7fLMCRLoggS
J7IkCoL0fwAA6If+DwAA/dD/2+VgKFkSRZA4kSVREKT/t8swJEuiCBInsiQK
gvR/AADoh/4PAAD90P/b5WAoWRJFkDiRJVEQpP+3yzAkS6IIEieyJAqC9H8A
AOiH/g8AAP3Q/9vlYChZEkWQOJElURCk/7fLMCRLoggSJ7IkCoL0fwAA6If+
DwAA/dD/2+VgKFkSRZA4kSVREKT/t8swJEuiCBInsiQKgvR/AADoh/4PAAD9
0P/b5WAoWRJFkDiRJVEQpP+3yzAkS6IIEieyJAqC9H8AAOiH/g8AAP3Q/9vl
YChZEkWQOJElURCk/7fLMCRLoggSJ7IkCoL0fwAA6If+DwAAP3c+n/f7/XK7
Ph6PF1col+x2u3Jh+VjWP990l/7fLgdDyZIogsSJLIni/dVCfl3vp8oThFra
x0tOp1O5pHy8WG/etIb+3y7DkCyJIkicyJIo3t9+vy/1/nOxXQ/DUIr69Arl
q6av3pd1ueQnm9bQ/wEAIOVWuz4cDrW0T6+w2+3qs4aqHiD4yaaf7CEAAPCo
2XZ9Op2GYbi+wvWVx0u2bdq8hzTBwVCyJIogcSJLomjIdbuur8+Pr9jr/2xm
GJIlUQSJE1kSRUOu2/V+vz8cDrNXeFX/n/XvS72OtbW1tbW1tbW19U/W/Zgt
59fqMwLn/wMAQNPutuuF9/8pTwpuvcnPyk2RPeRtdfiEmqeSKILEiSyJoiEP
9f/60v30nfzHF/a3bYrsIW/LMCRLoggSJ7Ikivc3e5LPrWtOP60Fvv4l34s/
47Vt05pdfej6AABAu/R/AADoh/7fLgdDyZIogsSJLImCIP2/XYYhWRJFkDiR
JVEQpP8DAEA/9H8AAOiH/t8uB0PJkiiCxIksiYIg/b9dhiFZEkWQOJElURCk
/wMAQD/0fwAA6If+3y4HQ8mSKILEiSyJgiD9v12GIVkSRZA4kSVREKT/AwBA
P/R/AADoh/7fLgdDyZIogsSJLImCIP2/XYYhWRJFkDiRJVEQpP8DAEA/9H8A
AOiH/t8uB0PJkiiCxIksiYIg/b9dhiFZEkWQOJElURCk/wMAQD/0fwAA6If+
3y4HQ8mSKILEiSyJgiD9v12GIVkSRZA4kSVREKT/AwBAP/R/AADoh/7fLgdD
yZIogsSJLImCIP2/XYYhWRJFkDiRJVEQpP8DAEA/9H8AAOiH/t8uB0PJkiiC
xIksiYIg/b9dhiFZEkWQOJElURCk/wMAQD/0fwAA6If+3y4HQ8mSKILEiSyJ
giD9v12GIVkSRZA4kSVREKT/AwBAP/R/AADoh/7fLgdDyZIogsSJLImCIP2/
XYYhWRJFkDiRJVEQpP8DAEA/9H8AAOiH/t8uB0PJkiiCxIksiYIg/b9dhiFZ
EkWQOJElURCk/wMAQD/0fwAA6If+3y4HQ8mSKILEiSyJgiD9v12GIVkSRZA4
kSVREKT/AwBAP/R/AADoh/7fLgdDyZIogsSJLImCIP2/XYYhWRJFkDiRJVEQ
pP8DAEA/9H8AAOiH/t8uB0PJkiiCxIksiaIJ5/N5v9/PtuvD4bDb7cqm8vF0
Ok03HY/HcVNZ/3zTXfp/uwxDsiSKIHEiS6J4f7WQl4/X7bo8KSj9vzw7+Px6
jjAMw9jYy3OB8RnBdL150xr6PwAA/FAp+bXhX7fri9fny9VKYx+/arq1rMsl
P9m0hv4PAAApd9v1tP+XRX3WkNoU2UPeloOhZEkUQeJElkTRkLvt+vDl1pXH
S7Ztiuwhb8swJEuiCBInsiSKhiy36+PxOAzDwpX1fwAAaMhCuz4cDhcn6r+q
/8/696Vex9ra2tra2tra2von637MVvH61qDjaT8j5//zkA7/h+KpJIogcSJL
omjIbLsehmH2LTov3slneoBg26bNe0gTDEOyJIogcSJLomjI7Pv/3/oTXfWl
++k7+Y8v7G/btG0PAQCAh8yeUb+waWzstcDP/mngbZvW7OrGHxIAAGiN/t8u
B0PJkiiCxIksiYIg/b9dhiFZEkWQOJElURCk/wMAQD/0fwAA6If+3y4HQ8mS
KILEiSyJgiD9v12GIVkSRZA4kSVREKT/AwBAP/R/AADoh/7fLgdDyZIogsSJ
LImCIP2/XYYhWRJFkDiRJVEQpP8DAEA/9H8AAOiH/t8uB0PJkiiCxIksiYIg
/b9dhiFZEkWQOJElURCk/wMAQD/0fwAA6If+3y4HQ8mSKILEiSyJgiD9v12G
IVkSRZA4kSVRPOp0Ou33+92XUnfrolxSLn/1rr2e/g8AwJ9RGn6p+sMwHA6H
sj6fz+XC8rGsyyXl8rK182cB+j8AAH/D8Xgs9b58/OF1/jb9v10OhpIlUQSJ
E1kSxUrDMNQX/JeV65RrPn1v3pX+3y7DkCyJIkicyJIoCNL/AQD4Y6av8Nd1
Kb0rjw78efo/AAB/TKn64xn+ZV1/4bf+/u/rdupd6P/tcjCULIkiSJzIkige
NVbc8/lc1uPL/qrvpzuhZYYhWRJFkDiRJVE8aqy49d1+ri/vmTsBAIA/Zjz/
Z7/fHw6HemG5xPk/n/o/AAB/zvg7v6X/jxeOvwjQOf2/XQ6GkiVRBIkTWRIF
Qfp/uwxDsiSKIHEiS6IgSP8HAIB+6P8AAPwx4/n/1169a6/nTmiXg6FkSRRB
4kSWRPGoUv4Ph4O/9jtL/2+XYUiWRBEkTmRJFI9ScRe4cwAA+GN2u50X/2/R
/wEA+GNOp5N3+79F/2+Xg6FkSRRB4kSWRPGo3W43+8u/qu+n/t8yw5AsiSJI
nMiSKAjS/wEAoB/6PwAAf8MwDGt+7bf+dYCn78270v/b5WAoWRJFkDiRJVGs
dDwed7td+fjD6/xt+n+7DEOyJIogcSJLoljvdDqVel///ldZ18MB5WNZl0vK
5WVr5+8LpP8DAPDHlIa/3+93X0rdrYtySefNv9L/AQCgH/p/uxwMJUuiCBIn
siQKgvT/dhmGZEkUQeJElkRBkP4PAAD90P8BAKAf+n+7HAwlS6IIEieyJIpH
rfkrYN3S/9tlGJIlUQSJE1kSxaNKxfVun7fo/wAA/DHn8/l4PNY/AXA4HBwO
mNL/AQD4w06n0/ClPCPwROBT/2+Zg6FkSRRB4kSWRPFzh8Ph40t9IvDq3Xkl
/b9dhiFZEkWQOJElUWxWTwTafSlPAU6nU30i8IynAOV77ff72XZd96FsKh8v
vnV80136PwBxHlyA1ypVvPT8YRhKPb7+ReDyabk8+x1rIS8frwdg/XZ1H6br
Z2xaw4gGIOvj26t3BOjX3fN84jOqPMuov1xwfctl03RP6i8mP2nTGuZzuxwM
JUuiiPj4r1fvDn+EAcWjXvh7vtejb7fbTfenrMejD/FN2/aQVhiGZEkUKco/
cQYUjyqVeBiGiwvLJb/wvOB6+i1cEt+0bQ8B4Ic8uACvNXvyT7nk+klBnP4P
AAC/7FbF/YXq20T/n/XvS72OtbV1D+v66fvsj3XT63/f3mR/rK2tX77+ZRdn
yFePnie/jfP/eZ5X/Q/FXyVRBIkTWRLFo+qpPqfTqfbk8rG+T+Yv/OWvu+//
czgcbr2Tz883bdtDAABoXSn89f3/6x/Jqk8HfuH7Xrfr+vr89O36x1fv45u2
7SEAAPCQ2TPqx621pddnIrN/jCy4ac2uPvaz8TYcDCVLoggSJ7IkCoL0/3YZ
hmRJFEHiRJZEQZD+DwDAH1P//tfyOTndcicAAPDHlPJ/OBx+4a/9tkj/b5eD
oWRJFEHiRJZE8SgVd4E7p12GIVkSRZA4kSVRPOrRt8Tsiv4PQJwHF+C16pv/
/84b/jfHiAYgyy/ZAS9X3xvf7//Ocie0y8FQsiSKCI+zPIMBBUGGc7sMQ7Ik
igj9n2cwoCDIcAYgSP8H3sTpdNrv9/VEoHrJMAx+KfhT/wcgTfkHXu54PJbm
Xz6Wwj+Oo8PhUJ4RvHS/3oL53C4HQ8mSKO5a+ZCh/xNnQPGoUv7HN/8Zx9H0
uUDP3AntMgzJkiiWrWz1zv/hGQwoHjWdP7fW3XInAHDX+lav/wPvYPb1/3JJ
ufxVu/Q+DGcA1vD6P9CQ6/P/a/kvl7x6117PcG6Xg6FkSRTL9H9eyIBig/on
gOssKs3fnwMeGc7tMgzJkigWOP+H1zKgIMhwBmCNJ73+72EI4JcZvACs8VCl
j18T4CG33uff7/9+6v8tczCULIliwTPO/3GmEOsZUDxqdqp4/5/KyG2XYUiW
RLHgSa1e+WclA4r1hmEoJf9jzvRNQXtm6gJw13Krn32cvWXlbQL8hKmywJ0D
wBrri/ozrgnwc+PfAuicO6FdDoaSJVHctf4hY32r9zDEGgYUG+z3+4sTgcqn
h8Ph1fv1egZvuwxDsiSKoBInjy8EGVA8av/lfD5/ftfd4/E4DEO9pHPmMwDP
4PEFeKHdbjdW/XEclacAt94XtCvmMwDP4PEFeKHpCBrf87M8I/D+n5/mc8sc
DCVLoghy/g9ZBhSPmr7+P3ssoGfuhHYZhmRJFEH6P1kGFI/a7/fH47GuD18+
v38F4HU79S7MZwCeweML8ELn83la9cvTgTKU/P5vZT4D8AweXwDek/ncLgdD
yZIogpz/Q5YBBUHmc7sMQ7IkiiD9nywDihSj6dOdAMBzeHwB3pDR9OlOAOA5
PL4Ab8ho+nQntMzBULIkiiDn/5BlQJFiNH26E1pmGJIlUQTp/2QZUKQYTZ/u
BACew+ML8IaMpk93AgDP4fEFeImPe169g6/nTmiXg6FkSRRBzv8hy4CCIPO5
XYYhWRJFkP5PlgEFQeYzAM/g8QXgPZnPADyDxxeA92Q+t8vBULIkiiDn/5Bl
QEGQ+dwuw5AsiSJI/yfLgIIg8xmAZ/D4AvCezGcAnsHjC8B7Mp/b5WAoWRJF
kPN/yDKgIMh8bpdhSJZEEaT/k2VAQZD5DMAzeHwBeE/mMwDP4PEF4D2Zz+1y
MJQsiSLI+T9kGVAQZD63yzAkS6II0v/JMqAgyHwG4Bk8vgCMTqfTMAxlMJaP
ZT3ddDwed7td2VQ+lvXPN91lPgPwDB5fAKrSz/f7/fl8LuvysazHxl6eC5QC
X58RTNebN61hPrfLwVCyJIog5/+QZUDRtNLPa/mvyrpcUtfT5wKf388UfrJp
DfO5XYYhWRJFkP5PlgFF0xb6f3zTGuYzAM/g8QWgOh6PwzDMnv9zPSrHS7Zt
WsN8BuAZPL4AjErn//g2PVdH/+chDoaSJVEEOf+HLAOKpl28/l/WL3/9f9a/
L/U61tbWPazrp++zP9ZNr/999f/32R9ra+uXr3vm/H8AeuDxBaBa//4/h8Ph
1pv8rNy0hvkMwDN4fAGoFn7/tz4XmL6T//hMYdumNczndjmgRpZEEfTP+f9E
GVC0rrb0+ud6L/5WV3zTXeZzuwxDsiSKIP2fLAMKgsxnAJ7B4wvAezKfAXgG
jy8A78l8bpeDoWRJFEHO/yHLgIIg87ldhiFZEkWQ/k+WAQVB5jMAz+DxBeA9
mc8APIPHF4D3ZD63y8FQsiSKIOf/kGVAQZD53C7DkCyJIkj/J8uAgiDzGaB1
Hzzi1f9cAC9mEgK0rkzy//nf//Pfmv886gGYhO1yMJQsiWqX/q///3kGFASZ
hO0yDMmSqHbp//r/n2dAQZBJCNA6/V//B1jPJARonf6v/wOsZxK2y8FQsiSq
Xb//FjpNe/U/F1sYUBBkErbLMCRLotr14fV/r///dQYUBJmEAK3T//V/gPVM
QoDWvfBcmha9+p8L4MVMwnY5GEqWRBFU4uTxhSADCoLM53YZhmRJFEH6P1kG
FASZzwA8g8cXgPdkPgPwDB5fAN6T+dwuB0PJkiiCnP9DlgEFQeZzuwxDsiSK
IP2fLAMKgsxnAJ7B4wvAezKfAXgGjy8A78l8bpeDoWRJFEHO/yHLgIIg87ld
hiFZEkWQ/k+WAQVB5jMAz+DxBeA9mc8APIPHF4D3ZD63y8FQsiSKIOf/kGVA
QZD53C7DkCyJIkj/J8uAgiDzGYBn8PgC8J7MZwCeweMLwHsyn9vlYChZEkWQ
83/IMqAgyHxul2FIlkQRpP+TZUBBkPkMwDN4fAF4T+YzAM/g8QXgPZnP7XIw
lCyJIsj5P2QZUBBkPrfLMCRLogjS/8kyoCDIfAbgGTy+ALwn8xmAZ/D4AvCe
zOd2ORhKlkQR5PwfsgwoCDKf22UYkiVRBOn//H97d5OcuNJgAdQ7YSkshaWw
FGobPWLck+4lMO5pb6C+DGc8RT5hsBBXxkmeExWOLCR+HNxKX5QqOcsEBUHm
ZwC24OcLwO9kfgbgSR+PePWLBRidqbhfFkPJkiiCxIksiYIg/b9fJkOyJIog
cSJLoiBI/wcAgHHo/wAAMA79v18WQ8mSKILEiSyJgiD9v18mQ7IkiiBxIkui
IEj/BwCAcej/AACwqcvlst/vS/He7XaHw6HddDqdyo11Uxk/v+lb+n+/LIaS
JVEEiRNZEkXXavmvLb2Mj8fj9BHgfD6XAl++zsarNy2h//fLZEiWRBEkTmRJ
FF07fmpvmY7Ylw8C7dH7Mp4+GqzbtIT+DwAA29nv97eOz+92u8vlMv21jMst
z2xaQv8HAIDt1PNz6vn/5Wtb3a+r+HTLuk1L6P/9shhKlkQRJE5kSRRdq7V/
Ol2//Qig//MQkyFZEkWQOJElUXSt9O32/J/6EWDadL3zM5sWvp4v/flU9zE2
NjY2NjY2NjZ+Zjyy6+vzTHXd+f8AAPBmDodDe/2fesXOaVN7JZ/20qDrNi2h
//fLB2qyJIogcSJLouhaPT5fG3s9+Wdq73VTeyX/6cD+uk1L6P/9MhmSJVEE
iRNZEkXv2uv/zM4FqgW+/ibfyKZv6f8AADAO/R8AAMah//fLYihZEkWQOJEl
URCk//fLZEiWRBEkTmRJFATp/wAAMA79HwAAxqH/98tiKFkSRZA4kSVREKT/
98tkSJZEESROZEkUBOn/AAAwDv0fAADGof/3y2IoWRJFkDiRJVEQpP/3y2RI
lkQRJE5kSRQE6f8AADAO/R8AAMah//fLYihZEkWQOJElURCk//fLZEiWRBEk
TmRJFATp/wAAMA79HwAAxqH/98tiKFkSRZA4kSVREKT/98tkSJZEESROZEkU
BOn/AAAwDv0fAADGof/3y2IoWRJFkDiRJVEQpP/3y2RIlkQRJE5kSRQE6f8A
ADAO/R8AAMah//fLYihZEkWQOJElURCk//fLZEiWRBEkTmRJFATp/wAAMA79
HwAAxqH/98tiKFkSRZA4kSVREKT/98tkSJZEESROZEkUBOn/AAAwDv0fAADG
of/3y2IoWRJFkDiRJVEQpP/3y2RIlkQRJE5kSRQE6f8AADAO/R8AAMah//fL
YihZEkWQOJElURCk//fLZEiWRBEkTmRJFATp/wAAMA79HwAAxqH/98tiKFkS
RZA4kSVREKT/98tkSJZEESROZEkUBOn/AAAwDv0fAADGof/3y2IoWRJFkDiR
JVEQpP/3y2RIlkQRJE5kSRQE6f8AADAO/R8AAMah//fLYihZEkWQOJElURCk
//fLZEiWRBEkTmRJFATp/wAAMA79HwAAxqH/98tiKFkSRZA4kSVRvI3T6TSr
3+WW3W5Xbixfy/j5Td/S//tlMiRLoggSJ7IkivdwuVxqaZ9uOZ/P5ZbydTZe
vWkJ/R8AAH7Afr8vRb2t34fDoT16X8bllmc2LaH/AwDA1o7HYy3tbf3e7XaX
y2X6a10geGbTEvp/vyyGkiVRBIkTWRJF787n836/r+O2fl9X8emWdZuW0P/7
ZTIkS6IIEieyJIqu1ePz0xF7/R8AAN7Y4XA4Ho/TX39D///Sn091H2NjY2Nj
Y2NjY+NnxiP7smzXTwTO/+ch/kGRJVEEiRNZEsU7uXP9n/Kh4NZFfhZuevQF
0BeTIVkSRZA4kSVRvJO2ftdD9+2V/KcD++s2PfoCAACATc3qdy3w9Tf5zn6N
17pNj74AAADgjen//bIYSpZEESROZEkUBOn//TIZkiVRBIkTWRIFQfo/AACM
Q/8HAIBx6P/9shhKlkQRJE5kSRQE6f/9MhmSJVEEiRNZEgVB+j8AAIxD/wcA
gHHo//2yGEqWRBEkTmRJFATp//0yGZIlUQSJE1kSBUH6PwAAjEP/BwCAcej/
/bIYSpZEESROZEkUBOn//TIZkiVRBIkTWRIFQfo/AACMQ/8HAIBx6P/9shhK
lkQRJE5kSRQE6f/9MhmSJVEEiRNZEgVB+j8AAIxD/wcAgHHo//2yGEqWRBEk
TmRJFATp//0yGZIlUQSJE1kSBUH6PwAAjEP/BwCAcej//bIYSpZEESROZEkU
BOn//TIZkiVRBIkTWRIFQfo/AACMQ/8HAIBx6P/9shhKlkQRJE5kSRQE6f/9
MhmSJVEEiRNZEgVB+j8AAIxD/wcAgHHo//2yGEqWRBEkTmRJFATp//0yGZIl
UQSJE1kSBUH6PwAAjEP/BwCAcej//bIYSpZEESROZEkUBOn//TIZkiVRBIkT
WRIFQfo/AACMQ/8HAIBx6P/9shhKlkQRJE5kSRQE6f/9MhmSJVEEiRNZEgVB
+j8AAIxD/wcAgHHo//2yGEqWRBEkTmRJFATp//0yGZIlUQSJE1kSBUH6PwAA
jEP/BwCAcej//bIYSpZEESROZEkUBOn//TIZkiVRBIkTWRIFQfo/AACMQ/8H
AIBx6P/9shhKlkQRJE5kSRQE6f/9MhmSJVEEiRNZEkXvjsfjbrcrxbt8PZ/P
7abT6TRtKuPnN31L/wcAgO0cDofS/y+XSxmXr/v9fmrs5bPA9ImgHa/etIT+
DwAA25kdny8fAUpjr+Py0aDdWsbllmc2LaH/98tiKFkSRZA4kSVRvJO2/5dB
XRdIbVpC/++XyZAsiSJInMiSKN7J8VMdX1fx6ZZ1m5bQ/wEA4GecTqf9fj/9
Vf8HAIB3dTweZyfqv6r/f+nPp7qPsbHxCOP619/zeoy7Hv/5xy95PcbGxi8f
D+5yudSrAM1ud/4/D/EPiiyJIkicyJIoerff77+8ROfsSj7tAsG6TUvo/wAA
sJ1ZXW/VQ/ftlfynA/vrNi2h/wMAwHa+PNl+auy1wH/5q4HXbVryep74bngl
7x1ZltcJEiey/MiDIP+gOjV9eHz1C+F9KGwEidPIlv9sWrjnQz/y4s8O70f4
e3HrSk1fevWLBWBQy38SLdzzoR9w8WeHtyT5nTJxAfDbLO/qd/Zcfbwr8uww
ArFf6KHpiFe/XXzDu8nWnP/Tr41+LryrV79dsIboLvTfx/977Z+HpqPXvtRX
v1cd2Oan0Nt69dvFGvp/v/7/f49P/in/bJ/Z86H5If7sD/159XsFK/nZCj/v
+D//5c/CP69+rwDg3ej/AAAwDv2/X5bXyZIogsSJLImCIP2/XyZDsiSKIHEi
S6IgSP8HAIBx6P8AADAO/b9fFkPJkiiCxIksiYIg/b9fJkOyJIogcSJLoiBI
/wcAgHHo/wAAMA79v18WQ8mSKILEiSyJgiD9v18mQ7IkiiBxIkuiIEj/BwCA
cej/AAAwDv2/XxZDyZIogsSJLImCIP2/XyZDsiSKIHEiS6IgSP8HAIBx6P8A
ADAO/b9fFkPJkiiCxIksiYIg/b9fJkOyJIogcSJLoiBI/wcAgHHo/wAAMA79
v18WQ8mSKILEiSyJgiD9v18mQ7IkiiBxIkuiIEj/BwCAcej/AAAwDv2/XxZD
yZIogsSJLImCIP2/XyZDsiSKIHEiS6IgSP8HAIBx6P8AADAO/b9fFkPJkiiC
xIksiYIg/b9fJkOyJIogcSJLoiBI/wcAgHHo/wAAMA79v18WQ8mSKILEiSyJ
giD9v18mQ7IkiiBxIkuiIEj/BwCAcej/AAAwDv2/XxZDyZIogsSJLImCIP2/
XyZDsiSKIHEiS6IgSP8HAIBx6P8AADAO/b9fFkPJkiiCxIksiYIg/b9fJkOy
JIogcSJLoiBI/wcAgHHo/wAAMA79v18WQ8mSKILEiSyJgiD9v18mQ7IkiiBx
IkuiIEj/BwCAvpxOp91uV5p8+VrGD91X/wcAgI6cz+dS+8vX2Xgh/b9fFkPJ
kiiCxIksiYLW4XBoj/mXcbll+d31/36ZDMmSKILEiSyJgtZut7tcLtNfy7jc
svzu+j8AAHTkusA/VOn1fwAA6Ij+PyyLoWRJFEHiRJZEQev5/v+lP5/qPsa/
c1zfpt/zeox7H9ep4/e8HuOux36OGGfHU7f5Ja/HeMWYoCfP/wcAADoyu/7P
8Xh86Po/AABAR+oB//b6/+1yAAAA8GZq7a+///ehX/4FAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAADAoz4+Pl79EuhDNiqCN46t3+v6Ky8lakx33vdNIyF1wELH
T49u2prp6xcaISqC90v8nrDt9/t1dyxZ8msuf8DviUrr+ZlkXfCkDljucDic
TqfZjeWWcvsLXs0nNex3evuoCN7v8UvCttvt1t1Rln7ML4lK6/l3f13wpA54
SJkn24MGZdzOnGUirUuK5Ws7zZa/lj3rpv1+f7lcvnzwcnvZ+vFpttutR55N
Yrd24+dtGpX2EdZFpSV4vds0bO17fesuH/949Hlb679/FutoXloXPKkDNlIm
nzp/limonTnr3FI3teO/n3PUNGUdj8db65Xl9mm+KoNptzqhTU86e+Tp7nd2
4yW2i0rZf9ptRVSuX6fg9W67sLXv9Z27zAJ2/3nLK2wr3JpvmLV6mZdWBE/q
gO3Ug6WzwyZ//12i/v57UbU91bDc/dbMc+v2abqu6hx7fZc7u/ES20Vl9l7f
uv1WVGYE7w38zLx05y6zuy983us7srUe56WFwZM6YFPH47HMHrP/MFVuaZc7
61GOadNszy8f9vCpTFmz1dXrR54eYTYN3tqNV9koKmX/L5fgF0ZlRvDew0Zh
u1Py72968nnZThfz0orgSR2wnfP5XGfO6+MJ16ZN7SPcmXnKw355iuNst1s1
7NZuvMR2UVl++5Kfs38Fr38/E7aH+v/z8yFb6GVeWhE8qQM2cuf0wt3tqxA8
OvOUAtaukM4Oqtw6pnFnN37eplG5dZxtYVRuEbxObRq2df0/OB8S1NG8tCJ4
Ugdsoc5a7emFdf6sM9utUx//rp15pt2cht2draOSPc/21msQvC5sHbZ1/T8+
H/K8vualFcGTOiDueuas6pUN6oHT9hIH7TUKlk+e316GpT7LtFv7UHd24yf9
QFTan9orojIjeP36gbAtrGG7f1/36fnnJau7eWlF8KQOiJtdWKA1TXTTlYc/
7l5q7M7kuXcZ9v79QFTaR1gXlZbg9esHwrawhtXq1Z6A8XzICepuXloXPKkD
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAA4CddLpfdbvfx8VHG9etLvPCpAQDg1zqdTvv9/uNT6e2Hw6EU+GcesDzO
+XzOvLgHlW/kJc8LAABdKG2/dOZa10vtL4Pj8Vg+BTxT4F944L288lc9NQAA
/HKn0+nLwnz81O5TlwbKeNqnfkaom8oniLpkUG75aPy9+iwwPVq9y7R1tlv7
1/aJ6i3ljuVjy/Sqyni6V1VvufXUS74RAAB4P6Xutk34Wu3M0+pAuy7QtuXy
YaE98aYt3u24fbSpjV/vdv0Is1OS6suut9TPAu1HgG+fevk3AgAA76TU4PuH
u6dTg6oynupxe5J/eyT/7+0SPnu00skX9v/7JyPVPv/QUy/8RgAA4J1823XL
Du0HhIVn7Nwazz5urHi0O6/z25ex4qkBAOCdfHv8/7oMP9P/n3+0Sf1PyvUM
oun/GsSfGgAA3sm35/9fH7H/8kybv6v6/+rj/4fDofT/y6fZPsuXHpZ8IwAA
8E7qdW+ulwBKu67/o/b+afPtXVac/1+epe3t08uoFxH68hG+vKXdf935/3ce
HAAA3snsav+z6/+3l82pHxam9YIV/b/+orHa82fX/ym31yuOlq31l5F9+QjV
9DLKzvUxp08xswv7tE+94hsBAID3c//3/966bP6K/v/39vX/p9o/XY3/1iP8
/efofftqp6WEet9694XX/9f/AQBgC7PLeLYn4QMAAG+mnuQz/d6ub//3MQAA
0K/6u3rrSThlcP+3egEAAAAAAAAAAAAAAAAAAAAAAACM5j8Gh4KrDQplbmRz
dHJlYW0NCmVuZG9iag0KNzkgMCBvYmoNCjw8L1R5cGUvUGFnZS9QYXJlbnQg
MiAwIFIvUmVzb3VyY2VzPDwvRXh0R1N0YXRlPDwvR1M1IDUgMCBSL0dTMTAg
MTAgMCBSPj4vWE9iamVjdDw8L0ltYWdlMTkgMTkgMCBSPj4vRm9udDw8L0Yx
IDggMCBSL0YyIDE1IDAgUi9GMyAyMyAwIFIvRjQgMjggMCBSPj4vUHJvY1Nl
dFsvUERGL1RleHQvSW1hZ2VCL0ltYWdlQy9JbWFnZUldID4+L01lZGlhQm94
WyAwIDAgOTYwIDU0MF0gL0NvbnRlbnRzIDgwIDAgUi9Hcm91cDw8L1R5cGUv
R3JvdXAvUy9UcmFuc3BhcmVuY3kvQ1MvRGV2aWNlUkdCPj4vVGFicy9TL1N0
cnVjdFBhcmVudHMgMTk+Pg0KZW5kb2JqDQo4MCAwIG9iag0KPDwvRmlsdGVy
L0ZsYXRlRGVjb2RlL0xlbmd0aCAxMTA3Pj4NCnN0cmVhbQ0KeJy1V9uO2zYQ
fTfgfyDQFzKoaV5EUSoWC2QvDVJkgbbrtgGKolC88gX1rbLc7eaP8pedGcq2
pBiroM4+LJcaznAOzxlePHxdlPNJNi7Z1d01+7vfU0xJpZQ2RnmWxoq5SLEi
7/d+e8VW/d7wzb1j022/p9n04KxiraxreE9e9Xs/9XvsFmYdtnMk1kvvmPbS
OOZjCV2HhmMaMsLs1UAjYLwEGG+X2TTXKbtZs30aNrzfZCt2cTG8u357w9Tw
XbaaMp6vBr/ci8tLdnUTFkiIdWQVZvh8hVcjmP57zVLpIeVogkslJCwyqQRS
tJEpwBgtcf1TokQr4kSxN/3e7/yTGFjDmYgSfi2s5muhU77B5glGYl4IE/O5
GHg+ReMMm1IMTAIxA51obtCisDn2cEg5/l5oq0LwAhvqrdDhX/EHG/3Q792O
nmG+Q10lkySm1RakrrMWGUfHeC9QXdkW5fosyg2zRtoG487IxLEocdLaQLhU
kQ+lF3pE+FW+Egkfz0TMl/CXFWIQ879AAMe/Md8JB+QZy+cr4YHnhOc0Do3j
OzBtKjM5kTXfbiBoLZBZz7c5zGTJZb4Ee36C6BYR5iwiLNOpdMadoMKmXmpf
UdHQ6vD1M1JyAVn8ZSdOe+YeMZFULZweNGzhPCXZHZYzUGkinmGz3VWa7K1Q
7zbi5UwM0rrhAbtzYflkAt8+DNXCVjjNuBbwAbv0XT7mhz65gUPqGylKVB9n
X9aAPM7QuRHWQgaVBXElfOgKS2hpTRvKzQjttgb3HzwaMNcBbeyqoTUaKLgM
U1ceDT3PlEnLmNnYQ9k8o1KBayQgtPItbJEk6EXfD3uabVsoMMBeafJ6pLFN
WFpLdKQrJnYg58BUxKEZwtYYFrJMqEW/4pDtW0Dp+OMcToKAimUY0EZcc6jx
zfYVQO41hCHTXr+0WW2dGy16sQPBWOmSr3YguBc7EOo4T5XaCK/L1tYLu6Gq
FvYjnMW1/TE9elBFhrjl0UA7fyHsoSo1FO87VOwYT/uvW774LFoiesW0HhNe
SaArBVbsF6mX3Har589VT0nTgpkkMgFTA+gp+WCHa8/XTDjPP8CFCdtmvnrI
gd4NXM6WP1AbvMAphv0Eb5ZivRRGBcNrZ8GDoXlMbovdFv7HVRBc2p3rT15K
pth9NY3S8zWyJxU6YHxenoTPMhHB7QO857gpHM9ILhJkt1jAG1VHQQfQD27c
+ZgsWUnO+YPA0RSEnUHviSQKQpEjPL8WMOyqlHALwNx5AZm75qtjDP1ZLiok
vwqbwpuhk1193qs/wsd9uwSAYA1nmoHfIOkzHH+h/vq8R7I+VaRaxVADnQjh
WETGC+Df4HUM748/yVLioTin7lJ4kCv4/e/3ximICfx260YYQEA5GfoBpeA5
ALduRgVT1GAGCxzuJjRPVcTAYWljP/iFmN1xEvIOYx+FN7RUfFVaSzdElMK1
Af36fO/Rx8Bd/7m2/wEf1DuSDQplbmRzdHJlYW0NCmVuZG9iag0KODEgMCBv
YmoNCjw8L1R5cGUvUGFnZS9QYXJlbnQgMiAwIFIvUmVzb3VyY2VzPDwvRXh0
R1N0YXRlPDwvR1M1IDUgMCBSL0dTMTAgMTAgMCBSPj4vWE9iamVjdDw8L0lt
YWdlMTkgMTkgMCBSL0ltYWdlODMgODMgMCBSPj4vRm9udDw8L0YxIDggMCBS
L0YyIDE1IDAgUj4+L1Byb2NTZXRbL1BERi9UZXh0L0ltYWdlQi9JbWFnZUMv
SW1hZ2VJXSA+Pi9NZWRpYUJveFsgMCAwIDk2MCA1NDBdIC9Db250ZW50cyA4
MiAwIFIvR3JvdXA8PC9UeXBlL0dyb3VwL1MvVHJhbnNwYXJlbmN5L0NTL0Rl
dmljZVJHQj4+L1RhYnMvUy9TdHJ1Y3RQYXJlbnRzIDIwPj4NCmVuZG9iag0K
ODIgMCBvYmoNCjw8L0ZpbHRlci9GbGF0ZURlY29kZS9MZW5ndGggNjUzPj4N
CnN0cmVhbQ0KeJy1VdtuEzEQfV9p/2Ee7Urxju31ZVFViV6oiloENAgkxEMI
m7SiScMmFfBJ/CVjO2myJU0qlbyMJuNZz5zLboqXzex60OvP4PDiCH7kGQIK
RJRKoYPKIpgSoanz7OMejPOsOL00MJzmmYThfTNaidq0ugd7efYuz+CEbi0e
zvDaCWdAOqEMOCsoNaGwHBOLdPv8oPVAf0RrnI16w1pWcHwLizFQXE56Y9jf
Ly6Ozo4Bi/PeeAisHnc+XPKDAzg8TgDjxrLUGCb8i/CwS9e/klAJRyO7gwA1
bgKlqgSRIpWoaI3uKOAfRkokRk4QTvPsM/vDO1ox4KVnR1xLdstlxSYh/KYT
yxquLLvmHceGoXgVwox3lKdnOtJLpkIFQ1hm4QgN+8SlxvTwTQgxG4eGX/wL
dF/n2Ul3A/Nb1EXhvY1om6iu0TowHhrtQqBVZR9QLp9FuQKthG4xbpTwBkpv
hNaJcIGlS9ZLWST8fT2940TIjMJ0DQ1QvL3fUS3XUjSP/CcMogKHSD+Markw
1sIqob7SLldM6PUGE+pnmlB6gartQqmFh5IOpNtAyRvySTBeGY1Tkk/o95hM
5oLVqFCHs2ZAuZnnFNW8pV+H9hdrqWzhK3eET1dWlBvgpWVJ9fDW3MSYYE2B
W88GMY/wG4gQ0wODFehtuFuRml0hTR5/HOo5X0D5GUSpF6CMS6JOk8BfI5J4
mphYlXk7PLsjeMqSkH4DvP4kqncX18dkWMraCtL38ltsiIURbsfjdoWnLMWm
964FRz4OJ6lztRQttq2IOHfmVbxu1AtKN9+34/a7wq3oX++puFV7z+eNN1rY
reM7/3Vi9YSJmtNXhUTzbBq+PzaoZlKYrJHpL2hO8ukNCmVuZHN0cmVhbQ0K
ZW5kb2JqDQo4MyAwIG9iag0KPDwvVHlwZS9YT2JqZWN0L1N1YnR5cGUvSW1h
Z2UvV2lkdGggMTAyNC9IZWlnaHQgNzY4L0NvbG9yU3BhY2UvRGV2aWNlUkdC
L0JpdHNQZXJDb21wb25lbnQgOC9JbnRlcnBvbGF0ZSBmYWxzZS9GaWx0ZXIv
RmxhdGVEZWNvZGUvTGVuZ3RoIDExNjQwPj4NCnN0cmVhbQ0KeJzs3c1x40rQ
JVB5QlNoCk2hKXrr8WBW8mD2s6ITs++vQoiHweMPGmRKopL3nOhQoAk1VWxV
ZV6yIOrPHwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHh9b29vzx4C/59vRybfdwD4bd7+
a7fb7ff74/H4rV/x/f396qlx+5a0MEa48QvdM65Njp/uPfWTfu0IH/t2bPxX
G6fE97k1gLcLY4n9hnnyhS4f4+zZQwMArrjs0afTaeSTw+HwfV9xRKCrp0aI
2pIZbv3zyy90z7i2Gv8zl89fxi3f9z92r985wm/N/xunxPe5NYBb6+vFngLM
ZH4A+P1u9evp9pFVRmgc2WYK7csAOf768fExnZpuGQlz/sxbr/BP97wSUJfj
uXqH80uL02BWRnj1oY3PH7ePj1dvGR+n5yDDOFh+2tL4KuOxz38dx2fR+tZ/
xfI/7er9f8nw/jrCh4d39TGefeatO6/n/1vDO5sS2x/j5V8vx7n86zgenzx9
C1bm5K1/Ppu+p8tbbo321nf81ki2P/az79rK1Nq4rm893lvfwen41nju+qIA
wF1u5ZPp9czRlEfzncPn4dP8D8fx3LKnPj5lzuXx1a84fcLZ7dM/mcezcofL
Ma+P8OoAzi5wGsfzxRvTvU3H42DlqpJxahrP9EWXp9ZHPuec5df98uGtjLA4
vPlO5s9cjmSKbfPXvfVd2+4sft8a3tmdrz/G5bw9++vlXV0OYHm3y6cAfx3/
bF5ffx3tre/4ykjWvwW3/gNvfaHt6/rW4135Du4+rza8HM+9XxQAuMtlvx6t
9tb1CcvcMsX4+dQyP/xZvdpkft317POne57Hs3KHK0nybIRXP2cl+WzPqNPr
pZev/P915PN/2uWLwF84vJURFoc338nVSHZ2+/Q04YHBzy5ffr86vLM73/gY
L/96eVdnX2V5t1se3eXtl9f/PDDVV0ay/i3Y+B+4ZWy3BrZyy+UAro7n3i8K
ANzl7ZqVF35XLpM4u5zg8hX+5T+cA/9kfjqwvP9bd7ieJG+NcHlXt5LPtH0w
byisGxFu/NvLJ0rbR77l4pCHh3drhMXhTcY/uTqGyzv/67dj3UpGXT/18GNc
/yr3zsnlsppe7r68+G3lbm99x9dHsvFbsGVqbV/XV7/En83fweVf7/2iAMBd
zlrwaLXTK8bzC27TNv10Le7k6j+8+jxi/SvOmX/5XGB5/7fu8OyeN45waX6B
8fKlxene3v52Afx0qdIUsC9fQN448lsjrA9vZYT14a2cWol/K/9ky2xZH972
2fjXx7j9q/zZ9uimg5XrtVZG++fGd/yukWx87Le+0MrYVh7v1VvWB7Ac511f
FAC4y9XGOr9mOMLnSAWnT2eff/YPt79At0xE07+6eh31yh0uv/T2ES7Nb3B0
9SeR//z7POhWYFu/PnnjyFdGWBze+gjrw/tz+/X/s9u379psGdL2ZF55jOtf
5YHX/+fjW08Btqyds+/4yki2fwturf3lF7r3hfcvyf9e7QeAb7We/8/Ofix+
Pvfs1K0Lwte/4u7zvdCX7X4+u3KHK4liZYRL87XH917M8OffQHV29fUydG0c
+coIK8P76wjrw1u5k+++/n/jqcpjXEbr5XSaTt376M5uv3op+wNrZ2Uk278F
K9+RLctw/R9evWVj/r/3iwIAd7ns18ufT5xj5LhxevVyjpGXwXu3eNeRlXeP
Obu24e2/F6jPZ1fu8OzV7I0jPDNfjL288da7oCz/c3bX3pBw2suYvu7KyO96
gf2B4W0Z4ZcMb/mE4tb7/3xse4ecdRvT49kWTOUx7v99/6XTv2+Jufzk/X/f
dWc5D69G1sv7v3wKsDLaW9/xlZFs/xYs/3rrC21f17ce7wP5/94vCgDc5ewi
2yl2zkngY/Ee49PbJE6J/c+NYDNfhH/2nopnX3E+vvzJvrPrJa7e4RQPpn94
1wiXrl66P9/b240L7M/emeTs4Z/F4MuRbw/Yjw1v4wjrw1veyf6n3v9/ZXjL
KXE2jHsf4xz7d/++Wf3ykz9uvOv+5QBu3f+fa7+IeWWqX/2Or4zkz+Zvwdl/
4K2ptXFd33q8D+T/e78oAAB8h8eewnyH3zMSAAB4Vb8ndf+ekQAAwKv6Pan7
94wEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAXtjxeNztdm9vb+Pj+/v78tT469eeAgAAnuhwOIz8fzqdxvH4uN/v58T+
8fExAvz4eHb88CkAAOC5zsL5eAowEvt0PJ4aLF+9H8fjlsopAADgV1nm/3Ew
7Qt81SkAAOD3GFl9+er929vb2SfMtzx2CgAA+CXePi2v1ZH/AQDghf2G1//f
bvjn0/Q5jh2vHM/z7ZeMx7HjHz6elsDvGY9jxz95bP47rh8Hevr1/zYLKEpe
v/DHEiCb+Q9bnL0//8r7/xyPx1tv8rPx1BbyP0WKP+EsAZKZ/7DFyvv/T88F
lu/kP7+w/9ipLeR/AAD4VuMpwPzres9+HcAU4L/w1F/J/wAAkEP+p8jmL+Es
AZKZ/9CR/E+R4k84S4Bk5j90JP8DAI+RIqAjKxcAeMD8O4OePRDgPpYtRTZ/
CWcJkOns14Y+ezjAHaxZioQfwlkCxBL+oSnLFgB4jBQBHVm5AACQQ/6nyMUP
hLMESGb+Q0fyP0WKP+EsAZKZ/9CR/A8AADnkfwAAyCH/U2Tzl3CWAMnMf+hI
/qdI8SecJUAy8x86kv8BACCH/A8AADnkf4ps/hLOEiCZ+Q8dyf8UKf6EswRI
Zv5DR/I/AADkkP8BACCH/E+RzV/CWQIkM/+hI/mfIsWfcJYAycx/6Ej+BwCA
HPI/QIUqCkAvOhdFNn9J9vavZw8EnkMLgI60LYoUf2K9/dezhwNfZvt8NvOh
IysX4GHCP69n+6w2/6EpyxagQhXllWzf1bL/BX1ZsxS5/oeX9B3XP6i3tOD1
f3h5li1F8j+v5zvyj6REI57VwmuzcoEcdwX1L7z+wZUSAPweOhEQ4rmv6gv/
APwSmhFFrv+hhee+qu/1f16VFgAd6UQUKf504fV/+HJaAHSkGQE5tle8q5/5
do/KV4fvUJz/P/aZwHezHgEqVFFasP8FzCxGimz+Ek4V5ffb/hMoz/1M4GdY
iRTJ/4RTRWnB6//AzGIEqFBF6aJ+rf7bPR7+6sB3sx4BKlRRwlkC0I5lS5Hr
fwinipJstABLANqxbCmS/wmnipJM/oeOLFuAClWUcJYAtGPZAlSoolTc9RO1
fJ9nTwT4UeY8Ra7/IZwqSsX/+r//r/ufsQSePobin2fPAvhpOhdF8j/hVFFy
eEUdXoMVClChigLQi84FUKGKAtCLzkWR638Ip4qSTAuAjnQuihR/wqmiJNMC
oCOdC6BCFQWgF50LoEIVBaAXnYsim7+EU0VJpgVARzoXRYo/4VRRkmkB0JHO
BVChigLQi84FUKGKAtCLzkWRzV/CqaIk0wKgI52LIsWfcKooybQA6EjnAqhQ
RQHoRecCqFBFAehF56LI5i/hVFGSaQHQkc5FkeJPOFWUZFoAdKRzAVSoogD0
onMBVKiiAPSic1Fk85dwqijJtADoSOeiSPEnnCpKMi0AOtK5ACpUUQB60bkA
KlRRAHrRuSiy+Us4VZRkWgB0pHNRpPgTThUlmRYAHelcABWqKAC96FwAFaoo
AL3oXBTZ/CWcKkoyLQA60rkoUvwJp4qSTAuAjnQugApVFIBedC6AClUUgF50
Lops/hJOFSWZFgAd6VwUKf6EU0VJpgVARzoXQIUqCkAvOhdAhSoKQC86F0U2
fwmnipJMC4COdC6KFH/CqaIk0wKgI50LoEIVBaAXnQugQhUFoBediyKbv4RT
RUmmBUBHOhdFij/hVFGSaQHQkc4FUKGKAtCLzgVQoYoC0IvORZHNX8KpoiTT
AqAjnYsixZ9wqijJtADoSOcCqFBFAehF5wKoUEUB6EXnosjmL+FUUZJpAdCR
zkWR4k84VZRkWgB0pHMBVKiiAPSicwFUqKIA9KJzUWTzl3CqKMm0ANjoeDzu
drvRMsbHj4+P+fbD4fD2X+MT5rPv7+/zvxrHyztcOfVXOhdFij/hVFGSaQGw
xQj5I/+fTqdxPD7u9/s5sY/j6fZL42nC/GRhebx+agudC6BCFQVg3dnr8yPw
zy/yr+T/8axh+Q/H8bjlr6e20LkAKlRRAO6yzP/j4Fb+Pzu18q+Wp7bQuSiy
+Us4VZRkWgA84PhpOp4u3dnv95dX8l/2l/mWlVNb6FwUKf6EU0VJpgXAvUbC
H2l//us4nn80YLqSf34KIP8D/E6qKAAbjai/fqH+9BRgOv7W/H/VP5+mz3Hs
2LFjx7eOp5L7e8bj2LFjx72OQ5xOp+ldgP76mXOSd/0/v1ba+oUzqijJtADY
aL/fX32LzrMf/p1+FmA6PnuTn+XewcqpLXQuihR/wqmiJNMCYIuzuL60cv3/
9Kr+8k3+5ycLK6e20LkAKlRRANZdvdh+/nVg49nBrd/kO2X7y98avH5qy3hq
DwggmioKQC86F0U2f6m49RYE/LBnTwS60gKgI2WfIsWfilGCjv/nf/vz3D8a
AQ/TAqAjZR94Ivn/N/zRCACiKPvAE8n/v+GPRgAQRdmnyOYvFfL/b/ijEfAw
LQA6UvYpUvypkP9/wx+NgIdpAdCRsg880c+/0Q1XPXsiAPBzlH3gid68/v8L
/mgEAFGUfYps/lIh//+GPxoBD9MCoCNlnyLFnwr5/zf80Qh4mBYAHSn7wBM9
63J3zjx7IgDwc5R9gApVFIBedC6KbP4SThUlmRYAHelcFCn+hFNFSaYFQEc6
F0CFKgpALzoXQIUqCkAvOhdFNn8Jp4qSTAuAjnQuihR/wqmiJNMCoCOdC6BC
FQWgF50LoEIVBaAXnYsim7+EU0VJpgVARzoXRYo/4VRRkmkB0JHOBVChigLQ
i84FUKGKAtCLzkWRzV/CqaIk0wKgI52LIsWfcKooybQA6EjnAqhQRQHoRecC
qFBFAehF56LI5i/hVFGSaQHQkc5FkeJPOFWUZFoAdKRzAVSoogD0onMBVKii
APSic1Fk85dwqijJtADoSOeiSPEnnCpKMi0AOtK5ACpUUQB60bkAKlRRAHrR
uSiy+Us4VZRkWgB0pHNRpPgTThUlmRYAHelcABWqKAC96FwAFaooAL3oXBTZ
/CWcKkoyLQA60rkoUvwJp4qSTAuAjnQugApVFIBedC6AClUUgF50Lops/hJO
FSWZFgAd6VwUKf6EU0VJpgVARzoXQIUqCkAvOhdAhSoKQC86F0U2fwmnipJM
C4COdC6KFH/CqaIk0wKgI50LoEIVBaAXnQugQhUFoBediyKbv4RTRUmmBUBH
OhdFij/hVFGSaQHQkc4FUKGKAtCLzgVQoYoC0IvORZHNX8KpoiTTAqAjnYsi
xZ9wqijJtADoSOcCqFBFAehF5wKoUEUB6EXnosjmL+FUUZJpAdCRzkWR4k84
VZRkWgB0pHMBVKiiAPSicwFUqKIA9KJzUWTzl3CqKMm0AOhI56JI8SecKkoy
LQA60rkAKlRRAHrRuQAqVFEAetG5KLL5SzhVlGRaAHSkc1Gk+BNOFSWZFgAd
6VwAFaooAL3oXAAVqigAvehcFNn8JZwqSjItADrSuShS/AmnipJMC4COdC6A
ClUUgF50LoAKVRSAXnQuimz+Ek4VJZkWAB3pXBQp/oRTRUmmBUBHOhdAhSoK
QC86F0CFKgpALzoXRTZ/CaeKkkwLgI50LooUf8KpoiTTAqAjnQtgo7d7PHuw
AHCdJgUAADnkf4ps/hLOEiCZ+Q8dyf8UKf6EswRIZv5DR/I/AADkkP8BACCH
/E+RzV/CWQIkM/+hI/mfIsWfcJYAycx/6Ej+BwCAHPI/AADkkP8psvlLOEuA
ZOY/dCT/U6T4E84SIJn5Dx3J/wAAkEP+BwCAHPI/RTZ/CWcJkMz8h47kf4oU
f8JZAiQz/2Gj4/G42+1G8B4fPz4+lqfe39/nU+O4fuqv5H8AAPg+h8Nh5P/T
6TSOx8f9fj8n9vFcYH5GsDx++NQW8j8AAHyfs9fnx1OAkdin4/HUYHl2HI9b
Kqe2kP8psvlLOEuAZOY/PGCZ/8fBtC/wVae2kP8pUvwJZwmQzPyHBxw/TceX
UXy+5bFTW8j/AADwM97f3/f7/fxX+R8AAF7V8Xg8u1D/Wfn/qn8+TZ/j2LFj
x45vHU9//T3jcez4J4//Mf8dl49DnE6n6V2Azm53/T8dpa1fOGMJkMz8h432
+/3Vt+g8eyef5QbBY6e2kP8BAOD7nMX1peml++U7+c8v7D92agv5HwAAvs/V
i+3nxD4F+Ku/GvixU1vGU3g0YPOXdJYAycx/6Ej+p0jxJ5wlQDLzHzqS/wEA
IIf8DwAAOeR/imz+Es4SIJn5Dx3J/xQp/oSzBEhm/kNH8j8AAOSQ/wEAIIf8
T5HNX8JZAiQz/6Ej+Z8ixZ9wlgDJzH/oSP4HAIAc8j8AAOSQ/ymy+Us4S4Bk
5j90JP9TpPgTzhIgmfkPHcn/AACQQ/4HAIAc8j9FNn8JZwmQzPyHjuR/ihR/
wlkCJDP/oSP5HwAAcsj/AACQQ/6nyOYv4SwBkpn/0JH8T5HiTzhLgGTmP3Qk
/wMAQA75HwAAcsj/FNn8JZwlQDLzHzqS/ylS/AlnCZDM/IeO5H8AAMgh/wMA
QA75nyKbv4SzBEhm/kNH8j9Fij/hLAGSmf/QkfwPAAA55H8AAMgh/1Nk85dw
lgDJzH/oSP6nSPEnnCVAMvMfOpL/AQAgh/wPAAA55H+KbP4SzhIgmfkPHcn/
FCn+hLMESGb+Q0fyPwAA5JD/AQAgh/xPkc1fwlkCJDP/oSP5nyLFn3CWAMnM
f+hI/gcAgBzyPwAA5JD/KbL5SzhLgGTmP3Qk/1Ok+BPOEiCZ+Q8dyf8AAJBD
/gcAgBzyP0U2fwlnCZDM/IeO5H+KFH/CWQIkM/+hI/kfAAByyP8AAJBD/qfI
5i/hLAGSmf/QkfxPkeJPOEuAZOY/dCT/AwBADvkfAAByyP8U2fwlnCVAMvMf
OpL/KVL8CWcJkMz8h47kfwAAyCH/AwBADvmfIpu/hLMESGb+Q0fyP0WKP+Es
AZKZ/zT18fFxOBx2n0YYng7GLeP2Zw/tJ8j/AACEGAl/RP39fn88Hsfx6XQa
N46P43jcMm4fZ1/+WYD8DwBAgvf39xHvx8fi53Qn/1Nk85dwlgDJzH962e/3
0wv+68bnjM/89tE8j/xPkeJPOEuAZOY/dCT/AwAQZfkK/3Q8IvHG3YEXIP8D
ABBlRP35Cv9xPP3A7/Tzv88b1M+R/ymy+Us4S4Bk5j9NzQH4dDqN4/ll/5Bg
HPIw+T6KP+EsAZKZ/zQ1B+Dp3X4ub39tIQ8TAAAm8/U/h8PheDxON45bXP8D
AACvZ/6Z35H/5xvnHwR4efI/RTZ/CWcJkMz8h47kf4oUf8JZAiQz/6Ej+R8A
AHLI/wAARJmv/7/07KH9hJCHyfex+Us4S4Bk5j9NjfB/PB5DftvvJfmfIsWf
cJYAycx/mgoPwOEPHwCANLvdLvbF/z/yPwAAYT4+PnLe7f+S/E+RzV/CWQIk
M/9parfbXf3h35BgHPIw+T6KP+EsAZKZ/9CR/A8AADnkfwAAEuz3+y0/9jv9
doBvH83zyP8U2fwlnCVAMvOfXt7f33e73fhY/Jzu5H+KFH/CWQIkM/9p5+Pj
Y8T76fd/jeNpO2B8HMfjlnH7OPvy7wsk/wMAEGUk/MPhsPs0wvB0MG55+eQ/
kf8BACCH/E+RzV/CWQIkM/+hI/mfIsWfcJYAycx/6Ej+BwCAHPI/AADkkP8p
svlLOEuAZOY/TW35LWAvTP6nSPEnnCVAMvOfpkYAznm3z0vyPwAAUU6n0/v7
+/QrAI7HY9p2gPwPAECsj4+P/afxjCDkiYD8T5HNX8JZAiQz/3kZx+Px7dP0
RODZw/le8j9Fij/hLAGSmf90N10ItPs0ngJ8fHxMTwS+/CnA+EKHw+EyeE83
Lo2RzGensU03ng1p5dRfyf8AAEQZaXzk/P1+P8Lz5Q8Cj78uQ3jdlNXHx8vg
PcZw66KjaRjT2JbH66e2kP8BAIjy1+t8vjYhj6cYU8i/K/+Pf7Uc4fQDy389
tYX8T5HNX8JZAiQz/2nqWT/nexm8d7vdrcGcnRrH867EyqnHhgF3UfwJZwmQ
zPynqRGY9/v92Y0rL8V/lav5f3oDossr+S8/eb5l5dRjwwAAgBd29eKfccvl
k4KvdfX6n/kXEExX8s8Dk/8BAOBL3ArA3x2M/3r/yx89/tb8f9U/n6bPcezY
sWPHt46nv/6e8Th2/JPH/5j/jsvHT3H1qvt7r6J/wJaUPn+O6//5tZ67fuHp
LAGSmf80NV3q8/HxMaXo8fHs2ptvchm8z56GTD8LMB2fvcnP8Xi89f4/y1OP
DQMAAF7blLTnX6E1PR347i961/X/06v6yzf5n58srJx6bBgAAMBXuXqx/XRq
+r3At36T75Ttp1NXf0nZ1VNbxlN5OGDzl3CWAMnMf+hI/qdI8SecJUAy8x86
kv8BAIgy/f6vlctyXlvIwwQAgMnyp24Dyf8U2fwlnCVAMvOfpsIDcPjDp07x
J5wlQDLzn6bufcPMFyP/AwAQZXrz/x94w//fSf4HACDK9M75fv4XHmPzl3CW
AMnMf+hI/qdI8SecJUAy8x86kv8BAEjz8fFxOBymC4GmW/b7fcgPBcv/AABE
eX9/H8l/fByBfw7Dx+NxPCN46rh+iPxPkc1fwlkCJDP/aWqE//nNf+YwvHwu
8NpCHibfR/EnnCVAMvOfppYB+NbxCwt5mAAAMLn6+v+4Zdz+rCH9JPkfAIAo
l9f/T+F/3PLsof0E+Z8im7+EswRIZv7T1/QrgKff+TWSf9SvA5b/KVL8CWcJ
kMz8h47kfwAAyCH/AwAQ5db7/Pv5X9jC5i/hLAGSmf80dTUAe/8f2EjxJ5wl
QDLzn3b2+/0I+W/XLN8U9LXJ/wAARAkPwOEPHwAAhvl3Aby8kIfJ97H5SzhL
gGTmP30dDoezC4HGX4/H47PH9RPkf4oUf8JZAiQz/2nq8Ol0Ov35Nwy/v7/v
9/vplpcn/wMAEGW3281Rfw7D4ynArfcFfTHyPwAAUZYBeH7Pz/GMwPt/whY2
fwlnCZDM/Kep5ev/V/cCXlvIw+T7KP6EswRIZv7T1OFweH9/n46Pn/78+yMA
zxvUz5H/AQCIcjqdllF/PB0YkdjP/wIAAK9H/qfI5i/hLAGSmf/QkfxPkeJP
OEuAZOY/LyYkGIc8TAAAWBcSjEMeJgAArAsJxiEPk+9j85dwlgDJzH9eTEgw
DnmYfB/Fn3CWAMnMf15MSDAOeZgAALAuJBiHPEwAAHj7m2cP8CeEPEy+j81f
wlkCJDP/oSP5nyLFn3CWAMnMf+hI/gcAgBzyPwAA5JD/KbL5SzhLgGTmP3Qk
/1Ok+BPOEiCZ+Q8dyf8AAJBD/gcAgBzyP0U2fwlnCZDM/IeO5H+KFH/CWQIk
M/+hI/kfAAByyP8AAJBD/qfI5i/hLAGSmf/QkfxPkeJPOEuAZOY/dCT/AwBA
DvkfAAByyP8U2fwlnCVAMvMfOpL/KVL8CWcJkMz8h47kfwAAyCH/AwBADvmf
Ipu/hLMESGb+Q0fyP0WKP+EsAZKZ/9CR/A8AADnkfwAAyCH/U2Tzl3CWAMnM
f+hI/qdI8SecJUAy8x86kv8BACCH/A8AADnkf4ps/hLOEiCZ+Q8dyf8UKf6E
swRIZv5DR/I/AADkkP8BACCH/E+RzV/CWQIkM/+hI/mfIsWfcJYAycx/6Ej+
BwCAHPI/AADkkP8psvlLOEuAZOY/dCT/U6T4E84SIJn5Dx3J/wAAkEP+BwCA
HPI/RTZ/CWcJkMz8h47kf4oUf8JZAiQz/6Ej+R8AAHLI/wAAkEP+p8jmL+Es
AZKZ/9CR/E+R4k84S4Bk5j90JP8DAEAO+R8AAHLI/xTZ/CWcJUAy8x86kv8p
UvwJZwmQzPyHjuR/AADIIf8DAEAO+Z8im7+EswRIZv5DR/I/RYo/4SwBkpn/
0JH8DwAAOeR/AADIIf9TZPOXcJYAycx/6Ej+p0jxJ5wlQDLzHzY6nU6Hw+Fq
8H5/f9/tduPU+DiO66f+Sv4HAIDvM2X18fEyeH98fIxT4+PZ8cOntpD/AQDg
+xwOh9Pp9Oda8B6nlq/ej+NxS+XUFvI/RTZ/CWcJkMz8h7tcBu/dbjc9NZiM
43FL5dRjw4C7KP6EswRIZv7DXS6D98otj516bBgAAMCXk/8BACDH78n/V/3z
afocx44dO3Z863j66+8Zj2PHP3n8j/nvuHwcxfX/vIbM9QszS4Bk5j/c5a/v
/3M8Hm+9yc/GU48NAwAA+HKXwXt66X75Tv7zC/uPnXpsGAAAwFe5erH9fHYK
8NNv8j37NV6PndoynocfC/yx+Us8S4Bk5j90JP9TpPgTzhIgmfkPHcn/AACQ
Q/4HAIAc8j9FNn8JZwmQzPyHjuR/ihR/wlkCJDP/oSP5HwAAcsj/AACQQ/6n
yOYv4SwBkpn/0JH8T5HiTzhLgGTmP3Qk/wMAQA75HwAAcsj/FNn8JZwlQDLz
HzqS/ylS/AlnCZDM/IeO5H8AAMgh/wMAQA75nyKbv4SzBEhm/kNH8j9Fij/h
LAGSmf/QkfwPAAA55H8AAMgh/1Nk85dwlgDJzH/oSP6nSPEnnCVAMvMfOpL/
AQAgh/wPAAA55H+KbP4SzhIgmfkPHcn/FCn+hLMESGb+Q0fyPwAA5JD/AQAg
h/xPkc1fwlkCJDP/oSP5nyLFn3CWAMnMf+hI/gcAgBzyPwAA5JD/KbL5SzhL
gGTmP3Qk/1Ok+BPOEiCZ+Q8dyf8AAJBD/gcAgBzyP0U2fwlnCZDM/IeO5H+K
FH/CWQIkM/+hI/kfAAByyP8AAJBD/qfI5i/hLAGSmf/Qkfz/P+3dXXLyuBYF
0MyEoWQoDIWh0DPJ8x0Fz3cUuaqorsptsHFQiCP2WtX1lQLmJ13niG3LMXQy
+RNOC5BM/cOI5H8AAMgh/wMAQA75n04WfwmnBUim/mFE8j+dTP6E0wIkU/8w
IvkfAAByyP8AAJBD/qeTxV/CaQGSqX8YkfxPJ5M/4bQAydQ/jEj+BwCAHPI/
AADkkP/pZPGXcFqAZOofRiT/08nkTzgtQDL1DyOS/wEAIIf8DwAAOeR/Oln8
JZwWIJn6hxHJ/3Qy+RNOC5BM/cOI5H8AAMgh/wMAQA75n04WfwmnBUim/mFE
8j+dTP6E0wIkU/8wIvkfAAByyP8AAJBD/qeTxV/CaQGSqX8YkfxPJ5M/4bQA
ydQ/jEj+BwCAHPI/AADkkP/pZPGXcFqAZOofRiT/08nkTzgtQDL1DyOS/wEA
IIf8DwAAOeR/Oln8JZwWIJn6hxHJ/3Qy+RNOC5BM/cOI5H8AAMgh/wMAQA75
n04WfwmnBUim/mFE8j+dTP6E0wIkU/8wIvkfAAByyP8AAJBD/qeTxV/CaQGS
qX8YkfxPJ5M/4bQAydQ/jEj+BwCAHPI/AADkkP/pZPGXcFqAZOofRiT/08nk
TzgtQDL1DyOS/wEAIIf8DwAAOeR/Oln8JZwWIJn6hxHJ/3Qy+RNOC5BM/cOI
5H8AAMgh/wMAQA75n04WfwmnBUim/mFE8j+dTP6E0wIkU/8wIvkfAAByyP8A
AJBD/qeTxV/CaQGSqX8YkfxPJ5M/4bQAydQ/jEj+BwCAXRyPx7d/OxwO7d7z
+Vx+rDeW8fSBK3fdJf8DAMAu3t/fL5fLzbs+Pj5Kti//zsbrd20h/9PJ4i/h
tADJ1D90Wsn/x+NxemC/jMstd+/aQv6nk8mfcFqAZOofOh0Oh6X8P7urjNup
QSt3bSH/AwDALuqpO+/v79dn8l+n9HbLyl1byP8AALCLkvxPp1M9mF/P5G+7
API/f5bFX8JpAZKpf/hZdRegjp+a/2/650vdxtjY2Nh4aVx//Dvvx9j4N8f/
qH/j7jEzLck7/x8AAF7M7I9/698C1PHsIj+n02np+j/Tu7aQ/wEAYBcr5//X
o/rTi/y3nYWVu7aQ/+lk/Y5wWoBk6h86ldx+PB6Xvsm3Zvt61+wbvlbuukv+
p5PJn3BagGTqH0Yk/wMAQA75HwAAcsj/dLL4SzgtQDL1DyOS/9lu6dsibtr7
zcIvkX9Ipv5hRHIanZQQAMBAhDc6KSEAgIEIb3RSQoRz/gPJ1D+MSHijkxIi
nPxDMvUPIxLe6KSEAAAGIrzRSQkBAAxEeKOTEiKc8x9Ipv5hRMIbnZQQ4eQf
kql/GJHwtq9vfaMWz7N3IQAA/BLJZ1/l//9/Tv/1377/6QIAIIfks699D3rT
7F0IDMz5DyRT/zAiyWdfb47//4H/dAE95B+SqX8YkeSzr30PetPsXQgAAL9E
8qGTEgIAGIjwRiclRDjnP5BM/cOIhDc6KSHCyT8kU/8wIuGNTkoIAGAgwhud
lBAAwECENzopIcI5/4Fk6h9GJLyxnStqwjX5h2TqH0YkpwEAQA75HwAAcsj/
dLL4SzgtQDL1DyOS/+lk8iecFiCZ+ocRyf8AAJBD/gcAgBzyP50s/hJOC5BM
/cOI5H86mfwJpwVIpv5hRPI/AADkkP8BACCH/E8ni7+E0wIkU/8wIvmfTiZ/
wmkBkql/GJH8DwAAOeR/AADIIf/TyeIv4bQAydQ/jEj+p5PJn3BagGTqH0Yk
/wMAQA75HwAAcsj/dLL4SzgtQDL1DyOS/+lk8iecFiCZ+ocRyf8AAJBD/gcA
gBzyP50s/hJOC5BM/cOI5H86mfwJpwVIpv5hRPI/AADkkP8BACCH/E8ni7+E
0wIkU/8wIvmfTiZ/wmkBkql/GJH8DwAAOeR/AADIIf/TyeIv4bQAydQ/jEj+
p5PJn3BagGTqH0Yk/wMAQA75HwAAcsj/dLL4SzgtQDL1DyOS/+lk8iecFiCZ
+ocRyf8AAJBD/gcAgBzyP50s/hJOC5BM/cOI5H86mfwJpwVIpv5hRPI/AADk
kP8BACCH/E8ni7+E0wIkU/8wIvmfTiZ/wmkBkql/GJH8DwAAOeR/AADIIf/T
yeIv4bQAydQ/jEj+p5PJn3BagGTqH0Yk/wMAQA75HwAAcsj/dLL4SzgtQDL1
DyOS/+lk8iecFiCZ+ocRyf8AAJBD/gcAgBzyP50s/hJOC5BM/cOI5H86mfwJ
pwVIpv5hRPI/AADkkP8BACCH/E8ni7+E0wIkU/8wIvmfTiZ/wmkBkql/GJH8
DwAAOeR/AADIIf/TyeIv4bQAydQ/jEj+p5PJn3BagGTqH0Yk/wMAQA75HwAA
csj/dLL4SzgtQDL1DyOS/+lk8iecFiCZ+ocRyf8AAJBD/gcAgBzyP50s/hJO
C5BM/cOI5H86mfwJpwVIpv5hRPI/AACM5Xw+Hw6HkuTLv2X8rcfK/wAAMJCP
j48S+8u/s/FG8j+dLP4STguQTP3DLo7H4/SYfxmXW7Y/XP6nk8mfcFqAZOof
dnE4HC6XS/uxjMst2x8u/wMAwECuA/y3Ir38DwAAA5H/2ZfFX8JpAZKpf9hF
f/6/6Z8vdRtj45Vxq7c/8n6MjX95XFvg77wfY+PfHKt/4/4xD+g8/x8AABjI
7Po/p9PpW9f/AQAABlIP+E+v/z9dDgAAAF5Mjf31+3+/9eVfAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAjOjt7W3vtwA70wW8pJ8tbG0C0O/t3w6Hw/v7++l0
aveez+ebDyy3/+A8bErnN52+fPeuZ9MFdEoobG0C0O96Lr1cLuVj4ng81nvL
HsHNB5bdBPmfcZUKv963LbfUyt+FLqDfyxe2NgHotzSX1tvLvyufJkuPLXsQ
de+gKIPy4/SBZYei7lZMn3b6VEvbwM8qNfzx8dF+LONpRlqqw/Jj2bLeNSvv
qc4uWNkM1j21sKfP8FhhT2kTgF3cnJnLJFwP+5d76yfCbIP6SbE0q5dpvM3D
ZVB+bOP6wPYS7UOqPdXKNvDjSnG2YptmpFr29a7p+POrVltQOZ1Orbyvn/nh
LljfDO56XmGX7dtmDxT29fvUJgC/73pmLvNnO1O03js7rlKn3JuPXXrOqn0k
tRdqs317yMo28OPq4cfZAdLPf8eSz3+fPlF3itvDn9EF65vBXc8r7FllLt2+
VNgz2gRgF2+3zGbaFvirtjuwNHUfv5RtZivIZfvpLdOPmOlgaRt4hrKrW2ps
9qeR13XYWmBWkM/ogvXNYIsnFXbZ/uapQRsLe0abAOxiNluW+bMeMmp//1tv
b5l/ui+wMtOWD53rE0Svt7+Z/9ffIfygehpbTUrTA4k394vbXdNneEYXrG8G
dz2vsLffviX/f2oTgD3cnC3bUZR2b4v903OB7s60dW+irSbMDhzdPPS0sg38
rJVzoVeqbnv+rx7ogvXNYN1TC3vp+P/Gwl6iTQB+08b8//k109YDNeuPXXkJ
5//zd9SoMD0XuialGieWTnL+/H7+n23mxGae6tmF/bPn/y+9B20C8FTXM/Pl
6/r/07//ra7PJl35gLh7SYf6kXS9lLCyDfyU64xU1fKrhyKn1xWZXg5le0x6
uAvWN4Mlv1DY072JBwp7RpsA7GJ2Iujh6/t/b86010urKx8Q767/zx82uwrK
VAshrQ7fvr4FY+nM5Cd1wcpmsOQXCnv6DI8V9pQ2AQAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICZy+VyOBze3t7K
uP67ix1fGgAA/qzz+fz+/v72peT24/FYAnzPE5bn+fj4+Jk3903lF9nldQEA
YAgl7ZfMXON6if1lcDqdyl5AT4Df8cB7eed7vTQAAPxx5/P5ZmA+fZluU5cG
yrhtU/cR6l1lD6IuGZRb3iY+r/YF2rPVh7R7Z5tNf5y+UL2lPLDstrR3Vcbt
UVW9Zemlt/wiAADwekrcnSbhazUzt9WB6brANC2XnYXpiTfT4D0dT5+tpfHr
za6fYXZKUn3b9Za6LzDdBbj70tt/EQAAeCUlBq8f7m6nBlVl3OLx9CT/6ZH8
z+UQPnu2ksk35v/1k5Fqnv/WS2/8RQAA4JXczbplg+kOwsYzdpbGs92NB55t
5X3efRsPvDQAALySu8f/r8NwT/7vf7am/pFyPYOo/a3Bj780AAC8krvn/18f
sb95ps3nQ/n/4eP/x+Ox5P/Ll9k225cetvwiAADwSup1b66XAEq6rn9Ru37a
/PQhD5z/X15lmtvb26gXEbr5DDdvmW7/2Pn/K08OAACvZHa1/9n1/6eXzak7
C2294IH8X79orOb82fV/yu31iqPl3vplZDefoWpvo2xcn7Ptxcwu7DN96Qd+
EQAAeD3r3/+7dNn8B/L/5/L1/1vsb1fjX3qGz/8fvZ++27aUUB9bH77x+v/y
PwAAPMPsMp7Tk/ABAIAXU0/yad/bdfevjwEAgHHV7+qtJ+GUwfq3egEAAAAA
AAAAAAAAAAAAAAAAAACE+x/nRLS4DQplbmRzdHJlYW0NCmVuZG9iag0KODQg
MCBvYmoNCjw8L1R5cGUvUGFnZS9QYXJlbnQgMiAwIFIvUmVzb3VyY2VzPDwv
RXh0R1N0YXRlPDwvR1M1IDUgMCBSL0dTMTAgMTAgMCBSPj4vWE9iamVjdDw8
L0ltYWdlMTkgMTkgMCBSL0ltYWdlODYgODYgMCBSPj4vRm9udDw8L0YxIDgg
MCBSL0YyIDE1IDAgUi9GNSAzNSAwIFI+Pi9Qcm9jU2V0Wy9QREYvVGV4dC9J
bWFnZUIvSW1hZ2VDL0ltYWdlSV0gPj4vTWVkaWFCb3hbIDAgMCA5NjAgNTQw
XSAvQ29udGVudHMgODUgMCBSL0dyb3VwPDwvVHlwZS9Hcm91cC9TL1RyYW5z
cGFyZW5jeS9DUy9EZXZpY2VSR0I+Pi9UYWJzL1MvU3RydWN0UGFyZW50cyAy
MT4+DQplbmRvYmoNCjg1IDAgb2JqDQo8PC9GaWx0ZXIvRmxhdGVEZWNvZGUv
TGVuZ3RoIDgwNj4+DQpzdHJlYW0NCnictVbbbtpAEH235H+Yx3Uklr3brqJI
uTVK1UhtQ9VKVR8IMQY1XGqIknxS/7IzawMhBUwFvIzGu7O7c84cz27ztJj2
u+3OFM5uzuF3GAgQXAghlRIxpE6ANQKKLAy+HcEwDJpXtxbySRhIyOfBwkmh
7VJ09ygMPocBXOKuzbdnJDrmsQUZc2UhdhxdSwOLY/wg7l5NLC3oDDCN60E7
z2QKFyOYHQPN23F7CMfHzZvz6wsQzY/tYQ4sGza+3kYnJ3B2UQL0GUujBZ3w
L8KzFm7/XkLKYzyy1SWoPhMwKuVIilQ8xTRaA8Kfe0qk8JwIuAqDH+xP1NCK
QWQSdh5pyUaRTNmYzAvOOFZEyrF+1IhZToM9MtOooRJc05CJZIpGBJmFR1PC
su+R1KJc/EDGe0MKeI5+QutDGFy2NjBfU13Bk8R5tIWvrtWaGKdANyvQ68q+
oVzuRLkCrbheYtwqnlgwieVal4RzYeJSeqXnCf+STR4jJGSKZrKCBmh+mueo
FmkpK0h6ZFwqCJ+VCeFdZFaNUzbV3KtFCyEiaeuFqHcUIp4r1LISpeYJGJyQ
8QZaTiMj2T0KK65sH8WDYiE39xYil74eRRVKw7IITdFF31Y+WlWFdDIKf7eS
5SXYZifYdi1sHRvuNqjhWIgkPqlNz+6/KtpxjUN1CeI/jHVBGq2n1PlfW7En
4rVPdE/9d8/PjSjs0bvlMESK2grG+qkHXxTvFn5xuWVebbxEw37Qlf/kenRP
89yKCYJ0mFFtMdyhtKIlFxuS3VIr8eG0UpPgGq1sXX/Uih+dlOsmpYbaFH7n
Q8r1WX2JkgN1MeUcN8kGBjpjfzU++kQFgUFYMev6VjXy7QnoQr2fMWHYQNTj
SQ+Fxxi+qSkvwZHr4ZStuFeVZxZ2t/iu2nHPbzdokyKKX/W45a7vorXAFb6L
tgWu1gP/7+uoHvJu75KV7cWk1AWVkPhi2rm/SLX/msT4lqpPkA38dT4Yl2S+
7PPCkEZwt0UKe72lpLFcbnHogxejl5034+o9NNPmzRayOtTDTiaCy23/JD3/
kyaEKS1/kWyBadWD+C9Y0+HtDQplbmRzdHJlYW0NCmVuZG9iag0KODYgMCBv
YmoNCjw8L1R5cGUvWE9iamVjdC9TdWJ0eXBlL0ltYWdlL1dpZHRoIDEwMjQv
SGVpZ2h0IDc2OC9Db2xvclNwYWNlL0RldmljZVJHQi9CaXRzUGVyQ29tcG9u
ZW50IDgvSW50ZXJwb2xhdGUgZmFsc2UvRmlsdGVyL0ZsYXRlRGVjb2RlL0xl
bmd0aCAxMTczOD4+DQpzdHJlYW0NCnic7N3tcepKlAVQZ0IohEIohMJLY36R
waRAKJ4uq65Glw9ZOlwb1HuteuXSQzZu2+ees6Fl/PkJAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAcT4+Pl69BP6fH0cmP3cAeDcff9vtdvv9/ng8/uhnPJ1Od0+125ek
hbbChZ9ozboWOX5Ze+o3ve0Kaz+OhR+1sCR+zqMFfNxo/8TeoU7+oduvcfTq
pQEAd9zO6Mvl0vLJ4XD4uc/YItDdUy1ELckMjz789hOtWddS7Ttz+/il3fJz
37G13nOFP5r/F5bEz3m0gEf/vjp7CDCS+QHg/T2a18PtLau00NiyzRDapwGy
/e/5fB5ODbe0hDm+56Nn+Id7ngmo0/XcvcPxqcVhMTMrvPultfdvt7e3d29p
b4fHIE07mL7bVPss7Wsf/7cdX0XrR9+K6Tft7v3/k+V9u8Ly8u5+jVfv+ejO
n8//j5Z3VRLLv8bb/71d5/R/23F75+FHMFOTjz58NPxMp7c8Wu2jn/ijlSz/
2q9+ajOltfDf9aOv99FPcDh+tJ5VnxQAWOVRPhmez2xDuQ3fMXwevowf2I7H
kT3M8SFzTo/vfsbhHa5uHz5kXM/MHU7XPL/Cuwu4usCpHY8Xbwz3Nhy3g5mr
StqpYT3DJ52eml/5mHOmn/efL29mhU8ub7yT8T2nKxli2/h5H/3UlruK34+W
d3Xn81/jtG6v/vf2rm4XML3b6UOAb9c/Gv99fbvaRz/xmZXM/wgefQMffaLl
/64ffb0zP8Hd19WGt+tZ+0kBgFVu53UbtY+uT5jmliHGj6em+eFz9mqT8XnX
q/cf7nlcz8wdziTJqxXefZ+Z5LM8ow7Pl94+8//tysdv2u2TwP9weTMrfHJ5
453cjWRXtw8PEwqLH90+/X53eVd3vvBrvP3f27u6+izTu13y1d3efnv9T6HU
Z1Yy/yNY+A1csrZHC5u55XYBd9ez9pMCAKt83DPzxO/MZRJXlxPcPsM//cAx
8A/GhwPT+390h/NJ8tEKp3f1KPkM2wfjhsK8FuHax94+UFq+8iUXh5SX92iF
Ty5v0D7k7hpu7/zbH8e8mYw6f6r8Nc5/lrU1Of1nNTzdfXvx28zdPvqJz69k
4Y9gSWkt/3d991N8Lv4JTv937ScFAFa5GsFt1A7PGI9PuA3b9MO1uIO7H3j3
ccT8Zxwz//SxwPT+H93h1T0vXOHU+ATj7VOLw719fHcB/HCp0hCwb59AXrjy
Ryt8fnkzK3x+eTOnZuLfzIcsqZb55S2vxm+/xuWf5XPZVzcczFyvNbPazwc/
8VUrWfi1P/pEM2ub+Xrv3jK/gOk6V31SAGCVu4N1fM6whc+WCi5frt7/6gOX
P0E3TUTDR929jnrmDqefevkKp8YXOLr7m8iffx4HPQps89cnL1z5zAqfXN78
Cp9f3ufj5/+vbl++a7NkScuT+TNf4/xnKTz/Px4/egiw5N/O1U98ZiXLfwSP
/u1PP9HaJ97/Sf73bD8A/Kj5/H919jz5/dyrU48uCJ//jLuv10Kfjvvx7Mwd
ziSKmRVOjdcer72Y4fNPoLq6+noauhaufGaFzyzv2xU+v7yZO/np6/8Xnnrm
a5xG62k5DafWfnVXt9+9lL3wb2dmJct/BDM/kSX/DOc/8O4tC/P/2k8KAKxy
O6+nv584xsh24/Ds5Rgjb4P3bvKqIzOvHnN1bcPH3xeoj2dn7vDq2eyFK7wy
Xow9vfHRq6BMvzm7ey9IOOxlDJ93ZuWrnmAvLG/JCv/J8qYPKB69/s952Svk
zFuYHq+2YJ75Gvd/Xn/p8uclMafvvP/7VXemdXg3st7e/+1DgJnVPvqJz6xk
+Y9g+r+PPtHyf9ePvt5C/l/7SQGAVa4ush1i55gEzpPXGB9eJnFI7J8Pgs14
Ef7Vaypefcbx+PY3+66ul7h7h0M8GD5w1Qqn7l66P97bx4ML7K9emeTqy7+K
wbcrXx6wa8tbuMLnlze9k/1vvf7/zPKmJXG1jLVf4xj7d39erH76zucHr7p/
u4BH9/957w8xz5T63Z/4zEo+F/8Irr6Bj0pr4b/rR19vIf+v/aQAAPATag9h
fsL7rAQAAHr1Pqn7fVYCAAC9ep/U/T4rAQAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgM4cj8fdbvfx8dHens/n8fbD4fDx
t/YO49nT6TR+VDue3mHtFAAA8NNayG/5/3K5tOP2dr/fj7G8HQ+332oPE8YH
C9Pj8ikAAOAXXD0J3wL/+CT/TP5vjxqmH9iO2y3PnAIAAH7fNP+3g0f5/+rU
zEctPAUAAPy+45fheLg+Z7/f316u3265+sDxltopAADgl7WE39L++L/tePzV
gOFy/fEhgPwPAACb1qL+/NX4w0OA4fgl+f/jgf++DO/j2PHdY3XiOPN47LFv
sh7Hjn/nWM93/ORxgsvlMrwK0LfvOY6Sl1z/b7OAsqh/0TBS+WRS+fCt/X5/
93U4r375d/hdgOH46pV8pnsHtVNLyP+UmQVkUvlkUvkw7yqTT81c/z88dT99
Jf/xwULt1BLyPwAAPOnuFfXjnwNrjw4e/bneIcDf/tXg8qklSy18gQAAwBbJ
/5TZCyaTyieTyoduyP+UmQVkUvlkUvnQDfkfAAByyP8AAJBD/qfMXjCZVD6Z
VD50Q/6nzCwgk8onk8qHbsj/AACQQ/4HAIAc8j9l9oLJpPLJpPKhG/I/ZWYB
mVQ+mVQ+dEP+BwCAHPI/AADkkP8psxdMJpVPJpUP3ZD/KTMLyKTyyaTyoRvy
PwAA5JD/AQAgh/xPmb1gMql8Mql86Ib8T5lZQCaVTyaVD92Q/wEAIIf8DwAA
OeR/yuwFk0nlk0nlQzfkf8rMAjKpfDKpfOiG/A8AADnkfwAAyCH/U2YvmEwq
n0wqH7oh/1NmFpBJ5ZNJ5UM35H8AAMgh/wMAQA75nzJ7wWRS+WRS+dAN+Z8y
s4BMKp9MKh+6If8DAEAO+R8AAHLI/5TZCyaTyieTyoduyP+UmQVkUvlkUvnQ
DfkfAAByyP8Aq2ibAGyaQUaZvWACffzx6oXAb9PzoRumGGVmAWk+/vbq5cCv
0vOhG0YYwHLCPwBbZ4oBrKJtArBpBhll9oLJpPLJpPKhG/I/ZWYBmVQ+mVQ+
dEP+BwCAHPI/AADkkP8psxdMJpVPJpUP3ZD/KTMLyKTyyaTyoRvyPwAA5JD/
AQAgh/xPmb1gMql8Mql86Ib8T5lZQCaVTyaVD92Q/wEAIIf8DwAAOeR/yuwF
k0nlk0nlQzfkf8rMAjKpfDKpfOiG/A8AADnkfwAAyCH/U2YvmEzaJpn0fOiG
QUaZWUCgjz9evRD4bXo+dMMUA1jo42+vXg4AVBhhAMsJ/wBsnSlGmb1gMmmb
ZNLzoRsGGWVmAZlUPplUPnRD/gcAgBzyPwAA5JD/KbMXTCaVTyaVD92Q/ykz
C8ik8smk8qEb8j8AAOSQ/wEAIIf8T5m9YDKpfDKpfOiG/E+ZWUAmlU8mlQ/d
kP8BACCH/A8AADnkf8rsBZNJ5ZNJ5UM35H/KzAIyqXwyqXzohvwPAAA55H8A
AMgh/1NmL5hMKp9MKh+6If9TZhaQSeWTSeVDN+R/gFW0TQA2zSADWO7jj1cv
BACKTDHK7AWT5uNvr14O/Co9H7phhFFmFhBI+CeWng/dMMUAVtE2Adg0gwwA
AHLI/5TZCyaTyieTyoduyP+UmQVkUvlkUvnQDfkfAAByyP8AAJBD/qfMXjCZ
VD6ZVD50Q/6nzCwgk8onk8qHbsj/AACQQ/4HAIAc8j9l9oLJpPLJpPKhG/I/
ZWYBmVQ+mVQ+dEP+BwCAHPI/AADkkP8psxdMJpVPJpUP3ZD/KTMLyKTyyaTy
oRvyPwAA5JD/AQAgh/xPmb1gMql8Mql86Ib8T5lZQCaVTyaVD92Q/wEAIIf8
DwAAOeR/yuwFk0nlk0nlQzfkf8rMAjKpfDKpfOiG/A8AADnkfwAAyCH/U2Yv
mEwqn0wqH7oh/1NmFpBJ5ZNJ5UM35H8AAMgh/wMAQA75nzJ7wWRS+WRS+dAN
+Z8ys4BMKp9MKh+6If8DAEAO+R8AAHLI/5TZCyaTyieTyoduyP+UmQVkUvlk
UvnQDfkfAACedzwed7tdS9ft7fl8np46nU7jqXb8o6e+Jf8DAMCTDodDy/+X
y6Udt7f7/X6M5e2xwPiIYHr8E6eWkP8psxdMJpVPJpUP866ehG8PAVosH47b
Q4Pp2XbcbvmhU0vI/5SZBWRS+WRS+bDKNP+3g2Ff4BdOLSH/AwDAv3X8Mhzf
5u3xln9+agn5HwAA/qHT6bTf78f/lf/phr1gMql8Mql8WOh4PF5djf+G+f+u
/74M7+PY8d3j//54k/U4duzYseOfO/7vjzdZj+PNHSe4XC7DqwBd3e76fwAA
6M9+v7/7OpxXL9cz3SD456eWkP8BAOBJV5l8anh+fvpy/eOz9//81BLyP2VR
O3owUvlkUvkw7+4V9WMsH1L63T8N/M9PLVnq2q8OBmYBmVQ+mVQ+dEP+BwCA
HPI/AADkkP8psxdMJpVPJpUP3ZD/KTMLyKTyyaTyoRvyPwAA5JD/AQAgh/xP
mb1gMql8Mql86Ib8T5lZQCaVTyaVD92Q/wEAIIf8DwAAOeR/yuwFk0nlk0nl
Qzfkf8rMAjKpfDKpfOiG/A8AADnkfwAAyCH/U2YvmEwqn0wqH7oh/1NmFpBJ
5ZNJ5UM35H8AAMgh/wMAQA75nzJ7wWRS+WRS+dAN+Z8ys4BMKp9MKh+6If8D
AEAO+R8AAHLI/5TZCyaTyieTyoduyP+UmQVkUvlkUvnQDfkfAAByyP8AAJBD
/qfMXjCZVD6ZVD50Q/6nzCwgk8onk8qHbsj/AACQQ/4HAIAc8j9l9oLJpPLJ
pPKhG/I/ZWYBmVQ+mVQ+dEP+BwCAHPI/AADkkP8psxdMJpVPJpUP3ZD/KTML
yKTyyaTyoRvyPwAA5JD/AQAgh/xPmb1gMql8Mql86Ib8T5lZQCaVTyaVD92Q
/wEAIIf8DwAAOeR/yuwFk0nlk0nlQzfkf8rMAjKpfDKpfOiG/A8AADnkfwAA
yCH/U2YvmEwqn0wqH7oh/1NmFpBJ5ZNJ5UM35H8AAMgh/wMAQA75nzJ7wWRS
+WRS+dAN+Z8ys4BMKp9MKh+6If8DAEAO+R8AAHLI/5TZCyaTyieTyoduyP+U
mQVkUvlkUvnQDfkfAAByyP8AAJBD/qfMXjCZVD6ZVD50Q/6nzCwgk8onk8qH
bsj/AACQQ/4HAIAc8j9l9oLJpPLJpPKhG/I/ZWYBmVQ+mVQ+dEP+BwCAHPI/
AADkkP8psxdMJpVPJpUP3ZD/KTMLyKTyyaTyoRvyPwAA5JD/AQAgh/xPmb1g
Mql8Mql86Ib8T5lZQCaVTyaVD92Q/wEAIIf8DwAAOeR/yuwFk0nlk0nlQzfk
f8rMAjKpfDKpfOiG/A8AADnkfwAAyCH/U2YvmEwqn0wqH7oh/1NmFpBJ5ZNJ
5UM35H8AAMgh/wMAQA75nzJ7wWRS+WRS+dAN+Z8ys4BMKp9MKh+6If8DAEAO
+R8AAHLI/5TZCyaTyieTyoduyP+UmQVkUvlkUvnQDfkfAAByyP8AAJBD/qfM
XjCZVD6ZVD50Q/6nzCwgk8onk8qHbsj/AACQQ/4HAIAc8j9l9oLJpPLJpPKh
G/I/ZWYBmVQ+mVQ+dEP+B1hF2wRg0wwygOU+/nj1QgCgyBSjzF4waT7+9url
wK/S86EbRhhlZgGBhH9i6fnQDVMMYBVtE4BNM8gAACCH/E+ZvWAyqXwyqXzo
hvxPmVlAJpVPJpUP3ZD/AQAgh/wPAAA55H/K7AWTSeWTSeVDN+R/yswCMql8
Mql86Ib8DwAAOeR/AADIIf9TZi+YTCqfTCofuiH/U2YWkEnlk0nlQzfkfwAA
yCH/AwBADvmfMnvBZFL5ZFL50A35nzKzgEwqn0wqH7oh/wMAQA75HwAAcsj/
lNkLJpPKJ5PKh29dLpfD4XCbrocbp3a73Xj2dDq1/x1ubMfTD6yd+pb8T5lZ
QCaVTyaVD/OGQN7e3qbr/X7fHhrc/ajz+dw+qr29Oi6fWkL+BwCAJx0OhyHk
r8r/7aOmz96343bLM6eWkP8BAOBfuU3Xu93uUf6/OtWOx0uDaqdqK4SF7AWT
SeWTSeXDQnfz//l83u/3t5fr377zeEvtVG2FsJBZQCaVTyaVDwvdvf7neDwO
z9gPl+uPDwHkfwAA2LRv0/XwEODRO/9O/r/rvy/D+zh27NixY8eOHTt2/Mxx
jiVRfHwf1/+zLYH/ouFT5ZNK5cNCt+n66pd/h98FGI6vXsnneDw+epGfhadq
K4SFzAIyqXwyqXxYaNX1/8NT99NX8h8fLNRO1VYIAACscveK+uHU8HeBH/25
3iHAD6eu/oxX7dSSpa7+8gAAgG2S/ymzF0wmlU8mlQ/dkP8pMwvIpPLJpPKh
G/I/AADkkP8BACCH/E+ZvWAyqXwyqXzohvxPmVlAJpVPJpUP3ZD/AQAgh/wP
AAA55H/K7AWTSeWTSeVDN+R/yswCMql8Mql86Ib8DwAAOeR/AADIIf9TZi+Y
TCqfTCofuiH/U2YWkEnlk0nlQzfkfwAAyCH/AwBADvmfMnvBZFL5ZFL50A35
nzKzgEwqn0wqn205n8+Hw2H3pcXd4aDd0m5/9dJeT/4HAKAbLeG3qL/f74/H
Yzu+XC7txva2Hbdb2u3tbPijAPkfAIA+nE6nFu/b2yffp2/yP2X2gsmk8smk
8tmE/X4/POE/r71Pe88fX827kv8pMwvIpPLJpPKhG/I/AACdmT7DPxy30Ltw
d6B78j8AAJ1pUX+8wr8dD7/wO/z+7+sW9S7kf8rsBZNJ5ZNJ5bMtY8S9XC7t
eHzaX/T99E3gCWYBmVQ+mVQ+2zJG3OHVfm5vT+abAABAZ8brfw6Hw/F4HG5s
t7j+51P+BwCgO+Pv/Lb8P944/iJAOPmfMnvBZFL5ZFL50A35nzKzgEwqn0wq
H7oh/wMAQA75HwCAzozX/9969dJezzeBMnvBZFL5ZFL5bEsL/8fj0V/7vUv+
p8wsIJPKJ5PKZ1tE3Bm+OQAAdGa323ny/xH5HwCAzpzPZ6/2/4j8T5m9YLp3
9xfHHnn1YuFn6flsy263064f8U2gzCwgk7ZJJj0fumGQAayibQKwaQYZwCra
JsDb2u/3S37td/jrAD++mndlkFFmL5hM2iaZ9Hw24XQ67Xa79vbJ9+mbQUaZ
WUAmbZNMej5bcT6fW7wf/v5XOx62A9rbdtxuabe3s+GvC2SQAayibQK8v5bw
D4fD7kvr28NBuyU8+Q8MMoBVtE0ANs0go8xeMJm0TTLp+dANg4wys4BM2iaZ
9HzohkEGsIq2CcCmGWQAq2ibAGyaQUaZvWAyaZtk0vPZliV/BSyWQUaZWUAm
bZNMej7b0nq1V/t8xCADWEXbBHh/l8vldDoNfwLgeDzaDpgyyABW0TYBtuV8
Pu+/tEcEHgh8GmQ8wV4wmbRNMun5bN3xePz4MjwQePVyXskgo8wsIJO2SSY9
n40aLgTafWkPAc7n8/BAIPkhgEEGsIq2CfD+WuxvOX+/37fYf/uLwO1/2+2v
WdkbMMgAVtE2Ad7ft9f5JDfz5K+dJ9kLJpO2SSY9n23xe74zDDLKzAIyaZtk
0vPZlpb/9/v91Y3tFo8LPg0ygJW0TYD3d/fin3bL7YOCQAYZwCraJsD7e9Sr
9fBP3wSeYC+YTNommfR8tmW3291e6tNuSX7Zn5FBRplZQCZtk0x6PtsyXOpz
Pp+HRwHt7fCan8kv+z8yyABW0TYBNqEF/uH1/1vfbm+HhwOvXtRbMMgAVtE2
Adg0g4wye8Fk0jbJpOdDNwwyyswCMmmbZNLzoRsGGcAq2ibA+xv+/tfHPa9e
2uv5JgCsom0CvL8W/o/Ho7/2e5dBRpm9YDJpm2TS89kWvXqGbw5lZgGZtE0y
6flsy92//8XAIANYRdsEeH/Di/97wf+7DDKAVbRNgPc3/Nkvv/97l28CZfaC
yaRtkknPh24YZJSZBWTSNsmk50M3DDKAVbRNgE04n8+Hw2G4EGi4Zb/f+6Xg
T4MMYCVtE+D9nU6nlvzb2xb4x759PB7bI4KXrustGGSU2Qsmk7ZJJj2fbWnh
f3zxn7FvTx8LJPNNoMwsIJO2SSY9n22Z9upHx7F8EwBW0TYB3t/d5//bLe32
Vy3pfRhkAKtomwDv7/b6/yH8t1tevbTXM8gosxdMJm2TTHo+mzP8CeDhb361
5O/PAY8MMsrMAjJpm2TS86EbBhnAKtomAJtmkAGsom0CvL9Hr/Pv938/DTKe
YC+YTNommfR8tuVur/b6PwODjDKzgEzaJpn0fLZiv9+3kP9xz/RFQZMZZACr
aJsA70+vnuGbA7CKtgmwUePfAgjnm0CZvWBq7u7J8pteXQJskp7P5hwOh6sL
gdr/Ho/HV6/r9QwCyswCalrbOf7v//jvVf9p+9To+WzL4cvlcvn8E3dPp9N+
vx9uCWcQAL9M/pf/AX7abrcbo/7Y99pDgEevCxrFIAB+mfwv/wP8tGmvG1/z
sz0i8Pqfn/I/T7AXTI38L/+zRXo+2zJ9/v/uXkAy3wTKzAJq5H/5ny3S89mW
w+FwOp2G4+OXzz+/AvC6Rb0LgwD4ZfK//A/w0y6XyzTqt4cDrfv5/d+BQQD8
Mvlf/gfghQwCyuwFUyP/y/9skZ4P3TAIKDMLqJH/5X+2SM+nD3rgp28C8Ovk
f/kf4FX0wE/fBODXyf/yP8Cr6IGfvgk8wV4wNR+82qtLgE3S8+mDHvjpm8AT
zAJqPjz/7/l/NkjPpw964KdvAvDr5H/5H+BV9MBP3wTg18n/8j/Az3EN5Ld8
EyizF0yN/C//s0V6PnTDIKDMLKBG/pf/2SI9H7phEAC/TP6X/wF4IYMA+GXy
v/wPwAsZBJTZC6ZG/pf/2SI9H7phEFBmFlAj/8v/bJGeD90wCIBfJv/L/wC8
kEEA/DL5X/4H4IUMAsrsBVMj/8v/bJGeD90wCCgzC6iR/+V/tkjPh24YBMAv
+/Yvs/PTXl0CALySQQCwirYJwKYZZJTZCyaTtkkmPR+6YZBRZhaQSdskk54P
3TDIAFbRNgG463K5HA6Hu2PidDrtdrt2qr1txz966lsGGcAq2iYAt4ZA3t7e
jonz+dxOtbdXxz9xagmDjDJ7wWTSNsmk58O8w+FwuVw+742Jdmr6FH07brf8
0KklDDLKzAIyaZtk0vNhodsxsdvthocGg3bcbvmhU7UVAjBD2wRgxu2YmLnl
n5+qrRCAGdomADPkfzpmL5hM2iaZ9HxYaBP5/67/vgzv49jx3eP//niT9Th2
/DvHY499k/U4dvw7x//98Sbrcby54xyu/wfojLYJwIxvX//neDw+eiWf50/V
VgjADG0TgBm3Y2J4fn76cv3js/f//FRthbBQ4I4efGqbpNLzYd7dK+rHs0NK
H/5c79Xf6vrnp5Ysdd3XBn+YBWTSNsmk50M3DDKAVbRNADbNIANYRdsEYNMM
MsrsBZNJ2ySTng/dMMgoMwvIpG2SSc+HbhhkAKtomwBsmkEGsIq2CcCmGWSU
2Qsmk7ZJJj0fumGQUWYWkEnbJJOeD90wyABW0TYB2DSDDGAVbROATTPIKLMX
TCZtk0x6PnTDIKPMLCCTtkkmPR+6YZABrKJtArBpBhnAKtomAJtmkFFmL5hM
2iaZ9HzohkFGmVlAJm2TTHo+dMMgA1hF2wRg0wwygFW0TQA2zSCjzF4wmbRN
Mun50A2DjDKzgEzaJpn0fOiGQQawirYJwKYZZACraJsAbJpBRpm9YDJpm2TS
86EbBhllZgGZtE0y6fnQDYMMYBVtE4BNM8gAVtE2Adg0g4wye8Fk0jbJpOdD
NwwyyswCMmmbZNLzoRsGGcAq2iYAm2aQAayibQKwaQYZZfaCyaRtkknPh24Y
ZJSZBWTSNsmk50M3DDKAVbRNADbNIANYRdsEYNMMMsrsBZNJ2ySTng/dMMgo
MwvIpG2SSc+HbhhkAKtomwBsmkEGsIq2CcCmGWSU2Qsmk7ZJJj0fumGQUWYW
kEnbJJOeD90wyABW0TYB2DSDDGAVbROATTPIKLMXTCZtk0x6PnTDIKPMLCCT
tkkmPR+6YZABrKJtArBpBhnAKtomAJtmkFFmL5hM2iaZ9HzohkFGmVlAJm2T
THo+dMMgA1hF2wRg0wwygFW0TQA2zSCjzF4wmbRNMun50A2DjDKzgEzaJpn0
fOiGQQawirYJwKYZZACraJsAbJpBRpm9YDJpm2TS86EbBhllZgGZtE0y6fnQ
DYMMYBVtE4BNM8gAVtE2Adg0g4wye8Fk0jbJpOdDNwwyyswCMmmbZNLzoRsG
GcAq2iYAm2aQAayibQKwaQYZZfaCyaRtkknPh24YZJSZBWTSNsmk50M3DDKA
VbRNADbNIANYRdsEYNMMMsrsBZNJ2ySTng/dMMgoMwvIpG2SSc+HbhhkAKto
mwBsmkEGsIq2CcCmGWSU2Qsmk7ZJJj0fumGQUWYWkEnbJJOeD90wyABW0TYB
2DSDDGAVbROATTPIKLMXTCZtk0x6PnTDIKPMLCCTtkkmPR+6YZABrKJtArBp
BhnAKtomAJtmkFFmL5hM2iaZ9HzohkFGmVlAJm2TTHo+dMMgA1hF2wRg0wwy
gFW0TQA2zSCjzF4wmbRNMun50A2DjDKzgEzaJpn0fOiGQQawirYJwKYZZACr
aJvwf+3d3XHjOBYGUGWiUByKQlEomkz8vFH4eaLQoIxtFpr6gy4l08Q9p6Zc
bJEi5d1L4CMBU8Cm6cgIMxZMTppNctLmwzB0ZITpC8hJs0lO2nwYho4M4Cma
TQA2TUcG8BTNJgCbpiMjzFgwOWk2yUmbD8PQkRGmLyAnzSY5afNhGDoygKdo
NgHYNB0ZwFM0mwBsmo6MMGPB5KTZJCdtPgxDR0aYvoCcNJvkpM2HYejIAJ6i
2QRg03RkAE/RbAKwaToywowFk5Nmk5y0+TAMHRlh+gKGt3vG2h8W3kubD8PQ
ZwEAQB7yP8D5mcZQswnApunICDMWzDD65/CY7UNa2nwYhl6MMH0BY+ifxm/C
P5lp82EYujAA9/8ByEMvBnDuawzd/wdgALowwowFk438T2bafBiGLowwfQEJ
Cf+kpc2HYejFAJ6i2QRg03RkAACQh/xPmLFgclL55KTyYRjyP2H6AnJS+eSk
8mEY8j8AAOQh/wMAQB7yP2HGgslJ5ZOTyodhyP+E6QvISeWTk8qHYcj/AACQ
h/wPAAB5yP+EGQsmJ5VPTiofwg6Hw+5v+/1+Wns6nco/64tluX1jbNVD8j9h
+gJyUvnkpPIh7OPj4+vr6+qqz8/PEuDLz9lyeFUP+R8AAN7nTv4/HA7t3fuy
XF5ZsqqH/A8AAO+z3+9v5f/ZqrI8TQ2Kreoh/xNmLJicVD45qXwIq/NzPj4+
LqfrX0bx6ZXYqh7yP2H6AnJS+eSk8iGsJP/j8Vjv2Nfp+tMlgPwPAABjq5cA
dXmt/H/VP9/qNpYtW7Zs2bJly5YtL1mmNcV18//ZFmc0Oal8clL5EDb749/6
twB1efYkn+PxeOshP52resj/hOkLyEnlk5PKh7A78//rrfv2Sf7TxUJsVQ/5
HwAA3qeE88PhcOvremuAr6tmX+MVW/WQ/A8AAHnI/4QZCyYnlU9OKh+GIf8T
pi8gJ5VPTiofhiH/AzxFswnApunIAPpNX5Ky9gcBgCC9GGHGgslm9j2Ja38c
+FHafBiGLowwfQEJCf+kpc2HYejFAJ6i2QRg03RkAACQh/xPmLFgclL55KTy
YRjyP2H6AnJS+eSk8mEY8j8AAOQh/wMAQB7yP2HGgslJ5ZOTyodhyP+E6QvI
SeWTk8qHYcj/AACQh/wPAAB5yP+EGQsmJ5VPTiofhiH/E6YvICeVT04qH4Yh
/wMAQB7yPwAA5CH/E2YsmJxUPjmpfBiG/E+YvoCcNJvkpM2HYejIAPrt/lj7
gwBAkF4MoNPub2t/HACI0IURZiyYhIR/0tLmwzD0YoTpC8jG/X8y0+bDMHRh
AJ3kfwAGoAsD6Cf8A7B1ejHCjAWTjfv/ZKbNh2HowgjTF5CN/E9m2nwYhi4M
oJP8D8AAdGEAneR/AAagCyPMWDDZyP9kps2HYejCCNMXkJDwT1rafBiGXgyg
k/v/AAxAFwbQT/gHYOv0YoQZCyYnzSY5afNhGDoywvQF5KTyyUnlwzDkfwAA
yEP+BwCAPOR/wowFk5PKJyeVD8OQ/wnTF5CTyicnlQ/DkP8BACAP+R8AeEhg
gGE4nQkzFkxOKp+EfPMdjMS5TJgURE4qn2x2f1v74wBLOZEBgPuEfxiJcxkA
eEhggGE4nQkzC4KcVD4j6Y8B79gSWIWTlDApiJxUPsPon9Xzji2BtThDASCh
O3/Vu3tG5z6B38PpCQA/4KlQzTusXQLwWzgdCDMLgpxUPjFrh18EHvg/pwNh
UhA5qXyykaJhME5kAOA+4R9G4lwGAB4SGGAYTmfCzIIgJ5VPTiofhiH/E6Yv
ICeVT04qH4Yh/wMAQB7yPwAA5CH/E2YsmJxUPjmpfBiG/E+YvoCcVD45qXwY
hvwPAAB5yP8AAJCH/E+YsWByUvnkpPJhGPI/YfoCclL55KTyYRjyPwAA5CH/
AwBAHvI/YcaCyUnlk5PKh2HI/4TpC8hJ5ZOTyodhyP8AAJCH/A8AAHnI/4QZ
CyYnlU9OKh+GIf8Tpi8gJ5VPTiofhiH/AwBAHvI/AADkIf8TZiyYnFQ+Oal8
GIb8T5jiIScpiJxUPgxDhGOmsyR2f7xwnwAAvJtgRqsz1e/+9pJ9AgDwA6Qy
Jv2p/h1bwlaYBUFOKh+GIZLR6g/q79gSNkEKIieVD8OQypJ4Kqi7/w8AMCqR
LIOX36t/KtUL/wAAv4dUNrx17+q7/894zIIgJ5UPwxDJMlh+/3/3jPDRYROk
IHJS+TAMqSyJ/v+j190SAIC3EswIUzwAAJsjwhGmeMjJLAhyUvkwDBGOMMVD
TlIQOal8GIYIR5jiAQDYHBGOMMUDALA5IhxhioeczIIgJ5UPwxDhCFM85CQF
kZPKh2GIcCt66ku1eIe1SwAA4KeJQCsq/+P/7/iv/9b6T/EDAAmJQCuS/+V/
tsgsCHJS+TAMEWhF8r/8zxZJQeSk8mEYItCK5H/5HwDgh4lAK1rlL15prV0C
AAA/TQRa0c79f/f/2SCzIMhJ5cMwRKAVyf/yP1skBZGTyodhiEArWnHeC9Xa
JQAA8NNEIMIUDwDA5ohwhCkecjILgpxUPgxDhCNM8ZCTFEROKh+GIcIRpngA
ADZHhCNM8QAAbI4IR5jiISezIMhJ5cMwRDjCFA85SUHkpPJhGCIcYYoHAGBz
RDjCFA8AwOaIcIQpHnIyC4KcVD4MQ4Sjx+4Za39YeC8piJxUPgxDWgMAgDzk
fwAAyEP+J8xYMDmpfHJS+TAM+Z8wfQE5qXxyUvkwDPkfAAC25XQ67ff7kuTL
z7L81HvlfwAA2JDPz88S+8vP2XIn+Z8wY8HkpPLJSeXD73E4HNp7/mW5vNL/
dvmfMH0BOal8clL58Hvs9/uvr6/pn2W5vNL/dvkfAAA25DLAPxXp5X8AANgQ
+Z+1GAsmJ5VPTioffo/l+f+qf77VbSxbvrqsTiznXJ7a2F/yeSxb/pllbb7l
hcu80ML5/wAAwIbMnv9zPB6fev4PAACwIfWGf/v8/3Y4AAAAGEyN/fX7f5/6
8i8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB+3m63e9/O65fZvfUQEPbuylT/
/H536lPvAPAb7P5WGs+Pj4/j8TitPZ1OV99YXl/SzJajxN5YDuoL7Ig5fnt2
1Tuof17i95R0a3kCj50gzg6ATpcN9dfXV+k1DodDXVuuCK6+sbTPSxr5W7t9
yL0dliiFfXlJW16pBf9j1D+v8ktKurW8SmMniLMDoNOtBrO+Xn7e6Vzuv7cq
zfjn52cdky2XDOXi4twMOrQ9VNln3az8bI/Y7qEV+W3hOy+1NwnL8rN1OFXy
pYfFf1b/vNpbS7rdw2yzW3vunP/Tf4I4OwBe62pTWWdRnv8Mp17eiqmtbk/+
bxv24/E4jerO3luPUruwdvn85xqk7Rqe+PXgmlKHtcBKXbVJ6X4dXq3kmZ7i
P6t/Xu19JV22nzYr2XvarGby6aCzPd/6nIETxNkB8HKXDWZpWqeJo3Xt7JZL
bfavvvdyn+2EzNJKT6tm7y0t/+wQUxc2m9KphWe5Uoo1L83mSHTWYVvJMz3F
f1b/vNr7Snq6srj/er1MmPZ863MGThBnB8DL7a6ZNeNT4K+my4HOCHR11eXr
7bDyNABxZw+wRLnCLbU0+wPJ5XXYU/xXV6l/FnpTSZftr04Nutzzreb91lE6
TxBnB8DLzRrM0rTWO0jT3//W16fM314LvDb/X7q/Bwirs9dqXprdP1xYh+H8
r/5Z4mdK+v7r78v/zg6A17raYE53cqa1U+xv5wItiUCz1+887UELz2vdmU68
vA5j+V/9s8RbS/rW/f/Z63duy986SucJ4uwAeLnO/H/+boSPx2PbFL8w/9+a
YnpnDxBQU0o7nbjmpZpkltdhLP+rf8LeXdJvnf/fs8rZAfBylw1mff5/+/e/
1eXk0iURqL1Ddf77nlX9ALe6Ei08YZdJqarDW3Xy28I67Iw36p+X+IGSbq8m
bj3/p27zcGj4HDpBnB0ALzebVLn//v7fq814O7x7ufbW67fa59qktzucnvC8
u/tINy08YbMHibSmYLOwDjvjjfrnJX6gpM9ve/5//wni7AAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgj6+vr/1+
v9vtynL9uYoVDw0AAL/W6XT6+PjYfSu5/XA4lAC/ZIdlP5+fn6/5cE8qv8gq
xwUAgE0oab9k5hrXS+wvC8fjsVwFLAnwK954L598rUMDAMAvdzqdrgbm47d2
mzo0UJanbeo1Ql1VriDqkEF5Zdc4X1wLTHurb5nWzjZr/9keqL5S3lguW6ZP
VZand1X1lVuH7vlFAABgPCXutkn4Us3M0+hAOy7QpuVysdBOvGmDd7vc7m1K
45ebXe5hNiWpfuz6Sr0WaC8BHh66/xcBAICRlBh8/3b3NDWoKstTPG4n+bd3
8s+3Q/hsbyWTd+b/+5ORap5/6tCdvwgAAIzkYdYtG7QXCJ0zdm4tzy43Anu7
8zkffozAoQEAYCQP7/9fhuEl+X/53ib1j5TrDKLpbw1efmgAABjJw/n/l3fs
r860OYfyf/j+/+FwKPn/69tsm/6hh55fBAAARlKfe3M5BFDSdf2L2vvT5tu3
BOb/l6O0uX36GPUhQlf3cPWVdvvY/P87OwcAgJHMnvY/e/5/+9icerEwjRcE
8n/9orGa82fP/ymv1yeOlrX1y8iu7qGaPkbZuO5zuoqZPdinPXTgFwEAgPHc
//7fW4/ND+T/8+3n/0+xf3oa/609nP/cvW8/7TSUUN9b3975/H/5HwAA3mH2
GM92Ej4AADCYOsln+t6uh399DAAAbFf9rt46Cacs3P9WLwAAAAAAAAAAAAAA
AAAAAAAAAIBs/gMsnokiDQplbmRzdHJlYW0NCmVuZG9iag0KODcgMCBvYmoN
Cjw8L1R5cGUvUGFnZS9QYXJlbnQgMiAwIFIvUmVzb3VyY2VzPDwvRXh0R1N0
YXRlPDwvR1M1IDUgMCBSL0dTMTAgMTAgMCBSPj4vWE9iamVjdDw8L0ltYWdl
MTkgMTkgMCBSL0ltYWdlODkgODkgMCBSPj4vRm9udDw8L0YxIDggMCBSL0Yy
IDE1IDAgUi9GNSAzNSAwIFI+Pi9Qcm9jU2V0Wy9QREYvVGV4dC9JbWFnZUIv
SW1hZ2VDL0ltYWdlSV0gPj4vTWVkaWFCb3hbIDAgMCA5NjAgNTQwXSAvQ29u
dGVudHMgODggMCBSL0dyb3VwPDwvVHlwZS9Hcm91cC9TL1RyYW5zcGFyZW5j
eS9DUy9EZXZpY2VSR0I+Pi9UYWJzL1MvU3RydWN0UGFyZW50cyAyMj4+DQpl
bmRvYmoNCjg4IDAgb2JqDQo8PC9GaWx0ZXIvRmxhdGVEZWNvZGUvTGVuZ3Ro
IDg1Mz4+DQpzdHJlYW0NCnictVZtb9owEP6OlP9wH51KGL/HmapKfVvVaZW2
lWmTpn2gFAJaAyxQdf1J+5ezz6FAV5JIwBfrcj7n7p577uzOabEYD3v9BZzd
nMPvqMWAUcYYF4IlkBoGWjEoBlHr2xFMolbn6lZDNo9aHLIXY2Y4k3rDengU
tT5HLbh0f+289mFlQhMNPKFCQ2KoE7VXrNyg0v293Ng40M9dGNd5LxvwFC6m
sHQDndtZbwLHx52b8+sLYJ2PvUkGZDBpf72NT07g7CIkiBFzJZn38H+GZ133
+/ccUpo4l92hTxUjASVS6kDhgqYujG7u888QEs4QEwZXUesH+Ru3pSAQK0vO
Y8nJNOYpmfnl2e0YUsTCkHHcTkjmlSO/LOK2sO5Mm1tOhNcwv6wkv8U0+R5z
ycLhB7+gNPEGf+Kf0P0QtS67FcjXVJdRaw1mW2B1tZQecW9olgVar+wryPlO
kAuQgsoNxLWgVoOymkoZAKdMJYF6QULAvwzmj7EDZOGW+RswQOfTS4xiFZYw
yldZMwHGGp+o5oqu07BU+2DC1ssRvkZDW0VDuSMNuaVMbPKQS2pBuQ2eVIBy
GitO7h2tknIdO+o4qngxwxVik5J86tXFIOaesm2t1+0cK7kibk+RYuhkXcpo
HUz6A2/+7k3UN4BQOwGhtwIhE0VNBTuOGbPJSW14ev91koZKp6oL0PW0q5SD
USOkBltdkCeP69jDvcDvEe5NvdkjikENsfBjxtni1gMWBcUCD4dfZvX1MfsH
QFhqPQChjbcDAJvR7Yi6ckO6gdMnj1EAau7ANxvg97w+QwWKJZS1ICaHIrnk
lFVk05Dk9nAkrwlwC8kbEDcYO5Kjdh7OzRerMt2hSTg/qC9ReqCBLIyhylYg
0J/hHf+IgTKfjEsrIUOcsVOcq+BfBvdLJBTJWX0+fNeHztaElKJVF8xGPnx7
PuESGZX1WZrdrb7Li2SEv8t7eB/9apD4bs+NisSFe+E1TVzsc3ZpSU2t+/Ze
PaYNPErfZtiDQ2y70KWhE9d6NfQk9ngxXJPXur7foEG52P8QVam/DATj7oG7
8xTlB3jTJe7pWx8gyfG1lZcMfN4nE7hi1DQIYa+XNVea8gZOHzBfHCq4zMoH
LDag+755g1b/AHIoC/QNCmVuZHN0cmVhbQ0KZW5kb2JqDQo4OSAwIG9iag0K
PDwvVHlwZS9YT2JqZWN0L1N1YnR5cGUvSW1hZ2UvV2lkdGggMTAyNC9IZWln
aHQgNzY4L0NvbG9yU3BhY2UvRGV2aWNlUkdCL0JpdHNQZXJDb21wb25lbnQg
OC9JbnRlcnBvbGF0ZSBmYWxzZS9GaWx0ZXIvRmxhdGVEZWNvZGUvTGVuZ3Ro
IDEyNDM3Pj4NCnN0cmVhbQ0KeJzs3eFx4kyQBmBnQiiEQiiEwqZxv8jgUiAU
35SnVqdPIFka1gbN+zy15ZqVMAx2u7vFCPH5CQAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AHE+Pj5ePQX+n19HJr93AHg3H/91OByOx+P5fP7RR7xcLg93le1ruoUyw5UP
tGVeq5y/bN31m952hm2/jpXftTIkfs7cBD7ulD+xd4iTf+j+OQ5ePTUA4IH7
Gn273Up/cjqdfu4RSwv0cFdpotb0DHPffv9AW+a1VvnJ3B+/lC0/9xPb6j1n
+KP9/8qQ+DlzE5j7++rsEGCg5weA9zdXr+v20quUprH0NrVpHzeQ5b/X67Xu
qltKhznccu4V/nrPCw3qeD4P73B4abFOZmGGD59auX3ZXr4+3FK+1mOQogzG
Nxsrj1Ke+/DfMp601nM/ivEP7eH9/5PpfTvD5uk9fI6TW87d+fP9/9z0JiGx
/jne//d+nuP/lnG5cf0VLMTk3LcP6u90vGVutnO/8bmZrH/uk9/aQmit/Lue
e75zv8E6npvPpgcFADaZ60/q65mlKJfiOzSfpy/DN5bxULJrHa8953j88BHr
DSbb67cM81m4w/Gcl2f4cAKTE5zKeDh5o95bHZfBwlklZVedT33Q8a7lmQ99
zvhx//n0Fmb45PSGOxluOZ5JbduGx537ra03ab/npje58+XnOI7byX/v7+p+
AuO7HR8CfDv/wfD39e1s537jCzNZ/hXM/QDnHmj93/Xc8134DR6+zja8n8/W
BwUANrmv16XUzp2fMO5bahs/7Br3D5+LZ5sMr7tObl/veZjPwh0udJKTGT68
zULns75Hra+X3r/y/+3Mhx/a/YvA/3B6CzN8cnrDnTxsySbb62FCw+QH9y+/
P5ze5M5XPsf7/97f1eRRxne75tndb78//6ch1BdmsvwrWPkDXDO3uYktbLmf
wMP5bH1QAGCTj0cWXvhdOE1icjrB/Sv8428cGv5qOBwY3//cHS53knMzHN/V
XOdTlw+GBYVlpYUr33t/oLR+5mtODmme3twMn5xeVb7l4Rzu7/zbX8eyhR51
eVfzc1x+lK0xOf6zqi9335/8tnC3c7/x5Zms/BWsCa31f9cPH+Jz9W9w/N+t
DwoAbDIpwaXU1leMhxfc6jJ9PRe3eviND48jlh9x6PnHxwLj+5+7w8k9r5zh
2PAC4/1Li/XePr47Ab6eqlQb7PsXkFfOfG6Gz09vYYbPT29h10L7t/Ata6Jl
eXrro/Hb57j+UT7XPbs6WDhfa2G2nzO/8U0zWfnc5x5oYW4Lz/fhluUJjOe5
6UEBgE0eFtbhNcPSfJau4PZlcvvJN65/gW7cEdXvenge9cIdjh96/QzHhgsc
PXwn8uff46C5hm35/OSVM1+Y4ZPTW57h89P7nH/9f7J9/arNmimt78yfeY7L
j9Lw+v8wnjsEWPO3M/mNL8xk/a9g7m9//EBbX3j/J/2/V/sB4Ect9/+TvdfR
+3Mnu+ZOCF9+xMPXtdDH5X7Yu3CHCx3FwgzHhnOPt57M8Pm3oZqcfT1uulbO
fGGGz0zv2xk+P72FO/np8/9X7nrmOY5b63E41V1bn91k+8NT2Rv+dhZmsv5X
sPAbWfNnuPyND7es7P+3PigAsMl9vR6/P3FoI8vG+url0EbeN96H0VVHFq4e
Mzm34eO/J6gPexfucPJq9soZTgwnY483zl0FZfzDOTy6IGFdy6iPuzDzTS+w
N0xvzQz/yfTGBxRz1/+5rrtCzrKV3eNkCeaZ53j8e/2l299LYo5vfPzvVXfG
cfiwZb2///tDgIXZzv3GF2ay/lcw/u/cA63/u557vg39/9YHBQA2mZxkW9vO
oRO4jq4xXi+TWDv2z5nGZjgJf3JNxckjDuP7d/ZNzpd4eIe1PajfuGmGYw9P
3R/u7WPmBPvJlUkmT3/SBt/PfH2D3Ta9lTN8fnrjOzn+1vX/F6Y3DonJNLY+
x6HtP/y9WP34xteZq+7fT2Du/j8ffRDzQqg//I0vzORz9a9g8gOcC62Vf9dz
z7eh/9/6oAAA8BPaDmF+wvvMBAAAevU+Xff7zAQAAHr1Pl33+8wEAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOnM+nw+H
w8fHR/l6uVyG7afT6eO/yg2GveWWD7+reRcAAPDTSpNf+v/b7VbG5evxeBza
8jKu2+9dr9fSwJevk3HzLgAA4BdMOvDS8A8v8i/0/+WoYfzqfRmXLc/sAgAA
ft+4/y+Duf5/smvhu1buAgAAfllpyMcv0dfzc47H4/3p+mXL5HuHLW27AACA
31Tf4Ts+Iad0/sNbA+rp+sMhgP4fAAD2bvL6/0Q9BKjjl/T/HzP+fKm3MTZ+
OBYnxpnjIce+yXyMjX9nLOcbPzlOs3xO/lBKXnL+v8UCmsX+RRNO5JNJ5MOy
yav945588ubf+l6AOp4sE5zP57mL/KzctYb+n2ZqAZlEPplEPixbvv7/3Pn/
9TBhfCX/4WChbdca+n8AAHheOQQYPpN3/HEA9e0Acx/XWxv4++9q3vUt/T8A
AOTQ/9PMWjCZRD6ZRD50Q/9PM7WATCKfTCIfuqH/BwCAHPp/AADIof+nmbVg
Mol8Mol86Ib+n2ZqAZlEPplEPnRD/w8AADn0/wAAkEP/TzNrwWQS+WQS+dAN
/T/N1AIyiXwyiXzohv4fAABy6P8BACCH/p9m1oLJJPLJJPKhG/p/mqkFZBL5
ZBL50A39PwAA5ND/AwBADv0/zawFk0nkk0nkQzf0/zRTC8gk8skk8qEb+n8A
AMih/wcAgBz6f5pZCyaTyCeTyIdu6P9pphaQSeSTSeRDN/T/AACQQ/8PAAA5
9P80sxZMJpFPJpEP3dD/00wtIJPIJ5PIh27o/wEAIIf+HwAAcuj/aWYtmEwi
n0wiH7qh/6eZWkAmkU8mkQ/d0P8DAEAO/T8AAOTQ/9PMWjCZRD6ZRD50Q/9P
M7WATCKfTCIfuqH/BwCAHPp/AADIof+nmbVgMol8Mol86Ib+n2ZqAZlEPplE
PnRD/w8AADn0/wAAkEP/TzNrwWQS+WQS+dAN/T/N1AIyiXwyiXzohv4fAABy
6P8BACCH/p9m1oLJJPLJJPKhG/p/mqkFZBL5ZBL50A39PwAA5ND/AwBADv0/
zawFk0nkk0nkQzf0/zRTC8gk8skk8qEb+n8AAMih/wcAgBz6f5pZCyaTyCeT
yIdu6P9pphaQSeSTSeRDN/T/AACQQ/8PAAA59P80sxZMJpFPJpEP3dD/00wt
IJPIJ5PIh27o/wEAIIf+HwAAcuj/aWYtmEwin0wiH7qh/6eZWkAmkU8mkQ/d
0P8DAEAO/T8AAOTQ/9PMWjCZRD6ZRD50Q/9PM7WATCKfTCIfuqH/BwCAHPp/
AADIof+nmbVgMol8Mol86Ib+n2ZqAZlEPplEPnRD/w8AADn0/wAAkEP/TzNr
wWQS+WQS+dAN/T/N1AIyiXwyiXzohv4fAABy6P8BACCH/p9m1oLJJPLJJPKh
G/p/mqkFZBL5ZBL50A39PwAA5ND/AwBADv0/zawFk0nkk0nkQzf0/zRTC8gk
bZJJzodvnc/nw+FQykT5erlcxrvKf39t17cUMoD1Pv569UQAeC+n06n0/7fb
rYzL1+PxOLTl1+u1dOnl62T8E7vWUMUAVvr4r1dPB4A3MunAyyFAacvruBwa
jF+iL+Oy5Yd2raGE0cxaMIE0/8SS82GTcf9fBnVd4Bd2raGK0UwtIJO0SSY5
H9YrDfn4Jfr7wjFs+ee71lDIAADgX6nLxOMTcvT/AADQsfd//f+hP1/qbYyN
H47//PUm8zE2NjY2/rnxn7/eZD7Guxuncf4/XYr9iyacyCeTyIdlk4vwL1z/
53w+z13J5/lda+j/AQDgSQvX/6/HAuPL9Q+v3v/zXWvo/wEA4HnlEGD4TN7J
xwHULv13dn1L/08za8FkEvlkEvnQDf0/zdQCMol8Mol86Ib+HwAAcuj/AQAg
h/6fZtaCySTyySTyoRv6f5qpBWQS+WQS+dAN/T8AAOTQ/wMAQA79P82sBZNJ
5JNJ5EM39P80UwvIJPLJJPKhG/p/AADIof8HAIAc+n+aWQsmk8gnk8iHbuj/
aaYWkEnkk0nkQzf0/wAAkEP/DwAAOfT/NLMWTCaRTyaRD93Q/9NMLSCTyCeT
yIdu6P8BACCH/h8AAHLo/2lmLZhMIp9MIh+6of+nmVpAJpFPJpEP3dD/AwBA
Dv0/AADk0P/TzFowmUQ+mUQ+dEP/TzO1gEwin0wiH7qh/wcAgBz6fwAAyKH/
p5m1YDKJfDKJfOiG/p9magGZRD6ZRD50Q/8PAAA59P8AAJBD/08za8FkEvlk
EvnQDf0/zdQCMol8Mol86Ib+HwAAcuj/AQAgh/6fZtaCySRtkknOh24oZDRT
Cwj08derJwK/Tc6HbqhiACt9/NerpwMALZQwgPU0/wDsnSpGM2vBZJI2ySTn
QzcUMpqpBWQS+WQS+dAN/T8AAOTQ/wMAQA79P82sBZNJ5JNJ5EM39P80UwvI
JPLJJPKhG/p/AADIof8HAIAc+n+aWQsmk8gnk8iHbuj/aaYWkEnkk0nkQzf0
/wAAkEP/DwAAOfT/NLMWTCaRTyaRD93Q/9NMLSCTyCeTyIdu6P8BACCH/h8A
AHLo/2lmLZhMIp9MIh+6of+nmVpAJpFPJpEP3dD/AwBADv0/AADk0P/TzFow
mUQ+mUQ+dEP/TzO1gEwin0wiH7qh/wcAgBz6fwAAyKH/p5m1YDKJfDKJfOiG
/p9magGZRD6ZRD50Q/8PAAA59P8AAJBD/08za8FkEvlkEvnQDf0/zdQCMol8
Mol86Ib+HwAAcuj/AQAgh/6fZtaCySTyySTyoRv6f5qpBWQS+WQS+dAN/T8A
AOTQ/wMAQA79P82sBZNJ5JNJ5EM39P80UwvIJPLJJPKhG/p/AADIof8HAIAc
+n+aWQsmk8gnk8iHbuj/aaYWkEnkk0nkQzf0/wAA8Lzz+Xw4HEp3Xb5er9dh
++l0+vivcoNh7+VyGb6rjMd32LbrW/p/AAB4UmnyS/9/u93KuHw9Ho9DW17G
dfu9cpgwHCyMx8271tD/08xaMJlEPplEPiybvAhfGv7hRf6F/r8cNYy/sYzL
lmd2raH/p5laQCaRTyaRD5uM+/8ymOv/J7sWvmvlrjX0/wAA8G+dv9RxPT/n
eDzen65/34oPW9p2raH/BwCAf6h0+KXbH/5bxsNbA+rp+sMhgP6ffbEWTCaR
TyaRDyuVVn/5bPx6CFDHr+r/H/rzpd7G2Pjh+M9fbzIfY2NjY+OfG//5603m
Y7y7cYLb7VavAvTtLYd23fn/AACwU8fj8eF1OCdv/q3vBajjyZV8xmsHbbvW
0P8DAMCTJj352ML5//Wl+/GV/IeDhbZda+j/aRa1ogcDkU8mkQ/LHp5RP3wc
WDk6mPu43trA339qcPOuNVNteILwqRaQSuSTSeRDN/T/AACQQ/8PAAA59P80
sxZMJpFPJpEP3dD/00wtIJPIJ5PIh27o/wEAIIf+HwAAcuj/aWYtmEzSJpnk
fOiGQkYztYBAw0e6vHoi8NvkfOiGKgaw0uRTHV89HQBooYQBrKf5B2DvVDGa
WQsmk7RJJjkfuqGQ0UwtIJPIJ5PIh27o/wEAIIf+HwAAcuj/aWYtmEwin0wi
H7qh/6eZWkAmkU8mkQ/d0P8DAEAO/T8AAOTQ/9PMWjCZRD6ZRD50Q/9PM7WA
TCKfTCIfuqH/BwCAHPp/AADIof+nmbVgMol8Mol86Ib+n2ZqAZlEPplEPnRD
/w8AADn0/wAAkEP/TzNrwWQS+WQS+dAN/T/N1AIyiXwyiXzohv4fAABy6P8B
ACCH/p9m1oLJJG2SSc6HbihkNFMLCPTx16snAr9NzoduqGIAK33816unAwAt
lDCA9TT/AOydKkYza8FkkjbJJOdDNxQymqkFZBL5ZBL50A39PwAA5ND/AwBA
Dv0/zawFk0nkk0nkQzf0/zRTC8gk8skk8qEb+n8AAMih/wcAgBz6f5pZCyaT
yCeTyIdu6P9pphaQSdokk5wP3VDIANb7+OvVEwGARqoYwEof//Xq6QBACyWM
ZtaCCaT5J5acD91QxWimFpBJ2iSTnA/dUMgANpE2Adg1hQxgPef/ALB3qhjN
rAWTxvt/SSbnQzeUMJqpBaTR/5NMzoduKGEA62n+Adg7VQxgJa//A9ABJYxm
1oIJpPknlpwP3VDFaKYWkMbr/yST86EbShjAepp/APZOFQPYRNoEYNcUMppZ
CyaTtEkmOR+6oZDRTC0gkPN/iCXnQzdUMYCVvP8XgA4oYQDraf4B2DtVjGbW
gknj9X+SyfnQDSWMZmoBgTT/xJLzoRuqGMCcjy1ePVkAWEXNAthE2gRg1xQy
mlkLJpO0SSY5H7qhkNFMLSCTtEkmOR+6oZABbCJtArBrChnAJtImALumkNHM
WjCZpE0yyfnQDYWMZmoBmaRNMsn50A2FDGATaROAXVPIADaRNgHYNYWMZtaC
ySRtkknOh24oZDRTC8gkbZJJzoduKGQAm0ibAOyaQgawibQJwK4pZDSzFkwm
aZNMcj50QyGjmVpAJmmTTHI+dEMhA9hE2gRg1xQygE2kTQAeOp/Ph8OhlIny
9Xq9jnddLpdhVxn/6K5vKWQ0sxZMJmmTTHI+LDudTqX/v91uZVy+Ho/HoS0v
xwLDEcF4/BO71lDIaKYWkEnaJJOcD8smL8KXQ4DSltdxOTQY7y3jsuWHdq2h
kAFsIm0C8K1x/18GdV3gF3atoZABbCJtAvCt85c6vi8cw5Z/vmsNhYxm1oLJ
JG2SSc6H9S6Xy/F4HP6r/6cbagGZpE0yyfmw0vl8npyN/4b9/0N/vtTbGBsb
GxsP4yHHvsl8jI2NjXcxTnC73epVgCbbnf8PsGvSJgAPHY/Hh9fhnFyuZ7xA
8M93raGQ0SzqiB4G0iaZ5HxYNunJx+rr8+PL9Q+v3v/zXWsoZDRTC8gkbZJJ
zmdfSldcGvLDl/ohuUXZsulzsjZ5eEb90JbXLv3hRwP/811rprr12QEkkzYB
3lltjI/H4/l8LuPhA3nLuGwp2xsa5s4oZACbSJsAb+tyuZT2fu48nPW36ZtC
RjNrwWSSNskk57MLx+NxzZnw5Tbj6/OnUchophaQSdokk5wP3VDIADaRNgHe
3/gV/jou2Xvl6kD3FDKATaRNgPdXWv3hDP/hsvz1/b+vm9S7UMhoZi2YTNIm
meR89mXI1bfbbXwdTjn80w+BJ6gFZJI2ySTnsy9Drq5X+7nfnswPAWATaRPg
/Q3n/5xOp/P5XDeWLc7/+VTIADaSNgHe3/Ce39L/DxuHNwKEU8hoZi2YTNIm
meR86IZCRjO1gEzSJpnkfOiGQgawibQJwK4pZACbSJsA7284///eq6f2en4I
NLMWTCZpk0xyPvtSmv/z+ezTfh9SyGimFpBJ2iSTnM++yNUL/HAANpE2Ad7f
4XDw4v8chQxgE2kT4P1dr1dX+5+jkNHMWjCZpE0yyfnsy+FwePjmXzn8UyHj
CWoBmaRNMsn50A2FDGATaROAXVPIADaRNgHe1vF4XPO23/rpAD8+m3elkNHM
WjCZpE0yyfnswuVyORwO5euTt+mbQkYztYBM0iaZ5Hz24nq9lva+fv5XGdfl
gPK1jMuWsr3sDb8ukEIGsIm0CfD+Sod/Op0OX0reroOyJbzzrxQygE2kTQB2
TSGjmbVgMkmbZJLzoRsKGc3UAjJJm2SS86EbChnAJtImALumkAFsIm0CsGsK
Gc2sBZNJ2iSTnM++rPkUsFgKGc3UAjJJm2SS89mXkqtd7XOOQgawibQJ8P5u
t9vlcqkfAXA+ny0HjClkAJtImwD7cr1ej1/KEYEDgU+FjCdYCyaTtEkmOZ+9
O5/PH1/qgcCrp/NKChnN1AIySZtkkvPZqXoi0OFLOQS4Xq/1QCD5EEAhA9hE
2gR4f6XtL33+8Xgsbf/9G4HLf8v218zsDShkAJtImwDv79vzfJKTefJz50nW
gskkbZJJzmdfvM93gUJGM7WATNImmeR89qX0/8fjcbKxbHFc8KmQAWwkbQK8
v4cn/5Qt9wcFgRQygE2kTYD3N5er5fBPPwSeYC2YTNImmeR89uVwONyf6lO2
JF/2Z6CQ0UwtIJO0SSY5n32pp/pcr9d6FFC+1mt+Jl/2f6CQAWwibQLsQmn4
6/X/S94uX+vhwKsn9RYUMoBNpE0Adk0ho5m1YDJJm2SS86EbChnN1AIySZtk
kvOhGwoZwCbSJsD7q5//9fHIq6f2en4IAJtImwDvrzT/5/PZp/0+pJDRzFow
maRNMsn57ItcvcAPh2ZqAZmkTTLJ+ezLw8//olLIADaRNgHeX734vwv+P6SQ
AWwibQK8v/qxX97/+5AfAs2sBZNJ2iSTnA/dUMhophaQSdokk5wP3VDIADaR
NgF24Xq9nk6neiJQ3XI8Hr0p+FMhA9hI2gR4f5fLpXT+5Wtp+Ie8fT6fyxHB
S+f1FhQymlkLJpO0SSY5n30pzf9w8Z8hb4+PBZL5IdBMLSCTtEkmOZ99Gefq
uXEsPwSATaRNgPf38PX/sqVsf9WU3odCBrCJtAnw/u7P/6/Nf9ny6qm9nkJG
M2vBZJI2ySTnszv1I4DrZ36Vzt/HAQ8UMpqpBWSSNskk50M3FDKATaRNAHZN
IQPYRNoEeH9z1/n3/t9PhYwnWAsmk7RJJjmffXmYq13/p1LIaKYWkEnaJJOc
z14cj8fS5H88Mr4oaDKFDGATaRPg/cnVC/xwADaRNgF2avgsgHB+CDSzFkwm
aZNMcj67czqdJicClf+ez+dXz+v1FDKaqQVkkjbJJOezL6cvt9vt82/evlwu
x+OxbgmnkAFsIm0CvL/D4TC0+kPeLocAc9cFjaKQAWwibQK8v3GuHq75WY4I
XP/zUyHjCdaCySRtkknOZ1/Gr/8/XAtI5odAM7WATNImmeR89uV0Ol0ulzo+
f/n8+xaA103qXShkAJtImwDv73a7jVv9cjhQsrf3/1YKGcAm0iYAu6aQ0cxa
MJmkTTLJ+dANhYxmagGZpE0yyfn0QQ7/9EMA2EjaBNgvOfzTDwFgI2kTYL9+
NIffbrf6RuPJ9rpxbPwxBJfLpfy3bhyuWfTMrm8pZDSzFkwmaZNMcj59+Lkc
Xhvy8vX+IRauO3S9Xst3la+TcfOuNRQymqkFZJI2ySTn04efy+Gn06k2+Zv6
//HnFHx+HUSULc/sWkMhA9hE2gTYr1/I4fcPMf4A4uVdZTycGtS2q22GACyQ
NgHe2cd3fmECky31/Jzj8Xh/uv79jYctbbvaZggrWQsmk7RJJjkfVnp4/s/5
fK6v2NfT9YdDAP0/+6IWkEnaJJOcDyt9WybqIcDcjX+n/3/oz5d6G2NjY2Pj
YTzk2DeZj7GxsfEuxjnWtOLDbZz/D/D+pE0AFtyXicmbf+t7Aep4ciWf8/k8
d5GflbvaZggrBR7Rw6e0SSo5H1badP5/fel+fCX/4WChbVfbDGEltYBM0iaZ
5HxYtnCtofq5wHMf11sb+Lpr8jFebbvWTHXz0wMIJm0CsGsKGcAm0iYAu6aQ
0cxaMJmkTTLJ+dANhYxmagGZpE0yyfnQDYUMYBNpE4BdU8gANpE2Adg1hYxm
1oLJJG2SSc6HbihkNFMLyCRtkknOh24oZACbSJsA7JpCBrCJtAnArilkNLMW
TJuHn5DOb3p1CLBLcj50QyGgmVpAm5J2zv/7P/696p+0Txs5H7qhEAC/TP+v
/wfghRQC4Jfp//X/ALyQQkAza8G00f/r/9kjOR+6oRDQTC2gjf5f/88eyfnQ
DYUA+GX6f/0/AC+kEAC/TP+v/wfghRQCmlkLpo3+X//PHsn50A2FgGZqAW30
//p/9kjOh24oBMAv0//r/wF4IYUA+GX6f/0/AC+kENDMWjBt9P/6f/ZIzodu
KAQ0Uwtoo//X/7NHcj50QyEAfpn+X/8PwAspBMAv0//r/wF4IYWAZtaCaaP/
1/+zR3I+dEMhoJlaQJsPXu3VIcAuyfnQDYUA+GUfXv/3+j8Ar6MQAL9M/6//
B+CFFAKaWQumjf5f/88eyfnQDYWAZmoBbfT/+n/2SM6HbigEwC/T/+v/AXgh
hQD4Zfp//T8AL6QQ0MxaMG30//p/9kjOh24oBDRTC2ij/9f/s0dyPnRDIQB+
mf5f/w/ACykEwC/T/+v/AXghhYBm1oJpo//X/7NHcj50QyGgmVpAG/2//p89
kvOhGwoB8Mv0//p/AF5IIQB+mf5f/w/ACykENLMWTBv9v/6fPZLzoRsKAc3U
Atp88GqvDgF2Sc6HbigEAJtImwDsmkIGsIm0CcCuKWQ0sxZMJmmTTHI+dEMh
o5laQCZpk0xyPnRDIQPYRNoEYNcUMoBNpE0Adk0ho5m1YDJJm2SS86EbChnN
1AIySZtkkvOhGwoZwCbSJgC7ppABbCJtArBrChnNrAWTSdokk5wP3VDIaKYW
kEnaJJOcD91QyAA2kTYB2DWFDGATaROAXVPIaGYtmEzSJpnkfOiGQkYztYBM
0iaZ5HzohkIGsIm0CcCuKWQAm0ibAOyaQkYza8FkkjbJJOdDNxQymqkFZJI2
ySTnQzcUMoBNpE0Adk0hA9hE2gRg1xQymlkLJpO0SSY5H7qhkNFMLSCTtEkm
OR+6oZABbCJtArBrChnAJtImALumkNHMWjCZpE0yyfnQDYWMZmoBmaRNMsn5
0A2FDGATaROAXVPIADaRNgHYNYWMZtaCySRtkknOh24oZDRTC8gkbZJJzodu
KGQAm0ibAOyaQgawibQJwK4pZDSzFkwmaZNMcj50QyGjmVpAJmmTTHI+dEMh
A9hE2gRg1xQygE2kTQB2TSGjmbVgMkmbZJLz4Vu32+10Oj0sE5fL5XA4lF3l
axn/6K5vKWQ0UwvIJG2SSc6HZbUhL1/vy8T1ei27ytfJ+Cd2raGQAWwibQJw
73Q63W63z0dlouwav0RfxmXLD+1aQyED2ETaBGDBfZk4HA710KAq47Llh3a1
zRBWshZMJmmTTHI+rHRfJha2/PNdbTOEldQCMkmbZJLzYSX9P0BnpE0AFuyi
/3/oz5d6G2NjY2PjYTzk2DeZj7GxsfEuxjmc/0/HAv+i4VPaJJWcDyt9e/2f
8/k8dyWf53f9X3t3eJw4kwQAlEwIxaEQCqF4M/Hvi8K/LwrflOdWpRUgaxqw
mOn36mpLHxJCvmp1tzSDiB0hbKQWkJO0SU5yPmx0WSbq/fn54/qnu/cPXxU7
QgBWSJsAXLo6o35aW7v0+nO9i9/qeviqLYfa9rcB5CZtAtA1hYwwY8HkJG2S
k5wPw1DICFMLyEnaJCc5H4ahkAE0kTYB6JpCBtBE2gSgawoZYcaCyUnaJCc5
H4ahkBGmFpCTtElOcj4MQyEDaCJtAtA1hQygibQJQNcUMsKMBZOTtElOcj4M
QyEjTC0gJ2mTnOR8GIZCBtBE2gSgawoZQBNpE4CuKWSEGQsmJ2mTnOR8GIZC
RphaQE7SJjnJ+TAMhQygibQJQNcUMoAm0iYAXVPICDMWTE7SJjnJ+TAMhYww
tYCcpE1ykvNhGAoZQBNpE4CuKWQATaRNALqmkBFmLJicpE1ykvNhGAoZYWoB
OUmb5CTnwzAUMoAm0iYAXVPIAJpImwB0TSEjzFgwOUmb5CTnwzAUMsLUAnKS
NslJzodhKGQATaRNALqmkAE0kTYB6JpCRpixYHKSNslJzodhKGSEqQXkJG2S
k5wPw1DIAJpImwB0TSEDaCJtAtA1hYwwY8HkJG2Sk5wPw1DICFMLyEnaJCc5
H4ahkAE0kTYB6JpCBtBE2gSgawoZYcaCyUnaJCc5H4ahkBGmFpCTtElOcj4M
QyEDaCJtAtA1hQygibQJQNcUMsKMBZOTtElOcj4MQyEjTC0gJ2mTnOR8GIZC
BtBE2gSgawoZQBNpE4CuKWSEGQsmJ2mTnOR8GIZCRphaQE7SJjnJ+TAMhQyg
ibQJQNcUMoAm0iYAXVPICDMWTE7SJjnJ+TAMhYwwtYCcpE1ykvNhGAoZQBNp
E4CuKWQATaRNALqmkBFmLJicpE1ykvNhGAoZYWoBOUmb5CTnwzAUMoAm0iYA
XVPIAJpImwB0TSEjzFgwOUmb5CTnwzAUMsLUAnKSNslJzodhKGQATaRNALqm
kAE0kTYB6JpCRpixYHKSNslJzodhKGSEqQXkJG2Sk5wPw1DIAJpImwB0TSED
aCJtAtA1hYwwY8HkJG2Sk5wPw1DICFMLyEnaJCc5H4ahkAE0kTYB6JpCBtBE
2gSgawoZYcaCyUnaJCc5H4ahkBGmFpCTtElOcj4MQyEDaCJtAtA1hQygibQJ
QNcUMsKMBZOTtElOcj4MQyEjTC0gJ2mTnOR8GIZCBtBE2gSgawoZQBNpE4Cu
KWSEGQsmJ2mTnOR8GIZCRphaQE7SJjnJ+TAMhQygibQJQNcUMoAm0iYAXVPI
CDMWzPAOLfY+WHguOR+GoWYRphaQk8gnJ5EPYafTaXHL6Hg8Tmvf39/Lf9YX
y/L8jbFVP9L/AwDA87y9vX1+fl5d9fHxURr48u9iObxqC/0/QBNpE4AmK/3/
6XSa370vy+WVe1ZtoZARZiyYhMz2Jy05H8KOx+Ot/n+xqixPU4Niq7ZQxQhT
C8jGF37JTM6HsDo/5+3t7XK6/mU1mV6JrdpCCQPYSP8PQEDp/M/nc71jX6fr
T5cA+n+AV6b/B+B+9RKgLu/V/1/151vdxrLlq8t//nqR47Fs+ReW583/KxyP
Zcu/tvznrxc5HsvdLTM3tevm/9MXZzQ5SZvkJOdD2OLLv/W7AHV58SSf8/l8
6yE/G1dtoZABbGfyDwCtVub/11v38yf5TxcLsVVbqGIAG5n/D0BAac5Pp9Ot
n+utDXxdtfgZr9iqHylhhBkLJiHNP2nJ+TAMVYwwtYCcpE1ykvNhGAoZQBNp
E4CuKWQA25n/A0DvVDHCjAWTje//kpmcD8NQwghTC8hG/09mcj4MQwkD+Nqc
DDX/APROFQPY2NW7/w/AAJQwwowFM4btXb3+n8zkfBiGEkaYWsAw3P+HH8n5
MAwlDODL/H8A0lDFAJpImwB0TSEjzFgwOYl8chL5MAz9P2FqATmJfHIS+TAM
/T8AAOSh/wcAgDz0/4QZCyYnkU9OIh+Gof8nTC0gJ5FPTiIfhqH/BwCAPPT/
AACQh/6fMGPB5CTyyUnkwzD0/4SpBeQk8slJwwDDcDoDAOsOf+19IMADOJcB
gBWHf+19OMC9nMiEmQVBTiKfhDT/MBLnMmG6IHIS+eSkYYBhOJ0BgB9pGGAY
TmcAYJ35PzAS5zJhZkGQk8hnL9tL9mO3bP3+7zOOE3ggpx5huiByEvnsoqn9
fuyWTf3/M44TeCznHQC8uO0d+EO2PLR49nECD+ekA4DX94z76r1sCTyW844w
syDISeQT03RTnWfYOwTgVTgdCNMFkZPIJ2bv5hcND/yf0wEAElrpjTXVMDZn
LgDktL2H1+3DSJzLhJkFQU4in5FsbwM0DDAMpzNhuiByEvnkJPJhGPp/AADI
Q/8PAAB56P8JMxZMTiKfnEQ+DEP/T5haQE4in5xEPgxD/w8AAHno/wEAIA/9
P2HGgslJ5JOTyIdh6P8JUwvISeSTk8iHYej/AQAgD/0/AADkof8nzFgwOYl8
chL5MAz9P2FqATmJfHIS+TAM/T8AAOSh/wcAgDz0/4QZCyYnkU9OIh+Gof8n
TPCQky6InEQ+DEMLR8zhr70PBACABvo3FraExOFfv3BUAAA8hOaNue0tveaf
tMyCICeRD8PQvzHZflff/X8y0wWRk8iHYWjemDyv/xdmAAAvQmPG5En9v2EC
AIDXoStjstLVH1ps3Cd0yiwIchL5MAwtGXNNU3oeviV0QRdETiIfhqErY2F7
SDxjSwAAnkpjRpjgAQDojhaOMMFDTmZBkJPIh2Fo4QgTPOSkCyInkQ/D0MIR
JngAALqjhdtR00M1eYa9QwAA4LdpgXZU/s//z/m//rfX/wQ/MWZBkJPIh2Fo
gXak/9f/0yNdEDmJfBiGFmhHO857odo7BAAAfpsWaEcH9//d/wcA+F1aoB3p
//X/9MgsCHIS+TAMLdCOdpz3QrV3CNAlXRA5iXwYhhaIMMEDANAdLRxhggcA
oDtaOMIEDzmZBUFOIh+GoYUjTPCQky6InEQ+DEMLR5jgAQDojhaOMMEDANAd
LRwLV0PCQzVhYhYEOYl8GIZujbntPbxun7R0QeQk8mEY+jcm22/ju+EPALCj
9/f34/FY2rDyb1lueq/mjTn3/wEAXtzHx0dp+8u/i+WN9G8sbA8JwUNOZkGQ
k8iH13E6neb3/MtyeWX727VwhKkF5CTyyUnkw+s4Ho+fn5/Tf5bl8sr2t+v/
AQCgI5cNfFNLr/8HAICO6P/Zi7FgchL55CTy4XXc3/9f9edb3cay5avL4sRy
zuUpx77I8Vi2/DvLcr7lO5d5oDvn/wMAAB1ZPP/nfD43Pf8HAADoSL3hP3/+
/3w4AAAAGExt++vv/zb9+BcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB7ORwO
z9t5/Um7p34EhD07MsU/LyIWhKoDwK85/KtkyLe3t/P5PK19f3+/+sby+kou
LXsI/7RcOYCm7Sfl4/yMHSvO31pXBT7lnt9VFP9s9zsh3Wq9zd7lBHF2AMxd
JurPz8+Sn0+nU11bUvTVN5YkfCvJl/eWPZT91L2VLW9dRFx16xN/5N4OPyrB
eRmN5ZUa8A/Z/z3B/yX+afTskA5YCcW9ThBnB8DcraxYXy//rhSXW+9dbF8H
XhcfV+/81LtApQTUcvA1G4+YF6+yw+l+0Xzn853MbfnDSauE1vxOYFluDbZ5
xC5sCf6VvYl/Ap4a0vM9LDa7teeVIHz4CeLsAAi4mg+nnFzHTC/vt9TUujGX
Xs3w86x+Pp/nQ7qL3dYDqNVtvvz19/JkXhq2HA+UeKtRVIJn3imtB9utiF1x
q70R/zzW80K6bD9tVhrsabPaeE8futjzxsO+8wRxdgDEXGbFkj+niaN17eK+
Sk37V9971Xwa6rz/nxJ1SdGLzD9/+2KAeD6uvZjSKcOzUZ14sLhN+rU52BYR
u+Jq8K/vTfwT8LyQnq4s1l+vlwnTnjce9p0niLMDIOZwzSKNTw1/NV0ObMmo
8/tFX//2/4vDuLpc/3M+4nzrftHG44GqdB0lYBZfkHxssN0K/vW9iX9inhTS
ZfurU4Mu93wrvd9y/wni7ACIWWTFkj/rHaTp+7/19annn18L/JhRp+8RX35c
U/9z6cedwIo6e632S4ubhI8KtpXgX9+b+CfgeSG9/fWm/v8hJ4izAyDmalac
7uRMa6e2fz4XaCWj1jmol0+f25KcF6tWnvYgwxOwMmf4IcH2Y/Cv70380+qp
IX3r/v/i9ZV77wsPPEGcHQAxG/v/r+9MW5/bvP7e6taU0UD/f2tX6zuBq2qX
Mp8zXPul2sk8JNh+DP71vYl/mjw7pB8+//+BJ4izAyDmMivW5//Pv/9bXU4u
vZVRrz4ydPGWleR8/PdHYea3s+qx3aoyMjzrLjulqg5v1clvdwbbluBf35v4
Z7tfCOn51cSt5//UbbYMDT/2BHF2AMQsZk4ev3//92oanw/vXq5d2WdVy8eW
/r+m9PlnTU94Pqw+0k2GZ93Kjw1Njc2dwbYl+Nf3Jv7Z7hdC+uuhz/9/+Ani
7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAgg8/Pz+PxeDgcynL9dxc7fjQAALys9/f3t7e3w7fSt59Op9LA37PD
sp+Pj4/HHFyj8ofs8rkAANCF0u2Xnrm266XtLwvn87lcBdzTwO94470c+V4f
DQAAL+79/f1qw3z+Nt+mDg2U5Wmbeo1QV5UriDpkUF45zHxdXAtMe6tvmdYu
Npv/5/yD6ivljeWyZTqqsjy9q6qv3ProLX8IAACMp7S78074Uu2Zp9GB+bjA
vFsuFwvziTfzxnu+PN/b1I1fbna5h8WUpHrY9ZV6LTC/BPjxo7f/IQAAMJLS
Bq/f7p6mBlVleWqP55P853fyv2434Yu9lZ58Y/+/Phmp9vNNH73xDwEAgJH8
2OuWDeYXCBtn7NxaXlxuBPa2cpw/HkbgowEAYCQ/3v+/bIbv6f/v39ukfkm5
ziCavmvw8I8GAICR/Dj///KO/dWZNl+h/j98//90OpX+//PbYpvtQw9b/hAA
ABhJfe7N5RBA6a7rN2rXp83P3xKY/18+Zd63T4dRHyJ0dQ9XX5lvH5v/v7Jz
AAAYyeJp/4vn/88fm1MvFqbxgkD/X39orPb5i+f/lNfrE0fL2vpjZFf3UE2H
UTau+5yuYhYP9pl/dOAPAQCA8az//u+tx+YH+v+v28//n9r+6Wn8t/bw9ffu
/fxop6GE+t769o3P/9f/AwDAMywe4zmfhA8AAAymTvKZfrfrx28fAwAA/aq/
1Vsn4ZSF9V/1AgAAAAAAAAAAAAAAAAAAAAAAAMjmf+v+KdsNCmVuZHN0cmVh
bQ0KZW5kb2JqDQo5MCAwIG9iag0KPDwvVHlwZS9QYWdlL1BhcmVudCAyIDAg
Ui9SZXNvdXJjZXM8PC9FeHRHU3RhdGU8PC9HUzUgNSAwIFIvR1MxMCAxMCAw
IFI+Pi9YT2JqZWN0PDwvSW1hZ2UxOSAxOSAwIFIvSW1hZ2U5MiA5MiAwIFI+
Pi9Gb250PDwvRjEgOCAwIFIvRjIgMTUgMCBSL0Y1IDM1IDAgUj4+L1Byb2NT
ZXRbL1BERi9UZXh0L0ltYWdlQi9JbWFnZUMvSW1hZ2VJXSA+Pi9NZWRpYUJv
eFsgMCAwIDk2MCA1NDBdIC9Db250ZW50cyA5MSAwIFIvR3JvdXA8PC9UeXBl
L0dyb3VwL1MvVHJhbnNwYXJlbmN5L0NTL0RldmljZVJHQj4+L1RhYnMvUy9T
dHJ1Y3RQYXJlbnRzIDIzPj4NCmVuZG9iag0KOTEgMCBvYmoNCjw8L0ZpbHRl
ci9GbGF0ZURlY29kZS9MZW5ndGggOTQ4Pj4NCnN0cmVhbQ0KeJy9V9tuGzcQ
fRegf+DjMoAoDm/LLQwDsZ0GKWogiVW0QNEH2V0pQi3ZXclN80n9y8wMdbXl
XcEr94Wmh0PyzJnD2VH/bbWYjIY3C3F2eS7+7na00EprDcboXBRBC++0qMpu
59c3Ytbt9N9feTGedzsgxmtnHUBbv+M9etPtfOp2xDs8tf/4jmhzlXsBuTJe
5EHh1JNhcw0b8fTlws6GmynC+DAdjksoxMWdWF0j+lf3w5k4Oelfnn+4ELr/
83A2Flk56/1yJU9PxdlFCpARg7Oabnga4dkAj/8RRKFyvHIwolAZiXCmUEgK
GFUgjMGU4h8zJaCZEy3edzu/Z//JnjWZkC5m59JCdiehyO5p+IYrIaukCdlE
9vJsTMYvNCxkz0Tc04MImSGLpmEzoyXts98kWJ0239LAsxk5/Cv/EIOfup13
gxrmG7KrVYyBo604u95aYpwcwypB25l9RDm0otwIa5TdYdwbFb1w0StrE+FK
uzxJL82Y8M/l/EEiIQsc5ntoEP2Pa4xmA8sEEBHj00aEGChQD05ty3BpJjBp
ab0FtmRYmBoZ2pYyhKi02dUhWBWFwwXIa0h5Kx1kf6Ks8uU4QemgVGg65lHI
UGSlBJf9Q748my1Xet5n0zvaUaGd1LxD6xECsEVQrgb/Flx8HAiN8VUjnPvl
nJEll5uS3H/Ym/ydfLhW+fDPh5O0+mw8J1rH/LQRnj++XGxQFk1NALG0JBF4
pjRwxTHZV+J1QnQv+P8vvHZHbg88TWYhDVU79OWlW04KT6vJSleBdReOq6VV
dBaUrovu6xpbNccgw06Q8xQEI03Qb5uVFF5LSYAnmNZKyl9PSQ0An1HSwepA
JbF1vpOcIblfs0vaXzanKLblwD9pAjhFxgVV1KntBhE6/Obj1/+BBs1VK5VV
rGARgydDhZYCyzM3CWSYynzLGbsq1C1/5IEfWsTnh77pnGSdkYGXynTkiI5c
zsuNS0J0AGdFW1k/5cwVVHmMyZVrr2to29jtAZhj49EMMGWn3CRqK8vfXl7T
9mlMKzgAT4tCuu/SXIUDLr2V2NwmtabxfiVJh+0qGS6bRQbtWsWal6kjRXH4
y4S6l7l5cuWW2/XGsPW02I1lMUwn/HUADeaVaIBYKKhrmR/TYI4pJZcrTz/X
mkD0jnlpam8a77TcSya5Yr4D59txvvlHWUqqpdQHTnLqOddz+mOTC3FoDimp
0O5HQE1NhVCo0L6ktmuKa0pqA77/u6I2wXmNgtp058vq6Xdq3JwfDQplbmRz
dHJlYW0NCmVuZG9iag0KOTIgMCBvYmoNCjw8L1R5cGUvWE9iamVjdC9TdWJ0
eXBlL0ltYWdlL1dpZHRoIDEwMjQvSGVpZ2h0IDc2OC9Db2xvclNwYWNlL0Rl
dmljZVJHQi9CaXRzUGVyQ29tcG9uZW50IDgvSW50ZXJwb2xhdGUgZmFsc2Uv
RmlsdGVyL0ZsYXRlRGVjb2RlL0xlbmd0aCAxMjQ5ND4+DQpzdHJlYW0NCnic
7N3hceJMkAZgZ0IohEIohMKmcb/I4FIgFN+Up1anTyBZ017AM/08teXSSjaM
7XH3CyPE5ycAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACk8/Hx8e4h8P/8OnLyeweA3+bj
vw6Hw/F4PJ/PT73Hy+Xy8FDZvyctlBHuvKOWce1y/tJ66JV+7Qhjv46dX7Vz
SjzP2gA+7pQ/sd8wT/6h++9x8u6hAQAP3Pfo2+1W8snpdHrePZYI9PBQCVF7
MsPal9/fUcu49io/mfvHL2XP835irX7nCJ+a/3dOiedZG8Da39dgDwEmMj8A
/H5r/bruL1mlhMaSbWponwfI8t/r9VoP1T0lYU6fufYMf73ljYA6H8/DG5ye
WqyD2Rjhw2+tfH7ZXz4+3FM+1scgRdmYf9pcuZfyvU//LduLaL32o5j/0B7e
/j8Z3rcjDA/v4fe4+My1G/95/l8b3mJK7P8e7/97P875f8t2+eT6K9iYk2tf
Pqm/0/metdGu/cbXRrL/e1/81jam1s6/67Xvd+03WLfXxtN0pwBAk7V8Up/P
LE25NN8pfJ6+TF9YtqeWXft4zZzz7Yf3WD9hsb9+yTSejRucj3l7hA8HsDjB
qWxPJ2/UW6vbZWPjrJJyqI6n3un80PbIp5wzv99/PryNEf5weNONTJ85H0mN
bdP9rv3W9lvE77XhLW58+3ucz9vFf+9v6n4A85udPwT4dvyT6e/r29Gu/cY3
RrL9K1j7Aa7d0f6/67Xvd+M3ePg62/B+PK13CgA0ue/XpdWunZ8wzy01xk+H
5vnhc/Nsk+l518Xn11uexrNxgxtJcjHCh5+zkXz2Z9T6fOn9M//fjnz6od0/
CfwPh7cxwh8Ob7qRh5Fssb8+TAgMfnL/9PvD4S1ufOf3eP/f+5ta3Mv8Zvd8
d/f778//CUz1jZFs/wp2/gD3jG1tYBt77gfwcDytdwoANPl4ZOOJ343TJBan
E9w/wz//winwV9PDgfntr93gdpJcG+H8ptaST10+mBYUtpUIV772/oHS/pHv
OTkkPLy1Ef5weFX5kodjuL/xb38d2zYy6vah8Pe4fS+tc3L+Z1Wf7r4/+W3j
Ztd+49sj2fkr2DO19v9dP7yLz92/wfl/W+8UAGiyaMGl1dZnjKcn3OoyfT0X
t3r4hQ8fR2zf45T5548F5re/doOLW945wrnpCcb7pxbrrX18dwJ8PVWpBuz7
J5B3jnxthD8f3sYIfz68jUMb8W/jS/bMlu3h7Z+N336P++/lc993Vzc2ztfa
GO3nym+8aSQ7v/e1O9oY28b3+3DP9gDm42y6UwCgycPGOj1nWMJnSQW3L4vP
X3zh/ifo5omoftXD86g3bnB+1/tHODdd4OjhK5E//z4OWgts2+cn7xz5xgh/
OLztEf58eJ/rz/8v9u9ftdkzpP3J/Cff4/a9BJ7/n7bXHgLs+dtZ/MY3RrL/
V7D2tz+/o9Yn3v9J/vdsPwA81Xb+Xxy9zl6fuzi0dkL49j0evq6FPm/309GN
G9xIFBsjnJvOPW49meHzb6BanH09D107R74xwp8M79sR/nx4Gzfy7PP/dx76
yfc4j9bz6VQPtX53i/0PT2UP/O1sjGT/r2DjN7Lnz3D7Cx/u2Zn/W+8UAGhy
36/nr0+cYmTZWZ+9nGLkffA+zK46snH1mMW5DR//PUF9Orpxg4tns3eOcGE6
GXu+c+0qKPMfzuHRBQnrWka9342RNz3BHhjenhH+k+HNH1CsXf/nuu8KOdt2
psfFEsxPvsfj3+sv3f5eEnP+ycf/XnVnPg8fRtb7279/CLAx2rXf+MZI9v8K
5v9du6P9f9dr328g/7feKQDQZHGSbY2dUxK4zq4xXi+TWBP750qwmU7CX1xT
cXGP0/b9K/sW50s8vMEaD+oXNo1w7uGp+9OtfaycYL+4Msni21/E4PuR7w/Y
seHtHOHPhze/keOrrv+/Mbz5lFgMo/V7nGL/4e/F6ueffF256v79ANZu//PR
GzFvTPWHv/GNkXzu/hUsfoBrU2vn3/Xa9xvI/613CgAAzxB7CPMMv2ckAAAw
qt+Tun/PSAAAYFS/J3X/npEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAADAYM7n8+Fw+Pj4KB8vl8u0/3Q6ffxX+YTpaPnM
h18VPgQAADxbCfkl/99ut7JdPh6PxymWl+26/971ei0BvnxcbIcPAQAAL7BI
4CXwT0/yb+T/8qhh/ux92S57fnIIAAB4vXn+Lxtr+X9xaOOrdh4CAABerATy
+VP09fyc4/F4f7p+2bP42mlP7BAAAPBK9RW+8xNySvKfXhpQT9efHgLI/wAA
0LvF8/8L9SFA3X5L/v9Y8edL/Rzbth9umye2c25PNfaXjMe27ddsq/m2f7id
zfY5+VMrecv5/xYLCEv7F01yZj45mfmwbfFs/zyTL178W18LULcXywTn83nt
Ij87D+0h/xOmF5CTmU9OZj5s277+/9r5//VhwvxK/tODhdihPeR/AAD4ufIQ
YHpP3vnbAdSXA6y9XW8N8PdfFT70LfkfAADykP8JsxZMTmY+OZn5MAz5nzC9
gJzMfHIy82EY8j8AAOQh/wMAQB7yP2HWgsnJzCcnMx+GIf8TpheQk5lPTmY+
DEP+BwCAPOR/AADIQ/4nzFowOZn55GTmwzDkf8L0AnIy88nJzIdhyP8AAJCH
/A8AAHnI/4RZCyYnM5+czHwYhvxPmF5ATmY+OZn5MAz5HwAA8pD/AQAgD/mf
MGvB5GTmk5OZD8OQ/wnTC8jJzCcnMx+GIf8DAEAe8j8AAOQh/xNmLZiczHxy
MvNhGPI/YXoBOZn55GTmwzDkfwAAyEP+BwCAPOR/wqwFk5OZT05mPgxD/idM
LyAnM5+czHwYhvwPAAB5yP8AAJCH/E+YtWByMvPJycyHYcj/hOkF5GTmk5OZ
D8OQ/wEAIA/5HwAA8pD/CbMWTE5mPjmZ+TAM+Z8wvYCczHxyMvNhGPI/AADk
If8DAEAe8j9h1oLJycwnJzMfhiH/E6YXkJOZT05mPgxD/gcAgDzkfwAAyEP+
J8xaMDmZ+eRk5sMw5H/C9AJyMvPJycyHYcj/AACQh/wPAAB5yP+EWQsmJzOf
nMx8GIb8T5heQE5mPjmZ+TAM+R8AAPKQ/wEAIA/5nzBrweRk5pOTmQ/DkP8J
0wvIycwnJzMfhiH/AwBAHvI/AADkIf8TZi2YnJRNclLzYRgaGWF6AQl9/PXu
gcCrqfkwDF0MYKeP/3r3cAAgQgsD2E/4B6B3uhhh1oJJSP4nLTUfhqGLEaYX
kI3zf8hMzYdhaGEA+wn/APROFwNoomwC0DWNjDBrweRk5pOTmQ/DkP8J0wvI
ycwnJzMfhiH/AwBAHvI/AADkIf8TZi2YnMx8cjLzYRjyP2F6ATmZ+eRk5sMw
5H8AAMhD/gcAgDzkf8KsBZOTmU9OZj4MQ/4nTC8gJzOfnMx8GIb8DwAAecj/
AACQh/xPmLVgcjLzycnMh2HI/4TpBeRk5pOTmQ/DkP8BACAP+R8AAPKQ/wmz
FkxOZj45mfkwDPmfML2AnMx8cjLzYRjyPwAA5CH/AwBAHvI/YdaCycnMJycz
H4Yh/xOmF5CTmU9OZj5863w+Hw6Hkq7Lx8vlMj9U/vuyQ9+S/wEA4IdOp1PJ
/7fbrWyXj8fjcYrl1+u1pPTycbH9jEN7yP8AAPBDiwReHgKUWF63y0OD+VP0
ZbvsedKhPeR/wqwFk5OZT05mPjSZ5/+yUdcFXnBoD/mfML2AnMx8cjLzYb8S
yOdP0d/n7WnPPz+0h/wPAAD/yseX+Qk58j8AAAzs9z///9CfL/VzbNt+uP3n
r18yHtu2bdu2/bztP3/9kvHY7m47G+f/M6S0f9EkZ+aTk5kP2xYX4d+4/s/5
fF67ks/PD+0h/wMAwA9tXP+/PhaYX65/evb+nx/aQ/4HAICfKw8BpvfkXbwd
QE3przn0LfmfMGvB5GTmk5OZD8OQ/wnTC8jJzCcnMx+GIf8DAEAe8j8AAOQh
/xNmLZiclE1yUvNhGBoZYXoBCU1vkvjugcCrqfkwDF0MYKfF+6S/ezgAEKGF
Aewn/APQO12MMGvB5KRskpOaD8PQyAjTC8hJ2SQnNR+GoZEB7Of8HwB6p4sB
7OT1vwAMQAsjzFowCQn/pKXmwzB0McL0AnJSNslJzYdhaGQA+3n+H4De6WIA
Ozn/H4ABaGGEWQsmIeGftNR8GIYuRpheQE7KJjmp+TAMjQxgP8//A9A7XQxg
J+f/AzAALYwwa8EkJPyTlpoPw9DFCNMLyEnZJCc1H4ahkQEAQB7yPwAA5CH/
E2YtmJzMfHIy82EY8j9hegE5mfnkZObDMOR/AADIQ/4HAIA85H/CrAWTk5lP
TmY+DEP+J0wvICczn5zMfBiG/A8AAHnI/wAAkIf8T5i1YHJSNslJzYdhaGSE
6QUk9PHXuwcCr6bmwzB0MYCdPv7r3cMBgAgtDGA/4R+A3ulihFkLJiH5n7TU
fBiGLkaYXkA2zv8hMzUfhqGFAewk/wMwAC0MYD/hH4De6WKEWQsmJ2WTnNR8
GIZGRpheQE5mPjmZ+TAM+R8AAPKQ/wEAIA/5nzBrweRk5pOTmQ/DkP8J0wvI
ycwnJzMfhiH/AwBAHvI/AADkIf8TZi2YnMx8cjLzYRjyP2F6ATkpm+Sk5sMw
NDKA/T7+evdAACBIFwPY6eO/3j0cAIjQwgizFkxCwj9pqfkwDF2MML2AnJRN
clLzYRgaGcB+nv8HoHe6GMBOzv8HYABaGGHWgklI+CctNR+GoYsRpheQjef/
yUzNh2FoYQA7yf8ADEALA9hJ/gdgAFoYYdaCyUb+JzM1H4ahhRGmF5CQ8E9a
aj4MQxcDaKJsAtA1jQwAAPKQ/wmzFkxOZj45mfkwDPmfML2AnMx8cjLzYRjy
PwAA5CH/AwBAHvI/YdaCycnMJyczH4Yh/xOmF5CTmU9OZj4MQ/4HWPPR4t2D
BYBd9CyAJsomAF3TyAizFkxOyiY5qfkwDI2MML2AnJRNclLzYRgaGUATZROA
rmlkAE2UTQC6ppERZi2YnJRNclLzYRgaGWF6ATkpm+Sk5sMwNDKAJsomAF3T
yACaKJsAdE0jI8xaMDkpm+Sk5sMwNDLC9AJyUjbJSc2HYWhkAE2UTQAeOp/P
h8OhtIny8Xq9TvtPp9PHf5VPmI5eLpfpq8r2/AZjh76lkQE0UTYBuFdCfsn/
t9utbJePx+NxiuVlu+6/Vx4mTA8W5tvhQ3toZIRZCyYnZZOc1HzYtngSvgT+
6Un+jfxfHjXMv7Bslz0/ObSHRkaYXkBOyiY5qfnQZJ7/y8Za/l8c2viqnYf2
0MgAmiibAHzr/KVu1/Nzjsfj/en69z1l2hM7tIdGBtBE2QRgW0n4Je1P/y3b
00sD6un600MA+Z++WAsmJ2WTnNR82KlE/e2z8etDgLr9rvz/0J8v9XNs2364
/eevXzIe27Zfsz3V2F8yHtu2X7P9569fMh7b3W1ncLvd6lWAvv3MqZU4/x/g
91M2AXjoeDw+vA7n4sW/9bUAdXtxJZ/52kHs0B4aGUATZROAe4tMPrdx/n99
6n5+Jf/pwULs0B4aGWGpVvRgomySk5oP2x6eUT+9HVh5dLD2dr01wN+/a3D4
0J6hBr5B+NQLyErZJCc1H4ahkQE0UTYB6JpGBtBE2QSgaxoZYdaCyUnZJCc1
H4ahkRGmF5CTsklOaj4MQyMDaKJsAtA1jQygibIJQNc0MsKsBZOTsklOaj4M
QyMjTC8gJ2WTnNR8GIZGBtBE2QSgaxoZQBNlE4CuaWSEWQsmJ2WTnNR8GIZG
RpheQE7KJjmp+TAMjQygibIJQNc0MoAmyiYAXdPICLMWTE7KJjmp+TAMjYww
vYCclE1yUvNhGBoZQBNlE4CuaWQATZRNALqmkRFmLZiclE1yUvNhGBoZYXoB
OSmb5KTmwzA0MoAmyiYAXdPIAJoomwB0TSMjzFowOSmb5KTmwzA0MsL0AnJS
NslJzYdhaGQATZRNALqmkQE0UTYB6JpGRpi1YHJSNslJzYdhaGSE6QXkpGyS
k5oPw9DIAJoomwB0TSMDaKJsAtA1jYwwa8HkpGySk5oPw9DICNMLyEnZJCc1
H4ahkQE0UTYB6JpGBtBE2QSgaxoZYdaCyUnZJCc1H4ahkRGmF5CTsklOaj4M
QyMDaKJsAtA1jQygibIJQNc0MsKsBZOTsklOaj4MQyMjTC8gJ2WTnNR8GIZG
BtBE2QSgaxoZQBNlE4CuaWSEWQsmJ2WTnNR8GIZGRpheQE7KJjmp+TAMjQyg
ibIJQNc0MoAmyiYAXdPICLMWTE7KJjmp+TAMjYwwvYCclE1yUvNhGBoZQBNl
E4CuaWQATZRNALqmkRFmLZiclE1yUvNhGBoZYXoBOSmb5KTmwzA0MoAmyiYA
XdPIAJoomwB0TSMjzFowOSmb5KTmwzA0MsL0AnJSNslJzYdhaGQATZRNALqm
kQE0UTYB6JpGRpi1YHJSNslJzYdhaGSE6QXkpGySk5oPw9DIAJoomwB0TSMD
aKJsAtA1jYwwa8HkpGySk5oPw9DICNMLyEnZJCc1H4ahkQE0UTYB6JpGBtBE
2QSgaxoZYdaCyUnZJCc1H4ahkRGmF5CTsklOaj4MQyMDaKJsAtA1jQygibIJ
QNc0MsKsBZOTsklOaj4MQyMjTC8gJ2WTnNR8GIZGBtBE2QSgaxoZQBNlE4Cu
aWSEWQsmJ2WTnNR8GIZGRpheQMwH7/buKUCX1HwYhkYAvFgpO+f//R//3vVP
2QdITiMAXkz+l/8BeCONgDBrwcTI//I/PVLzYRgaAWF6ATHyv/xPj9R8GIZG
ALyY/C//A/BGGgHwYvK//A8wpPP5fDgcSpktH6/X6/zQ5XKZDpXtpx76lkZA
mLVgYuR/+Z8eqfmw7XQ6lfx/u93Kdvl4PB6nWF4eC0yPCObbzzi0h0ZAmF5A
jPwv/9MjNR+2LZ6ELw8BSiyv2+Whwfxo2S57nnRoD40AeDH5X/4HGN48/5eN
ui7wgkN7aATAi8n/8j/A8M5f6vZ94Z32/PNDe2gEhFkLJkb+l//pkZoP+10u
l+PxOP1X/mcYegEx8r/8T4/UfNjpfD4vzsb/hfn/oT9f6ufYtm3b9j/clv9/
Sf7/JfPBtm3bSbYzuN1u9SpAi/3O/weSk/9/Sf4H4N86Ho8Pr8O5uFzPfIHg
nx/aQyMgLNUjev4h+V/+p0dqPmxbZPK5+vz8/HL907P3//zQHhoBYXoBMfK/
/E+P1Hz6UlJxCeSHL/VNcouyp+l9spo8PKN+iuU1pT98a+B/fmjPUFu/O4Cf
kP/lf4DnqcH4eDyez+eyPb0hb9kue8r+QGAejEYAvJj8L/8DPMnlcinxfu08
nP2fMzaNgDBrwcTI//I/PVLz6cLxeNxzJnz5nPn1+bPRCAjTC4iR/+V/eqTm
wzA0AuDF5H/5H+DZ5s/w1+1S/XauDgxPIwBeTP6X/wGerUT96Qz/6bL89fW/
7xvUb6EREGYtmBj5X/6nR2o+fZlq3e12m1+HUw389EPgB/QCYuR/+Z8eqfn0
Zap19Wo/9/sz80MAXkz+l/8Bnm06/+d0Op3P57qz7HH+z6f8D7yc/C//Azzb
9Jrfkv+nndMLAZLTCAizFkyM/C//0yM1H4ahERCmFxAj/8v/9EjNh2FoBMCL
yf/yPwBvpBEALyb/y/8Azzad/3/v3UN7Pz8EwqwFEyP/y//0SM2nLyX8n89n
7/b7kEZAmF5AjPwv/9MjNZ++qHUb/HCAF5P/5X+AZzscDp78X6MRAC8m/8v/
AM92vV5d7X+NRkCYtWBi5H/5nx6p+fTlcDg8fPGvGvgp//MDegEx8r/8T4/U
fBiGRgC8mPwv/wPwRhoB8GLyv/wP8CTH43HPy37ruwM8fTS/lUZAmLVgYuR/
+Z8eqfl04XK5HA6H8vGHnzM2jYAwvYAY+V/+p0dqPr24Xq8l3tf3/yrbdTmg
fCzbZU/ZX44mvy6QRgC82NoFGXiZd08BgKcrCf90Oh2+lLpXN8qe5Mm/0giA
F/vw/L/n/wF4H42AMGvBxMj/8j89UvNhGBoBYXoBMfK//E+P1HwYhkYAvJj8
L/8D8EYaAfBi8r/8D8AbaQSEWQsmRv6X/+mRmk9f9rwLWFoaAWF6ATHyv/xP
j9R8+lJqnat9rtEIgBeT/+V/gGe73W6Xy6W+BcD5fLYcMKcRAC8m/8v/AK90
vV6PX8ojAg8EPuV/fsBaMDHyv/xPj9R8enc+n+t7oNcHAu8ezjtpBITpBcTI
//I/PVLz6VQ9EejwpTwEuF6v9YFA5ocAGgHwYvK//A/wbCX2l5x/PB5L7L9/
IXD5b9n/npH9AhoB8GLyv/wP8GzfnueTuRhm/t75IWvBxMj/8j89UvPpi9f5
btAICNMLiJH/5X96pObTl5L/j8fjYmfZ43HBp/wPvJz8L/8DPNvDk3/KnvsH
BQlpBMCLyf/yP8CzrdU6NfDTD4EfsBZMjPwv/9MjNZ++HA6H+1N9yp7Ml/2Z
aASE6QXEyP/yPz1S8+lLPdXner3WRwHlY73mZ+bL/k80AuDF5H/5H+AFSuCv
1/8vda98rA8H3j2oX0EjAF5M/pf/AXgjjYAwa8HEyP/yPz1S82EYGgFhegEx
8r/8T4/UfBiGRgC8mPwv/wM8W33/r49H3j209/NDAF5M/pf/AZ6thP/z+ezd
fh/SCAizFkyM/C//0yM1n76odRv8cAjTC4iR/+V/eqTm05eH7/9FpREALyb/
y/8Az1Yv/u+C/w9pBMCLyf/yP8Cz1bf98vrfh/wQCLMWTIz8L//TIzUfhqER
EKYXECP/y//0SM2HYWgEwIvJ//I/wAtcr9fT6VRPBKp7jsejFwV/yv/Ay8n/
8j/As10ul5L8y8cS+Ke6dz6fyyOCt47rV9AICLMWTIz8L//TIzWfvpTwP138
Z6p788cCmfkhEKYXECP/y//0SM2nL/Nat7adlh8C8GLyv/wP8GwPn/8ve8r+
dw3p99AIgBeT/+V/gGe7P/+/hv+y591Dez+NgDBrwcTI//I/PVLz6U59C+D6
nl8l+Xs74IlGQJheQIz8L//TIzUfhqERAC8m/8v/ALyRRgC82Afv9u4pAPB0
a9f59/rfT/mfH7AWTE7KJjmp+fTlYa12/Z9KIyNMLyAnZZOc1Hx6cTweS8h/
uPo5vyhoZhoZQBNlE+D3U6s3+OEANFE2ATo1vRdAcn4IhFkLJidlk5zUfLpz
Op0WJwKV/57P53eP6/00MsL0AnJSNslJzacvpy+32+3zb92+XC7H47HuSU4j
A2iibAL8fofDYYr6U90uDwHWrguaikYG0ETZBPj95rV6uuZneUTg+p+fGhk/
YC2YnJRNclLz6cv8+f+HawGZ+SEQpheQk7JJTmo+fTmdTpfLpW6fv3z+fQnA
+wb1W2hkAE2UTYDf73a7zaN+eThQqrfX/1YaGUATZROArmlkhFkLJidlk5zU
fBiGRkaYXkBOyiY5qfmMQQ3/9EMAaKRsAvRLDf/0QwBopGwC9OupNfx2u9UX
Gi/2151z87chuFwu5b9153TNop8c+pZGRpi1YHJSNslJzWcMz6vhNZCXj/d3
sXHdoev1Wr6qfFxshw/toZERpheQk7JJTmo+Y3heDT+dTjXkN+X/+fsUfH49
iCh7fnJoD40MoImyCdCvF9Tw+7uYvwHx9qGyPZ0aFDsUGyEAG5RNgN/s4zsv
GMBiTz0/53g83p+uf//J057YodgIYSdrweSkbJKTmg87PTz/53w+12fs6+n6
00MA+Z++6AXkpGySk5oPO33bJupDgLVPfk3+f+jPl/o5tm3btm172p5q7C8Z
j23btm13sZ3Hnig+fY7z/wF+P2UTgA33bWLx4t/6WoC6vbiSz/l8XrvIz85D
sRHCTgkf0cOnsklWaj7s1HT+f33qfn4l/+nBQuxQbISwk15ATsomOan5sG3j
WkP1fYHX3q63Bvh6aPE2XrFDe4ba/O0BJKZsAtA1jQygibIJQNc0MsKsBZOT
sklOaj4MQyMjTC8gJ2WTnNR8GIZGBtBE2QSgaxoZQBNlE4CuaWSEWQsmJ2WT
nNR8GIZGRpheQE7KJjmp+TAMjQygibIJQNc0MoAmyiYAXdPICLMWTE7KJjmp
+TAMjYwwvYCclE1yUvNhGBoZQBNlE4CuaWQATZRNALqmkRFmLZiclE1yUvNh
GBoZYXoBOSmb5KTmwzA0MoAmyiYAXdPIAJoomwB0TSMjzFowOSmb5KTmwzA0
MsL0AnJSNslJzYdhaGQATZRNALqmkQE0UTYB6JpGRpi1YHJSNslJzYdhaGSE
6QXkpGySk5oPw9DIAJoomwB0TSMDaKJsAtA1jYwwa8HkpGySk5oPw9DICNML
yEnZJCc1H4ahkQE0UTYB6JpGBtBE2QSgaxoZYdaCyUnZJCc1H4ahkRGmF5CT
sklOaj4MQyMDaKJsAtA1jQygibIJQNc0MsKsBZOTsklOaj4MQyMjTC8gJ2WT
nNR8GIZGBtBE2QSgaxoZQBNlE4CuaWSEWQsmJ2WTnNR8GIZGRpheQE7KJjmp
+TAMjQygibIJQNc0MoAmyiYAXdPICLMWTE7KJjmp+TAMjYwwvYCclE1yUvNh
GBoZQBNlE4CuaWQATZRNALqmkRFmLZiclE1yUvNhGBoZYXoBOSmb5KTmwzA0
MoAmyiYAXdPIAJoomwB0TSMjzFowOSmb5KTmwzA0MsL0AnJSNslJzYdhaGQA
TZRNALqmkQE0UTYB6JpGRpi1YHJSNslJzYdhaGSE6QXkpGySk5oPw9DIAJoo
mwB0TSMDaKJsAtA1jYwwa8HkpGySk5oPw9DICNMLyEnZJCc1H4ahkQE0UTYB
6JpGBtBE2QSgaxoZYdaCyUnZJCc1H4ahkRGmF5CTsklOaj4MQyMDaKJsAtA1
jQygibIJQNc0MsKsBZOTsklOaj4MQyMjTC8gJ2WTnNR8GIZGBtBE2QSgaxoZ
QBNlE4CuaWSEWQsmJ2WTnNR8GIZGRpheQE7KJjmp+TAMjQygibIJQNc0MoAm
yiYAXdPICLMWTE7KJjmp+TAMjYwwvYCclE1yUvNhGBoZQBNlE4CuaWQATZRN
ALqmkRFmLZiEPv5690Dg1dR8GIYuRphewPA+Wrx7sPBcaj4MQ88C2EngB2AA
WhjATvI/AAPQwgizFkxCwj9pqfnwrdvtdjqdHvaIy+VyOBzKofKxbD/10Ld0
McL0AhKS/0lLzYdtNZCXj/c94nq9lkPl42L7GYf20MUAdnL+DwBrTqfT7Xb7
fJSuy6H5U/Rlu+x50qE9tDCAneR/AL513yAOh0N9aFCV7bLnSYdiI4SdrAWT
kPBPWmo+/F97d3ScuLJFAZRMCMWhEAqhMJn4+0XB94vCr8v9RtUjhNwcwII+
a9UtlwaBkG9tSRupLTpdHiNWHnn4rNgaQifHAnKy2yQn+3zopP8DDMZuE4AV
b9H/F/35Vp9j2rRp06brdDv+5xXWx7Rp06bfZToP4/8ZWMItmuT8/S+Z2edD
px/v/3M8Hq/dyef+WbE1hE6OBSSk/JOWfT50ujxG1PPz7e36p7P3D58VW0MA
VthtAnBpcUT9NLe29N331/XOvqvr4bN6VvW23w0gMef/AXh3jmKEuRZMNsb/
k5l9PgzDIYwwxwISUv5Jyz4fhuEoBnATu00A3poDGQAA5KH/E+ZaMDlJPjlJ
PgxD/yfMsYCcJJ+cJB+Gof8DAEAe+j8AAOSh/xPmWjA5ST45ST4MQ/8nzLGA
nCSfnCQfhqH/AwBAHvo/AADkof8T5lowOUk+OUk+DEP/J8yxgJwkn5wkH4ah
/wMAQB76PwAA5KH/E+ZaMDlJPjlJPgxD/yfMsYCcJJ+cJB+Gof8DAEAe+j8A
AOSh/xPmWjA5ST45ST4MQ/8nzLGAnCSfnCQfhqH/AwBAHvo/AADkof8T5low
OUk+OUk+DEP/J8yxgJwkn5wkH4ah/wMAQB76PwAA5KH/E+ZaMDlJPjlJPgxD
/yfMsYCcJJ+cJB+Gof8DAEAe+j8AAOSh/xPmWjA5ST45ST4MQ/8nzLGAnCSf
nCQfhqH/AwBAHvo/AADkof8T5lowOUk+OUk+DEP/J8yxgJwkn5wkH4ah/wMA
QB76PwAA5KH/E+ZaMDlJPjlJPgxD/yfMsYCcJJ+cJB+Gof8DAEAe+j8AAOSh
/xPmWjA5ST45ST4MQ/8nzLGAnCSfnCQfhqH/AwBAHvo/AADkof8T5lowOUk+
OUk+DEP/J8yxgJwkn5wkH4ah/wMAQB76PwAA5KH/E+ZaMDlJPjlJPgxD/yfM
sYCcJJ+cJB+Gof8DAEAe+j8AAOSh/xPmWjA5ST45ST4MQ/8nzLGAnCSfnCQf
hqH/AwBAHvo/AADkof8T5lowOUk+OUk+DEP/J8yxgJwkn5wkH4ah/wMAQB76
PwAA5KH/E+ZaMDlJPjlJPgxD/yfMsYCcJJ+cJB+Gof8DAEAe+j8AAOSh/xPm
WjA5ST45ST4MQ/8nzLGAnCSfnCQfhqH/AwBAHvo/AADkof8T5lowOUk+OUk+
DEP/J8yxgJwkn5wkH4ah/wMAQB76PwAA5KH/E+ZaMDlJPjlJPgxD/yfMsYCc
JJ+cJB+Gof8DAEAe+j8AAOSh/xPmWjA5ST45ST4MQ/8nzLGAnCSfnCQfwg6H
w+5f+/1+mns6nco/64Nlun1hbNaP9H8AAHiej4+P8/m8OOvz87MU+PJzNh2e
1UP/BwCA51np/4fDoT17X6bLI/fM6qH/E+ZaMDlJPjlJPoTt9/tr/X82q0xP
Q4Nis3ro/4Q5FpCT5JOT5ENYHZ/z8fFxOVz/sopPj8Rm9dD/AQDgeUrzPx6P
9Yx9Ha4/fQTQ/wEAYGz1I0Cd3qr/L/rzrT7HtOnF6T9/vcj6mDZt2rTp503/
+etF1sf0203Tmuq68f+8F1s0OUk+OUk+hM3++Lf+LUCdnt3J53g8XrvJT+es
Hvo/AAA8z8r4/3rqvr2T//RhITarh/4PAADPU8r54XC49nW9tcDXWbOv8YrN
+pH+T5hrweQk+eQk+TAM/Z8wxwJyknxyknwYhv4PAAB56P8AAJCH/k+Ya8Hk
JPnkJPkwDP2fMMcCcpJ8cpJ8GIb+DwAAeej/AACQh/5PmGvB5CT55CT5MAz9
nzDHAnKSfHKSfBiG/g8AAHno/wAAkIf+T5hrweQk+eQk+TAM/Z8wxwJyknxy
knwYhv4PAAB56P8AAJCH/k+Ya8HkJPnkJPkwDP2fMMcCcpJ8cpJ8GIb+DwAA
eej/AACQh/5PmGvB5CT55CT5MAz9nzDHAnKSfHJSGGAYNmcAYN3ur61XBHgA
2zIAsGL3r61XB7iXDZkwoyDISfJJSPmHkdiWCdOCyEnyGUlPDXD+HwZjQwaA
wXQe3Dsr/a39X7WAF2cjBYCRPLzV39T/XSaA12cLJcwoCHKSfF7ZM1r9kz4p
AFuxeRKmBZGT5PPibhqos/jM3S3C7w5sxRYKAIPpP7hv+0xgEzZSAPgFN51U
5xm2jgC8CpsDYUZBkJPkE7N1+UXhgf+zORCmBZGT5JOTwgDDsDkDAC0n1WFs
tlwAAMhD/yfMKAhyknxyknwYhv5PmGMBOUk+OUk+DEP/BwCAPPR/AADIQ/8n
zLVgcpJ8cpJ8GIb+T5hjATlJPjlJPgxD/wcAgDz0fwAAyEP/J8y1YHKSfHKS
fBiG/k+YYwE5ST45ST4MQ/8HAIA89H8AAMhD/yfMtWByknxyknwYhv5PmGMB
OUk+OUk+DEP/BwCAPPR/AADIQ/8nzLVgcpJ8cpJ8GIb+T5jwkJMWRE6SD8NQ
4YjZ/bX1igAAcAP9jZmeSOz+9QtrBQDAQyhvtPorvfJPWkZBkJPkwzD0Nyb9
Z/Wd/yczLYicJB+GobwxeV7/FzMAgBehmDF5Uv93mQAA4HVoZUxWWv3uFp3L
hDdlFAQ5ST4MQyWjddOQnoc/E96CFkROkg/D0MqY6Y/EM54JAMBTKWaECQ8A
wNtR4QgTHnIyCoKcJB+GocIRJjzkpAWRk+TDMFQ4woQHAODtqHAbuummmjzD
1hEAAPhtKtCGyv/8/xz/67+t/hN+YoyCICfJh2GoQBvS//V/3pEWRE6SD8NQ
gTa04bgXqq0jAADw21SgDe2c/3f+HwDgd6lAG9L/9X/ekVEQ5CT5MAwVaEMb
jnuh2joCvCUtiJwkH4ahAhEmPAAAb0eFI0x4AADejgpHmPCQk1EQ5CT5MAwV
jjDhISctiJwkH4ahwhEmPAAAb0eFI0x4AADejgrHzGIk3FQTJkZBkJPkwzC0
NVr9HV7bJy0tiJwkH4ahvzHpP43vhD8AwIZOp9N+vy81rPws0ze9Vnmj5fw/
AMCL+/z8LLW//JxNd9LfmOmPhPCQk1EQ5CT58DoOh0N7zr9Ml0f6X67CEeZY
QE6ST06SD69jv9+fz+fpn2W6PNL/cv0fAADeyGWBv6nS6/8AAPBG9H+24low
OUk+OUk+vI77+/+iP9/qc0ybXpyWE9M5p6d97Iusj2nTvzNtn2/6zmke6M7x
/wAAwBuZ3f/neDzedP8fAADgjdQT/u39/9vLAQAAwGBq7a/f/3vTl38BAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAACwld1u97yF16+0e+pbQNizkyn/vIhYCB0d
AH7N7l9lD/nx8XE8Hqe5p9Np8YXl8ZV9aVlC+Kvlygrc9PxJeTtfY8eK47db
ZwXeZQr/tc1nhfzT73cifav1mr3JBmLrAGhd7qjP53PZPx8Ohzq37KIXX1h2
wtd28uW1ZQllOXVp5Zk37eSvveOPnNvhRyWcl2ksj9TAP2T594T/S/650bMj
HbASxa02EFsHQOvaXrE+Xn6uHFyuvXb2/HrhdfZ29bpAPQtUDgH1cPDVXI9o
D15lgYvni9qFtHp+cdIq0WrPBJbpW8PWJnZmdo5xMfwrS5N/Ap4a6XYJs6dd
W/JKCB++gdg6AAIW94fTPrleM70831J3rZ370sU9fLtXPx6P7SXd2WLrCtSj
Rjv99ffjSXto6FkfKHmrKSrhaZvSetiuJXbFtXoj/zzW8yJdnj89rRTs6Wm1
eE9vOlty52rfuYHYOgBiLveKZf85DRytc2fnVepuf/G1i9phqG3/n3bUZRc9
2/O3L59dIG6va8+GdNrD06kOPJidJv3qDtsssSvv0l4+m4Vc/nmg50V6+mSx
/nj9mDAtuXOd79xAbB0AMbsls934VPir6eNAzx61PV/09W//n63G4nT9Z3vF
+dr5os71gap8Ji2Bmf2B5APDdjmMZz3kK7Pknx5PinR5/uLQoMslX9u9L3rI
BmLrAIiZ7RXL/rOeQZr+/rc+PnX+9rPAj3vU6e+IL9/upv5z6ceFwIo6eq32
pdlJwgeGbf305rWlyT8Bz4t0/+M39f+vR2wgtg6AmMW94nQmZ5o71f52LNDK
HrXu2C/vPtezc57NWrnbgz08AStjhh8etpXhzdeWJv/c6qmRvnb+f/b4yrn3
FXduILYOgJjO/v/1vaet921ef211bchooP9fW9T6QmBR7RvtmOHal2qTuT9s
PTe/Wl+a/HOTZ0f6seP/H7uB2DoAYi73iufv+/+3f/9bXQ4uvbZHXbxl6Owl
Kzvn/b9fGdaezqrrdu0oYw/PusumVNXLW3Xw251hW7m9eWe9kX/6/UKk208T
1+7/U5/Tc2n4sRuIrQMgZjZycv/9/b+LO+T2RM3l3JVlVnWH39P/6y69fa/p
Ds+71Vu62cOzbuXLhqZic3/Yyqv2S19+3Vlv5J9+vxPpB97//+vRG4itAwAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AIAMzufzfr/f7XZluv7cxIZvDQAAL+t0On18fOy+ld5+OBxKgb9ngWU5n5+f
j1m5G5VfZJP3BQCAt1DafunMta6X2l8mjsdj+RRwT4Hf8MR7WfOt3hoAAF7c
6XRaLMzHb+1z6qWBMj09p35GqLPKJ4h6yaA8smt8XXwWmJZWXzLNnT2t/Wf7
RvWR8sLysWVaqzI9vaqqj1x7655fBAAAxlPqbtuEL9XOPF0daK8LtG25fFho
B960xbudbpc2tfHLp10uYTYkqa52faR+Fmg/Avz41v2/CAAAjKTU4PXT3dPQ
oKpMT/W4HeTfnsn/ul7CZ0srnbyz/68PRqp9/qa37vxFAABgJD923fKE9gNC
54ida9OzjxuBpa2s54+rEXhrAAAYyY/n/y/L8D39//6lTeofKdcRRNPfGjz8
rQEAYCQ/jv+/PGO/ONLmK9T/w+f/D4dD6f/nb7Pn9F966PlFAABgJPW+N5eX
AEq7rn9Ruz5svn1JYPx/eZe2t0+rUW8itLiExUfa58fG/68sHAAARjK72//s
/v/tbXPqh4XpekGg/9cvGqs9f3b/n/J4veNomVu/jGxxCdW0GuXJdZnTp5jZ
jX3atw78IgAAMJ717/+9dtv8QP//un7//6n2T3fjv7aEr79n79u1nS4l1NfW
l3fe/1//BwCAZ5jdxrMdhA8AAAymDvKZvrfrx78+BgAA3lf9rt46CKdMrH+r
FwAAAAAAAAAAAAAAAAAAAAAAAEA2/wNkeLfNDQplbmRzdHJlYW0NCmVuZG9i
ag0KOTMgMCBvYmoNCjw8L1R5cGUvUGFnZS9QYXJlbnQgMiAwIFIvUmVzb3Vy
Y2VzPDwvRXh0R1N0YXRlPDwvR1M1IDUgMCBSL0dTMTAgMTAgMCBSPj4vWE9i
amVjdDw8L0ltYWdlMTkgMTkgMCBSL0ltYWdlOTUgOTUgMCBSPj4vRm9udDw8
L0YxIDggMCBSL0YyIDE1IDAgUj4+L1Byb2NTZXRbL1BERi9UZXh0L0ltYWdl
Qi9JbWFnZUMvSW1hZ2VJXSA+Pi9NZWRpYUJveFsgMCAwIDk2MCA1NDBdIC9D
b250ZW50cyA5NCAwIFIvR3JvdXA8PC9UeXBlL0dyb3VwL1MvVHJhbnNwYXJl
bmN5L0NTL0RldmljZVJHQj4+L1RhYnMvUy9TdHJ1Y3RQYXJlbnRzIDI0Pj4N
CmVuZG9iag0KOTQgMCBvYmoNCjw8L0ZpbHRlci9GbGF0ZURlY29kZS9MZW5n
dGggNjY3Pj4NCnN0cmVhbQ0KeJy1VNtO3DAQfY+Uf5hHGymOr7lICAkWiqiK
VNitilT1YUuzAYm9NFmq8kn8Zcd2dpMsKEil+2JNxseec85MHB9X6/vZ9HYN
J5cj+BUGHDjjnAspeQp5wsFoDlURBl8PYBEG8fnYQFmHgYByC+aJ4Mr00LOD
MLgKAzjDW+PdGplKWWpApEwaSBOGobGJtoxL4u3NRu/A7RxpXMynZSFyOF3C
pgzE49V0AYeH8eXo4hR4/Gm6KIEUi+jLmB4dwcmpF+gYC624rfBS4ckEr/8g
IGcplpzMrFTHBLTMGZoiJMuRxmRu9ZfOEsGdJxzOw+AbeaaRkgSozsiIKkGW
VORkZZcn3ElIRWVC7mmUktIm7+yyppHM8EwkMkGkzXC7tJHd4obcUKG4P/xg
FxctLOAP/Q6Tj2FwNhlw/o3ucpZliVNbue4apazjFphsGtTt7I7l4l2WS1CS
qZ7jRrLMgM4MU8obzrhO/ej5yBl+XdSPFA1Z41K/YgPEn7ccZUtLSiyJsriE
lAsr1MjdOfR5y6bZ2x4SnUHMzcAgqncOosgYl/1JlJopTGmZsGzImGOqlZ0T
mTYrUJyyqqDCELQskqbJ4/gJSWrczpt4aTElbibEwX32rk1UrxrdU673plxl
OJjpgPIbq9zxXDjK4OiPbMIp87JdWN1ToRtY2YDRpZULKwf5TbUkDvazNQDd
6jnwf4QlgulsQFjtGzG1DH44Ml6Ko+SIX9jl2n5eOaiX7lHTtpUdc26fgOKr
Umyl9ozbg0iFj+uAxkdX2dfvGF4BTTmpMU46NKtGeZSbrhUtwCdraMd61viy
B2W4lQxJ68xapw3VrBN3G1O8/ZOZvf1k0qjhd/efnpdld7YQ3vnedNJiH1ym
98+9tOIv2yvQEA0KZW5kc3RyZWFtDQplbmRvYmoNCjk1IDAgb2JqDQo8PC9U
eXBlL1hPYmplY3QvU3VidHlwZS9JbWFnZS9XaWR0aCAxMDI0L0hlaWdodCA3
NjgvQ29sb3JTcGFjZS9EZXZpY2VSR0IvQml0c1BlckNvbXBvbmVudCA4L0lu
dGVycG9sYXRlIGZhbHNlL0ZpbHRlci9GbGF0ZURlY29kZS9MZW5ndGggMjAw
NDY+Pg0Kc3RyZWFtDQp4nOzd23HjSLQl0PJEptAUmSJT1G7Mlzy4LsiG+zWf
OYhCNIbNZwokRJzca0WHAk2oxNw6mcQhAVKtAQAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
QJw/f/68egj8f8qRSd0BYG/+/Nfb29vhcPj4+Nj0Hj8/Py/umm7v6RamEXbe
0U/G1eXjr5/u+k27HeG6cnT+q84psZ1rA/hzZlpie5gnT3SecfHqoQEAF5wf
o7+/v6f+5P39fbt7nFqgi7umJqqnZ7j2z8/v6Cfj6jX9Zs6fv0y3bPcb+6l9
jnDT/r9zSmzn2gCura/BngIs9PwAsH/Xjtfz7VOvMjWNU28zN+3HDeT0v19f
X/Ou+Zapw1y+89or/PNPvtGgHo/n4g9cXlqcB3NjhBejTd8/3T59vXjL9HV+
DjKZNo6/7dh0L1P25X+n7ZPW+tqv4viXdvHnP2V4d0e4engXM55857Uf/nj/
f214J1OiP+P5/56P8/h/p+3pm+cS3JiT1/75Yq7p8S3XRnut4tdG0p/9pGo3
plbnur6W91oF5+1r4/nRnQIAP3KtP5lfz5wOytPBd2k+3/9a/uG0vRyy5+P4
3HMeb1+8x/kbTm6f/8kynhs/8HjMt0d4cQAnFzhN28vFG/NPm7enjRtXlUy7
5vHMd3q86/bIlz7n+H6fPrwbI3xweMsPWb7zeCRz27bc77Wq9Ttpv68N7+SH
3854PG9P/vf8R50P4PjHHj8FuDv+xbK+7o72WsVvjOR2Ca79Aq/dUf+6vpb3
RgXf/l5teD6en94pAPAj58fr6VB77fqE475lbuOXXcf9Q7t5tcnyuuvJ988/
eRnPjR94o5M8GeHF77nR+fT3qPPrpeev/N8d+fJLO38R+InDuzHCB4e3/JCL
LdnJ7fPThBWDX5y//H5xeCc/vDPj+f+e/6iTezn+sT3pzm8/v/5nxVS/MZLb
Jej8BfaM7drAbtxyPoCL4/npnQIAP/Lnkhsv/N64TOLkcoLzV/iP/+HS8M+W
pwPHP//aD7zdSV4b4fGPutb5zKcPlhMKt00t3PRvz58o9Y+85+KQ1cO7NsIH
hzeb/snFMZz/8LvluO1Gj3p71+qMt+/lp3PyeFnNL3efX/x248deq/jtkXSW
oGdq9a/ri3fRuit4/L8/vVMA4EdODsHToXZ+xXh5wW0+TT9fizu7+A8vPo+4
fY9Lz3/8XOD451/7gSc/uXOEx5YXGM9fWpx/2p97F8DPlyrNDfb5C8idI782
wseHd2OEjw/vxq4b7d+Nf9IzW24Pr3823s3Yfy+tL928ceN6rRujbVcq/qOR
dGa/dkc3xnYj78Vbbg/geJw/ulMA4EcuHliX1wyn5nPqCr7/Ovn+k3/Y/wLd
cUc0/6uL11Hf+IHHd90/wmPLBxxdfCdy+/d50LWG7fb1yZ0jvzHCB4d3e4SP
D69df/3/5Pb+szY9Q+rvzB/JePteVrz+v2xfewrQs3ZOKn5jJP0luLb2j+/o
py+8P6X/92o/AGzqdv9/svfr6P25J7uuXRB++x7f/n4W+vHhftl74wfe6Chu
jPDYcu3xTy9maP82VCdXXx83XZ0jvzHCR4Z3d4SPD+/GD9n6+v/OXY9kPG6t
j6fTvOun6U5uv3gp+4q1c2Mk/SW4UZGeZXj7H168pbP//+mdAgA/cn68Pn5/
4tJGTjfOr14ubeR54/129KkjNz495uTahj//vUB92XvjB568mt05whPLxdjH
N177FJTjX87bpQ8knM9lzPd7Y+Q/eoF9xfB6RviU4R0/obj2+T9ffZ+Qc1tn
93hyCuaRjId/P3/p+9+PxDz+5sN/P3XneB5ebFnPf/75U4Abo71W8Rsj6S/B
8f9eu6P+dX0t74r+/6d3CgD8yMlFtnPbuXQCX0efMT5/TOLcsbcrjc1yEf7J
Zyqe3OOyff7OvpPrJS7+wLk9mP/hj0Z47OKl+8tP+3PlAvuTTyY5iX/SBp+P
vL/BXje8zhE+PrzjH3L4rc//vzG84ylxMoyfZlza/rd/P6z++Ju/rnzq/vkA
rv38dukPMd+Y6hcrfmMkrbsEJ7/Aa1Orc11fy7ui///pnQIAwBbWPYXZwn5G
AgAAo9pP172fkQAAwKj203XvZyQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAwmI+Pj7e3tz9//kxfPz8/l9vf39///Nf0
Dcve6Tsv/qvVuwAAgK1NTf7U/39/f0/b09fD4bC05dP2fPu5r6+vqYGfvp5s
r94FAAD8gpMOfGr4lxf5b/T/07OG41fvp+3plkd2AQAAv++4/582rvX/J7tu
/KvOXQAAwC+bGvLjl+jn63MOh8P55frTLSf/drll3S4AAOA3ze/wPb4gZ+r8
l7cGzJfrL08B9P8AAFDdyev/J+anAPP2S/r/P1f889f8PbZt27Zt27Zt27Zt
P7Kd5vY1+Uu7/pLr/50sAACAB5282n/ck5+8+Xd+L8C8fXKa4OPj49qH/HTu
6lGr/w95ChkSs8UkFXMwIUnFHElIzBaTNCRmObc////a9f/z04TjT/Jfniys
29VD/79DITFbTFIxBxOSVMyRhMRsMUlDYlY0PQVY/ibv8Z8DmN8OcO3P9c4N
/Pm/Wr3rrlr9PwAA8Aj9PwAA5KjV/4ec8AqJ2WKSijmYkKRijiQkZotJGhKT
7ej/dygkZotJKuZgQpKKOZKQmC0maUhMtlOr/wcAAB6h/wcAgBy1+v+QE14h
MVtMUjEHE5JUzJGExGwxSUNish39/w6FxGwxScUcTEhSMUcSErPFJA2JyXZq
9f8AAMAj9P8AAJCjVv8fcsIrJGaLSSrmYEKSijmSkJgtJmlITLaj/9+hkJgt
JqmYgwlJKuZIQmK2mKQhMdlOrf4fAAB4hP4fAABy1Or/Q054hcRsMUnFHExI
UjFHEhKzxSQNicl29P87FBKzxSQVczAhScUcSUjMFpM0JCbbqdX/AwAAj9D/
AwBAjlr9f8gJr5CYLSapmIMJSSrmSEJitpikITHZjv5/h0JitpikYg4mJKmY
IwmJ2WKShsRkO7X6fwAA4BH6fwAAyFGr/w854RUSs8UkFXMwIUnFHElIzBaT
NCQm29H/71BIzBaTVMzBhCQVcyQhMVtM0pCYbKdW/w8AADxC/w8AADlq9f8h
J7xCYraYpGIOJiSpmCMJidlikobEZDv6/x0Kidlikoo5mJCkYo4kJGaLSRoS
k+3U6v8BAIBH6P8BACBHrf4/5IRXSMwWk1TMwYQkFXMkITFbTNKQmGxH/79D
ITFbTFIxBxOSVMyRhMRsMUlDYrKdWv0/AADwCP0/AADkqNX/h5zwConZYpKK
OZiQpGKOJCRmi0kaEpPt6P93KCRmi0kq5mBCkoo5kpCYLSZpSEy2U6v/BwAA
HqH/BwCAHLX6/5ATXiExW0xSMQcTklTMkYTEbDFJQ2KyHf3/DoXEbDFJxRxM
SFIxRxISs8UkDYnJdmr1/wAAwCP0/wAAkKNW/x9ywiskZotJKuZgQpKKOZKQ
mC0maUhMtqP/36GQmC0mqZiDCUkq5khCYraYpCEx2U6t/h8AAHiE/h8AGIOu
BnrUWikhJ7xCYraYpGIOJiSpmCMJifnnX68eyOZCCsp2ai2TkAkfErPFJBVz
MCFJxRxJQsw///Xq4WwroaBsavg1AgAkCGn+4XGWCQAwAP0/dKq1TEJOeIXE
bDFJxRxMSFIxR5IQ0/U/0K/WGgmZ8CExW0xSMQcTklTMkYTEDGn+W0xB2U7C
MgEAEuhqoIeVAgAAOWr1/yEnvEJitpikYg4mJKmYIwmJ2WKShsRkO/r/HQqJ
2WKSijmYkKRijiQkZotJGhKT7dTq/wEAgEfo/wEAIEet/j/khFdIzBaTVMzB
hCQVcyQhMVtM0pCYbEf/v0MhMVtMUjEHE5JUzJGExGwxSUNisp1a/T8AAPAI
/T8AAOSo1f+HnPAKidlikoo5mJCkYo4kJGaLSRoSk+3o/3coJGaLSSrmYEKS
ijmSkJgtJmlITLZTq/8HAAAeof8HAIActfr/kBNeITFbTFIxBxOSVMyRhMRs
MUlDYrId/f8OhcRsMUnFHExIUjFHEhKzxSQNicl2avX/AADAI/T/AADwuI+P
j7e3t6m7nr5+fn4e75r+99d23VWr/w854RUSs8UkFXMwIUlDYtY6CK4WUs0W
kzQkZjnv7+9T///9/T1tT18Ph8PSln99fU1d+vT1ZHuLXT1qPfSFTPiQmC0m
qZiDCUmaEPPPv149kM0lVHMWkjQkZjknHfj0FGBqy+ft6anB8Uv00/Z0y0a7
eiQ87gHAiT//9erhAKM57v+njfm8wC/s6uFBD4BMmn9gI1NDfvwS/fnjzHLL
03f1qPW4F3LCKyRmi0kq5mBCkobErHUQXC2kmi0maUjMuuYXFo4vyNH/PyJk
wofEbDFJxRxMSFIxRxISs8UkDYlZ2v5f/7/on7/m77Ft27Zt27Zt27Zt+5Ht
NK7/BwCAgZ18CP+Nz//5+Pi49kk+j+/qUav/D3kKGRKzxSQVczAhScUcSUjM
FpM0JGY5Nz7/f34ucPxx/cur90/f1UP/v0MhMVtMUjEHE5JUzJGExGwxSUNi
VjQ9BVj+Ju/JnwOYu/Tf2XVXrf4fAAB4hP4fAABy1Or/Q054hcRsMUnFHExI
UjFHEhKzxSQNicl29P87FBKzxSQVczAhScUcSUjMVq2rWS2noGwkZKUAAGNb
/obRqwcCe2eZAADVnfwZ01cPB3at1hoJOeEVErPFJBVzMCFJxRxJSMyc5j+k
oGyn1jIJmfAhMVtMUjEHE5JUzJGExGzVuprVcgrKRkJWCgAwPF0N9LBSAIAB
5Fz/Aw+qtUxCTniFxGwxScUcTEhSMUeSEDPq/b8JBWVTtdZIyIQPidlikoo5
mJCkYo4kJGZI899iCsp2EpYJADC8nP4fHmSZAADVRV3/Aw+qtUZCTniFxGwx
ScUcTEhSMUcSEjOn+Q8pKNuptUxCJnxIzBaTVMzBhCQVcyQhMfX/0ClhmQAA
Y3P9D/SzRgCAAWj+oVOtZRJywiskZotJKuZgQpKKOZKQmK1aV7NaTkHZSK2V
EjLhQ2K2mKRiDiYkqZgjCYnZYpKGxGQ7tfp/AADgEfp/AADIUav/DznhFRKz
xSQVczAhScUcSUjMFpM0JCbb0f/vUEjMFpNUzMGEJBVzJCExW0zSkJhsp1b/
DwAAPEL/DwAAOWr1/yEnvEJitpikYg4mJKmYIwmJ2WKShsRkO/r/HQqJ2WKS
ijmYkKRijiQkZqvW1ayWU1A2ErJSAICx/fnXqwcCe2eZAADV/fmvVw8Hdq3W
Ggk54RUSs8UkFXMwIUnFHElIzJzmP6SgbKfWMgmZ8CExW0xSMQcTkjQkZq2D
4Go51dT/Q4+EZQIA53LaxQSu/4F+1ggAgbSLg1FQ6FdrjYSc8AqJ2WKSijmY
kKQJMXN6xYRqNgWFbrWWSciED4nZYpKKOZiQpCExax0EVwupZlNQ6BOyUgAA
gKb/BwCAJLX6/5ATXiExW0xSMQcTklTMkYTEbDFJQ2KyHf3/DoXEbDFJxRxM
SFIxRxISs8UkDYnJdmr1/wAAwCP0/wAAkKNW/x9ywiskZotJKuZgQpKKOZKQ
mC0maUhMtqP/36GQmC0mqZiDCUkq5khCYrZqXc1qOQVlIyErBQAYW87f/4UH
WSYAQHV//uvVw4Fdq7VGQk54hcRsMUnFHExIUjFHEhIzp/kPKSjbqbVMQiZ8
SMwWk1TMwYQkFXMkITH1/9ApYZkAAGNz/Q/0s0YAgAFo/qFTrWUScsIrJGaL
SSrmYEKSijmShJhRr/8nFJRN1VojIRM+JGaLSSrmYEKSijmShJj6f+g3/BoB
AIYX1f/Dg6wRAGAAmn/oVGuZhJzwConZYpKKOZiQpGKOJCRmq9bVrJZTUDZS
a6WETPiQmC0mqZiDCUkq5khCYraYpCEx2U6t/h8AAHiE/h8AAHLU6v9DTniF
xGwxScUcTEhSMUcSErPFJA2JyXb0/zsUErPFJBVzMCFJxRxJSMwWkzQkJtup
1f8DALSzD/y/7dWDhX2xKACAMehqoEetlRJywiskZotJKuZgQpKKOZKQmK1a
V7NaTkHZSK2VEjLhQ2K2mKRiDiYkqZgjCYnZqnU1q+UUlI2ErBQAYHi6Guhh
pQAAY9DVQI9aKyXkhFdIzBaTVMzBhCQVcyQhMVu1rma1nIKykVorJWTCh8Rs
MUnFHExIUjFHEhKzVetqVsspKBsJWSkAwPB0NdDDSgEAxqCrgR61VkrICa+Q
mC0mqZiDCUkq5khCYrZqXc1qOQUt5+Pj4+3tbZqH09evr6/l9vf395O/ST19
w7L38/Nz+VfT9vEPXLfrrlorJWTCh8RsMUnFHExIUjFHEhKzVetqVsspaC1T
kz/1/9/f39P29PVwOCxt+bQ9335uepqwPFk43l69q0fISgEAhqer4YVOXoSf
Gv7lRf4b/f/0rOH4H07b0y2P7OphpQAAY9DVsB/H/f+0ca3/P9l141917upR
a6WEnPAKidlikoo5mJCkYo4kJGar1tWsllPQ0j7+mrfn63MOh8P55frnk3a5
Zd2uHrVWSsiED4nZYpKKOZiQpGKOJCRmq9bVrJZT0LqmDn/q9pf/nbaXtwbM
l+svTwH0/wAAq+lq2IOp1b99Nf78FGDeflX/f9E/f83fY9u2bdu2bdu2vf/t
uQXaz3hsH28n+P7+nj8F6O53Lu266//vCplCITFbTFIxBxOSVMyRhMRs1bqa
1XIKWs7hcLj4OZwnb/6d3wswb598ks/xuYN1u3rUWikhEz4kZotJKuZgQpKK
OZKQmK1aV7NaTkFrOenJj924/n9+6f74k/yXJwvrdvUIWSkAwPB0NbzQxSvq
lz8HNj07uPbneucG/vyvBq/e1TPUFQEBAPZGVwM9aq2UkBNeITFbTFIxBxOS
VMyRhMRs1bqa1XIKykZqrZSQCR8Ss8UkFXMwIUnFHElIzFatq1ktp6BsJGSl
AADD09VADysFABiDrgZ61FopISe8QmK2mKRiDiYkqZgjCYnZqnU1q+UUlI3U
WikhEz4kZotJKuZgQpKGxKx1EFwtpJpNQaFPyEoBgBPLB3S/eiA8jWpCDysF
gEAnf6Pn1cPhOZQSetRaKSEnvEJitpikYg4mJGlCzJzmP6Gas4RqtqSCspFa
KyVkwofEbDFJxRxMSNKQmLUOgquFVLMpKPQJWSkAwPB0NdDDSgEAxqCrgR61
VkrICa+QmC0mqZiDCUkq5khCYrZqXc1qOQVlI7VWSsiED4nZYpKKOZiQpGKO
JCRmq9bVrJZTUDYSslIAgOHpaqCHlQIAjEFXAz1qrZSQE14hMVtMUjEHE5JU
zJGExGzVuprVcgrKRmqtlJAJHxKzxSQVczAhScUcSUjMVq2rWS2noGwkZKUA
AMPT1UAPKwV4Cg8mwMt5IIIetVZKyAmvkJgtJmlCzD//evVAfkNCQZuYYwmJ
2ap1NavlFJSN1FopIRM+JGaLSTp8zD//9erhbG74gs7EHElIzFatq1ktp6Bs
JGSlAJvKaf6BPfMoBD2sFOApPJgAL+eBCHrUWikhJ7xCYraYpGIOJiSpmCMJ
idmqdTWr5RSUjdRaKSETPiRmi0kq5mBCkoo5kpCYrVpXs1pOQdlIyEoBgHMO
goNRUOhhpQCQyfvWx6Oa0KPWSgk54RUSs8UkFXMwIUmHjxn1ubXDV3MxfCln
OQVlI7VWSsiED4nZYpKKOZiQpAkxQ5r/llHNWUI1W1JB2UjISgGAcw6Cg1FQ
6GGlAABj0NVAj1orJeSEV0jMFpM0JGatB5NHhBRUzJGExGwxD0Q5BWUjtVZK
yIQPidlikibEzLmOumUUtIk5lpCYrVpXs1pOQdlIyEoBthP1OSrAnnkIgh5W
CvA4zT+wBx6FoEetlRJywiskZotJGhKz1oPJI0IKGhIzZN6GVLMpKPSptVJC
JnxIzBaTVMzBhCRNiJlz3iqhmrOEarakgrKRkJUCAMe8b2VISgk9rBQAMmn+
x6Oa0KPWSgk54RUSs8UkFXMwIUlDYtY6CK4WUs2moNCn1koJmfAhMVtMUjEH
E5I0JGatg+BqIdVsCgp9QlYKAJxw/c94VBN6WCkABPL+3yEpJfSotVJCTniF
xGwxScUcTEjS4WNG9f/DV3MxfClnOQVlI7VWSsiED4nZYpKKOZiQpMPH1P8P
afhSznIKykZCVgqwNQ8mlBPS/EdRTehhpQCP00dRTtTr/zmUEnrUWikhJ7xC
YraYpMPHTOujhi/oLCGmSTuehGq2pIKykVorJWTCh8RsMUkTYub0US2joC0m
pkk7GAWFHiErBdiaBxPKiXreGkI1oYeVAkCgtOvWQigl9Ki1UkJOeIXEbDFJ
xRxMSNKEmDnNf0I1ZwnVbEkFZSO1VkrIhA+J2WKSijmYkKTDx4x6/X/4ai6G
L+Usp6BsJGSlAMCJkOY/impCDysFgAR/fuLVg2UltYMetVZKyAmvkJgtJqmY
gwlJGhKz1kFwtZBqNgWFPrVWSsiED4nZYpKKOZiQpCExax0EVwupZlNQ6BOy
UgDgnIPgYBQUelgpAMRyEByMgkKPWisl5IRXSMwWk1TMwYQkDYlZ6yC4Wkg1
m4JCn1orJWTCh8RsMUnFHExI0pCYtQ6Cq4VUsyko9AlZKQBwzkFwMAoKPawU
AGI5CA5GQaFHrZUScsIrJGaLSSrmYEKShsSsdRBcLaSaTUGhT62VEjLhQ2K2
mKRiDiYkaUjMWgfB1WpV80d/qfm5Xh29V62CskOFZjsAPJeD4A5NRfn4n//z
+/+ZDOQw2wGI5SC4Q/p/2Fqt2R5ywiskZotJKuZgQpKGxKx1EFytVjX1/3fV
KmiUj4+Pt7e3aS5NX7++vo53fX5+Lrum7U133VVotreYCR8Ss8UkFXMwIUlD
YtY6CK5Wq5r6/7tqFTTH+/v71P9/f39P29PXw+GwtOXTc4HlGcHx9ha7ehSa
7QDwXA6CO6T/p6iTF+GnpwBTWz5vT08NjvdO29MtG+3qYbYDEMtBcIf0/4zh
uP+fNubzAr+wq0et2R5ywiskZotJKuZgQpKGxKx1EFytVjX1/3fVKmisj7/m
7fPZtdzy9F09Cs32FjPhQ2K2mKRiDiYkaUjMWgfB1WpVU/9/V62CvsrX19f7
+/vbX/ObZCfTLT+6Tn61z8/Pw+Gw/K/+HwB2wkFwh/T/PGh+P+zUfn98fEzb
yxtyp+3plun2n75b9qemezm5Gn+H/f9F//w1f49t27Zt27Y95Lbj3Q63X9v/
7+f3MN7275g/FfP252H2fM8607OM+VOATm53/f8jfnkKvUpIzBaTVMzBhCQN
iVnrILharWp6/f+uWgX9ZYfD4bgxvmb+fM4t7v3imYWTj+s5PkHw9F09Cs32
FjPhQ2K2mKRiDiYkaUjMWgfB1WpVU/9/V62C5jjpyY/Nr88ff1z/8iTl6bt6
FJrtAPBcDoI7pP/nKY5f4Z+3pxJ3nh1Y5+IV9cvdzV36xT8N/PRdPUP9aToA
GIOD4A7p/3mK4z+/u1yWM7//93WD2otasz3khFdIzBaTVMzBhCQNiVnrILha
rWrq/++qVdBXWQr6/f19/Dp8oUJvp9YvIWTCh8RsMUnFHExI0pCYtQ6Cq9Wq
pv7/rloFfZWloPOn/ZzfnswvAYBYDoI7pP/nKZbrf44/kPPkz3LFMtsBiOUg
uEP6f55iec/v8QdjXvt8zjS1ZnvICa+QmC0mqZiDCUkaErPWQXC1WtXU/99V
q6DsUKHZ3mImfEjMFpNUzMGEJA2JWesguFqtaur/76pVUHao0GwHgOdyENwh
/T9szWwHIJaD4A7p/3mK5fr/c68e2uvV+iWEnPAKidlikoo5mJCkITFrHQRX
q1VN/f9dtQr6KlPz//Hxsd1f+y2t0GxvMRM+JGaLSSrmYEKShsSsdRBcrVY1
9f931SroqxQq6O/zywEgloPgDun/eYq3tzcv/l9jtgMQy0Fwh/T/PMXX15dP
+7+m1mwPOeEVErPFJBVzMCFJQ2LWOgiuVqua+v+7ahX0Vd7e3i6++bdQobdT
65cQMuFDYraYpGIOJiRpSMxaB8HValVT/39XrYKyQ4VmOwA8l4PgDun/YWtm
OwCxHAR3SP/PIw6HQ8/bfue/DrD5aPaq1mwPOeEVErPFJBVzMCFJQ2LWOgiu
Vqua+v+7ahX0l31+fr69vU1fH/yesRWa7S1mwofEbDFJxRxMSNKQmLUOgqvV
qqb+/65aBf19X19fU3s///2vaXs+HTB9nbanW6bbp73hnwtUaLYDwHM5CO6Q
/p+nmDr89/f3t7+m4s4b0y3hnf/MbAcgloPgDun/YWu1ZnvICa+QmC0mqZiD
CUkaErPWQXC1WtW89pntv+DV0XvVKig7VGi2t5gJHxKzxSQVczAhSUNi1joI
rlarml7/v6tWQdmhQrMdAJ7LQXCH9P+wNbMdgFgOgjuk/4et1ZrtISe8QmK2
mKRiDiYkaUjMWgfB1WpVU/9/V62CvkrPXwGLVWi2t5gJHxKzxSQVczAhSUNi
1joIrlarmvr/u2oV9FWmgvq0z2sKzXYAeC4HwR3S//MU39/fn5+f858A+Pj4
cDrgmNkOQCwHwR3S//N0X19fh7+mZwSeCLRqD30hJ7xCYraYpGIOJiRpSMxa
B8HValVT/39XrYLux8fHx/yHHuYnAq8ezisVmu0tZsKHxGwxScUcTEjSkJi1
DoKr1aqm/v+uWgV9uflCoLe/pqcAX19f8xOB5KcAhWY7ADyXg+AO6f95iqnt
n/r8w+Ewtf3nbwSe/ne6/TUj2wGzHYBYDoI7pP/nKe5e55Nc8VrZQ054hcRs
MUnFHExI0pCYtQ6Cq9Wqpv7/rloFfRXv872h0GxvMRM+JGaLSSrmYEKShsSs
dRBcrVY19f931Sroq0z9/+FwOLlxusXzghbz0AcA5xwEd0j/z1NcvPhnuuX8
SUEgsx2AWA6CO6T/5ymuFVShW7VfQsgJr5CYLSapmIMJSRoSs9ZBcLVa1dT/
31WroK/y9vZ2fqnPdEvyx/4sCs32FjPhQ2K2mKRiDiYkaUjMWgfB1WpVU/9/
V62Cvsp8qc/X19f8LGD6On/mZ/LH/i8KzXYAeC4HwR3S//MsU8M/f/7/VNzp
6/x04NWD2gWzHYBYDoI7pP+HrdWa7SEnvEJitpikYg4mJGlIzFoHwdVqVVP/
f1etgrJDhWZ7i5nwITFbTFIxBxOSNCRmrYPgarWqqf+/q1ZB2aFCsx0AnstB
cIf0/zzF/Pe//lzy6qG9nl8CALEcBHdI/89TTM3/x8eHv/Z7Ua3ZHnLCKyRm
i0kq5mBCkobErHUQXK1WNfX/d9Uq6KsUKujvq/XLCZnwITFbTFIxBxOSNCRm
rYPgarWqqf+/q1ZBX+Xi3/9iVmi2A8BzOQjukP6fp5g//N8H/l9ktgMQy0Fw
h/T/PMX8Z7+8//eiWr+EkBNeITFbTFIxBxOSNCRmrYPgarWqqf+/q1ZB2aFC
s73FTPiQmC0mqZiDCUkaErPWQXC1WtXU/99Vq6DsUKHZDgDP5SC4Q/p/nuXr
6+v9/X2+EGi+5XA4eFNw89AHQDAHwR3S//MUn5+fU+c/fZ0a/qW4Hx8f0zOC
l45rF2rN9pATXiExW0xSMQcTkjQkZq2D4Gq1qqn/v6tWQV9lav6XD/9Zinv8
XCBZrV9CyIQPidlikoo5mJCkITFrHQRXq1VN/f9dtQr6KscFvbYdyy8BgFgO
gjuk/+cpLr7+P90y3f6qIe2H2Q5ALAfBHbr2me2/4NXReabz6//n5n+65dVD
e71asz3khFdIzBaTVMzBhCQNiVnrILhaSDWbgvJf858Anp/cTZ2/Pwe8qLVS
QiZ8SMwWkzQkZq0Hk0eEFDQkZsi8DalmU1DoE7JSgE05e05RJu1gFBR6WCnA
g1xAS11m7GAUlMW1z/n3/t9WbaWEnPAKidlikibEjGr+EwraYmKatINRUBYX
J4PP/5nVWikhEz4kZotJGhKz1oPJI0IKGhIzZN6GVLMpKH8dDoepyb/4EU/H
HwqaLGSlAMA5B8HBKCgLk+EGvxwAYjkIDkZBuW35WwDhav0SQk54hcRsMUnF
HExI0pCYtQ6Cq4VUsyko//X+/n5yIdD0vx8fH68e1+vVWikhEz4kZotJKuZg
QpKGxKx1EFwtpJpNQTny/tf393f7d2J8fn4eDof5lnAhKwUAzjkIDkZBWby9
vS2t/jIxpqcA1z4XNIqVAkAsB8HBKCiL48mwfObn9IzA53+2aisl5IRXSMwW
k1TMwYQkDYlZ6yC4Wkg1m4Jy5Pj1/4vnApLV+iWETPiQmC0mqZiDCUkaErPW
QXC1kGo2BeXI+/v75+fnvP3xV/v3LQDb3en0LGO63/N5ON948k7kZe80qvl9
ytPXZcyP7LorZKUAwDkHwcEoKIupFT9u9ecOfNP3/84N+fT1fB7euN/5TxLP
f5XseHv1rh5WCgCxHAQHo6C80MnHDR270f8fn6do/32H8rpdPWqtlJATXiEx
W0xSMQcTkjQkZq2D4Goh1WwKyj6cz8PjNyDc3nX8DuV1u9aNcM9CJnxIzBaT
VMzBhCQNiVnrILhaSDWbgtLhFybJxf7/6+vrcDicX65//s3LLet2rRshAIRw
EByMgnLXS/r/qfP/+PiYX7GfL9dfngLo/wHgNzkIDkZBuesl/f+J+SnAtW/+
nf7/on/+mr9nP9vz/+5nPBttH4fdw3hsP7j9j3lru+D2PxnzdrfHO9vrtucW
aD/j2Wj7n3/tZDyd2zuxh/7/+Htc/3/X3qbQRkJitpikYg4mJGlIzFoHwdVC
qtkUlA4v6f9P3vw7vxdg3j75JJ+Pj49rH/LTuWvdCAEghIPgYBSUu/Z2/f/8
0v3xJ/kvTxbW7Vo3QgAI4SA4GAWlXb+4ffGb9zvvmv8u8LU/1zs38POukz/j
tW5Xz1B/HO91Qk54hcRsMUnFHExI0pCYtQ6Cq4VUsyko9Km1UkImfEjMFpNU
zMGEJA2JWesguFpINZuCQp+QlQIA5xwEB6Og0MNKASCWg+BgFBR61FopISe8
QmK2mKRiDiYkaUjMWgfB1UKq2RQU+tRaKSETPiRmi0kq5mBCkobErHUQXC2k
mk1BoU/ISgGAcw6Cg1FQ6GGlABDLQXAwCgo9aq2UkBNeITFbTFIxBxOStFbM
u3/uZwuvDv0Dtar5iFp1WS2noGyk1koJmfAhMVtMUjEHE5K0VszpWPbxuxw9
96lWXVbLKSgbCVkpAAxM/89MXaCHlQJAdfp/ZuoCPWqtlJATXiExW0xSMQcT
krRWTP3/bbWq+YhadVktp6BspNZKCZnwITFbTFIxBxOStFZM/f9ttar5iFp1
WS2noGwkZKUAMDD9PzN1gR5WCgDV6f+ZqQv0qLVSQk54hcRsMUnFHExI0lox
9f+31armI2rVZbWcgrKRWislZMKHxGwxScUcTEjSWjH1/7fVquYjatVltZyC
spGQlQLAwPT/zNQFelgpAFSn/2emLtCj1koJOeEVErPFJBVzMCFJa8XU/99W
q5qPqFWX1XIKykZqrZSQCR8Ss8UkHTLmn5949WCfbMiCnqsVU/9/W61qPqJW
XVbLKSgbCVkpwC/weMKr/OgJ6bO8OjQXqAv0sFKAZ/F4wqt4/Z+ZukCPWisl
5IRXSMwWkzQnZq3Hk9VyCvrqIfyA/v+2WtV8RK26rJZTUDZSa6WETPiQmC0m
aU7MWo8nq+UU9NVD+AH9/221qvmIWnVZLaegbCRkpQC/wOMJr6L/Z6Yu0MNK
AZ7F4wmvov9npi7Qo9ZKCTnhFRKzxSTNiVnr8WS1nIK+egg/oP+/rVY1H1Gr
LqvlFJSN1FopIRM+JGaLSZoTs9bjyWo5BX31EH5A/39brWo+olZdVsspKBsJ
WSnAL/B4wqvo/5mpC/SwUoBn8XjCq+j/makL9Ki1UkJOeIXEbDFJc2LWejxZ
Laegrx7CD+j/b6tVzUfUqstqOQVlI7VWSsiED4nZYpLmxKz1eLJaTkFfPYQf
0P/fVquaj6hVl9VyCspGQlYK8As8nvAq+n9m6gI9rBTgWTye8Cr6f2bqAj1q
rZSQE14hMVtM0pyYtR5PVssp6KuH8AN/XuHVoX+gVjUfUasuq+UUlI3UWikh
Ez4kZotJmhOz1uPJajkFffUQfoNJOxgFhR4hKwX4BR5PKMekHYyCQg8rBXgW
jyeUY9IORkGhR62VEnLCKyRmi0maE7PW48lqOQV99RB+g0k7GAWFHrVWSsiE
D4nZYpLmxKz1eLJaTkFfPYTfYNIORkGhR8hKAX6BxxPKMWkHo6DQw0oBnsXj
CeWYtINRUOhRa6WEnPAKidlikubErPV4slpOQV89hN9g0g5GQaFHrZUSMuFD
YraYpDkxaz2erJZT0FcP4TeYtINRUOgRslKAX+DxhHJM2sEoKPSwUoBn8XhC
OSbtYBQUetRaKSEnvEJitpikOTFrPZ6sllPQVw/hN5i0g1FQ6FFrpYRM+JCY
LSZpTsxajyer5RT01UP4DSbtYBQUeoSsFOAXeDyhHJN2MAoKPawU4Fk8nlCO
STsYBYUetVZKyAmvkJgtJmlOzFqPJ6vlFPTVQ/gNJu1gFBR61FopIRM+JGaL
SVor5p/XeXX0XrUKulpIzEIT7xEh1WwKCn1CVgrQaXpM+L//+8/v/+exiJcw
8QajoNDDSgGO6f+JYuINRkGhR62VEnLCKyRmi0laK6b+/65aBV0tJGahifeI
kGo2BYU+tVZKyIQPidliktaKqf+/q1ZBVwuJWWjiPSKkmk1BoU/ISgE66f+J
YuINRkGhh5UCHNP/E8XEG4yCQo9aKyXkhFdIzBaTtFbMDT/f855XR+9Vq6Cr
hcQsNPEeEVLNpqDQp9ZKCZnwITFbTNJaMf94/f+eWgVdLSRmoYn3iJBqNgWF
PiErBeik/yeKiTcYBYUeVgpwTP9PFBNvMAoKPWqtlJATXiExW0zSWjH1/3fV
KuhqITELTbxHhFSzKSj0qbVSQiZ8SMwWk7RWTP3/XbUKulpIzEIT7xEh1WwK
Cn1CVgrQSf9PFBNvMAoKPawU4Jj+nygmXl1Dfrww/I5aiyLkhFdIzBaTtFZM
/f9dtQq6WkjMQhPvEQnVjGr4EwrKpmqtkZAJHxKzxSStFfNHL6k916uj96pV
0NVCYhaaeI9IqGbRx5N1Egpa1Pf39/v7+8UZ+Pn5+fb2Nu2avk7bm+66a/g1
AvwajyeUY9KOJKT5Z7fmhnz6ej4Jv76+pl3T15PtLXb1sEyAZ/F4Qjkm7Uj0
/7zW+/v79/d3u/TAMu06fol+2p5u2WhXj1rLJOSEV0jMFpM0J2atx5PVcgr6
6iH8BpN2GK7/YT/OZ+Db29v81GA2bU+3bLRr3Qj37P+1dzfHbWtdm0CdwReC
QnEoDsXDnvUbgu64k3AIPe4Rc/iq56fRQhmFyz9BFEFy72etuuWiKdnGc/fh
xsHfUciAD4k5YpLmxKzVT26WU9Bnb8IjGLRtmP/zOk5H4JV37v6l27YQ4Db6
CeUYtJ2ETP55feb/QA79hHIM2k7M/3kRJeb/Z/3zYf6e13k9//Z1tmen1+uw
r7A9Xn/z9T8x43ZuHS+yPV5/8/U/GeP2Zfd3Xn/19ek05nW27e6v//nrRbZn
4+sc7v+/r5AhFBJzxCTNiVmrn9wsp6DP3oRHMGg7yTn/H1LQuk4H4dFyPb9/
/760ks/3v3TbFgLcRj+hHIO2GQXlFZyOw/n8/Hq5/uXs/d2/dNsWAtxGP6Ec
g7aTnPP/vKazd9QvX51n6T8+flzv0c/quvuXtmzq17I9VcgFr5CYIyZpTsxa
/eRmOQV99iY8gkHbxqVJV0sJBWVXtT4jIQM+JOaISZoTs1Y/uVlOQZ+9CY9g
0HYSMvkfMQVlPwkfE+Ax9BPKMWibUVDYwicFuBf9hHIMWiBQrdYXcsErJOaI
SZoTs1Y/uVlOQZ+9CY9g0DYTkjQkJvup1fpCBnxIzBGTNCdmrX5ys5yCPnsT
HsGgbSYkaUhM9hPS+oAH0E8ox6AFAml9wL3oJ5Rj0AKBarW+kAteITFHTNKc
mLX6yc1yCvrsTXgEg7aZkKQhMdlPrdYXMuBDYo6YpDkxa/WTm+UU9Nmb8AgG
bTMhSUNisp+Q1gc8gH5COQYtEEjrA+5FP6EcgxYIVKv1hVzwCok5YpLmxKzV
T26WU9Bnb8IjGLTNhCQNicl+arW+kAEfEnPEJM2JWauf3CynoM/ehEcwaJsJ
SRoSk/2EtD7gAfQTyjFogUBaH3Av+gnlGLRAoFqtL+SCV0jMEZM0J2atfnKz
nII+exMewaBtJiRpSEz2U6v1hQz4kJgjJmlOzFr95GY5BX32JjyCQdtMSNKQ
mOwnpPUBD6CfUI5BCwTS+oB70U8ox6AFAtVqfSEXvEJijpikOTFr9ZOb5RT0
2ZvwCAZtMyFJQ2Kyn1qtL2TAh8QcMUlzYtbqJzfLKeizN+ERDNpmQpKGxGQ/
Ia0PeAD9hHIMWiCQ1gfci35COQYtEKhW6wu54BUSc8QkzYlZq5/cLKegz96E
RzBomwlJGhKT/dRqfSEDPiTmiEmaE7NWP7lZTkGfvQmPYNA2E5I0JCb7CWl9
wAPoJ5Rj0AKBtD7gXvQTyjFogUC1Wl/IBa+QmCMmaU7MWv3kZjkFffYmPIJB
20xI0pCY7KdW6wsZ8CExR0zSnJi1+snNcgr67E14BIO2mZCkITHZT0jrAx5A
P6EcgxYIpPUB96KfUI5BCwSq1fpCLniFxBwxSXNi1uonN8sp6LM34REM2mZC
kobEZD+1Wl/IgA+JOWKS5sSs1U9ullPQZ2/CIxi0zYQkDYnJfkJaH/AA+gnl
GLRAIK0PuBf9hHIMWiBQrdYXcsErJOaISZoTs1Y/uVlOQZ+9CY9g0DYTkjQk
Jvup1fpCBnxIzBGTNCdmrX5ys5yCPnsTHsGgbSYkaUhM9hPS+oAH0E8ox6AF
Aml9wL3oJ5Rj0AKBarW+kAteITFHTNKcmLX6yc1yCvrsTXgEg7aZkKQhMdlP
rdYXMuBDYo6YpDkxa/WTm+UU9Nmb8AgGbTMhSUNisp+Q1gc8gH5COQYtEEjr
A+5FP6EcgxYIVKv1hVzwCok5YpLmxKzVT26WU9Bnb8IjGLTNhCQNicl+arW+
kAEfEnPEJM2JWauf3CynoM/ehEcwaJsJSRoSk/2EtD7gAfQTyjFogUBaH3Av
+gnlGLRAoFqtL+SCV0jMEZM0J2atfnKznII+exMewaBtJiRpSEz2U6v1hQz4
kJgjJmlOzFr95GY5BX32JjyCQdtMSNKQmOwnpPUBD6CfUI5BCwTS+oB70U8o
x6AFAtVqfSEXvEJijpikOTFr9ZOb5RT02ZvwCAZtMyFJQ2Kyn1qtL2TAh8Qc
MUlzYtbqJzfLKeizN+ERDNpmQpKGxGQ/Ia0PeAD9hHIMWiCQ1gfci35COQYt
EKhW6wu54BUSc8QkzYlZq5/cLKegz96ERzBomwlJGhKT/dRqfSEDPiTmiEma
E7NWP7lZTkGfvQmPYNA2E5I0JCb7CWl9wAPoJ5Rj0AKBtD7gXvQTyjFogUC1
Wl/IBa+QmCMmacuYP77i2Rt7Zy0LeiokZr/xeVZINUdM0pCY7KdW6wsZ8CEx
R0zS0jG3t4hazeQ7Shd0u5CYIeM2pJojJmlITPYT0vqAG2w/gd/1VD/tGbRA
IK0POGv7PTy97/ahNyMWCFSr9YVc8AqJOWKS1o25cUqfNv+vW9AvCYmZMGJH
TDVHTNKQmOynVusLGfAhMUdM0tIxv3Tzj/l/JyExE0bsiKnmiEkaEpP9hLQ+
YFc5k3+aMWiBQFofcBeaCRUZt0CgWq0v5IJXSMwRk1TMZkKShsSstRO8WUg1
R0zSkJjsp1brCxnwITFHTFIxmwlJ2i/mtZ9Rd+LZG3tn/ap5SUjSkJjsp1+X
AwCA1/Hr16+jkwxvb2/LV9/f36ffzm9Or9d/8LYvfcr8HwAA9vPz58/D4XD2
S3/+/Jkm8NOvR69v/tIWteb/IRe8QmKOmKRiNhOSNCRmrZ3gzUKqOWKShsTs
5Mr8/9evX+uz99Pr6Z3vfGmLWq0vZMCHxBwxScVsJiRpQsyud/ufSqjmLCRp
SMxO3t7eLs3/j740vV5uDbrtS1sk9D0AONL7gV/gpcz35/z8+fP0dv3T/rO8
c9uXttD0AAhk/g88zDTz//3793zGfr5dfzkEMP//VMgFr5CYIyapmM2EJE2I
mTP5T6jmLCRpSMzG5kOA+fWz5v9n/fNh/p7XeT3/9nW2Z6fX67CvsD1ef/P1
P8at1wVf/5Mxbl92f+f1ba//yRi367CvsD0bX7O2TNfd/w8AD5Nz/h94rqOH
f+dnAebXRyv5/P79+9IiPxu/tIW+B0Ag9/8DD3Pl/v/51P16Jf/lYOG2L21R
q+mFXEIKiTlikobErNVMviOkoAkxcyb/CdWchSQNidnJNDn/9evXpR/XO0/g
5y8d/Riv2770qVp9L2TAh8QcMUkTYubMo0ZGQUdMTIO2mZCkITHZT0jrA/bj
PgrqMmKBQFof8H0m/1Rk3AKZavW9kAteITFHTNKQmLWayXeEFLR9zKjrVu2r
uQhJGhKT/dRqeiEDPiTmiEkqZjMhSUvH3LhrC5n8j+LV/JKQpCEx2U9C3wMg
x8ZZfdT5f4A1TQ+ANrbP6s3/gVi1ml7IBa+QmCMmqZjNhCStG9P5/1N1q/lV
IUlDYrKfWk0vZMCHxBwxScVsJiRp6Zju/z9SuppfEpI0JCb7Seh7AHCWnSAQ
SOsDAIActeb/IRe8QmKOmKQhMWs1k+8IKaiYnYTEHDFJQ2Kyn1q77JABHxJz
xCRNiJlzH/XIKOgQs5eQmCMmaUhM9hOyvwb2E7WOCgBUZ2cNfJP5PwAUUmtn
HXLBKyTmiEnaPmba/L99QWdidhISc8QkDYnJfmrtrEMGfEjMEZO0fUzz/5bE
7CQk5ohJGhKT/STsrIFdpc3/oRwfzGYUlG8yhIBvMv+HV+az2YyC8n21xk/I
Ba+QmCMmafuYafP/9gWdidmDj2czaQVlJ7UGT/vP9Swk5ohJ2j5m2v6ofUFn
YraR89kcCgrbGD/A99kfwSvz2ezhxznLl567bdRiwAB3oZnAy/LxbODs5D/t
8iv3Umu0JFzXGzExR0xSMZsJSSpmXUfnhNeTw9PTxbWmAZ9qWdCxbfLvEIDt
ag2Vrp/rIyExR0xSMZsJSSpmUdsnii0njQr67O2lBkMF4Eu0TV7WbZN/88Zn
+U69FJrvMBJ4IsOPcuxDeaKnTBcN+P0oJc9SayT0u653VkjMnF4UUtCEmFG7
0YSCjmoxHzpNrDnaFbRNKdlVrZHwgp/r7f8Dn/udj7Rlq6La0QuO2z1Uj7lx
HH5p0JYe29ULulFCzKgZYL+CmtuzB6PlO7Z/4p77nXdx99lRzjyK19fgEwoL
M0bgOp/9m21voc/9zrvY+A/ttP32U9zdponRPp4dnTgGIXCkVh94tet623vp
le+8eebwsE5+fcfxpe2/r72D38urjdud1Ipp3H6qVkFvFhJzGXiFRuBtQgoa
EpP91GoFLzjgt/8P/NJ3bvzmh5XvytTlf/2f/7v+b/nOo/dP//vmdz4m+F28
4LjdQ/WY2z90L/gJ3UP1gm4kZjMhSUNisp/Su6fGXrAuOx3p3P07YW9GIwCl
2ZG9JnUBAGAPteaZIRe8ppi16nKznII+exMeISTmiEkqZichMUdM0pCY7KfW
PLPWgL/Ps4I3eXb0rWoV9GZiNhOSVMxOQmKOmKQhMdlPobliOeb/AAC8GnPF
16QuAADsodY8M+SCl/v/mxGzmZCkYnYSEnPEJA2JyX5qzTNDBrz5fzNiNhOS
VMxOQmKOmKQhMdlPyDyzHHUBAGAP5plP58FeAAAeptaUMuSCV0jMEZNUzGZC
korZSUjMEZM0JCb7Mf9/QSExR0xSMZsJSVpr73CzkGqGxBwxSUNisp+QDg/A
du45BGhMe4fbbP/s7PGdsB+PHQH0Vqu3h1zwCok5KifdPjXa4ztfU91qflXp
pF8aiqUH5Ealq7ldSMwRkzQkJvup1dtDBnxIzFE26fbZ0R7f+bKKVvMGdZNu
HGANRuN2dav5JSExR0zSkJjsp31vhy+579nRqPk/L26/0WjEAtSib8Pi7mdH
zf95HTuNRoMWoJxaTTvkgldIzPFiSe8yO/rxFbf96y/rpaq5q6JJjduzilbz
q0JijpikITHZT62OHTLgQ2KO10u6fRrz3O98Ta9Wzf3UTWrcnqpbzS8JiTli
kobEZD91mzbsYfsn4rnfCbcxbgHQt2FvPmVUZNwCdFWrw4dc8AqJOWKS1vqU
3SykmiMmqXHbSUjMEZM0JCb7qdXhQwZ8SMwRk7TWp+xmIdUcMUmN205CYo6Y
pCEx2U9Ih4fv+9IaKffy7NDU9pRBa+gCvDhdGjaaPiz//b9/P/I/H0++6f8P
2v/5Px7/n6EL8MpqdemQC14hMUe1pOb/19Wq5ncUSmr+/6lC1fyOkJgjJmlI
TPZTqEuPmAEfEnNUS+omiutqVfM7CiV9yqCtNXQLVfM7QmKOmKQhMdlPoS4N
z/XD+X+q+eH8PwAndGnYyElUynnKoDV0AV5crS4dcsErJOaISVrrU3azkGqO
mKTGbSchMUdM0pCY7KdWhw8Z8CExR0zSWp+ym4VUc8QkNW47CYk5YpKGxGQ/
IR0ensinjIqMW4CudHjYm08ZFRm3AF3V6vAhF7xCYo6YpLU+ZTcLqeaISWrc
dhISc8QkDYnJfmp1+JABHxJzdEyavEBKv2peUjrp2YFn3LYXEnPEJA2JyX6e
0sy/tK+5l8fHBHgp2/uhzgnw4t7f39/e3qZGPf06vf7Sn31Ke3/85N9eDAi3
vSVqngAv7s+fP9O0f/r16PVGtXp7yAWvkJgjJqmYzdRNun1KnzP5r1vNLwmJ
OWKShsTkil+/fq3P+U+vp3e2//Fa7T1kwIfEHDFJxWymdNLtPb/W3uFmpau5
XUjMEZM0JCZXvL29HQ6H5bfT6+md7X88pMMDAEAPpxP4L03pzf8BAKCQqPl/
yAWvkJgjJqmYzYQkFbOTkJgjJmlITK74/vz/rH8+zN/zOq/naK+zPTu9ftn/
/3d/vYzVF9menV4bt81eG7edXoeM2znm62zPfq+N21d+zR198/5/AACgkKP1
f37//v2l9X8AAIBC5hP+6/X/15cDAACAZuZp/4+Pn//7pR/+BQAAAAAAAAAV
uTO2GQUF4OlCdkYhMUdM0pCY7+/vP3/+fPZW7C6kmkNBAXgBITujkJgjJmlI
zMkUs/1UKqeaQ0EBeAEJO6MRE3PEJA2JOT5+UM40m5rXynj2tuwlp5pDQaGp
acxPH+3fv39bzogSEnZGIybmiEkaEnP8XSi79xJ5OdUcCgodzaN9mvxPI396
0fjHmYUc5iTETNgZjZiYIyZpSMzxd7cyT6ievS17yanmUFDo6Gi0T/P/lrfA
hRzmRMXsvTMaMTFHTNL//Oc///Vf/9U+5lTN+fzDPKHqGjakmkNBoaPpE306
258mjdOH/Qlbs6eQw5yEmCE7o5CYIynplG6aYyTEXLpQ47Ah1RwKCvW9f1i/
Mw/1o2+b3+z0IEzXw5yjgnaNeSRnZ5QQc2Qk/fNh+XiGxJz1CxtSzaGg0MXZ
UT2N+dP54fRm3Vvgcg5zjgraNeYic2c06xdzhCWdQq2ThsScNQsbUs2hoF0C
wjg3qi+9U3fGGHKYMzsK2zXmLHZnNGsWcyQlHX9DrT+eITHX79fdrRwJqeZQ
0HYFJdmlCf+vX7/m03ENxnzCYc5iHa1xzFnszmj9fpuYIynpCPh4zi5NnNrH
bFnNoaC9YhLu7DifdsHzubjqk/9ZwmHO4vQQoFPMeXAuK5p23RmFxBwxSY9i
Lm+e9qWHb9o9bYxZXUg1h4K2Kygc/r0sfL+P86mEw5zF0SFAm5jzIcz8FPPb
3xVN+43ekJgjJunZmLNOYcXsFHPEJA2JCePCsvAJ47xrxsO5H/LVMuzbv1c0
Xe4VaRY2JOaISXop5qzNfQVijkYxR0zSkJgwLi8L32yfGzIrPns0N2sW9vDv
FY2myKdLNDTo0iExR0zS6zGX73ngFu1CzPX3PHCL9hKSNCQmjM+WhW+zz82Z
FV86mpu1Kej4d6Ned+kp/nKn01M27L5CYo6YpJ/G7EHMTjFHTNKQmDBOjnbX
b8572x773JBZ8fWjuVndmFOQqQP/+fiBsPM784qmR6dopt+uj+/KCYk5YpKK
KWZFIUlDYsJZvZeFH91nxWufHs1V9/bhz79/IOw68vxO9aEbEnPEJBVz/Y6Y
VYQkDYkJs+mAd5kQnt4A02nGOAJmxWNV0MZHc0tbvr5w62n8WkJijpikYopZ
UUjSkJgwVj9V8/fJI+2dloWfJcyKjwra+2ju8OF0fM7XansUdMTEHDFJxRSz
opCkITEJd+Uy1qHRsvAjZlZ8tqBdj+YWZ3t1A4ePJaquXJjrqmvSkIKK2UxI
0pCYMJufall+++fjkfZ+x7Y5s+JLBe10NHfUpZc3lwpOrxuM4eWI9cePH0vJ
+sUcCipmQSExR0zSkJiwWB56/fPxSOw81HvMhNcSZsWz9gU926VnywFdj7zL
EevRaahmMRVUzIpCYo6YpCExYTGP7XnnO43w+RTcvEd+8pbdVftZ8aJ9QS91
6dl8Jrn6WZr5gtTpgrTrXVKDmDMFHWKWEhJzxCQNiUmyw4U72+erWuuv/jm3
PGZp7WfFa50K+v5hfv1pl65rHXOcW25udAmroEdvlg4r5tGbpWOOmKQhMWHx
tm3Fqq7Dvuus+FOlC3r4sLzu2qXXMZd3zp4Mrx5WQT99sxAxP32zlpCkITFh
Md/3cuUQYLk3JmFh29If7Y0b36agf/7+pPXeXfrPv3+g/KWwnZIqaIOCirl+
s3rMEZM0JCaMj5PG8zMsl2aDh3OrcPTTY1a8ZY7UpqDrsI279Gm0NjPhIwr6
tG3agZhP26Z9hCQNiQnj79iefy099f2mlrPi9j6dMfaQs0tqWdApyHyO5e1j
wZDRtKBirr+neszxkWI+J9Y7aUhMOGte5bLxIUCbuf1GUc2q5Yzx1KVdUr9R
3aygRxGWNceaFVTMTjHHuaSXPpKlk4bEhEumQT4/8dryEODKQuKNNZg4rV3v
uqczxpZd+uwu6Wlb8w3vH658Q6eCLlPE2Rxn/bpBQYeYvWKOc0nnc+OjV9KQ
mHD4cPb9aW48f6nfIcDb1YXEe5gvcExVW69F3Cnvp2PyaMb4kI16gh413ZKi
TUHfThYTXr/To6BDzA9tYo6PuwLWv532LPNUudnONCQmTCN5muef/Zm205vL
/Goe8w1+qkXjhcTX5gscU/neP3542XL6YjTKu+XR7OonijfqEXP7IUD1pNPQ
PYpwNOUQs5CQmOPfSedQ870x06/ruwWqJw2JCcvwnm+GWR8ILLcAdXLou5D4
2tHB2tK4Zj3a1/tnq1TNqsc8bHtQpXrM2cZDgAdtzQMdfTwvXZatTsxO1p/T
ZYfSL2lITDIt+9zpxTSVWq4IzOeQ+43zs3OMTocAZ39a2ek9jQ/col0sRzHN
bk5bC3xQpdMncaPDyQ3GLcezmI1NkRvsUz4VEpP25tOnZx9sn2Ydy4FAj941
H9pcv4Xv0GIh8fHvB9CO3mzWu9qvUvUW8KDKqaiw42+/Hd2ni2J2dXaP009I
THpb+tJ8ovjSYmXj5MfeFTWfRJ1PgL9dXs63gSnpPMNfP7uxmK/pPHyjdtR4
laqQB1VG9wfVtxxxzzPGfmP4SPWYny5RNase86vqflQ3FnRWNyYsTofx+pa2
liP86Gb4pS13yrvcKNJy6elLN9Ae+q5Sdch4UKX9g+pbxmSPnzP+qeoxNw7I
6jG3+/mh7od0Y0Grx4TZ2QE/7XOX6XGPfe5YnXY7umY39eR+T8KOk2OcsXqy
ez6TXLqsb2GrVM0u3aVWupRH3ro/qL5xKpgwXRz1Y2789FWPuV3pz+bYXNDq
MeHSHT7TzOptdat/g33u+JhIzC/W8//15H+5tal60vER4exKTYe/D3SfnTkX
shzLtF+l6pD0oErCg+pWqTr6tkdszZ62zBh7xNxS0AaanVGBs44ur4/VtGr8
nUMuhwCP37z7Wj+nP+c6OvM//fbo/0ZdR9c41u8/elPubXlKfenSh76rVOU8
qDI7O257nH9YLHEanxNOW6Wq8UdypqDQzNEgP90lXTqNXNF6/n96K3WzG0XG
hQd+zx4UVLGMz+Up9aMB3G+VqreAB1VmUQ+qW6Wqn95JFRT6WZ9EPd0ZHVYL
F1c3TxeX3y5XOpab4ZvtiE/b16WLAiWcxplPol66h61u3z6EPajS+0H1s6xS
Vd2h9RJVawraLCmsLSfDTyf/nXa7Rx/t5c35Wf5OZxcXyzHO9KL0A79n+/Dy
lHqzLh31oMpo/aD6fHx69n2rVNXVfomqNQXtlBROXTrn1mnYT1laTvKvO3zc
Gz8f4xSt5qUz/Oun1DsN17QHVRo/qP5mlaqrbxb11n2JqiMK2qygcGT9ca5+
SmqePLx/+PPX8tzo/NtLp+Z4NW/bnlJv06WjHlQ5usdp/f6jN2UHy0C1StXo
skpVwhJVQ0HbFRSuWz7jpSf/4yPIPOGfzX1snkf9XDl711Mth4A12Y52PacH
p8s55B7/H9IeVOn3oPqwSlWv88NrZ49Y25x8mClos4LCFtXP/F9xdETfQM6a
bOtJ1On4PDR6Sn3kPahyOq+4dFGghGWIWqWq2YwxZ4kqBR29CgobdT3mna8C
PHsr7uktaU225U6Y3k+pj8gHVZZrHId2D6q/WaWq/sczYYkqBW1WUGDR6anJ
kDXZjlzq0nVTHzyo8teh6YPqVqlqMHrf+i5RtVDQZgUFFvO06tlbcR/LyfDT
N3t3rXXGBveqHWIeVGnv0hl+q1RVd2i9RNVCQZsVFFh0mv+PgDXZLlkydp0S
93tQZQQ8qP5mlaqmq1Qd3Q+zfv/Rm7InBW1WUGAx9a7q8/9DzJps1zU4839F
vwdVEh5UP/owng7Rg1Wqymq5RNURBW1WUGBR+mm7EbYm26d6TKLOanOdffGW
8aD6ku7s8enBKlVlnY7bS+eQ61LQZgUF2njLWJONTjeqpT2ovtw4YZWqZpbz
4YfiS1RdoqDNCgqUdkhak41Zp/n/6Y3EI+MQwCpV/RzqL1E1U9BZm4IC/USt
ycaswYMqa5eeUik9Jb5una7BsyoHq1T1oqAALy5nTTYW1R9UGR5Ut0pVQYfu
S1Rdp6AAryNnTTba8KD6rMGZ/yuarVKVsETVdQoK8Dqi1mSjBw+qLxqfe2x2
5TFkiaorFBTgdUStyUZdHlRP0+Yp9bQlqi5RUIDXkbYmG0V5UD1Nm+li4BJV
ZykowFNYk426PKieptMqVYFLVJ1SUICnsCYbdXlQPU31VaosUXVEQQFeR781
2WjJg+oUYomqZhQUaKbZmmx05UF1CrFEVTMKCjTjrmlK8KA6L84SVc0oKNBY
mzUZaMOD6lRkiapmFBRozPyfV+NBdSqyRFUzCgo01mlNNhrzoDovzhJVzSgo
0Fj1NdkI4UF1XpwlqppRUAB4LpfaeXGWqGpGQQHguTyowouzRFUzCgoAz2X+
z+uwRFUzCgoAL8iD6rwOS1Q1o6AA8II8qM6Ls0RVMwoKAMAVlqhqRkEBALjC
ElXNKCgAAFd4RL0ZBQUA4ArTxWYUFACAKyxR1YyCAgBwhSWqmlFQAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAA4OkOh8Pb29uPHz+m1/OvT/HEfxoAAF7W+/v7
z58/f3yY5u2/fv2aJvDf+Qunv+fPnz/32bgvmoI85d8FAIASptn+NGeep+vT
tH968fv37+ko4DsT+CeeeJ+2/Fn/NAAAvLj39/ezE+bfH9bfM18amF4v3zMf
I8xfmo4g5ksG0zs/VsbJscDyt81/ZPnq0betf7v+h+Z3pj84HbYsWzW9Xv7U
bH7n0j+9JQgAAPQzTXfXM+FT85x5uTqwvi6wni1PBwvrG2/WE+/16/XftszG
T7/t9G84uiVp3uz5nflYYH0I8Ok/vT0IAAB0Mk2Dr5/uXm4Nmk2vl+nx+ib/
9Zn8cXkSfvS3TXPyjfP/6zcjzfP5L/3TG4MAAEAnn851p29YHyBsvGPn0uuj
w40b/rYr2/npZtzwTwMAQCefnv8/nQx/Z/7//b9tMT+kPN9BtDxrcPd/GgAA
Ovn0/v/TM/Zn77QZN83/bz7//+vXr2n+f/hw9D3bLz1sCQIAAJ3M696cXgKY
ZtfzE7XXb5tf/5Eb7v+f/pX1vH3ZjHkRobN/w9l31t9/2/3/V/5yAADo5Gi1
/6P1/9fL5swHC8v1ghvm//MPGpvn+Ufr/0zvzyuOTl+dfxjZ2b9htmzG9M3z
37kcxRwt7LP+p28IAgAA/Vz/+b+Xls2/Yf4/Lq//v0z7l9X4L/0N4+/Z+/XW
LpcS5j87//GN6/+b/wMAwB6OlvFc34QPAAA0M9/ks/zcrk+fPgYAAOqaf1bv
fBPO9OL6T/UCAAAAAAAAAAAAAAAAAAAAAAAASPP/ANAQlh0NCmVuZHN0cmVh
bQ0KZW5kb2JqDQo5NiAwIG9iag0KPDwvVHlwZS9QYWdlL1BhcmVudCAyIDAg
Ui9SZXNvdXJjZXM8PC9FeHRHU3RhdGU8PC9HUzUgNSAwIFIvR1MxMCAxMCAw
IFI+Pi9YT2JqZWN0PDwvSW1hZ2UxOSAxOSAwIFI+Pi9Gb250PDwvRjEgOCAw
IFIvRjIgMTUgMCBSL0YzIDIzIDAgUi9GNCAyOCAwIFI+Pi9Qcm9jU2V0Wy9Q
REYvVGV4dC9JbWFnZUIvSW1hZ2VDL0ltYWdlSV0gPj4vTWVkaWFCb3hbIDAg
MCA5NjAgNTQwXSAvQ29udGVudHMgOTcgMCBSL0dyb3VwPDwvVHlwZS9Hcm91
cC9TL1RyYW5zcGFyZW5jeS9DUy9EZXZpY2VSR0I+Pi9UYWJzL1MvU3RydWN0
UGFyZW50cyAyNT4+DQplbmRvYmoNCjk3IDAgb2JqDQo8PC9GaWx0ZXIvRmxh
dGVEZWNvZGUvTGVuZ3RoIDExMzg+Pg0Kc3RyZWFtDQp4nLVXzW7jNhC+G/A7
8EguIJq/ogQEARonDVI0h9242AUWPaiO4hi15dR2ms0j7Vt2Zij5L+46WMsX
iuQMyeH3DWdGvV/my/FDMVyyi9s++6fbUUxJpZQ2RgWWp4p5p9i87HY+f2BV
t9O7vvNstOh2NButlFWqlfVb2g8fup2P3Q67gl17u2dkNsjgmQ7SeBZSCV2P
E+tjaBJ2rwVbC4ZTMONmWoxKnbPLGWuOYb27p6JiZ2e92/7NJVO934tqxHhZ
JX/cifNzdnEZL0gWa2cVnvD2hhcD2P5XzXIZ4MjBA16VLGHO5BJA0UbmYMZg
ivcfESRaESaKXXc7X/l3kVjDmXAZ7wur+UzonD9h8wqSlM+FSflYJIGPcPIR
m6VITAZrEp1pbnBGYbPuoUh5/kVoq+LiCTbUq1Dhm/iTDX7rdq4GP0D+ALtK
ZllKt50Tu95aRBwV04agTWZ3INdHQW6YNdJuIe6NzDxzmZfWRsClciG6XuwR
4P2ZyAGEwIeTZ+H5YjyDFseLPZjs2GyOstkynUtv/B6rbR6kDrXVW7CuRp/Q
+jM4JZwftNMe6c7GSbVjZwC4d+zchy64nOKlMA4gTVJ0ROt4vxAG8H7EGZLV
0zOcnggLTg+Tc3Ra8FEbl45qxTxE8cMDLApxfVR9B2HuKCAcRZSdhx0UEZYC
EPZdhGVXhwnzxxKmpNmxM8tkFnYM3cfYLWAZ+PMQPil/ZCJ3fDJ7EQZonDOa
LL8JD8BHjeclfcazigmfYSiC1eMpBpVyQSKYB7XqHojEHQwShUpRdV5rvYO8
9GTk2UymrXEXTsfdhp0/R90NaXyi9mNUKCKBZYXLPGYZkIHItsJZdqoIaXIH
MLUWIfNTRcgtO/eRdg3Juw5gFMsKbJaTV0z+QFrqKQROSeFpHewoBv6LSrRq
ESPjZYkhdAmtrvWm21EUO4s4x7bZO+6yTuk3rLy9Latde/iVJ0mrxxuPUe0g
2NMGZ484Q7Z/FolHpPI4uSEnuJaIK1RdlKpoBUBuogIinnLMQjaKaBt4LFmT
wzx/KXFYC1CRlq+1kY5iddqwPPyg9HGl6Q9elPY5ftp6Ufq4gi7SvO9Fbdn5
PzWHXnHom+JCuIg0lh1+xWAtIbImTaepPFzcYHSUp25fAT3Um8N3KLHMpxIn
jf3hcgy+4+IALX0V9J+QpG7lvym/x4Z8ekiRAN03tXwJd86iBoPW7uyMWgav
3rgzOHHOh6sqrT41HraCZUk70dlxFSmtbalqMw57ysnKaK0dpPz2XPpkdfSW
ofv84Qrr6KqOQo7/hQ1GmXJdFd9jl8ZPjZSSBGWS6TrB1IENKceiAOJTrKfp
MTD0fbuRiSZthmmbAi328G1bzQ02aKmyw4dCbWOxck3C5k9JsYLsfj1J41mU
tGipV7nM3+EMrcLjdSbN4TPXObKIsbJNE3yQ5h02tHvv1EsXfsotoCZ7oX/V
mCj+nlDoJE+53yjGZju/vUXjQHwxrjCq0i/thAJ13PVONJVdf0/Y/A/mAgR2
DQplbmRzdHJlYW0NCmVuZG9iag0KOTggMCBvYmoNCjw8L1R5cGUvUGFnZS9Q
YXJlbnQgMiAwIFIvUmVzb3VyY2VzPDwvRXh0R1N0YXRlPDwvR1M1IDUgMCBS
L0dTMTAgMTAgMCBSPj4vWE9iamVjdDw8L0ltYWdlMTkgMTkgMCBSPj4vRm9u
dDw8L0YxIDggMCBSL0YyIDE1IDAgUi9GMyAyMyAwIFIvRjQgMjggMCBSL0Y1
IDM1IDAgUj4+L1Byb2NTZXRbL1BERi9UZXh0L0ltYWdlQi9JbWFnZUMvSW1h
Z2VJXSA+Pi9Bbm5vdHNbIDEwMCAwIFJdIC9NZWRpYUJveFsgMCAwIDk2MCA1
NDBdIC9Db250ZW50cyA5OSAwIFIvR3JvdXA8PC9UeXBlL0dyb3VwL1MvVHJh
bnNwYXJlbmN5L0NTL0RldmljZVJHQj4+L1RhYnMvUy9TdHJ1Y3RQYXJlbnRz
IDI2Pj4NCmVuZG9iag0KOTkgMCBvYmoNCjw8L0ZpbHRlci9GbGF0ZURlY29k
ZS9MZW5ndGggMTQwNz4+DQpzdHJlYW0NCnictVhtT+M4EP5eqf/BH53V1fVL
nBeEkIByK1Yg9payt9LpPgQIJTpIumm7t/yk+5c3M05Lmw2kIuVDXdsZ2888
M5kZZ3hYzrO75GbOjs6P2fd+TzIppJRKaxmyOJDM+pKVab/35weW93vDj5eW
TWb9nmKTlbAMlDR2Q/ruQ7/3R7/HTmDXYf2MyIQitEyFQlsWBgK6Fieej6FJ
2L16sLHg5hFgnD4mk1TFbFSw5TFseDlNcra/Pzw/Ph0xOTxL8gnjaT64uvQO
DtjRyClIiJVvJJ7wq4ZHY9j+d8ViEcKR4ztUlZAwX8cCSFFaxABj/Ij6T4gS
JYkTyT72e3/x/7yB0Zx5fsSPPaN44amYT7F5gicBLz0d8MwbhHyCk/fYzL2B
jmDNQEWKa5yR2Dz38JG0/JunjHSLH7ChXo4CP72/2fhTv3cyfoX5FutKEUUB
aVuSda0xyDgKBksDrVu2RrnqRLlmRguzwbjVIrLMj6wwxhEupB8613M9IvzS
G1hgMOLJ3Av5An6zBjJqYHUnsIapWFhtG+CaOBQqrOBu8LkafUHY+3BKeNCK
03T0Y+0LWcMZAs81nE20HnpKgpcZ+rGppxVPPO3z+Q04K7jtIOApjmfgm0EA
bg79HGdRPoNfvhJBCVut3mu3jd9JZ5+iRu3lDSXZJgCdzVa2iU7abWO72kYK
XcMZRSIKa0CligGbMAEIiaDCW5sk2Pwe4ogKMJqokE9nNNijwRBjxJC6E89E
PHMy9wvPxPxakOQNyhSPnpZO/BsJPmT5T8+G1WLogk1zXGD5BHZpizqN8FFL
0NEKpRmoqDVou5p46PewZ23ThBEBTayWLCeqLZfDexepmqwW7N5qJoBoENWs
1vBKAXsWGYU8wPNaxO6GwIe0ZLZA4KxYpg9p4sGrS6N0p0AgWkNYaQUy2Omh
sYKk3H6olrCYdFbtUSh8twyhDXrLrjJE9G4ZYh1nE51jrHEuMBuMLtr5jN8r
qusYcO4uqquupePLYX0DaROjV1QrztaieJkmEJE1z/JJO8WqWwn2GseB3R3B
3WovItg00rsC2cTtWZZDyFtADHaVdshHxHNB/EqGBU5egIgjnmGmU3uU6BTD
RZQZkylITFNobn+jZySXuQyaiuepz5hZv2IDh1kQL7MfeFBaonl9J+QsvaA9
8eiyKaHW6etWEvp4g6kbOYohbwKBcNGKX+FwWwN3K+BUkxsqGYCNWxHyM7JA
Ru0/njaQ3bALNanG+1dVjKKNsWR11oLuNd7U0uUYsnSZkmlonZtPqJ3RHm7m
FhfRcnde7sZvTWwNWmMcaVX5s0MDKkUVSEBNt0RQgDAtsHl7vdEAzPi+iEw7
Nk2+Lql1fUWtQNZU9SK8DZdtxBVHFK7aHflIHeyQD18pEWzBx79eXDkLeRY1
dLdX9KggRkpwXFuFDTcDVjTO05LnMbqzXkYXnMhWHqqdg5fFFuGk2y2muc7x
sX5QULRH26WNbeoc1blwbyh0DCLcAPpCUAnoSvuIpqLePMF8Mc8KNBXddLf4
6KC61ZR+9T3s1/SsDGiwuwTduaR8sQJaB9rE9DHl3iKfuzA+WRTA9cKlSebF
aAGokFJKxUX5VM1DJs3TFCRvZ88zLo0XDC+v1yml95RustNiRruntzSZLNfA
xpdfqH94Tn/usnRetfD4FJsLwAHvaDrJMGPntP/6WV/x2uwWbeMS71YWKxmC
FXbmFPr9yuINpI1f+Jw9HKlX7nsoVl2z50qtTL8v8LtTWVk1u3Ni7uMqfupw
LrBhndXq++QH+QejEi9/qgoBWDxa84HD3V6UlfB1u+67vSgD43A7bz30hvRN
pglQev2QuioW3r7blHjK3POU/L16fxyb2SSn97DB8f8HJAEHvw0KZW5kc3Ry
ZWFtDQplbmRvYmoNCjEwMCAwIG9iag0KPDwvU3VidHlwZS9MaW5rL1JlY3Rb
IDcxLjMgMzYyLjc1IDM2Ni4yOCAzODIuMjhdIC9CUzw8L1cgMD4+L0YgNC9B
PDwvVHlwZS9BY3Rpb24vUy9VUkkvVVJJKGh0dHBzOi8vZ2l0aHViLmNvbS9Y
aWxpbngveGVuLmdpdCkgPj4vU3RydWN0UGFyZW50IDI3Pj4NCmVuZG9iag0K
MTAxIDAgb2JqDQo8PC9UeXBlL1BhZ2UvUGFyZW50IDIgMCBSL1Jlc291cmNl
czw8L0V4dEdTdGF0ZTw8L0dTNSA1IDAgUi9HUzEwIDEwIDAgUj4+L1hPYmpl
Y3Q8PC9JbWFnZTE5IDE5IDAgUi9JbWFnZTEwMyAxMDMgMCBSL0ltYWdlMTA1
IDEwNSAwIFIvSW1hZ2UxMDcgMTA3IDAgUi9JbWFnZTEwOSAxMDkgMCBSPj4v
Rm9udDw8L0YxIDggMCBSL0YyIDE1IDAgUj4+L1Byb2NTZXRbL1BERi9UZXh0
L0ltYWdlQi9JbWFnZUMvSW1hZ2VJXSA+Pi9NZWRpYUJveFsgMCAwIDk2MCA1
NDBdIC9Db250ZW50cyAxMDIgMCBSL0dyb3VwPDwvVHlwZS9Hcm91cC9TL1Ry
YW5zcGFyZW5jeS9DUy9EZXZpY2VSR0I+Pi9UYWJzL1MvU3RydWN0UGFyZW50
cyAyOD4+DQplbmRvYmoNCjEwMiAwIG9iag0KPDwvRmlsdGVyL0ZsYXRlRGVj
b2RlL0xlbmd0aCAxMDAzPj4NCnN0cmVhbQ0KeJy9V1trWzkQfjf4P+hRp2BZ
M6NrKYWN3S1dGtglXrZQ+mCC4wR86TpZ2P6k/Zc7I53E8SV2IE5fDjpzJM03
33wjzen/srq7uRpf3qmz84H6u9uxyhprLSDaqHKwyjurVpNu5683atHt9D9e
eDW97XZATR8m2wCW/Mbsqzfdzh/djvrAu/a3fSSKJnoF0aBXMRgeejGs3RQj
795+2FhwOWcYn+bj6QSyGi7VvRvVv/g+Xqh37/rng09DZfufx4up0pNF78+L
5v17dTasARbE4MiKh90Iz0a8/a+gsonscnQloRYkymE2TAqgyQxjNJf4p4US
sIUTqz52O1/1f02PUKvGJT1oCPSygay/y+MHfwl61WDQN00v6qkYr+Vx1/Qw
8ZoeJNAoFiuP9Ug+Wa+/NEC2Lp7Jo4wWMuHf5psa/dbtfBgdYP5Idq1JKZRo
VyW7nkgYl4nhPkGPM7tFObyIclSEhjYY92iSVy55Q1QJN9bFKr06KoR/aXqe
nTaBWULSg/HldRP1hF9AD5ZN1rMlv69k1s2iEdqjftukOns4mfPrcg97qv/7
Q2i4jsanbIAKwsjAii5B2CFHzN9jfVo6IFB6oUAhGYtbCvXWBEXMl68CLVQ9
sORITxrwrJd9wW6Ac68BLgi4QCamHXBfWd4oSnf625FU+DUaoIdUIIuHhwFL
KsCylONGKvyBVITTRxs4FRwnOjQOd8I9GzfAB0HJxnwi47tCwFgMs00CXoYj
Mi/+SRzqlK5CsMaT4rPFhF35fZbQSnw11FaJPT4LL3+cFgeHLBrIScpxG8d5
41rnBcztPwzBb6Sigqoob4+XSnwF8SSQCoYY5cLZXytRAB+rlfSoVjJt1YpD
lNN9T63EA7WSX+FkcM7wKiSu3d1wf16tePRy3zyB46Qa9ewDnvLEEgWRqNNz
7h1Ir05bH46VIEcCdy3bni8qtavi/PYZ4oeXtll78fG1T/wlGdw9sqr6QQCW
60K17zlV47GSADhUE+1VvqcmDvWagKdnAbkoMpbTdPcQG4r2l6Ui7DOS9Aqt
huDKfMZyS3wwRzU9uB7SeujWQ78ehmdl0bVRrDtC6SwsAwMn3SIjcsAGKgYX
1aw1MKUcTi4GCtzL52JgwbHhWibxxc02m00OZRt0BiNPKi3wrJ3BxwSScaFd
dbUP432nQgGM4/aQf19AdiQ+Z1hPZJ1clIIDk/HABhYfVWBOEBFrAHPrgrCI
lRgY22QbyPyXhJl3cWURd+vshqXr8RCs0MIK0t1DxYWyYQjZJFdxFRghBOOo
4irv/AfE3BRYqXURpGJShRXLLtwVM99rXCGU20yA1Tw8AvY/HX3szg0KZW5k
c3RyZWFtDQplbmRvYmoNCjEwMyAwIG9iag0KPDwvVHlwZS9YT2JqZWN0L1N1
YnR5cGUvSW1hZ2UvV2lkdGggNzg2L0hlaWdodCAxMDEvQ29sb3JTcGFjZS9E
ZXZpY2VSR0IvQml0c1BlckNvbXBvbmVudCA4L0ludGVycG9sYXRlIGZhbHNl
L1NNYXNrIDEwNCAwIFIvRmlsdGVyL0ZsYXRlRGVjb2RlL0xlbmd0aCAyNTk5
Pj4NCnN0cmVhbQ0KeJzt3V9s1eUdx/HaVsA/FSjFBYViW0p35ya0CJEtAzos
bYFSoCaLGIvLCoNFFPwTMwUpLYWGi03NWJwCQ4mRliwDOtmS3TDjtmiyG6MT
JNv9Mv6YXe/0D6c95zy/5/d9fv+e3+/83k9ed5Bff8/3+32e87k4aUtKWCwW
i8VisVgsFovFYrFYrCDXtL7vl51uc1J+qtWykx6Vvd8eIueK+ZeI8vrqy3tt
7gIv7G9lEtpHB9Jqy+VtM9inxcd7baVn2mPI5V5KYqkdlL7fHr2AD0ueyD9K
ysK5hUIc7/CK77OSzzdOTU3T9zSWvf34HX/YEpGLmwPw0RZ3/l91RGKzTmRV
jazyhUJ6W1HxBS3wLKRyyWsoGfKwj0BCjQ+G9dcwfeHAeXyZcA6U9dEN40qx
PjlTJeKDNYkfqcd+UNpQmZ+aDj5WenbDtL9sm+JJoekfPzXt421S4sfGSmaP
xST6vljYY84wF704dsp2TZIu6g7a3m9KTGnW5TG++2h7R0Wu/FRbSUuNMjWV
HF9T8ecnF3y1N3rf+vxnctVX9ikpn/zgP58z8sCXewpZqUkMKy9shKYdOU35
Uk3Zgqx5XzzrxM9eQiJvhL6YHoqcNf+r5yUWXNnrgfJRZofOYQy8jUf11X0S
nrfmebP6147/bWPtlvAkceW13rKQPlKLoP4zR35U0vMdx9T0qzWlZ9oe+Mfu
xptH4erh/xySa7o1qKR88pIbA0YeuX64kPX6xIpRs4S903TQWx/1DS2+zvpp
immbhC3z3zsPDQ2krcEWU87POy+9ccSbJdcHjDTeOjqu6ZtBHfEI5dM+LZrT
FOzERkxyQDK++9/+DKf2ZbuctfTmESX5O1R/urtk/4qJ1PTtOU6pqexiZ/UX
zzXeOJJn+f+OyS29PqBU+NjGm2pNmQlXWXZrsJDisdAy6qa8v7pGu3XctfX6
GWAYwmi0/0kwGAzzUTGdHKNBKrK5CnsSln0zGJ5sAlly/XCwlt4YyBNlUwp/
+ijBwTE9d3Jhz0kYQupO3ed7S95YLUxN5Ze2zv2sp/bqC4nW8K9X5Gqv7FOq
u/qCyouFFn39klL9NQXrxUkto6mQz4nbwGTHRv+vLuqvvawhmUZvJO/mlaYg
frk2y7OGf78SPdfZrvv6RSeLrr2UofsP2gHQD571Q51aBsMjv69MxqOIh2He
ZzvvONUykZp2uqamzZnUdOcft957edusT7qtqPz7j8Mz+2/PhOWv231xeGyl
6smO1cv8k6nw+jj28mHQdCHU4cmwdSjCU/XpT0I185NuI0bTG9QpC2ScrLcy
hsKeH7/j4aP71mubFP57bdBZcR81L1xx+amys+s9pKY7/9QFAACQHuUjm0lN
AAAArpSpqayB1AQAAJBDlpqaSE0AACDlSE0AAAASpCYAAACJ8pEtpCYAAABX
pCYAAAAJUhMAAICEcWq60ElqAgAAKWTwbfDjpCYAAJBe6tS0uJLUBAAAMBWp
CQAAQMI4NZ0nNQEAgDQiNQEAAEiQmgAAACTyU1MPqQkAAECh/EKnKDX1rSQ1
AQCANFOkpuaFpCYAAIA8pCYAAACJ8osF32siNQEAABTISU2vLndPTfyWSwAA
kEqkJgAAAAlpaur/HqkJAACkGakJAABAgtQEAAAgYZyaLpKaAABAGuX8RRVS
EwAAgANSEwAAgEROavr5o6QmAAAApUxqKh0iNQEAALhQpKbVzqnpA1ITAABI
KVITAACAxFhq2kBqAgAA0MtJTftXkJoAAACUDFNTO6kJAACkE6kJAABAIufb
4M6pqbx3JakJAACkWU5qOjCWmtbVkJoAAADykJoAAAAkRv+iSvZ7TdnUVE9q
AgAAyEFqAgAAkCA1AQAASJCaAAAAJEa/Df5hwbfBC1JT2cHHRlPTGX43OAAA
SClFamqtJTUBAADkITUBAABI5KSm/aQmAAAANVITAACABKkJAABAYjQ1nSU1
AQAAuBCmpnJSEwAASDdSEwAAgASpCQAAQGL0L6qQmgAAANyQmgAAACQmU9Mv
V5GaAAAAnAhTU1nvSlITAABIM0VqaqkhNQEAAOQhNQEAAEjcTk3rpqam0gZS
EwAAQA5SEwAAgASpCQAAQILUBAAAIDH5bfBfkJoAAAAcSVMTv+USAACkm0Fq
+nUzqQkAAKQWqQkAAECC1AQAACAxmZreXE1qAgAAcDKRmk48TmoCAADQIDUB
AABIkJoAAAAkJlLTyez3mh4mNQEAABQiNQEAAEiQmgAAACRITQAAABKkJgAA
AAlRanqW1AQAANIuPzXtUP3mgfHUdHwNqQkAAKSWLDU1kpoAAEDK5f8dOnFq
mnGpa8ZHFky/lFQ+N36XMyuNMHDJjGanCdi+0WbtvafdYQ63yNZnIAkNtdAg
2yVKlkibSKeMWjOydSI1vWGQmu650HXf75Ot4rxaxD8uyneIT5GtbDz+pTYt
lx++XvV8Ltt1C9h5LduvF9ORiGpHVl7GetOti6w1SSn+Xec6jVLTfb/rmjP0
RJ7K4S6lOUNy+c/UcPpxqhcweCwwTj5gnsbM6Fww2L5aE2jdzBonbGVMeuqz
sJav4szzQ1A19MQ4u60x5HdKbYl20ozfJ+8J95zpEKamitMdVe90zD29pehV
/aYjau9sUgv2aePe3VR1otPRu5s80jwz4+2N3oVRBNcSGZp74raTnR5kTpZ/
dk5BcPWcrKFehCWNibCa6LVlnhtkvZJxE0w3xe2T98t6ZWLu7rdaHFPTnonU
dPex5lkHV8fN7L5mjVmH1jjqdab/oa+vcjJ7YK2zHzqxXsMo2uS8/TGauq3V
FHyU0w/V9LfXeSrG6CbKdiVNqmpc6smaC99BX2RBqadoVjuwyph+YFznp1dJ
sFPXq8OI8Cfmv4CA6X3ou7/6W3pSv3cuA5DiWyKqO8fk6pY3Qlx8K9WY8drK
kh7H1DT95RX3/rRp0k6tHc52LZuqYvejIpn/CYGcHgXB+o4s7t2L3PE2oDky
O7RnLcbdtN+OkJrloYOSVpr3NNldC7b+gXcqwGNo+IbSj0UH8SqaH5LDEtBR
0u1R++RpPY8oU9P9g63Vh9fHwfzeVqEFfW1S/e1C1QPrhRYe2Sg0b//awPmv
cxhvlZHddfXABj15U+YfajMhnZ8HX1834UCL3rxX13rxWsAyRZNPXSHXjigt
9KS6f32G7j+Ec3toj7b3DQb+MqK7qPCB8hvPw33Yp3KoTUh9shw8dLRDzmjk
hOS7m3+wVcj6R2ew17vsStF9RLoPuWBW9Xd4ZPWcvWtFXmq6/62Ni4a3Z9UN
dSvVDD3tTe257mRZPPyMBw1D3i2OPSt7qctMow3jB6He3KKhbiWnM5VVf3a7
hreB9G/qtVAE6s51O6nNXFPBqRkWieAqC+5QdBtwrrMpSbXHT9BDw09HL5pP
uprbe0wWjyWV8BpF9JS7yN4eM3ctL2GxWCwWi8VisVgsFovFYrECXf8H7BcD
fw0KZW5kc3RyZWFtDQplbmRvYmoNCjEwNCAwIG9iag0KPDwvVHlwZS9YT2Jq
ZWN0L1N1YnR5cGUvSW1hZ2UvV2lkdGggNzg2L0hlaWdodCAxMDEvQ29sb3JT
cGFjZS9EZXZpY2VHcmF5L01hdHRlWyAwIDAgMF0gL0JpdHNQZXJDb21wb25l
bnQgOC9JbnRlcnBvbGF0ZSBmYWxzZS9GaWx0ZXIvRmxhdGVEZWNvZGUvTGVu
Z3RoIDI1MD4+DQpzdHJlYW0NCnic7dMxAQAwDMCg+je9PT3y1AF4YAYALg9Y
RkAZAWUElBFQRkAZAWUElBFQRkAZAWUElBFQRkAZAWUElBFQRkAZAWUElBFQ
RkAZAWUElBFQRkAZAWUElBFQRkAZAWUElBFQRkAZAWUElBFQRkAZAWUElBFQ
RkAZAWUElBFQRkAZAWUElBFQRkAZAWUElBFQRkAZAWUElBFQRkAZAWUElBFQ
RkAZAWUElBFQRkAZAWUElBFQRkAZAWUElBFQRkAZAWUElBFQRkAZAWUElBFQ
RkAZAWUElBFQRkAZAWUElBFQRkAZAWUElBFQRkAZAWUElBFQAwCnD4j/NvwN
CmVuZHN0cmVhbQ0KZW5kb2JqDQoxMDUgMCBvYmoNCjw8L1R5cGUvWE9iamVj
dC9TdWJ0eXBlL0ltYWdlL1dpZHRoIDE4Ni9IZWlnaHQgMzEwL0NvbG9yU3Bh
Y2UvRGV2aWNlUkdCL0JpdHNQZXJDb21wb25lbnQgOC9JbnRlcnBvbGF0ZSBm
YWxzZS9TTWFzayAxMDYgMCBSL0ZpbHRlci9GbGF0ZURlY29kZS9MZW5ndGgg
MjAyMD4+DQpzdHJlYW0NCnic7d1rUxNXAIfxSBITFSuoQAMmEBICqIAXtBWr
Bgst6lSsyqVIpY546bRFx7Yz7ZtOpxdtZ/oJvNSvWnKhYXfPbv4HoaHuc+b3
kskmm+cFu3tyTiTCYDAYWzV2pq9EexZEsbdXU8/ifynac2u7cnzjTS0j62tJ
pIrR9OyO3nsNll2WqK+machH2NxPupUiBy80JdrdtaSmmnpuJwYfuewcWLGV
PPzIlve42A52pK5EmgeMtUS6rr8ztJIp/r59vDv28wZ0jz/zkyk+NTp0/jdb
Xed+NWr4Sdssu/oWI/vPBNTSlLnVefankzMvsBVO3Hxu673PXvs5Pf+30am5
V35GZ1/6cb3V/ce+irRP1q0l2ns3c+GX0ZkXRu8vvFacnHluNDr7QnFq7qXX
6flXLn5vEm+obfRJpPNarZZkR0Atsfz9tlM/Zi8++98pfPyXKHvxqVfvh888
/jDKTfzplZ90a/gJ2YCWkcc7MvNWtcTzD5qPPt438i0214HRH0TvDD/xMrzm
se+8Wo5/79V6wsD1arsGv4723F5Xy5hYS7zvYbzvS4RKLHePWiCiFujsa1mm
ltCiFuioBTpjLdFkwN05agkvaoGOWqDzqYX/W2BgXUuOWsKLWqCTaumkFpRQ
C3TUAh21QEct0FELdNa1ML8lxGJ5aoHKp5Z2aoEXtUBHLdBZ15KjlvCS5rdQ
C8qoBTpqgY5aoKMW6KgFulhumVogMtVSoBYYybVc5l4uqAU6aoHOdE1ELTCj
FuioBTpqgY5aoKMW6KgFOqWWJLWgjFqgc9YyQS0IQC3QUQt01AIdtUBHLdBR
C3TUAh21QLdaS5Orlj191AIju1q6qSXUqAU6aoGOWqAr17JELVA4aun4iFoQ
IJZbphaILGtZpJYwoxboPLWcoRb4MdTiWRtqtZZY6hK1oFzLbWqBwlFLe7WW
GLXAhFqgoxboTLX0e2uJUgsq685ll6gFCmqBTqkl0TlOLYhTC2w4aumgFgQx
1eK+gi7XMkUtKF9Bfy7XwvyWUKMW6By1lFYSMzxVpBZUUAt01AKd8zkRtSCI
ZS0L1BJm1AIdtUBHLdDJtVyiFlALdNQCHbVAZ6qln1pgpNVSpBbE3bVMUAsC
UAt0pZmW1AKNZ+V2aoGvdbVMUwuCWdbC/JZQoxboqrWk56gFdVELdNQCnVJL
klpQRi3QrdUSdE1Uq4Wd8sKNWqCr7mZFLRBQC3RyLezwC2Mt7B4OM2qBjlqg
M9Tiu5vVDe7OhRy1QEct0FELdNVaMtSC+tbtNU8tqKNWS9c1akEwrZZxakGc
WmCDWqCr1pKeLdVS2RWCWuCDWqCjFuioBTrLWtgpL9TWapmjFtRFLdBRC3Rr
MxaCaylSC+KGWsaoBX6oBbpaLZ3+taTW5vxTS7gZavHsCkEtqJBq6SzGquu3
UEuoOWpppxYEoRboqAU6aoFu3e+JfGtJUAvKSuvOZZfW1WLcV5FaUEIt0FEL
dNQCHbVARy3QUQt01AIdtUDnU0sHtcDLUUttfktALcvUElrUAp3jqSK1IBC1
QGdZyy1qCTNTLYPUAiOxlmhqilpgXUuOWsLLWEtsl3eveWoBtcACtUBHLdBR
C3RaLePUgrj512fUAjPrWpjfEmLUAh21QGdZywK1hBm1QEct0Jlrcf9ChFpQ
Qi3QUQt01AIdtUBHLdBRC3SGWvYaaolRC9y1TJbWWKAW+KAW6KgFOkMtzQOm
/3IvUQuoBTpqgY5aoKMW6ErrzlELNMZaPOvlUgtKqAU6aoGOWqCjFuictUyU
a+n37gpBLYg7apmmFgSjFuioBbpYbplaIKrWkp7TamFFjlCjFuioBTpqgY5a
oDPVUqAWGFELdNQCHbVARy3QOWop7QpBLfC1Vss8taAuaoGOWqBTaklSC8os
a1mkljBz1NJOLQhiqmXQW8va2lDUEmrUAh21QEct0FELdNQCnakW96/mqQUV
prtzxlq43wJqgQWllkStFp4ThRq1QGeqxX1NVJ6xMEUtoBbobGq5QS0hp9yd
oxZUUAt0lrWwNlSoVdedoxYInKsUUguCUAt01AKds5ZJakGAWi1dtf2gTc+J
qAXUAgvUAh21QEct0FELdNQCnVbLOLUgXnuqOEstqMuyFua3hJqhFtMOv9SC
uE8tTQnvftDUAmqBBWqBrlZLbcYCtcCMWqCzqyVDLaEm1ZIqUgvi1AIba7XM
UQvqohboqAU6sZYYtYBaYINaoKMW6KgFOmqBrlZLdcbCGLXAD7VARy3QUQt0
1AKdpxauieCLWqCjFuioBTpqgY5aoKMW6KgFOmqBjlqgW7fOP7WgDk8tPCeC
L2qBzqaW69QSctQCHbVARy3QUQt01ALdhmtJFB4m+7H5Vk+sl+EvCyZvcAjl
oIm++xuoJdn/YO/h8DkiaT6savwnspcs3NXu/Fdr2T1w/8Cw2f4hA/MfD3n4
vKZ4FPW4eGN7CktiLbsKd9qG74oOHl3yNfSFrbahO76G/ahvFVZ252br1pLI
zrTkr74FWgvXN6Al/4mvvqsm035ag1wzavhJc0mmpwJqiXVdbk5fqNibKW6i
f18WG7R6Dm2lz/tTj7uz46yxln35TzPHZxsodWR6c3WfmBdljs/VlR6Z0dwU
HRq+UVdjv5GK1uxFVy2rqeTPPdqwwvm3Vu/Zle0vO/aNrdwHKwFc329L93iE
wWAwtmz8A9eAjnwNCmVuZHN0cmVhbQ0KZW5kb2JqDQoxMDYgMCBvYmoNCjw8
L1R5cGUvWE9iamVjdC9TdWJ0eXBlL0ltYWdlL1dpZHRoIDE4Ni9IZWlnaHQg
MzEwL0NvbG9yU3BhY2UvRGV2aWNlR3JheS9NYXR0ZVsgMCAwIDBdIC9CaXRz
UGVyQ29tcG9uZW50IDgvSW50ZXJwb2xhdGUgZmFsc2UvRmlsdGVyL0ZsYXRl
RGVjb2RlL0xlbmd0aCAzMTY+Pg0Kc3RyZWFtDQp4nO3OAQkAAAjAMPuX1hYH
YUuwGXr7knnPvGfeM++Z98x75j3znnnPvGfeM++Z98x75j3znnnPvGfeM++Z
98x75j3znnnPvGfeM++Z98x75j3znnnPvGfeM++Z98x75j3znnnPvGfeM++Z
98x75j3znnnPvGfeM++Z98x75j3znnnPvGfeM++Z98x75j3znnnPvGfeM++Z
98x75j3znnnPvGfeM++Z98x75j3znnnPvGfeM++Z98x75j3znnnPvGfeM++Z
98x75j3znnnPvGfeM++Z98x75j3znnnPvGfeM++Z98x75j3znnnPvGfeM++Z
98x75j3znnnPvGfeM++Z98x75j3znnnPvGfeM++Z98x75j3znnnPvGfeM++Z
98x75j3znnnPvGfeM++Z98x75j3z3u85tQNher8dDQplbmRzdHJlYW0NCmVu
ZG9iag0KMTA3IDAgb2JqDQo8PC9UeXBlL1hPYmplY3QvU3VidHlwZS9JbWFn
ZS9XaWR0aCAyNTgvSGVpZ2h0IDMxMC9Db2xvclNwYWNlL0RldmljZVJHQi9C
aXRzUGVyQ29tcG9uZW50IDgvSW50ZXJwb2xhdGUgZmFsc2UvU01hc2sgMTA4
IDAgUi9GaWx0ZXIvRmxhdGVEZWNvZGUvTGVuZ3RoIDIzMTI+Pg0Kc3RyZWFt
DQp4nO3dW28c1QHA8bV38W6CnTgOloCE3JVXSsLtm0BLifoB+i3aOPACT32r
VAXi3AgPfYeGViQpqtoQWhKntEilLYnDreIlUguiGy+ejmdnZ8+sb+Wc3+j3
FO3OnHM8fzm2Z2caDZvNZrPZ7m2vTUy812xm/tjnWqtVy7uVrq6d95vNNfTe
Gqmefs+N8fF+C2XWdo5ruAjXx8fXyqaM/8fj4/kKXm6332k2PxsbWyefjOrz
AP2H+3Qd1B3VWlnlyo822S8qrflQK0ayfufkzxqNI30VnG02Pxwf/7rdznw1
MTFc92XLvh5kYmKFTmdtVBxxY301qvK9rVzh4uoFruFmr8m6rttq9A79y7Gx
YwMquNRo3Nm27Zs9e9bdgw8G2bu3qH9Xu3cPtGvXtx5+uChwABUjKTV04hWj
rSub3SAjrHnIpEYb3gacVMF+u2XLXKNRUUH3f2hfdk+So0eTc+TIcE89VeLJ
J1d44okSjz9etOnzDZ91oNLFqVir0oUqrFVhbUvVXO2FmZn5RmNoBbebzbvd
ZAr7efrpKoW1Lby3MMjuyAetZOnbww1a2Oy4g4x8xHWymtWuXvn/2ylviI9m
Zy82GlkFR8sqeHu5gs9brbuzs9/s37/JDh+uUnjxgQNVDh5c4dCh/1nNGGqN
sNaAw+dSMbWCDVjqkdd5/d2Znr42Nlargi/uu+/u5ORX27en5pudOyv8Z9u2
vOpdfT09vcKOHZlNn2atWddakxpLND09SPeN/56aylTtcOUbBy3yl1u2/LXZ
zCo4EVzBvyAWi62WCkicCkAFoAJQAZRWcKTZVAHpKFTwogpIjwqgtIKjgytY
VAHRUQGoAO6ogOSpAFQAKgAVQN0KbqmA6KgAVAClFVRcR6QC4qMCUAHUrcCV
1cTH9wJQAagAVAAqABXA7ZUVvKAC0hNYwQUVEK/+Cr6vAhKjAlABLKqA5KkA
8hW8ogKSVLeCj1VAdFQAKoCgCjodFRCx/gqeVQGJUQGoAFQA4RVc8lczIlVa
wfdUQEoKFZxQAelRAagA8hWcVAFJCqzg9eUK/KaU+NyrYHw8X8EzKiAxtSpY
UAExUgGoAFQAKoBbuQrmVUCSVAAqABVAoYI5FZCewArOtloqIFb9FRxTAYnJ
V3B6uYJHWy0VkI5aFdxUATEKrOD80k/HKiBK/RX8UAUk5lbus2YqIE0qgKAK
2m0VEDEVgAogsIJz7kFBvLoVfLDyN6XPq4DEqADyFZxSAUkqraB4TakKiJoK
oG4F7llNfG6rgOSpAFQAKgAVgApABZCv4BUVkCQVgApABXA791kzFZCmRRWQ
PBVAVsGblRWcX67gtgqITmkFj6mAlPRX8JwKSIwKQAWgAgiqYPnO7SogSioA
FcDi8nPNVECyVAD5Ck6qgCQFVnBBBcSrv4JnVUBisgreUAGpqlXBggqIUX8F
z5RV8HqzeVkFREoFoAJQAagAVABZBW+pgFSpAAoVHFcB6VEB9Cq4ulTBvApI
kgpABRBewRUVECkVgAqgtILi8wtUQNRUACEVvKQColao4IQKSI8KILwC96Ag
VoEVnG21VECs+is4pgISk6/gtApIkgpABdCr4F0VkLDec826FVwcXMHL7Xav
gpsqIEYqgEIFcyogPSoAFYAKQAWgAlABhFfwtgqIlAqg9G/HxfsRqYCodSv4
y9LVdCogWSoAFUCtCq6rgBgFVnCm2VQBseqv4EcqIDGFCl4YVsGiCohOeQWt
lgpIhwpABaACUAFkd+VSAcnKVzCvApJUt4JbKiA6KgAVgApABRBewSUVEKlC
Bb0rqx9VASmpW8HHKiA6KoD8dUQqIE0qABVAaAVL96xWAVFSARQqmFMB6VEB
BFZwzk/HxEsF0F/B8yogMSoAFUD+uWavBFTgymriowIoraD/Sa8qIGIqABWA
CkAFoALIKngzrALPuCQ+KgAVQK+CayogYbdVQPICKzivAuKVr+DkUgXPNRqP
qYCUqABqVXBDBcQosILXVEC8+iv4gQpIjApABaACyFcwrwKSdEsFJE8FEFRB
p6MCIlarggUVECMVQGAFvWfZqIAo5Ss4vfwUDxWQlFoV3FQBMVIBlFZQ/MSl
CoiaCkAFEFjBWRUQr/4KjqmAxGQVvKECUhVUQbvdq8CdWIhSYAVn3I+IePVX
UPLTsQqIWngFl1VApFQA+QrmVUCSVAAqABXAogpIngpABaACCK2g1VIBscoq
eKuhAhKlAlABqABUACqAO0sVXB0bu9i4V8FxFZAeFYAKILCCs66gIF79FZTf
j0gFxKu0giPj4yogHSqArIJfNVRAonwvABWACiC8gisqIFKLKiB5KoDF4N+U
qoBYqQBUACoAFYAKQAUQUsFLKiBqWQW/btyr4IQKSI8KILwC15QSKxVAoYI5
ny8gPSoAFYAKQAWgAlABqABUANlzzVRAslQAhWdcuo6IBKkAwiu4pAIipQJQ
AagAsgp696xWAQlSAYxcwWft9iedTr/uv4+mdG8hPl2NdnuQkcezTlazerUW
YdNnuvEW2+0RKljsdD6amkrZPyYnq3RfsOTvff62bVtP3SP272pNrGaaazXg
Tf9qdn3Y6WQVVFxBkVXwz61bb+7cOdSfZ2aqdF9QX8hxB/lgZmY0qznod9rI
K7aaRRtyDszMLOzcWVBjb7kzsP/Ff7r//sAKbm7Z8vvZ2VJ/CHD5gQeGuhLg
nRCzsyF+N8yg+W68wPUMWqth67Dpk90UF7duHVrBb9rt+enpaJzdsWOoMyG6
uxrmdJjuqE4FCJndmRABs8uW4txgF3JCBhw4ksLXYmPOipOdTkUFr7Vac5OT
mRempjInJidDzAV4cWqqX+D+ax3ouyW/2rVs+sgzdb+Ig/w05/hg+UNXvKz0
9T+ZmCit4ML27af37Plu+flDD/X8Yteu0ZzcvTvc+X37es7s2VPL/JK6szv1
yCMjeDWn1uyyNcmmWerM3r15gQN+tdKgIa3ryXN8x45CBd0Erh86VOr9gwdD
XN+/v1Tg27/dyYAxROn9w4cLbhw4MNSmD7vUwv79tdzYt6/CoHNpxXlVqeL0
yw97bnq6YbPZbDbb0vZf5g7/Pw0KZW5kc3RyZWFtDQplbmRvYmoNCjEwOCAw
IG9iag0KPDwvVHlwZS9YT2JqZWN0L1N1YnR5cGUvSW1hZ2UvV2lkdGggMjU4
L0hlaWdodCAzMTAvQ29sb3JTcGFjZS9EZXZpY2VHcmF5L01hdHRlWyAwIDAg
MF0gL0JpdHNQZXJDb21wb25lbnQgOC9JbnRlcnBvbGF0ZSBmYWxzZS9GaWx0
ZXIvRmxhdGVEZWNvZGUvTGVuZ3RoIDM2OT4+DQpzdHJlYW0NCnic7dABAQAA
CMOg9S+tQQ4RKLhpBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDA
gAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBoIe+nZ+
Fw0KZW5kc3RyZWFtDQplbmRvYmoNCjEwOSAwIG9iag0KPDwvVHlwZS9YT2Jq
ZWN0L1N1YnR5cGUvSW1hZ2UvV2lkdGggMjU4L0hlaWdodCAzMTAvQ29sb3JT
cGFjZS9EZXZpY2VSR0IvQml0c1BlckNvbXBvbmVudCA4L0ludGVycG9sYXRl
IGZhbHNlL1NNYXNrIDExMCAwIFIvRmlsdGVyL0ZsYXRlRGVjb2RlL0xlbmd0
aCAyNjMyPj4NCnN0cmVhbQ0KeJzt3dtvFNcdwPHFO8EmxcTgIrUJNTZJ7L4l
BWwMMrSK7eD1jTQ2uKpUbqmKDUQNTUilShAT30nzkEBSO6pUIA2GgslD8DqX
SmmlFhKpfehT1EKq/gUNkOa93vV657JnZ84say/5ne/o8wKyPef8vN8H787O
RiIcHBwcHByJY+nwD6K/b3fo8LDebs+nc235Ej3fkU+uIeTOOhes6EKHSmem
PO8xf0MomuzIl8Ksv7vGWUHxkdrob1uWvL9zocS7c/TBTj/ZTjeTs+6s9FcV
drULKrcJLPJGfMa+YJOJPF9bVLPKW8FAQ9HlHcXX9qQt/evuQMXXlPb4/JyS
63vywnMWMXTGbuxw8mXJ2PcjsSplBZGJphUf7664+cJC+9ZnP9ex9vMXPSpu
HvVYc+P5bB761y/mPPjPIx6aC/BZiVLm8vRXG1Z6d9nkMHOdTeW2vEV4UOlb
dq4z0vu4TwVFk+0P/uPZDbfHTLP+1migTV+9mqnuf792qv3ylUwb75z0KPh+
9XetSTkcn1kpB+WZlWe2KV8GDNx/2qtmfhLp3xJYQTTeVfHZkY23xpzqv3rV
x4Zbo04bb4851d456VR355X1X4zY/mvb8MXoLM+pXW778Zwo87zZ+J2xEAKm
nZxSms98fCZQ8D0WxOo/74+carQr+G65ooLxVAXWh7tW/7236ubRwqr+z698
VN14wWndzaNuLzo9/PkvnR75t63qxlEf/msItcKgBWddvP9efLbmkfM2fVeu
PedCP5zK/rRnyblYqAru+2jX8r/sfuD6PtOU/+1nPlZc2+vk+t5P9nuUffqM
08pPf5pW8G2G2nWomfiNyD0uz3ycVlzfV3ptb9rsP9MSs71uK/vEJduQl338
4+jlTruCg7oV3PfHHkAGK95NBTBc+Aq6qQDCUAFABQAVANZMV2YF0RoqgEGo
AKACQF2B8u+C31ABZKICQK+COiqAYNaM4plSKoBRqACgAsBbwaHvUQFMQwVA
6AqmeX8BpKECIOOvYyqAcdQVeK8jqrOvI6ICiEMFgPrvAiqASagAoAKACgAq
AKgAoAKACgArrnMPCiqAZLoVDG+lAkilqKBpLRXAKFQAUAFABYDizu1UAMO4
Kji+mQpgoNAVXKUCSEMFABUAOhWUUAFE061gZBsVQCoqAKgAoAIgRAUTvGoG
mVzvNUtXUL2KCmAObwV9VADjUAFABYCrgmP1VAADha6AZ0ohzmwFRZ4KGqkA
ZglXwQUqgEBUAFABQAVAsoIdVACTWdNddgX9W6gABgpZQQcVQB4qAKgA8FbQ
SwUwTrKCzsAKrMGtVACpFBXEqqgARnFVcCJVgfUoFcAg4Sq4SAUQSLOC6BAV
QCxFBdsrqQBGma0gmn6mlApgJCoAdCoopgKIRgUAFQC6Fcy9XsA9KCBR4pnS
P7ifKW3xvl5ABZCNCgBXBf2bqQAGUlbguaaUCiAbFQCJCi7NV/CSRgXcsxri
WPEwFZxvowLIQwUAFQBUAFABQAUAFQCuCo5TAUwUsgJeNYNAVABQATBbgf2p
31QAI1nxbiqA4agAsCt4/Qm/CobmK4hTAaShAkBRwZOVVACjUAFABQAVADoV
lFABRKMCYL6CVq0KJqkAAs1WUEQFMBsVAK4KjtVTAQykW8HINiqAVIoKmtZS
AYwyX0Es8hoVwFDhKrhABRBIUUFjtgqaqQAiUQFABQAVAFQAJCvYQQUwmV3B
6UYqgJmoAPBWcOAxKoBpqABIVXCmJVFB/xYqgIGoAKACwK7gjaAK3pqtoIMK
IA8VAPMVxKgAxqICIHU1HRXAYFoVPEcFkMxbQZ/qOiIqgGhUAKQqOBtLvWrm
U8F4ExVAJM0KrMGtVACpFBXEvJ9xSQWQzVXBCSqAiagAoALAvhMLFcBUyc81
S77j8pSjgke9n/SaqGCiqegiFUAgKgC8FfRSAYxDBQAVAFQAUAFABQAVACEq
GKcCyEQFgLeCg8kKasqzV9BNBRAmcTXdpU4qgMmoAKACIFwFk+1UAHk0K4gO
NFABpFJU0LqOCmAUKgCUFVjVVACDUAFABQAVAPb9iKgApqICwFVBPxXARKEr
mOb9BZCGCgAqAMJVcL6NCiAPFQAhKpigAsjkraAvWUHGPSioAIKFruAqFUAa
KgBcV9NRAYxEBQAVAJoVWFQAuagA8FbQSwUwDhUAmhVE5z7LhgogERUAigpa
qrJX0E4FkIcKACoAkp9rNl/B8c3BFXBlNcShAkBZQbSaCmAQKgCoAKACgAoA
KgDsCl5/QquCOBVAGioAqACgAsCKd1EBDKdbwRAVQCxXBcfqExU8WUkFMAoV
AOEqmKQCCKRbwTAVQCxFBc1UALNQAUAFABUArgrm7sRCBTCMNT1XQSsVwFhU
AOhUUEIFEC1cBRc6qADyUAGgWYH1cgMVQCpXBSdSn+JBBTBKuAouUgEEogKA
CgAqAKgAmK8gFlDB3J1YqAASKSqIee/EQgWQza7gNSqAoXQqKE5XwNV0kEiz
guhAAxVAKkUFGX8dUwFkC1NBMxVAJCoAXBX0UwFMRAVAuArOt1EB5KECwJrp
pgIYjgoAKgCoANCswKICyGVXcLqRCmCmkBXwqhkEogKACgAqAKgASFVwpiVy
OvlM6YHHqACmoQKACgDNCqKJO7FQAWRSVKC8EwsVQC5lBUU1VACDUAFgV3CK
CmAoRwWNVAAzhauAO7FAIioA5iuIBVfwFhVAJioAqABwVBD0TCkVQCjdCgYa
qABSUQFABQAVAFQAUAGgVcFzVADJ7AreSL5q1vc4FcA01kzyE53OUgHMRQUA
FQDeCnpVFfAcEUQLUQHvsoFQVABQAUAFABUAVABQAUAFgBWf/1wzKoCpqACw
KzgddB0RFUAoKgBCVDDeRAUQiQoAvQpqqQCCUQFgV3CKCmAoKgByrqD4o56S
DxSKP8yR8qcttHttPbkt9S5Xe49vfDFmO7NTt4IJu4KS93eVvtdjsuVX/ZRm
t+K9lEVdsM+S7mab+VpSoX+bs0re7bIrUF9B4arg/ume8qkfBVp1pcdH+VRu
gs+b23p8l5r7Sb/Wcp7Y3Q2tp/xKVho/2e/x47/Cb0z+ULOCZZeeXv3Ozix2
Bfrm754OdkbD2a5Aq892a3k7SNb9Lj69eWrMKngOhd9sAdz/ZiywguLxlrLB
JjFWjjQHG24KVDbUVDbcHGCoSctgY9mABp0NapxOZ3f2KEazO7k9TWvBmitx
/y4W51FR8tJWnwqsoW3LD21KKz1cn+b8/7tU+mx9puWHN4WTv/XcI5zTDqXg
K7eF/SVm01dnO5id89Q+X6b6+qUH1isreGCsuWKk4+vl28e3z3noRCw3awZa
9VWefGpOxWhnOMMdCSF3952h9lwM2tYMtOlLzyS9TaW1ozucKkY60zRXlWnN
y61KC/rgWXloi6eC2QQeufKM0sOX9+uomtqnpPntc7KtQaTqKa91V/YHKviy
lare3RdK5dReH9keSy6X9/rJ/vBzLrvs8OYIBwcHBwdH8vg/c5RIlQ0KZW5k
c3RyZWFtDQplbmRvYmoNCjExMCAwIG9iag0KPDwvVHlwZS9YT2JqZWN0L1N1
YnR5cGUvSW1hZ2UvV2lkdGggMjU4L0hlaWdodCAzMTAvQ29sb3JTcGFjZS9E
ZXZpY2VHcmF5L01hdHRlWyAwIDAgMF0gL0JpdHNQZXJDb21wb25lbnQgOC9J
bnRlcnBvbGF0ZSBmYWxzZS9GaWx0ZXIvRmxhdGVEZWNvZGUvTGVuZ3RoIDM2
OT4+DQpzdHJlYW0NCnic7dABAQAACMOg9S+tQQ4RKLhpBgwYMGDAgAEDBgwY
MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
MGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwYMGDAgAEDBgwY
MGDAgAEDBgwYMGDAgAEDBoIe+nZ+Fw0KZW5kc3RyZWFtDQplbmRvYmoNCjEx
MSAwIG9iag0KPDwvVHlwZS9QYWdlL1BhcmVudCAyIDAgUi9SZXNvdXJjZXM8
PC9FeHRHU3RhdGU8PC9HUzUgNSAwIFIvR1MxMCAxMCAwIFI+Pi9YT2JqZWN0
PDwvSW1hZ2UxOSAxOSAwIFIvSW1hZ2UxMTMgMTEzIDAgUj4+L0ZvbnQ8PC9G
MSA4IDAgUi9GMiAxNSAwIFI+Pi9Qcm9jU2V0Wy9QREYvVGV4dC9JbWFnZUIv
SW1hZ2VDL0ltYWdlSV0gPj4vTWVkaWFCb3hbIDAgMCA5NjAgNTQwXSAvQ29u
dGVudHMgMTEyIDAgUi9Hcm91cDw8L1R5cGUvR3JvdXAvUy9UcmFuc3BhcmVu
Y3kvQ1MvRGV2aWNlUkdCPj4vVGFicy9TL1N0cnVjdFBhcmVudHMgMjk+Pg0K
ZW5kb2JqDQoxMTIgMCBvYmoNCjw8L0ZpbHRlci9GbGF0ZURlY29kZS9MZW5n
dGggNDYyPj4NCnN0cmVhbQ0KeJylU01r3DAQvRv8H+Y4ClgeSZYsQwh0d9OQ
koWUdWmh9GAWrxuIndTrQvOT+i+rsZPsOi3NIZdhPJ9v3rPSd/1ws6u2AyzW
S/gRRwQkiUhpTTkUjsBmBH0dR59PoIuj9GJjodnHkYLmuZicImNn1buTOPoY
R3AepqYvd3iTy9yCyqW2kDsZXMuBw5oxGKY/JmYN2zbAuGyrplYFrO7gaQ2k
m/uqg9PTdL28XAGlV1XXANZd8mkjzs5gsZoOHBGrzBBv+PvCRRnGv1dQyDys
LHd86ogEMl3IQIrSsggwypbvb0ZKFI2cEFzE0Vf8LRKjEUTmcSmMwjuhCrxn
8xAyDnuhHd6IJMeGg9/ZDCLRPvQkyivUHCE2B49TZPGLUIam5ls2o9dxwS/x
DcoPcXRe/of5V9Ql6b0br+1Hda0xzDgXuieBjpV9Qbl6E+UajJZmxrjV0lvI
vJXGTIRLyvLp15u8kfBF1Yskw7oVFutB5Fjdzsl4CwatnMz86yCueC8vrzvh
cPsAQhOug6wO62ofhMefIRmABoxCa2xD1Vg6CI/7f4gH6fUzs/pAprLEUtiC
lXHWh4dinOWPwzFTmPE/pmZNRw9ImeMX9Ac6idjVDQplbmRzdHJlYW0NCmVu
ZG9iag0KMTEzIDAgb2JqDQo8PC9UeXBlL1hPYmplY3QvU3VidHlwZS9JbWFn
ZS9XaWR0aCAxMTEzL0hlaWdodCA2MTYvQ29sb3JTcGFjZS9EZXZpY2VSR0Iv
Qml0c1BlckNvbXBvbmVudCA4L0ludGVycG9sYXRlIGZhbHNlL1NNYXNrIDEx
NCAwIFIvRmlsdGVyL0ZsYXRlRGVjb2RlL0xlbmd0aCA3MzQ1NT4+DQpzdHJl
YW0NCnic7J0HVBRX38Zpdk0syfuJLdHYUFB6E6RJEayoUTH2EktiiSVqYkzU
xJZqidEkmkRNNEaTCIrYo9J7rwtL2QUWdhfzRmOD9/vPDgwL7C4LLCDwPOd3
ODN3Zm6buzv34d65q6UFQRAEQRAEQRAEQRAEQRAEQRAEQRAEQRAEQRAEQRAE
QRAEQRAEQRAEQRAEQRAEQRAEVZc2BEEQBEEQBEFQA9TcnkYtNXclQRAEQRAE
QRDUmtXcjqeKmrsyIAiCIAiCIAhqi2puJwQrBEEQBEEQBEFQ8+j59EE6EARB
EARBEARBDdZz6IZgfyAIgiAIgiAIano1rxuqh/3RhSAIgiAIgiAIUqn6eaLm
9UHNXWcQBEEQBEEQBLUJNZcbquaD5LOkB0EQBEEQBEEQ1Jiq6Ymaxg0p9EHV
8tZODbWHIAiCIAiCIAiSkzo+oqYnaho3VNMHyXsfLv/sRgcIgiAIgiAIgqAG
q5pX4jY4Q9TYbkihD6pmfDrKiXY7VagjBEEQBEEQBEGQ2uokp5pGg/NHTeCG
lPkgEpcxymTnCnWRidtQra4QBEEQBEEQBLVJqXYK1cwFiTUdnCfihocayQ2p
GA/iHBCbvW7durElekGRXoQgCIIgCIIgCFIphVaCFRkNchycM2INETtfrjHc
kIrxIEqXNUGszekuU48ePehvT5l6VKhXDfWEIAiCIAiCIAiSk7xf6FFVdJT1
GqzdYB0TZ4gaww2pHg+idN2nzAQAAAAAAACA5oIMEfvqkAbdkLac5NfNZhdJ
6NSpEyVKSZdCEARBEARBEAQ1h8iPdOvWjR0b4qxQw91QrVPjXnjhBUr6GQRB
EARBEARBUHOI/Ai5EnY5BXYVhYYPDFUbEpK3QuyScV26dHnxxRcp6SdPnwIA
AAAAAABA00N+hFwJeRN2QTl2eW3OCtXPDakzO6579+6U9OPHTwAAAAAAAACg
6SE/Qq6EmyPHWaF6DwwpHBLirBC7gDYlx1qhR8olLCjgZWURGURmJkc6j1dJ
BpGRlpGRJxCqiAqCIAiCIAiCoNYnUVFxSjovPDo+KDyKoA3apUA1Lyc/0qNH
j65du3KvCymbI6emG1I2O46dIMe+KETJUaKU9MN//1VInlD43q6PN27fvuGD
D9Zv27b+/W3vvPfeuq1b127ZumbzljXvvrt606a3N256a8PGt9avX/XO+jWb
3s3Jy1MWGwAAAAAAAKA1ISkpiY5PuhsSoRA6RCfUGgk7KsQurK16Ve0GWiH5
ZbTJCrGjQg8ePFRIcmr6pDlzJvr4TJg122vmTM/XXx8/fYbHtOnu3t5uU6a6
Tp4ybtJklwkTnb0mOHl6OXp4Orh7JKekKosNAAAAAAAA0GooFBUHhUUp80Es
dAKdpjoe8iM9e/bkVk5oAivE/qwqJUpJ//PPA4UkJqdMnE0+aBbjg2awPmia
+9QKHzRxUrkPGk8+aDz5oLGu7olJycpiU0FGJp+ox4UAAAAAAACApkcskdTq
gzg3RCeriIqdIMeOCqleRE4jVojil7dCf//3H4XEJSUzPuh11gdN9/BmfBDh
OmlyuQ/ynOA43tPBY/xYNw97V3e7ca5xCUnKYlNGOo/P1hJt1PVaAABoa4RE
xgoKCtU8OSElPY2XRRv8XEFUXCIbGB4Tn18oUnFVchovPSu7ftnLEQhjEpKb
vZbqinz9AAAAUAf62mT78GFRseHRcTUdUFh0HB1it1V/x8pbIXYRuaaxQuy7
Qvf//lshcQmJMh/EToqb5kYmaPKUb3/6yWfxEmevicykuEof5EY+aIzzuNj4
BGWxKYSe0fI1Rrt1uhwAAFoTBYWiQlGR6nNCImME+QVqRpiQkpaakUkb/Jy8
yLhENjBXmC+RlqjKhkgkKiquXxGKJRL1s6cMcmqBYZHcbmZ2TmhUrFgiabya
l68fAABog+QIhIT659NXvbzlyeTnRMTEy/fqaZcC5S2SiqcD+ZFevXrJr6fd
eFaIXUmb/X1V1grRI1EhMfEJ4yt9UPnLQdPemHvsxx9fnzef8UHu5IPcGR/k
wvggWyfnmLg4ZbFx0COY3aAHdDXzSCG1Xg4AAK2VuKSUrJw81eeQFcoT5qsZ
YXxyWko6872amZ0bGZvQ7AVUE0F+IVkhdptMChWZrFmjptiy6gcA0JYhQ5Er
UPoUoEN0Ql3jzM4TsF1x2lDzksSU9JrGh3ND1XZZElPSlMXWvFaIvIlCouPi
FS6SMHnW7C+PfOPt48P4oHGsD3KxdXS2cXCKjo1TFhuLWCINDo/m5wpS02v4
oPRM1dcCAEALRZhfSD3toIjoYGY1nVQKKSoWxyam0G5QeDQdEhWLk1Iz7oVG
0i71/Kn/T+ek8bJCo2LpKvqbkydko6KjaTx+WFRcUHhUZFxifqGIDRcViWMS
kikwOCImPZPPBsYnp6ak82iDHkmUChdDjkDIHk3NyKIMBYZFUSCPn1PtKg6x
tCQ0MjYjK5sLofxTbrnUi8QS2hUWFMonVG/yhAVkhWiDSk3F4VJhCpKdGxYd
Rxmmv9m5gvJAfk5cUio9l6n2CNpQVu2EgA0Mj5LVZBYXA5dthTUJAADPCbl5
wsDQSH7FF6A8FEiHciueF2rCXkV/uQ11rgqNqj4jjrM/Cn0QQZcoi41dNqEp
rZD8BDmyJwqJio1TtkjChOnTP/7ss4nTZ9i5jBvjxPggawcnK3uHyOhYZbFx
0COe6rla5dBjt9YLAQCghUKehTrVtFEsllD/nDboSy82MZk9Sj1/doN9fHBX
5VKvnSyHRErXhkSWf7tSBz4iJoG667SdnM4jR1CeRGwCWQA6m4wD2QGyCRRI
BiE5jfl25cm6+lwMZDHYo+Qp8oT5tE0h5GXY5Lir5CF/lJMnkA+h/HOnkUsK
j4mvllC9oSyRFaLik4UR5Bdw4ZRJKppAVl20TecIZJVJidJzhPJAuS8QFdFV
WTl5CqtdVFRMHoetZKoo8pjsCfLZVliTAADw/MD2pfmyLzrVgXWNSv1I6Bu4
5stBzFMsOydLkQ8i6BJlsXFWqGvXrqwV4n5ltQmsED1RFRIRHc34IEWLJIyf
Ou2D3bsd3T2sHZ1tyAeNdSQfZGk3NjwqWlls8mTm5MrXTHJahjpXAQBAC4V8
RERsQq5AyIXw+NnUY8/MzpU/jdxEBj+75uXCgkL6qmS3ychQn5/dFhUX3w2N
yMsvEBQwc7YLioq45AjaiEtKSZJ9wdIllAEuBn5uHns0NimFS4W6/WR25K9S
TVZOLkXFbpN9SONlVUuo3uQIhFQucn/kznKFlZVGGUtMTed2yYuxu5RocEVO
iJiEZHKaCqtdZtniuF3yQewul21lNQkAAM8V1Jcmz0J/Fe7WL5I6RaXMCpEP
IjekzAopi62JrRC3mHavXr0oaVFRsULI1zCT4iZOqlwkgXk5yMNjytQtO3Y4
uHqYWtsQZIJYH2RhaxceEaksNnky+TncwFByaoY6lwAAQIsmLSOTjEN4dHx2
bh4bkpWdS93v4AhmmhYbwlihTD67XSgqSk7LoKcJBYbJXjtlw0MiYuhCLtqg
8Ch+Th5ZG2a1Utn0MCIwPIrsAB2NTUxJSk2nDerzU1RcDPycXPZoouwoC1kz
ikr+qlphLsnNE+YXsJPlqiXEkp0rqHWdVaqHapdQhAJhATkyqrQCWcwEGa7U
jEzuNMo8uaGaiVIgXaiw2qlKo+OTuDOpJqkI8jEoq0kAAHjeYLvT9JfbqNPl
/OxcZVexEfLlnjU1CY2MrfMEuchYZbE1rxWiB65CwiKjZD5ogpwPcicftGn7
hw7j3E2trU2srE0s6a8NmSDC3GZMWHiEstg4ePxsql76y23UegkAALQOqMtN
nXx2pTgW6vaTnaE+OW2T66ET2HDqtJMDIpdB27kCIT1E2HDWOrHbdOxuaAR5
kVzZMIp8tCzMuElKOpMuL4ueSlwMbHLc0Yrw6KwcBeEqSEhJi0tKSU7jkb8o
L6BcQvWGbMu9sEh2m+wPFzm5koTkNO402q1ZOjacrJzCaqeqo1rlwskohcsu
5GJQVpMAAPAcQr1o1mXUozvNz8nLys5RdpQO0QkqLqcv/7oum0CXKIutWawQ
JcdaofxCkUJCwyPKfZCHJ/MLqrJFEt7atGnsODdT1gSxWFibWtmYW4+hv8Fh
EcpiY0nPYuwP/eV2g8KihAWFqq8CAIAWDVkP9ouOWaUnlFlQlJ+blycsoBDa
Zue80XZUXGJ8cip7SXxSKlkAdpv6//QQYbfJsFBnPk+YLywQkRMJjYplw6lL
T08Zio22cwSMOaINxjukpNFGKi+L/TkhNgYeP0f+KBeema0gnIUiZ6+Sh4oT
JMsPPYXZEPmE6l9dOblkhdhtqiXKWHI6j7YpA+woGG1TVgPDIikDNRNlLFJq
usJqZxZkCI8iQ8TWEtV8akZmtRgU1iQAADyfUF+a61c3JexLmizhyhfTDpNb
TLvmQ4Sj5gpyTWmF6FteIcFh4ewiCYwPcmUXixtn6+hiZmVLDsjYwsrE0spY
ZoVog3wQbQSFhCmLjRAIC8j4pPP41QJVXAIAAK2AuMQU6sPLVoeLTcvIohDq
gcuWj4tiFjdLTmNPo6cGdc4pMDWD3ICAniCyyV1xtBsYFsWeExwRk8GsohBD
IdRpJ1/AhufmCdm14MggkD+iqCiQHUZhkkvPDI+Or4ghmpeVLX+UhbLHy8qp
Gc7CuIb0zJpFo0zShdyufEL1JpPPWKFqu4yvkdUbW/awqLgMWSlqJkr1QFZO
YbUTFE84swZdJMWTlJpRMwaFNQkAAKAa9LV5t+InVsMU/cRquNxPrEaofDQ0
lxXq2bMnJS0Q5iskKDSs4hdU3dlfULV1crFxdLaydzCxtGF8EJkgmSEytWR8
kLG5ZWBwiLLYWPIEQtUnAAAAAAAAAJ5z+LIFFmp9G5RdMIFOVhFV81qhXNkE
gJrcuRck80HcL6iSD3JiF4uzGGNPDojxQRasD7IiHzTa1OKvu4HKYgMAAAAA
AAC0GjIy+bW6IfJBdJrqeJrXCuXkCRQSHBZubGk52txylLmFkZm5oYmZobHp
SGOTEaOMDYxGDzc0GmowkmXI8BFDhhkQQSFhymIDAAAAAAAAtCZ4/GyFs+PK
587JXiatNZLmtUKUP2UEBYf6B1zzD7jKcvkKEVCOP8sVlkv+V+4FhaiICgAA
AAAAAND6SE3nRccnBkfEBIZFErRBuxSo5uXNa4X42bkAAAAAAAAA0PTACgEA
AAAAAADaILBCAAAAAAAAgDYIrBAAAAAAAACgDQIrBAAAAAAAAGiDwAoBAAAA
AAAA2iDNa4WkJfcBAAAAAAAAoOmBFQIAAAAAAAC0QWCFAAAAAAAAAG0QWCEA
AAAAAABAGwRWCAAAAAAAANAGgRUCAAAAAAAAtEE0a4W0qwpWCAAAAAAAAPB8
UicrVKshghUCAAAAAAAAtAhghQAAAAAAAABtkFqtUE03BCsEAAAAAAAAaOk0
nhXiLm8kKySO/Wam46ozWSXS4sCPXO02BhQ3WzVKs76fazL7eKakpIT3ywr7
N76NkzRN0k2cXGOVIvv0YiOf71MbqxRFvu9Yj98fWdz8JVWD4sCPJ4x7N6Co
+XNS36p22xPaMqoaAAAAAG0eFVZI2Ry5ZrBC0uwfFxi9NnRYBSMnHYgTFyYE
XLiTJrnfyFZIGnPAe1hl0sMMFpzMklbLHmeF7hen/XX+WlIhEy6O+uPsndyS
hudBwjs5z2zivghpZaA49GMP8wWnsooqk2t6ZDUzzGCIwYihI0eb2E94Y+sP
gfUpbyuxQoXxF7Yv8LQ0NhxmaG7jOe8jv0yx0pOrtA1J1u3TfonlJ0sF4Zcu
BvE10Gw0cn+NFv+SI5ftv3aMM3/nsvL2BisEAAAAgJZEy7FCJlMPxovEkmIG
qVjejDS+FTJadJpfnrRELKnRTZVmHa+wQpWBoptbx806nCTVQB6kOWeWW7p+
EsL1MEV3dzpZrjyb07wdZrmusrSYH/37Fs/RjjvuFdU5nlZhhSSxX3qbuG75
M1ZQXJibEXnL92ay8ltfpW1IU4/PG7MxQNSct1IhsEIAAAAAaOW0JCt0OFH+
3+zi+MNTjJefza9mhfLDT26Z4WJtajnGZe7O84kN90c1O4QyJFkBny5zszYz
tnKauuHIRz7lE+SYXv3MY8kFdz+d7Wg43MjEztHO5c3vVfSK1SP3jzUWLh/d
LmJ3i66/72S55mIelxxjIkqy7x5929vR3MLaxnPZvgCeWJp9cpEZM3wmq5Y/
1loNtX//moiJofjeLmfbDX4Fmq0ZSeAn7kbLfxPKDmXeOrzK29HMzNzMYeqK
Azd55TZHYbicFRKnnF3j5vT2r4nFFLjEatXh45tnOlqZj7bxWnHsbtDPdGdt
jI0tneZ/epUdNykMPbp6lquDnbmZxRjvjSdjZPPKqD24z/7q6q9bptsbjp55
OFHEWSFJ1tX3JzjNPRZVUFIYcYpiszU1t7RwmLz0m9CGjqwV3dhsZ7Puco2J
baLE8zvnj7OxNLV2mbb5VAQ1V5F821j2+dH1HhaGQ4xt7Bwcx390U1TZmMlW
jJn72S87F3raWJiOtp204liooOLjcOMLpu2ZWLlM23Ti6AbnOUzb03SJarFC
NdqbrGVWWCHmnlqsOHR88+tjrcxHWbnP3+PfaFYXAAAAAKCeNLYVYuOhCCna
xrdCJblXtoy1W3osIl8sEdzdN8102qGohnbAFFqhEt7Z5eZ2y0/EFEiYzu4G
RwOjKlaIEs07s9B4pmZGhYj8K+vtHDdfEzHbBQEb7Ow3XCmUyiUnzvh1qe24
1ecSC6US3pX3Xa0W/5gmTvxm1qj5P/GkdMnldQ5e493dt98VU4liD04zXX6u
urlrUM1IBQmX3ptgv/jndLpH4tST861c1/2WVCC9X5h6aYun9axjCcrDK6yQ
ONN3i9fYJSeiGL/GBBoYuKw7n1JIBsp/i9NII7sVP0Xnl0iEoXu9TSZ8EcM0
BklmYEBgaoFUSuV/e6zZmov5JbL2MM7cYvyyr26m5uUXFkrLR4WKcv/aPc1x
xhdBAqqQ3F8Xm3nvCy+gW1aYFROWXNDgeyQMeN/VxHPd0evJgsohy6LA3RMs
Zn3xV7ZUUhBzZJ71uJ33GB9RpW1IAj92t+JGhapYIYuhVgsOheSJS6RZ1z90
M559hPHUJfzzq63sV/zAtL2C2LPrHNi2p/kSqbJCitqbtJoVMjAYt+48k4/8
uJ+Xj7WY91O68hmDAAAAAADNQMuxQkbDja0srG0YxkzbGyxRZIUKLrxt6bQz
kJ2jJUk/Ptt4xsGEBpqRau8KjfRiOuH551aYO+8KKp8IJIncN8G4ca2QbCTI
ZoO/sOS+4OI6S6cPblT4BVlyJRkn5hl5H4qVVOTHy2Thz3nFEZ95Wq35XXi/
MGCL/euHzuzw8KBuqjTrh/nmc07wJA3Nkqxmho80MDQyGGEweLiF15ZzcbJc
pR+fazTjSGK5CS3JOrVo1KQvoyRKw6kUo+Yc+m23t/2cwyH55Ucp0NBtd6BY
tiu6tNrcbtM1doxPEviJh8UG/2ozynJ+pkiOp0ll7cFl9Mxv0yo63kz/3HP3
rwfnOk7cdTOb9SlFgTvcbSZvPXkrtbDB9VCBhP/XDx8t9LQxdZm7+fu7zIBX
8e33HGzWXhKxJwjPrzJ2/fieWH0rZEnFLB/cKb611cFx601ysvm/rTIf93Fw
RduL2s+2Pc2XiLm/ww3Nyj90MkxGjzRhrJDi9iapaoUMPfYGs7evRBKy15Nc
VbZUIxkDAAAAANAMLccKmUzcH5jGy8wgMrMFxYpGhSTpR2cbDTexrui5WY02
nbIvTNKwKlI0KiTJOOZjMuu7jIpX3fkn5pk0shW6X3Rvl7P1mgt5eedWWbvs
CpLZPS45Seh+r2GG5hUFtzY1NZ/zXaq4+M42F+f3buVff99l4hfR+Te3OUz5
MjL3z1VW0w/ENzxjVUaFCnghx1c5Wy45TZkJ2+9ltOICN0FLdHWLjcO2G8XK
wplSjDCztrcwt1x8kjNKTNFeP5rE7hZdXmc1/uMQ9lZKgvd4smMTRSlXv9q4
yHvylEne0ya6mBuws+xk7WFD5btjjKcwthxrbmY57UAkl7o4K/DHHcs8bKzd
lu65EK/BFduKUm9/u2Kcmef+UFHh+WVGI40sKqyEpfkox21Xi9S3Qtauuyve
u6Fb6eyw+Uax8ran8RLJ7u/cb2PZDx1Duu8WZzOm5pW0t6pWiG4fdzczZC44
AXPkAAAAAPA8IW+FOnXq9DxbITUmyOX/ttLC87Mojc7DUThBLv/sCvPKbqok
4SvvGlZIoGErJBWH7/G0WXnypzctJ+wNZ00Bl5w09fs3jN44kV79v+4ivw12
E/ef3OY2aW+ERFoYsMFh1len33fw3Bsi1nzNiAK2WBq/fUFUkn5intH0r+Mr
usGZJxeNmnIgWqI0nCmF195A3q3tntYVbkX+NSglVkiSctTH1HXr5VTZUFTm
TwuM5KzQxipWyMr+3QBe2AFvK68PbwmrDJoUplzcPtmYG+DQDCVp38+hzCeJ
bm5hhnJqvLAmqG6FLDdcUWiFKpcg4KyQbETSbU9YRdtLPDit6pIdGiuRigly
ytpb1VGhcbvuVowKBe32MFqCUSEAAAAAPF+0LitUkn1p01iHZUeD+EUl9yUi
flRwXIN7XwpXkCvJ+HmZmcPq0/EiSUlRyqVtboY13hUS+a+zGrvmYg4FSjTT
A5RGfelt4eRs4X0wRn7ohH1XKO2XxWPc156JzqFDksK0iLAEIbOwQM6vK8zc
vVy99simKuX/sdbOdby7w7bbmlivrEpXWZQdfmKlo6H3wSjKTPqvy8a4rj2X
mM+8E3R5i6fVjG/imXeFFIdXLptQGPblVEvWrahhhcSRe71M5v6YRS5AIow+
Mt/SQKkVYpdNkMSfWGTpuP6PzBKpKCkoOE3IRF6c9NNSi0lfRDbQOAgj/X3v
RqXlFoiLcxOu7pll5fDB7cKSojufeFn7fH49vYhKVJSbEBgpW2G7StuQxn89
w2j6wWjRfSqeGlaohHd2hYXjmjNJReRN0gM+Gs+2PY2XSPW7QorbW9V3hYY7
rjqTkC8tEcacXGpnueBUBt4VAgAAAMBzReuyQhReEPnL9jc8xhgbm4yycpm6
6dcGz8lR8rtCEp7/vsWuVqayFeROfL3WYU41K1QiCv1upccYSzP7eV/HamZs
SJz0zXRDoxlHkyvqoeoKcoHfr581zsLUxMjUxnn2Lr8sxgpJ0k/MNhzhvKv8
1ZKc31YaD7de61eoifzIvStkaGhgau+1dM/v5Uv2UWa+WzfD2dzM3NR+8rLP
r6Zz3k1BuPxi2pK44wstHN/5PVNauxUqkab67pztPs5tkvfkORuPHN/qPle1
FWLu2m+rHS0XnUzIu/HxTBczU3Nz6zFjvdccvpvXwPdrJHnXP5njYW1qNGS4
odEYr7nbz0SwLz2Jkv/YvczTztzI2NRk7ORl37FreldpG2Le5e2znM0trB23
+BfWboWYxSKu7F/iam1uZusyZe2BbbNlo0JCDZeo9hXkFLS3ahPkPvxqw4yx
VmZGlu4L9gakYXYcAAAAAJ4zmt4Kde3atc5WCACgEEnKkZmmC3/Oa/6cVEFm
hWZ9mwz7AwAAAIDnGPIjL730Uvfu3WGFAGgRiHlhN0LSBYzLKEr22+ZuOuNg
nOZeSdMMVec3AgAAAAA8l8AKAdCyEMf/stbb2dzMdLSJuYXb3PfOxjX411Q1
DqwQAAAAAFoAsEIAAAAAAACANgisEAAAAAAAAKANAisEAAAAAAAAaIPACgEA
AAAAAADaILBCAAAAAAAAgDYIrBAAAAAAAACgDQIrBAAAAAAAAGiDPCdW6H8Q
BEEQBEEQBEHqCVYIgiAIgiAIgqA2KFghCIIgCIIgCILaoGCFIAiCIAiCIAhq
g4IVaiaVCnKXmFw2WZIrKG3urNRXdS9CacSOG317+y31bfQyl+b8OL1ft37T
f8ypf1KlvM/GtNfq4P5tYZkGc9aIehK8cYiuVscZ5x5Vhj32X/SSDvfZ6jjt
zIPmy1/TqFmaZclPkzpqa/dc4Pe43lGoLzXv6fN765v9k/Ug5dzW6davvdy1
vV6Hrr0GGLnuuPOweXICQRAENbdghZpJTyMTbfte7DcmKfppc2elvqp7EerX
53wcsPT/dJS3F93BG4Ke1MhbCOMK9IZtDqt/9arVYXt8bbm+jnY3n98fVQ3/
7+kpHbV0X1n9V42sNZ4UWaHS/JAz3x78dNd786166jRHf/hpzu/Ljbq0HzD1
aGLT9DabqllW0eNrb+rr6I3YGqEqzbKSuLO7lnpZvNa7e6f27Tt37zPceuKy
XT9HFj2rW2Jq3lM1TpO1XrlvXp12nXr0HW4zafk+37R/6papOhVALStUJjji
0qEiazrtOr/Ye6jVRCZnDW3C968uH6inrd15gPWkOfPnzprsYjX9cLr8Pfgn
9uCEvu1eMFt7WVjHWwNBEAS1OMEKPb3/qculOWeeaOb/k+rHVvoo4jz/z9jH
LWTEQZHqXIT69Tmfhu2daD+mXLbDX9LV1m7f29C2ImTszEMJNTsspQXBp4+e
jShuQPW2CitUoadhm4fpNbkVKhNdeWtkR92XPQ4lKshTI6mJmmUVPYvfYdKu
vfPhPGVRlN0P2+/Rtx198Wm36z7AyMLazGBAz470tdje+MOYerYRNe+pitPY
1qvX13y8l0zjXe1NXn1Rj3Kp09Px87jGGuKqixXS6TbE3tPLy9PNwWLISx2Y
+utmsfVOSQM+1/9c8OmurfPSjF9EKiJ5GPOpc0/dLsYbbkpa8Dc0BEEQVLva
vBUqzeFN7u+nKSuk2dhanTTQ53x0flYXbZ3ey642/kwkWKEG6lnWdxNe1tEb
tPRyQxxp46uezbKs8AcfE5c3Nn1x5q80sfD78R1fmPP7/eKkG6c/Xe/jbDzv
tLiy0E/TvnZ/SUdLu7OBz+F7worbU/Zf3o0TJ+/Wu3I0ZYWqtd4HqT/OflVX
W6enz/lGGmmvixXSM9zGDe89Flx91+oFxj5+FFvv0V5K3La9VnvHg7XMnS0r
uDB3gK5O72mnclvsHGYIgiCodim0NkViyZWAawcOHSZog3ZbrxUqPhM6SF9j
5kWzsbU6lUXCCjWi2FmBz4sVKhX8OLmXju4rSy9Ln/NPQz2bJVvd7HdWu+49
uum0e7FnN73yrzY9ow9iKnrrZcIfJvXQ0dLtN/tMniYnXDWSFSIPm7Lbop2W
3vCGTC9VpfpaIdK/N1b219VqZ70vrb41+SR+p2k7rQ5uRwtqa5ZlRefn6Ovo
/Of1My3lbUEIgiCo7lJobcj+7N3/KQfttjQrVFosObktzNM6YPAAv1eHXrV0
uDv/3bRzUY+4vs4zvnDHsmB32yuv9r3Yu3cVqr9l8O/DwNMpa2b/ZT3y8oB+
foMMrrnMjDl866F8F7cOsT0t2T3Wlzvaf1qWUHn/636K8Iu1weMsrrw2wG/g
sABLp8Bl2/gR0jrd4KdXVwf06ROw7nr1nkOZOHfBkIt9LeKD5ExFqbTk7M5w
LxsmxSGjbk59O+1KZo0uh9pFeCIUHXzrns2IS68MumI7JfrIvYfRe2/1a1Qr
9DRi6wg9rim1dzqk/D+6ZSUJ53YudDN59aWuHdp37tF7oJHD62u/Ca78X76i
DtvD2K/c/6Oj0912+z22g18HK/SQf+u7bQs8zF57uWsHvfZder0y2m3xvivZ
VQry4My0jrr937pVknbhg5m2g+nM9l1eHmw768OLmTX8zZPcq3vmjhn8UpeO
XV4eOnbBpzdzwrYZ6tXbCj3OvfHFm+6j+3Xv1L5T935Grkv2X82uXsnMm/i6
vRZeelxaHHRwidPw/3Rp175zz/6GLpv8qvcWHwWuH6Kr3cXl62xFd6BVNMtH
Yn5KbNi9G/6/H19j3Y2ZVdZr3Hun/rxyMzA8LjVHUlGAZ2n7rNtra3cb/63S
6XPlUqeFyJe4saxQmeg7jw5auoPeCaxb6624XCOfLMVWqDTvsHN7+mCtuVP1
fwy1tt4S/3edzEa8+n/d2utUf/p0GP99kWKv8yztszEdtfVGbA1vwv9oQBAE
QU0qhdbmwKHD8lbo4OGvW5YV+rt4+1g/ff1LJu4hS1dGrVgY7GHl31//0owf
HnJdkVJh0Y+H0g8cSNs282rf3r52S1IOHEhnOXSquECuy/LwTpx534t9B19z
nRG2fGXkvAnXB/W5qN//xtY7lQ9o9WP7X9mThMvZ3x5O3b0x0Livig5bWc4f
0XYDL/bW9x046qand9C0CbdNh/j2tYwPruNwyMNbMcZ9fA3fLqj2GnTxr2GD
9X1tPhRzD/nS/Pz19pf09f1GOgYtWh65YOrNYf0u9hl+74vwp1U6CuoVoUyU
/46NHxObU/CS5RE+HlcHvnJj1swbjWuFysTRF459tW/H1jcd++qqsEJPs84s
GN5ZW0tbp3NvAytHFycbo/4v6OkOXP1XZaewRoftcdrxaf31dF6w3HKb69ap
b4UeXF/5iq62brcBpi6TZ/nMmmjzahf6VLQb8tZ1ORPPWCEtvWFj7fQ79rGd
t3nPl1/u2Th9VHcdbb1By/zl31ooK/hz8WDqYLd72ch1+qwZ4y36de441N11
aD2t0KPEIxP76mm3e2mE05TZPq97Wr/SldLs7fVNSpV6li1K1sFtz6m3DTt3
G2g3dcHy5YtmeZi/Mnpj9ZUr/rm0qLeOTq+Z55S8atGKmmXZ/dvrRnToYj/3
9cF6nc23h1er4bL8o24dyQlNPV3bWydqtRA5NZoV+vf26oG62t2n/Vw5d0/t
vGnsk6XYCjG+sp1WtQUq1Gm9D2PP7t/N6JN3PPrpaukN8X5vd7n2/xqnbEWP
ssIfJnbT1u234vq/SusXgiAIatFSaG3kfRBLi7JCDy5FDtH3HfuRWO7RXypJ
K+H9XbP8ZUmf3e7fW+WUtmcPQ69J8uWe46lHg4bqXxy8KK9GB0WN2LhYmLeK
lHbYSvlZM4Zc1B9wY+WpkhLuhCePeVmP69xde1S02cy3z4jIy/LFL3t0Zu5l
/X43P4mpyGnZv78tvNKnj/+ULyT3y8PKiu8mug262M8q7u5/61qE0qD3r/fV
9xuzqbCo/OizlO9CRvS52LtJJsiVZn1p316pFSrlHXJ5QVu7wxCfY1GSyuot
TssQlcqfJd9he5Zzbv7g9jpdTTdcl/8Xch1GhZ7x7/qF5FV2qf5N/Nz5Reoj
e/8s5cJkVkhLS7fPjNM5FeMeZZJLiwfoand2PybkEqbO6iBd7XbDll8uLM/x
g4QDHrK1k+thhZ7Gf2LZSae74yfh3Ovoj3k/TOujq93N7Rv5UR2ZFdLu0KHr
8MXn+XJ3oKx6e398a1V/unrKKbGyT0JraZZlYv83X9PTednnfHHWYZeu2h1G
vnP7vnyhn9xZ84quVjvzT5JqndKlTguRk+atUNmzh0Wpt44sMOys28vps1j5
dqRe3jT4yVJohUqzj7h21db5v4V+lRZa7dZbXpBkZvafOhPkZJnIP+bWSbvq
ABkEQRDUmtQardDfF8IG6vs67SlRY/ykDualUvfzFgy82M85JbH6THpNWaGy
uN23+vX2tf1ArIn1h0tDtl3v28d/uW/lw7ysMHsOdSadUhIqilCamTGx/8V+
Y5OrLmf17M7ma331L8/7VcF6XKqK8Fi0cbSv/qCQ04VygU8kO8f4PgdW6Gnk
eyP1tPSGrrursg/Jdtg6Tj51/3+lBZdXGXbS6TJ6tX9B1QirLkdcTbW9K1Ry
akpnbb1R2yvfAWetkN7oD6u8Fv6v34JeOjr6y69XFPrR1TepC9tl/Hf5crfl
Scgm6vLWwwo9vv32K7q6r627V6VOnwRvGKyr3cH5a7lpXexP1ejoL/BV/WZe
Ke9zqrp2Zh+r6P63imZZVuy7kBktGbTmL3IJf/svJQOo99qKALnXox79+cYL
2lodPL5TMglLpWq2EDlpyApV//7V+4/lwv3+vFq/ehTkTZOfrKpWqOzpP4XJ
N48tN++uo/Oiw+dJlWmq33pZ1c0KMVNuDfS0VC0OCEEQBLVotUYrVCYSLDPy
1e8X4Lkm/VLCY5X/zaubFSp98uzBg6f/SPPfNvBV9MMlGrJCpQ+/9/br3e/G
zkjNvK37JCLRtt/FoUsF3H9NC04FD9L3c/3yb66nev884x+NNxdVq65//SOH
6vsarCmsaT1UFOEZL92TDrmnVX25+Zn/Sn/9ZrdCpTkHHdtTf21TiOqXwmUd
Nu1uc34vCt5u1U2n08gVvjVLyv5fXfdlA25xb1Y2w3rpKLdCpY8f/vPPf/8r
vjCvl06VHz+SWSGd/yy5UrVfd3fdQF25f94/S91r1a7mQMPD331e1K67FXqW
sNOknZZuf4f5b8prmY9tb10t3dfk/x/Ojgp1nvpzLWuUsCMh/8/efUBFce1h
AN87s5UuINJBiiIqoNjAjooVUQFRNLYoGizRGF+MmpjERE1iYtfYNagxsSMI
GguKaFQ0GkWNWLA3sFGEZXd4uxRZlq0EVmS/33nnvAMsM3fuzsb/x71zL7/f
FgUDsWUvqhW3Zfb1mG8jhi5OLTqi6OrSDwbPiUmTnfVXEoV6rtdqpTild4iM
qhoV4jj69Q8pMqBf7wBfJxOaY9E09LtDyjbVUdq2Kv1kldtXqPTfBsqowYAF
ybJDjVrcvSW/oF0UYh6vDuRpcE0AAPCeqo1RSCIr9e70oIMONjHWNrFegSnz
/njxTPE/ZJpMkMs7t/XK2H5HfdxjbWyUr4eg4dFKqYpCBS++a7fP2vFU9FN1
R9FQ0RPlNg3O7nxefO430eFxNg5Jy2+Wzcu/uTxJ0vLARVly5U/BuSuSetUx
/E7FTThUXILwTGobuxjHIXfLPx5RNBDwzqOQpDT0YGtQCxUVbFTdHsOD7WlC
OE0/O6Vg10ltJsg9+WvdZ+EdPG1NuLIfgIpRqMLSXcIT0ihkNHhXyUmEyVNd
aRavl1x1LQkgzpVYQS7/YKS10oEtyi7qSFlXF0Uhqp7a9fvyE0ZbKeoVuTbV
nttSBeHRCUVrnv2Ypn6CnAZ3iIxqelaIeXVhWV9bmhi0/PaidndvlX6ySvcV
MmnYqW9wcHDPZvVowm4y46zcLaXF3VtyIdpFocLXRZ9k+/FHMUMOAKBWqqVR
qIjo/l93v4860cxZuviAR8/LhxUsiaouvDD5f3562NFmX8MuKfPW3o9PfHbq
dObpE9fD61dvFPq2rTQKbX6m7iiaKmqYzf7h26UTisQPb4c5xzgG35SZR8/c
WlFcc76Wq9ekf7q3q2zNOfRu+XWUxWe/0tFi2iqj0OnPJKWhuqV8S6fxSOop
Y89uHV24hOM6KqbCr2gahZhnsZFuPELV8Q6fsWTzngNHjiUlJR2Z282AKIhC
jWed0yQK9d5Q/kkc4Unpt7WPQkW5RTDgN0VP3si9tCgK2Yz7U00UEh6b5Fg0
KqT6kLXntlRBnL64A5dFmX+wV3Vi0fAOkVFtyyYUiq7MbcGRGVPRsG1V+smS
e1aIebQlpC5FTAKWlo+UWty9Jdem5ajQE+moEO0+7RSiEABArVSbo1AJ4ZPM
9R8ddrLZ5/Xx4wr/XKoJL+I7N/s6xNi1vHhUdqbPmwdjqjUKiXNWB8da2x+d
90+VbWchun69u0OM67C7GQzzaNMpZ5u40A25smd+vfusi80+n88Uz0TymPRY
u5lIN9J6Sn7UM+1GubJFfGhygu07j0Li2wslP2N7zjynwTQeFsd39t85TO75
uW1NCGXZY+W/cov4ahaFxLcWtuMS2nlsguxtmvtHWKWikOja/FYcFqfV/Gvl
ujcvbqQFpX0UKrgw24vN4jSbc0ntsIWmUah4nS9Oi7lXVR+y1tyWqhSc/dyD
zaKsR+xTNV1Q0ztE9sDVFoUKX0X35bPe3nGatq1KP1kVlk0QXfupneSzbxWy
5aHMfxe1uHuLafus0LmZnmwWt+MShYvCAwDAe08PopBU9oMxbuUexy7FXF90
TBJewjfnKfx3UXjykq9djNPwe7IHF56/0s5ecRRSfTRZqte5SpHu+biv8zxN
Vn7QjDh7ZVCsjduZ7RlvtkTE2bj8tflx+Z/fvx3iFGPf/srfCp5PjxuyVcEV
qX4+farXPhvX09tkB7ZEr3/uGlsDlk0QnpLujcluOjNF5fwtuXWu7kSHSmcN
NZ+RLFvRahiFhIkTpcMkfaNfyv7uael8okpEocK8A2OsKWLUZ4Ps39JFl75p
xqnMsglF21YSTvM5l9T94VvTKCRpYKSkW0xCtqrZXrW23JYqFfzzTTMuIXzf
L84omghWTNM7RPa41RaFCs7Nasxm0fUnJwm1altVfrIUrCCXk/xpIw6hncbE
y9xWmt+9xbRcQe7x2h4CQjtOTMSgEABA7VQLoxDz8Myjk7cKZMuaV6cud7CP
cR50p+IsjJc7zrjY7PP66KHCVX9FaWk9HGLs/C+dLK1hxM8zf+wbb6v4WSE1
R5OlejFtUdqNIJcYm/qJ0/ZmlxUwjOjR5dePKvlPMnN3TbKTbfzY6Nsj3Pa5
Dbsrv54Vkx8/8aCdbXzwz2WrFmcmX+nuEmPX/MKfinKmyksQnfhcumpxu+lP
M0p+Kr63M6WZXY1YTFt0dUFbQ0IMmo79/XpZccrk3L9w6X5Z98rvfsK8ODKl
CZ+wnYftfPT2qBpGoeL6i3aflFg6MCnOODG7nRml8FkhtVGoMOfIeGdJ/ecR
lVC6SLEwfUu4Pc2q3GLal+f7SfrDpOXU/ffK+lWYcWn/xrhy4zoaR6HC17uG
WFCU5ZBdL1W/rpbclqoxz+PHurAJoa0DZuy6+urtaZi8Z1fP/Vv84JKmd4iM
aopC4hdnfuhmKV30I+pQ8a9o3rYq/GQpWkybydj9gS1FuI0/O1W2wJ3Gd29p
E7WIQsyzzf1NCVVvVJzqPgYAgPdWLYxC4pMz/7SzjfPqkBQ2LGXix+dGhR5t
7BBj43x0dpKCeWvM80cTffZZ28S16Ht24uS/o0afDp96r6x+FmdvGBhva7Ov
QbtT4z+9OCXyZHuP2Kbhlyd3jVUYhdQcTVL4Hbuzft2tdeturf3pbBv7GHv/
lIVrpV+uW5f+5w3ZSkx887eUVo7SZR8atD42IPxUSJ9E/yZxtk6n/1CzeJdS
4ofpA+vva+p32N0uftROBasQM8+ffdN9v610L8tTH350bmTIEQ/7GFv343OS
ZF+s6SWIHz+c2LJkL8sxUeeGBR1ydzjYJ6hat1gV3f5z9bKlUku+DnGVruo7
cM6Soq+Xrowtt1lo/r/rw+rzCItwzFx8OwUGdvbzcbcyoPhBm16UXYH8RpCS
s19eGFCHosy7LrlScjRNnxUS31je1YwilJlH96GRY0cN7NLInFuv2+SRzTiV
ikKSd3PnMGdO8RarYRGDgtq6mHBs/Pzdym+xmpu6d0Xx9S+e1q0exeL4jPy5
+Otlaw+ny7wLwrToIe58SX/wrTz9uwYG+Pk0sDPlSurLoXtlL0zzKFSYc3i8
E02Me6xRswhx7bgt1cq5sDTIgSv97x7h13XzadO2bcsmzuY8inb7tGR3Wg3v
EE3fU41eVnz3su1bBQUX69srwNfJmJbeCA3H7H2bSzRtW2EVfrIUb7Eqvr2y
m6kka/n/ILOVgYZ3bzFtopD45uKOAkK7TUlSOcoFAADvsVoYhQozU9JnRyYH
tExwc9pnaxfr7n2k75grv11Qujlp9pV7Xw5N9HGPtXeIa+BzJGj6Q5k/TUoq
scy1U5L9PePs7WMb+B4bMffhzVxx8ucHHRRFIXVHEx+YEG9jXbYMncz/Yofv
kJ8rn3nh7tyPkjv4xDvb73OoH+/bOXnsNw/SKj1Rg8mTzkGyjrH1SFG2LQyT
9Xrv/JSgNgn1HWLdmh7uG3Ut5t+C8hWDFpcgvPdkUVRSa484B+f4lr1SfojP
fpV40cu2+qJQXswHpkpuLbnZPRKiZ2c3fj64o6edmYBNcwzMHZt2Cp+27WrZ
cRUUbNLKfcdQJzYReE87XjRKofkKckxG8pJRnRpYCthsnpmjb7/Pd/ybk390
vD23UlFIeur0/d9G+LmYC7iCOs6tw77cnfbyQKQ1JROFmCdruvMU9wdlMTKu
fBeKM//ePCuio6etqYDLN7Wu39gvOGrulpRywzRaRKGiotWE0C7jD6t6RKaW
3JaaEGee3zJ7eDdvJ3MBm6K5hhYOnm37jv3p6Nv9dDS6QzR8TzV7WYV9hQjF
Na7XwD/sfxtTMsv1hkZtK1E1nyzFUUjyIT8320e6gkOvtbJP72hy95a0TuMo
xDzfN9KBpur0Wa9wbBkAAGqF2hiFAKAGEF5b0qUOxfGYdPilJo9lANQgzLPY
0fXZlGXPVTewoxAAQC2GKAQA1UT8cM/oBjzatt+6yg9mAuheXuqyHnVpQePx
8RWXawcAgNoEUQgAqo/w9vYxjQ15roM3/YvnLeC9kHP5l/6OXONmE2PuYUAI
AKC2QxQCAAAAAAA9hCgEAAAAAAB6CFEIAAAAAAD0EKIQAAAAAADoIUQhAAAA
AADQQ4hCAAAAAACghxCFAAAAAABAD9X6KMRkXdn+1QcBXo4WRrZj4vN13L0A
AAAAAFAz1fIoJL61qqcFRSgTtw4Dhk/5NVWk8w4GAAAAAICaqHZHIdG/37fm
sNhNPz+dq/uuBQAAAACAmqt2RyHhyamuNDEI3/FG9z0LAAAAAAA1WC2PQsmf
SKKQ4aCdebrvWQAAAAAAqMEQhQAAAAAAQA8hCgEAAAAAgB6q1VGIeb4t1IxQ
VqMTsIg2AAAAAADIqp1RiCnIfpqWvHVmoB2bsJ0j418y766HAQAAAACgBqqN
USj391B+0YE41m1Gzo+7ieXjAAAAAABATm2MQsKTC8L7BPjWN2UTtrnX4GXn
XmNQCAAAAAAAyqmNUagEk311XZgDTbi+314WvZPOBQAAAACAmqoWRyEJ4dEJ
kixkFLEbK8gBAAAAAICsWh6FsJg2AAAAAAAogigEAAAAAAB6CFEIAAAAAAD0
UO2OQqJ/vvbmsDi+31zCHqsAAAAAACCjdkehwoJ/5rcxIoRt4dl14Mip0alY
SQ4AAAAAAKRqeRQqLGQyz66bFtaukZ2ZgfXoeAwOAQAAAACAVK2PQgAAAAAA
ABUhCgEAAAAAgB5CFAIAAAAAAD2EKAQAAAAAAHoIUQgAAAAAAPQQohAAAAAA
AOghRCEAAAAAANBDiEI1EpN1PW7hxAFtPWzMBFyuYV3X1v0/WXc2U1zhheLn
F36bPSygiZ2ZgCcwd2oeNHldynOm0ufNu33g56igVm5Wxnw2m2dk6ejp13vk
5ysO3sz5L1dT04jvLO7AVXjv0e7TTgnfdfMAAAAAQCcQhWoeJmPfuAYCwiJc
c3e/HgPCQnq0sJd+KWgy5bBszGFenVnQw44j6SUjp5bd+4cGta1vJHmZoe+s
k1mVOe+bvxd0sqBYhDKo5+Hr79eisYu1MUfyTlF2YxIqRqGCi195G/bakFn5
3FV9R1OjOApRxs7N28rpMGh5qkgXTVBLpx0CAAAAoJcQhWogJiPuk+BRSxLv
vin9Ts7lxd0tKMJt/f01mUpddGdLuGeLyPXnS4eL3lxdKn2ZQZcVdyoOIKkh
vrcq0JBQVj1/Tnn+9pdFr24c27p85+X8ii+/vag9l1dVtXrVHk3t2YqiEKfl
vKs1I/YooNsOAQAAANBLiELviTf7R1lJQk7o79nlvi0qKF/NvzkQaUMRo/Ad
udqeIC9mmBmhnT4+rtEEMebpht6GpKpq9ao9mlo1PwrpuEMAAAAA9BKikC7l
bAvhs9iNZ50rkP2u8MSU+jQxGrwrT8Wv5h+MtKaI6ZA9b1S8qLCw4NxMTzaL
H7TphbZtK45CzmqikOjm9mkDu7Zwryug5d9DdsPpZ2SvKzf96NovRvTwda1r
xGNzDS2cvAM//CHhTn4ljqZNv4mfnlo1Obi1q5Uxjysws6nf2K/vR9/9evqJ
zDCZJlEoa9/wehRlPSouW+4HzLPofiaSjpqUKHva/HuHF47t7m1vJpCc1L5p
t9E/Hix3pUWXQDtMOPry+q4vw/3dJH3CNazr5j/oq5hbMsfRontLm5MZN6Gx
mbFz6MbbWg8EAgAAAOg3RCFdqnQUYl4eGFufpsz7b36iepgga+dgDQKNIuL0
pZ0FhLYLi05X8bvie4dWfj9v3rzvJnezpVlsj9Av55X6fnXiQ5lqPOdQlBNN
aGPH5l2CB0UMCvJzNpTcBBz3CYdeaX00zfvt1dFPPPmEGNi36BE2ZOjg/t1a
uphx5GcMajQqlJMwxpairIbFlH/uinm6qa8xod2mJpclnbzUlUF2bMKx9Ozc
b3DEwF5tnIwowrbu/cu1stcUX0LDDu1s+Lb+w6bPX7Ro/rRQLzPJ61wi498+
AaZ598p0ggst+dAYDdqpOiQDAAAAgBxEIV2qRBQSvclIO75xcru6tEHD4dvS
Vc/oYp7+FmpJ0fbj/qzEim/Miz8nevAIYddtOfLHmNTnKk8l+udrHw5L5Qwu
UXpS7F/3y+rzN6k/B5gSYjxg6wttj6Zxv2XvHGRC2J6fJsuM5Qgzrpy7/kr2
wJpNkHtzOMqRpiyH7JK9sZgnG/oYEXajz8++bUrBpbmtBJRZp7lnX5aeJP/m
xhBbmhgH/vI2gRVdAotF24ZtuVt6VuZ53IeONDHovvqh3HVr0L1vj5Hwsbel
meug6HSMCgEAAABoBVFIl7SKQq83B/NLeoRn1/aj9RdfqymLmYz9Y1zYxLDd
gso+AyO8G/d5V3ue5N0hlIGD/9DZW1KeKpiUVahNrS7j5eZ+BoTtNfui/DGr
LAq92tpfcoams1JUzTVUvpg2p9V8mWUp8o5PdqEp80HbX779FvNoXS9DyQm+
vPC2JfmJE51o2nXKiXLz4YSnPnWjCS9gxX2xzCWw2N5flbv4N7EjLCjKZtwh
uXUpKtW9AAAAAKAVRCFd0ioKvTm5ePTw4R9EhPRs29CSSygj9+C5iU9VDML8
GmJLU6YdF1yquN6bVo28dXjV/0J9rYsTkZnPhxtTK44xaVeri/Nzs7OzsjJ3
DbOgFD3zUmVRiHm8bWA9irCtWo+Yv/Pvp0pm+pUspm3i5telvO7jt92TGVsR
nprWgE3MwraVTmBjHq7pbkg4zb8tW3FbdHlOMw6Ldug4fKysyAh/a5pFu36S
LJS5BMpqdEL5xJQkvQTjiN1y0Q1RCAAAAKD6IQrpUqWfFcq7l/BZG1OKsui7
8b6ieVDMq5NftDQitP3ALXeqaFW0vAfJ6yZ3tucSwnb56KB852oyQe7JX+s+
C+/gaWvClX2/qzUKSXri9cUNUW1tuNIcx7P2DZux6fQT+dNpvIJcQcpMTzYx
HbAlo6hd4gerAg0It/UP/5b9XtFyFspuZcou6ki+7CV4yF27srceUQgAAACg
+iEK6ZKSkj5xgoPaFeQK85OnutGEH7j6cYXqWHhjfX9bmjJp89Vfr6u2waL0
Nb3NKWISuu2l3A/U1OrMs9hINx6h6niHz1iyec+BI8eSkpKOzO1mQKowCinv
t9w7xzd8McS/aGda2rzVJ/sfyQZIzRfTljTMm0OM+/4qHY0T31vRRUB47Rfe
kjlYfsJoK4oIBvymZldb7VIwohAAAABA9UMU0qXc36X1sOfM8vVwzo5BxkRt
FBKnF9Xvvt9dKV+/MxkHP24iIFz3D/coWmHsP2Ierw7kSVPDtfJnVVOri28t
bMcltPPYBNl3JfePsMpFocr2m/BR8rLBDfiEsh6xTyYkarGvkOjK3BYcYhS0
8Skjvr+yq4AIApbfle3mgguzvdgsTrM5l1QfC1EIAAAAoKZBFNKl/LiRFhRl
9WG87LrH+Sc+caVZaqNQdvxoW4oYBG0qVx3n/vNzF8kh6/VeeVXlb1dWUaVP
eN1+eVS+Jhdd+c5XUqsHrla8uLcwcaIjzeL3jZYdTMo/Pd2DrXiCnOqj/ad+
y/ojzLj8QgdabbEqTlvgzyXGwb8+fbi2pwEx7LFGbrW3N4ejHGjCaT7nksr1
y7WMQmo6BAAAAAD+O0QhXRLfWdqJT6h6AzbdKamImdfn5nUyo1iyJX3BpR3L
d55/Ivt8fd7t3VFeBoQy7xctMz9OfH/HcBcOZdxq1omX/7VkFqfHLf9lz9n7
uTIHyrt78MuOFhQx7Lz0ltyAE/M8OtiQUNaDtz9TdGbR1XktOSzafVJi6bwx
ccaJ2e2kF6ooCqk5mob9Jp3CdmJvYtormbYyL45N8WQTQfc1MllOmyhUKL69
uCOfMgtftaKfMWUctLFCOCm4PN/PkBCTllP33yt7z4QZl/ZvjCs7gXZRSF2H
yLwyKzVu04aN0Ydu/LfFMgAAAAD0D6KQTjHP9o5wpAlhmzfqEhIRMaBLUyue
gXfEwGYcmXo4b+9QE0K45s5ebbr0DQsP6dW+UV0uYRG++we/3ZYp3nN2D6kj
+TZl6uDZWE6TltPk12dWo+DM9IZsycF4prauTVq269ihdVMHE7bk8Bz7vr9c
qTjuwmTsGWZHs4iBU7uQYSNHDAntEzh6U9nWNuIby7uaUYQy8+g+NHLsqIFd
Gplz63WbPLIZR1EUUnc0zfqtZDCKElh7tukSFD5sxJABAU0kPUcETT45LJsV
S1aQM3Zu3lZOh0HLU+Xjkfjeyq4GdD03VxP67QIK5QnTooe486XvkJWnf9fA
AD+fBnamkvOaDN37tmlarpihrkPKjnD8Y2eaRTuMP4ooBAAAAKAdRCFde5O2
a1ZY6/oWAg7XqJ5HwJglJ57mSh+9L6uHmcxzv345smerBjZmAg7N5hvXrd+8
+6hvfr8oN/RTtvFQxT5UN22sAubF+egvRvXx83S0NOZzaJpnZOnk3WXozI1n
nikZOmGy/vl1Sm9vOxMem2NgZtuwbdT2B7LjMRnJS0Z1amApYLN5Zo6+/T7f
8W9O/tHx9lxFUUjt0TTpN2liOvXLJwM7eTnXNeazKZpnYuPRLux/689mlM8Q
SvcVYtHu005VmOfGPFrb01Byx1Lm4dtfKBmkEWf+vXlWREdPW1MBl29qXb+x
X3DU3C0pZWM6Wi8eqLZDil/1eFU3Houy+TC+EpvqAgAAAOg3RCGA95fwyHh7
irIbk4AkBAAAAKAtRCGA95bo+g+tObTL5OPVsmYGAAAAQO2GKATw3nq1LdSY
4/P1RQUzDgEAAABADUQhAAAAAADQQ4hCAAAAAACghxCFAAAAAABADyEKAQAA
AACAHkIUAgAAAAAAPYQoBAAAAAAAeghRCAAAAAAA9BCiEAAAAAAA6CFEIQAA
AAAA0EOIQgAAAAAAoIcQhQAAAAAAQA8hCgEAAAAAgB5CFAIAAAAAAD2EKAQA
AAAAAHoIUQgAAAAAAPQQohAAAAAAAOghRCEAAAAAANBDiEIAAAAAAKCHEIUA
AAAAAEAPIQoBAAAAAIAeQhQCAAAAAAA9hCgEAAAAAAB6CFEIAAAAAAD0EKIQ
AAAAAADoIUQhAAAAAADQQ4hCAAAAAACghxCFAAAAAABADyEKAQAAAACAHkIU
AgAAAAAAPYQoBAAAAAAAeghRCAAAAAAA9BCiEAAAAAAA6CFEoVpBfHdTqL2x
feimu+J33ZT3CvpNO/nxoyypt59Ufsi2nHfdIgAAAIDKQxTSnbxzX/pwCafx
9NNvyv8gN3laIw5lGvjLbWlBnn9gTD1KeffQbp+eFMofuuCvae40i91w+pkC
HV2MhoT3jy6bPKCNu7WZgMsztnJrFTTu+11XXjHVcKr3qt8K7u4e19SQ69h/
VWqu/M+YFylrxvdoamvC4/DMHFuEzNpzM0+3rVNK/OivbWuWLvh25vDW5pSq
KJR9cWkfO46J7+T9D0U6bSEAAACA5hCFdIh5GT/GiSbGActuygxCiK4v6mhE
eM1mn88v+rrgzPdB7duW8PewpAnhWjfxL/1Oh/BllytWl+LHp7as+j0lozoy
RmUxz5NmtzOnCIuwzZy8WrX0qm9pILkYwy4r7lR2DKbg4lfehr02ZCq6zPen
35inCRMa8+m6PZalVsw4orTlXetQhGPl03twRHArOx4hHLcJh2rW3V1wZnpD
tppRodwLCwLMaUOfT488r0l3JQAAAMBbiEI6Jb63PsicomyH7Smt5pmnfwyq
R9HOYw8obH/ezkGGhLKOPJivy2ZWBXH6+qC6FIuybD8j9nbJyAeTdfPQut9O
v65saSy+vag9l6ckCpVTg/tNdHttn7oU22XMfkUBrODvL5qwiUHHhWlF41TM
051DbSliGr79ta7bqYomUUjS+Me7PnCkKeuQzfcw/xAAAABqIEQhHRNemttK
QDhNZpwpGhDISZrqwaYs+v36QHGxWINLetWyDox1oFm008iYqhtxYZ5u6G1I
3u8oJH6wKdiCop3G7H+h8CLy94+ypGQm84nvLw/gsrgdl1R6JK06aBaFJO/Y
s51DbCjKauC2JxgZAgAAgBoHUUjnso5MdGMTk64rbolF135qb0gZ+H1/Rdmj
KmpK+oKUGZ7stz3H7bxM/s/vTOaGXnzDAZuvx0/v5GRiWLfpwOXns16eXjjA
09zAyN5/wo708pPG8u8dXji2u7e9mYArMLNv2m30jwfvVCZNvN491IIiXP8F
aRpU8OpOKrq5fdrAri3c6wpo+RtH2WM+NbXf8pKnutOq5giKUr/z5RB+56XF
L5AOI9ahaOdJifJT6aQrGNAWI+PyxRknl47u7GFlyOEamDs06fK/WLnYoUnb
ctOPrv1iRA9f17pGPDbX0MLJO/DDHxKUvvWaRiHp9M+f2vIJ23PG2QoPapVi
MuMmNDYzdg7deLsmxT0AAACo/RCFdI95vDXMiqLthq1ZIfl/dsNPkpQXlGpK
eibz712rF//wzYyxnexoZSU9j7Zv1qZ96My503o4sgm/ef++Xj6DZ/8wvbcT
m7IaHlM28yovdWWQHZtwLD079xscMbBXGycjirCte/9yTds0JDwxxYVmcZp/
m6r2oXkNTiq+d2jl9/PmzftucjdbmsX2CP1yXqnvVyc+VFQ/19B+y44bZU1R
FuHblT8+I80OAkI7j47LyLn++zgfY0LZDIiuuMJd0WJuvMD5myc2MTCu367/
iHHjRg3q0cLJe1q51SE0a1vOoSgnmtDGjs27BA+KGBTk52wo+cRy3JU9o6R5
FCpknmwMMia0/UeH3ih5RfHNwiJGg3YqewkAAABAdUAUehdE//7c3lB6cZIy
N2LHUxVzhzSc6FX0EI3Skp5F2Y1JyJFmsLU9DQiL3fSL80JpI+a34tAunySX
VM4F0ql7lFmnuWdfljYo/+bGEFuaGAf+ouX0rBe/BvEJMY3YXWF5NDlanVT0
z9c+HFZVTpDTcb/lHx3vIPl2v80qLyD7xP+a8Ahl7mAvSS0chz6Lzil6uKoo
ChEez8jjw53pMlfJyL5W47aJ0pNi/7pflkTepP4cYEqI8YCtLxQ1UYsoVMg8
Wh0oyXZlHVbhBc8TPva2NHMdFJ2OUSEAAADQJUShdyN7/4c2FIvFbjzznMpl
nKumpOcFrnosLYWFJ6e60lS9MQeKjpbze4iAGA7aWTz1Kj9xohNNu045Ue5M
wlOfutGEF7DivjZVqjh9cQcui3aYkFhS/TJPdkzoVLqWW/uQRRdKLlq7k+o8
ClVxv4lv/tyWy+L4fndF5VhZVuqGwS5syUeECFp8euSxktcWb/FD2YzYp/zG
/y/v6cvN/QwI22v2RUX3pzZRSDobsRGbxQ1YrtU9BAAAAFDtEIXeBeZlQqQT
Lb1WtsfUE6rKySop6aV1e9Ef/AsuzvZisxvPOl9U3ubt/cCU8PtvzZJ+Ibo8
pxlHkl46Dh8rKzLC35pm0a5K/6SvuDnFUchxYmkUEt9d2olb+gbTTpOOFX9f
y5PqOgpVdb8Jj38sedf5/bYoXw1O9CB2UnMTinBtGzUwp4hhq6/O5JT04KFf
FixYFn+rNBkVjwoZ9N+q/L6v3Hsqzs/Nzs7Kytw1zIJS9iiWVlGIebw6kMdi
N/jfXzVs0ysAAADQd4hC70D+ha+b86i6wdMim3CIYYeF15UPElRNSV9n+L6i
IQzptjxsTrNvLhWdMC9GWtL321JU0ucfjLRWukEpZRd1RKvHhZ5v7MNjvT2t
3OWURSEtT6rzKFTF/ZafMNqKIsYRu5XtmCpKW9bFlBC+57h9D4SP94yozyYc
93H7nzGF4rQf/TiE12Hx2zlkRVGIqqfqCrVom+jJX+s+C+/gaWvClf1wVkkU
Kny9pR+fRduPP6pNnAYAAACodohCOie+u7Z3HUrQZn6q8NmOwfUk5eygP5Q+
LlQ1Jb35iFjZkn6OopK+qEwXDPgt679en5QwcYIDzeK2Xyi3Jph8FNLupDqP
QlXcb8JjkxyLRoWUvLbg/KwmbBbtOimxOGG8Tv68mUByFf03pp2XXDnhd1h0
6207i6OQzbg/VUQhDdvGPIuNdOMRqo53+Iwlm/ccOHIsKSnpyNxuBqRqRoWe
SEeFaPdppxCFAAAAoEZBFNKx4rlxtPNHB6WzpAqufN9GQNgen55Qsr6Azkr6
gguzvdistz/7j5jnW/obE2Lc99dn5VKLXBTS8qQ1MQppcwmi6z+04bA4LeZe
Vfza3N9DBYSYy4yl5V9d0lU6T87Wrg5F1R34u0xvahCFNGyb+NbCdlxCO49N
kP0I5f4RVkVRqODcTE92jdsaCQAAAABRSMeK58aZ9Vpbujryq/gxjrTyWXI6
K+kL3xyOcqAJp/mcS1Xxt3vm2daQOhTht/r2H9mWy0UhLU8quvKdryQKBa5W
v19nzey3vAORNhQxCdmqeHvVvH3DzAgxGrD1pUwLH/w+2F661LRhuwXXZFOJ
BlFIw7YJEydKB6v6RsuctjD/9HQPdpVMkGMer+0hIDIPjgEAAADUEIhCuiS+
t653HYrrNets2dMi4lvLAowkVfvg7YpmyemupC8suDzfz5AQk5ZT998rO5sw
49L+jXFKhjFUyUv5shmfEL7HB+svvChtVY50qEEmCml3UuZ5dLBhUVc9U5eF
ami/vd41xIKiLIfselmogPj+qkDJkYzbz/s7u+Rb2de2fNjYQPpxoW3Dtsju
LqRJFNKsbaKr81pyWLT7pMTSiXTijBOz25lRVfKsEPNsc39TQtUbFafstUxW
atymDRujD92ozGa+AAAAAJWGKKQ7xXPjKNsPdpef4JVzfLI7WzpLLrniLDmV
Jb3o9p+rly2VWvJ1iCubxW4wcM6Soq+Xrowt3kJTi5JeUiKnRQ9x5xMW4Vt5
+ncNDPDzaWBnypVU0kP3KnvQX5X8f9f0s+dIDkcZWDdq6e/XwtPBRLpGtGwU
0u6kTMaeYXY0ixg4tQsZNnLEkNA+gaM3KdyMpqb2W87h8U40Me6xRvHC0llJ
n3kLCIsyadRr9MdTxoa2sRdI0qT7wC+ndDanKLNOP10umzunSRTSrG3iG8u7
mlGEMvPoPjRy7KiBXRqZc+t1mzyyGad8FMpN3buiuJsWT+tWj2JxfEb+XPz1
srWHlewJJL65uKOA0G5TkpTeQsLjHzvTLNph/FFEIQAAANApRCGdEV74xpen
cCqc+MGGoDoUMeq4qMKPVJb0RTW54k4sne6kVUkvbUrm35tnRXT0tDUVcPmm
1vUb+wVHzd2SonYURgnRkxMrJvVt4WxpyOUZW9q7NW0bPHb2qv1XX5U7nhYn
ZbL++XVKb287Ex6bY2Bm27Bt1PYHWkehd9lv4tsru5kQ2mX8YcUraoufnlw+
LrCJrTGPIzCzb9p1xJwdqZLeEt//LdyOJnyvacdL+k7DKKRZ25iM5CWjOjWw
FLDZvP+zdx5gTSRtHGd3UyiCiKAEAkgRESt2wY7YOVFAEHvv9Synd+qdXtU7
PdtZzrOceurnqSfVBjYURbGCKIpgLygICpKQLN9uEkhPJhhChPf3+PhA2OzO
OzPvO/PfadbOrYMW/XuvkHd6GpclK4XIV3/2ZqvONrzumBhV6SBzo8Y4EXid
AdsVh91krnm5JYBtgnPGxSFtRwcAAAAAAKA3QAoBgEHh313nXwdnes2Mf1dB
gfm5QOZEj3dl4LZ9tzzQcKIQP2EaF8cdJxwDJQQAAAAAgIEBKQQgQr46u3n5
Mq0s33GpunfxPxXh8//Ge7IJh6C/7lfjnQSK0zb0sSPMmkyLU7tVPI0gY2V7
JuE2+1xF5mACAAAAAAB8CiCFAEQEt1f4MDWUmwRWl7WwabJW+FkHJzSxYLsP
3XWvWkqAwtTNg5xZlj4zIp9oGBCiyd8fYsls+d1NLZcBAAAAAADoH5BCwGcN
qYqqThQAAAAAAADwGQBSCPhMoSSPUCgUCAR8eahPqM9BEAEAAAAAAACaASkE
fKZQekcsfMS/yv5AfU79teqSBgAAAAAAAHwGgBQCPkdIkqQkT2EhvetYYGBg
UFDQihUrqP+pn6lPqM+pv8LAEAAAAAAAAKABkELA5wglc0pKSt6/f8/j8T5+
/JiamkqJIOp/6mfqE+pz6q8ghQAAAAAAAAANgBQCPkfKR4VevXqVlZVVKhob
ov6nfqY+gVEhAAAAAAAAQCsghYBKRvh4VwjXkhuy67F+V+8IhUIej5efn//s
2bPSMilE/Ux9Qn2u17VC+jBBmPmbH8uE3fvPVyDQANXw4sba4uWB0DR4P5w6
+1nBT5rfkDAxDT1Y8Q3y3/39hSmG2YyO5ukxXQAAAIAGQAoZFt7JyRwcMxvy
b7U8TUYlJZfo/gGj0VfJ+j06RjwwVFRUlJOTU1omhaifiz7cW9OZJVuhLMIP
SbObd3xCfVxt5TMhPOZdVDr3VB8m6CiFyHe3Dnw/oX9bd3trMxbL3NrBq0Pg
xO//SckRVDgFBuTDvsGmsrnK7rNN4zmrVUTJ4yOTm1mwnAdtSSuq6rTQCF9c
2v/n+l+//3pUexscpNBnh2op9OHm+gGOTKvWs2Ofa3de3slJHJzhvfiq9kij
pvaKmhgTjN3u53S5x/FPT3ciCPe5F2TDW3HW8dVTA9t51LM0ZTDYtWydvTv2
H7PojxOZGmte4ckpzgThOvPsR+W/IQQuwcvEP2YGtm5Qx4zJtqrv6Rf29b7b
BbLhIW9XoKkJw3PBZYVMEJkg9Qs0S3UL+BXLEBWU3FjajFHeBOEMs9r2DdsN
mLwq9oF8qBE+WtuFpTplDecnlaWMfLbJn11+M6Z5bXvP9oGTV0ZlVDxCIFiK
lrZy9FH0iLVXfFlZ3ppaOzb2Gzxjdcz9D6os1ckBgRoKSCHDUilSqOTmty0s
+u14a4SdTRrhy6S9Ww5cfaP/5FFqiMfjvX37trRMClE/8z4++J0K4IS9b8TE
STSTZ267Lm1TS5J/CezsJ8HXy5bAMJZ9U9+yT7qEbUhVjpd6MEEHKUTmJ6/q
48iknARjWjs3a9uhdWNnG1PKhVgtv72h1AAZHu31jXdl83RR3k+aGN6+Hm6U
Uoh8fWx6E1PCrs+GNGN7L1GS/FUjBkihyqESo6XaUaGiG7/2sCEsWs5LyNXy
WMHt5T5MVo+NT7WMP6uvvWW9RKLB1HjZ+qMshT5e/7VbXarfiZvX92rt27FN
Ezd7Szrq4I4TjmmoeWTuwfC6OLPFshuKcg0lcAmy/xnqysKop1pwGrdq1cTR
kqB+qeUz/7Q0a3SSQtos1SHgVzBDVCKWQrhd84D+FH0DOrVwoi01wa19l196
L71OLDdwywat/BToEr4xrSxlYimEWzbs3K9//369urZtaMums9my7eJz7ypQ
k9EsRUubOIF6KnrE2ivuRzEc2/Tt3693d9/m4rzFzDyHbr+jQp/r4IBADQWk
kGGpDCkkzPq9M4ttvFKo8hBLodzc3NIyKUT9LJFCrE5rHmqdzlZ8KNwCw+0n
nqj86SjIUqgk44/etlQrZd44YmPi87J6Qr7PjN+x+3wl6Emd0am+Ce7+3I5p
hFJIkLVtgB3OcJsQawxZqgBIocqjMqOlhgly5MvDI5wJ3D54zxOlqES+2hnh
4z98wZr9ZzPePv+rr6nVsCP5b+7E7/31y4geLUfuVU6qptorbmLYpmzc+oud
L6R/VpRCwidbelHBr17f1Vdzy5MkyH9w9p+Nh1I1xEPh0629a2FmXdcqhleU
wCV88teAOrgJXr/3yqQ3or608F3K+kBHwoRwGhudJ0mtLlIIwVIZNAX8imaI
asRSiN1ry8uyhJH5t7cPdWdimGmHlXfLdYRYbjDb/pSuacRCLIUYTZeUv9Tj
PTuxsL0VLTW+u6nrXAVUS9HSVqrPokcsU/FllhFHyp5V/OT0miGephjGcBsX
paqt0eSAAABSyMBUghQiX+/ob4GBFKoeUoh8vvMLqsEguEP3PzXO0Xzd6ptx
SiHhs10D6+KEy4TYPGNKVhkghSqNSo2W4om0atYKkTmHhnFwvN6Q/YoRQPw1
cePHtK5jiTNr21gyJG0ko9lSxdEXzbVX1MSw/UeEcwlWqxW3y7+rKBCKI0da
Y4TLrHO6jTNTDt2ehdUO+lvBCqTAJRrzMsHrBP0t08ulymRfaF2qVeyx4ZE4
YusihRAslUFTwK9ghqhBWQqV0gNqB4bY4CasruselbVNFZVCFB/jp1LZweyw
MkPHlgLVUkQppM+iRyxTJSkkesSjHQPtqHR4zDmnar6zegcEAJBCBgZVChVl
n962ZHSf1u52tdgMlkVdlxa9xq089kg2gAsyD84f0rNNQzszQjE7Vaxq4T2J
XzOpdwuutRnLzJrbLGD8qhNydyst3B9sSjhNP/0u4/DSMF8P6rksCzsP3/Bv
Ix+qSCv5LvXgijG9fBrYUteZ17F3bdZ1yOzNSbL9i5Kri73LJ0ubsLpvUPs2
RmvaRAhfJ22ZPbC9ez1LNnUZx7VJxy+mfL8r8enHypNC6CZozxBVUqjo5tre
9XDc2ndZoqRTI8hY2YGFYZZ9/9Q2Q4a649uUnQuCO9BFZWpl79V15PdH78v3
nekyNWE0+SZFrjLwE+e4ElitoYeLZS7TXvS61bfybxmjFCq+8GVDArPw/+OR
2kymdzAg6o6J4QnfXFw/vrtXPQsmy9zGqan/gmiFhhSl9iK4syxGKoW0WcpP
X9OtNuVOofuey+Sr8PFOqoOC2/T6476kjhTsGWhKuM4+l5t+YNGgNi51zNgW
dp5dRq2Kf6aiEqEFB60OqOdoKbb3yYmfR/h52FqY0ukf/WvC4+QlTRnqt00Q
ZPzmZ4oxvBdfUeiCFr/NvnszOTE+7sj2WR0s6XlKdXt+vefosYQLV27de5yr
8GQttVfcmQzYcPxbHxbhNPFY2WQs1VKogY49f/7lr7wYuP3oqAJF2xACl/Dh
mk4syrgRRxXWdHw4OoLuEPfeKu4m6ySFtFsqg3YppGuGqEOlFKJbAV+W3Eqb
T5BCwqcbe1A30128oVqKlja9Fj1imaqUQlSm3/quJaW37EZFqlw0pNYBpZBv
Y6Y3sbZsELIzCwaPahQghQwLohQqPDXVhcAIS+dW/gPDI8IDOzawoHKQ2XD6
KamVwienNv3y008//TA7wIEwYXiFLP2pjF+2npHtjJQWp20KdGRgTFvv7kFD
I4b06+BSC8cY9v0335W2COJuc6MunTimDr4jv/r5999/nh/S3Jq6zm1inPwE
25Ks/aO9zOk5v+b2jdt38+/esZmTFYNeRitrFfn2+uGta1cuXzypmyOhXkeg
pI0i//Rcb1MMM+e26RM6bPjQQQFt3ayZmLn/ugeVKIUQTUDKECUpxMvYHuzE
wK3aLTpTLpjIF1t6UVZaDtqrbUqz8OmRCY3NMIxl19R/cHj4wK6N6jAw3Kbz
iov50m/qIIW0F70O9U2GT5RCwicbuqteuEth+sXudxW56YeYsfY4XjfsoIZM
Fm3mxu71854ZTc0tXTsNGj158tjwPm1cWsyX21UDrfaiuLMsxiiFkCwtydgY
UAfHOWH7y+qDRAjZDtiWVd6doqUQVd/8OtrbtgyZ+8OatasWj2hXj4GxG02O
ka8miMEBwQH1HC3pCTdHx3lQPUCmXbOAkPDQvm255qaevQM8NUgheiZcoCVG
cKecUrWeoZTMPzPHm23RecQQD4Z5m2VXVJe+ttoramJYfqvvP90RWBu36rtN
0kFVmiCXvb67GUY4hu7ORu9Jfzg+kUsQHnMSFSxEC1zF0aNsMBNWjz+eKVwk
fLyuK9VRtp90UpTFukghBEtlU6BpglxFMkQtqqUQJRvaM00YjRddKTPtE6QQ
rUGomyHtsSEHqqVIadNv0SOWqRopVFpy7ZsmDBPCdU6iSsO0OGCpqHF0I6hO
aK3wQ+ouAaolIIUMC+qokCD7fPSlp1Jn/Ji2ukdtKt4M/idP6VLRmxANUz5K
bv/Yzgy37vbjlfIFlrzMncEOBGbZa3P5m0VRf9jEhHAI3fu4fLFmbsw4ZwIz
7731ufTewswN/lYYxm4YsfWadKYx/03Gg9cqu8OiyfnqdARa2qgm+FC4Fcbw
nndB5m0P/03a1Xs5xQaYIKfRBMQMkZdCgscHR3mw8Fqt5p3KkSk2/rlZLoQJ
s82PdzRPeSCf7x5ki+PWXVZcKss3wev4+a0tKPUyLb78ha0uUgil6MUP0lbf
5K/+NClE5p1ZPW2SGqb/cakizRXv9DQnqn4F7dFkgEgKYWx2La9xh7Jlaofc
WVWotVcXdxbd1+ikELqlD7f2q4vjDuEH6Le8wse7aCFUf/BuWc8RSSETzLT1
0qvlBhbf+rGjOcZoOO+CNDKiPlSXiKSnaFn68cxMNwJjNpoc+0ryWWHquj6i
rdA1bKZNvtjai+qDuqnqpZNv4ya5M3C7iENvsjb618LYTeaeyVdOpNbaK2pi
qBCSXvLh5BQXgtl86XXRw5QEApl3coYXG8MYdm3HrIpMy9U+y4p8uz/UBmf6
LL+teC1S4CJfbunFNqF3ClfKn49HIiyx8mLRRQqhWCpFY8DXPUM0oHqCXM6e
QSK/l8qGiksh4aNNAbUwvP6YaJVDIJpAtBQpbfotesQyVSeFSj/sDzan7jZg
p2pdpskBxRfkHpvVwtbaPXx3NowK1ShAChmWiq8VercniOoqNF+mtEZSW+PO
OzPDhQoicxLloj8/aZ4HgbF7/FE2qC3uDzNafCv3gI/Ro6mODWfyqfIvl6R8
3YRBtVNzziP20zTpCMS0lZbm/zOIsr7ZN1fl8s1Qa4U0qzm0DBFLIdOBe/JL
hS9jpzU1wy1azIx7KX/D4qPDrTBaOORoFA7C+7/6sihluEh+oF88+GAZuKtM
dugkhbQXvRiDSqFKQJi5mioIZusfNMpN8RE/OGd0lPq4glx7VaDWnWmMTgrp
Yqnw0c6B9XDCYejBZ9m7guifwg7IjxmKpBDG9pf7Hpm7L9gKI5ymnyl7BupD
dYpIeoqWxScmUXHcou822YUP/EsLqGLTeK5QydXFjRkmKnaII99EjaFHDt1m
0TtUF8RNoPQOw33KccXVQNprr7gz6bMiVVAqSPuxLYtwGCOqw6oEAv9xzKKe
XNFeZLi5k+/wZXuvvlY/wiB8vCnAAjPvvkG5l4gUuMQhkC5ipX4o78TE+rgJ
q8ta0a11kkJolpalU0vA1y1DNKEshYTvbmwd4srEcMfRkdJiVbthNbPdz9LN
FeSkEFny4VV6wtbJbaxxvHbX1XcqlEAUS5HSpt+iRyxTtVKId2x8PendlFHr
gEANB6SQYamAFBLyij58eP/+7eGRdXFVizK0NO6C1BU+TCoIdR0l90Z9YoSv
PWEi016I+sN4vfHH5PsA5+lus0zIET5e341FN1OXUAOwBh2Bmjb6rdL+IfVx
jFGv/eifD11/LfncGKQQaoaIGgPMctiRnKRl7S1xsyZTopQnlUmalb7bNW9r
9m7PQHOqRZ0ar5DsoiPDrDG87ugYSWnpIoW0F72Ez10Kid9imgbtLdB0lXhU
yHzQP+rDCnrtlUWbO9MYmxTS0VLh039COThRr5GnDU44jzyiuEpZJIUIl5ln
5b4muPNjG6YJq/MaySR91IfqFpH0Ey0F935pz1R+E150JKI2plEKkS+39mKr
TuyHjMjvI4avFe9RLEhfP2Loikjlc1K0196yziQ9ckO+2h1UB6/Vc9MjoXqB
UPgwfsuCkNb24m6xdctxO9NU1ju6gFh4ncF7VfR5kQKXWMYRzjP0LIWQLUUM
+KgZohHJZtr1WvYZOHDgF/0D/Jo5WuCYCW7lMydO1iEkG1ZbeXT0l6f3tP3S
5kb2XKGyfhJey3Pwrxc+afsPLZYipU2/RY9YpuqlkPhu3darOQ1dgwMCNRqQ
QoYFeYLcq0t/LQzr4u1gxZLNrApIISo22Ks9YY7qTidIGgVxt9lL4f5K3Waq
l+alPAVaExp0BGraaMiCmzum+nFYdNBm27cOXbzr8iu+hnOFDCWFUDNEJIVw
uz6jBnIJDGM2W5ikYlqDuK1ndlh1X9s6VaaqN8MllxZ40mnZKkmLTmuFtBZ9
2dMNOkEuN2HVpHFqmLw+qQIno4reG6pqReWvoqUQXl9TzdCh9urgzjT6kULk
20NT2rZQoO1MxQXvCOjip+JHv9g3hP4G4Tw6UrmHJF4rpLgzmngODaNx2coH
1IfqFpH0Ey35F750J6i7KHT/KJ3SQO0OchLb9wZRMpA77XQFl6Nor72ynUlK
nZ2e4UbQ48c8UeLUKnQqFj678Nfs7lwWvR/xlBPKrSnv4jxPBu4wLva9ii8j
BS7y1VbJLCklpyqbJSXO0ApIIURLddkyVFuGaEb2iFXqDqZW9T3aDZi8MjpD
IezrMkEOt2rU7QtKWfX1qU9gjKaLr+hpH1p1lqJNkNNr0SOWqVoplL83yAzD
zAfvU1VLaT7VAYFqCkghw4Ikhcic6IkebAyv0yJs8bo9/x1POHv+/PmEHwPM
sYpIIVHbaaY+NkhA7DaXXF5I9dKQTgqVoEkKIaZNStGjczuWDPPlmmEmGGHT
dk501oeinJyc0jIpRP1c9OHems4GlEKIGSKeIkD1pyy9A7q6sTCm+9hIpa8I
s0Wv4WxGHNXUCRbeX9VRJIXSFBof8bkmWqXQGartUpZCWotegkGlUCVsm8A/
O9NZ9F5dY6UTSyHO5JMapBBi7dXNnWn0JIVe/dmbrZRngbvydL6Tzn764cLC
5qI3zeZtl6corecSS6HGCqu9yWd/0HOAyheBoz5Ut4ikn2gpkUL9Fe7Cv0h/
rHFUSNQllN1BTEe01175ziTlgCs7mOL1hx95fYnKJw1SSHx19p/9bXDMKmS/
ome9jx3ngDM8511U6RBogas4ZnRd3ITtr2LtPD2yh3Mka+c//DPIVNXad97x
CfVxzKJsRXsFLNX59AT1GaIF1dsmKFORtULki73BdlSieqzX+MpMN1RYipQ2
/RY9Ypmqk0KimazKbZmUT3ZAoJoCUsiwoEgh0b6TGNFg0jFZk4r+F1ohKVRy
Y1lzhok0uKgDsT8szKJ1BsP7a3WxRtkc9ToCNW1K8F9c2BDuaYrh9e+8Kubz
+ffu3aOkEPU/9XNJyYfVBpRCqBkilkLM1suuF5JF1370s8Jw2z6b7ikE5JIr
i7wYJio2q5Ujf18wlWyHKSomyNXGcJtRZWtTiw7QZaqYtMJ/wy2xz0QKVQKS
MbU2P2rseyBIIcTaq6M7i+5sZBPkdPTT/DNzGrMwi3bDwpubYmatllxWMEMk
hXC7cXFyeVuSQm/+xOr8u2SCHOpDdYtI+omW4lott5qDpjhmDNXf07hWKOVr
b4bcuTI6or32KnQmKSW+L6Qubt5t9X9LWzK1SSHJBCKq9ytvGZmzd7A1zmqj
9PalDKTAJS4q3HZkpEKNKIwcSe+o3OdPsW7gxY2zpTq6Qw7K6z0yZ3s/U4zg
TkuQ6Q/rZqnuB8mpyRCtVKYUoivgb53oQ1KD9yrualNxlC1FS5t+ix6tTNVI
oY+JcxsSJoTz9AR1HvjJDghUU0AKGRYUKcQ/M4N+8Sf/yptHn+egeoLcnR9a
M+mhADVvRUUHsWHMVitua2wDUfvD4pEHRrOvryKOzmvSEYhpU4YkyXf7Q2ph
jFLReNDAgQN/+OGHoKAg8djQqk7UA/1WZ2ptvPSxbQJihijsIPdod4gDgZm3
WnxBvv0oubXch4Vhpq2XJKvfF0j4aEN3U4zR+Ktk+aOhRNsmWPT7q2wtN4/u
muH1xsXJvpjnJc51J0w+QQppqW8KVxudFCotPj6R8kGr4H80Ha+KIIUQa6+O
7kxjbFJIFz8l805O92RitXx/vlVclLzExxRjN194Qa4ui3eQYzRfJjtDTpi9
tisbI5ylK4hQH6pTRNJTtCw+PsEex2oN2CF7G/Epkhp3kHu5rY8ZpnLJBCpa
a69iZ5Ky6fwcD4LhMSi4lXYpJNKCGDtgs+x+EFThbOhujlkEbFKzAqMUMXAJ
Ule0YmJ43eC9svlGvjkYbodj5v4bJf1TYfY6qi7gDmOjZYMj+WZfiA11Wb+/
JF+ugKW6SyHVGYLyvcqUQlTQvjCvMRMjXCbE6euUaGVLEY9Y1WfRI5apSilU
mPK9by0MY7Vcdl1dHdeDAwLVE5BChgVFCgnSf2rLNCEazjxT9lJM+CZxWSdr
XPXiAjJ390A6vA89qGYLl5LUnztaYJhV2y9jn0hbAP6b27E7Y6QxDrk/LEj/
1Y+6nXmzSQdk5j2ThU9v3H6qKr5o3n4NKW2lwieJR8/cz5fegBTmJsxqzMDM
bj2VpKG4WJJEHu/9Sj8DSiHEDFE8V4jMS5jTlNIzDUYeeiF7VzI3bpIbA8MI
+x6LD6dLTSaLc9JT7km2CCXf/DfSkcCtOy+/VNYQCnNOL2xjgRFOY6PzpE3Z
+m700NngXY8kpUoWpPzUja5JFZdCWuubfOYYnxQqLTg8jFKItsMOa5jzgiKF
0Gqvju4suq+xSSFUPy0l38ZOpGovJYRuiy4TiyGW99yzMp1asRQywTlB2zIk
Ir3k6b8jGxAYPQFLZjNtxIfqEpH0FC1LCxOmUellek09VrZhNz97bxiXMNEk
hcR7KeP1x8Z8QsFqq73KnclS4f3VncwwBpOBSTuTwuyYjZv/u/K0SCYbih+f
WNq1Lo5ZdF8vN6IuuL3Ch4nbhO7XNBCMFLiET7YPqIObEA4D1l7NE11CFtza
EuxMpcx5fKw0cGVt6EEVArvRmP33JcsBC+/9HUHdHq8buq8slCBaKouGgK9L
hiBQ2VKIagOOjHDAMVaThbqumES2FFEK6bPoEctUUQrxc67tndu5HkEJsqbz
zqrYg16SIK0OSL5Pi9m1Y+fuUw+QxTJQLQApZFhELmyC123Yrr08fiP+elA+
Lv1gY09rHMOtvXoPnzhp7BD/xjas+gGzx/gwVfadxP1iE8zcpVPwyDGjh4UM
6DV+l9xekvz7u4c1NMVMMNN63r49e/Xo2NLTsTaLau+HHy1vtHXoD/PubQ91
ZVO3Y1q7te7Wq1f3ji0b1jPH5ZYhCLJObt2wnmbdd8Hu9F63Q1asE/2+flO0
7FmFKGkTv1nHzey9O/gHho0cPWxwj6Z21DVm3jMPZ75+8uRJdnZ2VlYW9T/1
c86r6/oZFUI2ASlDlI5YpZ6euqZHHRy36bnujvzozo31gU70/hBUpth5tOzg
59e2aQMbNk54zCs/35N8c2p+GyucPmK1Z/DQoYO6e9lQ/QSrNgviZVdykzlH
RztT7QPDprF/cETEYP9m9djmLSKG+DArLoUQ6ptsJhqhFCotjJ9G7zreR8Px
6EhSCK32orpzUdrRP8TVa+38gPq4CbPlmNXi3zdsi6/yUy5QLCVfHx1NZWwt
v19ul2db0eVvKDHEbDQjvvycHpEUYnr37OnCrOXSYUDY0GB/b6r2YmzPSTHy
AgUpOJSiOWBZGvUSLalSfX5oZAOm+IjV0IjwQD83Kyano6+HhiNWhZlru5ph
hMec85+03F1L7VXRmaQUKv3ynQoo0s6kWG5jOLu2g3vTtp26dmlPn0pLZyH3
i8135BJYnDjHgyC4E49rO78GJXAJsvaEuTDppZ5WTi3at2/pUpugfrFss+ic
3OjGxxurutrQr2yYNu6tfH1bu9vQ32G6hO2RHtWLaKmcKeoDvg4ZgoJuUgi3
bNDKT4Eu4RvLpyOqPGJVmLUpoDaGmfuuTNNpOzRkS9HSJkJfRY9YpmIpxOD4
BPTu1cO3RQNrpmgPvDptZhx5pD4vEBxQvPMJ4TTtNEihmgVIIcMilkIqYLb8
7pbU+8k3F9aN7eZpa8ZgsK2dWwct+vdeIe/0NC5L9Wtk8v2tv+f0b+FoxWYw
za0dGvlNPfhMoZkUvr2+55uIrt4Otc1YprXtXZt0HDj1x71XpT0PHWdJ5VzZ
uWhoV29HazMGwTS3cW7WLWz+/nRp+CiOHFFbTSkrrXbXmjaqS5+0ee6Qbs0b
2FmaMnCCbcXx6hQy/6+kF8WFhYXv3r3Ly8vLzc2l/qd+Lnx/Vz9rhXQxQXuG
qJBCdH/q3+EuDMysxfxz8m+yhG+v7V02KqCFi40ZZS/Loq6Tt98Xk347LXsO
EVmQduCbMF93W3MW27K+Z6eIpf9LK1Bqdz/eP/xNaHvXumZMVq36Xj0mrEt8
XUSvDa+4FEKqb+X5YoxSSNSJsMII2eNoFUCUQqUotRfNnVXuciAGrzsmxgha
Zi2Wki8ORnAVhBCNWAwxPCYfk7wfFkuhdj/dzIz9fmhHVxsztrmtR6eRv5xS
NaqMkL0itDpgOfqIliJ42bHfR3R0szFjmdVp0D506ZH7745PtMfVSCEyN2qM
E4HXGbBd5diyDmiuvao6k1QwS5pPn3kk7UySedd2Lxk7oKO3s62lKZMg2LVs
XVr4D/96Z3KOwhukgqjR9jjDa+FllDlFKIGr5MW59dP6+Thbsxlsy3oN/cKX
HLijYheID3cPfzeiG1UGpkzqPq5tAqdvOPtMNg2Ilsr9UX3AR88QJHSTQqqQ
XduvUgpR5qQsa0lvyNJvmy5LX5AtRUtb+dX6KHrEMpX2ozCM6g7U92jbd8yy
XUkvNFVRFAckX24JYJvgnHFxRjMgDxgGkELAZwpJkkKhUCAQ8OUR8B8ib6YN
VDbGKYUooXd3nX8dnOk1UzpYARgI8Q5yLb69qb/tr4weMid6vCsDt+275YEe
DjSB2gsAOoHmgPyEaVwcd5xwDJRQTQOkEPBZQyojEO3uSdh3CBsrOn5m/NQt
yNvdAXqBd3njZPHZP2ND2trhRiiF6BG5/8Z7sgmHoL/uwxJag1IuhWqMVxan
behjR5g1mRanLzeA2mt4yFdnNy9fppXlOy4ZXqAac9qMAEQHFGSsbM8k3Gaf
09OBTcDnA0ghoLqhOKxPH0QBoc2gfNg32FTWp41RClHwsw5OaGLBdh+66x5U
EMNRw6RQYermQc4sS58ZkU/0ajDUXgMj2j1CQ89FAqvLWsPv1GzMaatq0B0w
f3+IJbPldzUkMAGygBQCAAAADEYNk0IAAACAUQNSCAAAADAYIIUAAAAA4wGk
EAAAAAAAAAAANRCQQgAAAAAAAAAA1EBACgEAAAAAAAAAUAMBKQQAAAAAAAAA
QA0EpJBxwz84KprDiZt1ssbtgAkAAAAAAAAAlQpIoapGcHbhSUfHU98kqRQ7
wrPzTzhwT/900whPZQEAAAAAAACAzxiQQlUL+e755MZRTv53U1VvLEumrz7r
5HRxxwuQQgAAAAAAAACgT0AKVSnkiz1J7pyYQX8Wyo4J5RxI6Rl6bcXWZ0mZ
/Jf/XHJpmBJXwMs4/3TTtykh/tcO5VVVagEAAAAAAACg+gBSqCoRvF/fL5rj
mXwwR/ZTMmV5vKN9pD31jxPt2SjWwSnOyyOKI/6Ee2ZlKowQAQAAAAAAAMCn
AlKoCuFfu9OJG9V81sv38p/z8ooepOUln38Vty+1vwelgKIaD0k/dOx1YnLe
ncyid/yqSS0AAAAAAAAAVCdAClUdgjPzTjg6xi9NVrM7HFlycelpZ7fE6RPj
ua7nVt0QGDZ5AAAAAAAAAFCdASlUVZB5zyZ4RTn1vJeuRuLkJdzswI1qMvV5
7uOsUPdI566pFwsMm0QAAAAAAAAAqL6AFKoiyGe7ktw4McHbi1SOCZG5L2e3
ieI4nlpCb7JdkvDlSUdOVIeFr/NhnRAAAAAAAAAA6AOQQlWD4P3a3tEOja4c
eqv2iszjGVOnPbwnGjMS3H84fUrG8YcwRw4AAAAAAAAA9ANIoSqBfyXNlxvV
cu6rD1WdEgAAAAAAAAComYAUqgpK4ueecODGf3dFzYYJAAAAAAAAAABUMiCF
DA/59ulYzyin3hn3YL4bAAAAAAAAAFQRIIUMDvlk+0VXTkzYLtUbJgAAAAAA
AAAAYABAChkaQcGantEOXlf/y6vqlAAAAAAAAABADQakkIHhJad2dIzymfe6
sKpTAgAAAAAAAAA1GZBChqXkxKzjDtyE76/B5DgAAAAAAAAAqEpACgEAAAAA
AAAAUAMBKQQAAAAAAAAAQA0EpBAAAAAAAAAAADUQkEIAAAAAAAAAANRAQAoB
AAAAAAAAAFADASkEAAAAAAAAAEANBKQQAAAAAAAAAAA1EJBCAAAAAAAAAADU
QEAKAQAAAAAAAABQAwEpZNzwD46K5nDiZp0UVnVK9AE/d7lvlL3L1Shepdy+
6L8rLvZRXX9+V1Ipt9cK+ex/V3w8Toz/X1G1KC0AkFDVnlUlGLM7Gy5t7w8l
U0Xv/2u+QYteWLg5MNreOWlPjiGfWjXwE254O0Ta24v/RY/7T1DVKaoUqjqG
GLM7A1UPSCHjRnh2/gkH7umfbpIVvgX5IjvUWRJpOQ7Rrp7HfftdXrDxZWaR
HtOJRnWXQinL4x3to/x+yKtJPUag+lPVnlUlGLM7Gy5tIIUqG+Gr3P/2PNz0
e/rMfnEOIIUqC2N2Z6DqASlk3JDpq886OV3c8eJTpZCDR/zAYZeHD0sa1Cfe
W6SMPPqkXzJwnn2yFCpJu+fvdml/nuq/VnWwLRW+zj20+9nNXD3cSrOl1Ykq
sVS/D60GhWXknlUloLhzVRW9wdJWnaSQcfspef2HBO7nLIWMPIZA61wBao6l
IIWMkJwDKT1Dr63Y+iwpk//yn0suDVPiCngZ559u+jYlxP/aoTzd7iaWQtxu
d1PLYhD/xevv+8VyONH+vxm2gftUKUQ+3pro5Gy8wVZ/aLG0GlEllur3odWg
sGqOZ+kXYy56/aStGkkhYy6s0s9fCtWcGGLkFUmP1BxLQQoZIeKRXNGUNk60
Z6NYB6c4L48ojvgT7pmVqbqNEClLIYri87daOUY69X+Qaci4W/JpUojk7R8e
w6kJwVabpdWHKrFUvw+tBoVVczxLvxhz0espbSIpFO2/usCgHfTKkELGXFg0
n7kUqjkxxNgrkv6oOZaCFDJKeHlFD9Lyks+/ituX2t+DUkBRjYekHzr2OjE5
705m0Tu+bndTKYWEL7JCnCId26Rekr8b/3nO1vlJ/j5xDZxiPH3OhH354MxT
xVWGH5+82fvL9aG94pu4R3OdYhq3ORM298Fppcuohzw/c396YLy3W7Rbk/ig
WQ8Sn+X90q0CUojMjkqbOOScb5MYR0758lLxP7mpv+Jg6//ruxdJmXODE5p5
RDu7HesYmPLr8ULlB6JYikjJzfQuXOm61+DtH5VvRKfN8eTiC/zM2LuTAums
c1KRNlRL0U2g1+Q6Hpt9SijMzf3ry4udmsY4OcV4tToduuJlDqnbZarbMv7b
pe2iOO4psWVm0H0nx1NLLvHvH00f0/tkowai0p/54LzcJE/dLEWDfHM1e8no
8x2axjpTGdLiVNcByQt/f3JNaqcOD0Wo5LpVS635hmaCfqkaz0LzBQR4r79s
FuU89NEbcfYIi7YNiqYccNA2ycpo8s2jCJeodkvfioMcoi8guLP+/RQRvadN
K2Ip1Gdd/qP4jCkDTjV2VenONMjtApVG/t2ojNlhZ9t60/W8UfNT3QddXfJ3
bl75LVVJoY9pD8ObRjl4Jq5K5uviDzplCJl36/GKcec7Nol1dolt3unCjN9f
PPyURbVaLZW5VKsU0mPrjOgLKBZC6wytczUApJDxQpZcXHra2S1x+sR4ruu5
VTcq+LJIpRQSZD7o7xTJ7ZJ+U+ZD3r3skS2jOE7HugQnT5l6dVj/k+4Okdzm
l/9+IOvCgnNfnXTkRHm0Phs6OmXq5MsD2sY4cCKdfG+fK5B77utjNzo6RVJ3
6x52ZfKES318Ylx8k8IqMipEPj+XvWHd/XW/p4a1jLLnJoxfeX/dOsm/PRel
kU0cDTqPSO7aILpx5wujJ6eMDopv6BDJ4Z6alyDXeqJZipy+vPzYPQ83rk6f
P/iEo4ZgS4WRoMQWLicCZ9xZvzVz/fIrPTyj5NOGaim6CaLtiaLD1j/9uluM
R7vEMbNuLpiTMrT3Sf/luXwdL9Mh2FKWBp5v7n1m/LKMrX8++Gn6uabcSGe/
m6feSPMM3VJECi6kdnGJ5Lie6D306tRpKWPCzrX3jOa4Xtz5VCqFkB+KUsl1
q5YoUgjBBP1SNZ6F5gsoyf+4KzTasV3qZXEdLXoxtVGUo2OU14yXH0Uf8C+n
tnWMGXlQck9EX0BwZ/37KarFek0bCmJ37jQkqZ1TbLvAy5OmXAnpHMflKLhz
KXq7UFpS+N+sBFdOJMchpnnn84NDLw7ofrIhN6rdN2+krqAkhfiZj8e1inJo
eO7HizrpIJ0yhHwRd6NzA7rN6hZ6ZfLk5EF+lKVRXgMzrhSov70GUCyVebpm
KaTf1hnRFxCA1hla5+oASCGjJS/hZgduVJOpz3MfZ4W6Rzp3Tb1YoYCsSgqR
T3cluXOims1+WVj+WUnB2r4xDp4X1t4o931h9oErLR0jPcKyZd9nCJ68PZny
sbj89+KCLSFxHE7s2MMy7lv85pv2VChIWBBfLPlqUcG2occc7CMrPkFOkP+b
P9U+ah6Cj7Tn/J+984Br4nzjOHdJmIKIqCQkDAVEFBcucItbceOus27r9t9q
W22tVauto6466qijWsW2JIAgCAqKoqgoLqy4B0NAZUhIjv9dEiAJyeU9PJY8
34+fTz/Q4+593vd5n/f53b0jeMC6N5mqp8of7ottLAh0Hv3kdXG0RbaUIYqJ
tXTBNtDOPmxaQG7xUJcVfsPLXrNsaJaim6DcqdXBIbjTopfP1NqH0HwiymVM
gm0g3/Hc+oRiQ+V3tkQ788U+37/RbnmDlqIiC5oZzBdGfh+nlkhI85NuZr8r
nTkhPBTJydHuhiyFmJjALhXbs5j1BTrkcSvD7YsS5oLrdzo5nRs3JsyhuyrW
pRyKdRBG/VQ0oxixLxT/mqY7q2CvnzKEjbKhoezOZGPNOJmjqrOCvOD54cJS
3RmtyxCP9110JZWUT/zhW9Liwkszsh+lqzWDphSSvXg5z1siaHTu+/P5Ze8K
hiqEeP1ssoeYbKxN8UWNJcuPXnWuIV/cflnae8bPQ7NU7Xo6KcTu6My4LyAA
o3MxMDpXQ0AKVU2IjNcL2oj59uHfxpI9p+DsYupVT4cvU98yj1QaUoggctLe
xxxO6ONGxfxdSSW3k1681cZe3KFoMknRbzO+9xbzHS4eoN3C7m1AHNmVemwo
WVqbH5XQQhDYcOyTFPXvvPF3OgrLXQrZt0+M/aD22+yXM90CBS0SzhcZ9jGW
0mI42Ap9799WD1UfXs9vIlYvmwpDlqKboIyighbXw2h1NMpljIKtg/+jV+rv
W7OeT3UNtG996yJDS5EpODU5iC+MWpeAMFiW6aGlnRzxbshSiIkJ7FKxPYtZ
X6Al62ScMxkkL1M19vrgRcem1wMOXXZyunzsDfkL+YXlZ+zd4oOLXvcg9oUi
WJAblRJqEMuGiLI7i3ol3VfL0OUvHg131NWdNdHRZQqy1nYV2wkjVlymneSg
lEKOcQHvCuWpKcu6BQkaRn1z9sNHdQwDFUIk74wR8cVd1mRq2JSb9hU5ELtc
/itd51/pB9FStQLQSCF2R+dCxn0BARidiwsLo3M1BKRQVUX2MDRp9pxk5QAk
e5A8d1ZSaHJZ5sipnyuk+scXN/K5slNjxjVxb9M5kZ249dDrS5cmlPxbEu/X
XGxnH7EyTucoREjzZDnZBZnB15oI1CeREg+3RZNhp8+W9xolzns1263cpZD7
F6/VYy0ZDb5tS45l8SH5H2MpCgaDrbjZ4lTN8KiIVCVlQ7SUgQnKKOo8+Tn9
iIdyGaNP8G2+SdewVPZ+Sx+JnShm91PNsYy9YJv6z1VPQaCwWfT8rS8T02kb
kdlD9Tk56t3QJ8gxMIFdKrZnMesLtBQk3ushlIw6/IEolJ+Zf9phSPKjhHvd
RGFfxcgL5Xn7R0jUd4ZB7AtFfLzcqJxQg1Y2VJTd2VOrsQreru8u1tGdi4qn
r8vIXyQPEwUKfe7E0683UEghyhneZGzoHyxwivwy7KOn5RioEGnApCC+IOyr
aK3nyEJmh/AFp+eHM3s+qqUl0EghdkdnCoZ9AQEYnYseBKNzdQSk0CeP6lwh
17PDJsZNmnSpp6eYL4xce0MrHsijloQK7LSWyBX9EyhSiyJkaRlHV18d0iXM
VRTI172eTh73XYS9nWTcn5rzGRRxr5ylkLjj6kzaaMDAUoYYDradfqQvG6Kl
DExQRFGx55JU+nftKJcxCrbd12t+PSE+HBolsROe1T4smMVgSxTcPnbTr4WE
9Em+Q2jvaXf/uvZBdxqCMkHOsJOj3o3BtgnoJrBLxfYsZn2BntxXs93Ebb59
I6WSc0mrZelS6jeSgTuy5dK0L1tSOXzx/RD7QhEfLzcqJ9SglQ0VZXfuslbT
e4m8gyO1uzNKl6EmMQoDHUY9TqV/u6+QQoKml+ZNCrPnB4q637maQ3s9CvQV
IsvePoDMBs9tTtIqGRH/QwSpUBRymwGolqo9SL8UYnd0pmDYFxCA0bmQsQk1
aHSu8oAU+uTRWiuUEnClqSDQdUSy5icmeeTiUAE/aMrfBjIv4s3rJd4SviDE
d8bdvQGvomLSL19+E7Ml1pmvQwqNP6a5xFWa8V2HcpdChqIBqqXMMRxs0bYR
Mxxs0U1QRtEW/0MKtvSX6TEhfXlrHcG2c6nc6YA/GWwjyz3Y5uVeOnZvtl+Y
Ez+Qbx/Sb2VKSunGMLhqAMnJUe+GWG/MTGCXiu1ZzPoCPfLsnQMlDmOepKU/
HecUNOEvKSHP2T1I4jrz5fsXj4aJJP4H84odDrEvFMGCFKqUUINWNlSU3Vm7
sVS5U0l3RuwyBdeoOdIOo58Y2KZMOUHOLlDgEjlqaLiIL+mwkOnOZqWgrxB5
9o6BCil0X+sx8qvU2RbMpRCipSXQSSFWR2cKhn0BARidVcDoXC0BKfTJo71t
guz9b4OC+ILQqQF56hPkEjdEkXG45yb68yOIJ7upCdVtl6aqf6vNC7yqGWyJ
/7aeJ8NOv62aE+TyUxY0qXQphGhpGaiwYMvABBaDbd6/V3S8H859OdMlsHSw
bbooRXNGTda6rrpm1JRXsJWnxD2a5UNmBaHzw0oNSYaqF83JEe+GWm/MTGCX
iu1ZbEqhQvm5pWEin9uXYhLbOkRtvEt6lzz2mzOirnevRt1sKSo9HaUipVDl
hBq0sqGi7M4tv0rTnFHzbnNv9Rk1qF1G/vThYMXOpTcRJsiRwmRDoozIy9ri
F8wXnB5zMPuj8nYDFVLw91RqgtyXuifIhcw7w3CCHKKlJdBNkGN1dKaoqlII
RucyXlatRueqCEihT57SO8jlxt3uTB0qdOOsWp2pDl3tlXSXrlvKL359xt5O
MvGk+kXya1QM1wi2+VE3mgsCG332VP2dmOzu/Z6ij1kr9J4af/Wfu4cY0NAs
LQMsBlsDlqKbwGKwlYZfbyIQN1uUoj7ZWxqX2MG+dLANFPbQPMfqWfJQh0B7
r1ux2gszDVj6MWQHXnXhl5oMYPihqE6OdjfUemNmArtUbM9iVQoVpvwR6+Ac
t2vHRcdmN84qqpjaS8Hp8s7t1O9PZqk9gX0pxFo/ZQgLZUNEtW3C4IdP1ddZ
Zz6f5KLenZG7jFRxyrYwai393iBaO8g9f/Z5SzHf+dzauI/oBwYqhHi+76Ij
X9z5R13bJjS8dDSF4eMQLVUrAM22CeyOzoXlIoVgdFZRI0fngvviB2vW/hfy
X/U8IBikUA1Ax2baRH7I3DABX9J1dUZe8XUF77YODOLzg/t+l/KypEfIM+6m
HA8v/rhDPPj1vMhO7PNNenbRbzLi7g1yE2vPRs5NW9aW2kz7q8h8VeSR5gbM
CLP/mM20CelJamVr6Cyx7i1VUQMakqVlKR9rwdaQpegmsBhs5c+ThzkGCjyv
/FV0zA3xPuvXYSECOx3B1k4QNulItiosF+RJvgi3p7brzNBueYOWIiLPizud
nqy+6zQhjV0RKeQHjS49s8XAQ5GdHM0ExHpjZoKC9JNXvZqHNvdOCM/T9b/R
qdiexa4Ukl657e14brR/qNOox8r9KmV3k3o6RowcGeGoOeKzL4XY66cMYaNs
aKh23xVFrSqRIfLbm6OdNLozepchHuyMacgPdO6e8O/DkgogcvMS7+ap1ZD2
uUJvYxK7OQYK214LSimrNYYqhMh49UVL6gjXjcWbacvzL6w+35Avbr3wNfO9
W9EsVbuefjNtNkfn8pBCMDoXU/NGZ+U5lXZ2gY5Dk59Vz2OHQAp98ug8YlX+
9PEot0C+c8x2tanR0uRns32oJduOzSL9RsaOGBjl0zJExA90nfOqJF979Gik
m5gvCOk0+tqSpTem+591F4WO+vZ6T5H2kPc66Fpb1RGrV2fPvOzXPljUItrP
+yMmyBUWZoRca2lPFvvMoKnXFsyP//yz2MV/5ZbhLEsUS1GR5Zw7/Oj335PJ
f79MjRCSI9H0pL2KH38/+Pq/ouDFNP2jtxTdBBaDLamgT88/Y88PFLqf9Z8a
P3vKxe7NJM6+8dN7SkoFW0mXkbFtRMFtBlBnMvp3UZzJ6JMQ/kbHXQ1aioQ0
/WsvscAptMuAixNmXJs/+8qIbqfJ2nDqlhitKzDQPxTZydFMQKs3piZQK/JW
hNvbBToMS/6I4zaQTGC3Z7ErhQrfPp/UUCISqU0O+ZCysKlYJJI0nv0qV/0J
KE6O1p2LYaufIsF22VCgujNf4tMnqrFb5KRvFWcyfhFNncmo2Z0ZdBlp9p/T
wh345NAQ0r73hVGjLg70jWjmLHac8KzEzUtJIfJX93ZfbCwQu49MTipr+m6w
QjLO3+7jSp2M2W3klVmz4oZ3oo5Yde1zJzqjTM9DsTTv3ekDyco2XTUqVGAn
8V3wUPnjviNp6lklq6NzOUghGJ3V/7SGjc4F8Xd8hJQUIvPMWxWx0Q/7gBT6
5NEphcioeXNDlANf3HjcE/U8Sp75NmBd/NAuYW5OEke30HZdoyd9lRSQoPFO
ICMueeGwCA8nsdAhxKt33BpJdq40fVkrSaksUf4sImn2wHB3J4lT4/D+0+6F
JEupzVU+QgoVEgV3TiSO9w1zdRCLnENadoz5Sqx9njViQEOxFIn813Pd9GwX
4xh3ssgrGad/tJaim8BmsCX5kB287mr/dqedRJJGnmdHLE6OS5dRq0RLBdt+
v759HJE0S9H6zh4Rg754cP6VniwMwVLDEPlX/0icPiyqbdNgR6HY3iG4RaeY
aT88vZGhpz0NPRTZydFMQKg35iZ8+GOkxI4vGbw7h4X3cBXYs1iWQsoJ7fyQ
OSHFb8fzDvqTeYhk4M5sjfwExcnRunMJLPVTJMqhbAahurMoevtDaeLx2xN6
hrk56u3ODLqMLP/G8buzhka2dAsS2kuc3c90H3Z11T/vab4KKX6ZJ5lzRsgP
8l31poyHDiNUyPv7L9bNiOngESRyCPb0iZm9/sV95qerlmDIUiLtyWgH3W0q
aHI9XNNTWRydy0MKwejM1IRPZ3TOy9w8JNTRKcx/R1aZk7vKBaQQAAAsolyY
6fvz2+o6abi6IE1d0lzMd7q4//nHTIACAAAAagQwOusDpBAAACxSHGyr53fy
aoPsQVIfUaDrhKfIB5cAAAAANRcYnfUBUggAABaBYFsxZAXENbQPnRcK1QwA
AAAYBkZnfYAUAgCARSDYAgAAAEBVA0ZnfYAUAgCARSDYAgAAAEBVA0ZnfYAU
AgAAAAAAAACgBgJSCAAAAAAAAACAGghIIQAAAAAAAAAAaiAghQAAAAAAAAAA
qIGAFKraSE9MlPD5IfPPsHCePAAAAAAAAAAAxYAUqtrIzy0NEwgj1yYgHqMo
O/flGXv78G9iQToBAAAAAAAAAB0ghao2xN2N50Sii/tfIUkhIuvlzCZike+9
RNgqEQAAAAAAAABoASlUBUk7Ht/T/9oPu1/EPpS+PnrJ0TU+5F1+UvTznd/F
j/C9FpCp7++IV4djG/GDhu7JgW9CAAAAAAAAAEAPSKGqBxG/KsLeLtCO/MeX
uDUOFohC3F3EfOVvhFHrE/V8IZK939pfwneLO5FWseUFAAAAAAAAgGoISKEq
SH5m7n+3M+OiU0L+TBzgQiogcZORdwNOp8bEZd55mJsl1f1X0mt3OgnFzee/
fl+xpQUAAAAAAACA6ghIoaoLUXBxRaRDw5i50yOEzuc33JDRXi2LWhJmbx+x
Ig4mxwEAAAAAAACAYUAKVVkyzyZ0EIqbzn6Z8fSRf6NAh66JF9/pvZjIfDHN
XSzqef8uvWACAAAAAAAAAEABSKGqCZHxekEbMd8+/FtqW+yCs4vP2PPFHb5M
fat7nRDx4mBsQ37Q8H258E0IAAAAAAAAAFAAKVRVkT0MTZo9J/m+4iuP7EHy
3FlJocl6PvnI3m/pIxE0vhLwpiJLCAAAAAAAAADVGJBCnwDSK7d9hOKWi1Ky
K7skAAAAAAAAAFBdAClU/SmIWBQmEEZ8fwUmxwEAAAAAAAAAKiCFqjvEm+dT
3MSiPkn3YcMEAAAAAAAAAEAGpFA1h3i276IzP2jUQdgwAQAAAAAAAAAYAFKo
eiN7t6mnROB+9Z/Myi4JAAAAAAAAAFQrQApVa/LjEr3txa2WpOZUdkkAAAAA
AAAAoHoBUqg6UxA2P1QgPLv6GkyOAwAAAAAAAABmgBQCAAAAAAAAAKAGAlII
AAAAAAAAAIAaCEghAAAAAAAAAABqICCFAAAAAAAAAACogYAUAgAAAAAAAACg
BgJSCAAAAAAAAACAGghIIQAAAAAAAAAAaiAghQAAAAAAAAAAqIGAFAIAAAAA
AAAAoAYCUggAAAAAgGpL1h+DTDHMZpIkv7JLUkJ+yBRbvDivMR1+LOdjLqsE
5A9/6WhsZNJnTwpROQXIuXdi+YgOjerVMuaa1Krr4Nlr1fncyikJ8KkDUqjC
+fAodONsv3Yu9S1NuWQHt3Xw8B4wedmOsIdVJgKygfzJli7GOtuX47o0VlrZ
xauafIhf0dIY4zX96nKe5v/IvbC0CQ+v3fu3R3Lyp/zQaQ1wnXWrrGCXJRfL
o4ILbqzw5Bb3UpxrVtvOtd3AmRuC/6uA4Un6PHLbgmEdXO2szYxNLOu7tPOb
+dOpO2/La4jOPT7CVEfV4rZTQqpQrlWdqRlhUJOCp3/P9LQwdhi66zZdl9F9
GQQHOvLPzODjXI/lVwv0XJCdsHWgPc/Ka0HwS5mBexFZN4+vnjagbSMq2Bib
WwvcO/hNX300Ps3QH2ohf3Xp2J6tP6/+emJ7G1y/xkG4LP/MTH5Jo5J5Ec+s
jr2796CZ68VJ2cwKxcgAJClEvNjpa1Lc8jzz2nZu7f2okn1sT34bNtOZi2Hm
Dh0GjZv42ejBvu1HbH+g3gYM2hQA6AEpVLHkXf+5W12cjBjmDdy9fLzbNG1o
Z8kjawO3n3a6dOQoSPiuhUX//W/YSfjYvZsBlFIIt3Rq3VGLLqO3364agatC
KwQJIitkmiMHs+yx7aG85LeypM1da2EmrVZeU6bhBXE/+XUuqk4fd1sOhhnb
NfMpruBR2xK1KpgVS5XZDl6vea8BJP16dWohsuRQvmvts+rS+4+5swGIjOiV
nWxwzAjjWjs2b9e2ubOtOWmzhe+OJ3LDf60TQxUiexCycyvFps+9jDHMquPc
zdRP2/ZGlPmRVdHfygtDltaYMKgGkXp6blNTTr2+225/KNNlEBxokN1a1Ypn
3GP7c5rumXvj5x42HIuWS85m6LWVeBu3oa895YsYz9rBs20HryYONqZk+mLc
8rsbZdSQBXFfNeYa/txDc5lCCmFc+zb9BgxQ1m/nVk61uVT92nTbeLO83s4w
kUK4pWvn/gMG9O/dta2rrQlVf5Ztl5/P+ginyj411hrDbf3/TKW5CUqbAoBh
QApVJPJnu3pbYHj9fhuvZhSHbNnb/84d3R6QWDqeyR9t7mxswtaoze7dDD5N
IYV4bdferRqyRwcVWyGIyJ/t87PBccGEf4qKRaT+NboBznGaEarTwz8EjCZd
ym56GM14yI6lymzHpPeu10W3Id7e2jemEQ/DTDusv1de7Sx/vM+vHm6E23Ze
LnmkesVMvH8Y/vufl9+V1R70CkGpXtYfWt0xYGkNCoPFyB7tHVgP5zacFpxO
92D6yyA4aECkHBjbynf8/zYdO5f05uXv/Uytxv39Nv1OxJGfF4/t0XLCkdIW
Ea9PfebAwe2GH36mUzIVJO3oY0tKdPMmY7fHvCySomS0idh/KJq24ehgSwpZ
jv1bXR3n3D84xomD4TZjA8op92EihbjNvr1e9EUu/0XYl+2tKPn4fYK+r3Qo
D/cxNjLutvUp/csnQ20KACiAFKpIPgROsMY4jvPPI71eIlL3D7DA2Bq12b2b
Qaq+FKrgCkFGemtNOzOM12x5nGLcy4le7M7F6w7544XuQI+Q7bBkaelsh7p3
xvGRNriRcddfP+JzCR3vQ2eIOEYcx8mBZU5FSsGgQtiTQlXV39jHkKU1KAyq
kL84OLguznGcFpxJ91jDl0FwUH/mpaWuHFXSwLOuY4nzattYclW5BddzxQ0d
aTiRFjCOj+P1Rx4rnd4TLw8MqoMbcYRjjj1nc9QqJylECud7a9vyjLjuX8WV
WXDQUlYpRJIXMZsM27wO65PKWpPSWz+05ml7lO4C0LQpAKABUqgiUeYATgZy
ANnDE0tH9mzjWs+Mo11P3MaaUS/3ceTebyf19WpUr5YJ19iirmOL3lPXn36S
X4a75RwbbmrEbfpNvEZUlcYsdOZgtcac0ojB8tTYXQsGt29U39LE2Mya79zU
e9CsH/+4nKI23qFIoffiiQ1w3G5KkPZ0ZyLt0BArsqLmRak/Nv9ZxKYZfVoI
rc3Ihwo9e32+IUzDUoUJHNHcyKykUytG+biQdWJsUc/FZ/R3gclq92FQvZXE
+7NfuHAxq547kuWye790tsDNvX+6o69cNNkOQ0uJrMQTP0zu3crJlqw48zp2
zp5dRy74LbY4RdKZ7ahe3mkvAEPwEDTe/T2+Lo4Z+/z8AOFPDXlIGZqeLpks
D38z6OSFynXWnLqTg/Ll6Re3ft7dvb4Fz9jcRtTM938S9VwA5TLEXv/u8GBT
jvOC8xl3jy8b2saxjpmJRT23LhM3RLxQ/ztUS2tQGFQZfGGxK8fwhE6kyyA4
qJn35vG9hLiYiJC/983vYElNF6vb8+vD/54+e+HKzftPM3TrP1nSLx1NMa7H
8itS7f+xvoMxhln220M3y44Cwd/UKTcpRKTu7WtixGm46EKJKQzKZqhNdUqh
3IQtferjuLXPyhiVXtcpheTPt/cgW77U+w6D8S0r5MvuXh5ODSyNcW2/NOn3
e5puraO3TdWMfRM0t6m1pdOIA4/g4xFQGpBCFYn88dbuZhjH3v/QY5osQP4s
fOdPa9eu/XFBLwHHiOs+YsXaIn7aHfVSrSPnhM925GAcS4fWvoNHjx3t5+1k
QVY0z3Vu+FvGd0PPAd5GLvIwxTBzYZu+/uPGjxnaq21Dax5mrjmCI30Vyjk9
TYDj9ScEak4mJ1IPDrLEOC6LL5QEyQ+3d/rZczGerUf3IWPGjuzfwbEWjnHt
Bvx2r+QapQmNu3Timwp8Jny1bvPmdUtHNLcmr2s4PaR4KjF69aIgf7atu+7t
IUhMBx3KYnY7VQW8PupfH+fYT9izg/wvt/GiaP2DKE22w8TSgkfHJrmbY9Ty
Dbsm7bv5dvf2FFlxOc7zzhW3vO5sh0wg2vOMuE2WXSlxHCQPQYL0v4YcI17r
1YaXlyF4SBma3pAUYtXfUJy8ULXllEnvdYe/aGZu6dxp6KSZM6eM7tvGscVS
jRXxKJcxkEKkpR297Wxbjlj046YtG5Z/1q4+FzNpPDOoZCY/qqU1KAwqyA6a
YofjdUedoF/OgHgZBIdSNfI2aqGHiUXnz0a6cM3brLxiYLk+kXLAjxxehLPC
NfafIF7t6k2Wy3LoEUOrTlD8TZ1yk0J5UfNIt7QefrTkgzly2RDatLQUyk/a
N1zExa3aLYsqEUw6pRClK8mW19zHAiW+5SYc36DwwjWL+gpJx3Qd9nWRX274
66a+PTj0tKkaypHECKs1OkDfJUBNBqRQhUJknvnC3QTDuPXaTt4QeDuDNr+T
3fy+Jc+IduqC7HG05NLzkq6dd3tjj9pkOB92NJPp3ZBzgOyA0VYY12PJBbVv
OdL0O/FJGtt5oU2Qy4uY7cDBbcedUm88ImX/wFqYxvhZQM0Lwa27rblSvA4z
/+GB4QIOZtn7t+IhVGGCkRFH4H/kadFTiYygqQ4czLzP7pdadiNULwJEZtTG
OTP0MHfHpTKGXdn9jZ0tKPfHcP7Yk3TrRhHmwBi2VP5wm68Vhpm4jt19rWT5
hjQ96b/UkvxE9xyYtMNDFR6nlkCgeQgSmX/4kelJ7bF/G9qHCs1DVDBoeoNS
iD1/QzZBoXEwE5Na7lMDHquVi9C8McplTKSQEWbqteJqcZ724eYab3OM67rk
gvYuAAYtrTlhkCI/co6IbMMhh+m9DfGyQggOmhBvQmY04uL1xgakP9ruWwsz
abooiv5exKvdvUkprvExhSzE+fmOHCNemzV3DL51YeBvFOxLIUKWm3Y/cuek
Zuacut1/SVDvgGhlQ2pTLSkke3pioosxXqv1knCNjzO6pJD8yc5etTC8wWRJ
STMzCtHk4+5Ss/9QJsgpCqGzTdUvyDg9v4WtdaPRhx7DVyGgNCCFKhrp06Bl
PYWKLVZwc5HP+JVHrqbqnt9Qplw96/AQMj9pvrLUckXWcoC3R4eST/D85ird
Pkj6N9PmtVuntoj2w/kFDTm4zegTJV9PiFe/97fANKZ650d94cjhNFoYozGi
S2OXuHAwkx47iuYzKFNTbovvNIzPk0yqi+P8meFa6QA7UqjcyA6eSu2fym36
dTztnD02sp2C+K+bco24bgtpXjDrynbkWTd2j3TmYbj9pEC11Q1oHoKC/DHl
RRzR3CjVAEeknJzbrWg3rM7DNxf5CKKHqGBVCrHlb+gmKA8iwfmTxLQxD+Uy
JlIIM/HVqEgi48/hVhjVOGXoWTUkDBZS+eRGMp/kef1In2IjXqYEgkMRRLp4
MvUZpOH8c2T6/y5kGiknuY1mhdKuySq4urwJ10hrv7kP/463woxM+u7VMwmL
Fr3+pngcO1JIO0/i1m83eUPIQ4OblesoG1qbqqSQ6eDDbwvlr4PnNDPDLVrM
C3mtJSU0pBBRkJ1y9+zumW2scbx2141qUzeZhWimUkh3mwIAKiCFKoWc5Ihd
/xvhZadMBaxbTj1wu3RMYpYDyPNzs7Pfv39zakJdXNdkb9ZyAOL1sZENcDIQ
t5+0LuB6qp6XMKrNtK1cvH016TPnmPpOL9LYpW5czNr/WNF7Q+Llnj4WmMaU
KFniD614ZELcdaLGN5fpY33sOEacRsUvghQm4PU/P60ZbKMpE0pNLqjaUojI
Oj3dkaMY8NwXx9CNVyxkO/KnW7sZkwPj/y7R5lWq/XLrt+w7ePDgQQN6dfS0
t8Axso1bLQzRWK+K5iEoqKSQwxdFUkhZVBUcx3nnlL9H9RDEClHDoBRiy98Y
mKD83GM+9Ch9yEO5jIkUKqnuoiLfWdOGZ2TcedOjMirNTz8MFhZ9bTAdcuQd
bcERL1M8GoKDGtlJgavHjt+iHC5kd7d+NuaHwAf0h+0Qr3f3NtG2SSWF+u1j
tD2LIX+jYOurEM/Be+hwBcOGDOjh5WjF4dX1HPFjuL5DdfSWDbFNlVIIsxz3
d1rsyvaWuFnTWWIds4jVzxUqyuHwWm7Dfr6g7lIMQzRjKaSzTQEAFZBClcmH
Fxd+X9BdaIxh3IazwrQNQJkZknLp9y9HdfEQWBmr12m55gBk1HmXsH92R74x
lcCY2Hn5Lz94OUX7ccg7yBVc/dqDi9UedkQ5Aslf7Optjhm3X3+/5O/yw6bb
6T01ELeffTZf3QTt/XR0L3lmbYJcxtkNM6bqYebW2LIdMJh/4/vWJni9wUun
N+NhFl020WzDw0K2Q47B7qXn+Ze+TO0URdJjTa0auLQbOHO9RMchfygegkTG
gYEmRlidiWKtxlNYXZKbo3qICjalEFv+xsAEhcbBGxja1Q7lMkZrhbT35CJe
76Kyjyba51oy7VmfcBgkyT/9eX0d6zzKeFkhBAcWeHdkCCnthXMi1fJvaeRc
xZ5nGx4YniCH7m8U5bRWiHh7Y9sgAQczb7s6ocQOlLIhtqlSCuH1+k4cLORg
GM/zy1hdElN1rpBV426DSBncr1UDDsZttvyKlh8zDNGMpZDONgUAVEAKVTqy
x3sG2OCY1YhjWkvsDQ1SRJpkuosJhtdpMWr5r4f/CT17Ljo6+uyaXuYYizlA
FDk+6MjrSHKfnN//7TgfoRlmhHFs2i0KfqX+wgh9M22yYC14mOWgP6hJ7/Jn
O3zNMJPOm5LV10YosgSzYX8aOKqPye5PbEmh8tg2Qf5074A6uFmHdbelaSfH
NCDT2dF/6V0RwEa2c/lLcgw2tGeqnpXRNNB7CBIK/9Px4UFbCiF6iApWpRBL
/sbABKXG4c88gyKF6C9D7PVKKaSteYgXO6iZMR4fK4WUf/RJhkHqb8/Nc1B8
7qFvWMTLIDiwAJFCfUHQ2thO+QUat/nsX3rFwszfKMpt2wTVd9mSbyqIZUNs
U9UEOVKpWHr06trQGOM1mhKoYw9yjbVCxKsjw+uR/bjHVk1JyTBEM/8qpKtN
AQAVkEKVj/LTLqkatA6iMzBIyZM3dTLGOE4zTqtbnvuXf9lygNzjVA7goTX5
POfkaEtMdw6gQvrqwrYxbqbkgDtJrDa3g8G5Qop4jtXyO5BKyJ/v7GmGmfXY
rnGsWsGNlc25RrxWP9yiv1dlSCH2UU5/4TjNCqOqs+DOTx3MMK77khg935fY
mAPzaFNn49Jtrw3jbEeFHg9Bgsg4MpR0QFIoa87g15JCqB6ioipKIQYmsCiF
EHu9Qgrh9aaGaNyqIP6bplxSp24u6wQ5DT7JMFhYtJcWr80a+kiIdhkEBzYo
iP/ag1vquKOCK8vcuUaGCsLQ3xQ3LjcpVPj20CBTo2LHRC0bYpuqpBDPa+X1
HCL32pqOVhhu23fnfS2tob1tguzeL52oE5SHH1HfOYZhiGa+VkhnmwIAIiCF
Kh9FkMBMev32SrPPy+786EXFgt26391Io76gXiNqfnjIv0x9+taZA9DfrTA/
aHJdHK8/NUR9z7P8mEWNOEa0OQDF+7/8LTU3OmB0xKr8wc8+xpjl4D9SX+7t
Z45Z9N2jtfuW4rw2jNf6h1u0b3wYpqYGKqSSUE5/se6/t0gNvg2Z5sDRPxEG
JdsxZKk0ljqrkOv5Ne1a5rJmOxQ6PAQNIu3o8Do4Ztpu9U11A7WkEKqHqGDQ
9CxKIQMPRTeBRSmE2OuVO8hxm69Ubz/54y1dTTCOg9YKorL2rE8yDFJ8CJ1O
5rFWw4/SLuVHugyCAxsQr/f2NcPUViCqKLi5qpUxhpl6fRunf60RQ39T3Lfc
pJDyZQTHeUG0lFHZ0NpUewe5J4dGUPPxWi+/oKEVS+8gl3NhSRMeGZ6nhaj5
MrMQzXgHOT1tCgBogBSqQOSPg7b/9s+V57lqffvD07AVXevimEX3rcnaO7Nk
HBpMDWRjTujc00YZKjiu86KKPjnL02NWdrLG9ZyRR383Urts7WaK4Q2GHXyi
+lPiXfzabtTtNHIA+bOYf6MevFXfSSrz3EIPLmbWZ49aEsNEChXKH23paopb
j9q1Y4glbul3oNSoXJC4ztsCw6zaLg5+VjKqS9NvBR8IKnkAs9TUUIVUCvJn
vw+ogxs3/0ZtqrU8eVuPWoqC6poIg3KgvEFLZXd/7kjWr7nnjONqk/uJnOc3
bj0vHlpQsx1ED0Hlw9UVrUzJBMX9s303Mov3TafedKqv40fzkKLyoDc9e1LI
4EORTWBRCiH2eqUUMsL5Q/YmqTRCwfOTE5w4GNdtyUXtdMqApTUpDCp4d2oc
Ka9sx52iny1r8DIIDqyg3OIbbzAlSFtzEBkhMxpyMYxj12P5qbslhSQ+pN2N
v6/c2Iehv1GUkxSSZ8at72WLG3EcZ4cr/wS9bEhtWupcISLz7MJmphjXaUKA
2nRGHZtpE+l/fybAMeOmX6otlmUUohlKIf1tWnzF+9tBB/cfOBT+H33UBGoo
IIUqEGWsw3CT2oJGzdp26tqlPXWqGWaE8YSDfrtT+v0Mkf7PBHuOEWbu2Gn4
hMmTxo0Y2PvzgyW74sv/297TGsdwa/c+46fPmDLSt4mNcYNeCya34umMyQbu
RkaTfyc5cDCMa9PEd/jYscN8PeubmLcYO7IVTyMHULx5ws3sPDr4+o2aMGnc
sB7N6hljmFmzRRFZajFLtYOcpVPrjlp0Gb291HmZ8mc7e5pzGrg0suIUb6Cg
ifTBoXGupmRdmdb38OnZu4d3Szf72uRzrcb/W1w0ZqmpwQqpeJTTX3DBZ39r
zlbJOb/AlUtNhLlQeiIMQraDYmn+/X3+ziaUL1o39OrWu3d375au9c1xU7+D
mUWXoGY7iB6CTv79PUOEPNVpgG19vNt4KLqN1pZmKB6CXCGyByE7t1Js+tyL
ukfHuZupn7btjVCbf8G6vyGawKIUQuz1CinE8+jZ05FXy7HDwFFjhvt62JA5
o4nbjCAdGTS9pTUpDCrJiZjjyMEs++6h3+iX/jIIDuwgf7ilqxnGcVkYreuL
SM6NrX4iakcHshPWc2nZoWPHts2cbExwjssS1cHEqP6We/vfHYoQsnXL0l4N
cCNey8kblT+TUaSkfpEuU0ohrrCd32Alg/r38HK05FChovG0f4t1CYO+gNCm
pY9YJT0qcVOPOjhu0/PXO0U+pfOIVfmjnb1qk1rLZ/1ttY9RDEI0IylE36bK
Z5+f78Qx4ojmRIIUAnQAUqgCITKvHfp2ykBvDwdbS1Meh2NSy9axhe/4rw/E
pen5dEK8v/nHwgEt7K1MuDxza0HjjrNPvFB/oZZ+4dcp3dxszbhcE2sHryHL
Tt7PyY+cIzTW/XrKwN0KC/MenPrGv71zXTOeca0G7j2m/RqTmkutdlTPAYi0
2N8WjezW3KmepSkX55hY8d07+f9v35V0zeFb77lCulc2Eq/29rMgvQK3GXVC
3wQR+Zvrh78Z29VDUNvM2LS2nXNT78Gz1xy5WpKKMUxNESqkYpHeWOVlonO2
i/zFfr86OFar6+ZS/wsl20GzVJZ25cCyMV097K3NuByeuY2DZ7dRS4/dLb4v
araD6CGMkKXE7Jg3qI2TrYWxiaWt0MWz4+AZK3cF39U8S9GghyBXSO7xEaY6
fBe3naK2XKY8/A3FBDalUCFSr1dKoXZrEx4Grx7j7WxjZmJu69Jpwk/hz/VM
R6GztCaFQRVUYmiFcRrOiaBdD0N3GQQHViAyxJNFHLzOwH3P9D1R/ubakZUT
e7VwtDEjS2hsUVfk0XHQjF8ii8/TQfI3ImVPHxMdIYSKInUnB+UzuqzUuUIY
bmzZwM3H/38Hrr7RsINJXzDUprqkEPnLlyfHO3IxsxZLzyujr04pRPpe/MqW
1A4O/feqr95BD9HoUgihTandLnuZGOH8qSH0n+aAmgpIIQAAAIAG5Q5yLb5L
QFzyDGgjvferbx2c5z6P/uMH4mVA2SDSJJ87c3Hbfrv+g9NnPhHQ2lR6do4Q
x+2nnQYlBOgEpBAAABUJkXLut1UrDbJq/yVIB6sIxVIIEsgyI3/5z+duJhzB
kN8f0K3sRrzs/+zdB1QU1wIG4J2ZLbRFRHpvKoKIig2woFiwYANF0Cj2GlvU
RE00sSZqYkFjjSVqnsZoIogYBcUWjEpiL6jR2COKooK0Hd8udfvexUWQ/b/z
znkncnd27tyZO/ffmbkD2su5vDLEkjH0HpugcvZx+MAQtmlB2qLmPMZt4jGN
b+0CPYUoBADvU8FFyXvHNeK3Xo55UasIRCGdyLu9a7i3scA9cst1dUMywmKg
jaxLa3o58YWNPo69h524miBv08wd4UJew6/Qf4EqiEIAAKAGohAAAFRXiEIA
AKAGohAAAFRXiEIAAAAAAKCHEIUAAAAAAEAPIQoBAAAAAIAeQhQCAAAAAAA9
hCgEH4TchCEWZe/bNgjbgVelAUA5vPixuwFFmUfvy63sNSlD2L9V3W5QdOvb
QD5H0Gn9f5X0zp6sa7tmhLdwtzThcwUmtZx8Osw5ll05awIAHxpEofcnJ3VW
Qz7F8/7szzeyf8g+ObUej67Rcc1tyXtUcn8fbk2r3jyMx5Q/KuLde/nnZvlw
S9uA5hrWsKndrNuoxftvvo8TCvviws55w7s2dbcxM+TzjczsPFuEjpj3U2p6
yevtRY9O7Vgfs2TezEHNzekqNQZ4m70z3EBJQ9EWQxKq0FjrQ5Zz+/fvxoQ2
87ASGnDF4xwLJy//roOnf3/wVtXZCXQu/+6vo3yM+U691l5WdwAqL4auRp3c
QyNtaa7XjLOq5sN7fT6mmz3P1G/i/ocFKoqU0NhxESLs3wiK5R4aZVvWqOJz
KM+wpr2nf/dRi+LSXmu3UlpVgCgKsQ9WBwtKW55nVMOmTvNQyZq965GceXCU
K5eijJxadO8/6KN+PYKbh6+6oWUbaEE/eiTRv8tb85V3DbWnpnwwbwDW4nAG
vYUo9B6xLxKGOzOUsN3KW1LvjixIW9bGhBI0mv1X0cA5//Q3oa0CiwV4WjAU
xbepH1DyL60jVl6SO6Dzz3/pa9xl07N3+jmuaHxCWzbo0FWsc4eWvo5CRtxO
tFnAnFOv3mXJmrCZpxeH2PPE30XxzJx8mrbwq+dkbiDeY/gNvzwn39/mn/6s
LrdqRaGCGwmrYySWDvPjU5Rp4Lhlkv9auSHpHV4RqpM2/SBoqumbv5cE1aLF
Aycja0+/AP8m3m42QsnOQtsPP6C4E+h2u1VWK7BPDozzNmAsQ1ZeVveSTdXF
0NWoUXBxTiMev92q+2oOz+xzS9qZM8YNpxzOUFlXrTouQoT9m5pihVGI4to3
6dy1a9H2bdXIpQZXsn3Ng767UFG/zmgThWhh7VZdunbt0rFN09oWAsn2Ezad
cezFO+xUr/dEmVG0RZ//PXkPh6re9EhFUYgWujQOlNO636rLVSNWkG0QksMZ
9Bqi0Hslurcx1Jym7Qb+VnLosk9+7mdNMy4jf1e6/jm7+xlTtM2Ig2rOYKLb
y1rxBboZnwg6rn1cshg28+LGSHceRRm0WHStwvq9/LTvO1mIzytG9aJWnXhY
MqJjX91K2rT1+FOFKlXBKFSKpLEI6aZNPwQaaiq6t7ajeKNadf7ubEbpyLUg
8+bRn1btvqS4nXW73SqpFQpub+hmSXPdhu9X3P+Ji6GrkcH+tzmqUfCAaUt3
HE179vCHzgam/X/NfHolafuST6LaNRy4XbFG7OM9HzkxtE3YtntKI5OWHRch
XUUhYdSv0uk46/qWSBeGos2jdlfQeVKbKMSt/8XfJVfkch8c/LS5qSQ+flX+
t1aJvzyAz+EHxdwt/49PxN+lPz1SURTiNV14tWrEHiWIN4imwxn0HKLQe5Z3
cUEzQ4pXf8bpwjNV1vFPPLl0rZ4/PlB+fBKMT9gnm7oaUxUwPpEsO2NnX3Oa
w2+z4h0ucKjDPtzcvSbNYRwid9wn6m71IwrpqE0/AJpqmhM70IxinCccI/qV
XbfbrXJaQfRgS49aNOM8fP9zdV+ruRi6GunvPDW1NlN8guGZ1RTSvBrmQm7x
eYjrM+uckmE4m767vy1NW/XdoTi817rjIl3PiolC4sH6tYVNeRyu52enK+Y1
ueWNQmJvksY4Mhxei0Vp5d2SeRfnNubJ71EVRI96pKofhbTZIOoOZ9B7iELv
3avDH3twKdP23/8jKrj2bStj2sj/myuqTk9qxicFt3ZN7du+SW1LQ0Z+c3Lr
Kp7w2BeXds0d3LGRi4WJgG9U08bVp03fiWtSSrsQpeOT4p/b5O8MFj1JWTux
R3N3K6GAb2hm6+rt3330/B///E/rMUxB2qIWfIoSdl6v7mYVaZqHCrn3kpaO
7OTrYGYoXjcHnw7DFh/8V37rZd85suGL6BA/d0sTAZdvXMvZt+PQRQcUikke
UmZqDY7PFT39I2ZYW08rYx7fyNyxfvC0fcp6U3WDyawdYQaM47gjL9L2zIoI
8BB/L9/Y0iOg35ex/0gNWbRrU5KaElaBpJikChyu9+epMquRd2KSK0OZRO4p
qcbLbT0MGNeJxzKu7pzeq4lzTUOBsWWd1oMWJz2Q/hxpTYsGHi4aBh5abDeC
piddGuEGKUR8yOSc/KQ2QxkHf68+ERAVQ1cjVb1nd66dP30iKeHXjRNaCCW3
M9VqP3Pb3gOHT565cP1uhvL8V5D2baABxfWacSZP/g+kHRdhV1OiwqIQ+2RD
iIDDuE0+WVYVLdZNU5sqjULZ55d3sqJps4DZJ4rzutIoJLq/qp245RXShcb+
7UXCp239vFyshXxafr8UdP4hvWIGvHrUI5FEoVdxg6xp2mZIvPxzaGz61p6m
4g01Pln6azW2aUWcKEs/pepwllrrZ/HjvM2ELuGbb+PikV5BFHr/2Mc/9bGi
GfuB678X/z+37uTjqk97asYnonuJq79ZuHDh/Ikd7BgO1zN81sIS36xLfihz
IOff3hHtaURJbm+2qdc8KLitv4+jKZdxHX+0tHtRPj4Rn/Kb8zjcetPPlPUu
mUcmexlQlJFDk5A+/QdE9urQ1M2MRxlpGrwp2xKP1nYUL0nYazvxHbwahgo5
l1eH2nMpnoVX256RUX27tHA2oSmuTdc116Q3YFbiGGeGYoROjYN79IvqF+rv
YizeQXm1xyXK7kSF8zUJOn697eP6RkLXlr2iR40a0i+kibPvVKWPk2uKQuJe
unVLWwO7gIGffb1s2ddTwxuYiVfObURCae21aFOympJWgaSYFlFIXNNAfxuL
huGT5y9dvnjGR82suJSg7qj4sjv5SWsquhPT1pBi7PtsvaNm6EG+3UiannRp
5AMP8kPmdfwQG5quFbFL/RFBWAxdjcIWyUye5CUwbvVRXw+uUZPZZzRcXGb/
2xwqpBiH0Yky80+Qd1ykXU2JCotCb5LHi3dLs7Cfyu7dI143gjZVjEK5aRvD
HLm0abPpyWWBSWkUkuRKccvLzmNB0r9ln9+5uHAvXDA5xEG8Y9buPbNkv1z8
84UKmoNDj3okoqtCWQeG29G01cBY2af82CdbuouPHI9PTpa1F0mb6vxEKbNS
yg9n2W3lxogHoSb9dqsqAtUSolBlKLj+XStjSeUo2jbqF3VPehLctVJw4auG
PI66a8SiWyuDTSlKUDtq3V9ltzfnPU27+aSsz1B+10r6tl41xKf83lKn/Ne7
+5lSXK8pJ6V+Bsp7eiU1LVPrX+Hyjk1wZji8JguuEF+AVztUyJfcEkSbBS04
U/oIbu6tzWF2DCXsuEa6jy+4c3zfqftlfd2by9+1K6znT8+ll1cYECiBwMRz
6O47Ui3AqriZS1MU4nAYuz7b75ZUls2IH+rEUEad1j2UW6DGNiWuKWEVSIpp
E4U4lIHfrLOlbZRzYYG/EcWtPeWk/CwAGmvKPj/0saeAoriWTQcvjr2coXZP
0XwskDY9ydKIBx7kh0zukbGO4jbsuU39DR+Exd6iq5HFPksY6c6lLaN2P729
KtiEEnhPTla/LPbRuo7iga/MxRStOi4t9jcJ3UchtiA7/fqR1dH1jZhabb89
L30Akq0bUZvKRaGCu7sGefBpk8ZTEmUuziiLQqJ/V3cwoWjrwfvKmpm4fyuu
yFXJ3X/v5wY5PeqRyG6Qe5M0xomhLfrvkR6Bsf9t6mZCyfywQdamOj5RylF+
OEsXyDgwwdfCzL3f1ju4KqRXEIUqx+v9QyUznnK9Z6aqvXVbF+OT/NSZ3lwO
t84kNT8JKxufiF6cW9fXlUfR9tGxUs8jZP7USzyq9fn8rLq5rcjk7B1gSnEE
IRvI72VQN1TITf7YmWHcJ52Q2Vh5KVM8GErQ7nu1t7K82NZTXKsGs2Ue3S16
iwdtGx1HtHNpjkJc3y9lvuDNvuhaNG07KlHuE5ralLymhFUgKaZNFKIEwTLb
m834X5gpxTiOS9aypoVfcTd+enuHwpmmaCPHgAGzt599ovyo0fbMWEhp05Ms
jXjgQXzIiG59Jx5P8vzmqx9iExYrgq6mBPs0brDkB3i3CUfFA8+XCcPFcZLr
Pvp3tc9k5Z+dUY/LkZtvrhwdVxmV+1vh1+kmCsmfU7lWzQYvTril8UKJknUj
a9PiKGTQY1vmW9Hj/WPrG9LGvuMTHsv1uTJRiM1//d/Vw+tGNTGj6RptvpO6
dVPbnvy9RqG3etMjqZxMm9fsa6nZTXKOTXRjaPN+u16U/hP76IcuxpTMM3iE
barbE6UCpYczAKJQpWBfHBjhzBSeojw/OaHuDKOD8YnobkwQX3wqm3ZK7Uio
eIZbq4YhPXr06N61Q6CPvTFNcWjTRpMSZB6MYR/v6GtNi0+uzaO/3v33k3d5
u0DxiKLzRvIJl9SMAQouzW3E4zCObQaNlDYiKsCG4TDuKn4IEuVmv3796tWz
PQNr0fK3GRddKzHq9RPZvqUxCtFWww7IngiOS05SCjezaGpTLWpKWAWSYtpE
IcZ5/FGZzV1wZUETHoffaqncLdjE57Ksf5LWTgv3sykaf5g1HLr5spJdQKsz
o7qmJ1ka8cCD+JAputpg0HP7S7UrTlis8KvR1Uh5nRY7L2rA8qJ5gAuuxnwU
OTf2hvqX7bCP13UUyNepHB3XW837m4SurgrxnPx7hRXq3bNrOz9nU4ZXyyd8
fqKqN6uoXDfCNi2KQpSw/6/pKbObC2lD79FxSu5Tkn6vUMn5njap03vJSeld
Suue/H1HoULVv0cqnkzb1MM/WFansTuk52HLS5lah0uZ9dlRckGXfbi+kzHF
azyvbMZt0jbV6YlSkdLDGQBRqDLknvuqsYC27DF1RH0eZdx6qZqJc3QwPhGf
NT0V78xXLCb13kOK4hqYWns06zZq0T4lr+VjX57fNCbQli85BQhs/PrM2PLn
f+XqWPKOjCucOmgx+cvw1I0BDo6wUfnCSNp+zOGybVjw36kfPo1o7WVnypfe
F5VGIdqadEo4zc8Kyc/fpPyBVo1tqkVNCatAUkyrZ4Xk5+RiH6+VnILqyb/X
UttzWc6Dkz9MbOsgbjau2+iD8sc8ye0oZE1PsjQtHlImPGRyDwyzUvKcRzmL
vUVXowMvt/cUR3uHsUekxotadFxa7G8SFfSsEJt5bmV3O4YyajrvfFk9SNaN
sE2LohBtGTKohwNDUTyfT1OURczi9wqZ1g3qLo7BnRtZMxS3/owzcvuxFv1b
cUUqIwoVq8Y9EvEMcvlnZ3pxqRq9txf9NCB6sLajEcVvvuh62edI21SnJ0ol
lB3OAIhC75/o7oauNWnDFl9fzkv/JdJaPADt97PKe/h1MT7581PxWVPTLKcq
nmVWI/vfY5u+6B/gYEhxKMa82eT9j7S+5Cy6U/irk/lHe4mnxlY3BigcIBr2
/p+GtzSy6ftGeAgouqZvxIwV2377/fDR48ePH17QwYhSHoVsRx3SVRQim9tH
cxQirCl5FUiKqahCsnhUqBiF5DMP++B7yZ0xXu8ahYo+dGd9V3OaMg3f8ULu
DxqWRt70JEsj3CBlNB4yeUfHOxVe7lHfsITF0NXoAPuf5GdkuYntSDsu7fY3
iQqbNqH4umzZ7++E60bYpsU3yIlHtUKvDm3c+BTPfUiskjnIZZ4VYh9tD7MU
H8ftYmQjpRb9W3HdKjEKFa1AteyRyCfTFq+YL48Sdv9R0r2I7n0fbEgJWi39
R/qhVcI21emJUpHSwxkAUeh9K7phhXEZfVByc0v+lW9aGFJczyknVNzFrYu7
Vm4vbcUXD0I1PCqg9fikWN6jkysj6xiIVzI6TvP9OvJfema6J5ejzUfVjAHy
z81uwOXwGs29qP5Bi3+WtuRTjMvIA9J7TPbPfT6cKERYUy2qQFIse6ekCvL7
UdYv/YSUQhSiLYcmyCwqP/Vzby6H32pZeW+Qk1F0m4P4HC33Pk4NS9Oi6UnW
jXCDKFB9yBTNpcVrskD92IOsGLoaXchPnenFVXjdEVnHpeX+VrjgCotCbzO3
djfglO6YpOtG2KbFUYjnN/vvLDb7rwWBphRtEbL6utyAU37ahIJr37aUvK80
bLv0A/Fa9G9FKj0KVc8eSYv3ChUGbcokdPMTVnR/dXtDyrDdKpn33ZK2aQVH
IeWHMwCi0PtVdMOKWZcNJd1EZsJwJ0b1rSsk45Mr8/0kp4F1qn62y0uRvF2Q
6zNT7TOS5R2fSLz6uY+QUvGeQvXyL8xpxKcoA78vTqu/Zb/0A2qGCoWv6qN4
jedeVPeLT17yx5Kf1Ltvlf79LvdPyW0gVScKaWhTsppqUQWSYrnxg2vRtNXQ
BOlZRnNPTHZnOIozyHEbzJbeG0R3lrcRUIyT3BNEBHuvUoXnVUrQYc0j2U9p
WJoWTU+yboQbRCkVh0zO7yPE41jTsJ/UPspPVAxdjS6wjzeEGIp33I+TZXdc
oo5Ly/2tcLkVFoWKfoxgXCcez9Nq3cjaVH4GuX+3hkvux2s846RMVlScQS7r
5JR6PIpxHp4gtS+T929FKj8KVcseSZtXrIpuLAngU8IePz55uKGzEWUcsl5u
tjfCNtXtiVKeqsMZ9B6i0PskuvdD15o0v8HnUjdHi/5Z2c5EPASJ3KXs1hWS
V8BnbO1hXLgAVdMZFVxdEmhMUUY+I3dK3Y7PZt0/d/F+aY9AOj4R3TuxN/lG
pvTsYM+PTvLiUoad1j/S/kTEZiSMdONSFGPTbsaeq2WLZXPSr6ZeV3xrh/rJ
tC997S+uqGnTT/bfK9tgeU8v7t8cX9qbF502mdrjk0su1Yuenpjd0oxW9axQ
JUQhjW1KVFMtqkBSTPRvTJABRVv33vJvcSXYl6kLgyQbTjEKcWjbnhvSis/I
+fd/GejCUNw6U/6QPxtrqKnoTvyqNb+duZ8t9cecuwdntalFU8ZtY/6Rn6BK
/dK0aHqCpZFuEK0OmZd7+osHMxb998jdaPNWy2LoanSiaIpv2npIvHx/Q9Jx
abm/SVRQFBI9P72ogwXNYZzHJBZ9hHzdiNpU4b1C7PPDk+obUFyXgbulbrpS
Mpk2+/TXj+xoiu/9aUrZ9Uri/q1kFQmjEPtka4STjbWNx6j4cr52SJ96JG2i
0FvR7eVtDGiziLXf9xTSwtDNCuGErE11fKKUK67ycC4t8epy/JZNm7cm3iQ7
50N1gSj0/hTdsELbffSr7NXcrGMTa3Mlt66cVOydCcYn4nPJbwPtGQ5l5Nwy
bODg6P7h3ToO2yI7K37u9Y19XAUUh+KZufkFdezY1r9hbSsj2iB0y/OSIqTj
k8LfsWhDG68WwaERA6P7925X35JPUYb1Jye9KN/wJOtcTKij5PFNDmVg6dGw
RWBg0/ou5gKa8ZhS8n7P7Mt7v48ptHxqB2uaw2s4+Lui/165IUm6qnk3tvav
bSCuqIGVV0D7ju38G9axryFePdMBe8vOAzdXtTejKdrMs9OAESOH9A2uZ863
7jBxcCNe+aJQwY2E1YXrsnSYn+SrAsctK14zqYvw2vXwBG1KUlPiKpAVY9P3
RjsxFMU1rxccFhXVO9jHSmDkG9W3EU8hCvG82rd35pk4t+gWERkW7GUuHjMK
6oyMV3K+Ul/ToiEfRQtq2LnXb9qyTevmkpc7SnZkh+5rrij+yqlhu5E3PcnS
CDeIdodMVtJYZ4YShqxXP9ur+mLoanRDdGt5G0OK8Zh0XNkP6po7LtL9jbB/
IypWFIW4Ds1CexTp3qWdn7OQkXQVdYfvLc0lWhwLBG2q+IpV8R51aWm7mjRt
3n7FlZJ9SukrVkW3V3eoIc5aAYsuS12MIuvfihBHocIOl0MJgmLKe4OUPvVI
xTPICV0aB8pp3W/VZfl4JLq3ur0RY+3hbsqUTqAgi6RNdX6ilF5DtYdz0Rcd
m+DCcBjHsUcQhfQLotB7k3dujp9A6f0pogebQmvSlEmbZQp/IhmfSH7KuPDj
pK6+9qYCLs/IzK5u4JhdDxRevZB+ZvP0yDZe9maGXIZnZO7kExQxdcfV0uWS
jk/Y9JQ1k/sGNXCxFBpwaUZgauvZss+0jWeevsu9t6Jnf22fPaiDr7O5oXiZ
fONajl6B3Ud+e6T4tRTsf+s7CZTvLXStwfG5csv6e9vnUW287GoY8g1q2Lh6
+/cYs2D7WelROPv05IohQXUsDLlcgZmTX8/pv1zPyj0y1oFfriiUvTPcQNma
WQyRelxGyx6eqE0JaqrTKCT25saez/s0d61lyOObWHu2G77ixJNsyfOwClGo
2cLzt/bPi/R3NTcUGFl4tBz4TeJ9VW+1U1NT9vlfW78Y0s3fy8lCaMBjGIGJ
hbNv8ICZm0+nq/ihUsN2I216sqURbRAtDxnJwNCUYtzGJql9HkZdMXQ1OsFm
xA12ZOia3TbeU/WNGjouwv2NsH8jK6bwXiGK5gut6wT0mbb57DOZemhzLGhq
U2VRSPyPD38Z4MylDH2nHit6d6fSKCTe91JnN5TMHdBlg3RCIenfiteOMAqx
j9a0F4iTUKtl8ldviOlTj6TyvULK5x1gH23obCwe2tHmEbtU3bmrsU0r4kRZ
XFDz4SyZ6LSDgEPbDk0gnsgJqgdEIQDQoaIZ5Hy/PE88QTrIyru2IrgmzfMc
r/7iB2ExKB82fd8wVy5t0XntTbyCpJoonNFZ8kQ/HprXN2SHc97hsQ40bT/8
AJKQvkEUAt1i/zu6Zs5sjeZsOoUBXLVUGoUwgCw30cPfhtURMHY9f7ih7vFe
wmKgvZzLK0MsGUPvsQkqZx+HD03BVck0Z6ahmyttdgWoHISHc0HaouY8xm3i
MY0vbIPqBlEIdKvgouSt0hrxWy/HL3PVEqKQTuTd3jXc21jgHrnlurrzMmEx
0EbWpTW9nPjCRh/H3sNOXH2wGdt6GjM2g2IxVNAr5Idz5o5wIa/hVzh16SFE
IQDQIUQhAAAA+FAgCgGADiEKAQAAwIcCUQgAAAAAAPQQohAAAAAAAOghRCEA
AAAAANBDiEIAAAAAAKCHEIWqNtHdLeEOQofwLXfLP/O00veAAwAAAADoN0Sh
9yf39+HWtOp6Mx5T/lB4UWL+qam1GQ637menyz8fl5ZRiH1xYee84V2butuY
GfL5RmZ2ni1CR8z7KTW9oNxrAAAAAABQ5SAKvT/5p78JbRVYLMDTgqEovk39
gJJ/aR2x8pJi2hA9Ttm+dufZp+9wQUeLKMRmnl4cYs8TNw/FM3PyadrCr56T
uYG48fgNvzxXBV5on3/+S1/jLpue4fIWAAAAALwrRKFKkrO7nzFF24w4mFvh
X0UchfLTvu9kQXMoo3pRq048LHl5PfvqVtKmrcffJYzpiuj2slZ8AaIQAAAA
AOgAolAlqXpRiH24uXtNmsM4RO64XzXvhWOfbOpqTBFFIdHt1d0cHMM3P1Zf
krAYAAAAAFRDiEKVREMUyj87w4tbukn4bVfeUzltAvvi0q65gzs2crEwEfCN
atq4+rTpO3FNSllcUBaFss8v72RF02YBs088L/rXgrRFLfgUJey8/r7GGRpE
z1I3Twtr4WFpIjAwtfFsM3De3htZMiWydoQZcLjen6fKPOKUd2KSK0OZRO7J
kSrGOI478iJtz6yIAMny+MaWHgH9voz9J6fsYwW3dk3t275JbUtDRn7HUfUU
lejmEn++IHj1Aw1RiKgY+yx+nLeZ0CV88+3yT14BAAAAAFUMolAl0RCF2Gd/
71m3fNGcGSOD7Bk1USj/9o5oTyOKQ9FGNvWaBwW39fdxNOUyruOPlkUJhSiU
m7YxzJFLmzabnlwamNhHazsaiJNQr+0ZGq6QiO7/OryeIUXxLesH9+7Xr0eb
ujW5FG3eau4fmWWf1CIKieNM65a2BnYBAz/7etmyr6eGNzCjKa7biITSFRHd
S1z9zcKFC+dP7GDHcLie4bMWlvhmXfJDZVtGp1FIvNpujHjHNOm3+436bQMA
AAAAHw5EoUpCeINc4dMxKqOQ6NbKYFOKEtSOWvdXRmmBvKdpN5+IpEtJR6GC
u7sGefBpk8ZTEtOlAkDesQnODIfXZMEV9TfHsQ+39rKgabPWc0+9KP54wZOk
qX7G4vQyNullSTFtohCHw9j12X635HvZjPihTgxl1GndQ7mAUnDhq4Y8DtkN
cjq9KpRxYIKvhZl7v613cFUIAAAAoNpAFKokuohC+akzvbkcbp1Jx7MU/yi1
jMIoZNBjW+Zb0eP9Y+sb0sa+4xMeyy4wZ+8AU4ojCNmQrjYViG4sCeBTXK/p
Z2Tmk8tKHOPMUMLQLU+KP61VFOL6fnleutybfdG1aNp2VKLcttEQhdiMw4tH
Di0ypG9za5qxC4ws/u+ho2JSsrUqBgAAAADVHKJQJdFBFBLdjQnii5PQtFPq
3zlUGIUoYf9f01NmNxfSht6j4xRvKiuOQp03qp8p7sW2HkYUbT8mSW61s3/t
b0bRtaLji0OONlGIthp2QGZxecclxYRRv+a8laEhConurWzLV7VXGXTf+kKr
YgAAAABQzSEKVRIdRKH80595cjmCjms1TZMmiUK0ZcigHg4MRfF8Pk15rVgo
78g4R4bDa7H4hrob5CRzK/A4PL/58rfR5Z+aVkeyLuuK10WrZ4U85aY+UChW
8u2VdIMcAAAAAFRHiEKVRBdR6M9P63IJ3hdUdIMch0MLvTq0ceNTPPchsQof
Ed1Z3prPoc0/2qvuZjvRjcX+hVHoslwUykuZWpvRHIWSxXlLMQppTEzFEIUA
AAAAQHcQhSqJLm6Qu71U/Deu18xUghvkxPll9t9ZbPZfCwJNKdoiZPX1PNlS
+Weme3I5tE103EvliymU+b8w8WrbjVZyg1wNijYftK84vWTvlGQc+VXL+qWf
kEIUAgAAAICqAFGokuhi2oSiSzFcn5lncxT/KLUM2Rnk/t0absdQRo1nnJTN
PPkX5jTiU5SB3xenldxAV7Ksf1e2NaC49T47LbPeRdMmGHf54VHJfN3xg2vR
tNXQBOnZp3NPTHZnOO8Qha7M9+NJLj1puAz2FlEIAAAAADRCFKokOplMu+Dq
kkBjijLyGbkzrSy+sFn3z128X3bRR/69Quzzw5Pqi/OMy8Ddj6SXymYkjHTj
UhRj027GnquZpX9ic9Kvpl4vfssP+/S3gfYMbdZqzqnid7O+FaUf+bSJMcU4
DtlX8k/iyBQTZEDR1r23/FucctiXqQuDzGjOO0QhNmNrD8lGi9ylfpo7XWNf
XY7fsmnz1sSb6hsLAAAAAD4kiEKVRG0UKrh9aN3KGIkVX4W5S+bL7jt3ReF/
x6zed036E7nXN/ZxFVAcimfm5hfUsWNb/4a1rYxog9Atz0vLKLxiVfztl5a2
q0nT5u1XXJG9unMuJtSRL2kdysDSo2GLwMCm9V3MBTTjMeWPkmzFPk2c2sSU
lrxitX1YZGSvtp7mXIo2bTItSXryOTZ9b7QTQ1Fc83rBYVFRvYN9rARGvlF9
G/HKH4WKcxiHMnJuGTZwcHT/8G4dh22p+Hf95B2b4MJwGMexRxCFAAAAAKoP
RKFKojYK5cR+VEPFJlKc7bkg/czm6ZFtvOzNDLkMz8jcyScoYuqOq2XLVRKF
xP/48JcBzlzK0HfqsUyZSyyiZ39tnz2og6+zuSGXZvjGtRy9AruP/PaI9HuI
2JeXd34eEeBuYcQXCK3rtIya9fPllwoXat7c2PN5n+autQx5fBNrz3bDV5x4
kn1gmBVd/igkuUBz4cdJXX3tTQVcnpGZXd3AMbseVHQUYh+v7SDg0LZDE9S+
vgkAAAAAPiyIQgDq5R0e60DT9sMPIAkBAAAAVCeIQgBqFaQtas5j3CYeUzs3
BQAAAAB8aBCFANTK3BEu5DX86rz6GcsBAAAA4EODKAQAAAAAAHoIUQgAAAAA
APQQohAAAAAAAOghRCEAAAAAANBD1SwKqVmstMre6gAAAAAAUMkQhQAAAAAA
QA8hCgEAAAAAgB5CFAIAAAAAAD2EKAQAAAAAAHoIUQgAAAAAAPQQohAAAAAA
AOghRCEAAAAAANBDiEIAAAAAAKCHEIUAAAAAAEAPIQoBAAAAAIAeQhQCAAAA
AAA9hCgEAAAAAAB6CFEIAAAAAAD0EKIQAAAAAADoIUQhAAAAAADQQ4hCAAAA
AACghxCFAAAAAABADyEKAQAAAACAHkIUAgAAAAAAPYQoBAAAAAAAeghRCAAA
AAAA9BCiEAAAAAAA6CFEIQAAAAAA0EOIQgAAAAAAoIeqWRQCAAAAAAAggSgE
AAAAAAB6CFEIAAAAAAD0EKIQgH7Jy5gTEGfjfDYuV7vPvdp92tkmLnhJZn7F
rJfulbemUK2xD34+08jj4LCfs0WVvSoAAFDpEIUqW8HRTw/Z2yd+nqL+tExY
TAn20Z0+TrE2NpL/2drtc63ze0CXP6etenwru9zrDB8yRCHQa2zqnCR7m7jA
+c8/mD0ZAAAqDKJQ5WJfPBxVL84x+NoltWdlwmLKP1sYhew8knr0/3NA/5Re
IUlehcnII+TqqSqzzfIvXw92O7XjeWWvR5VRgRsEUQiqBt3u5ORLEz3J2L31
wfkM3XwvAAB80BCFKhX7aFuKu218r/VZai/2EBZT9WFJFHIIKotReY+ezOuy
39Z2X/C3VWRYy95dd8LRCVGoVEVuEEQhqBJ0u5OjDwEAgPJAFKpMBa9iuuyz
rXN6V7ouiqmgGIXEco5faGwf69j15q2C8ixTx9jcHQPibTGMKVWhGyT/XaLQ
vuDvXlaFXYZIeWsK74Nud3L0IQAAUC6IQpUo768rLR3iGkx4/EoXxVRRGoVE
j26HO8baN7l0Kk/2ux6mr5uaEtwowcUxvk6j5IhPbibfV7wSxT49e+eL6OMt
6u93EhfzTWzT7fSny+79lc7Kr7mGpbF34i6P6HsswDve3rb4aaaS/5X/Tn5N
Xyq6se5kHdu4BsPvP5b6Z9GDu9HecXaeKZv/Ka6FZORvn/jFqbwbe68O7nSo
rss+N++knuNvHn8kX03i7Saucd61uLSJEUebekk2Xd0GiW17nf3ix4znbHk2
CNmXih4m3xgXmuTlVrj+E26eePD8m6DyR6GQFZn/JqWN7pZYz1XlBnlz7+n2
b/6O7Jjk7b7PwTG+XpPkiMk3j1TgjqTjmhat2/MLd+cOPe7vvd/JeX+Dlic/
XvboH9nH67J/O+Nsf2jGybxb+6+NDJVU1tHtgH9o6pLfs8qfvTTsIYVfahPX
5usXMjtD3rNZzeJs3VP3S31x3uFzXvYHJiaKRBkZP3zyR8v68Y6O8Z6Nj/SZ
+1h6AxMWe0vQCmQbRLdHvRZLyz9/tbVD6V/3hW18I7cPsc/v9neOH7L79eH5
J5vUjvdue3bTxfzMv24NaZ3g6n4wdMbDe7K/ApAe9QAAUIUhClWeguQpB+3t
k2ad1jBhAlkxlZRGoYJbN7s6xjq0vnpe6h9zr98Z2DDO1vFA67DTo8ec7d/1
kLtdrEODP3+8KfPVL09eau0ca+t6sFPk2TFjUwdHHGteZ5+t6x+b78uMnAiW
xj48dmflihsrll2KaBhn43B42KIbK1YU/2/bH/IDFRJEVch/vSkiwc7u4Mjf
Sr5ClL0z+oCd3YGPtmeVDnaK7gcLDD3ewCt52Oy0detvLhx3rL5DrFPg+cSn
2n+p5Huzfptw2NU21tYuvkGr4737/NGt7aHaDnHNPn9aMlDUYoMQfumTA+f8
HWPFxdpGnBk1/FRIo3jngJSId7hBrmXflGaO+5uF/jly9JnwVgkOtoobpODY
Z4fsbeM8/I72iU4dM+rPbk3j7WxjHQMuHnsps0Dd7Ug6rqnkoEk418pFsrSg
PmdGjTrdK1Bc0zjPHmlnpKpQlEoCe57wdT4Y+vGVmHW3YuacaVcnztYhccrh
PCWBWSPNe4iWUchuX0TM/ZlB8R7NTgyecH7apNTIToeC52RI//5BWIykFcg2
iG6Pei2Wxj7P3L/tn1XfXZ3a+6C9qijkFNeo/fEew64un3PKzyHWucPpQe2S
Ry++OX/AIQe738f/XrbVSY96AACo2hCFKgv7/MFwzzjH9v9n7zzgoji+OH67
e4UiCIp6jSogoih2ATuKFSsCmmhQo2Lv+RuTaKLGHnuJxlhijzFGjiIoiooN
wQoWjKKCChZs1Cvrf/cad8eVXTyRyPt+/HySO+b2zbyZvXu/nTczd24ZzTei
WMzYFfRIITxn5/n6PJHP1NxC9XuSt2t6xvA9z665qg5aZA8OXPIVRLmHPdB4
2CmNiYzlCU/+lKJRIXFp5vWCt5rBH9WrKS755pfAaO6HJ7dQNip9+PCLhiK+
b9qRvPfyzXVTGvFFPiOzn2iUkUf+UTznU8uuqVsqu7nmjCtP5P/Ty7KQk6pR
/MG2cx6EcPBP231DrH5bnF+Q9aJc1GzSIRSNlrz4vg0RrZ34JrFE+V7R261D
jvK5URWVQlFcQcLYvwqVQbKkOHbKcaGOQ4jqZ788llZcon5d8nZzSByPFzvy
b83g2qwDyawtxXOzR3iLCKOr0lRGpaVn5p9y44nafPtcPTkrj/xJh4w+VKRu
w+vjV1sIolzDH+bS1kKURghNKRTl5BTbbvqTbA3H4zpzPVSKUesFeg4x111P
+2ryVUUGpVAU3/fqySLiRcmeoTE8rqjz0tdi8tnR3Z6OojbzXqpGPp3vNwAA
AKAKA1LoE4E/3nnejRczaJvxsy0oFjN6CU0phOOFz98l777W3ZOM9DZnlkUn
4nM3WgpEbee+1MqYE+f/5CfiOZ3bUZYEJfl7RAxPmLTkmrEaUb6aHDMFRXSM
4jkHUhrzRb7jnjzNzo5oLBL4ph7RjtUUkb/T4KynGg3FX+eM8ogSNL9xTmWD
qlHJ68UdRVxh4tyLFDStKYdQNFqadK0pP8pt6MM8zYSotJsBwopLIcdumXc0
WiB7nDXIWcshenlzKIWQkF2Wa265YM6BZNaW4vc3JTvyRB0WvdIyWvR8dksR
z/3in6opMEXkLwy8k6EpS0pypxAqu+m100YdogdqI4SuFOI3vZLwVvciWh+l
UIxiL9BzSFWVQk5hD56RDZJd+jFRwI+fkSQvVfR4lEuUW+QThYPpfb8BAAAA
VRiQQp8G6bs13aP5DS4demmOYkbRPFdI+Y8nqu9/aVOKZg4PfnvVKUeuqPmA
K7NmXSv7NzMtuImIK0icp5Ge9+yfVB9+lLDxmSnrnqS/0BvH0riavJlmCYpo
GpUV/z06gS+ID/CP4wuOTYor0QlfFPlgLb9/oRXtyHuE65i85RFOy6js8f2B
jlFC/5tpVNZCmHAIRaP4vfVniJCv+5p3WrF18dPxnhWWQiKfGc+0HCJ5s6yz
SMMhulUVF0sLCySvYi835Ouu3TDfQDJvS8WHImJ4/ITZZ3QnL+PGx/H4R6cc
V807yVVJYx2HKFSJe1ocTfdSHCF0pZDriByjSohKMaqDnJ5DqqoUIvSOfEIT
z1ieJBSeXHJDPrBLn070jHIekVMg/xO9rxoAAACgCgNS6JMgvpThLxT5Ts8r
MEcx4yjPFfI4MfCrlIiIC119RDzhycVXdX6sZUkz4/lcnXXHqn9EWJisOTUi
ydh/PbhpNI8bxXOKDxp968/LJZIKX+29uYIimkaJduTljCFCF66oxZTc/HKB
vCLy77xMe+9ovGRXWDRXeGLxNZyWUcmVm+2E6gfOpjDhEIpGZSk/Jgq40V/s
K9WyKX75Q6uKrxXqsFg7CMeLd4ZqOkRe/ef5exem9u+Q4OEYxTOyKN5sA8ms
LZUWbOhNqN1TqzN1ugpPW5Ao5EaH7VaqZkXk306nUfpUCRUojhCaUkjkM/OZ
8ekpCsWoDnJ6DqmqUqjB5Fx5TfGMFUlCx1MrbymkUC4phSIUUoj2Vw0AAABQ
ZQEp9CmQJE5P4AsTf7pk/BeTYjET6KwVyjt0qRE/yiPk/n2tB+iykzPi+byY
kYcpb+BUXHRh/+3xwQkuvCieIK7nvLy8smrSvJqZpBDdJhSm3Owiny9z7XHn
eonuXxWRf/tykf+OwUTkf1IthSgalVwmk7Wcwh+W2x1NH6akEDWjSoHw5X7t
Jfzi/B/bVlwK6QbhSm2odsh7/GXuTL9oHj8ucOytrYeeJiW/uHjxZfKa8648
A/uDmWEgmbWlsoKNfeRS6I5OV8lS55NWdKQQFVVCBYojxIDRF3Oa65dCTb+h
JIWMFqM6yOk5pKpKIa8pWlJolT4pRPvbEgAAAKiqgBSqfPCXOSM9RY7dtdZc
VLiYaXM62yZI3/3aN4bHjx91qFgzQS59eZKQG911Fd1TY2R5KVnj/InQN35K
gjowoHk1MyXI0TP69sXc9tE8t9PjI5OceTHdlr7S3ilZGfk3mp6nnQ/2eklH
zXwwqkZlj+71k2/Zd90cCXLUjOL/rjtNhHw912mnjZXmTW1YcSnkO/u5dsbg
29VBWhmDD7eQC21azXqmmXBVHJVqUAop+ZCBZN6WSg6PIhPk/qc/QS5u8jGt
SRBzSSGKI6T4yCU9c3NFTyLdoz6aFKI6yKuNFKrwtyUAAABQ5QApVOng2dvO
ufJiwnaa2DCBWjEK9srtIFeUktGePFTo6gkNnykPXe2WeYvucu/37wuiUt15
Wrlk9K4mfUeG007nd1foDFk1NIzi4lNzEh15scHr3pQWv1raNZrnlLQwRSuu
UewSIOyifR5T9v0BTlGCFjfOq0xQNSqWH/cpTFpsdJcAJaYcQtFoadLVJvyo
+sMeaU40SG/d6er4Adsm9Lv3SDNZ8lVOhLumQ2Tnvjsm4EZ/9ZdmzWSXfz4h
pHBqTIUHkllbiudsO+fME7X/Wd+2CW4X9uap3jCrFKI4QsTHrzTkixpPz9Oc
xhSnpLcVfDwpRLUXaEoh89z19K/24VLog74tAQAAgCoFSKHKRvp2Vddovlfq
P6/MUYwCejbTxkvjJibwedEdF+YXq8tJ3q7rE8Pjxfb4Me9J2e+7LP9W3oHj
Gg/bZcUpR1/c19zvGBefn3tSyIsJ362x8wDFq6mu8Be5UD1+nKiUSvqYQSgb
fZV4rY0wqn7wXUUkU3zldlfnKMcO6ec1TrFV7h3NT4jYU6AMOyXF0ZOOC8i9
o/M1N9OmZhS/uynZjRfl2vnakXtlb+NFxem3inXjKZMOoWi06Pm3rcgtpmef
LFVGfeKiQ2MTBB+wmTbPMWl+inokyTJWn3HRcgh+d+1pR67I//sXqgVueH7K
7b6eIt21QuYdSGZtKZ7/dJKviO+ZvFK9mbas9OzC0248UfNpuW/on3ZK0SyV
ESLLuT/QOYrvc+lP1elL+LvXawfG8bkfUQpR7AV6DjHXXU/7amaQQvS+3wAA
AIAqDEihSqY0Jd1PIGo281mhOYpRQe8Rq7JHD8I8o3iuyRs0FkSI72eP9yfX
sDs3Phkcej6kT5K/b5wjL8pjwtOyKEb84rsWIr5LfIfe54aPvTxl/KWQTkeJ
Mi6d0s9o9wClq6nIj7vsKyDqc6zvqMtTp6R9Pez8jD8rMh1GxSj+4umUlkRs
lrz+ltqC9PKSU8686IDvnqsDXXnkH90h9HxLx9iWvckTRQd3kJ8o6n/t+Eva
RuXlCvaNPu7EI9REXJugs2Fh5/oEJjZ2FTkPzy4/dk06hJpRPDfmcivlwaOp
4yMvBreJdWx6JtivoglyvGj/7kkNPE9G/CA/c3bSGfLMWW2HyLKyQj1FPH5c
u/DLM2ddHTP4hJdjfNgPV7o6akshMw8kc7aUIP90RncP8gDNTqGXxo1LGdSO
PGLVo/vNM/llZcwthaiNELz06JRjAl6U0OvE4FFp40ee69w42jUwbUzX6I8o
haj1Al2HmOuup3Q1aeGp3Vm//36f+PfLqEQhodbHZG6Vv/x9Z+6/8sbTkEI0
v98AAACAKgtIocpFkjAlni88sfCyiQ0TqBWjhF4pRESs15cnOfFEDb54qHkg
oOzVm0NL0gZ0SPB0iXb2jG/d8UzE7MxD1zQetOKlqX+kjxmY1KpRrLNQJHCK
bdouefSCR1fLb8FG5Wpll5XcPJj+ZWCCh5PI0TXONyB5tojuufPUjOIlovEJ
Al5s8Pq3WrFf8aslRDApTPzmpHIiQCGFeq598yAxc1yf414u0a7eiX0n3T39
VE+9qLZUWnr1wK1xA076esYIBdGuXsc6D0yd/887PVEoBYdQMyrLTswcL6+/
S4PjvUbfjrsvJve/qpgUcjyz4Z44/UDG8K4Jns4GHZKfcn/awERvF5HQKa5F
UMqi6IIi8Ytvm0VrSSHzDySztVTZ3juPl4xNbusd4+gU6+OfPH7Z4zvvtAqY
Xwq9pzZCSgpil6T2an3UxTG6vs+JkBn3U15IyYX8H1MKvafQC7QdYr673vTV
5FpG/55vzil/yX89aEkhKg4BAAAAqj4ghQBAL4pdAgJXvIF0FwAAAAAAgM8S
kEIAoBe1FIINcwEAAAAAAD5LQAoBgF5ACgEAAAAAAHzegBQCAL2AFAIAAAAA
APi8ASkEAHoBKQQAAAAAAPB5A1IIAAAAAAAAAIBqCEghAAAAAAAAAACqISCF
AAAAAAAAAACohoAUAgAAAAAAAACgGgJS6LNA9mhniNBGGLLzUcXPaq+OgN8+
a8TnZ3lgDIvBB0s+dU0AAAAAAKiSgBSqPErS5vqyEVaj2ReLtf9QdHZWQxZa
M+jXLDIgL40fXQ817B7MfeY5se6lJRfImI/ZYHZKFdvuTJxzcv3UgW09uHaW
bI5NXffWwZFL/775Bv8Ipv5TfpM8OhzpY812GrA5o0j3b/ir1N8m9PDh23JY
HDunloO+/+cehPIVQr8UKri2ro+AZdtiauwT6aeqGQAAAAAAVQKQQpUI/jpu
tDOG2HRZf09jEkKaubpjDYTTbN7lUvlrScrS4PYBSvy9HDAEYXMb+6ve6RC2
Pr18BCfLPb9n84HUFx9DY1QUPP/MvHa1UISBMO2cm7Ru1cTVwYpojHXgxocV
nYORXPuxqXWv7S/1NfO/4zf82dGJjSywOj3WZ5TXONK7G7raowirrm/vIUP7
tRZwEITlPvF41R/dFcVYn34gBmeFiq6u6FILs/adeSK/Kt0xAAAAAABUMiCF
KhVZ9rbgWijKH/6PKvLDn/0ZXg/FXMbG661/yaFwawTljkkorcxqmgPZg23B
dVAG6tB+TnSWcuYDf3fv+O/7Lr6taPgpy1rdns2hEjZXYb9Js7b2qYMy3UbH
6hNgkis/NGYiVh1X3ZXPU+HPDn3JR5GaYQffVnY9KwnqfUofIwlyeO7fw5ww
lDtodzbkRgIAAABAtQWkUCUjvrGotSXCajwnRR6eFZ6Z4cVEa/f/47H+gKwK
h/TGeRc/1hFjYM4josw344I/297bGvlvSyHZ4539aqOY8+jYV3obURo70gHV
SOaT5WzowmawO66t8Exa1YZGn9JHkf9oYK0Q/vzQFzwUrRu6Pw9mhgAAAACg
mgJSqNJ5d2KSOxOx7brxvkx6+5f21qiV39KbhpaqmAjpJalzvJlqz7E7r9d9
xI2/3N7Lwnrg7sy42Z2cba3r+IRuuPzu9cVVA71rWdUQ+k/864F20lhpduKq
sd2bCu0s2ZZ2Qp9uXy9PeFgRNfH28Je1UYTtv+IuhQjelFHpvYOzQru29Khj
iekOHEPLfKqq30rOzvDAjOUISjN+bsFCLDqvUxQgpxHtUcxlcpKeaN6UUfGt
VZ1qEl4YvO+JhjXZox396qBoraCNd5Wee7u7nwXmOvV0/q0D3w5o6WxvybGu
49nhq+WJj/W4lmpL8dfpBxeMCGrm4lCDw7ay57r6dAyd+ut5leKh16fUjIqz
E5YMC3B3sLYg6x+x4sSjlB8aMw1vmyDN/CXAAmF6z7lUbhGZuhUvYyY2srNx
CdmR9XlKUQAAAACo3oAUqnzw3L2D66KYYPhvG4n/MhtMP1NosKyJkB5/eeXv
LWuWzZ8ztpMAMxTSczBhs7btQ75bNKuHExOxaD6gbxPfIfOWze7tzETrfhVV
lnlVkrEpWMBEWA7enfsPGRraq61zDRRhcnv/epuuGhInT3PDGKzmCzNMLkyn
YFSWfXzT0sWLF/88tRsfYzC9QuYuVrF0S9ITfTFqFfVbQcxILorWDjtoeIkK
GZ9bIpjL1zEvCjMPRPraIChv4K7yO9xRMirJ3NDNHkV5YftVXlIKIYc+W7PU
XUNKIUKABPhxHXxDpv+8as3yOcNa12UinAaRMc9w2kZJu1n7I7ysEAaCWnEb
tukU2NnPx9GWiblOPqUSJTT6lJpRPPfIKHc2grDq+HQLCR/cs5XQysKzezdP
I1LoPZ63I9gGwYTjjhfrL6AcyAykRvghQ0UAAAAAAPjvAlLoUyC9s7K9Ndk4
Iswd+tczI/k5FBO95AsuDIb0DFQw+mghGS1u7UnEp0yfHy6LyUosac3C3Kaf
VT4Sl5Cpe6hdp0WXXqsqVHpvxyA+htgE/UozPevVH8EWCFJz6OFy26PpQMuo
9PpPviyGORPkKtlvpScnOBJv999ttAEFyd805iBoLUchEfKzHPusTiu/uIqy
Uen9Lb1qoyg//MBTXL55OCmE6g3cpdlguRRiIBYt5qaqRXnJ9UV+VgjTY+bZ
MhlB1ajs3vpAWwTheAzdcjlf/bb4Rea/z8oNI5N9StFocdJkNwxhNYiMzVO+
V5i+tocDuaWgkc208adbggjdWdaZ5QrkH53S1MGufviuBzArBAAAAACfHyCF
Pg0FsaN4RJjGbPRdmtFtnM0T0nOCNueScaT43Iz6GFpvdLz8aoUHBlki1uGH
FHFiadIkZwyrPy1Zy5L4/Ex3DOF02ZhDJxKUPVjTgc3AHCcmKSNMPO+viZ1U
e7m1H7T6qrLR9IxWuhQys99k91YGsBmsFj/fNDpX9i5j+xA3JnGLIJYtZ57I
1VeWjt9kD3f0q4ti/CEHHz/Y2Z/8v7AD2jNpcimEcAK1Pofn7xtki5B9qLJB
1agk7btGTAbTc5qR2U41pvqUotGShLE8FLHuufWpxmXEF75pwDQqhchMyYZM
BrvLBlrjGwAAAACAzwSQQp8C/PXRMc4Y2Vam14xkYwGjWUJ6Mm6Xp/dIrs1r
wmQ2+v6yXImUHBlWE7EYsPcd+UKavqAZi1AvHb8aq8mYof5cjIHVN/jYXH91
FFLIaZJKCskerevEVnUw5jz5lOJ9mkYrWwqZ22/i01OIXrfov8fwbnDSx9GT
m9uiCJvf0LMWEdu3/jGlUOnB47+uWLE+7r6Uvt9kOXsH81CsbgPikpjT8MO6
2wTIpVBZr6iqcnNRSxaD3X6VcpUMVaOKvmZ6fnOByllNJvqUolHpnaVtWAxW
y0XaIrPo8NCaiFEphOduCeJQriwAAAAAAJ8ZIIU+AaVXf2rOQev0mzWmMQux
7rAq0/AkgXlCevuvRPJgkDzChclqNv+G3GBJFBnS998jD+lLE8ZwDR5QigrG
n6C1XCh/Rx8OQ21WpzllQTdNo5Uuhczst9KjX9dFEZuhhw1F5tK76wNrIoiF
d6TosTj3nwhXJsLyiIx9jr+X3V3ux0I4HdbI87Rodxb+dF8o+QnMKULPjn6K
tUI+c69qyQE8dzOpEhrOSVW8TdWoJGW2F1M9oWYKE31K0aj47Iz6GHGVbdqN
I7Sni8Ed5JRt39OfkIHCCSfpSH0AAAAAAD4TQApVOrJHW3vbo5Ztl2SIn/81
pB6K1gv/0+ByIfOE9LUiojVD+gX6Qnp5mG45cN+7D20fiThpoiOmMaOg1RwN
KUTPaKVLITP7TXxqspN8VshAWcnl7xszGVj9yUmKmaC3Z79tZkm0YsCOu5eJ
liMWHVbfl9E1Kqfg7P+acMiUO6tW89PKrf9XSCG15lG54PHGQEIKeaulEEWj
kov/a0BIoe6/Udqj2pQUomZUKYV661xFnthofFYoj5wVwjxmnQcpBAAAAADV
EJBClYwiNw5zGZdAZklJbi5ta4kwvWYmG9hfoNJCesnVeU2YDPXfPhA8f88A
GwSx6fvHc+0dyLSlEE2jVVEK0WmCNHNZW3ka1y39ZYsOhFgiSC2NubTSW2u7
knlyfIE9itYJPaD0Jk2/vUma1pCNWLf+IryJBWLZ/IeLOimZcimE1hkVp+Us
Sdr3jZiEnF2tlLNUjcqyVhE+ZXqbWAWnxESfUjQqvb2kNeHZ1ktuaxUriRlR
GzW+VijtO2/mZ3xsEwAAAAAARgEpVLkocuPsem1V7Y78Jm60E2Y4S67SQvr3
xYnjHTGE1XzBDXM8H8ef7x1kjyIWrRde16y5jhSiaVR68+cWRNgctMX0fEPV
9FtJ/BgeitgO2qv/eNUS0XA7BKkxcO9rjRo+PjBESG7nbN1uxW21tqBhFH91
bKInC6nhv+R6SVHKD80sEE6T/50t0Cyi2EGO2WSeZoac7MGajhwEcypbQUTV
qPg8ebAp0+e7VMN5aWpM9SlFoyXxo7koUqPPds3LSG/Mb8YyvoNc7tYelojG
ojYAAAAAAKoVIIUqE1n2773tUXaT7y+VxWay++u71CCi9iEH9WXJVV5I/16S
vsTPGkFsW82IzS6zJn5xI3ZHjIFpDGOUpM4lwm7EwmvYtquvVLUq/HOwlaYU
omcUz9/Vz1ruquemtFAV9dvbv7+ojaIOX/z9+r0eZDmbg4gr2bRffEUlVQpu
7xnVyIq8XTD+4D1lpwtRNYq/jB3jxiSF0A15MYUYYntPP6WxdYNCCjFQXv+t
mcrsOUnOX8NdMITpOfOcxmbaFI1Kb60IIMpZ+Yw9kFmmufDCnKs3cnQlh8k+
pWi08MQEor4sr/FHVRt2ix/sCSNFpLFzhZ7vHlATQeuNjDG0dQn+LiNm5/Yd
u47/W5GDhgEAAAAAqOKAFKo8FLlxKH/YYe1koMLTUz2YZJbc2fJZckZDemnW
sS3r15Gs/WlQfXL/4tAFa+Wv122KVpw/SSOkJ4LHu7u+8LBAGIhFXW//rkFd
/Hw9BTXZRBj65REKz/fLUXrnt/5ClvKczVb+fi29HW3JPaK19yqjYxR/8c9w
AcZArJzbDRo+IuKLkD5BX+/Ue+BLVfVbYeIEZwyx6fGb/s2b3535X1NLhIHa
Nuz19ZRpY0PaCi0JNekROnda51ooatfpl3T1BakYxZ8diSDM1QhYekPth6KL
3xNiiNVgUqL6nB65FGJ5d+3qzKrh3LZP2JBBgd61mAjC8Rwboy1QqLa09M62
wa4cohzLzq1Fp6Cgzn6+HnWtUIvgna90m2y6T6kZlT05NNyFpThidfDQ8OAA
N1sWz8/f3cgRq7J7azpaIpj7tDMGh7di4wXMccJJkEIAAAAA8BkCUqjSEF+d
34KjNxVO9nh7sD2K1Oi4utyfjIb08phcvxMt+u6STzzQCunJqry8svv7oR29
+TUt2RY1ua6N/PqNX7Qn1eQsjAGkeckbJ/dt6eJgzebYOAjdfQL6jZ23OfbW
G63r0TCKv7v+x7TeTQW2HCbLyo7fIGD8wce0pdCn9Jssa1M3WwRzm5Cof0dt
2bNzGyKDGvNtOCxLO6FP14gFf2UQ3pLl7AsTYIhFk1mny3xnwij+9OBQoY4Q
IlGIIaZ75NF8RUmFFGq9+Nq92IVD/FxrWXKsHNzbDV96vNwcDo2WSp9f2vHt
kI7eAjtLJsayquXk0yls1v5bevqDQp9SM1r6IHbhUD+3WpZsS3uXNoPnHr77
On4MFzUghfB80QhHDLXvs013SlCjTO7mbhwGyhsVR+GIJAAAAAAA/nOAFAKA
SkV8e22gPcrymlw2LfOJUewg1/THa+bYMeM/Av48+mtXJurQc/O/RnZ3EJ+Y
IERRweijoIQAAAAA4LMEpBBAETzv1K/z55lk/vYLVSXEr6rInvzztScH4/f/
/W6VWK2vlkLV5pjRkoz1Pepglo0mxBncxp5EmrmsDQtzm3q6IvmhAAAAAABU
fUAKARSR3lhA7sdlCnaHNbAxsUnEWQdHN7Lm1B+y886nD7OrmRQqTP91gBPb
ptmkqGwTDX6zP8SG5ftTNfELAAAAAFRDQAoBQDWnmkkhAAAAAAAAJSCFAKCa
A1IIAAAAAIDqCUghAAAAAAAAAACqISCFAAAAAAAAAACohoAUAgAAAAAAAACg
GgJSCAAAAAAAAACAaghIIaDKIT4/ywNjWAw++On3mQYAAAAAAAA+W0AKAVWO
/7IUkjw6HOljzXYasDmjSPsvRQdCLPQMd9RhZFypqkzpsUgeykA4rZfckmp+
VnxyoiOG1Z9+Vn4ka2n86Hqo4RsIc595Tnl0q+zhmg5s/YU8Zp1Xne+KP94U
yFHdfSjLqibXs01w5DJRZqG6AtL0hc1ZDKbP3Ct6dpkrPTnBEUPYfsvvalX6
veTKDz5MBoPVeskdaflPKRqLWIb+9eHdTM1vSkqy4leOD27tXtfGgsnk1HBw
8vbrPeLbjQn3Ct8bofDYOCcMc518qrj83/DX1w8sHN27VX2unSWbbWXH92ob
PGbh3rTnZZWR5iZvnBzcwsXeksWxrecZEPbdvhtvNY93fbUz2ILB9Pzmoo6D
5U1gWAzaX0ijpdRHSMUdogfJ1blkh6tGEtOyJtejdZ/I5bH/at8LZhuWdKHQ
Ump1U2OOrqc4ehXFVL61sBM0DBg4aWXM3QJ9LS24tq6PgGXbYmrsE333HgAA
AKAGpBBQMSTXfmxq3Wv7S9x0Ubr8Z6UQ/uzoxEYWWJ0e6zPKV116N27TOpJV
X7dgI4htwMTV5Kv1WxPLjqRVRTuYy/hEzYBPOyiSpCwNbh+gxN/LAUMQNrex
v+qdDmHr05XhjyKuQ21cmgfo0CF8Q4YqRlLEnKiNR/tevXv3CurYysOBQ9yh
iE2rOadfK/tXEeWyWi2+VS6yUnQXq+Wim9p/kmaQ8om4Drvdynt6Tt01uxQy
5TeS4isrOtUm4k7Uqp5XC3+/lo3cuDYsorGoYPRRIyE2nn8wvDbKajrvqq4U
xN+kLO8hIC+BsOycfFq1bdHQqZYF8X3H9v3xqtKs9MHeIa5shLBqzWvYvHkj
gQ1GvKjRbNbJfPXtQ0sKmW+EVNQhelEMErROk269CXp2a9fUkWwpA7Xzn3/h
XVk58w1LOlBrKbW6KSpopq6nOHoV9wtT0LJn717dO/s3UfgWsfQcsu2mHn3+
vujqii61MGvfmSfyP8KXNAAAwGcDSCGgQsiyVrdnc0AKaSDN2tqnDsp0Gx37
wqhTSg6FWyMod0xCabk/KaIdjgUHteu742nZVfTObpi8miqu0ytgNFDEnMzG
P6infEofJ/yvjS0Z0/2kOmxIkjLbi4mw26/O0lE1SpHk+9N1HSWUuawNCxM0
9KqJWnRe/6i8FjK3FKLgN1n25iDCW3V7rkzNV1dI+ubfU3s3HErX50Alspwt
3Wsglh3X3NdtfObG7g5EeG3VcOiG5CeqhuDv7iVu33VGOQxk2b/3sUcZaL3u
y86/kPtI9jptXbAAY2COI6NfKWtLRwqZb4RU1CH6UQwFTtDmXFXF8Dc3tg2p
z0IQi7bLbqvHhxmHJWWotpRa3d6bs+sp9qmimM3QwypbJdknV4V6WiAI022U
6Jme7xw89+9hThjKHbQ7W8+jCAAAAEAOSCGgIuDPtve2Rj6SFJJc+GApJMva
1EfoGLIjt9Keh8oe7+xXG8WcR8e+MmHTlBTiBA4LF2Ls5gtuqMO9ypZCBMWJ
44kQnNV2Wabyo+JzM9wxxDJo82Ot9klvL2nNYjAbfZemHZySWpmD1v5iy9qe
VuSnnpTzirmlEAW/lUQNt0Mw5ymny/vRGEQb27CRmv3/yNNuBP5kR18i0sWE
Q/bnGHSw9Mb8ZiwGat//D40ol7iB9g2uTbS+y3rlnCAdKWS+EVJBhxigvBR6
T06oHQithTLYHdeqZz/NOSypQrWlFKWQObueYp+Wk0JyEw+396tD1MN92mmd
hFyFreeHvuChaN3Q/XkwMwQAAKAfkEKVT2l24qqx3ZsK7SzZlnZCn25fL094
qBmliG+t6lSTiF0G73ui8SxP9mgH8ZuH1graeFf5W/l2dz8LzHXq6fxbB74d
0NLZ3pJjXcezw1fLEx/rW89hwqgK/HX6wQUjgpq5ONTgsK3sua4+HUOn/npe
pXik9w7OCu3a0qOOJabbh8wGs1N0DFMzKs5OWDIswN3B2oKsf8SKE49SfmjM
/EAp9O8KPzYncNPjygoASs7O8MAQ68CND00+fzUphbqtj/+xGRtzHHNUlVT0
CaSQLGdDFzZDM3YsTZrkjCE1+u58ruFU2YO1HTkIs8H/dEJ4WfbGQAvEuve2
p3d/CWAj1n22l3tsbXYpZNpvinjYhWbkL74424uJciNEb7Xfl2Yua8tGEJue
v+UY7nTZ/VXt2Ay09rAjOms6Co4MIwPi7lsUYTItKWS2EVIxhxhCrxR6L7v3
iz9ba6WNWYclRai2lFrdzNr1FPtUrxQinH79J19Cb9X5KkrvoiFp5i8BFgjT
e84lgw3HX8ZMbGRn4xKyQ3fGFwAAoDoAUqiSKcnYFCxgIiwH7879hwwN7dXW
uQaKMLm9f72tEahIMjd0s0dRXth+lRhSCiGHPluz1L/QpBQiBEiAH9fBN2T6
z6vWLJ8zrHVdJsJpEBmjHXdSMkrazdof4WVFJrZbcRu26RTY2c/H0ZZJrhVX
/frKso9vWrp48eKfp3bjYwymV8jcxSqWbknSlG4UjeK5R0a5E0EFq45Pt5Dw
wT1bCa0sPLt38/x4UkiWvb6z/nXRBBZ9d72uiL2CmJFcFK0ddpBCWr4pKcQO
WHk3Z3twTdS251ZloPUJpBAZ7LEYRAiVqn6z+FikAEXsQv8scxH+9Lfulgjm
Ni1Zu2b40609rRBOp3WPZNL0Bc1YiO2APboTiOaWQhT8JnuwrjNRXcHgXQ+o
R9IF8WOEGOY+LVmnnvjTzUEWRDg8YI+xTi+J/qoWwmB32ag7FGWP1nYkAmXu
2GPynqMjhcw3QirkEIPol0LyTEkGs+G3l1RNM++wpAbVllKqm3m7nmKfGpBC
7yWXv2/EZGCuuvegqq55O4JtEEw47ri+BUVyO8nT3DDih7dG+CFDRQAAAD5j
QApVKpIbi1pbonadFl1Sr/stvbdjEB9DbIJ+1ZxPkN7f0qs2ivLDD5APDmWP
dpJCqN7AXZo533IpxEAsWsxNVS+2Lbm+yM8KYXrMPFv2e0nVqOze+kBbBOF4
DN1yuSydXvwi899n5R4WSuWPIo0kyFE0Wpw02Q1DWA0iY/OU7xWmr+3hQC4i
/lhSCH+VtHLCWANM3HihItGAYg81m/67qeQLmpJCrJaLbkkKjo1zxlhN5l6R
hzeVL4VkDzd1q4Gg9UZEazxrLowdRQg+jefP+Mvd/Ykwy3nSSe2uwp//0dcG
UW4dJ0md481E7MP+1BGZ5pZCVPyGvzo2yYuDIMw6rUYsj8rIN51lhb/cP7gW
ymo2/4ZuWfHpKc76tovQ/nju5iAOA6kVEV2ulcWHh9og6nuIjhQy4wih7xAj
6E+Qe757QE1CNgwskw1mHpbUoNhSSnUzb9dT7FNDUuh9wf5BVsTV+uzQr8vw
p1uCyMcV+saGokD+0SlNHezqh+96ALNCAABUQ0AKVSbyFCOs/rRkraBEfH6m
O4ZwumzUyrWQPdzRry6K8YccfPxgZ3/y/8IOaM26KKQQwgnU+hyev2+QLYI5
TkxS2aBqVJL2XSMmEYxNO0Nh4yhTUoii0ZKEscSvu3XPrZq59OIL3zRgVkAK
4fknlo8dpWBkaJt6hMsChihfj4pcd15fLr15kN1bGUCETy1+NhYZqTEphZot
SJe+l2YsasXG+CNE5Lj+MCmkB0KllK1i14o5cUlB3q0TWyJb2qFozY4rb2pF
5u/+GeaAooKxCUq9+PbQkFrE68hj2voRz98fUhMhLnhZ/mlx8nQ3DHUY9s87
rVJml0LU/CZ+FPNtV6F8LzLUytH/y3l7Up8ZnmGQPdrUzRqx6ry+fJRYcuRL
WyIC7bH1uRH9K7v3CzE0yPuxXNeVJoyphzLYHdbIL01LCplvhNB2iDHKSyHZ
66tbQl1ZCCqIiCpbQ2fuYUkVKi2lVDfzdj3FPjUohUqPfl237GrlkaTOachk
sLtsMJLMBwAAUH0BKVSJyFOFiN/Gjl9pzUSMGerPxRjlwxhZzt7BPBSr28Cz
Foo5DT+su/BVLoUw58mntD4mvbmoJYvBbr9KmfdN1ajs0bpObDIWu0AlyjAh
hSgald5Z2oZV/uFq0eGhNRH6UuijZL5RQvGQ2KL/nremy1KSQuQMBJ63q789
WqPrpoeyD5RCqK27X6A23SfsL5tg1DzARXUTojU8B644W653Xx8Mt0cw16ln
5NaKYkfVQ1HuqFgd8fzm0FBiyLpNV2XslBwfJ8TQeiNjtMp9BClE2W+F9xM3
fxPSgqsIi+18R+3I0PsAgLyb2Kj9wD16Yl5lPNxzm7ENAxUqGXOaZGYpZK4R
QtchRlFupl3Xt0e/fv369u4W4COwRhFi/DWbFqf57WX2YUkHEy2lVDfzdj3F
PjUshRRXI7NR9VYEz90SxKH81Q4AAFDdAClUiRA/WVyDBx+igvEndGMV/Om+
UPITmFNEVPkfXcVaIZ+52kedKNIymA1VyfRUjco3Sy6X528IE1KIolHx2Rn1
MeIqOhEFoSxcPnQHOSMJchqTR+Wo2OSR/LHs/9u7D/CmyoaN4z2Z3QtQBGTv
2b2hLW0ZHYyWVZaggspQ4QNRRJGlCCgqIA4QAVEUBUEQ8WW8DhAQlCEbBNm0
dIDCC7SN30nSpmmatGmbNqH5/6778pKaJjlPTu25Oec8j7GDFKPMrEJi09gx
trFU1vqFX+9qRqSSL5CTuLeI6iEewnb3fVAqyNpO/tXYxqgyP03xEPLv+7i7
Y0x9qaTW0PVFz/b8+883wx6QOEi8m4cULMkS1NRT/ILB2aNKqkJmjpvGnUs7
lz4bXU+hno/4qe+L/x/k7q4JzWWSOo99+7eRb9aWFHmI4cqyRaiufZB/lVSx
z6fgKint3l+OKmSJPcTwsaUMSMn0l1gVn8HR/cGmQYlPztl40uBqNovvluVg
akvNu0DOoh+9mZ+pySp0Y1UvJ0FwTv7M2F6qdnNVL0cHab3ROywyOQYAVDNU
oSqkPWJ2Mv0ry9A/Oye11/zlpXPg9P3F7mHRVqFWBjcQqy69q76sRHdfsbkv
mrNnUguxCnX90KxZV0urQua9aH4VSjB4lnu71F++j6ZNuPfD0/U1Z4XM+mDN
rkL/5h6fE+IoeXDwurTd4odTRfcKqa6sSqklEdw7LzB2nKdKX57kKsj9Zx7J
1ewxEu/ULw1+8m5vGVnHaA+WNnz6B713WWlVyKxxK5R77sMEb3GD+6w2/Oj/
/vaxOhJZ8wm7jJaIvHOa8wfeQ9aXdP7kzqZhNSQOyhgj986rT8NKHsq/d/6f
T3s7Grv3/e6WEQ9KBJeCO9otvYcYY3pASmF82oTiLL9blpORLTXrvVn2ozfz
MzVVhTSXHTvI2kzZb+Kkj7aT6U/hBwAoRBWqQjkHpraXORT+zivFjf+Oa6UQ
XIIGDWjvKDj5vbTH4NeupgpJaj22ucghTs5+9XxChUthmvuieWfnd1SIFcpw
fRjjSqlCZr6odk2aIjcIqN3ZNFw8hLiPJtPWTmulvvHZQvcKFQybKv2zPjUk
zlFvfv2yj7zKpk3IPf5GhHo1ypRVxRcDUs8Z100zN9yfh2f5ywWPPqsNbta+
s310famkxqB1+lcL5s+v0PT/dhVuQeVVIXPGTf/NaS4gEkep6G6oSl+V7ClR
BMw6YmLwcn59oaXMwcgs2/q0P1eSmkM3GPz43towVD2jcrcPtb3h7ubHaooH
uv3WFK3TqvSP4h0Fab3R2/WOhy24hxhlYkBKVZlVqJTdspyKb6l5782yH715
n6mJKvS/n8c3kzpI64/ZburnKGf/i61lRRZ2AgAUogpVJc36gILcb8bhUv96
TpX1nzHN5YJr2OxDd27vfcnXUVC2n7SzyIUm2hnkZO2n6l8hl3fu7UilIK1f
eAeRuS967xf1wqaydi/uM+PQNPeoeBwsHvR8YOIckpkvemfLiNoSwTVxmf7T
aBcmvJ+qkLgdI8WjFPeUT0tbXlXzYPOrkDiQP41rKpU17Z3iV3VVSDxW2zmh
lVyQNhixufgGaVcMcu/z9pwYpeDWc4XBXTSamXnVQ1G0IWln3dafUbkyq5AZ
46ZHU9wFZdx7+pN3iD9JC6OdBZe4xSbuwFB/46HpvgpBcPR/aa/pCc1y/5jh
JxckNVJW6e/kqutrBtSSCM4xi/KPT7ULNEnqPLqxSIW8/lkfb/Fh8Uvzv9nS
e4jx7TI6IOZ8X2VWoZJ3y/IpvqVmLrFqyY/ezM/UaBW6tX9mmKsgKHym/m5q
H1ddXdLNSTB6zxIAgCpUxXL+mB3qIgjugf/37YXCA5N71w9/+/Em/V+9qoxv
RzaWqYvQYe396ZoypGg9/ge94yRtFXKQPNRrycn8q+dyLn45tKFUUF/TozeZ
tpkvmntsXrj4OOd2T3yud3G/6tbFA4cvGv4SVWWu7Kk+vkpdY2IOJTNf9Nb2
0eL7lbcc9V3BhN33zq3qX0/qUMEqVNVurh1UQyKpOWitGZcUlakK/Zt36s0I
sUPIZUJVTqatur5uSB2JoGgzqfi9U3ln3+6klNZu1sRN4hL/kcFRb87e51vI
1EurGnbk/LVY9Yp7pVYho+OWd27Tove+/vXibb33duf89y9H1pAILtEL/tTv
PLmHZ/jKJd59V5d0j74qc/MT4s+pIK3defLaYzcK7/i/k35s/4n8Mph34aNE
L4mDtE7i2/uyNA9R3Tz0fkp98Z3Vf/xb3UF93tmFncWfGGWL4atP5Y/5rRMr
BopPL6nR97OChcIsu4eUZUDMUNlVqMTdsmRmb6mZVciSH72Zn6lhFbqX/tuq
8R0fkIqFrO2EH26YGnLtZObFJi3Rf8TfRzYtX/bxyq2nzS7LAFCNUIWq2L1T
Kwc1cxQcBMcHWofFdukc6tO8rodC7AyD1+uOCFVp64c1kAqu4a8f1v1uur1n
iliG5C3GbtOt06OpQvLWsbEN5K4NQhL7p6bEtPYWfzkrmz+xqWhBMedF1e6e
+KhvI6X4OLlnY/+oLl2iQ32aPeAscUxanmW4HarrXw+tK3UQnBtEpAwdPmxQ
n8Qujy8vMpmreS+ad/mroQ3l2iVW+w4ckBTe2F3+UGhY0wousVrlbm0bLX5k
bt1Mrz6fe2rz4gVq8x/3Vw9D+Ji31H9auGRb4XUrRg6KxFqs/ktk9a025Z5B
zq2hX7iBTgMW6a77MrqWZd7ZxXEeYjEOm3PE8IrJ3FNzQxXqW9icurxvcNot
5/eX2soEx6ITvOd/14nX1VdDFs44rtlYB0mNZkHBRYUPWXq6bFdmmTlump7m
IEiUHnWatA2MiOwUrF5CWL2/1+vx3tEie9udn8c1lUrrjdxS2vo1tw4sSHpY
PRrijl6rqU9IeHhg24beSom06QTdxYC5Zz/p30Auvo7U/eEOwcE+DTyk4h/c
Al74scjZjf8dmBvpLb5jQe7dxC8szL+Jt/p75A36f1K4rrJl95AyDIg5ylaF
LL1blvzWzN1S896bhqU+ejM/U20Vkj3kG9e1S+ewDg095Zo58LwCxq77q4TZ
4M+8HekkSJuO+8nkx6mdpkb68OgdVCEA9ogqVPXyMn7/ZMrAyNZ1PJwUjh61
G7UJ7Tnq1VX7CtqL6sqagfUMipCatgzJmj75Xf5fOWqrUNBrB898OzM1tJG3
k9K5ZtOIoa9vLXYOp/QX1clN//XjF1IjW9f1dJJJ5c7e9dtF9Z+4+piR35Gq
vw+tGJfQoa67UiZ39qzTInzUmksGx7/mvejdc9/OHBja2NtJ4eTVMLjvy+tO
ZW8ZWVtyf1UhzTGauyBtPHqbibsHbn/ex9HI7i6p+WjhzV7GDorEY9lfJqoX
WrLkukJFbqI2eswpPvP+qT5K8VArfonhPQbayyMFx+iFBheP5f4x008uKMLf
PGOkEGovRlKEzD2ZW7ixxt6b3GfaoYpXISPjpsr6beVLjyaGtq5f081RLpUq
XWs26BAz+MWP96YbvN7Nb4bVlshaTtpjzjVFeRm/rZr6SFyHBt5OMolU4VLj
4dbhPZ54Y8dVvUHIufLjgtHxvvU9lTKl2wPNwge89PlRI5Ns/HN87bQhUeIP
jKNcfJ5GAUljFv5wSf89WHYPMX9AzFK2KmTx3bIkZm+pee9N92hLfPRmfqaF
Py+CIFW6P9g0sPvwqct/uVLSLqrK/Gb4w1KJV+JHF0wOlurq+3FKB8lDj20u
+/TpAFANUIXuX9oZ5Dq8ctByMyqhAu4dfyfGSyJv+XThiTsAsBJV+sbHG8kk
Nbu/f7qEU2j3to+uJ5HUHfEdTQiAfaIK3b90VYiF82xE3uWvH2+ulNbptfQU
dyhXlOraD+9Nn1qq6ct20zwrjy1/Crb83mzAnSMLu9WSOrUZvTmtpM3PPTkn
WC5t/OyP99M5eACwIKrQ/YsqZIPunV0zoo2Lsknq8hMcWlSIZt6CEv4/kU/R
6W3mCK48tvwp2PJ7s7Zbf7zXu77CzXfshgul/Hq4sbqPm9xnGr9FANgtqtD9
iyoEAAAAlBtV6P5FFQIAAADKjSoEAAAAwA5RhQAAAADYIaoQAAAAADtEFQIA
AABgh6hCAAAAAOxQdaxCd9YO9HKt2dAnbvis9SdZQRsAAABAcdWxCuX8vmT0
kF5hDVwEQfpgyicX7W55PQAAAAClqY5VKN/N7WOaSgVl1MILdCEAAAAARVXj
KvRv1ookRwdZu5d/ZwlSAAAAAEVV5yqUvbKHWIXavkQVAgAAAGCAKgQAAADA
DlGFAAAAANih6lyFbq9NdRckDzyy4W9rjCwAAAAAG1adq5Aqfe3gulJB0TBx
2he7T6ffylFZY4QBAAAA2KDqXIVEt05+PXNI4ANS9esJbgPX3anyAQYAAABg
i6p1FVJl757ft42nTJB7NQmMSRr49l7uGgIAAACgVp2rUM6+ya1kgqzJkE9P
37bG2AIAAACwWdW5Ct1c1cvRQdZi0h7OBQEAAAAoqjpXISbTBgAAAGACVQgA
AACAHarWVWgFVQgAAACAUdW4Ct3aNaGVzEEROvdUnlWGFgAAAIDtqo5VKOf3
pWMfSe7U1F0iSDyi3zmRa80BBgAAAGCLqmMVurN2oIeTV702kQNeWHkgW2XN
4QUAAABgm6pjFQIAAACAUlCFAAAAANghqhAAAAAAO0QVAgAAAGCHqEIAAAAA
7BBVCAAAAIAdogoBAAAAsENUIQAAAFTArSPLBrdwEhThb5zJK+2xt/e82F4p
OCgTP84s99qPeWk/vTMytvVD7k5Ong/79piw8tDfFV1HsiybALPc/c+TD0n0
ju8lcievui1Dezw555uT/1j7zelQhQAAAFBOOZc2PxfqrTnkNaNH3Ds8O9RZ
fRhY/iqkytz2bBtHQZDXbB3ZvVt4Uw+pIPGMnHfoTrmeTa1smwAzaaqQIKsb
0D1Bo3tcR9+GHjLx05d4R7156G55nzfn4CsdXOKXZVS0/WpRhQAAAFAOqux9
b/dsoBAUTfoO7ewpKbVH5J5eGOuhbB/k6ySUuwrd3fdiW5mgbPfstuua78+9
uG5YE5ngErPoXHk6TFk3AWbTViG3gev0S+qtE8tTG4rl1XvgV+U8cs87+1ZH
hZIqRBUCAACwotxTb3Vykbj5jP76/N9fD3Iv7eqyvIvLe9WUevd8981ejuU+
K3R3x5iHpZIaA9Zk6b5bdeWjBDdB7jvjj9zK3gSUgdEqJA758dcC5Q6yls/v
zSnPs6rSliW4CFQhqhAAAIB13T3+zRd71aXkf2v6lXKjjSrtq8F1pc6hsw9f
WRavLG8Vyjkwtb1McEpYlq73zXkXFkYrBGXUgvPlaDFl2ASUiYkqpEpb0k3p
IG08fuc9va/mZez/+LmUkKa1XJWO7rVbRg6duf7ULf1vyz2zZmK/2IBmtZyk
hjVC1qKctUqNKgQAAIAKubU62bGkG21U2d8/1VimbD95z+28q+93KXcVuvXV
ADdB2njcz/qH0f/e3fZUHYmk7lPbyn3/yb+lbwLKyEQV+t9/n24kFTxTPr2u
+/zzLq4b0cpJEBS12sYkDxjQM7KFl0yQeHecsetG4WMubF38+muvvTbr2bg6
UgdZyz4vv1bg9Q/+e7ncHxpVCAAAABXyz2cl9ohbOye2Uciajd1+U2xFl97t
rChnFco7vyBK4SAPmn28yLVwuQdf6SBzcOy5siIHg6VsAsrKsAqpcm+nn9ix
eFhbZ2mN6DcO6gqS6vLK3jUlEs9OM3Zn5+8SuWnbJvq7CLLGo7fdNHjW3EPT
fOQOXCBHFQIAALARJfaIO79PD3CSPjxsg+Y8gOZytnJWodwTrwfLHRSd3i46
RULuyTnil5Vx712pwOExVcjCik6mnX+UL3sgaPjczWduFz4s79S8MIUga/3C
r0XO9N3aOqqBVHBLWp5W9DOlClGFAAAAbEoJPSLn+PxIN+kDKavyL2KqjCqk
+bIylipkS7RnheT1Q3unaCT3Sujs38BdKq/Rrs+srZcLzutlf9LTWZDUHWV4
dePtdYM8BUmNYZsMZl2gClGFAAAAbInJHpF37sN4b6lnl8V/Fhz6VqQKab/X
1AVyPVZmF35NlfHVU4EdDAQ+/Y3hBVelbwLKx+i9QqobBxb2qCMVnANnHtSc
Bco9OSdE7iD3n3XUYP6/nN3PNZc5KLt8cLXIfkIVogoBAADYFBM9QnVldb/a
UpfwOUcKZ/iqSBX69/a6gR6mpk2o/cT3eicWVNc+7Ko0PMh0TFqeVcZNQHmZ
mDbh39yjrwbIHaRNtFPI5Z2aG6qpQkcMqtC9XyY2k1KFqEIAAAA2zkSPuLmq
l2MJx3wO0obP/nTPxFMalXtkpp9cPZn2df3JtC8uEsuVImL+nxVpMVQhCzNV
hf69sbKHo4PgmrpW8x9ufJbiIkjqFJv+7/a6QR6CxPuRjVwgRxUCAACwYSZ6
xK3vJnYMNuTXyEPiIPFqEhAcHNp7/oGyrQhzb+f4JlJJjdQvs3RfUl37OMlN
kLV+cX+5F5cpYRNQXqaqUM7+KW1kDtJG+S0476+F0Y6CrNXze4t0Ie20CS7x
Sw3u/8o9Ostfrj5ZdI0qRBUCAACwAWXoEaVeIKdKW9m/fu0Hazd9ctPt4v81
5/AMf4WgbD9uu/bEUO6l9Y81kwmOIXOO5xZ/dOVsAsxhtArlZe2dE1dT4iBt
MGpr/hKqqutfD60rlXh2nL47K3+XyEvfMSnARZA+/OjGLIO9RJW5sqeLIKmd
uibdIl2IKgQAAIAKsWQVuvfzuEZSB0EZteAvo892c+dkP2dBkNdqE53QPaK5
p1QQXAOn7vmnQhtAFbI4bRWS1QtK6qnVI76zfwM3qeAgOLYYsf5K4Tirrm+d
GOAuUS+xGpuSmto7uqW3TJC4Bzy37XrxfUTbnBwE5wYRKUOHDxvUJ7HL48vP
scQqVQgAAMA6LFiFVFfei1WKTajjWyZv/VFl7Fn8VFybh9wcHT3qtu8+9sN9
hucOyoEqZGHF1hUSJAq3B5uH9X3u430ZhoOsunnk8yn9w5rUdFYoxQdFDHz5
iyM3TZ02/PvQinEJHeq6K2VyZ886LcJHrblEFaIKAQAA3Pfufj+ytkRw6rzI
+DkhwJKoQgAAALARucdeDZAL7kkfX7XMbfFASahCAAAAsA2qzE96uUhrP7KB
4zpUhfu0CokvRBUCAAAAUG6WqkI1atQQuwlVCAAAAMB9gSoEAAAAwA5RhQAA
AADYIaoQAAAAADtk8Sok9hSqEAAAAAAbd19UIW0bEp9QLpdThQAAAABUHFUI
AAAAgB2iCgEAAACwQ1QhAAAAAHbIaLV5Z+Ei/R60YNG71qpC+jMnUIUAAAAA
WIrRavPdlv/oVyHxj+WuQrrTOlQhAAAAALbDaLVJz8gU68+CRe+KEf9F/CNV
CAAAAEB1UnLHMTOlViGhGKoQAAAAACuywSpkdOYEqhAAAAAAC7JKFSq5B1GF
AAAAAFQ2qhAAAAAAO1T1VajUHkQVAgAAAFDZqEIAAAAA7FB1qkKfr/nSIptD
yhRx2Ldu30EIIYQQQoj9RHcwbCNVSP8tkSoLw04IIYQQQuw2VCF7DsNOCCGE
EELsNlQhew7DTgghhBBC7DZUIXsOw04IIYQQQuw2Nl6F5i9ePOONN2bMnTd9
zpxpYma//srs2VNfe23qq6++NOvVKTNmTpkx48XpMyZPmz75lWmz5s6z+nje
X6EKEUIIIYQQu42NV6HBTz7ZY+CgpNTUxP4DEvr17963b7eUPl2TU7r0To7r
2Su2R8+YxB6dExKj4xOiusUn9e1n9fG8v0IVIoQQQgghdhsbr0JJAwcmpqYm
9B8Q369f9z4FPahX74IelKTuQd3FHtQ9smu3TnFdrT6e91eoQoQQQgghxG5j
41UocYDYg/rH9y3oQb2T83tQUg/9HtSpS7eOcV0jYuOsPp73V6hChBBCCCHE
bmPjVaiwByWnaHvQ0pUr+w8b1jkxKTo+Map7fGR+D+oSERMX3jm2CkYs4/Ci
Xj5Pfn7FvMdf3zktLmLilutZ2enfjA/pMnvPdfEZDr7XP2r06rPZJXzXrMTY
SVvSy/UOr22aFJs455frZjyYKkQIIYQQQuw2Nl6FND2oTze9m4MGPT5izfr1
KYMGq3tQV7EHddX1oLCozhUekIzfvv78xwumS4olqlDWtT+2rP3xZKbp78q6
9OumDbvOlfQ2TCf7z10bNv52OdOMB1OFCCGEEEKI3cZaVUh8UXOqkNFJEvo9
Mmzpyk969Ouv7kGx2h4UI/ag0Mjoig5I2vbJsQMWHc0q4TH5VeiqeU9otArZ
TKhChBBCCCHEbmPjVcjUJAnJAwe9tXhxfHJKRExsWHRMaFTnkE5RwR0jTW/p
tX2fvNA3JswvICgwsueI9/Zcy84+//P7Y5KjAwMD/UJje4379ODVn+alRrVt
2c43Iioi5omlx7IyDq6eOCSxU3iIr39E91Ef7LysfiqxCvX2f3TGO2OTosL8
/CPiRy3673nt6Zvsv356f2xyVEBgSGj8yDlbzmRkm7hATndeSfyvXftMW/HW
yB5R/n5+gV0fn7vtr8wi31W4Cdd3v5EU1nvu7kzdVy59Mz448qX/pOX/8fKm
iSEdn998tQydiypECCGEEELsNlapQu7u7mZWIVOTJCT17Tdz3ryouK5iCQqN
itb2oKDwTia39MIXj/knz/n1amZ29rWzB/Yeu5qVefzdfgGDlxy7JnaTq6f3
7D+dLj7s4urhPv11Z4UyL+7bsv3IpcwbGX9te7Gr75AVZzO1RaZNu4QZ289k
3Mi8cnDpiIjQZ785n3Uj4/QXI8Jin15z5FpW5pnvpsQFP7b8ZFbpVSimTbvk
2Vv/zMjKurzrzX7tu7++O8N4Fco49tWUMdO+PKZ3xipt2/ORnSZ8d03zx8vr
ngmNfuXHtLKcfqIKEUIIIYQQu43YR7y9vW22CsX16Cn2IINJEhL79J0xd26n
2C5+IaF+QaFBHSM1PahjYFiEyS1N3zm9a2jPySt3nLhWcBPNpY0TIkMHvvb5
7rNpuocVrUJ6ub5xfEj8vP0Z2iLTof+7BZUkbduU8OCJm9KyTy8b2i554UHt
HUCZ++ck+A7/9GJm6VVI8zDNU2X8Nj/Bb+xXacarkLFc/2lG1+BxGy+Jre3C
2qeCE17bm1mmK/GoQoQQQgghxG5TxVXIycmpTFUoRuxBCUnqFVQLJkkQe9Ar
r7/eKSbOLzjUNzjET0xQqFiCxPiHhJewpRlndy6fPrJbaEiXEbPXHtZMzpZ+
8vsPpgyOCwnp+fT8LafV3aFIFco688OSySMGJPXs3TM5OSa4ffe5+wuKzMhP
Lxc8rdhffEasupi5Z25Ci7bqi+M0CfHzCxi05ERGqVUoLmJCQeXJOPBOks+o
L8tQhW5k7JvXPWTsVxeyzq5+IiC/iFGFCCGEEEIIKT26KuTq6mqDVUh9UZzY
g7rFq1dQ1UyS8Myk5zuqe1CI2IN8g4J9AkN8goJ9g0L9Q8LEclT6Jl87vmFq
Tx/d6RsxmZf3rx4f7f/Yij+zsy4VVqHMC189GRQ56tM/rmSJD0tf/0xQYRXq
0HfhkYKzQlsnh6nPCmWdWDq43eBlp7KKvpwZVWhiBapQVuYf7/QJGbH6wPJH
Q1LF5qX+IlWIEEIIIYSQ0mOtKuTl5WVOFdLeHKTuQXHqHhQeo54x2y80XFN/
ND0oUPwXsROpzw35Bgab3NK0o7t+OXlZXX+uH10xIrDH/P0Zl37fuf90mrrR
XP19YR//oUtPZWelbR4X3OmZDeczs7Ovn1w6oEPvNw+opym4dvTzUR3bFVah
Nm27vvTdyfQbmZd/e//RsNDxGy9k3cg4+dlj4V2fXf37efFVMq+d3Lf3j8vZ
FqxCGcfXTXt21tpjBhfvZZ34aGjwkJH9w0aszF+oiCpECCGEEEJI6bHWBXJm
VqGo/BVUu0bEalYOUk8WFx3cMVLsPuoeFBCk7kGBYg8S/xns4x9kcksvb5vV
P8bfLyAgJLxT8jOLfrqYmXlm7YvJ4QF+vsGhobGpE1fsv6x+ZNqeJaO6hQf5
dxz67oFz2+aP6BbTNaFXSt+xb62Y2T+poAr1SZm1ctHYhE7BPn7hRWaQ27n0
/wbEBvr5tvML7Zw6c+NZS1Yh9QxyoUVmkNMm8+xnw31b+Y1Zez7/hBRViBBC
CCGEkNJT9VXI2dnZ/CoUGt25cAVVsQdF5k8WFxgWoS1B2h7kExDcwT+odXsf
q4/n/RWqECGEEEIIsdsUn0xb7Cy2U4Xie/Zq3cGnVXufVu3at2zbvkXbdi1a
t23eqk2zVq2btmjVuFkLbRo1bdawcbOozrFWH8/7K1QhQgghhBBit6nKKqRQ
KMTnL9MFcqRSw7ATQgghhBC7jbYKid1EbChOTk5VVoW8vb2pQlYPw04IIYQQ
Quw2Yh/x8vKqsiqkW2KVKmQLYdgJIYQQQojdRleFnJ2dxSoktpXKrkLiC7m6
unp6elKFrB6GnRBCCCGE2G20M8hpzwppp4+rYBUq3oa0VUjbhnRViHuFbCEM
OyGEEEIIsduIfcTT01NbhcSeUklVSNuGdGeF3NzcDM4K/bzrl5OnTlt9NOwq
J06e2vXLbqu/DUIIIYQQQqwS7QVyrq6uYkMRe4pcw7JVSHdiSDttgnaVVYMq
lJGZJR6Wb92+g1RZdv6yWxx2q++BhBBCCCGEWCXas0Jubm66KqTtQdoqVNYS
VHIV0i4tpJ05wcPDQ78KEUIIIYQQQkhVRuwj+osKKRQKo6eEylSF9NuQQRXS
3S7k7u5OFSKEEEIIIYRYK2If0U0fV8JM2uWuQsVvF9KdGKIKEUIIIYQQQqwV
sY8YXB1nkSpk6sSQ/jxy4ksTQgghhBBCiLVS6txx5ehBJbQh/cvktMutenh4
eGp4eXmJ//T29vbSU0OPNwAAAACYoN8ddIVC/Lq2a2jrhtg+tBNoa88HVUYP
KrkN6SbWding5ubmquFelAcAAAAAlJFBrRCLhtg4tNVDW4IqtQeVem5IqaHt
RE5OTs4a2vfmYporAAAAAOgx1R10zULXOLTzxWnnSajUHlRyG1Jo6AqRlnbt
IR1HAAAAACgjbZsw6BqOBfNmV/b5oOJVyOgsCtpOpGtGunIEAAAAABWh0KNr
HCXMF2fxKmSqDekKka4TmaIAAAAAADOY6hQyPdoyUgU9qOQ2pF+IAAAAAKCS
SPVUWQ8y1Yb0CxEAAAAAVDZdE6myHlRCGzJg7bEBAAAAUB2YahxV34OKt6ES
ChEAAAAAWJZQTJX1IKNtiHIEAAAAwOJK7h1V34PMaUMAAAAAUKms0oNoQwAA
AACsxYolSJ+1hwEAAACAvbB2+ymFtYcHAAAAQPVh7X4DAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAABgQ/4fJrxDUg0KZW5kc3RyZWFtDQplbmRvYmoNCjExNCAw
IG9iag0KPDwvVHlwZS9YT2JqZWN0L1N1YnR5cGUvSW1hZ2UvV2lkdGggMTEx
My9IZWlnaHQgNjE2L0NvbG9yU3BhY2UvRGV2aWNlR3JheS9NYXR0ZVsgMCAw
IDBdIC9CaXRzUGVyQ29tcG9uZW50IDgvSW50ZXJwb2xhdGUgZmFsc2UvRmls
dGVyL0ZsYXRlRGVjb2RlL0xlbmd0aCAzNDU5Pj4NCnN0cmVhbQ0KeJzt3WlP
WwcahuGGsNiYxTgGwhqCIaFgIIlQSiC0mWk7mSxk+v//zMwxZjEdY0z6SJbV
6/qO9H669RwfAz/80MUjgL50K8gdBn0qMCyEBYgTFiBOWIC47wrLCEAXD09L
R1IeA3RxE5e+u3KTlFGALjrj0m9YroMyBtDFVV5G+gvLo8uujI2NA9ypnZfH
/W2WoitFVVo/NjFRAuhqYqJdlyIt94eltVeKrFwkpVyevFABuNbuQrnc7kuR
lvs3S7srpXKrJlNT0wBdTU1dRKZcKspyz2Zp75WJcmVqemZ2tlqdu1ADuNbu
QrUwW/SlUrp3s1zulcpMda725Em9Pj+/cGkRoNAuwvx8vfCkNledqZR7b5b2
+6Dx8lS1Vl9YfLq0vLJ6bQ2gcNWElZXlpaXFhXptdqrcc7Nc7ZVqfXF5df3Z
xvPNRmNraxvglq2tRqOx+XxjY31tefFJdarHZrnZK/Wl9c3tlzu7e83m/sHB
4bVXwN/aVQsODvb3m8293R93tjfXl+rVHpvlZq8sP3+5d/j66O1Px+9OTgvv
L50Bf2vtErSqcHLy7vj47dGbw70XG8sdZemxV57vvTk++/Dr7x///enL18J5
4RtA4fy8VYUvXz5/+viv3/5xdvx6d3Plzs3SuVf2/gvQr2bjqiy3Pmdp/5WE
Yq+UKjO1xfWXbwZ9JzBEjnY2lmozN99nuazLdVguH4SOB30nMERO9hur88Vk
mRi/mCydYSm6MjYxOT23sLp9eDboO4Eh8vPrF+uLc9OTHZOlIyzFk9D0xZPQ
h0HfCQyRfx7tPHt6+1no5o3QxVf5a0+f/Xj066DvBIbIb293N5bqs5VS61lo
pEtYZp8sbey+/X3QdwJD5ONxc3O5Xr07LBcvm3/6OOg7gSHy6WS/sXL16e0d
YdlsHn8a9J3AEPl8erC1eldYxidab5tXGs13wgL07+vp4fbqwsVroV5h+Tzo
O4Eh8vV9z7BMTs/Nrzb2T74M+k5giJyfHW6vCQuQ9O3esCysbh2cfh30ncAQ
+Xb2anttsSYsQE4/Ydk+FBbgAf7z86sX68ICJPUXlvfng74TGCJ//PJaWICs
PsPybdB3AkNEWIA4YQHihAWIExYgTliAOGEB4oQFiBMWIE5YgDhhAeKEBYjr
FpZH1/8SXliA7yAsQJywAHHCAsTdGZaiK8ICfJdbYXk8MiIswF/WKyxjwgJ8
j46wjI0KC5DQOywlYQEe7iosFWEBUoQFiBMWIO6esFSma4trwgI8iLAAccIC
xBVheVmEZUZYgBhhAeKEBYjrKyyvzoQF6N8fH4QFCBMWIE5YgDhhAeKEBYgT
FiBOWIA4YQHihAWIExYgTliAOGEB4oQFiBMWIE5YgDhhAeKEBYgTFiBOWIA4
YQHihAWIExYgTliAOGEB4oQFiBMWIE5YgDhhAeKEBYgTFiBOWIA4YQHihAWI
ExYgTliAOGEB4oQFiBMWIE5YgDhhAeKEBYgTFiBOWIA4YQHihAWIExYgTliA
OGEB4oQFiBMWIE5YgDhhAeKEBYgTFiBOWIA4YQHihAWIExYgTliAOGEB4oQF
iBMWIE5YgDhhAeKEBYgTFiBOWIA4YQHihAWIExYgTliAOGEB4oQFiBMWIE5Y
gDhhAeKEBYgTFiBOWIA4YQHihAWIExYgTliAOGEB4oQFiBMWIE5YgDhhAeKE
BYgTFiBOWIA4YQHihAWIExYgTliAOGEB4oQFiBMWIE5YgDhhAeKEBYgTFiBO
WIA4YQHihAWIExYgTliAOGEB4oQFiBMWIE5YgDhhAeKEBYgTFiBOWIA4YQHi
hAWIExYgTliAOGEB4oQFiBMWIE5YgDhhAeKEBYgTFiBOWIA4YQHihAWIExYg
TliAOGEB4oQFiBMWIE5YgDhhAeKEBYgTFiBOWIA4YQHihAWIExYgTliAOGEB
4oQFiBMWIE5YgDhhAeKEBYgTFiBOWIA4YQHihAWIExYgTliAOGEB4oQFiBMW
IE5YgDhhAeKEBYgTFiBOWIA4YQHihAWIExYgTliAOGEB4oQFiBMWIE5YgDhh
AeKEBYgTFiBOWIA4YQHihAWIExYgTliAOGEB4oQFiBMWIE5YgDhhAeKEBYgT
FiBOWIA4YQHihAWIExYgTliAOGEB4oQFiBMWIE5YgDhhAeKEBYgTFiBOWIA4
YQHihAWIExYgTliAOGEB4oQFiBMWIE5YgDhhAeKEBYgTFiBOWIA4YQHihAWI
ExYgTliAOGEB4oQFiBMWIE5YgDhhAeKEBYgTFiBOWIA4YQHihAWIExYgTliA
OGEB4oQFiBMWIE5YgDhhAeKEBYgTFiBOWIA4YQHihAWIExYgTliAOGEB4oQF
iBMWIE5YgDhhAeKEBYgTFiBOWIA4YQHihAWIExYgTliAOGEB4oQFiBMWIE5Y
gDhhAeKEBYgTFiBOWIA4YQHihAWIExYgTliAOGEB4oQFiBMWIE5YgDhhAeKE
BYgTFiBOWIA4YQHihAWIExYgTliAOGEB4oQFiBMWIE5YgDhhAeKEBYgTFiBO
WIA4YQHihAWIExYgTliAOGEB4oQFiBMWIE5YgDhhAeKEBYgTFiBOWIA4YQHi
hAWIExYgTliAOGEB4oQFiBMWIE5YgDhhAeKEBYgTFiBOWIA4YQHihAWIExYg
TliAOGEB4oQFiBMWIE5YgDhhAeKEBYgTFiBOWIA4YQHihAWIExYgTliAOGEB
4oQFiBMWIE5YgDhhAeKEBYgTFiBOWIA4YQHihAWIExYgTliAOGEB4oQFiBMW
IE5YgDhhAeKEBYgTFiBOWIA4YQHihAWIExYgTliAOGEB4oQFiBMWIE5YgDhh
AeKEBYgTFiBOWIA4YQHihAWIExYgTliAOGEB4oQFiBMWIE5YgDhhAeKEBYgT
FiBOWIA4YQHihAWIExYgTliAOGEB4oQFiBMWIE5YgDhhAeKEBYgTFiBOWIA4
YQHihAWIExYgTliAOGEB4oQFiBMWIE5YgDhhAeKEBYgTFiBOWIA4YQHihAWI
ExYgTliAOGEB4oQFiBMWIE5YgDhhAeKEBYgTFiBOWIA4YQHihAWIExYgTliA
OGEB4oQFiBMWIE5YgDhhAeKEBYgTFiBOWIA4YQHihAWIExYgTliAOGEB4oQF
iBMWIE5YgDhhAeKEBYgTFiBOWIA4YQHihAWIExYgTliAOGEB4oQFiBMWIE5Y
gDhhAeKEBYgTFiBOWIA4YQHihAWIExYgTliAOGEB4oQFiBMWIE5YgDhhAeKE
BYgTFiBOWIA4YQHihAWIExYgTliAOGEB4oQFiBMWIE5YgDhhAeKEBYgTFiBO
WIA4YQHihAWIExYgTliAOGEB4oQFiBMWIE5YgDhhAeKEBYgTFiBOWIC4vsJy
+F5YgP798YuwAGHCAsQJCxAnLEBcEZYXwgJE3ROWyem5hVVhAR7kMizTwgLE
CAsQJyxAXO+wTAgL8HBXYZkUFiClV1hGhQX4Hh1hGX0sLEDCnWFplUVYgO/x
p7A8EhbgLxMWIO5WWC66IizAXyQsQJywAHHdwlIQFuD7CQsQJyxAnLAAccIC
xAkLECcsQJywAHHCAsQJCxDXZ1jOB30nMESEBYjrLyynwgL07z8/CwsQ1k9Y
tg5Pvw76TmCIfDt7JSxA1v1hmV/dOhAW4AG+nR1urwkLkHRPWMpT1fnVxv7J
l0HfCQyR8/eH26sLc8IC5PQMy9h4EZb6SqP57vOg7wSGyNfTg63V+epUuXdY
Pg36TmCIfOkdllKlWl/ebB4LC9C/z6f7jZV6tVKauDssz/d++jjoO4Eh8uld
846wPBoZHS3CMvtkaWP37e+DvhMYIh+Pm5vL9dlKaXxsdKRbWGZqT5/tHP06
6DuBIfLb292NpTvCUjwLTUxO1xbXX77+MOg7gSHyz6OdjaUnM5XWZ7ft/9n8
57C0/yDLoO8EhsjVLzdP3A7L9VfkWu+bl57vHQ/6TmCIvNtvXLxtbj0J3VTl
JiylSutZ6MXrQd8JDJGLJ6HLj1huhaWVlpGLF84X74UGfScwRJqbK63Bcvkk
9MMPt8LSKsvE5cPQm+OzD7/+/vHT5y9fC+fn3wAunZ8XWfjy+dPHf/32j7Pj
17ubK/WbrtwOy81maX1Jbqd5+Obo7U/HJ6enp+8vnAEU2kU4PT05Pn579OZw
78XGnXvlcrM8vtos643tnR9395r7B4eXXgEULpNwsN9s7v64s91YX6pXb94I
dQvL9WZZXF5b33i+2Wg0tra2Af5kq6jD5vONZ2srTzu68n9Z6fg2S7FZavWF
xaXllZXVC2sAHVpdWFlZXl56ujhfu+zKSPewdP4y4kx1rlYvzM8vFBYBOiws
zM+3CvGkVqvOTF11pWtWOjdLZWp6tlqYK9QAbmmVoVWI2ZnpqUq55165tVnK
lcrU1DTAnaamKpVKudR7r3RulvGJUqlcnpysAHQ1OVkul0pFVsbu2Sudm2V8
fKJQAuiqVYgiFJdd6ZmV680yOtZqC0APY2Ojo33slevNUqSlZQygq3YjHj8e
uX+vXG+WIi0towBdtRsx8uffZ74vLW2PAbpoF6LvrLTD0jYCcIerTvQZls60
APTSd1aEBejXA8IiLsD9HhgVYQHuJyxA3N39+B/OpQfjDQplbmRzdHJlYW0N
CmVuZG9iag0KMTE1IDAgb2JqDQo8PC9UeXBlL1BhZ2UvUGFyZW50IDIgMCBS
L1Jlc291cmNlczw8L0V4dEdTdGF0ZTw8L0dTNSA1IDAgUi9HUzEwIDEwIDAg
Uj4+L1hPYmplY3Q8PC9JbWFnZTE5IDE5IDAgUi9JbWFnZTExNyAxMTcgMCBS
Pj4vRm9udDw8L0YxIDggMCBSL0YyIDE1IDAgUj4+L1Byb2NTZXRbL1BERi9U
ZXh0L0ltYWdlQi9JbWFnZUMvSW1hZ2VJXSA+Pi9NZWRpYUJveFsgMCAwIDk2
MCA1NDBdIC9Db250ZW50cyAxMTYgMCBSL0dyb3VwPDwvVHlwZS9Hcm91cC9T
L1RyYW5zcGFyZW5jeS9DUy9EZXZpY2VSR0I+Pi9UYWJzL1MvU3RydWN0UGFy
ZW50cyAzMD4+DQplbmRvYmoNCjExNiAwIG9iag0KPDwvRmlsdGVyL0ZsYXRl
RGVjb2RlL0xlbmd0aCA0NDQ+Pg0Kc3RyZWFtDQp4nKVTTUvkQBC9B/If6tgt
pFPVnf4IiODMuOKyAy4TURAPQTJRcDJuJof1J/kv7e6oM+MuevBSKerz1Xvp
/Lgf7pf17QCT+RT+pAkCCkQkKdFCaRB0gdA3aXJ5AF2a5KcLDe0mTQja92I0
hErvVS8P0uR3msCJn5p/3OGUFVYDWSE1WCO8q0NguyYG/fTXxF7D7crDOFvV
bUMlzNbwtgbyxWPdweFhPp+ezQDzX3XXAmu67GLBj45gMhsPjIipUBg2/Hvh
pPLjfxCUwvqV1TKcGpFAIUvhSSEpSg+jWoX720gJYeQE4TRNrtkzz5RkwAvH
plwRW3Mq2WMwTz5jWM+lYfc8s6wNwbtgBp5J53sycsRkiGAwWy+kULMrTgrH
5odgoteFgr/8BqqfaXJSfcL8F+qicM7Ea/uorlYqMB4KzZtAu8p+oJy+RbkE
JYXaY1xL4TQUTgulRsIFFnb89UYvEj6pe54VrFlxzZqBW1Y/7JPxHQySjCjc
1yDmXkEzYlh7CB6RZk/AjWOL4A7cjbFms/mPUpCfv9Mot8xJf77DoIFyZfxY
JXYfyms4QB1T246dd0J296G8AMgo0swNCmVuZHN0cmVhbQ0KZW5kb2JqDQox
MTcgMCBvYmoNCjw8L1R5cGUvWE9iamVjdC9TdWJ0eXBlL0ltYWdlL1dpZHRo
IDUyMi9IZWlnaHQgNTAyL0NvbG9yU3BhY2UvRGV2aWNlUkdCL0JpdHNQZXJD
b21wb25lbnQgOC9JbnRlcnBvbGF0ZSBmYWxzZS9TTWFzayAxMTggMCBSL0Zp
bHRlci9GbGF0ZURlY29kZS9MZW5ndGggMzQ3Mjg+Pg0Kc3RyZWFtDQp4nOx9
eVxTZ9r2O9/7fTPvzNd+M535R0BqW5VqC8q+uACCiIIrat3q0tpal2nVurTY
Wqd2Uet0ta3VVm1rF7W1dXLCvu+QsO+QFbIHkgCCC5D43ScHQkJyQoAgi/f1
u378nvPk2c9z7uvZzuG//guBQCAQCAQCgUAgEAgEAoFAIBAIBAKBQCAQiHGJ
PyAQCARixDDaNt5WjHY7IRAIxIOO0daBPox2SyAQCATCMlAdEAgEAmGOsSkN
/wuBQCAQ9wVjTSBQERAIBGKsYdQFYgiK8N8IBAKBGDaGoBSjKw2j3WAIBAKB
6MGoCEQ/aTAuz/9GIBAIxKjCXCPuj0BYlIZ+Zfs/NuCPCAQCgbAZtthVgLlM
3B+BMJcGYzkwVIFy/AmBQCAQ9wX9zK+xUtwHgbAoDf204H+MAJd/7sX/IBAI
BMKu+LMRjM1vP70YaYGgkwaAoVRQwr/04v/qYXBYx0MIBAKBoIF1+2kwuZTD
eEBOacSICoSVWYNBFKhyPvzww1R1/p8l/BWBQCAQw4ZFAwsA2wtG2Fg4wESP
nEBYmTVAvpQuUJb/b3o88sgj8PfvejzSi3+Y4e8IBAKBsBnmVvQRI0AAg/kF
UAoCYjFyAmF91gD5hq9ch0Qikcgxy5EQiD8YwfjwKrUH/ec//xlmDZC1FoFA
IBBjEmCiwVBT29Zguo2PuRpbeHtNHAxrSjBzgay7EQgEAjEmASYaDDUIhB2n
D/0mDsbqQB1Sguz++te/QtadXV1IJBKJHIMEEw2GmlIHMN106jAogbBlWelv
f/sbZH33bicSiUQixyDBRIOhtuPiksWJg0EdqFOsDz/8MKUOd+ghlct5AgGQ
C+TzDeTweH3kArn1XK5YIrWSFAKBQDyAUDY113J47JKKXHYxEBxwCZ42RgcT
/cgjj4C5pl6CsPICtY0CQbesRK0sUZsODz30EGQKWd+6fdsixVLpG+++d+jY
sYNvvXXg6NEDbx599Y039h85si/6yN7Xo/e+9torhw+/fOjwPw8e+ueBA3te
PbD38GuNYjFdakgkEvlAUd3SUlJRnZVfaJHwEwQYMBFKHQxHW0dOHYzPskJ2
1Nyho+OWRdbUcZZv2rRs48al6zdErlsX8cwzS9asXbx6TXhU1KKVq8JWrFy4
fEXo0mUhkUsXREQGL44ICl9cU1tHlxoSiUQ+OFQom3NZxXTSQBECQDDr6VAr
S7a8+GAvdaDegPv73/8OWbe3d1hkVU3tsg0gDetJaVhLScPq8FW90rBseY80
LAFpWALSEBgWXlVdQ5eaFXL5QuAQIiKRSOQYpEqtHlAaDAIBga0kBSYaDLUt
x5bsog5/+tOfjNWh7Wa7RZZX15DS8AwlDWsWR5HSAAxbvqJHGiKWBi+JCFq8
JHDR4vlh4fMWhpVXVtOlRkcOT0i1EjgGGxc5uhSKJMXlVTYGblZr4C63tt0E
d35RmUSuAEejRFpaWWMllkqtySssbWltG1oJ2aUVMoVy1BtqsDS0D3KcEp4L
yqyxisvYJeXmosAqKYefKLf1h8hYHax/dsm+6kDtO8CTZ5HllVV6aaBWk1Yv
Al1YsfLr77/fuP2FkMhl5GpSnzQsAmmYG7KwrKKSLjWLrOcJjFsMLgcVHTmi
FDSKrAcQNoqLyqtsTK1JpYJb3NLaCu78olKJTA6OZrWactARwjeIJUOugkgq
U2tahtkOpZXVXEED5VZrNPBcGy5HiIb2QY4FwhgGaHt4uHfGKsAXNhaWVhgb
OrgET2PVsHK7qX0HMNd/+ctfRlodqOOs1KtwlDrA02ORpRWVS/qkoWejYfWz
m89/990zW7aS0hAO0hBOSkMoKQ1zFoSUlpfTpWYgPK2Uo47L76en4DNgdOT9
oVzZVFBcZj0Mv0EE6mBjgoqmZrjF1N0H6yeSyEa9jjaypKKawxeCAyYyhWWV
tSPfS8dX+4wdgo210m7wEwQYbJowOKGsEzhsjFJVyzHXAoNA9LukWFVbT5ea
QR0Mh1rvpzrAA2uRJeUVFvegV6zf8MnZr6I2biSlYSElDaFzgkMCghaUlJXT
pUaRXChglwhFkjqOmTRw+NbjIu3Fmnoe2J9cdgkMbOCRAR9BgwjmueAD/mAJ
ZXIlSENWQSFcFpVVQgC5ogmMZF4hGau8uhbuI3hCJ4dJMTwL4Ak/1XEFhix4
wsaCorIcdjEEUCibwAf+wl2mIkKyMBijUqDSh1/BE8bk8DeHVQx5KZtU/WL1
JS5ozC8qM/asrueWVdUaVZBbWlVjnNFwCIWp5wkhu+KK6qo6jsEfSgiZ5hWW
5LKLK2rqm1Vqyh8yBd2EdoKKwF+xVE7X7JBmDYdHVRkaSqZQGlIwFNu8JZF0
FImlOQVFYF7MfwJP+AkCDCpBKhb8NThsiVVQ3H8pyaAIFqUBCFHoUrv/6mC8
sgRd1CKLy8rp9qCXrlnz3ocfLluzdl7owrkLSGnwD1rgNz+oqKSMLjUDhY1i
aOd+jVPL4Q0YEWkXgtkB49PUrAI3mCMwcWDWsguKJDIF+CibmsETHA0iSUFR
392E8I1iKRmgWQX+0MPBDYYL7h1YQiopEAiB3g0hwWBK5WSCYLfhWQAH6AsE
hrzATVo/fWo8vToYfq2orgNNAFKi0y9WXxXE0oqaOmMfyAuqQFVKpd+qEIrE
xhkNh6AOIHyllTXl1SaZQskra0lRgHzh17KqGsofMmWXVCj08gbGH7TAYrNT
vxaWVsKsChKp4wnyC0v7tY/FlkRaIWVe4O+AnoNNyvZEclj97VuPQDQ0CixJ
AxCi0KUGJvof//jHaKkD9FOLLCwpIaXB0h70klWr3zpxIjh8sT9MGUAaAoNB
GnznBbKLS+hSMya/UWTcMjDSsyUW0i6UyOUwUq3j8RVNTQZPmCmAvZUqFAYf
sK6kNbOUQll1LZg1cFBDfYM/mC8wkmSAqlqw7ZSnTKmEWyxTKMDEgUPZ3Aye
EAvSp1IoLKsEB/Ur/KVi1fMFReVVBn8qlnWySyu4AiE4GsSS3MKSfhkNhyBV
MOAHUrWjCG0FBTO0IbSq4VI/CRJS/mKZHKZgdM0OIQWNIsMlTEOoS0OxLbbk
qHehMU4wL2DG+b0N2+9yaIkMKik6dQBpAIGgUwe61O6zOhhOtEKmkDUMFy0S
TD25mrRsed8eNLnRsHjxylXRx48HhS329A8Agi5Q0uAzZx67sIguNWPCyNMw
faip49oSBWlHiiWyssoaGJTC0BeGuEr9fEG/QEQu6UhlcvCBWQDYKEOURrGk
tLIaLDAQgoEQgCeHL4RLQ5h6nqBQfwmDaujtlEUFZrOKRBIptVVHZQeDZGGj
iEqBimL8K+kPSZVVmvtbIeRepI9SXg0WtZ7yNGRkoOEwiRXC+LBfFEgTdArq
UsflU54NIjFYe0MYagVMIpVTmULr9TS1VEaqG02zg3BAyxgSgcbk8ITGxbbY
kqPef8Y+KQsDfw2OQUUXNojoYlEJChtEVqLD5HrQK0tFZXSpUepgx08tDUod
oKNaJKuoWC8NS42kIRyk4fCxfwUtDPf09/fw8/fwhb8BoAtA74C5LHYhXWoG
8oQN0Lzw1+AYMApyJAiGF8xRdR3H4CNXKMur66DrghsGOaAOBn+whGB+qUsY
QlOxwIbDcNcQHfQFxIUKUGWULEXKTsLkANzUGhSVApWd8a/Aer06mPtbIbW4
BOGhqCKxlPI0ZDQcwiymlsMDB1hssM8NIglZMAlZMJlcQYUBo60vp7JfplQw
umaH1uMJGw0/kXMHfURDChZbEmkLwbBQhncIFgaGB4KGRrpf4ScIYCU6jCUG
uysNUehSGxV1gOwodYBxo0UWsAuN34Om9qD/efhw4MJFnpQuUPTx9/QL8Paf
C3/zWIV0qVHkCEhFgL+Gy1wWuaxqPRbSjgQ71gg2VO8G41NRUw/tL2gUUT61
XD6rpBwc0P8pYwtuagDfAJZOoWyUkCvhYLLAXac/kAx/SX9yhbyE3NFWKMHi
QRgqTUPijXr7CYNrGblDQVpFKgXqlQTjX0l/Lr/Qkj9FUK6yqlrzqoE2wTif
Kj9FQ0bDIQzga+q5lBsmTWC6oUHADSWn5hRwWVxRDY1pnik0i345yEKzgwMm
EfptaxkkAimDHFPPgiEFiy2JtJFgXgym5n6S2o+jyKY/0coyOtFqpZdS7zuM
ljpAl7XIPBbb+D1o/fGkhXOCQ7385oAouPv4efj6uevVARwgDeDIzWfRpQaE
eTdoAcyd+3laiYK0O2FQSp6BYRWDMQdbCiYfbgEYOsqHXVIBAaiQYMTAs6C4
DNww1gWTBf0ZLDBYNjBr4FnH4cOwGgw1FRdG2IZcwLxDLtnkqkgxpAM+jSLy
ZKBE/ytp/QQNVAqQY79fgbXgX2rBvydxDp80pGZV4/LJ4WJtPc/gY8hoOAR1
qK7jGi6h0YDggBlKcXk1VXdoBLFEbp5pg778FpsdPKFe0JjUx9kgFwhsnoJ5
SyLHPqFXZ/W+Dcey9DYc2+htuEL9I0DH0VIH6l1p6JEWmVvAMn4PWv9GQ2hA
cIjf/CAP3wBSGkAX9Brh6UtKg7u3b05ePl1qFMUSqfUASCQSOd4p1O9fD7jD
Re1HQ2ArSY2uOkDJLDIzO7fnPehQgzQsoI4n+cydD6JASoMPJQ1+IA2zPX0y
snLoUkMikcgHh1y+cECBAGmAYNbTGV11aBRLLDKPxXb39Z3t7TvL28fNy9vV
w8vV3fNpd4+nZrnPdJs9w9XNZebTFKfPeGr6kzOBufksutSQSCTygSJP2GBx
WSmr9yMbEGDAREZXHaB8dMzNK4hLSIpLSKQYGw9M6GEcxXiKMXHx2bn5VpJC
IpHIB5B1HF5JRVVeYSnMFIDggEvwtDH66KqDsEGERCKRyDFIVAckEolEmhPV
AYlEIpHmRHVAIpFIpDlRHZBIJBJpTlQHJBKJRJpzdNVh1P+jExKJRCItEtUB
iUQikeZEdUAikUikOVEdkEgkEmlOVAckEolEmhPVAYlEIpHmtK86/MEUqA5I
JBI5TjkodRhQIFAdkEgkcmIQ1QGJRCKR5hxQHQa1uITqgEQikRODI6cOhugj
pA6qsq/WBe+5ImjRNOe8HTbvUELzqDWjRnBhs8eGi3x1Swvv513zn/26XH1/
sr7P2Y1ULRp+3O628ULdSNWiiXjVf8npoubRr6kNbM55b+nC1xKaRr8kQ23q
RScLxkdTIweiFXUYwsb0SKmDpuG7bW5TXZ7s5dPLPytXKSoTfsusV7eOsDpo
Sj+LerIv6ydnbrss0PQrnkEdWpvrM64nVStIf1XxjauZopbhl0HNu7zFa9kH
hZo+T1XBe4u9t/0gaOrL7v5T3zJPzpw+8ymXp2d7zF/67JFvc4ZS3wmiDoqK
345ti/B1d33S1TsgYsvbTL6KNrBJ31AL0n9kVvUE1kjYMYxcoR26jV3ur9v2
nxuNip1xfKH3q7H0/Q3VYUJx/KiDx6ozFUqVupmkRmVsn0deHdye/1HYk7Va
pTZ7cjWCi73q0OepTD2ycP0X1Ro7lEHTeGWnb9j7+YaHTpn1zgLf3VcbR9eG
GFkPTbOw5PfoiNnBx7ObBp3OhFAHddknUR5h0f8pkzQrRNyiNCK1hv7Wm/QN
Td3FLXMPJShH81ZaJKrDg87xpA5fVBkPxlQVX6x033lV1k8dZOzL0WtD/T19
54Zufud61fAlw/wZ0VMtSPj3jkX+Xu5+C1YdPPv2xp6VJdLQrTtfI8/694Zg
1xluHvOC54W+dMGKobCNoht7fULfTm+iLpuS31zgu5chNmRH2tWWhqxzL0cF
e/v4B0Ts+CCBp9I0XH7ei5xk6Zvlxj4/l/lvJinJFJqz3w2Zc5Apt2/LqHPe
D3fb+atU/xM/7Ys9UcFeXt5eQat2fZbK67H8Fv2N1EFVe3XvogUvX6tqBs8X
/PZ8cfH1dcF+3rMDInedz8r9Ce5sgLu774Kt/06kRteKgnOvrA8Lmuft5TM3
6tDlUv2CDPSH8A2fJl6LXjPfdfa6L6qUBnVQCxLfXLpg8/lieYui8AdIbY6n
t69P0IoXvyoY7vyrKeX1eQH7Y81WhJRV19/ZujDA19M/dPXrPxRCd1Ua940d
H507sNjHdbp7wLyg4CVvpyr7OjNY2rmbP/z5neciAnw8Z89Zvut8gaT3cUj5
mOx7Hn6hqw9fOncwZBPZ9+xdowHUway/6XtmrzqQ99Rn1+cXX38m0M97ll/4
1pNxI6b+yJHiSKsDlQ4k+Mc//nHk1aFFFB8dOO/F84UylVqS9cFqz9WfFw+3
T1pUhxbe1Z3e83ZeKpWryef/YPBMNxN1gEzFV55zX2efuQNQFn9gXvDrSUrS
LU84OG/+wXiFxig7Fffai3MWvvJLlUKj5sW/Gea3/bt6VdVX62dt/Z4H8yx5
7P6gyCXh4ceyVFCjsjOrPXf+0l/vhtUyGkllzBtL52//iQP3SFV3eatf2P5f
q+WaVkVdTHSE//rzlfT+veqg4hPRkYEvXComJYz0nDkzdP/1WgVoSlz0gqfd
5u36vkTWopYWnIryWPpxKdkZ1PychJw6uUYD9X850GsvQ9ai7w8LvX2W7Pg0
tU4sUyg0PXOHJlHGidXBaz/OlUCDiK5t94r6gC2HW6YQlLJq5MO+R9KEN8M8
IvafS66R9E1sm3JOLPVZ/3FGg0YtLz27xX/hO9mkaTXpG+qc98L9DHMHE3Xw
cfHb9nm+WNWiEST/a5H7hrPkMKNFeP0Vv/m7viX7nrzs6v4gqu/Zv0bW1MFS
f9P0U4eZMxfuv06WQ1b+085Any3fc+iX2pBjkebqAGZ8TKqD2wx3PxinkJy7
+lSe2pI6yH972XfBOznU4oaac3GD+9ozlcO0z/32HZ6OJO2S7Jdd3iHv5vbM
oNVFHyx1H1l10M8XAg7Gwchcwtjvu+CtlF4Tqs+uhXtpi1vU52Xq3vJEejz3
k7i58MMIv72/S1sVCdHzn/n8yvHFi+HJ1Qi+3eq96RJPPdwi6VtmxtMzXd1m
PjVz2gyfyOhfyvWl4lzc7Lb2bFWPLrcIfnh+1vJPitW0/lCLWZs+//VE1PxN
X+TLen4FT9dFJ3JU+ktlzCve8w4nUTNBmKQs9jkY128ppvEnSORivUbfH0Jn
r/u6vtcWkSYr4sS1M5uDl72b2kCZ7qac4+EBK45cTqtTDLsdeqkWZnz7Noz0
PUM3v34hi5wWNae/ERSwL0ZJBZBe3+Me9l62ynZ18IVq9kwBmtOOBAUfSQVx
l/26x3vhe3m9fa/4NNX37F8j8v7OcPXqeej09Jj9tAepDpb7m9pUHVwXn8qj
bl+LOv9UBAhNg8YuBUPeJ44fdfBYdjqnnsfnAvkNkmZLcwc159wGtxke/r2d
2W+258oPWOrhNZGluYOae36jx/pvuL07icJLWzxGWB1am7LfDfHf+5tY/Mse
/9B3c/UKaMhOXXA68klX796K+3t6em/6pk7VnHk0NOSNNFnym6HLPi6RpR4N
WvlJkeg/e/zWfFYx/IKZzB3kvPyLe0J8X/gRCsM6Hem26zfDyoYyMTog6GhK
M50/WYunvPzn+3j7br9s0A6yas+cq6Yum2L3+y15L5+6leq8kxHUCLapNvHT
Q89HrVi5PGr1slDvmdTylL4/HOzbhyLNrLtvoLeX7+rPigy5qwQ53x3fsTjA
f9GLJ3+rsOMZoaa69K93LfSKOF2gVFzf4fa0m0+vdfX1nhV8NLHJdnXwDzvR
u4YPtzIk6PWUZvq+Z/ca6e/v5q/LqIeOJIeIDvEiW56mv5mqA9w+w93k6gcG
lbi4NK5oUIeHHnpojKuDDStLsl93+0R8WGzXCazFlSXZ1V3efU+uuvLTKDN1
kNhZHTQq9smIgN2Xv3/Jd+kpNmUnDdlp6i486/bsJU7/sZmSeXDestOXjy5a
fqpQrVEkHAxa/+mPbwZFnMpX2b9llAnRvu4v/6Zs4cDAcs2XFb2WgX/5+Vkr
PytR0/qTtYg8lcNLOxbh32vAjbdUaNRBXXtuo2fYkdg6/YSF//02NyN1OGSi
Dn7zX0vgsT6L8ov8V5rUZGitqGUcW+FuGAbbhy31FzZB4auVqdHkgN9s80vS
Xx18D8ZbVIe+HV6DOujnrYtOsnr7XtWZ1aYnIuxWIysrS3T9zXTusPDdrN65
Q+6JxW4v4NxhnHFiqUNLQ8zhwKAd53KFMLRWK4XFeeXD7pAWzyy1cH/a4RX0
yo8VSphN18YcXeRqtu+gjNvvF7iX0Qieavs8FJriT6J8FoT4RJ0pNR5gU/sO
9T9vnxu+70pJI/ykVtQXsiql5L5t47VdXuGRYZEn9XN82Y1988KWhAcdTbfH
CRkT66FsYF/aHewadaYYCsO5tmNu2L5fqmTk/kJsdITf2q8qyH0Hy/59u9IK
1ierfCkDboM6qIpORXps/k4AhlEtLTm71XcmrTpQu9LqikvP+wYfuMFv0Sir
c/PqpWTizdXfv+iz/OOiYdpSaVEckVVcL5KrmkWViSfX+wW9la5oacp8P9J/
40fJnCaoUZOoMqdIf8zVpG9oKr5c67bmTImyFapngzq08K7u8gnee6UaZgcq
TsLbS6i+Z/caWd93sNzfTPcdZgTvuVIp07RISy+/OM932w9c3HcYX5xY6gD+
8qKfjz27eK67u8csv9BVh68NezJL876Dmhf3wfYwP0/9maVLX+4L2tRPHVqU
Bd/sXjzX12v+li/L7DODUFV/tcbVbe25mt52MD2zlHPhwPqFPp4ebp4BIRve
ZQpIdVBzLm1wfSrk3Z5l6sZfd7vP8N/HVNijPEb7Dq6uMz3nR7548veeQ2JQ
mG/2rw3x9vL2nL9ix0eJHIOcWfA3PtGqLr/4nE/wq7/zNQOrA4xgiXc2hC9c
tDxqxaZDZy8eCd9sXR3Iu/brK8G+z1+uFKe8ty7Uy9Pb239uYNTeL7LEw1yr
V4uT39+02N/TbfoMV7e5kZuPXSmkNlCUNTdO7IiY5+3m7ukRuGLHN9TBWpO+
oeLFHlsf4u3jHxwdpxhYHci9+PjTL4T5e3vNCV2577OjG/RzB6mdazTwmSUL
/a3fytK/Pj24NtDPy803fNuphHpcVhpvvP/qABnhlzSQSPtQXXt2nedzP4lH
vyQm1KvD+q9rUBHGM1EdkMjxRRWPlZLPkZCGt6mGeTTcc+2Zcvttb9mHpguD
yPFJVAckcnxRVfHzvqgQby/P2R7ePos2v3G1fJQ+pWKFqA4TgagOSCQSiTQn
qgMSiUQizYnqgEQikUhzojogkUgk0pyoDkgkEok0J6oDEolEIs2J6oBEIpFI
c44RdbiHQCAQCDsB1QGBQCAQ5ngw1YExiWELR67ZEQgEYowD1QHVAYFAIMyB
6mBC5ywuT3fvjoT96DDU4dZN6Ql2ln98rDPBnBqftCCvLr/bLJDu1jV24rRE
9rVbuiFmgxhr6BRtZTIc4kqStKNdkiFjAlQBYTdMYHXo+k9hrHN6XbXe+nbf
rA9nxr4kpcz0SKpDl/JwMuHAiPHKYu0uKd7Jyo1gC/jmCqBTH08hJhGp72nG
jDpolYcTCYeYQuaAlkHbkc4r35KZ4hrLnKxXwMCsgn01gvQOIxXslrzAtNDC
jvGlqb3p6+42bLQUpodM9o3e9LS3+CsthyTmVKk7h1VtnURWtiCG6cUS1pmJ
uLal9ffTxWuCE10eYz42IylsS+VPZZ20N0yrPJRITE6rKbN+S2+1XdmT+pgD
c9lXHTQtrWsu4B98Jm329JjHXJIWbq36tbrLPMnBlU2P28U1IY8yJj1acLVl
Ilahu/VCQaJzbMZRxW3z4Rhi8Ji46qBrPZXGnF4kvaW/6pAWTWdmfNJGdb0R
VIcOWZELg3iqUNw8QECdUi2+LGlRDyWTkYGN6qBtPZsT7wh2PiZhXkb20sw0
v4RYZ2guIvGA0uih1LWnCvkX+PwLvNJFMByNzT7CIy8vNjSJDc9/p/yt7KyI
rP5ckpY4Ra8jKb0lodTBMTY5LDt7mQlzdgrahmMKmpUVQUzi6XxBnVmt20q4
G9yZDg7EVO/M9c+xtyxLnurAcHgi4yS7y3JauraPMpjOuQIZvYHrkineWRrn
OIkxaRKtaW3JqgyawnBwjg9clb9hWYqLE8PRJedstUnYQZcN0Nl2ZmmMwySr
6jDeq9DdejY3zikm/e2mAVQGYQMmrjp0iZ+LYS6qp0yHrrI23TmuOL7Hjoyc
OuiEvGxnBjOKf2v8Tc1tUgedVJj3BINwzecZjfJ0be3NvwmktRYjaqU7YxiO
CWXptrZIZ2pZshMRt07QNxWh1ME5k8Ox6zPf3dGwOZ6YnFyactfSr2LxS4GZ
B39u0fSUXMu5kDfTkfH4WoG4ry53rhZlrC2uPi9p5nXe/ikfBiSytrs3s8Tc
fxXlhhaLNUYJtpbxt3kzHZxTXnw518WRxrR2tpwIJhweTT+adVdfV50srsR/
MuOJtQKRUWjbymYMneBinsuj6UsWxjj0N60ToApGge7I/plEOCawr99GfRgm
LFr7JpU6PiHps8+/AIIDLsefOnRpauYz4/bIKAPT9Rs7xjmLw+vpL7TqMHm4
6qCtqc8AdVgnvDP+uqZN6qBNKI5zIJKOqmxWv0GqQ1tTxRyCmJ7L5xm14Iio
g+72NVa8I5F0QEE7zuzutxxyR3lwNuEwtZB525CIfoVQ33kcmHFPxhLOcXHT
iN7ulF5baUigu/38yhjHaenRcbfa44qm0yzLdOZUeDoRM3dKW/u0987Pz8Y6
OGd8XGtSmIHLZgStTLTtKWLGNsG5bcz+A+8JUAVTqKRFswnCtVDSRBsEYQss
WntQhFOn/20gXI4fddB1ydrb+e3tlby8x4i0Y4qb4ObflL2eQriwhHXt7YLb
nZ0GdWAmrqsWsdrvdmi7m9ubr1TlembW1VhQB620iXcoL90jLsY5Js4jPe8A
V2k6vOlMrc5dlJbsFst07K84zI0Nd42eAV1ZTdrkvqX13IsWRjjdN9hMp6SK
nM722NrCZSnxU5nMJ+JTlhXVJVh4Fgcsm80YhDokj5Q6dKmOpTIdYrO/bDMJ
PRLqcFdVNYdgPJErENueZlfLiUBi0pSCa31DEa3m1s0qjSpLIfu5MmsaucIW
/0yNOF7ZxNK08m51Gu+JdHLljBJSie4QhTSL9rrK0+mTHWKevWLSZ6QXc50d
mFEXrE5ILZTNkMDdmD2JTo9nnam5c2WTuWmdAFXoF7j9q2ymA5F2QjP+ZvBj
CRatPUwZjNXhzBdfjht10N4WrLGy0clgOGfU1+god8LWhnbo+Z13W9OlYoZC
I+3W8pRKs7mDtk5Y4E4wnOPTVrOKdhfmRybFOjKIWQVCbl/X666ScD/jcD7j
1B/LT3RiEHPYNfpLIJfRarIurmmV/cDnflRTFpVIWFGHSUTqyuzEKYnZL1dz
zvM4x9npLgRjcnJZqskWrC1lsxm2rSyJ+LmPMQj3QpHIxiwGoQ7dhdXpzoyY
iPrWfhvNI6AO3cmlCY5E/EvSwSxQt0t3uTCcfCrzzTbCdV3Nb6Uxn8gu3pFC
PJ5ZW2p1L+TWDfYUy4v23TE7Yx2ckt9imQ4+ssrdHQn315qs7b/Tl601vdxv
MjPkhOa29s7ldbSmdQJUwYCmxoJpDMKjvOmOtVAI67Bo7Y2lgeK4UYd72o48
qZSQCA+kEc7ppT9IpIRU+ntNnguRsLVeAu6Ypptt+rnDlBy+UHev86ZwY0LP
tPrxtIpU/XjHWB262uqXxBAuOfWlhh6r7bjKBgmIXSc0HwjpOJxMm1aWdB3n
s5nW1IHBcEosvN533rUzuTTJiRGzvqEvwiDLNhBs25XWdSrfgOE9g3g6s+RL
eVvLgLbVZnW401IbxmQ8llFbZhbS/uqgbY5OIhxiWdcHc+Cp+Xf2U46Ex2Hl
rf6/dKaWpUwm4ndL7zYKcqcymEGVzW306XT8TmNatbcuRDEnOWee4ZquwFTV
hU5mTNkmspImbdluqY4HMSfPqci+SS6mfbuGzrROgCr0QXenYV0Mwym5koWz
h6FjwqkDBW3zkSTCvZwaqOgk/BxnZv6PfcMIcsFnnfC29l53SmmCg9EqUATn
ZpeJOmhzK5KciJS3TBdSOtVVAQTjUQtHO+yoDkRoXavx6Y078pKZBDG7zDD6
GmzZBoLNJ1o7bynez0vUNxHxeFL2nlpx2V36zGxUB23rJ5kxDsz0E2oLY1ba
E63MzDM3hyIY2g7eMiY5kay3ObZOrTjgRzg8kX3WTKLU8hJvgrRFeVDHLsUB
0B0i5TUl7ayE1rR2t38eAaY152uRqWnlcSOcGY+uEypoUqQvm7byo8zHnJL2
JujvkPb2xdWWTesEqIJpci0nUsm5+SXcmx46JqY6gDFZxTSYaG1qaYJzSnVR
XzdhTCJS3lFr72k176cSxtbmMZa41VgddG0fZzAnEUmrSsoOlfXxYFH2LHiU
UsxHJvZTByLhgNLU7KsqfQnGtCJZz/maQZdtINj+voO+kA1NwnfYGbP0Rtsx
Lv3VxjazETWVrC3qoK3lZsN4NbBK1WHx554TrSlLc3PXGjOv/MaQHn9oTDCG
U1jimzZG6L71y/ZEJ8e4VWfbLMw2utsT6ov28HsOyHH4xbvq5Xz6lZnBm1YO
aVqfoTGt9GXr4vJWTSNct4vlVE5WTOsEqIIJ7vyQx9Q/5qgOQ8YEUwet5ha5
JV3fWPgUkbhXrN+Sbm96P4M5JZdbTrpv6994gDFn9tl23T2tYl+86a5ENq/R
eN9BqzyYQNBtYTgmlmePoDr0f1GOUoepBnUYdNkGwuDUoQd3b6t+qsz1YDIc
iOTXlJZOqtugDl3tvKhYhnNKRTbNUXe7ryx1KktdjaXWOnRd7FOZUx0Ijx1i
sT3es6JfltGbPrplma0iC98DsFI27a0fNsU5ueR919Cbmq2mdQJUoes6Cx6i
xOhmXFoaMiaWOuhaTqbRGkyjM0IGdZDvjev/voPAVB0OJIDBZP9O/4KOKeyo
DmknWwZQh0GWbSAMSR300IkaCmYQjOlsiYVnf0B10HV8mxfnaHUdw/7q0Fzh
pZ87tA8cViv4meXuREyPrCuydaYxAGhN673uuN1xdFu6sw4pzaYt1sqmuFE4
yylm2RdtfR3kPqjDWKlCz9zhuBrVYciYWOpwr7NWKSWkoqOZTKfkonP6Lekb
9azZRGxUjRjchLRZQA5OGDAyf1dDriy9a7qy9Gh+o9pYHXStp9OJScyMj9ts
tEr3UR0GXbaBMHR10G8C6q0317wsA6iDTtxQMJMgvEvlGitFs7c6dLdzI8kE
6wdMUJ1eGfwYw3lOaZzcbmsU9KZVV/dJhrPZcVDZpVznSczl5/uHt1q2ruvb
mJPIN5pp6JR8tGDolnOsV0HXcgIGisycb/A7ZkPHBFMHPXStH6Yzp7Il1Eik
VcR6nJn5qcnepX5XuuGO9l5XYonxrjQRXNvSabornVWe5MRghtVbWm22gPuo
DoMu20AYhjp0tdaGEIxH84QKC8laUwftbdFzCYRTYnGs1SWeETizpDwIlY1l
/2a17W5X89bOJBzdCr7j2HMISm9a73WyKv2diJm7pH2zMN2dq1tiHSannSg3
qfxAZetOO54dEZFlygxfF2KSY5x/eFbEUtb5yqG35hivAgxXNsQwnJIqcnHq
MHRMRHXokrwYywyto/bXtIVVKZPjSxJNOon+/GquoJE80SpYH98zfXBOKqK2
OE1PtHKWxjAcYjP/pbjdZ0i0d2sUjckWTsvcT3UYbNkGgi3qoLuVLBDGaW4b
v8x695byA/LLSzGr+Za+q2BNHe7cKEx0JBJfkgzQXCPwvkNXbFG8IxG/W0Yr
D1qZ9BU/puO0zJMsO3+0x4pphZv68SKmw6Ppb2X3foYivnTOZMaUSC7XaE1+
iGW7HytLY6IKKjHLhUG4lSosn5RA2IQJqA4wjl3AjNvd8w0NcvnROZsnNOl/
+pkCkfi8qKPnbTiJ+He5StillatVfLO34fiiojnkyRyma1r2M3m5S9NT3OOY
DozYPTLzJ2MAdejuUP4g0H+bjl+3nfxGa8qOeuqS/538Zq+dslUdBlm2gaBX
h0lE/JzMfp/Fy/5nQ3vPY63TvEeuxRGPxiX6p2Uuz8mJSE+aTn51genBEtYb
52nDV/g61eTbyg7MhHn9c9Qzm/1N76LZSHyF71ZTuTfBmJbfQHP0V79+Ponh
6JIUGJQWZMrFx62+1TUQrJnWe/dusmrCHic/YRe0umDjcvITdg5TM08XG9dy
qGW7P+ow6lXQdXydE+NgdtgbMUhMQHW4KWFPZWZ93k6dZm2OTiRmlfXbCzNs
UidtrBGzOzpva7tbOtSMOlZAXN7lOzqzL2noNK3ik0U5gYlxjzGZLgnJQVms
1+vFZRYWQwZQh7vyYheaHfMpLMNxDtvVYVBlGwiUOlgoG0zEDO97d1aIavcX
ZAUmxU9jMp30n+8OzS0+0ahR9auwDV/w7lSWuhGWW0Mv3ylv924pjsgXvHUd
3+XFOhDJ0U0W9/WtLXpP3WXbYScaWDetAE2x8LV1abOnMae4JIZsrPih/3et
h1q2+6UOo1uFFnmJJ0E8WdAoxT2HYWECqoMNsPapDSOOXLMjxgQ6b/LXxhHO
qRVZ9tm5QYw+dHflB5IJx/j8y+2oDcMEqgOqw4MMnVxWOodJuLMa+LgIMQGg
bbuYH+8UkxatsPL2PsJGoDqgOjzg0DZKS4NimP5FIh4KxLhGd9v3rCTn2Iw3
5Lft9Q7Qgw1UB1QHBAKBMAeqA6oDAoFAmAPVAdUBgUAgzPFgqgMCgUAgrAPV
AYFAIBDmQHVAIBAIhDlQHRAIBAJhDlQHBAKBQJgD1QGBQCAQ5kB1QCAQCIQ5
UB0QCMT/Z+++45q4Hz+O5+4yGEKpKCYQQBAQUdQWJ1IXdfTrqAtxtJWpuEfV
n6Nqq3XU+u1wVa1UreNrhwJhyQYVEMUtOBBBUQEHggJCSMIvgGDIBTiUIfH9
fPCPclzuIn5euQ1AhzoAAAAd6gAAAHSoAwAA0KEOAABAhzoAAAAd6gAAAHSo
AwAA0KEOAABAhzoAAAAd6gAAAHSoAwAA0KEOAABAhzoAAAAd6gAAAHSoAwAA
0KEOAABAhzoAAAAd6gAAAHSoAwAA0KEOAABAhzoAAAAd6gAAAHSoAwAA0KEO
AABAhzoAAAAd6gAAAHSoAwAA0KEOAABAhzoAAAAd6gAAAHSoAwAA0KEOAABA
hzoAAAAd6gAAAHSoAwAA0KEOAABAhzoAAAAd6gAAAHSoAwAA0KEOAABAhzoA
AAAd6gAAAHSoAwAA0KEOAABAhzoAAAAd6gAAAHSoAwAA0Kl1HaQPMjw+CvrI
I+OBtBne2qYkvXdgglBHOOHAPXVfUwBoImpdh5LzSfZGImG/5IslzfDWNqWS
M0ssKRa747KzDbWmJfd8vGy1uSZjdycV0r6Zf3nbSCOOrt2CoIeSBno9AHjH
qHUdSqVFicfS/S4Xy97+jSrJ2+IYOPWouAFm1RikWfGHd/+V+KRhFk/26MSc
zhpU2+Hbk4pqmKTw0pbBrSnt7osjc97RtwQA3op616HhSO+lfm4c8O7WoSFJ
0vaObEuyzT2Dao2NLOv4lyYUyR9/KAO7swDUD+rAzJOjCeaC96IO0gcHPtcn
KVPPoGd1ravs8bGpApI0mHg0W+3fFoD3jlrWoSR3Y39/Pl9U8WU8Pu0h/cNt
4QN3U/+PVzzJS83cPON0385BJsaBnfue9tqSdbf49VSS9Idrp8cPsz/R3khU
NcOKr3ofzpA93fcfDe1xh24FLxtoqqvd1nbijgsvchN+HmfTWquV0H7Ov+kK
+/AL06P2rnIZbtehbSsem6utb9ptqPvmE4qLVrGmiSts2FXvHHfQdhUf4wuO
jtegjOdE5d46vtrZ3kI+Q652Wwv7Sd+K7qjYbVQU+7UlRWg77rzLZINAcuu/
/TQIts2Kc+L6vBUA8O5TyzrIxNeC7v6+4+bGJbHdjWqpg3yEjx3dLaD7qAvr
t6Xu2ZbkMTjYUODfe3F2buVHYenDxwe2p2zdemuVc6gR39/B48bWrSkVX9sP
Pcmq1x6VsjrwKOFHfT6ZsHLDkuEmbELj47Gju3afvGbzshGmbNJgmuh55bQF
4bNMKYLSMfnY8fNJUyaN6tteW/4OciznhOcpzfPi8T2/bl67YsZAI6qWOrDY
Hfs7CDQM7b9atumXXzYtmdBVjyTY5tODlQ8a5Ae68UlS3/kfhkcTZNn7R+kQ
lHBm+Mv6vBcA8M5TyzpUKj9YUFsd+Hz/7p73H1R+ZpflZi+y8xeYxR/KUppa
lvzfaGP+2+1ZKq8DizTyPFFQttN+72daBIttu+qC/FO35OamXhzKfFFs1Sdw
SfqpgDP3X4+4L5N+GvwBQeiMO/JM1bylab98wq2tDiwWZeh0+F7VmuYEuptQ
hNawPQ+rrVBx1GxjitAZc+gp0/WUZe4ZqklUW3YAUAfveR2E0VuSFMdBadj8
E4aGoUtPKv1Aw9WBN3R3Vtk8xHFfd6DIdp4h5TuLCv4ar0loTzpW0xlCcrmH
xmgR7K5rLqvanVV3Hdjdvq32ky8DXPRJUuAVrrizSpr6Uz8ui2O3Ppn5iaol
iSs6sVncwTvu49g0gDp5v+tg2OVSVLWPvNKE1eFGgqBZwY1Vh7IElG8RlFxe
05XN7vzNhfIhu8jvyw8IjbFHXqj4OWlxYX7+ixdPj3+lT9Z0RUOddSANPE5U
O2ghPrXQTL6VMMVHMUjik/NNKZbGmMPPSxmTZe0ZymOxrZaeUfeLSgDeL+93
HYQOSkeWpWfL6zAzqNHq8OE0//LxuOTyt93YnI/WXi3/lF4kKqvDmMNVdZBk
n/H+P+f+Noa6XMX3643rwLZW+kHx6bI6tJp8XLEOxSc8DEjlZNTl+eExGixK
ODsKu5YA1Ml7XocB1680cR1auwQo1mGdqjrIHgdMt+AR5IfdnFdsPeQbEhlz
6tSpyA1DtIg3r0Pnb87XXQdxzDyT8m0HVdswNa1Wdtm2A2W5JB51AFAnqMO7
VwfpnZ8duATVfsYJxVUq/Nup0esgubW5D4fF6bHhej2OO5xfacNmcQdsZXQK
LAC0FKgDszrc+iVGXgfnQ0VNUAdx9NyyT/CjD+Yq/HRxwjJr9lvsWWJUh9Ki
kOkCktAdf6TOK+Gq1ipr73BNgjKZG41NBwC1gjowqkNp7r9nzQX+XWc+ZHyq
Jw3jOkiub+zJYVGW86Ird/BIn5xe46BHvs1xB2Z1KH1+fKo+SbaZejy3lBHZ
40NjPyDIdm6BBcx+AABaCDWsg+xezN0/vO94e9/Z+99zfYQioX3iz3vL/ujt
nR52u3L0rGcdZDmZc7v78wWBPUafm7vg4iyPBOevM+p3fyHmxx2kt3d8qkcS
pJ71sC+mz3Cb6NipNbfdkAWuH3Gq10GSFrZn+7YyW78b30G+ZWE1cd3W8j9v
+y3gRuUpSvWqQ2lBxGxTitAZ/jujE1Slqb8OkG85WCw8VZ/j2ADQAqhhHaQh
c4IFfOUbX5R/BUz7t3L/Rz3rIJefnLH6i+julgFC40Cr7pGjlj3MbKQ6yKd9
ErvVbaBVG002m6dnYjdm+b83C4qjZgu51epQ/lOq30SF/VL1q4N8M+S3IboE
ZT47os7TWmU5/q7GFPnhyD9wHz4AtaOGdYC3JL6x1fFDkmM9LyK31nu0Pg7w
MGOTbT7bfRtXOgCoH9QB6KQPfT2seJThGO+Umo41FyVtH96W0uw8O/gR7s8K
oI5QB1BJnPaPZ2dtXofJB27SDykUXNs11oSr89FcUQY2GwDUFOoAAAB0qAMA
ANChDgAAQIc6AAAAHeoAAAB0qAMAANChDgAAQKf2dZC9SP7n2y8HdzXRb2Xo
GVyschoAAFCi5nWQ3tn9mT5JkLoW/cdNW/hnEvPHFgAAvNfUuw6Smz/05rDY
tssTCpv+rQUAaMHUuw7iuK87UISW878vm/6dBQBoydS8DrGL5HXQnnQMTx8A
AKgX1AEAAOhQBwAAoFPrOshyjk7QI0gDjxM4kxUAoF7Usw6ykvxHKbFHVg41
YhPs9tODa33GGQAA0KhjHQr/mqBRPiMOv4/rpsBUnLAEAFBf6lgHcdwW55GD
7cw+kG84tO46efv559h0AACoH3Wswyuy/OveTsYUwbX7/hqukQYAqBc1roOc
OGqOPA+tpvjgnCUAgHpR8zrgjFYAgDeCOgAAAB3qAAAAdOpdB8mV77pxWBy7
tVdxORwAQH2odx1KS65s6tOKINj6Np9OdP36IJ7vAADAjJrXobRU9vSc9xIn
h05Gelp8DzwbDgCAGbWvAwAAvAHUAQAA6FAHAACgQx0AAIAOdQAAADrUAQAA
6FCHd1DhA3dTkXDA9Sslzb0kAPDeQh3eQaiDatK7v/bnKv6m0O6RUhzmJSAJ
zYn/1nnrlKK0kJ9mjeplYaCjwWbzWrUxsek7wnX5ztDUgtfTVD5GSgnZxq3q
whnZY+/PeDX/LmuMP1o5P+WFf42yXBIvVli0/P+Nq/ayvOF7H+EJJdD0UId3
EOqgWsUAS/Htp0yfUcZr3t6L1d8ihnV4eXHLQH2SRZBa7azt7Pv26GzO1+HI
fy1JI88TCnWQpAT/tq3Mzx52XILQ7Tfnl7I/bd8bcVdaOU2u/8JPetP16izQ
IFhkW7egyiWpWHhSp/3H/ZT0n7Sj2kX8xed2zSlfvxnTJ/U2IFEHaCaowzsI
dVCtYoDlOvx8R1rDFIzqIM3YPVSbIA0++ykxp2pGkrzbMUd2HLum8mr6omOT
5D/Anx7K8Fp7WU7wdDOK1Bu6M7Vq2K9YeE7PjdeZ385FcmNTLw7qAM0EdXgH
oQ6qNVAdikRf6RGU6fyT4lomqv4T9aqDLC98jiWb1B30602Ff0DUAVoa1KE5
5N14+POC+E97nuhgEmDWMaTXoNjpq9ITn1V+u6IOjjevZj7ZsyjOwTbIxCSw
c9/TXluy7ioNTy8LYw/fmD85pk/nIBNhgHmnMEfnSzuiCpWHPXH2Qhv/Tguy
xdLic96XxjuEmBsHmFmHDXRKDnv8JssvfRS/e8HnvTsY6PC4mnoCs859R89c
/2dCdrVBuzjYrQ2l7xpYLH0St81jkLWBNoer1dq4i+PSgGylwU6We+2fda5D
P2rfphWPq/Uh38x2wMQFu+KfKk3WoHVo31h1eHFyUScO0crhx6Rq82+kOsie
Bs7prKfTfsL+tJreFIA3gzo0Ndk934sOZiK+wN+sa+R/xsWNHxn9saW/Ua+r
8VVDT0UdPklwGRBo3ClynMt5L5fYvpb+AoF/78XZuQoDReHJKz2MREYWYUOc
znrNOv/VyHBzQ5HAOGLFyepbHeV1MHFOObYyyswifLTrxaVLL3lNPtnDMekc
4xHytbyoRTYaBKEl7DHcaeoXk8cO6WmuxyG0HHfepdWB5A3ddGhuFy0dM4ex
Ll5ebpOG9zDttiSu2ouWpB11sdYiyo4C8Dv1Hug4qK+tsS6bMpsXozzEN9Se
pfRtgzQJysjpYDrDta9HHQril9lyCa3e6y8rTdtIdRCfXmhOyf/TtJp07CXj
+QIwgTo0LWl6mpOlSGASMetQbm7VGCcuTk0rfj3ildeBzxdZjLie8OzVuCBO
TZvU0V9gFn8oS2F2ksKEsJzM10Oh9ObuOCuByMLtfrV3o7wOApOADg6XAjMU
RtY32l+Rf2ySLsG2WRybr/ACT5LP38qrPrvyOhA8Xitr92PpCkOlrNpk0tTt
jroEwbOcsufC66MA4ie3bj+iJaCB6lAqexY215pHEOy2PV1/FCXl1DlcM67D
y8TVH2sQmnZrEmlDdWNtO+ScmN+tjV6HSQfTse0ADQt1aFKyKxujhHx/+9VP
C2uZqqIORuGr4hX/w5cEeAULDEOXnqx1FMi772ImEg6+kaS49VBeB75h6PzQ
BjiSkXdkrBbBtv0msY6zRsvrwCIFLv61/MuUnF/Zmc1iWy08VVDzRJUaqg5y
4nuByz8V8uS/ivJNFmP7L9YcTnxU83vDsA5Fl77vpUXwuq44o2JlajyjldNr
040agoHjDtCcUIemJC30HhfAF0asO1/r//byOgisL4RWG+OkCavCjQRBs4JV
D41SsaSgoCT/WebcTv7CfskXaXUQmJ09/vzt16FUlnV0YjuSYBv0dtl07OKj
GnfOVGw7aI09Uss/jPTetoFceRyWnmGSrQasQ7mCOxG7l06w41dEQq+7+/4k
1Y1iVAfxtc39WhFcm8Wn8lV9+9UZrboWfR2rGzb7aEYN64M6QHNCHZpSybP1
Dv58k/iDj2qdrOK4Q7/kC9WGTOnZ1WV1mBmkMJRIis4fSZ4xJqq7ZYBAULYz
quJLZR0MbS9Hv8FRBhVkzy/vm9VPwC0bVHl8O6cVBxKy6aN7eR3IdrUOqSVn
l1mzWbyhu7OYDH8NXYdXih7Eei8YJOQSBNt8ZqiqXyMGdSi5+ctAXYJjNS+y
hgLjnCVoaVCHplTy7Pt+ZXU4VPuZQqrPaKXVQVYctjjCRODf0TFx4977wdGP
4xOeJpy+5WxWQx26XY5pmDq8Wsq7J/etmmov1CRYBNW616KgzOpjdkUdBF5h
tdUh4f86yusw7Hfls5hUaqQ6lJOk/z6iNUnoTjiaS/9mnXWQpO4cokeyO8wM
eVbTiqAO0NKgDk1JWrDn8wC+MGrjlbr3LNVZB+nd1NHGIqOel6MUP62+fODZ
RHWonHdm7PbJVhrywdPFv9rHZiZ1kKb9/AmXxbZZeb459ixVI8vaM5RXNnqr
OAhQRx2kd71H6JOUqXuA8jm4tIVHHaDlQB2alDRxbYQR33/Qxtza9mAzq4M4
7qqdkch0WobiiosvJDsIm7QOZV787aRDsG1XX1J8USZ1KBXHL7GkWGzblXUd
4y7TqHUoubSmK5vgDdmVSR+Ja62D9P6fYw1ISvjl8VrHcNQBWhrUoWlJUm6P
MhcJzKKX+OW/PgIqk2Ree55ZNXQzq4MkJWW4fNvB/mpc5VFQac7TH0cHG9Z0
3KFh6iDNOO0XnZKneF7ss5iFNmxCc9jv1QZWRnUolVzf0k+bILRsZ/x16/XR
XFnB/UtX7ysvbcPUQZoeuGOX77n7hQoLW3QvdPUAfZLQHrRN1bxrqYMs86iz
QL6azn+pqAp94Rv+jNYXSYEH9u0/GH6b4V0+AJhCHZqaNPV/ib1MRHxBgFXv
mHHO8eNHRtt3CTQ0Tfi7agUYHneQ5u+bGGwo8LdyiJ+9+PLC6XGfWAfYOl9b
8GlAY9ZBHD3XhCI1+TZ9HEc5f+UyddzgLm25BKHZZVFEbrUxjFkd5NPd/MPJ
jEewCI6eud3AoUMH9e1uaaBFaow68ExpSoZ1YJH6lr2U7orX70vv269G5ZKz
yzqyWQTJ+8CwQ5eeDgP69y67+q7s9YWjdyUrZoXBXfgqtn0IjoG18iuWsx+/
9WqJ4sIzuQufwgIwuBru5Pz2FIsynh2FOkADQx2agezppXsbZsb27x7cXuhv
bBZsNyh2xtoHKfXcdiibUc7TvQtj7W0ChcIAK7sYlw0PUwulsctDjRuxDrLH
8bsWTRzYtX1bHQ02SfF0BdYOTkv/OPdEecRmWgc5yeNz+5dPHmBjpKfJpjha
rU1sBzovOXpd+QeZ1kEFTvfvrrwagWXPLhxc5Tayr41JGx0NDkXxWrUx7eb4
xcr9Zx8rjdEM7uBdHOLZTuULVqAsFldeGM78Dt4K70uddZBl7R7CY5EC92AG
14sA1AvqAC1G3XVQM3XXQRw5W0gq3XgcoGGgDtBiVD7foY+zm3sZj1m7GZ3r
1MIUJ+zwKl8/d7cJPdvW+nwHya3NvTmU+YKT9T8KD1AX1AFajLqfDacW6vFs
uLyjE3Q43b+7rIaNhOaHOgAAAB3qAAAAdKgDAADQoQ4AAECHOgAAAB3qAAAA
dKjDO0j1tdLvsoobSmg4/aOGJ5gCvKdQh3cQ6qBa3dc7ML9Ha1FayE+zRvWy
MNDRYLN5rdqY2PQd4bp8Z2iqwkXHDO6kIXvs/Rmv5t9ljfFHK+fH/E4a9bje
AaARoQ7voPewDiWXv+2m/Z99tTwfofT1tdL2U6bPKOM1b+/F6m8Rwzq8vLhl
oD5Z9kjpdtZ29n17dDbn63Dkv5ZKt6RgcBe+0lz/hZ+ouP1er84CDYJFtnUL
qlwS5nfhKz63a075+s2YPqm3Qa3XSgM0ItThHfT+1UGa9ssnXB6zOrz18x2k
GbuHahOkwWc/JeZUzUiSdzvmyI5j11TeMpDRc6UVyHKCp5tRpN7QnalVwz6e
7wAtDerwDmp5dSg581Z1kD3aN0KbaKo6FIm+0iMo0/knGd+xtn51kOWFz7Fk
k7qDfr2p8A+IOkBLgzo0h7wbD39eEP9pzxMdTALMOob0GhQ7fVV64rPKb1fU
wfHm1cwnexbFOdgGmZgEdu572mtL1l2l4ellYezhG/Mnx/TpHGQiDDDvFObo
fGlHVKHysFd+B+9OC7LF0uJz3pfGO4SYGweYWYcNdEoOq/0J1zUQZ4Ru+rKf
RRttDe22Vv1dtkTeO7uqC5tWB+mj+N0LPu/dwUCHx9XUE5h17jt65vo/E7Jf
f2BP/WfJxE97WLbVpJR/Kdgdl51VjmOD1qF9Y9XhxclFnThEK4cfk6rNv7Ge
/vM0cE5nPZ32E/anvSc3roUmgzo0Ndk934sOZiK+wN+sa+R/xsWNHxn9saW/
Ua+r8VVDT0UdPklwGRBo3ClynMt5L5fYvpb+AoF/78XZio/YKTx5pYeRyMgi
bIjTWa9Z578aGW5uKBIYR6w4WX1gLa+DiXPKsZVRZhbho10vLl16yWvyyR6O
Sefq/8QHWZafuwWXIDhtbYdMmOT0WU+hlobVsCFWynXIi1pko0EQWsIew52m
fjF57JCe5nocQstx5+ud9tKM8N9+2Lhx4/oFQwwpFtt6wuqNlX7YE/1Qebhr
qD1L6dsGaRKUkdPBdIZrX486FMQvs+USWr3XX1aatpHqID690JyS/6dpNenY
S8bzBWACdWha0vQ0J0uRwCRi1qHc3KoxTlycmlb8esQrrwOfL7IYcT3h2atx
QZyaNqmjv8As/lCWwuwkhQlhOZmvh0Lpzd1xVgKRhdv9au9GeR0EJgEdHC4F
Zig+8/MN1uBl9DxziuB09Aqq3AYouLZ1eJuyR+BUq0P+sUm6BNtmcezr54GW
ip8kn7+VR39VyZXvustHwSbas1QqexY215pHEOy2PV1/FCXl1DlcM67Dy8TV
H2sQmnZrEmlDdWNtO+ScmN+tjV6HSQfTse0ADQt1aFKyKxujhHx/+9VPC2uZ
qqIORuGr4hX/w5cEeAULDEOXnqx1FMi772ImEg6+kUR7NhzfMHR+6FsfySgK
nSEff7U/26v4GGXxmaUd2Up1yDsyVotg236TyOBQRBPXoWyJ7wUu/1TIk/8q
EqSWsf0Xaw4nPqr5vWFYh6JL3/fSInhdV5xR8SyeGs9o5fTadKOGYOC4AzQn
1KEpSQu9xwXwhRHrztf6v728DgLrC6HV9+InrCp7cuisYNVDo1QsKSgoyX+W
ObeTv8rnSgvMzh5//rZrILn5Q28Oi9NjQ3K1Aa3QZ8oHRPU6yLKOTmxHEmyD
3i6bjl18VOs+nKavQ7mCOxG7l06w41dEQq+7+/4k1Y9YY1QH8bXN/VoRXJvF
p/JVffvVGa26Fn0dqxs2+2hGDeuDOkBzQh2aUsmz9Q7+fJP4g49qnaziuEO/
5At1PVe6VFJ0/kjyjDFR3S0DBIKynVEVXyrrYGh7Ofqtnystjv26AyUfx/94
Um28Ep+c3552zpLs+eV9s/oJuGVjL49v57TiQEK26s/nzVSHV4oexHovGCTk
EgTbfGaoql8jBnUoufnLQF2CYzUvsoYC45wlaGlQh6ZU8uz7fmV1OFT7mUKq
z2il1UFWHLY4wkTg39ExcePe+8HRj+MTniacvuVsVkMdul2Oaag6jFAax8Vx
ZX+t8ozWwrsn962aai/UJFgE1brXoqBM+tDevHWoWIT030e0JgndCUdz6d+s
sw6S1J1D9Eh2h5khz2paA9QBWhrUoSlJC/Z8HsAXRm28UveepTrrIL2bOtpY
ZNTzcpTip9WXDzwbsw4V4xVtV3lRoKs+Wev1DuLM2O2TrTTkY6yLP+3T9TtQ
h1JZ1p6hvLLRW8VBgDrqIL3rPUKfpEzdA2pZftQBWhrUoUlJE9dGGPH9B23M
rW0PNrM6iOOu2hmJTKdlKK64+EKyg7AR61BaFOLJJ4lWI/dlKwxYkqtrP+Kw
6rwa7sXfTjoE23b1JeX9S5Lk9XbyUXDonuzmq0PJpTVd2QRvyK5M+jLUWgfp
/T/HGpCU8MvjtY7hqAO0NKhD05Kk3B5lLhKYRS/xy399BFQmybz2PLNq6GZW
B0lKynD5toP91bjKo6DSnKc/jg42rOm4Q4PUobQgcnZ7iuBYzzrxqDJT6Yed
hRSreh2kGaf9olPyFE+ffRaz0IZNaA77nTb+ynIOfl42/E7+53HdA+zb1kGa
Hrhjl++5+4UKL1V0L3T1AH2S0B60TdW8a6mDLPOos4AkBc5/qagKfeEb/ozW
F0mBB/btPxh+m+FdPgCYQh2amjT1f4m9TER8QYBV75hxzvHjR0bbdwk0NE34
u2oFGB53kObvmxhsKPC3coifvfjywulxn1gH2DpfW/BpQGPWoVT68NhX7TkV
V8M5TZk0qp+5LkfQ196i+tVw4ui5JhSpybfp4zjK+SuXqeMGd2nLJQjNLosi
culDneyJ71dGFIvQMnUY/5Wry9QJI4d6HKCdwM+wDixS37KX0l3x+n3pffvV
qFxydllHNosgeR8YdujS02FA/962xrpsgkVwhKN3JStmhcFd+CpuMEVwDKyV
X7Gc/fitV0sUF57JXfgUFoDB1XDl5wNQxrOjUAdoYKhDM5A9vXRvw8zY/t2D
2wv9jc2C7QbFzlj7IKWe2w5lM8p5undhrL1NoFAYYGUX47LhYWqhNHZ5qHFj
1kGuOD3o+yl9zVtrcjU/bN/babVPSm7IdD6pWAfZ4/hdiyYO7Nq+rY4Gm6R4
ugJrB6elf5x7UsPALntx5c+FI7oZ6fLYHC09w479Zv3z4E3roAKn+3dXXo3A
smcXDq5yG9nXxqSNjgaHonit2ph2c/xi5f6zj5XGaAZ38C4O8Wyn8gUrUBaL
48SKC69yIqU7eL9Wdx1kWbuH8FikwD1Y9bm4AG8OdYAWo+46qJm66yCOnC0k
lW48DtAwUAdoMSqf79DH2c29jMes3edbzG1smStO2OFVvn7ubhN6tq31+Q6S
W5t7cyjzBSfxTD5oeKgDtBh1PxtOLdTj2XB5RyfocLp/d1kNGwnND3UAAAA6
1AEAAOhQBwAAoEMdAACADnUAAAA61AEAAOhQBwAAoEMdAACADnUAAAA61AEA
AOhQBwAAoEMdAACADnUAAAA61AEAAOhQBwAAoEMdAACADnUAAAA61AEAAOhQ
BwAAoEMdAACADnUAAAA61AEAAOhQBwAAoEMdAACADnUAAAA61AEAAOhQBwAA
oEMdAACADnUAAAA61AEAAOhQBwAAoEMdAACADnV4B0nOjBdNY4cfOy9j+hPS
wtMTTswQJpy+p/JHpFfcAl1YPtMqvjQSzhQ03MICgHpCHd5B9a9DSc5RS99p
7LC/z6r8EVnumfvR21JEK8+vbe3bHHUouefjZavNNRm7O6mwhkkKnx+dHdle
EDBqV4FU5QT5l7eNNOLo2i0IeihpyGWTvUj+59svB3c10W9l6Blc3JCzBmjJ
UId3UP3rUCrLi8+I+uvZi9p/oiTn745NXwfZoxNzOmtQbYdvTyqqYbkys9eN
DDbki/j8musgV3hpy+DWlHb3xZE5zN+a2knv7P5MnyRIXYv+46Yt/DOpQcMD
0JKhDu+gN6gDM81RB0na3pFtSba5Z9AT1auTd/mOS48AgXGE59w4K8Na6yAv
TdbxL00okj/+UEYtU9Vj6W7+0JvDYtsuT6hpmwbgfYU6vIPUqA7SBwc+1ycp
U8+gZ6pXRpK/Z0ygoUX08uDC/ODzlrXsWXpF9vjYVAFJGkw8mt0Ab4847usO
FKHl/O/Lt58XgHpBHZpIScjFuaTflr1FFUOa7G7qRq7PNO6psLuvxrjn3nEe
VMiRU9LKOkT6XHh54+cLm6yDZvD8prcNXTfp+sU7SgOnLG1FuFvV4WbuqfCM
WkfMuusgfRpxe/+wyIV6InfNgIW2sX/8mP3kLXbFF8V+bUkR2o4779Y84otv
Z4kuiuXLXeSfWNtxhyqSW//tp0GwbVacE7/5klW+eOwieR20Jx2rYZ8XwPsL
dWgisgd3fuD5Ll74pGLHdrFP4iy2rysZuEdU8RfSmwtCXLXiY3NKq7Ydfh4T
7skJXD7wzM5JZzZY+LsQPm7mF6/kVJtt/sWH0b/e8ltxcaOR71vXQfrgt/gF
bB+3NuGbxpz7bWLcWlP5i/rOG5GW+YaByA9045OkvvM/jA4TFPqeM639uMMr
suz9o3QISjgz/K0/8aMOADVBHZqK+On/zH3dh6XnlQ2UsjvLwj0/itsi9Fu5
OrcsD7KXUUP83GyT75aUvqoDy8dFJ+bYqeJX42rxi/BhAS6EaMuelypGWmlB
yCd+b1kHydWb32n6zhx4805u5V8V558aH+xK+P+4q/BN9uIUR802pgidMYee
MvrpAh+GdSiVZe4ZqklQ5oti33brAXUAqAnq0GTEsZ+LXNtfuSkua0Gko2iO
672okSLPEXefy8dO8eODxr5ekx+WD1IVdfBdPP+J4uD38t9zXoTvfK9HJfR5
N0AdpNfnhrhSoUdOVxubJfFXl1I+7oPv5NT/ILA09ad+XBbHbn0ysxOBmNeh
tCRxRSc2izt4x/23OzYtyzk6QY8gDTxO4ExWACWoQ5OR3VsT4caLjc6SD/SZ
v7fx2/BrftqqCHejS8nFpbL7dzZx/dZuflE+2JXXgQjc419tVJWcuvI15TNj
ysNGqYPkud9HftOoExunXdw/4/XXvikx8ygf1w5XU+r/KV18cr4pxdIYc/g5
s+nrUQdZ1p6hPBbbaukZFW8GE7KS/EcpsUdWDjViE+z204NzG/oEAIAWD3Vo
OsU+iTPZIYdPSiUXr6/knvgzSlr2N9yYoBRZSfil+eygP0IqxsWK4w5hfydU
G7Ikp68sltdhcuPUoTh7H993WtUB7upfLuUJq/f6nvAwIAmdKT4M99rUow6l
zw+P0WBRwtlRb7RrqfCvCRrlv2ocfh/XTYGpOGEJgA51aDqy2ynruGWnLT3/
I85TK/7001JZ2u31PP+d/5Y83X7KnXc68kHFhKrPaG3sOvxh4OuimXDmxZuv
oBJxzDyT8m0HhrOsz7ZDdtm2A2W5JP6N6iCO2+I8crCd2QfyDYfWXSdvP/8c
mw4AylCHJlT8aL/Ab+mSJ8kLQty738iQyIepJ4dM/VasfHp1VrDb6703zVGH
klyfrr7TOJF+VxtsoJTc2tyHw+L02HC94Y87nF9pw2ZxB2yt5UzZusnyr3s7
GVME1+77a7hGGkAJ6tCEZC8jh/h5jr0d5Cia655VlgJZ2aFqz5EpQUP9PD+/
l/9quuaoQ6kkedYJV8Jv9bq8Bhsoi0KmC0hCd/yRGq6EU1KPc5ay9g7XJCiT
udFvfc5S1Bx5Hlox3vsF8P5AHZqSNGVxqMdHsT+0E/24u+LEVFnGukiPDqc3
W4i+WZNbOSw3Sx1KJddurdP2cdGN/l9Q4euXEBdnBN29fP3NNiieH5+qT5Jt
ph7PrXvaetRB9vjQ2A8Isp1b4Ftf840zWgFqgjo0qcLDZ6Zz/dzZ4f8mvhpv
xUEX5rD93DkBu3yqPrMzrYM07VH09tSwbalhW69v61B2j9Yd68r/uC01MuBF
1WTFSZkR5X8Z9uu1ze3Kdh/t/enVZDERBQqvIc06mLhUw2caIZprE7N56Ol1
3cMWfODnQvjv9nvDHTgFEbNNKUJn+O9MzjxlWgdp6q8D5FsOFgtPvf2QjjoA
1AR1aFLSK9e/4fi4fJh4vvJTr+zhnR94PtO4McG3q8ZppnUoESV6EarPMvIY
fa/qtnJ5v8e6qz4ZyXe2a1b1LRFZ/sV7x6acWm4Y4MkVefFDVvQ98+eGjLTH
b7zCab8N0SUo89kRdZ/WyqwOshx/V2OK/HDkHw1xHz7UAaAmqAM0LvGNrY4f
khzreRENcU2B7HGAhxmbbPPZ7ttveKVDdZIr33XjsDh2a6/icjiA6lAHaGzS
h74eVjzKcIz3G1xSV01R0vbhbSnNzrODHzXUmVUlVzb1aUUQbH2bTye6fn0Q
z3eA/2fvTOBiTP8APu/7zjQdSgjNNNOlkhK5lVuuXSLriFyJXMm17FoWu2st
f+y6rfvMsYjMdNMhKlIS5YgUIem+pzne/u9M10wzUzMVpX7fT58+9c477zXz
/L7P/QCVgB2ArwA3+aqrpQa1y8yzL+tdhVMUf2SyvopmL3dWaqMUGyrBsx6e
XDdtcDc9bXXdhbA2HABUAnYAAAAApAE7AAAAANKAHQAAAABpwA4AAACANGAH
AAAAQBqwAwAAACAN2AEAlIAbuc4UI6lOuwqDq4GWDtgBaOXw3t1YYqWhoj/5
aEJx3XuDHb42pbeW0FBEbfq1Op84Jzngn2X2/U06aaqSydQ2OvoWNuPn/3I4
MElsssbKhZ9qgOq4VA11wTNOfkeVH59Up1yuPJ7g7b6hKjJ3klp6pDDuwAQ9
ilafVb4fv50Bl2AHoDWDf/ZfbqmKdRx3MEGxcN9gO/Difuup8f3pLFhvSEEU
tENJ7O7hHVASgqp3Nu9ja9PX0lhXk0KEGlTP1V/MDvxXfv8eELJnYR8VBNEa
tHyv8L+DJ4KqlwrJZa8eMkCa/pY0VYSEdnTxrbyScjugmoa9B9Vg6IxDUsPu
ix/vHtke07BeG5z9jXz4YAeg9cJPPjGhI0o2dvXNVDS9NtQOguS9Q1SoYAfF
UcgOgtSjYzQQtNN3/0RnV0V5ft7rOxcPecbLHP/O8ZxBvEF3UaCCo+PxbL9F
RhiqPeZwUlXYL7cDpd92Bde3wj9dn6OPobpTPBpjBskvD9gBaK0IPpyd1AHF
DFx9FVudSATvfoPsgH8+PV4DATsogUJ24LDmaiOYwcowhWfyUs4OeN7t5aZk
VGvEvpdi07goawdhrZXnLBqKdpp+Of0b+AKAHYAy4VxDp79X1fjBI9Fv/XAD
LY2OVtMPPSrIfbDnB4v26m0YtsuvpUh+/UtTg/YsHtuToa2moqbNsBq9cFfg
29J6H60Mz42/unX+mF6GOm2oKurtdI2shk1fdSSyKoLme0xSxYxWhWU//++X
yX0N2qlRNTqaDZ23K+iDWFIt9FuoR6S7OV41vwh4xvlJWghmtPKORHzhhP9o
iiEadodrW32Umxq4Y84gEx0NVeEZnXcHv4va1J0sZQfB58ijqyYN6NJJk0o8
EJqRpc3EpdvOPUivzsYmXV03fVRf045qWM2vP7nr+qhGnTiqBnVem5BSPxcd
rMN8n1JBZsSBhSPMO2lQVNTbM7vb/eRdM4zV9WE1NkrYwfBL2aEgbE03CtJm
8K4EieMrbwfherp/D1JFyBYbHsq9VDzLZ7mltqbh1DPJTVvEADsAZeXxnIox
eg0cMnXjX+vG6ZMR1d6TJ/awnrll5/rxBmS00zxW9foMnIR/7fXICEXHYoTD
TKfp3w80aIMiZN3xR16U1uNoZbzky87m6oiwxli324DhdiNsrJhaZMxoRXUw
F9qBiKKDbHR1rKeu2bZn364Nc/p3IiPUrkt8qmdrLY1Ya0pG2k72yJAIVPin
0xPaIGTz9Q8kmwl9XHRRtIPjVfmVwPinmwtMVBCE0tFq9NQZ077rx1BXNRs7
2qymHfJC1lioIog6o++4abNmz5w8up+xNgVRF/eOIPX2v//bvn37tlWj6RiJ
bD518/ZK/ncs9OOXCwIKXJsQoR1Q6pgdHu7d1TWNBk92XrLEZca4vgY910VI
PDUFPqzGRrGapZQDI9QQTG/a+RQF/aCEHYoi11upIOoDtsXV2Lc+dijD08/Y
ayIYY+ntEjl7cO+tNsaIQNhmhqe8Xb4OYAegrCKeVzbg4Z9OfEcEALLVpkdE
SuO/3NGfghmvCa9Idbynf/VXQ7WH//Wwar2G0qQzU+gYojnmSHnIUeJoZYKk
g3ZaCEI1dTr2qLrGmJuZ+PpzdfgS2YGEqPbZHF3VwMh58peNOkI2XRteFTX4
8X/2JiLf6CPitbr4x+PjNBByjy1xEhn00hA3JnHJDh7y87wloSuMMYTSdYlv
ZT67KH7/OB2U+I5K2KHQc4YWkRlcG15Y/V5u5rOYxDzpQ/Of/G5NIX29miVF
r01kB4RKbWO+wDNFLAbiErsp9GFJg8tC4VtQrFUaz7nlbk5FEHLHfvN3sRKy
6wzXCtuhJHpzb1VErc+WaKlQXS87lOFpx8YQJhNLBDV3yPZf2VNHu8uM8ylQ
dgA7NDnl8Zw65ugnYarlRvzYBUM7uwaIEk7Rf1PUqldPKw11N8CwLqvvSSQq
buRaEwyhjjwsWiFU8aOV8WI2WpJJZLPVd2tbIlpkB4Rqd1h8AVI8+9IULQRj
Lg+tupTyHCR14M7E6obD1H9HqSEq/Xe8kEjAgqR/BhHpus+2Z3LTNSdwMRGV
NL47kSYWybj3f+pKrmGHvIuTCU1Z/RqtQPb5a9tB0WsT2YGE0pzZtSQjxT4s
cQgLCAQCPp/PlYTYQmxXzBEK92jlvvP5ZRSDSoQXomTDtJ295UL0Z/lVdgra
gfP4z/7qCLXHBllrscvt0Uqp+X2TgBe9oRuZpDLykCLr6TYlYAegrCKeC4O2
KHvEi9vSg0y2/PWRKG1xbs5pi6hOvlgg/Icfv7UXhYQxh81bLM4iJ1tdjIR1
Kc8OKXy0MsG7A8NViHjz0/1aa95FdsAMVtyRyGzxn/3Vl0JSGbKnunYW/3ze
oS0RDTfHVhxP8PbAcFVEdei+N5IJkRu20gAjqTpckLugKf/l/wZQSJS+f0n6
o/iGU1tE0g74p8vTO6MIudMA5x2esZ9rrdn42nZQ9NrKyw7qky/WkooU/LAk
3iIQlLug/F/xP4jtxKsKHEPx8Q5Cit4EHf1pah/dckloWy84kyBbZQrZgRu/
c1AbRMVi7d1CWS9X9GjVMrGxk2Ss2+VaeiXhn46NoSr3IJsGsANQVhnP281j
i1KgsEs+mdLrj6eitMxhCeO5wwVRPC8NXKSLyvvkUL1lwaXKHK2MF7XenFxV
ypBLebuD1ebHEqkJ/3RUmMi6bYgW25zPmtcZJco2d0XnFiTtGUxF1MccrZlL
K/Vf2AlFNJ1uyA053HCiyEPE8VOSnV0JrRhK9VnC8+NOLxtEUxFGJKpun2kb
zj5Il53wv7YdFL02kR3QzrXGSgU/rOoz4zhhgaIiYXS2t7d3cHDYunUr8Zv4
m9hCbCdeVaD4oJwdKuB8CD+5agRDBUHIxksDZYUGBezAe7l3uBZCMVsRLCcP
Ub+aJeJLesGByO0w3EIauFbilwbsAJRVxvP2zt7i8XyrLDuIoqraD5cKGuNo
ZbwHP3clAs7Y47X37yu3g6QGiNN8OGxH2MFCcnPJnZVGGEpf6FcoHPq0y0YF
0Zp4Vurw3Dsr9EVlB7n3UWGH8TXiuKieTHaP1uK3Yac3zbJlqCEkBGvff41v
mnT28evbQbFrK7cDbcmt2uyg2IdVBRH5eTxeQUFBaWlpSUlJfHw84QXiN/E3
sYXYTrz6pewggp9yfHx7FNGaejlX+sU67cBPOjxaGyV3WRogt8NzPe2ApwvL
DlLDqZsfYAegTIl4znu8pQeZVPVaA49WJkjeM0SFCPAbY+quWUI7LpBc15MX
86slmaQyZK9kvz9e7GYrMqrj5JnLe7GjPwVtP/0/6W5J/MSdA0X1RnLTNV/4
ZukKZI7P/A5oreMduGnhB2eaqRKRx5ktledsKjvUdW2K2EHBD6uKqrJDenp6
cnJymagEQfwm/ia2fNmyQ8UViKpwiOgtoxGgDjsI3p4cLxwMs8C7lk+qnnbg
xWy0IL64w/bX1pe6OQB2AMqUieclQcuYGELpvfWp/HyP4kerGHpMttpYa7Np
eZ8lco8t4lVLgpR9w6gIpl+jNYJ44fU/g1XRdtMvPRDKodPcm7LqBTgBi4iY
ozXlotyMISfAVRdF2kw4LZ5V5j/9oxeFVOdouIIr0zQRqaow4fufbetD2GHM
saYbDCXz2hSxg4IfljgCgYAoJuTl5X348KGs0g7E38QWYvuXaHeQQJSXQaij
j6RJP+1a7SB4f25yJxRjzLn+ubbPqZ59lj6dGKdGfHHdQ5t50QHsAAhRIp7z
4nfYaCCIVr8ffVOrExY386nvGZ+KRKLE0cr4z3cPIg6nbrX4v8Tqlj+86P3j
p++rEk+5HUgozeFEYkW3Qt77a3MNMYRstjZCKmrgaafGa2I6Y+1tqZjeogDZ
rZL512d1QFGdWddl1DqUUxTsRpyBYr7Mv7K/JjflgiMDI0naQZB672boqzzx
3lQ5d1ZbkBG1scelohKefX6SMCjNvJpRlx7wz+cd9XU765os8VFgdkDZKHxt
CtlBsQ9L/BbSzwlvoXOXhZdSM8oq7ZCRkVFcXKxYwaFMMTsIUnwOHfF6+L5Y
7ICcd4Gbh3VAEY0RB97IsFAtdsDTLjvSiKfh+J8Mq0ictl7jHTI8JrdF0M4u
PvJ6fuEFCT5nT585f/u1grN8fCnADkCZcvG8jPvq/CxTVYSEqHaysB01ZqSN
tZleW+GMZrNvcpQ/Wlnpy1PTjKjE4Sjaxn2GjxkzwsbatJM6qmp/NqdyF5Ed
KBajRhlQ2hgMnOA4c4qdRXsyglDNFvvIirJ4jqeTjuibU8swraIgNwMM0Rx3
XG6/QsFHz7mGlPLRcNOcZtgPMtai0GxsTSRHw3FD3fUxVE3XYqCdveNc51k/
jOzekXgaat3XBOVKXxue6TVXDyMh6gaDp8yd7zxr6oQxC8/K7NbOvbfaiNiR
OvxA/SsgFL42xeyg0Icl4xaG7o3LyCqrtENWVhZRcFB4yIPIDiS0g2n/GrPi
DZpz8nVFVOZFre9KJiEotS29S/d+g4cNHSAcpCe8TMbEI8/EvwEKzMJXXkRC
KJ3Ma55RhO2U/U+resQpMwtfxXuS9g0jSg4mFf0mZFHe8wFjuoWAHcAOTY9y
8Zz4imfFevzqNMyC3lZNRbWtrpGlzaRlf12IrojUyh6tjJ/x8MwvM4dZ6Gmr
kTGKent9q+GO6y4/r0ob5Xbovz0uyffPmTZG7dWo6jomg+f+77bMHKuQosDF
RCaf3PXnB/JL74Lkf0drIZixW5Dcbq1lpSm+fzrZGLdXU1FrZzhg2uYbr3ID
Fumi4nbAMyKPrJk+vIdhR01VMopRtWjmg6f9dOphppyYjhc8Obd6fE89LSqZ
oq5N7zpo2dUPMnbF046MohKRdcheWTlfBVH42hS1Q1ndH5b0LQz++2VmdnZZ
pR2ys7OVt4MMKNa/P6mIwHjOo/ObXCbYWOjraKpSMIzaRsegp93sjWeiMmrE
aAVm8C4NcO0st18eiYSZrK0cP67EDN6VjySbPZ+Joe0mnJLf4xX/dHQ0lSgo
L/BTdFjJlwLsADR/yvss9fwtTuHJzj6fn9QWqdFQIQ33xX67dijFfIWsXH4T
I+o7jKiNPNTcmy7lU3kL+16XZNffDi0IPMN7oREZ1fnu6OtavpfcYDcGWmPi
8aYB7AA0f6rsoODoIUHKwZHqiOqgv1/VpRPBR6+FZlSM7nDyVfNqIuQ//6sv
BdGyP6Pg4IJmSOUtnE7llIIdhPOTHRzXEVOzdPOrtambn7hzAAUzXhXW9OtL
gR2A5o9ydhB8uDpLH0M7zryqULdRbvJVV0sNapeZZ182fXqsBM/2cNDAdOex
vt1vdeUt3MwlXNDq7VAUf2SyvopmL3dWah1f4rzLUzUp1r8rmhP6koAdgOaP
QnbgPTwwf7azs9P3vTqrIGhnhzM15wkHmgLCAmCHbxSwA9D8UcgO3LBfetOF
C07omA5fdDS6+bUktE7ADt8uYAcAAL4cYIdvF7ADAABfjnI7ZGXVe7wD0GSA
HQAA+EKUT7VUXFyckVHvsdJAkwF2AADgC1E+zxKPx+NyuS9fviTsQPwm/ia2
KDzPEtBkgB2AVgg3fbUFW1eXVf5jsOBDvWcyqgeCD6kLe/n2Wpgqa4h0E1+b
8nCjE2z1WAauH6UGS9dY32HSpEnbtm2rWt8h7+Jsli4jZFc8lB+aLWAHoBUi
4MR4vT35b+L2FXfN6V87AvNihPGUMehZrMwuWF/u2njvbiyx0lDRn3w0QeqY
BZ5RBrosmtFDFvFSXuo8A5YuzWcRu+5OwbXaoWp9h/ItHE7FiBJiS86FWTeb
sx0UfSCFcQcm6FG0+qzy/djielCDHYBWDC/22SBGI0VgXt5uO59Zl7l1RzsB
J9oz5WZcae17Nua1lQknF/FfbqmKdRx3MEHWoD9u0GMLOoveM044Hzo3faU5
W5ce+HNY3VU/CpQdMjIyUlNTU1JSkpOTid/E38SW5l52UOKBFD/ePbI9pmG9
Nlh6IZFvGrAD0IppxAgseJc0iemtkB0Uo1HtwE8+MaEjSjZ29c2UfX3lQZ4x
9LlwTAk3+zcbNhG6dzyp+2bk26Gscl1pQhC5ubk5OTnZ2dnEb+JvYkvxlbnE
KUJ3JzTTgKrUA8E/XZ+jj6G6UzxqWU762wPsALRiGjECZ15+YExrpnYQfDg7
SbjQmauv3LWO+K9ffcdkMe2ThLOJ8wv2j/PWZd479q7umymvJ5NjB6L4QAiC
KEFwJSG2lF6bx9Zlhv7zvJnaQckHgmd4zqKhaKfpl5tuXadGB+wAVMHPDEnx
dI7Y0sV3MdVrgYbPmp7hJ3emZ0onewHn9dEn+wYEumveXKDmvdLo9taJj1nn
sqtWmSk8HbFQ40FE4qcrwwOWaPhunP4mpYCbtOfBL+1Zixl3zl8rUiqDxQtc
EUCnB6y+XbNeF89KdTZl6fV7GiF2iYKc3P+2Phxv499F39u0R/Bk90T/N3Ir
hOuIwCXF4RderJx5Z6Clrz7D27jbLTvHx4dCisXn6+OnfPxjUeRYW39DPVZV
U3L5T82WBV7u9qHVzc3MKckfa30MdduBW3L3WNwMu0AzQ29Ds8ARjo8PhxbL
mkuQE/6jKYZo2B2uZbpXPOPtDH2WwZxUYTLCOR6O3roGD65KpyluSeiBR/Y2
/sYGPpa24Sv/zfgQ+2I4Q8oOgtLo8/HO3wd1N/FmGvr27B88YV7cnivZn4W9
WMvheToT8TZsf0JR0J6YCQP8jUQHXHE4I63eEwxJnNSvZ/+QCfOe7L2ak1F5
10XBj63p7O7L02rO2I6XXnP2pend3hRZ/YAUfSBV8BP/HqSKkC02PJQ7nyOe
5bPcUlvTcOqZ5G+iiAF2ACop+nzOwMsZY6/pfW/fjIeH7e/8qOHljNz8afln
yfjEe77m9kLkhisjZPe06KMz7+/sF7iUcsPV7k2mmB0WYP6bB4Yd3Pjy8jh/
F4S1eXLkr9YPb+xM+Ic4RaeYWPkrKsigOESUqt0/FUpuz7wSZUJj2/yWVZUc
BWlpPw7xodG8LYdHuCyJcZ4c3JXBopvf2/OQJzNHV3sELg570lePpWdya/S0
qCXLYuZOuG1MZ9GYQRvCqgOY4GPG2YOv9u9P3OQYqKfLHrzwxf79r8p/Dnpk
fhIPAjg33vft8UMvt68Lt9ZrsB1K88/ODWTQvC2GRjgvjVk0627fLmwaI2D2
uYKawanQx0UXRTs4Xq21VpybfWTZQ7fjOaJ3Cx7+G7Nw+Zua85/jHP81QUwa
i2kZ6rgwxtUprJeRt+2MSNuaduCFbwkxoLGMeoXNdI1xWxrlOO62GZNlNC1Z
bKElkR0YwdMdbzNNbtvPiV66IGKIOZv46Ab9lC6n9qt2FDgpN/t3WzbNLMoz
S/K2Pr+b04XFGPzskfijU+SBSB4m/Yy9JoIxlt4ukbMH995qY4yIcG1meMrb
pVkBdgCqwDPvpr1+X53R5ia83tH2hrPmg8gcsb0KPxzWuuFi8fSVWKzmZ+an
JFYHYKEdSF6rXNNLhVWyKX+r35hHDvJ8JBAuCLMj1AULvBSuVN6Jk7G+D5tu
EeMrLhWcc3mOL40R/NfjyvPiJdfm+9Ppfg57svPwqltKGGPMYgx4creg5lHL
6ozA/OIHt7LTqhtxBS+PRpjRWCYu76W+bPizv0OZugrVLIlaKBpoB/z5vjBD
ut8P+3Iq77SMm/JugTWbZhJ57r3ksm8hbkwM0XTwUGjG2trgRDwdQGhtUFxQ
5YJ8xS/ezBR1v5WwQ9HHJaYsxtCEKLEFCrjZBU+SxBUtsoMuS69X9LXKIg0v
LW3lAEJxQb9HKZ+1Vuik+Iu9d5g0H8dzJeIn+ORx35jGHrkrr4HTouJpx8ao
IZjxmnA5pQc8239lTx3tLjPOy1wNsNkBdgBqgRvhwHImB92IE0thean71W+4
WD1Llj/ftcgON3cd5Qjfxs261MXLuXPsU1H4KP3vgSvCOuypXOoQ3N90W4/u
t4Rdnezw9LeziLA/4kV8ZZoWvHltzxS2Iz6WSJz8sPW39Gi+c6/I6COkdN1+
3ntnIxZj5IuEmoHk69qBm7mxL1tvYHyUxJ0Kon8P0qN5Tz0jHvsESf8MUiFR
+mx71tAOl4LQdYF0mo/TBY7YLQpitgYzatgh//184iGNeB5X20Jz5XbwHr03
X+y68A+nIgxo7N4bMpVebUOhk5YJUt9MMWTpj3+dVHVWQcnZ6T40ZtiB1w1u
MOBFb+hGJqmMPCR3MdpvC7ADIAuBoLSQX1JQGj3Xx5l860qUeP6Lc3+6rzPi
5T4gxtszN19WMhbaQagAUQrk5d3o4eVi+SxFFFB5N6OXIKz9F5XMpgl7kDBY
Zq4fqqZe/eQRaUyTCC55nlFGNLb1+owal1TiF2NGY3dbmS4dNxS3g4DLLyri
FeakuXdjyxqq8FXtwH+ROIrJ0usdvmJd3Dqxn2X2AXq67IFbssSeADdspQFG
UnW4oFRlngz4hQe/F7YU7EuUuEPR05W0A87xWhRAp7G7fx97wCdPTqAX2YEe
8GOoxEPgxb8YwWAxJyW9Uza+KnTS8iYGPxojdGdlT1rB+zc/GLAMHN40whp8
+KdjY6gkstlP95vB4gyNANgBqALPu59yxTHsFzp7AXJjHqnyp4YdiP3y8+4u
C1upInx1gW7IwQ3vkiQ7aojs4H2cLUpvhB16ern0epFa7gqW0A77LiibfERN
ujSzh57Zon8FJecdiQzf3UNJVSfGkw7dJeLzmL0FNTLJvJhnhFn0Hd9KL8lV
V80SJ+bis8UOIdam3jSa/OZm0dm/ph24oXE96DUbwSt/avix1H9hJxTRdLrR
0KWNuFm/DWTr6t+/lC25+X58P6k+S3hB3uX193oyhVek3+OO6/bURxk1nkt5
u0PI9jjJr9anlOn6LMaQ5/VY/EaBkwopCIi1orMHbs4SXTCecuyePs3H8XxJ
Y2T38y84qJIwhltI81posL6AHYAK8r1jf6LecG4XfHhDUoRX+rM7mS/vZrBH
s2qWHSopfZt5d1P0VgbLmXRjfvvQS74lEu0OiM9x70a0Q3n4pfnOuyqsIBJ8
TJ5myNKflCSW4cPfHC63Q34NO5T3XFfaDnjprbVB+jR2V7vo7Sfe+4VmRD7I
enAv0dGoGdgh5HF3OsvQ5X2hjPfV3PfOCn1R2UFWu4syVNjhweUcyc0PEwbK
6dFa8j7r8v9i7Hv50HRZeuZhW4I4YjdcYYcaIwjw9BRH/cpRBvWi1pOK4GRu
6s+mWz8OLhIWiA5P8KaZRl3JqOfpJMDThWUHzHRdJNgB7NCCEBQFDL7pjAWc
8RdPlvyoaXLtUAG35NXBhz+r3nDWre6J9CXsUMZPTBzLZHWZ+y4Tx9PORhrS
fKaeLhZP+fk3HhrT2NY/y65ZMl/xSamaJcHbpIlMll6/uBDxKpmSD67NwA68
+BcjGSzmqMTndbcl8BN3DqSQKH3/UmDf2g9UcOA7Yc1Sjfr50tux3ejyxjuI
4HKiTsXYGrDoPWIDqxVVXrMUuP6exEPgv0wcw6xXzZJCJy0Hj98ZyqD7L/Ph
8oSDGtjmiz40zlpRvJiNFmSSyrD9jVBL1RwAOwAiuBnn9b3mqUaG54ptLM2+
Yu4lXbMkBS9qGtuZHHS9svfQF7FDmaDwX3tvmknU1cySC04+NOP7Hp8kX3+f
PMWAxRjyLFZGq7TPrIscpVqluRFP+xB54nmp4t8r7qNngxmy7ZC49w5hB0cP
GWepeR8Nb5XmZKzvzaYx7+x5XncY4gQsoqGI1pSLckfCKYgg9McAOs13zmXx
W8Sf/0Pcd612EMJjufqK1/ZXtUpPOiYx+CXHU9hJuc+vyrdKK3TSyjtJTppo
wO666P2jA2FMeoC7f+M0E+CfToxTQzB999CWUXQAOwDl8PO9+92ch93yCK3q
AlSauCVsKVqz3QFPzXwUWiieacdzMi9aeDmrhYemVWz5MnYow98dDzeg+y0+
n+xswjaZ+65mrTJe6uceqEf3m/RPdY/WrPBnY41Zer0f35L1/ait5ffVq3FE
2cH2aURl9Y0gO2vXRD+67HaHstxrUUTJpcfSj3V2HG2UHq0vDtw1prFMxyUE
iR2Fm50f9F/6qxqFhPzrszqgqM6s67llDaP43pN+eizm4CchlQMSuKnvF/eq
2aNV8DHLP6IwX/wbkpe5eSibZhjpkV59e+U9WpkjEqKq8vacvL3jfYQ9Wh8q
nfdW7KRVr3EuzfbVs4ica++tZx0X2kgzWWV4TG6LoJ1dfIrk7VGQ4HP29Jnz
t1/XqtJmA9gBKAdPP3SPcIGz9u3ds2PPuET9r5vPgs7hF+YHu0jagR8atwbz
ctW9/Ydd5OG5MUd+uLex401nhLVxzefiyr2+kB2IEJAy3YhtZRNkqufn4imj
hyqenfHHWF+6cDRc5IKlMfOnBJszWHTTsK13xXfmv/RPPnnyDfFz/I9IKzqL
aRd7VPTvyVNv76ZW7igoPD3dj05jmw2OdFsbt3pRxBBzbyvH+FWjvGXaAc9O
c7dm69J8+k586L4qdtnCB44/porNuoO/u/P2lOgsJ/5+OJAogNhG7zkhOunJ
lFuvBcpdGwG38NqyIAMai2YQMNQ+0nHqXTvbQDMmi2b6yL9m6CkKcjPAEM1x
xxva0VJQ4uN+u2I0nGvMkrn3Bph695xwz0ZyNJyo1MU27BEyftqDxe6xy1wi
hlt602g+w7dk5FXfgNAONP2gsXZ+ZsOiNu1NOn74ufv3AQyat+269HqMzFDs
pNXk+cRY0Nl0Orv/rzImA6gPgqR9w4iSg8nqu3Lb/7lhKw0xEsZ0CwE7gB2+
LfDSV/sfbTfzcSV7LdD23+KQ8PAlnxcSt1pFsuyQkRW8Jmp7j4DlmiwX1GuB
lt/6wVH/ncopEIs8X8oORJ5PWKeky6KbR7PlfN54Qf7NHdH2A/2NmN4mVkET
l71gvZQcKI1zPGZ4y+7wQ/dfdVssoGdnnVgdbmvhw2B4m/W54/zXx6RiQfgv
gUw5k28XPkvdPDvU2tSbwfQxsw62X/8xrfpggoDlfjTZvYy8512rrIpQ+NpE
h+TGez5fNjnE2syHaeDXo3/IBOcn+zxzpWOrIPnf0VoIZuwW1NBurWXc4qC9
MRMG+Bkyfbr2u+u6M+1N3ue1PdjidsCzss9tif5h5G1LE28Gna1vGjh4YvTW
SznZkn1XCTswx79Oysn777cHo3r5GTB9LGzuuR/MSKtXtYxiJxWj+PM6otTD
CP7zUaO0EeDZ7PlMDG034ZT8efjwT0dHU0kobYGfvMJFMwPsAAAtH+6L/Xbt
UIr5iqDGaX/95sEzU53NhOMa4xujzQHP8F5oREZ1vjv6upbDcYPdGCiq5+r/
jcgB7AAArQLBR6+FZlSM7nDyVQtpM20IeOqpCCOat/2RwkZYsoeTcHBcR0zN
0s1Pus+0GPzEnQMomPGqsIaOPPlqgB0AoJXATb7qaqlB7TLz7MtvJkB9EQRp
H5f1YdMtY9g5DT5WUfyRyfoqmr3cWal1lELyLk/VpFj/Xu+RHF8fsAMAAK0C
3uM3q9xiVy67P8rKm0YPcP6vuMWt9dm4gB0AAGgVcO8/H20tbE+3sA1fez5X
Zl8mQAywAwAAACAN2AEAAACQBuwAAAAASAN2AAAAAKQBOwAAAADSgB2+Lpzr
Tu3a6Bhaj56/7WbitzJkEgCAVgjY4evCiz3hNsfB1kADQbDOUzxayPqzAAC0
PMAOTUJ+8HITDKEOPyh/yi4AAICmBOzQNOScs1clka02y5zrEwAAoMkBOzQN
uecnEnbovgnsAABA8wTs0DSAHQAAaN6AHZoGsAMAAM0bsEPTUHx9phaCdprH
Kqh7XwAAgK8P2KFpwDOuz9bDEBXDCb9fuf86o4gH80UCANCsADs0GUWJXn/O
6dcJEz4ORNPpRutekAUAgGYG2KGJwHPv75lmqU1GKO269LOzd9oXBS0QAAA0
I8AOTQMvekM3MkLuMufi6+KmvhYAAABpwA5NQ/4FB1USuevPD6DEAABAswTs
0DRAj1YAAJo3YIemAewAAEDzBuzQNOSeAzsAANCcATs0CUURa7uRSSo2u17B
HK0AADRLwA5fF17sSfd5Pww10UIRtO2I/S/5TX1BAAAAMgE7fF04153aqrVj
WA6b8cv5x7kwQBoAgOYK2AEAAACQBuwAAAAASAN2AAAAAKQBOwAAAADSgB0A
AAAAacAOAAAAgDRgBwAAAECalmgHznWndm10DK1Hz992M7GoKZ8uAADAt0pL
tAMv9oTbHAdbAw0EwTpP8XgPk1UAAAAoS0u0QwX5wctNMIQ6/GAq6AEAAEBJ
WrAdynLO2auSyFabYR5UAAAAZWnJdoA1FAAAAOoL2AEAAACQBuwAAAAASNOS
7VB8faYWgnaaxypoiicLAADwLdOS7YBnXJ+thyEqhhN+v3L/dUYRD5ZTAAAA
UJCWbAeCokSvP+f064QJT4loOt3gfPUHDAAA8E3Sou2A597fM81Sm4xQ2nXp
Z2fvtC8KWiAAAAAUoiXbgRe9oRsZIXeZc/F1cVM8WwAAgG+XlmyH/AsOqiRy
158fQIkBAABASVqyHaBHKwAAQH0BOwAAAADStGg7nAM7AAAA1I8WbIeiiLXd
yCQVm12vYI5WAAAAJWmJduDFnnSf98NQEy0UQduO2P+S35QPGAAA4JukJdqB
c92prVo7huWwGb+cf5wLA6QBAACUpyXaAQAAAGgoYAcAAABAGrADAAAAIA3Y
AQAAAJAG7AAAAABIA3YAAAAApAE7AAAANAdK/Vx00KpAqDrlclFDdms4YAcA
+LoUJZye3VUNURn0d1JDRvELsh9f2jJ3ZHc9bTWqWnuD3varTkZnw+ie5gwv
dpMVmUSi9N8he4iuIO3+5eMHdv+5cd6A9qj8sK/gbg0H7AAAXw/eB7+fbNqL
Mn4NsQOeF7V7nB6FSCBtDPqNnTzVfpBRG4SEaPT5NQIWUW+28BP+7E0RRjiV
wf/U+tHzotZ3Jdcd9hXcrf6AHQDg64DnRu+bZKCCqHSZNnekNtqgsgP/7QVH
i76LTj3KqjhEyfMDYzugiLrd4bcwrVjzhJ+4cwAF0+tm3hZVHXHwXS0fE9gB
7AC0Kviv9g7VQDWt3bzeFXjN0mpwzRKfJ1k7URKwiIYibRyvwUKIzRJB8t4h
VLTDrGP7v1NH1MYc/Si/FhDsAHYAWhmlL9hXonKIoFBydXrD2x1qwovZaEHE
CvuzOY14UKCxEKQetlNFNMafSnv19yAVRGPC6c9y9QB2ADsArZWiyz+oNqjd
QRYFnjO1EcxwZRi3EQ8KNBJ42gmiyEAdfuCdgB+/tRcF0Zp8IUueHsAOYAeg
tVJ4qdHtgH++NFUHxRhLbn2pUAE0ADzj3ERNpKKzEi96gwUZaed4JVfO3mAH
sAPQWml0O+CZvq7GZERj8O7nsJpJMwTPvjy1LULuvumRaJ1K7r01xhiqM8dL
TgczsAPYAWitNLId+CnnptAxtO2w3U9LG+WAQCOT5+nUHsWM19yrqPXj3F7K
wNDOLj6y4zrYoUF20NDQADsA3yqNaQc8L2JTvzYIxph+4S2UG5onhWznTigJ
bW82cFAF/U20iQ16S26VyNof7AB2AForjWcH7utTk4lig9bA3+7nN8aVAV+A
4oBFdFRWqMMMV9yRVdoDO4AdgNZKI9kBzwxc2V0NUTFd4PURhsA1WzjBbvoY
2mHWDXF/41keDpoIZvJjhIwuZmAHsAPQWmkUOxQ/+ceuA4p2Hv/vc06jXRnQ
6HDvrTbGEK0pFyUnwcLTjo9VQ8j/b+/sg5q48zgstmCxgqJ/1H/u5tqpZ1HA
kJA3AiSQxPAWXsJLQK2ttVjPq7X1yrS1OIqIb9jqWdG2J9ereBZbpafVqbRi
72rxpRXFqUpFFKuAJJAXb+Zu5qatc79kyRKSbAgas0v5PPOMA3UTyA/7fbLZ
3RD5xnc/ud0EdUAdwGjFpzrcNdbqfzv1salPLj7ifvXzL537n3kieGyYqOwb
K955j8vYR7jtKjiDy8/plxvb5OOCHo5Z1eKWh19nHcjQRh0AGAKf6kCecz7+
0BjbBVTu75z0n0/nRgSNCRo78TczZroQJSw9hjOXOMNP51dGPRz0iHJHp9sP
8ecrG0XBY4IFlZepswn+e+ngjnfs/LlU/djYMcG8BW9Tn2/f1XiDvrmPm/mD
EVEHKhDkDoODg1EHMOLxpQ53b7+rGkfikLj1uvtW/96T/QjT/z4TiuvxShNX
+PniWn5wUIjM43uy/tSyKubhoBBJVZstD3cNf9GM8/wzHTtlwRFH8X3czC88
oDqQMY46AHDv/O+LRVPHBoWmVOM9VwFLoA4AcJCfW9fFBQeFa//Wg8MKgCVQ
BwC4x13znpxHH5r6zCH8qwas4XHab9te7ZyGd6p3sFUH5wPTqAMAAAQMj9P+
aMOXznUgn95zHegn/6gDAACMIDxO+16TmRSB7DIQyQfkU9QBAABGFd7Hvo8O
WQeXgY86AAAAx+FgHcYwXBCHOgAAQMAIfB2GTAPqAAAArIM6AAAAcAd1AAAA
4A7qAAAAwJ1fUx32fbLfLw8HDkuy7MeOfwUhhLT0fOBIHZy/JRgwsewQQiZR
h9Eslh1CyCTqMJrFskMImUQdRrNYdgghkxyvw5adOyveequiavOaTZvKiRs2
rt6wYdX69avWrVtZua6sYm1ZRcWbaypWlK9Zsbq8cqi3K4cuog4QQiY5Xod5
ixdnzZmrLS7O1BdlFOrTCgpS8/I1urzZuTp1do4qK1uZmZWSkZmcnqFITdcW
FLK+niNL1AFCyCTH66CdMyezuDhDX5ReWJiW70hDTq4jDVpbGtJIGtLkmtQk
tYb19RxZog4QQiY5XofMIpIGfXqBIw25uv40aLOc05A0OzVRrUlQqVlfz5El
6gAhZJLjdRhIgy6PSkNNba3+2WdTMrXJ6ZmKtHR5fxpmJyjVshRVAFbM9H11
Dm/xvtu+bd/XVK5OKG3os1h7P1sumb3hTB+5hwvv6hV/rOuwerlVZabqtYbe
e/oODUdeU2VuOtXnw8aoA4SQSY7XwZ6G/FSnAw1zny/55ODBvLnzbGnQkDRo
6DTEK1Lue0FM5/6x7+tbzHPbH3WwGC421H/dZma+laXruyOHTt7w9m0wa71+
8tDhc91mHzZGHSCETLJVhylTpvhSB4/HoAufebamdk9Wod6WBhWVBiVJg1Se
fL8LYjy+QlVUfdniZZv+OvT4doce68AZUQcIIZMcrwPTMWjdnLlbd+5M1+Ul
KFXxyUqpIkWSpBAnypkfqeHsnjcKlPH8OJFQnl3y7hmD1Xrzm/de1CULhUK+
VJXzyt4LPSc2FyuinoqOTVAkKF+oabWYLtSVPp2ZJJPEChLSlrzf1G27K1KH
XMFzFduWahXxfEFC+pLqf96knuRbfzzx3lKdIk4okaYv2tRwzWRleGWJ3vsg
f6vJL9+9dVGWQsDnCzXPVzX+aB50q4GH0Hf6LW18btXpgV8F2/XZcrF85ZfG
/k+7j5RKEl//vGcYGUIdIIRMslKH8PBwH+vAdAxaW1C4dvNmhVpDuiBVJFNp
EMmSGB/prY8XCnSbvusxW62GjpZvW3ss5h92FMbN29VqIOO6p/1Mc3sv2ayz
bgFPT+87mDvPNhy/1GW+Y/qx8U1N7NO7O8zUbJ8ZnVFx/Jrpjvn2hZqSBOnL
n9203DG1f1wSr3rpk0sGi/na0TK1eOGHbZah66CcGa3bcOy6yWLpPvl2YUza
xtMmz3UwtR4oe7F8f6vTfo2x8XV50qtHDfZPuz9dJk1e/bVxODspqAOEkEky
osmg5mwd1FnZJA0ux6Az8wsqqqqSVLP5EilfJBUlyu1pSBTGJzA+0t6mNRpp
9orar64YHC/Idx1+VS6ds37f6Q4jvdngOjjZd3i5JH1zs4ma7bP0OxxT2thY
JhOXHjFa2z+YH63bfoE6mmBu3pQRu2Bvp3noOtg3s9+V6dyWDP7SA0bPdfBk
34kKjfiVw10kZLfq/yDOWP+teVgvYaEOEEImA1yH0NDQYdVBSdKQobVd7OY4
Bk3SsHrjxiSlmi+WxoolfKJISrpAFEhkXh6pqaPpwzWLUqWS2SUb6r+3nw7U
2/bF+2Xz1BJJ9ktbGtpt43RQHSzX/rVrRUmRNjs3W6dTimPSqpods33R3m7H
3ZKRziv5e6f5TFXG9Cjbq0p2JXx+3NxdV0xD1kGd8KqjAqaWbVrekv3DqMMd
09nNaZKlB25ZOupeiOtvE+oAIfSDVB3IuCZDm4xurtWBvg7adrGb/Rj0stde
T7SlQULSECsS84QSnkgcK5IKJPGkF0M/ZMMPh1Zl8+gn+URzd3Pd8mTBwt3X
rZaugTqYbx1YLJIv2XvxtoVs1ntwmWigDrMKtl9y7DscWxFv23ewXKmZFz3v
g6uWwV/OhzqU3kcdLOaL2/IlJXUtHz4nKSYxsv1H1AFC6AfZqkNERIQvdXC+
DpqkQaa0nbbKl8rsRbCnQUg+IJmw7UHECsWMj9R4+eSptm5bEfou7y4RZm1p
NnWdb2puN9qGfM/57fmC+TVXrRbj56+Ik5Ydumm2Wvvaaopm5b7dYjsKbLi8
b0li9EAdZkZpVh5t671j7j733nPx0uWHb1numNo+WijTvFx3/ib5KmZD29lv
L3Zb/VgH0w+flr9cWd/q8qqX5cpf54ufXqSPL6ntv4ACdYAQ+kGO18H5Omjb
FQ2205OSxYlykgNbGuJEtjQISRrIn2KeQMT4SLsbK/VKAT8uTiJL0i2rPtFp
Nl+rf1Mni+PHiqVSVXHp7uZu25bGM7uWpMpEgsT5O1puNG4pSVVqMnLyCpZu
3b1Wr3XUIT+vsrZ6aUaSmMeXDTpnqanmT0UqIT82mi9NKV57uMOfdbCdsyQd
dM4SpbnjowWxkfwX62/277agDhBCPxj4OowfP973OkiTUwYudiNpkPefniSM
T6C6QKWBFyeeJRDNiOGxvp4jS9QBQsgkGdFkUHO2DunZOTNm8SJjeJHRMU9F
xUyPip4+I+r3kTOnRc54cnrkE9OmUz7+5LTfPTFNEZB30vg1iTpACJkMZB1C
QkLI/Q/rlSX4QMWyQwiZpOtAntKT0U0GeGDqgN8NxwWx7BBCJqlrpal9hwDU
gb4aDnXgglh2CCGTznUgozsAdSA7KRMmTJg0aRLqwLpYdgghk2REk0FNxjUZ
2n6pg3sgqDpQgaDrgOMOXBDLDiFkkjruQNeBSoPHOviYBo91oAJB7zuEhYW5
7Dt8c/JU29V21ldjVHml7erJU6dZ/zYghNyU2ncg4zo0NPQB1YHefaCOSlMX
xLnUwWS2kElFnsrCgNl06jRZdtb/BUIIuSlVB/p0VjLAqTRQdbiHl5W81MHl
Vzw41wFCCCGnJCPaj2/Q6h4IlzrQhx7Cw8NRBwgh5KxkRFMXO3g/JD2sNLjv
PjgfeqB3H1AHCCHkrGRE+/dlJe+7D85nLpEvDSGEkLPSZyv5a8fBeyCcX1+i
roybOHHiJDsRERHkz8mTJ0c4McWJyQAAAO4J51nqPGOpv6U+JhOYDGQyln25
zOGe0+A9EPTZrY86CAsLm2AnfDATAQAA+JVwN8jspYcwGcgPOg1D7kGMs0Nl
gnr7VqoXztVwZwIAAACf8TJO6WE73gF1hpL3N1bySxq8ByLEDt0ICuqaCJpH
AAAA+BXnGesyfqkuBCYNY5ivgKB3IqjvJMTBOAAAAAGBHrz0EPZyWbTf68AU
CLoRdCaYCAEAAHDfeJ+09ECmT1590GnwHgjnRgAAAGAReiwHLA1MgXBuBAAA
ANahh3PA0uAlEC6wvTYAADBaYJrDAU6DeyC8NAIAAEDgcRnRAUuDx0CgFwAA
wArep3GA0+BLIAAAALALK2lAIAAAgMuwmAYattcAAADAAGw3wRtsrw0AAIwW
2J73AAAAAAAAAAAAAAAAAAAAAAAAwLD5P4SpCi0NCmVuZHN0cmVhbQ0KZW5k
b2JqDQoxMTggMCBvYmoNCjw8L1R5cGUvWE9iamVjdC9TdWJ0eXBlL0ltYWdl
L1dpZHRoIDUyMi9IZWlnaHQgNTAyL0NvbG9yU3BhY2UvRGV2aWNlR3JheS9N
YXR0ZVsgMCAwIDBdIC9CaXRzUGVyQ29tcG9uZW50IDgvSW50ZXJwb2xhdGUg
ZmFsc2UvRmlsdGVyL0ZsYXRlRGVjb2RlL0xlbmd0aCAyNTMyPj4NCnN0cmVh
bQ0KeJzt3GtPk2sahmFUoJRtKQVkIwKFUaGAuhxEkMSJy3Eh4P//N2vaXmyK
sumspGloj+O7yZPcZ+6Xp6/twMAtntDTbpv57bp9UjpLCYQSCCUQ/6SEp/SM
f1BCSwPP6BktPbQdwnUDg/SM6x7aTaFewlUBQ/SMqyLaLOHJRQhDQ8P0nGYP
jRTaaKEeQj2Dxr8qFEboKYVCs4bBwTa2QmMj1DtoNlAsjjaN8ehlksVis4d6
Cw9vhYQwUmyMf3x8gp4yPt6sYiQpPLwRCsWx8YnJqalSabqpzKOXSZZKpanJ
iYmxYuGhrXCxEcYmS9PlmZlKZXZ27sI8j9blDGdnK5XKTHm6NDlevH8r5NYw
XBwvlStz888XFpeWr7zg0bqe4tLiwvP5uUq5dJnCHS1cboRSZX5xeeXl6tp6
tbqxsUlP2NioVqtrqy9XXiw9r5Tu2wrXG6GysLK++er11nattrO7u3flLY/Q
5fR2d3d2attbb15trq8sVu7bCtcbYXHt1fbeuw/7Hw8+HR7Vfb5wzCOU2TXm
eHj46WD/w/u92uu1xbu3QutGWNt+f3D85eu373+dnJ7Vndf95NFqzK8xx9Mf
J9+/ff1yfPDH9trdW6F1I2z/TY/bvn0r5CV0fSPUr4/l+ZVX77t9Tjrt/auV
+fLk2Mhw3kFc1nBVwsWz4aDb56TTDmrrrc+H1hLqIQwVRiem55Y39467fU46
7Xhvc3luemK0cLkUbpRQfzhMNB8OX7p9Tjrty6+Ph9Z7Q/NT5vLzl28+fO32
Oem0Pz+8WV2YmRprvItq+d8K1yVMzSysbu1/6/Y56bRv+1v3l9C8Q3783u1z
0mnfP17cIy//ULilhPXawUm3z0mnnVxeHm4rYbjQuEQuVWuflNDzTj7VqkuV
0vXl4fYSfnT7nHTaj8Od+0oYnZieXa7uHJ52+5x02unRbnV5dloJfe/swRLm
ljd2j866fU467exob+PGh4xK6FPtlLC5p4Ted/75lxcPSuhT7ZXw+bzb56TT
fiqBpjZL+Nntc9JpSiCUQCiBUAKhBEIJhBIIJRBKIJRAKIG4rYQnV9+PVUL/
+K2E6x/vV0JfUQKhBOLOEho/3q6EPtJawo0UlNBn7ithSAl95KqEq6/NK6E/
3V/CiBL6xmUJY0roc0oglEA8UELjR/heKKEfNEp4MV9WQt9TAvHz+K0S+FsJ
XFIC0VYJb4+V0POUQCiBUAKhBEIJhBIIJRBKIJRAKIFQAqEEQgmEEgglEEog
lEAogVACoQRCCYQSCCUQSiCUQCiBUAKhBEIJhBIIJRBKIJRAKIFQAqEEQgmE
EgglEEoglEAogVACoQRCCYQSCCUQSiCUQCiBUAKhBEIJhBIIJRBKIJRAKIFQ
AqEEQgmEEgglEEoglEAogVACoQRCCYQSCCUQSiCUQCiBUAKhBEIJhBIIJRBK
IJRAKIFQAqEEQgmEEgglEEoglEAogVACoQRCCYQSCCUQSiCUQCiBUAKhBEIJ
hBIIJRBKIJRAKIFQAqEEQgmEEgglEEoglEAogVACoQRCCYQSCCUQSiCUQCiB
UAKhBEIJhBIIJRBKIJRAKIFQAqEEQgmEEgglEEoglEAogVACoQRCCYQSCCUQ
SiCUQCiBUAKhBEIJhBIIJRBKIJRAKIFQAqEEQgmEEgglEEoglEAogVACoQRC
CYQSCCUQSiCUQCiBUAKhBEIJhBIIJRBKIJRAKIFQAqEEQgmEEgglEEoglEAo
gVACoQRCCYQSCCUQSiCUQCiBUAKhBEIJhBIIJRBKIJRAKIFQAqEEQgmEEggl
EEoglEAogVACoQRCCYQSCCUQSiCUQCiBUAKhBEIJhBIIJRBKIJRAKIFQAqEE
QgmEEgglEEoglEAogVACoQRCCYQSCCUQSiCUQCiBUAKhBEIJhBIIJRBKIJRA
KIFQAqEEQgmEEgglEEoglEAogVACoQRCCYQSCCUQSiCUQCiBUAKhBEIJhBII
JRBKIJRAKIFQAqEEQgmEEgglEEoglEAogVACoQRCCYQSCCUQSiCUQCiBUAKh
BEIJhBIIJRBKIJRAKIFQAqEEQgmEEgglEEoglEAogVACoQRCCYQSCCUQSiCU
QCiBUAKhBEIJhBIIJRBKIJRAKIFQAqEEQgmEEgglEEoglEAogVACoQRCCYQS
CCUQSiCUQCiBUAKhBEIJhBIIJRBKIJRAKIFQAqEEQgmEEgglEEoglEAogVAC
oQRCCYQSCCUQSiCUQLRVwt5nJfQ8JRBKIJRAKIH4+XlPCfz9YAmjE9Nzy0ro
B40SluemldD3lEAogbi/hIIS+sZlCaNK6HP3lTCohD5yVUJheFAJ/ezOEhop
KKGPtJZwIwQl9BklEEoglEAogbithIGBASX0nd9KGGhSQt9RAqEEQgmEEggl
EEoglEAogWizhPNun5NOUwLRXglHSuh550qgqZ0SNvaOzrp9Tjrt/GhvQwm0
U8Ls8sauEnrfWaOEWSXwQAnF8dLscnXn8LTb56TTzo52q8uzJSX0vdP7Shga
rpdQWarWPv3o9jnptB+HO9WlSmm8eH8JJ90+J5128ql2XwkjY6XK4nrtQAk9
7+Sgtr7YKOHyS/O3lLC2/fF7t89Jp33/uL12ewlPng4O1kuYmllY3dr/1u1z
0mnf9rdWF2ammj+u8/TJLSVMlp+/fP3ha7fPSad9/fDmzhLqj4fC6ER5fuXV
uy/dPied9uXdq5X58mS9hIsvw/1WQv6DQrfPSacd//q1yIGBG58tNa6RC2vb
B90+J512cP0H49OWDq5KaP5y88q/3nX7nHTa+8bDYeLq4TAw0NrC0+Y9snl7
6PY56bT6zeF6JQwM3CyhkULh4vnw/uD4y9dv309+nJ7VnZ//5FE7P2/M8fTH
yV///fM/xwd/XDwbCr8+G25uhcanS69re+8/7H88ODw6OvrcdMyjlQnWR3n4
6WD/33+8rb2+CKH+bPi9g+ZWeHa5FVaqm6/fbG3Xdnb3Lrzl0bqc4e5Orba9
9XqzutISwu0lXG2F+cUXK6tr69VqdWNjk56wsVEf5/ra6sqLpectIdxVwsVW
KFfm5hcWl5aWm17w6GWSS0uLC8/nZ8stLyFvKaH1TdRkabpcqZudnaub59Fr
zHF2tjHTmXJp8te30XdvhbHxialS3XRdmZ7QmGVjplMTE2P3b4QbW6E4NjY+
PkHPGR8fGxsduX8jtG6F4cLISLE4OjpGTxkdLRZH6h08tBFat8LwcKFuhJ7S
mGl9tEMPbYSWrTA41IiBHjQ0NNjGRrjaCvUWGoboKZnqszY2wtVWqLfQMEhP
yVSftrURrluIZ/SMy5m220FKuPiJd3rK9WTbK6G1BXpRux0oode1X4Iaetf/
V4ESepcSiDsH/j9yMa0tDQplbmRzdHJlYW0NCmVuZG9iag0KMTE5IDAgb2Jq
DQo8PC9UeXBlL1BhZ2UvUGFyZW50IDIgMCBSL1Jlc291cmNlczw8L0V4dEdT
dGF0ZTw8L0dTNSA1IDAgUi9HUzEwIDEwIDAgUj4+L1hPYmplY3Q8PC9JbWFn
ZTE5IDE5IDAgUi9JbWFnZTEyMSAxMjEgMCBSL0ltYWdlMTIzIDEyMyAwIFI+
Pi9Gb250PDwvRjEgOCAwIFIvRjIgMTUgMCBSPj4vUHJvY1NldFsvUERGL1Rl
eHQvSW1hZ2VCL0ltYWdlQy9JbWFnZUldID4+L01lZGlhQm94WyAwIDAgOTYw
IDU0MF0gL0NvbnRlbnRzIDEyMCAwIFIvR3JvdXA8PC9UeXBlL0dyb3VwL1Mv
VHJhbnNwYXJlbmN5L0NTL0RldmljZVJHQj4+L1RhYnMvUy9TdHJ1Y3RQYXJl
bnRzIDMxPj4NCmVuZG9iag0KMTIwIDAgb2JqDQo8PC9GaWx0ZXIvRmxhdGVE
ZWNvZGUvTGVuZ3RoIDQ3Mj4+DQpzdHJlYW0NCnicpVPbbtQwEH23lH+YR7tS
HI8d36SqErtbqiL6AJuqIMRDVO2mFd20LIuAT+Iv8TiB3fTyxMtkPBefMyfj
6tV2d7tur3cwu5jD14IpUFIphVorD9EpsLWC7apgV0fQF6w6W1rovqU6qYIz
qRiRTIBt969ZOVTGTrrXRwV7VzA4TSjVY8xgvPQW0EttwTuZXEuBPWwOptvH
xKThepNonW/aboURFvfwFwaq5UPbw/FxdTE/X4Cq3rZ9B3zVl5dLcXICs8Uw
cGaMtVGE8HTiWZOuf40QpU+QzbpgODCBWkeZREItY6LRbGj+LkuEatAIzgr2
if8WpdEcRB34XBjk9wIjfyDzK2Uc3wrt+K0oPe8oeENmJ0odUk+JAbmmiCKz
9yilLP8g0Kih+Y5M9noq+Ck+Q/OmYKfNXvlHkuB/SaKhDmn+qSbWS5d+TEyf
kCVBkgQHIZo81E1ibnibfExMyf+SfZrI84/ChqQQhb8/M8F0d5C24AcRDsFl
Bu8TELM1xbVXQARqlPVwuivY8qUdtBipyTiosQajzHQBS4oSwJiJxozlB+un
8XD/nkI4WlejImAYur08xBijGYUy+/pDDPMyxrNv0kcNLr8WE8DqEZHeY77h
D1nk2MYNCmVuZHN0cmVhbQ0KZW5kb2JqDQoxMjEgMCBvYmoNCjw8L1R5cGUv
WE9iamVjdC9TdWJ0eXBlL0ltYWdlL1dpZHRoIDkyMi9IZWlnaHQgNjc2L0Nv
bG9yU3BhY2UvRGV2aWNlUkdCL0JpdHNQZXJDb21wb25lbnQgOC9JbnRlcnBv
bGF0ZSBmYWxzZS9TTWFzayAxMjIgMCBSL0ZpbHRlci9GbGF0ZURlY29kZS9M
ZW5ndGggMTAxMDI+Pg0Kc3RyZWFtDQp4nOzdvW9b174mYIsS9bFB0JIomubd
l6Tgj8SFKxW3sXoB7gxMYagcQHApTGPA7cjNFAIG40K4zQWcJsWZws0pMkUM
nCbNQeY0aQI4TYrT5I+Ydcx7ObyiRPFjc6+9yefBixRGEm8uMsir5R/XuncP
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAACA/yRZq4TEfgoAAJhFqLJn+83YTwEAADO6SnvHSS32
UwAAwCzeNdvfdR51q5uxHwQAAKZ2utsIbfay3TFACwBA6ZzU6qHNhpw3WrGf
BQAApvNsa7vfZkNCs439OAAAMJ1BmzVACwBA6Vy2O4M2a4AWAIBy6R9rMIgB
WgAASuRVfW+4zRqgBQCgRI6T2rU2G/Jsazv2cwEAwN2GjzUY5CrtGaAFAKAU
RttsyLtmO/ZzAQDA3S5a6Y2F9lV9L/ajAQDAHc4brRvbrAFaAACKb/RYAwO0
AACUxdFOclubNUALAEDBdaubY9psyOluI/YzAgDArca32ZCjnST2MwIAwM1u
O9ZgeID2YH0j9mMCAMANzvabd27PhsYb+zEBAOAGY441MEALAEDB3Xi/rQFa
AABK4WB9Y8I2a4AWAIACmrDNGqAFAKCA3jXbkxfas/1m7OcFAID/73S3MXmb
DTlOarEfGQAA/t1JrT5Vm71Ke93qZuynBgCAf5j8WIPhAdpkrRL7wQEA4F7o
pdO2WQO0AAAUx1Xam6HQGqAFAKAIpjrWwAAtAACFMu2xBgZoAQAojuOkNlub
NUALAEB0MxxrMJyTWj32KwAAYKXN02ZDDNACABDRZbszT5sN/7gBWgAAYpnt
WIPhnDdasV8EAAAr6lV9b842a4AWAIBY5jnWwAAtAABxhRaaSZs1QAsAQBSZ
tFkDtAAARHHRSrMqtK/qe7FfDQAAq+W80cqqzYY829qO/YIAAFghmRxrMMhV
2jNACwBAbo52kgzbbMi7Zjv2awIAYFVkdayBAVoAAKLIvM0aoAUAIDfz329r
gBYAgFjO9puL2J41QAsAQA6yPdZgOKe7jdgvDgCAJfdsa3tBbTbkaCeJ/foA
AFhmB+sbi2uzV2kv/Ptjv0QAAJbZ4tpsyEUrjf36AABYZos41sAALQAA+Qht
c6Ft1gAtAACLc1KrL7rNGqAFAGBBFnqsgQFaAAAWKlmr5NBmQ872m7FfKwAA
S+gq7eVTaI+TWuzXCgDAsln0sQaDhNrcrW7GfrkAACyVHI41GOSilSZrldiv
GACA5XGc1HJrs98ZoAUAIFP5HGswHAO0AABkKOc2a4AWAIAMXbY7ORdaA7QA
AGQlt2MNhmOAFgCATLyq7+XfZkNOavXYLx0AgNI72kmitNkQA7QAAMwpVMpY
bfay3TFACwDAnGK12ZDzRiv2qwcAoNwuWmnEQmuAFgCAeZw3WhHb7HcGaAEA
mEOsYw0GMUALAMDMIh5rMIgBWgAAZnOwvhG9zYa8qu/FXgkAAEopepXt59nW
duyVAACgfKLcbzuaq7RngBYAgGmd7TejV9l+Qq+OvRgAAJRM9GMNhmOAFgCA
qTzb2o5eYodjgBYAgMkV5FiDQQzQAgAwlVAgo5fY4RigBQBgcgU51mA4p7uN
2KsCAEA5hOoYvb6O5mgnib0wAACUwEmtHr27juYq7R2sb8ReGwAAiq5oxxoM
ctFKY68NAABFl6xVohfX22KAFgCAOxXtWIPhGKAFAGC8Ah5rMIgBWgAAxivU
/bajMUALAMAYx0ktemUdn7P9ZuxFAgCgoAp7rMFwQuWOvU4AABRU9LJ6Z67S
Xre6GXudAAAoost2J3pfvTMXrTRZq8ReKgAACqfIxxoMxwAtAACjCn6swXAM
0AIAcM3RThK9pk4YA7QAAFwT+mH0mjp5DNACAHBN9I46Vc4brdgLBgBAgVy0
0ugddaqc1Oqx1wwAgKI4b7SiF9RpY4AWAIC+Eh1rMMhlu2OAFgCAe6U61mA4
BmgBAAgO1jeiV9PZYoAWAIB7ZTvWYDgGaAEAKMv9tqMxQAsAwNl+M3ovnTmh
isdePwAAYirjsQbDCc8fewkBAIjm2dZ29EY6Z8JLiL2KAADEkaxVotfROXOV
9gzQAgCsrNAGozfSOWOAFgBgZZX3WIPhGKAFAFhNp7uN6F00kxigBQBYQSe1
evQimkkM0AIArKAlONZgkItWGns5AQDI1RIcazCc091G7BUFACBXl+1O9Baa
YY52ktgrCgBAfpbjWINBrtLewfpG7EUFACAnZb/fdjQGaAEAVsdxUovePzOP
AVoAgBWxTMcaDMcALQDAiojePBcRA7QAACtiyY41GOSilbpSAQBg6Z03WtGb
54Jytt+MvboAACzW8h1rMJzjpBZ7gQEAWKCjnSR651xcrtJet7oZe40BAFiU
UPaid86FxgAtAMByi144Fx0DtAAAS+yilUYvnIuOAVoAgGW1xMcaDGKAFgBg
WS33sQaDGKAFAFhKy3q/7WjOG63Yiw0AQMYO1jei98zcclKrx15vAAAyFr1k
5hkDtAAAS+Zdsx29ZOaWy3bHAC0AwDI5229GL5l5xgAtAMAyWZFjDYZjgBYA
YGmszrEGwzFACwCwHJK1SvRumX8M0AIALI2rtBe9Xuafd8127IUHACADK3Ws
wXBe1fdirz0AAPM63W1EL5ax8mxrO/byAwAwl5NaPXqrjJWrtGeAFgCg1Fbz
WINBDNACAJTaah5rMBwDtAAApXbZ7kSvlHFjgBYAoLxW9liDQQzQAgCU1wre
bzuai1Ya+30AAGAWx0ktepksQk53G7HfCgrnaCexbw8ABbfixxoMJ1SX2O8G
xRL+67hopQotABRc9BpZkFylvYP1jdjvBsUSPhUKLQAUnGMNBjFAyzVn+83+
B0OhBYDCOm+0otfI4sQA7YSeb26FxH6KhTvaSQY/6Si0AFBMjjW4FgO017zY
Tl4mtbe7B+/3HnxqdX5OH/1x+OxL5+kqtNl7X4cNFFoAKLLB7pP0s7IDtPVK
JRTX17X7obh+bKahuIbKGorraFanyt77j2EDhRYACqtb3YxeIIuWpS8tnY1q
KK5v6nuhuIbW+rl9eGNrvTHhbw7/eOxXkJ9rP+4t/WcDAMooenssYM72m7Hf
lmyE1hpybU5g5oQqW6+sVpcL3XXVftgBgNIJ/3eO3h4LmOOkFvudmcLwnMCH
xsMxcwKq7LRGvymp0AJAoQxPBsogV2mvW92M/ebc4NqcQEi2rfXGfGymq1ll
791yZZ5CCwDF4ViD2xK9sWQ7JzBzPjQeRlyE6EaHDQry8QAA+txvOyb5DNDm
MCegys7jtmOZFVoAKIKD9Y3opbHIyXaANsqcwMx5v/cgw9deXie1+m0fD4UW
AIogemMscmYeoC3InMDMeV27n/knraTG/8Sn0AJAdO+a7eilscgZX1eKPCeg
ymZl/NEfCi0AxOVYgztz3mjdK9ucgCqboTHDBgotAER35/+pVzB/7j4J+an3
9K+9p7/2vv398NvoJTOHrNSttVOZZLxcoQWAWFb5WIPvvxbXH78W17/1vgnF
9e+xK6UqW0yT3DOi0AJAFLedqLlk+VPncSiuf+k+DcX1l6/FNXqBLE5U2TtN
eDKzQgsAUVylvehtM8N86j4enhP4TXEdm8/tw85GNfZnsOi61c0JP34KLQDk
r6THGvTnBH4wJzBflV3ZW2unddnuKLQAUEynu43o1XR8zAmostFN9Z+JQgsA
eSrUsQbmBPLJx2aqyk5l8mEDhRYAchblWANzAhHzofEw9oeulCYfNlBoASBn
Cy2u5gQKFVV2ZjPM5Ci0AJCPaTedbos5gYLn/d6D2J+1EjvaSWb4j0KhBYAc
THusgTmBMsattfOb7Tg7hRYAFm3M4fDmBJYjqmwmzvabs/2xhUILAAt1nNQG
3dWcwPJFlc3KbMMGCi0ALFq3uvmu2Q65bHdCoe2PEPzS+0ahLXu+dJ6+2E5i
f76Wyjx35ym0AJCz0HKfbW2HOvS6dv/t7sGnVie0o+gNTSZMeLOeb27F/hAt
m/NGa+Y2q9ACQBHUK5XQb9/U9z40HoZ+G72zyY1RZRdkMJaj0ALA0git6WVS
e7t78LGZ/pw+il7k5HP7UJVdkFBE52yzCi0AFF9/OOH93gPDCVGqrFtrF2rO
YQOFFgBKpz+c8Hb3wHCCKrsE5h82UGgBoOwMJywi4ScFVTYHmQwbKLQAsGQM
J8yZD42Hsd/DFTLt9XkKLQCsmuHhhM/tw+hdseBRZXN2Uqtn1WYVWgBYEYPh
hE+tjuEEVTaug/WNDNusQgsAq6l/7O2KDye4tTaW0D8VWgAgQ52N6qoNJ6iy
EWU7bKDQAgCjlns4QZWNK/NhA4UWALjTcgwnhCcPLyT2WpL9sIFCCwBMZTCc
8LGZlmU4IVRZt9YWxOluYxFtVqEFAGYWiuLr2v3CDieosoXSrW4uqM0qtABA
JvrH3g6GE+JW2c/tQ1W2aC7bnaUstJ2NavjYh79G+d0BgMWJNZwQfi+31hbQ
4oYNohTal0kt/ODW/1MJ5xgDwIrIYThBlS2shQ4b5FNowwf4TX3v2h89hI/c
4n5HAKDIMh9OCP8SVbbIrtJe6Qpt+ES9TGofGg9v/PnrS+epjxwAMNDZqPaP
vZ1hOMGf9hbf2X5z0W02q0L7fHMrfA7Hfwh90xAAuNOL7WQwnDDm2FtVthSO
dpIc2uzMhbZeqYQPW/gsTXjAsls5AIBpDYYTQuUYDCeosiWSw7DBtIU2fKLe
7z2Y9s8Cwj+y6LUCAFaBqcVyyWfY4M5C29movq7d/9hMZ7vnLvwklfO6AQBQ
BLkNG/Rz2e50q5uD371/rNac58U5NwMAYJXl2WZDPqaH/2238bGZzn9ohm9+
AQBw3mgtusF+33n0Q/fJX3tPfz/8NpMSO8jLpBZ7/QAAiOk4qS2oxH7qPv5L
9+mvvYwb7CBv6nuxFw8AgMiStUq227A/dp/8rfdN5tuw1+LoDAAA+uYfNvjU
ffxT7+lvC9uGvRbf/AIAYGC2YYM/dR73t2H/nkuDHcT1tQAADJtq2ODPX7/P
lds27GgcYgAAwDUXrfTObdhfct+GHY3rawEAGHVSq4+W2AUdqzVzfPMLAIAb
HaxvDB+r9Uvvm+jd9VpcXwsAwBhn+83/+SD9t9Y//4/Gw7e7ByEfm2nokNcS
pcr+nD7yzS8AABYh9MwX28m1vK7d71fi4cxWj11fCwBAiVyrx52NauwnAgAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAFuJgfeM4qYW/xn4QAACYxWW7813nUfjr6W7jaCdJ1iqxnwgAACb1qr4X
2uxw3jXb4RefbW3HfjQAALhDsla5SnvXCm0/4dfPG62TWt0oAgAAhTW6PTua
y3bnbL95nNSMIgAAUChjtmdvzEUr7Q/Zxn5wAAD4h0m2Z2/Mu2b7pFbvVjdj
vwIAAFbXtNuztw3ZOu8LAIAoZt6evXHI1nlfAADkaf7t2duGbJ33BQBADjLc
nr1tFMGQLQAAC7Kg7dkbRxGc9wUAQOZOdxs5tNlrowjO+wIAIBMH6xs5t9nh
UQRbtQAAzOlsvxmr0L6q78V+9QAAlJvt2ZVl8QGA5WB7djWdN1ph/XVaAKDs
bM+upv4RbeEtOE5qsZ8FAGAupdiefZnUvnSehnxspq9r9zsb1YWuydI72kkG
78K7ZtvJwABAeRV8e7ZeqYQG+8fhs2v5OX30ofEwtNzwN+SzUMtk9E0/3W3Y
KgcASqqw27MvtpMvnaejVfZaPrcP3+89CH9zbiu2BEavzwi/clKrx34uAICp
FXB7tl6phIJ6Z48dzadW50197/nmVv7LWC7vmu0b35GLVvpsazv20wEATCfi
9uzoF5FebCc/p49mqLLD6Q/ZhmZryPZG4y+DC5+H8DNO7GcEAJhUt7oZq81e
tjuDx5h5S3Z8+kO2r2v3DdkOhB8i7tw2d4oaAFAit/3Rc27bs5lsyU44ZPty
5U+mera1PeHPGgYPAIBSmLDeLCL/q91ZxJbsJEO2b3cPVnbIdvI36LzRMngA
ABRflO3ZT93Hvx9+m3+VHc5qDtletNKp3inXhwEABZf/9uxPvbsP4Mo5qzNk
O8NX/y7bnaMdJ6EBAMWV2/bsp+7j33qRt2TvzGDIdimbbf9+2xkSPiQGDwCA
Yspne7aAW7J3pj9ku0x3NMz5Xrs+DAAopoVuz5ZiS3Z8vnSehlob+13KQOii
c76bV2lv9LhgAIC4Frc9W8Yt2dG833sQ+y3KzGW7M//bGn78cYoXAFAomW/P
LsGW7B9fvyC2TJMG9zJ9o8/2mwYPAICCyHZ79i/dJdmSXb7vgs38RbAbc5X2
Tmr12K8JAOAfMvkz6D91Hv9qS7bAjnaSbDfhQy5aqcEDACC646Q2/5bs32MX
UVuy43Wrm5m32X5cHwYARDfz9qwt2RJZUJv97uvgwav6XuzXBwCsrtm2Z23J
lsui78sIPxMZPAAAYplqe3Y5tmS/dJ6+XKUzVE93Gwtts/24PgwAiGLy7dnl
2JL92ExXZEt24KRWz6HN9vOqvucULwAgZ3duz37fefRL75voRdSW7Gzyuct4
kPBxOtpZ/mlkAKA4xm/P/tB9Yku27PJss/28a7a71c3YrxsAWBUXrdSW7BK7
8f3NIae7DYMHAEA+DtY3Tmr180brKu3Zkl0y4W2N0ma/+3qK1/HK/zQBAOTs
2db2292DT61O9DpqSzYT2d5vO0NcHwYARJGsVUInfL/34HP7MHpBnTyhh3c2
qrEXr0By/iLYbTnbbxo8AABiebi+8bp2/0Pj4c/po+h9dcyW7Bu3U404WN+I
XmW/+4/Bg5NaPfZ6AACr7tvqViiNH5tpaI/RG6wt2Un0x6ELEteHAQDF8S9b
O9GHbG3J3mnR99vOkPNGy/VhAEBx1CtxhmxtyU4i+hfBbsxV2nvlxxAAoHhC
vcxhyNaW7OQmv8I4/xg8AACK7PnmQoZsP7cPbclOrlvdjN5ax+R0txF7hQAA
7vZiO3m7ezD/KEL4l8R+KeUTvbKOybtmO/byAABMYTBkO+0oQmjCzze3Yj9+
KRXwi2CDXKW92MsDADCjwZDtnaMItmTncbbfjN5ax8T5BgDAEhgM2dqSzdxJ
rR69so7J0U4Se4UAALL0Yjt5v/fgU6tjSzYTBbnf9rY4qgsAgDGStUr0yjom
541W7BUCAKDQLtud6K31toRni708AAAU2nmjFb21jkmyVom9QgAAFFcx77cd
xI1gAACMcbSTRK+sY3JSq8deIQAAiutgfSN6ZR2Ts/1m7BUCAKDQrtJe9NZ6
W9xvCwDAeEW+3zYk9vIAAFBop7uN6JV1TLrVzdgrBABAcR0nteiVdUzC48Ve
IQAAisv9tgAAlFr0yjomvggGAMB4F600emu9LVdpL/byAABQaGf7zeitdUwO
1jdirxAAAMXlflsAAMrLF8EAACivZK0SvbKOyXmjFXuFAAAotMt2J3prvS0X
rTT28gAAUGjutwUAoLx8EQwAgPI62kmiV9YxOanVY68QAADF1a1uRq+sY3K6
24i9QgAAFFr0yjom7rcFAGA8XwQDAKC8DtY3ilxou9XN2CsEAEDRPdvaLubZ
s0c7Sey1AQCgHF7V967SXvQGOxz32wIAMLmD9Y2z/Wb0EjuIL4IBADCtf9na
+T/tw98Pv/219+0vvW9+6j0N+XP3Scj3+bbZy3Yn9mIAAFBK/7W+96Xz9I/D
Z6P5rfePovu3r0X3L91/L7oLKrTJWiX2SgAAUEr1SuX93oMbC+1tybzout8W
AIB5fFvd+tTqTNVpxxTdv36dW/jxa8v91H18Z5v1RTAAAOb3X2r1n9NH83fa
G/Pr7UX3bL8Z+6UDALAM6pXK292DBRXa2/J/O08+tTrh9w15mdRebCedjWrs
lQAAoKxCmfzfWQwezJkvnaeh5Sq6AADMIFTHxQ0eZFt0w6OG1CvORgAA4D8J
XfG2U7yKmdDAQ8v92EwVXQAAgofrGx8aD6PX1AUV3dirCwBAHkLx+9w+jN5I
F5Tw0kLRDaU9tNw39T1FFwBgKb2u3S/X4IGiCwDAsBmuD1vW9L+JFlYjFN3Q
80PLfb65Ffv9AQDgbqG2ZXJ92LJmuOj6DhoAQDG9TGqFPcUrej4209e1+6os
AECRRbk+rMhRYgEASqezUQ0tLnqTVGIBAJhZka8PU2IBAJhE6a4PmyGf24dK
LADAsgo1bzmuDxstsW/qe52NauwFBgBg4Zbm+jAlFgBgZZX3+jAlFgCAe2W7
PkyJBQBgVMGvD1NiAQC40+va/UKd4qXEAgAwlSJcH6bEAgAwj9Ak8x88UGIB
AMhQPteHKbEAACzOgq4PU2IBAMhH6JxZXR+mxAIAEMU814cpsQAAFEEopZMP
HiixAAAUzZ3Xh/2cPlJiAQAostHrw0KJDS03/HrsRwMAgIm8rt0PnVaJBQAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACWVbJWif0IAAAwo9Pd
Rre6GfspAABgFkc7yVXaU2gBACijZK3yXeeRQgsAQEmdN1oKLQAAJXWc1EKb
VWgBACij/rCBQgsAQEn1hw0UWgAAymgwbKDQAgBQOgfrG8NtVqEFAKBcLlqp
QgsAQEmd1OrX2qxCCwBAWYwOGyi0AACUyOiwgUILAEBZ3DhsoNACAFAKoa/e
1mYVWgAAiu+y3VFoAQAoqdPdxpg2q9ACAFBk44cNFFoAAApu/LDBIMdJLfaT
AgAsg1f1vdiPsFTuHDZQaAEAMnS23wyJ/RTL42gnmbDNKrQAAPPrty+FNkNX
aU+hBQDITb99KbRZCSs5eZtVaAEA5jRoXwptJqYaNlBoAQDmFKrUoFYptJmY
athAoQUAmEeyVhmuVQrt/KYdNlBoAQDmcd5oKbQZGt7uVmgBABZttH0ptPO4
tt2t0AIALNSN7Uuhnce17W6FFgBgoW5sXwrtzGYeNlBoAQBmcFKr31irFNrZ
zDNskG2hfb659Xb34HP78KWGDAAsr4P1jdtqlUI7m3mGDeYstJ2N6uva/Y/N
9Evn6R+Hz0Le7z3I9tUBABTNRStVaDN023b34grti+0ktNbP7cN+gx0k1NrF
vUwAgIIY374U2mmN2e7OsNB2Nqpv6nvD27DXEsptvVLJ7VUDAMRyZ/tSaKc1
Zrt7zkL7Mqm933vwc/roxgY7SKi4zze3orx2AID83dm+FNqpZDJsMCi0oZe+
qe99anXGN9jh+OYXALBSTncbd9YqhXZy8w8bfN959EP3yd963/x++O3kJbaf
UH1jLwAAQK661c1JKpZCO7nZhg0+dR//1Hv6a2/qBjvIh8bD2C8dACCCy3ZH
oc3QJNvdg23YH79uw/591gbrm18AAJO3L4V2Endud/+5++Sn3tPf5tiGHf3m
lyoLAKysCYcNFNrJjW53/6nz+Mfuk1+y2IYdjUMMAIAVN+GwgUI7ocF29w/d
J3/NdBt2NK9r92O/XACAyEJBneorSwrteN3q5n9/8E//1vrnf23+06dW51ru
PDN28ri+FgAgONpJpv0OvkKbreebWy+2k2t5u3twLaG+DlqxQwwAAAau0p5C
CwBASU07bKDQAgBQHDMMGyi0AAAUxwzDBgotAAAFcd5ozdZmFVoAAKI7Tmoz
t1mFFgCAuJK1yjxtVqEFACCueYYNFFoAAOKac9hAoQUAIKL5hw0UWgDg/7V3
h75tnWscgFXHid0jy4lru65nHTtK6y4gqDTllXJRWVR6VQVWI5UKLkppdEGl
W5yRgpKQgV2wSiMjUzVSMikjAyP7I+6368myjhPHduxzjpPn0QvWaao/n5Ff
3rzn/SBDx62OQAsAwIp6VqkuJM0KtAAApK+xVlxUmhVoAQBI36KGDQRaAADS
t8BhA4EWAICULXbYQKAFACBlJ+1YoAUAYEW92KovPM0KtAAApKO7vrGMNCvQ
AgCQjmUMGwi0AACkY0nDBgItAAApWN6wQbaBNi6uH1VroTL5dAAAUvO+07sx
gfYgqryt3f/c2flze/c87u9tlFL7aAAAMhHS5lLT7LIDbYisR9XaWSsOCXa0
9svR8j4UAICceHI3WnaaXXigrRYKB1HlXf3BoA07XmYMAABuj2UPGywq0O5t
lF5vNcbbsIkKKXchjwUAgJWQwrDB3IG2WigcVjZDQD2P+5ND7KA+tbeX8IQA
AMivdIYNZgq0++Xobe1+iKbTJNhhhcQb0u+yHxcAALkS3SmklmYnBNq4uH5Y
2TxtdqZsw45HWUsMAABup1f1VlaBdrBWa9Y27HiFJJzhAwQAIENPo0qaafZj
/PDfza9Om51rJthhhTyc9SMEACAzKQwbfIh3vu8++rnX/33760WF2EGdteKs
nx8AABlb0rDBWffhj93+r70FJ9hhfWpve/MLAIAFDht8iHd+6D76pfd44W3Y
RHnzCwCAgcZa8fpt2J96/d+W1oYdr4OokvVjAwAgL45bnTne5xq0Yf9IK8EO
y/W1AACMelapThliv/v/+1xptmET5fpaAAASJg8bDNqwX7JowybKm18AAFxo
fNhgSWu15q7zuB8X17N+TgAA5NFg2OBj/NdarS+9x5ln1/GyxAAAgMt01zf+
1fzqn5v3Qn2zVX+91UjUWSser9SirOtrBxprxTfN9vNqLfz0sVsqhz9mfSIA
gBulWijsl6NEhSw6Ho9Pm50p47E3v0a92KonZkJO2nGIuOHfh5QbIm74wSTr
M94i7lYGACbz2ldCdKcQ4uuV2ycGEfflvWaIuE/uRiHlZn3wGyj8mBZ+2jLO
DQAwkxBN57vn4n2nN4y4T6NK+HtCNs7626ywT+1tvzsAAJjDq3prUfcRhwoR
N/yFw4hrHHca++VoOAyjPQsAMJPoTuF9p7fAQDtex63O4I2zJ3ejrL9uHr2r
PzDaDQAwtxAyl5pmR+cTDCQkVAuFxLuK2rMAALNa7LzBhAoflPV3zZfXWw2b
NwAArimFeYNhmTcY9bmzM75KTnsWAGBW5g3SN1jMNV6vtxpZHw0AYPW8abbN
G6Tpsms+zuO+9cgAALNqrBXNG6Rmb6M04Qpm7VkAgDk8q1Rv7bxBytOqo4u5
tGcBABYltXmDF1v1rL/rXw6iSgiWn9rb4R9S+9DxxVzaswAAC5HmvMFuqZzJ
d4yL60fV2mmzM2yE7m2U0jxA+PQr06z2LADAfFKbNzhpx2nOG+yXo7e1+4ml
WJ/a2+lvxLpwMZf2LADAotyYeYOQVA8rm6fNznncH4+LIcqm3/88iCrTRFnt
WQCAuXXXN9JJs0uaN9jbKL2t3Q9hdUJWzOrWrcsWc2nPAgAs0PNqbbXmDaqF
wmFlM2TUC9uwiQpZ9/qfOIe4uD59lNWeBQC4juNWJ51AG5Lz3Ifc2ygdVWuT
27CJCqF3gU9pJpMXc11YR9d4OAAAt1ma8wbhs6Y/WLVQGGzWmvJ1qtFWZ5qb
uMaPPU3fOFHhO2Z1YACAVZfavMFxq3PlYQabtWaaO01E2ZQ3cSVMs5grb81k
AIBVl/m8wUFUGd+sNWtlsokrYe6voD0LADC33VI5/XmD4Wat6yTY0Sib+btU
++XoOl9BexYAYG4vturppNn/PIiv3Kw1a2W1iSthvmT+ubMTHki2AxIAAKsu
ulM4acdLSrAf4p0fuo++9B7/sbgEO6ysNnElzLqYK+R5IRYAYIEWPm9w1n34
U6//W+/rhSfYHP52PkTTKUPsUbWW+XwvAMCNdP15gw/xzvfdR78spw07Wudx
f78cZf3A/nblYi4hFgAgBXPPG5x1H/7Y7f+6zDZsIsrm6nf0h5VNIRYAIA9m
mjcYtGF/304pxA4jYubrCxISi7lOm52Qb/N2SACAW+JVvTUhwX6M/2rDfuk9
TjPBDuusFectJQ4XcwmxAAB5cOG8wXfdRz/3+im3YROVk01cCSHBCrEAADnU
WCvulsr/qGx+s1U/a8X/XeiS2Fnr9VYj6+cBAMDKqxYK++XosLIZ4uVpsxNS
7uTX+RdS+dnEBQDAjRQi7kFUCRH3Xf1BiLiJF6Pmrlxt4rpVXmzVn0aVrE8B
AJClvY1SyKIh4r6t3Q8Rd9YLbfO2iev2eFapfhvvvO/0uusbWZ8FACBf4uJ6
iLhH1dpwVuHCKJvDTVy3xJO70fDtP4EWAGAao+O47+oPQsoVZTMRsmtIsKPr
LMIfozv+XwAAkHeXXQZ33OoItAAA5FxIrZfdmiHQAgCQZy/vNSdfZBz+g6zP
CAAAFxgsMbiyBFoAAPJmdInBlfW8Wsv6vAAA8LfxJQZXllsVAADIg8uWGAi0
AADk34QlBleWWxUAAMjQlUsMJpdrwgAAyMqUSwyuDLSNtWLWXwUAgNtlpiUG
k8utCgAApGmOJQYCLQAAeTD3EoPJ9areyvqbAQBww4Uoe50lBpPLNWEAACzV
i616IoKetOM3zfaVFZLq82rtyvJGGAAAAAAAAAAAAAAAAAAAAAAAAIviLi0A
AFZUY6143OpkfQoAAJjH82rt23hnt1TO+iAAADCb6E7hfacX0uybZjvrswAA
wGyeVarDe2bdDAsAwGo5acfDNPvyXjPr4wAAwLSeRpVhlNWeBQBgtRy3Ook0
+7xay/pQAABwtd1SORFlQ73v9OyeBQAg/9402+NpVnsWAID8a6wVL4yyoU7a
cdanAwCASV7ea16WZkM9jSpZHxAAAC42oTGrPQsAQM7tlsqja2YvLBfdAgCQ
Z4214rNK9bJ3wVx0CwDASojuFJ7cjV7ea77v9EYDbXd9I+ujAQDADEKCfV6t
DW5VcNEtAAArqrFWtNkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAYHn2NkrVQiHrUwAAwDxOm53zuP96qxEX17M+CwAAzKBaKPy5
vTusd/UHMi0AAKvisLI5mmZlWgAAVshpszOeZmVaAADyLzFmINMCALBCLhwz
SNR53A+BNuuTAgBA0oQxg1CfOztH1ZrlXQAA5NCEMYOzVnwQVbI+IAAAXGp8
zOA87r+t3TclCwBA/r2rPxgdKgjh1lABAACr4jzuhxx72uzsl6OszwIAADPY
2ygZKgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALgB/gfBM0Xi
DQplbmRzdHJlYW0NCmVuZG9iag0KMTIyIDAgb2JqDQo8PC9UeXBlL1hPYmpl
Y3QvU3VidHlwZS9JbWFnZS9XaWR0aCA5MjIvSGVpZ2h0IDY3Ni9Db2xvclNw
YWNlL0RldmljZUdyYXkvTWF0dGVbIDAgMCAwXSAvQml0c1BlckNvbXBvbmVu
dCA4L0ludGVycG9sYXRlIGZhbHNlL0ZpbHRlci9GbGF0ZURlY29kZS9MZW5n
dGggNTU5ND4+DQpzdHJlYW0NCnic7d3reapKGAbQUwIlWIIlUIIlUIIl0IEl
WAIlUIIlUIIleGIuOyqogAwzwbV+7mTDR568mYvDzH//AQAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEk2WxKwDa
sn3sCoAOxyJ2BUBbfVrHLgFo2Z2aLHYNwK3t6VTFrgG4lZ9Op23sIoBbH8k0
1ITkNB/JNNSE1NTnRtNQExJTnpNpqAmJKT6Tecpj1wFcyr+SecxiFwJc+krm
qY5dB3Dp8B3NMnYhwIXqO5mGmpCS8ieZhpqQkM1PMg01ISHrf8k87WLXAvzz
m8zTJnYtwI/DbzKPq9jFAN/2F43mIXYxwLfyIpmGmpCK/DKZhpqQiNVVMg01
IRFXyTTUhETU19G0OTQkYXedzFMRuyDgv8+dLa+HmuvYFQG3k7PnoWYWuyTg
v+w2mYaakIJjK5pF7JKA28lZQ01Iwu3krKEmpKBoJ9NQE6JrTc6ebWNXBW+v
K5nOIYLYmq5kOocIImtPzp45hwjiKjuTaagJcXVNzhpqQmzrO8k01ISo7iTT
UBOiOtyLZhm7Mnhn1b1kOocIIrozOXtyDhHEtLmbTOcQQTz3JmcNNSGqB8k0
1IRo6gfJNNSEWPaPGk1DTYjk/uTsmXOIII7Ol6d/bWLXB+9p9TiZziGCOB4n
0zlEEEf9JJqGmhDD7kkyDTUhhttjhww1IQVPJmcNNSGK9rFDLTaHhvkdn0ez
iF0jvJ/6eTKdQwSz2z1PpnOIYHb3dra8YqgJM3s+OXtWxC4T3k2vZBpqwsya
XtE01IR51b2SaagJ83r88vSvbexC4a082Nny2jp2pfBOHu1secU5RDCnvsl0
DhHM6dA7mtvYpcIbqXon01AT5tN3cvZkqAkz6j05ezLUhPk82dnyWhm7Wngb
Q5LpHCKYSz0kmc4hgpnsBzWaziGCeQyYnD0rY9cL76Hfy9O/8tgFw1sYNDl7
MtSEmRwHRtNQE+ZQD0ymc4hgDruhyXQOEczg6bFDLc4hgvCGTs6enEMEM+hx
7FCLoSYEdxwRzU3somHx6hHJNNSE0Aauz/tiqAmB9Tp2qMXm0BDWiMnZsyJ2
3bBw45LpHCIIqxkXTecQQVD1uGQaakJQoyZnz4rYlcOSDdnZ8oqhJgTU+9ih
FkNNCGh0Mm0ODQEdxkdzG7t2WK5qfDKdQwTBjJ6cPTmHCMIZPTl7ZqgJgQzd
2fLaNnb5sFQvJdNQEwKpX0qmoSaEsX+t0bQ5NATxyuTsWRn7AWCRRr48/SuP
/QSwRGN2trziHCII4fhqNA01IYD61WQaakIAu5eTaagJ0xt+7FCLoSZM7uXJ
2ZPNoWF6L0/OnjmHCKbWTBHNTeyngKWpp0imc4hgYq+uz/tiqAnTGnfsUIuh
JkxqisnZs03sB4FlmSiZhpowqWaiaNocGqZUTZRM5xDBlKaZnD0rYj8KLMhL
O1tecQ4RTGf8sUMthpownemSaagJ0zlMGM0i9sPAYlQTJtNQE6Yy3eTsyVAT
JjPV+rwvziGCabx27FDLNvbzwEJMm0znEME06mmT6RwimMR+2mQaasIkJp2c
PdvGfiJYgmknZ8/WsR8JFmCSnS2vGGrCBI6TR9M5RPC6evJkOocIXrebPpnO
IYKXTXDsUItziOBV00/Ongw14WXTT86elbEfC/66Jkg089iPBX9cHSSZhprw
msnX531xDhG8ZKJjh1r+3jlEmyx2BfAryOTs2Sb2kw2V2y6FlIRK5t87h+go
miSkCRXNPzfU3NtkjIRUoZI5x1BzvZ7wYhv7/5GQQJOzZ5twVeebclc3E29y
exRN0jHdsUMtAYaaWV6UVX38ucF60ovvT6JJMiY8dqhlwl/zVb4t68PN5VeT
Xf7TZuKa4RUBkznFOUR5/tlvDZv7L1mYy8Ioh67f+qkUo8s691v3//qtcwTz
ZzZMNEnCPmQyR4wEP/ut9dMrV9nkP4mfBVGiSQoCTs4O+y2/32/tEOS8zp93
4kSTBARbn9c3Qk/7raOuOkr1fXnRJL6Jjx1qKe7fuV+/tUOoRQz/Nl8RTeKb
LIPdOoaag/qtHYpQP4rfv1KiSXT1y+F77PeXfEy/tUMR7mdx6Kga4ti/mpRn
qhf6rR2KgD+Li70ERZPIQuxsGc7EK/JuXA66RZO4Ak/OTitsMK/XXYgmUYXZ
2TKM0MG8/nRXNInqGClmw029hr3teoG/aBJTHSdmw80RlGb2O8IduygxG26W
mOwi3BM6/ZHJ2RBr2Ntu31cVTaL5G5OzgZbKtjQ39xVNookRtKHmCma7by+a
xNLMH7Sh5tvzvb0xkmgSST1/0gYqZvxpHFt3F03iCPvy9ASKOX8a+/b9RZMo
Qh07NJVi1p9G1z6fokkM6/qVtyVDO+Yz/ziOHUWIJhGt87woX39/clrBl8q2
VF1liCbRZfl2X88bv/vmD+adzr1okob1pqyaeVPYlYf1/E9+5+Ub0SQhebGL
2b2Nk4YqpWLgriwv43RvI2Xh3ly1aJKi+bu3dRbnSe++Sy6aJGvG7u1sS2Vb
atHkTzp3bw/LDeaD9+JEk/R9dG8DrlCIGMxH+9aLJn9Evg3SvS2iPtRBNFmE
1dTd2yLu8zza5kE0+Wum694WkZ/k4TFMosmf9Hr3dvY17G0H0WSRPrq31cPf
7kfBXMeu/tl+gqLJ37YuRnRvUwhmaws90WRxsnP3tn8wY6xh7/DkD0rvaK62
q4BVwqv6dm9TaY12U9S52TVRP5eFnp52b1MJ5rPu7PNK19v689tmqRYm8KB7
G2sNe4fjC9HMNvvvvz/H+98ESVpt2t3blHp++2fJvBfNdfn7WEnMZsFwVxsP
pRTMzi30nkYzK/bHy+8o5q8bJvO98VBSwex1rOh1NPPd4ebr8+0sD8FksQu4
sX+ezN9oroqqneQ6ZvmwUD26s6dTsz5/Z6ux7GhRgWn0SebpWFb3vrKO/QCw
SPci19Mmdv2wTK8d97KNXT4s1N0t9PpIbKIZFqQaH0yzPxDM+O6sRXkQzvju
7Dp26bBkh5HBLGIXDov2aAu9B8z+QFAPt9C7y6I8CGxf1/uyrOpPPYPZZLGr
hjeU5Z+K8lM7tBblQWI+Q7uKXQUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAEMGqWMUuAWhrTs1uk8WuArhWns7qMo9dCHAhO56+HKvtKnYxwI/y
9KvZF1nseoCzf43mt8NuE7sk4LrR/FZv17Grgnd322j+DDt9ngJRdTSa38NO
n6dAPN2N5s+w0+cpEMndRvOnY2vYCRE8bDS/O7Y+T4HZ7Z4m87Nj6/MUmNWq
VzLPHdssdqnwTvZ9o1nGrhTeyZ9pNCPfHmb2VxrNqsziFgCz+iuNZnk6FlEL
gHmNbDQ3x3mX8W0+KqjX890PIhvVaGbV1781+7mW8X2VuZvpbhDfiEYzP178
82GXz1Hm1y2P2znuBQkY3Ghmu9aXZnh7rP75Q5CHvhOkoXejWXx+e9505zbw
piW/fw72Qe8DqVj3TWbzX2eDefENARfZFhd/BMpQN4GU1H2jWdxrMC+EWmSb
X/0JyIPcA5KS30tZq03c9fu+ulxPX+X1LarV9HeAxNR9o9nf9MPOw80dLApi
8Xo3msNMO+zcty6/me7ikKQ6TDRPn8PObJoau7b6W01zaUhUoEbzJ0CTbCnU
WaNFQSxbHTSak3zQkXVfuHj5wpCusI3mR9s2QY1N96XrfIJrQ6LqkLmc5uPH
uyXusykuDykK2WhONBi8vwende4sVxMql5Ot19k8uIl17ixV8eD3/hXTzZ4+
Xt9rURAL1YTI5aQLXB/fyjp3lilEozntx431k7tZ584iNVPn8riZtsDd0zta
FMQCTd1oVtnEBW573NQ6d5anmTKXUzeY//X8ZMc6dxZnykZz8gbzrN+tbX7J
0hymymWABnNIfda5szCrbXWcIJhBGswPVd8CrHNnefKyfi2XgRrM/56ekX3J
oiAWKNvsDqODGfCTi0GLe61zZ5FWxb4Zkcugi8t7b1odvhSIaD142Bn4o/6B
1VgUxHINGXYGb6X6l/LNOncWrO+wM/zauAFTQN+sc2fZng875xjWjVkLoUvL
0j0cdh5Wc1QwIpmT7EEEicvLQ+evfznP7ccks56nNIjsY9jZ3PzyH9Yz3bse
kczjTLVBfB/DzuPsDeZ/A876vLSarTxIwMewc94G879+r2i2bOarD9KQ7+py
1vuNSeasFcI76j5C4YkqdtWweM2IZDaxi4bFq8Y0mlnsqmHphq/P+5DHrhqW
7tERCndtY1cNSzfsFc1v+9hVw+IdRyTT+jwIrR7TaMYuGhZvNyaZ69hVw9KN
2q66iF01LJ31eZCkMck0BQShHUYk0yuaENp+TKO5il01LJ31eZAiU0CQIq9o
QpKaEck8xC4aFq8e02jGLhoWzxQQpMgrmpAiRyhAksYk0/o8CK0eE83YRcPi
rcZEcx27ali+vBmczE3smuEdlMeBySxjVwxvYbUflkxTQDCP/DAkmY5QgLls
jwOimcWuFt5GtuufzDx2sfBG1nXfZJaxS4W3UjT9kukIBZhV1u/lk2Ndlpt8
FbtaeB+DFgUdaxGFmYxYFPQV0TzPYtcOSzZ4UdCvpq5EFAIZuijofkRjPwks
y7BFQY8c6n25FVGYSHGcKpsiChMasihokLrelUW+jv188Ff1XxQ0PqJZ7IeE
P2jTBI1mVWSxnxD+pJ6LgsQSZraqxBJSNGZRkFhCeC8sCmo5iCVMJdtPFMvt
KvajwKJMsChILCGA1xYFiSUEMn5RkFhCSKMWBYklBNd3pyCxhFkNWRQkljCf
njsFiSXM7PmiILGEGB4uChJLiOXuTkFiCVF1LQoSS4jv5vgwsYQ0XCwKasQS
0vG1KKjZrWMXAlwparEEAAAAAAAAAAAAAOAdZbELADp40wVStDmuY5cAtGQn
0YQEVaIJCSpOognpyU6iCQmqRBMSVJxEE9KzOokmJOggmpCg7Uk0IT2rk2hC
gg6iCQnankQT0rM+iSYkqBFNSNDvOZ6iCen47c6KJiSkuYjmqYhdDaSqnPl+
u5NownP7/bz325xEE57bnGaO5lE0oYfjzNHcn0QTnvtIyqzRvOnOiiZ0Or/O
PGs0j6IJz51355k1mrfdWdGELtXM0SxayRRNaPtKynzRzNrJFE1o+U7KfNGs
RBN6qGaOZkd3VjSh5ed15rmi2dWdvR/NdXnYzFQYJOVnd57ZotnVne2M5qqo
jqfTbqayIDGHmaO57UzmbTTz3Vdd1TxFQXJ+kzJPNFfdybyI5mp7biw/HbJZ
aoL0XCRlnmgeOmL5G83Nrvn9J69X88YukjJLNO90Zz+iud7W1/+ymaMeSNPu
IgpzRPNed7ZtO0M1kKrL3XlmiebhThBvzfzuKCSmmTkOu+4g3jL7w5u7Tkr4
aK67k3jjmAUvBJJ2k5Tw0Ww6o3hjHbwMSNxNUoJHc9eVxBtF6CIgefubVISO
5rquq/rT3dbTojxo784z96zoOv9Uftp9JNa0LPzXsTuPZEACbruzogkpaHVn
RRNS0OrOiiYkoOqYHhVNiK1zdx7RhMi6d+cRTYisqzsrmhBbZ3dWNCGy7u6s
aEJkB9GEBN3dnUc0IaL7u/OIJkR0rzsrmhDT3e6saEJEjzabFE2IphFNSNDu
QTJFE2J5vNmkaEIkj7qzogmxPOzOiiZE8mzv9L7RXG23IcuEd3OcIJrn8y8d
ewlT2j9J5rNo/px/mc9SLbyLji30ekcz2+yb72/azlcxvIVn3dl70VyX9bA+
LzDA0+5sR+6yYn8V6EOMwmHRnndnb6KZ7w43X3bsJUzu3p4jndFcFdWx9UXT
shBA1Team1Zj+aWI/QSwRHe20LtR3Q2wYy8hhF7d2fvq2PXDQt1tDfs4ZLHL
h4Xq153tZvYHQnm058gzm9jFw3IdRgdzG7t0WLAHW+g9ZlEeBDS2O2v2B4I6
jArmcRW7bli2cd3ZdeyyYeHWdfmj/tIjmEWgYlZ1uc1XgS4OS5Dln4qv0FZX
oQ03+7P7vH5T78p8HewmT4uIdmd4RRbw0s1Fy9zU+3KTh7vZHcVpNfs9IXF5
x2zTR0CLPJuthINPhKCluju4rauPgK6CF3D+2xD+LvDHZMcns0+HutyELGAf
dCANf1WPLVBCbnHy9WLcKtwN4I+635/9pwp39/LzBhpNuPW0P3sK+Z5Lc9Jo
QqeY/dmfF1bLQNeHP6yO15/9ubXdOqFlFa0/+3s+Whnk+vCn9VhmP7hRW/X5
pn34/jL8YT36s4NWt272h02Pb7vcS7AcVTgsWp/+bN73Wtuq73Zil221RhPa
evRnm6zHdfJdc/7ew6rXXZvL65cvlA9LVT+P5rP+7O9JLD33Rrn+uEajCW3r
dhJb8kf//+Iklr4rem7+GpSvPwUsTvk8mff6szdnfPadK7rdrUyjCR0Op6fK
jv+23t78x6LvDfe3l99O9SiwIH36s+vr/5Jt9s1tw7fpe7/2et1m2geCZejR
n708i361rdvfMODwlY7p4GLqR4IlODyPZvn9rZvdbWP5ldxV/7t1XECjCR06
NgVqWX9+OnLni0N2ku+8WRHoyeBP2z1P5uHOOfVng95/bqe72a0DPRf8bVeb
XA42aGXt7UcmB7GEu/r0Z+8pBt1pdxXL7SrI48BS7LpT99wxH3Sfi49MxBKe
GtufHXpU/c8uI2IJvYzrzw4+3vPzD0BVDP1v8LaqEcGss4E3ycUShhnRnx2+
W2whljDYKt+W9aF3MMvY9cJbyfKirOrjs2AWseuE95Rvyn19r4878NOSie2K
mHeHFKzzctfq4w79tGRa28j3h3ScB6FV/R3MwZ+WTGoT/U8DpOY8CN1XWcwS
1p9DYHuUQFJ+Pt6J224D1/4NeUUT0rH/nYZyLi6k4moXIdGENNycxlvGrgf4
72da1kIkSErHqvsidk3A7Uqks3XsouDd7TuCaTEQRHbnrM/jKnZh8M423cG0
4gBiak3LiibE93AzlCp2dfCmssODYFoMBJHsPgPY1Bf25YVV7AIBAAAAAAAm
kMUuAGhbHWJXALSVpzx2CcCt7HiqY9cA3Dq/d7mKXQRwo7EkHdJTfC5WX8Uu
A7jy9X5XGbsM4FL+vZtPFrsQ4EL9/fJzGbsQ4NfqZ1uCJnYlwK/9vx1Ditil
AD/+NZkaTUhIfrElXh67GOCf1fZnDsgSPUhKttkfz9Fcxy4EuLEuD5boQYpW
RewKAAAAAAAAAAAAAAAAAJjMOotdAdBWHctV7BqAG9l5f5L9KnYZwJWvg4pk
E9JS/WyGKZuQjux3n1rZhGQUF8k82nQPEvGvM3tqtlnsYoAv/zqz9SZ2KcA/
X53Z424VuxDgwvlwv6bIYpcBXDmeqjx2DcCNtW4sAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJCo/wHLwmfGDQplbmRzdHJlYW0N
CmVuZG9iag0KMTIzIDAgb2JqDQo8PC9UeXBlL1hPYmplY3QvU3VidHlwZS9J
bWFnZS9XaWR0aCA1MTAvSGVpZ2h0IDEwNC9Db2xvclNwYWNlL0RldmljZVJH
Qi9CaXRzUGVyQ29tcG9uZW50IDgvSW50ZXJwb2xhdGUgZmFsc2UvU01hc2sg
MTI0IDAgUi9GaWx0ZXIvRmxhdGVEZWNvZGUvTGVuZ3RoIDk0MTI+Pg0Kc3Ry
ZWFtDQp4nO2dd1xUV/r/B2YGBhh6L0MvAgooIEVjiiZuJMZGojGWqNFk3cS2
alxLbCmuvcUk9pKfMWxWRDQaNbrRjWZdSzQmuhJERVGMsCgqICrfx5ksvxvK
nGfuvefemeG8X/cPy9znPOfccz/31OcoFAwGg8FgMBgMBoNBppendrLOg9LV
39t5EjXjxGtCkLvGVs6ybdOmzWwc0dHRcjkZEBCAdLJjx47NGYmKiiLe3qFD
B5McS0hIINpMS0sTXADi8+abbxp3e+rUqTY2NibZHDNmjHGb8BwpZYc3jo6O
xCf4yiuvNHe7j48P8XYDTz31lITZ+h0ajWbGjBkYJ7Ozs+VysjHdPZxuZkSW
Z0bRuE60DfFS2b4V4EbJvvEL8vWKt7O8xQu1orCwsA7B7t27TZUCsVi7di3G
w5s3b3p6ejZn5A9/+APRwp///GeTHANNINr805/+JLgAxOdf//qXcbf/+9//
2tqa1ij5z3/+Y9zm9u3bKWWHN97e3sQn+OWXXzZ3O7wRe/fuJVoALl68CO+a
lFmrZ+LEiRgPHzx40K5dO1k8bEyq1v5KWjgl4f0lNSzaQQ2pgJwtCPeWXvn/
ovOQu4Af07t3b0zFePToEYin9O61bdsW6iTGw7feesuIHab8XGRRfmDgwIGU
csQPgcoPtG7durq6mmgEmDRpkmT5qgcyWF5ejnFv5cqV0rvXJKH2qnMpYZRU
91paxBMuDvVpqW1scmIDpJT9TyJ9ZR3m+R179uzB1I1Tp06pVCopHcO3qX74
4QfjvjHl5yKX8kO/zN/fn1KmeCBc+YElS5YQjQAVFRU+Pj7S5Kue5cuXY3wr
KyuDopDYtyZxU9r+KymYkurezIjs12iYxVlp+22CThrZ3x4faCfPwEnTxMfH
379/H1NDhg8fLqVjL7zwAsYr6BQQx1GZ8nORS/mB3NxcuYYNGyOK8ru7u1+/
fh2T9xUrVkiTLwOxsbE1NTUYx95++20pHWsOUMX8+EB6wvtOUNPDLEF2qh+T
Q2nL/vdJwe4q82nv/8aiRYswNaSkpMTZWaK5CbVafebMGYxXW7ZsIVpjys9F
RuUH+vfvTylfpiKK8gPQIsJkHNpXcXFxEuTLQF5eHsYr6Mvb2dlJ5pURPo3y
pSe8H0f6GKnQbRztLrWnNbMA1/mUsFB7SQdMkODbLbNnz5bGpZEjR2L8qays
1Ol0RGtM+bnIq/w3btzw9fWllDWTEEv5lUrl8ePHMXnfsWOHBPkCnnnmmYcP
HxL9gd/AL6VxyTiTdR70hDcvjjzM8qybY2l6BI3Ur6RFpGrlmd/HMGLECEzV
vXPnTnBwMG1nXF1dS0tLMf5MmTIFY5ApPxd5lb8OJ6cSIJbyAx07dkQuRejS
pQvtfMGzO3HiBMaZnJwc2s5gGODjQm8N5/dJwW5KVGUe5ucquhu/pkf28HSi
XYBCUKlUx44dw9SWDRs20HZmzpw5GE8KCgocHBzI5pjy/x7ZlR/o27cvpdzh
EVH5gc8++wyT8ZMnT9JeKTF48GCMJ9BflqAVR+RJF4frdBrbcP3HxGGWWSFe
4jowKsCNWsmJBrLdUltbm5KSQs+N0NDQu3fvYqpur169kDaZ8nMxB+WHPp3s
60nEVX6dTnf79m1M3ocOHUovU1qt9tKlSxg3pk2bRs8NJLEOdhepDbBfTYtI
0dqb5A9U+nXRfmI5MD/M21xWM5DYvHkzps7s379fdh927dqFXyXClJ+LOSh/
nX5qXt51PuIqPzBlyhRMxq9cueLkRGsEAPQc40NhYaFcm8vq8VMrT7Wjtajm
8TCLB59CdrBRfN0mSLgDObH+KrNZxkYkMDAQ2W7p2bMnDQfS09Mx/Y6qqqrY
2Fi8Wab8XMxE+R8+fEipFiERXflBSwsKCjB5nzFjBo0cBQQEVFRUYByQt+QB
R1ubb8QQ2OYuIcMs3irl8bYhQlL/NkHnjJtcMB8mT56MqTlnz55Vq9XiJg1q
c/DgQUzq8+fPN8kyU34uZqL8wNWrVz08ZNvMLrryA6ComIxXVlZCK0v0HK1c
uRKT+tdffy1vbwvq1uZW/vRkf2G40IHEaAd1YSrPYagfk0MD7MxxDadx8O0W
0TeAZGdnY9ItKSlxdXU1yTJTfi7mo/zAxo0bKWWTCA3lB0UFXcVkfO3ateJm
JyEhAbMls6amxqT+sujAJ+evYSJPpP5umKWVOMMsT7g4lKSZPPV8qX14gpNp
kwvmQ48ePTBVt7S01N3dXaxE7ezskF+cQYMGmWqcKT8Xs1L+hw8fdu/enVJO
jUND+YG4uDhMMJ/a2tq2bduKlRf44uzevRtT4AsWLBArUX6M9Hejt4bzYKKY
wyz9vJ1NcvVGeuSzbo5ipS49UIt27dqFqUXz5s0TK9Fx48ZhUjxy5IipoqRg
yv97zEr5geLiYhGbEHgoKT+wcOFCTMb37t0r1qgLpobX8eovi8uLnlqQR0qy
f4bCMMs76C1mZRmRQ31dxE1delq1aoUJ+nHv3r2IiAjhyXl6epaVlRGTg2ZS
amoqD/tM+bmYm/ID69ato5RZI9BTfviQXbt2DZNxUfo7KpXq9OnTmOSGDBki
PDneJD8Ov0xr6T6lYRZ4DT6KRIWVmBXSbJR4y2L+/PmYuiTKNkBkwMNVq1bx
s8+Un4sZKv+DBw+ysrIo5bc56Ck/MGzYMEzGz5w5IzxsDnIDPvSXlUqlwLR4
QzX88o30iOeoDbPY2Si2kULJrY/2s7ClPM0DvUJMuwXe2czMTCEJRUdHV1VV
ERMqLy/nHe+FKT8XM1R+4PLlyxIPRFBVfijAf//735iMjxw5UkguXFxcSkpK
iKnAe8qvvywKbkrbI9TCL8M1zJduzTHu/542QRqLWbmPYujQoZiq+9133/EY
e68nNzcXk8ro0aN5J8GUn4t5Kj+wevVqSlluEqrKD3To0AGzOeX69etubm68
U3nvvfcwZbtmzRreSQgE2sx5NMMvzw7xkiAXIc30WQxnO0rggJTA6//9999j
6hXvMCydOnXCBBU8ffq0kO0DTPm5mK3yQ03o2rUrpVw3hrbyAxs3bsRkfM6c
Ofzs63Q6TKgTeKByxUeFavQxbpyc37Uxxs9WqvZ2qlZT/PtjIgtTw2McRN7W
ZCZkZGRg2i2//PILj83gNjY2R48eJRoHQRAY4ZApPxezVf46fRQ+epENGiCB
8iM31YJ6h4aG8rCP/LKMGTNGSC6EQDX88l7Jh1le9HSqX5t0PT2ig4v5hl8W
zvr16zG1a8KECaZaHjBgAMay8KC+TPm5mLPyA0uXLqWU8QZIoPzAO++8g8n1
5s2bTbWcmppaW1tLtHzmzBnRt9sjedXE9fAmXSfbhXjLMczyVoBbuf5sx75e
Eh1TJRfIdkt5eblJ0RcdHR0vXrxINMu7OcSFKT8XWZT/119/3blzJ7HE6vRr
dzt16kQp71ykUX47OzvMZxF61mlpaSZZPnDgANGs8P4yb55ydbhGbQ3nhdTw
aJmGWaCTMS/cu7mzHa0MZLtl2bJleJvIAEHTp08X7j9Tfi6yKP+NGzeCg4PB
MrHQgPPnz0PDgFL265FG+RX6E6UfPXpETOvQoUN4m7169cKUpIyH4Dzj6JUf
nLEjpAONa21AsrutbAPsSutayWMEaLecO3eOWM1qampatWqFMejn54fpRxQV
FYmiAEz5ucil/DY2NshV7sDChQspZb8eyZQfMv7VV19hcp2dnY0xiOxHiNJf
FsIrLrr84A6UrgV+CRoba1tUY4ZkZWVhFuHk5+djNqR/8sknmBehT58+ojjP
lJ+LjMoPZpGBQWprazt27EipBAxIpvwK/aZ4zKaVgoICzMau0aNHY8qQUixo
kxjtEUlP/Kd4tWLSTxt4bUHViZUNvg6dO3c2bqp169aYoIJ79uwRy3mm/Fxk
VH74ZUhIyK1bt4hFV6ePBI48bZMfUiq/Ar0pfty4ccbtuLu7//rrr0Q7YvWX
BaJUKN73jqcn/sPdwuTOovWD3Gx7/PhxI5vE4fXHzPRVV1fDB0Isz5nyc5FX
+YGRI0cSi86AiCEBGyOx8ru5uV29epWYYllZmaensQgwyC+IWP1l4TjZqj7y
S6In/t21fnJn0fpBno1u5KTRrl27YiwsWrRIRLeZ8nORXfnB+P79+4mlV6cf
88nIyKBQBo+RWPmB1157DZPrxYsXN2chIiIC0/rat2+fiG4Lx0el2RiQSkn5
c4My0jQyxHptUbi6umLaLcXFxU32NFUq1cmTJ4m3X7t2TdywvUz5uciu/Aq9
glVWVhILEPjpp58onRgrvfIjN8VDhxf6101ayMnJId5+//79+Ph4Ed0WhSi1
9m9B6ZTE/4ugNLAvdxatnIEDB2Je2CZXY77++uuYe4cNGyauz0z5uZiD8gOj
Ro0iFqCB999/X9QC+A3plR9IS0vDbL/aunVr43uRgYCMdBnkpb3GfZsug5L4
bwhI8VYKjXrKMAJownfffUesfrdv3w4ICODeqNVqMUEFQZdEPySUKT8XM1F+
ZEWq068WTklJEbUMHiOL8gNr164lpvvw4cMnn3ySexcU1+HDh4k3Coz/RpsX
tf70BvyX+iU62VreAbgWRPv27THtlgbhAWfPnk28BZo0NMZ1mfJzMRPlV+gP
LsQEHANOnTolPI59A+RSfuRmlqNHj3JXSvTt2xdTUNCtFt1hcRnuFkZP/Gd6
xzHpp8rq1auJlfD+/ftJSUmG3wcHB2PGdSmdzcSUn4v5KD8wadIkYjEamDlz
pkgF8BtyKT8wfvx4TJYHDBhg+L1GoyksLCT+Hj4WQuKlSwNUgsmeMfTE/233
iBazxVYGfH19MTvx608a3bBhA/HHYNDf35+Gt0z5uZiV8qtUKqI/BmpqakQ8
slwhq/Kr1eqzZ88SU7906ZJhR8PEiROJP6bUX6aBRmG7wDeBnvi/5Bwodxat
mbFjx2Je2KysrJSUFMzokKnai4cpPxezUn6FfmffvXv3iIUJnDhxQsSwkzIq
P9CtWzfMpvjJkyeDn+Xl5cRfrl+/npKrNHCzVa/2T6ak/Nt0mZ0cpDiupWUC
7+BPP/1ErJBnzpz59ttviT8DU/RiyTLl52Juyg+8++67xMI0IEoEPwPyKj+Q
l5dHdKCiouKLL77A/MzPz8I2NOlUDpsD21MS/y+D0uPsrDyKsoxgFBUDNH7A
lLx+MuWvR3rlt7Ozg/Y8sTyBqqqq+skjgciu/FFRUcjODhF6/WWqJNi7/p3a
Iv9NgakBSms+OUVG4F3etm2b8Hqbm5tL1U+m/FzMUPmBtm3bVldXE4sUOHbs
mCjrfGRXfgV6U7xxfv75Z9EXPknGM47eebpMSuL/sX9bF7bOkw6RkZEC2y13
796NiIig6iRTfi7mqfzArFmziEVqYMqUKQIK4DfMQfldXFyuXLmCzHVzUO0v
SwDVYM4f+rS2U5j7eicL5YMPPhBSb9977z3aHjLl52K2yg8N11OnThFLFYDG
BvIkCCOYg/Ir0GeSNkeTu30tjjE0gzn/2TNK7vxZJ1qttri4mF+9vXTpkgSx
ZJnyczFb5QcyMzMxEbzr9CdYqVSCOvJmovz4vcyNgS9geHg4bQ8lQKWweY9m
MOcBrsFyZ9E66d+/P7+q27dvXwncY8rPxZyVH5g3bx6xYA2MHTuWVwH8hpko
vwJ9lnpjJOgvS4aTjXI5tWDOebrM57Q+cmfRCgGhOHjwoKn1dv/+/dJsOWTK
z8XMld/BwQGzywm4c+dOczEtMZiP8gOrVq3CZJnLxYsXnZycpHFPGnxUmg3U
gjlvDcpIsneVO4tWSHJyMrKfbqCmpiYxMVEa35jyczFz5Vfog1Ii28DQ3uDd
eDAr5ffx8SkrK8NkuR5p+ssSE6V2ohfM+fPA9sEqiqe8tVg+/fRTfL1dtmyZ
ZI4x5edi/soPLFmyhFi8BkaNGmViAfyGWSk/MGbMGGSWgQMHDkjmmMSka9xz
qQVzXuOf7G5La8doiwVeJWS7pbS0VNyzV4zDlJ+LRSi/s7NzQUEBsYSBysrK
yMhIE8vgMeam/MhN8XX6WIgJCQmSOSY93bX+26kt8l/ol6Bh6zzFBrPTHNi4
caOUXjHl52IRyg8888wzmINI6vQNYB5nOpib8ivQUSxOnDgh+hkW5sbcwIij
se0oXRN8WUg3MUlMTEQO9VdXV0t5YBxTfi6WovzAihUriIXMu6jNTfk9PT1v
3ryJzG/Pnj0lc0x6nnBxuJYeUZ4ZReM6mxIWbMc29ooGaAU0vZD1tk4fwFky
35jyc7Eg5Xd2dr5w4QKxnOv0Z8CFhYWZZNzclH/lypWYnBqwvoU99cQ4qAtT
wyjJ/pW0iHZO9nJn0argsaRfssUJTPm5WJDyA88//zwmmjHw9ddfm+S2WSk/
jyX9H3zwgTS+SYm3WnmiXQgl2f81PTLL3To/l3Lh4uLCYxsv3AKNOgncY8rP
xbKUH1i3bh2xqA2YdBah+Sg/v2289+7di4qyqrgEDrY2e9sEUZJ9uP7o7yZ3
Fq0N/L7LBsCNErjHlJ+LxSm/u7s7sl0BngcHY/fpm4/yv/baa5jcNWbXrl0S
uCcNUOE2xfjRk/25Yd5WPikuObGxscj4uo2BG+F22h4y5ediccoPdO/eHTnm
gxdDM1F+Nze3a9euYbLWJFYz1ft+qBc92d/Syp+t4xQXeJ13797Nu94Ce/bs
oe0kU34ulqj8wMaNG4kFbmDo0KEYg2ai/Pg9a01SVFQkQcxD2ozwc6Un+/9I
0Dnasva+yPTp00dIvTXw0ksvUXWSKT8XC1V+Ly8vZNu4vLw8KCiIaNAclD8h
IcGkmCdNYulx2553d7qRHklJ9k+1C/VXK+XOorXh5OQETQ6B9bZOH6uZ6lQv
U34uFqr8QHZ2NnLMJz8/n2hNduWHQv7mm28w2TGORU/1JjnZX04LpyT7F9uH
xzta6mll5gw0NjA1E/O2zp07l56fTPm5WK7ygwXkJnFg8ODBxq3JrvyYKgRg
NjLv3LmTnp/0CNaozqbQWrpfmh7R2c3ix8HMkPDwcMw5jPDufPTRR8SfVVVV
0ZvqZcrPxXKVX6GPaXn9+nViyQNlZWUBAQFGTMmr/C4uLpcvXyY6cO7cudGj
R2Pya3FTva5K28NJwZRk/2ZG5GAfF7mzaJ3k5eURa6PhjF0vLy/MtnR6U71M
+blYtPID/fr1I5a8AaiiRhKVV/mhk4vJQlZWllqtxhxSaVlTvSqFYltcICXZ
h2t6sKfcWbROunXrhqm39dsMkRFo+/TpQ8NbpvxcLF35wU5+fj6x8A0Y2Scu
o/JHR0djFkLXj+F06dIFM2Q6e/ZsGt7SYEWkLz3ZXxvtx9Zw0sDe3v78+fPE
esjdoqtSqTARaC9evEhjqpcpPxdLV34gKCgIGQ/8+vXroPBNGpFL+aEcdu3a
RUwaPg3cU+a3bt1KvMVSpnonBnnQk/3drYM0TPfpMGXKFMxLN2jQIO5dzz//
POauOXPmiO4wU34uVqD8wJAhQ4jlb+Dzzz9v0oJcyt+rVy+M2wsXLuTeFRkZ
WVVVRbxrx44dZh7Aua+3880MWms4j7UN8VQx3adCcHBwZWUlsQYeOXKksXpA
tSTeCNWb29QRBab8XKxD+cHDnTt3Eh8B8OjRo969eze2IIvyOzo6FhYWEtMt
LS11c3NrcC9yaqBHjx7i+iwiHV0crlMLv/xLalikhp23RYucnBxi3Xvw4EF6
enrje5FxHnbv3i2uSjDl52Idyg/odLqKigriUwCuXbvm4eHR4HZZlH/mzJkY
h4cPH974XhcXl5KSEuK9RUVFDg7meNpsjIP6QiqtpfslaRGZzhq5s2i1IGea
NmzY0JyFRYsWYWp+k4003jDl52I1yg+8+eabxKdg4LPPPmtwr/TKHxYWdvfu
XWKix48fV6maPjrk9ddfx2R21qxZIrotCj5q5Ul64ZczIl/2kiLqb8sEeU7o
rVu3AgObPewM+rDQkyUauXDhgogHTzDl52JNyg9+7tu3j/gg6vTbCV988UXu
vdIrf25uLjFF6C8/+eSTzVmAL8KxY8eIRuD7wu9sYko42Cqohl+eECTdod4t
kPHjx2Nesb/85S/G7SDbaR9++KFYnjPl52JNyq/Q7yiExgbxWQBXr17ljvlI
rPzIhdBffPGFcTudOnXC9Lu3b98ulucCgZr0WYw/PdlfFuEjdxatGX9/fxAE
Yn0rKCjQaAijbdBuOXnyJNHUvXv3xJrqZcrPxcqUHxg5ciTxWRjgjkNKqfz2
9vbnzp0jJnfnzp2QkBCiNWQICzOZ6v2AZvjlvLhANqdLFXhlMJWtV69eGGud
O3fGtFt27dolilww5edifcqvVCoPHTpEfBx1+jGfF154wXCXlMo/adIkjHsz
ZszAWAsNDYVvBNHahQsXZJ/qfYNm+OXDicGuSrNewmrpdOzYESPU+/btw9vE
jHnWoT8lxmHKz8X6lB+IiYnBTJ7W6TcYurq6KiRU/qCgoNu3bxPTunz5Ml6o
Z8+ejcnszJkzhfvPmywPiuGXz6aEhdg3PQ/OEAUQAczgTE1NTWJiIt5sZGQk
JuCbKFO9TPm5WKXyK9DzUMCqVasUEir/li1bMF5BjcLb1Gq1mIBv8IpFREQI
zwIPkpzsi9NoLd0vTgtP1trLkq+Ww1tvvYWptx999JGplufMmYOxLPzgCab8
XKxV+dVq9eHDh4kPpU6/fqZr167SKP/TTz+N6S8fOnTI1DIfOHAgJrN5eXkC
s8CPHi4+e8PTKV1rAhOdbGQ7b+VZJ580jZWvJkKG2YTfwC9NNQ6dbszOlKqq
qujoaCG5YMrPxVqVH4iLi0OO+RQVFUGvk/gzgcqvUql+/PFHYiq1tbUpKSmm
GlcqlUeOHCEah+9O9+7dheSCNyPcwvKDO1C63veOl0X629q75eoy/haUHqXW
ypG+REC/GPMeQb+An/2hQ4di7O/cuVOIbjDl52LFyg9MnTqV+FwMYGKgCVR+
ZGh9w+gTD9LT0zHnthQWFsoy1au0sZnq1Yqe+I/xiJR4fjdU5bglMM2Q+oaA
FG+ldR741b59e2iNEOsVtGqgo80vCeTOlDphU71M+blYt/JDVUTWKAxClN/P
z6+8vJyYBJQ2/JJ3Kps2bcJkBLlqSHQ0CtuFfgn0xL+fC/nAZbHwsFWv9U/m
pr7cL8nJ1tpmmeE9JUpEnb4v+eyzzwpJqFOnTrTbLUz5uVi38gNJSUmY8FAY
hCj/+vXrMUmMHz9eSGaRC4fu3r0bFhYmJCHeuNuqV/9eMEW88nSZTzmaPM7M
A42N7SLfJj5hs73jrUz6hw0bhqm3oswfIRc/8I5GwpSfi9UrPzB9+nTi08HA
W/kzMzMx7Zlz587Z2QkdMUAOcG3btk2uAM4hKsfP/zdIIvr196D01nZ0D16E
l8HIsNUodzMKlCEQd3d3zGmnYp0EgdyZAsnxm+plys+lJSg/yOkPP/xAfEBE
+Ck/lN7Ro0cx9rOysoRn1tHRsaioCJOcXFO9QKK969agDErivzmwfaCKYqDO
N0hT1S9LOOhElaVLl2IqkoinqCCj1/I7eIIpP5eWoPxAWlra/fv3ic/IOPyU
f8SIERjjYm1RB/r27YtJ8ZdffiEGV6FHZ0efPF0mJfFf6d/Olc6Qew+tP2bQ
qZMkg05USUpKwrwyV69eNeyFFAWtVltcXIypvT179jTVOFN+Li1E+RXoDSNG
4KH8Xl5ekFmi5erq6ri4OLFyCs/r4MGDmBxNnz5drER58KqLjpLywzXXp42d
QuQDudIdPLbpUF2Vvwelx9lZcKRoeD2//fZbTBUaOnSouEkjd6YUFhaa2m5h
ys+l5Sg/1BNMXHEj8FD+jz/+GGN58eLF4mY2OTkZsxJPxqleA2M9ouiJ/0RP
QRt/GhCl1uYEmTA98f8C2wfQHHSiClJ+QT1MFQciYBC5B9PUJWpM+bm0HOUH
MjIyhIz5mKr8KSkpGPmF0mh82KJw1qxZg8nUtm3b+NmHPr6Pj4/AKWmVwuYD
n3h64v+aKznYKQYfpf2GgBRTU//Uv52LjeUt9nF2dr5y5Qqx5jx48CAzM5OG
A8idKdBuMWlmmSk/lxal/MCCBQuIT6o5TFJ+KDRkyNA33niDRk79/PyQx1PW
ByzFEB8fv3LlypKSEng3Hz58WF1dffDgwSFDhjR3cBgRrY1yhV9bSsq/XZfZ
1cmXn2P/30Nb1XK/JH4OzPFprVZYWATRefPmYarN5s2b6fmA3JmSn5+PVxKm
/FxamvI7OTmdP3+e+LCaxCTlHzx4MMbmiRMneO98JPLOO+9gfCgoKHB0dCRa
g0c2adKkaj25ubnjxo0bOXLkwoULL126BEaOHDkSFMRzTYuv0n5TQCol8c8N
ymhn78bPMYW+VzLLO06IAxNEHXSiTVxcXFVVFbHOVFZW6nQ6em4EBgZCEkQ3
Hj161OBwPSMw5efS0pQfeOqppzB9ycbglR8ZhArazOAMvZxqNBpQdUzW3n33
XaI1+A388vTp07Gxsdx/t7e3N8yewyeVR8AuAzF22r8FpVMS/y2BaaFq8qet
MVBHR3lECndgkFswv2KRnr1792IqzNSpU2l7gtyZgl+iJpfyQxvJSQ6MNylb
oPIDy5YtIz6vxuCVf/HixRiDOTk5VLMJ9OrVC+PJnTt3QkNDjdhJT0+H71RR
UZG3t/cTTzwBXwFo7S9duhS6FeHh4fCDv/71r2Bn3bp1vF3NQK+c4XGt9U/2
sDW5b/WyS5AoqW/XZT6ntYBjIrOzszG1RZpTfiAJSAjjD6bdopBP+Wtra6vl
YNq0aUY8b5nK7+zsDE0F4iNrAFL54+Pja2pqiNbu3r1rXGxFAcoZeSp9bm6u
ETvbt2+H37z00kvw59WrV9fpQ0l/88039+/fr6ioiIiIgHZXcXEx/FXIIEBP
5wBKyg/XYt9EjSnrPJ909BJxx8HWoIwke9HWvdMAvwfQUA0k4OWXX8b4A+0W
zMETcim/XBhf+9QylR/o2rWrqWM+GOWHfIEeYqwJP2kCSWJiInJFU3NTvaAJ
8J26efOmYRrXoPxJSUnw57lz58KfhwwZovjfzOAf//hHId4Sd8gKud71aqXE
zbfG2zl/Kfbo05bAtBAVn0EnaZg1axamkhw4cEAyl0B5kNsKoGVClBSm/Fxa
rPIr/qdgeDDKj9w/e/nyZeGny+FZsWIFxquCgoImh0yjoqLgf//xj38Y/moo
t1dffbVLly7Hjx8vLS01dF769esH/z5//nwhrtIO5gxfFqIPAUrNZ4HtaaS+
xj/Z3fRBJwlAnooInVnDF18y2rVrh1kajTl4gik/l5as/G5ubphDDOshKr9W
qzUsdCHSv39/afJowNvbu6ysDONYk2ODMTEx8F979+41/NWg/NXV1Y8ePYJ+
0/Dhww3/3qdPH/j3RYsWCfRWo7BdzHcVJeZ6UetvJHUXG9Un/rRWmcK1yDfB
pEEnacjPz8dUj08//VR635AttObaLfUw5efSkpUfyMrKwhyPaICo/B9++CHG
Do/DFoUzduxYjG+VlZWNZx/c3d2h3XXhwgXDUzO8iXF6iouLb9265eLyODzm
xIkT6wQHmv4tRVv1GprBnNMdPJpMV62wmePTmp7sG64p6EEnaYDWMqZuQOPB
x0eGeWpfX1+oYxgPjU/1MuXn0sKVX4GOnF9HUv6oqChMfxkayampqZLlrh61
Wn327FlMNrdu3dr4dkM9MXhuUH7Dkh7DKqbnnnsOHujhw4fhM5qcnCyKw/pg
zlSGXODSn5/YcLQNavl4z2jasm+4XncLFaWUhGNvb098YQ1A40EuJw2NCiLQ
bjESjYQpPxem/F5eXpi193Uk5d+xYwfGyNq1ayXLWgPwHZxu3bo1uHfAgAF1
+qF+lUo1d+7cS5cuBQc/XqPepUsX+PPkyZP79OkDxv/5z3+K+GSTHgdzprXI
f0NAis/v4+oMdA2WRvYNV3ct/8PXRAS5bP7nn3+mt+WQiEajQW7ANHLwBFN+
Lkz5gd69e2Mk0Yjy9+jRA/MsKioq/P2NDTLTZvfu3Rg/4S2DpiD3RqgDO3fu
rNPv2W88mtq5c2foj0OLq02bNuI6/KwTxWDOy/2StP8L5gwJbaeWUJPXNl1G
msZd3OIyldDQUMxWWXg7GjcGJAa5M6Wu+XMumPJzYcqv0C/FxJwE15zyOzg4
IHcHTJgwQeKsNSAuLg6z16CuqU2aWq12z549dfqNPOPHj09LS4uNjYW3bNOm
TQ8ePICPGrxZNHweQLMpbjg/MYnmSTFGrpygtMhGg05SAlUaUxlMCo9DD+T+
YtCfJqd6mfJzYcpvwNvbu7S01LjbzSn/tGnTMA+icUNaFpYsWYLxFpqCISEN
A11Cf//tt99usH4JPiU5OTmGYX9KDHMLBYmmdHXX+k/yjKFn3/g11iNSrpBu
ERER8CnfSwJ+ExMTI4uHDUhISCB6a6DJnSmpqanEG7Ozs01y6emnn0a6JD2D
Bg0y4vny5cuN384jiu+6deuM2xRylDk9evToYdztJlcOQEs4NzcX8yAoNYlN
xcPD46uvvsI4PGbMmCYtqFSqlJSUgQMHjhgxolu3brxj9TAYDAaDwWAwGAwG
g8FgMCyL/wPThXzjDQplbmRzdHJlYW0NCmVuZG9iag0KMTI0IDAgb2JqDQo8
PC9UeXBlL1hPYmplY3QvU3VidHlwZS9JbWFnZS9XaWR0aCA1MTAvSGVpZ2h0
IDEwNC9Db2xvclNwYWNlL0RldmljZUdyYXkvTWF0dGVbIDAgMCAwXSAvQml0
c1BlckNvbXBvbmVudCA4L0ludGVycG9sYXRlIGZhbHNlL0ZpbHRlci9GbGF0
ZURlY29kZS9MZW5ndGggNTE5Nj4+DQpzdHJlYW0NCnic7V13eFXFEt97k5CE
YiCgSBEURNQIYkFRVFRA9IkYsT4b9u6HvSvY9VMUbM+uyLOLBQsWEBXlWeAh
T1REIBKiIIghgZB673m335lzdmdncw+w9/vy+z7+yNmd2T3nt+zdnZmdFaIF
LWhBC9I46U4SZ91Gl6cxrjW7zQFIcFeu2HZIbEjy8a7g4SEukT1A2f7s/iVx
KXi7HFfZlemy7Uz1bgV6dVryYRf0dkO5ugoRQSeYdeS4sENhWedryPI0wmfy
G23zG5ScEWCK/RtK/d05+fgY8PQml8hpoOwyfgcT+F9aeEMrV9nSdNn0oKHe
bqBX05IPAzPh6y1vw9R1HZQK7W3Uj/1qSErXlojA42SNFO4wafYEJHoUT2hg
CApdnnq+xdl3zjbUK2Vf7N4A3+9GnqrO66DQ00bd2PFPktG6YZE6edPJOgm8
aDT+g59C2R/dX1aKwGdQZmFaZsuzX9ndTK+cffEIfMGqbVmqHoMylZ31AmkU
LyIZDZ8Rq1X0PVkrhs8KTNqNjPNGKH0xR2Q06tqwdMGWZ995j/vjFYeC/Y5r
oM4nOJpK0Hwx1qQTBZ/TlN6WqNejgq7nOIs6mbQbxaNQ/M/2eoH8X6DEm6DE
AvadMUZ6FeyLC6HKxn4MTe9BiR9Yc2gCwRdpSqekJvM9q+maq/sYNBtHJzTO
79ELjIX1N+4ASmxgf203E70q9nPQLDtdr2gYXLPD+VCPO2hKZ4HJfGQjVbNm
sEmzCVwMNSA2pej4F6w/DhbZwL7zjsncr2JfHIwWtiN0evBoecOgB+Iceq+3
qCOsfAlRuekkk2aTyJsPdbykqz4B1i5rC4usYN85TapBDiX74hWockGuRs+Z
sPaG7Q16MBytFzxwT+YT1FWvM2gV4FA4zpsG0ZX71MIWj0dldrC/hrdGj0HN
fs8NUOe5tJq2K2Dl8fz2RT+0T/Rgo9swljtVVfVxs/VuGq9CLbPpHeMbsK7L
PGQH+85U/ndQsy9ugSr/aEeqGQfrlvFNraLbchWZMTR5LYZtvpZX/TCP3ypG
T2RpOo6qeiCcJ+r740JL2A+Tb4BAsN96GdR5O6WlO1qLH8tuXbSdK6cyiWsl
Mtt63jeKBUX8Vt1A43xJvrpi8D+w5iRXqSXsOyu35uol2BfHQpU1lAvhGViT
bS6PTONom+jFk1JVJX97a67owW7UCzzOr1RXPBnW+7ODq9QW9vVL1yQo9gMz
oMrJaiUDmkC9ht3YLxVAphYvpism86F17prVe7EbleE4qGut0mJUWAbrneMu
tob98DFMvRT7ol89KG1Sum0Cn8CmH+S/1JX0Xk89mZ/pEmwayW9U+gZonE9U
VbsW1vrOsw2yhn3n945SNR6Q7ItJUOWnqhn9SFhrVTH7nY6HU4YXFcRkfhuq
GWbZ5yn0g9vOur7ySsiNFfJaluxh35nC00uzX4xcb6VyFa0Wwkp8J+OgjRT3
znpqMg++AKtOaO5eLw00zt+S10FuLMkPoUXsh0ex9NLsi/Ohyp/lxnvkEvjG
HXqiRG/aqdtE978AuFmn6kxRDBSvht/uYFmVEvg7uE5iT7eIfaeCNQVr2M+Z
B1VeKtNQtArUCGlMZWl0pJ26ziVs+W+40SckzoONfysbw2h/crWkgk3sO89z
9GrYx+aN1e49ThR3G7cZRQEKkfDiAe1knpw7lnbhtkkiF1keJMZy5Mb6WWYU
sIr98JEMvTr2BfK+3uct7wkN31VcJoIoNM6LNxk/IINjJrq1/A0mjYPgOP/N
M5/k/hd+2n/INFjFvrNsK71eLfvIjLext6ccjQ7CUIJxJ03+t6zJ/ITInqH+
UG6TWqA38USzITfWO1IFdrHv/EuvV8u+uAFqfNVdui/8H/MTYSRF0Dh1lzHd
VNcmY758wXZwnK9zdaEddGPV7ihVsMXZX/sx/IohfZCFnv2CX6FGl8st+AUo
DB/OfJnD4OrZi8oSpp7A47fpK/FxE+yEK5ptHCy7Uy6/xdn/q1cV7OZS2jMn
OOyLUqhxDnaAIleAYpvsxen0f/0VXbmKckwD2EkULgGdwNFs3dfD/rWVy295
9nPQDt15RKeXwX7gI6jxRFjUCs4LkkWBCuNJ9p252kG7aVAKR+V0uOt4FnZP
FUJkAftBZHRvOlijl8E+NnMshSHTl8O2DI5RBJ+n6Z/mg/2mGUDjHP6OITfW
LNWEYwH7ojecpJxfFbNUEhz2xQNQI7BzdFwLni/XtISQj05RePGQgS4fsSs0
9y9IeRiRG6txD5W0DeyLy9B3dIcguMBivwM051WmYwcehA2Zndvr8CNN/+V6
FZsCaJyfl3w6Ej59VClsBfs5s2FnQweRelnsi7OhxoeTT/tAN7tyPlSg10qS
/Uaui9pfoHG+MrH8QG6s1WrnqRXsi74oTu0XMsqOx37Od6Baw86JpzC+srG/
UliBfVHUqAfr9zFV6AvOgX1IRLMhN9ZFalk72BdXou94L6WXx77YHxp1EpYu
5AJ4WC2rQint3l/V01xl5sj5BnShJhZh0B46I+cR61FL2M9FYa8NlN+Nyb6Y
DOqFY9bVIPxOxHyoBl6gePCDzKe0yTEYjukXok/uBQ9CBxKilrAv+qEzBz8Q
51q57HeDVqS50VZQhOP5xi8UQQCFVHjxiclhQN8Ax3nTwMgCBf6OvkhJ2sI+
Nlo6d6n1ctnHMW1jhGhdBv6e27z9ee6bNP3PZh6zYw40zmcFxMvgz2oyN4o1
7Ochb3XjQPW7ctnPXwxqrmgjrgd/hg4wfp842n5L0+/+hpsFaJyX7gdXJ9eT
gtawL3ZHQc8LlHM/m30xEppBb962EvzFjCGUoEsZyX7o5GZrbj4K4Thf9BX4
YzGdGsIe9l3HopW+MD774n1QtRqeZ6tme2W8KIHmQi9qh+hV+I6jFJ0Ja/L6
WMR+AZBwnHpVgKwB+33RUhJAdtyKjeEqrYkX2ikT5c1D4AN5X3RpUSxiX+yD
TkZ/r1g/G7Av7pN/lEWGqXJcOCMkV5vAYvahNP+ws+esUBS1ijD/FGxiX9yD
+j5erteE/aI/pPxwwgcpaNy9sw1OBPsF6TjXZnWxiv0C5Eipk0c/mrAvxsg+
ilZKh+Bkmdo0XvY1hIMF2Tj/XRt0YBX74kCU5OZr6ZFII/Zz0AHmOGrNEyW5
kT/Tqxbi7oxbMMYZ3l6cqhWyi30xEXVfujgzYl8M8prmGVmutChe6FELET5P
r8JneMf5F/oZyDL228Cdq7NRloXYjH0c4RRFuS9BWBp3b4M2aZTv2Nc1zhsZ
iWctY18MQe8wR2KPNWS/izvLjk/mGI27dx0nYaC/eA73gJOw0jb2cSZK5yqv
XkP2Xc5jznzIwzFkIj6nPAODUvOAx/kazr7TOvaLyuA71Ows3DBlP+9nqFAd
42aMsXSU91yTqEFfgDxQL3MkrGNfjEC2lNmeud+UfZw3YYGPTrh3Sfb1sek+
Y280GTXszhCxj33xFPqGnoZN2d8a2+X5ycF0GCa1r6WwqpdvLbGQ8yVu/zPG
T5yF7BeVw5eocZvNTdl/Gn8Uf5b8EfSjvT0b2XkBfIJnw3+KXsZC9sVR6Ad1
pquCIfueDT8ZNMhHl2UOhZBBCkBf0MGzBV3ZXitkI/tiCnqLC3GhGfs5njyZ
td6FZDOgi/KQbFY2LSQxZxO1Qlay3+l3+BJVOAe5Gfsorj+Oj41fxYvct2ny
H9vcEV79JZmjG7Qx61ayL45Bc//HaP1ixH5HWaKlzCflwESJWoD3N/epvoDU
8aA9r2In++Il9BbIam7EPrqtJ4nyjHfil8vUpjGfkYLEX5wk74hu4Wcp+53R
7SPr4DEJE/YHyI9fZOrn0ZzqKDe+YzBTtCuX96SiPS1nKfviZDT3w0v7DNgP
KtJsZbjw05j4qwdkpL05gMc3HPjlHqDlbGU/gAPnQT5NA/ZPhSqgCfHDTBZl
utOc0uxYmxQormvak+CPBtrZZCv7oiua+yvTkymf/SJ4Hdpi5O3JYOFXTJ/k
Dl+oV+EzAvDSx7q+28J08J+SCz9r2UetR1bRqf+tfPYnQAWj8n4AfxklbkDQ
ZXGQJAjc1Ch1tX8V/PuflKS97LuilFNhSmz2d4HpWyJz/Qj4g0gcFSOBky17
8frmD+lrA62Of7QXogCmlF1B3QBiL/uiRyX8rGuSSTW57AdgKrj6ksiDd8AD
VU5zHTThvHO2QDjvrbADsQXSKPiEWvhZzD7OS+C8kZj7ueyj2yti2WD6wsng
g2Yt/M6gffpLje7y9Qe9YNr4xAUMMJdTPbHws5n94Ifo0ybSjjHZbwsvql8d
z/6NFgKjjd9IiKH0TXx/79IMnZniLdCB5OFUdEWJ8o4Ku9kXPVEyr9XbxB4y
2UenAi+IP2sPc9wsN0+TXlJJkl9/sLHGzHEEnI1SlxshG6f6wk+r2ReXoq/7
WmwQ89jfEc6H85MHA1BKe0X2UjV0x3fNbpP2B/lwhbc+ZRPtBO/eLVcanu1m
PwdddB6/tI/FfmAalEtlxUZJy2sNj1vqnLrjzdT5A5iUAN6wjP7f3K+Stpt9
0QfN/auicz+LfZSvDtywfAicJ80WfjlwyyDB5M2/13Nl6S4Dv2UoZ5viTJz1
7LvyJEUDVTnsF6JsvDA+AN1Ka7LwCzxEkz+Lm+vdV8AkLTghMVoPqK6btJ39
nDnw/aKX9nHYvxEKoRtZe8P1gPc+CzU06bp+4l/r5iMOhRR/jicfdCmPIi2p
7eyLXVGuhD+KOeyjvUIFpvgu5cAgMZo+u7GKn+3bR7SCxutGV7oL5PpZLo9l
tZ59cR36zM9x2H8dSrhOsraDUWPs47z70E7dms0dwBvHFbAPnpNbyLohdz/Y
z34ezLHohI7Us4/uovrKvRgbA9XpUpskcQlJvrOYPe+f62M2X5SH6m/P3TAo
g2+99PYQ+9l3JXIsL9Gx3wq6YEP7uotRZtNwKfNtpCFiaXzKXPMd3lDjXzbf
52APrvCWo2svpAu/LGAfuzEcmIhLyj6aD5/1lg+GU0MZc+GXpzm29QJrEulf
5Tgrd9DXY2EwjC+TXbeX9z3s4fESFdnAfj56CwgZ+13hUdYq2UlaFDLKXfi1
m+uQGM/Q0T0WfrfQn2y+ufNA6/Lr9obCcS5b+GUD+2IvlXNFxj46CiLN/tED
LuEUd5V50fU3h0L4dK2Gdgm+ZvqSzRdlYf9AXgeFx0liWbOCfXE7n/0D4Xj/
Vf5zPA7qeJdr8evnzgOBUXeIRj43ZX1+zoezHp1g5Fu9wrmIvB113kwo2cF+
gSJNjpd9NB86R8vVtVkOK5Vy32i4xr9LRwoHHk5XvZnbpBqPw6YnqGqhK4c/
8gy67GBf7C83tnjZvwgWf6z6P4ZytS9jx+OcnUlsBzwBEmKcr6UxEH6QVcqV
BE7k5jm9niXsi/t57G8DPZvqcOYgOuvOvx7zDocEFdc1Gp0Aqcswmy82gBMZ
ws6C9TyW7WxhvzX0Y6fgYR9lfiDuXtkHRvfzL2XUXcStjul0nwD5K7MDJYjU
ecQnRPcTeUIasoV9cYDs9JSbfZS17C/KAPc8pSZCc4euhTKxAsXpoCRU8dw7
eE6A/LoN772lQBN6iJxH0F1Eda7VYdawL2QeVhdtQTQfEndRRfZv6PbfUbiw
/zN/hsL1c86V5Art+LNDIXyBtLUOklXrl9LhxQM6QvwaXRc5gV2HmLKH/a2A
UBIu9tF8uECa5zUFFBSzFP5gB25sqJ92zdiHVjjf9vDK9ZadCU+j8QhJW/mf
yKq+2uxwkP4waLNGYzvcHv3m4IVf9rCPnTdxYPaLoVsjPJTWVogG03hQcquz
MBYLU3ifs6STV3C/GodC1QCPRMCTLzSO5h4lDs6CWm7VVUeGcrzw47J/bTse
0uYV39nHW9wYMPsPw6KpOm3oKnaw8Ns/vLzzkFsnPXrDjuI+Z7JMkD6/vaK7
W+AmRc3mZvNFh/XLtY6Ktuh4N7p5mst+Uz0P6ZHoP/tFHlsrYh8lL6nV5ksL
zIKa3kk9f9c5UTzrzPmssbpPYUWj7ILFqxwS811nBE9RXubQvGy++LA+I/Es
OsqMbmzgss9Femj5z7440j33Q/YDaDnOOKe3B7IgJRd+rWvXtoqwv6e43zk7
8k+6dNS4e99HK44hxEUuVZyUim6gOyxmMxYPQXhPkzMdLPyyin28T3Mw+8h+
V8HJnfIElFiSWPj1dT6PJvYeM2L+ml4RnVIbat40h8Sj4APvtIaqubybwdvH
gSK2iJvrAAbB2ScMYlmzi/3iCtwaYH8rVHQaR1vnSiiSCIbfxZkRZb/BCZ0f
PQs4USqpc/emQy22XkzXnGd6lDyAjrdJwhdkQHeJLEuvFLKLfXE0nvsB++hi
mjm8zRRK6FATXyl0aPotEGG/ZLeK6iJxnXO1XFLj7g0l/38VzibrRV+B3ph6
AAlzKrvoBaLojo5FpC3bWca+K5Fjmn00H4aYQZb5v0Blb8cffucMirDfS0xy
Dg98HVZdcdC/kvwMifit4MtkrRgeMnL3Fi6BstdwxdC2Y2PqEFO2sd8ZGVtS
7OP5ULZPk2IUmkriVxee7nyee395DzG8/Kbjwl8pqRlB52heGZtJ7iLrJHCZ
yfuj/AGL2SdIWqO8sqlDTNnGvjgREpZifzTsQzV/KQUPujtLYrbX4HTnlfgK
cPj6DcSaXOPu/bGDEOfQVRIIlfLfHl2vHR6lF0jiBNRkMrA469gPwLNYSfbb
lME+0DcPI+yGAjZuiT1rO8Mpu2a/kqNeDFWR6bfupL/EzFaH1dM1kljviTtW
vjxKEGuSeQzbB5cmFn5Zxz5K5JhkHxkzl5i4T9DWfUPcZJ43dkX0r4bXac9v
8MEZJC6bSpenMYXb475ITHZnlRJ7ItHS+MMDwCP3/W3Dub0HOCsl/VT64Xvu
tLVT0mVvGvs6jk0LJ8Zau2mwC0Y3bXb6EIomd2q5A8ecPzITF2wLWtCCFrQg
q/F/qQjC8A0KZW5kc3RyZWFtDQplbmRvYmoNCjEyNSAwIG9iag0KPDwvVHlw
ZS9PdXRsaW5lcy9GaXJzdCAxMjYgMCBSL0xhc3QgMTU2IDAgUj4+DQplbmRv
YmoNCjEyNiAwIG9iag0KPDwvVGl0bGUoU2xpZGUgMTogWGVuIENhY2hlIENv
bG9yaW5nICYgUmVhbC1UaW1lKSAvUGFyZW50IDEyNSAwIFIvRGVzdFsgMyAw
IFIvWFlaIDAgNTQwIDBdIC9OZXh0IDEyNyAwIFI+Pg0KZW5kb2JqDQoxMjcg
MCBvYmoNCjw8L1RpdGxlKFNsaWRlIDI6IFhlbiBpbiBFbWJlZGRlZCkgL1Bh
cmVudCAxMjUgMCBSL0Rlc3RbIDE3IDAgUi9YWVogMCA1NDAgMF0gL1ByZXYg
MTI2IDAgUi9OZXh0IDEyOCAwIFI+Pg0KZW5kb2JqDQoxMjggMCBvYmoNCjw8
L1RpdGxlKFNsaWRlIDM6IFJlZmVyZW5jZSBFeGFtcGxlKSAvUGFyZW50IDEy
NSAwIFIvRGVzdFsgMzMgMCBSL1hZWiAwIDU0MCAwXSAvUHJldiAxMjcgMCBS
L05leHQgMTI5IDAgUj4+DQplbmRvYmoNCjEyOSAwIG9iag0KPDwvVGl0bGUo
U2xpZGUgNDogc2NoZWQ9bnVsbCB2d2ZpPW5hdGl2ZSkgL1BhcmVudCAxMjUg
MCBSL0Rlc3RbIDQwIDAgUi9YWVogMCA1NDAgMF0gL1ByZXYgMTI4IDAgUi9O
ZXh0IDEzMCAwIFI+Pg0KZW5kb2JqDQoxMzAgMCBvYmoNCjw8L1RpdGxlKFNs
aWRlIDU6IFNoYXJlZCBMMiBjYWNoZSkgL1BhcmVudCAxMjUgMCBSL0Rlc3Rb
IDQyIDAgUi9YWVogMCA1NDAgMF0gL1ByZXYgMTI5IDAgUi9OZXh0IDEzMSAw
IFI+Pg0KZW5kb2JqDQoxMzEgMCBvYmoNCjw8L1RpdGxlKFNsaWRlIDY6IFNo
YXJlZCBMMiBjYWNoZSkgL1BhcmVudCAxMjUgMCBSL0Rlc3RbIDQ0IDAgUi9Y
WVogMCA1NDAgMF0gL1ByZXYgMTMwIDAgUi9OZXh0IDEzMiAwIFI+Pg0KZW5k
b2JqDQoxMzIgMCBvYmoNCjw8L1RpdGxlKFNsaWRlIDc6IFNoYXJlZCBMMiBj
YWNoZSkgL1BhcmVudCAxMjUgMCBSL0Rlc3RbIDQ2IDAgUi9YWVogMCA1NDAg
MF0gL1ByZXYgMTMxIDAgUi9OZXh0IDEzMyAwIFI+Pg0KZW5kb2JqDQoxMzMg
MCBvYmoNCjw8L1RpdGxlKFNsaWRlIDg6IFhlbiBDYWNoZSBDb2xvcmluZykg
L1BhcmVudCAxMjUgMCBSL0Rlc3RbIDQ4IDAgUi9YWVogMCA1NDAgMF0gL1By
ZXYgMTMyIDAgUi9OZXh0IDEzNCAwIFI+Pg0KZW5kb2JqDQoxMzQgMCBvYmoN
Cjw8L1RpdGxlKFNsaWRlIDk6IENvbG9ycyBDYWxjdWxhdGlvbikgL1BhcmVu
dCAxMjUgMCBSL0Rlc3RbIDUwIDAgUi9YWVogMCA1NDAgMF0gL1ByZXYgMTMz
IDAgUi9OZXh0IDEzNSAwIFI+Pg0KZW5kb2JqDQoxMzUgMCBvYmoNCjw8L1Rp
dGxlKFNsaWRlIDEwOiBDb2xvcmVkIEFsbG9jYXRpb24pIC9QYXJlbnQgMTI1
IDAgUi9EZXN0WyA1MiAwIFIvWFlaIDAgNTQwIDBdIC9QcmV2IDEzNCAwIFIv
TmV4dCAxMzYgMCBSPj4NCmVuZG9iag0KMTM2IDAgb2JqDQo8PC9UaXRsZShT
bGlkZSAxMTogQ29sb3JpbmcgQ29uZmlndXJhdGlvbikgL1BhcmVudCAxMjUg
MCBSL0Rlc3RbIDU0IDAgUi9YWVogMCA1NDAgMF0gL1ByZXYgMTM1IDAgUi9O
ZXh0IDEzNyAwIFI+Pg0KZW5kb2JqDQoxMzcgMCBvYmoNCjw8L1RpdGxlKFNs
aWRlIDEyOiBCZW5jaG1hcmtpbmcpIC9QYXJlbnQgMTI1IDAgUi9EZXN0WyA1
OCAwIFIvWFlaIDAgNTQwIDBdIC9QcmV2IDEzNiAwIFIvTmV4dCAxMzggMCBS
Pj4NCmVuZG9iag0KMTM4IDAgb2JqDQo8PC9UaXRsZShTbGlkZSAxMzogTDEg
dnMgTDIgY2FjaGUpIC9QYXJlbnQgMTI1IDAgUi9EZXN0WyA2MCAwIFIvWFla
IDAgNTQwIDBdIC9QcmV2IDEzNyAwIFIvTmV4dCAxMzkgMCBSPj4NCmVuZG9i
ag0KMTM5IDAgb2JqDQo8PC9UaXRsZShTbGlkZSAxNDogQmVuY2htYXJrICMx
OiBNb3RvciBDb250cm9sIEV4ZWN1dGlvbiBUaW1lKSAvUGFyZW50IDEyNSAw
IFIvRGVzdFsgNjIgMCBSL1hZWiAwIDU0MCAwXSAvUHJldiAxMzggMCBSL05l
eHQgMTQwIDAgUj4+DQplbmRvYmoNCjE0MCAwIG9iag0KPDwvVGl0bGUoU2xp
ZGUgMTU6IFJlc3VsdHMpIC9QYXJlbnQgMTI1IDAgUi9EZXN0WyA2NCAwIFIv
WFlaIDAgNTQwIDBdIC9QcmV2IDEzOSAwIFIvTmV4dCAxNDEgMCBSPj4NCmVu
ZG9iag0KMTQxIDAgb2JqDQo8PC9UaXRsZShTbGlkZSAxNjogUmVzdWx0cykg
L1BhcmVudCAxMjUgMCBSL0Rlc3RbIDY3IDAgUi9YWVogMCA1NDAgMF0gL1By
ZXYgMTQwIDAgUi9OZXh0IDE0MiAwIFI+Pg0KZW5kb2JqDQoxNDIgMCBvYmoN
Cjw8L1RpdGxlKFNsaWRlIDE3OiBSZXN1bHRzKSAvUGFyZW50IDEyNSAwIFIv
RGVzdFsgNzAgMCBSL1hZWiAwIDU0MCAwXSAvUHJldiAxNDEgMCBSL05leHQg
MTQzIDAgUj4+DQplbmRvYmoNCjE0MyAwIG9iag0KPDwvVGl0bGUoU2xpZGUg
MTg6IFJlc3VsdHMpIC9QYXJlbnQgMTI1IDAgUi9EZXN0WyA3MyAwIFIvWFla
IDAgNTQwIDBdIC9QcmV2IDE0MiAwIFIvTmV4dCAxNDQgMCBSPj4NCmVuZG9i
ag0KMTQ0IDAgb2JqDQo8PC9UaXRsZShTbGlkZSAxOTogUmVzdWx0cykgL1Bh
cmVudCAxMjUgMCBSL0Rlc3RbIDc2IDAgUi9YWVogMCA1NDAgMF0gL1ByZXYg
MTQzIDAgUi9OZXh0IDE0NSAwIFI+Pg0KZW5kb2JqDQoxNDUgMCBvYmoNCjw8
L1RpdGxlKFNsaWRlIDIwOiBCZW5jaG1hcmsgIzI6IGludGVycnVwdCByZXNw
b25zZSB0aW1lKSAvUGFyZW50IDEyNSAwIFIvRGVzdFsgNzkgMCBSL1hZWiAw
IDU0MCAwXSAvUHJldiAxNDQgMCBSL05leHQgMTQ2IDAgUj4+DQplbmRvYmoN
CjE0NiAwIG9iag0KPDwvVGl0bGUoU2xpZGUgMjE6IFJlc3VsdHMpIC9QYXJl
bnQgMTI1IDAgUi9EZXN0WyA4MSAwIFIvWFlaIDAgNTQwIDBdIC9QcmV2IDE0
NSAwIFIvTmV4dCAxNDcgMCBSPj4NCmVuZG9iag0KMTQ3IDAgb2JqDQo8PC9U
aXRsZShTbGlkZSAyMjogUmVzdWx0cykgL1BhcmVudCAxMjUgMCBSL0Rlc3Rb
IDg0IDAgUi9YWVogMCA1NDAgMF0gL1ByZXYgMTQ2IDAgUi9OZXh0IDE0OCAw
IFI+Pg0KZW5kb2JqDQoxNDggMCBvYmoNCjw8L1RpdGxlKFNsaWRlIDIzOiBS
ZXN1bHRzKSAvUGFyZW50IDEyNSAwIFIvRGVzdFsgODcgMCBSL1hZWiAwIDU0
MCAwXSAvUHJldiAxNDcgMCBSL05leHQgMTQ5IDAgUj4+DQplbmRvYmoNCjE0
OSAwIG9iag0KPDwvVGl0bGUoU2xpZGUgMjQ6IFJlc3VsdHMpIC9QYXJlbnQg
MTI1IDAgUi9EZXN0WyA5MCAwIFIvWFlaIDAgNTQwIDBdIC9QcmV2IDE0OCAw
IFIvTmV4dCAxNTAgMCBSPj4NCmVuZG9iag0KMTUwIDAgb2JqDQo8PC9UaXRs
ZShTbGlkZSAyNTogUmVzdWx0cykgL1BhcmVudCAxMjUgMCBSL0Rlc3RbIDkz
IDAgUi9YWVogMCA1NDAgMF0gL1ByZXYgMTQ5IDAgUi9OZXh0IDE1MSAwIFI+
Pg0KZW5kb2JqDQoxNTEgMCBvYmoNCjw8L1RpdGxlKFNsaWRlIDI2OiBDb25j
bHVzaW9ucykgL1BhcmVudCAxMjUgMCBSL0Rlc3RbIDk2IDAgUi9YWVogMCA1
NDAgMF0gL1ByZXYgMTUwIDAgUi9OZXh0IDE1MiAwIFI+Pg0KZW5kb2JqDQox
NTIgMCBvYmoNCjw8L1RpdGxlKFNsaWRlIDI3OiBTdGF0dXMpIC9QYXJlbnQg
MTI1IDAgUi9EZXN0WyA5OCAwIFIvWFlaIDAgNTQwIDBdIC9QcmV2IDE1MSAw
IFIvTmV4dCAxNTMgMCBSPj4NCmVuZG9iag0KMTUzIDAgb2JqDQo8PC9UaXRs
ZShTbGlkZSAyODogWGVuIENhY2hlIENvbG9yaW5nOiBEZW1vKSAvUGFyZW50
IDEyNSAwIFIvRGVzdFsgMTAxIDAgUi9YWVogMCA1NDAgMF0gL1ByZXYgMTUy
IDAgUi9OZXh0IDE1NCAwIFI+Pg0KZW5kb2JqDQoxNTQgMCBvYmoNCjw8L1Rp
dGxlKFNsaWRlIDI5OiBCYXJlbWV0YWwgTGF0ZW5jeSBNZWFzdXJlbWVudHMp
IC9QYXJlbnQgMTI1IDAgUi9EZXN0WyAxMTEgMCBSL1hZWiAwIDU0MCAwXSAv
UHJldiAxNTMgMCBSL05leHQgMTU1IDAgUj4+DQplbmRvYmoNCjE1NSAwIG9i
ag0KPDwvVGl0bGUoU2xpZGUgMzA6IEJhcmVtZXRhbCBNZW1vcnkgU3RyZXNz
KSAvUGFyZW50IDEyNSAwIFIvRGVzdFsgMTE1IDAgUi9YWVogMCA1NDAgMF0g
L1ByZXYgMTU0IDAgUi9OZXh0IDE1NiAwIFI+Pg0KZW5kb2JqDQoxNTYgMCBv
YmoNCjw8L1RpdGxlKFNsaWRlIDMxKSAvUGFyZW50IDEyNSAwIFIvRGVzdFsg
MTE5IDAgUi9YWVogMCA1NDAgMF0gL1ByZXYgMTU1IDAgUj4+DQplbmRvYmoN
CjE2NiAwIG9iag0KPDwvVHlwZS9PYmpTdG0vTiA1MDAvRmlyc3QgNDgyMC9G
aWx0ZXIvRmxhdGVEZWNvZGUvTGVuZ3RoIDYxNzI+Pg0Kc3RyZWFtDQp4nKVd
Xassu3F9D+Q/zD84LamqJIExOJCQ4PtgbL+FPMT2xQSc2JhrsP991tJUz+49
e/RxNA/3du/pri+palWVWt0nmNyOW7B004hDuYVgOGb8V28hH7eYEo7hFovi
GG8p4VpOt1Rqu0ck4BhBzvvtZgfos95M+Xe95Sg4llvGf6HIrQj4gVep/Dvd
qoJvAc8j4kKFEgfvrPgjUHQF+1ChYsV9UXkJAlLgJXBOmZfwqyRegkzhzxUM
FRbFo2kHMw6aB/3icVB/3EMDCn8u1ITsi5E7rpdAAv4MynDQcsEJhwN/xCgF
J/glHbwRfyQj53yLQllQDrfgxoB7VPgLVFEoFTG60YyX8EduN+OPnHmpYpCF
7PFrPXgJnKviUsS4H5GXMk6oFJTDGIBZNJzUpsstRUxETAGTRFLMCGaL98gt
ieAeDHHSCJ3xX1KYy9lNpiTHPTlwviErwxFgNyaZIg7wqZj2eKSbHAdFZJxQ
DVwWTlOEkcJ5iAkuETnyEm+SaCUEC6cpYuZFIm8OOMGoRwG5Gi+Vm1gbNnA2
DiYGQjJMiQrOBZLJFIOKSwryCqWiQFbNbYxveggvGU7gBRFepYFqKD2bamAc
NRZeKjdNnEEIxuTwUsWJQRb9WCOnCAyVBjIwDGMTcVmNnKGcZgYExkgLJwXR
oiXzEoRWjjOstYNTjYCxg7aDwEIkn4oTqgG9jVwjgyY1L0DUJOOldDOh0MQ4
OsgHVGbkXG6WaU4B54z/RfiqtWlCMFk97pFqVelN+ZYPuh5mOh/0OgRgDvAU
DkRmTETEV+ZoweNuOdGXMTE5QYWIGMxCh0RsZOHkws+yYvgj4jQbDYRPw1l4
CQyz8BJjvZIKQgvGmEGSK90Ks5grdIEv38ohvHTcCuMr4b8SMr0730pzYZhd
aEpCoJWkvLkCPRgKIeAk0/FBrnR86F0UQokLxTAhHNCS6eaIwZIzL0FooVAM
X6mBfMCwGvmUWz0iLxlOKBSUNcBlEvy1RghMEFw5wwn31cQxhLpVYArCDjBG
S+ENlW6cEHoV04MTcM60HQQ1Y7QS/qgFA54wwRXCcAIRIGPUAv0ORjTmE2eV
F4FCR9BwB96DsJPgFjiDpySYE46EYU9C5EyVkU4uIhQFhDuUlsIpcVZ4lZwN
vJKQi1XSJqIuYodhEY5CcFFyLoW05FITr0IDqEXsiDxjGkDohRCIS0rIJnQm
JWYzuBN4AsYD+TG1JCYQJRehlYR+4DUoCLoBgYYzcjZMUTJygbPjPmgAzAaF
UVrhoBk5F9wN+GKGCLxKDSo1YCIDVIMf8wOgjPwqzzjOTG+xISe444zjDM1C
pG50fShPfkxdQCQlIOLM2lWmIQJlyuTXPIsJCwGJ+SiUVjgLhfwqxikVpqmD
To4IxRlGIkFHDAvhuLRsRtdlGkpEwsR0mBg2iUk30dbEFJiY5BJzZGqjxtyI
CZB7MsYgEqgpzTgGLU8y0yXmNihJWmpQOC7MmWClRHSeZdIyfR5MCcyfQv+j
fwdh5hN4HqYNY4JbeJZ5NTDzEtiZ9lELkB+zsbA0OMhFI68qz6CBYOQCEJ7p
gpwzwlMCuTDnQCTOCjSQQGkVdJwJnMEHyD3oEXg18YwawLcQHUwSiEsg/kF+
lWfKq6wDGMOCgMYZRoIIElTgt8xFqBLIjzOtCh9A7rrRETF+mb8BUfEbZRRq
H8mvMn8xVu2A1ZJYPx20iFELlFfmO54V/qYsQJgwGY1GoGMqxhkpGIPWRo0x
aEINGGXGqkEYjUZYE0YtygZcZVwaCwdhlFmGZwojFDlAvBgDlOGM99VCuYWF
XKNtpVyj5W8s16SVaUz6wrjMTANMhQg3jh+jMXMuhBGam36Mwdz0Y+RlhZ8J
Iy+zjhDGdM6R/FrhBx8QokUuiCtpxeR9/GKrvkhrPIMvC6O2tLlk1JY2l4za
0uaSUVvaXDJWS5tLzlGh/ZJbWckKhTGNOgEUjNpi1LQVn4bYkEwumfUGI7kU
zj6jFtMLfozaUlnDMEJLreQHDSqjVkqrRxMLEtaYTOMs81C1kl+rHpm/hPFb
GbUsclCc0SMYoZV0ci9mGTOMX9SbGCvGNDIRCxvKaPN7r2MzaxzKKJhHYUzX
gugURmhF1rm1xAxQhgyWJ8eRWQyxUmVhpq1CZV2tzPYHiyeOEmo5RKKyiD2I
jMq69qCnt3rjoA3K2uhAZYQzyjDco6y7DpYiymLxgOvgjDJYjDDXoB7G/DKq
UDhCD2URfDB+lUUOkhlksHQAKEMGa5nASlZZsgYiobISDq2ou1fTodVwPMts
NCILa8QfkSUSJHDG8lzhB8qCDOEIGazjAmsBjZSR8TcKQJ5hztiuRLrOjfUD
am+MibLcxDRABrwTZThkKovbyFpXWZBBBchIrMRZ7WqrwFtpyfo4sn7QxNKb
eQJww9obdK0HiJxbZYkU2ZqoUIZh7OgLOMssRykDQYizVu3Dfzj+KPeBCiqU
UTE/Kq28Z70Jm1H6R9arrMcP+Gir0FD3tGKWBT18QBH7OGPJ26p91j7Ksi8x
jynL6kSEUrYbiZ6E+pcFKOeNtSTSMc6s1fykaJ1GJgVrWDCBBixQkV34G6VV
4gZnoWUXNfYCqCxxxvo+c95aW8BqSK3V8/AuxcjFVta3Ahxui99KawQQPco6
Gy4Fi0rrCUhR2AK0mr20ip/zxo5KmReVHZBKK9t5H2e5tT4wC1crORO5tJKW
mV0r5TIfKRsrZXVNFMYZ46hSbsVoM59hROnPiBac0XfZ9qEypm2RDQUjqnUL
RH5iJc4402wGTWgb49eIFNraC86yMX6NrbQxfo0dI3ECToKZNsYvqkvU+4xf
Q1F8Y2zGVv6TCmfGFoQ9JoL/xnjAGZsHxi9aAMgIrS2BRvTB2JoAY/xmlsyt
GWttgDF+M/HaWpNC1Gqlf6bHWetjydUYv9kwavQUFEaIutZ5o/OHDMZvZntr
jF9MPtsfyqjwFWP8IhtABuMXBV5gc8TmBpFjjN/C5t4Yvy0bWGtiWMobI7mw
ktN7h5PYTyV2P5TLSC5IFmyt2PZQLuMXDT+4tIaFKw/GKKtthBhlldhprffh
4oMxymqTyyirRCRjDFbOpTF+K/OsMaYrcY5ZB2fwYGZthKqQlvdlzJ61Hipz
jlrrxYrbGIMVHcqt9eO1clZZ7wHbcR8r9oMe1mqTIzTaylaKcllTHuzlzFqf
BV7MJuidSMt+6GC+4+zADxN/YxtGvyXuoNni7LPWPnKjIOdsvJrYXbERRfTg
jKPBKv6o9FPEXGJ7grPEvuzgVTZUgR7LBihwFcPY2YXWBLdOjP2NFfZbrBaN
XUZgrdHq1sDsQIzBWWtuKYNjZ2wdUcpALls0FByt9WX7Bl9p1XngstLPfvbt
V21J67j9+ttvvv3q22//8Zcfv/3mp7/+7fc//euffvzfb7/8z9vxX7dvv/rj
rd3z85//8z85TXSa3/74959+9+e/v6IMbcXs16/ps9P/e3hJ+obQ0hdaR4bG
DZq0QSMbNLo/HnBa3NRWJu/H6MfUH6fgfH/z4+9/ej3I6c7kPo2n9i+ZwY3n
3hXyE5GsWGYfQr8wKKd/xYF/7YmtfbHlDKUffvengY/1yf7lz3/4x8DRvhCe
M/XDf7zUtch9fooOdLaxzvKarIYxmc3Ieqbmjpp1bGp1v66pb2qVsc5lRtbT
uW7qrK7zwJNrHuscOiH0QddTOnSiYKp1ca37gcBnB2OtX0fCha6rdS8Uxlqz
tKfWXMrth8KJGj98+wVb2fbXyyFwMK0eX/fBPtWfxVnPND2t2Ax2B+NSBjyO
q4Uldi0sjvBlBLIrcHnX+jWDeaLJHiHZfa70B5iLIAt1THoiSnMb+CjrI709
M3hUMqNMsye29MWGM/ePM02fbJJpvhAeQ+fjk7wWAUEGOutYZ5mRdQNnU2dz
nfNA5zLW2WZkkzT33TrXu87x6OscJ6m5dMgmhUDohFCcAlvoREGUsbHRYTUO
AiHWidadSPigm2Wa79U63StuPpvra/2o+IDDMWoPh31wT3Vn892tT06t95wu
Rlci9XmkCSCFTnSnKSKFzfBODklpYPlRr/MQQncegg/BHYzOAD/H/jTjDbAP
/YCe50nPfWc2Ou3qjPgZr6M8KccTkS7YkC5A+oXBOdLDPLklVo6+WHkM3V/+
+/++UD8Ivv3yFi9EwxWRNJE0VFUGI3Ta+m//88e//fXH1/TuhpIGJuuqyXIh
yiOTdSJpaHJ502RHQBk4l9RVk+2DSMPI5DyRNDJZ43smq2cQDX0+mlZNLhei
4WJMnUgammxvmuwApvoWnzCDrwFpB4J0uDJ3lhdbwGUD4LJl4ArpQjVErjMH
d2UNlX0TusyhywbQZcvQFfRCNcSuYBNZQ6PfBC9z8LIBeNkyeIX8QZWH6BXK
RNbI6PwmfPmSs6v4mk9ehq9QL1RD/Iqd4M8rAJbfBLDsAJb7ALZQxyX3l+Rt
nnh5KV52iv+uXtuq13vq5aj6dXM6czrz3/Mg+B5r5sO6MD4R5ZWxvVSjzwwe
q1rjunBHbIl9sQ8GgyntKHy2f13Pje65F1wuw5pbJpKGRub3jCzuIdeFvi+K
lFWTL6hcj5HJNpE0MrmGN032YKhHn0+NqyZfMLkOVyDLRNLQZH3P5Op4UWVg
sq2afEHkOgSN0EGNh6ihzQPUWLLZsbGWLh9uq160OYQLVRwa/Ro4PmQNjE5H
esvo5I850tHHvnQsI9iltOQ285XSsidraPR7GJbu6/Onih1FljHsUlqmMASx
8BrFPmSNjA7voVi6L/GcKr5WJCyj2KW0TGEIY+E1jn3IGhr9Ho4lf8yQQh/H
UljGsUtpmcIQyOJrIPuQNTT6PSBL9+cTp4qvFYnLQBYvQBaHQBY7QBZXgCy+
CWS+sOoqvuSzUE/7c0OvMturP/ejV+vFr/vuAU9MJ1af8HVG9Onk57yfQ9EZ
ppWdL/cFwQvRCl7GK849M1ja+bIntg7EynRK42vKNF3oEPfcSzJKw3UOmUga
GXl9WrBhZEruISn1+aTpMsdp8iUVpeEqh00kDU0ub5rswfBp+f9Zkekix2ny
JRHJcI2jTCSNTJb4nsni+CChz0emSxynyZc0JEPQCB3UkIUVjiQj1Fix2bFQ
dGBzXrX5Wk/L2hJrT9bIaD3eNNqBXwbYp8sIdq2ndW2ptidraPSbGKaOYTrA
MF3GsGs9rWtLtT1ZQ6PfRDF1FNMBiukyil3raVtbqu3JGhltb+KYOY7ZAMds
Gceu9bStLdX2ZA2NfhPIzIHMBkBmy0B2racnO8w7QGYrQJbfBDJzILM3i7i0
T9qBtBVSfUk6bwC8CD/L4vZ2+f3o7UXy677g7pn0TC4n3p4QdEbl6ajn3LX3
o+9Hh848gM6lLfH3bH0hWqnQPz3EeGaw1hhsia0DseuNwRNlmaZV8xC8ZNWy
1Bj0JI2MLPKWkam4Z5TU51OmSfU0+ZJTy1Jj0JM0NLm8abKn1E/PKJ4VmabU
0+RLRq1LjUFP0sjkGt8zuTq+fHpG8cSnThPqafIln9a1xqAnamjzCDVWbPZ8
+ukhxbMi03x62nxtDOpaY9CTNTCaH3N4z2hPKLWPfXIsI9ilMZBjrTHoyRoa
/R6Gyf2pwqliR5FlDLs0BnKsNQY9WUOj30MxuT9VOFXsKLKMYpfGQMJaY9CT
NTI6vIdjcn+qcKr4WpGwjGOXxkDCWmPQkzU0+j0gk/tThVPFjiLLQHZpDCSs
NQY9WSOj43tAJr6TWcKbRVzaJ+2UZSukuk/aqYxWSPNL0oV2xN9n8mK8fQbp
fvT2wXdjeK1y5u8zpZ0ofwLfiQVneJwe0z7icz86YEe/Ht3D48DD4xCKz/gs
T0QLD8Lk+h7HM4N0PlQatyc7Yq8vYnwRO3knKc7IJu9RfSF8vPjx8qUF8bV0
+bSW/sxj8k6SvCZ7LBKPX2Xqk01eZfpCOH5fUXw9WT6tJz/zmLyTVGZkkzd2
v1tnjy8ZePJjNXvyHlWfbvYe1fdq7fvJRQeBINc3Q0W6b4a6P5xjfKo989T+
O68io/CchYvj36dXQJ546OzNpE6MP9aqJ2809elmbzR9odTJPHqq1sGQ2+zN
606Yf9B1te7E+Uxr34sqn9aqn6VPsCl0At2m4BQ6kT7V2tHJBuikjzcBGTP3
BwivJ85hw5fb5dMe+K679l9MPNXfCxrfPCyfHhM984hX0+4PxV9HoFci6fTN
wSyvZevB2DwYDGqzDrrOF/TvWPW5bl9c0O/JGtmZB5C1YKf4gr7YAAzydAHi
YfRlASIPFyBiB/byygJEHrjcitG+vC554CR5ugDxMPqyAJGHVW/soGZeWYDI
g2JhyWjPtHlQE+bpAsTD6MsCRBkuQMQO6OaVBYiyggMDo70zkjKoDlbgoAP/
C6Rp1uqMtuztk3YwZYW003OskHaCeoW0U8yskHaiaoW0U4yskHbceoV035tk
35tk35tk35tk35tk35tk35tk35tk35tk35tk35t035t035t035t035t035t0
35t035t035t035t035ts35ts35ts35ts35ts35ts35ts35ts35ts35ts35vy
vjflfW/K+96U970p73tT3vemvO9Ned+b8r435X1vKvveVPa9qex7U9n3prLv
TWXfm8q+N5V9byr73lT2vanue1Pd96a6701135vqvjfVfW+q+95U972p7ntT
3femcOy7Uzj2/Skc+w4Vjn2PCse+S4Vj36fC8dqpdLKz/pg51GABSwePK3Ty
mZ1j5o1Duf0l0vkGA394fz5OP9fx278dcz/6dd+v7AuY55reTfwFSfEXJMU3
JIhv5RT/yKz4i5PiGxXE9z2KfxlX/IVK8Q0M4nsExT95LP6ipZwbG3w7ndy3
07V/l+V+DH6Mfkx+FD+qH82P2Y/Fj87P9zNpcH7+Iqf6xgn1rT/q3/dTf8FT
fUOF+i4Z9e9vanR+vtFCfaOF+kYL9Y0W6vvP1b/jqD4/6vvRNTo/ny/1fenq
86b+EUNNzs8ft6jvE9Dk/Pzxi/oDUfUX1NQ/IKP+4Tj1p7fqD9/VPyyj/jRX
/QG3ivPzD86oP0JW3w+v/oqQ+rMk9e93qe+TV3+bRv3Jl/qjS/X98+pPwjyC
z4jqRNsZNqMNKXo8ES2szOv1s0xfGCx9sHBL7PXRzzODx/aj8YaUL2STTQcy
I5t8W/cL4eMh98tnjOrL93pdvn/mUSYP5m1GNtmQ8t06uy9fd/p/4fHYWfLt
F/jr/lDl5Ry7o1+fg/TnuruL6NS6wyCOLXJ01+t7IV+Gc7IDqrwmq7N9Bp24
rPN9Bp3Q+vg6+2tjPfVoHYx4ne0z6IRXne8zSJtaO3BeN89/4ZGvTufvMbxk
5lF3/UcQ+vPd/1qwXt/8+F6n81JBy8hxw9Uif+D80oN9eMpgeNYwd+AVDwaD
ErQDoCukHQhdIe1A4AppBwRXSDshv0Jat0njLJEPSGfJeEDaCfgV0k7Er5Du
e1Pc96a4701x35vivjfFfW9K+96U9r0p7XtT2vemtO9Nad+b0r43pX1vSvve
lPa9Sfa9Sfa9Sfa9Sfa9Sfa9Sfa9SV57k8XhBjyZOdKgIrDU78LmCy3elJ5t
4lnRtH+48n70xtcXNtQXNvgPVt6PwY/Rj8mP4kf1o/kx+7H40fn5wob5wob5
wob5wob5wob5wob5wob5wob5wob5wob5wob5wob5wob5wob5wob5wob5wob5
wob5woZdPxb1PKlp+NmxM9biE9HC/kK7bh79wuB0inFDvyXW+mI/NtaPG/pn
srV/LKdPNmvonwnHm4bNF4js+hn+LzzKWGebkc0a+u/V2X36+hGgLzyuG51N
uhudfWRPbWdz3W/oTUY+Ou4WzZfz7Pr9qmcej08ETRr6LtnknZnv1dmXCk0H
dutk1St0QEGnKyihF9czrX26dRDa6dqXW+r25e4X5xifar8DOH0nnOcux98T
EU87OiN8jtMQq+WJaGEDvF3fYnlm8LBhjNU7Yq/Pdb6InbxuFmdkk7cBvxDK
2An9aY1d/xmCLzwWV367ZLNE8Z06+9f/7fr1/2ceH0tI40TRJZsliu/V2Yub
6+sJX3hc/8kus+4/2eXecI7wqfU7HjvQavqyg57fqSoXouG7DnUiaaRqHjjq
w9bRXjcfu0+L3s+KzF51eJgcjg+q8asOoYMoK686WFmZ4NEuPY+YMoiYx3eN
5kbHC9X4ozEdVHrIGhptbxrtfcSnhd3v/byXZ6czX5xBejrrOX+nSc9S/h9K
yD/nDQplbmRzdHJlYW0NCmVuZG9iag0KMTgyIDAgb2JqDQo8PC9PL0xpc3Qv
TGlzdE51bWJlcmluZy9Ob25lPj4NCmVuZG9iag0KMTkwIDAgb2JqDQo8PC9P
L0xpc3QvTGlzdE51bWJlcmluZy9Ob25lPj4NCmVuZG9iag0KMjExIDAgb2Jq
DQo8PC9PL0xpc3QvTGlzdE51bWJlcmluZy9Ob25lPj4NCmVuZG9iag0KMjI1
IDAgb2JqDQo8PC9PL0xpc3QvTGlzdE51bWJlcmluZy9Ob25lPj4NCmVuZG9i
ag0KNDM0IDAgb2JqDQo8PC9PL0xpc3QvTGlzdE51bWJlcmluZy9Ob25lPj4N
CmVuZG9iag0KNDQyIDAgb2JqDQo8PC9PL0xpc3QvTGlzdE51bWJlcmluZy9O
b25lPj4NCmVuZG9iag0KNDU2IDAgb2JqDQo8PC9PL0xpc3QvTGlzdE51bWJl
cmluZy9Ob25lPj4NCmVuZG9iag0KNTczIDAgb2JqDQo8PC9PL0xpc3QvTGlz
dE51bWJlcmluZy9Ob25lPj4NCmVuZG9iag0KNTc4IDAgb2JqDQo8PC9PL0xp
c3QvTGlzdE51bWJlcmluZy9Ob25lPj4NCmVuZG9iag0KNTg5IDAgb2JqDQo8
PC9PL0xpc3QvTGlzdE51bWJlcmluZy9Ob25lPj4NCmVuZG9iag0KNjM5IDAg
b2JqDQo8PC9PL0xpc3QvTGlzdE51bWJlcmluZy9Ob25lPj4NCmVuZG9iag0K
NjQ0IDAgb2JqDQo8PC9PL0xpc3QvTGlzdE51bWJlcmluZy9Ob25lPj4NCmVu
ZG9iag0KNjY1IDAgb2JqDQo8PC9PL0xpc3QvTGlzdE51bWJlcmluZy9Ob25l
Pj4NCmVuZG9iag0KNjkxIDAgb2JqDQo8PC9UeXBlL09ialN0bS9OIDQ0MC9G
aXJzdCA0MzU4L0ZpbHRlci9GbGF0ZURlY29kZS9MZW5ndGggNzMwOD4+DQpz
dHJlYW0NCnicxV1NjyS5cb0b8H/Io33q5DcJCAJWlgTJ+lrsLuCD5EPvTGmm
rZnuwUyvrf33jhf1WJ2dlSSzswXtYabYVRnBYES8iCCTyYy5TPMUc56Cm2Jx
kzFZPu1kkpXPPFmX5LNMtuDvNDlfpjSbyZskn3bycl2a5ylYfO+nUPB9mGLA
907+4Xv5Lsk/Y6fs5HvjpixdJmOm4qN8hsnMxksjSiPN0vAiicUlWRoF15TJ
WDCVjo0zco010khyjRVxvRNyO0ujWO3UhCjXzEIeA8QQzmCWrHBOWRiKwCZ7
udgJVS74SS4uQX4SGe0sFybnpJGFjzOTNU6ucWGydsY1URoR5F6UZHENtIVh
OVGX9yBPkw2ipOSFPGBc0p8QCbmfpZEhs/BJGJcVzhmiWum0yHCTsLAli958
mNzs5Sf5J0M3Ygn5xsQiDT85K0qIcp1zek0WI4lukoe1knQRzOSCCJXCLA0x
cpJBuhhE1CDXwBwpCMMECUOZXMZIRX0u68XCsAT85CY/Q4cirp9FhCTG8wZ6
jvKTVSr5SaSXhvzkoMwYJu9hryRe45NQicv44PDNLA0MMObJRxEhxQSPEpmj
XJzEOZMQ+BzhQH4S24JKLi45qEuFGeNKZQpGnC9lI44IPtmKQ4vxU3bSEGZJ
dB08fEwogwdDcYIQwFAkCCHJSMXSQa0jfwSYMRX5JlswlC4ynE00Egr0LH4W
CrxdTBBneIK4aTRwP/k2WjFaEq+KFq4lCIpO7JAFKtGLqBlW9KL+LM4URXpp
CFUQbWXAJ4oXZMFPjAVUAj4YJM+wNHxDtC8mh8zAq4iQBUwJvpqhayOemxVR
0nuGgYGdLEATV5ZOgV4vaslwlCAXZgGRuEWRBswpSshqBnDG+JPHT6oj+QlO
kBN+ihAFfDASjEtAJAOQv1QCESo7CBeTQl+6kQGK7bMVRcp/8keEYMIUTpsF
uTmgd8FOjhow5I8ItQhkMsCaxTAZ9swCq5whmNgjFzAUny+zB7M8FSAlyx/F
iAtn8eBiwVnELTbjpzIVJ06bBWjFY1yio+LFZbIMoAT0LJQlwATiyiWiryAX
IwgBqwVOlAUyJYu5s1ioiBzSCFMRegguAW3GoKJHC2qQ8YpkDtdLBJsttObx
nRUUZYdY6BIGLQFKxiIqEHiYOYjxcsJ1AVZOoI3QrXiBtNBtAq0qI6HfLA6Z
BSRmLl5VJqF0FleC5aQVIIH8aoyMP4tCJOJCvcIdsRcxGtc5UWXOyAwetAIE
aWEcBdcFazWWS0tQmJE5TPT4FZyRIRBapQWXEHkkv4i3lRm0WVBaxNklwDvY
Db/CimJBifUz7CT0xsq30jJoSU9QsBE3gslxnYPbIHNZB18vuM5Dk2IayRgO
PiJ92CjYyQm0MaEPtJL2IfLZLH0Wg96g92LApYi/FwPOJcOdAhKPOHFBmnJG
uBZNRgh8BYnKIfIhdAv84FPIR86JJgrymfNwwRkUQXQP7sZFD2+0aBVQgDNi
cLHoDcgtFhSwXkHKkgisbouWeEMRDzBeRiItpEFJadISLh6Ah14lNc74NaAV
8SuypMc4RG4jQoEfOEvsAw6kFWWsxYMiQhse/JCgikdvCKoFHusVSzICo5G5
ePRWEqQXzhKbIb38KgFG0COjF3dBvx7p2UJ/YkUTHPQi0pqAyFgEYNJCv4I5
pHEZeQRtFLwUYCagUBBYogVbim8JxKFJYEvgKvyAvFDEDwp8PCJvFYGltAQl
+N5E0Ye0UCFYsXwB3iTwya+Sl0x00DMQFR36AKKipDZpebQkaRSgMaotgUaJ
2ZAeFFE1BM7qV/C6CLwUYDAifZSMGmvG2IC8hARSgLKktoTHSmkQEU+kpbIA
b1JSCD/gTWoBGa9War7gV9AGBCcgQPKn/AoESErFr6h6kPYL0JMQZhGXtBQC
CRjCDQsgmsBC4peURTMUPwN7GSjU8CFNDTnwZInniC+AkET+c4iTJgoRg3Qg
7mj0W4dmxnjwZYA/IDJJgNRoiA5QuUgT1RgSnlaE0tQwCBRKcAErwDDrIGeg
TwCKWAf4CfIgLeSUS/XaiCZGhxgsYQYangE38VVtGpR8OgYATnwKZOhHg71E
YuFYznUpEFSSRmB0WZDqpIlrNdbMgFNRZ0RVYmeVekYRKLqCvFpXGo31KChF
EJUB11oVHXXi7DQtoFKcUWVLc0ZTgztKwhnak6bUi2IecPAoU8+a9OgNdas0
M5pnvhF1rA7I4gKNTDNKz7O6JAmhqaMIKHWRr6WJby10JH2imTUROdTCamGB
oDUo7iQB4QKv+U5orSYGaWY01YkieovqDYIxaeakGUyaKei36BjFhoHXSbOo
DOBQNHsKLKX21gSZtAxXJ0goxA1CzyzYsFqdSzOjqclPbC6Khp1EBWgqmeDP
WkRkg6JJ8okOU7AiTWBpFlopF9QWCddiVmBgR2uzOadcNLNygAyogwxkkiwK
QIiW0UTQmcUK1hn134L5gin6bcDUAZFvli5FRqOSYR7hEB9mUZF1SGbSxLXI
ZqIS6c1FhUjAtzpfm8W6VlOHMNOZCCL5XMAhozdUQzJ2MBM0yAxFLS+eiCZs
gQraenVPYYym5nDpx2oykaYw887ptxlNTffzebqj34pkHjMeg8rPanEvLXCI
ytegt6h8DWTAnEKa6A2TDmmCgyZ2qRmkqVlDCg5MpLRAEKBLEyZEQLJSFYEv
/FcsCEVJBJOmljiYSQV1T/FiNGELA7cPARAxmHOFoCUNcCHVNySzmK2h+BZx
wVfrBwOYBk2PKK6lnICNUQ5IM54LJWniC525yjRPCy7AP7qoZNKx5PugpRSa
WlUhVMgUVa8VcWLEMIGFiMgtGU5aGu6AhKQYBewE48g5widhNmiAKZliIaQn
tKLGBGnBQ1GhSIkD7eMvqd8jpo3SEo/BxA9TT/E75DdxadF8AHILahLUmHBo
zEVkSjijwogFLWlPmBe4GZVDirgOlYN0jhYmtSK3VB+o5cUJZEKGalv+uRm1
QhZAO0UXKkGnekXuFqA41ELCzwASAJYTv0SuxK/B63oBSKJGRYtpcVKEB3yb
z5gTySxClAHwnAQJGFe0Jk2EQsznHcA8/exnN1/rIsg8fXPz7c3XN9/9+Ol0
8+3j5x/ePP7qw+njze/+PM3/Pd18/U4mgbjo5z//138hUSLRd6e/P37/8Pct
0qiLLN9sMxAInRn8xm7Rmld0KzGl3W1l8PvvP2wR2xHZLx7e/rhF6BqEoRL+
dltWvV6XmloyY5mpK7MfkbVkDodkxjIYZMYkpy2z68scR2QtmdNBmT1lDh2Z
Y1/mvE1mTJ/MbENoQdcaq9lGAZb5uoM19jxY0wYCVhr7Um8jYUHXlHobCmOp
A6WOHakH8DUNLJghfs02GMZSZ0rdAbAdANg00GCHCDbbcBhKbQlh24NwzQu/
v/lqQobFX5sqIDNDjJ2VXcUfYa01tFJHcRDwFOI8ioZ+B0HKNBBvc5/ONhD/
RNcatG0g3saBPct5tK6jcjeIU7aBeDeMU7aB+JHUjnHKdeKUG8Qp20C8G8Yp
20D8UGrGKdeJU25UZjQQ74ZxyjYQP5Saccp14pQfxCnbwIMfxilbjkntGVp8
J07ZSyRAnLKpGadsVQGZOsYrx1DhO+Cxw8IEdyds2yWGActSGtupUPwgYLlG
4PFD6V2j4B5J7Sm1b0uNydSTgWKJLQOxyq6Va60Ga7KoRqjDec0MoS0tpqBn
Bt+e3jxuT2tqzW756TsWq+L0JldxXhHF8Riwanjpdc0gVEB2J1eHug2m0+3F
WbqTqzbZYHJ1RXhx623nDPSbkDoyD3K5H5ENJlcvlpmZPM4dmevcWSNe8M2I
F5iqQsdX9lndNRmMAUMQVLes8m+LE+vYuoCxKyKzYwxxOYY1g+qCfcAc6ja2
u02jhDsiGwFmLXDuO19iZky2o6q0dL5Yms6X5g6TXZrLTQY7nC6yuIzEQEwd
O/g9TudXRG7HGNIi01wxSLuc7lC3udNtZfDru3c/fD7dfPXh8d++mr68+Xw6
3X95//A4Pfx1up2+PLy5u/0wfTy9vbudPj18efzL/V/uf3mSy+4+Pd493E/v
Tvenz7ePp7fT/909vp/+9/T5x+n93bv305uH+7/evT3dvzn9+9Rz6pVYee7Z
wB0h8keIwhGieIQoHSHKR4jKK1wpMyZk4imzCMus/DLxlZlsc2q63g7UJnJN
TBmJ6TDPbYfOpTf2it60Iso7xl6Wva4Y7FvAPtata3d7YfAMvW8+PHw5TT98
OmP34+2nAVpfBNT1wENP3e4IkT9CFI4QxSNE6QhR3iTK86BGLiOy5vxz29Hz
3C84MydXeU5Np8vzsuDMc7PgzMvl9aa6fr9N2nH6vqbNq7DGsFXnnrwhk843
ZHTj4vnT8NPyMzfF3RHmMsMap5CpMOyVtv6y6YZ4Wj/NK8uVsQ6yWczp1gxM
dZ9umDvWrW93e2HQLVLenD58mD69f7g//aOrkys1xJ7y3TbRaN3fj8gGc8sr
Ifvlfeaqf16u+l91vu/GXZtscOPuxTJ7yhw6PnpZRUR4Ms0pCTVbpT1i6XyE
qBwhMg1EO9s3kGlA8omumUEavu/mvonOy/e64bntVmVpIt5S2GTW8c2FnTdJ
5zbpvoB0zgH0Sd3lff7k97Z+X5odjWM/43iNrLo5/fwZ2+K7rqtUT3ErorBj
zG6R9q8YVKX1Y/+Rbpdr7U0GP1XsX8nju0tSrkE02EzgR2Sj2L8mvCyyb4OU
a3B5uWx8xaP0ZY4jslHsf6HMXC/MyzXnpnE0sJxvQ2wrgGD2ZQezbuxfEYWB
pcuIbFTRX1GO1EZTh46pn5ahobbQVluIu3S/SeqPato0QsuAqoHfONrq0oDw
E13TQg0UXxaxGxbimmSOHeVeEola6Lx4vc1sj5q3LRRtm3RfGGcO423AHDg7
CvyedzNyJJJjG8k7MqcjhB258u5w9p1hXJa8u5kzroh23ETMcRlIVgxSHUs/
cx7pdrk232TwU2XOtRq66+ruCJE/QhSOEMXXGIkAT/RYLmfm5br8ivEO/4+s
P3mbJieiLPm2S/QXhqv/l5Vi9lTLeYnlFYO8b9XgULe+0+1oY9aIbHA/7Yqw
v30lc5knL9eR1zzKYFuWb5ANqo44IhvVamvCQdHB9bNccmeog/oyb5KVeZS/
t714QTfaYHtF2c/f5bzMqY9utgZb5mX+LnMzf1PMkcba2yTLch/2C82GB1LP
I+mAuTyrFUu7VuRaal5uZm+7e3OCU6U+hjkuqeblTZQrHsstYzk3t4wxMlSp
XxO12p6yI/Bnlk+890b5G363p+A5x+4F0Y6kVpbbcdcMzK6C51C3xra7nX/i
gudKDXsKnpcR+SNE4QhRPEKUjhDl17gDY+95uUwfRT9/Zn6ec25Z7j5fdTRG
HFFU/Vofhz9/+rYz2j1bl7JfEe3YCVOW69VXDHZtXTrWbex0Wxk8Q96nuzeP
8hfg83h7d393/276/u7z23847NbCdGOe2yYaLaT7Edlghe6KsL+MXriMXpbL
6Fc8BneP44hsUPW9WGaCcLmK3DSOFkLtpX9qtkp7xNL5CFE5QmQacPajWrWB
Rz+uVRu+7we1qme89B0w+2e1qm/Xqr7jmws7b5Lao1Y1DQDvi2FMB46FLp+D
KFxDKp7fcy2p+LYn70gbli5sqXTeOeIAG8rfs30ppxXRjr0NJSxT4IpB2LV9
6Vi3rt2t39y+dLhge1HSWGtgzz6mK6LBFNaPyEZJY0142W27jW4urJblwmpz
oIpu7lzfNFzZwaRbOq6I4iBdpRFZS1u5Qdjf61Qi09VyL3BfW7G514lSHtFW
OUJkGpFgQNUAchrlqQZo0jhPNZCTBnmKS6YlxbZa07M8ldp5arki2jHwJqlt
k+4Lf3Qy3oYr3IhO59STl86fzECJEE5tCO/IPJ7ceAemnG++1dE21LlnqaDM
K6I9k7S0iCRrBnnXUsGhbrNtd3th8M/PPFca2LNKcEW070GlNtkg81wR9tfZ
Cte2y3Jte81jtLYdR2SD6cpLZebaYFmuDTaNozGmvTZIzVZpj1g6N4Y/sHQZ
kY02FFxRjtR2NrWenNa29bO8Wdp6W94h6Ch/kzQeVbVphJUB1TaA9bS3fvrc
BvGScLSn4Jq0v5SvB9PRTG0N65F0T3aSP5vL+VXYI5aq0r4mlrMe4HMlhVuk
6Wfn0/nYsLXRhvWODJqIZz7wUrjYXnJ7JHps344U6tY22HHLQE8HfOp4zWLf
vuyjPftOzz/11uxrVezZm/1CKn+IKrxO6xW/XMrWMwqbdhg6dHXOi7OcD5Fk
I3YsfFlY6Tp1XFPNewa53Ht+zcLvcuqDPYdez4N5vW3QjY4n8UO6UVl2Rdmf
R+l5nWcbLw8ouWYzOKEkDulGtdnLBa9uvzyj5JrNcg5oZtecBFYlX4Qemr65
++MifYtFf5VGj1OlJKbDZnT+Sh7SNXcJHBXc1yTre+MfnUtiWjFjfDCJaYJ+
KHq1vu8Bf7RP27SQP96pfSkCXy56zQTL3drXbJaPvcifzYW96uMXV7lo/jKO
10XWDrx2pClbfcxWi9meTGFXyZXX5tqVgpc7za9YhH0l18Gefa/nffvaruji
AJd+g04v+9Mv/vObmz99/z+oXZTFJvfqf99+ur2/Yn+huPndFJZUl3ni3f3f
tnURq/svT4DoDK493+WCb2yxuOSSBhBj9cjlYu81m0v8VSBy9/c2Q7fLzL1M
FLs+2p/K69HVHNHcG9GgHEoNutGychnSDdcurkhHZUWq9dByZfmazehkyRa8
8+h5PDckHC4FXJH2b8vr2d/nMedeWLnsXDv7bW7emq/CDnXXvnl9kfqwGWt1
+Gxt+YrN8+qwfYug+txF/CESmveiLtIfxWSqSTn1oJ0HN9PqCaZXhGVQVpoW
msuwrqwnZF4L23+sV8+LP4+59FRXRoVlK6CUYXKwrYAyFr06TuklhctBdARX
86nkqueL1EP7N60RL+IfdUWutlXxW2zCs7GF5mJvzWkXIF3G8bpiqRPJdxSc
oeo71DAZejJdDv/uFZxmNmuyHQer6TsLLj1f8ajV16DkPNi3WW763ui7RuRW
eUcSqe/sFllvNa7TW285rjNQLkZuj5NmNjwFXN/z0Bv5qLB9GnnYIuttkej0
1ttfe3TkqQ4410bpjfyynD0eed4i62136PTW3fBwcOjcuauv4WDDdYfudw/d
mC267h2kTn/dPW9HBx/qmGNtpM7gdzF9FQbDa4hb0NkR6ssFAHNtVHeYL6qp
P5kaHuoCvOFmcn3RSsd3du38pkcuyXZsYNS3uTx1fc1j1/bvw33Hbt+be8D/
eXeCriQaOwRNdVHc+Q04vTHu2Z1JvC3JduwU0tfsLLpe83C7tmge7tv1+r7w
+MlMG15u2gpWV2283Eq/od89h6owBCzJdjwYr+8/WnR9xaPrVeZ1Xfu50/UO
PboaGJf3Ya4YXXam/vLhzQ8fT/fbzLj5zXCybVmKWd6ksnww2nHp1/E6z6N3
Ak9KiDyzPXJTHY/5rqcX1wNl65GW9ey3eu5PPc2gPr1dH9qrjxzVveR1h1/d
ojDVW7dTXQq/TFEuqesSBy+ouRjqrLnl3dWFir4TKH3z8PB4883Dh9Mfbj/p
i66g0a9vP4s28bO+8UpLjj9Xw4Hl5fc/ihf87vSjaI/sfy387h8eTzd/xH+/
un/79Ef1GDX7b063b0+fz23Q1PZv7z/c3Z++fX8LKfHFV/fC4RaI5t+fH+/+
eisN/eu/Hj7/7fuHh789uQC++fL+dHqElI83f7h98/lh8fd/vJf/F3//8u72
w8O7xRfffpDYsLj23I9c9u7z7cdLiXD3+OF085tahP3xh49fBK76KjDVvr4K
TL1LXwWmfqWvAlPP0leBqW/pq8DUm/RVYOo3+iow9RB9FZj6gr4K7GxyfRfY
2cT6MjBtWn0bmDadvg5Mm17fB6bNoC8E02bUN4KdIaGvBNNm1neCabPoS8HO
WNG3gmnT6GvBtGn1vWBnEOmLwbSpb30kHV8Npm19syG/T08L4voKR27rsnxT
mOppPr8qTNvm/K4w9bqq69uPpy9/Pv8Jn+RYqSlTB8EDCkyqQ2WuUaKqFULQ
8CBZww0/htA2hLDhpj1TOIurG4Aq/Eq9jsPhviBbH4tGp5ZPbFvOgyx3RFiW
fJZ1suUeDMvCzxL1lmWDrXql51gi3vIGr3XVNDXO+YUQfNGE9dVoZMo7lZbB
zDIIWa5T2GpA7um13GFsGQwt11gsfdMy6Fqax1aj00yWZrKpOgavqwvkKizN
Y6s3cknZ0kyWZrK5ehFHTjNZmsmyArc0j6N5HDOBo2UcI7FjwHWmeiGv45TG
0UKOFnIMvs4ufMwxfTiC2dE8zll+0t2Z6hyB6GgZR8s4WsbRMo6WcbSMo2Uc
LeNoGUeLOFrE0SKOFnG0iKNFHC3iCBxHy7glcByB42gZR+w7WsgRSI5reI4A
coxTjkByXL90BJAjgPw889Pyk7mYMdQTO55ByTPeeGLIE0OesydP7HhayBND
nhjytub68DRIT0B5AsnTQp7Y8Xxuy9NSnhbyfMzN89a5p6U8LeUZMz2X/Dwt
5kO9jnxZSHhazNNinsnF03KelvO0nKfFfC1gaCzP2xaexvI0liecPI3mCStP
43nCy+dKT/loTE+4eRrVE3aexvWEn6eRPWHoq7EJx0CjB8Iy0PiB8Ax0gkCY
BjpDIFwDnSIQtoHOEQjfQCcJhHGgswTCOdBpAmEd6DyB8A50okAnCnSiQCcK
dKLA6VyohSMDdKA/BUaCwEgQ6F+BESEwYAdGhsCCMdD/Av0vMFIE+mGgHwZu
lAmMHIH7KwL9M9A/AyNJoJ8G+mlgBRHor4H+GhhhAv020G8DX+0RGHECc0Gg
Pwf6c2AECvTnEBcJKbAaDnTiwFulgc4baqXELbGBThvotCHX68iHThnolIHO
GOiMgc4YSr2ewtIZI50x0hkjnTHSGSOdMdIZI50x0hkjnTHSGSOdMdIZI50x
0hkjnTHSGSOdMdIZI50x0hkjnTHSGSOdMdIZI50x0hkjnTHWOpPOGOu8H0aI
9LxIT4v0pEhPir5+Tyb0lEhPifSQSA+J9IwYFtk80h0i3SDS8pFhLNIDIhNQ
5DwqMpxFekRkOIv0jMhwFukRMS87ZcziC1nXLztdv0h0/ZLO9Tv81u+1XL8x
cv0uxvVbDtev2Fq/NW/9Prr1m97W71Bbv53s+mVYUALf01RfnLR+KdH1C3+U
iM+K8eUx1y9m0YuIVr7sY/GuBF780jc2KFPmF76DYHEyOS/efU565Ccn3PWZ
BHTCA8frCeCLI3DrQbv8nYZbHQLdPph3fRKxdubqyaeU8HJqYD278NnJqOtT
RxdnGj47VnPjbMPVoY7aOe968tS+xZFtgwPilJiG5JFn6+PE1kcdrc/gWh/u
dH1sFTrhqT71mJ3FSScvPGdFmTEQ8uSQxfPv9Sn8Z2dcrM+P6Dyd/+wQg6en
9LVTGozPnS8efeTFz5+RXjyQWX+vD2q2HsxcPZmqndYFJILs6WmR+tjKs8fj
1o+eLR5nef5s1bT5XMv6wR6dR8/1Dtdc71sstvc3HyU4k9ZV8Lmugq93KE9X
+8inqw3a09X24Olq1+20sZn1LEKopKFSrLamTcvtd5ddBJfNXM/3zExX+7yu
twxNV/uirjc8XO9M2drwcR5BXXgw1WLNG82dO7GdO5Wd+3jde1QqHW8bXe7h
LG50nH+vBueNgMVqOX+vHfkL2/8HK5LicQ0KZW5kc3RyZWFtDQplbmRvYmoN
CjY5NiAwIG9iag0KPDwvTy9MaXN0L0xpc3ROdW1iZXJpbmcvTm9uZT4+DQpl
bmRvYmoNCjcxMCAwIG9iag0KPDwvTy9MaXN0L0xpc3ROdW1iZXJpbmcvTm9u
ZT4+DQplbmRvYmoNCjcyNyAwIG9iag0KPDwvTy9MaXN0L0xpc3ROdW1iZXJp
bmcvTm9uZT4+DQplbmRvYmoNCjc1NCAwIG9iag0KPDwvTy9MaXN0L0xpc3RO
dW1iZXJpbmcvTm9uZT4+DQplbmRvYmoNCjc2OSAwIG9iag0KPDwvTy9MaXN0
L0xpc3ROdW1iZXJpbmcvTm9uZT4+DQplbmRvYmoNCjgwNCAwIG9iag0KPDwv
Ty9MaXN0L0xpc3ROdW1iZXJpbmcvTm9uZT4+DQplbmRvYmoNCjgxOSAwIG9i
ag0KPDwvTy9MaXN0L0xpc3ROdW1iZXJpbmcvTm9uZT4+DQplbmRvYmoNCjgz
MSAwIG9iag0KPDwvTy9MaXN0L0xpc3ROdW1iZXJpbmcvTm9uZT4+DQplbmRv
YmoNCjg0NSAwIG9iag0KPDwvTy9MaXN0L0xpc3ROdW1iZXJpbmcvTm9uZT4+
DQplbmRvYmoNCjg1NSAwIG9iag0KPDwvTy9MaXN0L0xpc3ROdW1iZXJpbmcv
Tm9uZT4+DQplbmRvYmoNCjg2MyAwIG9iag0KPDwvTy9MaXN0L0xpc3ROdW1i
ZXJpbmcvTm9uZT4+DQplbmRvYmoNCjg4NyAwIG9iag0KPDwvTy9MaXN0L0xp
c3ROdW1iZXJpbmcvTm9uZT4+DQplbmRvYmoNCjg5NSAwIG9iag0KPDwvTy9M
aXN0L0xpc3ROdW1iZXJpbmcvTm9uZT4+DQplbmRvYmoNCjkwMyAwIG9iag0K
PDwvTy9MaXN0L0xpc3ROdW1iZXJpbmcvTm9uZT4+DQplbmRvYmoNCjkzMSAw
IG9iag0KPDwvTy9MaXN0L0xpc3ROdW1iZXJpbmcvTm9uZT4+DQplbmRvYmoN
Cjk0MyAwIG9iag0KPDwvTy9MaXN0L0xpc3ROdW1iZXJpbmcvTm9uZT4+DQpl
bmRvYmoNCjk1OCAwIG9iag0KPDwvTy9MaXN0L0xpc3ROdW1iZXJpbmcvTm9u
ZT4+DQplbmRvYmoNCjk2NCAwIG9iag0KPDwvTy9MaXN0L0xpc3ROdW1iZXJp
bmcvTm9uZT4+DQplbmRvYmoNCjk3MyAwIG9iag0KPDwvTy9MaXN0L0xpc3RO
dW1iZXJpbmcvTm9uZT4+DQplbmRvYmoNCjk4NyAwIG9iag0KPDwvTy9MaXN0
L0xpc3ROdW1iZXJpbmcvTm9uZT4+DQplbmRvYmoNCjk5NyAwIG9iag0KPDwv
Ty9MaXN0L0xpc3ROdW1iZXJpbmcvTm9uZT4+DQplbmRvYmoNCjEwMDUgMCBv
YmoNCjw8L08vTGlzdC9MaXN0TnVtYmVyaW5nL05vbmU+Pg0KZW5kb2JqDQox
MDI4IDAgb2JqDQo8PC9PL0xpc3QvTGlzdE51bWJlcmluZy9Ob25lPj4NCmVu
ZG9iag0KMTAzMyAwIG9iag0KPDwvTy9MaXN0L0xpc3ROdW1iZXJpbmcvTm9u
ZT4+DQplbmRvYmoNCjEwNTcgMCBvYmoNCjw8L08vTGlzdC9MaXN0TnVtYmVy
aW5nL05vbmU+Pg0KZW5kb2JqDQoxMDYyIDAgb2JqDQo8PC9PL0xpc3QvTGlz
dE51bWJlcmluZy9Ob25lPj4NCmVuZG9iag0KMTA3MyAwIG9iag0KPDwvTy9M
aXN0L0xpc3ROdW1iZXJpbmcvTm9uZT4+DQplbmRvYmoNCjEwODEgMCBvYmoN
Cjw8L08vTGlzdC9MaXN0TnVtYmVyaW5nL05vbmU+Pg0KZW5kb2JqDQoxMDg5
IDAgb2JqDQo8PC9PL0xpc3QvTGlzdE51bWJlcmluZy9Ob25lPj4NCmVuZG9i
ag0KMTE0MSAwIG9iag0KPDwvQ3JlYXRpb25EYXRlKEQ6MjAyNDAxMDUxNDUy
MDYtMDgnMDAnKSAvTW9kRGF0ZShEOjIwMjQwMTA1MTQ1MjA2LTA4JzAwJykg
Pj4NCmVuZG9iag0KMTE0MiAwIG9iag0KPDwvRmlsdGVyL0ZsYXRlRGVjb2Rl
L0xlbmd0aCAzMjA+Pg0Kc3RyZWFtDQp4nGWSy27DIBBF93wFy3QR2eBHEsmy
1LiK5EUfqtsPcGCcItUYYbLw3xcPiZumSBgdz70zI4aoqp9qrRyN3uwgGnC0
U1paGIezFUCPcFKasJRKJdyF8Cv61pDIm5tpdNDXuhtIUdDo3QdHZye6epTD
ER5I9GolWKVPdPVZNZ6bszHf0IN2NCZlSSV0PtFza17aHmiEtnUtfVy5ae09
v4qPyQDlyCw0IwYJo2kF2FafgBSxXyUtDn6VBLS8iyfBdezEV2tRnXh1HPO4
nIkFSgLxFCllmOniYdcMS8H0IsvwyK/qEGf3BdNtkGW3SZP/SfchaRXUW2wo
40hZ6DI/hJ+hbpbjseF/yqf35bNdkOXo3W488ZhzpD1D8peAlAfa3TY63+g8
+GVc4mytnxS+DhzRPBylYXlAZjCza94/aWG19g0KZW5kc3RyZWFtDQplbmRv
YmoNCjExNDMgMCBvYmoNCjw8L0ZpbHRlci9GbGF0ZURlY29kZS9MZW5ndGgg
NDk2ODAvTGVuZ3RoMSAxMDcxMjA+Pg0Kc3RyZWFtDQp4nOx9e3yUxdX/mXme
Z3ez2U0298su2WdZsghLCCRAAkSyCUkQI/cQs5hIQhLkKpeAIqJGkYvrBWot
ArWClypikScXcAm2oFitaMQWa1/vqHipFaHvx3qrZN/vPLsJ0Nrfr3/0U/v+
fnuenDkzZ87MnDlz5sw8G7IQI6I4JDJtnjIjNy954toqIjYP3PrGxQ1LJ78w
4jhR6RoiaVTjNSvUPYfevYuo7h4iw9Vzl161uPDnqV6i8k6iWO2qRdfNld/f
7iRqkolePjyvuaHpT5XVL6Gvz4Cj5oGRmJ92B/ofgPKAeYtXrOq+d9gslH9D
5OtctKSx4e30uBCxvGeJ3MMWN6xamjbL6kb9JZBXFzevaJB2Kg3Ebq0V+l3d
sLj58LimHcRmfkE0tGLpkpYVocG0BfVFQn7p8ualD7R/8inRtCYiSy6JuRqJ
lhyqV2fHF/3FZDeRgAc/GDhY0NduPfnZt3vPXmUj0zQUY3R5AaDGcT2TabyN
vt377Wob9dVEIO6I4CTcS61ko+EkEQf10XoiJQ3jctRK0ka2mRQyKduVfHRg
D1PptzSXJ5oUHmuQuQD5BA0NHaZVV+gaAKomjVfRl5r9knK8ZxrLN45j7T5i
oVAIi+ZRDoqZUoohohIf3Yca/wNdeb6WSjXV0PcAZHfz3VQC2iXayi00E/gu
sAhYDcyM8CYBG4AzIu0OCCr/gpYClwt6bqzQWYy3RXme5gLvR/5B+QPaZRhN
i1F+GG0PRXTagv62GHbTVvDvQ30jePeD1qD8APK1aDcsko8x3kkZggIN4A9C
P7dHdBmo69ISei9M6VLgejjiVNAKYCVkkkBLgRvY87RRlyPaiPxajL9B8IFl
EXoJbLIO9cVoNwDltchnQg8DaDzQBbzo++z5nwa8mxafX1Y+hIf+BwLW7ru/
5WFtFv0dr7pn9L9DH6z7c3/H200f/svH2U0LgRlA17+67yhEIQpRiEIUovCf
C2xXqOuH1uGfBcX+v0fXKEQhClH4IYFRqMsEtFE0bkYhClGIQhSiEIUoRCEK
UYhCFKIQhShEIQpRiEIUohCFKEThXwfy0zT3h9YhClH43wZs+w+tQRSiEIUo
/P8MPd1/U/418BXgb4GfA1/7QdQ6D+QWqpUSqVieSpfIFXQxysORv1i+gebI
A8FvoeqI3Ewpg8ae9/dVefrfV90IuVyq7P37KuXXtEA5To3K1/RIzKX0COh9
EqexSgk9bBhN9fJyqhBy0te0gZvpNrSbzKdSnLyK1gld9DrIizrx907yMox9
G22Vj1Ct/DHoEqCJtiq5KJ+hrexT2qrrBxnpKf3vsbbKn4EOR/3iCH0TvMV0
qWyjQfLb9CN5HpkMfspCXyZ5ETCOnD+U/f+dAFtt+KF1iMK/H/hu6n/+32sB
0yK8ocCJwMERuaG98j+sxv/vgryTLj/P/n22j0IUohCFKPzHgxRBR/jrC5gH
JeT4EJKZGYwiUklGbX/yUCGNoXE0ka6gOppN82k17aTHaA910AE2nL9u8Kkx
apKaofZXc9Uydam6qn9K9kviWxLQh4eGoHURlVCl3rqBFkZat/+D1ivCrUMf
fO/TGHo/1AhtRoUe7mHfaX96+cT9J352ovlPu05ce+pLonce+fDiv/2OiH8S
wl9JQXG/ijsU1xR3OO5pWMVw7gsnGOcwz9+0QaUkKxT5wgiKtyUkJiWnpKal
Z2TaqR85VRfRgGzPwIsGDfYOoaG5w4bn5Y8YOaqgcPSYsUUXjyMflVJZecWE
SyZeWnkZTZ4yddr0GVUzqy+v8c+6orbun9dd3Ihv/78Jhb96oE0k+0Vy8B+L
/l4kb4TzUX/o8wffFetWtCxftnTJ1YsXLVwwf95Vc5vn1NVcXj2zasrkEl/x
uIuLxo4ZXVgwckR+3vBhuUNzhngHD7pooCd7gLu/S3Vm9XPYMzPS01JTkpMS
E2zxcVZLrDnGZDQossQZDSl3V9Srmqdekz3uSy7JEWV3AxgN5zHqNRWsigtl
NLVeF1MvlPRBcu7fSPrCkr4+SWZTi6goZ4ha7la17jK3GmSzptUgf2eZ269q
p/T8JD2/Wc9bkXe50EAtT59XpmqsXi3XKq6ZFyivL0N3bbHm8e7xzeacIdRm
jkU2Fjktzb20jaWNY3qGp5WPaeNkskIpLdNdVq5luMuEBpqUXd7QpE2dVlNe
Zne5/DlDNDa+0T1HI3epFu/VRWi8PoxmGK8Z9WHU+WI2dLvaNuRw4I6gjebU
ey1N7qaG2hpNavCLMRK8GLdMS1t9Mv1cEZ0njq/ZcH6tXQqUp89XRTEQ2KBq
O6fVnF/rEqnfjz7QlmdX1AcqMPQdMGLlDBWj8XX+Go2tw5CqmImYVXh+ze5y
walfoGox7lL3vMCCeixNZkCj6de52jMzfQdCJyizXA1U1bhdWrHd7W8oc7Ql
U2D6dR0ZPjXjwpqcIW22hLBh2+LiIxmL9fxMc1+dntPFRa5yep9lmdDIPREO
oamNKjSpcWNOhSJpLqRAYyHEAH6GVloTVmS+FjO+PmAbI/iivaZk29xq4C8E
D3Cf+uxCTkOEY8i2/YVEVvhJn6uhvjeveb3a4MHCRYzjsabQcZxeHpkz5Jog
d7uX2lQQmI+mwrYN/jG5ML/LJRb49qCP5qCgtU6rCZdVmmNvJ1+u16/xelFz
uLcmZaaoae2t6Wte74Ynd+oBIkUzefp+4m2pSeXzxmgs9f9Q3Ryur5zhrpw2
q0YtD9RHbFtZdUEpXF/YVxfJaUnjayQ7j+S4XdJr4ZS1fcKiUGPR5Gz8GHSn
bgoaTfBKncPUCs1Wf0k49Ztdrn+yUTB0RrTSyblmETW1Md4Ly2MvKF+gniUg
QWHZwyurZgUC5gvq4GrhASdGCDyeqmpc6niNZmJnZuMnGDpcKNBv13ww2Xgh
AP8LsyLFCwTtkbwfILwzZ0gFAl0gUOFWKwL1gYZgqHWOW7W5Awf4M/yZwNLy
+l7HCYa6brdrFXf4Yat5bEzOELeoCQSa2kjKxjA+exvTMwXjb/drU7x+tzbH
63a5a5oxl7YxZHFV1Y9HjlNpm5ttnNbmYxtnzKo5YMOZtrGqpp0zPr6+1N82
AHU1B1QcFTqXC65gioIqClTJYJp2btLl7Qd8RK16rawz9HJjkJHOM/XyGDUG
eZhnCw/k0Qfy4UbSGJTDNb5eaRk8U5jXGpa+KCJtQo1N1HQRF7c9URmGNhSq
anzmAt8Y31jfOF7MYRHBagenC7JjGXWMY8XM3oY+p+vsIGttG+uzH9B7mh6R
bIWk4LX28aC5EDuvI4wXnvjMczOYOaumYxyhfz2FRKkAEWmhxPl7SA9Mws8v
99ZYeKByBjxQVJoL7ebzqlXRUGNubbZ7lUvMTqt2X+cC062piNYQaqMJDn8g
oOJxwyqN1TXhVFSxIQ705Nda5/TK2h3wiXNFC5rqftXhEDGkb7Tre0dbjtFE
JtA7nNb4vaNBe41dIVL9R1e/bRS5w+PjlA4PGqgNzII/urR+YuCIHijGOfx6
D9Bkq64J0w+nRtwJ5oq9pIoghzDpvrSNT/bqlOk0cKm7vAkSAnHojsRiudQm
v5Byi00jHP8fCrHzhMRBoncesI3tLbFIKbx9A9pVFxbn9RUrBOKOkj00HCYw
F33LurQFdm2R39sn0iDmHMDeHiM2+Bi98QSB9Th2JmitjQ1QEefNxEY3GJeC
odbMCVtQHNQBcXNqbEAzYeXISNrV3gu6RExgCFHoSExHa52q1vvVesQQNg3G
tquaAqrOxfXJ3SDixtTwfKYi+IM0BGagLYlls2tGxLO5Dc1uEVw14e9h6wsd
ZWhHM2o0sgcCbvgQVMyugDC692gGz0RB8LPU625oFje7ueJi1xy+ckBd3Tqi
N3u52+WHCM/WbQnDYaPNEUljQNwb6+q9sERCIDGgjg5gw9fZxNfWNVbXI66p
NrVC1Ze6wY4SjDBRlPzoKCwYky0E0V7/8WiLvW11xuxzHP1niTcsbNJ71S8R
2tReEaP+g8wyr8bTClEpJs+mz9LPBSyUMJ6SPRHm9cGr7KI1dlFV5NgIt58o
mtp7FyzcDBx/7wEAf2/LZhunnh8Ja7XEyulX2GHYnLaqdSWx0hDx8P7ifUzy
SoPx8uGUBrcb+jmD0kUdnnTnK09Jg+gEkEuD2r39nAekgVK/9rFOX1BydySm
5MWX5EgqQnCunqpIlwD3Ag9J4qVotpQFvg3pTcBW4F7gIeArQLxCIhW1KnAJ
cAfwhKiR+kmOdtVpKxkoZaBtBqYQL6XRaWAIKEHPNIyaRlOAs4GbgDuABl1O
cJYAbwIeAp7Ra3xSWvvd+dA9rf12nXQsWJSnFxvCxdo6vdhxuT9MJ00L07KJ
YbExYbHhI8LsoaVhOnBImCZm57UKarbmHS5JlVIxyVQovhQp489SPGPkpJ1S
CmlALhkiHJ+U2DHAk7fjkCQTk7jEqImcocMSa7cm5JWYeYifpkRy8s/5qXAN
P9URl5C3o+RS/j7tBR4CSvx9PO/x9+gmfkLYHGkxcAfwEPAY8DTQwE/geRfP
O/wdiudvUy6wGDgbuAN4CHgaaORvI7Xxt/QPP97S+3wLkm8R528htfE3Ma03
kcbzN5B7g78B1Y63F4zOO6BnvLmRjDM7kkmzRzKJqXlB/rv2bwbBozxYaXjU
Qak/3lXzpf7t2cPhfuntRfOdQf5Bh+p17iwZxl8lDSg+Z3gVI79KKnAqsB64
FGhA7jXkXqNW4GbgTqAGhJchtQFVfhT4EvA1Ggb0AacCTfyVdgwT5MfaPaXO
klT+Mn+e0mDxbv4bnb7En9Ppi/zXOn0BNAv0KH+uPctJJbGoJ7SxgdpAc1Gv
8Kc7BiQ6QyUJ/BBs50SaCywGTgHOBm4CGvgh3r+9yZmITg7SUbxZO3k7/VGn
j9CDJvItcPo84+GAqkg8Yy5GDskOdYeH+zxbtqEoEs9ddyMnEs+tdyAnEs/q
m5ETiWfRNciJxNO0ADmReGbNRk4knilVyCEJ8vufHDDQWTBlIVNL4vm1sNK1
sNK1sNK1JPNrxUPfyEK3n7YPHgyLbfd5Bw12tuJu8xRrnc5aH2Stzaz1RtZ6
M2stYq1XslYva3Ww1izW6mOtB1khTNHKfJ0XFEf70lnrUda6h7W2sFYPa81m
rQNYq8oKfEHuap+Yr5NynXSUiE0HevE4RJ947oJFXfB5F2LCIaTHgCG95IOQ
2j8snJElaP+OwcXh8tAxeUuwfY6g4REswxF6FyhjgY7AjY6gkyPoIB5pMXA2
8DDwNDAENEC6PxTfpKfxSHOBxcDZwJuAp4EGXZ3TQE5LIiru1RUTSudGFJ8C
lPkRPP3xuLjL18/msHltl0ibHCw+i03JCmXxAkpNxXtWYoIpIcis+7+yfv2V
lWJKYvhdfJMI3XxzhG5q/wahm21t9xx0lqSweylLhuex0eRh2aCF1KKXR5LD
JOgIcvDHQfPaHdVoFt/uGeLsYnGi1X7nN46Tzj86ghzZTxwHnX9QgzJrd/4e
nMf3O1913OZ8ITdoAucpT5CBdKm66AFHoXPPUV30ZlRsb3feKMh+5w2OCc6F
Dr2iOVxxZQtKvnjndM8s5yXor8wxx+lrQZ/7ncWOK51FYamRos1+5zCo4A1n
B0PZQQ59UHcWOJ3OkTNnFgTZPN8Q4xZjjXGKcZQxzzjE6DI6jf2MdmOyKdFk
M8WZLCazyWQymGQTN5EpORg64fOKjymTDTZBxDeoMpL1vI2LVHyiKUIfM3G6
lLQkqZJXzihlldrhRqqco2pfznAHmRkvfoq7lOFkpcqqUq3QWxk0hqZrBd5K
zTj1ipo2xu7yg6vxjXh1qaoJspBgrbOLj1gOEGMJ6+60C3rRujv9fkpPvaY4
vThxXMLoirLvSeojqfccpF+Q71eqbamcUdM+cvfufqV+LU/Ph0LIV2o/Fh/F
HGD/zc6Ulx1gfxbEX3NAGsf+u3y64Evjyvz+yiCr1uVIZX+GHFznz7qcCae0
kCPVlBWW2x6Wy0Z7yA0QBHIxMZSty2XHxOhyMhNybS0DysvaBgzQZdJUatFl
WtLU82WOZkMmO1uXSW2lo7rM0dRWIaON00UcDohkOXQRlkkOXcTBMnWR6nMi
uRGR2/pEbtNHktg5GUdYxnqiV8Z6AjLefxaaS71e1jHW31grPsaqd5c3A+u1
26+Zly5u5Gpboz/y+Zanfk7jPEFxJ/W7m8u0RneZ2ja29nuqa0X1WHdZG9WW
V9W01fqay9rH+saWuxvK/B0Tpo4ouGCs2/rGGjH1ezqbKjobIcaaUPA91QWi
eoIYq0CMVSDGmuCboI9FuqtPrWkzUal/fG2YdvBYM9y2Hvf40lTb0nG6D491
pd9o78LVZRfFev2axV2qWYGiKqckp0RUYWuJqjjxWWWkKv3GsS57F9sVqbKB
neAuJe+KlS0rKb18fln4pwUA1oqVwuDh1NvyjwB15ZqvoaxlBVGlNnhGpVaM
l982oxHcejElbUwvLza2PBg6HGYOBXOMYEpSn6DgFQleTExE8O/Xf2WEjhe7
oJUf7GC+LLaCWvySllVZxRERqiIfCnXhYiXOihY/JtjCvKylt4+I2l4vhcsk
5tyLK1ZGchFbrIjQcEs0aek1SR8IY3n7LLZC71Y3p7e2piROGiXlUgnuzsNA
c0BzQPNA86RcX6LHKfECZ4ypwBlrLnMaDWXO3l79XlK6KAOYqTxKGbKH0olC
HwM/EbRnfugTUS8o/xRRMxhBol20h82nPXSInmFn0GovHaBOEreqMrqP1tA9
tAEn5SxwbqPpeBTw72EZoU7KpQdwVj5A3ZC9nG6kLkpl6aE/0k20TjqOVuvI
Sv0xmam0hO5kl4VWUi29K6+lArqMrqalrDVUE7ordHfoYfo5HZB+EzpLsZRJ
jXi6Q58r/xV6CwaopZ/QNnqX3R2zj3wYpRWSP6PltF2qk1noqtC30MBF10IH
mSZRNzvMvei9mT5m6WyNNB69PBTSQs9CykF1NI+2UxcbySZwl1IbmhTqplSM
sQq9bqN22o8nSL+kN5hFORN6OHSGMmgITcR8OulldljqOXtzTzEspsBKg2g0
apbQr+h5eoW52dN8iWJR8hSfsjr0KiXTcJoJbR9Fy4/YV/xGPDdJz8kVoVKK
g11+JKxNv6b3WCbLZVNYNR/El/D7peVkwojD8TTRfNh7K3p/B864n1v4Mekh
+XH5r4Z+PSdCcVgRD/2UfkZPMytmqrIWdgt7jX3Ax/PZ/Kf8feke+TH5d8YG
zPpKWkx30uP0FUtkhWwau4LNY2vYBvYjto11s1fYJ7yEV/GF/LQ0T1om/VIu
xTNDbpHXKuuV2w2f9NT0PNvz256vQnmh9TQN/nAztP8J3Y+ZHaBj9Dqed+l9
prBYFodHZS42k12P50Z2J3uQ7WKPsU6M8gp7n/0RB9tf2F85jm1u4HbcpcSN
ys2X49J6D7+PH8PzCv+MfyOlSf3xsjtSKpL80hJotUHajGef9J6cKR+TQ7Bz
nrJF2aHsUh5XnlHOGCzGW3BheOm7h84OPvtOD/Vs7NnS097TGXqPUrCGOIPw
DlcE7RvwLMB6b4HH7aXjzALbZbLBbBy7DJaZzRawZWwVLHkr285+ruv+BHsK
VvoDOw2drdyh6zyUj+SlfAqeK3kzX4a73d28k7/Gv5WMUqwUL6VIg6UJUp3U
LK2QrpO2SJr0kvS29L70pfQdnpBslp1yf9kje+UJ8mx5pXy//LH8sVKrvKh8
aDAbFhvWG4KGP+OKNM441TjNWGfcZNxvfNVUD+88QvvoyfN/zcdOSDdL5dI+
uovnyxl4K3oZ/jybmqRJHJ7Kd7GN/AbWyQcoqwxj+Vg2mc7IHtj6Ob6Df8nH
SpNYJZtBC/jwcG+GZHm3+G2pfIROyU9hbi+j51UGC7uRnzZYqJ3p/0cA+7U0
TPZKL9Ib0rvMKD9Ab8pmlsZO8UelqfCCX8rjlBpySffRE9IydgPt4+VE5r+a
7oAfT2a7EReqWB77WgrhhXgyvKhA+oDW0kL+X3QK+3gj3cua5KvoLspna+hj
egS7YpBytWGwIYW9wOfLAZ7EOonLj4nvWWcDmKQk062sTtpuOM1fp5V0TDbT
O9IvoP0x/oQ0ST6jTGfzsANuoPW0LHQzXafUyL9jV5HEqilbPoHotkbKk12g
NyGq1CKm7cfu7kIcKJEmgZMOz7kMfjETEWI7nq2IEzI8aD72+OWIYi9Tp6GK
B+kqJY4h6hDJL/ZMp1mhR2hb6Cq6OnQ35SAebAitQY+76EPaRLvYup7raSne
Tl/H3r5MqeDHlIpQDg/w1/kMvuXC9YW1s1k6fYrnCRTGKQcpIP+BZlBx6I7Q
7+HdFyHCbqM5uP2exCw/xwiXSIcpv2cybwtVSEsx33dpWujRkJOZaV5oEU2h
p+jnRoUajF6sscZ+h/leT818emiF1NwzH3bYBCuI/4NiJeLPbfIyea38Dd2B
Pb8F8WYn9s1u7JxO/X9wEB/CIxgq4pfzRirt5OykwRjk23xJpMgnJTIb5ZOM
MkwG5SSXnoKTxSDkDKV0r+3LorNFk21fFE06W0TFyNu+QzJ8mCvBlZCNBJd8
+k6VDn/nU+ivpMqHxb9d0GCLTTjDFIqhLdo6b02bQf+En5MS5Ht9saYigzlm
jFxkGMNY7smzJ6n47EfF9jaHXutBLSeDOfZFKWaMUigXUSHkpCLOVcbYi2Zz
7M2uB7biog6t6oom2U7ZTqKLk7bPqbh4ku3sR7ikdyi4QDFbka3I7x8+zI5l
MvoMeO+g9OLizO683GHD/UlSQn6CJI3MT/m44N0RDx1ji6QYVt5z8Luveu7p
7sYcrpQ6+LX6HGLpx2IOMGPo647+2SOUYOhrX3/PoBGxBjOWBy+BimKI/TzG
ZJIkTkZTkTk+pjWGx+Cm40uxxo+IeYdJchFnPmvCCJZhWfZoulDdKyxqO+ut
K9INK5Q9W4SEJSSOHi1w+DDm9dp9FiYbzaQY8JoVnoDt2bTR+gSgu5Svp5vz
unPeHt49TOpgaWfO9PwxnIq1rgm9owxUjmNnDKFRTF8L329WpyxPXZ62eujq
3PWpj+S+TaYt/R5K5bflrh3F1zpudfHOVFaf1uDiqSm+1AUk7c56I5W3OFr6
8ZWZy+18JV2fygNpa+38sZQnUvnarIDKA+a1Dv6i+txA3p36jJ13ZT6XzOeP
6krl89Oa83lzLqvOrx3FK/JnOfmk1FI7H5Y52sk99gEqp5ycrJyhZjPZU1P7
paipqaraZc5JNptzPINsbMSgrDFSrH19P/eV9UlLk3YmSblJviSe9Fa/Teks
Pchn+RwZ47KWq/1Yv8LCQVfutDLrzuFXqkZmXFCwbKvw3rpTX9SdgqOc/OJU
HQjy8LaTp4pPbYgb6o27wfasMa5oQ5wgtiI9A7PX/T1QhNpxKYXGQ1Pt9pSM
9PR+tqEpKSNsqtksefr5smKkEUFpeCdcyeYJSrnti2wMK+bFk9mNJYXHRZLc
/ITeEpYy22Bw9x/oGTliVIFHpPl5qSnJChtVkGYwpqYZPWzUqJEjPO7+hpTk
1DTGDILm542Suv2/W/3erQv3PtFYeuxnWw71/IkZczIODpve3Hrd4p6sleWz
J0xscLvZpJ79d8+965Zpe/Y0Nm5ds23jmzOW31V665Hgzb+9p6etZsVFh9es
v2JThbSufF5x5ewry/pXDj47km27/CcT/YebxTv77p532Frc2szUJPxnnxkh
5HFDkE31efRtycysiMxcQoEMhcYxU3CqLUGM3om9szNWbFUY/ouTtlPwbioW
Kfbs2VPC0bE59xkNTPy+MB02yu2GNfLh0ckG48BRowr2d0+9PG80Jtq97HbP
pIyGK6BNCQvyBXwxfPti3ZszlvKlEp/EJkERN/FMZSmEMuSld4pddrLO9hHl
Tjo1fBgtY3Xid/ZYkNxMMUzSSFdKCR/Egvv2oUEXJroBc5SoQO81nYspFYUn
slf8O2RGO+UHwi5VdwrTgOodfYpH1O7qRugQn3KEPuajseuksMUOkBR6pz15
NA+G3vGpyaPvlRiXdkh7JS5dQyxZ/JMvBlmz9AnxT1iQPbYPZ1PHaoxVZPvi
lA2jFRUXbVCGeutuCPsn4kIHIrRwrmIMncLyGXtsc09NhvLZt8kIEzNDH8sJ
ymGyUT/Wo8dfHv6la2aWrCRnWa1pCE6fdMbH85ki48uwWpFLIIvgUKrFgtQi
eJSL95VuJN2YsT7ncCS/sKcv0JNB9PRRp9WqZz73ZcTGGkSXNsEhm8UiUsHr
6/Jcn77JsmED3xi7Mf6FOCXGGJvOy5MuS7k0Y7y9Kqk2pTZjun2hcWFsY9Ki
lIUZ9fbr+LWGa2JXx28wbDVusb2Q/gZ/zfBa7JvxmX0qldhCX5CFLFieakoL
/TcieGwk/zXec6zM50uoTmuJ8bncI4bFMIqxIVqXmNGoVzAGr2K64JPVMZud
CRaLJch8ndUJcbGx4YzJakWmozqhhUSYt6An8V84ceoVJVNElMKi+6tpc9bz
twv/wdTrvKeQimzdMj0bMQWrW0Z1Gh+v+abWdBrUDJsjGDrTztXYX4VOUCow
ERgPLBTAgH6/395mTUa06VxktcqZetiRlXDYEW5uSxTxJDUxxcb1KJNkE7Ej
wYZ4YjTMXHh85zXtK0oXHH/g1et+dOCxNWsee+zGNZfW8eNMZhf/YnZHT+iN
np6eI3u2Psl+1nPv6TN4IVnw+fz18PF3cdD/FT5mZnHCwzrMfTPvzZh7rUW9
GXPYFn1G8bmqJXEqLpRv4pv4NpP8C5nFkEHhUozCLJwdNevWNYt1IiZ+KRYM
nei02eCYwdCnvgTdXR26u8bp7gpr+TKEM/Z6nO59mRbFh3NYEX3Fib4UpuLt
jysZsV2siK2jcKhYFl4RHVAI33iK00azBHEW4wjwsnAlDmXOYgw+RYlhlhhh
62KEdD3Ew+Iud4LBYByJ8JXP/9pZcrzq3vdzV8jXj1vjfGLC0dmYQxF2txGW
y+IDz92NfDEJNmt6UpJhplVsqIQEPfO5L8ZmQy4rWckSGzVNCGRlidosRxxq
sixihllBfhA6mdPSVKctARclpzhjXhUK5XZTrnAwb7FIn80TW5j3DWhJTOT6
gL6Y+ATeO84JX2xiEp+ZlSx4ou92dC0CRmwsn4nMZz7d2t83mtjVYjwxmj6Y
b8JYZazhoHLIcND4vOkFh3GixW+piltoaYpbnbg66bbEpxI/zPzQfibTcij2
ySSeZbaZDIajjsxkhyPT5MhEpDRlOiRrli3IH+6YksASgix9n9CThGIdjFvM
F2x383nb3dy33a3V5pa04wi0Ysuzg/xmUsnGCn2WhH3FeAtfwm/iMu/iA8jJ
NrXpm7QOgfdLr4i/+u7E3az41Nm6kwmJwh+Q9F4fwqdYZMv6Yuw2h62fLctm
+FXoDBmxUU2gMcDe/VropzpWtxy7Viyt1W40WnlWUMrvXMQtyVZ99yZHdq+4
IsCk4oKQ4vIUwKF67wHicNQvCXA0/MjG7wp4WvZD20/v2nb9LfexA0lf//b4
l5c8+syDtVl79pQUNR6+8dkP5y788X2BpGOvf7qnZvdTD29sGA5PrA59JKfC
E73sy/NOidiMdJ9Y33QHMbFlvBYU2CC32Rpvic8ymwelZDnkrEEOZZDVbbWk
ZzBKVG1iE6pGj/ASIe7JFTEeBzoeShyNWyvOMUzm1HO25xJH25715gkU/jFM
saZay63rrXJ5wuUJ19il6amLbAuSm1JXWq9LXm8NJN9m/7nVHGuxxslGhvGY
cATxD5UOMvHRjpWN7LRYUuT0Lv4wZfB5vhhop0A9a+IFfpF4nl8knncMJLbM
VpeoXE0X+0htNV7QyHheI+N5jYwtHv3s8DDy2Dwcs/7iSdHeszknPcgK2zOO
sy5WiGvAYV9s38mweUiQ3R1xLu8p3b0iwf8Lb13fGXD2pNhGuB8JXwu7Wp97
tSuqhN0JN/KLcMSWCSfCi47stljjzfCdfYvi4x2DZOSeXDTIivupI0X3KIfu
UXm5+cKpcr35eaNBxM0zqSBVnAa6VxkL+rK9DiY8zChScvf3VHc6f7Lwpr0P
3pB/WXJibEtw/YL5dyR3uj59YtXRhXObbtnc88lrT4fY2vRtG7Rb1jyQfD9f
dUPjLbfequ57/qr2ptn3Dc365V2He/7ykXg/zEQEtOHdykxW7hCe9xRZQt+G
zd5ZbTVEDhCl9yQx9Gb+h7QvgZOiutave2/tS1d19d4909M9S88mMMywNYyh
jIgPcQQXhkU6YBQkgpHFJWqMo0FQREWNRI0L7hjDE5hhGNGnSHguMURfNC4x
Rl8e4pKQR5RHDMw0/3NvVfX0iP5ifv9muup0dXV11b1n+c53TjVKKbb4guDH
FtEXlFK08QVJ9naWfUHyo7Msl/bxQpPsC4IviL6g+IIXx5yxnfYsfZF+t/64
/rIunEpONX7CExtcFqeLRBJUjUgQDQ3jV4QPE8ITg8O6wUvkafw0AEeMNjgq
x/OwC/crle/DC7cLgupUVo1S/TCnupiKCX9l4ErtQ2MdQ3Kqa0ZJXdnR0joT
UxvVjPAoDls4gwmmH6afAWFvL/0M3hboQ2uZ6v2FYg8a5Q7SmNBu7bNYkIP8
/lB7MJ9nyefq4c08eDbTNCHsMTreAPhq5yFOvOFobXlSPSxP+MrKdkZmgyLC
Pk5Yd7S83jU9rzu5vF5dAetheZfuRl9R7eGaU706r4jEwH2kdTuFLpzO+6G0
ua2t1Y2lwexo1BZsi9QESRDh9QMr8b23v/BCT3E0mvcI6e0/5ZHiA+C57xhY
DA6Bot6s8CjEVYkhkpCvI7YvhHRvtm1fCOnelNogPEUN3XWCT3EIRtWgw4gq
Amo6EqmwaZDVTJ5PVxgBxElxgCAMQjOBOUwa/qjDo4YMlzGwG5wc9XGjbBam
Tbacmry8ck3l+tBjoV/qb+rvpmQlFA80JUlIjdih0K8CZjgQCgdMA/ycE6Jf
7QQ2BHAgYDoR5J3GdpNHr1MfCMHQCdITCs6zLrKutm6xeOsb+7A482FxyCKs
OI77Piy+LmM/g0ZzJroD9hy3NbDtq3xZ1VBfNsSbFWiWB/6LjUEBPE2BcjSr
5eHNAqgVVx4we5QWoUXbAXGSML9GPduyAi2R+ECL4yqMUADwBh9xPVwkYlbw
DO5WGKYNkXPrEpP3A+YI+mxzU+wvuTfwaaFsJEvAr3GRsARYODfjPyJ3Lbm2
Z9PamWsbHr8ZvzOwfdrKW3ci+eKbDr40gLqsNTfufvDurdMmRvHfflG8dG7x
0H+9eOvWD+DyO0DTIhA3K7km9ElZ5KwyURWahwhKNaQdAxkGwKmUUJ0OG2oa
cXUWBVos17LSMYuqTozFzRjLtWJeYrTnjT3Wf/oqVNhv7S5QFRq2OIEmSU5k
UmJSZo59VmYxOU86T77APi9zsXxJxXXyqoo35TeiQSlD57DedQHijBoK5lJU
yrI36GlNNzCcWAq9TrFoH42Y/kkiGru4bXVD9KeuTH/qyvSnboXF9MdCnAWu
Cq7twHaKua11x4GPGted9o0u7bvhNHjNp9lx0ijvGBNj82IXxa6O8THL2wFG
g7nVQGcsSg8Vi9JzjvXh2u7mUurkxspyfdvvBk4WMGHASsr1FAVgPfWZmky2
z9cuegAaO2entiEkqEYD0ynDSIWrmU6FjZTAQmZKGNSpVlebkJSrZ1mTKNHo
aFP4VVPNBa2xNFaicJmukSPd8eOmLO48YcZ38QnPnN8zcNlrK/+7uPfeGz7e
9N7A2Gk3n7b84QevvOLn/JmBC1o6Wr711z+cO7/499+u2f8jNBX9ED3+/MZd
/e8Vfj677747n3wSZukciJdR4TEY+xsZOxHYbSAe/rDMKxBUqGNqwYhXdGMF
IZhOyzSGaglOmvIK5c/cNNDKeZhMhNVF6GrI7RIBz4ApibqsvePg/tOsQzTn
oWwDRbuAEFxoC/aY6lF0ArpCbQ0xW2ub6DEoIkdEqWaMbY89h2xbW9w/dYz5
FLn28xv4w5vW3lG0i0f63t2EPkUv3sMR7kywmgRYTYyr4VrwC4N206NzqfRw
GsYgv8Ezhg+3s2lRaEjbRpoGfEZSHOxlHEWzCXrGvK7pJyRUYG+acULfpHGT
+HuRksmR2ohOd4+wI0aYyUUGuYihRAeNQfspBevxHdvZiYj+iYjuiexlvIfp
h1nv++k2EPqdarqRfi39ZIT5/gi70sHr878MvguN8E7Af1Kr7xgdRY3RKdEp
uX36Jy2C0oKu4q5CP+Qvlpdpy/VLjCtiN3Jr0Fp+lXyNtlJfZdwU+3XwhZCt
c+k4p8M3bRiOygZziF2ny+w67dt1b2d6xXMKUk6w8flcc9nezWV7N5d5geYV
ppMBL2AizrRMbPahW3ta477px33Tj/skSHzFZoJIHz6/u9bfqdbfqdYnVWpX
RPxUPRNxIjiybuSLfqxhAYaRJwdL8aYEnu18gQ2lS5+X3ED10Q+2VmSS4AS2
ZjIj6GpYBjD7B1saM8wruHGnsHwZtwzysm4YueHMLaRSot3A3IJtiFnmFsQy
t5CnCAUNMrYlqMzBllC4zBuUuwZ0wdIl+57b+eniC1ffVDz0zjvFQ7d+d9Xi
RdfdsPD868dPWXfmNRs3XXv1YyTVeOcFG37//oaFP208bvf1zxwFmL/zlufR
WYtW/njeuatX9h/tWDft0a5rf76R4umnILNdxedYbec05iEygKVEScFiO0/a
kciruB1gCYcph/KA7HGyy6itQ17GxosNWWqbwMs+STrRpUnbIrTG8NSePXvI
7D17+h/bsweOsZT7Ez+Bp917P2Tfp99CugRMBJHIWHgaz4E3CJ6zFTviDjQd
kO50J8I9gZ7I8Dgp8+2MyrlEmjmHTWo79T1cYkSyYz884knLPSWa+HCFlKPR
Wg4WRJE4mJ1X64g9MPx7WBFkNIogFFlKXukvEoyv2Yju7i7uLj7fTUdlOXqA
H8+LbFQWsbOsF0TESwpXR1AdwVIdz4t14Djvx69ijJ8TuKSCEjI9q9OsvS5x
DGNE2ep2dkp5cIquTxBYxi6KGIGwZQk9r+a2EZRvQ9nRFLRm+fH948hL9Em+
s3HgZxu/asy68C08oFcEqQKmY4Y4HsZMcBAdM8EdM/GJDCHtIpeUMwISvDHb
V4ARa+/YTwftq8eMcKIoYEgNHeHLY4bQaPrHT+gfTVD/UfIKvqZ4TjeaiNq7
iwth3I4OcJwwG7IziQvgNfRMT6gENPxFGcXSX5KVsu1Cmcz7clnSJfKl7EvX
n/U+cth1K7CbqGnPep896G/Eur8RDW4UVT9ni/oEow/nNT91VFU/P/QFJeCf
hr9Fcrds70QB02Lp0mc9nvAFQ0+YBo/ZzO8zHy6w5QirxTpfXqTMt64n66yX
hRfEndYBS5OF2agTT7cWaZutz/XPjc8DCq/zBh8gmqoIPK8bAVmUJB1kWdQl
xHG0jGgy8jIj6WF4CxNCt0XoNpLh9TB8SkkLgpwWidiHl0KyL+ufOBhhvANp
YBWaY+sZboFEzpjOv8q/z5N1POL7EHK06fpO6X2drNORTl9bpvSqhK+WuiQs
3W6++ZZr/gl4wl8cdCeZsPbvB9fWntw/cW87LdXspwWHZgDsq4fH2dotTEJ6
aO3eHdi9e7XgrgEhTN2snTl1c/r0Oa7HnTOrhzeJLO04eoCWTF3vupzC+q9/
pLbIYh8Z6ehLZJlD4INkHYFVTWybOJHRiqC3NagN1ZAsCWVJrl6UCG77Lzzr
vScGfvbAO+hvd02urmgTdhyejJ4pTsJz0PqnLrvpRrD89YCcPgFdDjKs/ke3
GgMK5jTSWgTPT67prFlYs0JZqYjfS14iLFVWaD8WfqyJ9VGFxOub0tFKBaLm
x2X6/vGxRQIn3qkoITvd1NTYyFVUpmGCqtLpICfH4bPF0mfjZTE0fvQQbKef
VTvjOVGnoEWEZN+po6hFtCk6EUWqCKJMz1RkqieGqVqKZ9UNOe5QhO4f1+qs
y+kV9Li6So+mU2XW6bH05HFwjsegc9UH3+kM888Zj2c/xIAUEzyO/XAP01pX
EF3WXWVMe6F5wtx4iUUvtA9QkuE09rrDZbrcxyCpCk+Y33YLECeFYEFa+kbM
jzHGPbVVsZvAx25bYtuIc4lSTkaVLhbFZcGYluCC2TLOKoBrULbV5UxzNeCU
W8d+C7vyepzb+MqKhedfd8vMrufXFm9Hx18z7pSpk6+9r/guuvA7uRPnjD/r
jrXFTcKO2U8t+M6jbfXPdJ2/Zf5IckYwurBjykWNRzZI+rjFk8+4nHKoC49+
JFwqvM5VohGsOnouvqASwgIDp2xsPnbmUSnDtRrnQgy4uLKLW1m5jrtbeII8
YjxFeowXjde4vZWfVwYDdmWwspI0iQ3BpopM1clGZ3hmpDOxSFhceaV9o303
uStwd8VG9DDeGPxdIMSFuaQVtpI8LStubcgzrjbTkLdMMKBUKK2TVJpXrJx5
CpejnRPJqpg/6TF/0mPepKudsVxGRuCX2UujU2aaIifS5851uxWaC2wCYS5B
8FKuYMxtUijQqhXkVctTjgp+jTctS+dTfaS1ZwnkJCEQti7RiTtXbu2bkY8o
JvI11bUwJ3ZtWysfk3IUH+FI2KZoie/ZdXzxlx/uL771syfRibv+gI6b8Fzb
rtsf/5+5F+5b9dCfMB75v0eeR9//7YdoxpYPXhm24bYHi/9769PFT9Y8Q2P/
fRDD5oDdmzAvLiKyM1XoRNm1zqCVNjk5NsSKhtYJfSuqogOjoCpGiCvMJBSV
1U3jbAszKhYhklWVlj+sluqxSpYLcsGorG9sVH/3jeoL36jSX2FU3svCEEsa
2XLi5c4YkpJkURZkXubFRDwZx6Kmgg9QiRiJhqOhKBFTJJZFdgAWcbkii6Jq
MMs10+pWEzyuQYXUFs76alPzrCwWjUUh/8VgY3XZVq8wAclx9j70jyfm/Gj2
xStOu+LWPdcVt6D8rY+MPKnjp0tO21T8tbAjUnnqd4uv7n6sWHz8nNZNY0ae
9Mmj+/7elKY18wdBcWjfq8btZ/MVEYW0LEsSR3g6ZaqS1jhZojoetuxR0lnk
lIyaMbCaNHgFl2K8zwGXnJnyLzgzRfkar6ZPONuzAm8KOnzHVug4uPcYT0Yh
oiAzryUIiFP8oeSP8VrucEay3vNBvrb/PtLc/zuyUtixqTjxF0VjEx0bAPn8
dTA2Cvc6G5tqNja3SKg0PDA092RwRsM4qf1/joejufV/z30VjxkNdcLcrx2N
vS57QImYISOxnY3El4bA/vIIbCTv9X+INw9Mp1c/ftPAQjjTC8G/PgX+tQ49
xq49mQqnInh+PfqOHEI2qa3lsnYM13FpzBxghJ4tQmIsHSCQ+CoI5erraodY
em2ZpdeWLN3orAWkDWNYP59x6HvZyDBQ6JHpv2eawkBhgH4LXt5Vj+or/cGu
9Ae7suRUK3MZFaklp6qyorSayJ179hCn2mEVDnkjabGhpJCnxEPAcNJGIVYM
ylNGBmx8El+TqkhWJCqIqOesukiuKifX8bmaurhRmeWiZigLO4dDGQleVQt1
WVShgbGHg7BIK9ksV0tgwZrkwehp61kJiFHzhwxiO3Fqa7MBRvpsW4JQgOa/
rduXiIodCgVizKUHyJCqUpDVwKlfH10XHOLZozFpOAbXLkoiOHcenPvYIDkV
X3hL8bUNbxfv7+lG09+9H6Hbck9mv9t70XW7LsuOW43wrT868C088Rdo4IPl
K55C33n7TbSi5/y+n7Qs7eo4feW06+/fXfyi65yxKAg68jB4+2rqO9BkF+EZ
oAnRUGQUT9KKukF9TcWqgLEmg1ccogpymSrIvips65QzkiTSigsDY6ACjsYA
GWNrRcqpRhgoQwyUFboMZGDN1wPN1wPN1YPtnVrG613Y6ahwUt/A+GTP+Mpi
QdRzRRkDZYzpxnxjqcFPmB1vLiwrNS2UYoOrTs3trjax9qF8YQQLEAigNlFh
Vh1jCSEcArgtC5gZ5MRBrE0p9Cw8a2D58C58eNeuAVHYMfAonnN4Mu4e6ICr
eQ4c0zUw5gRNZ9UW7F8/8QUseQNBQDjB8NK4f5QGnPNl2FXQ3YBJQCjtesSd
D7arJ/d2Ul+HaStH97jjWUtHd9sodz2sxV03NLrrmjp3XZl21/Gk2wLSZFij
MsI64UkB7B3wyi3cBm4zx4/gHG469z53gBPsDGxcxxHBLa3RuYl7c/YXf87+
6s/ZIcdykzg2Zw/yb84uC9Ynzp21tQsytcLsZcvbB0opEK25MehUyn+6wTli
r5+Ljv5zu2g2A+MMGYxwBtVtfBbzf2lSPTYvK+Pr1dHiGPVkdSZZRd4i0qXq
O+QdCPHUOzFo0iCs5dcIP+c/lQWVR6P5N3nakfqBo9jZUSRDFwAbu/W8Tbd2
w2vZW/N0XcnWO7vtKN3+R+fEBHxnXd3xspJIHM83xePfhvREUlRFVgXC8xlB
DQsCvALLESGVFVWVEzCPQAVAv1SCNcTxfXi8Y7YIaIOwWdgpfCDwwiky3aa1
SCgDqelmiUh9eFX311oSuFAt86+mJp8NBvGNNO1tHsRNA4Vl+ykLRh1gOzWT
9nb6BBuguS/t7oB1nBVDJdlql9sh041DppsazHRpMvn2uNkuS0xfHOjWg3Ro
DzgxEEQrEBwlWwFrlEIl1QLV8+5Nmt08qAC0gBpUqmGMj0vkefqsTuVB+f7Y
GwUxmhfpFGh2Xq4O53knnKdTsq0OxEi+LIeeTY+Mli0vNHM02U7BIUWRJzAV
zMr5IVbe5vWeUl1DWQR/UnD9Lvw2kgbuwtce5QYOHQCDb8RvDfx7/51436dF
3tVFvon1RD/sMlgIg4cVODlDeQf82DYJl6yf+JNHStiDfGMsdugYDCx+FQbe
V3ChF4UZHPFhFrvKkheLwFX9Fmzpc4ak7uQ40YQrsIjrteQmzXU8GIQh9V8I
B64zlgNGkIV9sHgQBNqV1UAl3aZvC6ZOFA5hWdECnKxgVRPp9WkWvSYNrqmX
7qVZHC3le1f+hX/l/T1Duixp9WHizp3Wa6/tpFxes6cinN91WSUxJyOyJWFL
ni0FtpSpttdQCTP0BuCAwpTAIIOlsqXkE1wyHeAq1rkiID2j2qNMthAgW0MB
wNswmKzzgB6NCewgT+NOzuYs3OkYHkwU/elih+VoLaP54IiDLDUBk3IvplDm
8VwjSDlXc9iUwzgl85fqq/SXYCj1KfoUkzTydcZxgVnkbP5S4weB1YasYUHO
G2MC0/BUMkly5A7j2wH1TnwXWS+tlzeSxyTRxmYg0CJgcERY1g2jRZBBlPUz
zDOQgzCWZUXVwJkHAhadp/l2l43tHXgjhJWRW4WM3IdGbtMV1ScXPQbRUTrV
jKNfrSFtB1x2AGmwL+6DlYm4E1TADIPh7JCLK7Z3chlzqYWsPty5PSPMF7oE
iCR4Y3eQxusEbYYutMcHqAIz3g1eJcte7i1Q/W1ndwT4/5LWfsbHrb6K0XGw
GtnClWi3Wf/B6RAg5aNvcvjom4xum7pZh/cayh2VcfSLLQGVvun1dLzRm80H
jsuyvo7esflA61gmbhsGW73ejebZy5cVwJtA/KLeJeUY1J8L9PZvbHoEHf3n
Ri3IJGNjxqIswAZUg4J3olp0dks0MRrNQ8LTxc4ni7OEHUc+u/Xfpv+M9B+e
zL9yZDT/wRHqEe6BGFdF8xuMmVWSuE8Qyz73trXT1nwAJcf1KCvtfdzjCQed
mmDw2zNknS0xxHVJhjAkY4kQWeExViSZJwD9jpSgHymDfsTfvg18lCgKfpgX
StBPcG0dEJmTZAZXyGgoo03X5mtLtS5N0OTyXMvLvjIu5jPglL9ZzsUfC/tK
OVcZqmguNLczfSksO/hlnGfT8lc+v5pnyuLHJXL0g+0QjuQMLDjWXjGyhWJ/
0IQe2ZmchyHc2Ts5LzutrtialyAaUWKpNwFiqyvSrTVuF7tWk5cCYXiG6OuD
vSEQK12xEsQIFb/YUgpPqMzqXUXSicwh6cthyWXx2hCFnih4z4sE73ixvwha
cw1/NWhM15Eu+us7kBG+J7zBBbgUcjHR1KSJwlY4nIqlUjxv8WEtpqX4x2O9
gRcCJBaLp3Cm0glOC02LOclZwixlpjUjOC80JzYv3pmcmboxdhe2EmlC7LSm
RIbkB5EyJYn4+UFvZyRHbzF5tqxhXAJdpNMr+cBQoqVgOqkS7Q6i8yrRvl46
mxKdcOaUpWRXJao0/ZBp+ipkljJIM0c1p9RL7qWSoU5OLPO7iYpzBzNyn6cr
lJSl48sN5oXCstQWzWYEnaaQBMvmCCnrGeeyrTzld1gWN9bi2lq54Cicq6nm
zkXXozGvoMlP9BR7n3u1uGPjS6jyrXdR6vJPbv1N8S38K3QhundX8ZE/vF/c
sO0lNOfZ4t+Lr6JRKNWNtNuLH7rMHD8Atm5wcTTcRbQLgovDeKo1NXy2dXaY
1/Q0OHIuFnd5DXvIhHxlG2d3p52Tn4bpcdn4QKfMGG/Z8oLiQcem4yQnM0kE
f8m44Y+44Y+4UQIpxr9KkBxLFyXKscogC77MnRJvOny+iCVlNOXeEtAZURII
UKIk/tVESWssjWFestkgyCXSDTfe1rHkttl/Lb5cvB5d+cx9hVNHrizeIOwI
2At6L3y6ODDwC4LWXj33xxGDcqOzjt4s/BXsJ8I1YMJm4I55uftzOBEfG8Fa
BV9FyYVwVbhGbBKGxZpzE4T22PjcqcKpsSm5gjCjZlbuIuFKcoWwlqwV7uDu
Jg9zT5Dfcb+Lfsh9GPswnqwQmrkmYYLAF4Tb4utzv8vxddGm3KhoPjclPqXi
pKqTaqbmOuVZwRmRORVzKjurZmZmVn9PWBhZnLsyd3PFzbl343/IJbQ4ikAs
2prKc7TrsCWV5+PheJMwXuAxiTYQqSEXjwqcmCWhpIDpC06oTadNguXatKQk
hyhNskxpkmWFl2QuFKezG/KNNsRCis6EA8xoQ77RhkpqFDoFJzNNXU24Keur
UdZXo2zJcLM5CBBayV61OD2axuxVSzQO2uuguXZ4qYlvrYxf91ifWJ4Ltlkv
Wy8XPMKdW06D8rLlKScicJxkxnO52nRDNFprYocQqZbZtqSYaWbbpmfbbe5N
CiPKbkaj3eX0HrN6sYywoaYPW8d4Nh+kDmBsrp7/v9XL8/fd+9B/vlh85snN
6KSXqR/4/sC+jRc+Aeb/TvFPKPWHRXPPXnBvoXl1/sqzd6K5v38Hnbfj+eIj
v99WfP+mEYV7UH4rUm8vvlWEnYu/qZ+QoPr4AET/TeAR4lw1vprpY9bWAsge
UzGnaqF8YRWvsNs4ZLaU2LIWghSbKHazBBV0X9B8we47+qduOzkK1ge6q+tH
BenryvpRlrc2vTW8/3Z3Zc59H/a3vDV935kCQl3glIpTMmdqcysurFiu/CBw
uXmder35U+Nxs8/8OPCRaYEvzwTNcDBoBk1dsVM4m4yqok3vrxDiihKNJRPp
2LNHd5bVF3a6DFIsxmWrmZ+LgyYG5PQQvR3aolNip9K5wD2if/+W6HsmRksl
GEElsiphIVO7tLarltRWx/Ex/Tgldxf/pu5O/FpsUkMT62P5YC8CJfbGvRoF
BbKe14PcG17kR7C7KdybKYTSvW1lD87jUBxVdsy8aY0P2uMphEDLGIYNABJJ
JvJBwCo2PANORd6CFNmqroJnCXzMTm1VEpSydLQliQSHTEAdqJoZhudfXd7r
SyXEWDQWqiHDMXjYGuZtWQNP9gG8Zvevr/jV6x0NM049enDXjO/PHJad+t/o
gevWn/bTh4otwo5pL11+z5uVdbWnXVJchkauXDtOkwYuIW1jLz95Eb1vau7R
j/g/C69zLeQE1lsR5Or9OAbTnCuTS92WMF+WN4MJX0iCcEIV288oq0nrZbJW
JleUySlfhtw87ikE9gXkCk5D57nkXH4FuZjn6+pHk3zFiWSKdGrlSVWTaifX
n0lmS3MrZzbcEArUUIKcKk+tL9T5Qs4X6n2hhumVu7Mr1PlCzhfqKaM2mUoN
Rq4W15L6ujHmqJpJdSeNmJPprJlRt0S7wFgcWBheEL9cu8K4wrzKuqR2Rd0q
ska7wVhj3mRdV/vjutuM9eb6SNpLm4dlc3Yql1RyjSjHcY1Jm28dmeMWgOsx
hl2euiGFU3VRY1i6vg7VCVGhVNIT0sOUdDpKGHSi9HbB5eHpqsCabUbsd/+l
nGF1tQFDE7IVlemULIk8wSKqq62GbaKQTg1LOtSGbgHssT/KDWOFCpZQWCiD
pqP5aClah0TUhzY7+rB0JhT69gz6xQI1aYO+oqcCV3CKMqSFTynzD8pgC5+S
4xpRI4WdgQCe0Uivh5lwY7I1qx8TsfzOPBgjlLNp5kM/ZfsewC51qdhnUUeR
GOkVLwode2mwsryqsB/JWGmY3v5lDRSa99LFQTpSYOQU3tPK/mzaorRs0MZR
+Qtm8antKIWGpaLD3DarYVo0zdBQlPiVMzBXt787jdtaveJjbT1rxWP3rXi1
5Eg4FuVjzJ5peMvN3W7Me+mqi35+5vS5E4pLTv/e+T/67CcP/WOVsMPc9Pjm
B/Lj0Duzuq5YdeTeF4uf34Xesr5/08xvr5h00vk1sXOaxz604KLnz/ver68J
3HjzNWdPa2tb3DBh26WXvLri4k8or9QCqHYH7ZlCMZbBir7LlXxB9Nlw6Z+y
4aLPhkv/hA0H/y3gNCgbx37cX+nDK7ozbgvQdjGD8Ajaa4nQNuTVHz52NObn
Zc/Jf+bzbX/yvX2/792LLpNDjyj33lVOvdFfXbAG9hb2Wex+7oleWaH0SPVw
skgwmzHC/GvrRO9WDlrjw6FiJb+mmBKMTZsOf07H7gHI52j1JowmsOiv5sxZ
/Cz5ZZmP9nl1nFH8BHkyf4p8qfmo8LEp6RwO0tsSRSU8JGCGywwi7AfM7s5w
DvsZPS5l9NjyqnkfuBk9LmSiKBOdHsXzo0ujXVES/dosobfTYIU9n49QM969
Om70VH3bUUvRU+U9Bs2NnmopeqqFCM3sB6Ony0x3WJCjlWcL+yeyNKGZ5gli
EMa2d4mocFhzU2fWeNgW9PK10QDt3I7TID9/13nFI2/8pnh46a6TN131Zq+w
o3/Le8X+h25GxidkWv/W57Z9dxe7A53+xyLCZHpPFj6RabBwnH9jlR8aeBC8
kCMPqaEdLsnckJS4vLb2WSnk+IOJAyU7UI5+Wop6si/3dKphw3jWO+4+fyOq
9XorsC+oSZ8tort5XYeo1q9CgVBG7Do2rUOzzFLlBEUWEBZGvLfHem9PsK2N
c1kI2nldO0JATVwDqVNH6C36fP0G+QZlnb5TP6BrGX26jnmsydhrDleQrjHe
eeJE1iQHn1YVJSMLYVkWODA+LIQxFhT4qk8yKicrC2S0AMusuNSQny6jLnmd
DK8RcgzsNOTnYXQLvh9jTLcEM8J0AbcI84V1wk7hgCAIffj6bm3+RpdKXEbv
W6bPuOX+UkAysT/u/lqA17tHW/dcqjA8SAdu5UxQwr9tVWxEV3KY8tt+J/TU
zQ2w95jT57DfPKG/gs+IA3rbxLH3cjGH3StwsuwTOTSnyKI2lwxsQ/iEgZd+
i64aXlU9DK19YWCXsOPIW11Lf/ADvpHVtyAFkC6l6B//3b0T0PR1C+YOLNBT
kUCZlplHB0p7kCF7+PpmDnaL8mKpDlGmeK5C+9GQ+AJ8n4+qAnAIXyfNMv00
ywKwfvQN+BrDa2X1ZKets5HLBRvtXDzPjYFYNSY+hTs5OMU+OT6LmxmcZc+M
W3fKd5o4GKdlNIstPaTSZqFkojkyShilTxIm6VMjZwln6WdHzhPO0xdHLhYu
1q+MmEKEsvM2gFgTszGf6JJnMQZKqPalCS8IWJRA+1RwP4oRME09HLJt+h8G
xSGvbu8WuHiGrnU7SNfOnIisZDiB/sYO+GHExQVZTkfi4UgkbuuKko7YINpB
3TQzVjBsWUFb0eV4RDCDFjhjOCWBxC3TVBRQAzinuG0Hg5ycjMWS1gkKOp3L
wIidzkXg6XACOr03QzvSEok+dOMWN3koJBMdA8n4wEAyMRA/7aQFk/aVMgaf
BKfJgvfbOH4rakc5JT50BWpJf85lNyzad/tS+QLU3AQ1D5YZha3GwXe7JlAH
7zWV8+fMEjzSPTD4RrfuCA79HQbEyjXLC1yJ7iyLiY6h2+ALYMoQjsheZyul
zl1bCbm2ErJhFWpDNYh2uCJ0X/HKF9+vTY5TUezT306rqRi275fF7z9dfKVe
ioWLL4Mvn/jTO/5cS/44kCz+5fMbe8i/H57MF9ZmFpx85CHPo08BywqRWSzT
0DirrFxh+nJPZ7DUZR0YtBu7tFEebNIWxJLp+O8ag9lEKO5vVI5JMZymTgCY
CRTVcKPdGBqHxpJx8jhlnDE+MNoeG1LtEK1J23QR8ArRhrcuL1A7S2iFOuPX
sC9Dl2k4xzdKDVpTIGeP4cfL4zV6xH+Tz+IL8lxtTuAs+3y0gL9AXqx9L7DA
voS/QqZpw2X2ZaFV/BppjXoH3ydvt1/gX5bf4t+W3wm8aX/Efyx/HNhnHyey
H5nQg4DTo3SpyXQJDvOLbip4NqvpXCRsxdWgSHPwj50AlSyRwwaEGIwZK0/1
FdTCNc8CWKaiIPq/MRHAYyEzYBjIsoygHQppMG3Y0IgeUjUkWjikqKFQhlMg
RCsEG0ZGJ2FdJxBeCME4ZBi6zskjIigClpbRHR2DH5u3PaOuU3eqRO1Dfdvm
eZGkz1HFHseabr1qEQt2ctQMlwhHdmVpJGk+7SC1v0L8w8T+wv4CCMwEC0Ns
cLUwxNzojZzwME1qYe3y7vKVa2G7Z7Pw4PKbJZtgmbtGawiJPKJZezyVt2kL
ayofclc8vaMrlZerU3n6I1pbK2hdaqdTVZEPQYZP4GkEorH2kB2NHS8rIBEe
JI3WJYbbcEw7r+mV2eMRV5lt11QqYSrpoRhsC8VgG5UwSEOttNxsZ6NlX05M
UtsNmVYOsVevoHQBGoxzvtUqeGxR/wipZ9aMPBHVvz4wgJsPFG+pyo6MFNfh
fvxs8fpLJk6fia4b6Oj/B9aGjZ6eLiL6i8ke/tLxfIa/NMGDNzoIZUmAUZYE
eJCodNeDLpaiIRqCykr31vMARE8IefisvwyfHS7LJAexmuk3YPjJi/5Pkpft
nbIynvATYN4+6rZj1GY/cgIg8AlYELpQKN8WZ+b8tjMBBL4BFjZYsdykjgjw
i9AicZH2R5Gn9iHKkiKKikgUVae9txlVC6uqJhJRIZQoiNKtJIMRACwk6pqI
IOVAWh9OOIqqgskAzgv04bij6MoZjtqlYjCKbY6hafr/Y+xL4KMqz73Pe/Z9
mX1LZpLMJCETCSYTIBjNQWURlFWmBonihgZRCSKiokJdcJfaa9XaXnC5uLYs
CYugNfdWudeFC23V/qRVaUXrRuXrR7kVSXLf9znnzJwA/X4fJDPPzJyZOTnn
Oc/+/78Zipk1nX4YLo4tNmFTCnlFMFuBBEl1k6I/u2kSHduq6e4FA8E5yYUO
mgPO3eckF2rHMrS7sadaPTKfF3H0xQGCgkirCW7CxDdTN0axF0n5EBOiKqns
Dmx+maHDDlSVpMkIil8SjIbgX3xhfLwpTupanSdVWtfZbEYKT8pd8iIFJwhl
jQVkPaRiZa216NMG3vkGVc2YcOZFKPXngW30Ncx5gxNXrLh+DdpwrHfgxyQ3
GIGz241EN9FsJ0bzxfPH0y1sLgZ0crUamlWYjCaJkyVGFhXJjZVtXaV0DSmV
Kg5OKnlsHQfaOwbecC1j/iUWnz+EWElmRVmuragq1MvoO5xqZRCLwxJWrldS
BURuiPb04nuWaFGQPIvfwlUKPK3IldgmyjsR4fVi8alNUsIo0cYB9hS1Q0FK
QkcUx8+k4hrJa3Hocd5hbNzI9Gr7eYd72s0D5rHSQG+71QbHF8i3eojV0003
eljSCdhYmN2R6OqqNhSrIubq4y3xNroaTlIe7B8+HZQMY5Q4Rgbk2OZFvJsX
55uBOQyNHkOSYyRUhUfQ386YfOy/2cSxtzqZ5/uYly6f8otfHBOuhOmV+we7
6Rggs66ETDnPMnlEmxyfp4QA1nWB/yXL5RDFO0OEZJ6ZJP4viz+/yoFPkmHS
w+2Qt5dGxpObKA5AjpROxnObNi9CVLkVaFWFa6yW8P3owQ8/HOwWZj763YeP
4o+sG+xGfbAnYK3sKMvlBd5k6DwOTXkOZ1W/ZJmcQAbmbBn25mXpybkwf3XS
XUA07ALSeQd+zZd3AVW1tlg1rVWob/D6Dz9EDw52P8rX4X0Y+tNgN3vf4NcU
Q41wp5E6CP8bFWfPGu+D8MFfSBCNRPUZfJjT7AuD3T/8IUVTU4a+YFPsGVQ9
NYaphs9olDSpIa4lGkZoDQ1t2ujwmOS4hnMaurSuhoVad8P8Ufdpd4/4aeTJ
xAtauN4DedQBhxqR1sdfrN8a31n/RnxP/W/DH9WLZ0dQJSnAWSTtDwTKKLJW
EsxMJ1I6mo7lGxsKbWxb4zns5Mai2JlfIHbnl6mr1bfU77Tv8taYAj41ZlO2
EG2uCsUuHnHdCHpEqknv0B/W1+pDOrdW36B/qzP6Ts+MbyvqwOWmkyogsWo6
2YkQ4ZLSAYis8wSmrNe6PkaPgQfZUtT1FBPdTr/YG3PSf9IhaJTlM+fEHg2l
UuR8un8LNaFObk4xyohLzEuo8eawOZh/+DzPMbcpqxQpHsxpripLijFuyfgb
pxiTZYmOZMnUNcFoZ0kPhxxPLPyR1KywBDuc9SpU2e30hbZeZxP+nUztqNoN
tVwb6QmR2mXt9qEPHGGnl8P1FmtPbYNZjMqawqi2/jZ6XRtqixLOC/LhUdGb
9YnmYtVNHs1Lk5cWNjmmzbaKTdnX+T08neY7eJoPeRWSUIkpxvmckUVeh+YM
eBA+Bl0ZQJ/z0DXmdejQwDg4f+rY8gAvIR5zqqj5vIkNDnDFHSzVhqCTnP/s
M1IPOpDvOIgfHnBYt0pv7nFq1G0lMCj4CDIPSPUkt1FMPq+q+ojtzCmk0Zyq
k5lmkBklFo2mQg5bkFCa6+4AaBW0Cj2eSqixjoH/rYU6h1jjDBqKrpEwIais
qWV4Qacdjkq8EdN++SsLN7w66frJrVfvuxK1TLjn9psqNsau3XvvPS/OMKVo
9aup6KVvXDev+Zruq56urbhjzsSX7pq2alpI1xLZnHztKad39sR67p9qXzJl
5PJD3991+lj0UX3KrD+vafL8C6effiPpIN6Nr2MyP2RSFXQAruNbEKcaWa6V
m8BxHemNaTqdrk61pM5MLU6vSfPjgu2R9sS5kXMTXWKXdoHRFbkosVBcpF1l
XBu5NtGf/lDdF90X/3Pwm+g38U8r9qeH0vEM12Q0hUZxHYbNnWvM4BZw+yr+
zh41VTOss9icJ1M49JPDKV0hoL9yEyfmKxeUAIB2dTGW3asgU7GV+cpKhXXw
RQpcs0rMnRw84vUznVa04hEtKoTdAxrJUNonqqQsxY7cVULLUcKtRauFCniD
I6zmDY6wzqQRVHdbSoUPxmU0iheZHE33I7QGrUMb0SHEplEHmo4YRErC5KJF
hNqgglxeCLQbQR0VBYh2I9BukiD1kcsKNo2QXUYxgGUAfBHFKyeNGVbyJIq7
xME+wHMHsPIPDL8gnIZ4B8ADncCoZwlW6D4km3oYwPq6wvJJcCK84BDl5tu8
0jP2YNboluZKOmxSNdV1TCjqw+Of8lzfkk2XbuixB//22qtX04U5P1r28r/d
sOxlbsfA3x+e/vDb1w9+O/jBz9FPXp9z/+539u4i6PcZQ18wB7HfSNCXOPFQ
dOiQF2HLHtxZ8gTDE0xPIKfIX5Ms6LcbyCDmcwa1GPszNpBShFiKVZAeFkRy
rAU41gJwVwgmOdYCXPW739sF7Snzja5m8guMe5KK0qmzgmdFZwdnR+cH50ef
pJ9kfqo9az6bUEUtLi+ku5mF3A3qYm2ltl7dIm2Vt6hqRL1b/ZRm9OqLjeuM
2w3GQNgN2LWjYCp+Pt6tNdQ6aj91iJIow1Co8j6m8K4DeWa5POepuVE0sroI
/qY6ScG85GGfb/hraTMqq+TTOAJHCNl63mlE2q4+I9s9ami0Y4Uz+CnQMxuU
bDKoVgJU65xU2DPeYU+1w67xriqGs3sElBY6BFrQYSJLJh8ggFcWPCIoQXUv
H+HUZOGNUuPDUUMf1GKJu1QkMEWN7cSvLjlMZjeWeMAdbDrNrgP4B/pdWGE7
S/SRBCUZwB4iwMZAY3FSFgDTqwglbJgPJQksMwXg8Sw1toAAuH1Txbe/3Df4
P0u+vPcXf0xviN8+954Xn71z4UPorui2PagCyS8jetWGp5JXL/r17z74DxLx
TMSa+4mDh6aDYClXyDSr5bSCdrbGtYZaUz+gz5dnhWanrqQv566QLgvNT/Wn
3+PeD34U/yz4Wejb6Nfxz8AiRtLpfIKY0akJYlOFkXRWGxkZR7dqU+kJ2sTQ
OakfyEXtSu0z/i+Ro+iwbqIwoyumgS2lIlgUNpXY54yXh5nKEmdArAVRO8s5
BpWzjGFW1TipumWLRs4091rItGxrvrXSwnaVXCqOdbUCxHxZEMEQO2vx5MKy
wNpa0BYiOmHpRCcsb9bZ8maarZ3e3mHDujQglmjDPI4xR8u2FgNZwevRk1kV
onmnFV8X9gifCEMCS7RvusAIlXAJQ2AgVDqXNmgkBGdCAjQyXlmY4bOTpBoB
3aCSaYQn26EDi+1l+wG3UUR+y4aSzO8mNzHESOKEkMEmRadkxbGUimA4lrKj
JdAGwXZVK3Hx2Mc72kbAAX4ik7FXvHH7+zcsfO+O+T9p6h3IvHzDsn97/pbl
T939rw98/8xaxNw3czytH51IB959+9937Xv3DeKbp2LfXIltZRhrXMTJFdJU
Koyz9i6uS5qjXMFczV0nXaGIYRL9waHGgj2LSBUpYLMKfMgdDR1JsKcGxsVP
TY0PnJcYn5oZmBeflbokcE3iktRyfnn4CH0kZlIRZGjR6IwIaeExkZSxxlxn
0qbJJlOyQO2gXyTXqufF+m041Sa2OY8GsR0jcOBD/2/a4N5i1NZwSArdPc2j
5NNIkE3OGFSppLqGwkYNaYk0wc/kagvkfhsJO9MoHdnpBcRbi5GWkj8oA4dF
z0+bWcHONhQ8ffHUzDVTdr5IoAAlFUqBCjlGLQXKA3AxokLDXW1XHoZzDuDn
sDodgQKX12Ik8CSXtK19oKfdZYVxgfiALEnaFRS4qJXYG3CjXKGf2kuqV6wZ
ITqmLTIpc5RJBxlTZoOueZOTYN5kwQOBX3xRV1Peamnq6vGZOGfONCRUQfMS
VQHdFs9ctKPxr698OfgtCv3xfaSjY1/Im++67IGBffRMdWzx3hUvoGL0mT6U
xjGKiuoHPx78zsxs2HEVevTus65aT7LmIFbDldzvqCi6yJk3DUnIiDfFR8Xt
+OL4k+rPtBc0MaHVaxvj/XE2DqXGRLpQIWqMaqRkFKbzoSDL8JS8NoRCQ0Hn
ZG0rBm22DKT3DELURXwrOJVgKYZ+BMEQeO+pYwswDJ5PpQtrKBS3iQmK2xo2
QW7dqR5qTtXEKFGNbuXpb+7wVcgdvvoK4iqAkgDL8faho0C6Rj0Ti7+KdlBV
1BEkU155qnTOSaEKZ9xgKA7mD3Y5lSpCadtmOYDSkGnxksCLOKsxpUCSsngj
ifIo37BqFcpjE7IkuYWSI0HS1j+lbxHDywbMT8kuv31Ls4MAqGltaS2MITMY
2FERPxUm1I2b164NJu5Ydu685NjmWWfv2cP89IGeqwsTfxD4uTxx/qUPHCOs
M9SZgzOZr7CdqKQaaCefn68oXKhRyYXOVSaEeKkiXtGo1IYaa9qU0aEpysRQ
UbhAuUo5Kv89rI+saaw7o+aMunPr1jSuaxRGV40e0dE4UZlYNWHE+VXnj+gW
Lqu6bMT8xpWN++q+qPprzbd1VjTCh7fTm/rqU0EBIh0zQ42COGclKDROdelb
bZNLpQx5QnVKlSPhllwL4Rr28wv/zUeK45FiZYtyLhbbG0Vm1I7Oj66Mso34
LNJzGsELRcELRUteKApeiDDdwbNfOV6IbEWY71wvFHWQQljADvOoz0Yddb9T
LUaXGihHVac9hUx7Cpl2FTJaTGdfN/YYnxhDBps2OozpOMbzzIrheqqRRQPM
ipEgamdUA61aiuyRw11pgGcy4vnGpVXEOeWnlS1Ljzv/Y/r9EzgosDhHCCvk
AZcY8oAzztCDAyMcDeGLNMJQVDDFQSSPj7haDRy2+Kjz4WA92I6gk5U6YT22
UdiCYJWLEiYCyDPJACvt+K1oa4sFEz+1fhauBRuU5rOW3npPTEfLNv7h0LW/
efDVm9df8Yd1v/rqifW3rnj+Fzcvf/6CxMxc8+Vzx2y8H7V/9DhCDzy+8tjC
f+xZ/hLT8Jv+19/99a5fE3uymqKYL2Be5S0HbRzB13c4SlB/+23I7HNsKzOB
2aGx8FQ4Gi9ERUu1QgyHKCPFCSFFVofFM6pPq1QvtrHrimpOsltGF4Yk1C+h
CAQzERtIKOrhNkSURyJlFAvoKCC5kxJkOwnq2MDCD3UficycQLJICCzg8ZGt
gAybBmM20cLowsbIoQi9OLIusjEyFGEjdMhTopCnKCFPv0I5B9xi4t07RJY8
yOCLZj/FwkC8W0c/akfBmrEeptkHcTnqJIYUDeaLhnR0WnjSjJg/xu7Je4Dm
nvzh4VrlUcg4SSEpt4Md03ldyOm8mkSaiC0YRcrjq6g8oW5PblVkSmY4bLlG
9S3iBOQliR7k1mE8tmosUBc+bK3uu61/2S+n9t1w9YwH23E6+LdHup792cDF
9FOrb5n90K0DO7HVugcrRDtBQVMCLTs4aPn4eYMyXxUWxsfd5skxX8GsLHM+
mfXkviKteHm6J/CeIGCh9KEDvuyqLHM+mfXNTrDu2WU8gfcEAQu+PS33nMoy
55PZUplvTFEaTc7zdGmNtE7aKPVLn0iHJIGS0tJiaaW01n1qvzQkyWkJJ3wC
SzMSz+wc6nc/oaHI3IYonuNZmRdyHMWuZdexG9l+dj/L97OHWJpiM+xe/Ihl
nToDPYctqRoLqsbKZBdYcJqs5zRZb6aNJVUJmagdO008XuGWwGo8RK3y/oV4
upb4W4HD/yW3sTLHE9I8WAqko8NjzcMqdU9fXx/79Z4934fZ2u/34csE6wvz
D4LmZgIO0k0v9eOkk81LwcEt5UGlMLBEiO1SZNupIu+kDnyRnysxhvZ/uSM8
I3m8Us5EvOwJkicQDJ0NE/VzmBtlOsBngtCYO9QbqCONukN9+D7AwRPQiD9k
34mf4VmWY/kx0iSWy/GnyBfINzI3yPuYT3lhPY9q+FohJ7bxY6UObbrWyXby
Fwid0q3sTdwT0i7+t+wH/AH+S+F/+O/EcECWOYZhaQIll0T8QBLFnAMgZ1g2
54DKZaweLJmuYjky0qIolMxuR4YtcSyU06tF8iicgbzedGBVa3AAXkaPe1ZM
UV3CNyVHlYaAaO9VusTVQ+cQwjFaBzUdX+FYbexTwYwBopdywP6gYaS8hs0W
1A8oKHNQcVX7U9WkBX7PSOhVTTf0IqOyPUfIqOzh/MFScx2na9E20mJiPcg5
LExkiu1iOwO3bvNMmyqhtHQnQ0sxjQD5uno6HYpuW5YaK9oksaKinWDFN1cQ
yPh7mzNwt6nKJeIGJGcP5bbg+aH+zVUA99scIXcfbzYBaI7v4JEKd5sUDwlK
qhfkqwIfsUgMRfC3hULtcEMwCJtj5M3fbEo6m6OuTqf0XB7vBdifIeOrnaVY
EZtilndMsDO85GHRoZEu4CsHvfjl4EL0+seDT93O7Tj2Kto4uGzgcjp98yBZ
BegObHfHAPvEqhOtbqlBfRIbe5wtLW16Est5nIX0feoJ9nBbkQOzBzwTY8Y6
fBOFVud+1KnOvbN0WL+dw7GCwaW5tdwnHDsd3xzimDS3mFvJDXEsPiQyzTjO
lXwSONkwjqrXUqifOkTWACt72n+UPW2Fz9M6yunkDKKbMHjzvEND3oSvawSp
aexwI0isIDQKHY4KeHSCzeulZOfkuaftjj6gq3CiI74Wx/E1zHUwdfQIFfQZ
M3MYfq8sWz65wneEUz456ZMTPrnCx0eZ8slJn5zwyapveFXzybpPNnxy0Bfm
mz454JMtnxz0BXb+IC/gky2frLkQM9HDmpEJCfs8RSvk2APsAelP0c8y3Pvc
kQwdFTM1UiyZkRimpjLFh0lkLiC+JhE35b05tCa3LkfnotGEnltjIYuFehcg
3CzotEG9K0RUxILFZIiaWDRUvVSoekGPzfIgjeXa13bU1RvzihVlEJHbVNCK
sdyaJErCNyVL35SEb0oSugSLfFMSQr8k1FyTxKpCMJpUyXcmvb5eEn/VVopu
qfG+pMYzzzWueQ4Va3JoL4VIOZpOU8RIM2CkK04w0tBxoyJuxHnMy50P2yEI
PR311x27nc1tR8t7qyYNT2qcxgTkL752RZefypA8HoBpqZ4lDoVIByxKSNB7
PsYmXQ0Fa0OqlUQBLewFpl5l5Z+GFrZsyglsKhGvhHHYunWRIkgMX4nFzYt4
JyFqJvgl7zoMA/whCnzEEMhCEu4PaZ9qXr9w2WPp297+1xd7a+adsfhf+i64
/NxV49jaR6ddfOkFOzZsHaijf77o4nGPPjvwGL15+fIZP/3RwIde1vM5vq4j
6HPIzoMcwwfp583t5qfMX4KHmCNBniXxQTXW25tM9Li5N7Y/NhRjM2JID0UC
OOtBfESTNV3Vh6U+uu/K10upT6qoZ2OQ6cQg61Eg31Eg31FK+Y4C9k6phi2g
GQaNMsh38OPv3OaY7HbNjjgATgVSKgXhH2VajNjXBMl9Yodi9OLYutjGWH+M
jTF0Szji6V7E08aIF3dFwEIf6bMsl7jkpCmPfFzKY/lSHta1x/124PgUalrU
POKfPXOSoMOQBg17Ie+gRZ1hCgIYLeVBEd6SZFEWZIY3ay1eTyJDDrhqRyi+
ekjwkLQlTY5g5WK4AKgU5+XYJXVy+7o+XVr99A0fzX9qhin3NVw9+frn2NrH
NkxYfF7zrQPX03dfe834R94deBU7qbOHvmDrsLZoVBwNEX3ZGo65MNovwKYQ
1nb7CiLF4YWAIMfVSfxksch3ilfy3aJYMMcFxkVaYxPMqYGpkQmxedw8aZbZ
FeiKzIpdw10jXW5eE7gmcnnsRhSWeE67kDmfO1++UF3EXMFdIS9S5WiKFSxs
IUPDajYhX+cgVKrZmMVQNgn1mSSom1BaXkyA/oDbcvNasSC4UH6H8N2F+4PQ
b+vZXGEUTjAFU8gIjFAaQyBNpU+wpYTJf1ISxrLuKZnu6ZbuNqzG42uAUnVS
FQQ+WAq6f1QKlApqva7xAuNNwZIJlI2/mlhFmvIaWuUl6VS3RUGdmiBlYXcl
Or8mmT35Lhyedg3XL487gLQSYNxpNjdbupS7VGJJmAeGapNiOR0FhY06S9AJ
PjqBMc6iG1Dl9Zdkzn723jf/gCK3fH3/J4MHX9m8+u7NvXet3kwHUd1Dywb/
NLD76x+iSqS9+867v3nznbfxn7R6sJutwloVoCrR+2CFlqrmKebp5lST7chs
zNDpzAi1pqI53FxxZsXizJqMOC46LjklOiXZKV6ozovOSy4Ur1a7zWuiVyf7
M78LfRT7KPG7ygOhA5X7M0OZSA2bN/PhVnacOZGdYs41P1O+rhg0FUtnIinS
3ucjKV2h9PgwhYr7FCpeUqhUMZ7dKyNTtuX58kqZzYBaZWwXFvS5M2EoxzyY
kJeflah2nFa/TK4SAyBDS1GwhW4pN548k+R2oOx4MZCjqJN37r2Gvelr2JvD
GvZHjm/Yw5AS9lXQsE9PGhNDwzr2pYZ9/vCBE3v1Dnq9bXirntItPQJlPV3B
JodPbWdOKXkxKMTAvJnrwyLhEFmvsLbOYnwKs/rZcY9cdc/ehTd8csvch0da
65ctf+m5pddvGuzmXrtv5swHhh5/ZvD7+88dN/A98+zuN955/523f4+1ZvJg
N7Mfa41JpdCvQGsWKXSeboidRk+lb1L5jnBHfGp8TeW6Sq4QLCQ7Ks8Onp2c
HZydvCx4WXJ+5crK9/j3A5/zX6pfxcwRdLWaD7fRreo59ER1Lt1Nf6j+IfZp
5Mv458ljtIFYLZRIKYLOh1IsVpWo3kIN0xZqWAO8XDKmSOPSQKZhG/ONlQZb
CSXjStAXA0rGRqlkbEDJ2ICSsQGBFBRrI+QMGg6DAe9sDhAzY6nlKc3xC1na
0aKVPaE3eVwn3K4vClkwf1AUFqAoLEScRNvpMlVUHl8OdqvBvlKwVwg+3H6i
fjjqgdgQqAer6LymJEA9lOHqgSy3GT7aLfMO6042Njw257XBb6/73W1v9jw9
UPXy8uvXb1h2wzOD3bR42jQ0EgnrBu9Y/9DRs5hf7N796/9874P/JHHNXRRF
78LaYSFYNco+rSmITBbVsAX2LHY2u4BdyvKSJUqipAUtSaMYESlgDChZql8j
IrE6E0RBuvr4tUH9R/uf10pLGdw/bMsXOPBg44fFrE65lPfVGqYFJr1xsnLp
AbPr8BJCxEqOcZu3qhdlvrVaB96oriWoK7mNBJU4llS2M6N9saQ/jnRaOAL2
+Xc9fUZ3x4UXnXHmmaddFKpka5/qmTzuubpJHfOXDLxHjmHH0BfMJnwMR7GV
kI2X2mKlXCFO6lxjQO3rfZdAnU+uHbboUFnO+uQan1ztk6t8cqYURK4ostWh
6nHSFOnsbLH6iuoV0kPSndn1wZca/4PRpGgiFh01tfGDKJek59C02Yzk2Dxx
njRPnqfMU+dpC8WF0kJ5obJQXaj11fbVGQRinB0xOjtX7lQur728fmnN0uzK
7I/ln6mP1D/W+OioZ+UX1Gfqnq3vrX2zNlLvJXPVnlDjCVlPqHfKcO42RKjx
hKwnVBBUQ6Cyba5Yl1NlNpGpDbPKyIoEaVlVxxthvCHeEZ8evzi+Ib4nzhvx
dPy6+CdxNh1/OE7HX8NqFMYaDp1vO0Q2Nwkbmon2IppCJgLW3N5QpAAdcUJS
iNDIeRWLKuiKVFhgnUFMKLF+7pVRP7eDRBfZ1EglnUCJbNwOxgrN5O3N0NSM
ObfETMRhLeF4hrwzniHvikOFLg7tafLqeMnxnPSFZcBoLzY4DfjztqTa9jag
BvLV5GMaPM6LBs/INTgrr2Fhp3fSe4sNCdiXqrqGwvzm/ma6o3llM91M2vxZ
KuZkh3D5ZJzTgL0yEcgeEmEb2cmMax4jxUzWAEdpwB9iZFybe5SkkFgCFie3
NeaAMGyraFR/4hUP46e6/XdsD/3c9zjOyB9cMs0b8czne0gX3pdSHiRjRHmy
jmoPzHeSKgxB05O7Ehtw1In17bpTKmu4UGOtZQbMoMnw1VomSUn1QhJxp+Cb
yhB+WKXXJKnqGk0VR8hJVF8nyXyeTVJps4JkBQ4HMNxAMtqQX7VqFeWz3aQC
3lV+AjnJKYVQhVJbWzHSWXJypBJPJMIVEP+Fy0OksNT5cetN1tXWjaTJgucn
4PXxf0JxBO27js3GvbesWN6a+/GuJ6aPH9vwo9m3vjbX2qhe371iYSTSlLzz
9ceK3btu3fMhOj119ZIrzj69JpZrPmfVtEk31afzk2+5MjZr3qwxNamKoJxt
Gb9i3ty1P3gZW6vs0N/oBu4JKoquhQpVZlhFSBkGbS7Lgk/mfbJMmGZrSW28
385iYWUcUUjVZMRQEVPKGzKOGhnFMKupaqSdJHxzaQarcfimoiFBnCBNmC8s
FlYKawSWwunDOmGj0C/sFXigFnM5xg7DdSAQBD9MBzqVGldwWceOgk6TxIQE
m6Q14OYnTgIm7KAXUjE0etOC44p/sFK703Y7QJz1QTKjT5y11dJivuWjaElu
YiLAM8QohCe62ZYWIRxxWLosge+WeVgqrLm5yU0EclFnuIiMCVhjYFVHwKnT
ZuLc9ksXNd55Z++WLcF8feVTa80zrniavuwBJCwafPCBgR+f15ggfuYO7Gf2
s7V4t7c5ndcEGbgJRwt0JhghhD2H7HggVMgHUVYMRlQUjCjYTVv4+FMtkWFV
h4gvJov4qg6RXCxKygMJqD1EoeoQDUCLvjSsHgUfHS3VG6Iht1nv9lejUNKK
knqDRg75UBT1R1F0WgLYDEipIXEoQS9OrEtsTAwlWDKT6SK9PKVQncihl/R/
S4EDWag8I+2V9kus5AUOUilwcFu/MjR8ARkFTV6oNUjQXpWmxYcVet0e6olF
BSeIgInb9jZ3FThsZhKsqWuGRnDFZHUBhjdZNUlpopWkSFmhoWGVA/LDoRxW
fgvKVYwS4UENOrxRXGe+rK4WSAqiYA1GE5npWPH+Rc9MN5U+xbp25syHTuv7
Wd/ka6a3Xk8/MtD74KmTZs5++B66DXpoCdJ/x1og05edgEbykQpQJycVoCOl
Ur4/GBfLE7yEGcI/nRvlREoWecSXCAOyQA7ZlPfzBgBtwLZWDlHVVptMvLZm
tUmRQKogkhsau6pefI/ce5nUeKXKqgJVj28gz5OqcwUqgm/wo332bfUjC1QG
3xjqCKpeqpXbqFZ5MjVJLqIi3SleIC1AC+husVtaTt2IbqRvEpdLN8qr0Wr6
buZe4R7xPunn1OPSj+SXqafl16htwib5LepNeR/1vvwN9an8PXVYbsR/jhyj
InI9VSuPkadTtixxdiBS4LAaF7xVyQlbAk+CXaLuBlBWUODvyLEATjQoXeOj
As/SHKcqBJLwUR4fG/y7O787TzWVaBXGyIIo5iQ5JEkyxdB0zoGbc7JMyQ52
nBdkiaEQ16QitVq0bVtaKdHSdpTcYnMrOZrDki1laBtVK1/9lqjzwUR8oGug
KxE7eKDLXcis1Fmz2oazphJQnQuHKP/z0xoQJgM4134mA0BnB1sQ+uXgol8d
yKVj+W9eGbyWrR2488rrzl9G3wNaSfCb27BWBrhvXsWaVdJIUs35lW+wQ3N7
je4CIV6HiSv14OmSfjLDWk0lDTY9uCdfhntKvrEgvQz3NMpbBHxbiOUtiFfw
dm/YVeTsnof35lkfWcexYQVb9z2GWtoi4GMBEctbCOUtZB+5AuvJOFGq9m3x
ha8DXkKTWxkvuarGf5nubvqxb7yhJHtEzgGSN4NzdABIvFtzeQ8WKmeBFYdI
VkZ1Xujv052hgn67iUiWDY9li0GUivMhxBtYWzUVUHaqhWhWZi3Zbas4ftgi
CzjuNj/Ybb4HnM5ujxO0rxw/RYwQamBHyPQU60LrIYuxMs4Kz+7irawnWMSx
SemqgpmqcNry9rZ0tsDyqhTkk1I8wLEUyyuSoosBkwoyISElJpUKPUvlhAYx
rxeoVmGceJp+NjOJt4XzxKnKWcYka0rgQmNW4GrhcvHKwE38zcJS8RV+h7E1
8Hf+e6leseqpeq1OrzfqAk2hsdSYwI3i3eLjzGPqc+h5+nllvbqF2srv0P+L
/YD/UPqC/cL4S+Awf1RKKUA+p8KtyTtQMyc8hiqva1aSsm6wAcoSBTEnGDmd
lK50gdGQmtO2D31gjyFuTMPWoQHqUxoKBXlZsWrlvHU+O0ueZy2yVlj3WbIl
s9hWkNPhnJjjuTCa8oebHAIq8wD574TO+CdphxjgyBA4SZZFRVVl07JwBDG1
l6MCOBE4x14gG3rm15YgZgQrEMhzQojjBB2f55ymhzRNFy3DyMtiCL+dEGe4
loyikRBgRcNSdQ12L4BjALKODTFtAYMwm8qhI6aGyAIOKzUGa/NztpyZLqPr
5NsJOpmeY0vTLXSddbtFSI7m2IrJofnQHmaw8XtuCzoSPLIAkor4eYe7umI4
KcA/xAh2xU5OmuFaRQtu/z84MwTdbCe/q12w69SN6dkloLKWUTP0q0P7cUK5
H1//e/uoUUYm4C2wC8jlqRsLs8u8GeLQ3k3CKATPV82eurHFT6ohDu3fJGSc
FwPDF5Ej9H57t+KUC38h9jR7NwujyNdspsbSO5yvL31j6e1R/9utof29cobN
UOT1Tm8tc33ova2BNqoxAMyim4JlNLXT6SZXKBBeD892/tk/4h7AOwSjwNzB
1DFo6uDOHS90sC0vvLK29fStGwb7dr4w4vfYXTx5wHqbvnbg8Xd20wu+30ev
2HJsD4lqDRzP/B/sOUw678QzWtkSm3qZUmMYhZI/QAkbSOFZWuJpXsOXggEJ
uNGUh6sBFulKbjMCyKiOOysJzIi3zTV+wv5EfEL/qdHP9fP9wjuGZNiRtgQT
lMJawmxF45RV6CFFbAr8gO0UOpUL9MfQ4/LjyjZ6u/pfytv6u+Y+5n3pN9of
zM/kQKDMhBGwjJhmekwYRDKACUOWaf5EJowFPM84XBi8BGwYhmESMgzD0MwS
E4Yp8wZtyOYuapdEm7kSF8YuDWk5Px0GbwIdhjw9gALnaLep1bJxCS/dZss4
ZNhm8zP4lbCM4lm2nmFuo6un40N/jrUCSmhdh50oAgcR5mfm4YMnMF+MzHe5
l0mXu4Y5Ib4Atos3nFt8JwADRruran16rKINSCmUija1OtrG4F/yeHNVmwnU
YeE2VF3VJtmp0ioOndCYg/EZiEZsFQ4fCY7wyR1Ok41QS5QEJmPIxAxThwx0
5+ATf3pmZKox1/v7wR+h+z/aN27wS7oeDX43adSZLd8PqgP/jaZ0DnYRnasa
nMn8Fetcgn4TKnb4rHmTniX8lNf89ASD9ei4AmWXrXuvap6glrYvNbQ8QfME
kuB4H1VSa/U4ta6QQwajMKm4EeAVPmgHjIxiqxlXveNN+cRHidjuRNwkd1Du
BBeb7DVSyCDH/fpUW32oaGyQGVuzsQ5l6kcVTHIjqFIgosUCdUqdWqeNVkdr
rfoTllIfqA9OjnQGOoOd4e5Ad7A7fBO/TLvJujl0c/gu7T7rgcADwXtDj8vP
K6+aO60doa/kv4T+rg2Y34WGUpWBYEzXS0RO/8vbl8c1daUNn+fcm9ybheRm
IwkJISEbIUogAQKKEK0CgvuCSsWlAgIuVJEqoLXWBddqW7Vube10se30tVWx
UjpdrMx01bbjdJzOVNv3N7bTmQ6dfvP5djoz5vqecxPQcWa+7/3n+0K4S+52
zrM/zzn3eVINKruN1Y7VbtIyWutQJxJBWf1QpqaoVqsWiHYhtrDVaDB49Uoj
2dGqifrwqpRGlUppoC+Nq+T0Bsgu2HHI/oYd23tx2WktgUjM2ItnxFRl+pge
z9e/ocf6XhjzshYy0Tibkh6SYBZzqnPVk9XMFPUNKUHMmFMhLYEQLuuxOdcS
VUJAGKeFQAn10wIEFuHaVatwtW7FQJpFGJC2COUN3GQF/tZpapQXkqlfql/S
EBlsuSmDX03kI73xNRXwUsETSQQbb1x5OVqszIwWa4iYOG0q1iWTtc6hfigt
XpKk/1ts9KDthJVW+Igpl1q1WqVSgqZkoyfGGP2JWeBRKY1S0l4nJgHxNtcb
Rw4rqTTrfDKVuOyty8HMjOBve8Sloz25a2vyxcXPCVke2xJtOpsVP9i+Ye09
eMnf33lxzJzplEuyiGT+BeESDXwrcQn8c12CmKZG34vf5bEewol8JxdiCrIB
pQ5pJuVbsSqyEcBZipBQDMXK8VCOy/nxisnCXJiBZ/C1iinCUliEF/Etii5Y
xXcpdsBmfpvir3AN26y8DwJ8UFHMP81fAo5KjTOCKR8T5aWgabHd+mLAIxRK
zCuVXsDE/sBAy8zihTQbg1y5kDAp9dEUkjkV1ChxL2h7iDUik7+K70QIcXRg
QRrRzkw5qgGkiWkWaO7TfKeRSQkDPPSQZhVS3gvwIoLJqBXdQAySclkjq1ZY
5aLik476JCY5CnG6cTUovW0ixGkIs0T4sqwk/qX0PlrSFxM0/cnCJsmQIiGK
0wHw8TQWnYAeT2FJ9t46Q6FIQZkoVrZijpQRhdoNV05qpXQbidXXZ2zFCj7V
NopaxyfNxVJgRJlajI3kPy31poClsxBPKYkh38vknl5Kfb1kwolEsIoOgiRS
csjdiZQchRGXKQs/1TZbnMzUx8+2drTANw8xvPyh1fF5XYrDtEIdfISbmPeJ
GMtNRKUYmB7TKOQf0DdKMGpXzzom6ZgBFKLJKE4yMYVUk5mS7WDpcHemb9m+
puZ9+5qb9uELzXv3NpNtAmrmxreyr2UXiY2QgUZAQ6K291793tTDaYcdzzDP
qp5NeSX3F/pfpP4m7TeOTyK/LNTczTt78Y9Pubo9IbrOzYGcV/ECFCRm010x
YbIHtJ5Wz3rPnzysZy8f7iU/qlBwd/BGkAnuRRayf5JXCXSFmBBd5Vwk97vr
lGsrW/Aavgv5cT0hfDv5hU0rIdLnrtNq68hTnYlEKrSQ98QBoj/JN1kjVEqN
IxVZitddFeJXpVDSjEjUmw0ZAZ/eq/Fhr8OX6lN65b40byS7IANFvWSh0xpd
KAPsLjAryJaVI1v5WeEMKPQVZSBDiuCCdIYsTCqLC9lkFtctntWtnw0baD3L
mNHldBZ5PHxOKBQm0sTCKwSaE4RmYKPFkCKJ120jiTdub6l9QBOimzNZnKhb
59EX5GOPwTyUB+H2N3Lx969Dy3tviwf7+8WD77wPLa8/Ll58/hgMe/JJGPbM
c+LPZ3Q5zu146bP6V1Zvfsm52tE+uW3frrtrt8ounhP3/fSceODtt6Hp3E9h
ybl1T4ofP/Wk+MmxYxB88ikIPRkXPOv2XX1v07lF65elV01+6uDBR5sQnY0K
77GthJkZNFyiDi0U0CwoUq5eNoGYq3X/JhMKy7bBew8+SH5byvweRsneJTS8
TbqL7yL3Ww6f4M5x+M88PMw/weM2/n4ez+QbeIx54FUM4n/M9cKUmAOYvxLn
RoVKAGGmBHFFvB8hKb+f+tGOxOgHEQ50nkAJTfcj0ILqcanoPHqXeMQrV5AP
rFhh6+ERd59Uev6D4uLkJHojJ+f8hYXRtWczgncOKyxg2B8+fnrLyKmBitT5
0xGIxTfeZtyEPxhUncwBg1AZg43EHERML6yLKTFQcICVvfAKvIAsQWsiMYyl
rGTiQHEyTSY1GoYm8JMnyyBCbs1OfPTvp4rl6r9eo7rgZ2TRSXQBg7qkOr+Y
BsVk9FVVQYoGPinN2kVOacr41cFh3T/2pCRS7X53szDZ4NhuTBoKQ+mSNH2S
TUSzkrHZknjJV1KRCKlpykQ8KjnX9mc90ssEpE1fss9Dv2z7EO41GBiCBoKE
99lP/0sKjqEQhTgVOygB2/NJyH75Ofv8F1/QuyzBl+Ez2QdIgdqkuwg0gxpD
/jlaiptRoF7IOMUzX7O9+MmYluMI9hUFQB7BtCtnvQIhRB9U8r00Y7iEMr9U
sDIRN6bi9hXykIyYgosRCx+Ak9hOR1gtTRhIDOlzBQTDER1UN3aWHggtxZdx
9lRnl7FlVFxH22clP2wl7bOjH0ntszGs2oLbLbTaxHWGVcogzWphuBSLVZ/W
hxciO2S8rEvxl2lA04d7kRIvjBl1YLOP4ALGN1BKQONH1vTnmpK5nygt0mGO
+DUqn+K6ZOqUhB132qKzM7o0lAgazEnOgbKdTklJU6ZRuJxU6qT+XA3ToCcF
LTFBPNHkjARKupJ8J1Qs51wmqzxQBk6bt3zsmNGmR9J3b3lk18jhR6e74X58
ubi45mNHIJhbGrpDaG2+Z+aM6qK2UZ4Oaqvj9/EW0v8gelHqv87NCwa3MFGr
TZWBP5ec8RPSTRnpeYDAWZ1u9c9Pa03DZWmQRvufSvpvTQftUUPA6ecDvs+R
NZDmhwCyDhsEwkACCvFrEhhWUjgQaNAeXaczCnVS6DYFQOYWtCqVIMhkAdL3
M+lpVmtqavoQQoWrYam8c4TOek3k5069mWmDk7ujqbcDJlGqm4pT10NGZ3Bk
RU3lLLVJw6dOrS4ZWVRm3h1Yt2bPxoo75sx47KGde5kntCWpjknRcAmG5VAS
9OYPG2FumbFkSrTGkNowtm57K5WIfeCFZ4HKBMtrCOM/IcDfIIS/OyGDkEDH
NQgaiW6HZ0U9fAve48lrZLb/+zUy298ely28eQ2gf3fNlzefg8Q+KL95Df8/
uIZHf+njb7lG+B9cI6A/9QmJawTUiGrZO9lJiCOWg5nYDn4UQlFUhirQZDQL
zUeLiSm3Gq1H78QWNS2dMmPG3Nlr1haV3L0qa9iCes+ESjU/NsYinvzZnZ6S
YR7PsBJmtj0/1ygIFvukqntWrryrsXzMvZ2F4eUt+tRpNVg+orSG/GXOq3Wk
1Xa21Na2dDKNmUpNdk6OL7MRha6cLw6d/+i8lDQ/FBI+Oi+cJ5xGts7TzVv/
pfMglFgLFxLn33byP51PIGB0ZxbkR8L+5NqQXJuT68Hj3G37t69vP377vve2
+w8+j/lFbn5+7l66+EskL5LnoVtiNEw+/xHJy4vgaXQZT6M/4I1D58aP5+aH
w9LJ8A49Js6ly7/Qk/fSLWZ/mFqkeRHxUiSS9znZgUfIRg29WRdZwGvhUEG8
kmzty83Nx87kSSJHNr6ml32an5ufQzaoJL3lk0coSDyPWiDCLCFa34YyXkYB
tTxgFH5CBIkSWciSJQbrZwMQGrhCSYwIMbdTlx8tjDgZKfETJ43XR8LRQoiM
n3xYPE8WEDlizFy4MNOYWMI3J+qXwn1kId63Kjp/ftEqaUmf/VO0FkrIs5Uo
BY2OOTi5IrA5BRpT7knBKdjHFrKYBZVaJp/FAKPqxQtPgUKGUOj85f54uK6f
6JdQf6TufHFdXbyfoD9a4CoAOnHJbWJ0zFhxA+zrbGra89XaQ13wa9G89BDI
gRP/SiyGj0if85g5yIHmxDJ8pkITFgRzgNOp9QFNSgoRoRyCFDWQP4Z40At7
9EYjo6Mw0SCGLG0STKixOCDRpI6WKwtdGQiTH8JhgazzcusgKoElIfb8BpfJ
xQ3qAXem3yd+tCetozwUmVVaXr5rMvxS3J45ec7dj99Vu7514gwYpW/2BsaW
To1ZoaPjsYI9rWsnlEeKCMQ+Ji0PEYilEn6eFNOadQGZnbQXVAE7Agdpa0zD
ybg93FEOEy3LMdZXSXu1tNUnDFoU+oy+k0CbXKeLkC3S6oFIaED4bCBCkEun
etHZ3uZEI506gRZ5B6MkvN2ZkP64ftGRnPVrqqfNmr5efB9KW6tLxfatpVN3
b8UvchN/WV46dk175VhYBntLI+Ky7vLRGwmsvyU4NhBY84jof4xkKMAS55S0
9ASLaIMIEj8Y+ICqF7/eQN0tzDxiGRDvw95rmWthNLg7pohXxd2IEX9J+h4k
fTchN5FklTET8dxwIDXVGPBk8wG7XR3IVlLvZeGpnBynj3ZcQE76HGGw46EB
otkTXb5Clzr6YidDrHhXotND2CnIjxoT2EsQOXPL3s77gV8xfu7OY/OndnZM
W3CiI8+dleWOhDJ99n1lgVBuduwhrAy1veEPN7UND+xuKyvMH7Vy79lGsy2U
Z7dYbOL29emuktJMB814QCvBmNlRyEDwWRkbtkQPtXpYooZaNdTzMJN8cQPG
srY9ZjCbXeltTi1ojQ5lSpoD9TKJSdkQqpPydRD+rEt8gGa5MmqwO5POrynF
hsHZkcRBwcVrTq0ZWdZxqm31qdUlZR0n2x5+aM8jDz70IDuq+oELmzZ++EB1
9QMfbtx04YHq66Ufvf3ORx+++/ZH0vw+0ty5bJTwqveM8j2FDDCxfGn9Bbmy
l8k+AWpiqUoghdCFCGmLy62TJ606PPfk2J62I59E25nKwjrfizmbKugdKxFi
fk/6noWejjWO90Jn6vZUvN0EHSZo0EGNDrZpYI0GxvNQyUKmPysrvW27HEbK
u+Q4ICe8rFJlv++HQ/7n/X1+ZoV/gx9P8S/w4zF+yPIX+bEf9G0Gw2Tigxjk
mX693i84LH0EZn786gnivlLQEYrQFxcTLqijJHE+AT09/ZGsCRtTqqwb+rhc
BJbRUqYgn1Yy5/ylTCQJaE7DcC7m99fnZ9Qc6my9f5zRVlxb+l+mXm5c+9FF
DUdaolkzN9bWtFf5OHyysKOrMxquLC31e0bnpl8z1O6Yn5szY834ypaaqoCv
JJxtoLAZJdYzIoFNCdHOXZtHwuYobCqEbWHYlgeLhrUNwzXDoGIYNAc6Ani2
B1pM0KaHej3M1EO5HralwDY1NDJQj1YRInMWt/mI75vj88naLBZtaU4b0aNt
92phspYm+mK0obIcyMkJohKXw5muFXIFSBfSBUPQkU+I7JTBodQkwZWQHLrI
AB1JIlAjkKuTGIkAjayp5Uf5rO5WsA1+wMEMEqVfmgJWihOQlHPRW7aHwCrn
8B9jjRXe6s2nmxf+qGOC6nTanjWxpVOGZ1c3x9JiXuPo1bWFnrIZeW3bDT36
Ke37Z915sHVUfT3sT4nNW1PecKzzjhFLD8yzPvxA9pS7K0Y1TwgqFY9Zi+vG
Fc4cmbH1ftf8B+bnFizonta2bzjlxDyxix3JRgh9a1BFzJbCqVhAivfaNZs1
uJG4EXK2RQ2VRCXwhNxPquQKQvw9wKoxgU0Z0Uf9ZRHSx9D5MNFG5/uF/nBY
4gG3LqGUXDo3sCN/1hO/G7+092fiFpnoFbtg8zPMrutteHn8IQnnjSzPeomP
szVWvca61YqzhCIBRzWwTQlNyjVKPF4JVYpaRYuCKedgHAO1ADabrE2vVzms
FovKjsxmdZsKYYfFrFKbzGq12cRo7X34VZTGZJ/SOvgkHiWDSsJjmIhDorYk
011CoqS7buIs8dIGcmd6/IPT9ob0GQS797wMgvjHL14Wr5leS92/fPvzx7e/
MO/5PfhSvBe+myuKn34qXvjwfc2ObR8+cujkLiP+83EC6buIzAvIzhKb1I0O
xBbnu8e6N7kZnxu6M+GeTOh2wngreEwgM5lMuNkA3QLcI8AqLexMgREpVSl4
nAJmcPUcrmdgOgNFADoCAiIjbQQaXhcyt9Gyezq9w0EsZYvRoZFZHHzKIMNH
Bi6EqcgMhyWhGQkN/CtilXpOI0CJnEQuKcbjzsQ6uEWWgqXrq57rf/v4oniJ
2Aroqa8sPXlvb3sbytcdPLhx9QvP42tvid9/+LH4G9LG3dANO1/pEX4vfit+
Gu9+d9euV1/c/aA09lcmrmeuEbwrUVksfRcHS7m1HK7m7uRwFlHhREuqmTaW
51nEUUwqibBlKM1R3EVCQkKI0SYTFS5HjFuPqBplrl0S30p7RQ62z+MR5jRz
6Nt4pbgDgvh9wMQ7YFANwYKNYCEVZaIc9GxsZX0OzCTf7IZsvCQLarNgiQdq
PbAoExocsMQOLRbYbIJVJthigNUG6BJ2CLgzZXsK7lBuU+JugHuIGYI0xra0
NNwm+Pb4sM/H5zrbNJphbRk88OpUFWLNjkDAne7QydwO2RBKBszFEBqSI3VD
mvlfoKUOWJ2RJUih80YLaPwtYVP5b0HLreqO4cEg/q+Ll8RrB9Z/9vVP3vjm
0ocN23Y0NHbvqF///EvrNj71LGOdLf7nayKgszs+NLN3fPXEr794/FcT79iw
sL5789xl6+O2pzZufPaFrvUv3LiBZhKY6WRvYjnNJ0X2RxLBMUv2JvGwjDfm
Sr+UIMRy0hkmab/mxldsqrSfKu2HyfEsWR/ZN1tQ8o4u2TN0XE86Tnkjm9xR
jqwmul9NzkeyY2Q/7Q90fzo5bpXuZ0NUarXcuCxbJrtI7luBumITd4yDznHQ
PBYaYlATg8YRMCsAi7NgZhZUOGBsOlRZISAAGuZMZcFZARUVmvFOn8s1yqdx
OSOO1NQxNoePGeNgFQpisBGFnkQQZZkh/EQi/QPh27Djcvt8fg0zaHFEidqX
5DnRjYMCXWc0OhggmlJD9ACt2UVkvmzZFa2Fz5q75mBDx2v3jy3e9KvHX7mU
7Zi6q3X+zrtGat80znn4452PfbKhUKbQ224gT/P63eMX3Vtp9029d/adP948
NbOuyDepzD9y2eGFtXtaJ1ttIaHu4aaou7p9mqX1+ZUjyh+49JD4XtP+1slj
RuHP1FarVaUtnlCbWzxvrDe/4aF5yUrCrQSCDuIfPx5btsUH9V7gvGYvbsmE
GitwVqixQIUFfLp7dFt0zPYU6FJDMw8tHBQw4GegEMNuB9xLmMQBcx0w3gHE
tDP5kFNwYqczkJFKC0VplRlKrEQOJwGyze3QMjaHTDHEAJJIIjJJIn8ij+sS
/PxPxE8h7PNJKY6kOdN6k8nlYOioF7hoCFqDZa3OFUfOrXwi/mLd/OM/HHzw
q6Mz//4aV9X1XNPRK1nXNzDthl++Wv/E6vHw8eoza2Mt74L7ladAc7al+S3x
mxcq7vtZd/nrZ6Dqm+9HrjlNZdMzCMnmEujYUVHMdY9iiwJv5mEECzYnDS4j
h1blTNHJHamMBiM1oZh+IpeoVxG+aZG6dElKoG+QRkyRQXJgD4Xm71l4/3OL
/G++zGcs6Nwzac07D05hqrpfaQvPevCNxdc/l/Vdiswa7Y3t/a+e688nW8Mf
J63JRy2xsZvzYHUeZA0rGoZnuqHcDRVpUG6tseJxRFApYLUCstgiFtsiTuRz
ZiHaUpTjsLtcyfZmqSmJ90stJtqP2NGfDYQF6ij8I3H/6/abh/rhvnmcrQrW
3D+r/UCtm3TJPmfF5sqJ21bOSef9DR07Ji7v3VT1Jjk+u/3AHPe/6GbGuNYp
dyydkJXo7q0n0OrohEqnyfoIHgpjGTsU0KmAAha0KU6q6lQO5LTRXik0vJqQ
9BAWEtJU6g3oBnmO1tUucCd5VQfzcubvpljIOvuywrmgczfBwp4psr7rZ7b2
raTPb2Kcfyv/JDwrRvDwv3uY2RQPVO69TTPYoGDMrOKIM8A4nYo9CqxgFQ6O
VzIOWpIo3k+z+ofq4pf7hcv9ebmGRBp5KZX7SLzz6tX4qq++kvUd//uPjh9n
59H7PkWobQGtP4Y2x6b8nYevlHBGeYnwjRLxHO+kU0aVPP+9AjiFX7Fa0a04
o5ApFHrIhDAwSkRcEgxOpDSSGyA1h52sQo45DuSYQZDANYFIsUAaFe8nFk93
UEBnu2nRUVgRsRAGjNDdYDe/rh8k9nO5gOJcBy6QLRCvxfVvvYU/BxTX4Wtx
tawvPgH3xCcQgC+4sUBuJnRpIX7ppdiujSGoyQFTDmwZDhXDZw3HFQGoyQJT
FsizYI4H0jyg8EClGzoyoCUDijNghwNaHNBkg9kWGJcKZlOFCTdqoVkJLSxs
IZ59qjndnO6zIYvdbg+6LD6z2eBDLsHldDEuV16Q1iLXchkc5nwONZNud9is
hEQtqQgTGROJXOkX4uHwlX7JWUx6i+GENF/X3d8PlgGBrum8/n/78UrVEyXR
4yGEzxLbiAM3hKNMxHxT2lPJzq7Y99oTYrx3UVMf4MONZw6vmx1atRjMf4h/
19nwwx8Ojq7EE7acbln6SveE8Zt6o1NWvgOaI6fB+c6SvLotz727ske8XC++
CcPzIP2l6l/v2H35wKSqA797dP3P90+Xstf+jvmceEYmFEBLY1XRrIosHM2s
yMRFjkoHLrJUWjBxHWdrmjR4Nt/EY5vN5AWjMfGeEwS9ngxVmWqyar6KVZnk
Trte4FLtjFxFrS+q7sh30KGmxlXkpjnsIlxDB/0SGi4SNkcKIjDkuCS6znz+
LJv3UFPD06tHj25/uuG1erZHHDNi8cRhvvHLyitaKtyhKc3dU6ZMffiDrvUX
9kx6sON6Te7ChxfNf7R1VMnS/bWNBxsig3kWfpD4YHYsL0H80nxppYLDSKn0
0lInoMRemgYLszRjMoeBV8iJ+YdAmRBqZ2kC+FAdYT+JqCmRC5Z+QvOUvKlr
kiTtCDA/XBadPT3w2iWxGNviXxLmb4fvRTVtybYbfyZ+fh+xd7JjVgVv8MZ0
gHRO3Re673SszoB4mV2hVhEaGwhTuK2IXwjTMKFUkjNqToJLF4FRMmPArc9K
tWTdYZ/fEOJ6YLi/yK2TMUd5Pq9mdQW7kVozk8QZbA/BrQcVoUWxsmi0Ioqj
eRV5uGh45XA8R9Wswo0YZmKw2Y1eT3a23uMZke/J4Mt4zBOKt2doDfKQQ0jh
vA5gpFbRb5nk5kg47Sc4jX8wJN+97lvwmUoRmpCSQy333o7fCNv83F3Pra0s
bT/WtHhfRPYk7Zdn2GC3xO/Lmquzg5OWxkY3VWXlTG5p3Tr54Y83EMU2deqU
bX9v8kXdOvlRXp5LuvzbSMP+RXcebi2LLjnSWL+/IUzhrSFgKJMNJ5I1Myao
lLxXxmIVDsplvFyi0P7zVKSe7ycuZsK9LKCjgRGTGzacPHv25OuvM4d2AC/+
sIO+1SpOY74kfkUQTYgN35IJLdpOLZ6jBb0eeQMB+3CVR6nMIO6m047t2Q65
SumxG83KFLtMS+0S6ieV9d9ilw/ygncwsmRO+PBDXKGL3KJjmC/Dy4531ext
LXvJcHF0c1UWW3qwpXnnjMyelOGzqicsGZvRY73rWMc477T762zPuqq75uy7
88472o7U4vb4xdkbZgTy6rpnYutgjCyd0KCDWLltsQkz80CiiTl+qHVBswnq
dbBYDe2qzSpcr4LV8m45lud0OrY78BxiirUhpGnb4wGPJz+nzWkBS8AhJ9Zt
hsNA3BFUlvQJh4JoRCzSENCtxhfQ8E5hYeS2qFo0ytxOHSu2N+6sKzbkHKxf
cGR5yejO/1jWfubeMYUrT6ydO760eeKwYZOaR92xfHIwZ8oyWd/ulkOrF4Zz
xoxZfay+8cSGqupd79/X8NYHl+9b8LezoZrO6smrJnoDE+4ur1x3Z/7/Q537
/5HDif+SzJVI/JcJkv9CPuwKdgXxoEzoeGyeVmNQGk0Ma2CL5AcIGsmGVyY3
yuTjZVAkA04GMpmh0QB+wywDNmBeoeRACV7EGckdUKeSTq5SYr8SFEorMRsw
Y+dNBqXSYCKOh5zrZYI9MjYpIfsJLyUCIf0EYtYQxTQxArqTs5NkRC0SM1wn
2QV10q9QJxAlqenX6YF6py4342LcEDEwOYyf2FMcw644v04UVp2Dcxcm3a0x
Cmo5K1OlGDTLoVzsY1fEVxH1UxDMTrMHhxf4xN9QL/wA6X+Q9N+IXMQLvzOW
i3IEj03myXLaAGUJWdiWZctS5ZpyvEjlVGEVMgXvHg57hh8djocPz3QF1b1M
9qnMoEo56ErUraAR9Tpi3+ilaF2dlIaI5i9Mht9ctLo53fIOReDc5KfkpouJ
jpo7yhG751iTGIZ33n3XHCqP/3Egf+44v3/MnMg10E9sHGW1jVk29QbCC4Si
qpqcWeum+NgV3XvclWOKczSe0tzcYgd//UNbKObzj86R3tmbe+Nbdh0hAA9a
E6uozoRoBkStUJUClTzM4aCKg5kMzCJazWMyIc8ez1HPSx4mzwPII3icHsbj
8dk9GUogpIE8JvLnMtu1NDLpsstUNyOTiWGYBB/X3R7ZgZvOqWS+c75BrqV0
zK5Lm33v0w3dF3ZUzNz/YVf94ZWTLC9XfFG7bS7xxTZO3vikE1pnP9BQOPPI
Z93bLz08MXd2V7XrkxHLHl206tjS/B3rCSVTTG4jmOQJJY+IZRapYawc7sDA
egStU4u1WrPJi3gn0VTKIK80BRHB3L+I3xtcTing5IreRM8BOE5MXJf4O/Fr
MdZ3rWXvvGC4ft+iAXaF+Afxqvhb8cpjkabHly4/MC9AoU1b4iYtUaGJMT/P
q1g2poI8FSCVQGiIUakgRa7wInASg4gLKhQgC2JKRsogDJHRwCANUVBGCGiJ
7CeeEy3eLP2z7uvtzHJiAHfHO/DH7Iqj4vtHxaeST2fOkacriKdCxDctRc2q
sMxL32PFHA6yrByCNIZ6Qq5Mit/kwyLU5KLj2NIjCFEy5+K7cXr8t31MkPlY
fPuoyJP7Jqipl1CTi1DT+C1W8Fqhm7jnhi0GvFWAhhSYngJFykolHs/CSBba
ATIyUtM1Hq3W5UXpzvRY+tF0Nj3VS2xmTqN1BF0um85OGCl40mbHKHSrSz5w
U/39g0/olbsGiclp4HyuIVKiY5Autvdr8Q/dnx+dPe3wf+6B/TXPjhb/0nCw
MVLUtH9+3yHxGaw+9ML0g5c23f/pkVniTzwXSlc8Nr/pieXFDX2DEGRnS/jL
jelVXgXGshSe8cr4IMaskqPhZ2CpDCvr10vASyCqPzHo4pLMOpcuws7ujZ/s
68OTerEy/j2hlWJ4O3F3mEbuzqC0mIIhZPARIQNGGsKh+ACJEGm1FJjW1yfB
m7Zns9SeztgIjvibSoZcQgSSESEikpQMkbMIKXmFwqtkjEqGaFelkzpttNVI
5pRhGQNSu08NCt+yfl3xTaRLBirNe0msUUtIX0ycEU0/298tswhJaxWI9Q3c
oMHKbh4QG4/39uLhfxZTsW2/2EWE6wc4X3Qk6Y/yoQwFYrrE02UcmyR3RmpE
ks5pV+nzJcomIGO2xbV9OMquuB5K3EcWIvcxoSdicw8YocMIs40w3ghGvd7L
MkaW0bPdqkdU+B4VLFZBjQrGEdCkpCT0VYpsuww6iNLSVmpxOwEfZgWtjOUY
kxdjs5zz0vd4sYIx0uQb2UQrAZ/USpH+RHhasrjoS0zkIwyZ8HVDu5ah/YQh
SHwxabQBUokhW0inQMtCx+XiCzvE4+xxkIPeaOOxymEG6wCzgzDvkev1BGqp
+Xc5MxaX4CtJPM+Q8Lw8Fp1JmIOjAwzjAXg6Y4tgnOeMPHFFVF5BAQpFCh7E
7k4MS3AXxpijQ4Ex9UYe6vlVRNIlyDRcVyctBrtFWKpbSCjUweZLTY/QcRJ2
xuvxl9mXfoKr2JNM7fVnCDaeYWolK/Bb9hPC9QbkRwtiZVt8sMUJ2+2wLRVG
6Kv0uFoNI9QwhodCHqIcjMVQgEHmQVbB6rQyVisx0zPo4KldqXLY/w+Dpwlt
8U8jqMTeu8XSw4fW//yR6dP3X1y/6ZN9U2YcuLhu9s6FBTi6aPuMmbsaiwsW
7WI3zjz8q00bf3VoxpzDH61+4ItD066zJa1HGxp/1DqysPW5VXMPtI5Kag0X
gbkGWdGYmH+NaasJd+q267DcgwwCsXEMGpta60UapwZrtEGVKkVpHVId/yCm
pR4YXIMNJ2LAIA3XJBRI/+oXlueHlzyzSvy6r+/69u3+yqbRP7ArhhNLu3pT
/QixBlfVLSmuCuokSD/F/kAgbUP56MvYoS0R2ByGbTmwLQsK0sal4ai1wopH
mqpNuNoIxUYYy0CUgXIJ4C7kdNKopy9XrVI1aGEWATnLAy/zLCYm+GwaGpWq
tTE+X2GuJ8MM5i0eWE0O2V3BSsdsB3Y47Xa9KqhWb9VCs7ZDi+u0/83el8A1
ca2PzkzCTiCQAIKAww4SwoRFQASMrFEgmITF3ZAEiIQEkyCiXRT3fal1t6Kt
Wuu+VetS63bFpdW6tdZa61Zr1aqtrbYqvHPOTEJQ29v/fa/v3vv742eSs377
+b4zZyYE7+OOd3fHowCqro64iyPwY0cwxGpEsE2jD0zRXdzn36QMgrcgB1kv
4wHcixsEHDCOvsc1KB7+AZyXzQ2fQ4NP8ka0XeXz4pLC4Y0vn24vW79UGqeJ
S5RM7JExs6/FC+R5fQoj8kZHalgvucLki1Iy1mOcTxZFBrW5RIDQfYJncrD+
1Cv84hjwCx+MxMp6xvC94d8cCoXPK2MeofBLIKQ/y9/fObiTYxgdbL34/E7R
Dg5OZLQLShBOKEGgTEZviyxuEgejXoons4MVskJQ1GAU4OXtgwfRt0+C2Mdu
nA9Ly+gtWrmb8Fc31fbYsHZ09fPBeOqU2aOntGzGk7rlRnu0cNnDSUl9WeMK
b7ZoMV5Yopaib030BqvVF/hQKranp3lECl6XjI+KnRpLNHSd0pUYGYZPCcXH
kbiGxBUkPrEL3uCHj/TFK7h4MRefRuAcR8/QiNRQDNMJ8AECXIBFcCNmR7Ai
IkRpAaH+/o6hmIgUEaJU+EQ8uIbgsDjdgv2xAG4AERAgCBb4sPy7we1hsL+P
ZXtI251+hJO+b229nZFC+809j5fvOOHh1l2ij+3da3jkTm/OIoQs65aSleE0
ZUzykJwI/5xRQwY31YEru9XqMQfGZbG3spP7j+jVs6p3ZGfpLFPF3IHRPWqX
q9RrRuawWV1UOq+o1LCguMhQHp8qrCvr/Vq/uGTNzBLXjEHpgX5UZlREdyrK
x6uHVJWWZZLHCsvGyJjfY2XdQldOAT2dHPAwkGPZ0fYwjxMwj8OrwM+ef4q2
U/AedBDrVsvoXS1vsj5mff4slvV5E8QxB1ipEODogvXv2a2fn9aPKPWq9CKm
OePgUoo+ZZ5kh9fZ4RPY+Ag23iWM0XEQl4lIgVyYUDv5OyA9x78ymuJ8NzZQ
G5s+H2Az5wPsQqeg9GFLDaNXVyf7sj6y44VlDOxV2ZDusQe/kmgyqPoI4mRa
w7BoYu7z2mhFH3Gsn6j/6/nEbMC1I1gbQwHX7mD/l1qK4yXgysCFY89mEfYE
Oww++E2wWATHHcM5OAidOB/Di+DCwcfhuBHH1TiOE+5sjIXWCUFvpMDVXhq6
7YIu+NoOhtGOxLaago4G4N+njgdXVHSmZQ9tEf2jJe0Ynujo6uxoRzjy3fEs
9vCns0Dy+odXcFAQPyQrnNUdajwQw+xTAe9heLee2yO4ONeN48p1dQvjuPI5
rm9xcA7HdYorXuWKR7jiri67ffBIH9zPB3fxwd92wuGZN+Hj6+Ti4+IU5uvD
9/Vx8l2Cth55LnhXF7wT2ID49vbFff1CgNgheBgSHsPZ/vhiNh7Jxv392IQ/
0JGfP9/Pn+23FGmlEurjEIHvIvB5BF5J4P0IPInAIwmcqPSr95vkx+rmV+JH
+IX5uXEwX7hbcSFwV8s19GFaddYQDBRI65Des1gP2OFFNNjO2egVjrTZzdiO
pNG8ZAwc3uKGP7EdHhFibw9Pn+N5cLeTzoLfvWWswbNPbTn6QcsTrhsLbNHc
Wp592HL6o/f5PvaAaXc3u+sXT7h6ezjjbHsedzu0EasqMcXDXRL7rAlsh+Jl
48M9UjO6c4lHz4dG9pP18qRGiAn0hDz0OjXaDy7oKfPiO2KuHk48zNWT68Rz
coclZyeeC+7At+c7uuB28I3nyHcMc+LxnZx4PmDbyOe4Ya4YwWK7uOIuYPvs
ygdVzMfFxYnPc0W7QEccc2rTK7y7j25S0AcShw9z4U9H40glaPsEvygL32Cz
uzsK5+Ho18dDcFox6Med2eorl2NS3J26tlw6i59vKf/yDj/QxbEr7ny0pQyP
7aHgczNaXiMUREDLLn+hJycDL3t+01ZeN6xHz0D7MDu2Mxt3CyOxzSDi4szJ
M1Aji+WGgg4LnU56ojv5zy8PgqGVexk+MgqPmRl2gHHY6paI3S1Jlx4FUB6c
6PDfgc5rW7rgV4nZLXOi80MCcpPxGki9C4huVwF1D6xvz1CuA5vNxs+xcQ6g
GebC4YNtkIcHuvPFcwSbWja4igU87OAQ3Gh4SnovLg6+GAWC6G7Zbg73iIdP
5QQl4mA7h77a5UY4BLGuPksnyvzCoz2f17K0zxfwI8N4xMPVxHuBUULPpqbn
hd4xkfzWVngqj1fYXSTCOXNAyR77aqUU84a/48d2IFhiHGd/xBKAsByNRyeC
0cGtD4jJxEPcgZOMF7dOxJy2gYEgTCYmwnOwaoDha+I+ywG7j2HPQzCHrRjk
HPXBQ8/JqO+Bpc/f0hcEsE4kHoK+h6AvDPZFuTB9PmDeTOI+oNgDl7WORxQR
UtQb3PojMY64DHrTUC+Y2dkyUwj6pqOZ6fggZqa7lVcJwKtHMzPwAfRMK69d
wcw30cyeuAL0uWwncIyLptKYiZPEdLtPacxEOcLMY1l5Ar2TUS/QEdPrTPeC
69PS1svsJWAPEYOlYX2wT3rq69LwCc64MCAoJZTrFxof3bUrFpYVHBqUHpgV
5JIRz40PCornsgqyQh2dgBKJiWF4cZgmrC6MhYWxgivSR6QT4wJxRaA60BzI
mpKBZwSmsyR1MH5WuBBm4XghUSHEhS4BrKAgSTd/L7CD2CnxZ3WNjka3EuCT
bWg/RV+SMVdm8WAjBXNc7D36qXbm50LQU7ZxcAqXfpQFg2cGzLayW1LbpgFu
uuDC8AHxDAQwsPvE4QOG9NMrgQQPtzws0Y1VWLBN23d2Tc85cyPjOjtHFdXl
p9UUxepf/4oX6LLfOyuMl5Cc4ldH6VoWxCR3cZZ0S+rj5Btzs+VhiiSKG5Qi
jZGMH1uYTZU2SHTv9BLm9UjsnDAoOzJEPCC579ye90NUMWT+7DjPyMgw9+kB
fYnxnYUCgW+3lIREt0BB2vNfcVGX5KSkgKgsqnN35GvAcjPt9tC+RhTR3k3Y
2nUc6gW+BuwKPMaNYDxGQnxD6FEf8Ca6j23p6wrmvYn8AXgT6EPexGbR3gT+
dWNgIfaUBiLABtTELOJD4ld2JPuIvbNDjuNwp9XO37iIXX90/ZETAaCBc8DN
C4L7aO56j3rPIs9veAP5eq9Ir6+9vvYJ9hnnW+in6ZzlbxdQEHiY3BRUEMwN
yQ/9Lfx0ZGDktagIAFoAU6OmRusFq4Ws2B7U66KiuFXx6xIOJRzqVpmUkEJ2
T0ot7/F62vR0Yc8J4vJemszNOZ/mOUgW997wN8AlGvrc/X8H+e5WqLZC078A
P1iggPOXYVDB5cK6DuiADvhfCrP+FljbAR3wHwiHCi8XPu6ADuiADuiADuiA
DuiADuiADuiAvwJFRAf8x4JzB3TAfzXkMTC+6Grf7n2H9D32fwuyQFmu7Lx8
pvyUIlNxoti+uAnA+8Vbij8qPlB8rPjz4ovFV4tvF98umVrqWzq09HJZaFlR
2fp+5f3O9TvX37d/Uf/P+z8eMGDANwO+Geg8UDxQMvDYoB6DNg76eXDcYNXg
s0OIIZ0BGIfMH+o+dPDQY0qe8nx5Yvl3KkeVSnVA/Y7GW1OsWf5vgA//F8MR
zVnNVc19TUuFa0XniqiKFAB5AEr/m6AyrDKhsldlUeXQDuiADuiADvhPBwzD
uhMfY/BJKvhVSz/0Jx9hGcecUY2FvoHpRixlyiwsi3iDKbNtxthhnYiDTNke
jP+KKTtgausYR4wifmXKTthUO3umzHFj2822/NVJnMObx5RxzI6/gikTmAP/
KlNmYcH8M0yZbTPGDnPlP2LK9piDl+UvWTpgIusYR6wTbwlTdsKyvRyYMseB
8MqH34xns+BPovsXorIdKHP9B6OyPWrXo7IDah+Fyo6oPBWVnQCjgcT3TJnW
IV2mdUiXaR3SZbbNGFqHdJnWIV12wMr9FzNlWod0mdYhXea48f2fobKzDf8u
kLdoLiq72rS7wXI0icpcyFs0hco8UPaMTkdlvs14LyQjXfa2afdFc4tQuTOi
ReMMsBnTxaYcisbT+uyKyjpUjkFlpE9HG/4dbWi52rS7WmRZi5FYHEZhIiwJ
lBRYFaYBnwWYAdODlxlrwGpRSyaoGUEZvitBuxaNEIIeMaYDQGIy0FYJ5psx
E6ppwKcGjB4B3tVoJAdAHqiVg1YNVg9apAi7HtC10MkH2BsA7jqAhwR4DQCn
FlOBsgqUa0Gf0UqHtHJPYfGgFG6tJWECxIMSYKgFY0lAVwnoQBwqrJoZ2xvU
qkAr7K0DPJqsMkE9aJEcuj/kpwLpgsR6gXo56IGtSqSJ9jLSeAyMpCSiUgd6
VUheWKsAuOvBXCNqqQOj1EhzJGi32EMCeILa0aJ5eqTbVDRfg0ZosBpAE2pa
jd5JhiPLWBK1m0AL1F+t1YJtcsB+M+BCC2aagBbEaCQtkUUKJeIJeoAaUYQ8
VyPpKv4l73lxZPd2VKEPVQJ96BAdEosE47VIAoNVb1FYCdKVySpPEsALfaAN
UwHg7P+vnzujV4ev/7f4+st+0GalLOQJ9WCsHugD2rECgJaRKQbp3gD40SIK
hainCrRAbZqQbYqQJxlRjxatITl4b5Md6kyEpWDJwKIveziUuw7wUoukpOWt
QPyakf36IR2TaDU2IJ3SOjBb7WoZDdsMyLug9iFPGsSfGo2rZewvQOtcj+jU
Iq7puSoGi4apKxHuWiRBDRhlRn1wVjniw2LPF21jZmbQnmJ8qaXCKoPAWm/z
jZe1U4vqajBHBeoCxk/geqTpCqx0XpSAtlg90pMKrZxX6ayekVSL1pQOrR7L
Sn9R93CODpUiwfiodr76auw0D/+qbm1XgsU/jcj3Lf5m8f1XSWCh/jJfqTY+
ACWhZTEjepbYaESrpwH5D/wL93oUMZR/KCnte8p2XkWvfAPzTktFl2EMqmUi
EeTWYk0LHjgSxrs/81E6ausZy7Rht6wQLaNlI4qNWrSGzYxt4V7FkiUq0GrW
ISktWm7v1QJkGSUqqxk/eDmivbgSIlFkh3J2x2IBaFBEhjSqUdzSIKsqQRvU
UCUYYemLZXAOeSFKRjGrty1amKwas3DzP8lDfzHuk/4v4Mi34CADrN48DLTR
drJ4jQblTB2TL9q8+89ymcUr/zifQcsVWVeOyWZnQNub9gINQ6sS+bKesbsA
yWxk8gwde2BkUCL903a2+DHtV7VMBKcpwDxA5xW91VOUWFs+fzGe/Q22sGpI
iWQ3MDnHEj/UqKUO6IZeI217HBJlNR3jM5EWHv/YthjMY+0yOrB2lI2O1CjL
6NrFmZdl/BN8KPpq0TzL6FdHN8EL0c2i+xdnQ63R8dRWbgtfbbuttlXTloks
NhSgeG9AVCqsdY2Nh8C4RVvIBLC1ZVia63LEi4bJVHVWW9rGEtqGsYzFTWiV
6Kw8WNZ1e1/661q1zfC0lLaZpr1Pt2miHumx5l+0oyUbwN2gntGMxoYDNXqH
NNv0MgyMUNnkDvOfxGM68quRBJaM171dFFcCjAYUcV69v6b3f5Ys06YfSyZr
05FtTGk/y4RiBW2rckbuV+dc5R9Y1GiV3oS8VI+w06uIzry2Gf1f9QBLfsvD
slGvFMsBtVKQLWWoRQLa4L5VBnpKQC0LtGaBlggwQs70RyBLlaI8lAfGFaMc
R+OQgfdCUO+HYlwORqI6rPUB4wsBLjg3GytDNLIBNjkaKUO4C0BrPvjMZsbB
GZmgpRjUYTkXRUGaXiGYRV8tSJicSHOqAO2kVcL2XEkQRQtnBaAmA/jzmF4x
wC1B+CD/kH4OKhda+cxhOBUjHUHMEGcm4Cgf1WBrMfgsAuPkiL4YyUxzW4hk
yAH9tCzZiANIWcjISo+D+ilheqCNIH/5ANqkEiMd5CFu2vSXCT6LAOcQfy7o
VaAMIQUzs5CkcqS9bEZnUNp8VGuTirZUJpIGahXqIAuUC8Ar16o7GXqneZHZ
YGuvu1LU3zaKlk/MvGcizUlRjbZGJqopkK1gr4CxpQzJ8SLVUuSJ2WiUGEks
t3pIDvJemnuLd9I0pDac0PSgbW15sXg1+SdrhMZi6S9mLP2yXqDWxUgnkC+5
lfIfYRauJeMoURKpqNKQBQa9wdxQqyEzDcZag1Fp1hr0QlKs05EybWWV2UTK
NCaNcYRGLSQ5nDxNuVFTT0prNXoFnJOvbDDUmUmdoVKrIlWG2gYjnENC9FQ8
GQ4/kgSkTKmrrSLzlHqVQVUNWnsbqvRkXp3aBCkpqrQmUmeLp8JgJHtpy3Va
lVJHMhTBGAMgSpoMdUaVBnxUmOuVRg1Zp1drjKQZyiFRkPlalUZv0qSSJo2G
1NSUa9RqjZrU0a2kWmNSGbW1UEBEQ60xK7U6k1Bs1AJCgIKSNBuVak2N0lhN
Gir+WDuWxu70TJmmsk6nNJKRBVqV0QBZiyrRGE2QTJKQotCgAoUVE1JcllFZ
r9VXktKKCsAdGUPKDOVaPVmoVVUZdEqTgCxSmo1alVZJypVIRhMpSkmOs1Ig
TXW1tTotkK7CoDcLyX6GOrJG2UDWATnNUKOwmTQbSJVRozRrBKRaa6oFWhaQ
Sr2arDVqQa8KDNGAT6WJrNUYa7RmM0BX3oC0adGZGXQA1RsthQpIQQA/kc6t
7NQaDeo6lVlAQl8BcwVwjoUAEKy+Ckhmw1k9IKrVq3R1auhYFu4Nel0DGamN
om1nMxxg+DNuaVNDfRo1Jqg3aKY2AnC6FVcq0kCkFlAxa2qgTY1aQFVtqNfr
DEp1e+0paVUBFwPiGAAp8F5nrgWuqtZAMeGYKo2utr1GwfLRNzDDoUEAQqCf
Km25FvAs5HCgY1UYdDoDcgFG1QKyXGkCvBr0Vne2GCGyymyu7R4bq9EL67XV
2lqNWqsUGoyVsbAWC0YOYRw/CpgXuYUJMgbRvHqlvmqFnWFG5MMRZ6GahxmA
TFA1mhEaHVh9SN3t1zJUZbvVzOEUQeOYkPcDuYEKNGBWpVEJNKMWkBVGsDKB
96iqlMZKIDPUMdAVsCiYThrKwYrUQ6UoUTSx+NlflwIypDSZDGDlQP9QG1R1
NcAiSnrRa3VAM5EQYztpSTkTTs5GIY7UGhgPaDu8chxZrzVXwWYbdxMw7ga5
t3TrtMBPadoQl5EOqIACWkRQQgFZY1BrK+CnBimktg4IZKpCCxagLq+Di9cE
GxkvARLGAsFNGhChAQZoa0ZLr2SVXvCAJL1oGE0jJuqrDDV/IiNcBnVGPWBG
gxCoDSDsIl6GaVRmi4O1+TFwfrUWLbzutIsryw0jNDZZAcQ/uGQQP3CR1bZ5
CtNlqlICqco17Vau0kZQIyRvMgNngoEXLF56of+ZAuB6y8sm5dIcRalYlk1K
5GSRTFoiycrOIiPEclCPEJClEkWetFhBghEycaGiHynNIcWF/cg+ksIsAZld
ViTLlstJqYyUFBTlS7JBm6QwM784S1KYS/YC8wqlIPlIwEoESBVSEhJkUEmy
5RBZQbYsMw9Uxb0k+RJFPwGZI1EUQpw5AKmYLBLLFJLM4nyxjCwqlhVJ5dmA
fBZAWygpzJEBKtkF2YUKIaAK2sjsElAh5Xni/HxESlwMuJch/jKlRf1kktw8
BZknzc/KBo29sgFn4l752TQpIFRmvlhSICCzxAXi3Gw0SwqwyNAwhrvSvGzU
BOiJwf9MhURaCMXIlBYqZKAqAFLKFNappRJ5toAUyyRyqJAcmRSgh+oEM6QI
CZhXmE1jgaom21kEDIH1Ynl2Gy9Z2eJ8gEsOJ9sOFoJ9jQFdI8HrFT26FinH
GnAOuOIYBuq30dWSpV/OXN+o0TWJmrWYtYW1j7UfvD5i7Watb3cn6O+6+9Rx
1t5x1t5x1v7vP2un75d2nLf/d56309brOHPvOHPvOHPvOHN/MZp3nLu3P3e3
aKfj7L3j7L3j7P0/7Ozd5gpWiXKEpX4VXdFq2l3hatpdw6KrWHYgW8Tuw85l
p4H3FDBaCSIf3KfT8aoK34yvYGEofsLrWyN6CgziYJ4fx7DWCGw+9up/OPMZ
CZ/mVuv0lUzZ20SX08ErWGys0QvIzAajTkDmGjXVAjJfadaLjcpyAflyHzyZ
o0cg/DiiAV4By8AnnyYX8DbVGDDH3qnrxLyJjzm4A9HUGNAImt4gcFzkQjnZ
20W7sQg/O4xS2jtH2+NsvDGJwNlNcqovJbBp8V8ZOMYf64FAigKtASkRJuZ0
CFSQDTI2/4vZvE5cz06VB8/i645svrh94JL5a5saO8mpRvYBqpG1tolF4ATB
iwcsHmxyOpI04vavnyKGD1IcK7e4HeCrHrHJKmbb84hiuYhHecCKI8+5VGmq
0uorzQa9iEu5wUYHnoNMo64x6NWiQMoftjjzvNqO0m3uNIiCqC6wn8Xr1Nav
0NZoYuRmZU0tWZQppgJ9OKJuVAqVJEpKTE4U9QfVZJsqNXbL38KZK+UM+114
LLE0UxROhdK1AEWVEh6yKuRyMlte2D0zvhcVQ+V0E8ckiMC/MCqElsf/lfLI
6ZsHVCMebKtf3A5jNeLuGGh3JhpxHFt6JS19qHS+y5jBvz6YamjJ9Fwi7rtj
0XSRKcDV70L8tc9Sdn+KjT/Ayk/8eWny2qO81MTmxgOa1Oj7zZXN09/cdXLn
e2/MfSbf/OPwk+OKz+0Uuj2aMKYXd5HmcwE24ffc3KInifbvBPlefUehl+TH
3d0983BQ96BWs/n19JRVmn8ETzq0vSHHYeYtyY4bHs1P1z3vK3wUtNzJ+z31
a7vVtyquCr64tfKE95Og+5j8fGaft8YfWtyUtSb82JJhr3Or8vvtezp8w407
p9Tc4QNTr87Y5zTxYnZW84npzauvZ0xbjAszKg609lqJbd/guORA5eG9z1Z6
X1/UUs8aMrdHVN+vrs7o06ToqtRmcCUEC6yidxtxJ6AROyoAqDTAje3N5l8P
bPjyWfNQgYfvQs+aFZv1Mz5bth55UEAIuxPlPYYfkvDkoiyn1vlez6cjnm6L
3nwocZs7pYADurALqD6UpCm3KXtiJnO/QWXUCWssdhKqDDWxtdVa2BrL3O4x
xVrNCK2IjAh8UgiGUGX2jmBZ2tk54Dg7n+pN5VnqFDGxB0Ogvr7+VQQ0xj/B
bKZ4kN8wNvRABiXL8YXlyIJeEpmgqN7s3lJzaS+55Pi7PtEn+jRncLp+tiOu
es+yR8ePtSx+nXsvMbn/F2u3DNn1y/Z3ui7auats42eXTrFXLdqctz3KcfFz
e8ft+y8ffVQy5OvTXytWv8mTdY/8fX1Ej0E/ZGniTc7NrXU3H+V+71baY0bl
iDfnDNuYNHuENiBFsuFI1Pmd/ToPuFo5c+CqC5v8+i/yGcyqZqftm2L2uusb
tvWpSSI7cEXDq2hiLXm27f0HH688MuPi1cPu2q/GDUy4VfLD0x+lJu2Y5znH
Rq1riTivzHR9y2/sIGdR2nGHy/eaPNNPlhOHxZvPaY73zZ9x/ZOlJcaQzEfr
TzUOkBbdmSHjrnSuSX/rC9f0B/5TqEZ7HASx2zZB7PDtKU9GjS263YqC2GFb
rbmAIPbG3xIqIqlwetF3se1Xa0i5thLd7AGGhfejRSiWJVHJIlEcBSCBjmVt
Vcr8t/DH9LP+oP+fRqPJU3eFHnKYtXhMg9ez8KHPjJMFvz96d8Hk+Tk73z0x
ZEps93hh4JyRv7+2tksjvmPUCb+9rOM5d44sevyUHfDTBOfWYP2KnyrTjkR0
uhnZ5Rf2PLHq7vXdXtPv8RYnfpNcqzCk3t2Q7URJDnw8i1rkemLEscemt73r
P5+2Z95RxwnkvcD3Ex8OP/itGesz9czXc+5cGNky4/cNQyen7fuoy8byBfuP
jN8ye+OFTdFnFU8Tv/p0+NzvAlvvDq8+8abjCPO33L555x5izXn57zok3uzH
ef7a0ubv+l+f8MuFxe5dZq6+Md7nwIXjywPwo8/z1vDmxi8Iyot7cjB0Jbb1
Y/nxcfqoAWPvJ+vH/LznLs/ljiUajQEaeY0ON2Ew3Fjzcr4jbl2pLJtwdeJC
+fhTQ1N+aK08OPBM8551Ow/xFlIy2O3BBrHovVwqW8ShXOjMwi6QFslECVQc
rNrxouPiKUoUF61KphLKEzXKmISU8oSYhLj45Jjk+G5xMWqQ/CqUcXGJCRWq
diEwT6++WWR3tvEDn6Sk4B017x+vI97+4xD4yghlqDWhKAjcBfgx8GLgwNB/
h8C3GCophkpGIVBpEwKLKbBXsQmB2f+UgCUK/gkJM+UKGefheCuboLAXljOr
kcAxe+8ul0oPFjWHSFf2HfnFvSfPP913/pOHv3UuuSdv1ubanT984u61Z4sG
vD3EIznyE7ts3reLGybvrVh3ac8dojhkZ1rISHHNxicPsf7zFk31P+n09unF
/lnU2lXeR3fnDvglOmHa8lllSYcK/TcFH+d++mUjd23ig43BzbNCV4+ddiXC
/0ZFwJR0YWspq+CAflxT3J3t22KLSgbZb/Ga3hyg2mlyvX5hVLh71/nZa+LG
pc9PL5XUh0xp2cI9OvWmo1ffI9H9RQNShs1//73J1fMjDQ8Pb/xhX7bPyfLC
sTsUfrkzF66q+UQf8Y8nEV2a75FrXbY8/Mxl8bxrw5Zpx63o9kUN2TLhfOuh
XQu6ObWk8Q8s5K/9ZOLJ+40H1hWHZnbakTdh5MTTv51ZluF7kT/l1ozlVaGT
q1LXHh1TGH7LMShf9XzpW14F8TtKhkq/6P1R8sxW4eUtQ97LrD428tSWPdWz
xukmGT/4YdXT5Zf9LqQ8Ux+rSXe8+dq4LRv2vrt79Kn5Je+NKjvhmVt+Juj+
sx6HRS6PY9PVq5IMQ4sydmbNlja5TPv4jbJfj1ZOUl56Z+Hh5uknDLlXPxHO
u7fl181Uzd1hkvdvzx/RvM/xcEvqLxtNSfZbS075ntvzy7zjk/x/GjMMl37Y
eaxp29kBwRndyzpdmfxj5WHJmtivw6alDT59NyFrTsDeOa4jGtPvH/4yZgWb
mJn32/3LxCnWSpAEHEASuE8nAWeld1UCiv3+L25gh6Bw6uw0N3zKWz8J1Liv
Nwt4o8iX8mnX6GR1VuCG0XTcDG2LmzKDAQRP4LraCq1KadaQ4jpzlcGoNTfA
4E4lUQlUvCguMZ5KAcE9ToSq8RSs/vt20P8svi9fodty5VLe3K6vVQt9r+67
dv3Ior4hRRs+u9ypMNT9x8/XfJ6/wUyRHncczive9pLM69xr7saFA6nwr7Dq
70fvuzvFwf2xG3vhgyknu5yID5207KdHlf6CZ6NvTQ744VbhuysOhMiPz/g9
+5TT6cGbTm/uxV7522rdW5VfRH6dI9888fTNyBxhxPqJ0mKZ6w2W4Omw2bMp
/aSf+1HLfn/jwoJt3wcteOPJGd7PjjvlNbLt2bOX52G9cys8IqIq3l9w46z9
2N4rfxu/xiOX79S4fPy94pEt+OKAIscJGJfKubfzm5CcPYdjFMs3BY4Ui+pP
LrmSOu6tFUpiRwBny7PHS7binwX3UbT+ZnfoIOliie/rgEbWUO7WiGNHscCH
TTx/5e4Shu8AdzYb+N9EimvvxOQELxy2YNTYhXRsHjubGjtjDN9tfePQniUR
C26G8Z51veosf7vfjfdWqN5T/u3u2cht2OC9onfTqg35prJHDjyhhiqik4KE
AnmoKbNJPDHjr++Lrd1GQBGGcpQQFDYJIY/KobJsEkLy/2RPDOXIpLH+xf0w
/DGPBVMPDWRldbt8e/uG+kufNfQtwLcIzcMH1Ljy1n328ehZu4TnPFdOrynf
VUqcKCR5RYsuj+p5rXTPprLF/lcD8Inr94z8adrpu6n4j9c+nuVs1zwj79oD
uddl6bq5N27NGHZ+zIHv5v1kHzuBdXtO19Dg2qe/PrsxcpGQ89jhWu3eToXL
ZlY7G9/etSJlaWXMkb5uP5QPzPBeOI3MuObgF/fbSVHvEaK0aKNL8w+1aa0T
nHlXDjorZz74YpfPncJpbx5JjB787v47e1936TX6nNwY9CN1fM9IzcABuI8z
3+3MV/yFv/T4qKJsW0zsrd8mTDzZt+T7ZbXzdOtT8s/92rD/g06jyqPur1wS
lWBf71d+LC2wpkvjA5ejgj2nMrfd/O3u6zuuv/e+OXFX4ZHhIZ7hI1x6yKYP
75+Tyd+7bdvmgsrm5b1axzQEjXnHi6r4vpfnYL/md4KDTmfejr6951HeScG5
L+PG5Id3zQsd0v+Hkvurv1m07Hh3w76xEWZ7jx9HBO1f0nggQvHhlmFpU1aM
UG7Xr+Ct3v9B7gNPw/OpcbqtLVf6Nk8POVaxb1nAJE81kRazqd+sXTeCbu7Y
fFy1faTC7pxYWLR+3uZVI9dta5pf53dx7iReXXBs3PuO+qYB08P2N90ffzzo
wp1A6bHFP0q+fYxrDFNcXm/WNn+n/2HNgs9EUa1uRwYM/LKg84ovf499J0NY
7F19jPfuc6rRYRTVaFduSQVus8/Q39R/8TJg7OS/JRTHURS9IKP+yoJsuyIQ
gbSRHEclptBJoxuqiihY/bdfsTQSL+cOAuYOAuQOsObWPfjdyPUXbvhS/0Ej
tyBh908flgUt79W5a/Xt/kUf7LJP9mNLdr95yDXwclL1Pzy/dHmQfHCR/ebm
lPM4X9Tr7BROg3rSG/OGhuo2vSNZertq8JkrS+RbnQWHNl1cG71xlNOmL+b3
Oz7Uz+52xYjv42ThnrG31jkWndqWtXPQl4eFrLp1VT+fqPm5+8AV3o9ydn+b
rF6vVyeOXN2kco852/OtJ9e/ceCcH9iwShJ1i/NxE6/+43lp959ej+7P7VJQ
ErlylPFbz+47JYO/vHcvc864i6O3jp7Y+WL6lumDvp8iHe/304rYfjdmp8Zs
jC87sjO9Je7sNlbalq2b5ia/cWbZGMEvhSVzghLDDqXo1W/Kdy913+AbMv7E
o92siTMeD3lwWrZ/+rxJez8JMocN6RT54cmIyOSwhSm9u516bcvcjf4ha9ZW
3FV2GXY1UrJsyORrYYPOBvVJlx3eUZoRynrw+agBsedDrtcOcu+bU7/tCXZ1
73qiccilT7y27et8rrjPrZQV7rdDJHs77cp6LfvGgUPGUd8ab4Ve2Z+z6Mj9
g/6ll8bNuFsgodasm3nl7oDlm55d3lxx7cCCsaPvXbjX55Ykag0vcvWa1yvH
fDe1fOSQrbHjvyhdOnB/fWTkw3s1hyJnCWb1TJIeuDoha8php/wj51Zlxprf
fqx/MpIsE/AGDX17cbo0fvxXmyf7fPNO4aP5m/fmNOkWnvn2wuTp1tx5D+TO
269If23J85XXJb7WCXyC7RrojMnR/aNMTNw+r76UlG2veP7PinStmAwnOO8U
YfV7+Gr5ccOLyp0mBlGQyg00gOq/wHeBd5snSYM+wHwLzLXAzArvlMQbGMcb
GYGruTikai7IIMDAD6macyKumsNjfolB43yQ4xVYGqcbNE4xaJwIDyQ9ZoPG
ZgN7mHVMjGLGhLpZKfnJxUCfZeYmFlUmFxTrZZTkGjjADWAyMJEzUpBl8GEA
HRMAGpCPB0/VQaZ2K4G8Yuikcyp86l1PQRZbRyz9U9vSGQ9CKqX0Lt8oSVea
zT1N8GHypJlO02ovVfJMOJgar6dj9+Nw0cXc5n/77F9wnbLe775y8efM28n7
lUyXTo9NbZlQ2+0WEHqDZ1LNJSlvmc82Tt1BFzb8zX5sx66nOfuZrfTSK1tl
y6dYPnqZctLFtqJK+bNw7bIJJc29X06rMblpHeoS2L1kJSvP7LcZvzL0pi7Q
stfKjvBMlufMzIuaMe1J85cD/Z/dtO/9sb6w1/R9nuq6p+vV3164+5lv/UyN
6TN8+Wy5P3F0XpM/bCTx6MNR3XPR87Z4WnId4zp0bO26p5tu3hbtCHSNsDAq
VJeq3/hF/cc9HSuFzBmbIjsz8vKXby857MDKtoxRS8OuyV7YN437wGbfrw/7
62XyRWtdl5c9ddBKXXw4Niip7bBsstn0tvu3Pv/4JLZwlvrDs0unX3gXm+z4
OJp9TrsdWznbRbaNpfIi+xITt364c0yaZd99x+N8Gu/upeq/mf5tYcy0GwzX
Frrtjfw8fSmnt4fAzAb5CwyaRzfOXmrvWi5neuzSokXzq6qUfnlMlV/92125
4eu8H/uzt3tPf/S6tELqzSvzmZUS3v+vbVbOKH22/tef7tfcDa8yrdf/MXjL
4tN3/35pbvJE24tzw/z89zeEKy2sEDRSrHrvyLXR/veKM0tiDy7smB1eGObn
4XrA6eTssmiuBo/sv5XzD+7Nzc06GVQszFsVcNawiWWDQRPLGiZGRoPGqQNd
cWEfDkRMjSxoPAIqfKCJmJPZkAd53gXoCgSP25DPAFlW1EAZoZHFEFi0dd2R
N1MRs/q5amdK6Sxjy7M6i3WeGqQgaeExDDMIWaDVgO30Ddg5CfnQNT2gNUSV
C9UaVHDm7JDKgvz0osSCjEoFtLqZpYmRQZ/3yQXRgJrVGxce+aoXyN79n9fx
fve0ZdEfXyfx9D9T3swptIQx9/1+Zhn9dJ7T22VPs16sSuYJlNmaWbT04baw
iv63c+6KWyYfPDlt077/DdyO52e/Pc3Yqtx4+YPq7Sl1B/4q7rcRYb1y1mP6
NomP1bGmq8IfRazsevvh0YvzB3dO6hf3Xn7UpU8koGuLrN4jgwknPRj7k27+
sD0b9Pszu6jTFLWFH+z3rdbgOxmvzbzKq49ZdI+SY1Dz+Vkl5XqZsbMymw23
iuziuq0jw1h6IzOrdsJL9tvLbXfo1rzSeRgbxGrEu4DNLHbBvPWcajJMF1vu
vuVYHed7iWvFxX+9QjbcxgLPJpt9Mp+3bWETkwaweaKCiCM2wyYmUaCQIDhp
9g1YRxz7PBtSmow1kEBOktyI+UJGoOVwGVZDfvDAsaGhuaGlMXgSDD1FppkI
dxU+jrJYuUVyRfL8U8IOt0Q3oXWZQGklWfrZ+mRp2xX35M+wnvuo3Hl0vbpp
4X2zL/u+mZc/LdEPq+6X3nJ9xevj4fd5DpfmN+c6P7TQmLNsDbOUutUJR3uW
70EPD89S516ymdHDz6OsuWVa7gGXnil76+sdWHV8Y1mnnLX0ZTnb0+k/efOy
6ANzp/2+uuykZpLZtAm6dyY7sHpc8jRicQ/49XvD5aMZHQ+KFrj0qXlmbHn1
80rbq/Drn6bNXM+yZL/q13kFF8+8PPt0tv6bronyG3sv2G79O008a9+p4les
qc/5fj7c5xrIe7z40ne+PSebq9YfcRFN2JW6N7XrzBajy2tWyHpNubLn9vmG
2w4yfs9b+quvvjfr+sj/Ic8uJifXeFt4ITACACBfWwoNCmVuZHN0cmVhbQ0K
ZW5kb2JqDQoxMTQ0IDAgb2JqDQpbIDBbIDc1MF0gIDNbIDI3OF0gIDVbIDM1
NV0gIDlbIDY2N10gIDE1WyAyNzggMzMzIDI3OCAyNzggNTU2IDU1NiA1NTYg
NTU2IDU1NiA1NTYgNTU2IDU1NiA1NTZdICAyOVsgMjc4XSAgMzFbIDU4NCA1
ODQgNTg0XSAgMzZbIDY2NyA2NjcgNzIyIDcyMiA2NjddICA0MlsgNzc4IDcy
MiAyNzhdICA0NlsgNjY3IDU1NiA4MzMgNzIyIDc3OCA2NjcgNzc4IDcyMiA2
NjcgNjExIDcyMiA2NjcgOTQ0IDY2N10gIDYxWyA2MTEgMjc4XSAgNjRbIDI3
OF0gIDY2WyA1NTZdICA2OFsgNTU2IDU1NiA1MDAgNTU2IDU1NiAyNzggNTU2
IDU1NiAyMjJdICA3OFsgNTAwIDIyMiA4MzMgNTU2IDU1NiA1NTYgNTU2IDMz
MyA1MDAgMjc4IDU1NiA1MDAgNzIyIDUwMCA1MDAgNTAwXSAgMTM1WyAzNTBd
ICAxMzlbIDczN10gIDE3N1sgNTU2XSAgMTgyWyAyMjJdIF0gDQplbmRvYmoN
CjExNDUgMCBvYmoNClsgMjc4IDAgMzU1IDAgMCAwIDY2NyAwIDAgMCAwIDAg
Mjc4IDMzMyAyNzggMjc4IDU1NiA1NTYgNTU2IDU1NiA1NTYgNTU2IDU1NiA1
NTYgNTU2IDAgMjc4IDAgNTg0IDU4NCA1ODQgMCAwIDY2NyA2NjcgNzIyIDcy
MiA2NjcgMCA3NzggNzIyIDI3OCAwIDY2NyA1NTYgODMzIDcyMiA3NzggNjY3
IDc3OCA3MjIgNjY3IDYxMSA3MjIgNjY3IDk0NCA2NjcgMCA2MTEgMjc4IDAg
Mjc4IDAgNTU2IDAgNTU2IDU1NiA1MDAgNTU2IDU1NiAyNzggNTU2IDU1NiAy
MjIgMCA1MDAgMjIyIDgzMyA1NTYgNTU2IDU1NiA1NTYgMzMzIDUwMCAyNzgg
NTU2IDUwMCA3MjIgNTAwIDUwMCA1MDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAw
IDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAg
MCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCA3MzddIA0KZW5kb2JqDQoxMTQ2
IDAgb2JqDQpbIDI3OCAwIDAgNTU2IDAgMCA3MjIgMCAwIDAgMCAwIDAgMzMz
IDAgMCAwIDU1NiA1NTYgMCAwIDAgMCAwIDAgMCAzMzMgMCAwIDU4NCAwIDAg
MCA3MjIgNzIyIDcyMiA3MjIgNjY3IDYxMSAwIDAgMjc4IDAgMCA2MTEgODMz
IDAgMCA2NjcgMCA3MjIgNjY3IDYxMSA3MjIgMCAwIDY2NyA2NjcgMCAwIDAg
MCAwIDAgMCA1NTYgNjExIDU1NiA2MTEgNTU2IDMzMyA2MTEgNjExIDI3OCAw
IDU1NiAyNzggODg5IDYxMSA2MTEgNjExIDAgMzg5IDU1NiAzMzMgNjExIDU1
NiA3NzggNTU2IDU1Nl0gDQplbmRvYmoNCjExNDcgMCBvYmoNCjw8L0ZpbHRl
ci9GbGF0ZURlY29kZS9MZW5ndGggMjI1Pj4NCnN0cmVhbQ0KeJxdkE1qxDAM
hfc+hZbTxeBkWugmBMqUgSz6Q9MewLGVjKGRjeIscvvKbphCBTbI733iWfrc
PXfkE+h3DrbHBKMnx7iElS3CgJMnVVfgvE17V247m6i0wP22JJw7GoNqGtAf
Ii6JNzg8uTDgndJv7JA9TXD4OvfS92uM3zgjJahU24LDUQa9mPhqZgRdsGPn
RPdpOwrz5/jcIsKp9PVvGBscLtFYZEMTqqaSaqG5SLUKyf3Td2oY7dVwdteP
2V3dPxT3/p65/L1bKLsyS56ygxIkR/CEtzXFEDOVzw8MoW83DQplbmRzdHJl
YW0NCmVuZG9iag0KMTE0OCAwIG9iag0KPDwvRmlsdGVyL0ZsYXRlRGVjb2Rl
L0xlbmd0aCA1MzQ2L0xlbmd0aDEgMTA0ODQ+Pg0Kc3RyZWFtDQp4nO06C1Qb
15XvjX7DXwgQ2Bg8IH62BeJjwBgJC5AMGJvwtREYg0DfRL9IwkA+DsEldqlT
u0kax03TOs2mdXq6rcindZ02cRvHJ7trt+mJy0nbJHVOumfjbt26Oc3ZbLeI
ve/NSAiC3bSn3XN2z84wM/fed9/9vztPYyOMEEqGmxiV39ajqdx2/tdPIYQd
QN075jb7tpxsfgIGtwJtYOxgkNPWVP8SoYSrhMfms7vPjT/xCkKSE8Bzzu6a
sn1646EahJJaEYobcVjNFtH+gj+BrN/AVeMAgvzFuFSYWwB4gcMdnNyGZZOA
n0eICbq8Y+ZfvvjuOYSUZ4D2mts86WO8kmMAgzzEua1B87GXX9cgVHIB8HKP
2W3910PWTISyfAjJK3zeQDD8AbLA+D8Qfp/f6ntiOhHw+N0g43OI+Cphjr/4
1aFNwynaD9E6FpHjWx2/mCDPK+8sblpaDNs4JLUBmogYxB8wT2oLAy2+b2lx
KRzfRyXFHvso5T30JJJTnIGnBu2EqYXic7wM2av4BJIgVvwj8Y8QEikjT2Rh
FIlIIsIMlsRJZaJVktGeHo5D+hvcDT9vg9SGvzAdHRUjNC086cEivJdFS4ur
pfw1B4s+Zszf/GD/rrLxjr9ynu1vbcv/sYMRVkA6XyJ4PVxSFF0WmOdZeRCi
WPIxUZk301G+NrllBdb3CYz9HzzESI9I52DBe/GN/Btbb+y5YbnhX1pC6Ebe
MpbyXuRc3Un0ZUZDc1OjfkeDTlu/vW5bbU21pqxUXVJUWKDK35iVnipPSUqI
j2NlUolYxGCkNqp2jnChopGQuEjV2lpKcJUZCOYYwkiIA9LOlTwhboSycSs5
9cBpW8Wp5zn1UU4s57RIW6rmjCoudNmg4s7iga5+gB80qExc6DqF91BYXESR
JEDy8mAGZ8xyGLgQHuGMoZ0HHXPGEQPIm0+Ib1Y1W+NL1Wg+PgHABIBCJSrf
PC5pwBRgSozb5xnEJhG1IVGh0WwJdXb1Gw3ZeXkmSkPNVFZI2hySUVmck9iM
PsPNq8/PHTsrR6MjWxItKot5f39IZIZJcyLj3NyRUOqW0CaVIbTprl9lgcvW
kFplMIa2qEBYe3dUAQ5JCuUqbu5DBMarrv9mJcUsUKSF8g8RAYmL0TDBeARG
YBtYCP7l5RFbPnNWj0YBCU139fM4h0azn0V6zRZTiBkhI+cjIxl9ZGQ6MhKd
PqLKI6kyjgh/Bx1ZoelRrlQN0ad/hfAH41xIVDQyOuYgT7N1TmUw8HHr7Q/p
DQDozYKvxvlyDfCbR8AJJwlDV39Io/KF0lVNPAMQOJIDZ08/nSJMC6U3h9DI
mDArpDEaiF2ccW7EwBtIZKm6+r+Lqpauzm/lsp+rQluRidgRUjZDUoqMc/0W
W2jjSLYF6tPG9WfnhfQmCJ9J1W81kSyp5KFNV0FdHtVIZ4Fvq7gjzMRzWSHL
9TPZIhPJFhC4nXBTNWlhQA7poijJaJOW68fZKMIGWgQOAq2QA4iosLmVDInI
1ObW7DxTHn/cwqRswSZJYYiNkSUHQtQmXs9NTeO5iUGbOKPVEGPgCqESwUBB
2tp2MiQWgmKYwZJ0tkaGRIWwcoHGgBhKIlnM4kKok+tXWVUmFdSQvrOf+EZi
TfILvet7nbO+2enZE7OnZyXWUZ1lVDc2qjMf0I0c0A0f0I0O6Q4M6fabdIMm
3YBJ19+n29en29unM/Xq+np1PZ267k5dV6futt26jt26Pbt1ne263e26XS26
thZda4tuZ7PO2KwzNOtamnTNTbqhRl1vo669UdfUqEMlJdA6Fakso69N2XFB
iVXJxvxEY168kWONG6XGXLExhzFuQMb1bBarZNNZBStnk9lENp5lWSkrZhkW
se1nZUvd7SG2c7B/HuPPmkKKdtTe2/RdhPHS7INb1jyacE576NGe/pAhx9Qe
qgQA5cwrUZNpC3SqpmczU/FRLpTfNaeaDOm7J+fjuaPQhPom5xncFBJtyMvD
sIBUzfsHmnB7Z/88CxOb9/NPpdzXsLbOlcd8ba3RyfFLeMRkmC9Hvucq4dW5
zpflCyDE72RvcoT/t+1ypjF5rSJmmu4ibkeHJe9JTqLHmERUh1SoE1Widrxe
UoTOwH78Lfwcswv3oU3oi+g1+E2wB8516DQzCXfgAwqVthJjcsXDaBJfYuzY
gntF8NZGd4Hkb4ls+Eu4A30OAquSbEYlokTJVTTLDKIm9Ca6JL4LpDBkHy6a
Fi/AjkiGcvWJElGcGHb7sJ2UYaS5LNfKL2P5wmX4qyivSs1LLcxLzZsWocVH
8JvhEvHCf21+RPRNqLW9SyXSZySPoyPoMX3PY3efufvs3a/dLcaP9ZzpOdvz
Wo/43run7vS6reJM2DlIE5MVh7Ps1qEWY1tXT99Q1naMttdsLVOX7MgfHEoW
i9U1OUeVh8cHCxr22AfNd7d4e8xIs6Bd0Mrf1l65cll+5W24rlzUyi9izeUr
dQuVby9UXh6+U06Ay1XytwXa5Tur5PxYRfnQ8BBOl0lliuqtxUXFyox0UQ3s
UQRYKpOq8ovLcPXWWgAz0jOVmUwETisqLgK4prCW8BRVy2sZwlBVWbsSBpaq
ykwQJiM4iBYpU1fCZH6mOFMpfcbSN/okqzic8UYeV5iW2pagVjc0NjWUquPb
UtMK87g3lJ9KjfvK6F5L8gb8uuSfHc0phcfL1albN2/WPVWTn1JQ2tKXX9LY
WKLqa1UXpuTXPqXbvLlartYcL0pudvyLBL++IRk/e+inL8zgfx/NTeEKtxS+
Hw49cOTrlvYN64r0u/eHurzertD+3fqidRvaLV8/8gC+7RowcSm51nDW/d/+
6aFiRcFkvCIu42nc8Xr4uelT+UlSrRn3/iy88MxLyvjEinuNtY36bcZ7KxLj
lS99Dat/Fv6GWStNyj91H+74Sfi5pzPiFPGTBQr4cQu/S6dZRqpB+UiNqtEO
ZIR63oeGkA25kB9Nohl0DD2KTuO39Eu7BrBocnL88OHZY8fmTp48dfr0l1OS
U+TJgYD9wQcf/exnT0xN3X/XXfe43T6PzOv1Hzp0z3333f/QQycefviRxMSE
JI/HYzd2dOwbHjYfOGBz2B13/EcSTgomZ6Tb7esHBoba2lp37dpdX1+n1eok
sA2VmkxGg6GxsrKqokJTUrKpuLgoZ0NO7kdQ9rKgNB8ZjRsC69lgcOLIkdmj
R+cef/zUF7/4RFp6miI9ABb19w+2tLTu3Lm7traupmYHRphBJlPAqNc3V1dX
lZZq1OrNKlVBXn4el290GA5UDld0lBTflrM+cYPR7nI5LRbb2Ji5t3dvT0+3
MkOZmWHXp9nvCdx5InD/5wPxsqQnUf6G9IwNSHOFLD35Fe3C4pXrV65fkLFy
LRs9kVybmlm3mnb9zxCwRrMIS+nVhevDQysH5K+u4pTzfMtsOFVRp9PI2Bim
GARnrZZQUY5g5cHCk4oyZcUFeZxEVlzLFBdpcG1mQW1NbXUVOK+U1MpgmRUT
MJOHcnFmIZkly1TA2iOkVIJnwqrF1dIIFIs34LRUAuBiGaxEDSaycHGRKj8F
A05ErKAVxNDSWCZ4qKtjW1eZNvzb8O/DH4R/qy3r2tbRdSio8OGU1xa+U/ed
hdew3PvtDy4890LvD59/oM3/9KMDxjMD+J03GlqNGfdV7moOd3Xoa3SM9PmB
zRPputrFP77w7Ku/v/zA8z/En/vopEKZFr428OjT/vMDZ4y6Gn0H/v6XT+9r
bfV9VJSmVOAlH9Srw/upcy+GB9O43Krn62p16aKew0f+7f0jM1h27deLRzOM
rQ1vjDfvqhRtKnr/D9fCb3jzu6uquvO9uPTaH94vqil45OEvveJyvfKlhx8p
qD98fObcOweOzzZmbZ90D77YeU/FsMH35o8f+hZO+NWlO9RlRY3h37jqH//Z
U/d+7wwz+c65meOHmxtnj4dFna/3ttXjky8Ouie3N1TcE76G0xuLytRh7y9+
kfxRZ2t9W2/4d6eUylPpPxwdGdxXf+eZ790bfvP57Oznt7z80I/f9BnevfSr
8Ifwm5n8vJaQ9x2D1ukT0O1YxNwOd6BDRS1ehzfK9YryOJwqmV6cZuCS0E9B
YRuLxO+jXOgVduRF+/VbpS5H257G4r6NFcPrS5Nymdw7GZ9lwLyvq619e7Vu
o3LLscKD8OuS8bgOOljmZO5JnOxD8t9eD7/16uKP5G9durQYrqt7+1LVO69e
unLhygVSz9pURWZdRTnOS4XWTJo27dEUyFTyTRxaOpZCyUGh8P0dkwIkxQU9
HIj8m4C+IOCsIRMy6WQqhTR8GKWCq7dKgFUlzVSy6CM0vG19cU5OjquuwTdq
9m5bb8/d1DcQv/PTU1OfafnTH0xVStXGBJVSoW5lhrcc2D2I4zKqU5Jzu3NV
o+vSM0qTMzJr6xsP+UzbuIz0rAJ9UkJCjr3kawUZ8vzC+zfn//EDbWmtSrKt
ImwTnS3LaCjlHpn79Od3MmK5/B+f/Mo3mXtSU2XrM3M3pMvDZ2rvvWOPPDFX
ijPTRGxFdl5KVt1+69fGMdZu26bFzI76er0D46xEQ7Lq3c0KV4qiQkY+k+Ad
SwelP5AUo0y0Q8+VSDDKE2GRWC6Ws+loXSIrzkp/TI775RjLExXJSKNduDg8
NERe03QDoaiD1qGpKB8mL2O5iJEUiJhUeG/WkgzQC16OP7j4UviV8CsvXWwo
b3r4xIkDB06ceLipvEF0e9gHa/M/29uxDCvwiYdmHQ2DJtNgg2MW7LItnZZ+
VXwVpaBefVVykiglLj4uRZLAiJJI68GShISZpCQ8g1LjZmQy0YxEnjKDsWRG
LE+aSUiQzbBIc10rvw5FCXcsf4ci9J4CR0W5RBWHVdVxuLoqDldlxGHpV8+H
uXDRRfxzesNXz4eL8M9HCHoeX8U/v0hQuIWLYBmo+BNrRFs+wWn8S0+x8i86
R29xhv7/vNkJeaxguqNfvSpR5KMhRixgPMzADjokwCKkQN8RYHEMjwQlon8S
YGkMXYYOReEkfAH9VICT0WbmFPlaKRaB/ETmFQpLyJd65g0KSyn9PQrLKP13
FGYpvEThOJBkEaUIMEZyyWEBZlCy7GUBFqEC2WUBFsfwSFCW7PcCLI2hy9Cf
2DgBZpGavU+A41BnnESA48W7RQEBTkCVcX0CnIgMcc8IcJLoaNx1AU5GvQJP
fIy/CcSXpHEKJ8bQkwmcNEthOfEl6fMUTgNYkfQUhdNj+DNoTHhYGUNfR+e+
QOFsqouXmRPDszEGLqD8PFxK4Z8QmI2xmY2RnxhDTxTsf4arLC+v4fY4x/ze
gNcW5Jq9fp/Xbw46vZ4yrtHl4rqddkcwwHVbA1b/QaulbJ911OL02AOcM8BZ
nUGH1c+ZOb/V7gwErX6rhQv6zRar2+y/g/OSkRjUtrYazunhQAzX53EGYX5P
0By0Bjizx6IBAV6qYMw77gn6ndZAWbfVPu4y+5cFRczZa/UHiLDqsvKK5dHA
uM/ncoJUm9cTLONM3nHObZ7ixgNWUAkOEDIX9HJjfitoVXMWZ8DnMk+piXrO
53fC6BiwWOFpDnA+q9/tDBIjR6eoyS7nmNVDZMFAgPgrADaiQU2ehGvZHJ/f
axkfC6o5EkuYqyZzIgogDBMO55gjxrIJUOr0jLnGLRD4qPVej2uKK3Fu4qzu
URLwKDtIuJW1lJ0EC9IVgHCOkegvK+DzIMiqpxEocYKWoNVNUuV3glaLd8Lj
8potK6Nn5kMFiYpmzDse9I0HOYuVuEl4HFaXb2VEobw8UwI7SQgIhPg4nKOk
DMocwaBvu0YzMTFR5o7Er2zM69YEp3xeu9/sc0xpiP6ABnXAJs2P3MgMP+Y8
aAqwUTSFk5AV3Q74NbiWx3tQEJ4eZIG7H5rRF0Tzou+LXobru6Jzom+gZxCH
yBegclQD0B7kRGPA50UBuGwwl0PNVJqP3s1AcQLkQWUw0gjyXfDsBpodOWAs
QDErPK3AfRDuFuA0UArh8VAKB7AH7hWoDs5agMx0phmuMZBOpJrBp2WNRBKH
JijlDoBGAQ8CboXTs6bdxVTiXqppjHJFfPHASWJhpRo91B4ORr3gI5HkpfEL
Qlx9lMeywno/lduDxunY7qjnNphDZqmB2kblcqiTWh8UZnkpLaKxhVJJhizU
RiJtH+BEG4ltL0i10kiRPNqpDVzUbif1x0pl8RG10dhwNCajN7F6AmR66dMJ
uEPwmhNi5AKfLFS6KxpxG7U6KOiO5MhG4SCVZIY4cTTmHLWNt8hPZdqBZqde
+kAbyVCA+raP2mgReALUggC1xiHoN1PveB1ugNw04/6oppvlm5e8bDXRFlt9
fH2RSPHal+uZ1NTUn62YMprdSEZWRjnwCWXcukLUt6yuT14/+4Q6iPBbPhYF
YvE4zA+uEYUeWnc8xUBlOGG+S4hoL2gmFvZG14hDqMhI1j9pLAnFDTJcdD3z
ldwIOKkfF+1MdTQikU5RRruLndpNpKzVr1ZX114huhEPq0FKOUi8WRVa4clX
ol+odz/V6aT1aKWYhVarX4i3m9pyB63OyJy1R9eu3Zv12EifjKyLPpqHSJx6
hMxFOgPJs0awwBvjAcn1OM2An2aR5HAvXKursgdoa/WzNqCvVactQI9UnIOO
+tB2sEADXYGcZeD5ak/LqDVu4OH7qzemP0wBdXnlav4qmXxdRnq3Zs1Yk6r3
0ZpzxvROD5XEIRONFkezRmp4nL7L+Bzw9RHhjnTPMRo/PhNqutIIn49W6BSl
RNagT+iLwegKDEbXBt9dfTTCbprlSJ75tbTcG53CiorYxc8IRKtvJcUW9UEd
xSOy1oqOj+IWmDMmvM0i73JerzqqZ7UHfK1OCJ3ecZOYTQiernznWNaMPZnj
olAJ8G+ia5N/E1huIt0Z093+8tguS490BX7tB4S1MxZdmWt5ELtaV9pVH1MD
xBPelyDVF1nzfMebovXjhSgRz710dd2q9swrqiryhlzdAUhUyUoapzOJtZFs
RuQ4aHf33bJG+R2fR8jMsvTICnEKUSb1Q+wdjfaqspgdq5lWcAR/l+5grSt2
tNYVe1a6axXniivE7eIWsQ7udcBtBg9IbMhOrRE4/EKHM/PfAOgR/h35v31r
Hlh4kn8HZiwuj12AxQEeVhN4IDDlJtd/A8LApf8NCmVuZHN0cmVhbQ0KZW5k
b2JqDQoxMTQ5IDAgb2JqDQpbIDBbIDUwMF0gXSANCmVuZG9iag0KMTE1MCAw
IG9iag0KPDwvRmlsdGVyL0ZsYXRlRGVjb2RlL0xlbmd0aCAyMjU+Pg0Kc3Ry
ZWFtDQp4nF2QTWrEMAyF9z6FljOLwZlZdRECQzqFLPpD0x7AsZXU0MhGcRa5
fWU3TKECG+T3PvEs3XaPHfkE+o2D7THB6MkxLmFlizDg5EmdK3Depr0rt51N
VFrgflsSzh2NQdU16HcRl8QbHK4uDHhU+pUdsqcJDp9tL32/xviNM1KCSjUN
OBxl0LOJL2ZG0AU7dU50n7aTMH+Ojy0iXEp//g1jg8MlGotsaEJVV1IN1E9S
jUJy//SdGkb7ZTi7H27ZXV3b4t7fM5e/dw9lV2bJU3ZQguQInvC+phhipvL5
ARu9b2kNCmVuZHN0cmVhbQ0KZW5kb2JqDQoxMTUxIDAgb2JqDQo8PC9GaWx0
ZXIvRmxhdGVEZWNvZGUvTGVuZ3RoIDM1NTUvTGVuZ3RoMSA3OTcyPj4NCnN0
cmVhbQ0KeJztWX1sG8eVf7O7XK4oSiJlWVYjJR56bZ0SUZ9OzpIdJLQkynZU
XyXZsck4uXBFrsR1KJJHUnYUJIaKJnWOdoz84QJB/yhy/Yyb5LCSgzs5TXEq
2hgG7hoUbYoGxSF3SJ0ih6sM/REnqBtR92Z2SVHyB5Lges0ft6OZ/c17b97X
fHDWBgIAVdhIAF850NG9U3z/HwBICKmR6KSWrt565QVkziBtLnosRwO9PT8G
cNcBCOnx9MTkzz7cZQLId6PMoxOJ6fHDC9daAKqfRv4bcV2LvVvVcwfq+nes
fx1HQs0PHAuoC8fD1vhk7vEd/yq9g/15lL+YSEU147dH+wG8AaS9NKk9nq6o
kF5E3IPyNKlN6t9auvOfAWo/QB+a0qlsbmUXxAA2S4yfzujp2rc/dgO4zuKY
E8Biczj/8czguY5Ha+69Co0KsOd7//T+f7D3L/575W2AwrDS40xg183l2YNv
Z6IwDKC8D7B8TekpcYrP85zyK9gIAlaCrQfqoBfHfSA9in0CIqp5HhygSG9J
bwGI9cU3xETqBodEBKI48VmnGfYfoBQCS3RpSW4l34UuZ4KYM2tFKJ8uTpR+
aZGcPniV1fXavojPn9tX56nPp9v5azj7v+3LF+0RN0L0L+3Duke0a5O9y57m
PSB5XORxBPW4t0SQYQvsx72egVeWtiztX4otZZZeWVlBvg++bNN9S18u0ld+
Z5f3an5nl/eu28Wlh8hQvvnxMFovgFVyfOqQOjpvTN+zpvfgp9a3/jnzuUfe
4pEAT27Ms8TOs6UTS0ssu3gOzaysrM1eYEfPjru3d3d1drS3+VvvurPlr5q3
bVW3+OjmO25varztSw2b6jfWbaj1emqqq9yVrgrFKTskUSDgD6qDEWo2R0yp
Wd27t431VQ0JWhkhYlIkDa6VMWmEi9G1kgGUHF8nGbAkAyVJ4qH3wr1tfhpU
qfnzAZXOk4dGQoifG1DD1FzkeD/HUjPvVGHH58MRNNgQH6AmidCgOXgsng9G
BlDfbKWrX+3XXW1+mHVVIqxEZA6q6VkyeB/hQBgM7pwVQKlCr8wH1IGguU8d
YC6Y4ragFjOHR0LBgUafL9zmN0l/VB0zQe0za1q5CPRzM6bcbzq5GWqwcOAU
nfUv5E/Pe2As0uqOqTHt4ZApamFmw9tq7lEHzD1PXG5o88+T7x8MmRX98wQO
hi7AAyszs/tmBgbCzFptf+gkF9+E4pueuNwo5oMNBmXdfP4kNV8cCZVzfawN
h1Fpm39oNORDr9XgacrCGA3xCFApaehAJxmNhWkFrKtBRokcpWaF2qfG80cj
OFm35U0YnfbN3fZA4MLKf8IDQZo/GFJ95v2NalgbaJqtg/zo9Pl9AbpvLafN
P+vxWpmera6xgbuqHOglHkdcnCH0uphqwjxS9+ESMWmUoich1RS29bBG74F8
tAfF8AkTzKiB+YvkPTvZRDi2eVSavwq4ENTFP6ylaDZF3ua5Cgyy5VJacsgv
YrO11bzrLrZSnP04tejZfbx/T5v/mDmkpj3UHMKUwXAIB4V3dmDKfT42y6fm
AzCGHXNmJGT1KYw1zkGgozVsChHGWShyNj7IODNFTml4RMXl/BrfwhtNpbn0
V+Op3xCM7zRJ/S3YusXH7ROks5JjW3441KzlTzU2R/Knwzg1g7gV8/lBlQ7m
I3ltfmVmTKUeNT87NJRPByPFkOZXFk41moHT4TjBpJrbrWyYG/pDYqMQtpDQ
KIbbIOCGwUF0pdarBPbibm2a29uNLzGg4ftfsP491pNYv451AquOlfEexvog
1mexjmMdwxrZ273j+aPOrcoWhSp3KE3KbUqDUq/UKbWKR6lW3IpLURRZkRRB
AQXMDeKQMHSgjwyZC1EYGqPmRwfUeeIaech0qH3ErB2CoYN9DReAOBeeec7s
aTWFZ/kumycrs4SceaaRbTBkk5Vnnmu03+Ew1Lde/zRgIXPD0D2knYrcDoxE
ytgkaDA/hkOzCvSF+x+23ueFShdaiDT6wn31nvR93NwuX8OJxtfx3H4JKnHm
3XiUVGFlrLbdbbsZC++LjFXNThmb1XBil6/xdfKSzfIg2Ysxrv1R8PQ43uPg
ClPx2Z+VmzyfdiSHN7+xRPHGxovjkuMSjFkI32OMQ0awjeI9+SzJC18RLiPH
lobX4WPSwkuYXBE2I+dNuMj60pB0SDrk6GD65FbosnWV7GBBSSzvwkfwMSu2
HqYpgyWP5Q2yiOWKMMzLiPBNLJeFy+J+8TzqZxZelF6WXnYIWJgdCUu3/KpV
bFtvlvS2cK2nyGtMJ9c6Inyb68PbnFgvtot7xG+Ic+JvmW7UKDru4+UIlscc
J5iF1SJ3ycPyV+XfOA/gLfkJ+BYcW5dRHqPwVcjCm47HxMeFb5IW1N/OYhMM
csp5QNiMcXwDc4p+kDCMiXPwb/Cx2IS5+BH2iRUFWsLKIxTgXcxIC87BMMmL
9cJl+TfYuyJLZJFVYQRvWzN4BZzBWRDBCTTgdT5CpEfIIt5JJsAxIb4NHYVF
zyLcfwXbrs7tXp93m8/rmxFheUaAAjguXeuZkS7h+fUqychT0iG8xfgCHpDJ
k0LB8aQsyLIgHYGOxd7ejg7o+HD5sre3q3MD8fo2+rw4RDr0px8Kl0mm8M7Z
wju45opa9oDk3AKwAAF2A8RvCnkKfcTvvEAtiFX4JwregvI1AUiVgMGzKxR+
Sr/mltxHRDTmWcTG2wv3Ly96N6Hljq5O4qsgPu/dsL0bNnpVBOoW2Ih5bSmc
KZzBrBy5epUcOVv4ZH6+8An6cwaTLn9EHip87+ryNUGeJxKygHlo+1IDHc4t
jksL7Mb6Kjwlv+t4BU+xGjg/V+lyzZP6QKVA6gRXhUCq3G7eBwW/vRVXhauy
gvUxhDqxokYUaipqqpHSFKiVHHWS5BClCrG60kWEGqX6R6QRM1pJhEATeVmW
He8J4K4SlcerCRFQUXWNU/618jSGvLip9xEMlWW6YxnnqrfXW4t/mzDbJ6vb
W5WnPD87qbQ3WMCBoEhwICA+kdzD5oRs2OHb4Nvh+K9PzKcLL4iNYv21wAcj
4vB3PpkdJW8UfiJMnBXuLnyIc1WYukjyFzF2/G5z7sZ8CPjFvXXOQcR5dNbF
VhARJYckXCAUb+W/R9fu//0ym/ztFWSbj5wVD4mH/1hwHF4+yNZQVHoR5zkq
bBbOi+dwLdb9GMe3IhCIHzA8jAuXDa68qDC8bIrnCnzzbLXLHhj9M5QX4Nuf
pRB6izL4f17+9otScJ6ayVsA9rflE/ysY5hAPe8xLEC1KEPxi3SVLpVhBzSI
dTaWoU7029gJMTFQ+ka6KH7XxgQqS1gAp3TUxmIZXSrDDnBLf2djGVzSUzZ2
Qrd00sZV5KfSBWZVklGnW36SYyf7Vyj5WY4r0PBp9NnCVowWtmK0sFhGl8qw
FaOFrRgtbMVo4Srx6/ILHLuYD647OK5kPrgseXcZ3cPs2ngD4lrXvRzXlcnc
voqV+lXsLtPvLuo8DAYkYQK/+613FihsxxoDHbGBlCSiGFLGYBrbPk7TIQEp
OI79Zqx7ESdgko+gsA9HRKEd0TjSM/jej2OiiFLITyE1h7R+zkvzVkOKgSjJ
RzFOGm1luKU4lz6HtQt6sXR/Zn3DvM9QGj1MYiwM70aPE/geLVnJ8h6LQUcd
x3jU7Wtsd0KbjbqQdhB9ZBopHODxT5WsZsG/Jg83tvX/mf9LZf56W4wygXoS
6HEGDnFe1tZJ4R6U6MS5uX7GbkSjiFirYc3xnLAZneSaH0May9tnyuRhIzkR
w5ql22lMzxoTST1Gx6ZpnzGhJ1LHaTPdm0pM6lm6Lxltp+OpDN1vRDOpbGo8
R/tTmXQqo+WMVLIdO+npjDERz9FztKu3t/tmcsNarp2m9WSsne5OJOgoG5Kl
o3pWzxzTkchHd7Zh00UPTqd1eiCVmGJDs37LhxuNGtUnphJa5pCeyaIkvae9
c3spsFVEjSzVaC6jxfRJLfMYTY3fxMlVanYqnU4YmJLxVBL9Dqem6KQ2Taey
Os3FUR0j01yKRjO6ltP9NGZk0wkU0JIxms4YyIyihI5vLYtRZyaNXM5KcC6u
04QR1ZNMFTIwPEwuR8wxtOBnbya26k46k4pNRXN+yuLGwWxI0YCRpMfjRjRe
5thxNGoko4mpGMts0flUMjFNW4w7qT45hr6siqOGW3nLxVkiaUbP5jJGlM9K
yQAbXtK1i2egxUArOX2SJTZjoNVY6ngykdJia5OnWanSMyycFJrCdiqXnsrh
iuRRokxcT6TXZhRXQnLaFmfzgQoxPXFjzECf23Fts5XOdkYCd3IO3+yMYPsk
dsP9kcUdmsaSQJ51Mo7zHWKdMWHEU/hm+th5OcX3ONuDcXtHFqUZLYUt06/z
nabzcyPG5dL8FJjmOzjJraT5iWiNjNo6dLuvcc1pfmJMolSO81ZPbWadeZHg
8ej8jLK8skZYJ5Z1Wq/SiqeEFYO/1C9qu1F20rwfwzFR7Pt5vqwzzrJctLI+
AoOfccd5lqLY3jhjx+1IDX62sjM3Vjqn12eejUlw1ILyd+KbnX9jdl5upN3y
4fPmdlV78RSmfGaz/Pw1eD6Kvw/XR1C0fr1fu8rWAIvEiiXH7RVPaabfijXG
f5eT/PdZu2mk1srT1qwqnc9Lym6tqCzMftnSvLXuBatzaemJ8/tA+pZr1Pod
TNozs6q9uD8MO8ts9TB/x3imrbn9m7Idqpf1NL6ey/estWtF+1+cetj/JV//
/A+QTyHzDQplbmRzdHJlYW0NCmVuZG9iag0KMTE1MiAwIG9iag0KWyAwWyA1
MDBdICAxNDJbIDM4NV0gXSANCmVuZG9iag0KMTE1MyAwIG9iag0KWyA1NTAg
MCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgNTUwIDAgMCA1NTAgNTUwIDAgNTUw
IDAgNTUwIDU1MCAwIDAgMCAwIDAgMCA1NTAgMCAwIDAgMCAwIDAgMCAwIDAg
MCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAw
IDAgNTUwIDAgNTUwIDAgNTUwIDU1MCA1NTAgMCAwIDAgNTUwIDAgMCA1NTAg
NTUwIDU1MCA1NTAgMCAwIDU1MCA1NTAgMCAwIDAgNTUwIDU1MCA1NTAgNTUw
XSANCmVuZG9iag0KMTE1NCAwIG9iag0KPDwvRmlsdGVyL0ZsYXRlRGVjb2Rl
L0xlbmd0aCAyMDIzMC9MZW5ndGgxIDQ3ODQ0Pj4NCnN0cmVhbQ0KeJzsnHlA
VdXa/9faZzODIE4I1zh4wlREVDQjBw4ohJoJKHYgB2YxUSgcKuuK10zDbLyV
lQNNNusBzVAbtGzO5vlmZXO3LLWbmQnn9332sxbniGLWve993z9+Bz/7+6xx
r3mtvc8pIYUQ4biYwjk+I/cc0VXAse1K+IZOmJg0aPyErecKIS+Bu7BkdlH1
zLTSN4Tob0eCxpL5c+3fn/vKQiFc9UL4ZZZXz5g9oX/Oz0IMeluIsL4zKi8t
/+nbsV2FmPqNEGcPrigrKv1pZVwZ8joKzqyAR1BW8C/IfzDcp1fMnnvJ7bcM
/hHu94Xol1VZVVJU82j5WCFW/UWIbhtmF11S3d3RfTTCXYhvn102t6j/I4On
oLzXwz1pTtHssm86jZgpxMZXhAheVV1VM7flV3EDwkspfvXFZdUDol97Uggn
nFHrqKYiQIiItKeTp4cP/1kEBQr6bP88pi/pu9dvv/Hoiuab/WYFdoMzUBiC
P0jnd6D5gJxmlh9d0ZLjN8vKyecTfB75hLwrhqNdhyKdISJEktiMRl1s3VcK
m1kurxd+ItDvdr9kZBnLantDlBsiMMgI8Q8yDNNmmJ8Kfw8azMP3FWL8RLud
KmC/hssQMMUwCoVc98l7SP29XwzVlHIXLmB9SEEwWAumgNngRbAbpIMq8DDY
AlaDb8FAsACkqHSkD6q4k1UeJkgEkeoeVUp/D5TF8w4jRrQB5fN8cIr5CFUP
3/Tpyj/2FNI+7FPm1ayeUFV/qtfTbeIvUPxevmgrz2pVhrVcH6tOD7aJV+Vz
/8mKU6nz7D/QPsRSUK/6kdLOU/7TlD+1wxLV/2QXKP8pSvV4ofBU5UftHA8y
wTBwzx8oi+6bPooRSqmtDkJLQfEp5DXvFO95sv4nLlT1F6qOW7g8nhqfONVt
0ta30ZNBY9oNPaNN/BfbxNP3vgmrQxzSjFXtnXqK9TmVsviSrbj6d+Jd7cOp
xMtSwE8OgeaiLgHKpvt9peKR/xqfdIEmj0md37Q2bfRim3FBdori3xkHp4Dc
bJYbGAfS7eP/AzgCv9sBjWvMAxmooLiNiiSEvazYBfctKm2FKvsPrNIO8r0q
rjN5XdKK8Sj3mjyHgOeoF2mAlYp+wPTR/GPzFneBL32U5u5mBdJb813vF7QW
DlVtr9erQSbPCSoT7QF6r9ig6jNPpdV7hW4v2idoLCdw/h60gwf38izmcA/W
R89IZT+lxkq96udUVa7FKu+rlX+NsmnepKv4tCbdYPL6lWB617K1Kp8607v2
DFVlPMM8dk06hTHhUeuwbncaC+JzsMen/XQbhnIbeg6peuh9hNowRrVhVZv2
m6LKpsc3td8iUAYmAVofHKY1j6z4S5S/nkPfqv4pMI/dmx82veuNrstBlY+p
/BYqO0UpjbkrVFtS3G5cTk+LCtvgk2ecqo9u93rTu/9Q2YapNqZ+WgWWqTKe
61Of9aptJpneMXRQ6dpjy95anyXmsX1U4GPXq7ypPOnmsXvopcCp5pZaQ+VO
nlMiSNU/VHGh6tvuqlzJqm2vUOgxR+NqrxoL8crP5QPVGeu8NfcorFG1OfU9
jY3SPxGfznM0/jDGJI2Vt6B0b6wvkup5VI2J9V6ki8P/K2k7nwCh+pjGUIWq
o3YTNN5pfr/h40d11mdH6pOLVFuMUO2u53wfFZfGU29euy2iGM9hRrutNQ5I
WseRVkYrlLs1fIMaAwrKo9Utjg1r9VNptW2l8fXT54wUL1Yc3/3Nd5/z9Zut
qOR10/OasreztqZZ6sXKW7vbhLX6zTO9Z6x5Ko2vny7zFC9WHO2mODgHePZ5
7VbVawKt/xhLnheV3aDqMkzF1Upr/VnKbjOGZEfT2lete9L8HA3uABdzXeQ/
1PjoD84DHUyeL3QOpbXqdDVW7ld5jlRjaCbv5a1rb9szAd1X7+u/KQYp7m+D
Lm+wTxyfvIzkE+T/zR+zfy+ezPVxn4L9u/GoDgt8oPUwVY2JXxAnD2DNlZiT
slIRAgaosAlgOrgWhAHkJyNUWIQKw3OY7K3OUEc4vdXOhzm+MBTt7dOvKdq2
7aZjESiDB+NFFirmK1738dPUMOJ76BxwALbmBGWgOhznf1Ch51tfxpoL6/m+
lJ+kufAT9CJFA9Oaz7WsVHbL3aYcVAfxksJ3vSGw/8rLVLz7mLbtZt1Th312
grrR+vKxt72sdw+aM3xwKnSYP+KPUwxXnK/or8hRaP8MhfbvodD5DFPEKU5j
rOeKQO9YkXtU+Ve2YXMbHIrTGbpHa911W9BZxG7y2WOKTzidPeiMQusXrWu0
RtC5g87j203v+RnxPC+YvI6Xw/7O5PcElF8Vt5M1rxI4H2sNIX/qDzoLYC6J
CQp9BhmuaG9OtMF6D0NlO02dA1O4nTy/+OSt6zTDPG7tOiX02KJ1osL0nkfb
PgPrMtE8eILr56E52FOdNQW3IYVb7av2QY/H9O61a9vkN7uNtoeuly7b4BPE
Ue+JrPNMb/P4tXygTz1PpV1O9E6obRzfZyifOlh11v763H6itUbn2Qlpuqt2
1e/yViul8dZk8rinuPUmj2v9zohIML3vhvS7InoGofNZutJSFU7jXb+70O+H
7lH50fMvnk2tNe8PjFMx/yT9RnMvVLXLa+oMhHt4NrbTj/8ptvv0C43rdcrd
3rup3ap9Uk3vPD1Ptec9ap/rq/ojy0cpf1pHxyilM85pyn0TQ88vks4uOCvT
+wdrX8k0j3kvZJ0J25sPNJ7jfdzZCrLH++RTdIpto5/R6F3IEB4fni9M69zl
oeeG7j509UGn189v9ad4P1/ovdI0pSd4l9jyI8pwCetx5dVt9Tfz2Hdv7ZVD
v3OOP0FYe+9FT1dtS/00kdtGnwFa5xelpWf9beBJ8CYYpfp1tuk9Q1O47zyd
r0gz+X2JPmNQXkt84q1VZb/UJ696VSb9Ts7X1u9Z6NmfxuButQYVePFs88lH
PwdQmfuo/tC86AONpwcVlP9CH4aqPtT9QOP9StP7/pnWlgzTu77Q+J7L+4Wm
9fuLh1QbrFXlSza977OpPa5T8fv5EOsDzqjWWKUyqWdgz05GnKne7VC8c0ze
h6k+Warf7jZbz8VihyoP7RUbVJwrzNb10rNHte8Kr5/1rm6WgvYWer81WDHe
pz3uUX29RfXJV+o+q1Q5Zqh6vMr9Sc+3wq2ec/F8JVEP8RFAv1rvD+n8jjkp
LzD5POivnoneVXZvRvzL5PclGBOys4Kes14x+Vm6g4LeA/dVxAB67+k0rf3U
Oq/RN2NncH5WnjRunlXnuCMcT9AZ6TCnp3cLlKf4EHyiyjxWxf/OJ04fbxxa
E1te5j730Hc86nzYgjOyB890LThv0/z03Kf6E+OV3qNa4zbYbJ0THmrjcIUe
QzRGo8zjv0shFpve8Z3O5WjtLz0n55ne+Tpf5bFNpalnf2nnNpIYi7KLassA
BbUpxoQcqM7AKQqUy3oOo3cd01U7Evep+BHAz7Te48hkjkd9J143rectKzyC
29B6JtNMUPftpuiv4tJe/LjJz2s0V3DGlBN53Or335Ket15XYN+z3nnrdz36
rO77LNPm+Yrew1joPArb4DKt5xerzCO4vNY4mwTSjsc6l/gy6iQktUP8CYhu
h/R2aFuO9uKln6QcJ6JXO/y75WgvX0c7tFe+ce1wquVor51Pb4f2ynFeO7Qp
B61b1tqlxyTNs1KFemam9wOta4Iet/R90fxjsc5ytP5lmcefFdQ5Ua+ptEZa
7x46nCDuf4nW9yZ/NJ1+d0L7H50Nlvgo1ofmTqb3nExxaI0sUKq/w6lUSs8u
tM4MUs+DtD5KFUZrZhV/x2TN1/dUelpf6V36MLP1OxPrzII8WpBvSyTKgHWv
BX3YgjWkGft1M/aKFqyZLVivWip86hPcJs2c49M049zWjP27GWtv8zal2GOb
0XbN2EObcQY9uodpxr7efGkbN9bX5ou5Lr8b9wHQT+X/QBv3/QBrb/NX3vJb
4cj/KPbJ5nU+NtbqZpw9mm/itEdhH31T5YW1vtnn/G+lm6TSrT2B+3lA4zvh
9+N61Hs6/fuPtu4Tkv0nxu8ZPrb+DoL2+e6nlt7zobJ/7/vwP4l1psbe5Xnr
D6T5/CRh+06SdpC3nf9I+7X2yRl/MO1/APouns421vk4wuR5rLT1+9XVClrn
ac/R313T+wm99rT9bprW4DIF5rLna4bOYFa++rtanRfFG+bNw3qPJrx+Vhpy
+75XFebJf6/wrdIIVSaC1j86O9H7FzyjeL5R9083vb/FonJtUHWtV2Hrfb6f
3aLo6hOnXrWHXlenmd69NFPdb5kCc9VzQNFier/n1flQnIGm97tY+m4wVtnq
vU3r+zv9zkSj35uaPn76O2L9na8uU6aqL51h6V3HTeo7p3pVB/3dYdxJ2viE
COH5CMSbredvqX6LYJ1XU9T5daLqEzqf3q3qnGt6v/cVqoy6DYTpHWf63RzV
Rb83pHR+yv9E34/6QuOA9r6rTH4GpvFKe1u+TxidU55UYfRMqc8feu7sOpbW
MHruC/JxZ6q2pOedbDWW6SxGZxH9LD7W9O7Ruh9zVX3Vu1GrzyndJT7tMNUn
rlD9VmK2fgdz0nXuNlUPzEVJzxfX6Ty4/1pyVLj6DpOeB622w/Or9X3dZab1
nOs7Hj0t/DtJmSdHynBc6W+1XC3a+ch/ysuUedCzXvQVB9uLedLP1fh72LrS
37/7WSEmi1rRX6SLM1HCNVY5v/GqxRpV/uNs/fdvl8Lnw3dly+tnJJNLroGu
4XKCEXKpWIAa5IlSXK8GK8QEuFaIb0W+SIGuEUsQlinKRKbHI5ZasbLFZVb8
UjEb11SxSfTBLVJEprxF/CBaZIXYIIeK80WBqBfj1LUef+NJ5TDoXMtdj7BM
sASpt8C1xYrL/mQtEJ9AO4spIk0UyNtlIO7TB3d1tf6loASJIh5jcDPuN1ks
R5oK5LMaed6Ncs4WVaK7uAKucKuEA0UwfOgaDPc05PyU7C9ehV+V1UzFYqil
q5EHfarEYjEPJZkj1nle8Gyz/LqKbiJGxCH/3eJL8aXcRX/isLxdNMudcqdI
smIliZ5ynBwtx8sMOVyOkGNkjjxfzsa1QPbAtT/8kxFjhhwGV5zsLk+TvWQh
0vUSPa0cbIq/8O+PZSVcsGzFwpTZ8DhXOIWfCIUVhhSJqFUyRuAItO50UYT+
monS16Cn6sUj6KGtcqCxyWjqMarHmB7ZPXJ7rO6x3R5hr7bPt19uX2xfYr/K
fo3HY903TNiR2wDkNqQ1txLkVikuRuv65vYYcss6Jrd5yG0Rcltq5SY9P6Pc
A4UwhuKvxvOM3I+Stv55SkSD3C2fxcpSaVZ+O8X7t/e8z8LoT4jPQulP/c47
C4z909Oic6tlk4VGjlFmVNiGGdcYK4W/PGT5H2r7e3K4DfXrc0Oc/CO9OZ8w
eJqVCe6J64Wg0pjtG264fyf/iN8Jpzwm4EJzaam4SixTnius67XiOnE9/SIf
n7+Lm1XYbeJ2cYdod7X9P/Kx/Y/k+tL/n0V/6tP+LBLOgqVzay6+qLpqzuzK
WRfOrJhRXlZaPH3a1CkXFOS78iZNzM3JnnDepvHnjhs7JuuczIzRo9LTnKkj
RwwfdnbKWUPPHJLUP7Ff717xpzt6xkZ17hgRHhYSHBQY4O9n2gwp+mU4Mgvt
7l6FbrOXIysrkdyOIngU+XgUuu3wyjw2jtteaEWzHxvTiZjlbWI6OaazNaaM
sA8XwxP72TMcdvfu0Q57kyzIccFeOdqRb3fvs+zxlm32shxhcMTFIYU9I6pi
tN0tC+0Z7sz5FXUZhaORX0NI8CjHqLLgxH6iITgEZggsd29HdYPsPVJahtE7
4+wGQwSG0W3dtviMolJ3do4rY3RMXFy+5SdGWXm5/Ue5A6y87DOpzGKFvaHf
jrprmiJEcWFCaKmjtGiKy20rQqI6W0Zd3TJ3xwR3H8dod5/LvohClcvc/Ryj
M9wJDmQ2Lrf1BtLtFx/hsNf9LFB4x77vj/UpUj7+8RE/CzKpiq3NhHBtC5QN
JUT94uKoLCuanKIYDndtjovddlEc0yicSQn5bqOQQnbokC55FFKrQ1qTFzri
qKsyCtW/+RVR7tpie2I/tL71Lx7/EG5323oVFpdUkBaV1TlGj+Z2m+RyO0fD
cBapumY0DEhC/KJCVGImNUOOy53kqHZ3dqRzBHjYqQ9mTnRZSVQyd+dRblFY
olK5kzJGU7nsGXWFo7mAlJcjx7VVJHs+bRhsj9mULAaLfCqHu+sodEqvjDpX
abk7tjCmFOOz3O6KiXM789F8+Q5XWT71kiPC3edT3C7OuqOVCnVrE1tHppoH
xAfaXUaMLZ96Cx72TFwc6cMREIHuspzUo+nD7S4ZI3Q03EXFIOuYfOCwxY/K
oiAbJR2VFROXH8efkxQpRpXJL94d6JNXBDxay8T3abdoHJsK1MeeUTbap4DH
ZOqnCqhyO3E5DWoLdWOkCKTuzNJBtnjMXPgZyMbyol6MsrtFtt3lKHPkOzCG
nNkuqhu1tdW/4yY6xuUUuKzeVqNk0jEuDj+LXW4Rh2DtMEZhDGYmxOhutdzn
WO5WZ1ab4DE6WNgxXVBD/15jilacFTk4sZ+DSlpXV9ogbPE0uGMapGX4jVqR
756QkO9wFyc44qjkif0aAkVo3KTCUZi9mVgAHZlFDmw2mXVFTZ7a4roGp7Ou
OqOw4mzMlDrHmNI6x0TX8BirOrmuK2Iuo9JEinFy3KR0ZGWI9AaHXJ7T4JTL
Jxa4tkYIYV8+ydVoSGNUYXp+w+kIc221Y0uwfA3yJU9y2MlBOeXCEWjFj9nq
FKLWCjUtD8td0iSF5Reo/aQoaTLYL4Jv1Mu6kROns5Imk0OcOrYJv0D2q+XY
vVXsQIREUMg2ga1FWIH8aRDU5M5gP2egM8gZaoQZaFLyaoTPNsQNkmJTqAyT
MQ3IM9fybpK1DUHOmK1WTrkqZi1ikl9tqx9KTtF8MsL9uOJ53hrkFbg2hQrk
b10RI50+GJdRFRhV2GEy7KU0Ii/Pr6grzKf1RHTF6MU/6ZaOkcJtOEaixP6h
7mBHWbo7xJFO/qnkn8r+/uQfgLkgu0p0Ni3DdYUOLM2YQy4RI3n22ShLe5PH
M8kVtztmX34cZtcUUOByByVgu/OLH4t45xCF8D7HXVtSROUQeS5KGxA/piQf
M1VniChj3EHIIUjlgBiZVhqagUhUgrFW5LBMeGMxqc135yfQTV0z860ZHOEW
WY6zMfg5T79edKOk/LpIxyBrOcLsD45fRhKEsomJLvaJgRM3y+dGCghFyUsc
CCoptPMYmYjZzdtHcAz7lGEXMHuVWQTHqEBB1bLFh4QFu4P6I0P8IzukP61C
fvEB+flceMu1TEXAvSPcIShRL5+mVAnQOggaQ2XBv2UoKkXdSdnkNIlcxyVY
TKnQVk4BCHaHxY8pwn7H6UPg4zhLJw6kZTFE5bGLfQOo5qFodywJTZ77HJfG
+XywdtB+SONPxGyl/zI3v66th/uChMR+gW19wyzvurrAsBMn4PYKDGtVy9OI
L6F9AkoDzhpv9gzaPB1jG4zzEiyVltaNdWBPMeIJHH1smD5x9tJ8ioUiZ1tr
WbuRpE8k2ritzOsihmmXVC7uzDr3jGOdFa3OTALHw/j+fKpAVWitxVi5MMZd
iZGpo1CP2OvsEY6zHXSxEp9DFKKTWqcFhj9GHU2a2hK7qxiDHRlmFtZl1tGh
taRINZu6k3tOwjFZYl5IDB5kRNVx12bbC/PthTisyhxXXFwMZiPUXo6Tq6OI
toJsrk92gXV4KaqjIS5wdsmPcQdgqyovKnPEYU9x0wrErU9lNNW0ETF1dY46
tzVvMxEZ2feiPYcE/6oTHEVldKgupzN1mZU2E8W1Wodyi8lwYC6XwdtqSzQc
lr5iupTU0ZF9amECWqJjXWSdPaUOS/BU7B5mr5LJhdiqaEeyW11dFAMXGmEM
ufKREUcMiqeIPAWoNLMTGqYGxHt9rH9VCRw50MoVJct1ubN1FGs+kXFRgtvo
dhYCqfIyt8Cl1ykbBY9B8zoxqmIotd1tTHKp7rHSj6GkMbrDOBl8rD1Eza+G
eLk823dvmuLuPi73ghg0bKIQaXbjTpFo1Is8kWrchZ1th3Vd53OtRqgUSXQ1
ViPuHSLPuB16G9LYDdvmoCg5Fq1qaENqQyhDerTRoo1mbfymjSPa+FUbh7Xx
izYOaeNnbfxLGz9p46A2DmhjvzZ+1MYP2tinje+18Z02/qmNb7XxjTa+1sZX
2vhSG19o43NtfKaNvdr4VBufaONjbezRxkfa+Ic2PtTGB9p4XxvvaeNdbbyj
jbe18ZY23tTGG9p4XRuvaeNVbezWxivaeFkbL2njRW28oI3ntfGcNp7Vxi5t
PKONp7WxUxs7tPGUNp7UxhPaeFwb27WxTRtbtdGkjce0sUUbj2pjszY2aaNR
Gw3acGtjozYe0cbD2nhIGw9q4wFt3K+N+7SxXhv3auMebdyljTu1Ua+NddpY
o43V2rhDG7dr4zZtrNLGrdq4RRs3a+Pv2rhJGzdq4wZtXK+N67RxrTZWaqNO
G1drY7k2lmnjKm0s1caV2liijcXaWKSNv2rjCm1cro2F2rhUG5doY4E25mtj
rjZqtHGxNqq0MUcbs7VRqY1Z2rhQGzO1UaGNGdoo10aZNkq1UaKNYm0UaaNQ
G9O1MU0bU7UxRRsXaCNfGy5tnK+NydrI08YkbeRqI0cb2dqYoI3ztDFeG2O1
MUYbmdpI10aaNpzaSNXGCG0M00aKNs7SxlBtnKmNIdoYrI1kbQzSxkBtDNBG
kjb6byIjbahxlSg1lmLfErhKYwlcV8L1Oq60w10pqsBGYEOMv8Fvv3VNwnUj
MHBdbO2IuBq1SL0IqbNxrQWGiMDVCaqBzbiisTQtr8n4a2OaJ3arsdC4vLE0
Njytn3E5dtrLcafLcZeNuH4CKO3lyHm6cRncl8E93bgU1qWwfjQuQcj11rXK
ukbQ1ZiP+y/A/SNwtRsLnPOMi2VabJUtLXaOkRY7M7Eib0ZieV5ZYmleSWJx
XtGgwrykwtRCY/qgaXmxBU8VGNUFnxYYkxPz8lLz5KTEiXmpE+WOiXKd9S83
MScvO3FCXvUEmTRBrsuS1VlyR5asypLOLJmZmJE3OnFUXnpiWp6zyZjTGBSe
udWoNGY1DoqFe5bl9uwwyjcFhWa+vt2oQZGdxkWbBg7NRPBFjX+Jy2wybI2n
9YzFqYFFNvboDRGWSA9LC0szy1GW3xr/kgA5wvIry2GWX1gOsfzM8q/GmCTI
TywHWQ6w7Gf5keUHln0s37N8x/JPlm9ZvmH5muUrli9ZvmD5nOWzxuizIHtZ
PmX5hOVjlj0sH7H8g+VDlg9Y3md5j+VdlndY3mZ5q7H7MMibLG+wvM7yGsur
LLtZXmF5meUllhdZXmB5nuU5lmdZdrE8w/I0y06WHSxPsTzJ8gTL4yzbWbax
bGVpaoxKgzzGsoXlUZbNLJtYGlkaWNwsG1k2sDzC8jDLQywPsjzAcj/LfSzr
We5luYflbpa7WO5kqWdZx7KWZQ3LapY7WG5nuY1lFcutLLew3Mzyd5abWG5k
uYHlepbrWK5lWclyDcsKlrrGbudArmZZzrKM5SqWpSxXsixh+RvLYpZalkUs
f2W5guVyloUsl7FcynIJywKW+SzzWOay1LBczHIRSzVLFcscltkslSyzWC5k
mclSwTKDpZyljKWUpYSlmKWIpZBlOss0lqksU1guYClgyWdxNXbNg5zPMpkl
j2USy0SWXJYclmyWCSznsYxnOZdlHMtYljEsWSznsGSyZLCMZhnFks6SxuJk
SWUZyTKCZTjLMJazWVJYzmrsUgwZynImyxCWwSzJjV2yIYNYBrLnAJYklv4s
iY2dsaTLfiwJjZ3iIX1Z+jRG0prcm+UMll4s8SynszhYerLEsdgbOw6BxLKc
xtKjMWI05C8sMSzRLN1Zoli6sXRl6cLSmaUTSyRLR5YIlnCWDixhLKGN4eMg
ISzBLEEsgSwBLP4sfiwmi43FYJEswumBEi2gGRwFv4Ej4FdwGPwCDoGfwb/A
T+AgOAD2gx/BD2Af+B58B/4JvgXfgK/BV+BL8AX4HHwG9oJPwSfgY7AHfAT+
AT4EH4D3wXvgXfBOh9zYt8Fb4E3wBngdvAZeBbvBK+Bl8BJ4EbwAngfPgWfB
LvAMeBrsBM5VO3B9CjwJngCPg+1gG9gKmsBjYAt4FGwGm0AjaAgrjnWDjWAD
eAQ8DB4Ky459EPoAuB/cB9aDe8E94G5wF7gT1IN1YC1YA1aDO0CTsdxZHhYX
e3toVextYBW4FdwCbgZ/BzeBG8EN4HpwHbg2pC52JbgGRETL6ujaaKO6e213
IykqNWpClC22W1K31G62dd02djOc3WJiM5fanpDW/2JQSHm9mJQwrinAkzvO
HZh9gVsud8dPpKszp8Dtv9wt8goucDVIeW2+9e2AuyN94WO5l65cKXqkj3P3
mOhqtNXX90jPH+euJdvptGwP2QJR8hNczvDqzrWdX+/8aWeztpOsj5BNnh2b
IvoNyIQ6e0bE9sysDpdPhcvrOqzrsLGDbWOHpzoYT3V4rcMnHWzODiPTMxNq
5s6rmZeQUFNTE5MvE2rmza2pmSsS/u9/5P92Af5nPmj6GmWiS+aiN2DMnTsv
YS6kNQhGjfrMJddcy0mRaxL466c0j2HDM4YBJBCiVHpAC2gGv4Ej4FdwGPwC
DoGfwb/AT+AgOAD2gx/BD2Af+B58B/4JvgXfgK/BV+BL8AX4HHwG9oJPwSfg
Y7AHfAT+AT4EH4D3wXvgXfAOeBu8Bd4Eb4DXwWvgVbAbvAJeBi+BF8EL4Hnw
HHgW7ALPgKfBTrADPAWeBE+Ax8F2sA1sBU3gMbAFPAo2g02gETQAN9gIHgEP
g4fAg+ABcD+4D6wH94J7wF3gTlAP1oE1YDW4A9wObgOrwK3gFnAz+Du4CdwI
bgDXg+vAtWAlqANXg+VgGcCzsFwKrgR4EpaLwSLwV3AFuDyNrgvBpeASsADg
qVPOBTXgYlAF5oDZoBLMAheCmaACzADloAyUghJQDIpAIZgOpoGpYAq4AOQD
FzgfTAZ5YBLIBTkgG0wA54HxYCwYAzJBOkgDTpAKRoBhIAWcBYaCM8EQMBgk
g0FgIBgAkkB/Ufq/M3P/U5/8/+0C/Lsfa92alxAlhAiotA1tmdLm11+5olzU
iDpxi1gv3pGBMhnjoEYsFfVig9gpXhL7pb/sIc/9078u8/n4xYhIITw/tCzy
/Obp43ew5cuWKf7dPP5+73k6277nML+lIrSl3HOoZVHLB54+5jMtUzzCv9zT
x7PfcIpAnYO5UETC77Bfud9Sv/v93kC96PfKImDtnyjWeLTBdFGGdrgQVIpq
6BQxVWAuiZlwXYT2mCvmi0vFZWKhuELMEQugfxV/E0vEVWI53DXw4dBFYjF8
l1m/u75GrLR+pbkYMZfCbzn82Odq6HVWXMqDf9t5NfrAm+YGcRN6ZJX6PSf9
zvNG+NDvPG8Rt7b6rxZrrJjH+q8+afy1Yh369k5xl7gHPX6/eBD9zH5en4fE
w2KjaID/XZbPBvEO/vaKFvGbOCp+FAcwToJlpIzGaBkhx2P1KBMVVitNQavN
EfNEFdqrxirHIlGLGlLdrrDaYJHVZtQ+XMrF4krVAsutNvC2wI1W+VehFFSu
m1AHKj+X/W7Lj+t3fO0o9N7W8BPV/67WOA+gtm7RKDaJzWKLeAw134C6N8L1
KOz7UPsHVIs8ghA3WoXjPmrFvt8nbONxoU1im9guHhdPYCY1ia2w6Kr9nhS7
lJtdO8Uz8HlWPCeeF6+I3Wjx92C9IF4Wb4g3xVuW+wPxmfhBHBGfiK/RD3vQ
J1+Kr8Q34jvxPfx/FPvFAXEIfXQUfXUUM5f6KRE91R1zOB69lfKfmcn/lc8t
x3sZxfIV43BzS0DrKob5f5NthIFaefZj9E0R17YUwjvUf4B/iN8Rvx9FiN8Q
EewXY7zqOSTf8v9CBPl3Nrt4DonzRfHvFaB1vSrHOFpNKxRWJyFM4cKlA0Jt
IkDEioHiNvfSBNdW4ZC3NSaGh9Gr9YiIwOiAJ7EdGqKTpJ8nSZnsjDCNsFUR
Eb273xbtf6stLdyOJ+7Nvc1b5CiR2vxx86u47ItMSdonk/bsfXdvxIHnOqYk
7X327b0DB8Q4u0SErapE2ujut1VG2/xvrUT63pSBM6iyt1Oat1Qil6jUhOhX
E15NTXg1AfkkDBiYLzvGdbTo3MFwBDjOSB40ZHB/w+EYkjzoNEMO6tqF/Hv2
N4YMHmmYHY6OtbmaTWOWPX1Gllnqf/H1fc+d5XT0mXlb2cCWpviBYd3skZGx
3Tp06BbrF3PkS7+Y39LM4t/WGt8k5qWdsfboksSs5JjS5JwZzd8lx6t4kZH2
qA54BBuIFhtitef91FbOHmGhgYEhweGRHW02If39wsM7dfYzowKiDGeQM7zJ
876ze3iQEWDaAgNC/f1DIjuGhaYFB4dIKULQWMnJSR2TkyDJqGZkt5Sz6JPc
MVKmjEhKTo7aNSilO2mEMqj9ov3azy/quAyT0XRxDpstwOawnWGzOTold+o2
tFOyOWRDdMiInQubRpjd7ne+5U4ZuvUDW5JM2dJ8WP7rpZatRz/xi2npvH49
DuXo+KWeH2w7bS3CLpLElVTrzV26BMlYetcaFndGk3zJGR40IPQVaRc9Zc+e
0facLk0S1e/c8dfo7H6HzFyRui+1+d19qSjS1MiUfTLi3b1v79qbgkFBFQrr
GfpKpbRbCTtbKTtUdo7u+GtldLbZ71AlkmM0pCY8l0DpI1NoMMSd4e/PnX1m
cvKQwb0cPf0Dhoy00VDo0tHm6NnB6NL5NCN50JlDbfFm7gNTJ182IX7vR69f
PC/vXldcTkHxoAtuLDtz4560acN7RPZ29h9+x+RlOVn9xleMuPUhV/6sXo41
od0iQ3rnXj6p+Vz5YvSAUX17DOkTNWYC/ZcUaz0HbQ/bjogeooJaojFcdKOX
1P6ndWiSQc6gReEyPPLXkGzRJAMeq+4he0QfsaH+ze9O3WdduO6odkO4lSC4
Mjwk8tfKkOweVorKHrboI5U2q8rPWZVGbeOpsoIGdvKgrt269OrFFexq1e/h
0ded+0OLZ+xV26rPWz4ybVnWqAUFgxvWnLN0ZHx0d2kcXvB03biu3df3jE0u
rDt/y6N2O/pzNvUnVoDOIk5MoVo0hIZQZwbGoPk3OTuKnoFhflFHInJDcoIn
xv7sl00dmJqKKZ2i+446rhNiRUQdqeR4frE/VyIm9VVqKmZtCkreSZW5Y3JH
h+qyoVzujlQL/9mZix+tGjA1ceNq/zEPlkxecn6/xlnF6TflJFQkX7tO7q19
/upzQsPk+iMLn7ywPGtJ08Itm+bPlW9ikNConIda7MeoPE30EXOoFptCQ7ug
Fbdsiu3Sx0SnOLt06Ru7+zpTmmbf09+Izg57JzTgUITVG/uoMklWdxzYFbFn
rxqKUWbs7krEjj79DYy+0LB3KkMjAg6hgro/9GLU2T8gjioy0hjaRQ9Fqupp
RsCZWJXQPwG2/YbRnPrwXf1cuePs52wqXLxtQcqIeQ9WzryrKuVRm31UaXrK
tNF9/YyE+EFd/x97XwIeR3WlW7eqq/d9UW9qqdXdUkutpaVu7YvVkrwIy9Zm
WbYFlq1dssuW0ILxFmPAAWIrYMzihYBDgEeAALZlI2NCQmJMMhND3sfil2Q8
gZch85iH/Ow3ibCx1Zpzb1W3WrIJZN7M996X5++oq27duss5/z33nHOrbrcO
PitRamQPGq0Ld721Zd2PH2yq3Pyjxqr++syM+oEqLOtL+L9AsHspGegdkfUN
SgMLbislQkdCahkCEksSRLJJSYN8HKWG5MaQ1lhtpP7M1MHY/WM6yBsAWc8W
Ffn92k94QywTSWSTnKTByNfgjEyIof7MQQ1sfbXvgrgBLGtSXpIuyQRHA55e
MWYWTYbPod+g9Gu/Q4vLHIFkkyk54BDOzG0PXXt2716WMqXkOOIDKSZTSiDe
kZNiwnOIl2YXSFPN+xsshU6QQk6koD5klmGti2WbGAuBaYb6kIMSxDLM5jKW
K9Hkg1eVe/fiPlvAbitBWzKpO4jGOyz4HZFNhfApMxn0/5WQWaXK8osnffWG
SVe9I9lmr7M1qBqoBgo0GoxPEeYH22b/paIPPtF+wM8Cs088yfnqXYZJbnYl
S6QWsIhtli5X0AydOzYZNGPDFWfCR52O4SQas87o8vqdT0k0Fp3e6c1OOrxL
asvJLfE0NFmy8kK+H9P/1V/qVlvyV1VMbaXfLJifojbmtiyc2sp8/pOi+hzz
uv7chgJH+PxUMsh9GLB+B+Q2U/VEbjruFHoFrhQgr0ZpttCUuUHRoL0qqadA
VfA81+NJDvLx4qn5AhLtVY4UAanScRk8uyOsY4FSBHkOH5JkNNY1Zhx66uWV
K5xllUuzX2Y+fzp3gU/32vjU7fTOO243+OtLp7qxVt8G6x858GagvFSI12oK
HQOzlABWSC5PtV7R1Lsvs8R/8JaT6IBSY73CaepZ92WOFZwDmZMzmkkmooAx
7wkgKJBXbjt6O/fipvLI+Wjakg1Vtf2LktKWcPPxGYVHfr57adXdP90+8hac
d/703tW7V/vLuu9bvHoPOQOevwQ9khKem3k89afQEbiSggprZQYjrZNKKUOD
8iobARRsRtEsSDVCGVZ5lWOjmJJiPKr5+YCqxJ0fwfSXT7GrfrTyie+LX2WW
1bsX1TRlv8p8fnL92r97595N1oLmsqmtWMNPgD08BZzlUdv5WZWBjh23e+we
ORjF48d08nw33tztmf5pSKm3Vnu8k7oMibMeZj8bkj+leEVBK9SXJRFnBYo7
9VH6BOFbh+cfgd7g9ji9kxxfUSFRX+YkZAQCRbgCnPiBELldKd68OGzpcZTm
zWKu814JtDmBYU555jWubvd3v9i48uXm7XcaAn23zh9qyva2Hr6z5KHaxn35
FasKLKai7sZVW5YkIX1eU0VWglpvPGy1zS+3p3t9dmNwYWvI19lcpNIeMhqM
br/dnpGWZrEVLVyJMUmG0aokK/KfkWjNy4rEYqVSIYGQSSGTipBOp2VENK3R
aLV6Sq0SiQzAvVP+5vTHlA4+Gvgopz8OmRVapUYnF0lUKolMWieWNNCoQY8H
OFAexASjFxu9WWeiN/B9+iI4RKM4HU96ogsW9Ve1bOEbFprGcRzCMRwO5PgY
Dh9ElQ+/v9eRtPvs3hea9OkPb/9epqaW+fyaET3TzYXbmc+nmvfvQj8PV+0a
pV/BeCwEPNIADwV1hWivWzo+/T9CCW437XQjSsWIlDK5RCyT10kk4jqGETVA
XAnmLwARJf+H/EF/UHsmAH81jSvHaCSWMxqYkiQhh6O7EWnT71Of1m6/T3p6
FVWIS7FILBPhUiQhY+eWwmWklIQvQxIyOLobqetaUlASvj+SkCvmliLTay77
lgjz8EfCYYTgL4j/RGn/HL4U/tMnaFd49PewxmTOhe9DO8I7EYTB4W+hu8NS
jFpJeK3IAahZqPuJFqmMBgvl1MtQXJzVZhqf/vg4LD/0DbJxxIQ0ctU0yhYh
cbPBaLQQDQn4g+VFRYV8BFxUKOiH5XTQdjZwNgAsnyDV5aS+jpOLVdOcCFHR
FkhUHyQTjATBZJIhNROdZBCFIF4dHOEX8m7/9uEOm88al+vIXrZ4vjPcfyYc
LP6foBXfeuDMjlKafpJh48s7F4Fy9D5xmH4E5HsGfMRZkE9G1RH5tLAclNIs
kkucEuYLto4GEcdo6WWsChOBQvwBu3D6dOD8abIkUUtY5gsOylHSyxwBPD3A
u+WkpDzsmU0oiTl77RxdMHWO/nLqfbp2O33+4fun/JFYgPQtxAJMNBZgI7HA
n+m6vxQL0BC10HVfFwsIEQn2Ow9ADH8eoinsd3bNRFMs5QSnKHc4vAmpSfFO
M4XjIp08pDNWyxO+cNYZr3g9k+ZI/AhBlY4PiE9DQEA803FcS06q2Ti+njPk
TPiCc9Z5jVc4r9kzyZmjsSQOsdJ1wnDODa2EoFKHReEjZto/J8RCf5+8Jrf6
zhU54Zdo+tZVvkYXuzcSZUWiri83KeWupVtX0ckPT3Wu61ArAHEiPSAueLCT
lBKkNshkBrlRJWXkXyjrqCsG7SQzEygLQhLQcRml/AtOWWegrnAGRjsZs1zh
hUm+nnnm/FxepXMZixmXRCrIrzNPUn40dTRZDJAeOR6n1ebmOTG4Jl9Ia672
2cyX4wyTtnrJFTEzKRfYhY+WDA2EaWcunSHjcsRHqiVyQr1QnPkyF2eDiM1W
L5Zc4cB0TXLymEUXGRriygj3kRBfJ6w0sX+G8WLmDBo9emuLr8EpSNrS4lvm
Tlmbt2jzypzWuUNXj0V+hIcArccX+1RwsW0VfW7uEEZHLAy4dBKrTfAIxQEg
ziSCgZaSz4GBuO8oCnjgrFGhSenr5ebty9dK/dVSfrVUFEJ5IMPvIeY3UIuJ
DAYFXmqqpUYF6Nwy6kuDOqpxwjITr5JDWnLbQH0JqqaOUbU5mhbUCasx5vcl
jy9ufaQ7/+jwNsf8BfMTkuKsWW2P9YrE19QP3CdRGZQRPImezcZTowE8rwh4
Nn09nldm8Gz6z8aTDq9vj16ADK1gN78EnbDz65kxo1GO9FgMtcUit5njLcb3
kTgO+yRFSAY+SVxv+zVVN/MkhhjT03hWR57DKCxxxvc5XElOaql5TySup2y/
5qi6mKcwvJXlg/9IRCchFhfW+XnofbGnprmzLLsjNXtjZt6yJYszUPpU7blz
sA5Ir8qyyKUvaAxxOUvzp/51dJT+8DsUH1Uzn4M0Vmo5Wcmr7DSsz46csNpo
ibVBOY6UJ1T6aUk9wiE1LwBWkSItHorjuIwKF4JVrEqin+ZIQRxVE3ZnlioQ
dJqymJmoOqOlc3iRuaS00OhcWFGgDXFrlnlxaJ23NMfCylTSlzVGtdhVtixn
agfmsh30BmOeTe3DXB5XKMSZHjEGXWm0A+UEPGKfJhODp8+ifPXxX9gtk4n1
yisK2aRmxj6Vn/+IuA6sTcSZFZ3mh+A4rp5F6sdzWVTIV2+P/4KzJ1omucR6
hfIKp9CAw9PEGKpy2/kzUR9CxMK6dr2qBYjsBdERY/x5TUtqMm5tWVbpbsnD
ite8RGFW6RK1eWtqS7S0t3ZFFz+ATKc5pzY/PL6uw/yITBGZ2Yh+mDZlVecy
WQuz+QEFfCB+eo9ppYcohkohz8YYxJxEUrxZegL5z2JDjJhxJD3CIcrCP0cB
D8G0Tr1AN6P3nqGmp5GUboQWJmkJ+U2SeygavTR9gR4Du8HAmjW6Rvw9XMrQ
l0cNtGgcpRxTN1LLsF68i/z8EvEYHVLjO2McuYU1wfauEEHPfYpBH7QfTFhn
z3abTO5se3y2x2TyZLO7rn4pEl+93eTJsUdu2XM85OkFFe4WdYcngQUX0QKG
Zv6MlsPM4mU8jpg/c3BtKY9IKOq+ehBqdD8EPg7RzKtMJ5FHQpXx8ojQZ3DB
oM9CcoqSQtizDOGHH2fLzxJ788lHWKQTODtEHnnY4I4gTBJ80O/jn3HQ7XBg
d4XT0Yf4g3+ZZCWsrtVsJljcJMpPfZtYOosL7xWVp4DBGz1mlGebTyE7lUIl
o/iQzuIyWlKA2PQLmg7HBbaLxFx6rKJw0E5o+cVgUPsJjlmPpJjxxjrOkjwO
lU1cpLIm/QKn6WAdFzhogJiMSAvpN16lp3hRAoNtd7Ixzoz42SlSl245vqXv
pS2VZZtPbMbnV1lm6pwmq2JZ3vz+Wt/UC4ih0zRZocYgvqRHH/viSFvdM+GX
H7sM52fDY64qZ7grd2W5u/Lut3YnznOgA8GmMlflPW/NwsVLlVDdZAwLMgsy
jQmn0Cj+7SUCTWnqOHKFFIEAawU43DNw+CeEtTxZFWMkAqSoloOyGiuR3h0r
vf+bPJ2YGwBiBHjJowg4Fg4tx9ImLODP4Q9tWS6DwZVls2W6jEZXZgwMXxxp
xzB0/uSRlqq739rR9ea+FkACyY3uLJuVL221ZbmNOOqKxSM6w0bJU5hR8hQm
Vv5ZT2HmyvpNnsJ8vVxfKwbMwftAwT9lk2C0yFP4Y2KEfdabIYWEYRRK8QTL
Ipj/8cek7TKwOLYjqBOvXPjhI5Mq+Mnp88SNy1jxBAfFpbj8cQ4qYBtlO8pB
FX4dI4xgEo5mWW9yUJfEfHrt71F9+J0QOnwQeZ5mXn/hkd9d3YltwzPTF5hz
gGU+9Tgfvyagh0Mqf8Ds95j9frOHkcHM2xty6GQFAcs7uoJXzMhs9hUkX/Ik
XfR1SP8kU17EQAuOQie8MMG+7qNPdGbQNz/k8aufpIDZ8g6nK8D1PcmXOI8v
6SLn65BJ/8TJWOVFYVB4N6Hj35wURQcounCMvkTDyVnvUYxiSQLDnFu454PR
2m35875T3b57ZWr2is3Vjz5e0rYg+a5tlXvqXUuXLnH3Prkuf6gz2FGXg0ab
H7+9Qi59QqF0V7aW5Nfn2x9MLF6e37fWZtuvNKgkmU131gzsz5Rm13RjtI4C
Wu+x+PfKBnm04tHqE2YbkAJgOhVSGRSuuAvx8S77JUu7fBxZxxTqKD6RqfgR
PxF5UDTxcRc4qGCxX+Is7Qpc5zVOwapj4ZgzI2eQSHG7cRCjw+Iz7zXt+8Ww
o6qy3Jq/e1H9XS3Zrzxzmf7p1D8Nth7dvRw93XZ4KMSwYtGTKmXKoq7yLf30
E/vDe13LH8QzaivMKIrIlSc8bbZl4K/LyfV6ORl/k0uenzFh855xOPKtrOGS
vj3nnaiBwXKdjzx48/PWNhRvy5jgbI6Qw3uGI5X0hkucvp3NeSfG0mDJbNqz
c+ahKBg0kZBHwkeckSkpiUxJquLOH/Zwzw0U20o7H/27XTv3jLw0PE8qKn92
bcejHYETjnlrKlNqa+bHexb1zi9as8CLnmx5cqRqwYO/fbTzjee+01Gwv7D7
oVVpyZnFPQ+1lbZVJautTv3OH/VmJFf3RP2QaBTsSyKVTu3GeJwweyxukdF5
Cp0kBvckGNwM8EU2ykO5kQ18kdNo8QCx3ouaHvvFr/JFWjwpsAn2mMmctbjh
BM4oUlvjvchpelj7xb/CGfHaQJwRH9mK1KFtYyNdL25bgM+9L26tGmeYqf/l
vKO1av2StKnXGRGtdt5x23yuJpWu3PKbp9dU7/vHx7ac+37r4n3/8FRiuSO8
eXFLHvf0tsQyB7pvcUvBhh/MRgV7odt5/c9Enx4rKMCOSMAlpABPlJjqT30l
lQEv4+YdEmDivhjjkFZHPRJZoxOH5I44JIKA++Jf65CSr3NI16EQXzXQhKW2
Vw0sx1CEz891SFE4Nv83Ho6VP9i2GABY3/z9bUsAk6vYHwmFbbP8kYBM1B+d
JP7oJPFHseLP8kdzRf1G/uhrxfpaKSL+SLTz6/1R91/rj7r/Hf7IBv7oWhLv
j5KYc4BlLvXAjD9SZFsyLR6PJVPwRladLC/5Anig1GzwSWYzm9ojvYQ9UV9k
7esHH6SFZIwf0hcR1BM9yRc4Tyq4nmzijkhtmfSS4IP6omthP7gf4XX213og
YWUseKDqR/77wcIN+aWbSrn9a9KxB3rjTeyBvjVyy+5F5d+r6TrUlzfcm9td
n/ObNU+PVErY/aw0pbq3orgp3/pgUllzfl+vxfxonD17xZbFt2PnU7uO+J4k
5j3RVrDR7VHfcxz7HpkBux4dJSOuhwXX0y1T81iciYn/9NF3Ikbe57DE53TL
iLPh5Y6OVVRkPtKd62qan/p4t7/TZwoWFtuxyY11NRfant++iGWeYEQiOqtu
Q/nWfvrV/eHt7qYYT9NNnpjxnsbiw193l2q1UifxNJQ01/e2JflMnNZuZ3UX
tev8M54GBjHiafQznsbie5uz2EP25DMcqaTVXeS061h/rKfB0cQsT0Prvqmj
+fCfHVUbf/C7B3fu3vXzuxeIRaWHO2fczNJbquJdC3oWzLgZlIwSOt957XvD
lY/X3fP8qsSU/FD/Y22lPTXpaotT/8BxLhPczPQ0dZbuYQ6wj9ESeg/MxVrI
+QO9ielnvws5o3wO0kOZVlLmQSEnGXLa2V2Qs1eodQFyNpGch4Wc5xiKeUt0
AXL24xxA/ey0lTlAVxMLNS9ioR4jFuqxkExuHde0uV9j1/AGyj9jn8Y5TRvr
fo2DWxH7lPw19ok5kLfm/qbFO1rzctfi8+r8o45AhSelIieenCuz4090HuzL
z2zbv77zEDkPNvSWmhMquqrxObGiC9uBP0ynMf10COzTSqIl2Do9EjIwYiRh
xGMiKTY4a2XMR7DsxnaJVw3kD54/o730NuZez4rHuEg5xHzEQUlijqJ7clj8
9EeC7VGQ6Z86dOF3xahw9y/P7UXvc/c8MbUFPx/QA26tgFs+NRSxRo+DRzP7
zSkpZj+Dg76fhAw6RYp7PCNgOQa2JKNNoR7HSMLcw1MPrNAZ5J9jg+JSMtzj
HITDxzi+CqseFzAmtbDhiYE65sVk1O5g0IXQN06wO62BtofXOopzM7Su/tJb
OaO/trhxSU5lqk7tLEjN35hpKSmvSHhktLIkpSzDbC5srUqmRWLRHqm0KNfi
tWt26hxekyHRrNKrRyUKKbt+5aJVNnlCejHgkAw4tNMFMGtbibewWEzUKVAg
DWVDbSGtzGQ6brOx1t/GrZUpTwrSC/vpznzyUWSzitFmOs5BuTjrbzkoySpP
RoW+zu7ESIztjonYnfainu8uT27LzWnL7mmPy6ktfJmmwwcXLti8Kjepor3K
JZfulanK8h1eixyNH9ivz2kB3b8AvG8C3u1UGrWW6FKcB/+ShFStllJYqbTx
0sQTcVYrqzmpXus9KUwD4kOQPzakNVoTT3C4oFpzklOvZb0noxODuIsZ/snk
EGyLiX85Luw3IE9WmU05K+6sfvIHGX0/untk54LVJQ5R/K3+Rx59eeESY3qq
S7l46fwlifPaq9wvHe16biQ0ak4v98plmm1bs+fhV0zcrRUg13PTR5m30GHy
XCaXvAWTi2B6iM6JmXP4ARY4P//p8+SZtEIsOseJEWLO8Q+ytGciT3rwGw/m
rWufMnb8Qap9Yf0+bJumLzIHmETeNlHnsG0CS9LPmHnbhHNgblxkWkmZB4Wc
ZMhpZ9S8bSK1LkDOJpLzMM7BO/OQj/mEscZyLWFYxF6WMJfnci1hL3MS4Pry
Dbn+5NozzG34Q397X1i3D7RUB/ZzOZtKmakWfrbK0b1HlUrTOLo3BH7eYo2D
C+2LEhoalXRQ5XjnoXYCv+0kEc1EwD9BXg7iYhLti5xQzkIKpuNyuP8b7SFB
ulFJQn5eQULP+qdygnp3Sob9KdbSkpBmlW/dHl6EHqtZILekOcMLgEuVyMSs
FL9K6amdRH6FSqpUKvA+TASrv6zjCh2j14Ni+kM6hBSMVKoRi5UKnU6pRIpx
ehfZghnEq2p/MKAjr7eB8SAIoivSBcGWCbsu1dfXtMyuioXh38978cEQNJsL
CoLMyh612LVhfo+bVnV6dnbYLb27RCZ0+KnbwpPTPc+Fe+hDV5cvv4qfDBrp
nzOlbIhyUKnUfTziDlR6TEWlusbRvDGDDKU6Xqd3UIn0fSEVpdQqnUpGqRRp
D5nfoLdRyfT9lIi+KzLZVk+UFxXB2E98cPo0HoajUPkUVFaS6jIOKpq1hzjz
m1BVRCpzpHp0iVDOP1OevdEyNjrD+yzFwi5E+jSdz5UW1AUsd48++mj+uiLf
poqSzuq0e7c21fiz81Zl0u8uC2Q4AlXJt3Gujea4YY3FEliSG16JLGVBd2Z6
JpZfDfIvFGfDSLqpzcSy4PV72VGJHSKyshOU0h7PsHEVCuBVDZzKQRoZvQnk
uZ9i8Q9okC2K4BiQH4SewDp/glRRx1WoiXyxtVhSjyM1hS2LUBVLTByxsGMx
umFxHs3vWFQDm5nLhqvLi+69U7R6R+Gyovj7CkPW9PQMW3xVkrMskMD8uXZL
U4YWMdeeHN6R0TCwZGCN3pPnQZRCHpfTGJFzDTuPigc5d/C7Lyn8xWyHW3QK
zYOgwk3fH9JrmESGxgc/M82IGEbrfBMYtgC7EjhrY0b6dpjjoLNTZFcp4x6n
7z/OQXmLs0JORMR1tKQWR+rNXgWKJUlxMRsZU2b2MZJYnFmD6HAxs6Ytvrys
wJi1bd5/ecpXN7CwCtZHD7C1zbc0SEQuc6q6YYVYrhD3qzTPP1oxtCKYektf
oHFZSw1EHp/R7zLbQKvTqCf4+NSIv29ucspOoRIIR9JQyYk1UExuSquQkZ9I
uR+0cRuFR8xBbztmcRrjsHobybjtoGY24pWDN/lg9YR26m34A9Er1FQaFEgm
TXCkEQfFD/yNGrLMbM4rJ9vLc6N781JutDUPLBSD0lXGOKtua1ycwmhJMG1d
x2qdrhRzbkiT4EqzlzXQ76JfzNO48lPDD6BfOh1KZ2F6+AG6Z8Sdk6AOLXAG
XLpVq8IhrAMM6EA7oKKBGGAxP9cpVDbm1CKtBZT9mNRwSDVObztqP8SOC0ON
1Xo1nspjKsMhDt8dY+2HOHJ/9mpXGMOIkzTxCsy0p9UN1ezdn1Y7XPPQgfua
l/krvLrmxmw4iiTVm5r93z9Yfcdy/+Ene3tdxTVpffgI9tVLv82kg7YmUpU8
n2Y077hYQ+kPKTCD8YeYGQaDxOKPKfSHOHxzjIk/xDGz+ItRsVl7wcgegfTM
3pyDz2Quv7Mm2JGWuiYzrbrAGZ+3JDtjdQr9qU7z5IFbNjVlqTVbTAZrsC6v
cGm2yWAEDsG4MMVsHiWjangPiHeviCCwxdhtO0ZLD6FxrDl4vR0Akxjkd60c
l7AMgW/bcRpJD3Gk0MzOFTSzc6V46l/RreEfoUvhF1Ef/W4bOrChJ7wRetZC
z6vYZJiyLdG9gCVwJUMlY1IDzeqhyWPqh2Ts6/R2GPVvgfb+iry69H8wAZ4S
m2W+0AlW/RAnC0XLgXLafiW8ukQz+wH5KBX8o7ZfVL553sZBditSO9LjAz3z
t7L2DeWFd4x4gwmqsuow3tXzHHD3E9YOJp8juKglCOJQESUSK2mKkZyCfqRg
83eMMfj7A9iz8CwGwZ+VB8uR1W85HQicDoBdxKy+ASZEqHEcalAzVYBbvEkN
VxJeS5E9agb4Y36y8OjBR19cdG/2E3f8MIO1Tx1DK8PP00vDGnRX+C50Ca9N
PkS/ZfYCnxZqFb/7CMXpGcpoMMgsVBzSM0b8e0mqveLX6Z0ChxPl2MoH8VY6
PXn+NxYpNyZW7eWiJcm+St6qM3i7lGvOdilm7/9Orl99+0J9gk7jMbmK8/zm
8B/3HPWkPQucXmoYqnHTG2hGmZDvA4633NqK7sFzt0akYOxiB9l3nh5SOveo
VLq0lFEkEiVAWDBm1O0xWcbpeyCyAI0DJicCEPNOZOegG31pIeJMvTHO9Md0
RmdOVmW6cfMdm8vKM5uz3e35OQ3Fzt47FpanBpzLskSm+T6P2ZufuPRWlz/f
oG9SGY2+8vTw4c+C6Q5fcipeay0VqekvxXawgY4xjX5UDRPynjGHbZSCCflt
gbcJUPSvmJI8J18mN6Td9d20xV2lvqUud22KpzzTtnJ5yhKXKFWtvPuu0o6F
KQpVi05n8S/IXL1CqwN0FgA6SeJ/glngpFJO2MyjKo1G8TqES3L67jF7wqiU
jWLDgwMsCJ3nzfa5+QV55EsCaEHaLZ0ltoC5t5Veus5/S8C+vjDPXZtuLoiv
aWLlFd0LPBLxuamctvXJVa3lrcsLSz9VKFbhkSoFXnwwUtjTul5z7BGJZM5R
PDZjStmoShsFYkIYIKNRkiQYoxs7Qx8Kb7f5K73ZHe6UdcHv7HJXri4ubClP
6mOqF81bwrJ+faLCW5ys18lq5fo92/LbqtNd81amzW+oX4D5WQGxqkb8BVgq
E2U/JhPtkWCFkWupPTAo9+KN+mfLCSBuCMqDeDuFgSxHCSf5NH0AoWfD1S8m
OjMynEmZmeyZ2nBdbS39iC8xwedLSPThcW+BPmj87TDKfEwkIz0cJe3fzW+h
i22dpvcjan945fPix5dO7aitxfUdUP8WwCyD8oYUcTKRbjTFbU9IsAKDRy1U
JGTGQxcE6AK4vRiPOWtfu6DbERWnP7MYFHqTVdcqUWllMr3RplvbKLLnpcR5
E3S23ExrRpIBQuN+v1MZn5kUHkfd8S6DRG7L8kB6uq04WxXvi88vMiQXJIf3
AKcNwKkRODVRSUeUMPl3hWQG7ShLswgJOsYvSPCmTxTlRnDwxIw2rBZlLsv0
VmXbewKZzoXZPWJjY16K2b/QHz6GKkqLM8rCR/G4ZYEeFUJPEJpRpqPmUQ00
fzRxlCUKBKBi1bnuTUKs6y1MWdheWrymyhM59y2r9pWk6JctTitJ1rOWko5F
qa6q9nI4e12V7ZVrViVArLymxRGYj8ekBiTV8/2fpPQgqEInlSqxqBQ1S1R/
oDwqa+wGclSzlsluzGpaK+ql09MN7mSftU9sXFOY3dNVFYSlVGJ4HPfTI1LQ
16CfbCo1JM9QOAxskmfU6cATRqoYlbCxlgOWR9g98YL/hb3eYmGrN33NO682
dV195urMwjKJLZjuLsu0GXKWVSTWpfoa4kuDMntOWlZFql50OLXIozWsUKkS
nEqD0aSS2z0BdxwsH8SyJrnMaVeC21eqHSl+4NgKyCwVG2HN4AzJRFoFo1ZL
9NJTMJlocFdYVYX908ApWZhJ+N3TBXh1ZmCW1txVpdaFti/uTJfpqmtr9VKv
2BhG7+UW/ApNh59dWvXHP1QtwltREEqAnhZBTwoq/jUpq6BFjExyivxGIBPp
h/Ti9krcBm/QDEs/ZtG39z5096/P7Bzdve2XItPPfoZQ+O23w9PQWgpTwZRD
axYqAUfE9L2vycSjcpUqTh9dkwqKy8ze58vv/WbKx+35lc0lKrdK4VKb07we
3UcjO2yOrcB9wcKuUCJCK2hamZDjATGO1DWgpdDnWpBADn3KKOsxCbMHRvNe
CI72UKRHEhxBdzNRjzzcjOLDn6O94X9BXpGpCm2svSW8n8L/mecvEjL8f0EH
gK7SrfQHPDElhEaYS6Jy0QFCf2QHBLos3idhJBX/ibT1/zp9OZeki6TvzyVZ
nkBbY+j8DMnnC/Q4TwrvfzBVKxoUB2/S3zCdBLrwzUi5RUWrblM9r3peXQ70
oiYg0I+1i7XPaC9qL+q2A32s7xJoo34T0F1AD+gfjqFDhP5kKAA6ZThltBp3
xdAxQm8Y3wZ6F+ic8eO/RCb1TboBtf3N05mbdJNu0k26SX+7FLcwSq+bc2bR
G+Y3LLr/B6n9/4iemkMXeLJWWg/epJt0k27STbpJN+km3aQb0oR1wpZm67e9
JtBnmOwye6t9n/19TPGS+LUCPRr/RvykwxYh8uOPPhSmIv+pvpMccRpRWnKF
0zSlpv5BSDNUCvUvQloUU4alLEgrpMUx+RLqzmhaSvmgJT4to5woVUgrqGZU
LaSVwM+TQlrF3I9+IaTVFP4tJCT8YGWAfUNII0rKXhDSNCUR+4Q0QxnEOUJa
FFOGpZTi+UJaHJMvoUqjaSllYn8upGWUVhzpV0Gli9cKaSVlEu8W0ip0WnxY
SKupfGkn9I5EMgFPPs3jyad5PPk0jyefFsWU4fHk0+KYfB5PPs3jyad5PPk0
jyef5vHk0zyefJrH84eUkwpQ2VQOVQippVQf1UENUv3UEHy6qWHIq4LUIDVA
jm2Q0wepjVQW3KmgOCAn5PdRPVQv3BsiV11w7oLzHXDshJJVpAZukYMWcJk+
cmyDzzBptRNKboDzILUe8nDP+E4v5N6Ypx5yPQJcRUp3wHkDXLdBT32Egyyq
Ec49UIojLV/fTrEgXSxvzYTzIUFKJ1UA7WQDLYF2OqhUUiYN8jsJb4tIe/2E
12GgAWjTD7SJUBZwNLfPLIFTP6Q3E1R7CAID0MJmyO2A/G7SN0ZzdquR/G4o
305QXx9t70YoDRGEBkCyPjISzmgLePRWEQSdBPfNcB4ho8bjzo9PpDTO6ycY
47HFOtBFZRAMcLkBgtxmkoPRx/0MEO74uh1CK13CNa8BAwRnjM8wuYdrtRM+
IuPOEYm6yOjwfPE1hsiYD16X0x2VIeMb6dAAue4k4zpM6kS0lu83I9rPXAn6
iGZsIjh1wPHGmG2K6vpGKMVBP53CfLgee1yHI6lUKI/1C8+HdgGXG7XO8/Dv
xXam9U7SUk903g6TkeuIzvMbSRDp/Xq+SmJ0AEvCyzJM+otYENw+L2sn5Gwi
kvcTG/CXdK9tllZ1kXHpF468VHx6hMyXEVITcxsZzUg7uCRH7MZX6yhv2zYK
IzPTemSG9AkoY/3B/LYTpPmx/Y+yAzM2wE/kwHMeWzJcs43Mujt/6Axk5xQ6
l/Z1DPYP9XcPO6v6Bwf6B9uG+/o3ZjkrOM452NfTOzzkHOwa6hq8o6szq6p/
41A/1zbk7BtytjmHB9s6uza0Da539nc7h3u7YlrqGewfGcDZHf0bBto29nUN
ZTV29YxwbYPRMsXOSGvNXYND0KWzICs7e8lIR2rbUJqzs8u5aLC/f7h3eHig
2O/ftGlT1oZIzSxo1D+8eaC/Z7BtoHezv2O4u3/j8JBQFKe729oH+9bjcjMs
DY0MDHB9XZ1OXCDLuap/xLmhbbNzZKgLeAd5cLZzuN/ZMdjVNtyV4ezsGxrg
2jZnONs2djoHBvvgbgcU6YIzADDQNbihb3gYmmvfTGTn+jq6NuK24MaQs38w
kujGPWRcj9C/NW4tOQjCQBQ9hOsuMWnwACYmxq2XqLTCxDKQ2ga5had1aZwB
5BONkdWEzuf1vbeYTStX6pB6KZhaqpVc8x4AKOoc0nyCrGbWMbVBkw4D+hJt
I2JYC1OcCMuYTh1+oW3TNWDG2noHKWs+DuDyode2ZSAGmuJNwQZxQFN1WaMt
lZ6zpzqqjOPrkHwcBF8FT4ryNTknN7aaM0puw6ZPZ0GoIfGTwwkIc/KPB1oH
bLQ5q2B9oq7Vrd9Ho+cjurdb3ue34CfQtN9Ek3PeKJfaYtbHq2sX7zjeuwKl
ODTOSrKnuUhxVB6//30BrXAOlQ0KZW5kc3RyZWFtDQplbmRvYmoNCjExNTUg
MCBvYmoNCjw8L1R5cGUvTWV0YWRhdGEvU3VidHlwZS9YTUwvTGVuZ3RoIDI5
NzY+Pg0Kc3RyZWFtDQo8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9Ilc1TTBN
cENlaGlIenJlU3pOVGN6a2M5ZCI/Pjx4OnhtcG1ldGEgeG1sbnM6eD0iYWRv
YmU6bnM6bWV0YS8iIHg6eG1wdGs9IjMuMS03MDEiPgo8cmRmOlJERiB4bWxu
czpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRh
eC1ucyMiPgo8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiAgeG1sbnM6
cGRmPSJodHRwOi8vbnMuYWRvYmUuY29tL3BkZi8xLjMvIj4KPC9yZGY6RGVz
Y3JpcHRpb24+CjxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiIHhtbG5z
OnBkZng9Imh0dHA6Ly9ucy5hZG9iZS5jb20vcGRmeC8xLjMvIj4KPC9yZGY6
RGVzY3JpcHRpb24+CjxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiICB4
bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iPgo8
L3JkZjpEZXNjcmlwdGlvbj4KPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9
IiIgIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyI+
Cjx4bXA6Q3JlYXRlRGF0ZT4yMDI0LTAxLTA1VDE0OjUyOjA2LTA4OjAwPC94
bXA6Q3JlYXRlRGF0ZT48eG1wOk1vZGlmeURhdGU+MjAyNC0wMS0wNVQxNDo1
MjowNi0wODowMDwveG1wOk1vZGlmeURhdGU+PC9yZGY6RGVzY3JpcHRpb24+
CjxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiICB4bWxuczp4bXBNTT0i
aHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyI+Cjx4bXBNTTpEb2N1
bWVudElEPnV1aWQ6QkM1NTIzRTctOUYzQi00MjFDLTlGRDYtRjk5QUIzNTg5
MDJDPC94bXBNTTpEb2N1bWVudElEPjx4bXBNTTpJbnN0YW5jZUlEPnV1aWQ6
QkM1NTIzRTctOUYzQi00MjFDLTlGRDYtRjk5QUIzNTg5MDJDPC94bXBNTTpJ
bnN0YW5jZUlEPjwvcmRmOkRlc2NyaXB0aW9uPgogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAKPC9yZGY6UkRGPjwveDp4bXBtZXRh
Pjw/eHBhY2tldCBlbmQ9InciPz4NCmVuZHN0cmVhbQ0KZW5kb2JqDQoxMTU2
IDAgb2JqDQo8PC9EaXNwbGF5RG9jVGl0bGUgdHJ1ZT4+DQplbmRvYmoNCjEx
NTcgMCBvYmoNCjw8L1R5cGUvWFJlZi9TaXplIDExNTcvV1sgMSA0IDJdIC9S
b290IDEgMCBSL0luZm8gMTE0MSAwIFIvSURbPEU3MjM1NUJDM0I5RjFDNDI5
RkQ2Rjk5QUIzNTg5MDJDPjxFNzIzNTVCQzNCOUYxQzQyOUZENkY5OUFCMzU4
OTAyQz5dIC9GaWx0ZXIvRmxhdGVEZWNvZGUvTGVuZ3RoIDI2Mjg+Pg0Kc3Ry
ZWFtDQp4nDXZd7zNdRzH8fO+17kX2ZRStrKvWYTMpMjeLsleiRTZlcjMKBGK
RGjJ3tdIZGalRCh77y1uv9/n9f32h+fjd/vtc37n9f2eE4kE/yUnK/g3YyQS
stLQFiM2sxH924hjldSzjUyrjMytjCyVoLdR4SejYV2j4y6jV2NINt4+bfQu
b/QdZwzKZwzjjzO3GQtzwzzYbCzqAouNxZzSkqJQC64YS8sZywoZy/sZaypC
EhwykvrAemPtMmMd57kpzthcxtiew9jB9e25Y+wraBzYaBzMZJxnnxdWGzda
GjdnGndrGvfGGw+3G8l9QxTpamiBkTKbkaqJkaaUkbaHkaGFkXGakWWGUc9u
gepPMhrtNIbbTdaIg8YYdrbmUyPpiLHhsHHbXkbdsVug+7VDYhLsDsYU62mU
Tm88W88oW8Do2MzoNMvolsWYMseYetWYPsHYZceL2WP3LGa/bR4bN9+Iv2yk
3m80txcnNtHeBbGtjxptqhid0oC9C2K7FDa6tzP62osT29/OM3bICmOovWlj
xw43xq81ptmdj50eY8yoYcxsE5JiQ1ZjV1tj91xjr729o4nZjQ72rEQ72Xsi
2qWqMWGwMS+nsdPeu9Fjq+GBcXwg3DNO9Ad7OqInB8F941Q/YM3TA4C9nPkQ
2O4s253LCmON81HgeOevGxe6Attd7AMXjUvtwe589HIDsDdR9Eo12GFcTYTj
kUhw92IW6zOYBJPhc5gYEJkTSQUCt92UYC/XqttS8MdYiIGUkAKiEAfxkBce
gdTscypLaSEN5IHcisSl3u6PlwHSQXrIBRkhJ+QIt3vot8sCmSAzZIVH4THI
Bo/DE5AdnoSnoDI8Dfm4lGks5YdnoBJUDE7pkRL+lApBASgIRaEwFIHikADF
oByUgOehbHiE9v4IpaEklIIy8Cw8By9AeagAXaAqVOH6vmDpRagGL0N1qAEv
wavwCtSCmlAPakNdqAONoD40hAbQGJpAM2gKLaE5JEILeB1aQWt4DdpDG2gH
baEzdIBO0BEmQzfoyl36kqXu8Aa8Cb2gB7wFPaEPvA294R3oD+9CP+gLg2EA
DIKBMATegw/gffgIPoRhMBRGwXAYCSNgLIyGj2EMfALjYAKMh0nwKXwG7tNm
C0wB90k0nSX3VLnPCfce/ArcvZ4BboPZMBNmwdcwD76BuTAHfoBv4Xv4DhbA
j/ATzIclsBAWwyJYAUthOSyDNbASVsMqWA9JsA7Wwi+wATbCz7AJNsOvcB+2
wVburrtnO2A77IQ98Bvshl2wH/bC77AP/oI/4AD8CYfhIPwNh+BfOAL/wFE4
CcfgBByHs3AKzsBpuAjn4AKch6twCa7AZbgJ1+AGXIdbcBvuwF24Z8g9cQ/g
P+61e7cmw0PWzAHZw4/tye5jW8RUbon6itSJ3or+KW243Ta/HaEV9RX1FQ0X
9RWBFoVVaqDFomqisCJ1yhYe4YE/At0UoRUxFd0UhRUxFd0UhRUxFWUWQwBR
bZF55Qa6qXxAPkVhRRRFMEU+RTdFFEUwRSlFTEU+RSlFDUUNRSJFDUUNRSJV
Fkir6K1IpEik6KYqApkX4wJVAfIpSim6KUopEimCKSoqSikSKYIpKipKKRIp
gikqKkopEimCKSoqgimCKUopuilKKRIpgikqKkopEimCKSoqSikSKYIpKipK
KRIpgikqKoYV6gp0UyRSBFOUUiRStFGUUuRTJFK0UZRS5FMkUrRRlFLkUyRS
tFGUUrRRVFQkUiRSfAqLKCosZfAw0xWRT9FNNzTStOCRSVPcPzKET1RURFFj
w1Xa+VUIrUirCK1oqiisSKsbJ4umilLq83Bnk/zOiKmIsAitGKOI3ooIuzGK
K6xLgfuU8tdHMEU+RVNFN0UwRT5FU0U3RTBFPkVTRTdFMEU+RVNFN0UwRT5F
U0U3RTBFPkVTRTdFMEU+RVNFN0U3RTdFiEQptYFX010mTRUxFQHT/vDubvV3
lxqKwopSake4yn9+FYYxor6iviKt2gpEWBRWNFUUVsRUpFU0VaRHpFUHOGv3
qpBP0VSRQZ0MTiltMX9KNFX0VkRY9FYUVvRWpFWEVhRW5FM0VfRWhFbkUzRV
9FaEVuRTNFX0Vlfs5G36ESBwU8vZ4Vm3dUs2tQyIgdJQKlilUDO/ShykgCik
gnhICWmA+abNPgOegrTwJITFKzTaHyEDpIP0kBkyQiZ4DLLAo/AEZIXHoRhk
hwQoGh52rT9sLsgBOSEv5IY88Aww+7S5aEBByA8FoAgUgsJQEopDCagKZeA5
XpxvWHoeygKTwkjl8OSv+pOvAOWgPFSCF6AivAovQjUONIell6A61IKawYEK
5/MHegVqwMvQAupAbfY5l6V6UBfqQ3NoAA2hETSGJtAUmkF3aAmJHGgeS69B
K2gNb8Dr0AbaQjtoDx2AyWSkS3jRTf1Fd4aO0Am6wVDoAW9ySt+y9Bb0hF5A
zmy+GdA/PNAof6A+8A70hn7wLvSFATAQBsEQ+CDcZ5Lf5/swGN6Dr+AjGMZZ
f8fSCBgOI2EGjIIJ4RGu+CN8DKNhDIyHsTAOPgG++YpMCvZSJK/fC1+O2Tw1
YCIwJbUJasB0+DLcronf7guYCtPge/gaZnJ97o+zYRa4Z8xdu3sQ3HvXvbPc
q7kRfoQf2CfYzDRgPvwMG8LzHOnPcxEsgIWwHhbDOlgbbrfGb7cMlsBSSILl
sAZWh9td9tutghWwEnbDJviFa3BX9Ctshi2wC5i82lQ2YDvsgJ3wG5yBvbCH
I7j78jvsg/1wGv6Aw8E1FM3jr+Ev+BOIsM1hAw7CITgCR+EfOAknwn029vs8
Dv/CMTjFebo2noOz/NG9thfgPFzk/7l9XoJr4YFG+ANdhcvgInwdbodrrvZr
3oIbcBPuwF24B8nwMNz8kt/8AdwHN/cldaLooujizSeqLRouii7KLBqudMER
EnK7I8h9Z0zYRe1Fw0XYRe1FrkWSlTncSyO/F6ot+i5SLqotUi4GBDYFThju
t6Poouii6CK0otOi2uKpErkWRRfVFtUWRZf76ph4y33RSsNFvMUDK6otGm4T
zYBK4Qn610+MrETtxbBJ4bApwT+NYgBi0+MABiBiJCBGAmIkIDIvNwRgQCCK
LkYCIvOi6KL9IvNy34a6sDOsEJ8vIuyi/TYpDOgcnGcx/yksOi1GAqLoqh2u
4msoRhBiCCBGCTZ1DmBAIEYJosViCCCqrcRwZ36wJ9ovxgViQCDGE2JAIAYL
ahZut85vx7hADBbEYEGUWYwERK7VIdzuut+OIYAYHohxgRgCiHGBGBeImIoR
hKi9+BSWyzzDERF2MQQQtRftF0UXtRdhF2G36XEAYRdhF7UXuRaZF5kXmRcN
F2G3qXMA1RbDET9nphYi83KZJ+yizKLoIvMiNqLhouii76LMIuyi6KJAIuwK
xwXF84e/esUVH2WUtB/b4m4MM25VNm7br3Nxd+2Hzbh79ltrfPqJYD+rxmc4
YeTMA/ZzZXyuOkaPhcaAOZHI/5GuGDINCmVuZHN0cmVhbQ0KZW5kb2JqDQp4
cmVmDQowIDExNTgNCjAwMDAwMDAxNTcgNjU1MzUgZg0KMDAwMDAwMDAxNyAw
MDAwMCBuDQowMDAwMDAwMTg1IDAwMDAwIG4NCjAwMDAwMDA0NTYgMDAwMDAg
bg0KMDAwMDAwMDc4NyAwMDAwMCBuDQowMDAwMDAxNTAwIDAwMDAwIG4NCjAw
MDAwMDE1NTMgMDAwMDAgbg0KMDAwMDAwMjcyNCAwMDAwMCBuDQowMDAwMDA0
Nzk0IDAwMDAwIG4NCjAwMDAwMDQ5NTcgMDAwMDAgbg0KMDAwMDAwNTE4MyAw
MDAwMCBuDQowMDAwMDA1MjM3IDAwMDAwIG4NCjAwMDAwMTU1MzUgMDAwMDAg
bg0KMDAwMDAyMTMyNyAwMDAwMCBuDQowMDAwMDI2MzE5IDAwMDAwIG4NCjAw
MDAwMjkyNjkgMDAwMDAgbg0KMDAwMDAyOTQzOSAwMDAwMCBuDQowMDAwMDI5
NjcxIDAwMDAwIG4NCjAwMDAwMzAwMTEgMDAwMDAgbg0KMDAwMDAzMDg2MyAw
MDAwMCBuDQowMDAwMDMyMDM2IDAwMDAwIG4NCjAwMDAwMzQxMDcgMDAwMDAg
bg0KMDAwMDA0MTQxOCAwMDAwMCBuDQowMDAwMDQ1MzQ1IDAwMDAwIG4NCjAw
MDAwNDU0ODAgMDAwMDAgbg0KMDAwMDA0NTUxMCAwMDAwMCBuDQowMDAwMDQ1
NjczIDAwMDAwIG4NCjAwMDAwNDU3NDcgMDAwMDAgbg0KMDAwMDA0NTk4OCAw
MDAwMCBuDQowMDAwMDQ2MTI1IDAwMDAwIG4NCjAwMDAwNDYxNTUgMDAwMDAg
bg0KMDAwMDA0NjMyMCAwMDAwMCBuDQowMDAwMDQ2Mzk0IDAwMDAwIG4NCjAw
MDAwNDY2MzQgMDAwMDAgbg0KMDAwMDA0Njk2OSAwMDAwMCBuDQowMDAwMDQ4
MTkwIDAwMDAwIG4NCjAwMDAwNDgzMTcgMDAwMDAgbg0KMDAwMDA0ODM0NyAw
MDAwMCBuDQowMDAwMDQ4NTAyIDAwMDAwIG4NCjAwMDAwNDg1NzYgMDAwMDAg
bg0KMDAwMDA0ODgyMiAwMDAwMCBuDQowMDAwMDQ5MTI3IDAwMDAwIG4NCjAw
MDAwNTA0MzggMDAwMDAgbg0KMDAwMDA1MDc0MyAwMDAwMCBuDQowMDAwMDUx
OTk4IDAwMDAwIG4NCjAwMDAwNTIzMDMgMDAwMDAgbg0KMDAwMDA1Mzc1MiAw
MDAwMCBuDQowMDAwMDU0MDU3IDAwMDAwIG4NCjAwMDAwNTU0OTEgMDAwMDAg
bg0KMDAwMDA1NTgyNiAwMDAwMCBuDQowMDAwMDYwMjc4IDAwMDAwIG4NCjAw
MDAwNjA2MDMgMDAwMDAgbg0KMDAwMDA2MjU1NiAwMDAwMCBuDQowMDAwMDYy
ODgxIDAwMDAwIG4NCjAwMDAwNjM4MTggMDAwMDAgbg0KMDAwMDA2NDE0NCAw
MDAwMCBuDQowMDAwMDY1MjI3IDAwMDAwIG4NCjAwMDAwNjU0MDAgMDAwMDAg
bg0KMDAwMDA2NTY0MiAwMDAwMCBuDQowMDAwMDY1OTY4IDAwMDAwIG4NCjAw
MDAwNjc2MTAgMDAwMDAgbg0KMDAwMDA2NzkyNiAwMDAwMCBuDQowMDAwMDY4
NjU5IDAwMDAwIG4NCjAwMDAwNjg5NzUgMDAwMDAgbg0KMDAwMDA2OTcyMiAw
MDAwMCBuDQowMDAwMDcwMDQzIDAwMDAwIG4NCjAwMDAwNzA4MTUgMDAwMDAg
bg0KMDAwMDA4NjA5MSAwMDAwMCBuDQowMDAwMDg2NDIyIDAwMDAwIG4NCjAw
MDAwODcyNDUgMDAwMDAgbg0KMDAwMDEwMDIzOSAwMDAwMCBuDQowMDAwMTAw
NTcwIDAwMDAwIG4NCjAwMDAxMDE0NjIgMDAwMDAgbg0KMDAwMDExMzgxMSAw
MDAwMCBuDQowMDAwMTE0MTQyIDAwMDAwIG4NCjAwMDAxMTUxNjUgMDAwMDAg
bg0KMDAwMDEyODg4NSAwMDAwMCBuDQowMDAwMTI5MjA2IDAwMDAwIG4NCjAw
MDAxMjk4NjkgMDAwMDAgbg0KMDAwMDE0Mjg5MCAwMDAwMCBuDQowMDAwMTQz
MjE2IDAwMDAwIG4NCjAwMDAxNDQzOTkgMDAwMDAgbg0KMDAwMDE0NDcyMCAw
MDAwMCBuDQowMDAwMTQ1NDQ4IDAwMDAwIG4NCjAwMDAxNTcyNzIgMDAwMDAg
bg0KMDAwMDE1NzYwMyAwMDAwMCBuDQowMDAwMTU4NDg0IDAwMDAwIG4NCjAw
MDAxNzA0MDYgMDAwMDAgbg0KMDAwMDE3MDczNyAwMDAwMCBuDQowMDAwMTcx
NjY1IDAwMDAwIG4NCjAwMDAxODQyODYgMDAwMDAgbg0KMDAwMDE4NDYxNyAw
MDAwMCBuDQowMDAwMTg1NjQwIDAwMDAwIG4NCjAwMDAxOTgzMTggMDAwMDAg
bg0KMDAwMDE5ODYzOSAwMDAwMCBuDQowMDAwMTk5MzgxIDAwMDAwIG4NCjAw
MDAyMTk2MTEgMDAwMDAgbg0KMDAwMDIxOTkzNyAwMDAwMCBuDQowMDAwMjIx
MTUxIDAwMDAwIG4NCjAwMDAyMjE1MDUgMDAwMDAgbg0KMDAwMDIyMjk4OCAw
MDAwMCBuDQowMDAwMjIzMTU1IDAwMDAwIG4NCjAwMDAyMjM1MzEgMDAwMDAg
bg0KMDAwMDIyNDYxMSAwMDAwMCBuDQowMDAwMjI3NDA3IDAwMDAwIG4NCjAw
MDAyMjc4NTUgMDAwMDAgbg0KMDAwMDIzMDA3MiAwMDAwMCBuDQowMDAwMjMw
NTg2IDAwMDAwIG4NCjAwMDAyMzMwOTUgMDAwMDAgbg0KMDAwMDIzMzY2MiAw
MDAwMCBuDQowMDAwMjM2NDkxIDAwMDAwIG4NCjAwMDAyMzcwNTggMDAwMDAg
bg0KMDAwMDIzNzM4MyAwMDAwMCBuDQowMDAwMjM3OTIxIDAwMDAwIG4NCjAw
MDAzMTE1NzUgMDAwMDAgbg0KMDAwMDMxNTIzNCAwMDAwMCBuDQowMDAwMzE1
NTU5IDAwMDAwIG4NCjAwMDAzMTYwNzkgMDAwMDAgbg0KMDAwMDM1MTAwNSAw
MDAwMCBuDQowMDAwMzUzNzM2IDAwMDAwIG4NCjAwMDAzNTQwNzggMDAwMDAg
bg0KMDAwMDM1NDYyNiAwMDAwMCBuDQowMDAwMzY0OTI2IDAwMDAwIG4NCjAw
MDAzNzA3MTkgMDAwMDAgbg0KMDAwMDM4MDMyOCAwMDAwMCBuDQowMDAwMzg1
NzIzIDAwMDAwIG4NCjAwMDAzODU3ODkgMDAwMDAgbg0KMDAwMDM4NTkxNiAw
MDAwMCBuDQowMDAwMzg2MDQyIDAwMDAwIG4NCjAwMDAzODYxNzAgMDAwMDAg
bg0KMDAwMDM4NjMwMyAwMDAwMCBuDQowMDAwMzg2NDI5IDAwMDAwIG4NCjAw
MDAzODY1NTUgMDAwMDAgbg0KMDAwMDM4NjY4MSAwMDAwMCBuDQowMDAwMzg2
ODEwIDAwMDAwIG4NCjAwMDAzODY5MzkgMDAwMDAgbg0KMDAwMDM4NzA2OSAw
MDAwMCBuDQowMDAwMzg3MjAzIDAwMDAwIG4NCjAwMDAzODczMjcgMDAwMDAg
bg0KMDAwMDM4NzQ1MyAwMDAwMCBuDQowMDAwMzg3NjA3IDAwMDAwIG4NCjAw
MDAzODc3MjYgMDAwMDAgbg0KMDAwMDM4Nzg0NSAwMDAwMCBuDQowMDAwMzg3
OTY0IDAwMDAwIG4NCjAwMDAzODgwODMgMDAwMDAgbg0KMDAwMDM4ODIwMiAw
MDAwMCBuDQowMDAwMzg4MzUxIDAwMDAwIG4NCjAwMDAzODg0NzAgMDAwMDAg
bg0KMDAwMDM4ODU4OSAwMDAwMCBuDQowMDAwMzg4NzA4IDAwMDAwIG4NCjAw
MDAzODg4MjcgMDAwMDAgbg0KMDAwMDM4ODk0NiAwMDAwMCBuDQowMDAwMzg5
MDY5IDAwMDAwIG4NCjAwMDAzODkxODcgMDAwMDAgbg0KMDAwMDM4OTMyNCAw
MDAwMCBuDQowMDAwMzg5NDY3IDAwMDAwIG4NCjAwMDAzODk2MDMgMDAwMDAg
bg0KMDAwMDAwMDE1OCA2NTUzNSBmDQowMDAwMDAwMTU5IDY1NTM1IGYNCjAw
MDAwMDAxNjAgNjU1MzUgZg0KMDAwMDAwMDE2MSA2NTUzNSBmDQowMDAwMDAw
MTYyIDY1NTM1IGYNCjAwMDAwMDAxNjMgNjU1MzUgZg0KMDAwMDAwMDE2NCA2
NTUzNSBmDQowMDAwMDAwMTY1IDY1NTM1IGYNCjAwMDAwMDAxNjYgNjU1MzUg
Zg0KMDAwMDAwMDE2NyA2NTUzNSBmDQowMDAwMDAwMTY4IDY1NTM1IGYNCjAw
MDAwMDAxNjkgNjU1MzUgZg0KMDAwMDAwMDE3MCA2NTUzNSBmDQowMDAwMDAw
MTcxIDY1NTM1IGYNCjAwMDAwMDAxNzIgNjU1MzUgZg0KMDAwMDAwMDE3MyA2
NTUzNSBmDQowMDAwMDAwMTc0IDY1NTM1IGYNCjAwMDAwMDAxNzUgNjU1MzUg
Zg0KMDAwMDAwMDE3NiA2NTUzNSBmDQowMDAwMDAwMTc3IDY1NTM1IGYNCjAw
MDAwMDAxNzggNjU1MzUgZg0KMDAwMDAwMDE3OSA2NTUzNSBmDQowMDAwMDAw
MTgwIDY1NTM1IGYNCjAwMDAwMDAxODEgNjU1MzUgZg0KMDAwMDAwMDE4MyA2
NTUzNSBmDQowMDAwMzk1OTc5IDAwMDAwIG4NCjAwMDAwMDAxODQgNjU1MzUg
Zg0KMDAwMDAwMDE4NSA2NTUzNSBmDQowMDAwMDAwMTg2IDY1NTM1IGYNCjAw
MDAwMDAxODcgNjU1MzUgZg0KMDAwMDAwMDE4OCA2NTUzNSBmDQowMDAwMDAw
MTg5IDY1NTM1IGYNCjAwMDAwMDAxOTEgNjU1MzUgZg0KMDAwMDM5NjAzMCAw
MDAwMCBuDQowMDAwMDAwMTkyIDY1NTM1IGYNCjAwMDAwMDAxOTMgNjU1MzUg
Zg0KMDAwMDAwMDE5NCA2NTUzNSBmDQowMDAwMDAwMTk1IDY1NTM1IGYNCjAw
MDAwMDAxOTYgNjU1MzUgZg0KMDAwMDAwMDE5NyA2NTUzNSBmDQowMDAwMDAw
MTk4IDY1NTM1IGYNCjAwMDAwMDAxOTkgNjU1MzUgZg0KMDAwMDAwMDIwMCA2
NTUzNSBmDQowMDAwMDAwMjAxIDY1NTM1IGYNCjAwMDAwMDAyMDIgNjU1MzUg
Zg0KMDAwMDAwMDIwMyA2NTUzNSBmDQowMDAwMDAwMjA0IDY1NTM1IGYNCjAw
MDAwMDAyMDUgNjU1MzUgZg0KMDAwMDAwMDIwNiA2NTUzNSBmDQowMDAwMDAw
MjA3IDY1NTM1IGYNCjAwMDAwMDAyMDggNjU1MzUgZg0KMDAwMDAwMDIwOSA2
NTUzNSBmDQowMDAwMDAwMjEwIDY1NTM1IGYNCjAwMDAwMDAyMTIgNjU1MzUg
Zg0KMDAwMDM5NjA4MSAwMDAwMCBuDQowMDAwMDAwMjEzIDY1NTM1IGYNCjAw
MDAwMDAyMTQgNjU1MzUgZg0KMDAwMDAwMDIxNSA2NTUzNSBmDQowMDAwMDAw
MjE2IDY1NTM1IGYNCjAwMDAwMDAyMTcgNjU1MzUgZg0KMDAwMDAwMDIxOCA2
NTUzNSBmDQowMDAwMDAwMjE5IDY1NTM1IGYNCjAwMDAwMDAyMjAgNjU1MzUg
Zg0KMDAwMDAwMDIyMSA2NTUzNSBmDQowMDAwMDAwMjIyIDY1NTM1IGYNCjAw
MDAwMDAyMjMgNjU1MzUgZg0KMDAwMDAwMDIyNCA2NTUzNSBmDQowMDAwMDAw
MjI2IDY1NTM1IGYNCjAwMDAzOTYxMzIgMDAwMDAgbg0KMDAwMDAwMDIyNyA2
NTUzNSBmDQowMDAwMDAwMjI4IDY1NTM1IGYNCjAwMDAwMDAyMjkgNjU1MzUg
Zg0KMDAwMDAwMDIzMCA2NTUzNSBmDQowMDAwMDAwMjMxIDY1NTM1IGYNCjAw
MDAwMDAyMzIgNjU1MzUgZg0KMDAwMDAwMDIzMyA2NTUzNSBmDQowMDAwMDAw
MjM0IDY1NTM1IGYNCjAwMDAwMDAyMzUgNjU1MzUgZg0KMDAwMDAwMDIzNiA2
NTUzNSBmDQowMDAwMDAwMjM3IDY1NTM1IGYNCjAwMDAwMDAyMzggNjU1MzUg
Zg0KMDAwMDAwMDIzOSA2NTUzNSBmDQowMDAwMDAwMjQwIDY1NTM1IGYNCjAw
MDAwMDAyNDEgNjU1MzUgZg0KMDAwMDAwMDI0MiA2NTUzNSBmDQowMDAwMDAw
MjQzIDY1NTM1IGYNCjAwMDAwMDAyNDQgNjU1MzUgZg0KMDAwMDAwMDI0NSA2
NTUzNSBmDQowMDAwMDAwMjQ2IDY1NTM1IGYNCjAwMDAwMDAyNDcgNjU1MzUg
Zg0KMDAwMDAwMDI0OCA2NTUzNSBmDQowMDAwMDAwMjQ5IDY1NTM1IGYNCjAw
MDAwMDAyNTAgNjU1MzUgZg0KMDAwMDAwMDI1MSA2NTUzNSBmDQowMDAwMDAw
MjUyIDY1NTM1IGYNCjAwMDAwMDAyNTMgNjU1MzUgZg0KMDAwMDAwMDI1NCA2
NTUzNSBmDQowMDAwMDAwMjU1IDY1NTM1IGYNCjAwMDAwMDAyNTYgNjU1MzUg
Zg0KMDAwMDAwMDI1NyA2NTUzNSBmDQowMDAwMDAwMjU4IDY1NTM1IGYNCjAw
MDAwMDAyNTkgNjU1MzUgZg0KMDAwMDAwMDI2MCA2NTUzNSBmDQowMDAwMDAw
MjYxIDY1NTM1IGYNCjAwMDAwMDAyNjIgNjU1MzUgZg0KMDAwMDAwMDI2MyA2
NTUzNSBmDQowMDAwMDAwMjY0IDY1NTM1IGYNCjAwMDAwMDAyNjUgNjU1MzUg
Zg0KMDAwMDAwMDI2NiA2NTUzNSBmDQowMDAwMDAwMjY3IDY1NTM1IGYNCjAw
MDAwMDAyNjggNjU1MzUgZg0KMDAwMDAwMDI2OSA2NTUzNSBmDQowMDAwMDAw
MjcwIDY1NTM1IGYNCjAwMDAwMDAyNzEgNjU1MzUgZg0KMDAwMDAwMDI3MiA2
NTUzNSBmDQowMDAwMDAwMjczIDY1NTM1IGYNCjAwMDAwMDAyNzQgNjU1MzUg
Zg0KMDAwMDAwMDI3NSA2NTUzNSBmDQowMDAwMDAwMjc2IDY1NTM1IGYNCjAw
MDAwMDAyNzcgNjU1MzUgZg0KMDAwMDAwMDI3OCA2NTUzNSBmDQowMDAwMDAw
Mjc5IDY1NTM1IGYNCjAwMDAwMDAyODAgNjU1MzUgZg0KMDAwMDAwMDI4MSA2
NTUzNSBmDQowMDAwMDAwMjgyIDY1NTM1IGYNCjAwMDAwMDAyODMgNjU1MzUg
Zg0KMDAwMDAwMDI4NCA2NTUzNSBmDQowMDAwMDAwMjg1IDY1NTM1IGYNCjAw
MDAwMDAyODYgNjU1MzUgZg0KMDAwMDAwMDI4NyA2NTUzNSBmDQowMDAwMDAw
Mjg4IDY1NTM1IGYNCjAwMDAwMDAyODkgNjU1MzUgZg0KMDAwMDAwMDI5MCA2
NTUzNSBmDQowMDAwMDAwMjkxIDY1NTM1IGYNCjAwMDAwMDAyOTIgNjU1MzUg
Zg0KMDAwMDAwMDI5MyA2NTUzNSBmDQowMDAwMDAwMjk0IDY1NTM1IGYNCjAw
MDAwMDAyOTUgNjU1MzUgZg0KMDAwMDAwMDI5NiA2NTUzNSBmDQowMDAwMDAw
Mjk3IDY1NTM1IGYNCjAwMDAwMDAyOTggNjU1MzUgZg0KMDAwMDAwMDI5OSA2
NTUzNSBmDQowMDAwMDAwMzAwIDY1NTM1IGYNCjAwMDAwMDAzMDEgNjU1MzUg
Zg0KMDAwMDAwMDMwMiA2NTUzNSBmDQowMDAwMDAwMzAzIDY1NTM1IGYNCjAw
MDAwMDAzMDQgNjU1MzUgZg0KMDAwMDAwMDMwNSA2NTUzNSBmDQowMDAwMDAw
MzA2IDY1NTM1IGYNCjAwMDAwMDAzMDcgNjU1MzUgZg0KMDAwMDAwMDMwOCA2
NTUzNSBmDQowMDAwMDAwMzA5IDY1NTM1IGYNCjAwMDAwMDAzMTAgNjU1MzUg
Zg0KMDAwMDAwMDMxMSA2NTUzNSBmDQowMDAwMDAwMzEyIDY1NTM1IGYNCjAw
MDAwMDAzMTMgNjU1MzUgZg0KMDAwMDAwMDMxNCA2NTUzNSBmDQowMDAwMDAw
MzE1IDY1NTM1IGYNCjAwMDAwMDAzMTYgNjU1MzUgZg0KMDAwMDAwMDMxNyA2
NTUzNSBmDQowMDAwMDAwMzE4IDY1NTM1IGYNCjAwMDAwMDAzMTkgNjU1MzUg
Zg0KMDAwMDAwMDMyMCA2NTUzNSBmDQowMDAwMDAwMzIxIDY1NTM1IGYNCjAw
MDAwMDAzMjIgNjU1MzUgZg0KMDAwMDAwMDMyMyA2NTUzNSBmDQowMDAwMDAw
MzI0IDY1NTM1IGYNCjAwMDAwMDAzMjUgNjU1MzUgZg0KMDAwMDAwMDMyNiA2
NTUzNSBmDQowMDAwMDAwMzI3IDY1NTM1IGYNCjAwMDAwMDAzMjggNjU1MzUg
Zg0KMDAwMDAwMDMyOSA2NTUzNSBmDQowMDAwMDAwMzMwIDY1NTM1IGYNCjAw
MDAwMDAzMzEgNjU1MzUgZg0KMDAwMDAwMDMzMiA2NTUzNSBmDQowMDAwMDAw
MzMzIDY1NTM1IGYNCjAwMDAwMDAzMzQgNjU1MzUgZg0KMDAwMDAwMDMzNSA2
NTUzNSBmDQowMDAwMDAwMzM2IDY1NTM1IGYNCjAwMDAwMDAzMzcgNjU1MzUg
Zg0KMDAwMDAwMDMzOCA2NTUzNSBmDQowMDAwMDAwMzM5IDY1NTM1IGYNCjAw
MDAwMDAzNDAgNjU1MzUgZg0KMDAwMDAwMDM0MSA2NTUzNSBmDQowMDAwMDAw
MzQyIDY1NTM1IGYNCjAwMDAwMDAzNDMgNjU1MzUgZg0KMDAwMDAwMDM0NCA2
NTUzNSBmDQowMDAwMDAwMzQ1IDY1NTM1IGYNCjAwMDAwMDAzNDYgNjU1MzUg
Zg0KMDAwMDAwMDM0NyA2NTUzNSBmDQowMDAwMDAwMzQ4IDY1NTM1IGYNCjAw
MDAwMDAzNDkgNjU1MzUgZg0KMDAwMDAwMDM1MCA2NTUzNSBmDQowMDAwMDAw
MzUxIDY1NTM1IGYNCjAwMDAwMDAzNTIgNjU1MzUgZg0KMDAwMDAwMDM1MyA2
NTUzNSBmDQowMDAwMDAwMzU0IDY1NTM1IGYNCjAwMDAwMDAzNTUgNjU1MzUg
Zg0KMDAwMDAwMDM1NiA2NTUzNSBmDQowMDAwMDAwMzU3IDY1NTM1IGYNCjAw
MDAwMDAzNTggNjU1MzUgZg0KMDAwMDAwMDM1OSA2NTUzNSBmDQowMDAwMDAw
MzYwIDY1NTM1IGYNCjAwMDAwMDAzNjEgNjU1MzUgZg0KMDAwMDAwMDM2MiA2
NTUzNSBmDQowMDAwMDAwMzYzIDY1NTM1IGYNCjAwMDAwMDAzNjQgNjU1MzUg
Zg0KMDAwMDAwMDM2NSA2NTUzNSBmDQowMDAwMDAwMzY2IDY1NTM1IGYNCjAw
MDAwMDAzNjcgNjU1MzUgZg0KMDAwMDAwMDM2OCA2NTUzNSBmDQowMDAwMDAw
MzY5IDY1NTM1IGYNCjAwMDAwMDAzNzAgNjU1MzUgZg0KMDAwMDAwMDM3MSA2
NTUzNSBmDQowMDAwMDAwMzcyIDY1NTM1IGYNCjAwMDAwMDAzNzMgNjU1MzUg
Zg0KMDAwMDAwMDM3NCA2NTUzNSBmDQowMDAwMDAwMzc1IDY1NTM1IGYNCjAw
MDAwMDAzNzYgNjU1MzUgZg0KMDAwMDAwMDM3NyA2NTUzNSBmDQowMDAwMDAw
Mzc4IDY1NTM1IGYNCjAwMDAwMDAzNzkgNjU1MzUgZg0KMDAwMDAwMDM4MCA2
NTUzNSBmDQowMDAwMDAwMzgxIDY1NTM1IGYNCjAwMDAwMDAzODIgNjU1MzUg
Zg0KMDAwMDAwMDM4MyA2NTUzNSBmDQowMDAwMDAwMzg0IDY1NTM1IGYNCjAw
MDAwMDAzODUgNjU1MzUgZg0KMDAwMDAwMDM4NiA2NTUzNSBmDQowMDAwMDAw
Mzg3IDY1NTM1IGYNCjAwMDAwMDAzODggNjU1MzUgZg0KMDAwMDAwMDM4OSA2
NTUzNSBmDQowMDAwMDAwMzkwIDY1NTM1IGYNCjAwMDAwMDAzOTEgNjU1MzUg
Zg0KMDAwMDAwMDM5MiA2NTUzNSBmDQowMDAwMDAwMzkzIDY1NTM1IGYNCjAw
MDAwMDAzOTQgNjU1MzUgZg0KMDAwMDAwMDM5NSA2NTUzNSBmDQowMDAwMDAw
Mzk2IDY1NTM1IGYNCjAwMDAwMDAzOTcgNjU1MzUgZg0KMDAwMDAwMDM5OCA2
NTUzNSBmDQowMDAwMDAwMzk5IDY1NTM1IGYNCjAwMDAwMDA0MDAgNjU1MzUg
Zg0KMDAwMDAwMDQwMSA2NTUzNSBmDQowMDAwMDAwNDAyIDY1NTM1IGYNCjAw
MDAwMDA0MDMgNjU1MzUgZg0KMDAwMDAwMDQwNCA2NTUzNSBmDQowMDAwMDAw
NDA1IDY1NTM1IGYNCjAwMDAwMDA0MDYgNjU1MzUgZg0KMDAwMDAwMDQwNyA2
NTUzNSBmDQowMDAwMDAwNDA4IDY1NTM1IGYNCjAwMDAwMDA0MDkgNjU1MzUg
Zg0KMDAwMDAwMDQxMCA2NTUzNSBmDQowMDAwMDAwNDExIDY1NTM1IGYNCjAw
MDAwMDA0MTIgNjU1MzUgZg0KMDAwMDAwMDQxMyA2NTUzNSBmDQowMDAwMDAw
NDE0IDY1NTM1IGYNCjAwMDAwMDA0MTUgNjU1MzUgZg0KMDAwMDAwMDQxNiA2
NTUzNSBmDQowMDAwMDAwNDE3IDY1NTM1IGYNCjAwMDAwMDA0MTggNjU1MzUg
Zg0KMDAwMDAwMDQxOSA2NTUzNSBmDQowMDAwMDAwNDIwIDY1NTM1IGYNCjAw
MDAwMDA0MjEgNjU1MzUgZg0KMDAwMDAwMDQyMiA2NTUzNSBmDQowMDAwMDAw
NDIzIDY1NTM1IGYNCjAwMDAwMDA0MjQgNjU1MzUgZg0KMDAwMDAwMDQyNSA2
NTUzNSBmDQowMDAwMDAwNDI2IDY1NTM1IGYNCjAwMDAwMDA0MjcgNjU1MzUg
Zg0KMDAwMDAwMDQyOCA2NTUzNSBmDQowMDAwMDAwNDI5IDY1NTM1IGYNCjAw
MDAwMDA0MzAgNjU1MzUgZg0KMDAwMDAwMDQzMSA2NTUzNSBmDQowMDAwMDAw
NDMyIDY1NTM1IGYNCjAwMDAwMDA0MzMgNjU1MzUgZg0KMDAwMDAwMDQzNSA2
NTUzNSBmDQowMDAwMzk2MTgzIDAwMDAwIG4NCjAwMDAwMDA0MzYgNjU1MzUg
Zg0KMDAwMDAwMDQzNyA2NTUzNSBmDQowMDAwMDAwNDM4IDY1NTM1IGYNCjAw
MDAwMDA0MzkgNjU1MzUgZg0KMDAwMDAwMDQ0MCA2NTUzNSBmDQowMDAwMDAw
NDQxIDY1NTM1IGYNCjAwMDAwMDA0NDMgNjU1MzUgZg0KMDAwMDM5NjIzNCAw
MDAwMCBuDQowMDAwMDAwNDQ0IDY1NTM1IGYNCjAwMDAwMDA0NDUgNjU1MzUg
Zg0KMDAwMDAwMDQ0NiA2NTUzNSBmDQowMDAwMDAwNDQ3IDY1NTM1IGYNCjAw
MDAwMDA0NDggNjU1MzUgZg0KMDAwMDAwMDQ0OSA2NTUzNSBmDQowMDAwMDAw
NDUwIDY1NTM1IGYNCjAwMDAwMDA0NTEgNjU1MzUgZg0KMDAwMDAwMDQ1MiA2
NTUzNSBmDQowMDAwMDAwNDUzIDY1NTM1IGYNCjAwMDAwMDA0NTQgNjU1MzUg
Zg0KMDAwMDAwMDQ1NSA2NTUzNSBmDQowMDAwMDAwNDU3IDY1NTM1IGYNCjAw
MDAzOTYyODUgMDAwMDAgbg0KMDAwMDAwMDQ1OCA2NTUzNSBmDQowMDAwMDAw
NDU5IDY1NTM1IGYNCjAwMDAwMDA0NjAgNjU1MzUgZg0KMDAwMDAwMDQ2MSA2
NTUzNSBmDQowMDAwMDAwNDYyIDY1NTM1IGYNCjAwMDAwMDA0NjMgNjU1MzUg
Zg0KMDAwMDAwMDQ2NCA2NTUzNSBmDQowMDAwMDAwNDY1IDY1NTM1IGYNCjAw
MDAwMDA0NjYgNjU1MzUgZg0KMDAwMDAwMDQ2NyA2NTUzNSBmDQowMDAwMDAw
NDY4IDY1NTM1IGYNCjAwMDAwMDA0NjkgNjU1MzUgZg0KMDAwMDAwMDQ3MCA2
NTUzNSBmDQowMDAwMDAwNDcxIDY1NTM1IGYNCjAwMDAwMDA0NzIgNjU1MzUg
Zg0KMDAwMDAwMDQ3MyA2NTUzNSBmDQowMDAwMDAwNDc0IDY1NTM1IGYNCjAw
MDAwMDA0NzUgNjU1MzUgZg0KMDAwMDAwMDQ3NiA2NTUzNSBmDQowMDAwMDAw
NDc3IDY1NTM1IGYNCjAwMDAwMDA0NzggNjU1MzUgZg0KMDAwMDAwMDQ3OSA2
NTUzNSBmDQowMDAwMDAwNDgwIDY1NTM1IGYNCjAwMDAwMDA0ODEgNjU1MzUg
Zg0KMDAwMDAwMDQ4MiA2NTUzNSBmDQowMDAwMDAwNDgzIDY1NTM1IGYNCjAw
MDAwMDA0ODQgNjU1MzUgZg0KMDAwMDAwMDQ4NSA2NTUzNSBmDQowMDAwMDAw
NDg2IDY1NTM1IGYNCjAwMDAwMDA0ODcgNjU1MzUgZg0KMDAwMDAwMDQ4OCA2
NTUzNSBmDQowMDAwMDAwNDg5IDY1NTM1IGYNCjAwMDAwMDA0OTAgNjU1MzUg
Zg0KMDAwMDAwMDQ5MSA2NTUzNSBmDQowMDAwMDAwNDkyIDY1NTM1IGYNCjAw
MDAwMDA0OTMgNjU1MzUgZg0KMDAwMDAwMDQ5NCA2NTUzNSBmDQowMDAwMDAw
NDk1IDY1NTM1IGYNCjAwMDAwMDA0OTYgNjU1MzUgZg0KMDAwMDAwMDQ5NyA2
NTUzNSBmDQowMDAwMDAwNDk4IDY1NTM1IGYNCjAwMDAwMDA0OTkgNjU1MzUg
Zg0KMDAwMDAwMDUwMCA2NTUzNSBmDQowMDAwMDAwNTAxIDY1NTM1IGYNCjAw
MDAwMDA1MDIgNjU1MzUgZg0KMDAwMDAwMDUwMyA2NTUzNSBmDQowMDAwMDAw
NTA0IDY1NTM1IGYNCjAwMDAwMDA1MDUgNjU1MzUgZg0KMDAwMDAwMDUwNiA2
NTUzNSBmDQowMDAwMDAwNTA3IDY1NTM1IGYNCjAwMDAwMDA1MDggNjU1MzUg
Zg0KMDAwMDAwMDUwOSA2NTUzNSBmDQowMDAwMDAwNTEwIDY1NTM1IGYNCjAw
MDAwMDA1MTEgNjU1MzUgZg0KMDAwMDAwMDUxMiA2NTUzNSBmDQowMDAwMDAw
NTEzIDY1NTM1IGYNCjAwMDAwMDA1MTQgNjU1MzUgZg0KMDAwMDAwMDUxNSA2
NTUzNSBmDQowMDAwMDAwNTE2IDY1NTM1IGYNCjAwMDAwMDA1MTcgNjU1MzUg
Zg0KMDAwMDAwMDUxOCA2NTUzNSBmDQowMDAwMDAwNTE5IDY1NTM1IGYNCjAw
MDAwMDA1MjAgNjU1MzUgZg0KMDAwMDAwMDUyMSA2NTUzNSBmDQowMDAwMDAw
NTIyIDY1NTM1IGYNCjAwMDAwMDA1MjMgNjU1MzUgZg0KMDAwMDAwMDUyNCA2
NTUzNSBmDQowMDAwMDAwNTI1IDY1NTM1IGYNCjAwMDAwMDA1MjYgNjU1MzUg
Zg0KMDAwMDAwMDUyNyA2NTUzNSBmDQowMDAwMDAwNTI4IDY1NTM1IGYNCjAw
MDAwMDA1MjkgNjU1MzUgZg0KMDAwMDAwMDUzMCA2NTUzNSBmDQowMDAwMDAw
NTMxIDY1NTM1IGYNCjAwMDAwMDA1MzIgNjU1MzUgZg0KMDAwMDAwMDUzMyA2
NTUzNSBmDQowMDAwMDAwNTM0IDY1NTM1IGYNCjAwMDAwMDA1MzUgNjU1MzUg
Zg0KMDAwMDAwMDUzNiA2NTUzNSBmDQowMDAwMDAwNTM3IDY1NTM1IGYNCjAw
MDAwMDA1MzggNjU1MzUgZg0KMDAwMDAwMDUzOSA2NTUzNSBmDQowMDAwMDAw
NTQwIDY1NTM1IGYNCjAwMDAwMDA1NDEgNjU1MzUgZg0KMDAwMDAwMDU0MiA2
NTUzNSBmDQowMDAwMDAwNTQzIDY1NTM1IGYNCjAwMDAwMDA1NDQgNjU1MzUg
Zg0KMDAwMDAwMDU0NSA2NTUzNSBmDQowMDAwMDAwNTQ2IDY1NTM1IGYNCjAw
MDAwMDA1NDcgNjU1MzUgZg0KMDAwMDAwMDU0OCA2NTUzNSBmDQowMDAwMDAw
NTQ5IDY1NTM1IGYNCjAwMDAwMDA1NTAgNjU1MzUgZg0KMDAwMDAwMDU1MSA2
NTUzNSBmDQowMDAwMDAwNTUyIDY1NTM1IGYNCjAwMDAwMDA1NTMgNjU1MzUg
Zg0KMDAwMDAwMDU1NCA2NTUzNSBmDQowMDAwMDAwNTU1IDY1NTM1IGYNCjAw
MDAwMDA1NTYgNjU1MzUgZg0KMDAwMDAwMDU1NyA2NTUzNSBmDQowMDAwMDAw
NTU4IDY1NTM1IGYNCjAwMDAwMDA1NTkgNjU1MzUgZg0KMDAwMDAwMDU2MCA2
NTUzNSBmDQowMDAwMDAwNTYxIDY1NTM1IGYNCjAwMDAwMDA1NjIgNjU1MzUg
Zg0KMDAwMDAwMDU2MyA2NTUzNSBmDQowMDAwMDAwNTY0IDY1NTM1IGYNCjAw
MDAwMDA1NjUgNjU1MzUgZg0KMDAwMDAwMDU2NiA2NTUzNSBmDQowMDAwMDAw
NTY3IDY1NTM1IGYNCjAwMDAwMDA1NjggNjU1MzUgZg0KMDAwMDAwMDU2OSA2
NTUzNSBmDQowMDAwMDAwNTcwIDY1NTM1IGYNCjAwMDAwMDA1NzEgNjU1MzUg
Zg0KMDAwMDAwMDU3MiA2NTUzNSBmDQowMDAwMDAwNTc0IDY1NTM1IGYNCjAw
MDAzOTYzMzYgMDAwMDAgbg0KMDAwMDAwMDU3NSA2NTUzNSBmDQowMDAwMDAw
NTc2IDY1NTM1IGYNCjAwMDAwMDA1NzcgNjU1MzUgZg0KMDAwMDAwMDU3OSA2
NTUzNSBmDQowMDAwMzk2Mzg3IDAwMDAwIG4NCjAwMDAwMDA1ODAgNjU1MzUg
Zg0KMDAwMDAwMDU4MSA2NTUzNSBmDQowMDAwMDAwNTgyIDY1NTM1IGYNCjAw
MDAwMDA1ODMgNjU1MzUgZg0KMDAwMDAwMDU4NCA2NTUzNSBmDQowMDAwMDAw
NTg1IDY1NTM1IGYNCjAwMDAwMDA1ODYgNjU1MzUgZg0KMDAwMDAwMDU4NyA2
NTUzNSBmDQowMDAwMDAwNTg4IDY1NTM1IGYNCjAwMDAwMDA1OTAgNjU1MzUg
Zg0KMDAwMDM5NjQzOCAwMDAwMCBuDQowMDAwMDAwNTkxIDY1NTM1IGYNCjAw
MDAwMDA1OTIgNjU1MzUgZg0KMDAwMDAwMDU5MyA2NTUzNSBmDQowMDAwMDAw
NTk0IDY1NTM1IGYNCjAwMDAwMDA1OTUgNjU1MzUgZg0KMDAwMDAwMDU5NiA2
NTUzNSBmDQowMDAwMDAwNTk3IDY1NTM1IGYNCjAwMDAwMDA1OTggNjU1MzUg
Zg0KMDAwMDAwMDU5OSA2NTUzNSBmDQowMDAwMDAwNjAwIDY1NTM1IGYNCjAw
MDAwMDA2MDEgNjU1MzUgZg0KMDAwMDAwMDYwMiA2NTUzNSBmDQowMDAwMDAw
NjAzIDY1NTM1IGYNCjAwMDAwMDA2MDQgNjU1MzUgZg0KMDAwMDAwMDYwNSA2
NTUzNSBmDQowMDAwMDAwNjA2IDY1NTM1IGYNCjAwMDAwMDA2MDcgNjU1MzUg
Zg0KMDAwMDAwMDYwOCA2NTUzNSBmDQowMDAwMDAwNjA5IDY1NTM1IGYNCjAw
MDAwMDA2MTAgNjU1MzUgZg0KMDAwMDAwMDYxMSA2NTUzNSBmDQowMDAwMDAw
NjEyIDY1NTM1IGYNCjAwMDAwMDA2MTMgNjU1MzUgZg0KMDAwMDAwMDYxNCA2
NTUzNSBmDQowMDAwMDAwNjE1IDY1NTM1IGYNCjAwMDAwMDA2MTYgNjU1MzUg
Zg0KMDAwMDAwMDYxNyA2NTUzNSBmDQowMDAwMDAwNjE4IDY1NTM1IGYNCjAw
MDAwMDA2MTkgNjU1MzUgZg0KMDAwMDAwMDYyMCA2NTUzNSBmDQowMDAwMDAw
NjIxIDY1NTM1IGYNCjAwMDAwMDA2MjIgNjU1MzUgZg0KMDAwMDAwMDYyMyA2
NTUzNSBmDQowMDAwMDAwNjI0IDY1NTM1IGYNCjAwMDAwMDA2MjUgNjU1MzUg
Zg0KMDAwMDAwMDYyNiA2NTUzNSBmDQowMDAwMDAwNjI3IDY1NTM1IGYNCjAw
MDAwMDA2MjggNjU1MzUgZg0KMDAwMDAwMDYyOSA2NTUzNSBmDQowMDAwMDAw
NjMwIDY1NTM1IGYNCjAwMDAwMDA2MzEgNjU1MzUgZg0KMDAwMDAwMDYzMiA2
NTUzNSBmDQowMDAwMDAwNjMzIDY1NTM1IGYNCjAwMDAwMDA2MzQgNjU1MzUg
Zg0KMDAwMDAwMDYzNSA2NTUzNSBmDQowMDAwMDAwNjM2IDY1NTM1IGYNCjAw
MDAwMDA2MzcgNjU1MzUgZg0KMDAwMDAwMDYzOCA2NTUzNSBmDQowMDAwMDAw
NjQwIDY1NTM1IGYNCjAwMDAzOTY0ODkgMDAwMDAgbg0KMDAwMDAwMDY0MSA2
NTUzNSBmDQowMDAwMDAwNjQyIDY1NTM1IGYNCjAwMDAwMDA2NDMgNjU1MzUg
Zg0KMDAwMDAwMDY0NSA2NTUzNSBmDQowMDAwMzk2NTQwIDAwMDAwIG4NCjAw
MDAwMDA2NDYgNjU1MzUgZg0KMDAwMDAwMDY0NyA2NTUzNSBmDQowMDAwMDAw
NjQ4IDY1NTM1IGYNCjAwMDAwMDA2NDkgNjU1MzUgZg0KMDAwMDAwMDY1MCA2
NTUzNSBmDQowMDAwMDAwNjUxIDY1NTM1IGYNCjAwMDAwMDA2NTIgNjU1MzUg
Zg0KMDAwMDAwMDY1MyA2NTUzNSBmDQowMDAwMDAwNjU0IDY1NTM1IGYNCjAw
MDAwMDA2NTUgNjU1MzUgZg0KMDAwMDAwMDY1NiA2NTUzNSBmDQowMDAwMDAw
NjU3IDY1NTM1IGYNCjAwMDAwMDA2NTggNjU1MzUgZg0KMDAwMDAwMDY1OSA2
NTUzNSBmDQowMDAwMDAwNjYwIDY1NTM1IGYNCjAwMDAwMDA2NjEgNjU1MzUg
Zg0KMDAwMDAwMDY2MiA2NTUzNSBmDQowMDAwMDAwNjYzIDY1NTM1IGYNCjAw
MDAwMDA2NjQgNjU1MzUgZg0KMDAwMDAwMDY2NiA2NTUzNSBmDQowMDAwMzk2
NTkxIDAwMDAwIG4NCjAwMDAwMDA2NjcgNjU1MzUgZg0KMDAwMDAwMDY2OCA2
NTUzNSBmDQowMDAwMDAwNjY5IDY1NTM1IGYNCjAwMDAwMDA2NzAgNjU1MzUg
Zg0KMDAwMDAwMDY3MSA2NTUzNSBmDQowMDAwMDAwNjcyIDY1NTM1IGYNCjAw
MDAwMDA2NzMgNjU1MzUgZg0KMDAwMDAwMDY3NCA2NTUzNSBmDQowMDAwMDAw
Njc1IDY1NTM1IGYNCjAwMDAwMDA2NzYgNjU1MzUgZg0KMDAwMDAwMDY3NyA2
NTUzNSBmDQowMDAwMDAwNjc4IDY1NTM1IGYNCjAwMDAwMDA2NzkgNjU1MzUg
Zg0KMDAwMDAwMDY4MCA2NTUzNSBmDQowMDAwMDAwNjgxIDY1NTM1IGYNCjAw
MDAwMDA2ODIgNjU1MzUgZg0KMDAwMDAwMDY4MyA2NTUzNSBmDQowMDAwMDAw
Njg0IDY1NTM1IGYNCjAwMDAwMDA2ODUgNjU1MzUgZg0KMDAwMDAwMDY4NiA2
NTUzNSBmDQowMDAwMDAwNjg3IDY1NTM1IGYNCjAwMDAwMDA2ODggNjU1MzUg
Zg0KMDAwMDAwMDY4OSA2NTUzNSBmDQowMDAwMDAwNjkwIDY1NTM1IGYNCjAw
MDAwMDA2OTEgNjU1MzUgZg0KMDAwMDAwMDY5MiA2NTUzNSBmDQowMDAwMDAw
NjkzIDY1NTM1IGYNCjAwMDAwMDA2OTQgNjU1MzUgZg0KMDAwMDAwMDY5NSA2
NTUzNSBmDQowMDAwMDAwNjk3IDY1NTM1IGYNCjAwMDA0MDQwNTYgMDAwMDAg
bg0KMDAwMDAwMDY5OCA2NTUzNSBmDQowMDAwMDAwNjk5IDY1NTM1IGYNCjAw
MDAwMDA3MDAgNjU1MzUgZg0KMDAwMDAwMDcwMSA2NTUzNSBmDQowMDAwMDAw
NzAyIDY1NTM1IGYNCjAwMDAwMDA3MDMgNjU1MzUgZg0KMDAwMDAwMDcwNCA2
NTUzNSBmDQowMDAwMDAwNzA1IDY1NTM1IGYNCjAwMDAwMDA3MDYgNjU1MzUg
Zg0KMDAwMDAwMDcwNyA2NTUzNSBmDQowMDAwMDAwNzA4IDY1NTM1IGYNCjAw
MDAwMDA3MDkgNjU1MzUgZg0KMDAwMDAwMDcxMSA2NTUzNSBmDQowMDAwNDA0
MTA3IDAwMDAwIG4NCjAwMDAwMDA3MTIgNjU1MzUgZg0KMDAwMDAwMDcxMyA2
NTUzNSBmDQowMDAwMDAwNzE0IDY1NTM1IGYNCjAwMDAwMDA3MTUgNjU1MzUg
Zg0KMDAwMDAwMDcxNiA2NTUzNSBmDQowMDAwMDAwNzE3IDY1NTM1IGYNCjAw
MDAwMDA3MTggNjU1MzUgZg0KMDAwMDAwMDcxOSA2NTUzNSBmDQowMDAwMDAw
NzIwIDY1NTM1IGYNCjAwMDAwMDA3MjEgNjU1MzUgZg0KMDAwMDAwMDcyMiA2
NTUzNSBmDQowMDAwMDAwNzIzIDY1NTM1IGYNCjAwMDAwMDA3MjQgNjU1MzUg
Zg0KMDAwMDAwMDcyNSA2NTUzNSBmDQowMDAwMDAwNzI2IDY1NTM1IGYNCjAw
MDAwMDA3MjggNjU1MzUgZg0KMDAwMDQwNDE1OCAwMDAwMCBuDQowMDAwMDAw
NzI5IDY1NTM1IGYNCjAwMDAwMDA3MzAgNjU1MzUgZg0KMDAwMDAwMDczMSA2
NTUzNSBmDQowMDAwMDAwNzMyIDY1NTM1IGYNCjAwMDAwMDA3MzMgNjU1MzUg
Zg0KMDAwMDAwMDczNCA2NTUzNSBmDQowMDAwMDAwNzM1IDY1NTM1IGYNCjAw
MDAwMDA3MzYgNjU1MzUgZg0KMDAwMDAwMDczNyA2NTUzNSBmDQowMDAwMDAw
NzM4IDY1NTM1IGYNCjAwMDAwMDA3MzkgNjU1MzUgZg0KMDAwMDAwMDc0MCA2
NTUzNSBmDQowMDAwMDAwNzQxIDY1NTM1IGYNCjAwMDAwMDA3NDIgNjU1MzUg
Zg0KMDAwMDAwMDc0MyA2NTUzNSBmDQowMDAwMDAwNzQ0IDY1NTM1IGYNCjAw
MDAwMDA3NDUgNjU1MzUgZg0KMDAwMDAwMDc0NiA2NTUzNSBmDQowMDAwMDAw
NzQ3IDY1NTM1IGYNCjAwMDAwMDA3NDggNjU1MzUgZg0KMDAwMDAwMDc0OSA2
NTUzNSBmDQowMDAwMDAwNzUwIDY1NTM1IGYNCjAwMDAwMDA3NTEgNjU1MzUg
Zg0KMDAwMDAwMDc1MiA2NTUzNSBmDQowMDAwMDAwNzUzIDY1NTM1IGYNCjAw
MDAwMDA3NTUgNjU1MzUgZg0KMDAwMDQwNDIwOSAwMDAwMCBuDQowMDAwMDAw
NzU2IDY1NTM1IGYNCjAwMDAwMDA3NTcgNjU1MzUgZg0KMDAwMDAwMDc1OCA2
NTUzNSBmDQowMDAwMDAwNzU5IDY1NTM1IGYNCjAwMDAwMDA3NjAgNjU1MzUg
Zg0KMDAwMDAwMDc2MSA2NTUzNSBmDQowMDAwMDAwNzYyIDY1NTM1IGYNCjAw
MDAwMDA3NjMgNjU1MzUgZg0KMDAwMDAwMDc2NCA2NTUzNSBmDQowMDAwMDAw
NzY1IDY1NTM1IGYNCjAwMDAwMDA3NjYgNjU1MzUgZg0KMDAwMDAwMDc2NyA2
NTUzNSBmDQowMDAwMDAwNzY4IDY1NTM1IGYNCjAwMDAwMDA3NzAgNjU1MzUg
Zg0KMDAwMDQwNDI2MCAwMDAwMCBuDQowMDAwMDAwNzcxIDY1NTM1IGYNCjAw
MDAwMDA3NzIgNjU1MzUgZg0KMDAwMDAwMDc3MyA2NTUzNSBmDQowMDAwMDAw
Nzc0IDY1NTM1IGYNCjAwMDAwMDA3NzUgNjU1MzUgZg0KMDAwMDAwMDc3NiA2
NTUzNSBmDQowMDAwMDAwNzc3IDY1NTM1IGYNCjAwMDAwMDA3NzggNjU1MzUg
Zg0KMDAwMDAwMDc3OSA2NTUzNSBmDQowMDAwMDAwNzgwIDY1NTM1IGYNCjAw
MDAwMDA3ODEgNjU1MzUgZg0KMDAwMDAwMDc4MiA2NTUzNSBmDQowMDAwMDAw
NzgzIDY1NTM1IGYNCjAwMDAwMDA3ODQgNjU1MzUgZg0KMDAwMDAwMDc4NSA2
NTUzNSBmDQowMDAwMDAwNzg2IDY1NTM1IGYNCjAwMDAwMDA3ODcgNjU1MzUg
Zg0KMDAwMDAwMDc4OCA2NTUzNSBmDQowMDAwMDAwNzg5IDY1NTM1IGYNCjAw
MDAwMDA3OTAgNjU1MzUgZg0KMDAwMDAwMDc5MSA2NTUzNSBmDQowMDAwMDAw
NzkyIDY1NTM1IGYNCjAwMDAwMDA3OTMgNjU1MzUgZg0KMDAwMDAwMDc5NCA2
NTUzNSBmDQowMDAwMDAwNzk1IDY1NTM1IGYNCjAwMDAwMDA3OTYgNjU1MzUg
Zg0KMDAwMDAwMDc5NyA2NTUzNSBmDQowMDAwMDAwNzk4IDY1NTM1IGYNCjAw
MDAwMDA3OTkgNjU1MzUgZg0KMDAwMDAwMDgwMCA2NTUzNSBmDQowMDAwMDAw
ODAxIDY1NTM1IGYNCjAwMDAwMDA4MDIgNjU1MzUgZg0KMDAwMDAwMDgwMyA2
NTUzNSBmDQowMDAwMDAwODA1IDY1NTM1IGYNCjAwMDA0MDQzMTEgMDAwMDAg
bg0KMDAwMDAwMDgwNiA2NTUzNSBmDQowMDAwMDAwODA3IDY1NTM1IGYNCjAw
MDAwMDA4MDggNjU1MzUgZg0KMDAwMDAwMDgwOSA2NTUzNSBmDQowMDAwMDAw
ODEwIDY1NTM1IGYNCjAwMDAwMDA4MTEgNjU1MzUgZg0KMDAwMDAwMDgxMiA2
NTUzNSBmDQowMDAwMDAwODEzIDY1NTM1IGYNCjAwMDAwMDA4MTQgNjU1MzUg
Zg0KMDAwMDAwMDgxNSA2NTUzNSBmDQowMDAwMDAwODE2IDY1NTM1IGYNCjAw
MDAwMDA4MTcgNjU1MzUgZg0KMDAwMDAwMDgxOCA2NTUzNSBmDQowMDAwMDAw
ODIwIDY1NTM1IGYNCjAwMDA0MDQzNjIgMDAwMDAgbg0KMDAwMDAwMDgyMSA2
NTUzNSBmDQowMDAwMDAwODIyIDY1NTM1IGYNCjAwMDAwMDA4MjMgNjU1MzUg
Zg0KMDAwMDAwMDgyNCA2NTUzNSBmDQowMDAwMDAwODI1IDY1NTM1IGYNCjAw
MDAwMDA4MjYgNjU1MzUgZg0KMDAwMDAwMDgyNyA2NTUzNSBmDQowMDAwMDAw
ODI4IDY1NTM1IGYNCjAwMDAwMDA4MjkgNjU1MzUgZg0KMDAwMDAwMDgzMCA2
NTUzNSBmDQowMDAwMDAwODMyIDY1NTM1IGYNCjAwMDA0MDQ0MTMgMDAwMDAg
bg0KMDAwMDAwMDgzMyA2NTUzNSBmDQowMDAwMDAwODM0IDY1NTM1IGYNCjAw
MDAwMDA4MzUgNjU1MzUgZg0KMDAwMDAwMDgzNiA2NTUzNSBmDQowMDAwMDAw
ODM3IDY1NTM1IGYNCjAwMDAwMDA4MzggNjU1MzUgZg0KMDAwMDAwMDgzOSA2
NTUzNSBmDQowMDAwMDAwODQwIDY1NTM1IGYNCjAwMDAwMDA4NDEgNjU1MzUg
Zg0KMDAwMDAwMDg0MiA2NTUzNSBmDQowMDAwMDAwODQzIDY1NTM1IGYNCjAw
MDAwMDA4NDQgNjU1MzUgZg0KMDAwMDAwMDg0NiA2NTUzNSBmDQowMDAwNDA0
NDY0IDAwMDAwIG4NCjAwMDAwMDA4NDcgNjU1MzUgZg0KMDAwMDAwMDg0OCA2
NTUzNSBmDQowMDAwMDAwODQ5IDY1NTM1IGYNCjAwMDAwMDA4NTAgNjU1MzUg
Zg0KMDAwMDAwMDg1MSA2NTUzNSBmDQowMDAwMDAwODUyIDY1NTM1IGYNCjAw
MDAwMDA4NTMgNjU1MzUgZg0KMDAwMDAwMDg1NCA2NTUzNSBmDQowMDAwMDAw
ODU2IDY1NTM1IGYNCjAwMDA0MDQ1MTUgMDAwMDAgbg0KMDAwMDAwMDg1NyA2
NTUzNSBmDQowMDAwMDAwODU4IDY1NTM1IGYNCjAwMDAwMDA4NTkgNjU1MzUg
Zg0KMDAwMDAwMDg2MCA2NTUzNSBmDQowMDAwMDAwODYxIDY1NTM1IGYNCjAw
MDAwMDA4NjIgNjU1MzUgZg0KMDAwMDAwMDg2NCA2NTUzNSBmDQowMDAwNDA0
NTY2IDAwMDAwIG4NCjAwMDAwMDA4NjUgNjU1MzUgZg0KMDAwMDAwMDg2NiA2
NTUzNSBmDQowMDAwMDAwODY3IDY1NTM1IGYNCjAwMDAwMDA4NjggNjU1MzUg
Zg0KMDAwMDAwMDg2OSA2NTUzNSBmDQowMDAwMDAwODcwIDY1NTM1IGYNCjAw
MDAwMDA4NzEgNjU1MzUgZg0KMDAwMDAwMDg3MiA2NTUzNSBmDQowMDAwMDAw
ODczIDY1NTM1IGYNCjAwMDAwMDA4NzQgNjU1MzUgZg0KMDAwMDAwMDg3NSA2
NTUzNSBmDQowMDAwMDAwODc2IDY1NTM1IGYNCjAwMDAwMDA4NzcgNjU1MzUg
Zg0KMDAwMDAwMDg3OCA2NTUzNSBmDQowMDAwMDAwODc5IDY1NTM1IGYNCjAw
MDAwMDA4ODAgNjU1MzUgZg0KMDAwMDAwMDg4MSA2NTUzNSBmDQowMDAwMDAw
ODgyIDY1NTM1IGYNCjAwMDAwMDA4ODMgNjU1MzUgZg0KMDAwMDAwMDg4NCA2
NTUzNSBmDQowMDAwMDAwODg1IDY1NTM1IGYNCjAwMDAwMDA4ODYgNjU1MzUg
Zg0KMDAwMDAwMDg4OCA2NTUzNSBmDQowMDAwNDA0NjE3IDAwMDAwIG4NCjAw
MDAwMDA4ODkgNjU1MzUgZg0KMDAwMDAwMDg5MCA2NTUzNSBmDQowMDAwMDAw
ODkxIDY1NTM1IGYNCjAwMDAwMDA4OTIgNjU1MzUgZg0KMDAwMDAwMDg5MyA2
NTUzNSBmDQowMDAwMDAwODk0IDY1NTM1IGYNCjAwMDAwMDA4OTYgNjU1MzUg
Zg0KMDAwMDQwNDY2OCAwMDAwMCBuDQowMDAwMDAwODk3IDY1NTM1IGYNCjAw
MDAwMDA4OTggNjU1MzUgZg0KMDAwMDAwMDg5OSA2NTUzNSBmDQowMDAwMDAw
OTAwIDY1NTM1IGYNCjAwMDAwMDA5MDEgNjU1MzUgZg0KMDAwMDAwMDkwMiA2
NTUzNSBmDQowMDAwMDAwOTA0IDY1NTM1IGYNCjAwMDA0MDQ3MTkgMDAwMDAg
bg0KMDAwMDAwMDkwNSA2NTUzNSBmDQowMDAwMDAwOTA2IDY1NTM1IGYNCjAw
MDAwMDA5MDcgNjU1MzUgZg0KMDAwMDAwMDkwOCA2NTUzNSBmDQowMDAwMDAw
OTA5IDY1NTM1IGYNCjAwMDAwMDA5MTAgNjU1MzUgZg0KMDAwMDAwMDkxMSA2
NTUzNSBmDQowMDAwMDAwOTEyIDY1NTM1IGYNCjAwMDAwMDA5MTMgNjU1MzUg
Zg0KMDAwMDAwMDkxNCA2NTUzNSBmDQowMDAwMDAwOTE1IDY1NTM1IGYNCjAw
MDAwMDA5MTYgNjU1MzUgZg0KMDAwMDAwMDkxNyA2NTUzNSBmDQowMDAwMDAw
OTE4IDY1NTM1IGYNCjAwMDAwMDA5MTkgNjU1MzUgZg0KMDAwMDAwMDkyMCA2
NTUzNSBmDQowMDAwMDAwOTIxIDY1NTM1IGYNCjAwMDAwMDA5MjIgNjU1MzUg
Zg0KMDAwMDAwMDkyMyA2NTUzNSBmDQowMDAwMDAwOTI0IDY1NTM1IGYNCjAw
MDAwMDA5MjUgNjU1MzUgZg0KMDAwMDAwMDkyNiA2NTUzNSBmDQowMDAwMDAw
OTI3IDY1NTM1IGYNCjAwMDAwMDA5MjggNjU1MzUgZg0KMDAwMDAwMDkyOSA2
NTUzNSBmDQowMDAwMDAwOTMwIDY1NTM1IGYNCjAwMDAwMDA5MzIgNjU1MzUg
Zg0KMDAwMDQwNDc3MCAwMDAwMCBuDQowMDAwMDAwOTMzIDY1NTM1IGYNCjAw
MDAwMDA5MzQgNjU1MzUgZg0KMDAwMDAwMDkzNSA2NTUzNSBmDQowMDAwMDAw
OTM2IDY1NTM1IGYNCjAwMDAwMDA5MzcgNjU1MzUgZg0KMDAwMDAwMDkzOCA2
NTUzNSBmDQowMDAwMDAwOTM5IDY1NTM1IGYNCjAwMDAwMDA5NDAgNjU1MzUg
Zg0KMDAwMDAwMDk0MSA2NTUzNSBmDQowMDAwMDAwOTQyIDY1NTM1IGYNCjAw
MDAwMDA5NDQgNjU1MzUgZg0KMDAwMDQwNDgyMSAwMDAwMCBuDQowMDAwMDAw
OTQ1IDY1NTM1IGYNCjAwMDAwMDA5NDYgNjU1MzUgZg0KMDAwMDAwMDk0NyA2
NTUzNSBmDQowMDAwMDAwOTQ4IDY1NTM1IGYNCjAwMDAwMDA5NDkgNjU1MzUg
Zg0KMDAwMDAwMDk1MCA2NTUzNSBmDQowMDAwMDAwOTUxIDY1NTM1IGYNCjAw
MDAwMDA5NTIgNjU1MzUgZg0KMDAwMDAwMDk1MyA2NTUzNSBmDQowMDAwMDAw
OTU0IDY1NTM1IGYNCjAwMDAwMDA5NTUgNjU1MzUgZg0KMDAwMDAwMDk1NiA2
NTUzNSBmDQowMDAwMDAwOTU3IDY1NTM1IGYNCjAwMDAwMDA5NTkgNjU1MzUg
Zg0KMDAwMDQwNDg3MiAwMDAwMCBuDQowMDAwMDAwOTYwIDY1NTM1IGYNCjAw
MDAwMDA5NjEgNjU1MzUgZg0KMDAwMDAwMDk2MiA2NTUzNSBmDQowMDAwMDAw
OTYzIDY1NTM1IGYNCjAwMDAwMDA5NjUgNjU1MzUgZg0KMDAwMDQwNDkyMyAw
MDAwMCBuDQowMDAwMDAwOTY2IDY1NTM1IGYNCjAwMDAwMDA5NjcgNjU1MzUg
Zg0KMDAwMDAwMDk2OCA2NTUzNSBmDQowMDAwMDAwOTY5IDY1NTM1IGYNCjAw
MDAwMDA5NzAgNjU1MzUgZg0KMDAwMDAwMDk3MSA2NTUzNSBmDQowMDAwMDAw
OTcyIDY1NTM1IGYNCjAwMDAwMDA5NzQgNjU1MzUgZg0KMDAwMDQwNDk3NCAw
MDAwMCBuDQowMDAwMDAwOTc1IDY1NTM1IGYNCjAwMDAwMDA5NzYgNjU1MzUg
Zg0KMDAwMDAwMDk3NyA2NTUzNSBmDQowMDAwMDAwOTc4IDY1NTM1IGYNCjAw
MDAwMDA5NzkgNjU1MzUgZg0KMDAwMDAwMDk4MCA2NTUzNSBmDQowMDAwMDAw
OTgxIDY1NTM1IGYNCjAwMDAwMDA5ODIgNjU1MzUgZg0KMDAwMDAwMDk4MyA2
NTUzNSBmDQowMDAwMDAwOTg0IDY1NTM1IGYNCjAwMDAwMDA5ODUgNjU1MzUg
Zg0KMDAwMDAwMDk4NiA2NTUzNSBmDQowMDAwMDAwOTg4IDY1NTM1IGYNCjAw
MDA0MDUwMjUgMDAwMDAgbg0KMDAwMDAwMDk4OSA2NTUzNSBmDQowMDAwMDAw
OTkwIDY1NTM1IGYNCjAwMDAwMDA5OTEgNjU1MzUgZg0KMDAwMDAwMDk5MiA2
NTUzNSBmDQowMDAwMDAwOTkzIDY1NTM1IGYNCjAwMDAwMDA5OTQgNjU1MzUg
Zg0KMDAwMDAwMDk5NSA2NTUzNSBmDQowMDAwMDAwOTk2IDY1NTM1IGYNCjAw
MDAwMDA5OTggNjU1MzUgZg0KMDAwMDQwNTA3NiAwMDAwMCBuDQowMDAwMDAw
OTk5IDY1NTM1IGYNCjAwMDAwMDEwMDAgNjU1MzUgZg0KMDAwMDAwMTAwMSA2
NTUzNSBmDQowMDAwMDAxMDAyIDY1NTM1IGYNCjAwMDAwMDEwMDMgNjU1MzUg
Zg0KMDAwMDAwMTAwNCA2NTUzNSBmDQowMDAwMDAxMDA2IDY1NTM1IGYNCjAw
MDA0MDUxMjcgMDAwMDAgbg0KMDAwMDAwMTAwNyA2NTUzNSBmDQowMDAwMDAx
MDA4IDY1NTM1IGYNCjAwMDAwMDEwMDkgNjU1MzUgZg0KMDAwMDAwMTAxMCA2
NTUzNSBmDQowMDAwMDAxMDExIDY1NTM1IGYNCjAwMDAwMDEwMTIgNjU1MzUg
Zg0KMDAwMDAwMTAxMyA2NTUzNSBmDQowMDAwMDAxMDE0IDY1NTM1IGYNCjAw
MDAwMDEwMTUgNjU1MzUgZg0KMDAwMDAwMTAxNiA2NTUzNSBmDQowMDAwMDAx
MDE3IDY1NTM1IGYNCjAwMDAwMDEwMTggNjU1MzUgZg0KMDAwMDAwMTAxOSA2
NTUzNSBmDQowMDAwMDAxMDIwIDY1NTM1IGYNCjAwMDAwMDEwMjEgNjU1MzUg
Zg0KMDAwMDAwMTAyMiA2NTUzNSBmDQowMDAwMDAxMDIzIDY1NTM1IGYNCjAw
MDAwMDEwMjQgNjU1MzUgZg0KMDAwMDAwMTAyNSA2NTUzNSBmDQowMDAwMDAx
MDI2IDY1NTM1IGYNCjAwMDAwMDEwMjcgNjU1MzUgZg0KMDAwMDAwMTAyOSA2
NTUzNSBmDQowMDAwNDA1MTc5IDAwMDAwIG4NCjAwMDAwMDEwMzAgNjU1MzUg
Zg0KMDAwMDAwMTAzMSA2NTUzNSBmDQowMDAwMDAxMDMyIDY1NTM1IGYNCjAw
MDAwMDEwMzQgNjU1MzUgZg0KMDAwMDQwNTIzMSAwMDAwMCBuDQowMDAwMDAx
MDM1IDY1NTM1IGYNCjAwMDAwMDEwMzYgNjU1MzUgZg0KMDAwMDAwMTAzNyA2
NTUzNSBmDQowMDAwMDAxMDM4IDY1NTM1IGYNCjAwMDAwMDEwMzkgNjU1MzUg
Zg0KMDAwMDAwMTA0MCA2NTUzNSBmDQowMDAwMDAxMDQxIDY1NTM1IGYNCjAw
MDAwMDEwNDIgNjU1MzUgZg0KMDAwMDAwMTA0MyA2NTUzNSBmDQowMDAwMDAx
MDQ0IDY1NTM1IGYNCjAwMDAwMDEwNDUgNjU1MzUgZg0KMDAwMDAwMTA0NiA2
NTUzNSBmDQowMDAwMDAxMDQ3IDY1NTM1IGYNCjAwMDAwMDEwNDggNjU1MzUg
Zg0KMDAwMDAwMTA0OSA2NTUzNSBmDQowMDAwMDAxMDUwIDY1NTM1IGYNCjAw
MDAwMDEwNTEgNjU1MzUgZg0KMDAwMDAwMTA1MiA2NTUzNSBmDQowMDAwMDAx
MDUzIDY1NTM1IGYNCjAwMDAwMDEwNTQgNjU1MzUgZg0KMDAwMDAwMTA1NSA2
NTUzNSBmDQowMDAwMDAxMDU2IDY1NTM1IGYNCjAwMDAwMDEwNTggNjU1MzUg
Zg0KMDAwMDQwNTI4MyAwMDAwMCBuDQowMDAwMDAxMDU5IDY1NTM1IGYNCjAw
MDAwMDEwNjAgNjU1MzUgZg0KMDAwMDAwMTA2MSA2NTUzNSBmDQowMDAwMDAx
MDYzIDY1NTM1IGYNCjAwMDA0MDUzMzUgMDAwMDAgbg0KMDAwMDAwMTA2NCA2
NTUzNSBmDQowMDAwMDAxMDY1IDY1NTM1IGYNCjAwMDAwMDEwNjYgNjU1MzUg
Zg0KMDAwMDAwMTA2NyA2NTUzNSBmDQowMDAwMDAxMDY4IDY1NTM1IGYNCjAw
MDAwMDEwNjkgNjU1MzUgZg0KMDAwMDAwMTA3MCA2NTUzNSBmDQowMDAwMDAx
MDcxIDY1NTM1IGYNCjAwMDAwMDEwNzIgNjU1MzUgZg0KMDAwMDAwMTA3NCA2
NTUzNSBmDQowMDAwNDA1Mzg3IDAwMDAwIG4NCjAwMDAwMDEwNzUgNjU1MzUg
Zg0KMDAwMDAwMTA3NiA2NTUzNSBmDQowMDAwMDAxMDc3IDY1NTM1IGYNCjAw
MDAwMDEwNzggNjU1MzUgZg0KMDAwMDAwMTA3OSA2NTUzNSBmDQowMDAwMDAx
MDgwIDY1NTM1IGYNCjAwMDAwMDEwODIgNjU1MzUgZg0KMDAwMDQwNTQzOSAw
MDAwMCBuDQowMDAwMDAxMDgzIDY1NTM1IGYNCjAwMDAwMDEwODQgNjU1MzUg
Zg0KMDAwMDAwMTA4NSA2NTUzNSBmDQowMDAwMDAxMDg2IDY1NTM1IGYNCjAw
MDAwMDEwODcgNjU1MzUgZg0KMDAwMDAwMTA4OCA2NTUzNSBmDQowMDAwMDAx
MDkwIDY1NTM1IGYNCjAwMDA0MDU0OTEgMDAwMDAgbg0KMDAwMDAwMTA5MSA2
NTUzNSBmDQowMDAwMDAxMDkyIDY1NTM1IGYNCjAwMDAwMDEwOTMgNjU1MzUg
Zg0KMDAwMDAwMTA5NCA2NTUzNSBmDQowMDAwMDAxMDk1IDY1NTM1IGYNCjAw
MDAwMDEwOTYgNjU1MzUgZg0KMDAwMDAwMTA5NyA2NTUzNSBmDQowMDAwMDAx
MDk4IDY1NTM1IGYNCjAwMDAwMDEwOTkgNjU1MzUgZg0KMDAwMDAwMTEwMCA2
NTUzNSBmDQowMDAwMDAxMTAxIDY1NTM1IGYNCjAwMDAwMDExMDIgNjU1MzUg
Zg0KMDAwMDAwMTEwMyA2NTUzNSBmDQowMDAwMDAxMTA0IDY1NTM1IGYNCjAw
MDAwMDExMDUgNjU1MzUgZg0KMDAwMDAwMTEwNiA2NTUzNSBmDQowMDAwMDAx
MTA3IDY1NTM1IGYNCjAwMDAwMDExMDggNjU1MzUgZg0KMDAwMDAwMTEwOSA2
NTUzNSBmDQowMDAwMDAxMTEwIDY1NTM1IGYNCjAwMDAwMDExMTEgNjU1MzUg
Zg0KMDAwMDAwMTExMiA2NTUzNSBmDQowMDAwMDAxMTEzIDY1NTM1IGYNCjAw
MDAwMDExMTQgNjU1MzUgZg0KMDAwMDAwMTExNSA2NTUzNSBmDQowMDAwMDAx
MTE2IDY1NTM1IGYNCjAwMDAwMDExMTcgNjU1MzUgZg0KMDAwMDAwMTExOCA2
NTUzNSBmDQowMDAwMDAxMTE5IDY1NTM1IGYNCjAwMDAwMDExMjAgNjU1MzUg
Zg0KMDAwMDAwMTEyMSA2NTUzNSBmDQowMDAwMDAxMTIyIDY1NTM1IGYNCjAw
MDAwMDExMjMgNjU1MzUgZg0KMDAwMDAwMTEyNCA2NTUzNSBmDQowMDAwMDAx
MTI1IDY1NTM1IGYNCjAwMDAwMDExMjYgNjU1MzUgZg0KMDAwMDAwMTEyNyA2
NTUzNSBmDQowMDAwMDAxMTI4IDY1NTM1IGYNCjAwMDAwMDExMjkgNjU1MzUg
Zg0KMDAwMDAwMTEzMCA2NTUzNSBmDQowMDAwMDAxMTMxIDY1NTM1IGYNCjAw
MDAwMDExMzIgNjU1MzUgZg0KMDAwMDAwMTEzMyA2NTUzNSBmDQowMDAwMDAx
MTM0IDY1NTM1IGYNCjAwMDAwMDExMzUgNjU1MzUgZg0KMDAwMDAwMTEzNiA2
NTUzNSBmDQowMDAwMDAxMTM3IDY1NTM1IGYNCjAwMDAwMDExMzggNjU1MzUg
Zg0KMDAwMDAwMTEzOSA2NTUzNSBmDQowMDAwMDAxMTQwIDY1NTM1IGYNCjAw
MDAwMDAwMDAgNjU1MzUgZg0KMDAwMDQwNTU0MyAwMDAwMCBuDQowMDAwNDA1
NjQyIDAwMDAwIG4NCjAwMDA0MDYwMzkgMDAwMDAgbg0KMDAwMDQ1NTgxMyAw
MDAwMCBuDQowMDAwNDU2MjU2IDAwMDAwIG4NCjAwMDA0NTY3MDEgMDAwMDAg
bg0KMDAwMDQ1NzAwMCAwMDAwMCBuDQowMDAwNDU3MzAyIDAwMDAwIG4NCjAw
MDA0NjI3NDAgMDAwMDAgbg0KMDAwMDQ2Mjc3NCAwMDAwMCBuDQowMDAwNDYz
MDc2IDAwMDAwIG4NCjAwMDA0NjY3MjIgMDAwMDAgbg0KMDAwMDQ2Njc2NyAw
MDAwMCBuDQowMDAwNDY3MDIyIDAwMDAwIG4NCjAwMDA0ODczNDUgMDAwMDAg
bg0KMDAwMDQ5MDQwNiAwMDAwMCBuDQowMDAwNDkwNDUzIDAwMDAwIG4NCnRy
YWlsZXINCjw8L1NpemUgMTE1OC9Sb290IDEgMCBSL0luZm8gMTE0MSAwIFIv
SURbPEU3MjM1NUJDM0I5RjFDNDI5RkQ2Rjk5QUIzNTg5MDJDPjxFNzIzNTVC
QzNCOUYxQzQyOUZENkY5OUFCMzU4OTAyQz5dID4+DQpzdGFydHhyZWYNCjQ5
MzI4OQ0KJSVFT0YNCnhyZWYNCjAgMA0KdHJhaWxlcg0KPDwvU2l6ZSAxMTU4
L1Jvb3QgMSAwIFIvSW5mbyAxMTQxIDAgUi9JRFs8RTcyMzU1QkMzQjlGMUM0
MjlGRDZGOTlBQjM1ODkwMkM+PEU3MjM1NUJDM0I5RjFDNDI5RkQ2Rjk5QUIz
NTg5MDJDPl0gL1ByZXYgNDkzMjg5L1hSZWZTdG0gNDkwNDUzPj4NCnN0YXJ0
eHJlZg0KNTE2NjEzDQolJUVPRg==

--8323329-1191896076-1704495511=:3675--


From xen-devel-bounces@lists.xenproject.org Sat Jan 06 09:03:06 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 06 Jan 2024 09:03:06 +0000
Received: from list by lists.xenproject.org with outflank-mailman.662491.1032581 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rM2Zj-0001jT-Lm; Sat, 06 Jan 2024 09:02:39 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 662491.1032581; Sat, 06 Jan 2024 09:02:39 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rM2Zj-0001jM-I5; Sat, 06 Jan 2024 09:02:39 +0000
Received: by outflank-mailman (input) for mailman id 662491;
 Sat, 06 Jan 2024 09:02:38 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rM2Zh-0001jC-Vf; Sat, 06 Jan 2024 09:02:37 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rM2Zh-0005Je-Iq; Sat, 06 Jan 2024 09:02:37 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rM2Zh-0001gY-3s; Sat, 06 Jan 2024 09:02:37 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rM2Zh-0002yQ-3U; Sat, 06 Jan 2024 09:02:37 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=xURZcUBr0YGRtoyUIFTwiE4ZTzGPnXR1Lz2rUUg4TOo=; b=avjZWAU78e0GkECBBdi1mbfFWU
	rtbx/0MVnzhTRmuTkBmrv+ixrKCHcUYJeKRCoS1CmBZJ5kf24EiwCSHFKI2oVIO0wlQLpBw4GPam9
	BO2XSn692vl9o3EeeU5p06X3DFYypybnXLzOWJamT/1xVjPHsY5dLhYSYRlBPyGBYS4g=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184261-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [xen-unstable test] 184261: tolerable FAIL
X-Osstest-Failures:
    xen-unstable:test-amd64-amd64-xl-qemut-debianhvm-i386-xsm:xen-boot:fail:heisenbug
    xen-unstable:test-amd64-i386-freebsd10-amd64:guest-localmigrate/x10:fail:heisenbug
    xen-unstable:test-armhf-armhf-xl-credit1:guest-start/debian.repeat:fail:heisenbug
    xen-unstable:test-amd64-amd64-xl-qemuu-win7-amd64:windows-install:fail:nonblocking
    xen-unstable:test-amd64-amd64-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-amd64-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-qcow2:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-raw:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-amd64-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-amd64-qemuu-nested-amd:debian-hvm-install/l1/l2:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-i386-libvirt-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-libvirt:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-pvshim:guest-start:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-xsm:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-credit1:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-credit2:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-thunderx:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-credit1:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-credit2:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-thunderx:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-libvirt-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-libvirt-xsm:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-arndale:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-arndale:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-multivcpu:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-multivcpu:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit1:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit1:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit2:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit2:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-libvirt-raw:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-libvirt-raw:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-libvirt-raw:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt-vhd:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-qcow2:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-vhd:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-vhd:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-raw:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-rtds:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-rtds:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-vhd:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-vhd:saverestore-support-check:fail:nonblocking
X-Osstest-Versions-This:
    xen=49818cde637b5ec20383e46b71f93b2e7d867686
X-Osstest-Versions-That:
    xen=49818cde637b5ec20383e46b71f93b2e7d867686
From: osstest service owner <osstest-admin@xenproject.org>
Date: Sat, 06 Jan 2024 09:02:37 +0000

flight 184261 xen-unstable real [real]
http://logs.test-lab.xenproject.org/osstest/logs/184261/

Failures :-/ but no regressions.

Tests which are failing intermittently (not blocking):
 test-amd64-amd64-xl-qemut-debianhvm-i386-xsm 8 xen-boot fail in 184253 pass in 184261
 test-amd64-i386-freebsd10-amd64 19 guest-localmigrate/x10  fail pass in 184253
 test-armhf-armhf-xl-credit1  18 guest-start/debian.repeat  fail pass in 184253

Tests which did not succeed, but are not blocking:
 test-amd64-amd64-xl-qemuu-win7-amd64 12 windows-install fail in 184253 like 184231
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 184249
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 184253
 test-amd64-amd64-xl-qemut-win7-amd64 19 guest-stop            fail like 184253
 test-amd64-i386-xl-qemuu-win7-amd64 19 guest-stop             fail like 184253
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 184253
 test-armhf-armhf-libvirt-qcow2 15 saverestore-support-check   fail like 184253
 test-amd64-i386-xl-qemut-ws16-amd64 19 guest-stop             fail like 184253
 test-armhf-armhf-libvirt-raw 15 saverestore-support-check    fail  like 184253
 test-amd64-i386-xl-qemut-win7-amd64 19 guest-stop             fail like 184253
 test-amd64-amd64-xl-qemut-ws16-amd64 19 guest-stop            fail like 184253
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 184253
 test-amd64-i386-xl-qemuu-ws16-amd64 19 guest-stop             fail like 184253
 test-amd64-i386-libvirt-xsm  15 migrate-support-check        fail   never pass
 test-amd64-i386-libvirt      15 migrate-support-check        fail   never pass
 test-amd64-i386-xl-pvshim    14 guest-start                  fail   never pass
 test-amd64-amd64-libvirt     15 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-arm64-arm64-xl-xsm      15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl          15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-xsm      16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl          16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-credit1  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit2  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-thunderx 15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit1  16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-credit2  16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-thunderx 16 saverestore-support-check    fail   never pass
 test-arm64-arm64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-xsm 16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-arndale  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-arndale  16 saverestore-support-check    fail   never pass
 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-armhf-armhf-xl-multivcpu 15 migrate-support-check        fail  never pass
 test-armhf-armhf-xl-multivcpu 16 saverestore-support-check    fail  never pass
 test-armhf-armhf-libvirt     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit1  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit1  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-credit2  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit2  16 saverestore-support-check    fail   never pass
 test-amd64-i386-libvirt-raw  14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 15 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-vhd 14 migrate-support-check        fail   never pass
 test-armhf-armhf-libvirt-qcow2 14 migrate-support-check        fail never pass
 test-arm64-arm64-xl-vhd      14 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-vhd      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-raw 14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-rtds     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-rtds     16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-vhd      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      15 saverestore-support-check    fail   never pass

version targeted for testing:
 xen                  49818cde637b5ec20383e46b71f93b2e7d867686
baseline version:
 xen                  49818cde637b5ec20383e46b71f93b2e7d867686

Last test of basis   184261  2024-01-06 01:52:09 Z    0 days
Testing same since                          (not found)         0 attempts

jobs:
 build-amd64-xsm                                              pass    
 build-arm64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64-xtf                                              pass    
 build-amd64                                                  pass    
 build-arm64                                                  pass    
 build-armhf                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-arm64-libvirt                                          pass    
 build-armhf-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-prev                                             pass    
 build-i386-prev                                              pass    
 build-amd64-pvops                                            pass    
 build-arm64-pvops                                            pass    
 build-armhf-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-xtf-amd64-amd64-1                                       pass    
 test-xtf-amd64-amd64-2                                       pass    
 test-xtf-amd64-amd64-3                                       pass    
 test-xtf-amd64-amd64-4                                       pass    
 test-xtf-amd64-amd64-5                                       pass    
 test-amd64-amd64-xl                                          pass    
 test-amd64-coresched-amd64-xl                                pass    
 test-arm64-arm64-xl                                          pass    
 test-armhf-armhf-xl                                          pass    
 test-amd64-i386-xl                                           pass    
 test-amd64-coresched-i386-xl                                 pass    
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm           pass    
 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm            pass    
 test-amd64-amd64-xl-qemut-stubdom-debianhvm-amd64-xsm        pass    
 test-amd64-i386-xl-qemut-stubdom-debianhvm-amd64-xsm         pass    
 test-amd64-amd64-xl-qemut-debianhvm-i386-xsm                 pass    
 test-amd64-i386-xl-qemut-debianhvm-i386-xsm                  pass    
 test-amd64-amd64-xl-qemuu-debianhvm-i386-xsm                 pass    
 test-amd64-i386-xl-qemuu-debianhvm-i386-xsm                  pass    
 test-amd64-amd64-libvirt-xsm                                 pass    
 test-arm64-arm64-libvirt-xsm                                 pass    
 test-amd64-i386-libvirt-xsm                                  pass    
 test-amd64-amd64-xl-xsm                                      pass    
 test-arm64-arm64-xl-xsm                                      pass    
 test-amd64-i386-xl-xsm                                       pass    
 test-amd64-amd64-qemuu-nested-amd                            fail    
 test-amd64-amd64-xl-pvhv2-amd                                pass    
 test-amd64-i386-qemut-rhel6hvm-amd                           pass    
 test-amd64-i386-qemuu-rhel6hvm-amd                           pass    
 test-amd64-amd64-dom0pvh-xl-amd                              pass    
 test-amd64-amd64-xl-qemut-debianhvm-amd64                    pass    
 test-amd64-i386-xl-qemut-debianhvm-amd64                     pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64                    pass    
 test-amd64-i386-xl-qemuu-debianhvm-amd64                     pass    
 test-amd64-i386-freebsd10-amd64                              fail    
 test-amd64-amd64-qemuu-freebsd11-amd64                       pass    
 test-amd64-amd64-qemuu-freebsd12-amd64                       pass    
 test-amd64-amd64-xl-qemuu-ovmf-amd64                         pass    
 test-amd64-i386-xl-qemuu-ovmf-amd64                          pass    
 test-amd64-amd64-xl-qemut-win7-amd64                         fail    
 test-amd64-i386-xl-qemut-win7-amd64                          fail    
 test-amd64-amd64-xl-qemuu-win7-amd64                         fail    
 test-amd64-i386-xl-qemuu-win7-amd64                          fail    
 test-amd64-amd64-xl-qemut-ws16-amd64                         fail    
 test-amd64-i386-xl-qemut-ws16-amd64                          fail    
 test-amd64-amd64-xl-qemuu-ws16-amd64                         fail    
 test-amd64-i386-xl-qemuu-ws16-amd64                          fail    
 test-armhf-armhf-xl-arndale                                  pass    
 test-amd64-amd64-examine-bios                                pass    
 test-amd64-i386-examine-bios                                 pass    
 test-amd64-amd64-xl-credit1                                  pass    
 test-arm64-arm64-xl-credit1                                  pass    
 test-armhf-armhf-xl-credit1                                  fail    
 test-amd64-amd64-xl-credit2                                  pass    
 test-arm64-arm64-xl-credit2                                  pass    
 test-armhf-armhf-xl-credit2                                  pass    
 test-amd64-amd64-xl-qemuu-dmrestrict-amd64-dmrestrict        pass    
 test-amd64-i386-xl-qemuu-dmrestrict-amd64-dmrestrict         pass    
 test-amd64-amd64-examine                                     pass    
 test-arm64-arm64-examine                                     pass    
 test-armhf-armhf-examine                                     pass    
 test-amd64-i386-examine                                      pass    
 test-amd64-i386-freebsd10-i386                               pass    
 test-amd64-amd64-qemuu-nested-intel                          pass    
 test-amd64-amd64-xl-pvhv2-intel                              pass    
 test-amd64-i386-qemut-rhel6hvm-intel                         pass    
 test-amd64-i386-qemuu-rhel6hvm-intel                         pass    
 test-amd64-amd64-dom0pvh-xl-intel                            pass    
 test-amd64-amd64-libvirt                                     pass    
 test-armhf-armhf-libvirt                                     pass    
 test-amd64-i386-libvirt                                      pass    
 test-amd64-amd64-livepatch                                   pass    
 test-amd64-i386-livepatch                                    pass    
 test-amd64-amd64-migrupgrade                                 pass    
 test-amd64-i386-migrupgrade                                  pass    
 test-amd64-amd64-xl-multivcpu                                pass    
 test-armhf-armhf-xl-multivcpu                                pass    
 test-amd64-amd64-pair                                        pass    
 test-amd64-i386-pair                                         pass    
 test-amd64-amd64-libvirt-pair                                pass    
 test-amd64-i386-libvirt-pair                                 pass    
 test-amd64-amd64-xl-pvshim                                   pass    
 test-amd64-i386-xl-pvshim                                    fail    
 test-amd64-amd64-pygrub                                      pass    
 test-armhf-armhf-libvirt-qcow2                               pass    
 test-amd64-amd64-xl-qcow2                                    pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-armhf-armhf-libvirt-raw                                 pass    
 test-amd64-i386-libvirt-raw                                  pass    
 test-amd64-amd64-xl-rtds                                     pass    
 test-armhf-armhf-xl-rtds                                     pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64-shadow             pass    
 test-amd64-i386-xl-qemuu-debianhvm-amd64-shadow              pass    
 test-amd64-amd64-xl-shadow                                   pass    
 test-amd64-i386-xl-shadow                                    pass    
 test-arm64-arm64-xl-thunderx                                 pass    
 test-amd64-amd64-examine-uefi                                pass    
 test-amd64-i386-examine-uefi                                 pass    
 test-amd64-amd64-libvirt-vhd                                 pass    
 test-arm64-arm64-xl-vhd                                      pass    
 test-armhf-armhf-xl-vhd                                      pass    
 test-amd64-i386-xl-vhd                                       pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Published tested tree is already up to date.



From xen-devel-bounces@lists.xenproject.org Sat Jan 06 13:13:34 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 06 Jan 2024 13:13:34 +0000
Received: from list by lists.xenproject.org with outflank-mailman.662513.1032591 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rM6UK-0004NM-Jf; Sat, 06 Jan 2024 13:13:20 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 662513.1032591; Sat, 06 Jan 2024 13:13:20 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rM6UK-0004NE-Dr; Sat, 06 Jan 2024 13:13:20 +0000
Received: by outflank-mailman (input) for mailman id 662513;
 Sat, 06 Jan 2024 13:13:18 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rM6UI-0004N4-S3; Sat, 06 Jan 2024 13:13:18 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rM6UI-0002GI-JI; Sat, 06 Jan 2024 13:13:18 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rM6UI-0005Vp-4A; Sat, 06 Jan 2024 13:13:18 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rM6UI-0007u0-3N; Sat, 06 Jan 2024 13:13:18 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=ttIyV8Xr+tV8IaItJRHlA54wjVNbV4RP+t5HCDmVmOM=; b=0ie2EZLAdIpGXhrxp8Y6DWf5Co
	phrgeOZfQjDPiW8KjuRs5UmBw57AvPwSMCeqBRrDR+CkO71XmhBmQ7iSDj55POonAVn4xbMotDXS9
	NA9l3bQR/wGBHZygqkdCjesk7HItJbJjnF5ULuneWAb/LOibJIrUhus1Jeso2CJU4+Rc=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184262-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [linux-linus test] 184262: tolerable FAIL - PUSHED
X-Osstest-Failures:
    linux-linus:test-amd64-amd64-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    linux-linus:test-amd64-amd64-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    linux-linus:test-amd64-amd64-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-raw:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-qcow2:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-qemuu-nested-amd:debian-hvm-install/l1/l2:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-xsm:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-credit1:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-thunderx:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-credit1:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-thunderx:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-xsm:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-credit2:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-xsm:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-credit2:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-libvirt-xsm:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-libvirt-xsm:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-multivcpu:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-multivcpu:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-qcow2:migrate-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit1:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit1:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-arndale:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-arndale:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-rtds:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-rtds:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit2:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit2:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-libvirt-raw:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-vhd:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-vhd:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-vhd:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-vhd:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-qcow2:migrate-support-check:fail:nonblocking
X-Osstest-Versions-This:
    linux=a4ab2706bb1280693e7dff1c5c42a8cb9d70c177
X-Osstest-Versions-That:
    linux=1f874787ed9a2d78ed59cb21d0d90ac0178eceb0
From: osstest service owner <osstest-admin@xenproject.org>
Date: Sat, 06 Jan 2024 13:13:18 +0000

flight 184262 linux-linus real [real]
http://logs.test-lab.xenproject.org/osstest/logs/184262/

Failures :-/ but no regressions.

Tests which did not succeed, but are not blocking:
 test-amd64-amd64-xl-qemut-win7-amd64 19 guest-stop            fail like 184256
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 184256
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 184256
 test-armhf-armhf-libvirt-raw 15 saverestore-support-check    fail  like 184256
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 184256
 test-amd64-amd64-xl-qemut-ws16-amd64 19 guest-stop            fail like 184256
 test-armhf-armhf-libvirt-qcow2 15 saverestore-support-check   fail like 184256
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 184256
 test-amd64-amd64-libvirt     15 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl          15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl          16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-credit1  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-thunderx 15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit1  16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-thunderx 16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-xsm      15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit2  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-xsm      16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-credit2  16 saverestore-support-check    fail   never pass
 test-arm64-arm64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-xsm 16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-multivcpu 15 migrate-support-check        fail  never pass
 test-armhf-armhf-xl-multivcpu 16 saverestore-support-check    fail  never pass
 test-amd64-amd64-libvirt-qcow2 14 migrate-support-check        fail never pass
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-armhf-armhf-xl-credit1  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit1  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-arndale  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-arndale  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-rtds     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-rtds     16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-credit2  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit2  16 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-raw 14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 15 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-vhd      14 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-vhd      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-raw 14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          16 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-qcow2 14 migrate-support-check        fail never pass

version targeted for testing:
 linux                a4ab2706bb1280693e7dff1c5c42a8cb9d70c177
baseline version:
 linux                1f874787ed9a2d78ed59cb21d0d90ac0178eceb0

Last test of basis   184256  2024-01-05 04:22:32 Z    1 days
Failing since        184258  2024-01-05 18:43:58 Z    0 days    2 attempts
Testing same since   184262  2024-01-06 02:04:17 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Alex Deucher <alexander.deucher@amd.com>
  Anand Moon <linux.amoon@gmail.com>
  Arnd Bergmann <arnd@arndb.de>
  Asad Kamal <asad.kamal@amd.com>
  Daniel Wheeler <daniel.wheeler@amd.com>
  Dave Airlie <airlied@gmail.com>
  Dave Airlie <airlied@redhat.com>
  Geert Uytterhoeven <geert+renesas@glider.be>
  Hamza Mahfooz <hamza.mahfooz@amd.com>
  Jinghao Jia <jinghao7@illinois.edu>
  Jorge Ramirez-Ortiz <jorge@foundries.io>
  Joshua Ashton <joshua@froggi.es>
  Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
  Linus Torvalds <torvalds@linux-foundation.org>
  Lyude Paul <lyude@redhat.com>
  Masami Hiramatsu (Google) <mhiramat@kernel.org>
  Paolo Bonzini <pbonzini@redhat.com>
  Paul E. McKenney <paulmck@kernel.org>
  Rodrigo Siqueira <rodrigo.siqueira@amd.com>
  Shyam Prasad N <sprasad@microsoft.com>
  Simon Berz <simon@berz.me>
  Stefan Wahren <wahrenst@gmx.net>
  Steve French <stfrench@microsoft.com>
  Takashi Sakamoto <o-takashi@sakamocchi.jp>
  Ulf Hansson <ulf.hansson@linaro.org>
  Wade Wang <wade.wang@hp.com>
  Wayne Lin <wayne.lin@amd.com>
  Wenchao Chen <wenchao.chen@unisoc.com>
  Xaver Hugl <xaver.hugl@kde.org>
  Ziyang Huang <hzyitc@outlook.com>

jobs:
 build-amd64-xsm                                              pass    
 build-arm64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64                                                  pass    
 build-arm64                                                  pass    
 build-armhf                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-arm64-libvirt                                          pass    
 build-armhf-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-pvops                                            pass    
 build-arm64-pvops                                            pass    
 build-armhf-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-amd64-amd64-xl                                          pass    
 test-amd64-coresched-amd64-xl                                pass    
 test-arm64-arm64-xl                                          pass    
 test-armhf-armhf-xl                                          pass    
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm           pass    
 test-amd64-amd64-xl-qemut-stubdom-debianhvm-amd64-xsm        pass    
 test-amd64-amd64-xl-qemut-debianhvm-i386-xsm                 pass    
 test-amd64-amd64-xl-qemuu-debianhvm-i386-xsm                 pass    
 test-amd64-amd64-libvirt-xsm                                 pass    
 test-arm64-arm64-libvirt-xsm                                 pass    
 test-amd64-amd64-xl-xsm                                      pass    
 test-arm64-arm64-xl-xsm                                      pass    
 test-amd64-amd64-qemuu-nested-amd                            fail    
 test-amd64-amd64-xl-pvhv2-amd                                pass    
 test-amd64-amd64-dom0pvh-xl-amd                              pass    
 test-amd64-amd64-xl-qemut-debianhvm-amd64                    pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64                    pass    
 test-amd64-amd64-freebsd11-amd64                             pass    
 test-amd64-amd64-freebsd12-amd64                             pass    
 test-amd64-amd64-xl-qemuu-ovmf-amd64                         pass    
 test-amd64-amd64-xl-qemut-win7-amd64                         fail    
 test-amd64-amd64-xl-qemuu-win7-amd64                         fail    
 test-amd64-amd64-xl-qemut-ws16-amd64                         fail    
 test-amd64-amd64-xl-qemuu-ws16-amd64                         fail    
 test-armhf-armhf-xl-arndale                                  pass    
 test-amd64-amd64-examine-bios                                pass    
 test-amd64-amd64-xl-credit1                                  pass    
 test-arm64-arm64-xl-credit1                                  pass    
 test-armhf-armhf-xl-credit1                                  pass    
 test-amd64-amd64-xl-credit2                                  pass    
 test-arm64-arm64-xl-credit2                                  pass    
 test-armhf-armhf-xl-credit2                                  pass    
 test-amd64-amd64-xl-qemuu-dmrestrict-amd64-dmrestrict        pass    
 test-amd64-amd64-examine                                     pass    
 test-arm64-arm64-examine                                     pass    
 test-armhf-armhf-examine                                     pass    
 test-amd64-amd64-qemuu-nested-intel                          pass    
 test-amd64-amd64-xl-pvhv2-intel                              pass    
 test-amd64-amd64-dom0pvh-xl-intel                            pass    
 test-amd64-amd64-libvirt                                     pass    
 test-armhf-armhf-libvirt                                     pass    
 test-amd64-amd64-xl-multivcpu                                pass    
 test-armhf-armhf-xl-multivcpu                                pass    
 test-amd64-amd64-pair                                        pass    
 test-amd64-amd64-libvirt-pair                                pass    
 test-amd64-amd64-xl-pvshim                                   pass    
 test-amd64-amd64-pygrub                                      pass    
 test-amd64-amd64-libvirt-qcow2                               pass    
 test-armhf-armhf-libvirt-qcow2                               pass    
 test-amd64-amd64-libvirt-raw                                 pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-armhf-armhf-libvirt-raw                                 pass    
 test-amd64-amd64-xl-rtds                                     pass    
 test-armhf-armhf-xl-rtds                                     pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64-shadow             pass    
 test-amd64-amd64-xl-shadow                                   pass    
 test-arm64-arm64-xl-thunderx                                 pass    
 test-amd64-amd64-examine-uefi                                pass    
 test-amd64-amd64-xl-vhd                                      pass    
 test-arm64-arm64-xl-vhd                                      pass    
 test-armhf-armhf-xl-vhd                                      pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Pushing revision :

hint: The 'hooks/update' hook was ignored because it's not set as executable.
hint: You can disable this warning with `git config advice.ignoredHook false`.
hint: The 'hooks/post-receive' hook was ignored because it's not set as executable.
hint: You can disable this warning with `git config advice.ignoredHook false`.
hint: The 'hooks/post-update' hook was ignored because it's not set as executable.
hint: You can disable this warning with `git config advice.ignoredHook false`.
To xenbits.xen.org:/home/xen/git/linux-pvops.git
   1f874787ed9a..a4ab2706bb12  a4ab2706bb1280693e7dff1c5c42a8cb9d70c177 -> tested/linux-linus


From xen-devel-bounces@lists.xenproject.org Sat Jan 06 13:57:26 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 06 Jan 2024 13:57:26 +0000
Received: from list by lists.xenproject.org with outflank-mailman.662519.1032601 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rM7At-0000yL-QR; Sat, 06 Jan 2024 13:57:19 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 662519.1032601; Sat, 06 Jan 2024 13:57:19 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rM7At-0000yE-N8; Sat, 06 Jan 2024 13:57:19 +0000
Received: by outflank-mailman (input) for mailman id 662519;
 Sat, 06 Jan 2024 13:57:18 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=SiJJ=IQ=intel.com=lkp@srs-se1.protection.inumbo.net>)
 id 1rM7Ar-0000y3-Os
 for xen-devel@lists.xenproject.org; Sat, 06 Jan 2024 13:57:18 +0000
Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.10])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 7d70f166-ac9b-11ee-98ef-6d05b1d4d9a1;
 Sat, 06 Jan 2024 14:57:15 +0100 (CET)
Received: from fmsmga008.fm.intel.com ([10.253.24.58])
 by orvoesa102.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;
 06 Jan 2024 05:56:56 -0800
Received: from lkp-server02.sh.intel.com (HELO b07ab15da5fe) ([10.239.97.151])
 by fmsmga008.fm.intel.com with ESMTP; 06 Jan 2024 05:56:53 -0800
Received: from kbuild by b07ab15da5fe with local (Exim 4.96)
 (envelope-from <lkp@intel.com>) id 1rM7AR-0002Xk-1L;
 Sat, 06 Jan 2024 13:56:51 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 7d70f166-ac9b-11ee-98ef-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple;
  d=intel.com; i=@intel.com; q=dns/txt; s=Intel;
  t=1704549435; x=1736085435;
  h=date:from:to:cc:subject:message-id:references:
   mime-version:in-reply-to;
  bh=iEJTJz2Jddibopjfs8jx4G+D3yybQkJE2N06E9WrvVQ=;
  b=ZiHB2/gOGhEe2N6zUDe43qTxLhPuf04Pn8kEF8/us40v0GL+0NWRTtTZ
   8puJGMZTbSKllg7+ts2Lcs7/i3LnII5yRzFKZPHEJKrYU1jLxOt9uHbmk
   9dwiUBHZlJ6JW415b+aJetZjTjVF9Re5NDxruuVARzKc67wH9CNfwURvg
   Jun/qlKf4wp3H3U0Q53OuFOD4nhynG3U3glCaIH2LtBsFNf9j5tb37TMb
   bsHw6bLH3X/WNL6TFKTAiem9r4PP4/Er756LoVpyV2Agr8ssjme+vE9dy
   U4c/BJCD4a83bThG8rkN610iqZcqjFLHLn5sBe4/VhAzsl4HJja6pskvP
   w==;
X-IronPort-AV: E=McAfee;i="6600,9927,10945"; a="11012493"
X-IronPort-AV: E=Sophos;i="6.04,337,1695711600"; 
   d="scan'208";a="11012493"
X-ExtLoop1: 1
X-IronPort-AV: E=McAfee;i="6600,9927,10945"; a="846810525"
X-IronPort-AV: E=Sophos;i="6.04,337,1695711600"; 
   d="scan'208";a="846810525"
Date: Sat, 6 Jan 2024 21:56:45 +0800
From: kernel test robot <lkp@intel.com>
To: Oleksandr Tyshchenko <olekstysh@gmail.com>,
	xen-devel@lists.xenproject.org, linux-kernel@vger.kernel.org
Cc: llvm@lists.linux.dev, oe-kbuild-all@lists.linux.dev,
	Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>,
	Christian =?iso-8859-1?Q?K=F6nig?= <christian.koenig@amd.com>,
	Daniel Vetter <daniel@ffwll.ch>, Juergen Gross <jgross@suse.com>,
	Stefano Stabellini <sstabellini@kernel.org>
Subject: Re: [PATCH] xen/gntdev: Fix the abuse of underlying struct page in
 DMA-buf import
Message-ID: <202401062122.it6zvLG0-lkp@intel.com>
References: <20240104185327.177376-1-olekstysh@gmail.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <20240104185327.177376-1-olekstysh@gmail.com>

Hi Oleksandr,

kernel test robot noticed the following build warnings:

[auto build test WARNING on xen-tip/linux-next]
[also build test WARNING on linus/master v6.7-rc8 next-20240105]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]

url:    https://github.com/intel-lab-lkp/linux/commits/Oleksandr-Tyshchenko/xen-gntdev-Fix-the-abuse-of-underlying-struct-page-in-DMA-buf-import/20240105-025516
base:   https://git.kernel.org/pub/scm/linux/kernel/git/xen/tip.git linux-next
patch link:    https://lore.kernel.org/r/20240104185327.177376-1-olekstysh%40gmail.com
patch subject: [PATCH] xen/gntdev: Fix the abuse of underlying struct page in DMA-buf import
config: x86_64-allmodconfig (https://download.01.org/0day-ci/archive/20240106/202401062122.it6zvLG0-lkp@intel.com/config)
compiler: ClangBuiltLinux clang version 17.0.6 (https://github.com/llvm/llvm-project 6009708b4367171ccdbf4b5905cb6a803753fe18)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240106/202401062122.it6zvLG0-lkp@intel.com/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202401062122.it6zvLG0-lkp@intel.com/

All warnings (new ones prefixed by >>):

>> drivers/xen/gntdev-dmabuf.c:623:6: warning: variable 'ret' is used uninitialized whenever 'if' condition is true [-Wsometimes-uninitialized]
     623 |         if (!gfns)
         |             ^~~~~
   drivers/xen/gntdev-dmabuf.c:660:9: note: uninitialized use occurs here
     660 |         return ret;
         |                ^~~
   drivers/xen/gntdev-dmabuf.c:623:2: note: remove the 'if' if its condition is always false
     623 |         if (!gfns)
         |         ^~~~~~~~~~
     624 |                 goto fail_unmap;
         |                 ~~~~~~~~~~~~~~~
   drivers/xen/gntdev-dmabuf.c:569:43: note: initialize the variable 'ret' to silence this warning
     569 |         struct gntdev_dmabuf *gntdev_dmabuf, *ret;
         |                                                  ^
         |                                                   = NULL
   1 warning generated.


vim +623 drivers/xen/gntdev-dmabuf.c

   564	
   565	static struct gntdev_dmabuf *
   566	dmabuf_imp_to_refs(struct gntdev_dmabuf_priv *priv, struct device *dev,
   567			   int fd, int count, int domid)
   568	{
   569		struct gntdev_dmabuf *gntdev_dmabuf, *ret;
   570		struct dma_buf *dma_buf;
   571		struct dma_buf_attachment *attach;
   572		struct sg_table *sgt;
   573		struct sg_dma_page_iter sg_iter;
   574		unsigned long *gfns;
   575		int i;
   576	
   577		dma_buf = dma_buf_get(fd);
   578		if (IS_ERR(dma_buf))
   579			return ERR_CAST(dma_buf);
   580	
   581		gntdev_dmabuf = dmabuf_imp_alloc_storage(count);
   582		if (IS_ERR(gntdev_dmabuf)) {
   583			ret = gntdev_dmabuf;
   584			goto fail_put;
   585		}
   586	
   587		gntdev_dmabuf->priv = priv;
   588		gntdev_dmabuf->fd = fd;
   589	
   590		attach = dma_buf_attach(dma_buf, dev);
   591		if (IS_ERR(attach)) {
   592			ret = ERR_CAST(attach);
   593			goto fail_free_obj;
   594		}
   595	
   596		gntdev_dmabuf->u.imp.attach = attach;
   597	
   598		sgt = dma_buf_map_attachment_unlocked(attach, DMA_BIDIRECTIONAL);
   599		if (IS_ERR(sgt)) {
   600			ret = ERR_CAST(sgt);
   601			goto fail_detach;
   602		}
   603	
   604		/* Check that we have zero offset. */
   605		if (sgt->sgl->offset) {
   606			ret = ERR_PTR(-EINVAL);
   607			pr_debug("DMA buffer has %d bytes offset, user-space expects 0\n",
   608				 sgt->sgl->offset);
   609			goto fail_unmap;
   610		}
   611	
   612		/* Check number of pages that imported buffer has. */
   613		if (attach->dmabuf->size != gntdev_dmabuf->nr_pages << PAGE_SHIFT) {
   614			ret = ERR_PTR(-EINVAL);
   615			pr_debug("DMA buffer has %zu pages, user-space expects %d\n",
   616				 attach->dmabuf->size, gntdev_dmabuf->nr_pages);
   617			goto fail_unmap;
   618		}
   619	
   620		gntdev_dmabuf->u.imp.sgt = sgt;
   621	
   622		gfns = kcalloc(count, sizeof(*gfns), GFP_KERNEL);
 > 623		if (!gfns)
   624			goto fail_unmap;
   625	
   626		/* Now convert sgt to array of gfns without accessing underlying pages. */
   627		i = 0;
   628		for_each_sgtable_dma_page(sgt, &sg_iter, 0) {
   629			dma_addr_t addr = sg_page_iter_dma_address(&sg_iter);
   630			unsigned long pfn = bfn_to_pfn(XEN_PFN_DOWN(dma_to_phys(dev, addr)));
   631	
   632			gfns[i++] = pfn_to_gfn(pfn);
   633		}
   634	
   635		ret = ERR_PTR(dmabuf_imp_grant_foreign_access(gfns,
   636							      gntdev_dmabuf->u.imp.refs,
   637							      count, domid));
   638		kfree(gfns);
   639		if (IS_ERR(ret))
   640			goto fail_end_access;
   641	
   642		pr_debug("Imported DMA buffer with fd %d\n", fd);
   643	
   644		mutex_lock(&priv->lock);
   645		list_add(&gntdev_dmabuf->next, &priv->imp_list);
   646		mutex_unlock(&priv->lock);
   647	
   648		return gntdev_dmabuf;
   649	
   650	fail_end_access:
   651		dmabuf_imp_end_foreign_access(gntdev_dmabuf->u.imp.refs, count);
   652	fail_unmap:
   653		dma_buf_unmap_attachment_unlocked(attach, sgt, DMA_BIDIRECTIONAL);
   654	fail_detach:
   655		dma_buf_detach(dma_buf, attach);
   656	fail_free_obj:
   657		dmabuf_imp_free_storage(gntdev_dmabuf);
   658	fail_put:
   659		dma_buf_put(dma_buf);
   660		return ret;
   661	}
   662	

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki


From xen-devel-bounces@lists.xenproject.org Sat Jan 06 17:21:38 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 06 Jan 2024 17:21:38 +0000
Received: from list by lists.xenproject.org with outflank-mailman.662523.1032611 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMAMM-0000Qq-La; Sat, 06 Jan 2024 17:21:22 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 662523.1032611; Sat, 06 Jan 2024 17:21:22 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMAMM-0000Qj-Id; Sat, 06 Jan 2024 17:21:22 +0000
Received: by outflank-mailman (input) for mailman id 662523;
 Sat, 06 Jan 2024 17:21:20 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rMAMK-0000QZ-Dk; Sat, 06 Jan 2024 17:21:20 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rMAMK-0000EC-4W; Sat, 06 Jan 2024 17:21:20 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rMAMJ-00010m-KF; Sat, 06 Jan 2024 17:21:19 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rMAMJ-0006zG-Jg; Sat, 06 Jan 2024 17:21:19 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=MJRixD01BItG3MeBRz6fzJKZlNjZuMI1vWwUQGvWTZ0=; b=DYwV04QSiHAnj8sYpRmA97krBk
	MjaoUBzCUoSD54P7MHFMsFAhSLKIKzmSOpOL3gBDVNivCFC/z+MB07dKbaveERZ+vGKMuEAVaSRPU
	0kT7uMa3ShuWQDrDcbjR3xPseUiUAuA5DwgpZorz0w0d1iYKa34n1RNIFEmTDuV+inUY=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184263-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [libvirt test] 184263: tolerable FAIL - PUSHED
X-Osstest-Failures:
    libvirt:test-arm64-arm64-libvirt-qcow2:guest-start/debian.repeat:fail:heisenbug
    libvirt:test-armhf-armhf-libvirt:saverestore-support-check:fail:nonblocking
    libvirt:test-armhf-armhf-libvirt-qcow2:saverestore-support-check:fail:nonblocking
    libvirt:test-armhf-armhf-libvirt-raw:saverestore-support-check:fail:nonblocking
    libvirt:test-amd64-i386-libvirt-xsm:migrate-support-check:fail:nonblocking
    libvirt:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    libvirt:test-amd64-amd64-libvirt-xsm:migrate-support-check:fail:nonblocking
    libvirt:test-amd64-i386-libvirt:migrate-support-check:fail:nonblocking
    libvirt:test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    libvirt:test-arm64-arm64-libvirt:migrate-support-check:fail:nonblocking
    libvirt:test-arm64-arm64-libvirt:saverestore-support-check:fail:nonblocking
    libvirt:test-arm64-arm64-libvirt-xsm:migrate-support-check:fail:nonblocking
    libvirt:test-arm64-arm64-libvirt-xsm:saverestore-support-check:fail:nonblocking
    libvirt:test-amd64-i386-libvirt-raw:migrate-support-check:fail:nonblocking
    libvirt:test-amd64-amd64-libvirt-vhd:migrate-support-check:fail:nonblocking
    libvirt:test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    libvirt:test-armhf-armhf-libvirt:migrate-support-check:fail:nonblocking
    libvirt:test-arm64-arm64-libvirt-qcow2:migrate-support-check:fail:nonblocking
    libvirt:test-arm64-arm64-libvirt-qcow2:saverestore-support-check:fail:nonblocking
    libvirt:test-arm64-arm64-libvirt-raw:migrate-support-check:fail:nonblocking
    libvirt:test-arm64-arm64-libvirt-raw:saverestore-support-check:fail:nonblocking
    libvirt:test-armhf-armhf-libvirt-qcow2:migrate-support-check:fail:nonblocking
    libvirt:test-armhf-armhf-libvirt-raw:migrate-support-check:fail:nonblocking
X-Osstest-Versions-This:
    libvirt=8a743a598bfc3812eb01f605af8eef4ca7f95649
X-Osstest-Versions-That:
    libvirt=3a85755f668abd15b7936778a6a13fb8ce4a8c12
From: osstest service owner <osstest-admin@xenproject.org>
Date: Sat, 06 Jan 2024 17:21:19 +0000

flight 184263 libvirt real [real]
flight 184266 libvirt real-retest [real]
http://logs.test-lab.xenproject.org/osstest/logs/184263/
http://logs.test-lab.xenproject.org/osstest/logs/184266/

Failures :-/ but no regressions.

Tests which are failing intermittently (not blocking):
 test-arm64-arm64-libvirt-qcow2 17 guest-start/debian.repeat fail pass in 184266-retest

Tests which did not succeed, but are not blocking:
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 184255
 test-armhf-armhf-libvirt-qcow2 15 saverestore-support-check   fail like 184255
 test-armhf-armhf-libvirt-raw 15 saverestore-support-check    fail  like 184255
 test-amd64-i386-libvirt-xsm  15 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt     15 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-amd64-i386-libvirt      15 migrate-support-check        fail   never pass
 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-arm64-arm64-libvirt     15 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt     16 saverestore-support-check    fail   never pass
 test-arm64-arm64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-xsm 16 saverestore-support-check    fail   never pass
 test-amd64-i386-libvirt-raw  14 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt-vhd 14 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-armhf-armhf-libvirt     15 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-qcow2 14 migrate-support-check        fail never pass
 test-arm64-arm64-libvirt-qcow2 15 saverestore-support-check    fail never pass
 test-arm64-arm64-libvirt-raw 14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 15 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-qcow2 14 migrate-support-check        fail never pass
 test-armhf-armhf-libvirt-raw 14 migrate-support-check        fail   never pass

version targeted for testing:
 libvirt              8a743a598bfc3812eb01f605af8eef4ca7f95649
baseline version:
 libvirt              3a85755f668abd15b7936778a6a13fb8ce4a8c12

Last test of basis   184255  2024-01-05 04:21:01 Z    1 days
Testing same since   184263  2024-01-06 04:20:32 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Andrea Bolognani <abologna@redhat.com>
  Peter Krempa <pkrempa@redhat.com>

jobs:
 build-amd64-xsm                                              pass    
 build-arm64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64                                                  pass    
 build-arm64                                                  pass    
 build-armhf                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-arm64-libvirt                                          pass    
 build-armhf-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-pvops                                            pass    
 build-arm64-pvops                                            pass    
 build-armhf-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm           pass    
 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm            pass    
 test-amd64-amd64-libvirt-xsm                                 pass    
 test-arm64-arm64-libvirt-xsm                                 pass    
 test-amd64-i386-libvirt-xsm                                  pass    
 test-amd64-amd64-libvirt                                     pass    
 test-arm64-arm64-libvirt                                     pass    
 test-armhf-armhf-libvirt                                     pass    
 test-amd64-i386-libvirt                                      pass    
 test-amd64-amd64-libvirt-pair                                pass    
 test-amd64-i386-libvirt-pair                                 pass    
 test-arm64-arm64-libvirt-qcow2                               fail    
 test-armhf-armhf-libvirt-qcow2                               pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-armhf-armhf-libvirt-raw                                 pass    
 test-amd64-i386-libvirt-raw                                  pass    
 test-amd64-amd64-libvirt-vhd                                 pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Pushing revision :

To xenbits.xen.org:/home/xen/git/libvirt.git
   3a85755f66..8a743a598b  8a743a598bfc3812eb01f605af8eef4ca7f95649 -> xen-tested-master


From xen-devel-bounces@lists.xenproject.org Sat Jan 06 22:13:07 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 06 Jan 2024 22:13:07 +0000
Received: from list by lists.xenproject.org with outflank-mailman.662565.1032641 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMEuS-0002I8-I5; Sat, 06 Jan 2024 22:12:52 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 662565.1032641; Sat, 06 Jan 2024 22:12:52 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMEuS-0002I1-D3; Sat, 06 Jan 2024 22:12:52 +0000
Received: by outflank-mailman (input) for mailman id 662565;
 Sat, 06 Jan 2024 22:12:51 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rMEuR-0002Hr-DR; Sat, 06 Jan 2024 22:12:51 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rMEuR-0005es-B4; Sat, 06 Jan 2024 22:12:51 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rMEuQ-0008C1-QY; Sat, 06 Jan 2024 22:12:50 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rMEuQ-0004Y7-Q4; Sat, 06 Jan 2024 22:12:50 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=0rLcSI6rY9hXtb2wl/z/k9EyF5ila4XDgq2HAolgAIM=; b=ft2uSlfToZMBq9hnNwW9GjE9PZ
	dZZtxYicQZY9ba4zpJ6HuqT/3q24CHMJPELUds2h55qQ4Dg87qyzbvxAjVv0sgXyHe4REv4QBZlf1
	XTiJcCGb93NObO3G1fBS2pbai5XOaGk3IHIuiSOmW29ZGfOu2JpSFwXum8RLW1WdeS0s=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184264-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [xen-unstable test] 184264: tolerable FAIL - PUSHED
X-Osstest-Failures:
    xen-unstable:test-armhf-armhf-libvirt:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-amd64-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-qcow2:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-raw:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-amd64-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-amd64-qemuu-nested-amd:debian-hvm-install/l1/l2:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-amd64-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-i386-libvirt-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-libvirt:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-pvshim:guest-start:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-xsm:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-credit1:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-credit2:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-thunderx:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-credit1:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-credit2:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-thunderx:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-libvirt-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-libvirt-xsm:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-multivcpu:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-multivcpu:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit1:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit1:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-arndale:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit2:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-arndale:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit2:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-libvirt-raw:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-libvirt-raw:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-libvirt-raw:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt-vhd:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-qcow2:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-vhd:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-vhd:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-raw:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-rtds:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-rtds:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-vhd:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-vhd:saverestore-support-check:fail:nonblocking
X-Osstest-Versions-This:
    xen=5a3ace21f3d779b291a2d305824b2820d88de7f1
X-Osstest-Versions-That:
    xen=49818cde637b5ec20383e46b71f93b2e7d867686
From: osstest service owner <osstest-admin@xenproject.org>
Date: Sat, 06 Jan 2024 22:12:50 +0000

flight 184264 xen-unstable real [real]
http://logs.test-lab.xenproject.org/osstest/logs/184264/

Failures :-/ but no regressions.

Tests which did not succeed, but are not blocking:
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 184261
 test-amd64-amd64-xl-qemut-win7-amd64 19 guest-stop            fail like 184261
 test-amd64-i386-xl-qemuu-win7-amd64 19 guest-stop             fail like 184261
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 184261
 test-armhf-armhf-libvirt-qcow2 15 saverestore-support-check   fail like 184261
 test-amd64-i386-xl-qemut-ws16-amd64 19 guest-stop             fail like 184261
 test-armhf-armhf-libvirt-raw 15 saverestore-support-check    fail  like 184261
 test-amd64-i386-xl-qemut-win7-amd64 19 guest-stop             fail like 184261
 test-amd64-amd64-xl-qemut-ws16-amd64 19 guest-stop            fail like 184261
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 184261
 test-amd64-i386-xl-qemuu-ws16-amd64 19 guest-stop             fail like 184261
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 184261
 test-amd64-i386-libvirt-xsm  15 migrate-support-check        fail   never pass
 test-amd64-i386-libvirt      15 migrate-support-check        fail   never pass
 test-amd64-i386-xl-pvshim    14 guest-start                  fail   never pass
 test-amd64-amd64-libvirt     15 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-arm64-arm64-xl-xsm      15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl          15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-xsm      16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl          16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-credit1  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit2  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-thunderx 15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit1  16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-credit2  16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-thunderx 16 saverestore-support-check    fail   never pass
 test-arm64-arm64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-xsm 16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl          15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          16 saverestore-support-check    fail   never pass
 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-armhf-armhf-xl-multivcpu 15 migrate-support-check        fail  never pass
 test-armhf-armhf-xl-multivcpu 16 saverestore-support-check    fail  never pass
 test-armhf-armhf-libvirt     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit1  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit1  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-arndale  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit2  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-arndale  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-credit2  16 saverestore-support-check    fail   never pass
 test-amd64-i386-libvirt-raw  14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 15 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-vhd 14 migrate-support-check        fail   never pass
 test-armhf-armhf-libvirt-qcow2 14 migrate-support-check        fail never pass
 test-arm64-arm64-xl-vhd      14 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-vhd      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-raw 14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-rtds     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-rtds     16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-vhd      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      15 saverestore-support-check    fail   never pass

version targeted for testing:
 xen                  5a3ace21f3d779b291a2d305824b2820d88de7f1
baseline version:
 xen                  49818cde637b5ec20383e46b71f93b2e7d867686

Last test of basis   184261  2024-01-06 01:52:09 Z    0 days
Testing same since   184264  2024-01-06 09:10:39 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Federico Serafini <federico.serafini@bugseng.com>
  Julien Grall <jgrall@amazon.com>

jobs:
 build-amd64-xsm                                              pass    
 build-arm64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64-xtf                                              pass    
 build-amd64                                                  pass    
 build-arm64                                                  pass    
 build-armhf                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-arm64-libvirt                                          pass    
 build-armhf-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-prev                                             pass    
 build-i386-prev                                              pass    
 build-amd64-pvops                                            pass    
 build-arm64-pvops                                            pass    
 build-armhf-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-xtf-amd64-amd64-1                                       pass    
 test-xtf-amd64-amd64-2                                       pass    
 test-xtf-amd64-amd64-3                                       pass    
 test-xtf-amd64-amd64-4                                       pass    
 test-xtf-amd64-amd64-5                                       pass    
 test-amd64-amd64-xl                                          pass    
 test-amd64-coresched-amd64-xl                                pass    
 test-arm64-arm64-xl                                          pass    
 test-armhf-armhf-xl                                          pass    
 test-amd64-i386-xl                                           pass    
 test-amd64-coresched-i386-xl                                 pass    
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm           pass    
 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm            pass    
 test-amd64-amd64-xl-qemut-stubdom-debianhvm-amd64-xsm        pass    
 test-amd64-i386-xl-qemut-stubdom-debianhvm-amd64-xsm         pass    
 test-amd64-amd64-xl-qemut-debianhvm-i386-xsm                 pass    
 test-amd64-i386-xl-qemut-debianhvm-i386-xsm                  pass    
 test-amd64-amd64-xl-qemuu-debianhvm-i386-xsm                 pass    
 test-amd64-i386-xl-qemuu-debianhvm-i386-xsm                  pass    
 test-amd64-amd64-libvirt-xsm                                 pass    
 test-arm64-arm64-libvirt-xsm                                 pass    
 test-amd64-i386-libvirt-xsm                                  pass    
 test-amd64-amd64-xl-xsm                                      pass    
 test-arm64-arm64-xl-xsm                                      pass    
 test-amd64-i386-xl-xsm                                       pass    
 test-amd64-amd64-qemuu-nested-amd                            fail    
 test-amd64-amd64-xl-pvhv2-amd                                pass    
 test-amd64-i386-qemut-rhel6hvm-amd                           pass    
 test-amd64-i386-qemuu-rhel6hvm-amd                           pass    
 test-amd64-amd64-dom0pvh-xl-amd                              pass    
 test-amd64-amd64-xl-qemut-debianhvm-amd64                    pass    
 test-amd64-i386-xl-qemut-debianhvm-amd64                     pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64                    pass    
 test-amd64-i386-xl-qemuu-debianhvm-amd64                     pass    
 test-amd64-i386-freebsd10-amd64                              pass    
 test-amd64-amd64-qemuu-freebsd11-amd64                       pass    
 test-amd64-amd64-qemuu-freebsd12-amd64                       pass    
 test-amd64-amd64-xl-qemuu-ovmf-amd64                         pass    
 test-amd64-i386-xl-qemuu-ovmf-amd64                          pass    
 test-amd64-amd64-xl-qemut-win7-amd64                         fail    
 test-amd64-i386-xl-qemut-win7-amd64                          fail    
 test-amd64-amd64-xl-qemuu-win7-amd64                         fail    
 test-amd64-i386-xl-qemuu-win7-amd64                          fail    
 test-amd64-amd64-xl-qemut-ws16-amd64                         fail    
 test-amd64-i386-xl-qemut-ws16-amd64                          fail    
 test-amd64-amd64-xl-qemuu-ws16-amd64                         fail    
 test-amd64-i386-xl-qemuu-ws16-amd64                          fail    
 test-armhf-armhf-xl-arndale                                  pass    
 test-amd64-amd64-examine-bios                                pass    
 test-amd64-i386-examine-bios                                 pass    
 test-amd64-amd64-xl-credit1                                  pass    
 test-arm64-arm64-xl-credit1                                  pass    
 test-armhf-armhf-xl-credit1                                  pass    
 test-amd64-amd64-xl-credit2                                  pass    
 test-arm64-arm64-xl-credit2                                  pass    
 test-armhf-armhf-xl-credit2                                  pass    
 test-amd64-amd64-xl-qemuu-dmrestrict-amd64-dmrestrict        pass    
 test-amd64-i386-xl-qemuu-dmrestrict-amd64-dmrestrict         pass    
 test-amd64-amd64-examine                                     pass    
 test-arm64-arm64-examine                                     pass    
 test-armhf-armhf-examine                                     pass    
 test-amd64-i386-examine                                      pass    
 test-amd64-i386-freebsd10-i386                               pass    
 test-amd64-amd64-qemuu-nested-intel                          pass    
 test-amd64-amd64-xl-pvhv2-intel                              pass    
 test-amd64-i386-qemut-rhel6hvm-intel                         pass    
 test-amd64-i386-qemuu-rhel6hvm-intel                         pass    
 test-amd64-amd64-dom0pvh-xl-intel                            pass    
 test-amd64-amd64-libvirt                                     pass    
 test-armhf-armhf-libvirt                                     pass    
 test-amd64-i386-libvirt                                      pass    
 test-amd64-amd64-livepatch                                   pass    
 test-amd64-i386-livepatch                                    pass    
 test-amd64-amd64-migrupgrade                                 pass    
 test-amd64-i386-migrupgrade                                  pass    
 test-amd64-amd64-xl-multivcpu                                pass    
 test-armhf-armhf-xl-multivcpu                                pass    
 test-amd64-amd64-pair                                        pass    
 test-amd64-i386-pair                                         pass    
 test-amd64-amd64-libvirt-pair                                pass    
 test-amd64-i386-libvirt-pair                                 pass    
 test-amd64-amd64-xl-pvshim                                   pass    
 test-amd64-i386-xl-pvshim                                    fail    
 test-amd64-amd64-pygrub                                      pass    
 test-armhf-armhf-libvirt-qcow2                               pass    
 test-amd64-amd64-xl-qcow2                                    pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-armhf-armhf-libvirt-raw                                 pass    
 test-amd64-i386-libvirt-raw                                  pass    
 test-amd64-amd64-xl-rtds                                     pass    
 test-armhf-armhf-xl-rtds                                     pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64-shadow             pass    
 test-amd64-i386-xl-qemuu-debianhvm-amd64-shadow              pass    
 test-amd64-amd64-xl-shadow                                   pass    
 test-amd64-i386-xl-shadow                                    pass    
 test-arm64-arm64-xl-thunderx                                 pass    
 test-amd64-amd64-examine-uefi                                pass    
 test-amd64-i386-examine-uefi                                 pass    
 test-amd64-amd64-libvirt-vhd                                 pass    
 test-arm64-arm64-xl-vhd                                      pass    
 test-armhf-armhf-xl-vhd                                      pass    
 test-amd64-i386-xl-vhd                                       pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Pushing revision :

To xenbits.xen.org:/home/xen/git/xen.git
   49818cde63..5a3ace21f3  5a3ace21f3d779b291a2d305824b2820d88de7f1 -> master


From xen-devel-bounces@lists.xenproject.org Sun Jan 07 02:13:08 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sun, 07 Jan 2024 02:13:08 +0000
Received: from list by lists.xenproject.org with outflank-mailman.662572.1032651 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMIel-0002cT-1j; Sun, 07 Jan 2024 02:12:55 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 662572.1032651; Sun, 07 Jan 2024 02:12:55 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMIek-0002cJ-SG; Sun, 07 Jan 2024 02:12:54 +0000
Received: by outflank-mailman (input) for mailman id 662572;
 Sun, 07 Jan 2024 02:12:52 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rMIei-0002c9-ST; Sun, 07 Jan 2024 02:12:52 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rMIei-0001Ce-Jj; Sun, 07 Jan 2024 02:12:52 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rMIei-0005HQ-2I; Sun, 07 Jan 2024 02:12:52 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rMIei-0003xD-1q; Sun, 07 Jan 2024 02:12:52 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=1uRfHyRB59pisQfHzMYCO/UbaHwYXmP1Nu//o41fKak=; b=zcaYhNvTTfXprceKJG6IQ+iQPF
	bDj2t1PjeTBdqYscjlJs/fJwATnhBAGATLQCEFRecE71IX2JBKt/ZfMcv0MqIZCmnnJD/NciChzJ1
	h8mxdhl7LTbshMcYteIuseH0/DKEJJTlez+BruiG39Ip0d42cAgsCq5xk4PX2ww3pEPg=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184265-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [linux-linus test] 184265: tolerable FAIL - PUSHED
X-Osstest-Failures:
    linux-linus:test-amd64-amd64-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    linux-linus:test-amd64-amd64-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    linux-linus:test-amd64-amd64-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-raw:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-qcow2:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-qemuu-nested-amd:debian-hvm-install/l1/l2:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-xsm:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-credit1:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-thunderx:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-credit1:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-thunderx:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-xsm:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-xsm:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-credit2:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-credit2:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-libvirt-xsm:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-libvirt-xsm:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-multivcpu:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-multivcpu:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-qcow2:migrate-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit1:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit1:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-arndale:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-arndale:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-rtds:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-rtds:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit2:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit2:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-libvirt-raw:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-vhd:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-vhd:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-vhd:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-vhd:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-qcow2:migrate-support-check:fail:nonblocking
X-Osstest-Versions-This:
    linux=95c8a35f1c017327eab3b6a2ff5c04255737c856
X-Osstest-Versions-That:
    linux=a4ab2706bb1280693e7dff1c5c42a8cb9d70c177
From: osstest service owner <osstest-admin@xenproject.org>
Date: Sun, 07 Jan 2024 02:12:52 +0000

flight 184265 linux-linus real [real]
http://logs.test-lab.xenproject.org/osstest/logs/184265/

Failures :-/ but no regressions.

Tests which did not succeed, but are not blocking:
 test-amd64-amd64-xl-qemut-win7-amd64 19 guest-stop            fail like 184262
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 184262
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 184262
 test-armhf-armhf-libvirt-raw 15 saverestore-support-check    fail  like 184262
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 184262
 test-amd64-amd64-xl-qemut-ws16-amd64 19 guest-stop            fail like 184262
 test-armhf-armhf-libvirt-qcow2 15 saverestore-support-check   fail like 184262
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 184262
 test-amd64-amd64-libvirt     15 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl          15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl          16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-credit1  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-thunderx 15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit1  16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-thunderx 16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-xsm      15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-xsm      16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-credit2  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit2  16 saverestore-support-check    fail   never pass
 test-arm64-arm64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-xsm 16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-multivcpu 15 migrate-support-check        fail  never pass
 test-armhf-armhf-xl-multivcpu 16 saverestore-support-check    fail  never pass
 test-amd64-amd64-libvirt-qcow2 14 migrate-support-check        fail never pass
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-armhf-armhf-xl-credit1  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit1  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-arndale  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-arndale  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-rtds     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-rtds     16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-credit2  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit2  16 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-raw 14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 15 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-vhd      14 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-vhd      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-raw 14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          16 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-qcow2 14 migrate-support-check        fail never pass

version targeted for testing:
 linux                95c8a35f1c017327eab3b6a2ff5c04255737c856
baseline version:
 linux                a4ab2706bb1280693e7dff1c5c42a8cb9d70c177

Last test of basis   184262  2024-01-06 02:04:17 Z    1 days
Testing same since   184265  2024-01-06 13:44:26 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Andrew Morton <akpm@linux-foundation.org>
  Baolin Wang <baolin.wang@linux.alibaba.com>
  Chuck Lever <chuck.lever@oracle.com>
  Florian Fainelli <florian.fainelli@broadcom.com>
  Jeff Layton <jlayton@kernel.org>
  Jeffrey Layton <jlayton@redhat.com>
  Jiajun Xie <jiajun.xie.sh@gmail.com>
  Jingbo Xu <jefflexu@linux.alibaba.com>
  Linus Torvalds <torvalds@linux-foundation.org>
  Mathieu Othacehe <othacehe@gnu.org>
  Mike Kravetz <mike.kravetz@oracle.com>
  Naoya Horiguchi <naoya.horiguchi@nec.com>
  Qi Zheng <zhengqi.arch@bytedance.com>
  Rik van Riel <riel@surriel.com>
  Suren Baghdasaryan <surenb@google.com>
  Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
  Yu Zhao <yuzhao@google.com>
  Zack Rusin <zack.rusin@broadcom.com>

jobs:
 build-amd64-xsm                                              pass    
 build-arm64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64                                                  pass    
 build-arm64                                                  pass    
 build-armhf                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-arm64-libvirt                                          pass    
 build-armhf-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-pvops                                            pass    
 build-arm64-pvops                                            pass    
 build-armhf-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-amd64-amd64-xl                                          pass    
 test-amd64-coresched-amd64-xl                                pass    
 test-arm64-arm64-xl                                          pass    
 test-armhf-armhf-xl                                          pass    
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm           pass    
 test-amd64-amd64-xl-qemut-stubdom-debianhvm-amd64-xsm        pass    
 test-amd64-amd64-xl-qemut-debianhvm-i386-xsm                 pass    
 test-amd64-amd64-xl-qemuu-debianhvm-i386-xsm                 pass    
 test-amd64-amd64-libvirt-xsm                                 pass    
 test-arm64-arm64-libvirt-xsm                                 pass    
 test-amd64-amd64-xl-xsm                                      pass    
 test-arm64-arm64-xl-xsm                                      pass    
 test-amd64-amd64-qemuu-nested-amd                            fail    
 test-amd64-amd64-xl-pvhv2-amd                                pass    
 test-amd64-amd64-dom0pvh-xl-amd                              pass    
 test-amd64-amd64-xl-qemut-debianhvm-amd64                    pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64                    pass    
 test-amd64-amd64-freebsd11-amd64                             pass    
 test-amd64-amd64-freebsd12-amd64                             pass    
 test-amd64-amd64-xl-qemuu-ovmf-amd64                         pass    
 test-amd64-amd64-xl-qemut-win7-amd64                         fail    
 test-amd64-amd64-xl-qemuu-win7-amd64                         fail    
 test-amd64-amd64-xl-qemut-ws16-amd64                         fail    
 test-amd64-amd64-xl-qemuu-ws16-amd64                         fail    
 test-armhf-armhf-xl-arndale                                  pass    
 test-amd64-amd64-examine-bios                                pass    
 test-amd64-amd64-xl-credit1                                  pass    
 test-arm64-arm64-xl-credit1                                  pass    
 test-armhf-armhf-xl-credit1                                  pass    
 test-amd64-amd64-xl-credit2                                  pass    
 test-arm64-arm64-xl-credit2                                  pass    
 test-armhf-armhf-xl-credit2                                  pass    
 test-amd64-amd64-xl-qemuu-dmrestrict-amd64-dmrestrict        pass    
 test-amd64-amd64-examine                                     pass    
 test-arm64-arm64-examine                                     pass    
 test-armhf-armhf-examine                                     pass    
 test-amd64-amd64-qemuu-nested-intel                          pass    
 test-amd64-amd64-xl-pvhv2-intel                              pass    
 test-amd64-amd64-dom0pvh-xl-intel                            pass    
 test-amd64-amd64-libvirt                                     pass    
 test-armhf-armhf-libvirt                                     pass    
 test-amd64-amd64-xl-multivcpu                                pass    
 test-armhf-armhf-xl-multivcpu                                pass    
 test-amd64-amd64-pair                                        pass    
 test-amd64-amd64-libvirt-pair                                pass    
 test-amd64-amd64-xl-pvshim                                   pass    
 test-amd64-amd64-pygrub                                      pass    
 test-amd64-amd64-libvirt-qcow2                               pass    
 test-armhf-armhf-libvirt-qcow2                               pass    
 test-amd64-amd64-libvirt-raw                                 pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-armhf-armhf-libvirt-raw                                 pass    
 test-amd64-amd64-xl-rtds                                     pass    
 test-armhf-armhf-xl-rtds                                     pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64-shadow             pass    
 test-amd64-amd64-xl-shadow                                   pass    
 test-arm64-arm64-xl-thunderx                                 pass    
 test-amd64-amd64-examine-uefi                                pass    
 test-amd64-amd64-xl-vhd                                      pass    
 test-arm64-arm64-xl-vhd                                      pass    
 test-armhf-armhf-xl-vhd                                      pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Pushing revision :

hint: The 'hooks/update' hook was ignored because it's not set as executable.
hint: You can disable this warning with `git config advice.ignoredHook false`.
hint: The 'hooks/post-receive' hook was ignored because it's not set as executable.
hint: You can disable this warning with `git config advice.ignoredHook false`.
hint: The 'hooks/post-update' hook was ignored because it's not set as executable.
hint: You can disable this warning with `git config advice.ignoredHook false`.
To xenbits.xen.org:/home/xen/git/linux-pvops.git
   a4ab2706bb12..95c8a35f1c01  95c8a35f1c017327eab3b6a2ff5c04255737c856 -> tested/linux-linus


From xen-devel-bounces@lists.xenproject.org Sun Jan 07 09:21:02 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sun, 07 Jan 2024 09:21:02 +0000
Received: from list by lists.xenproject.org with outflank-mailman.662614.1032676 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMPKy-0000X3-ES; Sun, 07 Jan 2024 09:20:56 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 662614.1032676; Sun, 07 Jan 2024 09:20:56 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMPKy-0000Ww-Bd; Sun, 07 Jan 2024 09:20:56 +0000
Received: by outflank-mailman (input) for mailman id 662614;
 Sun, 07 Jan 2024 09:20:55 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rMPKx-0000Wh-BY; Sun, 07 Jan 2024 09:20:55 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rMPKw-0002Eu-VJ; Sun, 07 Jan 2024 09:20:54 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rMPKw-0000ny-F2; Sun, 07 Jan 2024 09:20:54 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rMPKw-0007Bi-Dd; Sun, 07 Jan 2024 09:20:54 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=qDDU/yaEoJUzyGPNptDM8gMTIn9SCGIz8y9myQUP9HU=; b=UlrWkBvPmOScowYg3YxYhPyHKJ
	EjYG17ZyOeCoOnI9NA8ZDx/qCvj5/d/HdW/LkgydxGX6jBypPjzj0wrS+6uSymrkJqMjVgP+1tumQ
	Do74P5OVkw6l7t7vbGULCYYU/cJAgJdV3BNiN1r9g9Nd3TaB3zvwTuwXqy2teodqr0L8=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184267-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [xen-unstable test] 184267: tolerable FAIL
X-Osstest-Failures:
    xen-unstable:test-armhf-armhf-xl-vhd:guest-start/debian.repeat:fail:heisenbug
    xen-unstable:test-armhf-armhf-libvirt:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-amd64-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-qcow2:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-raw:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-amd64-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-amd64-qemuu-nested-amd:debian-hvm-install/l1/l2:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-amd64-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-i386-libvirt-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-libvirt:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-pvshim:guest-start:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-xsm:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-thunderx:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-thunderx:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-credit1:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-credit2:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-credit1:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-credit2:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-libvirt-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-libvirt-xsm:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-multivcpu:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-multivcpu:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit2:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit2:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit1:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit1:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-arndale:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-arndale:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-libvirt-raw:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-libvirt-raw:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-libvirt-raw:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt-vhd:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-qcow2:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-vhd:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-vhd:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-raw:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-rtds:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-rtds:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-vhd:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-vhd:saverestore-support-check:fail:nonblocking
X-Osstest-Versions-This:
    xen=5a3ace21f3d779b291a2d305824b2820d88de7f1
X-Osstest-Versions-That:
    xen=5a3ace21f3d779b291a2d305824b2820d88de7f1
From: osstest service owner <osstest-admin@xenproject.org>
Date: Sun, 07 Jan 2024 09:20:54 +0000

flight 184267 xen-unstable real [real]
http://logs.test-lab.xenproject.org/osstest/logs/184267/

Failures :-/ but no regressions.

Tests which are failing intermittently (not blocking):
 test-armhf-armhf-xl-vhd      17 guest-start/debian.repeat  fail pass in 184264

Tests which did not succeed, but are not blocking:
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 184264
 test-amd64-amd64-xl-qemut-win7-amd64 19 guest-stop            fail like 184264
 test-amd64-i386-xl-qemuu-win7-amd64 19 guest-stop             fail like 184264
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 184264
 test-armhf-armhf-libvirt-qcow2 15 saverestore-support-check   fail like 184264
 test-amd64-i386-xl-qemut-ws16-amd64 19 guest-stop             fail like 184264
 test-armhf-armhf-libvirt-raw 15 saverestore-support-check    fail  like 184264
 test-amd64-i386-xl-qemut-win7-amd64 19 guest-stop             fail like 184264
 test-amd64-amd64-xl-qemut-ws16-amd64 19 guest-stop            fail like 184264
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 184264
 test-amd64-i386-xl-qemuu-ws16-amd64 19 guest-stop             fail like 184264
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 184264
 test-amd64-i386-libvirt-xsm  15 migrate-support-check        fail   never pass
 test-amd64-i386-libvirt      15 migrate-support-check        fail   never pass
 test-amd64-i386-xl-pvshim    14 guest-start                  fail   never pass
 test-amd64-amd64-libvirt     15 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-arm64-arm64-xl-xsm      15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl          15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-xsm      16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl          16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-thunderx 15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-thunderx 16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-credit1  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit2  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit1  16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-credit2  16 saverestore-support-check    fail   never pass
 test-arm64-arm64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-xsm 16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl          15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          16 saverestore-support-check    fail   never pass
 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-armhf-armhf-xl-multivcpu 15 migrate-support-check        fail  never pass
 test-armhf-armhf-xl-multivcpu 16 saverestore-support-check    fail  never pass
 test-armhf-armhf-libvirt     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit2  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit2  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-credit1  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit1  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-arndale  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-arndale  16 saverestore-support-check    fail   never pass
 test-amd64-i386-libvirt-raw  14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 15 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-vhd 14 migrate-support-check        fail   never pass
 test-armhf-armhf-libvirt-qcow2 14 migrate-support-check        fail never pass
 test-arm64-arm64-xl-vhd      14 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-vhd      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-raw 14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-rtds     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-rtds     16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-vhd      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      15 saverestore-support-check    fail   never pass

version targeted for testing:
 xen                  5a3ace21f3d779b291a2d305824b2820d88de7f1
baseline version:
 xen                  5a3ace21f3d779b291a2d305824b2820d88de7f1

Last test of basis   184267  2024-01-07 01:57:26 Z    0 days
Testing same since                          (not found)         0 attempts

jobs:
 build-amd64-xsm                                              pass    
 build-arm64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64-xtf                                              pass    
 build-amd64                                                  pass    
 build-arm64                                                  pass    
 build-armhf                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-arm64-libvirt                                          pass    
 build-armhf-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-prev                                             pass    
 build-i386-prev                                              pass    
 build-amd64-pvops                                            pass    
 build-arm64-pvops                                            pass    
 build-armhf-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-xtf-amd64-amd64-1                                       pass    
 test-xtf-amd64-amd64-2                                       pass    
 test-xtf-amd64-amd64-3                                       pass    
 test-xtf-amd64-amd64-4                                       pass    
 test-xtf-amd64-amd64-5                                       pass    
 test-amd64-amd64-xl                                          pass    
 test-amd64-coresched-amd64-xl                                pass    
 test-arm64-arm64-xl                                          pass    
 test-armhf-armhf-xl                                          pass    
 test-amd64-i386-xl                                           pass    
 test-amd64-coresched-i386-xl                                 pass    
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm           pass    
 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm            pass    
 test-amd64-amd64-xl-qemut-stubdom-debianhvm-amd64-xsm        pass    
 test-amd64-i386-xl-qemut-stubdom-debianhvm-amd64-xsm         pass    
 test-amd64-amd64-xl-qemut-debianhvm-i386-xsm                 pass    
 test-amd64-i386-xl-qemut-debianhvm-i386-xsm                  pass    
 test-amd64-amd64-xl-qemuu-debianhvm-i386-xsm                 pass    
 test-amd64-i386-xl-qemuu-debianhvm-i386-xsm                  pass    
 test-amd64-amd64-libvirt-xsm                                 pass    
 test-arm64-arm64-libvirt-xsm                                 pass    
 test-amd64-i386-libvirt-xsm                                  pass    
 test-amd64-amd64-xl-xsm                                      pass    
 test-arm64-arm64-xl-xsm                                      pass    
 test-amd64-i386-xl-xsm                                       pass    
 test-amd64-amd64-qemuu-nested-amd                            fail    
 test-amd64-amd64-xl-pvhv2-amd                                pass    
 test-amd64-i386-qemut-rhel6hvm-amd                           pass    
 test-amd64-i386-qemuu-rhel6hvm-amd                           pass    
 test-amd64-amd64-dom0pvh-xl-amd                              pass    
 test-amd64-amd64-xl-qemut-debianhvm-amd64                    pass    
 test-amd64-i386-xl-qemut-debianhvm-amd64                     pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64                    pass    
 test-amd64-i386-xl-qemuu-debianhvm-amd64                     pass    
 test-amd64-i386-freebsd10-amd64                              pass    
 test-amd64-amd64-qemuu-freebsd11-amd64                       pass    
 test-amd64-amd64-qemuu-freebsd12-amd64                       pass    
 test-amd64-amd64-xl-qemuu-ovmf-amd64                         pass    
 test-amd64-i386-xl-qemuu-ovmf-amd64                          pass    
 test-amd64-amd64-xl-qemut-win7-amd64                         fail    
 test-amd64-i386-xl-qemut-win7-amd64                          fail    
 test-amd64-amd64-xl-qemuu-win7-amd64                         fail    
 test-amd64-i386-xl-qemuu-win7-amd64                          fail    
 test-amd64-amd64-xl-qemut-ws16-amd64                         fail    
 test-amd64-i386-xl-qemut-ws16-amd64                          fail    
 test-amd64-amd64-xl-qemuu-ws16-amd64                         fail    
 test-amd64-i386-xl-qemuu-ws16-amd64                          fail    
 test-armhf-armhf-xl-arndale                                  pass    
 test-amd64-amd64-examine-bios                                pass    
 test-amd64-i386-examine-bios                                 pass    
 test-amd64-amd64-xl-credit1                                  pass    
 test-arm64-arm64-xl-credit1                                  pass    
 test-armhf-armhf-xl-credit1                                  pass    
 test-amd64-amd64-xl-credit2                                  pass    
 test-arm64-arm64-xl-credit2                                  pass    
 test-armhf-armhf-xl-credit2                                  pass    
 test-amd64-amd64-xl-qemuu-dmrestrict-amd64-dmrestrict        pass    
 test-amd64-i386-xl-qemuu-dmrestrict-amd64-dmrestrict         pass    
 test-amd64-amd64-examine                                     pass    
 test-arm64-arm64-examine                                     pass    
 test-armhf-armhf-examine                                     pass    
 test-amd64-i386-examine                                      pass    
 test-amd64-i386-freebsd10-i386                               pass    
 test-amd64-amd64-qemuu-nested-intel                          pass    
 test-amd64-amd64-xl-pvhv2-intel                              pass    
 test-amd64-i386-qemut-rhel6hvm-intel                         pass    
 test-amd64-i386-qemuu-rhel6hvm-intel                         pass    
 test-amd64-amd64-dom0pvh-xl-intel                            pass    
 test-amd64-amd64-libvirt                                     pass    
 test-armhf-armhf-libvirt                                     pass    
 test-amd64-i386-libvirt                                      pass    
 test-amd64-amd64-livepatch                                   pass    
 test-amd64-i386-livepatch                                    pass    
 test-amd64-amd64-migrupgrade                                 pass    
 test-amd64-i386-migrupgrade                                  pass    
 test-amd64-amd64-xl-multivcpu                                pass    
 test-armhf-armhf-xl-multivcpu                                pass    
 test-amd64-amd64-pair                                        pass    
 test-amd64-i386-pair                                         pass    
 test-amd64-amd64-libvirt-pair                                pass    
 test-amd64-i386-libvirt-pair                                 pass    
 test-amd64-amd64-xl-pvshim                                   pass    
 test-amd64-i386-xl-pvshim                                    fail    
 test-amd64-amd64-pygrub                                      pass    
 test-armhf-armhf-libvirt-qcow2                               pass    
 test-amd64-amd64-xl-qcow2                                    pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-armhf-armhf-libvirt-raw                                 pass    
 test-amd64-i386-libvirt-raw                                  pass    
 test-amd64-amd64-xl-rtds                                     pass    
 test-armhf-armhf-xl-rtds                                     pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64-shadow             pass    
 test-amd64-i386-xl-qemuu-debianhvm-amd64-shadow              pass    
 test-amd64-amd64-xl-shadow                                   pass    
 test-amd64-i386-xl-shadow                                    pass    
 test-arm64-arm64-xl-thunderx                                 pass    
 test-amd64-amd64-examine-uefi                                pass    
 test-amd64-i386-examine-uefi                                 pass    
 test-amd64-amd64-libvirt-vhd                                 pass    
 test-arm64-arm64-xl-vhd                                      pass    
 test-armhf-armhf-xl-vhd                                      fail    
 test-amd64-i386-xl-vhd                                       pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Published tested tree is already up to date.



From xen-devel-bounces@lists.xenproject.org Sun Jan 07 10:35:44 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sun, 07 Jan 2024 10:35:44 +0000
Received: from list by lists.xenproject.org with outflank-mailman.662627.1032687 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMQV3-0001ec-Qa; Sun, 07 Jan 2024 10:35:25 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 662627.1032687; Sun, 07 Jan 2024 10:35:25 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMQV3-0001eV-MJ; Sun, 07 Jan 2024 10:35:25 +0000
Received: by outflank-mailman (input) for mailman id 662627;
 Sun, 07 Jan 2024 10:35:24 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=oAu3=IR=gmail.com=olekstysh@srs-se1.protection.inumbo.net>)
 id 1rMQV2-0001eP-Ra
 for xen-devel@lists.xenproject.org; Sun, 07 Jan 2024 10:35:24 +0000
Received: from mail-ej1-x634.google.com (mail-ej1-x634.google.com
 [2a00:1450:4864:20::634])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 7656d3eb-ad48-11ee-98ef-6d05b1d4d9a1;
 Sun, 07 Jan 2024 11:35:23 +0100 (CET)
Received: by mail-ej1-x634.google.com with SMTP id
 a640c23a62f3a-a28b0207c1dso64181566b.3
 for <xen-devel@lists.xenproject.org>; Sun, 07 Jan 2024 02:35:23 -0800 (PST)
Received: from EPUAKYIW03DD.. ([91.123.150.198])
 by smtp.gmail.com with ESMTPSA id
 lk16-20020a170906cb1000b00a26afb7fd54sm2930074ejb.15.2024.01.07.02.35.20
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Sun, 07 Jan 2024 02:35:21 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 7656d3eb-ad48-11ee-98ef-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1704623722; x=1705228522; darn=lists.xenproject.org;
        h=content-transfer-encoding:mime-version:message-id:date:subject:cc
         :to:from:from:to:cc:subject:date:message-id:reply-to;
        bh=Ghpvrm/3AEBdzbWk8YZiHGiX3pwaQb2AEZTDUC3tmOs=;
        b=ZNw59H7OjKe6neVRTDjKHjLkJ1BmzlzDHfvU3aH0JSTKNtNnmMOPM5eBoTNjcxU8VS
         AfuwY7dxp0KYRwjGzhHVgkODUkd+cjmFACFefKXKppXWGzdWZgoDO3ZSZtYLtVqBuT+Y
         28/r6+CUCx+KwR62SuiGwjc1ernPoPo9ZaennAewWefmgxwWPUkAjeU+M7kNMVRX0W7N
         BXKdBkq/1IYQwN0cO+Ob6VsuNoXYmap89bN5Vn8A0xp+wbJ9ClTc2GbwAGdeJ9aYaPL4
         cz8DcMP5e/7LRw0moZb1Jf2JLZgvH3zBXD9eut+8sAyJXa0gzASVpPQy+dZosE7fxMNC
         qmqA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704623722; x=1705228522;
        h=content-transfer-encoding:mime-version:message-id:date:subject:cc
         :to:from:x-gm-message-state:from:to:cc:subject:date:message-id
         :reply-to;
        bh=Ghpvrm/3AEBdzbWk8YZiHGiX3pwaQb2AEZTDUC3tmOs=;
        b=ZALxLe8gkHmNqTNN6qu7mrobOXRV5/Kfew99Zbrn0tiANc6I4/wPelaG25XEDtHnzp
         kz5l2tFvKvWKyGT8EBn3qQA7mLeTHv8w0YNTRz2IjurhrqnB0KHI6//cfjhDxHHdJ84/
         fdYglhg/sNqkhXnqBJODwmv/Gl8qEe72ap7UmGp9dNUNpJi1d67PGE99KdRHD0Y9LkrV
         c21AORju5vnf6BjrAeYpdZYaZZaysraJPIVHcRQewRWCSNWk4tASpTMzzzfXiS6oteZI
         LhW6BbUg4qnFP7aJeHwf9O1EXyP1pE4/5xZ9+UTsoPmk67iIPT692rQXdhnNNvz2FXoN
         1UtQ==
X-Gm-Message-State: AOJu0YweBUd3CLXJ03UAQ/0ouVvTUZU7DuugRGnt9sTGwQWtU0mbZkwD
	k33GDCWdr7fziDahuhhnxU2AFwTKgtA=
X-Google-Smtp-Source: AGHT+IEgl8h6+zpl6SUHiSqK5XScqK44QOXbHAyVzXhGtFSD7Qn2O6AOXZtqoHyFcj41HGl+ut3zuw==
X-Received: by 2002:a17:906:711b:b0:a27:32a0:b836 with SMTP id x27-20020a170906711b00b00a2732a0b836mr999374ejj.40.1704623721850;
        Sun, 07 Jan 2024 02:35:21 -0800 (PST)
From: Oleksandr Tyshchenko <olekstysh@gmail.com>
To: xen-devel@lists.xenproject.org,
	linux-kernel@vger.kernel.org
Cc: Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>,
	=?UTF-8?q?Christian=20K=C3=B6nig?= <christian.koenig@amd.com>,
	Daniel Vetter <daniel@ffwll.ch>,
	Juergen Gross <jgross@suse.com>,
	Stefano Stabellini <sstabellini@kernel.org>
Subject: [PATCH v2] xen/gntdev: Fix the abuse of underlying struct page in DMA-buf import
Date: Sun,  7 Jan 2024 12:34:26 +0200
Message-Id: <20240107103426.2038075-1-olekstysh@gmail.com>
X-Mailer: git-send-email 2.34.1
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

From: Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>

DO NOT access the underlying struct page of an sg table exported
by DMA-buf in dmabuf_imp_to_refs(), this is not allowed.
Please see drivers/dma-buf/dma-buf.c:mangle_sg_table() for details.

Fortunately, here (for special Xen device) we can avoid using
pages and calculate gfns directly from dma addresses provided by
the sg table.

Suggested-by: Daniel Vetter <daniel@ffwll.ch>
Signed-off-by: Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>
Acked-by: Christian König <christian.koenig@amd.com>
Reviewed-by: Stefano Stabellini <sstabellini@kernel.org>
---
Please note, I didn't manage to test the patch against the latest master branch
on real HW (patch was only build tested there). Patch was tested on Arm64
guests using Linux v5.10.41 from vendor's BSP, this is the environment where
running this use-case is possible and to which I have an access (Xen PV display
with zero-copy and backend domain as a buffer provider - be-alloc=1, so dma-buf
import part was involved). A little bit old, but the dma-buf import code
in gntdev-dmabuf.c hasn't been changed much since that time, all context
remains allmost the same according to my code inspection.

  v2:
   - add R-b and A-b
   - fix build warning noticed by kernel test robot by initializing
     "ret" in case of error
     https://lore.kernel.org/oe-kbuild-all/202401062122.it6zvLG0-lkp@intel.com/
---
---
 drivers/xen/gntdev-dmabuf.c | 44 ++++++++++++++++---------------------
 1 file changed, 19 insertions(+), 25 deletions(-)

diff --git a/drivers/xen/gntdev-dmabuf.c b/drivers/xen/gntdev-dmabuf.c
index 4440e626b797..272c0ab01ef5 100644
--- a/drivers/xen/gntdev-dmabuf.c
+++ b/drivers/xen/gntdev-dmabuf.c
@@ -11,6 +11,7 @@
 #include <linux/kernel.h>
 #include <linux/errno.h>
 #include <linux/dma-buf.h>
+#include <linux/dma-direct.h>
 #include <linux/slab.h>
 #include <linux/types.h>
 #include <linux/uaccess.h>
@@ -50,7 +51,7 @@ struct gntdev_dmabuf {
 
 	/* Number of pages this buffer has. */
 	int nr_pages;
-	/* Pages of this buffer. */
+	/* Pages of this buffer (only for dma-buf export). */
 	struct page **pages;
 };
 
@@ -484,7 +485,7 @@ static int dmabuf_exp_from_refs(struct gntdev_priv *priv, int flags,
 /* DMA buffer import support. */
 
 static int
-dmabuf_imp_grant_foreign_access(struct page **pages, u32 *refs,
+dmabuf_imp_grant_foreign_access(unsigned long *gfns, u32 *refs,
 				int count, int domid)
 {
 	grant_ref_t priv_gref_head;
@@ -507,7 +508,7 @@ dmabuf_imp_grant_foreign_access(struct page **pages, u32 *refs,
 		}
 
 		gnttab_grant_foreign_access_ref(cur_ref, domid,
-						xen_page_to_gfn(pages[i]), 0);
+						gfns[i], 0);
 		refs[i] = cur_ref;
 	}
 
@@ -529,7 +530,6 @@ static void dmabuf_imp_end_foreign_access(u32 *refs, int count)
 
 static void dmabuf_imp_free_storage(struct gntdev_dmabuf *gntdev_dmabuf)
 {
-	kfree(gntdev_dmabuf->pages);
 	kfree(gntdev_dmabuf->u.imp.refs);
 	kfree(gntdev_dmabuf);
 }
@@ -549,12 +549,6 @@ static struct gntdev_dmabuf *dmabuf_imp_alloc_storage(int count)
 	if (!gntdev_dmabuf->u.imp.refs)
 		goto fail;
 
-	gntdev_dmabuf->pages = kcalloc(count,
-				       sizeof(gntdev_dmabuf->pages[0]),
-				       GFP_KERNEL);
-	if (!gntdev_dmabuf->pages)
-		goto fail;
-
 	gntdev_dmabuf->nr_pages = count;
 
 	for (i = 0; i < count; i++)
@@ -576,7 +570,8 @@ dmabuf_imp_to_refs(struct gntdev_dmabuf_priv *priv, struct device *dev,
 	struct dma_buf *dma_buf;
 	struct dma_buf_attachment *attach;
 	struct sg_table *sgt;
-	struct sg_page_iter sg_iter;
+	struct sg_dma_page_iter sg_iter;
+	unsigned long *gfns;
 	int i;
 
 	dma_buf = dma_buf_get(fd);
@@ -624,26 +619,25 @@ dmabuf_imp_to_refs(struct gntdev_dmabuf_priv *priv, struct device *dev,
 
 	gntdev_dmabuf->u.imp.sgt = sgt;
 
-	/* Now convert sgt to array of pages and check for page validity. */
+	gfns = kcalloc(count, sizeof(*gfns), GFP_KERNEL);
+	if (!gfns) {
+		ret = ERR_PTR(-ENOMEM);
+		goto fail_unmap;
+	}
+
+	/* Now convert sgt to array of gfns without accessing underlying pages. */
 	i = 0;
-	for_each_sgtable_page(sgt, &sg_iter, 0) {
-		struct page *page = sg_page_iter_page(&sg_iter);
-		/*
-		 * Check if page is valid: this can happen if we are given
-		 * a page from VRAM or other resources which are not backed
-		 * by a struct page.
-		 */
-		if (!pfn_valid(page_to_pfn(page))) {
-			ret = ERR_PTR(-EINVAL);
-			goto fail_unmap;
-		}
+	for_each_sgtable_dma_page(sgt, &sg_iter, 0) {
+		dma_addr_t addr = sg_page_iter_dma_address(&sg_iter);
+		unsigned long pfn = bfn_to_pfn(XEN_PFN_DOWN(dma_to_phys(dev, addr)));
 
-		gntdev_dmabuf->pages[i++] = page;
+		gfns[i++] = pfn_to_gfn(pfn);
 	}
 
-	ret = ERR_PTR(dmabuf_imp_grant_foreign_access(gntdev_dmabuf->pages,
+	ret = ERR_PTR(dmabuf_imp_grant_foreign_access(gfns,
 						      gntdev_dmabuf->u.imp.refs,
 						      count, domid));
+	kfree(gfns);
 	if (IS_ERR(ret))
 		goto fail_end_access;
 
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Sun Jan 07 14:45:10 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sun, 07 Jan 2024 14:45:10 +0000
Received: from list by lists.xenproject.org with outflank-mailman.662640.1032697 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMUOV-00085p-69; Sun, 07 Jan 2024 14:44:55 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 662640.1032697; Sun, 07 Jan 2024 14:44:55 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMUOV-00085i-3A; Sun, 07 Jan 2024 14:44:55 +0000
Received: by outflank-mailman (input) for mailman id 662640;
 Sun, 07 Jan 2024 14:44:54 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=dc6+=IR=mg.gitlab.com=bounce+c66dc3.947b4-xen-devel=lists.xenproject.org@srs-se1.protection.inumbo.net>)
 id 1rMUOU-00085c-5g
 for xen-devel@lists.xenproject.org; Sun, 07 Jan 2024 14:44:54 +0000
Received: from m202-219.mailgun.net (m202-219.mailgun.net [161.38.202.219])
 by se1-gles-sth1.inumbo.com (Halon) with UTF8SMTPS
 id 4ee50b0a-ad6b-11ee-98ef-6d05b1d4d9a1;
 Sun, 07 Jan 2024 15:44:52 +0100 (CET)
Received: from mg.gitlab.com (16.226.74.34.bc.googleusercontent.com
 [34.74.226.16]) by
 fe365c0fa72d with SMTP id 659ab8df2bef4eea5833f59b (version=TLS1.3,
 cipher=TLS_AES_128_GCM_SHA256); Sun, 07 Jan 2024 14:44:47 GMT
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
X-Inumbo-ID: 4ee50b0a-ad6b-11ee-98ef-6d05b1d4d9a1
DKIM-Signature: a=rsa-sha256; v=1; c=relaxed/relaxed; d=mg.gitlab.com;
 q=dns/txt; s=mailo; t=1704638687; x=1704645887; h=List-Id:
 Content-Transfer-Encoding: Content-Type: Mime-Version: Subject: Subject:
 Message-ID: To: To: Reply-To: From: From: Date: Sender: Sender;
 bh=ZRAY6OspYOKlvazQ+d2s7gWE1RBjiVEcuMfhP3wsRh4=;
 b=TAekNvAsGZrPRnXQY58gnCamFLJJXW9I5eUj267T7Rgzk6B5m9ek7lDebC6EhDZnKosdfihlHbzAxQbie6qBMSDdJzEyiuEdhrCdBkh/2pRzKFW1+CDdFUGjcFe+67ldr2sqfMhwWf6pk9uIh/Fvx397X4+LgC6LjFDssIFzipg=
X-Mailgun-Sending-Ip: 161.38.202.219
X-Mailgun-Sid: WyI4YjA3MiIsInhlbi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZyIsIjk0N2I0Il0=
Sender: gitlab@mg.gitlab.com
Date: Sun, 07 Jan 2024 14:44:47 +0000
From: GitLab <gitlab@mg.gitlab.com>
Reply-To: GitLab <noreply@gitlab.com>
To: xen-devel@lists.xenproject.org
Message-ID: <659ab8df78b06_2c36b30e584702ca@gitlab-sidekiq-catchall-v2-64b6fdf995-pdj4k.mail>
Subject: xen | Successful pipeline for staging | 5a3ace21
Mime-Version: 1.0
Content-Type: multipart/alternative;
 boundary="--==_mimepart_659ab8df701bd_2c36b30e584701d8";
 charset=UTF-8
Content-Transfer-Encoding: 7bit
X-GitLab-Project: xen
X-GitLab-Project-Id: 2336572
X-GitLab-Project-Path: xen-project/xen
X-GitLab-Pipeline-Id: 1129775950
X-GitLab-Pipeline-Ref: staging
X-GitLab-Pipeline-Status: success
Auto-Submitted: auto-generated
X-Auto-Response-Suppress: All

----==_mimepart_659ab8df701bd_2c36b30e584701d8
Content-Type: text/plain;
 charset=UTF-8
Content-Transfer-Encoding: 7bit



Pipeline #1129775950 has passed!

Project: xen ( https://gitlab.com/xen-project/xen )
Branch: staging ( https://gitlab.com/xen-project/xen/-/commits/staging )

Commit: 5a3ace21 ( https://gitlab.com/xen-project/xen/-/commit/5a3ace21f3d779b291a2d305824b2820d88de7f1 )
Commit Message: xen/arm: smmu-v3: address violations of MISRA C...
Commit Author: Federico Serafini
Committed by: Stefano Stabellini



Pipeline #1129775950 ( https://gitlab.com/xen-project/xen/-/pipelines/1129775950 ) triggered by Andrew Cooper ( https://gitlab.com/andyhhp )
successfully completed 133 jobs in 3 stages.

-- 
You're receiving this email because of your account on gitlab.com.




----==_mimepart_659ab8df701bd_2c36b30e584701d8
Content-Type: text/html;
 charset=UTF-8
Content-Transfer-Encoding: quoted-printable

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://ww=
w.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns=3D"http://www.w3.org/1999/xhtml" lang=3D"en" xml:lang=3D"en">=

<head>
<meta content=3D"text/html; charset=3DUTF-8" http-equiv=3D"Content-Type" =
/>
<meta content=3D"width=3Ddevice-width, initial-scale=3D1" name=3D"viewpor=
t" />
<meta content=3D"IE=3Dedge" http-equiv=3D"X-UA-Compatible" />
<title>xen | Successful pipeline for staging | 5a3ace21</title>
<style data-premailer=3D"ignore" type=3D"text/css">
body,table,td,a{-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}t=
able,td{mso-table-lspace:0pt;mso-table-rspace:0pt}img{-ms-interpolation-m=
ode:bicubic}.hidden{display:none !important;visibility:hidden !important}=
a[x-apple-data-detectors]{color:inherit !important;text-decoration:none !=
important;font-size:inherit !important;font-family:inherit !important;fon=
t-weight:inherit !important;line-height:inherit !important}div[style*=3D'=
margin: 16px 0']{margin:0 !important}@media only screen and (max-width: 6=
39px){body,#body{min-width:320px !important}table.wrapper{width:100% !imp=
ortant;min-width:320px !important}table.wrapper td.wrapper-cell{border-le=
ft:0 !important;border-right:0 !important;border-radius:0 !important;padd=
ing-left:10px !important;padding-right:10px !important}}

</style>

<style>body {
margin: 0 !important; background-color: #fafafa; padding: 0; text-align: =
center; min-width: 640px; width: 100%; height: 100%; font-family: "Helvet=
ica Neue", Helvetica, Arial, sans-serif;
}
</style></head>
<body style=3D"text-align: center; min-width: 640px; width: 100%; height:=
 100%; font-family: &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-se=
rif; margin: 0; padding: 0;" bgcolor=3D"#fafafa">

<table border=3D"0" cellpadding=3D"0" cellspacing=3D"0" id=3D"body" style=
=3D"text-align: center; min-width: 640px; width: 100%; margin: 0; padding=
: 0;" bgcolor=3D"#fafafa">
<tbody>
<tr class=3D"line">
<td style=3D"font-family: &quot;Helvetica Neue&quot;, Helvetica, Arial, s=
ans-serif; height: 4px; font-size: 4px; line-height: 4px;" bgcolor=3D"#6b=
4fbb"></td>
</tr>
<tr class=3D"header">
<td style=3D"font-family: &quot;Helvetica Neue&quot;, Helvetica, Arial, s=
ans-serif; font-size: 13px; line-height: 1.6; color: #5c5c5c; padding: 25=
px 0;">

<img alt=3D"GitLab" src=3D"https://gitlab.com/assets/mailers/gitlab_logo-=
2957169c8ef64c58616a1ac3f4fc626e8a35ce4eb3ed31bb0d873712f2a041a0.png" wid=
th=3D"55" height=3D"55" />
</td>
</tr>
<tr>
<td style=3D"font-family: &quot;Helvetica Neue&quot;, Helvetica, Arial, s=
ans-serif;">
<table border=3D"0" cellpadding=3D"0" cellspacing=3D"0" class=3D"wrapper"=
 style=3D"width: 640px; border-collapse: separate; border-spacing: 0; mar=
gin: 0 auto;">
<tbody>
<tr>
<td class=3D"wrapper-cell" style=3D"font-family: &quot;Helvetica Neue&quo=
t;, Helvetica, Arial, sans-serif; border-radius: 3px; overflow: hidden; p=
adding: 18px 25px; border: 1px solid #ededed;" align=3D"left" bgcolor=3D"=
#fff">
<table border=3D"0" cellpadding=3D"0" cellspacing=3D"0" class=3D"content"=
 style=3D"width: 100%; border-collapse: separate; border-spacing: 0;">
<tbody>
<tr class=3D"table-success">
<td style=3D"font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; bo=
rder-radius: 3px; font-size: 14px; line-height: 1.3; overflow: hidden; co=
lor: #ffffff; padding: 10px;" align=3D"center" bgcolor=3D"#31af64">
<table border=3D"0" cellpadding=3D"0" cellspacing=3D"0" class=3D"img" sty=
le=3D"border-collapse: collapse; margin: 0 auto;">
<tbody>
<tr>
<td style=3D"font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; co=
lor: #ffffff; padding-right: 5px;" align=3D"center" valign=3D"middle">
<img alt=3D"&#10003;" height=3D"13" src=3D"https://gitlab.com/assets/mail=
ers/ci_pipeline_notif_v1/icon-check-green-inverted-3fc3485096ebb83ce1d951=
5883c8ca25ee5f382c4d643e064beb5da510aa26d5.gif" style=3D"display: block;"=
 width=3D"13" />
</td>
<td style=3D"font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; co=
lor: #ffffff;" align=3D"center" valign=3D"middle">
Pipeline #1129775950 has passed!
</td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr class=3D"spacer">
<td style=3D"font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; he=
ight: 18px; font-size: 18px; line-height: 18px;">
&#160;
</td>
</tr>
<tr class=3D"section">
<td style=3D"font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; bo=
rder-radius: 3px; overflow: hidden; padding: 0 15px; border: 1px solid #e=
deded;">
<table border=3D"0" cellpadding=3D"0" cellspacing=3D"0" class=3D"table-in=
fo" style=3D"width: 100%;">
<tbody>
<tr>
<td style=3D"font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; fo=
nt-size: 15px; line-height: 1.4; color: #8c8c8c; font-weight: 300; margin=
: 0; padding: 14px 0;">
Project
</td>
<td style=3D"font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; fo=
nt-size: 15px; line-height: 1.4; color: #333333; font-weight: 500; width:=
 75%; margin: 0; padding: 14px 0 14px 5px;">
<a class=3D"muted" href=3D"https://gitlab.com/xen-project" style=3D"color=
: #333333; text-decoration: none;">
xen-project
</a>
/
<a class=3D"muted" href=3D"https://gitlab.com/xen-project/xen" style=3D"c=
olor: #333333; text-decoration: none;">
xen
</a>
</td>
</tr>
<tr>
<td style=3D"font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; fo=
nt-size: 15px; line-height: 1.4; color: #8c8c8c; font-weight: 300; border=
-top-width: 1px; border-top-color: #ededed; border-top-style: solid; marg=
in: 0; padding: 14px 0;">
Branch
</td>
<td style=3D"font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; fo=
nt-size: 15px; line-height: 1.4; color: #333333; font-weight: 500; width:=
 75%; border-top-width: 1px; border-top-color: #ededed; border-top-style:=
 solid; margin: 0; padding: 14px 0 14px 5px;">
<table border=3D"0" cellpadding=3D"0" cellspacing=3D"0" class=3D"img" sty=
le=3D"border-collapse: collapse;">
<tbody>
<tr>
<td style=3D"font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; fo=
nt-size: 15px; line-height: 1.4; padding-right: 5px;" valign=3D"middle">
<img alt=3D"" height=3D"13" src=3D"https://gitlab.com/assets/mailers/ci_p=
ipeline_notif_v1/icon-branch-gray-53618a7fc19d4d32ccbabac2f6d59bebe67202a=
9f2f1255e3f72c69756c0dd9c.gif" style=3D"display: block;" width=3D"13" />
</td>
<td style=3D"font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; fo=
nt-size: 15px; line-height: 1.4;" valign=3D"middle">
<a class=3D"muted" href=3D"https://gitlab.com/xen-project/xen/-/commits/s=
taging" style=3D"color: #333333; text-decoration: none;">
staging
</a>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr>
<td style=3D"font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; fo=
nt-size: 15px; line-height: 1.4; color: #8c8c8c; font-weight: 300; border=
-top-width: 1px; border-top-color: #ededed; border-top-style: solid; marg=
in: 0; padding: 14px 0;">
Commit
</td>
<td style=3D"font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; fo=
nt-size: 15px; line-height: 1.4; color: #333333; font-weight: 400; width:=
 75%; border-top-width: 1px; border-top-color: #ededed; border-top-style:=
 solid; margin: 0; padding: 14px 0 14px 5px;">
<table border=3D"0" cellpadding=3D"0" cellspacing=3D"0" class=3D"img" sty=
le=3D"border-collapse: collapse;">
<tbody>
<tr>
<td style=3D"font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; fo=
nt-size: 15px; line-height: 1.4; padding-right: 5px;" valign=3D"middle">
<img alt=3D"" height=3D"13" src=3D"https://gitlab.com/assets/mailers/ci_p=
ipeline_notif_v1/icon-commit-gray-c10243ac24cde64b549aec91de35e6b49c8739b=
506b86472b54614c10d8b4aac.gif" style=3D"display: block;" width=3D"13" />
</td>
<td style=3D"font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; fo=
nt-size: 15px; line-height: 1.4;" valign=3D"middle">
<a href=3D"https://gitlab.com/xen-project/xen/-/commit/5a3ace21f3d779b291=
a2d305824b2820d88de7f1" style=3D"color: #3777b0; text-decoration: none;">=
5a3ace21</a>
</td>
</tr>
</tbody>
</table>
<div class=3D"commit" style=3D"color: #5c5c5c; font-weight: 300;">
xen/arm: smmu-v3: address violations of MISRA C...
</div>
</td>
</tr>
<tr>
<td style=3D"font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; fo=
nt-size: 15px; line-height: 1.4; color: #8c8c8c; font-weight: 300; border=
-top-width: 1px; border-top-color: #ededed; border-top-style: solid; marg=
in: 0; padding: 14px 0;">
Commit Author
</td>
<td style=3D"font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; fo=
nt-size: 15px; line-height: 1.4; color: #333333; font-weight: 500; width:=
 75%; border-top-width: 1px; border-top-color: #ededed; border-top-style:=
 solid; margin: 0; padding: 14px 0 14px 5px;">
<table border=3D"0" cellpadding=3D"0" cellspacing=3D"0" class=3D"img" sty=
le=3D"border-collapse: collapse;">
<tbody>
<tr>
<td style=3D"font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; fo=
nt-size: 15px; line-height: 1.4; padding-right: 5px;" valign=3D"middle">
<img alt=3D"" class=3D"avatar" height=3D"24" src=3D"https://secure.gravat=
ar.com/avatar/7347c1427cde55f447d83dc392bce562?s=3D48&amp;d=3Didenticon" =
style=3D"display: block; border-radius: 12px; margin: -2px 0;" width=3D"2=
4" />
</td>
<td style=3D"font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; fo=
nt-size: 15px; line-height: 1.4;" valign=3D"middle">
<span>
Federico Serafini
</span>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr>
<td style=3D"font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; fo=
nt-size: 15px; line-height: 1.4; color: #8c8c8c; font-weight: 300; border=
-top-width: 1px; border-top-color: #ededed; border-top-style: solid; marg=
in: 0; padding: 14px 0;">
Committed by
</td>
<td style=3D"font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; fo=
nt-size: 15px; line-height: 1.4; color: #333333; font-weight: 500; width:=
 75%; border-top-width: 1px; border-top-color: #ededed; border-top-style:=
 solid; margin: 0; padding: 14px 0 14px 5px;">
<table border=3D"0" cellpadding=3D"0" cellspacing=3D"0" class=3D"img" sty=
le=3D"border-collapse: collapse;">
<tbody>
<tr>
<td style=3D"font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; fo=
nt-size: 15px; line-height: 1.4; padding-right: 5px;" valign=3D"middle">
<img alt=3D"" class=3D"avatar" height=3D"24" src=3D"https://secure.gravat=
ar.com/avatar/50b82a64e2a9f930cabefa3948871101?s=3D48&amp;d=3Didenticon" =
style=3D"display: block; border-radius: 12px; margin: -2px 0;" width=3D"2=
4" />
</td>
<td style=3D"font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; fo=
nt-size: 15px; line-height: 1.4;" valign=3D"middle">
<span>
Stefano Stabellini
</span>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr class=3D"spacer">
<td style=3D"font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; he=
ight: 18px; font-size: 18px; line-height: 18px;">
&#160;
</td>
</tr>
<tr class=3D"success-message">
<td style=3D"font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; co=
lor: #333333; font-size: 15px; font-weight: 400; line-height: 1.4; paddin=
g: 15px 5px 0;" align=3D"center">
<table border=3D"0" cellpadding=3D"0" cellspacing=3D"0" class=3D"img" sty=
le=3D"border-collapse: collapse; margin: 0 auto;">
<tbody>
<tr>
<td style=3D"font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; fo=
nt-size: 15px; line-height: 1.4; font-weight: 500;" valign=3D"baseline">
Pipeline <a href=3D"https://gitlab.com/xen-project/xen/-/pipelines/112977=
5950" style=3D"color: #3777b0; text-decoration: none;">#1129775950</a> tr=
iggered by
</td>
<td style=3D"font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; fo=
nt-size: 15px; line-height: 1.4; font-weight: 500; padding-right: 5px; pa=
dding-left: 5px;" width=3D"24" valign=3D"middle">
<img alt=3D"" class=3D"avatar" height=3D"24" src=3D"https://secure.gravat=
ar.com/avatar/4c68e59c4858f6dbd3465bd1ba226772?s=3D48&amp;d=3Didenticon" =
style=3D"display: block; border-radius: 12px; margin: -2px 0;" width=3D"2=
4" />
</td>
<td style=3D"font-family: 'Helvetica Neue',Helvetica,Arial,sans-serif; fo=
nt-size: 15px; line-height: 1.4;" valign=3D"baseline">
<a class=3D"muted" href=3D"https://gitlab.com/andyhhp" style=3D"color: #3=
33333; text-decoration: none;">
Andrew Cooper
</a>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr>
<td colspan=3D"2" style=3D"font-family: 'Helvetica Neue',Helvetica,Arial,=
sans-serif; color: #333333; font-size: 15px; font-weight: 300; line-heigh=
t: 1.4; padding: 15px 5px;" align=3D"center">
successfully completed 133 jobs in 3 stages.
</td>
</tr>


</tbody>
</table>
</td>
</tr>
</tbody>
</table>
</td>
</tr>

<tr class=3D"footer">
<td style=3D"font-family: &quot;Helvetica Neue&quot;, Helvetica, Arial, s=
ans-serif; font-size: 13px; line-height: 1.6; color: #5c5c5c; padding: 25=
px 0;">
<img alt=3D"GitLab" class=3D"footer-logo" src=3D"https://gitlab.com/asset=
s/mailers/gitlab_logo_black_text-5430ca955baf2bbce6d3aa856a025da70ac5c959=
5597537254f665c10beab7a5.png" style=3D"display: block; width: 90px; margi=
n: 0 auto 1em;" />
<div>
You're receiving this email because of your account on <a target=3D"_blan=
k" rel=3D"noopener noreferrer" href=3D"https://gitlab.com" style=3D"color=
: #3777b0; text-decoration: none;">gitlab.com</a>. <a href=3D"https://git=
lab.com/-/profile/notifications" target=3D"_blank" rel=3D"noopener norefe=
rrer" class=3D"mng-notif-link" style=3D"color: #3777b0; text-decoration: =
none;">Manage all notifications</a> &#183; <a href=3D"https://gitlab.com/=
help" target=3D"_blank" rel=3D"noopener noreferrer" class=3D"help-link" s=
tyle=3D"color: #3777b0; text-decoration: none;">Help</a>
</div>
</td>
</tr>


<tr>
<td class=3D"footer-message" style=3D"font-family: &quot;Helvetica Neue&q=
uot;, Helvetica, Arial, sans-serif; font-size: 13px; line-height: 1.6; co=
lor: #5c5c5c; padding: 25px 0;">

</td>
</tr>
</tbody>
</table>
</body>
</html>

----==_mimepart_659ab8df701bd_2c36b30e584701d8--


From xen-devel-bounces@lists.xenproject.org Sun Jan 07 14:51:38 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sun, 07 Jan 2024 14:51:38 +0000
Received: from list by lists.xenproject.org with outflank-mailman.662690.1032706 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMUUw-0001UJ-Iq; Sun, 07 Jan 2024 14:51:34 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 662690.1032706; Sun, 07 Jan 2024 14:51:34 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMUUw-0001UC-FY; Sun, 07 Jan 2024 14:51:34 +0000
Received: by outflank-mailman (input) for mailman id 662690;
 Sun, 07 Jan 2024 14:51:32 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rMUUu-0001U0-NF; Sun, 07 Jan 2024 14:51:32 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rMUUu-00005y-F6; Sun, 07 Jan 2024 14:51:32 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rMUUt-0000Eo-T8; Sun, 07 Jan 2024 14:51:32 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rMUUt-00019K-Se; Sun, 07 Jan 2024 14:51:31 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=8Y1pXXj1IOu//RxgrG4GJYC2ytW4H8DiJlh/e4Xco5Q=; b=He2SwUVxclI0mqPKNEMsGCteed
	2Uckitcs/i/rO73QFPdx63QmiEZ2xQK3+T6voGsGxOkmHLhNW3aZazH/H1r5XGq4twkWpCqKZC9Mb
	L7ZvQX5YrmSBFiJEM6oSIUiqaRyD3Zuj3j3Hw3iLIHLoIZZ2ZAEoDElpFjWQXq+q32ZU=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184268-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [linux-linus test] 184268: tolerable FAIL - PUSHED
X-Osstest-Failures:
    linux-linus:test-amd64-amd64-freebsd11-amd64:guest-localmigrate/x10:fail:heisenbug
    linux-linus:test-armhf-armhf-libvirt-raw:xen-boot:fail:heisenbug
    linux-linus:test-amd64-amd64-xl-credit1:guest-start/debian.repeat:fail:heisenbug
    linux-linus:test-armhf-armhf-libvirt-raw:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    linux-linus:test-amd64-amd64-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    linux-linus:test-amd64-amd64-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-qcow2:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-qemuu-nested-amd:debian-hvm-install/l1/l2:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-xsm:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-credit1:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-thunderx:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-credit1:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-thunderx:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-xsm:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-xsm:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-credit2:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-credit2:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-libvirt-xsm:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-libvirt-xsm:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-multivcpu:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-multivcpu:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-qcow2:migrate-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-arndale:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-arndale:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-rtds:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-rtds:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit1:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit1:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit2:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit2:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-libvirt-raw:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-vhd:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-vhd:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-vhd:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-vhd:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-qcow2:migrate-support-check:fail:nonblocking
X-Osstest-Versions-This:
    linux=52b1853b080a082ec3749c3a9577f6c71b1d4a90
X-Osstest-Versions-That:
    linux=95c8a35f1c017327eab3b6a2ff5c04255737c856
From: osstest service owner <osstest-admin@xenproject.org>
Date: Sun, 07 Jan 2024 14:51:31 +0000

flight 184268 linux-linus real [real]
flight 184269 linux-linus real-retest [real]
http://logs.test-lab.xenproject.org/osstest/logs/184268/
http://logs.test-lab.xenproject.org/osstest/logs/184269/

Failures :-/ but no regressions.

Tests which are failing intermittently (not blocking):
 test-amd64-amd64-freebsd11-amd64 19 guest-localmigrate/x10 fail pass in 184269-retest
 test-armhf-armhf-libvirt-raw  8 xen-boot            fail pass in 184269-retest
 test-amd64-amd64-xl-credit1 22 guest-start/debian.repeat fail pass in 184269-retest

Tests which did not succeed, but are not blocking:
 test-armhf-armhf-libvirt-raw 15 saverestore-support-check fail in 184269 like 184265
 test-armhf-armhf-libvirt-raw 14 migrate-support-check fail in 184269 never pass
 test-amd64-amd64-xl-qemut-win7-amd64 19 guest-stop            fail like 184265
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 184265
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 184265
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 184265
 test-amd64-amd64-xl-qemut-ws16-amd64 19 guest-stop            fail like 184265
 test-armhf-armhf-libvirt-qcow2 15 saverestore-support-check   fail like 184265
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 184265
 test-amd64-amd64-libvirt     15 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl          15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl          16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-credit1  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-thunderx 15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit1  16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-thunderx 16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-xsm      15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-xsm      16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-credit2  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit2  16 saverestore-support-check    fail   never pass
 test-arm64-arm64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-xsm 16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-multivcpu 15 migrate-support-check        fail  never pass
 test-armhf-armhf-xl-multivcpu 16 saverestore-support-check    fail  never pass
 test-amd64-amd64-libvirt-qcow2 14 migrate-support-check        fail never pass
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-armhf-armhf-xl-arndale  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-arndale  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-rtds     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-rtds     16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-credit1  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit1  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-credit2  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit2  16 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-raw 14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 15 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-vhd      14 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-vhd      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-vhd      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          16 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-qcow2 14 migrate-support-check        fail never pass

version targeted for testing:
 linux                52b1853b080a082ec3749c3a9577f6c71b1d4a90
baseline version:
 linux                95c8a35f1c017327eab3b6a2ff5c04255737c856

Last test of basis   184265  2024-01-06 13:44:26 Z    1 days
Testing same since   184268  2024-01-07 02:16:58 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Attreyee Mukherjee <tintinm2017@gmail.com>
  Benjamin Bara <benjamin.bara@skidata.com>
  Linus Torvalds <torvalds@linux-foundation.org>
  Michael Walle <mwalle@kernel.org>
  Randy Dunlap <rdunlap@infradead.org>
  Tor Vic <torvic9@mailbox.org>
  Wolfram Sang <wsa@kernel.org>

jobs:
 build-amd64-xsm                                              pass    
 build-arm64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64                                                  pass    
 build-arm64                                                  pass    
 build-armhf                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-arm64-libvirt                                          pass    
 build-armhf-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-pvops                                            pass    
 build-arm64-pvops                                            pass    
 build-armhf-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-amd64-amd64-xl                                          pass    
 test-amd64-coresched-amd64-xl                                pass    
 test-arm64-arm64-xl                                          pass    
 test-armhf-armhf-xl                                          pass    
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm           pass    
 test-amd64-amd64-xl-qemut-stubdom-debianhvm-amd64-xsm        pass    
 test-amd64-amd64-xl-qemut-debianhvm-i386-xsm                 pass    
 test-amd64-amd64-xl-qemuu-debianhvm-i386-xsm                 pass    
 test-amd64-amd64-libvirt-xsm                                 pass    
 test-arm64-arm64-libvirt-xsm                                 pass    
 test-amd64-amd64-xl-xsm                                      pass    
 test-arm64-arm64-xl-xsm                                      pass    
 test-amd64-amd64-qemuu-nested-amd                            fail    
 test-amd64-amd64-xl-pvhv2-amd                                pass    
 test-amd64-amd64-dom0pvh-xl-amd                              pass    
 test-amd64-amd64-xl-qemut-debianhvm-amd64                    pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64                    pass    
 test-amd64-amd64-freebsd11-amd64                             fail    
 test-amd64-amd64-freebsd12-amd64                             pass    
 test-amd64-amd64-xl-qemuu-ovmf-amd64                         pass    
 test-amd64-amd64-xl-qemut-win7-amd64                         fail    
 test-amd64-amd64-xl-qemuu-win7-amd64                         fail    
 test-amd64-amd64-xl-qemut-ws16-amd64                         fail    
 test-amd64-amd64-xl-qemuu-ws16-amd64                         fail    
 test-armhf-armhf-xl-arndale                                  pass    
 test-amd64-amd64-examine-bios                                pass    
 test-amd64-amd64-xl-credit1                                  fail    
 test-arm64-arm64-xl-credit1                                  pass    
 test-armhf-armhf-xl-credit1                                  pass    
 test-amd64-amd64-xl-credit2                                  pass    
 test-arm64-arm64-xl-credit2                                  pass    
 test-armhf-armhf-xl-credit2                                  pass    
 test-amd64-amd64-xl-qemuu-dmrestrict-amd64-dmrestrict        pass    
 test-amd64-amd64-examine                                     pass    
 test-arm64-arm64-examine                                     pass    
 test-armhf-armhf-examine                                     pass    
 test-amd64-amd64-qemuu-nested-intel                          pass    
 test-amd64-amd64-xl-pvhv2-intel                              pass    
 test-amd64-amd64-dom0pvh-xl-intel                            pass    
 test-amd64-amd64-libvirt                                     pass    
 test-armhf-armhf-libvirt                                     pass    
 test-amd64-amd64-xl-multivcpu                                pass    
 test-armhf-armhf-xl-multivcpu                                pass    
 test-amd64-amd64-pair                                        pass    
 test-amd64-amd64-libvirt-pair                                pass    
 test-amd64-amd64-xl-pvshim                                   pass    
 test-amd64-amd64-pygrub                                      pass    
 test-amd64-amd64-libvirt-qcow2                               pass    
 test-armhf-armhf-libvirt-qcow2                               pass    
 test-amd64-amd64-libvirt-raw                                 pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-armhf-armhf-libvirt-raw                                 fail    
 test-amd64-amd64-xl-rtds                                     pass    
 test-armhf-armhf-xl-rtds                                     pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64-shadow             pass    
 test-amd64-amd64-xl-shadow                                   pass    
 test-arm64-arm64-xl-thunderx                                 pass    
 test-amd64-amd64-examine-uefi                                pass    
 test-amd64-amd64-xl-vhd                                      pass    
 test-arm64-arm64-xl-vhd                                      pass    
 test-armhf-armhf-xl-vhd                                      pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Pushing revision :

hint: The 'hooks/update' hook was ignored because it's not set as executable.
hint: You can disable this warning with `git config advice.ignoredHook false`.
hint: The 'hooks/post-receive' hook was ignored because it's not set as executable.
hint: You can disable this warning with `git config advice.ignoredHook false`.
hint: The 'hooks/post-update' hook was ignored because it's not set as executable.
hint: You can disable this warning with `git config advice.ignoredHook false`.
To xenbits.xen.org:/home/xen/git/linux-pvops.git
   95c8a35f1c01..52b1853b080a  52b1853b080a082ec3749c3a9577f6c71b1d4a90 -> tested/linux-linus


From xen-devel-bounces@lists.xenproject.org Sun Jan 07 23:16:43 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sun, 07 Jan 2024 23:16:43 +0000
Received: from list by lists.xenproject.org with outflank-mailman.662934.1032844 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMcNg-0003M6-Hx; Sun, 07 Jan 2024 23:16:36 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 662934.1032844; Sun, 07 Jan 2024 23:16:36 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMcNg-0003Lz-F9; Sun, 07 Jan 2024 23:16:36 +0000
Received: by outflank-mailman (input) for mailman id 662934;
 Sun, 07 Jan 2024 23:16:35 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=tS93=IR=gmail.com=shentey@srs-se1.protection.inumbo.net>)
 id 1rMcNf-0003Lm-7C
 for xen-devel@lists.xenproject.org; Sun, 07 Jan 2024 23:16:35 +0000
Received: from mail-lf1-x12b.google.com (mail-lf1-x12b.google.com
 [2a00:1450:4864:20::12b])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id cbecb944-adb2-11ee-9b0f-b553b5be7939;
 Mon, 08 Jan 2024 00:16:33 +0100 (CET)
Received: by mail-lf1-x12b.google.com with SMTP id
 2adb3069b0e04-50e7e55c0f6so1047359e87.0
 for <xen-devel@lists.xenproject.org>; Sun, 07 Jan 2024 15:16:33 -0800 (PST)
Received: from localhost.localdomain
 (dynamic-077-191-044-194.77.191.pool.telefonica.de. [77.191.44.194])
 by smtp.gmail.com with ESMTPSA id
 p9-20020a17090635c900b00a27eddc3dcbsm3338834ejb.198.2024.01.07.15.16.31
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Sun, 07 Jan 2024 15:16:31 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: cbecb944-adb2-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1704669393; x=1705274193; darn=lists.xenproject.org;
        h=content-transfer-encoding:mime-version:message-id:date:subject:cc
         :to:from:from:to:cc:subject:date:message-id:reply-to;
        bh=6jsVDJtLEm1lPndCJvtY3GO9mpTGY2wxwxo3LuOR4oE=;
        b=TrGqEa6XVWszGUL3Rm7pOFjyhpxAA7bNlDjEoK7TDSuOyG3iWnkXhEw6sAFmjX5f1p
         SZKsnsJGNqBV3be1isrYkfPPEr18vCkhTYG1souXrg0YldZ+DerZSrJoLRG2cQqhUPXM
         1gNbubE74i5RNG9Xv3rNg2BOXsT2S7iiXVc+4viQxDN9TkOtptnnAa5t3/A3ml24xij7
         4adVsH7CoVXDKkzACWpXyY3VQbkxu6QZd6tCNRNvWOdsUDo8EXSdu3OHsxzeuOgONEZa
         LAd++kvdlw6Ai//qLI4tEfvPYPC8LlK5U0+o06vTUaJY+QOondWPYChqd/nQ2ZYxa046
         6czg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704669393; x=1705274193;
        h=content-transfer-encoding:mime-version:message-id:date:subject:cc
         :to:from:x-gm-message-state:from:to:cc:subject:date:message-id
         :reply-to;
        bh=6jsVDJtLEm1lPndCJvtY3GO9mpTGY2wxwxo3LuOR4oE=;
        b=mhAB/oJMnyjexH4gbbTQ//lZ/8X2ppEyg9NNTIrdMVpNmjEp95oaJQkIDBgxvWxZxn
         osxT0Ym7HTIsMt8JN9sbcPFV8YW7YM/CCQ24/bfStcjKnbj/PQQozMKfeg8/p4n4ktUf
         NNT0VEwQZi86WZLU1A+VGNT0RC5WSnmiOUfjquyk4uD3nWVZn0eYtxOb/hACy/zYr4Vz
         F3Mr12Gl1WRHrMz3EDXFddrRVpG30hNphjbTfhxxHllhiDMaN5RzaugVyVw6j2cD3iiH
         fW9CyhV7+0rDMWVOzOwYPR3O9Svch2ZHeuYDtONymv38fTGLrsnzgksMH9l5NcK9hLZx
         +mMg==
X-Gm-Message-State: AOJu0YzOw/7hR8jWZHQfwLYV9Vh8gQfPW4ZXUz3BFWr8oZnup82XH2gC
	vDxBG9fkvQ7E90gN1IevY78=
X-Google-Smtp-Source: AGHT+IHk2KwjckC2+0MPqdilUMmvonza/ii8ds1d+gqApYYQ7ahD486c6CLaIVQh3OrzE2iSYbke6w==
X-Received: by 2002:a05:6512:39ce:b0:50b:f1ca:e6a with SMTP id k14-20020a05651239ce00b0050bf1ca0e6amr610420lfu.48.1704669392392;
        Sun, 07 Jan 2024 15:16:32 -0800 (PST)
From: Bernhard Beschow <shentey@gmail.com>
To: qemu-devel@nongnu.org
Cc: Chuck Zmudzinski <brchuckz@aol.com>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	xen-devel@lists.xenproject.org,
	David Woodhouse <dwmw2@infradead.org>,
	Eduardo Habkost <eduardo@habkost.net>,
	"Michael S. Tsirkin" <mst@redhat.com>,
	Marcel Apfelbaum <marcel.apfelbaum@gmail.com>,
	Paul Durrant <paul@xen.org>,
	Richard Henderson <richard.henderson@linaro.org>,
	Anthony PERARD <anthony.perard@citrix.com>,
	Bernhard Beschow <shentey@gmail.com>
Subject: [PATCH] hw/i386/pc_piix: Make piix_intx_routing_notifier_xen() more device independent
Date: Mon,  8 Jan 2024 00:16:23 +0100
Message-ID: <20240107231623.5282-1-shentey@gmail.com>
X-Mailer: git-send-email 2.43.0
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

This is a follow-up on commit 89965db43cce "hw/isa/piix3: Avoid Xen-specific
variant of piix3_write_config()" which introduced
piix_intx_routing_notifier_xen(). This function is implemented in board code but
accesses the PCI configuration space of the PIIX ISA function to determine the
PCI interrupt routes. Avoid this by reusing pci_device_route_intx_to_irq() which
makes piix_intx_routing_notifier_xen() more device-agnostic.

One remaining improvement would be making piix_intx_routing_notifier_xen()
agnostic towards the number of PCI interrupt routes and move it to xen-hvm.
This might be useful for possible Q35 Xen efforts but remains a future exercise
for now.

Signed-off-by: Bernhard Beschow <shentey@gmail.com>
---
 hw/i386/pc_piix.c | 9 +++------
 1 file changed, 3 insertions(+), 6 deletions(-)

diff --git a/hw/i386/pc_piix.c b/hw/i386/pc_piix.c
index 042c13cdbc..abfcfe4d2b 100644
--- a/hw/i386/pc_piix.c
+++ b/hw/i386/pc_piix.c
@@ -92,13 +92,10 @@ static void piix_intx_routing_notifier_xen(PCIDevice *dev)
 {
     int i;
 
-    /* Scan for updates to PCI link routes (0x60-0x63). */
+    /* Scan for updates to PCI link routes. */
     for (i = 0; i < PIIX_NUM_PIRQS; i++) {
-        uint8_t v = dev->config_read(dev, PIIX_PIRQCA + i, 1);
-        if (v & 0x80) {
-            v = 0;
-        }
-        v &= 0xf;
+        const PCIINTxRoute route = pci_device_route_intx_to_irq(dev, i);
+        const uint8_t v = route.mode == PCI_INTX_ENABLED ? route.irq : 0;
         xen_set_pci_link_route(i, v);
     }
 }
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Mon Jan 08 01:02:32 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 08 Jan 2024 01:02:32 +0000
Received: from list by lists.xenproject.org with outflank-mailman.663115.1032951 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMe27-0000Ad-Bg; Mon, 08 Jan 2024 01:02:27 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 663115.1032951; Mon, 08 Jan 2024 01:02:27 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMe27-0000AW-8q; Mon, 08 Jan 2024 01:02:27 +0000
Received: by outflank-mailman (input) for mailman id 663115;
 Mon, 08 Jan 2024 01:02:25 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=wRqL=IS=nxp.com=peng.fan@srs-se1.protection.inumbo.net>)
 id 1rMe25-0000AQ-A2
 for xen-devel@lists.xenproject.org; Mon, 08 Jan 2024 01:02:25 +0000
Received: from EUR04-HE1-obe.outbound.protection.outlook.com
 (mail-he1eur04on2082.outbound.protection.outlook.com [40.107.7.82])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 941cf4b3-adc1-11ee-98ef-6d05b1d4d9a1;
 Mon, 08 Jan 2024 02:02:22 +0100 (CET)
Received: from DU0PR04MB9417.eurprd04.prod.outlook.com (2603:10a6:10:358::11)
 by DB8PR04MB6809.eurprd04.prod.outlook.com (2603:10a6:10:11b::24)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7159.21; Mon, 8 Jan
 2024 01:01:52 +0000
Received: from DU0PR04MB9417.eurprd04.prod.outlook.com
 ([fe80::c499:8cef:9bb1:ced6]) by DU0PR04MB9417.eurprd04.prod.outlook.com
 ([fe80::c499:8cef:9bb1:ced6%3]) with mapi id 15.20.7159.020; Mon, 8 Jan 2024
 01:01:51 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 941cf4b3-adc1-11ee-98ef-6d05b1d4d9a1
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=CFWh3F16Bx7Cn1IDSZxeLvoCo3250GVxuE8RfaNFgj5ijp9fSZf21GvVJ+GEzlrasQGTLbNgrRiYBiuBUC/L4JNhvSPn4ufxUrm+6RtfGzRRTV9oHd8vCooa7kDEGHx6TPYKPkkVCMujDYK5jVKORFdvo3qspYQxQRt+HDCvMSRWWrQhMh8X9d20Ap8XR8TYvQphDzrFHwMATcs+fx2NGeFyJWQv8+nWUtJCv2n39KWWJ8FV1F1m5SyQw+8/FrRayaSpShajqqCDZqtpJhubBEFR6LhOOtgtwa8RYFDOYfPIMMxWP2dxsZBztcDJ0silgJZTQXpZWwyK1SJQtqSy3Q==
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=p1ZLikcbaNxmXdoyeTDoUbUT9SAxTTZJDsm26mt/e+Y=;
 b=WfCM4THPKcmj2xtcuawpX9PHRmdQUcs1fbuCPdiRvrR+Ao0eXwm8/+NivN6FyDKWPGLzSfEUUts+SUYOkZt8PiOq4IFVm9nbw1diDxLtQwLt9QWsHWKw6/oB94psCWBlzhuSOyJEKQFHZeHAWBm56bg7gKYsPBWc40Xrs+IGPAwAYAjzjvU5de42ufTKY33OxsWLa5IE8L93hSl9Xh48SF0qjNRPaqA1VKRLgrpuc78JsLj9eASHY0HoaHwZR/GvbMsFioKuxZxs6ZGOmJdef2tyMbHBasXpQt49hyE5/w4Rz0vxlsq556y8CUFSCw46+nH6568vbsJlHG20Wj8JOg==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass
 header.d=nxp.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector2;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=p1ZLikcbaNxmXdoyeTDoUbUT9SAxTTZJDsm26mt/e+Y=;
 b=fX189zKEAa3qrxZYLnkBYHYSqflI2GY9H9Dd3yvyM26P+ZV+pnEvUCqYY1abs9wHp7d1gogrzF1UvAcGq4DqQZ5kshVbITukICX6LI9p7YFCrouXokhs3XmOnZG4eIKGj476McUVkO9KAvwCW4rxa64/aO5bHJgAwkysWOq3npA=
From: Peng Fan <peng.fan@nxp.com>
To: "stefano.stabellini@amd.com" <stefano.stabellini@amd.com>, Julien Grall
	<julien@xen.org>, "vikram.garhwal@amd.com" <vikram.garhwal@amd.com>, Viresh
 Kumar <viresh.kumar@linaro.org>, "stefanha@redhat.com" <stefanha@redhat.com>,
	"eric.auger@redhat.com" <eric.auger@redhat.com>
CC: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>,
	"qemu-devel@nongnu.org" <qemu-devel@nongnu.org>, Peng Fan <peng.fan@nxp.com>
Subject: !qemu_in_coroutine() assert on ARM64 XEN
Thread-Topic: !qemu_in_coroutine() assert on ARM64 XEN
Thread-Index: AdpBzJr/mAIZVbpOTKm49WBDDTXwJg==
Date: Mon, 8 Jan 2024 01:01:51 +0000
Message-ID:
 <DU0PR04MB9417777F713CB9AE4475FFC7886B2@DU0PR04MB9417.eurprd04.prod.outlook.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=nxp.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: DU0PR04MB9417:EE_|DB8PR04MB6809:EE_
x-ms-office365-filtering-correlation-id: 4117de52-cdde-45fe-7927-08dc0fe56662
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam: BCL:0;
x-microsoft-antispam-message-info:
 8p6dMXh0wim0UFl2HmpE1g0lnHqyNDT8T+rJpMLBsNtCMGycs1DRtybl9Ht2L9nZd3bt5KplC6oRzcPgw3UjOfvDOEfq+J3u+0D1ZmTfvyO+rb69Pj5pmXC+kY7mWmoku8a5dOVH/vqx5HocHLs0RCIeiq8fhB+X22r2ciXarF2jsaaEkuFO55sENCs2BthEx67kcRe+TO9yjY0GcoDGM0oUxhXi9WebaMYZAqTM0hpS4vBqCtMqUgvIUyGgHEkSm5wKhODg9UuiH3jOtoTnYO2C0MovSrNwfNW6VXHXrnmhHM7U8kXZtnMCNL9ksRdNsnJ6E59PjbVBRZNcdLwlDuyaZY+JxtsO5KPfhDf5f4KBj89kw6Fd8YGsujOfzJko5YC6tm3IW3TVkigT2k3M7fxuKlL1C/mUlDQ5ne14hO/pOwYoQ3zGPqjKFJ2+EAq7RdLel55mNgNwvxvnX3Ly9wKkngP2UFe0es59Vlf/9tqH2LZQzsmM8HzEZuOrqQPedwYtEL72N9/a7IUnqeyfuI/LZZAajc5cOXeuB/2LgiMM+HXyJAZC8mK4Z/+v7KpBHQ1GjB/pEaFLpV93ywO+hJ8bU9sEfZyOPV5Cpki1x0zbdX6XV+dYk5pd/Q2mjErX
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DU0PR04MB9417.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230031)(39860400002)(346002)(376002)(396003)(366004)(136003)(230922051799003)(64100799003)(451199024)(186009)(1800799012)(110136005)(54906003)(122000001)(316002)(86362001)(966005)(52536014)(4326008)(71200400001)(64756008)(66556008)(76116006)(66446008)(66946007)(66476007)(478600001)(7696005)(38100700002)(26005)(6506007)(9686003)(55016003)(44832011)(8936002)(8676002)(33656002)(83380400001)(5660300002)(2906002)(30864003)(41300700001)(38070700009)(176633001)(579004);DIR:OUT;SFP:1101;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?us-ascii?Q?SMezuctWWG7E149HvfkntTb7NbsxS5EGXQuzIualmk0d1RwGok04xM++yzsf?=
 =?us-ascii?Q?q/tEcOY3yGok5K9J2JdIT9tzh0Ii4vqeP94IKffok3/wIEJ2MnIURYZ9rkQ/?=
 =?us-ascii?Q?RsYH6MW1qM6eb0JGVIrI141RFID/fmwKpz2aRntT0eoo2GhfdRSkKSEYg6jD?=
 =?us-ascii?Q?9EjdP6pIvEqpSbKjn4Ugl1XnyfD/xXtj5eKz+LLjfHVtEZvLhuQCQqiL70ct?=
 =?us-ascii?Q?796R6P/pwanMohdpN1TFJIUpcAF7Pi9/UtOGqbwNaoUI5u805hyvIqW+Hwd/?=
 =?us-ascii?Q?+sENKPZUqhwH0qDzgOaUdQ4rzq/IUv+AA61YFOO3w8iaQu9eokT2OzBnjRLd?=
 =?us-ascii?Q?cx/CP/dwM3dF3+NSHLLZKXBocQ71AmalXzQFcvLYSSolAXtRP8DdayFj9cRT?=
 =?us-ascii?Q?BUJj+37aVNba2yQiIo4PsxuEGYoxnW9O5KeUODUR6Clz3nG7BAAVJs/aNulV?=
 =?us-ascii?Q?dHQfmA5glt7TCs3ncITrK9Ws67HPgLRZH8wqFYHvso22tOB6dfzRpHRtBQUt?=
 =?us-ascii?Q?NmkDJ9Fe9blGvrMNwB5IuIVVVX+tDn/aMdq/+nryQwRgnpTdIaGXTiRK81j/?=
 =?us-ascii?Q?60Mk0fAR4X3x7seX61E2MqznAO5SM5IuYaAs3dYK3AezoX5IejwCTqDk77w7?=
 =?us-ascii?Q?4J7m1waJuCDmgbS7+yVxzaDsHenkSzm0seq3FUGFCRxtq8DaEj9Qf5xIsmPs?=
 =?us-ascii?Q?eb6esR2GK0q1eHwCRVJU1o+Cwj/FT9uhTFpyRNQkK00iSDU3qD6TvP3S7U80?=
 =?us-ascii?Q?raPZD3XAIImk9HE5SDf4KOZAGCUPKAmIEbmqv6GHRQ7g4u/PW0fDiJvHJ7aa?=
 =?us-ascii?Q?ROl7mCn0iSVByYnhO/wZ3GLt+2SgigJGvpj/xZ7jIzFgt2DjJkz980otfHsn?=
 =?us-ascii?Q?wRQrTCWF74CkVm10AEBQ5JsIeeomCVbOxgnORdFaP4+jRRL5PiDOABQuydJK?=
 =?us-ascii?Q?80wHyLAIYtlwr+kOtAtI5ZeEyCQ9uZ04iIW1UsBnCZauCA4LcX7xVsSayT9F?=
 =?us-ascii?Q?gCBCIaeXA/g0T4VW9t1jJWAa0gMFXm89WBt/iCbTIAr4tJP7XAsGyZFwRsNr?=
 =?us-ascii?Q?+X+5UVzwt6eJ/xzb/Tvz0ERqg+5kJ06SWxw9narBEXxUWW/y6vBgdf1bF7O6?=
 =?us-ascii?Q?RETKLk0U2/4gbnqrkTQGH6Ny7wUuv1i7YcwKYFVW3wnizTBJfomHFiBItOTU?=
 =?us-ascii?Q?v6i8yp5KY5LnRxIMOhh4tjP2vXTLfHsG0LAevR4Dh6npv0JoVHqrVngXvwVd?=
 =?us-ascii?Q?+YSpUpLNMWvNMloQDzfAqxGzH8m6ExZNoQ+Tx7NFI7fwu7j+BSuoYfG6bgz5?=
 =?us-ascii?Q?bz9cxvMvRvrwt3yTcipprSifK4gWGuIF5ORZdLHqPTWhJcq2yWC01ZCt0D/S?=
 =?us-ascii?Q?nYC8/ITyWc7A9IWWEAhDUejR78CoybwqVrwHcOWEwHI8OcCwknWGf2L1W0iT?=
 =?us-ascii?Q?iM5Gla1DBkrzWnotQ3emrnITUODVx+WS0AWdPs6cJvABR4FqCanAQw3A6n7s?=
 =?us-ascii?Q?wYcjbYk/gWE+bhAEwAKikzJNzyJo4lW1hIR0MEQFJdtLGSw1ueZv9XBpzx3w?=
 =?us-ascii?Q?rX/ZbPX3bxY0FmLT2GQ=3D?=
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-OriginatorOrg: nxp.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: DU0PR04MB9417.eurprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 4117de52-cdde-45fe-7927-08dc0fe56662
X-MS-Exchange-CrossTenant-originalarrivaltime: 08 Jan 2024 01:01:51.9283
 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: vYl85FCRiFuAiSfUYwCOGmxoRZ3OiN1LWrf9hm9BTdl2u1mqmAuidnMDDy2/OVaMlwLYFdQB9nL/uRgh8dYl9Q==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB8PR04MB6809

Hi All,

When enabling virtio disk and virtio net on Xen, I could see qemu blk asser=
t
and being killed sometimes,  This is not 100% reproducible. I am using
qemu master branch

7425b6277f12e82952cede1f531bfc689bf77fb1 (HEAD -> dummy, origin/staging,=20
origin/master, origin/HEAD, master) Merge tag 'tracing-pull-request'=20
of https://gitlab.com/stefanha/qemu into staging

The qemu built option is the one in xen tool/Makefile, I just
change to qemu-system-aarch64.

Anyone has suggestions?

The coredump stack:

Symbols already loaded for /usr/lib/libc.so.6
(gdb) bt
#0  __pthread_kill_implementation (threadid=3D<optimized out>,
    signo=3Dsigno@entry=3D6, no_tid=3Dno_tid@entry=3D0) at pthread_kill.c:4=
4
#1  0x0000ffff9e100568 in __pthread_kill_internal (signo=3D6,
    threadid=3D<optimized out>) at pthread_kill.c:78
#2  0x0000ffff9e0bacd0 in __GI_raise (sig=3Dsig@entry=3D6)
    at /usr/src/debug/glibc/2.38+git-r0/sysdeps/posix/raise.c:26
#3  0x0000ffff9e0a6ef0 in __GI_abort () at abort.c:79
#4  0x0000ffff9e0b43f8 in __assert_fail_base (
    fmt=3D0xffff9e1ca8a8 "%s%s%s:%u: %s%sAssertion `%s' failed.\n%n",
    assertion=3Dassertion@entry=3D0xaaaae0d25740 "!qemu_in_coroutine()",
    file=3Dfile@entry=3D0xaaaae0d301a8 "../qemu-xen-dir-remote/block/graph-=
lock.c", line=3Dline@entry=3D260,
    function=3Dfunction@entry=3D0xaaaae0e522c0 <__PRETTY_FUNCTION__.3> "bdr=
v_graph_rdlock_main_loop") at assert.c:92
#5  0x0000ffff9e0b4470 in __assert_fail (
    assertion=3Dassertion@entry=3D0xaaaae0d25740 "!qemu_in_coroutine()",
    file=3Dfile@entry=3D0xaaaae0d301a8 "../qemu-xen-dir-remote/block/graph-=
lock.c", line=3Dline@entry=3D260,
    function=3Dfunction@entry=3D0xaaaae0e522c0 <__PRETTY_FUNCTION__.3> "bdr=
v_graph_rdlock_main_loop") at assert.c:101
#6  0x0000aaaae0a66a60 in bdrv_graph_rdlock_main_loop ()
    at ../qemu-xen-dir-remote/block/graph-lock.c:260
#7  0x0000aaaae0a6d9e0 in graph_lockable_auto_lock_mainloop (x=3D<optimized=
 out>)
--Type <RET> for more, q to quit, c to continue without paging--
    at /home/Freenix/work/sw-stash/xen/upstream/tools/qemu-xen-dir-remote/i=
nclude/block/graph-lock.h:259
#8  bdrv_unregister_buf (bs=3Dbs@entry=3D0xaaaaf619d5a0,
    host=3Dhost@entry=3D0xffff742c8000, size=3Dsize@entry=3D2097152)
    at ../qemu-xen-dir-remote/block/io.c:3362
#9  0x0000aaaae0a5ddd4 in blk_unregister_buf (blk=3D<optimized out>,
    host=3D0xffff742c8000, size=3D2097152)
    at ../qemu-xen-dir-remote/block/block-backend.c:2859
#10 0x0000aaaae060aab4 in ram_block_removed (n=3D<optimized out>,
    host=3D<optimized out>, size=3D<optimized out>, max_size=3D<optimized o=
ut>)
    at ../qemu-xen-dir-remote/block/block-ram-registrar.c:33
#11 0x0000aaaae0399318 in ram_block_notify_remove (host=3D0xffff742c8000,
    size=3D2097152, max_size=3D2097152)
    at ../qemu-xen-dir-remote/hw/core/numa.c:883
#12 0x0000aaaae097cf84 in xen_invalidate_map_cache_entry_unlocked (
    buffer=3Dbuffer@entry=3D0xffff743c5000 "")
    at ../qemu-xen-dir-remote/hw/xen/xen-mapcache.c:475
#13 0x0000aaaae097dad0 in xen_invalidate_map_cache_entry (
    buffer=3Dbuffer@entry=3D0xffff743c5000 "")
    at ../qemu-xen-dir-remote/hw/xen/xen-mapcache.c:487
#14 0x0000aaaae0993e18 in address_space_unmap (
    as=3Das@entry=3D0xaaaae1ca3ae8 <address_space_memory>, buffer=3D0xffff7=
43c5000,
    len=3D<optimized out>, is_write=3Dis_write@entry=3Dtrue,
--Type <RET> for more, q to quit, c to continue without paging--
    access_len=3Daccess_len@entry=3D32768)
    at ../qemu-xen-dir-remote/system/physmem.c:3199
#15 0x0000aaaae095cc9c in dma_memory_unmap (access_len=3D32768,
    dir=3DDMA_DIRECTION_FROM_DEVICE, len=3D<optimized out>,
    buffer=3D<optimized out>, as=3D0xaaaae1ca3ae8 <address_space_memory>)

    at /home/Freenix/work/sw-stash/xen/upstream/tools/qemu-xen-dir-remote/i=
nclude/sysemu/dma.h:236
#16 virtqueue_unmap_sg (vq=3Dvq@entry=3D0xffff965cc010,
    elem=3Delem@entry=3D0xaaaaf620aa30, len=3Dlen@entry=3D32769)

    at ../qemu-xen-dir-remote/hw/virtio/virtio.c:758
#17 0x0000aaaae095efa4 in virtqueue_fill (vq=3Dvq@entry=3D0xffff965cc010,
    elem=3Delem@entry=3D0xaaaaf620aa30, len=3Dlen@entry=3D32769, idx=3Didx@=
entry=3D0)
    at ../qemu-xen-dir-remote/hw/virtio/virtio.c:919
#18 0x0000aaaae095f0b8 in virtqueue_push (vq=3D0xffff965cc010,

    elem=3Delem@entry=3D0xaaaaf620aa30, len=3D32769)
    at ../qemu-xen-dir-remote/hw/virtio/virtio.c:994
#19 0x0000aaaae091a608 in virtio_blk_req_complete (
    req=3Dreq@entry=3D0xaaaaf620aa30, status=3Dstatus@entry=3D0 '\000')

    at ../qemu-xen-dir-remote/hw/block/virtio-blk.c:67
#20 0x0000aaaae091bdc8 in virtio_blk_rw_complete (opaque=3D<optimized out>,
    ret=3D0) at ../qemu-xen-dir-remote/hw/block/virtio-blk.c:136
#21 0x0000aaaae0a5a938 in blk_aio_complete (acb=3Dacb@entry=3D0xffff880015f=
0)

    at ../qemu-xen-dir-remote/block/block-backend.c:1559
--Type <RET> for more, q to quit, c to continue without paging--
#22 0x0000aaaae0a5b58c in blk_aio_read_entry (opaque=3D0xffff880015f0)
    at ../qemu-xen-dir-remote/block/block-backend.c:1614

#23 0x0000aaaae0b96c2c in coroutine_trampoline (i0=3D<optimized out>,
    i1=3D<optimized out>) at ../qemu-xen-dir-remote/util/coroutine-ucontext=
.c:177
#24 0x0000ffff9e0bfb40 in ?? ()
    at ../sysdeps/unix/sysv/linux/aarch64/setcontext.S:123

   from /usr/lib/libc.so.6

(gdb) thread apply all bt

Thread 10 (Thread 0xffff951348c0 (LWP 5460)):
#0  0x0000ffff9e15d8c4 in __GI___libc_read (nbytes=3D16, buf=3D0xffff7c000c=
f0, fd=3D38) at /usr/src/debug/glibc/2.38+git-r0/sysdeps/unix/sysv/linux/re=
ad.c:26
#1  __GI___libc_read (fd=3Dfd@entry=3D38, buf=3Dbuf@entry=3D0xffff7c000cf0,=
 nbytes=3Dnbytes@entry=3D16) at /usr/src/debug/glibc/2.38+git-r0/sysdeps/un=
ix/sysv/linux/read.c:24
#2  0x0000ffff9f3828d8 in read (__nbytes=3D16, __buf=3D0xffff7c000cf0, __fd=
=3D38) at /home/Freenix/tools/fsl-imx-internal-xwayland/sysroots/armv8a-pok=
y-linux/usr/include/bits/unistd.h:28
#3  read_all (fd=3D38, data=3Ddata@entry=3D0xffff7c000cf0, len=3Dlen@entry=
=3D16, nonblocking=3Dnonblocking@entry=3D0) at xs.c:422
#4  0x0000ffff9f382a08 in read_message (h=3Dh@entry=3D0xaaaaf6352030, nonbl=
ocking=3Dnonblocking@entry=3D0) at xs.c:1303
#5  0x0000ffff9f383390 in read_thread (arg=3D0xaaaaf6352030) at xs.c:1396
#6  0x0000ffff9e0fe978 in start_thread (arg=3D0x19) at pthread_create.c:444
#7  0x0000ffff9e16708c in thread_start () at ../sysdeps/unix/sysv/linux/aar=
ch64/clone3.S:76

Thread 9 (Thread 0xffff96f02920 (LWP 5457)):
#0  0x0000ffff9e0fb1e4 in __futex_abstimed_wait_common64 (private=3D0, canc=
el=3Dtrue, abstime=3D0xffff96f01f18, op=3D393, expected=3D0, futex_word=3D0=
xaaaaf5e5a3a0) at futex-internal.c:57
--Type <RET> for more, q to quit, c to continue without paging--
#1  __futex_abstimed_wait_common (cancel=3Dtrue, private=3D0, abstime=3D0xf=
fff96f01f18, clockid=3D-169499744, expected=3D0, futex_word=3D0xaaaaf5e5a3a=
0) at futex-internal.c:87
#2  __GI___futex_abstimed_wait_cancelable64 (futex_word=3Dfutex_word@entry=
=3D0xaaaaf5e5a3a0, expected=3Dexpected@entry=3D0, clockid=3Dclockid@entry=
=3D0, abstime=3Dabstime@entry=3D0xffff96f01f18, private=3Dprivate@entry=3D0=
) at futex-internal.c:139
#3  0x0000ffff9e0fe038 in __pthread_cond_wait_common (abstime=3D0xffff96f01=
f18, clockid=3D0, mutex=3D0xaaaaf5e5a300, cond=3D0xaaaaf5e5a378) at pthread=
_cond_wait.c:503
#4  ___pthread_cond_timedwait64 (cond=3Dcond@entry=3D0xaaaaf5e5a378, mutex=
=3Dmutex@entry=3D0xaaaaf5e5a300, abstime=3Dabstime@entry=3D0xffff96f01f18) =
at pthread_cond_wait.c:643
#5  0x0000aaaae0b80938 in qemu_cond_timedwait_ts (cond=3Dcond@entry=3D0xaaa=
af5e5a378, mutex=3Dmutex@entry=3D0xaaaaf5e5a300, ts=3Dts@entry=3D0xffff96f0=
1f18, file=3Dfile@entry=3D0xaaaae0d72a30 "../qemu-xen-dir-remote/util/threa=
d-pool.c", line=3Dline@entry=3D91) at ../qemu-xen-dir-remote/util/qemu-thre=
ad-posix.c:239
#6  0x0000aaaae0b8125c in qemu_cond_timedwait_impl (cond=3D0xaaaaf5e5a378, =
mutex=3D0xaaaaf5e5a300, ms=3D<optimized out>, file=3D0xaaaae0d72a30 "../qem=
u-xen-dir-remote/util/thread-pool.c", line=3D91) at ../qemu-xen-dir-remote/=
util/qemu-thread-posix.c:253
#7  0x0000aaaae0b97368 in worker_thread (opaque=3Dopaque@entry=3D0xaaaaf5e5=
a2f0) at ../qemu-xen-dir-remote/util/thread-pool.c:91
#8  0x0000aaaae0b80af4 in qemu_thread_start (args=3D0xaaaaf6344f60) at ../q=
emu-xen-dir-remote/util/qemu-thread-posix.c:541
--Type <RET> for more, q to quit, c to continue without paging--
#9  0x0000ffff9e0fe978 in start_thread (arg=3D0x0) at pthread_create.c:444
#10 0x0000ffff9e16708c in thread_start () at ../sysdeps/unix/sysv/linux/aar=
ch64/clone3.S:76

Thread 8 (Thread 0xffff972378c0 (LWP 5455)):
#0  0x0000ffff9e15d8c4 in __GI___libc_read (nbytes=3D16, buf=3D0xffff8c000e=
40, fd=3D31) at /usr/src/debug/glibc/2.38+git-r0/sysdeps/unix/sysv/linux/re=
ad.c:26
#1  __GI___libc_read (fd=3Dfd@entry=3D31, buf=3Dbuf@entry=3D0xffff8c000e40,=
 nbytes=3Dnbytes@entry=3D16) at /usr/src/debug/glibc/2.38+git-r0/sysdeps/un=
ix/sysv/linux/read.c:24
#2  0x0000ffff9f3828d8 in read (__nbytes=3D16, __buf=3D0xffff8c000e40, __fd=
=3D31) at /home/Freenix/tools/fsl-imx-internal-xwayland/sysroots/armv8a-pok=
y-linux/usr/include/bits/unistd.h:28
#3  read_all (fd=3D31, data=3Ddata@entry=3D0xffff8c000e40, len=3Dlen@entry=
=3D16, nonblocking=3Dnonblocking@entry=3D0) at xs.c:422
#4  0x0000ffff9f382a08 in read_message (h=3Dh@entry=3D0xaaaaf61d1970, nonbl=
ocking=3Dnonblocking@entry=3D0) at xs.c:1303
#5  0x0000ffff9f383390 in read_thread (arg=3D0xaaaaf61d1970) at xs.c:1396
#6  0x0000ffff9e0fe978 in start_thread (arg=3D0x0) at pthread_create.c:444
#7  0x0000ffff9e16708c in thread_start () at ../sysdeps/unix/sysv/linux/aar=
ch64/clone3.S:76

Thread 7 (Thread 0xffff972698c0 (LWP 5454)):
--Type <RET> for more, q to quit, c to continue without paging--
#0  0x0000ffff9e15d8c4 in __GI___libc_read (nbytes=3D16, buf=3D0xffff880015=
40, fd=3D28) at /usr/src/debug/glibc/2.38+git-r0/sysdeps/unix/sysv/linux/re=
ad.c:26
#1  __GI___libc_read (fd=3Dfd@entry=3D28, buf=3Dbuf@entry=3D0xffff88001540,=
 nbytes=3Dnbytes@entry=3D16) at /usr/src/debug/glibc/2.38+git-r0/sysdeps/un=
ix/sysv/linux/read.c:24
#2  0x0000ffff9f3828d8 in read (__nbytes=3D16, __buf=3D0xffff88001540, __fd=
=3D28) at /home/Freenix/tools/fsl-imx-internal-xwayland/sysroots/armv8a-pok=
y-linux/usr/include/bits/unistd.h:28
#3  read_all (fd=3D28, data=3Ddata@entry=3D0xffff88001540, len=3Dlen@entry=
=3D16, nonblocking=3Dnonblocking@entry=3D0) at xs.c:422
#4  0x0000ffff9f382a08 in read_message (h=3Dh@entry=3D0xaaaaf61d1240, nonbl=
ocking=3Dnonblocking@entry=3D0) at xs.c:1303
#5  0x0000ffff9f383390 in read_thread (arg=3D0xaaaaf61d1240) at xs.c:1396
#6  0x0000ffff9e0fe978 in start_thread (arg=3D0x0) at pthread_create.c:444
#7  0x0000ffff9e16708c in thread_start () at ../sysdeps/unix/sysv/linux/aar=
ch64/clone3.S:76

Thread 6 (Thread 0xffff97bfa920 (LWP 5453)):
#0  0x0000ffff9e15d2ec in __GI___poll (fds=3D0xffff90000d50, nfds=3D4, time=
out=3D<optimized out>) at /usr/src/debug/glibc/2.38+git-r0/sysdeps/unix/sys=
v/linux/poll.c:41
#1  0x0000ffff9e92d2e0 in ?? () from /usr/lib/libglib-2.0.so.0
#2  0x0000ffff9e92ddf4 in g_main_loop_run () from /usr/lib/libglib-2.0.so.0
--Type <RET> for more, q to quit, c to continue without paging--
#3  0x0000aaaae0a2c004 in iothread_run (opaque=3Dopaque@entry=3D0xaaaaf5ea8=
410) at ../qemu-xen-dir-remote/iothread.c:70
#4  0x0000aaaae0b80af4 in qemu_thread_start (args=3D0xaaaaf5e5f2f0) at ../q=
emu-xen-dir-remote/util/qemu-thread-posix.c:541
#5  0x0000ffff9e0fe978 in start_thread (arg=3D0x4d) at pthread_create.c:444
#6  0x0000ffff9e16708c in thread_start () at ../sysdeps/unix/sysv/linux/aar=
ch64/clone3.S:76

Thread 5 (Thread 0xffff75bdc920 (LWP 5562)):
#0  0x0000ffff9e0fb1e4 in __futex_abstimed_wait_common64 (private=3D0, canc=
el=3Dtrue, abstime=3D0xffff75bdbf18, op=3D393, expected=3D0, futex_word=3D0=
xffff7800c270) at futex-internal.c:57
#1  __futex_abstimed_wait_common (cancel=3Dtrue, private=3D0, abstime=3D0xf=
fff75bdbf18, clockid=3D2013315696, expected=3D0, futex_word=3D0xffff7800c27=
0) at futex-internal.c:87
#2  __GI___futex_abstimed_wait_cancelable64 (futex_word=3Dfutex_word@entry=
=3D0xffff7800c270, expected=3Dexpected@entry=3D0, clockid=3Dclockid@entry=
=3D0, abstime=3Dabstime@entry=3D0xffff75bdbf18, private=3Dprivate@entry=3D0=
) at futex-internal.c:139
#3  0x0000ffff9e0fe038 in __pthread_cond_wait_common (abstime=3D0xffff75bdb=
f18, clockid=3D0, mutex=3D0xffff7800c1d0, cond=3D0xffff7800c248) at pthread=
_cond_wait.c:503
#4  ___pthread_cond_timedwait64 (cond=3Dcond@entry=3D0xffff7800c248, mutex=
=3Dmutex@entry=3D0xffff7800c1d0, abstime=3Dabstime@entry=3D0xffff75bdbf18) =
at pthread_cond_wait.c:643
--Type <RET> for more, q to quit, c to continue without paging--
#5  0x0000aaaae0b80938 in qemu_cond_timedwait_ts (cond=3Dcond@entry=3D0xfff=
f7800c248, mutex=3Dmutex@entry=3D0xffff7800c1d0, ts=3Dts@entry=3D0xffff75bd=
bf18, file=3Dfile@entry=3D0xaaaae0d72a30 "../qemu-xen-dir-remote/util/threa=
d-pool.c", line=3Dline@entry=3D91) at ../qemu-xen-dir-remote/util/qemu-thre=
ad-posix.c:239
#6  0x0000aaaae0b8125c in qemu_cond_timedwait_impl (cond=3D0xffff7800c248, =
mutex=3D0xffff7800c1d0, ms=3D<optimized out>, file=3D0xaaaae0d72a30 "../qem=
u-xen-dir-remote/util/thread-pool.c", line=3D91) at ../qemu-xen-dir-remote/=
util/qemu-thread-posix.c:253
#7  0x0000aaaae0b97368 in worker_thread (opaque=3Dopaque@entry=3D0xffff7800=
c1c0) at ../qemu-xen-dir-remote/util/thread-pool.c:91
#8  0x0000aaaae0b80af4 in qemu_thread_start (args=3D0xffff7800c330) at ../q=
emu-xen-dir-remote/util/qemu-thread-posix.c:541
#9  0x0000ffff9e0fe978 in start_thread (arg=3D0x0) at pthread_create.c:444
#10 0x0000ffff9e16708c in thread_start () at ../sysdeps/unix/sysv/linux/aar=
ch64/clone3.S:76

Thread 4 (Thread 0xffff95944920 (LWP 5459)):
#0  0x0000ffff9e15d7e8 in __GI_ppoll (fds=3D0xffff78000bb0, nfds=3D2, timeo=
ut=3D<optimized out>, timeout@entry=3D0x0, sigmask=3Dsigmask@entry=3D0x0) a=
t /usr/src/debug/glibc/2.38+git-r0/sysdeps/unix/sysv/linux/ppoll.c:42
#1  0x0000aaaae0b981cc in ppoll (__ss=3D0x0, __timeout=3D0x0, __nfds=3D<opt=
imized out>, __fds=3D<optimized out>) at /home/Freenix/tools/fsl-imx-intern=
al-xwayland/sysroots/armv8a-poky-linux/usr/include/bits/poll2.h:88
--Type <RET> for more, q to quit, c to continue without paging--
#2  qemu_poll_ns (fds=3D<optimized out>, nfds=3D<optimized out>, timeout=3D=
timeout@entry=3D-1) at ../qemu-xen-dir-remote/util/qemu-timer.c:339
#3  0x0000aaaae0b7e134 in fdmon_poll_wait (ctx=3D0xaaaaf6351e20, ready_list=
=3D0xffff95943f28, timeout=3D-1) at ../qemu-xen-dir-remote/util/fdmon-poll.=
c:79
#4  0x0000aaaae0b7dc50 in aio_poll (ctx=3D0xaaaaf6351e20, blocking=3Dblocki=
ng@entry=3Dtrue) at ../qemu-xen-dir-remote/util/aio-posix.c:670
#5  0x0000aaaae0a2bfe4 in iothread_run (opaque=3Dopaque@entry=3D0xaaaaf5df5=
dc0) at ../qemu-xen-dir-remote/iothread.c:63
#6  0x0000aaaae0b80af4 in qemu_thread_start (args=3D0xaaaaf634a6b0) at ../q=
emu-xen-dir-remote/util/qemu-thread-posix.c:541
#7  0x0000ffff9e0fe978 in start_thread (arg=3D0x0) at pthread_create.c:444
#8  0x0000ffff9e16708c in thread_start () at ../sysdeps/unix/sysv/linux/aar=
ch64/clone3.S:76

Thread 3 (Thread 0xffff96584920 (LWP 5458)):
#0  0x0000ffff9e0fb1e4 in __futex_abstimed_wait_common64 (private=3D0, canc=
el=3Dtrue, abstime=3D0x0, op=3D393, expected=3D0, futex_word=3D0xaaaaf63497=
18) at futex-internal.c:57
#1  __futex_abstimed_wait_common (cancel=3Dtrue, private=3D0, abstime=3D0x0=
, clockid=3D0, expected=3D0, futex_word=3D0xaaaaf6349718) at futex-internal=
.c:87
#2  __GI___futex_abstimed_wait_cancelable64 (futex_word=3Dfutex_word@entry=
=3D0xaaaaf6349718, expected=3Dexpected@entry=3D0, clockid=3Dclockid@entry=
=3D0, abstime=3Dabstime@entry=3D0x0, private=3Dprivate@entry=3D0) at futex-=
internal.c:139
--Type <RET> for more, q to quit, c to continue without paging--
#3  0x0000ffff9e0fdd58 in __pthread_cond_wait_common (abstime=3D0x0, clocki=
d=3D0, mutex=3D0xaaaaf6349728, cond=3D0xaaaaf63496f0) at pthread_cond_wait.=
c:503
#4  ___pthread_cond_wait (cond=3Dcond@entry=3D0xaaaaf63496f0, mutex=3Dmutex=
@entry=3D0xaaaaf6349728) at pthread_cond_wait.c:618
#5  0x0000aaaae0b81188 in qemu_cond_wait_impl (cond=3D0xaaaaf63496f0, mutex=
=3D0xaaaaf6349728, file=3D0xaaaae0c13b08 "../qemu-xen-dir-remote/ui/vnc-job=
s.c", line=3D248) at ../qemu-xen-dir-remote/util/qemu-thread-posix.c:225
#6  0x0000aaaae032dda0 in vnc_worker_thread_loop (queue=3Dqueue@entry=3D0xa=
aaaf63496f0) at ../qemu-xen-dir-remote/ui/vnc-jobs.c:248
#7  0x0000aaaae032e14c in vnc_worker_thread (arg=3Darg@entry=3D0xaaaaf63496=
f0) at ../qemu-xen-dir-remote/ui/vnc-jobs.c:362
#8  0x0000aaaae0b80af4 in qemu_thread_start (args=3D0xaaaaf6349790) at ../q=
emu-xen-dir-remote/util/qemu-thread-posix.c:541
#9  0x0000ffff9e0fe978 in start_thread (arg=3D0x2) at pthread_create.c:444
#10 0x0000ffff9e16708c in thread_start () at ../sysdeps/unix/sysv/linux/aar=
ch64/clone3.S:76

Thread 2 (Thread 0xffff9c8fe920 (LWP 5452)):
#0  syscall () at ../sysdeps/unix/sysv/linux/aarch64/syscall.S:38
#1  0x0000aaaae0b80a20 in qemu_futex_wait (f=3Df@entry=3D0xaaaae1cb7e00 <rc=
u_call_ready_event>, val=3Dval@entry=3D4294967295) at /home/Freenix/work/sw=
-stash/xen/upstream/tools/qemu-xen-dir-remote/include/qemu/futex.h:29
#2  0x0000aaaae0b816b4 in qemu_event_wait (ev=3Dev@entry=3D0xaaaae1cb7e00 <=
rcu_call_--Type <RET> for more, q to quit, c to continue without paging--
ready_event>) at ../qemu-xen-dir-remote/util/qemu-thread-posix.c:464
#3  0x0000aaaae0b8aa94 in call_rcu_thread (opaque=3Dopaque@entry=3D0x0) at =
../qemu-xen-dir-remote/util/rcu.c:278
#4  0x0000aaaae0b80af4 in qemu_thread_start (args=3D0xaaaaf5da9a10) at ../q=
emu-xen-dir-remote/util/qemu-thread-posix.c:541
#5  0x0000ffff9e0fe978 in start_thread (arg=3D0x2) at pthread_create.c:444
#6  0x0000ffff9e16708c in thread_start () at ../sysdeps/unix/sysv/linux/aar=
ch64/clone3.S:76

Thread 1 (Thread 0xffff9f4f5020 (LWP 5449)):
#0  __pthread_kill_implementation (threadid=3D<optimized out>, signo=3Dsign=
o@entry=3D6, no_tid=3Dno_tid@entry=3D0) at pthread_kill.c:44
#1  0x0000ffff9e100568 in __pthread_kill_internal (signo=3D6, threadid=3D<o=
ptimized out>) at pthread_kill.c:78
#2  0x0000ffff9e0bacd0 in __GI_raise (sig=3Dsig@entry=3D6) at /usr/src/debu=
g/glibc/2.38+git-r0/sysdeps/posix/raise.c:26
#3  0x0000ffff9e0a6ef0 in __GI_abort () at abort.c:79
#4  0x0000ffff9e0b43f8 in __assert_fail_base (fmt=3D0xffff9e1ca8a8 "%s%s%s:=
%u: %s%sAssertion `%s' failed.\n%n", assertion=3Dassertion@entry=3D0xaaaae0=
d25740 "!qemu_in_coroutine()", file=3Dfile@entry=3D0xaaaae0d301a8 "../qemu-=
xen-dir-remote/block/graph-lock.c", line=3Dline@entry=3D260, function=3Dfun=
ction@entry=3D0xaaaae0e522c0 <__PRETTY_FUNCTION__.3> "bdrv_graph_rdlock_mai=
n_loop") at assert.c:92
#5  0x0000ffff9e0b4470 in __assert_fail (assertion=3Dassertion@entry=3D0xaa=
aae0d2574--Type <RET> for more, q to quit, c to continue without paging--
0 "!qemu_in_coroutine()", file=3Dfile@entry=3D0xaaaae0d301a8 "../qemu-xen-d=
ir-remote/block/graph-lock.c", line=3Dline@entry=3D260, function=3Dfunction=
@entry=3D0xaaaae0e522c0 <__PRETTY_FUNCTION__.3> "bdrv_graph_rdlock_main_loo=
p") at assert.c:101
#6  0x0000aaaae0a66a60 in bdrv_graph_rdlock_main_loop () at ../qemu-xen-dir=
-remote/block/graph-lock.c:260
#7  0x0000aaaae0a6d9e0 in graph_lockable_auto_lock_mainloop (x=3D<optimized=
 out>) at /home/Freenix/work/sw-stash/xen/upstream/tools/qemu-xen-dir-remot=
e/include/block/graph-lock.h:259
#8  bdrv_unregister_buf (bs=3Dbs@entry=3D0xaaaaf619d5a0, host=3Dhost@entry=
=3D0xffff742c8000, size=3Dsize@entry=3D2097152) at ../qemu-xen-dir-remote/b=
lock/io.c:3362
#9  0x0000aaaae0a5ddd4 in blk_unregister_buf (blk=3D<optimized out>, host=
=3D0xffff742c8000, size=3D2097152) at ../qemu-xen-dir-remote/block/block-ba=
ckend.c:2859
#10 0x0000aaaae060aab4 in ram_block_removed (n=3D<optimized out>, host=3D<o=
ptimized out>, size=3D<optimized out>, max_size=3D<optimized out>) at ../qe=
mu-xen-dir-remote/block/block-ram-registrar.c:33
#11 0x0000aaaae0399318 in ram_block_notify_remove (host=3D0xffff742c8000, s=
ize=3D2097152, max_size=3D2097152) at ../qemu-xen-dir-remote/hw/core/numa.c=
:883
#12 0x0000aaaae097cf84 in xen_invalidate_map_cache_entry_unlocked (buffer=
=3Dbuffer@entry=3D0xffff743c5000 "") at ../qemu-xen-dir-remote/hw/xen/xen-m=
apcache.c:475
#13 0x0000aaaae097dad0 in xen_invalidate_map_cache_entry (buffer=3Dbuffer@e=
ntry=3D0xffff743c5000 "") at ../qemu-xen-dir-remote/hw/xen/xen-mapcache.c:4=
87
#14 0x0000aaaae0993e18 in address_space_unmap (as=3Das@entry=3D0xaaaae1ca3a=
e8 <address_space_memory>, buffer=3D0xffff743c5000, len=3D<optimized out>, =
is_write=3Dis_write@--Type <RET> for more, q to quit, c to continue without=
 paging--
entry=3Dtrue, access_len=3Daccess_len@entry=3D32768) at ../qemu-xen-dir-rem=
ote/system/physmem.c:3199
#15 0x0000aaaae095cc9c in dma_memory_unmap (access_len=3D32768, dir=3DDMA_D=
IRECTION_FROM_DEVICE, len=3D<optimized out>, buffer=3D<optimized out>, as=
=3D0xaaaae1ca3ae8 <address_space_memory>) at /home/Freenix/work/sw-stash/xe=
n/upstream/tools/qemu-xen-dir-remote/include/sysemu/dma.h:236

#16 virtqueue_unmap_sg (vq=3Dvq@entry=3D0xffff965cc010, elem=3Delem@entry=
=3D0xaaaaf620aa30, len=3Dlen@entry=3D32769) at ../qemu-xen-dir-remote/hw/vi=
rtio/virtio.c:758

#17 0x0000aaaae095efa4 in virtqueue_fill (vq=3Dvq@entry=3D0xffff965cc010, e=
lem=3Delem@entry=3D0xaaaaf620aa30, len=3Dlen@entry=3D32769, idx=3Didx@entry=
=3D0) at ../qemu-xen-dir-remote/hw/virtio/virtio.c:919
#18 0x0000aaaae095f0b8 in virtqueue_push (vq=3D0xffff965cc010, elem=3Delem@=
entry=3D0xaaaaf620aa30, len=3D32769) at ../qemu-xen-dir-remote/hw/virtio/vi=
rtio.c:994

#19 0x0000aaaae091a608 in virtio_blk_req_complete (req=3Dreq@entry=3D0xaaaa=
f620aa30, status=3Dstatus@entry=3D0 '\000') at ../qemu-xen-dir-remote/hw/bl=
ock/virtio-blk.c:67

#20 0x0000aaaae091bdc8 in virtio_blk_rw_complete (opaque=3D<optimized out>,=
 ret=3D0) at ../qemu-xen-dir-remote/hw/block/virtio-blk.c:136
#21 0x0000aaaae0a5a938 in blk_aio_complete (acb=3Dacb@entry=3D0xffff880015f=
0) at ../qemu-xen-dir-remote/block/block-backend.c:1559

#22 0x0000aaaae0a5b58c in blk_aio_read_entry (opaque=3D0xffff880015f0) at .=
./qemu-xen-dir-remote/block/block-backend.c:1614
#23 0x0000aaaae0b96c2c in coroutine_trampoline (i0=3D<optimized out>, i1=3D=
<optimize--Type <RET> for more, q to quit, c to continue without paging--

d out>) at ../qemu-xen-dir-remote/util/coroutine-ucontext.c:177
#24 0x0000ffff9e0bfb40 in ?? () at ../sysdeps/unix/sysv/linux/aarch64/setco=
ntext.S:123 from /usr/lib/libc.so.6
Backtrace stopped: not enough registers or memory available to unwind furth=
er


Thanks,
Peng.


From xen-devel-bounces@lists.xenproject.org Mon Jan 08 03:43:33 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 08 Jan 2024 03:43:33 +0000
Received: from list by lists.xenproject.org with outflank-mailman.663166.1032977 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMgXn-0004dp-6e; Mon, 08 Jan 2024 03:43:19 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 663166.1032977; Mon, 08 Jan 2024 03:43:19 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMgXn-0004di-3T; Mon, 08 Jan 2024 03:43:19 +0000
Received: by outflank-mailman (input) for mailman id 663166;
 Mon, 08 Jan 2024 03:43:17 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=xshC=IS=amd.com=Jiqian.Chen@srs-se1.protection.inumbo.net>)
 id 1rMgXl-0004dc-3c
 for xen-devel@lists.xenproject.org; Mon, 08 Jan 2024 03:43:17 +0000
Received: from NAM10-MW2-obe.outbound.protection.outlook.com
 (mail-mw2nam10on20601.outbound.protection.outlook.com
 [2a01:111:f403:2412::601])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 0c02c803-add8-11ee-9b0f-b553b5be7939;
 Mon, 08 Jan 2024 04:43:12 +0100 (CET)
Received: from BL1PR12MB5849.namprd12.prod.outlook.com (2603:10b6:208:384::18)
 by CY8PR12MB7492.namprd12.prod.outlook.com (2603:10b6:930:93::9) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7159.21; Mon, 8 Jan
 2024 03:43:07 +0000
Received: from BL1PR12MB5849.namprd12.prod.outlook.com
 ([fe80::969f:11b3:5ec2:3aa1]) by BL1PR12MB5849.namprd12.prod.outlook.com
 ([fe80::969f:11b3:5ec2:3aa1%3]) with mapi id 15.20.7159.020; Mon, 8 Jan 2024
 03:43:07 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 0c02c803-add8-11ee-9b0f-b553b5be7939
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=HVDfuppuhexacu5DBKn1lNIqKydcdZ74Ic5rItk5GrBqJCoCrhqbwxGqKDDyctU+Qm9xHPfr8yc4Qe9hjuZjBE22y1VLpdeJXpZwKz0DTk5vDrz6vUIJ/s8It2KAvzG/V37OI1KTxZTPqHL26b7dQmiJuZKpc+IfwsXj6p/8jQMiw2GWsZ2GJixRyqsl3dQgoEWta9ymfHoXco0DITB2fkasn0g/RnfbN21xMLNAXjWli6V/x34bg0wDINeWK9eeeDoKGQJuAev8hLCXZPsXuGgSjIqiUhjH+/ZwMPKf03RHBEdogjz8btQp3UexhGdyOFGi3zaQwu+xhWVnPJk34A==
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=xqksTUSzR55SLCvYStR1yuGqyX5ZIHREY25bX253Koc=;
 b=QZYLyg57bKkE298VTGG6mSGxuUNU+5QfJYwn75WeLuaA+ZjiJYtjZRB5G0AQOmdL9kWYsiIVFIXijz8q82hTHH9677/a+fYaipU8PwrUHOK7DwZXsVb9Z4MgwFOeZlW0YcSFMqEODuyf/xQRqRATfofKsrffEvb5r0o9cfeOPE6yuYAHOATI7S/HJLMmbvjOAlr/b62dJ/HrtozQxghEahvkavX5Z53Y0mPUz5ZbduEDOSk4iYf04guoBZoLz8jWPtiZgjodYaUVoLHjiC4YFIYK2LQlE7wn32fKxmxxr/0NryQ8s6WCY2QRi3N4GbjP3q0oceBI405LKE4M0CRJYg==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=amd.com; dmarc=pass action=none header.from=amd.com; dkim=pass
 header.d=amd.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=xqksTUSzR55SLCvYStR1yuGqyX5ZIHREY25bX253Koc=;
 b=O1uztZY5G9M+Ld1QyUW7QgtVMdBqcnIttG7OfUNxeook7a1xDLd40SPiaT8KLR+G0JxhZ1+JjmsAsCLZkgLR1jdYJmfNQK7cH/d05jRi8wMI/D9UTtbZ7tkXHQbx/yoq//FOWkLZzSW37hiTm7ISBdxWoIfjvw2q1H7+5fKMsUw=
From: "Chen, Jiqian" <Jiqian.Chen@amd.com>
To: Stefano Stabellini <sstabellini@kernel.org>
CC: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>, Jan
 Beulich <jbeulich@suse.com>, Andrew Cooper <andrew.cooper3@citrix.com>,
	=?utf-8?B?Um9nZXIgUGF1IE1vbm7DqQ==?= <roger.pau@citrix.com>, Wei Liu
	<wl@xen.org>, George Dunlap <george.dunlap@citrix.com>, Julien Grall
	<julien@xen.org>, Anthony PERARD <anthony.perard@citrix.com>, Juergen Gross
	<jgross@suse.com>, "Hildebrand, Stewart" <Stewart.Hildebrand@amd.com>,
	"Huang, Ray" <Ray.Huang@amd.com>, "Chen, Jiqian" <Jiqian.Chen@amd.com>
Subject: Re: [RFC XEN PATCH v4 4/5] domctl: Use gsi to grant/revoke irq
 permission
Thread-Topic: [RFC XEN PATCH v4 4/5] domctl: Use gsi to grant/revoke irq
 permission
Thread-Index: AQHaP6Y1pt0ckfKChE+VsjXCWSj8+LDL+oWAgAPTiYA=
Date: Mon, 8 Jan 2024 03:43:07 +0000
Message-ID:
 <BL1PR12MB58490A4BEDC08F227BFE2723E76B2@BL1PR12MB5849.namprd12.prod.outlook.com>
References: <20240105070920.350113-1-Jiqian.Chen@amd.com>
 <20240105070920.350113-5-Jiqian.Chen@amd.com>
 <alpine.DEB.2.22.394.2401051702200.3675@ubuntu-linux-20-04-desktop>
In-Reply-To:
 <alpine.DEB.2.22.394.2401051702200.3675@ubuntu-linux-20-04-desktop>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-ms-exchange-imapappendstamp: IA0PR12MB8932.namprd12.prod.outlook.com
 (15.20.7181.000)
authentication-results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=amd.com;
x-ms-exchange-messagesentrepresentingtype: 1
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: BL1PR12MB5849:EE_|CY8PR12MB7492:EE_
x-ms-office365-filtering-correlation-id: a3dd2184-0dc5-4982-21ca-08dc0ffbed78
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam: BCL:0;
x-microsoft-antispam-message-info:
 vl38y3msQ/cWA7/igg3T/XuXsQcrqLUXztRIDNY2Up7eFzzHXFl6xAy9gNBHOCBJUx5Zsr8hKecPNJzWHkGt5toF8T7F05gSxIIEojIGH7882jxYlSZjHpvaffkT63fWB92WinzZNKdAEijGa9M1+e5UynTRfVApQu67pPMX255KntedCPrYDbiBDw1fuGMUf8zcqQm71V3ePbI9/svByPPpniCVesOl92yZPQYsyO8nQiCqEgLLNuQVTHvQ/4GiAe1+QwWCyni8mWsjCaoid6LyV5V9o2FE6pgEx4IstoZChKU/EKEEX2yr0jR8SFp0koRI5wOK2nAwvL6S2Yvx5iN4YaHtdSz/8L5icQXEBpllEAOU6JUYByzIkV14fWOdduS6U89tTYIRJcp2FUouj/3dz3CiRGIkY829AThpJYBPBzgaX80UtVXh0fL0iCFntMnUkDVdhodHCUQzRYPb/YnWlGiycbL/b18x50FOKQJI4PxndQXQP+xwjrYlVaOXRI7SuBtrgRjk3V1cW9QpJfCyYEgi3w4hwSmEqrewI8Jf03PM1wsQIyrevJX31Ruq8/UPAZ3PBnrB7aL/BJ0RyO+fbDr0/UAi2aRppi85pvNtjhSUoo7J7WAeq39ivR1j
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BL1PR12MB5849.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230031)(39860400002)(376002)(346002)(136003)(396003)(366004)(230922051799003)(64100799003)(186009)(451199024)(1800799012)(41300700001)(8676002)(8936002)(55016003)(38070700009)(5660300002)(7416002)(2906002)(26005)(6916009)(64756008)(66446008)(66556008)(52536014)(66476007)(54906003)(316002)(66946007)(76116006)(71200400001)(478600001)(9686003)(83380400001)(33656002)(53546011)(6506007)(7696005)(38100700002)(122000001)(4326008);DIR:OUT;SFP:1101;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?utf-8?B?MjBQNnIreFhSS2dkdCtDVXlLUDdLaTgwbDRoU095b3d2RWdMdU1IRHBoc0ZR?=
 =?utf-8?B?QkVjR1BTbzlQbEdPM3NHYXlyVjYwT1lBdWIvSmIwdFZrRW5yQ1FETU12VUE4?=
 =?utf-8?B?em53dHAwcXFBSSsyVkcwZ3htcmtuKzNJTEZITG1tOWlscGszdmltMXpLQjc0?=
 =?utf-8?B?UkpDa1ZycTlybFdxd3BYM1NUMU9scW5VM0ttVTl4NWpVTkhhRnl5Tk1yL000?=
 =?utf-8?B?bmV1K0I2aHFaWmlqZXJTK20zdUJmWFcyK3FDVWVRZUozVUxlMXk2Z2wza1l5?=
 =?utf-8?B?YXROUEtKZzB3eTU3aXc2QzhlUkgrUmM4RWR1a08yMXBSWVgvWk5nWUdHL0Zq?=
 =?utf-8?B?SGlzeUlUeEZtcUo1dXlwNC84dnF4am14aW92ZitpYU5GTWlmWVVnTmN0ODFN?=
 =?utf-8?B?T0Q2a0NTMHhjc1RZcisrMHRxWFhLVFlyYmFIanlBZ01ZY3lnOGNPSVUzZnFz?=
 =?utf-8?B?VWkrdHhNcnZ1cVVVc0xaSXFhanhnQTdPUk5LZjVJbjdqNE5iZjd2cDFDanBL?=
 =?utf-8?B?MXRpK3VpYWpTdmJCb3I0RzUzS2VyT1FLZTBJdkVVVHZpZzZQODUzS3h5ZStr?=
 =?utf-8?B?SytTMzRHTG53a0F4cVF2RmdRMHFCOWF5WXMzU1A4RnFqbGtwRWNXQ1Qrd2c5?=
 =?utf-8?B?dFhyN1dHeW11dmphWExEeXF6OVlzOUdUMmhYTzdRNWlhRnd6UGlDeVptM2Rj?=
 =?utf-8?B?dXFpUnY4QTh6bDFZZnlwMExGVjlucHhwV2hlUnhZc3RnK2dWb08xcjZmS1FS?=
 =?utf-8?B?RVhpdmlXOFN1MHZRVHBWejM2TzlILzRBeTJqQ09mTXNuTXI3VVhLRTRKOGkv?=
 =?utf-8?B?dlFKUXpsUFVWUkFHbk9VOTl4ZXh1UVozS0lLY0NSNWI1K29WcHdpWG1QOUxM?=
 =?utf-8?B?Z205VHd0VVVpQi9ranBwSVQwYXhETEtJQXpZbTZMMnhTaDdjSituU2w2aUhk?=
 =?utf-8?B?aW12dkdVVW5ZblBXQkxQMktOTkM1ZjZudk82eVF4YVdaSmlacVNzY1pJeWp1?=
 =?utf-8?B?RFF4RnBhOG1ZTUp4Yk9UZFBOS1lBdDJDSTlXYU1TRjJEdnFYTlpkVzZiY2FX?=
 =?utf-8?B?NGZJM0FrYWdlQmJaYmovN3JWNnpSY3dsSzR3Sm5wWklVSkNDcHgzeWpDZXU1?=
 =?utf-8?B?QXllVlpkUnJFV3JLTFJXWE1MVUpXeGI0QkIvWkZhWk1sdEdlaFEvaExLbU12?=
 =?utf-8?B?ZGd4V1RYcjhLbmJNc3IvUUhSN0JBR0w4ZXkrVUdIYVNIaFlqTmpoaVo5WXA1?=
 =?utf-8?B?ZU81WlRwWGw2RGJnQi9QMHdrRVMyYnNNUTdZZG1ESGIxSFphc1FaemRwSWU1?=
 =?utf-8?B?a09ITVREZkQ0MWV4N0RMSll0enY1N3E1cmhYcHVXR1g2VytwbDVrMDFxTy8v?=
 =?utf-8?B?d0o2UGJLa2I4RVd0czNYUTYreHc1MGRPa2hiS3IyeE1RZ0doYnJ6ejNvR2RZ?=
 =?utf-8?B?ZWdOS2dWV1RKRFN4UmtRRVFJL1R1c2l2TXRKcngwOWIzaGIvUWNtNnJocDRK?=
 =?utf-8?B?cThqR0ZmSm9lR3FDaUZJUjFQTHVWdEdLWWovVTZxenBXT2RXWk9ldTZpV1Nl?=
 =?utf-8?B?YUxLVytSdWtSc2pRaGRtOHZBYzZ5bHNya1RlR2h5THN5bk5LMkRrYWZOUXIx?=
 =?utf-8?B?Y3djZWg3WXE1a0lQQ0crRnd6b0JkR1dQNG1yTU4yeCtkZDZueXBTdkhwYXRI?=
 =?utf-8?B?aFkxc29Scm12a1Y5WExlaGNsWWRsd1dMYmtXelJ6NmJDeUNJamhuUWE0Tnp1?=
 =?utf-8?B?M1NpUTFEdnoyT2pYK3ptTFVTclFCdEJ5R0ZpNHdvdWRldDA0eExLU25ubTJ4?=
 =?utf-8?B?OUxTYmxzQU0zZTV5MTRZN1l0K3IyeGN0eHpqOWluMDRBYlk1bzF1Wk9vclM0?=
 =?utf-8?B?THFaUGlmMTc5UUFHS01hVzBZSUFpN0hOaE1odzlKUEVRUTJHcDFSczdxdCtj?=
 =?utf-8?B?WlpwTmhCWXkyaGNuWlpxMmVVRUwyK2pZM2Z5QmhwY0xlemNIZDl1Nlp4U3FI?=
 =?utf-8?B?bU5mN1QwUlVMc1k3RVZjTGNJZVNoZWs0R3lwRlFQVVBkYTJ6aHdkREY0T0xt?=
 =?utf-8?B?NytVeXYxanlJRHJVSHBFM2VVdFZqNnUwNGx4Rzd1L1pIZGtHZEtYM3ErcHN2?=
 =?utf-8?Q?B9dw=3D?=
Content-Type: text/plain; charset="utf-8"
Content-ID: <C5717CD73822604DA59134712473A9B3@amdcloud.onmicrosoft.com>
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: BL1PR12MB5849.namprd12.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: a3dd2184-0dc5-4982-21ca-08dc0ffbed78
X-MS-Exchange-CrossTenant-originalarrivaltime: 08 Jan 2024 03:43:07.4885
 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 3dd8961f-e488-4e60-8e11-a82d994e183d
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: dULiU18F2plgo5QBZoWgZ5vqliS5t3eKSFWUBmkCZ0lFVMzqexTjRhj4EMYlRXxU1CE24PMG0Ycbx3DYvQYHBQ==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY8PR12MB7492

T24gMjAyNC8xLzYgMDk6MDgsIFN0ZWZhbm8gU3RhYmVsbGluaSB3cm90ZToNCj4gT24gRnJpLCA1
IEphbiAyMDI0LCBKaXFpYW4gQ2hlbiB3cm90ZToNCj4+IFNvbWUgdHlwZSBvZiBkb21haW4gZG9u
J3QgaGF2ZSBQSVJRLCBsaWtlIFBWSCwgY3VycmVudA0KPj4gaW1wbGVtZW50YXRpb24gaXMgbm90
IHN1aXRhYmxlIGZvciB0aG9zZSBkb21haW4uDQo+Pg0KPj4gV2hlbiBwYXNzdGhyb3VnaCBhIGRl
dmljZSB0byBndWVzdCBvbiBQVkggZG9tMCwgdGhpcw0KPj4gcGNpX2FkZF9kbV9kb25lLT5YRU5f
RE9NQ1RMX2lycV9wZXJtaXNzaW9uIHdpbGwgZmFpbGVkDQo+PiBhdCBkb21haW5fcGlycV90b19p
cnEuDQo+Pg0KPj4gU28sIGNoYW5nZSBpdCB0byB1c2UgZ3NpIHRvIGdyYW50L3Jldm9rZSBpcnEg
cGVybWlzc2lvbi4NCj4+IEFuZCBjaGFuZ2UgdGhlIGNhbGxlciBvZiBYRU5fRE9NQ1RMX2lycV9w
ZXJtaXNzaW9uIHRvDQo+PiBwYXNzIGdzaSB0byBpdCBpbnN0ZWFkIG9mIHBpcnEuDQo+Pg0KPj4g
Q28tZGV2ZWxvcGVkLWJ5OiBIdWFuZyBSdWkgPHJheS5odWFuZ0BhbWQuY29tPg0KPj4gU2lnbmVk
LW9mZi1ieTogSmlxaWFuIENoZW4gPEppcWlhbi5DaGVuQGFtZC5jb20+DQo+IA0KPiBJIHJlYWxp
emUgdGhlcmUgaXMgbm8gZXhwbGFuYXRpb24gb3IgY29tbWVudCByaWdodCBub3csIGJ1dCBJIHRo
aW5rIHRoaXMNCj4gY2hhbmdlIHdvdWxkIGJlbmVmaXQgZnJvbSBhIGluLWNvZGUgY29tbWVudCBp
biB4ZW4vaW5jbHVkZS9wdWJsaWMvZG9tY3RsLmgNCj4gRS5nLjoNCj4gDQo+IC8qIFhFTl9ET01D
VExfaXJxX3Blcm1pc3Npb24gKi8NCj4gc3RydWN0IHhlbl9kb21jdGxfaXJxX3Blcm1pc3Npb24g
ew0KPiAgICAgdWludDMyX3QgcGlycTsgICAgICAgICAgIC8qIHBpcnEgaXMgdGhlIEdTSSBvbiB4
ODYgKi8NCj4gICAgIHVpbnQ4X3QgYWxsb3dfYWNjZXNzOyAgICAvKiBmbGFnIHRvIHNwZWNpZnkg
ZW5hYmxlL2Rpc2FibGUgb2YgSVJRIGFjY2VzcyAqLw0KPiAgICAgdWludDhfdCBwYWRbM107DQo+
IH07DQpXaWxsIGFkZCB0aGlzIGNvbW1lbnQgaW4gbmV4dCB2ZXJzaW9uLCB0aGFua3MuDQoNCj4g
DQo+IA0KPj4gLS0tDQo+PiAgdG9vbHMvbGlicy9saWdodC9saWJ4bF9wY2kuYyB8ICA2ICsrKyst
LQ0KPj4gIHRvb2xzL2xpYnMvbGlnaHQvbGlieGxfeDg2LmMgfCAgNSArKysrLQ0KPj4gIHhlbi9j
b21tb24vZG9tY3RsLmMgICAgICAgICAgfCAxMiArKysrKysrKysrLS0NCj4+ICAzIGZpbGVzIGNo
YW5nZWQsIDE4IGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pDQo+Pg0KPj4gZGlmZiAtLWdp
dCBhL3Rvb2xzL2xpYnMvbGlnaHQvbGlieGxfcGNpLmMgYi90b29scy9saWJzL2xpZ2h0L2xpYnhs
X3BjaS5jDQo+PiBpbmRleCA5NmNiNGRhMDc5NGUuLmUxMzQxZDFlOTg1MCAxMDA2NDQNCj4+IC0t
LSBhL3Rvb2xzL2xpYnMvbGlnaHQvbGlieGxfcGNpLmMNCj4+ICsrKyBiL3Rvb2xzL2xpYnMvbGln
aHQvbGlieGxfcGNpLmMNCj4+IEBAIC0xNDE4LDYgKzE0MTgsNyBAQCBzdGF0aWMgdm9pZCBwY2lf
YWRkX2RtX2RvbmUobGlieGxfX2VnYyAqZWdjLA0KPj4gICAgICB1bnNpZ25lZCBsb25nIGxvbmcg
c3RhcnQsIGVuZCwgZmxhZ3MsIHNpemU7DQo+PiAgICAgIGludCBpcnEsIGk7DQo+PiAgICAgIGlu
dCByOw0KPj4gKyAgICBpbnQgZ3NpOw0KPj4gICAgICB1aW50MzJfdCBmbGFnID0gWEVOX0RPTUNU
TF9ERVZfUkRNX1JFTEFYRUQ7DQo+PiAgICAgIHVpbnQzMl90IGRvbWFpbmlkID0gZG9taWQ7DQo+
PiAgICAgIGJvb2wgaXNzdHViZG9tID0gbGlieGxfaXNfc3R1YmRvbShjdHgsIGRvbWlkLCAmZG9t
YWluaWQpOw0KPj4gQEAgLTE0ODYsNiArMTQ4Nyw3IEBAIHN0YXRpYyB2b2lkIHBjaV9hZGRfZG1f
ZG9uZShsaWJ4bF9fZWdjICplZ2MsDQo+PiAgICAgICAgICBnb3RvIG91dF9ub19pcnE7DQo+PiAg
ICAgIH0NCj4+ICAgICAgaWYgKChmc2NhbmYoZiwgIiV1IiwgJmlycSkgPT0gMSkgJiYgaXJxKSB7
DQo+PiArICAgICAgICBnc2kgPSBpcnE7DQo+IA0KPiBBIHF1ZXN0aW9uIGZvciBSb2dlciBhbmQg
SmFuOiBhcmUgd2UgYWx3YXlzIGd1YXJhbnRlZWQgdGhhdCBnc2kgPT0gaXJxDQo+IChhbHNvIGlu
IHRoZSBQViBjYXNlKT8NCj4gDQo+IEFsc28gSSBkb24ndCB0aGluayB3ZSBuZWNlc3NhcmlseSBu
ZWVkIHRoZSBnc2kgbG9jYWwgdmFyaWFibGUsIEkgd291bGQNCj4ganVzdCBhZGQgYW4gaW4tY29k
ZSBjb21tZW50IGJlbG93Li4uDQpIZXJlIHBhc3MgdGhlIHBvaW50ZXIgb2YgaXJxIHRvIHhjX3Bo
eXNkZXZfbWFwX3BpcnEsIGFuZCB0aGF0IGZ1bmN0aW9uIHdpbGwgYXNzaWduIHRoZSB2YWx1ZSBv
ZiBwaXJxIHRvIGlycSBvbiBYZW4gc2lkZSwgc28gYWZ0ZXIgY2FsbGluZyB4Y19waHlzZGV2X21h
cF9waXJxLCB0aGUgdmFsdWUgb2YgaXJxIGlzbid0IHRoZSBvcmlnaW5hbCB2YWx1ZSwgd2UgbmVl
ZCBhIGxvY2FsIHZhcmlhYmxlIHRvIHJlY29yZCB0aGUgb3JpZ2luYWwgdmFsdWUuDQoNCj4gDQo+
IA0KPj4gICAgICAgICAgciA9IHhjX3BoeXNkZXZfbWFwX3BpcnEoY3R4LT54Y2gsIGRvbWlkLCBp
cnEsICZpcnEpOw0KPj4gICAgICAgICAgaWYgKHIgPCAwKSB7DQo+PiAgICAgICAgICAgICAgTE9H
RUQoRVJST1IsIGRvbWFpbmlkLCAieGNfcGh5c2Rldl9tYXBfcGlycSBpcnE9JWQgKGVycm9yPSVk
KSIsDQo+PiBAQCAtMTQ5NCwxMCArMTQ5NiwxMCBAQCBzdGF0aWMgdm9pZCBwY2lfYWRkX2RtX2Rv
bmUobGlieGxfX2VnYyAqZWdjLA0KPj4gICAgICAgICAgICAgIHJjID0gRVJST1JfRkFJTDsNCj4+
ICAgICAgICAgICAgICBnb3RvIG91dDsNCj4+ICAgICAgICAgIH0NCj4gDQo+IC4uLiBsaWtlIHRo
aXM6DQo+IA0KPiAvKiB4Y19kb21haW5faXJxX3Blcm1pc3Npb24gdGFrZXMgYSBnc2ksIGhlcmUg
d2UgYXNzdW1lIGlycSA9PSBnc2kgKi8NCj4gciA9IHhjX2RvbWFpbl9pcnFfcGVybWlzc2lvbihj
dHgtPnhjaCwgZG9taWQsIGlycSwgMSk7DQpXaWxsIGFkZCB0aGlzIGNvbW1lbnQgaW4gbmV4dCB2
ZXJzaW9uLCB0aGFua3MuDQoNCj4gDQo+IA0KPj4gLSAgICAgICAgciA9IHhjX2RvbWFpbl9pcnFf
cGVybWlzc2lvbihjdHgtPnhjaCwgZG9taWQsIGlycSwgMSk7DQo+PiArICAgICAgICByID0geGNf
ZG9tYWluX2lycV9wZXJtaXNzaW9uKGN0eC0+eGNoLCBkb21pZCwgZ3NpLCAxKTsNCj4+ICAgICAg
ICAgIGlmIChyIDwgMCkgew0KPj4gICAgICAgICAgICAgIExPR0VEKEVSUk9SLCBkb21haW5pZCwN
Cj4+IC0gICAgICAgICAgICAgICAgICAieGNfZG9tYWluX2lycV9wZXJtaXNzaW9uIGlycT0lZCAo
ZXJyb3I9JWQpIiwgaXJxLCByKTsNCj4+ICsgICAgICAgICAgICAgICAgICAieGNfZG9tYWluX2ly
cV9wZXJtaXNzaW9uIGlycT0lZCAoZXJyb3I9JWQpIiwgZ3NpLCByKTsNCj4+ICAgICAgICAgICAg
ICBmY2xvc2UoZik7DQo+PiAgICAgICAgICAgICAgcmMgPSBFUlJPUl9GQUlMOw0KPj4gICAgICAg
ICAgICAgIGdvdG8gb3V0Ow0KPj4gZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnMvbGlnaHQvbGlieGxf
eDg2LmMgYi90b29scy9saWJzL2xpZ2h0L2xpYnhsX3g4Ni5jDQo+PiBpbmRleCBkMTY1NzNlNzJj
ZDQuLjg4YWQ1MGNmNjM2MCAxMDA2NDQNCj4+IC0tLSBhL3Rvb2xzL2xpYnMvbGlnaHQvbGlieGxf
eDg2LmMNCj4+ICsrKyBiL3Rvb2xzL2xpYnMvbGlnaHQvbGlieGxfeDg2LmMNCj4+IEBAIC02NTQs
MTIgKzY1NCwxNSBAQCBvdXQ6DQo+PiAgaW50IGxpYnhsX19hcmNoX2RvbWFpbl9tYXBfaXJxKGxp
YnhsX19nYyAqZ2MsIHVpbnQzMl90IGRvbWlkLCBpbnQgaXJxKQ0KPiANCj4geW91IGNvdWxkIGp1
c3QgcmVuYW1lIHRoZSBpbnQgaXJxIHBhcmFtZXRlciB0byBpbnQgZ3NpID8NCk5vLCB0aGUgc2Ft
ZSByZWFzb24gYXMgYWJvdmUuDQoNCj4gDQo+IA0KPj4gIHsNCj4+ICAgICAgaW50IHJldDsNCj4+
ICsgICAgaW50IGdzaTsNCj4+ICsNCj4+ICsgICAgZ3NpID0gaXJxOw0KPj4gIA0KPj4gICAgICBy
ZXQgPSB4Y19waHlzZGV2X21hcF9waXJxKENUWC0+eGNoLCBkb21pZCwgaXJxLCAmaXJxKTsNCj4+
ICAgICAgaWYgKHJldCkNCj4+ICAgICAgICAgIHJldHVybiByZXQ7DQo+PiAgDQo+PiAtICAgIHJl
dCA9IHhjX2RvbWFpbl9pcnFfcGVybWlzc2lvbihDVFgtPnhjaCwgZG9taWQsIGlycSwgMSk7DQo+
PiArICAgIHJldCA9IHhjX2RvbWFpbl9pcnFfcGVybWlzc2lvbihDVFgtPnhjaCwgZG9taWQsIGdz
aSwgMSk7DQo+PiAgICAgIHJldHVybiByZXQ7DQo+PiAgfQ0KPj4gZGlmZiAtLWdpdCBhL3hlbi9j
b21tb24vZG9tY3RsLmMgYi94ZW4vY29tbW9uL2RvbWN0bC5jDQo+PiBpbmRleCBmNWE3MWVlNWY3
OGQuLmVlYjk3NWJkMDE5NCAxMDA2NDQNCj4+IC0tLSBhL3hlbi9jb21tb24vZG9tY3RsLmMNCj4+
ICsrKyBiL3hlbi9jb21tb24vZG9tY3RsLmMNCj4+IEBAIC02NTMsMTIgKzY1MywyMCBAQCBsb25n
IGRvX2RvbWN0bChYRU5fR1VFU1RfSEFORExFX1BBUkFNKHhlbl9kb21jdGxfdCkgdV9kb21jdGwp
DQo+PiAgICAgICAgICB1bnNpZ25lZCBpbnQgcGlycSA9IG9wLT51LmlycV9wZXJtaXNzaW9uLnBp
cnEsIGlycTsNCj4+ICAgICAgICAgIGludCBhbGxvdyA9IG9wLT51LmlycV9wZXJtaXNzaW9uLmFs
bG93X2FjY2VzczsNCj4gDQo+IGhlcmUgd2UgY291bGQgYmVuZWZpdCBmcm9tIHJlbmFtaW5nIHBp
cnEgdG8gZ3NpLCBhdCBsZWFzdCBpdCBiZWNvbWVzDQo+IGNsZWFyOg0KPiANCj4gdW5zaWduZWQg
aW50IGdzaSA9IG9wLT51LmlycV9wZXJtaXNzaW9uLnBpcnEsIGlycTsNClRoYW5rIHlvdSwgSSB3
aWxsIHJlbmFtZSBpdCBpbiBuZXh0IHZlcnNpb24uDQoNCj4gDQo+IA0KPj4gLSAgICAgICAgaWYg
KCBwaXJxID49IGN1cnJlbnQtPmRvbWFpbi0+bnJfcGlycXMgKQ0KPj4gKyAgICAgICAgaWYgKCBw
aXJxID49IG5yX2lycXNfZ3NpICkNCj4+ICAgICAgICAgIHsNCj4+ICAgICAgICAgICAgICByZXQg
PSAtRUlOVkFMOw0KPj4gICAgICAgICAgICAgIGJyZWFrOw0KPj4gICAgICAgICAgfQ0KPj4gLSAg
ICAgICAgaXJxID0gcGlycV9hY2Nlc3NfcGVybWl0dGVkKGN1cnJlbnQtPmRvbWFpbiwgcGlycSk7
DQo+PiArDQo+PiArICAgICAgICBpZiAoIGlycV9hY2Nlc3NfcGVybWl0dGVkKGN1cnJlbnQtPmRv
bWFpbiwgcGlycSkgKQ0KPj4gKyAgICAgICAgICAgIGlycSA9IHBpcnE7DQo+PiArICAgICAgICBl
bHNlDQo+PiArICAgICAgICB7DQo+PiArICAgICAgICAgICAgcmV0ID0gLUVQRVJNOw0KPj4gKyAg
ICAgICAgICAgIGJyZWFrOw0KPj4gKyAgICAgICAgfQ0KPj4gKw0KPj4gICAgICAgICAgaWYgKCAh
aXJxIHx8IHhzbV9pcnFfcGVybWlzc2lvbihYU01fSE9PSywgZCwgaXJxLCBhbGxvdykgKQ0KPj4g
ICAgICAgICAgICAgIHJldCA9IC1FUEVSTTsNCj4+ICAgICAgICAgIGVsc2UgaWYgKCBhbGxvdyAp
DQo+PiAtLSANCj4+IDIuMzQuMQ0KPj4NCg0KLS0gDQpCZXN0IHJlZ2FyZHMsDQpKaXFpYW4gQ2hl
bi4NCg==


From xen-devel-bounces@lists.xenproject.org Mon Jan 08 03:47:11 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 08 Jan 2024 03:47:11 +0000
Received: from list by lists.xenproject.org with outflank-mailman.663170.1032987 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMgbV-0005vR-NH; Mon, 08 Jan 2024 03:47:09 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 663170.1032987; Mon, 08 Jan 2024 03:47:09 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMgbV-0005vF-JB; Mon, 08 Jan 2024 03:47:09 +0000
Received: by outflank-mailman (input) for mailman id 663170;
 Mon, 08 Jan 2024 03:47:08 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rMgbU-0005v3-6a; Mon, 08 Jan 2024 03:47:08 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rMgbU-000674-1E; Mon, 08 Jan 2024 03:47:08 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rMgbT-0005yA-Gc; Mon, 08 Jan 2024 03:47:07 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rMgbT-0005s6-GB; Mon, 08 Jan 2024 03:47:07 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=+LHPuRVb3CjdVw2oVKUqvdTLJAgEMDvxPb0zxhlRqdw=; b=yiba5ZjLXiCquw8QgOCmyhHgdL
	ZC7QdlVf3J2iLc7FzVLvfNmYLy9mtP6CVaUGS/irx39fVF6+FuKoBRnkzR4x/tRRvCCkZG2zXUPdA
	xsKHOod5vHW5DgEOLNsJhMk3ZN0Xv8HSp/eUUgyx6DfygWeUzNuUEwKfx0n7KsoqcO/w=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184270-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [linux-linus test] 184270: tolerable FAIL - PUSHED
X-Osstest-Failures:
    linux-linus:test-armhf-armhf-libvirt-raw:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    linux-linus:test-amd64-amd64-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    linux-linus:test-amd64-amd64-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-qcow2:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-qemuu-nested-amd:debian-hvm-install/l1/l2:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-xsm:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-credit1:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-thunderx:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-credit1:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-thunderx:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-xsm:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-xsm:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-credit2:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-credit2:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-libvirt-xsm:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-libvirt-xsm:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-multivcpu:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-multivcpu:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-qcow2:migrate-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-arndale:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-arndale:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-rtds:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-rtds:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit1:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit1:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit2:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit2:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-libvirt-raw:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-vhd:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-vhd:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-vhd:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-vhd:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-qcow2:migrate-support-check:fail:nonblocking
X-Osstest-Versions-This:
    linux=0dd3ee31125508cd67f7e7172247f05b7fd1753a
X-Osstest-Versions-That:
    linux=52b1853b080a082ec3749c3a9577f6c71b1d4a90
From: osstest service owner <osstest-admin@xenproject.org>
Date: Mon, 08 Jan 2024 03:47:07 +0000

flight 184270 linux-linus real [real]
http://logs.test-lab.xenproject.org/osstest/logs/184270/

Failures :-/ but no regressions.

Tests which did not succeed, but are not blocking:
 test-armhf-armhf-libvirt-raw 15 saverestore-support-check fail blocked in 184268
 test-amd64-amd64-xl-qemut-win7-amd64 19 guest-stop            fail like 184268
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 184268
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 184268
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 184268
 test-amd64-amd64-xl-qemut-ws16-amd64 19 guest-stop            fail like 184268
 test-armhf-armhf-libvirt-qcow2 15 saverestore-support-check   fail like 184268
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 184268
 test-amd64-amd64-libvirt     15 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl          15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl          16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-credit1  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-thunderx 15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit1  16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-thunderx 16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-xsm      15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-xsm      16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-credit2  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit2  16 saverestore-support-check    fail   never pass
 test-arm64-arm64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-xsm 16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-multivcpu 15 migrate-support-check        fail  never pass
 test-armhf-armhf-xl-multivcpu 16 saverestore-support-check    fail  never pass
 test-amd64-amd64-libvirt-qcow2 14 migrate-support-check        fail never pass
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-armhf-armhf-xl-arndale  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-arndale  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-rtds     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-rtds     16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-credit1  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit1  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-credit2  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit2  16 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-raw 14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 15 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-vhd      14 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-vhd      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-raw 14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          16 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-qcow2 14 migrate-support-check        fail never pass

version targeted for testing:
 linux                0dd3ee31125508cd67f7e7172247f05b7fd1753a
baseline version:
 linux                52b1853b080a082ec3749c3a9577f6c71b1d4a90

Last test of basis   184268  2024-01-07 02:16:58 Z    1 days
Testing same since   184270  2024-01-07 20:42:19 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Linus Torvalds <torvalds@linux-foundation.org>

jobs:
 build-amd64-xsm                                              pass    
 build-arm64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64                                                  pass    
 build-arm64                                                  pass    
 build-armhf                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-arm64-libvirt                                          pass    
 build-armhf-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-pvops                                            pass    
 build-arm64-pvops                                            pass    
 build-armhf-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-amd64-amd64-xl                                          pass    
 test-amd64-coresched-amd64-xl                                pass    
 test-arm64-arm64-xl                                          pass    
 test-armhf-armhf-xl                                          pass    
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm           pass    
 test-amd64-amd64-xl-qemut-stubdom-debianhvm-amd64-xsm        pass    
 test-amd64-amd64-xl-qemut-debianhvm-i386-xsm                 pass    
 test-amd64-amd64-xl-qemuu-debianhvm-i386-xsm                 pass    
 test-amd64-amd64-libvirt-xsm                                 pass    
 test-arm64-arm64-libvirt-xsm                                 pass    
 test-amd64-amd64-xl-xsm                                      pass    
 test-arm64-arm64-xl-xsm                                      pass    
 test-amd64-amd64-qemuu-nested-amd                            fail    
 test-amd64-amd64-xl-pvhv2-amd                                pass    
 test-amd64-amd64-dom0pvh-xl-amd                              pass    
 test-amd64-amd64-xl-qemut-debianhvm-amd64                    pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64                    pass    
 test-amd64-amd64-freebsd11-amd64                             pass    
 test-amd64-amd64-freebsd12-amd64                             pass    
 test-amd64-amd64-xl-qemuu-ovmf-amd64                         pass    
 test-amd64-amd64-xl-qemut-win7-amd64                         fail    
 test-amd64-amd64-xl-qemuu-win7-amd64                         fail    
 test-amd64-amd64-xl-qemut-ws16-amd64                         fail    
 test-amd64-amd64-xl-qemuu-ws16-amd64                         fail    
 test-armhf-armhf-xl-arndale                                  pass    
 test-amd64-amd64-examine-bios                                pass    
 test-amd64-amd64-xl-credit1                                  pass    
 test-arm64-arm64-xl-credit1                                  pass    
 test-armhf-armhf-xl-credit1                                  pass    
 test-amd64-amd64-xl-credit2                                  pass    
 test-arm64-arm64-xl-credit2                                  pass    
 test-armhf-armhf-xl-credit2                                  pass    
 test-amd64-amd64-xl-qemuu-dmrestrict-amd64-dmrestrict        pass    
 test-amd64-amd64-examine                                     pass    
 test-arm64-arm64-examine                                     pass    
 test-armhf-armhf-examine                                     pass    
 test-amd64-amd64-qemuu-nested-intel                          pass    
 test-amd64-amd64-xl-pvhv2-intel                              pass    
 test-amd64-amd64-dom0pvh-xl-intel                            pass    
 test-amd64-amd64-libvirt                                     pass    
 test-armhf-armhf-libvirt                                     pass    
 test-amd64-amd64-xl-multivcpu                                pass    
 test-armhf-armhf-xl-multivcpu                                pass    
 test-amd64-amd64-pair                                        pass    
 test-amd64-amd64-libvirt-pair                                pass    
 test-amd64-amd64-xl-pvshim                                   pass    
 test-amd64-amd64-pygrub                                      pass    
 test-amd64-amd64-libvirt-qcow2                               pass    
 test-armhf-armhf-libvirt-qcow2                               pass    
 test-amd64-amd64-libvirt-raw                                 pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-armhf-armhf-libvirt-raw                                 pass    
 test-amd64-amd64-xl-rtds                                     pass    
 test-armhf-armhf-xl-rtds                                     pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64-shadow             pass    
 test-amd64-amd64-xl-shadow                                   pass    
 test-arm64-arm64-xl-thunderx                                 pass    
 test-amd64-amd64-examine-uefi                                pass    
 test-amd64-amd64-xl-vhd                                      pass    
 test-arm64-arm64-xl-vhd                                      pass    
 test-armhf-armhf-xl-vhd                                      pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Pushing revision :

hint: The 'hooks/update' hook was ignored because it's not set as executable.
hint: You can disable this warning with `git config advice.ignoredHook false`.
hint: The 'hooks/post-receive' hook was ignored because it's not set as executable.
hint: You can disable this warning with `git config advice.ignoredHook false`.
hint: The 'hooks/post-update' hook was ignored because it's not set as executable.
hint: You can disable this warning with `git config advice.ignoredHook false`.
To xenbits.xen.org:/home/xen/git/linux-pvops.git
   52b1853b080a..0dd3ee311255  0dd3ee31125508cd67f7e7172247f05b7fd1753a -> tested/linux-linus


From xen-devel-bounces@lists.xenproject.org Mon Jan 08 06:03:24 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 08 Jan 2024 06:03:24 +0000
Received: from list by lists.xenproject.org with outflank-mailman.663178.1032997 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMij5-000389-Fi; Mon, 08 Jan 2024 06:03:07 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 663178.1032997; Mon, 08 Jan 2024 06:03:07 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMij5-000382-Cj; Mon, 08 Jan 2024 06:03:07 +0000
Received: by outflank-mailman (input) for mailman id 663178;
 Mon, 08 Jan 2024 06:03:05 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=xshC=IS=amd.com=Jiqian.Chen@srs-se1.protection.inumbo.net>)
 id 1rMij3-00037w-Fx
 for xen-devel@lists.xenproject.org; Mon, 08 Jan 2024 06:03:05 +0000
Received: from NAM11-CO1-obe.outbound.protection.outlook.com
 (mail-co1nam11on20601.outbound.protection.outlook.com
 [2a01:111:f403:2416::601])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 93cd655d-adeb-11ee-9b0f-b553b5be7939;
 Mon, 08 Jan 2024 07:03:02 +0100 (CET)
Received: from BL1PR12MB5849.namprd12.prod.outlook.com (2603:10b6:208:384::18)
 by SN7PR12MB8435.namprd12.prod.outlook.com (2603:10b6:806:2e2::11)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7159.21; Mon, 8 Jan
 2024 06:02:55 +0000
Received: from BL1PR12MB5849.namprd12.prod.outlook.com
 ([fe80::969f:11b3:5ec2:3aa1]) by BL1PR12MB5849.namprd12.prod.outlook.com
 ([fe80::969f:11b3:5ec2:3aa1%3]) with mapi id 15.20.7159.020; Mon, 8 Jan 2024
 06:02:55 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 93cd655d-adeb-11ee-9b0f-b553b5be7939
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=JyzBZMk/43H8gPZPVsR3UbAV1Ng2Q1edkQu6AeAdScxjI4wR98xSPnOGne8Wp2kEuvNDGqcOWLYxvKPzydJHfbhgVIbwIKZiInm53Z6Mb0AcUoSKr8qGHyhMzrLyeRMN/CSqJRcYi2h2ebpLiYtQISAlMl5vug7zXfsrQSXA1Yc+lePZ9m1Nf0NgTbAwmRtGNjzruJiLpxXQG4taUdE5G6WVnpK2Y0nnFuDl2baEBXWETUM59/J+6ovUxfaNKPpr1IrhFIU3a+aHqWgG90lC2qyPSDrvi55+j7jY8v40RQ+bm2ACY3LZioTeI29PtwOHvZVcIAJ3IIQDtPddaiGJGA==
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=5SZnQhqlVHJys+CNWBd65TgWNzYoC5ZjT49rCV1ZqCU=;
 b=SztOt970gA+l9j31sRc3i2EeXTe8QUTUb9KBkxZij6CzYCb3ffI+4nR9Sbsaekh1WtKUMiXiJcYRnl50c3IjJQSX2m41UwWakPf81ACVV+yADllW6JZGJqKKk0ePWDpHrHtSylM8nin21EdHJypkCD7K9t0ih35OlY041zQE+jPk1ino7/pqhmf6xv+YCv0zwDysJbpMmtyiI1lIVCt9+p7sQzYAlrxESkA1CtV22GZ/FW6EZq/lMLSDZeJxfwGS5YF1k3Ji8CFh4Brlksre+kViTt5jqavm1WE9lQg2MPVKp5HUX75gfNzCN+rZhTFW0RwrKhEFGhytqtGcWZ8fGA==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=amd.com; dmarc=pass action=none header.from=amd.com; dkim=pass
 header.d=amd.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=5SZnQhqlVHJys+CNWBd65TgWNzYoC5ZjT49rCV1ZqCU=;
 b=cMDAZCEdobL9n3qV9Orq2NfnhYkX8WBNWoBB7x6rHamLmaHlw9XQJeRec2qeETjuA5Stgpv9cgCduWmG35uTq1qiCea0SC1SSSCjH0+nO5phZj/w4WSp+VG3uTxRdU+PxDJ8znb9uc9kc6x3f3XvZLn/nvTxAMps795K74rDRWY=
From: "Chen, Jiqian" <Jiqian.Chen@amd.com>
To: Stefano Stabellini <sstabellini@kernel.org>
CC: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>, Jan
 Beulich <jbeulich@suse.com>, Andrew Cooper <andrew.cooper3@citrix.com>,
	=?utf-8?B?Um9nZXIgUGF1IE1vbm7DqQ==?= <roger.pau@citrix.com>, Wei Liu
	<wl@xen.org>, George Dunlap <george.dunlap@citrix.com>, Julien Grall
	<julien@xen.org>, Anthony PERARD <anthony.perard@citrix.com>, Juergen Gross
	<jgross@suse.com>, "Hildebrand, Stewart" <Stewart.Hildebrand@amd.com>,
	"Huang, Ray" <Ray.Huang@amd.com>, "Chen, Jiqian" <Jiqian.Chen@amd.com>
Subject: Re: [RFC XEN PATCH v4 5/5] libxl: Use gsi instead of irq for mapping
 pirq
Thread-Topic: [RFC XEN PATCH v4 5/5] libxl: Use gsi instead of irq for mapping
 pirq
Thread-Index: AQHaP6Y3HXW6ZoMbT0+Rfz8pptyOwLDL+zqAgAP6aAA=
Date: Mon, 8 Jan 2024 06:02:55 +0000
Message-ID:
 <BL1PR12MB58491AA2827EC47EA652A0F0E76B2@BL1PR12MB5849.namprd12.prod.outlook.com>
References: <20240105070920.350113-1-Jiqian.Chen@amd.com>
 <20240105070920.350113-6-Jiqian.Chen@amd.com>
 <alpine.DEB.2.22.394.2401051711160.3675@ubuntu-linux-20-04-desktop>
In-Reply-To:
 <alpine.DEB.2.22.394.2401051711160.3675@ubuntu-linux-20-04-desktop>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-ms-exchange-imapappendstamp: IA1PR12MB8237.namprd12.prod.outlook.com
 (15.20.7181.000)
authentication-results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=amd.com;
x-ms-exchange-messagesentrepresentingtype: 1
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: BL1PR12MB5849:EE_|SN7PR12MB8435:EE_
x-ms-office365-filtering-correlation-id: 76864d1e-fda7-43e7-cdf4-08dc100f753c
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam: BCL:0;
x-microsoft-antispam-message-info:
 NdyFwKsddt3feLN7uSzRPT4uksUHlI+xNT9/B8BIFVifAl8QgjNQZPK5Tpjp27xDQKoVvnHrS2t6+kN3p2y3SDnE/47iqYXekraH8TRO/1LdtDy6fRi/r+DtFuh/m4UneQXf5+sV2iUZ8Uj0HRj/dty1OjyDd92FnQcBAzginupPU6hyLUWomuOt6kyWlzaJlOPz87ki7s/3z80jESqvQ0CJAoRZhPTkVgBUcvIUhG+gCiw+rRFt52kR2lR0cSIP0vMOJecXtPBzVVCo4iFFy4H33D48EsAAs1ZHyqcRBcWV44XExk+X3iJv4e1IBb3ZIHI+fYVhD9LLmmXfcVWDyPDTCnbhzSzRIZtECJLeX0Bb2RcqjVJYs3XMdYu35pmAOHhIWvVn716+q/AZwyabWuVW8oqn4liDOuMDY0yeQh0w5yz9qpiXF5tPYMVboJwykz65v6CIv9/WhW/CwaovI9A1NftNDOp+til4dgBevMFmQO0ysejS2bmHZfIjiYINUQMuAcSesQOMek6GZ/MFQw9qkr5R3buTWJIqy8po3dfwY9z/V0GlfBLrXn69MZdxHg4D6JC2jy9D1T4E4FueUZagn7TgRIREwfbHJSQDf6gu84PGSTSX9JmAMwY2BNSE
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BL1PR12MB5849.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230031)(376002)(396003)(136003)(346002)(39860400002)(366004)(230922051799003)(1800799012)(451199024)(64100799003)(186009)(53546011)(26005)(9686003)(478600001)(71200400001)(6506007)(7696005)(5660300002)(2906002)(7416002)(41300700001)(66446008)(66476007)(66556008)(66946007)(64756008)(54906003)(76116006)(6916009)(316002)(4326008)(8936002)(52536014)(8676002)(38070700009)(38100700002)(122000001)(33656002)(55016003);DIR:OUT;SFP:1101;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?utf-8?B?cFROaGFVT3hQcnJxZ0xOSDFGelZtODZmRVVuM3ZqQjNrbnN5YmlRZVdQbTNX?=
 =?utf-8?B?bGNvQTlmU0U5aERzVHN0OGNWQ0MySWR0OVFPd2w1VFdBOXJwcVBpQTFpUHFS?=
 =?utf-8?B?aE81dHcvV3RSblMvdERjTFIybEgveGtZamd3QWFJM0pCbmM4VTErTENUWmhm?=
 =?utf-8?B?amFBbHV2T3VETTkxQzgxM1Zzb3VlSDZLY3pkUGZMdXg5WDNkM3p4eVljb1JF?=
 =?utf-8?B?ZFhmN2J4NTI0VERxQW5jMW8rcThnNjVTak1HekhGR2xEdWxURmtmTS9CS3BP?=
 =?utf-8?B?dXRPWS9CYVZCcXVnNlNTaUhPUUNzNytjUTFCRlpvOUJOSGwzbXUrTkR4ckxp?=
 =?utf-8?B?M1VFRHpKbE5jWDd0ZmVxd2VmZmN2aHhJbGREbWpTZmJjdVRENUhrOWFXbW0y?=
 =?utf-8?B?VFh3VW5TQmt1akNtM0FYWitYNUNLTXNjSzRMNEpxRFBlcTNkbW1tQ3UvQkxy?=
 =?utf-8?B?clBvMDB5N2pQQ0QyZU9YcVVzUlM5SGFDZFBaOGNrMFl2am9tYXBxdzJHb2Na?=
 =?utf-8?B?S1RlZmdTMCt2T29IMjNCWjQrcXl5SklxK0FGSVJ0NmJjY2JBdk8zaS9BWUpq?=
 =?utf-8?B?b2JwZXF1T1pPSmI4STNNQ3NneHZLSUVXLzYrMVExVmR3Q01rNmJUcE90aGNR?=
 =?utf-8?B?SkFzT2NZbjlremVmemlSVXVhamc5a2Z3VXRENVpLTGVkL0ZSQ2RGa1dsYnN0?=
 =?utf-8?B?NEw5T04xeFlNTXV1WktGQkFCWVZ3eDRwTG5BSThiRDIxR3drK0RtRUZaM0xX?=
 =?utf-8?B?VWZwSHJaQmJmQ2trWVZmemVhQmhhUlVXdlJKU2RIeXVvbElMdWRrYmVzNGNG?=
 =?utf-8?B?eDR3Q1ZqVmlnaHZ0SG5tWU9UZXFaK2x0OHpzdVZrSHdqaGJzOVEyTC9tdGJ3?=
 =?utf-8?B?d0N1RnQyM05MSER2STJiTE5MVDlxc0t0emNKWm9YTW0rMzkza1BkU3M0N2NQ?=
 =?utf-8?B?aXEycElFTDh2TnRQc2o5Vlp6OHRsWSs3VXZDQUJEbllWWHJNVUhJQTdoYm9n?=
 =?utf-8?B?aHkyUHJKK2MyS2dHdkh6RnVLdkczMVVFS09iUEcvUThObUxWLzlXRG1TaFhi?=
 =?utf-8?B?ZkFubDFVanREcThxUWE2R2dCa0FJWTRRUmJxenpvRzhiVDVzRHYzWFRMblhn?=
 =?utf-8?B?bE9XcHBDSDNDOGJKN25JcWxBeCtqV3JGNXRmdllCSnNMNmkwWisxNit6cXJC?=
 =?utf-8?B?M3J1MGZmT0doWnZOT21ydDEyeFc1Rm5IQU9tL1lwQlZDb3JrdXQ3eWIyaTBx?=
 =?utf-8?B?cVdVVmlPTXI0QXFzYlkralNRcERDSWM5UGl5SEQ3UjFtOWhaVmhaRXEzYkdB?=
 =?utf-8?B?RVhycmJDTHgwWVdXTUl2cVVqZkp0VGNoQ09TcU10bTlKOGlUU1RnN21OUWhi?=
 =?utf-8?B?ZlBZTlZOV1Jrcmk4eVZUdkx5d0tmaGdUT05zb2UvTHRQbjdtMS9yVkJRWEU4?=
 =?utf-8?B?MUdETDdzK2ZnTDRXUWYrQXFQbHUyenpsWVorTHVnRlhKZkRjOXkxQ0VMRzhE?=
 =?utf-8?B?V1dtY1VPakZ3a3dvYWt6cWd5VndWalRGUWxKdUo4b0w3dW8xT3ZLZ0kvR3Rx?=
 =?utf-8?B?ZU5jaldINWVBQW90R0tOVXQybXdVNURhcng4NGhDSUEzYkZpYW5xWVc2Y2tR?=
 =?utf-8?B?WWx5WXlmNVh2VVViMVhiSUJRUlNwNlY3RWpCQkpjMW5zQkcvNjlRMDBBeVRR?=
 =?utf-8?B?VjVLNDE5SlpPVDdNRnVQcDhFSTE5NnpLMkxjOHdGbkZhbituYVptNUMwOXZC?=
 =?utf-8?B?SHdzR0FkY1lmcTB1TU9SYmNndUc5REdXUGpxMzJFS293aGZWVG14dEh5OU1F?=
 =?utf-8?B?MXFWaFlvL0I4NHd1bXEwbG1Ga09WajlUU1Zzc1lBQW5oRkNjUzg0OXdtaXR2?=
 =?utf-8?B?cHNqOE5Jd0N5M211ODNDOWtBS25FVVg2bDNYb1FjK1NwMHE1Yi9OQmYvR0h5?=
 =?utf-8?B?dmFiRXVVdTJlR244TC9aUFJ6dzNWbkNUN2crK0NoQm1lT01XSFZ3ZEhJejhK?=
 =?utf-8?B?aVdzTWh5Z1ZadGV5RkdqOGpUWVdZT2NjQzhMM2FXTjFoMDlYZ05uY1BqS2ZQ?=
 =?utf-8?B?WlBrVEhYSHA5V1BTWXVGVS9OTmxoak4zakQ3Wm83TlNFSnlKc3Vtc1hTRnV3?=
 =?utf-8?Q?vnVo=3D?=
Content-Type: text/plain; charset="utf-8"
Content-ID: <A04D207E2B5E0545A0D7E1E499F8E938@amdcloud.onmicrosoft.com>
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: BL1PR12MB5849.namprd12.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 76864d1e-fda7-43e7-cdf4-08dc100f753c
X-MS-Exchange-CrossTenant-originalarrivaltime: 08 Jan 2024 06:02:55.7075
 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 3dd8961f-e488-4e60-8e11-a82d994e183d
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: vFG6Sq96oGz2Wb34D+G/Zmqi+nF6JaJkhbJJiPxWrB28VYjdxQAqaolm/nctO0yczfsLQ0IGlmNrUYzHNRc/bg==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN7PR12MB8435

T24gMjAyNC8xLzYgMDk6MTEsIFN0ZWZhbm8gU3RhYmVsbGluaSB3cm90ZToNCj4gT24gRnJpLCA1
IEphbiAyMDI0LCBKaXFpYW4gQ2hlbiB3cm90ZToNCj4+IEluIFBWSCBkb20wLCBpdCB1c2VzIHRo
ZSBsaW51eCBsb2NhbCBpbnRlcnJ1cHQgbWVjaGFuaXNtLA0KPj4gd2hlbiBpdCBhbGxvY3MgaXJx
IGZvciBhIGdzaSwgaXQgaXMgZHluYW1pYywgYW5kIGZvbGxvdw0KPj4gdGhlIHByaW5jaXBsZSBv
ZiBhcHBseWluZyBmaXJzdCwgZGlzdHJpYnV0aW5nIGZpcnN0LiBBbmQNCj4+IHRoZSBpcnEgbnVt
YmVyIGlzIGFsbG9jZWQgZnJvbSBzbWFsbCB0byBsYXJnZSwgYnV0IHRoZQ0KPj4gYXBwbHlpbmcg
Z3NpIG51bWJlciBpcyBub3QsIG1heSBnc2kgMzggY29tZXMgYmVmb3JlIGdzaQ0KPj4gMjgsIHRo
YXQgY2F1c2VzIHRoZSBpcnEgbnVtYmVyIGlzIG5vdCBlcXVhbCB3aXRoIHRoZSBnc2kNCj4+IG51
bWJlci4gQW5kIHdoZW4gcGFzc3Rocm91Z2ggYSBkZXZpY2UsIHhsIHdhbnRzIHRvIHVzZQ0KPj4g
Z3NpIHRvIG1hcCBwaXJxLCBzZWUgcGNpX2FkZF9kbV9kb25lLT54Y19waHlzZGV2X21hcF9waXJx
LA0KPj4gYnV0IHRoZSBnc2kgbnVtYmVyIGlzIGdvdCBmcm9tIGZpbGUNCj4+IC9zeXMvYnVzL3Bj
aS9kZXZpY2VzLzxzYmRmPi9pcnEgaW4gY3VycmVudCBjb2RlLCBzbyBpdA0KPj4gd2lsbCBmYWls
IHdoZW4gbWFwcGluZy4NCj4+DQo+PiBTbywgdXNlIHJlYWwgZ3NpIG51bWJlciByZWFkIGZyb20g
Z3NpIHN5c2ZzLg0KPj4NCj4+IENvLWRldmVsb3BlZC1ieTogSHVhbmcgUnVpIDxyYXkuaHVhbmdA
YW1kLmNvbT4NCj4+IFNpZ25lZC1vZmYtYnk6IEppcWlhbiBDaGVuIDxKaXFpYW4uQ2hlbkBhbWQu
Y29tPg0KPiANCj4gUmV2aWV3ZWQtYnk6IFN0ZWZhbm8gU3RhYmVsbGluaSA8c3N0YWJlbGxpbmlA
a2VybmVsLm9yZz4NClRoYW5rIHlvdSB2ZXJ5IG11Y2ghIEkgd2lsbCBhZGQgdGhpcyBpbiBuZXh0
IHZlcnNpb24uDQpBbmQgdGhpcyBpbXBsZW1lbnRhdGlvbiBkZXBlbmRzIG9uIHRoZSB0aGlyZCBw
YXRjaCBvbiBrZXJuZWwgc2lkZSwgaWYgdGhlIG1haW50YWluZXIgZG9lc24ndCBsaWtlIHRvIGFk
ZCBhIGdzaSBzeXNmcywgdGhpcyBpbXBsZW1lbnRhdGlvbiBtYXkgYmUgY2hhbmdlZCBpbiB0aGUg
ZnV0dXJlLCBpZiBzbywgSSB3aWxsIGxldCB5b3Uga25vdy4NCg0KPiANCg0KLS0gDQpCZXN0IHJl
Z2FyZHMsDQpKaXFpYW4gQ2hlbi4NCg==


From xen-devel-bounces@lists.xenproject.org Mon Jan 08 06:18:45 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 08 Jan 2024 06:18:45 +0000
Received: from list by lists.xenproject.org with outflank-mailman.663182.1033006 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMiy8-0005ZK-OT; Mon, 08 Jan 2024 06:18:40 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 663182.1033006; Mon, 08 Jan 2024 06:18:40 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMiy8-0005ZD-Lu; Mon, 08 Jan 2024 06:18:40 +0000
Received: by outflank-mailman (input) for mailman id 663182;
 Mon, 08 Jan 2024 06:18:40 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rMiy8-0005Z3-C3; Mon, 08 Jan 2024 06:18:40 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rMiy8-0000uH-4z; Mon, 08 Jan 2024 06:18:40 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rMiy7-0005cs-IN; Mon, 08 Jan 2024 06:18:39 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rMiy7-000212-Hx; Mon, 08 Jan 2024 06:18:39 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=F3bKGTQiAGezR5j6JzsM6EjkfOY4G9iiTX/mw0LN4G0=; b=HLtQwp2LvOJqx/BOTFBYDVfJpm
	rN6o/rK6TlrKrcJxi6AV/ohimRZtoL3KsSp4wnKXI3Ue32SGUVPwLNMc/IMfXUV9eQwD5URpSSGX2
	TP0nTduymWkREPd3g4wfe0kPzAvDPvSZ6QRMDnm9aRSeRevqtc/HNT3rsRQdtI48A8K8=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184272-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [ovmf test] 184272: all pass - PUSHED
X-Osstest-Versions-This:
    ovmf=ff1305c9fb171ad51bfc149c544e3ab5a0edf521
X-Osstest-Versions-That:
    ovmf=9cf1d03ebe076b3e3825dfebbc19fd6b52b5f336
From: osstest service owner <osstest-admin@xenproject.org>
Date: Mon, 08 Jan 2024 06:18:39 +0000

flight 184272 ovmf real [real]
http://logs.test-lab.xenproject.org/osstest/logs/184272/

Perfect :-)
All tests in this flight passed as required
version targeted for testing:
 ovmf                 ff1305c9fb171ad51bfc149c544e3ab5a0edf521
baseline version:
 ovmf                 9cf1d03ebe076b3e3825dfebbc19fd6b52b5f336

Last test of basis   184259  2024-01-05 20:42:55 Z    2 days
Testing same since   184272  2024-01-08 02:11:04 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Suqiang Ren <suqiangx.ren@intel.com>

jobs:
 build-amd64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-amd64-amd64-xl-qemuu-ovmf-amd64                         pass    
 test-amd64-i386-xl-qemuu-ovmf-amd64                          pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Pushing revision :

To xenbits.xen.org:/home/xen/git/osstest/ovmf.git
   9cf1d03ebe..ff1305c9fb  ff1305c9fb171ad51bfc149c544e3ab5a0edf521 -> xen-tested-master


From xen-devel-bounces@lists.xenproject.org Mon Jan 08 06:56:05 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 08 Jan 2024 06:56:05 +0000
Received: from list by lists.xenproject.org with outflank-mailman.663191.1033017 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMjYF-0002my-Gk; Mon, 08 Jan 2024 06:55:59 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 663191.1033017; Mon, 08 Jan 2024 06:55:59 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMjYF-0002mr-E1; Mon, 08 Jan 2024 06:55:59 +0000
Received: by outflank-mailman (input) for mailman id 663191;
 Mon, 08 Jan 2024 06:55:57 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=j0y/=IS=amd.com=Michal.Orzel@srs-se1.protection.inumbo.net>)
 id 1rMjYD-0002mf-I9
 for xen-devel@lists.xenproject.org; Mon, 08 Jan 2024 06:55:57 +0000
Received: from NAM11-DM6-obe.outbound.protection.outlook.com
 (mail-dm6nam11on20610.outbound.protection.outlook.com
 [2a01:111:f400:7eaa::610])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id f70ae90b-adf2-11ee-9b0f-b553b5be7939;
 Mon, 08 Jan 2024 07:55:54 +0100 (CET)
Received: from DM6PR01CA0011.prod.exchangelabs.com (2603:10b6:5:296::16) by
 PH0PR12MB5605.namprd12.prod.outlook.com (2603:10b6:510:129::14) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7159.21; Mon, 8 Jan
 2024 06:55:49 +0000
Received: from CY4PEPF0000EE39.namprd03.prod.outlook.com
 (2603:10b6:5:296:cafe::f7) by DM6PR01CA0011.outlook.office365.com
 (2603:10b6:5:296::16) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7159.21 via Frontend
 Transport; Mon, 8 Jan 2024 06:55:48 +0000
Received: from SATLEXMB04.amd.com (165.204.84.17) by
 CY4PEPF0000EE39.mail.protection.outlook.com (10.167.242.13) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.7181.12 via Frontend Transport; Mon, 8 Jan 2024 06:55:48 +0000
Received: from SATLEXMB08.amd.com (10.181.40.132) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.34; Mon, 8 Jan
 2024 00:55:47 -0600
Received: from SATLEXMB03.amd.com (10.181.40.144) by SATLEXMB08.amd.com
 (10.181.40.132) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.32; Sun, 7 Jan
 2024 22:55:44 -0800
Received: from [10.252.147.188] (10.180.168.240) by SATLEXMB03.amd.com
 (10.181.40.144) with Microsoft SMTP Server id 15.1.2507.34 via Frontend
 Transport; Mon, 8 Jan 2024 00:55:42 -0600
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: f70ae90b-adf2-11ee-9b0f-b553b5be7939
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=HLBMS6OINOHw5UvDzeTvmwqOu1T5xlb7Pnn1aI8pXdVk96nGhmS3+5Alpb9rajD6EwJ3q67zxamz1lYUBlKO97tCc9Myah/bn0iMhcER6AKIHyHSDDTQDuM2ZwYXDUoaNuO1gzl0TBy7/PsgGw+SwtSbLejiAG/25VpZaszyo3FRE5P2hArOGMrDawFoZPGplvTj+iM3T9IgCAk712vpQK9TJ1jq75Jey4nErfcmSn1JyThz4fDit7xlXfXRSLLsSIECFBj7RZiHUo/OT5V70oBfj/bFoNG2w4vrk5XfVsx3AZXm7AWz8o39obhymYMx2WY4JYzjMSZuKX2AWEAgXQ==
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=ito+fMQdXvppjtF4LDjyidBsZ8XzFmIEPdsDl7nvnT8=;
 b=cD4aE4QDvSNbvimjW7tYe3pFKudHAT4c12KHbaiC9NnItasjYg80r5KNvstHIB1DoI08R8tcwiokatDCYGYR0CoGRLQK1Cjps5Uc8dhamxexcyXZEvZl52X2CuVDZf7kMYzemL05P+Uu/PcerBFvL3CJR985B2aTOwfLzr6TG4WyF6kQo7j4fmBzOCbh+wtMLdTmteUL1DvIadXpF1CV41mY69sCoinZYkDwG1KzNhc5HqBQp3uN+3DEUuY8Iqa7WJHT1CEgGeje44p3Sj0OCRkdnZP1WjN6ASLr01XiQJJHw+ALFZ6NKSUtuWj+lgK09MVVCxwaJOizNTp6/KJY9Q==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=lists.xenproject.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)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=ito+fMQdXvppjtF4LDjyidBsZ8XzFmIEPdsDl7nvnT8=;
 b=Rhydw1C8umyJBvHZgLmusaGakivOSpqu7Xxc3v6ftj18HYzMXm5eUFEK5oCvQFK2CIwIJzIDfNe8aKYxUf6jOGRFM5p4Zfie0wM9sJUncSzEhOOnEy0ESTjwHMDB1YV7yNBg2//o7Hnj/Mm/jCT8u+mF1lrkas9+UENveqzCyQ8=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C
Message-ID: <aec5bbae-072d-4da1-a97c-11fb3cf59bd2@amd.com>
Date: Mon, 8 Jan 2024 07:55:42 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
From: Michal Orzel <michal.orzel@amd.com>
Subject: Re: [XEN v3 1/3] xen/arm: Introduce CONFIG_PARTIAL_EMULATION and
 "partial-emulation" cmd option
To: Ayan Kumar Halder <ayan.kumar.halder@amd.com>,
	<xen-devel@lists.xenproject.org>
CC: <sstabellini@kernel.org>, <stefano.stabellini@amd.com>, <julien@xen.org>,
	<Volodymyr_Babchuk@epam.com>, <bertrand.marquis@arm.com>
References: <20240105112156.154807-1-ayan.kumar.halder@amd.com>
 <20240105112156.154807-2-ayan.kumar.halder@amd.com>
Content-Language: en-US
In-Reply-To: <20240105112156.154807-2-ayan.kumar.halder@amd.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 7bit
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CY4PEPF0000EE39:EE_|PH0PR12MB5605:EE_
X-MS-Office365-Filtering-Correlation-Id: f3f461d7-0c54-43f0-6f4f-08dc1016d85b
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam: BCL:0;
X-Microsoft-Antispam-Message-Info:
	JSXIhxzyOVST+5V21BmLrIHqDpJ4Xbg2cvGnVgoK+0D1r4XJuQ/Ry3TvOGTjKBUW7JKZqqoddC6p4CkA5ePbL6nT63i8mE4O/t384EFIUMskooiNrqt/6/zl3vOpND0uxFRDN3KrqXYIXGhFPIOGj2KN9jOconsRVHpe9P/PpIoxkTRLNfk8ivLsrdWOhlnr4kFpv3jQlH7zMeGl2aIkf+kRUbb+GEfeMExEhimC4iLim2zJtjYbzFSsbis9pZyE1KBrtcun3ZZWjjDZnlvLZaJeMhYTEXWfG+f+w3vDjC/OHPnqtU+WmTiRmlmIRxgwvSYftWxAf+al4wBkLz7aD6Zrzyf6+SmJ7fo9hRXP+MqZG55XWFkJzQzq9GnIqMrMI/ojwR5YFaVbdb1vmzn81eNBFZuWGSIUKxob+tBaFTto5sj1YKjcnjnDe9uvJYObz3CKOvJHARIFpmD7bcX1c3VEAxpRLTzmXn9o7mVmU9umU3VNd2/ATYK3O8PFNI3JVsO0aEymH5VOcYK2poMA5t5OPP+TqttB5cSYX5hVbSC+v9Zl1kgYrC1T2OFMlRvPNFbacOy9KBYN40Rehb/t1ElsN5y5VcwzlIs3blgza121jmkO6+MhNUL0rSugjs+4SPVCGVzx9WakmqBIU64rUxEYgNm3yMLZob2JVmn0wIXhbV3qieYw19bV0WdSVXeKLQVUvdv86iju3KfGH98KfuRhh7hVMSj3BttbIKmc6YLufiu34l6D89dteEZ+ZKt2bt2YYIOV2Jihtq6Cx6wAclLdF/c9uE9GC6rECIlEW696z5XUsZ18O/L3TiXvHT+Ay3BRLHqY6AuI9V7O2VQ3zUg42RtCq35lPCsBW9KtPh0=
X-Forefront-Antispam-Report:
	CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230031)(4636009)(39860400002)(396003)(136003)(346002)(376002)(230922051799003)(230273577357003)(230173577357003)(1800799012)(451199024)(64100799003)(82310400011)(186009)(36840700001)(46966006)(40470700004)(83380400001)(40460700003)(336012)(26005)(47076005)(40480700001)(36860700001)(5660300002)(4326008)(426003)(53546011)(31686004)(2616005)(82740400003)(81166007)(356005)(31696002)(478600001)(16576012)(110136005)(54906003)(316002)(70586007)(70206006)(8936002)(8676002)(36756003)(44832011)(41300700001)(86362001)(2906002)(43740500002)(36900700001);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Jan 2024 06:55:48.3869
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: f3f461d7-0c54-43f0-6f4f-08dc1016d85b
X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com]
X-MS-Exchange-CrossTenant-AuthSource:
	CY4PEPF0000EE39.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR12MB5605

Hi Ayan,

On 05/01/2024 12:21, 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. We call them as partial emulation.
I read this as if RAZ/WI was the only solution which is not true. I would add e.g.

> 
> 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 partially emulated as RAZ/WI and they can be enclosed
> within CONFIG_PARTIAL_EMULATION.
I think we are missing the purpose of this patch i.e. why we want to enable partial
emulation instead of default behavior which is injecting undefined exception.

> 
> Further, "partial-emulation" command line option enables us to
> enable/disable partial emulation at run time. While CONFIG_PARTIAL_EMULATION
> enables support for partial emulation at compile time (ie 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, customers
Users (in general) instead of customers?

> can use cripts like Imagebuilder to generate uboot-script which will append
s/cripts/scripts

> "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.

> 
> Signed-off-by: Ayan Kumar Halder <ayan.kumar.halder@amd.com>
> ---
> Changes from v1 :-
> 1. New patch introduced in v2.
> 
> v2 :-
> 1. Reordered the patches so that the config and command line option is
> introduced in the first patch.
> 
>  docs/misc/xen-command-line.pandoc | 7 +++++++
>  xen/arch/arm/Kconfig              | 8 ++++++++
>  xen/arch/arm/include/asm/regs.h   | 6 ++++++
>  xen/arch/arm/traps.c              | 3 +++
>  4 files changed, 24 insertions(+)
> 
> diff --git a/docs/misc/xen-command-line.pandoc b/docs/misc/xen-command-line.pandoc
> index 8e65f8bd18..dd2a76fb19 100644
> --- a/docs/misc/xen-command-line.pandoc
> +++ b/docs/misc/xen-command-line.pandoc
> @@ -1949,6 +1949,13 @@ This option is ignored in **pv-shim** mode.
> 
>  > Default: `on`
> 
> +### partial-emulation (arm)
> +> `= <boolean>`
> +
> +> Default: `false`
> +
> +Flag to enable or disable partial emulation of registers
Missing dot at the end of sentence.
Also, I would add a warning that enabling this option might result in unwanted behavior
and that it is only effective if CONFIG_PARTIAL_EMULATION is enabled.

> +
>  ### pci
>      = List of [ serr=<bool>, perr=<bool> ]
> 
> diff --git a/xen/arch/arm/Kconfig b/xen/arch/arm/Kconfig
> index 50e9bfae1a..8f25d9cba0 100644
> --- a/xen/arch/arm/Kconfig
> +++ b/xen/arch/arm/Kconfig
> @@ -225,6 +225,14 @@ config STATIC_EVTCHN
>           This option enables establishing static event channel communication
>           between domains on a dom0less system (domU-domU as well as domU-dom0).
> 
> +config PARTIAL_EMULATION
> +    bool "Enable partial emulation for registers"
Shouldn't we be more specific and write system/coprocessor registers?

> +    default y
> +    help
> +      This option enabled partial emulation for registers to avoid guests
s/enabled/enables

> +      crashing when accessing registers which are not optional but has not been
> +      emulated to its complete functionality.
Ditto about the possible side effect.

Formatting is incorrect. bool, default, help should be indented by tab and help text
by tab and 2 spaces.

> +
>  endmenu
> 
>  menu "ARM errata workaround via the alternative framework"
> diff --git a/xen/arch/arm/include/asm/regs.h b/xen/arch/arm/include/asm/regs.h
> index f998aedff5..b71fa20f91 100644
> --- a/xen/arch/arm/include/asm/regs.h
> +++ b/xen/arch/arm/include/asm/regs.h
> @@ -13,6 +13,12 @@
> 
>  #define psr_mode(psr,m) (((psr) & PSR_MODE_MASK) == (m))
> 
> +/*
> + * opt_partial_emulation: If true, partial emulation for registers will be
> + * enabled.
> + */
Description would better suit at the definition.

> +extern bool opt_partial_emulation;
> +
Given that parameter definition is in traps.c, I would add declaration in traps.h.

>  static inline bool regs_mode_is_32bit(const struct cpu_user_regs *regs)
>  {
>  #ifdef CONFIG_ARM_32
> diff --git a/xen/arch/arm/traps.c b/xen/arch/arm/traps.c
> index 9c10e8f78c..d5fb9c1035 100644
> --- a/xen/arch/arm/traps.c
> +++ b/xen/arch/arm/traps.c
> @@ -42,6 +42,9 @@
>  #include <asm/vgic.h>
>  #include <asm/vtimer.h>
> 
> +bool opt_partial_emulation = false;
> +boolean_param("partial-emulation", opt_partial_emulation);

Looking at other patches, the partial emulation code will most often be used as follows:
#ifdef CONFIG_PARTIAL_EMULATION
if ( opt_partial_emulation )
   ...
else
   ...
#endif

We could instead do:

#ifdef CONFIG_PARTIAL_EMULATION
#define partial_emulation_enabled opt_partial_emulation
#else
#define partial_emulation_enabled false
#endif

to reduce the number of checks and ifdefery (still could be used to compile out some code in rare cases).

> +
>  /* The base of the stack must always be double-word aligned, which means
>   * that both the kernel half of struct cpu_user_regs (which is pushed in
>   * entry.S) and struct cpu_info (which lives at the bottom of a Xen
> --
> 2.25.1
> 
> 

~Michal


From xen-devel-bounces@lists.xenproject.org Mon Jan 08 06:59:41 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 08 Jan 2024 06:59:41 +0000
Received: from list by lists.xenproject.org with outflank-mailman.663195.1033027 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMjbn-0003gA-Vu; Mon, 08 Jan 2024 06:59:39 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 663195.1033027; Mon, 08 Jan 2024 06:59:39 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMjbn-0003g3-Sy; Mon, 08 Jan 2024 06:59:39 +0000
Received: by outflank-mailman (input) for mailman id 663195;
 Mon, 08 Jan 2024 06:59:37 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=j0y/=IS=amd.com=Michal.Orzel@srs-se1.protection.inumbo.net>)
 id 1rMjbl-0003fx-UX
 for xen-devel@lists.xenproject.org; Mon, 08 Jan 2024 06:59:37 +0000
Received: from NAM10-DM6-obe.outbound.protection.outlook.com
 (mail-dm6nam10on20627.outbound.protection.outlook.com
 [2a01:111:f400:7e88::627])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 7ad3c777-adf3-11ee-9b0f-b553b5be7939;
 Mon, 08 Jan 2024 07:59:35 +0100 (CET)
Received: from SA0PR11CA0097.namprd11.prod.outlook.com (2603:10b6:806:d1::12)
 by BL1PR12MB5112.namprd12.prod.outlook.com (2603:10b6:208:316::16)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7159.21; Mon, 8 Jan
 2024 06:59:31 +0000
Received: from SA2PEPF00001507.namprd04.prod.outlook.com
 (2603:10b6:806:d1:cafe::3d) by SA0PR11CA0097.outlook.office365.com
 (2603:10b6:806:d1::12) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7159.21 via Frontend
 Transport; Mon, 8 Jan 2024 06:59:31 +0000
Received: from SATLEXMB04.amd.com (165.204.84.17) by
 SA2PEPF00001507.mail.protection.outlook.com (10.167.242.39) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.7181.12 via Frontend Transport; Mon, 8 Jan 2024 06:59:30 +0000
Received: from SATLEXMB04.amd.com (10.181.40.145) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.34; Mon, 8 Jan
 2024 00:59:30 -0600
Received: from [10.252.147.188] (10.180.168.240) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server id 15.1.2507.34 via Frontend
 Transport; Mon, 8 Jan 2024 00:59:29 -0600
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 7ad3c777-adf3-11ee-9b0f-b553b5be7939
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=T6O5ih3hTc8Zfb1+6ouhSU6xt4x8iIpaxRIJVmtH18Gl+WEZ1hCcwgZIHQYV75F3GJ7e5NA2NtlwgD+swh8QvrVaPTbk1pBsJo2p+RDrVl7mdOJOOFB5EmgKSOy8QoChxUsnD+LE22ZHuhHRmzC9VS2360Aiu0OlxPrKDCXEYYgXnO2AJdEqoj5omLPVuO26f9zEJdOwJkhXzTzWY/oSMpCVXiAZ4OvYjB3rk12EDB1kDMTSA0JFR161oBjTa1HlxWVwxGSaHRLEoj8QHuYv+1zWQaGIhcVj6nvUE/EyNkjZwyoDyNraiH4lxcGiiR7FIhoIqbQIeVDow9PnaVJ99A==
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=Rajwxt7GjUZEjv59/gxjbv/KqtUjJWYAr3Kb9Y4lOsM=;
 b=JVDlyicRx/NYRrsbkNuK/x9+fvIWfnEB+ZYmfpnGctMEvWj77E1mr0ZC0KEGV6x0xPkheoWSIDtJW/pHly5ImSNxs8J3Q1tKkipkf4UeNPZW/nQeUFK59uAyhVnnTUoN5aOmHXEF2kM1MnhRdI0Xn88FkNVAqOwIFP5876veA9WVJ2n5VdYZuSzma7yAgOb+35bEpnIFAXsWqvk+cMdp1upl/z/u17MbSGp9zFM6BntgUIfA7gD3aResflIRkvxd3QyvTjLYW3zalC8wgL3mxlxSJTB/4ebVZOW2asO3Y/tsYHjAZSNOJnWwvXLvsvwOKT98FKdv9WrOD9GwfhL0Cg==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=lists.xenproject.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)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=Rajwxt7GjUZEjv59/gxjbv/KqtUjJWYAr3Kb9Y4lOsM=;
 b=NpV2c1fJaHluqkalWnOgwANq+mlSRI4o0gHnJuEebBO60K6Z8cPy/eq2uMvkl6ajS39025yWIQdQiBeuOuyThvZRby18qTF7DlxglSO7HEAKs0wmllEszrlCBgaUrsZttts191kvrzDBvzfnMRDUBJo9hybUhA9+NMm+teRrNlQ=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C
Message-ID: <8da36c26-9e56-41df-8558-bd7f48274a37@amd.com>
Date: Mon, 8 Jan 2024 07:59:28 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
From: Michal Orzel <michal.orzel@amd.com>
Subject: Re: [XEN v3 2/3] xen/arm: arm64: Add emulation of Debug Data Transfer
 Registers
To: Ayan Kumar Halder <ayan.kumar.halder@amd.com>,
	<xen-devel@lists.xenproject.org>
CC: <sstabellini@kernel.org>, <stefano.stabellini@amd.com>, <julien@xen.org>,
	<Volodymyr_Babchuk@epam.com>, <bertrand.marquis@arm.com>
References: <20240105112156.154807-1-ayan.kumar.halder@amd.com>
 <20240105112156.154807-3-ayan.kumar.halder@amd.com>
Content-Language: en-US
In-Reply-To: <20240105112156.154807-3-ayan.kumar.halder@amd.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 7bit
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: SA2PEPF00001507:EE_|BL1PR12MB5112:EE_
X-MS-Office365-Filtering-Correlation-Id: debd1e3c-8f25-4f04-b05b-08dc10175ce4
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam: BCL:0;
X-Microsoft-Antispam-Message-Info:
	TnHq8Vfkg4Rj+ZnChuMZLZ1qzRl9NNEyB16g01i/PyrHiAFrp/3qeFOyLHWhLAESosNXw6MdIoJv/KztheLOtmGkHCAr8nSByGmHeXn2Vh86bDXA2ZtqdxlxFSt1BAi7ga5VcNqNCMPRXLJW8IzkVDnyzyIIbw68vU2y8L5ibOBkyY8ZJSy0BVinBv2Fs15K9AYwzme5Xb4ZFXVl7/lVMzL/eWm3MOjBcuwoH0pSzK+DeAbCW1ej6sRyVBKZUGJJ5ASujtZKyIoot1ShfskfuZiNqGHpY/d+rfiSModNS94Cs1fWnhxRp8MGRyXPeW7aqCpfFWTgPjqXUWAJKPSuqGq1N9kLhn1dbqYaTkqiAANMlJRDL5jajea11VEaKqYe7DhBPug4x76qe2Ouv/wttzr8htvPC60f7+vhl7AUa+7WMegEUyk0n5clGZag3SKHDFStcX8Hc50rja7AkouS/wiksVtL48Sn51PSpEzhWRWTlBE74tM6TR8u3hp4/VQk0F16nJmPDd6ilVhTW7Hmtk21weQeed6dilGCH0lxeD2NhnqYBVeAJiQs704I10qxFv/doatVnZZXm3tYftfxVY5MXUUiIaEQjhm7XckPl7n7Xy3boHjy5jryom2TnH7XUp8uLXm3vfJ/+Sqo0kduSOBwW2MgIx8SSiPceNgk+7PHqxcRLZuXw+648Vv3W0EcswZSVNKpgtpOLW/4mi2Eiaa/0mzkegc1ZapHUJQZZz2RxQasGvqCp9DHDeOS6SVY/bGK1AhQMvT9ljEtUS8PY8tmWEXIaqMxgkMVZLW/IvVOEbyL8gTu5F6QTseRKuf7
X-Forefront-Antispam-Report:
	CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230031)(4636009)(136003)(376002)(39860400002)(346002)(396003)(230922051799003)(186009)(82310400011)(451199024)(1800799012)(64100799003)(36840700001)(46966006)(40470700004)(316002)(36860700001)(16576012)(336012)(426003)(110136005)(54906003)(31686004)(8936002)(47076005)(8676002)(36756003)(31696002)(83380400001)(44832011)(4326008)(53546011)(40460700003)(40480700001)(70586007)(70206006)(2616005)(478600001)(26005)(2906002)(82740400003)(5660300002)(41300700001)(81166007)(86362001)(356005)(36900700001)(43740500002);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Jan 2024 06:59:30.7926
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: debd1e3c-8f25-4f04-b05b-08dc10175ce4
X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com]
X-MS-Exchange-CrossTenant-AuthSource:
	SA2PEPF00001507.namprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: BL1PR12MB5112

Hi Ayan,

On 05/01/2024 12:21, Ayan Kumar Halder wrote:
> From: Michal Orzel <michal.orzel@amd.com>
> 
> Currently if user enables HVC_DCC config option in Linux, it invokes access
> to debug data transfer registers (ie DBGDTRTX_EL0 on arm64, DBGDTRTXINT on
> arm32). As these registers are not emulated, Xen injects an undefined
> exception to the VM and Linux (running as VM) crashes.
> 
> We wish to avoid this crash by adding a partial emulation of DBGDTRTX_EL0.
> MDCCSR_EL0 is emulated as TXfull.
> 
> Refer ARM DDI 0487J.a ID042523, D19.3.8, DBGDTRTX_EL0
> "If TXfull is set to 1, set DTRRX and DTRTX to UNKNOWN".
> 
> Thus, any OS is expected to read MDCCSR_EL0 and check for TXfull before
> using DBGDTRTX_EL0. Linux does it via hvc_dcc_init() ---> hvc_dcc_check(),
> it returns -ENODEV. In this way, we are preventing the VM from accessing
> DBGDTRTX_EL0 register.
AFAIK, we are preventing the VM from making use of HVC DCC as a console.
DBGDTRTX_EL0 and MDCCSR_EL0 will be accessed at least once as part of hvc_dcc_check().

> 
> We also emulate DBGDTR[TR]X_EL0 as RAZ/WI.
> 
> Signed-off-by: Michal Orzel <michal.orzel@amd.com>
> Signed-off-by: Ayan Kumar Halder <ayan.kumar.halder@amd.com>
> ---
> Changes from
> 
> v1 :- 1. DBGDTR_EL0 does not emulate RXfull. This is to avoid giving the OS any
> indication that the RX buffer is full and is waiting to be read.
> 
> 2. In Arm32, DBGOSLSR is emulated. Also DBGDTRTXINT is emulated at EL0 only.
> 
> 3. Fixed the commit message and inline code comments.
> 
> v2 :- 1. Split the patch into two (separate patches for arm64 and arm32).
> 2. Removed the "fail" label.
> 3. Fixed the commit message.
> 
>  xen/arch/arm/arm64/vsysreg.c         | 25 +++++++++++++++++++++----
>  xen/arch/arm/include/asm/arm64/hsr.h |  3 +++
>  2 files changed, 24 insertions(+), 4 deletions(-)
> 
> diff --git a/xen/arch/arm/arm64/vsysreg.c b/xen/arch/arm/arm64/vsysreg.c
> index b5d54c569b..2f70eea2e5 100644
> --- a/xen/arch/arm/arm64/vsysreg.c
> +++ b/xen/arch/arm/arm64/vsysreg.c
> @@ -159,9 +159,6 @@ void do_sysreg(struct cpu_user_regs *regs,
>       *
>       * Unhandled:
>       *    MDCCINT_EL1
> -     *    DBGDTR_EL0
> -     *    DBGDTRRX_EL0
> -     *    DBGDTRTX_EL0
>       *    OSDTRRX_EL1
>       *    OSDTRTX_EL1
>       *    OSECCR_EL1
> @@ -172,11 +169,31 @@ void do_sysreg(struct cpu_user_regs *regs,
>      case HSR_SYSREG_MDSCR_EL1:
>          return handle_raz_wi(regs, regidx, hsr.sysreg.read, hsr, 1);
>      case HSR_SYSREG_MDCCSR_EL0:
> +    {
>          /*
> +         * Xen doesn't expose a real (or emulated) Debug Communications Channel
> +         * (DCC) to a domain. Yet the Arm ARM implies this is not an optional
> +         * feature. So some domains may start to probe it. For instance, the
> +         * HVC_DCC driver in Linux (since f377775dc083 and at least up to v6.7),
> +         * will try to write some characters and check if the transmit buffer
> +         * has emptied. By setting TX status bit to indicate the transmit buffer
> +         * is full, we would hint the OS that the DCC is probably not working.
> +         *
> +         * Bit 29: TX full
> +         *
>           * Accessible at EL0 only if MDSCR_EL1.TDCC is set to 0. We emulate that
>           * register as RAZ/WI above. So RO at both EL0 and EL1.
>           */
> -        return handle_ro_raz(regs, regidx, hsr.sysreg.read, hsr, 0);
> +        return handle_ro_read_val(regs, regidx, hsr.sysreg.read, hsr, 0,
> +                                  1U << 29);
I would assume that if partial emulation is not enabled, we should stick to ro_raz
instead of emulating TX set.

> +    }
> +#ifdef CONFIG_PARTIAL_EMULATION
> +    case HSR_SYSREG_DBGDTR_EL0:
> +    /* DBGDTR[TR]X_EL0 share the same encoding */
> +    case HSR_SYSREG_DBGDTRTX_EL0:
> +        if ( opt_partial_emulation )
> +            return handle_raz_wi(regs, regidx, hsr.sysreg.read, hsr, 0);
This is incorrect. What will happen if CONFIG_PARTIAL_EMULATION=y and opt_partial_emulation=false ?
You would fall through to cases below and end up in RAZ/WI. Instead, you should jump to default case,
so that we would inject undefined exception.

> +#endif
>      HSR_SYSREG_DBG_CASES(DBGBVR):
>      HSR_SYSREG_DBG_CASES(DBGBCR):
>      HSR_SYSREG_DBG_CASES(DBGWVR):
> diff --git a/xen/arch/arm/include/asm/arm64/hsr.h b/xen/arch/arm/include/asm/arm64/hsr.h
> index e691d41c17..1495ccddea 100644
> --- a/xen/arch/arm/include/asm/arm64/hsr.h
> +++ b/xen/arch/arm/include/asm/arm64/hsr.h
> @@ -47,6 +47,9 @@
>  #define HSR_SYSREG_OSDLR_EL1      HSR_SYSREG(2,0,c1,c3,4)
>  #define HSR_SYSREG_DBGPRCR_EL1    HSR_SYSREG(2,0,c1,c4,4)
>  #define HSR_SYSREG_MDCCSR_EL0     HSR_SYSREG(2,3,c0,c1,0)
> +#define HSR_SYSREG_DBGDTR_EL0     HSR_SYSREG(2,3,c0,c4,0)
> +#define HSR_SYSREG_DBGDTRTX_EL0   HSR_SYSREG(2,3,c0,c5,0)
> +#define HSR_SYSREG_DBGDTRRX_EL0   HSR_SYSREG(2,3,c0,c5,0)
>  
>  #define HSR_SYSREG_DBGBVRn_EL1(n) HSR_SYSREG(2,0,c0,c##n,4)
>  #define HSR_SYSREG_DBGBCRn_EL1(n) HSR_SYSREG(2,0,c0,c##n,5)

~Michal


From xen-devel-bounces@lists.xenproject.org Mon Jan 08 07:05:09 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 08 Jan 2024 07:05:09 +0000
Received: from list by lists.xenproject.org with outflank-mailman.663200.1033037 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMjgv-0005HC-M0; Mon, 08 Jan 2024 07:04:57 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 663200.1033037; Mon, 08 Jan 2024 07:04:57 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMjgv-0005H5-Ir; Mon, 08 Jan 2024 07:04:57 +0000
Received: by outflank-mailman (input) for mailman id 663200;
 Mon, 08 Jan 2024 07:04:56 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=j0y/=IS=amd.com=Michal.Orzel@srs-se1.protection.inumbo.net>)
 id 1rMjgu-0005Gz-3I
 for xen-devel@lists.xenproject.org; Mon, 08 Jan 2024 07:04:56 +0000
Received: from NAM10-BN7-obe.outbound.protection.outlook.com
 (mail-bn7nam10on20600.outbound.protection.outlook.com
 [2a01:111:f403:2009::600])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 380181b2-adf4-11ee-9b0f-b553b5be7939;
 Mon, 08 Jan 2024 08:04:52 +0100 (CET)
Received: from SA0PR11CA0100.namprd11.prod.outlook.com (2603:10b6:806:d1::15)
 by CH3PR12MB8511.namprd12.prod.outlook.com (2603:10b6:610:15c::13)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7159.23; Mon, 8 Jan
 2024 07:04:47 +0000
Received: from SN1PEPF00026369.namprd02.prod.outlook.com
 (2603:10b6:806:d1:cafe::5d) by SA0PR11CA0100.outlook.office365.com
 (2603:10b6:806:d1::15) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7159.21 via Frontend
 Transport; Mon, 8 Jan 2024 07:04:46 +0000
Received: from SATLEXMB03.amd.com (165.204.84.17) by
 SN1PEPF00026369.mail.protection.outlook.com (10.167.241.134) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.7181.13 via Frontend Transport; Mon, 8 Jan 2024 07:04:46 +0000
Received: from SATLEXMB04.amd.com (10.181.40.145) by SATLEXMB03.amd.com
 (10.181.40.144) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.34; Mon, 8 Jan
 2024 01:04:46 -0600
Received: from [10.252.147.188] (10.180.168.240) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server id 15.1.2507.34 via Frontend
 Transport; Mon, 8 Jan 2024 01:04:44 -0600
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 380181b2-adf4-11ee-9b0f-b553b5be7939
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=D/NfQfHS2wqN+6xs2nJufbnyXKNvH6Q26GiEdCtuMtUdoPfLyTB7ALKr/DPOt7iqPs6j5bvQyOu3OsGx5Jo8EPaFwNnRBO0EaoSN2nvZ9RXz0e4XcR/kM/2XyscorxA5Hy2hUG2yUdxlvsr1E7nS7quCfAtIcE1kLHTzJezlJzUzIznIgUJ6WeQDWRaySZ1OoBPDx4LwS19oNrLYLaHf2FW5oaSbO6HHaRixSFIXPtmJyVpNeYD/QIlWIpd4uMmHYqHmZ6QJiTDg4GTEyYjlazQPTclE2E+5FGe3M6cdemHxfoIS1Q8P/1DgpKCH4IXWLtc7ZnQtHKVwZCsjaBTKpA==
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=dKQtOyRkz5+WPtir3GirxqfxFG9EnfV5sTKwbH5cLf0=;
 b=CIN+1EED8+7y4VuwVSusfaXPKOiw+AluxQdGWDoKI7JbKsUlQY50SYV5zQfGGQLwkAFhedkbvawocIiKhM0Afz/VLXt/RArDdY66yvMixcjrUS3/qKTbcHtKsWA/aTBeFSkK0G5dtsQKYhM+o0l9b3+/NgB6InxXJDnBlr1sG1MqhKcKEUqZg6LdwvOSk/ie+AJY/wq1XpOjykW2kJc+GVE8z+fReh8WqWzTTyPbjpxinG7MHyX4YknOe8wuUvGq09ReRKuosZCx0vrYBiAtSJFnIJ4+kgTu6Pi5Opr3JKoHBzUZh4MzNwTWg5IR1eT07vy30RrD9K5mEToca1Aryw==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=lists.xenproject.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)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=dKQtOyRkz5+WPtir3GirxqfxFG9EnfV5sTKwbH5cLf0=;
 b=35CLdqK1JcnHPCEBZbzjCSwku451ac8ZU9osJ1fiJRW0U39XJTsXEtJp5LAZ33d9ZSa3m8PnBKyoKoDYPuk5M5vcxO5ZycLBcHjfbyBdqxR8X03hTLqpC9VZsIPOsfyIZ2YsMC9/e0xulaW36wEiw6XFbEdgs89aDMow1StaSz4=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=SATLEXMB03.amd.com; pr=C
Message-ID: <d92fbb2b-4b2f-4647-a3f3-98d1a2c49537@amd.com>
Date: Mon, 8 Jan 2024 08:04:39 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
From: Michal Orzel <michal.orzel@amd.com>
Subject: Re: [XEN v3 3/3] xen/arm: arm32: Add emulation of Debug Data Transfer
 Registers
To: Ayan Kumar Halder <ayan.kumar.halder@amd.com>,
	<xen-devel@lists.xenproject.org>
CC: <sstabellini@kernel.org>, <stefano.stabellini@amd.com>, <julien@xen.org>,
	<Volodymyr_Babchuk@epam.com>, <bertrand.marquis@arm.com>
References: <20240105112156.154807-1-ayan.kumar.halder@amd.com>
 <20240105112156.154807-4-ayan.kumar.halder@amd.com>
Content-Language: en-US
In-Reply-To: <20240105112156.154807-4-ayan.kumar.halder@amd.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 7bit
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: SN1PEPF00026369:EE_|CH3PR12MB8511:EE_
X-MS-Office365-Filtering-Correlation-Id: 48965583-2229-4e60-a3f7-08dc1018190e
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam: BCL:0;
X-Microsoft-Antispam-Message-Info:
	0nRmXWzDk2ZUEgOHGscH15lnjqHPXdItKOtNfr0JdQuFasxhrsTz/R6IwNo65agJ0rnGUJGQddWPqMSXSLDEoYmO7yupcGOUZb9L0ZHv1t6M2rAtVbIS0lMsrmbI0vHj+AGryYdpmthv7DKO6d/reHK73mjUp/zr2IVYl9S7vuUv6+mOqP1BgBp3vbGcm9IxaLpCxBoDzG/Tje37wKLKjZoB7yF+KLFxSXsW/fhTzRU9RWUhsZ+/Mr3lTXaYdhqda+DepCoAna/xxwTD5hG4xQjOJGJpb7r0+Gf9KOZn9ullONTqnzYGm0p9RnosawIJ8GKetO7NP7b9XLHatIPMiVV2yR+NY5fT8ae/A0vRCxXb/YA0n4E5dXDi5d1VAsrvUjEKDE7LrbXTVm0l16daBW0lznq04KsWTXIWit7m5nr76e+Vmkkl6xzuL8OL75kkvG5ZMZLYMvDIKqhAgy1HuE8osHguAzlkRZiHKg78MojS5X0LdFbeM4VAtVL+a0GxrA3rwD5RMBnLVboimKRQo7LqEB5zAXms4OzKJYRcAqje3wZ4CrofhvXLqP6VKFRgjNngK0+jg9gVyueDn0tnA18zH1dV+ml7+Loo10R7DuzpTPn7YsLk2lNXdrXJR7tsRWscMiruPtdlsRB+5qfrHDzB9LT30+ypkQRRf9fUICO5X7keWsgCBLZoWSQLmu2XNerrh8HDbovDzuhvCYUVIJU6sa2PCRB4NlyoK8KYUDy1LAznzMwrycE0eXfSlHgbSU5ZitAon/M8Ke3e3xVzb+ot/rV2M8E/frscFi6XMn9nJmMqXzQ6XR1GEPejjL2+MziY4BUxvIP7fP9JpKxHikEciX3Vp8lez1cg6E1Sm0Y=
X-Forefront-Antispam-Report:
	CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB03.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230031)(4636009)(346002)(39860400002)(376002)(396003)(136003)(230922051799003)(230273577357003)(230173577357003)(1800799012)(186009)(82310400011)(451199024)(64100799003)(46966006)(36840700001)(40470700004)(36860700001)(47076005)(2906002)(2616005)(26005)(70586007)(70206006)(41300700001)(31686004)(86362001)(40480700001)(40460700003)(31696002)(36756003)(82740400003)(81166007)(356005)(5660300002)(4326008)(316002)(16576012)(54906003)(110136005)(426003)(336012)(83380400001)(53546011)(6666004)(44832011)(478600001)(8936002)(8676002)(36900700001)(43740500002);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Jan 2024 07:04:46.4636
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 48965583-2229-4e60-a3f7-08dc1018190e
X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB03.amd.com]
X-MS-Exchange-CrossTenant-AuthSource:
	SN1PEPF00026369.namprd02.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH3PR12MB8511

Hi Ayan,

On 05/01/2024 12:21, Ayan Kumar Halder wrote:
> DBGOSLSR is emulated in the same way as its AArch64 variant (ie OSLSR_EL1).
> This is to ensure that DBGOSLSR.OSLK is 0, thus MDSCR_EL1.TXfull is treated
> as UNK/SBZP.
No need for this dot and yet another thus (it reads difficult).
You explained the OSLK bit, but you are not emulating this reg as ro_raz. Instead you
copied the code from AArch64 (ro_read_val) which also sets OSLM[1] bit. Do we want the same handling
given that Linux on arm32 does not make use of it?

> Thus only MDCCSR_EL0 can be emulated (which is DBGDSCRINT on arm32).
> DBGDSCRINT can be accessed at EL0 as DBGDSCREXT is emulated as RAZ (as
> DBGOSLSR.OSLK == 0). DBGDSCRINT.TXfull is set to 1.
Even though this patch comes after the one explaining the need of emulating DCC
I would still expect some reasoning here. Someone reading the vcpreg code and checking the commit
behind would not know the rationale behind this patch.

Allowing access DBGDSCRINT from EL0 is a fix, so I would make it clear by starting a sentence
with "Take the opportunity to fix the minimum EL for DBGDSCRINT ...".

> 
> Refer ARM DDI 0487J.a ID042523, G8.3.19, DBGDTRTXint
> "If TXfull is set to 1, set DTRTX to UNKNOWN".
> So, DBGDTR[TR]XINT is emulated as RAZ/WI.
> 
> Signed-off-by: Ayan Kumar Halder <ayan.kumar.halder@amd.com>
> ---
> Changes from
> 
> v1 :- 1. DBGDTR_EL0 does not emulate RXfull. This is to avoid giving the OS any
> indication that the RX buffer is full and is waiting to be read.
> 
> 2. In Arm32, DBGOSLSR is emulated. Also DBGDTRTXINT is emulated at EL0 only.
> 
> 3. Fixed the commit message and inline code comments.
> 
> v2 :- 1. Split the patch into two (separate patches for arm64 and arm32).
> 2. Fixed in line comments and style related issues.
> 3. Updated commit message to mention DBGDSCRINT handling.
> 
>  xen/arch/arm/include/asm/cpregs.h |  2 ++
>  xen/arch/arm/vcpreg.c             | 36 ++++++++++++++++++++++---------
>  2 files changed, 28 insertions(+), 10 deletions(-)
> 
> diff --git a/xen/arch/arm/include/asm/cpregs.h b/xen/arch/arm/include/asm/cpregs.h
> index 6b083de204..aec9e8f329 100644
> --- a/xen/arch/arm/include/asm/cpregs.h
> +++ b/xen/arch/arm/include/asm/cpregs.h
> @@ -75,6 +75,8 @@
>  #define DBGDIDR         p14,0,c0,c0,0   /* Debug ID Register */
>  #define DBGDSCRINT      p14,0,c0,c1,0   /* Debug Status and Control Internal */
>  #define DBGDSCREXT      p14,0,c0,c2,2   /* Debug Status and Control External */
> +#define DBGDTRRXINT     p14,0,c0,c5,0   /* Debug Data Transfer Register, Receive */
> +#define DBGDTRTXINT     p14,0,c0,c5,0   /* Debug Data Transfer Register, Transmit */
>  #define DBGVCR          p14,0,c0,c7,0   /* Vector Catch */
>  #define DBGBVR0         p14,0,c0,c0,4   /* Breakpoint Value 0 */
>  #define DBGBCR0         p14,0,c0,c0,5   /* Breakpoint Control 0 */
> diff --git a/xen/arch/arm/vcpreg.c b/xen/arch/arm/vcpreg.c
> index a2d0500704..474f872b5f 100644
> --- a/xen/arch/arm/vcpreg.c
> +++ b/xen/arch/arm/vcpreg.c
> @@ -493,11 +493,12 @@ void do_cp14_32(struct cpu_user_regs *regs, const union hsr hsr)
>       * ARMv8 (DDI 0487A.d): D1-1509 Table D1-58
>       *
>       * Unhandled:
> -     *    DBGOSLSR
>       *    DBGPRCR
>       */
>      case HSR_CPREG32(DBGOSLAR):
>          return handle_wo_wi(regs, regidx, cp32.read, hsr, 1);
> +    case HSR_CPREG32(DBGOSLSR):
> +        return handle_ro_read_val(regs, regidx, cp32.read, hsr, 1, 1U << 3);
>      case HSR_CPREG32(DBGOSDLR):
>          return handle_raz_wi(regs, regidx, cp32.read, hsr, 1);
>  
> @@ -509,8 +510,6 @@ void do_cp14_32(struct cpu_user_regs *regs, const union hsr hsr)
>       *
>       * Unhandled:
>       *    DBGDCCINT
> -     *    DBGDTRRXint
> -     *    DBGDTRTXint
>       *    DBGWFAR
>       *    DBGDTRTXext
>       *    DBGDTRRXext,
> @@ -549,11 +548,24 @@ void do_cp14_32(struct cpu_user_regs *regs, const union hsr hsr)
>      }
>  
>      case HSR_CPREG32(DBGDSCRINT):
> +    {
>          /*
> -         * Read-only register. Accessible by EL0 if DBGDSCRext.UDCCdis
> -         * is set to 0, which we emulated below.
> +         * Xen doesn't expose a real (or emulated) Debug Communications Channel
> +         * (DCC) to a domain. Yet the Arm ARM implies this is not an optional
> +         * feature. So some domains may start to probe it. For instance, the
> +         * HVC_DCC driver in Linux (since f377775dc083 and at least up to v6.7),
> +         * will try to write some characters and check if the transmit buffer
> +         * has emptied. By setting TX status bit to indicate the transmit buffer
> +         * is full. This we would hint the OS that the DCC is probably not
> +         * working.
> +         *
> +         * Bit 29: TX full
> +         *
> +         * Accessible by EL0 if DBGDSCRext.UDCCdis is set to 0, which we emulate
> +         * as RAZ/WI in the next case.
>           */
> -        return handle_ro_raz(regs, regidx, cp32.read, hsr, 1);
> +        return handle_ro_read_val(regs, regidx, cp32.read, hsr, 0, 1U << 29);
> +    }
>  
>      case HSR_CPREG32(DBGDSCREXT):
>          /*
> @@ -562,6 +574,13 @@ void do_cp14_32(struct cpu_user_regs *regs, const union hsr hsr)
>           */
>          return handle_raz_wi(regs, regidx, cp32.read, hsr, 1);
>  
> +#ifdef CONFIG_PARTIAL_EMULATION
> +    /* DBGDTR[TR]XINT share the same encoding */
> +    case HSR_CPREG32(DBGDTRTXINT):
> +        if ( opt_partial_emulation )
> +            return handle_raz_wi(regs, regidx, cp32.read, hsr, 0);
> +#endif
> +
>      case HSR_CPREG32(DBGVCR):
>      case HSR_CPREG32(DBGBVR0):
>      case HSR_CPREG32(DBGBCR0):
> @@ -659,10 +678,7 @@ void do_cp14_dbg(struct cpu_user_regs *regs, const union hsr hsr)
>       * ARMv8 (DDI 0487A.d): D1-1509 Table D1-58
>       *
>       * Unhandled:
> -     *    DBGDTRTXint
> -     *    DBGDTRRXint
> -     *
> -     * And all other unknown registers.
> +     * All unknown registers.
>       */
>      gdprintk(XENLOG_ERR,
>               "%s p14, %d, r%d, r%d, cr%d @ 0x%"PRIregister"\n",

Same comments apply as for the arm64 patch.

~Michal



From xen-devel-bounces@lists.xenproject.org Mon Jan 08 08:02:34 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 08 Jan 2024 08:02:34 +0000
Received: from list by lists.xenproject.org with outflank-mailman.663210.1033046 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMkaZ-0007Qp-9J; Mon, 08 Jan 2024 08:02:27 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 663210.1033046; Mon, 08 Jan 2024 08:02:27 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMkaZ-0007Qi-6r; Mon, 08 Jan 2024 08:02:27 +0000
Received: by outflank-mailman (input) for mailman id 663210;
 Mon, 08 Jan 2024 08:02:25 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=KH4C=IS=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rMkaX-0007Qa-8a
 for xen-devel@lists.xenproject.org; Mon, 08 Jan 2024 08:02:25 +0000
Received: from mail-lf1-x12b.google.com (mail-lf1-x12b.google.com
 [2a00:1450:4864:20::12b])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 3fa5da62-adfc-11ee-9b0f-b553b5be7939;
 Mon, 08 Jan 2024 09:02:21 +0100 (CET)
Received: by mail-lf1-x12b.google.com with SMTP id
 2adb3069b0e04-50e7dd8bce8so1565205e87.1
 for <xen-devel@lists.xenproject.org>; Mon, 08 Jan 2024 00:02:20 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 ck14-20020a056e02370e00b003608a649906sm929332ilb.43.2024.01.08.00.02.18
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 08 Jan 2024 00:02:19 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 3fa5da62-adfc-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1704700940; x=1705305740; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=IP0J/gc1cKkC2WQdgSoJCEL9qdkY5gJvuh1HTYVz+48=;
        b=ZiASWElWoLRql8ZQxUqBmDxSFMLfJ2K1X94u7eY3i3mJxRb9QY5SLDMMNCaqztDEhV
         ZfHFBrcHdgyDMFvjGC4tIkopwyLyK8+dR+xVY0M+RbrJJ57uMlFRcdroRuNYSyr8JahK
         eOLaqZeln7WT61lVAXdRdYSX9V7/Kq9pxR/HwPyjh5w9Ww+i2XbZshnueoEbNKYxd6IS
         KNcy7fIoGlmbUXN+ir1a3dGfMf9G8KbF1+8dwO28UsU98/j2r1f+mjHU0hJUK7LDxwky
         odBKbDrLZML6ak7I9XlNHYnLXU94XZHqSiA+7Wws1mK8wItkiqTg9VK0iZu+f4l9hm0Q
         VtYg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704700940; x=1705305740;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=IP0J/gc1cKkC2WQdgSoJCEL9qdkY5gJvuh1HTYVz+48=;
        b=BHD8KxUkdVWSFcH/gr7PxZisym6umVD2U2PQq7xm8+lz0J4aBFoYD6N9gM0v0shuYz
         RavNLY2B21Njri2vndWDIOCayswIiNI+sPkxqt7aO6mfFERuk7rBlEcia6UruR7kkXIC
         171Ssp5n0t2rU+/il7mfKkLJ8qjfbNCvGfTfFVAh1+FHL+OsEDV/FbjKOe1fe+8uwfNU
         cc77cs62BXIOSn5MUGAZ9PpPoizQyGo5NtdzMURMRBMkzghM+mtv4MIZek2O0gynWeys
         fszhdDExSoTgoz3qWb2nN3KKwIkQUNnnVU0qK+9jZfYpmlmUpeiQRZrkAm4KBFycG8El
         kpDA==
X-Gm-Message-State: AOJu0YzcnZz3i4bBTTssUU/0s9sy/e66gavq9bAtmDG7swaJmU1z01Jk
	4jbAoZ16RTVh08mNpG46E7XemtKfzwQj
X-Google-Smtp-Source: AGHT+IGjm6de7jJJXXe98z19VxmQOH9enykjklk+L2VFo8TI48OyGZQhYPa0+tXALcMHo+6KYZ2QWA==
X-Received: by 2002:a19:6556:0:b0:50e:b413:400f with SMTP id c22-20020a196556000000b0050eb413400fmr1127758lfj.49.1704700940097;
        Mon, 08 Jan 2024 00:02:20 -0800 (PST)
Message-ID: <192c393a-3702-4cc3-af60-e2711098ec6d@suse.com>
Date: Mon, 8 Jan 2024 09:02:19 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [XEN RFC] x86/uaccess: remove __{put,get}_user_bad()
Content-Language: en-US
To: Federico Serafini <federico.serafini@bugseng.com>
Cc: consulting@bugseng.com, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger.pau@citrix.com>, Wei Liu <wl@xen.org>,
 xen-devel@lists.xenproject.org, Stefano Stabellini <sstabellini@kernel.org>,
 Nicola Vetrini <nicola.vetrini@bugseng.com>,
 Andrew Cooper <andrew.cooper3@citrix.com>
References: <9cf852da1c03b614bf5010132c58a18adc2a4161.1703155225.git.federico.serafini@bugseng.com>
 <a2050ac1-e205-4d7f-b9b1-aa625136e63a@suse.com>
 <0c5bbfde-4cf0-4878-b1ee-ccc8eb775464@citrix.com>
 <eb53449bd6595ea0931460e62dd57b9c@bugseng.com>
 <1330c757-1ca3-4b07-898b-799cbfa67e8a@suse.com>
 <6a39fe3e-524f-4e39-81bc-ffb3d48ba306@bugseng.com>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <6a39fe3e-524f-4e39-81bc-ffb3d48ba306@bugseng.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 05.01.2024 17:19, Federico Serafini wrote:
> Hello everyone,
> 
> On 21/12/23 13:41, Jan Beulich wrote:
>> On 21.12.2023 13:01, Nicola Vetrini wrote:
>>> Hi Andrew,
>>>
>>> On 2023-12-21 12:03, Andrew Cooper wrote:
>>>> On 21/12/2023 10:58 am, Jan Beulich wrote:
>>>>> On 21.12.2023 11:53, Federico Serafini wrote:
>>>>>> Remove declarations of __put_user_bad() and __get_user_bad()
>>>>>> since they have no definition.
>>>>>> Replace their uses with a break statement to address violations of
>>>>>> MISRA C:2012 Rule 16.3 ("An unconditional `break' statement shall
>>>>>> terminate every switch-clause").
>>>>>> No functional change.
>>>>>>
>>>>>> Signed-off-by: Federico Serafini <federico.serafini@bugseng.com>
>>>>>> ---
>>>>>> Several violations of Rule 16.3 come from uses of macros
>>>>>> get_unsafe_size() and put_unsafe_size().
>>>>>> Looking at the macro definitions I found __get_user_bad() and
>>>>>> __put_user_bad().
>>>>>> I was wondering if instead of just adding the break statement I can
>>>>>> also remove
>>>>>> such functions which seem to not have a definition.
>>>>> No, you can't. Try introducing a caller which "accidentally" uses the
>>>>> wrong size. Without your change you'll observe the build failing (in
>>>>> a somewhat obscure way, but still), while with your change bad code
>>>>> will silently be generated.
>>>>
>>>> The construct here is deliberate.  It's a build time assertion that bad
>>>> sizes aren't used.
>>>>
>>>> __bitop_bad_size() and __xsm_action_mismatch_detected() are the same
>>>> pattern in other areas of code too, with the latter being more explicit
>>>> because of how it's wrapped by LINKER_BUG_ON().
>>>>
>>>>
>>>> It is slightly horrible, and not the most obvious construct for
>>>> newcomers.  If there's an alternative way to get a build assertion, we
>>>> could consider switching to a new pattern.
>>>
>>> would you be in favour of a solution with a BUILD_BUG_ON in the default
>>> branch followed by a break?
>>>
>>> default:
>>>       BUILD_BUG_ON(!size || size >=8 || (size & (size - 1)));
>>>       break;
>>
>> I don't think this would compile - BUILD_BUG_ON() wants a compile-time
>> constant passed.
> 
> What do you think about adding the following macro to compiler.h:
> 
> #define static_assert_unreachable(identifier) \
>      asm("unreachable " #identifier " reached")
> 
> It expands to an invalid assembly instruction that will lead to a
> customizable error message generated by the assembler instead of the
> linker (anticipating the error detection).
> 
> The use of this macro will indicate a program point considered
> unreachable (and as such removed) by the static analysis performed by 
> the compiler, even at an optimization level -O0.
> 
> An example of use is in the default case of put_unsafe_size():
> 
> default: static_assert_unreachable(default);
> 
> In case a wrong size will be used, the following message will be
> generated:
> 
> ./arch/x86/include/asm/uaccess.h: Assembler messages:
> ./arch/x86/include/asm/uaccess.h:257: Error: no such instruction: 
> `unreachable default reached'

Nice idea. To take it one step further, why not simply use the .error
assembler directive then?

> Note that adopting the macro and discussing its definition are two
> separate things:
> I think we can all agree on the fact that the use of such macro improves
> readability, so I would suggest its adoption.
> Whereas for its definition, if you don't like the invalid asm
> instruction, we could discuss for a different solution, for example,
> the following is something similar to what you are doing now:
> 
> #define static_assert_unreachable(identifier) \
>      extern void identifier(void);             \
>      identifier()
> 
> 
> Note also that the problem of the missing break statement (that violates
> Rule 16.3) is still present, it could be addressed by adding the break
> or deviating for such special cases, do you have any preferences?

Amend the new macro's expansion by unreachable()?

Jan


From xen-devel-bounces@lists.xenproject.org Mon Jan 08 08:36:15 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 08 Jan 2024 08:36:15 +0000
Received: from list by lists.xenproject.org with outflank-mailman.663215.1033057 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMl73-0004Nm-SA; Mon, 08 Jan 2024 08:36:01 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 663215.1033057; Mon, 08 Jan 2024 08:36:01 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMl73-0004Nf-PE; Mon, 08 Jan 2024 08:36:01 +0000
Received: by outflank-mailman (input) for mailman id 663215;
 Mon, 08 Jan 2024 08:36:00 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=KH4C=IS=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rMl72-0004K9-RI
 for xen-devel@lists.xenproject.org; Mon, 08 Jan 2024 08:36:00 +0000
Received: from mail-lf1-x136.google.com (mail-lf1-x136.google.com
 [2a00:1450:4864:20::136])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id f29b7a72-ae00-11ee-98ef-6d05b1d4d9a1;
 Mon, 08 Jan 2024 09:35:59 +0100 (CET)
Received: by mail-lf1-x136.google.com with SMTP id
 2adb3069b0e04-50e7dd8bce8so1593888e87.1
 for <xen-devel@lists.xenproject.org>; Mon, 08 Jan 2024 00:35:58 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 hr12-20020a056638700c00b00469582ed60csm2119072jab.61.2024.01.08.00.35.56
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 08 Jan 2024 00:35:58 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: f29b7a72-ae00-11ee-98ef-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1704702958; x=1705307758; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=aIowORne6QRmiqCxDUAkw24OgGHYe/UNRsyG8FeGT3w=;
        b=HBKkpBTMO86IXGHXy1Ym9wno1/N2wi4Re/QzqLp4BXJXD+RmCEwG+HmqHQssY/PJuA
         f5KMu1Hyrt8ZHBsSI6JIhtoh0FczSincgFH0hkI+qvUR8nhfIF7vlwbtGyiuSGjic9fV
         D9HxWHDpO5vctgDxjHROmAZowdOgPYgTkvpauAzzZYnM9kPBMf2nF45bmHlhucE4cL/i
         aUTj3m4NKYrzsyFfBKDxs8thi9YwgpC7yZUx9GlYJmyngxWTNufcrVES1BsUGx3ueWtv
         wJTpfW+XF4pRZrN4YSpqJFZGLrlxvFO/kntBug7hycZ2cWQG/PhBKgz/ez8cEt3CUf5P
         Eq9w==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704702958; x=1705307758;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=aIowORne6QRmiqCxDUAkw24OgGHYe/UNRsyG8FeGT3w=;
        b=jZABMSS1B41C7eDl4h8Ki02unGJOq0jx0E9X3gyvrzfjf25HOQCYJAcKH8HoQBPtHY
         hEslL207R6QLravm7EV27GYAvm9CL8mVFGpCNgg6/HLunKC6CEu6JE9eTzTEYgtJPjO/
         FifWmZG8Tz/2sWT1oKXvIvS0XC0M2Id/qh/3LsBkj0k236PnDeoYGvfU4TjCDLAkCgrE
         6/IrAEsFzzzWqZl1YiuCNkf/2Efuy0PAWlAaM9k5JiVXgKJjPjoxorhB4WzE8buaqFjj
         YFjzOsf85RS3iwmV9T1KZZXtg3ElgTx7ouBJntOf7GDQMkwgEX2pXmDZTTTJjZORoDhT
         Pm/g==
X-Gm-Message-State: AOJu0Yz4lZdhd7xacXbZYV0901X2c8zAEgPGioafKOUglFTZCCUHJnin
	pzV7gA//R6wQf8g0K0M906uq9baF83Cx
X-Google-Smtp-Source: AGHT+IFkP2dWLWUhtmVvSN8zZ1AOVHxKzGYVar7I2SM7TCNouKF0DQWyCB+zapU9tpJnpbW+le3g6Q==
X-Received: by 2002:ac2:5308:0:b0:50e:3dd8:8bee with SMTP id c8-20020ac25308000000b0050e3dd88beemr1029105lfh.58.1704702958382;
        Mon, 08 Jan 2024 00:35:58 -0800 (PST)
Message-ID: <da1d08a0-701b-447e-b171-a1ce92eba67b@suse.com>
Date: Mon, 8 Jan 2024 09:35:57 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [XEN RFC] x86/uaccess: remove __{put,get}_user_bad()
Content-Language: en-US
To: Stefano Stabellini <sstabellini@kernel.org>,
 Federico Serafini <federico.serafini@bugseng.com>
Cc: Nicola Vetrini <nicola.vetrini@bugseng.com>,
 Andrew Cooper <andrew.cooper3@citrix.com>, consulting@bugseng.com,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>, Wei Liu
 <wl@xen.org>, xen-devel@lists.xenproject.org
References: <9cf852da1c03b614bf5010132c58a18adc2a4161.1703155225.git.federico.serafini@bugseng.com>
 <a2050ac1-e205-4d7f-b9b1-aa625136e63a@suse.com>
 <0c5bbfde-4cf0-4878-b1ee-ccc8eb775464@citrix.com>
 <eb53449bd6595ea0931460e62dd57b9c@bugseng.com>
 <1330c757-1ca3-4b07-898b-799cbfa67e8a@suse.com>
 <6a39fe3e-524f-4e39-81bc-ffb3d48ba306@bugseng.com>
 <alpine.DEB.2.22.394.2401051445120.3675@ubuntu-linux-20-04-desktop>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <alpine.DEB.2.22.394.2401051445120.3675@ubuntu-linux-20-04-desktop>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 05.01.2024 23:48, Stefano Stabellini wrote:
> On Fri, 5 Jan 2024, Federico Serafini wrote:
>> Hello everyone,
>>
>> On 21/12/23 13:41, Jan Beulich wrote:
>>> On 21.12.2023 13:01, Nicola Vetrini wrote:
>>>> Hi Andrew,
>>>>
>>>> On 2023-12-21 12:03, Andrew Cooper wrote:
>>>>> On 21/12/2023 10:58 am, Jan Beulich wrote:
>>>>>> On 21.12.2023 11:53, Federico Serafini wrote:
>>>>>>> Remove declarations of __put_user_bad() and __get_user_bad()
>>>>>>> since they have no definition.
>>>>>>> Replace their uses with a break statement to address violations of
>>>>>>> MISRA C:2012 Rule 16.3 ("An unconditional `break' statement shall
>>>>>>> terminate every switch-clause").
>>>>>>> No functional change.
>>>>>>>
>>>>>>> Signed-off-by: Federico Serafini <federico.serafini@bugseng.com>
>>>>>>> ---
>>>>>>> Several violations of Rule 16.3 come from uses of macros
>>>>>>> get_unsafe_size() and put_unsafe_size().
>>>>>>> Looking at the macro definitions I found __get_user_bad() and
>>>>>>> __put_user_bad().
>>>>>>> I was wondering if instead of just adding the break statement I can
>>>>>>> also remove
>>>>>>> such functions which seem to not have a definition.
>>>>>> No, you can't. Try introducing a caller which "accidentally" uses the
>>>>>> wrong size. Without your change you'll observe the build failing (in
>>>>>> a somewhat obscure way, but still), while with your change bad code
>>>>>> will silently be generated.
>>>>>
>>>>> The construct here is deliberate.  It's a build time assertion that bad
>>>>> sizes aren't used.
>>>>>
>>>>> __bitop_bad_size() and __xsm_action_mismatch_detected() are the same
>>>>> pattern in other areas of code too, with the latter being more explicit
>>>>> because of how it's wrapped by LINKER_BUG_ON().
>>>>>
>>>>>
>>>>> It is slightly horrible, and not the most obvious construct for
>>>>> newcomers.  If there's an alternative way to get a build assertion, we
>>>>> could consider switching to a new pattern.
>>>>
>>>> would you be in favour of a solution with a BUILD_BUG_ON in the default
>>>> branch followed by a break?
>>>>
>>>> default:
>>>>       BUILD_BUG_ON(!size || size >=8 || (size & (size - 1)));
>>>>       break;
>>>
>>> I don't think this would compile - BUILD_BUG_ON() wants a compile-time
>>> constant passed.
>>
>> What do you think about adding the following macro to compiler.h:
>>
>> #define static_assert_unreachable(identifier) \
>>     asm("unreachable " #identifier " reached")
>>
>> It expands to an invalid assembly instruction that will lead to a
>> customizable error message generated by the assembler instead of the
>> linker (anticipating the error detection).
>>
>> The use of this macro will indicate a program point considered
>> unreachable (and as such removed) by the static analysis performed by the
>> compiler, even at an optimization level -O0.
>>
>> An example of use is in the default case of put_unsafe_size():
>>
>> default: static_assert_unreachable(default);
>>
>> In case a wrong size will be used, the following message will be
>> generated:
>>
>> ./arch/x86/include/asm/uaccess.h: Assembler messages:
>> ./arch/x86/include/asm/uaccess.h:257: Error: no such instruction: `unreachable
>> default reached'
>>
>>
>> Note that adopting the macro and discussing its definition are two
>> separate things:
>> I think we can all agree on the fact that the use of such macro improves
>> readability, so I would suggest its adoption.
>> Whereas for its definition, if you don't like the invalid asm
>> instruction, we could discuss for a different solution, for example,
>> the following is something similar to what you are doing now:
>>
>> #define static_assert_unreachable(identifier) \
>>     extern void identifier(void);             \
>>     identifier()
>>
>>
>> Note also that the problem of the missing break statement (that violates
>> Rule 16.3) is still present, it could be addressed by adding the break
>> or deviating for such special cases, do you have any preferences?
> 
> So overall for clarity you are suggesting:
> 
> 
> diff --git a/xen/arch/x86/include/asm/uaccess.h b/xen/arch/x86/include/asm/uaccess.h
> index 7443519d5b..7e7ef77e49 100644
> --- a/xen/arch/x86/include/asm/uaccess.h
> +++ b/xen/arch/x86/include/asm/uaccess.h
> @@ -208,7 +205,9 @@ do {                                                                       \
>      case 8:                                                                \
>          put_unsafe_asm(x, ptr, grd, retval, "q",  "", "ir", errret);       \
>          break;                                                             \
> -    default: __put_user_bad();                                             \
> +    default:                                                               \
> +        static_assert_unreachable(default);                                \
> +        break;                                                             \
>      }                                                                      \
>      clac();                                                                \
>  } while ( false )

While this is an improvement over __put_user_bad(), as we're re-working
this I think it would be helpful to make the resulting diagnostic point
people in the right direction: The way it is above, two different switch()
statements would both yield the same diagnostic, leaving one to guess. So
at least the function name and/or source file/line would likely better be
part of the diagnostic.

Jan


From xen-devel-bounces@lists.xenproject.org Mon Jan 08 08:43:23 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 08 Jan 2024 08:43:23 +0000
Received: from list by lists.xenproject.org with outflank-mailman.663221.1033067 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMlE7-0006K7-NF; Mon, 08 Jan 2024 08:43:19 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 663221.1033067; Mon, 08 Jan 2024 08:43:19 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMlE7-0006K0-Kf; Mon, 08 Jan 2024 08:43:19 +0000
Received: by outflank-mailman (input) for mailman id 663221;
 Mon, 08 Jan 2024 08:43:18 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=KH4C=IS=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rMlE6-0006Jt-Ib
 for xen-devel@lists.xenproject.org; Mon, 08 Jan 2024 08:43:18 +0000
Received: from mail-ej1-x62f.google.com (mail-ej1-x62f.google.com
 [2a00:1450:4864:20::62f])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id f72ee75d-ae01-11ee-9b0f-b553b5be7939;
 Mon, 08 Jan 2024 09:43:16 +0100 (CET)
Received: by mail-ej1-x62f.google.com with SMTP id
 a640c23a62f3a-a28ee72913aso442828266b.1
 for <xen-devel@lists.xenproject.org>; Mon, 08 Jan 2024 00:43:16 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 m10-20020a0566380aca00b0046d18e358b3sm2109389jab.63.2024.01.08.00.43.13
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 08 Jan 2024 00:43:15 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: f72ee75d-ae01-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1704703395; x=1705308195; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=N51FgBg7cRleoKQP0GgmnzFDKeG70I1Y4ktdJPwFM6k=;
        b=M7zttbUw1dbWXhWf+6GbjTTSgc7J4/kCg4lBlWmaOjhrtyd/2qiqbyqb5nszCPuoaD
         Rx1jKhCeqoGChbfdcrwnApa6TvF3bhYhIf6iya3r+sz6ci8fx1RpQJcc3lxEYrCFbFIo
         6nJpKoF53tSjclsZ5gk+GrxCRs+gcmXTCl0JmB9ai78ID7mDtC04EEThgL7R6y/xL/t1
         UPnAP6Te5IxosZSgm7OVBItr7VJyqdgGcYmutDFazW+tIBy67HCJouhYyRyEuw6NTdKD
         rMFxglwWQhnRqv04+sCLEgTIGLzWEXJ927iORdYTUAd+seY8AjaXxhEezaIXOOLWQ217
         8UsQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704703395; x=1705308195;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=N51FgBg7cRleoKQP0GgmnzFDKeG70I1Y4ktdJPwFM6k=;
        b=u6TGbcjMLGy8W5Q1+ke5o6+A3b4nzcyKEZN+1IjkCa2+3XrRw2BmZw+pTC5kvBSuMy
         YnJFFC4mnOyhHYhXhh5ku72/dnqve0qD00QihDeDqdcG1nZbmVW0sX9ozVq1/Z62QkAB
         LI2M+H6tI2RnydkNXNHYBmKN08RmzGlQEXv2eaklhG6eEpT/10yHwM/gHY/wkPqRyE7r
         xT/9/CltdmT3HMirW5ZqVRpl2bN1JIqUvfjLnPrzr7PU+BdEMwX1e9iJiupCARR6nmB7
         k/SLuFRT5gVE4MSrsK3lY0hOuAtvplW5bZs6w5TCj/iV5jEFPIL/cNsuXDEnIgpf6RzP
         Gd9g==
X-Gm-Message-State: AOJu0YziOhKmzK+Mmb/Z8H+MsNtpz64XbjJY0BQwxrukqjAHXGjhlhb/
	RSnOX1V327/e/4teni5q2wfq5GDctAUI
X-Google-Smtp-Source: AGHT+IFmvOf3ha8DlMcu99ccDjiKo/uWJem5B4i6FhiGI6HTIbt7mJhOtSW9kbIGylHDbvUADaFnbQ==
X-Received: by 2002:a17:906:494b:b0:a27:d3ee:2ef5 with SMTP id f11-20020a170906494b00b00a27d3ee2ef5mr5528819ejt.24.1704703395651;
        Mon, 08 Jan 2024 00:43:15 -0800 (PST)
Message-ID: <55c87867-8d1a-4bcf-92cc-f64a9960d1d8@suse.com>
Date: Mon, 8 Jan 2024 09:43:14 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v5 04/13] xen: extend domctl interface for cache coloring
Content-Language: en-US
To: Carlo Nonato <carlo.nonato@minervasys.tech>
Cc: Stefano Stabellini <sstabellini@kernel.org>, Julien Grall
 <julien@xen.org>, Bertrand Marquis <bertrand.marquis@arm.com>,
 Michal Orzel <michal.orzel@amd.com>,
 Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
 Andrew Cooper <andrew.cooper3@citrix.com>,
 George Dunlap <george.dunlap@citrix.com>, Wei Liu <wl@xen.org>,
 Marco Solieri <marco.solieri@minervasys.tech>, xen-devel@lists.xenproject.org
References: <20240102095138.17933-1-carlo.nonato@minervasys.tech>
 <20240102095138.17933-5-carlo.nonato@minervasys.tech>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <20240102095138.17933-5-carlo.nonato@minervasys.tech>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 02.01.2024 10:51, Carlo Nonato wrote:
> --- a/xen/arch/arm/llc-coloring.c
> +++ b/xen/arch/arm/llc-coloring.c
> @@ -9,6 +9,7 @@
>   *    Carlo Nonato <carlo.nonato@minervasys.tech>
>   */
>  #include <xen/errno.h>
> +#include <xen/guest_access.h>
>  #include <xen/keyhandler.h>
>  #include <xen/llc-coloring.h>
>  #include <xen/param.h>
> @@ -278,6 +279,22 @@ int dom0_set_llc_colors(struct domain *d)
>      return domain_check_colors(d);
>  }
>  
> +int domain_set_llc_colors_domctl(struct domain *d,
> +                                 const struct xen_domctl_set_llc_colors *config)
> +{
> +    if ( d->num_llc_colors )
> +        return -EEXIST;
> +
> +    if ( domain_alloc_colors(d, config->num_llc_colors) )
> +        return -ENOMEM;
> +
> +    if ( copy_from_guest(d->llc_colors, config->llc_colors,
> +                         config->num_llc_colors) )
> +        return -EFAULT;
> +
> +    return domain_check_colors(d);
> +}

What part of this is Arm-specific? I ask in particular because while you
place this in an Arm-specific source file, ...

> --- a/xen/common/domctl.c
> +++ b/xen/common/domctl.c
> @@ -8,6 +8,7 @@
>  
>  #include <xen/types.h>
>  #include <xen/lib.h>
> +#include <xen/llc-coloring.h>
>  #include <xen/err.h>
>  #include <xen/mm.h>
>  #include <xen/sched.h>
> @@ -858,6 +859,16 @@ long do_domctl(XEN_GUEST_HANDLE_PARAM(xen_domctl_t) u_domctl)
>                  __HYPERVISOR_domctl, "h", u_domctl);
>          break;
>  
> +    case XEN_DOMCTL_set_llc_colors:
> +        if ( !llc_coloring_enabled )
> +            break;
> +
> +        ret = domain_set_llc_colors_domctl(d, &op->u.set_llc_colors);
> +        if ( ret == -EEXIST )
> +            printk(XENLOG_ERR
> +                   "Can't set LLC colors on an already created domain\n");
> +        break;
> +
>      default:
>          ret = arch_do_domctl(op, d, u_domctl);
>          break;

... you don't handle the new domctl in Arm's arch_do_domctl().

> --- a/xen/include/public/domctl.h
> +++ b/xen/include/public/domctl.h
> @@ -21,7 +21,7 @@
>  #include "hvm/save.h"
>  #include "memory.h"
>  
> -#define XEN_DOMCTL_INTERFACE_VERSION 0x00000016
> +#define XEN_DOMCTL_INTERFACE_VERSION 0x00000017

There's no need for such a bump when ...

> @@ -1190,6 +1190,12 @@ struct xen_domctl_vmtrace_op {
>  typedef struct xen_domctl_vmtrace_op xen_domctl_vmtrace_op_t;
>  DEFINE_XEN_GUEST_HANDLE(xen_domctl_vmtrace_op_t);
>  
> +struct xen_domctl_set_llc_colors {
> +    /* IN LLC coloring parameters */
> +    unsigned int num_llc_colors;
> +    XEN_GUEST_HANDLE_64(uint) llc_colors;
> +};
> +
>  struct xen_domctl {
>      uint32_t cmd;
>  #define XEN_DOMCTL_createdomain                   1
> @@ -1277,6 +1283,7 @@ struct xen_domctl {
>  #define XEN_DOMCTL_vmtrace_op                    84
>  #define XEN_DOMCTL_get_paging_mempool_size       85
>  #define XEN_DOMCTL_set_paging_mempool_size       86
> +#define XEN_DOMCTL_set_llc_colors                87
>  #define XEN_DOMCTL_gdbsx_guestmemio            1000
>  #define XEN_DOMCTL_gdbsx_pausevcpu             1001
>  #define XEN_DOMCTL_gdbsx_unpausevcpu           1002
> @@ -1339,6 +1346,7 @@ struct xen_domctl {
>          struct xen_domctl_vuart_op          vuart_op;
>          struct xen_domctl_vmtrace_op        vmtrace_op;
>          struct xen_domctl_paging_mempool    paging_mempool;
> +        struct xen_domctl_set_llc_colors    set_llc_colors;
>          uint8_t                             pad[128];
>      } u;
>  };

... all you do is add a new domctl.

As to the new struct - you'll want to use uint<N>_t there, not
unsigned int.

Jan


From xen-devel-bounces@lists.xenproject.org Mon Jan 08 08:47:10 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 08 Jan 2024 08:47:10 +0000
Received: from list by lists.xenproject.org with outflank-mailman.663225.1033077 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMlHo-0007c8-7A; Mon, 08 Jan 2024 08:47:08 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 663225.1033077; Mon, 08 Jan 2024 08:47:08 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMlHo-0007c1-4M; Mon, 08 Jan 2024 08:47:08 +0000
Received: by outflank-mailman (input) for mailman id 663225;
 Mon, 08 Jan 2024 08:47:07 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=KH4C=IS=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rMlHn-0007Yg-1p
 for xen-devel@lists.xenproject.org; Mon, 08 Jan 2024 08:47:07 +0000
Received: from mail-lj1-x236.google.com (mail-lj1-x236.google.com
 [2a00:1450:4864:20::236])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 7f9545de-ae02-11ee-9b0f-b553b5be7939;
 Mon, 08 Jan 2024 09:47:05 +0100 (CET)
Received: by mail-lj1-x236.google.com with SMTP id
 38308e7fff4ca-2cd46e7ae8fso12662411fa.1
 for <xen-devel@lists.xenproject.org>; Mon, 08 Jan 2024 00:47:05 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 6-20020a056e020ca600b00360039199cesm2385053ilg.3.2024.01.08.00.47.02
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 08 Jan 2024 00:47:04 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 7f9545de-ae02-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1704703624; x=1705308424; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=23SIozuRFcdxuTmn/9ayH7irJdmJq3+AJNjBt8lsocI=;
        b=HcmzkQZQl2kqNe5E1w9h1RmojXe4/1Fg5XObgGyazn0O3VltfRqar51d+qbOWO8meV
         zIBgvie8xhGz5QOjSnfhjPJRPr0wh8pQdz4XIpRJcdlDD2dsZCewtQ9HJJyxogctlAd3
         e+0qH0xzogI1d2NnrroO0zjlvezTlvRtBVjQFzwRcJ42ZqT3FFRCJ6IhMpOYyfIp6wZi
         iLrFQx0nJa9i/BSlWELungGEhNVY0SVWIpTlyxXoPFm5/GXnmsH8vXIIDDYbKV2P22QW
         YKwxWq5SWAOlKmR6viyY2ucQ9KrmnVY0w17Hps1+mTtz7PoHWpdx0eD4vRjHHaR/YnE1
         NlBQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704703624; x=1705308424;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=23SIozuRFcdxuTmn/9ayH7irJdmJq3+AJNjBt8lsocI=;
        b=ZopodJAh8rakbFmaFrSYPRq+XfE7fLBc35UJJDoDvxg0W8QY2dP9ljQXaryAggO/l/
         0UK2s0YfnNWeQ1ntfQq+ZSZgoCtQ9IHvXWLXYri/N3gIzCof4b+0ybrARXKfKO+hagFl
         86feB9k1CsjJNWFR21T7xDVgSYrPTpORoznx5uuSTK0LE15wjqAaDro53XY8GjuRCbuA
         wWIPEiVBd2YiOzT+3KbkSTUv1yRC9O2087zujiSGmiSUb8yLXVPLWAApONGc9bfEB6Nn
         ejtVLsjkYOtjJmZyvjEvGOCz5qpFNc5xGSfaSCmOyXxcKSjoRP7c2z3k+TQdNqDmE7Y3
         FXtA==
X-Gm-Message-State: AOJu0YztoGegr3KPN8pd//gzndxWoq7rJWXybzWCYhMdMazzVFDEFDqY
	SU/LqeDtDeyq0XzRNwHT74ZJ5+JPxe1V
X-Google-Smtp-Source: AGHT+IH6ugZiTdpg8qD/44VBqbP5ZhOyMcTykCOrVQYeAbKpk9QvPjZ8yUlSztskPf5BfQjRIvvbGQ==
X-Received: by 2002:a05:6512:10c5:b0:50e:44c9:b839 with SMTP id k5-20020a05651210c500b0050e44c9b839mr870598lfg.47.1704703624483;
        Mon, 08 Jan 2024 00:47:04 -0800 (PST)
Message-ID: <242dbf1f-ef3e-42cc-906e-5c5bb01d8e31@suse.com>
Date: Mon, 8 Jan 2024 09:47:03 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [RFC XEN PATCH v4 2/5] x86/pvh: Allow (un)map_pirq when caller
 isn't DOMID_SELF
Content-Language: en-US
To: Stefano Stabellini <sstabellini@kernel.org>,
 Jiqian Chen <Jiqian.Chen@amd.com>
Cc: xen-devel@lists.xenproject.org, Andrew Cooper
 <andrew.cooper3@citrix.com>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger.pau@citrix.com>, Wei Liu <wl@xen.org>,
 George Dunlap <george.dunlap@citrix.com>, Julien Grall <julien@xen.org>,
 Anthony PERARD <anthony.perard@citrix.com>, Juergen Gross <jgross@suse.com>,
 Stewart Hildebrand <Stewart.Hildebrand@amd.com>,
 Huang Rui <Ray.Huang@amd.com>
References: <20240105070920.350113-1-Jiqian.Chen@amd.com>
 <20240105070920.350113-3-Jiqian.Chen@amd.com>
 <alpine.DEB.2.22.394.2401051639240.3675@ubuntu-linux-20-04-desktop>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <alpine.DEB.2.22.394.2401051639240.3675@ubuntu-linux-20-04-desktop>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 06.01.2024 01:46, Stefano Stabellini wrote:
> On Fri, 5 Jan 2024, Jiqian Chen wrote:
>> @@ -72,8 +73,30 @@ long hvm_physdev_op(int cmd, XEN_GUEST_HANDLE_PARAM(void) arg)
>>  
>>      switch ( cmd )
>>      {
>> -    case PHYSDEVOP_map_pirq:
>> -    case PHYSDEVOP_unmap_pirq:
>> +    case PHYSDEVOP_map_pirq: {
>> +        physdev_map_pirq_t map;
>> +
>> +        if ( copy_from_guest(&map, arg, 1) != 0 )
>> +            return -EFAULT;
>> +
>> +        if ( !has_pirq(currd) && map.domid == DOMID_SELF )
>> +            return -ENOSYS;
> 
> This looks OK to me although there is already another copy_from_guest in
> do_physdev_op, but I don't see an easy way to make it better.

How can double reads of hypercall args ever be okay? The new check clearly
needs to be inserted in the code path where the structure is being read
already anyway.

Jan


From xen-devel-bounces@lists.xenproject.org Mon Jan 08 08:50:50 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 08 Jan 2024 08:50:50 +0000
Received: from list by lists.xenproject.org with outflank-mailman.663228.1033086 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMlLJ-0000bv-MF; Mon, 08 Jan 2024 08:50:45 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 663228.1033086; Mon, 08 Jan 2024 08:50:45 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMlLJ-0000bo-Jd; Mon, 08 Jan 2024 08:50:45 +0000
Received: by outflank-mailman (input) for mailman id 663228;
 Mon, 08 Jan 2024 08:50:44 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=KH4C=IS=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rMlLI-0000bi-4E
 for xen-devel@lists.xenproject.org; Mon, 08 Jan 2024 08:50:44 +0000
Received: from mail-lj1-x230.google.com (mail-lj1-x230.google.com
 [2a00:1450:4864:20::230])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 01902622-ae03-11ee-98ef-6d05b1d4d9a1;
 Mon, 08 Jan 2024 09:50:43 +0100 (CET)
Received: by mail-lj1-x230.google.com with SMTP id
 38308e7fff4ca-2cce6c719caso15711091fa.2
 for <xen-devel@lists.xenproject.org>; Mon, 08 Jan 2024 00:50:43 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 v22-20020a5ec116000000b007bd82040498sm525036iol.6.2024.01.08.00.50.40
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 08 Jan 2024 00:50:42 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 01902622-ae03-11ee-98ef-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1704703842; x=1705308642; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=B4csWNLnnG9+bQHdS/9ZZ5TOsfFWVW9lY6Bdn1Ooero=;
        b=Nc+cSZDaxsY/u1DMUXX4/TDjzDKQxUhG2Echf1QGxyFDxSoycUJJrKP7yWZuWr7UEW
         gqWVp/Ixj07PyEzKM1A5Tgww/CuJ8YMyagUJ1wW7OBZk2UbIqHDIA0D5r2n4HiFjumD2
         cc4RbdmWHNxQF4XPcVKzx7UZun8Jc9cL1h4+BeV1lpNrz17yp0VQYpBDQV6WjYQA8Gmh
         PU0c0KKd0dQHKydvSI7SFoLbtGxhN2a1OV1xm2uaG8z4oiIvNiwUHFuYNJN+a2T7c2DC
         pNjrJ19PIMMtmaIWPBolZRZ2w3kL9izdeT9oPyCQ5XJFkKkRyCIu8oLPzV6w2jUtWcN4
         1IkQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704703842; x=1705308642;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=B4csWNLnnG9+bQHdS/9ZZ5TOsfFWVW9lY6Bdn1Ooero=;
        b=ne9AQRnOhqMojSBW/qaLy63gQuY78/7reav8XqYMKMr8B0GCeyDHJnV5AIQzKWz2Xf
         xWAeE4OlBpP1VHgPWJI6b00LT/+vzpkwVHu5PMGKR1MQDbypomosKokBVJj+G4UOUxBR
         RDYjI0XKHbXHtAyXS0pPgz4dPjpYxVcLEWKneJqXSENQ+RpQo4hAA7lVuqUFU01pEN0T
         08UvhxoWXKw5SW9jORJ7/aSE7VX2gUd1nepZVFnGI42Add2JCeappbAe4DC0WKuiT1fw
         HAjkioRSq8+MVbtaFPHW6y6QZ0nPJP6JXBEi2iKRGFS4OJfpHZ0Z2+iFREiDtQxgQv9Y
         Ya3w==
X-Gm-Message-State: AOJu0Yxx4nv2+3HPc2L9QZ5EA06FSjuMtxfU75gxb9hVLAhaPGQudfdS
	KqW6Tr/7mBHyXzyds6t9FIroCwJWHPWz
X-Google-Smtp-Source: AGHT+IFw3ArwREfnJ0Cfk0upXVFNFMgMsy5Gypj7BSgJJU+y00+q7FUrx5dDCwXe5zaKVGudWEibmA==
X-Received: by 2002:a05:6512:3a86:b0:50e:c6f3:ab93 with SMTP id q6-20020a0565123a8600b0050ec6f3ab93mr167889lfu.5.1704703842599;
        Mon, 08 Jan 2024 00:50:42 -0800 (PST)
Message-ID: <5db2cde7-7fb1-460f-ab78-c462c3a1d46e@suse.com>
Date: Mon, 8 Jan 2024 09:50:41 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [RFC XEN PATCH v4 3/5] x86/pvh: Add PHYSDEVOP_setup_gsi for PVH
 dom0
Content-Language: en-US
To: Stefano Stabellini <sstabellini@kernel.org>,
 Jiqian Chen <Jiqian.Chen@amd.com>
Cc: xen-devel@lists.xenproject.org, Andrew Cooper
 <andrew.cooper3@citrix.com>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger.pau@citrix.com>, Wei Liu <wl@xen.org>,
 George Dunlap <george.dunlap@citrix.com>, Julien Grall <julien@xen.org>,
 Anthony PERARD <anthony.perard@citrix.com>, Juergen Gross <jgross@suse.com>,
 Stewart Hildebrand <Stewart.Hildebrand@amd.com>,
 Huang Rui <Ray.Huang@amd.com>
References: <20240105070920.350113-1-Jiqian.Chen@amd.com>
 <20240105070920.350113-4-Jiqian.Chen@amd.com>
 <alpine.DEB.2.22.394.2401051651270.3675@ubuntu-linux-20-04-desktop>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <alpine.DEB.2.22.394.2401051651270.3675@ubuntu-linux-20-04-desktop>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 06.01.2024 01:54, Stefano Stabellini wrote:
> On Fri, 5 Jan 2024, Jiqian Chen wrote:
>> On PVH dom0, the gsis don't get registered, but
>> the gsi of a passthrough device must be configured for it to
>> be able to be mapped into a hvm domU.
>> On Linux kernel side, it calles PHYSDEVOP_setup_gsi for
>> passthrough devices to register gsi when dom0 is PVH.
>> So, add PHYSDEVOP_setup_gsi for above purpose.
>>
>> Co-developed-by: Huang Rui <ray.huang@amd.com>
>> Signed-off-by: Jiqian Chen <Jiqian.Chen@amd.com>
>> ---
>>  xen/arch/x86/hvm/hypercall.c | 6 ++++++
>>  1 file changed, 6 insertions(+)
>>
>> diff --git a/xen/arch/x86/hvm/hypercall.c b/xen/arch/x86/hvm/hypercall.c
>> index 632a68be3cc4..e27d3ca15185 100644
>> --- a/xen/arch/x86/hvm/hypercall.c
>> +++ b/xen/arch/x86/hvm/hypercall.c
>> @@ -97,6 +97,12 @@ long hvm_physdev_op(int cmd, XEN_GUEST_HANDLE_PARAM(void) arg)
>>          break;
>>      }
>>  
>> +    case PHYSDEVOP_setup_gsi:
>> +        if ( is_hardware_domain(currd) && !has_pirq(currd) )
>> +            break;
>> +        else
>> +            return -ENOSYS;
> 
> I am not sure what is the best "if" check for this situation but I am
> guessing we don't need has_pirq(currd). Maybe this is sufficient:
> 
> if ( is_hardware_domain(currd) )
>     break;
> else
>     return -ENOSYS;

Maybe

    if ( !is_hardware_domain(currd) )
        return -EOPNOTSUPP;
    ASSERT(!has_pirq(currd));
    break;

? What I primarily dislike in both earlier proposals is the (imo
confusing) use of "else".

Jan


From xen-devel-bounces@lists.xenproject.org Mon Jan 08 08:55:31 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 08 Jan 2024 08:55:31 +0000
Received: from list by lists.xenproject.org with outflank-mailman.663254.1033112 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMlPu-000293-HG; Mon, 08 Jan 2024 08:55:30 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 663254.1033112; Mon, 08 Jan 2024 08:55:30 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMlPu-00028u-El; Mon, 08 Jan 2024 08:55:30 +0000
Received: by outflank-mailman (input) for mailman id 663254;
 Mon, 08 Jan 2024 08:55:29 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=KH4C=IS=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rMlPt-00028U-Ac
 for xen-devel@lists.xenproject.org; Mon, 08 Jan 2024 08:55:29 +0000
Received: from mail-lf1-x12b.google.com (mail-lf1-x12b.google.com
 [2a00:1450:4864:20::12b])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id abb48026-ae03-11ee-98ef-6d05b1d4d9a1;
 Mon, 08 Jan 2024 09:55:28 +0100 (CET)
Received: by mail-lf1-x12b.google.com with SMTP id
 2adb3069b0e04-50e7d6565b5so1532000e87.0
 for <xen-devel@lists.xenproject.org>; Mon, 08 Jan 2024 00:55:28 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 dm25-20020a0566023b9900b007baf1948186sm2075449iob.42.2024.01.08.00.55.25
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 08 Jan 2024 00:55:27 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: abb48026-ae03-11ee-98ef-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1704704128; x=1705308928; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=5kKkNglLrXCPyfxncnasRyBRnEOFCO9bUyiX7HOUeYA=;
        b=PEXzic0wDg806uzEYw3L7YceVXchfir96drU95xTdY49UAWOZDkhFn322vEIUGQ/nk
         OhzAGUzRLQG26FoEF0UE4Z4K1MuhOD1EUJ/WUmxrTO3mJX/4V2iEf0+XOyJW7bKK2676
         rt1PpgwaKV4pqZCb+le/BPftRPKC0O2btYMRHCqzUl5Q+d7LcEpp3OvaE902Kv+y46x1
         FGjC/daHSdTdWm/5d4JG0ydjTSbEPfSKxLzmxTIW/RjRHQqrFYOgcV8X8idY+UcRWLss
         mACUyk07WMEFcVx8bRZs96rX7ql+ovC9aB2GN5Jqqc6/w/JT+wRvz46j89L69JOHpbtJ
         KIVQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704704128; x=1705308928;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=5kKkNglLrXCPyfxncnasRyBRnEOFCO9bUyiX7HOUeYA=;
        b=Fjx1dy+gT1m1nlczTBpYyhOPvnH0xVfrH9DLlFgpgFq+MvqtcqEy5dQ02fMDoDVogl
         16a13SeQnOD/Q/IXAFy4unBLmAuKn9FaeOIGhk8H07QZqTXhsJc+/dfcaNUu6Rma7eRl
         52jFWFQHs9rQhR2vI9BCUFe/fOBwCaOYtFaKfIdgXO4JDZmqcdGhesKPwyFv7mRmosfP
         57Hg5fDqz24wsFYbUid9sBh5L2XDPE1tZnQ0ZzX+UdMer+yxm2OMOhAY7gf3JgGfSJkz
         aS4lXIPR36/dFBEdWF6scm1X6pky46HzLwG+acWyAt/CpBq5Lqm+qBWJPaH1fyRXPuIv
         DX6Q==
X-Gm-Message-State: AOJu0YxP4DOKnyM9HYw5it2z93B6hEQPv0TSxx5fSSbR+L1GxTxSGFxz
	WMvdMw5u1B0xVnr4/uuSPgNUec6Ptjmq
X-Google-Smtp-Source: AGHT+IHMNQcIvGDLWu2mOVLNflnXjHcNd0gjgKl/jE3YbB+qR7gatCQJ9KJSalaI2hAXj/LAVDMjEQ==
X-Received: by 2002:a19:6d15:0:b0:50e:7555:1ea6 with SMTP id i21-20020a196d15000000b0050e75551ea6mr954278lfc.11.1704704128002;
        Mon, 08 Jan 2024 00:55:28 -0800 (PST)
Message-ID: <882bd39a-8a29-4f4f-b64f-765c4858b1c8@suse.com>
Date: Mon, 8 Jan 2024 09:55:26 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [RFC XEN PATCH v4 4/5] domctl: Use gsi to grant/revoke irq
 permission
Content-Language: en-US
To: Stefano Stabellini <sstabellini@kernel.org>,
 Jiqian Chen <Jiqian.Chen@amd.com>
Cc: xen-devel@lists.xenproject.org, Andrew Cooper
 <andrew.cooper3@citrix.com>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger.pau@citrix.com>, Wei Liu <wl@xen.org>,
 George Dunlap <george.dunlap@citrix.com>, Julien Grall <julien@xen.org>,
 Anthony PERARD <anthony.perard@citrix.com>, Juergen Gross <jgross@suse.com>,
 Stewart Hildebrand <Stewart.Hildebrand@amd.com>,
 Huang Rui <Ray.Huang@amd.com>
References: <20240105070920.350113-1-Jiqian.Chen@amd.com>
 <20240105070920.350113-5-Jiqian.Chen@amd.com>
 <alpine.DEB.2.22.394.2401051702200.3675@ubuntu-linux-20-04-desktop>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <alpine.DEB.2.22.394.2401051702200.3675@ubuntu-linux-20-04-desktop>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 06.01.2024 02:08, Stefano Stabellini wrote:
> On Fri, 5 Jan 2024, Jiqian Chen wrote:
>> --- a/tools/libs/light/libxl_pci.c
>> +++ b/tools/libs/light/libxl_pci.c
>> @@ -1418,6 +1418,7 @@ static void pci_add_dm_done(libxl__egc *egc,
>>      unsigned long long start, end, flags, size;
>>      int irq, i;
>>      int r;
>> +    int gsi;
>>      uint32_t flag = XEN_DOMCTL_DEV_RDM_RELAXED;
>>      uint32_t domainid = domid;
>>      bool isstubdom = libxl_is_stubdom(ctx, domid, &domainid);
>> @@ -1486,6 +1487,7 @@ static void pci_add_dm_done(libxl__egc *egc,
>>          goto out_no_irq;
>>      }
>>      if ((fscanf(f, "%u", &irq) == 1) && irq) {
>> +        gsi = irq;
> 
> A question for Roger and Jan: are we always guaranteed that gsi == irq
> (also in the PV case)?

Iirc for IO-APIC based IRQs that's always the case; for MSI ones there
simply is no GSI, and Xen's IRQ number then normally isn't the same as
the pIRQ a domain would see.

Jan


From xen-devel-bounces@lists.xenproject.org Mon Jan 08 09:15:55 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 08 Jan 2024 09:15:55 +0000
Received: from list by lists.xenproject.org with outflank-mailman.663270.1033123 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMljE-0002Li-6V; Mon, 08 Jan 2024 09:15:28 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 663270.1033123; Mon, 08 Jan 2024 09:15:28 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMljE-0002La-1i; Mon, 08 Jan 2024 09:15:28 +0000
Received: by outflank-mailman (input) for mailman id 663270;
 Mon, 08 Jan 2024 09:15:26 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=xshC=IS=amd.com=Jiqian.Chen@srs-se1.protection.inumbo.net>)
 id 1rMljC-0002LU-0C
 for xen-devel@lists.xenproject.org; Mon, 08 Jan 2024 09:15:26 +0000
Received: from NAM10-DM6-obe.outbound.protection.outlook.com
 (mail-dm6nam10on20630.outbound.protection.outlook.com
 [2a01:111:f400:7e88::630])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 73f2fb6b-ae06-11ee-98ef-6d05b1d4d9a1;
 Mon, 08 Jan 2024 10:15:24 +0100 (CET)
Received: from BL1PR12MB5849.namprd12.prod.outlook.com (2603:10b6:208:384::18)
 by SA1PR12MB6946.namprd12.prod.outlook.com (2603:10b6:806:24d::17)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7159.21; Mon, 8 Jan
 2024 09:15:20 +0000
Received: from BL1PR12MB5849.namprd12.prod.outlook.com
 ([fe80::969f:11b3:5ec2:3aa1]) by BL1PR12MB5849.namprd12.prod.outlook.com
 ([fe80::969f:11b3:5ec2:3aa1%3]) with mapi id 15.20.7159.020; Mon, 8 Jan 2024
 09:15:20 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 73f2fb6b-ae06-11ee-98ef-6d05b1d4d9a1
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=ndoi/fgsdvH8H20o1sJd9mDbchMngAY78SEjfLsqJMfUMimp8mAzxAFsSngQcJd6Ybyb4OXMm6wxBYUhaUV8N5+O5U2wbeA0CrFdlFPMJDsI9u+h03rZH3tds9/jfc9earVGgYEucVHELHzhbokL+bqgxzE5g/84MkbyhGpQup+sov7UJJ3JAZCQ0i2+eH8A0ZhPzIvlvZP2EPSxvyFUX4vIgB5epUClWYZKxjXfZBU0X20ufWWXsQhVbp7LZaueAK8Ok9FRTxgkr3CJ3CjZmMhg4DEBJP7HsuRZ3iwwrx2idbV6tZaff3IxYBBAiJbxQsiwTrENE9SUMknN5CYCug==
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=c2lDFpIWBiF6MdPFFbAL7eEpdXv/FdOsw6GpGUxmexs=;
 b=lCDuNaktE/1ZG4nQlRogq5CPPAC49Lodh838Wz+J5+8DChlW3o7NpRg2e/NKXLqI5N27Ck9As9SW09AJiYbMZld3dCozoW6q5Pbb4/sgM8s2xqROMViaTjVNttkZeYWYUARUa03focH/MgiR4BE6ZElCDPH/EcjZRsiTDWODqEPpIa7wBckXFz1zuuA9z5ampaDT5vQfjxJJzGufGDwG7mSPbcm2WUIz4CCcft6+9t/eQYajrtGK1bwx7cvZRvRfw54uqY1KwC6Lhtkn+ImHSdcZgSMg8DCe0vzK5YXwIA5fO+rc2SZG2oWBbZKZ/q0+aAgNuHKqHsKQQC5g9sBAmw==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=amd.com; dmarc=pass action=none header.from=amd.com; dkim=pass
 header.d=amd.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=c2lDFpIWBiF6MdPFFbAL7eEpdXv/FdOsw6GpGUxmexs=;
 b=DxxqfnfupPIa68bjgeGEEkozzOmCDbnvI4IiqM0yWTr+AB5d8qTW0ZN1Hyqzu+isxq6iU8R9LEMACKViP6cTonJBl1jMZPeBbqQVjjL+k1FXVKggkV7u9klJR4UQgBb1ii8bPKcDcPzrPOMmLNhkkrGVkL90r1veWvE3e23JdgA=
From: "Chen, Jiqian" <Jiqian.Chen@amd.com>
To: Jan Beulich <jbeulich@suse.com>, Stefano Stabellini
	<sstabellini@kernel.org>
CC: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>, Andrew
 Cooper <andrew.cooper3@citrix.com>, =?utf-8?B?Um9nZXIgUGF1IE1vbm7DqQ==?=
	<roger.pau@citrix.com>, Wei Liu <wl@xen.org>, George Dunlap
	<george.dunlap@citrix.com>, Julien Grall <julien@xen.org>, Anthony PERARD
	<anthony.perard@citrix.com>, Juergen Gross <jgross@suse.com>, "Hildebrand,
 Stewart" <Stewart.Hildebrand@amd.com>, "Huang, Ray" <Ray.Huang@amd.com>,
	"Chen, Jiqian" <Jiqian.Chen@amd.com>
Subject: Re: [RFC XEN PATCH v4 2/5] x86/pvh: Allow (un)map_pirq when caller
 isn't DOMID_SELF
Thread-Topic: [RFC XEN PATCH v4 2/5] x86/pvh: Allow (un)map_pirq when caller
 isn't DOMID_SELF
Thread-Index: AQHaP6YuSUk29qg8QEWwkYk64ozIULDL9CiAgAOrDICAAImKAA==
Date: Mon, 8 Jan 2024 09:15:20 +0000
Message-ID:
 <BL1PR12MB58495C90CEC83B6EF66651A0E76B2@BL1PR12MB5849.namprd12.prod.outlook.com>
References: <20240105070920.350113-1-Jiqian.Chen@amd.com>
 <20240105070920.350113-3-Jiqian.Chen@amd.com>
 <alpine.DEB.2.22.394.2401051639240.3675@ubuntu-linux-20-04-desktop>
 <242dbf1f-ef3e-42cc-906e-5c5bb01d8e31@suse.com>
In-Reply-To: <242dbf1f-ef3e-42cc-906e-5c5bb01d8e31@suse.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-ms-exchange-imapappendstamp: IA1PR12MB8494.namprd12.prod.outlook.com
 (15.20.7181.000)
authentication-results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=amd.com;
x-ms-exchange-messagesentrepresentingtype: 1
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: BL1PR12MB5849:EE_|SA1PR12MB6946:EE_
x-ms-office365-filtering-correlation-id: f422dd47-411e-42e1-66f0-08dc102a5644
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam: BCL:0;
x-microsoft-antispam-message-info:
 cqreTQsgN+GegWDjL4jxVxItwUfI5taBHKPyAf6ScR2iMSPR9rFHh+zzScf4L72r2dozBW2YJUBlbA/jmnbjMcBrFY+Jn13rMyHE6+8NdL0kCDDQGG6bjfoM14RjBIdyr+P/LWh660n89BdDqTAqQiFxTbjqcSYXAJy3/x5QzmTpfOEHHMezfqqqROUiis96tTVlq1YsPD0NFxFF1CBg56dTL7YBdetkjXGb5+Vpq5KLrgWSE70eM9jeZrHaHzVY3Y5BIm9vjy4bul9HdeNU2sPiCLoRZU9rJVyKNsgG0CDGhMP5CCotaw7aLJNzXHs4OeGMIzBw09oZ1FvhWQtgoiTIS5O8HatkCFOBy90x6IhSXl6uonpAwGK9AEDPzv1NwGtIRpSM1JsvFp5GZX5ViaURB7QwPQwJoL2lJPJPZQJ5Jig2Nj/iOJvkZ/tSa437Y7ZuW6MZgMfxZy3cI68Tz0K/fp4d2UKbg8WeC7M5RcsHnl4VECzkvRrw7mUSU96DKLgsv7IfSIQ1IutXomSjYxBHU31Eubi+TOFS58cuDfbMSG4D1QeyT7fHvMpWLLqKbrFGE4cxRBX1+FyHGejyxEj+WT3eIje9EPInX4CG8T3YVjmF9OG5o2kdS5maDcja
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BL1PR12MB5849.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230031)(366004)(39860400002)(136003)(376002)(346002)(396003)(230922051799003)(1800799012)(186009)(451199024)(64100799003)(7416002)(2906002)(26005)(38070700009)(76116006)(64756008)(66446008)(66476007)(66556008)(66946007)(41300700001)(122000001)(33656002)(55016003)(5660300002)(4326008)(316002)(54906003)(110136005)(83380400001)(52536014)(6506007)(53546011)(9686003)(7696005)(71200400001)(478600001)(8936002)(38100700002)(8676002);DIR:OUT;SFP:1101;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?utf-8?B?ZE5mb0pUQzFLK3ZRMVhqNmQwc2QwVHhxNG5qRFhITFhHd29mM0hNVWpGR2xr?=
 =?utf-8?B?MkRtaXdaWDV3RHY2MDh4ZWtxQ2I0S0tKLzIyS3RGelhSVi8vWDR1TWQ5N25N?=
 =?utf-8?B?T1ptMDIzdEZDblZxU09FZ2l4NzBQc3NRb3ljVWZtc0h3RUZCdjZvay9SYVJS?=
 =?utf-8?B?K3JLd2x0d1drQThFdEpHREZ5b0MrWFZQNm94SFI4bUZDcG8vSjB1cksxaXR4?=
 =?utf-8?B?c09yRnFmWTRoTWJ3VFZZSjJiUHpOTmJGWVNHaDZwRFc3NWxzSlJ0amZnRmcw?=
 =?utf-8?B?d1ZyclNEQlozRlRGQ0VRZE0yU1B3MFZRS3JmRkNrLytNemIxejNHQ3hNK3Jt?=
 =?utf-8?B?QzIwTnFSSkkySEgvTC9ab3lpcW9LKzFoakFTRTcvT0x3ZG9DN1F0dG5adzlw?=
 =?utf-8?B?ZWhISFlnV2VjOTlmRlFobS9VckQrdURVOVc1VlZGU3J4N3NQVUQxNnpjZ2Vx?=
 =?utf-8?B?L0pweHdKZ29UaVNEY3VmRXRFLzlDUUFJb1g3V0J2S3JvTGNFU2NIY3RNZDBp?=
 =?utf-8?B?bHhHUnFaano5QzFPaEhFT0tHdUtxL20xa1psMU5mRm5zTloxMnJkS3FpZEJn?=
 =?utf-8?B?VVNhZ3F2TVRReEVXY2RqbjJQOEZacHlBKy9kUFltc2FFUFdkQWxFbEZVNmZR?=
 =?utf-8?B?RmJCNkw5S1c3b3o3Z3FxZTFoZ2laY3RHWkFjRk14SUZ3VFJCeDU1SHFHNk9w?=
 =?utf-8?B?bC81bG9nRmtuNFUxV0tiVkNpaXlnaHorN1NkOERhQmtUL0I5czdUeTZLa3gz?=
 =?utf-8?B?bU5NN0FXeEFOczFXdjdITmYwWmwybUxoN28yVkV1S1J2bGFCMkhIc1hJS2Zh?=
 =?utf-8?B?RUFVUzJDYytMREdscEFSMUtONzhBMlpnd1hzd1p1ajFrQmlKelI5NWJrb01l?=
 =?utf-8?B?YnY4anZYTTFZQ1A3Q3g5N3dzaUwxVlZOYmMvQ3VRWE5FdkZtV2xZbzF2M0VX?=
 =?utf-8?B?dldtY2hMMHJQV3poaHN3UXBpSVNaMHBkZnczaWpIczhQckpZdnZmQTZLaWdT?=
 =?utf-8?B?cW5zYjhKUS9COStmSXpQeFhYZ2tQVTdITFNnLzBCSFBLNHdVM2NOZUJqZC94?=
 =?utf-8?B?WlRYbXMxZ2JxWWJiY2dUOThQYVFIWTlBLytGcmF3NkdwbHNYdFpzMjFoQzB5?=
 =?utf-8?B?ZUlZa2dabXp6OUM2a0xkYzZjVDZEQlVvZUkyQjRsK1VZMVVYTVY2cHN5STlX?=
 =?utf-8?B?R0gxcWwzMDZNWWQ4U2FnZHRWbEhxYXdjaXM5aGhvWStFQ3kydWVzOGJLSkJh?=
 =?utf-8?B?UzE1dWcvc2RGYWhrN2ZMV29GYlM1SzdnejVyeldVVyt6RnhIWGtaODU2cmtm?=
 =?utf-8?B?SXVuMEoyaStNanY5eUo1dCt6cXh0VTRTQlJsaWlHcG0wY1J0UmpiU20wb1I4?=
 =?utf-8?B?alIyTHk5WTZRaGUyczdTWUFUUGw5NDVsdXNKSzVMc1JRN2JUQmZkOGFsSkFo?=
 =?utf-8?B?UkhhRkY1djN4SE9Gb2QwSXVsWHpldVkreU1hbjdPeDFxREEraUhkMzhxWFNB?=
 =?utf-8?B?YWd5NU9uZ0hndFhrWEJNdEtDczIvdHFJZG5BQVhhL1ZXWGw4c3MwN3NEQURR?=
 =?utf-8?B?V3llK0hhMk5NYVBvaGhOK3JJSXU1bmZUM0ptOE5BU3h3VllaRVFxT0NLUEsr?=
 =?utf-8?B?eXpRZ25KTlprb0tEdmN4RnJGUWdCNGNuYVphWm1hQTMwSEVRcDZrTjFDMHZP?=
 =?utf-8?B?Y1ltcGxlcFBYVTk2OWtrK083U09vcE1zb1VEUTNEN0ppZnEwNHZiM3NQdEtn?=
 =?utf-8?B?WlZqN3IzMWZZaWcrQklaazRzWnBJcXhrOU9FS3lKSnNCUmtreXkyV01uZ3lr?=
 =?utf-8?B?ZlY4K3dscTROZHdQVW5UZzZkRFV2ZjF1dGhTcSthdU9NUXNKTjZCeFZUeDRG?=
 =?utf-8?B?UzhnWlgzZGYzd1hObUExcjlSZ0JxdXdCSVNmbFlBUDJJOXZpUUxTbmQwTm1h?=
 =?utf-8?B?Z3pwOVErRVRqMjFwVStsN2RGTWFJaHlLWVVqQ25Ka2lKYUZ4a0NBOGgycTRv?=
 =?utf-8?B?MVh2Rmk4MW4yNU1TQkowSWx1d3JoZzJMU2tkVzR5R3RHUG1Cd3BOdTk3eHF6?=
 =?utf-8?B?NEwrcTlMekwrZGdWdmlUS0ViRmMydXd2elRweG5FeXR6WllyaTdvcm5SSGFJ?=
 =?utf-8?Q?TOJ4=3D?=
Content-Type: text/plain; charset="utf-8"
Content-ID: <B94ACF4B5C44F4428724192B1B62C177@amdcloud.onmicrosoft.com>
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: BL1PR12MB5849.namprd12.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: f422dd47-411e-42e1-66f0-08dc102a5644
X-MS-Exchange-CrossTenant-originalarrivaltime: 08 Jan 2024 09:15:20.1484
 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 3dd8961f-e488-4e60-8e11-a82d994e183d
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: R3eLNfV3uguieDSPMkt7hvTL7KV5o62k+OIbaGKN3J5tTnSd0x5zoVlbakcsI9lod6wp1iuSReFg31/jbXsoqg==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA1PR12MB6946

T24gMjAyNC8xLzggMTY6NDcsIEphbiBCZXVsaWNoIHdyb3RlOg0KPiBPbiAwNi4wMS4yMDI0IDAx
OjQ2LCBTdGVmYW5vIFN0YWJlbGxpbmkgd3JvdGU6DQo+PiBPbiBGcmksIDUgSmFuIDIwMjQsIEpp
cWlhbiBDaGVuIHdyb3RlOg0KPj4+IEBAIC03Miw4ICs3MywzMCBAQCBsb25nIGh2bV9waHlzZGV2
X29wKGludCBjbWQsIFhFTl9HVUVTVF9IQU5ETEVfUEFSQU0odm9pZCkgYXJnKQ0KPj4+ICANCj4+
PiAgICAgIHN3aXRjaCAoIGNtZCApDQo+Pj4gICAgICB7DQo+Pj4gLSAgICBjYXNlIFBIWVNERVZP
UF9tYXBfcGlycToNCj4+PiAtICAgIGNhc2UgUEhZU0RFVk9QX3VubWFwX3BpcnE6DQo+Pj4gKyAg
ICBjYXNlIFBIWVNERVZPUF9tYXBfcGlycTogew0KPj4+ICsgICAgICAgIHBoeXNkZXZfbWFwX3Bp
cnFfdCBtYXA7DQo+Pj4gKw0KPj4+ICsgICAgICAgIGlmICggY29weV9mcm9tX2d1ZXN0KCZtYXAs
IGFyZywgMSkgIT0gMCApDQo+Pj4gKyAgICAgICAgICAgIHJldHVybiAtRUZBVUxUOw0KPj4+ICsN
Cj4+PiArICAgICAgICBpZiAoICFoYXNfcGlycShjdXJyZCkgJiYgbWFwLmRvbWlkID09IERPTUlE
X1NFTEYgKQ0KPj4+ICsgICAgICAgICAgICByZXR1cm4gLUVOT1NZUzsNCj4+DQo+PiBUaGlzIGxv
b2tzIE9LIHRvIG1lIGFsdGhvdWdoIHRoZXJlIGlzIGFscmVhZHkgYW5vdGhlciBjb3B5X2Zyb21f
Z3Vlc3QgaW4NCj4+IGRvX3BoeXNkZXZfb3AsIGJ1dCBJIGRvbid0IHNlZSBhbiBlYXN5IHdheSB0
byBtYWtlIGl0IGJldHRlci4NCj4gDQo+IEhvdyBjYW4gZG91YmxlIHJlYWRzIG9mIGh5cGVyY2Fs
bCBhcmdzIGV2ZXIgYmUgb2theT8gVGhlIG5ldyBjaGVjayBjbGVhcmx5DQo+IG5lZWRzIHRvIGJl
IGluc2VydGVkIGluIHRoZSBjb2RlIHBhdGggd2hlcmUgdGhlIHN0cnVjdHVyZSBpcyBiZWluZyBy
ZWFkDQo+IGFscmVhZHkgYW55d2F5Lg0KSSBhbHNvIHRyaWVkIHRvIGFkZCB0aGlzIGNoZWNrIGlu
IFBIWVNERVZPUF9tYXBfcGlycSBpbiBwaHlzZGV2LmMsIGJ1dCBwdiBoYXMgbm8gZmxhZyBYODZf
RU1VX1VTRV9QSVJRIHRvby4NCklmIHdhbnQgdG8gYWRkIGl0IGludG8gcGh5c2Rldi5jIGFuZCBj
b21iaW5lIFN0ZWZhbm8ncyBvcGluaW9ucywgdGhpcyBjaGVjayBtYXkgYmUgbGlrZToNCg0KZGlm
ZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9waHlzZGV2LmMgYi94ZW4vYXJjaC94ODYvcGh5c2Rldi5j
DQppbmRleCA0N2M0ZGEwYWY3ZTEuLmMzOGQ0ZDQwNTcyNiAxMDA2NDQNCi0tLSBhL3hlbi9hcmNo
L3g4Ni9waHlzZGV2LmMNCisrKyBiL3hlbi9hcmNoL3g4Ni9waHlzZGV2LmMNCkBAIC0zMDMsMTEg
KzMwMywxOSBAQCByZXRfdCBkb19waHlzZGV2X29wKGludCBjbWQsIFhFTl9HVUVTVF9IQU5ETEVf
UEFSQU0odm9pZCkgYXJnKQ0KICAgICBjYXNlIFBIWVNERVZPUF9tYXBfcGlycTogew0KICAgICAg
ICAgcGh5c2Rldl9tYXBfcGlycV90IG1hcDsNCiAgICAgICAgIHN0cnVjdCBtc2lfaW5mbyBtc2k7
DQorICAgICAgICBzdHJ1Y3QgZG9tYWluICpkOw0KDQogICAgICAgICByZXQgPSAtRUZBVUxUOw0K
ICAgICAgICAgaWYgKCBjb3B5X2Zyb21fZ3Vlc3QoJm1hcCwgYXJnLCAxKSAhPSAwICkNCiAgICAg
ICAgICAgICBicmVhazsNCg0KKyAgICAgICAgZCA9IHJjdV9sb2NrX2RvbWFpbl9ieV9hbnlfaWQo
bWFwLmRvbWlkKTsNCisgICAgICAgIGlmICggZCA9PSBOVUxMICkNCisgICAgICAgICAgICByZXR1
cm4gLUVTUkNIOw0KKyAgICAgICAgaWYgKCAhaXNfcHZfZG9tYWluKGQpICYmICFoYXNfcGlycShk
KSApDQorICAgICAgICAgICAgcmV0dXJuIC1FTk9TWVM7DQorICAgICAgICByY3VfdW5sb2NrX2Rv
bWFpbihkKTsNCisNCiAgICAgICAgIHN3aXRjaCAoIG1hcC50eXBlICkNCiAgICAgICAgIHsNCiAg
ICAgICAgIGNhc2UgTUFQX1BJUlFfVFlQRV9NU0lfU0VHOg0KDQo+IA0KPiBKYW4NCg0KLS0gDQpC
ZXN0IHJlZ2FyZHMsDQpKaXFpYW4gQ2hlbi4NCg==


From xen-devel-bounces@lists.xenproject.org Mon Jan 08 09:25:38 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 08 Jan 2024 09:25:38 +0000
Received: from list by lists.xenproject.org with outflank-mailman.663274.1033133 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMlt0-0004x7-1m; Mon, 08 Jan 2024 09:25:34 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 663274.1033133; Mon, 08 Jan 2024 09:25:34 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMlsz-0004x0-VM; Mon, 08 Jan 2024 09:25:33 +0000
Received: by outflank-mailman (input) for mailman id 663274;
 Mon, 08 Jan 2024 09:25:32 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=KH4C=IS=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rMlsy-0004wr-Ic
 for xen-devel@lists.xenproject.org; Mon, 08 Jan 2024 09:25:32 +0000
Received: from mail-lj1-x231.google.com (mail-lj1-x231.google.com
 [2a00:1450:4864:20::231])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id ddb54cd8-ae07-11ee-9b0f-b553b5be7939;
 Mon, 08 Jan 2024 10:25:30 +0100 (CET)
Received: by mail-lj1-x231.google.com with SMTP id
 38308e7fff4ca-2cca8eb0509so15529261fa.3
 for <xen-devel@lists.xenproject.org>; Mon, 08 Jan 2024 01:25:30 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 k26-20020a02c65a000000b0046ce54fea8bsm2106362jan.131.2024.01.08.01.25.27
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 08 Jan 2024 01:25:29 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: ddb54cd8-ae07-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1704705930; x=1705310730; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=0gF9CCR7H+Az15QRHhdf9DjkpV3O/2sSLbxA4yeErqk=;
        b=SnQkcVn44uWvoLFchR0y+dztn4EJpbI+Wa2x+LWQtrRGkOU/F3xfUc8RJbbEQVVgUp
         xtdA9zn/cN9YfpeM0md3F0XLLrBAAGUpZmZLp8nZGwNHr3/cJjn71tJBU8WDHT2jxt6q
         XBcXct7CZagbNL6bscVfSb+DoJRokHKqDD3v7rsujcvcpmu0TIuImjKnPuBI+2OX7d0c
         dwYkfaW05P0Zj01tgRjQFp63oSR+nQrKWi2yVbwL9ltwYU5GbCnCziJEITV4vGZZZW+8
         i/XWvz17De8+aFqB7VZCgsSmdefznHxxrqutxhnEeuN88MtNiK42TtI2mAPk7dhYyoZJ
         0gUg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704705930; x=1705310730;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=0gF9CCR7H+Az15QRHhdf9DjkpV3O/2sSLbxA4yeErqk=;
        b=L/5BJgQHpRN96OWL3KuHmcUUGVDfWxpe6wmjSOH44LyDKh0MiJM+l0CAHKw3mEz1Y/
         TaqT80q7KGJzO2ATCbZj8GQKhbypfXKvFtUSeMq2K6fmR2CYqsjndLK0GYKYewqI0xKi
         1FIsXckKFGuBruiz+7GQrIqWB4iuZ4cf8Y/35zgAJE8JR3m1WdqfvVeXHd2mHdT5ApmQ
         aj8RypQ8xhj2odeenlP5MBNLSNf3npmW0gqsqlpG82Rdzb/p01Jsb/p0XK7KeT5EKmKg
         aua740k2K7QFxyj9IXigQwy7wIf/B4qWmAXlCFOlLtN9FKi4y4AT/PhWmQsvP1kAWJNK
         U1Ng==
X-Gm-Message-State: AOJu0YxqY9Exq7SuOGtrW9dHj/BIgZPEaKyOW+QQwxr1aIfAyIY0fjyJ
	nxNtD4FU7XgGXEnlhgBVWjPsFOrR0SOi
X-Google-Smtp-Source: AGHT+IGrYIi6ztjTEn5+bmQNPHmZLYPS0KcFmKOBek95tAbmssYoxPYBvmJfVvKtL85Mc1mDcS3qNw==
X-Received: by 2002:a2e:b7d6:0:b0:2cc:d45a:48d8 with SMTP id p22-20020a2eb7d6000000b002ccd45a48d8mr1109798ljo.43.1704705929828;
        Mon, 08 Jan 2024 01:25:29 -0800 (PST)
Message-ID: <14986c92-7479-4258-be59-8606018c5885@suse.com>
Date: Mon, 8 Jan 2024 10:25:28 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [RFC XEN PATCH v4 2/5] x86/pvh: Allow (un)map_pirq when caller
 isn't DOMID_SELF
Content-Language: en-US
To: "Chen, Jiqian" <Jiqian.Chen@amd.com>
Cc: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>,
 Andrew Cooper <andrew.cooper3@citrix.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>, Wei Liu
 <wl@xen.org>, George Dunlap <george.dunlap@citrix.com>,
 Julien Grall <julien@xen.org>, Anthony PERARD <anthony.perard@citrix.com>,
 Juergen Gross <jgross@suse.com>,
 "Hildebrand, Stewart" <Stewart.Hildebrand@amd.com>,
 "Huang, Ray" <Ray.Huang@amd.com>, Stefano Stabellini <sstabellini@kernel.org>
References: <20240105070920.350113-1-Jiqian.Chen@amd.com>
 <20240105070920.350113-3-Jiqian.Chen@amd.com>
 <alpine.DEB.2.22.394.2401051639240.3675@ubuntu-linux-20-04-desktop>
 <242dbf1f-ef3e-42cc-906e-5c5bb01d8e31@suse.com>
 <BL1PR12MB58495C90CEC83B6EF66651A0E76B2@BL1PR12MB5849.namprd12.prod.outlook.com>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <BL1PR12MB58495C90CEC83B6EF66651A0E76B2@BL1PR12MB5849.namprd12.prod.outlook.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 08.01.2024 10:15, Chen, Jiqian wrote:
> On 2024/1/8 16:47, Jan Beulich wrote:
>> On 06.01.2024 01:46, Stefano Stabellini wrote:
>>> On Fri, 5 Jan 2024, Jiqian Chen wrote:
>>>> @@ -72,8 +73,30 @@ long hvm_physdev_op(int cmd, XEN_GUEST_HANDLE_PARAM(void) arg)
>>>>  
>>>>      switch ( cmd )
>>>>      {
>>>> -    case PHYSDEVOP_map_pirq:
>>>> -    case PHYSDEVOP_unmap_pirq:
>>>> +    case PHYSDEVOP_map_pirq: {
>>>> +        physdev_map_pirq_t map;
>>>> +
>>>> +        if ( copy_from_guest(&map, arg, 1) != 0 )
>>>> +            return -EFAULT;
>>>> +
>>>> +        if ( !has_pirq(currd) && map.domid == DOMID_SELF )
>>>> +            return -ENOSYS;
>>>
>>> This looks OK to me although there is already another copy_from_guest in
>>> do_physdev_op, but I don't see an easy way to make it better.
>>
>> How can double reads of hypercall args ever be okay? The new check clearly
>> needs to be inserted in the code path where the structure is being read
>> already anyway.
> I also tried to add this check in PHYSDEVOP_map_pirq in physdev.c, but pv has no flag X86_EMU_USE_PIRQ too.
> If want to add it into physdev.c and combine Stefano's opinions, this check may be like:
> 
> diff --git a/xen/arch/x86/physdev.c b/xen/arch/x86/physdev.c
> index 47c4da0af7e1..c38d4d405726 100644
> --- a/xen/arch/x86/physdev.c
> +++ b/xen/arch/x86/physdev.c
> @@ -303,11 +303,19 @@ ret_t do_physdev_op(int cmd, XEN_GUEST_HANDLE_PARAM(void) arg)
>      case PHYSDEVOP_map_pirq: {
>          physdev_map_pirq_t map;
>          struct msi_info msi;
> +        struct domain *d;
> 
>          ret = -EFAULT;
>          if ( copy_from_guest(&map, arg, 1) != 0 )
>              break;
> 
> +        d = rcu_lock_domain_by_any_id(map.domid);
> +        if ( d == NULL )
> +            return -ESRCH;
> +        if ( !is_pv_domain(d) && !has_pirq(d) )
> +            return -ENOSYS;
> +        rcu_unlock_domain(d);
> +
>          switch ( map.type )
>          {
>          case MAP_PIRQ_TYPE_MSI_SEG:

Well, yes, perhaps kind of like that, but with rcu_unlock_domain() called
on the error 2nd return path as well, and without abusing ENOSYS.

Jan


From xen-devel-bounces@lists.xenproject.org Mon Jan 08 10:03:50 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 08 Jan 2024 10:03:50 +0000
Received: from list by lists.xenproject.org with outflank-mailman.663280.1033143 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMmTs-0005S6-VO; Mon, 08 Jan 2024 10:03:40 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 663280.1033143; Mon, 08 Jan 2024 10:03:40 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMmTs-0005Rz-Sm; Mon, 08 Jan 2024 10:03:40 +0000
Received: by outflank-mailman (input) for mailman id 663280;
 Mon, 08 Jan 2024 10:03:39 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rMmTr-0005Rp-RT; Mon, 08 Jan 2024 10:03:39 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rMmTr-0001Qh-OA; Mon, 08 Jan 2024 10:03:39 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rMmTr-0004g2-4c; Mon, 08 Jan 2024 10:03:39 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rMmTr-0004TM-42; Mon, 08 Jan 2024 10:03:39 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=xZ4cc2aJshL6RkOO0oJLjMTnnH675Vsls9mptEg2zms=; b=NWvGBA1HGoZHJIsKba/wGfYcwQ
	3O8hTTOd4JjH2/H4DyR+45F0qhWMMBMSOpZ2s+B0230PpKiS//m3lHDX+ImekZdRm7qn+eY7+hq1I
	sNrL2S7JiWsRl1v+LSeRPawcSEFaENu+FkCS4Y/xpkNPKOD4y6AStGQq7JRv14iDDreg=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184271-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [xen-unstable test] 184271: tolerable FAIL
X-Osstest-Failures:
    xen-unstable:test-armhf-armhf-libvirt:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-amd64-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-qcow2:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-raw:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-amd64-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-amd64-qemuu-nested-amd:debian-hvm-install/l1/l2:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-amd64-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-i386-libvirt-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-libvirt:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-pvshim:guest-start:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-xsm:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-thunderx:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-thunderx:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-credit2:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-credit2:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-libvirt-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-libvirt-xsm:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-credit1:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-credit1:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-multivcpu:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-multivcpu:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit2:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit2:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit1:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit1:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-arndale:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-arndale:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-libvirt-raw:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-libvirt-raw:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-libvirt-raw:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt-vhd:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-qcow2:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-vhd:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-vhd:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-raw:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-vhd:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-vhd:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-rtds:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-rtds:saverestore-support-check:fail:nonblocking
X-Osstest-Versions-This:
    xen=5a3ace21f3d779b291a2d305824b2820d88de7f1
X-Osstest-Versions-That:
    xen=5a3ace21f3d779b291a2d305824b2820d88de7f1
From: osstest service owner <osstest-admin@xenproject.org>
Date: Mon, 08 Jan 2024 10:03:39 +0000

flight 184271 xen-unstable real [real]
http://logs.test-lab.xenproject.org/osstest/logs/184271/

Failures :-/ but no regressions.

Tests which did not succeed, but are not blocking:
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 184267
 test-amd64-amd64-xl-qemut-win7-amd64 19 guest-stop            fail like 184267
 test-amd64-i386-xl-qemuu-win7-amd64 19 guest-stop             fail like 184267
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 184267
 test-armhf-armhf-libvirt-qcow2 15 saverestore-support-check   fail like 184267
 test-amd64-i386-xl-qemut-ws16-amd64 19 guest-stop             fail like 184267
 test-armhf-armhf-libvirt-raw 15 saverestore-support-check    fail  like 184267
 test-amd64-i386-xl-qemut-win7-amd64 19 guest-stop             fail like 184267
 test-amd64-amd64-xl-qemut-ws16-amd64 19 guest-stop            fail like 184267
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 184267
 test-amd64-i386-xl-qemuu-ws16-amd64 19 guest-stop             fail like 184267
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 184267
 test-amd64-i386-libvirt-xsm  15 migrate-support-check        fail   never pass
 test-amd64-i386-libvirt      15 migrate-support-check        fail   never pass
 test-amd64-i386-xl-pvshim    14 guest-start                  fail   never pass
 test-amd64-amd64-libvirt     15 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-arm64-arm64-xl-xsm      15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl          15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-xsm      16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl          16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-thunderx 15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-thunderx 16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-credit2  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit2  16 saverestore-support-check    fail   never pass
 test-arm64-arm64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-xsm 16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-credit1  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit1  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl          15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          16 saverestore-support-check    fail   never pass
 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-armhf-armhf-xl-multivcpu 15 migrate-support-check        fail  never pass
 test-armhf-armhf-xl-multivcpu 16 saverestore-support-check    fail  never pass
 test-armhf-armhf-libvirt     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit2  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit2  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-credit1  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit1  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-arndale  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-arndale  16 saverestore-support-check    fail   never pass
 test-amd64-i386-libvirt-raw  14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 15 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-vhd 14 migrate-support-check        fail   never pass
 test-armhf-armhf-libvirt-qcow2 14 migrate-support-check        fail never pass
 test-arm64-arm64-xl-vhd      14 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-vhd      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-raw 14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-rtds     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-rtds     16 saverestore-support-check    fail   never pass

version targeted for testing:
 xen                  5a3ace21f3d779b291a2d305824b2820d88de7f1
baseline version:
 xen                  5a3ace21f3d779b291a2d305824b2820d88de7f1

Last test of basis   184271  2024-01-08 01:53:47 Z    0 days
Testing same since                          (not found)         0 attempts

jobs:
 build-amd64-xsm                                              pass    
 build-arm64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64-xtf                                              pass    
 build-amd64                                                  pass    
 build-arm64                                                  pass    
 build-armhf                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-arm64-libvirt                                          pass    
 build-armhf-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-prev                                             pass    
 build-i386-prev                                              pass    
 build-amd64-pvops                                            pass    
 build-arm64-pvops                                            pass    
 build-armhf-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-xtf-amd64-amd64-1                                       pass    
 test-xtf-amd64-amd64-2                                       pass    
 test-xtf-amd64-amd64-3                                       pass    
 test-xtf-amd64-amd64-4                                       pass    
 test-xtf-amd64-amd64-5                                       pass    
 test-amd64-amd64-xl                                          pass    
 test-amd64-coresched-amd64-xl                                pass    
 test-arm64-arm64-xl                                          pass    
 test-armhf-armhf-xl                                          pass    
 test-amd64-i386-xl                                           pass    
 test-amd64-coresched-i386-xl                                 pass    
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm           pass    
 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm            pass    
 test-amd64-amd64-xl-qemut-stubdom-debianhvm-amd64-xsm        pass    
 test-amd64-i386-xl-qemut-stubdom-debianhvm-amd64-xsm         pass    
 test-amd64-amd64-xl-qemut-debianhvm-i386-xsm                 pass    
 test-amd64-i386-xl-qemut-debianhvm-i386-xsm                  pass    
 test-amd64-amd64-xl-qemuu-debianhvm-i386-xsm                 pass    
 test-amd64-i386-xl-qemuu-debianhvm-i386-xsm                  pass    
 test-amd64-amd64-libvirt-xsm                                 pass    
 test-arm64-arm64-libvirt-xsm                                 pass    
 test-amd64-i386-libvirt-xsm                                  pass    
 test-amd64-amd64-xl-xsm                                      pass    
 test-arm64-arm64-xl-xsm                                      pass    
 test-amd64-i386-xl-xsm                                       pass    
 test-amd64-amd64-qemuu-nested-amd                            fail    
 test-amd64-amd64-xl-pvhv2-amd                                pass    
 test-amd64-i386-qemut-rhel6hvm-amd                           pass    
 test-amd64-i386-qemuu-rhel6hvm-amd                           pass    
 test-amd64-amd64-dom0pvh-xl-amd                              pass    
 test-amd64-amd64-xl-qemut-debianhvm-amd64                    pass    
 test-amd64-i386-xl-qemut-debianhvm-amd64                     pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64                    pass    
 test-amd64-i386-xl-qemuu-debianhvm-amd64                     pass    
 test-amd64-i386-freebsd10-amd64                              pass    
 test-amd64-amd64-qemuu-freebsd11-amd64                       pass    
 test-amd64-amd64-qemuu-freebsd12-amd64                       pass    
 test-amd64-amd64-xl-qemuu-ovmf-amd64                         pass    
 test-amd64-i386-xl-qemuu-ovmf-amd64                          pass    
 test-amd64-amd64-xl-qemut-win7-amd64                         fail    
 test-amd64-i386-xl-qemut-win7-amd64                          fail    
 test-amd64-amd64-xl-qemuu-win7-amd64                         fail    
 test-amd64-i386-xl-qemuu-win7-amd64                          fail    
 test-amd64-amd64-xl-qemut-ws16-amd64                         fail    
 test-amd64-i386-xl-qemut-ws16-amd64                          fail    
 test-amd64-amd64-xl-qemuu-ws16-amd64                         fail    
 test-amd64-i386-xl-qemuu-ws16-amd64                          fail    
 test-armhf-armhf-xl-arndale                                  pass    
 test-amd64-amd64-examine-bios                                pass    
 test-amd64-i386-examine-bios                                 pass    
 test-amd64-amd64-xl-credit1                                  pass    
 test-arm64-arm64-xl-credit1                                  pass    
 test-armhf-armhf-xl-credit1                                  pass    
 test-amd64-amd64-xl-credit2                                  pass    
 test-arm64-arm64-xl-credit2                                  pass    
 test-armhf-armhf-xl-credit2                                  pass    
 test-amd64-amd64-xl-qemuu-dmrestrict-amd64-dmrestrict        pass    
 test-amd64-i386-xl-qemuu-dmrestrict-amd64-dmrestrict         pass    
 test-amd64-amd64-examine                                     pass    
 test-arm64-arm64-examine                                     pass    
 test-armhf-armhf-examine                                     pass    
 test-amd64-i386-examine                                      pass    
 test-amd64-i386-freebsd10-i386                               pass    
 test-amd64-amd64-qemuu-nested-intel                          pass    
 test-amd64-amd64-xl-pvhv2-intel                              pass    
 test-amd64-i386-qemut-rhel6hvm-intel                         pass    
 test-amd64-i386-qemuu-rhel6hvm-intel                         pass    
 test-amd64-amd64-dom0pvh-xl-intel                            pass    
 test-amd64-amd64-libvirt                                     pass    
 test-armhf-armhf-libvirt                                     pass    
 test-amd64-i386-libvirt                                      pass    
 test-amd64-amd64-livepatch                                   pass    
 test-amd64-i386-livepatch                                    pass    
 test-amd64-amd64-migrupgrade                                 pass    
 test-amd64-i386-migrupgrade                                  pass    
 test-amd64-amd64-xl-multivcpu                                pass    
 test-armhf-armhf-xl-multivcpu                                pass    
 test-amd64-amd64-pair                                        pass    
 test-amd64-i386-pair                                         pass    
 test-amd64-amd64-libvirt-pair                                pass    
 test-amd64-i386-libvirt-pair                                 pass    
 test-amd64-amd64-xl-pvshim                                   pass    
 test-amd64-i386-xl-pvshim                                    fail    
 test-amd64-amd64-pygrub                                      pass    
 test-armhf-armhf-libvirt-qcow2                               pass    
 test-amd64-amd64-xl-qcow2                                    pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-armhf-armhf-libvirt-raw                                 pass    
 test-amd64-i386-libvirt-raw                                  pass    
 test-amd64-amd64-xl-rtds                                     pass    
 test-armhf-armhf-xl-rtds                                     pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64-shadow             pass    
 test-amd64-i386-xl-qemuu-debianhvm-amd64-shadow              pass    
 test-amd64-amd64-xl-shadow                                   pass    
 test-amd64-i386-xl-shadow                                    pass    
 test-arm64-arm64-xl-thunderx                                 pass    
 test-amd64-amd64-examine-uefi                                pass    
 test-amd64-i386-examine-uefi                                 pass    
 test-amd64-amd64-libvirt-vhd                                 pass    
 test-arm64-arm64-xl-vhd                                      pass    
 test-armhf-armhf-xl-vhd                                      pass    
 test-amd64-i386-xl-vhd                                       pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Published tested tree is already up to date.



From xen-devel-bounces@lists.xenproject.org Mon Jan 08 10:07:09 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 08 Jan 2024 10:07:09 +0000
Received: from list by lists.xenproject.org with outflank-mailman.663288.1033152 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMmXD-00064G-Hk; Mon, 08 Jan 2024 10:07:07 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 663288.1033152; Mon, 08 Jan 2024 10:07:07 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMmXD-000649-FA; Mon, 08 Jan 2024 10:07:07 +0000
Received: by outflank-mailman (input) for mailman id 663288;
 Mon, 08 Jan 2024 10:07:06 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=pvth=IS=minervasys.tech=carlo.nonato@srs-se1.protection.inumbo.net>)
 id 1rMmXC-000641-7T
 for xen-devel@lists.xenproject.org; Mon, 08 Jan 2024 10:07:06 +0000
Received: from mail-ed1-x531.google.com (mail-ed1-x531.google.com
 [2a00:1450:4864:20::531])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id ac92efc1-ae0d-11ee-98ef-6d05b1d4d9a1;
 Mon, 08 Jan 2024 11:07:04 +0100 (CET)
Received: by mail-ed1-x531.google.com with SMTP id
 4fb4d7f45d1cf-553ba2f0c8fso1807639a12.1
 for <xen-devel@lists.xenproject.org>; Mon, 08 Jan 2024 02:07:04 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: ac92efc1-ae0d-11ee-98ef-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=minervasys-tech.20230601.gappssmtp.com; s=20230601; t=1704708424; x=1705313224; darn=lists.xenproject.org;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:from:to:cc:subject:date
         :message-id:reply-to;
        bh=sqduyHr7pdaQeejibwqGH3EAUxC9w1DMd/U0/tsdsuw=;
        b=FXA6h1A77cj2sqQ1WkHKLDEVzOXT46wB+AcD0CJdr7GDGVaJ8vnxHBHdUF4o6y19+2
         qjtBPOJFQ7WIUw43Ng5CzUWkqI0xnL+SIoIzt+BjfNJpGsSEYbPhT6KTNA2hdaC0DiRE
         69cFyD+RD5rn/GV90yWmFUdPTOR7xP3CkM7MF+BiGrmmGy1KQA6tGb5EjIzmh487D01h
         1cj0gRJs01rx9OKkN2GlqwnlbcDECs9m8JFuhSWYPW2GPQY78mqvSV3tja0iO/sX0ntL
         dvM3PZZBB+DER6RHcrb+yx+J0BxHCXD29vvQUEnPdWBBO9wSDwvjAVu8jevA2zPDBnnr
         Aing==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704708424; x=1705313224;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to;
        bh=sqduyHr7pdaQeejibwqGH3EAUxC9w1DMd/U0/tsdsuw=;
        b=M8SqmHvslsjPKP8yC9OBevwWx6o5UyA1e5hI5ZDEMysVY6Ce5Ajv31AkkHnYyn+1QK
         3hmTmxaZ4LGk76/msOPQyhvHY51W2DMnOdG4V9j++BByB/N0Pn5JMisxaRh6DW8BACeR
         39gyNsHnBP+iKWlMg8Wm9MUm1uazny8Nw/ypZsy1fMfHV5SwA30/T6NPTE3GOjnEFKMZ
         LFQnyUcpYR/5nPeU+e3HEquwDEv+yQAR+uPw3CMlUHDiC2lq5GwLDBertG2JyNXKf9HR
         A5ZlVXODL6VRwRZm69P8hqWqQDVRKHMzqA3GK1l3oqcQNasysKR7YgjwONo7E8rbKA3E
         1oiw==
X-Gm-Message-State: AOJu0Yy8GDiapEq0trXqPCDkpH1H33GTo1VbdCyIui+OUeX287W/pCKy
	+IDVuVv3qCgy2+X9aTWaSK1TNE795Ec1LE9rOpWCQkXByTl6sg==
X-Google-Smtp-Source: AGHT+IEpmst7MiOz9F8xW1t5cNBeh4YeoejQ/RcBbtw2A4d+ktBlnt+BJWt+aZfuTi6cihHqdJJh1T1rxgj0YqYPwiY=
X-Received: by 2002:a17:906:3091:b0:a27:efde:c6f5 with SMTP id
 17-20020a170906309100b00a27efdec6f5mr642587ejv.300.1704708424342; Mon, 08 Jan
 2024 02:07:04 -0800 (PST)
MIME-Version: 1.0
References: <20240102095138.17933-1-carlo.nonato@minervasys.tech>
 <20240102095138.17933-4-carlo.nonato@minervasys.tech> <046e9949-d126-42b1-90a6-12af540d63bf@xen.org>
 <CAG+AhRWm4N7GV3HfkTNCvXQw7-6Woq=+zBqdHAgN=-PgGr-WRg@mail.gmail.com> <0905b0f4-9a5e-48c7-8764-58cdd440130f@xen.org>
In-Reply-To: <0905b0f4-9a5e-48c7-8764-58cdd440130f@xen.org>
From: Carlo Nonato <carlo.nonato@minervasys.tech>
Date: Mon, 8 Jan 2024 11:06:53 +0100
Message-ID: <CAG+AhRVL8_YMkw+Z4EcTLZgM7m10+9DToSkaeNLMaFY3gcng7Q@mail.gmail.com>
Subject: Re: [PATCH v5 03/13] xen/arm: add Dom0 cache coloring support
To: Julien Grall <julien@xen.org>
Cc: xen-devel@lists.xenproject.org, 
	Stefano Stabellini <sstabellini@kernel.org>, Bertrand Marquis <bertrand.marquis@arm.com>, 
	Michal Orzel <michal.orzel@amd.com>, Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>, 
	Andrew Cooper <andrew.cooper3@citrix.com>, George Dunlap <george.dunlap@citrix.com>, 
	Jan Beulich <jbeulich@suse.com>, Wei Liu <wl@xen.org>, 
	Marco Solieri <marco.solieri@minervasys.tech>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

Hi Julien,

On Fri, Jan 5, 2024 at 6:50=E2=80=AFPM Julien Grall <julien@xen.org> wrote:
>
>
>
> On 05/01/2024 16:52, Carlo Nonato wrote:
> > Hi Julien,
> >
> > On Thu, Jan 4, 2024 at 8:54=E2=80=AFPM Julien Grall <julien@xen.org> wr=
ote:
> >>
> >> Hi Carlo,
> >>
> >> On 02/01/2024 09:51, Carlo Nonato wrote:
> >>> This commit allows the user to set the cache coloring configuration f=
or
> >>> Dom0 via a command line parameter.
> >>> Since cache coloring and static memory are incompatible, direct mappi=
ng
> >>> Dom0 isn't possible when coloring is enabled.
> >>>
> >>> A common configuration syntax for cache colors is also introduced.
> >>>
> >>> Based on original work from: Luca Miccio <lucmiccio@gmail.com>
> >>>
> >>> Signed-off-by: Carlo Nonato <carlo.nonato@minervasys.tech>
> >>> Signed-off-by: Marco Solieri <marco.solieri@minervasys.tech>
> >>> ---
> >>> v5:
> >>> - Carlo Nonato as the new author
> >>> - moved dom0 colors parsing (parse_colors()) in this patch
> >>> - added dom0_set_llc_colors() to set dom0 colors after creation
> >>> - moved color allocation and checking in this patch
> >>> - error handling when allocating color arrays
> >>> - FIXME: copy pasted allocate_memory() cause it got moved
> >>> v4:
> >>> - dom0 colors are dynamically allocated as for any other domain
> >>>     (colors are duplicated in dom0_colors and in the new array, but l=
ogic
> >>>     is simpler)
> >>> ---
> >>>    docs/misc/arm/cache-coloring.rst        |  29 ++++++
> >>>    docs/misc/xen-command-line.pandoc       |   9 ++
> >>>    xen/arch/arm/domain_build.c             |  60 ++++++++++-
> >>>    xen/arch/arm/include/asm/llc-coloring.h |   1 +
> >>>    xen/arch/arm/llc-coloring.c             | 128 ++++++++++++++++++++=
++++
> >>>    5 files changed, 224 insertions(+), 3 deletions(-)
> >>>
> >>> diff --git a/docs/misc/arm/cache-coloring.rst b/docs/misc/arm/cache-c=
oloring.rst
> >>> index eabf8f5d1b..acf82c3df8 100644
> >>> --- a/docs/misc/arm/cache-coloring.rst
> >>> +++ b/docs/misc/arm/cache-coloring.rst
> >>> @@ -84,6 +84,35 @@ More specific documentation is available at `docs/=
misc/xen-command-line.pandoc`.
> >>>    +----------------------+-------------------------------+
> >>>    | ``llc-way-size``     | set the LLC way size          |
> >>>    +----------------------+-------------------------------+
> >>> +| ``dom0-llc-colors``  | Dom0 color configuration      |
> >>> ++----------------------+-------------------------------+
> >>> +
> >>> +Colors selection format
> >>> +***********************
> >>> +
> >>> +Regardless of the memory pool that has to be colored (Xen, Dom0/DomU=
s),
> >>> +the color selection can be expressed using the same syntax. In parti=
cular a
> >>> +comma-separated list of colors or ranges of colors is used.
> >>> +Ranges are hyphen-separated intervals (such as `0-4`) and are inclus=
ive on both
> >>> +sides.
> >>> +
> >>> +Note that:
> >>> +
> >>> +- no spaces are allowed between values.
> >>> +- no overlapping ranges or duplicated colors are allowed.
> >>> +- values must be written in ascending order.
> >>> +
> >>> +Examples:
> >>> +
> >>> ++-------------------+-----------------------------+
> >>> +| **Configuration** | **Actual selection**        |
> >>> ++-------------------+-----------------------------+
> >>> +| 1-2,5-8           | [1, 2, 5, 6, 7, 8]          |
> >>> ++-------------------+-----------------------------+
> >>> +| 4-8,10,11,12      | [4, 5, 6, 7, 8, 10, 11, 12] |
> >>> ++-------------------+-----------------------------+
> >>> +| 0                 | [0]                         |
> >>> ++-------------------+-----------------------------+
> >>>
> >>>    Known issues and limitations
> >>>    ****************************
> >>> diff --git a/docs/misc/xen-command-line.pandoc b/docs/misc/xen-comman=
d-line.pandoc
> >>> index 22d2d5b6cf..51f6adf035 100644
> >>> --- a/docs/misc/xen-command-line.pandoc
> >>> +++ b/docs/misc/xen-command-line.pandoc
> >>> @@ -963,6 +963,15 @@ Controls for the dom0 IOMMU setup.
> >>>
> >>>    Specify a list of IO ports to be excluded from dom0 access.
> >>>
> >>> +### dom0-llc-colors (arm64)
> >>> +> `=3D List of [ <integer> | <integer>-<integer> ]`
> >>
> >> Someone reading only xen-command-line.pandoc would not know how each
> >> item of the list is separated. Can this be clarified?
> >
> > Isn't it already known that the list is comma separated? It's written a=
t the
> > beginning of this file for the "List" type.
> > I can also point to cache-coloring documentation if needed.
>
> Ah I forgot that part. Please ignore this comment.
>
> [...]
>
> >>> +                return -EINVAL;
> >>> +            for ( color =3D start; color <=3D end; color++ )
> >>> +                colors[(*num_colors)++] =3D color;
> >>> +        }
> >>> +        else
> >>> +            s++;
> >>> +    }
> >>> +
> >>> +    return *s ? -EINVAL : 0;
> >>> +}
> >>> +
> >>> +static int __init parse_dom0_colors(const char *s)
> >>> +{
> >>> +    return parse_color_config(s, dom0_colors, &dom0_num_colors);
> >>> +}
> >>> +custom_param("dom0-llc-colors", parse_dom0_colors);
> >>> +
> >>>    /* Return the LLC way size by probing the hardware */
> >>>    static unsigned int __init get_llc_way_size(void)
> >>>    {
> >>> @@ -102,6 +159,28 @@ static void dump_coloring_info(unsigned char key=
)
> >>>        printk("Number of LLC colors supported: %u\n", nr_colors);
> >>>    }
> >>>
> >>> +static bool check_colors(unsigned int *colors, unsigned int num_colo=
rs)
> >>> +{
> >>> +    unsigned int i;
> >>> +
> >>> +    if ( num_colors > nr_colors )
> >>> +    {
> >>> +        printk(XENLOG_ERR "Number of LLC colors requested > %u\n", n=
r_colors);
> >>> +        return false;
> >>> +    }
> >>> +
> >>> +    for ( i =3D 0; i < num_colors; i++ )
> >>> +    {
> >>> +        if ( colors[i] >=3D nr_colors )
> >>> +        {
> >>> +            printk(XENLOG_ERR "LLC color %u >=3D %u\n", colors[i], n=
r_colors);
> >>> +            return false;
> >>> +        }
> >>> +    }
> >>> +
> >>> +    return true;
> >>> +}
> >>> +
> >>>    bool __init llc_coloring_init(void)
> >>>    {
> >>>        if ( !llc_way_size && !(llc_way_size =3D get_llc_way_size()) )
> >>> @@ -150,6 +229,55 @@ void domain_dump_llc_colors(struct domain *d)
> >>>        print_colors(d->llc_colors, d->num_llc_colors);
> >>>    }
> >>>
> >>> +static int domain_alloc_colors(struct domain *d, unsigned int num_co=
lors)
> >>> +{
> >>> +    d->num_llc_colors =3D num_colors;
> >>
> >> Shouldn't this be set *only* after the array was allocated?
> >
> > Yes, it works also like I did, but it's cleaner like you said.
>
> Actually, looking at the rest of the code. I think  d->num_llc_colors
> should be set outside of domain_alloc_colors().
>
> One of the reason is at least in the dom0less case, you will override
> the value afterwards.

In that case I need to allocate the array before parsing the string.
I allocate a full array then the string is parsed and the actual size is fo=
und
at the end of this phase. Knowing the actual size would require two parsing
stages. Yes I'm wasting a bit of memory by oversizing the array here. Is it
a problem?

Thanks.

> Cheers,
>
> --
> Julien Grall


From xen-devel-bounces@lists.xenproject.org Mon Jan 08 10:17:55 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 08 Jan 2024 10:17:55 +0000
Received: from list by lists.xenproject.org with outflank-mailman.663292.1033162 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMmhV-0000Lr-EI; Mon, 08 Jan 2024 10:17:45 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 663292.1033162; Mon, 08 Jan 2024 10:17:45 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMmhV-0000Lk-BN; Mon, 08 Jan 2024 10:17:45 +0000
Received: by outflank-mailman (input) for mailman id 663292;
 Mon, 08 Jan 2024 10:17:44 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rMmhU-0000K9-4A; Mon, 08 Jan 2024 10:17:44 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rMmhU-0001fx-1w; Mon, 08 Jan 2024 10:17:44 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rMmhT-00051S-Nh; Mon, 08 Jan 2024 10:17:43 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rMmhT-0008K8-NE; Mon, 08 Jan 2024 10:17:43 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=pzd3NnYOAWVb82bHaZeomD4PQ5o5KvjlcbaELdeDcPU=; b=cLHV0xRPHDWsOJvGPaeQZkxfV4
	Y1UDlPy9/T4/ouczPSJMDQ5t2fpwP2CI5QTXdecsPh8fQi1LLwxIuaeEw7IqjNvy9XhVPOzt0FMjd
	hF+/elMuZFpuTiOEhLw+vsj4JqLa2axUm17zILS5cptrHwMOqGLuGN/YVn8RwQ3lMGvE=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184273-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [ovmf test] 184273: all pass - PUSHED
X-Osstest-Versions-This:
    ovmf=c3d865a4c21d91f2e338a91d0c8b1eaf205575b5
X-Osstest-Versions-That:
    ovmf=ff1305c9fb171ad51bfc149c544e3ab5a0edf521
From: osstest service owner <osstest-admin@xenproject.org>
Date: Mon, 08 Jan 2024 10:17:43 +0000

flight 184273 ovmf real [real]
http://logs.test-lab.xenproject.org/osstest/logs/184273/

Perfect :-)
All tests in this flight passed as required
version targeted for testing:
 ovmf                 c3d865a4c21d91f2e338a91d0c8b1eaf205575b5
baseline version:
 ovmf                 ff1305c9fb171ad51bfc149c544e3ab5a0edf521

Last test of basis   184272  2024-01-08 02:11:04 Z    0 days
Testing same since   184273  2024-01-08 08:14:18 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Hua Ma <hua.ma@intel.com>

jobs:
 build-amd64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-amd64-amd64-xl-qemuu-ovmf-amd64                         pass    
 test-amd64-i386-xl-qemuu-ovmf-amd64                          pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Pushing revision :

To xenbits.xen.org:/home/xen/git/osstest/ovmf.git
   ff1305c9fb..c3d865a4c2  c3d865a4c21d91f2e338a91d0c8b1eaf205575b5 -> xen-tested-master


From xen-devel-bounces@lists.xenproject.org Mon Jan 08 10:25:26 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 08 Jan 2024 10:25:26 +0000
Received: from list by lists.xenproject.org with outflank-mailman.663297.1033172 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMmos-0002dK-3h; Mon, 08 Jan 2024 10:25:22 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 663297.1033172; Mon, 08 Jan 2024 10:25:22 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMmos-0002dD-1G; Mon, 08 Jan 2024 10:25:22 +0000
Received: by outflank-mailman (input) for mailman id 663297;
 Mon, 08 Jan 2024 10:25:20 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>) id 1rMmoq-0002d7-R3
 for xen-devel@lists.xenproject.org; Mon, 08 Jan 2024 10:25:20 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rMmoq-0001mu-7T; Mon, 08 Jan 2024 10:25:20 +0000
Received: from gw1.octic.net ([88.97.20.152] helo=[10.0.1.240])
 by xenbits.xenproject.org with esmtpsa
 (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rMmop-0003iW-Vj; Mon, 08 Jan 2024 10:25:20 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
	s=20200302mail; h=Content-Transfer-Encoding:Content-Type:In-Reply-To:From:
	References:Cc:To:Subject:MIME-Version:Date:Message-ID;
	bh=D0ev2DsLt5lr/ttCw3wnM/n2NuzVc+e/9UmofoimqGA=; b=kmvhD1VuUCtrbWZ1fCd5SfTqa8
	MwPR7pUja8TwSqrexx3v4T4fhaIuX0CiIhCocfHLwA5J2dBpoB1piYSV9HxBNEKX4IXSTeQ6SL6cC
	XwxEjTFLCI9xln/vh8EfaQcWmb0nh1oAcQV7YZ+1HJMQGnU9EoBTWu6iEoFE8vWkvf1o=;
Message-ID: <4f8b3a59-c277-4f2e-a9de-82ea9ce2eda0@xen.org>
Date: Mon, 8 Jan 2024 10:25:17 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v5 03/13] xen/arm: add Dom0 cache coloring support
Content-Language: en-GB
To: Carlo Nonato <carlo.nonato@minervasys.tech>
Cc: xen-devel@lists.xenproject.org,
 Stefano Stabellini <sstabellini@kernel.org>,
 Bertrand Marquis <bertrand.marquis@arm.com>,
 Michal Orzel <michal.orzel@amd.com>,
 Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
 Andrew Cooper <andrew.cooper3@citrix.com>,
 George Dunlap <george.dunlap@citrix.com>, Jan Beulich <jbeulich@suse.com>,
 Wei Liu <wl@xen.org>, Marco Solieri <marco.solieri@minervasys.tech>
References: <20240102095138.17933-1-carlo.nonato@minervasys.tech>
 <20240102095138.17933-4-carlo.nonato@minervasys.tech>
 <046e9949-d126-42b1-90a6-12af540d63bf@xen.org>
 <CAG+AhRWm4N7GV3HfkTNCvXQw7-6Woq=+zBqdHAgN=-PgGr-WRg@mail.gmail.com>
 <0905b0f4-9a5e-48c7-8764-58cdd440130f@xen.org>
 <CAG+AhRVL8_YMkw+Z4EcTLZgM7m10+9DToSkaeNLMaFY3gcng7Q@mail.gmail.com>
From: Julien Grall <julien@xen.org>
In-Reply-To: <CAG+AhRVL8_YMkw+Z4EcTLZgM7m10+9DToSkaeNLMaFY3gcng7Q@mail.gmail.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

Hi Carlo,

On 08/01/2024 10:06, Carlo Nonato wrote:
>> One of the reason is at least in the dom0less case, you will override
>> the value afterwards.
> 
> In that case I need to allocate the array before parsing the string.
> I allocate a full array then the string is parsed and the actual size is found
> at the end of this phase. Knowing the actual size would require two parsing
> stages. Yes I'm wasting a bit of memory by oversizing the array here. Is it
> a problem?

While wasting memory is indeed not nice. This wasn't the main reason of 
this comment.

The reason is that you seem to set d->num_lcc_colors will but will never 
be read before it gets overwritten. Looking again at the code, you are 
also assuming parse_colors() will always take an array of nr_colors.

It would be better if parse_colors() takes the maximum size of the array 
in parameter. This would harden the code and it makes more sense for 
domain_alloc_colors() to set d->num_lcc_colors.

Also, I just noticed you have a global variable named nr_colors and the 
function parse_colors() takes an argument called *num_colors. This is 
quite confusing, can we have better name?

Maybe rename nr_colors to nr_global_colors and and num_colors to 
nr_array_colors?

Cheers,

-- 
Julien Grall


From xen-devel-bounces@lists.xenproject.org Mon Jan 08 10:27:35 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 08 Jan 2024 10:27:35 +0000
Received: from list by lists.xenproject.org with outflank-mailman.663303.1033182 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMmr0-0003Fu-GK; Mon, 08 Jan 2024 10:27:34 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 663303.1033182; Mon, 08 Jan 2024 10:27:34 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMmr0-0003Fn-Dp; Mon, 08 Jan 2024 10:27:34 +0000
Received: by outflank-mailman (input) for mailman id 663303;
 Mon, 08 Jan 2024 10:27:32 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=pvth=IS=minervasys.tech=carlo.nonato@srs-se1.protection.inumbo.net>)
 id 1rMmqy-0003EH-Mq
 for xen-devel@lists.xenproject.org; Mon, 08 Jan 2024 10:27:32 +0000
Received: from mail-lf1-x133.google.com (mail-lf1-x133.google.com
 [2a00:1450:4864:20::133])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 86800eab-ae10-11ee-9b0f-b553b5be7939;
 Mon, 08 Jan 2024 11:27:29 +0100 (CET)
Received: by mail-lf1-x133.google.com with SMTP id
 2adb3069b0e04-50e7f58c5fbso1859894e87.1
 for <xen-devel@lists.xenproject.org>; Mon, 08 Jan 2024 02:27:29 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 86800eab-ae10-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=minervasys-tech.20230601.gappssmtp.com; s=20230601; t=1704709649; x=1705314449; darn=lists.xenproject.org;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:from:to:cc:subject:date
         :message-id:reply-to;
        bh=XnixoJzZqyIR+tL67AVkRGdvUC6fntVBwqNGzlsgaQU=;
        b=BL2YwrsOvaTLahKxJBzccBE3GmJryR6hb6m9S03YVzcp/XLkjPDo45bBTGds1aKXdi
         hOPPyGVZmeOJL/I1A7d9sTWkmag2gMAYPCfQNZhIizqkuky1GWcXX4I5r9nd4euSk2tP
         wPgoYGy6aEPGgB1fYE9VA5G/g1djnVKAZianC44cPBeIsDRttrwIf7FfHFDgrFh+4l1N
         bN5L1os9aGy2ysdJn/6YRooUiYrMYV8MHQ08JgwdeO8p6psQxLD0KE2tdj5SVpDfKmFX
         Vo1EP4A4KRHAe7AFvNserRFNlgp4CQQz6XejquCUwukE0XTGl5dsXi9QYJme8gtJEBgy
         SSZQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704709649; x=1705314449;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to;
        bh=XnixoJzZqyIR+tL67AVkRGdvUC6fntVBwqNGzlsgaQU=;
        b=h8A3KtS1YFkNhDcCszX+uiK3lC1ICHI3aapgrvcZVx8knIy65UGnpXQ/bs6dRFhT96
         3IPms4VYs5jGPbCyspCgmpq7HgPaRfCoFdG+E2pU8bxhKUNzRGYsf8RUX9VvsjKejq2V
         GbdD1vJfDR4P4AxM3Hp5WLeo23xEjlxYtX+7OT48lz51K4ToE8mpL9HidsR4lc+qVPZ8
         ytqciMN5UBjzaYT3B0UPKd3E6l4yzAKS3XCyK3lXwN1laPvtfrNENIuRijiplsZ5LfQV
         H1H+fIg4qnN7qr8azn88ggPOZ9m/TB6B8YN8b+dR+U4vABdm98lFaASjZQTWZfeB3uJg
         wCZg==
X-Gm-Message-State: AOJu0YyKHwt3/lzOHO3nBCt0SwuHaaHphjUEf5vDuwJCK4zYkQmEQgFt
	8To6tsBGfUWYSjXlYjhEZUo1cWHVIgXselCpz/nLrZcINnacig==
X-Google-Smtp-Source: AGHT+IF+6+iBUDA3b0GnoX2j4dgGIZuplso7Rlc3dShDn0mEaAyAFVOfBFZgIb6KGUobxxRu/NjSBk14QTjmaezt0rU=
X-Received: by 2002:a05:6512:224b:b0:50e:76bb:fc82 with SMTP id
 i11-20020a056512224b00b0050e76bbfc82mr1452146lfu.69.1704709648942; Mon, 08
 Jan 2024 02:27:28 -0800 (PST)
MIME-Version: 1.0
References: <20240102095138.17933-1-carlo.nonato@minervasys.tech>
 <20240102095138.17933-5-carlo.nonato@minervasys.tech> <99295edf-6c9c-4d06-ba20-86db67100561@xen.org>
In-Reply-To: <99295edf-6c9c-4d06-ba20-86db67100561@xen.org>
From: Carlo Nonato <carlo.nonato@minervasys.tech>
Date: Mon, 8 Jan 2024 11:27:17 +0100
Message-ID: <CAG+AhRWd9E5sQPY-sxN+WGTSWtvRXGN2FnZC2Vy6LPyynKGLcQ@mail.gmail.com>
Subject: Re: [PATCH v5 04/13] xen: extend domctl interface for cache coloring
To: Julien Grall <julien@xen.org>
Cc: xen-devel@lists.xenproject.org, 
	Stefano Stabellini <sstabellini@kernel.org>, Bertrand Marquis <bertrand.marquis@arm.com>, 
	Michal Orzel <michal.orzel@amd.com>, Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>, 
	Andrew Cooper <andrew.cooper3@citrix.com>, George Dunlap <george.dunlap@citrix.com>, 
	Jan Beulich <jbeulich@suse.com>, Wei Liu <wl@xen.org>, 
	Marco Solieri <marco.solieri@minervasys.tech>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

Hi Julien,

On Fri, Jan 5, 2024 at 6:26=E2=80=AFPM Julien Grall <julien@xen.org> wrote:
>
> Hi Carlo,
>
> On 02/01/2024 09:51, Carlo Nonato wrote:
> > This commit updates the domctl interface to allow the user to set cache
> > coloring configurations from the toolstack.
> > It also implements the functionality for arm64.
> >
> > Based on original work from: Luca Miccio <lucmiccio@gmail.com>
> >
> > Signed-off-by: Carlo Nonato <carlo.nonato@minervasys.tech>
> > Signed-off-by: Marco Solieri <marco.solieri@minervasys.tech>
> > ---
> > v5:
> > - added a new hypercall to set colors
> > - uint for the guest handle
> > v4:
> > - updated XEN_DOMCTL_INTERFACE_VERSION
> > ---
> >   xen/arch/arm/llc-coloring.c    | 17 +++++++++++++++++
> >   xen/common/domctl.c            | 11 +++++++++++
> >   xen/include/public/domctl.h    | 10 +++++++++-
> >   xen/include/xen/llc-coloring.h |  3 +++
> >   4 files changed, 40 insertions(+), 1 deletion(-)
> >
> > diff --git a/xen/arch/arm/llc-coloring.c b/xen/arch/arm/llc-coloring.c
> > index 5ce58aba70..a08614ec36 100644
> > --- a/xen/arch/arm/llc-coloring.c
> > +++ b/xen/arch/arm/llc-coloring.c
> > @@ -9,6 +9,7 @@
> >    *    Carlo Nonato <carlo.nonato@minervasys.tech>
> >    */
> >   #include <xen/errno.h>
> > +#include <xen/guest_access.h>
> >   #include <xen/keyhandler.h>
> >   #include <xen/llc-coloring.h>
> >   #include <xen/param.h>
> > @@ -278,6 +279,22 @@ int dom0_set_llc_colors(struct domain *d)
> >       return domain_check_colors(d);
> >   }
> >
> > +int domain_set_llc_colors_domctl(struct domain *d,
> > +                                 const struct xen_domctl_set_llc_color=
s *config)
> > +{
> > +    if ( d->num_llc_colors )
> > +        return -EEXIST;
> > +
> > +    if ( domain_alloc_colors(d, config->num_llc_colors) )
>
> domain_alloc_colors() doesn't sanity check config->num_llc_colors before
> allocating the array. You want a check the size before so we would not
> try to allocate an arbitrary amount of memory.
>
> > +        return -ENOMEM;
> > +
> > +    if ( copy_from_guest(d->llc_colors, config->llc_colors,
> > +                         config->num_llc_colors) )
> > +        return -EFAULT;
> > +
> > +    return domain_check_colors(d);
> > +}
> > +
> >   /*
> >    * Local variables:
> >    * mode: C
> > diff --git a/xen/common/domctl.c b/xen/common/domctl.c
> > index f5a71ee5f7..b6867d0602 100644
> > --- a/xen/common/domctl.c
> > +++ b/xen/common/domctl.c
> > @@ -8,6 +8,7 @@
> >
> >   #include <xen/types.h>
> >   #include <xen/lib.h>
> > +#include <xen/llc-coloring.h>
> >   #include <xen/err.h>
> >   #include <xen/mm.h>
> >   #include <xen/sched.h>
> > @@ -858,6 +859,16 @@ long do_domctl(XEN_GUEST_HANDLE_PARAM(xen_domctl_t=
) u_domctl)
> >                   __HYPERVISOR_domctl, "h", u_domctl);
> >           break;
> >
> > +    case XEN_DOMCTL_set_llc_colors:
> > +        if ( !llc_coloring_enabled )
> > +            break;
> > +
> > +        ret =3D domain_set_llc_colors_domctl(d, &op->u.set_llc_colors)=
;
> > +        if ( ret =3D=3D -EEXIST )
> > +            printk(XENLOG_ERR
> > +                   "Can't set LLC colors on an already created domain\=
n");
>
> To me, the message doesn't match the check in
> domain_set_llc_colors_domctl(). But I think you want to check that no
> memory was yet allocated to the domain. Otherwise, you coloring will be
> wrong.
>
> Also, it is a bit unclear why you print a message for -EEXIST but not
> the others. In this instance, I would consider to print nothing at all.

The problem here is that we don't support recoloring. When a domain is
created it receives a coloring configuration and it can't change. If this
hypercall is called twice I have to stop the second time somehow. I'm ok
with printing nothing, but -EEXIST to me seems logical.

> > +        break;
> > +
> >       default:
> >           ret =3D arch_do_domctl(op, d, u_domctl);
> >           break;
> > diff --git a/xen/include/public/domctl.h b/xen/include/public/domctl.h
> > index a33f9ec32b..2b12069294 100644
> > --- a/xen/include/public/domctl.h
> > +++ b/xen/include/public/domctl.h
> > @@ -21,7 +21,7 @@
> >   #include "hvm/save.h"
> >   #include "memory.h"
> >
> > -#define XEN_DOMCTL_INTERFACE_VERSION 0x00000016
> > +#define XEN_DOMCTL_INTERFACE_VERSION 0x00000017
> >
> >   /*
> >    * NB. xen_domctl.domain is an IN/OUT parameter for this operation.
> > @@ -1190,6 +1190,12 @@ struct xen_domctl_vmtrace_op {
> >   typedef struct xen_domctl_vmtrace_op xen_domctl_vmtrace_op_t;
> >   DEFINE_XEN_GUEST_HANDLE(xen_domctl_vmtrace_op_t);
> >
> > +struct xen_domctl_set_llc_colors {
> > +    /* IN LLC coloring parameters */
> > +    unsigned int num_llc_colors;
>
> I think there will be a padding here. So can you make it explicit?
>
> > +    XEN_GUEST_HANDLE_64(uint) llc_colors;
> > +};
> > +
> >   struct xen_domctl {
> >       uint32_t cmd;
> >   #define XEN_DOMCTL_createdomain                   1
> > @@ -1277,6 +1283,7 @@ struct xen_domctl {
> >   #define XEN_DOMCTL_vmtrace_op                    84
> >   #define XEN_DOMCTL_get_paging_mempool_size       85
> >   #define XEN_DOMCTL_set_paging_mempool_size       86
> > +#define XEN_DOMCTL_set_llc_colors                87
> >   #define XEN_DOMCTL_gdbsx_guestmemio            1000
> >   #define XEN_DOMCTL_gdbsx_pausevcpu             1001
> >   #define XEN_DOMCTL_gdbsx_unpausevcpu           1002
> > @@ -1339,6 +1346,7 @@ struct xen_domctl {
> >           struct xen_domctl_vuart_op          vuart_op;
> >           struct xen_domctl_vmtrace_op        vmtrace_op;
> >           struct xen_domctl_paging_mempool    paging_mempool;
> > +        struct xen_domctl_set_llc_colors    set_llc_colors;
> >           uint8_t                             pad[128];
> >       } u;
> >   };
> > diff --git a/xen/include/xen/llc-coloring.h b/xen/include/xen/llc-color=
ing.h
> > index cedd97d4b5..fa2edc8ad8 100644
> > --- a/xen/include/xen/llc-coloring.h
> > +++ b/xen/include/xen/llc-coloring.h
> > @@ -33,6 +33,9 @@ extern bool llc_coloring_enabled;
> >   void domain_llc_coloring_free(struct domain *d);
> >   void domain_dump_llc_colors(struct domain *d);
> >
> > +int domain_set_llc_colors_domctl(struct domain *d,
> > +                                 const struct xen_domctl_set_llc_color=
s *config);
> > +
> >   #endif /* __COLORING_H__ */
> >
> >   /*
>
> Cheers,
>
> --
> Julien Grall

Thanks.


From xen-devel-bounces@lists.xenproject.org Mon Jan 08 10:47:23 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 08 Jan 2024 10:47:23 +0000
Received: from list by lists.xenproject.org with outflank-mailman.663345.1033225 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMnA7-0001OC-Bh; Mon, 08 Jan 2024 10:47:19 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 663345.1033225; Mon, 08 Jan 2024 10:47:19 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMnA7-0001O5-8R; Mon, 08 Jan 2024 10:47:19 +0000
Received: by outflank-mailman (input) for mailman id 663345;
 Mon, 08 Jan 2024 10:47:17 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=KH4C=IS=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rMnA5-0001Kw-PM
 for xen-devel@lists.xenproject.org; Mon, 08 Jan 2024 10:47:17 +0000
Received: from mail-lj1-x22f.google.com (mail-lj1-x22f.google.com
 [2a00:1450:4864:20::22f])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 49c6d6a9-ae13-11ee-98ef-6d05b1d4d9a1;
 Mon, 08 Jan 2024 11:47:16 +0100 (CET)
Received: by mail-lj1-x22f.google.com with SMTP id
 38308e7fff4ca-2ccbded5aa4so17770711fa.1
 for <xen-devel@lists.xenproject.org>; Mon, 08 Jan 2024 02:47:16 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 j31-20020a056e02221f00b00351287f213bsm2484112ilf.14.2024.01.08.02.47.13
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 08 Jan 2024 02:47:15 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 49c6d6a9-ae13-11ee-98ef-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1704710836; x=1705315636; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=888M9SwabwdmT7hmEggD9FkVbqJ79SKXYl/DOiT7WtQ=;
        b=UQaAS6PORCorrz3JHn6rvo8EAG1rRzLnmmmrjB81KsJxMTEl0UGzDPIQUM/LfoNxz4
         du/a46np9/s4HEbjDIhSesUhzY7unFeoD5QpLXa4CuL2LRy9Y/yxztOhM4XjM8qp5IsF
         J5i8zoH5HKMQf7DB0BCw9dW/DU1rDGVf/O3DWb114aIQcuIcyb7OWmg8eQqQ1C2SRxG1
         BRBMIcHdjb8KrGPYjchMScKM/YYNz2ZEtCk47c5Sp9RwpfdTMeUHRYYSRmnKHhfRgpjA
         vmUWQ1f8Vf3v3qRw8IawVWDFau61wJbnbCPYmuLrefFC1SQcK5XiVcAKGe8ECQlqTaPf
         qt8Q==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704710836; x=1705315636;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=888M9SwabwdmT7hmEggD9FkVbqJ79SKXYl/DOiT7WtQ=;
        b=g6dpYDhyR1XV4DFooagRRG0Yi56uBRnXrzzBkw2z0LDwnT4qMtncIb1FMzucZwJ7em
         U1K/p164PkwqOQBnijRKpGsCyGPTvllwV7rAh965h3PZU3loa+zCpbjSgrs7lOHCfngc
         Po7372vhCtsgh2HvxJv3IGbKaI1q/dz2aYY53yaCgYkCnm/nZmk6CbVfeLfcYVYPGhNI
         kpc2tW76G7vvTMHm/CZ8lzMqep0Rl/1eFwFGTk+dUZoBhJZkcKCTxkNew6ARUB0kYo+d
         cra1KBXFd1KGy2VvkLZAatZ2U+flBzxPIgmqct5Ar8hFrEIEqJ5d2t6y2xC+Pie1a09y
         L7Tg==
X-Gm-Message-State: AOJu0YwFgYHdtbRrEBCGcOKB3+lTaSxhfqAjGxTTgEd8ZrhpJPSAnAVF
	/4s89KsuND1CYLXMvh7tJZH/U5SnD6qd
X-Google-Smtp-Source: AGHT+IEkyxq6CL0J0J2LO9zHD7XgcrJrZV/w965EMNpnt5glgpOwwbvFntUtro3O7qmdULBO6dPKZQ==
X-Received: by 2002:a2e:8853:0:b0:2cd:1c94:82c4 with SMTP id z19-20020a2e8853000000b002cd1c9482c4mr1474635ljj.99.1704710836011;
        Mon, 08 Jan 2024 02:47:16 -0800 (PST)
Message-ID: <7491befc-e623-446e-99d7-56972bc4fc7d@suse.com>
Date: Mon, 8 Jan 2024 11:47:14 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v6 5/9] xen/asm-generic: introduce stub header numa.h
Content-Language: en-US
To: Oleksii Kurochko <oleksii.kurochko@gmail.com>
Cc: Stefano Stabellini <sstabellini@kernel.org>, Julien Grall
 <julien@xen.org>, Bertrand Marquis <bertrand.marquis@arm.com>,
 Michal Orzel <michal.orzel@amd.com>,
 Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
 Andrew Cooper <andrew.cooper3@citrix.com>,
 George Dunlap <george.dunlap@citrix.com>, Wei Liu <wl@xen.org>,
 Shawn Anastasio <sanastasio@raptorengineering.com>,
 xen-devel@lists.xenproject.org
References: <cover.1703072575.git.oleksii.kurochko@gmail.com>
 <08bca9a4158a190a0a953e5bc071a512cfe5f0f8.1703072575.git.oleksii.kurochko@gmail.com>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <08bca9a4158a190a0a953e5bc071a512cfe5f0f8.1703072575.git.oleksii.kurochko@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 20.12.2023 15:08, Oleksii Kurochko wrote:
> <asm/numa.h> is common through some archs so it is moved
> to asm-generic.
> 
> Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>
> Reviewed-by: Michal Orzel <michal.orzel@amd.com>
> Acked-by: Jan Beulich <jbeulich@suse.com>
> Acked-by: Shawn Anastasio <sanastasio@raptorengineering.com>

I'd like to withdraw my ack here. As said elsewhere (and see the
respective patch), I don't think a generic header is wanted or
needed here (nor in similar other cases). !NUMA logic ought to live
in xen/numa.h.

Jan

> ---
> Changes in V6:
>  - Rebase only.
> ---
> Changes in V5:
>   - Added Acked-by: Jan Beulich <jbeulich@suse.com>
>   - Updated the comment around first_valid_mfn. ( Arm -> GENERIC )
>   - Added Acked-by: Shawn Anastasio <sanastasio@raptorengineering.com>
> ---
> Changes in V4:
>  - Updated guards name: *ARCH_GENERIC* -> *ASM_GENERIC*.
>  - Moved inclusion of xen/mm-frame.h under "#ifndef CONFIG_NUMA".
>  - Added Reviewed-by: Michal Orzel <michal.orzel@amd.com>.
> ---
> Changes in V3:
>  - Remove old header inclusion in asm-generic numa.h and include
>    <xen/mm-frame.h> and <xen/stdint.h>
>  - Drop Arm and PPC's numa.h and use asm-generic version instead.
> ---
> Changes in V2:
> 	- update the commit message.
> 	- change u8 to uint8_t.
> 	- add ifnded CONFIG_NUMA.
> ---
>  xen/arch/arm/include/asm/Makefile             |  1 +
>  xen/arch/ppc/include/asm/Makefile             |  1 +
>  xen/arch/ppc/include/asm/numa.h               | 26 -------------------
>  .../asm => include/asm-generic}/numa.h        | 16 +++++++-----
>  4 files changed, 12 insertions(+), 32 deletions(-)
>  delete mode 100644 xen/arch/ppc/include/asm/numa.h
>  rename xen/{arch/arm/include/asm => include/asm-generic}/numa.h (67%)
> 
> diff --git a/xen/arch/arm/include/asm/Makefile b/xen/arch/arm/include/asm/Makefile
> index 8221429c2c..0c855a798a 100644
> --- a/xen/arch/arm/include/asm/Makefile
> +++ b/xen/arch/arm/include/asm/Makefile
> @@ -2,6 +2,7 @@
>  generic-y += altp2m.h
>  generic-y += hardirq.h
>  generic-y += iocap.h
> +generic-y += numa.h
>  generic-y += paging.h
>  generic-y += percpu.h
>  generic-y += random.h
> diff --git a/xen/arch/ppc/include/asm/Makefile b/xen/arch/ppc/include/asm/Makefile
> index a8e848d4d0..f09c5ea8a1 100644
> --- a/xen/arch/ppc/include/asm/Makefile
> +++ b/xen/arch/ppc/include/asm/Makefile
> @@ -4,6 +4,7 @@ generic-y += div64.h
>  generic-y += hardirq.h
>  generic-y += hypercall.h
>  generic-y += iocap.h
> +generic-y += numa.h
>  generic-y += paging.h
>  generic-y += percpu.h
>  generic-y += random.h
> diff --git a/xen/arch/ppc/include/asm/numa.h b/xen/arch/ppc/include/asm/numa.h
> deleted file mode 100644
> index 7fdf66c3da..0000000000
> --- a/xen/arch/ppc/include/asm/numa.h
> +++ /dev/null
> @@ -1,26 +0,0 @@
> -#ifndef __ASM_PPC_NUMA_H__
> -#define __ASM_PPC_NUMA_H__
> -
> -#include <xen/types.h>
> -#include <xen/mm.h>
> -
> -typedef uint8_t nodeid_t;
> -
> -/* Fake one node for now. See also node_online_map. */
> -#define cpu_to_node(cpu) 0
> -#define node_to_cpumask(node)   (cpu_online_map)
> -
> -/*
> - * TODO: make first_valid_mfn static when NUMA is supported on PPC, this
> - * is required because the dummy helpers are using it.
> - */
> -extern mfn_t first_valid_mfn;
> -
> -/* XXX: implement NUMA support */
> -#define node_spanned_pages(nid) (max_page - mfn_x(first_valid_mfn))
> -#define node_start_pfn(nid) (mfn_x(first_valid_mfn))
> -#define __node_distance(a, b) (20)
> -
> -#define arch_want_default_dmazone() (false)
> -
> -#endif /* __ASM_PPC_NUMA_H__ */
> diff --git a/xen/arch/arm/include/asm/numa.h b/xen/include/asm-generic/numa.h
> similarity index 67%
> rename from xen/arch/arm/include/asm/numa.h
> rename to xen/include/asm-generic/numa.h
> index e2bee2bd82..7f95a77e89 100644
> --- a/xen/arch/arm/include/asm/numa.h
> +++ b/xen/include/asm-generic/numa.h
> @@ -1,18 +1,21 @@
> -#ifndef __ARCH_ARM_NUMA_H
> -#define __ARCH_ARM_NUMA_H
> +/* SPDX-License-Identifier: GPL-2.0-only */
> +#ifndef __ASM_GENERIC_NUMA_H
> +#define __ASM_GENERIC_NUMA_H
>  
> -#include <xen/mm.h>
> +#include <xen/stdint.h>
>  
> -typedef u8 nodeid_t;
> +typedef uint8_t nodeid_t;
>  
>  #ifndef CONFIG_NUMA
>  
> +#include <xen/mm-frame.h>
> +
>  /* Fake one node for now. See also node_online_map. */
>  #define cpu_to_node(cpu) 0
>  #define node_to_cpumask(node)   (cpu_online_map)
>  
>  /*
> - * TODO: make first_valid_mfn static when NUMA is supported on Arm, this
> + * TODO: make first_valid_mfn static when NUMA is supported on GENERIC, this
>   * is required because the dummy helpers are using it.
>   */
>  extern mfn_t first_valid_mfn;
> @@ -26,7 +29,8 @@ extern mfn_t first_valid_mfn;
>  
>  #define arch_want_default_dmazone() (false)
>  
> -#endif /* __ARCH_ARM_NUMA_H */
> +#endif /* __ASM_GENERIC_NUMA_H */
> +
>  /*
>   * Local variables:
>   * mode: C



From xen-devel-bounces@lists.xenproject.org Mon Jan 08 11:01:09 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 08 Jan 2024 11:01:09 +0000
Received: from list by lists.xenproject.org with outflank-mailman.663379.1033235 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMnNO-000691-IT; Mon, 08 Jan 2024 11:01:02 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 663379.1033235; Mon, 08 Jan 2024 11:01:02 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMnNO-00068u-Ft; Mon, 08 Jan 2024 11:01:02 +0000
Received: by outflank-mailman (input) for mailman id 663379;
 Mon, 08 Jan 2024 11:01:01 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>) id 1rMnNN-00068o-Nm
 for xen-devel@lists.xenproject.org; Mon, 08 Jan 2024 11:01:01 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rMnNN-0002Tg-7R; Mon, 08 Jan 2024 11:01:01 +0000
Received: from gw1.octic.net ([88.97.20.152] helo=[10.0.1.240])
 by xenbits.xenproject.org with esmtpsa
 (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rMnNN-0005IA-1i; Mon, 08 Jan 2024 11:01:01 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
	s=20200302mail; h=Content-Transfer-Encoding:Content-Type:In-Reply-To:From:
	References:Cc:To:Subject:MIME-Version:Date:Message-ID;
	bh=XVKBz4mpQ2awQiK5t/EtJFMjU65xMnh6Qsd8oGd077Y=; b=J54frkLfSthCph6EbUIeFrzO/u
	/k1QIvLRpVWkXaOPDTT880dB4CUpBHcIov/VRcy/q8YZI6YA3HhT9RA82quGcn6ENsXC8EDeyjjJJ
	IyAtAHF6vYHtfHVfMNfA3YYibSYQqqv2U5qmpp0bXPX5maib02j2hqiXMT5CXimExdsA=;
Message-ID: <4675a541-b9dc-476a-a6ff-0247a4403292@xen.org>
Date: Mon, 8 Jan 2024 11:00:58 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v5 04/13] xen: extend domctl interface for cache coloring
Content-Language: en-GB
To: Carlo Nonato <carlo.nonato@minervasys.tech>
Cc: xen-devel@lists.xenproject.org,
 Stefano Stabellini <sstabellini@kernel.org>,
 Bertrand Marquis <bertrand.marquis@arm.com>,
 Michal Orzel <michal.orzel@amd.com>,
 Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
 Andrew Cooper <andrew.cooper3@citrix.com>,
 George Dunlap <george.dunlap@citrix.com>, Jan Beulich <jbeulich@suse.com>,
 Wei Liu <wl@xen.org>, Marco Solieri <marco.solieri@minervasys.tech>
References: <20240102095138.17933-1-carlo.nonato@minervasys.tech>
 <20240102095138.17933-5-carlo.nonato@minervasys.tech>
 <99295edf-6c9c-4d06-ba20-86db67100561@xen.org>
 <CAG+AhRWd9E5sQPY-sxN+WGTSWtvRXGN2FnZC2Vy6LPyynKGLcQ@mail.gmail.com>
From: Julien Grall <julien@xen.org>
In-Reply-To: <CAG+AhRWd9E5sQPY-sxN+WGTSWtvRXGN2FnZC2Vy6LPyynKGLcQ@mail.gmail.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit

Hi Carlo,

On 08/01/2024 10:27, Carlo Nonato wrote:
> On Fri, Jan 5, 2024 at 6:26 PM Julien Grall <julien@xen.org> wrote:
>> On 02/01/2024 09:51, Carlo Nonato wrote:
>>> This commit updates the domctl interface to allow the user to set cache
>>> coloring configurations from the toolstack.
>>> It also implements the functionality for arm64.
>>>
>>> Based on original work from: Luca Miccio <lucmiccio@gmail.com>
>>>
>>> Signed-off-by: Carlo Nonato <carlo.nonato@minervasys.tech>
>>> Signed-off-by: Marco Solieri <marco.solieri@minervasys.tech>
>>> ---
>>> v5:
>>> - added a new hypercall to set colors
>>> - uint for the guest handle
>>> v4:
>>> - updated XEN_DOMCTL_INTERFACE_VERSION
>>> ---
>>>    xen/arch/arm/llc-coloring.c    | 17 +++++++++++++++++
>>>    xen/common/domctl.c            | 11 +++++++++++
>>>    xen/include/public/domctl.h    | 10 +++++++++-
>>>    xen/include/xen/llc-coloring.h |  3 +++
>>>    4 files changed, 40 insertions(+), 1 deletion(-)
>>>
>>> diff --git a/xen/arch/arm/llc-coloring.c b/xen/arch/arm/llc-coloring.c
>>> index 5ce58aba70..a08614ec36 100644
>>> --- a/xen/arch/arm/llc-coloring.c
>>> +++ b/xen/arch/arm/llc-coloring.c
>>> @@ -9,6 +9,7 @@
>>>     *    Carlo Nonato <carlo.nonato@minervasys.tech>
>>>     */
>>>    #include <xen/errno.h>
>>> +#include <xen/guest_access.h>
>>>    #include <xen/keyhandler.h>
>>>    #include <xen/llc-coloring.h>
>>>    #include <xen/param.h>
>>> @@ -278,6 +279,22 @@ int dom0_set_llc_colors(struct domain *d)
>>>        return domain_check_colors(d);
>>>    }
>>>
>>> +int domain_set_llc_colors_domctl(struct domain *d,
>>> +                                 const struct xen_domctl_set_llc_colors *config)
>>> +{
>>> +    if ( d->num_llc_colors )
>>> +        return -EEXIST;
>>> +
>>> +    if ( domain_alloc_colors(d, config->num_llc_colors) )
>>
>> domain_alloc_colors() doesn't sanity check config->num_llc_colors before
>> allocating the array. You want a check the size before so we would not
>> try to allocate an arbitrary amount of memory.
>>
>>> +        return -ENOMEM;
>>> +
>>> +    if ( copy_from_guest(d->llc_colors, config->llc_colors,
>>> +                         config->num_llc_colors) )
>>> +        return -EFAULT;
>>> +
>>> +    return domain_check_colors(d);
>>> +}
>>> +
>>>    /*
>>>     * Local variables:
>>>     * mode: C
>>> diff --git a/xen/common/domctl.c b/xen/common/domctl.c
>>> index f5a71ee5f7..b6867d0602 100644
>>> --- a/xen/common/domctl.c
>>> +++ b/xen/common/domctl.c
>>> @@ -8,6 +8,7 @@
>>>
>>>    #include <xen/types.h>
>>>    #include <xen/lib.h>
>>> +#include <xen/llc-coloring.h>
>>>    #include <xen/err.h>
>>>    #include <xen/mm.h>
>>>    #include <xen/sched.h>
>>> @@ -858,6 +859,16 @@ long do_domctl(XEN_GUEST_HANDLE_PARAM(xen_domctl_t) u_domctl)
>>>                    __HYPERVISOR_domctl, "h", u_domctl);
>>>            break;
>>>
>>> +    case XEN_DOMCTL_set_llc_colors:
>>> +        if ( !llc_coloring_enabled )
>>> +            break;
>>> +
>>> +        ret = domain_set_llc_colors_domctl(d, &op->u.set_llc_colors);
>>> +        if ( ret == -EEXIST )
>>> +            printk(XENLOG_ERR
>>> +                   "Can't set LLC colors on an already created domain\n");
>>
>> To me, the message doesn't match the check in
>> domain_set_llc_colors_domctl(). But I think you want to check that no
>> memory was yet allocated to the domain. Otherwise, you coloring will be
>> wrong.
>>
>> Also, it is a bit unclear why you print a message for -EEXIST but not
>> the others. In this instance, I would consider to print nothing at all.
> 
> The problem here is that we don't support recoloring. When a domain is
> created it receives a coloring configuration and it can't change. If this
> hypercall is called twice I have to stop the second time somehow.
Looking at your check what you prevent is a toolstack updating the array 
twice. But that would be ok (/!\ I am not saying we should allow it) so 
long no memory has been allocated to the domain.

But I also consider we would re-color once we started to allocate memory 
for the domain (either RAM or P2M). This seems to be missed out in your 
check.

Cheers,

-- 
Julien Grall


From xen-devel-bounces@lists.xenproject.org Mon Jan 08 11:05:10 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 08 Jan 2024 11:05:10 +0000
Received: from list by lists.xenproject.org with outflank-mailman.663382.1033245 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMnRN-00076P-4G; Mon, 08 Jan 2024 11:05:09 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 663382.1033245; Mon, 08 Jan 2024 11:05:09 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMnRN-00076I-0h; Mon, 08 Jan 2024 11:05:09 +0000
Received: by outflank-mailman (input) for mailman id 663382;
 Mon, 08 Jan 2024 11:05:07 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=pvth=IS=minervasys.tech=carlo.nonato@srs-se1.protection.inumbo.net>)
 id 1rMnRL-00076C-Pf
 for xen-devel@lists.xenproject.org; Mon, 08 Jan 2024 11:05:07 +0000
Received: from mail-ej1-x62d.google.com (mail-ej1-x62d.google.com
 [2a00:1450:4864:20::62d])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id c762f8a5-ae15-11ee-98ef-6d05b1d4d9a1;
 Mon, 08 Jan 2024 12:05:05 +0100 (CET)
Received: by mail-ej1-x62d.google.com with SMTP id
 a640c23a62f3a-a28ee72913aso464795366b.1
 for <xen-devel@lists.xenproject.org>; Mon, 08 Jan 2024 03:05:06 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: c762f8a5-ae15-11ee-98ef-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=minervasys-tech.20230601.gappssmtp.com; s=20230601; t=1704711906; x=1705316706; darn=lists.xenproject.org;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:from:to:cc:subject:date
         :message-id:reply-to;
        bh=hzBzOiJjjKRatGkqE625KGrqN78Lf2l8iURJUB7hef8=;
        b=HKP6E6ySmxL7iTclUs81g/d1lABZPcaP3igvH6ySnhsbfrL+wBdFqLtshDZGG3Xkjh
         ymP/51XGTQ3kI5xjKLqoaqjDagwCW6zlutX5oZIBQnt6WnF6r53QeAhfZfFx2MlU/uL7
         n0l34LAWUDPOMppYLVNa6WTsa8kbjDzwhYe817zenWAbY3SYWe82FUZEzcnAGmZAOmAO
         mjUGZvFFyiYV0IeLhJSt+USpEi1t005gdVp+QWOdm9ZVXKxpQYYHDhyzci3Ifrn6tgi8
         lX0IO0AoAR1zbJLKP4dZnb5914UQ7mauczPsuN6QuzWmeTCiyL6tDE5uANE729VxeEOB
         YEPw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704711906; x=1705316706;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to;
        bh=hzBzOiJjjKRatGkqE625KGrqN78Lf2l8iURJUB7hef8=;
        b=wMzPKOx5GS60LZki9/B1o6ATZGgBORzF84lkgrh2i8YLmktyjkaOWCv5OSwZs98HB6
         wqGYRIUURUtMRafmknLNOFHIlaEAYGTK2UHYDYKgs3aJNINTdcnL+iOdFurNvq1WDLz7
         qhH0qq7nG6pdk3+jD/eflL2Ndq02O38rtY2vERiQpuCWjKQmzyAdWL7EOHBhiQNZrGYT
         Pz2EQbJvQkjEagBgRPB9ji+2xv3WWn9mN4KQV8C4z8I2dtk4GgEvOHyIobaSp/1RwDz1
         Q/ybh8W5GRAdmt8hSJDSN++lglb4QX/exmd90PNtvEIIN46ls8LWxMvtst6+4YLsrkMH
         DHVA==
X-Gm-Message-State: AOJu0YyAoivltJIM236+pEFWd8cltA6aiFRxqc6L4uOSamyPoa0SSnh4
	AGLd6LYMGSEWNi6B1zZrew5VzKZ60JOTRGhCnucOQgQm8mtfjw==
X-Google-Smtp-Source: AGHT+IH0ixCVGk4ir9/GNqwUzNgs9ARhzPG9aE2ItNt9uYje7NuQlqtPxK8XSEPArL9+qpqVYDIGLXJiGZCRtFMCZvs=
X-Received: by 2002:a17:906:b10f:b0:a29:b31d:1dc6 with SMTP id
 u15-20020a170906b10f00b00a29b31d1dc6mr3442227ejy.6.1704711905728; Mon, 08 Jan
 2024 03:05:05 -0800 (PST)
MIME-Version: 1.0
References: <20240102095138.17933-1-carlo.nonato@minervasys.tech>
 <20240102095138.17933-4-carlo.nonato@minervasys.tech> <046e9949-d126-42b1-90a6-12af540d63bf@xen.org>
 <CAG+AhRWm4N7GV3HfkTNCvXQw7-6Woq=+zBqdHAgN=-PgGr-WRg@mail.gmail.com>
 <0905b0f4-9a5e-48c7-8764-58cdd440130f@xen.org> <CAG+AhRVL8_YMkw+Z4EcTLZgM7m10+9DToSkaeNLMaFY3gcng7Q@mail.gmail.com>
 <4f8b3a59-c277-4f2e-a9de-82ea9ce2eda0@xen.org>
In-Reply-To: <4f8b3a59-c277-4f2e-a9de-82ea9ce2eda0@xen.org>
From: Carlo Nonato <carlo.nonato@minervasys.tech>
Date: Mon, 8 Jan 2024 12:04:54 +0100
Message-ID: <CAG+AhRUE8MQjW=1rLsp79=MisUtjiB-5daXYz8S6-8JX6kAosA@mail.gmail.com>
Subject: Re: [PATCH v5 03/13] xen/arm: add Dom0 cache coloring support
To: Julien Grall <julien@xen.org>
Cc: xen-devel@lists.xenproject.org, 
	Stefano Stabellini <sstabellini@kernel.org>, Bertrand Marquis <bertrand.marquis@arm.com>, 
	Michal Orzel <michal.orzel@amd.com>, Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>, 
	Andrew Cooper <andrew.cooper3@citrix.com>, George Dunlap <george.dunlap@citrix.com>, 
	Jan Beulich <jbeulich@suse.com>, Wei Liu <wl@xen.org>, 
	Marco Solieri <marco.solieri@minervasys.tech>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

Hi Julien,

On Mon, Jan 8, 2024 at 11:25=E2=80=AFAM Julien Grall <julien@xen.org> wrote=
:
>
> Hi Carlo,
>
> On 08/01/2024 10:06, Carlo Nonato wrote:
> >> One of the reason is at least in the dom0less case, you will override
> >> the value afterwards.
> >
> > In that case I need to allocate the array before parsing the string.
> > I allocate a full array then the string is parsed and the actual size i=
s found
> > at the end of this phase. Knowing the actual size would require two par=
sing
> > stages. Yes I'm wasting a bit of memory by oversizing the array here. I=
s it
> > a problem?
>
> While wasting memory is indeed not nice. This wasn't the main reason of
> this comment.
>
> The reason is that you seem to set d->num_lcc_colors will but will never
> be read before it gets overwritten. Looking again at the code, you are
> also assuming parse_colors() will always take an array of nr_colors.

Ok, I think I understood, but that happens only in dom0less case because
d->num_llc_colors is overwritten after parsing. In other cases it's ok to s=
et
it there. Anyway I can move the assignment out of the function if that is
clearer.

> It would be better if parse_colors() takes the maximum size of the array
> in parameter. This would harden the code and it makes more sense for
> domain_alloc_colors() to set d->num_lcc_colors.

I don't understand this. parse_colors() must take only arrays of nr_colors
size (the global, maximum number of colors), otherwise the parsed string
config could exceed the array size. Since we don't know in advance the real
size before parsing, I think it's better to pass only arrays that are alrea=
dy
allocated with the maximum size.
Doing as you said I would still pass nr_colors as the maximum size, but tha=
t
would be strange since the global would still be accessible.
If domain_alloc_colors() setting d->num_llc_colors is so confusing,
I will just move the assignment after the function call.

> Also, I just noticed you have a global variable named nr_colors and the
> function parse_colors() takes an argument called *num_colors. This is
> quite confusing, can we have better name?
>
> Maybe rename nr_colors to nr_global_colors and and num_colors to
> nr_array_colors?

I agree with the fact that naming is confusing. I would opt for max_nr_colo=
rs
for the global.

Thanks.

> Cheers,
>
> --
> Julien Grall


From xen-devel-bounces@lists.xenproject.org Mon Jan 08 11:16:23 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 08 Jan 2024 11:16:23 +0000
Received: from list by lists.xenproject.org with outflank-mailman.663387.1033255 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMnc7-0001aK-0a; Mon, 08 Jan 2024 11:16:15 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 663387.1033255; Mon, 08 Jan 2024 11:16:14 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMnc6-0001aD-Sw; Mon, 08 Jan 2024 11:16:14 +0000
Received: by outflank-mailman (input) for mailman id 663387;
 Mon, 08 Jan 2024 11:16:13 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=O4yG=IS=bugseng.com=federico.serafini@srs-se1.protection.inumbo.net>)
 id 1rMnc5-0001a7-Ax
 for xen-devel@lists.xenproject.org; Mon, 08 Jan 2024 11:16:13 +0000
Received: from support.bugseng.com (mail.bugseng.com [162.55.131.47])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 4fe8dc72-ae17-11ee-98ef-6d05b1d4d9a1;
 Mon, 08 Jan 2024 12:16:04 +0100 (CET)
Received: from [192.168.1.15] (host-79-44-205-232.retail.telecomitalia.it
 [79.44.205.232])
 by support.bugseng.com (Postfix) with ESMTPSA id DDB614EE0741;
 Mon,  8 Jan 2024 12:16:03 +0100 (CET)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 4fe8dc72-ae17-11ee-98ef-6d05b1d4d9a1
Message-ID: <8fa1f868-c7de-4a46-a827-a75c38513f6f@bugseng.com>
Date: Mon, 8 Jan 2024 12:16:03 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [XEN RFC] x86/uaccess: remove __{put,get}_user_bad()
To: Jan Beulich <jbeulich@suse.com>
Cc: consulting@bugseng.com, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger.pau@citrix.com>, Wei Liu <wl@xen.org>,
 xen-devel@lists.xenproject.org, Stefano Stabellini <sstabellini@kernel.org>,
 Nicola Vetrini <nicola.vetrini@bugseng.com>,
 Andrew Cooper <andrew.cooper3@citrix.com>, Julien Grall <julien@xen.org>
References: <9cf852da1c03b614bf5010132c58a18adc2a4161.1703155225.git.federico.serafini@bugseng.com>
 <a2050ac1-e205-4d7f-b9b1-aa625136e63a@suse.com>
 <0c5bbfde-4cf0-4878-b1ee-ccc8eb775464@citrix.com>
 <eb53449bd6595ea0931460e62dd57b9c@bugseng.com>
 <1330c757-1ca3-4b07-898b-799cbfa67e8a@suse.com>
 <6a39fe3e-524f-4e39-81bc-ffb3d48ba306@bugseng.com>
 <192c393a-3702-4cc3-af60-e2711098ec6d@suse.com>
Content-Language: en-US, it
From: Federico Serafini <federico.serafini@bugseng.com>
Organization: BUGSENG srl
In-Reply-To: <192c393a-3702-4cc3-af60-e2711098ec6d@suse.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit

On 08/01/24 09:02, Jan Beulich wrote:
> On 05.01.2024 17:19, Federico Serafini wrote:
>> Hello everyone,
>>
>> On 21/12/23 13:41, Jan Beulich wrote:
>>> On 21.12.2023 13:01, Nicola Vetrini wrote:
>>>> Hi Andrew,
>>>>
>>>> On 2023-12-21 12:03, Andrew Cooper wrote:
>>>>> On 21/12/2023 10:58 am, Jan Beulich wrote:
>>>>>> On 21.12.2023 11:53, Federico Serafini wrote:
>>>>>>> Remove declarations of __put_user_bad() and __get_user_bad()
>>>>>>> since they have no definition.
>>>>>>> Replace their uses with a break statement to address violations of
>>>>>>> MISRA C:2012 Rule 16.3 ("An unconditional `break' statement shall
>>>>>>> terminate every switch-clause").
>>>>>>> No functional change.
>>>>>>>
>>>>>>> Signed-off-by: Federico Serafini <federico.serafini@bugseng.com>
>>>>>>> ---
>>>>>>> Several violations of Rule 16.3 come from uses of macros
>>>>>>> get_unsafe_size() and put_unsafe_size().
>>>>>>> Looking at the macro definitions I found __get_user_bad() and
>>>>>>> __put_user_bad().
>>>>>>> I was wondering if instead of just adding the break statement I can
>>>>>>> also remove
>>>>>>> such functions which seem to not have a definition.
>>>>>> No, you can't. Try introducing a caller which "accidentally" uses the
>>>>>> wrong size. Without your change you'll observe the build failing (in
>>>>>> a somewhat obscure way, but still), while with your change bad code
>>>>>> will silently be generated.
>>>>>
>>>>> The construct here is deliberate.  It's a build time assertion that bad
>>>>> sizes aren't used.
>>>>>
>>>>> __bitop_bad_size() and __xsm_action_mismatch_detected() are the same
>>>>> pattern in other areas of code too, with the latter being more explicit
>>>>> because of how it's wrapped by LINKER_BUG_ON().
>>>>>
>>>>>
>>>>> It is slightly horrible, and not the most obvious construct for
>>>>> newcomers.  If there's an alternative way to get a build assertion, we
>>>>> could consider switching to a new pattern.
>>>>
>>>> would you be in favour of a solution with a BUILD_BUG_ON in the default
>>>> branch followed by a break?
>>>>
>>>> default:
>>>>        BUILD_BUG_ON(!size || size >=8 || (size & (size - 1)));
>>>>        break;
>>>
>>> I don't think this would compile - BUILD_BUG_ON() wants a compile-time
>>> constant passed.
>>
>> What do you think about adding the following macro to compiler.h:
>>
>> #define static_assert_unreachable(identifier) \
>>       asm("unreachable " #identifier " reached")
>>
>> It expands to an invalid assembly instruction that will lead to a
>> customizable error message generated by the assembler instead of the
>> linker (anticipating the error detection).
>>
>> The use of this macro will indicate a program point considered
>> unreachable (and as such removed) by the static analysis performed by
>> the compiler, even at an optimization level -O0.
>>
>> An example of use is in the default case of put_unsafe_size():
>>
>> default: static_assert_unreachable(default);
>>
>> In case a wrong size will be used, the following message will be
>> generated:
>>
>> ./arch/x86/include/asm/uaccess.h: Assembler messages:
>> ./arch/x86/include/asm/uaccess.h:257: Error: no such instruction:
>> `unreachable default reached'
> 
> Nice idea. To take it one step further, why not simply use the .error
> assembler directive then?

It seems good.

> 
>> Note that adopting the macro and discussing its definition are two
>> separate things:
>> I think we can all agree on the fact that the use of such macro improves
>> readability, so I would suggest its adoption.
>> Whereas for its definition, if you don't like the invalid asm
>> instruction, we could discuss for a different solution, for example,
>> the following is something similar to what you are doing now:
>>
>> #define static_assert_unreachable(identifier) \
>>       extern void identifier(void);             \
>>       identifier()
>>
>>
>> Note also that the problem of the missing break statement (that violates
>> Rule 16.3) is still present, it could be addressed by adding the break
>> or deviating for such special cases, do you have any preferences?
> 
> Amend the new macro's expansion by unreachable()?

It would work only if we also add macro unreachable() to the allowed
statements that can terminate a switch-clause.

I'll take this opportunity to clarify the Rule 16.3 and the deviation
system of ECLAIR for this rule (adding Julien in CC, he might be
interested in this).
The rationale of 16.3 is the avoidance of unintentional fall through.
To do this, the rule says to put an unconditional break statement at
the end of every switch-clause.

Nothing is said about the semantics of the code within the
switch-clause, e.g., the rule does not take into account if the fall
through cannot happen because the code returns in every feasible path.
The reason behind this is to keep the rule as simple as possible and
above all, keep the rule to be decidable.

Given the fact that 16.3 is a purely syntactic (and hence decidable)
rule, the deviations that can be configured within ECLAIR are
consequently purely syntactic.
Currently, we configured the tool to allow also unconditional return,
unconditional goto and unconditional continue as terminating statements.
This means that, if you want also to deviate switch-clauses terminating
with:

if ( cond ) return x; else return y;

then we need to explicitly configure the tool to consider also
an if statement having this particular shape as allowed terminal
statement (which is something I would not suggest since a rewriting
would address the violation).

The same applies to unreachable().
No semantics checks are performed for Rule 16.3,
hence we will need to add it to the allowed terminal statements.

-- 
Federico Serafini, M.Sc.

Software Engineer, BUGSENG (http://bugseng.com)


From xen-devel-bounces@lists.xenproject.org Mon Jan 08 11:19:43 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 08 Jan 2024 11:19:43 +0000
Received: from list by lists.xenproject.org with outflank-mailman.663393.1033265 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMnfJ-0002ZO-Gt; Mon, 08 Jan 2024 11:19:33 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 663393.1033265; Mon, 08 Jan 2024 11:19:33 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMnfJ-0002ZH-Dx; Mon, 08 Jan 2024 11:19:33 +0000
Received: by outflank-mailman (input) for mailman id 663393;
 Mon, 08 Jan 2024 11:19:32 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=pvth=IS=minervasys.tech=carlo.nonato@srs-se1.protection.inumbo.net>)
 id 1rMnfH-0002ZB-VH
 for xen-devel@lists.xenproject.org; Mon, 08 Jan 2024 11:19:31 +0000
Received: from mail-ej1-x62c.google.com (mail-ej1-x62c.google.com
 [2a00:1450:4864:20::62c])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id cae7fe9b-ae17-11ee-98ef-6d05b1d4d9a1;
 Mon, 08 Jan 2024 12:19:30 +0100 (CET)
Received: by mail-ej1-x62c.google.com with SMTP id
 a640c23a62f3a-a294295dda3so178963466b.0
 for <xen-devel@lists.xenproject.org>; Mon, 08 Jan 2024 03:19:30 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: cae7fe9b-ae17-11ee-98ef-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=minervasys-tech.20230601.gappssmtp.com; s=20230601; t=1704712770; x=1705317570; darn=lists.xenproject.org;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:from:to:cc:subject:date
         :message-id:reply-to;
        bh=bGZrQ1BhlmoTRwHX5XTE35g8md+oz/4o7UKvFd0wdwM=;
        b=lBX8Bvw9mO8bjQc7EOGmN572Mb+p8J8GO6LI370gRzlTBeK/dE3ApJ9FzlwOhd4yPo
         1jFifv77LH3GS6kJ+i5khzwlPwKPN36jwBn/f4EZYrMiMSgaC0OTDjH23LKYQpahTk5y
         ywfGYDk/U8N09k0dcu3X1XR/ewBCviHyy0A+Swy89TIS/q4rXmmCkYRBKFB4Fi+sYJ8s
         1yxkWUQMWV+VGcbUJWrIRRzqtEUowJ4MRGug91smroi2vXQypCk7zv7kHTQTRzohd1bs
         U3Eq1mxJDz8wphqz6yZv+OxImhFLDW+Qq3V7S08LDVG9seJ0F79uFmbkSOkz07q2PAlG
         heVQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704712770; x=1705317570;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to;
        bh=bGZrQ1BhlmoTRwHX5XTE35g8md+oz/4o7UKvFd0wdwM=;
        b=M15/eAtVTADsBKH0sXXlZpIvdIYohjp6rViRCqYfdJchqwGKdxfIFVjOE4kQJ/YWUv
         4YKPknkJnOTGLF7piqS068rwqwkFPtTDBLRToV5syBrEPEuByKO3NGYhXbxWghyz50kK
         hZHH8Lz2VzNEKgY7UmO8XJQA9eDIIq97oCQPHNDCoYD36h5/x98dS8buoX7fVPUWewP0
         2Z8tcSCQYzm45DbwJZ73AmAcCkCGi7boyr5nBeCO4yV5fViLitV+ww1eA+vPtsKO4heU
         3+9JPIMgOxkW0JAuNntpRW96clVagg483CGtLPTcNekq9EhTYuVlJdiTlH68TzSa9mA1
         ld+A==
X-Gm-Message-State: AOJu0YyDSR3OjNkvZkAIhF3lNBNtTTcm3oZAWA+WneEalxIj/CuoIrTx
	p/L3FjYJCaNsFNRwQZvUGx3ckxYlXisK2wbfiYzcRDaNviSQkg==
X-Google-Smtp-Source: AGHT+IHA/WsCKJizn5OjlDd9buQ/1y45psWKhGGVbquL3tCcSilyM9R2yxnzLQnzRaCEL5bBFsgGQXscJ3tM+t1YaMs=
X-Received: by 2002:a17:906:73c6:b0:a2a:3751:8c51 with SMTP id
 n6-20020a17090673c600b00a2a37518c51mr585090ejl.99.1704712770276; Mon, 08 Jan
 2024 03:19:30 -0800 (PST)
MIME-Version: 1.0
References: <20240102095138.17933-1-carlo.nonato@minervasys.tech>
 <20240102095138.17933-5-carlo.nonato@minervasys.tech> <99295edf-6c9c-4d06-ba20-86db67100561@xen.org>
 <CAG+AhRWd9E5sQPY-sxN+WGTSWtvRXGN2FnZC2Vy6LPyynKGLcQ@mail.gmail.com> <4675a541-b9dc-476a-a6ff-0247a4403292@xen.org>
In-Reply-To: <4675a541-b9dc-476a-a6ff-0247a4403292@xen.org>
From: Carlo Nonato <carlo.nonato@minervasys.tech>
Date: Mon, 8 Jan 2024 12:19:19 +0100
Message-ID: <CAG+AhRX6Y2U6A1v=27KgUeWip115R1o+csEWcyCCooxE2Tac6w@mail.gmail.com>
Subject: Re: [PATCH v5 04/13] xen: extend domctl interface for cache coloring
To: Julien Grall <julien@xen.org>
Cc: xen-devel@lists.xenproject.org, 
	Stefano Stabellini <sstabellini@kernel.org>, Bertrand Marquis <bertrand.marquis@arm.com>, 
	Michal Orzel <michal.orzel@amd.com>, Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>, 
	Andrew Cooper <andrew.cooper3@citrix.com>, George Dunlap <george.dunlap@citrix.com>, 
	Jan Beulich <jbeulich@suse.com>, Wei Liu <wl@xen.org>, 
	Marco Solieri <marco.solieri@minervasys.tech>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

Hi Julien,

On Mon, Jan 8, 2024 at 12:01=E2=80=AFPM Julien Grall <julien@xen.org> wrote=
:
>
> Hi Carlo,
>
> On 08/01/2024 10:27, Carlo Nonato wrote:
> > On Fri, Jan 5, 2024 at 6:26=E2=80=AFPM Julien Grall <julien@xen.org> wr=
ote:
> >> On 02/01/2024 09:51, Carlo Nonato wrote:
> >>> This commit updates the domctl interface to allow the user to set cac=
he
> >>> coloring configurations from the toolstack.
> >>> It also implements the functionality for arm64.
> >>>
> >>> Based on original work from: Luca Miccio <lucmiccio@gmail.com>
> >>>
> >>> Signed-off-by: Carlo Nonato <carlo.nonato@minervasys.tech>
> >>> Signed-off-by: Marco Solieri <marco.solieri@minervasys.tech>
> >>> ---
> >>> v5:
> >>> - added a new hypercall to set colors
> >>> - uint for the guest handle
> >>> v4:
> >>> - updated XEN_DOMCTL_INTERFACE_VERSION
> >>> ---
> >>>    xen/arch/arm/llc-coloring.c    | 17 +++++++++++++++++
> >>>    xen/common/domctl.c            | 11 +++++++++++
> >>>    xen/include/public/domctl.h    | 10 +++++++++-
> >>>    xen/include/xen/llc-coloring.h |  3 +++
> >>>    4 files changed, 40 insertions(+), 1 deletion(-)
> >>>
> >>> diff --git a/xen/arch/arm/llc-coloring.c b/xen/arch/arm/llc-coloring.=
c
> >>> index 5ce58aba70..a08614ec36 100644
> >>> --- a/xen/arch/arm/llc-coloring.c
> >>> +++ b/xen/arch/arm/llc-coloring.c
> >>> @@ -9,6 +9,7 @@
> >>>     *    Carlo Nonato <carlo.nonato@minervasys.tech>
> >>>     */
> >>>    #include <xen/errno.h>
> >>> +#include <xen/guest_access.h>
> >>>    #include <xen/keyhandler.h>
> >>>    #include <xen/llc-coloring.h>
> >>>    #include <xen/param.h>
> >>> @@ -278,6 +279,22 @@ int dom0_set_llc_colors(struct domain *d)
> >>>        return domain_check_colors(d);
> >>>    }
> >>>
> >>> +int domain_set_llc_colors_domctl(struct domain *d,
> >>> +                                 const struct xen_domctl_set_llc_col=
ors *config)
> >>> +{
> >>> +    if ( d->num_llc_colors )
> >>> +        return -EEXIST;
> >>> +
> >>> +    if ( domain_alloc_colors(d, config->num_llc_colors) )
> >>
> >> domain_alloc_colors() doesn't sanity check config->num_llc_colors befo=
re
> >> allocating the array. You want a check the size before so we would not
> >> try to allocate an arbitrary amount of memory.
> >>
> >>> +        return -ENOMEM;
> >>> +
> >>> +    if ( copy_from_guest(d->llc_colors, config->llc_colors,
> >>> +                         config->num_llc_colors) )
> >>> +        return -EFAULT;
> >>> +
> >>> +    return domain_check_colors(d);
> >>> +}
> >>> +
> >>>    /*
> >>>     * Local variables:
> >>>     * mode: C
> >>> diff --git a/xen/common/domctl.c b/xen/common/domctl.c
> >>> index f5a71ee5f7..b6867d0602 100644
> >>> --- a/xen/common/domctl.c
> >>> +++ b/xen/common/domctl.c
> >>> @@ -8,6 +8,7 @@
> >>>
> >>>    #include <xen/types.h>
> >>>    #include <xen/lib.h>
> >>> +#include <xen/llc-coloring.h>
> >>>    #include <xen/err.h>
> >>>    #include <xen/mm.h>
> >>>    #include <xen/sched.h>
> >>> @@ -858,6 +859,16 @@ long do_domctl(XEN_GUEST_HANDLE_PARAM(xen_domctl=
_t) u_domctl)
> >>>                    __HYPERVISOR_domctl, "h", u_domctl);
> >>>            break;
> >>>
> >>> +    case XEN_DOMCTL_set_llc_colors:
> >>> +        if ( !llc_coloring_enabled )
> >>> +            break;
> >>> +
> >>> +        ret =3D domain_set_llc_colors_domctl(d, &op->u.set_llc_color=
s);
> >>> +        if ( ret =3D=3D -EEXIST )
> >>> +            printk(XENLOG_ERR
> >>> +                   "Can't set LLC colors on an already created domai=
n\n");
> >>
> >> To me, the message doesn't match the check in
> >> domain_set_llc_colors_domctl(). But I think you want to check that no
> >> memory was yet allocated to the domain. Otherwise, you coloring will b=
e
> >> wrong.
> >>
> >> Also, it is a bit unclear why you print a message for -EEXIST but not
> >> the others. In this instance, I would consider to print nothing at all=
.
> >
> > The problem here is that we don't support recoloring. When a domain is
> > created it receives a coloring configuration and it can't change. If th=
is
> > hypercall is called twice I have to stop the second time somehow.
> Looking at your check what you prevent is a toolstack updating the array
> twice. But that would be ok (/!\ I am not saying we should allow it) so
> long no memory has been allocated to the domain.
>
> But I also consider we would re-color once we started to allocate memory
> for the domain (either RAM or P2M). This seems to be missed out in your
> check.

So you want to be able to change colors if no memory has yet been allocated=
?
I don't know what to check that.

> Cheers,
>
> --
> Julien Grall


From xen-devel-bounces@lists.xenproject.org Mon Jan 08 11:23:09 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 08 Jan 2024 11:23:09 +0000
Received: from list by lists.xenproject.org with outflank-mailman.663396.1033275 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMnii-0004pO-Us; Mon, 08 Jan 2024 11:23:04 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 663396.1033275; Mon, 08 Jan 2024 11:23:04 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMnii-0004pH-S1; Mon, 08 Jan 2024 11:23:04 +0000
Received: by outflank-mailman (input) for mailman id 663396;
 Mon, 08 Jan 2024 11:23:03 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=pvth=IS=minervasys.tech=carlo.nonato@srs-se1.protection.inumbo.net>)
 id 1rMnih-0004pB-FL
 for xen-devel@lists.xenproject.org; Mon, 08 Jan 2024 11:23:03 +0000
Received: from mail-ed1-x532.google.com (mail-ed1-x532.google.com
 [2a00:1450:4864:20::532])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 487a8ae9-ae18-11ee-9b0f-b553b5be7939;
 Mon, 08 Jan 2024 12:23:01 +0100 (CET)
Received: by mail-ed1-x532.google.com with SMTP id
 4fb4d7f45d1cf-5576ca4119cso1646728a12.2
 for <xen-devel@lists.xenproject.org>; Mon, 08 Jan 2024 03:23:01 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 487a8ae9-ae18-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=minervasys-tech.20230601.gappssmtp.com; s=20230601; t=1704712981; x=1705317781; darn=lists.xenproject.org;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:from:to:cc:subject:date
         :message-id:reply-to;
        bh=P0bqL+CEbwmYzRx+oNHYlXf016MtxfBfkDGBflAoNOE=;
        b=plJBMIvfF7hIUy+wvT1DLmMNAiC4aHzuWCpseAdGjDuIOG1swHSTAlGjajjYSh12nT
         0GuKsAVniDyUhs2ebhFjX0xy+ocfjfk+cWQy9zA2ViliVdAEziSlwSWYRp0nkT4iViVT
         4Z6zGTGffELVY3IWaoDPRY7+gLSoZPaHPb8hdWuC5951YXBChgNbSFPM83PQIiDQksUP
         Pkfh6sxyQKMirsxbWZU16EZINCth5rildwxz5IFEyI5QbdorIvryfS30gKPIXbj2nuqX
         kL7BMC1k9mJKNUcb1WIwLAEMK0X/0auw/ewBwSB5zdnWST3Aa9QJsJd4zaoL0gA63/7R
         VDwQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704712981; x=1705317781;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to;
        bh=P0bqL+CEbwmYzRx+oNHYlXf016MtxfBfkDGBflAoNOE=;
        b=lpaTMA6sa4TrN3B8/oKR8btS5LdHwKmzLlj+76ml5xB8CGdUkofW/Tf0S5iYw7va5e
         bHF6+nOXA6Ey5dioNX+OLppu8mCQa/aaVRXmuC7sj9nPTO+IC9XVpPnpnDpRf4UiGYdK
         JANBeMNEHYVRRSYirz5b0K0LTGIOHQt+5iJ49H3DHL7r7wowDMQnCjng4ieDz6KPgeki
         0n2DNLo1suzvvCznkp292N403+1ZiTQJBpjG8J43rtcnJZ49KKY7FKbfPoTYXKw1hJTE
         GhyyWw3MsXtqz8ORgUYAFtU3TEE+S6HyAJ0UWwjH+clhOKaGktiTCLz1teiMSgCJGPzn
         0jSw==
X-Gm-Message-State: AOJu0Yw16tGQHyauZfZI5IYrcQifUAoEj/clFQ1FDWbbx+MzMqp6VF0z
	8eVPPv1eYjGqgn6tqx4lZXPWaZK+5xoRpOEP4JEs45aSZt/KrQ==
X-Google-Smtp-Source: AGHT+IGlWpbLE84nb3JtKPas+7DHcgn2nFO/IIdk1LNq0OwRN/f3qf8LtnBf+BQxT+ypGwW+m5IyzskYZQtCyaDgz1I=
X-Received: by 2002:a17:906:28d6:b0:a28:d0c4:a0dd with SMTP id
 p22-20020a17090628d600b00a28d0c4a0ddmr1493863ejd.85.1704712981034; Mon, 08
 Jan 2024 03:23:01 -0800 (PST)
MIME-Version: 1.0
References: <20240102095138.17933-1-carlo.nonato@minervasys.tech>
 <20240102095138.17933-5-carlo.nonato@minervasys.tech> <55c87867-8d1a-4bcf-92cc-f64a9960d1d8@suse.com>
In-Reply-To: <55c87867-8d1a-4bcf-92cc-f64a9960d1d8@suse.com>
From: Carlo Nonato <carlo.nonato@minervasys.tech>
Date: Mon, 8 Jan 2024 12:22:50 +0100
Message-ID: <CAG+AhRUtTgwdZY7ykb_tUioqROVdXZeEpH2C0h0YPrF8_GxVUg@mail.gmail.com>
Subject: Re: [PATCH v5 04/13] xen: extend domctl interface for cache coloring
To: Jan Beulich <jbeulich@suse.com>
Cc: Stefano Stabellini <sstabellini@kernel.org>, Julien Grall <julien@xen.org>, 
	Bertrand Marquis <bertrand.marquis@arm.com>, Michal Orzel <michal.orzel@amd.com>, 
	Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>, Andrew Cooper <andrew.cooper3@citrix.com>, 
	George Dunlap <george.dunlap@citrix.com>, Wei Liu <wl@xen.org>, 
	Marco Solieri <marco.solieri@minervasys.tech>, xen-devel@lists.xenproject.org
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

Hi Jan,

On Mon, Jan 8, 2024 at 9:43=E2=80=AFAM Jan Beulich <jbeulich@suse.com> wrot=
e:
>
> On 02.01.2024 10:51, Carlo Nonato wrote:
> > --- a/xen/arch/arm/llc-coloring.c
> > +++ b/xen/arch/arm/llc-coloring.c
> > @@ -9,6 +9,7 @@
> >   *    Carlo Nonato <carlo.nonato@minervasys.tech>
> >   */
> >  #include <xen/errno.h>
> > +#include <xen/guest_access.h>
> >  #include <xen/keyhandler.h>
> >  #include <xen/llc-coloring.h>
> >  #include <xen/param.h>
> > @@ -278,6 +279,22 @@ int dom0_set_llc_colors(struct domain *d)
> >      return domain_check_colors(d);
> >  }
> >
> > +int domain_set_llc_colors_domctl(struct domain *d,
> > +                                 const struct xen_domctl_set_llc_color=
s *config)
> > +{
> > +    if ( d->num_llc_colors )
> > +        return -EEXIST;
> > +
> > +    if ( domain_alloc_colors(d, config->num_llc_colors) )
> > +        return -ENOMEM;
> > +
> > +    if ( copy_from_guest(d->llc_colors, config->llc_colors,
> > +                         config->num_llc_colors) )
> > +        return -EFAULT;
> > +
> > +    return domain_check_colors(d);
> > +}
>
> What part of this is Arm-specific? I ask in particular because while you
> place this in an Arm-specific source file, ...
>
> > --- a/xen/common/domctl.c
> > +++ b/xen/common/domctl.c
> > @@ -8,6 +8,7 @@
> >
> >  #include <xen/types.h>
> >  #include <xen/lib.h>
> > +#include <xen/llc-coloring.h>
> >  #include <xen/err.h>
> >  #include <xen/mm.h>
> >  #include <xen/sched.h>
> > @@ -858,6 +859,16 @@ long do_domctl(XEN_GUEST_HANDLE_PARAM(xen_domctl_t=
) u_domctl)
> >                  __HYPERVISOR_domctl, "h", u_domctl);
> >          break;
> >
> > +    case XEN_DOMCTL_set_llc_colors:
> > +        if ( !llc_coloring_enabled )
> > +            break;
> > +
> > +        ret =3D domain_set_llc_colors_domctl(d, &op->u.set_llc_colors)=
;
> > +        if ( ret =3D=3D -EEXIST )
> > +            printk(XENLOG_ERR
> > +                   "Can't set LLC colors on an already created domain\=
n");
> > +        break;
> > +
> >      default:
> >          ret =3D arch_do_domctl(op, d, u_domctl);
> >          break;
>
> ... you don't handle the new domctl in Arm's arch_do_domctl().

No arm specific code here. I need a new xen/common/llc-coloring.c file wher=
e
to put common stuff.

> > --- a/xen/include/public/domctl.h
> > +++ b/xen/include/public/domctl.h
> > @@ -21,7 +21,7 @@
> >  #include "hvm/save.h"
> >  #include "memory.h"
> >
> > -#define XEN_DOMCTL_INTERFACE_VERSION 0x00000016
> > +#define XEN_DOMCTL_INTERFACE_VERSION 0x00000017
>
> There's no need for such a bump when ...
>
> > @@ -1190,6 +1190,12 @@ struct xen_domctl_vmtrace_op {
> >  typedef struct xen_domctl_vmtrace_op xen_domctl_vmtrace_op_t;
> >  DEFINE_XEN_GUEST_HANDLE(xen_domctl_vmtrace_op_t);
> >
> > +struct xen_domctl_set_llc_colors {
> > +    /* IN LLC coloring parameters */
> > +    unsigned int num_llc_colors;
> > +    XEN_GUEST_HANDLE_64(uint) llc_colors;
> > +};
> > +
> >  struct xen_domctl {
> >      uint32_t cmd;
> >  #define XEN_DOMCTL_createdomain                   1
> > @@ -1277,6 +1283,7 @@ struct xen_domctl {
> >  #define XEN_DOMCTL_vmtrace_op                    84
> >  #define XEN_DOMCTL_get_paging_mempool_size       85
> >  #define XEN_DOMCTL_set_paging_mempool_size       86
> > +#define XEN_DOMCTL_set_llc_colors                87
> >  #define XEN_DOMCTL_gdbsx_guestmemio            1000
> >  #define XEN_DOMCTL_gdbsx_pausevcpu             1001
> >  #define XEN_DOMCTL_gdbsx_unpausevcpu           1002
> > @@ -1339,6 +1346,7 @@ struct xen_domctl {
> >          struct xen_domctl_vuart_op          vuart_op;
> >          struct xen_domctl_vmtrace_op        vmtrace_op;
> >          struct xen_domctl_paging_mempool    paging_mempool;
> > +        struct xen_domctl_set_llc_colors    set_llc_colors;
> >          uint8_t                             pad[128];
> >      } u;
> >  };
>
> ... all you do is add a new domctl.
>
> As to the new struct - you'll want to use uint<N>_t there, not
> unsigned int.
>
> Jan

Thanks.


From xen-devel-bounces@lists.xenproject.org Mon Jan 08 11:26:43 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 08 Jan 2024 11:26:43 +0000
Received: from list by lists.xenproject.org with outflank-mailman.663399.1033284 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMnmC-0005Ps-Dg; Mon, 08 Jan 2024 11:26:40 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 663399.1033284; Mon, 08 Jan 2024 11:26:40 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMnmC-0005Pl-Ap; Mon, 08 Jan 2024 11:26:40 +0000
Received: by outflank-mailman (input) for mailman id 663399;
 Mon, 08 Jan 2024 11:26:39 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=pvth=IS=minervasys.tech=carlo.nonato@srs-se1.protection.inumbo.net>)
 id 1rMnmB-0005Pf-2j
 for xen-devel@lists.xenproject.org; Mon, 08 Jan 2024 11:26:39 +0000
Received: from mail-ed1-x534.google.com (mail-ed1-x534.google.com
 [2a00:1450:4864:20::534])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id c92948fe-ae18-11ee-98ef-6d05b1d4d9a1;
 Mon, 08 Jan 2024 12:26:37 +0100 (CET)
Received: by mail-ed1-x534.google.com with SMTP id
 4fb4d7f45d1cf-55783b7b47aso1224629a12.0
 for <xen-devel@lists.xenproject.org>; Mon, 08 Jan 2024 03:26:37 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: c92948fe-ae18-11ee-98ef-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=minervasys-tech.20230601.gappssmtp.com; s=20230601; t=1704713197; x=1705317997; darn=lists.xenproject.org;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:from:to:cc:subject:date
         :message-id:reply-to;
        bh=pyFKGUcEuqg3Z/RJsyxe5YWWuyiSjCRRf0HOKwhMM6Q=;
        b=dueqwkP1dnwKZv4pqqXRx6h+JUjXhaUvEvMKXeEzLU5Ab+IDUrSIjcYbuxMbBwhUKt
         I8p9M03VXK8grHmjX19PityXqFMa+ScPFK1ruInOaPsMeDQ8MnlVB8Cs42gzHlNxspcM
         XApi16He9XGvDATrayWN7T6vH9aLe+ft0Rbz1EqAsJ+WNToFRjmjsO69nUrXR+Ad8R8c
         UxfvIn6DTYjF7PoXMuAN5gOMcKBa8k+W/ExeNglWAaqdh8t+xFItRN2ibabRAmyl6so0
         qBvGqKn/drKZuVB9/y3V0y8SNcMUupsG+ISPkmcxS0nKi6pwjpJrRFydRua1FbHvI6r0
         1rMw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704713197; x=1705317997;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to;
        bh=pyFKGUcEuqg3Z/RJsyxe5YWWuyiSjCRRf0HOKwhMM6Q=;
        b=XOUpS28Hj2Y7MRKHdNnp8zz4fgdLhk635EkHbpSK8bSvqZzUablvaeluZlCW+27yI0
         lew60PBhFdlBfoFELQieS1DRB4gskttMmdZJFo1ysDYhgnWc03bQJllXVO4uroYCls8O
         vvYjgQqK4n/Kw3ldXrrvzCZS3f0+LUH+cl6XL6L+c6xbEm6gJxLm5Z55RIirg4NY0dRx
         j37EuLg8nesIeEP90KUlrusP/DcU4yRVlkJW/vyHWIm481Jc5QIsdfrDRh9Gxe+VTsLm
         2718UVUQ0/ztboBxkUn88cBAMI1JWG+A37TwWSg2FlcEhO1bt3RTsknRiKCDJjAHi2YT
         fMxg==
X-Gm-Message-State: AOJu0YxP6AtP5DC1uyXJqqveCIbvljZoXiMi/ymSUYaFVPm7vJzj3ePr
	i1vQ7x9nQ/jqoGKfkNN9z2bNvm5irZlfb49oCS/i3ch4dfy3gQ==
X-Google-Smtp-Source: AGHT+IEcScpKg8jv9vt9Z82UfLFwg/LHfW3R+gBQFvsO13jeMn39wE3H/ZyBH/Y+m76RhDmR04ifrU2Liu2z/03rwW4=
X-Received: by 2002:a17:906:b04f:b0:a28:813c:78d6 with SMTP id
 bj15-20020a170906b04f00b00a28813c78d6mr1432972ejb.45.1704713196816; Mon, 08
 Jan 2024 03:26:36 -0800 (PST)
MIME-Version: 1.0
References: <20240102095138.17933-1-carlo.nonato@minervasys.tech>
 <20240102095138.17933-7-carlo.nonato@minervasys.tech> <849b166d-a1a1-407e-8a9c-e0beac6ee955@xen.org>
In-Reply-To: <849b166d-a1a1-407e-8a9c-e0beac6ee955@xen.org>
From: Carlo Nonato <carlo.nonato@minervasys.tech>
Date: Mon, 8 Jan 2024 12:26:26 +0100
Message-ID: <CAG+AhRUs-Kd5N8LRDshjF8_UDf8H=ef_cdYzzvXc52D_FamTRw@mail.gmail.com>
Subject: Re: [PATCH v5 06/13] xen/arm: add support for cache coloring
 configuration via device-tree
To: Julien Grall <julien@xen.org>
Cc: xen-devel@lists.xenproject.org, 
	Stefano Stabellini <sstabellini@kernel.org>, Bertrand Marquis <bertrand.marquis@arm.com>, 
	Michal Orzel <michal.orzel@amd.com>, Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>, 
	Marco Solieri <marco.solieri@minervasys.tech>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

Hi Julien,

On Fri, Jan 5, 2024 at 6:38=E2=80=AFPM Julien Grall <julien@xen.org> wrote:
>
> Hi Carlo,
>
> On 02/01/2024 09:51, Carlo Nonato wrote:
> > This commit adds the "llc-colors" Device Tree attribute that can be use=
d
> > for DomUs and Dom0less color configurations. The syntax is the same use=
d
> > for every color config.
> >
> > Based on original work from: Luca Miccio <lucmiccio@gmail.com>
> >
> > Signed-off-by: Carlo Nonato <carlo.nonato@minervasys.tech>
> > Signed-off-by: Marco Solieri <marco.solieri@minervasys.tech>
> > ---
> > v5:
> > - static-mem check has been moved in a previous patch
> > - added domain_set_llc_colors_from_str() to set colors after domain cre=
ation
> > ---
> >   docs/misc/arm/cache-coloring.rst        | 48 ++++++++++++++++++++++++=
-
> >   docs/misc/arm/device-tree/booting.txt   |  4 +++
> >   xen/arch/arm/dom0less-build.c           | 13 +++++++
> >   xen/arch/arm/include/asm/llc-coloring.h |  1 +
> >   xen/arch/arm/llc-coloring.c             | 17 +++++++++
> >   5 files changed, 82 insertions(+), 1 deletion(-)
> >
> > diff --git a/docs/misc/arm/cache-coloring.rst b/docs/misc/arm/cache-col=
oring.rst
> > index acf82c3df8..ae1dd8f4af 100644
> > --- a/docs/misc/arm/cache-coloring.rst
> > +++ b/docs/misc/arm/cache-coloring.rst
> > @@ -10,7 +10,7 @@ If needed, change the maximum number of colors with
> >   ``CONFIG_NR_LLC_COLORS=3D<n>``.
> >
> >   Compile Xen and the toolstack and then configure it via
> > -`Command line parameters`_.
> > +`Command line parameters`_. For DomUs follow `DomUs configuration`_.
> >
> >   Background
> >   **********
> > @@ -114,6 +114,52 @@ Examples:
> >   | 0                 | [0]                         |
> >   +-------------------+-----------------------------+
> >
> > +DomUs configuration
> > +*******************
> > +
> > +DomUs colors can be set via Device Tree, also for Dom0less configurati=
ons
> > +(documentation at `docs/misc/arm/device-tree/booting.txt`) using the
> > +``llc-colors`` option. For example:
> > +
> > +::
> > +
> > +    xen,xen-bootargs =3D "console=3Ddtuart dtuart=3Dserial0 dom0_mem=
=3D1G dom0_max_vcpus=3D1 sched=3Dnull llc-coloring=3Don llc-way-size=3D64K =
dom0-llc-colors=3D2-6";
> > +    xen,dom0-bootargs "console=3Dhvc0 earlycon=3Dxen earlyprintk=3Dxen=
 root=3D/dev/ram0"
> > +
> > +    dom0 {
> > +        compatible =3D "xen,linux-zimage" "xen,multiboot-module";
> > +        reg =3D <0x0 0x1000000 0x0 15858176>;
> > +    };
> > +
> > +    dom0-ramdisk {
> > +        compatible =3D "xen,linux-initrd" "xen,multiboot-module";
> > +        reg =3D <0x0 0x2000000 0x0 20638062>;
> > +    };
> > +
> > +    domU0 {
> > +        #address-cells =3D <0x1>;
> > +        #size-cells =3D <0x1>;
> > +        compatible =3D "xen,domain";
> > +        memory =3D <0x0 0x40000>;
> > +        llc-colors =3D "4-8,10,11,12";
> > +        cpus =3D <0x1>;
> > +        vpl011 =3D <0x1>;
> > +
> > +        module@2000000 {
> > +            compatible =3D "multiboot,kernel", "multiboot,module";
> > +            reg =3D <0x2000000 0xffffff>;
> > +            bootargs =3D "console=3DttyAMA0";
> > +        };
> > +
> > +        module@30000000 {
> > +            compatible =3D "multiboot,ramdisk", "multiboot,module";
> > +            reg =3D <0x3000000 0xffffff>;
> > +        };
> > +    };
> > +
> > +**Note:** If no color configuration is provided for a domain, the defa=
ult one,
> > +which corresponds to all available colors, is used instead.
>
> Looking at your code, it will use *all* the colors. Some of the colors
> might have been assigned to a domain. I am not entirely convinced this
> is good idea to allow this as a default setup.
>
>
> > +
> >   Known issues and limitations
> >   ****************************
> >
> > diff --git a/docs/misc/arm/device-tree/booting.txt b/docs/misc/arm/devi=
ce-tree/booting.txt
> > index bbd955e9c2..e9f9862e9c 100644
> > --- a/docs/misc/arm/device-tree/booting.txt
> > +++ b/docs/misc/arm/device-tree/booting.txt
> > @@ -162,6 +162,10 @@ with the following properties:
> >
> >       An integer specifying the number of vcpus to allocate to the gues=
t.
> >
> > +- llc-colors
> > +    A string specifying the LLC color configuration for the guest.
> > +    Refer to "docs/misc/arm/cache_coloring.rst" for syntax.
> > +
> >   - vpl011
> >
> >       An empty property to enable/disable a virtual pl011 for the guest=
 to
> > diff --git a/xen/arch/arm/dom0less-build.c b/xen/arch/arm/dom0less-buil=
d.c
> > index 1142f7f74a..eb39f5291f 100644
> > --- a/xen/arch/arm/dom0less-build.c
> > +++ b/xen/arch/arm/dom0less-build.c
> > @@ -850,6 +850,7 @@ void __init create_domUs(void)
> >       struct dt_device_node *node;
> >       const struct dt_device_node *cpupool_node,
> >                                   *chosen =3D dt_find_node_by_path("/ch=
osen");
> > +    const char *llc_colors_str =3D NULL;
> >
> >       BUG_ON(chosen =3D=3D NULL);
> >       dt_for_each_child_node(chosen, node)
> > @@ -993,6 +994,13 @@ void __init create_domUs(void)
> >   #endif
> >           }
> >
> > +        dt_property_read_string(node, "llc-colors", &llc_colors_str);
> > +        if ( llc_coloring_enabled && !llc_colors_str )
> > +            panic("'llc-colors' is required when LLC coloring is enabl=
ed\n");
>
> In the documentation you wrote:
>
> "**Note:** If no color configuration is provided for a domain, the
> default one,which corresponds to all available colors, is used instead."
>
> I interpret as you want to continue rather than panic-ing. That said, I
> much prefer the panic version.

Will do as you said. No problem from my side.

> > +        else if ( !llc_coloring_enabled && llc_colors_str)
> > +            printk(XENLOG_WARNING
> > +                   "'llc-colors' found, but LLC coloring is disabled\n=
");
> > +
> >           /*
> >            * The variable max_init_domid is initialized with zero, so h=
ere it's
> >            * very important to use the pre-increment operator to call
> > @@ -1003,6 +1011,11 @@ void __init create_domUs(void)
> >               panic("Error creating domain %s (rc =3D %ld)\n",
> >                     dt_node_name(node), PTR_ERR(d));
> >
> > +        if ( llc_coloring_enabled &&
> > +             (rc =3D domain_set_llc_colors_from_str(d, llc_colors_str)=
) )
> > +            panic("Error initializing LLC coloring for domain %s (rc =
=3D %d)\n",
> > +                  dt_node_name(node), rc);
> > +
> >           d->is_console =3D true;
> >           dt_device_set_used_by(node, d->domain_id);
> >
> > diff --git a/xen/arch/arm/include/asm/llc-coloring.h b/xen/arch/arm/inc=
lude/asm/llc-coloring.h
> > index ee5551e3cc..5f9b0a8121 100644
> > --- a/xen/arch/arm/include/asm/llc-coloring.h
> > +++ b/xen/arch/arm/include/asm/llc-coloring.h
> > @@ -15,6 +15,7 @@
> >
> >   bool __init llc_coloring_init(void);
> >   int dom0_set_llc_colors(struct domain *d);
> > +int domain_set_llc_colors_from_str(struct domain *d, const char *str);
> >
> >   #endif /* __ASM_ARM_COLORING_H__ */
> >
> > diff --git a/xen/arch/arm/llc-coloring.c b/xen/arch/arm/llc-coloring.c
> > index a08614ec36..d3de5f14cb 100644
> > --- a/xen/arch/arm/llc-coloring.c
> > +++ b/xen/arch/arm/llc-coloring.c
> > @@ -295,6 +295,23 @@ int domain_set_llc_colors_domctl(struct domain *d,
> >       return domain_check_colors(d);
> >   }
> >
> > +int domain_set_llc_colors_from_str(struct domain *d, const char *str)
> > +{
> > +    int err;
> > +
> > +    if ( domain_alloc_colors(d, nr_colors) )
>
> This code is somewhat confusing and would deserve some explanation.
> AFAICT, you are allocating a large array because parse_color_config()
> expects an array of nr_colors.
>
> d->num_llc_colors will also be set to nr_colors but then overriden by
> parse_color_config().
>
> It feels to me that maybe set num_llc_colors() in domain_alloc_colors()
> is not right.

As previously discussed, I can move the d->num_llc_colors assignment out of
that function.

> > +        return -ENOMEM;
> > +
> > +    err =3D parse_color_config(str, d->llc_colors, &d->num_llc_colors)=
;
> > +    if ( err )
> > +    {
> > +        printk(XENLOG_ERR "Error parsing LLC color configuration.");
> > +        return err;
> > +    }
> > +
> > +    return domain_check_colors(d);
> > +}
> > +
> >   /*
> >    * Local variables:
> >    * mode: C
>
> Cheers,

Thanks.
>
> --
> Julien Grall


From xen-devel-bounces@lists.xenproject.org Mon Jan 08 11:28:36 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 08 Jan 2024 11:28:36 +0000
Received: from list by lists.xenproject.org with outflank-mailman.663404.1033295 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMno0-0006gy-OM; Mon, 08 Jan 2024 11:28:32 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 663404.1033295; Mon, 08 Jan 2024 11:28:32 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMno0-0006gr-LT; Mon, 08 Jan 2024 11:28:32 +0000
Received: by outflank-mailman (input) for mailman id 663404;
 Mon, 08 Jan 2024 11:28:31 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=pvth=IS=minervasys.tech=carlo.nonato@srs-se1.protection.inumbo.net>)
 id 1rMnnz-0006fv-SS
 for xen-devel@lists.xenproject.org; Mon, 08 Jan 2024 11:28:31 +0000
Received: from mail-lf1-x129.google.com (mail-lf1-x129.google.com
 [2a00:1450:4864:20::129])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 0cee88a9-ae19-11ee-98ef-6d05b1d4d9a1;
 Mon, 08 Jan 2024 12:28:31 +0100 (CET)
Received: by mail-lf1-x129.google.com with SMTP id
 2adb3069b0e04-50e835800adso1483928e87.0
 for <xen-devel@lists.xenproject.org>; Mon, 08 Jan 2024 03:28:31 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 0cee88a9-ae19-11ee-98ef-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=minervasys-tech.20230601.gappssmtp.com; s=20230601; t=1704713310; x=1705318110; darn=lists.xenproject.org;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:from:to:cc:subject:date
         :message-id:reply-to;
        bh=CQDGnlU2euDtKu+TBX/qB/R9Wk4CqZoKyE3Up4ReVPM=;
        b=UAG+YsRPL2FN+TJo/7IZqaiNnurFLB97R5Ua/v05jAgM4kGHg+BwgrabqIFSmwAM53
         TEPtH6gJlSs1NHSKD73XQ/Y/tNruUe8MmY0ML2HXsOzFSxeQ95sKSxA01mUbjoiUiKbb
         2+qKYmq6qbKKJDIqW8odlKiFzyk/0ggpMuQKy5hswcJb5fnotTnTwvQlCANF39+H3Pp+
         kZGt+wkQo1HeEE4eZ9itxkcKSeO1oU7+4yPxSdjvxPGL5Qpe1/cCsIiME1dUkxnkUqo0
         PkvMQh/ZTf0F117ChztwhUA/R+gg2xtJftRPWAYrVGa40z1gHG+U+8A6RrEGvbkKI60W
         klVg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704713310; x=1705318110;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to;
        bh=CQDGnlU2euDtKu+TBX/qB/R9Wk4CqZoKyE3Up4ReVPM=;
        b=qmcD9oXico6XF24ZXnu+y3X1hKLFl58T8nKebcJtOraLbZU682AXSiJc5PNNuRrEeH
         nNLe9B6pqE/7Lwj8A4YCnJodDI8Ln/4XOBqf8dtHI6V5X595S0mTPLU+VOCJRs+l9u26
         fVvQw5tJhjnRxpF7CvCU7LnPMoBldwtektdSBtj65y6G41gEo+sS5w65D6KPMqTLdMcl
         DlKUgKpLZVEDffm3COXhJ2HNKRFj7+m5uqoDECzengYC3btWV74eJFrWO5IaR4+MbQ6f
         FA/HBVD8qL6Cv4s5vwnLSirf36+iBOvCgqHp+agFRPWsN13AChh/LePxFxJ/lCvKaSXM
         X6tQ==
X-Gm-Message-State: AOJu0YzgGS+kCRnr+eQG68hSk148b4Fxi23dezldjZeVkr2BYxVmiApY
	xb2vNQfcNhmeko/TOl8Jcrr5ub2CS+0c+4PxG1nWNN04W6OV+g==
X-Google-Smtp-Source: AGHT+IFk13PtNMe86SRsxSRbOdpzBPs3gc4jQJIxsjZD+lZQR7J6tkeR4QPfbsQndZ0lbkGrNlUlht/LphHmbu+A684=
X-Received: by 2002:a19:5e5e:0:b0:50e:3e1d:9bb9 with SMTP id
 z30-20020a195e5e000000b0050e3e1d9bb9mr767271lfi.80.1704713310552; Mon, 08 Jan
 2024 03:28:30 -0800 (PST)
MIME-Version: 1.0
References: <20240102095138.17933-1-carlo.nonato@minervasys.tech>
 <20240102095138.17933-12-carlo.nonato@minervasys.tech> <05b6e12c-059d-47e7-8859-a291080c4dd4@xen.org>
In-Reply-To: <05b6e12c-059d-47e7-8859-a291080c4dd4@xen.org>
From: Carlo Nonato <carlo.nonato@minervasys.tech>
Date: Mon, 8 Jan 2024 12:28:19 +0100
Message-ID: <CAG+AhRWSTVoB5gx_epB3GaBoady8HtwOMyBut18YHguvSZnRow@mail.gmail.com>
Subject: Re: [PATCH v5 11/13] Revert "xen/arm: Remove unused BOOT_RELOC_VIRT_START"
To: Julien Grall <julien@xen.org>
Cc: xen-devel@lists.xenproject.org, 
	Stefano Stabellini <sstabellini@kernel.org>, Bertrand Marquis <bertrand.marquis@arm.com>, 
	Michal Orzel <michal.orzel@amd.com>, Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>, 
	Marco Solieri <marco.solieri@minervasys.tech>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

Hi Julien,

On Fri, Jan 5, 2024 at 7:20=E2=80=AFPM Julien Grall <julien@xen.org> wrote:
>
> Hi Carlo,
>
> On 02/01/2024 09:51, Carlo Nonato wrote:
> > This reverts commit 0c18fb76323bfb13615b6f13c98767face2d8097 (not clean=
).
> >
> > This is not a clean revert since the rework of the memory layout, but i=
t is
> > sufficiently similar to a clean one.
> > The only difference is that the BOOT_RELOC_VIRT_START must match the ne=
w
> > layout.
> >
> > Cache coloring support for Xen needs to relocate Xen code and data in a=
 new
> > colored physical space. The BOOT_RELOC_VIRT_START will be used as the v=
irtual
> > base address for a temporary mapping to this new space.
> >
> > Signed-off-by: Carlo Nonato <carlo.nonato@minervasys.tech>
> > Signed-off-by: Marco Solieri <marco.solieri@minervasys.tech>
> > ---
> >   xen/arch/arm/include/asm/mmu/layout.h | 2 ++
> >   xen/arch/arm/mmu/setup.c              | 1 +
> >   2 files changed, 3 insertions(+)
> >
> > diff --git a/xen/arch/arm/include/asm/mmu/layout.h b/xen/arch/arm/inclu=
de/asm/mmu/layout.h
> > index eac7eef885..30031f74d9 100644
> > --- a/xen/arch/arm/include/asm/mmu/layout.h
> > +++ b/xen/arch/arm/include/asm/mmu/layout.h
> > @@ -74,6 +74,8 @@
> >   #define BOOT_FDT_VIRT_START     (FIXMAP_VIRT_START + FIXMAP_VIRT_SIZE=
)
> >   #define BOOT_FDT_VIRT_SIZE      _AT(vaddr_t, MB(4))
> >
> > +#define BOOT_RELOC_VIRT_START   (BOOT_FDT_VIRT_START + BOOT_FDT_VIRT_S=
IZE)
>
> This new addition wants to be documented in the layout comment in a few
> lines above. Also, the area you are using is 2MB whereas Xen can now be
> up to 8MB.
>
> Secondly, you want to add a BOOTRELOC_VIRT_SIZE with a check in
> build_assertions() making sure that this is at least as big as
> XEN_VIRT_SIZE.
>
> Overall, I am not sure this is really a revert at this point. The idea
> is the same, but you are defining BOOT_FDT_VIRT_START differently.
>
> To me it feels like it belong to the first patch where you will use it.
> And that would be ok to mention in the commit message that the idea was
> borrowed from a previously reverted commit.

Ok, nice.

> > +
> >   #ifdef CONFIG_LIVEPATCH
> >   #define LIVEPATCH_VMAP_START    (BOOT_FDT_VIRT_START + BOOT_FDT_VIRT_=
SIZE)
> >   #define LIVEPATCH_VMAP_SIZE    _AT(vaddr_t, MB(2))
> > diff --git a/xen/arch/arm/mmu/setup.c b/xen/arch/arm/mmu/setup.c
> > index d5264e51bc..37b6d230ad 100644
> > --- a/xen/arch/arm/mmu/setup.c
> > +++ b/xen/arch/arm/mmu/setup.c
> > @@ -69,6 +69,7 @@ static void __init __maybe_unused build_assertions(vo=
id)
> >       /* 2MB aligned regions */
> >       BUILD_BUG_ON(XEN_VIRT_START & ~SECOND_MASK);
> >       BUILD_BUG_ON(FIXMAP_ADDR(0) & ~SECOND_MASK);
> > +    BUILD_BUG_ON(BOOT_RELOC_VIRT_START & ~SECOND_MASK);
> >       /* 1GB aligned regions */
> >   #ifdef CONFIG_ARM_32
> >       BUILD_BUG_ON(XENHEAP_VIRT_START & ~FIRST_MASK);
>
> --
> Julien Grall

Thanks.


From xen-devel-bounces@lists.xenproject.org Mon Jan 08 11:30:48 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 08 Jan 2024 11:30:48 +0000
Received: from list by lists.xenproject.org with outflank-mailman.663410.1033305 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMnqB-0008F6-5Z; Mon, 08 Jan 2024 11:30:47 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 663410.1033305; Mon, 08 Jan 2024 11:30:47 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMnqB-0008Ez-1w; Mon, 08 Jan 2024 11:30:47 +0000
Received: by outflank-mailman (input) for mailman id 663410;
 Mon, 08 Jan 2024 11:30:46 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=KH4C=IS=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rMnq9-0008DT-Uy
 for xen-devel@lists.xenproject.org; Mon, 08 Jan 2024 11:30:45 +0000
Received: from mail-lj1-x235.google.com (mail-lj1-x235.google.com
 [2a00:1450:4864:20::235])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 5bf4bfa4-ae19-11ee-9b0f-b553b5be7939;
 Mon, 08 Jan 2024 12:30:43 +0100 (CET)
Received: by mail-lj1-x235.google.com with SMTP id
 38308e7fff4ca-2cc7d2c1ff0so18176691fa.3
 for <xen-devel@lists.xenproject.org>; Mon, 08 Jan 2024 03:30:43 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 ca15-20020a0566381c0f00b0046e25a7bb9esm530141jab.176.2024.01.08.03.30.41
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 08 Jan 2024 03:30:42 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 5bf4bfa4-ae19-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1704713443; x=1705318243; darn=lists.xenproject.org;
        h=content-transfer-encoding:autocrypt:subject:from:cc:to
         :content-language:user-agent:mime-version:date:message-id:from:to:cc
         :subject:date:message-id:reply-to;
        bh=gBuT1Z7IzxWg0hFe5G18yUFRYnbo7M9mhnXeePX7SE4=;
        b=GQ8I8ZcotSJHelPaz0PPJieVeP4GmuyMDGaPvpfj8qRBT42eQsOT95laMGa2oRxq2Q
         P1lACNxkf6LynrRfa4ED+Z54MH8GJctqgWbUPQBUg6vMQxrA4MS7Pp3oDEBl+n71542L
         BsbI44miov8SwodevlpB5ALJ/JeiP39KEBRZgqHK/wft05HCeKpkX+OmWizih5/K3+AA
         QeeqADkevUqEcUPmDaXb4z2TkAkywcMhdRysSwzStvxOpgO/FeCPS7j3wMdFR+xc1/Wj
         dUuu1W/sjfHZE75nfQeNxm79OC/icELAY1gATUNh+kk/2D+B8lsvpnI3g7o3vTD9s37W
         WtWw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704713443; x=1705318243;
        h=content-transfer-encoding:autocrypt:subject:from:cc:to
         :content-language:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=gBuT1Z7IzxWg0hFe5G18yUFRYnbo7M9mhnXeePX7SE4=;
        b=XelhsIzzsrpoFZyl1b0lrnvhpWDU44OnhYzt0YTYHo3NXrXI9Y2JraOCqvNFKryp9I
         PObZjvOqTcAG5yJb6YgxCP3tZ2JRbwaDKdz/w4yANQRATqI0CTyXJOaH3HEnhSgIKXCB
         VXCmwy+qmIjxPRrPXdNyCiI8m8R5VFgTCwF2ugBq0wokJpf5IDeFshb//f2rOBMoBazn
         58HmpiJ6EVc83TPKDXpbOt9ZABSCcpb4bdi3qNtKNFLslfN17FWAMegjXwIo4RS4krkw
         TQoNTW5ElaV9g0O/rIedl87fqunMRVP+XD5xPv6eSEhEhSQkFeksmvqygpDZJHd2xGP8
         zYMA==
X-Gm-Message-State: AOJu0Yzux1XnEyjN8/u/mguOryn7ZGwC0dXLi9+UXj/zOPex8jpPOMrI
	lQ88CHZpJWGwuzd65gFp5xnJv9Mq/xypdd9YBQFWmcmphg==
X-Google-Smtp-Source: AGHT+IEmQAE9p5HmABWZ/c50r+to2PbkqgGELkTO5Xjw0FW2I+jGXiw1EQyJMumfTDaaO4STnvcuKQ==
X-Received: by 2002:a2e:a724:0:b0:2cd:3418:7524 with SMTP id s36-20020a2ea724000000b002cd34187524mr1503904lje.49.1704713443071;
        Mon, 08 Jan 2024 03:30:43 -0800 (PST)
Message-ID: <94cffa48-5e31-4557-827d-c6dec6031d05@suse.com>
Date: Mon, 8 Jan 2024 12:30:41 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Content-Language: en-US
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 George Dunlap <george.dunlap@citrix.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>,
 Shawn Anastasio <sanastasio@raptorengineering.com>,
 Bertrand Marquis <bertrand.marquis@arm.com>,
 Michal Orzel <michal.orzel@amd.com>,
 Oleksii Kurochko <oleksii.kurochko@gmail.com>
From: Jan Beulich <jbeulich@suse.com>
Subject: [PATCH v2] NUMA: no need for asm/numa.h when !NUMA
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

There's no point in every architecture carrying the same stubs for the
case when NUMA isn't enabled (or even supported). Move all of that to
xen/numa.h; replace explicit uses of asm/numa.h in common code. Make
inclusion of asm/numa.h dependent upon NUMA=y.

Drop the no longer applicable "implement NUMA support" comments - in a
!NUMA section this simply makes no sense.

Signed-off-by: Jan Beulich <jbeulich@suse.com>
---
v2: Split off first_valid_mfn specific change. Re-base.

--- a/xen/arch/arm/include/asm/numa.h
+++ /dev/null
@@ -1,31 +0,0 @@
-#ifndef __ARCH_ARM_NUMA_H
-#define __ARCH_ARM_NUMA_H
-
-#include <xen/mm.h>
-
-typedef u8 nodeid_t;
-
-#ifndef CONFIG_NUMA
-
-/* Fake one node for now. See also node_online_map. */
-#define cpu_to_node(cpu) 0
-#define node_to_cpumask(node)   (cpu_online_map)
-
-/* XXX: implement NUMA support */
-#define node_spanned_pages(nid) (max_page - mfn_x(first_valid_mfn))
-#define node_start_pfn(nid) (mfn_x(first_valid_mfn))
-#define __node_distance(a, b) (20)
-
-#endif
-
-#define arch_want_default_dmazone() (false)
-
-#endif /* __ARCH_ARM_NUMA_H */
-/*
- * Local variables:
- * mode: C
- * c-file-style: "BSD"
- * c-basic-offset: 4
- * indent-tabs-mode: nil
- * End:
- */
--- a/xen/arch/arm/smpboot.c
+++ b/xen/arch/arm/smpboot.c
@@ -42,7 +42,7 @@ integer_param("maxcpus", max_cpus);
 /* CPU logical map: map xen cpuid to an MPIDR */
 register_t __cpu_logical_map[NR_CPUS] = { [0 ... NR_CPUS-1] = MPIDR_INVALID };
 
-/* Fake one node for now. See also asm/numa.h */
+/* Fake one node for now. See also xen/numa.h */
 nodemask_t __read_mostly node_online_map = { { [0] = 1UL } };
 
 /* Xen stack for bringing up the first CPU. */
--- a/xen/arch/ppc/include/asm/numa.h
+++ /dev/null
@@ -1,20 +0,0 @@
-#ifndef __ASM_PPC_NUMA_H__
-#define __ASM_PPC_NUMA_H__
-
-#include <xen/types.h>
-#include <xen/mm.h>
-
-typedef uint8_t nodeid_t;
-
-/* Fake one node for now. See also node_online_map. */
-#define cpu_to_node(cpu) 0
-#define node_to_cpumask(node)   (cpu_online_map)
-
-/* XXX: implement NUMA support */
-#define node_spanned_pages(nid) (max_page - mfn_x(first_valid_mfn))
-#define node_start_pfn(nid) (mfn_x(first_valid_mfn))
-#define __node_distance(a, b) (20)
-
-#define arch_want_default_dmazone() (false)
-
-#endif /* __ASM_PPC_NUMA_H__ */
--- a/xen/common/page_alloc.c
+++ b/xen/common/page_alloc.c
@@ -138,7 +138,6 @@
 #include <xen/spinlock.h>
 
 #include <asm/flushtlb.h>
-#include <asm/numa.h>
 #include <asm/page.h>
 
 #include <public/sysctl.h>
--- a/xen/common/sysctl.c
+++ b/xen/common/sysctl.c
@@ -22,8 +22,8 @@
 #include <asm/current.h>
 #include <xen/hypercall.h>
 #include <public/sysctl.h>
-#include <asm/numa.h>
 #include <xen/nodemask.h>
+#include <xen/numa.h>
 #include <xsm/xsm.h>
 #include <xen/pmstat.h>
 #include <xen/livepatch.h>
--- a/xen/include/xen/domain.h
+++ b/xen/include/xen/domain.h
@@ -2,6 +2,7 @@
 #ifndef __XEN_DOMAIN_H__
 #define __XEN_DOMAIN_H__
 
+#include <xen/numa.h>
 #include <xen/types.h>
 
 #include <public/xen.h>
@@ -12,7 +13,6 @@ struct guest_area {
 };
 
 #include <asm/domain.h>
-#include <asm/numa.h>
 
 typedef union {
     struct vcpu_guest_context *nat;
--- a/xen/include/xen/numa.h
+++ b/xen/include/xen/numa.h
@@ -2,7 +2,13 @@
 #define _XEN_NUMA_H
 
 #include <xen/mm-frame.h>
+
+#ifdef CONFIG_NUMA
+#include <xen/pdx.h>
 #include <asm/numa.h>
+#else
+typedef uint8_t nodeid_t;
+#endif
 
 #define NUMA_NO_NODE     0xFF
 #define NUMA_NO_DISTANCE 0xFF
@@ -108,8 +114,18 @@ extern void numa_set_processor_nodes_par
 
 #else
 
+/* Fake one node for now. See also node_online_map. */
+#define cpu_to_node(cpu) 0
+#define node_to_cpumask(node)   cpu_online_map
+
+#define arch_want_default_dmazone() false
+
 extern mfn_t first_valid_mfn;
 
+#define node_spanned_pages(nid) (max_page - mfn_x(first_valid_mfn))
+#define node_start_pfn(nid) mfn_x(first_valid_mfn)
+#define __node_distance(a, b) 20
+
 static inline nodeid_t mfn_to_nid(mfn_t mfn)
 {
     return 0;
--- a/xen/include/xen/pci.h
+++ b/xen/include/xen/pci.h
@@ -11,10 +11,10 @@
 #include <xen/list.h>
 #include <xen/spinlock.h>
 #include <xen/irq.h>
+#include <xen/numa.h>
 #include <xen/pci_regs.h>
 #include <xen/pfn.h>
 #include <asm/device.h>
-#include <asm/numa.h>
 
 /*
  * The PCI interface treats multi-function devices as independent


From xen-devel-bounces@lists.xenproject.org Mon Jan 08 11:31:26 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 08 Jan 2024 11:31:26 +0000
Received: from list by lists.xenproject.org with outflank-mailman.663412.1033314 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMnqn-0000MO-CA; Mon, 08 Jan 2024 11:31:25 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 663412.1033314; Mon, 08 Jan 2024 11:31:25 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMnqn-0000MH-9c; Mon, 08 Jan 2024 11:31:25 +0000
Received: by outflank-mailman (input) for mailman id 663412;
 Mon, 08 Jan 2024 11:31:24 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=KH4C=IS=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rMnqm-0000M8-Cx
 for xen-devel@lists.xenproject.org; Mon, 08 Jan 2024 11:31:24 +0000
Received: from mail-lj1-x22d.google.com (mail-lj1-x22d.google.com
 [2a00:1450:4864:20::22d])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 73d1b8e3-ae19-11ee-98ef-6d05b1d4d9a1;
 Mon, 08 Jan 2024 12:31:23 +0100 (CET)
Received: by mail-lj1-x22d.google.com with SMTP id
 38308e7fff4ca-2cc7d2c1ff0so18184361fa.3
 for <xen-devel@lists.xenproject.org>; Mon, 08 Jan 2024 03:31:23 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 ca15-20020a0566381c0f00b0046e25a7bb9esm530141jab.176.2024.01.08.03.31.21
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 08 Jan 2024 03:31:23 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 73d1b8e3-ae19-11ee-98ef-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1704713483; x=1705318283; darn=lists.xenproject.org;
        h=content-transfer-encoding:autocrypt:subject:from:cc:to
         :content-language:user-agent:mime-version:date:message-id:from:to:cc
         :subject:date:message-id:reply-to;
        bh=LI6FO34QCLvXUPTqRWYt+HLnZi/yUQ47r87BvBhx+5c=;
        b=agVBcwPj1l9ARflZh/D607zWhxFYZF9OhEG9F0mF6z88JJpMCz6VrfXU9+h/sgEvKB
         lZYmBUzRkE3MWjhMQwVIFJaLDWoz5rRHt3srNCZrJ/9yQtlOPshg1MyqjUo6CItFaEED
         33AddFRYdE+yUeQjMVMxfXB9cHQ8TiPREMPZLcUdkmY9YkgmbCndYc2JsYXCyh1pSWYR
         l9vpoIfXjTzTwPDxC1k7KVwtITerPI9g0GCb+XkbY379YGqqycf0IRm13M0id33Fsb8d
         iMYIpUUrJ/nvB01WFpOC9XHei+T8VsYy4nLY21+TxVMJHfR3/+hRcJmsjc6tDbBRQaFy
         PX+g==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704713483; x=1705318283;
        h=content-transfer-encoding:autocrypt:subject:from:cc:to
         :content-language:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=LI6FO34QCLvXUPTqRWYt+HLnZi/yUQ47r87BvBhx+5c=;
        b=opUgyVFDIzfUd+aCwxxPchi2TJBR6zq0RVgEfselog9/9EYFye/5RohejXV+ij+WYY
         g+xr1rMamy0qBij7tUymjyhYunahZ5qYiKDbQLQBTvBW/L1eqCNfV1dQ51faW56q+29R
         Y3HesUVPBqeWROUpTum7FEKSLxLQJQaugqB3eAtp3MQPRBc/jSASJkGOmeHE7JL5NZgj
         Py/z72xmAVuI1fPNz2RecMzMvR/OMgtZYLBa0W6fE8118GpIW/fCyZT75eKHx+6AtHSj
         k9kHR5hfPDoHB+VFnEVTg+rI63m3M2jnz50tnCP3//z3nq5ttDQT6sP0wMOg0SFtuOGh
         Oesw==
X-Gm-Message-State: AOJu0YwVDrc6JIlaMsG+cRxYCBASHdvp9mN5kh4oioMZPQozklxzSO/u
	d6IKo/Mo9mtcxLjDh/U3e/VgcCZOQHwln5zOlFeTwYjCsQ==
X-Google-Smtp-Source: AGHT+IF5+mjBK6JuwVymLXwjecWlgC36G07uYYGHl8O+sw0Fsa1+z+ZW5riFaaZtZqJHOeNtUqb3Gw==
X-Received: by 2002:a2e:b747:0:b0:2cc:68ba:98a9 with SMTP id k7-20020a2eb747000000b002cc68ba98a9mr1459276ljo.41.1704713483377;
        Mon, 08 Jan 2024 03:31:23 -0800 (PST)
Message-ID: <224db25e-bd4c-4415-aff8-6ff3e84343d8@suse.com>
Date: Mon, 8 Jan 2024 12:31:24 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Content-Language: en-US
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 George Dunlap <george.dunlap@citrix.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>
From: Jan Beulich <jbeulich@suse.com>
Subject: [PATCH v2] NUMA: limit first_valid_mfn exposure
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

Address the TODO regarding first_valid_mfn by making the variable static
when NUMA=y, thus also addressing a Misra C:2012 rule 8.4 concern (on
x86).

Signed-off-by: Jan Beulich <jbeulich@suse.com>
---
Julien suggests something like

STATIC_IF(CONFIG_NUMA) unsigned long first_valid_mfn;

but I view this as non-scalable (or at least I can't see how to
implement such in a scalabale way) and hence undesirable to introduce.
---
v2: New, split off.

--- a/xen/common/page_alloc.c
+++ b/xen/common/page_alloc.c
@@ -254,12 +254,13 @@ static PAGE_LIST_HEAD(page_broken_list);
  * BOOT-TIME ALLOCATOR
  */
 
+#ifndef CONFIG_NUMA
 /*
  * first_valid_mfn is exported because it is used when !CONFIG_NUMA.
- *
- * TODO: Consider if we can conditionally export first_valid_mfn based
- * on whether NUMA is selected.
  */
+#else
+static
+#endif
 mfn_t first_valid_mfn = INVALID_MFN_INITIALIZER;
 
 struct bootmem_region {


From xen-devel-bounces@lists.xenproject.org Mon Jan 08 11:35:59 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 08 Jan 2024 11:35:59 +0000
Received: from list by lists.xenproject.org with outflank-mailman.663416.1033325 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMnv8-0001bJ-So; Mon, 08 Jan 2024 11:35:54 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 663416.1033325; Mon, 08 Jan 2024 11:35:54 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMnv8-0001bC-Q3; Mon, 08 Jan 2024 11:35:54 +0000
Received: by outflank-mailman (input) for mailman id 663416;
 Mon, 08 Jan 2024 11:35:53 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>) id 1rMnv7-0001b6-BN
 for xen-devel@lists.xenproject.org; Mon, 08 Jan 2024 11:35:53 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rMnv6-00036T-PN; Mon, 08 Jan 2024 11:35:52 +0000
Received: from gw1.octic.net ([88.97.20.152] helo=[10.0.1.240])
 by xenbits.xenproject.org with esmtpsa
 (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rMnv6-0007Ns-IJ; Mon, 08 Jan 2024 11:35:52 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
	s=20200302mail; h=Content-Transfer-Encoding:Content-Type:In-Reply-To:From:
	References:Cc:To:Subject:MIME-Version:Date:Message-ID;
	bh=vbwdwIR56jADIn4Qmvm63CH0eHn7B0flyZ60zerADYQ=; b=ywEZEx4u/7yj69x07AYJHN9Y7w
	PRh935BQAyCGI+lzJtnuwOnXSiPI0VDK0vleNvELezqGvVfEM/Bp+V9oDzgj0T31kTQiSV6v2gGIq
	bGU03AZe6tXwmGlJvAjJHw0jBNoz0+V+iaQkbielxw0+zJ7rqWaQ49mvB/ZnS1R4uTyM=;
Message-ID: <33061994-0b49-4e4e-8698-d6901b9130dc@xen.org>
Date: Mon, 8 Jan 2024 11:35:50 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v5 04/13] xen: extend domctl interface for cache coloring
Content-Language: en-GB
To: Carlo Nonato <carlo.nonato@minervasys.tech>
Cc: xen-devel@lists.xenproject.org,
 Stefano Stabellini <sstabellini@kernel.org>,
 Bertrand Marquis <bertrand.marquis@arm.com>,
 Michal Orzel <michal.orzel@amd.com>,
 Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
 Andrew Cooper <andrew.cooper3@citrix.com>,
 George Dunlap <george.dunlap@citrix.com>, Jan Beulich <jbeulich@suse.com>,
 Wei Liu <wl@xen.org>, Marco Solieri <marco.solieri@minervasys.tech>
References: <20240102095138.17933-1-carlo.nonato@minervasys.tech>
 <20240102095138.17933-5-carlo.nonato@minervasys.tech>
 <99295edf-6c9c-4d06-ba20-86db67100561@xen.org>
 <CAG+AhRWd9E5sQPY-sxN+WGTSWtvRXGN2FnZC2Vy6LPyynKGLcQ@mail.gmail.com>
 <4675a541-b9dc-476a-a6ff-0247a4403292@xen.org>
 <CAG+AhRX6Y2U6A1v=27KgUeWip115R1o+csEWcyCCooxE2Tac6w@mail.gmail.com>
From: Julien Grall <julien@xen.org>
In-Reply-To: <CAG+AhRX6Y2U6A1v=27KgUeWip115R1o+csEWcyCCooxE2Tac6w@mail.gmail.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit

Hi Carlo,

On 08/01/2024 11:19, Carlo Nonato wrote:
> Hi Julien,
> 
> On Mon, Jan 8, 2024 at 12:01 PM Julien Grall <julien@xen.org> wrote:
>>
>> Hi Carlo,
>>
>> On 08/01/2024 10:27, Carlo Nonato wrote:
>>> On Fri, Jan 5, 2024 at 6:26 PM Julien Grall <julien@xen.org> wrote:
>>>> On 02/01/2024 09:51, Carlo Nonato wrote:
>>>>> This commit updates the domctl interface to allow the user to set cache
>>>>> coloring configurations from the toolstack.
>>>>> It also implements the functionality for arm64.
>>>>>
>>>>> Based on original work from: Luca Miccio <lucmiccio@gmail.com>
>>>>>
>>>>> Signed-off-by: Carlo Nonato <carlo.nonato@minervasys.tech>
>>>>> Signed-off-by: Marco Solieri <marco.solieri@minervasys.tech>
>>>>> ---
>>>>> v5:
>>>>> - added a new hypercall to set colors
>>>>> - uint for the guest handle
>>>>> v4:
>>>>> - updated XEN_DOMCTL_INTERFACE_VERSION
>>>>> ---
>>>>>     xen/arch/arm/llc-coloring.c    | 17 +++++++++++++++++
>>>>>     xen/common/domctl.c            | 11 +++++++++++
>>>>>     xen/include/public/domctl.h    | 10 +++++++++-
>>>>>     xen/include/xen/llc-coloring.h |  3 +++
>>>>>     4 files changed, 40 insertions(+), 1 deletion(-)
>>>>>
>>>>> diff --git a/xen/arch/arm/llc-coloring.c b/xen/arch/arm/llc-coloring.c
>>>>> index 5ce58aba70..a08614ec36 100644
>>>>> --- a/xen/arch/arm/llc-coloring.c
>>>>> +++ b/xen/arch/arm/llc-coloring.c
>>>>> @@ -9,6 +9,7 @@
>>>>>      *    Carlo Nonato <carlo.nonato@minervasys.tech>
>>>>>      */
>>>>>     #include <xen/errno.h>
>>>>> +#include <xen/guest_access.h>
>>>>>     #include <xen/keyhandler.h>
>>>>>     #include <xen/llc-coloring.h>
>>>>>     #include <xen/param.h>
>>>>> @@ -278,6 +279,22 @@ int dom0_set_llc_colors(struct domain *d)
>>>>>         return domain_check_colors(d);
>>>>>     }
>>>>>
>>>>> +int domain_set_llc_colors_domctl(struct domain *d,
>>>>> +                                 const struct xen_domctl_set_llc_colors *config)
>>>>> +{
>>>>> +    if ( d->num_llc_colors )
>>>>> +        return -EEXIST;
>>>>> +
>>>>> +    if ( domain_alloc_colors(d, config->num_llc_colors) )
>>>>
>>>> domain_alloc_colors() doesn't sanity check config->num_llc_colors before
>>>> allocating the array. You want a check the size before so we would not
>>>> try to allocate an arbitrary amount of memory.
>>>>
>>>>> +        return -ENOMEM;
>>>>> +
>>>>> +    if ( copy_from_guest(d->llc_colors, config->llc_colors,
>>>>> +                         config->num_llc_colors) )
>>>>> +        return -EFAULT;
>>>>> +
>>>>> +    return domain_check_colors(d);
>>>>> +}
>>>>> +
>>>>>     /*
>>>>>      * Local variables:
>>>>>      * mode: C
>>>>> diff --git a/xen/common/domctl.c b/xen/common/domctl.c
>>>>> index f5a71ee5f7..b6867d0602 100644
>>>>> --- a/xen/common/domctl.c
>>>>> +++ b/xen/common/domctl.c
>>>>> @@ -8,6 +8,7 @@
>>>>>
>>>>>     #include <xen/types.h>
>>>>>     #include <xen/lib.h>
>>>>> +#include <xen/llc-coloring.h>
>>>>>     #include <xen/err.h>
>>>>>     #include <xen/mm.h>
>>>>>     #include <xen/sched.h>
>>>>> @@ -858,6 +859,16 @@ long do_domctl(XEN_GUEST_HANDLE_PARAM(xen_domctl_t) u_domctl)
>>>>>                     __HYPERVISOR_domctl, "h", u_domctl);
>>>>>             break;
>>>>>
>>>>> +    case XEN_DOMCTL_set_llc_colors:
>>>>> +        if ( !llc_coloring_enabled )
>>>>> +            break;
>>>>> +
>>>>> +        ret = domain_set_llc_colors_domctl(d, &op->u.set_llc_colors);
>>>>> +        if ( ret == -EEXIST )
>>>>> +            printk(XENLOG_ERR
>>>>> +                   "Can't set LLC colors on an already created domain\n");
>>>>
>>>> To me, the message doesn't match the check in
>>>> domain_set_llc_colors_domctl(). But I think you want to check that no
>>>> memory was yet allocated to the domain. Otherwise, you coloring will be
>>>> wrong.
>>>>
>>>> Also, it is a bit unclear why you print a message for -EEXIST but not
>>>> the others. In this instance, I would consider to print nothing at all.
>>>
>>> The problem here is that we don't support recoloring. When a domain is
>>> created it receives a coloring configuration and it can't change. If this
>>> hypercall is called twice I have to stop the second time somehow.
>> Looking at your check what you prevent is a toolstack updating the array
>> twice. But that would be ok (/!\ I am not saying we should allow it) so
>> long no memory has been allocated to the domain.
>>
>> But I also consider we would re-color once we started to allocate memory
>> for the domain (either RAM or P2M). This seems to be missed out in your
>> check.
> 
> So you want to be able to change colors if no memory has yet been allocated?

No. I am saying that that we should not be able to allow changing the 
colors after the memory has been allocated. To give an example, your 
current code would allow:

   1) Setup the P2M pools or allocate RAM
   2) Set the color

This would render the coloring configuration moot.

Whether we want to allow changing the coloring before hand is a 
different question and as I wrote earlier on, I don't mind if you want 
to forbid that.

> I don't know what to check that.

You can check the size of the P2M pool (d->arch.paging.p2m_total_pages) 
is still 0. I think for RAM, you can check d->tot_pages == 0.

Cheers,

-- 
Julien Grall


From xen-devel-bounces@lists.xenproject.org Mon Jan 08 11:36:58 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 08 Jan 2024 11:36:58 +0000
Received: from list by lists.xenproject.org with outflank-mailman.663420.1033334 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMnw9-00026T-5f; Mon, 08 Jan 2024 11:36:57 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 663420.1033334; Mon, 08 Jan 2024 11:36:57 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMnw9-00026M-2n; Mon, 08 Jan 2024 11:36:57 +0000
Received: by outflank-mailman (input) for mailman id 663420;
 Mon, 08 Jan 2024 11:36:55 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=KH4C=IS=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rMnw7-000255-MS
 for xen-devel@lists.xenproject.org; Mon, 08 Jan 2024 11:36:55 +0000
Received: from mail-lj1-x232.google.com (mail-lj1-x232.google.com
 [2a00:1450:4864:20::232])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 394462f7-ae1a-11ee-98ef-6d05b1d4d9a1;
 Mon, 08 Jan 2024 12:36:54 +0100 (CET)
Received: by mail-lj1-x232.google.com with SMTP id
 38308e7fff4ca-2ccbc328744so18573411fa.3
 for <xen-devel@lists.xenproject.org>; Mon, 08 Jan 2024 03:36:54 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 p6-20020a92d486000000b003606dc5804asm2461374ilg.65.2024.01.08.03.36.52
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 08 Jan 2024 03:36:53 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 394462f7-ae1a-11ee-98ef-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1704713814; x=1705318614; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=5N/i9i5vtcDBT0CcvUjbXKnxzVA3qbpVoNrzNesH73Y=;
        b=GcHCRZWB9nGsf6WtRBR7XwW5aeg5SIIKHpCqOpj9U1hJf+8eZ6vFVJkFqhqS+Oa5kw
         ashe4a/Zdr/Q2qfJNLL3WlYCxu4ZoMr0BFW1SyX2Jvaau7JdcURsu2XoW/B81IQ17VZv
         KhJOAJjoWHv9s84vIwlno2HhrxqOMMGg2jMdUnejU0LQFRyNcZ0MPVZlbnpss1r65OIt
         topSPP/0n4wIa8Zfg5zltY/zNzB93JLN1tEdUa75DDJcWN8qA2zr4jpJjijINLc1f+bp
         MsQNnWkRLZumcxKB6Jw9EdU4IOHuxzFdjr2sXwpveU4PFbJPiVRmi3UO7Z6vtjYFgHgp
         BeNw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704713814; x=1705318614;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=5N/i9i5vtcDBT0CcvUjbXKnxzVA3qbpVoNrzNesH73Y=;
        b=o3iOuSpbca0tnFp+xbSXHuRFPdxBh9N4ynsHPAZ75naNENMsL/OfzCc6qaPdew5WrU
         PEkryOWtXU1ehe0/56iuUi+iRhXFR+ocWD78q23HtD35ETGx9+T2ChHeFqAUogGjmgMn
         rw4/c2L3BrInIrt2vDS4Lwdw5d8B/c3phTgmZ6spj8bZB9RJciL2tyfBKqsGRgyZ33sR
         qw3QRZL8XiafwbOnouBqshEGYNRUvfpnI7R5LBf7fsgp2Vgqek2xJJv4gQ567nEISZY5
         8oP2hfYw4ZMZEBELYMQ70/avigCrO9SLY4jxfUSn/j/aEVfBn0khJB/hwtyecCS1hpHO
         AP0g==
X-Gm-Message-State: AOJu0YzxQGkOL8W5W2rWdetWULdkdIJNmz1oRj8ephmBr2bkCjU9ISjC
	7bhXw4UmRlLNksChsPrg5p7cug5YBe6J
X-Google-Smtp-Source: AGHT+IH1qIqPcqllj0/UPPenhU4wcMsHAXWYd2xUymgufFgFnRiFmubXAc22+IqJG5CoMlDZN1Fhfw==
X-Received: by 2002:a05:6512:2381:b0:50e:1daa:6705 with SMTP id c1-20020a056512238100b0050e1daa6705mr1817311lfv.6.1704713814362;
        Mon, 08 Jan 2024 03:36:54 -0800 (PST)
Message-ID: <19d5c152-3ab7-4762-980b-3570d3a948e4@suse.com>
Date: Mon, 8 Jan 2024 12:36:53 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [XEN RFC] x86/uaccess: remove __{put,get}_user_bad()
Content-Language: en-US
To: Federico Serafini <federico.serafini@bugseng.com>
Cc: consulting@bugseng.com, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger.pau@citrix.com>, Wei Liu <wl@xen.org>,
 xen-devel@lists.xenproject.org, Stefano Stabellini <sstabellini@kernel.org>,
 Nicola Vetrini <nicola.vetrini@bugseng.com>,
 Andrew Cooper <andrew.cooper3@citrix.com>, Julien Grall <julien@xen.org>
References: <9cf852da1c03b614bf5010132c58a18adc2a4161.1703155225.git.federico.serafini@bugseng.com>
 <a2050ac1-e205-4d7f-b9b1-aa625136e63a@suse.com>
 <0c5bbfde-4cf0-4878-b1ee-ccc8eb775464@citrix.com>
 <eb53449bd6595ea0931460e62dd57b9c@bugseng.com>
 <1330c757-1ca3-4b07-898b-799cbfa67e8a@suse.com>
 <6a39fe3e-524f-4e39-81bc-ffb3d48ba306@bugseng.com>
 <192c393a-3702-4cc3-af60-e2711098ec6d@suse.com>
 <8fa1f868-c7de-4a46-a827-a75c38513f6f@bugseng.com>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <8fa1f868-c7de-4a46-a827-a75c38513f6f@bugseng.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 08.01.2024 12:16, Federico Serafini wrote:
> On 08/01/24 09:02, Jan Beulich wrote:
>> On 05.01.2024 17:19, Federico Serafini wrote:
>>> Hello everyone,
>>>
>>> On 21/12/23 13:41, Jan Beulich wrote:
>>>> On 21.12.2023 13:01, Nicola Vetrini wrote:
>>>>> Hi Andrew,
>>>>>
>>>>> On 2023-12-21 12:03, Andrew Cooper wrote:
>>>>>> On 21/12/2023 10:58 am, Jan Beulich wrote:
>>>>>>> On 21.12.2023 11:53, Federico Serafini wrote:
>>>>>>>> Remove declarations of __put_user_bad() and __get_user_bad()
>>>>>>>> since they have no definition.
>>>>>>>> Replace their uses with a break statement to address violations of
>>>>>>>> MISRA C:2012 Rule 16.3 ("An unconditional `break' statement shall
>>>>>>>> terminate every switch-clause").
>>>>>>>> No functional change.
>>>>>>>>
>>>>>>>> Signed-off-by: Federico Serafini <federico.serafini@bugseng.com>
>>>>>>>> ---
>>>>>>>> Several violations of Rule 16.3 come from uses of macros
>>>>>>>> get_unsafe_size() and put_unsafe_size().
>>>>>>>> Looking at the macro definitions I found __get_user_bad() and
>>>>>>>> __put_user_bad().
>>>>>>>> I was wondering if instead of just adding the break statement I can
>>>>>>>> also remove
>>>>>>>> such functions which seem to not have a definition.
>>>>>>> No, you can't. Try introducing a caller which "accidentally" uses the
>>>>>>> wrong size. Without your change you'll observe the build failing (in
>>>>>>> a somewhat obscure way, but still), while with your change bad code
>>>>>>> will silently be generated.
>>>>>>
>>>>>> The construct here is deliberate.  It's a build time assertion that bad
>>>>>> sizes aren't used.
>>>>>>
>>>>>> __bitop_bad_size() and __xsm_action_mismatch_detected() are the same
>>>>>> pattern in other areas of code too, with the latter being more explicit
>>>>>> because of how it's wrapped by LINKER_BUG_ON().
>>>>>>
>>>>>>
>>>>>> It is slightly horrible, and not the most obvious construct for
>>>>>> newcomers.  If there's an alternative way to get a build assertion, we
>>>>>> could consider switching to a new pattern.
>>>>>
>>>>> would you be in favour of a solution with a BUILD_BUG_ON in the default
>>>>> branch followed by a break?
>>>>>
>>>>> default:
>>>>>        BUILD_BUG_ON(!size || size >=8 || (size & (size - 1)));
>>>>>        break;
>>>>
>>>> I don't think this would compile - BUILD_BUG_ON() wants a compile-time
>>>> constant passed.
>>>
>>> What do you think about adding the following macro to compiler.h:
>>>
>>> #define static_assert_unreachable(identifier) \
>>>       asm("unreachable " #identifier " reached")
>>>
>>> It expands to an invalid assembly instruction that will lead to a
>>> customizable error message generated by the assembler instead of the
>>> linker (anticipating the error detection).
>>>
>>> The use of this macro will indicate a program point considered
>>> unreachable (and as such removed) by the static analysis performed by
>>> the compiler, even at an optimization level -O0.
>>>
>>> An example of use is in the default case of put_unsafe_size():
>>>
>>> default: static_assert_unreachable(default);
>>>
>>> In case a wrong size will be used, the following message will be
>>> generated:
>>>
>>> ./arch/x86/include/asm/uaccess.h: Assembler messages:
>>> ./arch/x86/include/asm/uaccess.h:257: Error: no such instruction:
>>> `unreachable default reached'
>>
>> Nice idea. To take it one step further, why not simply use the .error
>> assembler directive then?
> 
> It seems good.
> 
>>
>>> Note that adopting the macro and discussing its definition are two
>>> separate things:
>>> I think we can all agree on the fact that the use of such macro improves
>>> readability, so I would suggest its adoption.
>>> Whereas for its definition, if you don't like the invalid asm
>>> instruction, we could discuss for a different solution, for example,
>>> the following is something similar to what you are doing now:
>>>
>>> #define static_assert_unreachable(identifier) \
>>>       extern void identifier(void);             \
>>>       identifier()
>>>
>>>
>>> Note also that the problem of the missing break statement (that violates
>>> Rule 16.3) is still present, it could be addressed by adding the break
>>> or deviating for such special cases, do you have any preferences?
>>
>> Amend the new macro's expansion by unreachable()?
> 
> It would work only if we also add macro unreachable() to the allowed
> statements that can terminate a switch-clause.

Isn't this, or something substantially similar, necessary anyway, to
avoid ...

> I'll take this opportunity to clarify the Rule 16.3 and the deviation
> system of ECLAIR for this rule (adding Julien in CC, he might be
> interested in this).
> The rationale of 16.3 is the avoidance of unintentional fall through.
> To do this, the rule says to put an unconditional break statement at
> the end of every switch-clause.
> 
> Nothing is said about the semantics of the code within the
> switch-clause, e.g., the rule does not take into account if the fall
> through cannot happen because the code returns in every feasible path.
> The reason behind this is to keep the rule as simple as possible and
> above all, keep the rule to be decidable.

such "break" then violating the "no unreachable code" rule?

Jan

> Given the fact that 16.3 is a purely syntactic (and hence decidable)
> rule, the deviations that can be configured within ECLAIR are
> consequently purely syntactic.
> Currently, we configured the tool to allow also unconditional return,
> unconditional goto and unconditional continue as terminating statements.
> This means that, if you want also to deviate switch-clauses terminating
> with:
> 
> if ( cond ) return x; else return y;
> 
> then we need to explicitly configure the tool to consider also
> an if statement having this particular shape as allowed terminal
> statement (which is something I would not suggest since a rewriting
> would address the violation).
> 
> The same applies to unreachable().
> No semantics checks are performed for Rule 16.3,
> hence we will need to add it to the allowed terminal statements.
> 



From xen-devel-bounces@lists.xenproject.org Mon Jan 08 11:37:28 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 08 Jan 2024 11:37:28 +0000
Received: from list by lists.xenproject.org with outflank-mailman.663427.1033345 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMnwd-0002h9-IM; Mon, 08 Jan 2024 11:37:27 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 663427.1033345; Mon, 08 Jan 2024 11:37:27 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMnwd-0002h2-FS; Mon, 08 Jan 2024 11:37:27 +0000
Received: by outflank-mailman (input) for mailman id 663427;
 Mon, 08 Jan 2024 11:37:26 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>) id 1rMnwc-0002go-An
 for xen-devel@lists.xenproject.org; Mon, 08 Jan 2024 11:37:26 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rMnwb-000390-PP; Mon, 08 Jan 2024 11:37:25 +0000
Received: from gw1.octic.net ([88.97.20.152] helo=[10.0.1.240])
 by xenbits.xenproject.org with esmtpsa
 (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rMnwb-0007Ns-JU; Mon, 08 Jan 2024 11:37:25 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
	s=20200302mail; h=Content-Transfer-Encoding:Content-Type:In-Reply-To:From:
	References:Cc:To:Subject:MIME-Version:Date:Message-ID;
	bh=EdMtX0OCqaeaJbtToZJGQn0S+iyIH0v5KKKiP6Z4aes=; b=p+R6tC5pSlB8QrsgYp4IO13M2r
	H+CvHJ+tUKuEVYlNHPjBLIsUcpSFPPRLiO0PrBuQ4gWumKbK/MOcspSp2X4/Db6jh/zCoAfbfjpIG
	Y+NKliEBydHR06gXPBEFkDY5aXlY+22i6zahnHyYGyJKuK5+Aq/OgA6tHTSoWaEKOf9Q=;
Message-ID: <a99d9d1a-2395-4771-95f3-5dab64e10ce7@xen.org>
Date: Mon, 8 Jan 2024 11:37:24 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2] NUMA: limit first_valid_mfn exposure
Content-Language: en-GB
To: Jan Beulich <jbeulich@suse.com>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 George Dunlap <george.dunlap@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>
References: <224db25e-bd4c-4415-aff8-6ff3e84343d8@suse.com>
From: Julien Grall <julien@xen.org>
In-Reply-To: <224db25e-bd4c-4415-aff8-6ff3e84343d8@suse.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

Hi Jan,

On 08/01/2024 11:31, Jan Beulich wrote:
> Address the TODO regarding first_valid_mfn by making the variable static
> when NUMA=y, thus also addressing a Misra C:2012 rule 8.4 concern (on
> x86).
> 
> Signed-off-by: Jan Beulich <jbeulich@suse.com>
> ---
> Julien suggests something like
> 
> STATIC_IF(CONFIG_NUMA) unsigned long first_valid_mfn;
> 
> but I view this as non-scalable (or at least I can't see how to
> implement such in a scalabale way) and hence undesirable to introduce.

I don't really see the scalability problem. Can you explain a bit more?

Cheers,

-- 
Julien Grall


From xen-devel-bounces@lists.xenproject.org Mon Jan 08 11:43:59 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 08 Jan 2024 11:43:59 +0000
Received: from list by lists.xenproject.org with outflank-mailman.663433.1033355 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMo2t-0005Ul-9K; Mon, 08 Jan 2024 11:43:55 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 663433.1033355; Mon, 08 Jan 2024 11:43:55 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMo2t-0005Ue-5T; Mon, 08 Jan 2024 11:43:55 +0000
Received: by outflank-mailman (input) for mailman id 663433;
 Mon, 08 Jan 2024 11:43:54 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=KH4C=IS=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rMo2s-0005UY-7m
 for xen-devel@lists.xenproject.org; Mon, 08 Jan 2024 11:43:54 +0000
Received: from mail-lj1-x22a.google.com (mail-lj1-x22a.google.com
 [2a00:1450:4864:20::22a])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 329c1936-ae1b-11ee-98ef-6d05b1d4d9a1;
 Mon, 08 Jan 2024 12:43:53 +0100 (CET)
Received: by mail-lj1-x22a.google.com with SMTP id
 38308e7fff4ca-2cd2f472665so17022051fa.2
 for <xen-devel@lists.xenproject.org>; Mon, 08 Jan 2024 03:43:53 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 bf16-20020a056e02309000b003608dcfeaa2sm751970ilb.23.2024.01.08.03.43.51
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 08 Jan 2024 03:43:52 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 329c1936-ae1b-11ee-98ef-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1704714233; x=1705319033; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=Fn7DQ3qWbOAFPrGrJjW0q1yf+FMonlgeCeaopcvOBS4=;
        b=E2C7BASlhEBIPnpQSEVlz4NfDB/dVchZrLXbzqph9xa2FEY6lmuecNWDj5Z1JP29cd
         1tDlxjKRELjm68qsrMMlgnKx7i9Lid9wcwMnaMIA4JwNk2fWSfkZn7Y/i25jRp6eDwWq
         7NBL8nN5mstNExSRRe7ryn+YqKgRBXPmfQTKoyFZ8dACLIuEf7BtDkz/dySzU3OT8g5w
         lSnq35GlBQiwtiGR3PCgvP1R1C3+5+axcr3l8ekp6YZIuJKMhxaZ8EcCazoU/7enwBUs
         wpKJ+YOxUIDXpscrul1fLu6v5OFUvI0P7jp3x1ThuRRtEUKcHMoFcBy4+lhsAEVP+kqm
         jqmA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704714233; x=1705319033;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=Fn7DQ3qWbOAFPrGrJjW0q1yf+FMonlgeCeaopcvOBS4=;
        b=aUT957+u0RTv7QKvYBuczgxSfYgYeEKMn/R/msvOT3iZpqGbaddRs3O9KcLXw4DyAl
         yyv0Uwbwe2VHbvJkrHqFriGl5Yb+RH3quIQw/+rQQ9oVWQc4Hfhh094zIBQbF3c1TiiP
         6B8JIoLI43SSy2Dbmd/vq91Y1H3+L/e9cwt8HzDVIjAsIJ5uV/D6bNtUfkplOg7iOudS
         m0vaQLEsdTQ3uHXmBKyYm9uMKXk96VncvRbV2mCYirVO++wSkBEJErHE570SHX1P8oEx
         e0C5FrXt2xyxYb88ZeYRRlXAAlUwFMgbdDUj9m40exj+7iJY2dnV2/wYgn17SOmrB4Ce
         G3oA==
X-Gm-Message-State: AOJu0Yzv7r32AZT5oDaaje5TMYwpeXyP9JpHDM1TuBgbQwLS83x7o6qW
	a2Ck4TqOzwvmz2iFsAvmhnQOv2O22zg3
X-Google-Smtp-Source: AGHT+IFepgoej3Sl2+/6K7Lqq9irgQ5orRIHKvgD1WA+JVJuX35UalH4zbKUJbpzdqW1m6AQyoan4Q==
X-Received: by 2002:a2e:9d13:0:b0:2cc:cd36:fb32 with SMTP id t19-20020a2e9d13000000b002cccd36fb32mr1251256lji.48.1704714232782;
        Mon, 08 Jan 2024 03:43:52 -0800 (PST)
Message-ID: <0872306a-fefb-424b-b27a-b67ba21828c7@suse.com>
Date: Mon, 8 Jan 2024 12:43:52 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2] NUMA: limit first_valid_mfn exposure
Content-Language: en-US
To: Julien Grall <julien@xen.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 George Dunlap <george.dunlap@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
References: <224db25e-bd4c-4415-aff8-6ff3e84343d8@suse.com>
 <a99d9d1a-2395-4771-95f3-5dab64e10ce7@xen.org>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <a99d9d1a-2395-4771-95f3-5dab64e10ce7@xen.org>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 08.01.2024 12:37, Julien Grall wrote:
> On 08/01/2024 11:31, Jan Beulich wrote:
>> Address the TODO regarding first_valid_mfn by making the variable static
>> when NUMA=y, thus also addressing a Misra C:2012 rule 8.4 concern (on
>> x86).
>>
>> Signed-off-by: Jan Beulich <jbeulich@suse.com>
>> ---
>> Julien suggests something like
>>
>> STATIC_IF(CONFIG_NUMA) unsigned long first_valid_mfn;
>>
>> but I view this as non-scalable (or at least I can't see how to
>> implement such in a scalabale way) and hence undesirable to introduce.
> 
> I don't really see the scalability problem. Can you explain a bit more?

Well, when seeing your original suggestion, I first considered it quite
reasonable. But when thinking how to implement it, I couldn't see what

#define STATIC_IF(cfg)

should expand to. That's simply because a macro body cannot itself have
pre-processor directives. Hence all I could think of was

#ifdef CONFIG_NUMA
# define static_if_CONFIG_NUMA static
#else
# define static_if_CONFIG_NUMA
#endif
#define STATIC_IF(cfg) static_if_ ## cfg

And I think it is easy to see how this wouldn't scale across CONFIG_xyz.
Plus that that point STATIC_IF() itself would be pretty much redundant.
But maybe I'm simply overlooking the obvious ...

Jan


From xen-devel-bounces@lists.xenproject.org Mon Jan 08 11:44:12 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 08 Jan 2024 11:44:12 +0000
Received: from list by lists.xenproject.org with outflank-mailman.663435.1033365 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMo3A-0005pZ-Fv; Mon, 08 Jan 2024 11:44:12 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 663435.1033365; Mon, 08 Jan 2024 11:44:12 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMo3A-0005pS-D2; Mon, 08 Jan 2024 11:44:12 +0000
Received: by outflank-mailman (input) for mailman id 663435;
 Mon, 08 Jan 2024 11:44:11 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>) id 1rMo39-0005p7-Fi
 for xen-devel@lists.xenproject.org; Mon, 08 Jan 2024 11:44:11 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rMo38-0003JL-Te; Mon, 08 Jan 2024 11:44:10 +0000
Received: from gw1.octic.net ([88.97.20.152] helo=[10.0.1.240])
 by xenbits.xenproject.org with esmtpsa
 (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rMo38-0007u3-N5; Mon, 08 Jan 2024 11:44:10 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
	s=20200302mail; h=Content-Transfer-Encoding:Content-Type:In-Reply-To:From:
	References:Cc:To:Subject:MIME-Version:Date:Message-ID;
	bh=yqzUmS/z/NBCfC3q6Gb8gMvLbopglrtzffgQ1rp08cU=; b=u+DQn+y+f7gbBJ4zdRyg4LgS/a
	LfC2SUAVgXED+u2JxsCOXRWmlyCBhfXU8iNsHk+K3PIBzGU/90lsB2arxjR9cxItNXgHkCbgaYIPm
	xqo1sbMhLuM9PFpde6Q2A6K1ygBof7LFSYSwUzjCOPnvQHiyGeyNWCwyF9ZUyt9/UopY=;
Message-ID: <24e9adad-0f3d-4e0f-8202-33992718e9c3@xen.org>
Date: Mon, 8 Jan 2024 11:44:08 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v5 03/13] xen/arm: add Dom0 cache coloring support
Content-Language: en-GB
To: Carlo Nonato <carlo.nonato@minervasys.tech>
Cc: xen-devel@lists.xenproject.org,
 Stefano Stabellini <sstabellini@kernel.org>,
 Bertrand Marquis <bertrand.marquis@arm.com>,
 Michal Orzel <michal.orzel@amd.com>,
 Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
 Andrew Cooper <andrew.cooper3@citrix.com>,
 George Dunlap <george.dunlap@citrix.com>, Jan Beulich <jbeulich@suse.com>,
 Wei Liu <wl@xen.org>, Marco Solieri <marco.solieri@minervasys.tech>
References: <20240102095138.17933-1-carlo.nonato@minervasys.tech>
 <20240102095138.17933-4-carlo.nonato@minervasys.tech>
 <046e9949-d126-42b1-90a6-12af540d63bf@xen.org>
 <CAG+AhRWm4N7GV3HfkTNCvXQw7-6Woq=+zBqdHAgN=-PgGr-WRg@mail.gmail.com>
 <0905b0f4-9a5e-48c7-8764-58cdd440130f@xen.org>
 <CAG+AhRVL8_YMkw+Z4EcTLZgM7m10+9DToSkaeNLMaFY3gcng7Q@mail.gmail.com>
 <4f8b3a59-c277-4f2e-a9de-82ea9ce2eda0@xen.org>
 <CAG+AhRUE8MQjW=1rLsp79=MisUtjiB-5daXYz8S6-8JX6kAosA@mail.gmail.com>
From: Julien Grall <julien@xen.org>
In-Reply-To: <CAG+AhRUE8MQjW=1rLsp79=MisUtjiB-5daXYz8S6-8JX6kAosA@mail.gmail.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit



On 08/01/2024 11:04, Carlo Nonato wrote:
> Hi Julien,
> 
> On Mon, Jan 8, 2024 at 11:25 AM Julien Grall <julien@xen.org> wrote:
>>
>> Hi Carlo,
>>
>> On 08/01/2024 10:06, Carlo Nonato wrote:
>>>> One of the reason is at least in the dom0less case, you will override
>>>> the value afterwards.
>>>
>>> In that case I need to allocate the array before parsing the string.
>>> I allocate a full array then the string is parsed and the actual size is found
>>> at the end of this phase. Knowing the actual size would require two parsing
>>> stages. Yes I'm wasting a bit of memory by oversizing the array here. Is it
>>> a problem?
>>
>> While wasting memory is indeed not nice. This wasn't the main reason of
>> this comment.
>>
>> The reason is that you seem to set d->num_lcc_colors will but will never
>> be read before it gets overwritten. Looking again at the code, you are
>> also assuming parse_colors() will always take an array of nr_colors.
> 
> Ok, I think I understood, but that happens only in dom0less case because
> d->num_llc_colors is overwritten after parsing. In other cases it's ok to set
> it there. Anyway I can move the assignment out of the function if that is
> clearer.
> 
>> It would be better if parse_colors() takes the maximum size of the array
>> in parameter. This would harden the code and it makes more sense for
>> domain_alloc_colors() to set d->num_lcc_colors.
> 
> I don't understand this. parse_colors() must take only arrays of nr_colors
> size (the global, maximum number of colors), otherwise the parsed string
> config could exceed the array size. Since we don't know in advance the real
> size before parsing, I think it's better to pass only arrays that are already
> allocated with the maximum size.

My concern is there is a disconnect. From the code, it is not obvious at 
all that parse_colors() only want to accept an array of nr_colors. If 
you pass an extra argument (or re-use the one you pass) for the array 
size and use within the code, then it makes more obvious that your array 
is always the correct size.

At least to me, this is a good practice in C to always pass the array 
and its size together (other language have that embedded). But I can 
appreciate this is not view like that for everyone. The minimum would be 
to document this requirement in a comment

> Doing as you said I would still pass nr_colors as the maximum size, but that
> would be strange since the global would still be accessible.

I don't really see the problem here. Your code doesn't need to use the 
global variable.

> If domain_alloc_colors() setting d->num_llc_colors is so confusing,
> I will just move the assignment after the function call.
> 
>> Also, I just noticed you have a global variable named nr_colors and the
>> function parse_colors() takes an argument called *num_colors. This is
>> quite confusing, can we have better name?
>>
>> Maybe rename nr_colors to nr_global_colors and and num_colors to
>> nr_array_colors?
> 
> I agree with the fact that naming is confusing. I would opt for max_nr_colors
> for the global.

I am fine with that.

Cheers,

-- 
Julien Grall


From xen-devel-bounces@lists.xenproject.org Mon Jan 08 11:55:47 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 08 Jan 2024 11:55:47 +0000
Received: from list by lists.xenproject.org with outflank-mailman.663444.1033374 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMoEF-0001wN-Dc; Mon, 08 Jan 2024 11:55:39 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 663444.1033374; Mon, 08 Jan 2024 11:55:39 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMoEF-0001wG-B1; Mon, 08 Jan 2024 11:55:39 +0000
Received: by outflank-mailman (input) for mailman id 663444;
 Mon, 08 Jan 2024 11:55:38 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=pvth=IS=minervasys.tech=carlo.nonato@srs-se1.protection.inumbo.net>)
 id 1rMoEE-0001wA-Bo
 for xen-devel@lists.xenproject.org; Mon, 08 Jan 2024 11:55:38 +0000
Received: from mail-ej1-x635.google.com (mail-ej1-x635.google.com
 [2a00:1450:4864:20::635])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id d5733d6e-ae1c-11ee-9b0f-b553b5be7939;
 Mon, 08 Jan 2024 12:55:36 +0100 (CET)
Received: by mail-ej1-x635.google.com with SMTP id
 a640c23a62f3a-a28fb463a28so162609166b.3
 for <xen-devel@lists.xenproject.org>; Mon, 08 Jan 2024 03:55:36 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: d5733d6e-ae1c-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=minervasys-tech.20230601.gappssmtp.com; s=20230601; t=1704714935; x=1705319735; darn=lists.xenproject.org;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:from:to:cc:subject:date
         :message-id:reply-to;
        bh=uAniKut4uEARyJKjz0n6VGdNJHr94yuj5i+tiN2adPI=;
        b=hebK/DirheazOb7vcbIMjCWBTqEnH118gvPA5lfmEKNnZ7beHPHP/3UcmAW2DsRtwz
         vLPSSTkyOOYcvF7pF28hWXygarjS60WT0Kf1FIQBKshEnpfg+jbOt1GJKQFUDBTNFnOD
         zaMWyXQmBcY+qgyJvtTraVZO1XOHk3TmLrJNAwXTBM2MeZmvD55M3N/ZNZo/EPx38rt7
         ZwejJED5+Z+6Y7DP6RtxtCfG3tefDRMbsd/OkGcRE/5V4Nfc09tgCd6KE8Gs/eOkcB4K
         TqLG9QjqhX5hT6Zi60lFCujgGiX2bs+RbNuMupmBiFEDDYkXL/ydX8k+2u5OGHogqWCS
         3rmw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704714935; x=1705319735;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to;
        bh=uAniKut4uEARyJKjz0n6VGdNJHr94yuj5i+tiN2adPI=;
        b=TGZsGAxsFwv2Ulyo/iHUFBt+QkhCAO+nfqqz0P4yb4YAuaNyWnGDuxHtyIxdm74UIS
         rjcVCdTmWgv94wivy4Ec5ugggOd8Wl83gFyt8PLF7rfEHIDVNR7QFDT5T5tMTkmEapEd
         5T6kYVpYPU+pNaKg8EAxBjzxxPRQOtHQwa+u5EWEAsRbcmdUm3hIwPfxE79h6zy2hjpC
         19FN4ckV3Ee7hkIKusoAe4hJoyGKBne/FdIFY0T6OmrtnBb9rnYcuXM69XkipmxzC7ao
         tmL9rTugEA2oJGwxyAl/eRTi8sF/fY2Qz9ZbgE+892jPseatUPq1Uawihxoda6b3oEIj
         bnaQ==
X-Gm-Message-State: AOJu0YzJwdhVM4orr/hue540IoXh7vV8fFbe3d1vK7kanTyjqSxkjyM/
	rDsAlWki21e3aLuubLUITgkNSQEkPtGDg8hbXC9XwcKL3olWcD89Ot3pwGKyNgXTfQ==
X-Google-Smtp-Source: AGHT+IH1g/M/0tHzdGO8aozGkNspQM+d2ZKRrlmirAHrIYTWYCBRXMMiUEYTL74mYiNqpzBCCZM1f7NZjqmKvjth7HM=
X-Received: by 2002:a17:906:6409:b0:a27:ee21:58c with SMTP id
 d9-20020a170906640900b00a27ee21058cmr1268598ejm.155.1704714935315; Mon, 08
 Jan 2024 03:55:35 -0800 (PST)
MIME-Version: 1.0
References: <20240102095138.17933-1-carlo.nonato@minervasys.tech>
 <20240102095138.17933-4-carlo.nonato@minervasys.tech> <046e9949-d126-42b1-90a6-12af540d63bf@xen.org>
 <CAG+AhRWm4N7GV3HfkTNCvXQw7-6Woq=+zBqdHAgN=-PgGr-WRg@mail.gmail.com>
 <0905b0f4-9a5e-48c7-8764-58cdd440130f@xen.org> <CAG+AhRVL8_YMkw+Z4EcTLZgM7m10+9DToSkaeNLMaFY3gcng7Q@mail.gmail.com>
 <4f8b3a59-c277-4f2e-a9de-82ea9ce2eda0@xen.org> <CAG+AhRUE8MQjW=1rLsp79=MisUtjiB-5daXYz8S6-8JX6kAosA@mail.gmail.com>
 <24e9adad-0f3d-4e0f-8202-33992718e9c3@xen.org>
In-Reply-To: <24e9adad-0f3d-4e0f-8202-33992718e9c3@xen.org>
From: Carlo Nonato <carlo.nonato@minervasys.tech>
Date: Mon, 8 Jan 2024 12:55:24 +0100
Message-ID: <CAG+AhRWJbaUEFgm7rTTUT+Qz4=xSFXxLgBFRGbgStRNoP7MxKQ@mail.gmail.com>
Subject: Re: [PATCH v5 03/13] xen/arm: add Dom0 cache coloring support
To: Julien Grall <julien@xen.org>
Cc: xen-devel@lists.xenproject.org, 
	Stefano Stabellini <sstabellini@kernel.org>, Bertrand Marquis <bertrand.marquis@arm.com>, 
	Michal Orzel <michal.orzel@amd.com>, Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>, 
	Andrew Cooper <andrew.cooper3@citrix.com>, George Dunlap <george.dunlap@citrix.com>, 
	Jan Beulich <jbeulich@suse.com>, Wei Liu <wl@xen.org>, 
	Marco Solieri <marco.solieri@minervasys.tech>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

On Mon, Jan 8, 2024 at 12:44=E2=80=AFPM Julien Grall <julien@xen.org> wrote=
:
>
>
>
> On 08/01/2024 11:04, Carlo Nonato wrote:
> > Hi Julien,
> >
> > On Mon, Jan 8, 2024 at 11:25=E2=80=AFAM Julien Grall <julien@xen.org> w=
rote:
> >>
> >> Hi Carlo,
> >>
> >> On 08/01/2024 10:06, Carlo Nonato wrote:
> >>>> One of the reason is at least in the dom0less case, you will overrid=
e
> >>>> the value afterwards.
> >>>
> >>> In that case I need to allocate the array before parsing the string.
> >>> I allocate a full array then the string is parsed and the actual size=
 is found
> >>> at the end of this phase. Knowing the actual size would require two p=
arsing
> >>> stages. Yes I'm wasting a bit of memory by oversizing the array here.=
 Is it
> >>> a problem?
> >>
> >> While wasting memory is indeed not nice. This wasn't the main reason o=
f
> >> this comment.
> >>
> >> The reason is that you seem to set d->num_lcc_colors will but will nev=
er
> >> be read before it gets overwritten. Looking again at the code, you are
> >> also assuming parse_colors() will always take an array of nr_colors.
> >
> > Ok, I think I understood, but that happens only in dom0less case becaus=
e
> > d->num_llc_colors is overwritten after parsing. In other cases it's ok =
to set
> > it there. Anyway I can move the assignment out of the function if that =
is
> > clearer.
> >
> >> It would be better if parse_colors() takes the maximum size of the arr=
ay
> >> in parameter. This would harden the code and it makes more sense for
> >> domain_alloc_colors() to set d->num_lcc_colors.
> >
> > I don't understand this. parse_colors() must take only arrays of nr_col=
ors
> > size (the global, maximum number of colors), otherwise the parsed strin=
g
> > config could exceed the array size. Since we don't know in advance the =
real
> > size before parsing, I think it's better to pass only arrays that are a=
lready
> > allocated with the maximum size.
>
> My concern is there is a disconnect. From the code, it is not obvious at
> all that parse_colors() only want to accept an array of nr_colors. If
> you pass an extra argument (or re-use the one you pass) for the array
> size and use within the code, then it makes more obvious that your array
> is always the correct size.
>
> At least to me, this is a good practice in C to always pass the array
> and its size together (other language have that embedded). But I can
> appreciate this is not view like that for everyone. The minimum would be
> to document this requirement in a comment

Ok got it. Thanks for the explanation.

> > Doing as you said I would still pass nr_colors as the maximum size, but=
 that
> > would be strange since the global would still be accessible.
>
> I don't really see the problem here. Your code doesn't need to use the
> global variable.
>
> > If domain_alloc_colors() setting d->num_llc_colors is so confusing,
> > I will just move the assignment after the function call.
> >
> >> Also, I just noticed you have a global variable named nr_colors and th=
e
> >> function parse_colors() takes an argument called *num_colors. This is
> >> quite confusing, can we have better name?
> >>
> >> Maybe rename nr_colors to nr_global_colors and and num_colors to
> >> nr_array_colors?
> >
> > I agree with the fact that naming is confusing. I would opt for max_nr_=
colors
> > for the global.
>
> I am fine with that.
>
> Cheers,
>
> --
> Julien Grall


From xen-devel-bounces@lists.xenproject.org Mon Jan 08 12:05:40 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 08 Jan 2024 12:05:40 +0000
Received: from list by lists.xenproject.org with outflank-mailman.663450.1033385 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMoNs-0004cM-FR; Mon, 08 Jan 2024 12:05:36 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 663450.1033385; Mon, 08 Jan 2024 12:05:36 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMoNs-0004cF-Co; Mon, 08 Jan 2024 12:05:36 +0000
Received: by outflank-mailman (input) for mailman id 663450;
 Mon, 08 Jan 2024 12:05:35 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=p6sC=IS=ffwll.ch=daniel.vetter@srs-se1.protection.inumbo.net>)
 id 1rMoNr-0004c9-2o
 for xen-devel@lists.xenproject.org; Mon, 08 Jan 2024 12:05:35 +0000
Received: from mail-oa1-x2c.google.com (mail-oa1-x2c.google.com
 [2001:4860:4864:20::2c])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 38b9c6a2-ae1e-11ee-9b0f-b553b5be7939;
 Mon, 08 Jan 2024 13:05:32 +0100 (CET)
Received: by mail-oa1-x2c.google.com with SMTP id
 586e51a60fabf-204b216e4easo403926fac.1
 for <xen-devel@lists.xenproject.org>; Mon, 08 Jan 2024 04:05:32 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 38b9c6a2-ae1e-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=ffwll.ch; s=google; t=1704715531; x=1705320331; darn=lists.xenproject.org;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:from:to:cc:subject:date
         :message-id:reply-to;
        bh=E0ycSkS6Zak2ui1rQPyyxjJDorzRP8x1XQbB3KxyGEg=;
        b=Pc/EZ925R9wnFgmKbD+kUI7EjKBma8Ph3Lug0eTnlHU6eDKnrODLRZrm7nHZg1UNy3
         WS3OZCAjOpll6umHpg81ovV74h7PAOfOAQ/Ur7355lV9q0GVsoJR9ZdbowIL2lvSriBM
         b6YU1n10PNcSaWYL2EXhEE4dMwnqyKS0WT5r4=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704715531; x=1705320331;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to;
        bh=E0ycSkS6Zak2ui1rQPyyxjJDorzRP8x1XQbB3KxyGEg=;
        b=V7Tfhb3COagLrjO6fWeaYOOXD2/iHNe7tU6aqWTJ0GfWLnHnFNqTeR69IWZfPfF/HX
         cw5zwFFzl+KEnr93ey7F9+y35qoixciYB1qLJT8o0hYfDGbdTj5KhezyPZxVBGefdawh
         05l5ARjmxBBBKPQ4LE/we6W39EXtLrJxBbxHbdIxXlwJO5LtBa7gZ+cvUtOLykDt5NBF
         IYMZE8kc1txLGkC4o8ciPBhzaeXK24E4ULqiL/z9cYhoJWwExAjsbVXnQFvLfv2+eQIF
         SLeDLtF+oLyGK17tFRo5me9bbdfXQbKjLc9XE9I9v/LQgefaKsyoLac230sL75nDFWba
         zkSw==
X-Gm-Message-State: AOJu0YxF1IC6aZWRgiMo8xC4oYJbvlpQ7g+TVuGFWE7TF4GffVXMI7x6
	2w7tx+8dhLk3BZYVdILkDQbo1K8gQvc4eVcijmGlc9Vcez77EQ==
X-Google-Smtp-Source: AGHT+IFzg0ncgiosaItJcS6EqUbmXIhJfdKj13esd/8B0OHht7SYAYuam+XXDGCU1LyVattVFje1kzEfWm/X5Nm9YOM=
X-Received: by 2002:a05:6870:c115:b0:204:9066:c34f with SMTP id
 f21-20020a056870c11500b002049066c34fmr6593653oad.5.1704715531309; Mon, 08 Jan
 2024 04:05:31 -0800 (PST)
MIME-Version: 1.0
References: <20240107103426.2038075-1-olekstysh@gmail.com>
In-Reply-To: <20240107103426.2038075-1-olekstysh@gmail.com>
From: Daniel Vetter <daniel@ffwll.ch>
Date: Mon, 8 Jan 2024 13:05:20 +0100
Message-ID: <CAKMK7uE07Uz-3yxH3+TNUEroKCobZ5xG+_HBPNWLOO0-cKAS+g@mail.gmail.com>
Subject: Re: [PATCH v2] xen/gntdev: Fix the abuse of underlying struct page in
 DMA-buf import
To: Oleksandr Tyshchenko <olekstysh@gmail.com>
Cc: xen-devel@lists.xenproject.org, linux-kernel@vger.kernel.org, 
	Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>, 
	=?UTF-8?Q?Christian_K=C3=B6nig?= <christian.koenig@amd.com>, 
	Juergen Gross <jgross@suse.com>, Stefano Stabellini <sstabellini@kernel.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

On Sun, 7 Jan 2024 at 11:35, Oleksandr Tyshchenko <olekstysh@gmail.com> wro=
te:
>
> From: Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>
>
> DO NOT access the underlying struct page of an sg table exported
> by DMA-buf in dmabuf_imp_to_refs(), this is not allowed.
> Please see drivers/dma-buf/dma-buf.c:mangle_sg_table() for details.
>
> Fortunately, here (for special Xen device) we can avoid using
> pages and calculate gfns directly from dma addresses provided by
> the sg table.
>
> Suggested-by: Daniel Vetter <daniel@ffwll.ch>
> Signed-off-by: Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>
> Acked-by: Christian K=C3=B6nig <christian.koenig@amd.com>
> Reviewed-by: Stefano Stabellini <sstabellini@kernel.org>
> ---
> Please note, I didn't manage to test the patch against the latest master =
branch
> on real HW (patch was only build tested there). Patch was tested on Arm64
> guests using Linux v5.10.41 from vendor's BSP, this is the environment wh=
ere
> running this use-case is possible and to which I have an access (Xen PV d=
isplay
> with zero-copy and backend domain as a buffer provider - be-alloc=3D1, so=
 dma-buf
> import part was involved). A little bit old, but the dma-buf import code
> in gntdev-dmabuf.c hasn't been changed much since that time, all context
> remains allmost the same according to my code inspection.
>
>   v2:
>    - add R-b and A-b
>    - fix build warning noticed by kernel test robot by initializing
>      "ret" in case of error
>      https://lore.kernel.org/oe-kbuild-all/202401062122.it6zvLG0-lkp@inte=
l.com/
> ---
> ---
>  drivers/xen/gntdev-dmabuf.c | 44 ++++++++++++++++---------------------
>  1 file changed, 19 insertions(+), 25 deletions(-)
>
> diff --git a/drivers/xen/gntdev-dmabuf.c b/drivers/xen/gntdev-dmabuf.c
> index 4440e626b797..272c0ab01ef5 100644
> --- a/drivers/xen/gntdev-dmabuf.c
> +++ b/drivers/xen/gntdev-dmabuf.c
> @@ -11,6 +11,7 @@
>  #include <linux/kernel.h>
>  #include <linux/errno.h>
>  #include <linux/dma-buf.h>
> +#include <linux/dma-direct.h>
>  #include <linux/slab.h>
>  #include <linux/types.h>
>  #include <linux/uaccess.h>
> @@ -50,7 +51,7 @@ struct gntdev_dmabuf {
>
>         /* Number of pages this buffer has. */
>         int nr_pages;
> -       /* Pages of this buffer. */
> +       /* Pages of this buffer (only for dma-buf export). */
>         struct page **pages;
>  };
>
> @@ -484,7 +485,7 @@ static int dmabuf_exp_from_refs(struct gntdev_priv *p=
riv, int flags,
>  /* DMA buffer import support. */
>
>  static int
> -dmabuf_imp_grant_foreign_access(struct page **pages, u32 *refs,
> +dmabuf_imp_grant_foreign_access(unsigned long *gfns, u32 *refs,
>                                 int count, int domid)
>  {
>         grant_ref_t priv_gref_head;
> @@ -507,7 +508,7 @@ dmabuf_imp_grant_foreign_access(struct page **pages, =
u32 *refs,
>                 }
>
>                 gnttab_grant_foreign_access_ref(cur_ref, domid,
> -                                               xen_page_to_gfn(pages[i])=
, 0);
> +                                               gfns[i], 0);
>                 refs[i] =3D cur_ref;
>         }
>
> @@ -529,7 +530,6 @@ static void dmabuf_imp_end_foreign_access(u32 *refs, =
int count)
>
>  static void dmabuf_imp_free_storage(struct gntdev_dmabuf *gntdev_dmabuf)
>  {
> -       kfree(gntdev_dmabuf->pages);
>         kfree(gntdev_dmabuf->u.imp.refs);
>         kfree(gntdev_dmabuf);
>  }
> @@ -549,12 +549,6 @@ static struct gntdev_dmabuf *dmabuf_imp_alloc_storag=
e(int count)
>         if (!gntdev_dmabuf->u.imp.refs)
>                 goto fail;
>
> -       gntdev_dmabuf->pages =3D kcalloc(count,
> -                                      sizeof(gntdev_dmabuf->pages[0]),
> -                                      GFP_KERNEL);
> -       if (!gntdev_dmabuf->pages)
> -               goto fail;
> -
>         gntdev_dmabuf->nr_pages =3D count;
>
>         for (i =3D 0; i < count; i++)
> @@ -576,7 +570,8 @@ dmabuf_imp_to_refs(struct gntdev_dmabuf_priv *priv, s=
truct device *dev,
>         struct dma_buf *dma_buf;
>         struct dma_buf_attachment *attach;
>         struct sg_table *sgt;
> -       struct sg_page_iter sg_iter;
> +       struct sg_dma_page_iter sg_iter;
> +       unsigned long *gfns;
>         int i;
>
>         dma_buf =3D dma_buf_get(fd);
> @@ -624,26 +619,25 @@ dmabuf_imp_to_refs(struct gntdev_dmabuf_priv *priv,=
 struct device *dev,
>
>         gntdev_dmabuf->u.imp.sgt =3D sgt;
>
> -       /* Now convert sgt to array of pages and check for page validity.=
 */
> +       gfns =3D kcalloc(count, sizeof(*gfns), GFP_KERNEL);
> +       if (!gfns) {
> +               ret =3D ERR_PTR(-ENOMEM);
> +               goto fail_unmap;
> +       }
> +
> +       /* Now convert sgt to array of gfns without accessing underlying =
pages. */
>         i =3D 0;
> -       for_each_sgtable_page(sgt, &sg_iter, 0) {
> -               struct page *page =3D sg_page_iter_page(&sg_iter);
> -               /*
> -                * Check if page is valid: this can happen if we are give=
n
> -                * a page from VRAM or other resources which are not back=
ed
> -                * by a struct page.
> -                */
> -               if (!pfn_valid(page_to_pfn(page))) {
> -                       ret =3D ERR_PTR(-EINVAL);
> -                       goto fail_unmap;
> -               }
> +       for_each_sgtable_dma_page(sgt, &sg_iter, 0) {

Maybe add a comment here to explain why this is done and why it's ok?
Either way:

Acked-by: Daniel Vetter <daniel@ffwll.ch>


> +               dma_addr_t addr =3D sg_page_iter_dma_address(&sg_iter);
> +               unsigned long pfn =3D bfn_to_pfn(XEN_PFN_DOWN(dma_to_phys=
(dev, addr)));
>
> -               gntdev_dmabuf->pages[i++] =3D page;
> +               gfns[i++] =3D pfn_to_gfn(pfn);
>         }
>
> -       ret =3D ERR_PTR(dmabuf_imp_grant_foreign_access(gntdev_dmabuf->pa=
ges,
> +       ret =3D ERR_PTR(dmabuf_imp_grant_foreign_access(gfns,
>                                                       gntdev_dmabuf->u.im=
p.refs,
>                                                       count, domid));
> +       kfree(gfns);
>         if (IS_ERR(ret))
>                 goto fail_end_access;
>
> --
> 2.34.1
>


--=20
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch


From xen-devel-bounces@lists.xenproject.org Mon Jan 08 12:14:44 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 08 Jan 2024 12:14:44 +0000
Received: from list by lists.xenproject.org with outflank-mailman.663455.1033395 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMoWd-0000rn-9z; Mon, 08 Jan 2024 12:14:39 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 663455.1033395; Mon, 08 Jan 2024 12:14:39 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMoWd-0000rg-7K; Mon, 08 Jan 2024 12:14:39 +0000
Received: by outflank-mailman (input) for mailman id 663455;
 Mon, 08 Jan 2024 12:14:37 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=CI6F=IS=linaro.org=philmd@srs-se1.protection.inumbo.net>)
 id 1rMoWb-0000qG-Sr
 for xen-devel@lists.xenproject.org; Mon, 08 Jan 2024 12:14:37 +0000
Received: from mail-wm1-x32a.google.com (mail-wm1-x32a.google.com
 [2a00:1450:4864:20::32a])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 7cb5b3ab-ae1f-11ee-9b0f-b553b5be7939;
 Mon, 08 Jan 2024 13:14:35 +0100 (CET)
Received: by mail-wm1-x32a.google.com with SMTP id
 5b1f17b1804b1-40e45504006so6102925e9.1
 for <xen-devel@lists.xenproject.org>; Mon, 08 Jan 2024 04:14:35 -0800 (PST)
Received: from [192.168.1.102] ([176.176.175.62])
 by smtp.gmail.com with ESMTPSA id
 i11-20020a5d558b000000b003367bb8898dsm7625577wrv.66.2024.01.08.04.14.33
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 08 Jan 2024 04:14:34 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 7cb5b3ab-ae1f-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=linaro.org; s=google; t=1704716075; x=1705320875; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:from:references:cc:to
         :content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=pTv62+lrN+LJDOyyZzZUKji6+pubYOy60kmzZvHd3z4=;
        b=ANR00PqgDJPDzHgpMG4FAsrtOLBO3hhNw/BABOQF8rsNkOiyP6V0tFbAA+KeTJTzou
         DqjYszddw2gI3/x87yP56IbbmO/XLgoD4y4FWY9ep65nOkmXPr+W0Yd7RQH/N89cLxnV
         8xu+guGcM97JXf4WQ8iv/rS8JKF0mhupQb4yeVGbyiRFL1IlRwDDYaWAVQGhu1TaMjdX
         dAVtRHJtQHVYul9ZE/U6IKuJmJdAXf/1Cyp6b/wIinUeZKkR4H4qRh/5Z1XNKfcSPYdR
         lGrDp/enqWUuo5FdRZCixa7UbxQcocZ0LF41CTUYc1WUrTtSYWkJIRLwjhD8a1B9PzBL
         leyQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704716075; x=1705320875;
        h=content-transfer-encoding:in-reply-to:from:references:cc:to
         :content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=pTv62+lrN+LJDOyyZzZUKji6+pubYOy60kmzZvHd3z4=;
        b=ss5vdBVFvl03ISyFsm/GSfdPCVvdyvjs9CIpbLzkVdjZJYCS6QtkWMfyu2VgFAadVw
         pJKiQ13lGXWw7QPx6upqQIOzpJay+jFF7m6KOD/ftsnDE4SqkYTwXL6cYD4AdwSnWynd
         1eMYpJ5WuSkw+q1GKnJwQYPPFKFx6ohs6qBWKgEnZOIdUL3E17AiR4HzEO4GSYZOw1xt
         i95m/Cv1YtnY4yXpOkXeKYLhNVneOxFmky8qNDHmA66HQ2YIrbvOosZGbaWNzxdJej6B
         ufi3gUuvam8GKbUFCbboWUev0+qq0ClH52zBIM8FkzvJtTNDWE/GGu/vrQo7M+viblDi
         Lc5Q==
X-Gm-Message-State: AOJu0YzXGTSRcnc5pQ+WEvIo7/Xy18sGTvhb+LGw5JYE2BxE05KKFAkr
	G6hzRVOXbTSqOM1Uy72/mSalAjyU8cDwfg==
X-Google-Smtp-Source: AGHT+IGxCyPZI3LhIKghuQNTCsPq8RlSvMV1g4746yYM5AkZRdonIiznbdeKS14OHtcSSqqKiec3+g==
X-Received: by 2002:a7b:c8c3:0:b0:40d:8a57:796e with SMTP id f3-20020a7bc8c3000000b0040d8a57796emr1691872wml.154.1704716075055;
        Mon, 08 Jan 2024 04:14:35 -0800 (PST)
Message-ID: <d818e085-40e8-4916-b72d-1c105bea5e9a@linaro.org>
Date: Mon, 8 Jan 2024 13:14:32 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] hw/i386/pc_piix: Make piix_intx_routing_notifier_xen()
 more device independent
Content-Language: en-US
To: Bernhard Beschow <shentey@gmail.com>, qemu-devel@nongnu.org
Cc: Chuck Zmudzinski <brchuckz@aol.com>, Paolo Bonzini <pbonzini@redhat.com>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org,
 David Woodhouse <dwmw2@infradead.org>, Eduardo Habkost
 <eduardo@habkost.net>, "Michael S. Tsirkin" <mst@redhat.com>,
 Marcel Apfelbaum <marcel.apfelbaum@gmail.com>, Paul Durrant <paul@xen.org>,
 Richard Henderson <richard.henderson@linaro.org>,
 Anthony PERARD <anthony.perard@citrix.com>
References: <20240107231623.5282-1-shentey@gmail.com>
From: =?UTF-8?Q?Philippe_Mathieu-Daud=C3=A9?= <philmd@linaro.org>
In-Reply-To: <20240107231623.5282-1-shentey@gmail.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit

On 8/1/24 00:16, Bernhard Beschow wrote:
> This is a follow-up on commit 89965db43cce "hw/isa/piix3: Avoid Xen-specific
> variant of piix3_write_config()" which introduced
> piix_intx_routing_notifier_xen(). This function is implemented in board code but
> accesses the PCI configuration space of the PIIX ISA function to determine the
> PCI interrupt routes. Avoid this by reusing pci_device_route_intx_to_irq() which
> makes piix_intx_routing_notifier_xen() more device-agnostic.
> 
> One remaining improvement would be making piix_intx_routing_notifier_xen()
> agnostic towards the number of PCI interrupt routes and move it to xen-hvm.
> This might be useful for possible Q35 Xen efforts but remains a future exercise
> for now.
> 
> Signed-off-by: Bernhard Beschow <shentey@gmail.com>
> ---
>   hw/i386/pc_piix.c | 9 +++------
>   1 file changed, 3 insertions(+), 6 deletions(-)
> 
> diff --git a/hw/i386/pc_piix.c b/hw/i386/pc_piix.c
> index 042c13cdbc..abfcfe4d2b 100644
> --- a/hw/i386/pc_piix.c
> +++ b/hw/i386/pc_piix.c
> @@ -92,13 +92,10 @@ static void piix_intx_routing_notifier_xen(PCIDevice *dev)
>   {
>       int i;
>   
> -    /* Scan for updates to PCI link routes (0x60-0x63). */
> +    /* Scan for updates to PCI link routes. */
>       for (i = 0; i < PIIX_NUM_PIRQS; i++) {
> -        uint8_t v = dev->config_read(dev, PIIX_PIRQCA + i, 1);
> -        if (v & 0x80) {
> -            v = 0;
> -        }
> -        v &= 0xf;
> +        const PCIINTxRoute route = pci_device_route_intx_to_irq(dev, i);

This indeed dispatch to piix_route_intx_pin_to_irq().

Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>

> +        const uint8_t v = route.mode == PCI_INTX_ENABLED ? route.irq : 0;
>           xen_set_pci_link_route(i, v);
>       }
>   }



From xen-devel-bounces@lists.xenproject.org Mon Jan 08 12:31:40 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 08 Jan 2024 12:31:40 +0000
Received: from list by lists.xenproject.org with outflank-mailman.663459.1033405 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMoms-0006fd-Lb; Mon, 08 Jan 2024 12:31:26 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 663459.1033405; Mon, 08 Jan 2024 12:31:26 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMoms-0006fW-IP; Mon, 08 Jan 2024 12:31:26 +0000
Received: by outflank-mailman (input) for mailman id 663459;
 Mon, 08 Jan 2024 12:31:25 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rMomr-0006fM-GL; Mon, 08 Jan 2024 12:31:25 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rMomr-0004HA-CH; Mon, 08 Jan 2024 12:31:25 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rMomq-0002KA-TT; Mon, 08 Jan 2024 12:31:24 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rMomq-0007jG-T8; Mon, 08 Jan 2024 12:31:24 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=PzmoEkt7AoeQtU3SQkFmVjcs+19d1494yqTRmaejAjk=; b=CZfNdnkY5Orrujp22MtsNNf6zi
	JqJuBBhuoBuFmoMXs053RV0OjaC3bdoPdJ/3Hzs/hPspLFrmwVSfXYt1sXKe/6s8EI5za+ToblkA0
	ev7WSWRQbZM57vRPSdyBWuPr27iw1j6hmrPPMRkVYffWa754QJ0pr8d4qWw6eTLAEgY8=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184274-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [xen-unstable-smoke test] 184274: tolerable all pass - PUSHED
X-Osstest-Failures:
    xen-unstable-smoke:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    xen-unstable-smoke:test-arm64-arm64-xl-xsm:migrate-support-check:fail:nonblocking
    xen-unstable-smoke:test-arm64-arm64-xl-xsm:saverestore-support-check:fail:nonblocking
    xen-unstable-smoke:test-armhf-armhf-xl:migrate-support-check:fail:nonblocking
    xen-unstable-smoke:test-armhf-armhf-xl:saverestore-support-check:fail:nonblocking
X-Osstest-Versions-This:
    xen=2467ab2a74463107132f7d929d2ff0e30a8b6fa3
X-Osstest-Versions-That:
    xen=5a3ace21f3d779b291a2d305824b2820d88de7f1
From: osstest service owner <osstest-admin@xenproject.org>
Date: Mon, 08 Jan 2024 12:31:24 +0000

flight 184274 xen-unstable-smoke real [real]
http://logs.test-lab.xenproject.org/osstest/logs/184274/

Failures :-/ but no regressions.

Tests which did not succeed, but are not blocking:
 test-amd64-amd64-libvirt     15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-xsm      15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-xsm      16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl          15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          16 saverestore-support-check    fail   never pass

version targeted for testing:
 xen                  2467ab2a74463107132f7d929d2ff0e30a8b6fa3
baseline version:
 xen                  5a3ace21f3d779b291a2d305824b2820d88de7f1

Last test of basis   184260  2024-01-06 01:02:12 Z    2 days
Testing same since   184274  2024-01-08 10:05:30 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Jan Beulich <jbeulich@suse.com>
  Juergen Gross <jgross@suse.com>
  Julien Grall <jgrall@amazon.com>
  Oleksii Kurochko <oleksii.kurochko@gmail.com>
  Shawn Anastasio <sanastasio@raptorengineering.com>
  Tamas K Lengyel <tamas.lengyel@intel.com>

jobs:
 build-arm64-xsm                                              pass    
 build-amd64                                                  pass    
 build-armhf                                                  pass    
 build-amd64-libvirt                                          pass    
 test-armhf-armhf-xl                                          pass    
 test-arm64-arm64-xl-xsm                                      pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64                    pass    
 test-amd64-amd64-libvirt                                     pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Pushing revision :

To xenbits.xen.org:/home/xen/git/xen.git
   5a3ace21f3..2467ab2a74  2467ab2a74463107132f7d929d2ff0e30a8b6fa3 -> smoke


From xen-devel-bounces@lists.xenproject.org Mon Jan 08 13:31:13 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 08 Jan 2024 13:31:13 +0000
Received: from list by lists.xenproject.org with outflank-mailman.663495.1033431 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMpib-0007pw-9B; Mon, 08 Jan 2024 13:31:05 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 663495.1033431; Mon, 08 Jan 2024 13:31:05 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMpib-0007pp-64; Mon, 08 Jan 2024 13:31:05 +0000
Received: by outflank-mailman (input) for mailman id 663495;
 Mon, 08 Jan 2024 13:31:03 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rMpiZ-0007pe-Oh; Mon, 08 Jan 2024 13:31:03 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rMpiZ-0005Uu-N1; Mon, 08 Jan 2024 13:31:03 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rMpiZ-00055D-Bs; Mon, 08 Jan 2024 13:31:03 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rMpiZ-0000WM-BR; Mon, 08 Jan 2024 13:31:03 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=wyBBjkuiFQTGyYNwVGzfVwR9N1ZRgBi1mqN49D/i0iQ=; b=L7+IC9CWiyA7GTcrs/P+0L8z1K
	S8E7pWE+Bywf51S8VxNzBVDo2qN2pvSFQhc0DnJsSqyVimimTY97H41lWW1jV0zH25EVh5a1iUPTr
	gwYWSAWDAMkNOQnHkKgLTy52hcTsO38zxLtBPISShH2MH/QqlvDHKCxuklOeba5tPvIY=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184276-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [ovmf test] 184276: all pass - PUSHED
X-Osstest-Versions-This:
    ovmf=e7152e6186d31bc138fbd2592e07886005177aab
X-Osstest-Versions-That:
    ovmf=c3d865a4c21d91f2e338a91d0c8b1eaf205575b5
From: osstest service owner <osstest-admin@xenproject.org>
Date: Mon, 08 Jan 2024 13:31:03 +0000

flight 184276 ovmf real [real]
http://logs.test-lab.xenproject.org/osstest/logs/184276/

Perfect :-)
All tests in this flight passed as required
version targeted for testing:
 ovmf                 e7152e6186d31bc138fbd2592e07886005177aab
baseline version:
 ovmf                 c3d865a4c21d91f2e338a91d0c8b1eaf205575b5

Last test of basis   184273  2024-01-08 08:14:18 Z    0 days
Testing same since   184276  2024-01-08 10:43:33 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Hou, Wenxing <wenxing.hou@intel.com>
  Wenxing Hou <wenxing.hou@intel.com>

jobs:
 build-amd64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-amd64-amd64-xl-qemuu-ovmf-amd64                         pass    
 test-amd64-i386-xl-qemuu-ovmf-amd64                          pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Pushing revision :

To xenbits.xen.org:/home/xen/git/osstest/ovmf.git
   c3d865a4c2..e7152e6186  e7152e6186d31bc138fbd2592e07886005177aab -> xen-tested-master


From xen-devel-bounces@lists.xenproject.org Mon Jan 08 14:01:50 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 08 Jan 2024 14:01:50 +0000
Received: from list by lists.xenproject.org with outflank-mailman.663501.1033440 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMqCA-0006FU-EG; Mon, 08 Jan 2024 14:01:38 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 663501.1033440; Mon, 08 Jan 2024 14:01:38 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMqCA-0006FN-Be; Mon, 08 Jan 2024 14:01:38 +0000
Received: by outflank-mailman (input) for mailman id 663501;
 Mon, 08 Jan 2024 14:01:36 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=O4yG=IS=bugseng.com=federico.serafini@srs-se1.protection.inumbo.net>)
 id 1rMqC8-0006FH-Rh
 for xen-devel@lists.xenproject.org; Mon, 08 Jan 2024 14:01:36 +0000
Received: from support.bugseng.com (mail.bugseng.com [162.55.131.47])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 6f2edea0-ae2e-11ee-98ef-6d05b1d4d9a1;
 Mon, 08 Jan 2024 15:01:35 +0100 (CET)
Received: from [192.168.1.15] (host-79-44-205-232.retail.telecomitalia.it
 [79.44.205.232])
 by support.bugseng.com (Postfix) with ESMTPSA id 85E424EE073D;
 Mon,  8 Jan 2024 15:01:34 +0100 (CET)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 6f2edea0-ae2e-11ee-98ef-6d05b1d4d9a1
Message-ID: <7ecb7703-25c6-4295-946b-7b9aed7b3c67@bugseng.com>
Date: Mon, 8 Jan 2024 15:01:33 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [XEN RFC] x86/uaccess: remove __{put,get}_user_bad()
Content-Language: en-US, it
To: Jan Beulich <jbeulich@suse.com>
Cc: consulting@bugseng.com, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger.pau@citrix.com>, Wei Liu <wl@xen.org>,
 xen-devel@lists.xenproject.org, Stefano Stabellini <sstabellini@kernel.org>,
 Nicola Vetrini <nicola.vetrini@bugseng.com>,
 Andrew Cooper <andrew.cooper3@citrix.com>, Julien Grall <julien@xen.org>
References: <9cf852da1c03b614bf5010132c58a18adc2a4161.1703155225.git.federico.serafini@bugseng.com>
 <a2050ac1-e205-4d7f-b9b1-aa625136e63a@suse.com>
 <0c5bbfde-4cf0-4878-b1ee-ccc8eb775464@citrix.com>
 <eb53449bd6595ea0931460e62dd57b9c@bugseng.com>
 <1330c757-1ca3-4b07-898b-799cbfa67e8a@suse.com>
 <6a39fe3e-524f-4e39-81bc-ffb3d48ba306@bugseng.com>
 <192c393a-3702-4cc3-af60-e2711098ec6d@suse.com>
 <8fa1f868-c7de-4a46-a827-a75c38513f6f@bugseng.com>
 <19d5c152-3ab7-4762-980b-3570d3a948e4@suse.com>
From: Federico Serafini <federico.serafini@bugseng.com>
Organization: BUGSENG srl
In-Reply-To: <19d5c152-3ab7-4762-980b-3570d3a948e4@suse.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit

On 08/01/24 12:36, Jan Beulich wrote:
> On 08.01.2024 12:16, Federico Serafini wrote:
>> On 08/01/24 09:02, Jan Beulich wrote:
>>> On 05.01.2024 17:19, Federico Serafini wrote:
>>>> Hello everyone,
>>>>
>>>> On 21/12/23 13:41, Jan Beulich wrote:
>>>>> On 21.12.2023 13:01, Nicola Vetrini wrote:
>>>>>> Hi Andrew,
>>>>>>
>>>>>> On 2023-12-21 12:03, Andrew Cooper wrote:
>>>>>>> On 21/12/2023 10:58 am, Jan Beulich wrote:
>>>>>>>> On 21.12.2023 11:53, Federico Serafini wrote:
>>>>>>>>> Remove declarations of __put_user_bad() and __get_user_bad()
>>>>>>>>> since they have no definition.
>>>>>>>>> Replace their uses with a break statement to address violations of
>>>>>>>>> MISRA C:2012 Rule 16.3 ("An unconditional `break' statement shall
>>>>>>>>> terminate every switch-clause").
>>>>>>>>> No functional change.
>>>>>>>>>
>>>>>>>>> Signed-off-by: Federico Serafini <federico.serafini@bugseng.com>
>>>>>>>>> ---
>>>>>>>>> Several violations of Rule 16.3 come from uses of macros
>>>>>>>>> get_unsafe_size() and put_unsafe_size().
>>>>>>>>> Looking at the macro definitions I found __get_user_bad() and
>>>>>>>>> __put_user_bad().
>>>>>>>>> I was wondering if instead of just adding the break statement I can
>>>>>>>>> also remove
>>>>>>>>> such functions which seem to not have a definition.
>>>>>>>> No, you can't. Try introducing a caller which "accidentally" uses the
>>>>>>>> wrong size. Without your change you'll observe the build failing (in
>>>>>>>> a somewhat obscure way, but still), while with your change bad code
>>>>>>>> will silently be generated.
>>>>>>>
>>>>>>> The construct here is deliberate.  It's a build time assertion that bad
>>>>>>> sizes aren't used.
>>>>>>>
>>>>>>> __bitop_bad_size() and __xsm_action_mismatch_detected() are the same
>>>>>>> pattern in other areas of code too, with the latter being more explicit
>>>>>>> because of how it's wrapped by LINKER_BUG_ON().
>>>>>>>
>>>>>>>
>>>>>>> It is slightly horrible, and not the most obvious construct for
>>>>>>> newcomers.  If there's an alternative way to get a build assertion, we
>>>>>>> could consider switching to a new pattern.
>>>>>>
>>>>>> would you be in favour of a solution with a BUILD_BUG_ON in the default
>>>>>> branch followed by a break?
>>>>>>
>>>>>> default:
>>>>>>         BUILD_BUG_ON(!size || size >=8 || (size & (size - 1)));
>>>>>>         break;
>>>>>
>>>>> I don't think this would compile - BUILD_BUG_ON() wants a compile-time
>>>>> constant passed.
>>>>
>>>> What do you think about adding the following macro to compiler.h:
>>>>
>>>> #define static_assert_unreachable(identifier) \
>>>>        asm("unreachable " #identifier " reached")
>>>>
>>>> It expands to an invalid assembly instruction that will lead to a
>>>> customizable error message generated by the assembler instead of the
>>>> linker (anticipating the error detection).
>>>>
>>>> The use of this macro will indicate a program point considered
>>>> unreachable (and as such removed) by the static analysis performed by
>>>> the compiler, even at an optimization level -O0.
>>>>
>>>> An example of use is in the default case of put_unsafe_size():
>>>>
>>>> default: static_assert_unreachable(default);
>>>>
>>>> In case a wrong size will be used, the following message will be
>>>> generated:
>>>>
>>>> ./arch/x86/include/asm/uaccess.h: Assembler messages:
>>>> ./arch/x86/include/asm/uaccess.h:257: Error: no such instruction:
>>>> `unreachable default reached'
>>>
>>> Nice idea. To take it one step further, why not simply use the .error
>>> assembler directive then?
>>
>> It seems good.
>>
>>>
>>>> Note that adopting the macro and discussing its definition are two
>>>> separate things:
>>>> I think we can all agree on the fact that the use of such macro improves
>>>> readability, so I would suggest its adoption.
>>>> Whereas for its definition, if you don't like the invalid asm
>>>> instruction, we could discuss for a different solution, for example,
>>>> the following is something similar to what you are doing now:
>>>>
>>>> #define static_assert_unreachable(identifier) \
>>>>        extern void identifier(void);             \
>>>>        identifier()
>>>>
>>>>
>>>> Note also that the problem of the missing break statement (that violates
>>>> Rule 16.3) is still present, it could be addressed by adding the break
>>>> or deviating for such special cases, do you have any preferences?
>>>
>>> Amend the new macro's expansion by unreachable()?
>>
>> It would work only if we also add macro unreachable() to the allowed
>> statements that can terminate a switch-clause.
> 
> Isn't this, or something substantially similar, necessary anyway, to
> avoid ...
> 
>> I'll take this opportunity to clarify the Rule 16.3 and the deviation
>> system of ECLAIR for this rule (adding Julien in CC, he might be
>> interested in this).
>> The rationale of 16.3 is the avoidance of unintentional fall through.
>> To do this, the rule says to put an unconditional break statement at
>> the end of every switch-clause.
>>
>> Nothing is said about the semantics of the code within the
>> switch-clause, e.g., the rule does not take into account if the fall
>> through cannot happen because the code returns in every feasible path.
>> The reason behind this is to keep the rule as simple as possible and
>> above all, keep the rule to be decidable.
> 
> such "break" then violating the "no unreachable code" rule?

For such cases of Rule 2.1 ("A project shall not contain unreachable
code.") there is already a deviation documented in deviations.rst:
"The compiler implementation guarantees that the unreachable code is
removed. Constant expressions and unreachable branches of if and switch
statements are expected."

So, following your suggestion we can consider unreachable() as allowed
terminal for 16.3 and use it within the definition of
static_assert_unreachable().

Additionally, looking at violations of 16.3 on X86 [1],
I think we should also consider generate_exception(),
ASSERT_UNREACHABLE() and PARSE_ERR_RET() as allowed terminals
for a switch-clause, do you agree?

[1]
https://saas.eclairit.com:3787/fs/var/local/eclair/XEN.ecdf/ECLAIR_normal/staging/X86_64-2023/466/PROJECT.ecd;/by_service/MC3R1.R16.3.html#{"select":true,"selection":{"hiddenAreaKinds":[],"hiddenSubareaKinds":[],"show":false,"selector":{"enabled":true,"negated":false,"kind":0,"domain":"message","inputs":[{"enabled":true,"text":"^.*put_unsafe_size'"},{"enabled":true,"text":"^.*get_unsafe_size'"}]}}}

-- 
Federico Serafini, M.Sc.

Software Engineer, BUGSENG (http://bugseng.com)


From xen-devel-bounces@lists.xenproject.org Mon Jan 08 14:13:48 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 08 Jan 2024 14:13:48 +0000
Received: from list by lists.xenproject.org with outflank-mailman.663507.1033451 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMqNr-00005R-Mq; Mon, 08 Jan 2024 14:13:43 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 663507.1033451; Mon, 08 Jan 2024 14:13:43 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMqNr-00005K-Jc; Mon, 08 Jan 2024 14:13:43 +0000
Received: by outflank-mailman (input) for mailman id 663507;
 Mon, 08 Jan 2024 14:13:42 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>) id 1rMqNq-00005E-19
 for xen-devel@lists.xenproject.org; Mon, 08 Jan 2024 14:13:42 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rMqNo-0006IO-Da; Mon, 08 Jan 2024 14:13:40 +0000
Received: from gw1.octic.net ([88.97.20.152] helo=[10.0.1.240])
 by xenbits.xenproject.org with esmtpsa
 (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rMqNo-0006Fn-53; Mon, 08 Jan 2024 14:13:40 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
	s=20200302mail; h=Content-Transfer-Encoding:Content-Type:In-Reply-To:From:
	References:Cc:To:Subject:MIME-Version:Date:Message-ID;
	bh=eLI9A289XDfWJr5oCt80Yy2BHMlJjvdnqOBlOKg9tCk=; b=FjKykE4wNH9VZ0ICkvB2oMhI42
	IHMzh+pj1DIrMgjpj8tff+wSyNMB4AwOn+OOtySCvfZEcyaztiJ7FrZhcdfluRm1TL/MQFZ60TOlu
	fYDZLSwFZFyxnfKIaFBwSgta5bmGl6FEMxSAKGFdUHZBwkvCFbezXexuIU5EVsmDA8gM=;
Message-ID: <829125ea-c220-47e9-a9f4-343126787f27@xen.org>
Date: Mon, 8 Jan 2024 14:13:38 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2] NUMA: limit first_valid_mfn exposure
Content-Language: en-GB
To: Jan Beulich <jbeulich@suse.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 George Dunlap <george.dunlap@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
References: <224db25e-bd4c-4415-aff8-6ff3e84343d8@suse.com>
 <a99d9d1a-2395-4771-95f3-5dab64e10ce7@xen.org>
 <0872306a-fefb-424b-b27a-b67ba21828c7@suse.com>
From: Julien Grall <julien@xen.org>
In-Reply-To: <0872306a-fefb-424b-b27a-b67ba21828c7@suse.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

Hi Jan,

On 08/01/2024 11:43, Jan Beulich wrote:
> On 08.01.2024 12:37, Julien Grall wrote:
>> On 08/01/2024 11:31, Jan Beulich wrote:
>>> Address the TODO regarding first_valid_mfn by making the variable static
>>> when NUMA=y, thus also addressing a Misra C:2012 rule 8.4 concern (on
>>> x86).
>>>
>>> Signed-off-by: Jan Beulich <jbeulich@suse.com>
>>> ---
>>> Julien suggests something like
>>>
>>> STATIC_IF(CONFIG_NUMA) unsigned long first_valid_mfn;
>>>
>>> but I view this as non-scalable (or at least I can't see how to
>>> implement such in a scalabale way) and hence undesirable to introduce.
>>
>> I don't really see the scalability problem. Can you explain a bit more?
> 
> Well, when seeing your original suggestion, I first considered it quite
> reasonable. But when thinking how to implement it, I couldn't see what
> 
> #define STATIC_IF(cfg)
> 
> should expand to. That's simply because a macro body cannot itself have
> pre-processor directives. Hence all I could think of was
> 
> #ifdef CONFIG_NUMA
> # define static_if_CONFIG_NUMA static
> #else
> # define static_if_CONFIG_NUMA
> #endif
> #define STATIC_IF(cfg) static_if_ ## cfg
> 
> And I think it is easy to see how this wouldn't scale across CONFIG_xyz.
> Plus that that point STATIC_IF() itself would be pretty much redundant.
> But maybe I'm simply overlooking the obvious ...

You can use the same trick as for IS_ENABLED. The code below will select 
static or nothing:

#define static_enabled(cfg) _static_enabled(cfg)
#define _static_enabled(value) __static_enabled(__ARG_PLACEHOLDER_##value)
#define __static_enabled(arg1_or_junk) ___static_enabled(arg1_or_junk 
static,)
#define ___static_enabled(__ignored, val, ...) val

#define STATIC_IF(option) static_enabled(option)

I have tested both with CONFIG_NUMA and !CONFIG_NUMA to confirm the 
visibility of the variable will be correct.

Cheers,

-- 
Julien Grall


From xen-devel-bounces@lists.xenproject.org Mon Jan 08 14:27:55 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 08 Jan 2024 14:27:55 +0000
Received: from list by lists.xenproject.org with outflank-mailman.663540.1033477 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMqbW-000428-7P; Mon, 08 Jan 2024 14:27:50 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 663540.1033477; Mon, 08 Jan 2024 14:27:50 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMqbW-00041C-3L; Mon, 08 Jan 2024 14:27:50 +0000
Received: by outflank-mailman (input) for mailman id 663540;
 Mon, 08 Jan 2024 14:27:49 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rMqbV-00040y-K3; Mon, 08 Jan 2024 14:27:49 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rMqbV-0006Ww-Gj; Mon, 08 Jan 2024 14:27:49 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rMqbV-0008W2-3W; Mon, 08 Jan 2024 14:27:49 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rMqbV-00015a-36; Mon, 08 Jan 2024 14:27:49 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=z6NMEKCta9uQazLyBUqy/7NxCdPeVgpojverEMYdyJs=; b=TribzP+05tLRBIo8Q+H4CKMBa/
	mQBHxDEyL0w3HcleCR6AQWT9L8rcDdnH+tKYqz72RksRoQOkN9/SsBoiViruZFZ2TVufaDng9k5gW
	R4DTIwShAWNJG4ZIN1zh/XGtaOOttJ04Ypj/zs1fR/fFmy/jgGJfew/4bvDXo8hjcgHE=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184277-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [xtf test] 184277: all pass - PUSHED
X-Osstest-Versions-This:
    xtf=a5bd8d9e5d5c7b729d6d6122900d28f7a00aa6c0
X-Osstest-Versions-That:
    xtf=0a58a1471eb5f692700c0fd026ff96969b6ad7b0
From: osstest service owner <osstest-admin@xenproject.org>
Date: Mon, 08 Jan 2024 14:27:49 +0000

flight 184277 xtf real [real]
http://logs.test-lab.xenproject.org/osstest/logs/184277/

Perfect :-)
All tests in this flight passed as required
version targeted for testing:
 xtf                  a5bd8d9e5d5c7b729d6d6122900d28f7a00aa6c0
baseline version:
 xtf                  0a58a1471eb5f692700c0fd026ff96969b6ad7b0

Last test of basis   184247  2024-01-03 20:42:38 Z    4 days
Testing same since   184277  2024-01-08 11:42:46 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Andrew Cooper <andrew.cooper3@citrix.com>
  Bernhard Kaindl <bernhard.kaindl@cloud.com>

jobs:
 build-amd64-xtf                                              pass    
 build-amd64                                                  pass    
 build-amd64-pvops                                            pass    
 test-xtf-amd64-amd64-1                                       pass    
 test-xtf-amd64-amd64-2                                       pass    
 test-xtf-amd64-amd64-3                                       pass    
 test-xtf-amd64-amd64-4                                       pass    
 test-xtf-amd64-amd64-5                                       pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Pushing revision :

To xenbits.xen.org:/home/xen/git/xtf.git
   0a58a14..a5bd8d9  a5bd8d9e5d5c7b729d6d6122900d28f7a00aa6c0 -> xen-tested-master


From xen-devel-bounces@lists.xenproject.org Mon Jan 08 14:37:54 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 08 Jan 2024 14:37:54 +0000
Received: from list by lists.xenproject.org with outflank-mailman.663547.1033486 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMql9-0006Mc-0z; Mon, 08 Jan 2024 14:37:47 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 663547.1033486; Mon, 08 Jan 2024 14:37:47 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMql8-0006MV-Uf; Mon, 08 Jan 2024 14:37:46 +0000
Received: by outflank-mailman (input) for mailman id 663547;
 Mon, 08 Jan 2024 14:37:45 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=HHUo=IS=gmail.com=oleksii.kurochko@srs-se1.protection.inumbo.net>)
 id 1rMql7-0006MM-8M
 for xen-devel@lists.xenproject.org; Mon, 08 Jan 2024 14:37:45 +0000
Received: from mail-lf1-x134.google.com (mail-lf1-x134.google.com
 [2a00:1450:4864:20::134])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 7b6823f5-ae33-11ee-9b0f-b553b5be7939;
 Mon, 08 Jan 2024 15:37:43 +0100 (CET)
Received: by mail-lf1-x134.google.com with SMTP id
 2adb3069b0e04-50eaa8b447bso1736635e87.1
 for <xen-devel@lists.xenproject.org>; Mon, 08 Jan 2024 06:37:43 -0800 (PST)
Received: from [192.168.223.212] ([94.75.70.14])
 by smtp.gmail.com with ESMTPSA id
 bi23-20020a0565120e9700b0050e3719148fsm1163866lfb.235.2024.01.08.06.37.41
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 08 Jan 2024 06:37:41 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 7b6823f5-ae33-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1704724663; x=1705329463; darn=lists.xenproject.org;
        h=mime-version:user-agent:content-transfer-encoding:references
         :in-reply-to:date:cc:to:from:subject:message-id:from:to:cc:subject
         :date:message-id:reply-to;
        bh=MQScqalmtmLPJZbeiSOmYv5gdzp9HJBOtiVcnzaPdsg=;
        b=mfEHBRHJDY5I2Ty4TgtNcCooU8n2ifVML7RbJL+dt/d5TPLtYPSl58820Xe4Teo9JG
         weNxtIxL0ifWLPV69UOT3dcdihG+oP9OclCJSr8f4IfTZblUZzh7NwEIGy72J+j8/Cum
         sp/vP8URm2VM6Yj+nl1kj8kRUOxLodl2X3OHc1tqQijJyPeA3Ah+Fqg7j7UkkKTsw9sI
         7qIIiIa09PWn21VpBDe9MlIDX28jxxBj1+AlMWMjzO0fr4x3I1BN0fhrUUK4yUEjdlvr
         HOe3se5LEM7cbOWaIDYNUIbKIopoKX8oTVn7a56RRAsNX3CeJarBTwfGe0PCplc6nNjX
         mzaQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704724663; x=1705329463;
        h=mime-version:user-agent:content-transfer-encoding:references
         :in-reply-to:date:cc:to:from:subject:message-id:x-gm-message-state
         :from:to:cc:subject:date:message-id:reply-to;
        bh=MQScqalmtmLPJZbeiSOmYv5gdzp9HJBOtiVcnzaPdsg=;
        b=mhBNYYMqyFuVE+j520q5h+AkY57HISmPGswmd2BlsNruAf/zentDWhKQsfKfY2QTzn
         NC3t65IEGt3N765rGhZKVVarry1IZKxRDMMlWxa4wuxg81+u8nRXEpJoaRyjRfAEc9Af
         I9mGRhHmw5Oh+dnwfrY8YWQROkIW6F2A8jVZdCe6FmCgUbPm0FrohuJVyvPim3PNYoII
         lpnVeVYLMwfT0o/m2rk2sL4xJrgDh3twWNm0PTMCLFGWJcA3VX8Aw0/nliDPAQH0ChhV
         kjbcL+Qg3UCxMFX6hPdSCn0h+0Z3ylSwQrWQO+/y2Q1fAtdKUHqwNoV2cGHiHJphYvYu
         YPbQ==
X-Gm-Message-State: AOJu0YzKDpFBkNKRFMgYfHrFqAxKTIhtjitCmG8GEIFQUZ7XkG2PUAux
	DfXEYSzo1JFj/hYAgjvTGFc=
X-Google-Smtp-Source: AGHT+IGlHxESYSUZgsAxPCNlZu7m7G6uMBunoKSGbDUSxY4C0yAmTrHq4iWJu0vyNE2TLoVlSIzzzQ==
X-Received: by 2002:ac2:5050:0:b0:50e:7aec:1236 with SMTP id a16-20020ac25050000000b0050e7aec1236mr575728lfm.61.1704724661920;
        Mon, 08 Jan 2024 06:37:41 -0800 (PST)
Message-ID: <61bb0457701582f85f60f81cefb02953587deb06.camel@gmail.com>
Subject: Re: Xen 4.19 release schedule proposal
From: Oleksii <oleksii.kurochko@gmail.com>
To: Jan Beulich <jbeulich@suse.com>
Cc: community.manager@xenproject.org, julien@xen.org,
 sstabellini@kernel.org,  Bertrand.Marquis@arm.com,
 andrew.cooper3@citrix.com, roger.pau@citrix.com, 
 anthony.perard@citrix.com, george.dunlap@cloud.com, jgross@suse.com, 
 Wei.Chen@arm.com, xen-devel@lists.xenproject.org
Date: Mon, 08 Jan 2024 16:37:40 +0200
In-Reply-To: <87f4c67a-3902-499a-b4e3-c1429a0d9167@suse.com>
References: <cover.1703072575.git.oleksii.kurochko@gmail.com>
	 <08bca9a4158a190a0a953e5bc071a512cfe5f0f8.1703072575.git.oleksii.kurochko@gmail.com>
	 <341249d1-217f-4ad2-9455-b1aded4b9b56@xen.org>
	 <03cf5145-2124-4150-9f20-904f08bcabda@suse.com>
	 <9f8c4fe0a87742444b52a42aa5924cf046ee18b0.camel@gmail.com>
	 <67bf2be7-53f4-40d0-a856-8ae631a054b0@suse.com>
	 <955e9b02-20bd-4279-9f60-bb757cdf1a03@xen.org>
	 <0f729b61-b839-48f6-89ae-b5570b1eae0b@xen.org>
	 <26152790b0b8c3330d9cfc3c0462a1c072d6d598.camel@gmail.com>
	 <87f4c67a-3902-499a-b4e3-c1429a0d9167@suse.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
User-Agent: Evolution 3.50.2 (3.50.2-1.fc39) 
MIME-Version: 1.0

On Thu, 2024-01-04 at 13:52 +0100, Jan Beulich wrote:
> On 02.01.2024 17:59, Oleksii wrote:
> > I'd like to propose the release schedule for Xen 4.19.
> >=20
> > Based on the previous release schedules [1] and [2], it seems the
> > next
> > release date should be on Wednesday, July 10, 2024:
> >=20
> > ** Proposed option: Wed Jul 10, 2024 **
> > (+9 months from Xen 4.18 release)
>=20
> Hmm, aren't we intending to be on a 8 month cadence?
Considering that in July, there will be the Xen Developer Summit, we
can aim for an 8-month cadence.

However, in the Xen release document, there was mention of a discussion
[1] about cadence:
"With 18 months of full support and 36 months of security support, the
number of concurrent supported releases will be the same with either 8
or 9 months release cycles, so I have chosen an 8-month cycle for now."

I interpreted this as either an 8 or 9-month cycle, and it's not
strict. If there's a strict requirement for a specific duration, I'll
resend the Release Schedule Proposal.

[1] https://lists.xen.org/archives/html/xen-devel/2018-07/msg02240.html


~ Oleksii


From xen-devel-bounces@lists.xenproject.org Mon Jan 08 14:44:21 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 08 Jan 2024 14:44:21 +0000
Received: from list by lists.xenproject.org with outflank-mailman.663551.1033497 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMqrO-0000FK-Ld; Mon, 08 Jan 2024 14:44:14 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 663551.1033497; Mon, 08 Jan 2024 14:44:14 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMqrO-0000FD-J1; Mon, 08 Jan 2024 14:44:14 +0000
Received: by outflank-mailman (input) for mailman id 663551;
 Mon, 08 Jan 2024 14:44:13 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=KH4C=IS=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rMqrN-0000F7-SK
 for xen-devel@lists.xenproject.org; Mon, 08 Jan 2024 14:44:13 +0000
Received: from mail-lj1-x22d.google.com (mail-lj1-x22d.google.com
 [2a00:1450:4864:20::22d])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 637adc07-ae34-11ee-98ef-6d05b1d4d9a1;
 Mon, 08 Jan 2024 15:44:12 +0100 (CET)
Received: by mail-lj1-x22d.google.com with SMTP id
 38308e7fff4ca-2cd08f0c12aso18994081fa.0
 for <xen-devel@lists.xenproject.org>; Mon, 08 Jan 2024 06:44:12 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 j1-20020a926e01000000b0035ae9f62692sm2449990ilc.88.2024.01.08.06.44.10
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 08 Jan 2024 06:44:11 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 637adc07-ae34-11ee-98ef-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1704725052; x=1705329852; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=dZpn+YFnODHl51b0wZVOEo9Yh5JBs/xhGWoMpOaSkDg=;
        b=Vdlct8N8hxbwecLk2PXgNZXVFOv3bOMyi8ZNaS4azpZacJuBHIbF5bfGMWcpSZD9rD
         Y90J1XU4VzhPSx2sDSgnBsgU21tfJbSHqgTw4Vblmv/jHdgFN4Tob9HWO5MHXaOmnRrS
         l69FT9rHXtPsVxX1uLP1tSmqttoEr+74a0kPuHioJcm8CQbolHwXQtG5OR+IvR4eitE/
         hODFSfmKFSHYIV8EWf4MORi2kjpjxK/5fFga1NOpnGXIpqq2DsvmDC0t3fRVkbyvEKwG
         SEP859na34QOi6nuVtgn8sOcZaXpzdI6ZTSrpLdnmwux4FlOVXVOjgKymL66uGkt3tHa
         W5Qw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704725052; x=1705329852;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=dZpn+YFnODHl51b0wZVOEo9Yh5JBs/xhGWoMpOaSkDg=;
        b=RLiz+4b/dH9J2xyY2Tu/lRhQTYOzMmFXWSCsz+H/moteJDbqAqtcsRLIJC5hzTLjpn
         Gqoue+/Zu3cahRLVXEZF5ZcFe+kplAzV4okVUKry21avEgSEye3ujwCGgIbBiUBcnHyd
         hzK0Oo8++zrmg4lMX6g3nn2uoBCTRFNLZZI1qRagVYAzaW5lIjhva+GnU7uqNZTjHgjE
         l/zUOdcweVhredFJ0OPT9ih/1bXsvPcour49nr+hO9NbM5vLRnveDGxyHb4Sl6+p23bF
         ARnMmrrO8cdGTfoeHHJwuld+xlg1oyWIZ5arWuE2El4SCx+9zDbZtrzMB8bfJeX5Dipy
         A29A==
X-Gm-Message-State: AOJu0YxmbyvhTF868wb0lt2nfnyXYZjQQgFYgE9/St/7KibPBdlm1t3x
	UoojT+PF760oNixgbB85pxP9V53/3giV
X-Google-Smtp-Source: AGHT+IHeNvHUhoLlBcrrCMKxkMXAAN/4sqXRkNtZ5Hyb4fBlKlhFo05+FGvQQEmQ6E9EH+jX0U4w1g==
X-Received: by 2002:a2e:b609:0:b0:2cc:8648:7d40 with SMTP id r9-20020a2eb609000000b002cc86487d40mr973584ljn.60.1704725052102;
        Mon, 08 Jan 2024 06:44:12 -0800 (PST)
Message-ID: <05f088cf-4736-40d4-9f4b-1f6120e12a08@suse.com>
Date: Mon, 8 Jan 2024 15:44:11 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [XEN RFC] x86/uaccess: remove __{put,get}_user_bad()
Content-Language: en-US
To: Federico Serafini <federico.serafini@bugseng.com>
Cc: consulting@bugseng.com, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger.pau@citrix.com>, Wei Liu <wl@xen.org>,
 xen-devel@lists.xenproject.org, Stefano Stabellini <sstabellini@kernel.org>,
 Nicola Vetrini <nicola.vetrini@bugseng.com>,
 Andrew Cooper <andrew.cooper3@citrix.com>, Julien Grall <julien@xen.org>
References: <9cf852da1c03b614bf5010132c58a18adc2a4161.1703155225.git.federico.serafini@bugseng.com>
 <a2050ac1-e205-4d7f-b9b1-aa625136e63a@suse.com>
 <0c5bbfde-4cf0-4878-b1ee-ccc8eb775464@citrix.com>
 <eb53449bd6595ea0931460e62dd57b9c@bugseng.com>
 <1330c757-1ca3-4b07-898b-799cbfa67e8a@suse.com>
 <6a39fe3e-524f-4e39-81bc-ffb3d48ba306@bugseng.com>
 <192c393a-3702-4cc3-af60-e2711098ec6d@suse.com>
 <8fa1f868-c7de-4a46-a827-a75c38513f6f@bugseng.com>
 <19d5c152-3ab7-4762-980b-3570d3a948e4@suse.com>
 <7ecb7703-25c6-4295-946b-7b9aed7b3c67@bugseng.com>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <7ecb7703-25c6-4295-946b-7b9aed7b3c67@bugseng.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 08.01.2024 15:01, Federico Serafini wrote:
> Additionally, looking at violations of 16.3 on X86 [1],
> I think we should also consider generate_exception(),
> ASSERT_UNREACHABLE() and PARSE_ERR_RET() as allowed terminals
> for a switch-clause, do you agree?

No, and iirc this was discussed before. ASSERT_UNREACHABLE() is a
debug-build-only construct, so unsuitable. The other two aren't
global constructs, and hence shouldn't be deviated globally.
generate_exception() at least ends in a goto anyway, so why would
it need special treatment?

Jan



From xen-devel-bounces@lists.xenproject.org Mon Jan 08 14:46:12 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 08 Jan 2024 14:46:12 +0000
Received: from list by lists.xenproject.org with outflank-mailman.663554.1033506 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMqtG-0000mc-V0; Mon, 08 Jan 2024 14:46:10 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 663554.1033506; Mon, 08 Jan 2024 14:46:10 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMqtG-0000mV-SX; Mon, 08 Jan 2024 14:46:10 +0000
Received: by outflank-mailman (input) for mailman id 663554;
 Mon, 08 Jan 2024 14:46:10 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=HHUo=IS=gmail.com=oleksii.kurochko@srs-se1.protection.inumbo.net>)
 id 1rMqtG-0000mP-8U
 for xen-devel@lists.xenproject.org; Mon, 08 Jan 2024 14:46:10 +0000
Received: from mail-lj1-x235.google.com (mail-lj1-x235.google.com
 [2a00:1450:4864:20::235])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id a866f5d2-ae34-11ee-98ef-6d05b1d4d9a1;
 Mon, 08 Jan 2024 15:46:09 +0100 (CET)
Received: by mail-lj1-x235.google.com with SMTP id
 38308e7fff4ca-2cd56dac1adso10339091fa.2
 for <xen-devel@lists.xenproject.org>; Mon, 08 Jan 2024 06:46:08 -0800 (PST)
Received: from [192.168.223.212] ([94.75.70.14])
 by smtp.gmail.com with ESMTPSA id
 j11-20020a2e6e0b000000b002cd054fbb34sm1616496ljc.9.2024.01.08.06.46.05
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 08 Jan 2024 06:46:07 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: a866f5d2-ae34-11ee-98ef-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1704725168; x=1705329968; darn=lists.xenproject.org;
        h=mime-version:user-agent:content-transfer-encoding:references
         :in-reply-to:date:cc:to:from:subject:message-id:from:to:cc:subject
         :date:message-id:reply-to;
        bh=htYOfdr6ndmWBD0eONTPZM6TsTMTN8C8nyd2KqyTMyA=;
        b=TwJiTYfEVW6Si9qJ3vkw6k9rJaxwYxgorX8iwO5qjALPL/njgz/QGZ3WycclWw7RC3
         n9Lt4WPwarWso7WSKES4G3SrESkdHIIOCbejR7b6Yp6a0+NOx8WT/VdNJDIi3tu91VdD
         fbUNfNvU7+enq6vTu2iK/oNYaYG87PWTl1/R734kwnsfryT4hnhG7ZiJ7WbWTBD0438H
         mp8HCVkBJrnNbDOUm6r0aV2u4Vqtjw5/M4EinGEzmP5NRN7mRF0trLP3H0bNf8HoEgBG
         TxjLayQpd0y4iMU7IIJa8SKvV5ay+7NI4A4YlSc6I+COH/sh6btbLDyUz+ZrK2KDUYnt
         G7Dg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704725168; x=1705329968;
        h=mime-version:user-agent:content-transfer-encoding:references
         :in-reply-to:date:cc:to:from:subject:message-id:x-gm-message-state
         :from:to:cc:subject:date:message-id:reply-to;
        bh=htYOfdr6ndmWBD0eONTPZM6TsTMTN8C8nyd2KqyTMyA=;
        b=D1yaUkwv9JvXEQBHYn3PTHLFO0iRCWkUbNwjyIBlR+OkhXHv1ObO9ibx4psy42RkJ0
         pdFoImZyuzZHEPPoeYxH2i5lMspni/QAhoktiO5X9mW6bLhtn8hJoWfyshPFiSdukGMZ
         cXedw4iz4qikgk9AcbaJKAq+UXEG78OLLFWdXM1b7EANsMt4oP6CVBcctC7Mo+j7krRf
         RN83E2JA0yHxN6EvJUwJV1rQ436tKLVEGs3M0YvZIQfH/YZjgkklxJ4jTO5Pp3ZaqqdD
         ICK6xGIzqsDZiu5mwDBw38oIalTwQ6Zb41W4tq0uRUuNvGWBQt470h90FkF8Y//soMAd
         txYA==
X-Gm-Message-State: AOJu0YxxfMfV0x25Er5HDEshjev/4NB3fCWrj1sV5tWa55hVnbaVhVGu
	T/CkRrPC/UA3BEIATyRLARY=
X-Google-Smtp-Source: AGHT+IFpao2OdE9TEdSoNpHf5pnQVb0OKNe4h6iUzsxh05VZVHASSSOW0SKNFwTOVq2+K8U6ie2biQ==
X-Received: by 2002:a2e:2a43:0:b0:2cc:c794:57c2 with SMTP id q64-20020a2e2a43000000b002ccc79457c2mr1642832ljq.14.1704725167578;
        Mon, 08 Jan 2024 06:46:07 -0800 (PST)
Message-ID: <da5c455fb419998fa7d6d0df64e95510cf4b182a.camel@gmail.com>
Subject: Re: [PATCH v3 03/34] xen: add support in public/hvm/save.h for PPC
 and RISC-V
From: Oleksii <oleksii.kurochko@gmail.com>
To: Jan Beulich <jbeulich@suse.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, George Dunlap
 <george.dunlap@citrix.com>, Julien Grall <julien@xen.org>, Stefano
 Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>,
 xen-devel@lists.xenproject.org
Date: Mon, 08 Jan 2024 16:46:03 +0200
In-Reply-To: <e506cc91-c03c-436e-bfbe-8ff5a3039dc8@suse.com>
References: <cover.1703255175.git.oleksii.kurochko@gmail.com>
	 <365d4ab4591129af3a52176d991146b2f64f944b.1703255175.git.oleksii.kurochko@gmail.com>
	 <e506cc91-c03c-436e-bfbe-8ff5a3039dc8@suse.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
User-Agent: Evolution 3.50.2 (3.50.2-1.fc39) 
MIME-Version: 1.0

On Thu, 2024-01-04 at 12:01 +0100, Jan Beulich wrote:
> On 22.12.2023 16:12, Oleksii Kurochko wrote:
> > Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>
>=20
> Since you change how PPC is handled, this can't go without
> description (i.e.
> justification).
I thought adding a comment in the code would be sufficient. I can
include something similar in the commit message as well.


~ Oleksii

>=20
> > --- a/xen/include/public/hvm/save.h
> > +++ b/xen/include/public/hvm/save.h
> > @@ -89,8 +89,8 @@ DECLARE_HVM_SAVE_TYPE(END, 0, struct
> > hvm_save_end);
> > =C2=A0#include "../arch-x86/hvm/save.h"
> > =C2=A0#elif defined(__arm__) || defined(__aarch64__)
> > =C2=A0#include "../arch-arm/hvm/save.h"
> > -#elif defined(__powerpc64__)
> > -#include "../arch-ppc.h"
> > +#elif defined(__powerpc64__) || defined(__riscv)
> > +/* no specific header to include */
> > =C2=A0#else
> > =C2=A0#error "unsupported architecture"
> > =C2=A0#endif
>=20



From xen-devel-bounces@lists.xenproject.org Mon Jan 08 14:47:10 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 08 Jan 2024 14:47:10 +0000
Received: from list by lists.xenproject.org with outflank-mailman.663559.1033516 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMquE-0001Ip-8d; Mon, 08 Jan 2024 14:47:10 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 663559.1033516; Mon, 08 Jan 2024 14:47:10 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMquE-0001Ii-66; Mon, 08 Jan 2024 14:47:10 +0000
Received: by outflank-mailman (input) for mailman id 663559;
 Mon, 08 Jan 2024 14:47:09 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=KH4C=IS=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rMquD-0001GW-49
 for xen-devel@lists.xenproject.org; Mon, 08 Jan 2024 14:47:09 +0000
Received: from mail-lj1-x22b.google.com (mail-lj1-x22b.google.com
 [2a00:1450:4864:20::22b])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id cb7c7c4b-ae34-11ee-9b0f-b553b5be7939;
 Mon, 08 Jan 2024 15:47:07 +0100 (CET)
Received: by mail-lj1-x22b.google.com with SMTP id
 38308e7fff4ca-2cd56dac1adso10353441fa.2
 for <xen-devel@lists.xenproject.org>; Mon, 08 Jan 2024 06:47:07 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 dp37-20020a0566381ca500b0046b4976c3ccsm2222810jab.138.2024.01.08.06.47.05
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 08 Jan 2024 06:47:06 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: cb7c7c4b-ae34-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1704725227; x=1705330027; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=qBXcbuxcbGslj3Eq8Kn1uWjpLhwG0M/KZtqzHxQOPP0=;
        b=a3oQgdCNfLr+pTjmNHeNyqGFk+9slPPgwcpuIrpXwYhD1rv7Ic2bhboyH729Mfads5
         HvHm83udwT0NwWzxza5tX0jmxBAvD5FmS51Ty4G7+GsNKFfXylzkIPnJJmkoiTzMkDZS
         Ld7WpJ1h0g/I1uQQ9VSOO3gHG2kRaWkjsmRsXRiD8hY/bdeRNVgtypPxYAnxGCVwf/QN
         xRMZ+PpO37NgkdIQy3g261kIv5yqRfUHMtd/tJ4hgv99yLBKbCDBClYyPq94D+GnXbwO
         6mQ5cEbAbDRdf+1KuSWcb86AiVmCaSkqoYtFrzOosIz5tmd2qVnXL/0OsDwr2f4qyDUk
         3ylQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704725227; x=1705330027;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=qBXcbuxcbGslj3Eq8Kn1uWjpLhwG0M/KZtqzHxQOPP0=;
        b=qfij6RjSNqO32BY9cyrkzQzXbLWLQ52+rsfMt0qUTx0gRY5Z3WX5VwPOWv5N+MFIRu
         lzVcsp97jhFrY8XB9PN7d0hNqC9B6fi7eJ2ohLDk371WYqzyWUhTmb2iRQhflSOlsGiN
         +w+CX14bsKICSNm1vCKzYwrY4Ih+ixmB1Y6URVXU4GYPTpgnTQ3dlX/4Md37dwifvYMr
         xX+z4yVJAJttHYf/Sn63dyeximbVYW4KBmtlle66mfszQ3B9okgzQsVg9/Z52XVUaZ/p
         PwCcMESHaR/4bWP/8G9NeukKcI6E2m1sKsBdb3Iyb5JsrAGuuREJCC20YJtcbmLhnNWR
         HKMg==
X-Gm-Message-State: AOJu0Yx00iYt9uqP6y+iN+K99FpVeWRBUS528tzSguKlgXGwNV51pL8r
	CbR3IToiRUVKrJtocM5EFyUBU3fRP65qk0LILUnyH7hNWQ==
X-Google-Smtp-Source: AGHT+IHiL/URIUOYDElLOx9ZdJFlomqnatzcJgkeedN/mfVIrMybyfc6yqnfgh77ZWPwAXEANjMKbA==
X-Received: by 2002:a2e:8710:0:b0:2cc:a7ee:ce68 with SMTP id m16-20020a2e8710000000b002cca7eece68mr1891332lji.67.1704725226735;
        Mon, 08 Jan 2024 06:47:06 -0800 (PST)
Message-ID: <6889e19d-c6d4-43f0-9752-738d2a54e311@suse.com>
Date: Mon, 8 Jan 2024 15:47:06 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2] NUMA: limit first_valid_mfn exposure
Content-Language: en-US
To: Julien Grall <julien@xen.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 George Dunlap <george.dunlap@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
References: <224db25e-bd4c-4415-aff8-6ff3e84343d8@suse.com>
 <a99d9d1a-2395-4771-95f3-5dab64e10ce7@xen.org>
 <0872306a-fefb-424b-b27a-b67ba21828c7@suse.com>
 <829125ea-c220-47e9-a9f4-343126787f27@xen.org>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <829125ea-c220-47e9-a9f4-343126787f27@xen.org>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 08.01.2024 15:13, Julien Grall wrote:
> Hi Jan,
> 
> On 08/01/2024 11:43, Jan Beulich wrote:
>> On 08.01.2024 12:37, Julien Grall wrote:
>>> On 08/01/2024 11:31, Jan Beulich wrote:
>>>> Address the TODO regarding first_valid_mfn by making the variable static
>>>> when NUMA=y, thus also addressing a Misra C:2012 rule 8.4 concern (on
>>>> x86).
>>>>
>>>> Signed-off-by: Jan Beulich <jbeulich@suse.com>
>>>> ---
>>>> Julien suggests something like
>>>>
>>>> STATIC_IF(CONFIG_NUMA) unsigned long first_valid_mfn;
>>>>
>>>> but I view this as non-scalable (or at least I can't see how to
>>>> implement such in a scalabale way) and hence undesirable to introduce.
>>>
>>> I don't really see the scalability problem. Can you explain a bit more?
>>
>> Well, when seeing your original suggestion, I first considered it quite
>> reasonable. But when thinking how to implement it, I couldn't see what
>>
>> #define STATIC_IF(cfg)
>>
>> should expand to. That's simply because a macro body cannot itself have
>> pre-processor directives. Hence all I could think of was
>>
>> #ifdef CONFIG_NUMA
>> # define static_if_CONFIG_NUMA static
>> #else
>> # define static_if_CONFIG_NUMA
>> #endif
>> #define STATIC_IF(cfg) static_if_ ## cfg
>>
>> And I think it is easy to see how this wouldn't scale across CONFIG_xyz.
>> Plus that that point STATIC_IF() itself would be pretty much redundant.
>> But maybe I'm simply overlooking the obvious ...
> 
> You can use the same trick as for IS_ENABLED. The code below will select 
> static or nothing:
> 
> #define static_enabled(cfg) _static_enabled(cfg)
> #define _static_enabled(value) __static_enabled(__ARG_PLACEHOLDER_##value)
> #define __static_enabled(arg1_or_junk) ___static_enabled(arg1_or_junk 
> static,)
> #define ___static_enabled(__ignored, val, ...) val
> 
> #define STATIC_IF(option) static_enabled(option)
> 
> I have tested both with CONFIG_NUMA and !CONFIG_NUMA to confirm the 
> visibility of the variable will be correct.

Hmm, okay. Then my 2nd scalability concern, in another dimension: What
if static-ness ends up depending on two (or more) CONFIG_*?

Jan


From xen-devel-bounces@lists.xenproject.org Mon Jan 08 14:47:47 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 08 Jan 2024 14:47:47 +0000
Received: from list by lists.xenproject.org with outflank-mailman.663563.1033527 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMquo-00025J-N2; Mon, 08 Jan 2024 14:47:46 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 663563.1033527; Mon, 08 Jan 2024 14:47:46 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMquo-00025A-Js; Mon, 08 Jan 2024 14:47:46 +0000
Received: by outflank-mailman (input) for mailman id 663563;
 Mon, 08 Jan 2024 14:47:45 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=HHUo=IS=gmail.com=oleksii.kurochko@srs-se1.protection.inumbo.net>)
 id 1rMqun-0001gA-3v
 for xen-devel@lists.xenproject.org; Mon, 08 Jan 2024 14:47:45 +0000
Received: from mail-lj1-x22b.google.com (mail-lj1-x22b.google.com
 [2a00:1450:4864:20::22b])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id e1e8a316-ae34-11ee-98ef-6d05b1d4d9a1;
 Mon, 08 Jan 2024 15:47:44 +0100 (CET)
Received: by mail-lj1-x22b.google.com with SMTP id
 38308e7fff4ca-2cd0c151cdcso20925841fa.2
 for <xen-devel@lists.xenproject.org>; Mon, 08 Jan 2024 06:47:44 -0800 (PST)
Received: from [192.168.223.212] ([94.75.70.14])
 by smtp.gmail.com with ESMTPSA id
 s17-20020a2ea711000000b002c9f75a48fcsm1648509lje.16.2024.01.08.06.47.43
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 08 Jan 2024 06:47:43 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: e1e8a316-ae34-11ee-98ef-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1704725264; x=1705330064; darn=lists.xenproject.org;
        h=mime-version:user-agent:content-transfer-encoding:references
         :in-reply-to:date:cc:to:from:subject:message-id:from:to:cc:subject
         :date:message-id:reply-to;
        bh=Bx+FvAES2crKFitUdJ/cluZjjjxfEPDjcz5e7ln5OeA=;
        b=NqXa6AeEmhlf/a4HveUMJw11JgsOhqRhAWDj6IVwaymJKsifQgYQSHkc1bd/Ug4cmj
         g193pTQtGa0+Hmks+VuriaprpPhCVzzpErLOQCzzbTY3SY6qW4fhpI+rIymIk137wTES
         1mSrkI92Ea1zHHKRLDIGvA/S2pWPjSydXFnq19l+FX+kuCCHI+B3tNZNiI3i37dn+S9k
         gcr/wspjR1Wjfsbp/1VKq4ffsEozR5iHOXh4d8AS/Km1XByWn7X8ClupoXyyy3zBz23P
         h/60uXC07Z5kZYnnQqWvsNHkvBf6XfPpReAdYTU4JAnVBC8TBUseYUx0rf2tO5A0FVId
         OXFw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704725264; x=1705330064;
        h=mime-version:user-agent:content-transfer-encoding:references
         :in-reply-to:date:cc:to:from:subject:message-id:x-gm-message-state
         :from:to:cc:subject:date:message-id:reply-to;
        bh=Bx+FvAES2crKFitUdJ/cluZjjjxfEPDjcz5e7ln5OeA=;
        b=ULsBLAM4RU+Uu6BmADx+C9jBGSOwn0vBsRB+EDtX6/DFw/Qcr2CxWNvogziOunMY+Y
         sUjVwkPUrR3jSyEn8gZvjkJMrfxTlyS4nE9JRUR4HNnH5qBrAb3dfPse+OSGuseLucbD
         1vOCONixbjSKtE4ebXd0AxrHN7fTSZRwD+FPgYkFSZWrL+TWWKbxlSTJb8dNRb+9EFJM
         KKqAtpfYr0HDLnFNo2uVcoscJGKV4+hJo0QMbNko4/VzwCPAu3nno00g9+ZehlEy1jZ7
         uLR3bSqqjzpX7D2M2fxC64YaIqx/r0kUGh8vGwuBI+A7oP85/Der+ml0mFxPZPszQrId
         5AiA==
X-Gm-Message-State: AOJu0YzLhY7m+RduxUEOhm7VDHIuqrlRLzY2uLNjQ7vKMjhO9vaXxR2K
	xund795ZWI58xk5NyoMLW9g=
X-Google-Smtp-Source: AGHT+IHUReX77pOihoppwpJnMWAF4utlzWnN8BH5Rd8rM/5LeG8sNet4hjvf7TeG5qdlYwo7exkQCA==
X-Received: by 2002:a2e:8e99:0:b0:2cd:2333:d104 with SMTP id z25-20020a2e8e99000000b002cd2333d104mr1472552ljk.14.1704725264197;
        Mon, 08 Jan 2024 06:47:44 -0800 (PST)
Message-ID: <4093021516122490884f892dcc7210a6377afcef.camel@gmail.com>
Subject: Re: [PATCH v3 06/34] xen: avoid generation of empty asm/iommu.h
From: Oleksii <oleksii.kurochko@gmail.com>
To: Jan Beulich <jbeulich@suse.com>
Cc: Paul Durrant <paul@xen.org>, Roger Pau =?ISO-8859-1?Q?Monn=E9?=
	 <roger.pau@citrix.com>, xen-devel@lists.xenproject.org
Date: Mon, 08 Jan 2024 16:47:40 +0200
In-Reply-To: <b1731dc3-96e3-4763-9bd4-978f44e3a6a9@suse.com>
References: <cover.1703255175.git.oleksii.kurochko@gmail.com>
	 <e2a51f6197fce8f2ad636885ed231a6725d4cd8a.1703255175.git.oleksii.kurochko@gmail.com>
	 <b1731dc3-96e3-4763-9bd4-978f44e3a6a9@suse.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
User-Agent: Evolution 3.50.2 (3.50.2-1.fc39) 
MIME-Version: 1.0

On Thu, 2024-01-04 at 12:04 +0100, Jan Beulich wrote:
> On 22.12.2023 16:12, Oleksii Kurochko wrote:
> > Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>
>=20
> The change looks okay-ish, but again needs a description: You want to
> explain why you use the absolute minimum of the scopes the two (or,
> in principle, possibly more) #ifdef-s cover.
Sure, I'll add a description to the commit message.

~ Oleksii

> > --- a/xen/include/xen/iommu.h
> > +++ b/xen/include/xen/iommu.h
> > @@ -337,7 +337,9 @@ extern int
> > iommu_add_extra_reserved_device_memory(unsigned long start,
> > =C2=A0extern int iommu_get_extra_reserved_device_memory(iommu_grdm_t
> > *func,
> > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0 void *ctxt);
> > =C2=A0
> > +#ifdef CONFIG_HAS_PASSTHROUGH
> > =C2=A0#include <asm/iommu.h>
> > +#endif
> > =C2=A0
> > =C2=A0#ifndef iommu_call
> > =C2=A0# define iommu_call(ops, fn, args...) ((ops)->fn(args))
> > @@ -345,7 +347,9 @@ extern int
> > iommu_get_extra_reserved_device_memory(iommu_grdm_t *func,
> > =C2=A0#endif
> > =C2=A0
> > =C2=A0struct domain_iommu {
> > +#ifdef CONFIG_HAS_PASSTHROUGH
> > =C2=A0=C2=A0=C2=A0=C2=A0 struct arch_iommu arch;
> > +#endif
> > =C2=A0
> > =C2=A0=C2=A0=C2=A0=C2=A0 /* iommu_ops */
> > =C2=A0=C2=A0=C2=A0=C2=A0 const struct iommu_ops *platform_ops;
>=20



From xen-devel-bounces@lists.xenproject.org Mon Jan 08 14:57:41 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 08 Jan 2024 14:57:41 +0000
Received: from list by lists.xenproject.org with outflank-mailman.663569.1033538 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMr4J-0004o0-LJ; Mon, 08 Jan 2024 14:57:35 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 663569.1033538; Mon, 08 Jan 2024 14:57:35 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMr4J-0004nt-H0; Mon, 08 Jan 2024 14:57:35 +0000
Received: by outflank-mailman (input) for mailman id 663569;
 Mon, 08 Jan 2024 14:57:33 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>) id 1rMr4H-0004mT-S0
 for xen-devel@lists.xenproject.org; Mon, 08 Jan 2024 14:57:33 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rMr4G-00072U-BX; Mon, 08 Jan 2024 14:57:32 +0000
Received: from gw1.octic.net ([88.97.20.152] helo=[10.0.1.240])
 by xenbits.xenproject.org with esmtpsa
 (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rMr4G-00081F-5L; Mon, 08 Jan 2024 14:57:32 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
	s=20200302mail; h=Content-Transfer-Encoding:Content-Type:In-Reply-To:From:
	References:Cc:To:Subject:MIME-Version:Date:Message-ID;
	bh=iTvJJXgZjPGL1LLFQRwP7WawlnG3NAZaAAqcxCo9tlw=; b=Ily7u+/7/nEjMEGNv5nYgi17oB
	LYJNjcAbPw0b9fzu5B6Zw9SlpaFivxUjF4jfTZmZ3ZQFoOW7/2U8jghggp8+HsV2RssXKbMaC9Zo2
	Oy1Ero2v28WQRb1hnbpeWEgLhVWY8zW0jpZPQmKJys1BqfsniBEPFkR/3v1ngJRwZD0Y=;
Message-ID: <f54bd4a4-0bc6-490d-a990-46c62b0d10a3@xen.org>
Date: Mon, 8 Jan 2024 14:57:30 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2] NUMA: limit first_valid_mfn exposure
Content-Language: en-GB
To: Jan Beulich <jbeulich@suse.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 George Dunlap <george.dunlap@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
References: <224db25e-bd4c-4415-aff8-6ff3e84343d8@suse.com>
 <a99d9d1a-2395-4771-95f3-5dab64e10ce7@xen.org>
 <0872306a-fefb-424b-b27a-b67ba21828c7@suse.com>
 <829125ea-c220-47e9-a9f4-343126787f27@xen.org>
 <6889e19d-c6d4-43f0-9752-738d2a54e311@suse.com>
From: Julien Grall <julien@xen.org>
In-Reply-To: <6889e19d-c6d4-43f0-9752-738d2a54e311@suse.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

Hi Jan,

On 08/01/2024 14:47, Jan Beulich wrote:
> On 08.01.2024 15:13, Julien Grall wrote:
>> Hi Jan,
>>
>> On 08/01/2024 11:43, Jan Beulich wrote:
>>> On 08.01.2024 12:37, Julien Grall wrote:
>>>> On 08/01/2024 11:31, Jan Beulich wrote:
>>>>> Address the TODO regarding first_valid_mfn by making the variable static
>>>>> when NUMA=y, thus also addressing a Misra C:2012 rule 8.4 concern (on
>>>>> x86).
>>>>>
>>>>> Signed-off-by: Jan Beulich <jbeulich@suse.com>
>>>>> ---
>>>>> Julien suggests something like
>>>>>
>>>>> STATIC_IF(CONFIG_NUMA) unsigned long first_valid_mfn;
>>>>>
>>>>> but I view this as non-scalable (or at least I can't see how to
>>>>> implement such in a scalabale way) and hence undesirable to introduce.
>>>>
>>>> I don't really see the scalability problem. Can you explain a bit more?
>>>
>>> Well, when seeing your original suggestion, I first considered it quite
>>> reasonable. But when thinking how to implement it, I couldn't see what
>>>
>>> #define STATIC_IF(cfg)
>>>
>>> should expand to. That's simply because a macro body cannot itself have
>>> pre-processor directives. Hence all I could think of was
>>>
>>> #ifdef CONFIG_NUMA
>>> # define static_if_CONFIG_NUMA static
>>> #else
>>> # define static_if_CONFIG_NUMA
>>> #endif
>>> #define STATIC_IF(cfg) static_if_ ## cfg
>>>
>>> And I think it is easy to see how this wouldn't scale across CONFIG_xyz.
>>> Plus that that point STATIC_IF() itself would be pretty much redundant.
>>> But maybe I'm simply overlooking the obvious ...
>>
>> You can use the same trick as for IS_ENABLED. The code below will select
>> static or nothing:
>>
>> #define static_enabled(cfg) _static_enabled(cfg)
>> #define _static_enabled(value) __static_enabled(__ARG_PLACEHOLDER_##value)
>> #define __static_enabled(arg1_or_junk) ___static_enabled(arg1_or_junk
>> static,)
>> #define ___static_enabled(__ignored, val, ...) val
>>
>> #define STATIC_IF(option) static_enabled(option)
>>
>> I have tested both with CONFIG_NUMA and !CONFIG_NUMA to confirm the
>> visibility of the variable will be correct.
> 
> Hmm, okay. Then my 2nd scalability concern, in another dimension: What
> if static-ness ends up depending on two (or more) CONFIG_*?

Do you have any concrete example where this would be useful? If not, 
then I suggest to go with this solution and we can cross the bridge when 
we have an example.

We don't have to solve everything at once and at least with the approach 
I proposed we can start to use STATIC_IF() (or EXTERN_IF) a bit more 
often without open-coding it.

Cheers,


-- 
Julien Grall


From xen-devel-bounces@lists.xenproject.org Mon Jan 08 14:58:37 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 08 Jan 2024 14:58:37 +0000
Received: from list by lists.xenproject.org with outflank-mailman.663571.1033546 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMr5I-0005Nl-SL; Mon, 08 Jan 2024 14:58:36 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 663571.1033546; Mon, 08 Jan 2024 14:58:36 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMr5I-0005Ne-Pm; Mon, 08 Jan 2024 14:58:36 +0000
Received: by outflank-mailman (input) for mailman id 663571;
 Mon, 08 Jan 2024 14:58:35 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=KH4C=IS=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rMr5H-0005NV-J1
 for xen-devel@lists.xenproject.org; Mon, 08 Jan 2024 14:58:35 +0000
Received: from mail-lf1-x130.google.com (mail-lf1-x130.google.com
 [2a00:1450:4864:20::130])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 6524a8d8-ae36-11ee-98ef-6d05b1d4d9a1;
 Mon, 08 Jan 2024 15:58:34 +0100 (CET)
Received: by mail-lf1-x130.google.com with SMTP id
 2adb3069b0e04-50e7d6565b5so1917461e87.0
 for <xen-devel@lists.xenproject.org>; Mon, 08 Jan 2024 06:58:34 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 l21-20020a02a895000000b0046e2158e4bfsm783531jam.39.2024.01.08.06.58.31
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 08 Jan 2024 06:58:33 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 6524a8d8-ae36-11ee-98ef-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1704725914; x=1705330714; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=x5tP0cVMv2T2Ip1igaHjbcUkC8zfNqqPVKWoCK7GpKM=;
        b=Rq9gULM6/F68MlrNNsNX5/fPdXR0o6CfyzGsvEYixWMePYnCnlORbT2qem2SJZ2rok
         zYyzS6rrbxwizn8HPQ4DaDagx0VELPXws6ppgUzdXeskI/VKAkgqxTD2Qv+Dq0bvXaUy
         Fcf7PrdUslSup+Th4JJqXI02rAXU6Byr1HGAZw/AbxAJ7WhYvCfJXaFNAVOBiUqKMPt0
         uWDNBScqeoDR/k/ZNxCDST8EoOlMrmOnBXXQ1ekdQxmXyAyDd8g9BSITpZ48mVoBRXcm
         ofbVAJQP8q6iiN7a+he+hbUaz6twoZxLUuQRicTHJ41NZlA4aCPRnVFmjNAOkwS8MJVz
         DrDg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704725914; x=1705330714;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=x5tP0cVMv2T2Ip1igaHjbcUkC8zfNqqPVKWoCK7GpKM=;
        b=CU12Hjtbh6DkfldyilsqX4M6cHqhGNAei0bLVYTBY33XAVk2zKBIJ/pzSucYU8S9Al
         vM1fSvWmgH630yN/cSavZ/AsB3hAgeh45B28FPtzoJPu5RtYpxd84oTGOAwrTWr5P7Gr
         vFbYdHLWrowSVTtzTpoCmyYAKl8S5b4JvDGzoGsUPL68A5vliBWmdB5HQpxi09VeuZX/
         mptnxpOa18Z519xX2v2AdWZJEtTxHHYkrxS75o7fgo1RZLdVytM3MYZGsSln6UOLQ+xP
         613ESglGZxzrMbXGh6YyOo3y/xiwSwyMQUhgVEXCI9UaIDEN+7NNpOPfR7mmcXY/SMuP
         h9+Q==
X-Gm-Message-State: AOJu0YzUT3F2DMesEeKoKGrqbpUQZpDDn1KGw6RsCBUvB+8qrOjaACIQ
	aPSyu2VaZyEiPH0Y3MvTJSbAWXYwVDuT
X-Google-Smtp-Source: AGHT+IFqxaFYUFyhQrVL1jSLt1KkqEP5HOqU9AL16ZP+4jiwO3a/EY0BSsXmaFD1sZuW5pwhckh8HA==
X-Received: by 2002:ac2:5f75:0:b0:50e:73af:598e with SMTP id c21-20020ac25f75000000b0050e73af598emr1270396lfc.113.1704725913972;
        Mon, 08 Jan 2024 06:58:33 -0800 (PST)
Message-ID: <cc704b38-0fd7-4155-8de9-308ab1a46740@suse.com>
Date: Mon, 8 Jan 2024 15:58:32 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: Xen 4.19 release schedule proposal
Content-Language: en-US
To: Oleksii <oleksii.kurochko@gmail.com>
Cc: community.manager@xenproject.org, julien@xen.org, sstabellini@kernel.org,
 Bertrand.Marquis@arm.com, andrew.cooper3@citrix.com, roger.pau@citrix.com,
 anthony.perard@citrix.com, george.dunlap@cloud.com, jgross@suse.com,
 Wei.Chen@arm.com, xen-devel@lists.xenproject.org
References: <cover.1703072575.git.oleksii.kurochko@gmail.com>
 <08bca9a4158a190a0a953e5bc071a512cfe5f0f8.1703072575.git.oleksii.kurochko@gmail.com>
 <341249d1-217f-4ad2-9455-b1aded4b9b56@xen.org>
 <03cf5145-2124-4150-9f20-904f08bcabda@suse.com>
 <9f8c4fe0a87742444b52a42aa5924cf046ee18b0.camel@gmail.com>
 <67bf2be7-53f4-40d0-a856-8ae631a054b0@suse.com>
 <955e9b02-20bd-4279-9f60-bb757cdf1a03@xen.org>
 <0f729b61-b839-48f6-89ae-b5570b1eae0b@xen.org>
 <26152790b0b8c3330d9cfc3c0462a1c072d6d598.camel@gmail.com>
 <87f4c67a-3902-499a-b4e3-c1429a0d9167@suse.com>
 <61bb0457701582f85f60f81cefb02953587deb06.camel@gmail.com>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <61bb0457701582f85f60f81cefb02953587deb06.camel@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 08.01.2024 15:37, Oleksii wrote:
> On Thu, 2024-01-04 at 13:52 +0100, Jan Beulich wrote:
>> On 02.01.2024 17:59, Oleksii wrote:
>>> I'd like to propose the release schedule for Xen 4.19.
>>>
>>> Based on the previous release schedules [1] and [2], it seems the
>>> next
>>> release date should be on Wednesday, July 10, 2024:
>>>
>>> ** Proposed option: Wed Jul 10, 2024 **
>>> (+9 months from Xen 4.18 release)
>>
>> Hmm, aren't we intending to be on a 8 month cadence?
> Considering that in July, there will be the Xen Developer Summit, we
> can aim for an 8-month cadence.

July? Iirc I read June in the announcement.

> However, in the Xen release document, there was mention of a discussion
> [1] about cadence:
> "With 18 months of full support and 36 months of security support, the
> number of concurrent supported releases will be the same with either 8
> or 9 months release cycles, so I have chosen an 8-month cycle for now."
> 
> I interpreted this as either an 8 or 9-month cycle, and it's not
> strict. If there's a strict requirement for a specific duration, I'll
> resend the Release Schedule Proposal.

I'm not sure about "strict". Yet ...

> [1] https://lists.xen.org/archives/html/xen-devel/2018-07/msg02240.html

... this very mail worked out how overlap with larger holiday ranges
could be minimized not only for a single release, but for any as long
as the cadence is followed. Iirc this works out better with 8 months
(as kind of to be expected, as then there are only 3 variants, whereas
with 9 months it would be 4 of them).

Just to clarify, personally I'm fine with 9 months or even longer, but
it seemed to me that we had settled on 8.

Jan


From xen-devel-bounces@lists.xenproject.org Mon Jan 08 14:58:49 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 08 Jan 2024 14:58:49 +0000
Received: from list by lists.xenproject.org with outflank-mailman.663573.1033557 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMr5U-0005j4-4E; Mon, 08 Jan 2024 14:58:48 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 663573.1033557; Mon, 08 Jan 2024 14:58:48 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMr5U-0005iv-13; Mon, 08 Jan 2024 14:58:48 +0000
Received: by outflank-mailman (input) for mailman id 663573;
 Mon, 08 Jan 2024 14:58:47 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=HHUo=IS=gmail.com=oleksii.kurochko@srs-se1.protection.inumbo.net>)
 id 1rMr5T-0005h4-A5
 for xen-devel@lists.xenproject.org; Mon, 08 Jan 2024 14:58:47 +0000
Received: from mail-lf1-x134.google.com (mail-lf1-x134.google.com
 [2a00:1450:4864:20::134])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 6bbdab64-ae36-11ee-9b0f-b553b5be7939;
 Mon, 08 Jan 2024 15:58:45 +0100 (CET)
Received: by mail-lf1-x134.google.com with SMTP id
 2adb3069b0e04-50e7e55c0f6so1773734e87.0
 for <xen-devel@lists.xenproject.org>; Mon, 08 Jan 2024 06:58:45 -0800 (PST)
Received: from [192.168.223.212] ([94.75.70.14])
 by smtp.gmail.com with ESMTPSA id
 p20-20020a056512235400b0050e791b4c37sm1176386lfu.97.2024.01.08.06.58.43
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 08 Jan 2024 06:58:44 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 6bbdab64-ae36-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1704725925; x=1705330725; darn=lists.xenproject.org;
        h=mime-version:user-agent:content-transfer-encoding:references
         :in-reply-to:date:cc:to:from:subject:message-id:from:to:cc:subject
         :date:message-id:reply-to;
        bh=FDZDNMvlcMEpJLYDqkluKDfCMuTXN8hFrHBAIU4aeJA=;
        b=mOW89Iqjab3JpTeR7y6bFug9xKq85PV0cw/HhLYpRRMx1M2yNAMSb25n4vuRotC/Ys
         NtxX9wt96uJhiulhogcAltFF116DkcDIa9ffNZd1Ydsa+0RioX81/Wab7QVADqjPZhFz
         XxNR4GaIEsnyIwIzm4S3bbONkLKka2iNFI/MAMQDHKkuVmYhQQR/ou0+mQmkYfGjqPuE
         h0N8KVBvGSa17HXCrWpLGhVQH466Lkg1ShWASpZm4cq8XKpp+oHkHsN9+3ecTDWTNecO
         pDjs6wadYlpNXsG3MdfiCxTYoJl/HfkM62Mt93REXSAWpJ88Rc+t7Q22G3ffuR4mcr2j
         t6FA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704725925; x=1705330725;
        h=mime-version:user-agent:content-transfer-encoding:references
         :in-reply-to:date:cc:to:from:subject:message-id:x-gm-message-state
         :from:to:cc:subject:date:message-id:reply-to;
        bh=FDZDNMvlcMEpJLYDqkluKDfCMuTXN8hFrHBAIU4aeJA=;
        b=goyCka1Ag8kWnwL0HduBCvpviGZVrGk2NTtCJPHSzk6QBDWd1HkNvTNXJSQX45KlCW
         3ycvPvWHBSudF4pPbn0JsI+m1WFAwYl+qEWThwqLlBxFq1MNderIJ6VlI+RjkdvfhWAq
         aBR9djWENaqUh9TfFXivNh/E95/dYkTtMaxJSxlXgL222oKDSLXzZVt50/AHcCZvY8Qq
         jDGQi9TEtX9Ckik9Sl20w/f03FJODx4QeEPBgASUilgWZyBrfOTHz1wopDtgpOwBuBLf
         ltxJBw4kPlB6hB+kZSIXeiFykrbAUzYsBClYfgys3eeyiE3XNHHZ9XN4JQeTI2VH7AZr
         CMSg==
X-Gm-Message-State: AOJu0YxL/AJArgRLYb2VXqbGHj/IJYzYMwX/GOI2kbgdfImMxa6g+VMw
	4i+iPs94dq8XgMDV9sU+e3U=
X-Google-Smtp-Source: AGHT+IHlSv9Wstb+5hJsxmGbn3EhMJimwOOJcUJu/43H9+F7d1YK126OzKDtxfBYdVcNsOgcfTTHEA==
X-Received: by 2002:ac2:44d8:0:b0:50e:64b4:a266 with SMTP id d24-20020ac244d8000000b0050e64b4a266mr638449lfm.201.1704725924708;
        Mon, 08 Jan 2024 06:58:44 -0800 (PST)
Message-ID: <b70268a03c8d1e00e29724ebe373eaa8c50c064e.camel@gmail.com>
Subject: Re: [PATCH v3 07/34] xen/asm-generic: introdure nospec.h
From: Oleksii <oleksii.kurochko@gmail.com>
To: Jan Beulich <jbeulich@suse.com>
Cc: Stefano Stabellini <sstabellini@kernel.org>, Julien Grall
 <julien@xen.org>,  Bertrand Marquis <bertrand.marquis@arm.com>, Michal
 Orzel <michal.orzel@amd.com>, Volodymyr Babchuk
 <Volodymyr_Babchuk@epam.com>, Andrew Cooper <andrew.cooper3@citrix.com>, 
 George Dunlap <george.dunlap@citrix.com>, Wei Liu <wl@xen.org>, Shawn
 Anastasio <sanastasio@raptorengineering.com>, Alistair Francis
 <alistair.francis@wdc.com>,  Bob Eshleman <bobbyeshleman@gmail.com>, Connor
 Davis <connojdavis@gmail.com>,  xen-devel@lists.xenproject.org
Date: Mon, 08 Jan 2024 16:58:42 +0200
In-Reply-To: <d096f14c-96ae-46a6-81fc-55ff8fcaaf39@suse.com>
References: <cover.1703255175.git.oleksii.kurochko@gmail.com>
	 <a1360d3de3da8757c69f11c3fafd99ff65654ae8.1703255175.git.oleksii.kurochko@gmail.com>
	 <d096f14c-96ae-46a6-81fc-55ff8fcaaf39@suse.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
User-Agent: Evolution 3.50.2 (3.50.2-1.fc39) 
MIME-Version: 1.0

On Thu, 2024-01-04 at 12:06 +0100, Jan Beulich wrote:
> On 22.12.2023 16:12, Oleksii Kurochko wrote:
> > The <asm/nospec.h> header is similar between Arm, PPC, and RISC-V,
> > so it has been moved to asm-generic.
> >=20
> > Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>
>=20
> Acked-by: Jan Beulich <jbeulich@suse.com>
>=20
> A word may want saying though on ...
>=20
> > --- a/xen/arch/arm/include/asm/nospec.h
> > +++ b/xen/include/asm-generic/nospec.h
> > @@ -1,8 +1,8 @@
> > -/* SPDX-License-Identifier: GPL-2.0 */
> > -/* Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights
> > Reserved. */
> > +/* SPDX-License-Identifier: GPL-2.0-only */
> > +#ifndef _ASM_GENERIC_NOSPEC_H
> > +#define _ASM_GENERIC_NOSPEC_H
>=20
> ... the removal of the copyright line.
It was automatically decided by Git to do it this way.

I'll try to make it generate a new file instead of moving/renaming
Arm's nospec.h.

~ Oleksii


From xen-devel-bounces@lists.xenproject.org Mon Jan 08 15:03:43 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 08 Jan 2024 15:03:43 +0000
Received: from list by lists.xenproject.org with outflank-mailman.663578.1033567 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMrA4-00089A-Kv; Mon, 08 Jan 2024 15:03:32 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 663578.1033567; Mon, 08 Jan 2024 15:03:32 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMrA4-000893-I4; Mon, 08 Jan 2024 15:03:32 +0000
Received: by outflank-mailman (input) for mailman id 663578;
 Mon, 08 Jan 2024 15:03:31 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=KH4C=IS=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rMrA3-00088x-EJ
 for xen-devel@lists.xenproject.org; Mon, 08 Jan 2024 15:03:31 +0000
Received: from mail-lj1-x229.google.com (mail-lj1-x229.google.com
 [2a00:1450:4864:20::229])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 1599c091-ae37-11ee-98ef-6d05b1d4d9a1;
 Mon, 08 Jan 2024 16:03:30 +0100 (CET)
Received: by mail-lj1-x229.google.com with SMTP id
 38308e7fff4ca-2cca8eb0509so19572341fa.3
 for <xen-devel@lists.xenproject.org>; Mon, 08 Jan 2024 07:03:30 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 v5-20020a5d9945000000b007b3e503d59csm2246274ios.47.2024.01.08.07.03.26
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 08 Jan 2024 07:03:27 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 1599c091-ae37-11ee-98ef-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1704726210; x=1705331010; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=QWUAbNYAO2+Spgxj6aL5izZjrXw75y0lx8J6TlelOLs=;
        b=AVMFYRPIu6+3XYoCkaaEF87N0obVvWRWnIKC+IErxeBwOTrf4msuiv1Hx8A66rUg/4
         vfMwpr+bazRVPspF/7/h3R/JrrUF0+Moru/aFAQa2X2bt6dFthpaf5nUIzk2TlLRCQDq
         R6QBri4yJtiYi1v7Z5B21hhdcbtZRzquca10P+53FeLvdsh1APxRShe+jBbIFzU5b5nF
         yEk1NPP2f0QlKqkc+FS8ES81tVJ65qo1acVIXE3AMtyceLnzspGjwTknF+F0hN/Jt5Ui
         OOGD25sHHcEQfdv+hGXApefxZQCiW5VbY5L9tl48ltb/8Q55BsPv5ufoW4Op91AxKiU/
         2gYg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704726210; x=1705331010;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=QWUAbNYAO2+Spgxj6aL5izZjrXw75y0lx8J6TlelOLs=;
        b=c5hplexokRfLl9KymRgMuEjDXkKCQ1ufHIKqupN8QDlQb0jbRiq6Xi2L4t9e71yk1h
         1yEZ5YqhGr0I0vLo1rBBP048XdGChhVwppUa29Zt/afxGoVmv6grsHeXD6op5VY07BXS
         It7ung1IDltl1BveIqj1HBVSf/5tzRK5bPU5nr/dULD2wErcNhBVbdyfbGCmeJPXVHI6
         700iBYVmGlD+Z6GVHRp05frv1OKiwOHRkZO+jaQCvvvL9EdyUkz8frVbee+Wa5waY0am
         ZnXt7vOxXlFkAGFly7wqH6lORfh/rKXepwQJkZPYLyLL8jX+iIrg7lYOdOOIp4oX6hCf
         SMmw==
X-Gm-Message-State: AOJu0YyVt1PvIBzD1v+8wM7HFkHURn5fJpajEkhyXO9tmbOVfhDbD4GQ
	t4Hl0C9wtas6GEmfUyPLBJYZeT4Nr7Mh
X-Google-Smtp-Source: AGHT+IF2h1TzYmYYHPeA+/Ip2xaMJQ8IT/Rphrwz+rUsX0vWk32WRKHggMcz7vWxOSQwDWwRGdMyIg==
X-Received: by 2002:a2e:9645:0:b0:2cc:56b9:73e3 with SMTP id z5-20020a2e9645000000b002cc56b973e3mr1440120ljh.65.1704726209200;
        Mon, 08 Jan 2024 07:03:29 -0800 (PST)
Message-ID: <88b36324-a2f9-4cc7-a727-7546818a735d@suse.com>
Date: Mon, 8 Jan 2024 16:03:27 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2] NUMA: limit first_valid_mfn exposure
Content-Language: en-US
To: Julien Grall <julien@xen.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 George Dunlap <george.dunlap@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
References: <224db25e-bd4c-4415-aff8-6ff3e84343d8@suse.com>
 <a99d9d1a-2395-4771-95f3-5dab64e10ce7@xen.org>
 <0872306a-fefb-424b-b27a-b67ba21828c7@suse.com>
 <829125ea-c220-47e9-a9f4-343126787f27@xen.org>
 <6889e19d-c6d4-43f0-9752-738d2a54e311@suse.com>
 <f54bd4a4-0bc6-490d-a990-46c62b0d10a3@xen.org>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <f54bd4a4-0bc6-490d-a990-46c62b0d10a3@xen.org>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 08.01.2024 15:57, Julien Grall wrote:
> Hi Jan,
> 
> On 08/01/2024 14:47, Jan Beulich wrote:
>> On 08.01.2024 15:13, Julien Grall wrote:
>>> Hi Jan,
>>>
>>> On 08/01/2024 11:43, Jan Beulich wrote:
>>>> On 08.01.2024 12:37, Julien Grall wrote:
>>>>> On 08/01/2024 11:31, Jan Beulich wrote:
>>>>>> Address the TODO regarding first_valid_mfn by making the variable static
>>>>>> when NUMA=y, thus also addressing a Misra C:2012 rule 8.4 concern (on
>>>>>> x86).
>>>>>>
>>>>>> Signed-off-by: Jan Beulich <jbeulich@suse.com>
>>>>>> ---
>>>>>> Julien suggests something like
>>>>>>
>>>>>> STATIC_IF(CONFIG_NUMA) unsigned long first_valid_mfn;
>>>>>>
>>>>>> but I view this as non-scalable (or at least I can't see how to
>>>>>> implement such in a scalabale way) and hence undesirable to introduce.
>>>>>
>>>>> I don't really see the scalability problem. Can you explain a bit more?
>>>>
>>>> Well, when seeing your original suggestion, I first considered it quite
>>>> reasonable. But when thinking how to implement it, I couldn't see what
>>>>
>>>> #define STATIC_IF(cfg)
>>>>
>>>> should expand to. That's simply because a macro body cannot itself have
>>>> pre-processor directives. Hence all I could think of was
>>>>
>>>> #ifdef CONFIG_NUMA
>>>> # define static_if_CONFIG_NUMA static
>>>> #else
>>>> # define static_if_CONFIG_NUMA
>>>> #endif
>>>> #define STATIC_IF(cfg) static_if_ ## cfg
>>>>
>>>> And I think it is easy to see how this wouldn't scale across CONFIG_xyz.
>>>> Plus that that point STATIC_IF() itself would be pretty much redundant.
>>>> But maybe I'm simply overlooking the obvious ...
>>>
>>> You can use the same trick as for IS_ENABLED. The code below will select
>>> static or nothing:
>>>
>>> #define static_enabled(cfg) _static_enabled(cfg)
>>> #define _static_enabled(value) __static_enabled(__ARG_PLACEHOLDER_##value)
>>> #define __static_enabled(arg1_or_junk) ___static_enabled(arg1_or_junk
>>> static,)
>>> #define ___static_enabled(__ignored, val, ...) val
>>>
>>> #define STATIC_IF(option) static_enabled(option)
>>>
>>> I have tested both with CONFIG_NUMA and !CONFIG_NUMA to confirm the
>>> visibility of the variable will be correct.
>>
>> Hmm, okay. Then my 2nd scalability concern, in another dimension: What
>> if static-ness ends up depending on two (or more) CONFIG_*?
> 
> Do you have any concrete example where this would be useful? If not, 
> then I suggest to go with this solution and we can cross the bridge when 
> we have an example.
> 
> We don't have to solve everything at once and at least with the approach 
> I proposed we can start to use STATIC_IF() (or EXTERN_IF) a bit more 
> often without open-coding it.

Well. IS_ENABLED() is okay in this regard because you can combine
multiple of them (with && or ||). The same isn't true here (afaict).
After all I could equally well say that as long as we don't have
a sufficient number of such examples, but just one, not introducing
a special construct is going to be okay for the time being.

Jan


From xen-devel-bounces@lists.xenproject.org Mon Jan 08 15:05:51 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 08 Jan 2024 15:05:51 +0000
Received: from list by lists.xenproject.org with outflank-mailman.663583.1033576 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMrCI-0000Kb-5N; Mon, 08 Jan 2024 15:05:50 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 663583.1033576; Mon, 08 Jan 2024 15:05:50 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMrCI-0000KU-2S; Mon, 08 Jan 2024 15:05:50 +0000
Received: by outflank-mailman (input) for mailman id 663583;
 Mon, 08 Jan 2024 15:05:48 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=07o8=IS=cloud.com=roger.pau@srs-se1.protection.inumbo.net>)
 id 1rMrCG-0000KM-Ey
 for xen-devel@lists.xenproject.org; Mon, 08 Jan 2024 15:05:48 +0000
Received: from mail-ed1-x530.google.com (mail-ed1-x530.google.com
 [2a00:1450:4864:20::530])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 674faef4-ae37-11ee-98ef-6d05b1d4d9a1;
 Mon, 08 Jan 2024 16:05:47 +0100 (CET)
Received: by mail-ed1-x530.google.com with SMTP id
 4fb4d7f45d1cf-5537dd673e5so1610075a12.0
 for <xen-devel@lists.xenproject.org>; Mon, 08 Jan 2024 07:05:47 -0800 (PST)
Received: from localhost ([213.195.127.70]) by smtp.gmail.com with ESMTPSA id
 w5-20020aa7dcc5000000b0055306f10c28sm4341760edu.28.2024.01.08.07.05.46
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 08 Jan 2024 07:05:46 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 674faef4-ae37-11ee-98ef-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1704726347; x=1705331147; darn=lists.xenproject.org;
        h=in-reply-to:content-disposition:mime-version:references:message-id
         :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to;
        bh=Qk9RFZ21+Olzb5wzkJ7XdY/XlzRPL92kkiuTPh0cOmI=;
        b=IG4XqBhvYvupwzouq6HeIJcaaTeDEbFx7x/EasG8swYVsohgq9Lq61QPcguIQH0/cb
         6iU5EaQLLzzlJ33vBu62b4Pzf99QNsdUs+gvLKiroiC12CblaKtL3azv/hvzKHphlCBm
         qngyNcSu/1Oeuy9/syMIWi6QRWuWTTL1aUvRk=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704726347; x=1705331147;
        h=in-reply-to:content-disposition:mime-version:references:message-id
         :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to;
        bh=Qk9RFZ21+Olzb5wzkJ7XdY/XlzRPL92kkiuTPh0cOmI=;
        b=SMMZJyJmkNq8aRlfBNSSrnjXUzzGBKMkg8h/RqRDKfyh9SHXnJxg0Z49FTyOsPmhYk
         bHdMJy6BOtfTQZA+WOl82bOdb0eEmDJ5P8GPqXAr7G3mNKIEFEx7eibie7M++d9wKVCG
         jx32JDMFj6wP5/4r6OQ/odBxjWHzmla9FtMhKZj/XWMyUq6cSAQj4BlBXX5eZ4PQclAB
         OtFtgfcbihp2kQCPxVCXqFauy2uF1UdrwfDbykboT6vXqfkwdLWulu1LrnW5cy8q563i
         YNH/1kurPYck7W+J/9GGv1KyPS6FvJ850dl45DJWeQ52HH+Vgt0BzL/Unalk0jHViKX5
         RBwQ==
X-Gm-Message-State: AOJu0Yw2lPT9BDbivfEEMO3klBZUt4cdJF8/YTz8nDbwTJjUGTp+Yrwu
	m11y8gdEJdS55Fe137ZBT/v/iKinFsy2Tw==
X-Google-Smtp-Source: AGHT+IFdewhegn+pHAGDjDyvsq5s6si+NpnfbHcwQLvfuUdh7xKYMEmtTmbv6SUDhKkGJs1odQWn0Q==
X-Received: by 2002:a50:9350:0:b0:557:7580:fb2f with SMTP id n16-20020a509350000000b005577580fb2fmr1841401eda.31.1704726347041;
        Mon, 08 Jan 2024 07:05:47 -0800 (PST)
Date: Mon, 8 Jan 2024 16:05:45 +0100
From: Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
To: Jan Beulich <jbeulich@suse.com>
Cc: Stefano Stabellini <sstabellini@kernel.org>,
	Jiqian Chen <Jiqian.Chen@amd.com>, xen-devel@lists.xenproject.org,
	Andrew Cooper <andrew.cooper3@citrix.com>, Wei Liu <wl@xen.org>,
	George Dunlap <george.dunlap@citrix.com>,
	Julien Grall <julien@xen.org>,
	Anthony PERARD <anthony.perard@citrix.com>,
	Juergen Gross <jgross@suse.com>,
	Stewart Hildebrand <Stewart.Hildebrand@amd.com>,
	Huang Rui <Ray.Huang@amd.com>
Subject: Re: [RFC XEN PATCH v4 4/5] domctl: Use gsi to grant/revoke irq
 permission
Message-ID: <ZZwPSZoqyY6g9yhi@macbook>
References: <20240105070920.350113-1-Jiqian.Chen@amd.com>
 <20240105070920.350113-5-Jiqian.Chen@amd.com>
 <alpine.DEB.2.22.394.2401051702200.3675@ubuntu-linux-20-04-desktop>
 <882bd39a-8a29-4f4f-b64f-765c4858b1c8@suse.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
In-Reply-To: <882bd39a-8a29-4f4f-b64f-765c4858b1c8@suse.com>

On Mon, Jan 08, 2024 at 09:55:26AM +0100, Jan Beulich wrote:
> On 06.01.2024 02:08, Stefano Stabellini wrote:
> > On Fri, 5 Jan 2024, Jiqian Chen wrote:
> >> --- a/tools/libs/light/libxl_pci.c
> >> +++ b/tools/libs/light/libxl_pci.c
> >> @@ -1418,6 +1418,7 @@ static void pci_add_dm_done(libxl__egc *egc,
> >>      unsigned long long start, end, flags, size;
> >>      int irq, i;
> >>      int r;
> >> +    int gsi;
> >>      uint32_t flag = XEN_DOMCTL_DEV_RDM_RELAXED;
> >>      uint32_t domainid = domid;
> >>      bool isstubdom = libxl_is_stubdom(ctx, domid, &domainid);
> >> @@ -1486,6 +1487,7 @@ static void pci_add_dm_done(libxl__egc *egc,
> >>          goto out_no_irq;
> >>      }
> >>      if ((fscanf(f, "%u", &irq) == 1) && irq) {
> >> +        gsi = irq;
> > 
> > A question for Roger and Jan: are we always guaranteed that gsi == irq
> > (also in the PV case)?
> 
> Iirc for IO-APIC based IRQs that's always the case;

I think that's always the case on Linux, because it calls
PHYSDEVOP_map_pirq with index == pirq (see Linux
pci_xen_initial_domain()).  But other OSes could possibly make the
call with pirq == -1 and get a randomly allocated pirq for GSIs.

IOW: I don't think the pirq field in xen_domctl_irq_permission can be
altered like proposed here to switch from passing a pirq to a GSI.  A
new hypercall should be introduced that either is GSI specific, or
contains a type field in order to specify the namespace the field
targets.

Thanks, Roger.


From xen-devel-bounces@lists.xenproject.org Mon Jan 08 15:18:41 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 08 Jan 2024 15:18:41 +0000
Received: from list by lists.xenproject.org with outflank-mailman.663591.1033587 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMrOZ-0004Xk-7r; Mon, 08 Jan 2024 15:18:31 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 663591.1033587; Mon, 08 Jan 2024 15:18:31 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMrOZ-0004Xd-4a; Mon, 08 Jan 2024 15:18:31 +0000
Received: by outflank-mailman (input) for mailman id 663591;
 Mon, 08 Jan 2024 15:18:29 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=pvth=IS=minervasys.tech=carlo.nonato@srs-se1.protection.inumbo.net>)
 id 1rMrOX-0004XX-F1
 for xen-devel@lists.xenproject.org; Mon, 08 Jan 2024 15:18:29 +0000
Received: from mail-ej1-x633.google.com (mail-ej1-x633.google.com
 [2a00:1450:4864:20::633])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 2c6f1738-ae39-11ee-98ef-6d05b1d4d9a1;
 Mon, 08 Jan 2024 16:18:27 +0100 (CET)
Received: by mail-ej1-x633.google.com with SMTP id
 a640c23a62f3a-a28da6285c1so340443766b.0
 for <xen-devel@lists.xenproject.org>; Mon, 08 Jan 2024 07:18:27 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 2c6f1738-ae39-11ee-98ef-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=minervasys-tech.20230601.gappssmtp.com; s=20230601; t=1704727107; x=1705331907; darn=lists.xenproject.org;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:from:to:cc:subject:date
         :message-id:reply-to;
        bh=FhhPS+BI7rj18Qb+hHOqwWuPxvvOPZRfWUmrvJcJcQw=;
        b=gi5MAb0AVkl9iqsLXVdEPS2WwlcszOYwVULnENpEmb6zRlnY3NXWQQ3eS/mF8Ihg2b
         VmpSTUbF6r4fq6ucG8Nfc11XzyKQdZJEeJ6MdOOELKmlXcTaOCl2WSITGFxjEK6gQGcv
         QOQXn5rnBVC8J6yM1K/VM81KZC6AsSLE5t8TKB3JFhsubgBM1OW97/TT9XDxx2QMtzpJ
         QjvqBQLCNTgoTpUvu0Cky2sR4u1SCTIhi4mJE8p65qo9TfHCq26SXehID0I7iMEsYVEJ
         xx5GT6jKgXqYV7jJ9V9wWzR1ubjkhOBgvNOkrrgiFmQjbhXtDvqU1OxKnHRcgaVk1Hmr
         CrDA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704727107; x=1705331907;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to;
        bh=FhhPS+BI7rj18Qb+hHOqwWuPxvvOPZRfWUmrvJcJcQw=;
        b=iFHiBU/tnstBAkoiohcms6XXiGxfvdCdZ82TsGPhu6QseCoXUS0hpe4hVPcOrHQLOj
         g7zQ/udBNSttKk3JzA2sdSkVEEB8LbS1at/oA+orarJlDB/cvixUxutZniQlE53NC9sF
         IU0V1DzizqpjIW36+72EXgLTgXF6zeOJ0J+LE7R60e+rhttV3ymVz2NZbkPx5iZYm0OZ
         WF4/6GiuzR1faZ0p7elC762eF4tk+hz4mRbmUypRKrW2gdHQPXnrh8S593spui0ohPuX
         rWAjRVf3HL0bcXmSEoQWQ/1tnzldjU5VJNDRaoNxAKYDxEPOFzGkeLmd/CpXkNjtlLjy
         pQlg==
X-Gm-Message-State: AOJu0YyfQ6z6fdcFpk5QFiSfn+2vUkJvZR8KsZEGOBy2NKeekOxjJQsr
	VOt4Q8YhO55PSD7ZTYNH0Iyt1EZtCPfoIamxheYT7JZRUnMzww==
X-Google-Smtp-Source: AGHT+IE4s4APAmTLidt/WzmxSdcbgtBLrTssQDraiLy+Ka2UJO+9QC69i8aKmLD5AYS+wFCXlt8j+mAvL2mRhEnFJUU=
X-Received: by 2002:a17:906:c2d6:b0:a2a:a3dc:621b with SMTP id
 ch22-20020a170906c2d600b00a2aa3dc621bmr1612883ejb.4.1704727107184; Mon, 08
 Jan 2024 07:18:27 -0800 (PST)
MIME-Version: 1.0
References: <20240102095138.17933-1-carlo.nonato@minervasys.tech>
 <20240102095138.17933-5-carlo.nonato@minervasys.tech> <99295edf-6c9c-4d06-ba20-86db67100561@xen.org>
 <CAG+AhRWd9E5sQPY-sxN+WGTSWtvRXGN2FnZC2Vy6LPyynKGLcQ@mail.gmail.com>
 <4675a541-b9dc-476a-a6ff-0247a4403292@xen.org> <CAG+AhRX6Y2U6A1v=27KgUeWip115R1o+csEWcyCCooxE2Tac6w@mail.gmail.com>
 <33061994-0b49-4e4e-8698-d6901b9130dc@xen.org>
In-Reply-To: <33061994-0b49-4e4e-8698-d6901b9130dc@xen.org>
From: Carlo Nonato <carlo.nonato@minervasys.tech>
Date: Mon, 8 Jan 2024 16:18:16 +0100
Message-ID: <CAG+AhRXPt_e4+OUxbRLhf6W0reH1nmO7cC9-XoFKe_G8BVxt7w@mail.gmail.com>
Subject: Re: [PATCH v5 04/13] xen: extend domctl interface for cache coloring
To: Julien Grall <julien@xen.org>
Cc: xen-devel@lists.xenproject.org, 
	Stefano Stabellini <sstabellini@kernel.org>, Bertrand Marquis <bertrand.marquis@arm.com>, 
	Michal Orzel <michal.orzel@amd.com>, Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>, 
	Andrew Cooper <andrew.cooper3@citrix.com>, George Dunlap <george.dunlap@citrix.com>, 
	Jan Beulich <jbeulich@suse.com>, Wei Liu <wl@xen.org>, 
	Marco Solieri <marco.solieri@minervasys.tech>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

Hi Julien

On Mon, Jan 8, 2024 at 12:36=E2=80=AFPM Julien Grall <julien@xen.org> wrote=
:
>
> Hi Carlo,
>
> On 08/01/2024 11:19, Carlo Nonato wrote:
> > Hi Julien,
> >
> > On Mon, Jan 8, 2024 at 12:01=E2=80=AFPM Julien Grall <julien@xen.org> w=
rote:
> >>
> >> Hi Carlo,
> >>
> >> On 08/01/2024 10:27, Carlo Nonato wrote:
> >>> On Fri, Jan 5, 2024 at 6:26=E2=80=AFPM Julien Grall <julien@xen.org> =
wrote:
> >>>> On 02/01/2024 09:51, Carlo Nonato wrote:
> >>>>> This commit updates the domctl interface to allow the user to set c=
ache
> >>>>> coloring configurations from the toolstack.
> >>>>> It also implements the functionality for arm64.
> >>>>>
> >>>>> Based on original work from: Luca Miccio <lucmiccio@gmail.com>
> >>>>>
> >>>>> Signed-off-by: Carlo Nonato <carlo.nonato@minervasys.tech>
> >>>>> Signed-off-by: Marco Solieri <marco.solieri@minervasys.tech>
> >>>>> ---
> >>>>> v5:
> >>>>> - added a new hypercall to set colors
> >>>>> - uint for the guest handle
> >>>>> v4:
> >>>>> - updated XEN_DOMCTL_INTERFACE_VERSION
> >>>>> ---
> >>>>>     xen/arch/arm/llc-coloring.c    | 17 +++++++++++++++++
> >>>>>     xen/common/domctl.c            | 11 +++++++++++
> >>>>>     xen/include/public/domctl.h    | 10 +++++++++-
> >>>>>     xen/include/xen/llc-coloring.h |  3 +++
> >>>>>     4 files changed, 40 insertions(+), 1 deletion(-)
> >>>>>
> >>>>> diff --git a/xen/arch/arm/llc-coloring.c b/xen/arch/arm/llc-colorin=
g.c
> >>>>> index 5ce58aba70..a08614ec36 100644
> >>>>> --- a/xen/arch/arm/llc-coloring.c
> >>>>> +++ b/xen/arch/arm/llc-coloring.c
> >>>>> @@ -9,6 +9,7 @@
> >>>>>      *    Carlo Nonato <carlo.nonato@minervasys.tech>
> >>>>>      */
> >>>>>     #include <xen/errno.h>
> >>>>> +#include <xen/guest_access.h>
> >>>>>     #include <xen/keyhandler.h>
> >>>>>     #include <xen/llc-coloring.h>
> >>>>>     #include <xen/param.h>
> >>>>> @@ -278,6 +279,22 @@ int dom0_set_llc_colors(struct domain *d)
> >>>>>         return domain_check_colors(d);
> >>>>>     }
> >>>>>
> >>>>> +int domain_set_llc_colors_domctl(struct domain *d,
> >>>>> +                                 const struct xen_domctl_set_llc_c=
olors *config)
> >>>>> +{
> >>>>> +    if ( d->num_llc_colors )
> >>>>> +        return -EEXIST;
> >>>>> +
> >>>>> +    if ( domain_alloc_colors(d, config->num_llc_colors) )
> >>>>
> >>>> domain_alloc_colors() doesn't sanity check config->num_llc_colors be=
fore
> >>>> allocating the array. You want a check the size before so we would n=
ot
> >>>> try to allocate an arbitrary amount of memory.
> >>>>
> >>>>> +        return -ENOMEM;
> >>>>> +
> >>>>> +    if ( copy_from_guest(d->llc_colors, config->llc_colors,
> >>>>> +                         config->num_llc_colors) )
> >>>>> +        return -EFAULT;
> >>>>> +
> >>>>> +    return domain_check_colors(d);
> >>>>> +}
> >>>>> +
> >>>>>     /*
> >>>>>      * Local variables:
> >>>>>      * mode: C
> >>>>> diff --git a/xen/common/domctl.c b/xen/common/domctl.c
> >>>>> index f5a71ee5f7..b6867d0602 100644
> >>>>> --- a/xen/common/domctl.c
> >>>>> +++ b/xen/common/domctl.c
> >>>>> @@ -8,6 +8,7 @@
> >>>>>
> >>>>>     #include <xen/types.h>
> >>>>>     #include <xen/lib.h>
> >>>>> +#include <xen/llc-coloring.h>
> >>>>>     #include <xen/err.h>
> >>>>>     #include <xen/mm.h>
> >>>>>     #include <xen/sched.h>
> >>>>> @@ -858,6 +859,16 @@ long do_domctl(XEN_GUEST_HANDLE_PARAM(xen_domc=
tl_t) u_domctl)
> >>>>>                     __HYPERVISOR_domctl, "h", u_domctl);
> >>>>>             break;
> >>>>>
> >>>>> +    case XEN_DOMCTL_set_llc_colors:
> >>>>> +        if ( !llc_coloring_enabled )
> >>>>> +            break;
> >>>>> +
> >>>>> +        ret =3D domain_set_llc_colors_domctl(d, &op->u.set_llc_col=
ors);
> >>>>> +        if ( ret =3D=3D -EEXIST )
> >>>>> +            printk(XENLOG_ERR
> >>>>> +                   "Can't set LLC colors on an already created dom=
ain\n");
> >>>>
> >>>> To me, the message doesn't match the check in
> >>>> domain_set_llc_colors_domctl(). But I think you want to check that n=
o
> >>>> memory was yet allocated to the domain. Otherwise, you coloring will=
 be
> >>>> wrong.
> >>>>
> >>>> Also, it is a bit unclear why you print a message for -EEXIST but no=
t
> >>>> the others. In this instance, I would consider to print nothing at a=
ll.
> >>>
> >>> The problem here is that we don't support recoloring. When a domain i=
s
> >>> created it receives a coloring configuration and it can't change. If =
this
> >>> hypercall is called twice I have to stop the second time somehow.
> >> Looking at your check what you prevent is a toolstack updating the arr=
ay
> >> twice. But that would be ok (/!\ I am not saying we should allow it) s=
o
> >> long no memory has been allocated to the domain.
> >>
> >> But I also consider we would re-color once we started to allocate memo=
ry
> >> for the domain (either RAM or P2M). This seems to be missed out in you=
r
> >> check.
> >
> > So you want to be able to change colors if no memory has yet been alloc=
ated?
>
> No. I am saying that that we should not be able to allow changing the
> colors after the memory has been allocated. To give an example, your
> current code would allow:
>
>    1) Setup the P2M pools or allocate RAM
>    2) Set the color
>
> This would render the coloring configuration moot.
>
> Whether we want to allow changing the coloring before hand is a
> different question and as I wrote earlier on, I don't mind if you want
> to forbid that.

At the moment I'm relying on the toolstack in the sense that I know that it
will set colors right after domain creation and before memory allocation.
Calling alloc_domheap_pages() without a coloring configuration makes Xen
crash, so it's mandatory to have the configuration done before any allocati=
on.
I know that we shouldn't rely on the toolstack this much, but I didn't
find a better way. Given this assumption, looking for an already existing
color configuration of a domain is sufficient to avoid what you are saying.

Is it possible to enforce such a constraint with domctl?
I mean to be sure that this domctl will be called at a precise time.

Thanks.

> > I don't know what to check that.
>
> You can check the size of the P2M pool (d->arch.paging.p2m_total_pages)
> is still 0. I think for RAM, you can check d->tot_pages =3D=3D 0.
>
> Cheers,
>
> --
> Julien Grall


From xen-devel-bounces@lists.xenproject.org Mon Jan 08 15:29:53 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 08 Jan 2024 15:29:53 +0000
Received: from list by lists.xenproject.org with outflank-mailman.663595.1033597 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMrZS-0007y8-5q; Mon, 08 Jan 2024 15:29:46 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 663595.1033597; Mon, 08 Jan 2024 15:29:46 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMrZS-0007y1-22; Mon, 08 Jan 2024 15:29:46 +0000
Received: by outflank-mailman (input) for mailman id 663595;
 Mon, 08 Jan 2024 15:29:45 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>) id 1rMrZR-0007xv-N8
 for xen-devel@lists.xenproject.org; Mon, 08 Jan 2024 15:29:45 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rMrZQ-0007cw-8E; Mon, 08 Jan 2024 15:29:44 +0000
Received: from gw1.octic.net ([88.97.20.152] helo=[10.0.1.240])
 by xenbits.xenproject.org with esmtpsa
 (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rMrZQ-00014M-2j; Mon, 08 Jan 2024 15:29:44 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
	s=20200302mail; h=Content-Transfer-Encoding:Content-Type:In-Reply-To:From:
	References:Cc:To:Subject:MIME-Version:Date:Message-ID;
	bh=qw3AhkhheQaHKq5hclhp7GpNg5//segpk6nb03VGsvM=; b=uVpqd8mVZwPho5eyLiOvJoVVy8
	4kRBryl7ZaKyT4xrmd55gXsogf4HrcupfIDWhBL0IJ2rVsSJiU8sRTKI30+biEgzyD59+4IiD5OAa
	KaUSOtTFQj1XIBfwnJpBZKCxn5lL/DkEw+2WwEcY+IGMH0hJSmr3W6KDLG0LnFmeY8D0=;
Message-ID: <9ffa0eb5-6458-4752-86cd-c0453e3888d1@xen.org>
Date: Mon, 8 Jan 2024 15:29:42 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2] NUMA: limit first_valid_mfn exposure
Content-Language: en-GB
To: Jan Beulich <jbeulich@suse.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 George Dunlap <george.dunlap@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
References: <224db25e-bd4c-4415-aff8-6ff3e84343d8@suse.com>
 <a99d9d1a-2395-4771-95f3-5dab64e10ce7@xen.org>
 <0872306a-fefb-424b-b27a-b67ba21828c7@suse.com>
 <829125ea-c220-47e9-a9f4-343126787f27@xen.org>
 <6889e19d-c6d4-43f0-9752-738d2a54e311@suse.com>
 <f54bd4a4-0bc6-490d-a990-46c62b0d10a3@xen.org>
 <88b36324-a2f9-4cc7-a727-7546818a735d@suse.com>
From: Julien Grall <julien@xen.org>
In-Reply-To: <88b36324-a2f9-4cc7-a727-7546818a735d@suse.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

Hi Jan,

On 08/01/2024 15:03, Jan Beulich wrote:
> On 08.01.2024 15:57, Julien Grall wrote:
>> Hi Jan,
>>
>> On 08/01/2024 14:47, Jan Beulich wrote:
>>> On 08.01.2024 15:13, Julien Grall wrote:
>>>> Hi Jan,
>>>>
>>>> On 08/01/2024 11:43, Jan Beulich wrote:
>>>>> On 08.01.2024 12:37, Julien Grall wrote:
>>>>>> On 08/01/2024 11:31, Jan Beulich wrote:
>>>>>>> Address the TODO regarding first_valid_mfn by making the variable static
>>>>>>> when NUMA=y, thus also addressing a Misra C:2012 rule 8.4 concern (on
>>>>>>> x86).
>>>>>>>
>>>>>>> Signed-off-by: Jan Beulich <jbeulich@suse.com>
>>>>>>> ---
>>>>>>> Julien suggests something like
>>>>>>>
>>>>>>> STATIC_IF(CONFIG_NUMA) unsigned long first_valid_mfn;
>>>>>>>
>>>>>>> but I view this as non-scalable (or at least I can't see how to
>>>>>>> implement such in a scalabale way) and hence undesirable to introduce.
>>>>>>
>>>>>> I don't really see the scalability problem. Can you explain a bit more?
>>>>>
>>>>> Well, when seeing your original suggestion, I first considered it quite
>>>>> reasonable. But when thinking how to implement it, I couldn't see what
>>>>>
>>>>> #define STATIC_IF(cfg)
>>>>>
>>>>> should expand to. That's simply because a macro body cannot itself have
>>>>> pre-processor directives. Hence all I could think of was
>>>>>
>>>>> #ifdef CONFIG_NUMA
>>>>> # define static_if_CONFIG_NUMA static
>>>>> #else
>>>>> # define static_if_CONFIG_NUMA
>>>>> #endif
>>>>> #define STATIC_IF(cfg) static_if_ ## cfg
>>>>>
>>>>> And I think it is easy to see how this wouldn't scale across CONFIG_xyz.
>>>>> Plus that that point STATIC_IF() itself would be pretty much redundant.
>>>>> But maybe I'm simply overlooking the obvious ...
>>>>
>>>> You can use the same trick as for IS_ENABLED. The code below will select
>>>> static or nothing:
>>>>
>>>> #define static_enabled(cfg) _static_enabled(cfg)
>>>> #define _static_enabled(value) __static_enabled(__ARG_PLACEHOLDER_##value)
>>>> #define __static_enabled(arg1_or_junk) ___static_enabled(arg1_or_junk
>>>> static,)
>>>> #define ___static_enabled(__ignored, val, ...) val
>>>>
>>>> #define STATIC_IF(option) static_enabled(option)
>>>>
>>>> I have tested both with CONFIG_NUMA and !CONFIG_NUMA to confirm the
>>>> visibility of the variable will be correct.
>>>
>>> Hmm, okay. Then my 2nd scalability concern, in another dimension: What
>>> if static-ness ends up depending on two (or more) CONFIG_*?
>>
>> Do you have any concrete example where this would be useful? If not,
>> then I suggest to go with this solution and we can cross the bridge when
>> we have an example.
>>
>> We don't have to solve everything at once and at least with the approach
>> I proposed we can start to use STATIC_IF() (or EXTERN_IF) a bit more
>> often without open-coding it.
> 
> Well. IS_ENABLED() is okay in this regard because you can combine
> multiple of them (with && or ||). The same isn't true here (afaict).

Indeed it is not. But I can't think of any place where it would be 
useful at the moment.

> After all I could equally well say that as long as we don't have
> a sufficient number of such examples, but just one, not introducing
> a special construct is going to be okay for the time being.

The thing is I expect more place in the code requiring to use 
STATIC_IF() (or EXTERN_IF()). So it is not clear to me why we would 
delay solving the open-coding...

In fact, this is a matter of taste, but the cost (less readable) vs 
benefit (not exposing) is not really worth it to me here. Mostly, 
because I don't entirely see the problem of keeping first_valid_mfn 
exposed to everyone.

This balance would change if we introduce STATIC_IF(). Anyway, I will 
let other share their opinions.

Cheers,

-- 
Julien Grall


From xen-devel-bounces@lists.xenproject.org Mon Jan 08 15:31:59 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 08 Jan 2024 15:31:59 +0000
Received: from list by lists.xenproject.org with outflank-mailman.663599.1033606 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMrba-0001AF-GS; Mon, 08 Jan 2024 15:31:58 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 663599.1033606; Mon, 08 Jan 2024 15:31:58 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMrba-0001A8-E1; Mon, 08 Jan 2024 15:31:58 +0000
Received: by outflank-mailman (input) for mailman id 663599;
 Mon, 08 Jan 2024 15:31:57 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>) id 1rMrbZ-0001A2-Gj
 for xen-devel@lists.xenproject.org; Mon, 08 Jan 2024 15:31:57 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rMrbZ-0007eg-1F; Mon, 08 Jan 2024 15:31:57 +0000
Received: from gw1.octic.net ([88.97.20.152] helo=[10.0.1.240])
 by xenbits.xenproject.org with esmtpsa
 (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rMrbY-0001Fk-OO; Mon, 08 Jan 2024 15:31:56 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
	s=20200302mail; h=Content-Transfer-Encoding:Content-Type:In-Reply-To:From:
	References:Cc:To:Subject:MIME-Version:Date:Message-ID;
	bh=QYyFyKxKpzRo+0y9ndsv5lw97+kbmzR7Mby9xclXWvc=; b=OHE+MnCujyE0ZW//h+eIh2mvdE
	mYLmKTiUWGxh0qqBzoyMBJpaIxzKXG8EhoZP2DYH31up4Rrso9TtyABnv7bToJhwToHILUZEEhJ5J
	8+7xmaHiGanTP3Bm7mPQan2NrBSvZ5j2yn6bJwOg66FL2yx8Nnv+iy8cOLbh1F6RZthk=;
Message-ID: <e7029592-57e6-4c2a-ab11-f843047ce7f2@xen.org>
Date: Mon, 8 Jan 2024 15:31:54 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v5 04/13] xen: extend domctl interface for cache coloring
Content-Language: en-GB
To: Carlo Nonato <carlo.nonato@minervasys.tech>
Cc: xen-devel@lists.xenproject.org,
 Stefano Stabellini <sstabellini@kernel.org>,
 Bertrand Marquis <bertrand.marquis@arm.com>,
 Michal Orzel <michal.orzel@amd.com>,
 Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
 Andrew Cooper <andrew.cooper3@citrix.com>,
 George Dunlap <george.dunlap@citrix.com>, Jan Beulich <jbeulich@suse.com>,
 Wei Liu <wl@xen.org>, Marco Solieri <marco.solieri@minervasys.tech>
References: <20240102095138.17933-1-carlo.nonato@minervasys.tech>
 <20240102095138.17933-5-carlo.nonato@minervasys.tech>
 <99295edf-6c9c-4d06-ba20-86db67100561@xen.org>
 <CAG+AhRWd9E5sQPY-sxN+WGTSWtvRXGN2FnZC2Vy6LPyynKGLcQ@mail.gmail.com>
 <4675a541-b9dc-476a-a6ff-0247a4403292@xen.org>
 <CAG+AhRX6Y2U6A1v=27KgUeWip115R1o+csEWcyCCooxE2Tac6w@mail.gmail.com>
 <33061994-0b49-4e4e-8698-d6901b9130dc@xen.org>
 <CAG+AhRXPt_e4+OUxbRLhf6W0reH1nmO7cC9-XoFKe_G8BVxt7w@mail.gmail.com>
From: Julien Grall <julien@xen.org>
In-Reply-To: <CAG+AhRXPt_e4+OUxbRLhf6W0reH1nmO7cC9-XoFKe_G8BVxt7w@mail.gmail.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

Hi,

On 08/01/2024 15:18, Carlo Nonato wrote:
>> No. I am saying that that we should not be able to allow changing the
>> colors after the memory has been allocated. To give an example, your
>> current code would allow:
>>
>>     1) Setup the P2M pools or allocate RAM
>>     2) Set the color
>>
>> This would render the coloring configuration moot.
>>
>> Whether we want to allow changing the coloring before hand is a
>> different question and as I wrote earlier on, I don't mind if you want
>> to forbid that.
> 
> At the moment I'm relying on the toolstack in the sense that I know that it
> will set colors right after domain creation and before memory allocation.
> Calling alloc_domheap_pages() without a coloring configuration makes Xen
> crash, so it's mandatory to have the configuration done before any allocation.
> I know that we shouldn't rely on the toolstack this much, but I didn't
> find a better way. Given this assumption, looking for an already existing
> color configuration of a domain is sufficient to avoid what you are saying.
> 
> Is it possible to enforce such a constraint with domctl? > I mean to be sure that this domctl will be called at a precise time.

Yes. You can...

> 
> Thanks.
> 
>>> I don't know what to check that.
>>
>> You can check the size of the P2M pool (d->arch.paging.p2m_total_pages)
>> is still 0. I think for RAM, you can check d->tot_pages == 0.

... reject the call if either of the two fields are not zero.

Cheers,

-- 
Julien Grall


From xen-devel-bounces@lists.xenproject.org Mon Jan 08 16:31:49 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 08 Jan 2024 16:31:49 +0000
Received: from list by lists.xenproject.org with outflank-mailman.663604.1033616 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMsXH-0002J0-Oj; Mon, 08 Jan 2024 16:31:35 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 663604.1033616; Mon, 08 Jan 2024 16:31:35 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMsXH-0002It-M8; Mon, 08 Jan 2024 16:31:35 +0000
Received: by outflank-mailman (input) for mailman id 663604;
 Mon, 08 Jan 2024 16:31:34 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=pvth=IS=minervasys.tech=carlo.nonato@srs-se1.protection.inumbo.net>)
 id 1rMsXG-0002HX-50
 for xen-devel@lists.xenproject.org; Mon, 08 Jan 2024 16:31:34 +0000
Received: from mail-ej1-x629.google.com (mail-ej1-x629.google.com
 [2a00:1450:4864:20::629])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 61ca7a5f-ae43-11ee-98ef-6d05b1d4d9a1;
 Mon, 08 Jan 2024 17:31:32 +0100 (CET)
Received: by mail-ej1-x629.google.com with SMTP id
 a640c23a62f3a-a29058bb2ceso217034366b.0
 for <xen-devel@lists.xenproject.org>; Mon, 08 Jan 2024 08:31:32 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 61ca7a5f-ae43-11ee-98ef-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=minervasys-tech.20230601.gappssmtp.com; s=20230601; t=1704731492; x=1705336292; darn=lists.xenproject.org;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:from:to:cc:subject:date
         :message-id:reply-to;
        bh=QIQW8FKTCleObw0Tk7lwpx5cmSibHJaxWndQxG8unQY=;
        b=Rp8/h2dC7KU79Kp6mSyB6Ozabo1A6KTbBziAbx+b/Ku2dKXMPHQJxv+F/OvVZ6o6ID
         xWsy8iMHmsG1rlamMSBkS2ELHP56eD/E2To8wmqjV8/QCyPXgrD/nrJwYHlJB/n7KTKw
         HSq9Xv3q/A3sREMpoDg1ssj2oseaaowCSnMNespued7Aksfqn9rd1tPq41owtnXhEyxq
         H8tuvm3VKoWXZCANuCF2qmbZ2ctXn620Dy4EzF1KPkrr8RRkwa4jwMAig3drMO1vBxKK
         Gka+pk2lFPknoAQ1oWwBZadnqEK/qKsYoLCK+Hv320t7cC57uIUOLa0KxRuyt3tAoADs
         8tzg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704731492; x=1705336292;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to;
        bh=QIQW8FKTCleObw0Tk7lwpx5cmSibHJaxWndQxG8unQY=;
        b=YnzAMFeztQGLKZ6PQUHruYQOaZOrkCv6VS1P+5sGp/LVvM04jYSa267wkpeCVo7xdf
         bGI2HwJqpmR5/nJELW4DJb9PbCAjb/Ufe6ZlfpnmODtZC/wEbjfOGcNWPD+mIg+j177X
         Pw/4DUv3S1iXiN6k5JDdIdK2R3bMIk+5KS8cbmpEQY9AzC4M8HYlG/CyKq+Tqtfdc7uK
         qBCWgBXJwq+CJoXxj0VCp1l/JDa5JCByChfuYCZiErHDCoeJK5N4hBasU77lI8PSXTjy
         v2b9dvXTJy0JjKA9RsdAwKBrOCXa96Mmwj0Gu1/llZlkPiCYl5W7/Jj67yBOo2W6l1A6
         cqxw==
X-Gm-Message-State: AOJu0YxPsN25V0KPyFEBDc5EFOi4f7WWvMXu83v9NqvcUKQgcIO5WYOZ
	2z/PQ4wHqzmGVCZFsE3VnKAXSI6qRVPR90XM27m43gzqW87izg==
X-Google-Smtp-Source: AGHT+IFaiFtWI4iz5mn7ZFIzhMmwCfouIvWWIZZFsaiPHUPOn/vUmLbumwfR6s5XCEAr4wnJNEgRjHGHNOskLqc67pE=
X-Received: by 2002:a17:906:19c:b0:a2a:2541:3f16 with SMTP id
 28-20020a170906019c00b00a2a25413f16mr1003629ejb.121.1704731491790; Mon, 08
 Jan 2024 08:31:31 -0800 (PST)
MIME-Version: 1.0
References: <20240102095138.17933-1-carlo.nonato@minervasys.tech>
 <20240102095138.17933-5-carlo.nonato@minervasys.tech> <99295edf-6c9c-4d06-ba20-86db67100561@xen.org>
 <CAG+AhRWd9E5sQPY-sxN+WGTSWtvRXGN2FnZC2Vy6LPyynKGLcQ@mail.gmail.com>
 <4675a541-b9dc-476a-a6ff-0247a4403292@xen.org> <CAG+AhRX6Y2U6A1v=27KgUeWip115R1o+csEWcyCCooxE2Tac6w@mail.gmail.com>
 <33061994-0b49-4e4e-8698-d6901b9130dc@xen.org> <CAG+AhRXPt_e4+OUxbRLhf6W0reH1nmO7cC9-XoFKe_G8BVxt7w@mail.gmail.com>
 <e7029592-57e6-4c2a-ab11-f843047ce7f2@xen.org>
In-Reply-To: <e7029592-57e6-4c2a-ab11-f843047ce7f2@xen.org>
From: Carlo Nonato <carlo.nonato@minervasys.tech>
Date: Mon, 8 Jan 2024 17:31:20 +0100
Message-ID: <CAG+AhRV8B4dcoVHXbP2KW5xsB8BQRt4NpPuXsmjc1X149GZRRw@mail.gmail.com>
Subject: Re: [PATCH v5 04/13] xen: extend domctl interface for cache coloring
To: Julien Grall <julien@xen.org>
Cc: xen-devel@lists.xenproject.org, 
	Stefano Stabellini <sstabellini@kernel.org>, Bertrand Marquis <bertrand.marquis@arm.com>, 
	Michal Orzel <michal.orzel@amd.com>, Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>, 
	Andrew Cooper <andrew.cooper3@citrix.com>, George Dunlap <george.dunlap@citrix.com>, 
	Jan Beulich <jbeulich@suse.com>, Wei Liu <wl@xen.org>, 
	Marco Solieri <marco.solieri@minervasys.tech>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

Hi Julien,

On Mon, Jan 8, 2024 at 4:32=E2=80=AFPM Julien Grall <julien@xen.org> wrote:
>
> Hi,
>
> On 08/01/2024 15:18, Carlo Nonato wrote:
> >> No. I am saying that that we should not be able to allow changing the
> >> colors after the memory has been allocated. To give an example, your
> >> current code would allow:
> >>
> >>     1) Setup the P2M pools or allocate RAM
> >>     2) Set the color
> >>
> >> This would render the coloring configuration moot.
> >>
> >> Whether we want to allow changing the coloring before hand is a
> >> different question and as I wrote earlier on, I don't mind if you want
> >> to forbid that.
> >
> > At the moment I'm relying on the toolstack in the sense that I know tha=
t it
> > will set colors right after domain creation and before memory allocatio=
n.
> > Calling alloc_domheap_pages() without a coloring configuration makes Xe=
n
> > crash, so it's mandatory to have the configuration done before any allo=
cation.
> > I know that we shouldn't rely on the toolstack this much, but I didn't
> > find a better way. Given this assumption, looking for an already existi=
ng
> > color configuration of a domain is sufficient to avoid what you are say=
ing.
> >
> > Is it possible to enforce such a constraint with domctl? > I mean to be=
 sure that this domctl will be called at a precise time.
>
> Yes. You can...
>
> >
> > Thanks.
> >
> >>> I don't know what to check that.
> >>
> >> You can check the size of the P2M pool (d->arch.paging.p2m_total_pages=
)
> >> is still 0. I think for RAM, you can check d->tot_pages =3D=3D 0.
>
> ... reject the call if either of the two fields are not zero.

What I'm saying is that Xen would crash before even reaching this point if =
no
colors were provided. Let's say that the toolstack or whatever hypercall us=
er
isn't calling this domctl at all (or not at the right time), then the domai=
n
colored allocator would always return null pages since there are no colors.
We would have a crash and your if (or mine) would be useless.

Let's say that now the domctl is called at the right time (no p2m,
no tot_pages, no colors) then we can set the colors and everything works.
>From this point other calls to this domctl would be skipped because of your
if which is equivalent to mine (checking for colors existence).

Also bringing in checks on p2m would require arch specific code which I was
trying to avoid.

Thanks.

> Cheers,
>
> --
> Julien Grall


From xen-devel-bounces@lists.xenproject.org Mon Jan 08 16:36:36 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 08 Jan 2024 16:36:36 +0000
Received: from list by lists.xenproject.org with outflank-mailman.663608.1033626 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMsc7-0002yh-Eh; Mon, 08 Jan 2024 16:36:35 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 663608.1033626; Mon, 08 Jan 2024 16:36:35 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMsc7-0002ya-C6; Mon, 08 Jan 2024 16:36:35 +0000
Received: by outflank-mailman (input) for mailman id 663608;
 Mon, 08 Jan 2024 16:36:34 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=EZ8K=IS=redhat.com=stefanha@srs-se1.protection.inumbo.net>)
 id 1rMsc6-0002yU-6j
 for xen-devel@lists.xenproject.org; Mon, 08 Jan 2024 16:36:34 +0000
Received: from us-smtp-delivery-124.mimecast.com
 (us-smtp-delivery-124.mimecast.com [170.10.129.124])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 13aa11e7-ae44-11ee-9b0f-b553b5be7939;
 Mon, 08 Jan 2024 17:36:31 +0100 (CET)
Received: from mimecast-mx02.redhat.com (mx-ext.redhat.com [66.187.233.73])
 by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3,
 cipher=TLS_AES_256_GCM_SHA384) id us-mta-281-KwCnbtp0Nqud2EvJwmvQHA-1; Mon,
 08 Jan 2024 11:36:28 -0500
Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.rdu2.redhat.com
 [10.11.54.6])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256)
 (No client certificate requested)
 by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 4AE3829AC022;
 Mon,  8 Jan 2024 16:36:25 +0000 (UTC)
Received: from localhost (unknown [10.39.194.85])
 by smtp.corp.redhat.com (Postfix) with ESMTP id 30CB62166B35;
 Mon,  8 Jan 2024 16:36:21 +0000 (UTC)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 13aa11e7-ae44-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
	s=mimecast20190719; t=1704731790;
	h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
	 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
	 in-reply-to:in-reply-to:references:references;
	bh=RKB+N0/wOsxXAF5xSn+nS3xwiYgd0ai43bmH3YPjDN0=;
	b=iTDiGW+EpStiwlcaDphw8RabgqQUmXV2f7QTAZn7hvVDMYNF1C81J2S8gLtQPFNTOEPqTX
	qgZ/huLS2RHOGBgRMisLAaxBdMIKrC3Qkkf3/CJFwzPW+JXSKQcXt50XAAbD6ZNTsCR4uZ
	W+dmSc+3sVYcjtbnGetSBAt/WOJc4bE=
X-MC-Unique: KwCnbtp0Nqud2EvJwmvQHA-1
Date: Mon, 8 Jan 2024 11:36:19 -0500
From: Stefan Hajnoczi <stefanha@redhat.com>
To: qemu-devel@nongnu.org
Cc: Hanna Reitz <hreitz@redhat.com>, qemu-riscv@nongnu.org,
	Roman Bolshakov <rbolshakov@ddn.com>,
	=?iso-8859-1?Q?C=E9dric?= Le Goater <clg@kaod.org>,
	Elena Ufimtseva <elena.ufimtseva@oracle.com>,
	Eduardo Habkost <eduardo@habkost.net>,
	Thomas Huth <thuth@redhat.com>, qemu-block@nongnu.org,
	Andrey Smirnov <andrew.smirnov@gmail.com>,
	Peter Maydell <peter.maydell@linaro.org>,
	Huacai Chen <chenhuacai@kernel.org>, Fam Zheng <fam@euphon.net>,
	Gerd Hoffmann <kraxel@redhat.com>,
	David Gibson <david@gibson.dropbear.id.au>,
	John Snow <jsnow@redhat.com>, Stafford Horne <shorne@gmail.com>,
	Weiwei Li <liwei1518@gmail.com>,
	Jean-Christophe Dubois <jcd@tribudubois.net>,
	Cameron Esfahani <dirty@apple.com>,
	Alexander Graf <agraf@csgraf.de>,
	David Hildenbrand <david@redhat.com>,
	Juan Quintela <quintela@redhat.com>,
	Nicholas Piggin <npiggin@gmail.com>,
	Max Filippov <jcmvbkbc@gmail.com>,
	Daniel =?iso-8859-1?Q?P=2E_Berrang=E9?= <berrange@redhat.com>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Daniel Henrique Barboza <danielhb413@gmail.com>,
	Markus Armbruster <armbru@redhat.com>, Peter Xu <peterx@redhat.com>,
	Vladimir Sementsov-Ogievskiy <vsementsov@yandex-team.ru>,
	Richard Henderson <richard.henderson@linaro.org>,
	qemu-s390x@nongnu.org, Jiri Slaby <jslaby@suse.cz>,
	Pavel Dovgalyuk <pavel.dovgaluk@ispras.ru>,
	Eric Blake <eblake@redhat.com>,
	Akihiko Odaki <akihiko.odaki@daynix.com>,
	Alex =?iso-8859-1?Q?Benn=E9e?= <alex.bennee@linaro.org>,
	Aleksandar Rikalo <aleksandar.rikalo@syrmia.com>,
	"Michael S. Tsirkin" <mst@redhat.com>,
	Jason Wang <jasowang@redhat.com>,
	Jiaxun Yang <jiaxun.yang@flygoat.com>,
	Sunil Muthuswamy <sunilmut@microsoft.com>,
	Alistair Francis <alistair.francis@wdc.com>,
	Philippe =?iso-8859-1?Q?Mathieu-Daud=E9?= <philmd@linaro.org>,
	Fabiano Rosas <farosas@suse.de>,
	Michael Roth <michael.roth@amd.com>, Paul Durrant <paul@xen.org>,
	Jagannathan Raman <jag.raman@oracle.com>,
	Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Hyman Huang <yong.huang@smartx.com>,
	=?iso-8859-1?Q?Marc-Andr=E9?= Lureau <marcandre.lureau@redhat.com>,
	xen-devel@lists.xenproject.org, Halil Pasic <pasic@linux.ibm.com>,
	Christian Borntraeger <borntraeger@linux.ibm.com>,
	Song Gao <gaosong@loongson.cn>, Kevin Wolf <kwolf@redhat.com>,
	Ilya Leoshkevich <iii@linux.ibm.com>,
	Artyom Tarasenko <atar4qemu@gmail.com>,
	Marcel Apfelbaum <marcel.apfelbaum@gmail.com>,
	Reinoud Zandijk <reinoud@netbsd.org>, qemu-ppc@nongnu.org,
	Marcelo Tosatti <mtosatti@redhat.com>,
	David Woodhouse <dwmw2@infradead.org>,
	Aurelien Jarno <aurelien@aurel32.net>,
	Bin Meng <bin.meng@windriver.com>, qemu-arm@nongnu.org,
	Anthony Perard <anthony.perard@citrix.com>,
	Leonardo Bras <leobras@redhat.com>,
	Hailiang Zhang <zhanghailiang@xfusion.com>,
	Harsh Prateek Bora <harshpb@linux.ibm.com>, kvm@vger.kernel.org,
	Palmer Dabbelt <palmer@dabbelt.com>,
	Eric Farman <farman@linux.ibm.com>,
	BALATON Zoltan <balaton@eik.bme.hu>,
	Liu Zhiwei <zhiwei_liu@linux.alibaba.com>
Subject: Re: [PATCH v3 0/5] Make Big QEMU Lock naming consistent
Message-ID: <20240108163619.GA216787@fedora>
References: <20240102153529.486531-1-stefanha@redhat.com>
MIME-Version: 1.0
Content-Type: multipart/signed; micalg=pgp-sha256;
	protocol="application/pgp-signature"; boundary="yV/dJghpE5D5EHAJ"
Content-Disposition: inline
In-Reply-To: <20240102153529.486531-1-stefanha@redhat.com>
X-Scanned-By: MIMEDefang 3.4.1 on 10.11.54.6


--yV/dJghpE5D5EHAJ
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable

On Tue, Jan 02, 2024 at 10:35:24AM -0500, Stefan Hajnoczi wrote:
> v3:
> - Rebase
> - Define bql_lock() macro on a single line [Akihiko Odaki]
> v2:
> - Rename APIs bql_*() [PeterX]
> - Spell out "Big QEMU Lock (BQL)" in doc comments [PeterX]
> - Rename "iolock" variables in hw/remote/mpqemu-link.c [Harsh]
> - Fix bql_auto_lock() indentation in Patch 2 [Ilya]
> - "with BQL taken" -> "with the BQL taken" [Philippe]
> - "under BQL" -> "under the BQL" [Philippe]
>=20
> The Big QEMU Lock ("BQL") has two other names: "iothread lock" and "QEMU =
global
> mutex". The term "iothread lock" is easily confused with the unrelated --=
object
> iothread (iothread.c).
>=20
> This series updates the code and documentation to consistently use "BQL".=
 This
> makes the code easier to understand.
>=20
> Stefan Hajnoczi (5):
>   system/cpus: rename qemu_mutex_lock_iothread() to bql_lock()
>   qemu/main-loop: rename QEMU_IOTHREAD_LOCK_GUARD to BQL_LOCK_GUARD
>   qemu/main-loop: rename qemu_cond_wait_iothread() to
>     qemu_cond_wait_bql()
>   Replace "iothread lock" with "BQL" in comments
>   Rename "QEMU global mutex" to "BQL" in comments and docs
>=20
>  docs/devel/multi-thread-tcg.rst      |   7 +-
>  docs/devel/qapi-code-gen.rst         |   2 +-
>  docs/devel/replay.rst                |   2 +-
>  docs/devel/reset.rst                 |   2 +-
>  docs/devel/multiple-iothreads.txt    |  14 ++--
>  hw/display/qxl.h                     |   2 +-
>  include/block/aio-wait.h             |   2 +-
>  include/block/blockjob.h             |   6 +-
>  include/exec/cpu-common.h            |   2 +-
>  include/exec/memory.h                |   4 +-
>  include/exec/ramblock.h              |   2 +-
>  include/io/task.h                    |   2 +-
>  include/migration/register.h         |   8 +-
>  include/qemu/coroutine-core.h        |   2 +-
>  include/qemu/coroutine.h             |   2 +-
>  include/qemu/main-loop.h             |  68 ++++++++-------
>  include/qemu/thread.h                |   2 +-
>  target/arm/internals.h               |   4 +-
>  accel/accel-blocker.c                |  10 +--
>  accel/dummy-cpus.c                   |   8 +-
>  accel/hvf/hvf-accel-ops.c            |   4 +-
>  accel/kvm/kvm-accel-ops.c            |   4 +-
>  accel/kvm/kvm-all.c                  |  22 ++---
>  accel/tcg/cpu-exec.c                 |  26 +++---
>  accel/tcg/cputlb.c                   |  20 ++---
>  accel/tcg/tcg-accel-ops-icount.c     |   6 +-
>  accel/tcg/tcg-accel-ops-mttcg.c      |  12 +--
>  accel/tcg/tcg-accel-ops-rr.c         |  18 ++--
>  accel/tcg/tcg-accel-ops.c            |   2 +-
>  accel/tcg/translate-all.c            |   2 +-
>  cpu-common.c                         |   4 +-
>  dump/dump.c                          |   4 +-
>  hw/block/dataplane/virtio-blk.c      |   8 +-
>  hw/block/virtio-blk.c                |   2 +-
>  hw/core/cpu-common.c                 |   6 +-
>  hw/display/virtio-gpu.c              |   2 +-
>  hw/i386/intel_iommu.c                |   6 +-
>  hw/i386/kvm/xen_evtchn.c             |  30 +++----
>  hw/i386/kvm/xen_gnttab.c             |   2 +-
>  hw/i386/kvm/xen_overlay.c            |   2 +-
>  hw/i386/kvm/xen_xenstore.c           |   2 +-
>  hw/intc/arm_gicv3_cpuif.c            |   2 +-
>  hw/intc/s390_flic.c                  |  18 ++--
>  hw/mips/mips_int.c                   |   2 +-
>  hw/misc/edu.c                        |   4 +-
>  hw/misc/imx6_src.c                   |   2 +-
>  hw/misc/imx7_src.c                   |   2 +-
>  hw/net/xen_nic.c                     |   8 +-
>  hw/ppc/pegasos2.c                    |   2 +-
>  hw/ppc/ppc.c                         |   6 +-
>  hw/ppc/spapr.c                       |   2 +-
>  hw/ppc/spapr_events.c                |   2 +-
>  hw/ppc/spapr_rng.c                   |   4 +-
>  hw/ppc/spapr_softmmu.c               |   4 +-
>  hw/remote/mpqemu-link.c              |  22 ++---
>  hw/remote/vfio-user-obj.c            |   2 +-
>  hw/s390x/s390-skeys.c                |   2 +-
>  hw/scsi/virtio-scsi-dataplane.c      |   6 +-
>  migration/block-dirty-bitmap.c       |  14 ++--
>  migration/block.c                    |  38 ++++-----
>  migration/colo.c                     |  62 +++++++-------
>  migration/dirtyrate.c                |  12 +--
>  migration/migration.c                |  54 ++++++------
>  migration/ram.c                      |  16 ++--
>  net/tap.c                            |   2 +-
>  replay/replay-internal.c             |   2 +-
>  semihosting/console.c                |   8 +-
>  stubs/iothread-lock.c                |   6 +-
>  system/cpu-throttle.c                |   6 +-
>  system/cpus.c                        |  55 +++++++------
>  system/dirtylimit.c                  |   4 +-
>  system/memory.c                      |   2 +-
>  system/physmem.c                     |  14 ++--
>  system/runstate.c                    |   2 +-
>  system/watchpoint.c                  |   4 +-
>  target/arm/arm-powerctl.c            |  14 ++--
>  target/arm/helper.c                  |   6 +-
>  target/arm/hvf/hvf.c                 |   8 +-
>  target/arm/kvm.c                     |   8 +-
>  target/arm/ptw.c                     |   6 +-
>  target/arm/tcg/helper-a64.c          |   8 +-
>  target/arm/tcg/m_helper.c            |   6 +-
>  target/arm/tcg/op_helper.c           |  24 +++---
>  target/arm/tcg/psci.c                |   2 +-
>  target/hppa/int_helper.c             |   8 +-
>  target/i386/hvf/hvf.c                |   6 +-
>  target/i386/kvm/hyperv.c             |   4 +-
>  target/i386/kvm/kvm.c                |  28 +++----
>  target/i386/kvm/xen-emu.c            |  16 ++--
>  target/i386/nvmm/nvmm-accel-ops.c    |   6 +-
>  target/i386/nvmm/nvmm-all.c          |  20 ++---
>  target/i386/tcg/sysemu/fpu_helper.c  |   6 +-
>  target/i386/tcg/sysemu/misc_helper.c |   4 +-
>  target/i386/whpx/whpx-accel-ops.c    |   6 +-
>  target/i386/whpx/whpx-all.c          |  24 +++---
>  target/loongarch/csr_helper.c        |   4 +-
>  target/mips/kvm.c                    |   4 +-
>  target/mips/tcg/sysemu/cp0_helper.c  |   4 +-
>  target/openrisc/sys_helper.c         |  16 ++--
>  target/ppc/excp_helper.c             |  14 ++--
>  target/ppc/helper_regs.c             |   2 +-
>  target/ppc/kvm.c                     |   4 +-
>  target/ppc/misc_helper.c             |   8 +-
>  target/ppc/timebase_helper.c         |   8 +-
>  target/riscv/cpu_helper.c            |   4 +-
>  target/s390x/kvm/kvm.c               |   4 +-
>  target/s390x/tcg/misc_helper.c       | 118 +++++++++++++--------------
>  target/sparc/int32_helper.c          |   2 +-
>  target/sparc/int64_helper.c          |   6 +-
>  target/sparc/win_helper.c            |  20 ++---
>  target/xtensa/exc_helper.c           |   8 +-
>  ui/spice-core.c                      |   6 +-
>  util/async.c                         |   2 +-
>  util/main-loop.c                     |   8 +-
>  util/qsp.c                           |   6 +-
>  util/rcu.c                           |  16 ++--
>  audio/coreaudio.m                    |   8 +-
>  memory_ldst.c.inc                    |  18 ++--
>  target/i386/hvf/README.md            |   2 +-
>  ui/cocoa.m                           |  56 ++++++-------
>  120 files changed, 641 insertions(+), 643 deletions(-)
>=20
> --=20
> 2.43.0
>=20

Thanks, applied to my block tree:
https://gitlab.com/stefanha/qemu/commits/block

Stefan

--yV/dJghpE5D5EHAJ
Content-Type: application/pgp-signature; name="signature.asc"

-----BEGIN PGP SIGNATURE-----

iQEzBAEBCAAdFiEEhpWov9P5fNqsNXdanKSrs4Grc8gFAmWcJIMACgkQnKSrs4Gr
c8jzAgf+K9JojAxFS7AKekzLt/hRgAZvp+AQ+YBWFtGLGbQ2QA/PsWuANOgN0oxy
JV18ZtX4ksyA7VsYErxGbs+yWT4jCdJt3+fJL1GIcObmoUJzHkJe7++4w+3h+9jY
ZaGgV8E+LkLgopXXDycYoO8TFXot2TGi6TENVr0Cyh7chB/BS6br0ZKwaabUy6TZ
G/kSFi7Et9BE8mVHzY1/2po7jQJOMnKVY2U/GCvaHVZmvJg2civGxjhufZI6xe4D
nuAneBhS+/U0OajxzLR8NwLWtF1Drw9Nx149i67EBBpwpqklg0X5k3KKbEM6jHN/
sK7AKClhVyC96TpYK3WqNBQJYWapAw==
=sQ9o
-----END PGP SIGNATURE-----

--yV/dJghpE5D5EHAJ--



From xen-devel-bounces@lists.xenproject.org Mon Jan 08 16:37:53 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 08 Jan 2024 16:37:53 +0000
Received: from list by lists.xenproject.org with outflank-mailman.663613.1033646 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMsdK-0003u0-0M; Mon, 08 Jan 2024 16:37:50 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 663613.1033646; Mon, 08 Jan 2024 16:37:49 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMsdJ-0003tt-T4; Mon, 08 Jan 2024 16:37:49 +0000
Received: by outflank-mailman (input) for mailman id 663613;
 Mon, 08 Jan 2024 16:37:49 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=EZ8K=IS=redhat.com=stefanha@srs-se1.protection.inumbo.net>)
 id 1rMsdJ-0003cg-Bw
 for xen-devel@lists.xenproject.org; Mon, 08 Jan 2024 16:37:49 +0000
Received: from us-smtp-delivery-124.mimecast.com
 (us-smtp-delivery-124.mimecast.com [170.10.133.124])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 4119f31c-ae44-11ee-9b0f-b553b5be7939;
 Mon, 08 Jan 2024 17:37:47 +0100 (CET)
Received: from mimecast-mx02.redhat.com (mx-ext.redhat.com [66.187.233.73])
 by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3,
 cipher=TLS_AES_256_GCM_SHA384) id us-mta-668-xwrQBWUfPzqlTw3k0NIoCA-1; Mon,
 08 Jan 2024 11:37:43 -0500
Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.rdu2.redhat.com
 [10.11.54.4])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256)
 (No client certificate requested)
 by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 514A83C025AC;
 Mon,  8 Jan 2024 16:37:41 +0000 (UTC)
Received: from localhost (unknown [10.39.194.85])
 by smtp.corp.redhat.com (Postfix) with ESMTP id 14E8B2026F95;
 Mon,  8 Jan 2024 16:37:40 +0000 (UTC)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 4119f31c-ae44-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
	s=mimecast20190719; t=1704731866;
	h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
	 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=8JyAVituzHKzz/zXpAv4OyXDfgV7BDAfn1K6NqR7fpw=;
	b=gR0J0DJ3wPfFEWY18k72JlBsyAW9W0Sn6sjEIU2DeT69HKIPSPHvWhuR6y3kyVmYgelE4c
	FE7v79Wg/mcHqRKhqOa6H2+tZQ0zBg3bQ7+K7gIfywxulLTEE1caVjB3Qdm2OORBjmPzmg
	HS3y8rS1fs4BvYW1WwhObKD8/ynLK8M=
X-MC-Unique: xwrQBWUfPzqlTw3k0NIoCA-1
From: Stefan Hajnoczi <stefanha@redhat.com>
To: qemu-devel@nongnu.org
Cc: qemu-s390x@nongnu.org,
	Aleksandar Rikalo <aleksandar.rikalo@syrmia.com>,
	qemu-block@nongnu.org,
	Alistair Francis <alistair.francis@wdc.com>,
	Max Filippov <jcmvbkbc@gmail.com>,
	kvm@vger.kernel.org,
	Daniel Henrique Barboza <danielhb413@gmail.com>,
	Jiaxun Yang <jiaxun.yang@flygoat.com>,
	qemu-arm@nongnu.org,
	Jean-Christophe Dubois <jcd@tribudubois.net>,
	Jiri Slaby <jslaby@suse.cz>,
	=?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= <marcandre.lureau@redhat.com>,
	=?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= <philmd@linaro.org>,
	Eric Blake <eblake@redhat.com>,
	Paul Durrant <paul@xen.org>,
	BALATON Zoltan <balaton@eik.bme.hu>,
	Kevin Wolf <kwolf@redhat.com>,
	Pavel Dovgalyuk <pavel.dovgaluk@ispras.ru>,
	=?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= <berrange@redhat.com>,
	Roman Bolshakov <rbolshakov@ddn.com>,
	Reinoud Zandijk <reinoud@netbsd.org>,
	Christian Borntraeger <borntraeger@linux.ibm.com>,
	Gerd Hoffmann <kraxel@redhat.com>,
	Thomas Huth <thuth@redhat.com>,
	Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>,
	xen-devel@lists.xenproject.org,
	Anthony Perard <anthony.perard@citrix.com>,
	Weiwei Li <liwei1518@gmail.com>,
	qemu-ppc@nongnu.org,
	Sunil Muthuswamy <sunilmut@microsoft.com>,
	Halil Pasic <pasic@linux.ibm.com>,
	Song Gao <gaosong@loongson.cn>,
	Aurelien Jarno <aurelien@aurel32.net>,
	=?UTF-8?q?Alex=20Benn=C3=A9e?= <alex.bennee@linaro.org>,
	=?UTF-8?q?C=C3=A9dric=20Le=20Goater?= <clg@kaod.org>,
	Andrey Smirnov <andrew.smirnov@gmail.com>,
	Marcel Apfelbaum <marcel.apfelbaum@gmail.com>,
	Eduardo Habkost <eduardo@habkost.net>,
	"Michael S. Tsirkin" <mst@redhat.com>,
	Marcelo Tosatti <mtosatti@redhat.com>,
	qemu-riscv@nongnu.org,
	Palmer Dabbelt <palmer@dabbelt.com>,
	Alexander Graf <agraf@csgraf.de>,
	Markus Armbruster <armbru@redhat.com>,
	John Snow <jsnow@redhat.com>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Peter Xu <peterx@redhat.com>,
	Stefan Weil <sw@weilnetz.de>,
	Harsh Prateek Bora <harshpb@linux.ibm.com>,
	Hailiang Zhang <zhanghailiang@xfusion.com>,
	Hyman Huang <yong.huang@smartx.com>,
	Michael Roth <michael.roth@amd.com>,
	Fam Zheng <fam@euphon.net>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Vladimir Sementsov-Ogievskiy <vsementsov@yandex-team.ru>,
	David Gibson <david@gibson.dropbear.id.au>,
	Artyom Tarasenko <atar4qemu@gmail.com>,
	Stefan Hajnoczi <stefanha@redhat.com>,
	Stafford Horne <shorne@gmail.com>,
	Liu Zhiwei <zhiwei_liu@linux.alibaba.com>,
	David Woodhouse <dwmw2@infradead.org>,
	Cameron Esfahani <dirty@apple.com>,
	Eric Farman <farman@linux.ibm.com>,
	Jason Wang <jasowang@redhat.com>,
	Nicholas Piggin <npiggin@gmail.com>,
	Ilya Leoshkevich <iii@linux.ibm.com>,
	Peter Maydell <peter.maydell@linaro.org>,
	Richard Henderson <richard.henderson@linaro.org>,
	Hanna Reitz <hreitz@redhat.com>,
	Huacai Chen <chenhuacai@kernel.org>,
	Jagannathan Raman <jag.raman@oracle.com>,
	Elena Ufimtseva <elena.ufimtseva@oracle.com>,
	Bin Meng <bin.meng@windriver.com>,
	Fabiano Rosas <farosas@suse.de>,
	Akihiko Odaki <akihiko.odaki@daynix.com>,
	David Hildenbrand <david@redhat.com>
Subject: [PULL 1/6] iothread: Remove unused Error** argument in aio_context_set_aio_params
Date: Mon,  8 Jan 2024 11:37:30 -0500
Message-ID: <20240108163735.254732-2-stefanha@redhat.com>
In-Reply-To: <20240108163735.254732-1-stefanha@redhat.com>
References: <20240108163735.254732-1-stefanha@redhat.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Scanned-By: MIMEDefang 3.4.1 on 10.11.54.4

From: Philippe Mathieu-Daudé <philmd@linaro.org>

aio_context_set_aio_params() doesn't use its undocumented
Error** argument. Remove it to simplify.

Note this removes a use of "unchecked Error**" in
iothread_set_aio_context_params().

Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Reviewed-by: Markus Armbruster <armbru@redhat.com>
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
Message-ID: <20231120171806.19361-1-philmd@linaro.org>
---
 include/block/aio.h | 3 +--
 iothread.c          | 3 +--
 util/aio-posix.c    | 3 +--
 util/aio-win32.c    | 3 +--
 util/main-loop.c    | 5 +----
 5 files changed, 5 insertions(+), 12 deletions(-)

diff --git a/include/block/aio.h b/include/block/aio.h
index af05512a7d..c802a392e5 100644
--- a/include/block/aio.h
+++ b/include/block/aio.h
@@ -699,8 +699,7 @@ void aio_context_set_poll_params(AioContext *ctx, int64_t max_ns,
  * @max_batch: maximum number of requests in a batch, 0 means that the
  *             engine will use its default
  */
-void aio_context_set_aio_params(AioContext *ctx, int64_t max_batch,
-                                Error **errp);
+void aio_context_set_aio_params(AioContext *ctx, int64_t max_batch);
 
 /**
  * aio_context_set_thread_pool_params:
diff --git a/iothread.c b/iothread.c
index b753286414..6c1fc8c856 100644
--- a/iothread.c
+++ b/iothread.c
@@ -170,8 +170,7 @@ static void iothread_set_aio_context_params(EventLoopBase *base, Error **errp)
     }
 
     aio_context_set_aio_params(iothread->ctx,
-                               iothread->parent_obj.aio_max_batch,
-                               errp);
+                               iothread->parent_obj.aio_max_batch);
 
     aio_context_set_thread_pool_params(iothread->ctx, base->thread_pool_min,
                                        base->thread_pool_max, errp);
diff --git a/util/aio-posix.c b/util/aio-posix.c
index 7f2c99729d..266c9dd35f 100644
--- a/util/aio-posix.c
+++ b/util/aio-posix.c
@@ -777,8 +777,7 @@ void aio_context_set_poll_params(AioContext *ctx, int64_t max_ns,
     aio_notify(ctx);
 }
 
-void aio_context_set_aio_params(AioContext *ctx, int64_t max_batch,
-                                Error **errp)
+void aio_context_set_aio_params(AioContext *ctx, int64_t max_batch)
 {
     /*
      * No thread synchronization here, it doesn't matter if an incorrect value
diff --git a/util/aio-win32.c b/util/aio-win32.c
index 948ef47a4d..d144f9391f 100644
--- a/util/aio-win32.c
+++ b/util/aio-win32.c
@@ -438,7 +438,6 @@ void aio_context_set_poll_params(AioContext *ctx, int64_t max_ns,
     }
 }
 
-void aio_context_set_aio_params(AioContext *ctx, int64_t max_batch,
-                                Error **errp)
+void aio_context_set_aio_params(AioContext *ctx, int64_t max_batch)
 {
 }
diff --git a/util/main-loop.c b/util/main-loop.c
index 797b640c41..63b4cda84a 100644
--- a/util/main-loop.c
+++ b/util/main-loop.c
@@ -192,10 +192,7 @@ static void main_loop_update_params(EventLoopBase *base, Error **errp)
         return;
     }
 
-    aio_context_set_aio_params(qemu_aio_context, base->aio_max_batch, errp);
-    if (*errp) {
-        return;
-    }
+    aio_context_set_aio_params(qemu_aio_context, base->aio_max_batch);
 
     aio_context_set_thread_pool_params(qemu_aio_context, base->thread_pool_min,
                                        base->thread_pool_max, errp);
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Mon Jan 08 16:37:53 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 08 Jan 2024 16:37:53 +0000
Received: from list by lists.xenproject.org with outflank-mailman.663612.1033637 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMsdI-0003fY-ON; Mon, 08 Jan 2024 16:37:48 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 663612.1033637; Mon, 08 Jan 2024 16:37:48 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMsdI-0003fR-Lk; Mon, 08 Jan 2024 16:37:48 +0000
Received: by outflank-mailman (input) for mailman id 663612;
 Mon, 08 Jan 2024 16:37:46 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=EZ8K=IS=redhat.com=stefanha@srs-se1.protection.inumbo.net>)
 id 1rMsdG-0003cg-HJ
 for xen-devel@lists.xenproject.org; Mon, 08 Jan 2024 16:37:46 +0000
Received: from us-smtp-delivery-124.mimecast.com
 (us-smtp-delivery-124.mimecast.com [170.10.133.124])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 3f1bfe12-ae44-11ee-9b0f-b553b5be7939;
 Mon, 08 Jan 2024 17:37:44 +0100 (CET)
Received: from mimecast-mx02.redhat.com (mx-ext.redhat.com [66.187.233.73])
 by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3,
 cipher=TLS_AES_256_GCM_SHA384) id us-mta-642-S-QDLwRgPya2u5KWj3De2w-1; Mon,
 08 Jan 2024 11:37:41 -0500
Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.rdu2.redhat.com
 [10.11.54.7])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256)
 (No client certificate requested)
 by mimecast-mx02.redhat.com (Postfix) with ESMTPS id A2C281C06916;
 Mon,  8 Jan 2024 16:37:38 +0000 (UTC)
Received: from localhost (unknown [10.39.194.85])
 by smtp.corp.redhat.com (Postfix) with ESMTP id F3AF01C060AF;
 Mon,  8 Jan 2024 16:37:36 +0000 (UTC)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 3f1bfe12-ae44-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
	s=mimecast20190719; t=1704731863;
	h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
	 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
	 content-transfer-encoding:content-transfer-encoding;
	bh=rjva5D5HUZRLSUeQ7TC2x2FhyuCk/YO2hvk35Ore6vo=;
	b=emMkfWRiCeoE26kf/1EbwD5l6tzShNxBnFclGPewePBsTOxuW2XROB5i7qqc1fBEJzipD/
	aJ3hevD3KIjsCTohn2+Kf9YAVj+qJ4wDTJZjQicY1zh0R2NbWnv/J9FnXEvxpNlJ0lz1WG
	0h3D7/meBw/oHP+jXEVhQMsg/8y5/PU=
X-MC-Unique: S-QDLwRgPya2u5KWj3De2w-1
From: Stefan Hajnoczi <stefanha@redhat.com>
To: qemu-devel@nongnu.org
Cc: qemu-s390x@nongnu.org,
	Aleksandar Rikalo <aleksandar.rikalo@syrmia.com>,
	qemu-block@nongnu.org,
	Alistair Francis <alistair.francis@wdc.com>,
	Max Filippov <jcmvbkbc@gmail.com>,
	kvm@vger.kernel.org,
	Daniel Henrique Barboza <danielhb413@gmail.com>,
	Jiaxun Yang <jiaxun.yang@flygoat.com>,
	qemu-arm@nongnu.org,
	Jean-Christophe Dubois <jcd@tribudubois.net>,
	Jiri Slaby <jslaby@suse.cz>,
	=?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= <marcandre.lureau@redhat.com>,
	=?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= <philmd@linaro.org>,
	Eric Blake <eblake@redhat.com>,
	Paul Durrant <paul@xen.org>,
	BALATON Zoltan <balaton@eik.bme.hu>,
	Kevin Wolf <kwolf@redhat.com>,
	Pavel Dovgalyuk <pavel.dovgaluk@ispras.ru>,
	=?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= <berrange@redhat.com>,
	Roman Bolshakov <rbolshakov@ddn.com>,
	Reinoud Zandijk <reinoud@netbsd.org>,
	Christian Borntraeger <borntraeger@linux.ibm.com>,
	Gerd Hoffmann <kraxel@redhat.com>,
	Thomas Huth <thuth@redhat.com>,
	Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>,
	xen-devel@lists.xenproject.org,
	Anthony Perard <anthony.perard@citrix.com>,
	Weiwei Li <liwei1518@gmail.com>,
	qemu-ppc@nongnu.org,
	Sunil Muthuswamy <sunilmut@microsoft.com>,
	Halil Pasic <pasic@linux.ibm.com>,
	Song Gao <gaosong@loongson.cn>,
	Aurelien Jarno <aurelien@aurel32.net>,
	=?UTF-8?q?Alex=20Benn=C3=A9e?= <alex.bennee@linaro.org>,
	=?UTF-8?q?C=C3=A9dric=20Le=20Goater?= <clg@kaod.org>,
	Andrey Smirnov <andrew.smirnov@gmail.com>,
	Marcel Apfelbaum <marcel.apfelbaum@gmail.com>,
	Eduardo Habkost <eduardo@habkost.net>,
	"Michael S. Tsirkin" <mst@redhat.com>,
	Marcelo Tosatti <mtosatti@redhat.com>,
	qemu-riscv@nongnu.org,
	Palmer Dabbelt <palmer@dabbelt.com>,
	Alexander Graf <agraf@csgraf.de>,
	Markus Armbruster <armbru@redhat.com>,
	John Snow <jsnow@redhat.com>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Peter Xu <peterx@redhat.com>,
	Stefan Weil <sw@weilnetz.de>,
	Harsh Prateek Bora <harshpb@linux.ibm.com>,
	Hailiang Zhang <zhanghailiang@xfusion.com>,
	Hyman Huang <yong.huang@smartx.com>,
	Michael Roth <michael.roth@amd.com>,
	Fam Zheng <fam@euphon.net>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Vladimir Sementsov-Ogievskiy <vsementsov@yandex-team.ru>,
	David Gibson <david@gibson.dropbear.id.au>,
	Artyom Tarasenko <atar4qemu@gmail.com>,
	Stefan Hajnoczi <stefanha@redhat.com>,
	Stafford Horne <shorne@gmail.com>,
	Liu Zhiwei <zhiwei_liu@linux.alibaba.com>,
	David Woodhouse <dwmw2@infradead.org>,
	Cameron Esfahani <dirty@apple.com>,
	Eric Farman <farman@linux.ibm.com>,
	Jason Wang <jasowang@redhat.com>,
	Nicholas Piggin <npiggin@gmail.com>,
	Ilya Leoshkevich <iii@linux.ibm.com>,
	Peter Maydell <peter.maydell@linaro.org>,
	Richard Henderson <richard.henderson@linaro.org>,
	Hanna Reitz <hreitz@redhat.com>,
	Huacai Chen <chenhuacai@kernel.org>,
	Jagannathan Raman <jag.raman@oracle.com>,
	Elena Ufimtseva <elena.ufimtseva@oracle.com>,
	Bin Meng <bin.meng@windriver.com>,
	Fabiano Rosas <farosas@suse.de>,
	Akihiko Odaki <akihiko.odaki@daynix.com>,
	David Hildenbrand <david@redhat.com>
Subject: [PULL 0/6] Block patches
Date: Mon,  8 Jan 2024 11:37:29 -0500
Message-ID: <20240108163735.254732-1-stefanha@redhat.com>
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 8bit
X-Scanned-By: MIMEDefang 3.4.1 on 10.11.54.7

The following changes since commit ffd454c67e38cc6df792733ebc5d967eee28ac0d:

  Merge tag 'pull-vfio-20240107' of https://github.com/legoater/qemu into staging (2024-01-08 10:28:42 +0000)

are available in the Git repository at:

  https://gitlab.com/stefanha/qemu.git tags/block-pull-request

for you to fetch changes up to 0b2675c473f68f13bc5ca1dd1c43ce421542e7b8:

  Rename "QEMU global mutex" to "BQL" in comments and docs (2024-01-08 10:45:43 -0500)

----------------------------------------------------------------
Pull request

----------------------------------------------------------------

Philippe Mathieu-Daudé (1):
  iothread: Remove unused Error** argument in aio_context_set_aio_params

Stefan Hajnoczi (5):
  system/cpus: rename qemu_mutex_lock_iothread() to bql_lock()
  qemu/main-loop: rename QEMU_IOTHREAD_LOCK_GUARD to BQL_LOCK_GUARD
  qemu/main-loop: rename qemu_cond_wait_iothread() to
    qemu_cond_wait_bql()
  Replace "iothread lock" with "BQL" in comments
  Rename "QEMU global mutex" to "BQL" in comments and docs

 docs/devel/multi-thread-tcg.rst      |   7 +-
 docs/devel/qapi-code-gen.rst         |   2 +-
 docs/devel/replay.rst                |   2 +-
 docs/devel/reset.rst                 |   2 +-
 docs/devel/multiple-iothreads.txt    |  14 ++--
 hw/display/qxl.h                     |   2 +-
 include/block/aio-wait.h             |   2 +-
 include/block/aio.h                  |   3 +-
 include/block/blockjob.h             |   6 +-
 include/exec/cpu-common.h            |   2 +-
 include/exec/memory.h                |   4 +-
 include/exec/ramblock.h              |   2 +-
 include/io/task.h                    |   2 +-
 include/migration/register.h         |   8 +-
 include/qemu/coroutine-core.h        |   2 +-
 include/qemu/coroutine.h             |   2 +-
 include/qemu/main-loop.h             |  68 ++++++++-------
 include/qemu/thread.h                |   2 +-
 target/arm/internals.h               |   4 +-
 accel/accel-blocker.c                |  10 +--
 accel/dummy-cpus.c                   |   8 +-
 accel/hvf/hvf-accel-ops.c            |   4 +-
 accel/kvm/kvm-accel-ops.c            |   4 +-
 accel/kvm/kvm-all.c                  |  22 ++---
 accel/tcg/cpu-exec.c                 |  26 +++---
 accel/tcg/cputlb.c                   |  20 ++---
 accel/tcg/tcg-accel-ops-icount.c     |   6 +-
 accel/tcg/tcg-accel-ops-mttcg.c      |  12 +--
 accel/tcg/tcg-accel-ops-rr.c         |  18 ++--
 accel/tcg/tcg-accel-ops.c            |   2 +-
 accel/tcg/translate-all.c            |   2 +-
 cpu-common.c                         |   4 +-
 dump/dump.c                          |   4 +-
 hw/block/dataplane/virtio-blk.c      |   8 +-
 hw/block/virtio-blk.c                |   2 +-
 hw/core/cpu-common.c                 |   6 +-
 hw/display/virtio-gpu.c              |   2 +-
 hw/i386/intel_iommu.c                |   6 +-
 hw/i386/kvm/xen_evtchn.c             |  30 +++----
 hw/i386/kvm/xen_gnttab.c             |   2 +-
 hw/i386/kvm/xen_overlay.c            |   2 +-
 hw/i386/kvm/xen_xenstore.c           |   2 +-
 hw/intc/arm_gicv3_cpuif.c            |   2 +-
 hw/intc/s390_flic.c                  |  18 ++--
 hw/mips/mips_int.c                   |   2 +-
 hw/misc/edu.c                        |   4 +-
 hw/misc/imx6_src.c                   |   2 +-
 hw/misc/imx7_src.c                   |   2 +-
 hw/net/xen_nic.c                     |   8 +-
 hw/ppc/pegasos2.c                    |   2 +-
 hw/ppc/ppc.c                         |   6 +-
 hw/ppc/spapr.c                       |   2 +-
 hw/ppc/spapr_events.c                |   2 +-
 hw/ppc/spapr_rng.c                   |   4 +-
 hw/ppc/spapr_softmmu.c               |   4 +-
 hw/remote/mpqemu-link.c              |  22 ++---
 hw/remote/vfio-user-obj.c            |   2 +-
 hw/s390x/s390-skeys.c                |   2 +-
 hw/scsi/virtio-scsi-dataplane.c      |   6 +-
 iothread.c                           |   3 +-
 migration/block-dirty-bitmap.c       |  14 ++--
 migration/block.c                    |  38 ++++-----
 migration/colo.c                     |  62 +++++++-------
 migration/dirtyrate.c                |  12 +--
 migration/migration.c                |  54 ++++++------
 migration/ram.c                      |  16 ++--
 net/tap.c                            |   2 +-
 replay/replay-internal.c             |   2 +-
 semihosting/console.c                |   8 +-
 stubs/iothread-lock.c                |   6 +-
 system/cpu-throttle.c                |   6 +-
 system/cpus.c                        |  55 +++++++------
 system/dirtylimit.c                  |   4 +-
 system/memory.c                      |   2 +-
 system/physmem.c                     |  14 ++--
 system/runstate.c                    |   2 +-
 system/watchpoint.c                  |   4 +-
 target/arm/arm-powerctl.c            |  14 ++--
 target/arm/helper.c                  |   6 +-
 target/arm/hvf/hvf.c                 |   8 +-
 target/arm/kvm.c                     |   8 +-
 target/arm/ptw.c                     |   6 +-
 target/arm/tcg/helper-a64.c          |   8 +-
 target/arm/tcg/m_helper.c            |   6 +-
 target/arm/tcg/op_helper.c           |  24 +++---
 target/arm/tcg/psci.c                |   2 +-
 target/hppa/int_helper.c             |   8 +-
 target/i386/hvf/hvf.c                |   6 +-
 target/i386/kvm/hyperv.c             |   4 +-
 target/i386/kvm/kvm.c                |  28 +++----
 target/i386/kvm/xen-emu.c            |  16 ++--
 target/i386/nvmm/nvmm-accel-ops.c    |   6 +-
 target/i386/nvmm/nvmm-all.c          |  20 ++---
 target/i386/tcg/sysemu/fpu_helper.c  |   6 +-
 target/i386/tcg/sysemu/misc_helper.c |   4 +-
 target/i386/whpx/whpx-accel-ops.c    |   6 +-
 target/i386/whpx/whpx-all.c          |  24 +++---
 target/loongarch/tcg/csr_helper.c    |   4 +-
 target/mips/kvm.c                    |   4 +-
 target/mips/tcg/sysemu/cp0_helper.c  |   4 +-
 target/openrisc/sys_helper.c         |  16 ++--
 target/ppc/excp_helper.c             |  14 ++--
 target/ppc/helper_regs.c             |   2 +-
 target/ppc/kvm.c                     |   4 +-
 target/ppc/misc_helper.c             |   8 +-
 target/ppc/timebase_helper.c         |   8 +-
 target/riscv/cpu_helper.c            |   4 +-
 target/s390x/kvm/kvm.c               |   4 +-
 target/s390x/tcg/misc_helper.c       | 118 +++++++++++++--------------
 target/sparc/int32_helper.c          |   2 +-
 target/sparc/int64_helper.c          |   6 +-
 target/sparc/win_helper.c            |  20 ++---
 target/xtensa/exc_helper.c           |   8 +-
 ui/spice-core.c                      |   6 +-
 util/aio-posix.c                     |   3 +-
 util/aio-win32.c                     |   3 +-
 util/async.c                         |   2 +-
 util/main-loop.c                     |  13 ++-
 util/qsp.c                           |   6 +-
 util/rcu.c                           |  16 ++--
 audio/coreaudio.m                    |   8 +-
 memory_ldst.c.inc                    |  18 ++--
 target/i386/hvf/README.md            |   2 +-
 ui/cocoa.m                           |  56 ++++++-------
 124 files changed, 646 insertions(+), 655 deletions(-)

-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Mon Jan 08 16:37:59 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 08 Jan 2024 16:37:59 +0000
Received: from list by lists.xenproject.org with outflank-mailman.663614.1033657 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMsdT-0004K6-GR; Mon, 08 Jan 2024 16:37:59 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 663614.1033657; Mon, 08 Jan 2024 16:37:59 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMsdT-0004Jt-Ba; Mon, 08 Jan 2024 16:37:59 +0000
Received: by outflank-mailman (input) for mailman id 663614;
 Mon, 08 Jan 2024 16:37:57 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=EZ8K=IS=redhat.com=stefanha@srs-se1.protection.inumbo.net>)
 id 1rMsdR-0003cg-8P
 for xen-devel@lists.xenproject.org; Mon, 08 Jan 2024 16:37:57 +0000
Received: from us-smtp-delivery-124.mimecast.com
 (us-smtp-delivery-124.mimecast.com [170.10.133.124])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 44bb46f8-ae44-11ee-9b0f-b553b5be7939;
 Mon, 08 Jan 2024 17:37:54 +0100 (CET)
Received: from mimecast-mx02.redhat.com (mx-ext.redhat.com [66.187.233.73])
 by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3,
 cipher=TLS_AES_256_GCM_SHA384) id us-mta-462-niZduItePIOvMr0BEpsIzw-1; Mon,
 08 Jan 2024 11:37:47 -0500
Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.rdu2.redhat.com
 [10.11.54.7])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256)
 (No client certificate requested)
 by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 393111C0690B;
 Mon,  8 Jan 2024 16:37:45 +0000 (UTC)
Received: from localhost (unknown [10.39.194.85])
 by smtp.corp.redhat.com (Postfix) with ESMTP id EBF511C060AF;
 Mon,  8 Jan 2024 16:37:42 +0000 (UTC)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 44bb46f8-ae44-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
	s=mimecast20190719; t=1704731872;
	h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
	 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=opoP7uxdS/qgy3LGNWkvHDYOBSZGmIG9rtliHv9yc2w=;
	b=KjYbgx0fY8QiCBmMgMcr3mrHf4xOyJNsGe5QIIDUwRTUbUPDirgbsnwtFUj6lEhdGXWUk4
	g/Nv5QSnFug8ffSQXCHEguracBFCKH2f7FvF6ZKVJD9BYJtazG7uu7ccPKBjiUNpU1KizU
	e5f6G0ZAU5yxEcFDWBxOUcYK+IS6Ca8=
X-MC-Unique: niZduItePIOvMr0BEpsIzw-1
From: Stefan Hajnoczi <stefanha@redhat.com>
To: qemu-devel@nongnu.org
Cc: qemu-s390x@nongnu.org,
	Aleksandar Rikalo <aleksandar.rikalo@syrmia.com>,
	qemu-block@nongnu.org,
	Alistair Francis <alistair.francis@wdc.com>,
	Max Filippov <jcmvbkbc@gmail.com>,
	kvm@vger.kernel.org,
	Daniel Henrique Barboza <danielhb413@gmail.com>,
	Jiaxun Yang <jiaxun.yang@flygoat.com>,
	qemu-arm@nongnu.org,
	Jean-Christophe Dubois <jcd@tribudubois.net>,
	Jiri Slaby <jslaby@suse.cz>,
	=?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= <marcandre.lureau@redhat.com>,
	=?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= <philmd@linaro.org>,
	Eric Blake <eblake@redhat.com>,
	Paul Durrant <paul@xen.org>,
	BALATON Zoltan <balaton@eik.bme.hu>,
	Kevin Wolf <kwolf@redhat.com>,
	Pavel Dovgalyuk <pavel.dovgaluk@ispras.ru>,
	=?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= <berrange@redhat.com>,
	Roman Bolshakov <rbolshakov@ddn.com>,
	Reinoud Zandijk <reinoud@netbsd.org>,
	Christian Borntraeger <borntraeger@linux.ibm.com>,
	Gerd Hoffmann <kraxel@redhat.com>,
	Thomas Huth <thuth@redhat.com>,
	Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>,
	xen-devel@lists.xenproject.org,
	Anthony Perard <anthony.perard@citrix.com>,
	Weiwei Li <liwei1518@gmail.com>,
	qemu-ppc@nongnu.org,
	Sunil Muthuswamy <sunilmut@microsoft.com>,
	Halil Pasic <pasic@linux.ibm.com>,
	Song Gao <gaosong@loongson.cn>,
	Aurelien Jarno <aurelien@aurel32.net>,
	=?UTF-8?q?Alex=20Benn=C3=A9e?= <alex.bennee@linaro.org>,
	=?UTF-8?q?C=C3=A9dric=20Le=20Goater?= <clg@kaod.org>,
	Andrey Smirnov <andrew.smirnov@gmail.com>,
	Marcel Apfelbaum <marcel.apfelbaum@gmail.com>,
	Eduardo Habkost <eduardo@habkost.net>,
	"Michael S. Tsirkin" <mst@redhat.com>,
	Marcelo Tosatti <mtosatti@redhat.com>,
	qemu-riscv@nongnu.org,
	Palmer Dabbelt <palmer@dabbelt.com>,
	Alexander Graf <agraf@csgraf.de>,
	Markus Armbruster <armbru@redhat.com>,
	John Snow <jsnow@redhat.com>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Peter Xu <peterx@redhat.com>,
	Stefan Weil <sw@weilnetz.de>,
	Harsh Prateek Bora <harshpb@linux.ibm.com>,
	Hailiang Zhang <zhanghailiang@xfusion.com>,
	Hyman Huang <yong.huang@smartx.com>,
	Michael Roth <michael.roth@amd.com>,
	Fam Zheng <fam@euphon.net>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Vladimir Sementsov-Ogievskiy <vsementsov@yandex-team.ru>,
	David Gibson <david@gibson.dropbear.id.au>,
	Artyom Tarasenko <atar4qemu@gmail.com>,
	Stefan Hajnoczi <stefanha@redhat.com>,
	Stafford Horne <shorne@gmail.com>,
	Liu Zhiwei <zhiwei_liu@linux.alibaba.com>,
	David Woodhouse <dwmw2@infradead.org>,
	Cameron Esfahani <dirty@apple.com>,
	Eric Farman <farman@linux.ibm.com>,
	Jason Wang <jasowang@redhat.com>,
	Nicholas Piggin <npiggin@gmail.com>,
	Ilya Leoshkevich <iii@linux.ibm.com>,
	Peter Maydell <peter.maydell@linaro.org>,
	Richard Henderson <richard.henderson@linaro.org>,
	Hanna Reitz <hreitz@redhat.com>,
	Huacai Chen <chenhuacai@kernel.org>,
	Jagannathan Raman <jag.raman@oracle.com>,
	Elena Ufimtseva <elena.ufimtseva@oracle.com>,
	Bin Meng <bin.meng@windriver.com>,
	Fabiano Rosas <farosas@suse.de>,
	Akihiko Odaki <akihiko.odaki@daynix.com>,
	David Hildenbrand <david@redhat.com>,
	David Woodhouse <dwmw@amazon.co.uk>
Subject: [PULL 2/6] system/cpus: rename qemu_mutex_lock_iothread() to bql_lock()
Date: Mon,  8 Jan 2024 11:37:31 -0500
Message-ID: <20240108163735.254732-3-stefanha@redhat.com>
In-Reply-To: <20240108163735.254732-1-stefanha@redhat.com>
References: <20240108163735.254732-1-stefanha@redhat.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Scanned-By: MIMEDefang 3.4.1 on 10.11.54.7

The Big QEMU Lock (BQL) has many names and they are confusing. The
actual QemuMutex variable is called qemu_global_mutex but it's commonly
referred to as the BQL in discussions and some code comments. The
locking APIs, however, are called qemu_mutex_lock_iothread() and
qemu_mutex_unlock_iothread().

The "iothread" name is historic and comes from when the main thread was
split into into KVM vcpu threads and the "iothread" (now called the main
loop thread). I have contributed to the confusion myself by introducing
a separate --object iothread, a separate concept unrelated to the BQL.

The "iothread" name is no longer appropriate for the BQL. Rename the
locking APIs to:
- void bql_lock(void)
- void bql_unlock(void)
- bool bql_locked(void)

There are more APIs with "iothread" in their names. Subsequent patches
will rename them. There are also comments and documentation that will be
updated in later patches.

Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
Reviewed-by: Paul Durrant <paul@xen.org>
Acked-by: Fabiano Rosas <farosas@suse.de>
Acked-by: David Woodhouse <dwmw@amazon.co.uk>
Reviewed-by: Cédric Le Goater <clg@kaod.org>
Acked-by: Peter Xu <peterx@redhat.com>
Acked-by: Eric Farman <farman@linux.ibm.com>
Reviewed-by: Harsh Prateek Bora <harshpb@linux.ibm.com>
Acked-by: Hyman Huang <yong.huang@smartx.com>
Reviewed-by: Akihiko Odaki <akihiko.odaki@daynix.com>
Message-id: 20240102153529.486531-2-stefanha@redhat.com
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
---
 include/block/aio-wait.h             |   2 +-
 include/qemu/main-loop.h             |  39 +++++----
 include/qemu/thread.h                |   2 +-
 accel/accel-blocker.c                |  10 +--
 accel/dummy-cpus.c                   |   8 +-
 accel/hvf/hvf-accel-ops.c            |   4 +-
 accel/kvm/kvm-accel-ops.c            |   4 +-
 accel/kvm/kvm-all.c                  |  22 ++---
 accel/tcg/cpu-exec.c                 |  26 +++---
 accel/tcg/cputlb.c                   |  16 ++--
 accel/tcg/tcg-accel-ops-icount.c     |   4 +-
 accel/tcg/tcg-accel-ops-mttcg.c      |  12 +--
 accel/tcg/tcg-accel-ops-rr.c         |  14 ++--
 accel/tcg/tcg-accel-ops.c            |   2 +-
 accel/tcg/translate-all.c            |   2 +-
 cpu-common.c                         |   4 +-
 dump/dump.c                          |   4 +-
 hw/core/cpu-common.c                 |   6 +-
 hw/i386/intel_iommu.c                |   6 +-
 hw/i386/kvm/xen_evtchn.c             |  16 ++--
 hw/i386/kvm/xen_overlay.c            |   2 +-
 hw/i386/kvm/xen_xenstore.c           |   2 +-
 hw/intc/arm_gicv3_cpuif.c            |   2 +-
 hw/intc/s390_flic.c                  |  18 ++--
 hw/misc/edu.c                        |   4 +-
 hw/misc/imx6_src.c                   |   2 +-
 hw/misc/imx7_src.c                   |   2 +-
 hw/net/xen_nic.c                     |   8 +-
 hw/ppc/pegasos2.c                    |   2 +-
 hw/ppc/ppc.c                         |   4 +-
 hw/ppc/spapr.c                       |   2 +-
 hw/ppc/spapr_rng.c                   |   4 +-
 hw/ppc/spapr_softmmu.c               |   4 +-
 hw/remote/mpqemu-link.c              |  20 ++---
 hw/remote/vfio-user-obj.c            |   2 +-
 hw/s390x/s390-skeys.c                |   2 +-
 migration/block-dirty-bitmap.c       |   4 +-
 migration/block.c                    |  16 ++--
 migration/colo.c                     |  60 +++++++-------
 migration/dirtyrate.c                |  12 +--
 migration/migration.c                |  52 ++++++------
 migration/ram.c                      |  12 +--
 replay/replay-internal.c             |   2 +-
 semihosting/console.c                |   8 +-
 stubs/iothread-lock.c                |   6 +-
 system/cpu-throttle.c                |   4 +-
 system/cpus.c                        |  51 ++++++------
 system/dirtylimit.c                  |   4 +-
 system/memory.c                      |   2 +-
 system/physmem.c                     |   8 +-
 system/runstate.c                    |   2 +-
 system/watchpoint.c                  |   4 +-
 target/arm/arm-powerctl.c            |  14 ++--
 target/arm/helper.c                  |   4 +-
 target/arm/hvf/hvf.c                 |   8 +-
 target/arm/kvm.c                     |   8 +-
 target/arm/ptw.c                     |   6 +-
 target/arm/tcg/helper-a64.c          |   8 +-
 target/arm/tcg/m_helper.c            |   6 +-
 target/arm/tcg/op_helper.c           |  24 +++---
 target/arm/tcg/psci.c                |   2 +-
 target/hppa/int_helper.c             |   8 +-
 target/i386/hvf/hvf.c                |   6 +-
 target/i386/kvm/hyperv.c             |   4 +-
 target/i386/kvm/kvm.c                |  28 +++----
 target/i386/kvm/xen-emu.c            |  14 ++--
 target/i386/nvmm/nvmm-accel-ops.c    |   4 +-
 target/i386/nvmm/nvmm-all.c          |  20 ++---
 target/i386/tcg/sysemu/fpu_helper.c  |   6 +-
 target/i386/tcg/sysemu/misc_helper.c |   4 +-
 target/i386/whpx/whpx-accel-ops.c    |   4 +-
 target/i386/whpx/whpx-all.c          |  24 +++---
 target/loongarch/tcg/csr_helper.c    |   4 +-
 target/mips/kvm.c                    |   4 +-
 target/mips/tcg/sysemu/cp0_helper.c  |   4 +-
 target/openrisc/sys_helper.c         |  16 ++--
 target/ppc/excp_helper.c             |  12 +--
 target/ppc/kvm.c                     |   4 +-
 target/ppc/misc_helper.c             |   8 +-
 target/ppc/timebase_helper.c         |   8 +-
 target/s390x/kvm/kvm.c               |   4 +-
 target/s390x/tcg/misc_helper.c       | 118 +++++++++++++--------------
 target/sparc/int32_helper.c          |   2 +-
 target/sparc/int64_helper.c          |   6 +-
 target/sparc/win_helper.c            |  20 ++---
 target/xtensa/exc_helper.c           |   8 +-
 ui/spice-core.c                      |   4 +-
 util/async.c                         |   2 +-
 util/main-loop.c                     |   8 +-
 util/qsp.c                           |   6 +-
 util/rcu.c                           |  14 ++--
 audio/coreaudio.m                    |   4 +-
 memory_ldst.c.inc                    |  18 ++--
 target/i386/hvf/README.md            |   2 +-
 ui/cocoa.m                           |  50 ++++++------
 95 files changed, 529 insertions(+), 529 deletions(-)

diff --git a/include/block/aio-wait.h b/include/block/aio-wait.h
index 157f105916..cf5e8bde1c 100644
--- a/include/block/aio-wait.h
+++ b/include/block/aio-wait.h
@@ -143,7 +143,7 @@ static inline bool in_aio_context_home_thread(AioContext *ctx)
     }
 
     if (ctx == qemu_get_aio_context()) {
-        return qemu_mutex_iothread_locked();
+        return bql_locked();
     } else {
         return false;
     }
diff --git a/include/qemu/main-loop.h b/include/qemu/main-loop.h
index 68e70e61aa..72ebc0cb3a 100644
--- a/include/qemu/main-loop.h
+++ b/include/qemu/main-loop.h
@@ -248,19 +248,19 @@ GSource *iohandler_get_g_source(void);
 AioContext *iohandler_get_aio_context(void);
 
 /**
- * qemu_mutex_iothread_locked: Return lock status of the main loop mutex.
+ * bql_locked: Return lock status of the Big QEMU Lock (BQL)
  *
- * The main loop mutex is the coarsest lock in QEMU, and as such it
+ * The Big QEMU Lock (BQL) is the coarsest lock in QEMU, and as such it
  * must always be taken outside other locks.  This function helps
  * functions take different paths depending on whether the current
- * thread is running within the main loop mutex.
+ * thread is running within the BQL.
  *
  * This function should never be used in the block layer, because
  * unit tests, block layer tools and qemu-storage-daemon do not
  * have a BQL.
  * Please instead refer to qemu_in_main_thread().
  */
-bool qemu_mutex_iothread_locked(void);
+bool bql_locked(void);
 
 /**
  * qemu_in_main_thread: return whether it's possible to safely access
@@ -312,58 +312,57 @@ bool qemu_in_main_thread(void);
     } while (0)
 
 /**
- * qemu_mutex_lock_iothread: Lock the main loop mutex.
+ * bql_lock: Lock the Big QEMU Lock (BQL).
  *
- * This function locks the main loop mutex.  The mutex is taken by
+ * This function locks the Big QEMU Lock (BQL).  The lock is taken by
  * main() in vl.c and always taken except while waiting on
- * external events (such as with select).  The mutex should be taken
+ * external events (such as with select).  The lock should be taken
  * by threads other than the main loop thread when calling
  * qemu_bh_new(), qemu_set_fd_handler() and basically all other
  * functions documented in this file.
  *
- * NOTE: tools currently are single-threaded and qemu_mutex_lock_iothread
+ * NOTE: tools currently are single-threaded and bql_lock
  * is a no-op there.
  */
-#define qemu_mutex_lock_iothread()                      \
-    qemu_mutex_lock_iothread_impl(__FILE__, __LINE__)
-void qemu_mutex_lock_iothread_impl(const char *file, int line);
+#define bql_lock() bql_lock_impl(__FILE__, __LINE__)
+void bql_lock_impl(const char *file, int line);
 
 /**
- * qemu_mutex_unlock_iothread: Unlock the main loop mutex.
+ * bql_unlock: Unlock the Big QEMU Lock (BQL).
  *
- * This function unlocks the main loop mutex.  The mutex is taken by
+ * This function unlocks the Big QEMU Lock.  The lock is taken by
  * main() in vl.c and always taken except while waiting on
- * external events (such as with select).  The mutex should be unlocked
+ * external events (such as with select).  The lock should be unlocked
  * as soon as possible by threads other than the main loop thread,
  * because it prevents the main loop from processing callbacks,
  * including timers and bottom halves.
  *
- * NOTE: tools currently are single-threaded and qemu_mutex_unlock_iothread
+ * NOTE: tools currently are single-threaded and bql_unlock
  * is a no-op there.
  */
-void qemu_mutex_unlock_iothread(void);
+void bql_unlock(void);
 
 /**
  * QEMU_IOTHREAD_LOCK_GUARD
  *
- * Wrap a block of code in a conditional qemu_mutex_{lock,unlock}_iothread.
+ * Wrap a block of code in a conditional bql_{lock,unlock}.
  */
 typedef struct IOThreadLockAuto IOThreadLockAuto;
 
 static inline IOThreadLockAuto *qemu_iothread_auto_lock(const char *file,
                                                         int line)
 {
-    if (qemu_mutex_iothread_locked()) {
+    if (bql_locked()) {
         return NULL;
     }
-    qemu_mutex_lock_iothread_impl(file, line);
+    bql_lock_impl(file, line);
     /* Anything non-NULL causes the cleanup function to be called */
     return (IOThreadLockAuto *)(uintptr_t)1;
 }
 
 static inline void qemu_iothread_auto_unlock(IOThreadLockAuto *l)
 {
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
 }
 
 G_DEFINE_AUTOPTR_CLEANUP_FUNC(IOThreadLockAuto, qemu_iothread_auto_unlock)
diff --git a/include/qemu/thread.h b/include/qemu/thread.h
index dd3822d7ce..fb74e21c08 100644
--- a/include/qemu/thread.h
+++ b/include/qemu/thread.h
@@ -47,7 +47,7 @@ typedef void (*QemuCondWaitFunc)(QemuCond *c, QemuMutex *m, const char *f,
 typedef bool (*QemuCondTimedWaitFunc)(QemuCond *c, QemuMutex *m, int ms,
                                       const char *f, int l);
 
-extern QemuMutexLockFunc qemu_bql_mutex_lock_func;
+extern QemuMutexLockFunc bql_mutex_lock_func;
 extern QemuMutexLockFunc qemu_mutex_lock_func;
 extern QemuMutexTrylockFunc qemu_mutex_trylock_func;
 extern QemuRecMutexLockFunc qemu_rec_mutex_lock_func;
diff --git a/accel/accel-blocker.c b/accel/accel-blocker.c
index 1e7f423462..e083f24aa8 100644
--- a/accel/accel-blocker.c
+++ b/accel/accel-blocker.c
@@ -41,7 +41,7 @@ void accel_blocker_init(void)
 
 void accel_ioctl_begin(void)
 {
-    if (likely(qemu_mutex_iothread_locked())) {
+    if (likely(bql_locked())) {
         return;
     }
 
@@ -51,7 +51,7 @@ void accel_ioctl_begin(void)
 
 void accel_ioctl_end(void)
 {
-    if (likely(qemu_mutex_iothread_locked())) {
+    if (likely(bql_locked())) {
         return;
     }
 
@@ -62,7 +62,7 @@ void accel_ioctl_end(void)
 
 void accel_cpu_ioctl_begin(CPUState *cpu)
 {
-    if (unlikely(qemu_mutex_iothread_locked())) {
+    if (unlikely(bql_locked())) {
         return;
     }
 
@@ -72,7 +72,7 @@ void accel_cpu_ioctl_begin(CPUState *cpu)
 
 void accel_cpu_ioctl_end(CPUState *cpu)
 {
-    if (unlikely(qemu_mutex_iothread_locked())) {
+    if (unlikely(bql_locked())) {
         return;
     }
 
@@ -105,7 +105,7 @@ void accel_ioctl_inhibit_begin(void)
      * We allow to inhibit only when holding the BQL, so we can identify
      * when an inhibitor wants to issue an ioctl easily.
      */
-    g_assert(qemu_mutex_iothread_locked());
+    g_assert(bql_locked());
 
     /* Block further invocations of the ioctls outside the BQL.  */
     CPU_FOREACH(cpu) {
diff --git a/accel/dummy-cpus.c b/accel/dummy-cpus.c
index b75c919ac3..f4b0ec5890 100644
--- a/accel/dummy-cpus.c
+++ b/accel/dummy-cpus.c
@@ -24,7 +24,7 @@ static void *dummy_cpu_thread_fn(void *arg)
 
     rcu_register_thread();
 
-    qemu_mutex_lock_iothread();
+    bql_lock();
     qemu_thread_get_self(cpu->thread);
     cpu->thread_id = qemu_get_thread_id();
     cpu->neg.can_do_io = true;
@@ -43,7 +43,7 @@ static void *dummy_cpu_thread_fn(void *arg)
     qemu_guest_random_seed_thread_part2(cpu->random_seed);
 
     do {
-        qemu_mutex_unlock_iothread();
+        bql_unlock();
 #ifndef _WIN32
         do {
             int sig;
@@ -56,11 +56,11 @@ static void *dummy_cpu_thread_fn(void *arg)
 #else
         qemu_sem_wait(&cpu->sem);
 #endif
-        qemu_mutex_lock_iothread();
+        bql_lock();
         qemu_wait_io_event(cpu);
     } while (!cpu->unplug);
 
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
     rcu_unregister_thread();
     return NULL;
 }
diff --git a/accel/hvf/hvf-accel-ops.c b/accel/hvf/hvf-accel-ops.c
index abe7adf7ee..8eabb696fa 100644
--- a/accel/hvf/hvf-accel-ops.c
+++ b/accel/hvf/hvf-accel-ops.c
@@ -424,7 +424,7 @@ static void *hvf_cpu_thread_fn(void *arg)
 
     rcu_register_thread();
 
-    qemu_mutex_lock_iothread();
+    bql_lock();
     qemu_thread_get_self(cpu->thread);
 
     cpu->thread_id = qemu_get_thread_id();
@@ -449,7 +449,7 @@ static void *hvf_cpu_thread_fn(void *arg)
 
     hvf_vcpu_destroy(cpu);
     cpu_thread_signal_destroyed(cpu);
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
     rcu_unregister_thread();
     return NULL;
 }
diff --git a/accel/kvm/kvm-accel-ops.c b/accel/kvm/kvm-accel-ops.c
index 6195150a0b..45ff06e953 100644
--- a/accel/kvm/kvm-accel-ops.c
+++ b/accel/kvm/kvm-accel-ops.c
@@ -33,7 +33,7 @@ static void *kvm_vcpu_thread_fn(void *arg)
 
     rcu_register_thread();
 
-    qemu_mutex_lock_iothread();
+    bql_lock();
     qemu_thread_get_self(cpu->thread);
     cpu->thread_id = qemu_get_thread_id();
     cpu->neg.can_do_io = true;
@@ -58,7 +58,7 @@ static void *kvm_vcpu_thread_fn(void *arg)
 
     kvm_destroy_vcpu(cpu);
     cpu_thread_signal_destroyed(cpu);
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
     rcu_unregister_thread();
     return NULL;
 }
diff --git a/accel/kvm/kvm-all.c b/accel/kvm/kvm-all.c
index eb17773f0b..bbc60146d1 100644
--- a/accel/kvm/kvm-all.c
+++ b/accel/kvm/kvm-all.c
@@ -806,7 +806,7 @@ static void kvm_dirty_ring_flush(void)
      * should always be with BQL held, serialization is guaranteed.
      * However, let's be sure of it.
      */
-    assert(qemu_mutex_iothread_locked());
+    assert(bql_locked());
     /*
      * First make sure to flush the hardware buffers by kicking all
      * vcpus out in a synchronous way.
@@ -1391,9 +1391,9 @@ static void *kvm_dirty_ring_reaper_thread(void *data)
         trace_kvm_dirty_ring_reaper("wakeup");
         r->reaper_state = KVM_DIRTY_RING_REAPER_REAPING;
 
-        qemu_mutex_lock_iothread();
+        bql_lock();
         kvm_dirty_ring_reap(s, NULL);
-        qemu_mutex_unlock_iothread();
+        bql_unlock();
 
         r->reaper_iteration++;
     }
@@ -2817,7 +2817,7 @@ int kvm_cpu_exec(CPUState *cpu)
         return EXCP_HLT;
     }
 
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
     cpu_exec_start(cpu);
 
     do {
@@ -2857,11 +2857,11 @@ int kvm_cpu_exec(CPUState *cpu)
 
 #ifdef KVM_HAVE_MCE_INJECTION
         if (unlikely(have_sigbus_pending)) {
-            qemu_mutex_lock_iothread();
+            bql_lock();
             kvm_arch_on_sigbus_vcpu(cpu, pending_sigbus_code,
                                     pending_sigbus_addr);
             have_sigbus_pending = false;
-            qemu_mutex_unlock_iothread();
+            bql_unlock();
         }
 #endif
 
@@ -2927,7 +2927,7 @@ int kvm_cpu_exec(CPUState *cpu)
              * still full.  Got kicked by KVM_RESET_DIRTY_RINGS.
              */
             trace_kvm_dirty_ring_full(cpu->cpu_index);
-            qemu_mutex_lock_iothread();
+            bql_lock();
             /*
              * We throttle vCPU by making it sleep once it exit from kernel
              * due to dirty ring full. In the dirtylimit scenario, reaping
@@ -2939,7 +2939,7 @@ int kvm_cpu_exec(CPUState *cpu)
             } else {
                 kvm_dirty_ring_reap(kvm_state, NULL);
             }
-            qemu_mutex_unlock_iothread();
+            bql_unlock();
             dirtylimit_vcpu_execute(cpu);
             ret = 0;
             break;
@@ -2956,9 +2956,9 @@ int kvm_cpu_exec(CPUState *cpu)
                 break;
             case KVM_SYSTEM_EVENT_CRASH:
                 kvm_cpu_synchronize_state(cpu);
-                qemu_mutex_lock_iothread();
+                bql_lock();
                 qemu_system_guest_panicked(cpu_get_crash_info(cpu));
-                qemu_mutex_unlock_iothread();
+                bql_unlock();
                 ret = 0;
                 break;
             default:
@@ -2973,7 +2973,7 @@ int kvm_cpu_exec(CPUState *cpu)
     } while (ret == 0);
 
     cpu_exec_end(cpu);
-    qemu_mutex_lock_iothread();
+    bql_lock();
 
     if (ret < 0) {
         cpu_dump_state(cpu, stderr, CPU_DUMP_CODE);
diff --git a/accel/tcg/cpu-exec.c b/accel/tcg/cpu-exec.c
index c938eb96f8..67eda9865e 100644
--- a/accel/tcg/cpu-exec.c
+++ b/accel/tcg/cpu-exec.c
@@ -558,8 +558,8 @@ static void cpu_exec_longjmp_cleanup(CPUState *cpu)
         tcg_ctx->gen_tb = NULL;
     }
 #endif
-    if (qemu_mutex_iothread_locked()) {
-        qemu_mutex_unlock_iothread();
+    if (bql_locked()) {
+        bql_unlock();
     }
     assert_no_pages_locked();
 }
@@ -680,10 +680,10 @@ static inline bool cpu_handle_halt(CPUState *cpu)
 #if defined(TARGET_I386)
         if (cpu->interrupt_request & CPU_INTERRUPT_POLL) {
             X86CPU *x86_cpu = X86_CPU(cpu);
-            qemu_mutex_lock_iothread();
+            bql_lock();
             apic_poll_irq(x86_cpu->apic_state);
             cpu_reset_interrupt(cpu, CPU_INTERRUPT_POLL);
-            qemu_mutex_unlock_iothread();
+            bql_unlock();
         }
 #endif /* TARGET_I386 */
         if (!cpu_has_work(cpu)) {
@@ -749,9 +749,9 @@ static inline bool cpu_handle_exception(CPUState *cpu, int *ret)
 #else
         if (replay_exception()) {
             CPUClass *cc = CPU_GET_CLASS(cpu);
-            qemu_mutex_lock_iothread();
+            bql_lock();
             cc->tcg_ops->do_interrupt(cpu);
-            qemu_mutex_unlock_iothread();
+            bql_unlock();
             cpu->exception_index = -1;
 
             if (unlikely(cpu->singlestep_enabled)) {
@@ -812,7 +812,7 @@ static inline bool cpu_handle_interrupt(CPUState *cpu,
 
     if (unlikely(qatomic_read(&cpu->interrupt_request))) {
         int interrupt_request;
-        qemu_mutex_lock_iothread();
+        bql_lock();
         interrupt_request = cpu->interrupt_request;
         if (unlikely(cpu->singlestep_enabled & SSTEP_NOIRQ)) {
             /* Mask out external interrupts for this step. */
@@ -821,7 +821,7 @@ static inline bool cpu_handle_interrupt(CPUState *cpu,
         if (interrupt_request & CPU_INTERRUPT_DEBUG) {
             cpu->interrupt_request &= ~CPU_INTERRUPT_DEBUG;
             cpu->exception_index = EXCP_DEBUG;
-            qemu_mutex_unlock_iothread();
+            bql_unlock();
             return true;
         }
 #if !defined(CONFIG_USER_ONLY)
@@ -832,7 +832,7 @@ static inline bool cpu_handle_interrupt(CPUState *cpu,
             cpu->interrupt_request &= ~CPU_INTERRUPT_HALT;
             cpu->halted = 1;
             cpu->exception_index = EXCP_HLT;
-            qemu_mutex_unlock_iothread();
+            bql_unlock();
             return true;
         }
 #if defined(TARGET_I386)
@@ -843,14 +843,14 @@ static inline bool cpu_handle_interrupt(CPUState *cpu,
             cpu_svm_check_intercept_param(env, SVM_EXIT_INIT, 0, 0);
             do_cpu_init(x86_cpu);
             cpu->exception_index = EXCP_HALTED;
-            qemu_mutex_unlock_iothread();
+            bql_unlock();
             return true;
         }
 #else
         else if (interrupt_request & CPU_INTERRUPT_RESET) {
             replay_interrupt();
             cpu_reset(cpu);
-            qemu_mutex_unlock_iothread();
+            bql_unlock();
             return true;
         }
 #endif /* !TARGET_I386 */
@@ -873,7 +873,7 @@ static inline bool cpu_handle_interrupt(CPUState *cpu,
                  */
                 if (unlikely(cpu->singlestep_enabled)) {
                     cpu->exception_index = EXCP_DEBUG;
-                    qemu_mutex_unlock_iothread();
+                    bql_unlock();
                     return true;
                 }
                 cpu->exception_index = -1;
@@ -892,7 +892,7 @@ static inline bool cpu_handle_interrupt(CPUState *cpu,
         }
 
         /* If we exit via cpu_loop_exit/longjmp it is reset in cpu_exec */
-        qemu_mutex_unlock_iothread();
+        bql_unlock();
     }
 
     /* Finally, check if we need to exit to the main loop.  */
diff --git a/accel/tcg/cputlb.c b/accel/tcg/cputlb.c
index db3f93fda9..5698a9fd8e 100644
--- a/accel/tcg/cputlb.c
+++ b/accel/tcg/cputlb.c
@@ -2030,10 +2030,10 @@ static uint64_t do_ld_mmio_beN(CPUState *cpu, CPUTLBEntryFull *full,
     section = io_prepare(&mr_offset, cpu, full->xlat_section, attrs, addr, ra);
     mr = section->mr;
 
-    qemu_mutex_lock_iothread();
+    bql_lock();
     ret = int_ld_mmio_beN(cpu, full, ret_be, addr, size, mmu_idx,
                           type, ra, mr, mr_offset);
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
 
     return ret;
 }
@@ -2054,12 +2054,12 @@ static Int128 do_ld16_mmio_beN(CPUState *cpu, CPUTLBEntryFull *full,
     section = io_prepare(&mr_offset, cpu, full->xlat_section, attrs, addr, ra);
     mr = section->mr;
 
-    qemu_mutex_lock_iothread();
+    bql_lock();
     a = int_ld_mmio_beN(cpu, full, ret_be, addr, size - 8, mmu_idx,
                         MMU_DATA_LOAD, ra, mr, mr_offset);
     b = int_ld_mmio_beN(cpu, full, ret_be, addr + size - 8, 8, mmu_idx,
                         MMU_DATA_LOAD, ra, mr, mr_offset + size - 8);
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
 
     return int128_make128(b, a);
 }
@@ -2577,10 +2577,10 @@ static uint64_t do_st_mmio_leN(CPUState *cpu, CPUTLBEntryFull *full,
     section = io_prepare(&mr_offset, cpu, full->xlat_section, attrs, addr, ra);
     mr = section->mr;
 
-    qemu_mutex_lock_iothread();
+    bql_lock();
     ret = int_st_mmio_leN(cpu, full, val_le, addr, size, mmu_idx,
                           ra, mr, mr_offset);
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
 
     return ret;
 }
@@ -2601,12 +2601,12 @@ static uint64_t do_st16_mmio_leN(CPUState *cpu, CPUTLBEntryFull *full,
     section = io_prepare(&mr_offset, cpu, full->xlat_section, attrs, addr, ra);
     mr = section->mr;
 
-    qemu_mutex_lock_iothread();
+    bql_lock();
     int_st_mmio_leN(cpu, full, int128_getlo(val_le), addr, 8,
                     mmu_idx, ra, mr, mr_offset);
     ret = int_st_mmio_leN(cpu, full, int128_gethi(val_le), addr + 8,
                           size - 8, mmu_idx, ra, mr, mr_offset + 8);
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
 
     return ret;
 }
diff --git a/accel/tcg/tcg-accel-ops-icount.c b/accel/tcg/tcg-accel-ops-icount.c
index b25685fb71..5824d92580 100644
--- a/accel/tcg/tcg-accel-ops-icount.c
+++ b/accel/tcg/tcg-accel-ops-icount.c
@@ -126,9 +126,9 @@ void icount_prepare_for_run(CPUState *cpu, int64_t cpu_budget)
          * We're called without the iothread lock, so must take it while
          * we're calling timer handlers.
          */
-        qemu_mutex_lock_iothread();
+        bql_lock();
         icount_notify_aio_contexts();
-        qemu_mutex_unlock_iothread();
+        bql_unlock();
     }
 }
 
diff --git a/accel/tcg/tcg-accel-ops-mttcg.c b/accel/tcg/tcg-accel-ops-mttcg.c
index fac80095bb..af7307013a 100644
--- a/accel/tcg/tcg-accel-ops-mttcg.c
+++ b/accel/tcg/tcg-accel-ops-mttcg.c
@@ -76,7 +76,7 @@ static void *mttcg_cpu_thread_fn(void *arg)
     rcu_add_force_rcu_notifier(&force_rcu.notifier);
     tcg_register_thread();
 
-    qemu_mutex_lock_iothread();
+    bql_lock();
     qemu_thread_get_self(cpu->thread);
 
     cpu->thread_id = qemu_get_thread_id();
@@ -91,9 +91,9 @@ static void *mttcg_cpu_thread_fn(void *arg)
     do {
         if (cpu_can_run(cpu)) {
             int r;
-            qemu_mutex_unlock_iothread();
+            bql_unlock();
             r = tcg_cpus_exec(cpu);
-            qemu_mutex_lock_iothread();
+            bql_lock();
             switch (r) {
             case EXCP_DEBUG:
                 cpu_handle_guest_debug(cpu);
@@ -105,9 +105,9 @@ static void *mttcg_cpu_thread_fn(void *arg)
                  */
                 break;
             case EXCP_ATOMIC:
-                qemu_mutex_unlock_iothread();
+                bql_unlock();
                 cpu_exec_step_atomic(cpu);
-                qemu_mutex_lock_iothread();
+                bql_lock();
             default:
                 /* Ignore everything else? */
                 break;
@@ -119,7 +119,7 @@ static void *mttcg_cpu_thread_fn(void *arg)
     } while (!cpu->unplug || cpu_can_run(cpu));
 
     tcg_cpus_destroy(cpu);
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
     rcu_remove_force_rcu_notifier(&force_rcu.notifier);
     rcu_unregister_thread();
     return NULL;
diff --git a/accel/tcg/tcg-accel-ops-rr.c b/accel/tcg/tcg-accel-ops-rr.c
index 611932f3c3..c4ea372a3f 100644
--- a/accel/tcg/tcg-accel-ops-rr.c
+++ b/accel/tcg/tcg-accel-ops-rr.c
@@ -188,7 +188,7 @@ static void *rr_cpu_thread_fn(void *arg)
     rcu_add_force_rcu_notifier(&force_rcu);
     tcg_register_thread();
 
-    qemu_mutex_lock_iothread();
+    bql_lock();
     qemu_thread_get_self(cpu->thread);
 
     cpu->thread_id = qemu_get_thread_id();
@@ -218,9 +218,9 @@ static void *rr_cpu_thread_fn(void *arg)
         /* Only used for icount_enabled() */
         int64_t cpu_budget = 0;
 
-        qemu_mutex_unlock_iothread();
+        bql_unlock();
         replay_mutex_lock();
-        qemu_mutex_lock_iothread();
+        bql_lock();
 
         if (icount_enabled()) {
             int cpu_count = rr_cpu_count();
@@ -254,7 +254,7 @@ static void *rr_cpu_thread_fn(void *arg)
             if (cpu_can_run(cpu)) {
                 int r;
 
-                qemu_mutex_unlock_iothread();
+                bql_unlock();
                 if (icount_enabled()) {
                     icount_prepare_for_run(cpu, cpu_budget);
                 }
@@ -262,15 +262,15 @@ static void *rr_cpu_thread_fn(void *arg)
                 if (icount_enabled()) {
                     icount_process_data(cpu);
                 }
-                qemu_mutex_lock_iothread();
+                bql_lock();
 
                 if (r == EXCP_DEBUG) {
                     cpu_handle_guest_debug(cpu);
                     break;
                 } else if (r == EXCP_ATOMIC) {
-                    qemu_mutex_unlock_iothread();
+                    bql_unlock();
                     cpu_exec_step_atomic(cpu);
-                    qemu_mutex_lock_iothread();
+                    bql_lock();
                     break;
                 }
             } else if (cpu->stop) {
diff --git a/accel/tcg/tcg-accel-ops.c b/accel/tcg/tcg-accel-ops.c
index 1b57290682..813065c0ec 100644
--- a/accel/tcg/tcg-accel-ops.c
+++ b/accel/tcg/tcg-accel-ops.c
@@ -88,7 +88,7 @@ static void tcg_cpu_reset_hold(CPUState *cpu)
 /* mask must never be zero, except for A20 change call */
 void tcg_handle_interrupt(CPUState *cpu, int mask)
 {
-    g_assert(qemu_mutex_iothread_locked());
+    g_assert(bql_locked());
 
     cpu->interrupt_request |= mask;
 
diff --git a/accel/tcg/translate-all.c b/accel/tcg/translate-all.c
index 79a88f5fb7..1737bb3da5 100644
--- a/accel/tcg/translate-all.c
+++ b/accel/tcg/translate-all.c
@@ -649,7 +649,7 @@ void cpu_io_recompile(CPUState *cpu, uintptr_t retaddr)
 
 void cpu_interrupt(CPUState *cpu, int mask)
 {
-    g_assert(qemu_mutex_iothread_locked());
+    g_assert(bql_locked());
     cpu->interrupt_request |= mask;
     qatomic_set(&cpu->neg.icount_decr.u16.high, -1);
 }
diff --git a/cpu-common.c b/cpu-common.c
index c81fd72d16..ce78273af5 100644
--- a/cpu-common.c
+++ b/cpu-common.c
@@ -351,11 +351,11 @@ void process_queued_cpu_work(CPUState *cpu)
              * BQL, so it goes to sleep; start_exclusive() is sleeping too, so
              * neither CPU can proceed.
              */
-            qemu_mutex_unlock_iothread();
+            bql_unlock();
             start_exclusive();
             wi->func(cpu, wi->data);
             end_exclusive();
-            qemu_mutex_lock_iothread();
+            bql_lock();
         } else {
             wi->func(cpu, wi->data);
         }
diff --git a/dump/dump.c b/dump/dump.c
index 4819050764..84064d890d 100644
--- a/dump/dump.c
+++ b/dump/dump.c
@@ -108,11 +108,11 @@ static int dump_cleanup(DumpState *s)
     s->guest_note = NULL;
     if (s->resume) {
         if (s->detached) {
-            qemu_mutex_lock_iothread();
+            bql_lock();
         }
         vm_start();
         if (s->detached) {
-            qemu_mutex_unlock_iothread();
+            bql_unlock();
         }
     }
     migrate_del_blocker(&dump_migration_blocker);
diff --git a/hw/core/cpu-common.c b/hw/core/cpu-common.c
index d0e7bbdf06..3ccfe882e2 100644
--- a/hw/core/cpu-common.c
+++ b/hw/core/cpu-common.c
@@ -70,14 +70,14 @@ CPUState *cpu_create(const char *typename)
  * BQL here if we need to.  cpu_interrupt assumes it is held.*/
 void cpu_reset_interrupt(CPUState *cpu, int mask)
 {
-    bool need_lock = !qemu_mutex_iothread_locked();
+    bool need_lock = !bql_locked();
 
     if (need_lock) {
-        qemu_mutex_lock_iothread();
+        bql_lock();
     }
     cpu->interrupt_request &= ~mask;
     if (need_lock) {
-        qemu_mutex_unlock_iothread();
+        bql_unlock();
     }
 }
 
diff --git a/hw/i386/intel_iommu.c b/hw/i386/intel_iommu.c
index ed5677c0ae..1a07faddb4 100644
--- a/hw/i386/intel_iommu.c
+++ b/hw/i386/intel_iommu.c
@@ -1665,7 +1665,7 @@ static bool vtd_switch_address_space(VTDAddressSpace *as)
 {
     bool use_iommu, pt;
     /* Whether we need to take the BQL on our own */
-    bool take_bql = !qemu_mutex_iothread_locked();
+    bool take_bql = !bql_locked();
 
     assert(as);
 
@@ -1683,7 +1683,7 @@ static bool vtd_switch_address_space(VTDAddressSpace *as)
      * it. We'd better make sure we have had it already, or, take it.
      */
     if (take_bql) {
-        qemu_mutex_lock_iothread();
+        bql_lock();
     }
 
     /* Turn off first then on the other */
@@ -1738,7 +1738,7 @@ static bool vtd_switch_address_space(VTDAddressSpace *as)
     }
 
     if (take_bql) {
-        qemu_mutex_unlock_iothread();
+        bql_unlock();
     }
 
     return use_iommu;
diff --git a/hw/i386/kvm/xen_evtchn.c b/hw/i386/kvm/xen_evtchn.c
index 9a5f3caa24..4a835a1010 100644
--- a/hw/i386/kvm/xen_evtchn.c
+++ b/hw/i386/kvm/xen_evtchn.c
@@ -425,7 +425,7 @@ void xen_evtchn_set_callback_level(int level)
      * effect immediately. That just leaves interdomain loopback as the case
      * which uses the BH.
      */
-    if (!qemu_mutex_iothread_locked()) {
+    if (!bql_locked()) {
         qemu_bh_schedule(s->gsi_bh);
         return;
     }
@@ -459,7 +459,7 @@ int xen_evtchn_set_callback_param(uint64_t param)
      * We need the BQL because set_callback_pci_intx() may call into PCI code,
      * and because we may need to manipulate the old and new GSI levels.
      */
-    assert(qemu_mutex_iothread_locked());
+    assert(bql_locked());
     qemu_mutex_lock(&s->port_lock);
 
     switch (type) {
@@ -1037,7 +1037,7 @@ static int close_port(XenEvtchnState *s, evtchn_port_t port,
     XenEvtchnPort *p = &s->port_table[port];
 
     /* Because it *might* be a PIRQ port */
-    assert(qemu_mutex_iothread_locked());
+    assert(bql_locked());
 
     switch (p->type) {
     case EVTCHNSTAT_closed:
@@ -1104,7 +1104,7 @@ int xen_evtchn_soft_reset(void)
         return -ENOTSUP;
     }
 
-    assert(qemu_mutex_iothread_locked());
+    assert(bql_locked());
 
     qemu_mutex_lock(&s->port_lock);
 
@@ -1601,7 +1601,7 @@ bool xen_evtchn_set_gsi(int gsi, int level)
     XenEvtchnState *s = xen_evtchn_singleton;
     int pirq;
 
-    assert(qemu_mutex_iothread_locked());
+    assert(bql_locked());
 
     if (!s || gsi < 0 || gsi >= IOAPIC_NUM_PINS) {
         return false;
@@ -1712,7 +1712,7 @@ void xen_evtchn_snoop_msi(PCIDevice *dev, bool is_msix, unsigned int vector,
         return;
     }
 
-    assert(qemu_mutex_iothread_locked());
+    assert(bql_locked());
 
     pirq = msi_pirq_target(addr, data);
 
@@ -1749,7 +1749,7 @@ int xen_evtchn_translate_pirq_msi(struct kvm_irq_routing_entry *route,
         return 1; /* Not a PIRQ */
     }
 
-    assert(qemu_mutex_iothread_locked());
+    assert(bql_locked());
 
     pirq = msi_pirq_target(address, data);
     if (!pirq || pirq >= s->nr_pirqs) {
@@ -1796,7 +1796,7 @@ bool xen_evtchn_deliver_pirq_msi(uint64_t address, uint32_t data)
         return false;
     }
 
-    assert(qemu_mutex_iothread_locked());
+    assert(bql_locked());
 
     pirq = msi_pirq_target(address, data);
     if (!pirq || pirq >= s->nr_pirqs) {
diff --git a/hw/i386/kvm/xen_overlay.c b/hw/i386/kvm/xen_overlay.c
index 526f7a6077..c68e78ac5c 100644
--- a/hw/i386/kvm/xen_overlay.c
+++ b/hw/i386/kvm/xen_overlay.c
@@ -194,7 +194,7 @@ int xen_overlay_map_shinfo_page(uint64_t gpa)
         return -ENOENT;
     }
 
-    assert(qemu_mutex_iothread_locked());
+    assert(bql_locked());
 
     if (s->shinfo_gpa) {
         /* If removing shinfo page, turn the kernel magic off first */
diff --git a/hw/i386/kvm/xen_xenstore.c b/hw/i386/kvm/xen_xenstore.c
index c3633f7829..1a9bc342b8 100644
--- a/hw/i386/kvm/xen_xenstore.c
+++ b/hw/i386/kvm/xen_xenstore.c
@@ -1341,7 +1341,7 @@ static void fire_watch_cb(void *opaque, const char *path, const char *token)
 {
     XenXenstoreState *s = opaque;
 
-    assert(qemu_mutex_iothread_locked());
+    assert(bql_locked());
 
     /*
      * If there's a response pending, we obviously can't scribble over
diff --git a/hw/intc/arm_gicv3_cpuif.c b/hw/intc/arm_gicv3_cpuif.c
index ab1a00508e..77c2a6dd3b 100644
--- a/hw/intc/arm_gicv3_cpuif.c
+++ b/hw/intc/arm_gicv3_cpuif.c
@@ -934,7 +934,7 @@ void gicv3_cpuif_update(GICv3CPUState *cs)
     ARMCPU *cpu = ARM_CPU(cs->cpu);
     CPUARMState *env = &cpu->env;
 
-    g_assert(qemu_mutex_iothread_locked());
+    g_assert(bql_locked());
 
     trace_gicv3_cpuif_update(gicv3_redist_affid(cs), cs->hppi.irq,
                              cs->hppi.grp, cs->hppi.prio);
diff --git a/hw/intc/s390_flic.c b/hw/intc/s390_flic.c
index 212f268581..f4a848460b 100644
--- a/hw/intc/s390_flic.c
+++ b/hw/intc/s390_flic.c
@@ -106,7 +106,7 @@ static int qemu_s390_clear_io_flic(S390FLICState *fs, uint16_t subchannel_id,
     QEMUS390FlicIO *cur, *next;
     uint8_t isc;
 
-    g_assert(qemu_mutex_iothread_locked());
+    g_assert(bql_locked());
     if (!(flic->pending & FLIC_PENDING_IO)) {
         return 0;
     }
@@ -223,7 +223,7 @@ uint32_t qemu_s390_flic_dequeue_service(QEMUS390FLICState *flic)
 {
     uint32_t tmp;
 
-    g_assert(qemu_mutex_iothread_locked());
+    g_assert(bql_locked());
     g_assert(flic->pending & FLIC_PENDING_SERVICE);
     tmp = flic->service_param;
     flic->service_param = 0;
@@ -238,7 +238,7 @@ QEMUS390FlicIO *qemu_s390_flic_dequeue_io(QEMUS390FLICState *flic, uint64_t cr6)
     QEMUS390FlicIO *io;
     uint8_t isc;
 
-    g_assert(qemu_mutex_iothread_locked());
+    g_assert(bql_locked());
     if (!(flic->pending & CR6_TO_PENDING_IO(cr6))) {
         return NULL;
     }
@@ -262,7 +262,7 @@ QEMUS390FlicIO *qemu_s390_flic_dequeue_io(QEMUS390FLICState *flic, uint64_t cr6)
 
 void qemu_s390_flic_dequeue_crw_mchk(QEMUS390FLICState *flic)
 {
-    g_assert(qemu_mutex_iothread_locked());
+    g_assert(bql_locked());
     g_assert(flic->pending & FLIC_PENDING_MCHK_CR);
     flic->pending &= ~FLIC_PENDING_MCHK_CR;
 }
@@ -271,7 +271,7 @@ static void qemu_s390_inject_service(S390FLICState *fs, uint32_t parm)
 {
     QEMUS390FLICState *flic = s390_get_qemu_flic(fs);
 
-    g_assert(qemu_mutex_iothread_locked());
+    g_assert(bql_locked());
     /* multiplexing is good enough for sclp - kvm does it internally as well */
     flic->service_param |= parm;
     flic->pending |= FLIC_PENDING_SERVICE;
@@ -287,7 +287,7 @@ static void qemu_s390_inject_io(S390FLICState *fs, uint16_t subchannel_id,
     QEMUS390FLICState *flic = s390_get_qemu_flic(fs);
     QEMUS390FlicIO *io;
 
-    g_assert(qemu_mutex_iothread_locked());
+    g_assert(bql_locked());
     io = g_new0(QEMUS390FlicIO, 1);
     io->id = subchannel_id;
     io->nr = subchannel_nr;
@@ -304,7 +304,7 @@ static void qemu_s390_inject_crw_mchk(S390FLICState *fs)
 {
     QEMUS390FLICState *flic = s390_get_qemu_flic(fs);
 
-    g_assert(qemu_mutex_iothread_locked());
+    g_assert(bql_locked());
     flic->pending |= FLIC_PENDING_MCHK_CR;
 
     qemu_s390_flic_notify(FLIC_PENDING_MCHK_CR);
@@ -330,7 +330,7 @@ bool qemu_s390_flic_has_crw_mchk(QEMUS390FLICState *flic)
 
 bool qemu_s390_flic_has_any(QEMUS390FLICState *flic)
 {
-    g_assert(qemu_mutex_iothread_locked());
+    g_assert(bql_locked());
     return !!flic->pending;
 }
 
@@ -340,7 +340,7 @@ static void qemu_s390_flic_reset(DeviceState *dev)
     QEMUS390FlicIO *cur, *next;
     int isc;
 
-    g_assert(qemu_mutex_iothread_locked());
+    g_assert(bql_locked());
     flic->simm = 0;
     flic->nimm = 0;
     flic->pending = 0;
diff --git a/hw/misc/edu.c b/hw/misc/edu.c
index e64a246d3f..2a976ca2b1 100644
--- a/hw/misc/edu.c
+++ b/hw/misc/edu.c
@@ -355,9 +355,9 @@ static void *edu_fact_thread(void *opaque)
         smp_mb__after_rmw();
 
         if (qatomic_read(&edu->status) & EDU_STATUS_IRQFACT) {
-            qemu_mutex_lock_iothread();
+            bql_lock();
             edu_raise_irq(edu, FACT_IRQ);
-            qemu_mutex_unlock_iothread();
+            bql_unlock();
         }
     }
 
diff --git a/hw/misc/imx6_src.c b/hw/misc/imx6_src.c
index d20727e20b..0c6003559f 100644
--- a/hw/misc/imx6_src.c
+++ b/hw/misc/imx6_src.c
@@ -131,7 +131,7 @@ static void imx6_clear_reset_bit(CPUState *cpu, run_on_cpu_data data)
     struct SRCSCRResetInfo *ri = data.host_ptr;
     IMX6SRCState *s = ri->s;
 
-    assert(qemu_mutex_iothread_locked());
+    assert(bql_locked());
 
     s->regs[SRC_SCR] = deposit32(s->regs[SRC_SCR], ri->reset_bit, 1, 0);
     DPRINTF("reg[%s] <= 0x%" PRIx32 "\n",
diff --git a/hw/misc/imx7_src.c b/hw/misc/imx7_src.c
index 24a0b4618c..b3725ff6e7 100644
--- a/hw/misc/imx7_src.c
+++ b/hw/misc/imx7_src.c
@@ -136,7 +136,7 @@ static void imx7_clear_reset_bit(CPUState *cpu, run_on_cpu_data data)
     struct SRCSCRResetInfo *ri = data.host_ptr;
     IMX7SRCState *s = ri->s;
 
-    assert(qemu_mutex_iothread_locked());
+    assert(bql_locked());
 
     s->regs[SRC_A7RCR0] = deposit32(s->regs[SRC_A7RCR0], ri->reset_bit, 1, 0);
 
diff --git a/hw/net/xen_nic.c b/hw/net/xen_nic.c
index 1e2b3baeb1..453fdb9819 100644
--- a/hw/net/xen_nic.c
+++ b/hw/net/xen_nic.c
@@ -133,7 +133,7 @@ static bool net_tx_packets(struct XenNetDev *netdev)
     void *page;
     void *tmpbuf = NULL;
 
-    assert(qemu_mutex_iothread_locked());
+    assert(bql_locked());
 
     for (;;) {
         rc = netdev->tx_ring.req_cons;
@@ -260,7 +260,7 @@ static ssize_t net_rx_packet(NetClientState *nc, const uint8_t *buf, size_t size
     RING_IDX rc, rp;
     void *page;
 
-    assert(qemu_mutex_iothread_locked());
+    assert(bql_locked());
 
     if (xen_device_backend_get_state(&netdev->xendev) != XenbusStateConnected) {
         return -1;
@@ -354,7 +354,7 @@ static bool xen_netdev_connect(XenDevice *xendev, Error **errp)
     XenNetDev *netdev = XEN_NET_DEVICE(xendev);
     unsigned int port, rx_copy;
 
-    assert(qemu_mutex_iothread_locked());
+    assert(bql_locked());
 
     if (xen_device_frontend_scanf(xendev, "tx-ring-ref", "%u",
                                   &netdev->tx_ring_ref) != 1) {
@@ -425,7 +425,7 @@ static void xen_netdev_disconnect(XenDevice *xendev, Error **errp)
 
     trace_xen_netdev_disconnect(netdev->dev);
 
-    assert(qemu_mutex_iothread_locked());
+    assert(bql_locked());
 
     netdev->tx_ring.sring = NULL;
     netdev->rx_ring.sring = NULL;
diff --git a/hw/ppc/pegasos2.c b/hw/ppc/pegasos2.c
index 3203a4a728..d84f3f977d 100644
--- a/hw/ppc/pegasos2.c
+++ b/hw/ppc/pegasos2.c
@@ -515,7 +515,7 @@ static void pegasos2_hypercall(PPCVirtualHypervisor *vhyp, PowerPCCPU *cpu)
     CPUPPCState *env = &cpu->env;
 
     /* The TCG path should also be holding the BQL at this point */
-    g_assert(qemu_mutex_iothread_locked());
+    g_assert(bql_locked());
 
     if (FIELD_EX64(env->msr, MSR, PR)) {
         qemu_log_mask(LOG_GUEST_ERROR, "Hypercall made with MSR[PR]=1\n");
diff --git a/hw/ppc/ppc.c b/hw/ppc/ppc.c
index c532d79f0e..da1626f4d2 100644
--- a/hw/ppc/ppc.c
+++ b/hw/ppc/ppc.c
@@ -314,7 +314,7 @@ void store_40x_dbcr0(CPUPPCState *env, uint32_t val)
 {
     PowerPCCPU *cpu = env_archcpu(env);
 
-    qemu_mutex_lock_iothread();
+    bql_lock();
 
     switch ((val >> 28) & 0x3) {
     case 0x0:
@@ -334,7 +334,7 @@ void store_40x_dbcr0(CPUPPCState *env, uint32_t val)
         break;
     }
 
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
 }
 
 /* PowerPC 40x internal IRQ controller */
diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c
index 4997aa4f1d..e8dabc8614 100644
--- a/hw/ppc/spapr.c
+++ b/hw/ppc/spapr.c
@@ -1304,7 +1304,7 @@ static void emulate_spapr_hypercall(PPCVirtualHypervisor *vhyp,
     CPUPPCState *env = &cpu->env;
 
     /* The TCG path should also be holding the BQL at this point */
-    g_assert(qemu_mutex_iothread_locked());
+    g_assert(bql_locked());
 
     g_assert(!vhyp_cpu_in_nested(cpu));
 
diff --git a/hw/ppc/spapr_rng.c b/hw/ppc/spapr_rng.c
index df5c4b9687..c2fda7ad20 100644
--- a/hw/ppc/spapr_rng.c
+++ b/hw/ppc/spapr_rng.c
@@ -82,9 +82,9 @@ static target_ulong h_random(PowerPCCPU *cpu, SpaprMachineState *spapr,
     while (hrdata.received < 8) {
         rng_backend_request_entropy(rngstate->backend, 8 - hrdata.received,
                                     random_recv, &hrdata);
-        qemu_mutex_unlock_iothread();
+        bql_unlock();
         qemu_sem_wait(&hrdata.sem);
-        qemu_mutex_lock_iothread();
+        bql_lock();
     }
 
     qemu_sem_destroy(&hrdata.sem);
diff --git a/hw/ppc/spapr_softmmu.c b/hw/ppc/spapr_softmmu.c
index 278666317e..fc1bbc0b61 100644
--- a/hw/ppc/spapr_softmmu.c
+++ b/hw/ppc/spapr_softmmu.c
@@ -334,7 +334,7 @@ static void *hpt_prepare_thread(void *opaque)
         pending->ret = H_NO_MEM;
     }
 
-    qemu_mutex_lock_iothread();
+    bql_lock();
 
     if (SPAPR_MACHINE(qdev_get_machine())->pending_hpt == pending) {
         /* Ready to go */
@@ -344,7 +344,7 @@ static void *hpt_prepare_thread(void *opaque)
         free_pending_hpt(pending);
     }
 
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
     return NULL;
 }
 
diff --git a/hw/remote/mpqemu-link.c b/hw/remote/mpqemu-link.c
index 9bd98e8219..d04ac93621 100644
--- a/hw/remote/mpqemu-link.c
+++ b/hw/remote/mpqemu-link.c
@@ -33,7 +33,7 @@
  */
 bool mpqemu_msg_send(MPQemuMsg *msg, QIOChannel *ioc, Error **errp)
 {
-    bool iolock = qemu_mutex_iothread_locked();
+    bool drop_bql = bql_locked();
     bool iothread = qemu_in_iothread();
     struct iovec send[2] = {};
     int *fds = NULL;
@@ -63,8 +63,8 @@ bool mpqemu_msg_send(MPQemuMsg *msg, QIOChannel *ioc, Error **errp)
      * for IOThread case.
      * Also skip lock handling while in a co-routine in the main context.
      */
-    if (iolock && !iothread && !qemu_in_coroutine()) {
-        qemu_mutex_unlock_iothread();
+    if (drop_bql && !iothread && !qemu_in_coroutine()) {
+        bql_unlock();
     }
 
     if (!qio_channel_writev_full_all(ioc, send, G_N_ELEMENTS(send),
@@ -74,9 +74,9 @@ bool mpqemu_msg_send(MPQemuMsg *msg, QIOChannel *ioc, Error **errp)
         trace_mpqemu_send_io_error(msg->cmd, msg->size, nfds);
     }
 
-    if (iolock && !iothread && !qemu_in_coroutine()) {
+    if (drop_bql && !iothread && !qemu_in_coroutine()) {
         /* See above comment why skip locking here. */
-        qemu_mutex_lock_iothread();
+        bql_lock();
     }
 
     return ret;
@@ -96,7 +96,7 @@ static ssize_t mpqemu_read(QIOChannel *ioc, void *buf, size_t len, int **fds,
                            size_t *nfds, Error **errp)
 {
     struct iovec iov = { .iov_base = buf, .iov_len = len };
-    bool iolock = qemu_mutex_iothread_locked();
+    bool drop_bql = bql_locked();
     bool iothread = qemu_in_iothread();
     int ret = -1;
 
@@ -106,14 +106,14 @@ static ssize_t mpqemu_read(QIOChannel *ioc, void *buf, size_t len, int **fds,
      */
     assert(qemu_in_coroutine() || !iothread);
 
-    if (iolock && !iothread && !qemu_in_coroutine()) {
-        qemu_mutex_unlock_iothread();
+    if (drop_bql && !iothread && !qemu_in_coroutine()) {
+        bql_unlock();
     }
 
     ret = qio_channel_readv_full_all_eof(ioc, &iov, 1, fds, nfds, errp);
 
-    if (iolock && !iothread && !qemu_in_coroutine()) {
-        qemu_mutex_lock_iothread();
+    if (drop_bql && !iothread && !qemu_in_coroutine()) {
+        bql_lock();
     }
 
     return (ret <= 0) ? ret : iov.iov_len;
diff --git a/hw/remote/vfio-user-obj.c b/hw/remote/vfio-user-obj.c
index 8b10c32a3c..d9b879e056 100644
--- a/hw/remote/vfio-user-obj.c
+++ b/hw/remote/vfio-user-obj.c
@@ -400,7 +400,7 @@ static int vfu_object_mr_rw(MemoryRegion *mr, uint8_t *buf, hwaddr offset,
         }
 
         if (release_lock) {
-            qemu_mutex_unlock_iothread();
+            bql_unlock();
             release_lock = false;
         }
 
diff --git a/hw/s390x/s390-skeys.c b/hw/s390x/s390-skeys.c
index 8f5159d85d..5c535d483e 100644
--- a/hw/s390x/s390-skeys.c
+++ b/hw/s390x/s390-skeys.c
@@ -153,7 +153,7 @@ void qmp_dump_skeys(const char *filename, Error **errp)
         goto out;
     }
 
-    assert(qemu_mutex_iothread_locked());
+    assert(bql_locked());
     guest_phys_blocks_init(&guest_phys_blocks);
     guest_phys_blocks_append(&guest_phys_blocks);
 
diff --git a/migration/block-dirty-bitmap.c b/migration/block-dirty-bitmap.c
index 24347ab0f7..92e031b6fa 100644
--- a/migration/block-dirty-bitmap.c
+++ b/migration/block-dirty-bitmap.c
@@ -774,7 +774,7 @@ static void dirty_bitmap_state_pending(void *opaque,
     SaveBitmapState *dbms;
     uint64_t pending = 0;
 
-    qemu_mutex_lock_iothread();
+    bql_lock();
 
     QSIMPLEQ_FOREACH(dbms, &s->dbms_list, entry) {
         uint64_t gran = bdrv_dirty_bitmap_granularity(dbms->bitmap);
@@ -784,7 +784,7 @@ static void dirty_bitmap_state_pending(void *opaque,
         pending += DIV_ROUND_UP(sectors * BDRV_SECTOR_SIZE, gran);
     }
 
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
 
     trace_dirty_bitmap_state_pending(pending);
 
diff --git a/migration/block.c b/migration/block.c
index 6ec6a1d6e6..b731d7d778 100644
--- a/migration/block.c
+++ b/migration/block.c
@@ -269,7 +269,7 @@ static int mig_save_device_bulk(QEMUFile *f, BlkMigDevState *bmds)
     int64_t count;
 
     if (bmds->shared_base) {
-        qemu_mutex_lock_iothread();
+        bql_lock();
         /* Skip unallocated sectors; intentionally treats failure or
          * partial sector as an allocated sector */
         while (cur_sector < total_sectors &&
@@ -280,7 +280,7 @@ static int mig_save_device_bulk(QEMUFile *f, BlkMigDevState *bmds)
             }
             cur_sector += count >> BDRV_SECTOR_BITS;
         }
-        qemu_mutex_unlock_iothread();
+        bql_unlock();
     }
 
     if (cur_sector >= total_sectors) {
@@ -316,12 +316,12 @@ static int mig_save_device_bulk(QEMUFile *f, BlkMigDevState *bmds)
      * I/O runs in the main loop AioContext (see
      * qemu_get_current_aio_context()).
      */
-    qemu_mutex_lock_iothread();
+    bql_lock();
     bdrv_reset_dirty_bitmap(bmds->dirty_bitmap, cur_sector * BDRV_SECTOR_SIZE,
                             nr_sectors * BDRV_SECTOR_SIZE);
     blk->aiocb = blk_aio_preadv(bb, cur_sector * BDRV_SECTOR_SIZE, &blk->qiov,
                                 0, blk_mig_read_cb, blk);
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
 
     bmds->cur_sector = cur_sector + nr_sectors;
     return (bmds->cur_sector >= total_sectors);
@@ -770,9 +770,9 @@ static int block_save_iterate(QEMUFile *f, void *opaque)
             /* Always called with iothread lock taken for
              * simplicity, block_save_complete also calls it.
              */
-            qemu_mutex_lock_iothread();
+            bql_lock();
             ret = blk_mig_save_dirty_block(f, 1);
-            qemu_mutex_unlock_iothread();
+            bql_unlock();
         }
         if (ret < 0) {
             return ret;
@@ -844,9 +844,9 @@ static void block_state_pending(void *opaque, uint64_t *must_precopy,
     /* Estimate pending number of bytes to send */
     uint64_t pending;
 
-    qemu_mutex_lock_iothread();
+    bql_lock();
     pending = get_remaining_dirty();
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
 
     blk_mig_lock();
     pending += block_mig_state.submitted * BLK_MIG_BLOCK_SIZE +
diff --git a/migration/colo.c b/migration/colo.c
index 4447e34914..2a74efdd77 100644
--- a/migration/colo.c
+++ b/migration/colo.c
@@ -420,13 +420,13 @@ static int colo_do_checkpoint_transaction(MigrationState *s,
     qio_channel_io_seek(QIO_CHANNEL(bioc), 0, 0, NULL);
     bioc->usage = 0;
 
-    qemu_mutex_lock_iothread();
+    bql_lock();
     if (failover_get_state() != FAILOVER_STATUS_NONE) {
-        qemu_mutex_unlock_iothread();
+        bql_unlock();
         goto out;
     }
     vm_stop_force_state(RUN_STATE_COLO);
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
     trace_colo_vm_state_change("run", "stop");
     /*
      * Failover request bh could be called after vm_stop_force_state(),
@@ -435,23 +435,23 @@ static int colo_do_checkpoint_transaction(MigrationState *s,
     if (failover_get_state() != FAILOVER_STATUS_NONE) {
         goto out;
     }
-    qemu_mutex_lock_iothread();
+    bql_lock();
 
     replication_do_checkpoint_all(&local_err);
     if (local_err) {
-        qemu_mutex_unlock_iothread();
+        bql_unlock();
         goto out;
     }
 
     colo_send_message(s->to_dst_file, COLO_MESSAGE_VMSTATE_SEND, &local_err);
     if (local_err) {
-        qemu_mutex_unlock_iothread();
+        bql_unlock();
         goto out;
     }
     /* Note: device state is saved into buffer */
     ret = qemu_save_device_state(fb);
 
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
     if (ret < 0) {
         goto out;
     }
@@ -504,9 +504,9 @@ static int colo_do_checkpoint_transaction(MigrationState *s,
 
     ret = 0;
 
-    qemu_mutex_lock_iothread();
+    bql_lock();
     vm_start();
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
     trace_colo_vm_state_change("stop", "run");
 
 out:
@@ -557,15 +557,15 @@ static void colo_process_checkpoint(MigrationState *s)
     fb = qemu_file_new_output(QIO_CHANNEL(bioc));
     object_unref(OBJECT(bioc));
 
-    qemu_mutex_lock_iothread();
+    bql_lock();
     replication_start_all(REPLICATION_MODE_PRIMARY, &local_err);
     if (local_err) {
-        qemu_mutex_unlock_iothread();
+        bql_unlock();
         goto out;
     }
 
     vm_start();
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
     trace_colo_vm_state_change("stop", "run");
 
     timer_mod(s->colo_delay_timer, qemu_clock_get_ms(QEMU_CLOCK_HOST) +
@@ -639,14 +639,14 @@ out:
 
 void migrate_start_colo_process(MigrationState *s)
 {
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
     qemu_event_init(&s->colo_checkpoint_event, false);
     s->colo_delay_timer =  timer_new_ms(QEMU_CLOCK_HOST,
                                 colo_checkpoint_notify, s);
 
     qemu_sem_init(&s->colo_exit_sem, 0);
     colo_process_checkpoint(s);
-    qemu_mutex_lock_iothread();
+    bql_lock();
 }
 
 static void colo_incoming_process_checkpoint(MigrationIncomingState *mis,
@@ -657,9 +657,9 @@ static void colo_incoming_process_checkpoint(MigrationIncomingState *mis,
     Error *local_err = NULL;
     int ret;
 
-    qemu_mutex_lock_iothread();
+    bql_lock();
     vm_stop_force_state(RUN_STATE_COLO);
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
     trace_colo_vm_state_change("run", "stop");
 
     /* FIXME: This is unnecessary for periodic checkpoint mode */
@@ -677,10 +677,10 @@ static void colo_incoming_process_checkpoint(MigrationIncomingState *mis,
         return;
     }
 
-    qemu_mutex_lock_iothread();
+    bql_lock();
     cpu_synchronize_all_states();
     ret = qemu_loadvm_state_main(mis->from_src_file, mis);
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
 
     if (ret < 0) {
         error_setg(errp, "Load VM's live state (ram) error");
@@ -719,14 +719,14 @@ static void colo_incoming_process_checkpoint(MigrationIncomingState *mis,
         return;
     }
 
-    qemu_mutex_lock_iothread();
+    bql_lock();
     vmstate_loading = true;
     colo_flush_ram_cache();
     ret = qemu_load_device_state(fb);
     if (ret < 0) {
         error_setg(errp, "COLO: load device state failed");
         vmstate_loading = false;
-        qemu_mutex_unlock_iothread();
+        bql_unlock();
         return;
     }
 
@@ -734,7 +734,7 @@ static void colo_incoming_process_checkpoint(MigrationIncomingState *mis,
     if (local_err) {
         error_propagate(errp, local_err);
         vmstate_loading = false;
-        qemu_mutex_unlock_iothread();
+        bql_unlock();
         return;
     }
 
@@ -743,7 +743,7 @@ static void colo_incoming_process_checkpoint(MigrationIncomingState *mis,
     if (local_err) {
         error_propagate(errp, local_err);
         vmstate_loading = false;
-        qemu_mutex_unlock_iothread();
+        bql_unlock();
         return;
     }
     /* Notify all filters of all NIC to do checkpoint */
@@ -752,13 +752,13 @@ static void colo_incoming_process_checkpoint(MigrationIncomingState *mis,
     if (local_err) {
         error_propagate(errp, local_err);
         vmstate_loading = false;
-        qemu_mutex_unlock_iothread();
+        bql_unlock();
         return;
     }
 
     vmstate_loading = false;
     vm_start();
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
     trace_colo_vm_state_change("stop", "run");
 
     if (failover_get_state() == FAILOVER_STATUS_RELAUNCH) {
@@ -851,14 +851,14 @@ static void *colo_process_incoming_thread(void *opaque)
     fb = qemu_file_new_input(QIO_CHANNEL(bioc));
     object_unref(OBJECT(bioc));
 
-    qemu_mutex_lock_iothread();
+    bql_lock();
     replication_start_all(REPLICATION_MODE_SECONDARY, &local_err);
     if (local_err) {
-        qemu_mutex_unlock_iothread();
+        bql_unlock();
         goto out;
     }
     vm_start();
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
     trace_colo_vm_state_change("stop", "run");
 
     colo_send_message(mis->to_src_file, COLO_MESSAGE_CHECKPOINT_READY,
@@ -920,7 +920,7 @@ int coroutine_fn colo_incoming_co(void)
     Error *local_err = NULL;
     QemuThread th;
 
-    assert(qemu_mutex_iothread_locked());
+    assert(bql_locked());
 
     if (!migration_incoming_colo_enabled()) {
         return 0;
@@ -940,10 +940,10 @@ int coroutine_fn colo_incoming_co(void)
     qemu_coroutine_yield();
     mis->colo_incoming_co = NULL;
 
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
     /* Wait checkpoint incoming thread exit before free resource */
     qemu_thread_join(&th);
-    qemu_mutex_lock_iothread();
+    bql_lock();
 
     /* We hold the global iothread lock, so it is safe here */
     colo_release_ram_cache();
diff --git a/migration/dirtyrate.c b/migration/dirtyrate.c
index 62d86b8be2..1d2e85746f 100644
--- a/migration/dirtyrate.c
+++ b/migration/dirtyrate.c
@@ -90,13 +90,13 @@ static int64_t do_calculate_dirtyrate(DirtyPageRecord dirty_pages,
 
 void global_dirty_log_change(unsigned int flag, bool start)
 {
-    qemu_mutex_lock_iothread();
+    bql_lock();
     if (start) {
         memory_global_dirty_log_start(flag);
     } else {
         memory_global_dirty_log_stop(flag);
     }
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
 }
 
 /*
@@ -106,12 +106,12 @@ void global_dirty_log_change(unsigned int flag, bool start)
  */
 static void global_dirty_log_sync(unsigned int flag, bool one_shot)
 {
-    qemu_mutex_lock_iothread();
+    bql_lock();
     memory_global_dirty_log_sync(false);
     if (one_shot) {
         memory_global_dirty_log_stop(flag);
     }
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
 }
 
 static DirtyPageRecord *vcpu_dirty_stat_alloc(VcpuStat *stat)
@@ -609,7 +609,7 @@ static void calculate_dirtyrate_dirty_bitmap(struct DirtyRateConfig config)
     int64_t start_time;
     DirtyPageRecord dirty_pages;
 
-    qemu_mutex_lock_iothread();
+    bql_lock();
     memory_global_dirty_log_start(GLOBAL_DIRTY_DIRTY_RATE);
 
     /*
@@ -626,7 +626,7 @@ static void calculate_dirtyrate_dirty_bitmap(struct DirtyRateConfig config)
      * KVM_DIRTY_LOG_MANUAL_PROTECT_ENABLE cap is enabled.
      */
     dirtyrate_manual_reset_protect();
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
 
     record_dirtypages_bitmap(&dirty_pages, true);
 
diff --git a/migration/migration.c b/migration/migration.c
index 454cd4ec1f..be173cd0f9 100644
--- a/migration/migration.c
+++ b/migration/migration.c
@@ -1283,12 +1283,12 @@ static void migrate_fd_cleanup(MigrationState *s)
         QEMUFile *tmp;
 
         trace_migrate_fd_cleanup();
-        qemu_mutex_unlock_iothread();
+        bql_unlock();
         if (s->migration_thread_running) {
             qemu_thread_join(&s->thread);
             s->migration_thread_running = false;
         }
-        qemu_mutex_lock_iothread();
+        bql_lock();
 
         multifd_save_cleanup();
         qemu_mutex_lock(&s->qemu_file_lock);
@@ -2396,7 +2396,7 @@ static int postcopy_start(MigrationState *ms, Error **errp)
     }
 
     trace_postcopy_start();
-    qemu_mutex_lock_iothread();
+    bql_lock();
     trace_postcopy_start_set_run();
 
     migration_downtime_start(ms);
@@ -2504,7 +2504,7 @@ static int postcopy_start(MigrationState *ms, Error **errp)
 
     migration_downtime_end(ms);
 
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
 
     if (migrate_postcopy_ram()) {
         /*
@@ -2545,7 +2545,7 @@ fail:
             error_report_err(local_err);
         }
     }
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
     return -1;
 }
 
@@ -2579,14 +2579,14 @@ static int migration_maybe_pause(MigrationState *s,
      * wait for the 'pause_sem' semaphore.
      */
     if (s->state != MIGRATION_STATUS_CANCELLING) {
-        qemu_mutex_unlock_iothread();
+        bql_unlock();
         migrate_set_state(&s->state, *current_active_state,
                           MIGRATION_STATUS_PRE_SWITCHOVER);
         qemu_sem_wait(&s->pause_sem);
         migrate_set_state(&s->state, MIGRATION_STATUS_PRE_SWITCHOVER,
                           new_state);
         *current_active_state = new_state;
-        qemu_mutex_lock_iothread();
+        bql_lock();
     }
 
     return s->state == new_state ? 0 : -EINVAL;
@@ -2597,7 +2597,7 @@ static int migration_completion_precopy(MigrationState *s,
 {
     int ret;
 
-    qemu_mutex_lock_iothread();
+    bql_lock();
     migration_downtime_start(s);
 
     s->vm_old_state = runstate_get();
@@ -2624,7 +2624,7 @@ static int migration_completion_precopy(MigrationState *s,
     ret = qemu_savevm_state_complete_precopy(s->to_dst_file, false,
                                              s->block_inactive);
 out_unlock:
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
     return ret;
 }
 
@@ -2632,9 +2632,9 @@ static void migration_completion_postcopy(MigrationState *s)
 {
     trace_migration_completion_postcopy_end();
 
-    qemu_mutex_lock_iothread();
+    bql_lock();
     qemu_savevm_state_complete_postcopy(s->to_dst_file);
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
 
     /*
      * Shutdown the postcopy fast path thread.  This is only needed when dest
@@ -2658,14 +2658,14 @@ static void migration_completion_failed(MigrationState *s,
          */
         Error *local_err = NULL;
 
-        qemu_mutex_lock_iothread();
+        bql_lock();
         bdrv_activate_all(&local_err);
         if (local_err) {
             error_report_err(local_err);
         } else {
             s->block_inactive = false;
         }
-        qemu_mutex_unlock_iothread();
+        bql_unlock();
     }
 
     migrate_set_state(&s->state, current_active_state,
@@ -3105,7 +3105,7 @@ static void migration_iteration_finish(MigrationState *s)
     /* If we enabled cpu throttling for auto-converge, turn it off. */
     cpu_throttle_stop();
 
-    qemu_mutex_lock_iothread();
+    bql_lock();
     switch (s->state) {
     case MIGRATION_STATUS_COMPLETED:
         migration_calculate_complete(s);
@@ -3136,7 +3136,7 @@ static void migration_iteration_finish(MigrationState *s)
         break;
     }
     migrate_fd_cleanup_schedule(s);
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
 }
 
 static void bg_migration_iteration_finish(MigrationState *s)
@@ -3148,7 +3148,7 @@ static void bg_migration_iteration_finish(MigrationState *s)
      */
     ram_write_tracking_stop();
 
-    qemu_mutex_lock_iothread();
+    bql_lock();
     switch (s->state) {
     case MIGRATION_STATUS_COMPLETED:
         migration_calculate_complete(s);
@@ -3167,7 +3167,7 @@ static void bg_migration_iteration_finish(MigrationState *s)
     }
 
     migrate_fd_cleanup_schedule(s);
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
 }
 
 /*
@@ -3289,9 +3289,9 @@ static void *migration_thread(void *opaque)
     object_ref(OBJECT(s));
     update_iteration_initial_status(s);
 
-    qemu_mutex_lock_iothread();
+    bql_lock();
     qemu_savevm_state_header(s->to_dst_file);
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
 
     /*
      * If we opened the return path, we need to make sure dst has it
@@ -3319,9 +3319,9 @@ static void *migration_thread(void *opaque)
         qemu_savevm_send_colo_enable(s->to_dst_file);
     }
 
-    qemu_mutex_lock_iothread();
+    bql_lock();
     qemu_savevm_state_setup(s->to_dst_file);
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
 
     qemu_savevm_wait_unplug(s, MIGRATION_STATUS_SETUP,
                                MIGRATION_STATUS_ACTIVE);
@@ -3432,10 +3432,10 @@ static void *bg_migration_thread(void *opaque)
     ram_write_tracking_prepare();
 #endif
 
-    qemu_mutex_lock_iothread();
+    bql_lock();
     qemu_savevm_state_header(s->to_dst_file);
     qemu_savevm_state_setup(s->to_dst_file);
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
 
     qemu_savevm_wait_unplug(s, MIGRATION_STATUS_SETUP,
                                MIGRATION_STATUS_ACTIVE);
@@ -3445,7 +3445,7 @@ static void *bg_migration_thread(void *opaque)
     trace_migration_thread_setup_complete();
     migration_downtime_start(s);
 
-    qemu_mutex_lock_iothread();
+    bql_lock();
 
     s->vm_old_state = runstate_get();
 
@@ -3483,7 +3483,7 @@ static void *bg_migration_thread(void *opaque)
     s->vm_start_bh = qemu_bh_new(bg_migration_vm_start_bh, s);
     qemu_bh_schedule(s->vm_start_bh);
 
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
 
     while (migration_is_active(s)) {
         MigIterateState iter_state = bg_migration_iteration_run(s);
@@ -3512,7 +3512,7 @@ fail:
     if (early_fail) {
         migrate_set_state(&s->state, MIGRATION_STATUS_ACTIVE,
                 MIGRATION_STATUS_FAILED);
-        qemu_mutex_unlock_iothread();
+        bql_unlock();
     }
 
     bg_migration_iteration_finish(s);
diff --git a/migration/ram.c b/migration/ram.c
index 8c7886ab79..08dc7e2909 100644
--- a/migration/ram.c
+++ b/migration/ram.c
@@ -2984,9 +2984,9 @@ static int ram_save_setup(QEMUFile *f, void *opaque)
     migration_ops = g_malloc0(sizeof(MigrationOps));
     migration_ops->ram_save_target_page = ram_save_target_page_legacy;
 
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
     ret = multifd_send_sync_main(f);
-    qemu_mutex_lock_iothread();
+    bql_lock();
     if (ret < 0) {
         return ret;
     }
@@ -3221,11 +3221,11 @@ static void ram_state_pending_exact(void *opaque, uint64_t *must_precopy,
     uint64_t remaining_size = rs->migration_dirty_pages * TARGET_PAGE_SIZE;
 
     if (!migration_in_postcopy() && remaining_size < s->threshold_size) {
-        qemu_mutex_lock_iothread();
+        bql_lock();
         WITH_RCU_READ_LOCK_GUARD() {
             migration_bitmap_sync_precopy(rs, false);
         }
-        qemu_mutex_unlock_iothread();
+        bql_unlock();
         remaining_size = rs->migration_dirty_pages * TARGET_PAGE_SIZE;
     }
 
@@ -3453,7 +3453,7 @@ void colo_incoming_start_dirty_log(void)
 {
     RAMBlock *block = NULL;
     /* For memory_global_dirty_log_start below. */
-    qemu_mutex_lock_iothread();
+    bql_lock();
     qemu_mutex_lock_ramlist();
 
     memory_global_dirty_log_sync(false);
@@ -3467,7 +3467,7 @@ void colo_incoming_start_dirty_log(void)
     }
     ram_state->migration_dirty_pages = 0;
     qemu_mutex_unlock_ramlist();
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
 }
 
 /* It is need to hold the global lock to call this helper */
diff --git a/replay/replay-internal.c b/replay/replay-internal.c
index 77d0c82327..3e08e381cb 100644
--- a/replay/replay-internal.c
+++ b/replay/replay-internal.c
@@ -216,7 +216,7 @@ void replay_mutex_lock(void)
 {
     if (replay_mode != REPLAY_MODE_NONE) {
         unsigned long id;
-        g_assert(!qemu_mutex_iothread_locked());
+        g_assert(!bql_locked());
         g_assert(!replay_mutex_locked());
         qemu_mutex_lock(&lock);
         id = mutex_tail++;
diff --git a/semihosting/console.c b/semihosting/console.c
index 5d61e8207e..60102bbab6 100644
--- a/semihosting/console.c
+++ b/semihosting/console.c
@@ -43,7 +43,7 @@ static SemihostingConsole console;
 static int console_can_read(void *opaque)
 {
     SemihostingConsole *c = opaque;
-    g_assert(qemu_mutex_iothread_locked());
+    g_assert(bql_locked());
     return (int)fifo8_num_free(&c->fifo);
 }
 
@@ -58,7 +58,7 @@ static void console_wake_up(gpointer data, gpointer user_data)
 static void console_read(void *opaque, const uint8_t *buf, int size)
 {
     SemihostingConsole *c = opaque;
-    g_assert(qemu_mutex_iothread_locked());
+    g_assert(bql_locked());
     while (size-- && !fifo8_is_full(&c->fifo)) {
         fifo8_push(&c->fifo, *buf++);
     }
@@ -70,7 +70,7 @@ bool qemu_semihosting_console_ready(void)
 {
     SemihostingConsole *c = &console;
 
-    g_assert(qemu_mutex_iothread_locked());
+    g_assert(bql_locked());
     return !fifo8_is_empty(&c->fifo);
 }
 
@@ -78,7 +78,7 @@ void qemu_semihosting_console_block_until_ready(CPUState *cs)
 {
     SemihostingConsole *c = &console;
 
-    g_assert(qemu_mutex_iothread_locked());
+    g_assert(bql_locked());
 
     /* Block if the fifo is completely empty. */
     if (fifo8_is_empty(&c->fifo)) {
diff --git a/stubs/iothread-lock.c b/stubs/iothread-lock.c
index 5b45b7fc8b..d7890e5581 100644
--- a/stubs/iothread-lock.c
+++ b/stubs/iothread-lock.c
@@ -1,15 +1,15 @@
 #include "qemu/osdep.h"
 #include "qemu/main-loop.h"
 
-bool qemu_mutex_iothread_locked(void)
+bool bql_locked(void)
 {
     return false;
 }
 
-void qemu_mutex_lock_iothread_impl(const char *file, int line)
+void bql_lock_impl(const char *file, int line)
 {
 }
 
-void qemu_mutex_unlock_iothread(void)
+void bql_unlock(void)
 {
 }
diff --git a/system/cpu-throttle.c b/system/cpu-throttle.c
index d9bb30a223..786a9a5639 100644
--- a/system/cpu-throttle.c
+++ b/system/cpu-throttle.c
@@ -57,9 +57,9 @@ static void cpu_throttle_thread(CPUState *cpu, run_on_cpu_data opaque)
             qemu_cond_timedwait_iothread(cpu->halt_cond,
                                          sleeptime_ns / SCALE_MS);
         } else {
-            qemu_mutex_unlock_iothread();
+            bql_unlock();
             g_usleep(sleeptime_ns / SCALE_US);
-            qemu_mutex_lock_iothread();
+            bql_lock();
         }
         sleeptime_ns = endtime_ns - qemu_clock_get_ns(QEMU_CLOCK_REALTIME);
     }
diff --git a/system/cpus.c b/system/cpus.c
index 7d2c28b1d1..1ede629f1f 100644
--- a/system/cpus.c
+++ b/system/cpus.c
@@ -65,7 +65,8 @@
 
 #endif /* CONFIG_LINUX */
 
-static QemuMutex qemu_global_mutex;
+/* The Big QEMU Lock (BQL) */
+static QemuMutex bql;
 
 /*
  * The chosen accelerator is supposed to register this.
@@ -408,14 +409,14 @@ void qemu_init_cpu_loop(void)
     qemu_init_sigbus();
     qemu_cond_init(&qemu_cpu_cond);
     qemu_cond_init(&qemu_pause_cond);
-    qemu_mutex_init(&qemu_global_mutex);
+    qemu_mutex_init(&bql);
 
     qemu_thread_get_self(&io_thread);
 }
 
 void run_on_cpu(CPUState *cpu, run_on_cpu_func func, run_on_cpu_data data)
 {
-    do_run_on_cpu(cpu, func, data, &qemu_global_mutex);
+    do_run_on_cpu(cpu, func, data, &bql);
 }
 
 static void qemu_cpu_stop(CPUState *cpu, bool exit)
@@ -447,7 +448,7 @@ void qemu_wait_io_event(CPUState *cpu)
             slept = true;
             qemu_plugin_vcpu_idle_cb(cpu);
         }
-        qemu_cond_wait(cpu->halt_cond, &qemu_global_mutex);
+        qemu_cond_wait(cpu->halt_cond, &bql);
     }
     if (slept) {
         qemu_plugin_vcpu_resume_cb(cpu);
@@ -500,46 +501,46 @@ bool qemu_in_vcpu_thread(void)
     return current_cpu && qemu_cpu_is_self(current_cpu);
 }
 
-QEMU_DEFINE_STATIC_CO_TLS(bool, iothread_locked)
+QEMU_DEFINE_STATIC_CO_TLS(bool, bql_locked)
 
-bool qemu_mutex_iothread_locked(void)
+bool bql_locked(void)
 {
-    return get_iothread_locked();
+    return get_bql_locked();
 }
 
 bool qemu_in_main_thread(void)
 {
-    return qemu_mutex_iothread_locked();
+    return bql_locked();
 }
 
 /*
  * The BQL is taken from so many places that it is worth profiling the
  * callers directly, instead of funneling them all through a single function.
  */
-void qemu_mutex_lock_iothread_impl(const char *file, int line)
+void bql_lock_impl(const char *file, int line)
 {
-    QemuMutexLockFunc bql_lock = qatomic_read(&qemu_bql_mutex_lock_func);
+    QemuMutexLockFunc bql_lock_fn = qatomic_read(&bql_mutex_lock_func);
 
-    g_assert(!qemu_mutex_iothread_locked());
-    bql_lock(&qemu_global_mutex, file, line);
-    set_iothread_locked(true);
+    g_assert(!bql_locked());
+    bql_lock_fn(&bql, file, line);
+    set_bql_locked(true);
 }
 
-void qemu_mutex_unlock_iothread(void)
+void bql_unlock(void)
 {
-    g_assert(qemu_mutex_iothread_locked());
-    set_iothread_locked(false);
-    qemu_mutex_unlock(&qemu_global_mutex);
+    g_assert(bql_locked());
+    set_bql_locked(false);
+    qemu_mutex_unlock(&bql);
 }
 
 void qemu_cond_wait_iothread(QemuCond *cond)
 {
-    qemu_cond_wait(cond, &qemu_global_mutex);
+    qemu_cond_wait(cond, &bql);
 }
 
 void qemu_cond_timedwait_iothread(QemuCond *cond, int ms)
 {
-    qemu_cond_timedwait(cond, &qemu_global_mutex, ms);
+    qemu_cond_timedwait(cond, &bql, ms);
 }
 
 /* signal CPU creation */
@@ -590,15 +591,15 @@ void pause_all_vcpus(void)
     replay_mutex_unlock();
 
     while (!all_vcpus_paused()) {
-        qemu_cond_wait(&qemu_pause_cond, &qemu_global_mutex);
+        qemu_cond_wait(&qemu_pause_cond, &bql);
         CPU_FOREACH(cpu) {
             qemu_cpu_kick(cpu);
         }
     }
 
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
     replay_mutex_lock();
-    qemu_mutex_lock_iothread();
+    bql_lock();
 }
 
 void cpu_resume(CPUState *cpu)
@@ -627,9 +628,9 @@ void cpu_remove_sync(CPUState *cpu)
     cpu->stop = true;
     cpu->unplug = true;
     qemu_cpu_kick(cpu);
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
     qemu_thread_join(cpu->thread);
-    qemu_mutex_lock_iothread();
+    bql_lock();
 }
 
 void cpus_register_accel(const AccelOpsClass *ops)
@@ -668,7 +669,7 @@ void qemu_init_vcpu(CPUState *cpu)
     cpus_accel->create_vcpu_thread(cpu);
 
     while (!cpu->created) {
-        qemu_cond_wait(&qemu_cpu_cond, &qemu_global_mutex);
+        qemu_cond_wait(&qemu_cpu_cond, &bql);
     }
 }
 
diff --git a/system/dirtylimit.c b/system/dirtylimit.c
index 495c7a7082..b5607eb8c2 100644
--- a/system/dirtylimit.c
+++ b/system/dirtylimit.c
@@ -148,9 +148,9 @@ void vcpu_dirty_rate_stat_stop(void)
 {
     qatomic_set(&vcpu_dirty_rate_stat->running, 0);
     dirtylimit_state_unlock();
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
     qemu_thread_join(&vcpu_dirty_rate_stat->thread);
-    qemu_mutex_lock_iothread();
+    bql_lock();
     dirtylimit_state_lock();
 }
 
diff --git a/system/memory.c b/system/memory.c
index 9ceb229d28..a229a79988 100644
--- a/system/memory.c
+++ b/system/memory.c
@@ -1119,7 +1119,7 @@ void memory_region_transaction_commit(void)
     AddressSpace *as;
 
     assert(memory_region_transaction_depth);
-    assert(qemu_mutex_iothread_locked());
+    assert(bql_locked());
 
     --memory_region_transaction_depth;
     if (!memory_region_transaction_depth) {
diff --git a/system/physmem.c b/system/physmem.c
index a63853a7bc..4937e67bad 100644
--- a/system/physmem.c
+++ b/system/physmem.c
@@ -2639,8 +2639,8 @@ bool prepare_mmio_access(MemoryRegion *mr)
 {
     bool release_lock = false;
 
-    if (!qemu_mutex_iothread_locked()) {
-        qemu_mutex_lock_iothread();
+    if (!bql_locked()) {
+        bql_lock();
         release_lock = true;
     }
     if (mr->flush_coalesced_mmio) {
@@ -2721,7 +2721,7 @@ static MemTxResult flatview_write_continue(FlatView *fv, hwaddr addr,
         }
 
         if (release_lock) {
-            qemu_mutex_unlock_iothread();
+            bql_unlock();
             release_lock = false;
         }
 
@@ -2799,7 +2799,7 @@ MemTxResult flatview_read_continue(FlatView *fv, hwaddr addr,
         }
 
         if (release_lock) {
-            qemu_mutex_unlock_iothread();
+            bql_unlock();
             release_lock = false;
         }
 
diff --git a/system/runstate.c b/system/runstate.c
index 621a023120..fb07b7b71a 100644
--- a/system/runstate.c
+++ b/system/runstate.c
@@ -819,7 +819,7 @@ void qemu_init_subsystems(void)
 
     qemu_init_cpu_list();
     qemu_init_cpu_loop();
-    qemu_mutex_lock_iothread();
+    bql_lock();
 
     atexit(qemu_run_exit_notifiers);
 
diff --git a/system/watchpoint.c b/system/watchpoint.c
index ba5ad13352..b76007ebf6 100644
--- a/system/watchpoint.c
+++ b/system/watchpoint.c
@@ -155,9 +155,9 @@ void cpu_check_watchpoint(CPUState *cpu, vaddr addr, vaddr len,
          * Now raise the debug interrupt so that it will
          * trigger after the current instruction.
          */
-        qemu_mutex_lock_iothread();
+        bql_lock();
         cpu_interrupt(cpu, CPU_INTERRUPT_DEBUG);
-        qemu_mutex_unlock_iothread();
+        bql_unlock();
         return;
     }
 
diff --git a/target/arm/arm-powerctl.c b/target/arm/arm-powerctl.c
index c078849403..8850381565 100644
--- a/target/arm/arm-powerctl.c
+++ b/target/arm/arm-powerctl.c
@@ -88,7 +88,7 @@ static void arm_set_cpu_on_async_work(CPUState *target_cpu_state,
     g_free(info);
 
     /* Finally set the power status */
-    assert(qemu_mutex_iothread_locked());
+    assert(bql_locked());
     target_cpu->power_state = PSCI_ON;
 }
 
@@ -99,7 +99,7 @@ int arm_set_cpu_on(uint64_t cpuid, uint64_t entry, uint64_t context_id,
     ARMCPU *target_cpu;
     struct CpuOnInfo *info;
 
-    assert(qemu_mutex_iothread_locked());
+    assert(bql_locked());
 
     DPRINTF("cpu %" PRId64 " (EL %d, %s) @ 0x%" PRIx64 " with R0 = 0x%" PRIx64
             "\n", cpuid, target_el, target_aa64 ? "aarch64" : "aarch32", entry,
@@ -196,7 +196,7 @@ static void arm_set_cpu_on_and_reset_async_work(CPUState *target_cpu_state,
     target_cpu_state->halted = 0;
 
     /* Finally set the power status */
-    assert(qemu_mutex_iothread_locked());
+    assert(bql_locked());
     target_cpu->power_state = PSCI_ON;
 }
 
@@ -205,7 +205,7 @@ int arm_set_cpu_on_and_reset(uint64_t cpuid)
     CPUState *target_cpu_state;
     ARMCPU *target_cpu;
 
-    assert(qemu_mutex_iothread_locked());
+    assert(bql_locked());
 
     /* Retrieve the cpu we are powering up */
     target_cpu_state = arm_get_cpu_by_id(cpuid);
@@ -247,7 +247,7 @@ static void arm_set_cpu_off_async_work(CPUState *target_cpu_state,
 {
     ARMCPU *target_cpu = ARM_CPU(target_cpu_state);
 
-    assert(qemu_mutex_iothread_locked());
+    assert(bql_locked());
     target_cpu->power_state = PSCI_OFF;
     target_cpu_state->halted = 1;
     target_cpu_state->exception_index = EXCP_HLT;
@@ -258,7 +258,7 @@ int arm_set_cpu_off(uint64_t cpuid)
     CPUState *target_cpu_state;
     ARMCPU *target_cpu;
 
-    assert(qemu_mutex_iothread_locked());
+    assert(bql_locked());
 
     DPRINTF("cpu %" PRId64 "\n", cpuid);
 
@@ -294,7 +294,7 @@ int arm_reset_cpu(uint64_t cpuid)
     CPUState *target_cpu_state;
     ARMCPU *target_cpu;
 
-    assert(qemu_mutex_iothread_locked());
+    assert(bql_locked());
 
     DPRINTF("cpu %" PRId64 "\n", cpuid);
 
diff --git a/target/arm/helper.c b/target/arm/helper.c
index a2a7f6c29f..7dfd0a1094 100644
--- a/target/arm/helper.c
+++ b/target/arm/helper.c
@@ -5851,7 +5851,7 @@ static void do_hcr_write(CPUARMState *env, uint64_t value, uint64_t valid_mask)
      * VFIQ are masked unless running at EL0 or EL1, and HCR
      * can only be written at EL2.
      */
-    g_assert(qemu_mutex_iothread_locked());
+    g_assert(bql_locked());
     arm_cpu_update_virq(cpu);
     arm_cpu_update_vfiq(cpu);
     arm_cpu_update_vserr(cpu);
@@ -11273,7 +11273,7 @@ void arm_cpu_do_interrupt(CPUState *cs)
      * BQL needs to be held for any modification of
      * cs->interrupt_request.
      */
-    g_assert(qemu_mutex_iothread_locked());
+    g_assert(bql_locked());
 
     arm_call_pre_el_change_hook(cpu);
 
diff --git a/target/arm/hvf/hvf.c b/target/arm/hvf/hvf.c
index 203d88f80b..a537a5bc94 100644
--- a/target/arm/hvf/hvf.c
+++ b/target/arm/hvf/hvf.c
@@ -1721,9 +1721,9 @@ static void hvf_wait_for_ipi(CPUState *cpu, struct timespec *ts)
      * sleeping.
      */
     qatomic_set_mb(&cpu->thread_kicked, false);
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
     pselect(0, 0, 0, 0, ts, &cpu->accel->unblock_ipi_mask);
-    qemu_mutex_lock_iothread();
+    bql_lock();
 }
 
 static void hvf_wfi(CPUState *cpu)
@@ -1824,7 +1824,7 @@ int hvf_vcpu_exec(CPUState *cpu)
 
     flush_cpu_state(cpu);
 
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
     assert_hvf_ok(hv_vcpu_run(cpu->accel->fd));
 
     /* handle VMEXIT */
@@ -1833,7 +1833,7 @@ int hvf_vcpu_exec(CPUState *cpu)
     uint32_t ec = syn_get_ec(syndrome);
 
     ret = 0;
-    qemu_mutex_lock_iothread();
+    bql_lock();
     switch (exit_reason) {
     case HV_EXIT_REASON_EXCEPTION:
         /* This is the main one, handle below. */
diff --git a/target/arm/kvm.c b/target/arm/kvm.c
index c5a3183843..8f52b211f9 100644
--- a/target/arm/kvm.c
+++ b/target/arm/kvm.c
@@ -1250,7 +1250,7 @@ MemTxAttrs kvm_arch_post_run(CPUState *cs, struct kvm_run *run)
     if (run->s.regs.device_irq_level != cpu->device_irq_level) {
         switched_level = cpu->device_irq_level ^ run->s.regs.device_irq_level;
 
-        qemu_mutex_lock_iothread();
+        bql_lock();
 
         if (switched_level & KVM_ARM_DEV_EL1_VTIMER) {
             qemu_set_irq(cpu->gt_timer_outputs[GTIMER_VIRT],
@@ -1279,7 +1279,7 @@ MemTxAttrs kvm_arch_post_run(CPUState *cs, struct kvm_run *run)
 
         /* We also mark unknown levels as processed to not waste cycles */
         cpu->device_irq_level = run->s.regs.device_irq_level;
-        qemu_mutex_unlock_iothread();
+        bql_unlock();
     }
 
     return MEMTXATTRS_UNSPECIFIED;
@@ -1410,9 +1410,9 @@ static bool kvm_arm_handle_debug(ARMCPU *cpu,
     env->exception.syndrome = debug_exit->hsr;
     env->exception.vaddress = debug_exit->far;
     env->exception.target_el = 1;
-    qemu_mutex_lock_iothread();
+    bql_lock();
     arm_cpu_do_interrupt(cs);
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
 
     return false;
 }
diff --git a/target/arm/ptw.c b/target/arm/ptw.c
index 1762b058ae..0ecd3a36da 100644
--- a/target/arm/ptw.c
+++ b/target/arm/ptw.c
@@ -772,9 +772,9 @@ static uint64_t arm_casq_ptw(CPUARMState *env, uint64_t old_val,
 #if !TCG_OVERSIZED_GUEST
 # error "Unexpected configuration"
 #endif
-    bool locked = qemu_mutex_iothread_locked();
+    bool locked = bql_locked();
     if (!locked) {
-       qemu_mutex_lock_iothread();
+        bql_lock();
     }
     if (ptw->out_be) {
         cur_val = ldq_be_p(host);
@@ -788,7 +788,7 @@ static uint64_t arm_casq_ptw(CPUARMState *env, uint64_t old_val,
         }
     }
     if (!locked) {
-        qemu_mutex_unlock_iothread();
+        bql_unlock();
     }
 #endif
 
diff --git a/target/arm/tcg/helper-a64.c b/target/arm/tcg/helper-a64.c
index 8ad84623d3..198b975f20 100644
--- a/target/arm/tcg/helper-a64.c
+++ b/target/arm/tcg/helper-a64.c
@@ -809,9 +809,9 @@ void HELPER(exception_return)(CPUARMState *env, uint64_t new_pc)
         goto illegal_return;
     }
 
-    qemu_mutex_lock_iothread();
+    bql_lock();
     arm_call_pre_el_change_hook(env_archcpu(env));
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
 
     if (!return_to_aa64) {
         env->aarch64 = false;
@@ -876,9 +876,9 @@ void HELPER(exception_return)(CPUARMState *env, uint64_t new_pc)
      */
     aarch64_sve_change_el(env, cur_el, new_el, return_to_aa64);
 
-    qemu_mutex_lock_iothread();
+    bql_lock();
     arm_call_el_change_hook(env_archcpu(env));
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
 
     return;
 
diff --git a/target/arm/tcg/m_helper.c b/target/arm/tcg/m_helper.c
index a26adb75aa..d1f1e02acc 100644
--- a/target/arm/tcg/m_helper.c
+++ b/target/arm/tcg/m_helper.c
@@ -373,8 +373,8 @@ void HELPER(v7m_preserve_fp_state)(CPUARMState *env)
     bool ts = is_secure && (env->v7m.fpccr[M_REG_S] & R_V7M_FPCCR_TS_MASK);
     bool take_exception;
 
-    /* Take the iothread lock as we are going to touch the NVIC */
-    qemu_mutex_lock_iothread();
+    /* Take the BQL as we are going to touch the NVIC */
+    bql_lock();
 
     /* Check the background context had access to the FPU */
     if (!v7m_cpacr_pass(env, is_secure, is_priv)) {
@@ -428,7 +428,7 @@ void HELPER(v7m_preserve_fp_state)(CPUARMState *env)
     take_exception = !stacked_ok &&
         armv7m_nvic_can_take_pending_exception(env->nvic);
 
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
 
     if (take_exception) {
         raise_exception_ra(env, EXCP_LAZYFP, 0, 1, GETPC());
diff --git a/target/arm/tcg/op_helper.c b/target/arm/tcg/op_helper.c
index 9de0fa2d1f..105ab63ed7 100644
--- a/target/arm/tcg/op_helper.c
+++ b/target/arm/tcg/op_helper.c
@@ -482,9 +482,9 @@ void HELPER(cpsr_write_eret)(CPUARMState *env, uint32_t val)
 {
     uint32_t mask;
 
-    qemu_mutex_lock_iothread();
+    bql_lock();
     arm_call_pre_el_change_hook(env_archcpu(env));
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
 
     mask = aarch32_cpsr_valid_mask(env->features, &env_archcpu(env)->isar);
     cpsr_write(env, val, mask, CPSRWriteExceptionReturn);
@@ -497,9 +497,9 @@ void HELPER(cpsr_write_eret)(CPUARMState *env, uint32_t val)
     env->regs[15] &= (env->thumb ? ~1 : ~3);
     arm_rebuild_hflags(env);
 
-    qemu_mutex_lock_iothread();
+    bql_lock();
     arm_call_el_change_hook(env_archcpu(env));
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
 }
 
 /* Access to user mode registers from privileged modes.  */
@@ -858,9 +858,9 @@ void HELPER(set_cp_reg)(CPUARMState *env, const void *rip, uint32_t value)
     const ARMCPRegInfo *ri = rip;
 
     if (ri->type & ARM_CP_IO) {
-        qemu_mutex_lock_iothread();
+        bql_lock();
         ri->writefn(env, ri, value);
-        qemu_mutex_unlock_iothread();
+        bql_unlock();
     } else {
         ri->writefn(env, ri, value);
     }
@@ -872,9 +872,9 @@ uint32_t HELPER(get_cp_reg)(CPUARMState *env, const void *rip)
     uint32_t res;
 
     if (ri->type & ARM_CP_IO) {
-        qemu_mutex_lock_iothread();
+        bql_lock();
         res = ri->readfn(env, ri);
-        qemu_mutex_unlock_iothread();
+        bql_unlock();
     } else {
         res = ri->readfn(env, ri);
     }
@@ -887,9 +887,9 @@ void HELPER(set_cp_reg64)(CPUARMState *env, const void *rip, uint64_t value)
     const ARMCPRegInfo *ri = rip;
 
     if (ri->type & ARM_CP_IO) {
-        qemu_mutex_lock_iothread();
+        bql_lock();
         ri->writefn(env, ri, value);
-        qemu_mutex_unlock_iothread();
+        bql_unlock();
     } else {
         ri->writefn(env, ri, value);
     }
@@ -901,9 +901,9 @@ uint64_t HELPER(get_cp_reg64)(CPUARMState *env, const void *rip)
     uint64_t res;
 
     if (ri->type & ARM_CP_IO) {
-        qemu_mutex_lock_iothread();
+        bql_lock();
         res = ri->readfn(env, ri);
-        qemu_mutex_unlock_iothread();
+        bql_unlock();
     } else {
         res = ri->readfn(env, ri);
     }
diff --git a/target/arm/tcg/psci.c b/target/arm/tcg/psci.c
index 6c1239bb96..9080a91d9c 100644
--- a/target/arm/tcg/psci.c
+++ b/target/arm/tcg/psci.c
@@ -107,7 +107,7 @@ void arm_handle_psci_call(ARMCPU *cpu)
             }
             target_cpu = ARM_CPU(target_cpu_state);
 
-            g_assert(qemu_mutex_iothread_locked());
+            g_assert(bql_locked());
             ret = target_cpu->power_state;
             break;
         default:
diff --git a/target/hppa/int_helper.c b/target/hppa/int_helper.c
index 98e9d688f6..efe638b36e 100644
--- a/target/hppa/int_helper.c
+++ b/target/hppa/int_helper.c
@@ -84,17 +84,17 @@ void hppa_cpu_alarm_timer(void *opaque)
 void HELPER(write_eirr)(CPUHPPAState *env, target_ulong val)
 {
     env->cr[CR_EIRR] &= ~val;
-    qemu_mutex_lock_iothread();
+    bql_lock();
     eval_interrupt(env_archcpu(env));
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
 }
 
 void HELPER(write_eiem)(CPUHPPAState *env, target_ulong val)
 {
     env->cr[CR_EIEM] = val;
-    qemu_mutex_lock_iothread();
+    bql_lock();
     eval_interrupt(env_archcpu(env));
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
 }
 
 void hppa_cpu_do_interrupt(CPUState *cs)
diff --git a/target/i386/hvf/hvf.c b/target/i386/hvf/hvf.c
index 20b9ca3ef5..11ffdd4c69 100644
--- a/target/i386/hvf/hvf.c
+++ b/target/i386/hvf/hvf.c
@@ -429,9 +429,9 @@ int hvf_vcpu_exec(CPUState *cpu)
         }
         vmx_update_tpr(cpu);
 
-        qemu_mutex_unlock_iothread();
+        bql_unlock();
         if (!cpu_is_bsp(X86_CPU(cpu)) && cpu->halted) {
-            qemu_mutex_lock_iothread();
+            bql_lock();
             return EXCP_HLT;
         }
 
@@ -450,7 +450,7 @@ int hvf_vcpu_exec(CPUState *cpu)
         rip = rreg(cpu->accel->fd, HV_X86_RIP);
         env->eflags = rreg(cpu->accel->fd, HV_X86_RFLAGS);
 
-        qemu_mutex_lock_iothread();
+        bql_lock();
 
         update_apic_tpr(cpu);
         current_cpu = cpu;
diff --git a/target/i386/kvm/hyperv.c b/target/i386/kvm/hyperv.c
index e3ac978648..6825c89af3 100644
--- a/target/i386/kvm/hyperv.c
+++ b/target/i386/kvm/hyperv.c
@@ -45,9 +45,9 @@ void hyperv_x86_synic_update(X86CPU *cpu)
 
 static void async_synic_update(CPUState *cs, run_on_cpu_data data)
 {
-    qemu_mutex_lock_iothread();
+    bql_lock();
     hyperv_x86_synic_update(X86_CPU(cs));
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
 }
 
 int kvm_hv_handle_exit(X86CPU *cpu, struct kvm_hyperv_exit *exit)
diff --git a/target/i386/kvm/kvm.c b/target/i386/kvm/kvm.c
index 4ce80555b4..76a66246eb 100644
--- a/target/i386/kvm/kvm.c
+++ b/target/i386/kvm/kvm.c
@@ -4713,9 +4713,9 @@ void kvm_arch_pre_run(CPUState *cpu, struct kvm_run *run)
     /* Inject NMI */
     if (cpu->interrupt_request & (CPU_INTERRUPT_NMI | CPU_INTERRUPT_SMI)) {
         if (cpu->interrupt_request & CPU_INTERRUPT_NMI) {
-            qemu_mutex_lock_iothread();
+            bql_lock();
             cpu->interrupt_request &= ~CPU_INTERRUPT_NMI;
-            qemu_mutex_unlock_iothread();
+            bql_unlock();
             DPRINTF("injected NMI\n");
             ret = kvm_vcpu_ioctl(cpu, KVM_NMI);
             if (ret < 0) {
@@ -4724,9 +4724,9 @@ void kvm_arch_pre_run(CPUState *cpu, struct kvm_run *run)
             }
         }
         if (cpu->interrupt_request & CPU_INTERRUPT_SMI) {
-            qemu_mutex_lock_iothread();
+            bql_lock();
             cpu->interrupt_request &= ~CPU_INTERRUPT_SMI;
-            qemu_mutex_unlock_iothread();
+            bql_unlock();
             DPRINTF("injected SMI\n");
             ret = kvm_vcpu_ioctl(cpu, KVM_SMI);
             if (ret < 0) {
@@ -4737,7 +4737,7 @@ void kvm_arch_pre_run(CPUState *cpu, struct kvm_run *run)
     }
 
     if (!kvm_pic_in_kernel()) {
-        qemu_mutex_lock_iothread();
+        bql_lock();
     }
 
     /* Force the VCPU out of its inner loop to process any INIT requests
@@ -4790,7 +4790,7 @@ void kvm_arch_pre_run(CPUState *cpu, struct kvm_run *run)
         DPRINTF("setting tpr\n");
         run->cr8 = cpu_get_apic_tpr(x86_cpu->apic_state);
 
-        qemu_mutex_unlock_iothread();
+        bql_unlock();
     }
 }
 
@@ -4838,12 +4838,12 @@ MemTxAttrs kvm_arch_post_run(CPUState *cpu, struct kvm_run *run)
     /* We need to protect the apic state against concurrent accesses from
      * different threads in case the userspace irqchip is used. */
     if (!kvm_irqchip_in_kernel()) {
-        qemu_mutex_lock_iothread();
+        bql_lock();
     }
     cpu_set_apic_tpr(x86_cpu->apic_state, run->cr8);
     cpu_set_apic_base(x86_cpu->apic_state, run->apic_base);
     if (!kvm_irqchip_in_kernel()) {
-        qemu_mutex_unlock_iothread();
+        bql_unlock();
     }
     return cpu_get_mem_attrs(env);
 }
@@ -5277,17 +5277,17 @@ int kvm_arch_handle_exit(CPUState *cs, struct kvm_run *run)
     switch (run->exit_reason) {
     case KVM_EXIT_HLT:
         DPRINTF("handle_hlt\n");
-        qemu_mutex_lock_iothread();
+        bql_lock();
         ret = kvm_handle_halt(cpu);
-        qemu_mutex_unlock_iothread();
+        bql_unlock();
         break;
     case KVM_EXIT_SET_TPR:
         ret = 0;
         break;
     case KVM_EXIT_TPR_ACCESS:
-        qemu_mutex_lock_iothread();
+        bql_lock();
         ret = kvm_handle_tpr_access(cpu);
-        qemu_mutex_unlock_iothread();
+        bql_unlock();
         break;
     case KVM_EXIT_FAIL_ENTRY:
         code = run->fail_entry.hardware_entry_failure_reason;
@@ -5313,9 +5313,9 @@ int kvm_arch_handle_exit(CPUState *cs, struct kvm_run *run)
         break;
     case KVM_EXIT_DEBUG:
         DPRINTF("kvm_exit_debug\n");
-        qemu_mutex_lock_iothread();
+        bql_lock();
         ret = kvm_handle_debug(cpu, &run->debug.arch);
-        qemu_mutex_unlock_iothread();
+        bql_unlock();
         break;
     case KVM_EXIT_HYPERV:
         ret = kvm_hv_handle_exit(cpu, &run->hyperv);
diff --git a/target/i386/kvm/xen-emu.c b/target/i386/kvm/xen-emu.c
index c0631f9cf4..b0ed2e6aeb 100644
--- a/target/i386/kvm/xen-emu.c
+++ b/target/i386/kvm/xen-emu.c
@@ -403,7 +403,7 @@ void kvm_xen_maybe_deassert_callback(CPUState *cs)
 
     /* If the evtchn_upcall_pending flag is cleared, turn the GSI off. */
     if (!vi->evtchn_upcall_pending) {
-        qemu_mutex_lock_iothread();
+        bql_lock();
         /*
          * Check again now we have the lock, because it may have been
          * asserted in the interim. And we don't want to take the lock
@@ -413,7 +413,7 @@ void kvm_xen_maybe_deassert_callback(CPUState *cs)
             X86_CPU(cs)->env.xen_callback_asserted = false;
             xen_evtchn_set_callback_level(0);
         }
-        qemu_mutex_unlock_iothread();
+        bql_unlock();
     }
 }
 
@@ -773,9 +773,9 @@ static bool handle_set_param(struct kvm_xen_exit *exit, X86CPU *cpu,
 
     switch (hp.index) {
     case HVM_PARAM_CALLBACK_IRQ:
-        qemu_mutex_lock_iothread();
+        bql_lock();
         err = xen_evtchn_set_callback_param(hp.value);
-        qemu_mutex_unlock_iothread();
+        bql_unlock();
         xen_set_long_mode(exit->u.hcall.longmode);
         break;
     default:
@@ -1408,7 +1408,7 @@ int kvm_xen_soft_reset(void)
     CPUState *cpu;
     int err;
 
-    assert(qemu_mutex_iothread_locked());
+    assert(bql_locked());
 
     trace_kvm_xen_soft_reset();
 
@@ -1481,9 +1481,9 @@ static int schedop_shutdown(CPUState *cs, uint64_t arg)
         break;
 
     case SHUTDOWN_soft_reset:
-        qemu_mutex_lock_iothread();
+        bql_lock();
         ret = kvm_xen_soft_reset();
-        qemu_mutex_unlock_iothread();
+        bql_unlock();
         break;
 
     default:
diff --git a/target/i386/nvmm/nvmm-accel-ops.c b/target/i386/nvmm/nvmm-accel-ops.c
index 6c46101ac1..f9d5e9a37a 100644
--- a/target/i386/nvmm/nvmm-accel-ops.c
+++ b/target/i386/nvmm/nvmm-accel-ops.c
@@ -25,7 +25,7 @@ static void *qemu_nvmm_cpu_thread_fn(void *arg)
 
     rcu_register_thread();
 
-    qemu_mutex_lock_iothread();
+    bql_lock();
     qemu_thread_get_self(cpu->thread);
     cpu->thread_id = qemu_get_thread_id();
     current_cpu = cpu;
@@ -55,7 +55,7 @@ static void *qemu_nvmm_cpu_thread_fn(void *arg)
 
     nvmm_destroy_vcpu(cpu);
     cpu_thread_signal_destroyed(cpu);
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
     rcu_unregister_thread();
     return NULL;
 }
diff --git a/target/i386/nvmm/nvmm-all.c b/target/i386/nvmm/nvmm-all.c
index 7d752bc5e0..cfdca91123 100644
--- a/target/i386/nvmm/nvmm-all.c
+++ b/target/i386/nvmm/nvmm-all.c
@@ -399,7 +399,7 @@ nvmm_vcpu_pre_run(CPUState *cpu)
     uint8_t tpr;
     int ret;
 
-    qemu_mutex_lock_iothread();
+    bql_lock();
 
     tpr = cpu_get_apic_tpr(x86_cpu->apic_state);
     if (tpr != qcpu->tpr) {
@@ -462,7 +462,7 @@ nvmm_vcpu_pre_run(CPUState *cpu)
         }
     }
 
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
 }
 
 /*
@@ -485,9 +485,9 @@ nvmm_vcpu_post_run(CPUState *cpu, struct nvmm_vcpu_exit *exit)
     tpr = exit->exitstate.cr8;
     if (qcpu->tpr != tpr) {
         qcpu->tpr = tpr;
-        qemu_mutex_lock_iothread();
+        bql_lock();
         cpu_set_apic_tpr(x86_cpu->apic_state, qcpu->tpr);
-        qemu_mutex_unlock_iothread();
+        bql_unlock();
     }
 }
 
@@ -648,7 +648,7 @@ nvmm_handle_halted(struct nvmm_machine *mach, CPUState *cpu,
     CPUX86State *env = cpu_env(cpu);
     int ret = 0;
 
-    qemu_mutex_lock_iothread();
+    bql_lock();
 
     if (!((cpu->interrupt_request & CPU_INTERRUPT_HARD) &&
           (env->eflags & IF_MASK)) &&
@@ -658,7 +658,7 @@ nvmm_handle_halted(struct nvmm_machine *mach, CPUState *cpu,
         ret = 1;
     }
 
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
 
     return ret;
 }
@@ -721,7 +721,7 @@ nvmm_vcpu_loop(CPUState *cpu)
         return 0;
     }
 
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
     cpu_exec_start(cpu);
 
     /*
@@ -806,16 +806,16 @@ nvmm_vcpu_loop(CPUState *cpu)
             error_report("NVMM: Unexpected VM exit code 0x%lx [hw=0x%lx]",
                 exit->reason, exit->u.inv.hwcode);
             nvmm_get_registers(cpu);
-            qemu_mutex_lock_iothread();
+            bql_lock();
             qemu_system_guest_panicked(cpu_get_crash_info(cpu));
-            qemu_mutex_unlock_iothread();
+            bql_unlock();
             ret = -1;
             break;
         }
     } while (ret == 0);
 
     cpu_exec_end(cpu);
-    qemu_mutex_lock_iothread();
+    bql_lock();
 
     qatomic_set(&cpu->exit_request, false);
 
diff --git a/target/i386/tcg/sysemu/fpu_helper.c b/target/i386/tcg/sysemu/fpu_helper.c
index 93506cdd94..e0305ba234 100644
--- a/target/i386/tcg/sysemu/fpu_helper.c
+++ b/target/i386/tcg/sysemu/fpu_helper.c
@@ -32,9 +32,9 @@ void x86_register_ferr_irq(qemu_irq irq)
 void fpu_check_raise_ferr_irq(CPUX86State *env)
 {
     if (ferr_irq && !(env->hflags2 & HF2_IGNNE_MASK)) {
-        qemu_mutex_lock_iothread();
+        bql_lock();
         qemu_irq_raise(ferr_irq);
-        qemu_mutex_unlock_iothread();
+        bql_unlock();
         return;
     }
 }
@@ -49,7 +49,7 @@ void cpu_set_ignne(void)
 {
     CPUX86State *env = &X86_CPU(first_cpu)->env;
 
-    assert(qemu_mutex_iothread_locked());
+    assert(bql_locked());
 
     env->hflags2 |= HF2_IGNNE_MASK;
     /*
diff --git a/target/i386/tcg/sysemu/misc_helper.c b/target/i386/tcg/sysemu/misc_helper.c
index e1528b7f80..1ddfc9fe09 100644
--- a/target/i386/tcg/sysemu/misc_helper.c
+++ b/target/i386/tcg/sysemu/misc_helper.c
@@ -118,9 +118,9 @@ void helper_write_crN(CPUX86State *env, int reg, target_ulong t0)
         break;
     case 8:
         if (!(env->hflags2 & HF2_VINTR_MASK)) {
-            qemu_mutex_lock_iothread();
+            bql_lock();
             cpu_set_apic_tpr(env_archcpu(env)->apic_state, t0);
-            qemu_mutex_unlock_iothread();
+            bql_unlock();
         }
         env->int_ctl = (env->int_ctl & ~V_TPR_MASK) | (t0 & V_TPR_MASK);
 
diff --git a/target/i386/whpx/whpx-accel-ops.c b/target/i386/whpx/whpx-accel-ops.c
index 67cad86720..e783a760a7 100644
--- a/target/i386/whpx/whpx-accel-ops.c
+++ b/target/i386/whpx/whpx-accel-ops.c
@@ -25,7 +25,7 @@ static void *whpx_cpu_thread_fn(void *arg)
 
     rcu_register_thread();
 
-    qemu_mutex_lock_iothread();
+    bql_lock();
     qemu_thread_get_self(cpu->thread);
     cpu->thread_id = qemu_get_thread_id();
     current_cpu = cpu;
@@ -55,7 +55,7 @@ static void *whpx_cpu_thread_fn(void *arg)
 
     whpx_destroy_vcpu(cpu);
     cpu_thread_signal_destroyed(cpu);
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
     rcu_unregister_thread();
     return NULL;
 }
diff --git a/target/i386/whpx/whpx-all.c b/target/i386/whpx/whpx-all.c
index d29ba916a0..a7262654ac 100644
--- a/target/i386/whpx/whpx-all.c
+++ b/target/i386/whpx/whpx-all.c
@@ -1324,7 +1324,7 @@ static int whpx_first_vcpu_starting(CPUState *cpu)
     struct whpx_state *whpx = &whpx_global;
     HRESULT hr;
 
-    g_assert(qemu_mutex_iothread_locked());
+    g_assert(bql_locked());
 
     if (!QTAILQ_EMPTY(&cpu->breakpoints) ||
             (whpx->breakpoints.breakpoints &&
@@ -1442,7 +1442,7 @@ static int whpx_handle_halt(CPUState *cpu)
     CPUX86State *env = cpu_env(cpu);
     int ret = 0;
 
-    qemu_mutex_lock_iothread();
+    bql_lock();
     if (!((cpu->interrupt_request & CPU_INTERRUPT_HARD) &&
           (env->eflags & IF_MASK)) &&
         !(cpu->interrupt_request & CPU_INTERRUPT_NMI)) {
@@ -1450,7 +1450,7 @@ static int whpx_handle_halt(CPUState *cpu)
         cpu->halted = true;
         ret = 1;
     }
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
 
     return ret;
 }
@@ -1472,7 +1472,7 @@ static void whpx_vcpu_pre_run(CPUState *cpu)
     memset(&new_int, 0, sizeof(new_int));
     memset(reg_values, 0, sizeof(reg_values));
 
-    qemu_mutex_lock_iothread();
+    bql_lock();
 
     /* Inject NMI */
     if (!vcpu->interruption_pending &&
@@ -1563,7 +1563,7 @@ static void whpx_vcpu_pre_run(CPUState *cpu)
         reg_count += 1;
     }
 
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
     vcpu->ready_for_pic_interrupt = false;
 
     if (reg_count) {
@@ -1590,9 +1590,9 @@ static void whpx_vcpu_post_run(CPUState *cpu)
     uint64_t tpr = vcpu->exit_ctx.VpContext.Cr8;
     if (vcpu->tpr != tpr) {
         vcpu->tpr = tpr;
-        qemu_mutex_lock_iothread();
+        bql_lock();
         cpu_set_apic_tpr(x86_cpu->apic_state, whpx_cr8_to_apic_tpr(vcpu->tpr));
-        qemu_mutex_unlock_iothread();
+        bql_unlock();
     }
 
     vcpu->interruption_pending =
@@ -1652,7 +1652,7 @@ static int whpx_vcpu_run(CPUState *cpu)
     WhpxStepMode exclusive_step_mode = WHPX_STEP_NONE;
     int ret;
 
-    g_assert(qemu_mutex_iothread_locked());
+    g_assert(bql_locked());
 
     if (whpx->running_cpus++ == 0) {
         /* Insert breakpoints into memory, update exception exit bitmap. */
@@ -1690,7 +1690,7 @@ static int whpx_vcpu_run(CPUState *cpu)
         }
     }
 
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
 
     if (exclusive_step_mode != WHPX_STEP_NONE) {
         start_exclusive();
@@ -2028,9 +2028,9 @@ static int whpx_vcpu_run(CPUState *cpu)
             error_report("WHPX: Unexpected VP exit code %d",
                          vcpu->exit_ctx.ExitReason);
             whpx_get_registers(cpu);
-            qemu_mutex_lock_iothread();
+            bql_lock();
             qemu_system_guest_panicked(cpu_get_crash_info(cpu));
-            qemu_mutex_unlock_iothread();
+            bql_unlock();
             break;
         }
 
@@ -2055,7 +2055,7 @@ static int whpx_vcpu_run(CPUState *cpu)
         cpu_exec_end(cpu);
     }
 
-    qemu_mutex_lock_iothread();
+    bql_lock();
     current_cpu = cpu;
 
     if (--whpx->running_cpus == 0) {
diff --git a/target/loongarch/tcg/csr_helper.c b/target/loongarch/tcg/csr_helper.c
index 55341551a5..15f94caefa 100644
--- a/target/loongarch/tcg/csr_helper.c
+++ b/target/loongarch/tcg/csr_helper.c
@@ -89,9 +89,9 @@ target_ulong helper_csrwr_ticlr(CPULoongArchState *env, target_ulong val)
     int64_t old_v = 0;
 
     if (val & 0x1) {
-        qemu_mutex_lock_iothread();
+        bql_lock();
         loongarch_cpu_set_irq(cpu, IRQ_TIMER, 0);
-        qemu_mutex_unlock_iothread();
+        bql_unlock();
     }
     return old_v;
 }
diff --git a/target/mips/kvm.c b/target/mips/kvm.c
index e22e24ed97..15d0cf9adb 100644
--- a/target/mips/kvm.c
+++ b/target/mips/kvm.c
@@ -138,7 +138,7 @@ void kvm_arch_pre_run(CPUState *cs, struct kvm_run *run)
     int r;
     struct kvm_mips_interrupt intr;
 
-    qemu_mutex_lock_iothread();
+    bql_lock();
 
     if ((cs->interrupt_request & CPU_INTERRUPT_HARD) &&
             cpu_mips_io_interrupts_pending(cpu)) {
@@ -151,7 +151,7 @@ void kvm_arch_pre_run(CPUState *cs, struct kvm_run *run)
         }
     }
 
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
 }
 
 MemTxAttrs kvm_arch_post_run(CPUState *cs, struct kvm_run *run)
diff --git a/target/mips/tcg/sysemu/cp0_helper.c b/target/mips/tcg/sysemu/cp0_helper.c
index d349548743..cc545aed9c 100644
--- a/target/mips/tcg/sysemu/cp0_helper.c
+++ b/target/mips/tcg/sysemu/cp0_helper.c
@@ -59,9 +59,9 @@ static inline void mips_vpe_wake(MIPSCPU *c)
      * because there might be other conditions that state that c should
      * be sleeping.
      */
-    qemu_mutex_lock_iothread();
+    bql_lock();
     cpu_interrupt(CPU(c), CPU_INTERRUPT_WAKE);
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
 }
 
 static inline void mips_vpe_sleep(MIPSCPU *cpu)
diff --git a/target/openrisc/sys_helper.c b/target/openrisc/sys_helper.c
index 782a5751b7..77567afba4 100644
--- a/target/openrisc/sys_helper.c
+++ b/target/openrisc/sys_helper.c
@@ -160,20 +160,20 @@ void HELPER(mtspr)(CPUOpenRISCState *env, target_ulong spr, target_ulong rb)
         break;
     case TO_SPR(9, 0):  /* PICMR */
         env->picmr = rb;
-        qemu_mutex_lock_iothread();
+        bql_lock();
         if (env->picsr & env->picmr) {
             cpu_interrupt(cs, CPU_INTERRUPT_HARD);
         } else {
             cpu_reset_interrupt(cs, CPU_INTERRUPT_HARD);
         }
-        qemu_mutex_unlock_iothread();
+        bql_unlock();
         break;
     case TO_SPR(9, 2):  /* PICSR */
         env->picsr &= ~rb;
         break;
     case TO_SPR(10, 0): /* TTMR */
         {
-            qemu_mutex_lock_iothread();
+            bql_lock();
             if ((env->ttmr & TTMR_M) ^ (rb & TTMR_M)) {
                 switch (rb & TTMR_M) {
                 case TIMER_NONE:
@@ -198,15 +198,15 @@ void HELPER(mtspr)(CPUOpenRISCState *env, target_ulong spr, target_ulong rb)
                 cs->interrupt_request &= ~CPU_INTERRUPT_TIMER;
             }
             cpu_openrisc_timer_update(cpu);
-            qemu_mutex_unlock_iothread();
+            bql_unlock();
         }
         break;
 
     case TO_SPR(10, 1): /* TTCR */
-        qemu_mutex_lock_iothread();
+        bql_lock();
         cpu_openrisc_count_set(cpu, rb);
         cpu_openrisc_timer_update(cpu);
-        qemu_mutex_unlock_iothread();
+        bql_unlock();
         break;
     }
 #endif
@@ -347,9 +347,9 @@ target_ulong HELPER(mfspr)(CPUOpenRISCState *env, target_ulong rd,
         return env->ttmr;
 
     case TO_SPR(10, 1): /* TTCR */
-        qemu_mutex_lock_iothread();
+        bql_lock();
         cpu_openrisc_count_update(cpu);
-        qemu_mutex_unlock_iothread();
+        bql_unlock();
         return cpu_openrisc_count_get(cpu);
     }
 #endif
diff --git a/target/ppc/excp_helper.c b/target/ppc/excp_helper.c
index a42743a3e0..8a2bfb5aa2 100644
--- a/target/ppc/excp_helper.c
+++ b/target/ppc/excp_helper.c
@@ -3056,7 +3056,7 @@ void helper_msgsnd(target_ulong rb)
         return;
     }
 
-    qemu_mutex_lock_iothread();
+    bql_lock();
     CPU_FOREACH(cs) {
         PowerPCCPU *cpu = POWERPC_CPU(cs);
         CPUPPCState *cenv = &cpu->env;
@@ -3065,7 +3065,7 @@ void helper_msgsnd(target_ulong rb)
             ppc_set_irq(cpu, irq, 1);
         }
     }
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
 }
 
 /* Server Processor Control */
@@ -3093,7 +3093,7 @@ static void book3s_msgsnd_common(int pir, int irq)
 {
     CPUState *cs;
 
-    qemu_mutex_lock_iothread();
+    bql_lock();
     CPU_FOREACH(cs) {
         PowerPCCPU *cpu = POWERPC_CPU(cs);
         CPUPPCState *cenv = &cpu->env;
@@ -3103,7 +3103,7 @@ static void book3s_msgsnd_common(int pir, int irq)
             ppc_set_irq(cpu, irq, 1);
         }
     }
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
 }
 
 void helper_book3s_msgsnd(target_ulong rb)
@@ -3157,14 +3157,14 @@ void helper_book3s_msgsndp(CPUPPCState *env, target_ulong rb)
     }
 
     /* Does iothread need to be locked for walking CPU list? */
-    qemu_mutex_lock_iothread();
+    bql_lock();
     THREAD_SIBLING_FOREACH(cs, ccs) {
         PowerPCCPU *ccpu = POWERPC_CPU(ccs);
         uint32_t thread_id = ppc_cpu_tir(ccpu);
 
         if (ttir == thread_id) {
             ppc_set_irq(ccpu, PPC_INTERRUPT_DOORBELL, 1);
-            qemu_mutex_unlock_iothread();
+            bql_unlock();
             return;
         }
     }
diff --git a/target/ppc/kvm.c b/target/ppc/kvm.c
index 9b1abe2fc4..26fa9d0575 100644
--- a/target/ppc/kvm.c
+++ b/target/ppc/kvm.c
@@ -1656,7 +1656,7 @@ int kvm_arch_handle_exit(CPUState *cs, struct kvm_run *run)
     CPUPPCState *env = &cpu->env;
     int ret;
 
-    qemu_mutex_lock_iothread();
+    bql_lock();
 
     switch (run->exit_reason) {
     case KVM_EXIT_DCR:
@@ -1715,7 +1715,7 @@ int kvm_arch_handle_exit(CPUState *cs, struct kvm_run *run)
         break;
     }
 
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
     return ret;
 }
 
diff --git a/target/ppc/misc_helper.c b/target/ppc/misc_helper.c
index a05bdf78c9..a9d41d2802 100644
--- a/target/ppc/misc_helper.c
+++ b/target/ppc/misc_helper.c
@@ -238,7 +238,7 @@ target_ulong helper_load_dpdes(CPUPPCState *env)
         return dpdes;
     }
 
-    qemu_mutex_lock_iothread();
+    bql_lock();
     THREAD_SIBLING_FOREACH(cs, ccs) {
         PowerPCCPU *ccpu = POWERPC_CPU(ccs);
         CPUPPCState *cenv = &ccpu->env;
@@ -248,7 +248,7 @@ target_ulong helper_load_dpdes(CPUPPCState *env)
             dpdes |= (0x1 << thread_id);
         }
     }
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
 
     return dpdes;
 }
@@ -278,14 +278,14 @@ void helper_store_dpdes(CPUPPCState *env, target_ulong val)
     }
 
     /* Does iothread need to be locked for walking CPU list? */
-    qemu_mutex_lock_iothread();
+    bql_lock();
     THREAD_SIBLING_FOREACH(cs, ccs) {
         PowerPCCPU *ccpu = POWERPC_CPU(ccs);
         uint32_t thread_id = ppc_cpu_tir(ccpu);
 
         ppc_set_irq(cpu, PPC_INTERRUPT_DOORBELL, val & (0x1 << thread_id));
     }
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
 }
 #endif /* defined(TARGET_PPC64) */
 
diff --git a/target/ppc/timebase_helper.c b/target/ppc/timebase_helper.c
index 08a6b47ee0..f618ed2922 100644
--- a/target/ppc/timebase_helper.c
+++ b/target/ppc/timebase_helper.c
@@ -173,9 +173,9 @@ target_ulong helper_load_dcr(CPUPPCState *env, target_ulong dcrn)
     } else {
         int ret;
 
-        qemu_mutex_lock_iothread();
+        bql_lock();
         ret = ppc_dcr_read(env->dcr_env, (uint32_t)dcrn, &val);
-        qemu_mutex_unlock_iothread();
+        bql_unlock();
         if (unlikely(ret != 0)) {
             qemu_log_mask(LOG_GUEST_ERROR, "DCR read error %d %03x\n",
                           (uint32_t)dcrn, (uint32_t)dcrn);
@@ -196,9 +196,9 @@ void helper_store_dcr(CPUPPCState *env, target_ulong dcrn, target_ulong val)
                                POWERPC_EXCP_INVAL_INVAL, GETPC());
     } else {
         int ret;
-        qemu_mutex_lock_iothread();
+        bql_lock();
         ret = ppc_dcr_write(env->dcr_env, (uint32_t)dcrn, (uint32_t)val);
-        qemu_mutex_unlock_iothread();
+        bql_unlock();
         if (unlikely(ret != 0)) {
             qemu_log_mask(LOG_GUEST_ERROR, "DCR write error %d %03x\n",
                           (uint32_t)dcrn, (uint32_t)dcrn);
diff --git a/target/s390x/kvm/kvm.c b/target/s390x/kvm/kvm.c
index 33ab3551f4..888d6c1a1c 100644
--- a/target/s390x/kvm/kvm.c
+++ b/target/s390x/kvm/kvm.c
@@ -1923,7 +1923,7 @@ int kvm_arch_handle_exit(CPUState *cs, struct kvm_run *run)
     S390CPU *cpu = S390_CPU(cs);
     int ret = 0;
 
-    qemu_mutex_lock_iothread();
+    bql_lock();
 
     kvm_cpu_synchronize_state(cs);
 
@@ -1947,7 +1947,7 @@ int kvm_arch_handle_exit(CPUState *cs, struct kvm_run *run)
             fprintf(stderr, "Unknown KVM exit: %d\n", run->exit_reason);
             break;
     }
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
 
     if (ret == 0) {
         ret = EXCP_INTERRUPT;
diff --git a/target/s390x/tcg/misc_helper.c b/target/s390x/tcg/misc_helper.c
index 6aa7907438..89b5268fd4 100644
--- a/target/s390x/tcg/misc_helper.c
+++ b/target/s390x/tcg/misc_helper.c
@@ -101,9 +101,9 @@ uint64_t HELPER(stck)(CPUS390XState *env)
 /* SCLP service call */
 uint32_t HELPER(servc)(CPUS390XState *env, uint64_t r1, uint64_t r2)
 {
-    qemu_mutex_lock_iothread();
+    bql_lock();
     int r = sclp_service_call(env_archcpu(env), r1, r2);
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
     if (r < 0) {
         tcg_s390_program_interrupt(env, -r, GETPC());
     }
@@ -117,9 +117,9 @@ void HELPER(diag)(CPUS390XState *env, uint32_t r1, uint32_t r3, uint32_t num)
     switch (num) {
     case 0x500:
         /* KVM hypercall */
-        qemu_mutex_lock_iothread();
+        bql_lock();
         r = s390_virtio_hypercall(env);
-        qemu_mutex_unlock_iothread();
+        bql_unlock();
         break;
     case 0x44:
         /* yield */
@@ -127,9 +127,9 @@ void HELPER(diag)(CPUS390XState *env, uint32_t r1, uint32_t r3, uint32_t num)
         break;
     case 0x308:
         /* ipl */
-        qemu_mutex_lock_iothread();
+        bql_lock();
         handle_diag_308(env, r1, r3, GETPC());
-        qemu_mutex_unlock_iothread();
+        bql_unlock();
         r = 0;
         break;
     case 0x288:
@@ -185,7 +185,7 @@ static void update_ckc_timer(CPUS390XState *env)
 
     /* stop the timer and remove pending CKC IRQs */
     timer_del(env->tod_timer);
-    g_assert(qemu_mutex_iothread_locked());
+    g_assert(bql_locked());
     env->pending_int &= ~INTERRUPT_EXT_CLOCK_COMPARATOR;
 
     /* the tod has to exceed the ckc, this can never happen if ckc is all 1's */
@@ -207,9 +207,9 @@ void HELPER(sckc)(CPUS390XState *env, uint64_t ckc)
 {
     env->ckc = ckc;
 
-    qemu_mutex_lock_iothread();
+    bql_lock();
     update_ckc_timer(env);
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
 }
 
 void tcg_s390_tod_updated(CPUState *cs, run_on_cpu_data opaque)
@@ -229,9 +229,9 @@ uint32_t HELPER(sck)(CPUS390XState *env, uint64_t tod_low)
         .low = tod_low,
     };
 
-    qemu_mutex_lock_iothread();
+    bql_lock();
     tdc->set(td, &tod, &error_abort);
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
     return 0;
 }
 
@@ -421,9 +421,9 @@ uint32_t HELPER(sigp)(CPUS390XState *env, uint64_t order_code, uint32_t r1,
     int cc;
 
     /* TODO: needed to inject interrupts  - push further down */
-    qemu_mutex_lock_iothread();
+    bql_lock();
     cc = handle_sigp(env, order_code & SIGP_ORDER_MASK, r1, r3);
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
 
     return cc;
 }
@@ -433,92 +433,92 @@ uint32_t HELPER(sigp)(CPUS390XState *env, uint64_t order_code, uint32_t r1,
 void HELPER(xsch)(CPUS390XState *env, uint64_t r1)
 {
     S390CPU *cpu = env_archcpu(env);
-    qemu_mutex_lock_iothread();
+    bql_lock();
     ioinst_handle_xsch(cpu, r1, GETPC());
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
 }
 
 void HELPER(csch)(CPUS390XState *env, uint64_t r1)
 {
     S390CPU *cpu = env_archcpu(env);
-    qemu_mutex_lock_iothread();
+    bql_lock();
     ioinst_handle_csch(cpu, r1, GETPC());
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
 }
 
 void HELPER(hsch)(CPUS390XState *env, uint64_t r1)
 {
     S390CPU *cpu = env_archcpu(env);
-    qemu_mutex_lock_iothread();
+    bql_lock();
     ioinst_handle_hsch(cpu, r1, GETPC());
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
 }
 
 void HELPER(msch)(CPUS390XState *env, uint64_t r1, uint64_t inst)
 {
     S390CPU *cpu = env_archcpu(env);
-    qemu_mutex_lock_iothread();
+    bql_lock();
     ioinst_handle_msch(cpu, r1, inst >> 16, GETPC());
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
 }
 
 void HELPER(rchp)(CPUS390XState *env, uint64_t r1)
 {
     S390CPU *cpu = env_archcpu(env);
-    qemu_mutex_lock_iothread();
+    bql_lock();
     ioinst_handle_rchp(cpu, r1, GETPC());
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
 }
 
 void HELPER(rsch)(CPUS390XState *env, uint64_t r1)
 {
     S390CPU *cpu = env_archcpu(env);
-    qemu_mutex_lock_iothread();
+    bql_lock();
     ioinst_handle_rsch(cpu, r1, GETPC());
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
 }
 
 void HELPER(sal)(CPUS390XState *env, uint64_t r1)
 {
     S390CPU *cpu = env_archcpu(env);
 
-    qemu_mutex_lock_iothread();
+    bql_lock();
     ioinst_handle_sal(cpu, r1, GETPC());
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
 }
 
 void HELPER(schm)(CPUS390XState *env, uint64_t r1, uint64_t r2, uint64_t inst)
 {
     S390CPU *cpu = env_archcpu(env);
 
-    qemu_mutex_lock_iothread();
+    bql_lock();
     ioinst_handle_schm(cpu, r1, r2, inst >> 16, GETPC());
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
 }
 
 void HELPER(ssch)(CPUS390XState *env, uint64_t r1, uint64_t inst)
 {
     S390CPU *cpu = env_archcpu(env);
-    qemu_mutex_lock_iothread();
+    bql_lock();
     ioinst_handle_ssch(cpu, r1, inst >> 16, GETPC());
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
 }
 
 void HELPER(stcrw)(CPUS390XState *env, uint64_t inst)
 {
     S390CPU *cpu = env_archcpu(env);
 
-    qemu_mutex_lock_iothread();
+    bql_lock();
     ioinst_handle_stcrw(cpu, inst >> 16, GETPC());
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
 }
 
 void HELPER(stsch)(CPUS390XState *env, uint64_t r1, uint64_t inst)
 {
     S390CPU *cpu = env_archcpu(env);
-    qemu_mutex_lock_iothread();
+    bql_lock();
     ioinst_handle_stsch(cpu, r1, inst >> 16, GETPC());
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
 }
 
 uint32_t HELPER(tpi)(CPUS390XState *env, uint64_t addr)
@@ -533,10 +533,10 @@ uint32_t HELPER(tpi)(CPUS390XState *env, uint64_t addr)
         tcg_s390_program_interrupt(env, PGM_SPECIFICATION, ra);
     }
 
-    qemu_mutex_lock_iothread();
+    bql_lock();
     io = qemu_s390_flic_dequeue_io(flic, env->cregs[6]);
     if (!io) {
-        qemu_mutex_unlock_iothread();
+        bql_unlock();
         return 0;
     }
 
@@ -554,7 +554,7 @@ uint32_t HELPER(tpi)(CPUS390XState *env, uint64_t addr)
         if (s390_cpu_virt_mem_write(cpu, addr, 0, &intc, sizeof(intc))) {
             /* writing failed, reinject and properly clean up */
             s390_io_interrupt(io->id, io->nr, io->parm, io->word);
-            qemu_mutex_unlock_iothread();
+            bql_unlock();
             g_free(io);
             s390_cpu_virt_mem_handle_exc(cpu, ra);
             return 0;
@@ -570,24 +570,24 @@ uint32_t HELPER(tpi)(CPUS390XState *env, uint64_t addr)
     }
 
     g_free(io);
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
     return 1;
 }
 
 void HELPER(tsch)(CPUS390XState *env, uint64_t r1, uint64_t inst)
 {
     S390CPU *cpu = env_archcpu(env);
-    qemu_mutex_lock_iothread();
+    bql_lock();
     ioinst_handle_tsch(cpu, r1, inst >> 16, GETPC());
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
 }
 
 void HELPER(chsc)(CPUS390XState *env, uint64_t inst)
 {
     S390CPU *cpu = env_archcpu(env);
-    qemu_mutex_lock_iothread();
+    bql_lock();
     ioinst_handle_chsc(cpu, inst >> 16, GETPC());
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
 }
 #endif
 
@@ -726,27 +726,27 @@ void HELPER(clp)(CPUS390XState *env, uint32_t r2)
 {
     S390CPU *cpu = env_archcpu(env);
 
-    qemu_mutex_lock_iothread();
+    bql_lock();
     clp_service_call(cpu, r2, GETPC());
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
 }
 
 void HELPER(pcilg)(CPUS390XState *env, uint32_t r1, uint32_t r2)
 {
     S390CPU *cpu = env_archcpu(env);
 
-    qemu_mutex_lock_iothread();
+    bql_lock();
     pcilg_service_call(cpu, r1, r2, GETPC());
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
 }
 
 void HELPER(pcistg)(CPUS390XState *env, uint32_t r1, uint32_t r2)
 {
     S390CPU *cpu = env_archcpu(env);
 
-    qemu_mutex_lock_iothread();
+    bql_lock();
     pcistg_service_call(cpu, r1, r2, GETPC());
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
 }
 
 void HELPER(stpcifc)(CPUS390XState *env, uint32_t r1, uint64_t fiba,
@@ -754,9 +754,9 @@ void HELPER(stpcifc)(CPUS390XState *env, uint32_t r1, uint64_t fiba,
 {
     S390CPU *cpu = env_archcpu(env);
 
-    qemu_mutex_lock_iothread();
+    bql_lock();
     stpcifc_service_call(cpu, r1, fiba, ar, GETPC());
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
 }
 
 void HELPER(sic)(CPUS390XState *env, uint64_t r1, uint64_t r3)
@@ -764,9 +764,9 @@ void HELPER(sic)(CPUS390XState *env, uint64_t r1, uint64_t r3)
     S390CPU *cpu = env_archcpu(env);
     int r;
 
-    qemu_mutex_lock_iothread();
+    bql_lock();
     r = css_do_sic(cpu, (r3 >> 27) & 0x7, r1 & 0xffff);
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
     /* css_do_sic() may actually return a PGM_xxx value to inject */
     if (r) {
         tcg_s390_program_interrupt(env, -r, GETPC());
@@ -777,9 +777,9 @@ void HELPER(rpcit)(CPUS390XState *env, uint32_t r1, uint32_t r2)
 {
     S390CPU *cpu = env_archcpu(env);
 
-    qemu_mutex_lock_iothread();
+    bql_lock();
     rpcit_service_call(cpu, r1, r2, GETPC());
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
 }
 
 void HELPER(pcistb)(CPUS390XState *env, uint32_t r1, uint32_t r3,
@@ -787,9 +787,9 @@ void HELPER(pcistb)(CPUS390XState *env, uint32_t r1, uint32_t r3,
 {
     S390CPU *cpu = env_archcpu(env);
 
-    qemu_mutex_lock_iothread();
+    bql_lock();
     pcistb_service_call(cpu, r1, r3, gaddr, ar, GETPC());
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
 }
 
 void HELPER(mpcifc)(CPUS390XState *env, uint32_t r1, uint64_t fiba,
@@ -797,8 +797,8 @@ void HELPER(mpcifc)(CPUS390XState *env, uint32_t r1, uint64_t fiba,
 {
     S390CPU *cpu = env_archcpu(env);
 
-    qemu_mutex_lock_iothread();
+    bql_lock();
     mpcifc_service_call(cpu, r1, fiba, ar, GETPC());
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
 }
 #endif
diff --git a/target/sparc/int32_helper.c b/target/sparc/int32_helper.c
index 8f4e08ed09..058dd712b5 100644
--- a/target/sparc/int32_helper.c
+++ b/target/sparc/int32_helper.c
@@ -70,7 +70,7 @@ void cpu_check_irqs(CPUSPARCState *env)
     CPUState *cs;
 
     /* We should be holding the BQL before we mess with IRQs */
-    g_assert(qemu_mutex_iothread_locked());
+    g_assert(bql_locked());
 
     if (env->pil_in && (env->interrupt_index == 0 ||
                         (env->interrupt_index & ~15) == TT_EXTINT)) {
diff --git a/target/sparc/int64_helper.c b/target/sparc/int64_helper.c
index 1b4155f5f3..27df9dba89 100644
--- a/target/sparc/int64_helper.c
+++ b/target/sparc/int64_helper.c
@@ -69,7 +69,7 @@ void cpu_check_irqs(CPUSPARCState *env)
                   (env->softint & ~(SOFTINT_TIMER | SOFTINT_STIMER));
 
     /* We should be holding the BQL before we mess with IRQs */
-    g_assert(qemu_mutex_iothread_locked());
+    g_assert(bql_locked());
 
     /* TT_IVEC has a higher priority (16) than TT_EXTINT (31..17) */
     if (env->ivec_status & 0x20) {
@@ -267,9 +267,9 @@ static bool do_modify_softint(CPUSPARCState *env, uint32_t value)
         env->softint = value;
 #if !defined(CONFIG_USER_ONLY)
         if (cpu_interrupts_enabled(env)) {
-            qemu_mutex_lock_iothread();
+            bql_lock();
             cpu_check_irqs(env);
-            qemu_mutex_unlock_iothread();
+            bql_unlock();
         }
 #endif
         return true;
diff --git a/target/sparc/win_helper.c b/target/sparc/win_helper.c
index 16d1c70fe7..b53fc9ce94 100644
--- a/target/sparc/win_helper.c
+++ b/target/sparc/win_helper.c
@@ -179,9 +179,9 @@ void helper_wrpsr(CPUSPARCState *env, target_ulong new_psr)
         cpu_raise_exception_ra(env, TT_ILL_INSN, GETPC());
     } else {
         /* cpu_put_psr may trigger interrupts, hence BQL */
-        qemu_mutex_lock_iothread();
+        bql_lock();
         cpu_put_psr(env, new_psr);
-        qemu_mutex_unlock_iothread();
+        bql_unlock();
     }
 }
 
@@ -407,9 +407,9 @@ void helper_wrpstate(CPUSPARCState *env, target_ulong new_state)
 
 #if !defined(CONFIG_USER_ONLY)
     if (cpu_interrupts_enabled(env)) {
-        qemu_mutex_lock_iothread();
+        bql_lock();
         cpu_check_irqs(env);
-        qemu_mutex_unlock_iothread();
+        bql_unlock();
     }
 #endif
 }
@@ -422,9 +422,9 @@ void helper_wrpil(CPUSPARCState *env, target_ulong new_pil)
     env->psrpil = new_pil;
 
     if (cpu_interrupts_enabled(env)) {
-        qemu_mutex_lock_iothread();
+        bql_lock();
         cpu_check_irqs(env);
-        qemu_mutex_unlock_iothread();
+        bql_unlock();
     }
 #endif
 }
@@ -451,9 +451,9 @@ void helper_done(CPUSPARCState *env)
 
 #if !defined(CONFIG_USER_ONLY)
     if (cpu_interrupts_enabled(env)) {
-        qemu_mutex_lock_iothread();
+        bql_lock();
         cpu_check_irqs(env);
-        qemu_mutex_unlock_iothread();
+        bql_unlock();
     }
 #endif
 }
@@ -480,9 +480,9 @@ void helper_retry(CPUSPARCState *env)
 
 #if !defined(CONFIG_USER_ONLY)
     if (cpu_interrupts_enabled(env)) {
-        qemu_mutex_lock_iothread();
+        bql_lock();
         cpu_check_irqs(env);
-        qemu_mutex_unlock_iothread();
+        bql_unlock();
     }
 #endif
 }
diff --git a/target/xtensa/exc_helper.c b/target/xtensa/exc_helper.c
index 91354884f7..168419a505 100644
--- a/target/xtensa/exc_helper.c
+++ b/target/xtensa/exc_helper.c
@@ -105,9 +105,9 @@ void HELPER(waiti)(CPUXtensaState *env, uint32_t pc, uint32_t intlevel)
     env->sregs[PS] = (env->sregs[PS] & ~PS_INTLEVEL) |
         (intlevel << PS_INTLEVEL_SHIFT);
 
-    qemu_mutex_lock_iothread();
+    bql_lock();
     check_interrupts(env);
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
 
     if (env->pending_irq_level) {
         cpu_loop_exit(cpu);
@@ -120,9 +120,9 @@ void HELPER(waiti)(CPUXtensaState *env, uint32_t pc, uint32_t intlevel)
 
 void HELPER(check_interrupts)(CPUXtensaState *env)
 {
-    qemu_mutex_lock_iothread();
+    bql_lock();
     check_interrupts(env);
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
 }
 
 void HELPER(intset)(CPUXtensaState *env, uint32_t v)
diff --git a/ui/spice-core.c b/ui/spice-core.c
index db21db2c94..b6ee495a8f 100644
--- a/ui/spice-core.c
+++ b/ui/spice-core.c
@@ -222,7 +222,7 @@ static void channel_event(int event, SpiceChannelEventInfo *info)
      */
     bool need_lock = !qemu_thread_is_self(&me);
     if (need_lock) {
-        qemu_mutex_lock_iothread();
+        bql_lock();
     }
 
     if (info->flags & SPICE_CHANNEL_EVENT_FLAG_ADDR_EXT) {
@@ -260,7 +260,7 @@ static void channel_event(int event, SpiceChannelEventInfo *info)
     }
 
     if (need_lock) {
-        qemu_mutex_unlock_iothread();
+        bql_unlock();
     }
 
     qapi_free_SpiceServerInfo(server);
diff --git a/util/async.c b/util/async.c
index 460529057c..36a8e76ab0 100644
--- a/util/async.c
+++ b/util/async.c
@@ -727,7 +727,7 @@ AioContext *qemu_get_current_aio_context(void)
     if (ctx) {
         return ctx;
     }
-    if (qemu_mutex_iothread_locked()) {
+    if (bql_locked()) {
         /* Possibly in a vCPU thread.  */
         return qemu_get_aio_context();
     }
diff --git a/util/main-loop.c b/util/main-loop.c
index 63b4cda84a..a0386cfeb6 100644
--- a/util/main-loop.c
+++ b/util/main-loop.c
@@ -299,13 +299,13 @@ static int os_host_main_loop_wait(int64_t timeout)
 
     glib_pollfds_fill(&timeout);
 
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
     replay_mutex_unlock();
 
     ret = qemu_poll_ns((GPollFD *)gpollfds->data, gpollfds->len, timeout);
 
     replay_mutex_lock();
-    qemu_mutex_lock_iothread();
+    bql_lock();
 
     glib_pollfds_poll();
 
@@ -514,7 +514,7 @@ static int os_host_main_loop_wait(int64_t timeout)
 
     poll_timeout_ns = qemu_soonest_timeout(poll_timeout_ns, timeout);
 
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
 
     replay_mutex_unlock();
 
@@ -522,7 +522,7 @@ static int os_host_main_loop_wait(int64_t timeout)
 
     replay_mutex_lock();
 
-    qemu_mutex_lock_iothread();
+    bql_lock();
     if (g_poll_ret > 0) {
         for (i = 0; i < w->num; i++) {
             w->revents[i] = poll_fds[n_poll_fds + i].revents;
diff --git a/util/qsp.c b/util/qsp.c
index 2fe3764906..6b783e2e7f 100644
--- a/util/qsp.c
+++ b/util/qsp.c
@@ -124,7 +124,7 @@ static const char * const qsp_typenames[] = {
     [QSP_CONDVAR]   = "condvar",
 };
 
-QemuMutexLockFunc qemu_bql_mutex_lock_func = qemu_mutex_lock_impl;
+QemuMutexLockFunc bql_mutex_lock_func = qemu_mutex_lock_impl;
 QemuMutexLockFunc qemu_mutex_lock_func = qemu_mutex_lock_impl;
 QemuMutexTrylockFunc qemu_mutex_trylock_func = qemu_mutex_trylock_impl;
 QemuRecMutexLockFunc qemu_rec_mutex_lock_func = qemu_rec_mutex_lock_impl;
@@ -439,7 +439,7 @@ void qsp_enable(void)
 {
     qatomic_set(&qemu_mutex_lock_func, qsp_mutex_lock);
     qatomic_set(&qemu_mutex_trylock_func, qsp_mutex_trylock);
-    qatomic_set(&qemu_bql_mutex_lock_func, qsp_bql_mutex_lock);
+    qatomic_set(&bql_mutex_lock_func, qsp_bql_mutex_lock);
     qatomic_set(&qemu_rec_mutex_lock_func, qsp_rec_mutex_lock);
     qatomic_set(&qemu_rec_mutex_trylock_func, qsp_rec_mutex_trylock);
     qatomic_set(&qemu_cond_wait_func, qsp_cond_wait);
@@ -450,7 +450,7 @@ void qsp_disable(void)
 {
     qatomic_set(&qemu_mutex_lock_func, qemu_mutex_lock_impl);
     qatomic_set(&qemu_mutex_trylock_func, qemu_mutex_trylock_impl);
-    qatomic_set(&qemu_bql_mutex_lock_func, qemu_mutex_lock_impl);
+    qatomic_set(&bql_mutex_lock_func, qemu_mutex_lock_impl);
     qatomic_set(&qemu_rec_mutex_lock_func, qemu_rec_mutex_lock_impl);
     qatomic_set(&qemu_rec_mutex_trylock_func, qemu_rec_mutex_trylock_impl);
     qatomic_set(&qemu_cond_wait_func, qemu_cond_wait_impl);
diff --git a/util/rcu.c b/util/rcu.c
index e587bcc483..bb7f633b5c 100644
--- a/util/rcu.c
+++ b/util/rcu.c
@@ -283,24 +283,24 @@ static void *call_rcu_thread(void *opaque)
 
         qatomic_sub(&rcu_call_count, n);
         synchronize_rcu();
-        qemu_mutex_lock_iothread();
+        bql_lock();
         while (n > 0) {
             node = try_dequeue();
             while (!node) {
-                qemu_mutex_unlock_iothread();
+                bql_unlock();
                 qemu_event_reset(&rcu_call_ready_event);
                 node = try_dequeue();
                 if (!node) {
                     qemu_event_wait(&rcu_call_ready_event);
                     node = try_dequeue();
                 }
-                qemu_mutex_lock_iothread();
+                bql_lock();
             }
 
             n--;
             node->func(node);
         }
-        qemu_mutex_unlock_iothread();
+        bql_unlock();
     }
     abort();
 }
@@ -337,13 +337,13 @@ static void drain_rcu_callback(struct rcu_head *node)
 void drain_call_rcu(void)
 {
     struct rcu_drain rcu_drain;
-    bool locked = qemu_mutex_iothread_locked();
+    bool locked = bql_locked();
 
     memset(&rcu_drain, 0, sizeof(struct rcu_drain));
     qemu_event_init(&rcu_drain.drain_complete_event, false);
 
     if (locked) {
-        qemu_mutex_unlock_iothread();
+        bql_unlock();
     }
 
 
@@ -365,7 +365,7 @@ void drain_call_rcu(void)
     qatomic_dec(&in_drain_call_rcu);
 
     if (locked) {
-        qemu_mutex_lock_iothread();
+        bql_lock();
     }
 
 }
diff --git a/audio/coreaudio.m b/audio/coreaudio.m
index 8cd129a27d..9d2db9883c 100644
--- a/audio/coreaudio.m
+++ b/audio/coreaudio.m
@@ -547,7 +547,7 @@ static OSStatus handle_voice_change(
 {
     coreaudioVoiceOut *core = in_client_data;
 
-    qemu_mutex_lock_iothread();
+    bql_lock();
 
     if (core->outputDeviceID) {
         fini_out_device(core);
@@ -557,7 +557,7 @@ static OSStatus handle_voice_change(
         update_device_playback_state(core);
     }
 
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
     return 0;
 }
 
diff --git a/memory_ldst.c.inc b/memory_ldst.c.inc
index 84b868f294..0e6f3940a9 100644
--- a/memory_ldst.c.inc
+++ b/memory_ldst.c.inc
@@ -61,7 +61,7 @@ static inline uint32_t glue(address_space_ldl_internal, SUFFIX)(ARG1_DECL,
         *result = r;
     }
     if (release_lock) {
-        qemu_mutex_unlock_iothread();
+        bql_unlock();
     }
     RCU_READ_UNLOCK();
     return val;
@@ -130,7 +130,7 @@ static inline uint64_t glue(address_space_ldq_internal, SUFFIX)(ARG1_DECL,
         *result = r;
     }
     if (release_lock) {
-        qemu_mutex_unlock_iothread();
+        bql_unlock();
     }
     RCU_READ_UNLOCK();
     return val;
@@ -186,7 +186,7 @@ uint8_t glue(address_space_ldub, SUFFIX)(ARG1_DECL,
         *result = r;
     }
     if (release_lock) {
-        qemu_mutex_unlock_iothread();
+        bql_unlock();
     }
     RCU_READ_UNLOCK();
     return val;
@@ -234,7 +234,7 @@ static inline uint16_t glue(address_space_lduw_internal, SUFFIX)(ARG1_DECL,
         *result = r;
     }
     if (release_lock) {
-        qemu_mutex_unlock_iothread();
+        bql_unlock();
     }
     RCU_READ_UNLOCK();
     return val;
@@ -295,7 +295,7 @@ void glue(address_space_stl_notdirty, SUFFIX)(ARG1_DECL,
         *result = r;
     }
     if (release_lock) {
-        qemu_mutex_unlock_iothread();
+        bql_unlock();
     }
     RCU_READ_UNLOCK();
 }
@@ -339,7 +339,7 @@ static inline void glue(address_space_stl_internal, SUFFIX)(ARG1_DECL,
         *result = r;
     }
     if (release_lock) {
-        qemu_mutex_unlock_iothread();
+        bql_unlock();
     }
     RCU_READ_UNLOCK();
 }
@@ -391,7 +391,7 @@ void glue(address_space_stb, SUFFIX)(ARG1_DECL,
         *result = r;
     }
     if (release_lock) {
-        qemu_mutex_unlock_iothread();
+        bql_unlock();
     }
     RCU_READ_UNLOCK();
 }
@@ -435,7 +435,7 @@ static inline void glue(address_space_stw_internal, SUFFIX)(ARG1_DECL,
         *result = r;
     }
     if (release_lock) {
-        qemu_mutex_unlock_iothread();
+        bql_unlock();
     }
     RCU_READ_UNLOCK();
 }
@@ -499,7 +499,7 @@ static void glue(address_space_stq_internal, SUFFIX)(ARG1_DECL,
         *result = r;
     }
     if (release_lock) {
-        qemu_mutex_unlock_iothread();
+        bql_unlock();
     }
     RCU_READ_UNLOCK();
 }
diff --git a/target/i386/hvf/README.md b/target/i386/hvf/README.md
index 2d33477aca..64a8935237 100644
--- a/target/i386/hvf/README.md
+++ b/target/i386/hvf/README.md
@@ -4,4 +4,4 @@ These sources (and ../hvf-all.c) are adapted from Veertu Inc's vdhh (Veertu Desk
 
 1. Adapt to our current QEMU's `CPUState` structure and `address_space_rw` API; many struct members have been moved around (emulated x86 state, xsave_buf) due to historical differences + QEMU needing to handle more emulation targets.
 2. Removal of `apic_page` and hyperv-related functionality.
-3. More relaxed use of `qemu_mutex_lock_iothread`.
+3. More relaxed use of `bql_lock`.
diff --git a/ui/cocoa.m b/ui/cocoa.m
index cd069da696..5ebb535070 100644
--- a/ui/cocoa.m
+++ b/ui/cocoa.m
@@ -117,29 +117,29 @@ static void cocoa_switch(DisplayChangeListener *dcl,
 typedef void (^CodeBlock)(void);
 typedef bool (^BoolCodeBlock)(void);
 
-static void with_iothread_lock(CodeBlock block)
+static void with_bql(CodeBlock block)
 {
-    bool locked = qemu_mutex_iothread_locked();
+    bool locked = bql_locked();
     if (!locked) {
-        qemu_mutex_lock_iothread();
+        bql_lock();
     }
     block();
     if (!locked) {
-        qemu_mutex_unlock_iothread();
+        bql_unlock();
     }
 }
 
-static bool bool_with_iothread_lock(BoolCodeBlock block)
+static bool bool_with_bql(BoolCodeBlock block)
 {
-    bool locked = qemu_mutex_iothread_locked();
+    bool locked = bql_locked();
     bool val;
 
     if (!locked) {
-        qemu_mutex_lock_iothread();
+        bql_lock();
     }
     val = block();
     if (!locked) {
-        qemu_mutex_unlock_iothread();
+        bql_unlock();
     }
     return val;
 }
@@ -605,7 +605,7 @@ - (void) updateUIInfo
         return;
     }
 
-    with_iothread_lock(^{
+    with_bql(^{
         [self updateUIInfoLocked];
     });
 }
@@ -790,7 +790,7 @@ - (void) handleMonitorInput:(NSEvent *)event
 
 - (bool) handleEvent:(NSEvent *)event
 {
-    return bool_with_iothread_lock(^{
+    return bool_with_bql(^{
         return [self handleEventLocked:event];
     });
 }
@@ -1182,7 +1182,7 @@ - (QEMUScreen) gscreen {return screen;}
  */
 - (void) raiseAllKeys
 {
-    with_iothread_lock(^{
+    with_bql(^{
         qkbd_state_lift_all_keys(kbd);
     });
 }
@@ -1282,7 +1282,7 @@ - (void)applicationWillTerminate:(NSNotification *)aNotification
 {
     COCOA_DEBUG("QemuCocoaAppController: applicationWillTerminate\n");
 
-    with_iothread_lock(^{
+    with_bql(^{
         shutdown_action = SHUTDOWN_ACTION_POWEROFF;
         qemu_system_shutdown_request(SHUTDOWN_CAUSE_HOST_UI);
     });
@@ -1420,7 +1420,7 @@ - (void)displayConsole:(id)sender
 /* Pause the guest */
 - (void)pauseQEMU:(id)sender
 {
-    with_iothread_lock(^{
+    with_bql(^{
         qmp_stop(NULL);
     });
     [sender setEnabled: NO];
@@ -1431,7 +1431,7 @@ - (void)pauseQEMU:(id)sender
 /* Resume running the guest operating system */
 - (void)resumeQEMU:(id) sender
 {
-    with_iothread_lock(^{
+    with_bql(^{
         qmp_cont(NULL);
     });
     [sender setEnabled: NO];
@@ -1461,7 +1461,7 @@ - (void)removePause
 /* Restarts QEMU */
 - (void)restartQEMU:(id)sender
 {
-    with_iothread_lock(^{
+    with_bql(^{
         qmp_system_reset(NULL);
     });
 }
@@ -1469,7 +1469,7 @@ - (void)restartQEMU:(id)sender
 /* Powers down QEMU */
 - (void)powerDownQEMU:(id)sender
 {
-    with_iothread_lock(^{
+    with_bql(^{
         qmp_system_powerdown(NULL);
     });
 }
@@ -1488,7 +1488,7 @@ - (void)ejectDeviceMedia:(id)sender
     }
 
     __block Error *err = NULL;
-    with_iothread_lock(^{
+    with_bql(^{
         qmp_eject([drive cStringUsingEncoding: NSASCIIStringEncoding],
                   NULL, false, false, &err);
     });
@@ -1523,7 +1523,7 @@ - (void)changeDeviceMedia:(id)sender
         }
 
         __block Error *err = NULL;
-        with_iothread_lock(^{
+        with_bql(^{
             qmp_blockdev_change_medium([drive cStringUsingEncoding:
                                                   NSASCIIStringEncoding],
                                        NULL,
@@ -1605,7 +1605,7 @@ - (void)adjustSpeed:(id)sender
     // get the throttle percentage
     throttle_pct = [sender tag];
 
-    with_iothread_lock(^{
+    with_bql(^{
         cpu_throttle_set(throttle_pct);
     });
     COCOA_DEBUG("cpu throttling at %d%c\n", cpu_throttle_get_percentage(), '%');
@@ -1819,7 +1819,7 @@ - (void)pasteboard:(NSPasteboard *)sender provideDataForType:(NSPasteboardType)t
         return;
     }
 
-    with_iothread_lock(^{
+    with_bql(^{
         QemuClipboardInfo *info = qemu_clipboard_info_ref(cbinfo);
         qemu_event_reset(&cbevent);
         qemu_clipboard_request(info, QEMU_CLIPBOARD_TYPE_TEXT);
@@ -1827,9 +1827,9 @@ - (void)pasteboard:(NSPasteboard *)sender provideDataForType:(NSPasteboardType)t
         while (info == cbinfo &&
                info->types[QEMU_CLIPBOARD_TYPE_TEXT].available &&
                info->types[QEMU_CLIPBOARD_TYPE_TEXT].data == NULL) {
-            qemu_mutex_unlock_iothread();
+            bql_unlock();
             qemu_event_wait(&cbevent);
-            qemu_mutex_lock_iothread();
+            bql_lock();
         }
 
         if (info == cbinfo) {
@@ -1927,9 +1927,9 @@ static void cocoa_clipboard_request(QemuClipboardInfo *info,
     int status;
 
     COCOA_DEBUG("Second thread: calling qemu_default_main()\n");
-    qemu_mutex_lock_iothread();
+    bql_lock();
     status = qemu_default_main();
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
     COCOA_DEBUG("Second thread: qemu_default_main() returned, exiting\n");
     [cbowner release];
     exit(status);
@@ -1941,7 +1941,7 @@ static int cocoa_main(void)
 
     COCOA_DEBUG("Entered %s()\n", __func__);
 
-    qemu_mutex_unlock_iothread();
+    bql_unlock();
     qemu_thread_create(&thread, "qemu_main", call_qemu_main,
                        NULL, QEMU_THREAD_DETACHED);
 
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Mon Jan 08 16:38:04 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 08 Jan 2024 16:38:04 +0000
Received: from list by lists.xenproject.org with outflank-mailman.663615.1033667 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMsdX-0004f3-VC; Mon, 08 Jan 2024 16:38:03 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 663615.1033667; Mon, 08 Jan 2024 16:38:03 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMsdX-0004ew-SA; Mon, 08 Jan 2024 16:38:03 +0000
Received: by outflank-mailman (input) for mailman id 663615;
 Mon, 08 Jan 2024 16:38:02 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=EZ8K=IS=redhat.com=stefanha@srs-se1.protection.inumbo.net>)
 id 1rMsdW-0004cj-66
 for xen-devel@lists.xenproject.org; Mon, 08 Jan 2024 16:38:02 +0000
Received: from us-smtp-delivery-124.mimecast.com
 (us-smtp-delivery-124.mimecast.com [170.10.133.124])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 48ced153-ae44-11ee-98ef-6d05b1d4d9a1;
 Mon, 08 Jan 2024 17:38:01 +0100 (CET)
Received: from mimecast-mx02.redhat.com (mx-ext.redhat.com [66.187.233.73])
 by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3,
 cipher=TLS_AES_256_GCM_SHA384) id us-mta-130-OBFUpOqePHCBWUy5MoIPIg-1; Mon,
 08 Jan 2024 11:37:51 -0500
Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.rdu2.redhat.com
 [10.11.54.1])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256)
 (No client certificate requested)
 by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 16B3229AC01F;
 Mon,  8 Jan 2024 16:37:48 +0000 (UTC)
Received: from localhost (unknown [10.39.194.85])
 by smtp.corp.redhat.com (Postfix) with ESMTP id CCEB33C2E;
 Mon,  8 Jan 2024 16:37:46 +0000 (UTC)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 48ced153-ae44-11ee-98ef-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
	s=mimecast20190719; t=1704731879;
	h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
	 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=ANS2L+5jbPBuJVu1IpxHuGxbCPVsYlWVyWE6aHyrgZs=;
	b=eK7ndv4Q+O7rdeL3UKY0HtPs9jMpNOEsQwrcPR4LYSzKPUl3DyS0AB17tUjYdmQjW0meU+
	oFb4E8kR8ihZy6YGZ9I9PjZkI6tdfi2cO3+0V04vZujCKUM0KHHZZ1D8gUnzp69U9mPL9W
	oSWAXUuMPVqntSPlnx+tZpSfBvEEAB8=
X-MC-Unique: OBFUpOqePHCBWUy5MoIPIg-1
From: Stefan Hajnoczi <stefanha@redhat.com>
To: qemu-devel@nongnu.org
Cc: qemu-s390x@nongnu.org,
	Aleksandar Rikalo <aleksandar.rikalo@syrmia.com>,
	qemu-block@nongnu.org,
	Alistair Francis <alistair.francis@wdc.com>,
	Max Filippov <jcmvbkbc@gmail.com>,
	kvm@vger.kernel.org,
	Daniel Henrique Barboza <danielhb413@gmail.com>,
	Jiaxun Yang <jiaxun.yang@flygoat.com>,
	qemu-arm@nongnu.org,
	Jean-Christophe Dubois <jcd@tribudubois.net>,
	Jiri Slaby <jslaby@suse.cz>,
	=?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= <marcandre.lureau@redhat.com>,
	=?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= <philmd@linaro.org>,
	Eric Blake <eblake@redhat.com>,
	Paul Durrant <paul@xen.org>,
	BALATON Zoltan <balaton@eik.bme.hu>,
	Kevin Wolf <kwolf@redhat.com>,
	Pavel Dovgalyuk <pavel.dovgaluk@ispras.ru>,
	=?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= <berrange@redhat.com>,
	Roman Bolshakov <rbolshakov@ddn.com>,
	Reinoud Zandijk <reinoud@netbsd.org>,
	Christian Borntraeger <borntraeger@linux.ibm.com>,
	Gerd Hoffmann <kraxel@redhat.com>,
	Thomas Huth <thuth@redhat.com>,
	Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>,
	xen-devel@lists.xenproject.org,
	Anthony Perard <anthony.perard@citrix.com>,
	Weiwei Li <liwei1518@gmail.com>,
	qemu-ppc@nongnu.org,
	Sunil Muthuswamy <sunilmut@microsoft.com>,
	Halil Pasic <pasic@linux.ibm.com>,
	Song Gao <gaosong@loongson.cn>,
	Aurelien Jarno <aurelien@aurel32.net>,
	=?UTF-8?q?Alex=20Benn=C3=A9e?= <alex.bennee@linaro.org>,
	=?UTF-8?q?C=C3=A9dric=20Le=20Goater?= <clg@kaod.org>,
	Andrey Smirnov <andrew.smirnov@gmail.com>,
	Marcel Apfelbaum <marcel.apfelbaum@gmail.com>,
	Eduardo Habkost <eduardo@habkost.net>,
	"Michael S. Tsirkin" <mst@redhat.com>,
	Marcelo Tosatti <mtosatti@redhat.com>,
	qemu-riscv@nongnu.org,
	Palmer Dabbelt <palmer@dabbelt.com>,
	Alexander Graf <agraf@csgraf.de>,
	Markus Armbruster <armbru@redhat.com>,
	John Snow <jsnow@redhat.com>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Peter Xu <peterx@redhat.com>,
	Stefan Weil <sw@weilnetz.de>,
	Harsh Prateek Bora <harshpb@linux.ibm.com>,
	Hailiang Zhang <zhanghailiang@xfusion.com>,
	Hyman Huang <yong.huang@smartx.com>,
	Michael Roth <michael.roth@amd.com>,
	Fam Zheng <fam@euphon.net>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Vladimir Sementsov-Ogievskiy <vsementsov@yandex-team.ru>,
	David Gibson <david@gibson.dropbear.id.au>,
	Artyom Tarasenko <atar4qemu@gmail.com>,
	Stefan Hajnoczi <stefanha@redhat.com>,
	Stafford Horne <shorne@gmail.com>,
	Liu Zhiwei <zhiwei_liu@linux.alibaba.com>,
	David Woodhouse <dwmw2@infradead.org>,
	Cameron Esfahani <dirty@apple.com>,
	Eric Farman <farman@linux.ibm.com>,
	Jason Wang <jasowang@redhat.com>,
	Nicholas Piggin <npiggin@gmail.com>,
	Ilya Leoshkevich <iii@linux.ibm.com>,
	Peter Maydell <peter.maydell@linaro.org>,
	Richard Henderson <richard.henderson@linaro.org>,
	Hanna Reitz <hreitz@redhat.com>,
	Huacai Chen <chenhuacai@kernel.org>,
	Jagannathan Raman <jag.raman@oracle.com>,
	Elena Ufimtseva <elena.ufimtseva@oracle.com>,
	Bin Meng <bin.meng@windriver.com>,
	Fabiano Rosas <farosas@suse.de>,
	Akihiko Odaki <akihiko.odaki@daynix.com>,
	David Hildenbrand <david@redhat.com>,
	David Woodhouse <dwmw@amazon.co.uk>
Subject: [PULL 3/6] qemu/main-loop: rename QEMU_IOTHREAD_LOCK_GUARD to BQL_LOCK_GUARD
Date: Mon,  8 Jan 2024 11:37:32 -0500
Message-ID: <20240108163735.254732-4-stefanha@redhat.com>
In-Reply-To: <20240108163735.254732-1-stefanha@redhat.com>
References: <20240108163735.254732-1-stefanha@redhat.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Scanned-By: MIMEDefang 3.4.1 on 10.11.54.1

The name "iothread" is overloaded. Use the term Big QEMU Lock (BQL)
instead, it is already widely used and unambiguous.

Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
Reviewed-by: Paul Durrant <paul@xen.org>
Acked-by: David Woodhouse <dwmw@amazon.co.uk>
Reviewed-by: Cédric Le Goater <clg@kaod.org>
Acked-by: Ilya Leoshkevich <iii@linux.ibm.com>
Reviewed-by: Harsh Prateek Bora <harshpb@linux.ibm.com>
Reviewed-by: Akihiko Odaki <akihiko.odaki@daynix.com>
Message-id: 20240102153529.486531-3-stefanha@redhat.com
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
---
 include/qemu/main-loop.h  | 19 +++++++++----------
 hw/i386/kvm/xen_evtchn.c  | 14 +++++++-------
 hw/i386/kvm/xen_gnttab.c  |  2 +-
 hw/mips/mips_int.c        |  2 +-
 hw/ppc/ppc.c              |  2 +-
 target/i386/kvm/xen-emu.c |  2 +-
 target/ppc/excp_helper.c  |  2 +-
 target/ppc/helper_regs.c  |  2 +-
 target/riscv/cpu_helper.c |  4 ++--
 9 files changed, 24 insertions(+), 25 deletions(-)

diff --git a/include/qemu/main-loop.h b/include/qemu/main-loop.h
index 72ebc0cb3a..c26ad2a029 100644
--- a/include/qemu/main-loop.h
+++ b/include/qemu/main-loop.h
@@ -343,33 +343,32 @@ void bql_lock_impl(const char *file, int line);
 void bql_unlock(void);
 
 /**
- * QEMU_IOTHREAD_LOCK_GUARD
+ * BQL_LOCK_GUARD
  *
  * Wrap a block of code in a conditional bql_{lock,unlock}.
  */
-typedef struct IOThreadLockAuto IOThreadLockAuto;
+typedef struct BQLLockAuto BQLLockAuto;
 
-static inline IOThreadLockAuto *qemu_iothread_auto_lock(const char *file,
-                                                        int line)
+static inline BQLLockAuto *bql_auto_lock(const char *file, int line)
 {
     if (bql_locked()) {
         return NULL;
     }
     bql_lock_impl(file, line);
     /* Anything non-NULL causes the cleanup function to be called */
-    return (IOThreadLockAuto *)(uintptr_t)1;
+    return (BQLLockAuto *)(uintptr_t)1;
 }
 
-static inline void qemu_iothread_auto_unlock(IOThreadLockAuto *l)
+static inline void bql_auto_unlock(BQLLockAuto *l)
 {
     bql_unlock();
 }
 
-G_DEFINE_AUTOPTR_CLEANUP_FUNC(IOThreadLockAuto, qemu_iothread_auto_unlock)
+G_DEFINE_AUTOPTR_CLEANUP_FUNC(BQLLockAuto, bql_auto_unlock)
 
-#define QEMU_IOTHREAD_LOCK_GUARD() \
-    g_autoptr(IOThreadLockAuto) _iothread_lock_auto __attribute__((unused)) \
-        = qemu_iothread_auto_lock(__FILE__, __LINE__)
+#define BQL_LOCK_GUARD() \
+    g_autoptr(BQLLockAuto) _bql_lock_auto __attribute__((unused)) \
+        = bql_auto_lock(__FILE__, __LINE__)
 
 /*
  * qemu_cond_wait_iothread: Wait on condition for the main loop mutex
diff --git a/hw/i386/kvm/xen_evtchn.c b/hw/i386/kvm/xen_evtchn.c
index 4a835a1010..0171ef6d59 100644
--- a/hw/i386/kvm/xen_evtchn.c
+++ b/hw/i386/kvm/xen_evtchn.c
@@ -1127,7 +1127,7 @@ int xen_evtchn_reset_op(struct evtchn_reset *reset)
         return -ESRCH;
     }
 
-    QEMU_IOTHREAD_LOCK_GUARD();
+    BQL_LOCK_GUARD();
     return xen_evtchn_soft_reset();
 }
 
@@ -1145,7 +1145,7 @@ int xen_evtchn_close_op(struct evtchn_close *close)
         return -EINVAL;
     }
 
-    QEMU_IOTHREAD_LOCK_GUARD();
+    BQL_LOCK_GUARD();
     qemu_mutex_lock(&s->port_lock);
 
     ret = close_port(s, close->port, &flush_kvm_routes);
@@ -1272,7 +1272,7 @@ int xen_evtchn_bind_pirq_op(struct evtchn_bind_pirq *pirq)
         return -EINVAL;
     }
 
-    QEMU_IOTHREAD_LOCK_GUARD();
+    BQL_LOCK_GUARD();
 
     if (s->pirq[pirq->pirq].port) {
         return -EBUSY;
@@ -1824,7 +1824,7 @@ int xen_physdev_map_pirq(struct physdev_map_pirq *map)
         return -ENOTSUP;
     }
 
-    QEMU_IOTHREAD_LOCK_GUARD();
+    BQL_LOCK_GUARD();
     QEMU_LOCK_GUARD(&s->port_lock);
 
     if (map->domid != DOMID_SELF && map->domid != xen_domid) {
@@ -1884,7 +1884,7 @@ int xen_physdev_unmap_pirq(struct physdev_unmap_pirq *unmap)
         return -EINVAL;
     }
 
-    QEMU_IOTHREAD_LOCK_GUARD();
+    BQL_LOCK_GUARD();
     qemu_mutex_lock(&s->port_lock);
 
     if (!pirq_inuse(s, pirq)) {
@@ -1924,7 +1924,7 @@ int xen_physdev_eoi_pirq(struct physdev_eoi *eoi)
         return -ENOTSUP;
     }
 
-    QEMU_IOTHREAD_LOCK_GUARD();
+    BQL_LOCK_GUARD();
     QEMU_LOCK_GUARD(&s->port_lock);
 
     if (!pirq_inuse(s, pirq)) {
@@ -1956,7 +1956,7 @@ int xen_physdev_query_pirq(struct physdev_irq_status_query *query)
         return -ENOTSUP;
     }
 
-    QEMU_IOTHREAD_LOCK_GUARD();
+    BQL_LOCK_GUARD();
     QEMU_LOCK_GUARD(&s->port_lock);
 
     if (!pirq_inuse(s, pirq)) {
diff --git a/hw/i386/kvm/xen_gnttab.c b/hw/i386/kvm/xen_gnttab.c
index a0cc30f619..245e4b15db 100644
--- a/hw/i386/kvm/xen_gnttab.c
+++ b/hw/i386/kvm/xen_gnttab.c
@@ -176,7 +176,7 @@ int xen_gnttab_map_page(uint64_t idx, uint64_t gfn)
         return -EINVAL;
     }
 
-    QEMU_IOTHREAD_LOCK_GUARD();
+    BQL_LOCK_GUARD();
     QEMU_LOCK_GUARD(&s->gnt_lock);
 
     xen_overlay_do_map_page(&s->gnt_aliases[idx], gpa);
diff --git a/hw/mips/mips_int.c b/hw/mips/mips_int.c
index 6c32e466a3..eef2fd2cd1 100644
--- a/hw/mips/mips_int.c
+++ b/hw/mips/mips_int.c
@@ -36,7 +36,7 @@ static void cpu_mips_irq_request(void *opaque, int irq, int level)
         return;
     }
 
-    QEMU_IOTHREAD_LOCK_GUARD();
+    BQL_LOCK_GUARD();
 
     if (level) {
         env->CP0_Cause |= 1 << (irq + CP0Ca_IP);
diff --git a/hw/ppc/ppc.c b/hw/ppc/ppc.c
index da1626f4d2..fadb8f5239 100644
--- a/hw/ppc/ppc.c
+++ b/hw/ppc/ppc.c
@@ -47,7 +47,7 @@ void ppc_set_irq(PowerPCCPU *cpu, int irq, int level)
     unsigned int old_pending;
 
     /* We may already have the BQL if coming from the reset path */
-    QEMU_IOTHREAD_LOCK_GUARD();
+    BQL_LOCK_GUARD();
 
     old_pending = env->pending_interrupts;
 
diff --git a/target/i386/kvm/xen-emu.c b/target/i386/kvm/xen-emu.c
index b0ed2e6aeb..fc2c2321ac 100644
--- a/target/i386/kvm/xen-emu.c
+++ b/target/i386/kvm/xen-emu.c
@@ -581,7 +581,7 @@ static int xen_set_shared_info(uint64_t gfn)
     uint64_t gpa = gfn << TARGET_PAGE_BITS;
     int i, err;
 
-    QEMU_IOTHREAD_LOCK_GUARD();
+    BQL_LOCK_GUARD();
 
     /*
      * The xen_overlay device tells KVM about it too, since it had to
diff --git a/target/ppc/excp_helper.c b/target/ppc/excp_helper.c
index 8a2bfb5aa2..2ec6429e36 100644
--- a/target/ppc/excp_helper.c
+++ b/target/ppc/excp_helper.c
@@ -2222,7 +2222,7 @@ static int ppc_next_unmasked_interrupt(CPUPPCState *env)
 void ppc_maybe_interrupt(CPUPPCState *env)
 {
     CPUState *cs = env_cpu(env);
-    QEMU_IOTHREAD_LOCK_GUARD();
+    BQL_LOCK_GUARD();
 
     if (ppc_next_unmasked_interrupt(env)) {
         cpu_interrupt(cs, CPU_INTERRUPT_HARD);
diff --git a/target/ppc/helper_regs.c b/target/ppc/helper_regs.c
index f380342d4d..e0b2dcd02e 100644
--- a/target/ppc/helper_regs.c
+++ b/target/ppc/helper_regs.c
@@ -244,7 +244,7 @@ void cpu_interrupt_exittb(CPUState *cs)
      * unless running with TCG.
      */
     if (tcg_enabled()) {
-        QEMU_IOTHREAD_LOCK_GUARD();
+        BQL_LOCK_GUARD();
         cpu_interrupt(cs, CPU_INTERRUPT_EXITTB);
     }
 }
diff --git a/target/riscv/cpu_helper.c b/target/riscv/cpu_helper.c
index e7e23b34f4..99d1275729 100644
--- a/target/riscv/cpu_helper.c
+++ b/target/riscv/cpu_helper.c
@@ -655,7 +655,7 @@ void riscv_cpu_interrupt(CPURISCVState *env)
     uint64_t gein, vsgein = 0, vstip = 0, irqf = 0;
     CPUState *cs = env_cpu(env);
 
-    QEMU_IOTHREAD_LOCK_GUARD();
+    BQL_LOCK_GUARD();
 
     if (env->virt_enabled) {
         gein = get_field(env->hstatus, HSTATUS_VGEIN);
@@ -681,7 +681,7 @@ uint64_t riscv_cpu_update_mip(CPURISCVState *env, uint64_t mask, uint64_t value)
     /* No need to update mip for VSTIP */
     mask = ((mask == MIP_VSTIP) && env->vstime_irq) ? 0 : mask;
 
-    QEMU_IOTHREAD_LOCK_GUARD();
+    BQL_LOCK_GUARD();
 
     env->mip = (env->mip & ~mask) | (value & mask);
 
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Mon Jan 08 16:38:04 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 08 Jan 2024 16:38:04 +0000
Received: from list by lists.xenproject.org with outflank-mailman.663616.1033671 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMsdY-0004iq-Ak; Mon, 08 Jan 2024 16:38:04 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 663616.1033671; Mon, 08 Jan 2024 16:38:04 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMsdY-0004gn-2f; Mon, 08 Jan 2024 16:38:04 +0000
Received: by outflank-mailman (input) for mailman id 663616;
 Mon, 08 Jan 2024 16:38:02 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=EZ8K=IS=redhat.com=stefanha@srs-se1.protection.inumbo.net>)
 id 1rMsdW-0003cg-A3
 for xen-devel@lists.xenproject.org; Mon, 08 Jan 2024 16:38:02 +0000
Received: from us-smtp-delivery-124.mimecast.com
 (us-smtp-delivery-124.mimecast.com [170.10.133.124])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 48b72a14-ae44-11ee-9b0f-b553b5be7939;
 Mon, 08 Jan 2024 17:38:00 +0100 (CET)
Received: from mimecast-mx02.redhat.com (mx-ext.redhat.com [66.187.233.73])
 by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3,
 cipher=TLS_AES_256_GCM_SHA384) id us-mta-452-Z5Yk12GVOpSLz6gobTghhg-1; Mon,
 08 Jan 2024 11:37:54 -0500
Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.rdu2.redhat.com
 [10.11.54.2])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256)
 (No client certificate requested)
 by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 207E43813BC5;
 Mon,  8 Jan 2024 16:37:51 +0000 (UTC)
Received: from localhost (unknown [10.39.194.85])
 by smtp.corp.redhat.com (Postfix) with ESMTP id DEE9540C6EB9;
 Mon,  8 Jan 2024 16:37:49 +0000 (UTC)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 48b72a14-ae44-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
	s=mimecast20190719; t=1704731879;
	h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
	 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=g+ze6ScecUWqpBL1ym3zeCBrNvLJSj4Of46u1qqP/x4=;
	b=T8qAz35+zfJSbkaJ7GfmpEvhefFJGuAtrDBQgjpiMyypjAWEv8m+p0dpF19DSm9KTDa2xl
	s39IaZQNceZAFMWpLJSAEiulsjC9A/685q7jgzn5UkHvTdY66TZ4Xxf6Dg0koJJ3PsZ+0/
	G/m8PsFz0nLZjD592miwCw1hNph24Ls=
X-MC-Unique: Z5Yk12GVOpSLz6gobTghhg-1
From: Stefan Hajnoczi <stefanha@redhat.com>
To: qemu-devel@nongnu.org
Cc: qemu-s390x@nongnu.org,
	Aleksandar Rikalo <aleksandar.rikalo@syrmia.com>,
	qemu-block@nongnu.org,
	Alistair Francis <alistair.francis@wdc.com>,
	Max Filippov <jcmvbkbc@gmail.com>,
	kvm@vger.kernel.org,
	Daniel Henrique Barboza <danielhb413@gmail.com>,
	Jiaxun Yang <jiaxun.yang@flygoat.com>,
	qemu-arm@nongnu.org,
	Jean-Christophe Dubois <jcd@tribudubois.net>,
	Jiri Slaby <jslaby@suse.cz>,
	=?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= <marcandre.lureau@redhat.com>,
	=?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= <philmd@linaro.org>,
	Eric Blake <eblake@redhat.com>,
	Paul Durrant <paul@xen.org>,
	BALATON Zoltan <balaton@eik.bme.hu>,
	Kevin Wolf <kwolf@redhat.com>,
	Pavel Dovgalyuk <pavel.dovgaluk@ispras.ru>,
	=?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= <berrange@redhat.com>,
	Roman Bolshakov <rbolshakov@ddn.com>,
	Reinoud Zandijk <reinoud@netbsd.org>,
	Christian Borntraeger <borntraeger@linux.ibm.com>,
	Gerd Hoffmann <kraxel@redhat.com>,
	Thomas Huth <thuth@redhat.com>,
	Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>,
	xen-devel@lists.xenproject.org,
	Anthony Perard <anthony.perard@citrix.com>,
	Weiwei Li <liwei1518@gmail.com>,
	qemu-ppc@nongnu.org,
	Sunil Muthuswamy <sunilmut@microsoft.com>,
	Halil Pasic <pasic@linux.ibm.com>,
	Song Gao <gaosong@loongson.cn>,
	Aurelien Jarno <aurelien@aurel32.net>,
	=?UTF-8?q?Alex=20Benn=C3=A9e?= <alex.bennee@linaro.org>,
	=?UTF-8?q?C=C3=A9dric=20Le=20Goater?= <clg@kaod.org>,
	Andrey Smirnov <andrew.smirnov@gmail.com>,
	Marcel Apfelbaum <marcel.apfelbaum@gmail.com>,
	Eduardo Habkost <eduardo@habkost.net>,
	"Michael S. Tsirkin" <mst@redhat.com>,
	Marcelo Tosatti <mtosatti@redhat.com>,
	qemu-riscv@nongnu.org,
	Palmer Dabbelt <palmer@dabbelt.com>,
	Alexander Graf <agraf@csgraf.de>,
	Markus Armbruster <armbru@redhat.com>,
	John Snow <jsnow@redhat.com>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Peter Xu <peterx@redhat.com>,
	Stefan Weil <sw@weilnetz.de>,
	Harsh Prateek Bora <harshpb@linux.ibm.com>,
	Hailiang Zhang <zhanghailiang@xfusion.com>,
	Hyman Huang <yong.huang@smartx.com>,
	Michael Roth <michael.roth@amd.com>,
	Fam Zheng <fam@euphon.net>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Vladimir Sementsov-Ogievskiy <vsementsov@yandex-team.ru>,
	David Gibson <david@gibson.dropbear.id.au>,
	Artyom Tarasenko <atar4qemu@gmail.com>,
	Stefan Hajnoczi <stefanha@redhat.com>,
	Stafford Horne <shorne@gmail.com>,
	Liu Zhiwei <zhiwei_liu@linux.alibaba.com>,
	David Woodhouse <dwmw2@infradead.org>,
	Cameron Esfahani <dirty@apple.com>,
	Eric Farman <farman@linux.ibm.com>,
	Jason Wang <jasowang@redhat.com>,
	Nicholas Piggin <npiggin@gmail.com>,
	Ilya Leoshkevich <iii@linux.ibm.com>,
	Peter Maydell <peter.maydell@linaro.org>,
	Richard Henderson <richard.henderson@linaro.org>,
	Hanna Reitz <hreitz@redhat.com>,
	Huacai Chen <chenhuacai@kernel.org>,
	Jagannathan Raman <jag.raman@oracle.com>,
	Elena Ufimtseva <elena.ufimtseva@oracle.com>,
	Bin Meng <bin.meng@windriver.com>,
	Fabiano Rosas <farosas@suse.de>,
	Akihiko Odaki <akihiko.odaki@daynix.com>,
	David Hildenbrand <david@redhat.com>
Subject: [PULL 4/6] qemu/main-loop: rename qemu_cond_wait_iothread() to qemu_cond_wait_bql()
Date: Mon,  8 Jan 2024 11:37:33 -0500
Message-ID: <20240108163735.254732-5-stefanha@redhat.com>
In-Reply-To: <20240108163735.254732-1-stefanha@redhat.com>
References: <20240108163735.254732-1-stefanha@redhat.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Scanned-By: MIMEDefang 3.4.1 on 10.11.54.2

The name "iothread" is overloaded. Use the term Big QEMU Lock (BQL)
instead, it is already widely used and unambiguous.

Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
Reviewed-by: Cédric Le Goater <clg@kaod.org>
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Reviewed-by: Paul Durrant <paul@xen.org>
Reviewed-by: Harsh Prateek Bora <harshpb@linux.ibm.com>
Reviewed-by: Akihiko Odaki <akihiko.odaki@daynix.com>
Message-id: 20240102153529.486531-4-stefanha@redhat.com
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
---
 include/qemu/main-loop.h          | 10 +++++-----
 accel/tcg/tcg-accel-ops-rr.c      |  4 ++--
 hw/display/virtio-gpu.c           |  2 +-
 hw/ppc/spapr_events.c             |  2 +-
 system/cpu-throttle.c             |  2 +-
 system/cpus.c                     |  4 ++--
 target/i386/nvmm/nvmm-accel-ops.c |  2 +-
 target/i386/whpx/whpx-accel-ops.c |  2 +-
 8 files changed, 14 insertions(+), 14 deletions(-)

diff --git a/include/qemu/main-loop.h b/include/qemu/main-loop.h
index c26ad2a029..5764db157c 100644
--- a/include/qemu/main-loop.h
+++ b/include/qemu/main-loop.h
@@ -371,17 +371,17 @@ G_DEFINE_AUTOPTR_CLEANUP_FUNC(BQLLockAuto, bql_auto_unlock)
         = bql_auto_lock(__FILE__, __LINE__)
 
 /*
- * qemu_cond_wait_iothread: Wait on condition for the main loop mutex
+ * qemu_cond_wait_bql: Wait on condition for the Big QEMU Lock (BQL)
  *
- * This function atomically releases the main loop mutex and causes
+ * This function atomically releases the Big QEMU Lock (BQL) and causes
  * the calling thread to block on the condition.
  */
-void qemu_cond_wait_iothread(QemuCond *cond);
+void qemu_cond_wait_bql(QemuCond *cond);
 
 /*
- * qemu_cond_timedwait_iothread: like the previous, but with timeout
+ * qemu_cond_timedwait_bql: like the previous, but with timeout
  */
-void qemu_cond_timedwait_iothread(QemuCond *cond, int ms);
+void qemu_cond_timedwait_bql(QemuCond *cond, int ms);
 
 /* internal interfaces */
 
diff --git a/accel/tcg/tcg-accel-ops-rr.c b/accel/tcg/tcg-accel-ops-rr.c
index c4ea372a3f..5794e5a9ce 100644
--- a/accel/tcg/tcg-accel-ops-rr.c
+++ b/accel/tcg/tcg-accel-ops-rr.c
@@ -111,7 +111,7 @@ static void rr_wait_io_event(void)
 
     while (all_cpu_threads_idle()) {
         rr_stop_kick_timer();
-        qemu_cond_wait_iothread(first_cpu->halt_cond);
+        qemu_cond_wait_bql(first_cpu->halt_cond);
     }
 
     rr_start_kick_timer();
@@ -198,7 +198,7 @@ static void *rr_cpu_thread_fn(void *arg)
 
     /* wait for initial kick-off after machine start */
     while (first_cpu->stopped) {
-        qemu_cond_wait_iothread(first_cpu->halt_cond);
+        qemu_cond_wait_bql(first_cpu->halt_cond);
 
         /* process any pending work */
         CPU_FOREACH(cpu) {
diff --git a/hw/display/virtio-gpu.c b/hw/display/virtio-gpu.c
index bae1c2a803..f8a675eb30 100644
--- a/hw/display/virtio-gpu.c
+++ b/hw/display/virtio-gpu.c
@@ -1512,7 +1512,7 @@ void virtio_gpu_reset(VirtIODevice *vdev)
         g->reset_finished = false;
         qemu_bh_schedule(g->reset_bh);
         while (!g->reset_finished) {
-            qemu_cond_wait_iothread(&g->reset_cond);
+            qemu_cond_wait_bql(&g->reset_cond);
         }
     } else {
         virtio_gpu_reset_bh(g);
diff --git a/hw/ppc/spapr_events.c b/hw/ppc/spapr_events.c
index deb4641505..cb0eeee587 100644
--- a/hw/ppc/spapr_events.c
+++ b/hw/ppc/spapr_events.c
@@ -899,7 +899,7 @@ void spapr_mce_req_event(PowerPCCPU *cpu, bool recovered)
             }
             return;
         }
-        qemu_cond_wait_iothread(&spapr->fwnmi_machine_check_interlock_cond);
+        qemu_cond_wait_bql(&spapr->fwnmi_machine_check_interlock_cond);
         if (spapr->fwnmi_machine_check_addr == -1) {
             /*
              * If the machine was reset while waiting for the interlock,
diff --git a/system/cpu-throttle.c b/system/cpu-throttle.c
index 786a9a5639..c951a6c65e 100644
--- a/system/cpu-throttle.c
+++ b/system/cpu-throttle.c
@@ -54,7 +54,7 @@ static void cpu_throttle_thread(CPUState *cpu, run_on_cpu_data opaque)
     endtime_ns = qemu_clock_get_ns(QEMU_CLOCK_REALTIME) + sleeptime_ns;
     while (sleeptime_ns > 0 && !cpu->stop) {
         if (sleeptime_ns > SCALE_MS) {
-            qemu_cond_timedwait_iothread(cpu->halt_cond,
+            qemu_cond_timedwait_bql(cpu->halt_cond,
                                          sleeptime_ns / SCALE_MS);
         } else {
             bql_unlock();
diff --git a/system/cpus.c b/system/cpus.c
index 1ede629f1f..68d161d96b 100644
--- a/system/cpus.c
+++ b/system/cpus.c
@@ -533,12 +533,12 @@ void bql_unlock(void)
     qemu_mutex_unlock(&bql);
 }
 
-void qemu_cond_wait_iothread(QemuCond *cond)
+void qemu_cond_wait_bql(QemuCond *cond)
 {
     qemu_cond_wait(cond, &bql);
 }
 
-void qemu_cond_timedwait_iothread(QemuCond *cond, int ms)
+void qemu_cond_timedwait_bql(QemuCond *cond, int ms)
 {
     qemu_cond_timedwait(cond, &bql, ms);
 }
diff --git a/target/i386/nvmm/nvmm-accel-ops.c b/target/i386/nvmm/nvmm-accel-ops.c
index f9d5e9a37a..6b2bfd9b9c 100644
--- a/target/i386/nvmm/nvmm-accel-ops.c
+++ b/target/i386/nvmm/nvmm-accel-ops.c
@@ -48,7 +48,7 @@ static void *qemu_nvmm_cpu_thread_fn(void *arg)
             }
         }
         while (cpu_thread_is_idle(cpu)) {
-            qemu_cond_wait_iothread(cpu->halt_cond);
+            qemu_cond_wait_bql(cpu->halt_cond);
         }
         qemu_wait_io_event_common(cpu);
     } while (!cpu->unplug || cpu_can_run(cpu));
diff --git a/target/i386/whpx/whpx-accel-ops.c b/target/i386/whpx/whpx-accel-ops.c
index e783a760a7..189ae0f140 100644
--- a/target/i386/whpx/whpx-accel-ops.c
+++ b/target/i386/whpx/whpx-accel-ops.c
@@ -48,7 +48,7 @@ static void *whpx_cpu_thread_fn(void *arg)
             }
         }
         while (cpu_thread_is_idle(cpu)) {
-            qemu_cond_wait_iothread(cpu->halt_cond);
+            qemu_cond_wait_bql(cpu->halt_cond);
         }
         qemu_wait_io_event_common(cpu);
     } while (!cpu->unplug || cpu_can_run(cpu));
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Mon Jan 08 16:38:05 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 08 Jan 2024 16:38:05 +0000
Received: from list by lists.xenproject.org with outflank-mailman.663617.1033684 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMsdZ-000592-Fp; Mon, 08 Jan 2024 16:38:05 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 663617.1033684; Mon, 08 Jan 2024 16:38:05 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMsdZ-00057G-Bb; Mon, 08 Jan 2024 16:38:05 +0000
Received: by outflank-mailman (input) for mailman id 663617;
 Mon, 08 Jan 2024 16:38:04 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=EZ8K=IS=redhat.com=stefanha@srs-se1.protection.inumbo.net>)
 id 1rMsdX-0004cj-T8
 for xen-devel@lists.xenproject.org; Mon, 08 Jan 2024 16:38:04 +0000
Received: from us-smtp-delivery-124.mimecast.com
 (us-smtp-delivery-124.mimecast.com [170.10.133.124])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 49c64894-ae44-11ee-98ef-6d05b1d4d9a1;
 Mon, 08 Jan 2024 17:38:02 +0100 (CET)
Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com
 [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS
 (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id
 us-mta-542-OEOZOnLrN3yBJws0m3l3aQ-1; Mon, 08 Jan 2024 11:37:57 -0500
Received: from smtp.corp.redhat.com (int-mx10.intmail.prod.int.rdu2.redhat.com
 [10.11.54.10])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256)
 (No client certificate requested)
 by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 11538833949;
 Mon,  8 Jan 2024 16:37:54 +0000 (UTC)
Received: from localhost (unknown [10.39.194.85])
 by smtp.corp.redhat.com (Postfix) with ESMTP id A6913492BF0;
 Mon,  8 Jan 2024 16:37:52 +0000 (UTC)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 49c64894-ae44-11ee-98ef-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
	s=mimecast20190719; t=1704731881;
	h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
	 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=Q5R88m0lIMdycowjTn/znMnJ0lu6hU6xW7ar/0WOWHk=;
	b=T41256ODReb2M330rnw2ST7r6vkrGlz7Qi9sEFdSQ+/WKkUIxP4mc24cAPekdNxlwUlmw4
	pmajXMg9eRrpxnT/CSejYTmmp0Nd9E9Ug/WllVsj2I6i+6yTayWY4tjUT6/Cz7y5lhHRYe
	5smroCk0/hfeSzbwvOU200bLqEbT86A=
X-MC-Unique: OEOZOnLrN3yBJws0m3l3aQ-1
From: Stefan Hajnoczi <stefanha@redhat.com>
To: qemu-devel@nongnu.org
Cc: qemu-s390x@nongnu.org,
	Aleksandar Rikalo <aleksandar.rikalo@syrmia.com>,
	qemu-block@nongnu.org,
	Alistair Francis <alistair.francis@wdc.com>,
	Max Filippov <jcmvbkbc@gmail.com>,
	kvm@vger.kernel.org,
	Daniel Henrique Barboza <danielhb413@gmail.com>,
	Jiaxun Yang <jiaxun.yang@flygoat.com>,
	qemu-arm@nongnu.org,
	Jean-Christophe Dubois <jcd@tribudubois.net>,
	Jiri Slaby <jslaby@suse.cz>,
	=?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= <marcandre.lureau@redhat.com>,
	=?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= <philmd@linaro.org>,
	Eric Blake <eblake@redhat.com>,
	Paul Durrant <paul@xen.org>,
	BALATON Zoltan <balaton@eik.bme.hu>,
	Kevin Wolf <kwolf@redhat.com>,
	Pavel Dovgalyuk <pavel.dovgaluk@ispras.ru>,
	=?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= <berrange@redhat.com>,
	Roman Bolshakov <rbolshakov@ddn.com>,
	Reinoud Zandijk <reinoud@netbsd.org>,
	Christian Borntraeger <borntraeger@linux.ibm.com>,
	Gerd Hoffmann <kraxel@redhat.com>,
	Thomas Huth <thuth@redhat.com>,
	Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>,
	xen-devel@lists.xenproject.org,
	Anthony Perard <anthony.perard@citrix.com>,
	Weiwei Li <liwei1518@gmail.com>,
	qemu-ppc@nongnu.org,
	Sunil Muthuswamy <sunilmut@microsoft.com>,
	Halil Pasic <pasic@linux.ibm.com>,
	Song Gao <gaosong@loongson.cn>,
	Aurelien Jarno <aurelien@aurel32.net>,
	=?UTF-8?q?Alex=20Benn=C3=A9e?= <alex.bennee@linaro.org>,
	=?UTF-8?q?C=C3=A9dric=20Le=20Goater?= <clg@kaod.org>,
	Andrey Smirnov <andrew.smirnov@gmail.com>,
	Marcel Apfelbaum <marcel.apfelbaum@gmail.com>,
	Eduardo Habkost <eduardo@habkost.net>,
	"Michael S. Tsirkin" <mst@redhat.com>,
	Marcelo Tosatti <mtosatti@redhat.com>,
	qemu-riscv@nongnu.org,
	Palmer Dabbelt <palmer@dabbelt.com>,
	Alexander Graf <agraf@csgraf.de>,
	Markus Armbruster <armbru@redhat.com>,
	John Snow <jsnow@redhat.com>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Peter Xu <peterx@redhat.com>,
	Stefan Weil <sw@weilnetz.de>,
	Harsh Prateek Bora <harshpb@linux.ibm.com>,
	Hailiang Zhang <zhanghailiang@xfusion.com>,
	Hyman Huang <yong.huang@smartx.com>,
	Michael Roth <michael.roth@amd.com>,
	Fam Zheng <fam@euphon.net>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Vladimir Sementsov-Ogievskiy <vsementsov@yandex-team.ru>,
	David Gibson <david@gibson.dropbear.id.au>,
	Artyom Tarasenko <atar4qemu@gmail.com>,
	Stefan Hajnoczi <stefanha@redhat.com>,
	Stafford Horne <shorne@gmail.com>,
	Liu Zhiwei <zhiwei_liu@linux.alibaba.com>,
	David Woodhouse <dwmw2@infradead.org>,
	Cameron Esfahani <dirty@apple.com>,
	Eric Farman <farman@linux.ibm.com>,
	Jason Wang <jasowang@redhat.com>,
	Nicholas Piggin <npiggin@gmail.com>,
	Ilya Leoshkevich <iii@linux.ibm.com>,
	Peter Maydell <peter.maydell@linaro.org>,
	Richard Henderson <richard.henderson@linaro.org>,
	Hanna Reitz <hreitz@redhat.com>,
	Huacai Chen <chenhuacai@kernel.org>,
	Jagannathan Raman <jag.raman@oracle.com>,
	Elena Ufimtseva <elena.ufimtseva@oracle.com>,
	Bin Meng <bin.meng@windriver.com>,
	Fabiano Rosas <farosas@suse.de>,
	Akihiko Odaki <akihiko.odaki@daynix.com>,
	David Hildenbrand <david@redhat.com>
Subject: [PULL 5/6] Replace "iothread lock" with "BQL" in comments
Date: Mon,  8 Jan 2024 11:37:34 -0500
Message-ID: <20240108163735.254732-6-stefanha@redhat.com>
In-Reply-To: <20240108163735.254732-1-stefanha@redhat.com>
References: <20240108163735.254732-1-stefanha@redhat.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Scanned-By: MIMEDefang 3.4.1 on 10.11.54.10

The term "iothread lock" is obsolete. The APIs use Big QEMU Lock (BQL)
in their names. Update the code comments to use "BQL" instead of
"iothread lock".

Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Reviewed-by: Paul Durrant <paul@xen.org>
Reviewed-by: Akihiko Odaki <akihiko.odaki@daynix.com>
Reviewed-by: Cédric Le Goater <clg@kaod.org>
Reviewed-by: Harsh Prateek Bora <harshpb@linux.ibm.com>
Message-id: 20240102153529.486531-5-stefanha@redhat.com
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
---
 docs/devel/reset.rst             |  2 +-
 hw/display/qxl.h                 |  2 +-
 include/exec/cpu-common.h        |  2 +-
 include/exec/memory.h            |  4 ++--
 include/exec/ramblock.h          |  2 +-
 include/migration/register.h     |  8 ++++----
 target/arm/internals.h           |  4 ++--
 accel/tcg/cputlb.c               |  4 ++--
 accel/tcg/tcg-accel-ops-icount.c |  2 +-
 hw/remote/mpqemu-link.c          |  2 +-
 migration/block-dirty-bitmap.c   | 10 +++++-----
 migration/block.c                | 22 +++++++++++-----------
 migration/colo.c                 |  2 +-
 migration/migration.c            |  2 +-
 migration/ram.c                  |  4 ++--
 system/physmem.c                 |  6 +++---
 target/arm/helper.c              |  2 +-
 ui/spice-core.c                  |  2 +-
 util/rcu.c                       |  2 +-
 audio/coreaudio.m                |  4 ++--
 ui/cocoa.m                       |  6 +++---
 21 files changed, 47 insertions(+), 47 deletions(-)

diff --git a/docs/devel/reset.rst b/docs/devel/reset.rst
index 38ed1790f7..d4e79718ba 100644
--- a/docs/devel/reset.rst
+++ b/docs/devel/reset.rst
@@ -19,7 +19,7 @@ Triggering reset
 
 This section documents the APIs which "users" of a resettable object should use
 to control it. All resettable control functions must be called while holding
-the iothread lock.
+the BQL.
 
 You can apply a reset to an object using ``resettable_assert_reset()``. You need
 to call ``resettable_release_reset()`` to release the object from reset. To
diff --git a/hw/display/qxl.h b/hw/display/qxl.h
index fdac14edad..e0a85a5ca4 100644
--- a/hw/display/qxl.h
+++ b/hw/display/qxl.h
@@ -159,7 +159,7 @@ OBJECT_DECLARE_SIMPLE_TYPE(PCIQXLDevice, PCI_QXL)
  *
  * Use with care; by the time this function returns, the returned pointer is
  * not protected by RCU anymore.  If the caller is not within an RCU critical
- * section and does not hold the iothread lock, it must have other means of
+ * section and does not hold the BQL, it must have other means of
  * protecting the pointer, such as a reference to the region that includes
  * the incoming ram_addr_t.
  *
diff --git a/include/exec/cpu-common.h b/include/exec/cpu-common.h
index 41115d8919..fef3138d29 100644
--- a/include/exec/cpu-common.h
+++ b/include/exec/cpu-common.h
@@ -92,7 +92,7 @@ RAMBlock *qemu_ram_block_by_name(const char *name);
  *
  * By the time this function returns, the returned pointer is not protected
  * by RCU anymore.  If the caller is not within an RCU critical section and
- * does not hold the iothread lock, it must have other means of protecting the
+ * does not hold the BQL, it must have other means of protecting the
  * pointer, such as a reference to the memory region that owns the RAMBlock.
  */
 RAMBlock *qemu_ram_block_from_host(void *ptr, bool round_offset,
diff --git a/include/exec/memory.h b/include/exec/memory.h
index 48c11ca743..177be23db7 100644
--- a/include/exec/memory.h
+++ b/include/exec/memory.h
@@ -1982,7 +1982,7 @@ int memory_region_get_fd(MemoryRegion *mr);
  *
  * Use with care; by the time this function returns, the returned pointer is
  * not protected by RCU anymore.  If the caller is not within an RCU critical
- * section and does not hold the iothread lock, it must have other means of
+ * section and does not hold the BQL, it must have other means of
  * protecting the pointer, such as a reference to the region that includes
  * the incoming ram_addr_t.
  *
@@ -1999,7 +1999,7 @@ MemoryRegion *memory_region_from_host(void *ptr, ram_addr_t *offset);
  *
  * Use with care; by the time this function returns, the returned pointer is
  * not protected by RCU anymore.  If the caller is not within an RCU critical
- * section and does not hold the iothread lock, it must have other means of
+ * section and does not hold the BQL, it must have other means of
  * protecting the pointer, such as a reference to the region that includes
  * the incoming ram_addr_t.
  *
diff --git a/include/exec/ramblock.h b/include/exec/ramblock.h
index 69c6a53902..3eb79723c6 100644
--- a/include/exec/ramblock.h
+++ b/include/exec/ramblock.h
@@ -34,7 +34,7 @@ struct RAMBlock {
     ram_addr_t max_length;
     void (*resized)(const char*, uint64_t length, void *host);
     uint32_t flags;
-    /* Protected by iothread lock.  */
+    /* Protected by the BQL.  */
     char idstr[256];
     /* RCU-enabled, writes protected by the ramlist lock */
     QLIST_ENTRY(RAMBlock) next;
diff --git a/include/migration/register.h b/include/migration/register.h
index fed1d04a3c..9ab1f79512 100644
--- a/include/migration/register.h
+++ b/include/migration/register.h
@@ -17,7 +17,7 @@
 #include "hw/vmstate-if.h"
 
 typedef struct SaveVMHandlers {
-    /* This runs inside the iothread lock.  */
+    /* This runs inside the BQL.  */
     SaveStateHandler *save_state;
 
     /*
@@ -30,7 +30,7 @@ typedef struct SaveVMHandlers {
     int (*save_live_complete_postcopy)(QEMUFile *f, void *opaque);
     int (*save_live_complete_precopy)(QEMUFile *f, void *opaque);
 
-    /* This runs both outside and inside the iothread lock.  */
+    /* This runs both outside and inside the BQL.  */
     bool (*is_active)(void *opaque);
     bool (*has_postcopy)(void *opaque);
 
@@ -43,14 +43,14 @@ typedef struct SaveVMHandlers {
      */
     bool (*is_active_iterate)(void *opaque);
 
-    /* This runs outside the iothread lock in the migration case, and
+    /* This runs outside the BQL in the migration case, and
      * within the lock in the savevm case.  The callback had better only
      * use data that is local to the migration thread or protected
      * by other locks.
      */
     int (*save_live_iterate)(QEMUFile *f, void *opaque);
 
-    /* This runs outside the iothread lock!  */
+    /* This runs outside the BQL!  */
     /* Note for save_live_pending:
      * must_precopy:
      * - must be migrated in precopy or in stopped state
diff --git a/target/arm/internals.h b/target/arm/internals.h
index 143d57c0fe..71d6c70bf3 100644
--- a/target/arm/internals.h
+++ b/target/arm/internals.h
@@ -940,7 +940,7 @@ static inline const char *aarch32_mode_name(uint32_t psr)
  *
  * Update the CPU_INTERRUPT_VIRQ bit in cs->interrupt_request, following
  * a change to either the input VIRQ line from the GIC or the HCR_EL2.VI bit.
- * Must be called with the iothread lock held.
+ * Must be called with the BQL held.
  */
 void arm_cpu_update_virq(ARMCPU *cpu);
 
@@ -949,7 +949,7 @@ void arm_cpu_update_virq(ARMCPU *cpu);
  *
  * Update the CPU_INTERRUPT_VFIQ bit in cs->interrupt_request, following
  * a change to either the input VFIQ line from the GIC or the HCR_EL2.VF bit.
- * Must be called with the iothread lock held.
+ * Must be called with the BQL held.
  */
 void arm_cpu_update_vfiq(ARMCPU *cpu);
 
diff --git a/accel/tcg/cputlb.c b/accel/tcg/cputlb.c
index 5698a9fd8e..3facfcbb24 100644
--- a/accel/tcg/cputlb.c
+++ b/accel/tcg/cputlb.c
@@ -1975,7 +1975,7 @@ static void *atomic_mmu_lookup(CPUState *cpu, vaddr addr, MemOpIdx oi,
  * @size: number of bytes
  * @mmu_idx: virtual address context
  * @ra: return address into tcg generated code, or 0
- * Context: iothread lock held
+ * Context: BQL held
  *
  * Load @size bytes from @addr, which is memory-mapped i/o.
  * The bytes are concatenated in big-endian order with @ret_be.
@@ -2521,7 +2521,7 @@ static Int128 do_ld16_mmu(CPUState *cpu, vaddr addr,
  * @size: number of bytes
  * @mmu_idx: virtual address context
  * @ra: return address into tcg generated code, or 0
- * Context: iothread lock held
+ * Context: BQL held
  *
  * Store @size bytes at @addr, which is memory-mapped i/o.
  * The bytes to store are extracted in little-endian order from @val_le;
diff --git a/accel/tcg/tcg-accel-ops-icount.c b/accel/tcg/tcg-accel-ops-icount.c
index 5824d92580..9e1ae66f65 100644
--- a/accel/tcg/tcg-accel-ops-icount.c
+++ b/accel/tcg/tcg-accel-ops-icount.c
@@ -123,7 +123,7 @@ void icount_prepare_for_run(CPUState *cpu, int64_t cpu_budget)
 
     if (cpu->icount_budget == 0) {
         /*
-         * We're called without the iothread lock, so must take it while
+         * We're called without the BQL, so must take it while
          * we're calling timer handlers.
          */
         bql_lock();
diff --git a/hw/remote/mpqemu-link.c b/hw/remote/mpqemu-link.c
index d04ac93621..4394dc4d82 100644
--- a/hw/remote/mpqemu-link.c
+++ b/hw/remote/mpqemu-link.c
@@ -58,7 +58,7 @@ bool mpqemu_msg_send(MPQemuMsg *msg, QIOChannel *ioc, Error **errp)
     assert(qemu_in_coroutine() || !iothread);
 
     /*
-     * Skip unlocking/locking iothread lock when the IOThread is running
+     * Skip unlocking/locking BQL when the IOThread is running
      * in co-routine context. Co-routine context is asserted above
      * for IOThread case.
      * Also skip lock handling while in a co-routine in the main context.
diff --git a/migration/block-dirty-bitmap.c b/migration/block-dirty-bitmap.c
index 92e031b6fa..2708abf3d7 100644
--- a/migration/block-dirty-bitmap.c
+++ b/migration/block-dirty-bitmap.c
@@ -464,7 +464,7 @@ static void send_bitmap_bits(QEMUFile *f, DBMSaveState *s,
     g_free(buf);
 }
 
-/* Called with iothread lock taken.  */
+/* Called with the BQL taken.  */
 static void dirty_bitmap_do_save_cleanup(DBMSaveState *s)
 {
     SaveBitmapState *dbms;
@@ -479,7 +479,7 @@ static void dirty_bitmap_do_save_cleanup(DBMSaveState *s)
     }
 }
 
-/* Called with iothread lock taken. */
+/* Called with the BQL taken. */
 static int add_bitmaps_to_list(DBMSaveState *s, BlockDriverState *bs,
                                const char *bs_name, GHashTable *alias_map)
 {
@@ -598,7 +598,7 @@ static int add_bitmaps_to_list(DBMSaveState *s, BlockDriverState *bs,
     return 0;
 }
 
-/* Called with iothread lock taken. */
+/* Called with the BQL taken. */
 static int init_dirty_bitmap_migration(DBMSaveState *s)
 {
     BlockDriverState *bs;
@@ -607,7 +607,7 @@ static int init_dirty_bitmap_migration(DBMSaveState *s)
     BlockBackend *blk;
     GHashTable *alias_map = NULL;
 
-    /* Runs in the migration thread, but holds the iothread lock */
+    /* Runs in the migration thread, but holds the BQL */
     GLOBAL_STATE_CODE();
     GRAPH_RDLOCK_GUARD_MAINLOOP();
 
@@ -742,7 +742,7 @@ static int dirty_bitmap_save_iterate(QEMUFile *f, void *opaque)
     return s->bulk_completed;
 }
 
-/* Called with iothread lock taken.  */
+/* Called with the BQL taken.  */
 
 static int dirty_bitmap_save_complete(QEMUFile *f, void *opaque)
 {
diff --git a/migration/block.c b/migration/block.c
index b731d7d778..8c6ebafacc 100644
--- a/migration/block.c
+++ b/migration/block.c
@@ -101,7 +101,7 @@ typedef struct BlkMigState {
     int prev_progress;
     int bulk_completed;
 
-    /* Lock must be taken _inside_ the iothread lock.  */
+    /* Lock must be taken _inside_ the BQL.  */
     QemuMutex lock;
 } BlkMigState;
 
@@ -117,7 +117,7 @@ static void blk_mig_unlock(void)
     qemu_mutex_unlock(&block_mig_state.lock);
 }
 
-/* Must run outside of the iothread lock during the bulk phase,
+/* Must run outside of the BQL during the bulk phase,
  * or the VM will stall.
  */
 
@@ -327,7 +327,7 @@ static int mig_save_device_bulk(QEMUFile *f, BlkMigDevState *bmds)
     return (bmds->cur_sector >= total_sectors);
 }
 
-/* Called with iothread lock taken.  */
+/* Called with the BQL taken.  */
 
 static int set_dirty_tracking(void)
 {
@@ -354,7 +354,7 @@ fail:
     return ret;
 }
 
-/* Called with iothread lock taken.  */
+/* Called with the BQL taken.  */
 
 static void unset_dirty_tracking(void)
 {
@@ -505,7 +505,7 @@ static void blk_mig_reset_dirty_cursor(void)
     }
 }
 
-/* Called with iothread lock taken.  */
+/* Called with the BQL taken.  */
 
 static int mig_save_device_dirty(QEMUFile *f, BlkMigDevState *bmds,
                                  int is_async)
@@ -587,7 +587,7 @@ error:
     return ret;
 }
 
-/* Called with iothread lock taken.
+/* Called with the BQL taken.
  *
  * return value:
  * 0: too much data for max_downtime
@@ -649,7 +649,7 @@ static int flush_blks(QEMUFile *f)
     return ret;
 }
 
-/* Called with iothread lock taken.  */
+/* Called with the BQL taken.  */
 
 static int64_t get_remaining_dirty(void)
 {
@@ -667,7 +667,7 @@ static int64_t get_remaining_dirty(void)
 
 
 
-/* Called with iothread lock taken.  */
+/* Called with the BQL taken.  */
 static void block_migration_cleanup_bmds(void)
 {
     BlkMigDevState *bmds;
@@ -690,7 +690,7 @@ static void block_migration_cleanup_bmds(void)
     }
 }
 
-/* Called with iothread lock taken.  */
+/* Called with the BQL taken.  */
 static void block_migration_cleanup(void *opaque)
 {
     BlkMigBlock *blk;
@@ -767,7 +767,7 @@ static int block_save_iterate(QEMUFile *f, void *opaque)
             }
             ret = 0;
         } else {
-            /* Always called with iothread lock taken for
+            /* Always called with the BQL taken for
              * simplicity, block_save_complete also calls it.
              */
             bql_lock();
@@ -795,7 +795,7 @@ static int block_save_iterate(QEMUFile *f, void *opaque)
     return (delta_bytes > 0);
 }
 
-/* Called with iothread lock taken.  */
+/* Called with the BQL taken.  */
 
 static int block_save_complete(QEMUFile *f, void *opaque)
 {
diff --git a/migration/colo.c b/migration/colo.c
index 2a74efdd77..315e31fe32 100644
--- a/migration/colo.c
+++ b/migration/colo.c
@@ -945,7 +945,7 @@ int coroutine_fn colo_incoming_co(void)
     qemu_thread_join(&th);
     bql_lock();
 
-    /* We hold the global iothread lock, so it is safe here */
+    /* We hold the global BQL, so it is safe here */
     colo_release_ram_cache();
 
     return 0;
diff --git a/migration/migration.c b/migration/migration.c
index be173cd0f9..98c5c3e140 100644
--- a/migration/migration.c
+++ b/migration/migration.c
@@ -2551,7 +2551,7 @@ fail:
 
 /**
  * migration_maybe_pause: Pause if required to by
- * migrate_pause_before_switchover called with the iothread locked
+ * migrate_pause_before_switchover called with the BQL locked
  * Returns: 0 on success
  */
 static int migration_maybe_pause(MigrationState *s,
diff --git a/migration/ram.c b/migration/ram.c
index 08dc7e2909..890f31cf66 100644
--- a/migration/ram.c
+++ b/migration/ram.c
@@ -2395,7 +2395,7 @@ static void ram_save_cleanup(void *opaque)
 
     /* We don't use dirty log with background snapshots */
     if (!migrate_background_snapshot()) {
-        /* caller have hold iothread lock or is in a bh, so there is
+        /* caller have hold BQL or is in a bh, so there is
          * no writing race against the migration bitmap
          */
         if (global_dirty_tracking & GLOBAL_DIRTY_MIGRATION) {
@@ -3131,7 +3131,7 @@ out:
  *
  * Returns zero to indicate success or negative on error
  *
- * Called with iothread lock
+ * Called with the BQL
  *
  * @f: QEMUFile where to send the data
  * @opaque: RAMState pointer
diff --git a/system/physmem.c b/system/physmem.c
index 4937e67bad..cc68a79763 100644
--- a/system/physmem.c
+++ b/system/physmem.c
@@ -799,7 +799,7 @@ static RAMBlock *qemu_get_ram_block(ram_addr_t addr)
     abort();
 
 found:
-    /* It is safe to write mru_block outside the iothread lock.  This
+    /* It is safe to write mru_block outside the BQL.  This
      * is what happens:
      *
      *     mru_block = xxx
@@ -1597,7 +1597,7 @@ int qemu_ram_get_fd(RAMBlock *rb)
     return rb->fd;
 }
 
-/* Called with iothread lock held.  */
+/* Called with the BQL held.  */
 void qemu_ram_set_idstr(RAMBlock *new_block, const char *name, DeviceState *dev)
 {
     RAMBlock *block;
@@ -1625,7 +1625,7 @@ void qemu_ram_set_idstr(RAMBlock *new_block, const char *name, DeviceState *dev)
     }
 }
 
-/* Called with iothread lock held.  */
+/* Called with the BQL held.  */
 void qemu_ram_unset_idstr(RAMBlock *block)
 {
     /* FIXME: arch_init.c assumes that this is not called throughout
diff --git a/target/arm/helper.c b/target/arm/helper.c
index 7dfd0a1094..7889fd45d6 100644
--- a/target/arm/helper.c
+++ b/target/arm/helper.c
@@ -5844,7 +5844,7 @@ static void do_hcr_write(CPUARMState *env, uint64_t value, uint64_t valid_mask)
      * Updates to VI and VF require us to update the status of
      * virtual interrupts, which are the logical OR of these bits
      * and the state of the input lines from the GIC. (This requires
-     * that we have the iothread lock, which is done by marking the
+     * that we have the BQL, which is done by marking the
      * reginfo structs as ARM_CP_IO.)
      * Note that if a write to HCR pends a VIRQ or VFIQ it is never
      * possible for it to be taken immediately, because VIRQ and
diff --git a/ui/spice-core.c b/ui/spice-core.c
index b6ee495a8f..37b277fd09 100644
--- a/ui/spice-core.c
+++ b/ui/spice-core.c
@@ -217,7 +217,7 @@ static void channel_event(int event, SpiceChannelEventInfo *info)
      * not do that.  It isn't that easy to fix it in spice and even
      * when it is fixed we still should cover the already released
      * spice versions.  So detect that we've been called from another
-     * thread and grab the iothread lock if so before calling qemu
+     * thread and grab the BQL if so before calling qemu
      * functions.
      */
     bool need_lock = !qemu_thread_is_self(&me);
diff --git a/util/rcu.c b/util/rcu.c
index bb7f633b5c..fa32c942e4 100644
--- a/util/rcu.c
+++ b/util/rcu.c
@@ -409,7 +409,7 @@ static void rcu_init_complete(void)
 
     qemu_event_init(&rcu_call_ready_event, false);
 
-    /* The caller is assumed to have iothread lock, so the call_rcu thread
+    /* The caller is assumed to have BQL, so the call_rcu thread
      * must have been quiescent even after forking, just recreate it.
      */
     qemu_thread_create(&thread, "call_rcu", call_rcu_thread,
diff --git a/audio/coreaudio.m b/audio/coreaudio.m
index 9d2db9883c..ab632b9bbb 100644
--- a/audio/coreaudio.m
+++ b/audio/coreaudio.m
@@ -299,7 +299,7 @@ static ret_type glue(coreaudio_, name)args_decl             \
 #undef COREAUDIO_WRAPPER_FUNC
 
 /*
- * callback to feed audiooutput buffer. called without iothread lock.
+ * callback to feed audiooutput buffer. called without BQL.
  * allowed to lock "buf_mutex", but disallowed to have any other locks.
  */
 static OSStatus audioDeviceIOProc(
@@ -538,7 +538,7 @@ static void update_device_playback_state(coreaudioVoiceOut *core)
     }
 }
 
-/* called without iothread lock. */
+/* called without BQL. */
 static OSStatus handle_voice_change(
     AudioObjectID in_object_id,
     UInt32 in_number_addresses,
diff --git a/ui/cocoa.m b/ui/cocoa.m
index 5ebb535070..eb99064bee 100644
--- a/ui/cocoa.m
+++ b/ui/cocoa.m
@@ -113,7 +113,7 @@ static void cocoa_switch(DisplayChangeListener *dcl,
 static QemuClipboardInfo *cbinfo;
 static QemuEvent cbevent;
 
-// Utility functions to run specified code block with iothread lock held
+// Utility functions to run specified code block with the BQL held
 typedef void (^CodeBlock)(void);
 typedef bool (^BoolCodeBlock)(void);
 
@@ -548,7 +548,7 @@ - (void) setContentDimensions
 
 - (void) updateUIInfoLocked
 {
-    /* Must be called with the iothread lock, i.e. via updateUIInfo */
+    /* Must be called with the BQL, i.e. via updateUIInfo */
     NSSize frameSize;
     QemuUIInfo info;
 
@@ -2075,7 +2075,7 @@ static void cocoa_display_init(DisplayState *ds, DisplayOptions *opts)
      * Create the menu entries which depend on QEMU state (for consoles
      * and removable devices). These make calls back into QEMU functions,
      * which is OK because at this point we know that the second thread
-     * holds the iothread lock and is synchronously waiting for us to
+     * holds the BQL and is synchronously waiting for us to
      * finish.
      */
     add_console_menu_entries();
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Mon Jan 08 16:38:11 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 08 Jan 2024 16:38:11 +0000
Received: from list by lists.xenproject.org with outflank-mailman.663621.1033697 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMsdf-0005kj-02; Mon, 08 Jan 2024 16:38:11 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 663621.1033697; Mon, 08 Jan 2024 16:38:10 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMsde-0005kY-Sq; Mon, 08 Jan 2024 16:38:10 +0000
Received: by outflank-mailman (input) for mailman id 663621;
 Mon, 08 Jan 2024 16:38:09 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=EZ8K=IS=redhat.com=stefanha@srs-se1.protection.inumbo.net>)
 id 1rMsdd-0003cg-E7
 for xen-devel@lists.xenproject.org; Mon, 08 Jan 2024 16:38:09 +0000
Received: from us-smtp-delivery-124.mimecast.com
 (us-smtp-delivery-124.mimecast.com [170.10.129.124])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 4cbb4ca6-ae44-11ee-9b0f-b553b5be7939;
 Mon, 08 Jan 2024 17:38:07 +0100 (CET)
Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com
 [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS
 (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id
 us-mta-287-P6Ntz1u8OGWXTHWfH-iwTQ-1; Mon, 08 Jan 2024 11:37:59 -0500
Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.rdu2.redhat.com
 [10.11.54.6])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256)
 (No client certificate requested)
 by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 5097D1019C97;
 Mon,  8 Jan 2024 16:37:57 +0000 (UTC)
Received: from localhost (unknown [10.39.194.85])
 by smtp.corp.redhat.com (Postfix) with ESMTP id CF54C2166B33;
 Mon,  8 Jan 2024 16:37:55 +0000 (UTC)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 4cbb4ca6-ae44-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
	s=mimecast20190719; t=1704731886;
	h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
	 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=xM4VAbKYt5bBYtmHmlEyW+nGKsdcNTrQLabNpuLOZVM=;
	b=UlMqJ8WeYCIDS/BZ2714p7Oy2Eh8SFnmn5WYAqVUWXCtmL5lstDYY3usbmmSBHYy/0o8u/
	EsTIbtwm7hA+DIvk3tkACQisLYIYJ5KdXR9I02K5kIqm+GQVtqOwj2rfBx/Z2cLzwO4G6d
	G4KMCB6wf7GaiCDccKdZ9M35tEhNt+w=
X-MC-Unique: P6Ntz1u8OGWXTHWfH-iwTQ-1
From: Stefan Hajnoczi <stefanha@redhat.com>
To: qemu-devel@nongnu.org
Cc: qemu-s390x@nongnu.org,
	Aleksandar Rikalo <aleksandar.rikalo@syrmia.com>,
	qemu-block@nongnu.org,
	Alistair Francis <alistair.francis@wdc.com>,
	Max Filippov <jcmvbkbc@gmail.com>,
	kvm@vger.kernel.org,
	Daniel Henrique Barboza <danielhb413@gmail.com>,
	Jiaxun Yang <jiaxun.yang@flygoat.com>,
	qemu-arm@nongnu.org,
	Jean-Christophe Dubois <jcd@tribudubois.net>,
	Jiri Slaby <jslaby@suse.cz>,
	=?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= <marcandre.lureau@redhat.com>,
	=?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= <philmd@linaro.org>,
	Eric Blake <eblake@redhat.com>,
	Paul Durrant <paul@xen.org>,
	BALATON Zoltan <balaton@eik.bme.hu>,
	Kevin Wolf <kwolf@redhat.com>,
	Pavel Dovgalyuk <pavel.dovgaluk@ispras.ru>,
	=?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= <berrange@redhat.com>,
	Roman Bolshakov <rbolshakov@ddn.com>,
	Reinoud Zandijk <reinoud@netbsd.org>,
	Christian Borntraeger <borntraeger@linux.ibm.com>,
	Gerd Hoffmann <kraxel@redhat.com>,
	Thomas Huth <thuth@redhat.com>,
	Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>,
	xen-devel@lists.xenproject.org,
	Anthony Perard <anthony.perard@citrix.com>,
	Weiwei Li <liwei1518@gmail.com>,
	qemu-ppc@nongnu.org,
	Sunil Muthuswamy <sunilmut@microsoft.com>,
	Halil Pasic <pasic@linux.ibm.com>,
	Song Gao <gaosong@loongson.cn>,
	Aurelien Jarno <aurelien@aurel32.net>,
	=?UTF-8?q?Alex=20Benn=C3=A9e?= <alex.bennee@linaro.org>,
	=?UTF-8?q?C=C3=A9dric=20Le=20Goater?= <clg@kaod.org>,
	Andrey Smirnov <andrew.smirnov@gmail.com>,
	Marcel Apfelbaum <marcel.apfelbaum@gmail.com>,
	Eduardo Habkost <eduardo@habkost.net>,
	"Michael S. Tsirkin" <mst@redhat.com>,
	Marcelo Tosatti <mtosatti@redhat.com>,
	qemu-riscv@nongnu.org,
	Palmer Dabbelt <palmer@dabbelt.com>,
	Alexander Graf <agraf@csgraf.de>,
	Markus Armbruster <armbru@redhat.com>,
	John Snow <jsnow@redhat.com>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Peter Xu <peterx@redhat.com>,
	Stefan Weil <sw@weilnetz.de>,
	Harsh Prateek Bora <harshpb@linux.ibm.com>,
	Hailiang Zhang <zhanghailiang@xfusion.com>,
	Hyman Huang <yong.huang@smartx.com>,
	Michael Roth <michael.roth@amd.com>,
	Fam Zheng <fam@euphon.net>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Vladimir Sementsov-Ogievskiy <vsementsov@yandex-team.ru>,
	David Gibson <david@gibson.dropbear.id.au>,
	Artyom Tarasenko <atar4qemu@gmail.com>,
	Stefan Hajnoczi <stefanha@redhat.com>,
	Stafford Horne <shorne@gmail.com>,
	Liu Zhiwei <zhiwei_liu@linux.alibaba.com>,
	David Woodhouse <dwmw2@infradead.org>,
	Cameron Esfahani <dirty@apple.com>,
	Eric Farman <farman@linux.ibm.com>,
	Jason Wang <jasowang@redhat.com>,
	Nicholas Piggin <npiggin@gmail.com>,
	Ilya Leoshkevich <iii@linux.ibm.com>,
	Peter Maydell <peter.maydell@linaro.org>,
	Richard Henderson <richard.henderson@linaro.org>,
	Hanna Reitz <hreitz@redhat.com>,
	Huacai Chen <chenhuacai@kernel.org>,
	Jagannathan Raman <jag.raman@oracle.com>,
	Elena Ufimtseva <elena.ufimtseva@oracle.com>,
	Bin Meng <bin.meng@windriver.com>,
	Fabiano Rosas <farosas@suse.de>,
	Akihiko Odaki <akihiko.odaki@daynix.com>,
	David Hildenbrand <david@redhat.com>
Subject: [PULL 6/6] Rename "QEMU global mutex" to "BQL" in comments and docs
Date: Mon,  8 Jan 2024 11:37:35 -0500
Message-ID: <20240108163735.254732-7-stefanha@redhat.com>
In-Reply-To: <20240108163735.254732-1-stefanha@redhat.com>
References: <20240108163735.254732-1-stefanha@redhat.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Scanned-By: MIMEDefang 3.4.1 on 10.11.54.6

The term "QEMU global mutex" is identical to the more widely used Big
QEMU Lock ("BQL"). Update the code comments and documentation to use
"BQL" instead of "QEMU global mutex".

Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
Acked-by: Markus Armbruster <armbru@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Reviewed-by: Paul Durrant <paul@xen.org>
Reviewed-by: Akihiko Odaki <akihiko.odaki@daynix.com>
Reviewed-by: Cédric Le Goater <clg@kaod.org>
Reviewed-by: Harsh Prateek Bora <harshpb@linux.ibm.com>
Message-id: 20240102153529.486531-6-stefanha@redhat.com
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
---
 docs/devel/multi-thread-tcg.rst   |  7 +++----
 docs/devel/qapi-code-gen.rst      |  2 +-
 docs/devel/replay.rst             |  2 +-
 docs/devel/multiple-iothreads.txt | 14 +++++++-------
 include/block/blockjob.h          |  6 +++---
 include/io/task.h                 |  2 +-
 include/qemu/coroutine-core.h     |  2 +-
 include/qemu/coroutine.h          |  2 +-
 hw/block/dataplane/virtio-blk.c   |  8 ++++----
 hw/block/virtio-blk.c             |  2 +-
 hw/scsi/virtio-scsi-dataplane.c   |  6 +++---
 net/tap.c                         |  2 +-
 12 files changed, 27 insertions(+), 28 deletions(-)

diff --git a/docs/devel/multi-thread-tcg.rst b/docs/devel/multi-thread-tcg.rst
index c9541a7b20..7302c3bf53 100644
--- a/docs/devel/multi-thread-tcg.rst
+++ b/docs/devel/multi-thread-tcg.rst
@@ -226,10 +226,9 @@ instruction. This could be a future optimisation.
 Emulated hardware state
 -----------------------
 
-Currently thanks to KVM work any access to IO memory is automatically
-protected by the global iothread mutex, also known as the BQL (Big
-QEMU Lock). Any IO region that doesn't use global mutex is expected to
-do its own locking.
+Currently thanks to KVM work any access to IO memory is automatically protected
+by the BQL (Big QEMU Lock). Any IO region that doesn't use the BQL is expected
+to do its own locking.
 
 However IO memory isn't the only way emulated hardware state can be
 modified. Some architectures have model specific registers that
diff --git a/docs/devel/qapi-code-gen.rst b/docs/devel/qapi-code-gen.rst
index 7f78183cd4..ea8228518c 100644
--- a/docs/devel/qapi-code-gen.rst
+++ b/docs/devel/qapi-code-gen.rst
@@ -594,7 +594,7 @@ blocking the guest and other background operations.
 Coroutine safety can be hard to prove, similar to thread safety.  Common
 pitfalls are:
 
-- The global mutex isn't held across ``qemu_coroutine_yield()``, so
+- The BQL isn't held across ``qemu_coroutine_yield()``, so
   operations that used to assume that they execute atomically may have
   to be more careful to protect against changes in the global state.
 
diff --git a/docs/devel/replay.rst b/docs/devel/replay.rst
index 0244be8b9c..effd856f0c 100644
--- a/docs/devel/replay.rst
+++ b/docs/devel/replay.rst
@@ -184,7 +184,7 @@ modes.
 Reading and writing requests are created by CPU thread of QEMU. Later these
 requests proceed to block layer which creates "bottom halves". Bottom
 halves consist of callback and its parameters. They are processed when
-main loop locks the global mutex. These locks are not synchronized with
+main loop locks the BQL. These locks are not synchronized with
 replaying process because main loop also processes the events that do not
 affect the virtual machine state (like user interaction with monitor).
 
diff --git a/docs/devel/multiple-iothreads.txt b/docs/devel/multiple-iothreads.txt
index 4865196bde..de85767b12 100644
--- a/docs/devel/multiple-iothreads.txt
+++ b/docs/devel/multiple-iothreads.txt
@@ -5,7 +5,7 @@ the COPYING file in the top-level directory.
 
 
 This document explains the IOThread feature and how to write code that runs
-outside the QEMU global mutex.
+outside the BQL.
 
 The main loop and IOThreads
 ---------------------------
@@ -29,13 +29,13 @@ scalability bottleneck on hosts with many CPUs.  Work can be spread across
 several IOThreads instead of just one main loop.  When set up correctly this
 can improve I/O latency and reduce jitter seen by the guest.
 
-The main loop is also deeply associated with the QEMU global mutex, which is a
-scalability bottleneck in itself.  vCPU threads and the main loop use the QEMU
-global mutex to serialize execution of QEMU code.  This mutex is necessary
-because a lot of QEMU's code historically was not thread-safe.
+The main loop is also deeply associated with the BQL, which is a
+scalability bottleneck in itself.  vCPU threads and the main loop use the BQL
+to serialize execution of QEMU code.  This mutex is necessary because a lot of
+QEMU's code historically was not thread-safe.
 
 The fact that all I/O processing is done in a single main loop and that the
-QEMU global mutex is contended by all vCPU threads and the main loop explain
+BQL is contended by all vCPU threads and the main loop explain
 why it is desirable to place work into IOThreads.
 
 The experimental virtio-blk data-plane implementation has been benchmarked and
@@ -66,7 +66,7 @@ There are several old APIs that use the main loop AioContext:
 
 Since they implicitly work on the main loop they cannot be used in code that
 runs in an IOThread.  They might cause a crash or deadlock if called from an
-IOThread since the QEMU global mutex is not held.
+IOThread since the BQL is not held.
 
 Instead, use the AioContext functions directly (see include/block/aio.h):
  * aio_set_fd_handler() - monitor a file descriptor
diff --git a/include/block/blockjob.h b/include/block/blockjob.h
index e594c10d23..7061ab7201 100644
--- a/include/block/blockjob.h
+++ b/include/block/blockjob.h
@@ -54,7 +54,7 @@ typedef struct BlockJob {
 
     /**
      * Speed that was set with @block_job_set_speed.
-     * Always modified and read under QEMU global mutex (GLOBAL_STATE_CODE).
+     * Always modified and read under the BQL (GLOBAL_STATE_CODE).
      */
     int64_t speed;
 
@@ -66,7 +66,7 @@ typedef struct BlockJob {
 
     /**
      * Block other operations when block job is running.
-     * Always modified and read under QEMU global mutex (GLOBAL_STATE_CODE).
+     * Always modified and read under the BQL (GLOBAL_STATE_CODE).
      */
     Error *blocker;
 
@@ -89,7 +89,7 @@ typedef struct BlockJob {
 
     /**
      * BlockDriverStates that are involved in this block job.
-     * Always modified and read under QEMU global mutex (GLOBAL_STATE_CODE).
+     * Always modified and read under the BQL (GLOBAL_STATE_CODE).
      */
     GSList *nodes;
 } BlockJob;
diff --git a/include/io/task.h b/include/io/task.h
index dc7d32ebd0..0b5342ee84 100644
--- a/include/io/task.h
+++ b/include/io/task.h
@@ -149,7 +149,7 @@ typedef void (*QIOTaskWorker)(QIOTask *task,
  * lookups) to be easily run non-blocking. Reporting the
  * results in the main thread context means that the caller
  * typically does not need to be concerned about thread
- * safety wrt the QEMU global mutex.
+ * safety wrt the BQL.
  *
  * For example, the socket_listen() method will block the caller
  * while DNS lookups take place if given a name, instead of IP
diff --git a/include/qemu/coroutine-core.h b/include/qemu/coroutine-core.h
index 230bb56517..503bad6e0e 100644
--- a/include/qemu/coroutine-core.h
+++ b/include/qemu/coroutine-core.h
@@ -22,7 +22,7 @@
  * rather than callbacks, for operations that need to give up control while
  * waiting for events to complete.
  *
- * These functions are re-entrant and may be used outside the global mutex.
+ * These functions are re-entrant and may be used outside the BQL.
  *
  * Functions that execute in coroutine context cannot be called
  * directly from normal functions.  Use @coroutine_fn to mark such
diff --git a/include/qemu/coroutine.h b/include/qemu/coroutine.h
index a65be6697f..e6aff45301 100644
--- a/include/qemu/coroutine.h
+++ b/include/qemu/coroutine.h
@@ -26,7 +26,7 @@
  * rather than callbacks, for operations that need to give up control while
  * waiting for events to complete.
  *
- * These functions are re-entrant and may be used outside the global mutex.
+ * These functions are re-entrant and may be used outside the BQL.
  *
  * Functions that execute in coroutine context cannot be called
  * directly from normal functions.  Use @coroutine_fn to mark such
diff --git a/hw/block/dataplane/virtio-blk.c b/hw/block/dataplane/virtio-blk.c
index 97a302cf49..ba22732497 100644
--- a/hw/block/dataplane/virtio-blk.c
+++ b/hw/block/dataplane/virtio-blk.c
@@ -84,7 +84,7 @@ apply_vq_mapping(IOThreadVirtQueueMappingList *iothread_vq_mapping_list,
     }
 }
 
-/* Context: QEMU global mutex held */
+/* Context: BQL held */
 bool virtio_blk_data_plane_create(VirtIODevice *vdev, VirtIOBlkConf *conf,
                                   VirtIOBlockDataPlane **dataplane,
                                   Error **errp)
@@ -148,7 +148,7 @@ bool virtio_blk_data_plane_create(VirtIODevice *vdev, VirtIOBlkConf *conf,
     return true;
 }
 
-/* Context: QEMU global mutex held */
+/* Context: BQL held */
 void virtio_blk_data_plane_destroy(VirtIOBlockDataPlane *s)
 {
     VirtIOBlock *vblk;
@@ -179,7 +179,7 @@ void virtio_blk_data_plane_destroy(VirtIOBlockDataPlane *s)
     g_free(s);
 }
 
-/* Context: QEMU global mutex held */
+/* Context: BQL held */
 int virtio_blk_data_plane_start(VirtIODevice *vdev)
 {
     VirtIOBlock *vblk = VIRTIO_BLK(vdev);
@@ -310,7 +310,7 @@ static void virtio_blk_data_plane_stop_vq_bh(void *opaque)
     virtio_queue_host_notifier_read(host_notifier);
 }
 
-/* Context: QEMU global mutex held */
+/* Context: BQL held */
 void virtio_blk_data_plane_stop(VirtIODevice *vdev)
 {
     VirtIOBlock *vblk = VIRTIO_BLK(vdev);
diff --git a/hw/block/virtio-blk.c b/hw/block/virtio-blk.c
index 315b7b364c..b7a344ca97 100644
--- a/hw/block/virtio-blk.c
+++ b/hw/block/virtio-blk.c
@@ -1539,7 +1539,7 @@ static void virtio_blk_resize(void *opaque)
     VirtIODevice *vdev = VIRTIO_DEVICE(opaque);
 
     /*
-     * virtio_notify_config() needs to acquire the global mutex,
+     * virtio_notify_config() needs to acquire the BQL,
      * so it can't be called from an iothread. Instead, schedule
      * it to be run in the main context BH.
      */
diff --git a/hw/scsi/virtio-scsi-dataplane.c b/hw/scsi/virtio-scsi-dataplane.c
index 135e23fe54..2806a121b2 100644
--- a/hw/scsi/virtio-scsi-dataplane.c
+++ b/hw/scsi/virtio-scsi-dataplane.c
@@ -20,7 +20,7 @@
 #include "scsi/constants.h"
 #include "hw/virtio/virtio-bus.h"
 
-/* Context: QEMU global mutex held */
+/* Context: BQL held */
 void virtio_scsi_dataplane_setup(VirtIOSCSI *s, Error **errp)
 {
     VirtIOSCSICommon *vs = VIRTIO_SCSI_COMMON(s);
@@ -93,7 +93,7 @@ static void virtio_scsi_dataplane_stop_bh(void *opaque)
     }
 }
 
-/* Context: QEMU global mutex held */
+/* Context: BQL held */
 int virtio_scsi_dataplane_start(VirtIODevice *vdev)
 {
     int i;
@@ -185,7 +185,7 @@ fail_guest_notifiers:
     return -ENOSYS;
 }
 
-/* Context: QEMU global mutex held */
+/* Context: BQL held */
 void virtio_scsi_dataplane_stop(VirtIODevice *vdev)
 {
     BusState *qbus = qdev_get_parent_bus(DEVICE(vdev));
diff --git a/net/tap.c b/net/tap.c
index c23d0323c2..c698b70475 100644
--- a/net/tap.c
+++ b/net/tap.c
@@ -219,7 +219,7 @@ static void tap_send(void *opaque)
 
         /*
          * When the host keeps receiving more packets while tap_send() is
-         * running we can hog the QEMU global mutex.  Limit the number of
+         * running we can hog the BQL.  Limit the number of
          * packets that are processed per tap_send() callback to prevent
          * stalling the guest.
          */
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Mon Jan 08 16:40:51 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 08 Jan 2024 16:40:51 +0000
Received: from list by lists.xenproject.org with outflank-mailman.663635.1033707 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMsgE-00018x-GA; Mon, 08 Jan 2024 16:40:50 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 663635.1033707; Mon, 08 Jan 2024 16:40:50 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMsgE-00018q-Ce; Mon, 08 Jan 2024 16:40:50 +0000
Received: by outflank-mailman (input) for mailman id 663635;
 Mon, 08 Jan 2024 16:40:49 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=KH4C=IS=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rMsgD-00018i-S5
 for xen-devel@lists.xenproject.org; Mon, 08 Jan 2024 16:40:49 +0000
Received: from mail-lj1-x22a.google.com (mail-lj1-x22a.google.com
 [2a00:1450:4864:20::22a])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id ace12d98-ae44-11ee-9b0f-b553b5be7939;
 Mon, 08 Jan 2024 17:40:47 +0100 (CET)
Received: by mail-lj1-x22a.google.com with SMTP id
 38308e7fff4ca-2cd053d5683so22874731fa.2
 for <xen-devel@lists.xenproject.org>; Mon, 08 Jan 2024 08:40:47 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 z3-20020a02cea3000000b0046e13607c41sm54167jaq.1.2024.01.08.08.40.45
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 08 Jan 2024 08:40:46 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: ace12d98-ae44-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1704732047; x=1705336847; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=x7t3BxQOYKY6nG92p/jCI9MkeTzAq5t66aeT7ru3qPk=;
        b=V8+hiX0ajSIGdRbGIaBJf+r2aM35QdfqFuSiKjzN4pdYzpyuxq53sZDeHNd99634Wp
         TgWgnTVluM3BfcBmBUDhHg5vh/M89lovF9uJlmxZLH+uWEFNJKh/9nf4A29gSxJOcstQ
         8QxIuHAU/X2X33mzYeEW/d/M6Wo/q7mKNSMImecegv06/Sy1pwOcbLeXbxnNYMwgZZhL
         e4hH5LaEyQYEYOUx5ZP4pN0sIYvoh9wNE2Xfm2Mqmg+k+qvHO2exFP/He/S3/aEovrmK
         NY4sIIcfb5r5CLrwtkJReb/3MBoqXbxCUO2s8hpDKGj24CQiFBYlyoqM+7JuAnbeELhF
         tz6A==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704732047; x=1705336847;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=x7t3BxQOYKY6nG92p/jCI9MkeTzAq5t66aeT7ru3qPk=;
        b=vjgJLepTEBz8ceFJnYdtsL4Tf25PoRriRo7TR5FWwGS15vC8cVDn8T1v2VK5iJQC8l
         hHMoWdBi0PPU4SRjAL5a+KUqpc8b0L3YwGPrZSb6T58REtGzxClHY5wpnYKt9i3zuZC2
         uAZOjhBFkksYOqRNroLRyMxLlUwmBUwcWY7+XnMP8DGx7BxZgEj3NgmresLfl58q/SHH
         WluAul2E2MC2aStaVE7PmBajwzajDQ20ci4hd0tPRMOSKpEm3JOeSHgNNZXUM+fvOk4z
         QHzLAZhEtQel6u/BiBq71W6Ps3wloBGrR2kbOaPvnjGMxgYU1WclMEoMV4NTYqwep5Je
         c7Vg==
X-Gm-Message-State: AOJu0Yyf/ucyWnvlGOki2vWHPrlpCXk5d0f3MWTlpiPkQgkKNka5TIqB
	G5vix449rAC5H/2GW+JU60+8EIm/afY6
X-Google-Smtp-Source: AGHT+IGksUYC2a1ufB8Ed0iHXTu7y/6n4D7GlqqCSt046O301fstg3oIplfAeG/MEFF0Rnks/GVJLQ==
X-Received: by 2002:a05:651c:1044:b0:2cd:2c8d:b48d with SMTP id x4-20020a05651c104400b002cd2c8db48dmr1729427ljm.63.1704732047232;
        Mon, 08 Jan 2024 08:40:47 -0800 (PST)
Message-ID: <08b7535e-da40-4578-b865-9b350ace379c@suse.com>
Date: Mon, 8 Jan 2024 17:40:43 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v5 04/13] xen: extend domctl interface for cache coloring
Content-Language: en-US
To: Carlo Nonato <carlo.nonato@minervasys.tech>
Cc: xen-devel@lists.xenproject.org,
 Stefano Stabellini <sstabellini@kernel.org>,
 Bertrand Marquis <bertrand.marquis@arm.com>,
 Michal Orzel <michal.orzel@amd.com>,
 Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
 Andrew Cooper <andrew.cooper3@citrix.com>,
 George Dunlap <george.dunlap@citrix.com>, Wei Liu <wl@xen.org>,
 Marco Solieri <marco.solieri@minervasys.tech>, Julien Grall <julien@xen.org>
References: <20240102095138.17933-1-carlo.nonato@minervasys.tech>
 <20240102095138.17933-5-carlo.nonato@minervasys.tech>
 <99295edf-6c9c-4d06-ba20-86db67100561@xen.org>
 <CAG+AhRWd9E5sQPY-sxN+WGTSWtvRXGN2FnZC2Vy6LPyynKGLcQ@mail.gmail.com>
 <4675a541-b9dc-476a-a6ff-0247a4403292@xen.org>
 <CAG+AhRX6Y2U6A1v=27KgUeWip115R1o+csEWcyCCooxE2Tac6w@mail.gmail.com>
 <33061994-0b49-4e4e-8698-d6901b9130dc@xen.org>
 <CAG+AhRXPt_e4+OUxbRLhf6W0reH1nmO7cC9-XoFKe_G8BVxt7w@mail.gmail.com>
 <e7029592-57e6-4c2a-ab11-f843047ce7f2@xen.org>
 <CAG+AhRV8B4dcoVHXbP2KW5xsB8BQRt4NpPuXsmjc1X149GZRRw@mail.gmail.com>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <CAG+AhRV8B4dcoVHXbP2KW5xsB8BQRt4NpPuXsmjc1X149GZRRw@mail.gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 08.01.2024 17:31, Carlo Nonato wrote:
> On Mon, Jan 8, 2024 at 4:32 PM Julien Grall <julien@xen.org> wrote:
>> On 08/01/2024 15:18, Carlo Nonato wrote:
>>>> No. I am saying that that we should not be able to allow changing the
>>>> colors after the memory has been allocated. To give an example, your
>>>> current code would allow:
>>>>
>>>>     1) Setup the P2M pools or allocate RAM
>>>>     2) Set the color
>>>>
>>>> This would render the coloring configuration moot.
>>>>
>>>> Whether we want to allow changing the coloring before hand is a
>>>> different question and as I wrote earlier on, I don't mind if you want
>>>> to forbid that.
>>>
>>> At the moment I'm relying on the toolstack in the sense that I know that it
>>> will set colors right after domain creation and before memory allocation.
>>> Calling alloc_domheap_pages() without a coloring configuration makes Xen
>>> crash, so it's mandatory to have the configuration done before any allocation.
>>> I know that we shouldn't rely on the toolstack this much, but I didn't
>>> find a better way. Given this assumption, looking for an already existing
>>> color configuration of a domain is sufficient to avoid what you are saying.
>>>
>>> Is it possible to enforce such a constraint with domctl? > I mean to be sure that this domctl will be called at a precise time.
>>
>> Yes. You can...
>>
>>>
>>> Thanks.
>>>
>>>>> I don't know what to check that.
>>>>
>>>> You can check the size of the P2M pool (d->arch.paging.p2m_total_pages)
>>>> is still 0. I think for RAM, you can check d->tot_pages == 0.
>>
>> ... reject the call if either of the two fields are not zero.
> 
> What I'm saying is that Xen would crash before even reaching this point if no
> colors were provided. Let's say that the toolstack or whatever hypercall user
> isn't calling this domctl at all (or not at the right time), then the domain
> colored allocator would always return null pages since there are no colors.
> We would have a crash and your if (or mine) would be useless.

Why is it that you can't simply allocated arbitrary memory if coloring
information wasn't set up front? Aiui that'll be required anyway, as
there shouldn't be a restriction that all domains have to use coloring.

Jan


From xen-devel-bounces@lists.xenproject.org Mon Jan 08 16:46:01 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 08 Jan 2024 16:46:01 +0000
Received: from list by lists.xenproject.org with outflank-mailman.663647.1033717 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMsl9-0001lM-3v; Mon, 08 Jan 2024 16:45:55 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 663647.1033717; Mon, 08 Jan 2024 16:45:55 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMsl8-0001lF-W9; Mon, 08 Jan 2024 16:45:54 +0000
Received: by outflank-mailman (input) for mailman id 663647;
 Mon, 08 Jan 2024 16:45:54 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rMsl8-0001l5-9Q; Mon, 08 Jan 2024 16:45:54 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rMsl8-000167-7z; Mon, 08 Jan 2024 16:45:54 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rMsl7-0007Id-PJ; Mon, 08 Jan 2024 16:45:53 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rMsl7-0003a4-Oo; Mon, 08 Jan 2024 16:45:53 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=i2ITzA6GQOV2pZkM3IRgTyveOxm0SdEXEAK59qgI5O0=; b=LDtVkeukFta4lp/1K0I4GTxPfr
	VUjwl50aZAvRCe07k+7AkAG8wXbkQqiVXXRCcF7JqYKbEiIt63E5GHSUGmtbdryTnm8XNUQeqZiu7
	exiBIM8mZH5tFqUKnvV4WU5WxJ/p/kjYhUcnS4srrSg4ZWl/mwYZEs5f3ucHzlnemmkQ=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184279-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [xtf test] 184279: all pass - PUSHED
X-Osstest-Versions-This:
    xtf=2eed9f51c67a9e5d29ffd4ffeee50710489aad23
X-Osstest-Versions-That:
    xtf=a5bd8d9e5d5c7b729d6d6122900d28f7a00aa6c0
From: osstest service owner <osstest-admin@xenproject.org>
Date: Mon, 08 Jan 2024 16:45:53 +0000

flight 184279 xtf real [real]
http://logs.test-lab.xenproject.org/osstest/logs/184279/

Perfect :-)
All tests in this flight passed as required
version targeted for testing:
 xtf                  2eed9f51c67a9e5d29ffd4ffeee50710489aad23
baseline version:
 xtf                  a5bd8d9e5d5c7b729d6d6122900d28f7a00aa6c0

Last test of basis   184277  2024-01-08 11:42:46 Z    0 days
Testing same since   184279  2024-01-08 15:13:02 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Andrew Cooper <andrew.cooper3@citrix.com>

jobs:
 build-amd64-xtf                                              pass    
 build-amd64                                                  pass    
 build-amd64-pvops                                            pass    
 test-xtf-amd64-amd64-1                                       pass    
 test-xtf-amd64-amd64-2                                       pass    
 test-xtf-amd64-amd64-3                                       pass    
 test-xtf-amd64-amd64-4                                       pass    
 test-xtf-amd64-amd64-5                                       pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Pushing revision :

To xenbits.xen.org:/home/xen/git/xtf.git
   a5bd8d9..2eed9f5  2eed9f51c67a9e5d29ffd4ffeee50710489aad23 -> xen-tested-master


From xen-devel-bounces@lists.xenproject.org Mon Jan 08 16:50:03 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 08 Jan 2024 16:50:03 +0000
Received: from list by lists.xenproject.org with outflank-mailman.663660.1033727 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMsp6-0004C9-OJ; Mon, 08 Jan 2024 16:50:00 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 663660.1033727; Mon, 08 Jan 2024 16:50:00 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMsp6-0004C2-KJ; Mon, 08 Jan 2024 16:50:00 +0000
Received: by outflank-mailman (input) for mailman id 663660;
 Mon, 08 Jan 2024 16:49:59 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>) id 1rMsp5-0004Bu-AP
 for xen-devel@lists.xenproject.org; Mon, 08 Jan 2024 16:49:59 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rMsp4-0001Bg-PA; Mon, 08 Jan 2024 16:49:58 +0000
Received: from gw1.octic.net ([88.97.20.152] helo=[10.0.1.240])
 by xenbits.xenproject.org with esmtpsa
 (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rMsp4-0004zI-HD; Mon, 08 Jan 2024 16:49:58 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
	s=20200302mail; h=Content-Transfer-Encoding:Content-Type:In-Reply-To:From:
	References:Cc:To:Subject:MIME-Version:Date:Message-ID;
	bh=hOuTYi7gsAh3MunWe4T6PZaqyoEg+Vd7eYli0lTEJ1Y=; b=tKD4BTzj7G/Dgr/inCwUIBas5O
	VLadIVhtS3Eh6xX/QRqvyPfXepPY3yWyo8n7VkuW360XJm7aDOV3ta9n9do3DtVFmPQMKwOr/s4zR
	nRzJ0Xa2D5b5vI/eNSXTlrGSxxyREABfIkr+qYRDEB27rBtVzO3tdRyIX/keJ40PVttM=;
Message-ID: <b0283817-b8d4-4326-af5b-e2595af8d868@xen.org>
Date: Mon, 8 Jan 2024 16:49:56 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v5 04/13] xen: extend domctl interface for cache coloring
Content-Language: en-GB
To: Carlo Nonato <carlo.nonato@minervasys.tech>
Cc: xen-devel@lists.xenproject.org,
 Stefano Stabellini <sstabellini@kernel.org>,
 Bertrand Marquis <bertrand.marquis@arm.com>,
 Michal Orzel <michal.orzel@amd.com>,
 Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
 Andrew Cooper <andrew.cooper3@citrix.com>,
 George Dunlap <george.dunlap@citrix.com>, Jan Beulich <jbeulich@suse.com>,
 Wei Liu <wl@xen.org>, Marco Solieri <marco.solieri@minervasys.tech>
References: <20240102095138.17933-1-carlo.nonato@minervasys.tech>
 <20240102095138.17933-5-carlo.nonato@minervasys.tech>
 <99295edf-6c9c-4d06-ba20-86db67100561@xen.org>
 <CAG+AhRWd9E5sQPY-sxN+WGTSWtvRXGN2FnZC2Vy6LPyynKGLcQ@mail.gmail.com>
 <4675a541-b9dc-476a-a6ff-0247a4403292@xen.org>
 <CAG+AhRX6Y2U6A1v=27KgUeWip115R1o+csEWcyCCooxE2Tac6w@mail.gmail.com>
 <33061994-0b49-4e4e-8698-d6901b9130dc@xen.org>
 <CAG+AhRXPt_e4+OUxbRLhf6W0reH1nmO7cC9-XoFKe_G8BVxt7w@mail.gmail.com>
 <e7029592-57e6-4c2a-ab11-f843047ce7f2@xen.org>
 <CAG+AhRV8B4dcoVHXbP2KW5xsB8BQRt4NpPuXsmjc1X149GZRRw@mail.gmail.com>
From: Julien Grall <julien@xen.org>
In-Reply-To: <CAG+AhRV8B4dcoVHXbP2KW5xsB8BQRt4NpPuXsmjc1X149GZRRw@mail.gmail.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit

Hi Carlo,

On 08/01/2024 16:31, Carlo Nonato wrote:
> On Mon, Jan 8, 2024 at 4:32 PM Julien Grall <julien@xen.org> wrote:
>>
>> Hi,
>>
>> On 08/01/2024 15:18, Carlo Nonato wrote:
>>>> No. I am saying that that we should not be able to allow changing the
>>>> colors after the memory has been allocated. To give an example, your
>>>> current code would allow:
>>>>
>>>>      1) Setup the P2M pools or allocate RAM
>>>>      2) Set the color
>>>>
>>>> This would render the coloring configuration moot.
>>>>
>>>> Whether we want to allow changing the coloring before hand is a
>>>> different question and as I wrote earlier on, I don't mind if you want
>>>> to forbid that.
>>>
>>> At the moment I'm relying on the toolstack in the sense that I know that it
>>> will set colors right after domain creation and before memory allocation.
>>> Calling alloc_domheap_pages() without a coloring configuration makes Xen
>>> crash, so it's mandatory to have the configuration done before any allocation.
>>> I know that we shouldn't rely on the toolstack this much, but I didn't
>>> find a better way. Given this assumption, looking for an already existing
>>> color configuration of a domain is sufficient to avoid what you are saying.
>>>
>>> Is it possible to enforce such a constraint with domctl? > I mean to be sure that this domctl will be called at a precise time.
>>
>> Yes. You can...
>>
>>>
>>> Thanks.
>>>
>>>>> I don't know what to check that.
>>>>
>>>> You can check the size of the P2M pool (d->arch.paging.p2m_total_pages)
>>>> is still 0. I think for RAM, you can check d->tot_pages == 0.
>>
>> ... reject the call if either of the two fields are not zero.
> 
> What I'm saying is that Xen would crash before even reaching this point if no
> colors were provided. Let's say that the toolstack or whatever hypercall user
> isn't calling this domctl at all (or not at the right time), then the domain
> colored allocator would always return null pages since there are no colors.
> We would have a crash and your if (or mine) would be useless.

Really? I can believe that NULL may be returned but a crash... If that's 
the case, then this should be fixed.

> 
> Let's say that now the domctl is called at the right time (no p2m,
> no tot_pages, no colors) then we can set the colors and everything works.
>  From this point other calls to this domctl would be skipped because of your
> if which is equivalent to mine (checking for colors existence).

So I misunderstood the implementation of is_domain_llc_colored(). I 
would have thought it was based on whether the domain has colors. But 
instead, it is based on whether coloring is enabled globally.

So I agree that the checks are not necessary today. But if 
is_domain_llc_colored() is changed, then this may not be correct anymore.

So I think there are some clarifications required. If the 'd' will never 
matter, then probably is_domain_llc_colored() should be removed. If not, 
then we want to add the check in the domctl (or at minimum document it).

> 
> Also bringing in checks on p2m would require arch specific code which I was
> trying to avoid.

Fair enough. But the first step is to make the sure the code is correct 
and Xen doesn't crash. We can then discuss about avoiding arch specific 
code.

BTW, all your LLC code is implemented in arch/arm. So if it is really 
intended to contain zero arch specific code, then shouldn't it be 
implemented in common/?

Cheers,

-- 
Julien Grall


From xen-devel-bounces@lists.xenproject.org Mon Jan 08 16:51:18 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 08 Jan 2024 16:51:18 +0000
Received: from list by lists.xenproject.org with outflank-mailman.663663.1033737 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMsqI-00063a-1E; Mon, 08 Jan 2024 16:51:14 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 663663.1033737; Mon, 08 Jan 2024 16:51:14 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMsqH-00063T-Un; Mon, 08 Jan 2024 16:51:13 +0000
Received: by outflank-mailman (input) for mailman id 663663;
 Mon, 08 Jan 2024 16:51:13 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=pvth=IS=minervasys.tech=carlo.nonato@srs-se1.protection.inumbo.net>)
 id 1rMsqH-00063N-0D
 for xen-devel@lists.xenproject.org; Mon, 08 Jan 2024 16:51:13 +0000
Received: from mail-ej1-x636.google.com (mail-ej1-x636.google.com
 [2a00:1450:4864:20::636])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 20509442-ae46-11ee-9b0f-b553b5be7939;
 Mon, 08 Jan 2024 17:51:11 +0100 (CET)
Received: by mail-ej1-x636.google.com with SMTP id
 a640c23a62f3a-a28b2e1a13fso205267466b.3
 for <xen-devel@lists.xenproject.org>; Mon, 08 Jan 2024 08:51:10 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 20509442-ae46-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=minervasys-tech.20230601.gappssmtp.com; s=20230601; t=1704732670; x=1705337470; darn=lists.xenproject.org;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:from:to:cc:subject:date
         :message-id:reply-to;
        bh=6WaHnU3/ZudBvG3cVJfM9gLdVXX0MnWBGS/ZUJqrzKs=;
        b=He08l45RLPT8AlkW9QBW8+KfbVbWS9JM8APCvT3Br8Hzewht1uHjlUaswgEbs7GMYy
         yhtxprsfY3bs/icMC6WH37CotIysEGsLlaYGJeXFMl6+/V6wLiuETfPnN1GZFq+MWWk4
         rDWbGgWCQVBk6ut8o5dS1ikFtZbNsWx9mEyHa8viOi11vw0Ak1Ehv1iVFK0zoXDRCnXS
         etQQSRwh4t3rWN6P1M6vGLCYb1k3QRRf5ff/mQ8irhdXJlCm/R98frq+lusil+duoUsL
         2+RbgiKJai/KVhb9LtNh01ZjbYahmKR2dsfMydAxS+RVAYiWU/DNLmXVexHmSY5Tef+b
         Bgrg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704732670; x=1705337470;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to;
        bh=6WaHnU3/ZudBvG3cVJfM9gLdVXX0MnWBGS/ZUJqrzKs=;
        b=LPxMFF4f/r5Sbr40+RVI43nMOWhLvBirJqh3oFzxlMARXM6abVGuv4DzeEX5l1Ve3r
         EeQkE9Ckec1puH2ggIpQtJEpKBSN8k5XleLp0dg0DbagiUMjZR9mgRuauIHHntBNZTOF
         S3vbiPEWXm+p2yOOPfaorQ8IUDkZaGbxY81SKiFVD/fIvB6qxBn+h414s6J76UJ68pXR
         Z1dRldvQQ7iINNj93tqS647CpS7bEYJsCmWkzm9Dhhp3LiWXBVU8fDr5fmu0bcAQpHpv
         4qg01SSozYtP3XMhpjLZeKYGKCUf1trdhcvVeeTwvT1SjvpJ93Moy5mFsL/pP7n/vRDL
         OIXg==
X-Gm-Message-State: AOJu0YwyulQ83Y1cUmpNTPgNf0J4PyJZwu3ngsxptrdI0SWuxQEEWQ/N
	YMua+77qxkMAlauAR0Cfyx37xC8ztJ0kWM/NKI3UqH9FbIAGfg==
X-Google-Smtp-Source: AGHT+IGVonQ2SZxHRKSz9clZ7lQwz+S8650cxdvcq3UgwZVKJM4Pr+DRA9Hc2CUaKPhFR+T78uEKw4CL6IB798+Ll88=
X-Received: by 2002:a17:907:928c:b0:a28:f5bf:ea68 with SMTP id
 bw12-20020a170907928c00b00a28f5bfea68mr1818583ejc.58.1704732670424; Mon, 08
 Jan 2024 08:51:10 -0800 (PST)
MIME-Version: 1.0
References: <20240102095138.17933-1-carlo.nonato@minervasys.tech>
 <20240102095138.17933-5-carlo.nonato@minervasys.tech> <99295edf-6c9c-4d06-ba20-86db67100561@xen.org>
 <CAG+AhRWd9E5sQPY-sxN+WGTSWtvRXGN2FnZC2Vy6LPyynKGLcQ@mail.gmail.com>
 <4675a541-b9dc-476a-a6ff-0247a4403292@xen.org> <CAG+AhRX6Y2U6A1v=27KgUeWip115R1o+csEWcyCCooxE2Tac6w@mail.gmail.com>
 <33061994-0b49-4e4e-8698-d6901b9130dc@xen.org> <CAG+AhRXPt_e4+OUxbRLhf6W0reH1nmO7cC9-XoFKe_G8BVxt7w@mail.gmail.com>
 <e7029592-57e6-4c2a-ab11-f843047ce7f2@xen.org> <CAG+AhRV8B4dcoVHXbP2KW5xsB8BQRt4NpPuXsmjc1X149GZRRw@mail.gmail.com>
 <08b7535e-da40-4578-b865-9b350ace379c@suse.com>
In-Reply-To: <08b7535e-da40-4578-b865-9b350ace379c@suse.com>
From: Carlo Nonato <carlo.nonato@minervasys.tech>
Date: Mon, 8 Jan 2024 17:50:59 +0100
Message-ID: <CAG+AhRXAY1TX-z2Aw0F1oEOKY=pjU9dV+C+hu4aPjF8H2Uj=Ng@mail.gmail.com>
Subject: Re: [PATCH v5 04/13] xen: extend domctl interface for cache coloring
To: Jan Beulich <jbeulich@suse.com>
Cc: xen-devel@lists.xenproject.org, 
	Stefano Stabellini <sstabellini@kernel.org>, Bertrand Marquis <bertrand.marquis@arm.com>, 
	Michal Orzel <michal.orzel@amd.com>, Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>, 
	Andrew Cooper <andrew.cooper3@citrix.com>, George Dunlap <george.dunlap@citrix.com>, 
	Wei Liu <wl@xen.org>, Marco Solieri <marco.solieri@minervasys.tech>, 
	Julien Grall <julien@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

Hi Jan,

On Mon, Jan 8, 2024 at 5:40=E2=80=AFPM Jan Beulich <jbeulich@suse.com> wrot=
e:
>
> On 08.01.2024 17:31, Carlo Nonato wrote:
> > On Mon, Jan 8, 2024 at 4:32=E2=80=AFPM Julien Grall <julien@xen.org> wr=
ote:
> >> On 08/01/2024 15:18, Carlo Nonato wrote:
> >>>> No. I am saying that that we should not be able to allow changing th=
e
> >>>> colors after the memory has been allocated. To give an example, your
> >>>> current code would allow:
> >>>>
> >>>>     1) Setup the P2M pools or allocate RAM
> >>>>     2) Set the color
> >>>>
> >>>> This would render the coloring configuration moot.
> >>>>
> >>>> Whether we want to allow changing the coloring before hand is a
> >>>> different question and as I wrote earlier on, I don't mind if you wa=
nt
> >>>> to forbid that.
> >>>
> >>> At the moment I'm relying on the toolstack in the sense that I know t=
hat it
> >>> will set colors right after domain creation and before memory allocat=
ion.
> >>> Calling alloc_domheap_pages() without a coloring configuration makes =
Xen
> >>> crash, so it's mandatory to have the configuration done before any al=
location.
> >>> I know that we shouldn't rely on the toolstack this much, but I didn'=
t
> >>> find a better way. Given this assumption, looking for an already exis=
ting
> >>> color configuration of a domain is sufficient to avoid what you are s=
aying.
> >>>
> >>> Is it possible to enforce such a constraint with domctl? > I mean to =
be sure that this domctl will be called at a precise time.
> >>
> >> Yes. You can...
> >>
> >>>
> >>> Thanks.
> >>>
> >>>>> I don't know what to check that.
> >>>>
> >>>> You can check the size of the P2M pool (d->arch.paging.p2m_total_pag=
es)
> >>>> is still 0. I think for RAM, you can check d->tot_pages =3D=3D 0.
> >>
> >> ... reject the call if either of the two fields are not zero.
> >
> > What I'm saying is that Xen would crash before even reaching this point=
 if no
> > colors were provided. Let's say that the toolstack or whatever hypercal=
l user
> > isn't calling this domctl at all (or not at the right time), then the d=
omain
> > colored allocator would always return null pages since there are no col=
ors.
> > We would have a crash and your if (or mine) would be useless.
>
> Why is it that you can't simply allocated arbitrary memory if coloring
> information wasn't set up front? Aiui that'll be required anyway, as
> there shouldn't be a restriction that all domains have to use coloring.

If coloring is enabled all domains are colored. It's one of our first
assumptions. We haven't developed something that works hybridly and support=
ing
that would require some rework.

> Jan


From xen-devel-bounces@lists.xenproject.org Mon Jan 08 16:53:52 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 08 Jan 2024 16:53:52 +0000
Received: from list by lists.xenproject.org with outflank-mailman.663666.1033746 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMssp-0006eQ-DJ; Mon, 08 Jan 2024 16:53:51 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 663666.1033746; Mon, 08 Jan 2024 16:53:51 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMssp-0006eH-AY; Mon, 08 Jan 2024 16:53:51 +0000
Received: by outflank-mailman (input) for mailman id 663666;
 Mon, 08 Jan 2024 16:53:49 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=KH4C=IS=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rMssn-0006eB-Rd
 for xen-devel@lists.xenproject.org; Mon, 08 Jan 2024 16:53:49 +0000
Received: from mail-lj1-x22f.google.com (mail-lj1-x22f.google.com
 [2a00:1450:4864:20::22f])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 7d89c69a-ae46-11ee-9b0f-b553b5be7939;
 Mon, 08 Jan 2024 17:53:47 +0100 (CET)
Received: by mail-lj1-x22f.google.com with SMTP id
 38308e7fff4ca-2cd0f4797aaso21323471fa.0
 for <xen-devel@lists.xenproject.org>; Mon, 08 Jan 2024 08:53:47 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 s14-20020a92c5ce000000b0036002c8127asm52881ilt.5.2024.01.08.08.53.45
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 08 Jan 2024 08:53:46 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 7d89c69a-ae46-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1704732827; x=1705337627; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=dX9HEPcwcljxT6hAJkXfpEA1cMZtqolfZ7RILMSrI94=;
        b=gucXw5oDzDje4txOa+kX7Qd17DYdvBCAz/CFTDuhO2BRyuyQ54mSwwyRfqjus5HUxm
         IYL/CUYQtY6G6/uPfF1OwYGaRYE3dYDzZNkK5Peo/NMGikl6CjNPuXTQI/eFg0mnw1Oo
         AWngdCgHglUk2t2IICzwfERea4fHFFa9Rw0qIoASE9bFEYAcNLU+urAg2v+oRyzNH4xI
         Aglf4MCueWdeiCRloelh/eqv+ZtRx/i7wDt5TL13JiKE7/QDpI/L0TXb6bh20xQ/FskI
         iFfI0i9kz+Mtr4pPoLm2v43FSfgfqhWdbpgsn8ZVZOL2+jlNWVCgxWdtLGAm1usyDiiN
         Cgmw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704732827; x=1705337627;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=dX9HEPcwcljxT6hAJkXfpEA1cMZtqolfZ7RILMSrI94=;
        b=M1C+4bKHNKVFuCeS8Mo5sh+IdpB+t2gDJBl537U3eoWjAb0KAaQThbpb7PvPHit71Q
         lQ1fOHg4zbKjmcuSHTmPDSzma8mdMnWGi3WbGH9MLoiZldneKXm4/xjf3qHaulZwWIwM
         ert9Ig+xuuIbCq7RU60dWHAyYlSsfP4yMmZRkVdDOaQ75VYX7fdZZ6+WOZwTIzXKbVHF
         ypoKjI/r/sWBfD4usfGgPVozA6CpPbdycA4d46OgEs3hjVONT+qcCQuaOlyRQPQfCkQe
         Zup/ocggoTc0d4N9idLUp/uFBNslXFH2DZ9YWMZQLTnGU19h2x2L+v+VqaWjjJoQ04DF
         HF6Q==
X-Gm-Message-State: AOJu0YyUYb8pkNobDhCiUO2QL1QZzfd0OCKpKJhDj6KXux8sh7V344S2
	VmsYwDl41sMihq6dltAxcSqv9hu6LVHt
X-Google-Smtp-Source: AGHT+IH9IbXHoOemNRnKU+I6aiiTfRmpPlFYcTUCNzLbeMeR3hvPEqLktJoUwpr/0eeyrhP8dMGUHw==
X-Received: by 2002:a2e:a78e:0:b0:2cc:eeea:9e89 with SMTP id c14-20020a2ea78e000000b002cceeea9e89mr2046484ljf.7.1704732826830;
        Mon, 08 Jan 2024 08:53:46 -0800 (PST)
Message-ID: <feb5542a-081a-4677-b569-5d4218eb794d@suse.com>
Date: Mon, 8 Jan 2024 17:53:43 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v5 01/13] xen/common: add cache coloring common code
Content-Language: en-US
To: Carlo Nonato <carlo.nonato@minervasys.tech>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 George Dunlap <george.dunlap@citrix.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>,
 Marco Solieri <marco.solieri@minervasys.tech>, xen-devel@lists.xenproject.org
References: <20240102095138.17933-1-carlo.nonato@minervasys.tech>
 <20240102095138.17933-2-carlo.nonato@minervasys.tech>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <20240102095138.17933-2-carlo.nonato@minervasys.tech>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 02.01.2024 10:51, Carlo Nonato wrote:
> This commit adds the Last Level Cache (LLC) coloring common header, Kconfig
> options and functions. Since this is an arch specific feature, actual
> implementation is postponed to later patches and Kconfig options are placed
> under xen/arch.

As a general remark / nit: "This commit", "this patch", or alike aren't
well suited for descriptions.

> --- a/xen/arch/Kconfig
> +++ b/xen/arch/Kconfig
> @@ -31,3 +31,19 @@ config NR_NUMA_NODES
>  	  associated with multiple-nodes management. It is the upper bound of
>  	  the number of NUMA nodes that the scheduler, memory allocation and
>  	  other NUMA-aware components can handle.
> +
> +config LLC_COLORING
> +	bool "Last Level Cache (LLC) coloring" if EXPERT
> +	depends on HAS_LLC_COLORING
> +
> +config NR_LLC_COLORS
> +	int "Maximum number of LLC colors"
> +	default 128

What if I set to value to 0? Or to an unreasonably large one? You don't
bound the value range at all.

> --- a/xen/common/domain.c
> +++ b/xen/common/domain.c
> @@ -7,6 +7,7 @@
>  #include <xen/compat.h>
>  #include <xen/init.h>
>  #include <xen/lib.h>
> +#include <xen/llc-coloring.h>
>  #include <xen/ctype.h>
>  #include <xen/err.h>
>  #include <xen/param.h>
> @@ -1144,6 +1145,9 @@ static void cf_check complete_domain_destroy(struct rcu_head *head)
>      struct vcpu *v;
>      int i;
>  
> +    if ( is_domain_llc_colored(d) )
> +        domain_llc_coloring_free(d);

Would be nice if the freeing function could be called unconditionally,
being a no-op for non-colored domains.

Further - is it really necessary to do this freeing this late?

> --- a/xen/common/keyhandler.c
> +++ b/xen/common/keyhandler.c
> @@ -6,6 +6,7 @@
>  #include <xen/debugger.h>
>  #include <xen/delay.h>
>  #include <xen/keyhandler.h>
> +#include <xen/llc-coloring.h>
>  #include <xen/param.h>
>  #include <xen/shutdown.h>
>  #include <xen/event.h>
> @@ -307,6 +308,9 @@ static void cf_check dump_domains(unsigned char key)
>  
>          arch_dump_domain_info(d);
>  
> +        if ( is_domain_llc_colored(d) )
> +            domain_dump_llc_colors(d);

I'm less concerned of the conditional here, but along the lines of the
comment above, it could of course again be the function that simply is
a no-op for non-colored domains.

> --- /dev/null
> +++ b/xen/include/xen/llc-coloring.h
> @@ -0,0 +1,46 @@
> +/* SPDX-License-Identifier: GPL-2.0 */
> +/*
> + * Last Level Cache (LLC) coloring common header
> + *
> + * Copyright (C) 2022 Xilinx Inc.
> + *
> + * Authors:
> + *    Carlo Nonato <carlo.nonato@minervasys.tech>
> + */
> +#ifndef __COLORING_H__
> +#define __COLORING_H__
> +
> +#include <xen/sched.h>
> +#include <public/domctl.h>
> +
> +#ifdef CONFIG_HAS_LLC_COLORING

Why does this matter here? IOW why ...

> +#include <asm/llc-coloring.h>
> +
> +#ifdef CONFIG_LLC_COLORING

... is it not just this which is checked?

> +extern bool llc_coloring_enabled;
> +#define llc_coloring_enabled (llc_coloring_enabled)
> +#endif
> +
> +#endif
> +
> +#ifndef llc_coloring_enabled
> +#define llc_coloring_enabled (false)
> +#endif

+1 to the question Julien has raised here.

> --- a/xen/include/xen/sched.h
> +++ b/xen/include/xen/sched.h
> @@ -626,6 +626,11 @@ struct domain
>  
>      /* Holding CDF_* constant. Internal flags for domain creation. */
>      unsigned int cdf;
> +
> +#ifdef CONFIG_LLC_COLORING
> +    unsigned int *llc_colors;

Can the color values change over the lifetime of a domain? If not,
it may be prudent to have this be pointer-to-const.

Jan

> +    unsigned int num_llc_colors;
> +#endif
>  };
>  
>  static inline struct page_list_head *page_to_list(



From xen-devel-bounces@lists.xenproject.org Mon Jan 08 17:08:23 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 08 Jan 2024 17:08:23 +0000
Received: from list by lists.xenproject.org with outflank-mailman.663672.1033758 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMt6l-0001R8-Lz; Mon, 08 Jan 2024 17:08:15 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 663672.1033758; Mon, 08 Jan 2024 17:08:15 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMt6l-0001R1-H7; Mon, 08 Jan 2024 17:08:15 +0000
Received: by outflank-mailman (input) for mailman id 663672;
 Mon, 08 Jan 2024 17:08:13 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=KH4C=IS=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rMt6j-0001Qt-R0
 for xen-devel@lists.xenproject.org; Mon, 08 Jan 2024 17:08:13 +0000
Received: from mail-lj1-x22b.google.com (mail-lj1-x22b.google.com
 [2a00:1450:4864:20::22b])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 813b0eb3-ae48-11ee-98ef-6d05b1d4d9a1;
 Mon, 08 Jan 2024 18:08:12 +0100 (CET)
Received: by mail-lj1-x22b.google.com with SMTP id
 38308e7fff4ca-2ccbc328744so23289071fa.3
 for <xen-devel@lists.xenproject.org>; Mon, 08 Jan 2024 09:08:12 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 w8-20020a6b4a08000000b007baf1948186sm26180iob.42.2024.01.08.09.08.10
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 08 Jan 2024 09:08:11 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 813b0eb3-ae48-11ee-98ef-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1704733692; x=1705338492; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=pzwnLO2m8gTM/EdlibVHVvJN0tKvFfHSV+R/M+KPd3c=;
        b=fHa5B+FKR1kuf2PRtf0JmqVq6hJlJNbs7BYo56Gp+KCO7m2TvyCaU1YFVyEf7KcFB2
         pIdQOQr7p4QBkeJXHhlD+JIR2Oo2mN3y1CjutHmUWzn7KInEaVKQKwkNa5eH4gfCs+fS
         Q/omELaj+3WSQ9XEH4hYOuJS5I//piMWaiReoPsjcLefNzqpeED23CAYpA9vD5YWVjwX
         ffnxXlyjJtUNzxCCm1ctT8XFsBm92IQozyOPlLARQ/Go/PCZMBAx5viqAKo6lghuXWCS
         5F7f550BJJ0D5EAA8PgMKyiIH3oovLmYJP1LYkTxBHbV0fNTWRZJKAzV/VwIFr8x6mu9
         F9WQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704733692; x=1705338492;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=pzwnLO2m8gTM/EdlibVHVvJN0tKvFfHSV+R/M+KPd3c=;
        b=pEKBoemuHKOnMh5YhTayx9v3VwwKVKpZBBAznEzuLmoO/oJMcQkRSU8mM53OTLAgRR
         OS4MWhLj8tp1LQdRVgm+ME+oCinOV5e2bLK2Uhw/yRieLE/PMLXdYYdRJXuVuRPc+zHq
         uN8QyfQQec4Ti026nKjy4UtUBfs1XERTlAQVlmC2xd6foQAA1fkheM17SzM3kBAKGRuz
         8NyV2ODUjjGnsINjDFQYSYIpPproG6BXYRKjbFQF2HM2IX0cEoskSHhs1sybHGKG/kJk
         35myJG2fyKO2bmzYp6wFeEVdVeNvBksJg8zPAvTmsOF1+G7Who/gH1Pp6Np07i3hJgqq
         1Gnw==
X-Gm-Message-State: AOJu0YyQAVH0sG0m9vCF6WBi2ViHWeWJXyF03XPUI3iCnfViutUiOG21
	CS6URw4ErNHHRp8PwxNzF2oJod2oAuUD
X-Google-Smtp-Source: AGHT+IHR8yZ24mAhD3h1j7k1or8/3ZK+cpqRSILs6G6qBGRkLCyxYx8AXVcc8Bvf915CKgk5FlBoAw==
X-Received: by 2002:a2e:be1f:0:b0:2cd:619b:7810 with SMTP id z31-20020a2ebe1f000000b002cd619b7810mr22536ljq.46.1704733691948;
        Mon, 08 Jan 2024 09:08:11 -0800 (PST)
Message-ID: <dea5c6bc-e217-4229-9298-74fced9b7439@suse.com>
Date: Mon, 8 Jan 2024 18:08:08 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v5 08/13] xen/page_alloc: introduce preserved page flags
 macro
Content-Language: en-US
To: Carlo Nonato <carlo.nonato@minervasys.tech>,
 xen-devel@lists.xenproject.org
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 George Dunlap <george.dunlap@citrix.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>,
 Marco Solieri <marco.solieri@minervasys.tech>
References: <20240102095138.17933-1-carlo.nonato@minervasys.tech>
 <20240102095138.17933-9-carlo.nonato@minervasys.tech>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <20240102095138.17933-9-carlo.nonato@minervasys.tech>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 02.01.2024 10:51, Carlo Nonato wrote:
> PGC_static and PGC_extra are flags that needs to be preserved when assigning
> a page. Define a new macro that groups those flags and use it instead of
> or'ing every time.
> 
> The new macro is used also in free_heap_pages() allowing future commits to
> extended it with other flags that must stop merging, as it now works for
> PGC_static. PGC_extra is no harm here since it's only ever being set on
> allocated pages.

Is it? I can't see where free_domheap_pages() would clear it before calling
free_heap_pages(). Or wait, that may happen in mark_page_free(), but then
PGC_static would be cleared there, too. I must be missing something.

> --- a/xen/common/page_alloc.c
> +++ b/xen/common/page_alloc.c
> @@ -158,6 +158,8 @@
>  #define PGC_static 0
>  #endif
>  
> +#define preserved_flags (PGC_extra | PGC_static)

I think this wants to (a) have a PGC_ prefix and (b) as a #define be all
capitals.

> @@ -1504,7 +1506,7 @@ static void free_heap_pages(
>              /* Merge with predecessor block? */
>              if ( !mfn_valid(page_to_mfn(predecessor)) ||
>                   !page_state_is(predecessor, free) ||
> -                 (predecessor->count_info & PGC_static) ||
> +                 (predecessor->count_info & preserved_flags) ||
>                   (PFN_ORDER(predecessor) != order) ||
>                   (page_to_nid(predecessor) != node) )
>                  break;
> @@ -1528,7 +1530,7 @@ static void free_heap_pages(
>              /* Merge with successor block? */
>              if ( !mfn_valid(page_to_mfn(successor)) ||
>                   !page_state_is(successor, free) ||
> -                 (successor->count_info & PGC_static) ||
> +                 (successor->count_info & preserved_flags) ||
>                   (PFN_ORDER(successor) != order) ||
>                   (page_to_nid(successor) != node) )
>                  break;

Irrespective of the comment at the top, this looks like an abuse of the
new constant: There's nothing inherently making preserved flags also
suppress merging (assuming it was properly checked that both sided have
the same flags set/clear).

Jan


From xen-devel-bounces@lists.xenproject.org Mon Jan 08 18:00:07 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 08 Jan 2024 18:00:07 +0000
Received: from list by lists.xenproject.org with outflank-mailman.663679.1033767 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMtud-0003cO-GZ; Mon, 08 Jan 2024 17:59:47 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 663679.1033767; Mon, 08 Jan 2024 17:59:47 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMtud-0003cH-Dm; Mon, 08 Jan 2024 17:59:47 +0000
Received: by outflank-mailman (input) for mailman id 663679;
 Mon, 08 Jan 2024 17:59:46 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=ke4x=IS=arm.com=Luca.Fancellu@srs-se1.protection.inumbo.net>)
 id 1rMtuc-0003cB-5x
 for xen-devel@lists.xenproject.org; Mon, 08 Jan 2024 17:59:46 +0000
Received: from EUR04-VI1-obe.outbound.protection.outlook.com
 (mail-vi1eur04on0601.outbound.protection.outlook.com
 [2a01:111:f400:fe0e::601])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id b35721f7-ae4f-11ee-98ef-6d05b1d4d9a1;
 Mon, 08 Jan 2024 18:59:43 +0100 (CET)
Received: from AM9P195CA0021.EURP195.PROD.OUTLOOK.COM (2603:10a6:20b:21f::26)
 by AS4PR08MB7901.eurprd08.prod.outlook.com (2603:10a6:20b:51c::16)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7159.21; Mon, 8 Jan
 2024 17:59:37 +0000
Received: from AM4PEPF00027A6C.eurprd04.prod.outlook.com
 (2603:10a6:20b:21f:cafe::7) by AM9P195CA0021.outlook.office365.com
 (2603:10a6:20b:21f::26) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7159.21 via Frontend
 Transport; Mon, 8 Jan 2024 17:59:37 +0000
Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by
 AM4PEPF00027A6C.mail.protection.outlook.com (10.167.16.90) with
 Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.7181.13 via Frontend Transport; Mon, 8 Jan 2024 17:59:36 +0000
Received: ("Tessian outbound 53c3c09c1e1b:v239");
 Mon, 08 Jan 2024 17:59:36 +0000
Received: from bba51d5a9036.2
 by 64aa7808-outbound-1.mta.getcheckrecipient.com id
 D5E4B4B7-4F8F-4F29-9457-B7012DEE26FB.1; 
 Mon, 08 Jan 2024 17:59:25 +0000
Received: from EUR01-HE1-obe.outbound.protection.outlook.com
 by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id bba51d5a9036.2
 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384);
 Mon, 08 Jan 2024 17:59:25 +0000
Received: from AM6PR08MB3749.eurprd08.prod.outlook.com (2603:10a6:20b:8f::22)
 by AS8PR08MB7862.eurprd08.prod.outlook.com (2603:10a6:20b:52a::19)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7159.21; Mon, 8 Jan
 2024 17:59:21 +0000
Received: from AM6PR08MB3749.eurprd08.prod.outlook.com
 ([fe80::74c4:3b74:f527:1f94]) by AM6PR08MB3749.eurprd08.prod.outlook.com
 ([fe80::74c4:3b74:f527:1f94%7]) with mapi id 15.20.7159.020; Mon, 8 Jan 2024
 17:59:21 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: b35721f7-ae4f-11ee-98ef-6d05b1d4d9a1
ARC-Seal: i=2; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=pass;
 b=MEsokCjiubrnzXDLxd42t7HaIqbfuahXfKfHUCKK7FqhV+bnJ0Z4v8mHAgZfQUmBkf86Y+bbAMc4LYkiPQ7sTifnkRFzgL9bM6IV36ojtXUwlY34p9HP8FcKJHoEpRSSlLummIPZRjeQKiohiYgpr9l8wwbkznyP0J+yyQP65Coih4lPl5oVg55Y9veAtSthgROy/4Wth20CIh5hbdwpShBblnSTzRjv3kTXoTCcElxug1vJeX6+75yhhbe5Iq+C3dup8yB9uQq9uPzomls/lC12jMeBk+Mi14wcl0Vunqg7a4nsCV5RJjVcee18AWL//EC10/akz01ZN4aCYw4AqQ==
ARC-Message-Signature: i=2; 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=1YuDH++bEzz3T34mEndM8RJn2G9YNBCwjmYXZmnPo18=;
 b=n9Cqzv6KEA9mhMJm9MzigfeKmj6u3ZrgQWSIJHru/YZD1QxJcOPvj5pVMv1X0Fekdk0VCqLgzhw+tpEy+OC1pNojBrAttePpUHPFNx5GZdyYNuBPKIzmaXw2Win4zCrV5s2ov19quJpVcFTjyTCyFb4JBEI48WdNJZ6z889htHmXM7DQkUS+hSV6xlpjU/rFXiTf6Y7/EUFnNgmnuC6bDNJlHKx00tVLdqLKwFeYRQ3D2laGtk2DYlknqSKHOZgMIWLd/XDeSxcYNA2LrcvevTQjG+4zainigCH5Pjq7T3XuRz8f6zppALAuwNVkGQGiHYR1N6vdHmbr8ya4pWNmuQ==
ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is
 63.35.35.123) smtp.rcpttodomain=lists.xenproject.org smtp.mailfrom=arm.com;
 dmarc=pass (p=none sp=none pct=100) action=none header.from=arm.com;
 dkim=pass (signature was verified) header.d=armh.onmicrosoft.com; arc=pass (0
 oda=1 ltdi=1 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com]
 dmarc=[1,1,header.from=arm.com])
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com;
 s=selector2-armh-onmicrosoft-com;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=1YuDH++bEzz3T34mEndM8RJn2G9YNBCwjmYXZmnPo18=;
 b=iAV0GYersEVNDU0GpByFGP2XxqWmVfB/G8W6F+nShpvjhAzMqHUZn68TERovXMpp2KoLEbS+67K/uDY+jUvT1WeqqePpTVTqiXqJ/l5mnL20Ch750qdwnzxAMf9HOvuycJA1hRjAINR4TQdJak+1YTcOoa+YY/u9wWWwj6AeEl8=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 63.35.35.123)
 smtp.mailfrom=arm.com; dkim=pass (signature was verified)
 header.d=armh.onmicrosoft.com;dmarc=pass action=none header.from=arm.com;
Received-SPF: Pass (protection.outlook.com: domain of arm.com designates
 63.35.35.123 as permitted sender) receiver=protection.outlook.com;
 client-ip=63.35.35.123; helo=64aa7808-outbound-1.mta.getcheckrecipient.com;
 pr=C
X-CheckRecipientChecked: true
X-CR-MTA-CID: 1411848e7fdd0eb4
X-CR-MTA-TID: 64aa7808
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=ao7iVUlAlJG2YpdAAaGNOnKbHGrzSHQZTJh5Ny+vD975azncJ/Z5r5QULddx7HI60qVIoxWUBsXTwRolF5WaRJEWk8c9k4PBQYoo6bLbMWBB0NU9FOvJRQqS8D8171dmtgXdEvXN2/muGZIs9aMfakwE2DiRyuMPzHqiyzYLQTYrmzwd+hZE7aBM3A6RfadqhcC8DA71bm0XQ+lgY+Ey7wwaIqgTtgaxFfKb3llzzPAzi1oF+rRPgBDyk+rEgwIPwud7mVtcodJHYeaMeB2G3+EkIYVgQLV9hzZu1wfA5w4Y/Ed5nXc0vR79h8frIDZ4L3oSzfAzwdWWgVHv7f8Q1w==
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=1YuDH++bEzz3T34mEndM8RJn2G9YNBCwjmYXZmnPo18=;
 b=PKHHyg5+onTCpiRP0A8yHV6NEzUrWrgxIsj7eGG66CX8uesxJz2L/dBFXCeLS6WkQTE98cc6v7/EZ0SwvzAcWXB0Voz40Y0e7jdLFju5zIjZbpKUsShTq1uSo51LpIx5wt9Cuf2RT31696Qag7j1aI2aKTJ8i9TVGxpPVqDFxqH2dE52C3NENNZUyIKrVudO+pyZyci1sBVRArdjiymR2ImLYy0PSvjkndardLAL53k6hjME/cW7rPuIdJIpNtwQZ+0ZcrlrfWTJmsHMQgKMDLlACttcHHqOvekSrAMSyjuptppZqYXUOp1NHpzuqAhANjDo0z9KeCBsf4rE4GcWMQ==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass
 header.d=arm.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com;
 s=selector2-armh-onmicrosoft-com;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=1YuDH++bEzz3T34mEndM8RJn2G9YNBCwjmYXZmnPo18=;
 b=iAV0GYersEVNDU0GpByFGP2XxqWmVfB/G8W6F+nShpvjhAzMqHUZn68TERovXMpp2KoLEbS+67K/uDY+jUvT1WeqqePpTVTqiXqJ/l5mnL20Ch750qdwnzxAMf9HOvuycJA1hRjAINR4TQdJak+1YTcOoa+YY/u9wWWwj6AeEl8=
From: Luca Fancellu <Luca.Fancellu@arm.com>
To: Stefano Stabellini <sstabellini@kernel.org>
CC: Julien Grall <julien@xen.org>, Jan Beulich <jbeulich@suse.com>, Andrew
 Cooper <andrew.cooper3@citrix.com>, =?iso-8859-1?Q?Roger_Pau_Monn=E9?=
	<roger.pau@citrix.com>, Bertrand Marquis <Bertrand.Marquis@arm.com>, Michal
 Orzel <Michal.Orzel@amd.com>, Wei Liu <wl@xen.org>,
	"xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>, George
 Dunlap <george.dunlap@cloud.com>
Subject: Re: Clang-format configuration discussion - pt 2
Thread-Topic: Clang-format configuration discussion - pt 2
Thread-Index:
 AQHaHhwDfni7SbjBtk6S7YLD/w4HebCaxpCAgAAF/YCAANA+AIABAccAgADjFACAABTvAIAp2VwAgAkMmQA=
Date: Mon, 8 Jan 2024 17:59:21 +0000
Message-ID: <EC1E1E69-3644-42AA-9095-672B4045778F@arm.com>
References: <1B83FF45-E93B-47D7-AD21-615CFCFD0816@arm.com>
 <2E778E49-C2F5-421F-9598-CED15E7D4284@arm.com>
 <827e24a2-0ecd-48c4-becb-12129c4208dc@suse.com>
 <CA+zSX=b77av9rHwWHsRD8MAnprfXQiotUPPPKFDOU9cTOA2OzA@mail.gmail.com>
 <4ce995a3-78a1-49e5-881d-d6af10514673@xen.org>
 <b71c4e81-7026-40b2-ad76-ea4de5bbf6b3@suse.com>
 <52f25f40-ab42-4845-9912-81ce92cc4de6@xen.org>
 <alpine.DEB.2.22.394.2401021544050.1322202@ubuntu-linux-20-04-desktop>
In-Reply-To:
 <alpine.DEB.2.22.394.2401021544050.1322202@ubuntu-linux-20-04-desktop>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-mailer: Apple Mail (2.3774.200.91.1.1)
Authentication-Results-Original: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=arm.com;
x-ms-traffictypediagnostic:
	AM6PR08MB3749:EE_|AS8PR08MB7862:EE_|AM4PEPF00027A6C:EE_|AS4PR08MB7901:EE_
X-MS-Office365-Filtering-Correlation-Id: 3f7f3fe0-3146-4e27-5a11-08dc10739396
x-checkrecipientrouted: true
nodisclaimer: true
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted: BCL:0;
X-Microsoft-Antispam-Message-Info-Original:
 VxJeOADd4IrWN5DL8Viwm0HfDOQOpNndso3VDJMYDFzt8Ff7L4MhWHr+6TMFmlQwkkpRVvqFuDg7yWWXpc7rRo2jNemJGRYC3Q1wMatyF2pVUtawdNKbe5pmhC65lNW4G51+t1FEpbx+RcD0tOyU7ccj3202EccmixpOy7GOnsWsMgn+UdmbUXqPnLC+H8UnbCcRRhRc1fH+EMYsSX6NhI9loof++ZTew8AuzKYnbaXd0kUZnV31KGa0tXxODvEhaKNIBLbiuPS6qtzfazzrCxFdiEz/ZeORer04EgkWyUj0e50PHTwvTrXyJfJWfeEd3EHtxorbHyq1MPuumCLNw2+Zcnz5z+ek9K/CBYf3MCdi/XBMRRcD+1uDtEwJpReJyS8N11xDY5RPGrcy8uP3oHqstC1byIH8BBbughS9a+nP667cuQi8l34zpYI7HEAyp+6bhUBkL9EIpX71FG93LPjlbPNL6JM8YnG7RLiyW9e8QZRWFQ/ixsOLyHcFvFk5LJFVNZk7ROqS6zcLXSrgbtHAFVodP8a+CntUvIxLyTnwUylnrNdjmF52KhB+5gkcjmM79+wkA0JsbfDAHxlyALsX95riA4y8Io4P71YvYyYVCwaKh1z1uiPzSCIc5XvkhEkEnGi8FfCdSLd35xWeVw==
X-Forefront-Antispam-Report-Untrusted:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AM6PR08MB3749.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230031)(366004)(136003)(346002)(396003)(39860400002)(376002)(230922051799003)(1800799012)(451199024)(64100799003)(186009)(6486002)(2616005)(26005)(478600001)(71200400001)(6512007)(6506007)(83380400001)(4744005)(5660300002)(2906002)(41300700001)(66446008)(66556008)(66946007)(64756008)(6916009)(316002)(76116006)(54906003)(91956017)(8936002)(8676002)(4326008)(66476007)(38070700009)(38100700002)(122000001)(36756003)(86362001)(33656002)(66899024)(45980500001);DIR:OUT;SFP:1101;
Content-Type: text/plain; charset="iso-8859-1"
Content-ID: <300D68267A0FC340A15CEEEB52DF523D@eurprd08.prod.outlook.com>
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR08MB7862
Original-Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=arm.com;
X-EOPAttributedMessage: 0
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 AM4PEPF00027A6C.eurprd04.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	84652c0c-7cd7-4ca8-e81c-08dc10738aa6
X-Microsoft-Antispam: BCL:0;
X-Microsoft-Antispam-Message-Info:
	s6Tmfz1vEwCojx0/jVVAPGu7TgPFtUOa3nUo8EbZgE2rv7OKK0s5dqS5DoCxVanl5DH6CMCoV4EvFGUFemp2IofSq1gB2rTAzK1RAaPLXXK8BIEfcQNpqvYndSS5+tmXjWXcFBbRQYdld1vxkVLkAKVRJJl8dwEEhq8+UkM7JhDL4uPeJxxNzIDnxSxv6BYm2M+5pSMvJNn8deVtGzuHnC7xND6Y29ITQchbrQ1U1CF4pBffi4ahPzTUQrr+wUZH5DGfGIo9/kAu0JIAVmdRpGvHu8r9dv/wCZT4KF43B5yZqH6nkwJqyKdFsJkZLIknt5DVY5nqfkZQg4REWgEe1RyB+JCSAOzt129kDMsauIEzqFN6AzJuKWBiEBe4ZL2o8W1nksIRsvkbCs2+GYrBJFb0EabGB0G5hG/gBvHJatje981Nva1UxMi4Wbm9BiqszWfD9ofPWvFTvDTS/RC2l5bPnA+NSMxH6Ti4aMT/Go2egkvrNNwmgX7GaZlUFFD/azRx/VNIccllU4LKm+QOf2JYFKmSljIejpe9x6nP5BHDO42shjgH020sWf2yjK4zt4PVfJ7vb5wVWncOw3JIEk1/gGFA8e+UvJG23HxX0sx2MgVoFZ4+LcKCi4qtjqdaw4egFU6SJq5vudBj1X/6e9FR/RSm5KL4EB0fxw0d4YMVjtrSlDoZFiURokSwk2baGNduVElVeMsbVzpREChl0sZhsq9eEtuK4CBN40a8lBmQffgWsXMV0W1mOHAy05gc
X-Forefront-Antispam-Report:
	CIP:63.35.35.123;CTRY:IE;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:64aa7808-outbound-1.mta.getcheckrecipient.com;PTR:ec2-63-35-35-123.eu-west-1.compute.amazonaws.com;CAT:NONE;SFS:(13230031)(4636009)(396003)(346002)(39860400002)(376002)(136003)(230922051799003)(186009)(1800799012)(82310400011)(451199024)(64100799003)(46966006)(40470700004)(36840700001)(107886003)(2616005)(66899024)(8936002)(8676002)(26005)(6506007)(6512007)(83380400001)(4744005)(336012)(41300700001)(6486002)(54906003)(86362001)(4326008)(36756003)(316002)(6862004)(2906002)(5660300002)(33656002)(70586007)(70206006)(478600001)(36860700001)(356005)(81166007)(47076005)(82740400003)(40480700001)(40460700003);DIR:OUT;SFP:1101;
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Jan 2024 17:59:36.2686
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 3f7f3fe0-3146-4e27-5a11-08dc10739396
X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[63.35.35.123];Helo=[64aa7808-outbound-1.mta.getcheckrecipient.com]
X-MS-Exchange-CrossTenant-AuthSource:
	AM4PEPF00027A6C.eurprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS4PR08MB7901

>=20
>>>> I found the way we dealt with MISRA rules quite helpful. We had a week=
ly
>>>> meeting to discuss some of the rules and then the outcome was posted o=
n
>>>> the ML. Maybe we should do the same here? Any other suggestion how to
>>>> move?
>>>=20
>>> I have mixed feelings with meetings like the Misra ones. That's probabl=
y
>>> unavoidable because of it being a goal to move fast. I'm not sure the
>>> same applies here.
>>=20
>> I think in this situation is less about moving fast but more about makin=
g a
>> closure of the 3 years+ discussion about the coding style.
>=20
> Exactly. The meeting is useful to find alignment in a more fruitful way.
>=20
> We don't have many MISRA rules left to discuss anyway. We could discuss
> the codestyle changes after MISRA or in parallel.

Hi Stefano,

this is a very good idea, discussing that in a meeting would ease a lot the
explanation for the clang-format configurable.

Cheers,
Luca



From xen-devel-bounces@lists.xenproject.org Mon Jan 08 18:54:59 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 08 Jan 2024 18:54:59 +0000
Received: from list by lists.xenproject.org with outflank-mailman.663881.1033776 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMulx-0002Vp-HG; Mon, 08 Jan 2024 18:54:53 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 663881.1033776; Mon, 08 Jan 2024 18:54:53 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMulx-0002Vi-En; Mon, 08 Jan 2024 18:54:53 +0000
Received: by outflank-mailman (input) for mailman id 663881;
 Mon, 08 Jan 2024 18:54:52 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=+WJX=IS=raptorengineering.com=sanastasio@srs-se1.protection.inumbo.net>)
 id 1rMulw-0002Vc-2P
 for xen-devel@lists.xenproject.org; Mon, 08 Jan 2024 18:54:52 +0000
Received: from raptorengineering.com (mail.raptorengineering.com
 [23.155.224.40]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 657993ca-ae57-11ee-98ef-6d05b1d4d9a1;
 Mon, 08 Jan 2024 19:54:49 +0100 (CET)
Received: from localhost (localhost [127.0.0.1])
 by mail.rptsys.com (Postfix) with ESMTP id A6F6C8285512;
 Mon,  8 Jan 2024 12:54:47 -0600 (CST)
Received: from mail.rptsys.com ([127.0.0.1])
 by localhost (vali.starlink.edu [127.0.0.1]) (amavisd-new, port 10032)
 with ESMTP id KSGMvER7xA8F; Mon,  8 Jan 2024 12:54:47 -0600 (CST)
Received: from localhost (localhost [127.0.0.1])
 by mail.rptsys.com (Postfix) with ESMTP id 0EAEC8285929;
 Mon,  8 Jan 2024 12:54:47 -0600 (CST)
Received: from mail.rptsys.com ([127.0.0.1])
 by localhost (vali.starlink.edu [127.0.0.1]) (amavisd-new, port 10026)
 with ESMTP id xlcHdUk7Z0fF; Mon,  8 Jan 2024 12:54:46 -0600 (CST)
Received: from [10.11.0.2] (5.edge.rptsys.com [23.155.224.38])
 by mail.rptsys.com (Postfix) with ESMTPSA id 6A67E8285512;
 Mon,  8 Jan 2024 12:54:46 -0600 (CST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 657993ca-ae57-11ee-98ef-6d05b1d4d9a1
DKIM-Filter: OpenDKIM Filter v2.10.3 mail.rptsys.com 0EAEC8285929
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
	d=raptorengineering.com; s=B8E824E6-0BE2-11E6-931D-288C65937AAD;
	t=1704740087; bh=h4o4gZTTMz4GP230sXZWefhNNKAr2xR1wCk38zz7n3Q=;
	h=Message-ID:Date:MIME-Version:To:From;
	b=nCwdkZV4gold6H9jrvRnbKIUKI0c+X0urbhJ1LzHZ8msW2WlDdpwfWg8t2MR4au5E
	 YeOgyZTs827y+iiMYaKwuyw1z/3BauPHynMXYP9ur143eduSYmFLafyf/0hE5B4Tn9
	 C8IABnoH0I8gu+Be74Dl+Ct0IXDiAFI/97jDzyC4=
X-Virus-Scanned: amavisd-new at rptsys.com
Message-ID: <d3069761-51fe-4a7d-97e3-d12f786a2495@raptorengineering.com>
Date: Mon, 8 Jan 2024 12:54:45 -0600
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2] NUMA: no need for asm/numa.h when !NUMA
Content-Language: en-US
To: Jan Beulich <jbeulich@suse.com>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 George Dunlap <george.dunlap@citrix.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>,
 Bertrand Marquis <bertrand.marquis@arm.com>,
 Michal Orzel <michal.orzel@amd.com>,
 Oleksii Kurochko <oleksii.kurochko@gmail.com>
References: <94cffa48-5e31-4557-827d-c6dec6031d05@suse.com>
From: Shawn Anastasio <sanastasio@raptorengineering.com>
In-Reply-To: <94cffa48-5e31-4557-827d-c6dec6031d05@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

Hi Jan,

On 1/8/24 5:30 AM, Jan Beulich wrote:
> There's no point in every architecture carrying the same stubs for the
> case when NUMA isn't enabled (or even supported). Move all of that to
> xen/numa.h; replace explicit uses of asm/numa.h in common code. Make
> inclusion of asm/numa.h dependent upon NUMA=y.
> 
> Drop the no longer applicable "implement NUMA support" comments - in a
> !NUMA section this simply makes no sense.
> 
> Signed-off-by: Jan Beulich <jbeulich@suse.com>

Acked-by: Shawn Anastasio <sanastasio@raptorengineering.com>

Thanks,
Shawn


From xen-devel-bounces@lists.xenproject.org Mon Jan 08 19:01:33 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 08 Jan 2024 19:01:33 +0000
Received: from list by lists.xenproject.org with outflank-mailman.663885.1033788 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMusD-0005A5-9T; Mon, 08 Jan 2024 19:01:21 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 663885.1033788; Mon, 08 Jan 2024 19:01:21 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMusD-00059y-4P; Mon, 08 Jan 2024 19:01:21 +0000
Received: by outflank-mailman (input) for mailman id 663885;
 Mon, 08 Jan 2024 19:01:19 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rMusB-00059o-Ju; Mon, 08 Jan 2024 19:01:19 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rMusB-0003dJ-HG; Mon, 08 Jan 2024 19:01:19 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rMusB-0005JZ-6F; Mon, 08 Jan 2024 19:01:19 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rMusB-0003h8-5j; Mon, 08 Jan 2024 19:01:19 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=R31rvRjjnCUQOAAjGazx0SSW5w2oYrGQ6rk+n9RGouQ=; b=ZM7bfl3G+BlKqVg+7t1h8Zr8Vr
	gYop/IeCDZplmX0YLFOXIB7gE2x5W4JyXBNyyyGy3pqn/fhXmgKFPnhnQodqD2TE0j4b8byLIy0uY
	gWhWzQzYBo86wxG1RbxUjCGXTSFtvp+XDXlHWxDL1fsz/0LDGOiPITTbRSi3s1O7bBXU=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184275-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [linux-5.4 test] 184275: regressions - FAIL
X-Osstest-Failures:
    linux-5.4:test-armhf-armhf-xl-multivcpu:guest-start/debian.repeat:fail:regression
    linux-5.4:test-arm64-arm64-libvirt-raw:guest-start/debian.repeat:fail:regression
    linux-5.4:test-armhf-armhf-xl-multivcpu:guest-start:fail:heisenbug
    linux-5.4:test-amd64-amd64-xl-qemut-debianhvm-i386-xsm:debian-hvm-install:fail:heisenbug
    linux-5.4:test-armhf-armhf-xl-rtds:guest-start:fail:allowable
    linux-5.4:test-armhf-armhf-libvirt-qcow2:saverestore-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-credit1:guest-start:fail:nonblocking
    linux-5.4:test-armhf-armhf-libvirt:saverestore-support-check:fail:nonblocking
    linux-5.4:test-amd64-amd64-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    linux-5.4:test-amd64-amd64-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    linux-5.4:test-amd64-i386-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    linux-5.4:test-amd64-i386-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    linux-5.4:test-amd64-amd64-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-credit2:guest-start/debian.repeat:fail:nonblocking
    linux-5.4:test-amd64-amd64-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    linux-5.4:test-armhf-armhf-libvirt-raw:saverestore-support-check:fail:nonblocking
    linux-5.4:test-amd64-i386-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    linux-5.4:test-amd64-i386-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    linux-5.4:test-amd64-amd64-qemuu-nested-amd:debian-hvm-install/l1/l2:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl:saverestore-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-multivcpu:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-multivcpu:saverestore-support-check:fail:nonblocking
    linux-5.4:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    linux-5.4:test-amd64-i386-libvirt-xsm:migrate-support-check:fail:nonblocking
    linux-5.4:test-amd64-i386-libvirt:migrate-support-check:fail:nonblocking
    linux-5.4:test-amd64-i386-xl-pvshim:guest-start:fail:nonblocking
    linux-5.4:test-amd64-amd64-libvirt-xsm:migrate-support-check:fail:nonblocking
    linux-5.4:test-amd64-amd64-libvirt-vhd:migrate-support-check:fail:nonblocking
    linux-5.4:test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-credit2:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-credit2:saverestore-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-xsm:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-xsm:saverestore-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-libvirt-xsm:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-libvirt-xsm:saverestore-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-thunderx:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-thunderx:saverestore-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-credit1:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-credit1:saverestore-support-check:fail:nonblocking
    linux-5.4:test-amd64-i386-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl:saverestore-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-libvirt:migrate-support-check:fail:nonblocking
    linux-5.4:test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-arndale:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-arndale:saverestore-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-credit2:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-credit2:saverestore-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-libvirt-raw:saverestore-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-vhd:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-vhd:saverestore-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-libvirt-qcow2:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-vhd:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-vhd:saverestore-support-check:fail:nonblocking
X-Osstest-Versions-This:
    linux=4410df70110ff5175bf7f7fdc3bae5c80f2c36d9
X-Osstest-Versions-That:
    linux=2d21f73b2f16f51608c8d8b1726df270229a5006
From: osstest service owner <osstest-admin@xenproject.org>
Date: Mon, 08 Jan 2024 19:01:19 +0000

flight 184275 linux-5.4 real [real]
flight 184280 linux-5.4 real-retest [real]
http://logs.test-lab.xenproject.org/osstest/logs/184275/
http://logs.test-lab.xenproject.org/osstest/logs/184280/

Regressions :-(

Tests which did not succeed and are blocking,
including tests which could not be run:
 test-armhf-armhf-xl-multivcpu 18 guest-start/debian.repeat fail REGR. vs. 184192
 test-arm64-arm64-libvirt-raw 17 guest-start/debian.repeat fail REGR. vs. 184192

Tests which are failing intermittently (not blocking):
 test-armhf-armhf-xl-multivcpu 14 guest-start     fail in 184280 pass in 184275
 test-amd64-amd64-xl-qemut-debianhvm-i386-xsm 12 debian-hvm-install fail pass in 184280-retest

Regressions which are regarded as allowable (not blocking):
 test-armhf-armhf-xl-rtds     14 guest-start              fail REGR. vs. 184192

Tests which did not succeed, but are not blocking:
 test-armhf-armhf-libvirt-qcow2 15 saverestore-support-check fail blocked in 184192
 test-armhf-armhf-xl-credit1  14 guest-start                  fail  like 184192
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 184192
 test-amd64-amd64-xl-qemut-ws16-amd64 19 guest-stop            fail like 184192
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 184192
 test-amd64-i386-xl-qemut-win7-amd64 19 guest-stop             fail like 184192
 test-amd64-i386-xl-qemuu-win7-amd64 19 guest-stop             fail like 184192
 test-amd64-amd64-xl-qemut-win7-amd64 19 guest-stop            fail like 184192
 test-armhf-armhf-xl-credit2  18 guest-start/debian.repeat    fail  like 184192
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 184192
 test-armhf-armhf-libvirt-raw 15 saverestore-support-check    fail  like 184192
 test-amd64-i386-xl-qemut-ws16-amd64 19 guest-stop             fail like 184192
 test-amd64-i386-xl-qemuu-ws16-amd64 19 guest-stop             fail like 184192
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 184192
 test-arm64-arm64-xl          15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl          16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-multivcpu 15 migrate-support-check        fail  never pass
 test-armhf-armhf-xl-multivcpu 16 saverestore-support-check    fail  never pass
 test-amd64-amd64-libvirt     15 migrate-support-check        fail   never pass
 test-amd64-i386-libvirt-xsm  15 migrate-support-check        fail   never pass
 test-amd64-i386-libvirt      15 migrate-support-check        fail   never pass
 test-amd64-i386-xl-pvshim    14 guest-start                  fail   never pass
 test-amd64-amd64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt-vhd 14 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-arm64-arm64-xl-credit2  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit2  16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-xsm      15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-xsm      16 saverestore-support-check    fail   never pass
 test-arm64-arm64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-xsm 16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-thunderx 15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-thunderx 16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-credit1  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit1  16 saverestore-support-check    fail   never pass
 test-amd64-i386-libvirt-raw  14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          16 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt     15 migrate-support-check        fail   never pass
 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-armhf-armhf-xl-arndale  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-arndale  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-credit2  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit2  16 saverestore-support-check    fail   never pass
 test-arm64-arm64-libvirt-raw 14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 15 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-vhd      14 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-vhd      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-raw 14 migrate-support-check        fail   never pass
 test-armhf-armhf-libvirt-qcow2 14 migrate-support-check        fail never pass
 test-armhf-armhf-xl-vhd      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      15 saverestore-support-check    fail   never pass

version targeted for testing:
 linux                4410df70110ff5175bf7f7fdc3bae5c80f2c36d9
baseline version:
 linux                2d21f73b2f16f51608c8d8b1726df270229a5006

Last test of basis   184192  2023-12-20 15:16:31 Z   19 days
Testing same since   184275  2024-01-08 10:43:33 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Alexander Gordeev <agordeev@linux.ibm.com>
  Alexis Lothoré <alexis.lothore@bootlin.com>
  Alper Ak <alperyasinak1@gmail.com>
  Bin Li <bin.li@canonical.com>
  Borislav Petkov (AMD) <bp@alien8.de>
  Chen-Yu Tsai <wens@kernel.org>
  Dan Carpenter <dan.carpenter@linaro.org>
  David Howells <dhowells@redhat.com>
  David S. Miller <davem@davemloft.net>
  David Sterba <dsterba@suse.com>
  Dmitry Torokhov <dmitry.torokhov@gmail.com>
  Dominique Martinet <asmadeus@codewreck.org>
  Eric Dumazet <edumazet@google.com>
  Fedor Pchelkin <pchelkin@ispras.ru>
  Florian Fainelli <florian.fainelli@broadcom.com>
  Geert Uytterhoeven <geert+renesas@glider.be>
  Georgi Djakov <djakov@kernel.org>
  Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  Haoran Liu <liuhaoran14@163.com>
  Harshit Mogalapalli <harshit.m.mogalapalli@oracle.com>
  Heiko Carstens <hca@linux.ibm.com>
  Heiner Kallweit <hkallweit1@gmail.com>
  Hu Haowen <xianfengting221@163.com>
  Jakub Kicinski <kuba@kernel.org>
  Jamal Hadi Salim <jhs@mojatatu.com>
  Javier Carrasco <javier.carrasco.cruz@gmail.com>
  Jens Axboe <axboe@kernel.dk>
  Johan Hovold <johan@kernel.org>
  Johannes Berg <johannes.berg@intel.com>
  Jonathan Cameron <Jonathan.Cameron@huawei.com>
  Josef Bacik <josef@toxicpanda.com>
  Kai Vehmanen <kai.vehmanen@linux.intel.com>
  kernelci.org bot <bot@kernelci.org>
  Kunwu Chan <chentao@kylinos.cn>
  Linus Torvalds <torvalds@linux-foundation.org>
  Linus Walleij <linus.walleij@linaro.org>
  Linux Kernel Functional Testing <lkft@linaro.org>
  Liu Jian <liujian56@huawei.com>
  Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
  Mark Glover <mark.glover@actisense.com>
  Markus Suvanto <markus.suvanto@gmail.com>
  Martin K. Petersen <martin.petersen@oracle.com>
  Masami Hiramatsu (Google) <mhiramat@kernel.org>
  Mike Snitzer <snitzer@kernel.org>
  Mike Tipton <quic_mdtipton@quicinc.com>
  Miri Korenblit <miriam.rachel.korenblit@intel.com>
  Moshe Shemesh <moshe@nvidia.com>
  Namjae Jeon <linkinjeon@kernel.org>
  Paolo Abeni <pabeni@redhat.com>
  Paulo Alcantara (SUSE) <pc@manguebit.com>
  Paulo Alcantara <pc@manguebit.com>
  Peter Zijlstra (Intel) <peterz@infradead.org>
  Philipp Zabel <p.zabel@pengutronix.de>
  Quan Nguyen <quan@os.amperecomputing.com>
  Rahul Rameshbabu <rrameshbabu@nvidia.com>
  Reinhard Speyerer <rspmn@arcor.de>
  Rouven Czerwinski <r.czerwinski@pengutronix.de>
  Saeed Mahameed <saeedm@mellanox.com>
  Saeed Mahameed <saeedm@nvidia.com>
  Sarthak Kukreti <sarthakkukreti@chromium.org>
  Sasha Levin <sashal@kernel.org>
  Seth Forshee <sforshee@kernel.org>
  Slark Xiao <slark_xiao@163.com>
  Steve French <stfrench@microsoft.com>
  Steven Rostedt (Google) <rostedt@goodmis.org>
  Su Hui <suhui@nfschina.com>
  Takashi Iwai <tiwai@suse.de>
  Thomas Gleixner <tglx@linutronix.de>
  Tony Lindgren <tony@atomide.com>
  Vlad Buslov <vladbu@nvidia.com>
  Wadim Egorov <w.egorov@phytec.de>
  Wei Yongjun <weiyongjun1@huawei.com>
  Wolfram Sang <wsa@kernel.org>
  Zhipeng Lu <alexious@zju.edu.cn>

jobs:
 build-amd64-xsm                                              pass    
 build-arm64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64                                                  pass    
 build-arm64                                                  pass    
 build-armhf                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-arm64-libvirt                                          pass    
 build-armhf-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-pvops                                            pass    
 build-arm64-pvops                                            pass    
 build-armhf-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-amd64-amd64-xl                                          pass    
 test-amd64-coresched-amd64-xl                                pass    
 test-arm64-arm64-xl                                          pass    
 test-armhf-armhf-xl                                          pass    
 test-amd64-i386-xl                                           pass    
 test-amd64-coresched-i386-xl                                 pass    
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm           pass    
 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm            pass    
 test-amd64-amd64-xl-qemut-stubdom-debianhvm-amd64-xsm        pass    
 test-amd64-i386-xl-qemut-stubdom-debianhvm-amd64-xsm         pass    
 test-amd64-amd64-xl-qemut-debianhvm-i386-xsm                 fail    
 test-amd64-i386-xl-qemut-debianhvm-i386-xsm                  pass    
 test-amd64-amd64-xl-qemuu-debianhvm-i386-xsm                 pass    
 test-amd64-i386-xl-qemuu-debianhvm-i386-xsm                  pass    
 test-amd64-amd64-libvirt-xsm                                 pass    
 test-arm64-arm64-libvirt-xsm                                 pass    
 test-amd64-i386-libvirt-xsm                                  pass    
 test-amd64-amd64-xl-xsm                                      pass    
 test-arm64-arm64-xl-xsm                                      pass    
 test-amd64-i386-xl-xsm                                       pass    
 test-amd64-amd64-qemuu-nested-amd                            fail    
 test-amd64-amd64-xl-pvhv2-amd                                pass    
 test-amd64-i386-qemut-rhel6hvm-amd                           pass    
 test-amd64-i386-qemuu-rhel6hvm-amd                           pass    
 test-amd64-amd64-dom0pvh-xl-amd                              pass    
 test-amd64-amd64-xl-qemut-debianhvm-amd64                    pass    
 test-amd64-i386-xl-qemut-debianhvm-amd64                     pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64                    pass    
 test-amd64-i386-xl-qemuu-debianhvm-amd64                     pass    
 test-amd64-i386-freebsd10-amd64                              pass    
 test-amd64-amd64-qemuu-freebsd11-amd64                       pass    
 test-amd64-amd64-qemuu-freebsd12-amd64                       pass    
 test-amd64-amd64-xl-qemuu-ovmf-amd64                         pass    
 test-amd64-i386-xl-qemuu-ovmf-amd64                          pass    
 test-amd64-amd64-xl-qemut-win7-amd64                         fail    
 test-amd64-i386-xl-qemut-win7-amd64                          fail    
 test-amd64-amd64-xl-qemuu-win7-amd64                         fail    
 test-amd64-i386-xl-qemuu-win7-amd64                          fail    
 test-amd64-amd64-xl-qemut-ws16-amd64                         fail    
 test-amd64-i386-xl-qemut-ws16-amd64                          fail    
 test-amd64-amd64-xl-qemuu-ws16-amd64                         fail    
 test-amd64-i386-xl-qemuu-ws16-amd64                          fail    
 test-armhf-armhf-xl-arndale                                  pass    
 test-amd64-amd64-examine-bios                                pass    
 test-amd64-i386-examine-bios                                 pass    
 test-amd64-amd64-xl-credit1                                  pass    
 test-arm64-arm64-xl-credit1                                  pass    
 test-armhf-armhf-xl-credit1                                  fail    
 test-amd64-amd64-xl-credit2                                  pass    
 test-arm64-arm64-xl-credit2                                  pass    
 test-armhf-armhf-xl-credit2                                  fail    
 test-amd64-amd64-xl-qemuu-dmrestrict-amd64-dmrestrict        pass    
 test-amd64-i386-xl-qemuu-dmrestrict-amd64-dmrestrict         pass    
 test-amd64-amd64-examine                                     pass    
 test-arm64-arm64-examine                                     pass    
 test-armhf-armhf-examine                                     pass    
 test-amd64-i386-examine                                      pass    
 test-amd64-i386-freebsd10-i386                               pass    
 test-amd64-amd64-qemuu-nested-intel                          pass    
 test-amd64-amd64-xl-pvhv2-intel                              pass    
 test-amd64-i386-qemut-rhel6hvm-intel                         pass    
 test-amd64-i386-qemuu-rhel6hvm-intel                         pass    
 test-amd64-amd64-dom0pvh-xl-intel                            pass    
 test-amd64-amd64-libvirt                                     pass    
 test-armhf-armhf-libvirt                                     pass    
 test-amd64-i386-libvirt                                      pass    
 test-amd64-amd64-xl-multivcpu                                pass    
 test-armhf-armhf-xl-multivcpu                                fail    
 test-amd64-amd64-pair                                        pass    
 test-amd64-i386-pair                                         pass    
 test-amd64-amd64-libvirt-pair                                pass    
 test-amd64-i386-libvirt-pair                                 pass    
 test-amd64-amd64-xl-pvshim                                   pass    
 test-amd64-i386-xl-pvshim                                    fail    
 test-amd64-amd64-pygrub                                      pass    
 test-armhf-armhf-libvirt-qcow2                               pass    
 test-amd64-amd64-xl-qcow2                                    pass    
 test-arm64-arm64-libvirt-raw                                 fail    
 test-armhf-armhf-libvirt-raw                                 pass    
 test-amd64-i386-libvirt-raw                                  pass    
 test-amd64-amd64-xl-rtds                                     pass    
 test-armhf-armhf-xl-rtds                                     fail    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64-shadow             pass    
 test-amd64-i386-xl-qemuu-debianhvm-amd64-shadow              pass    
 test-amd64-amd64-xl-shadow                                   pass    
 test-amd64-i386-xl-shadow                                    pass    
 test-arm64-arm64-xl-thunderx                                 pass    
 test-amd64-amd64-examine-uefi                                pass    
 test-amd64-i386-examine-uefi                                 pass    
 test-amd64-amd64-libvirt-vhd                                 pass    
 test-arm64-arm64-xl-vhd                                      pass    
 test-armhf-armhf-xl-vhd                                      pass    
 test-amd64-i386-xl-vhd                                       pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Not pushing.

(No revision log; it would be 1652 lines long.)


From xen-devel-bounces@lists.xenproject.org Mon Jan 08 20:51:09 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 08 Jan 2024 20:51:09 +0000
Received: from list by lists.xenproject.org with outflank-mailman.663900.1033844 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMwaO-0001Du-6u; Mon, 08 Jan 2024 20:51:04 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 663900.1033844; Mon, 08 Jan 2024 20:51:04 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMwaN-0001BR-Qg; Mon, 08 Jan 2024 20:51:03 +0000
Received: by outflank-mailman (input) for mailman id 663900;
 Mon, 08 Jan 2024 20:51:03 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=NrlO=IS=casper.srs.infradead.org=BATV+41a72dc6539c0dfbbc31+7442+infradead.org+dwmw2@srs-se1.protection.inumbo.net>)
 id 1rMwaM-0000R5-RH
 for xen-devel@lists.xenproject.org; Mon, 08 Jan 2024 20:51:02 +0000
Received: from casper.infradead.org (casper.infradead.org
 [2001:8b0:10b:1236::1])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 9e92fb3c-ae67-11ee-98ef-6d05b1d4d9a1;
 Mon, 08 Jan 2024 21:50:56 +0100 (CET)
Received: from [2001:8b0:10b:1::ebe] (helo=i7.infradead.org)
 by casper.infradead.org with esmtpsa (Exim 4.94.2 #2 (Red Hat Linux))
 id 1rMwYi-008RPS-8o; Mon, 08 Jan 2024 20:49:21 +0000
Received: from dwoodhou by i7.infradead.org with local (Exim 4.96.2 #2 (Red
 Hat Linux)) id 1rMwYi-002NEN-37; Mon, 08 Jan 2024 20:49:20 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
X-Inumbo-ID: 9e92fb3c-ae67-11ee-98ef-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=infradead.org; s=casper.20170209; h=Sender:Content-Transfer-Encoding:
	MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:
	Reply-To:Content-Type:Content-ID:Content-Description;
	bh=bVGb2+EtT3pxaWvqPLp7baiGIuRpc42koRGOsdWnaUk=; b=X43RH9AbD3fJNnSNp6zj09ltf+
	fnPjYoNKw/LCY4sLAJ0XSEgh2X0VrFVEH2/Vut01+TVDf27LqToIk4nMKZKNqcKYg2oSynHVvXXd3
	wmrcu6hDmlyRPIBBAhnwoSo8bNOJnWilocaH9Nm2K412zDTBq7bBxjJNgwltO0TK0jSQIuEkSb7aL
	Se/tAWZ770hs5e0RuJ33snAwDjPCpEgSuAWLwbQ5i6aeZt/wzTtrrt7by0kkrFLSSHIJsEcXIrnDR
	cmTyzT+yDJWk2Zpn1SCxFDMawd09aFiLD+4f2rSXJou7fbzNwluCxx0N+7DjZKEkPZkMnpmt+Tj1W
	cOTGJ6pg==;
From: David Woodhouse <dwmw2@infradead.org>
To: qemu-devel@nongnu.org
Cc: Richard Henderson <richard.henderson@linaro.org>,
	Beniamino Galvani <b.galvani@gmail.com>,
	Peter Maydell <peter.maydell@linaro.org>,
	Strahinja Jankovic <strahinja.p.jankovic@gmail.com>,
	Niek Linnenbank <nieklinnenbank@gmail.com>,
	=?UTF-8?q?C=C3=A9dric=20Le=20Goater?= <clg@kaod.org>,
	Andrew Jeffery <andrew@codeconstruct.com.au>,
	Joel Stanley <joel@jms.id.au>,
	Igor Mitsyanko <i.mitsyanko@gmail.com>,
	Jean-Christophe Dubois <jcd@tribudubois.net>,
	Andrey Smirnov <andrew.smirnov@gmail.com>,
	=?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= <philmd@linaro.org>,
	Rob Herring <robh@kernel.org>,
	Subbaraya Sundeep <sundeep.lkml@gmail.com>,
	Jan Kiszka <jan.kiszka@web.de>,
	Tyrone Ting <kfting@nuvoton.com>,
	Hao Wu <wuhaotsh@google.com>,
	Radoslaw Biernacki <rad@semihalf.com>,
	Leif Lindholm <quic_llindhol@quicinc.com>,
	Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org>,
	"Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
	Alistair Francis <alistair@alistair23.me>,
	Helge Deller <deller@gmx.de>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Eduardo Habkost <eduardo@habkost.net>,
	"Michael S. Tsirkin" <mst@redhat.com>,
	Marcel Apfelbaum <marcel.apfelbaum@gmail.com>,
	Song Gao <gaosong@loongson.cn>,
	Thomas Huth <huth@tuxfamily.org>,
	Laurent Vivier <laurent@vivier.eu>,
	Huacai Chen <chenhuacai@kernel.org>,
	Jiaxun Yang <jiaxun.yang@flygoat.com>,
	=?UTF-8?q?Herv=C3=A9=20Poussineau?= <hpoussin@reactos.org>,
	Aleksandar Rikalo <aleksandar.rikalo@syrmia.com>,
	Aurelien Jarno <aurelien@aurel32.net>,
	Jason Wang <jasowang@redhat.com>,
	Jia Liu <proljc@gmail.com>,
	Stafford Horne <shorne@gmail.com>,
	Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>,
	Nicholas Piggin <npiggin@gmail.com>,
	Daniel Henrique Barboza <danielhb413@gmail.com>,
	David Gibson <david@gibson.dropbear.id.au>,
	Harsh Prateek Bora <harshpb@linux.ibm.com>,
	Bin Meng <bin.meng@windriver.com>,
	Palmer Dabbelt <palmer@dabbelt.com>,
	Weiwei Li <liwei1518@gmail.com>,
	Liu Zhiwei <zhiwei_liu@linux.alibaba.com>,
	Halil Pasic <pasic@linux.ibm.com>,
	Christian Borntraeger <borntraeger@linux.ibm.com>,
	Eric Farman <farman@linux.ibm.com>,
	David Hildenbrand <david@redhat.com>,
	Ilya Leoshkevich <iii@linux.ibm.com>,
	Yoshinori Sato <ysato@users.sourceforge.jp>,
	Magnus Damm <magnus.damm@gmail.com>,
	Artyom Tarasenko <atar4qemu@gmail.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Anthony Perard <anthony.perard@citrix.com>,
	Paul Durrant <paul@xen.org>,
	Max Filippov <jcmvbkbc@gmail.com>,
	qemu-arm@nongnu.org,
	qemu-ppc@nongnu.org,
	qemu-riscv@nongnu.org,
	qemu-s390x@nongnu.org,
	xen-devel@lists.xenproject.org,
	David Woodhouse <dwmw@amazon.co.uk>
Subject: [PATCH v3 07/46] hw/alpha/dp264: use pci_init_nic_devices()
Date: Mon,  8 Jan 2024 20:26:36 +0000
Message-ID: <20240108204909.564514-8-dwmw2@infradead.org>
X-Mailer: git-send-email 2.41.0
In-Reply-To: <20240108204909.564514-1-dwmw2@infradead.org>
References: <20240108204909.564514-1-dwmw2@infradead.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Sender: David Woodhouse <dwmw2@infradead.org>
X-SRS-Rewrite: SMTP reverse-path rewritten from <dwmw2@infradead.org> by casper.infradead.org. See http://www.infradead.org/rpr.html

From: David Woodhouse <dwmw@amazon.co.uk>

Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
---
 hw/alpha/dp264.c | 4 +---
 1 file changed, 1 insertion(+), 3 deletions(-)

diff --git a/hw/alpha/dp264.c b/hw/alpha/dp264.c
index 03495e1e60..52a1fa310b 100644
--- a/hw/alpha/dp264.c
+++ b/hw/alpha/dp264.c
@@ -124,9 +124,7 @@ static void clipper_init(MachineState *machine)
     pci_vga_init(pci_bus);
 
     /* Network setup.  e1000 is good enough, failing Tulip support.  */
-    for (i = 0; i < nb_nics; i++) {
-        pci_nic_init_nofail(&nd_table[i], pci_bus, mc->default_nic, NULL);
-    }
+    pci_init_nic_devices(pci_bus, mc->default_nic);
 
     /* Super I/O */
     isa_create_simple(isa_bus, TYPE_SMC37C669_SUPERIO);
-- 
2.41.0



From xen-devel-bounces@lists.xenproject.org Mon Jan 08 20:51:09 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 08 Jan 2024 20:51:09 +0000
Received: from list by lists.xenproject.org with outflank-mailman.663896.1033817 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMwaM-0000j8-IF; Mon, 08 Jan 2024 20:51:02 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 663896.1033817; Mon, 08 Jan 2024 20:51:02 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMwaM-0000j0-AA; Mon, 08 Jan 2024 20:51:02 +0000
Received: by outflank-mailman (input) for mailman id 663896;
 Mon, 08 Jan 2024 20:51:00 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=NrlO=IS=casper.srs.infradead.org=BATV+41a72dc6539c0dfbbc31+7442+infradead.org+dwmw2@srs-se1.protection.inumbo.net>)
 id 1rMwaK-0000R5-Qn
 for xen-devel@lists.xenproject.org; Mon, 08 Jan 2024 20:51:00 +0000
Received: from casper.infradead.org (casper.infradead.org
 [2001:8b0:10b:1236::1])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 9dc8b3e6-ae67-11ee-98ef-6d05b1d4d9a1;
 Mon, 08 Jan 2024 21:50:55 +0100 (CET)
Received: from [2001:8b0:10b:1::ebe] (helo=i7.infradead.org)
 by casper.infradead.org with esmtpsa (Exim 4.94.2 #2 (Red Hat Linux))
 id 1rMwYj-008RPt-Rr; Mon, 08 Jan 2024 20:49:23 +0000
Received: from dwoodhou by i7.infradead.org with local (Exim 4.96.2 #2 (Red
 Hat Linux)) id 1rMwYk-002NFc-1T; Mon, 08 Jan 2024 20:49:22 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
X-Inumbo-ID: 9dc8b3e6-ae67-11ee-98ef-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=infradead.org; s=casper.20170209; h=Sender:Content-Transfer-Encoding:
	MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:
	Reply-To:Content-Type:Content-ID:Content-Description;
	bh=8zuRre35272BYJVRGd9RIb87z+uvpwtc4RlOpE6V4GU=; b=b+e5pHRNHzAKqZDt2JN3LRQAy/
	bLs2U1SXGlCjRJKJipRex6dDaZp+CkBO/dgYwcdJfyt6yseiya5dFWEK5KYJUcFEkskgKtwgAouUh
	yd2pjryXltEkLU0KbkXN0wJpTw7lcyuNtVo4HMqEG2UE3q6djj3wI7+Tz2u4QfUuprPPrdD0YAIRG
	d2gRpO6/uOZYE5d0xc9sBHYVyLKWMooQA+EkAdTUpzPJDMyVPWKHHkKmLPNSAXfaDEehr/q3qZ68K
	fh7wmhbbIFQRCKfRzskDaIgPNxMlGxMYiQNkkOPzdVoLTSj8ogm6JAkqmlhTcLiE9WXS0hyv2qQ/D
	2c35O4/Q==;
From: David Woodhouse <dwmw2@infradead.org>
To: qemu-devel@nongnu.org
Cc: Richard Henderson <richard.henderson@linaro.org>,
	Beniamino Galvani <b.galvani@gmail.com>,
	Peter Maydell <peter.maydell@linaro.org>,
	Strahinja Jankovic <strahinja.p.jankovic@gmail.com>,
	Niek Linnenbank <nieklinnenbank@gmail.com>,
	=?UTF-8?q?C=C3=A9dric=20Le=20Goater?= <clg@kaod.org>,
	Andrew Jeffery <andrew@codeconstruct.com.au>,
	Joel Stanley <joel@jms.id.au>,
	Igor Mitsyanko <i.mitsyanko@gmail.com>,
	Jean-Christophe Dubois <jcd@tribudubois.net>,
	Andrey Smirnov <andrew.smirnov@gmail.com>,
	=?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= <philmd@linaro.org>,
	Rob Herring <robh@kernel.org>,
	Subbaraya Sundeep <sundeep.lkml@gmail.com>,
	Jan Kiszka <jan.kiszka@web.de>,
	Tyrone Ting <kfting@nuvoton.com>,
	Hao Wu <wuhaotsh@google.com>,
	Radoslaw Biernacki <rad@semihalf.com>,
	Leif Lindholm <quic_llindhol@quicinc.com>,
	Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org>,
	"Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
	Alistair Francis <alistair@alistair23.me>,
	Helge Deller <deller@gmx.de>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Eduardo Habkost <eduardo@habkost.net>,
	"Michael S. Tsirkin" <mst@redhat.com>,
	Marcel Apfelbaum <marcel.apfelbaum@gmail.com>,
	Song Gao <gaosong@loongson.cn>,
	Thomas Huth <huth@tuxfamily.org>,
	Laurent Vivier <laurent@vivier.eu>,
	Huacai Chen <chenhuacai@kernel.org>,
	Jiaxun Yang <jiaxun.yang@flygoat.com>,
	=?UTF-8?q?Herv=C3=A9=20Poussineau?= <hpoussin@reactos.org>,
	Aleksandar Rikalo <aleksandar.rikalo@syrmia.com>,
	Aurelien Jarno <aurelien@aurel32.net>,
	Jason Wang <jasowang@redhat.com>,
	Jia Liu <proljc@gmail.com>,
	Stafford Horne <shorne@gmail.com>,
	Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>,
	Nicholas Piggin <npiggin@gmail.com>,
	Daniel Henrique Barboza <danielhb413@gmail.com>,
	David Gibson <david@gibson.dropbear.id.au>,
	Harsh Prateek Bora <harshpb@linux.ibm.com>,
	Bin Meng <bin.meng@windriver.com>,
	Palmer Dabbelt <palmer@dabbelt.com>,
	Weiwei Li <liwei1518@gmail.com>,
	Liu Zhiwei <zhiwei_liu@linux.alibaba.com>,
	Halil Pasic <pasic@linux.ibm.com>,
	Christian Borntraeger <borntraeger@linux.ibm.com>,
	Eric Farman <farman@linux.ibm.com>,
	David Hildenbrand <david@redhat.com>,
	Ilya Leoshkevich <iii@linux.ibm.com>,
	Yoshinori Sato <ysato@users.sourceforge.jp>,
	Magnus Damm <magnus.damm@gmail.com>,
	Artyom Tarasenko <atar4qemu@gmail.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Anthony Perard <anthony.perard@citrix.com>,
	Paul Durrant <paul@xen.org>,
	Max Filippov <jcmvbkbc@gmail.com>,
	qemu-arm@nongnu.org,
	qemu-ppc@nongnu.org,
	qemu-riscv@nongnu.org,
	qemu-s390x@nongnu.org,
	xen-devel@lists.xenproject.org,
	David Woodhouse <dwmw@amazon.co.uk>
Subject: [PATCH v3 24/46] hw/arm/fsl: use qemu_configure_nic_device()
Date: Mon,  8 Jan 2024 20:26:53 +0000
Message-ID: <20240108204909.564514-25-dwmw2@infradead.org>
X-Mailer: git-send-email 2.41.0
In-Reply-To: <20240108204909.564514-1-dwmw2@infradead.org>
References: <20240108204909.564514-1-dwmw2@infradead.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Sender: David Woodhouse <dwmw2@infradead.org>
X-SRS-Rewrite: SMTP reverse-path rewritten from <dwmw2@infradead.org> by casper.infradead.org. See http://www.infradead.org/rpr.html

From: David Woodhouse <dwmw@amazon.co.uk>

Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
---
 hw/arm/fsl-imx25.c  | 2 +-
 hw/arm/fsl-imx6.c   | 2 +-
 hw/arm/fsl-imx6ul.c | 2 +-
 hw/arm/fsl-imx7.c   | 2 +-
 4 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/hw/arm/fsl-imx25.c b/hw/arm/fsl-imx25.c
index 9d2fb75a68..a24fa7b443 100644
--- a/hw/arm/fsl-imx25.c
+++ b/hw/arm/fsl-imx25.c
@@ -170,7 +170,7 @@ static void fsl_imx25_realize(DeviceState *dev, Error **errp)
 
     object_property_set_uint(OBJECT(&s->fec), "phy-num", s->phy_num,
                              &error_abort);
-    qdev_set_nic_properties(DEVICE(&s->fec), &nd_table[0]);
+    qemu_configure_nic_device(DEVICE(&s->fec), true, NULL);
 
     if (!sysbus_realize(SYS_BUS_DEVICE(&s->fec), errp)) {
         return;
diff --git a/hw/arm/fsl-imx6.c b/hw/arm/fsl-imx6.c
index b2153022c0..02f3024090 100644
--- a/hw/arm/fsl-imx6.c
+++ b/hw/arm/fsl-imx6.c
@@ -380,7 +380,7 @@ static void fsl_imx6_realize(DeviceState *dev, Error **errp)
 
     object_property_set_uint(OBJECT(&s->eth), "phy-num", s->phy_num,
                              &error_abort);
-    qdev_set_nic_properties(DEVICE(&s->eth), &nd_table[0]);
+    qemu_configure_nic_device(DEVICE(&s->eth), true, NULL);
     if (!sysbus_realize(SYS_BUS_DEVICE(&s->eth), errp)) {
         return;
     }
diff --git a/hw/arm/fsl-imx6ul.c b/hw/arm/fsl-imx6ul.c
index e37b69a5e1..ca3dd439ec 100644
--- a/hw/arm/fsl-imx6ul.c
+++ b/hw/arm/fsl-imx6ul.c
@@ -442,7 +442,7 @@ static void fsl_imx6ul_realize(DeviceState *dev, Error **errp)
                                  s->phy_num[i], &error_abort);
         object_property_set_uint(OBJECT(&s->eth[i]), "tx-ring-num",
                                  FSL_IMX6UL_ETH_NUM_TX_RINGS, &error_abort);
-        qdev_set_nic_properties(DEVICE(&s->eth[i]), &nd_table[i]);
+        qemu_configure_nic_device(DEVICE(&s->eth[i]), true, NULL);
         sysbus_realize(SYS_BUS_DEVICE(&s->eth[i]), &error_abort);
 
         sysbus_mmio_map(SYS_BUS_DEVICE(&s->eth[i]), 0,
diff --git a/hw/arm/fsl-imx7.c b/hw/arm/fsl-imx7.c
index 474cfdc87c..1acbe065db 100644
--- a/hw/arm/fsl-imx7.c
+++ b/hw/arm/fsl-imx7.c
@@ -446,7 +446,7 @@ static void fsl_imx7_realize(DeviceState *dev, Error **errp)
                                  s->phy_num[i], &error_abort);
         object_property_set_uint(OBJECT(&s->eth[i]), "tx-ring-num",
                                  FSL_IMX7_ETH_NUM_TX_RINGS, &error_abort);
-        qdev_set_nic_properties(DEVICE(&s->eth[i]), &nd_table[i]);
+        qemu_configure_nic_device(DEVICE(&s->eth[i]), true, NULL);
         sysbus_realize(SYS_BUS_DEVICE(&s->eth[i]), &error_abort);
 
         sysbus_mmio_map(SYS_BUS_DEVICE(&s->eth[i]), 0, FSL_IMX7_ENETn_ADDR[i]);
-- 
2.41.0



From xen-devel-bounces@lists.xenproject.org Mon Jan 08 20:51:09 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 08 Jan 2024 20:51:09 +0000
Received: from list by lists.xenproject.org with outflank-mailman.663901.1033860 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMwaP-0001lm-DY; Mon, 08 Jan 2024 20:51:05 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 663901.1033860; Mon, 08 Jan 2024 20:51:05 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMwaP-0001kF-6A; Mon, 08 Jan 2024 20:51:05 +0000
Received: by outflank-mailman (input) for mailman id 663901;
 Mon, 08 Jan 2024 20:51:03 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=NrlO=IS=casper.srs.infradead.org=BATV+41a72dc6539c0dfbbc31+7442+infradead.org+dwmw2@srs-se1.protection.inumbo.net>)
 id 1rMwaN-0000R6-8R
 for xen-devel@lists.xenproject.org; Mon, 08 Jan 2024 20:51:03 +0000
Received: from casper.infradead.org (casper.infradead.org
 [2001:8b0:10b:1236::1])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id a1344a74-ae67-11ee-9b0f-b553b5be7939;
 Mon, 08 Jan 2024 21:51:00 +0100 (CET)
Received: from [2001:8b0:10b:1::ebe] (helo=i7.infradead.org)
 by casper.infradead.org with esmtpsa (Exim 4.94.2 #2 (Red Hat Linux))
 id 1rMwYj-008RPf-3s; Mon, 08 Jan 2024 20:49:22 +0000
Received: from dwoodhou by i7.infradead.org with local (Exim 4.96.2 #2 (Red
 Hat Linux)) id 1rMwYj-002NF3-2R; Mon, 08 Jan 2024 20:49:21 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
X-Inumbo-ID: a1344a74-ae67-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=infradead.org; s=casper.20170209; h=Sender:Content-Transfer-Encoding:
	MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:
	Reply-To:Content-Type:Content-ID:Content-Description;
	bh=7Y/fpZLGSTfVybtSU43YJBQfzBq7lyV4x3tmIJkV8Ts=; b=e82c7+8C6M2+PbpguJIN0m5bUN
	TRxTNVMVnkmomcru6vqqeFzQr+jet08uHbZBojwEdctvCMdjKhIagERczo1Tq6AaijgzCFCPpvWvl
	Z4YVc4fCtbQnj1CuCCwGZeW6LtZCMc49LzcbdI3UGVBFh/JFxKfxBIyzg/67/bv4M0QXpHhk8SBQa
	19EHdUHFu5fXojvCMw+X6O05LgK8eo7bWVSm3/6fqjYfkuJNUz+lWR7jQrnZmTmPLzfGr4ebO4kj7
	4a9lu7XLoJh+XSrmdPDYjmVUQ7e3xnHx1sqL3wrwMBWrg2PoGk6ufFz96Zcya45KEZkPEr9pRoPSv
	cLpEBghg==;
From: David Woodhouse <dwmw2@infradead.org>
To: qemu-devel@nongnu.org
Cc: Richard Henderson <richard.henderson@linaro.org>,
	Beniamino Galvani <b.galvani@gmail.com>,
	Peter Maydell <peter.maydell@linaro.org>,
	Strahinja Jankovic <strahinja.p.jankovic@gmail.com>,
	Niek Linnenbank <nieklinnenbank@gmail.com>,
	=?UTF-8?q?C=C3=A9dric=20Le=20Goater?= <clg@kaod.org>,
	Andrew Jeffery <andrew@codeconstruct.com.au>,
	Joel Stanley <joel@jms.id.au>,
	Igor Mitsyanko <i.mitsyanko@gmail.com>,
	Jean-Christophe Dubois <jcd@tribudubois.net>,
	Andrey Smirnov <andrew.smirnov@gmail.com>,
	=?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= <philmd@linaro.org>,
	Rob Herring <robh@kernel.org>,
	Subbaraya Sundeep <sundeep.lkml@gmail.com>,
	Jan Kiszka <jan.kiszka@web.de>,
	Tyrone Ting <kfting@nuvoton.com>,
	Hao Wu <wuhaotsh@google.com>,
	Radoslaw Biernacki <rad@semihalf.com>,
	Leif Lindholm <quic_llindhol@quicinc.com>,
	Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org>,
	"Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
	Alistair Francis <alistair@alistair23.me>,
	Helge Deller <deller@gmx.de>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Eduardo Habkost <eduardo@habkost.net>,
	"Michael S. Tsirkin" <mst@redhat.com>,
	Marcel Apfelbaum <marcel.apfelbaum@gmail.com>,
	Song Gao <gaosong@loongson.cn>,
	Thomas Huth <huth@tuxfamily.org>,
	Laurent Vivier <laurent@vivier.eu>,
	Huacai Chen <chenhuacai@kernel.org>,
	Jiaxun Yang <jiaxun.yang@flygoat.com>,
	=?UTF-8?q?Herv=C3=A9=20Poussineau?= <hpoussin@reactos.org>,
	Aleksandar Rikalo <aleksandar.rikalo@syrmia.com>,
	Aurelien Jarno <aurelien@aurel32.net>,
	Jason Wang <jasowang@redhat.com>,
	Jia Liu <proljc@gmail.com>,
	Stafford Horne <shorne@gmail.com>,
	Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>,
	Nicholas Piggin <npiggin@gmail.com>,
	Daniel Henrique Barboza <danielhb413@gmail.com>,
	David Gibson <david@gibson.dropbear.id.au>,
	Harsh Prateek Bora <harshpb@linux.ibm.com>,
	Bin Meng <bin.meng@windriver.com>,
	Palmer Dabbelt <palmer@dabbelt.com>,
	Weiwei Li <liwei1518@gmail.com>,
	Liu Zhiwei <zhiwei_liu@linux.alibaba.com>,
	Halil Pasic <pasic@linux.ibm.com>,
	Christian Borntraeger <borntraeger@linux.ibm.com>,
	Eric Farman <farman@linux.ibm.com>,
	David Hildenbrand <david@redhat.com>,
	Ilya Leoshkevich <iii@linux.ibm.com>,
	Yoshinori Sato <ysato@users.sourceforge.jp>,
	Magnus Damm <magnus.damm@gmail.com>,
	Artyom Tarasenko <atar4qemu@gmail.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Anthony Perard <anthony.perard@citrix.com>,
	Paul Durrant <paul@xen.org>,
	Max Filippov <jcmvbkbc@gmail.com>,
	qemu-arm@nongnu.org,
	qemu-ppc@nongnu.org,
	qemu-riscv@nongnu.org,
	qemu-s390x@nongnu.org,
	xen-devel@lists.xenproject.org,
	David Woodhouse <dwmw@amazon.co.uk>
Subject: [PATCH v3 16/46] hw/ppc/spapr: use qemu_get_nic_info() and pci_init_nic_devices()
Date: Mon,  8 Jan 2024 20:26:45 +0000
Message-ID: <20240108204909.564514-17-dwmw2@infradead.org>
X-Mailer: git-send-email 2.41.0
In-Reply-To: <20240108204909.564514-1-dwmw2@infradead.org>
References: <20240108204909.564514-1-dwmw2@infradead.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Sender: David Woodhouse <dwmw2@infradead.org>
X-SRS-Rewrite: SMTP reverse-path rewritten from <dwmw2@infradead.org> by casper.infradead.org. See http://www.infradead.org/rpr.html

From: David Woodhouse <dwmw@amazon.co.uk>

Avoid directly referencing nd_table[] by first instantiating any
spapr-vlan devices using a qemu_get_nic_info() loop, then calling
pci_init_nic_devices() to do the rest.

No functional change intended.

Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
---
 hw/ppc/spapr.c | 18 +++++-------------
 1 file changed, 5 insertions(+), 13 deletions(-)

diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c
index 4997aa4f1d..37604e7caf 100644
--- a/hw/ppc/spapr.c
+++ b/hw/ppc/spapr.c
@@ -2796,6 +2796,7 @@ static void spapr_machine_init(MachineState *machine)
     MemoryRegion *sysmem = get_system_memory();
     long load_limit, fw_size;
     Error *resize_hpt_err = NULL;
+    NICInfo *nd;
 
     if (!filename) {
         error_report("Could not find LPAR firmware '%s'", bios_name);
@@ -2996,21 +2997,12 @@ static void spapr_machine_init(MachineState *machine)
 
     phb = spapr_create_default_phb();
 
-    for (i = 0; i < nb_nics; i++) {
-        NICInfo *nd = &nd_table[i];
-
-        if (!nd->model) {
-            nd->model = g_strdup("spapr-vlan");
-        }
-
-        if (g_str_equal(nd->model, "spapr-vlan") ||
-            g_str_equal(nd->model, "ibmveth")) {
-            spapr_vlan_create(spapr->vio_bus, nd);
-        } else {
-            pci_nic_init_nofail(&nd_table[i], phb->bus, nd->model, NULL);
-        }
+    while ((nd = qemu_find_nic_info("spapr-vlan", true, "ibmveth"))) {
+        spapr_vlan_create(spapr->vio_bus, nd);
     }
 
+    pci_init_nic_devices(phb->bus, NULL);
+
     for (i = 0; i <= drive_get_max_bus(IF_SCSI); i++) {
         spapr_vscsi_create(spapr->vio_bus);
     }
-- 
2.41.0



From xen-devel-bounces@lists.xenproject.org Mon Jan 08 20:51:09 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 08 Jan 2024 20:51:09 +0000
Received: from list by lists.xenproject.org with outflank-mailman.663903.1033875 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMwaQ-00022g-F5; Mon, 08 Jan 2024 20:51:06 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 663903.1033875; Mon, 08 Jan 2024 20:51:06 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMwaQ-000205-6O; Mon, 08 Jan 2024 20:51:06 +0000
Received: by outflank-mailman (input) for mailman id 663903;
 Mon, 08 Jan 2024 20:51:04 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=NrlO=IS=casper.srs.infradead.org=BATV+41a72dc6539c0dfbbc31+7442+infradead.org+dwmw2@srs-se1.protection.inumbo.net>)
 id 1rMwaN-0000R5-RO
 for xen-devel@lists.xenproject.org; Mon, 08 Jan 2024 20:51:03 +0000
Received: from casper.infradead.org (casper.infradead.org
 [2001:8b0:10b:1236::1])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id a078b9f7-ae67-11ee-98ef-6d05b1d4d9a1;
 Mon, 08 Jan 2024 21:50:59 +0100 (CET)
Received: from [2001:8b0:10b:1::ebe] (helo=i7.infradead.org)
 by casper.infradead.org with esmtpsa (Exim 4.94.2 #2 (Red Hat Linux))
 id 1rMwYk-008RQ4-FK; Mon, 08 Jan 2024 20:49:23 +0000
Received: from dwoodhou by i7.infradead.org with local (Exim 4.96.2 #2 (Red
 Hat Linux)) id 1rMwYl-002NGX-0l; Mon, 08 Jan 2024 20:49:23 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
X-Inumbo-ID: a078b9f7-ae67-11ee-98ef-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=infradead.org; s=casper.20170209; h=Sender:Content-Transfer-Encoding:
	MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:
	Reply-To:Content-Type:Content-ID:Content-Description;
	bh=YuV1U9QqJn6O+NsoibaCqXzAKb9rkiw1btsa5muc1z8=; b=B1IyKteHJ3fp/36vduyMRbP8IR
	YKhL/Ygp6B7X6j63nRXIEjJ6tIJHQA5p+dXkv7+JXZNQmVaO3X/IAgKGMEgnD23LYEsbJeaKC16jZ
	Sl5cz7vnr9fQdbkcUJZkaxn8QxS/d/zNxaV8m19sOmSeAyNtjTSNpCbLr1XhhqKz3QhyBBf2No9SG
	/nIG3Y8ztAUMxRyDYrW8IJch2VWe4JBGppyBgsK1OM12GEn2DnGek6Zhp5etAmc2iFdQrxGX3cOsJ
	nn0cLBfc+ylsXBS7dNLnm+04s9niNuYlOWoTYdm8mLMr3Bu92phgV7xeMzesTW8Wibj4eN284q6Wo
	mYrnMPfw==;
From: David Woodhouse <dwmw2@infradead.org>
To: qemu-devel@nongnu.org
Cc: Richard Henderson <richard.henderson@linaro.org>,
	Beniamino Galvani <b.galvani@gmail.com>,
	Peter Maydell <peter.maydell@linaro.org>,
	Strahinja Jankovic <strahinja.p.jankovic@gmail.com>,
	Niek Linnenbank <nieklinnenbank@gmail.com>,
	=?UTF-8?q?C=C3=A9dric=20Le=20Goater?= <clg@kaod.org>,
	Andrew Jeffery <andrew@codeconstruct.com.au>,
	Joel Stanley <joel@jms.id.au>,
	Igor Mitsyanko <i.mitsyanko@gmail.com>,
	Jean-Christophe Dubois <jcd@tribudubois.net>,
	Andrey Smirnov <andrew.smirnov@gmail.com>,
	=?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= <philmd@linaro.org>,
	Rob Herring <robh@kernel.org>,
	Subbaraya Sundeep <sundeep.lkml@gmail.com>,
	Jan Kiszka <jan.kiszka@web.de>,
	Tyrone Ting <kfting@nuvoton.com>,
	Hao Wu <wuhaotsh@google.com>,
	Radoslaw Biernacki <rad@semihalf.com>,
	Leif Lindholm <quic_llindhol@quicinc.com>,
	Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org>,
	"Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
	Alistair Francis <alistair@alistair23.me>,
	Helge Deller <deller@gmx.de>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Eduardo Habkost <eduardo@habkost.net>,
	"Michael S. Tsirkin" <mst@redhat.com>,
	Marcel Apfelbaum <marcel.apfelbaum@gmail.com>,
	Song Gao <gaosong@loongson.cn>,
	Thomas Huth <huth@tuxfamily.org>,
	Laurent Vivier <laurent@vivier.eu>,
	Huacai Chen <chenhuacai@kernel.org>,
	Jiaxun Yang <jiaxun.yang@flygoat.com>,
	=?UTF-8?q?Herv=C3=A9=20Poussineau?= <hpoussin@reactos.org>,
	Aleksandar Rikalo <aleksandar.rikalo@syrmia.com>,
	Aurelien Jarno <aurelien@aurel32.net>,
	Jason Wang <jasowang@redhat.com>,
	Jia Liu <proljc@gmail.com>,
	Stafford Horne <shorne@gmail.com>,
	Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>,
	Nicholas Piggin <npiggin@gmail.com>,
	Daniel Henrique Barboza <danielhb413@gmail.com>,
	David Gibson <david@gibson.dropbear.id.au>,
	Harsh Prateek Bora <harshpb@linux.ibm.com>,
	Bin Meng <bin.meng@windriver.com>,
	Palmer Dabbelt <palmer@dabbelt.com>,
	Weiwei Li <liwei1518@gmail.com>,
	Liu Zhiwei <zhiwei_liu@linux.alibaba.com>,
	Halil Pasic <pasic@linux.ibm.com>,
	Christian Borntraeger <borntraeger@linux.ibm.com>,
	Eric Farman <farman@linux.ibm.com>,
	David Hildenbrand <david@redhat.com>,
	Ilya Leoshkevich <iii@linux.ibm.com>,
	Yoshinori Sato <ysato@users.sourceforge.jp>,
	Magnus Damm <magnus.damm@gmail.com>,
	Artyom Tarasenko <atar4qemu@gmail.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Anthony Perard <anthony.perard@citrix.com>,
	Paul Durrant <paul@xen.org>,
	Max Filippov <jcmvbkbc@gmail.com>,
	qemu-arm@nongnu.org,
	qemu-ppc@nongnu.org,
	qemu-riscv@nongnu.org,
	qemu-s390x@nongnu.org,
	xen-devel@lists.xenproject.org,
	David Woodhouse <dwmw@amazon.co.uk>
Subject: [PATCH v3 35/46] hw/mips/mipssim: use qemu_create_nic_device()
Date: Mon,  8 Jan 2024 20:27:04 +0000
Message-ID: <20240108204909.564514-36-dwmw2@infradead.org>
X-Mailer: git-send-email 2.41.0
In-Reply-To: <20240108204909.564514-1-dwmw2@infradead.org>
References: <20240108204909.564514-1-dwmw2@infradead.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Sender: David Woodhouse <dwmw2@infradead.org>
X-SRS-Rewrite: SMTP reverse-path rewritten from <dwmw2@infradead.org> by casper.infradead.org. See http://www.infradead.org/rpr.html

From: David Woodhouse <dwmw@amazon.co.uk>

The MIPS SIM platform instantiates its NIC only if a corresponding
configuration exists for it. Use qemu_create_nic_device() function for
that.

Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
---
 hw/mips/mipssim.c | 13 +++++++------
 1 file changed, 7 insertions(+), 6 deletions(-)

diff --git a/hw/mips/mipssim.c b/hw/mips/mipssim.c
index 01e323904d..16af31648e 100644
--- a/hw/mips/mipssim.c
+++ b/hw/mips/mipssim.c
@@ -118,13 +118,15 @@ static void main_cpu_reset(void *opaque)
     }
 }
 
-static void mipsnet_init(int base, qemu_irq irq, NICInfo *nd)
+static void mipsnet_init(int base, qemu_irq irq)
 {
     DeviceState *dev;
     SysBusDevice *s;
 
-    dev = qdev_new("mipsnet");
-    qdev_set_nic_properties(dev, nd);
+    dev = qemu_create_nic_device("mipsnet", true, NULL);
+    if (!dev) {
+        return;
+    }
 
     s = SYS_BUS_DEVICE(dev);
     sysbus_realize_and_unref(s, &error_fatal);
@@ -225,9 +227,8 @@ mips_mipssim_init(MachineState *machine)
                       sysbus_mmio_get_region(SYS_BUS_DEVICE(dev), 0));
     }
 
-    if (nd_table[0].used)
-        /* MIPSnet uses the MIPS CPU INT0, which is interrupt 2. */
-        mipsnet_init(0x4200, env->irq[2], &nd_table[0]);
+    /* MIPSnet uses the MIPS CPU INT0, which is interrupt 2. */
+    mipsnet_init(0x4200, env->irq[2]);
 }
 
 static void mips_mipssim_machine_init(MachineClass *mc)
-- 
2.41.0



From xen-devel-bounces@lists.xenproject.org Mon Jan 08 20:51:09 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 08 Jan 2024 20:51:09 +0000
Received: from list by lists.xenproject.org with outflank-mailman.663894.1033799 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMwaK-0000RS-V2; Mon, 08 Jan 2024 20:51:00 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 663894.1033799; Mon, 08 Jan 2024 20:51:00 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMwaK-0000RH-Qq; Mon, 08 Jan 2024 20:51:00 +0000
Received: by outflank-mailman (input) for mailman id 663894;
 Mon, 08 Jan 2024 20:50:59 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=NrlO=IS=casper.srs.infradead.org=BATV+41a72dc6539c0dfbbc31+7442+infradead.org+dwmw2@srs-se1.protection.inumbo.net>)
 id 1rMwaJ-0000R6-46
 for xen-devel@lists.xenproject.org; Mon, 08 Jan 2024 20:50:59 +0000
Received: from casper.infradead.org (casper.infradead.org
 [2001:8b0:10b:1236::1])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 9c940bd3-ae67-11ee-9b0f-b553b5be7939;
 Mon, 08 Jan 2024 21:50:55 +0100 (CET)
Received: from [2001:8b0:10b:1::ebe] (helo=i7.infradead.org)
 by casper.infradead.org with esmtpsa (Exim 4.94.2 #2 (Red Hat Linux))
 id 1rMwYi-008RPe-Ri; Mon, 08 Jan 2024 20:49:22 +0000
Received: from dwoodhou by i7.infradead.org with local (Exim 4.96.2 #2 (Red
 Hat Linux)) id 1rMwYj-002NEu-1z; Mon, 08 Jan 2024 20:49:21 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
X-Inumbo-ID: 9c940bd3-ae67-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=infradead.org; s=casper.20170209; h=Sender:Content-Transfer-Encoding:
	MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:
	Reply-To:Content-Type:Content-ID:Content-Description;
	bh=GlXzCO3XdZ21RHsZxfP3RgbC823eeizUvksRPyKhf1o=; b=F2PLLrhA1JCW2ZC6Gag0CAqTku
	yoaan0Fj4kmMVNXtnb8mwsbdx3hzKzm/2rPfryD/967lRW8bxpKpoRAIiZ6hJojMGfdOiNNAqiSF7
	TrdjxJw/78RYS0xwuNkvNVSJeuSdJOO6+v17RiFKR8zia+6NWU9Ldz7hDoi7vakXoa32RqX+TSPii
	exGfEZHdsrKgfj2fB1e4C3ijCX3WnNHb7dlV8cHz8Z7YZQhOSufyMjqlDpFWSAoO/sFQZc0wgLO6G
	NCMH2nANgaHhp/DlIlQbxOWgFbJea+QyzDq2hyfzHwM9pNnzQP/EIH02681vCOWfeDhOxxUrSidgH
	YJ4me+yg==;
From: David Woodhouse <dwmw2@infradead.org>
To: qemu-devel@nongnu.org
Cc: Richard Henderson <richard.henderson@linaro.org>,
	Beniamino Galvani <b.galvani@gmail.com>,
	Peter Maydell <peter.maydell@linaro.org>,
	Strahinja Jankovic <strahinja.p.jankovic@gmail.com>,
	Niek Linnenbank <nieklinnenbank@gmail.com>,
	=?UTF-8?q?C=C3=A9dric=20Le=20Goater?= <clg@kaod.org>,
	Andrew Jeffery <andrew@codeconstruct.com.au>,
	Joel Stanley <joel@jms.id.au>,
	Igor Mitsyanko <i.mitsyanko@gmail.com>,
	Jean-Christophe Dubois <jcd@tribudubois.net>,
	Andrey Smirnov <andrew.smirnov@gmail.com>,
	=?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= <philmd@linaro.org>,
	Rob Herring <robh@kernel.org>,
	Subbaraya Sundeep <sundeep.lkml@gmail.com>,
	Jan Kiszka <jan.kiszka@web.de>,
	Tyrone Ting <kfting@nuvoton.com>,
	Hao Wu <wuhaotsh@google.com>,
	Radoslaw Biernacki <rad@semihalf.com>,
	Leif Lindholm <quic_llindhol@quicinc.com>,
	Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org>,
	"Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
	Alistair Francis <alistair@alistair23.me>,
	Helge Deller <deller@gmx.de>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Eduardo Habkost <eduardo@habkost.net>,
	"Michael S. Tsirkin" <mst@redhat.com>,
	Marcel Apfelbaum <marcel.apfelbaum@gmail.com>,
	Song Gao <gaosong@loongson.cn>,
	Thomas Huth <huth@tuxfamily.org>,
	Laurent Vivier <laurent@vivier.eu>,
	Huacai Chen <chenhuacai@kernel.org>,
	Jiaxun Yang <jiaxun.yang@flygoat.com>,
	=?UTF-8?q?Herv=C3=A9=20Poussineau?= <hpoussin@reactos.org>,
	Aleksandar Rikalo <aleksandar.rikalo@syrmia.com>,
	Aurelien Jarno <aurelien@aurel32.net>,
	Jason Wang <jasowang@redhat.com>,
	Jia Liu <proljc@gmail.com>,
	Stafford Horne <shorne@gmail.com>,
	Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>,
	Nicholas Piggin <npiggin@gmail.com>,
	Daniel Henrique Barboza <danielhb413@gmail.com>,
	David Gibson <david@gibson.dropbear.id.au>,
	Harsh Prateek Bora <harshpb@linux.ibm.com>,
	Bin Meng <bin.meng@windriver.com>,
	Palmer Dabbelt <palmer@dabbelt.com>,
	Weiwei Li <liwei1518@gmail.com>,
	Liu Zhiwei <zhiwei_liu@linux.alibaba.com>,
	Halil Pasic <pasic@linux.ibm.com>,
	Christian Borntraeger <borntraeger@linux.ibm.com>,
	Eric Farman <farman@linux.ibm.com>,
	David Hildenbrand <david@redhat.com>,
	Ilya Leoshkevich <iii@linux.ibm.com>,
	Yoshinori Sato <ysato@users.sourceforge.jp>,
	Magnus Damm <magnus.damm@gmail.com>,
	Artyom Tarasenko <atar4qemu@gmail.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Anthony Perard <anthony.perard@citrix.com>,
	Paul Durrant <paul@xen.org>,
	Max Filippov <jcmvbkbc@gmail.com>,
	qemu-arm@nongnu.org,
	qemu-ppc@nongnu.org,
	qemu-riscv@nongnu.org,
	qemu-s390x@nongnu.org,
	xen-devel@lists.xenproject.org,
	David Woodhouse <dwmw@amazon.co.uk>
Subject: [PATCH v3 14/46] hw/mips/loongson3_virt: use pci_init_nic_devices()
Date: Mon,  8 Jan 2024 20:26:43 +0000
Message-ID: <20240108204909.564514-15-dwmw2@infradead.org>
X-Mailer: git-send-email 2.41.0
In-Reply-To: <20240108204909.564514-1-dwmw2@infradead.org>
References: <20240108204909.564514-1-dwmw2@infradead.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Sender: David Woodhouse <dwmw2@infradead.org>
X-SRS-Rewrite: SMTP reverse-path rewritten from <dwmw2@infradead.org> by casper.infradead.org. See http://www.infradead.org/rpr.html

From: David Woodhouse <dwmw@amazon.co.uk>

Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
---
 hw/mips/loongson3_virt.c | 4 +---
 1 file changed, 1 insertion(+), 3 deletions(-)

diff --git a/hw/mips/loongson3_virt.c b/hw/mips/loongson3_virt.c
index 33eae01eca..caedde2df0 100644
--- a/hw/mips/loongson3_virt.c
+++ b/hw/mips/loongson3_virt.c
@@ -451,9 +451,7 @@ static inline void loongson3_virt_devices_init(MachineState *machine,
         usb_create_simple(usb_bus_find(-1), "usb-tablet");
     }
 
-    for (i = 0; i < nb_nics; i++) {
-        pci_nic_init_nofail(&nd_table[i], pci_bus, mc->default_nic, NULL);
-    }
+    pci_init_nic_devices(pci_bus, mc->default_nic);
 }
 
 static void mips_loongson3_virt_init(MachineState *machine)
-- 
2.41.0



From xen-devel-bounces@lists.xenproject.org Mon Jan 08 20:51:09 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 08 Jan 2024 20:51:09 +0000
Received: from list by lists.xenproject.org with outflank-mailman.663904.1033887 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMwaR-0002GS-9L; Mon, 08 Jan 2024 20:51:07 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 663904.1033887; Mon, 08 Jan 2024 20:51:07 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMwaQ-0002Ei-SG; Mon, 08 Jan 2024 20:51:06 +0000
Received: by outflank-mailman (input) for mailman id 663904;
 Mon, 08 Jan 2024 20:51:04 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=NrlO=IS=casper.srs.infradead.org=BATV+41a72dc6539c0dfbbc31+7442+infradead.org+dwmw2@srs-se1.protection.inumbo.net>)
 id 1rMwaO-0000R6-8c
 for xen-devel@lists.xenproject.org; Mon, 08 Jan 2024 20:51:04 +0000
Received: from casper.infradead.org (casper.infradead.org
 [2001:8b0:10b:1236::1])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id a1629df7-ae67-11ee-9b0f-b553b5be7939;
 Mon, 08 Jan 2024 21:51:01 +0100 (CET)
Received: from [2001:8b0:10b:1::ebe] (helo=i7.infradead.org)
 by casper.infradead.org with esmtpsa (Exim 4.94.2 #2 (Red Hat Linux))
 id 1rMwYk-008RQ3-KA; Mon, 08 Jan 2024 20:49:23 +0000
Received: from dwoodhou by i7.infradead.org with local (Exim 4.96.2 #2 (Red
 Hat Linux)) id 1rMwYl-002NGS-0Y; Mon, 08 Jan 2024 20:49:23 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
X-Inumbo-ID: a1629df7-ae67-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=infradead.org; s=casper.20170209; h=Sender:Content-Transfer-Encoding:
	MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:
	Reply-To:Content-Type:Content-ID:Content-Description;
	bh=wozYunS9mL+E+NW7be8DLpB1Vtj79zSyr6dMjYfNaXI=; b=jcI3zWKyisQTWt932lF8taMSuX
	Fh58CKyE7nQO1wPJEhwKWAyAOihnTcN3D88J/0ElKQ04mAla5ZQvWXnaJKqK6nCkcTf4tPvJle/p/
	9CpBVgea3QhoLhn7gcat3RbTtqNqgSnxqw6uKNtJNt/tDXW5lCvqchHSrcRdot0vV4S2/SUWSCqCp
	+phQiHWjzINAILVomuhlMZGxsE2OAX1d3CBs8+xqtzNgA4sVpyrezcQeflHUo/inybz+jxsDChiqB
	Wg6i/u5ga2dtNc0038HhRYZdL7UsrzOb2pzE6aFKKrZWfn9LDsYF/a0C7xBenPqv32d2nHKcvUVR+
	a8xUQsFQ==;
From: David Woodhouse <dwmw2@infradead.org>
To: qemu-devel@nongnu.org
Cc: Richard Henderson <richard.henderson@linaro.org>,
	Beniamino Galvani <b.galvani@gmail.com>,
	Peter Maydell <peter.maydell@linaro.org>,
	Strahinja Jankovic <strahinja.p.jankovic@gmail.com>,
	Niek Linnenbank <nieklinnenbank@gmail.com>,
	=?UTF-8?q?C=C3=A9dric=20Le=20Goater?= <clg@kaod.org>,
	Andrew Jeffery <andrew@codeconstruct.com.au>,
	Joel Stanley <joel@jms.id.au>,
	Igor Mitsyanko <i.mitsyanko@gmail.com>,
	Jean-Christophe Dubois <jcd@tribudubois.net>,
	Andrey Smirnov <andrew.smirnov@gmail.com>,
	=?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= <philmd@linaro.org>,
	Rob Herring <robh@kernel.org>,
	Subbaraya Sundeep <sundeep.lkml@gmail.com>,
	Jan Kiszka <jan.kiszka@web.de>,
	Tyrone Ting <kfting@nuvoton.com>,
	Hao Wu <wuhaotsh@google.com>,
	Radoslaw Biernacki <rad@semihalf.com>,
	Leif Lindholm <quic_llindhol@quicinc.com>,
	Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org>,
	"Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
	Alistair Francis <alistair@alistair23.me>,
	Helge Deller <deller@gmx.de>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Eduardo Habkost <eduardo@habkost.net>,
	"Michael S. Tsirkin" <mst@redhat.com>,
	Marcel Apfelbaum <marcel.apfelbaum@gmail.com>,
	Song Gao <gaosong@loongson.cn>,
	Thomas Huth <huth@tuxfamily.org>,
	Laurent Vivier <laurent@vivier.eu>,
	Huacai Chen <chenhuacai@kernel.org>,
	Jiaxun Yang <jiaxun.yang@flygoat.com>,
	=?UTF-8?q?Herv=C3=A9=20Poussineau?= <hpoussin@reactos.org>,
	Aleksandar Rikalo <aleksandar.rikalo@syrmia.com>,
	Aurelien Jarno <aurelien@aurel32.net>,
	Jason Wang <jasowang@redhat.com>,
	Jia Liu <proljc@gmail.com>,
	Stafford Horne <shorne@gmail.com>,
	Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>,
	Nicholas Piggin <npiggin@gmail.com>,
	Daniel Henrique Barboza <danielhb413@gmail.com>,
	David Gibson <david@gibson.dropbear.id.au>,
	Harsh Prateek Bora <harshpb@linux.ibm.com>,
	Bin Meng <bin.meng@windriver.com>,
	Palmer Dabbelt <palmer@dabbelt.com>,
	Weiwei Li <liwei1518@gmail.com>,
	Liu Zhiwei <zhiwei_liu@linux.alibaba.com>,
	Halil Pasic <pasic@linux.ibm.com>,
	Christian Borntraeger <borntraeger@linux.ibm.com>,
	Eric Farman <farman@linux.ibm.com>,
	David Hildenbrand <david@redhat.com>,
	Ilya Leoshkevich <iii@linux.ibm.com>,
	Yoshinori Sato <ysato@users.sourceforge.jp>,
	Magnus Damm <magnus.damm@gmail.com>,
	Artyom Tarasenko <atar4qemu@gmail.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Anthony Perard <anthony.perard@citrix.com>,
	Paul Durrant <paul@xen.org>,
	Max Filippov <jcmvbkbc@gmail.com>,
	qemu-arm@nongnu.org,
	qemu-ppc@nongnu.org,
	qemu-riscv@nongnu.org,
	qemu-s390x@nongnu.org,
	xen-devel@lists.xenproject.org,
	David Woodhouse <dwmw@amazon.co.uk>
Subject: [PATCH v3 34/46] hw/microblaze: use qemu_configure_nic_device()
Date: Mon,  8 Jan 2024 20:27:03 +0000
Message-ID: <20240108204909.564514-35-dwmw2@infradead.org>
X-Mailer: git-send-email 2.41.0
In-Reply-To: <20240108204909.564514-1-dwmw2@infradead.org>
References: <20240108204909.564514-1-dwmw2@infradead.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Sender: David Woodhouse <dwmw2@infradead.org>
X-SRS-Rewrite: SMTP reverse-path rewritten from <dwmw2@infradead.org> by casper.infradead.org. See http://www.infradead.org/rpr.html

From: David Woodhouse <dwmw@amazon.co.uk>

Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
---
 hw/microblaze/petalogix_ml605_mmu.c      | 3 +--
 hw/microblaze/petalogix_s3adsp1800_mmu.c | 3 +--
 2 files changed, 2 insertions(+), 4 deletions(-)

diff --git a/hw/microblaze/petalogix_ml605_mmu.c b/hw/microblaze/petalogix_ml605_mmu.c
index fb7889cf67..0f5fabc32e 100644
--- a/hw/microblaze/petalogix_ml605_mmu.c
+++ b/hw/microblaze/petalogix_ml605_mmu.c
@@ -133,7 +133,6 @@ petalogix_ml605_init(MachineState *machine)
     sysbus_connect_irq(SYS_BUS_DEVICE(dev), 0, irq[TIMER_IRQ]);
 
     /* axi ethernet and dma initialization. */
-    qemu_check_nic_model(&nd_table[0], "xlnx.axi-ethernet");
     eth0 = qdev_new("xlnx.axi-ethernet");
     dma = qdev_new("xlnx.axi-dma");
 
@@ -145,7 +144,7 @@ petalogix_ml605_init(MachineState *machine)
                                   "axistream-connected-target", NULL);
     cs = object_property_get_link(OBJECT(dma),
                                   "axistream-control-connected-target", NULL);
-    qdev_set_nic_properties(eth0, &nd_table[0]);
+    qemu_configure_nic_device(eth0, true, NULL);
     qdev_prop_set_uint32(eth0, "rxmem", 0x1000);
     qdev_prop_set_uint32(eth0, "txmem", 0x1000);
     object_property_set_link(OBJECT(eth0), "axistream-connected", ds,
diff --git a/hw/microblaze/petalogix_s3adsp1800_mmu.c b/hw/microblaze/petalogix_s3adsp1800_mmu.c
index 505639c298..dad46bd7f9 100644
--- a/hw/microblaze/petalogix_s3adsp1800_mmu.c
+++ b/hw/microblaze/petalogix_s3adsp1800_mmu.c
@@ -114,9 +114,8 @@ petalogix_s3adsp1800_init(MachineState *machine)
     sysbus_mmio_map(SYS_BUS_DEVICE(dev), 0, TIMER_BASEADDR);
     sysbus_connect_irq(SYS_BUS_DEVICE(dev), 0, irq[TIMER_IRQ]);
 
-    qemu_check_nic_model(&nd_table[0], "xlnx.xps-ethernetlite");
     dev = qdev_new("xlnx.xps-ethernetlite");
-    qdev_set_nic_properties(dev, &nd_table[0]);
+    qemu_configure_nic_device(dev, true, NULL);
     qdev_prop_set_uint32(dev, "tx-ping-pong", 0);
     qdev_prop_set_uint32(dev, "rx-ping-pong", 0);
     sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal);
-- 
2.41.0



From xen-devel-bounces@lists.xenproject.org Mon Jan 08 20:51:09 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 08 Jan 2024 20:51:09 +0000
Received: from list by lists.xenproject.org with outflank-mailman.663902.1033869 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMwaQ-0001u5-0C; Mon, 08 Jan 2024 20:51:06 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 663902.1033869; Mon, 08 Jan 2024 20:51:05 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMwaP-0001s9-Lb; Mon, 08 Jan 2024 20:51:05 +0000
Received: by outflank-mailman (input) for mailman id 663902;
 Mon, 08 Jan 2024 20:51:03 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=NrlO=IS=casper.srs.infradead.org=BATV+41a72dc6539c0dfbbc31+7442+infradead.org+dwmw2@srs-se1.protection.inumbo.net>)
 id 1rMwaN-0000R6-FQ
 for xen-devel@lists.xenproject.org; Mon, 08 Jan 2024 20:51:03 +0000
Received: from casper.infradead.org (casper.infradead.org
 [2001:8b0:10b:1236::1])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id a14b5abd-ae67-11ee-9b0f-b553b5be7939;
 Mon, 08 Jan 2024 21:51:00 +0100 (CET)
Received: from [2001:8b0:10b:1::ebe] (helo=i7.infradead.org)
 by casper.infradead.org with esmtpsa (Exim 4.94.2 #2 (Red Hat Linux))
 id 1rMwYl-008RQB-0k; Mon, 08 Jan 2024 20:49:24 +0000
Received: from dwoodhou by i7.infradead.org with local (Exim 4.96.2 #2 (Red
 Hat Linux)) id 1rMwYl-002NHD-2V; Mon, 08 Jan 2024 20:49:23 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
X-Inumbo-ID: a14b5abd-ae67-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=infradead.org; s=casper.20170209; h=Sender:Content-Transfer-Encoding:
	MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:
	Reply-To:Content-Type:Content-ID:Content-Description;
	bh=EY5jroAc8MCOZn/iMIDqFzrV+uFS3P3alR9EbXNKjbA=; b=kZvFfEtvSc+2WEUAmbwYwJ2lf6
	n8j+9PM0udQh+tjnaMb1GwsyPhPSCYiqzXKZ+7ja9QUTfMQlnTW2SfL2SqdoPU7uU3Di5YUulChIC
	rXhFpsYJvt0S49LH4i0ZtFV5dkCCg34qbju1xyZqiAanXwwl30VSspYUIU+7pUX4t2aFjVvgUxeTb
	bA7SlVUUNU2eoRcHjR/CXFmztWLt/jep5BA7wh6iwy7v39gbQuIuSXCh7BoPdr1DOuSksAS5XfkoJ
	1eqszgX250rXa8lfMFslqU5axeaRGQT2jgL4/A86sUNrel0drthWPDkvI9FxZTbQEtvM1UMFGv0Hd
	65ij8Cnw==;
From: David Woodhouse <dwmw2@infradead.org>
To: qemu-devel@nongnu.org
Cc: Richard Henderson <richard.henderson@linaro.org>,
	Beniamino Galvani <b.galvani@gmail.com>,
	Peter Maydell <peter.maydell@linaro.org>,
	Strahinja Jankovic <strahinja.p.jankovic@gmail.com>,
	Niek Linnenbank <nieklinnenbank@gmail.com>,
	=?UTF-8?q?C=C3=A9dric=20Le=20Goater?= <clg@kaod.org>,
	Andrew Jeffery <andrew@codeconstruct.com.au>,
	Joel Stanley <joel@jms.id.au>,
	Igor Mitsyanko <i.mitsyanko@gmail.com>,
	Jean-Christophe Dubois <jcd@tribudubois.net>,
	Andrey Smirnov <andrew.smirnov@gmail.com>,
	=?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= <philmd@linaro.org>,
	Rob Herring <robh@kernel.org>,
	Subbaraya Sundeep <sundeep.lkml@gmail.com>,
	Jan Kiszka <jan.kiszka@web.de>,
	Tyrone Ting <kfting@nuvoton.com>,
	Hao Wu <wuhaotsh@google.com>,
	Radoslaw Biernacki <rad@semihalf.com>,
	Leif Lindholm <quic_llindhol@quicinc.com>,
	Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org>,
	"Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
	Alistair Francis <alistair@alistair23.me>,
	Helge Deller <deller@gmx.de>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Eduardo Habkost <eduardo@habkost.net>,
	"Michael S. Tsirkin" <mst@redhat.com>,
	Marcel Apfelbaum <marcel.apfelbaum@gmail.com>,
	Song Gao <gaosong@loongson.cn>,
	Thomas Huth <huth@tuxfamily.org>,
	Laurent Vivier <laurent@vivier.eu>,
	Huacai Chen <chenhuacai@kernel.org>,
	Jiaxun Yang <jiaxun.yang@flygoat.com>,
	=?UTF-8?q?Herv=C3=A9=20Poussineau?= <hpoussin@reactos.org>,
	Aleksandar Rikalo <aleksandar.rikalo@syrmia.com>,
	Aurelien Jarno <aurelien@aurel32.net>,
	Jason Wang <jasowang@redhat.com>,
	Jia Liu <proljc@gmail.com>,
	Stafford Horne <shorne@gmail.com>,
	Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>,
	Nicholas Piggin <npiggin@gmail.com>,
	Daniel Henrique Barboza <danielhb413@gmail.com>,
	David Gibson <david@gibson.dropbear.id.au>,
	Harsh Prateek Bora <harshpb@linux.ibm.com>,
	Bin Meng <bin.meng@windriver.com>,
	Palmer Dabbelt <palmer@dabbelt.com>,
	Weiwei Li <liwei1518@gmail.com>,
	Liu Zhiwei <zhiwei_liu@linux.alibaba.com>,
	Halil Pasic <pasic@linux.ibm.com>,
	Christian Borntraeger <borntraeger@linux.ibm.com>,
	Eric Farman <farman@linux.ibm.com>,
	David Hildenbrand <david@redhat.com>,
	Ilya Leoshkevich <iii@linux.ibm.com>,
	Yoshinori Sato <ysato@users.sourceforge.jp>,
	Magnus Damm <magnus.damm@gmail.com>,
	Artyom Tarasenko <atar4qemu@gmail.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Anthony Perard <anthony.perard@citrix.com>,
	Paul Durrant <paul@xen.org>,
	Max Filippov <jcmvbkbc@gmail.com>,
	qemu-arm@nongnu.org,
	qemu-ppc@nongnu.org,
	qemu-riscv@nongnu.org,
	qemu-s390x@nongnu.org,
	xen-devel@lists.xenproject.org,
	David Woodhouse <dwmw@amazon.co.uk>
Subject: [PATCH v3 43/46] net: remove qemu_check_nic_model()
Date: Mon,  8 Jan 2024 20:27:12 +0000
Message-ID: <20240108204909.564514-44-dwmw2@infradead.org>
X-Mailer: git-send-email 2.41.0
In-Reply-To: <20240108204909.564514-1-dwmw2@infradead.org>
References: <20240108204909.564514-1-dwmw2@infradead.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Sender: David Woodhouse <dwmw2@infradead.org>
X-SRS-Rewrite: SMTP reverse-path rewritten from <dwmw2@infradead.org> by casper.infradead.org. See http://www.infradead.org/rpr.html

From: David Woodhouse <dwmw@amazon.co.uk>

Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
---
 include/net/net.h |  1 -
 net/net.c         | 13 -------------
 2 files changed, 14 deletions(-)

diff --git a/include/net/net.h b/include/net/net.h
index 31e63d1f0d..1be8b40074 100644
--- a/include/net/net.h
+++ b/include/net/net.h
@@ -204,7 +204,6 @@ int qemu_set_vnet_le(NetClientState *nc, bool is_le);
 int qemu_set_vnet_be(NetClientState *nc, bool is_be);
 void qemu_macaddr_default_if_unset(MACAddr *macaddr);
 int qemu_show_nic_models(const char *arg, const char *const *models);
-void qemu_check_nic_model(NICInfo *nd, const char *model);
 int qemu_find_nic_model(NICInfo *nd, const char * const *models,
                         const char *default_model);
 NICInfo *qemu_find_nic_info(const char *typename, bool match_default,
diff --git a/net/net.c b/net/net.c
index 4651b3f443..ffd4b42d5a 100644
--- a/net/net.c
+++ b/net/net.c
@@ -992,19 +992,6 @@ int qemu_show_nic_models(const char *arg, const char *const *models)
     return 1;
 }
 
-void qemu_check_nic_model(NICInfo *nd, const char *model)
-{
-    const char *models[2];
-
-    models[0] = model;
-    models[1] = NULL;
-
-    if (qemu_show_nic_models(nd->model, models))
-        exit(0);
-    if (qemu_find_nic_model(nd, models, model) < 0)
-        exit(1);
-}
-
 int qemu_find_nic_model(NICInfo *nd, const char * const *models,
                         const char *default_model)
 {
-- 
2.41.0



From xen-devel-bounces@lists.xenproject.org Mon Jan 08 20:51:09 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 08 Jan 2024 20:51:09 +0000
Received: from list by lists.xenproject.org with outflank-mailman.663895.1033810 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMwaM-0000ft-4l; Mon, 08 Jan 2024 20:51:02 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 663895.1033810; Mon, 08 Jan 2024 20:51:02 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMwaM-0000fm-1k; Mon, 08 Jan 2024 20:51:02 +0000
Received: by outflank-mailman (input) for mailman id 663895;
 Mon, 08 Jan 2024 20:51:00 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=NrlO=IS=casper.srs.infradead.org=BATV+41a72dc6539c0dfbbc31+7442+infradead.org+dwmw2@srs-se1.protection.inumbo.net>)
 id 1rMwaH-0000R5-Sy
 for xen-devel@lists.xenproject.org; Mon, 08 Jan 2024 20:51:00 +0000
Received: from casper.infradead.org (casper.infradead.org
 [2001:8b0:10b:1236::1])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 9c90016c-ae67-11ee-98ef-6d05b1d4d9a1;
 Mon, 08 Jan 2024 21:50:55 +0100 (CET)
Received: from [2001:8b0:10b:1::ebe] (helo=i7.infradead.org)
 by casper.infradead.org with esmtpsa (Exim 4.94.2 #2 (Red Hat Linux))
 id 1rMwYj-008RPk-Eb; Mon, 08 Jan 2024 20:49:22 +0000
Received: from dwoodhou by i7.infradead.org with local (Exim 4.96.2 #2 (Red
 Hat Linux)) id 1rMwYk-002NFK-0N; Mon, 08 Jan 2024 20:49:22 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
X-Inumbo-ID: 9c90016c-ae67-11ee-98ef-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=infradead.org; s=casper.20170209; h=Sender:Content-Transfer-Encoding:
	MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:
	Reply-To:Content-Type:Content-ID:Content-Description;
	bh=uwihplmHUI41+5Uemb4Oxlu9ois5VtdRK79kjClcmBs=; b=p6PgkNTxfh/p47j/keEJ/zN+yy
	usNAJIuqKp+Gu+QP+icK0HMBABsDJM88pOLXEG+UOnzlMuTCJYGnl9lfzioInaE5WmKW9ZayfCMR8
	PmUccMmmi670kLW4xnA7apD0p5dseWRD4ul//kN4FMyNcO/QiaKm7Md1DDvABPcQM00o7EXuuJaI0
	vjZpm36GvwmHLRnNt/X/uZn2ItRuKA5dZz7vhBbDmM4W6Co2I/uCyJEbunG4sYrE+L+LrJQqOd4cF
	ADsNugDqU0atiRLlo+JrOpPGiuRRI1gTRVn3DBWL3ltG+G3rXbqQ0NHYdQmwTFwn7+2jTUPePMfaU
	GAl/ul8w==;
From: David Woodhouse <dwmw2@infradead.org>
To: qemu-devel@nongnu.org
Cc: Richard Henderson <richard.henderson@linaro.org>,
	Beniamino Galvani <b.galvani@gmail.com>,
	Peter Maydell <peter.maydell@linaro.org>,
	Strahinja Jankovic <strahinja.p.jankovic@gmail.com>,
	Niek Linnenbank <nieklinnenbank@gmail.com>,
	=?UTF-8?q?C=C3=A9dric=20Le=20Goater?= <clg@kaod.org>,
	Andrew Jeffery <andrew@codeconstruct.com.au>,
	Joel Stanley <joel@jms.id.au>,
	Igor Mitsyanko <i.mitsyanko@gmail.com>,
	Jean-Christophe Dubois <jcd@tribudubois.net>,
	Andrey Smirnov <andrew.smirnov@gmail.com>,
	=?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= <philmd@linaro.org>,
	Rob Herring <robh@kernel.org>,
	Subbaraya Sundeep <sundeep.lkml@gmail.com>,
	Jan Kiszka <jan.kiszka@web.de>,
	Tyrone Ting <kfting@nuvoton.com>,
	Hao Wu <wuhaotsh@google.com>,
	Radoslaw Biernacki <rad@semihalf.com>,
	Leif Lindholm <quic_llindhol@quicinc.com>,
	Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org>,
	"Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
	Alistair Francis <alistair@alistair23.me>,
	Helge Deller <deller@gmx.de>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Eduardo Habkost <eduardo@habkost.net>,
	"Michael S. Tsirkin" <mst@redhat.com>,
	Marcel Apfelbaum <marcel.apfelbaum@gmail.com>,
	Song Gao <gaosong@loongson.cn>,
	Thomas Huth <huth@tuxfamily.org>,
	Laurent Vivier <laurent@vivier.eu>,
	Huacai Chen <chenhuacai@kernel.org>,
	Jiaxun Yang <jiaxun.yang@flygoat.com>,
	=?UTF-8?q?Herv=C3=A9=20Poussineau?= <hpoussin@reactos.org>,
	Aleksandar Rikalo <aleksandar.rikalo@syrmia.com>,
	Aurelien Jarno <aurelien@aurel32.net>,
	Jason Wang <jasowang@redhat.com>,
	Jia Liu <proljc@gmail.com>,
	Stafford Horne <shorne@gmail.com>,
	Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>,
	Nicholas Piggin <npiggin@gmail.com>,
	Daniel Henrique Barboza <danielhb413@gmail.com>,
	David Gibson <david@gibson.dropbear.id.au>,
	Harsh Prateek Bora <harshpb@linux.ibm.com>,
	Bin Meng <bin.meng@windriver.com>,
	Palmer Dabbelt <palmer@dabbelt.com>,
	Weiwei Li <liwei1518@gmail.com>,
	Liu Zhiwei <zhiwei_liu@linux.alibaba.com>,
	Halil Pasic <pasic@linux.ibm.com>,
	Christian Borntraeger <borntraeger@linux.ibm.com>,
	Eric Farman <farman@linux.ibm.com>,
	David Hildenbrand <david@redhat.com>,
	Ilya Leoshkevich <iii@linux.ibm.com>,
	Yoshinori Sato <ysato@users.sourceforge.jp>,
	Magnus Damm <magnus.damm@gmail.com>,
	Artyom Tarasenko <atar4qemu@gmail.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Anthony Perard <anthony.perard@citrix.com>,
	Paul Durrant <paul@xen.org>,
	Max Filippov <jcmvbkbc@gmail.com>,
	qemu-arm@nongnu.org,
	qemu-ppc@nongnu.org,
	qemu-riscv@nongnu.org,
	qemu-s390x@nongnu.org,
	xen-devel@lists.xenproject.org,
	David Woodhouse <dwmw@amazon.co.uk>
Subject: [PATCH v3 20/46] hw/xtensa/virt: use pci_init_nic_devices()
Date: Mon,  8 Jan 2024 20:26:49 +0000
Message-ID: <20240108204909.564514-21-dwmw2@infradead.org>
X-Mailer: git-send-email 2.41.0
In-Reply-To: <20240108204909.564514-1-dwmw2@infradead.org>
References: <20240108204909.564514-1-dwmw2@infradead.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Sender: David Woodhouse <dwmw2@infradead.org>
X-SRS-Rewrite: SMTP reverse-path rewritten from <dwmw2@infradead.org> by casper.infradead.org. See http://www.infradead.org/rpr.html

From: David Woodhouse <dwmw@amazon.co.uk>

Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
---
 hw/xtensa/virt.c | 4 +---
 1 file changed, 1 insertion(+), 3 deletions(-)

diff --git a/hw/xtensa/virt.c b/hw/xtensa/virt.c
index a6cf646e99..5310a88861 100644
--- a/hw/xtensa/virt.c
+++ b/hw/xtensa/virt.c
@@ -102,9 +102,7 @@ static void create_pcie(MachineState *ms, CPUXtensaState *env, int irq_base,
 
     pci = PCI_HOST_BRIDGE(dev);
     if (pci->bus) {
-        for (i = 0; i < nb_nics; i++) {
-            pci_nic_init_nofail(&nd_table[i], pci->bus, mc->default_nic, NULL);
-        }
+        pci_init_nic_devices(pci->bus, mc->default_nic);
     }
 }
 
-- 
2.41.0



From xen-devel-bounces@lists.xenproject.org Mon Jan 08 20:51:09 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 08 Jan 2024 20:51:09 +0000
Received: from list by lists.xenproject.org with outflank-mailman.663897.1033821 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMwaM-0000r4-PV; Mon, 08 Jan 2024 20:51:02 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 663897.1033821; Mon, 08 Jan 2024 20:51:02 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMwaM-0000pz-Lf; Mon, 08 Jan 2024 20:51:02 +0000
Received: by outflank-mailman (input) for mailman id 663897;
 Mon, 08 Jan 2024 20:51:01 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=CNLN=IS=desiato.srs.infradead.org=BATV+a33e3d7a5f0474923369+7442+infradead.org+dwmw2@srs-se1.protection.inumbo.net>)
 id 1rMwaK-0000R6-TR
 for xen-devel@lists.xenproject.org; Mon, 08 Jan 2024 20:51:01 +0000
Received: from desiato.infradead.org (desiato.infradead.org
 [2001:8b0:10b:1:d65d:64ff:fe57:4e05])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 9e96adb0-ae67-11ee-9b0f-b553b5be7939;
 Mon, 08 Jan 2024 21:50:58 +0100 (CET)
Received: from [2001:8b0:10b:1::ebe] (helo=i7.infradead.org)
 by desiato.infradead.org with esmtpsa (Exim 4.96 #2 (Red Hat Linux))
 id 1rMwYj-007wXP-2m; Mon, 08 Jan 2024 20:49:22 +0000
Received: from dwoodhou by i7.infradead.org with local (Exim 4.96.2 #2 (Red
 Hat Linux)) id 1rMwYj-002NEe-1A; Mon, 08 Jan 2024 20:49:21 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
X-Inumbo-ID: 9e96adb0-ae67-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=infradead.org; s=desiato.20200630; h=Sender:Content-Transfer-Encoding:
	MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:
	Reply-To:Content-Type:Content-ID:Content-Description;
	bh=nQ3rktK8dEdIEwAMeeCC6bqdVVt9BSYkg4MRVTEfqOM=; b=bGBRXYSbyRkskdXWh6m971dJdP
	5XIzUANuHbkSZaFKWvwYPX45SbDNG5Fp0a3TOesDsQ33yypvAO9Gi6u/0HEdR431TkjP7mk7K4Owp
	/InUIPomiJAIvxOJdUaPkJ0/3jWUkebXuphh9ozi6hfKvahJI7sx0LZ0dBk9hueidmt0lg6F4KUDh
	6oLeCH7TDfP4T2HQ1qvRFGGNuPScQKbTgqryBva7FULnF52zKDcH4zrQvWY8+k/ImNsKHXBzRpLx/
	vxaDexMsh4s2s1HV0EAaK8/YK8elERa4drs1WpWoMFzMXeFozgiifA/NpPu3cBnTFcbfZultK2uoE
	JvzSk6Dg==;
From: David Woodhouse <dwmw2@infradead.org>
To: qemu-devel@nongnu.org
Cc: Richard Henderson <richard.henderson@linaro.org>,
	Beniamino Galvani <b.galvani@gmail.com>,
	Peter Maydell <peter.maydell@linaro.org>,
	Strahinja Jankovic <strahinja.p.jankovic@gmail.com>,
	Niek Linnenbank <nieklinnenbank@gmail.com>,
	=?UTF-8?q?C=C3=A9dric=20Le=20Goater?= <clg@kaod.org>,
	Andrew Jeffery <andrew@codeconstruct.com.au>,
	Joel Stanley <joel@jms.id.au>,
	Igor Mitsyanko <i.mitsyanko@gmail.com>,
	Jean-Christophe Dubois <jcd@tribudubois.net>,
	Andrey Smirnov <andrew.smirnov@gmail.com>,
	=?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= <philmd@linaro.org>,
	Rob Herring <robh@kernel.org>,
	Subbaraya Sundeep <sundeep.lkml@gmail.com>,
	Jan Kiszka <jan.kiszka@web.de>,
	Tyrone Ting <kfting@nuvoton.com>,
	Hao Wu <wuhaotsh@google.com>,
	Radoslaw Biernacki <rad@semihalf.com>,
	Leif Lindholm <quic_llindhol@quicinc.com>,
	Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org>,
	"Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
	Alistair Francis <alistair@alistair23.me>,
	Helge Deller <deller@gmx.de>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Eduardo Habkost <eduardo@habkost.net>,
	"Michael S. Tsirkin" <mst@redhat.com>,
	Marcel Apfelbaum <marcel.apfelbaum@gmail.com>,
	Song Gao <gaosong@loongson.cn>,
	Thomas Huth <huth@tuxfamily.org>,
	Laurent Vivier <laurent@vivier.eu>,
	Huacai Chen <chenhuacai@kernel.org>,
	Jiaxun Yang <jiaxun.yang@flygoat.com>,
	=?UTF-8?q?Herv=C3=A9=20Poussineau?= <hpoussin@reactos.org>,
	Aleksandar Rikalo <aleksandar.rikalo@syrmia.com>,
	Aurelien Jarno <aurelien@aurel32.net>,
	Jason Wang <jasowang@redhat.com>,
	Jia Liu <proljc@gmail.com>,
	Stafford Horne <shorne@gmail.com>,
	Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>,
	Nicholas Piggin <npiggin@gmail.com>,
	Daniel Henrique Barboza <danielhb413@gmail.com>,
	David Gibson <david@gibson.dropbear.id.au>,
	Harsh Prateek Bora <harshpb@linux.ibm.com>,
	Bin Meng <bin.meng@windriver.com>,
	Palmer Dabbelt <palmer@dabbelt.com>,
	Weiwei Li <liwei1518@gmail.com>,
	Liu Zhiwei <zhiwei_liu@linux.alibaba.com>,
	Halil Pasic <pasic@linux.ibm.com>,
	Christian Borntraeger <borntraeger@linux.ibm.com>,
	Eric Farman <farman@linux.ibm.com>,
	David Hildenbrand <david@redhat.com>,
	Ilya Leoshkevich <iii@linux.ibm.com>,
	Yoshinori Sato <ysato@users.sourceforge.jp>,
	Magnus Damm <magnus.damm@gmail.com>,
	Artyom Tarasenko <atar4qemu@gmail.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Anthony Perard <anthony.perard@citrix.com>,
	Paul Durrant <paul@xen.org>,
	Max Filippov <jcmvbkbc@gmail.com>,
	qemu-arm@nongnu.org,
	qemu-ppc@nongnu.org,
	qemu-riscv@nongnu.org,
	qemu-s390x@nongnu.org,
	xen-devel@lists.xenproject.org,
	David Woodhouse <dwmw@amazon.co.uk>
Subject: [PATCH v3 11/46] hw/loongarch: use pci_init_nic_devices()
Date: Mon,  8 Jan 2024 20:26:40 +0000
Message-ID: <20240108204909.564514-12-dwmw2@infradead.org>
X-Mailer: git-send-email 2.41.0
In-Reply-To: <20240108204909.564514-1-dwmw2@infradead.org>
References: <20240108204909.564514-1-dwmw2@infradead.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Sender: David Woodhouse <dwmw2@infradead.org>
X-SRS-Rewrite: SMTP reverse-path rewritten from <dwmw2@infradead.org> by desiato.infradead.org. See http://www.infradead.org/rpr.html

From: David Woodhouse <dwmw@amazon.co.uk>

Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
---
 hw/loongarch/virt.c | 4 +---
 1 file changed, 1 insertion(+), 3 deletions(-)

diff --git a/hw/loongarch/virt.c b/hw/loongarch/virt.c
index 4b7dc67a2d..c48804ac38 100644
--- a/hw/loongarch/virt.c
+++ b/hw/loongarch/virt.c
@@ -504,9 +504,7 @@ static void loongarch_devices_init(DeviceState *pch_pic, LoongArchMachineState *
     fdt_add_uart_node(lams);
 
     /* Network init */
-    for (i = 0; i < nb_nics; i++) {
-        pci_nic_init_nofail(&nd_table[i], pci_bus, mc->default_nic, NULL);
-    }
+    pci_init_nic_devices(pci_bus, mc->default_nic);
 
     /*
      * There are some invalid guest memory access.
-- 
2.41.0



From xen-devel-bounces@lists.xenproject.org Mon Jan 08 20:51:09 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 08 Jan 2024 20:51:09 +0000
Received: from list by lists.xenproject.org with outflank-mailman.663906.1033900 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMwaS-0002hz-GC; Mon, 08 Jan 2024 20:51:08 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 663906.1033900; Mon, 08 Jan 2024 20:51:08 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMwaS-0002fu-7Q; Mon, 08 Jan 2024 20:51:08 +0000
Received: by outflank-mailman (input) for mailman id 663906;
 Mon, 08 Jan 2024 20:51:05 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=NrlO=IS=casper.srs.infradead.org=BATV+41a72dc6539c0dfbbc31+7442+infradead.org+dwmw2@srs-se1.protection.inumbo.net>)
 id 1rMwaP-0000R6-8w
 for xen-devel@lists.xenproject.org; Mon, 08 Jan 2024 20:51:05 +0000
Received: from casper.infradead.org (casper.infradead.org
 [2001:8b0:10b:1236::1])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id a24ba91e-ae67-11ee-9b0f-b553b5be7939;
 Mon, 08 Jan 2024 21:51:02 +0100 (CET)
Received: from [2001:8b0:10b:1::ebe] (helo=i7.infradead.org)
 by casper.infradead.org with esmtpsa (Exim 4.94.2 #2 (Red Hat Linux))
 id 1rMwYj-008RPl-Eh; Mon, 08 Jan 2024 20:49:22 +0000
Received: from dwoodhou by i7.infradead.org with local (Exim 4.96.2 #2 (Red
 Hat Linux)) id 1rMwYk-002NFO-0e; Mon, 08 Jan 2024 20:49:22 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
X-Inumbo-ID: a24ba91e-ae67-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=infradead.org; s=casper.20170209; h=Sender:Content-Transfer-Encoding:
	MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:
	Reply-To:Content-Type:Content-ID:Content-Description;
	bh=hIoRnAOMf4YLSnQadmaBzYXHMtK98X95ymuChZmuyOk=; b=nfxsfbqV1CHr1yheFZqmqLuDWj
	OkCLvnwbhPHn2IVSnOAZlJcmn3l++D3kgPeT6bXOqWCPoFwuMqq4di8mfLBX9m3NESJ0NiMZJVYdY
	A+OO59fTIAzChlNUEYpim+kMzrYnSgEY8y8oqz6pB2juLoGEPrW9WE6gQOiWcl6UaumHGjhLukdLn
	xW/kDvmrsqXhVWnlafADfHvUWavzvCPo/+D9N2eKUEPzFC5ayE9nYyc8LtXHw/KOj0WfTVgx3v14M
	o93mKqGsZVbRFaHaToR+1JuwA6mCR6EY/rPI2QAFvSMx7dqTsPo0o2ktlvxJnt7wd9L3Toaw3Ejlo
	tAby7F6Q==;
From: David Woodhouse <dwmw2@infradead.org>
To: qemu-devel@nongnu.org
Cc: Richard Henderson <richard.henderson@linaro.org>,
	Beniamino Galvani <b.galvani@gmail.com>,
	Peter Maydell <peter.maydell@linaro.org>,
	Strahinja Jankovic <strahinja.p.jankovic@gmail.com>,
	Niek Linnenbank <nieklinnenbank@gmail.com>,
	=?UTF-8?q?C=C3=A9dric=20Le=20Goater?= <clg@kaod.org>,
	Andrew Jeffery <andrew@codeconstruct.com.au>,
	Joel Stanley <joel@jms.id.au>,
	Igor Mitsyanko <i.mitsyanko@gmail.com>,
	Jean-Christophe Dubois <jcd@tribudubois.net>,
	Andrey Smirnov <andrew.smirnov@gmail.com>,
	=?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= <philmd@linaro.org>,
	Rob Herring <robh@kernel.org>,
	Subbaraya Sundeep <sundeep.lkml@gmail.com>,
	Jan Kiszka <jan.kiszka@web.de>,
	Tyrone Ting <kfting@nuvoton.com>,
	Hao Wu <wuhaotsh@google.com>,
	Radoslaw Biernacki <rad@semihalf.com>,
	Leif Lindholm <quic_llindhol@quicinc.com>,
	Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org>,
	"Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
	Alistair Francis <alistair@alistair23.me>,
	Helge Deller <deller@gmx.de>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Eduardo Habkost <eduardo@habkost.net>,
	"Michael S. Tsirkin" <mst@redhat.com>,
	Marcel Apfelbaum <marcel.apfelbaum@gmail.com>,
	Song Gao <gaosong@loongson.cn>,
	Thomas Huth <huth@tuxfamily.org>,
	Laurent Vivier <laurent@vivier.eu>,
	Huacai Chen <chenhuacai@kernel.org>,
	Jiaxun Yang <jiaxun.yang@flygoat.com>,
	=?UTF-8?q?Herv=C3=A9=20Poussineau?= <hpoussin@reactos.org>,
	Aleksandar Rikalo <aleksandar.rikalo@syrmia.com>,
	Aurelien Jarno <aurelien@aurel32.net>,
	Jason Wang <jasowang@redhat.com>,
	Jia Liu <proljc@gmail.com>,
	Stafford Horne <shorne@gmail.com>,
	Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>,
	Nicholas Piggin <npiggin@gmail.com>,
	Daniel Henrique Barboza <danielhb413@gmail.com>,
	David Gibson <david@gibson.dropbear.id.au>,
	Harsh Prateek Bora <harshpb@linux.ibm.com>,
	Bin Meng <bin.meng@windriver.com>,
	Palmer Dabbelt <palmer@dabbelt.com>,
	Weiwei Li <liwei1518@gmail.com>,
	Liu Zhiwei <zhiwei_liu@linux.alibaba.com>,
	Halil Pasic <pasic@linux.ibm.com>,
	Christian Borntraeger <borntraeger@linux.ibm.com>,
	Eric Farman <farman@linux.ibm.com>,
	David Hildenbrand <david@redhat.com>,
	Ilya Leoshkevich <iii@linux.ibm.com>,
	Yoshinori Sato <ysato@users.sourceforge.jp>,
	Magnus Damm <magnus.damm@gmail.com>,
	Artyom Tarasenko <atar4qemu@gmail.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Anthony Perard <anthony.perard@citrix.com>,
	Paul Durrant <paul@xen.org>,
	Max Filippov <jcmvbkbc@gmail.com>,
	qemu-arm@nongnu.org,
	qemu-ppc@nongnu.org,
	qemu-riscv@nongnu.org,
	qemu-s390x@nongnu.org,
	xen-devel@lists.xenproject.org,
	David Woodhouse <dwmw@amazon.co.uk>
Subject: [PATCH v3 21/46] hw/arm/allwinner: use qemu_configure_nic_device()
Date: Mon,  8 Jan 2024 20:26:50 +0000
Message-ID: <20240108204909.564514-22-dwmw2@infradead.org>
X-Mailer: git-send-email 2.41.0
In-Reply-To: <20240108204909.564514-1-dwmw2@infradead.org>
References: <20240108204909.564514-1-dwmw2@infradead.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Sender: David Woodhouse <dwmw2@infradead.org>
X-SRS-Rewrite: SMTP reverse-path rewritten from <dwmw2@infradead.org> by casper.infradead.org. See http://www.infradead.org/rpr.html

From: David Woodhouse <dwmw@amazon.co.uk>

Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
---
 hw/arm/allwinner-a10.c |  6 +-----
 hw/arm/allwinner-h3.c  |  6 +-----
 hw/arm/allwinner-r40.c | 27 ++-------------------------
 3 files changed, 4 insertions(+), 35 deletions(-)

diff --git a/hw/arm/allwinner-a10.c b/hw/arm/allwinner-a10.c
index b0ea3f7f66..57f52871ec 100644
--- a/hw/arm/allwinner-a10.c
+++ b/hw/arm/allwinner-a10.c
@@ -142,11 +142,7 @@ static void aw_a10_realize(DeviceState *dev, Error **errp)
     sysbus_realize(SYS_BUS_DEVICE(&s->dramc), &error_fatal);
     sysbus_mmio_map(SYS_BUS_DEVICE(&s->dramc), 0, AW_A10_DRAMC_BASE);
 
-    /* FIXME use qdev NIC properties instead of nd_table[] */
-    if (nd_table[0].used) {
-        qemu_check_nic_model(&nd_table[0], TYPE_AW_EMAC);
-        qdev_set_nic_properties(DEVICE(&s->emac), &nd_table[0]);
-    }
+    qemu_configure_nic_device(DEVICE(&s->emac), true, NULL);
     if (!sysbus_realize(SYS_BUS_DEVICE(&s->emac), errp)) {
         return;
     }
diff --git a/hw/arm/allwinner-h3.c b/hw/arm/allwinner-h3.c
index f05afddf7e..4f102ad082 100644
--- a/hw/arm/allwinner-h3.c
+++ b/hw/arm/allwinner-h3.c
@@ -369,11 +369,7 @@ static void allwinner_h3_realize(DeviceState *dev, Error **errp)
                               "sd-bus");
 
     /* EMAC */
-    /* FIXME use qdev NIC properties instead of nd_table[] */
-    if (nd_table[0].used) {
-        qemu_check_nic_model(&nd_table[0], TYPE_AW_SUN8I_EMAC);
-        qdev_set_nic_properties(DEVICE(&s->emac), &nd_table[0]);
-    }
+    qemu_configure_nic_device(DEVICE(&s->emac), true, NULL);
     object_property_set_link(OBJECT(&s->emac), "dma-memory",
                              OBJECT(get_system_memory()), &error_fatal);
     sysbus_realize(SYS_BUS_DEVICE(&s->emac), &error_fatal);
diff --git a/hw/arm/allwinner-r40.c b/hw/arm/allwinner-r40.c
index a0d367c60d..4d5661b014 100644
--- a/hw/arm/allwinner-r40.c
+++ b/hw/arm/allwinner-r40.c
@@ -294,7 +294,6 @@ static void allwinner_r40_init(Object *obj)
 
 static void allwinner_r40_realize(DeviceState *dev, Error **errp)
 {
-    const char *r40_nic_models[] = { "gmac", "emac", NULL };
     AwR40State *s = AW_R40(dev);
 
     /* CPUs */
@@ -454,31 +453,8 @@ static void allwinner_r40_realize(DeviceState *dev, Error **errp)
     sysbus_mmio_map(SYS_BUS_DEVICE(&s->dramc), 2,
                     s->memmap[AW_R40_DEV_DRAMPHY]);
 
-    /* nic support gmac and emac */
-    for (int i = 0; i < ARRAY_SIZE(r40_nic_models) - 1; i++) {
-        NICInfo *nic = &nd_table[i];
-
-        if (!nic->used) {
-            continue;
-        }
-        if (qemu_show_nic_models(nic->model, r40_nic_models)) {
-            exit(0);
-        }
-
-        switch (qemu_find_nic_model(nic, r40_nic_models, r40_nic_models[0])) {
-        case 0: /* gmac */
-            qdev_set_nic_properties(DEVICE(&s->gmac), nic);
-            break;
-        case 1: /* emac */
-            qdev_set_nic_properties(DEVICE(&s->emac), nic);
-            break;
-        default:
-            exit(1);
-            break;
-        }
-    }
-
     /* GMAC */
+    qemu_configure_nic_device(DEVICE(&s->gmac), true, "gmac");
     object_property_set_link(OBJECT(&s->gmac), "dma-memory",
                                      OBJECT(get_system_memory()), &error_fatal);
     sysbus_realize(SYS_BUS_DEVICE(&s->gmac), &error_fatal);
@@ -487,6 +463,7 @@ static void allwinner_r40_realize(DeviceState *dev, Error **errp)
                        qdev_get_gpio_in(DEVICE(&s->gic), AW_R40_GIC_SPI_GMAC));
 
     /* EMAC */
+    qemu_configure_nic_device(DEVICE(&s->emac), true, "emac");
     sysbus_realize(SYS_BUS_DEVICE(&s->emac), &error_fatal);
     sysbus_mmio_map(SYS_BUS_DEVICE(&s->emac), 0, s->memmap[AW_R40_DEV_EMAC]);
     sysbus_connect_irq(SYS_BUS_DEVICE(&s->emac), 0,
-- 
2.41.0



From xen-devel-bounces@lists.xenproject.org Mon Jan 08 20:51:09 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 08 Jan 2024 20:51:09 +0000
Received: from list by lists.xenproject.org with outflank-mailman.663898.1033829 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMwaN-0000yU-6l; Mon, 08 Jan 2024 20:51:03 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 663898.1033829; Mon, 08 Jan 2024 20:51:03 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMwaM-0000wA-TU; Mon, 08 Jan 2024 20:51:02 +0000
Received: by outflank-mailman (input) for mailman id 663898;
 Mon, 08 Jan 2024 20:51:01 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=CNLN=IS=desiato.srs.infradead.org=BATV+a33e3d7a5f0474923369+7442+infradead.org+dwmw2@srs-se1.protection.inumbo.net>)
 id 1rMwaL-0000R6-Kr
 for xen-devel@lists.xenproject.org; Mon, 08 Jan 2024 20:51:01 +0000
Received: from desiato.infradead.org (desiato.infradead.org
 [2001:8b0:10b:1:d65d:64ff:fe57:4e05])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 9fc9b7e1-ae67-11ee-9b0f-b553b5be7939;
 Mon, 08 Jan 2024 21:50:58 +0100 (CET)
Received: from [2001:8b0:10b:1::ebe] (helo=i7.infradead.org)
 by desiato.infradead.org with esmtpsa (Exim 4.96 #2 (Red Hat Linux))
 id 1rMwYj-007wXO-2l; Mon, 08 Jan 2024 20:49:22 +0000
Received: from dwoodhou by i7.infradead.org with local (Exim 4.96.2 #2 (Red
 Hat Linux)) id 1rMwYj-002NEa-0w; Mon, 08 Jan 2024 20:49:21 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
X-Inumbo-ID: 9fc9b7e1-ae67-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=infradead.org; s=desiato.20200630; h=Sender:Content-Transfer-Encoding:
	MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:
	Reply-To:Content-Type:Content-ID:Content-Description;
	bh=OnWPh5hbzzJOk4js2nxRTuG9hB5F2v55vySQRb6M4tk=; b=eM4ZffAn4bADdkBWEqoCKrgnIf
	zU48GV4UpKFWM8AZjnxqAsNDiDBB40Ne9EVPaZMtoZW3+PQbyU1RJQBwqrdBybANNmBYcnUANdvi6
	3jQwb23XEJbXAdB8z2wKtWej+vmfHbf3vSn+ZxIEFUbx+y5K5A9QzBWx4TC3PPhlXRzYcY30AtfaH
	j6ZB5C74ZawnoR9pbtMFkFqDbDyTMuwxT7v9W45Qi0rs+jHA1fBUjUB/VNLvF3cXnktKP6l8AZAKD
	e6XnCxIBYP21Ps9UYsQeSm9Whiu+stofElHMXnGyXFGQsxMKRqo1x/rCYc1S89DacBc8KVdsQ51kM
	kbc0tmgA==;
From: David Woodhouse <dwmw2@infradead.org>
To: qemu-devel@nongnu.org
Cc: Richard Henderson <richard.henderson@linaro.org>,
	Beniamino Galvani <b.galvani@gmail.com>,
	Peter Maydell <peter.maydell@linaro.org>,
	Strahinja Jankovic <strahinja.p.jankovic@gmail.com>,
	Niek Linnenbank <nieklinnenbank@gmail.com>,
	=?UTF-8?q?C=C3=A9dric=20Le=20Goater?= <clg@kaod.org>,
	Andrew Jeffery <andrew@codeconstruct.com.au>,
	Joel Stanley <joel@jms.id.au>,
	Igor Mitsyanko <i.mitsyanko@gmail.com>,
	Jean-Christophe Dubois <jcd@tribudubois.net>,
	Andrey Smirnov <andrew.smirnov@gmail.com>,
	=?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= <philmd@linaro.org>,
	Rob Herring <robh@kernel.org>,
	Subbaraya Sundeep <sundeep.lkml@gmail.com>,
	Jan Kiszka <jan.kiszka@web.de>,
	Tyrone Ting <kfting@nuvoton.com>,
	Hao Wu <wuhaotsh@google.com>,
	Radoslaw Biernacki <rad@semihalf.com>,
	Leif Lindholm <quic_llindhol@quicinc.com>,
	Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org>,
	"Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
	Alistair Francis <alistair@alistair23.me>,
	Helge Deller <deller@gmx.de>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Eduardo Habkost <eduardo@habkost.net>,
	"Michael S. Tsirkin" <mst@redhat.com>,
	Marcel Apfelbaum <marcel.apfelbaum@gmail.com>,
	Song Gao <gaosong@loongson.cn>,
	Thomas Huth <huth@tuxfamily.org>,
	Laurent Vivier <laurent@vivier.eu>,
	Huacai Chen <chenhuacai@kernel.org>,
	Jiaxun Yang <jiaxun.yang@flygoat.com>,
	=?UTF-8?q?Herv=C3=A9=20Poussineau?= <hpoussin@reactos.org>,
	Aleksandar Rikalo <aleksandar.rikalo@syrmia.com>,
	Aurelien Jarno <aurelien@aurel32.net>,
	Jason Wang <jasowang@redhat.com>,
	Jia Liu <proljc@gmail.com>,
	Stafford Horne <shorne@gmail.com>,
	Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>,
	Nicholas Piggin <npiggin@gmail.com>,
	Daniel Henrique Barboza <danielhb413@gmail.com>,
	David Gibson <david@gibson.dropbear.id.au>,
	Harsh Prateek Bora <harshpb@linux.ibm.com>,
	Bin Meng <bin.meng@windriver.com>,
	Palmer Dabbelt <palmer@dabbelt.com>,
	Weiwei Li <liwei1518@gmail.com>,
	Liu Zhiwei <zhiwei_liu@linux.alibaba.com>,
	Halil Pasic <pasic@linux.ibm.com>,
	Christian Borntraeger <borntraeger@linux.ibm.com>,
	Eric Farman <farman@linux.ibm.com>,
	David Hildenbrand <david@redhat.com>,
	Ilya Leoshkevich <iii@linux.ibm.com>,
	Yoshinori Sato <ysato@users.sourceforge.jp>,
	Magnus Damm <magnus.damm@gmail.com>,
	Artyom Tarasenko <atar4qemu@gmail.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Anthony Perard <anthony.perard@citrix.com>,
	Paul Durrant <paul@xen.org>,
	Max Filippov <jcmvbkbc@gmail.com>,
	qemu-arm@nongnu.org,
	qemu-ppc@nongnu.org,
	qemu-riscv@nongnu.org,
	qemu-s390x@nongnu.org,
	xen-devel@lists.xenproject.org,
	David Woodhouse <dwmw@amazon.co.uk>
Subject: [PATCH v3 10/46] hw/hppa: use pci_init_nic_devices()
Date: Mon,  8 Jan 2024 20:26:39 +0000
Message-ID: <20240108204909.564514-11-dwmw2@infradead.org>
X-Mailer: git-send-email 2.41.0
In-Reply-To: <20240108204909.564514-1-dwmw2@infradead.org>
References: <20240108204909.564514-1-dwmw2@infradead.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Sender: David Woodhouse <dwmw2@infradead.org>
X-SRS-Rewrite: SMTP reverse-path rewritten from <dwmw2@infradead.org> by desiato.infradead.org. See http://www.infradead.org/rpr.html

From: David Woodhouse <dwmw@amazon.co.uk>

Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
---
 hw/hppa/machine.c | 7 ++-----
 1 file changed, 2 insertions(+), 5 deletions(-)

diff --git a/hw/hppa/machine.c b/hw/hppa/machine.c
index c8da7c18d5..19d477105e 100644
--- a/hw/hppa/machine.c
+++ b/hw/hppa/machine.c
@@ -338,7 +338,6 @@ static void machine_HP_common_init_tail(MachineState *machine, PCIBus *pci_bus,
     uint64_t kernel_entry = 0, kernel_low, kernel_high;
     MemoryRegion *addr_space = get_system_memory();
     MemoryRegion *rom_region;
-    long i;
     unsigned int smp_cpus = machine->smp.cpus;
     SysBusDevice *s;
 
@@ -362,10 +361,8 @@ static void machine_HP_common_init_tail(MachineState *machine, PCIBus *pci_bus,
                         qdev_get_gpio_in(lasi_dev, LASI_IRQ_LAN_HPA));
     }
 
-    for (i = 0; i < nb_nics; i++) {
-        if (!enable_lasi_lan()) {
-            pci_nic_init_nofail(&nd_table[i], pci_bus, mc->default_nic, NULL);
-        }
+    if (!enable_lasi_lan()) {
+        pci_init_nic_devices(pci_bus, mc->default_nic);
     }
 
     /* BMC board: HP Powerbar SP2 Diva (with console only) */
-- 
2.41.0



From xen-devel-bounces@lists.xenproject.org Mon Jan 08 20:51:10 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 08 Jan 2024 20:51:10 +0000
Received: from list by lists.xenproject.org with outflank-mailman.663899.1033836 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMwaN-00012h-FW; Mon, 08 Jan 2024 20:51:03 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 663899.1033836; Mon, 08 Jan 2024 20:51:03 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMwaN-00011p-6y; Mon, 08 Jan 2024 20:51:03 +0000
Received: by outflank-mailman (input) for mailman id 663899;
 Mon, 08 Jan 2024 20:51:01 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=NrlO=IS=casper.srs.infradead.org=BATV+41a72dc6539c0dfbbc31+7442+infradead.org+dwmw2@srs-se1.protection.inumbo.net>)
 id 1rMwaL-0000R5-Qx
 for xen-devel@lists.xenproject.org; Mon, 08 Jan 2024 20:51:01 +0000
Received: from casper.infradead.org (casper.infradead.org
 [2001:8b0:10b:1236::1])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 9cb0f570-ae67-11ee-98ef-6d05b1d4d9a1;
 Mon, 08 Jan 2024 21:50:55 +0100 (CET)
Received: from [2001:8b0:10b:1::ebe] (helo=i7.infradead.org)
 by casper.infradead.org with esmtpsa (Exim 4.94.2 #2 (Red Hat Linux))
 id 1rMwYj-008RPh-C4; Mon, 08 Jan 2024 20:49:22 +0000
Received: from dwoodhou by i7.infradead.org with local (Exim 4.96.2 #2 (Red
 Hat Linux)) id 1rMwYj-002NFB-2x; Mon, 08 Jan 2024 20:49:21 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
X-Inumbo-ID: 9cb0f570-ae67-11ee-98ef-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=infradead.org; s=casper.20170209; h=Sender:Content-Transfer-Encoding:
	MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:
	Reply-To:Content-Type:Content-ID:Content-Description;
	bh=mKejtkSe+nFfQ0aoeWucod44zhEmF2o9bYQegdFzkdU=; b=ZhUUZhVnEtNk66WpkrjhP43mCV
	H3uiW5TCXECVTszSMNTlGImLRnCJ7mRVxLbSXF38/zp3zDh02oGGm5xm1I++bqiszLsiMgpKlsBbn
	TJQE40SEXrpdX5zDOCgvIUvf9p8gxJfkb+6CquiaHmvhy7TAgDi56pnWpJpl40xFp1hW+Xx6NKe3k
	vCmsdXhQ0Q6xN/66xcfxEuTCsskLeP5QiaL+89ed4mPu9Kg9GS2bh5ElDodmdAGOkP/R3hIqKRb+l
	MgVuvJNBtE+tYSeTpi/2OPg3fM5ZN3Lu/S6/PYMJcGzRRk680SD/KQX/roookyqQ58M4LHbFjVmKM
	Otesh1vA==;
From: David Woodhouse <dwmw2@infradead.org>
To: qemu-devel@nongnu.org
Cc: Richard Henderson <richard.henderson@linaro.org>,
	Beniamino Galvani <b.galvani@gmail.com>,
	Peter Maydell <peter.maydell@linaro.org>,
	Strahinja Jankovic <strahinja.p.jankovic@gmail.com>,
	Niek Linnenbank <nieklinnenbank@gmail.com>,
	=?UTF-8?q?C=C3=A9dric=20Le=20Goater?= <clg@kaod.org>,
	Andrew Jeffery <andrew@codeconstruct.com.au>,
	Joel Stanley <joel@jms.id.au>,
	Igor Mitsyanko <i.mitsyanko@gmail.com>,
	Jean-Christophe Dubois <jcd@tribudubois.net>,
	Andrey Smirnov <andrew.smirnov@gmail.com>,
	=?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= <philmd@linaro.org>,
	Rob Herring <robh@kernel.org>,
	Subbaraya Sundeep <sundeep.lkml@gmail.com>,
	Jan Kiszka <jan.kiszka@web.de>,
	Tyrone Ting <kfting@nuvoton.com>,
	Hao Wu <wuhaotsh@google.com>,
	Radoslaw Biernacki <rad@semihalf.com>,
	Leif Lindholm <quic_llindhol@quicinc.com>,
	Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org>,
	"Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
	Alistair Francis <alistair@alistair23.me>,
	Helge Deller <deller@gmx.de>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Eduardo Habkost <eduardo@habkost.net>,
	"Michael S. Tsirkin" <mst@redhat.com>,
	Marcel Apfelbaum <marcel.apfelbaum@gmail.com>,
	Song Gao <gaosong@loongson.cn>,
	Thomas Huth <huth@tuxfamily.org>,
	Laurent Vivier <laurent@vivier.eu>,
	Huacai Chen <chenhuacai@kernel.org>,
	Jiaxun Yang <jiaxun.yang@flygoat.com>,
	=?UTF-8?q?Herv=C3=A9=20Poussineau?= <hpoussin@reactos.org>,
	Aleksandar Rikalo <aleksandar.rikalo@syrmia.com>,
	Aurelien Jarno <aurelien@aurel32.net>,
	Jason Wang <jasowang@redhat.com>,
	Jia Liu <proljc@gmail.com>,
	Stafford Horne <shorne@gmail.com>,
	Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>,
	Nicholas Piggin <npiggin@gmail.com>,
	Daniel Henrique Barboza <danielhb413@gmail.com>,
	David Gibson <david@gibson.dropbear.id.au>,
	Harsh Prateek Bora <harshpb@linux.ibm.com>,
	Bin Meng <bin.meng@windriver.com>,
	Palmer Dabbelt <palmer@dabbelt.com>,
	Weiwei Li <liwei1518@gmail.com>,
	Liu Zhiwei <zhiwei_liu@linux.alibaba.com>,
	Halil Pasic <pasic@linux.ibm.com>,
	Christian Borntraeger <borntraeger@linux.ibm.com>,
	Eric Farman <farman@linux.ibm.com>,
	David Hildenbrand <david@redhat.com>,
	Ilya Leoshkevich <iii@linux.ibm.com>,
	Yoshinori Sato <ysato@users.sourceforge.jp>,
	Magnus Damm <magnus.damm@gmail.com>,
	Artyom Tarasenko <atar4qemu@gmail.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Anthony Perard <anthony.perard@citrix.com>,
	Paul Durrant <paul@xen.org>,
	Max Filippov <jcmvbkbc@gmail.com>,
	qemu-arm@nongnu.org,
	qemu-ppc@nongnu.org,
	qemu-riscv@nongnu.org,
	qemu-s390x@nongnu.org,
	xen-devel@lists.xenproject.org,
	David Woodhouse <dwmw@amazon.co.uk>
Subject: [PATCH v3 18/46] hw/sh4/r2d: use pci_init_nic_devices()
Date: Mon,  8 Jan 2024 20:26:47 +0000
Message-ID: <20240108204909.564514-19-dwmw2@infradead.org>
X-Mailer: git-send-email 2.41.0
In-Reply-To: <20240108204909.564514-1-dwmw2@infradead.org>
References: <20240108204909.564514-1-dwmw2@infradead.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Sender: David Woodhouse <dwmw2@infradead.org>
X-SRS-Rewrite: SMTP reverse-path rewritten from <dwmw2@infradead.org> by casper.infradead.org. See http://www.infradead.org/rpr.html

From: David Woodhouse <dwmw@amazon.co.uk>

Previously, the first PCI NIC would be assigned to slot 2 even if the
user override the model and made it something other than an rtl8139
which is the default. Everything else would be dynamically assigned.

Now, the first rtl8139 gets slot 2 and everything else is dynamic.

Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
Reviewed-by: Yoshinori Sato <ysato@users.sourceforge.jp>
---
 hw/sh4/r2d.c | 6 ++----
 1 file changed, 2 insertions(+), 4 deletions(-)

diff --git a/hw/sh4/r2d.c b/hw/sh4/r2d.c
index 4944994e9c..e9f316a6ce 100644
--- a/hw/sh4/r2d.c
+++ b/hw/sh4/r2d.c
@@ -240,7 +240,6 @@ static void r2d_init(MachineState *machine)
     MemoryRegion *sdram = g_new(MemoryRegion, 1);
     qemu_irq *irq;
     DriveInfo *dinfo;
-    int i;
     DeviceState *dev;
     SysBusDevice *busdev;
     MemoryRegion *address_space_mem = get_system_memory();
@@ -309,9 +308,8 @@ static void r2d_init(MachineState *machine)
                           0x555, 0x2aa, 0);
 
     /* NIC: rtl8139 on-board, and 2 slots. */
-    for (i = 0; i < nb_nics; i++)
-        pci_nic_init_nofail(&nd_table[i], pci_bus,
-                            mc->default_nic, i == 0 ? "2" : NULL);
+    pci_init_nic_in_slot(pci_bus, mc->default_nic, NULL, "2");
+    pci_init_nic_devices(pci_bus, mc->default_nic);
 
     /* USB keyboard */
     usb_create_simple(usb_bus_find(-1), "usb-kbd");
-- 
2.41.0



From xen-devel-bounces@lists.xenproject.org Mon Jan 08 20:51:10 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 08 Jan 2024 20:51:10 +0000
Received: from list by lists.xenproject.org with outflank-mailman.663905.1033897 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMwaS-0002Wt-5H; Mon, 08 Jan 2024 20:51:08 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 663905.1033897; Mon, 08 Jan 2024 20:51:08 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMwaR-0002VB-Li; Mon, 08 Jan 2024 20:51:07 +0000
Received: by outflank-mailman (input) for mailman id 663905;
 Mon, 08 Jan 2024 20:51:04 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=NrlO=IS=casper.srs.infradead.org=BATV+41a72dc6539c0dfbbc31+7442+infradead.org+dwmw2@srs-se1.protection.inumbo.net>)
 id 1rMwaO-0000R5-Rb
 for xen-devel@lists.xenproject.org; Mon, 08 Jan 2024 20:51:04 +0000
Received: from casper.infradead.org (casper.infradead.org
 [2001:8b0:10b:1236::1])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id a0ff359b-ae67-11ee-98ef-6d05b1d4d9a1;
 Mon, 08 Jan 2024 21:51:00 +0100 (CET)
Received: from [2001:8b0:10b:1::ebe] (helo=i7.infradead.org)
 by casper.infradead.org with esmtpsa (Exim 4.94.2 #2 (Red Hat Linux))
 id 1rMwYj-008RPz-VV; Mon, 08 Jan 2024 20:49:23 +0000
Received: from dwoodhou by i7.infradead.org with local (Exim 4.96.2 #2 (Red
 Hat Linux)) id 1rMwYk-002NG1-2d; Mon, 08 Jan 2024 20:49:22 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
X-Inumbo-ID: a0ff359b-ae67-11ee-98ef-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=infradead.org; s=casper.20170209; h=Sender:Content-Transfer-Encoding:
	MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:
	Reply-To:Content-Type:Content-ID:Content-Description;
	bh=5H4+RlrFBb1kzBe4t2y8/9sK3+GNicJATXfDxB43fyo=; b=sOqQRiIJwqesJ1F0GQ8sGgjgn8
	14drnnNOVXK2BORNkgmyRJ3x5Mq5CcZFlOyG7ME7Ze3xzZwUSiYlHcoeKh0SIxQj9Vep8K3Aiyr7T
	TUu0l4sr07meaF+29YflIoNnjqtSzGGDslj15cNGYh/TAQPGVQgP3hkcsWJ0kB2IrEW0Mf9Tv+TTO
	bjYFGWQzr4BWwc/NfRxfdF9TxLv6x3VM1XftggObBDViAWOCgFZUSwscrjBqUzv6p8G0XzrqRfD0V
	UFmy4QN6XCuimCND6bM24kDM5DEYzSkxpoJroDRYSU4Io9GY6YqqlSctE4keDdGEcIC7YtVZrziSq
	Z074P6aA==;
From: David Woodhouse <dwmw2@infradead.org>
To: qemu-devel@nongnu.org
Cc: Richard Henderson <richard.henderson@linaro.org>,
	Beniamino Galvani <b.galvani@gmail.com>,
	Peter Maydell <peter.maydell@linaro.org>,
	Strahinja Jankovic <strahinja.p.jankovic@gmail.com>,
	Niek Linnenbank <nieklinnenbank@gmail.com>,
	=?UTF-8?q?C=C3=A9dric=20Le=20Goater?= <clg@kaod.org>,
	Andrew Jeffery <andrew@codeconstruct.com.au>,
	Joel Stanley <joel@jms.id.au>,
	Igor Mitsyanko <i.mitsyanko@gmail.com>,
	Jean-Christophe Dubois <jcd@tribudubois.net>,
	Andrey Smirnov <andrew.smirnov@gmail.com>,
	=?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= <philmd@linaro.org>,
	Rob Herring <robh@kernel.org>,
	Subbaraya Sundeep <sundeep.lkml@gmail.com>,
	Jan Kiszka <jan.kiszka@web.de>,
	Tyrone Ting <kfting@nuvoton.com>,
	Hao Wu <wuhaotsh@google.com>,
	Radoslaw Biernacki <rad@semihalf.com>,
	Leif Lindholm <quic_llindhol@quicinc.com>,
	Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org>,
	"Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
	Alistair Francis <alistair@alistair23.me>,
	Helge Deller <deller@gmx.de>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Eduardo Habkost <eduardo@habkost.net>,
	"Michael S. Tsirkin" <mst@redhat.com>,
	Marcel Apfelbaum <marcel.apfelbaum@gmail.com>,
	Song Gao <gaosong@loongson.cn>,
	Thomas Huth <huth@tuxfamily.org>,
	Laurent Vivier <laurent@vivier.eu>,
	Huacai Chen <chenhuacai@kernel.org>,
	Jiaxun Yang <jiaxun.yang@flygoat.com>,
	=?UTF-8?q?Herv=C3=A9=20Poussineau?= <hpoussin@reactos.org>,
	Aleksandar Rikalo <aleksandar.rikalo@syrmia.com>,
	Aurelien Jarno <aurelien@aurel32.net>,
	Jason Wang <jasowang@redhat.com>,
	Jia Liu <proljc@gmail.com>,
	Stafford Horne <shorne@gmail.com>,
	Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>,
	Nicholas Piggin <npiggin@gmail.com>,
	Daniel Henrique Barboza <danielhb413@gmail.com>,
	David Gibson <david@gibson.dropbear.id.au>,
	Harsh Prateek Bora <harshpb@linux.ibm.com>,
	Bin Meng <bin.meng@windriver.com>,
	Palmer Dabbelt <palmer@dabbelt.com>,
	Weiwei Li <liwei1518@gmail.com>,
	Liu Zhiwei <zhiwei_liu@linux.alibaba.com>,
	Halil Pasic <pasic@linux.ibm.com>,
	Christian Borntraeger <borntraeger@linux.ibm.com>,
	Eric Farman <farman@linux.ibm.com>,
	David Hildenbrand <david@redhat.com>,
	Ilya Leoshkevich <iii@linux.ibm.com>,
	Yoshinori Sato <ysato@users.sourceforge.jp>,
	Magnus Damm <magnus.damm@gmail.com>,
	Artyom Tarasenko <atar4qemu@gmail.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Anthony Perard <anthony.perard@citrix.com>,
	Paul Durrant <paul@xen.org>,
	Max Filippov <jcmvbkbc@gmail.com>,
	qemu-arm@nongnu.org,
	qemu-ppc@nongnu.org,
	qemu-riscv@nongnu.org,
	qemu-s390x@nongnu.org,
	xen-devel@lists.xenproject.org,
	David Woodhouse <dwmw@amazon.co.uk>
Subject: [PATCH v3 29/46] hw/arm/stellaris: use qemu_find_nic_info()
Date: Mon,  8 Jan 2024 20:26:58 +0000
Message-ID: <20240108204909.564514-30-dwmw2@infradead.org>
X-Mailer: git-send-email 2.41.0
In-Reply-To: <20240108204909.564514-1-dwmw2@infradead.org>
References: <20240108204909.564514-1-dwmw2@infradead.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Sender: David Woodhouse <dwmw2@infradead.org>
X-SRS-Rewrite: SMTP reverse-path rewritten from <dwmw2@infradead.org> by casper.infradead.org. See http://www.infradead.org/rpr.html

From: David Woodhouse <dwmw@amazon.co.uk>

Rather than just using qemu_configure_nic_device(), populate the MAC
address in the system-registers device by peeking at the NICInfo before
it's assigned to the device.

Generate the MAC address early, if there is no matching -nic option.
Otherwise the MAC address wouldn't be generated until net_client_init1()
runs.

Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
---
 hw/arm/stellaris.c | 30 ++++++++++++++++++++++--------
 1 file changed, 22 insertions(+), 8 deletions(-)

diff --git a/hw/arm/stellaris.c b/hw/arm/stellaris.c
index 729a8bf569..e8e1c83413 100644
--- a/hw/arm/stellaris.c
+++ b/hw/arm/stellaris.c
@@ -1027,7 +1027,8 @@ static void stellaris_init(MachineState *ms, stellaris_board_info *board)
     DeviceState *ssys_dev;
     int i;
     int j;
-    const uint8_t *macaddr;
+    NICInfo *nd;
+    MACAddr mac;
 
     MemoryRegion *sram = g_new(MemoryRegion, 1);
     MemoryRegion *flash = g_new(MemoryRegion, 1);
@@ -1050,12 +1051,22 @@ static void stellaris_init(MachineState *ms, stellaris_board_info *board)
      * need its sysclk output.
      */
     ssys_dev = qdev_new(TYPE_STELLARIS_SYS);
-    /* Most devices come preprogrammed with a MAC address in the user data. */
-    macaddr = nd_table[0].macaddr.a;
+
+    /*
+     * Most devices come preprogrammed with a MAC address in the user data.
+     * Generate a MAC address now, if there isn't a matching -nic for it.
+     */
+    nd = qemu_find_nic_info("stellaris_enet", true, "stellaris");
+    if (nd) {
+        memcpy(mac.a, nd->macaddr.a, sizeof(mac.a));
+    } else {
+        qemu_macaddr_default_if_unset(&mac);
+    }
+
     qdev_prop_set_uint32(ssys_dev, "user0",
-                         macaddr[0] | (macaddr[1] << 8) | (macaddr[2] << 16));
+                         mac.a[0] | (mac.a[1] << 8) | (mac.a[2] << 16));
     qdev_prop_set_uint32(ssys_dev, "user1",
-                         macaddr[3] | (macaddr[4] << 8) | (macaddr[5] << 16));
+                         mac.a[3] | (mac.a[4] << 8) | (mac.a[5] << 16));
     qdev_prop_set_uint32(ssys_dev, "did0", board->did0);
     qdev_prop_set_uint32(ssys_dev, "did1", board->did1);
     qdev_prop_set_uint32(ssys_dev, "dc0", board->dc0);
@@ -1267,10 +1278,13 @@ static void stellaris_init(MachineState *ms, stellaris_board_info *board)
     if (board->dc4 & (1 << 28)) {
         DeviceState *enet;
 
-        qemu_check_nic_model(&nd_table[0], "stellaris");
-
         enet = qdev_new("stellaris_enet");
-        qdev_set_nic_properties(enet, &nd_table[0]);
+        if (nd) {
+            qdev_set_nic_properties(enet, nd);
+        } else {
+            qdev_prop_set_macaddr(enet, "mac", mac.a);
+        }
+
         sysbus_realize_and_unref(SYS_BUS_DEVICE(enet), &error_fatal);
         sysbus_mmio_map(SYS_BUS_DEVICE(enet), 0, 0x40048000);
         sysbus_connect_irq(SYS_BUS_DEVICE(enet), 0, qdev_get_gpio_in(nvic, 42));
-- 
2.41.0



From xen-devel-bounces@lists.xenproject.org Mon Jan 08 20:51:10 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 08 Jan 2024 20:51:10 +0000
Received: from list by lists.xenproject.org with outflank-mailman.663907.1033911 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMwaT-0002tL-L8; Mon, 08 Jan 2024 20:51:09 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 663907.1033911; Mon, 08 Jan 2024 20:51:09 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMwaS-0002qh-U1; Mon, 08 Jan 2024 20:51:08 +0000
Received: by outflank-mailman (input) for mailman id 663907;
 Mon, 08 Jan 2024 20:51:06 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=NrlO=IS=casper.srs.infradead.org=BATV+41a72dc6539c0dfbbc31+7442+infradead.org+dwmw2@srs-se1.protection.inumbo.net>)
 id 1rMwaP-0000R5-Ru
 for xen-devel@lists.xenproject.org; Mon, 08 Jan 2024 20:51:05 +0000
Received: from casper.infradead.org (casper.infradead.org
 [2001:8b0:10b:1236::1])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id a1caf14c-ae67-11ee-98ef-6d05b1d4d9a1;
 Mon, 08 Jan 2024 21:51:01 +0100 (CET)
Received: from [2001:8b0:10b:1::ebe] (helo=i7.infradead.org)
 by casper.infradead.org with esmtpsa (Exim 4.94.2 #2 (Red Hat Linux))
 id 1rMwYi-008RPd-OK; Mon, 08 Jan 2024 20:49:21 +0000
Received: from dwoodhou by i7.infradead.org with local (Exim 4.96.2 #2 (Red
 Hat Linux)) id 1rMwYj-002NEo-1l; Mon, 08 Jan 2024 20:49:21 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
X-Inumbo-ID: a1caf14c-ae67-11ee-98ef-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=infradead.org; s=casper.20170209; h=Sender:Content-Transfer-Encoding:
	MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:
	Reply-To:Content-Type:Content-ID:Content-Description;
	bh=hMp2SquIWfdr4+9lBCEHUnVE2meQLGugha34lW7/ti0=; b=nDpW6G9dsy794OXiWzzXQ91GO+
	T9HGvq07RlFgWMMFSFpZ7npfL8tb+WTug4S7gF6/baNqNfbVZdyqmyFVGHZrXiE8TEbMQcOLiHLav
	67shYynZomLeR1hApByC3eUqRyCeW+m3fFIzpIKfkPXKmHWOzsyYlDKHXNJQKxYCgLNgK4y4cyaPd
	W1rHCB6Of9X4o5iU//G8gPwg3guwgmkd1wvBelIMhblidAdUYeoyHkjvgRiUWQ4s0HmOVG8hxOpYO
	gO3BKhQAxnbBd2ZCIJGIwPW8OTMjN0bo6JuIDUyP5H00LmXdCyOqMgjY7zw5DISLf9iBPOmJ0a0VD
	TdL5bPDg==;
From: David Woodhouse <dwmw2@infradead.org>
To: qemu-devel@nongnu.org
Cc: Richard Henderson <richard.henderson@linaro.org>,
	Beniamino Galvani <b.galvani@gmail.com>,
	Peter Maydell <peter.maydell@linaro.org>,
	Strahinja Jankovic <strahinja.p.jankovic@gmail.com>,
	Niek Linnenbank <nieklinnenbank@gmail.com>,
	=?UTF-8?q?C=C3=A9dric=20Le=20Goater?= <clg@kaod.org>,
	Andrew Jeffery <andrew@codeconstruct.com.au>,
	Joel Stanley <joel@jms.id.au>,
	Igor Mitsyanko <i.mitsyanko@gmail.com>,
	Jean-Christophe Dubois <jcd@tribudubois.net>,
	Andrey Smirnov <andrew.smirnov@gmail.com>,
	=?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= <philmd@linaro.org>,
	Rob Herring <robh@kernel.org>,
	Subbaraya Sundeep <sundeep.lkml@gmail.com>,
	Jan Kiszka <jan.kiszka@web.de>,
	Tyrone Ting <kfting@nuvoton.com>,
	Hao Wu <wuhaotsh@google.com>,
	Radoslaw Biernacki <rad@semihalf.com>,
	Leif Lindholm <quic_llindhol@quicinc.com>,
	Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org>,
	"Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
	Alistair Francis <alistair@alistair23.me>,
	Helge Deller <deller@gmx.de>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Eduardo Habkost <eduardo@habkost.net>,
	"Michael S. Tsirkin" <mst@redhat.com>,
	Marcel Apfelbaum <marcel.apfelbaum@gmail.com>,
	Song Gao <gaosong@loongson.cn>,
	Thomas Huth <huth@tuxfamily.org>,
	Laurent Vivier <laurent@vivier.eu>,
	Huacai Chen <chenhuacai@kernel.org>,
	Jiaxun Yang <jiaxun.yang@flygoat.com>,
	=?UTF-8?q?Herv=C3=A9=20Poussineau?= <hpoussin@reactos.org>,
	Aleksandar Rikalo <aleksandar.rikalo@syrmia.com>,
	Aurelien Jarno <aurelien@aurel32.net>,
	Jason Wang <jasowang@redhat.com>,
	Jia Liu <proljc@gmail.com>,
	Stafford Horne <shorne@gmail.com>,
	Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>,
	Nicholas Piggin <npiggin@gmail.com>,
	Daniel Henrique Barboza <danielhb413@gmail.com>,
	David Gibson <david@gibson.dropbear.id.au>,
	Harsh Prateek Bora <harshpb@linux.ibm.com>,
	Bin Meng <bin.meng@windriver.com>,
	Palmer Dabbelt <palmer@dabbelt.com>,
	Weiwei Li <liwei1518@gmail.com>,
	Liu Zhiwei <zhiwei_liu@linux.alibaba.com>,
	Halil Pasic <pasic@linux.ibm.com>,
	Christian Borntraeger <borntraeger@linux.ibm.com>,
	Eric Farman <farman@linux.ibm.com>,
	David Hildenbrand <david@redhat.com>,
	Ilya Leoshkevich <iii@linux.ibm.com>,
	Yoshinori Sato <ysato@users.sourceforge.jp>,
	Magnus Damm <magnus.damm@gmail.com>,
	Artyom Tarasenko <atar4qemu@gmail.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Anthony Perard <anthony.perard@citrix.com>,
	Paul Durrant <paul@xen.org>,
	Max Filippov <jcmvbkbc@gmail.com>,
	qemu-arm@nongnu.org,
	qemu-ppc@nongnu.org,
	qemu-riscv@nongnu.org,
	qemu-s390x@nongnu.org,
	xen-devel@lists.xenproject.org,
	David Woodhouse <dwmw@amazon.co.uk>
Subject: [PATCH v3 13/46] hw/mips/malta: use pci_init_nic_devices()
Date: Mon,  8 Jan 2024 20:26:42 +0000
Message-ID: <20240108204909.564514-14-dwmw2@infradead.org>
X-Mailer: git-send-email 2.41.0
In-Reply-To: <20240108204909.564514-1-dwmw2@infradead.org>
References: <20240108204909.564514-1-dwmw2@infradead.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Sender: David Woodhouse <dwmw2@infradead.org>
X-SRS-Rewrite: SMTP reverse-path rewritten from <dwmw2@infradead.org> by casper.infradead.org. See http://www.infradead.org/rpr.html

From: David Woodhouse <dwmw@amazon.co.uk>

The Malta board setup code would previously place the first NIC into PCI
slot 11 if was a PCNet card, and the rest (including the first if it was
anything other than a PCNet card) would be dynamically assigned.

Now it will place any PCNet NIC into slot 11, and then anything else will
be dynamically assigned.

Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
---
 hw/mips/malta.c | 15 +++------------
 1 file changed, 3 insertions(+), 12 deletions(-)

diff --git a/hw/mips/malta.c b/hw/mips/malta.c
index d22bb1edef..af74008c82 100644
--- a/hw/mips/malta.c
+++ b/hw/mips/malta.c
@@ -612,18 +612,9 @@ static MaltaFPGAState *malta_fpga_init(MemoryRegion *address_space,
 /* Network support */
 static void network_init(PCIBus *pci_bus)
 {
-    int i;
-
-    for (i = 0; i < nb_nics; i++) {
-        NICInfo *nd = &nd_table[i];
-        const char *default_devaddr = NULL;
-
-        if (i == 0 && (!nd->model || strcmp(nd->model, "pcnet") == 0))
-            /* The malta board has a PCNet card using PCI SLOT 11 */
-            default_devaddr = "0b";
-
-        pci_nic_init_nofail(nd, pci_bus, "pcnet", default_devaddr);
-    }
+    /* The malta board has a PCNet card using PCI SLOT 11 */
+    pci_init_nic_in_slot(pci_bus, "pcnet", NULL, "0b");
+    pci_init_nic_devices(pci_bus, "pcnet");
 }
 
 static void bl_setup_gt64120_jump_kernel(void **p, uint64_t run_addr,
-- 
2.41.0



From xen-devel-bounces@lists.xenproject.org Mon Jan 08 20:51:11 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 08 Jan 2024 20:51:11 +0000
Received: from list by lists.xenproject.org with outflank-mailman.663908.1033920 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMwaV-0003EO-3K; Mon, 08 Jan 2024 20:51:11 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 663908.1033920; Mon, 08 Jan 2024 20:51:10 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMwaU-0003AZ-GJ; Mon, 08 Jan 2024 20:51:10 +0000
Received: by outflank-mailman (input) for mailman id 663908;
 Mon, 08 Jan 2024 20:51:06 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=NrlO=IS=casper.srs.infradead.org=BATV+41a72dc6539c0dfbbc31+7442+infradead.org+dwmw2@srs-se1.protection.inumbo.net>)
 id 1rMwaQ-0000R6-Ar
 for xen-devel@lists.xenproject.org; Mon, 08 Jan 2024 20:51:06 +0000
Received: from casper.infradead.org (casper.infradead.org
 [2001:8b0:10b:1236::1])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id a30a1670-ae67-11ee-9b0f-b553b5be7939;
 Mon, 08 Jan 2024 21:51:03 +0100 (CET)
Received: from [2001:8b0:10b:1::ebe] (helo=i7.infradead.org)
 by casper.infradead.org with esmtpsa (Exim 4.94.2 #2 (Red Hat Linux))
 id 1rMwYj-008RPq-KG; Mon, 08 Jan 2024 20:49:22 +0000
Received: from dwoodhou by i7.infradead.org with local (Exim 4.96.2 #2 (Red
 Hat Linux)) id 1rMwYk-002NFT-10; Mon, 08 Jan 2024 20:49:22 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
X-Inumbo-ID: a30a1670-ae67-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=infradead.org; s=casper.20170209; h=Sender:Content-Transfer-Encoding:
	MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:
	Reply-To:Content-Type:Content-ID:Content-Description;
	bh=6GcIfEqXlcnmmpl6cCrOJJoCYIHAK8lem5JXl9qMtnE=; b=jHmLFfWjdNWZEwoAjapVuYMxb4
	YUENhD15vHFueDLBK1r5BffVHDYrLRK0/rou5KqHnL08QsHFsVwLfeoxDIWTSzz/MNNeI8oIdojaW
	0MYqRzeFKKVBJ0jU49R37R5g/IKEAZ26JLf3fWDfjsgj5hQu44Jfjhc0arOZH/DXceHB04e5JvDEV
	ZBUifwJL1a8WlHMs0aM+wrrKoOs5+chirS62fIrMq4i+A4lQf1dtugy3i5XhEV3gP5P7BAEwkKNx/
	d9d0jcYe+m0C2Pzvj89li+68AgVW7TWwy1P935IwFo/4/1UVEiFXnR1yrzWmCAn0xhkb3+Jla3mtZ
	Nc0JTarw==;
From: David Woodhouse <dwmw2@infradead.org>
To: qemu-devel@nongnu.org
Cc: Richard Henderson <richard.henderson@linaro.org>,
	Beniamino Galvani <b.galvani@gmail.com>,
	Peter Maydell <peter.maydell@linaro.org>,
	Strahinja Jankovic <strahinja.p.jankovic@gmail.com>,
	Niek Linnenbank <nieklinnenbank@gmail.com>,
	=?UTF-8?q?C=C3=A9dric=20Le=20Goater?= <clg@kaod.org>,
	Andrew Jeffery <andrew@codeconstruct.com.au>,
	Joel Stanley <joel@jms.id.au>,
	Igor Mitsyanko <i.mitsyanko@gmail.com>,
	Jean-Christophe Dubois <jcd@tribudubois.net>,
	Andrey Smirnov <andrew.smirnov@gmail.com>,
	=?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= <philmd@linaro.org>,
	Rob Herring <robh@kernel.org>,
	Subbaraya Sundeep <sundeep.lkml@gmail.com>,
	Jan Kiszka <jan.kiszka@web.de>,
	Tyrone Ting <kfting@nuvoton.com>,
	Hao Wu <wuhaotsh@google.com>,
	Radoslaw Biernacki <rad@semihalf.com>,
	Leif Lindholm <quic_llindhol@quicinc.com>,
	Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org>,
	"Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
	Alistair Francis <alistair@alistair23.me>,
	Helge Deller <deller@gmx.de>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Eduardo Habkost <eduardo@habkost.net>,
	"Michael S. Tsirkin" <mst@redhat.com>,
	Marcel Apfelbaum <marcel.apfelbaum@gmail.com>,
	Song Gao <gaosong@loongson.cn>,
	Thomas Huth <huth@tuxfamily.org>,
	Laurent Vivier <laurent@vivier.eu>,
	Huacai Chen <chenhuacai@kernel.org>,
	Jiaxun Yang <jiaxun.yang@flygoat.com>,
	=?UTF-8?q?Herv=C3=A9=20Poussineau?= <hpoussin@reactos.org>,
	Aleksandar Rikalo <aleksandar.rikalo@syrmia.com>,
	Aurelien Jarno <aurelien@aurel32.net>,
	Jason Wang <jasowang@redhat.com>,
	Jia Liu <proljc@gmail.com>,
	Stafford Horne <shorne@gmail.com>,
	Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>,
	Nicholas Piggin <npiggin@gmail.com>,
	Daniel Henrique Barboza <danielhb413@gmail.com>,
	David Gibson <david@gibson.dropbear.id.au>,
	Harsh Prateek Bora <harshpb@linux.ibm.com>,
	Bin Meng <bin.meng@windriver.com>,
	Palmer Dabbelt <palmer@dabbelt.com>,
	Weiwei Li <liwei1518@gmail.com>,
	Liu Zhiwei <zhiwei_liu@linux.alibaba.com>,
	Halil Pasic <pasic@linux.ibm.com>,
	Christian Borntraeger <borntraeger@linux.ibm.com>,
	Eric Farman <farman@linux.ibm.com>,
	David Hildenbrand <david@redhat.com>,
	Ilya Leoshkevich <iii@linux.ibm.com>,
	Yoshinori Sato <ysato@users.sourceforge.jp>,
	Magnus Damm <magnus.damm@gmail.com>,
	Artyom Tarasenko <atar4qemu@gmail.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Anthony Perard <anthony.perard@citrix.com>,
	Paul Durrant <paul@xen.org>,
	Max Filippov <jcmvbkbc@gmail.com>,
	qemu-arm@nongnu.org,
	qemu-ppc@nongnu.org,
	qemu-riscv@nongnu.org,
	qemu-s390x@nongnu.org,
	xen-devel@lists.xenproject.org,
	David Woodhouse <dwmw@amazon.co.uk>
Subject: [PATCH v3 22/46] hw/arm/aspeed: use qemu_configure_nic_device()
Date: Mon,  8 Jan 2024 20:26:51 +0000
Message-ID: <20240108204909.564514-23-dwmw2@infradead.org>
X-Mailer: git-send-email 2.41.0
In-Reply-To: <20240108204909.564514-1-dwmw2@infradead.org>
References: <20240108204909.564514-1-dwmw2@infradead.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Sender: David Woodhouse <dwmw2@infradead.org>
X-SRS-Rewrite: SMTP reverse-path rewritten from <dwmw2@infradead.org> by casper.infradead.org. See http://www.infradead.org/rpr.html

From: David Woodhouse <dwmw@amazon.co.uk>

Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
---
 hw/arm/aspeed.c | 9 ++++-----
 1 file changed, 4 insertions(+), 5 deletions(-)

diff --git a/hw/arm/aspeed.c b/hw/arm/aspeed.c
index cc59176563..bed5e4f40b 100644
--- a/hw/arm/aspeed.c
+++ b/hw/arm/aspeed.c
@@ -356,7 +356,6 @@ static void aspeed_machine_init(MachineState *machine)
     AspeedMachineClass *amc = ASPEED_MACHINE_GET_CLASS(machine);
     AspeedSoCClass *sc;
     int i;
-    NICInfo *nd = &nd_table[0];
 
     bmc->soc = ASPEED_SOC(object_new(amc->soc_name));
     object_property_add_child(OBJECT(machine), "soc", OBJECT(bmc->soc));
@@ -371,10 +370,10 @@ static void aspeed_machine_init(MachineState *machine)
                              &error_fatal);
 
     for (i = 0; i < sc->macs_num; i++) {
-        if ((amc->macs_mask & (1 << i)) && nd->used) {
-            qemu_check_nic_model(nd, TYPE_FTGMAC100);
-            qdev_set_nic_properties(DEVICE(&bmc->soc->ftgmac100[i]), nd);
-            nd++;
+        if ((amc->macs_mask & (1 << i)) &&
+            !qemu_configure_nic_device(DEVICE(&bmc->soc->ftgmac100[i]),
+                                       true, NULL)) {
+            break; /* No configs left; stop asking */
         }
     }
 
-- 
2.41.0



From xen-devel-bounces@lists.xenproject.org Mon Jan 08 20:51:12 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 08 Jan 2024 20:51:12 +0000
Received: from list by lists.xenproject.org with outflank-mailman.663909.1033927 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMwaV-0003QG-TX; Mon, 08 Jan 2024 20:51:11 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 663909.1033927; Mon, 08 Jan 2024 20:51:11 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMwaV-0003NI-A9; Mon, 08 Jan 2024 20:51:11 +0000
Received: by outflank-mailman (input) for mailman id 663909;
 Mon, 08 Jan 2024 20:51:07 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=NrlO=IS=casper.srs.infradead.org=BATV+41a72dc6539c0dfbbc31+7442+infradead.org+dwmw2@srs-se1.protection.inumbo.net>)
 id 1rMwaQ-0000R5-Rm
 for xen-devel@lists.xenproject.org; Mon, 08 Jan 2024 20:51:06 +0000
Received: from casper.infradead.org (casper.infradead.org
 [2001:8b0:10b:1236::1])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id a253aa54-ae67-11ee-98ef-6d05b1d4d9a1;
 Mon, 08 Jan 2024 21:51:02 +0100 (CET)
Received: from [2001:8b0:10b:1::ebe] (helo=i7.infradead.org)
 by casper.infradead.org with esmtpsa (Exim 4.94.2 #2 (Red Hat Linux))
 id 1rMwYk-008RQ0-9s; Mon, 08 Jan 2024 20:49:23 +0000
Received: from dwoodhou by i7.infradead.org with local (Exim 4.96.2 #2 (Red
 Hat Linux)) id 1rMwYk-002NG7-2q; Mon, 08 Jan 2024 20:49:22 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
X-Inumbo-ID: a253aa54-ae67-11ee-98ef-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=infradead.org; s=casper.20170209; h=Sender:Content-Transfer-Encoding:
	MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:
	Reply-To:Content-Type:Content-ID:Content-Description;
	bh=VTf9ESChukN9XGyPv1okfNdkBAYcUSzB3fr/CmKEMJg=; b=oxKakwKRBbdR5JESrinxxOmqFA
	Uh3CtKH69drB5Jwx5km4eFlyxBZ2n+IJmxkkjaOtxQ2p9wf9U0KyaDV83bWby21kGOlDSVeyW9DhV
	IlE5c4yG0NDJwmH/bjD8An2Y9c2JSGNzhTQXbmbh1BjH6EwJDTlN/DzyTgb55y0ILF9LpaoWH8E0u
	WAoh9nQSv6Y9yorUFp5XIvYPV6hEDFNG2dAQz+lH5DwfuWz0dUz5jHO9/cY63pvIgrKtBBnZhnswQ
	zPxYrWp/7JCb+47++eSPtjqpZvLzzo2HRKmOIUv5Rx4/5ts5bVOANCoZbE0jsvShSUOM9dLh+GxYH
	VkybhKfQ==;
From: David Woodhouse <dwmw2@infradead.org>
To: qemu-devel@nongnu.org
Cc: Richard Henderson <richard.henderson@linaro.org>,
	Beniamino Galvani <b.galvani@gmail.com>,
	Peter Maydell <peter.maydell@linaro.org>,
	Strahinja Jankovic <strahinja.p.jankovic@gmail.com>,
	Niek Linnenbank <nieklinnenbank@gmail.com>,
	=?UTF-8?q?C=C3=A9dric=20Le=20Goater?= <clg@kaod.org>,
	Andrew Jeffery <andrew@codeconstruct.com.au>,
	Joel Stanley <joel@jms.id.au>,
	Igor Mitsyanko <i.mitsyanko@gmail.com>,
	Jean-Christophe Dubois <jcd@tribudubois.net>,
	Andrey Smirnov <andrew.smirnov@gmail.com>,
	=?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= <philmd@linaro.org>,
	Rob Herring <robh@kernel.org>,
	Subbaraya Sundeep <sundeep.lkml@gmail.com>,
	Jan Kiszka <jan.kiszka@web.de>,
	Tyrone Ting <kfting@nuvoton.com>,
	Hao Wu <wuhaotsh@google.com>,
	Radoslaw Biernacki <rad@semihalf.com>,
	Leif Lindholm <quic_llindhol@quicinc.com>,
	Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org>,
	"Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
	Alistair Francis <alistair@alistair23.me>,
	Helge Deller <deller@gmx.de>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Eduardo Habkost <eduardo@habkost.net>,
	"Michael S. Tsirkin" <mst@redhat.com>,
	Marcel Apfelbaum <marcel.apfelbaum@gmail.com>,
	Song Gao <gaosong@loongson.cn>,
	Thomas Huth <huth@tuxfamily.org>,
	Laurent Vivier <laurent@vivier.eu>,
	Huacai Chen <chenhuacai@kernel.org>,
	Jiaxun Yang <jiaxun.yang@flygoat.com>,
	=?UTF-8?q?Herv=C3=A9=20Poussineau?= <hpoussin@reactos.org>,
	Aleksandar Rikalo <aleksandar.rikalo@syrmia.com>,
	Aurelien Jarno <aurelien@aurel32.net>,
	Jason Wang <jasowang@redhat.com>,
	Jia Liu <proljc@gmail.com>,
	Stafford Horne <shorne@gmail.com>,
	Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>,
	Nicholas Piggin <npiggin@gmail.com>,
	Daniel Henrique Barboza <danielhb413@gmail.com>,
	David Gibson <david@gibson.dropbear.id.au>,
	Harsh Prateek Bora <harshpb@linux.ibm.com>,
	Bin Meng <bin.meng@windriver.com>,
	Palmer Dabbelt <palmer@dabbelt.com>,
	Weiwei Li <liwei1518@gmail.com>,
	Liu Zhiwei <zhiwei_liu@linux.alibaba.com>,
	Halil Pasic <pasic@linux.ibm.com>,
	Christian Borntraeger <borntraeger@linux.ibm.com>,
	Eric Farman <farman@linux.ibm.com>,
	David Hildenbrand <david@redhat.com>,
	Ilya Leoshkevich <iii@linux.ibm.com>,
	Yoshinori Sato <ysato@users.sourceforge.jp>,
	Magnus Damm <magnus.damm@gmail.com>,
	Artyom Tarasenko <atar4qemu@gmail.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Anthony Perard <anthony.perard@citrix.com>,
	Paul Durrant <paul@xen.org>,
	Max Filippov <jcmvbkbc@gmail.com>,
	qemu-arm@nongnu.org,
	qemu-ppc@nongnu.org,
	qemu-riscv@nongnu.org,
	qemu-s390x@nongnu.org,
	xen-devel@lists.xenproject.org,
	David Woodhouse <dwmw@amazon.co.uk>
Subject: [PATCH v3 30/46] hw/arm: use qemu_configure_nic_device()
Date: Mon,  8 Jan 2024 20:26:59 +0000
Message-ID: <20240108204909.564514-31-dwmw2@infradead.org>
X-Mailer: git-send-email 2.41.0
In-Reply-To: <20240108204909.564514-1-dwmw2@infradead.org>
References: <20240108204909.564514-1-dwmw2@infradead.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Sender: David Woodhouse <dwmw2@infradead.org>
X-SRS-Rewrite: SMTP reverse-path rewritten from <dwmw2@infradead.org> by casper.infradead.org. See http://www.infradead.org/rpr.html

From: David Woodhouse <dwmw@amazon.co.uk>

Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
---
 hw/arm/mps2-tz.c     |  8 ++------
 hw/arm/msf2-soc.c    |  6 +-----
 hw/arm/musicpal.c    |  3 +--
 hw/arm/xilinx_zynq.c | 11 ++++-------
 hw/arm/xlnx-versal.c |  7 +------
 hw/arm/xlnx-zynqmp.c |  8 +-------
 6 files changed, 10 insertions(+), 33 deletions(-)

diff --git a/hw/arm/mps2-tz.c b/hw/arm/mps2-tz.c
index 5d8cdc1a4c..a2d18afd79 100644
--- a/hw/arm/mps2-tz.c
+++ b/hw/arm/mps2-tz.c
@@ -503,14 +503,12 @@ static MemoryRegion *make_eth_dev(MPS2TZMachineState *mms, void *opaque,
                                   const PPCExtraData *extradata)
 {
     SysBusDevice *s;
-    NICInfo *nd = &nd_table[0];
 
     /* In hardware this is a LAN9220; the LAN9118 is software compatible
      * except that it doesn't support the checksum-offload feature.
      */
-    qemu_check_nic_model(nd, "lan9118");
     mms->lan9118 = qdev_new(TYPE_LAN9118);
-    qdev_set_nic_properties(mms->lan9118, nd);
+    qemu_configure_nic_device(mms->lan9118, true, NULL);
 
     s = SYS_BUS_DEVICE(mms->lan9118);
     sysbus_realize_and_unref(s, &error_fatal);
@@ -528,7 +526,6 @@ static MemoryRegion *make_eth_usb(MPS2TZMachineState *mms, void *opaque,
      * irqs[] is the ethernet IRQ.
      */
     SysBusDevice *s;
-    NICInfo *nd = &nd_table[0];
 
     memory_region_init(&mms->eth_usb_container, OBJECT(mms),
                        "mps2-tz-eth-usb-container", 0x200000);
@@ -537,9 +534,8 @@ static MemoryRegion *make_eth_usb(MPS2TZMachineState *mms, void *opaque,
      * In hardware this is a LAN9220; the LAN9118 is software compatible
      * except that it doesn't support the checksum-offload feature.
      */
-    qemu_check_nic_model(nd, "lan9118");
     mms->lan9118 = qdev_new(TYPE_LAN9118);
-    qdev_set_nic_properties(mms->lan9118, nd);
+    qemu_configure_nic_device(mms->lan9118, true, NULL);
 
     s = SYS_BUS_DEVICE(mms->lan9118);
     sysbus_realize_and_unref(s, &error_fatal);
diff --git a/hw/arm/msf2-soc.c b/hw/arm/msf2-soc.c
index b5fe9f364d..35bf1d64e1 100644
--- a/hw/arm/msf2-soc.c
+++ b/hw/arm/msf2-soc.c
@@ -197,12 +197,8 @@ static void m2sxxx_soc_realize(DeviceState *dev_soc, Error **errp)
         g_free(bus_name);
     }
 
-    /* FIXME use qdev NIC properties instead of nd_table[] */
-    if (nd_table[0].used) {
-        qemu_check_nic_model(&nd_table[0], TYPE_MSS_EMAC);
-        qdev_set_nic_properties(DEVICE(&s->emac), &nd_table[0]);
-    }
     dev = DEVICE(&s->emac);
+    qemu_configure_nic_device(dev, true, NULL);
     object_property_set_link(OBJECT(&s->emac), "ahb-bus",
                              OBJECT(get_system_memory()), &error_abort);
     if (!sysbus_realize(SYS_BUS_DEVICE(&s->emac), errp)) {
diff --git a/hw/arm/musicpal.c b/hw/arm/musicpal.c
index 3200c9f68a..8781e99d27 100644
--- a/hw/arm/musicpal.c
+++ b/hw/arm/musicpal.c
@@ -1286,9 +1286,8 @@ static void musicpal_init(MachineState *machine)
     }
     sysbus_create_simple(TYPE_MV88W8618_FLASHCFG, MP_FLASHCFG_BASE, NULL);
 
-    qemu_check_nic_model(&nd_table[0], "mv88w8618");
     dev = qdev_new(TYPE_MV88W8618_ETH);
-    qdev_set_nic_properties(dev, &nd_table[0]);
+    qemu_configure_nic_device(dev, true, "mv88w8618");
     object_property_set_link(OBJECT(dev), "dma-memory",
                              OBJECT(get_system_memory()), &error_fatal);
     sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal);
diff --git a/hw/arm/xilinx_zynq.c b/hw/arm/xilinx_zynq.c
index dbb9793aa1..73a6472b91 100644
--- a/hw/arm/xilinx_zynq.c
+++ b/hw/arm/xilinx_zynq.c
@@ -108,16 +108,13 @@ static void zynq_write_board_setup(ARMCPU *cpu,
 
 static struct arm_boot_info zynq_binfo = {};
 
-static void gem_init(NICInfo *nd, uint32_t base, qemu_irq irq)
+static void gem_init(uint32_t base, qemu_irq irq)
 {
     DeviceState *dev;
     SysBusDevice *s;
 
     dev = qdev_new(TYPE_CADENCE_GEM);
-    if (nd->used) {
-        qemu_check_nic_model(nd, TYPE_CADENCE_GEM);
-        qdev_set_nic_properties(dev, nd);
-    }
+    qemu_configure_nic_device(dev, true, NULL);
     object_property_set_int(OBJECT(dev), "phy-addr", 7, &error_abort);
     s = SYS_BUS_DEVICE(dev);
     sysbus_realize_and_unref(s, &error_fatal);
@@ -279,8 +276,8 @@ static void zynq_init(MachineState *machine)
     sysbus_create_varargs("cadence_ttc", 0xF8002000,
             pic[69-IRQ_OFFSET], pic[70-IRQ_OFFSET], pic[71-IRQ_OFFSET], NULL);
 
-    gem_init(&nd_table[0], 0xE000B000, pic[54-IRQ_OFFSET]);
-    gem_init(&nd_table[1], 0xE000C000, pic[77-IRQ_OFFSET]);
+    gem_init(0xE000B000, pic[54 - IRQ_OFFSET]);
+    gem_init(0xE000C000, pic[77 - IRQ_OFFSET]);
 
     for (n = 0; n < 2; n++) {
         int hci_irq = n ? 79 : 56;
diff --git a/hw/arm/xlnx-versal.c b/hw/arm/xlnx-versal.c
index 9600551c44..01965ddf99 100644
--- a/hw/arm/xlnx-versal.c
+++ b/hw/arm/xlnx-versal.c
@@ -254,18 +254,13 @@ static void versal_create_gems(Versal *s, qemu_irq *pic)
         static const int irqs[] = { VERSAL_GEM0_IRQ_0, VERSAL_GEM1_IRQ_0};
         static const uint64_t addrs[] = { MM_GEM0, MM_GEM1 };
         char *name = g_strdup_printf("gem%d", i);
-        NICInfo *nd = &nd_table[i];
         DeviceState *dev;
         MemoryRegion *mr;
 
         object_initialize_child(OBJECT(s), name, &s->lpd.iou.gem[i],
                                 TYPE_CADENCE_GEM);
         dev = DEVICE(&s->lpd.iou.gem[i]);
-        /* FIXME use qdev NIC properties instead of nd_table[] */
-        if (nd->used) {
-            qemu_check_nic_model(nd, "cadence_gem");
-            qdev_set_nic_properties(dev, nd);
-        }
+        qemu_configure_nic_device(dev, true, NULL);
         object_property_set_int(OBJECT(dev), "phy-addr", 23, &error_abort);
         object_property_set_int(OBJECT(dev), "num-priority-queues", 2,
                                 &error_abort);
diff --git a/hw/arm/xlnx-zynqmp.c b/hw/arm/xlnx-zynqmp.c
index 5905a33015..4f1714e4a1 100644
--- a/hw/arm/xlnx-zynqmp.c
+++ b/hw/arm/xlnx-zynqmp.c
@@ -616,13 +616,7 @@ static void xlnx_zynqmp_realize(DeviceState *dev, Error **errp)
     }
 
     for (i = 0; i < XLNX_ZYNQMP_NUM_GEMS; i++) {
-        NICInfo *nd = &nd_table[i];
-
-        /* FIXME use qdev NIC properties instead of nd_table[] */
-        if (nd->used) {
-            qemu_check_nic_model(nd, TYPE_CADENCE_GEM);
-            qdev_set_nic_properties(DEVICE(&s->gem[i]), nd);
-        }
+        qemu_configure_nic_device(DEVICE(&s->gem[i]), true, NULL);
         object_property_set_int(OBJECT(&s->gem[i]), "revision", GEM_REVISION,
                                 &error_abort);
         object_property_set_int(OBJECT(&s->gem[i]), "phy-addr", 23,
-- 
2.41.0



From xen-devel-bounces@lists.xenproject.org Mon Jan 08 20:51:13 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 08 Jan 2024 20:51:13 +0000
Received: from list by lists.xenproject.org with outflank-mailman.663910.1033939 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMwaX-0003bi-75; Mon, 08 Jan 2024 20:51:13 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 663910.1033939; Mon, 08 Jan 2024 20:51:12 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMwaW-0003Wl-5q; Mon, 08 Jan 2024 20:51:12 +0000
Received: by outflank-mailman (input) for mailman id 663910;
 Mon, 08 Jan 2024 20:51:08 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=NrlO=IS=casper.srs.infradead.org=BATV+41a72dc6539c0dfbbc31+7442+infradead.org+dwmw2@srs-se1.protection.inumbo.net>)
 id 1rMwaR-0000R5-Rq
 for xen-devel@lists.xenproject.org; Mon, 08 Jan 2024 20:51:07 +0000
Received: from casper.infradead.org (casper.infradead.org
 [2001:8b0:10b:1236::1])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id a2a7eecd-ae67-11ee-98ef-6d05b1d4d9a1;
 Mon, 08 Jan 2024 21:51:03 +0100 (CET)
Received: from [2001:8b0:10b:1::ebe] (helo=i7.infradead.org)
 by casper.infradead.org with esmtpsa (Exim 4.94.2 #2 (Red Hat Linux))
 id 1rMwYl-008RQ9-31; Mon, 08 Jan 2024 20:49:24 +0000
Received: from dwoodhou by i7.infradead.org with local (Exim 4.96.2 #2 (Red
 Hat Linux)) id 1rMwYl-002NH5-2H; Mon, 08 Jan 2024 20:49:23 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
X-Inumbo-ID: a2a7eecd-ae67-11ee-98ef-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=infradead.org; s=casper.20170209; h=Sender:Content-Transfer-Encoding:
	MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:
	Reply-To:Content-Type:Content-ID:Content-Description;
	bh=3IJgWxMmUdLOBVuYUZ4BO4uyS9hEOvqvAglyEu5N/aM=; b=ZlBVon3DzGBlJcC87Be0qL8RWU
	d6X4a+DxoBXqP/XC56vV646U0bCd4hdkyLAnU1gOfJvP0C/ZzRNMTkfwfzzf4mext7K0imLIVhvNI
	7coUYjY/T7UNIgIG85T/i9YMGkx8TR8sSvrDQh1F/vqzMXuY8Xw2sKB9xvUSr0rc2ofICePdTnDEu
	0o8fcUcIZB673qW57YhOeq/H8AT6j/TStiqxRQbHJKVAi0Q+dhqTf2bJMMW1B0HL8/8R3WbDQ5Xrx
	s5c7fcKmoTWB7pLR8xIRwnY+fyucp+GpIQICz922h/DyZTkH4cmVM6ML/C32nC8Zq5X6oEkYPxodk
	TwHGOZig==;
From: David Woodhouse <dwmw2@infradead.org>
To: qemu-devel@nongnu.org
Cc: Richard Henderson <richard.henderson@linaro.org>,
	Beniamino Galvani <b.galvani@gmail.com>,
	Peter Maydell <peter.maydell@linaro.org>,
	Strahinja Jankovic <strahinja.p.jankovic@gmail.com>,
	Niek Linnenbank <nieklinnenbank@gmail.com>,
	=?UTF-8?q?C=C3=A9dric=20Le=20Goater?= <clg@kaod.org>,
	Andrew Jeffery <andrew@codeconstruct.com.au>,
	Joel Stanley <joel@jms.id.au>,
	Igor Mitsyanko <i.mitsyanko@gmail.com>,
	Jean-Christophe Dubois <jcd@tribudubois.net>,
	Andrey Smirnov <andrew.smirnov@gmail.com>,
	=?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= <philmd@linaro.org>,
	Rob Herring <robh@kernel.org>,
	Subbaraya Sundeep <sundeep.lkml@gmail.com>,
	Jan Kiszka <jan.kiszka@web.de>,
	Tyrone Ting <kfting@nuvoton.com>,
	Hao Wu <wuhaotsh@google.com>,
	Radoslaw Biernacki <rad@semihalf.com>,
	Leif Lindholm <quic_llindhol@quicinc.com>,
	Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org>,
	"Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
	Alistair Francis <alistair@alistair23.me>,
	Helge Deller <deller@gmx.de>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Eduardo Habkost <eduardo@habkost.net>,
	"Michael S. Tsirkin" <mst@redhat.com>,
	Marcel Apfelbaum <marcel.apfelbaum@gmail.com>,
	Song Gao <gaosong@loongson.cn>,
	Thomas Huth <huth@tuxfamily.org>,
	Laurent Vivier <laurent@vivier.eu>,
	Huacai Chen <chenhuacai@kernel.org>,
	Jiaxun Yang <jiaxun.yang@flygoat.com>,
	=?UTF-8?q?Herv=C3=A9=20Poussineau?= <hpoussin@reactos.org>,
	Aleksandar Rikalo <aleksandar.rikalo@syrmia.com>,
	Aurelien Jarno <aurelien@aurel32.net>,
	Jason Wang <jasowang@redhat.com>,
	Jia Liu <proljc@gmail.com>,
	Stafford Horne <shorne@gmail.com>,
	Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>,
	Nicholas Piggin <npiggin@gmail.com>,
	Daniel Henrique Barboza <danielhb413@gmail.com>,
	David Gibson <david@gibson.dropbear.id.au>,
	Harsh Prateek Bora <harshpb@linux.ibm.com>,
	Bin Meng <bin.meng@windriver.com>,
	Palmer Dabbelt <palmer@dabbelt.com>,
	Weiwei Li <liwei1518@gmail.com>,
	Liu Zhiwei <zhiwei_liu@linux.alibaba.com>,
	Halil Pasic <pasic@linux.ibm.com>,
	Christian Borntraeger <borntraeger@linux.ibm.com>,
	Eric Farman <farman@linux.ibm.com>,
	David Hildenbrand <david@redhat.com>,
	Ilya Leoshkevich <iii@linux.ibm.com>,
	Yoshinori Sato <ysato@users.sourceforge.jp>,
	Magnus Damm <magnus.damm@gmail.com>,
	Artyom Tarasenko <atar4qemu@gmail.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Anthony Perard <anthony.perard@citrix.com>,
	Paul Durrant <paul@xen.org>,
	Max Filippov <jcmvbkbc@gmail.com>,
	qemu-arm@nongnu.org,
	qemu-ppc@nongnu.org,
	qemu-riscv@nongnu.org,
	qemu-s390x@nongnu.org,
	xen-devel@lists.xenproject.org,
	David Woodhouse <dwmw@amazon.co.uk>
Subject: [PATCH v3 42/46] hw/xtensa/xtfpga: use qemu_create_nic_device()
Date: Mon,  8 Jan 2024 20:27:11 +0000
Message-ID: <20240108204909.564514-43-dwmw2@infradead.org>
X-Mailer: git-send-email 2.41.0
In-Reply-To: <20240108204909.564514-1-dwmw2@infradead.org>
References: <20240108204909.564514-1-dwmw2@infradead.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Sender: David Woodhouse <dwmw2@infradead.org>
X-SRS-Rewrite: SMTP reverse-path rewritten from <dwmw2@infradead.org> by casper.infradead.org. See http://www.infradead.org/rpr.html

From: David Woodhouse <dwmw@amazon.co.uk>

Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
---
 hw/xtensa/xtfpga.c | 13 ++++++-------
 1 file changed, 6 insertions(+), 7 deletions(-)

diff --git a/hw/xtensa/xtfpga.c b/hw/xtensa/xtfpga.c
index fbad1c83a3..f49e6591dc 100644
--- a/hw/xtensa/xtfpga.c
+++ b/hw/xtensa/xtfpga.c
@@ -141,14 +141,16 @@ static void xtfpga_net_init(MemoryRegion *address_space,
         hwaddr base,
         hwaddr descriptors,
         hwaddr buffers,
-        qemu_irq irq, NICInfo *nd)
+        qemu_irq irq)
 {
     DeviceState *dev;
     SysBusDevice *s;
     MemoryRegion *ram;
 
-    dev = qdev_new("open_eth");
-    qdev_set_nic_properties(dev, nd);
+    dev = qemu_create_nic_device("open_eth", true, NULL);
+    if (!dev) {
+        return;
+    }
 
     s = SYS_BUS_DEVICE(dev);
     sysbus_realize_and_unref(s, &error_fatal);
@@ -301,10 +303,7 @@ static void xtfpga_init(const XtfpgaBoardDesc *board, MachineState *machine)
         memory_region_add_subregion(system_memory, board->io[1], io);
     }
     xtfpga_fpga_init(system_io, 0x0d020000, freq);
-    if (nd_table[0].used) {
-        xtfpga_net_init(system_io, 0x0d030000, 0x0d030400, 0x0d800000,
-                        extints[1], nd_table);
-    }
+    xtfpga_net_init(system_io, 0x0d030000, 0x0d030400, 0x0d800000, extints[1]);
 
     serial_mm_init(system_io, 0x0d050020, 2, extints[0],
                    115200, serial_hd(0), DEVICE_NATIVE_ENDIAN);
-- 
2.41.0



From xen-devel-bounces@lists.xenproject.org Mon Jan 08 20:51:14 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 08 Jan 2024 20:51:14 +0000
Received: from list by lists.xenproject.org with outflank-mailman.663911.1033940 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMwaX-0003mC-JC; Mon, 08 Jan 2024 20:51:13 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 663911.1033940; Mon, 08 Jan 2024 20:51:13 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMwaW-0003hX-PH; Mon, 08 Jan 2024 20:51:12 +0000
Received: by outflank-mailman (input) for mailman id 663911;
 Mon, 08 Jan 2024 20:51:09 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=NrlO=IS=casper.srs.infradead.org=BATV+41a72dc6539c0dfbbc31+7442+infradead.org+dwmw2@srs-se1.protection.inumbo.net>)
 id 1rMwaS-0000R5-Rq
 for xen-devel@lists.xenproject.org; Mon, 08 Jan 2024 20:51:08 +0000
Received: from casper.infradead.org (casper.infradead.org
 [2001:8b0:10b:1236::1])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id a4321408-ae67-11ee-98ef-6d05b1d4d9a1;
 Mon, 08 Jan 2024 21:51:05 +0100 (CET)
Received: from [2001:8b0:10b:1::ebe] (helo=i7.infradead.org)
 by casper.infradead.org with esmtpsa (Exim 4.94.2 #2 (Red Hat Linux))
 id 1rMwYk-008RQ7-PV; Mon, 08 Jan 2024 20:49:24 +0000
Received: from dwoodhou by i7.infradead.org with local (Exim 4.96.2 #2 (Red
 Hat Linux)) id 1rMwYl-002NGr-1c; Mon, 08 Jan 2024 20:49:23 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
X-Inumbo-ID: a4321408-ae67-11ee-98ef-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=infradead.org; s=casper.20170209; h=Sender:Content-Transfer-Encoding:
	MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:
	Reply-To:Content-Type:Content-ID:Content-Description;
	bh=ZkSNmy83S4DOqkgHUNjcsUnKDxjqNwsV356V+7t17VI=; b=EQc+yjRlYKASMGRQ5TGtJYtw74
	sF8ySymUAdfsOgT4x8BrVFBLhebRSylHntgqIY++FPzBttXXgr/16ja7fa2J1+ehxRT60nkpIJ6O2
	xdt6IBFKc6PoA3ULA/douiQH9RzvQ2xt9Wqg2tyJbaDQBf1BW2CB3ctV16gcUYApEAKkwdCHnPPyN
	iQ5mxU5swxpdModrJuuKK28dz5xRvKVKpiNRdDaPMFGioGC7eFsMNDKDyTOmQENQyzl80fz01z2zn
	Rl+kUJ85iSOo9TQly6JKlt7Nw8vnlz4wR7uiOnNFppoUpeXr7e8yTOB9xXJR8ax9b+bRWyyATW+sE
	MnMHK9vA==;
From: David Woodhouse <dwmw2@infradead.org>
To: qemu-devel@nongnu.org
Cc: Richard Henderson <richard.henderson@linaro.org>,
	Beniamino Galvani <b.galvani@gmail.com>,
	Peter Maydell <peter.maydell@linaro.org>,
	Strahinja Jankovic <strahinja.p.jankovic@gmail.com>,
	Niek Linnenbank <nieklinnenbank@gmail.com>,
	=?UTF-8?q?C=C3=A9dric=20Le=20Goater?= <clg@kaod.org>,
	Andrew Jeffery <andrew@codeconstruct.com.au>,
	Joel Stanley <joel@jms.id.au>,
	Igor Mitsyanko <i.mitsyanko@gmail.com>,
	Jean-Christophe Dubois <jcd@tribudubois.net>,
	Andrey Smirnov <andrew.smirnov@gmail.com>,
	=?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= <philmd@linaro.org>,
	Rob Herring <robh@kernel.org>,
	Subbaraya Sundeep <sundeep.lkml@gmail.com>,
	Jan Kiszka <jan.kiszka@web.de>,
	Tyrone Ting <kfting@nuvoton.com>,
	Hao Wu <wuhaotsh@google.com>,
	Radoslaw Biernacki <rad@semihalf.com>,
	Leif Lindholm <quic_llindhol@quicinc.com>,
	Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org>,
	"Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
	Alistair Francis <alistair@alistair23.me>,
	Helge Deller <deller@gmx.de>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Eduardo Habkost <eduardo@habkost.net>,
	"Michael S. Tsirkin" <mst@redhat.com>,
	Marcel Apfelbaum <marcel.apfelbaum@gmail.com>,
	Song Gao <gaosong@loongson.cn>,
	Thomas Huth <huth@tuxfamily.org>,
	Laurent Vivier <laurent@vivier.eu>,
	Huacai Chen <chenhuacai@kernel.org>,
	Jiaxun Yang <jiaxun.yang@flygoat.com>,
	=?UTF-8?q?Herv=C3=A9=20Poussineau?= <hpoussin@reactos.org>,
	Aleksandar Rikalo <aleksandar.rikalo@syrmia.com>,
	Aurelien Jarno <aurelien@aurel32.net>,
	Jason Wang <jasowang@redhat.com>,
	Jia Liu <proljc@gmail.com>,
	Stafford Horne <shorne@gmail.com>,
	Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>,
	Nicholas Piggin <npiggin@gmail.com>,
	Daniel Henrique Barboza <danielhb413@gmail.com>,
	David Gibson <david@gibson.dropbear.id.au>,
	Harsh Prateek Bora <harshpb@linux.ibm.com>,
	Bin Meng <bin.meng@windriver.com>,
	Palmer Dabbelt <palmer@dabbelt.com>,
	Weiwei Li <liwei1518@gmail.com>,
	Liu Zhiwei <zhiwei_liu@linux.alibaba.com>,
	Halil Pasic <pasic@linux.ibm.com>,
	Christian Borntraeger <borntraeger@linux.ibm.com>,
	Eric Farman <farman@linux.ibm.com>,
	David Hildenbrand <david@redhat.com>,
	Ilya Leoshkevich <iii@linux.ibm.com>,
	Yoshinori Sato <ysato@users.sourceforge.jp>,
	Magnus Damm <magnus.damm@gmail.com>,
	Artyom Tarasenko <atar4qemu@gmail.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Anthony Perard <anthony.perard@citrix.com>,
	Paul Durrant <paul@xen.org>,
	Max Filippov <jcmvbkbc@gmail.com>,
	qemu-arm@nongnu.org,
	qemu-ppc@nongnu.org,
	qemu-riscv@nongnu.org,
	qemu-s390x@nongnu.org,
	xen-devel@lists.xenproject.org,
	David Woodhouse <dwmw@amazon.co.uk>
Subject: [PATCH v3 39/46] hw/riscv: use qemu_configure_nic_device()
Date: Mon,  8 Jan 2024 20:27:08 +0000
Message-ID: <20240108204909.564514-40-dwmw2@infradead.org>
X-Mailer: git-send-email 2.41.0
In-Reply-To: <20240108204909.564514-1-dwmw2@infradead.org>
References: <20240108204909.564514-1-dwmw2@infradead.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Sender: David Woodhouse <dwmw2@infradead.org>
X-SRS-Rewrite: SMTP reverse-path rewritten from <dwmw2@infradead.org> by casper.infradead.org. See http://www.infradead.org/rpr.html

From: David Woodhouse <dwmw@amazon.co.uk>

Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
---
 hw/riscv/microchip_pfsoc.c | 14 ++------------
 hw/riscv/sifive_u.c        |  7 +------
 2 files changed, 3 insertions(+), 18 deletions(-)

diff --git a/hw/riscv/microchip_pfsoc.c b/hw/riscv/microchip_pfsoc.c
index b775aa8946..7725dfbde5 100644
--- a/hw/riscv/microchip_pfsoc.c
+++ b/hw/riscv/microchip_pfsoc.c
@@ -202,7 +202,6 @@ static void microchip_pfsoc_soc_realize(DeviceState *dev, Error **errp)
     MemoryRegion *envm_data = g_new(MemoryRegion, 1);
     MemoryRegion *qspi_xip_mem = g_new(MemoryRegion, 1);
     char *plic_hart_config;
-    NICInfo *nd;
     int i;
 
     sysbus_realize(SYS_BUS_DEVICE(&s->e_cpus), &error_abort);
@@ -411,17 +410,8 @@ static void microchip_pfsoc_soc_realize(DeviceState *dev, Error **errp)
         memmap[MICROCHIP_PFSOC_USB].size);
 
     /* GEMs */
-
-    nd = &nd_table[0];
-    if (nd->used) {
-        qemu_check_nic_model(nd, TYPE_CADENCE_GEM);
-        qdev_set_nic_properties(DEVICE(&s->gem0), nd);
-    }
-    nd = &nd_table[1];
-    if (nd->used) {
-        qemu_check_nic_model(nd, TYPE_CADENCE_GEM);
-        qdev_set_nic_properties(DEVICE(&s->gem1), nd);
-    }
+    qemu_configure_nic_device(DEVICE(&s->gem0), true, NULL);
+    qemu_configure_nic_device(DEVICE(&s->gem1), true, NULL);
 
     object_property_set_int(OBJECT(&s->gem0), "revision", GEM_REVISION, errp);
     object_property_set_int(OBJECT(&s->gem0), "phy-addr", 8, errp);
diff --git a/hw/riscv/sifive_u.c b/hw/riscv/sifive_u.c
index ec76dce6c9..5207ec1fa5 100644
--- a/hw/riscv/sifive_u.c
+++ b/hw/riscv/sifive_u.c
@@ -789,7 +789,6 @@ static void sifive_u_soc_realize(DeviceState *dev, Error **errp)
     MemoryRegion *l2lim_mem = g_new(MemoryRegion, 1);
     char *plic_hart_config;
     int i, j;
-    NICInfo *nd = &nd_table[0];
 
     qdev_prop_set_uint32(DEVICE(&s->u_cpus), "num-harts", ms->smp.cpus - 1);
     qdev_prop_set_uint32(DEVICE(&s->u_cpus), "hartid-base", 1);
@@ -893,11 +892,7 @@ static void sifive_u_soc_realize(DeviceState *dev, Error **errp)
     }
     sysbus_mmio_map(SYS_BUS_DEVICE(&s->otp), 0, memmap[SIFIVE_U_DEV_OTP].base);
 
-    /* FIXME use qdev NIC properties instead of nd_table[] */
-    if (nd->used) {
-        qemu_check_nic_model(nd, TYPE_CADENCE_GEM);
-        qdev_set_nic_properties(DEVICE(&s->gem), nd);
-    }
+    qemu_configure_nic_device(DEVICE(&s->gem), true, NULL);
     object_property_set_int(OBJECT(&s->gem), "revision", GEM_REVISION,
                             &error_abort);
     if (!sysbus_realize(SYS_BUS_DEVICE(&s->gem), errp)) {
-- 
2.41.0



From xen-devel-bounces@lists.xenproject.org Mon Jan 08 20:51:15 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 08 Jan 2024 20:51:15 +0000
Received: from list by lists.xenproject.org with outflank-mailman.663912.1033954 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMwaY-000467-SC; Mon, 08 Jan 2024 20:51:14 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 663912.1033954; Mon, 08 Jan 2024 20:51:14 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMwaX-00041U-W5; Mon, 08 Jan 2024 20:51:14 +0000
Received: by outflank-mailman (input) for mailman id 663912;
 Mon, 08 Jan 2024 20:51:09 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=CNLN=IS=desiato.srs.infradead.org=BATV+a33e3d7a5f0474923369+7442+infradead.org+dwmw2@srs-se1.protection.inumbo.net>)
 id 1rMwaT-0000R6-9h
 for xen-devel@lists.xenproject.org; Mon, 08 Jan 2024 20:51:09 +0000
Received: from desiato.infradead.org (desiato.infradead.org
 [2001:8b0:10b:1:d65d:64ff:fe57:4e05])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id a4ddf61a-ae67-11ee-9b0f-b553b5be7939;
 Mon, 08 Jan 2024 21:51:06 +0100 (CET)
Received: from [2001:8b0:10b:1::ebe] (helo=i7.infradead.org)
 by desiato.infradead.org with esmtpsa (Exim 4.96 #2 (Red Hat Linux))
 id 1rMwYm-007wXw-0J; Mon, 08 Jan 2024 20:49:24 +0000
Received: from dwoodhou by i7.infradead.org with local (Exim 4.96.2 #2 (Red
 Hat Linux)) id 1rMwYl-002NGm-1P; Mon, 08 Jan 2024 20:49:23 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
X-Inumbo-ID: a4ddf61a-ae67-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=infradead.org; s=desiato.20200630; h=Sender:Content-Transfer-Encoding:
	MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:
	Reply-To:Content-Type:Content-ID:Content-Description;
	bh=AhJIqQ4JvGd0KYjdhY7u9mp0ZZRVDk/M4nuhh3LTnPc=; b=QCk8aYCkC346WPe06AhMAiDeaM
	wfg8iT+0fMlHnulAR9D/433Cl2gjJ8UP2O8m1cxUBdlVPBPbzyz1foyPaCRcP34NQUMYxzCTl4+db
	o50Ep9pyalIkHCiIKdizJVrKhaaZP1CYNfqOKeQroBk2uPkSpgtE6swFA9CkQpRDxOSjnbA5gNaGH
	HICKCAy8u3JV4UY7XqHoWa9Dlr/x+Dos61Oxq3k4Zktd/cY+aPkHq0KWFuVwklG/mApd9HPXC7XTu
	VCEr3nG/8ImCZTzQugIZlf+94FLPbHxRIO/1oNg4wVGc2+nsdlCBYFwrgprv1PsC1RujeJHMrHIN3
	l8QYFd/A==;
From: David Woodhouse <dwmw2@infradead.org>
To: qemu-devel@nongnu.org
Cc: Richard Henderson <richard.henderson@linaro.org>,
	Beniamino Galvani <b.galvani@gmail.com>,
	Peter Maydell <peter.maydell@linaro.org>,
	Strahinja Jankovic <strahinja.p.jankovic@gmail.com>,
	Niek Linnenbank <nieklinnenbank@gmail.com>,
	=?UTF-8?q?C=C3=A9dric=20Le=20Goater?= <clg@kaod.org>,
	Andrew Jeffery <andrew@codeconstruct.com.au>,
	Joel Stanley <joel@jms.id.au>,
	Igor Mitsyanko <i.mitsyanko@gmail.com>,
	Jean-Christophe Dubois <jcd@tribudubois.net>,
	Andrey Smirnov <andrew.smirnov@gmail.com>,
	=?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= <philmd@linaro.org>,
	Rob Herring <robh@kernel.org>,
	Subbaraya Sundeep <sundeep.lkml@gmail.com>,
	Jan Kiszka <jan.kiszka@web.de>,
	Tyrone Ting <kfting@nuvoton.com>,
	Hao Wu <wuhaotsh@google.com>,
	Radoslaw Biernacki <rad@semihalf.com>,
	Leif Lindholm <quic_llindhol@quicinc.com>,
	Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org>,
	"Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
	Alistair Francis <alistair@alistair23.me>,
	Helge Deller <deller@gmx.de>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Eduardo Habkost <eduardo@habkost.net>,
	"Michael S. Tsirkin" <mst@redhat.com>,
	Marcel Apfelbaum <marcel.apfelbaum@gmail.com>,
	Song Gao <gaosong@loongson.cn>,
	Thomas Huth <huth@tuxfamily.org>,
	Laurent Vivier <laurent@vivier.eu>,
	Huacai Chen <chenhuacai@kernel.org>,
	Jiaxun Yang <jiaxun.yang@flygoat.com>,
	=?UTF-8?q?Herv=C3=A9=20Poussineau?= <hpoussin@reactos.org>,
	Aleksandar Rikalo <aleksandar.rikalo@syrmia.com>,
	Aurelien Jarno <aurelien@aurel32.net>,
	Jason Wang <jasowang@redhat.com>,
	Jia Liu <proljc@gmail.com>,
	Stafford Horne <shorne@gmail.com>,
	Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>,
	Nicholas Piggin <npiggin@gmail.com>,
	Daniel Henrique Barboza <danielhb413@gmail.com>,
	David Gibson <david@gibson.dropbear.id.au>,
	Harsh Prateek Bora <harshpb@linux.ibm.com>,
	Bin Meng <bin.meng@windriver.com>,
	Palmer Dabbelt <palmer@dabbelt.com>,
	Weiwei Li <liwei1518@gmail.com>,
	Liu Zhiwei <zhiwei_liu@linux.alibaba.com>,
	Halil Pasic <pasic@linux.ibm.com>,
	Christian Borntraeger <borntraeger@linux.ibm.com>,
	Eric Farman <farman@linux.ibm.com>,
	David Hildenbrand <david@redhat.com>,
	Ilya Leoshkevich <iii@linux.ibm.com>,
	Yoshinori Sato <ysato@users.sourceforge.jp>,
	Magnus Damm <magnus.damm@gmail.com>,
	Artyom Tarasenko <atar4qemu@gmail.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Anthony Perard <anthony.perard@citrix.com>,
	Paul Durrant <paul@xen.org>,
	Max Filippov <jcmvbkbc@gmail.com>,
	qemu-arm@nongnu.org,
	qemu-ppc@nongnu.org,
	qemu-riscv@nongnu.org,
	qemu-s390x@nongnu.org,
	xen-devel@lists.xenproject.org,
	David Woodhouse <dwmw@amazon.co.uk>
Subject: [PATCH v3 38/46] hw/openrisc/openrisc_sim: use qemu_create_nic_device()
Date: Mon,  8 Jan 2024 20:27:07 +0000
Message-ID: <20240108204909.564514-39-dwmw2@infradead.org>
X-Mailer: git-send-email 2.41.0
In-Reply-To: <20240108204909.564514-1-dwmw2@infradead.org>
References: <20240108204909.564514-1-dwmw2@infradead.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Sender: David Woodhouse <dwmw2@infradead.org>
X-SRS-Rewrite: SMTP reverse-path rewritten from <dwmw2@infradead.org> by desiato.infradead.org. See http://www.infradead.org/rpr.html

From: David Woodhouse <dwmw@amazon.co.uk>

Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
---
 hw/openrisc/openrisc_sim.c | 18 +++++++++---------
 1 file changed, 9 insertions(+), 9 deletions(-)

diff --git a/hw/openrisc/openrisc_sim.c b/hw/openrisc/openrisc_sim.c
index 35da123aef..bffd6f721f 100644
--- a/hw/openrisc/openrisc_sim.c
+++ b/hw/openrisc/openrisc_sim.c
@@ -170,7 +170,7 @@ static void openrisc_create_fdt(Or1ksimState *state,
 
 static void openrisc_sim_net_init(Or1ksimState *state, hwaddr base, hwaddr size,
                                   int num_cpus, OpenRISCCPU *cpus[],
-                                  int irq_pin, NICInfo *nd)
+                                  int irq_pin)
 {
     void *fdt = state->fdt;
     DeviceState *dev;
@@ -178,8 +178,10 @@ static void openrisc_sim_net_init(Or1ksimState *state, hwaddr base, hwaddr size,
     char *nodename;
     int i;
 
-    dev = qdev_new("open_eth");
-    qdev_set_nic_properties(dev, nd);
+    dev = qemu_create_nic_device("open_eth", true, NULL);
+    if (!dev) {
+        return;
+    }
 
     s = SYS_BUS_DEVICE(dev);
     sysbus_realize_and_unref(s, &error_fatal);
@@ -313,12 +315,10 @@ static void openrisc_sim_init(MachineState *machine)
     openrisc_create_fdt(state, or1ksim_memmap, smp_cpus, machine->ram_size,
                         machine->kernel_cmdline);
 
-    if (nd_table[0].used) {
-        openrisc_sim_net_init(state, or1ksim_memmap[OR1KSIM_ETHOC].base,
-                              or1ksim_memmap[OR1KSIM_ETHOC].size,
-                              smp_cpus, cpus,
-                              OR1KSIM_ETHOC_IRQ, nd_table);
-    }
+    openrisc_sim_net_init(state, or1ksim_memmap[OR1KSIM_ETHOC].base,
+                          or1ksim_memmap[OR1KSIM_ETHOC].size,
+                          smp_cpus, cpus,
+                          OR1KSIM_ETHOC_IRQ);
 
     if (smp_cpus > 1) {
         openrisc_sim_ompic_init(state, or1ksim_memmap[OR1KSIM_OMPIC].base,
-- 
2.41.0



From xen-devel-bounces@lists.xenproject.org Mon Jan 08 20:51:16 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 08 Jan 2024 20:51:16 +0000
Received: from list by lists.xenproject.org with outflank-mailman.663913.1033961 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMwaZ-0004O2-Ui; Mon, 08 Jan 2024 20:51:15 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 663913.1033961; Mon, 08 Jan 2024 20:51:15 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMwaZ-0004I5-5y; Mon, 08 Jan 2024 20:51:15 +0000
Received: by outflank-mailman (input) for mailman id 663913;
 Mon, 08 Jan 2024 20:51:10 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=NrlO=IS=casper.srs.infradead.org=BATV+41a72dc6539c0dfbbc31+7442+infradead.org+dwmw2@srs-se1.protection.inumbo.net>)
 id 1rMwaU-0000R6-9t
 for xen-devel@lists.xenproject.org; Mon, 08 Jan 2024 20:51:10 +0000
Received: from casper.infradead.org (casper.infradead.org
 [2001:8b0:10b:1236::1])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id a4d55755-ae67-11ee-9b0f-b553b5be7939;
 Mon, 08 Jan 2024 21:51:06 +0100 (CET)
Received: from [2001:8b0:10b:1::ebe] (helo=i7.infradead.org)
 by casper.infradead.org with esmtpsa (Exim 4.94.2 #2 (Red Hat Linux))
 id 1rMwYk-008RPx-4k; Mon, 08 Jan 2024 20:49:23 +0000
Received: from dwoodhou by i7.infradead.org with local (Exim 4.96.2 #2 (Red
 Hat Linux)) id 1rMwYk-002NFp-28; Mon, 08 Jan 2024 20:49:22 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
X-Inumbo-ID: a4d55755-ae67-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=infradead.org; s=casper.20170209; h=Sender:Content-Transfer-Encoding:
	MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:
	Reply-To:Content-Type:Content-ID:Content-Description;
	bh=gAKwLxJ9GrgFAgVd8NfOlltKClYjwdlcDlfOHDbpTRo=; b=m9RL72hoic6j71eYQXCMpigCQe
	kc7kcinrlRJQT0Dra5IIza7HBIzUpfvP5+FJXezICTEkDc6nRNpoxfqjpKKsZVnzqw1cURpeRGXx+
	V6y/uGAb1uqTlEvsdxiw913WMZpVWKi1lJF/d98AFA9UytmAYsZSF71U5gtWVtT0BdwqCH8eM2ocW
	Pqh3uqD98gkzuDPYFCSM2yaVbwuk+7KGIn0tWWOErXzbgRblNoO2egcYiWSXe5JWB9k7sSjPHzsk9
	TBJVdEVZ5St8UB4risV+pAvMeTKX4hufCKmrZBrjH8zqus4Fwf68EclEkgpVrxIJHhDSQ9MO7C5ob
	5Ffqt/iA==;
From: David Woodhouse <dwmw2@infradead.org>
To: qemu-devel@nongnu.org
Cc: Richard Henderson <richard.henderson@linaro.org>,
	Beniamino Galvani <b.galvani@gmail.com>,
	Peter Maydell <peter.maydell@linaro.org>,
	Strahinja Jankovic <strahinja.p.jankovic@gmail.com>,
	Niek Linnenbank <nieklinnenbank@gmail.com>,
	=?UTF-8?q?C=C3=A9dric=20Le=20Goater?= <clg@kaod.org>,
	Andrew Jeffery <andrew@codeconstruct.com.au>,
	Joel Stanley <joel@jms.id.au>,
	Igor Mitsyanko <i.mitsyanko@gmail.com>,
	Jean-Christophe Dubois <jcd@tribudubois.net>,
	Andrey Smirnov <andrew.smirnov@gmail.com>,
	=?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= <philmd@linaro.org>,
	Rob Herring <robh@kernel.org>,
	Subbaraya Sundeep <sundeep.lkml@gmail.com>,
	Jan Kiszka <jan.kiszka@web.de>,
	Tyrone Ting <kfting@nuvoton.com>,
	Hao Wu <wuhaotsh@google.com>,
	Radoslaw Biernacki <rad@semihalf.com>,
	Leif Lindholm <quic_llindhol@quicinc.com>,
	Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org>,
	"Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
	Alistair Francis <alistair@alistair23.me>,
	Helge Deller <deller@gmx.de>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Eduardo Habkost <eduardo@habkost.net>,
	"Michael S. Tsirkin" <mst@redhat.com>,
	Marcel Apfelbaum <marcel.apfelbaum@gmail.com>,
	Song Gao <gaosong@loongson.cn>,
	Thomas Huth <huth@tuxfamily.org>,
	Laurent Vivier <laurent@vivier.eu>,
	Huacai Chen <chenhuacai@kernel.org>,
	Jiaxun Yang <jiaxun.yang@flygoat.com>,
	=?UTF-8?q?Herv=C3=A9=20Poussineau?= <hpoussin@reactos.org>,
	Aleksandar Rikalo <aleksandar.rikalo@syrmia.com>,
	Aurelien Jarno <aurelien@aurel32.net>,
	Jason Wang <jasowang@redhat.com>,
	Jia Liu <proljc@gmail.com>,
	Stafford Horne <shorne@gmail.com>,
	Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>,
	Nicholas Piggin <npiggin@gmail.com>,
	Daniel Henrique Barboza <danielhb413@gmail.com>,
	David Gibson <david@gibson.dropbear.id.au>,
	Harsh Prateek Bora <harshpb@linux.ibm.com>,
	Bin Meng <bin.meng@windriver.com>,
	Palmer Dabbelt <palmer@dabbelt.com>,
	Weiwei Li <liwei1518@gmail.com>,
	Liu Zhiwei <zhiwei_liu@linux.alibaba.com>,
	Halil Pasic <pasic@linux.ibm.com>,
	Christian Borntraeger <borntraeger@linux.ibm.com>,
	Eric Farman <farman@linux.ibm.com>,
	David Hildenbrand <david@redhat.com>,
	Ilya Leoshkevich <iii@linux.ibm.com>,
	Yoshinori Sato <ysato@users.sourceforge.jp>,
	Magnus Damm <magnus.damm@gmail.com>,
	Artyom Tarasenko <atar4qemu@gmail.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Anthony Perard <anthony.perard@citrix.com>,
	Paul Durrant <paul@xen.org>,
	Max Filippov <jcmvbkbc@gmail.com>,
	qemu-arm@nongnu.org,
	qemu-ppc@nongnu.org,
	qemu-riscv@nongnu.org,
	qemu-s390x@nongnu.org,
	xen-devel@lists.xenproject.org,
	David Woodhouse <dwmw@amazon.co.uk>
Subject: [PATCH v3 27/46] hw/arm/highbank: use qemu_create_nic_device()
Date: Mon,  8 Jan 2024 20:26:56 +0000
Message-ID: <20240108204909.564514-28-dwmw2@infradead.org>
X-Mailer: git-send-email 2.41.0
In-Reply-To: <20240108204909.564514-1-dwmw2@infradead.org>
References: <20240108204909.564514-1-dwmw2@infradead.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Sender: David Woodhouse <dwmw2@infradead.org>
X-SRS-Rewrite: SMTP reverse-path rewritten from <dwmw2@infradead.org> by casper.infradead.org. See http://www.infradead.org/rpr.html

From: David Woodhouse <dwmw@amazon.co.uk>

Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
---
 hw/arm/highbank.c | 12 +++++-------
 1 file changed, 5 insertions(+), 7 deletions(-)

diff --git a/hw/arm/highbank.c b/hw/arm/highbank.c
index c21e18d08f..6a0e20e58d 100644
--- a/hw/arm/highbank.c
+++ b/hw/arm/highbank.c
@@ -296,19 +296,17 @@ static void calxeda_init(MachineState *machine, enum cxmachines machine_id)
 
     sysbus_create_simple(TYPE_SYSBUS_AHCI, 0xffe08000, pic[83]);
 
-    if (nd_table[0].used) {
-        qemu_check_nic_model(&nd_table[0], "xgmac");
-        dev = qdev_new("xgmac");
-        qdev_set_nic_properties(dev, &nd_table[0]);
+    dev = qemu_create_nic_device("xgmac", true, NULL);
+    if (dev) {
         sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal);
         sysbus_mmio_map(SYS_BUS_DEVICE(dev), 0, 0xfff50000);
         sysbus_connect_irq(SYS_BUS_DEVICE(dev), 0, pic[77]);
         sysbus_connect_irq(SYS_BUS_DEVICE(dev), 1, pic[78]);
         sysbus_connect_irq(SYS_BUS_DEVICE(dev), 2, pic[79]);
+    }
 
-        qemu_check_nic_model(&nd_table[1], "xgmac");
-        dev = qdev_new("xgmac");
-        qdev_set_nic_properties(dev, &nd_table[1]);
+    dev = qemu_create_nic_device("xgmac", true, NULL);
+    if (dev) {
         sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal);
         sysbus_mmio_map(SYS_BUS_DEVICE(dev), 0, 0xfff51000);
         sysbus_connect_irq(SYS_BUS_DEVICE(dev), 0, pic[80]);
-- 
2.41.0



From xen-devel-bounces@lists.xenproject.org Mon Jan 08 20:58:21 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 08 Jan 2024 20:58:21 +0000
Received: from list by lists.xenproject.org with outflank-mailman.663954.1033999 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMwhN-00030W-3O; Mon, 08 Jan 2024 20:58:17 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 663954.1033999; Mon, 08 Jan 2024 20:58:17 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMwhN-00030P-0s; Mon, 08 Jan 2024 20:58:17 +0000
Received: by outflank-mailman (input) for mailman id 663954;
 Mon, 08 Jan 2024 20:58:15 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=CNLN=IS=desiato.srs.infradead.org=BATV+a33e3d7a5f0474923369+7442+infradead.org+dwmw2@srs-se1.protection.inumbo.net>)
 id 1rMwb0-0000R5-Bl
 for xen-devel@lists.xenproject.org; Mon, 08 Jan 2024 20:51:42 +0000
Received: from desiato.infradead.org (desiato.infradead.org
 [2001:8b0:10b:1:d65d:64ff:fe57:4e05])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id b79074fd-ae67-11ee-98ef-6d05b1d4d9a1;
 Mon, 08 Jan 2024 21:51:38 +0100 (CET)
Received: from [2001:8b0:10b:1::ebe] (helo=i7.infradead.org)
 by desiato.infradead.org with esmtpsa (Exim 4.96 #2 (Red Hat Linux))
 id 1rMwYj-007wXL-2q; Mon, 08 Jan 2024 20:49:22 +0000
Received: from dwoodhou by i7.infradead.org with local (Exim 4.96.2 #2 (Red
 Hat Linux)) id 1rMwYi-002NEJ-2l; Mon, 08 Jan 2024 20:49:20 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
X-Inumbo-ID: b79074fd-ae67-11ee-98ef-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=infradead.org; s=desiato.20200630; h=Sender:Content-Transfer-Encoding:
	MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:
	Reply-To:Content-Type:Content-ID:Content-Description;
	bh=rSgtkPSzwnCHxRJZGHve2nBAqz1Yf5otlux10XTm0DE=; b=XUNhWfKg0/8oGgchc9BRQErx+S
	Ji3UyzRWU7NPjSFZRXdaCPXuq5PQ6AFNg+56fe8aw99Pxx8iDU0ET5Rav+aKqUsR2xFcUHfow245F
	Aa7JV42ypanOZ8kJ7JhfhAPMA5gQQU0BwxeF0tjx2qTjaKgqa/W5/v0dUgCWkTcCYIV8fgcUAQASG
	ioRWEkquMOfRIiwRNSmwYoSeKIBvKuhlJKvi0y9p0WAIxg5M0OA4nxjM2RaR4TFgmEXK7mPs9y2wW
	mhOYt+AgqjXpI3deNFFKMSeISUyQ35oyMjbOJnjsVlnko+LvjCykihLraUJNBb8+92QU2XzM/Te95
	1zXtrasg==;
From: David Woodhouse <dwmw2@infradead.org>
To: qemu-devel@nongnu.org
Cc: Richard Henderson <richard.henderson@linaro.org>,
	Beniamino Galvani <b.galvani@gmail.com>,
	Peter Maydell <peter.maydell@linaro.org>,
	Strahinja Jankovic <strahinja.p.jankovic@gmail.com>,
	Niek Linnenbank <nieklinnenbank@gmail.com>,
	=?UTF-8?q?C=C3=A9dric=20Le=20Goater?= <clg@kaod.org>,
	Andrew Jeffery <andrew@codeconstruct.com.au>,
	Joel Stanley <joel@jms.id.au>,
	Igor Mitsyanko <i.mitsyanko@gmail.com>,
	Jean-Christophe Dubois <jcd@tribudubois.net>,
	Andrey Smirnov <andrew.smirnov@gmail.com>,
	=?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= <philmd@linaro.org>,
	Rob Herring <robh@kernel.org>,
	Subbaraya Sundeep <sundeep.lkml@gmail.com>,
	Jan Kiszka <jan.kiszka@web.de>,
	Tyrone Ting <kfting@nuvoton.com>,
	Hao Wu <wuhaotsh@google.com>,
	Radoslaw Biernacki <rad@semihalf.com>,
	Leif Lindholm <quic_llindhol@quicinc.com>,
	Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org>,
	"Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
	Alistair Francis <alistair@alistair23.me>,
	Helge Deller <deller@gmx.de>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Eduardo Habkost <eduardo@habkost.net>,
	"Michael S. Tsirkin" <mst@redhat.com>,
	Marcel Apfelbaum <marcel.apfelbaum@gmail.com>,
	Song Gao <gaosong@loongson.cn>,
	Thomas Huth <huth@tuxfamily.org>,
	Laurent Vivier <laurent@vivier.eu>,
	Huacai Chen <chenhuacai@kernel.org>,
	Jiaxun Yang <jiaxun.yang@flygoat.com>,
	=?UTF-8?q?Herv=C3=A9=20Poussineau?= <hpoussin@reactos.org>,
	Aleksandar Rikalo <aleksandar.rikalo@syrmia.com>,
	Aurelien Jarno <aurelien@aurel32.net>,
	Jason Wang <jasowang@redhat.com>,
	Jia Liu <proljc@gmail.com>,
	Stafford Horne <shorne@gmail.com>,
	Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>,
	Nicholas Piggin <npiggin@gmail.com>,
	Daniel Henrique Barboza <danielhb413@gmail.com>,
	David Gibson <david@gibson.dropbear.id.au>,
	Harsh Prateek Bora <harshpb@linux.ibm.com>,
	Bin Meng <bin.meng@windriver.com>,
	Palmer Dabbelt <palmer@dabbelt.com>,
	Weiwei Li <liwei1518@gmail.com>,
	Liu Zhiwei <zhiwei_liu@linux.alibaba.com>,
	Halil Pasic <pasic@linux.ibm.com>,
	Christian Borntraeger <borntraeger@linux.ibm.com>,
	Eric Farman <farman@linux.ibm.com>,
	David Hildenbrand <david@redhat.com>,
	Ilya Leoshkevich <iii@linux.ibm.com>,
	Yoshinori Sato <ysato@users.sourceforge.jp>,
	Magnus Damm <magnus.damm@gmail.com>,
	Artyom Tarasenko <atar4qemu@gmail.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Anthony Perard <anthony.perard@citrix.com>,
	Paul Durrant <paul@xen.org>,
	Max Filippov <jcmvbkbc@gmail.com>,
	qemu-arm@nongnu.org,
	qemu-ppc@nongnu.org,
	qemu-riscv@nongnu.org,
	qemu-s390x@nongnu.org,
	xen-devel@lists.xenproject.org,
	David Woodhouse <dwmw@amazon.co.uk>
Subject: [PATCH v3 06/46] hw/xen: use qemu_create_nic_bus_devices() to instantiate Xen NICs
Date: Mon,  8 Jan 2024 20:26:35 +0000
Message-ID: <20240108204909.564514-7-dwmw2@infradead.org>
X-Mailer: git-send-email 2.41.0
In-Reply-To: <20240108204909.564514-1-dwmw2@infradead.org>
References: <20240108204909.564514-1-dwmw2@infradead.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Sender: David Woodhouse <dwmw2@infradead.org>
X-SRS-Rewrite: SMTP reverse-path rewritten from <dwmw2@infradead.org> by desiato.infradead.org. See http://www.infradead.org/rpr.html

From: David Woodhouse <dwmw@amazon.co.uk>

When instantiating XenBus itself, for each NIC which is configured with
either the model unspecified, or set to to "xen" or "xen-net-device",
create a corresponding xen-net-device for it.

Now we can revert the previous more hackish version which relied on the
platform code explicitly registering the NICs on its own XenBus, having
returned the BusState* from xen_bus_init() itself.

This also fixes the setup for Xen PV guests, which was previously broken
in various ways and never actually managed to peer with the netdev.

Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
Reviewed-by: Paul Durrant <paul@xen.org>
---
 hw/i386/pc.c                        | 13 ++-----------
 hw/i386/pc_piix.c                   |  2 +-
 hw/i386/pc_q35.c                    |  2 +-
 hw/xen/xen-bus.c                    |  6 ++++--
 hw/xen/xen_devconfig.c              | 25 -------------------------
 hw/xenpv/xen_machine_pv.c           |  9 ---------
 include/hw/i386/pc.h                |  4 +---
 include/hw/xen/xen-bus.h            |  2 +-
 include/hw/xen/xen-legacy-backend.h |  1 -
 9 files changed, 10 insertions(+), 54 deletions(-)

diff --git a/hw/i386/pc.c b/hw/i386/pc.c
index d80c536d88..3d5e29ce22 100644
--- a/hw/i386/pc.c
+++ b/hw/i386/pc.c
@@ -1268,7 +1268,7 @@ void pc_basic_device_init(struct PCMachineState *pcms,
         if (pcms->bus) {
             pci_create_simple(pcms->bus, -1, "xen-platform");
         }
-        pcms->xenbus = xen_bus_init();
+        xen_bus_init();
         xen_be_init();
     }
 #endif
@@ -1296,8 +1296,7 @@ void pc_basic_device_init(struct PCMachineState *pcms,
                     pcms->vmport != ON_OFF_AUTO_ON);
 }
 
-void pc_nic_init(PCMachineClass *pcmc, ISABus *isa_bus, PCIBus *pci_bus,
-                 BusState *xen_bus)
+void pc_nic_init(PCMachineClass *pcmc, ISABus *isa_bus, PCIBus *pci_bus)
 {
     MachineClass *mc = MACHINE_CLASS(pcmc);
     bool default_is_ne2k = g_str_equal(mc->default_nic, TYPE_ISA_NE2000);
@@ -1305,14 +1304,6 @@ void pc_nic_init(PCMachineClass *pcmc, ISABus *isa_bus, PCIBus *pci_bus,
 
     rom_set_order_override(FW_CFG_ORDER_OVERRIDE_NIC);
 
-    if (xen_bus) {
-        while (nc = qemu_find_nic_info("xen-net-device", true, NULL)) {
-            DeviceState *dev = qdev_new("xen-net-device");
-            qdev_set_nic_properties(dev, nd);
-            qdev_realize_and_unref(dev, xen_bus, &error_fatal);
-        }
-    }
-
     while ((nd = qemu_find_nic_info(TYPE_ISA_NE2000, default_is_ne2k, NULL))) {
         pc_init_ne2k_isa(isa_bus, nd);
     }
diff --git a/hw/i386/pc_piix.c b/hw/i386/pc_piix.c
index 042c13cdbc..aaf2c2521f 100644
--- a/hw/i386/pc_piix.c
+++ b/hw/i386/pc_piix.c
@@ -342,7 +342,7 @@ static void pc_init1(MachineState *machine,
     pc_basic_device_init(pcms, isa_bus, x86ms->gsi, rtc_state, true,
                          0x4);
 
-    pc_nic_init(pcmc, isa_bus, pci_bus, pcms->xenbus);
+    pc_nic_init(pcmc, isa_bus, pci_bus);
 
     if (pcmc->pci_enabled) {
         pc_cmos_init(pcms, idebus[0], idebus[1], rtc_state);
diff --git a/hw/i386/pc_q35.c b/hw/i386/pc_q35.c
index f43d5142b8..7ca3f465e0 100644
--- a/hw/i386/pc_q35.c
+++ b/hw/i386/pc_q35.c
@@ -340,7 +340,7 @@ static void pc_q35_init(MachineState *machine)
 
     /* the rest devices to which pci devfn is automatically assigned */
     pc_vga_init(isa_bus, host_bus);
-    pc_nic_init(pcmc, isa_bus, host_bus, pcms->xenbus);
+    pc_nic_init(pcmc, isa_bus, host_bus);
 
     if (machine->nvdimms_state->is_enabled) {
         nvdimm_init_acpi_state(machine->nvdimms_state, system_io,
diff --git a/hw/xen/xen-bus.c b/hw/xen/xen-bus.c
index 4973e7d9c9..fb82cc33e4 100644
--- a/hw/xen/xen-bus.c
+++ b/hw/xen/xen-bus.c
@@ -19,6 +19,7 @@
 #include "qapi/error.h"
 #include "qapi/qmp/qdict.h"
 #include "sysemu/sysemu.h"
+#include "net/net.h"
 #include "trace.h"
 
 static char *xen_device_get_backend_path(XenDevice *xendev)
@@ -1133,7 +1134,7 @@ static void xen_register_types(void)
 
 type_init(xen_register_types)
 
-BusState *xen_bus_init(void)
+void xen_bus_init(void)
 {
     DeviceState *dev = qdev_new(TYPE_XEN_BRIDGE);
     BusState *bus = qbus_new(TYPE_XEN_BUS, dev, NULL);
@@ -1141,5 +1142,6 @@ BusState *xen_bus_init(void)
     sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal);
     qbus_set_bus_hotplug_handler(bus);
 
-    return bus;
+    qemu_create_nic_bus_devices(bus, TYPE_XEN_DEVICE, "xen-net-device",
+                                "xen", "xen-net-device");
 }
diff --git a/hw/xen/xen_devconfig.c b/hw/xen/xen_devconfig.c
index 3f77c675c6..2150869f60 100644
--- a/hw/xen/xen_devconfig.c
+++ b/hw/xen/xen_devconfig.c
@@ -46,31 +46,6 @@ static int xen_config_dev_all(char *fe, char *be)
 
 /* ------------------------------------------------------------- */
 
-int xen_config_dev_nic(NICInfo *nic)
-{
-    char fe[256], be[256];
-    char mac[20];
-    int vlan_id = -1;
-
-    net_hub_id_for_client(nic->netdev, &vlan_id);
-    snprintf(mac, sizeof(mac), "%02x:%02x:%02x:%02x:%02x:%02x",
-             nic->macaddr.a[0], nic->macaddr.a[1], nic->macaddr.a[2],
-             nic->macaddr.a[3], nic->macaddr.a[4], nic->macaddr.a[5]);
-    xen_pv_printf(NULL, 1, "config nic %d: mac=\"%s\"\n", vlan_id, mac);
-    xen_config_dev_dirs("vif", "qnic", vlan_id, fe, be, sizeof(fe));
-
-    /* frontend */
-    xenstore_write_int(fe, "handle",     vlan_id);
-    xenstore_write_str(fe, "mac",        mac);
-
-    /* backend */
-    xenstore_write_int(be, "handle",     vlan_id);
-    xenstore_write_str(be, "mac",        mac);
-
-    /* common stuff */
-    return xen_config_dev_all(fe, be);
-}
-
 int xen_config_dev_vfb(int vdev, const char *type)
 {
     char fe[256], be[256];
diff --git a/hw/xenpv/xen_machine_pv.c b/hw/xenpv/xen_machine_pv.c
index 9f9f137f99..1130d1a147 100644
--- a/hw/xenpv/xen_machine_pv.c
+++ b/hw/xenpv/xen_machine_pv.c
@@ -32,8 +32,6 @@
 
 static void xen_init_pv(MachineState *machine)
 {
-    int i;
-
     setup_xen_backend_ops();
 
     /* Initialize backend core & drivers */
@@ -62,13 +60,6 @@ static void xen_init_pv(MachineState *machine)
         vga_interface_created = true;
     }
 
-    /* configure nics */
-    for (i = 0; i < nb_nics; i++) {
-        if (!nd_table[i].model || 0 != strcmp(nd_table[i].model, "xen"))
-            continue;
-        xen_config_dev_nic(nd_table + i);
-    }
-
     xen_bus_init();
 
     /* config cleanup hook */
diff --git a/include/hw/i386/pc.h b/include/hw/i386/pc.h
index 916af29f7c..ec0e5efcb2 100644
--- a/include/hw/i386/pc.h
+++ b/include/hw/i386/pc.h
@@ -33,7 +33,6 @@ typedef struct PCMachineState {
 
     /* Pointers to devices and objects: */
     PCIBus *bus;
-    BusState *xenbus;
     I2CBus *smbus;
     PFlashCFI01 *flash[2];
     ISADevice *pcspk;
@@ -185,8 +184,7 @@ void pc_basic_device_init(struct PCMachineState *pcms,
 void pc_cmos_init(PCMachineState *pcms,
                   BusState *ide0, BusState *ide1,
                   ISADevice *s);
-void pc_nic_init(PCMachineClass *pcmc, ISABus *isa_bus, PCIBus *pci_bus,
-                 BusState *xen_bus);
+void pc_nic_init(PCMachineClass *pcmc, ISABus *isa_bus, PCIBus *pci_bus);
 
 void pc_i8259_create(ISABus *isa_bus, qemu_irq *i8259_irqs);
 
diff --git a/include/hw/xen/xen-bus.h b/include/hw/xen/xen-bus.h
index 334ddd1ff6..38d40afa37 100644
--- a/include/hw/xen/xen-bus.h
+++ b/include/hw/xen/xen-bus.h
@@ -75,7 +75,7 @@ struct XenBusClass {
 OBJECT_DECLARE_TYPE(XenBus, XenBusClass,
                     XEN_BUS)
 
-BusState *xen_bus_init(void);
+void xen_bus_init(void);
 
 void xen_device_backend_set_state(XenDevice *xendev,
                                   enum xenbus_state state);
diff --git a/include/hw/xen/xen-legacy-backend.h b/include/hw/xen/xen-legacy-backend.h
index fc42146bc2..2cca174778 100644
--- a/include/hw/xen/xen-legacy-backend.h
+++ b/include/hw/xen/xen-legacy-backend.h
@@ -81,7 +81,6 @@ extern struct XenDevOps xen_usb_ops;          /* xen-usb.c         */
 
 /* configuration (aka xenbus setup) */
 void xen_config_cleanup(void);
-int xen_config_dev_nic(NICInfo *nic);
 int xen_config_dev_vfb(int vdev, const char *type);
 int xen_config_dev_vkbd(int vdev);
 int xen_config_dev_console(int vdev);
-- 
2.41.0



From xen-devel-bounces@lists.xenproject.org Mon Jan 08 20:58:40 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 08 Jan 2024 20:58:40 +0000
Received: from list by lists.xenproject.org with outflank-mailman.663965.1034026 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMwhk-0003ze-Ob; Mon, 08 Jan 2024 20:58:40 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 663965.1034026; Mon, 08 Jan 2024 20:58:40 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMwhk-0003zX-Lg; Mon, 08 Jan 2024 20:58:40 +0000
Received: by outflank-mailman (input) for mailman id 663965;
 Mon, 08 Jan 2024 20:58:39 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=CNLN=IS=desiato.srs.infradead.org=BATV+a33e3d7a5f0474923369+7442+infradead.org+dwmw2@srs-se1.protection.inumbo.net>)
 id 1rMwaf-0000R5-9t
 for xen-devel@lists.xenproject.org; Mon, 08 Jan 2024 20:51:21 +0000
Received: from desiato.infradead.org (desiato.infradead.org
 [2001:8b0:10b:1:d65d:64ff:fe57:4e05])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id ab7d1728-ae67-11ee-98ef-6d05b1d4d9a1;
 Mon, 08 Jan 2024 21:51:18 +0100 (CET)
Received: from [2001:8b0:10b:1::ebe] (helo=i7.infradead.org)
 by desiato.infradead.org with esmtpsa (Exim 4.96 #2 (Red Hat Linux))
 id 1rMwYk-007wXb-2x; Mon, 08 Jan 2024 20:49:23 +0000
Received: from dwoodhou by i7.infradead.org with local (Exim 4.96.2 #2 (Red
 Hat Linux)) id 1rMwYk-002NFl-1u; Mon, 08 Jan 2024 20:49:22 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
X-Inumbo-ID: ab7d1728-ae67-11ee-98ef-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=infradead.org; s=desiato.20200630; h=Sender:Content-Transfer-Encoding:
	MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:
	Reply-To:Content-Type:Content-ID:Content-Description;
	bh=Z9PKbT6aWgGFmUoAHlhWOCQT7qwoHJu2JS0Kzz2LdOw=; b=lU6iClFHtagGRLJhXeevcPJq0E
	y8oUI8iYUl7jDjdzYVNww6Y2+PI96ggExeGgKIuz0FDXx1ddQxkDYwONUeyx/dfOqaBA5Jf+6qbva
	rrsi68H/hMAsn8xbfxCmr31LSFb0/onnJV6n2Uobu3gojugX80gyyWAxeyMovgkqTCLdqNDqkTxmG
	TA7JPTnAg2jNr0WABgJBdKZ/Fj+MMpfFKA/mCVnuf2KfFrgJpS3l3KEd+CXBSc7Ak1KiL55vsJah1
	bKJkiOFqEcglSvjdQ6Sudlh/Xb0A19FZzgkXb5SR3Y86zgprihK8cSRb0M7DLUDApLVuEQZ08kgAk
	pVT+FmVA==;
From: David Woodhouse <dwmw2@infradead.org>
To: qemu-devel@nongnu.org
Cc: Richard Henderson <richard.henderson@linaro.org>,
	Beniamino Galvani <b.galvani@gmail.com>,
	Peter Maydell <peter.maydell@linaro.org>,
	Strahinja Jankovic <strahinja.p.jankovic@gmail.com>,
	Niek Linnenbank <nieklinnenbank@gmail.com>,
	=?UTF-8?q?C=C3=A9dric=20Le=20Goater?= <clg@kaod.org>,
	Andrew Jeffery <andrew@codeconstruct.com.au>,
	Joel Stanley <joel@jms.id.au>,
	Igor Mitsyanko <i.mitsyanko@gmail.com>,
	Jean-Christophe Dubois <jcd@tribudubois.net>,
	Andrey Smirnov <andrew.smirnov@gmail.com>,
	=?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= <philmd@linaro.org>,
	Rob Herring <robh@kernel.org>,
	Subbaraya Sundeep <sundeep.lkml@gmail.com>,
	Jan Kiszka <jan.kiszka@web.de>,
	Tyrone Ting <kfting@nuvoton.com>,
	Hao Wu <wuhaotsh@google.com>,
	Radoslaw Biernacki <rad@semihalf.com>,
	Leif Lindholm <quic_llindhol@quicinc.com>,
	Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org>,
	"Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
	Alistair Francis <alistair@alistair23.me>,
	Helge Deller <deller@gmx.de>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Eduardo Habkost <eduardo@habkost.net>,
	"Michael S. Tsirkin" <mst@redhat.com>,
	Marcel Apfelbaum <marcel.apfelbaum@gmail.com>,
	Song Gao <gaosong@loongson.cn>,
	Thomas Huth <huth@tuxfamily.org>,
	Laurent Vivier <laurent@vivier.eu>,
	Huacai Chen <chenhuacai@kernel.org>,
	Jiaxun Yang <jiaxun.yang@flygoat.com>,
	=?UTF-8?q?Herv=C3=A9=20Poussineau?= <hpoussin@reactos.org>,
	Aleksandar Rikalo <aleksandar.rikalo@syrmia.com>,
	Aurelien Jarno <aurelien@aurel32.net>,
	Jason Wang <jasowang@redhat.com>,
	Jia Liu <proljc@gmail.com>,
	Stafford Horne <shorne@gmail.com>,
	Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>,
	Nicholas Piggin <npiggin@gmail.com>,
	Daniel Henrique Barboza <danielhb413@gmail.com>,
	David Gibson <david@gibson.dropbear.id.au>,
	Harsh Prateek Bora <harshpb@linux.ibm.com>,
	Bin Meng <bin.meng@windriver.com>,
	Palmer Dabbelt <palmer@dabbelt.com>,
	Weiwei Li <liwei1518@gmail.com>,
	Liu Zhiwei <zhiwei_liu@linux.alibaba.com>,
	Halil Pasic <pasic@linux.ibm.com>,
	Christian Borntraeger <borntraeger@linux.ibm.com>,
	Eric Farman <farman@linux.ibm.com>,
	David Hildenbrand <david@redhat.com>,
	Ilya Leoshkevich <iii@linux.ibm.com>,
	Yoshinori Sato <ysato@users.sourceforge.jp>,
	Magnus Damm <magnus.damm@gmail.com>,
	Artyom Tarasenko <atar4qemu@gmail.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Anthony Perard <anthony.perard@citrix.com>,
	Paul Durrant <paul@xen.org>,
	Max Filippov <jcmvbkbc@gmail.com>,
	qemu-arm@nongnu.org,
	qemu-ppc@nongnu.org,
	qemu-riscv@nongnu.org,
	qemu-s390x@nongnu.org,
	xen-devel@lists.xenproject.org,
	David Woodhouse <dwmw@amazon.co.uk>
Subject: [PATCH v3 26/46] hw/net/lan9118: use qemu_configure_nic_device()
Date: Mon,  8 Jan 2024 20:26:55 +0000
Message-ID: <20240108204909.564514-27-dwmw2@infradead.org>
X-Mailer: git-send-email 2.41.0
In-Reply-To: <20240108204909.564514-1-dwmw2@infradead.org>
References: <20240108204909.564514-1-dwmw2@infradead.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Sender: David Woodhouse <dwmw2@infradead.org>
X-SRS-Rewrite: SMTP reverse-path rewritten from <dwmw2@infradead.org> by desiato.infradead.org. See http://www.infradead.org/rpr.html

From: David Woodhouse <dwmw@amazon.co.uk>

Some callers instantiate the device unconditionally, others will do so only
if there is a NICInfo to go with it. This appears to be fairly random, but
preseve the existing behaviour for now.

Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
---
 hw/arm/kzm.c             | 4 ++--
 hw/arm/mps2.c            | 2 +-
 hw/arm/realview.c        | 6 ++----
 hw/arm/vexpress.c        | 4 ++--
 hw/net/lan9118.c         | 5 ++---
 include/hw/net/lan9118.h | 2 +-
 6 files changed, 10 insertions(+), 13 deletions(-)

diff --git a/hw/arm/kzm.c b/hw/arm/kzm.c
index 9be91ebeaa..2ccd6f8a76 100644
--- a/hw/arm/kzm.c
+++ b/hw/arm/kzm.c
@@ -113,8 +113,8 @@ static void kzm_init(MachineState *machine)
         alias_offset += ram[i].size;
     }
 
-    if (nd_table[0].used) {
-        lan9118_init(&nd_table[0], KZM_LAN9118_ADDR,
+    if (qemu_find_nic_info("lan9118", true, NULL)) {
+        lan9118_init(KZM_LAN9118_ADDR,
                      qdev_get_gpio_in(DEVICE(&s->soc.avic), 52));
     }
 
diff --git a/hw/arm/mps2.c b/hw/arm/mps2.c
index bd873cc5de..50919ee46d 100644
--- a/hw/arm/mps2.c
+++ b/hw/arm/mps2.c
@@ -456,7 +456,7 @@ static void mps2_common_init(MachineState *machine)
     /* In hardware this is a LAN9220; the LAN9118 is software compatible
      * except that it doesn't support the checksum-offload feature.
      */
-    lan9118_init(&nd_table[0], mmc->ethernet_base,
+    lan9118_init(mmc->ethernet_base,
                  qdev_get_gpio_in(armv7m,
                                   mmc->fpga_type == FPGA_AN511 ? 47 : 13));
 
diff --git a/hw/arm/realview.c b/hw/arm/realview.c
index 6e7529d98f..1f88da3702 100644
--- a/hw/arm/realview.c
+++ b/hw/arm/realview.c
@@ -84,7 +84,6 @@ static void realview_init(MachineState *machine,
     SysBusDevice *busdev;
     qemu_irq pic[64];
     PCIBus *pci_bus = NULL;
-    NICInfo *nd;
     DriveInfo *dinfo;
     I2CBus *i2c;
     int n;
@@ -295,10 +294,9 @@ static void realview_init(MachineState *machine,
         }
     }
 
-    nd = qemu_find_nic_info(is_pb ? "lan9118" : "smc91c111", true, NULL);
-    if (nd) {
+    if (qemu_find_nic_info(is_pb ? "lan9118" : "smc91c111", true, NULL)) {
         if (is_pb) {
-            lan9118_init(nd, 0x4e000000, pic[28]);
+            lan9118_init(0x4e000000, pic[28]);
         } else {
             smc91c111_init(0x4e000000, pic[28]);
         }
diff --git a/hw/arm/vexpress.c b/hw/arm/vexpress.c
index fd981f4c33..1e02e0965f 100644
--- a/hw/arm/vexpress.c
+++ b/hw/arm/vexpress.c
@@ -679,8 +679,8 @@ static void vexpress_common_init(MachineState *machine)
     memory_region_add_subregion(sysmem, map[VE_VIDEORAM], &vms->vram);
 
     /* 0x4e000000 LAN9118 Ethernet */
-    if (nd_table[0].used) {
-        lan9118_init(&nd_table[0], map[VE_ETHERNET], pic[15]);
+    if (qemu_find_nic_info("lan9118", true, NULL)) {
+        lan9118_init(map[VE_ETHERNET], pic[15]);
     }
 
     /* VE_USB: not modelled */
diff --git a/hw/net/lan9118.c b/hw/net/lan9118.c
index 598dd79e17..47ff25b441 100644
--- a/hw/net/lan9118.c
+++ b/hw/net/lan9118.c
@@ -1408,14 +1408,13 @@ static void lan9118_register_types(void)
 
 /* Legacy helper function.  Should go away when machine config files are
    implemented.  */
-void lan9118_init(NICInfo *nd, uint32_t base, qemu_irq irq)
+void lan9118_init(uint32_t base, qemu_irq irq)
 {
     DeviceState *dev;
     SysBusDevice *s;
 
-    qemu_check_nic_model(nd, "lan9118");
     dev = qdev_new(TYPE_LAN9118);
-    qdev_set_nic_properties(dev, nd);
+    qemu_configure_nic_device(dev, true, NULL);
     s = SYS_BUS_DEVICE(dev);
     sysbus_realize_and_unref(s, &error_fatal);
     sysbus_mmio_map(s, 0, base);
diff --git a/include/hw/net/lan9118.h b/include/hw/net/lan9118.h
index 3d0c67f339..4bf9da7a63 100644
--- a/include/hw/net/lan9118.h
+++ b/include/hw/net/lan9118.h
@@ -15,6 +15,6 @@
 
 #define TYPE_LAN9118 "lan9118"
 
-void lan9118_init(NICInfo *, uint32_t, qemu_irq);
+void lan9118_init(uint32_t, qemu_irq);
 
 #endif
-- 
2.41.0



From xen-devel-bounces@lists.xenproject.org Mon Jan 08 20:58:45 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 08 Jan 2024 20:58:45 +0000
Received: from list by lists.xenproject.org with outflank-mailman.663967.1034036 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMwhp-0004MS-4r; Mon, 08 Jan 2024 20:58:45 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 663967.1034036; Mon, 08 Jan 2024 20:58:45 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMwhp-0004ML-1T; Mon, 08 Jan 2024 20:58:45 +0000
Received: by outflank-mailman (input) for mailman id 663967;
 Mon, 08 Jan 2024 20:58:43 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=CNLN=IS=desiato.srs.infradead.org=BATV+a33e3d7a5f0474923369+7442+infradead.org+dwmw2@srs-se1.protection.inumbo.net>)
 id 1rMwab-0000R6-Hc
 for xen-devel@lists.xenproject.org; Mon, 08 Jan 2024 20:51:17 +0000
Received: from desiato.infradead.org (desiato.infradead.org
 [2001:8b0:10b:1:d65d:64ff:fe57:4e05])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id a99ec318-ae67-11ee-9b0f-b553b5be7939;
 Mon, 08 Jan 2024 21:51:14 +0100 (CET)
Received: from [2001:8b0:10b:1::ebe] (helo=i7.infradead.org)
 by desiato.infradead.org with esmtpsa (Exim 4.96 #2 (Red Hat Linux))
 id 1rMwYm-007wXz-0N; Mon, 08 Jan 2024 20:49:24 +0000
Received: from dwoodhou by i7.infradead.org with local (Exim 4.96.2 #2 (Red
 Hat Linux)) id 1rMwYl-002NGv-1q; Mon, 08 Jan 2024 20:49:23 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
X-Inumbo-ID: a99ec318-ae67-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=infradead.org; s=desiato.20200630; h=Sender:Content-Transfer-Encoding:
	MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:
	Reply-To:Content-Type:Content-ID:Content-Description;
	bh=MQiK8Ibs4kfxIXSnt/gzZHX373ukfed9ntiFamchQXY=; b=d6cFrHjD6/+gUHayRZakRT8I9h
	bJZx7IbE81BJB4hQZqukYX3eW3znm1fR1phouladzQJsnY5Deel34gpeQVfTB+HaFN3YsjQtdkbvN
	3MNbA1oCAclbvNGPuS/6oCjxueFfCmA1PaPUMuaslCMFAgkDHkXgypkCkTC1Jp2lTNhKMhkoRd6Ic
	HzTlF23yvTcpYGLTcg7poNaB5ET+SyKTnq8hPc0eeew0PWzl8v3r+gbir/7njkGsv9Trc6umhJKuB
	5qurqQgyFniPUUqbhY+ZRXqNH0Zmf414g7kLzAT8K+sVEskmtkeiPmxWaeiJlB1+hCBglERBtr1cA
	T3kahX8w==;
From: David Woodhouse <dwmw2@infradead.org>
To: qemu-devel@nongnu.org
Cc: Richard Henderson <richard.henderson@linaro.org>,
	Beniamino Galvani <b.galvani@gmail.com>,
	Peter Maydell <peter.maydell@linaro.org>,
	Strahinja Jankovic <strahinja.p.jankovic@gmail.com>,
	Niek Linnenbank <nieklinnenbank@gmail.com>,
	=?UTF-8?q?C=C3=A9dric=20Le=20Goater?= <clg@kaod.org>,
	Andrew Jeffery <andrew@codeconstruct.com.au>,
	Joel Stanley <joel@jms.id.au>,
	Igor Mitsyanko <i.mitsyanko@gmail.com>,
	Jean-Christophe Dubois <jcd@tribudubois.net>,
	Andrey Smirnov <andrew.smirnov@gmail.com>,
	=?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= <philmd@linaro.org>,
	Rob Herring <robh@kernel.org>,
	Subbaraya Sundeep <sundeep.lkml@gmail.com>,
	Jan Kiszka <jan.kiszka@web.de>,
	Tyrone Ting <kfting@nuvoton.com>,
	Hao Wu <wuhaotsh@google.com>,
	Radoslaw Biernacki <rad@semihalf.com>,
	Leif Lindholm <quic_llindhol@quicinc.com>,
	Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org>,
	"Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
	Alistair Francis <alistair@alistair23.me>,
	Helge Deller <deller@gmx.de>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Eduardo Habkost <eduardo@habkost.net>,
	"Michael S. Tsirkin" <mst@redhat.com>,
	Marcel Apfelbaum <marcel.apfelbaum@gmail.com>,
	Song Gao <gaosong@loongson.cn>,
	Thomas Huth <huth@tuxfamily.org>,
	Laurent Vivier <laurent@vivier.eu>,
	Huacai Chen <chenhuacai@kernel.org>,
	Jiaxun Yang <jiaxun.yang@flygoat.com>,
	=?UTF-8?q?Herv=C3=A9=20Poussineau?= <hpoussin@reactos.org>,
	Aleksandar Rikalo <aleksandar.rikalo@syrmia.com>,
	Aurelien Jarno <aurelien@aurel32.net>,
	Jason Wang <jasowang@redhat.com>,
	Jia Liu <proljc@gmail.com>,
	Stafford Horne <shorne@gmail.com>,
	Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>,
	Nicholas Piggin <npiggin@gmail.com>,
	Daniel Henrique Barboza <danielhb413@gmail.com>,
	David Gibson <david@gibson.dropbear.id.au>,
	Harsh Prateek Bora <harshpb@linux.ibm.com>,
	Bin Meng <bin.meng@windriver.com>,
	Palmer Dabbelt <palmer@dabbelt.com>,
	Weiwei Li <liwei1518@gmail.com>,
	Liu Zhiwei <zhiwei_liu@linux.alibaba.com>,
	Halil Pasic <pasic@linux.ibm.com>,
	Christian Borntraeger <borntraeger@linux.ibm.com>,
	Eric Farman <farman@linux.ibm.com>,
	David Hildenbrand <david@redhat.com>,
	Ilya Leoshkevich <iii@linux.ibm.com>,
	Yoshinori Sato <ysato@users.sourceforge.jp>,
	Magnus Damm <magnus.damm@gmail.com>,
	Artyom Tarasenko <atar4qemu@gmail.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Anthony Perard <anthony.perard@citrix.com>,
	Paul Durrant <paul@xen.org>,
	Max Filippov <jcmvbkbc@gmail.com>,
	qemu-arm@nongnu.org,
	qemu-ppc@nongnu.org,
	qemu-riscv@nongnu.org,
	qemu-s390x@nongnu.org,
	xen-devel@lists.xenproject.org,
	David Woodhouse <dwmw@amazon.co.uk>
Subject: [PATCH v3 40/46] hw/s390x/s390-virtio-ccw: use qemu_create_nic_device()
Date: Mon,  8 Jan 2024 20:27:09 +0000
Message-ID: <20240108204909.564514-41-dwmw2@infradead.org>
X-Mailer: git-send-email 2.41.0
In-Reply-To: <20240108204909.564514-1-dwmw2@infradead.org>
References: <20240108204909.564514-1-dwmw2@infradead.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Sender: David Woodhouse <dwmw2@infradead.org>
X-SRS-Rewrite: SMTP reverse-path rewritten from <dwmw2@infradead.org> by desiato.infradead.org. See http://www.infradead.org/rpr.html

From: David Woodhouse <dwmw@amazon.co.uk>

Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
---
 hw/s390x/s390-virtio-ccw.c | 11 ++---------
 1 file changed, 2 insertions(+), 9 deletions(-)

diff --git a/hw/s390x/s390-virtio-ccw.c b/hw/s390x/s390-virtio-ccw.c
index 1169e20b94..202c378131 100644
--- a/hw/s390x/s390-virtio-ccw.c
+++ b/hw/s390x/s390-virtio-ccw.c
@@ -221,16 +221,9 @@ static void s390_init_ipl_dev(const char *kernel_filename,
 
 static void s390_create_virtio_net(BusState *bus, const char *name)
 {
-    int i;
-
-    for (i = 0; i < nb_nics; i++) {
-        NICInfo *nd = &nd_table[i];
-        DeviceState *dev;
-
-        qemu_check_nic_model(nd, "virtio");
+    DeviceState *dev;
 
-        dev = qdev_new(name);
-        qdev_set_nic_properties(dev, nd);
+    while ((dev = qemu_create_nic_device(name, true, "virtio"))) {
         qdev_realize_and_unref(dev, bus, &error_fatal);
     }
 }
-- 
2.41.0



From xen-devel-bounces@lists.xenproject.org Mon Jan 08 20:58:46 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 08 Jan 2024 20:58:46 +0000
Received: from list by lists.xenproject.org with outflank-mailman.663970.1034046 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMwhq-0004cW-Cc; Mon, 08 Jan 2024 20:58:46 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 663970.1034046; Mon, 08 Jan 2024 20:58:46 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMwhq-0004cM-8x; Mon, 08 Jan 2024 20:58:46 +0000
Received: by outflank-mailman (input) for mailman id 663970;
 Mon, 08 Jan 2024 20:58:44 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=CNLN=IS=desiato.srs.infradead.org=BATV+a33e3d7a5f0474923369+7442+infradead.org+dwmw2@srs-se1.protection.inumbo.net>)
 id 1rMwaa-0000R6-HJ
 for xen-devel@lists.xenproject.org; Mon, 08 Jan 2024 20:51:16 +0000
Received: from desiato.infradead.org (desiato.infradead.org
 [2001:8b0:10b:1:d65d:64ff:fe57:4e05])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id a7eaf613-ae67-11ee-9b0f-b553b5be7939;
 Mon, 08 Jan 2024 21:51:11 +0100 (CET)
Received: from [2001:8b0:10b:1::ebe] (helo=i7.infradead.org)
 by desiato.infradead.org with esmtpsa (Exim 4.96 #2 (Red Hat Linux))
 id 1rMwYi-007wXG-2o; Mon, 08 Jan 2024 20:49:21 +0000
Received: from dwoodhou by i7.infradead.org with local (Exim 4.96.2 #2 (Red
 Hat Linux)) id 1rMwYi-002NDu-0s; Mon, 08 Jan 2024 20:49:20 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
X-Inumbo-ID: a7eaf613-ae67-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=infradead.org; s=desiato.20200630; h=Sender:Content-Transfer-Encoding:
	MIME-Version:Message-ID:Date:Subject:Cc:To:From:Reply-To:Content-Type:
	Content-ID:Content-Description:In-Reply-To:References;
	bh=L372ttgGvDGyyCghqVoINE0k487r36oJ8nW8vjTjSug=; b=NWMmXTt4xusPOFX8+KCmWpTwJ9
	OySgvY/alBXUcnvRQbEqI1+AUox7eNasSqEoppkdivwIk8kd/AZuBvraLSgvDkq9XodnLXOx/7W4V
	Iwey267nbJxyP+KA2JRZYmeyZyV6wGE35cismr6ljabQ+bvk2pFOz+gauExaWPfM749zYJ+cimPpL
	gF4EAEbQLOqYf5g3bVXutPfiyKMv5KuC73axdVXDPJcTwxBEURLZH9LtliAmm5F4Tsd5vnaEdE5Ni
	5x+SAOcKc7SfLHVSSJWvds3t6HefsBhxJYNb84J9HfwgG8+UhlCILY+4CoVkcC2oZ3Y0HVaNHdIN0
	jpplR4rw==;
From: David Woodhouse <dwmw2@infradead.org>
To: qemu-devel@nongnu.org
Cc: Richard Henderson <richard.henderson@linaro.org>,
	Beniamino Galvani <b.galvani@gmail.com>,
	Peter Maydell <peter.maydell@linaro.org>,
	Strahinja Jankovic <strahinja.p.jankovic@gmail.com>,
	Niek Linnenbank <nieklinnenbank@gmail.com>,
	=?UTF-8?q?C=C3=A9dric=20Le=20Goater?= <clg@kaod.org>,
	Andrew Jeffery <andrew@codeconstruct.com.au>,
	Joel Stanley <joel@jms.id.au>,
	Igor Mitsyanko <i.mitsyanko@gmail.com>,
	Jean-Christophe Dubois <jcd@tribudubois.net>,
	Andrey Smirnov <andrew.smirnov@gmail.com>,
	=?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= <philmd@linaro.org>,
	Rob Herring <robh@kernel.org>,
	Subbaraya Sundeep <sundeep.lkml@gmail.com>,
	Jan Kiszka <jan.kiszka@web.de>,
	Tyrone Ting <kfting@nuvoton.com>,
	Hao Wu <wuhaotsh@google.com>,
	Radoslaw Biernacki <rad@semihalf.com>,
	Leif Lindholm <quic_llindhol@quicinc.com>,
	Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org>,
	"Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
	Alistair Francis <alistair@alistair23.me>,
	Helge Deller <deller@gmx.de>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Eduardo Habkost <eduardo@habkost.net>,
	"Michael S. Tsirkin" <mst@redhat.com>,
	Marcel Apfelbaum <marcel.apfelbaum@gmail.com>,
	Song Gao <gaosong@loongson.cn>,
	Thomas Huth <huth@tuxfamily.org>,
	Laurent Vivier <laurent@vivier.eu>,
	Huacai Chen <chenhuacai@kernel.org>,
	Jiaxun Yang <jiaxun.yang@flygoat.com>,
	=?UTF-8?q?Herv=C3=A9=20Poussineau?= <hpoussin@reactos.org>,
	Aleksandar Rikalo <aleksandar.rikalo@syrmia.com>,
	Aurelien Jarno <aurelien@aurel32.net>,
	Jason Wang <jasowang@redhat.com>,
	Jia Liu <proljc@gmail.com>,
	Stafford Horne <shorne@gmail.com>,
	Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>,
	Nicholas Piggin <npiggin@gmail.com>,
	Daniel Henrique Barboza <danielhb413@gmail.com>,
	David Gibson <david@gibson.dropbear.id.au>,
	Harsh Prateek Bora <harshpb@linux.ibm.com>,
	Bin Meng <bin.meng@windriver.com>,
	Palmer Dabbelt <palmer@dabbelt.com>,
	Weiwei Li <liwei1518@gmail.com>,
	Liu Zhiwei <zhiwei_liu@linux.alibaba.com>,
	Halil Pasic <pasic@linux.ibm.com>,
	Christian Borntraeger <borntraeger@linux.ibm.com>,
	Eric Farman <farman@linux.ibm.com>,
	David Hildenbrand <david@redhat.com>,
	Ilya Leoshkevich <iii@linux.ibm.com>,
	Yoshinori Sato <ysato@users.sourceforge.jp>,
	Magnus Damm <magnus.damm@gmail.com>,
	Artyom Tarasenko <atar4qemu@gmail.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Anthony Perard <anthony.perard@citrix.com>,
	Paul Durrant <paul@xen.org>,
	Max Filippov <jcmvbkbc@gmail.com>,
	qemu-arm@nongnu.org,
	qemu-ppc@nongnu.org,
	qemu-riscv@nongnu.org,
	qemu-s390x@nongnu.org,
	xen-devel@lists.xenproject.org
Subject: [PATCH v3 00/46] Rework matching of network devices to -nic options
Date: Mon,  8 Jan 2024 20:26:29 +0000
Message-ID: <20240108204909.564514-1-dwmw2@infradead.org>
X-Mailer: git-send-email 2.41.0
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Sender: David Woodhouse <dwmw2@infradead.org>
X-SRS-Rewrite: SMTP reverse-path rewritten from <dwmw2@infradead.org> by desiato.infradead.org. See http://www.infradead.org/rpr.html


Most platforms iterating directly over the nd_table[] are doing one of 
two things. Either they are creating the NIC for their platform and want
to find a matching -nic configuration for it, if such exists. Or they
are only going to create that platform NIC if a matching config *does*
exist.

All of those can be converted to the new qemu_configure_nic_device()
and qemu_create_nic_device() functions. The latter of which will call
qdev_new() to create the device (and apply the config) if a matching
NIC config does exist for it. The existing behaviour of each platform
has been preserved for now, despite it being apparently fairly random.

PCI and indeed XenBus can use a qemu_create_nic_bus_devices() which will 
create all NICs that live on a given bus type. That covers most 
platforms, but some PCI platforms do something special with the first 
NIC of a given type, placing it in the slot where it would have been on 
the real hardware. There were various inconsistencies in the way the 
platforms did so, and whether they cared what model the NIC was. Those 
subtle behavioural changes I *have* allowed to change, and now the 
pci_init_nic_slot() function will pick the first NIC that the user 
specified which isn't explicitly *not* the default type, and put that
in the specified slot.

The tests for npcm7xx used to lament that they had to instantiate both
NICs even when they wanted to test only the second, because there was
no way to specify which hardware devices gets which configuration. I
made that untrue, by allowing 'emc0' and 'emc1' aliases, and fixed up
the test accordingly.

There are one or two special cases which want to do special things with
the MAC address of the primary NIC, to set up a system identification
(or force it to use an Apple OUI, in the case of m68k/q400). All those
work out relatively cleanly too.

And I can clean up the ugly patch which fixed up the Xen network device 
handling, and replace it with a simple call to the new 
qemu_create_nic_bus_devices() function.

I suspect that we can remove the pci_init_nic_devices() from platform
code and just do it later, except for platforms which *care* which
PCI bus the dynamic devices go on (is that just sun4u which puts its
primary NIC onto a different bus?).

Finally, while we're at it, clean up -nic model=help to only print
the device models which are actually usable on the given platform
rather than just listing them *all*.

And now we can make nd_table[] and nb_nics static in net/net.c because
nothing else has any business poking at them directly.

 v3: Rebase to 8.2

 v2: Some build fixes after better coverage testing, revert the Xen fix
     in this series because I'm putting the less invasive hack into 8.2
     (hopefully).

David Woodhouse (46):
      net: add qemu_{configure,create}_nic_device(), qemu_find_nic_info()
      net: report list of available models according to platform
      net: add qemu_create_nic_bus_devices()
      hw/pci: add pci_init_nic_devices(), pci_init_nic_in_slot()
      hw/i386/pc: use qemu_get_nic_info() and pci_init_nic_devices()
      hw/xen: use qemu_create_nic_bus_devices() to instantiate Xen NICs
      hw/alpha/dp264: use pci_init_nic_devices()
      hw/arm/sbsa-ref: use pci_init_nic_devices()
      hw/arm/virt: use pci_init_nic_devices()
      hw/hppa: use pci_init_nic_devices()
      hw/loongarch: use pci_init_nic_devices()
      hw/mips/fuloong2e: use pci_init_nic_devices()
      hw/mips/malta: use pci_init_nic_devices()
      hw/mips/loongson3_virt: use pci_init_nic_devices()
      hw/ppc/prep: use pci_init_nic_devices()
      hw/ppc/spapr: use qemu_get_nic_info() and pci_init_nic_devices()
      hw/ppc: use pci_init_nic_devices()
      hw/sh4/r2d: use pci_init_nic_devices()
      hw/sparc64/sun4u: use pci_init_nic_devices()
      hw/xtensa/virt: use pci_init_nic_devices()
      hw/arm/allwinner: use qemu_configure_nic_device()
      hw/arm/aspeed: use qemu_configure_nic_device()
      hw/arm/exynos4: use qemu_create_nic_device()
      hw/arm/fsl: use qemu_configure_nic_device()
      hw/net/smc91c111: use qemu_configure_nic_device()
      hw/net/lan9118: use qemu_configure_nic_device()
      hw/arm/highbank: use qemu_create_nic_device()
      hw/arm/npcm7xx: use qemu_configure_nic_device, allow emc0/emc1 as aliases
      hw/arm/stellaris: use qemu_find_nic_info()
      hw/arm: use qemu_configure_nic_device()
      hw/net/etraxfs-eth: use qemu_configure_nic_device()
      hw/m68k/mcf5208: use qemu_create_nic_device()
      hw/m68k/q800: use qemu_find_nic_info()
      hw/microblaze: use qemu_configure_nic_device()
      hw/mips/mipssim: use qemu_create_nic_device()
      hw/mips/jazz: use qemu_find_nic_info()
      hw/net/lasi_i82596: use qemu_configure_nic_device()
      hw/openrisc/openrisc_sim: use qemu_create_nic_device()
      hw/riscv: use qemu_configure_nic_device()
      hw/s390x/s390-virtio-ccw: use qemu_create_nic_device()
      hw/sparc/sun4m: use qemu_find_nic_info()
      hw/xtensa/xtfpga: use qemu_create_nic_device()
      net: remove qemu_check_nic_model()
      hw/pci: remove pci_nic_init_nofail()
      net: remove qemu_show_nic_models(), qemu_find_nic_model()
      net: make nb_nics and nd_table[] static in net/net.c

 hw/alpha/dp264.c                         |   4 +-
 hw/arm/allwinner-a10.c                   |   6 +-
 hw/arm/allwinner-h3.c                    |   6 +-
 hw/arm/allwinner-r40.c                   |  27 +---
 hw/arm/aspeed.c                          |   9 +-
 hw/arm/exynos4_boards.c                  |   6 +-
 hw/arm/fsl-imx25.c                       |   2 +-
 hw/arm/fsl-imx6.c                        |   2 +-
 hw/arm/fsl-imx6ul.c                      |   2 +-
 hw/arm/fsl-imx7.c                        |   2 +-
 hw/arm/gumstix.c                         |   6 +-
 hw/arm/highbank.c                        |  12 +-
 hw/arm/integratorcp.c                    |   5 +-
 hw/arm/kzm.c                             |   4 +-
 hw/arm/mainstone.c                       |   3 +-
 hw/arm/mps2-tz.c                         |   8 +-
 hw/arm/mps2.c                            |   2 +-
 hw/arm/msf2-soc.c                        |   6 +-
 hw/arm/musicpal.c                        |   3 +-
 hw/arm/npcm7xx.c                         |  16 +-
 hw/arm/realview.c                        |  25 ++-
 hw/arm/sbsa-ref.c                        |   4 +-
 hw/arm/stellaris.c                       |  30 +++-
 hw/arm/versatilepb.c                     |  15 +-
 hw/arm/vexpress.c                        |   4 +-
 hw/arm/virt.c                            |   4 +-
 hw/arm/xilinx_zynq.c                     |  11 +-
 hw/arm/xlnx-versal.c                     |   7 +-
 hw/arm/xlnx-zynqmp.c                     |   8 +-
 hw/cris/axis_dev88.c                     |   9 +-
 hw/hppa/machine.c                        |   7 +-
 hw/i386/pc.c                             |  33 ++--
 hw/i386/pc_piix.c                        |   2 +-
 hw/i386/pc_q35.c                         |   2 +-
 hw/loongarch/virt.c                      |   4 +-
 hw/m68k/mcf5208.c                        |  19 +--
 hw/m68k/q800.c                           |  29 ++--
 hw/microblaze/petalogix_ml605_mmu.c      |   3 +-
 hw/microblaze/petalogix_s3adsp1800_mmu.c |   3 +-
 hw/mips/fuloong2e.c                      |  16 +-
 hw/mips/jazz.c                           |  15 +-
 hw/mips/loongson3_virt.c                 |   4 +-
 hw/mips/malta.c                          |  15 +-
 hw/mips/mipssim.c                        |  13 +-
 hw/net/etraxfs_eth.c                     |   5 +-
 hw/net/lan9118.c                         |   5 +-
 hw/net/lasi_i82596.c                     |   3 +-
 hw/net/smc91c111.c                       |   5 +-
 hw/openrisc/openrisc_sim.c               |  18 +--
 hw/pci/pci.c                             |  73 +++------
 hw/ppc/e500.c                            |   4 +-
 hw/ppc/mac_newworld.c                    |   4 +-
 hw/ppc/mac_oldworld.c                    |   4 +-
 hw/ppc/ppc440_bamboo.c                   |  14 +-
 hw/ppc/prep.c                            |   8 +-
 hw/ppc/spapr.c                           |  18 +--
 hw/riscv/microchip_pfsoc.c               |  14 +-
 hw/riscv/sifive_u.c                      |   7 +-
 hw/s390x/s390-virtio-ccw.c               |  11 +-
 hw/sh4/r2d.c                             |   6 +-
 hw/sparc/sun4m.c                         |  20 ++-
 hw/sparc64/sun4u.c                       |  27 +---
 hw/xen/xen-bus.c                         |   6 +-
 hw/xen/xen_devconfig.c                   |  25 ---
 hw/xenpv/xen_machine_pv.c                |   9 --
 hw/xtensa/virt.c                         |   4 +-
 hw/xtensa/xtfpga.c                       |  13 +-
 include/hw/cris/etraxfs.h                |   2 +-
 include/hw/i386/pc.h                     |   4 +-
 include/hw/net/lan9118.h                 |   2 +-
 include/hw/net/ne2000-isa.h              |   2 -
 include/hw/net/smc91c111.h               |   2 +-
 include/hw/pci/pci.h                     |   7 +-
 include/hw/xen/xen-bus.h                 |   2 +-
 include/hw/xen/xen-legacy-backend.h      |   1 -
 include/net/net.h                        |  18 +--
 net/net.c                                | 253 +++++++++++++++++++++++++------
 system/globals.c                         |   2 -
 tests/qtest/npcm7xx_emc-test.c           |  18 +--
 79 files changed, 479 insertions(+), 550 deletions(-)





From xen-devel-bounces@lists.xenproject.org Mon Jan 08 20:59:11 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 08 Jan 2024 20:59:11 +0000
Received: from list by lists.xenproject.org with outflank-mailman.663982.1034056 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMwiF-0005si-NK; Mon, 08 Jan 2024 20:59:11 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 663982.1034056; Mon, 08 Jan 2024 20:59:11 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMwiF-0005sZ-Ki; Mon, 08 Jan 2024 20:59:11 +0000
Received: by outflank-mailman (input) for mailman id 663982;
 Mon, 08 Jan 2024 20:59:11 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=CNLN=IS=desiato.srs.infradead.org=BATV+a33e3d7a5f0474923369+7442+infradead.org+dwmw2@srs-se1.protection.inumbo.net>)
 id 1rMwab-0000R5-9K
 for xen-devel@lists.xenproject.org; Mon, 08 Jan 2024 20:51:17 +0000
Received: from desiato.infradead.org (desiato.infradead.org
 [2001:8b0:10b:1:d65d:64ff:fe57:4e05])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id a99f5eb5-ae67-11ee-98ef-6d05b1d4d9a1;
 Mon, 08 Jan 2024 21:51:14 +0100 (CET)
Received: from [2001:8b0:10b:1::ebe] (helo=i7.infradead.org)
 by desiato.infradead.org with esmtpsa (Exim 4.96 #2 (Red Hat Linux))
 id 1rMwYj-007wXN-2o; Mon, 08 Jan 2024 20:49:22 +0000
Received: from dwoodhou by i7.infradead.org with local (Exim 4.96.2 #2 (Red
 Hat Linux)) id 1rMwYj-002NEV-0d; Mon, 08 Jan 2024 20:49:21 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
X-Inumbo-ID: a99f5eb5-ae67-11ee-98ef-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=infradead.org; s=desiato.20200630; h=Sender:Content-Transfer-Encoding:
	MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:
	Reply-To:Content-Type:Content-ID:Content-Description;
	bh=BtvYxQZMYQ5MtHfC35lrWkDioorml/mWOUj6/4zttrw=; b=KzthCYmv36IOd+nEGzae8t//5x
	aZNckAiZq8hq4xQ4zUDuO4RpNZugkCDA0mN/hLSXw4jkkqU5sqOYKqVYoxoF6B9xG8lJAZfsLzRiX
	ZNtW/GOZwEjZpvpU+NUCVGhZ0X4nqoTP7YNiqbMToJi6+oFkPcZMzHBFymAyrpafD1bvdXDu5m5+V
	jH0T9mXe6bVEX9a7iPPQj3ng2bU3thCGWZBwlu6+w2IFo0kO5vPmjymu8qT+Uhi3rtVmuTZ9kc/Mv
	Smvgse0U7ri8rkrUae4HJCP80WS2hX0+Pew5M791YwiVkxozSzgWu8VPZ4uWJaWNZvteiogHXLn4D
	OdwV4dyA==;
From: David Woodhouse <dwmw2@infradead.org>
To: qemu-devel@nongnu.org
Cc: Richard Henderson <richard.henderson@linaro.org>,
	Beniamino Galvani <b.galvani@gmail.com>,
	Peter Maydell <peter.maydell@linaro.org>,
	Strahinja Jankovic <strahinja.p.jankovic@gmail.com>,
	Niek Linnenbank <nieklinnenbank@gmail.com>,
	=?UTF-8?q?C=C3=A9dric=20Le=20Goater?= <clg@kaod.org>,
	Andrew Jeffery <andrew@codeconstruct.com.au>,
	Joel Stanley <joel@jms.id.au>,
	Igor Mitsyanko <i.mitsyanko@gmail.com>,
	Jean-Christophe Dubois <jcd@tribudubois.net>,
	Andrey Smirnov <andrew.smirnov@gmail.com>,
	=?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= <philmd@linaro.org>,
	Rob Herring <robh@kernel.org>,
	Subbaraya Sundeep <sundeep.lkml@gmail.com>,
	Jan Kiszka <jan.kiszka@web.de>,
	Tyrone Ting <kfting@nuvoton.com>,
	Hao Wu <wuhaotsh@google.com>,
	Radoslaw Biernacki <rad@semihalf.com>,
	Leif Lindholm <quic_llindhol@quicinc.com>,
	Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org>,
	"Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
	Alistair Francis <alistair@alistair23.me>,
	Helge Deller <deller@gmx.de>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Eduardo Habkost <eduardo@habkost.net>,
	"Michael S. Tsirkin" <mst@redhat.com>,
	Marcel Apfelbaum <marcel.apfelbaum@gmail.com>,
	Song Gao <gaosong@loongson.cn>,
	Thomas Huth <huth@tuxfamily.org>,
	Laurent Vivier <laurent@vivier.eu>,
	Huacai Chen <chenhuacai@kernel.org>,
	Jiaxun Yang <jiaxun.yang@flygoat.com>,
	=?UTF-8?q?Herv=C3=A9=20Poussineau?= <hpoussin@reactos.org>,
	Aleksandar Rikalo <aleksandar.rikalo@syrmia.com>,
	Aurelien Jarno <aurelien@aurel32.net>,
	Jason Wang <jasowang@redhat.com>,
	Jia Liu <proljc@gmail.com>,
	Stafford Horne <shorne@gmail.com>,
	Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>,
	Nicholas Piggin <npiggin@gmail.com>,
	Daniel Henrique Barboza <danielhb413@gmail.com>,
	David Gibson <david@gibson.dropbear.id.au>,
	Harsh Prateek Bora <harshpb@linux.ibm.com>,
	Bin Meng <bin.meng@windriver.com>,
	Palmer Dabbelt <palmer@dabbelt.com>,
	Weiwei Li <liwei1518@gmail.com>,
	Liu Zhiwei <zhiwei_liu@linux.alibaba.com>,
	Halil Pasic <pasic@linux.ibm.com>,
	Christian Borntraeger <borntraeger@linux.ibm.com>,
	Eric Farman <farman@linux.ibm.com>,
	David Hildenbrand <david@redhat.com>,
	Ilya Leoshkevich <iii@linux.ibm.com>,
	Yoshinori Sato <ysato@users.sourceforge.jp>,
	Magnus Damm <magnus.damm@gmail.com>,
	Artyom Tarasenko <atar4qemu@gmail.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Anthony Perard <anthony.perard@citrix.com>,
	Paul Durrant <paul@xen.org>,
	Max Filippov <jcmvbkbc@gmail.com>,
	qemu-arm@nongnu.org,
	qemu-ppc@nongnu.org,
	qemu-riscv@nongnu.org,
	qemu-s390x@nongnu.org,
	xen-devel@lists.xenproject.org,
	David Woodhouse <dwmw@amazon.co.uk>
Subject: [PATCH v3 09/46] hw/arm/virt: use pci_init_nic_devices()
Date: Mon,  8 Jan 2024 20:26:38 +0000
Message-ID: <20240108204909.564514-10-dwmw2@infradead.org>
X-Mailer: git-send-email 2.41.0
In-Reply-To: <20240108204909.564514-1-dwmw2@infradead.org>
References: <20240108204909.564514-1-dwmw2@infradead.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Sender: David Woodhouse <dwmw2@infradead.org>
X-SRS-Rewrite: SMTP reverse-path rewritten from <dwmw2@infradead.org> by desiato.infradead.org. See http://www.infradead.org/rpr.html

From: David Woodhouse <dwmw@amazon.co.uk>

Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
---
 hw/arm/virt.c | 4 +---
 1 file changed, 1 insertion(+), 3 deletions(-)

diff --git a/hw/arm/virt.c b/hw/arm/virt.c
index 2793121cb4..8cf9237001 100644
--- a/hw/arm/virt.c
+++ b/hw/arm/virt.c
@@ -1454,9 +1454,7 @@ static void create_pcie(VirtMachineState *vms)
     pci->bypass_iommu = vms->default_bus_bypass_iommu;
     vms->bus = pci->bus;
     if (vms->bus) {
-        for (i = 0; i < nb_nics; i++) {
-            pci_nic_init_nofail(&nd_table[i], pci->bus, mc->default_nic, NULL);
-        }
+        pci_init_nic_devices(pci->bus, mc->default_nic);
     }
 
     nodename = vms->pciehb_nodename = g_strdup_printf("/pcie@%" PRIx64, base);
-- 
2.41.0



From xen-devel-bounces@lists.xenproject.org Mon Jan 08 20:59:45 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 08 Jan 2024 20:59:45 +0000
Received: from list by lists.xenproject.org with outflank-mailman.663989.1034066 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMwim-0006lI-1o; Mon, 08 Jan 2024 20:59:44 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 663989.1034066; Mon, 08 Jan 2024 20:59:44 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMwil-0006lB-Uu; Mon, 08 Jan 2024 20:59:43 +0000
Received: by outflank-mailman (input) for mailman id 663989;
 Mon, 08 Jan 2024 20:59:43 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=CNLN=IS=desiato.srs.infradead.org=BATV+a33e3d7a5f0474923369+7442+infradead.org+dwmw2@srs-se1.protection.inumbo.net>)
 id 1rMwad-0000R5-9o
 for xen-devel@lists.xenproject.org; Mon, 08 Jan 2024 20:51:19 +0000
Received: from desiato.infradead.org (desiato.infradead.org
 [2001:8b0:10b:1:d65d:64ff:fe57:4e05])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id aac1ca38-ae67-11ee-98ef-6d05b1d4d9a1;
 Mon, 08 Jan 2024 21:51:16 +0100 (CET)
Received: from [2001:8b0:10b:1::ebe] (helo=i7.infradead.org)
 by desiato.infradead.org with esmtpsa (Exim 4.96 #2 (Red Hat Linux))
 id 1rMwYn-007wY4-1K; Mon, 08 Jan 2024 20:49:26 +0000
Received: from dwoodhou by i7.infradead.org with local (Exim 4.96.2 #2 (Red
 Hat Linux)) id 1rMwYl-002NHM-34; Mon, 08 Jan 2024 20:49:23 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
X-Inumbo-ID: aac1ca38-ae67-11ee-98ef-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=infradead.org; s=desiato.20200630; h=Sender:Content-Transfer-Encoding:
	MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:
	Reply-To:Content-Type:Content-ID:Content-Description;
	bh=H8uo0pCflTks+jIWZUwcN6rKBxLFmITgxa+9iGQo6wc=; b=DYAuUj1/b3Aiz1Ro0D1uOcLOS2
	fmkbWrwK8cH+8Kqsr2fBgtANEG2Xqc1y6z4oMUtgexhozrioVT7ym4qdEAmgUmfB98R6vXpQkwH+v
	7efyS/FPX8AUfdLxUAEyHQdRNWduvPc62LwiJ0SwgIzBU4ROOxqwGryDlLeri8KNpYYfNpMz/10lH
	JUm+eugn0mnWmH7MMMk27Z/P+w9+2arZpfk2IOzbYwXG+3DkrQactNCd2UoSTbJ1QTySEyjtKdlr7
	tSVgFCsjOnU+Fc65A3MFEH1791jXTV+BgzIyyDnPOzrRVLtdU1rN6qbog2ITH/0/7+HrPk0xKMWS9
	5FaID+kQ==;
From: David Woodhouse <dwmw2@infradead.org>
To: qemu-devel@nongnu.org
Cc: Richard Henderson <richard.henderson@linaro.org>,
	Beniamino Galvani <b.galvani@gmail.com>,
	Peter Maydell <peter.maydell@linaro.org>,
	Strahinja Jankovic <strahinja.p.jankovic@gmail.com>,
	Niek Linnenbank <nieklinnenbank@gmail.com>,
	=?UTF-8?q?C=C3=A9dric=20Le=20Goater?= <clg@kaod.org>,
	Andrew Jeffery <andrew@codeconstruct.com.au>,
	Joel Stanley <joel@jms.id.au>,
	Igor Mitsyanko <i.mitsyanko@gmail.com>,
	Jean-Christophe Dubois <jcd@tribudubois.net>,
	Andrey Smirnov <andrew.smirnov@gmail.com>,
	=?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= <philmd@linaro.org>,
	Rob Herring <robh@kernel.org>,
	Subbaraya Sundeep <sundeep.lkml@gmail.com>,
	Jan Kiszka <jan.kiszka@web.de>,
	Tyrone Ting <kfting@nuvoton.com>,
	Hao Wu <wuhaotsh@google.com>,
	Radoslaw Biernacki <rad@semihalf.com>,
	Leif Lindholm <quic_llindhol@quicinc.com>,
	Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org>,
	"Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
	Alistair Francis <alistair@alistair23.me>,
	Helge Deller <deller@gmx.de>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Eduardo Habkost <eduardo@habkost.net>,
	"Michael S. Tsirkin" <mst@redhat.com>,
	Marcel Apfelbaum <marcel.apfelbaum@gmail.com>,
	Song Gao <gaosong@loongson.cn>,
	Thomas Huth <huth@tuxfamily.org>,
	Laurent Vivier <laurent@vivier.eu>,
	Huacai Chen <chenhuacai@kernel.org>,
	Jiaxun Yang <jiaxun.yang@flygoat.com>,
	=?UTF-8?q?Herv=C3=A9=20Poussineau?= <hpoussin@reactos.org>,
	Aleksandar Rikalo <aleksandar.rikalo@syrmia.com>,
	Aurelien Jarno <aurelien@aurel32.net>,
	Jason Wang <jasowang@redhat.com>,
	Jia Liu <proljc@gmail.com>,
	Stafford Horne <shorne@gmail.com>,
	Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>,
	Nicholas Piggin <npiggin@gmail.com>,
	Daniel Henrique Barboza <danielhb413@gmail.com>,
	David Gibson <david@gibson.dropbear.id.au>,
	Harsh Prateek Bora <harshpb@linux.ibm.com>,
	Bin Meng <bin.meng@windriver.com>,
	Palmer Dabbelt <palmer@dabbelt.com>,
	Weiwei Li <liwei1518@gmail.com>,
	Liu Zhiwei <zhiwei_liu@linux.alibaba.com>,
	Halil Pasic <pasic@linux.ibm.com>,
	Christian Borntraeger <borntraeger@linux.ibm.com>,
	Eric Farman <farman@linux.ibm.com>,
	David Hildenbrand <david@redhat.com>,
	Ilya Leoshkevich <iii@linux.ibm.com>,
	Yoshinori Sato <ysato@users.sourceforge.jp>,
	Magnus Damm <magnus.damm@gmail.com>,
	Artyom Tarasenko <atar4qemu@gmail.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Anthony Perard <anthony.perard@citrix.com>,
	Paul Durrant <paul@xen.org>,
	Max Filippov <jcmvbkbc@gmail.com>,
	qemu-arm@nongnu.org,
	qemu-ppc@nongnu.org,
	qemu-riscv@nongnu.org,
	qemu-s390x@nongnu.org,
	xen-devel@lists.xenproject.org,
	David Woodhouse <dwmw@amazon.co.uk>
Subject: [PATCH v3 45/46] net: remove qemu_show_nic_models(), qemu_find_nic_model()
Date: Mon,  8 Jan 2024 20:27:14 +0000
Message-ID: <20240108204909.564514-46-dwmw2@infradead.org>
X-Mailer: git-send-email 2.41.0
In-Reply-To: <20240108204909.564514-1-dwmw2@infradead.org>
References: <20240108204909.564514-1-dwmw2@infradead.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Sender: David Woodhouse <dwmw2@infradead.org>
X-SRS-Rewrite: SMTP reverse-path rewritten from <dwmw2@infradead.org> by desiato.infradead.org. See http://www.infradead.org/rpr.html

From: David Woodhouse <dwmw@amazon.co.uk>

These old functions can be removed now too. Let net_param_nic() print
the full set of network devices directly, and also make it note that a
list more specific to this platform/config will be available by using
'-nic model=help' instead.

Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
---
 include/net/net.h |  3 ---
 net/net.c         | 39 ++++++---------------------------------
 2 files changed, 6 insertions(+), 36 deletions(-)

diff --git a/include/net/net.h b/include/net/net.h
index 1be8b40074..19fb82833c 100644
--- a/include/net/net.h
+++ b/include/net/net.h
@@ -203,9 +203,6 @@ void qemu_set_vnet_hdr_len(NetClientState *nc, int len);
 int qemu_set_vnet_le(NetClientState *nc, bool is_le);
 int qemu_set_vnet_be(NetClientState *nc, bool is_be);
 void qemu_macaddr_default_if_unset(MACAddr *macaddr);
-int qemu_show_nic_models(const char *arg, const char *const *models);
-int qemu_find_nic_model(NICInfo *nd, const char * const *models,
-                        const char *default_model);
 NICInfo *qemu_find_nic_info(const char *typename, bool match_default,
                             const char *alias);
 bool qemu_configure_nic_device(DeviceState *dev, bool match_default,
diff --git a/net/net.c b/net/net.c
index ffd4b42d5a..09ab0889f5 100644
--- a/net/net.c
+++ b/net/net.c
@@ -977,38 +977,6 @@ GPtrArray *qemu_get_nic_models(const char *device_type)
     return nic_models;
 }
 
-int qemu_show_nic_models(const char *arg, const char *const *models)
-{
-    int i;
-
-    if (!arg || !is_help_option(arg)) {
-        return 0;
-    }
-
-    printf("Available NIC models:\n");
-    for (i = 0 ; models[i]; i++) {
-        printf("%s\n", models[i]);
-    }
-    return 1;
-}
-
-int qemu_find_nic_model(NICInfo *nd, const char * const *models,
-                        const char *default_model)
-{
-    int i;
-
-    if (!nd->model)
-        nd->model = g_strdup(default_model);
-
-    for (i = 0 ; models[i]; i++) {
-        if (strcmp(nd->model, models[i]) == 0)
-            return i;
-    }
-
-    error_report("Unsupported NIC model: %s", nd->model);
-    return -1;
-}
-
 static int net_init_nic(const Netdev *netdev, const char *name,
                         NetClientState *peer, Error **errp)
 {
@@ -1791,9 +1759,14 @@ static int net_param_nic(void *dummy, QemuOpts *opts, Error **errp)
         }
         if (is_help_option(type)) {
             GPtrArray *nic_models = qemu_get_nic_models(TYPE_DEVICE);
+            int i;
             show_netdevs();
             printf("\n");
-            qemu_show_nic_models(type, (const char **)nic_models->pdata);
+            printf("Supported NIC models "
+                   "(use -nic model=help for a filtered list):\n");
+            for (i = 0 ; nic_models->pdata[i]; i++) {
+                printf("%s\n", (char *)nic_models->pdata[i]);
+            }
             g_ptr_array_free(nic_models, true);
             exit(0);
         }
-- 
2.41.0



From xen-devel-bounces@lists.xenproject.org Mon Jan 08 20:59:45 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 08 Jan 2024 20:59:45 +0000
Received: from list by lists.xenproject.org with outflank-mailman.663991.1034070 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMwim-0006nt-8h; Mon, 08 Jan 2024 20:59:44 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 663991.1034070; Mon, 08 Jan 2024 20:59:44 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMwim-0006my-4j; Mon, 08 Jan 2024 20:59:44 +0000
Received: by outflank-mailman (input) for mailman id 663991;
 Mon, 08 Jan 2024 20:59:43 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=CNLN=IS=desiato.srs.infradead.org=BATV+a33e3d7a5f0474923369+7442+infradead.org+dwmw2@srs-se1.protection.inumbo.net>)
 id 1rMwae-0000R6-Hh
 for xen-devel@lists.xenproject.org; Mon, 08 Jan 2024 20:51:20 +0000
Received: from desiato.infradead.org (desiato.infradead.org
 [2001:8b0:10b:1:d65d:64ff:fe57:4e05])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id ab0ad459-ae67-11ee-9b0f-b553b5be7939;
 Mon, 08 Jan 2024 21:51:17 +0100 (CET)
Received: from [2001:8b0:10b:1::ebe] (helo=i7.infradead.org)
 by desiato.infradead.org with esmtpsa (Exim 4.96 #2 (Red Hat Linux))
 id 1rMwYm-007wXu-0F; Mon, 08 Jan 2024 20:49:24 +0000
Received: from dwoodhou by i7.infradead.org with local (Exim 4.96.2 #2 (Red
 Hat Linux)) id 1rMwYl-002NGi-1C; Mon, 08 Jan 2024 20:49:23 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
X-Inumbo-ID: ab0ad459-ae67-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=infradead.org; s=desiato.20200630; h=Sender:Content-Transfer-Encoding:
	MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:
	Reply-To:Content-Type:Content-ID:Content-Description;
	bh=1WN6S7P9khjjRDptuhw9wfAzdg/uT5NK3rR3MKpFEIQ=; b=PPEeq4uX8x6/nqsUejt6pI1XaC
	ehm7vGRO+AeDJTn95tLLNTK6MCaBnw3TGnVndxXMuigBOvc0bp2fxfK+TJitEh886faEWTINhRz/Z
	dRaiGbhvcYjxVSDG1cogfRLbVb9/ZSxdWZveefhh6Sm/Yk7oNQFjx7BDj5VQzgJbPOQJLzyE10nop
	aVlZ5rmjSlPSKJ+zmpjuCM1yqlikPj3dCmhEJofR53U3jV9LUCUzJey80tr7JrolAVt4/CuMVI/sC
	kwbXGKVFCAtoQ33Duv8DOIeSkjf49ZVomUSkU/LVmI4JAtdJUR53zRhRHSYcq+WKfNWqgG4mD5hhj
	170FqWXA==;
From: David Woodhouse <dwmw2@infradead.org>
To: qemu-devel@nongnu.org
Cc: Richard Henderson <richard.henderson@linaro.org>,
	Beniamino Galvani <b.galvani@gmail.com>,
	Peter Maydell <peter.maydell@linaro.org>,
	Strahinja Jankovic <strahinja.p.jankovic@gmail.com>,
	Niek Linnenbank <nieklinnenbank@gmail.com>,
	=?UTF-8?q?C=C3=A9dric=20Le=20Goater?= <clg@kaod.org>,
	Andrew Jeffery <andrew@codeconstruct.com.au>,
	Joel Stanley <joel@jms.id.au>,
	Igor Mitsyanko <i.mitsyanko@gmail.com>,
	Jean-Christophe Dubois <jcd@tribudubois.net>,
	Andrey Smirnov <andrew.smirnov@gmail.com>,
	=?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= <philmd@linaro.org>,
	Rob Herring <robh@kernel.org>,
	Subbaraya Sundeep <sundeep.lkml@gmail.com>,
	Jan Kiszka <jan.kiszka@web.de>,
	Tyrone Ting <kfting@nuvoton.com>,
	Hao Wu <wuhaotsh@google.com>,
	Radoslaw Biernacki <rad@semihalf.com>,
	Leif Lindholm <quic_llindhol@quicinc.com>,
	Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org>,
	"Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
	Alistair Francis <alistair@alistair23.me>,
	Helge Deller <deller@gmx.de>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Eduardo Habkost <eduardo@habkost.net>,
	"Michael S. Tsirkin" <mst@redhat.com>,
	Marcel Apfelbaum <marcel.apfelbaum@gmail.com>,
	Song Gao <gaosong@loongson.cn>,
	Thomas Huth <huth@tuxfamily.org>,
	Laurent Vivier <laurent@vivier.eu>,
	Huacai Chen <chenhuacai@kernel.org>,
	Jiaxun Yang <jiaxun.yang@flygoat.com>,
	=?UTF-8?q?Herv=C3=A9=20Poussineau?= <hpoussin@reactos.org>,
	Aleksandar Rikalo <aleksandar.rikalo@syrmia.com>,
	Aurelien Jarno <aurelien@aurel32.net>,
	Jason Wang <jasowang@redhat.com>,
	Jia Liu <proljc@gmail.com>,
	Stafford Horne <shorne@gmail.com>,
	Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>,
	Nicholas Piggin <npiggin@gmail.com>,
	Daniel Henrique Barboza <danielhb413@gmail.com>,
	David Gibson <david@gibson.dropbear.id.au>,
	Harsh Prateek Bora <harshpb@linux.ibm.com>,
	Bin Meng <bin.meng@windriver.com>,
	Palmer Dabbelt <palmer@dabbelt.com>,
	Weiwei Li <liwei1518@gmail.com>,
	Liu Zhiwei <zhiwei_liu@linux.alibaba.com>,
	Halil Pasic <pasic@linux.ibm.com>,
	Christian Borntraeger <borntraeger@linux.ibm.com>,
	Eric Farman <farman@linux.ibm.com>,
	David Hildenbrand <david@redhat.com>,
	Ilya Leoshkevich <iii@linux.ibm.com>,
	Yoshinori Sato <ysato@users.sourceforge.jp>,
	Magnus Damm <magnus.damm@gmail.com>,
	Artyom Tarasenko <atar4qemu@gmail.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Anthony Perard <anthony.perard@citrix.com>,
	Paul Durrant <paul@xen.org>,
	Max Filippov <jcmvbkbc@gmail.com>,
	qemu-arm@nongnu.org,
	qemu-ppc@nongnu.org,
	qemu-riscv@nongnu.org,
	qemu-s390x@nongnu.org,
	xen-devel@lists.xenproject.org,
	David Woodhouse <dwmw@amazon.co.uk>
Subject: [PATCH v3 37/46] hw/net/lasi_i82596: use qemu_configure_nic_device()
Date: Mon,  8 Jan 2024 20:27:06 +0000
Message-ID: <20240108204909.564514-38-dwmw2@infradead.org>
X-Mailer: git-send-email 2.41.0
In-Reply-To: <20240108204909.564514-1-dwmw2@infradead.org>
References: <20240108204909.564514-1-dwmw2@infradead.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Sender: David Woodhouse <dwmw2@infradead.org>
X-SRS-Rewrite: SMTP reverse-path rewritten from <dwmw2@infradead.org> by desiato.infradead.org. See http://www.infradead.org/rpr.html

From: David Woodhouse <dwmw@amazon.co.uk>

Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
---
 hw/net/lasi_i82596.c | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/hw/net/lasi_i82596.c b/hw/net/lasi_i82596.c
index 6a3147fe2d..2bb4f2c4ca 100644
--- a/hw/net/lasi_i82596.c
+++ b/hw/net/lasi_i82596.c
@@ -125,11 +125,10 @@ SysBusI82596State *lasi_82596_init(MemoryRegion *addr_space,
     static const MACAddr HP_MAC = {
         .a = { 0x08, 0x00, 0x09, 0xef, 0x34, 0xf6 } };
 
-    qemu_check_nic_model(&nd_table[0], TYPE_LASI_82596);
     dev = qdev_new(TYPE_LASI_82596);
     s = SYSBUS_I82596(dev);
     s->state.irq = lan_irq;
-    qdev_set_nic_properties(dev, &nd_table[0]);
+    qemu_configure_nic_device(dev, true, NULL);
     sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal);
     s->state.conf.macaddr = HP_MAC; /* set HP MAC prefix */
 
-- 
2.41.0



From xen-devel-bounces@lists.xenproject.org Mon Jan 08 21:00:46 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 08 Jan 2024 21:00:46 +0000
Received: from list by lists.xenproject.org with outflank-mailman.664001.1034086 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMwjl-0000ek-On; Mon, 08 Jan 2024 21:00:45 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 664001.1034086; Mon, 08 Jan 2024 21:00:45 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMwjl-0000ed-Le; Mon, 08 Jan 2024 21:00:45 +0000
Received: by outflank-mailman (input) for mailman id 664001;
 Mon, 08 Jan 2024 21:00:44 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=CNLN=IS=desiato.srs.infradead.org=BATV+a33e3d7a5f0474923369+7442+infradead.org+dwmw2@srs-se1.protection.inumbo.net>)
 id 1rMwad-0000R6-He
 for xen-devel@lists.xenproject.org; Mon, 08 Jan 2024 20:51:19 +0000
Received: from desiato.infradead.org (desiato.infradead.org
 [2001:8b0:10b:1:d65d:64ff:fe57:4e05])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id aa3f9073-ae67-11ee-9b0f-b553b5be7939;
 Mon, 08 Jan 2024 21:51:15 +0100 (CET)
Received: from [2001:8b0:10b:1::ebe] (helo=i7.infradead.org)
 by desiato.infradead.org with esmtpsa (Exim 4.96 #2 (Red Hat Linux))
 id 1rMwYi-007wXI-2u; Mon, 08 Jan 2024 20:49:21 +0000
Received: from dwoodhou by i7.infradead.org with local (Exim 4.96.2 #2 (Red
 Hat Linux)) id 1rMwYi-002NE2-1Z; Mon, 08 Jan 2024 20:49:20 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
X-Inumbo-ID: aa3f9073-ae67-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=infradead.org; s=desiato.20200630; h=Sender:Content-Transfer-Encoding:
	MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:
	Reply-To:Content-Type:Content-ID:Content-Description;
	bh=4lC935ROrT9cdSd5oQM6qeAFiPZpcvmJXYZzwgJAsGw=; b=SngBht92quYvotDFFZz+ESmBl+
	stBytuJNL74TSN7YaVNRQrxtI+ZFtBE3yoR8RODsbsh6tS0Z3au9uowMY2YMmDjHcNEuHEJLb2V5h
	7ixbCMWqxAkR5DgTJ2uOxrPoK1oZvcykURYA5UOS7YBZRVbDOldLdjwX24BHpwP38lH4TVrLzRu1l
	FZcqOYMfM/slzODvCjZAy/C4BOCE3rfn+vEJwJ7+w4ZQ4eySBxtGBf3QOgWtnpmalUP9dO+SICrxB
	GF9rf5sSaeyetBxtYXW8KkuI06IekJd3bxMg9Xa9lpPP9LGqlNVfZCI2lNVBAfbk4E/62ldnuef6/
	zTfVwGOA==;
From: David Woodhouse <dwmw2@infradead.org>
To: qemu-devel@nongnu.org
Cc: Richard Henderson <richard.henderson@linaro.org>,
	Beniamino Galvani <b.galvani@gmail.com>,
	Peter Maydell <peter.maydell@linaro.org>,
	Strahinja Jankovic <strahinja.p.jankovic@gmail.com>,
	Niek Linnenbank <nieklinnenbank@gmail.com>,
	=?UTF-8?q?C=C3=A9dric=20Le=20Goater?= <clg@kaod.org>,
	Andrew Jeffery <andrew@codeconstruct.com.au>,
	Joel Stanley <joel@jms.id.au>,
	Igor Mitsyanko <i.mitsyanko@gmail.com>,
	Jean-Christophe Dubois <jcd@tribudubois.net>,
	Andrey Smirnov <andrew.smirnov@gmail.com>,
	=?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= <philmd@linaro.org>,
	Rob Herring <robh@kernel.org>,
	Subbaraya Sundeep <sundeep.lkml@gmail.com>,
	Jan Kiszka <jan.kiszka@web.de>,
	Tyrone Ting <kfting@nuvoton.com>,
	Hao Wu <wuhaotsh@google.com>,
	Radoslaw Biernacki <rad@semihalf.com>,
	Leif Lindholm <quic_llindhol@quicinc.com>,
	Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org>,
	"Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
	Alistair Francis <alistair@alistair23.me>,
	Helge Deller <deller@gmx.de>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Eduardo Habkost <eduardo@habkost.net>,
	"Michael S. Tsirkin" <mst@redhat.com>,
	Marcel Apfelbaum <marcel.apfelbaum@gmail.com>,
	Song Gao <gaosong@loongson.cn>,
	Thomas Huth <huth@tuxfamily.org>,
	Laurent Vivier <laurent@vivier.eu>,
	Huacai Chen <chenhuacai@kernel.org>,
	Jiaxun Yang <jiaxun.yang@flygoat.com>,
	=?UTF-8?q?Herv=C3=A9=20Poussineau?= <hpoussin@reactos.org>,
	Aleksandar Rikalo <aleksandar.rikalo@syrmia.com>,
	Aurelien Jarno <aurelien@aurel32.net>,
	Jason Wang <jasowang@redhat.com>,
	Jia Liu <proljc@gmail.com>,
	Stafford Horne <shorne@gmail.com>,
	Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>,
	Nicholas Piggin <npiggin@gmail.com>,
	Daniel Henrique Barboza <danielhb413@gmail.com>,
	David Gibson <david@gibson.dropbear.id.au>,
	Harsh Prateek Bora <harshpb@linux.ibm.com>,
	Bin Meng <bin.meng@windriver.com>,
	Palmer Dabbelt <palmer@dabbelt.com>,
	Weiwei Li <liwei1518@gmail.com>,
	Liu Zhiwei <zhiwei_liu@linux.alibaba.com>,
	Halil Pasic <pasic@linux.ibm.com>,
	Christian Borntraeger <borntraeger@linux.ibm.com>,
	Eric Farman <farman@linux.ibm.com>,
	David Hildenbrand <david@redhat.com>,
	Ilya Leoshkevich <iii@linux.ibm.com>,
	Yoshinori Sato <ysato@users.sourceforge.jp>,
	Magnus Damm <magnus.damm@gmail.com>,
	Artyom Tarasenko <atar4qemu@gmail.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Anthony Perard <anthony.perard@citrix.com>,
	Paul Durrant <paul@xen.org>,
	Max Filippov <jcmvbkbc@gmail.com>,
	qemu-arm@nongnu.org,
	qemu-ppc@nongnu.org,
	qemu-riscv@nongnu.org,
	qemu-s390x@nongnu.org,
	xen-devel@lists.xenproject.org,
	David Woodhouse <dwmw@amazon.co.uk>
Subject: [PATCH v3 02/46] net: report list of available models according to platform
Date: Mon,  8 Jan 2024 20:26:31 +0000
Message-ID: <20240108204909.564514-3-dwmw2@infradead.org>
X-Mailer: git-send-email 2.41.0
In-Reply-To: <20240108204909.564514-1-dwmw2@infradead.org>
References: <20240108204909.564514-1-dwmw2@infradead.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Sender: David Woodhouse <dwmw2@infradead.org>
X-SRS-Rewrite: SMTP reverse-path rewritten from <dwmw2@infradead.org> by desiato.infradead.org. See http://www.infradead.org/rpr.html

From: David Woodhouse <dwmw@amazon.co.uk>

By noting the models for which a configuration was requested, we can give
the user an accurate list of which NIC models were actually available on
the platform/configuration that was otherwise chosen.

Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
Reviewed-by: Paul Durrant <paul@xen.org>
---
 net/net.c | 94 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 94 insertions(+)

diff --git a/net/net.c b/net/net.c
index aeb7f573fc..962904eaef 100644
--- a/net/net.c
+++ b/net/net.c
@@ -75,6 +75,8 @@ typedef QSIMPLEQ_HEAD(, NetdevQueueEntry) NetdevQueue;
 
 static NetdevQueue nd_queue = QSIMPLEQ_HEAD_INITIALIZER(nd_queue);
 
+static GHashTable *nic_model_help;
+
 /***********************************************************/
 /* network device redirectors */
 
@@ -1087,12 +1089,94 @@ static int net_init_nic(const Netdev *netdev, const char *name,
     return idx;
 }
 
+static gboolean add_nic_result(gpointer key, gpointer value, gpointer user_data)
+{
+    GPtrArray *results = user_data;
+    GPtrArray *alias_list = value;
+    const char *model = key;
+    char *result;
+
+    if (!alias_list) {
+        result = g_strdup(model);
+    } else {
+        GString *result_str = g_string_new(model);
+        int i;
+
+        g_string_append(result_str, " (aka ");
+        for (i = 0; i < alias_list->len; i++) {
+            if (i) {
+                g_string_append(result_str, ", ");
+            }
+            g_string_append(result_str, alias_list->pdata[i]);
+        }
+        g_string_append(result_str, ")");
+        result = result_str->str;
+        g_string_free(result_str, false);
+        g_ptr_array_unref(alias_list);
+    }
+    g_ptr_array_add(results, result);
+    return true;
+}
+
+static int model_cmp(char **a, char **b)
+{
+    return strcmp(*a, *b);
+}
+
+static void show_nic_models(void)
+{
+    GPtrArray *results = g_ptr_array_new();
+    int i;
+
+    g_hash_table_foreach_remove(nic_model_help, add_nic_result, results);
+    g_ptr_array_sort(results, (GCompareFunc)model_cmp);
+
+    printf("Available NIC models for this configuration:\n");
+    for (i = 0 ; i < results->len; i++) {
+        printf("%s\n", (char *)results->pdata[i]);
+    }
+    g_hash_table_unref(nic_model_help);
+    nic_model_help = NULL;
+}
+
+static void add_nic_model_help(const char *model, const char *alias)
+{
+    GPtrArray *alias_list = NULL;
+
+    if (g_hash_table_lookup_extended(nic_model_help, model, NULL,
+                                     (gpointer *)&alias_list)) {
+        /* Already exists, no alias to add: return */
+        if (!alias) {
+            return;
+        }
+        if (alias_list) {
+            /* Check if this alias is already in the list. Add if not. */
+            if (!g_ptr_array_find_with_equal_func(alias_list, alias,
+                                                  g_str_equal, NULL)) {
+                g_ptr_array_add(alias_list, g_strdup(alias));
+            }
+            return;
+        }
+    }
+    /* Either this model wasn't in the list already, or a first alias added */
+    if (alias) {
+        alias_list = g_ptr_array_new();
+        g_ptr_array_set_free_func(alias_list, g_free);
+        g_ptr_array_add(alias_list, g_strdup(alias));
+    }
+    g_hash_table_replace(nic_model_help, g_strdup(model), alias_list);
+}
+
 NICInfo *qemu_find_nic_info(const char *typename, bool match_default,
                             const char *alias)
 {
     NICInfo *nd;
     int i;
 
+    if (nic_model_help) {
+        add_nic_model_help(typename, alias);
+    }
+
     for (i = 0; i < nb_nics; i++) {
         nd = &nd_table[i];
 
@@ -1606,6 +1690,10 @@ void net_check_clients(void)
     NetClientState *nc;
     int i;
 
+    if (nic_model_help) {
+        show_nic_models();
+        exit(0);
+    }
     net_hub_check_clients();
 
     QTAILQ_FOREACH(nc, &net_clients, next) {
@@ -1685,6 +1773,12 @@ static int net_param_nic(void *dummy, QemuOpts *opts, Error **errp)
     memset(ni, 0, sizeof(*ni));
     ni->model = qemu_opt_get_del(opts, "model");
 
+    if (!nic_model_help && !g_strcmp0(ni->model, "help")) {
+        nic_model_help = g_hash_table_new_full(g_str_hash, g_str_equal,
+                                               g_free, NULL);
+        return 0;
+    }
+
     /* Create an ID if the user did not specify one */
     nd_id = g_strdup(qemu_opts_id(opts));
     if (!nd_id) {
-- 
2.41.0



From xen-devel-bounces@lists.xenproject.org Mon Jan 08 21:01:54 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 08 Jan 2024 21:01:54 +0000
Received: from list by lists.xenproject.org with outflank-mailman.664005.1034096 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMwkr-0001M3-1j; Mon, 08 Jan 2024 21:01:53 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 664005.1034096; Mon, 08 Jan 2024 21:01:53 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMwkq-0001Lw-Un; Mon, 08 Jan 2024 21:01:52 +0000
Received: by outflank-mailman (input) for mailman id 664005;
 Mon, 08 Jan 2024 21:01:52 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=NrlO=IS=casper.srs.infradead.org=BATV+41a72dc6539c0dfbbc31+7442+infradead.org+dwmw2@srs-se1.protection.inumbo.net>)
 id 1rMwaU-0000R5-UQ
 for xen-devel@lists.xenproject.org; Mon, 08 Jan 2024 20:51:10 +0000
Received: from casper.infradead.org (casper.infradead.org
 [2001:8b0:10b:1236::1])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id a69f7a23-ae67-11ee-98ef-6d05b1d4d9a1;
 Mon, 08 Jan 2024 21:51:10 +0100 (CET)
Received: from [2001:8b0:10b:1::ebe] (helo=i7.infradead.org)
 by casper.infradead.org with esmtpsa (Exim 4.94.2 #2 (Red Hat Linux))
 id 1rMwYh-008RPJ-Rw; Mon, 08 Jan 2024 20:49:21 +0000
Received: from dwoodhou by i7.infradead.org with local (Exim 4.96.2 #2 (Red
 Hat Linux)) id 1rMwYi-002NE7-1o; Mon, 08 Jan 2024 20:49:20 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
X-Inumbo-ID: a69f7a23-ae67-11ee-98ef-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=infradead.org; s=casper.20170209; h=Sender:Content-Transfer-Encoding:
	Content-Type:MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:
	To:From:Reply-To:Content-ID:Content-Description;
	bh=i9hItWZfcWRTcka7itvIlVb3WzSdfcm/EF0MHLcxS00=; b=lTWq40DtjMn5XQVuUn8loyzT0I
	Pc1dg2yoA4UmhPLL2kSU//9y526qQpcf2MD3IkIaBHwJzIpLsMgl0wL2zb2LAnjSYOFuwoEpDpMIi
	4Y8xUUJkE5sVfxJ8w3eE32+YCLVVlqscgNqIneZyfnd3rYGgXZgi9v2A+4E4C9xhfYmhO0/7xCnZj
	yxjkYTwbtPfAt+8hwWWuc+w4Go86FzyA7R8XHvZOH9/1uj2NQ8D8rmMG1hU698KD8Wt/gpUL1b0ZH
	vxKRNqZJHpxTFTnb/LxIiBOtGBFQ/VCNCrFugC4P+ZyxRUTxb4atUX2SUHmH6bFfLtqf/jCw6w0Wv
	8WOpWVug==;
From: David Woodhouse <dwmw2@infradead.org>
To: qemu-devel@nongnu.org
Cc: Richard Henderson <richard.henderson@linaro.org>,
	Beniamino Galvani <b.galvani@gmail.com>,
	Peter Maydell <peter.maydell@linaro.org>,
	Strahinja Jankovic <strahinja.p.jankovic@gmail.com>,
	Niek Linnenbank <nieklinnenbank@gmail.com>,
	=?UTF-8?q?C=C3=A9dric=20Le=20Goater?= <clg@kaod.org>,
	Andrew Jeffery <andrew@codeconstruct.com.au>,
	Joel Stanley <joel@jms.id.au>,
	Igor Mitsyanko <i.mitsyanko@gmail.com>,
	Jean-Christophe Dubois <jcd@tribudubois.net>,
	Andrey Smirnov <andrew.smirnov@gmail.com>,
	=?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= <philmd@linaro.org>,
	Rob Herring <robh@kernel.org>,
	Subbaraya Sundeep <sundeep.lkml@gmail.com>,
	Jan Kiszka <jan.kiszka@web.de>,
	Tyrone Ting <kfting@nuvoton.com>,
	Hao Wu <wuhaotsh@google.com>,
	Radoslaw Biernacki <rad@semihalf.com>,
	Leif Lindholm <quic_llindhol@quicinc.com>,
	Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org>,
	"Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
	Alistair Francis <alistair@alistair23.me>,
	Helge Deller <deller@gmx.de>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Eduardo Habkost <eduardo@habkost.net>,
	"Michael S. Tsirkin" <mst@redhat.com>,
	Marcel Apfelbaum <marcel.apfelbaum@gmail.com>,
	Song Gao <gaosong@loongson.cn>,
	Thomas Huth <huth@tuxfamily.org>,
	Laurent Vivier <laurent@vivier.eu>,
	Huacai Chen <chenhuacai@kernel.org>,
	Jiaxun Yang <jiaxun.yang@flygoat.com>,
	=?UTF-8?q?Herv=C3=A9=20Poussineau?= <hpoussin@reactos.org>,
	Aleksandar Rikalo <aleksandar.rikalo@syrmia.com>,
	Aurelien Jarno <aurelien@aurel32.net>,
	Jason Wang <jasowang@redhat.com>,
	Jia Liu <proljc@gmail.com>,
	Stafford Horne <shorne@gmail.com>,
	Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>,
	Nicholas Piggin <npiggin@gmail.com>,
	Daniel Henrique Barboza <danielhb413@gmail.com>,
	David Gibson <david@gibson.dropbear.id.au>,
	Harsh Prateek Bora <harshpb@linux.ibm.com>,
	Bin Meng <bin.meng@windriver.com>,
	Palmer Dabbelt <palmer@dabbelt.com>,
	Weiwei Li <liwei1518@gmail.com>,
	Liu Zhiwei <zhiwei_liu@linux.alibaba.com>,
	Halil Pasic <pasic@linux.ibm.com>,
	Christian Borntraeger <borntraeger@linux.ibm.com>,
	Eric Farman <farman@linux.ibm.com>,
	David Hildenbrand <david@redhat.com>,
	Ilya Leoshkevich <iii@linux.ibm.com>,
	Yoshinori Sato <ysato@users.sourceforge.jp>,
	Magnus Damm <magnus.damm@gmail.com>,
	Artyom Tarasenko <atar4qemu@gmail.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Anthony Perard <anthony.perard@citrix.com>,
	Paul Durrant <paul@xen.org>,
	Max Filippov <jcmvbkbc@gmail.com>,
	qemu-arm@nongnu.org,
	qemu-ppc@nongnu.org,
	qemu-riscv@nongnu.org,
	qemu-s390x@nongnu.org,
	xen-devel@lists.xenproject.org,
	David Woodhouse <dwmw@amazon.co.uk>
Subject: [PATCH v3 03/46] net: add qemu_create_nic_bus_devices()
Date: Mon,  8 Jan 2024 20:26:32 +0000
Message-ID: <20240108204909.564514-4-dwmw2@infradead.org>
X-Mailer: git-send-email 2.41.0
In-Reply-To: <20240108204909.564514-1-dwmw2@infradead.org>
References: <20240108204909.564514-1-dwmw2@infradead.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Sender: David Woodhouse <dwmw2@infradead.org>
X-SRS-Rewrite: SMTP reverse-path rewritten from <dwmw2@infradead.org> by casper.infradead.org. See http://www.infradead.org/rpr.html

From: David Woodhouse <dwmw@amazon.co.uk>

This will instantiate any NICs which live on a given bus type. Each bus
is allowed *one* substitution (for PCI it's virtio → virtio-net-pci, for
Xen it's xen → xen-net-device; no point in overengineering it unless we
actually want more).

Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
Reviewed-by: Paul Durrant <paul@xen.org>
---
 include/net/net.h |  3 +++
 net/net.c         | 53 +++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 56 insertions(+)

diff --git a/include/net/net.h b/include/net/net.h
index 25ea83fd12..31e63d1f0d 100644
--- a/include/net/net.h
+++ b/include/net/net.h
@@ -213,6 +213,9 @@ bool qemu_configure_nic_device(DeviceState *dev, bool match_default,
                                const char *alias);
 DeviceState *qemu_create_nic_device(const char *typename, bool match_default,
                                     const char *alias);
+void qemu_create_nic_bus_devices(BusState *bus, const char *parent_type,
+                                 const char *default_model,
+                                 const char *alias, const char *alias_target);
 void print_net_client(Monitor *mon, NetClientState *nc);
 void net_socket_rs_init(SocketReadState *rs,
                         SocketReadStateFinalize *finalize,
diff --git a/net/net.c b/net/net.c
index 962904eaef..4651b3f443 100644
--- a/net/net.c
+++ b/net/net.c
@@ -1223,6 +1223,59 @@ DeviceState *qemu_create_nic_device(const char *typename, bool match_default,
     return dev;
 }
 
+void qemu_create_nic_bus_devices(BusState *bus, const char *parent_type,
+                                 const char *default_model,
+                                 const char *alias, const char *alias_target)
+{
+    GPtrArray *nic_models = qemu_get_nic_models(parent_type);
+    const char *model;
+    DeviceState *dev;
+    NICInfo *nd;
+    int i;
+
+    if (nic_model_help) {
+        if (alias_target) {
+            add_nic_model_help(alias_target, alias);
+        }
+        for (i = 0; i < nic_models->len - 1; i++) {
+            add_nic_model_help(nic_models->pdata[i], NULL);
+        }
+    }
+
+    /* Drop the NULL terminator which would make g_str_equal() unhappy */
+    nic_models->len--;
+
+    for (i = 0; i < nb_nics; i++) {
+        nd = &nd_table[i];
+
+        if (!nd->used || nd->instantiated) {
+            continue;
+        }
+
+        model = nd->model ? nd->model : default_model;
+        if (!model) {
+            continue;
+        }
+
+        /* Each bus type is allowed *one* substitution */
+        if (g_str_equal(model, alias)) {
+            model = alias_target;
+        }
+
+        if (!g_ptr_array_find_with_equal_func(nic_models, model,
+                                              g_str_equal, NULL)) {
+            /* This NIC does not live on this bus. */
+            continue;
+        }
+
+        dev = qdev_new(model);
+        qdev_set_nic_properties(dev, nd);
+        qdev_realize_and_unref(dev, bus, &error_fatal);
+    }
+
+    g_ptr_array_free(nic_models, true);
+}
+
 static int (* const net_client_init_fun[NET_CLIENT_DRIVER__MAX])(
     const Netdev *netdev,
     const char *name,
-- 
2.41.0



From xen-devel-bounces@lists.xenproject.org Mon Jan 08 21:02:35 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 08 Jan 2024 21:02:35 +0000
Received: from list by lists.xenproject.org with outflank-mailman.664009.1034106 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMwlX-00022G-At; Mon, 08 Jan 2024 21:02:35 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 664009.1034106; Mon, 08 Jan 2024 21:02:35 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMwlX-000229-7W; Mon, 08 Jan 2024 21:02:35 +0000
Received: by outflank-mailman (input) for mailman id 664009;
 Mon, 08 Jan 2024 21:02:34 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=CNLN=IS=desiato.srs.infradead.org=BATV+a33e3d7a5f0474923369+7442+infradead.org+dwmw2@srs-se1.protection.inumbo.net>)
 id 1rMwaZ-0000R5-9H
 for xen-devel@lists.xenproject.org; Mon, 08 Jan 2024 20:51:15 +0000
Received: from desiato.infradead.org (desiato.infradead.org
 [2001:8b0:10b:1:d65d:64ff:fe57:4e05])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id a9661ddb-ae67-11ee-98ef-6d05b1d4d9a1;
 Mon, 08 Jan 2024 21:51:14 +0100 (CET)
Received: from [2001:8b0:10b:1::ebe] (helo=i7.infradead.org)
 by desiato.infradead.org with esmtpsa (Exim 4.96 #2 (Red Hat Linux))
 id 1rMwYm-007wXn-0I; Mon, 08 Jan 2024 20:49:24 +0000
Received: from dwoodhou by i7.infradead.org with local (Exim 4.96.2 #2 (Red
 Hat Linux)) id 1rMwYl-002NGG-05; Mon, 08 Jan 2024 20:49:23 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
X-Inumbo-ID: a9661ddb-ae67-11ee-98ef-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=infradead.org; s=desiato.20200630; h=Sender:Content-Transfer-Encoding:
	MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:
	Reply-To:Content-Type:Content-ID:Content-Description;
	bh=jjA+mKm/KR8ygCw36R3MvCf4i1b5Zw/aOnxUi6/7roc=; b=ayaN3phb+ckS8ROU9AY1SGuUTM
	ooSaOlRggGQVW9JWqJ+ibLgkjfCrdQKFACmIKNhsgzsvpneprXtirDm+QCqwpT1xljM/hGtQpHtWo
	nlIdMQueQhwP72M1QvdFWZShiYMP4hg2hlJQaaQ9uRW12q0D8ri/WO71OtJa/or3G4h9k5QShJSCj
	SI9lhYJ0PjPLqufG6HVzDbjbpT1yYv9p6pszsLVo9X4MdIkUslz8q+Ts+LVakHg/4zPYHCFhIhuh6
	miSZ4JJxO5mXWNpXPRBGPoRhCPXENfBznpyBU2IipG9GD85xVTsAmNeud8DZPp+pFdt4lcbjPtLmy
	nIFMhOHg==;
From: David Woodhouse <dwmw2@infradead.org>
To: qemu-devel@nongnu.org
Cc: Richard Henderson <richard.henderson@linaro.org>,
	Beniamino Galvani <b.galvani@gmail.com>,
	Peter Maydell <peter.maydell@linaro.org>,
	Strahinja Jankovic <strahinja.p.jankovic@gmail.com>,
	Niek Linnenbank <nieklinnenbank@gmail.com>,
	=?UTF-8?q?C=C3=A9dric=20Le=20Goater?= <clg@kaod.org>,
	Andrew Jeffery <andrew@codeconstruct.com.au>,
	Joel Stanley <joel@jms.id.au>,
	Igor Mitsyanko <i.mitsyanko@gmail.com>,
	Jean-Christophe Dubois <jcd@tribudubois.net>,
	Andrey Smirnov <andrew.smirnov@gmail.com>,
	=?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= <philmd@linaro.org>,
	Rob Herring <robh@kernel.org>,
	Subbaraya Sundeep <sundeep.lkml@gmail.com>,
	Jan Kiszka <jan.kiszka@web.de>,
	Tyrone Ting <kfting@nuvoton.com>,
	Hao Wu <wuhaotsh@google.com>,
	Radoslaw Biernacki <rad@semihalf.com>,
	Leif Lindholm <quic_llindhol@quicinc.com>,
	Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org>,
	"Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
	Alistair Francis <alistair@alistair23.me>,
	Helge Deller <deller@gmx.de>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Eduardo Habkost <eduardo@habkost.net>,
	"Michael S. Tsirkin" <mst@redhat.com>,
	Marcel Apfelbaum <marcel.apfelbaum@gmail.com>,
	Song Gao <gaosong@loongson.cn>,
	Thomas Huth <huth@tuxfamily.org>,
	Laurent Vivier <laurent@vivier.eu>,
	Huacai Chen <chenhuacai@kernel.org>,
	Jiaxun Yang <jiaxun.yang@flygoat.com>,
	=?UTF-8?q?Herv=C3=A9=20Poussineau?= <hpoussin@reactos.org>,
	Aleksandar Rikalo <aleksandar.rikalo@syrmia.com>,
	Aurelien Jarno <aurelien@aurel32.net>,
	Jason Wang <jasowang@redhat.com>,
	Jia Liu <proljc@gmail.com>,
	Stafford Horne <shorne@gmail.com>,
	Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>,
	Nicholas Piggin <npiggin@gmail.com>,
	Daniel Henrique Barboza <danielhb413@gmail.com>,
	David Gibson <david@gibson.dropbear.id.au>,
	Harsh Prateek Bora <harshpb@linux.ibm.com>,
	Bin Meng <bin.meng@windriver.com>,
	Palmer Dabbelt <palmer@dabbelt.com>,
	Weiwei Li <liwei1518@gmail.com>,
	Liu Zhiwei <zhiwei_liu@linux.alibaba.com>,
	Halil Pasic <pasic@linux.ibm.com>,
	Christian Borntraeger <borntraeger@linux.ibm.com>,
	Eric Farman <farman@linux.ibm.com>,
	David Hildenbrand <david@redhat.com>,
	Ilya Leoshkevich <iii@linux.ibm.com>,
	Yoshinori Sato <ysato@users.sourceforge.jp>,
	Magnus Damm <magnus.damm@gmail.com>,
	Artyom Tarasenko <atar4qemu@gmail.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Anthony Perard <anthony.perard@citrix.com>,
	Paul Durrant <paul@xen.org>,
	Max Filippov <jcmvbkbc@gmail.com>,
	qemu-arm@nongnu.org,
	qemu-ppc@nongnu.org,
	qemu-riscv@nongnu.org,
	qemu-s390x@nongnu.org,
	xen-devel@lists.xenproject.org,
	David Woodhouse <dwmw@amazon.co.uk>
Subject: [PATCH v3 32/46] hw/m68k/mcf5208: use qemu_create_nic_device()
Date: Mon,  8 Jan 2024 20:27:01 +0000
Message-ID: <20240108204909.564514-33-dwmw2@infradead.org>
X-Mailer: git-send-email 2.41.0
In-Reply-To: <20240108204909.564514-1-dwmw2@infradead.org>
References: <20240108204909.564514-1-dwmw2@infradead.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Sender: David Woodhouse <dwmw2@infradead.org>
X-SRS-Rewrite: SMTP reverse-path rewritten from <dwmw2@infradead.org> by desiato.infradead.org. See http://www.infradead.org/rpr.html

From: David Woodhouse <dwmw@amazon.co.uk>

Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
---
 hw/m68k/mcf5208.c | 19 ++++++-------------
 1 file changed, 6 insertions(+), 13 deletions(-)

diff --git a/hw/m68k/mcf5208.c b/hw/m68k/mcf5208.c
index d22d8536db..0cfb806c20 100644
--- a/hw/m68k/mcf5208.c
+++ b/hw/m68k/mcf5208.c
@@ -206,16 +206,16 @@ static void mcf5208_sys_init(MemoryRegion *address_space, qemu_irq *pic)
     }
 }
 
-static void mcf_fec_init(MemoryRegion *sysmem, NICInfo *nd, hwaddr base,
-                         qemu_irq *irqs)
+static void mcf_fec_init(MemoryRegion *sysmem, hwaddr base, qemu_irq *irqs)
 {
     DeviceState *dev;
     SysBusDevice *s;
     int i;
 
-    qemu_check_nic_model(nd, TYPE_MCF_FEC_NET);
-    dev = qdev_new(TYPE_MCF_FEC_NET);
-    qdev_set_nic_properties(dev, nd);
+    dev = qemu_create_nic_device(TYPE_MCF_FEC_NET, true, NULL);
+    if (!dev) {
+        return;
+    }
 
     s = SYS_BUS_DEVICE(dev);
     sysbus_realize_and_unref(s, &error_fatal);
@@ -267,14 +267,7 @@ static void mcf5208evb_init(MachineState *machine)
 
     mcf5208_sys_init(address_space_mem, pic);
 
-    if (nb_nics > 1) {
-        error_report("Too many NICs");
-        exit(1);
-    }
-    if (nd_table[0].used) {
-        mcf_fec_init(address_space_mem, &nd_table[0],
-                     0xfc030000, pic + 36);
-    }
+    mcf_fec_init(address_space_mem, 0xfc030000, pic + 36);
 
     g_free(pic);
 
-- 
2.41.0



From xen-devel-bounces@lists.xenproject.org Mon Jan 08 21:02:35 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 08 Jan 2024 21:02:35 +0000
Received: from list by lists.xenproject.org with outflank-mailman.664012.1034112 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMwlX-000262-MN; Mon, 08 Jan 2024 21:02:35 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 664012.1034112; Mon, 08 Jan 2024 21:02:35 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMwlX-00025J-GS; Mon, 08 Jan 2024 21:02:35 +0000
Received: by outflank-mailman (input) for mailman id 664012;
 Mon, 08 Jan 2024 21:02:34 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=CNLN=IS=desiato.srs.infradead.org=BATV+a33e3d7a5f0474923369+7442+infradead.org+dwmw2@srs-se1.protection.inumbo.net>)
 id 1rMwaa-0000R5-9B
 for xen-devel@lists.xenproject.org; Mon, 08 Jan 2024 20:51:16 +0000
Received: from desiato.infradead.org (desiato.infradead.org
 [2001:8b0:10b:1:d65d:64ff:fe57:4e05])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id a989ad04-ae67-11ee-98ef-6d05b1d4d9a1;
 Mon, 08 Jan 2024 21:51:14 +0100 (CET)
Received: from [2001:8b0:10b:1::ebe] (helo=i7.infradead.org)
 by desiato.infradead.org with esmtpsa (Exim 4.96 #2 (Red Hat Linux))
 id 1rMwYk-007wXQ-2w; Mon, 08 Jan 2024 20:49:23 +0000
Received: from dwoodhou by i7.infradead.org with local (Exim 4.96.2 #2 (Red
 Hat Linux)) id 1rMwYj-002NEz-2D; Mon, 08 Jan 2024 20:49:21 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
X-Inumbo-ID: a989ad04-ae67-11ee-98ef-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=infradead.org; s=desiato.20200630; h=Sender:Content-Transfer-Encoding:
	MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:
	Reply-To:Content-Type:Content-ID:Content-Description;
	bh=9F94s85N161zpHncvzHPgHeV1YSdfSxyasD9KuzjSZQ=; b=C782r6Abcag566KSiqaHoxRWFf
	qJXNYst6t8COyQd4+X+OL97wL2cQh4nGGDrDlMb+uWJt2mjIYFxch9GJN0G9gkS/WDmwqOyhwf4s4
	Em3VlMcW1qNmFx9QIe2ZOo+kFEYaMaagMuH1nY0/timFzvyGQWLIPrBAsRcIMn4c3y98MubZzrcjQ
	FabY+Z0DlLwZy+7jjSk0ueaKiRixHvLe+91Ru7TfCqjVoSakPcj9Y05g0VSVRkDGAWzL4GTnqCiZU
	sgzg6LI7mmxKGNHcNZsECKuKHYzQm4nBQkqZGcCsXzOCNfT9J4BOsCYmjvolhREOFFyRA/6N7hQdP
	JFqZu4cg==;
From: David Woodhouse <dwmw2@infradead.org>
To: qemu-devel@nongnu.org
Cc: Richard Henderson <richard.henderson@linaro.org>,
	Beniamino Galvani <b.galvani@gmail.com>,
	Peter Maydell <peter.maydell@linaro.org>,
	Strahinja Jankovic <strahinja.p.jankovic@gmail.com>,
	Niek Linnenbank <nieklinnenbank@gmail.com>,
	=?UTF-8?q?C=C3=A9dric=20Le=20Goater?= <clg@kaod.org>,
	Andrew Jeffery <andrew@codeconstruct.com.au>,
	Joel Stanley <joel@jms.id.au>,
	Igor Mitsyanko <i.mitsyanko@gmail.com>,
	Jean-Christophe Dubois <jcd@tribudubois.net>,
	Andrey Smirnov <andrew.smirnov@gmail.com>,
	=?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= <philmd@linaro.org>,
	Rob Herring <robh@kernel.org>,
	Subbaraya Sundeep <sundeep.lkml@gmail.com>,
	Jan Kiszka <jan.kiszka@web.de>,
	Tyrone Ting <kfting@nuvoton.com>,
	Hao Wu <wuhaotsh@google.com>,
	Radoslaw Biernacki <rad@semihalf.com>,
	Leif Lindholm <quic_llindhol@quicinc.com>,
	Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org>,
	"Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
	Alistair Francis <alistair@alistair23.me>,
	Helge Deller <deller@gmx.de>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Eduardo Habkost <eduardo@habkost.net>,
	"Michael S. Tsirkin" <mst@redhat.com>,
	Marcel Apfelbaum <marcel.apfelbaum@gmail.com>,
	Song Gao <gaosong@loongson.cn>,
	Thomas Huth <huth@tuxfamily.org>,
	Laurent Vivier <laurent@vivier.eu>,
	Huacai Chen <chenhuacai@kernel.org>,
	Jiaxun Yang <jiaxun.yang@flygoat.com>,
	=?UTF-8?q?Herv=C3=A9=20Poussineau?= <hpoussin@reactos.org>,
	Aleksandar Rikalo <aleksandar.rikalo@syrmia.com>,
	Aurelien Jarno <aurelien@aurel32.net>,
	Jason Wang <jasowang@redhat.com>,
	Jia Liu <proljc@gmail.com>,
	Stafford Horne <shorne@gmail.com>,
	Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>,
	Nicholas Piggin <npiggin@gmail.com>,
	Daniel Henrique Barboza <danielhb413@gmail.com>,
	David Gibson <david@gibson.dropbear.id.au>,
	Harsh Prateek Bora <harshpb@linux.ibm.com>,
	Bin Meng <bin.meng@windriver.com>,
	Palmer Dabbelt <palmer@dabbelt.com>,
	Weiwei Li <liwei1518@gmail.com>,
	Liu Zhiwei <zhiwei_liu@linux.alibaba.com>,
	Halil Pasic <pasic@linux.ibm.com>,
	Christian Borntraeger <borntraeger@linux.ibm.com>,
	Eric Farman <farman@linux.ibm.com>,
	David Hildenbrand <david@redhat.com>,
	Ilya Leoshkevich <iii@linux.ibm.com>,
	Yoshinori Sato <ysato@users.sourceforge.jp>,
	Magnus Damm <magnus.damm@gmail.com>,
	Artyom Tarasenko <atar4qemu@gmail.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Anthony Perard <anthony.perard@citrix.com>,
	Paul Durrant <paul@xen.org>,
	Max Filippov <jcmvbkbc@gmail.com>,
	qemu-arm@nongnu.org,
	qemu-ppc@nongnu.org,
	qemu-riscv@nongnu.org,
	qemu-s390x@nongnu.org,
	xen-devel@lists.xenproject.org,
	David Woodhouse <dwmw@amazon.co.uk>
Subject: [PATCH v3 15/46] hw/ppc/prep: use pci_init_nic_devices()
Date: Mon,  8 Jan 2024 20:26:44 +0000
Message-ID: <20240108204909.564514-16-dwmw2@infradead.org>
X-Mailer: git-send-email 2.41.0
In-Reply-To: <20240108204909.564514-1-dwmw2@infradead.org>
References: <20240108204909.564514-1-dwmw2@infradead.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Sender: David Woodhouse <dwmw2@infradead.org>
X-SRS-Rewrite: SMTP reverse-path rewritten from <dwmw2@infradead.org> by desiato.infradead.org. See http://www.infradead.org/rpr.html

From: David Woodhouse <dwmw@amazon.co.uk>

Previously, the first PCI NIC would be placed in PCI slot 3 and the rest
would be dynamically assigned. Even if the user overrode the default NIC
type and made it something other than PCNet.

Now, the first PCNet NIC (that is, anything not explicitly specified
to be anything different) will go to slot 3 even if it isn't the first
NIC specified on the commnd line. And anything else will be dynamically
assigned.

Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
---
 hw/ppc/prep.c | 8 +++-----
 1 file changed, 3 insertions(+), 5 deletions(-)

diff --git a/hw/ppc/prep.c b/hw/ppc/prep.c
index 137276bcb9..1a6cd05c61 100644
--- a/hw/ppc/prep.c
+++ b/hw/ppc/prep.c
@@ -241,7 +241,6 @@ static void ibm_40p_init(MachineState *machine)
     ISADevice *isa_dev;
     ISABus *isa_bus;
     void *fw_cfg;
-    int i;
     uint32_t kernel_base = 0, initrd_base = 0;
     long kernel_size = 0, initrd_size = 0;
     char boot_device;
@@ -336,10 +335,9 @@ static void ibm_40p_init(MachineState *machine)
         /* XXX: s3-trio at PCI_DEVFN(2, 0) */
         pci_vga_init(pci_bus);
 
-        for (i = 0; i < nb_nics; i++) {
-            pci_nic_init_nofail(&nd_table[i], pci_bus, mc->default_nic,
-                                i == 0 ? "3" : NULL);
-        }
+        /* First PCNET device at PCI_DEVFN(3, 0) */
+        pci_init_nic_in_slot(pci_bus, mc->default_nic, NULL, "3");
+        pci_init_nic_devices(pci_bus, mc->default_nic);
     }
 
     /* Prepare firmware configuration for OpenBIOS */
-- 
2.41.0



From xen-devel-bounces@lists.xenproject.org Mon Jan 08 21:04:23 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 08 Jan 2024 21:04:23 +0000
Received: from list by lists.xenproject.org with outflank-mailman.664034.1034126 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMwnC-0003TQ-8D; Mon, 08 Jan 2024 21:04:18 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 664034.1034126; Mon, 08 Jan 2024 21:04:18 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMwnC-0003TJ-5Y; Mon, 08 Jan 2024 21:04:18 +0000
Received: by outflank-mailman (input) for mailman id 664034;
 Mon, 08 Jan 2024 21:04:16 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=CNLN=IS=desiato.srs.infradead.org=BATV+a33e3d7a5f0474923369+7442+infradead.org+dwmw2@srs-se1.protection.inumbo.net>)
 id 1rMwaY-0000R6-H2
 for xen-devel@lists.xenproject.org; Mon, 08 Jan 2024 20:51:14 +0000
Received: from desiato.infradead.org (desiato.infradead.org
 [2001:8b0:10b:1:d65d:64ff:fe57:4e05])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id a7ea7fb1-ae67-11ee-9b0f-b553b5be7939;
 Mon, 08 Jan 2024 21:51:11 +0100 (CET)
Received: from [2001:8b0:10b:1::ebe] (helo=i7.infradead.org)
 by desiato.infradead.org with esmtpsa (Exim 4.96 #2 (Red Hat Linux))
 id 1rMwYk-007wXW-33; Mon, 08 Jan 2024 20:49:23 +0000
Received: from dwoodhou by i7.infradead.org with local (Exim 4.96.2 #2 (Red
 Hat Linux)) id 1rMwYk-002NFY-1E; Mon, 08 Jan 2024 20:49:22 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
X-Inumbo-ID: a7ea7fb1-ae67-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=infradead.org; s=desiato.20200630; h=Sender:Content-Transfer-Encoding:
	MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:
	Reply-To:Content-Type:Content-ID:Content-Description;
	bh=b/4LHUVwE3s/LELrt+0ER1ploJUp0OvQT5xXzN2r1Zo=; b=R+9UIqnOpvziyuI2TUeYql4ANg
	NMsdk2/5xD7D9MlhuZHmIJshIziQqnGJtDHoW4juLDKVPAZkt6w3zK9xTk6L6jFAOzTTVcUuJEzbQ
	vVIoJKEujwUoDk+eRueZjnMO/yg1smyRp20TqQaT2SOON5sjvgNVD78pTYk6hzXjh9UXi705rgHZO
	cRP9+ZpBnCLmZBLdC1SOZJugbwehOlmlLqd6eRUBtQWfqP/9rNCd7Q9MPhrQcqTgiRqZgAdV7eX5h
	GHjiFsyayTuk2CwPmAB5b0G+B3QxnPunBG+WrdLoYj494gfueuQxkVScypeDuhGbyxIWbNdpVNgrf
	0vzFTh4g==;
From: David Woodhouse <dwmw2@infradead.org>
To: qemu-devel@nongnu.org
Cc: Richard Henderson <richard.henderson@linaro.org>,
	Beniamino Galvani <b.galvani@gmail.com>,
	Peter Maydell <peter.maydell@linaro.org>,
	Strahinja Jankovic <strahinja.p.jankovic@gmail.com>,
	Niek Linnenbank <nieklinnenbank@gmail.com>,
	=?UTF-8?q?C=C3=A9dric=20Le=20Goater?= <clg@kaod.org>,
	Andrew Jeffery <andrew@codeconstruct.com.au>,
	Joel Stanley <joel@jms.id.au>,
	Igor Mitsyanko <i.mitsyanko@gmail.com>,
	Jean-Christophe Dubois <jcd@tribudubois.net>,
	Andrey Smirnov <andrew.smirnov@gmail.com>,
	=?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= <philmd@linaro.org>,
	Rob Herring <robh@kernel.org>,
	Subbaraya Sundeep <sundeep.lkml@gmail.com>,
	Jan Kiszka <jan.kiszka@web.de>,
	Tyrone Ting <kfting@nuvoton.com>,
	Hao Wu <wuhaotsh@google.com>,
	Radoslaw Biernacki <rad@semihalf.com>,
	Leif Lindholm <quic_llindhol@quicinc.com>,
	Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org>,
	"Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
	Alistair Francis <alistair@alistair23.me>,
	Helge Deller <deller@gmx.de>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Eduardo Habkost <eduardo@habkost.net>,
	"Michael S. Tsirkin" <mst@redhat.com>,
	Marcel Apfelbaum <marcel.apfelbaum@gmail.com>,
	Song Gao <gaosong@loongson.cn>,
	Thomas Huth <huth@tuxfamily.org>,
	Laurent Vivier <laurent@vivier.eu>,
	Huacai Chen <chenhuacai@kernel.org>,
	Jiaxun Yang <jiaxun.yang@flygoat.com>,
	=?UTF-8?q?Herv=C3=A9=20Poussineau?= <hpoussin@reactos.org>,
	Aleksandar Rikalo <aleksandar.rikalo@syrmia.com>,
	Aurelien Jarno <aurelien@aurel32.net>,
	Jason Wang <jasowang@redhat.com>,
	Jia Liu <proljc@gmail.com>,
	Stafford Horne <shorne@gmail.com>,
	Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>,
	Nicholas Piggin <npiggin@gmail.com>,
	Daniel Henrique Barboza <danielhb413@gmail.com>,
	David Gibson <david@gibson.dropbear.id.au>,
	Harsh Prateek Bora <harshpb@linux.ibm.com>,
	Bin Meng <bin.meng@windriver.com>,
	Palmer Dabbelt <palmer@dabbelt.com>,
	Weiwei Li <liwei1518@gmail.com>,
	Liu Zhiwei <zhiwei_liu@linux.alibaba.com>,
	Halil Pasic <pasic@linux.ibm.com>,
	Christian Borntraeger <borntraeger@linux.ibm.com>,
	Eric Farman <farman@linux.ibm.com>,
	David Hildenbrand <david@redhat.com>,
	Ilya Leoshkevich <iii@linux.ibm.com>,
	Yoshinori Sato <ysato@users.sourceforge.jp>,
	Magnus Damm <magnus.damm@gmail.com>,
	Artyom Tarasenko <atar4qemu@gmail.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Anthony Perard <anthony.perard@citrix.com>,
	Paul Durrant <paul@xen.org>,
	Max Filippov <jcmvbkbc@gmail.com>,
	qemu-arm@nongnu.org,
	qemu-ppc@nongnu.org,
	qemu-riscv@nongnu.org,
	qemu-s390x@nongnu.org,
	xen-devel@lists.xenproject.org,
	David Woodhouse <dwmw@amazon.co.uk>
Subject: [PATCH v3 23/46] hw/arm/exynos4: use qemu_create_nic_device()
Date: Mon,  8 Jan 2024 20:26:52 +0000
Message-ID: <20240108204909.564514-24-dwmw2@infradead.org>
X-Mailer: git-send-email 2.41.0
In-Reply-To: <20240108204909.564514-1-dwmw2@infradead.org>
References: <20240108204909.564514-1-dwmw2@infradead.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Sender: David Woodhouse <dwmw2@infradead.org>
X-SRS-Rewrite: SMTP reverse-path rewritten from <dwmw2@infradead.org> by desiato.infradead.org. See http://www.infradead.org/rpr.html

From: David Woodhouse <dwmw@amazon.co.uk>

Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
---
 hw/arm/exynos4_boards.c | 6 ++----
 1 file changed, 2 insertions(+), 4 deletions(-)

diff --git a/hw/arm/exynos4_boards.c b/hw/arm/exynos4_boards.c
index b0e13eb4f0..003992189b 100644
--- a/hw/arm/exynos4_boards.c
+++ b/hw/arm/exynos4_boards.c
@@ -76,10 +76,8 @@ static void lan9215_init(uint32_t base, qemu_irq irq)
     SysBusDevice *s;
 
     /* This should be a 9215 but the 9118 is close enough */
-    if (nd_table[0].used) {
-        qemu_check_nic_model(&nd_table[0], "lan9118");
-        dev = qdev_new(TYPE_LAN9118);
-        qdev_set_nic_properties(dev, &nd_table[0]);
+    dev = qemu_create_nic_device(TYPE_LAN9118, true, NULL);
+    if (dev) {
         qdev_prop_set_uint32(dev, "mode_16bit", 1);
         s = SYS_BUS_DEVICE(dev);
         sysbus_realize_and_unref(s, &error_fatal);
-- 
2.41.0



From xen-devel-bounces@lists.xenproject.org Mon Jan 08 21:09:18 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 08 Jan 2024 21:09:18 +0000
Received: from list by lists.xenproject.org with outflank-mailman.664042.1034135 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMws0-00054R-Qm; Mon, 08 Jan 2024 21:09:16 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 664042.1034135; Mon, 08 Jan 2024 21:09:16 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMws0-00054K-No; Mon, 08 Jan 2024 21:09:16 +0000
Received: by outflank-mailman (input) for mailman id 664042;
 Mon, 08 Jan 2024 21:09:15 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=CNLN=IS=desiato.srs.infradead.org=BATV+a33e3d7a5f0474923369+7442+infradead.org+dwmw2@srs-se1.protection.inumbo.net>)
 id 1rMwan-0000R5-AX
 for xen-devel@lists.xenproject.org; Mon, 08 Jan 2024 20:51:29 +0000
Received: from desiato.infradead.org (desiato.infradead.org
 [2001:8b0:10b:1:d65d:64ff:fe57:4e05])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id ad0a04bb-ae67-11ee-98ef-6d05b1d4d9a1;
 Mon, 08 Jan 2024 21:51:20 +0100 (CET)
Received: from [2001:8b0:10b:1::ebe] (helo=i7.infradead.org)
 by desiato.infradead.org with esmtpsa (Exim 4.96 #2 (Red Hat Linux))
 id 1rMwYk-007wXY-2t; Mon, 08 Jan 2024 20:49:23 +0000
Received: from dwoodhou by i7.infradead.org with local (Exim 4.96.2 #2 (Red
 Hat Linux)) id 1rMwYk-002NFh-1g; Mon, 08 Jan 2024 20:49:22 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
X-Inumbo-ID: ad0a04bb-ae67-11ee-98ef-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=infradead.org; s=desiato.20200630; h=Sender:Content-Transfer-Encoding:
	MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:
	Reply-To:Content-Type:Content-ID:Content-Description;
	bh=fPY31Ay4CRMMkTq20EtmX4lhHQTwfgJmVVfcBl8pGlM=; b=T4xK/egTe7HkVVqX9U+1fSutrC
	/nyrGu+r9tkSpdaJNstoLHPgYSsQt0wxNx4X7HBHEtc1arPU0cKNNxkbGun36xcqjHVrvnLehPG1v
	pBYgGPeOZbeDdrCUFiw+BhArSTPwigySbcz0RhPtCfDOQNvo+SJelXZiyMLfbSIdq74w8P8/f/3m8
	U2FA81CzL6UQz4sabbUfufaHjSuzo8uCHoI7ZjX5Lza78crqPm8grLqf+c/RLLZyUh/1bIeGP6BTh
	o5PblWAEB50dubUOissUqKTEriExypfqZzOTZrMQQz8B+S8Fgt9dSca58dWgep+3SsEPI7HSAN2N5
	fmzpIzHg==;
From: David Woodhouse <dwmw2@infradead.org>
To: qemu-devel@nongnu.org
Cc: Richard Henderson <richard.henderson@linaro.org>,
	Beniamino Galvani <b.galvani@gmail.com>,
	Peter Maydell <peter.maydell@linaro.org>,
	Strahinja Jankovic <strahinja.p.jankovic@gmail.com>,
	Niek Linnenbank <nieklinnenbank@gmail.com>,
	=?UTF-8?q?C=C3=A9dric=20Le=20Goater?= <clg@kaod.org>,
	Andrew Jeffery <andrew@codeconstruct.com.au>,
	Joel Stanley <joel@jms.id.au>,
	Igor Mitsyanko <i.mitsyanko@gmail.com>,
	Jean-Christophe Dubois <jcd@tribudubois.net>,
	Andrey Smirnov <andrew.smirnov@gmail.com>,
	=?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= <philmd@linaro.org>,
	Rob Herring <robh@kernel.org>,
	Subbaraya Sundeep <sundeep.lkml@gmail.com>,
	Jan Kiszka <jan.kiszka@web.de>,
	Tyrone Ting <kfting@nuvoton.com>,
	Hao Wu <wuhaotsh@google.com>,
	Radoslaw Biernacki <rad@semihalf.com>,
	Leif Lindholm <quic_llindhol@quicinc.com>,
	Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org>,
	"Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
	Alistair Francis <alistair@alistair23.me>,
	Helge Deller <deller@gmx.de>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Eduardo Habkost <eduardo@habkost.net>,
	"Michael S. Tsirkin" <mst@redhat.com>,
	Marcel Apfelbaum <marcel.apfelbaum@gmail.com>,
	Song Gao <gaosong@loongson.cn>,
	Thomas Huth <huth@tuxfamily.org>,
	Laurent Vivier <laurent@vivier.eu>,
	Huacai Chen <chenhuacai@kernel.org>,
	Jiaxun Yang <jiaxun.yang@flygoat.com>,
	=?UTF-8?q?Herv=C3=A9=20Poussineau?= <hpoussin@reactos.org>,
	Aleksandar Rikalo <aleksandar.rikalo@syrmia.com>,
	Aurelien Jarno <aurelien@aurel32.net>,
	Jason Wang <jasowang@redhat.com>,
	Jia Liu <proljc@gmail.com>,
	Stafford Horne <shorne@gmail.com>,
	Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>,
	Nicholas Piggin <npiggin@gmail.com>,
	Daniel Henrique Barboza <danielhb413@gmail.com>,
	David Gibson <david@gibson.dropbear.id.au>,
	Harsh Prateek Bora <harshpb@linux.ibm.com>,
	Bin Meng <bin.meng@windriver.com>,
	Palmer Dabbelt <palmer@dabbelt.com>,
	Weiwei Li <liwei1518@gmail.com>,
	Liu Zhiwei <zhiwei_liu@linux.alibaba.com>,
	Halil Pasic <pasic@linux.ibm.com>,
	Christian Borntraeger <borntraeger@linux.ibm.com>,
	Eric Farman <farman@linux.ibm.com>,
	David Hildenbrand <david@redhat.com>,
	Ilya Leoshkevich <iii@linux.ibm.com>,
	Yoshinori Sato <ysato@users.sourceforge.jp>,
	Magnus Damm <magnus.damm@gmail.com>,
	Artyom Tarasenko <atar4qemu@gmail.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Anthony Perard <anthony.perard@citrix.com>,
	Paul Durrant <paul@xen.org>,
	Max Filippov <jcmvbkbc@gmail.com>,
	qemu-arm@nongnu.org,
	qemu-ppc@nongnu.org,
	qemu-riscv@nongnu.org,
	qemu-s390x@nongnu.org,
	xen-devel@lists.xenproject.org,
	David Woodhouse <dwmw@amazon.co.uk>
Subject: [PATCH v3 25/46] hw/net/smc91c111: use qemu_configure_nic_device()
Date: Mon,  8 Jan 2024 20:26:54 +0000
Message-ID: <20240108204909.564514-26-dwmw2@infradead.org>
X-Mailer: git-send-email 2.41.0
In-Reply-To: <20240108204909.564514-1-dwmw2@infradead.org>
References: <20240108204909.564514-1-dwmw2@infradead.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Sender: David Woodhouse <dwmw2@infradead.org>
X-SRS-Rewrite: SMTP reverse-path rewritten from <dwmw2@infradead.org> by desiato.infradead.org. See http://www.infradead.org/rpr.html

From: David Woodhouse <dwmw@amazon.co.uk>

Some callers instantiate the device unconditionally, others will do so only
if there is a NICInfo to go with it. This appears to be fairly random, but
preserve the existing behaviour for now.

Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
---
 hw/arm/gumstix.c           |  6 ++----
 hw/arm/integratorcp.c      |  5 +++--
 hw/arm/mainstone.c         |  3 +--
 hw/arm/realview.c          | 25 ++++++++++---------------
 hw/arm/versatilepb.c       | 15 ++++-----------
 hw/net/smc91c111.c         |  5 ++---
 include/hw/net/smc91c111.h |  2 +-
 7 files changed, 23 insertions(+), 38 deletions(-)

diff --git a/hw/arm/gumstix.c b/hw/arm/gumstix.c
index 2ca4140c9f..f58c4da7f9 100644
--- a/hw/arm/gumstix.c
+++ b/hw/arm/gumstix.c
@@ -74,8 +74,7 @@ static void connex_init(MachineState *machine)
                           FLASH_SECTOR_SIZE, 2, 0, 0, 0, 0, 0);
 
     /* Interrupt line of NIC is connected to GPIO line 36 */
-    smc91c111_init(&nd_table[0], 0x04000300,
-                    qdev_get_gpio_in(cpu->gpio, 36));
+    smc91c111_init(0x04000300, qdev_get_gpio_in(cpu->gpio, 36));
 }
 
 static void verdex_init(MachineState *machine)
@@ -98,8 +97,7 @@ static void verdex_init(MachineState *machine)
                           FLASH_SECTOR_SIZE, 2, 0, 0, 0, 0, 0);
 
     /* Interrupt line of NIC is connected to GPIO line 99 */
-    smc91c111_init(&nd_table[0], 0x04000300,
-                    qdev_get_gpio_in(cpu->gpio, 99));
+    smc91c111_init(0x04000300, qdev_get_gpio_in(cpu->gpio, 99));
 }
 
 static void connex_class_init(ObjectClass *oc, void *data)
diff --git a/hw/arm/integratorcp.c b/hw/arm/integratorcp.c
index 1830e1d785..c56a2c1353 100644
--- a/hw/arm/integratorcp.c
+++ b/hw/arm/integratorcp.c
@@ -666,8 +666,9 @@ static void integratorcp_init(MachineState *machine)
     sysbus_mmio_map(SYS_BUS_DEVICE(dev), 0, 0x1d000000);
     sysbus_connect_irq(SYS_BUS_DEVICE(dev), 0, pic[25]);
 
-    if (nd_table[0].used)
-        smc91c111_init(&nd_table[0], 0xc8000000, pic[27]);
+    if (qemu_find_nic_info("smc91c111", true, NULL)) {
+        smc91c111_init(0xc8000000, pic[27]);
+    }
 
     sysbus_create_simple("pl110", 0xc0000000, pic[22]);
 
diff --git a/hw/arm/mainstone.c b/hw/arm/mainstone.c
index 68329c4617..84dbb6e525 100644
--- a/hw/arm/mainstone.c
+++ b/hw/arm/mainstone.c
@@ -153,8 +153,7 @@ static void mainstone_common_init(MachineState *machine,
             qdev_get_gpio_in(mst_irq, S1_IRQ),
             qdev_get_gpio_in(mst_irq, S1_CD_IRQ));
 
-    smc91c111_init(&nd_table[0], MST_ETH_PHYS,
-                    qdev_get_gpio_in(mst_irq, ETHERNET_IRQ));
+    smc91c111_init(MST_ETH_PHYS, qdev_get_gpio_in(mst_irq, ETHERNET_IRQ));
 
     mainstone_binfo.board_id = arm_id;
     arm_load_kernel(mpu->cpu, machine, &mainstone_binfo);
diff --git a/hw/arm/realview.c b/hw/arm/realview.c
index 132217b2ed..6e7529d98f 100644
--- a/hw/arm/realview.c
+++ b/hw/arm/realview.c
@@ -89,7 +89,6 @@ static void realview_init(MachineState *machine,
     I2CBus *i2c;
     int n;
     unsigned int smp_cpus = machine->smp.cpus;
-    int done_nic = 0;
     qemu_irq cpu_irq[4];
     int is_mpcore = 0;
     int is_pb = 0;
@@ -295,24 +294,20 @@ static void realview_init(MachineState *machine,
             n--;
         }
     }
-    for(n = 0; n < nb_nics; n++) {
-        nd = &nd_table[n];
-
-        if (!done_nic && (!nd->model ||
-                    strcmp(nd->model, is_pb ? "lan9118" : "smc91c111") == 0)) {
-            if (is_pb) {
-                lan9118_init(nd, 0x4e000000, pic[28]);
-            } else {
-                smc91c111_init(nd, 0x4e000000, pic[28]);
-            }
-            done_nic = 1;
+
+    nd = qemu_find_nic_info(is_pb ? "lan9118" : "smc91c111", true, NULL);
+    if (nd) {
+        if (is_pb) {
+            lan9118_init(nd, 0x4e000000, pic[28]);
         } else {
-            if (pci_bus) {
-                pci_nic_init_nofail(nd, pci_bus, "rtl8139", NULL);
-            }
+            smc91c111_init(0x4e000000, pic[28]);
         }
     }
 
+    if (pci_bus) {
+        pci_init_nic_devices(pci_bus, "rtl8139");
+    }
+
     dev = sysbus_create_simple(TYPE_ARM_SBCON_I2C, 0x10002000, NULL);
     i2c = (I2CBus *)qdev_get_child_bus(dev, "i2c");
     i2c_slave_create_simple(i2c, "ds1338", 0x68);
diff --git a/hw/arm/versatilepb.c b/hw/arm/versatilepb.c
index 4b2257787b..0517a65601 100644
--- a/hw/arm/versatilepb.c
+++ b/hw/arm/versatilepb.c
@@ -192,10 +192,8 @@ static void versatile_init(MachineState *machine, int board_id)
     SysBusDevice *busdev;
     DeviceState *pl041;
     PCIBus *pci_bus;
-    NICInfo *nd;
     I2CBus *i2c;
     int n;
-    int done_smc = 0;
     DriveInfo *dinfo;
 
     if (machine->ram_size > 0x10000000) {
@@ -263,16 +261,11 @@ static void versatile_init(MachineState *machine, int board_id)
     sysbus_connect_irq(busdev, 3, sic[30]);
     pci_bus = (PCIBus *)qdev_get_child_bus(dev, "pci");
 
-    for(n = 0; n < nb_nics; n++) {
-        nd = &nd_table[n];
-
-        if (!done_smc && (!nd->model || strcmp(nd->model, "smc91c111") == 0)) {
-            smc91c111_init(nd, 0x10010000, sic[25]);
-            done_smc = 1;
-        } else {
-            pci_nic_init_nofail(nd, pci_bus, "rtl8139", NULL);
-        }
+    if (qemu_find_nic_info("smc91c111", true, NULL)) {
+        smc91c111_init(0x10010000, sic[25]);
     }
+    pci_init_nic_devices(pci_bus, "rtl8139");
+
     if (machine_usb(machine)) {
         pci_create_simple(pci_bus, -1, "pci-ohci");
     }
diff --git a/hw/net/smc91c111.c b/hw/net/smc91c111.c
index 49b7c26102..702d0e8e83 100644
--- a/hw/net/smc91c111.c
+++ b/hw/net/smc91c111.c
@@ -818,14 +818,13 @@ static void smc91c111_register_types(void)
 
 /* Legacy helper function.  Should go away when machine config files are
    implemented.  */
-void smc91c111_init(NICInfo *nd, uint32_t base, qemu_irq irq)
+void smc91c111_init(uint32_t base, qemu_irq irq)
 {
     DeviceState *dev;
     SysBusDevice *s;
 
-    qemu_check_nic_model(nd, "smc91c111");
     dev = qdev_new(TYPE_SMC91C111);
-    qdev_set_nic_properties(dev, nd);
+    qemu_configure_nic_device(dev, true, NULL);
     s = SYS_BUS_DEVICE(dev);
     sysbus_realize_and_unref(s, &error_fatal);
     sysbus_mmio_map(s, 0, base);
diff --git a/include/hw/net/smc91c111.h b/include/hw/net/smc91c111.h
index df5b11dcef..dba32a233f 100644
--- a/include/hw/net/smc91c111.h
+++ b/include/hw/net/smc91c111.h
@@ -13,6 +13,6 @@
 
 #include "net/net.h"
 
-void smc91c111_init(NICInfo *, uint32_t, qemu_irq);
+void smc91c111_init(uint32_t, qemu_irq);
 
 #endif
-- 
2.41.0



From xen-devel-bounces@lists.xenproject.org Mon Jan 08 21:09:53 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 08 Jan 2024 21:09:53 +0000
Received: from list by lists.xenproject.org with outflank-mailman.664044.1034146 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMwsX-0005eT-3C; Mon, 08 Jan 2024 21:09:49 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 664044.1034146; Mon, 08 Jan 2024 21:09:49 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMwsX-0005eM-08; Mon, 08 Jan 2024 21:09:49 +0000
Received: by outflank-mailman (input) for mailman id 664044;
 Mon, 08 Jan 2024 21:09:48 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=NrlO=IS=casper.srs.infradead.org=BATV+41a72dc6539c0dfbbc31+7442+infradead.org+dwmw2@srs-se1.protection.inumbo.net>)
 id 1rMwag-0000R5-9y
 for xen-devel@lists.xenproject.org; Mon, 08 Jan 2024 20:51:22 +0000
Received: from casper.infradead.org (casper.infradead.org
 [2001:8b0:10b:1236::1])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id aba4e5f0-ae67-11ee-98ef-6d05b1d4d9a1;
 Mon, 08 Jan 2024 21:51:18 +0100 (CET)
Received: from [2001:8b0:10b:1::ebe] (helo=i7.infradead.org)
 by casper.infradead.org with esmtpsa (Exim 4.94.2 #2 (Red Hat Linux))
 id 1rMwYh-008RPP-WE; Mon, 08 Jan 2024 20:49:21 +0000
Received: from dwoodhou by i7.infradead.org with local (Exim 4.96.2 #2 (Red
 Hat Linux)) id 1rMwYi-002NEF-2O; Mon, 08 Jan 2024 20:49:20 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
X-Inumbo-ID: aba4e5f0-ae67-11ee-98ef-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=infradead.org; s=casper.20170209; h=Sender:Content-Transfer-Encoding:
	MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:
	Reply-To:Content-Type:Content-ID:Content-Description;
	bh=uc7qG2cne/6E8+t91EtiLDMAE+B8LUD5xbmCp8tTbzY=; b=W51OsUX6uNMef+WOdKoBKEPVPC
	l0ml+H8yYOCuYD7wGi99UEZz8kAiuHDfQMnIowBKwdmBZgV/FseLB9wsfW9NBF/9hTlPSgKb8sPbT
	Rz/dYde3PWiVF1nj1oHbdRjdIJWaFu4zzaTQjsQ2wZ6fsux/b1qrQucpKv5XdU09eB2CeQtn085kL
	fPtGEs9Lyi+1jaCl3c8zXbiOKhWcdUaGNdQ/dL6CSW0S4V5PGqwF0YPEUjhr1MvpAur/nK6MRrk4S
	knwoPsI53hHdtH+Pv7fm2VJ2RJuqW/JfFDzL+n2PAaKMLsC12mbjmRy67qQO0maB4G7TPJIPjgHmC
	OoLgn7hw==;
From: David Woodhouse <dwmw2@infradead.org>
To: qemu-devel@nongnu.org
Cc: Richard Henderson <richard.henderson@linaro.org>,
	Beniamino Galvani <b.galvani@gmail.com>,
	Peter Maydell <peter.maydell@linaro.org>,
	Strahinja Jankovic <strahinja.p.jankovic@gmail.com>,
	Niek Linnenbank <nieklinnenbank@gmail.com>,
	=?UTF-8?q?C=C3=A9dric=20Le=20Goater?= <clg@kaod.org>,
	Andrew Jeffery <andrew@codeconstruct.com.au>,
	Joel Stanley <joel@jms.id.au>,
	Igor Mitsyanko <i.mitsyanko@gmail.com>,
	Jean-Christophe Dubois <jcd@tribudubois.net>,
	Andrey Smirnov <andrew.smirnov@gmail.com>,
	=?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= <philmd@linaro.org>,
	Rob Herring <robh@kernel.org>,
	Subbaraya Sundeep <sundeep.lkml@gmail.com>,
	Jan Kiszka <jan.kiszka@web.de>,
	Tyrone Ting <kfting@nuvoton.com>,
	Hao Wu <wuhaotsh@google.com>,
	Radoslaw Biernacki <rad@semihalf.com>,
	Leif Lindholm <quic_llindhol@quicinc.com>,
	Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org>,
	"Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
	Alistair Francis <alistair@alistair23.me>,
	Helge Deller <deller@gmx.de>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Eduardo Habkost <eduardo@habkost.net>,
	"Michael S. Tsirkin" <mst@redhat.com>,
	Marcel Apfelbaum <marcel.apfelbaum@gmail.com>,
	Song Gao <gaosong@loongson.cn>,
	Thomas Huth <huth@tuxfamily.org>,
	Laurent Vivier <laurent@vivier.eu>,
	Huacai Chen <chenhuacai@kernel.org>,
	Jiaxun Yang <jiaxun.yang@flygoat.com>,
	=?UTF-8?q?Herv=C3=A9=20Poussineau?= <hpoussin@reactos.org>,
	Aleksandar Rikalo <aleksandar.rikalo@syrmia.com>,
	Aurelien Jarno <aurelien@aurel32.net>,
	Jason Wang <jasowang@redhat.com>,
	Jia Liu <proljc@gmail.com>,
	Stafford Horne <shorne@gmail.com>,
	Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>,
	Nicholas Piggin <npiggin@gmail.com>,
	Daniel Henrique Barboza <danielhb413@gmail.com>,
	David Gibson <david@gibson.dropbear.id.au>,
	Harsh Prateek Bora <harshpb@linux.ibm.com>,
	Bin Meng <bin.meng@windriver.com>,
	Palmer Dabbelt <palmer@dabbelt.com>,
	Weiwei Li <liwei1518@gmail.com>,
	Liu Zhiwei <zhiwei_liu@linux.alibaba.com>,
	Halil Pasic <pasic@linux.ibm.com>,
	Christian Borntraeger <borntraeger@linux.ibm.com>,
	Eric Farman <farman@linux.ibm.com>,
	David Hildenbrand <david@redhat.com>,
	Ilya Leoshkevich <iii@linux.ibm.com>,
	Yoshinori Sato <ysato@users.sourceforge.jp>,
	Magnus Damm <magnus.damm@gmail.com>,
	Artyom Tarasenko <atar4qemu@gmail.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Anthony Perard <anthony.perard@citrix.com>,
	Paul Durrant <paul@xen.org>,
	Max Filippov <jcmvbkbc@gmail.com>,
	qemu-arm@nongnu.org,
	qemu-ppc@nongnu.org,
	qemu-riscv@nongnu.org,
	qemu-s390x@nongnu.org,
	xen-devel@lists.xenproject.org,
	David Woodhouse <dwmw@amazon.co.uk>
Subject: [PATCH v3 05/46] hw/i386/pc: use qemu_get_nic_info() and pci_init_nic_devices()
Date: Mon,  8 Jan 2024 20:26:34 +0000
Message-ID: <20240108204909.564514-6-dwmw2@infradead.org>
X-Mailer: git-send-email 2.41.0
In-Reply-To: <20240108204909.564514-1-dwmw2@infradead.org>
References: <20240108204909.564514-1-dwmw2@infradead.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Sender: David Woodhouse <dwmw2@infradead.org>
X-SRS-Rewrite: SMTP reverse-path rewritten from <dwmw2@infradead.org> by casper.infradead.org. See http://www.infradead.org/rpr.html

From: David Woodhouse <dwmw@amazon.co.uk>

Eliminate direct access to nd_table[] and nb_nics by processing the the
Xen and ISA NICs first and then calling pci_init_nic_devices() for the
rest.

Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
Reviewed-by: Paul Durrant <paul@xen.org>
---
 hw/i386/pc.c                | 26 ++++++++++++++++----------
 include/hw/net/ne2000-isa.h |  2 --
 2 files changed, 16 insertions(+), 12 deletions(-)

diff --git a/hw/i386/pc.c b/hw/i386/pc.c
index 496498df3a..d80c536d88 100644
--- a/hw/i386/pc.c
+++ b/hw/i386/pc.c
@@ -658,8 +658,11 @@ static void pc_init_ne2k_isa(ISABus *bus, NICInfo *nd)
 {
     static int nb_ne2k = 0;
 
-    if (nb_ne2k == NE2000_NB_MAX)
+    if (nb_ne2k == NE2000_NB_MAX) {
+        error_setg(&error_fatal,
+                   "maximum number of ISA NE2000 devices exceeded");
         return;
+    }
     isa_ne2000_init(bus, ne2000_io[nb_ne2k],
                     ne2000_irq[nb_ne2k], nd);
     nb_ne2k++;
@@ -1297,23 +1300,26 @@ void pc_nic_init(PCMachineClass *pcmc, ISABus *isa_bus, PCIBus *pci_bus,
                  BusState *xen_bus)
 {
     MachineClass *mc = MACHINE_CLASS(pcmc);
-    int i;
+    bool default_is_ne2k = g_str_equal(mc->default_nic, TYPE_ISA_NE2000);
+    NICInfo *nd;
 
     rom_set_order_override(FW_CFG_ORDER_OVERRIDE_NIC);
-    for (i = 0; i < nb_nics; i++) {
-        NICInfo *nd = &nd_table[i];
-        const char *model = nd->model ? nd->model : mc->default_nic;
 
-        if (xen_bus && (!nd->model || g_str_equal(model, "xen-net-device"))) {
+    if (xen_bus) {
+        while (nc = qemu_find_nic_info("xen-net-device", true, NULL)) {
             DeviceState *dev = qdev_new("xen-net-device");
             qdev_set_nic_properties(dev, nd);
             qdev_realize_and_unref(dev, xen_bus, &error_fatal);
-        } else if (g_str_equal(model, "ne2k_isa")) {
-            pc_init_ne2k_isa(isa_bus, nd);
-        } else {
-            pci_nic_init_nofail(nd, pci_bus, model, NULL);
         }
     }
+
+    while ((nd = qemu_find_nic_info(TYPE_ISA_NE2000, default_is_ne2k, NULL))) {
+        pc_init_ne2k_isa(isa_bus, nd);
+    }
+
+    /* Anything remaining should be a PCI NIC */
+    pci_init_nic_devices(pci_bus, mc->default_nic);
+
     rom_reset_order_override();
 }
 
diff --git a/include/hw/net/ne2000-isa.h b/include/hw/net/ne2000-isa.h
index af59ee0b02..73bae10ad1 100644
--- a/include/hw/net/ne2000-isa.h
+++ b/include/hw/net/ne2000-isa.h
@@ -22,8 +22,6 @@ static inline ISADevice *isa_ne2000_init(ISABus *bus, int base, int irq,
 {
     ISADevice *d;
 
-    qemu_check_nic_model(nd, "ne2k_isa");
-
     d = isa_try_new(TYPE_ISA_NE2000);
     if (d) {
         DeviceState *dev = DEVICE(d);
-- 
2.41.0



From xen-devel-bounces@lists.xenproject.org Mon Jan 08 21:10:41 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 08 Jan 2024 21:10:41 +0000
Received: from list by lists.xenproject.org with outflank-mailman.664050.1034156 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMwtM-0007LX-GR; Mon, 08 Jan 2024 21:10:40 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 664050.1034156; Mon, 08 Jan 2024 21:10:40 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMwtM-0007LQ-Dm; Mon, 08 Jan 2024 21:10:40 +0000
Received: by outflank-mailman (input) for mailman id 664050;
 Mon, 08 Jan 2024 21:10:39 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=CNLN=IS=desiato.srs.infradead.org=BATV+a33e3d7a5f0474923369+7442+infradead.org+dwmw2@srs-se1.protection.inumbo.net>)
 id 1rMwap-0000R5-Am
 for xen-devel@lists.xenproject.org; Mon, 08 Jan 2024 20:51:31 +0000
Received: from desiato.infradead.org (desiato.infradead.org
 [2001:8b0:10b:1:d65d:64ff:fe57:4e05])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id afbb034b-ae67-11ee-98ef-6d05b1d4d9a1;
 Mon, 08 Jan 2024 21:51:25 +0100 (CET)
Received: from [2001:8b0:10b:1::ebe] (helo=i7.infradead.org)
 by desiato.infradead.org with esmtpsa (Exim 4.96 #2 (Red Hat Linux))
 id 1rMwYm-007wXg-0G; Mon, 08 Jan 2024 20:49:24 +0000
Received: from dwoodhou by i7.infradead.org with local (Exim 4.96.2 #2 (Red
 Hat Linux)) id 1rMwYk-002NFv-2P; Mon, 08 Jan 2024 20:49:22 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
X-Inumbo-ID: afbb034b-ae67-11ee-98ef-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=infradead.org; s=desiato.20200630; h=Sender:Content-Transfer-Encoding:
	MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:
	Reply-To:Content-Type:Content-ID:Content-Description;
	bh=5FFKf2juZuA0ARVGIdD/KabCPqMDr3tXXa+7Wjm6OEc=; b=PAdt6YdVW3snue3qkAzK6dyP1c
	FES1B1zDiKaNuaPqAoStvMFO1366b0Rk1IGPgX05qzRAjcBnKdo+B4KV/14qC8j1JEupFMb8xsYmd
	6Kdx7GxCrLmP1pJsiI5Lu8Y13wRHSRg5bmnMsTMCscS0WODgCskYUGMTLUrAdkk2e4Y9VcUnbCzrr
	ccW436LsI9gFz7OYQwyYUuCPRPKSK6YeOAjyzCqbeOCEtHQDZB7oPYtRUB6U9d8MXhZQvNAbD83p6
	37MTB9n+XCnzURdsZjMZPO6kyin9WTMxqOddche5AVm+jccH1RqRDwOifFfehpaOK07R+aoBkPEyT
	H1oQbYYA==;
From: David Woodhouse <dwmw2@infradead.org>
To: qemu-devel@nongnu.org
Cc: Richard Henderson <richard.henderson@linaro.org>,
	Beniamino Galvani <b.galvani@gmail.com>,
	Peter Maydell <peter.maydell@linaro.org>,
	Strahinja Jankovic <strahinja.p.jankovic@gmail.com>,
	Niek Linnenbank <nieklinnenbank@gmail.com>,
	=?UTF-8?q?C=C3=A9dric=20Le=20Goater?= <clg@kaod.org>,
	Andrew Jeffery <andrew@codeconstruct.com.au>,
	Joel Stanley <joel@jms.id.au>,
	Igor Mitsyanko <i.mitsyanko@gmail.com>,
	Jean-Christophe Dubois <jcd@tribudubois.net>,
	Andrey Smirnov <andrew.smirnov@gmail.com>,
	=?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= <philmd@linaro.org>,
	Rob Herring <robh@kernel.org>,
	Subbaraya Sundeep <sundeep.lkml@gmail.com>,
	Jan Kiszka <jan.kiszka@web.de>,
	Tyrone Ting <kfting@nuvoton.com>,
	Hao Wu <wuhaotsh@google.com>,
	Radoslaw Biernacki <rad@semihalf.com>,
	Leif Lindholm <quic_llindhol@quicinc.com>,
	Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org>,
	"Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
	Alistair Francis <alistair@alistair23.me>,
	Helge Deller <deller@gmx.de>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Eduardo Habkost <eduardo@habkost.net>,
	"Michael S. Tsirkin" <mst@redhat.com>,
	Marcel Apfelbaum <marcel.apfelbaum@gmail.com>,
	Song Gao <gaosong@loongson.cn>,
	Thomas Huth <huth@tuxfamily.org>,
	Laurent Vivier <laurent@vivier.eu>,
	Huacai Chen <chenhuacai@kernel.org>,
	Jiaxun Yang <jiaxun.yang@flygoat.com>,
	=?UTF-8?q?Herv=C3=A9=20Poussineau?= <hpoussin@reactos.org>,
	Aleksandar Rikalo <aleksandar.rikalo@syrmia.com>,
	Aurelien Jarno <aurelien@aurel32.net>,
	Jason Wang <jasowang@redhat.com>,
	Jia Liu <proljc@gmail.com>,
	Stafford Horne <shorne@gmail.com>,
	Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>,
	Nicholas Piggin <npiggin@gmail.com>,
	Daniel Henrique Barboza <danielhb413@gmail.com>,
	David Gibson <david@gibson.dropbear.id.au>,
	Harsh Prateek Bora <harshpb@linux.ibm.com>,
	Bin Meng <bin.meng@windriver.com>,
	Palmer Dabbelt <palmer@dabbelt.com>,
	Weiwei Li <liwei1518@gmail.com>,
	Liu Zhiwei <zhiwei_liu@linux.alibaba.com>,
	Halil Pasic <pasic@linux.ibm.com>,
	Christian Borntraeger <borntraeger@linux.ibm.com>,
	Eric Farman <farman@linux.ibm.com>,
	David Hildenbrand <david@redhat.com>,
	Ilya Leoshkevich <iii@linux.ibm.com>,
	Yoshinori Sato <ysato@users.sourceforge.jp>,
	Magnus Damm <magnus.damm@gmail.com>,
	Artyom Tarasenko <atar4qemu@gmail.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Anthony Perard <anthony.perard@citrix.com>,
	Paul Durrant <paul@xen.org>,
	Max Filippov <jcmvbkbc@gmail.com>,
	qemu-arm@nongnu.org,
	qemu-ppc@nongnu.org,
	qemu-riscv@nongnu.org,
	qemu-s390x@nongnu.org,
	xen-devel@lists.xenproject.org,
	David Woodhouse <dwmw@amazon.co.uk>
Subject: [PATCH v3 28/46] hw/arm/npcm7xx: use qemu_configure_nic_device, allow emc0/emc1 as aliases
Date: Mon,  8 Jan 2024 20:26:57 +0000
Message-ID: <20240108204909.564514-29-dwmw2@infradead.org>
X-Mailer: git-send-email 2.41.0
In-Reply-To: <20240108204909.564514-1-dwmw2@infradead.org>
References: <20240108204909.564514-1-dwmw2@infradead.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Sender: David Woodhouse <dwmw2@infradead.org>
X-SRS-Rewrite: SMTP reverse-path rewritten from <dwmw2@infradead.org> by desiato.infradead.org. See http://www.infradead.org/rpr.html

From: David Woodhouse <dwmw@amazon.co.uk>

Also update the test to specify which device to attach the test socket
to, and remove the comment lamenting the fact that we can't do so.

Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
---
 hw/arm/npcm7xx.c               | 16 +++++++++-------
 tests/qtest/npcm7xx_emc-test.c | 18 ++++--------------
 2 files changed, 13 insertions(+), 21 deletions(-)

diff --git a/hw/arm/npcm7xx.c b/hw/arm/npcm7xx.c
index 15ff21d047..ee395864e4 100644
--- a/hw/arm/npcm7xx.c
+++ b/hw/arm/npcm7xx.c
@@ -655,8 +655,9 @@ static void npcm7xx_realize(DeviceState *dev, Error **errp)
 
     /*
      * EMC Modules. Cannot fail.
-     * The mapping of the device to its netdev backend works as follows:
-     * emc[i] = nd_table[i]
+     * Use the available NIC configurations in order, allowing 'emc0' and
+     * 'emc1' to by used as aliases for the model= parameter to override.
+     *
      * This works around the inability to specify the netdev property for the
      * emc device: it's not pluggable and thus the -device option can't be
      * used.
@@ -664,12 +665,13 @@ static void npcm7xx_realize(DeviceState *dev, Error **errp)
     QEMU_BUILD_BUG_ON(ARRAY_SIZE(npcm7xx_emc_addr) != ARRAY_SIZE(s->emc));
     QEMU_BUILD_BUG_ON(ARRAY_SIZE(s->emc) != 2);
     for (i = 0; i < ARRAY_SIZE(s->emc); i++) {
-        s->emc[i].emc_num = i;
         SysBusDevice *sbd = SYS_BUS_DEVICE(&s->emc[i]);
-        if (nd_table[i].used) {
-            qemu_check_nic_model(&nd_table[i], TYPE_NPCM7XX_EMC);
-            qdev_set_nic_properties(DEVICE(sbd), &nd_table[i]);
-        }
+        char alias[6];
+
+        s->emc[i].emc_num = i;
+        snprintf(alias, sizeof(alias), "emc%u", i);
+        qemu_configure_nic_device(DEVICE(sbd), true, alias);
+
         /*
          * The device exists regardless of whether it's connected to a QEMU
          * netdev backend. So always instantiate it even if there is no
diff --git a/tests/qtest/npcm7xx_emc-test.c b/tests/qtest/npcm7xx_emc-test.c
index b046f1d76a..f7646fae2c 100644
--- a/tests/qtest/npcm7xx_emc-test.c
+++ b/tests/qtest/npcm7xx_emc-test.c
@@ -225,21 +225,11 @@ static int *packet_test_init(int module_num, GString *cmd_line)
     g_assert_cmpint(ret, != , -1);
 
     /*
-     * KISS and use -nic. We specify two nics (both emc{0,1}) because there's
-     * currently no way to specify only emc1: The driver implicitly relies on
-     * emc[i] == nd_table[i].
+     * KISS and use -nic. The driver accepts 'emc0' and 'emc1' as aliases
+     * in the 'model' field to specify the device to match.
      */
-    if (module_num == 0) {
-        g_string_append_printf(cmd_line,
-                               " -nic socket,fd=%d,model=" TYPE_NPCM7XX_EMC " "
-                               " -nic user,model=" TYPE_NPCM7XX_EMC " ",
-                               test_sockets[1]);
-    } else {
-        g_string_append_printf(cmd_line,
-                               " -nic user,model=" TYPE_NPCM7XX_EMC " "
-                               " -nic socket,fd=%d,model=" TYPE_NPCM7XX_EMC " ",
-                               test_sockets[1]);
-    }
+    g_string_append_printf(cmd_line, " -nic socket,fd=%d,model=emc%d ",
+                           test_sockets[1], module_num);
 
     g_test_queue_destroy(packet_test_clear, test_sockets);
     return test_sockets;
-- 
2.41.0



From xen-devel-bounces@lists.xenproject.org Mon Jan 08 21:10:55 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 08 Jan 2024 21:10:55 +0000
Received: from list by lists.xenproject.org with outflank-mailman.664053.1034166 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMwtb-0007kk-OT; Mon, 08 Jan 2024 21:10:55 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 664053.1034166; Mon, 08 Jan 2024 21:10:55 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMwtb-0007kd-Li; Mon, 08 Jan 2024 21:10:55 +0000
Received: by outflank-mailman (input) for mailman id 664053;
 Mon, 08 Jan 2024 21:10:54 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=CNLN=IS=desiato.srs.infradead.org=BATV+a33e3d7a5f0474923369+7442+infradead.org+dwmw2@srs-se1.protection.inumbo.net>)
 id 1rMwas-0000R5-BO
 for xen-devel@lists.xenproject.org; Mon, 08 Jan 2024 20:51:34 +0000
Received: from desiato.infradead.org (desiato.infradead.org
 [2001:8b0:10b:1:d65d:64ff:fe57:4e05])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id b137329d-ae67-11ee-98ef-6d05b1d4d9a1;
 Mon, 08 Jan 2024 21:51:27 +0100 (CET)
Received: from [2001:8b0:10b:1::ebe] (helo=i7.infradead.org)
 by desiato.infradead.org with esmtpsa (Exim 4.96 #2 (Red Hat Linux))
 id 1rMwYj-007wXM-2m; Mon, 08 Jan 2024 20:49:22 +0000
Received: from dwoodhou by i7.infradead.org with local (Exim 4.96.2 #2 (Red
 Hat Linux)) id 1rMwYj-002NER-0G; Mon, 08 Jan 2024 20:49:21 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
X-Inumbo-ID: b137329d-ae67-11ee-98ef-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=infradead.org; s=desiato.20200630; h=Sender:Content-Transfer-Encoding:
	MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:
	Reply-To:Content-Type:Content-ID:Content-Description;
	bh=f2vF3BulUXFg8muFzHLRH93RIz10hzmoRdBIsGtJaGo=; b=hcrnaxHzdiEtxWpYBzTf6/1JHe
	2EMOr9Ek9v45wgVRjWelqPKdKdigM3bDNrPtyrTYwzk7B5wI+RdoBMwtGPXTDKhkEQzrHhub3xEv8
	B0zrya3BSbSJ6nlEkU6vCAPQzkCJHSMaIkBld1P1KuKWhxUn6UdNcPJXh9aQcLctqvwQOvc/5/4RY
	FyAukMmpR98tO4+ziwqm3CYjyW8kHA0a+pG6MYUkYv2513JVLVlSucK9wYC5hS08PPQbbvBy5btW3
	NThKdg1aZshvcZvHijCd8hRAr3pK0NEFVIZFhXQt5JP5lfAYhtgmjgw0svaeQsAGmWW5u3fezhhea
	O3Cr0b5g==;
From: David Woodhouse <dwmw2@infradead.org>
To: qemu-devel@nongnu.org
Cc: Richard Henderson <richard.henderson@linaro.org>,
	Beniamino Galvani <b.galvani@gmail.com>,
	Peter Maydell <peter.maydell@linaro.org>,
	Strahinja Jankovic <strahinja.p.jankovic@gmail.com>,
	Niek Linnenbank <nieklinnenbank@gmail.com>,
	=?UTF-8?q?C=C3=A9dric=20Le=20Goater?= <clg@kaod.org>,
	Andrew Jeffery <andrew@codeconstruct.com.au>,
	Joel Stanley <joel@jms.id.au>,
	Igor Mitsyanko <i.mitsyanko@gmail.com>,
	Jean-Christophe Dubois <jcd@tribudubois.net>,
	Andrey Smirnov <andrew.smirnov@gmail.com>,
	=?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= <philmd@linaro.org>,
	Rob Herring <robh@kernel.org>,
	Subbaraya Sundeep <sundeep.lkml@gmail.com>,
	Jan Kiszka <jan.kiszka@web.de>,
	Tyrone Ting <kfting@nuvoton.com>,
	Hao Wu <wuhaotsh@google.com>,
	Radoslaw Biernacki <rad@semihalf.com>,
	Leif Lindholm <quic_llindhol@quicinc.com>,
	Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org>,
	"Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
	Alistair Francis <alistair@alistair23.me>,
	Helge Deller <deller@gmx.de>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Eduardo Habkost <eduardo@habkost.net>,
	"Michael S. Tsirkin" <mst@redhat.com>,
	Marcel Apfelbaum <marcel.apfelbaum@gmail.com>,
	Song Gao <gaosong@loongson.cn>,
	Thomas Huth <huth@tuxfamily.org>,
	Laurent Vivier <laurent@vivier.eu>,
	Huacai Chen <chenhuacai@kernel.org>,
	Jiaxun Yang <jiaxun.yang@flygoat.com>,
	=?UTF-8?q?Herv=C3=A9=20Poussineau?= <hpoussin@reactos.org>,
	Aleksandar Rikalo <aleksandar.rikalo@syrmia.com>,
	Aurelien Jarno <aurelien@aurel32.net>,
	Jason Wang <jasowang@redhat.com>,
	Jia Liu <proljc@gmail.com>,
	Stafford Horne <shorne@gmail.com>,
	Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>,
	Nicholas Piggin <npiggin@gmail.com>,
	Daniel Henrique Barboza <danielhb413@gmail.com>,
	David Gibson <david@gibson.dropbear.id.au>,
	Harsh Prateek Bora <harshpb@linux.ibm.com>,
	Bin Meng <bin.meng@windriver.com>,
	Palmer Dabbelt <palmer@dabbelt.com>,
	Weiwei Li <liwei1518@gmail.com>,
	Liu Zhiwei <zhiwei_liu@linux.alibaba.com>,
	Halil Pasic <pasic@linux.ibm.com>,
	Christian Borntraeger <borntraeger@linux.ibm.com>,
	Eric Farman <farman@linux.ibm.com>,
	David Hildenbrand <david@redhat.com>,
	Ilya Leoshkevich <iii@linux.ibm.com>,
	Yoshinori Sato <ysato@users.sourceforge.jp>,
	Magnus Damm <magnus.damm@gmail.com>,
	Artyom Tarasenko <atar4qemu@gmail.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Anthony Perard <anthony.perard@citrix.com>,
	Paul Durrant <paul@xen.org>,
	Max Filippov <jcmvbkbc@gmail.com>,
	qemu-arm@nongnu.org,
	qemu-ppc@nongnu.org,
	qemu-riscv@nongnu.org,
	qemu-s390x@nongnu.org,
	xen-devel@lists.xenproject.org,
	David Woodhouse <dwmw@amazon.co.uk>
Subject: [PATCH v3 08/46] hw/arm/sbsa-ref: use pci_init_nic_devices()
Date: Mon,  8 Jan 2024 20:26:37 +0000
Message-ID: <20240108204909.564514-9-dwmw2@infradead.org>
X-Mailer: git-send-email 2.41.0
In-Reply-To: <20240108204909.564514-1-dwmw2@infradead.org>
References: <20240108204909.564514-1-dwmw2@infradead.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Sender: David Woodhouse <dwmw2@infradead.org>
X-SRS-Rewrite: SMTP reverse-path rewritten from <dwmw2@infradead.org> by desiato.infradead.org. See http://www.infradead.org/rpr.html

From: David Woodhouse <dwmw@amazon.co.uk>

Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
Reviewed-by: Leif Lindholm <quic_llindhol@quicinc.com>
---
 hw/arm/sbsa-ref.c | 4 +---
 1 file changed, 1 insertion(+), 3 deletions(-)

diff --git a/hw/arm/sbsa-ref.c b/hw/arm/sbsa-ref.c
index 477dca0637..f0171176ea 100644
--- a/hw/arm/sbsa-ref.c
+++ b/hw/arm/sbsa-ref.c
@@ -671,9 +671,7 @@ static void create_pcie(SBSAMachineState *sms)
 
     pci = PCI_HOST_BRIDGE(dev);
     if (pci->bus) {
-        for (i = 0; i < nb_nics; i++) {
-            pci_nic_init_nofail(&nd_table[i], pci->bus, mc->default_nic, NULL);
-        }
+        pci_init_nic_devices(pci->bus, mc->default_nic);
     }
 
     pci_create_simple(pci->bus, -1, "bochs-display");
-- 
2.41.0



From xen-devel-bounces@lists.xenproject.org Mon Jan 08 21:12:08 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 08 Jan 2024 21:12:08 +0000
Received: from list by lists.xenproject.org with outflank-mailman.664058.1034175 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMwuk-0000G4-2n; Mon, 08 Jan 2024 21:12:06 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 664058.1034175; Mon, 08 Jan 2024 21:12:06 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMwuk-0000Fx-07; Mon, 08 Jan 2024 21:12:06 +0000
Received: by outflank-mailman (input) for mailman id 664058;
 Mon, 08 Jan 2024 21:12:04 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=NrlO=IS=casper.srs.infradead.org=BATV+41a72dc6539c0dfbbc31+7442+infradead.org+dwmw2@srs-se1.protection.inumbo.net>)
 id 1rMwaT-0000R5-SJ
 for xen-devel@lists.xenproject.org; Mon, 08 Jan 2024 20:51:09 +0000
Received: from casper.infradead.org (casper.infradead.org
 [2001:8b0:10b:1236::1])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id a44d77e9-ae67-11ee-98ef-6d05b1d4d9a1;
 Mon, 08 Jan 2024 21:51:05 +0100 (CET)
Received: from [2001:8b0:10b:1::ebe] (helo=i7.infradead.org)
 by casper.infradead.org with esmtpsa (Exim 4.94.2 #2 (Red Hat Linux))
 id 1rMwYi-008RPc-Vt; Mon, 08 Jan 2024 20:49:22 +0000
Received: from dwoodhou by i7.infradead.org with local (Exim 4.96.2 #2 (Red
 Hat Linux)) id 1rMwYj-002NEi-1T; Mon, 08 Jan 2024 20:49:21 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
X-Inumbo-ID: a44d77e9-ae67-11ee-98ef-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=infradead.org; s=casper.20170209; h=Sender:Content-Transfer-Encoding:
	MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:
	Reply-To:Content-Type:Content-ID:Content-Description;
	bh=MtsxthwV/XHTVMI8Ph+V2vIGIyQmamq03UN301HMpX4=; b=PT6zlFaRlQa+uavB1+kjb5Kekl
	ewArnNLhFmKdXVZebbCFbxdk7Ljpre/RVILdG5jVDpjwF6OpupTJTNAKSneiRC1PlrzMntVevewHA
	Aiyb1SGwAHzBbKBwiVaEV62nHudYjg8KaVltZK5CkM0me8XQj3iGjw0BbWNcCY+gZ8fuGinElIbW6
	vrmSTircUy9XWCpf68cvZXZ6DpPPXaiWq7WtXK238z7wuuakIgUh7TB6wNy6vLQYASorGrn4v/gm5
	IxLEXs8dYAjl84Jb47k6TUUtt/tV9tu7339JtfgwlZXKl+rbx7gRPXIKH2kN3zvYq/Uj8tS1QkgXD
	l7t7DD6g==;
From: David Woodhouse <dwmw2@infradead.org>
To: qemu-devel@nongnu.org
Cc: Richard Henderson <richard.henderson@linaro.org>,
	Beniamino Galvani <b.galvani@gmail.com>,
	Peter Maydell <peter.maydell@linaro.org>,
	Strahinja Jankovic <strahinja.p.jankovic@gmail.com>,
	Niek Linnenbank <nieklinnenbank@gmail.com>,
	=?UTF-8?q?C=C3=A9dric=20Le=20Goater?= <clg@kaod.org>,
	Andrew Jeffery <andrew@codeconstruct.com.au>,
	Joel Stanley <joel@jms.id.au>,
	Igor Mitsyanko <i.mitsyanko@gmail.com>,
	Jean-Christophe Dubois <jcd@tribudubois.net>,
	Andrey Smirnov <andrew.smirnov@gmail.com>,
	=?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= <philmd@linaro.org>,
	Rob Herring <robh@kernel.org>,
	Subbaraya Sundeep <sundeep.lkml@gmail.com>,
	Jan Kiszka <jan.kiszka@web.de>,
	Tyrone Ting <kfting@nuvoton.com>,
	Hao Wu <wuhaotsh@google.com>,
	Radoslaw Biernacki <rad@semihalf.com>,
	Leif Lindholm <quic_llindhol@quicinc.com>,
	Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org>,
	"Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
	Alistair Francis <alistair@alistair23.me>,
	Helge Deller <deller@gmx.de>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Eduardo Habkost <eduardo@habkost.net>,
	"Michael S. Tsirkin" <mst@redhat.com>,
	Marcel Apfelbaum <marcel.apfelbaum@gmail.com>,
	Song Gao <gaosong@loongson.cn>,
	Thomas Huth <huth@tuxfamily.org>,
	Laurent Vivier <laurent@vivier.eu>,
	Huacai Chen <chenhuacai@kernel.org>,
	Jiaxun Yang <jiaxun.yang@flygoat.com>,
	=?UTF-8?q?Herv=C3=A9=20Poussineau?= <hpoussin@reactos.org>,
	Aleksandar Rikalo <aleksandar.rikalo@syrmia.com>,
	Aurelien Jarno <aurelien@aurel32.net>,
	Jason Wang <jasowang@redhat.com>,
	Jia Liu <proljc@gmail.com>,
	Stafford Horne <shorne@gmail.com>,
	Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>,
	Nicholas Piggin <npiggin@gmail.com>,
	Daniel Henrique Barboza <danielhb413@gmail.com>,
	David Gibson <david@gibson.dropbear.id.au>,
	Harsh Prateek Bora <harshpb@linux.ibm.com>,
	Bin Meng <bin.meng@windriver.com>,
	Palmer Dabbelt <palmer@dabbelt.com>,
	Weiwei Li <liwei1518@gmail.com>,
	Liu Zhiwei <zhiwei_liu@linux.alibaba.com>,
	Halil Pasic <pasic@linux.ibm.com>,
	Christian Borntraeger <borntraeger@linux.ibm.com>,
	Eric Farman <farman@linux.ibm.com>,
	David Hildenbrand <david@redhat.com>,
	Ilya Leoshkevich <iii@linux.ibm.com>,
	Yoshinori Sato <ysato@users.sourceforge.jp>,
	Magnus Damm <magnus.damm@gmail.com>,
	Artyom Tarasenko <atar4qemu@gmail.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Anthony Perard <anthony.perard@citrix.com>,
	Paul Durrant <paul@xen.org>,
	Max Filippov <jcmvbkbc@gmail.com>,
	qemu-arm@nongnu.org,
	qemu-ppc@nongnu.org,
	qemu-riscv@nongnu.org,
	qemu-s390x@nongnu.org,
	xen-devel@lists.xenproject.org,
	David Woodhouse <dwmw@amazon.co.uk>
Subject: [PATCH v3 12/46] hw/mips/fuloong2e: use pci_init_nic_devices()
Date: Mon,  8 Jan 2024 20:26:41 +0000
Message-ID: <20240108204909.564514-13-dwmw2@infradead.org>
X-Mailer: git-send-email 2.41.0
In-Reply-To: <20240108204909.564514-1-dwmw2@infradead.org>
References: <20240108204909.564514-1-dwmw2@infradead.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Sender: David Woodhouse <dwmw2@infradead.org>
X-SRS-Rewrite: SMTP reverse-path rewritten from <dwmw2@infradead.org> by casper.infradead.org. See http://www.infradead.org/rpr.html

From: David Woodhouse <dwmw@amazon.co.uk>

The previous behaviour was: *if* the first NIC specified on the command
line was an RTL8139 (or unspecified model) then it gets assigned to PCI
slot 7, which is where the Fuloong board had an RTL8139. All other
devices (including the first, if it was specified a anything other then
an rtl8319) get dynamically assigned on the bus.

The new behaviour is subtly different: If the first NIC was given a
specific model *other* than rtl8139, and a subsequent NIC was not,
then the rtl8139 (or unspecified) NIC will go to slot 7 and the rest
will be dynamically assigned.

Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
---
 hw/mips/fuloong2e.c | 16 +++-------------
 1 file changed, 3 insertions(+), 13 deletions(-)

diff --git a/hw/mips/fuloong2e.c b/hw/mips/fuloong2e.c
index 97b2c8ed8e..a45aac368c 100644
--- a/hw/mips/fuloong2e.c
+++ b/hw/mips/fuloong2e.c
@@ -201,19 +201,9 @@ static void main_cpu_reset(void *opaque)
 /* Network support */
 static void network_init(PCIBus *pci_bus)
 {
-    int i;
-
-    for (i = 0; i < nb_nics; i++) {
-        NICInfo *nd = &nd_table[i];
-        const char *default_devaddr = NULL;
-
-        if (i == 0 && (!nd->model || strcmp(nd->model, "rtl8139") == 0)) {
-            /* The Fuloong board has a RTL8139 card using PCI SLOT 7 */
-            default_devaddr = "07";
-        }
-
-        pci_nic_init_nofail(nd, pci_bus, "rtl8139", default_devaddr);
-    }
+    /* The Fuloong board has a RTL8139 card using PCI SLOT 7 */
+    pci_init_nic_in_slot(pci_bus, "rtl8139", NULL, "07");
+    pci_init_nic_devices(pci_bus, "rtl8139");
 }
 
 static void mips_fuloong2e_init(MachineState *machine)
-- 
2.41.0



From xen-devel-bounces@lists.xenproject.org Mon Jan 08 21:12:53 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 08 Jan 2024 21:12:53 +0000
Received: from list by lists.xenproject.org with outflank-mailman.664062.1034185 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMwvV-0000xh-Bn; Mon, 08 Jan 2024 21:12:53 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 664062.1034185; Mon, 08 Jan 2024 21:12:53 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMwvV-0000xa-9H; Mon, 08 Jan 2024 21:12:53 +0000
Received: by outflank-mailman (input) for mailman id 664062;
 Mon, 08 Jan 2024 21:12:52 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=CNLN=IS=desiato.srs.infradead.org=BATV+a33e3d7a5f0474923369+7442+infradead.org+dwmw2@srs-se1.protection.inumbo.net>)
 id 1rMwam-0000R5-AY
 for xen-devel@lists.xenproject.org; Mon, 08 Jan 2024 20:51:28 +0000
Received: from desiato.infradead.org (desiato.infradead.org
 [2001:8b0:10b:1:d65d:64ff:fe57:4e05])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id acefaafe-ae67-11ee-98ef-6d05b1d4d9a1;
 Mon, 08 Jan 2024 21:51:20 +0100 (CET)
Received: from [2001:8b0:10b:1::ebe] (helo=i7.infradead.org)
 by desiato.infradead.org with esmtpsa (Exim 4.96 #2 (Red Hat Linux))
 id 1rMwYn-007wY3-1J; Mon, 08 Jan 2024 20:49:27 +0000
Received: from dwoodhou by i7.infradead.org with local (Exim 4.96.2 #2 (Red
 Hat Linux)) id 1rMwYl-002NHH-2j; Mon, 08 Jan 2024 20:49:23 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
X-Inumbo-ID: acefaafe-ae67-11ee-98ef-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=infradead.org; s=desiato.20200630; h=Sender:Content-Transfer-Encoding:
	MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:
	Reply-To:Content-Type:Content-ID:Content-Description;
	bh=rTopHu98DHOiHwDxqf9TRgh2IF7Z3stx+8tiOprcI64=; b=Zzn090CYyyg1K81T6v5iNsVYOt
	6Dhn8iNEErAwnNe4IYC5D4OqMRXv9zXr8x6c+oM9dYRlZWyYyNr0S3pwEX7wVa2vJQLKRRj+fh22y
	cVApTVo/Mqqj2eymH5XJESGSiWk6wgHG3wFXv7AWxDyUKVeOEBX7YMIVskD4wXT9/t74PjLH54FOn
	njCMdfoJH4NpkpR6HIUZmktEHiE9hXX9mG65VARLCRuL+/mkaPzW9zJhaH0PKQ261yR4r3rl/wT3U
	Zm//eVVmsDNaXTKwSMYtn9V588ar1Va0V/GypLwLfaqUtRskXVrLS1IL+5qp2lByUhI8eqiI6A4VN
	U3v9QWlA==;
From: David Woodhouse <dwmw2@infradead.org>
To: qemu-devel@nongnu.org
Cc: Richard Henderson <richard.henderson@linaro.org>,
	Beniamino Galvani <b.galvani@gmail.com>,
	Peter Maydell <peter.maydell@linaro.org>,
	Strahinja Jankovic <strahinja.p.jankovic@gmail.com>,
	Niek Linnenbank <nieklinnenbank@gmail.com>,
	=?UTF-8?q?C=C3=A9dric=20Le=20Goater?= <clg@kaod.org>,
	Andrew Jeffery <andrew@codeconstruct.com.au>,
	Joel Stanley <joel@jms.id.au>,
	Igor Mitsyanko <i.mitsyanko@gmail.com>,
	Jean-Christophe Dubois <jcd@tribudubois.net>,
	Andrey Smirnov <andrew.smirnov@gmail.com>,
	=?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= <philmd@linaro.org>,
	Rob Herring <robh@kernel.org>,
	Subbaraya Sundeep <sundeep.lkml@gmail.com>,
	Jan Kiszka <jan.kiszka@web.de>,
	Tyrone Ting <kfting@nuvoton.com>,
	Hao Wu <wuhaotsh@google.com>,
	Radoslaw Biernacki <rad@semihalf.com>,
	Leif Lindholm <quic_llindhol@quicinc.com>,
	Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org>,
	"Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
	Alistair Francis <alistair@alistair23.me>,
	Helge Deller <deller@gmx.de>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Eduardo Habkost <eduardo@habkost.net>,
	"Michael S. Tsirkin" <mst@redhat.com>,
	Marcel Apfelbaum <marcel.apfelbaum@gmail.com>,
	Song Gao <gaosong@loongson.cn>,
	Thomas Huth <huth@tuxfamily.org>,
	Laurent Vivier <laurent@vivier.eu>,
	Huacai Chen <chenhuacai@kernel.org>,
	Jiaxun Yang <jiaxun.yang@flygoat.com>,
	=?UTF-8?q?Herv=C3=A9=20Poussineau?= <hpoussin@reactos.org>,
	Aleksandar Rikalo <aleksandar.rikalo@syrmia.com>,
	Aurelien Jarno <aurelien@aurel32.net>,
	Jason Wang <jasowang@redhat.com>,
	Jia Liu <proljc@gmail.com>,
	Stafford Horne <shorne@gmail.com>,
	Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>,
	Nicholas Piggin <npiggin@gmail.com>,
	Daniel Henrique Barboza <danielhb413@gmail.com>,
	David Gibson <david@gibson.dropbear.id.au>,
	Harsh Prateek Bora <harshpb@linux.ibm.com>,
	Bin Meng <bin.meng@windriver.com>,
	Palmer Dabbelt <palmer@dabbelt.com>,
	Weiwei Li <liwei1518@gmail.com>,
	Liu Zhiwei <zhiwei_liu@linux.alibaba.com>,
	Halil Pasic <pasic@linux.ibm.com>,
	Christian Borntraeger <borntraeger@linux.ibm.com>,
	Eric Farman <farman@linux.ibm.com>,
	David Hildenbrand <david@redhat.com>,
	Ilya Leoshkevich <iii@linux.ibm.com>,
	Yoshinori Sato <ysato@users.sourceforge.jp>,
	Magnus Damm <magnus.damm@gmail.com>,
	Artyom Tarasenko <atar4qemu@gmail.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Anthony Perard <anthony.perard@citrix.com>,
	Paul Durrant <paul@xen.org>,
	Max Filippov <jcmvbkbc@gmail.com>,
	qemu-arm@nongnu.org,
	qemu-ppc@nongnu.org,
	qemu-riscv@nongnu.org,
	qemu-s390x@nongnu.org,
	xen-devel@lists.xenproject.org,
	David Woodhouse <dwmw@amazon.co.uk>
Subject: [PATCH v3 44/46] hw/pci: remove pci_nic_init_nofail()
Date: Mon,  8 Jan 2024 20:27:13 +0000
Message-ID: <20240108204909.564514-45-dwmw2@infradead.org>
X-Mailer: git-send-email 2.41.0
In-Reply-To: <20240108204909.564514-1-dwmw2@infradead.org>
References: <20240108204909.564514-1-dwmw2@infradead.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Sender: David Woodhouse <dwmw2@infradead.org>
X-SRS-Rewrite: SMTP reverse-path rewritten from <dwmw2@infradead.org> by desiato.infradead.org. See http://www.infradead.org/rpr.html

From: David Woodhouse <dwmw@amazon.co.uk>

This function is no longer used.

Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
---
 hw/pci/pci.c         | 72 --------------------------------------------
 include/hw/pci/pci.h |  3 --
 2 files changed, 75 deletions(-)

diff --git a/hw/pci/pci.c b/hw/pci/pci.c
index 5849606f66..449abfb182 100644
--- a/hw/pci/pci.c
+++ b/hw/pci/pci.c
@@ -1853,78 +1853,6 @@ const pci_class_desc *get_class_desc(int class)
     return desc;
 }
 
-/* Initialize a PCI NIC.  */
-PCIDevice *pci_nic_init_nofail(NICInfo *nd, PCIBus *rootbus,
-                               const char *default_model,
-                               const char *default_devaddr)
-{
-    const char *devaddr = nd->devaddr ? nd->devaddr : default_devaddr;
-    GPtrArray *pci_nic_models;
-    PCIBus *bus;
-    PCIDevice *pci_dev;
-    DeviceState *dev;
-    int devfn;
-    int i;
-    int dom, busnr;
-    unsigned slot;
-
-    if (nd->model && !strcmp(nd->model, "virtio")) {
-        g_free(nd->model);
-        nd->model = g_strdup("virtio-net-pci");
-    }
-
-    pci_nic_models = qemu_get_nic_models(TYPE_PCI_DEVICE);
-
-    if (qemu_show_nic_models(nd->model, (const char **)pci_nic_models->pdata)) {
-        exit(0);
-    }
-
-    i = qemu_find_nic_model(nd, (const char **)pci_nic_models->pdata,
-                            default_model);
-    if (i < 0) {
-        exit(1);
-    }
-
-    if (!rootbus) {
-        error_report("No primary PCI bus");
-        exit(1);
-    }
-
-    assert(!rootbus->parent_dev);
-
-    if (!devaddr) {
-        devfn = -1;
-        busnr = 0;
-    } else {
-        if (pci_parse_devaddr(devaddr, &dom, &busnr, &slot, NULL) < 0) {
-            error_report("Invalid PCI device address %s for device %s",
-                         devaddr, nd->model);
-            exit(1);
-        }
-
-        if (dom != 0) {
-            error_report("No support for non-zero PCI domains");
-            exit(1);
-        }
-
-        devfn = PCI_DEVFN(slot, 0);
-    }
-
-    bus = pci_find_bus_nr(rootbus, busnr);
-    if (!bus) {
-        error_report("Invalid PCI device address %s for device %s",
-                     devaddr, nd->model);
-        exit(1);
-    }
-
-    pci_dev = pci_new(devfn, nd->model);
-    dev = &pci_dev->qdev;
-    qdev_set_nic_properties(dev, nd);
-    pci_realize_and_unref(pci_dev, bus, &error_fatal);
-    g_ptr_array_free(pci_nic_models, true);
-    return pci_dev;
-}
-
 void pci_init_nic_devices(PCIBus *bus, const char *default_model)
 {
     qemu_create_nic_bus_devices(&bus->qbus, TYPE_PCI_DEVICE, default_model,
diff --git a/include/hw/pci/pci.h b/include/hw/pci/pci.h
index 6ff0b95a02..eaa3fc99d8 100644
--- a/include/hw/pci/pci.h
+++ b/include/hw/pci/pci.h
@@ -314,9 +314,6 @@ void pci_device_set_intx_routing_notifier(PCIDevice *dev,
                                           PCIINTxRoutingNotifier notifier);
 void pci_device_reset(PCIDevice *dev);
 
-PCIDevice *pci_nic_init_nofail(NICInfo *nd, PCIBus *rootbus,
-                               const char *default_model,
-                               const char *default_devaddr);
 void pci_init_nic_devices(PCIBus *bus, const char *default_model);
 bool pci_init_nic_in_slot(PCIBus *rootbus, const char *default_model,
                           const char *alias, const char *devaddr);
-- 
2.41.0



From xen-devel-bounces@lists.xenproject.org Mon Jan 08 21:13:19 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 08 Jan 2024 21:13:19 +0000
Received: from list by lists.xenproject.org with outflank-mailman.664067.1034195 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMwvu-0001dB-OP; Mon, 08 Jan 2024 21:13:18 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 664067.1034195; Mon, 08 Jan 2024 21:13:18 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMwvu-0001d4-LX; Mon, 08 Jan 2024 21:13:18 +0000
Received: by outflank-mailman (input) for mailman id 664067;
 Mon, 08 Jan 2024 21:13:17 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=CNLN=IS=desiato.srs.infradead.org=BATV+a33e3d7a5f0474923369+7442+infradead.org+dwmw2@srs-se1.protection.inumbo.net>)
 id 1rMwaf-0000R6-U4
 for xen-devel@lists.xenproject.org; Mon, 08 Jan 2024 20:51:21 +0000
Received: from desiato.infradead.org (desiato.infradead.org
 [2001:8b0:10b:1:d65d:64ff:fe57:4e05])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id ac59657f-ae67-11ee-9b0f-b553b5be7939;
 Mon, 08 Jan 2024 21:51:19 +0100 (CET)
Received: from [2001:8b0:10b:1::ebe] (helo=i7.infradead.org)
 by desiato.infradead.org with esmtpsa (Exim 4.96 #2 (Red Hat Linux))
 id 1rMwYk-007wXU-32; Mon, 08 Jan 2024 20:49:49 +0000
Received: from dwoodhou by i7.infradead.org with local (Exim 4.96.2 #2 (Red
 Hat Linux)) id 1rMwYk-002NFF-05; Mon, 08 Jan 2024 20:49:22 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
X-Inumbo-ID: ac59657f-ae67-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=infradead.org; s=desiato.20200630; h=Sender:Content-Transfer-Encoding:
	MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:
	Reply-To:Content-Type:Content-ID:Content-Description;
	bh=vZMRhiZQ+Jif2GpzJ088JqGdsj64x2dfhRLBSU8SpKk=; b=gySY+Chu+vZJ5+6WwtPjM9E41R
	jKNxbCJ+rtAWQeXdrM3MAuC28dtzfNxAYvcNCYHDML/tATRk0WgcaqinYfyT15inZuXzuzR1QcSui
	rSfCpkB1ZVAc2sLnQd8Q8Z53vSlyLbhZt6LlcsaH521sF+qV4fQohUEK9Ig9EZYak2Hkw0R1xJdVz
	IGHOPpKmizuS5BU5+vsFYB/7Acm69ktMUxzCJJTwJDYBWFQU80TzLDmHrbvCndfqdFzwflLwtRJ5E
	T2ele1s6Ya9ydB6nGoFNoEqKrdA1eIjV78jw2wYqKrHOeznrc3gIWrMxROgxb5lV6wpgmr3UHKvWB
	EFAzJkgg==;
From: David Woodhouse <dwmw2@infradead.org>
To: qemu-devel@nongnu.org
Cc: Richard Henderson <richard.henderson@linaro.org>,
	Beniamino Galvani <b.galvani@gmail.com>,
	Peter Maydell <peter.maydell@linaro.org>,
	Strahinja Jankovic <strahinja.p.jankovic@gmail.com>,
	Niek Linnenbank <nieklinnenbank@gmail.com>,
	=?UTF-8?q?C=C3=A9dric=20Le=20Goater?= <clg@kaod.org>,
	Andrew Jeffery <andrew@codeconstruct.com.au>,
	Joel Stanley <joel@jms.id.au>,
	Igor Mitsyanko <i.mitsyanko@gmail.com>,
	Jean-Christophe Dubois <jcd@tribudubois.net>,
	Andrey Smirnov <andrew.smirnov@gmail.com>,
	=?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= <philmd@linaro.org>,
	Rob Herring <robh@kernel.org>,
	Subbaraya Sundeep <sundeep.lkml@gmail.com>,
	Jan Kiszka <jan.kiszka@web.de>,
	Tyrone Ting <kfting@nuvoton.com>,
	Hao Wu <wuhaotsh@google.com>,
	Radoslaw Biernacki <rad@semihalf.com>,
	Leif Lindholm <quic_llindhol@quicinc.com>,
	Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org>,
	"Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
	Alistair Francis <alistair@alistair23.me>,
	Helge Deller <deller@gmx.de>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Eduardo Habkost <eduardo@habkost.net>,
	"Michael S. Tsirkin" <mst@redhat.com>,
	Marcel Apfelbaum <marcel.apfelbaum@gmail.com>,
	Song Gao <gaosong@loongson.cn>,
	Thomas Huth <huth@tuxfamily.org>,
	Laurent Vivier <laurent@vivier.eu>,
	Huacai Chen <chenhuacai@kernel.org>,
	Jiaxun Yang <jiaxun.yang@flygoat.com>,
	=?UTF-8?q?Herv=C3=A9=20Poussineau?= <hpoussin@reactos.org>,
	Aleksandar Rikalo <aleksandar.rikalo@syrmia.com>,
	Aurelien Jarno <aurelien@aurel32.net>,
	Jason Wang <jasowang@redhat.com>,
	Jia Liu <proljc@gmail.com>,
	Stafford Horne <shorne@gmail.com>,
	Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>,
	Nicholas Piggin <npiggin@gmail.com>,
	Daniel Henrique Barboza <danielhb413@gmail.com>,
	David Gibson <david@gibson.dropbear.id.au>,
	Harsh Prateek Bora <harshpb@linux.ibm.com>,
	Bin Meng <bin.meng@windriver.com>,
	Palmer Dabbelt <palmer@dabbelt.com>,
	Weiwei Li <liwei1518@gmail.com>,
	Liu Zhiwei <zhiwei_liu@linux.alibaba.com>,
	Halil Pasic <pasic@linux.ibm.com>,
	Christian Borntraeger <borntraeger@linux.ibm.com>,
	Eric Farman <farman@linux.ibm.com>,
	David Hildenbrand <david@redhat.com>,
	Ilya Leoshkevich <iii@linux.ibm.com>,
	Yoshinori Sato <ysato@users.sourceforge.jp>,
	Magnus Damm <magnus.damm@gmail.com>,
	Artyom Tarasenko <atar4qemu@gmail.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Anthony Perard <anthony.perard@citrix.com>,
	Paul Durrant <paul@xen.org>,
	Max Filippov <jcmvbkbc@gmail.com>,
	qemu-arm@nongnu.org,
	qemu-ppc@nongnu.org,
	qemu-riscv@nongnu.org,
	qemu-s390x@nongnu.org,
	xen-devel@lists.xenproject.org,
	David Woodhouse <dwmw@amazon.co.uk>
Subject: [PATCH v3 19/46] hw/sparc64/sun4u: use pci_init_nic_devices()
Date: Mon,  8 Jan 2024 20:26:48 +0000
Message-ID: <20240108204909.564514-20-dwmw2@infradead.org>
X-Mailer: git-send-email 2.41.0
In-Reply-To: <20240108204909.564514-1-dwmw2@infradead.org>
References: <20240108204909.564514-1-dwmw2@infradead.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Sender: David Woodhouse <dwmw2@infradead.org>
X-SRS-Rewrite: SMTP reverse-path rewritten from <dwmw2@infradead.org> by desiato.infradead.org. See http://www.infradead.org/rpr.html

From: David Woodhouse <dwmw@amazon.co.uk>

The first sunhme NIC gets placed a function 1 on slot 1 of PCI bus A,
and the rest are dynamically assigned on PCI bus B.

Previously, any PCI NIC would get the special treatment purely by
virtue of being first in the list.

Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
---
 hw/sparc64/sun4u.c | 27 ++++++++-------------------
 1 file changed, 8 insertions(+), 19 deletions(-)

diff --git a/hw/sparc64/sun4u.c b/hw/sparc64/sun4u.c
index 24d53bf5fd..eda9b58a21 100644
--- a/hw/sparc64/sun4u.c
+++ b/hw/sparc64/sun4u.c
@@ -639,29 +639,18 @@ static void sun4uv_init(MemoryRegion *address_space_mem,
 
     memset(&macaddr, 0, sizeof(MACAddr));
     onboard_nic = false;
-    for (i = 0; i < nb_nics; i++) {
-        PCIBus *bus;
-        nd = &nd_table[i];
-
-        if (!nd->model || strcmp(nd->model, mc->default_nic) == 0) {
-            if (!onboard_nic) {
-                pci_dev = pci_new_multifunction(PCI_DEVFN(1, 1), mc->default_nic);
-                bus = pci_busA;
-                memcpy(&macaddr, &nd->macaddr.a, sizeof(MACAddr));
-                onboard_nic = true;
-            } else {
-                pci_dev = pci_new(-1, mc->default_nic);
-                bus = pci_busB;
-            }
-        } else {
-            pci_dev = pci_new(-1, nd->model);
-            bus = pci_busB;
-        }
 
+    nd = qemu_find_nic_info(mc->default_nic, true, NULL);
+    if (nd) {
+        pci_dev = pci_new_multifunction(PCI_DEVFN(1, 1), mc->default_nic);
         dev = &pci_dev->qdev;
         qdev_set_nic_properties(dev, nd);
-        pci_realize_and_unref(pci_dev, bus, &error_fatal);
+        pci_realize_and_unref(pci_dev, pci_busA, &error_fatal);
+
+        memcpy(&macaddr, &nd->macaddr.a, sizeof(MACAddr));
+        onboard_nic = true;
     }
+    pci_init_nic_devices(pci_busB, mc->default_nic);
 
     /* If we don't have an onboard NIC, grab a default MAC address so that
      * we have a valid machine id */
-- 
2.41.0



From xen-devel-bounces@lists.xenproject.org Mon Jan 08 21:13:36 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 08 Jan 2024 21:13:36 +0000
Received: from list by lists.xenproject.org with outflank-mailman.664071.1034206 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMwwB-00027f-Vh; Mon, 08 Jan 2024 21:13:35 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 664071.1034206; Mon, 08 Jan 2024 21:13:35 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMwwB-00027Y-Sv; Mon, 08 Jan 2024 21:13:35 +0000
Received: by outflank-mailman (input) for mailman id 664071;
 Mon, 08 Jan 2024 21:13:34 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=CNLN=IS=desiato.srs.infradead.org=BATV+a33e3d7a5f0474923369+7442+infradead.org+dwmw2@srs-se1.protection.inumbo.net>)
 id 1rMwac-0000R5-9W
 for xen-devel@lists.xenproject.org; Mon, 08 Jan 2024 20:51:18 +0000
Received: from desiato.infradead.org (desiato.infradead.org
 [2001:8b0:10b:1:d65d:64ff:fe57:4e05])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id a7ebb5d8-ae67-11ee-98ef-6d05b1d4d9a1;
 Mon, 08 Jan 2024 21:51:14 +0100 (CET)
Received: from [2001:8b0:10b:1::ebe] (helo=i7.infradead.org)
 by desiato.infradead.org with esmtpsa (Exim 4.96 #2 (Red Hat Linux))
 id 1rMwYk-007wXT-2t; Mon, 08 Jan 2024 20:49:23 +0000
Received: from dwoodhou by i7.infradead.org with local (Exim 4.96.2 #2 (Red
 Hat Linux)) id 1rMwYj-002NF7-2j; Mon, 08 Jan 2024 20:49:21 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
X-Inumbo-ID: a7ebb5d8-ae67-11ee-98ef-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=infradead.org; s=desiato.20200630; h=Sender:Content-Transfer-Encoding:
	MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:
	Reply-To:Content-Type:Content-ID:Content-Description;
	bh=vOPLDRs2pS03aFI3QKRuxfVdnOLMGUdP65R8Ofm4Hp4=; b=fryOhSDr3Sqtj/iGNQmSgoZC81
	0bGoir4uvuNgVOwYFL1sDLG0qL07aRdFpM5bAJLXRJnRMx9U3c4QlhYrfGIR0ZD8rzIod70oaH03m
	32JHaV5EZnpDyaapgbucMOXP0B4SNSnpc4ECIHxaJ403KFlc8VSyGhgbl9Ov+D8HDtwELOrzGF4H/
	ItyyGOTXfBcAilSezrmYxbybrVpmkvoj+/cBATGduER26ylWNBqZXNBMljk3KwcpPcFIx/nScB0CD
	6caPIW50TvBL5hpX6f7H+gU3MUsh5192cNfpYuPDZO/kTfzzbn8mkGjq6+Oq5MRyuGx/CIfzH0w3a
	9/f6TL/g==;
From: David Woodhouse <dwmw2@infradead.org>
To: qemu-devel@nongnu.org
Cc: Richard Henderson <richard.henderson@linaro.org>,
	Beniamino Galvani <b.galvani@gmail.com>,
	Peter Maydell <peter.maydell@linaro.org>,
	Strahinja Jankovic <strahinja.p.jankovic@gmail.com>,
	Niek Linnenbank <nieklinnenbank@gmail.com>,
	=?UTF-8?q?C=C3=A9dric=20Le=20Goater?= <clg@kaod.org>,
	Andrew Jeffery <andrew@codeconstruct.com.au>,
	Joel Stanley <joel@jms.id.au>,
	Igor Mitsyanko <i.mitsyanko@gmail.com>,
	Jean-Christophe Dubois <jcd@tribudubois.net>,
	Andrey Smirnov <andrew.smirnov@gmail.com>,
	=?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= <philmd@linaro.org>,
	Rob Herring <robh@kernel.org>,
	Subbaraya Sundeep <sundeep.lkml@gmail.com>,
	Jan Kiszka <jan.kiszka@web.de>,
	Tyrone Ting <kfting@nuvoton.com>,
	Hao Wu <wuhaotsh@google.com>,
	Radoslaw Biernacki <rad@semihalf.com>,
	Leif Lindholm <quic_llindhol@quicinc.com>,
	Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org>,
	"Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
	Alistair Francis <alistair@alistair23.me>,
	Helge Deller <deller@gmx.de>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Eduardo Habkost <eduardo@habkost.net>,
	"Michael S. Tsirkin" <mst@redhat.com>,
	Marcel Apfelbaum <marcel.apfelbaum@gmail.com>,
	Song Gao <gaosong@loongson.cn>,
	Thomas Huth <huth@tuxfamily.org>,
	Laurent Vivier <laurent@vivier.eu>,
	Huacai Chen <chenhuacai@kernel.org>,
	Jiaxun Yang <jiaxun.yang@flygoat.com>,
	=?UTF-8?q?Herv=C3=A9=20Poussineau?= <hpoussin@reactos.org>,
	Aleksandar Rikalo <aleksandar.rikalo@syrmia.com>,
	Aurelien Jarno <aurelien@aurel32.net>,
	Jason Wang <jasowang@redhat.com>,
	Jia Liu <proljc@gmail.com>,
	Stafford Horne <shorne@gmail.com>,
	Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>,
	Nicholas Piggin <npiggin@gmail.com>,
	Daniel Henrique Barboza <danielhb413@gmail.com>,
	David Gibson <david@gibson.dropbear.id.au>,
	Harsh Prateek Bora <harshpb@linux.ibm.com>,
	Bin Meng <bin.meng@windriver.com>,
	Palmer Dabbelt <palmer@dabbelt.com>,
	Weiwei Li <liwei1518@gmail.com>,
	Liu Zhiwei <zhiwei_liu@linux.alibaba.com>,
	Halil Pasic <pasic@linux.ibm.com>,
	Christian Borntraeger <borntraeger@linux.ibm.com>,
	Eric Farman <farman@linux.ibm.com>,
	David Hildenbrand <david@redhat.com>,
	Ilya Leoshkevich <iii@linux.ibm.com>,
	Yoshinori Sato <ysato@users.sourceforge.jp>,
	Magnus Damm <magnus.damm@gmail.com>,
	Artyom Tarasenko <atar4qemu@gmail.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Anthony Perard <anthony.perard@citrix.com>,
	Paul Durrant <paul@xen.org>,
	Max Filippov <jcmvbkbc@gmail.com>,
	qemu-arm@nongnu.org,
	qemu-ppc@nongnu.org,
	qemu-riscv@nongnu.org,
	qemu-s390x@nongnu.org,
	xen-devel@lists.xenproject.org,
	David Woodhouse <dwmw@amazon.co.uk>
Subject: [PATCH v3 17/46] hw/ppc: use pci_init_nic_devices()
Date: Mon,  8 Jan 2024 20:26:46 +0000
Message-ID: <20240108204909.564514-18-dwmw2@infradead.org>
X-Mailer: git-send-email 2.41.0
In-Reply-To: <20240108204909.564514-1-dwmw2@infradead.org>
References: <20240108204909.564514-1-dwmw2@infradead.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Sender: David Woodhouse <dwmw2@infradead.org>
X-SRS-Rewrite: SMTP reverse-path rewritten from <dwmw2@infradead.org> by desiato.infradead.org. See http://www.infradead.org/rpr.html

From: David Woodhouse <dwmw@amazon.co.uk>

Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
---
 hw/ppc/e500.c          |  4 +---
 hw/ppc/mac_newworld.c  |  4 +---
 hw/ppc/mac_oldworld.c  |  4 +---
 hw/ppc/ppc440_bamboo.c | 14 +++++---------
 4 files changed, 8 insertions(+), 18 deletions(-)

diff --git a/hw/ppc/e500.c b/hw/ppc/e500.c
index 566f1200dd..3bd12b54ab 100644
--- a/hw/ppc/e500.c
+++ b/hw/ppc/e500.c
@@ -1079,9 +1079,7 @@ void ppce500_init(MachineState *machine)
 
     if (pci_bus) {
         /* Register network interfaces. */
-        for (i = 0; i < nb_nics; i++) {
-            pci_nic_init_nofail(&nd_table[i], pci_bus, mc->default_nic, NULL);
-        }
+        pci_init_nic_devices(pci_bus, mc->default_nic);
     }
 
     /* Register spinning region */
diff --git a/hw/ppc/mac_newworld.c b/hw/ppc/mac_newworld.c
index 535710314a..b36dbaf2b6 100644
--- a/hw/ppc/mac_newworld.c
+++ b/hw/ppc/mac_newworld.c
@@ -444,9 +444,7 @@ static void ppc_core99_init(MachineState *machine)
         graphic_depth = 15;
     }
 
-    for (i = 0; i < nb_nics; i++) {
-        pci_nic_init_nofail(&nd_table[i], pci_bus, mc->default_nic, NULL);
-    }
+    pci_init_nic_devices(pci_bus, mc->default_nic);
 
     /* The NewWorld NVRAM is not located in the MacIO device */
     if (kvm_enabled() && qemu_real_host_page_size() > 4096) {
diff --git a/hw/ppc/mac_oldworld.c b/hw/ppc/mac_oldworld.c
index 9acc7adfc9..1981d3d8f6 100644
--- a/hw/ppc/mac_oldworld.c
+++ b/hw/ppc/mac_oldworld.c
@@ -277,9 +277,7 @@ static void ppc_heathrow_init(MachineState *machine)
 
     pci_vga_init(pci_bus);
 
-    for (i = 0; i < nb_nics; i++) {
-        pci_nic_init_nofail(&nd_table[i], pci_bus, mc->default_nic, NULL);
-    }
+    pci_init_nic_devices(pci_bus, mc->default_nic);
 
     /* MacIO IDE */
     ide_drive_get(hd, ARRAY_SIZE(hd));
diff --git a/hw/ppc/ppc440_bamboo.c b/hw/ppc/ppc440_bamboo.c
index a189942de4..c75c3083e6 100644
--- a/hw/ppc/ppc440_bamboo.c
+++ b/hw/ppc/ppc440_bamboo.c
@@ -161,7 +161,6 @@ static void bamboo_init(MachineState *machine)
     DeviceState *uicdev;
     SysBusDevice *uicsbd;
     int success;
-    int i;
 
     if (kvm_enabled()) {
         error_report("machine %s does not support the KVM accelerator",
@@ -234,14 +233,11 @@ static void bamboo_init(MachineState *machine)
     }
 
     if (pcibus) {
-        /* Register network interfaces. */
-        for (i = 0; i < nb_nics; i++) {
-            /*
-             * There are no PCI NICs on the Bamboo board, but there are
-             * PCI slots, so we can pick whatever default model we want.
-             */
-            pci_nic_init_nofail(&nd_table[i], pcibus, mc->default_nic, NULL);
-        }
+        /*
+         * There are no PCI NICs on the Bamboo board, but there are
+         * PCI slots, so we can pick whatever default model we want.
+         */
+        pci_init_nic_devices(pcibus, mc->default_nic);
     }
 
     /* Load kernel. */
-- 
2.41.0



From xen-devel-bounces@lists.xenproject.org Mon Jan 08 21:14:15 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 08 Jan 2024 21:14:15 +0000
Received: from list by lists.xenproject.org with outflank-mailman.664078.1034216 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMwwp-00036F-7T; Mon, 08 Jan 2024 21:14:15 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 664078.1034216; Mon, 08 Jan 2024 21:14:15 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMwwp-000368-4V; Mon, 08 Jan 2024 21:14:15 +0000
Received: by outflank-mailman (input) for mailman id 664078;
 Mon, 08 Jan 2024 21:14:13 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=CNLN=IS=desiato.srs.infradead.org=BATV+a33e3d7a5f0474923369+7442+infradead.org+dwmw2@srs-se1.protection.inumbo.net>)
 id 1rMwaj-0000R5-AD
 for xen-devel@lists.xenproject.org; Mon, 08 Jan 2024 20:51:25 +0000
Received: from desiato.infradead.org (desiato.infradead.org
 [2001:8b0:10b:1:d65d:64ff:fe57:4e05])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id ac861e9a-ae67-11ee-98ef-6d05b1d4d9a1;
 Mon, 08 Jan 2024 21:51:19 +0100 (CET)
Received: from [2001:8b0:10b:1::ebe] (helo=i7.infradead.org)
 by desiato.infradead.org with esmtpsa (Exim 4.96 #2 (Red Hat Linux))
 id 1rMwYm-007wY2-0K; Mon, 08 Jan 2024 20:49:24 +0000
Received: from dwoodhou by i7.infradead.org with local (Exim 4.96.2 #2 (Red
 Hat Linux)) id 1rMwYl-002NH0-23; Mon, 08 Jan 2024 20:49:23 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
X-Inumbo-ID: ac861e9a-ae67-11ee-98ef-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=infradead.org; s=desiato.20200630; h=Sender:Content-Transfer-Encoding:
	MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:
	Reply-To:Content-Type:Content-ID:Content-Description;
	bh=apktM3rQhqJT/gPdzzrEkhVTg4OW0ilv1ws3zHsGmXQ=; b=f5E8BtrWl0Oi9+DI39I39oIRpP
	rRDUHBUwPpvktpzzw9rTpGQNHL9MgQykQr5OwSCDg+RnjTMxky3qb/VBl2Few1nWUrwYqpreNWf8h
	BUPA/iYnHBul1TWdzNxl00o3hkG7FewYMX4O4NOJJVb0cECNwBfnrtZMr0SUBQNzQLg6jDhhcCKJ+
	UzMGARSFcO311sRBWcSYexrdPs6sr1ek4+TRJr5MYHmyGh6axYw++gap3DTQkmud5eVMqRaA9Jo/3
	AJOsNX0pT3DXRw1t3TIHE5QR+MCf20OVWT/3euGBbUPwEqChZ6IYdT+4EhO4QJqK9NYMWkMbozWCb
	usoYhQ1A==;
From: David Woodhouse <dwmw2@infradead.org>
To: qemu-devel@nongnu.org
Cc: Richard Henderson <richard.henderson@linaro.org>,
	Beniamino Galvani <b.galvani@gmail.com>,
	Peter Maydell <peter.maydell@linaro.org>,
	Strahinja Jankovic <strahinja.p.jankovic@gmail.com>,
	Niek Linnenbank <nieklinnenbank@gmail.com>,
	=?UTF-8?q?C=C3=A9dric=20Le=20Goater?= <clg@kaod.org>,
	Andrew Jeffery <andrew@codeconstruct.com.au>,
	Joel Stanley <joel@jms.id.au>,
	Igor Mitsyanko <i.mitsyanko@gmail.com>,
	Jean-Christophe Dubois <jcd@tribudubois.net>,
	Andrey Smirnov <andrew.smirnov@gmail.com>,
	=?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= <philmd@linaro.org>,
	Rob Herring <robh@kernel.org>,
	Subbaraya Sundeep <sundeep.lkml@gmail.com>,
	Jan Kiszka <jan.kiszka@web.de>,
	Tyrone Ting <kfting@nuvoton.com>,
	Hao Wu <wuhaotsh@google.com>,
	Radoslaw Biernacki <rad@semihalf.com>,
	Leif Lindholm <quic_llindhol@quicinc.com>,
	Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org>,
	"Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
	Alistair Francis <alistair@alistair23.me>,
	Helge Deller <deller@gmx.de>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Eduardo Habkost <eduardo@habkost.net>,
	"Michael S. Tsirkin" <mst@redhat.com>,
	Marcel Apfelbaum <marcel.apfelbaum@gmail.com>,
	Song Gao <gaosong@loongson.cn>,
	Thomas Huth <huth@tuxfamily.org>,
	Laurent Vivier <laurent@vivier.eu>,
	Huacai Chen <chenhuacai@kernel.org>,
	Jiaxun Yang <jiaxun.yang@flygoat.com>,
	=?UTF-8?q?Herv=C3=A9=20Poussineau?= <hpoussin@reactos.org>,
	Aleksandar Rikalo <aleksandar.rikalo@syrmia.com>,
	Aurelien Jarno <aurelien@aurel32.net>,
	Jason Wang <jasowang@redhat.com>,
	Jia Liu <proljc@gmail.com>,
	Stafford Horne <shorne@gmail.com>,
	Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>,
	Nicholas Piggin <npiggin@gmail.com>,
	Daniel Henrique Barboza <danielhb413@gmail.com>,
	David Gibson <david@gibson.dropbear.id.au>,
	Harsh Prateek Bora <harshpb@linux.ibm.com>,
	Bin Meng <bin.meng@windriver.com>,
	Palmer Dabbelt <palmer@dabbelt.com>,
	Weiwei Li <liwei1518@gmail.com>,
	Liu Zhiwei <zhiwei_liu@linux.alibaba.com>,
	Halil Pasic <pasic@linux.ibm.com>,
	Christian Borntraeger <borntraeger@linux.ibm.com>,
	Eric Farman <farman@linux.ibm.com>,
	David Hildenbrand <david@redhat.com>,
	Ilya Leoshkevich <iii@linux.ibm.com>,
	Yoshinori Sato <ysato@users.sourceforge.jp>,
	Magnus Damm <magnus.damm@gmail.com>,
	Artyom Tarasenko <atar4qemu@gmail.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Anthony Perard <anthony.perard@citrix.com>,
	Paul Durrant <paul@xen.org>,
	Max Filippov <jcmvbkbc@gmail.com>,
	qemu-arm@nongnu.org,
	qemu-ppc@nongnu.org,
	qemu-riscv@nongnu.org,
	qemu-s390x@nongnu.org,
	xen-devel@lists.xenproject.org,
	David Woodhouse <dwmw@amazon.co.uk>
Subject: [PATCH v3 41/46] hw/sparc/sun4m: use qemu_find_nic_info()
Date: Mon,  8 Jan 2024 20:27:10 +0000
Message-ID: <20240108204909.564514-42-dwmw2@infradead.org>
X-Mailer: git-send-email 2.41.0
In-Reply-To: <20240108204909.564514-1-dwmw2@infradead.org>
References: <20240108204909.564514-1-dwmw2@infradead.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Sender: David Woodhouse <dwmw2@infradead.org>
X-SRS-Rewrite: SMTP reverse-path rewritten from <dwmw2@infradead.org> by desiato.infradead.org. See http://www.infradead.org/rpr.html

From: David Woodhouse <dwmw@amazon.co.uk>

Obtain the MAC address from the NIC configuration if there is one, or
generate one explicitly so that it can be placed in the PROM.

Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
---
 hw/sparc/sun4m.c | 20 ++++++++++++++------
 1 file changed, 14 insertions(+), 6 deletions(-)

diff --git a/hw/sparc/sun4m.c b/hw/sparc/sun4m.c
index 550af01690..e782c8ec7a 100644
--- a/hw/sparc/sun4m.c
+++ b/hw/sparc/sun4m.c
@@ -299,13 +299,15 @@ static void *iommu_init(hwaddr addr, uint32_t version, qemu_irq irq)
 
 static void *sparc32_dma_init(hwaddr dma_base,
                               hwaddr esp_base, qemu_irq espdma_irq,
-                              hwaddr le_base, qemu_irq ledma_irq, NICInfo *nd)
+                              hwaddr le_base, qemu_irq ledma_irq,
+                              MACAddr *mac)
 {
     DeviceState *dma;
     ESPDMADeviceState *espdma;
     LEDMADeviceState *ledma;
     SysBusESPState *esp;
     SysBusPCNetState *lance;
+    NICInfo *nd = qemu_find_nic_info("lance", true, NULL);
 
     dma = qdev_new(TYPE_SPARC32_DMA);
     espdma = SPARC32_ESPDMA_DEVICE(object_resolve_path_component(
@@ -320,7 +322,14 @@ static void *sparc32_dma_init(hwaddr dma_base,
 
     lance = SYSBUS_PCNET(object_resolve_path_component(
                          OBJECT(ledma), "lance"));
-    qdev_set_nic_properties(DEVICE(lance), nd);
+
+    if (nd) {
+        qdev_set_nic_properties(DEVICE(lance), nd);
+        memcpy(mac->a, nd->macaddr.a, sizeof(mac->a));
+    } else {
+        qemu_macaddr_default_if_unset(mac);
+        qdev_prop_set_macaddr(DEVICE(lance), "mac", mac->a);
+    }
 
     sysbus_realize_and_unref(SYS_BUS_DEVICE(dma), &error_fatal);
     sysbus_mmio_map(SYS_BUS_DEVICE(dma), 0, dma_base);
@@ -823,7 +832,7 @@ static void sun4m_hw_init(MachineState *machine)
     unsigned int smp_cpus = machine->smp.cpus;
     unsigned int max_cpus = machine->smp.max_cpus;
     HostMemoryBackend *ram_memdev = machine->memdev;
-    NICInfo *nd = &nd_table[0];
+    MACAddr hostid;
 
     if (machine->ram_size > hwdef->max_mem) {
         error_report("Too much memory for this machine: %" PRId64 ","
@@ -884,10 +893,9 @@ static void sun4m_hw_init(MachineState *machine)
                         hwdef->iommu_pad_base, hwdef->iommu_pad_len);
     }
 
-    qemu_check_nic_model(nd, TYPE_LANCE);
     sparc32_dma_init(hwdef->dma_base,
                      hwdef->esp_base, slavio_irq[18],
-                     hwdef->le_base, slavio_irq[16], nd);
+                     hwdef->le_base, slavio_irq[16], &hostid);
 
     if (graphic_depth != 8 && graphic_depth != 24) {
         error_report("Unsupported depth: %d", graphic_depth);
@@ -1039,7 +1047,7 @@ static void sun4m_hw_init(MachineState *machine)
                                     machine->initrd_filename,
                                     machine->ram_size, &initrd_size);
 
-    nvram_init(nvram, (uint8_t *)&nd->macaddr, machine->kernel_cmdline,
+    nvram_init(nvram, hostid.a, machine->kernel_cmdline,
                machine->boot_config.order, machine->ram_size, kernel_size,
                graphic_width, graphic_height, graphic_depth,
                hwdef->nvram_machine_id, "Sun4m");
-- 
2.41.0



From xen-devel-bounces@lists.xenproject.org Mon Jan 08 21:14:26 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 08 Jan 2024 21:14:26 +0000
Received: from list by lists.xenproject.org with outflank-mailman.664082.1034226 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMwwz-0003Rr-Dx; Mon, 08 Jan 2024 21:14:25 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 664082.1034226; Mon, 08 Jan 2024 21:14:25 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMwwz-0003Ri-BE; Mon, 08 Jan 2024 21:14:25 +0000
Received: by outflank-mailman (input) for mailman id 664082;
 Mon, 08 Jan 2024 21:14:23 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=CNLN=IS=desiato.srs.infradead.org=BATV+a33e3d7a5f0474923369+7442+infradead.org+dwmw2@srs-se1.protection.inumbo.net>)
 id 1rMwaZ-0000R6-HH
 for xen-devel@lists.xenproject.org; Mon, 08 Jan 2024 20:51:15 +0000
Received: from desiato.infradead.org (desiato.infradead.org
 [2001:8b0:10b:1:d65d:64ff:fe57:4e05])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id a7eac81c-ae67-11ee-9b0f-b553b5be7939;
 Mon, 08 Jan 2024 21:51:11 +0100 (CET)
Received: from [2001:8b0:10b:1::ebe] (helo=i7.infradead.org)
 by desiato.infradead.org with esmtpsa (Exim 4.96 #2 (Red Hat Linux))
 id 1rMwYm-007wXt-0F; Mon, 08 Jan 2024 20:49:24 +0000
Received: from dwoodhou by i7.infradead.org with local (Exim 4.96.2 #2 (Red
 Hat Linux)) id 1rMwYl-002NGd-0y; Mon, 08 Jan 2024 20:49:23 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
X-Inumbo-ID: a7eac81c-ae67-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=infradead.org; s=desiato.20200630; h=Sender:Content-Transfer-Encoding:
	MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:
	Reply-To:Content-Type:Content-ID:Content-Description;
	bh=fKzSEAzycsDrEiPWFhQoNqX9JuE8mZwP1mZzqxeZRVI=; b=heBk2HKstNixMCfGHrZOPLntIm
	3ER50x76sGFR2x/zM4Mdza3n/WZnJmR281mpL1waE6lKWCg4EGMPULgiMZDSOgSE5jEjG7O5BYpL5
	HPZF+v/DR9iBzkk7Rvd8f6AFxXoCJqlQSj5nfYekAsuL6wKs8mcZo/HvpRqcpeLT3Sg8wKV0euy8D
	MCyQ8ppYR8RIsBhycfsDqXle4/codF94H9ZCTKDfsqVlzP3RYLTfLPgJv4acCK5aORbytCwpsTAFq
	WF9F9NnrT/Iq0HqCfj/UIEYOXmtnOwbO7RzGBrfHRrGm5VL95TMhN64sMRjIsBT+OWZM4QMdqcIl9
	jV/d1MGA==;
From: David Woodhouse <dwmw2@infradead.org>
To: qemu-devel@nongnu.org
Cc: Richard Henderson <richard.henderson@linaro.org>,
	Beniamino Galvani <b.galvani@gmail.com>,
	Peter Maydell <peter.maydell@linaro.org>,
	Strahinja Jankovic <strahinja.p.jankovic@gmail.com>,
	Niek Linnenbank <nieklinnenbank@gmail.com>,
	=?UTF-8?q?C=C3=A9dric=20Le=20Goater?= <clg@kaod.org>,
	Andrew Jeffery <andrew@codeconstruct.com.au>,
	Joel Stanley <joel@jms.id.au>,
	Igor Mitsyanko <i.mitsyanko@gmail.com>,
	Jean-Christophe Dubois <jcd@tribudubois.net>,
	Andrey Smirnov <andrew.smirnov@gmail.com>,
	=?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= <philmd@linaro.org>,
	Rob Herring <robh@kernel.org>,
	Subbaraya Sundeep <sundeep.lkml@gmail.com>,
	Jan Kiszka <jan.kiszka@web.de>,
	Tyrone Ting <kfting@nuvoton.com>,
	Hao Wu <wuhaotsh@google.com>,
	Radoslaw Biernacki <rad@semihalf.com>,
	Leif Lindholm <quic_llindhol@quicinc.com>,
	Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org>,
	"Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
	Alistair Francis <alistair@alistair23.me>,
	Helge Deller <deller@gmx.de>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Eduardo Habkost <eduardo@habkost.net>,
	"Michael S. Tsirkin" <mst@redhat.com>,
	Marcel Apfelbaum <marcel.apfelbaum@gmail.com>,
	Song Gao <gaosong@loongson.cn>,
	Thomas Huth <huth@tuxfamily.org>,
	Laurent Vivier <laurent@vivier.eu>,
	Huacai Chen <chenhuacai@kernel.org>,
	Jiaxun Yang <jiaxun.yang@flygoat.com>,
	=?UTF-8?q?Herv=C3=A9=20Poussineau?= <hpoussin@reactos.org>,
	Aleksandar Rikalo <aleksandar.rikalo@syrmia.com>,
	Aurelien Jarno <aurelien@aurel32.net>,
	Jason Wang <jasowang@redhat.com>,
	Jia Liu <proljc@gmail.com>,
	Stafford Horne <shorne@gmail.com>,
	Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>,
	Nicholas Piggin <npiggin@gmail.com>,
	Daniel Henrique Barboza <danielhb413@gmail.com>,
	David Gibson <david@gibson.dropbear.id.au>,
	Harsh Prateek Bora <harshpb@linux.ibm.com>,
	Bin Meng <bin.meng@windriver.com>,
	Palmer Dabbelt <palmer@dabbelt.com>,
	Weiwei Li <liwei1518@gmail.com>,
	Liu Zhiwei <zhiwei_liu@linux.alibaba.com>,
	Halil Pasic <pasic@linux.ibm.com>,
	Christian Borntraeger <borntraeger@linux.ibm.com>,
	Eric Farman <farman@linux.ibm.com>,
	David Hildenbrand <david@redhat.com>,
	Ilya Leoshkevich <iii@linux.ibm.com>,
	Yoshinori Sato <ysato@users.sourceforge.jp>,
	Magnus Damm <magnus.damm@gmail.com>,
	Artyom Tarasenko <atar4qemu@gmail.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Anthony Perard <anthony.perard@citrix.com>,
	Paul Durrant <paul@xen.org>,
	Max Filippov <jcmvbkbc@gmail.com>,
	qemu-arm@nongnu.org,
	qemu-ppc@nongnu.org,
	qemu-riscv@nongnu.org,
	qemu-s390x@nongnu.org,
	xen-devel@lists.xenproject.org,
	David Woodhouse <dwmw@amazon.co.uk>
Subject: [PATCH v3 36/46] hw/mips/jazz: use qemu_find_nic_info()
Date: Mon,  8 Jan 2024 20:27:05 +0000
Message-ID: <20240108204909.564514-37-dwmw2@infradead.org>
X-Mailer: git-send-email 2.41.0
In-Reply-To: <20240108204909.564514-1-dwmw2@infradead.org>
References: <20240108204909.564514-1-dwmw2@infradead.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Sender: David Woodhouse <dwmw2@infradead.org>
X-SRS-Rewrite: SMTP reverse-path rewritten from <dwmw2@infradead.org> by desiato.infradead.org. See http://www.infradead.org/rpr.html

From: David Woodhouse <dwmw@amazon.co.uk>

Extract the MAC address from the NICInfo, or generate one explicitly if
there was no corresponding NIC configuration, to put it in the PROM.

Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
---
 hw/mips/jazz.c | 15 +++++++--------
 1 file changed, 7 insertions(+), 8 deletions(-)

diff --git a/hw/mips/jazz.c b/hw/mips/jazz.c
index 0d2348aa5a..5bf3e328db 100644
--- a/hw/mips/jazz.c
+++ b/hw/mips/jazz.c
@@ -119,15 +119,19 @@ static const MemoryRegionOps dma_dummy_ops = {
     .endianness = DEVICE_NATIVE_ENDIAN,
 };
 
-static void mips_jazz_init_net(NICInfo *nd, IOMMUMemoryRegion *rc4030_dma_mr,
+static void mips_jazz_init_net(IOMMUMemoryRegion *rc4030_dma_mr,
                                DeviceState *rc4030, MemoryRegion *dp8393x_prom)
 {
     DeviceState *dev;
     SysBusDevice *sysbus;
     int checksum, i;
     uint8_t *prom;
+    NICInfo *nd;
 
-    qemu_check_nic_model(nd, "dp83932");
+    nd = qemu_find_nic_info("dp8393x", true, "dp82932");
+    if (!nd) {
+        return;
+    }
 
     dev = qdev_new("dp8393x");
     qdev_set_nic_properties(dev, nd);
@@ -324,12 +328,7 @@ static void mips_jazz_init(MachineState *machine,
     }
 
     /* Network controller */
-    if (nb_nics == 1) {
-        mips_jazz_init_net(&nd_table[0], rc4030_dma_mr, rc4030, dp8393x_prom);
-    } else if (nb_nics > 1) {
-        error_report("This machine only supports one NIC");
-        exit(1);
-    }
+    mips_jazz_init_net(rc4030_dma_mr, rc4030, dp8393x_prom);
 
     /* SCSI adapter */
     dev = qdev_new(TYPE_SYSBUS_ESP);
-- 
2.41.0



From xen-devel-bounces@lists.xenproject.org Mon Jan 08 21:14:37 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 08 Jan 2024 21:14:37 +0000
Received: from list by lists.xenproject.org with outflank-mailman.664084.1034236 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMwxA-0003uV-SM; Mon, 08 Jan 2024 21:14:36 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 664084.1034236; Mon, 08 Jan 2024 21:14:36 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMwxA-0003uO-PH; Mon, 08 Jan 2024 21:14:36 +0000
Received: by outflank-mailman (input) for mailman id 664084;
 Mon, 08 Jan 2024 21:14:36 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=NrlO=IS=casper.srs.infradead.org=BATV+41a72dc6539c0dfbbc31+7442+infradead.org+dwmw2@srs-se1.protection.inumbo.net>)
 id 1rMwaV-0000R6-9x
 for xen-devel@lists.xenproject.org; Mon, 08 Jan 2024 20:51:11 +0000
Received: from casper.infradead.org (casper.infradead.org
 [2001:8b0:10b:1236::1])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id a54de157-ae67-11ee-9b0f-b553b5be7939;
 Mon, 08 Jan 2024 21:51:07 +0100 (CET)
Received: from [2001:8b0:10b:1::ebe] (helo=i7.infradead.org)
 by casper.infradead.org with esmtpsa (Exim 4.94.2 #2 (Red Hat Linux))
 id 1rMwYi-008RPO-0H; Mon, 08 Jan 2024 20:49:21 +0000
Received: from dwoodhou by i7.infradead.org with local (Exim 4.96.2 #2 (Red
 Hat Linux)) id 1rMwYi-002NEB-22; Mon, 08 Jan 2024 20:49:20 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
X-Inumbo-ID: a54de157-ae67-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=infradead.org; s=casper.20170209; h=Sender:Content-Transfer-Encoding:
	MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:
	Reply-To:Content-Type:Content-ID:Content-Description;
	bh=cethWUh/RWDV/5OHSmNNy/kAHmyOEuR7joLxV258gbE=; b=UWpFdiGnLNbiORgtAtG7p/WIdU
	nqFdfmvFAt8+yDpmkAnslA8FXZL1a921R8Kdz47iQJ7f17BTPcH4js6e2TxfDyTYvHNY1vVjWpW+m
	Whc4h/FvtK2nvQOQsjYX3o41E5/ptjCAznwTkiO6CNzrlCyTe0eHM75LZR6L5bXa62NGM8JbcGUiG
	nXsZwYmZ5A1JpV8dCV4PEggRIKS2aDRX8EC3nqa6ZIAI3ndlm5P39xBy+k5aD+gzf0mL8IjBKgRx5
	Ikfo9pWQAFrvpUXLgIHi4y8C+yztqZohoFPmmZ09XXK8DdZpROKs9MJnq6Y8exAPocL+bH4EWAJFd
	D2vqX0yA==;
From: David Woodhouse <dwmw2@infradead.org>
To: qemu-devel@nongnu.org
Cc: Richard Henderson <richard.henderson@linaro.org>,
	Beniamino Galvani <b.galvani@gmail.com>,
	Peter Maydell <peter.maydell@linaro.org>,
	Strahinja Jankovic <strahinja.p.jankovic@gmail.com>,
	Niek Linnenbank <nieklinnenbank@gmail.com>,
	=?UTF-8?q?C=C3=A9dric=20Le=20Goater?= <clg@kaod.org>,
	Andrew Jeffery <andrew@codeconstruct.com.au>,
	Joel Stanley <joel@jms.id.au>,
	Igor Mitsyanko <i.mitsyanko@gmail.com>,
	Jean-Christophe Dubois <jcd@tribudubois.net>,
	Andrey Smirnov <andrew.smirnov@gmail.com>,
	=?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= <philmd@linaro.org>,
	Rob Herring <robh@kernel.org>,
	Subbaraya Sundeep <sundeep.lkml@gmail.com>,
	Jan Kiszka <jan.kiszka@web.de>,
	Tyrone Ting <kfting@nuvoton.com>,
	Hao Wu <wuhaotsh@google.com>,
	Radoslaw Biernacki <rad@semihalf.com>,
	Leif Lindholm <quic_llindhol@quicinc.com>,
	Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org>,
	"Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
	Alistair Francis <alistair@alistair23.me>,
	Helge Deller <deller@gmx.de>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Eduardo Habkost <eduardo@habkost.net>,
	"Michael S. Tsirkin" <mst@redhat.com>,
	Marcel Apfelbaum <marcel.apfelbaum@gmail.com>,
	Song Gao <gaosong@loongson.cn>,
	Thomas Huth <huth@tuxfamily.org>,
	Laurent Vivier <laurent@vivier.eu>,
	Huacai Chen <chenhuacai@kernel.org>,
	Jiaxun Yang <jiaxun.yang@flygoat.com>,
	=?UTF-8?q?Herv=C3=A9=20Poussineau?= <hpoussin@reactos.org>,
	Aleksandar Rikalo <aleksandar.rikalo@syrmia.com>,
	Aurelien Jarno <aurelien@aurel32.net>,
	Jason Wang <jasowang@redhat.com>,
	Jia Liu <proljc@gmail.com>,
	Stafford Horne <shorne@gmail.com>,
	Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>,
	Nicholas Piggin <npiggin@gmail.com>,
	Daniel Henrique Barboza <danielhb413@gmail.com>,
	David Gibson <david@gibson.dropbear.id.au>,
	Harsh Prateek Bora <harshpb@linux.ibm.com>,
	Bin Meng <bin.meng@windriver.com>,
	Palmer Dabbelt <palmer@dabbelt.com>,
	Weiwei Li <liwei1518@gmail.com>,
	Liu Zhiwei <zhiwei_liu@linux.alibaba.com>,
	Halil Pasic <pasic@linux.ibm.com>,
	Christian Borntraeger <borntraeger@linux.ibm.com>,
	Eric Farman <farman@linux.ibm.com>,
	David Hildenbrand <david@redhat.com>,
	Ilya Leoshkevich <iii@linux.ibm.com>,
	Yoshinori Sato <ysato@users.sourceforge.jp>,
	Magnus Damm <magnus.damm@gmail.com>,
	Artyom Tarasenko <atar4qemu@gmail.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Anthony Perard <anthony.perard@citrix.com>,
	Paul Durrant <paul@xen.org>,
	Max Filippov <jcmvbkbc@gmail.com>,
	qemu-arm@nongnu.org,
	qemu-ppc@nongnu.org,
	qemu-riscv@nongnu.org,
	qemu-s390x@nongnu.org,
	xen-devel@lists.xenproject.org,
	David Woodhouse <dwmw@amazon.co.uk>
Subject: [PATCH v3 04/46] hw/pci: add pci_init_nic_devices(), pci_init_nic_in_slot()
Date: Mon,  8 Jan 2024 20:26:33 +0000
Message-ID: <20240108204909.564514-5-dwmw2@infradead.org>
X-Mailer: git-send-email 2.41.0
In-Reply-To: <20240108204909.564514-1-dwmw2@infradead.org>
References: <20240108204909.564514-1-dwmw2@infradead.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Sender: David Woodhouse <dwmw2@infradead.org>
X-SRS-Rewrite: SMTP reverse-path rewritten from <dwmw2@infradead.org> by casper.infradead.org. See http://www.infradead.org/rpr.html

From: David Woodhouse <dwmw@amazon.co.uk>

The loop over nd_table[] to add PCI NICs is repeated in quite a few
places. Add a helper function to do it.

Some platforms also try to instantiate a specific model in a specific
slot, to match the real hardware. Add pci_init_nic_in_slot() for that
purpose.

Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
Reviewed-by: Paul Durrant <paul@xen.org>
---
 hw/pci/pci.c         | 45 ++++++++++++++++++++++++++++++++++++++++++++
 include/hw/pci/pci.h |  4 +++-
 2 files changed, 48 insertions(+), 1 deletion(-)

diff --git a/hw/pci/pci.c b/hw/pci/pci.c
index 76080af580..5849606f66 100644
--- a/hw/pci/pci.c
+++ b/hw/pci/pci.c
@@ -1925,6 +1925,51 @@ PCIDevice *pci_nic_init_nofail(NICInfo *nd, PCIBus *rootbus,
     return pci_dev;
 }
 
+void pci_init_nic_devices(PCIBus *bus, const char *default_model)
+{
+    qemu_create_nic_bus_devices(&bus->qbus, TYPE_PCI_DEVICE, default_model,
+                                "virtio", "virtio-net-pci");
+}
+
+bool pci_init_nic_in_slot(PCIBus *rootbus, const char *model,
+                          const char *alias, const char *devaddr)
+{
+    NICInfo *nd = qemu_find_nic_info(model, true, alias);
+    int dom, busnr, devfn;
+    PCIDevice *pci_dev;
+    unsigned slot;
+    PCIBus *bus;
+
+    if (!nd) {
+        return false;
+    }
+
+    if (!devaddr || pci_parse_devaddr(devaddr, &dom, &busnr, &slot, NULL) < 0) {
+        error_report("Invalid PCI device address %s for device %s",
+                     devaddr, model);
+        exit(1);
+    }
+
+    if (dom != 0) {
+        error_report("No support for non-zero PCI domains");
+        exit(1);
+    }
+
+    devfn = PCI_DEVFN(slot, 0);
+
+    bus = pci_find_bus_nr(rootbus, busnr);
+    if (!bus) {
+        error_report("Invalid PCI device address %s for device %s",
+                     devaddr, model);
+        exit(1);
+    }
+
+    pci_dev = pci_new(devfn, model);
+    qdev_set_nic_properties(&pci_dev->qdev, nd);
+    pci_realize_and_unref(pci_dev, bus, &error_fatal);
+    return true;
+}
+
 PCIDevice *pci_vga_init(PCIBus *bus)
 {
     vga_interface_created = true;
diff --git a/include/hw/pci/pci.h b/include/hw/pci/pci.h
index fa6313aabc..6ff0b95a02 100644
--- a/include/hw/pci/pci.h
+++ b/include/hw/pci/pci.h
@@ -317,7 +317,9 @@ void pci_device_reset(PCIDevice *dev);
 PCIDevice *pci_nic_init_nofail(NICInfo *nd, PCIBus *rootbus,
                                const char *default_model,
                                const char *default_devaddr);
-
+void pci_init_nic_devices(PCIBus *bus, const char *default_model);
+bool pci_init_nic_in_slot(PCIBus *rootbus, const char *default_model,
+                          const char *alias, const char *devaddr);
 PCIDevice *pci_vga_init(PCIBus *bus);
 
 static inline PCIBus *pci_get_bus(const PCIDevice *dev)
-- 
2.41.0



From xen-devel-bounces@lists.xenproject.org Mon Jan 08 21:14:45 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 08 Jan 2024 21:14:45 +0000
Received: from list by lists.xenproject.org with outflank-mailman.664087.1034246 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMwxJ-0004Ub-3l; Mon, 08 Jan 2024 21:14:45 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 664087.1034246; Mon, 08 Jan 2024 21:14:45 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMwxJ-0004UQ-0T; Mon, 08 Jan 2024 21:14:45 +0000
Received: by outflank-mailman (input) for mailman id 664087;
 Mon, 08 Jan 2024 21:14:43 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=CNLN=IS=desiato.srs.infradead.org=BATV+a33e3d7a5f0474923369+7442+infradead.org+dwmw2@srs-se1.protection.inumbo.net>)
 id 1rMwap-0000R6-Fp
 for xen-devel@lists.xenproject.org; Mon, 08 Jan 2024 20:51:31 +0000
Received: from desiato.infradead.org (desiato.infradead.org
 [2001:8b0:10b:1:d65d:64ff:fe57:4e05])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id b20ccb88-ae67-11ee-9b0f-b553b5be7939;
 Mon, 08 Jan 2024 21:51:28 +0100 (CET)
Received: from [2001:8b0:10b:1::ebe] (helo=i7.infradead.org)
 by desiato.infradead.org with esmtpsa (Exim 4.96 #2 (Red Hat Linux))
 id 1rMwYi-007wXH-2u; Mon, 08 Jan 2024 20:49:21 +0000
Received: from dwoodhou by i7.infradead.org with local (Exim 4.96.2 #2 (Red
 Hat Linux)) id 1rMwYi-002NDx-1F; Mon, 08 Jan 2024 20:49:20 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
X-Inumbo-ID: b20ccb88-ae67-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=infradead.org; s=desiato.20200630; h=Sender:Content-Transfer-Encoding:
	MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:
	Reply-To:Content-Type:Content-ID:Content-Description;
	bh=mtEQ8glNGSSFRzQhjtP//D2DZrP1dRqKKnCW34ZZatU=; b=iwPMC3kkBzvkOv0oX7txfpHzxj
	Sd/Kwpy6LHNzbQF3U73tK9x6IqOIVXoxSpVC41lmoGleN7vzHitOUVXyuKD3Kym8xZAfMk5h5yMax
	/47F2INodkK8AZaWUD8oRUvHz7GwGnKBbZ+prHuzJGhyfqT8TS26tCCLYZj38z0JymIu7s7TXpCfS
	d0I5UL4dXBue3LvnuPFyH38JkWDjYeV7WIAXbDRHGNt2mbzdAgE0fTWfXlKLBu3pRRvZpZag7wPU+
	ALteFXAYMiXzOXAuoOnbqhaSYwTK4OtiztO+wfQaYLUORHoOqRQn0vvgAeTBD4JSCtzzMa/o1Wc5b
	cQPmhInQ==;
From: David Woodhouse <dwmw2@infradead.org>
To: qemu-devel@nongnu.org
Cc: Richard Henderson <richard.henderson@linaro.org>,
	Beniamino Galvani <b.galvani@gmail.com>,
	Peter Maydell <peter.maydell@linaro.org>,
	Strahinja Jankovic <strahinja.p.jankovic@gmail.com>,
	Niek Linnenbank <nieklinnenbank@gmail.com>,
	=?UTF-8?q?C=C3=A9dric=20Le=20Goater?= <clg@kaod.org>,
	Andrew Jeffery <andrew@codeconstruct.com.au>,
	Joel Stanley <joel@jms.id.au>,
	Igor Mitsyanko <i.mitsyanko@gmail.com>,
	Jean-Christophe Dubois <jcd@tribudubois.net>,
	Andrey Smirnov <andrew.smirnov@gmail.com>,
	=?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= <philmd@linaro.org>,
	Rob Herring <robh@kernel.org>,
	Subbaraya Sundeep <sundeep.lkml@gmail.com>,
	Jan Kiszka <jan.kiszka@web.de>,
	Tyrone Ting <kfting@nuvoton.com>,
	Hao Wu <wuhaotsh@google.com>,
	Radoslaw Biernacki <rad@semihalf.com>,
	Leif Lindholm <quic_llindhol@quicinc.com>,
	Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org>,
	"Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
	Alistair Francis <alistair@alistair23.me>,
	Helge Deller <deller@gmx.de>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Eduardo Habkost <eduardo@habkost.net>,
	"Michael S. Tsirkin" <mst@redhat.com>,
	Marcel Apfelbaum <marcel.apfelbaum@gmail.com>,
	Song Gao <gaosong@loongson.cn>,
	Thomas Huth <huth@tuxfamily.org>,
	Laurent Vivier <laurent@vivier.eu>,
	Huacai Chen <chenhuacai@kernel.org>,
	Jiaxun Yang <jiaxun.yang@flygoat.com>,
	=?UTF-8?q?Herv=C3=A9=20Poussineau?= <hpoussin@reactos.org>,
	Aleksandar Rikalo <aleksandar.rikalo@syrmia.com>,
	Aurelien Jarno <aurelien@aurel32.net>,
	Jason Wang <jasowang@redhat.com>,
	Jia Liu <proljc@gmail.com>,
	Stafford Horne <shorne@gmail.com>,
	Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>,
	Nicholas Piggin <npiggin@gmail.com>,
	Daniel Henrique Barboza <danielhb413@gmail.com>,
	David Gibson <david@gibson.dropbear.id.au>,
	Harsh Prateek Bora <harshpb@linux.ibm.com>,
	Bin Meng <bin.meng@windriver.com>,
	Palmer Dabbelt <palmer@dabbelt.com>,
	Weiwei Li <liwei1518@gmail.com>,
	Liu Zhiwei <zhiwei_liu@linux.alibaba.com>,
	Halil Pasic <pasic@linux.ibm.com>,
	Christian Borntraeger <borntraeger@linux.ibm.com>,
	Eric Farman <farman@linux.ibm.com>,
	David Hildenbrand <david@redhat.com>,
	Ilya Leoshkevich <iii@linux.ibm.com>,
	Yoshinori Sato <ysato@users.sourceforge.jp>,
	Magnus Damm <magnus.damm@gmail.com>,
	Artyom Tarasenko <atar4qemu@gmail.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Anthony Perard <anthony.perard@citrix.com>,
	Paul Durrant <paul@xen.org>,
	Max Filippov <jcmvbkbc@gmail.com>,
	qemu-arm@nongnu.org,
	qemu-ppc@nongnu.org,
	qemu-riscv@nongnu.org,
	qemu-s390x@nongnu.org,
	xen-devel@lists.xenproject.org,
	David Woodhouse <dwmw@amazon.co.uk>
Subject: [PATCH v3 01/46] net: add qemu_{configure,create}_nic_device(), qemu_find_nic_info()
Date: Mon,  8 Jan 2024 20:26:30 +0000
Message-ID: <20240108204909.564514-2-dwmw2@infradead.org>
X-Mailer: git-send-email 2.41.0
In-Reply-To: <20240108204909.564514-1-dwmw2@infradead.org>
References: <20240108204909.564514-1-dwmw2@infradead.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Sender: David Woodhouse <dwmw2@infradead.org>
X-SRS-Rewrite: SMTP reverse-path rewritten from <dwmw2@infradead.org> by desiato.infradead.org. See http://www.infradead.org/rpr.html

From: David Woodhouse <dwmw@amazon.co.uk>

Most code which directly accesses nd_table[] and nb_nics uses them for
one of two things. Either "I have created a NIC device and I'd like a
configuration for it", or "I will create a NIC device *if* there is a
configuration for it".  With some variants on the theme around whether
they actually *check* if the model specified in the configuration is
the right one.

Provide functions which perform both of those, allowing platforms to
be a little more consistent and as a step towards making nd_table[]
and nb_nics private to the net code.

Also export the qemu_find_nic_info() helper, as some platforms have
special cases they need to handle.

Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
Reviewed-by: Paul Durrant <paul@xen.org>
---
 include/net/net.h |  7 ++++++-
 net/net.c         | 51 +++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 57 insertions(+), 1 deletion(-)

diff --git a/include/net/net.h b/include/net/net.h
index ffbd2c8d56..25ea83fd12 100644
--- a/include/net/net.h
+++ b/include/net/net.h
@@ -207,7 +207,12 @@ int qemu_show_nic_models(const char *arg, const char *const *models);
 void qemu_check_nic_model(NICInfo *nd, const char *model);
 int qemu_find_nic_model(NICInfo *nd, const char * const *models,
                         const char *default_model);
-
+NICInfo *qemu_find_nic_info(const char *typename, bool match_default,
+                            const char *alias);
+bool qemu_configure_nic_device(DeviceState *dev, bool match_default,
+                               const char *alias);
+DeviceState *qemu_create_nic_device(const char *typename, bool match_default,
+                                    const char *alias);
 void print_net_client(Monitor *mon, NetClientState *nc);
 void net_socket_rs_init(SocketReadState *rs,
                         SocketReadStateFinalize *finalize,
diff --git a/net/net.c b/net/net.c
index 0520bc1681..aeb7f573fc 100644
--- a/net/net.c
+++ b/net/net.c
@@ -1087,6 +1087,57 @@ static int net_init_nic(const Netdev *netdev, const char *name,
     return idx;
 }
 
+NICInfo *qemu_find_nic_info(const char *typename, bool match_default,
+                            const char *alias)
+{
+    NICInfo *nd;
+    int i;
+
+    for (i = 0; i < nb_nics; i++) {
+        nd = &nd_table[i];
+
+        if (!nd->used || nd->instantiated) {
+            continue;
+        }
+
+        if ((match_default && !nd->model) || !g_strcmp0(nd->model, typename)
+            || (alias && !g_strcmp0(nd->model, alias))) {
+            return nd;
+        }
+    }
+    return NULL;
+}
+
+
+/* "I have created a device. Please configure it if you can" */
+bool qemu_configure_nic_device(DeviceState *dev, bool match_default,
+                               const char *alias)
+{
+    NICInfo *nd = qemu_find_nic_info(object_get_typename(OBJECT(dev)),
+                                     match_default, alias);
+
+    if (nd) {
+        qdev_set_nic_properties(dev, nd);
+        return true;
+    }
+    return false;
+}
+
+/* "Please create a device, if you have a configuration for it" */
+DeviceState *qemu_create_nic_device(const char *typename, bool match_default,
+                                    const char *alias)
+{
+    NICInfo *nd = qemu_find_nic_info(typename, match_default, alias);
+    DeviceState *dev;
+
+    if (!nd) {
+        return NULL;
+    }
+
+    dev = qdev_new(typename);
+    qdev_set_nic_properties(dev, nd);
+    return dev;
+}
 
 static int (* const net_client_init_fun[NET_CLIENT_DRIVER__MAX])(
     const Netdev *netdev,
-- 
2.41.0



From xen-devel-bounces@lists.xenproject.org Mon Jan 08 21:15:04 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 08 Jan 2024 21:15:04 +0000
Received: from list by lists.xenproject.org with outflank-mailman.664093.1034255 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMwxZ-0005D6-Aq; Mon, 08 Jan 2024 21:15:01 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 664093.1034255; Mon, 08 Jan 2024 21:15:01 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMwxZ-0005Cn-7Q; Mon, 08 Jan 2024 21:15:01 +0000
Received: by outflank-mailman (input) for mailman id 664093;
 Mon, 08 Jan 2024 21:14:59 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=CNLN=IS=desiato.srs.infradead.org=BATV+a33e3d7a5f0474923369+7442+infradead.org+dwmw2@srs-se1.protection.inumbo.net>)
 id 1rMwan-0000R6-DE
 for xen-devel@lists.xenproject.org; Mon, 08 Jan 2024 20:51:29 +0000
Received: from desiato.infradead.org (desiato.infradead.org
 [2001:8b0:10b:1:d65d:64ff:fe57:4e05])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id b0ce5c26-ae67-11ee-9b0f-b553b5be7939;
 Mon, 08 Jan 2024 21:51:26 +0100 (CET)
Received: from [2001:8b0:10b:1::ebe] (helo=i7.infradead.org)
 by desiato.infradead.org with esmtpsa (Exim 4.96 #2 (Red Hat Linux))
 id 1rMwYm-007wXk-0J; Mon, 08 Jan 2024 20:49:53 +0000
Received: from dwoodhou by i7.infradead.org with local (Exim 4.96.2 #2 (Red
 Hat Linux)) id 1rMwYk-002NGB-36; Mon, 08 Jan 2024 20:49:22 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
X-Inumbo-ID: b0ce5c26-ae67-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=infradead.org; s=desiato.20200630; h=Sender:Content-Transfer-Encoding:
	MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:
	Reply-To:Content-Type:Content-ID:Content-Description;
	bh=oLriCfKbYL3o15M6kYDB7N5HJ+JVsRg5ZZIf/+DvLkY=; b=E9vGlnFdFf3HV6UJCMFj6OIPyv
	rvc5QUWb96PKjF6mE2I11Rl8ZWztiHGTr4ZIo7q12V0DCVEmsB60Ufi/rY1P+ELqqdgw3ToQmvV0X
	cYttlyf1jmO2+WsWSZdZ7OMTG4bD+BSU8Qf4eQRS4DJo5cC40Xy8tqBwTCmaDN4xvZFyFKaHyyj8/
	pqA/OmtEMtGz+uKiP4c8FlJKQlj8Ecj+bxfaDB9iLh1I5ekySmusMa5lce2qxre3ohO4Dcezwy1Jb
	vMi8U49juUa0PUhxK/s7aT/B+0nveV59uDjFWnSair7sFYf0YKlXdlkmfvfK5/M0k14WMZ/VUlvYI
	cFAbgGaQ==;
From: David Woodhouse <dwmw2@infradead.org>
To: qemu-devel@nongnu.org
Cc: Richard Henderson <richard.henderson@linaro.org>,
	Beniamino Galvani <b.galvani@gmail.com>,
	Peter Maydell <peter.maydell@linaro.org>,
	Strahinja Jankovic <strahinja.p.jankovic@gmail.com>,
	Niek Linnenbank <nieklinnenbank@gmail.com>,
	=?UTF-8?q?C=C3=A9dric=20Le=20Goater?= <clg@kaod.org>,
	Andrew Jeffery <andrew@codeconstruct.com.au>,
	Joel Stanley <joel@jms.id.au>,
	Igor Mitsyanko <i.mitsyanko@gmail.com>,
	Jean-Christophe Dubois <jcd@tribudubois.net>,
	Andrey Smirnov <andrew.smirnov@gmail.com>,
	=?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= <philmd@linaro.org>,
	Rob Herring <robh@kernel.org>,
	Subbaraya Sundeep <sundeep.lkml@gmail.com>,
	Jan Kiszka <jan.kiszka@web.de>,
	Tyrone Ting <kfting@nuvoton.com>,
	Hao Wu <wuhaotsh@google.com>,
	Radoslaw Biernacki <rad@semihalf.com>,
	Leif Lindholm <quic_llindhol@quicinc.com>,
	Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org>,
	"Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
	Alistair Francis <alistair@alistair23.me>,
	Helge Deller <deller@gmx.de>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Eduardo Habkost <eduardo@habkost.net>,
	"Michael S. Tsirkin" <mst@redhat.com>,
	Marcel Apfelbaum <marcel.apfelbaum@gmail.com>,
	Song Gao <gaosong@loongson.cn>,
	Thomas Huth <huth@tuxfamily.org>,
	Laurent Vivier <laurent@vivier.eu>,
	Huacai Chen <chenhuacai@kernel.org>,
	Jiaxun Yang <jiaxun.yang@flygoat.com>,
	=?UTF-8?q?Herv=C3=A9=20Poussineau?= <hpoussin@reactos.org>,
	Aleksandar Rikalo <aleksandar.rikalo@syrmia.com>,
	Aurelien Jarno <aurelien@aurel32.net>,
	Jason Wang <jasowang@redhat.com>,
	Jia Liu <proljc@gmail.com>,
	Stafford Horne <shorne@gmail.com>,
	Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>,
	Nicholas Piggin <npiggin@gmail.com>,
	Daniel Henrique Barboza <danielhb413@gmail.com>,
	David Gibson <david@gibson.dropbear.id.au>,
	Harsh Prateek Bora <harshpb@linux.ibm.com>,
	Bin Meng <bin.meng@windriver.com>,
	Palmer Dabbelt <palmer@dabbelt.com>,
	Weiwei Li <liwei1518@gmail.com>,
	Liu Zhiwei <zhiwei_liu@linux.alibaba.com>,
	Halil Pasic <pasic@linux.ibm.com>,
	Christian Borntraeger <borntraeger@linux.ibm.com>,
	Eric Farman <farman@linux.ibm.com>,
	David Hildenbrand <david@redhat.com>,
	Ilya Leoshkevich <iii@linux.ibm.com>,
	Yoshinori Sato <ysato@users.sourceforge.jp>,
	Magnus Damm <magnus.damm@gmail.com>,
	Artyom Tarasenko <atar4qemu@gmail.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Anthony Perard <anthony.perard@citrix.com>,
	Paul Durrant <paul@xen.org>,
	Max Filippov <jcmvbkbc@gmail.com>,
	qemu-arm@nongnu.org,
	qemu-ppc@nongnu.org,
	qemu-riscv@nongnu.org,
	qemu-s390x@nongnu.org,
	xen-devel@lists.xenproject.org,
	David Woodhouse <dwmw@amazon.co.uk>
Subject: [PATCH v3 31/46] hw/net/etraxfs-eth: use qemu_configure_nic_device()
Date: Mon,  8 Jan 2024 20:27:00 +0000
Message-ID: <20240108204909.564514-32-dwmw2@infradead.org>
X-Mailer: git-send-email 2.41.0
In-Reply-To: <20240108204909.564514-1-dwmw2@infradead.org>
References: <20240108204909.564514-1-dwmw2@infradead.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Sender: David Woodhouse <dwmw2@infradead.org>
X-SRS-Rewrite: SMTP reverse-path rewritten from <dwmw2@infradead.org> by desiato.infradead.org. See http://www.infradead.org/rpr.html

From: David Woodhouse <dwmw@amazon.co.uk>

Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
---
 hw/cris/axis_dev88.c      | 9 ++++-----
 hw/net/etraxfs_eth.c      | 5 ++---
 include/hw/cris/etraxfs.h | 2 +-
 3 files changed, 7 insertions(+), 9 deletions(-)

diff --git a/hw/cris/axis_dev88.c b/hw/cris/axis_dev88.c
index d82050d927..5556634921 100644
--- a/hw/cris/axis_dev88.c
+++ b/hw/cris/axis_dev88.c
@@ -308,15 +308,14 @@ void axisdev88_init(MachineState *machine)
 
     /* Add the two ethernet blocks.  */
     dma_eth = g_malloc0(sizeof dma_eth[0] * 4); /* Allocate 4 channels.  */
-    etraxfs_eth_init(&nd_table[0], 0x30034000, 1, &dma_eth[0], &dma_eth[1]);
-    if (nb_nics > 1) {
-        etraxfs_eth_init(&nd_table[1], 0x30036000, 2, &dma_eth[2], &dma_eth[3]);
-    }
 
+    etraxfs_eth_init(0x30034000, 1, &dma_eth[0], &dma_eth[1]);
     /* The DMA Connector block is missing, hardwire things for now.  */
     etraxfs_dmac_connect_client(etraxfs_dmac, 0, &dma_eth[0]);
     etraxfs_dmac_connect_client(etraxfs_dmac, 1, &dma_eth[1]);
-    if (nb_nics > 1) {
+
+    if (qemu_find_nic_info("etraxfs-eth", true, "fseth")) {
+        etraxfs_eth_init(0x30036000, 2, &dma_eth[2], &dma_eth[3]);
         etraxfs_dmac_connect_client(etraxfs_dmac, 6, &dma_eth[2]);
         etraxfs_dmac_connect_client(etraxfs_dmac, 7, &dma_eth[3]);
     }
diff --git a/hw/net/etraxfs_eth.c b/hw/net/etraxfs_eth.c
index ba57a978d1..5faf20c782 100644
--- a/hw/net/etraxfs_eth.c
+++ b/hw/net/etraxfs_eth.c
@@ -647,15 +647,14 @@ static void etraxfs_eth_class_init(ObjectClass *klass, void *data)
 
 /* Instantiate an ETRAXFS Ethernet MAC.  */
 DeviceState *
-etraxfs_eth_init(NICInfo *nd, hwaddr base, int phyaddr,
+etraxfs_eth_init(hwaddr base, int phyaddr,
                  struct etraxfs_dma_client *dma_out,
                  struct etraxfs_dma_client *dma_in)
 {
     DeviceState *dev;
-    qemu_check_nic_model(nd, "fseth");
 
     dev = qdev_new("etraxfs-eth");
-    qdev_set_nic_properties(dev, nd);
+    qemu_configure_nic_device(dev, true, "fseth");
     qdev_prop_set_uint32(dev, "phyaddr", phyaddr);
 
     /*
diff --git a/include/hw/cris/etraxfs.h b/include/hw/cris/etraxfs.h
index 467b529dc0..012c4e9974 100644
--- a/include/hw/cris/etraxfs.h
+++ b/include/hw/cris/etraxfs.h
@@ -31,7 +31,7 @@
 #include "hw/sysbus.h"
 #include "qapi/error.h"
 
-DeviceState *etraxfs_eth_init(NICInfo *nd, hwaddr base, int phyaddr,
+DeviceState *etraxfs_eth_init(hwaddr base, int phyaddr,
                               struct etraxfs_dma_client *dma_out,
                               struct etraxfs_dma_client *dma_in);
 
-- 
2.41.0



From xen-devel-bounces@lists.xenproject.org Mon Jan 08 21:15:19 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 08 Jan 2024 21:15:19 +0000
Received: from list by lists.xenproject.org with outflank-mailman.664098.1034266 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMwxr-00065W-JI; Mon, 08 Jan 2024 21:15:19 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 664098.1034266; Mon, 08 Jan 2024 21:15:19 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMwxr-00065K-FF; Mon, 08 Jan 2024 21:15:19 +0000
Received: by outflank-mailman (input) for mailman id 664098;
 Mon, 08 Jan 2024 21:15:17 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=CNLN=IS=desiato.srs.infradead.org=BATV+a33e3d7a5f0474923369+7442+infradead.org+dwmw2@srs-se1.protection.inumbo.net>)
 id 1rMwai-0000R6-IQ
 for xen-devel@lists.xenproject.org; Mon, 08 Jan 2024 20:51:24 +0000
Received: from desiato.infradead.org (desiato.infradead.org
 [2001:8b0:10b:1:d65d:64ff:fe57:4e05])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id acd38ddf-ae67-11ee-9b0f-b553b5be7939;
 Mon, 08 Jan 2024 21:51:20 +0100 (CET)
Received: from [2001:8b0:10b:1::ebe] (helo=i7.infradead.org)
 by desiato.infradead.org with esmtpsa (Exim 4.96 #2 (Red Hat Linux))
 id 1rMwYn-007wY5-1J; Mon, 08 Jan 2024 20:49:27 +0000
Received: from dwoodhou by i7.infradead.org with local (Exim 4.96.2 #2 (Red
 Hat Linux)) id 1rMwYm-002NHR-08; Mon, 08 Jan 2024 20:49:24 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
X-Inumbo-ID: acd38ddf-ae67-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=infradead.org; s=desiato.20200630; h=Sender:Content-Transfer-Encoding:
	MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:
	Reply-To:Content-Type:Content-ID:Content-Description;
	bh=eaAFW36JmxXWmDyL503PHxB2uidAX+ONS5eunDGunx4=; b=bXRZhmKqy0KMbxNQ2VqUTO4fz9
	scNM0xmLPjyWIYQ3Gl4ffbtEMSnh6B40MB53OrOF44rVR5KTqrbsIdpUv+PTciMO1S+sa9ElOmQI2
	byu39cOOJs179txlBRh6J9Y4NL61hEy96HNxOFAKccIkhndFEN3ADJ+wkJjhDk7k3VuuX1BXTYWZP
	Eip9ztAl8vl0duIqFNc1DBpbrw5MIp2r4Q/+9IEVC6J/ueW2VxOSOgs7sthH/5TNq6Z9QxjTn/shJ
	2UdqNMrSnCO8dkrClsFTOfSf2OeTekne0NFfasFqnq3fBvh/52IPDe/dYHEqTx0MfR+ctal3Hq3rv
	GugV2WmQ==;
From: David Woodhouse <dwmw2@infradead.org>
To: qemu-devel@nongnu.org
Cc: Richard Henderson <richard.henderson@linaro.org>,
	Beniamino Galvani <b.galvani@gmail.com>,
	Peter Maydell <peter.maydell@linaro.org>,
	Strahinja Jankovic <strahinja.p.jankovic@gmail.com>,
	Niek Linnenbank <nieklinnenbank@gmail.com>,
	=?UTF-8?q?C=C3=A9dric=20Le=20Goater?= <clg@kaod.org>,
	Andrew Jeffery <andrew@codeconstruct.com.au>,
	Joel Stanley <joel@jms.id.au>,
	Igor Mitsyanko <i.mitsyanko@gmail.com>,
	Jean-Christophe Dubois <jcd@tribudubois.net>,
	Andrey Smirnov <andrew.smirnov@gmail.com>,
	=?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= <philmd@linaro.org>,
	Rob Herring <robh@kernel.org>,
	Subbaraya Sundeep <sundeep.lkml@gmail.com>,
	Jan Kiszka <jan.kiszka@web.de>,
	Tyrone Ting <kfting@nuvoton.com>,
	Hao Wu <wuhaotsh@google.com>,
	Radoslaw Biernacki <rad@semihalf.com>,
	Leif Lindholm <quic_llindhol@quicinc.com>,
	Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org>,
	"Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
	Alistair Francis <alistair@alistair23.me>,
	Helge Deller <deller@gmx.de>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Eduardo Habkost <eduardo@habkost.net>,
	"Michael S. Tsirkin" <mst@redhat.com>,
	Marcel Apfelbaum <marcel.apfelbaum@gmail.com>,
	Song Gao <gaosong@loongson.cn>,
	Thomas Huth <huth@tuxfamily.org>,
	Laurent Vivier <laurent@vivier.eu>,
	Huacai Chen <chenhuacai@kernel.org>,
	Jiaxun Yang <jiaxun.yang@flygoat.com>,
	=?UTF-8?q?Herv=C3=A9=20Poussineau?= <hpoussin@reactos.org>,
	Aleksandar Rikalo <aleksandar.rikalo@syrmia.com>,
	Aurelien Jarno <aurelien@aurel32.net>,
	Jason Wang <jasowang@redhat.com>,
	Jia Liu <proljc@gmail.com>,
	Stafford Horne <shorne@gmail.com>,
	Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>,
	Nicholas Piggin <npiggin@gmail.com>,
	Daniel Henrique Barboza <danielhb413@gmail.com>,
	David Gibson <david@gibson.dropbear.id.au>,
	Harsh Prateek Bora <harshpb@linux.ibm.com>,
	Bin Meng <bin.meng@windriver.com>,
	Palmer Dabbelt <palmer@dabbelt.com>,
	Weiwei Li <liwei1518@gmail.com>,
	Liu Zhiwei <zhiwei_liu@linux.alibaba.com>,
	Halil Pasic <pasic@linux.ibm.com>,
	Christian Borntraeger <borntraeger@linux.ibm.com>,
	Eric Farman <farman@linux.ibm.com>,
	David Hildenbrand <david@redhat.com>,
	Ilya Leoshkevich <iii@linux.ibm.com>,
	Yoshinori Sato <ysato@users.sourceforge.jp>,
	Magnus Damm <magnus.damm@gmail.com>,
	Artyom Tarasenko <atar4qemu@gmail.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Anthony Perard <anthony.perard@citrix.com>,
	Paul Durrant <paul@xen.org>,
	Max Filippov <jcmvbkbc@gmail.com>,
	qemu-arm@nongnu.org,
	qemu-ppc@nongnu.org,
	qemu-riscv@nongnu.org,
	qemu-s390x@nongnu.org,
	xen-devel@lists.xenproject.org,
	David Woodhouse <dwmw@amazon.co.uk>
Subject: [PATCH v3 46/46] net: make nb_nics and nd_table[] static in net/net.c
Date: Mon,  8 Jan 2024 20:27:15 +0000
Message-ID: <20240108204909.564514-47-dwmw2@infradead.org>
X-Mailer: git-send-email 2.41.0
In-Reply-To: <20240108204909.564514-1-dwmw2@infradead.org>
References: <20240108204909.564514-1-dwmw2@infradead.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Sender: David Woodhouse <dwmw2@infradead.org>
X-SRS-Rewrite: SMTP reverse-path rewritten from <dwmw2@infradead.org> by desiato.infradead.org. See http://www.infradead.org/rpr.html

From: David Woodhouse <dwmw@amazon.co.uk>

Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
---
 include/net/net.h | 4 ----
 net/net.c         | 3 +++
 system/globals.c  | 2 --
 3 files changed, 3 insertions(+), 6 deletions(-)

diff --git a/include/net/net.h b/include/net/net.h
index 19fb82833c..766201c62c 100644
--- a/include/net/net.h
+++ b/include/net/net.h
@@ -247,10 +247,6 @@ struct NICInfo {
     int nvectors;
 };
 
-extern int nb_nics;
-extern NICInfo nd_table[MAX_NICS];
-extern const char *host_net_devices[];
-
 /* from net.c */
 extern NetClientStateList net_clients;
 bool netdev_is_modern(const char *optstr);
diff --git a/net/net.c b/net/net.c
index 09ab0889f5..71cccb19da 100644
--- a/net/net.c
+++ b/net/net.c
@@ -77,6 +77,9 @@ static NetdevQueue nd_queue = QSIMPLEQ_HEAD_INITIALIZER(nd_queue);
 
 static GHashTable *nic_model_help;
 
+static int nb_nics;
+static NICInfo nd_table[MAX_NICS];
+
 /***********************************************************/
 /* network device redirectors */
 
diff --git a/system/globals.c b/system/globals.c
index e83b5428d1..b6d4e72530 100644
--- a/system/globals.c
+++ b/system/globals.c
@@ -36,8 +36,6 @@ int display_opengl;
 const char* keyboard_layout;
 bool enable_mlock;
 bool enable_cpu_pm;
-int nb_nics;
-NICInfo nd_table[MAX_NICS];
 int autostart = 1;
 int vga_interface_type = VGA_NONE;
 bool vga_interface_created;
-- 
2.41.0



From xen-devel-bounces@lists.xenproject.org Mon Jan 08 21:15:20 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 08 Jan 2024 21:15:20 +0000
Received: from list by lists.xenproject.org with outflank-mailman.664099.1034271 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMwxr-00068s-T7; Mon, 08 Jan 2024 21:15:19 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 664099.1034271; Mon, 08 Jan 2024 21:15:19 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMwxr-00067z-Mm; Mon, 08 Jan 2024 21:15:19 +0000
Received: by outflank-mailman (input) for mailman id 664099;
 Mon, 08 Jan 2024 21:15:18 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=CNLN=IS=desiato.srs.infradead.org=BATV+a33e3d7a5f0474923369+7442+infradead.org+dwmw2@srs-se1.protection.inumbo.net>)
 id 1rMwac-0000R6-Hh
 for xen-devel@lists.xenproject.org; Mon, 08 Jan 2024 20:51:18 +0000
Received: from desiato.infradead.org (desiato.infradead.org
 [2001:8b0:10b:1:d65d:64ff:fe57:4e05])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id aa43dc11-ae67-11ee-9b0f-b553b5be7939;
 Mon, 08 Jan 2024 21:51:15 +0100 (CET)
Received: from [2001:8b0:10b:1::ebe] (helo=i7.infradead.org)
 by desiato.infradead.org with esmtpsa (Exim 4.96 #2 (Red Hat Linux))
 id 1rMwYm-007wXp-0H; Mon, 08 Jan 2024 20:49:24 +0000
Received: from dwoodhou by i7.infradead.org with local (Exim 4.96.2 #2 (Red
 Hat Linux)) id 1rMwYl-002NGM-0I; Mon, 08 Jan 2024 20:49:23 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
X-Inumbo-ID: aa43dc11-ae67-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=infradead.org; s=desiato.20200630; h=Sender:Content-Transfer-Encoding:
	MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:
	Reply-To:Content-Type:Content-ID:Content-Description;
	bh=sIvM8Te/mI7VlQ7unlUHnFMmc5eyEzom2MnrpIIKUis=; b=XAg8ZGiC5eVOJhZhVLlJ9KN+Yt
	KmAvPkKhALeLAXFtfQdfWZ6PGOGnj3lRB6+kFR9o9bPjIWRmMPT6BB9IhjN+AHUtNznPPIkTHPXn4
	ieEhrCtyy3bTXBhQOO/ES2YPWZNG8J4dFM028KHdT1RWl5f5yHcjVW2PNS5eJ+HtAPrnU92aA6ciz
	pgYIj8sFGhP+aXbpFiPDqCiMTctz5AQNEYikXpiATMk5u4rnNfCcNBtBjK22L//4NaBVeKGSrTvvW
	woUpO3SAQJ+Xa8YaMFp/MUAigik72SrxYrWYjKUq+mTko6W8wQUK0HDaAaah8SHK6YuexEHPd5Bhc
	z2ewDTjA==;
From: David Woodhouse <dwmw2@infradead.org>
To: qemu-devel@nongnu.org
Cc: Richard Henderson <richard.henderson@linaro.org>,
	Beniamino Galvani <b.galvani@gmail.com>,
	Peter Maydell <peter.maydell@linaro.org>,
	Strahinja Jankovic <strahinja.p.jankovic@gmail.com>,
	Niek Linnenbank <nieklinnenbank@gmail.com>,
	=?UTF-8?q?C=C3=A9dric=20Le=20Goater?= <clg@kaod.org>,
	Andrew Jeffery <andrew@codeconstruct.com.au>,
	Joel Stanley <joel@jms.id.au>,
	Igor Mitsyanko <i.mitsyanko@gmail.com>,
	Jean-Christophe Dubois <jcd@tribudubois.net>,
	Andrey Smirnov <andrew.smirnov@gmail.com>,
	=?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= <philmd@linaro.org>,
	Rob Herring <robh@kernel.org>,
	Subbaraya Sundeep <sundeep.lkml@gmail.com>,
	Jan Kiszka <jan.kiszka@web.de>,
	Tyrone Ting <kfting@nuvoton.com>,
	Hao Wu <wuhaotsh@google.com>,
	Radoslaw Biernacki <rad@semihalf.com>,
	Leif Lindholm <quic_llindhol@quicinc.com>,
	Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org>,
	"Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
	Alistair Francis <alistair@alistair23.me>,
	Helge Deller <deller@gmx.de>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Eduardo Habkost <eduardo@habkost.net>,
	"Michael S. Tsirkin" <mst@redhat.com>,
	Marcel Apfelbaum <marcel.apfelbaum@gmail.com>,
	Song Gao <gaosong@loongson.cn>,
	Thomas Huth <huth@tuxfamily.org>,
	Laurent Vivier <laurent@vivier.eu>,
	Huacai Chen <chenhuacai@kernel.org>,
	Jiaxun Yang <jiaxun.yang@flygoat.com>,
	=?UTF-8?q?Herv=C3=A9=20Poussineau?= <hpoussin@reactos.org>,
	Aleksandar Rikalo <aleksandar.rikalo@syrmia.com>,
	Aurelien Jarno <aurelien@aurel32.net>,
	Jason Wang <jasowang@redhat.com>,
	Jia Liu <proljc@gmail.com>,
	Stafford Horne <shorne@gmail.com>,
	Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>,
	Nicholas Piggin <npiggin@gmail.com>,
	Daniel Henrique Barboza <danielhb413@gmail.com>,
	David Gibson <david@gibson.dropbear.id.au>,
	Harsh Prateek Bora <harshpb@linux.ibm.com>,
	Bin Meng <bin.meng@windriver.com>,
	Palmer Dabbelt <palmer@dabbelt.com>,
	Weiwei Li <liwei1518@gmail.com>,
	Liu Zhiwei <zhiwei_liu@linux.alibaba.com>,
	Halil Pasic <pasic@linux.ibm.com>,
	Christian Borntraeger <borntraeger@linux.ibm.com>,
	Eric Farman <farman@linux.ibm.com>,
	David Hildenbrand <david@redhat.com>,
	Ilya Leoshkevich <iii@linux.ibm.com>,
	Yoshinori Sato <ysato@users.sourceforge.jp>,
	Magnus Damm <magnus.damm@gmail.com>,
	Artyom Tarasenko <atar4qemu@gmail.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Anthony Perard <anthony.perard@citrix.com>,
	Paul Durrant <paul@xen.org>,
	Max Filippov <jcmvbkbc@gmail.com>,
	qemu-arm@nongnu.org,
	qemu-ppc@nongnu.org,
	qemu-riscv@nongnu.org,
	qemu-s390x@nongnu.org,
	xen-devel@lists.xenproject.org,
	David Woodhouse <dwmw@amazon.co.uk>
Subject: [PATCH v3 33/46] hw/m68k/q800: use qemu_find_nic_info()
Date: Mon,  8 Jan 2024 20:27:02 +0000
Message-ID: <20240108204909.564514-34-dwmw2@infradead.org>
X-Mailer: git-send-email 2.41.0
In-Reply-To: <20240108204909.564514-1-dwmw2@infradead.org>
References: <20240108204909.564514-1-dwmw2@infradead.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Sender: David Woodhouse <dwmw2@infradead.org>
X-SRS-Rewrite: SMTP reverse-path rewritten from <dwmw2@infradead.org> by desiato.infradead.org. See http://www.infradead.org/rpr.html

From: David Woodhouse <dwmw@amazon.co.uk>

If a corresponding NIC configuration was found, it will have a MAC address
already assigned, so use that. Else, generate and assign a default one.

Using qemu_find_nic_info() is simpler than the alternative of using
qemu_configure_nic_device() and then having to fetch the "mac" property
as a string and convert it.

Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
---
 hw/m68k/q800.c | 29 ++++++++++++++++-------------
 1 file changed, 16 insertions(+), 13 deletions(-)

diff --git a/hw/m68k/q800.c b/hw/m68k/q800.c
index 83d1571d02..c9e7bdf197 100644
--- a/hw/m68k/q800.c
+++ b/hw/m68k/q800.c
@@ -48,6 +48,7 @@
 #include "hw/display/macfb.h"
 #include "hw/block/swim.h"
 #include "net/net.h"
+#include "net/util.h"
 #include "qapi/error.h"
 #include "qemu/error-report.h"
 #include "sysemu/qtest.h"
@@ -271,6 +272,8 @@ static void q800_machine_init(MachineState *machine)
     BusState *adb_bus;
     NubusBus *nubus;
     DriveInfo *dinfo;
+    NICInfo *nd;
+    MACAddr mac;
     uint8_t rng_seed[32];
 
     linux_boot = (kernel_filename != NULL);
@@ -371,13 +374,6 @@ static void q800_machine_init(MachineState *machine)
 
     /* MACSONIC */
 
-    if (nb_nics > 1) {
-        error_report("q800 can only have one ethernet interface");
-        exit(1);
-    }
-
-    qemu_check_nic_model(&nd_table[0], "dp83932");
-
     /*
      * MacSonic driver needs an Apple MAC address
      * Valid prefix are:
@@ -387,14 +383,21 @@ static void q800_machine_init(MachineState *machine)
      * 08:00:07 Apple
      * (Q800 use the last one)
      */
-    nd_table[0].macaddr.a[0] = 0x08;
-    nd_table[0].macaddr.a[1] = 0x00;
-    nd_table[0].macaddr.a[2] = 0x07;
-
     object_initialize_child(OBJECT(machine), "dp8393x", &m->dp8393x,
                             TYPE_DP8393X);
     dev = DEVICE(&m->dp8393x);
-    qdev_set_nic_properties(dev, &nd_table[0]);
+    nd = qemu_find_nic_info(TYPE_DP8393X, true, "dp83932");
+    if (nd) {
+        qdev_set_nic_properties(dev, nd);
+        memcpy(mac.a, nd->macaddr.a, sizeof(mac.a));
+    } else {
+        qemu_macaddr_default_if_unset(&mac);
+    }
+    mac.a[0] = 0x08;
+    mac.a[1] = 0x00;
+    mac.a[2] = 0x07;
+    qdev_prop_set_macaddr(dev, "mac", mac.a);
+
     qdev_prop_set_uint8(dev, "it_shift", 2);
     qdev_prop_set_bit(dev, "big_endian", true);
     object_property_set_link(OBJECT(dev), "dma_mr",
@@ -415,7 +418,7 @@ static void q800_machine_init(MachineState *machine)
     prom = memory_region_get_ram_ptr(dp8393x_prom);
     checksum = 0;
     for (i = 0; i < 6; i++) {
-        prom[i] = revbit8(nd_table[0].macaddr.a[i]);
+        prom[i] = revbit8(mac.a[i]);
         checksum ^= prom[i];
     }
     prom[7] = 0xff - checksum;
-- 
2.41.0



From xen-devel-bounces@lists.xenproject.org Mon Jan 08 21:21:16 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 08 Jan 2024 21:21:16 +0000
Received: from list by lists.xenproject.org with outflank-mailman.664118.1034285 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMx3X-0001vg-Kn; Mon, 08 Jan 2024 21:21:11 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 664118.1034285; Mon, 08 Jan 2024 21:21:11 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMx3X-0001vZ-I8; Mon, 08 Jan 2024 21:21:11 +0000
Received: by outflank-mailman (input) for mailman id 664118;
 Mon, 08 Jan 2024 21:21:10 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=hFOe=IS=kernel.org=sstabellini@srs-se1.protection.inumbo.net>)
 id 1rMx3W-0001vQ-3l
 for xen-devel@lists.xenproject.org; Mon, 08 Jan 2024 21:21:10 +0000
Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id d4c745ec-ae6b-11ee-9b0f-b553b5be7939;
 Mon, 08 Jan 2024 22:21:05 +0100 (CET)
Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58])
 by dfw.source.kernel.org (Postfix) with ESMTP id 56A8C610A1;
 Mon,  8 Jan 2024 21:21:04 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 86911C433C7;
 Mon,  8 Jan 2024 21:21:02 +0000 (UTC)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: d4c745ec-ae6b-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
	s=k20201202; t=1704748864;
	bh=J8muup0wlglgrTz8MoYwTawipVGTqClNwBde2ultwdc=;
	h=Date:From:To:cc:Subject:In-Reply-To:References:From;
	b=R0Vol6hL+Bc7XxvXvg5uBSD+GHRAHH6/TqgapYIdRiG7ie7R/Hdt5Rv9DXbT6oC5V
	 okG5FTPJkKaehT+Qw9SCZYvBLTu0IO8xvgo3buIrNA3ynL5VDy1G+JoEyyoupjzUA7
	 vUvn7AKzNjISmo6mlD72ac+tsdzI1S2EIFpn+/WgWveeX5NnGjIj8d6U8/mJ6qB0AH
	 zw/BmUzPDkwkTdUY2L5Pdbqkb4e8sjHr70UFSRsmRbWvx5/iB4cWWRYvnK4kZ86TB7
	 6/ng7B1TxZT7DANjJb24r7oJAZ+DGdNhmowVfza7CsUmmuOrFvXD2qbPC1JT9xYt6S
	 j1pkicvA/XKNQ==
Date: Mon, 8 Jan 2024 13:21:00 -0800 (PST)
From: Stefano Stabellini <sstabellini@kernel.org>
X-X-Sender: sstabellini@ubuntu-linux-20-04-desktop
To: Carlo Nonato <carlo.nonato@minervasys.tech>
cc: Jan Beulich <jbeulich@suse.com>, xen-devel@lists.xenproject.org, 
    Stefano Stabellini <sstabellini@kernel.org>, 
    Bertrand Marquis <bertrand.marquis@arm.com>, 
    Michal Orzel <michal.orzel@amd.com>, 
    Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>, 
    Andrew Cooper <andrew.cooper3@citrix.com>, 
    George Dunlap <george.dunlap@citrix.com>, Wei Liu <wl@xen.org>, 
    Marco Solieri <marco.solieri@minervasys.tech>, 
    Julien Grall <julien@xen.org>
Subject: Re: [PATCH v5 04/13] xen: extend domctl interface for cache
 coloring
In-Reply-To: <CAG+AhRXAY1TX-z2Aw0F1oEOKY=pjU9dV+C+hu4aPjF8H2Uj=Ng@mail.gmail.com>
Message-ID: <alpine.DEB.2.22.394.2401081319130.3675@ubuntu-linux-20-04-desktop>
References: <20240102095138.17933-1-carlo.nonato@minervasys.tech> <20240102095138.17933-5-carlo.nonato@minervasys.tech> <99295edf-6c9c-4d06-ba20-86db67100561@xen.org> <CAG+AhRWd9E5sQPY-sxN+WGTSWtvRXGN2FnZC2Vy6LPyynKGLcQ@mail.gmail.com>
 <4675a541-b9dc-476a-a6ff-0247a4403292@xen.org> <CAG+AhRX6Y2U6A1v=27KgUeWip115R1o+csEWcyCCooxE2Tac6w@mail.gmail.com> <33061994-0b49-4e4e-8698-d6901b9130dc@xen.org> <CAG+AhRXPt_e4+OUxbRLhf6W0reH1nmO7cC9-XoFKe_G8BVxt7w@mail.gmail.com> <e7029592-57e6-4c2a-ab11-f843047ce7f2@xen.org>
 <CAG+AhRV8B4dcoVHXbP2KW5xsB8BQRt4NpPuXsmjc1X149GZRRw@mail.gmail.com> <08b7535e-da40-4578-b865-9b350ace379c@suse.com> <CAG+AhRXAY1TX-z2Aw0F1oEOKY=pjU9dV+C+hu4aPjF8H2Uj=Ng@mail.gmail.com>
User-Agent: Alpine 2.22 (DEB 394 2020-01-19)
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="8323329-545452899-1704748863=:3675"

  This message is in MIME format.  The first part should be readable text,
  while the remaining parts are likely unreadable without MIME-aware tools.

--8323329-545452899-1704748863=:3675
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8BIT

On Mon, 8 Jan 2024, Carlo Nonato wrote:
> Hi Jan,
> 
> On Mon, Jan 8, 2024 at 5:40 PM Jan Beulich <jbeulich@suse.com> wrote:
> >
> > On 08.01.2024 17:31, Carlo Nonato wrote:
> > > On Mon, Jan 8, 2024 at 4:32 PM Julien Grall <julien@xen.org> wrote:
> > >> On 08/01/2024 15:18, Carlo Nonato wrote:
> > >>>> No. I am saying that that we should not be able to allow changing the
> > >>>> colors after the memory has been allocated. To give an example, your
> > >>>> current code would allow:
> > >>>>
> > >>>>     1) Setup the P2M pools or allocate RAM
> > >>>>     2) Set the color
> > >>>>
> > >>>> This would render the coloring configuration moot.
> > >>>>
> > >>>> Whether we want to allow changing the coloring before hand is a
> > >>>> different question and as I wrote earlier on, I don't mind if you want
> > >>>> to forbid that.
> > >>>
> > >>> At the moment I'm relying on the toolstack in the sense that I know that it
> > >>> will set colors right after domain creation and before memory allocation.
> > >>> Calling alloc_domheap_pages() without a coloring configuration makes Xen
> > >>> crash, so it's mandatory to have the configuration done before any allocation.
> > >>> I know that we shouldn't rely on the toolstack this much, but I didn't
> > >>> find a better way. Given this assumption, looking for an already existing
> > >>> color configuration of a domain is sufficient to avoid what you are saying.
> > >>>
> > >>> Is it possible to enforce such a constraint with domctl? > I mean to be sure that this domctl will be called at a precise time.
> > >>
> > >> Yes. You can...
> > >>
> > >>>
> > >>> Thanks.
> > >>>
> > >>>>> I don't know what to check that.
> > >>>>
> > >>>> You can check the size of the P2M pool (d->arch.paging.p2m_total_pages)
> > >>>> is still 0. I think for RAM, you can check d->tot_pages == 0.
> > >>
> > >> ... reject the call if either of the two fields are not zero.
> > >
> > > What I'm saying is that Xen would crash before even reaching this point if no
> > > colors were provided. Let's say that the toolstack or whatever hypercall user
> > > isn't calling this domctl at all (or not at the right time), then the domain
> > > colored allocator would always return null pages since there are no colors.
> > > We would have a crash and your if (or mine) would be useless.
> >
> > Why is it that you can't simply allocated arbitrary memory if coloring
> > information wasn't set up front? Aiui that'll be required anyway, as
> > there shouldn't be a restriction that all domains have to use coloring.
> 
> If coloring is enabled all domains are colored. It's one of our first
> assumptions. We haven't developed something that works hybridly and supporting
> that would require some rework.

I think that's a good assumption and I wouldn't go in the direction of
supporting a mix of colored and non-colored. To benefit from cache
coloring, all domains need to be colored, otherwise a single non-colored
domain could thrash the cache of everyone else.
--8323329-545452899-1704748863=:3675--


From xen-devel-bounces@lists.xenproject.org Mon Jan 08 21:42:54 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 08 Jan 2024 21:42:54 +0000
Received: from list by lists.xenproject.org with outflank-mailman.664167.1034315 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMxOT-0002JV-Ng; Mon, 08 Jan 2024 21:42:49 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 664167.1034315; Mon, 08 Jan 2024 21:42:49 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rMxOT-0002JO-JY; Mon, 08 Jan 2024 21:42:49 +0000
Received: by outflank-mailman (input) for mailman id 664167;
 Mon, 08 Jan 2024 21:42:48 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rMxOS-0002JE-75; Mon, 08 Jan 2024 21:42:48 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rMxOS-0006ov-4h; Mon, 08 Jan 2024 21:42:48 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rMxOR-00050N-LS; Mon, 08 Jan 2024 21:42:47 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rMxOR-0001Ew-Iv; Mon, 08 Jan 2024 21:42:47 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=LxiM79kGpSgibap4xQ7gSqmyfVlvMYqSnF/HeyPPoak=; b=6N+taRRfdclOtGBKs3e5bFI//6
	9PGFdLppyH7s70SmYGtlGQbGnq6AEl9sfAdedJUSQiB4YaHTisbqc8eVxjKW1LU5sPTSxbw0mwoxC
	LnJ7h5sWSpwDn+2mV/dmAhgauSwNo3zmyrJAm54VNrzmbrvs3PwCpTeJHjWMsrIbYh6o=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184278-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [xen-unstable test] 184278: regressions - FAIL
X-Osstest-Failures:
    xen-unstable:build-arm64-xsm:xen-build:fail:regression
    xen-unstable:test-arm64-arm64-libvirt-xsm:build-check(1):blocked:nonblocking
    xen-unstable:test-arm64-arm64-xl-xsm:build-check(1):blocked:nonblocking
    xen-unstable:test-armhf-armhf-libvirt:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-amd64-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-qcow2:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-raw:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-amd64-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-amd64-qemuu-nested-amd:debian-hvm-install/l1/l2:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-amd64-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-i386-libvirt-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-libvirt:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-pvshim:guest-start:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-thunderx:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-thunderx:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-credit2:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-credit2:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-credit1:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-credit1:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-multivcpu:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-multivcpu:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit2:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit2:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit1:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit1:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-arndale:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-arndale:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-libvirt-raw:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-libvirt-raw:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-libvirt-raw:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt-vhd:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-qcow2:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-vhd:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-vhd:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-raw:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-vhd:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-vhd:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-rtds:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-rtds:saverestore-support-check:fail:nonblocking
X-Osstest-Versions-This:
    xen=2467ab2a74463107132f7d929d2ff0e30a8b6fa3
X-Osstest-Versions-That:
    xen=5a3ace21f3d779b291a2d305824b2820d88de7f1
From: osstest service owner <osstest-admin@xenproject.org>
Date: Mon, 08 Jan 2024 21:42:47 +0000

flight 184278 xen-unstable real [real]
http://logs.test-lab.xenproject.org/osstest/logs/184278/

Regressions :-(

Tests which did not succeed and are blocking,
including tests which could not be run:
 build-arm64-xsm               6 xen-build                fail REGR. vs. 184271

Tests which did not succeed, but are not blocking:
 test-arm64-arm64-libvirt-xsm  1 build-check(1)               blocked  n/a
 test-arm64-arm64-xl-xsm       1 build-check(1)               blocked  n/a
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 184271
 test-amd64-amd64-xl-qemut-win7-amd64 19 guest-stop            fail like 184271
 test-amd64-i386-xl-qemuu-win7-amd64 19 guest-stop             fail like 184271
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 184271
 test-armhf-armhf-libvirt-qcow2 15 saverestore-support-check   fail like 184271
 test-amd64-i386-xl-qemut-ws16-amd64 19 guest-stop             fail like 184271
 test-armhf-armhf-libvirt-raw 15 saverestore-support-check    fail  like 184271
 test-amd64-i386-xl-qemut-win7-amd64 19 guest-stop             fail like 184271
 test-amd64-amd64-xl-qemut-ws16-amd64 19 guest-stop            fail like 184271
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 184271
 test-amd64-i386-xl-qemuu-ws16-amd64 19 guest-stop             fail like 184271
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 184271
 test-amd64-i386-libvirt-xsm  15 migrate-support-check        fail   never pass
 test-amd64-i386-libvirt      15 migrate-support-check        fail   never pass
 test-amd64-i386-xl-pvshim    14 guest-start                  fail   never pass
 test-amd64-amd64-libvirt     15 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl          15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-thunderx 15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl          16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-thunderx 16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-credit2  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit2  16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-credit1  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit1  16 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-armhf-armhf-xl          15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          16 saverestore-support-check    fail   never pass
 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-armhf-armhf-xl-multivcpu 15 migrate-support-check        fail  never pass
 test-armhf-armhf-xl-multivcpu 16 saverestore-support-check    fail  never pass
 test-armhf-armhf-libvirt     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit2  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit2  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-credit1  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit1  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-arndale  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-arndale  16 saverestore-support-check    fail   never pass
 test-amd64-i386-libvirt-raw  14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 15 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-vhd 14 migrate-support-check        fail   never pass
 test-armhf-armhf-libvirt-qcow2 14 migrate-support-check        fail never pass
 test-arm64-arm64-xl-vhd      14 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-vhd      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-raw 14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-rtds     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-rtds     16 saverestore-support-check    fail   never pass

version targeted for testing:
 xen                  2467ab2a74463107132f7d929d2ff0e30a8b6fa3
baseline version:
 xen                  5a3ace21f3d779b291a2d305824b2820d88de7f1

Last test of basis   184271  2024-01-08 01:53:47 Z    0 days
Testing same since   184278  2024-01-08 12:39:26 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Jan Beulich <jbeulich@suse.com>
  Juergen Gross <jgross@suse.com>
  Julien Grall <jgrall@amazon.com>
  Oleksii Kurochko <oleksii.kurochko@gmail.com>
  Shawn Anastasio <sanastasio@raptorengineering.com>
  Tamas K Lengyel <tamas.lengyel@intel.com>

jobs:
 build-amd64-xsm                                              pass    
 build-arm64-xsm                                              fail    
 build-i386-xsm                                               pass    
 build-amd64-xtf                                              pass    
 build-amd64                                                  pass    
 build-arm64                                                  pass    
 build-armhf                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-arm64-libvirt                                          pass    
 build-armhf-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-prev                                             pass    
 build-i386-prev                                              pass    
 build-amd64-pvops                                            pass    
 build-arm64-pvops                                            pass    
 build-armhf-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-xtf-amd64-amd64-1                                       pass    
 test-xtf-amd64-amd64-2                                       pass    
 test-xtf-amd64-amd64-3                                       pass    
 test-xtf-amd64-amd64-4                                       pass    
 test-xtf-amd64-amd64-5                                       pass    
 test-amd64-amd64-xl                                          pass    
 test-amd64-coresched-amd64-xl                                pass    
 test-arm64-arm64-xl                                          pass    
 test-armhf-armhf-xl                                          pass    
 test-amd64-i386-xl                                           pass    
 test-amd64-coresched-i386-xl                                 pass    
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm           pass    
 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm            pass    
 test-amd64-amd64-xl-qemut-stubdom-debianhvm-amd64-xsm        pass    
 test-amd64-i386-xl-qemut-stubdom-debianhvm-amd64-xsm         pass    
 test-amd64-amd64-xl-qemut-debianhvm-i386-xsm                 pass    
 test-amd64-i386-xl-qemut-debianhvm-i386-xsm                  pass    
 test-amd64-amd64-xl-qemuu-debianhvm-i386-xsm                 pass    
 test-amd64-i386-xl-qemuu-debianhvm-i386-xsm                  pass    
 test-amd64-amd64-libvirt-xsm                                 pass    
 test-arm64-arm64-libvirt-xsm                                 blocked 
 test-amd64-i386-libvirt-xsm                                  pass    
 test-amd64-amd64-xl-xsm                                      pass    
 test-arm64-arm64-xl-xsm                                      blocked 
 test-amd64-i386-xl-xsm                                       pass    
 test-amd64-amd64-qemuu-nested-amd                            fail    
 test-amd64-amd64-xl-pvhv2-amd                                pass    
 test-amd64-i386-qemut-rhel6hvm-amd                           pass    
 test-amd64-i386-qemuu-rhel6hvm-amd                           pass    
 test-amd64-amd64-dom0pvh-xl-amd                              pass    
 test-amd64-amd64-xl-qemut-debianhvm-amd64                    pass    
 test-amd64-i386-xl-qemut-debianhvm-amd64                     pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64                    pass    
 test-amd64-i386-xl-qemuu-debianhvm-amd64                     pass    
 test-amd64-i386-freebsd10-amd64                              pass    
 test-amd64-amd64-qemuu-freebsd11-amd64                       pass    
 test-amd64-amd64-qemuu-freebsd12-amd64                       pass    
 test-amd64-amd64-xl-qemuu-ovmf-amd64                         pass    
 test-amd64-i386-xl-qemuu-ovmf-amd64                          pass    
 test-amd64-amd64-xl-qemut-win7-amd64                         fail    
 test-amd64-i386-xl-qemut-win7-amd64                          fail    
 test-amd64-amd64-xl-qemuu-win7-amd64                         fail    
 test-amd64-i386-xl-qemuu-win7-amd64                          fail    
 test-amd64-amd64-xl-qemut-ws16-amd64                         fail    
 test-amd64-i386-xl-qemut-ws16-amd64                          fail    
 test-amd64-amd64-xl-qemuu-ws16-amd64                         fail    
 test-amd64-i386-xl-qemuu-ws16-amd64                          fail    
 test-armhf-armhf-xl-arndale                                  pass    
 test-amd64-amd64-examine-bios                                pass    
 test-amd64-i386-examine-bios                                 pass    
 test-amd64-amd64-xl-credit1                                  pass    
 test-arm64-arm64-xl-credit1                                  pass    
 test-armhf-armhf-xl-credit1                                  pass    
 test-amd64-amd64-xl-credit2                                  pass    
 test-arm64-arm64-xl-credit2                                  pass    
 test-armhf-armhf-xl-credit2                                  pass    
 test-amd64-amd64-xl-qemuu-dmrestrict-amd64-dmrestrict        pass    
 test-amd64-i386-xl-qemuu-dmrestrict-amd64-dmrestrict         pass    
 test-amd64-amd64-examine                                     pass    
 test-arm64-arm64-examine                                     pass    
 test-armhf-armhf-examine                                     pass    
 test-amd64-i386-examine                                      pass    
 test-amd64-i386-freebsd10-i386                               pass    
 test-amd64-amd64-qemuu-nested-intel                          pass    
 test-amd64-amd64-xl-pvhv2-intel                              pass    
 test-amd64-i386-qemut-rhel6hvm-intel                         pass    
 test-amd64-i386-qemuu-rhel6hvm-intel                         pass    
 test-amd64-amd64-dom0pvh-xl-intel                            pass    
 test-amd64-amd64-libvirt                                     pass    
 test-armhf-armhf-libvirt                                     pass    
 test-amd64-i386-libvirt                                      pass    
 test-amd64-amd64-livepatch                                   pass    
 test-amd64-i386-livepatch                                    pass    
 test-amd64-amd64-migrupgrade                                 pass    
 test-amd64-i386-migrupgrade                                  pass    
 test-amd64-amd64-xl-multivcpu                                pass    
 test-armhf-armhf-xl-multivcpu                                pass    
 test-amd64-amd64-pair                                        pass    
 test-amd64-i386-pair                                         pass    
 test-amd64-amd64-libvirt-pair                                pass    
 test-amd64-i386-libvirt-pair                                 pass    
 test-amd64-amd64-xl-pvshim                                   pass    
 test-amd64-i386-xl-pvshim                                    fail    
 test-amd64-amd64-pygrub                                      pass    
 test-armhf-armhf-libvirt-qcow2                               pass    
 test-amd64-amd64-xl-qcow2                                    pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-armhf-armhf-libvirt-raw                                 pass    
 test-amd64-i386-libvirt-raw                                  pass    
 test-amd64-amd64-xl-rtds                                     pass    
 test-armhf-armhf-xl-rtds                                     pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64-shadow             pass    
 test-amd64-i386-xl-qemuu-debianhvm-amd64-shadow              pass    
 test-amd64-amd64-xl-shadow                                   pass    
 test-amd64-i386-xl-shadow                                    pass    
 test-arm64-arm64-xl-thunderx                                 pass    
 test-amd64-amd64-examine-uefi                                pass    
 test-amd64-i386-examine-uefi                                 pass    
 test-amd64-amd64-libvirt-vhd                                 pass    
 test-arm64-arm64-xl-vhd                                      pass    
 test-armhf-armhf-xl-vhd                                      pass    
 test-amd64-i386-xl-vhd                                       pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Not pushing.

------------------------------------------------------------
commit 2467ab2a74463107132f7d929d2ff0e30a8b6fa3
Author: Tamas K Lengyel <tamas.lengyel@intel.com>
Date:   Mon Jan 8 10:16:58 2024 +0100

    x86/mwait-idle: fix ubsan warning
    
    Fix warning:
    (XEN) UBSAN: Undefined behaviour in arch/x86/cpu/mwait-idle.c:1300:44
    (XEN) left shift of 15 by 28 places cannot be represented in type 'int'
    originating from sklh_idle_state_table_update() and hence observable on
    one kind of CPU only.
    
    Fixes: 5a211704e88 ("mwait-idle: prevent SKL-H boot failure when C8+C9+C10 enabled")
    Signed-off-by: Tamas K Lengyel <tamas.lengyel@intel.com>
    Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>

commit cc5a436002c418dc970677a3e99099968fd47ec3
Author: Juergen Gross <jgross@suse.com>
Date:   Mon Jan 8 10:16:42 2024 +0100

    xen/public: add some more 9pfs xenstore paths
    
    Add some optional additional backend paths for 9pfs PV devices. Those
    paths will be supported by the new xen-9pfsd 9pfs backend.
    
    Signed-off-by: Juergen Gross <jgross@suse.com>
    Reviewed-by: Jason Andryuk <jandryuk@gmail.com>

commit 589d8cf146290bdc7f4347bced10c20bd14791f6
Author: Oleksii Kurochko <oleksii.kurochko@gmail.com>
Date:   Wed Dec 20 16:08:29 2023 +0200

    xen: ifdef inclusion of <asm/grant_table.h> in <xen/grant_table.h>
    
    Ifdef-ing inclusion of <asm/grant_table.h> allows to avoid
    generation of empty <asm/grant_table.h> for cases when
    CONFIG_GRANT_TABLE is not enabled.
    
    The following changes were done for Arm:
    <asm/grant_table.h> should be included directly because it contains
    gnttab_dom0_frames() macros which is unique for Arm and is used in
    arch/arm/domain_build.c.
    <asm/grant_table.h> is #ifdef-ed with CONFIG_GRANT_TABLE in
    <xen/grant_table.h> so in case of !CONFIG_GRANT_TABLE gnttab_dom0_frames
    won't be available for use in arch/arm/domain_build.c.
    
    Suggested-by: Jan Beulich <jbeulich@suse.com>
    Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>
    Acked-by: Julien Grall <jgrall@amazon.com>
    Acked-by: Shawn Anastasio <sanastasio@raptorengineering.com>

commit 42b814b7ff0af0022cb93c912120b59b08173158
Author: Oleksii Kurochko <oleksii.kurochko@gmail.com>
Date:   Wed Dec 20 16:08:28 2023 +0200

    xen/asm-generic: introduce stub header softirq.h
    
    <asm/softirq.h> is common between Arm, PPC and RISC-V so it is
    moved to asm-generic.
    
    Drop Arm and PPC's softirq.h and use asm-generic version instead.
    
    Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>
    Reviewed-by: Michal Orzel <michal.orzel@amd.com>
    Acked-by: Jan Beulich <jbeulich@suse.com>
    Acked-by: Shawn Anastasio <sanastasio@raptorengineering.com>
    Acked-by: Julien Grall <jgrall@amazon.com>

commit e2c7111d6505d49274f9c0d0148a956bd62c3595
Author: Oleksii Kurochko <oleksii.kurochko@gmail.com>
Date:   Wed Dec 20 16:08:25 2023 +0200

    xen/asm-generic: introduce generic div64.h header
    
    All archs have the do_div implementation for BITS_PER_LONG == 64
    so do_div64.h is moved to asm-generic.
    
    x86 and PPC were switched to asm-generic version of div64.h.
    Arm was switched partly because Arm has different implementation
    for 32-bits.
    
    Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>
    Acked-by: Jan Beulich <jbeulich@suse.com>
    Acked-by: Shawn Anastasio <sanastasio@raptorengineering.com>
    Acked-by: Julien Grall <jgrall@amazon.com>
(qemu changes not included)


From xen-devel-bounces@lists.xenproject.org Tue Jan 09 05:10:41 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 09 Jan 2024 05:10:41 +0000
Received: from list by lists.xenproject.org with outflank-mailman.664285.1034391 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rN4Nf-0005Bm-2R; Tue, 09 Jan 2024 05:10:27 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 664285.1034391; Tue, 09 Jan 2024 05:10:27 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rN4Ne-0005B7-UM; Tue, 09 Jan 2024 05:10:26 +0000
Received: by outflank-mailman (input) for mailman id 664285;
 Tue, 09 Jan 2024 05:10:25 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rN4Nd-0005Ax-MJ; Tue, 09 Jan 2024 05:10:25 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rN4Nd-0006m8-K7; Tue, 09 Jan 2024 05:10:25 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rN4Nd-0003PY-9j; Tue, 09 Jan 2024 05:10:25 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rN4Nd-0000O5-93; Tue, 09 Jan 2024 05:10:25 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=mDgN/64GzDBvPQXMxU0ZD8M/cycxHLlYD6AAozn83b4=; b=bJBiED5ZPjs+micyNwybbt2xcc
	E4zUSHHA68t3tFG9tCxS6dKop0GACHpM8TF/VjaxU+H5snZSGrxYYZJAqFGogJxaWLWYNCuwj31M2
	qOC7hud9gGgycyMq63wARmx0zgtVT5aciDtViDSbMqtcT0FkbRS5v0nF0kLOW9ATIM6U=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184288-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [ovmf test] 184288: all pass - PUSHED
X-Osstest-Versions-This:
    ovmf=f2b074398ca0624206355524a1c5f653ff87876a
X-Osstest-Versions-That:
    ovmf=e7152e6186d31bc138fbd2592e07886005177aab
From: osstest service owner <osstest-admin@xenproject.org>
Date: Tue, 09 Jan 2024 05:10:25 +0000

flight 184288 ovmf real [real]
http://logs.test-lab.xenproject.org/osstest/logs/184288/

Perfect :-)
All tests in this flight passed as required
version targeted for testing:
 ovmf                 f2b074398ca0624206355524a1c5f653ff87876a
baseline version:
 ovmf                 e7152e6186d31bc138fbd2592e07886005177aab

Last test of basis   184276  2024-01-08 10:43:33 Z    0 days
Testing same since   184288  2024-01-09 03:12:49 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Suqiang Ren <suqiangx.ren@intel.com>

jobs:
 build-amd64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-amd64-amd64-xl-qemuu-ovmf-amd64                         pass    
 test-amd64-i386-xl-qemuu-ovmf-amd64                          pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Pushing revision :

To xenbits.xen.org:/home/xen/git/osstest/ovmf.git
   e7152e6186..f2b074398c  f2b074398ca0624206355524a1c5f653ff87876a -> xen-tested-master


From xen-devel-bounces@lists.xenproject.org Tue Jan 09 05:42:24 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 09 Jan 2024 05:42:24 +0000
Received: from list by lists.xenproject.org with outflank-mailman.664291.1034400 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rN4sS-0001zw-6P; Tue, 09 Jan 2024 05:42:16 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 664291.1034400; Tue, 09 Jan 2024 05:42:16 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rN4sS-0001zp-3o; Tue, 09 Jan 2024 05:42:16 +0000
Received: by outflank-mailman (input) for mailman id 664291;
 Tue, 09 Jan 2024 05:42:14 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rN4sQ-0001zf-Mb; Tue, 09 Jan 2024 05:42:14 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rN4sQ-0007Ho-Kn; Tue, 09 Jan 2024 05:42:14 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rN4sQ-0004rd-8M; Tue, 09 Jan 2024 05:42:14 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rN4sQ-0007WI-7l; Tue, 09 Jan 2024 05:42:14 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=3ac4YiWoC9o8VNWepVQVo5lfiRNl8GH+P05WoFtSd6k=; b=EYSGVwM/rnUzKOmIduPidoKKJG
	/T3yxZl7x/N0Sd/fd8TLvAropSOaLQxlrV8c4sAR6hyd/2tZ3JLY6UFg/yn03y3bYKRjCkKuOrNLd
	m85OkbkX7iQi1ttXYjRaz1VgCjQN6ctmtifbDqyzA7j6lPZpTPqrP+1vAK6tN63iW2DI=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184283-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [linux-linus test] 184283: regressions - FAIL
X-Osstest-Failures:
    linux-linus:build-arm64-pvops:kernel-build:fail:regression
    linux-linus:test-arm64-arm64-examine:build-check(1):blocked:nonblocking
    linux-linus:test-arm64-arm64-libvirt-raw:build-check(1):blocked:nonblocking
    linux-linus:test-arm64-arm64-libvirt-xsm:build-check(1):blocked:nonblocking
    linux-linus:test-arm64-arm64-xl:build-check(1):blocked:nonblocking
    linux-linus:test-arm64-arm64-xl-credit1:build-check(1):blocked:nonblocking
    linux-linus:test-arm64-arm64-xl-credit2:build-check(1):blocked:nonblocking
    linux-linus:test-arm64-arm64-xl-thunderx:build-check(1):blocked:nonblocking
    linux-linus:test-arm64-arm64-xl-vhd:build-check(1):blocked:nonblocking
    linux-linus:test-arm64-arm64-xl-xsm:build-check(1):blocked:nonblocking
    linux-linus:test-amd64-amd64-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    linux-linus:test-amd64-amd64-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    linux-linus:test-amd64-amd64-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-qcow2:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-raw:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    linux-linus:test-amd64-amd64-qemuu-nested-amd:debian-hvm-install/l1/l2:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-xsm:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-multivcpu:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-multivcpu:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-qcow2:migrate-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-arndale:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-arndale:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-rtds:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-rtds:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit1:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit1:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit2:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit2:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-qcow2:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-vhd:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-vhd:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl:saverestore-support-check:fail:nonblocking
X-Osstest-Versions-This:
    linux=5db8752c3b81bd33a549f6f812bab81e3bb61b20
X-Osstest-Versions-That:
    linux=0dd3ee31125508cd67f7e7172247f05b7fd1753a
From: osstest service owner <osstest-admin@xenproject.org>
Date: Tue, 09 Jan 2024 05:42:14 +0000

flight 184283 linux-linus real [real]
http://logs.test-lab.xenproject.org/osstest/logs/184283/

Regressions :-(

Tests which did not succeed and are blocking,
including tests which could not be run:
 build-arm64-pvops             6 kernel-build             fail REGR. vs. 184270

Tests which did not succeed, but are not blocking:
 test-arm64-arm64-examine      1 build-check(1)               blocked  n/a
 test-arm64-arm64-libvirt-raw  1 build-check(1)               blocked  n/a
 test-arm64-arm64-libvirt-xsm  1 build-check(1)               blocked  n/a
 test-arm64-arm64-xl           1 build-check(1)               blocked  n/a
 test-arm64-arm64-xl-credit1   1 build-check(1)               blocked  n/a
 test-arm64-arm64-xl-credit2   1 build-check(1)               blocked  n/a
 test-arm64-arm64-xl-thunderx  1 build-check(1)               blocked  n/a
 test-arm64-arm64-xl-vhd       1 build-check(1)               blocked  n/a
 test-arm64-arm64-xl-xsm       1 build-check(1)               blocked  n/a
 test-amd64-amd64-xl-qemut-win7-amd64 19 guest-stop            fail like 184270
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 184270
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 184270
 test-armhf-armhf-libvirt-qcow2 15 saverestore-support-check   fail like 184270
 test-armhf-armhf-libvirt-raw 15 saverestore-support-check    fail  like 184270
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 184270
 test-amd64-amd64-xl-qemut-ws16-amd64 19 guest-stop            fail like 184270
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 184270
 test-amd64-amd64-libvirt     15 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-multivcpu 15 migrate-support-check        fail  never pass
 test-armhf-armhf-xl-multivcpu 16 saverestore-support-check    fail  never pass
 test-amd64-amd64-libvirt-qcow2 14 migrate-support-check        fail never pass
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-armhf-armhf-xl-arndale  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-arndale  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-rtds     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-rtds     16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-credit1  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit1  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-credit2  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit2  16 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-raw 14 migrate-support-check        fail   never pass
 test-armhf-armhf-libvirt-qcow2 14 migrate-support-check        fail never pass
 test-armhf-armhf-libvirt-raw 14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          16 saverestore-support-check    fail   never pass

version targeted for testing:
 linux                5db8752c3b81bd33a549f6f812bab81e3bb61b20
baseline version:
 linux                0dd3ee31125508cd67f7e7172247f05b7fd1753a

Last test of basis   184270  2024-01-07 20:42:19 Z    1 days
Testing same since   184283  2024-01-08 20:10:43 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Abhinav Singh <singhabhinav9051571833@gmail.com>
  Al Viro <viro@zeniv.linux.org.uk>
  Alexander Mikhalitsyn <aleksandr.mikhalitsyn@canonical.com>
  Amir Goldstein <amir73il@gmail.com>
  Andrei Vagin <avagin@google.com>
  Andrew Donnellan <ajd@linux.ibm.com> # ocxl
  Bagas Sanjaya <bagasdotme@gmail.com>
  Chandan Babu R <chandanbabu@kernel.org>
  Christian Brauner <brauner@kernel.org>
  Christoph Hellwig <hch@lst.de>
  Christophe JAILLET <christophe.jaillet@wanadoo.fr>
  Chuck Lever <chuck.lever@oracle.com>
  Darrick J. Wong <djwong@kernel.org>
  David Sterba <dsterba@suse.com>
  Dmitry Antipov <dmantipov@yandex.ru>
  Dmitry Torokhov <dmitry.torokhov@gmail.com>
  Edward Adam Davis <eadavis@qq.com>
  Eric Farman <farman@linux.ibm.com>  # s390
  Hao Ge <gehao@kylinos.cn>
  Jan Harkes <jaharkes@cs.cmu.edu>
  Jan Kara <jack@suse.cz>
  Jann Horn <jannh@google.com>
  Jeff Layton <jlayton@kernel.org>
  Jens Axboe <axboe@kernel.dk>
  Jia Zhu <zhujia.zj@bytedance.com>
  Kent Overstreet <kent.overstreet@linux.dev>
  Linus Torvalds <torvalds@linux-foundation.org>
  Lukas Schauer <lukas@schauer.dev>
  Martin K. Petersen <martin.petersen@oracle.com>
  Mateusz Guzik <mjguzik@gmail.com>
  Matthew Wilcox (Oracle) <willy@infradead.org>
  Miklos Szeredi <mszeredi@redhat.com>
  Randy Dunlap <rdunlap@infradead.org>
  Ryusuke Konishi <konishi.ryusuke@gmail.com>
  Vegard Nossum <vegard.nossum@oracle.com>
  Xin Yin <yinxin.x@bytedance.com>
  Xu Yilun <yilun.xu@intel.com>
  YangXin <yx.0xffff@gmail.com>

jobs:
 build-amd64-xsm                                              pass    
 build-arm64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64                                                  pass    
 build-arm64                                                  pass    
 build-armhf                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-arm64-libvirt                                          pass    
 build-armhf-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-pvops                                            pass    
 build-arm64-pvops                                            fail    
 build-armhf-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-amd64-amd64-xl                                          pass    
 test-amd64-coresched-amd64-xl                                pass    
 test-arm64-arm64-xl                                          blocked 
 test-armhf-armhf-xl                                          pass    
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm           pass    
 test-amd64-amd64-xl-qemut-stubdom-debianhvm-amd64-xsm        pass    
 test-amd64-amd64-xl-qemut-debianhvm-i386-xsm                 pass    
 test-amd64-amd64-xl-qemuu-debianhvm-i386-xsm                 pass    
 test-amd64-amd64-libvirt-xsm                                 pass    
 test-arm64-arm64-libvirt-xsm                                 blocked 
 test-amd64-amd64-xl-xsm                                      pass    
 test-arm64-arm64-xl-xsm                                      blocked 
 test-amd64-amd64-qemuu-nested-amd                            fail    
 test-amd64-amd64-xl-pvhv2-amd                                pass    
 test-amd64-amd64-dom0pvh-xl-amd                              pass    
 test-amd64-amd64-xl-qemut-debianhvm-amd64                    pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64                    pass    
 test-amd64-amd64-freebsd11-amd64                             pass    
 test-amd64-amd64-freebsd12-amd64                             pass    
 test-amd64-amd64-xl-qemuu-ovmf-amd64                         pass    
 test-amd64-amd64-xl-qemut-win7-amd64                         fail    
 test-amd64-amd64-xl-qemuu-win7-amd64                         fail    
 test-amd64-amd64-xl-qemut-ws16-amd64                         fail    
 test-amd64-amd64-xl-qemuu-ws16-amd64                         fail    
 test-armhf-armhf-xl-arndale                                  pass    
 test-amd64-amd64-examine-bios                                pass    
 test-amd64-amd64-xl-credit1                                  pass    
 test-arm64-arm64-xl-credit1                                  blocked 
 test-armhf-armhf-xl-credit1                                  pass    
 test-amd64-amd64-xl-credit2                                  pass    
 test-arm64-arm64-xl-credit2                                  blocked 
 test-armhf-armhf-xl-credit2                                  pass    
 test-amd64-amd64-xl-qemuu-dmrestrict-amd64-dmrestrict        pass    
 test-amd64-amd64-examine                                     pass    
 test-arm64-arm64-examine                                     blocked 
 test-armhf-armhf-examine                                     pass    
 test-amd64-amd64-qemuu-nested-intel                          pass    
 test-amd64-amd64-xl-pvhv2-intel                              pass    
 test-amd64-amd64-dom0pvh-xl-intel                            pass    
 test-amd64-amd64-libvirt                                     pass    
 test-armhf-armhf-libvirt                                     pass    
 test-amd64-amd64-xl-multivcpu                                pass    
 test-armhf-armhf-xl-multivcpu                                pass    
 test-amd64-amd64-pair                                        pass    
 test-amd64-amd64-libvirt-pair                                pass    
 test-amd64-amd64-xl-pvshim                                   pass    
 test-amd64-amd64-pygrub                                      pass    
 test-amd64-amd64-libvirt-qcow2                               pass    
 test-armhf-armhf-libvirt-qcow2                               pass    
 test-amd64-amd64-libvirt-raw                                 pass    
 test-arm64-arm64-libvirt-raw                                 blocked 
 test-armhf-armhf-libvirt-raw                                 pass    
 test-amd64-amd64-xl-rtds                                     pass    
 test-armhf-armhf-xl-rtds                                     pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64-shadow             pass    
 test-amd64-amd64-xl-shadow                                   pass    
 test-arm64-arm64-xl-thunderx                                 blocked 
 test-amd64-amd64-examine-uefi                                pass    
 test-amd64-amd64-xl-vhd                                      pass    
 test-arm64-arm64-xl-vhd                                      blocked 
 test-armhf-armhf-xl-vhd                                      pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Not pushing.

(No revision log; it would be 2717 lines long.)


From xen-devel-bounces@lists.xenproject.org Tue Jan 09 07:24:17 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 09 Jan 2024 07:24:17 +0000
Received: from list by lists.xenproject.org with outflank-mailman.664297.1034411 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rN6Sx-0003Dy-R1; Tue, 09 Jan 2024 07:24:03 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 664297.1034411; Tue, 09 Jan 2024 07:24:03 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rN6Sx-0003Dr-NQ; Tue, 09 Jan 2024 07:24:03 +0000
Received: by outflank-mailman (input) for mailman id 664297;
 Tue, 09 Jan 2024 07:24:03 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rN6Sx-0003Dh-75; Tue, 09 Jan 2024 07:24:03 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rN6Sx-0000r2-39; Tue, 09 Jan 2024 07:24:03 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rN6Sw-0008Ix-Kp; Tue, 09 Jan 2024 07:24:02 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rN6Sw-0003co-KJ; Tue, 09 Jan 2024 07:24:02 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=b1GaZYmrI9sAGgR9+BB4S0Updaqw3d2iqA0DF5vCpTw=; b=Mw3Bjt/wgvydp7QykgBePpGUi+
	qpxTbGr/Ylig65sT6PBgjVXiXHuQWPlO3OVN+5JMUVyqorhYhBI/ql8iRkTTARnuHpt8iUcMLzZYO
	wDTq4JU9QEn3JFr+HXc+liJo/It4MyRKuYq6UtvKgSQirGh5OWOkSYw6Nlcf5FmiRHJY=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184281-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [linux-5.4 test] 184281: regressions - FAIL
X-Osstest-Failures:
    linux-5.4:test-arm64-arm64-libvirt-raw:guest-start/debian.repeat:fail:regression
    linux-5.4:test-armhf-armhf-xl-multivcpu:guest-start/debian.repeat:fail:regression
    linux-5.4:test-amd64-amd64-xl-qemut-debianhvm-i386-xsm:debian-hvm-install:fail:heisenbug
    linux-5.4:test-armhf-armhf-xl-multivcpu:guest-start:fail:heisenbug
    linux-5.4:test-armhf-armhf-xl-credit2:guest-start:fail:heisenbug
    linux-5.4:test-armhf-armhf-xl:guest-start/debian.repeat:fail:heisenbug
    linux-5.4:test-armhf-armhf-xl-rtds:guest-start:fail:allowable
    linux-5.4:test-armhf-armhf-libvirt-qcow2:saverestore-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-credit2:guest-start/debian.repeat:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-multivcpu:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-multivcpu:saverestore-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-credit2:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-credit2:saverestore-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-credit1:guest-start:fail:nonblocking
    linux-5.4:test-armhf-armhf-libvirt:saverestore-support-check:fail:nonblocking
    linux-5.4:test-amd64-amd64-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    linux-5.4:test-amd64-i386-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    linux-5.4:test-amd64-i386-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    linux-5.4:test-amd64-amd64-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    linux-5.4:test-amd64-amd64-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    linux-5.4:test-amd64-amd64-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    linux-5.4:test-armhf-armhf-libvirt-raw:saverestore-support-check:fail:nonblocking
    linux-5.4:test-amd64-i386-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    linux-5.4:test-amd64-i386-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    linux-5.4:test-amd64-amd64-qemuu-nested-amd:debian-hvm-install/l1/l2:fail:nonblocking
    linux-5.4:test-amd64-i386-libvirt-xsm:migrate-support-check:fail:nonblocking
    linux-5.4:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    linux-5.4:test-amd64-i386-libvirt:migrate-support-check:fail:nonblocking
    linux-5.4:test-amd64-i386-xl-pvshim:guest-start:fail:nonblocking
    linux-5.4:test-amd64-amd64-libvirt-xsm:migrate-support-check:fail:nonblocking
    linux-5.4:test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl:saverestore-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-xsm:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-xsm:saverestore-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-libvirt-xsm:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-libvirt-xsm:saverestore-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-thunderx:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-thunderx:saverestore-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-credit1:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-credit1:saverestore-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-credit2:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-credit2:saverestore-support-check:fail:nonblocking
    linux-5.4:test-amd64-i386-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-5.4:test-amd64-amd64-libvirt-vhd:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl:saverestore-support-check:fail:nonblocking
    linux-5.4:test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-arndale:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-arndale:saverestore-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-libvirt:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-libvirt-raw:saverestore-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-vhd:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-vhd:saverestore-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-libvirt-qcow2:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-vhd:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-vhd:saverestore-support-check:fail:nonblocking
X-Osstest-Versions-This:
    linux=4410df70110ff5175bf7f7fdc3bae5c80f2c36d9
X-Osstest-Versions-That:
    linux=2d21f73b2f16f51608c8d8b1726df270229a5006
From: osstest service owner <osstest-admin@xenproject.org>
Date: Tue, 09 Jan 2024 07:24:02 +0000

flight 184281 linux-5.4 real [real]
http://logs.test-lab.xenproject.org/osstest/logs/184281/

Regressions :-(

Tests which did not succeed and are blocking,
including tests which could not be run:
 test-arm64-arm64-libvirt-raw 17 guest-start/debian.repeat fail REGR. vs. 184192
 test-armhf-armhf-xl-multivcpu 18 guest-start/debian.repeat fail in 184275 REGR. vs. 184192

Tests which are failing intermittently (not blocking):
 test-amd64-amd64-xl-qemut-debianhvm-i386-xsm 12 debian-hvm-install fail in 184275 pass in 184281
 test-armhf-armhf-xl-multivcpu 14 guest-start               fail pass in 184275
 test-armhf-armhf-xl-credit2  14 guest-start                fail pass in 184275
 test-armhf-armhf-xl          18 guest-start/debian.repeat  fail pass in 184275

Regressions which are regarded as allowable (not blocking):
 test-armhf-armhf-xl-rtds     14 guest-start              fail REGR. vs. 184192

Tests which did not succeed, but are not blocking:
 test-armhf-armhf-libvirt-qcow2 15 saverestore-support-check fail blocked in 184192
 test-armhf-armhf-xl-credit2 18 guest-start/debian.repeat fail in 184275 like 184192
 test-armhf-armhf-xl-multivcpu 15 migrate-support-check fail in 184275 never pass
 test-armhf-armhf-xl-multivcpu 16 saverestore-support-check fail in 184275 never pass
 test-armhf-armhf-xl-credit2 15 migrate-support-check fail in 184275 never pass
 test-armhf-armhf-xl-credit2 16 saverestore-support-check fail in 184275 never pass
 test-armhf-armhf-xl-credit1  14 guest-start                  fail  like 184192
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 184192
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 184192
 test-amd64-i386-xl-qemut-win7-amd64 19 guest-stop             fail like 184192
 test-amd64-i386-xl-qemuu-win7-amd64 19 guest-stop             fail like 184192
 test-amd64-amd64-xl-qemut-win7-amd64 19 guest-stop            fail like 184192
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 184192
 test-amd64-amd64-xl-qemut-ws16-amd64 19 guest-stop            fail like 184192
 test-armhf-armhf-libvirt-raw 15 saverestore-support-check    fail  like 184192
 test-amd64-i386-xl-qemut-ws16-amd64 19 guest-stop             fail like 184192
 test-amd64-i386-xl-qemuu-ws16-amd64 19 guest-stop             fail like 184192
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 184192
 test-amd64-i386-libvirt-xsm  15 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt     15 migrate-support-check        fail   never pass
 test-amd64-i386-libvirt      15 migrate-support-check        fail   never pass
 test-amd64-i386-xl-pvshim    14 guest-start                  fail   never pass
 test-amd64-amd64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-arm64-arm64-xl          15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl          16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-xsm      15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-xsm      16 saverestore-support-check    fail   never pass
 test-arm64-arm64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-xsm 16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-thunderx 15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-thunderx 16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-credit1  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit1  16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-credit2  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit2  16 saverestore-support-check    fail   never pass
 test-amd64-i386-libvirt-raw  14 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt-vhd 14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          16 saverestore-support-check    fail   never pass
 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-armhf-armhf-xl-arndale  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-arndale  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt     15 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 15 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-vhd      14 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-vhd      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-qcow2 14 migrate-support-check        fail never pass
 test-armhf-armhf-libvirt-raw 14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      15 saverestore-support-check    fail   never pass

version targeted for testing:
 linux                4410df70110ff5175bf7f7fdc3bae5c80f2c36d9
baseline version:
 linux                2d21f73b2f16f51608c8d8b1726df270229a5006

Last test of basis   184192  2023-12-20 15:16:31 Z   19 days
Testing same since   184275  2024-01-08 10:43:33 Z    0 days    2 attempts

------------------------------------------------------------
People who touched revisions under test:
  Alexander Gordeev <agordeev@linux.ibm.com>
  Alexis Lothoré <alexis.lothore@bootlin.com>
  Alper Ak <alperyasinak1@gmail.com>
  Bin Li <bin.li@canonical.com>
  Borislav Petkov (AMD) <bp@alien8.de>
  Chen-Yu Tsai <wens@kernel.org>
  Dan Carpenter <dan.carpenter@linaro.org>
  David Howells <dhowells@redhat.com>
  David S. Miller <davem@davemloft.net>
  David Sterba <dsterba@suse.com>
  Dmitry Torokhov <dmitry.torokhov@gmail.com>
  Dominique Martinet <asmadeus@codewreck.org>
  Eric Dumazet <edumazet@google.com>
  Fedor Pchelkin <pchelkin@ispras.ru>
  Florian Fainelli <florian.fainelli@broadcom.com>
  Geert Uytterhoeven <geert+renesas@glider.be>
  Georgi Djakov <djakov@kernel.org>
  Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  Haoran Liu <liuhaoran14@163.com>
  Harshit Mogalapalli <harshit.m.mogalapalli@oracle.com>
  Heiko Carstens <hca@linux.ibm.com>
  Heiner Kallweit <hkallweit1@gmail.com>
  Hu Haowen <xianfengting221@163.com>
  Jakub Kicinski <kuba@kernel.org>
  Jamal Hadi Salim <jhs@mojatatu.com>
  Javier Carrasco <javier.carrasco.cruz@gmail.com>
  Jens Axboe <axboe@kernel.dk>
  Johan Hovold <johan@kernel.org>
  Johannes Berg <johannes.berg@intel.com>
  Jonathan Cameron <Jonathan.Cameron@huawei.com>
  Josef Bacik <josef@toxicpanda.com>
  Kai Vehmanen <kai.vehmanen@linux.intel.com>
  kernelci.org bot <bot@kernelci.org>
  Kunwu Chan <chentao@kylinos.cn>
  Linus Torvalds <torvalds@linux-foundation.org>
  Linus Walleij <linus.walleij@linaro.org>
  Linux Kernel Functional Testing <lkft@linaro.org>
  Liu Jian <liujian56@huawei.com>
  Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
  Mark Glover <mark.glover@actisense.com>
  Markus Suvanto <markus.suvanto@gmail.com>
  Martin K. Petersen <martin.petersen@oracle.com>
  Masami Hiramatsu (Google) <mhiramat@kernel.org>
  Mike Snitzer <snitzer@kernel.org>
  Mike Tipton <quic_mdtipton@quicinc.com>
  Miri Korenblit <miriam.rachel.korenblit@intel.com>
  Moshe Shemesh <moshe@nvidia.com>
  Namjae Jeon <linkinjeon@kernel.org>
  Paolo Abeni <pabeni@redhat.com>
  Paulo Alcantara (SUSE) <pc@manguebit.com>
  Paulo Alcantara <pc@manguebit.com>
  Peter Zijlstra (Intel) <peterz@infradead.org>
  Philipp Zabel <p.zabel@pengutronix.de>
  Quan Nguyen <quan@os.amperecomputing.com>
  Rahul Rameshbabu <rrameshbabu@nvidia.com>
  Reinhard Speyerer <rspmn@arcor.de>
  Rouven Czerwinski <r.czerwinski@pengutronix.de>
  Saeed Mahameed <saeedm@mellanox.com>
  Saeed Mahameed <saeedm@nvidia.com>
  Sarthak Kukreti <sarthakkukreti@chromium.org>
  Sasha Levin <sashal@kernel.org>
  Seth Forshee <sforshee@kernel.org>
  Slark Xiao <slark_xiao@163.com>
  Steve French <stfrench@microsoft.com>
  Steven Rostedt (Google) <rostedt@goodmis.org>
  Su Hui <suhui@nfschina.com>
  Takashi Iwai <tiwai@suse.de>
  Thomas Gleixner <tglx@linutronix.de>
  Tony Lindgren <tony@atomide.com>
  Vlad Buslov <vladbu@nvidia.com>
  Wadim Egorov <w.egorov@phytec.de>
  Wei Yongjun <weiyongjun1@huawei.com>
  Wolfram Sang <wsa@kernel.org>
  Zhipeng Lu <alexious@zju.edu.cn>

jobs:
 build-amd64-xsm                                              pass    
 build-arm64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64                                                  pass    
 build-arm64                                                  pass    
 build-armhf                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-arm64-libvirt                                          pass    
 build-armhf-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-pvops                                            pass    
 build-arm64-pvops                                            pass    
 build-armhf-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-amd64-amd64-xl                                          pass    
 test-amd64-coresched-amd64-xl                                pass    
 test-arm64-arm64-xl                                          pass    
 test-armhf-armhf-xl                                          fail    
 test-amd64-i386-xl                                           pass    
 test-amd64-coresched-i386-xl                                 pass    
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm           pass    
 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm            pass    
 test-amd64-amd64-xl-qemut-stubdom-debianhvm-amd64-xsm        pass    
 test-amd64-i386-xl-qemut-stubdom-debianhvm-amd64-xsm         pass    
 test-amd64-amd64-xl-qemut-debianhvm-i386-xsm                 pass    
 test-amd64-i386-xl-qemut-debianhvm-i386-xsm                  pass    
 test-amd64-amd64-xl-qemuu-debianhvm-i386-xsm                 pass    
 test-amd64-i386-xl-qemuu-debianhvm-i386-xsm                  pass    
 test-amd64-amd64-libvirt-xsm                                 pass    
 test-arm64-arm64-libvirt-xsm                                 pass    
 test-amd64-i386-libvirt-xsm                                  pass    
 test-amd64-amd64-xl-xsm                                      pass    
 test-arm64-arm64-xl-xsm                                      pass    
 test-amd64-i386-xl-xsm                                       pass    
 test-amd64-amd64-qemuu-nested-amd                            fail    
 test-amd64-amd64-xl-pvhv2-amd                                pass    
 test-amd64-i386-qemut-rhel6hvm-amd                           pass    
 test-amd64-i386-qemuu-rhel6hvm-amd                           pass    
 test-amd64-amd64-dom0pvh-xl-amd                              pass    
 test-amd64-amd64-xl-qemut-debianhvm-amd64                    pass    
 test-amd64-i386-xl-qemut-debianhvm-amd64                     pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64                    pass    
 test-amd64-i386-xl-qemuu-debianhvm-amd64                     pass    
 test-amd64-i386-freebsd10-amd64                              pass    
 test-amd64-amd64-qemuu-freebsd11-amd64                       pass    
 test-amd64-amd64-qemuu-freebsd12-amd64                       pass    
 test-amd64-amd64-xl-qemuu-ovmf-amd64                         pass    
 test-amd64-i386-xl-qemuu-ovmf-amd64                          pass    
 test-amd64-amd64-xl-qemut-win7-amd64                         fail    
 test-amd64-i386-xl-qemut-win7-amd64                          fail    
 test-amd64-amd64-xl-qemuu-win7-amd64                         fail    
 test-amd64-i386-xl-qemuu-win7-amd64                          fail    
 test-amd64-amd64-xl-qemut-ws16-amd64                         fail    
 test-amd64-i386-xl-qemut-ws16-amd64                          fail    
 test-amd64-amd64-xl-qemuu-ws16-amd64                         fail    
 test-amd64-i386-xl-qemuu-ws16-amd64                          fail    
 test-armhf-armhf-xl-arndale                                  pass    
 test-amd64-amd64-examine-bios                                pass    
 test-amd64-i386-examine-bios                                 pass    
 test-amd64-amd64-xl-credit1                                  pass    
 test-arm64-arm64-xl-credit1                                  pass    
 test-armhf-armhf-xl-credit1                                  fail    
 test-amd64-amd64-xl-credit2                                  pass    
 test-arm64-arm64-xl-credit2                                  pass    
 test-armhf-armhf-xl-credit2                                  fail    
 test-amd64-amd64-xl-qemuu-dmrestrict-amd64-dmrestrict        pass    
 test-amd64-i386-xl-qemuu-dmrestrict-amd64-dmrestrict         pass    
 test-amd64-amd64-examine                                     pass    
 test-arm64-arm64-examine                                     pass    
 test-armhf-armhf-examine                                     pass    
 test-amd64-i386-examine                                      pass    
 test-amd64-i386-freebsd10-i386                               pass    
 test-amd64-amd64-qemuu-nested-intel                          pass    
 test-amd64-amd64-xl-pvhv2-intel                              pass    
 test-amd64-i386-qemut-rhel6hvm-intel                         pass    
 test-amd64-i386-qemuu-rhel6hvm-intel                         pass    
 test-amd64-amd64-dom0pvh-xl-intel                            pass    
 test-amd64-amd64-libvirt                                     pass    
 test-armhf-armhf-libvirt                                     pass    
 test-amd64-i386-libvirt                                      pass    
 test-amd64-amd64-xl-multivcpu                                pass    
 test-armhf-armhf-xl-multivcpu                                fail    
 test-amd64-amd64-pair                                        pass    
 test-amd64-i386-pair                                         pass    
 test-amd64-amd64-libvirt-pair                                pass    
 test-amd64-i386-libvirt-pair                                 pass    
 test-amd64-amd64-xl-pvshim                                   pass    
 test-amd64-i386-xl-pvshim                                    fail    
 test-amd64-amd64-pygrub                                      pass    
 test-armhf-armhf-libvirt-qcow2                               pass    
 test-amd64-amd64-xl-qcow2                                    pass    
 test-arm64-arm64-libvirt-raw                                 fail    
 test-armhf-armhf-libvirt-raw                                 pass    
 test-amd64-i386-libvirt-raw                                  pass    
 test-amd64-amd64-xl-rtds                                     pass    
 test-armhf-armhf-xl-rtds                                     fail    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64-shadow             pass    
 test-amd64-i386-xl-qemuu-debianhvm-amd64-shadow              pass    
 test-amd64-amd64-xl-shadow                                   pass    
 test-amd64-i386-xl-shadow                                    pass    
 test-arm64-arm64-xl-thunderx                                 pass    
 test-amd64-amd64-examine-uefi                                pass    
 test-amd64-i386-examine-uefi                                 pass    
 test-amd64-amd64-libvirt-vhd                                 pass    
 test-arm64-arm64-xl-vhd                                      pass    
 test-armhf-armhf-xl-vhd                                      pass    
 test-amd64-i386-xl-vhd                                       pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Not pushing.

(No revision log; it would be 1652 lines long.)


From xen-devel-bounces@lists.xenproject.org Tue Jan 09 07:58:29 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 09 Jan 2024 07:58:29 +0000
Received: from list by lists.xenproject.org with outflank-mailman.664305.1034421 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rN70A-0007rS-HL; Tue, 09 Jan 2024 07:58:22 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 664305.1034421; Tue, 09 Jan 2024 07:58:22 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rN70A-0007rL-EW; Tue, 09 Jan 2024 07:58:22 +0000
Received: by outflank-mailman (input) for mailman id 664305;
 Tue, 09 Jan 2024 07:58:21 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=2W5I=IT=amd.com=Jiqian.Chen@srs-se1.protection.inumbo.net>)
 id 1rN709-0007rF-0I
 for xen-devel@lists.xenproject.org; Tue, 09 Jan 2024 07:58:21 +0000
Received: from NAM02-DM3-obe.outbound.protection.outlook.com
 (mail-dm3nam02on20618.outbound.protection.outlook.com
 [2a01:111:f400:7e83::618])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id d964bddf-aec4-11ee-98ef-6d05b1d4d9a1;
 Tue, 09 Jan 2024 08:58:19 +0100 (CET)
Received: from BL1PR12MB5849.namprd12.prod.outlook.com (2603:10b6:208:384::18)
 by SJ2PR12MB8832.namprd12.prod.outlook.com (2603:10b6:a03:4d0::5)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7159.23; Tue, 9 Jan
 2024 07:58:15 +0000
Received: from BL1PR12MB5849.namprd12.prod.outlook.com
 ([fe80::969f:11b3:5ec2:3aa1]) by BL1PR12MB5849.namprd12.prod.outlook.com
 ([fe80::969f:11b3:5ec2:3aa1%3]) with mapi id 15.20.7159.020; Tue, 9 Jan 2024
 07:58:15 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: d964bddf-aec4-11ee-98ef-6d05b1d4d9a1
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=VDFwk74PE/blCj5dP0LK/42MUreRy4VAiIBn0Ot+cd01a+kywwN789X9lciaVekwELBZ50z8ntAbT2Kl6+DZv/lR//f8tSGtuXJxZYQHPtzxb9EPTRO6FMR+MfG6CdiGyhxW2N8/i0+9hrajDHTnipWurRtM4/ikadtnS6HYh1N6L+glW6qc6pYQPxoxHmipT+NrfjsnzhyrXK3e3VAeK/+zydoICJlKR7xvownwmxyxgcuYNrXDGx9NuDx0LybggUed+3iFKV9LD4sPXMcDYTK/KASBkCM+URRzV0DKs+6onSPRwffDWJbS49qA9JgJrh2YenTe4BCf3HWaSYtb7A==
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=kxueewzXbPVw3Zgi9Y61KkYrapyjpxz5Ae2hR6rqlOg=;
 b=ARrFi4kryRzpNze1jvXnZW1cJ+AQ/HU4UyzNBF41zuxTVXsKbIN3S7IuCMpzu6hBgn71wrNZiWuXMDfPOmUnW2uYxuLJY9Hi5c6FD6dcpzwYGAnrQG6fg5BilltN/pacUzySAxBnwSOfZTk/lAr0ayASky1lrA7QL2/56+foNXEeiqtUlX3HuLm9+2Akmcj3lSzFOavmAglyMk0eHc2EU7nXzKDiowyaEenqPF1WhR4cQImY9jsQcbBMp3mc1EQUFjZNYuvBGED5LIcZ3FNxjo+nzaa05eMNABPcqMaZ4G0Fv0WH/t5OFHA8P99Ot6SqtZmqhiBXCHEh9H6OERTz5w==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=amd.com; dmarc=pass action=none header.from=amd.com; dkim=pass
 header.d=amd.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=kxueewzXbPVw3Zgi9Y61KkYrapyjpxz5Ae2hR6rqlOg=;
 b=SLug8qEx+Oryhj7UiL0WwoVXxmXbmSfx2Bz/8MxrzAlv1imOSPEXKHSCopxPzEnwTfznIIYeiUl7Cbiz/GaT27VS68CZWfcLbi0C0xViGKfQ3DGub9uCspz1Q4/H79Uk5twbHAUNnbpL+mRddNSb1/6UBOMoUeXithn8q8jLe6k=
From: "Chen, Jiqian" <Jiqian.Chen@amd.com>
To: Jan Beulich <jbeulich@suse.com>
CC: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>, Andrew
 Cooper <andrew.cooper3@citrix.com>, =?utf-8?B?Um9nZXIgUGF1IE1vbm7DqQ==?=
	<roger.pau@citrix.com>, Wei Liu <wl@xen.org>, George Dunlap
	<george.dunlap@citrix.com>, Julien Grall <julien@xen.org>, Anthony PERARD
	<anthony.perard@citrix.com>, Juergen Gross <jgross@suse.com>, "Hildebrand,
 Stewart" <Stewart.Hildebrand@amd.com>, "Huang, Ray" <Ray.Huang@amd.com>,
	Stefano Stabellini <sstabellini@kernel.org>, "Chen, Jiqian"
	<Jiqian.Chen@amd.com>
Subject: Re: [RFC XEN PATCH v4 2/5] x86/pvh: Allow (un)map_pirq when caller
 isn't DOMID_SELF
Thread-Topic: [RFC XEN PATCH v4 2/5] x86/pvh: Allow (un)map_pirq when caller
 isn't DOMID_SELF
Thread-Index: AQHaP6YuSUk29qg8QEWwkYk64ozIULDL9CiAgAOrDICAAImKAP//gTEAgAH/ogA=
Date: Tue, 9 Jan 2024 07:58:15 +0000
Message-ID:
 <BL1PR12MB584976595DC15018BE5D6489E76A2@BL1PR12MB5849.namprd12.prod.outlook.com>
References: <20240105070920.350113-1-Jiqian.Chen@amd.com>
 <20240105070920.350113-3-Jiqian.Chen@amd.com>
 <alpine.DEB.2.22.394.2401051639240.3675@ubuntu-linux-20-04-desktop>
 <242dbf1f-ef3e-42cc-906e-5c5bb01d8e31@suse.com>
 <BL1PR12MB58495C90CEC83B6EF66651A0E76B2@BL1PR12MB5849.namprd12.prod.outlook.com>
 <14986c92-7479-4258-be59-8606018c5885@suse.com>
In-Reply-To: <14986c92-7479-4258-be59-8606018c5885@suse.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-ms-exchange-imapappendstamp: BL1PR12MB5045.namprd12.prod.outlook.com
 (15.20.7181.004)
authentication-results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=amd.com;
x-ms-exchange-messagesentrepresentingtype: 1
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: BL1PR12MB5849:EE_|SJ2PR12MB8832:EE_
x-ms-office365-filtering-correlation-id: a87e939d-b1b9-49bd-a182-08dc10e8bc1b
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam: BCL:0;
x-microsoft-antispam-message-info:
 8B16CVK91oAqNZVCgXOi94Ju06LQNFTJESIDajxVx0/oeKzBrkNhnx7bnuwEEwmNSimoCtySzpEtUErJ5VbP2kHqjPYLc5CKA7d5CSYoh5LJmo7ywRBQnh5KIuoS6yvCwfnvc1th3pTVsUxPzlL0ZtCDli8lxVSMWZSy/1ZBjkOx8gUB31iw+hmPPVfdyOEqal3R/G8tUGUvLf54Z4oQcCKOJEhBmRt1Awy4Iq/pHvWoj+4FfnBneTK56JsVuvUtk94BWqxRi9f7BTpfOwNjD07g8pzhxWAmHtVstqA723W/1xWA9mhrs1SvMH/kCUWyLcO6G0HhZKkbW9GcFyciPDDbMm/g7GjgT1xK2UTlvX+kxEmGBVlwyaK5FXDF8wjfai8hsnH0uKnp/2lTgsb6/X9BTqrg7IeqWzLKIEj+XMjLNArx6qNwz6ealHZzHhbrbPGFvCTPN+zi2R2eHSL6kewR7aetlifU+KXNWvS3fGNUfE9jV5FXJKbxUyBTinoOXMIRCG2OPUS0WSLiwTr3DeowNew4edB960NQTd1yJnKacm3bhekpamGeTLIQbY0OjuZzF3AlmLXDnz2AODJOpwVHmrD5epDrZ03x+KkC3m1oFmVONVXwTtLk34qPaepEIRDSGbMi4q6ASqMcSSMbizPbgdWKsOdv8VMjs/gGiGU=
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BL1PR12MB5849.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230031)(346002)(376002)(39860400002)(136003)(396003)(366004)(230922051799003)(451199024)(1800799012)(186009)(64100799003)(83380400001)(6506007)(9686003)(53546011)(26005)(122000001)(38100700002)(8936002)(8676002)(4326008)(52536014)(7416002)(478600001)(5660300002)(2906002)(6916009)(7696005)(54906003)(71200400001)(64756008)(66556008)(66476007)(66446008)(316002)(66946007)(41300700001)(76116006)(38070700009)(33656002)(55016003);DIR:OUT;SFP:1101;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?utf-8?B?bGNFdTNvQ1g2WHNvMTEzT0ZWOXFVakpZN2d3TFk2eEMxWC9KdWtreTF2MmI4?=
 =?utf-8?B?STlHQjJvczA0ZGNwdnZ0MlkzalhpR0IrQWVYWkhQdWc4Z0RHS2FadU96WGxT?=
 =?utf-8?B?QWtJQVRKdzRnS0RxYVZFQkpkbUo5ZjlDdTZLTFNWYlFEQ0JsTCtIa3h6VDlr?=
 =?utf-8?B?QmpqWllwSUhmMStibExEQW04ZDZrTWREQk1nbUJNNHhLTXRVRWZvWG1WOUJn?=
 =?utf-8?B?ZDRJRnJPSTZEcjJsRlA1S214TkdvenFYejdvTUpXSU5iMSt0Y3dtb1IrVTNJ?=
 =?utf-8?B?bzh4ZER5WGJFcFg1WmtvMnBadmM1V2d1bzMxK2s5eWNpNkxGQzlVREV5OFpJ?=
 =?utf-8?B?b3ZObG15OER3aEZhL1Bqa3lMQ0xYUXhNTm1Ec25XNEZDdjZpRjl2SW44YlpE?=
 =?utf-8?B?MnlDeXN3ZUtNQWlHMXg1QklMNUE4Yi9uVjNPL2hjREdNNzRIQlZ0ZmJ4cWZY?=
 =?utf-8?B?K1FtbVVSL0ROa1d2MndxRjZ0RlB6WFNRSmlEYUNzSHlMN3JYWGY0V0huRk9O?=
 =?utf-8?B?RnpzRjNIMGN1U3owOW1lSVFkL29DTEVnT2RVY05ZYmVMczd1SmRKREV3VWZh?=
 =?utf-8?B?akZ4TGFDZThCSFJSZm5tbWZ0NG1iVTZmTm92MnB0NUlMMlBUK1h5eVQzMEhW?=
 =?utf-8?B?MlZ1eGpHSEZjc3hKNlRtclFOSm9yT2lBOFNJaDM4TEZ1Mm5ZTWdVSit6WnNE?=
 =?utf-8?B?b0xJYVBURFFQQVNjcFEwYUdYcU9FQkdudjVuQStzQVo0dkNJOWFCazBvOGtt?=
 =?utf-8?B?UktmMFdlc1E1WEdBWFcyU0c3OVFXcEQwcXhMaEk2SGtlaXlWVHM5SGFqNUhK?=
 =?utf-8?B?TDFEOE1VbDVNMDhWbUVmVElVN1JTaVdPbExueTBVRzFDa3FIbmxlMWtEQjhq?=
 =?utf-8?B?OHNPMVVUbjlHYTJPSFc0U294M2RWNGJONGY5VlVVcXJXZHlYdmswS0tYWHpu?=
 =?utf-8?B?c3JqUjhnQ1czVU9vbWdJc3BVZ005ejlkM211UkNYaXZqSjZBQWJuMXNycXFs?=
 =?utf-8?B?Smh4WDlzQzRGUTVVV3NLeURuT01sVXZqK0ZBOXNOY0xpRFdBWElXUkhDS0hU?=
 =?utf-8?B?eDVmc2NuelpxQjdLOWs4S01DOWZhRk9FOUZab3RiWXFCcXVTb0dvMWFkSEYx?=
 =?utf-8?B?Vnkxd3BhTUNiU2NhY0JUQnlkVFFCSVRCMWxVZUVnemdoV2pVZUNCbHo5bVNl?=
 =?utf-8?B?NUdsYktLd1c4NGx4Mm45Sk4rSWRtN2padnZsVkF5Q09hTmZxZ2hpbFNCazVp?=
 =?utf-8?B?TFBkd0xleG5vK01iWGhxT3dFblo1OWFWU2drWlA5K2pUcHN4VnA3Z3ZBamcy?=
 =?utf-8?B?TFZ0SGZpSjlnQ2Vyc1pDOGE4VHdlN1U5NTJnWFd0YVFHWmhON05FbW9FQWFI?=
 =?utf-8?B?TGhaZG1uRW5VYmhrUjhSVnNzenJMM00weUs0UDJIME4xbExsc2RJZlE5bTQv?=
 =?utf-8?B?eWxtV0xkZ3JNTVRBcTVKcVdJaUhrWVFVZ0NYcnNrbnhhVE12N3NIbkdBTDE0?=
 =?utf-8?B?TDVpRVl3WTNlYlc0T1lEbENndHZjeUNvRUlGZnk4L2ZmaHpuRWUvSHRBSTJm?=
 =?utf-8?B?TXIrZ010UjZWVzNoRFhCYWNuZDZwamtLNER4Yjk3c05Jc0tGcUJHMzFIUWJP?=
 =?utf-8?B?QnZVRkcxNno1OGVORlNTYkViM3BIZE1pSjhvYUp2R2kwZEhqRVVpRFRyOW55?=
 =?utf-8?B?OTRtMU1ySWdWc0VuZDBQcFIweXNVSzlhcis2NUVCcnRCRm9sdDlDeDRBY1l5?=
 =?utf-8?B?a1B6d2MvTXRGM0pWRUhrME5wV25kby9Sb0YyS2F6R1NGUWZLZ2NBaU5oWC84?=
 =?utf-8?B?WmRISm42eEx2VmpqcDBEUHpNbUlDOHcvYjhGaGFDRWFlR3orekpGdGE3ZWVE?=
 =?utf-8?B?OHdoUHZEVmdtRm53dE9RY3QzYXpUcmpERFNhcUkzclJWUmFLTm5paWhrOEJr?=
 =?utf-8?B?MFJldmxVSlNtSHF0VWZsNnBnd2QvYlo1M0w4MGZiS0wvek5JTlkyYktYNUtN?=
 =?utf-8?B?M1lLYVNIeEF2NmtteEY3ZS9sVktKZ1NLaEdwRjJTNmkwem5XZC9DSlpBMXFI?=
 =?utf-8?B?NTB2YUExaTBuQVMrTFFlaXl4TmZNMTlIR2ZNd2RSdTNOUDBFTGVsQXJ2Sko0?=
 =?utf-8?Q?vsb8=3D?=
Content-Type: text/plain; charset="utf-8"
Content-ID: <6BF0B40D98653743B591B52548B0BFB0@amdcloud.onmicrosoft.com>
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: BL1PR12MB5849.namprd12.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: a87e939d-b1b9-49bd-a182-08dc10e8bc1b
X-MS-Exchange-CrossTenant-originalarrivaltime: 09 Jan 2024 07:58:15.3515
 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 3dd8961f-e488-4e60-8e11-a82d994e183d
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: gcsPJF+LpQHMFw7gF3WjPwGjEcPRrkFiTjz5x+HuwvXaKkKoXSfldLxbn2IlVUpMR3osvY/ur27poKlLuaOrXQ==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ2PR12MB8832

T24gMjAyNC8xLzggMTc6MjUsIEphbiBCZXVsaWNoIHdyb3RlOg0KPiBPbiAwOC4wMS4yMDI0IDEw
OjE1LCBDaGVuLCBKaXFpYW4gd3JvdGU6DQo+PiBPbiAyMDI0LzEvOCAxNjo0NywgSmFuIEJldWxp
Y2ggd3JvdGU6DQo+Pj4gT24gMDYuMDEuMjAyNCAwMTo0NiwgU3RlZmFubyBTdGFiZWxsaW5pIHdy
b3RlOg0KPj4+PiBPbiBGcmksIDUgSmFuIDIwMjQsIEppcWlhbiBDaGVuIHdyb3RlOg0KPj4+Pj4g
QEAgLTcyLDggKzczLDMwIEBAIGxvbmcgaHZtX3BoeXNkZXZfb3AoaW50IGNtZCwgWEVOX0dVRVNU
X0hBTkRMRV9QQVJBTSh2b2lkKSBhcmcpDQo+Pj4+PiAgDQo+Pj4+PiAgICAgIHN3aXRjaCAoIGNt
ZCApDQo+Pj4+PiAgICAgIHsNCj4+Pj4+IC0gICAgY2FzZSBQSFlTREVWT1BfbWFwX3BpcnE6DQo+
Pj4+PiAtICAgIGNhc2UgUEhZU0RFVk9QX3VubWFwX3BpcnE6DQo+Pj4+PiArICAgIGNhc2UgUEhZ
U0RFVk9QX21hcF9waXJxOiB7DQo+Pj4+PiArICAgICAgICBwaHlzZGV2X21hcF9waXJxX3QgbWFw
Ow0KPj4+Pj4gKw0KPj4+Pj4gKyAgICAgICAgaWYgKCBjb3B5X2Zyb21fZ3Vlc3QoJm1hcCwgYXJn
LCAxKSAhPSAwICkNCj4+Pj4+ICsgICAgICAgICAgICByZXR1cm4gLUVGQVVMVDsNCj4+Pj4+ICsN
Cj4+Pj4+ICsgICAgICAgIGlmICggIWhhc19waXJxKGN1cnJkKSAmJiBtYXAuZG9taWQgPT0gRE9N
SURfU0VMRiApDQo+Pj4+PiArICAgICAgICAgICAgcmV0dXJuIC1FTk9TWVM7DQo+Pj4+DQo+Pj4+
IFRoaXMgbG9va3MgT0sgdG8gbWUgYWx0aG91Z2ggdGhlcmUgaXMgYWxyZWFkeSBhbm90aGVyIGNv
cHlfZnJvbV9ndWVzdCBpbg0KPj4+PiBkb19waHlzZGV2X29wLCBidXQgSSBkb24ndCBzZWUgYW4g
ZWFzeSB3YXkgdG8gbWFrZSBpdCBiZXR0ZXIuDQo+Pj4NCj4+PiBIb3cgY2FuIGRvdWJsZSByZWFk
cyBvZiBoeXBlcmNhbGwgYXJncyBldmVyIGJlIG9rYXk/IFRoZSBuZXcgY2hlY2sgY2xlYXJseQ0K
Pj4+IG5lZWRzIHRvIGJlIGluc2VydGVkIGluIHRoZSBjb2RlIHBhdGggd2hlcmUgdGhlIHN0cnVj
dHVyZSBpcyBiZWluZyByZWFkDQo+Pj4gYWxyZWFkeSBhbnl3YXkuDQo+PiBJIGFsc28gdHJpZWQg
dG8gYWRkIHRoaXMgY2hlY2sgaW4gUEhZU0RFVk9QX21hcF9waXJxIGluIHBoeXNkZXYuYywgYnV0
IHB2IGhhcyBubyBmbGFnIFg4Nl9FTVVfVVNFX1BJUlEgdG9vLg0KPj4gSWYgd2FudCB0byBhZGQg
aXQgaW50byBwaHlzZGV2LmMgYW5kIGNvbWJpbmUgU3RlZmFubydzIG9waW5pb25zLCB0aGlzIGNo
ZWNrIG1heSBiZSBsaWtlOg0KPj4NCj4+IGRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvcGh5c2Rl
di5jIGIveGVuL2FyY2gveDg2L3BoeXNkZXYuYw0KPj4gaW5kZXggNDdjNGRhMGFmN2UxLi5jMzhk
NGQ0MDU3MjYgMTAwNjQ0DQo+PiAtLS0gYS94ZW4vYXJjaC94ODYvcGh5c2Rldi5jDQo+PiArKysg
Yi94ZW4vYXJjaC94ODYvcGh5c2Rldi5jDQo+PiBAQCAtMzAzLDExICszMDMsMTkgQEAgcmV0X3Qg
ZG9fcGh5c2Rldl9vcChpbnQgY21kLCBYRU5fR1VFU1RfSEFORExFX1BBUkFNKHZvaWQpIGFyZykN
Cj4+ICAgICAgY2FzZSBQSFlTREVWT1BfbWFwX3BpcnE6IHsNCj4+ICAgICAgICAgIHBoeXNkZXZf
bWFwX3BpcnFfdCBtYXA7DQo+PiAgICAgICAgICBzdHJ1Y3QgbXNpX2luZm8gbXNpOw0KPj4gKyAg
ICAgICAgc3RydWN0IGRvbWFpbiAqZDsNCj4+DQo+PiAgICAgICAgICByZXQgPSAtRUZBVUxUOw0K
Pj4gICAgICAgICAgaWYgKCBjb3B5X2Zyb21fZ3Vlc3QoJm1hcCwgYXJnLCAxKSAhPSAwICkNCj4+
ICAgICAgICAgICAgICBicmVhazsNCj4+DQo+PiArICAgICAgICBkID0gcmN1X2xvY2tfZG9tYWlu
X2J5X2FueV9pZChtYXAuZG9taWQpOw0KPj4gKyAgICAgICAgaWYgKCBkID09IE5VTEwgKQ0KPj4g
KyAgICAgICAgICAgIHJldHVybiAtRVNSQ0g7DQo+PiArICAgICAgICBpZiAoICFpc19wdl9kb21h
aW4oZCkgJiYgIWhhc19waXJxKGQpICkNCj4+ICsgICAgICAgICAgICByZXR1cm4gLUVOT1NZUzsN
Cj4+ICsgICAgICAgIHJjdV91bmxvY2tfZG9tYWluKGQpOw0KPj4gKw0KPj4gICAgICAgICAgc3dp
dGNoICggbWFwLnR5cGUgKQ0KPj4gICAgICAgICAgew0KPj4gICAgICAgICAgY2FzZSBNQVBfUElS
UV9UWVBFX01TSV9TRUc6DQo+IA0KPiBXZWxsLCB5ZXMsIHBlcmhhcHMga2luZCBvZiBsaWtlIHRo
YXQsIGJ1dCB3aXRoIHJjdV91bmxvY2tfZG9tYWluKCkgY2FsbGVkDQo+IG9uIHRoZSBlcnJvciAy
bmQgcmV0dXJuIHBhdGggYXMgd2VsbCwgYW5kIHdpdGhvdXQgYWJ1c2luZyBFTk9TWVMuDQpPaywg
d2lsbCBjYWxsIHJjdV91bmxvY2tfZG9tYWluIG9uIDJuZCBlcnJvciBwYXRoLCBhbmQgY2hhbmdl
IEVOT1NZUyB0byBFT1BOT1RTVVBQLg0KDQo+IA0KPiBKYW4NCg0KLS0gDQpCZXN0IHJlZ2FyZHMs
DQpKaXFpYW4gQ2hlbi4NCg==


From xen-devel-bounces@lists.xenproject.org Tue Jan 09 08:01:36 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 09 Jan 2024 08:01:36 +0000
Received: from list by lists.xenproject.org with outflank-mailman.664312.1034431 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rN73G-0001Ps-DK; Tue, 09 Jan 2024 08:01:34 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 664312.1034431; Tue, 09 Jan 2024 08:01:34 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rN73G-0001Pl-AC; Tue, 09 Jan 2024 08:01:34 +0000
Received: by outflank-mailman (input) for mailman id 664312;
 Tue, 09 Jan 2024 08:01:32 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=2W5I=IT=amd.com=Jiqian.Chen@srs-se1.protection.inumbo.net>)
 id 1rN73E-0001Pd-F2
 for xen-devel@lists.xenproject.org; Tue, 09 Jan 2024 08:01:32 +0000
Received: from NAM02-DM3-obe.outbound.protection.outlook.com
 (mail-dm3nam02on2060d.outbound.protection.outlook.com
 [2a01:111:f400:7e83::60d])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 4b61b99e-aec5-11ee-9b0f-b553b5be7939;
 Tue, 09 Jan 2024 09:01:30 +0100 (CET)
Received: from BL1PR12MB5849.namprd12.prod.outlook.com (2603:10b6:208:384::18)
 by SJ2PR12MB8832.namprd12.prod.outlook.com (2603:10b6:a03:4d0::5)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7159.23; Tue, 9 Jan
 2024 08:01:25 +0000
Received: from BL1PR12MB5849.namprd12.prod.outlook.com
 ([fe80::969f:11b3:5ec2:3aa1]) by BL1PR12MB5849.namprd12.prod.outlook.com
 ([fe80::969f:11b3:5ec2:3aa1%3]) with mapi id 15.20.7159.020; Tue, 9 Jan 2024
 08:01:24 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 4b61b99e-aec5-11ee-9b0f-b553b5be7939
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=oTMcNSNuhNCzH1zAZc1QIgkBkaipAHZg/O7pzI24z4FeyO3FqoFJil1JLwno7Dvh8AI2E40Tnezv40t2zP1Pi83KXWgiwLBuxRFeTBYrlz3gmXwC5r6B2ib0ifh3EzZUS96061/j5aIttP4XbP5P/uaBvUkvJaz9Vzemk4piH+6VZ9StnZngScBg5JElvhXR5Jo1S9qzNuXIk3UvtbMeDtGeIA6nFZr2KYOHXqc/qGuHux7kkAC8jG1ZyVtjrjpTG9y/HNlhtP0RnLF6eG1C0+GY8jR+h+IWtAFDmFUrtZilhCZnoftWw3WmnoC6b8vcPn46i3bseq6ryZNsMU9qdw==
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=APEEs3xdBsbebMVnachXSnPg39wFpg4nTqq/kuREfxw=;
 b=B3KN7NRYUmKqzb5YrJYc/7QGcUEhLe0qd8qn5+tSF6Dk3UjTXQ1SNCMkFKckkKQvQ2Al2MEb2SzDLv+CpqHuVbk3sZWiESQu1/yfb0UbWMH9RnwPI3GHL34GU0tsDh3xQSjOmtxmE1qR6mg7yD19nKyTcjSES8F88gW/nTtyLdIrkmxsYa2xkC1LPwddszWhzqxmRVW1j0/jnt+iCKWnJjqpEcUk6X1mBJ6W04wZXZQ34kIQ8hjgVlobY2VFiv0DM5W+xwFG77qPFHnnASFPyP40rWv/nyF8YFxiX4QgZunsCA4iT6xkbr5I6T4RALtXZm/vS6vqJ5BEUZyshB/gXg==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=amd.com; dmarc=pass action=none header.from=amd.com; dkim=pass
 header.d=amd.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=APEEs3xdBsbebMVnachXSnPg39wFpg4nTqq/kuREfxw=;
 b=1MahocspQX3T5aM1GLBu5rE1wuxtokdPwy97fNQEetQJ9YwlOMCHr5GYDUMPPQJZn6KglNLnw9xql5ICi6V4v6g5qFZRMwV5366l7b/K0yI8PeGC7yfLD23dPx/QlCGKjClHO4W46BQUXD9WFTHShrC8kVvOO7DNg3FZTpmVNIo=
From: "Chen, Jiqian" <Jiqian.Chen@amd.com>
To: Jan Beulich <jbeulich@suse.com>, Stefano Stabellini
	<sstabellini@kernel.org>
CC: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>, Andrew
 Cooper <andrew.cooper3@citrix.com>, =?utf-8?B?Um9nZXIgUGF1IE1vbm7DqQ==?=
	<roger.pau@citrix.com>, Wei Liu <wl@xen.org>, George Dunlap
	<george.dunlap@citrix.com>, Julien Grall <julien@xen.org>, Anthony PERARD
	<anthony.perard@citrix.com>, Juergen Gross <jgross@suse.com>, "Hildebrand,
 Stewart" <Stewart.Hildebrand@amd.com>, "Huang, Ray" <Ray.Huang@amd.com>,
	"Chen, Jiqian" <Jiqian.Chen@amd.com>
Subject: Re: [RFC XEN PATCH v4 3/5] x86/pvh: Add PHYSDEVOP_setup_gsi for PVH
 dom0
Thread-Topic: [RFC XEN PATCH v4 3/5] x86/pvh: Add PHYSDEVOP_setup_gsi for PVH
 dom0
Thread-Index: AQHaP6Y0Nj7ifAZhiEaHi72EzvHXWbDL9nOAgAOpxICAAgn6AA==
Date: Tue, 9 Jan 2024 08:01:24 +0000
Message-ID:
 <BL1PR12MB584962C05A039CF18A794779E76A2@BL1PR12MB5849.namprd12.prod.outlook.com>
References: <20240105070920.350113-1-Jiqian.Chen@amd.com>
 <20240105070920.350113-4-Jiqian.Chen@amd.com>
 <alpine.DEB.2.22.394.2401051651270.3675@ubuntu-linux-20-04-desktop>
 <5db2cde7-7fb1-460f-ab78-c462c3a1d46e@suse.com>
In-Reply-To: <5db2cde7-7fb1-460f-ab78-c462c3a1d46e@suse.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-ms-exchange-imapappendstamp: BL1PR12MB5045.namprd12.prod.outlook.com
 (15.20.7181.004)
authentication-results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=amd.com;
x-ms-exchange-messagesentrepresentingtype: 1
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: BL1PR12MB5849:EE_|SJ2PR12MB8832:EE_
x-ms-office365-filtering-correlation-id: 40b20670-fd7e-4daf-91b0-08dc10e92d16
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam: BCL:0;
x-microsoft-antispam-message-info:
 aAwXXZfhKazivZ6Bi5EcCLSl72wXpuzBIvJNERq1tX8zgRjAVNtVfr5PuDEk7BPYmrdyQD9JVqBq4e//K/PNeaMWyKGxwFyOtExa44Th4wUIzjUhcyLyArfxeIQCtcI+e1nd52IH1V2lT9nHQcxsITg+vo7AgNkiC0kOWWpgDFJ4NwK5it2EJSfYmx+0Tz2EkbCSq1pyx2cIqpspN6LiZqL8zVp1TiSkJNWee6mQkzRHtdiyw20K3QkNv0rKHKZ/Q9ddGReUgx2OB2N7XEo4xcrzX1akd0CBxtjPA8Gm3PJ0293eOr2HRt8256U4JF4MGIMZMQr6Y9z6GVszaLH1h205DgqPuYvWwH/k9YGuOVS7IfPr+/GwgZbrbEoinDHtMS1Uedo0IaShUG8mbP8qBJVXVomO4y5tm8KxvKstfsXO2OXMuM2qS9Odt0ujjg226OhZSZOyrICFysFLI5O92UvgRMCPe2qGHubMx73Za0GjDy1qHjkcyvgyRSTieg1Iu37E/iYtP7SlbuycOKm+htd6Z3DlYagKgiIDm4R55Lmk/eA1j2AGdcYBtHnULGj5R+fMcZ+6FEaeoAr0SgpB0tox7nhCx0KXCXabopZpvTWHxnY4+XGh9VRE2pPB3KQQ1FTPP+lI25Z3FQr3IJ8ujLwcPSxw2Ze7hQAZp8HX7Zw=
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BL1PR12MB5849.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230031)(346002)(376002)(39860400002)(136003)(396003)(366004)(230922051799003)(451199024)(1800799012)(186009)(64100799003)(6506007)(9686003)(53546011)(26005)(122000001)(38100700002)(8936002)(8676002)(4326008)(52536014)(7416002)(478600001)(5660300002)(2906002)(7696005)(54906003)(110136005)(71200400001)(64756008)(66556008)(66476007)(66446008)(316002)(66946007)(41300700001)(76116006)(38070700009)(33656002)(55016003);DIR:OUT;SFP:1101;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?utf-8?B?bFBWcklvcUx6RlVrWUhIVUlwNDdxMFVqOWpPdUNIM3VGOHJrbUtodEhGcTVm?=
 =?utf-8?B?NzBxMEJkUmNtT1UrN1QwYWhwUGoxODZpREd6a1IxNWJONXJTSDFuWmdLNEhY?=
 =?utf-8?B?Y3FYaE5wZjhjTUpNRGk2TFZsTzQ5dC95TjVtMWtGT053MkZvZm5GY2dUVXc2?=
 =?utf-8?B?eXRyaFFLS0w1WTdJNzZYZk52aXRmcHE3VERaSEhENCtPZWhtdlYwVEVRVUd3?=
 =?utf-8?B?bVh4eVJIYUwrd1AwNXdITE5XYzdScmVQZ0I0SDk2dXhjQ05tOGNtOUc0bDR4?=
 =?utf-8?B?K2FhRnFYYjNWbkg5MHVpVmFpdnJzTlowQkNIVFptYUdnMDFsL2NkSkpBd2l3?=
 =?utf-8?B?a1A1Ny9xcXNtUEdUcmloNUN4Y1cyVUg5Z25BUWU4dGlzRjlhUmZjaGN6Zy9s?=
 =?utf-8?B?ZmxSVHBQaHNlR1V5MXZJQkVaMm1zU3ZacW9vNDRmQzNuWVhFMzJtQkk1bkFC?=
 =?utf-8?B?azVmSTZvT3BaSUlyT3AyUjdIcE01SktGeGs0SmVHMi9aQVZHT0FYT1drTmo5?=
 =?utf-8?B?TEhZMzExaExvcjh5SVhTSU5TZC94N0ViakxybFk1VEs3VUtWNFN4SnVnN0Y5?=
 =?utf-8?B?OW1RTUJOMitLN2lENDliR2NxcEZnWk1CdXlhVG9pOStDN1k2dUdsMDVRTVBC?=
 =?utf-8?B?TFAzN1VqQVkrK0JaZXVOY1BENnl6RTVBRk9ydWF6Um43SWNyK1pXaFl4LzBo?=
 =?utf-8?B?eUxIbmYyc0hRcU80bG9iK3ZFUFJnQ1hKLzNUTzlOY0o0dVV2RXdZd09kbldY?=
 =?utf-8?B?QzQxRklrR01BK1dFbmVJSzNUNlhKRVFIMEFlRzBSUTJYcDMvUnJZYkNXVlNI?=
 =?utf-8?B?bG90cXFKWFVQMm5LK2FkSE94QW15R2FvMnByOThLK2l2L3U5d21XM1RaMnox?=
 =?utf-8?B?VVlhNFNXZE9uU1hzSTgvbGcvMVNCcG9NMkRWMmFheXlXM1dvUzdnNWRON0Ro?=
 =?utf-8?B?WFJmTVNRUFE2NTlVb2x4T2JDbEpMZnpPMWdDSEZwSnh6QllmajEyOHlRSUFV?=
 =?utf-8?B?VXRvTy90K3JzcWxkanFEZE1aZk1lUnJGUDVieithL1d0Rm0xZjJ4VWZiUXBj?=
 =?utf-8?B?Y0IrZTBQcW1zVE9MTHMrZ2hHMU5qRFhENE5yQmFKcUtacGE5T3k5TzV4ZmFQ?=
 =?utf-8?B?dUhyZGpKamE5R2Rjakg5MDhUeTZ3VHU4L1Y1M2l0OCtWQ1VpUHVUcm9DNzNh?=
 =?utf-8?B?NVBHVEduQ3dSeDhVdjBHSW0xdWg0NFphK0w0bkJOeGxXY2NEaUtMaWV0MVdR?=
 =?utf-8?B?MnlqV0F5WFBCOTdBRkFhcVlBM1dKQ0NqNlJ0VTNmS3g1UGNMam5aWGtGR3Nk?=
 =?utf-8?B?QmlXMVdhTzJ1MzJ2eFR3RVBmZlpDQ1lIOWJWbS9nN0t0R2pvUkRGdThYUUpK?=
 =?utf-8?B?YUxRSVFubm1qR1JEMkNHQVZHTGVOTm8yRVh3UTJBQjV6NkV3bmg2NzNrRmJ3?=
 =?utf-8?B?ak9WOS9oZlVNU1pYTkQvNm1JbmxBakVVYW1KTktrbHpwclBSdkFabXhxNWQ0?=
 =?utf-8?B?dDV4TGw1b243ZWFSZUhKMXhlQkVJNWl6TEJPNnMyUnJxY2hvTG1YOXNkVUtP?=
 =?utf-8?B?K1RCSSszOGxSS2xhK0MyOVFhaER5djhLU3JwVndOdUVFM3VPalBINnlkY0Vk?=
 =?utf-8?B?aEtzM3FQUVVsMDk4aThzcHBoVkpLQk9leXkwcnk2bFV4SFM2WW1VMFFnTXpi?=
 =?utf-8?B?MWIvdTBWL3BNdkZaaGw1MTIxc3JKNzhzMDlZdHRaQUNWaUNXSkl2SEJkOWlG?=
 =?utf-8?B?WEd0SEwzWm8yNmY1Z1FDemlxV1RNR3hETHF4bTRyemN3WjZLMGJoU1dUbzhJ?=
 =?utf-8?B?Q0VJTjV0VW5IcGVMM3htWjNKa3UrbEo4TmxscmtlK2tZZ1pSVlMvc0Nha3JE?=
 =?utf-8?B?UldCS2NFcTZkaTM0VUxublFNQzhRbTFVRWpIanhQczVOSHY3WUowSnN3QXgr?=
 =?utf-8?B?T3NkT1ZXUlpSNlNFLzJyUTRHOFJKNjY4RDM3ditINVNENWZDVjArZDFCTWVa?=
 =?utf-8?B?Nnp0c0JjWHZlZk9WR1VUSkZzMXdPbENjeTRLMExDamJiZnlJN3BwUE16bW8r?=
 =?utf-8?B?bmp0UzFsNHd1dXQrYmZOMWpqc3dQNG1vVHo4RlVQMlZualp3ckpWdStEUDlq?=
 =?utf-8?Q?8vTI=3D?=
Content-Type: text/plain; charset="utf-8"
Content-ID: <767A4CE58131B64A959AEF3355F37A17@amdcloud.onmicrosoft.com>
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: BL1PR12MB5849.namprd12.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 40b20670-fd7e-4daf-91b0-08dc10e92d16
X-MS-Exchange-CrossTenant-originalarrivaltime: 09 Jan 2024 08:01:24.9088
 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 3dd8961f-e488-4e60-8e11-a82d994e183d
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: BxFRSxdEOyOmz0J4RbtWIolucRAU3Zk33kbFlw3EaiQdO8vR3+DsXpFqZgEO8IYHUEI+axswGCW275v8AKKJfg==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ2PR12MB8832

T24gMjAyNC8xLzggMTY6NTAsIEphbiBCZXVsaWNoIHdyb3RlOg0KPiBPbiAwNi4wMS4yMDI0IDAx
OjU0LCBTdGVmYW5vIFN0YWJlbGxpbmkgd3JvdGU6DQo+PiBPbiBGcmksIDUgSmFuIDIwMjQsIEpp
cWlhbiBDaGVuIHdyb3RlOg0KPj4+IE9uIFBWSCBkb20wLCB0aGUgZ3NpcyBkb24ndCBnZXQgcmVn
aXN0ZXJlZCwgYnV0DQo+Pj4gdGhlIGdzaSBvZiBhIHBhc3N0aHJvdWdoIGRldmljZSBtdXN0IGJl
IGNvbmZpZ3VyZWQgZm9yIGl0IHRvDQo+Pj4gYmUgYWJsZSB0byBiZSBtYXBwZWQgaW50byBhIGh2
bSBkb21VLg0KPj4+IE9uIExpbnV4IGtlcm5lbCBzaWRlLCBpdCBjYWxsZXMgUEhZU0RFVk9QX3Nl
dHVwX2dzaSBmb3INCj4+PiBwYXNzdGhyb3VnaCBkZXZpY2VzIHRvIHJlZ2lzdGVyIGdzaSB3aGVu
IGRvbTAgaXMgUFZILg0KPj4+IFNvLCBhZGQgUEhZU0RFVk9QX3NldHVwX2dzaSBmb3IgYWJvdmUg
cHVycG9zZS4NCj4+Pg0KPj4+IENvLWRldmVsb3BlZC1ieTogSHVhbmcgUnVpIDxyYXkuaHVhbmdA
YW1kLmNvbT4NCj4+PiBTaWduZWQtb2ZmLWJ5OiBKaXFpYW4gQ2hlbiA8SmlxaWFuLkNoZW5AYW1k
LmNvbT4NCj4+PiAtLS0NCj4+PiAgeGVuL2FyY2gveDg2L2h2bS9oeXBlcmNhbGwuYyB8IDYgKysr
KysrDQo+Pj4gIDEgZmlsZSBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKykNCj4+Pg0KPj4+IGRpZmYg
LS1naXQgYS94ZW4vYXJjaC94ODYvaHZtL2h5cGVyY2FsbC5jIGIveGVuL2FyY2gveDg2L2h2bS9o
eXBlcmNhbGwuYw0KPj4+IGluZGV4IDYzMmE2OGJlM2NjNC4uZTI3ZDNjYTE1MTg1IDEwMDY0NA0K
Pj4+IC0tLSBhL3hlbi9hcmNoL3g4Ni9odm0vaHlwZXJjYWxsLmMNCj4+PiArKysgYi94ZW4vYXJj
aC94ODYvaHZtL2h5cGVyY2FsbC5jDQo+Pj4gQEAgLTk3LDYgKzk3LDEyIEBAIGxvbmcgaHZtX3Bo
eXNkZXZfb3AoaW50IGNtZCwgWEVOX0dVRVNUX0hBTkRMRV9QQVJBTSh2b2lkKSBhcmcpDQo+Pj4g
ICAgICAgICAgYnJlYWs7DQo+Pj4gICAgICB9DQo+Pj4gIA0KPj4+ICsgICAgY2FzZSBQSFlTREVW
T1Bfc2V0dXBfZ3NpOg0KPj4+ICsgICAgICAgIGlmICggaXNfaGFyZHdhcmVfZG9tYWluKGN1cnJk
KSAmJiAhaGFzX3BpcnEoY3VycmQpICkNCj4+PiArICAgICAgICAgICAgYnJlYWs7DQo+Pj4gKyAg
ICAgICAgZWxzZQ0KPj4+ICsgICAgICAgICAgICByZXR1cm4gLUVOT1NZUzsNCj4+DQo+PiBJIGFt
IG5vdCBzdXJlIHdoYXQgaXMgdGhlIGJlc3QgImlmIiBjaGVjayBmb3IgdGhpcyBzaXR1YXRpb24g
YnV0IEkgYW0NCj4+IGd1ZXNzaW5nIHdlIGRvbid0IG5lZWQgaGFzX3BpcnEoY3VycmQpLiBNYXli
ZSB0aGlzIGlzIHN1ZmZpY2llbnQ6DQo+Pg0KPj4gaWYgKCBpc19oYXJkd2FyZV9kb21haW4oY3Vy
cmQpICkNCj4+ICAgICBicmVhazsNCj4+IGVsc2UNCj4+ICAgICByZXR1cm4gLUVOT1NZUzsNCj4g
DQo+IE1heWJlDQo+IA0KPiAgICAgaWYgKCAhaXNfaGFyZHdhcmVfZG9tYWluKGN1cnJkKSApDQo+
ICAgICAgICAgcmV0dXJuIC1FT1BOT1RTVVBQOw0KPiAgICAgQVNTRVJUKCFoYXNfcGlycShjdXJy
ZCkpOw0KPiAgICAgYnJlYWs7DQo+IA0KPiA/IFdoYXQgSSBwcmltYXJpbHkgZGlzbGlrZSBpbiBi
b3RoIGVhcmxpZXIgcHJvcG9zYWxzIGlzIHRoZSAoaW1vDQo+IGNvbmZ1c2luZykgdXNlIG9mICJl
bHNlIi4NCkl0IGxvb2tzIGxpa2UgbW9yZSByZWFzb25hYmxlLiBJIHdpbGwgY2hhbmdlIHRvIGFz
IHRoaXMgaW4gbmV4dCB2ZXJzaW9uIGlmIHRoZXJlIGFyZSBubyBvdGhlciBndXlzIGhhdmUgZGlm
ZmVyZW50IG9waW5pb25zLg0KDQo+IA0KPiBKYW4NCg0KLS0gDQpCZXN0IHJlZ2FyZHMsDQpKaXFp
YW4gQ2hlbi4NCg==


From xen-devel-bounces@lists.xenproject.org Tue Jan 09 08:06:00 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 09 Jan 2024 08:06:00 +0000
Received: from list by lists.xenproject.org with outflank-mailman.664316.1034440 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rN77T-0001zZ-TT; Tue, 09 Jan 2024 08:05:55 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 664316.1034440; Tue, 09 Jan 2024 08:05:55 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rN77T-0001zS-Qz; Tue, 09 Jan 2024 08:05:55 +0000
Received: by outflank-mailman (input) for mailman id 664316;
 Tue, 09 Jan 2024 08:05:54 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=RTBC=IT=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rN77S-0001zM-3v
 for xen-devel@lists.xenproject.org; Tue, 09 Jan 2024 08:05:54 +0000
Received: from mail-lf1-x135.google.com (mail-lf1-x135.google.com
 [2a00:1450:4864:20::135])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id e8a27cb4-aec5-11ee-98ef-6d05b1d4d9a1;
 Tue, 09 Jan 2024 09:05:53 +0100 (CET)
Received: by mail-lf1-x135.google.com with SMTP id
 2adb3069b0e04-50eabbc3dccso2656195e87.2
 for <xen-devel@lists.xenproject.org>; Tue, 09 Jan 2024 00:05:53 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 bw10-20020a056638460a00b0046e33773c09sm478861jab.36.2024.01.09.00.05.50
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 09 Jan 2024 00:05:51 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: e8a27cb4-aec5-11ee-98ef-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1704787552; x=1705392352; darn=lists.xenproject.org;
        h=content-transfer-encoding:autocrypt:subject:from:cc:to
         :content-language:user-agent:mime-version:date:message-id:from:to:cc
         :subject:date:message-id:reply-to;
        bh=CEqr9QrMCey4RTfR3m71tRVavPGwQg0PARsYXTCITQU=;
        b=Xcvfs1MV2NuzBzPgyN+a+RGz8aeFHw4R09wfM8o9XHolx26i5Mn4QqNjZnjy6388ui
         Vx1I+PzBb7xQ9luyUPs4x+Iqdbzgg87+Th4BwfE8Z7krATsQveJBCspxbhK7XpTAPuiK
         SMEym+/xxSvTHfZolxjedc7F7aVaUAIpcjE+6PyhkBGP7g1hJkJu/+2UCnR4/2xwxJrp
         L7HIdcld/lktHaiAQxfeThv4TIG98b46CP/BJuYvYHFZFlTePtAhqw2UufULFJOl0ovW
         rkjKfmo+QLV3dSxaiKJBBqety3K5QIhYCsVjCvs2djWL33qP5piH6FHAFvrfbjTyBDne
         BngA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704787552; x=1705392352;
        h=content-transfer-encoding:autocrypt:subject:from:cc:to
         :content-language:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=CEqr9QrMCey4RTfR3m71tRVavPGwQg0PARsYXTCITQU=;
        b=r8wuihRHVUyrnCI1nkPBGS/rog5i21z9Xq6zi+4Ghj8x7UENgsEnaUOjzxATUnxV4Z
         6I6OVzfUq/VeZe7kMsBp6E82llrbsdbyoHTEULsZWQZgKsTUKgZI4eqfiRN5jTvBn1t8
         w72qEYNQjFoy3yJxd2e0wZ+cbP4/vIBx1sVkGcivnJvutfSyhTUJjN0butj5IQMAhkqW
         VITCnpSoQfwOJot84edgidJ1TrAnu8xkK1Re/Q6dTOKqmKqjFooLEQzq7jZwyLLMfTZi
         j6aTVpwB4mugy2J3XYYHFNfHfXMFWRwHOLATNsepLwQzEscSHUFW57K6xW7EmcgEi3Ve
         UmAg==
X-Gm-Message-State: AOJu0Yxsj7cszYQBCdnS2jCXZyIWoT798DE8Ynet04dAkOLSK1DvPZDd
	4eTCnKOeXU6dp7wQB+kiKbiUP9AqOzI3oqUhZS1lb63nag==
X-Google-Smtp-Source: AGHT+IGBN9o/4p+mlY9Ys2VC5UL6Z/xFCKroyp0kFr85ScG/ScerjX05b1jOo/w/M/5MhL9r9VxkZA==
X-Received: by 2002:a05:6512:2037:b0:50e:aa03:a50c with SMTP id s23-20020a056512203700b0050eaa03a50cmr967778lfs.113.1704787552501;
        Tue, 09 Jan 2024 00:05:52 -0800 (PST)
Message-ID: <d466eb44-1160-4b57-a41f-752dbf626748@suse.com>
Date: Tue, 9 Jan 2024 09:05:48 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Content-Language: en-US
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Federico Serafini <federico.serafini@bugseng.com>,
 Andrew Cooper <andrew.cooper3@citrix.com>,
 George Dunlap <george.dunlap@citrix.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>,
 Bertrand Marquis <bertrand.marquis@arm.com>,
 Michal Orzel <michal.orzel@amd.com>
From: Jan Beulich <jbeulich@suse.com>
Subject: [PATCH] consolidate do_bug_frame() / bug_fn_t
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

The type not being used in do_bug_frame() is suspicious. Apparently
that's solely because the type uses a pointer-to-const parameter,
when run_in_exception_handler() wants functions taking pointer-to-non-
const. Drop the const, in turn requiring Arm's do_bug_frame() to also
have its const dropped. This then brings that function also closer to
the common one, with Arm's use of vaddr_t remaining as a difference.

Signed-off-by: Jan Beulich <jbeulich@suse.com>
---
This is an alternative proposal to
https://lists.xen.org/archives/html/xen-devel/2023-12/msg01385.html,
albeit without paving a road towards Andrew's desire of getting rid of
show_execution_state_nonconst() again. Retaining (and propagating) the
const would imply the need to cast away the const-ness somewhere on (at
least) the path to invoking gdb stub code. Personally I'm averse to such
casting away of const-ness ...

--- a/xen/arch/arm/include/asm/traps.h
+++ b/xen/arch/arm/include/asm/traps.h
@@ -69,7 +69,7 @@ void do_cp(struct cpu_user_regs *regs, c
 void do_trap_smc(struct cpu_user_regs *regs, const union hsr hsr);
 void do_trap_hvc_smccc(struct cpu_user_regs *regs);
 
-int do_bug_frame(const struct cpu_user_regs *regs, vaddr_t pc);
+int do_bug_frame(struct cpu_user_regs *regs, vaddr_t pc);
 
 void noreturn do_unexpected_trap(const char *msg,
                                  const struct cpu_user_regs *regs);
--- a/xen/arch/arm/traps.c
+++ b/xen/arch/arm/traps.c
@@ -1202,7 +1202,7 @@ void do_unexpected_trap(const char *msg,
     panic("CPU%d: Unexpected Trap: %s\n", smp_processor_id(), msg);
 }
 
-int do_bug_frame(const struct cpu_user_regs *regs, vaddr_t pc)
+int do_bug_frame(struct cpu_user_regs *regs, vaddr_t pc)
 {
     const struct bug_frame *bug = NULL;
     const char *prefix = "", *filename, *predicate;
--- a/xen/common/bug.c
+++ b/xen/common/bug.c
@@ -63,14 +63,10 @@ int do_bug_frame(struct cpu_user_regs *r
 
     if ( id == BUGFRAME_run_fn )
     {
-        void (*fn)(struct cpu_user_regs *) = bug_ptr(bug);
+        bug_fn_t *fn = bug_ptr(bug);
 
         fn(regs);
 
-        /* Re-enforce consistent types, because of the casts involved. */
-        if ( false )
-            run_in_exception_handler(fn);
-
         return id;
     }
 
--- a/xen/include/xen/bug.h
+++ b/xen/include/xen/bug.h
@@ -101,12 +101,11 @@ struct bug_frame {
 #endif
 
 struct cpu_user_regs;
-typedef void bug_fn_t(const struct cpu_user_regs *regs);
+typedef void bug_fn_t(struct cpu_user_regs *regs);
 
 #ifndef run_in_exception_handler
 
-static void always_inline run_in_exception_handler(
-    void (*fn)(struct cpu_user_regs *regs))
+static void always_inline run_in_exception_handler(bug_fn_t *fn)
 {
     BUG_FRAME(BUGFRAME_run_fn, 0, fn, 0, NULL);
 }


From xen-devel-bounces@lists.xenproject.org Tue Jan 09 08:19:03 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 09 Jan 2024 08:19:03 +0000
Received: from list by lists.xenproject.org with outflank-mailman.664325.1034451 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rN7K5-0007Ue-62; Tue, 09 Jan 2024 08:18:57 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 664325.1034451; Tue, 09 Jan 2024 08:18:57 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rN7K5-0007UX-3F; Tue, 09 Jan 2024 08:18:57 +0000
Received: by outflank-mailman (input) for mailman id 664325;
 Tue, 09 Jan 2024 08:18:55 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=2W5I=IT=amd.com=Jiqian.Chen@srs-se1.protection.inumbo.net>)
 id 1rN7K3-0007Tb-Kk
 for xen-devel@lists.xenproject.org; Tue, 09 Jan 2024 08:18:55 +0000
Received: from NAM12-MW2-obe.outbound.protection.outlook.com
 (mail-mw2nam12on20618.outbound.protection.outlook.com
 [2a01:111:f400:fe5a::618])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id b94b8b4e-aec7-11ee-9b0f-b553b5be7939;
 Tue, 09 Jan 2024 09:18:53 +0100 (CET)
Received: from BL1PR12MB5849.namprd12.prod.outlook.com (2603:10b6:208:384::18)
 by CY8PR12MB7100.namprd12.prod.outlook.com (2603:10b6:930:60::19)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7159.21; Tue, 9 Jan
 2024 08:18:47 +0000
Received: from BL1PR12MB5849.namprd12.prod.outlook.com
 ([fe80::969f:11b3:5ec2:3aa1]) by BL1PR12MB5849.namprd12.prod.outlook.com
 ([fe80::969f:11b3:5ec2:3aa1%3]) with mapi id 15.20.7159.020; Tue, 9 Jan 2024
 08:18:47 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: b94b8b4e-aec7-11ee-9b0f-b553b5be7939
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=buCjFyre2B++qXOqIyvdQNq75XQ3/YnQTLZcmYerVpextPIupxQHG05Ndoj6M1wDgIJmzErxGeG2iF65+6nkinFukQT98ItJbU60ZEznrhalMAUoHLxpJWMobIIymnXiHSzIsIHukJxuOJwCV+gxGUQtxlZftVUm8VijK4QkUPTbupgXbJdWofDIHBUNmmXdqOlt5wmrlV5sE0+zPBZfd4y4kp/kfsHALnpdVWkyKxtITPkWMfJkrHTRo8oInnIu0scF20kb6JxZ9z+DgqtKx6urYvUXRo3LqrdYd7qNK/rw14EszMqsCCI6jTg6CeOjHgidVpj8is1WJB3pAvkYMw==
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=Ni+XVQavD+MVp0vlGpQGnWqbmtMuvHwq6SN/nc0GpoI=;
 b=iB7M+ANuCUnE7oaK3H+dR1PTX9x4vpsn7bdHSz9ZPGPBrfmnOKWuCUOXO5jtLC+LluiYN+rj3rGITPE3GIDG/eKcR1dQ//ccU0fSckTS6D2cwM9CMfzyoXSfs2uz18XnF0nuMKmQsD9sgcrOFL8zq/x3P2ehy6TpA1OSKGbxr7emKsbLHjGZleq5qmMDsbCVil0a7ZSB7NlQnfKw7Wj7bL8QMKgPiUAXDCO9szWHxMQqmTIVV3bI5oNpsNdMq+m26qjFpg/7v71tVTV/QfMgEqcwXfC6fRNADEWnu0qPvajKkR8xuVtAgxS2YL4EVkrpge5tfdt2MTTS8+9JT1p0cg==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=amd.com; dmarc=pass action=none header.from=amd.com; dkim=pass
 header.d=amd.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=Ni+XVQavD+MVp0vlGpQGnWqbmtMuvHwq6SN/nc0GpoI=;
 b=htMj1koBdzH4C67RzsLad3s14x5NpOB6piP/iL4WvsZ7zNuZmhL4lT7FFBdECLY7RU3cIoh2y+eDALYSlSZGygDBemEUFFg99EPHcu7ISMBZPLSNBmBqbdz6rHaoX2JfEV1eAiSWZTMP45tfcosPBOojTcB6pRflM4U2UmpQAbw=
From: "Chen, Jiqian" <Jiqian.Chen@amd.com>
To: =?utf-8?B?Um9nZXIgUGF1IE1vbm7DqQ==?= <roger.pau@citrix.com>, Jan Beulich
	<jbeulich@suse.com>, Stefano Stabellini <sstabellini@kernel.org>
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>, Julien Grall <julien@xen.org>, Anthony PERARD
	<anthony.perard@citrix.com>, Juergen Gross <jgross@suse.com>, "Hildebrand,
 Stewart" <Stewart.Hildebrand@amd.com>, "Huang, Ray" <Ray.Huang@amd.com>,
	"Chen, Jiqian" <Jiqian.Chen@amd.com>
Subject: Re: [RFC XEN PATCH v4 4/5] domctl: Use gsi to grant/revoke irq
 permission
Thread-Topic: [RFC XEN PATCH v4 4/5] domctl: Use gsi to grant/revoke irq
 permission
Thread-Index: AQHaP6Y1pt0ckfKChE+VsjXCWSj8+LDL+oWAgAOnBgCAAGd3gIABof4A
Date: Tue, 9 Jan 2024 08:18:47 +0000
Message-ID:
 <BL1PR12MB58492746170F6BF777901141E76A2@BL1PR12MB5849.namprd12.prod.outlook.com>
References: <20240105070920.350113-1-Jiqian.Chen@amd.com>
 <20240105070920.350113-5-Jiqian.Chen@amd.com>
 <alpine.DEB.2.22.394.2401051702200.3675@ubuntu-linux-20-04-desktop>
 <882bd39a-8a29-4f4f-b64f-765c4858b1c8@suse.com> <ZZwPSZoqyY6g9yhi@macbook>
In-Reply-To: <ZZwPSZoqyY6g9yhi@macbook>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-ms-exchange-imapappendstamp: BL1PR12MB5045.namprd12.prod.outlook.com
 (15.20.7181.004)
authentication-results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=amd.com;
x-ms-exchange-messagesentrepresentingtype: 1
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: BL1PR12MB5849:EE_|CY8PR12MB7100:EE_
x-ms-office365-filtering-correlation-id: aa9a7967-0692-4b03-e5b6-08dc10eb9a57
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam: BCL:0;
x-microsoft-antispam-message-info:
 TlZ6J7+7436cIaEEhZrvC4q1eWqJikNpn6Nx3s/zpmp1HhDKdl0fjSW6/o+l4UJRmC58CCYlYEmyfWhZ3vXJDDAZZFhqnZTBF2wQfBwmv4QjIiyjdtST2U2G9G230+cBvgdIeRq9rlYqNeIDQ9k0/8Eem70W8q/ZbDjUyZH5vg/B52tYv1qx4M5/PKRj3rTMGpDetq4omWuFsmMx/0npiBYSWsNca0dAH+d1s2FA+1jPBn8jzk5rMw5fXUL61WPtg6ow7QviE77mS/oLwTtSwOuYM5PVxHfYwaHu4SKsq0TC9s5F2xWZBldc0eiQS7OYB/XSIEFxzfOYe3HQJXgn0TOgMvXfthFsIZ0tbPD8itda8Tb5atsoFMONOTtuw/55LNiw4yZbMOoaGHIsiwjhTbWPswnFxmwo5jD/d/t3huwZ1+lBp9+Fw6ck+BlBnnrDrjHleGaEHqPA7eAlcj1FySK2QNBxa1+F/70rrS3hg916xTE9ufZgF5kfS0rxfcLXJxyVUv1uIFJWiElgN1+9eJe02RILJyLIGinV2vCOg5syJ32DQtpaFzhpgnShUIBCmQKbkeZ1ubnGdjjXzg1EeiS7EuhMCApi1KAyphWEqjgmDM+HghfeCDiHDmqr0tZL
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BL1PR12MB5849.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230031)(39860400002)(366004)(376002)(346002)(136003)(396003)(230922051799003)(64100799003)(451199024)(1800799012)(186009)(8936002)(8676002)(316002)(6506007)(110136005)(26005)(9686003)(54906003)(53546011)(83380400001)(66946007)(76116006)(66556008)(66476007)(41300700001)(38070700009)(7696005)(64756008)(478600001)(66446008)(71200400001)(5660300002)(122000001)(38100700002)(7416002)(55016003)(2906002)(52536014)(4326008)(33656002);DIR:OUT;SFP:1101;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?utf-8?B?VDhycHYzaWJhRWhXYUMrRFZabmVXUnZIS1RwaEpGS0hTL09GL1VqQnVsV0dJ?=
 =?utf-8?B?aytROWdGL0FGOCswNUtzQ1MwZTFVY2krNzFjYTE5bkR1M3lXeXFwQzhXRXdJ?=
 =?utf-8?B?K3hqb2xKYkkyVVc3R0l5cGZ0WG5sNWVyZ3Y4VDFvWVQyN2VQVnpZd20xQVNS?=
 =?utf-8?B?UStPaUYxKzBoem8wUVFobzhXVVVtVnRBUTFVcG1VRGVtTTJCL3Rkc2tuWHJh?=
 =?utf-8?B?MW5pYlFtdm4wMC9jc0grQ0NMelVzNkhjV3Z1dXhQKzF2dnAyNEVIZE1qVGt5?=
 =?utf-8?B?MXU4aWY3V2trNnoxaWhoOFpiQ2dmMGl4RkcxL1pFb2ErLzAyWkNIUUpWcjhs?=
 =?utf-8?B?SGxhUmE5K0NIQXJKckE3OC9UL2J4M1V2SjZBQVZWejdwanBXTW5IcFEvblU2?=
 =?utf-8?B?am9Pc0J5NkdvbUtENkFyazJQLzZYNU41VGpzTzNYMUpTdHdDMXFzVndoUUNQ?=
 =?utf-8?B?R0t4cVRKTW9yc0E5RmlDcmY2QUM0MkdQc1o0VXdUUklFNlRHdnZGRW9rckZE?=
 =?utf-8?B?OEhmcVhvZXZYS0NCT3ppVzkwRTJOei9YNVZtb1I0dFF4QklORU9sa3VWVDRH?=
 =?utf-8?B?N1JoREM5SzRKSjNqT2ZqQ05GUVh4czZ3LzFXOCtvUzdLdDZaV1loOFBHNVNH?=
 =?utf-8?B?M1pqRXhteDk1QndBd2pDWXZUY1VNMnQxN09LUU1sSlRXWEtXYWZtOGNPYkw4?=
 =?utf-8?B?STVlR2lVRE5pczFLdmxwTzh4VHc3TEVzaFArMVVVN1pSZHg4N0llQTJ5cnZm?=
 =?utf-8?B?cGpZZlVUYzRZQ1R0eDRMYjE4aURkemZIdFJPUUJ6R2dxMmpwR2RNM2NyMjhB?=
 =?utf-8?B?TEc3QnQyb3ZoVUJQSmlOQ2JlTVhubGdBZGEwYVIzcTVadlRzYThyQU12L25q?=
 =?utf-8?B?Rnk5L092Q2xnbURZajdxd0ZTNSs0MEUraXFiTDNSWjYwZmJrY2tGRjJoNy9s?=
 =?utf-8?B?Rmh0RGh0NXo1SmUyc3VpV2YwL2dGNy9DbnFTZ0pmRXNYbXlGTzZPTDNtbjYv?=
 =?utf-8?B?ZUxxOTFqVGdLSzlRcTdCYXllZXZnL1RRcGhxYkpNUDJ0UG9XQktPNkhEVEto?=
 =?utf-8?B?N1RtK0QxYWkxazBxMUFkMGh4WTR6bDJVUlhYUkc0SUpiYWF2RTIwTGFyekpX?=
 =?utf-8?B?M2FGcjhqb09taHMzMjhUK1MyM25oTE4rUG9jRFRNTDRmbit0dVhqQkhtU3By?=
 =?utf-8?B?WStlWHhlU0U5WlgycnpuZklMVENZTDByYzBIUjNzdFQ4QnZIY0ZtaGpGOGRn?=
 =?utf-8?B?a05mNUFONHowSFRRZS9CQmtya21NK2svVDZKaXliOVZScVE1elFuQ0NxUzJC?=
 =?utf-8?B?Z2M0SHV1S3JUVHVGUEQ3MUJVU2dSWFhESXovZDlUdkRhQkxQYkh6aUhiV3Yr?=
 =?utf-8?B?ZFFXcEMwNUF1a3NuaXJoTlV3QkJqTjA2VmxQaXVNS2FaVXZPUjdlWWVESGh3?=
 =?utf-8?B?ZzhxWW45QStSd1ZmWXQ2NE5WcUZVKzNLeXVZTmp6S0FUOXIyVElvRFI1R05L?=
 =?utf-8?B?QlpLVVprenQ0VTQvSStqaXpkZ3lkRitZakp3OWQzR254T292SDhsMEhXUjBo?=
 =?utf-8?B?cGJLQVNpR0Nob0hrK0VXU1Jld0JQNHhtVGRINExhSWRKZG5HbVpHWEd0RDh6?=
 =?utf-8?B?T3RNZnFYR1YvZHg3eVQ1K0lZWEdKSHZMYnhlZHdyVDU2Y3NxTUg5QlBraitZ?=
 =?utf-8?B?ZmNQYWU1Rmp1bllmYitwcW5CRmpubWswZ2UzRHA2WTcweVo4dFVBZVJDT0pV?=
 =?utf-8?B?MEQvbGhiOFA3N3Y3cXp3VzlSVG55MVYralBwZ2JyNjhuWmlvYWlBNVNCSkE1?=
 =?utf-8?B?My85T0xybE1sMEpKVTBtaGxEd1p5a2RlUlNZSmlSOS9RbmxwT1pRU2lyeWEr?=
 =?utf-8?B?MytQdGZqR2c1bEZZYkVSVnNVNzE1VlJJNzdhZGJHZzA4Q205VWRSa1Qxb0x1?=
 =?utf-8?B?TlhKbS9XQllPckJJdUJpTFRVa1E5VmZiL0hReVVTNEM1em41ZXJBL3ZEWnZs?=
 =?utf-8?B?bGhOdzUrV0FoNGNvQTdEOTViK0FDYzB4aFVTblpNcmJFSUhpNVlJdGU1ekNj?=
 =?utf-8?B?c3VCdmc5RjhwYzFrZVppanlLNzdwQXM3WndrcFp1RHRYZjh5UGMyMndCNjI1?=
 =?utf-8?Q?/9EY=3D?=
Content-Type: text/plain; charset="utf-8"
Content-ID: <DCFCCC6E5410C447BE592D85965D1A12@amdcloud.onmicrosoft.com>
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: BL1PR12MB5849.namprd12.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: aa9a7967-0692-4b03-e5b6-08dc10eb9a57
X-MS-Exchange-CrossTenant-originalarrivaltime: 09 Jan 2024 08:18:47.2402
 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 3dd8961f-e488-4e60-8e11-a82d994e183d
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: NMO3mcJij+An4X9HiMcBQEN/9CbkSb+MG6DdpHMF2WY2Rsv8/DP6H6czC+XQXe7F7KD4ldItL19N1nIsnBzrEw==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY8PR12MB7100

T24gMjAyNC8xLzggMjM6MDUsIFJvZ2VyIFBhdSBNb25uw6kgd3JvdGU6DQo+IE9uIE1vbiwgSmFu
IDA4LCAyMDI0IGF0IDA5OjU1OjI2QU0gKzAxMDAsIEphbiBCZXVsaWNoIHdyb3RlOg0KPj4gT24g
MDYuMDEuMjAyNCAwMjowOCwgU3RlZmFubyBTdGFiZWxsaW5pIHdyb3RlOg0KPj4+IE9uIEZyaSwg
NSBKYW4gMjAyNCwgSmlxaWFuIENoZW4gd3JvdGU6DQo+Pj4+IC0tLSBhL3Rvb2xzL2xpYnMvbGln
aHQvbGlieGxfcGNpLmMNCj4+Pj4gKysrIGIvdG9vbHMvbGlicy9saWdodC9saWJ4bF9wY2kuYw0K
Pj4+PiBAQCAtMTQxOCw2ICsxNDE4LDcgQEAgc3RhdGljIHZvaWQgcGNpX2FkZF9kbV9kb25lKGxp
YnhsX19lZ2MgKmVnYywNCj4+Pj4gICAgICB1bnNpZ25lZCBsb25nIGxvbmcgc3RhcnQsIGVuZCwg
ZmxhZ3MsIHNpemU7DQo+Pj4+ICAgICAgaW50IGlycSwgaTsNCj4+Pj4gICAgICBpbnQgcjsNCj4+
Pj4gKyAgICBpbnQgZ3NpOw0KPj4+PiAgICAgIHVpbnQzMl90IGZsYWcgPSBYRU5fRE9NQ1RMX0RF
Vl9SRE1fUkVMQVhFRDsNCj4+Pj4gICAgICB1aW50MzJfdCBkb21haW5pZCA9IGRvbWlkOw0KPj4+
PiAgICAgIGJvb2wgaXNzdHViZG9tID0gbGlieGxfaXNfc3R1YmRvbShjdHgsIGRvbWlkLCAmZG9t
YWluaWQpOw0KPj4+PiBAQCAtMTQ4Niw2ICsxNDg3LDcgQEAgc3RhdGljIHZvaWQgcGNpX2FkZF9k
bV9kb25lKGxpYnhsX19lZ2MgKmVnYywNCj4+Pj4gICAgICAgICAgZ290byBvdXRfbm9faXJxOw0K
Pj4+PiAgICAgIH0NCj4+Pj4gICAgICBpZiAoKGZzY2FuZihmLCAiJXUiLCAmaXJxKSA9PSAxKSAm
JiBpcnEpIHsNCj4+Pj4gKyAgICAgICAgZ3NpID0gaXJxOw0KPj4+DQo+Pj4gQSBxdWVzdGlvbiBm
b3IgUm9nZXIgYW5kIEphbjogYXJlIHdlIGFsd2F5cyBndWFyYW50ZWVkIHRoYXQgZ3NpID09IGly
cQ0KPj4+IChhbHNvIGluIHRoZSBQViBjYXNlKT8NCj4+DQo+PiBJaXJjIGZvciBJTy1BUElDIGJh
c2VkIElSUXMgdGhhdCdzIGFsd2F5cyB0aGUgY2FzZTsNCj4gDQo+IEkgdGhpbmsgdGhhdCdzIGFs
d2F5cyB0aGUgY2FzZSBvbiBMaW51eCwgYmVjYXVzZSBpdCBjYWxscw0KPiBQSFlTREVWT1BfbWFw
X3BpcnEgd2l0aCBpbmRleCA9PSBwaXJxIChzZWUgTGludXgNCj4gcGNpX3hlbl9pbml0aWFsX2Rv
bWFpbigpKS4gIEJ1dCBvdGhlciBPU2VzIGNvdWxkIHBvc3NpYmx5IG1ha2UgdGhlDQo+IGNhbGwg
d2l0aCBwaXJxID09IC0xIGFuZCBnZXQgYSByYW5kb21seSBhbGxvY2F0ZWQgcGlycSBmb3IgR1NJ
cy4NCkkgZG9uJ3QgdGhpbmsgaXQncyBpbXBvcnRhbnQgd2hldGhlciBwaXJxIGlzIHJhbmRvbWx5
IGdlbmVyYXRlZC4gV2hhdCdzIGltcG9ydGFudCBpcyB3aGV0aGVyIGlycSBhbHdheXMgZXF1YWxz
IGdzaSBpbiB4ZW4uDQpJZiBzbywgd2UgY2FuIGRpcmVjdGx5IHBhc3MgaW4gYW5kIGdyYW50IGdz
aS4gSG93ZXZlciwgYWNjb3JkaW5nIHRvIEphbidzIHByZXZpb3VzIGVtYWlsIHJlcGx5LCBpbiB0
aGUgY2FzZSBvZiBNc2ksIGlycSBtYXkgbm90IGJlIGVxdWFsIHRvIGdzaSwgc28gbXkgcGF0Y2gg
Y2Fubm90IG1lZXQgdGhpcyBzaXR1YXRpb24uDQpJIGFtIGNvbmZ1c2luZyBpZiB0aGUgY3VycmVu
dCBkb21haW4gZG9lc24ndCBoYXZlIFBJUlEgZmxhZywgdGhlbiByZWdhcmRpbmcgdG8gWEVOX0RP
TUNUTF9pcnFfcGVybWlzc2lvbiwgd2hpY2gga2luZCBvZiBpcnEgd2Ugc2hvdWxkIGdyYW50IHRv
IGNhbGxlciBkb21haW4/IFRoZSBnc2kgb3Igb3RoZXIgaXJxPw0KT3IgY2FuIHdlIGFkZCBhIGNo
ZWNrIGluIFhFTl9ET01DVExfaXJxX3Blcm1pc3Npb24sIGlmIHRoZSBjdXJyZW50IGRvbWFpbiBo
YXMgUFJJUSwgd2UgY2FuIGdldCBpcnEgZnJvbSBwaXJxKGxpa2UgdGhlIG9yaWdpbmFsIGltcGxl
bWVudGF0aW9uKSwgaWYgbm90IHdlIGNhbiBhc3NpZ24gZ3NpIHRvIGlycSwgYW5kIHRoZW4gZ3Jh
bnQgaXJxLiBPZiBjb3Vyc2UsIHRoYXQgbmVlZHMgdG8gcmVxdWlyZSB0aGUgY2FsbGVyIHRvIHBh
c3MgaW4gYm90aCB0aGUgcGlycSBhbmQgZ3NpLg0KDQo+IA0KPiBJT1c6IEkgZG9uJ3QgdGhpbmsg
dGhlIHBpcnEgZmllbGQgaW4geGVuX2RvbWN0bF9pcnFfcGVybWlzc2lvbiBjYW4gYmUNCj4gYWx0
ZXJlZCBsaWtlIHByb3Bvc2VkIGhlcmUgdG8gc3dpdGNoIGZyb20gcGFzc2luZyBhIHBpcnEgdG8g
YSBHU0kuICBBDQo+IG5ldyBoeXBlcmNhbGwgc2hvdWxkIGJlIGludHJvZHVjZWQgdGhhdCBlaXRo
ZXIgaXMgR1NJIHNwZWNpZmljLCBvcg0KPiBjb250YWlucyBhIHR5cGUgZmllbGQgaW4gb3JkZXIg
dG8gc3BlY2lmeSB0aGUgbmFtZXNwYWNlIHRoZSBmaWVsZA0KPiB0YXJnZXRzLg0KQSBuZXcgaHlw
ZXJjYWxsIHVzaW5nIGZvciBncmFudGluZyBnc2k/IElmIHNvLCBob3cgZG9lcyB0aGUgY2FsbGVy
IGtub3cgdG8gY2FsbCB3aGljaCBoeXBlcmNhbGwgdG8gZ3JhbnQgcGVybWlzc2lvbiwgWEVOX0RP
TUNUTF9pcnFfcGVybWlzc2lvbiBvciB0aGF0IG5ldyBoeXBlcmNhbGw/DQpJIG1lYW4gaG93IHRo
ZSBjYWxsZXIga25vdyBpZiB0aGUgY3VycmVudCBkb21haW4gaGFzIFBJUlEgb3Igbm90IGFuZCB3
aGVuIHRvIHBhc3MgaW4gcGlycSBudW1iZXIsIHdoZW4gdG8gcGFzcyBpbiBnc2kgbnVtYmVyLg0K
DQo+IA0KPiBUaGFua3MsIFJvZ2VyLg0KDQotLSANCkJlc3QgcmVnYXJkcywNCkppcWlhbiBDaGVu
Lg0K


From xen-devel-bounces@lists.xenproject.org Tue Jan 09 08:52:16 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 09 Jan 2024 08:52:16 +0000
Received: from list by lists.xenproject.org with outflank-mailman.664329.1034461 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rN7q6-0003Ce-Ov; Tue, 09 Jan 2024 08:52:02 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 664329.1034461; Tue, 09 Jan 2024 08:52:02 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rN7q6-0003CX-Kb; Tue, 09 Jan 2024 08:52:02 +0000
Received: by outflank-mailman (input) for mailman id 664329;
 Tue, 09 Jan 2024 08:52:01 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=+5oy=IT=casper.srs.infradead.org=BATV+c77d61cb81d5ecfa779d+7443+infradead.org+dwmw2@srs-se1.protection.inumbo.net>)
 id 1rN7q5-0003CQ-8s
 for xen-devel@lists.xenproject.org; Tue, 09 Jan 2024 08:52:01 +0000
Received: from casper.infradead.org (casper.infradead.org
 [2001:8b0:10b:1236::1])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 59c2256a-aecc-11ee-98ef-6d05b1d4d9a1;
 Tue, 09 Jan 2024 09:52:00 +0100 (CET)
Received: from [2001:8b0:10b:5:eca8:9c83:a2d0:e91e]
 (helo=u3832b3a9db3152.ant.amazon.com)
 by casper.infradead.org with esmtpsa (Exim 4.94.2 #2 (Red Hat Linux))
 id 1rN7ph-009iYY-8f; Tue, 09 Jan 2024 08:51:38 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 59c2256a-aecc-11ee-98ef-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=infradead.org; s=casper.20170209; h=MIME-Version:Content-Type:References:
	In-Reply-To:Date:Cc:To:From:Subject:Message-ID:Sender:Reply-To:
	Content-Transfer-Encoding:Content-ID:Content-Description;
	bh=jP0O37avuXDmt0HcvABaF5F5+ceJhrkJtlPq9zAWKAc=; b=njMh/ENwqcvVU4LvT8xJcfA/58
	+QnEA6QZ1e46yqV7+DxxJUeDucWZqT7Kofj7/GVpkcaC1tPR18k9noCiJ6O2nnEkfdp1N7jzfrsaF
	W/drhLnZbANVJ5HtBeZAFqpZ0AStu6FADgWIulUbWVexUTAMfxc2uXTUBNMBIwqIYVV9N6rY6z9DV
	W/BMVijCSkfR5+LIGYY826qVz1aDmO/Af2fmc39jIKX79gFXYh5GqdURvArhTvlIg3wy9wxImWp1B
	5fR/eObNNTu7+INnS3svK5FHx0t46jvQ1rokrBLeLOAgqOcG8Eii7BCKm1M2LM0rLShJaq6nDWGz4
	SYERkhsg==;
Message-ID: <7d24b5aa384a492b3bd33f50906e3f000b1ff6a0.camel@infradead.org>
Subject: Re: [PATCH] hw/i386/pc_piix: Make piix_intx_routing_notifier_xen()
 more device independent
From: David Woodhouse <dwmw2@infradead.org>
To: Bernhard Beschow <shentey@gmail.com>, qemu-devel@nongnu.org
Cc: Chuck Zmudzinski <brchuckz@aol.com>, Paolo Bonzini
 <pbonzini@redhat.com>,  Stefano Stabellini <sstabellini@kernel.org>,
 xen-devel@lists.xenproject.org, Eduardo Habkost <eduardo@habkost.net>, 
 "Michael S. Tsirkin" <mst@redhat.com>, Marcel Apfelbaum
 <marcel.apfelbaum@gmail.com>, Paul Durrant <paul@xen.org>, Richard
 Henderson <richard.henderson@linaro.org>, Anthony PERARD
 <anthony.perard@citrix.com>
Date: Tue, 09 Jan 2024 08:51:37 +0000
In-Reply-To: <20240107231623.5282-1-shentey@gmail.com>
References: <20240107231623.5282-1-shentey@gmail.com>
Content-Type: multipart/signed; micalg="sha-256"; protocol="application/pkcs7-signature";
	boundary="=-jG46pVnm222lRFsDQkHL"
User-Agent: Evolution 3.44.4-0ubuntu2 
MIME-Version: 1.0
X-SRS-Rewrite: SMTP reverse-path rewritten from <dwmw2@infradead.org> by casper.infradead.org. See http://www.infradead.org/rpr.html


--=-jG46pVnm222lRFsDQkHL
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

On Mon, 2024-01-08 at 00:16 +0100, Bernhard Beschow wrote:
> This is a follow-up on commit 89965db43cce "hw/isa/piix3: Avoid Xen-speci=
fic
> variant of piix3_write_config()" which introduced
> piix_intx_routing_notifier_xen(). This function is implemented in board c=
ode but
> accesses the PCI configuration space of the PIIX ISA function to determin=
e the
> PCI interrupt routes. Avoid this by reusing pci_device_route_intx_to_irq(=
) which
> makes piix_intx_routing_notifier_xen() more device-agnostic.
>=20
> One remaining improvement would be making piix_intx_routing_notifier_xen(=
)
> agnostic towards the number of PCI interrupt routes and move it to xen-hv=
m.
> This might be useful for possible Q35 Xen efforts but remains a future ex=
ercise
> for now.
>=20
> Signed-off-by: Bernhard Beschow <shentey@gmail.com>

I'm still moderately unhappy that all this code is written with the
apparent assumption that there is only *one* IRQ# which is the target
for a given INTx, when in fact it gets routed to that pin# on the
legacy PIC and a potentially *different* pin# on the I/O APIC.

But you aren't making that worse, so

Reviewed-by: David Woodhouse <dwmw@amazon.co.uk>

--=-jG46pVnm222lRFsDQkHL
Content-Type: application/pkcs7-signature; name="smime.p7s"
Content-Disposition: attachment; filename="smime.p7s"
Content-Transfer-Encoding: base64

MIAGCSqGSIb3DQEHAqCAMIACAQExDzANBglghkgBZQMEAgEFADCABgkqhkiG9w0BBwEAAKCCEkQw
ggYQMIID+KADAgECAhBNlCwQ1DvglAnFgS06KwZPMA0GCSqGSIb3DQEBDAUAMIGIMQswCQYDVQQG
EwJVUzETMBEGA1UECBMKTmV3IEplcnNleTEUMBIGA1UEBxMLSmVyc2V5IENpdHkxHjAcBgNVBAoT
FVRoZSBVU0VSVFJVU1QgTmV0d29yazEuMCwGA1UEAxMlVVNFUlRydXN0IFJTQSBDZXJ0aWZpY2F0
aW9uIEF1dGhvcml0eTAeFw0xODExMDIwMDAwMDBaFw0zMDEyMzEyMzU5NTlaMIGWMQswCQYDVQQG
EwJHQjEbMBkGA1UECBMSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHEwdTYWxmb3JkMRgwFgYD
VQQKEw9TZWN0aWdvIExpbWl0ZWQxPjA8BgNVBAMTNVNlY3RpZ28gUlNBIENsaWVudCBBdXRoZW50
aWNhdGlvbiBhbmQgU2VjdXJlIEVtYWlsIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
AQEAyjztlApB/975Rrno1jvm2pK/KxBOqhq8gr2+JhwpKirSzZxQgT9tlC7zl6hn1fXjSo5MqXUf
ItMltrMaXqcESJuK8dtK56NCSrq4iDKaKq9NxOXFmqXX2zN8HHGjQ2b2Xv0v1L5Nk1MQPKA19xeW
QcpGEGFUUd0kN+oHox+L9aV1rjfNiCj3bJk6kJaOPabPi2503nn/ITX5e8WfPnGw4VuZ79Khj1YB
rf24k5Ee1sLTHsLtpiK9OjG4iQRBdq6Z/TlVx/hGAez5h36bBJMxqdHLpdwIUkTqT8se3ed0PewD
ch/8kHPo5fZl5u1B0ecpq/sDN/5sCG52Ds+QU5O5EwIDAQABo4IBZDCCAWAwHwYDVR0jBBgwFoAU
U3m/WqorSs9UgOHYm8Cd8rIDZsswHQYDVR0OBBYEFAnA8vwL2pTbX/4r36iZQs/J4K0AMA4GA1Ud
DwEB/wQEAwIBhjASBgNVHRMBAf8ECDAGAQH/AgEAMB0GA1UdJQQWMBQGCCsGAQUFBwMCBggrBgEF
BQcDBDARBgNVHSAECjAIMAYGBFUdIAAwUAYDVR0fBEkwRzBFoEOgQYY/aHR0cDovL2NybC51c2Vy
dHJ1c3QuY29tL1VTRVJUcnVzdFJTQUNlcnRpZmljYXRpb25BdXRob3JpdHkuY3JsMHYGCCsGAQUF
BwEBBGowaDA/BggrBgEFBQcwAoYzaHR0cDovL2NydC51c2VydHJ1c3QuY29tL1VTRVJUcnVzdFJT
QUFkZFRydXN0Q0EuY3J0MCUGCCsGAQUFBzABhhlodHRwOi8vb2NzcC51c2VydHJ1c3QuY29tMA0G
CSqGSIb3DQEBDAUAA4ICAQBBRHUAqznCFfXejpVtMnFojADdF9d6HBA4kMjjsb0XMZHztuOCtKF+
xswhh2GqkW5JQrM8zVlU+A2VP72Ky2nlRA1GwmIPgou74TZ/XTarHG8zdMSgaDrkVYzz1g3nIVO9
IHk96VwsacIvBF8JfqIs+8aWH2PfSUrNxP6Ys7U0sZYx4rXD6+cqFq/ZW5BUfClN/rhk2ddQXyn7
kkmka2RQb9d90nmNHdgKrwfQ49mQ2hWQNDkJJIXwKjYA6VUR/fZUFeCUisdDe/0ABLTI+jheXUV1
eoYV7lNwNBKpeHdNuO6Aacb533JlfeUHxvBz9OfYWUiXu09sMAviM11Q0DuMZ5760CdO2VnpsXP4
KxaYIhvqPqUMWqRdWyn7crItNkZeroXaecG03i3mM7dkiPaCkgocBg0EBYsbZDZ8bsG3a08LwEsL
1Ygz3SBsyECa0waq4hOf/Z85F2w2ZpXfP+w8q4ifwO90SGZZV+HR/Jh6rEaVPDRF/CEGVqR1hiuQ
OZ1YL5ezMTX0ZSLwrymUE0pwi/KDaiYB15uswgeIAcA6JzPFf9pLkAFFWs1QNyN++niFhsM47qod
x/PL+5jR87myx5uYdBEQkkDc+lKB1Wct6ucXqm2EmsaQ0M95QjTmy+rDWjkDYdw3Ms6mSWE3Bn7i
5ZgtwCLXgAIe5W8mybM2JzCCBhQwggT8oAMCAQICEQDGvhmWZ0DEAx0oURL6O6l+MA0GCSqGSIb3
DQEBCwUAMIGWMQswCQYDVQQGEwJHQjEbMBkGA1UECBMSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYD
VQQHEwdTYWxmb3JkMRgwFgYDVQQKEw9TZWN0aWdvIExpbWl0ZWQxPjA8BgNVBAMTNVNlY3RpZ28g
UlNBIENsaWVudCBBdXRoZW50aWNhdGlvbiBhbmQgU2VjdXJlIEVtYWlsIENBMB4XDTIyMDEwNzAw
MDAwMFoXDTI1MDEwNjIzNTk1OVowJDEiMCAGCSqGSIb3DQEJARYTZHdtdzJAaW5mcmFkZWFkLm9y
ZzCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBALQ3GpC2bomUqk+91wLYBzDMcCj5C9m6
oZaHwvmIdXftOgTbCJXADo6G9T7BBAebw2JV38EINgKpy/ZHh7htyAkWYVoFsFPrwHounto8xTsy
SSePMiPlmIdQ10BcVSXMUJ3Juu16GlWOnAMJY2oYfEzmE7uT9YgcBqKCo65pTFmOnR/VVbjJk4K2
xE34GC2nAdUQkPFuyaFisicc6HRMOYXPuF0DuwITEKnjxgNjP+qDrh0db7PAjO1D4d5ftfrsf+kd
RR4gKVGSk8Tz2WwvtLAroJM4nXjNPIBJNT4w/FWWc/5qPHJy2U+eITZ5LLE5s45mX2oPFknWqxBo
bQZ8a9dsZ3dSPZBvE9ZrmtFLrVrN4eo1jsXgAp1+p7bkfqd3BgBEmfsYWlBXO8rVXfvPgLs32VdV
NZxb/CDWPqBsiYv0Hv3HPsz07j5b+/cVoWqyHDKzkaVbxfq/7auNVRmPB3v5SWEsH8xi4Bez2V9U
KxfYCnqsjp8RaC2/khxKt0A552Eaxnz/4ly/2C7wkwTQnBmdlFYhAflWKQ03Ufiu8t3iBE3VJbc2
5oMrglj7TRZrmKq3CkbFnX0fyulB+kHimrt6PIWn7kgyl9aelIl6vtbhMA+l0nfrsORMa4kobqQ5
C5rveVgmcIad67EDa+UqEKy/GltUwlSh6xy+TrK1tzDvAgMBAAGjggHMMIIByDAfBgNVHSMEGDAW
gBQJwPL8C9qU21/+K9+omULPyeCtADAdBgNVHQ4EFgQUzMeDMcimo0oz8o1R1Nver3ZVpSkwDgYD
VR0PAQH/BAQDAgWgMAwGA1UdEwEB/wQCMAAwHQYDVR0lBBYwFAYIKwYBBQUHAwQGCCsGAQUFBwMC
MEAGA1UdIAQ5MDcwNQYMKwYBBAGyMQECAQEBMCUwIwYIKwYBBQUHAgEWF2h0dHBzOi8vc2VjdGln
by5jb20vQ1BTMFoGA1UdHwRTMFEwT6BNoEuGSWh0dHA6Ly9jcmwuc2VjdGlnby5jb20vU2VjdGln
b1JTQUNsaWVudEF1dGhlbnRpY2F0aW9uYW5kU2VjdXJlRW1haWxDQS5jcmwwgYoGCCsGAQUFBwEB
BH4wfDBVBggrBgEFBQcwAoZJaHR0cDovL2NydC5zZWN0aWdvLmNvbS9TZWN0aWdvUlNBQ2xpZW50
QXV0aGVudGljYXRpb25hbmRTZWN1cmVFbWFpbENBLmNydDAjBggrBgEFBQcwAYYXaHR0cDovL29j
c3Auc2VjdGlnby5jb20wHgYDVR0RBBcwFYETZHdtdzJAaW5mcmFkZWFkLm9yZzANBgkqhkiG9w0B
AQsFAAOCAQEAyW6MUir5dm495teKqAQjDJwuFCi35h4xgnQvQ/fzPXmtR9t54rpmI2TfyvcKgOXp
qa7BGXNFfh1JsqexVkIqZP9uWB2J+uVMD+XZEs/KYNNX2PvIlSPrzIB4Z2wyIGQpaPLlYflrrVFK
v9CjT2zdqvy2maK7HKOQRt3BiJbVG5lRiwbbygldcALEV9ChWFfgSXvrWDZspnU3Gjw/rMHrGnql
Htlyebp3pf3fSS9kzQ1FVtVIDrL6eqhTwJxe+pXSMMqFiN0whpBtXdyDjzBtQTaZJ7zTT/vlehc/
tDuqZwGHm/YJy883Ll+GP3NvOkgaRGWEuYWJJ6hFCkXYjyR9IzCCBhQwggT8oAMCAQICEQDGvhmW
Z0DEAx0oURL6O6l+MA0GCSqGSIb3DQEBCwUAMIGWMQswCQYDVQQGEwJHQjEbMBkGA1UECBMSR3Jl
YXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHEwdTYWxmb3JkMRgwFgYDVQQKEw9TZWN0aWdvIExpbWl0
ZWQxPjA8BgNVBAMTNVNlY3RpZ28gUlNBIENsaWVudCBBdXRoZW50aWNhdGlvbiBhbmQgU2VjdXJl
IEVtYWlsIENBMB4XDTIyMDEwNzAwMDAwMFoXDTI1MDEwNjIzNTk1OVowJDEiMCAGCSqGSIb3DQEJ
ARYTZHdtdzJAaW5mcmFkZWFkLm9yZzCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBALQ3
GpC2bomUqk+91wLYBzDMcCj5C9m6oZaHwvmIdXftOgTbCJXADo6G9T7BBAebw2JV38EINgKpy/ZH
h7htyAkWYVoFsFPrwHounto8xTsySSePMiPlmIdQ10BcVSXMUJ3Juu16GlWOnAMJY2oYfEzmE7uT
9YgcBqKCo65pTFmOnR/VVbjJk4K2xE34GC2nAdUQkPFuyaFisicc6HRMOYXPuF0DuwITEKnjxgNj
P+qDrh0db7PAjO1D4d5ftfrsf+kdRR4gKVGSk8Tz2WwvtLAroJM4nXjNPIBJNT4w/FWWc/5qPHJy
2U+eITZ5LLE5s45mX2oPFknWqxBobQZ8a9dsZ3dSPZBvE9ZrmtFLrVrN4eo1jsXgAp1+p7bkfqd3
BgBEmfsYWlBXO8rVXfvPgLs32VdVNZxb/CDWPqBsiYv0Hv3HPsz07j5b+/cVoWqyHDKzkaVbxfq/
7auNVRmPB3v5SWEsH8xi4Bez2V9UKxfYCnqsjp8RaC2/khxKt0A552Eaxnz/4ly/2C7wkwTQnBmd
lFYhAflWKQ03Ufiu8t3iBE3VJbc25oMrglj7TRZrmKq3CkbFnX0fyulB+kHimrt6PIWn7kgyl9ae
lIl6vtbhMA+l0nfrsORMa4kobqQ5C5rveVgmcIad67EDa+UqEKy/GltUwlSh6xy+TrK1tzDvAgMB
AAGjggHMMIIByDAfBgNVHSMEGDAWgBQJwPL8C9qU21/+K9+omULPyeCtADAdBgNVHQ4EFgQUzMeD
Mcimo0oz8o1R1Nver3ZVpSkwDgYDVR0PAQH/BAQDAgWgMAwGA1UdEwEB/wQCMAAwHQYDVR0lBBYw
FAYIKwYBBQUHAwQGCCsGAQUFBwMCMEAGA1UdIAQ5MDcwNQYMKwYBBAGyMQECAQEBMCUwIwYIKwYB
BQUHAgEWF2h0dHBzOi8vc2VjdGlnby5jb20vQ1BTMFoGA1UdHwRTMFEwT6BNoEuGSWh0dHA6Ly9j
cmwuc2VjdGlnby5jb20vU2VjdGlnb1JTQUNsaWVudEF1dGhlbnRpY2F0aW9uYW5kU2VjdXJlRW1h
aWxDQS5jcmwwgYoGCCsGAQUFBwEBBH4wfDBVBggrBgEFBQcwAoZJaHR0cDovL2NydC5zZWN0aWdv
LmNvbS9TZWN0aWdvUlNBQ2xpZW50QXV0aGVudGljYXRpb25hbmRTZWN1cmVFbWFpbENBLmNydDAj
BggrBgEFBQcwAYYXaHR0cDovL29jc3Auc2VjdGlnby5jb20wHgYDVR0RBBcwFYETZHdtdzJAaW5m
cmFkZWFkLm9yZzANBgkqhkiG9w0BAQsFAAOCAQEAyW6MUir5dm495teKqAQjDJwuFCi35h4xgnQv
Q/fzPXmtR9t54rpmI2TfyvcKgOXpqa7BGXNFfh1JsqexVkIqZP9uWB2J+uVMD+XZEs/KYNNX2PvI
lSPrzIB4Z2wyIGQpaPLlYflrrVFKv9CjT2zdqvy2maK7HKOQRt3BiJbVG5lRiwbbygldcALEV9Ch
WFfgSXvrWDZspnU3Gjw/rMHrGnqlHtlyebp3pf3fSS9kzQ1FVtVIDrL6eqhTwJxe+pXSMMqFiN0w
hpBtXdyDjzBtQTaZJ7zTT/vlehc/tDuqZwGHm/YJy883Ll+GP3NvOkgaRGWEuYWJJ6hFCkXYjyR9
IzGCBMcwggTDAgEBMIGsMIGWMQswCQYDVQQGEwJHQjEbMBkGA1UECBMSR3JlYXRlciBNYW5jaGVz
dGVyMRAwDgYDVQQHEwdTYWxmb3JkMRgwFgYDVQQKEw9TZWN0aWdvIExpbWl0ZWQxPjA8BgNVBAMT
NVNlY3RpZ28gUlNBIENsaWVudCBBdXRoZW50aWNhdGlvbiBhbmQgU2VjdXJlIEVtYWlsIENBAhEA
xr4ZlmdAxAMdKFES+jupfjANBglghkgBZQMEAgEFAKCCAeswGAYJKoZIhvcNAQkDMQsGCSqGSIb3
DQEHATAcBgkqhkiG9w0BCQUxDxcNMjQwMTA5MDg1MTM3WjAvBgkqhkiG9w0BCQQxIgQgsenpN3hG
LXKb4yuFgUaHyO89XmaDXwL0nh+eoTYXTfMwgb0GCSsGAQQBgjcQBDGBrzCBrDCBljELMAkGA1UE
BhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEYMBYG
A1UEChMPU2VjdGlnbyBMaW1pdGVkMT4wPAYDVQQDEzVTZWN0aWdvIFJTQSBDbGllbnQgQXV0aGVu
dGljYXRpb24gYW5kIFNlY3VyZSBFbWFpbCBDQQIRAMa+GZZnQMQDHShREvo7qX4wgb8GCyqGSIb3
DQEJEAILMYGvoIGsMIGWMQswCQYDVQQGEwJHQjEbMBkGA1UECBMSR3JlYXRlciBNYW5jaGVzdGVy
MRAwDgYDVQQHEwdTYWxmb3JkMRgwFgYDVQQKEw9TZWN0aWdvIExpbWl0ZWQxPjA8BgNVBAMTNVNl
Y3RpZ28gUlNBIENsaWVudCBBdXRoZW50aWNhdGlvbiBhbmQgU2VjdXJlIEVtYWlsIENBAhEAxr4Z
lmdAxAMdKFES+jupfjANBgkqhkiG9w0BAQEFAASCAgA9xqbkvSix5UfR0FhpczOfB3IBb9/MOPEB
ZtIAcu2PbrXpaleXGbuZlcP/68Hyb9KkclO0LdGBFzXVejiLy6R77erFjbMRCX16Ix34vXz1dICC
Bof+S995X5+X0g3YJxMJ7da9ERXN6+FFSJw3bWCeifZLmAB59bn3Dr0Go0lizSHK4X9CuLG2KySM
g1BXAKLYX0Pqhe8DIu/kkP7WnUZ/u8pK46s7DXpKcozyYmNQbRHaQYMlJFIcI3APNpWejkDe3BE0
z5HQVE9irynTgmz6V/zdCZBjUpEryUaLX4C2anfb8xZK68TELClZTgXRGh/Jo3YiZZtMg23DH9m3
PlBPR01XeoL1hS3WTPA6246b7biljRV8WuOOQ6naHzZ46Ry7jd6WMTLxMa8Cm3S9hrbmz3TZB0/2
n170PsxBoKntZ3zThABRpwQNF9F3kegoPpPZK6exPWyuh8Y/VOLFuwamfv7lhxZuZYcWM5i+YNC6
f4eIMz0EcBFQYzHCj5GsCXDA6jQgQDtYCD9qsfCsyYlXgJKib7Vc7Dlhj+D/XJykXoXlTVIOl7BA
yESh0DCs1nBQOJIUzLjXL2ETdkKgTLRie/H6OHcCQ3H3jQYpfwcLXUheMF/TzexUhUe04o/ddYpQ
01/SSUUtxnFWJsx7VYZC+8CbPcW+mS9XXD5llWNdGAAAAAAAAA==


--=-jG46pVnm222lRFsDQkHL--


From xen-devel-bounces@lists.xenproject.org Tue Jan 09 09:22:52 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 09 Jan 2024 09:22:52 +0000
Received: from list by lists.xenproject.org with outflank-mailman.664337.1034470 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rN8Jj-00049R-56; Tue, 09 Jan 2024 09:22:39 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 664337.1034470; Tue, 09 Jan 2024 09:22:39 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rN8Jj-00049K-2X; Tue, 09 Jan 2024 09:22:39 +0000
Received: by outflank-mailman (input) for mailman id 664337;
 Tue, 09 Jan 2024 09:22:38 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=JJbl=IT=gmail.com=oleksii.kurochko@srs-se1.protection.inumbo.net>)
 id 1rN8Ji-00049E-2C
 for xen-devel@lists.xenproject.org; Tue, 09 Jan 2024 09:22:38 +0000
Received: from mail-lf1-x12b.google.com (mail-lf1-x12b.google.com
 [2a00:1450:4864:20::12b])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id a076457e-aed0-11ee-98ef-6d05b1d4d9a1;
 Tue, 09 Jan 2024 10:22:36 +0100 (CET)
Received: by mail-lf1-x12b.google.com with SMTP id
 2adb3069b0e04-50e7c6f0487so2572453e87.3
 for <xen-devel@lists.xenproject.org>; Tue, 09 Jan 2024 01:22:36 -0800 (PST)
Received: from [192.168.223.212] ([94.75.70.14])
 by smtp.gmail.com with ESMTPSA id
 a20-20020a19ca14000000b0050e78f183e1sm255578lfg.82.2024.01.09.01.22.33
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 09 Jan 2024 01:22:35 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: a076457e-aed0-11ee-98ef-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1704792156; x=1705396956; darn=lists.xenproject.org;
        h=mime-version:user-agent:content-transfer-encoding:references
         :in-reply-to:date:cc:to:from:subject:message-id:from:to:cc:subject
         :date:message-id:reply-to;
        bh=XSgUqBjGpY/lm0+yX3OdNlCBhWiQmqTpLFHUjfE1X5E=;
        b=YJqpmMCFm63L/mLJ7qwV/13zuElyU6RaScQ7XTDulCK8dc7U/clfzWqBmli58rh4+y
         eSeh6x35zfMP3af8E7ONVbWpJp/nNt4BPstIsCdzX8n6vqt0NEDqRbHrfJRnu3697YG2
         bAXZccpW0navKsqVqMZFgdlvt8Lbm67PpWqcpY4qjGuaY+fR9JDYe4r93mjXKGw5vx01
         Aur6Jzs30tJzFM4Zc2udL1vqeNbGTxqsPLd3GlDQAUsvlCNM+lSyrem0q4xEME7/NsBr
         y1E92bXLJeedZFhJjqYAkg0cBLGfwPrANucmQgJukMKzQfP+G6yBlJY98Hh2EHitiz5P
         IKQg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704792156; x=1705396956;
        h=mime-version:user-agent:content-transfer-encoding:references
         :in-reply-to:date:cc:to:from:subject:message-id:x-gm-message-state
         :from:to:cc:subject:date:message-id:reply-to;
        bh=XSgUqBjGpY/lm0+yX3OdNlCBhWiQmqTpLFHUjfE1X5E=;
        b=AX9vhxTvf5QrIqrZhe9lX93QPf/mMiuSgFjYYO07chIGG67mqzvi1Air1eeTKp7bAX
         hrPZqL8io3VP7Bv7Y7XpKvinf6IYGubJia1TZZmKfVQfVgwAxGZ+hWDVExJY2LbHtyTg
         WS6bVQ0YLvyyXEUsTGa7vH26OxE8uS2w6hYh9jKL54CUlzJNRlxIzuQoiHwLX0Nq0xpW
         b2PS4oQMxrNbbREx5+BJm8Tjge8dhm9XL9m5R4uxDS1+PvDRjl+0IKda5pcvfFSYMeiS
         V1CQWDPEbE1gXdCSNHhOqZ0EbGsjYpIpVxv2NJ34LYsJjxASQuYU2LWtrkxQWQ4z68Cf
         Xwpw==
X-Gm-Message-State: AOJu0YwEPx2MJBwo0ItvGkZOqmiOvM2R1DHas3q3gI3xs/YDGlhocHUz
	OdJCBbw19fE7U7N8XNkw2Ng=
X-Google-Smtp-Source: AGHT+IGjqTR/A3ykPoWp+178wfN91b80SM8dhtqqI21m9hjRRGk2F/TTDydgokVR6C/K96BY7+lFjw==
X-Received: by 2002:a05:6512:46c:b0:50e:7b03:3b7c with SMTP id x12-20020a056512046c00b0050e7b033b7cmr1473836lfd.3.1704792155601;
        Tue, 09 Jan 2024 01:22:35 -0800 (PST)
Message-ID: <e544f1a4e24f815beb1d843dbfb2ae1b4f98f3b3.camel@gmail.com>
Subject: Re: [PATCH v2] NUMA: no need for asm/numa.h when !NUMA
From: Oleksii <oleksii.kurochko@gmail.com>
To: Jan Beulich <jbeulich@suse.com>, "xen-devel@lists.xenproject.org"
	 <xen-devel@lists.xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, George Dunlap
 <george.dunlap@citrix.com>, Julien Grall <julien@xen.org>, Stefano
 Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>, Shawn Anastasio
 <sanastasio@raptorengineering.com>, Bertrand Marquis
 <bertrand.marquis@arm.com>,  Michal Orzel <michal.orzel@amd.com>
Date: Tue, 09 Jan 2024 11:22:32 +0200
In-Reply-To: <94cffa48-5e31-4557-827d-c6dec6031d05@suse.com>
References: <94cffa48-5e31-4557-827d-c6dec6031d05@suse.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
User-Agent: Evolution 3.50.2 (3.50.2-1.fc39) 
MIME-Version: 1.0

Looks good to me.

Acked-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>

Best regards,
 Oleksii

On Mon, 2024-01-08 at 12:30 +0100, Jan Beulich wrote:
> There's no point in every architecture carrying the same stubs for
> the
> case when NUMA isn't enabled (or even supported). Move all of that to
> xen/numa.h; replace explicit uses of asm/numa.h in common code. Make
> inclusion of asm/numa.h dependent upon NUMA=3Dy.
>=20
> Drop the no longer applicable "implement NUMA support" comments - in
> a
> !NUMA section this simply makes no sense.
>=20
> Signed-off-by: Jan Beulich <jbeulich@suse.com>
> ---
> v2: Split off first_valid_mfn specific change. Re-base.
>=20
> --- a/xen/arch/arm/include/asm/numa.h
> +++ /dev/null
> @@ -1,31 +0,0 @@
> -#ifndef __ARCH_ARM_NUMA_H
> -#define __ARCH_ARM_NUMA_H
> -
> -#include <xen/mm.h>
> -
> -typedef u8 nodeid_t;
> -
> -#ifndef CONFIG_NUMA
> -
> -/* Fake one node for now. See also node_online_map. */
> -#define cpu_to_node(cpu) 0
> -#define node_to_cpumask(node)=C2=A0=C2=A0 (cpu_online_map)
> -
> -/* XXX: implement NUMA support */
> -#define node_spanned_pages(nid) (max_page - mfn_x(first_valid_mfn))
> -#define node_start_pfn(nid) (mfn_x(first_valid_mfn))
> -#define __node_distance(a, b) (20)
> -
> -#endif
> -
> -#define arch_want_default_dmazone() (false)
> -
> -#endif /* __ARCH_ARM_NUMA_H */
> -/*
> - * Local variables:
> - * mode: C
> - * c-file-style: "BSD"
> - * c-basic-offset: 4
> - * indent-tabs-mode: nil
> - * End:
> - */
> --- a/xen/arch/arm/smpboot.c
> +++ b/xen/arch/arm/smpboot.c
> @@ -42,7 +42,7 @@ integer_param("maxcpus", max_cpus);
> =C2=A0/* CPU logical map: map xen cpuid to an MPIDR */
> =C2=A0register_t __cpu_logical_map[NR_CPUS] =3D { [0 ... NR_CPUS-1] =3D
> MPIDR_INVALID };
> =C2=A0
> -/* Fake one node for now. See also asm/numa.h */
> +/* Fake one node for now. See also xen/numa.h */
> =C2=A0nodemask_t __read_mostly node_online_map =3D { { [0] =3D 1UL } };
> =C2=A0
> =C2=A0/* Xen stack for bringing up the first CPU. */
> --- a/xen/arch/ppc/include/asm/numa.h
> +++ /dev/null
> @@ -1,20 +0,0 @@
> -#ifndef __ASM_PPC_NUMA_H__
> -#define __ASM_PPC_NUMA_H__
> -
> -#include <xen/types.h>
> -#include <xen/mm.h>
> -
> -typedef uint8_t nodeid_t;
> -
> -/* Fake one node for now. See also node_online_map. */
> -#define cpu_to_node(cpu) 0
> -#define node_to_cpumask(node)=C2=A0=C2=A0 (cpu_online_map)
> -
> -/* XXX: implement NUMA support */
> -#define node_spanned_pages(nid) (max_page - mfn_x(first_valid_mfn))
> -#define node_start_pfn(nid) (mfn_x(first_valid_mfn))
> -#define __node_distance(a, b) (20)
> -
> -#define arch_want_default_dmazone() (false)
> -
> -#endif /* __ASM_PPC_NUMA_H__ */
> --- a/xen/common/page_alloc.c
> +++ b/xen/common/page_alloc.c
> @@ -138,7 +138,6 @@
> =C2=A0#include <xen/spinlock.h>
> =C2=A0
> =C2=A0#include <asm/flushtlb.h>
> -#include <asm/numa.h>
> =C2=A0#include <asm/page.h>
> =C2=A0
> =C2=A0#include <public/sysctl.h>
> --- a/xen/common/sysctl.c
> +++ b/xen/common/sysctl.c
> @@ -22,8 +22,8 @@
> =C2=A0#include <asm/current.h>
> =C2=A0#include <xen/hypercall.h>
> =C2=A0#include <public/sysctl.h>
> -#include <asm/numa.h>
> =C2=A0#include <xen/nodemask.h>
> +#include <xen/numa.h>
> =C2=A0#include <xsm/xsm.h>
> =C2=A0#include <xen/pmstat.h>
> =C2=A0#include <xen/livepatch.h>
> --- a/xen/include/xen/domain.h
> +++ b/xen/include/xen/domain.h
> @@ -2,6 +2,7 @@
> =C2=A0#ifndef __XEN_DOMAIN_H__
> =C2=A0#define __XEN_DOMAIN_H__
> =C2=A0
> +#include <xen/numa.h>
> =C2=A0#include <xen/types.h>
> =C2=A0
> =C2=A0#include <public/xen.h>
> @@ -12,7 +13,6 @@ struct guest_area {
> =C2=A0};
> =C2=A0
> =C2=A0#include <asm/domain.h>
> -#include <asm/numa.h>
> =C2=A0
> =C2=A0typedef union {
> =C2=A0=C2=A0=C2=A0=C2=A0 struct vcpu_guest_context *nat;
> --- a/xen/include/xen/numa.h
> +++ b/xen/include/xen/numa.h
> @@ -2,7 +2,13 @@
> =C2=A0#define _XEN_NUMA_H
> =C2=A0
> =C2=A0#include <xen/mm-frame.h>
> +
> +#ifdef CONFIG_NUMA
> +#include <xen/pdx.h>
> =C2=A0#include <asm/numa.h>
> +#else
> +typedef uint8_t nodeid_t;
> +#endif
> =C2=A0
> =C2=A0#define NUMA_NO_NODE=C2=A0=C2=A0=C2=A0=C2=A0 0xFF
> =C2=A0#define NUMA_NO_DISTANCE 0xFF
> @@ -108,8 +114,18 @@ extern void numa_set_processor_nodes_par
> =C2=A0
> =C2=A0#else
> =C2=A0
> +/* Fake one node for now. See also node_online_map. */
> +#define cpu_to_node(cpu) 0
> +#define node_to_cpumask(node)=C2=A0=C2=A0 cpu_online_map
> +
> +#define arch_want_default_dmazone() false
> +
> =C2=A0extern mfn_t first_valid_mfn;
> =C2=A0
> +#define node_spanned_pages(nid) (max_page - mfn_x(first_valid_mfn))
> +#define node_start_pfn(nid) mfn_x(first_valid_mfn)
> +#define __node_distance(a, b) 20
> +
> =C2=A0static inline nodeid_t mfn_to_nid(mfn_t mfn)
> =C2=A0{
> =C2=A0=C2=A0=C2=A0=C2=A0 return 0;
> --- a/xen/include/xen/pci.h
> +++ b/xen/include/xen/pci.h
> @@ -11,10 +11,10 @@
> =C2=A0#include <xen/list.h>
> =C2=A0#include <xen/spinlock.h>
> =C2=A0#include <xen/irq.h>
> +#include <xen/numa.h>
> =C2=A0#include <xen/pci_regs.h>
> =C2=A0#include <xen/pfn.h>
> =C2=A0#include <asm/device.h>
> -#include <asm/numa.h>
> =C2=A0
> =C2=A0/*
> =C2=A0 * The PCI interface treats multi-function devices as independent



From xen-devel-bounces@lists.xenproject.org Tue Jan 09 09:34:55 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 09 Jan 2024 09:34:55 +0000
Received: from list by lists.xenproject.org with outflank-mailman.664343.1034481 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rN8VW-0007Rh-Az; Tue, 09 Jan 2024 09:34:50 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 664343.1034481; Tue, 09 Jan 2024 09:34:50 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rN8VW-0007Ra-87; Tue, 09 Jan 2024 09:34:50 +0000
Received: by outflank-mailman (input) for mailman id 664343;
 Tue, 09 Jan 2024 09:34:48 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=RTBC=IT=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rN8VU-0007RU-8e
 for xen-devel@lists.xenproject.org; Tue, 09 Jan 2024 09:34:48 +0000
Received: from mail-lf1-x132.google.com (mail-lf1-x132.google.com
 [2a00:1450:4864:20::132])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 53cbedb1-aed2-11ee-98ef-6d05b1d4d9a1;
 Tue, 09 Jan 2024 10:34:46 +0100 (CET)
Received: by mail-lf1-x132.google.com with SMTP id
 2adb3069b0e04-50e7ddd999bso2911253e87.1
 for <xen-devel@lists.xenproject.org>; Tue, 09 Jan 2024 01:34:46 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 w20-20020a056e0213f400b0035fffb69deasm497862ilj.81.2024.01.09.01.34.43
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 09 Jan 2024 01:34:45 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 53cbedb1-aed2-11ee-98ef-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1704792886; x=1705397686; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=JWzlqt/ChhG0DRTHJ3OjWahudJZgniNMgs+f+5XcAH4=;
        b=UFqHnySQF+jUAB4EsmFlelEw6flL4FMnEVU3/EA4tu4m1QyCWrPAScLJlP6o59KY5Z
         vqNxq+lz1Pq//FjWe4fmUcjOf7mN1lWrcfUV0ZRQNZMKDbE+TN7h1c6Vqo4EeiMkbRV6
         xtGc7v5UtOx2ukWy3iJ6gGkJvdu7PReJSH8ZM+j0SYWfpvGFF8xVYvASOcf5QXc/4HL3
         swfXWYtoCckKW8Z4PzZkrj/61ZQ+vjdAB+jdmoxMnWdhacb0uQqBdJoZpfDeotGTt5dP
         hwxI2nogXuluhLLgFObOlcWk+4kdtBIkQ7mdMArjPyejR3YvIp9+E1LI2rCwIy6bur+U
         koag==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704792886; x=1705397686;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=JWzlqt/ChhG0DRTHJ3OjWahudJZgniNMgs+f+5XcAH4=;
        b=eRNWIe2E7udGt1HQ4x1e7GlyGfAzq4it3gmLmcwY58aaknPWXfr2v0YqLueDkrrTMf
         S18flv6CGOmhrsHfqr0NhG6rGWfgwvHPYEfUyYJXey39ODZfxGlikwmKbqaYtrA5SkJr
         haqh6/2mxzTdjqAMUqkbf+bsZ5/r7Xsw+ks6f0GPfA9qrXVlnjy7R2Vg9Loh0VDXiOWB
         CIwflLLujBcGaX+U3DAklpQdfKYFecNTG9FIVCkYKv79FQBBAMISdV2DmDbAevPY/Won
         S5+AznKSaVdqmCkaDFRaxhqUF4yCvB+VSbe9RUvvCNm3+8U+Q2NZU2RoAIO732FlLNzm
         wDog==
X-Gm-Message-State: AOJu0Yzf9OxPccRcFBznix9EQiXH7TaLa5iPo+bgZMTQ8moorEG3HQ2S
	8/Bp0jIGkk/u2Q0L9fT6kWNHdMhyVDYG
X-Google-Smtp-Source: AGHT+IELC0ajPR0xL7JyDmRk07Mg53xaev20PFWPXQQwFKqzOtr6P4eDBIX9/dkHiJPsZaXbm5o0Jg==
X-Received: by 2002:a19:2d1d:0:b0:50e:9a0d:d402 with SMTP id k29-20020a192d1d000000b0050e9a0dd402mr2017002lfj.105.1704792886264;
        Tue, 09 Jan 2024 01:34:46 -0800 (PST)
Message-ID: <9f96d2ef-62fe-4197-b96d-45a6a828bc26@suse.com>
Date: Tue, 9 Jan 2024 10:34:42 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v5 04/13] xen: extend domctl interface for cache coloring
Content-Language: en-US
To: Stefano Stabellini <sstabellini@kernel.org>,
 Carlo Nonato <carlo.nonato@minervasys.tech>
Cc: xen-devel@lists.xenproject.org,
 Bertrand Marquis <bertrand.marquis@arm.com>,
 Michal Orzel <michal.orzel@amd.com>,
 Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
 Andrew Cooper <andrew.cooper3@citrix.com>,
 George Dunlap <george.dunlap@citrix.com>, Wei Liu <wl@xen.org>,
 Marco Solieri <marco.solieri@minervasys.tech>, Julien Grall <julien@xen.org>
References: <20240102095138.17933-1-carlo.nonato@minervasys.tech>
 <20240102095138.17933-5-carlo.nonato@minervasys.tech>
 <99295edf-6c9c-4d06-ba20-86db67100561@xen.org>
 <CAG+AhRWd9E5sQPY-sxN+WGTSWtvRXGN2FnZC2Vy6LPyynKGLcQ@mail.gmail.com>
 <4675a541-b9dc-476a-a6ff-0247a4403292@xen.org>
 <CAG+AhRX6Y2U6A1v=27KgUeWip115R1o+csEWcyCCooxE2Tac6w@mail.gmail.com>
 <33061994-0b49-4e4e-8698-d6901b9130dc@xen.org>
 <CAG+AhRXPt_e4+OUxbRLhf6W0reH1nmO7cC9-XoFKe_G8BVxt7w@mail.gmail.com>
 <e7029592-57e6-4c2a-ab11-f843047ce7f2@xen.org>
 <CAG+AhRV8B4dcoVHXbP2KW5xsB8BQRt4NpPuXsmjc1X149GZRRw@mail.gmail.com>
 <08b7535e-da40-4578-b865-9b350ace379c@suse.com>
 <CAG+AhRXAY1TX-z2Aw0F1oEOKY=pjU9dV+C+hu4aPjF8H2Uj=Ng@mail.gmail.com>
 <alpine.DEB.2.22.394.2401081319130.3675@ubuntu-linux-20-04-desktop>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <alpine.DEB.2.22.394.2401081319130.3675@ubuntu-linux-20-04-desktop>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 08.01.2024 22:21, Stefano Stabellini wrote:
> On Mon, 8 Jan 2024, Carlo Nonato wrote:
>> Hi Jan,
>>
>> On Mon, Jan 8, 2024 at 5:40 PM Jan Beulich <jbeulich@suse.com> wrote:
>>>
>>> On 08.01.2024 17:31, Carlo Nonato wrote:
>>>> On Mon, Jan 8, 2024 at 4:32 PM Julien Grall <julien@xen.org> wrote:
>>>>> On 08/01/2024 15:18, Carlo Nonato wrote:
>>>>>>> No. I am saying that that we should not be able to allow changing the
>>>>>>> colors after the memory has been allocated. To give an example, your
>>>>>>> current code would allow:
>>>>>>>
>>>>>>>     1) Setup the P2M pools or allocate RAM
>>>>>>>     2) Set the color
>>>>>>>
>>>>>>> This would render the coloring configuration moot.
>>>>>>>
>>>>>>> Whether we want to allow changing the coloring before hand is a
>>>>>>> different question and as I wrote earlier on, I don't mind if you want
>>>>>>> to forbid that.
>>>>>>
>>>>>> At the moment I'm relying on the toolstack in the sense that I know that it
>>>>>> will set colors right after domain creation and before memory allocation.
>>>>>> Calling alloc_domheap_pages() without a coloring configuration makes Xen
>>>>>> crash, so it's mandatory to have the configuration done before any allocation.
>>>>>> I know that we shouldn't rely on the toolstack this much, but I didn't
>>>>>> find a better way. Given this assumption, looking for an already existing
>>>>>> color configuration of a domain is sufficient to avoid what you are saying.
>>>>>>
>>>>>> Is it possible to enforce such a constraint with domctl? > I mean to be sure that this domctl will be called at a precise time.
>>>>>
>>>>> Yes. You can...
>>>>>
>>>>>>
>>>>>> Thanks.
>>>>>>
>>>>>>>> I don't know what to check that.
>>>>>>>
>>>>>>> You can check the size of the P2M pool (d->arch.paging.p2m_total_pages)
>>>>>>> is still 0. I think for RAM, you can check d->tot_pages == 0.
>>>>>
>>>>> ... reject the call if either of the two fields are not zero.
>>>>
>>>> What I'm saying is that Xen would crash before even reaching this point if no
>>>> colors were provided. Let's say that the toolstack or whatever hypercall user
>>>> isn't calling this domctl at all (or not at the right time), then the domain
>>>> colored allocator would always return null pages since there are no colors.
>>>> We would have a crash and your if (or mine) would be useless.
>>>
>>> Why is it that you can't simply allocated arbitrary memory if coloring
>>> information wasn't set up front? Aiui that'll be required anyway, as
>>> there shouldn't be a restriction that all domains have to use coloring.
>>
>> If coloring is enabled all domains are colored. It's one of our first
>> assumptions. We haven't developed something that works hybridly and supporting
>> that would require some rework.
> 
> I think that's a good assumption and I wouldn't go in the direction of
> supporting a mix of colored and non-colored. To benefit from cache
> coloring, all domains need to be colored, otherwise a single non-colored
> domain could thrash the cache of everyone else.

In which case the tool stack not having set up coloring data first should
lead to all allocation attempts failing. No crashes whatsoever.

Jan


From xen-devel-bounces@lists.xenproject.org Tue Jan 09 09:38:56 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 09 Jan 2024 09:38:56 +0000
Received: from list by lists.xenproject.org with outflank-mailman.664346.1034490 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rN8ZS-0001HE-PJ; Tue, 09 Jan 2024 09:38:54 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 664346.1034490; Tue, 09 Jan 2024 09:38:54 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rN8ZS-0001H7-MV; Tue, 09 Jan 2024 09:38:54 +0000
Received: by outflank-mailman (input) for mailman id 664346;
 Tue, 09 Jan 2024 09:38:53 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=RTBC=IT=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rN8ZR-0001H1-A6
 for xen-devel@lists.xenproject.org; Tue, 09 Jan 2024 09:38:53 +0000
Received: from mail-lj1-x236.google.com (mail-lj1-x236.google.com
 [2a00:1450:4864:20::236])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id e609cc13-aed2-11ee-98ef-6d05b1d4d9a1;
 Tue, 09 Jan 2024 10:38:52 +0100 (CET)
Received: by mail-lj1-x236.google.com with SMTP id
 38308e7fff4ca-2cd33336b32so35511841fa.0
 for <xen-devel@lists.xenproject.org>; Tue, 09 Jan 2024 01:38:52 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 f19-20020a056638169300b0046cf80c799fsm532366jat.120.2024.01.09.01.38.49
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 09 Jan 2024 01:38:51 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: e609cc13-aed2-11ee-98ef-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1704793132; x=1705397932; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=MVuwS8d1dXz5eyKe37312eTETOEEV7JHLCR9rSazd4E=;
        b=Cjnt4hVqsTz1/pjc/ZFYqQCKvMMcriJbCabdqhwo6aHPl+5Rz/7zJFqt+1cgAbHQkS
         oP1AducF/OuP5s8kTOsEuxge/lqxkpBz/Q3bRMdViRzEFuYzKcFhhtrpJ1EYQH/JRigm
         IKCLGvrAeEpQgsq3o5cZ9o+F6812/PuQsCHCKPH/9axm7SDdZeB6MRbWIcZPtMoIXCpN
         ll1gFUOtBEeypDOp1B+mISIZaIHv4lnbd0o/mtSRt4s/MzQInKTl9xoY29XyJhIjTVva
         /m0pMSs92pW+nOH8KkbtmEZ/yTpuO1ABihlms0HSqLciJpJyjL/MHNHseqzgOx0pYGoA
         NrtQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704793132; x=1705397932;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=MVuwS8d1dXz5eyKe37312eTETOEEV7JHLCR9rSazd4E=;
        b=CV24ufV9LB7aBj2LZ71L4BigCjcymZ1Q7KTCmReB1gm8uqyBrGWRo6nXMxrDaYlgR4
         tnk4QzS/jKqZwS9k43ETh5YIFgssG1DTGMS6avblIfiaPqHPfYrWSaqYu7gpRFtQ/teD
         6YYEFiSMjzTR7Q8n1s+L39QogKLWDTfD6oKniGQz7ccP4j0gaiCWlmVQ0i8WNuHcJj9Y
         ZChVbbtk+Wbv+QFhwHqhRydTiYplXy6SXYJIpCuOVVfWn2uZOPMDZVez6Vss2fIEE5CI
         XB3sbFb3DUryHne6aDkHxEnsArkMADW0Qz489mJApZDS1LWvtpSRHNt/8YpWvmNlW2j6
         VPQQ==
X-Gm-Message-State: AOJu0YzUn9KEDlhKCXYje/k8sUvIpnKuo4SRVRbsk1QWdHnQo5EJZ21m
	VilaA7ZYtlDIRsUic4XloyDAVg85pLj+
X-Google-Smtp-Source: AGHT+IGiIq0zaZh/btgUHxJ+QF/THgb/C4d8hpXPtmu3u9DNwQxmkLvZqd3RLpyAcuUwkFoDPuqBkA==
X-Received: by 2002:a2e:a793:0:b0:2cd:284a:96e4 with SMTP id c19-20020a2ea793000000b002cd284a96e4mr2995623ljf.91.1704793131740;
        Tue, 09 Jan 2024 01:38:51 -0800 (PST)
Message-ID: <b4ed7764-a44c-4ac8-bb56-379fdeba16e8@suse.com>
Date: Tue, 9 Jan 2024 10:38:47 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [RFC XEN PATCH v4 4/5] domctl: Use gsi to grant/revoke irq
 permission
Content-Language: en-US
To: "Chen, Jiqian" <Jiqian.Chen@amd.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>, Julien Grall <julien@xen.org>,
 Anthony PERARD <anthony.perard@citrix.com>, Juergen Gross <jgross@suse.com>,
 "Hildebrand, Stewart" <Stewart.Hildebrand@amd.com>,
 "Huang, Ray" <Ray.Huang@amd.com>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger.pau@citrix.com>, Stefano Stabellini <sstabellini@kernel.org>
References: <20240105070920.350113-1-Jiqian.Chen@amd.com>
 <20240105070920.350113-5-Jiqian.Chen@amd.com>
 <alpine.DEB.2.22.394.2401051702200.3675@ubuntu-linux-20-04-desktop>
 <882bd39a-8a29-4f4f-b64f-765c4858b1c8@suse.com> <ZZwPSZoqyY6g9yhi@macbook>
 <BL1PR12MB58492746170F6BF777901141E76A2@BL1PR12MB5849.namprd12.prod.outlook.com>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <BL1PR12MB58492746170F6BF777901141E76A2@BL1PR12MB5849.namprd12.prod.outlook.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 09.01.2024 09:18, Chen, Jiqian wrote:
> On 2024/1/8 23:05, Roger Pau Monné wrote:
>> On Mon, Jan 08, 2024 at 09:55:26AM +0100, Jan Beulich wrote:
>>> On 06.01.2024 02:08, Stefano Stabellini wrote:
>>>> On Fri, 5 Jan 2024, Jiqian Chen wrote:
>>>>> --- a/tools/libs/light/libxl_pci.c
>>>>> +++ b/tools/libs/light/libxl_pci.c
>>>>> @@ -1418,6 +1418,7 @@ static void pci_add_dm_done(libxl__egc *egc,
>>>>>      unsigned long long start, end, flags, size;
>>>>>      int irq, i;
>>>>>      int r;
>>>>> +    int gsi;
>>>>>      uint32_t flag = XEN_DOMCTL_DEV_RDM_RELAXED;
>>>>>      uint32_t domainid = domid;
>>>>>      bool isstubdom = libxl_is_stubdom(ctx, domid, &domainid);
>>>>> @@ -1486,6 +1487,7 @@ static void pci_add_dm_done(libxl__egc *egc,
>>>>>          goto out_no_irq;
>>>>>      }
>>>>>      if ((fscanf(f, "%u", &irq) == 1) && irq) {
>>>>> +        gsi = irq;
>>>>
>>>> A question for Roger and Jan: are we always guaranteed that gsi == irq
>>>> (also in the PV case)?
>>>
>>> Iirc for IO-APIC based IRQs that's always the case;
>>
>> I think that's always the case on Linux, because it calls
>> PHYSDEVOP_map_pirq with index == pirq (see Linux
>> pci_xen_initial_domain()).  But other OSes could possibly make the
>> call with pirq == -1 and get a randomly allocated pirq for GSIs.
> I don't think it's important whether pirq is randomly generated. What's important is whether irq always equals gsi in xen.
> If so, we can directly pass in and grant gsi. However, according to Jan's previous email reply, in the case of Msi, irq may not be equal to gsi, so my patch cannot meet this situation.
> I am confusing if the current domain doesn't have PIRQ flag, then regarding to XEN_DOMCTL_irq_permission, which kind of irq we should grant to caller domain? The gsi or other irq?
> Or can we add a check in XEN_DOMCTL_irq_permission, if the current domain has PRIQ, we can get irq from pirq(like the original implementation), if not we can assign gsi to irq, and then grant irq. Of course, that needs to require the caller to pass in both the pirq and gsi.

I expect MSI will need handling differently from GSIs. When MSI is
set up for a device (and hence for a domain in possession of that
device), access ought to be granted right away.

>> IOW: I don't think the pirq field in xen_domctl_irq_permission can be
>> altered like proposed here to switch from passing a pirq to a GSI.  A
>> new hypercall should be introduced that either is GSI specific, or
>> contains a type field in order to specify the namespace the field
>> targets.
> A new hypercall using for granting gsi? If so, how does the caller know to call which hypercall to grant permission, XEN_DOMCTL_irq_permission or that new hypercall?

Either we add a feature indicator, or the caller simply tries the
new GSI interface first.

> I mean how the caller know if the current domain has PIRQ or not and when to pass in pirq number, when to pass in gsi number.

An interface that's GSI-centric would only ever be passed a GSI
(of course, I'm inclined to add).

Jan


From xen-devel-bounces@lists.xenproject.org Tue Jan 09 09:55:09 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 09 Jan 2024 09:55:09 +0000
Received: from list by lists.xenproject.org with outflank-mailman.664351.1034501 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rN8ou-0005Qy-3G; Tue, 09 Jan 2024 09:54:52 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 664351.1034501; Tue, 09 Jan 2024 09:54:52 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rN8ou-0005Qr-0D; Tue, 09 Jan 2024 09:54:52 +0000
Received: by outflank-mailman (input) for mailman id 664351;
 Tue, 09 Jan 2024 09:54:51 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rN8ot-0005Qh-97; Tue, 09 Jan 2024 09:54:51 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rN8os-0004OE-VZ; Tue, 09 Jan 2024 09:54:51 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rN8os-000096-D9; Tue, 09 Jan 2024 09:54:50 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rN8os-0002kh-Ck; Tue, 09 Jan 2024 09:54:50 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=upwQ6pjsJSKrVwnQU2OzS1tkzQTRK9a3m+OvFh/yZ2E=; b=rm2qsHFpPJlYcqDC7J6bRcSepO
	SE7HcF0nRA10197+WlAj1GL5BQOsKoFK63r3M3wViCDyF6RrwA7cdu7zJaPcL7XtfiJtw+ulwxCqD
	ARxrnKECJCeOUrYh6ZXesdyydbDJRHedgwzUAbT25uJtgvboNU1+7i6hzLvZhKe5d8ak=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184285-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [xen-unstable test] 184285: regressions - FAIL
X-Osstest-Failures:
    xen-unstable:build-arm64-pvops:kernel-build:fail:regression
    xen-unstable:test-arm64-arm64-examine:build-check(1):blocked:nonblocking
    xen-unstable:test-arm64-arm64-libvirt-raw:build-check(1):blocked:nonblocking
    xen-unstable:test-arm64-arm64-libvirt-xsm:build-check(1):blocked:nonblocking
    xen-unstable:test-arm64-arm64-xl:build-check(1):blocked:nonblocking
    xen-unstable:test-arm64-arm64-xl-credit1:build-check(1):blocked:nonblocking
    xen-unstable:test-arm64-arm64-xl-credit2:build-check(1):blocked:nonblocking
    xen-unstable:test-arm64-arm64-xl-thunderx:build-check(1):blocked:nonblocking
    xen-unstable:test-arm64-arm64-xl-vhd:build-check(1):blocked:nonblocking
    xen-unstable:test-arm64-arm64-xl-xsm:build-check(1):blocked:nonblocking
    xen-unstable:test-armhf-armhf-xl-vhd:guest-start/debian.repeat:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-amd64-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-qcow2:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-raw:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-amd64-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-amd64-qemuu-nested-amd:debian-hvm-install/l1/l2:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-amd64-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-i386-libvirt-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-pvshim:guest-start:fail:nonblocking
    xen-unstable:test-amd64-i386-libvirt:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-multivcpu:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-multivcpu:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit2:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit2:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit1:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit1:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-arndale:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-arndale:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-libvirt-raw:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt-vhd:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-qcow2:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-raw:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-vhd:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-vhd:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-rtds:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-rtds:saverestore-support-check:fail:nonblocking
X-Osstest-Versions-This:
    xen=2467ab2a74463107132f7d929d2ff0e30a8b6fa3
X-Osstest-Versions-That:
    xen=5a3ace21f3d779b291a2d305824b2820d88de7f1
From: osstest service owner <osstest-admin@xenproject.org>
Date: Tue, 09 Jan 2024 09:54:50 +0000

flight 184285 xen-unstable real [real]
http://logs.test-lab.xenproject.org/osstest/logs/184285/

Regressions :-(

Tests which did not succeed and are blocking,
including tests which could not be run:
 build-arm64-pvops             6 kernel-build             fail REGR. vs. 184271

Tests which did not succeed, but are not blocking:
 test-arm64-arm64-examine      1 build-check(1)               blocked  n/a
 test-arm64-arm64-libvirt-raw  1 build-check(1)               blocked  n/a
 test-arm64-arm64-libvirt-xsm  1 build-check(1)               blocked  n/a
 test-arm64-arm64-xl           1 build-check(1)               blocked  n/a
 test-arm64-arm64-xl-credit1   1 build-check(1)               blocked  n/a
 test-arm64-arm64-xl-credit2   1 build-check(1)               blocked  n/a
 test-arm64-arm64-xl-thunderx  1 build-check(1)               blocked  n/a
 test-arm64-arm64-xl-vhd       1 build-check(1)               blocked  n/a
 test-arm64-arm64-xl-xsm       1 build-check(1)               blocked  n/a
 test-armhf-armhf-xl-vhd      17 guest-start/debian.repeat    fail  like 184267
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 184271
 test-amd64-amd64-xl-qemut-win7-amd64 19 guest-stop            fail like 184271
 test-amd64-i386-xl-qemuu-win7-amd64 19 guest-stop             fail like 184271
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 184271
 test-armhf-armhf-libvirt-qcow2 15 saverestore-support-check   fail like 184271
 test-amd64-i386-xl-qemut-ws16-amd64 19 guest-stop             fail like 184271
 test-armhf-armhf-libvirt-raw 15 saverestore-support-check    fail  like 184271
 test-amd64-i386-xl-qemut-win7-amd64 19 guest-stop             fail like 184271
 test-amd64-amd64-xl-qemut-ws16-amd64 19 guest-stop            fail like 184271
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 184271
 test-amd64-i386-xl-qemuu-ws16-amd64 19 guest-stop             fail like 184271
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 184271
 test-amd64-i386-libvirt-xsm  15 migrate-support-check        fail   never pass
 test-amd64-i386-xl-pvshim    14 guest-start                  fail   never pass
 test-amd64-i386-libvirt      15 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt     15 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-armhf-armhf-xl          15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          16 saverestore-support-check    fail   never pass
 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-armhf-armhf-xl-multivcpu 15 migrate-support-check        fail  never pass
 test-armhf-armhf-xl-multivcpu 16 saverestore-support-check    fail  never pass
 test-armhf-armhf-libvirt     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit2  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit2  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-credit1  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit1  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-arndale  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-arndale  16 saverestore-support-check    fail   never pass
 test-amd64-i386-libvirt-raw  14 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt-vhd 14 migrate-support-check        fail   never pass
 test-armhf-armhf-libvirt-qcow2 14 migrate-support-check        fail never pass
 test-armhf-armhf-libvirt-raw 14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-rtds     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-rtds     16 saverestore-support-check    fail   never pass

version targeted for testing:
 xen                  2467ab2a74463107132f7d929d2ff0e30a8b6fa3
baseline version:
 xen                  5a3ace21f3d779b291a2d305824b2820d88de7f1

Last test of basis   184271  2024-01-08 01:53:47 Z    1 days
Testing same since   184278  2024-01-08 12:39:26 Z    0 days    2 attempts

------------------------------------------------------------
People who touched revisions under test:
  Jan Beulich <jbeulich@suse.com>
  Juergen Gross <jgross@suse.com>
  Julien Grall <jgrall@amazon.com>
  Oleksii Kurochko <oleksii.kurochko@gmail.com>
  Shawn Anastasio <sanastasio@raptorengineering.com>
  Tamas K Lengyel <tamas.lengyel@intel.com>

jobs:
 build-amd64-xsm                                              pass    
 build-arm64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64-xtf                                              pass    
 build-amd64                                                  pass    
 build-arm64                                                  pass    
 build-armhf                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-arm64-libvirt                                          pass    
 build-armhf-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-prev                                             pass    
 build-i386-prev                                              pass    
 build-amd64-pvops                                            pass    
 build-arm64-pvops                                            fail    
 build-armhf-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-xtf-amd64-amd64-1                                       pass    
 test-xtf-amd64-amd64-2                                       pass    
 test-xtf-amd64-amd64-3                                       pass    
 test-xtf-amd64-amd64-4                                       pass    
 test-xtf-amd64-amd64-5                                       pass    
 test-amd64-amd64-xl                                          pass    
 test-amd64-coresched-amd64-xl                                pass    
 test-arm64-arm64-xl                                          blocked 
 test-armhf-armhf-xl                                          pass    
 test-amd64-i386-xl                                           pass    
 test-amd64-coresched-i386-xl                                 pass    
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm           pass    
 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm            pass    
 test-amd64-amd64-xl-qemut-stubdom-debianhvm-amd64-xsm        pass    
 test-amd64-i386-xl-qemut-stubdom-debianhvm-amd64-xsm         pass    
 test-amd64-amd64-xl-qemut-debianhvm-i386-xsm                 pass    
 test-amd64-i386-xl-qemut-debianhvm-i386-xsm                  pass    
 test-amd64-amd64-xl-qemuu-debianhvm-i386-xsm                 pass    
 test-amd64-i386-xl-qemuu-debianhvm-i386-xsm                  pass    
 test-amd64-amd64-libvirt-xsm                                 pass    
 test-arm64-arm64-libvirt-xsm                                 blocked 
 test-amd64-i386-libvirt-xsm                                  pass    
 test-amd64-amd64-xl-xsm                                      pass    
 test-arm64-arm64-xl-xsm                                      blocked 
 test-amd64-i386-xl-xsm                                       pass    
 test-amd64-amd64-qemuu-nested-amd                            fail    
 test-amd64-amd64-xl-pvhv2-amd                                pass    
 test-amd64-i386-qemut-rhel6hvm-amd                           pass    
 test-amd64-i386-qemuu-rhel6hvm-amd                           pass    
 test-amd64-amd64-dom0pvh-xl-amd                              pass    
 test-amd64-amd64-xl-qemut-debianhvm-amd64                    pass    
 test-amd64-i386-xl-qemut-debianhvm-amd64                     pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64                    pass    
 test-amd64-i386-xl-qemuu-debianhvm-amd64                     pass    
 test-amd64-i386-freebsd10-amd64                              pass    
 test-amd64-amd64-qemuu-freebsd11-amd64                       pass    
 test-amd64-amd64-qemuu-freebsd12-amd64                       pass    
 test-amd64-amd64-xl-qemuu-ovmf-amd64                         pass    
 test-amd64-i386-xl-qemuu-ovmf-amd64                          pass    
 test-amd64-amd64-xl-qemut-win7-amd64                         fail    
 test-amd64-i386-xl-qemut-win7-amd64                          fail    
 test-amd64-amd64-xl-qemuu-win7-amd64                         fail    
 test-amd64-i386-xl-qemuu-win7-amd64                          fail    
 test-amd64-amd64-xl-qemut-ws16-amd64                         fail    
 test-amd64-i386-xl-qemut-ws16-amd64                          fail    
 test-amd64-amd64-xl-qemuu-ws16-amd64                         fail    
 test-amd64-i386-xl-qemuu-ws16-amd64                          fail    
 test-armhf-armhf-xl-arndale                                  pass    
 test-amd64-amd64-examine-bios                                pass    
 test-amd64-i386-examine-bios                                 pass    
 test-amd64-amd64-xl-credit1                                  pass    
 test-arm64-arm64-xl-credit1                                  blocked 
 test-armhf-armhf-xl-credit1                                  pass    
 test-amd64-amd64-xl-credit2                                  pass    
 test-arm64-arm64-xl-credit2                                  blocked 
 test-armhf-armhf-xl-credit2                                  pass    
 test-amd64-amd64-xl-qemuu-dmrestrict-amd64-dmrestrict        pass    
 test-amd64-i386-xl-qemuu-dmrestrict-amd64-dmrestrict         pass    
 test-amd64-amd64-examine                                     pass    
 test-arm64-arm64-examine                                     blocked 
 test-armhf-armhf-examine                                     pass    
 test-amd64-i386-examine                                      pass    
 test-amd64-i386-freebsd10-i386                               pass    
 test-amd64-amd64-qemuu-nested-intel                          pass    
 test-amd64-amd64-xl-pvhv2-intel                              pass    
 test-amd64-i386-qemut-rhel6hvm-intel                         pass    
 test-amd64-i386-qemuu-rhel6hvm-intel                         pass    
 test-amd64-amd64-dom0pvh-xl-intel                            pass    
 test-amd64-amd64-libvirt                                     pass    
 test-armhf-armhf-libvirt                                     pass    
 test-amd64-i386-libvirt                                      pass    
 test-amd64-amd64-livepatch                                   pass    
 test-amd64-i386-livepatch                                    pass    
 test-amd64-amd64-migrupgrade                                 pass    
 test-amd64-i386-migrupgrade                                  pass    
 test-amd64-amd64-xl-multivcpu                                pass    
 test-armhf-armhf-xl-multivcpu                                pass    
 test-amd64-amd64-pair                                        pass    
 test-amd64-i386-pair                                         pass    
 test-amd64-amd64-libvirt-pair                                pass    
 test-amd64-i386-libvirt-pair                                 pass    
 test-amd64-amd64-xl-pvshim                                   pass    
 test-amd64-i386-xl-pvshim                                    fail    
 test-amd64-amd64-pygrub                                      pass    
 test-armhf-armhf-libvirt-qcow2                               pass    
 test-amd64-amd64-xl-qcow2                                    pass    
 test-arm64-arm64-libvirt-raw                                 blocked 
 test-armhf-armhf-libvirt-raw                                 pass    
 test-amd64-i386-libvirt-raw                                  pass    
 test-amd64-amd64-xl-rtds                                     pass    
 test-armhf-armhf-xl-rtds                                     pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64-shadow             pass    
 test-amd64-i386-xl-qemuu-debianhvm-amd64-shadow              pass    
 test-amd64-amd64-xl-shadow                                   pass    
 test-amd64-i386-xl-shadow                                    pass    
 test-arm64-arm64-xl-thunderx                                 blocked 
 test-amd64-amd64-examine-uefi                                pass    
 test-amd64-i386-examine-uefi                                 pass    
 test-amd64-amd64-libvirt-vhd                                 pass    
 test-arm64-arm64-xl-vhd                                      blocked 
 test-armhf-armhf-xl-vhd                                      fail    
 test-amd64-i386-xl-vhd                                       pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Not pushing.

------------------------------------------------------------
commit 2467ab2a74463107132f7d929d2ff0e30a8b6fa3
Author: Tamas K Lengyel <tamas.lengyel@intel.com>
Date:   Mon Jan 8 10:16:58 2024 +0100

    x86/mwait-idle: fix ubsan warning
    
    Fix warning:
    (XEN) UBSAN: Undefined behaviour in arch/x86/cpu/mwait-idle.c:1300:44
    (XEN) left shift of 15 by 28 places cannot be represented in type 'int'
    originating from sklh_idle_state_table_update() and hence observable on
    one kind of CPU only.
    
    Fixes: 5a211704e88 ("mwait-idle: prevent SKL-H boot failure when C8+C9+C10 enabled")
    Signed-off-by: Tamas K Lengyel <tamas.lengyel@intel.com>
    Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>

commit cc5a436002c418dc970677a3e99099968fd47ec3
Author: Juergen Gross <jgross@suse.com>
Date:   Mon Jan 8 10:16:42 2024 +0100

    xen/public: add some more 9pfs xenstore paths
    
    Add some optional additional backend paths for 9pfs PV devices. Those
    paths will be supported by the new xen-9pfsd 9pfs backend.
    
    Signed-off-by: Juergen Gross <jgross@suse.com>
    Reviewed-by: Jason Andryuk <jandryuk@gmail.com>

commit 589d8cf146290bdc7f4347bced10c20bd14791f6
Author: Oleksii Kurochko <oleksii.kurochko@gmail.com>
Date:   Wed Dec 20 16:08:29 2023 +0200

    xen: ifdef inclusion of <asm/grant_table.h> in <xen/grant_table.h>
    
    Ifdef-ing inclusion of <asm/grant_table.h> allows to avoid
    generation of empty <asm/grant_table.h> for cases when
    CONFIG_GRANT_TABLE is not enabled.
    
    The following changes were done for Arm:
    <asm/grant_table.h> should be included directly because it contains
    gnttab_dom0_frames() macros which is unique for Arm and is used in
    arch/arm/domain_build.c.
    <asm/grant_table.h> is #ifdef-ed with CONFIG_GRANT_TABLE in
    <xen/grant_table.h> so in case of !CONFIG_GRANT_TABLE gnttab_dom0_frames
    won't be available for use in arch/arm/domain_build.c.
    
    Suggested-by: Jan Beulich <jbeulich@suse.com>
    Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>
    Acked-by: Julien Grall <jgrall@amazon.com>
    Acked-by: Shawn Anastasio <sanastasio@raptorengineering.com>

commit 42b814b7ff0af0022cb93c912120b59b08173158
Author: Oleksii Kurochko <oleksii.kurochko@gmail.com>
Date:   Wed Dec 20 16:08:28 2023 +0200

    xen/asm-generic: introduce stub header softirq.h
    
    <asm/softirq.h> is common between Arm, PPC and RISC-V so it is
    moved to asm-generic.
    
    Drop Arm and PPC's softirq.h and use asm-generic version instead.
    
    Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>
    Reviewed-by: Michal Orzel <michal.orzel@amd.com>
    Acked-by: Jan Beulich <jbeulich@suse.com>
    Acked-by: Shawn Anastasio <sanastasio@raptorengineering.com>
    Acked-by: Julien Grall <jgrall@amazon.com>

commit e2c7111d6505d49274f9c0d0148a956bd62c3595
Author: Oleksii Kurochko <oleksii.kurochko@gmail.com>
Date:   Wed Dec 20 16:08:25 2023 +0200

    xen/asm-generic: introduce generic div64.h header
    
    All archs have the do_div implementation for BITS_PER_LONG == 64
    so do_div64.h is moved to asm-generic.
    
    x86 and PPC were switched to asm-generic version of div64.h.
    Arm was switched partly because Arm has different implementation
    for 32-bits.
    
    Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>
    Acked-by: Jan Beulich <jbeulich@suse.com>
    Acked-by: Shawn Anastasio <sanastasio@raptorengineering.com>
    Acked-by: Julien Grall <jgrall@amazon.com>
(qemu changes not included)


From xen-devel-bounces@lists.xenproject.org Tue Jan 09 10:16:41 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 09 Jan 2024 10:16:41 +0000
Received: from list by lists.xenproject.org with outflank-mailman.664361.1034513 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rN99v-0002yA-0k; Tue, 09 Jan 2024 10:16:35 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 664361.1034513; Tue, 09 Jan 2024 10:16:34 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rN99u-0002y3-UE; Tue, 09 Jan 2024 10:16:34 +0000
Received: by outflank-mailman (input) for mailman id 664361;
 Tue, 09 Jan 2024 10:16:33 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=2W5I=IT=amd.com=Jiqian.Chen@srs-se1.protection.inumbo.net>)
 id 1rN99t-0002xT-5G
 for xen-devel@lists.xenproject.org; Tue, 09 Jan 2024 10:16:33 +0000
Received: from NAM12-MW2-obe.outbound.protection.outlook.com
 (mail-mw2nam12on20603.outbound.protection.outlook.com
 [2a01:111:f400:fe5a::603])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 283c6ebb-aed8-11ee-9b0f-b553b5be7939;
 Tue, 09 Jan 2024 11:16:30 +0100 (CET)
Received: from BL1PR12MB5849.namprd12.prod.outlook.com (2603:10b6:208:384::18)
 by MW3PR12MB4570.namprd12.prod.outlook.com (2603:10b6:303:5f::12)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7159.23; Tue, 9 Jan
 2024 10:16:26 +0000
Received: from BL1PR12MB5849.namprd12.prod.outlook.com
 ([fe80::969f:11b3:5ec2:3aa1]) by BL1PR12MB5849.namprd12.prod.outlook.com
 ([fe80::969f:11b3:5ec2:3aa1%3]) with mapi id 15.20.7159.020; Tue, 9 Jan 2024
 10:16:26 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 283c6ebb-aed8-11ee-9b0f-b553b5be7939
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=ZRgYNbU9PUdhq7t8I0046QDboj+6uDbgva3wLX+zJV1MDypMmduQsZOKJWqnmXfvfnu+XU10jF/qOG5Mea/UwMDTKsu2yhs2Mq+5+Y6rcvZpJUVHigFyCR9GRqf+xgTqN1MQUIVZh/FHmQxhtBDhVQAdeM8A0QlYQ2LFxzUxf5v1nRGmPgI1zugbfOzuaVywr7Ar/UM4Ns+xZBZmPBqzii12XnxfDiq+JmXAMgdlIS1jWRsGePHbgJT1UwGF4Se1POl2pnu+BBcbKqbWv752FvEdgDmbtxqYv+Lejn4BTDuH3/krFiMH7kmRmxQjeEXsmbo7hylEa1PP+5rA1M2i6w==
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=qg9Biv3qOmWoJx52dkUYm3ZlFgwHuSKOHAT84cMVDHY=;
 b=E8LX6Rd11+MBvhJk7ij71QXFQgoG7uyYPtxs4gRUTfelPfy6OkYM1vqKP4vsa3Ml05QLjj5jA3RhurtkEk3j3LpoSukRg6we1lLLM+SMDDdFEbigSJ+8zfZ9BzQIkUm2Gv5cBmkkrqYsCsXzvjLmS9vmtiminu01UxdVx6bucZqsIYBjRbFy8X1AhTV/HC3t0yDiBc9n4C6IoyGDgoPI4LtRCawYq2fZYa75w2pAPS00BJv7Q2bu/8mzs2EeQbkHQIxhJ6MaVV4MTuczMV/64xhiNb2hR7DaQHefWOQ6RzViXOD06pjtliYRO2gpyHtt/AQLoIWjk0XZSH7x+W57TA==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=amd.com; dmarc=pass action=none header.from=amd.com; dkim=pass
 header.d=amd.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=qg9Biv3qOmWoJx52dkUYm3ZlFgwHuSKOHAT84cMVDHY=;
 b=1kkD+ZICM3GI/z2KaAzHXOH1bMDc2iM2EzYmNV2YAvAK8WnR2hXWh/ByXjDQ66mhPIZBWadaeI1eqiK+qzDUWOyYM0YgvTMpwUSxbI0x+Rc9uTFeMd7x04P+qnLIStCXQQ+uhff8j2SveLkd0Fs88ngEm5htcRePQWGB1BgSh+s=
From: "Chen, Jiqian" <Jiqian.Chen@amd.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>, Julien Grall <julien@xen.org>, Anthony PERARD
	<anthony.perard@citrix.com>, Juergen Gross <jgross@suse.com>, "Hildebrand,
 Stewart" <Stewart.Hildebrand@amd.com>, "Huang, Ray" <Ray.Huang@amd.com>,
	=?utf-8?B?Um9nZXIgUGF1IE1vbm7DqQ==?= <roger.pau@citrix.com>, Stefano
 Stabellini <sstabellini@kernel.org>, "Chen, Jiqian" <Jiqian.Chen@amd.com>
Subject: Re: [RFC XEN PATCH v4 4/5] domctl: Use gsi to grant/revoke irq
 permission
Thread-Topic: [RFC XEN PATCH v4 4/5] domctl: Use gsi to grant/revoke irq
 permission
Thread-Index:
 AQHaP6Y1pt0ckfKChE+VsjXCWSj8+LDL+oWAgAOnBgCAAGd3gIABof4A//+U/YCAAIregA==
Date: Tue, 9 Jan 2024 10:16:26 +0000
Message-ID:
 <BL1PR12MB58490E62825A5B1ACCE605EAE76A2@BL1PR12MB5849.namprd12.prod.outlook.com>
References: <20240105070920.350113-1-Jiqian.Chen@amd.com>
 <20240105070920.350113-5-Jiqian.Chen@amd.com>
 <alpine.DEB.2.22.394.2401051702200.3675@ubuntu-linux-20-04-desktop>
 <882bd39a-8a29-4f4f-b64f-765c4858b1c8@suse.com> <ZZwPSZoqyY6g9yhi@macbook>
 <BL1PR12MB58492746170F6BF777901141E76A2@BL1PR12MB5849.namprd12.prod.outlook.com>
 <b4ed7764-a44c-4ac8-bb56-379fdeba16e8@suse.com>
In-Reply-To: <b4ed7764-a44c-4ac8-bb56-379fdeba16e8@suse.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-ms-exchange-imapappendstamp: MN0PR12MB6151.namprd12.prod.outlook.com
 (15.20.7181.004)
authentication-results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=amd.com;
x-ms-exchange-messagesentrepresentingtype: 1
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: BL1PR12MB5849:EE_|MW3PR12MB4570:EE_
x-ms-office365-filtering-correlation-id: ce9a1c0f-b585-4426-13c0-08dc10fc0a25
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam: BCL:0;
x-microsoft-antispam-message-info:
 tbfM0/5IVwm8zQNgwMuF9iDiPY7tbfqUnqJDpYyPXQ3qPxqq5cUN9/UDaGC52LDToSyI9I82txpcGuOG9NtFePDSPLvllvmpDtBvhRq5sdC3uz9DvPC5/NtAhBwBCCmW2DlD4QouFE40sAh9VkvX3B/Diw5LuYALRdZbNXHKxrtAUIef2YCdU03VmYRARpfL5qySpaB3KCWMA1dMeyYPQKsUWRHaZkD4b0ytfPhU4zXppUJxtyB4eNAUvaE19ExlWxlTMZPSGEFAhZzRzPbIWQNrgktiboXAlbms0hz+G5kiFSkBCrusIeXW4Yrlq6tmtCsM3GjsxPjW/SHV/gx3dRNnWTsipqZf00K/jpnBWUYqb4yZog+IsLhcxBESFceCsBK7GcjcnS8tL/7PL78HuUcqKwHnOImJnlnSV4dASmp4IgZ09umJRWN7sQcy6lM8xGgtm68SsMI4dCoaw1dl0BU2ZrtMYr4uWQK/0kXZhCpK8sXYKBZTYuw9lb/YP9eTOaQZWaPXpTaC+Xkt6p/ifaZU6VBEKsqPmPddH8UyD2FjYMQMjCTJRJE/OkM+pUeRV3ZCKv4UUqgDJX3qDQcZULWNH6Jh8wsdgGouQ2Dn57VHoVaNk8ODoGdAC8sfB0mY
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BL1PR12MB5849.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230031)(366004)(39860400002)(136003)(396003)(376002)(346002)(230922051799003)(186009)(64100799003)(451199024)(1800799012)(5660300002)(8936002)(7416002)(52536014)(8676002)(4326008)(76116006)(66446008)(66946007)(6916009)(64756008)(66556008)(54906003)(66476007)(316002)(2906002)(38070700009)(38100700002)(9686003)(122000001)(26005)(478600001)(33656002)(71200400001)(83380400001)(41300700001)(55016003)(7696005)(6506007)(53546011);DIR:OUT;SFP:1101;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?utf-8?B?bnd1UUplY0lvYlVqRUxzTnU1Y0d5emc4WjdYK0R1VFBQcVBpRE9WeTN0QnFz?=
 =?utf-8?B?S1JZb0RDbU53dEJkb0VUVFd0NXFOZkZQc3p0RFBCUFh1YzA0RWtRMFpMUmtz?=
 =?utf-8?B?SjNpcEhhY045VGdnOERodTBydjJlaFRqVFR3S2I5Tit5UzlzMmI1Zkc3bFBD?=
 =?utf-8?B?V1Q4cnlXQWQ3Lzh3ekNvdFBwdCtYTFJMY2Fza25TVmhtYUR6RkxPb29yeWJI?=
 =?utf-8?B?RjFvSC9sZlpKKzRUZ3AvM0E2UzhsK2tEcUVyTGFTaUl0S0hhSnhZbDRVTXVn?=
 =?utf-8?B?Um9taERraTVyUXQzak1SenRyekxqUHdJUW94ZDQrd2UxNk1aY2JGU3pJek9N?=
 =?utf-8?B?VDM3SmdoR3pWWTdvY0ZmWURMR21RS2xyYnFvV2ZaMXc2TS96V2VUcXJBaFZs?=
 =?utf-8?B?YUR1WXV4clpBSzVoSzBDQ3ZCV0J6cEtZSzNPQ05qeDliRE9GTElBcUtJRXdr?=
 =?utf-8?B?Rk9Mc2VkWnNrMlJEb0NMU0JTVWlSQW0vd204L2t2OUF4M045MkdoVFNSSXpL?=
 =?utf-8?B?cktMVzMrZ3VjVTRuaDY1WGdmUy90RHo0T2paR2hHSE9WbzNvQy8zN29jd2M1?=
 =?utf-8?B?WjEvT2ZkRTd0VUw0bkExZTJsTC9FQ01pcmRiQmRNOHRoTERoR3FIUldrcVd4?=
 =?utf-8?B?dC9PdEkwQ3E3MWxVUWErZW5zUUpwZW0wSUJ0YzJhYWhjb0s4U0RBbUw5Y0Q3?=
 =?utf-8?B?M1Z3a3JvTUJtWFMvTFJ1SEJCUW1ncXRoUk04a2NZQmZBYmRkY3RKMldudWhr?=
 =?utf-8?B?U1pmNjNsRWZqNUN4WVZuWjYrU0R2Y1hCT3lydlhkMUVuTmVrZ1JnODNrZXBr?=
 =?utf-8?B?d1FxdStCZVVMQ1J6ZzlhWkN3Sm9ZUHV0b3RVeDYrZ1puL0ZlZkRlVWJPbWtD?=
 =?utf-8?B?MlJvS2xqK2FvT0dVL3A0cDVjUmUxM2lydElYL1U2cjVIcmhsMDIvWkhYWjFF?=
 =?utf-8?B?MmZqZ0VtdVJtbVZJUmtEemlvRnhnSTd5cVdaeE1kU0d5Q0JaVGNSam9YRFJN?=
 =?utf-8?B?RnUyeHIvWU14b3FqejZTdjdMdkJ2dGNwT05JTzVMQ0h2NWx1eG1BRGtqdUwx?=
 =?utf-8?B?MlNydHZKN0l2WENtSEo5a3RkOVBMR1V5QU1MZ2YvZnRWTC9wTUk5aTFaR1Np?=
 =?utf-8?B?QW56NFB3RlJjU1QvQ3M0MTNYa2o3NFoxTXU3QXFjeTJlS2hsZTQ3TW5PdS82?=
 =?utf-8?B?SStuVEFsMHNNLzVHWWFtVVc1ai94QUdvM25ZZHBMRGVDUlMwaW9ZRCtZemhK?=
 =?utf-8?B?UjZSK0ljc0h1emU5cU9XNUd3K1h5WExlcFZaMUlJbWtSUFNSTVEyVFlycnFv?=
 =?utf-8?B?am95NkgyUUVEclNYVHZRZFNzalhiVXJWUmIyL3R3TlY5NEdqYnU1RDJpUTFF?=
 =?utf-8?B?SFRwMGpab3lFb2ZOd3NwWHJFNmFPT3VBL0lWTGdZdXB6R1BuWlIvVkNMS1pl?=
 =?utf-8?B?T3Q2cWtmdXo1TmJObXRvMWxYTExuRXpMQXBSeEwvUTdlbDE5clh6RjBualR2?=
 =?utf-8?B?ejlrTnpwaks2RWNyTFI5NjV1QjNWM0ppTXR2czMybmNpWkhoN01HeHhxdWFG?=
 =?utf-8?B?SmpYTWVpRDFHV1JUckZCV1h5cFFkVDR3elNUTmhzelNSS0dyOFg0UWx0LzAv?=
 =?utf-8?B?NTJsWVdCRUxib2JleitsNjhHVlF1SWhLRksxQlI2elQzSmtHbzh4Z2VOcE5m?=
 =?utf-8?B?MDgyZFlhWElMV3EwamtrK1RQSXF0eXgrcXhLd1hhclhrbmZ6VFh1RmRHVnZG?=
 =?utf-8?B?VHN2UElrb3ZqelhqUDZYekN2cktHOFZtZi9nZGdJOFJrTTFXbTgrT1RtK3J5?=
 =?utf-8?B?bHpWVXZjNHpkbDd1c1B3WllWcDdBZXhIc0hEYnZvUnBCaWVVd3B4c0RnTzV6?=
 =?utf-8?B?ZWdaemFXWWkvbzFFdlBEM0ZmYjF2ZXY3UzJQL3IvZ3pJS3NhblczOUpEeU0w?=
 =?utf-8?B?MU1STGR0NTBpanQvbWNvK0hGMzJrS0swcmgxVDEzMjl0OUZWSzJ5TTQrbEow?=
 =?utf-8?B?blJ1Q1BvSlh6dXhtazJuVFdWaGRMbldtdStMOWVvYTFRVDZpWU4rUW9LMnBu?=
 =?utf-8?B?ZXZUUGNTOXEwY1FKWnhxY2h1bW5wcGNZZVp6OU04T0JIRllaYUQxTEdBTldH?=
 =?utf-8?Q?Z6Pc=3D?=
Content-Type: text/plain; charset="utf-8"
Content-ID: <71A1A426F109514F8E643BB180919EA3@amdcloud.onmicrosoft.com>
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: BL1PR12MB5849.namprd12.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: ce9a1c0f-b585-4426-13c0-08dc10fc0a25
X-MS-Exchange-CrossTenant-originalarrivaltime: 09 Jan 2024 10:16:26.7701
 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 3dd8961f-e488-4e60-8e11-a82d994e183d
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: 9q94+ahIOicd+H7XtVvcjN7j/ATCtzjhRzal17xE5uphYIFOfarkal9X/JfB5cDiarcWjETPCuXvMDvutPthwg==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW3PR12MB4570

T24gMjAyNC8xLzkgMTc6MzgsIEphbiBCZXVsaWNoIHdyb3RlOg0KPiBPbiAwOS4wMS4yMDI0IDA5
OjE4LCBDaGVuLCBKaXFpYW4gd3JvdGU6DQo+PiBPbiAyMDI0LzEvOCAyMzowNSwgUm9nZXIgUGF1
IE1vbm7DqSB3cm90ZToNCj4+PiBPbiBNb24sIEphbiAwOCwgMjAyNCBhdCAwOTo1NToyNkFNICsw
MTAwLCBKYW4gQmV1bGljaCB3cm90ZToNCj4+Pj4gT24gMDYuMDEuMjAyNCAwMjowOCwgU3RlZmFu
byBTdGFiZWxsaW5pIHdyb3RlOg0KPj4+Pj4gT24gRnJpLCA1IEphbiAyMDI0LCBKaXFpYW4gQ2hl
biB3cm90ZToNCj4+Pj4+PiAtLS0gYS90b29scy9saWJzL2xpZ2h0L2xpYnhsX3BjaS5jDQo+Pj4+
Pj4gKysrIGIvdG9vbHMvbGlicy9saWdodC9saWJ4bF9wY2kuYw0KPj4+Pj4+IEBAIC0xNDE4LDYg
KzE0MTgsNyBAQCBzdGF0aWMgdm9pZCBwY2lfYWRkX2RtX2RvbmUobGlieGxfX2VnYyAqZWdjLA0K
Pj4+Pj4+ICAgICAgdW5zaWduZWQgbG9uZyBsb25nIHN0YXJ0LCBlbmQsIGZsYWdzLCBzaXplOw0K
Pj4+Pj4+ICAgICAgaW50IGlycSwgaTsNCj4+Pj4+PiAgICAgIGludCByOw0KPj4+Pj4+ICsgICAg
aW50IGdzaTsNCj4+Pj4+PiAgICAgIHVpbnQzMl90IGZsYWcgPSBYRU5fRE9NQ1RMX0RFVl9SRE1f
UkVMQVhFRDsNCj4+Pj4+PiAgICAgIHVpbnQzMl90IGRvbWFpbmlkID0gZG9taWQ7DQo+Pj4+Pj4g
ICAgICBib29sIGlzc3R1YmRvbSA9IGxpYnhsX2lzX3N0dWJkb20oY3R4LCBkb21pZCwgJmRvbWFp
bmlkKTsNCj4+Pj4+PiBAQCAtMTQ4Niw2ICsxNDg3LDcgQEAgc3RhdGljIHZvaWQgcGNpX2FkZF9k
bV9kb25lKGxpYnhsX19lZ2MgKmVnYywNCj4+Pj4+PiAgICAgICAgICBnb3RvIG91dF9ub19pcnE7
DQo+Pj4+Pj4gICAgICB9DQo+Pj4+Pj4gICAgICBpZiAoKGZzY2FuZihmLCAiJXUiLCAmaXJxKSA9
PSAxKSAmJiBpcnEpIHsNCj4+Pj4+PiArICAgICAgICBnc2kgPSBpcnE7DQo+Pj4+Pg0KPj4+Pj4g
QSBxdWVzdGlvbiBmb3IgUm9nZXIgYW5kIEphbjogYXJlIHdlIGFsd2F5cyBndWFyYW50ZWVkIHRo
YXQgZ3NpID09IGlycQ0KPj4+Pj4gKGFsc28gaW4gdGhlIFBWIGNhc2UpPw0KPj4+Pg0KPj4+PiBJ
aXJjIGZvciBJTy1BUElDIGJhc2VkIElSUXMgdGhhdCdzIGFsd2F5cyB0aGUgY2FzZTsNCj4+Pg0K
Pj4+IEkgdGhpbmsgdGhhdCdzIGFsd2F5cyB0aGUgY2FzZSBvbiBMaW51eCwgYmVjYXVzZSBpdCBj
YWxscw0KPj4+IFBIWVNERVZPUF9tYXBfcGlycSB3aXRoIGluZGV4ID09IHBpcnEgKHNlZSBMaW51
eA0KPj4+IHBjaV94ZW5faW5pdGlhbF9kb21haW4oKSkuICBCdXQgb3RoZXIgT1NlcyBjb3VsZCBw
b3NzaWJseSBtYWtlIHRoZQ0KPj4+IGNhbGwgd2l0aCBwaXJxID09IC0xIGFuZCBnZXQgYSByYW5k
b21seSBhbGxvY2F0ZWQgcGlycSBmb3IgR1NJcy4NCj4+IEkgZG9uJ3QgdGhpbmsgaXQncyBpbXBv
cnRhbnQgd2hldGhlciBwaXJxIGlzIHJhbmRvbWx5IGdlbmVyYXRlZC4gV2hhdCdzIGltcG9ydGFu
dCBpcyB3aGV0aGVyIGlycSBhbHdheXMgZXF1YWxzIGdzaSBpbiB4ZW4uDQo+PiBJZiBzbywgd2Ug
Y2FuIGRpcmVjdGx5IHBhc3MgaW4gYW5kIGdyYW50IGdzaS4gSG93ZXZlciwgYWNjb3JkaW5nIHRv
IEphbidzIHByZXZpb3VzIGVtYWlsIHJlcGx5LCBpbiB0aGUgY2FzZSBvZiBNc2ksIGlycSBtYXkg
bm90IGJlIGVxdWFsIHRvIGdzaSwgc28gbXkgcGF0Y2ggY2Fubm90IG1lZXQgdGhpcyBzaXR1YXRp
b24uDQo+PiBJIGFtIGNvbmZ1c2luZyBpZiB0aGUgY3VycmVudCBkb21haW4gZG9lc24ndCBoYXZl
IFBJUlEgZmxhZywgdGhlbiByZWdhcmRpbmcgdG8gWEVOX0RPTUNUTF9pcnFfcGVybWlzc2lvbiwg
d2hpY2gga2luZCBvZiBpcnEgd2Ugc2hvdWxkIGdyYW50IHRvIGNhbGxlciBkb21haW4/IFRoZSBn
c2kgb3Igb3RoZXIgaXJxPw0KPj4gT3IgY2FuIHdlIGFkZCBhIGNoZWNrIGluIFhFTl9ET01DVExf
aXJxX3Blcm1pc3Npb24sIGlmIHRoZSBjdXJyZW50IGRvbWFpbiBoYXMgUFJJUSwgd2UgY2FuIGdl
dCBpcnEgZnJvbSBwaXJxKGxpa2UgdGhlIG9yaWdpbmFsIGltcGxlbWVudGF0aW9uKSwgaWYgbm90
IHdlIGNhbiBhc3NpZ24gZ3NpIHRvIGlycSwgYW5kIHRoZW4gZ3JhbnQgaXJxLiBPZiBjb3Vyc2Us
IHRoYXQgbmVlZHMgdG8gcmVxdWlyZSB0aGUgY2FsbGVyIHRvIHBhc3MgaW4gYm90aCB0aGUgcGly
cSBhbmQgZ3NpLg0KPiANCj4gSSBleHBlY3QgTVNJIHdpbGwgbmVlZCBoYW5kbGluZyBkaWZmZXJl
bnRseSBmcm9tIEdTSXMuIFdoZW4gTVNJIGlzDQo+IHNldCB1cCBmb3IgYSBkZXZpY2UgKGFuZCBo
ZW5jZSBmb3IgYSBkb21haW4gaW4gcG9zc2Vzc2lvbiBvZiB0aGF0DQo+IGRldmljZSksIGFjY2Vz
cyBvdWdodCB0byBiZSBncmFudGVkIHJpZ2h0IGF3YXkuDQo+IA0KPj4+IElPVzogSSBkb24ndCB0
aGluayB0aGUgcGlycSBmaWVsZCBpbiB4ZW5fZG9tY3RsX2lycV9wZXJtaXNzaW9uIGNhbiBiZQ0K
Pj4+IGFsdGVyZWQgbGlrZSBwcm9wb3NlZCBoZXJlIHRvIHN3aXRjaCBmcm9tIHBhc3NpbmcgYSBw
aXJxIHRvIGEgR1NJLiAgQQ0KPj4+IG5ldyBoeXBlcmNhbGwgc2hvdWxkIGJlIGludHJvZHVjZWQg
dGhhdCBlaXRoZXIgaXMgR1NJIHNwZWNpZmljLCBvcg0KPj4+IGNvbnRhaW5zIGEgdHlwZSBmaWVs
ZCBpbiBvcmRlciB0byBzcGVjaWZ5IHRoZSBuYW1lc3BhY2UgdGhlIGZpZWxkDQo+Pj4gdGFyZ2V0
cy4NCj4+IEEgbmV3IGh5cGVyY2FsbCB1c2luZyBmb3IgZ3JhbnRpbmcgZ3NpPyBJZiBzbywgaG93
IGRvZXMgdGhlIGNhbGxlciBrbm93IHRvIGNhbGwgd2hpY2ggaHlwZXJjYWxsIHRvIGdyYW50IHBl
cm1pc3Npb24sIFhFTl9ET01DVExfaXJxX3Blcm1pc3Npb24gb3IgdGhhdCBuZXcgaHlwZXJjYWxs
Pw0KPiANCj4gRWl0aGVyIHdlIGFkZCBhIGZlYXR1cmUgaW5kaWNhdG9yLCBvciB0aGUgY2FsbGVy
IHNpbXBseSB0cmllcyB0aGUNCj4gbmV3IEdTSSBpbnRlcmZhY2UgZmlyc3QuDQpJIGFtIHN0aWxs
IG5vdCBzdXJlIGhvdyB0byB1c2UgYW5kIGltcGxlbWVudCBpdC4NClRha2luZyBwY2lfYWRkX2Rt
X2RvbmUgYXMgYW4gZXhhbXBsZSwgZm9yIG5vdyBpdHMgaW1wbGVtZW50YXRpb24gaXM6DQpwY2lf
YWRkX2RtX2RvbmUNCgl4Y19waHlzZGV2X21hcF9waXJxDQoJeGNfZG9tYWluX2lycV9wZXJtaXNz
aW9uKCwscGlycSwpDQoJCVhFTl9ET01DVExfaXJxX3Blcm1pc3Npb24NCg0KQW5kIGFzc3VtZSB0
aGUgbmV3IGh5cGVyY2FsbCBpcyBYRU5fRE9NQ1RMX2dzaV9wZXJtaXNzaW9uLCBkbyB5b3UgbWVh
bjoNCnBjaV9hZGRfZG1fZG9uZQ0KCXhjX3BoeXNkZXZfbWFwX3BpcnENCglyZXQgPSB4Y19kb21h
aW5fZ3NpX3Blcm1pc3Npb24oLCxnc2ksKQ0KCQlYRU5fRE9NQ1RMX2dzaV9wZXJtaXNzaW9uDQoJ
aWYgKCByZXQgIT0gMCApDQoJCXhjX2RvbWFpbl9pcnFfcGVybWlzc2lvbigsLHBpcnEsKQ0KCQkJ
WEVOX0RPTUNUTF9pcnFfcGVybWlzc2lvbg0KQnV0IGlmIHNvLCBJIGhhdmUgYSBxdWVzdGlvbiB0
aGF0IGluIFhFTl9ET01DVExfZ3NpX3Blcm1pc3Npb24sIHdoZW4gdG8gZmFpbCBhbmQgd2hlbiB0
byBzdWNjZXNzPw0KDQpPciBkbyB5b3UgbWVhbjoNCnBjaV9hZGRfZG1fZG9uZQ0KCXhjX3BoeXNk
ZXZfbWFwX3BpcnENCglyZXQgPSB4Y19kb21haW5faXJxX3Blcm1pc3Npb24oLCxwaXJxLCkNCgkJ
WEVOX0RPTUNUTF9pcnFfcGVybWlzc2lvbg0KCWlmICggcmV0ICE9IDAgKQ0KCQl4Y19kb21haW5f
Z3NpX3Blcm1pc3Npb24oLCxnc2ksKQ0KCQkJWEVOX0RPTUNUTF9nc2lfcGVybWlzc2lvbg0KQW5k
IGluIFhFTl9ET01DVExfZ3NpX3Blcm1pc3Npb24sIGFzIGxvbmcgYXMgdGhlIGN1cnJlbnQgZG9t
YWluIGhhcyB0aGUgYWNjZXNzIG9mIGdzaSwgdGhlbiBncmFudGluZyBnc2kgdG8gY2FsbGVyIHNo
b3VsZCBiZSBzdWNjZXNzZnVsLiBSaWdodD8NCg0KPiANCj4+IEkgbWVhbiBob3cgdGhlIGNhbGxl
ciBrbm93IGlmIHRoZSBjdXJyZW50IGRvbWFpbiBoYXMgUElSUSBvciBub3QgYW5kIHdoZW4gdG8g
cGFzcyBpbiBwaXJxIG51bWJlciwgd2hlbiB0byBwYXNzIGluIGdzaSBudW1iZXIuDQo+IA0KPiBB
biBpbnRlcmZhY2UgdGhhdCdzIEdTSS1jZW50cmljIHdvdWxkIG9ubHkgZXZlciBiZSBwYXNzZWQg
YSBHU0kNCj4gKG9mIGNvdXJzZSwgSSdtIGluY2xpbmVkIHRvIGFkZCkuDQo+IA0KPiBKYW4NCg0K
LS0gDQpCZXN0IHJlZ2FyZHMsDQpKaXFpYW4gQ2hlbi4NCg==


From xen-devel-bounces@lists.xenproject.org Tue Jan 09 10:26:39 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 09 Jan 2024 10:26:39 +0000
Received: from list by lists.xenproject.org with outflank-mailman.664365.1034524 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rN9JY-0006EH-Vk; Tue, 09 Jan 2024 10:26:32 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 664365.1034524; Tue, 09 Jan 2024 10:26:32 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rN9JY-0006EA-SV; Tue, 09 Jan 2024 10:26:32 +0000
Received: by outflank-mailman (input) for mailman id 664365;
 Tue, 09 Jan 2024 10:26:31 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=OpKn=IT=cloud.com=roger.pau@srs-se1.protection.inumbo.net>)
 id 1rN9JX-0006Di-T4
 for xen-devel@lists.xenproject.org; Tue, 09 Jan 2024 10:26:31 +0000
Received: from mail-ed1-x52d.google.com (mail-ed1-x52d.google.com
 [2a00:1450:4864:20::52d])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 8d5dc6fe-aed9-11ee-98ef-6d05b1d4d9a1;
 Tue, 09 Jan 2024 11:26:30 +0100 (CET)
Received: by mail-ed1-x52d.google.com with SMTP id
 4fb4d7f45d1cf-55818b733f7so355339a12.3
 for <xen-devel@lists.xenproject.org>; Tue, 09 Jan 2024 02:26:29 -0800 (PST)
Received: from localhost ([213.195.127.70]) by smtp.gmail.com with ESMTPSA id
 f12-20020a170906138c00b00a27e4d34455sm866304ejc.183.2024.01.09.02.26.28
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 09 Jan 2024 02:26:29 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 8d5dc6fe-aed9-11ee-98ef-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1704795989; x=1705400789; darn=lists.xenproject.org;
        h=in-reply-to:content-transfer-encoding:content-disposition
         :mime-version:references:message-id:subject:cc:to:from:date:from:to
         :cc:subject:date:message-id:reply-to;
        bh=bVkQdXgz5vTknXzZGDC9RNkPGtEfzQV3mAWhEWD+NnA=;
        b=unaNwWJDqXmG+pDPBSDGsJR1Z5X9mu1xI9KHHjy9ejHL/VUe8GXhFi8d/F9KS2yOdD
         Fpr68NCVaW0yJ3lqJ2McPp+esriQV0YVU0LzalpMLqhf7AA3TMIRkxx1KXcICjLb5TTC
         QpKe/D+zK6PcAp6bTgwCjGgGmY/ZKQEq21LAs=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704795989; x=1705400789;
        h=in-reply-to:content-transfer-encoding:content-disposition
         :mime-version:references:message-id:subject:cc:to:from:date
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=bVkQdXgz5vTknXzZGDC9RNkPGtEfzQV3mAWhEWD+NnA=;
        b=M8GYGQkciO3WhsHstK0D2YUk0qZ7JeLDIfQ+iNeUt6ICJxRbxjxeEfZw7azB1WkOk2
         R6cSM+dYTaMvmZZqrKjTiw6NPOrWp4RZyZLTzHGTqhtT0gz/DR7IsJzARQad5YWcC//g
         bZaZECZzSBIqY7D7U9zXzmie7XU4D5VztIlKZDdHH0ILmToToCJu6y5fsddw6iLwSAy5
         5Zj3H0glp5uRajmmF0LROS0z2B104kAAwGDOR/enIHQ6RfmokTAWDcDovDNNvZUwX6u/
         A3Bqkzhrfp/MVteTRlVv4maAqfhw6BGNEw48o0uVFekW5EV1hiR63gY00IJyXJ63s/8q
         mOAQ==
X-Gm-Message-State: AOJu0Yyv61dL6pHUyf7OXooAzEYziKpNB4AjVsYOwqfoFnjJFVV4wxJz
	p0kH7thZww48aB3Zf7ijNXL+XyJkAW+D6A==
X-Google-Smtp-Source: AGHT+IHEZGWKspL26LAlO8rUvFo9Qwj6vfvRQjEKKCa/V12sRkxKyzNDJ7PsOPYTdQGcaUju03NXMQ==
X-Received: by 2002:a17:906:68d2:b0:a28:d427:371a with SMTP id y18-20020a17090668d200b00a28d427371amr411306ejr.55.1704795989321;
        Tue, 09 Jan 2024 02:26:29 -0800 (PST)
Date: Tue, 9 Jan 2024 11:26:28 +0100
From: Roger Pau =?utf-8?B?TW9ubsOp?= <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>
Subject: Re: [PATCH v4 1/5] x86/HVM: split restore state checking from state
 loading
Message-ID: <ZZ0fVDLQb__IvgT3@macbook>
References: <1e855575-8c0f-4222-80ba-e64305ea714b@suse.com>
 <05e69eea-79cc-4b3c-861b-855fa67c878a@suse.com>
 <ZYGqbboWvjVOGZkb@macbook>
 <48b5a33e-19c8-49fd-9682-17056e0acb00@suse.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <48b5a33e-19c8-49fd-9682-17056e0acb00@suse.com>

On Tue, Dec 19, 2023 at 04:24:02PM +0100, Jan Beulich wrote:
> On 19.12.2023 15:36, Roger Pau Monné wrote:
> > On Mon, Dec 18, 2023 at 03:39:55PM +0100, Jan Beulich wrote:
> >> ..., at least as reasonably feasible without making a check hook
> >> mandatory (in particular strict vs relaxed/zero-extend length checking
> >> can't be done early this way).
> >>
> >> Note that only one of the two uses of "real" hvm_load() is accompanied
> >> with a "checking" one. The other directly consumes hvm_save() output,
> >> which ought to be well-formed. This means that while input data related
> >> checks don't need repeating in the "load" function when already done by
> >> the "check" one (albeit assertions to this effect may be desirable),
> >> domain state related checks (e.g. has_xyz(d)) will be required in both
> >> places.
> >>
> >> Suggested-by: Roger Pau Monné <roger.pau@citrix.com>
> >> Signed-off-by: Jan Beulich <jbeulich@suse.com>
> >> ---
> >> Now that this re-arranges hvm_load() anyway, wouldn't it be better to
> >> down the vCPU-s ahead of calling arch_hvm_load() (which is now easy to
> >> arrange for)?
> > 
> > Seems OK to me.
> 
> As is, or with the suggested adjustment, or either way?

I'm fine either way if you don't want to do it as part of this
patch.

> >> --- a/xen/arch/x86/domctl.c
> >> +++ b/xen/arch/x86/domctl.c
> >> @@ -379,8 +379,12 @@ long arch_do_domctl(
> >>          if ( copy_from_guest(c.data, domctl->u.hvmcontext.buffer, c.size) != 0 )
> >>              goto sethvmcontext_out;
> >>  
> >> +        ret = hvm_load(d, false, &c);
> >> +        if ( ret )
> >> +            goto sethvmcontext_out;
> >> +
> >>          domain_pause(d);
> >> -        ret = hvm_load(d, &c);
> >> +        ret = hvm_load(d, true, &c);
> > 
> > Now that the check has been done ahead, do we want to somehow assert
> > that this cannot fail?  AIUI that's the expectation.
> 
> We certainly can't until all checking was moved out of the load handlers.
> And even then I think there are still cases where load might produce an
> error. (In fact I would have refused a little more strongly to folding
> the prior hvm_check() into hvm_load() if indeed a separate hvm_load()
> could have ended up returning void in the long run.)

I see, _load could fail even if all the data provided was correct, for
example because the hypervisor is OoM?

> >> @@ -275,12 +281,10 @@ int hvm_save(struct domain *d, hvm_domai
> >>      return 0;
> >>  }
> >>  
> >> -int hvm_load(struct domain *d, hvm_domain_context_t *h)
> >> +int hvm_load(struct domain *d, bool real, hvm_domain_context_t *h)
> > 
> > Maybe the 'real' parameter should instead be an enum:
> > 
> > enum hvm_load_action {
> >     CHECK,
> >     LOAD,
> > };
> > int hvm_load(struct domain *d, enum hvm_load_action action,
> >              hvm_domain_context_t *h);
> 
> Hmm, yes, it could. I'm not a fan of enums for boolean-like things,
> though.
> 
> > Otherwise a comment might be warranted about how 'real' affects the
> > logic in the function.
> 
> I can certainly add a comment immediately ahead of the function:
> 
> /*
>  * @real = false requests checking of the incoming state, while @real = true
>  * requests actual loading, which will then assume that checking was already
>  * done or is unnecessary.
>  */

Seems good to me.  I do think the usage of an action enum is clearer,
but I'm fine with the comment and the usage of a boolean.

> >> @@ -291,50 +295,91 @@ int hvm_load(struct domain *d, hvm_domai
> >>      if ( !hdr )
> >>          return -ENODATA;
> >>  
> >> -    rc = arch_hvm_load(d, hdr);
> >> -    if ( rc )
> >> -        return rc;
> >> +    rc = arch_hvm_check(d, hdr);
> > 
> > Shouldn't this _check function only be called when real == false?
> 
> Possibly. In v4 I directly transformed what I had in v3:
> 
>     ASSERT(!arch_hvm_check(d, hdr));
> 
> I.e. it is now the call above plus ...
> 
> >> +    if ( real )
> >> +    {
> >> +        struct vcpu *v;
> >> +
> >> +        ASSERT(!rc);
> 
> ... this assertion. Really the little brother of the call site assertion
> you're asking for (see above).
> 
> >> +        arch_hvm_load(d, hdr);
> >>  
> >> -    /* Down all the vcpus: we only re-enable the ones that had state saved. */
> >> -    for_each_vcpu(d, v)
> >> -        if ( !test_and_set_bit(_VPF_down, &v->pause_flags) )
> >> -            vcpu_sleep_nosync(v);
> >> +        /*
> >> +         * Down all the vcpus: we only re-enable the ones that had state
> >> +         * saved.
> >> +         */
> >> +        for_each_vcpu(d, v)
> >> +            if ( !test_and_set_bit(_VPF_down, &v->pause_flags) )
> >> +                vcpu_sleep_nosync(v);
> >> +    }
> >> +    else if ( rc )
> >> +        return rc;

The issue I see with this is that when built with debug=n the call to
arch_hvm_check() with real == true is useless, as the result is never
evaluated - IOW: would be clearer to just avoid the call altogether.

> >>      for ( ; ; )
> >>      {
> >> +        const char *name;
> >> +        hvm_load_handler load;
> >> +
> >>          if ( h->size - h->cur < sizeof(struct hvm_save_descriptor) )
> >>          {
> >>              /* Run out of data */
> >>              printk(XENLOG_G_ERR
> >>                     "HVM%d restore: save did not end with a null entry\n",
> >>                     d->domain_id);
> >> +            ASSERT(!real);
> >>              return -ENODATA;
> >>          }
> >>  
> >>          /* Read the typecode of the next entry  and check for the end-marker */
> >>          desc = (struct hvm_save_descriptor *)(&h->data[h->cur]);
> >> -        if ( desc->typecode == 0 )
> >> +        if ( desc->typecode == HVM_SAVE_CODE(END) )
> >> +        {
> >> +            /* Reset cursor for hvm_load(, true, ). */
> >> +            if ( !real )
> >> +                h->cur = 0;
> >>              return 0;
> >> +        }
> >>  
> >>          /* Find the handler for this entry */
> >> -        if ( (desc->typecode > HVM_SAVE_CODE_MAX) ||
> >> -             ((handler = hvm_sr_handlers[desc->typecode].load) == NULL) )
> >> +        if ( desc->typecode >= ARRAY_SIZE(hvm_sr_handlers) ||
> >> +             !(name = hvm_sr_handlers[desc->typecode].name) ||
> >> +             !(load = hvm_sr_handlers[desc->typecode].load) )
> >>          {
> >>              printk(XENLOG_G_ERR "HVM%d restore: unknown entry typecode %u\n",
> >>                     d->domain_id, desc->typecode);
> > 
> > The message is not very accurate here, it does fail when the typecode
> > is unknown, but also fails when such typecode has no name or load
> > function setup.
> 
> Yes and no, and it's not changing in this patch. Are you suggesting I should
> change it despite being unrelated? If so, there not being a name (which is
> the new check I'm adding) still suggests the code is unknown. There not being
> a load handler really indicates a bug in Xen (yet no reason to e.g. BUG() in
> that case, the failed loading will hopefully be noticeable enough).

Right, so not a lot of room for improvement anyway.  Let's leave as-is
then.

Thanks, Roger.


From xen-devel-bounces@lists.xenproject.org Tue Jan 09 10:28:42 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 09 Jan 2024 10:28:42 +0000
Received: from list by lists.xenproject.org with outflank-mailman.664368.1034534 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rN9Ld-00081a-Ad; Tue, 09 Jan 2024 10:28:41 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 664368.1034534; Tue, 09 Jan 2024 10:28:41 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rN9Ld-00081T-85; Tue, 09 Jan 2024 10:28:41 +0000
Received: by outflank-mailman (input) for mailman id 664368;
 Tue, 09 Jan 2024 10:28:39 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=RTBC=IT=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rN9Lb-00081N-He
 for xen-devel@lists.xenproject.org; Tue, 09 Jan 2024 10:28:39 +0000
Received: from mail-lj1-x22f.google.com (mail-lj1-x22f.google.com
 [2a00:1450:4864:20::22f])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id d9d6e004-aed9-11ee-98ef-6d05b1d4d9a1;
 Tue, 09 Jan 2024 11:28:38 +0100 (CET)
Received: by mail-lj1-x22f.google.com with SMTP id
 38308e7fff4ca-2ccbded5aa4so31756021fa.1
 for <xen-devel@lists.xenproject.org>; Tue, 09 Jan 2024 02:28:38 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 e12-20020a92690c000000b00360039199cesm505847ilc.3.2024.01.09.02.28.35
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 09 Jan 2024 02:28:37 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: d9d6e004-aed9-11ee-98ef-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1704796118; x=1705400918; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=GNdk5Ex6JR4m/28YnrDOTyU29gJ0chF6f7TZlKGfmcw=;
        b=JTxtPucIlCoT38a3tuO7vljtanbAnhO7gQmaXzJXrIXRNz3Wpnf64clCufKhlcb78w
         dEIOqWebBKh2pNwiXPGrMokz3x6lIaxrlTtk2eK7y9FLeGd7egTvnHu8odx0ksm/jPIv
         TcdNE0Ox1JB6gXvRqMogKivrcSPJY2V7K+hYGxMxzut+B6Jb0EJ6hRwhR2sAsWRBdG6s
         LIP4OxwY+hlKHjSeVp+dzbL81ufDqrqN9PXv/1vW5N/MsniMciroYsuJD/dj6+1UdLx5
         pFSL1l6Hzl0E2hX2YZIUVm+n/V/xtSXgNMBUBkzv1tKFIVsfBVSehlSxN/0+lcWczbdv
         QhlA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704796118; x=1705400918;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=GNdk5Ex6JR4m/28YnrDOTyU29gJ0chF6f7TZlKGfmcw=;
        b=vY1x89MReNldRZ9n0HrCXHXRN9lQ5izeBOAgWeOKmTzhoxpgdqMqhPJApskc1HOsFC
         ICiMIlL45U6Ey30px6NnDSe+9dDve+EWHP2uGFWuWLMh/1yd7a2+bp/oa+i/kAOOqrD4
         FhIvL1h5CYgLEb5pkDH58DGNgYWcpaUy0wk+kInMiNqYlTzqv4dU356CoLOkOAhCmBhe
         joj/oLzBYSFRGy0SUbIfav2cC86Hlq7fmHs4IzBzDr75h6y6+SPVzO0sxuLVrFVtO03r
         /ZrS0VUSvHz9xGuaONXLXLN1H8jg5FEn2jQyoK/Rj2JzfJklbq4k/PyFH2CNpJGoQlmi
         X6sw==
X-Gm-Message-State: AOJu0YzhEmQm0rvtmmPkS00AIfT5+KREHrPAuv9A7mho0cc1cc6bjuVh
	RJ4YSaKcA64NuwSC0r3cyRBW7gq12Jf+
X-Google-Smtp-Source: AGHT+IHr/lBqmYEY5y90zViGIxaM4u4CenSRsQQSp9hYBJ5xOw4tSGZow/TjyvtnZT0KruAkzPyRpA==
X-Received: by 2002:a2e:311:0:b0:2cd:3b14:5c10 with SMTP id 17-20020a2e0311000000b002cd3b145c10mr2301206ljd.90.1704796117671;
        Tue, 09 Jan 2024 02:28:37 -0800 (PST)
Message-ID: <7fbe9526-60cf-4844-8b48-58ab69ec1b29@suse.com>
Date: Tue, 9 Jan 2024 11:28:33 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v5 09/13] xen: add cache coloring allocator for domains
Content-Language: en-US
To: Carlo Nonato <carlo.nonato@minervasys.tech>
Cc: Stefano Stabellini <sstabellini@kernel.org>, Julien Grall
 <julien@xen.org>, Bertrand Marquis <bertrand.marquis@arm.com>,
 Michal Orzel <michal.orzel@amd.com>,
 Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
 Andrew Cooper <andrew.cooper3@citrix.com>,
 George Dunlap <george.dunlap@citrix.com>, Wei Liu <wl@xen.org>,
 Marco Solieri <marco.solieri@minervasys.tech>, xen-devel@lists.xenproject.org
References: <20240102095138.17933-1-carlo.nonato@minervasys.tech>
 <20240102095138.17933-10-carlo.nonato@minervasys.tech>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <20240102095138.17933-10-carlo.nonato@minervasys.tech>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 02.01.2024 10:51, Carlo Nonato wrote:
> This commit adds a new memory page allocator that implements the cache
> coloring mechanism. The allocation algorithm enforces equal frequency
> distribution of cache partitions, following the coloring configuration of a
> domain. This allows an even utilization of cache sets for every domain.
> 
> Pages are stored in a color-indexed array of lists. Those lists are filled
> by a simple init function which computes the color of each page.
> When a domain requests a page, the allocator extract the page from the list
> with the maximum number of free pages between those that the domain can
> access, given its coloring configuration.
> 
> The allocator can only handle requests of order-0 pages. This allows for
> easier implementation and since cache coloring targets only embedded systems,
> it's assumed not to be a major problem.

I'm curious about the specific properties of embedded systems that makes
the performance implications of deeper page walks less of an issue for
them.

Nothing is said about address-constrained allocations. Are such entirely
of no interest to domains on Arm, not even to Dom0 (e.g. for filling
Linux'es swiotlb)? Certainly alloc_color_heap_page() should at least
fail when it can't satisfy the passed in memflags.

> ---
> v5:
> - Carlo Nonato as the new author
> - the colored allocator balances color usage for each domain and it searches
>   linearly only in the number of colors (FIXME removed)

While this addresses earlier concerns, meanwhile NUMA work has also
been progressing. What's the plan of interaction of coloring with it?

> --- a/xen/arch/Kconfig
> +++ b/xen/arch/Kconfig
> @@ -47,3 +47,15 @@ config NR_LLC_COLORS
>  	  bound. The runtime value is autocomputed or manually set via cmdline.
>  	  The default value corresponds to an 8 MiB 16-ways LLC, which should be
>  	  more than what needed in the general case.
> +
> +config BUDDY_ALLOCATOR_SIZE
> +	int "Buddy allocator reserved memory size (MiB)"
> +	default "64"
> +	depends on LLC_COLORING
> +	help
> +	  Amount of memory reserved for the buddy allocator to work alongside
> +	  the colored one. The colored allocator is meant as an alternative to
> +	  the buddy allocator because its allocation policy is by definition
> +	  incompatible with the generic one. Since the Xen heap is not colored
> +	  yet, we need to support the coexistence of the two allocators and some
> +	  memory must be left for the buddy one.

Imo help text should be about the specific option, not general
documentation. How about

	  Amount of memory reserved for the buddy allocator, to serve Xen's
	  heap, to work alongside the colored one.

or some such?

> --- a/xen/arch/arm/llc-coloring.c
> +++ b/xen/arch/arm/llc-coloring.c
> @@ -30,6 +30,9 @@ static unsigned int __ro_after_init nr_colors = CONFIG_NR_LLC_COLORS;
>  static unsigned int __ro_after_init dom0_colors[CONFIG_NR_LLC_COLORS];
>  static unsigned int __ro_after_init dom0_num_colors;
>  
> +#define mfn_color_mask              (nr_colors - 1)

This is used solely ...

> +#define mfn_to_color(mfn)           (mfn_x(mfn) & mfn_color_mask)

... here, and this one in turn is used solely ...

> @@ -312,6 +315,16 @@ int domain_set_llc_colors_from_str(struct domain *d, const char *str)
>      return domain_check_colors(d);
>  }
>  
> +unsigned int page_to_llc_color(const struct page_info *pg)
> +{
> +    return mfn_to_color(page_to_mfn(pg));
> +}

... here. What's the point in having those (private) macros?

> @@ -1946,6 +1951,162 @@ static unsigned long avail_heap_pages(
>      return free_pages;
>  }
>  
> +/*************************
> + * COLORED SIDE-ALLOCATOR
> + *
> + * Pages are grouped by LLC color in lists which are globally referred to as the
> + * color heap. Lists are populated in end_boot_allocator().
> + * After initialization there will be N lists where N is the number of
> + * available colors on the platform.
> + */
> +static struct page_list_head *__ro_after_init _color_heap;
> +static unsigned long *__ro_after_init free_colored_pages;

It's "just" two pointers, but still - what use are they when ...

> +/* Memory required for buddy allocator to work with colored one */
> +#ifdef CONFIG_LLC_COLORING

... this isn't defined?

> +static unsigned long __initdata buddy_alloc_size =
> +    MB(CONFIG_BUDDY_ALLOCATOR_SIZE);
> +size_param("buddy-alloc-size", buddy_alloc_size);
> +
> +#define domain_num_llc_colors(d) ((d)->num_llc_colors)
> +#define domain_llc_color(d, i)   ((d)->llc_colors[(i)])

Nit: No need to parenthesize i when used like this.

> +#else
> +static unsigned long __initdata buddy_alloc_size;
> +
> +#define domain_num_llc_colors(d) 0
> +#define domain_llc_color(d, i)   0
> +#define page_to_llc_color(p)     0
> +#define get_nr_llc_colors()      0
> +#endif
> +
> +#define color_heap(color) (&_color_heap[color])
> +
> +void free_color_heap_page(struct page_info *pg, bool need_scrub)

Likely applicable further down as well - this is dead code when
!CONFIG_LLC_COLORING. Besides me, Misra also won't like this. The
function also looks to want to be static, at which point DCE would
apparently take care of removing it (and others, and then hopefully
also the two static variables commented on above).

> +struct page_info *alloc_color_heap_page(unsigned int memflags, struct domain *d)

I don't think d is written through in the function, so it wants to
be pointer-to-const.

> +void __init init_color_heap_pages(struct page_info *pg, unsigned long nr_pages)
> +{
> +    unsigned int i;
> +    bool need_scrub = (system_state < SYS_STATE_active &&

Can this part of the condition be false, seeing we're in an __init
function?

> +                       opt_bootscrub == BOOTSCRUB_IDLE);
> +
> +    if ( buddy_alloc_size )
> +    {
> +        unsigned long buddy_pages = min(PFN_DOWN(buddy_alloc_size), nr_pages);
> +
> +        init_heap_pages(pg, buddy_pages);
> +        nr_pages -= buddy_pages;
> +        buddy_alloc_size -= buddy_pages << PAGE_SHIFT;
> +        pg += buddy_pages;
> +    }

So whatever is passed into this function first is going to fill the
Xen heap, without regard to address. I expect you're sure this won't
cause issues on Arm. On x86 certain constraints exist which would
require lower address ranges to be preferred.

> +void dump_color_heap(void)
> +{
> +    unsigned int color;
> +
> +    printk("Dumping color heap info\n");
> +    for ( color = 0; color < get_nr_llc_colors(); color++ )
> +        if ( free_colored_pages[color] > 0 )
> +            printk("Color heap[%u]: %lu pages\n",
> +                   color, free_colored_pages[color]);
> +}

What's a typical range of number of colors on a system? I expect more
than 9, but I'm not sure about a reasonable upper bound. For the
output to be easy to consume, [%u] may want to become at least [%2u].

Jan


From xen-devel-bounces@lists.xenproject.org Tue Jan 09 10:33:25 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 09 Jan 2024 10:33:25 +0000
Received: from list by lists.xenproject.org with outflank-mailman.664375.1034543 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rN9Q8-0001eZ-Ur; Tue, 09 Jan 2024 10:33:20 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 664375.1034543; Tue, 09 Jan 2024 10:33:20 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rN9Q8-0001eS-S6; Tue, 09 Jan 2024 10:33:20 +0000
Received: by outflank-mailman (input) for mailman id 664375;
 Tue, 09 Jan 2024 10:33:19 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=RTBC=IT=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rN9Q7-0001eK-Ju
 for xen-devel@lists.xenproject.org; Tue, 09 Jan 2024 10:33:19 +0000
Received: from mail-lf1-x130.google.com (mail-lf1-x130.google.com
 [2a00:1450:4864:20::130])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 810bd256-aeda-11ee-98ef-6d05b1d4d9a1;
 Tue, 09 Jan 2024 11:33:18 +0100 (CET)
Received: by mail-lf1-x130.google.com with SMTP id
 2adb3069b0e04-50ea9daac4cso2848144e87.3
 for <xen-devel@lists.xenproject.org>; Tue, 09 Jan 2024 02:33:18 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 hr6-20020a056638700600b0046dcd4d4229sm567942jab.125.2024.01.09.02.33.16
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 09 Jan 2024 02:33:17 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 810bd256-aeda-11ee-98ef-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1704796398; x=1705401198; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:references:cc:to
         :from:content-language:subject:user-agent:mime-version:date
         :message-id:from:to:cc:subject:date:message-id:reply-to;
        bh=g+J4ZLm2rZK+JGtCB8kOJMKYQTOHLrdKcyDIyJLC9g4=;
        b=TDpXHl39s2+WJmZchP4PnHSpsa17o7TZ9YpYkkhZjE+ONXj5+Yd2Tzrs4ooDVQJc6E
         pjibf2WVbfo5oJJgTOw09uhYBZQXSMngDJtPV0Q7IjoKj3Tafcr4dQfKHU64v7Ofudlw
         B+8BpXF8nDv5MY1H5lFyLoBXoTvHWDtxnRilHuS6IKvoneL/2cQEVfhvXpAWZTrgM4gS
         bMqvJOZY+kaGx3ZSJbMlLm451w+EmDminHEBqB/BwPHF0MCgxk9ViiwuHgb7plqH4Aci
         57DTO6RoNU+UPe9V3ws1/vvrj1S+aewx7IW2c82QfOzNZ1+iERiTf39tGMKwD8GMI6+/
         673w==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704796398; x=1705401198;
        h=content-transfer-encoding:in-reply-to:autocrypt:references:cc:to
         :from:content-language:subject:user-agent:mime-version:date
         :message-id:x-gm-message-state:from:to:cc:subject:date:message-id
         :reply-to;
        bh=g+J4ZLm2rZK+JGtCB8kOJMKYQTOHLrdKcyDIyJLC9g4=;
        b=jgencEPfBYu5U4NbRNT+9D+QCfo5axjmRkcaxI6xaD/PjfKDHtOZZe7eI4JCO8KTQ4
         +dV5qnAEd39QSNooWT/FyY1LzKyjsjj+/kV2Y2XmPJlUt/gpPjPKcsMSjMukccqrdji4
         nmy1qUsJXdl0LhNmKSZgI60myFOVfHNCsqpT96mRac2GH0gfaa32u+ll0Lsm1/YspPZQ
         7Pa1djKskdZQk6qE+if1aX7B2iq56fSREXMcuBdDkqVE++dVh2mtG4sR76YJFXxbosii
         SOw6fu4hFuNJjDKzSlCUmfJpgi4RpeMrrtpPqJNatStQklphyHRH2BQi4n2nWzpVHKZn
         q9iw==
X-Gm-Message-State: AOJu0YyQTlD92TkmF7q/+AymlejudNJ4eqOw4MmKcRVaqnJ9RjutUEIe
	EuBniGUgUfDc7RWjQSva/NDrj+2o+OGm
X-Google-Smtp-Source: AGHT+IGPfWmj8hW7ZYjIAyw4Bbhm88KR0yQhPyplUXaokVkyY5RdpCsFONQ7Ptq7msB+7liB5jJtyw==
X-Received: by 2002:ac2:51b8:0:b0:50e:710b:a7c6 with SMTP id f24-20020ac251b8000000b0050e710ba7c6mr2008692lfk.138.1704796398318;
        Tue, 09 Jan 2024 02:33:18 -0800 (PST)
Message-ID: <101c638c-03ee-471b-a6c8-9c2c10772001@suse.com>
Date: Tue, 9 Jan 2024 11:33:14 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v5 09/13] xen: add cache coloring allocator for domains
Content-Language: en-US
From: Jan Beulich <jbeulich@suse.com>
To: Carlo Nonato <carlo.nonato@minervasys.tech>
Cc: Stefano Stabellini <sstabellini@kernel.org>, Julien Grall
 <julien@xen.org>, Bertrand Marquis <bertrand.marquis@arm.com>,
 Michal Orzel <michal.orzel@amd.com>,
 Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
 Andrew Cooper <andrew.cooper3@citrix.com>,
 George Dunlap <george.dunlap@citrix.com>, Wei Liu <wl@xen.org>,
 Marco Solieri <marco.solieri@minervasys.tech>, xen-devel@lists.xenproject.org
References: <20240102095138.17933-1-carlo.nonato@minervasys.tech>
 <20240102095138.17933-10-carlo.nonato@minervasys.tech>
 <7fbe9526-60cf-4844-8b48-58ab69ec1b29@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <7fbe9526-60cf-4844-8b48-58ab69ec1b29@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 09.01.2024 11:28, Jan Beulich wrote:
> On 02.01.2024 10:51, Carlo Nonato wrote:
>> v5:
>> - Carlo Nonato as the new author
>> - the colored allocator balances color usage for each domain and it searches
>>   linearly only in the number of colors (FIXME removed)
> 
> While this addresses earlier concerns, meanwhile NUMA work has also
> been progressing. What's the plan of interaction of coloring with it?

Thinking of interactions - what about static memory? Is coloring incompatible
with that? If so, should the two features be excluded to both be used at the
same time?

Jan


From xen-devel-bounces@lists.xenproject.org Tue Jan 09 10:36:21 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 09 Jan 2024 10:36:21 +0000
Received: from list by lists.xenproject.org with outflank-mailman.664378.1034554 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rN9T2-0002Fd-By; Tue, 09 Jan 2024 10:36:20 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 664378.1034554; Tue, 09 Jan 2024 10:36:20 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rN9T2-0002FW-90; Tue, 09 Jan 2024 10:36:20 +0000
Received: by outflank-mailman (input) for mailman id 664378;
 Tue, 09 Jan 2024 10:36:19 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=RTBC=IT=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rN9T1-0002FQ-HJ
 for xen-devel@lists.xenproject.org; Tue, 09 Jan 2024 10:36:19 +0000
Received: from mail-ej1-x62b.google.com (mail-ej1-x62b.google.com
 [2a00:1450:4864:20::62b])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id ec461078-aeda-11ee-98ef-6d05b1d4d9a1;
 Tue, 09 Jan 2024 11:36:18 +0100 (CET)
Received: by mail-ej1-x62b.google.com with SMTP id
 a640c23a62f3a-a28bf46ea11so489702966b.1
 for <xen-devel@lists.xenproject.org>; Tue, 09 Jan 2024 02:36:18 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 cq3-20020a056638478300b0046e06f936c7sm566234jab.167.2024.01.09.02.36.16
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 09 Jan 2024 02:36:17 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: ec461078-aeda-11ee-98ef-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1704796578; x=1705401378; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=G6ARC/pWj23HPQoAKe8VjFJIo8AvvclGDv97J2g/O78=;
        b=O33vhaY/2VBF/pevjmfphDRsonlYf64qaD+S4B2WmQJfpeXy3fcBpbXYY0QGPGmdVz
         9elxrcVx/g6tlxiENbBDd/0CWlnt9sgYDSnaIfFIX45tHl8jRUI7Wxe3x5JbVqAfOJE7
         6yhN3owZuwQ7tzuTxFY+7IMLsn/BO1JAq0yH5FVCxEwyc+sc75k0yFUtVZJ11llr1sQ/
         dydo35n0wKQRXxagXx6RWtS6q9gwKPQB144TWtF1Bb1P7VrFJUOR2zGDnuSoEy3f7VZ9
         boQyXlk5EZoF/RlQf4iESgp+wK2mn8qlysc7Jm1fJI5k/szOkJcCWIbux6ytGng4ftgu
         qdEg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704796578; x=1705401378;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=G6ARC/pWj23HPQoAKe8VjFJIo8AvvclGDv97J2g/O78=;
        b=s/ZRpQ50Rbss24VbidYvzjqReVHZ8koc88eqkPVsz8aEf3V5ThAsISHtSBNL3fD+Ej
         ZmG6YkTesUuPwp+wl3O11rBSxbR5+KjNH1PtNTC9CmH+Bf6BNZHp2jRQDdvnCUXJ3UDH
         3UPAlQASp1uRw+N6b+BsDPoUrWNaJ+wgZsNBgKOwIRtF8gGb2xaaNm8a3LH7Pnf3vuOw
         8/STOVDSYOPQ9+NjCAWQu1J/dIGiV1S6zo8PDKQTbA2GJrgYJYbeE4dN1ZdWlnqkiaGR
         sC9Lr59oAOqSCr9i2U2ZSao1p1oitntsgKmWRYl3DQqZVywuNvC/0qR1wzPXg2jkviJV
         PMiA==
X-Gm-Message-State: AOJu0YwICXfKvJcytomuw/8xtnNuotzl2E9wR7DD4GwHK5D8+CFcKrxp
	Xk/52pzoV/gntsGxTlF+2B0oPow6Sors
X-Google-Smtp-Source: AGHT+IEC993dAhr5A/Hq6IeGEeqLI8fT3f/q/aBcYvs/Lw+Mb4xvStWcowIIkCm2SafJLX846an65g==
X-Received: by 2002:a17:906:1b07:b0:a2b:130c:a897 with SMTP id o7-20020a1709061b0700b00a2b130ca897mr449201ejg.17.1704796578152;
        Tue, 09 Jan 2024 02:36:18 -0800 (PST)
Message-ID: <8212c8c3-762b-4163-b734-2c759c8c3b12@suse.com>
Date: Tue, 9 Jan 2024 11:36:14 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v5 07/13] xen/page_alloc: introduce
 init_free_page_fields() helper
Content-Language: en-US
To: Carlo Nonato <carlo.nonato@minervasys.tech>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 George Dunlap <george.dunlap@citrix.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>,
 Marco Solieri <marco.solieri@minervasys.tech>, xen-devel@lists.xenproject.org
References: <20240102095138.17933-1-carlo.nonato@minervasys.tech>
 <20240102095138.17933-8-carlo.nonato@minervasys.tech>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <20240102095138.17933-8-carlo.nonato@minervasys.tech>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 02.01.2024 10:51, Carlo Nonato wrote:
> Introduce a new helper to initialize fields that have different uses for
> free pages.
> 
> Signed-off-by: Carlo Nonato <carlo.nonato@minervasys.tech>
> Signed-off-by: Marco Solieri <marco.solieri@minervasys.tech>

I might in principle ack this change, but what's the deal with this 2nd
S-o-b? The typical expectation is for yours to be last, and the 1st one
being the original author's (which generally means you can't be the
original author in such a case, yet the absence of a From: suggests
you are).

Jan


From xen-devel-bounces@lists.xenproject.org Tue Jan 09 10:40:02 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 09 Jan 2024 10:40:02 +0000
Received: from list by lists.xenproject.org with outflank-mailman.664382.1034563 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rN9WW-0004y5-QJ; Tue, 09 Jan 2024 10:39:56 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 664382.1034563; Tue, 09 Jan 2024 10:39:56 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rN9WW-0004xy-Nk; Tue, 09 Jan 2024 10:39:56 +0000
Received: by outflank-mailman (input) for mailman id 664382;
 Tue, 09 Jan 2024 10:39:55 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=RTBC=IT=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rN9WV-0004xo-D8
 for xen-devel@lists.xenproject.org; Tue, 09 Jan 2024 10:39:55 +0000
Received: from mail-lj1-x22c.google.com (mail-lj1-x22c.google.com
 [2a00:1450:4864:20::22c])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 6c3f2660-aedb-11ee-9b0f-b553b5be7939;
 Tue, 09 Jan 2024 11:39:53 +0100 (CET)
Received: by mail-lj1-x22c.google.com with SMTP id
 38308e7fff4ca-2ccae380df2so29704431fa.1
 for <xen-devel@lists.xenproject.org>; Tue, 09 Jan 2024 02:39:53 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 k34-20020a056638372200b0046e29c56401sm566861jav.0.2024.01.09.02.39.51
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 09 Jan 2024 02:39:52 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 6c3f2660-aedb-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1704796793; x=1705401593; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:cc:references
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=ChCLdSPHGvk+kvmsqaKEzcj9QdGiqx/L/a/o70wiuMU=;
        b=UwCZ7sZlmJGbv9Ri3xJMx5PfwqMFIiPeiZWF9fcNbhGHwfQ2WaDXDgNDPqAVpWzgzs
         B6H+34FpzZKUfywO9o+rf9e94xN8N4aAuH/rMHyVg7oc4oOGK4+OZq7igcHqzi5A61lA
         aahJ7TR856V09ORjnjnHUUH9APixhaQNCkDPSduQcDWmqeZIaxRhqLiQ16vOGFCoGmKS
         Gde28lxxyJ6AUZDLX1cTohLI5+gX5TEWIHMui2xj1nOeoo8qVvpizdclMJ0V910t6jtG
         7Tr7CegtiaGL9fT3Rz0fcGHB9tC7PonG12y4iQfhNuCFyftNCYL32XVPsZzxadpKobOB
         qQ4A==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704796793; x=1705401593;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:cc:references
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=ChCLdSPHGvk+kvmsqaKEzcj9QdGiqx/L/a/o70wiuMU=;
        b=DIJZxdvF+Oay81GalW1Kloolur/0WkfgxS9vg3xOGIhGAhuXCHopVIIZejNYkn3+tb
         fINaBmAtfk/5YaK8gdfpWy7EMbuKQ8Qy2G9isbjYxEzh+xgcRxnCGtvUanY832BgGUMy
         LxCRjVYGlwCCCSbdO/DfYzZ8VlShbBrWYP1VzcXOJSDWqrG4yIGGfXvaljD48bLSuz/m
         1f8GJzEFllQGcDZqtusvbxptfvjGHoXQ2A0eK7Y8zvQDFiDtjsjIlHGjWlaF3+mcSFsi
         /ARdHLdni8YpHNOpSlZYvUmCaXTcImfhsLBG025mK0dm879ODOpCy9rdXGIn3xunmrx3
         k3xA==
X-Gm-Message-State: AOJu0Yx3tv3QWvFOQugncQzAUZvPNTZtBUQVzAfLpyvNuxeeX9k/8MV9
	wWj6+vLk+mTdVSoO8vEedA9mMuKur8dQ
X-Google-Smtp-Source: AGHT+IGCBaOz6BIrSFVgn1RHFsCHv+7rmSBcuQ+HesiDF+fJ36x77qb5oH3ugb8qVQ8fK80iL1764w==
X-Received: by 2002:a05:651c:c5:b0:2cd:17aa:5216 with SMTP id 5-20020a05651c00c500b002cd17aa5216mr1914999ljr.86.1704796792840;
        Tue, 09 Jan 2024 02:39:52 -0800 (PST)
Message-ID: <772125e3-4745-4402-b0bb-4075cc10574b@suse.com>
Date: Tue, 9 Jan 2024 11:39:49 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [xen-unstable test] 184285: regressions - FAIL
Content-Language: en-US
To: osstest service owner <osstest-admin@xenproject.org>
References: <osstest-184285-mainreport@xen.org>
Cc: xen-devel@lists.xenproject.org
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <osstest-184285-mainreport@xen.org>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 09.01.2024 10:54, osstest service owner wrote:
> flight 184285 xen-unstable real [real]
> http://logs.test-lab.xenproject.org/osstest/logs/184285/
> 
> Regressions :-(
> 
> Tests which did not succeed and are blocking,
> including tests which could not be run:
>  build-arm64-pvops             6 kernel-build             fail REGR. vs. 184271

In the earlier flight it was the qemu build where gcc ICE-ed, while here
it's the Linux build. Is there really no compiler update available that
addresses at least some of these recurring but random issues?

Jan



From xen-devel-bounces@lists.xenproject.org Tue Jan 09 10:40:41 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 09 Jan 2024 10:40:41 +0000
Received: from list by lists.xenproject.org with outflank-mailman.664384.1034573 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rN9XF-0006Iy-2u; Tue, 09 Jan 2024 10:40:41 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 664384.1034573; Tue, 09 Jan 2024 10:40:41 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rN9XF-0006Ir-0H; Tue, 09 Jan 2024 10:40:41 +0000
Received: by outflank-mailman (input) for mailman id 664384;
 Tue, 09 Jan 2024 10:40:39 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=OpKn=IT=cloud.com=roger.pau@srs-se1.protection.inumbo.net>)
 id 1rN9XD-0006If-Iu
 for xen-devel@lists.xenproject.org; Tue, 09 Jan 2024 10:40:39 +0000
Received: from mail-ej1-x630.google.com (mail-ej1-x630.google.com
 [2a00:1450:4864:20::630])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 86adf7c4-aedb-11ee-9b0f-b553b5be7939;
 Tue, 09 Jan 2024 11:40:37 +0100 (CET)
Received: by mail-ej1-x630.google.com with SMTP id
 a640c23a62f3a-a29a4f610b1so289803266b.3
 for <xen-devel@lists.xenproject.org>; Tue, 09 Jan 2024 02:40:37 -0800 (PST)
Received: from localhost ([213.195.127.70]) by smtp.gmail.com with ESMTPSA id
 k5-20020a17090627c500b00a2b1080cba7sm876564ejc.208.2024.01.09.02.40.36
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 09 Jan 2024 02:40:36 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 86adf7c4-aedb-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1704796837; x=1705401637; darn=lists.xenproject.org;
        h=in-reply-to:content-transfer-encoding:content-disposition
         :mime-version:references:message-id:subject:cc:to:from:date:from:to
         :cc:subject:date:message-id:reply-to;
        bh=OC/YbqzZnpAN8+MpDaU2gZEdBrAgJyHu38bdIhoY7mU=;
        b=nBnF9/H4hG9g0Q3nhLxOkbgSdBsf2eBsR+1RkAKNR/b5uwuolGawGKnIqghIKfZPa7
         nAeBFayT7qqat74zFxlTrVGOOOP3lY1H6dthO1Ud/5aC32v43Q4bvcNnO8mYg5T4l0NM
         0lx+9OmfoORtNJUPGOHm4HGvbt0baqk9CLCY0=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704796837; x=1705401637;
        h=in-reply-to:content-transfer-encoding:content-disposition
         :mime-version:references:message-id:subject:cc:to:from:date
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=OC/YbqzZnpAN8+MpDaU2gZEdBrAgJyHu38bdIhoY7mU=;
        b=W5snD0iBkj+mQqhclNTKxmsUF/B/3pS9pC6TkR2i3nanF9a1xGp4+Vv0GAIEJIs/HG
         9Mw4YSCsC+SA+Qdtt0W69gW7QUPdjdy3db/PfgGe7bOjD5Qm8W/F42neVi7koPfhJjoo
         iCbJ+Y+WrjPVoEgTlIJkrvv0+de/U0KC6CbA8UjLDHXLaaIcFSTbVmZb8v9e1OiDtZjj
         NQkMRZ7QHH90yqHjXX2X6pZ7KA6O/P9ip8LvnpQqkuYQz8ZuG4hFd3BiG6IBAbrNDtVJ
         AJULHhMz/16XIQ9RZG5Zf6VlIjWNMxxo1evB0rsXLBdBnSVU6+zpvzcI7lRQ0D5TPjtg
         ntZQ==
X-Gm-Message-State: AOJu0YxozViLR1saoKUWLA44DroaROtr3WbMgFCvU1EUhM+C3ygH7OO8
	nLhNzsVA+x2JbT471XymLVJg2mNSdbY5nQ==
X-Google-Smtp-Source: AGHT+IFPDmMpOxT0KNoyYz9sdV5GGtthi0mYKM4qVLzm7m3B3/3QQu6dQ08jlNptXF0xW5uWGqg7fw==
X-Received: by 2002:a17:906:f887:b0:a2b:2c8a:9c49 with SMTP id lg7-20020a170906f88700b00a2b2c8a9c49mr444002ejb.16.1704796837191;
        Tue, 09 Jan 2024 02:40:37 -0800 (PST)
Date: Tue, 9 Jan 2024 11:40:36 +0100
From: Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
To: "Chen, Jiqian" <Jiqian.Chen@amd.com>
Cc: Jan Beulich <jbeulich@suse.com>,
	"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>,
	Julien Grall <julien@xen.org>,
	Anthony PERARD <anthony.perard@citrix.com>,
	Juergen Gross <jgross@suse.com>,
	"Hildebrand, Stewart" <Stewart.Hildebrand@amd.com>,
	"Huang, Ray" <Ray.Huang@amd.com>,
	Stefano Stabellini <sstabellini@kernel.org>
Subject: Re: [RFC XEN PATCH v4 4/5] domctl: Use gsi to grant/revoke irq
 permission
Message-ID: <ZZ0ipBYirbJnLreJ@macbook>
References: <20240105070920.350113-1-Jiqian.Chen@amd.com>
 <20240105070920.350113-5-Jiqian.Chen@amd.com>
 <alpine.DEB.2.22.394.2401051702200.3675@ubuntu-linux-20-04-desktop>
 <882bd39a-8a29-4f4f-b64f-765c4858b1c8@suse.com>
 <ZZwPSZoqyY6g9yhi@macbook>
 <BL1PR12MB58492746170F6BF777901141E76A2@BL1PR12MB5849.namprd12.prod.outlook.com>
 <b4ed7764-a44c-4ac8-bb56-379fdeba16e8@suse.com>
 <BL1PR12MB58490E62825A5B1ACCE605EAE76A2@BL1PR12MB5849.namprd12.prod.outlook.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <BL1PR12MB58490E62825A5B1ACCE605EAE76A2@BL1PR12MB5849.namprd12.prod.outlook.com>

On Tue, Jan 09, 2024 at 10:16:26AM +0000, Chen, Jiqian wrote:
> On 2024/1/9 17:38, Jan Beulich wrote:
> > On 09.01.2024 09:18, Chen, Jiqian wrote:
> >> On 2024/1/8 23:05, Roger Pau Monné wrote:
> >>> On Mon, Jan 08, 2024 at 09:55:26AM +0100, Jan Beulich wrote:
> >>>> On 06.01.2024 02:08, Stefano Stabellini wrote:
> >>>>> On Fri, 5 Jan 2024, Jiqian Chen wrote:
> >>>>>> --- a/tools/libs/light/libxl_pci.c
> >>>>>> +++ b/tools/libs/light/libxl_pci.c
> >>>>>> @@ -1418,6 +1418,7 @@ static void pci_add_dm_done(libxl__egc *egc,
> >>>>>>      unsigned long long start, end, flags, size;
> >>>>>>      int irq, i;
> >>>>>>      int r;
> >>>>>> +    int gsi;
> >>>>>>      uint32_t flag = XEN_DOMCTL_DEV_RDM_RELAXED;
> >>>>>>      uint32_t domainid = domid;
> >>>>>>      bool isstubdom = libxl_is_stubdom(ctx, domid, &domainid);
> >>>>>> @@ -1486,6 +1487,7 @@ static void pci_add_dm_done(libxl__egc *egc,
> >>>>>>          goto out_no_irq;
> >>>>>>      }
> >>>>>>      if ((fscanf(f, "%u", &irq) == 1) && irq) {
> >>>>>> +        gsi = irq;
> >>>>>
> >>>>> A question for Roger and Jan: are we always guaranteed that gsi == irq
> >>>>> (also in the PV case)?
> >>>>
> >>>> Iirc for IO-APIC based IRQs that's always the case;
> >>>
> >>> I think that's always the case on Linux, because it calls
> >>> PHYSDEVOP_map_pirq with index == pirq (see Linux
> >>> pci_xen_initial_domain()).  But other OSes could possibly make the
> >>> call with pirq == -1 and get a randomly allocated pirq for GSIs.
> >> I don't think it's important whether pirq is randomly generated. What's important is whether irq always equals gsi in xen.

My 'randomly generated' comment was in that direction, not so much as
the pirq being truly random, but no longer matching the gsi.

> >> If so, we can directly pass in and grant gsi. However, according to Jan's previous email reply, in the case of Msi, irq may not be equal to gsi, so my patch cannot meet this situation.
> >> I am confusing if the current domain doesn't have PIRQ flag, then regarding to XEN_DOMCTL_irq_permission, which kind of irq we should grant to caller domain? The gsi or other irq?
> >> Or can we add a check in XEN_DOMCTL_irq_permission, if the current domain has PRIQ, we can get irq from pirq(like the original implementation), if not we can assign gsi to irq, and then grant irq. Of course, that needs to require the caller to pass in both the pirq and gsi.
> > 
> > I expect MSI will need handling differently from GSIs. When MSI is
> > set up for a device (and hence for a domain in possession of that
> > device), access ought to be granted right away.
> > 
> >>> IOW: I don't think the pirq field in xen_domctl_irq_permission can be
> >>> altered like proposed here to switch from passing a pirq to a GSI.  A
> >>> new hypercall should be introduced that either is GSI specific, or
> >>> contains a type field in order to specify the namespace the field
> >>> targets.
> >> A new hypercall using for granting gsi? If so, how does the caller know to call which hypercall to grant permission, XEN_DOMCTL_irq_permission or that new hypercall?
> > 
> > Either we add a feature indicator, or the caller simply tries the
> > new GSI interface first.
> I am still not sure how to use and implement it.
> Taking pci_add_dm_done as an example, for now its implementation is:
> pci_add_dm_done
> 	xc_physdev_map_pirq
> 	xc_domain_irq_permission(,,pirq,)
> 		XEN_DOMCTL_irq_permission
> 
> And assume the new hypercall is XEN_DOMCTL_gsi_permission, do you mean:
> pci_add_dm_done
> 	xc_physdev_map_pirq
> 	ret = xc_domain_gsi_permission(,,gsi,)
> 		XEN_DOMCTL_gsi_permission

Making this first call would also depend on whether the 'gsi' can be
fetched from sysfs, otherwise the call should be avoided.

> 	if ( ret != 0 )
> 		xc_domain_irq_permission(,,pirq,)
> 			XEN_DOMCTL_irq_permission

You can only fallback when you have the pirq (ie: when in a PV dom0),
on a PVH dom0 there's no pirq, so no fallback.

The code in pci_add_dm_done() must be aware of this, and only fallback
when in PV dom0.

> But if so, I have a question that in XEN_DOMCTL_gsi_permission, when to fail and when to success?
> 
> Or do you mean:
> pci_add_dm_done
> 	xc_physdev_map_pirq
> 	ret = xc_domain_irq_permission(,,pirq,)
> 		XEN_DOMCTL_irq_permission
> 	if ( ret != 0 )
> 		xc_domain_gsi_permission(,,gsi,)
> 			XEN_DOMCTL_gsi_permission
> And in XEN_DOMCTL_gsi_permission, as long as the current domain has the access of gsi, then granting gsi to caller should be successful. Right?

No, I think that would be backwards, the logic above looks correct
regarding the ordering of the hypercalls.

Thanks, Roger.


From xen-devel-bounces@lists.xenproject.org Tue Jan 09 10:46:02 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 09 Jan 2024 10:46:02 +0000
Received: from list by lists.xenproject.org with outflank-mailman.664391.1034583 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rN9cK-0006zG-Lt; Tue, 09 Jan 2024 10:45:56 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 664391.1034583; Tue, 09 Jan 2024 10:45:56 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rN9cK-0006z9-J8; Tue, 09 Jan 2024 10:45:56 +0000
Received: by outflank-mailman (input) for mailman id 664391;
 Tue, 09 Jan 2024 10:45:55 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rN9cJ-0006yz-Ci; Tue, 09 Jan 2024 10:45:55 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rN9cJ-0005QC-7x; Tue, 09 Jan 2024 10:45:55 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rN9cI-0003Xr-R2; Tue, 09 Jan 2024 10:45:54 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rN9cI-0002NH-Ql; Tue, 09 Jan 2024 10:45:54 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=MwxudKQQa1Vxu1YVpVj+EFwdrkzbIKYahbJrzyhG/is=; b=3/NqEHDp8zy3u/E0qpoXo5o2mD
	DrHLj+DbOA6aDyoA78/XYevi9o3n1I596JEuwRneSqw27J4CCNbkzjD0NqSeH/iyYAnwKbagcbIcC
	+3qYDZiW7o/lnKJ6Du99siN8ryIrydO6F1bwCbERszsb4O8dhazqXFs4atC/9xYcKtWE=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184289-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [libvirt test] 184289: tolerable all pass - PUSHED
X-Osstest-Failures:
    libvirt:test-armhf-armhf-libvirt:saverestore-support-check:fail:nonblocking
    libvirt:test-armhf-armhf-libvirt-qcow2:saverestore-support-check:fail:nonblocking
    libvirt:test-armhf-armhf-libvirt-raw:saverestore-support-check:fail:nonblocking
    libvirt:test-amd64-i386-libvirt-xsm:migrate-support-check:fail:nonblocking
    libvirt:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    libvirt:test-amd64-amd64-libvirt-xsm:migrate-support-check:fail:nonblocking
    libvirt:test-amd64-i386-libvirt:migrate-support-check:fail:nonblocking
    libvirt:test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    libvirt:test-arm64-arm64-libvirt:migrate-support-check:fail:nonblocking
    libvirt:test-arm64-arm64-libvirt:saverestore-support-check:fail:nonblocking
    libvirt:test-arm64-arm64-libvirt-xsm:migrate-support-check:fail:nonblocking
    libvirt:test-arm64-arm64-libvirt-xsm:saverestore-support-check:fail:nonblocking
    libvirt:test-amd64-i386-libvirt-raw:migrate-support-check:fail:nonblocking
    libvirt:test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    libvirt:test-armhf-armhf-libvirt:migrate-support-check:fail:nonblocking
    libvirt:test-amd64-amd64-libvirt-vhd:migrate-support-check:fail:nonblocking
    libvirt:test-arm64-arm64-libvirt-qcow2:migrate-support-check:fail:nonblocking
    libvirt:test-arm64-arm64-libvirt-qcow2:saverestore-support-check:fail:nonblocking
    libvirt:test-arm64-arm64-libvirt-raw:migrate-support-check:fail:nonblocking
    libvirt:test-arm64-arm64-libvirt-raw:saverestore-support-check:fail:nonblocking
    libvirt:test-armhf-armhf-libvirt-qcow2:migrate-support-check:fail:nonblocking
    libvirt:test-armhf-armhf-libvirt-raw:migrate-support-check:fail:nonblocking
X-Osstest-Versions-This:
    libvirt=377e30087a8379e7cdede95bd3b95d2e35cec84a
X-Osstest-Versions-That:
    libvirt=8a743a598bfc3812eb01f605af8eef4ca7f95649
From: osstest service owner <osstest-admin@xenproject.org>
Date: Tue, 09 Jan 2024 10:45:54 +0000

flight 184289 libvirt real [real]
http://logs.test-lab.xenproject.org/osstest/logs/184289/

Failures :-/ but no regressions.

Tests which did not succeed, but are not blocking:
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 184263
 test-armhf-armhf-libvirt-qcow2 15 saverestore-support-check   fail like 184263
 test-armhf-armhf-libvirt-raw 15 saverestore-support-check    fail  like 184263
 test-amd64-i386-libvirt-xsm  15 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt     15 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-amd64-i386-libvirt      15 migrate-support-check        fail   never pass
 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-arm64-arm64-libvirt     15 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt     16 saverestore-support-check    fail   never pass
 test-arm64-arm64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-xsm 16 saverestore-support-check    fail   never pass
 test-amd64-i386-libvirt-raw  14 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-armhf-armhf-libvirt     15 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt-vhd 14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-qcow2 14 migrate-support-check        fail never pass
 test-arm64-arm64-libvirt-qcow2 15 saverestore-support-check    fail never pass
 test-arm64-arm64-libvirt-raw 14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 15 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-qcow2 14 migrate-support-check        fail never pass
 test-armhf-armhf-libvirt-raw 14 migrate-support-check        fail   never pass

version targeted for testing:
 libvirt              377e30087a8379e7cdede95bd3b95d2e35cec84a
baseline version:
 libvirt              8a743a598bfc3812eb01f605af8eef4ca7f95649

Last test of basis   184263  2024-01-06 04:20:32 Z    3 days
Testing same since   184289  2024-01-09 04:18:58 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Göran Uddeborg <goeran@uddeborg.se>
  Jiri Denemark <jdenemar@redhat.com>
  Laine Stump <laine@redhat.com>
  Peter Krempa <pkrempa@redhat.com>

jobs:
 build-amd64-xsm                                              pass    
 build-arm64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64                                                  pass    
 build-arm64                                                  pass    
 build-armhf                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-arm64-libvirt                                          pass    
 build-armhf-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-pvops                                            pass    
 build-arm64-pvops                                            pass    
 build-armhf-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm           pass    
 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm            pass    
 test-amd64-amd64-libvirt-xsm                                 pass    
 test-arm64-arm64-libvirt-xsm                                 pass    
 test-amd64-i386-libvirt-xsm                                  pass    
 test-amd64-amd64-libvirt                                     pass    
 test-arm64-arm64-libvirt                                     pass    
 test-armhf-armhf-libvirt                                     pass    
 test-amd64-i386-libvirt                                      pass    
 test-amd64-amd64-libvirt-pair                                pass    
 test-amd64-i386-libvirt-pair                                 pass    
 test-arm64-arm64-libvirt-qcow2                               pass    
 test-armhf-armhf-libvirt-qcow2                               pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-armhf-armhf-libvirt-raw                                 pass    
 test-amd64-i386-libvirt-raw                                  pass    
 test-amd64-amd64-libvirt-vhd                                 pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Pushing revision :

To xenbits.xen.org:/home/xen/git/libvirt.git
   8a743a598b..377e30087a  377e30087a8379e7cdede95bd3b95d2e35cec84a -> xen-tested-master


From xen-devel-bounces@lists.xenproject.org Tue Jan 09 10:46:39 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 09 Jan 2024 10:46:39 +0000
Received: from list by lists.xenproject.org with outflank-mailman.664397.1034593 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rN9d1-0007XM-45; Tue, 09 Jan 2024 10:46:39 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 664397.1034593; Tue, 09 Jan 2024 10:46:39 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rN9d1-0007XF-1T; Tue, 09 Jan 2024 10:46:39 +0000
Received: by outflank-mailman (input) for mailman id 664397;
 Tue, 09 Jan 2024 10:46:37 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=RTBC=IT=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rN9cz-0007Wy-95
 for xen-devel@lists.xenproject.org; Tue, 09 Jan 2024 10:46:37 +0000
Received: from mail-lj1-x229.google.com (mail-lj1-x229.google.com
 [2a00:1450:4864:20::229])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 5bc0502e-aedc-11ee-9b0f-b553b5be7939;
 Tue, 09 Jan 2024 11:46:35 +0100 (CET)
Received: by mail-lj1-x229.google.com with SMTP id
 38308e7fff4ca-2cd5b467209so18964141fa.3
 for <xen-devel@lists.xenproject.org>; Tue, 09 Jan 2024 02:46:35 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 a1-20020a0566380b0100b0046e3e617619sm89329jab.129.2024.01.09.02.46.32
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 09 Jan 2024 02:46:34 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 5bc0502e-aedc-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1704797194; x=1705401994; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=s7d4cIB5bsW9KfOflQAbYSMNcJblVOTlRM+NdoN79qc=;
        b=OyL6aLaB05gIUG3w3S0i0/A0BfwSlgdfyRa7wR8K0UIysoE3TyvDE4ONSHS0lP81P9
         K0u8Y8wN85m5vjd+jVTz87KrW2xBzRVWT4wd94XIVSlgirNqT9ye4NYRGcgPf6RtM2kZ
         WCsrEjqAP3k0wZM2/vdMFm6OHJ/txuyI7p8jjei1eaPknbyNqkHnrVDYfqisCifdmS+w
         8XYxbPTkU34XRRug4YOa6IlKOqtwEPxOE1qi3zs5AUUN3F6hum5H2/RAOHtLleqigXup
         nnWHi0A4DXv0jNTTQQtlraKWEtCyNljpR17FyGoUC08pvLtwClARggX0zHz6MN+nUM0g
         V6jA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704797194; x=1705401994;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=s7d4cIB5bsW9KfOflQAbYSMNcJblVOTlRM+NdoN79qc=;
        b=xC89iilCismIEwsxyyUH+7hYekrX5/ElGzKTC/EnMHSRHK8KU1xENi3PW4cBG6B/wk
         RyFmtElRK0sr3ml8lE0hVuhuXVHo0n15XFxH+o5N5UTuqaRg8xnU9zmVnAvcGKxRLsCX
         wEZTM/7dJENfO4mJLWWkNKXxkLHa9Yjkcv+wikhEtxIasVX7ZGbK/B7ImMU2Lcihf9PJ
         hBx2DzDH8Kh+5UXDexzo5CrA1bhXtMvOuED8DNdK38TZwc70z63LY+TG7srQHOUqWZ+H
         dSQeocbcruN0kdQjeck9gTD1WjpyZqchpskjdJxOLnXS6egdeipztlPUzoKfOCDiECFk
         9lQg==
X-Gm-Message-State: AOJu0Yx2WGlxEYzz0vAdP/06XWBOBKZgY0fIQ2PhT9zmcPQNK70tGcux
	XY2X3R/Kvqj+HqdICcBFFbugyXWnPLiF
X-Google-Smtp-Source: AGHT+IFkgza7CCKM6tWVM7sGOMl7Bqr+8PZLAbyB31/dvhOndx1U8t4sE61hzO2toosgsNPPNGIHPA==
X-Received: by 2002:a05:651c:4c6:b0:2cd:241c:849a with SMTP id e6-20020a05651c04c600b002cd241c849amr2701743lji.79.1704797194642;
        Tue, 09 Jan 2024 02:46:34 -0800 (PST)
Message-ID: <d9a363e2-db8d-4c14-af17-9ce02c53f7bf@suse.com>
Date: Tue, 9 Jan 2024 11:46:30 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [RFC XEN PATCH v4 4/5] domctl: Use gsi to grant/revoke irq
 permission
Content-Language: en-US
To: "Chen, Jiqian" <Jiqian.Chen@amd.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>, Julien Grall <julien@xen.org>,
 Anthony PERARD <anthony.perard@citrix.com>, Juergen Gross <jgross@suse.com>,
 "Hildebrand, Stewart" <Stewart.Hildebrand@amd.com>,
 "Huang, Ray" <Ray.Huang@amd.com>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger.pau@citrix.com>, Stefano Stabellini <sstabellini@kernel.org>
References: <20240105070920.350113-1-Jiqian.Chen@amd.com>
 <20240105070920.350113-5-Jiqian.Chen@amd.com>
 <alpine.DEB.2.22.394.2401051702200.3675@ubuntu-linux-20-04-desktop>
 <882bd39a-8a29-4f4f-b64f-765c4858b1c8@suse.com> <ZZwPSZoqyY6g9yhi@macbook>
 <BL1PR12MB58492746170F6BF777901141E76A2@BL1PR12MB5849.namprd12.prod.outlook.com>
 <b4ed7764-a44c-4ac8-bb56-379fdeba16e8@suse.com>
 <BL1PR12MB58490E62825A5B1ACCE605EAE76A2@BL1PR12MB5849.namprd12.prod.outlook.com>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <BL1PR12MB58490E62825A5B1ACCE605EAE76A2@BL1PR12MB5849.namprd12.prod.outlook.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 09.01.2024 11:16, Chen, Jiqian wrote:
> On 2024/1/9 17:38, Jan Beulich wrote:
>> On 09.01.2024 09:18, Chen, Jiqian wrote:
>>> A new hypercall using for granting gsi? If so, how does the caller know to call which hypercall to grant permission, XEN_DOMCTL_irq_permission or that new hypercall?
>>
>> Either we add a feature indicator, or the caller simply tries the
>> new GSI interface first.
> I am still not sure how to use and implement it.
> Taking pci_add_dm_done as an example, for now its implementation is:
> pci_add_dm_done
> 	xc_physdev_map_pirq
> 	xc_domain_irq_permission(,,pirq,)
> 		XEN_DOMCTL_irq_permission
> 
> And assume the new hypercall is XEN_DOMCTL_gsi_permission, do you mean:
> pci_add_dm_done
> 	xc_physdev_map_pirq
> 	ret = xc_domain_gsi_permission(,,gsi,)
> 		XEN_DOMCTL_gsi_permission
> 	if ( ret != 0 )
> 		xc_domain_irq_permission(,,pirq,)
> 			XEN_DOMCTL_irq_permission

No, falling back shouldn't be "blind". Fallback should only happen
when the new sub-op isn't implemented (hence why a feature indicator
may be necessary), and only if calling the existing sub-op promises
to be useful (which iirc would limit that to the PV Dom0 case).

> But if so, I have a question that in XEN_DOMCTL_gsi_permission, when to fail and when to success?

I'm afraid I don't understand the question. Behavior there isn't to
be fundamentally different from that for XEN_DOMCTL_irq_permission.
It's just that the incoming value is in another value space.

> Or do you mean:
> pci_add_dm_done
> 	xc_physdev_map_pirq
> 	ret = xc_domain_irq_permission(,,pirq,)
> 		XEN_DOMCTL_irq_permission
> 	if ( ret != 0 )
> 		xc_domain_gsi_permission(,,gsi,)
> 			XEN_DOMCTL_gsi_permission

No, this looks the wrong way round.

> And in XEN_DOMCTL_gsi_permission, as long as the current domain has the access of gsi, then granting gsi to caller should be successful. Right?

I think so; see above.

Jan


From xen-devel-bounces@lists.xenproject.org Tue Jan 09 10:59:09 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 09 Jan 2024 10:59:09 +0000
Received: from list by lists.xenproject.org with outflank-mailman.664403.1034603 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rN9os-0004vC-46; Tue, 09 Jan 2024 10:58:54 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 664403.1034603; Tue, 09 Jan 2024 10:58:54 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rN9os-0004v5-1a; Tue, 09 Jan 2024 10:58:54 +0000
Received: by outflank-mailman (input) for mailman id 664403;
 Tue, 09 Jan 2024 10:58:52 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=RTBC=IT=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rN9oq-0004uz-QE
 for xen-devel@lists.xenproject.org; Tue, 09 Jan 2024 10:58:52 +0000
Received: from mail-lj1-x232.google.com (mail-lj1-x232.google.com
 [2a00:1450:4864:20::232])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 1291011c-aede-11ee-98ef-6d05b1d4d9a1;
 Tue, 09 Jan 2024 11:58:51 +0100 (CET)
Received: by mail-lj1-x232.google.com with SMTP id
 38308e7fff4ca-2cd1232a2c7so32211621fa.0
 for <xen-devel@lists.xenproject.org>; Tue, 09 Jan 2024 02:58:51 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 z8-20020a056638318800b0046923df89easm569064jak.158.2024.01.09.02.58.49
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 09 Jan 2024 02:58:50 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 1291011c-aede-11ee-98ef-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1704797931; x=1705402731; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=/oJ1jHaEX1jsRipvPZ7jDGys4mLWZkwv+2Oo9F2Cbs8=;
        b=UehohF58g63TcsZ77mwu9e7YonuPr2Q4GsOE88Qi9YuJUyIfOV/l8uKhJXPFYJOC6v
         z6p46wRuLsOH43bk6oXvZmQ9EzYomOy1RY1quMEwVkiT0gdSJGnxCOHpghrdlBrQb8eg
         AZnahQmWfgbI1WhTYHKZY+W8pUKXXmJpVm81bKRag7hElAYm/9YEMO49/8HTzWRvAanq
         zKx+I4v5mQDpodPaHmJmfw6FHDFfPVfDth8b3ZWcsI4AQQnjbA1t9rOkPlgpcOq5kmus
         UjOhHEcoqNV5TT/W92huWiSpaUYW3dCIAsW1ftulD8+oDYM8A/9qprhQ9N8mgOVEoKzP
         y+bA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704797931; x=1705402731;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=/oJ1jHaEX1jsRipvPZ7jDGys4mLWZkwv+2Oo9F2Cbs8=;
        b=TzLzv6WpsrscdRfpb4RBE8P8Z4tb1v61YEtT0APZHq+wRO4+lOMK2GYEvvsgL4yGnQ
         9HuQTaE3uJ1uJfXlloQOCOgI502ZM0R1jzr5BSn1MRLXzDAa0JPyGMY8GSY5N5ho6xs3
         3GbHNBsd0mks8EmCNCEbeMlORgRBdj7vmlOUL4eJAiOwAwOLRaLSb50cgMQgIRk91pTK
         cer8aYzxdvljEv04IKzwCEE0i/BehzKsm0QCAlFbqGfmS+f/HUAROoi4qJX9ojUMGxbU
         J0gEaIrhwGddlpiit2X+SgZNge6bOqexxGBQA3+rkWOSlKFP/0S1MCztaFE5eeTayNuf
         zvYQ==
X-Gm-Message-State: AOJu0Yz1x4w+o9FeD3zGT1YU3xstmekce6VK+RrXR6m1rY5lcEs3hTQN
	v3P/1BE1wta3Jphcq6QDTQjGnWg4bY+E
X-Google-Smtp-Source: AGHT+IHkUsgeGY1JUBt3Iqh8iXFuGqy3RvMo+jU0cIG3+9K7HZQfLEo1Q8yoSSxqjYBh8o9cLQk7qA==
X-Received: by 2002:a2e:b8c2:0:b0:2cd:4f03:ad4c with SMTP id s2-20020a2eb8c2000000b002cd4f03ad4cmr2042271ljp.80.1704797930851;
        Tue, 09 Jan 2024 02:58:50 -0800 (PST)
Message-ID: <77a1fdf8-f02d-4125-832c-f022d8750c87@suse.com>
Date: Tue, 9 Jan 2024 11:58:48 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v4 1/5] x86/HVM: split restore state checking from state
 loading
Content-Language: en-US
To: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
Cc: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>,
 Andrew Cooper <andrew.cooper3@citrix.com>, Wei Liu <wl@xen.org>
References: <1e855575-8c0f-4222-80ba-e64305ea714b@suse.com>
 <05e69eea-79cc-4b3c-861b-855fa67c878a@suse.com> <ZYGqbboWvjVOGZkb@macbook>
 <48b5a33e-19c8-49fd-9682-17056e0acb00@suse.com> <ZZ0fVDLQb__IvgT3@macbook>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <ZZ0fVDLQb__IvgT3@macbook>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 09.01.2024 11:26, Roger Pau Monné wrote:
> On Tue, Dec 19, 2023 at 04:24:02PM +0100, Jan Beulich wrote:
>> On 19.12.2023 15:36, Roger Pau Monné wrote:
>>> On Mon, Dec 18, 2023 at 03:39:55PM +0100, Jan Beulich wrote:
>>>> --- a/xen/arch/x86/domctl.c
>>>> +++ b/xen/arch/x86/domctl.c
>>>> @@ -379,8 +379,12 @@ long arch_do_domctl(
>>>>          if ( copy_from_guest(c.data, domctl->u.hvmcontext.buffer, c.size) != 0 )
>>>>              goto sethvmcontext_out;
>>>>  
>>>> +        ret = hvm_load(d, false, &c);
>>>> +        if ( ret )
>>>> +            goto sethvmcontext_out;
>>>> +
>>>>          domain_pause(d);
>>>> -        ret = hvm_load(d, &c);
>>>> +        ret = hvm_load(d, true, &c);
>>>
>>> Now that the check has been done ahead, do we want to somehow assert
>>> that this cannot fail?  AIUI that's the expectation.
>>
>> We certainly can't until all checking was moved out of the load handlers.
>> And even then I think there are still cases where load might produce an
>> error. (In fact I would have refused a little more strongly to folding
>> the prior hvm_check() into hvm_load() if indeed a separate hvm_load()
>> could have ended up returning void in the long run.)
> 
> I see, _load could fail even if all the data provided was correct, for
> example because the hypervisor is OoM?

That's the primary hypothetical cause for such a failure, yes.

>>>> @@ -291,50 +295,91 @@ int hvm_load(struct domain *d, hvm_domai
>>>>      if ( !hdr )
>>>>          return -ENODATA;
>>>>  
>>>> -    rc = arch_hvm_load(d, hdr);
>>>> -    if ( rc )
>>>> -        return rc;
>>>> +    rc = arch_hvm_check(d, hdr);
>>>
>>> Shouldn't this _check function only be called when real == false?
>>
>> Possibly. In v4 I directly transformed what I had in v3:
>>
>>     ASSERT(!arch_hvm_check(d, hdr));
>>
>> I.e. it is now the call above plus ...
>>
>>>> +    if ( real )
>>>> +    {
>>>> +        struct vcpu *v;
>>>> +
>>>> +        ASSERT(!rc);
>>
>> ... this assertion. Really the little brother of the call site assertion
>> you're asking for (see above).
>>
>>>> +        arch_hvm_load(d, hdr);
>>>>  
>>>> -    /* Down all the vcpus: we only re-enable the ones that had state saved. */
>>>> -    for_each_vcpu(d, v)
>>>> -        if ( !test_and_set_bit(_VPF_down, &v->pause_flags) )
>>>> -            vcpu_sleep_nosync(v);
>>>> +        /*
>>>> +         * Down all the vcpus: we only re-enable the ones that had state
>>>> +         * saved.
>>>> +         */
>>>> +        for_each_vcpu(d, v)
>>>> +            if ( !test_and_set_bit(_VPF_down, &v->pause_flags) )
>>>> +                vcpu_sleep_nosync(v);
>>>> +    }
>>>> +    else if ( rc )
>>>> +        return rc;
> 
> The issue I see with this is that when built with debug=n the call to
> arch_hvm_check() with real == true is useless, as the result is never
> evaluated - IOW: would be clearer to just avoid the call altogether.

Which, besides being imo slightly worse for then having two call sites,
puts me in a difficult position: It may not have been here, but on
another patch (but I think it was an earlier version of this one)
where Andrew commented on

    ASSERT(func());

as generally being a disliked pattern, for having a "side effect" in
the expression of an assertion. Plus the call isn't pointless even in
release builds, because of the log messages issued: Them appearing
twice in close succession might be a good hint of something fishy
going on.

Jan


From xen-devel-bounces@lists.xenproject.org Tue Jan 09 11:14:12 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 09 Jan 2024 11:14:12 +0000
Received: from list by lists.xenproject.org with outflank-mailman.664494.1034613 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNA3Z-0001AS-Fj; Tue, 09 Jan 2024 11:14:05 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 664494.1034613; Tue, 09 Jan 2024 11:14:05 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNA3Z-0001AL-CX; Tue, 09 Jan 2024 11:14:05 +0000
Received: by outflank-mailman (input) for mailman id 664494;
 Tue, 09 Jan 2024 11:13:21 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=zgx0=IT=appli.se=niklas@srs-se1.protection.inumbo.net>)
 id 1rNA2q-00011T-OR
 for xen-devel@lists.xenproject.org; Tue, 09 Jan 2024 11:13:21 +0000
Received: from smtp-relay.appli.se (smtp-relay.appli.se [192.71.5.249])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 1628ec7f-aee0-11ee-9b0f-b553b5be7939;
 Tue, 09 Jan 2024 12:13:16 +0100 (CET)
Received: from smtp-relay.appli.se (localhost [127.0.0.1])
 by smtp-relay.appli.se (OpenSMTPD) with ESMTP id 1f2b035c;
 Tue, 9 Jan 2024 12:13:14 +0100 (CET)
Received: from smtpclient.apple (host.212.105.90.44.bitcom.se [212.105.90.44])
 by smtp-relay.appli.se (OpenSMTPD) with ESMTPSA id 77115c18
 (TLSv1.2:ECDHE-ECDSA-AES256-GCM-SHA384:256:NO); 
 Tue, 9 Jan 2024 12:13:14 +0100 (CET)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 1628ec7f-aee0-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=appli.se; h=content-type
	:mime-version:subject:from:in-reply-to:date:cc
	:content-transfer-encoding:message-id:references:to; s=default;
	 bh=0SkVlyUxtdTh4zBzxcCG1PaGoR4=; b=pnyif7VdUUQmEq9Hq4DQ+saKU+j2
	cq4/Pgv7ccTWxKjFYZ5i0GYjnhSGi1JK+HVm0InHD5Z50QkssjQTxQG2X/Psi6gV
	cXjbFXmy17xPFihL2sRxbWPr0YW2T8Lxe9yvSoBDWYbWK8E8yoAJ3KuDZSh6XMxV
	5l7krq1plmDupdM=
DomainKey-Signature: a=rsa-sha1; c=nofws; d=appli.se; h=content-type
	:mime-version:subject:from:in-reply-to:date:cc
	:content-transfer-encoding:message-id:references:to; q=dns; s=
	default; b=OoICKPBMjQ0PMzBrEbK0vby5C53EtP984s24304GYoHhTyQOxNVzd
	S7lxRYhmEC9Bk5smH9cuS7VWytoquhv1HKTytFNxq2t2Xo9cIaUCKkFFhtLP0NUp
	qSRm618omVzO8DUhQTDrdp9V8OtoA6EP+aNI1alg89x3Xs6wkJovi0=
Content-Type: text/plain;
	charset=utf-8
Mime-Version: 1.0 (Mac OS X Mail 16.0 \(3774.100.2.1.4\))
Subject: Re: Possible bug? DOM-U network stopped working after fatal error
 reported in DOM0
From: Niklas Hallqvist <niklas@appli.se>
In-Reply-To: <CAKhsbWZM3y7D=vQzng3GndQOzhx5RcDHWFVXdJZhCt-qz5CtwQ@mail.gmail.com>
Date: Tue, 9 Jan 2024 12:13:04 +0100
Cc: =?utf-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Paul Leiber <paul@onlineschubla.de>,
 xen-devel@lists.xenproject.org
Content-Transfer-Encoding: quoted-printable
Message-Id: <DCF59D19-59C2-43E9-9F25-7F64FFF691F7@appli.se>
References: <CAKhsbWYU5_DGbGK2i_uhooXk4EzCLLO4SJGjDsvAkf2udQGsbg@mail.gmail.com>
 <Yc3/ytwCHFtR1BLi@Air-de-Roger>
 <CAKhsbWbRinNavBq4NnQ64nVrfWoOQWV0mM3Foao4VBYUWjoSnQ@mail.gmail.com>
 <YdQgf2+E467kuTxK@Air-de-Roger>
 <CAKhsbWbrvF6M-SAocACO5NvBaitUQ9mB5Qx+fMGtn_yVu0ZvEA@mail.gmail.com>
 <YdWsPWqALWBRGtqW@Air-de-Roger>
 <CAKhsbWbvjEcA220TTHGB3PPbfLmdS_MuK5Mn3Xvrr+JL=dHK7w@mail.gmail.com>
 <YdxIbLYRYh4hvVGj@Air-de-Roger>
 <CAKhsbWYHhveuwTjaiSGKCqf41nSHZKdt7W_y0qp-x09Pce22SA@mail.gmail.com>
 <735adbe4-238b-bb7b-ba91-eb53759223aa@onlineschubla.de>
 <Y2OwzjfUnCFf2EDU@Air-de-Roger>
 <CAKhsbWZM3y7D=vQzng3GndQOzhx5RcDHWFVXdJZhCt-qz5CtwQ@mail.gmail.com>
To: "G.R." <firemeteor@users.sourceforge.net>
X-Mailer: Apple Mail (2.3774.100.2.1.4)

> On 14 Dec 2022, at 07:16, G.R. <firemeteor@users.sourceforge.net> =
wrote:
>=20
> On Thu, Nov 3, 2022 at 8:37 PM Roger Pau Monn=C3=A9 =
<roger.pau@citrix.com> wrote:
>>>>> Roger.
>>>> Hi Roger, any news for the upstream fix? I haven't heard any news =
since...
>>>> The reason I came back to this thread is that I totally forgot =
about
>>>> this issue and upgraded to FreeNAS 13 only to rediscover this issue
>>>> once again :-(
>>>>=20
>>>> Any chance the patch can apply on FreeBSD 13.1-RELEASE-p1 kernel?
>>>>=20
>>>> Thanks,
>>>> G.R.
>>>>=20
>>>=20
>>> Hi,
>>>=20
>>> I want to confirm that the patch in an official release would make =
quite some people very happy. E.g. among OPNsense users, there are some =
who
>>> suffer from the network issue [1]. FWIW, I compiled a kernel =
including Roger's patch, and it seems to be working without trouble in =
my OPNsense DomU.
>>=20
>> Hello to both,
>>=20
>> Sorry, I completely dropped the ball on that patch, didn't even
>> remember I had it pending :(.
>>=20
>> Will do a build test with it and commit later today, I don't think I
>> will get any feedback, and it seems to improve the situation for your
>> use-cases.
>=20
> Hi Roger,
> Just another query of the latest status. It'll be great if you can
> share a link to the upstream commit.
> I'm thinking of asking for a back-port of your fix to the FreeNAS
> community, assuming it will take a long time to roll out otherwise.
>=20
> Thanks,
> G.R.
>=20
>>=20
>> Thanks, Roger.
>=20
>=20

Hi everyone!

So did anything ever happen on this?  I find myself in the same =
situation with TrueNAS core 13, and can=E2=80=99t see any signs of =
changes in the FreeBSD 13 branches.

G.R: Did you ever build a kernel for TrueNAS 13?  Care to share it?  I =
don=E2=80=99t have a build environment setup, so I thought I=E2=80=99d =
just try to ask :-)

/Niklas



From xen-devel-bounces@lists.xenproject.org Tue Jan 09 11:29:51 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 09 Jan 2024 11:29:51 +0000
Received: from list by lists.xenproject.org with outflank-mailman.664558.1034623 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNAIf-0008Vc-P3; Tue, 09 Jan 2024 11:29:41 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 664558.1034623; Tue, 09 Jan 2024 11:29:41 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNAIf-0008VV-MK; Tue, 09 Jan 2024 11:29:41 +0000
Received: by outflank-mailman (input) for mailman id 664558;
 Tue, 09 Jan 2024 11:29:40 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=RTBC=IT=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rNAIe-0008VO-KP
 for xen-devel@lists.xenproject.org; Tue, 09 Jan 2024 11:29:40 +0000
Received: from mail-lj1-x235.google.com (mail-lj1-x235.google.com
 [2a00:1450:4864:20::235])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 5f7b09f1-aee2-11ee-9b0f-b553b5be7939;
 Tue, 09 Jan 2024 12:29:38 +0100 (CET)
Received: by mail-lj1-x235.google.com with SMTP id
 38308e7fff4ca-2cd0f4f306fso32997001fa.0
 for <xen-devel@lists.xenproject.org>; Tue, 09 Jan 2024 03:29:38 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 w2-20020a92d602000000b0035fea0268bcsm539064ilm.28.2024.01.09.03.29.36
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 09 Jan 2024 03:29:37 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 5f7b09f1-aee2-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1704799778; x=1705404578; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=Ymzh+veCJQyspaR2r8sdrMtgLXSe3iH6pJZkruRUfeo=;
        b=CYV8Shd/nf7fB5s2mCrew9IwFEEyC8C/jbDRk0QqKFkkeiIwY1/x54ziu8R2svXbMO
         0AUmoXIydfc0rdSQS7Z8liWKB2F/0dO+AtQ7onDcxMCDEGl7tIWuDM/PlV+qmVQbg7V/
         KGR8xeS2iIlBtY94QRO6LXbrnv6XbfRjXbHi8iqDghEWOjFv1JREuAWnW3KZgPChaRl9
         jX6KHK+dxfuTnXxgom2TFI5Ru7KBUrTL4rn1WNbcfvoEbf7PyzDmZXeOsL8TzjRofQXo
         uxc8vVrqKNhKEvetTo9tY62xdpDpnBELsvSrekbW2nJP7J7tbAUhdTacPyjkuwwJad5i
         rWIA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704799778; x=1705404578;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=Ymzh+veCJQyspaR2r8sdrMtgLXSe3iH6pJZkruRUfeo=;
        b=rSc1qob1nTSVlKDDFoaZEaixRK9ounAnrp9Q6oQ+M3dZK/83hGF7vJPHk1ZYUhItLC
         aH2KFWd+46OsqpEaMuPv9tarHgYpmqZUVZbqgkCP9wuvD6qNeuMvM46v2Efr8LV0k0dB
         XbHfqqNwl79fKYG3yriaHIpjhNba/OZm65xfeEDBGkz0mzdfO4Vfq8D37gjpzglgmuzG
         hPeiANasfH2KSJMgqqTgOPrNcS8C9hTwt/Uu/bolhgqCuaKW9NysSaAHY6PdF/VnVIjp
         9h4YO+pDENRfuEVoIRO/GIlaXuMq/sfbWIOKjjYB6Jg/Oi5r+n+Lz0eKtRw2W4auoUYK
         PqVQ==
X-Gm-Message-State: AOJu0Ywubs3mKX26xNsHdB9MZPEIVjeS7zbSmEZkpPiJ4+UBbo8ofsSx
	qVhTmZiIn4qhoZyGJtTAHMSsI4DJdKgc
X-Google-Smtp-Source: AGHT+IFnqXaV0zD259BpMcc0zYc9xV7gJz7zRn3txHksb2SaVP7PRYMtrPTQizA7CnUfKuc5slMpow==
X-Received: by 2002:a2e:9856:0:b0:2cc:f6b5:5193 with SMTP id e22-20020a2e9856000000b002ccf6b55193mr2105799ljj.102.1704799777857;
        Tue, 09 Jan 2024 03:29:37 -0800 (PST)
Message-ID: <1ed01809-a3b5-4075-a2ad-4fac1e46f0b3@suse.com>
Date: Tue, 9 Jan 2024 12:29:35 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v4 3/6] x86/iommu: introduce a rangeset to perform hwdom
 IOMMU setup
Content-Language: en-US
To: Roger Pau Monne <roger.pau@citrix.com>
Cc: Paul Durrant <paul@xen.org>, xen-devel@lists.xenproject.org
References: <20231220134346.22430-1-roger.pau@citrix.com>
 <20231220134346.22430-4-roger.pau@citrix.com>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <20231220134346.22430-4-roger.pau@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 20.12.2023 14:43, Roger Pau Monne wrote:
> This change just introduces the boilerplate code in order to use a rangeset
> when setting up the hardware domain IOMMU mappings.  The rangeset is never
> populated in this patch, so it's a non-functional change as far as the mappings
> the domain gets established.
> 
> Note there will be a change for HVM domains (ie: PVH dom0) when the code
> introduced here gets used: the p2m mappings will be established using
> map_mmio_regions() instead of p2m_add_identity_entry(), so that ranges can be
> mapped with a single function call if possible.  Note that the interface of
> map_mmio_regions() doesn't allow creating read-only mappings, but so far there
> are no such mappings created for PVH dom0 in arch_iommu_hwdom_init().
> 
> Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>

Reviewed-by: Jan Beulich <jbeulich@suse.com>




From xen-devel-bounces@lists.xenproject.org Tue Jan 09 11:38:28 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 09 Jan 2024 11:38:28 +0000
Received: from list by lists.xenproject.org with outflank-mailman.664565.1034633 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNAR4-0002Kv-Mf; Tue, 09 Jan 2024 11:38:22 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 664565.1034633; Tue, 09 Jan 2024 11:38:22 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNAR4-0002KA-JX; Tue, 09 Jan 2024 11:38:22 +0000
Received: by outflank-mailman (input) for mailman id 664565;
 Tue, 09 Jan 2024 11:38:21 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=RTBC=IT=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rNAR3-0002K4-6S
 for xen-devel@lists.xenproject.org; Tue, 09 Jan 2024 11:38:21 +0000
Received: from mail-lj1-x22f.google.com (mail-lj1-x22f.google.com
 [2a00:1450:4864:20::22f])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 95f86c5f-aee3-11ee-9b0f-b553b5be7939;
 Tue, 09 Jan 2024 12:38:19 +0100 (CET)
Received: by mail-lj1-x22f.google.com with SMTP id
 38308e7fff4ca-2cd1a1c5addso33032651fa.1
 for <xen-devel@lists.xenproject.org>; Tue, 09 Jan 2024 03:38:19 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 fc17-20020a0566023fd100b007bbab8c40d2sm454270iob.44.2024.01.09.03.38.16
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 09 Jan 2024 03:38:18 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 95f86c5f-aee3-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1704800299; x=1705405099; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=p0NEhKQaHQAcnvQswzw8Cm4jgNXJTva5RD3N/moGfEc=;
        b=DtVwtGaK3FD1y3SFykoAwKwHubqA/22IPqqkSn7gVHyP/7J1Yad7NxATPEWRIY7uit
         dE3+eE/rQ+vFW39oyK6uEAuUbGkzjpxgNbMEmE6yag8Sor4g/q55RKK699jTUsAphRCI
         cuSAQFZCMv7ow7J2KFU/1rt5t4/1L0hfxUCYiooJrf3Hm3mQIvXsPhnqG2HA7ZgSBLt5
         ne5DkaeL7by+3mQSEjtDU7vGNGuF0cPi3zLmsTekBms7m2Jt9tDcXiQswhq8VTcQmnmT
         ATzONhUbI+cL2QFwiTDDvrRcT3Gxr+yefKU0Na5PfibCesQPE6YDADQSILcoRt1w2Of2
         W/EQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704800299; x=1705405099;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=p0NEhKQaHQAcnvQswzw8Cm4jgNXJTva5RD3N/moGfEc=;
        b=MRhL3owdP24bGbaIczV4Ubgos9WYlaphd0VB9QcfnjOefriiOPl0rwlxvrhLq9KW+C
         nFUH46S7EgeWVE+Byly+UwpKpBehLyJpg0zrAHDAEzoJa6PLF1a3JR0xYkQtGIy+zto8
         uI9jDPuVb9vzdZFSmTis9PaTAojAq9LV1pmL48lUxF5XADhr19RxBSI3I6QH4Jp+n2lm
         o/9VjnxD7lo53GqNu7ee/sOR0KsoZCHxldgkUyc5IsROasjbY6kE1DatehPNP+vXbMD8
         fU0MpiXft4rBqiCY3m1LmatbJyHbMKKjEvfTT2WhK/2Ao0cU7VgXV8L7HSK6Hpz9wXe+
         4ypg==
X-Gm-Message-State: AOJu0YzfmV12HlZUky+DjL8Vv1e9XSa8G66Gc6pprIgbTy8s7+yaGSuI
	F8Z8BwZxIqp4yeR8arjS5USDZSIZ6lV/
X-Google-Smtp-Source: AGHT+IG88wcpR/v4ewPpT51EALkxA6ugbP/ky+lcVfROmkPf6UWNNiYP3CrkMabKVRmjISmiDgezUA==
X-Received: by 2002:a2e:a4ce:0:b0:2cd:6c8d:4c7 with SMTP id p14-20020a2ea4ce000000b002cd6c8d04c7mr240384ljm.38.1704800298757;
        Tue, 09 Jan 2024 03:38:18 -0800 (PST)
Message-ID: <cd2804ce-d846-46df-a1dd-2976e6198740@suse.com>
Date: Tue, 9 Jan 2024 12:38:15 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v4 0/6] x86/iommu: improve setup time of hwdom IOMMU
Content-Language: en-US
To: Paul Durrant <paul@xen.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, Wei Liu <wl@xen.org>,
 Lukasz Hawrylko <lukasz@hawrylko.pl>,
 "Daniel P. Smith" <dpsmith@apertussolutions.com>,
 =?UTF-8?Q?Mateusz_M=C3=B3wka?= <mateusz.mowka@intel.com>,
 Roger Pau Monne <roger.pau@citrix.com>, xen-devel@lists.xenproject.org
References: <20231220134346.22430-1-roger.pau@citrix.com>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <20231220134346.22430-1-roger.pau@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 20.12.2023 14:43, Roger Pau Monne wrote:
> Hello,
> 
> The aim of the series is to reduce boot time setup of IOMMU page tables
> for dom0.
> 
> First and second patches are a pre-req, as further patches can end up
> attempting to create maps above the max RAM address, and hence without
> properly setting the IOMMU page tables levels those attempts to map
> would fail.
> 
> Last 4 patches rework the hardware domain IOMMU setup to use a rangeset
> instead of iterating over all addresses up to the max RAM page.  See
> patch 5/6 for performance figures.
> 
> Thanks, Roger.
> 
> Roger Pau Monne (6):
>   x86/p2m: move and rename paging_max_paddr_bits()
>   amd-vi: set IOMMU page table levels based on guest reported paddr
>     width
>   x86/iommu: introduce a rangeset to perform hwdom IOMMU setup
>   x86/iommu: remove regions not to be mapped
>   x86/iommu: switch hwdom IOMMU to use a rangeset
>   x86/iommu: cleanup unused functions
> 
>  xen/arch/x86/cpu-policy.c                   |   2 +-
>  xen/arch/x86/domain.c                       |  21 ++
>  xen/arch/x86/hvm/io.c                       |  15 +-

Paul,

for the changes to this file, any chance of an ack for patches 4 and 6?

Thanks, Jan

>  xen/arch/x86/include/asm/domain.h           |   3 +
>  xen/arch/x86/include/asm/hvm/io.h           |   4 +-
>  xen/arch/x86/include/asm/paging.h           |  22 --
>  xen/arch/x86/include/asm/setup.h            |   2 +-
>  xen/arch/x86/setup.c                        |  81 +++---
>  xen/arch/x86/tboot.c                        |   2 +-
>  xen/drivers/passthrough/amd/pci_amd_iommu.c |  20 +-
>  xen/drivers/passthrough/x86/iommu.c         | 271 +++++++++++++-------
>  11 files changed, 262 insertions(+), 181 deletions(-)
> 



From xen-devel-bounces@lists.xenproject.org Tue Jan 09 12:33:53 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 09 Jan 2024 12:33:53 +0000
Received: from list by lists.xenproject.org with outflank-mailman.664572.1034644 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNBIX-0003nz-NJ; Tue, 09 Jan 2024 12:33:37 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 664572.1034644; Tue, 09 Jan 2024 12:33:37 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNBIX-0003ns-K3; Tue, 09 Jan 2024 12:33:37 +0000
Received: by outflank-mailman (input) for mailman id 664572;
 Tue, 09 Jan 2024 12:33:36 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=OpKn=IT=cloud.com=roger.pau@srs-se1.protection.inumbo.net>)
 id 1rNBIW-0003nm-Pa
 for xen-devel@lists.xenproject.org; Tue, 09 Jan 2024 12:33:36 +0000
Received: from mail-ej1-x62d.google.com (mail-ej1-x62d.google.com
 [2a00:1450:4864:20::62d])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 4e7a90a9-aeeb-11ee-98ef-6d05b1d4d9a1;
 Tue, 09 Jan 2024 13:33:35 +0100 (CET)
Received: by mail-ej1-x62d.google.com with SMTP id
 a640c23a62f3a-a2adc52f213so193588766b.0
 for <xen-devel@lists.xenproject.org>; Tue, 09 Jan 2024 04:33:35 -0800 (PST)
Received: from localhost ([213.195.127.70]) by smtp.gmail.com with ESMTPSA id
 s11-20020a170906284b00b00a26a443e98esm980225ejc.169.2024.01.09.04.33.34
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 09 Jan 2024 04:33:34 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 4e7a90a9-aeeb-11ee-98ef-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1704803615; x=1705408415; darn=lists.xenproject.org;
        h=in-reply-to:content-transfer-encoding:content-disposition
         :mime-version:references:message-id:subject:cc:to:from:date:from:to
         :cc:subject:date:message-id:reply-to;
        bh=IyxkpNpxmmoM8pUBVXYC5P1cH29+Fb4jlVEiXLzonEQ=;
        b=qUTUyNCPohZSAV+gIXLsL+MqZyqHxUXyRWYlwM4YKqbu9ORYoz8Rgeld/4I6orKasl
         /RJ9TlUxsJxnGmlAnA+gKTRE7gO2pQVCXNsD+ZXEzrCshlkI2u9EmWC6rhiOrkXe4qtU
         d/OdDc2bu0zQvN/VikcK71J0XJljB1I2x2T+E=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704803615; x=1705408415;
        h=in-reply-to:content-transfer-encoding:content-disposition
         :mime-version:references:message-id:subject:cc:to:from:date
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=IyxkpNpxmmoM8pUBVXYC5P1cH29+Fb4jlVEiXLzonEQ=;
        b=UE+XA/wXkF88JamGHCvWChqXvMpt0n8stheOWtd12rKZzGbhgcj80Om9zzrAJZXRfB
         Y0MRk3WjEVlYJEVxSlipyCC4gjLFUyp5MX1cYZK6cLa0olM9WgemNMFBXINshHqXEn13
         W38je6a/AsVi/BuHoNPnoex6oocbb0c8QQAMT3HZzbppU7evcSqkZiuHjI4rRm6rsB+c
         GlfLgpV7/p3IepdVmRof3WQq5vOcg6bl7ZZbYKvQ+Vb9Xu8Fit5IdmlTDmhTA8ryDaew
         X3gvFi2VizMOCTrnPA3Tw6NEyYTc2gjYcj+JqxqhnTeKRh92pdMRFF0ea0rn3Eq3GXIj
         P+pw==
X-Gm-Message-State: AOJu0YxCxsJOi/AGBNAygdXkuwNVJct4HxTxet+thGOwmHHu8B2iecfJ
	n/iL5uiyrMtH+FD5Q9iXD42I4AJCEGPi0w==
X-Google-Smtp-Source: AGHT+IHmAvzQJel65Lpz89Grc023zBNuhgG7qOINUtTPDWEqRhtYqIw3ulUCUjK/JMKhkUqbEFN2LQ==
X-Received: by 2002:a17:906:2c05:b0:a27:7da8:aaee with SMTP id e5-20020a1709062c0500b00a277da8aaeemr482126ejh.12.1704803614852;
        Tue, 09 Jan 2024 04:33:34 -0800 (PST)
Date: Tue, 9 Jan 2024 13:33:33 +0100
From: Roger Pau =?utf-8?B?TW9ubsOp?= <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>
Subject: Re: [PATCH v4 1/5] x86/HVM: split restore state checking from state
 loading
Message-ID: <ZZ09HcsL2irocO4T@macbook>
References: <1e855575-8c0f-4222-80ba-e64305ea714b@suse.com>
 <05e69eea-79cc-4b3c-861b-855fa67c878a@suse.com>
 <ZYGqbboWvjVOGZkb@macbook>
 <48b5a33e-19c8-49fd-9682-17056e0acb00@suse.com>
 <ZZ0fVDLQb__IvgT3@macbook>
 <77a1fdf8-f02d-4125-832c-f022d8750c87@suse.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <77a1fdf8-f02d-4125-832c-f022d8750c87@suse.com>

On Tue, Jan 09, 2024 at 11:58:48AM +0100, Jan Beulich wrote:
> On 09.01.2024 11:26, Roger Pau Monné wrote:
> > On Tue, Dec 19, 2023 at 04:24:02PM +0100, Jan Beulich wrote:
> >> On 19.12.2023 15:36, Roger Pau Monné wrote:
> >>> On Mon, Dec 18, 2023 at 03:39:55PM +0100, Jan Beulich wrote:
> >>>> @@ -291,50 +295,91 @@ int hvm_load(struct domain *d, hvm_domai
> >>>>      if ( !hdr )
> >>>>          return -ENODATA;
> >>>>  
> >>>> -    rc = arch_hvm_load(d, hdr);
> >>>> -    if ( rc )
> >>>> -        return rc;
> >>>> +    rc = arch_hvm_check(d, hdr);
> >>>
> >>> Shouldn't this _check function only be called when real == false?
> >>
> >> Possibly. In v4 I directly transformed what I had in v3:
> >>
> >>     ASSERT(!arch_hvm_check(d, hdr));
> >>
> >> I.e. it is now the call above plus ...
> >>
> >>>> +    if ( real )
> >>>> +    {
> >>>> +        struct vcpu *v;
> >>>> +
> >>>> +        ASSERT(!rc);
> >>
> >> ... this assertion. Really the little brother of the call site assertion
> >> you're asking for (see above).
> >>
> >>>> +        arch_hvm_load(d, hdr);
> >>>>  
> >>>> -    /* Down all the vcpus: we only re-enable the ones that had state saved. */
> >>>> -    for_each_vcpu(d, v)
> >>>> -        if ( !test_and_set_bit(_VPF_down, &v->pause_flags) )
> >>>> -            vcpu_sleep_nosync(v);
> >>>> +        /*
> >>>> +         * Down all the vcpus: we only re-enable the ones that had state
> >>>> +         * saved.
> >>>> +         */
> >>>> +        for_each_vcpu(d, v)
> >>>> +            if ( !test_and_set_bit(_VPF_down, &v->pause_flags) )
> >>>> +                vcpu_sleep_nosync(v);
> >>>> +    }
> >>>> +    else if ( rc )
> >>>> +        return rc;
> > 
> > The issue I see with this is that when built with debug=n the call to
> > arch_hvm_check() with real == true is useless, as the result is never
> > evaluated - IOW: would be clearer to just avoid the call altogether.
> 
> Which, besides being imo slightly worse for then having two call sites,
> puts me in a difficult position: It may not have been here, but on
> another patch (but I think it was an earlier version of this one)
> where Andrew commented on
> 
>     ASSERT(func());
> 
> as generally being a disliked pattern, for having a "side effect" in
> the expression of an assertion.

I was going to suggest to add the pure attribute to the function, but
it does have side effects as it prints to the console.

> Plus the call isn't pointless even in
> release builds, because of the log messages issued: Them appearing
> twice in close succession might be a good hint of something fishy
> going on.

Why do you mention the messages appearing twice?  Won't the first
check call return error and thus should prevent the caller from
attempting to load the state?

Thanks, Roger.


From xen-devel-bounces@lists.xenproject.org Tue Jan 09 12:38:26 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 09 Jan 2024 12:38:26 +0000
Received: from list by lists.xenproject.org with outflank-mailman.664576.1034655 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNBNB-0005BV-9n; Tue, 09 Jan 2024 12:38:25 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 664576.1034655; Tue, 09 Jan 2024 12:38:25 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNBNB-0005A9-57; Tue, 09 Jan 2024 12:38:25 +0000
Received: by outflank-mailman (input) for mailman id 664576;
 Tue, 09 Jan 2024 12:38:24 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=RTBC=IT=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rNBNA-00057e-BB
 for xen-devel@lists.xenproject.org; Tue, 09 Jan 2024 12:38:24 +0000
Received: from mail-ej1-x630.google.com (mail-ej1-x630.google.com
 [2a00:1450:4864:20::630])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id fa220a25-aeeb-11ee-98ef-6d05b1d4d9a1;
 Tue, 09 Jan 2024 13:38:23 +0100 (CET)
Received: by mail-ej1-x630.google.com with SMTP id
 a640c23a62f3a-a28f66dc7ffso685558666b.0
 for <xen-devel@lists.xenproject.org>; Tue, 09 Jan 2024 04:38:23 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 q7-20020a056e02106700b0035d0da89a0asm582752ilj.6.2024.01.09.04.38.21
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 09 Jan 2024 04:38:22 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: fa220a25-aeeb-11ee-98ef-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1704803903; x=1705408703; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=HGCF0KB/9BBvNLJaYOaWbi8YpJp+62G+p4RUQLo4Ljg=;
        b=I8HehAovm/5HXJOhAJE1zCZCLgGEB0mR0WJUIQbtDzblWJ/mCLSzM6hqQQMQi+JmS6
         RsfYXg8tLjCVCeJbC1ZeoJtjbP/UGIacbU96VloDehipl0HVtaxTdjHFyBTX0ZHTndTt
         d0M+j0QeH7onD3N2rVZyHEdD6DANSFpwVXcoDKMJZytQB+bp+lxdcKeT+CpeKIw+TRL3
         zaUxZQURMGMYbJKvXf3B3q/G9H3535yE1TVooOTkTryikv0rSXvoFazWAQtAFE6c3SzD
         Wi7oREpn/KKnFMASUoGm0DJVhGMBV6aX8iv6OtuSzY9t9iShk4YvROFvLSXoC+KaaTdl
         QWIw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704803903; x=1705408703;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=HGCF0KB/9BBvNLJaYOaWbi8YpJp+62G+p4RUQLo4Ljg=;
        b=O21pUf3jt70M+atd4eElhReV/ZR0Ql9+E4l+kROdkX+5Tbwioh7huQcmYCiVU3iT9r
         i5/OfhSobypqUuFNAu0H9L5Ih/fbBdMGr3Xo+dCibhuml2fckn8zGql9jzufIRWibN4N
         cdwvrvFFeYoUxvrWUn43vPnkMKie4BWYbWM/T/rt5CFjZxJPdKu7oON8Z8RpTnvtouxG
         SToCwhrU8TrVsiEpPBliH7xyiVUgBek4M/ucCxDSzCczhU6iqaErchNxs8sxe19xZNtg
         QNXKeS8DXtRhLVKvxBXvdV4J7y8W0FD9Jq9g4zHi/EIt597Gm4DTpf2C6ThqJUcnWQo2
         P+8w==
X-Gm-Message-State: AOJu0Yy5Qx0aEx7mQvoDBguxov4vcRAvCV4LyeIjl744E1qZQZSSFUH2
	PM2O6NXXwUfs+wdtUIagfB1Y22dFiq+e
X-Google-Smtp-Source: AGHT+IGUXKqkFpS8KM/yY5mcKqR/sMZZC1gJm+JoIc6cMQvI7LIC167Q0NjVhi4tZALqLLRB4Jzj5g==
X-Received: by 2002:a17:906:d92:b0:a29:b898:93cc with SMTP id m18-20020a1709060d9200b00a29b89893ccmr583494eji.28.1704803902880;
        Tue, 09 Jan 2024 04:38:22 -0800 (PST)
Message-ID: <affdd812-5bdb-46f2-a684-f8d554790fe1@suse.com>
Date: Tue, 9 Jan 2024 13:38:20 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v4 1/5] x86/HVM: split restore state checking from state
 loading
Content-Language: en-US
To: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
Cc: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>,
 Andrew Cooper <andrew.cooper3@citrix.com>, Wei Liu <wl@xen.org>
References: <1e855575-8c0f-4222-80ba-e64305ea714b@suse.com>
 <05e69eea-79cc-4b3c-861b-855fa67c878a@suse.com> <ZYGqbboWvjVOGZkb@macbook>
 <48b5a33e-19c8-49fd-9682-17056e0acb00@suse.com> <ZZ0fVDLQb__IvgT3@macbook>
 <77a1fdf8-f02d-4125-832c-f022d8750c87@suse.com> <ZZ09HcsL2irocO4T@macbook>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <ZZ09HcsL2irocO4T@macbook>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 09.01.2024 13:33, Roger Pau Monné wrote:
> On Tue, Jan 09, 2024 at 11:58:48AM +0100, Jan Beulich wrote:
>> Plus the call isn't pointless even in
>> release builds, because of the log messages issued: Them appearing
>> twice in close succession might be a good hint of something fishy
>> going on.
> 
> Why do you mention the messages appearing twice?  Won't the first
> check call return error and thus should prevent the caller from
> attempting to load the state?

Well, what exactly is going to be the reason for a failure on the
"real" invocation when the "dry-run" one supposedly failed is
unknown. But you're right, messages occurring twice indeed may not
be very likely. It's more like these messages appearing and then
loading still continuing which might make obvious that something
went wrong.

Jan


From xen-devel-bounces@lists.xenproject.org Tue Jan 09 13:18:54 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 09 Jan 2024 13:18:54 +0000
Received: from list by lists.xenproject.org with outflank-mailman.664582.1034664 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNC0E-0007uo-7W; Tue, 09 Jan 2024 13:18:46 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 664582.1034664; Tue, 09 Jan 2024 13:18:46 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNC0E-0007uh-3d; Tue, 09 Jan 2024 13:18:46 +0000
Received: by outflank-mailman (input) for mailman id 664582;
 Tue, 09 Jan 2024 13:18:44 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rNC0C-0007uU-Ha; Tue, 09 Jan 2024 13:18:44 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rNC0C-0008IO-EQ; Tue, 09 Jan 2024 13:18:44 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rNC0C-0002vF-2h; Tue, 09 Jan 2024 13:18:44 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rNC0C-00063P-2L; Tue, 09 Jan 2024 13:18:44 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=rKWYhaLLSV625TLPV0J4plVhXrqI2xxRsYEdPpxD4ko=; b=uyPHNA289Zp/o7gXALpdHGUyXr
	siI6sLFu9Pnr/gIWRB9jPliGJhAmB2tNNcTKLxGYugVqDcS4ArTkd0U/dgsgztzH2qtOl/JbbOOnG
	GyH3VdhMQ8ZfIiCahv6tF/xhNmXTL6EBEAJyiXg7YQFbRKvwwVwQwjFQT4evieJj9SQ8=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184294-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [xtf test] 184294: all pass - PUSHED
X-Osstest-Versions-This:
    xtf=837f771d9612215d5e6c9a1a41bf3b3ab0d0b381
X-Osstest-Versions-That:
    xtf=2eed9f51c67a9e5d29ffd4ffeee50710489aad23
From: osstest service owner <osstest-admin@xenproject.org>
Date: Tue, 09 Jan 2024 13:18:44 +0000

flight 184294 xtf real [real]
http://logs.test-lab.xenproject.org/osstest/logs/184294/

Perfect :-)
All tests in this flight passed as required
version targeted for testing:
 xtf                  837f771d9612215d5e6c9a1a41bf3b3ab0d0b381
baseline version:
 xtf                  2eed9f51c67a9e5d29ffd4ffeee50710489aad23

Last test of basis   184279  2024-01-08 15:13:02 Z    0 days
Testing same since   184294  2024-01-09 12:14:55 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Andrew Cooper <andrew.cooper3@citrix.com>

jobs:
 build-amd64-xtf                                              pass    
 build-amd64                                                  pass    
 build-amd64-pvops                                            pass    
 test-xtf-amd64-amd64-1                                       pass    
 test-xtf-amd64-amd64-2                                       pass    
 test-xtf-amd64-amd64-3                                       pass    
 test-xtf-amd64-amd64-4                                       pass    
 test-xtf-amd64-amd64-5                                       pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Pushing revision :

To xenbits.xen.org:/home/xen/git/xtf.git
   2eed9f5..837f771  837f771d9612215d5e6c9a1a41bf3b3ab0d0b381 -> xen-tested-master


From xen-devel-bounces@lists.xenproject.org Tue Jan 09 13:21:42 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 09 Jan 2024 13:21:42 +0000
Received: from list by lists.xenproject.org with outflank-mailman.664588.1034674 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNC33-0002Dj-LO; Tue, 09 Jan 2024 13:21:41 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 664588.1034674; Tue, 09 Jan 2024 13:21:41 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNC33-0002DY-HK; Tue, 09 Jan 2024 13:21:41 +0000
Received: by outflank-mailman (input) for mailman id 664588;
 Tue, 09 Jan 2024 13:21:40 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=TUfc=IT=cloud.com=kelly.choi@srs-se1.protection.inumbo.net>)
 id 1rNC32-0002DQ-QK
 for xen-devel@lists.xenproject.org; Tue, 09 Jan 2024 13:21:40 +0000
Received: from mail-ej1-x636.google.com (mail-ej1-x636.google.com
 [2a00:1450:4864:20::636])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 05c941fd-aef2-11ee-98ef-6d05b1d4d9a1;
 Tue, 09 Jan 2024 14:21:39 +0100 (CET)
Received: by mail-ej1-x636.google.com with SMTP id
 a640c23a62f3a-a2a17f3217aso313412866b.2
 for <xen-devel@lists.xenproject.org>; Tue, 09 Jan 2024 05:21:39 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 05c941fd-aef2-11ee-98ef-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1704806499; x=1705411299; darn=lists.xenproject.org;
        h=cc:to:subject:message-id:date:from:mime-version:from:to:cc:subject
         :date:message-id:reply-to;
        bh=UEzy2BNPiipyrD9tho94J+rCXdCdv7DhoxljcDviQIU=;
        b=MuajzseDy/03/7dzi+wtGNFJerDAGRHNDD58WwGKkaS0TOa0KbTn2fZvhqhX7h2uHN
         Ist2GvhwiN3xFYkEM8K2giuf14T1uu6fTReyoVS40ZMiu2CZO6EPrB/jf3OPriSe1QXw
         oyzXKDHeAZDxzluX1PANtE5VaLJWU/rw8NDLs=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704806499; x=1705411299;
        h=cc:to:subject:message-id:date:from:mime-version:x-gm-message-state
         :from:to:cc:subject:date:message-id:reply-to;
        bh=UEzy2BNPiipyrD9tho94J+rCXdCdv7DhoxljcDviQIU=;
        b=jPDmPUO5Gq/RSQbgyGNWNmb1v9BaZ1IhDYJJEWYg05GQmwrkNv5hwvbEp7HcfsWvJA
         cTeYUxmMe9hGH4x0N6jsORfPLnoJyPhdG5h5Wawz3Vf7fyNwELb1ZU/HeM/CaOFGvlNA
         nfimTXlUdA6oV6lqPKDSES4DvQtgWDVBPTMJOJQVjwniwQex/lBMCZWmDbNcUYkcU2sK
         9v6AXzQtzee2mIRbzfAqL2ktr0TlDBPON7FTH0s9bvhg2jJpjrgoN3VXYucBj4oDs48W
         go8FT3LDI1AP5y/pzvoqLOi7HTpNKxZAOzSkIPSJ8R1PkchqxvwYHC4ZAFRHwY/kKy29
         8yjg==
X-Gm-Message-State: AOJu0YzbP1NdEO1c3M1xM7ApQqPSSoHrsYShLe+OwKQGNFUY328UbmjC
	gJbkmi1DK/mnoGOXy3OkEUPvOsExw8PvRvvVpGmBJS5b1zL4F8rjbKTvj5kRhEa5VQ==
X-Google-Smtp-Source: AGHT+IFgtCG4D+qxdYYxAEEjdvQmKDJzw+zvRK/w8dYlA72FDq/+rRBsR0sYdUv15qecVzGuX6G7cSGFI+GaV1mq5hA=
X-Received: by 2002:a17:906:6a21:b0:a28:825d:99ab with SMTP id
 qw33-20020a1709066a2100b00a28825d99abmr750843ejc.19.1704806499030; Tue, 09
 Jan 2024 05:21:39 -0800 (PST)
MIME-Version: 1.0
From: Kelly Choi <kelly.choi@cloud.com>
Date: Tue, 9 Jan 2024 13:21:03 +0000
Message-ID: <CAO-mL=yuK+t344CBL+KLFKUFc1kLfyj-eJxtHQ4t5Ltw777vFA@mail.gmail.com>
Subject: Xen Project Annual Survey
To: xen-devel@lists.xenproject.org, xen-users@lists.xenproject.org, 
	xen-announce@lists.xenproject.org
Cc: committers@xenproject.org
Content-Type: multipart/alternative; boundary="000000000000c951df060e83316f"

--000000000000c951df060e83316f
Content-Type: text/plain; charset="UTF-8"

Happy New Year Xen Community,

As we start the New Year, I'd like to ask you to reflect on how the project
went in 2023. This will help us track the health of the community and also
give you a chance to express your ideas and feedback.

The survey can be answered anonymously and should take less than 10 minutes.

*Link: https://cryptpad.fr/form/#/2/form/view/uG22fJfe8UILyP9+jJ-YesXsINKMZRpuWh2c58bhBYI/
<https://cryptpad.fr/form/#/2/form/view/uG22fJfe8UILyP9+jJ-YesXsINKMZRpuWh2c58bhBYI/>
*
*Deadline: 31st January 2024. *

Many thanks,
Kelly Choi

Community Manager
Xen Project

--000000000000c951df060e83316f
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr">Happy New Year Xen Community,<div><br></div><div>As we sta=
rt the New Year, I&#39;d like to ask you to reflect on how the project went=
 in 2023. This will help us track the health of the community and also give=
 you a chance to express your ideas and feedback.=C2=A0</div><div><br></div=
><div>The survey can be answered anonymously and should take less than 10 m=
inutes.</div><div><br></div><div><b>Link:=C2=A0<a href=3D"https://cryptpad.=
fr/form/#/2/form/view/uG22fJfe8UILyP9+jJ-YesXsINKMZRpuWh2c58bhBYI/">https:/=
/cryptpad.fr/form/#/2/form/view/uG22fJfe8UILyP9+jJ-YesXsINKMZRpuWh2c58bhBYI=
/</a>=C2=A0</b></div><div><b>Deadline: 31st January 2024.=C2=A0</b></div><d=
iv><br></div><div><div><div dir=3D"ltr" class=3D"gmail_signature" data-smar=
tmail=3D"gmail_signature"><div dir=3D"ltr"><div>Many thanks,</div><div>Kell=
y Choi</div><div><br></div><div><div style=3D"color:rgb(136,136,136)">Commu=
nity Manager</div><div style=3D"color:rgb(136,136,136)">Xen Project=C2=A0<b=
r></div></div></div></div></div></div></div>

--000000000000c951df060e83316f--


From xen-devel-bounces@lists.xenproject.org Tue Jan 09 13:53:58 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 09 Jan 2024 13:53:58 +0000
Received: from list by lists.xenproject.org with outflank-mailman.664629.1034701 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNCY4-0003d7-Dg; Tue, 09 Jan 2024 13:53:44 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 664629.1034701; Tue, 09 Jan 2024 13:53:44 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNCY4-0003d0-AL; Tue, 09 Jan 2024 13:53:44 +0000
Received: by outflank-mailman (input) for mailman id 664629;
 Tue, 09 Jan 2024 13:53:42 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=OpKn=IT=cloud.com=roger.pau@srs-se1.protection.inumbo.net>)
 id 1rNCY2-0003ct-GL
 for xen-devel@lists.xenproject.org; Tue, 09 Jan 2024 13:53:42 +0000
Received: from mail-ej1-x633.google.com (mail-ej1-x633.google.com
 [2a00:1450:4864:20::633])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 7e9a8417-aef6-11ee-98ef-6d05b1d4d9a1;
 Tue, 09 Jan 2024 14:53:40 +0100 (CET)
Received: by mail-ej1-x633.google.com with SMTP id
 a640c23a62f3a-a277339dcf4so323798266b.2
 for <xen-devel@lists.xenproject.org>; Tue, 09 Jan 2024 05:53:40 -0800 (PST)
Received: from localhost ([213.195.127.70]) by smtp.gmail.com with ESMTPSA id
 hg7-20020a170906f34700b00a28a66028bcsm1071568ejb.91.2024.01.09.05.53.39
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 09 Jan 2024 05:53:39 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 7e9a8417-aef6-11ee-98ef-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1704808420; x=1705413220; darn=lists.xenproject.org;
        h=in-reply-to:content-transfer-encoding:content-disposition
         :mime-version:references:message-id:subject:cc:to:from:date:from:to
         :cc:subject:date:message-id:reply-to;
        bh=K+GqDfLNHcBH1YdF2mm3IM7g6zY7517CQfnDoIDysb0=;
        b=jLp1TnblW57GzwkD3dftvXN4R7KXhgw6i+K50d5JZwub5jDzbJgAw0xGtXhmd2lyLW
         gIX8TVJAzWFc4nb+JzuXWYzcFAQ9Zz6yn3LagXSQQnqr4FEcdl8vUAoEaFakE5XGjPVl
         jZdDOaVxptVzQ9+0cxNtkpdjajCPbm+ddWCSY=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704808420; x=1705413220;
        h=in-reply-to:content-transfer-encoding:content-disposition
         :mime-version:references:message-id:subject:cc:to:from:date
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=K+GqDfLNHcBH1YdF2mm3IM7g6zY7517CQfnDoIDysb0=;
        b=m+nS5cAZjbshu+gD26e5G4N3PtM+4HUoMviNYjY6StGJKyJjl8H+yPp3A0c0JtJMQs
         WpQKWNX8NR6NPFO3thgNWvHcvI4ADzG8aVjqkfX8Y37zr2WryUN0tt1kaAEm7xCjo8qW
         yoNGC8tmeGRtU9e6/0sPcvZZ1UtO1OATzaBi6khu6nIJrUiCtf5wsj5vyQefgL60jnUt
         qRQLc9J/j4QQlvWESlnygpHGxHa8I6fSU4SVaonWjHrwnn9DSH+03kvJ00xGijjx2RLT
         mwO57/BA9gDq4/tcOuSMkks4cxg995xQQScAD0J8+1rBIG9U1QRTYT/Yc1ANFoYGUYYC
         lDuA==
X-Gm-Message-State: AOJu0Yylu/vsAQyZ5E8euhxnQ+LxFGBH/Qx85PtCXk5BWT3w2gHP0Wky
	tCvHRn/Ao++yT2yqrW5vbHood4aWduoYMA==
X-Google-Smtp-Source: AGHT+IFg4dJqQYmjG1BGMgGVuP2nBX48fxvb8oBEcUMerm+iT5zKk+/Yi1Jznd1qh1AVJ17A0GParw==
X-Received: by 2002:a17:907:6d17:b0:a12:78b5:3d81 with SMTP id sa23-20020a1709076d1700b00a1278b53d81mr696755ejc.1.1704808420046;
        Tue, 09 Jan 2024 05:53:40 -0800 (PST)
Date: Tue, 9 Jan 2024 14:53:38 +0100
From: Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
To: Niklas Hallqvist <niklas@appli.se>
Cc: "G.R." <firemeteor@users.sourceforge.net>,
	Paul Leiber <paul@onlineschubla.de>, xen-devel@lists.xenproject.org
Subject: Re: Possible bug? DOM-U network stopped working after fatal error
 reported in DOM0
Message-ID: <ZZ1P4lSL_jPztGJ3@macbook>
References: <YdQgf2+E467kuTxK@Air-de-Roger>
 <CAKhsbWbrvF6M-SAocACO5NvBaitUQ9mB5Qx+fMGtn_yVu0ZvEA@mail.gmail.com>
 <YdWsPWqALWBRGtqW@Air-de-Roger>
 <CAKhsbWbvjEcA220TTHGB3PPbfLmdS_MuK5Mn3Xvrr+JL=dHK7w@mail.gmail.com>
 <YdxIbLYRYh4hvVGj@Air-de-Roger>
 <CAKhsbWYHhveuwTjaiSGKCqf41nSHZKdt7W_y0qp-x09Pce22SA@mail.gmail.com>
 <735adbe4-238b-bb7b-ba91-eb53759223aa@onlineschubla.de>
 <Y2OwzjfUnCFf2EDU@Air-de-Roger>
 <CAKhsbWZM3y7D=vQzng3GndQOzhx5RcDHWFVXdJZhCt-qz5CtwQ@mail.gmail.com>
 <DCF59D19-59C2-43E9-9F25-7F64FFF691F7@appli.se>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <DCF59D19-59C2-43E9-9F25-7F64FFF691F7@appli.se>

On Tue, Jan 09, 2024 at 12:13:04PM +0100, Niklas Hallqvist wrote:
> > On 14 Dec 2022, at 07:16, G.R. <firemeteor@users.sourceforge.net> wrote:
> > 
> > On Thu, Nov 3, 2022 at 8:37 PM Roger Pau Monné <roger.pau@citrix.com> wrote:
> >>>>> Roger.
> >>>> Hi Roger, any news for the upstream fix? I haven't heard any news since...
> >>>> The reason I came back to this thread is that I totally forgot about
> >>>> this issue and upgraded to FreeNAS 13 only to rediscover this issue
> >>>> once again :-(
> >>>> 
> >>>> Any chance the patch can apply on FreeBSD 13.1-RELEASE-p1 kernel?
> >>>> 
> >>>> Thanks,
> >>>> G.R.
> >>>> 
> >>> 
> >>> Hi,
> >>> 
> >>> I want to confirm that the patch in an official release would make quite some people very happy. E.g. among OPNsense users, there are some who
> >>> suffer from the network issue [1]. FWIW, I compiled a kernel including Roger's patch, and it seems to be working without trouble in my OPNsense DomU.
> >> 
> >> Hello to both,
> >> 
> >> Sorry, I completely dropped the ball on that patch, didn't even
> >> remember I had it pending :(.
> >> 
> >> Will do a build test with it and commit later today, I don't think I
> >> will get any feedback, and it seems to improve the situation for your
> >> use-cases.
> > 
> > Hi Roger,
> > Just another query of the latest status. It'll be great if you can
> > share a link to the upstream commit.
> > I'm thinking of asking for a back-port of your fix to the FreeNAS
> > community, assuming it will take a long time to roll out otherwise.
> > 
> > Thanks,
> > G.R.
> > 
> >> 
> >> Thanks, Roger.
> > 
> > 
> 
> Hi everyone!
> 
> So did anything ever happen on this?  I find myself in the same situation with TrueNAS core 13, and can’t see any signs of changes in the FreeBSD 13 branches.

Hello,

I don't think the change is suitable to backport, it's IMO too
intrusive and risky.  It was committed late 2022, and it's in 14.0:

commit dabb3db7a817f003af3f89c965ba369c67fc4910
Author: Roger Pau Monné <royger@FreeBSD.org>
Date:   Thu Nov 3 13:29:22 2022 +0100

    xen/netfront: deal with mbuf data crossing a page boundary

    There's been a report recently of mbufs with data that crosses a page
    boundary. It seems those mbufs are generated by the iSCSI target
    system:

    https://lists.xenproject.org/archives/html/xen-devel/2021-12/msg01581.html

    In order to handle those mbufs correctly on netfront use the bus_dma
    interface and explicitly request that segments must not cross a page
    boundary. No other requirements are necessary, so it's expected that
    bus_dma won't need to bounce the data and hence it shouldn't
    introduce a too big performance penalty.

    Using bus_dma requires some changes to netfront, mainly in order to
    accommodate for the fact that now ring slots no longer have a 1:1
    match with mbufs, as a single mbuf can use two ring slots if the data
    buffer crosses a page boundary. Store the first packet of the mbuf
    chain in every ring slot that's used, and use a mbuf tag in order to
    store the bus_dma related structures and a refcount to keep track of
    the pending slots before the mbuf chain can be freed.

    Reported by: G.R.
    Tested by: G.R.
    MFC: 1 week
    Differential revision: https://reviews.freebsd.org/D33876

TrueNAS/OOPNsense might consider picking it up themselves.

Thanks, Roger.


From xen-devel-bounces@lists.xenproject.org Tue Jan 09 14:20:18 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 09 Jan 2024 14:20:18 +0000
Received: from list by lists.xenproject.org with outflank-mailman.664637.1034711 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNCxf-0003AU-IT; Tue, 09 Jan 2024 14:20:11 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 664637.1034711; Tue, 09 Jan 2024 14:20:11 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNCxf-0003AN-Fn; Tue, 09 Jan 2024 14:20:11 +0000
Received: by outflank-mailman (input) for mailman id 664637;
 Tue, 09 Jan 2024 14:20:10 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=bEKq=IT=cloud.com=javi.merino@srs-se1.protection.inumbo.net>)
 id 1rNCxe-000388-2B
 for xen-devel@lists.xenproject.org; Tue, 09 Jan 2024 14:20:10 +0000
Received: from mail-ed1-x52b.google.com (mail-ed1-x52b.google.com
 [2a00:1450:4864:20::52b])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 2fe660bc-aefa-11ee-9b0f-b553b5be7939;
 Tue, 09 Jan 2024 15:20:06 +0100 (CET)
Received: by mail-ed1-x52b.google.com with SMTP id
 4fb4d7f45d1cf-5534dcfdd61so5348367a12.0
 for <xen-devel@lists.xenproject.org>; Tue, 09 Jan 2024 06:20:06 -0800 (PST)
Received: from jmerino-thinkstation.citrite.net
 (default-46-102-197-194.interdsl.co.uk. [46.102.197.194])
 by smtp.gmail.com with ESMTPSA id
 h15-20020aa7c94f000000b00557c6778b88sm1006014edt.53.2024.01.09.06.20.05
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 09 Jan 2024 06:20:05 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 2fe660bc-aefa-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1704810006; x=1705414806; darn=lists.xenproject.org;
        h=content-transfer-encoding:mime-version:message-id:date:subject:cc
         :to:from:from:to:cc:subject:date:message-id:reply-to;
        bh=VfD5eh+5AnOG7qBGieEa/3TaBhZ4atnwdaWBB6XiDjE=;
        b=kXAOMfVGsjpA4vZ6X0gVhdWHjeBaLsEho3mbkE8Jb1HjBRJMerZQ16ELfiDUzs1qTn
         x8YKDCYH/Fy0meMvNITzulx/qqq9ItWckUH8FgPKi6K3rAentLrCp/YaBdvvLgES7fU3
         b+/TD5DSHHe1oQ2MHKoEfzuNC4GMsvTniYImM=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704810006; x=1705414806;
        h=content-transfer-encoding:mime-version:message-id:date:subject:cc
         :to:from:x-gm-message-state:from:to:cc:subject:date:message-id
         :reply-to;
        bh=VfD5eh+5AnOG7qBGieEa/3TaBhZ4atnwdaWBB6XiDjE=;
        b=LkBqILaz3pwrUyDDeEZaRUQNvjffVN+sCtVyPM41kUTilI5xXG9Sz/jGB/AWxxMk8t
         n6NnTn2Kw1USJPlm2DNHMoFV8V2/oLIFVr23OgwwEmSwwLOxe3w0xrqgvGyuNJMZPGaB
         kPDLIkvOdtGNWvQasKitnsoaNiv+q+VUuhHTI28y+/xRvQ4HI8CZg8kZ7v83hAZYGEgR
         8OZll4UYCq6dnfOxbRWhAZRJu16HXxSghW6UwP1Aqwpm5uQsi6IIkrtrK7eGnl3Uc7on
         QkPqA+iUITsY/hrdA4nV2UcULskHAZLEedNMEZPOREIbt1smY8Xxi9vTFQtzm4ax/JFl
         J3Gg==
X-Gm-Message-State: AOJu0YwR4/WaRWzNWDXoXRc1+kTM1gEyDWNAwRR2M+Ra9iBBw9bRqn+r
	3cBoJeN0w/XrJtEPIVbmsBEAl9C5w5dAhB1/vPR7PXJ38GA=
X-Google-Smtp-Source: AGHT+IG7hntlSUPKyTnj1CvmJqPeZhGQUUPef1PTC7EqrWuRRTaYvmwYukGK0JZbj3ZAGeDh2JhSKQ==
X-Received: by 2002:a50:f695:0:b0:555:9bd7:a4f0 with SMTP id d21-20020a50f695000000b005559bd7a4f0mr949341edn.36.1704810005813;
        Tue, 09 Jan 2024 06:20:05 -0800 (PST)
From: Javi Merino <javi.merino@cloud.com>
To: xen-devel@lists.xenproject.org
Cc: Javi Merino <javi.merino@cloud.com>,
	Vikram Garhwal <vikram.garhwal@amd.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Julien Grall <julien@xen.org>
Subject: [PATCH for-4.18 v1] xen/common: Don't dereference overlay_node after checking that it is NULL
Date: Tue,  9 Jan 2024 14:19:49 +0000
Message-ID: <6b2db92de764b6031647926d27cb14dd455eff7d.1704809355.git.javi.merino@cloud.com>
X-Mailer: git-send-email 2.42.0
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

In remove_nodes(), overlay_node is dereferenced when printing the
error message even though it is known to be NULLL.  Fix the error
message to avoid dereferencing a NULL pointer.

The semantic patch that spots this code is available in

https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/scripts/coccinelle/null/deref_null.cocci?id=1f874787ed9a2d78ed59cb21d0d90ac0178eceb0

Fixes: 7e5c4a8b86f1 ("xen/arm: Implement device tree node removal functionalities")
Signed-off-by: Javi Merino <javi.merino@cloud.com>
---
CC: Vikram Garhwal <vikram.garhwal@amd.com>

Vikram, I didn't know what to put in the error message.  Feel free to
suggest something more appropriate than "Device not present in the
tree".

---
 xen/common/dt-overlay.c | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/xen/common/dt-overlay.c b/xen/common/dt-overlay.c
index 5663a049e90a..f04b0c276eea 100644
--- a/xen/common/dt-overlay.c
+++ b/xen/common/dt-overlay.c
@@ -428,8 +428,7 @@ static int remove_nodes(const struct overlay_track *tracker)
         overlay_node = (struct dt_device_node *)tracker->nodes_address[j];
         if ( overlay_node == NULL )
         {
-            printk(XENLOG_ERR "Device %s is not present in the tree. Removing nodes failed\n",
-                   overlay_node->full_name);
+            printk(XENLOG_ERR "Device not present in the tree. Removing nodes failed\n");
             return -EINVAL;
         }
 
-- 
2.42.0



From xen-devel-bounces@lists.xenproject.org Tue Jan 09 14:24:17 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 09 Jan 2024 14:24:17 +0000
Received: from list by lists.xenproject.org with outflank-mailman.664660.1034733 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rND1b-0004eF-A8; Tue, 09 Jan 2024 14:24:15 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 664660.1034733; Tue, 09 Jan 2024 14:24:15 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rND1b-0004e8-73; Tue, 09 Jan 2024 14:24:15 +0000
Received: by outflank-mailman (input) for mailman id 664660;
 Tue, 09 Jan 2024 14:24:13 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=a1E1=IT=linaro.org=peter.maydell@srs-se1.protection.inumbo.net>)
 id 1rND1Z-0004d3-Mj
 for xen-devel@lists.xenproject.org; Tue, 09 Jan 2024 14:24:13 +0000
Received: from mail-lf1-x12f.google.com (mail-lf1-x12f.google.com
 [2a00:1450:4864:20::12f])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id c2f9c68c-aefa-11ee-98ef-6d05b1d4d9a1;
 Tue, 09 Jan 2024 15:24:13 +0100 (CET)
Received: by mail-lf1-x12f.google.com with SMTP id
 2adb3069b0e04-50e7c6f0487so2890514e87.3
 for <xen-devel@lists.xenproject.org>; Tue, 09 Jan 2024 06:24:13 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: c2f9c68c-aefa-11ee-98ef-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=linaro.org; s=google; t=1704810253; x=1705415053; darn=lists.xenproject.org;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:from:to:cc:subject:date
         :message-id:reply-to;
        bh=w/fxIqo+g5WwjavjYufA4hFi1cRbz34uO2PZEzQMCek=;
        b=bC2CpYFmShzcPmQtX0nQXKm5fumRkOUaFwiw16sVdsN+wKl/uSyaBeMt4+yO7zyZIp
         tj/+CQ81P8RTDWRRuUB7C7EtOkD9mXpg4iTAqysk2ZqUl5JWyeiX4tB8LbuEbx1O+Jko
         rLK8BbmHsE8Jyg+ksbx4kS1vHeLf6D/CfMeNo01eGYy360yV1lOI7dWDmQB99bDni72E
         hxgh/67atKQsy74fhvJXCD6RUi7/eqHTfbb2XO7Bp+iKnDEzmFVHePlM8J2SNgpfXS1g
         xScco2qtoNzMAgbfnc4FgwNy97leQY37V4O2LEUgbUV8EjozIesbz8PU9RvGxaLAnbmK
         FJEA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704810253; x=1705415053;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to;
        bh=w/fxIqo+g5WwjavjYufA4hFi1cRbz34uO2PZEzQMCek=;
        b=DUHTplSN7itJtmsZfSbs/ZfgYNbUwV8ms3dVZujGC3hlxsPK2yA5yYTHV1Vk6HzcaM
         lmuFtOnYvzw7TS26DEp0Rc/GBhZB5yaeUR/hkOm0F7xm1va9MpEPCn37dPPcXOURN/w/
         BafNZTG3fuJ2Wq3+dxtJHvQuOAp6gUFZW7Oo2Iwn69TPT/FYFS6GoCFLPacJ4GQr3D4T
         oECQCXYJ8ZvYhffjotiiXm0U6EfCZPYZmWeUN+64n76/74EfseZXKCuppKeHkzUmi4WI
         Gx/MXT8pbjLQcEPzaANYxllaKlNs1ZQfnOZUfuAjkGaKQ+c3BEKopwCArFmCRED2qfPa
         d9PQ==
X-Gm-Message-State: AOJu0YyWxmCP+6QLD9TIq30DIgxjWG616vRuNLqPu/ZfbtoXt1VOyOp+
	G+yoj57KKpO9xwzldeRnc1UJPHsXVMPqg+zaZEsrnm+WRVwSmg==
X-Google-Smtp-Source: AGHT+IFrVXvHsq1m1peP2eO+e72Pz8YdISUp+RIUUAo1aE+Zj9tZO0OThcNuGgpWww0VuL5fmq96NN7TJ2JIvwtuWz4=
X-Received: by 2002:a05:6512:2001:b0:50e:a923:4bb with SMTP id
 a1-20020a056512200100b0050ea92304bbmr1442148lfb.133.1704810252732; Tue, 09
 Jan 2024 06:24:12 -0800 (PST)
MIME-Version: 1.0
References: <20240108163735.254732-1-stefanha@redhat.com>
In-Reply-To: <20240108163735.254732-1-stefanha@redhat.com>
From: Peter Maydell <peter.maydell@linaro.org>
Date: Tue, 9 Jan 2024 14:24:01 +0000
Message-ID: <CAFEAcA_RYdGZRxOAD43phmj0WmHTbU01tiNTmC8CxHF2cpb6DQ@mail.gmail.com>
Subject: Re: [PULL 0/6] Block patches
To: Stefan Hajnoczi <stefanha@redhat.com>
Cc: qemu-devel@nongnu.org, qemu-s390x@nongnu.org, 
	Aleksandar Rikalo <aleksandar.rikalo@syrmia.com>, qemu-block@nongnu.org, 
	Alistair Francis <alistair.francis@wdc.com>, Max Filippov <jcmvbkbc@gmail.com>, kvm@vger.kernel.org, 
	Daniel Henrique Barboza <danielhb413@gmail.com>, Jiaxun Yang <jiaxun.yang@flygoat.com>, qemu-arm@nongnu.org, 
	Jean-Christophe Dubois <jcd@tribudubois.net>, Jiri Slaby <jslaby@suse.cz>, 
	=?UTF-8?B?TWFyYy1BbmRyw6kgTHVyZWF1?= <marcandre.lureau@redhat.com>, 
	=?UTF-8?Q?Philippe_Mathieu=2DDaud=C3=A9?= <philmd@linaro.org>, 
	Eric Blake <eblake@redhat.com>, Paul Durrant <paul@xen.org>, BALATON Zoltan <balaton@eik.bme.hu>, 
	Kevin Wolf <kwolf@redhat.com>, Pavel Dovgalyuk <pavel.dovgaluk@ispras.ru>, 
	=?UTF-8?Q?Daniel_P=2E_Berrang=C3=A9?= <berrange@redhat.com>, 
	Roman Bolshakov <rbolshakov@ddn.com>, Reinoud Zandijk <reinoud@netbsd.org>, 
	Christian Borntraeger <borntraeger@linux.ibm.com>, Gerd Hoffmann <kraxel@redhat.com>, 
	Thomas Huth <thuth@redhat.com>, Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>, 
	xen-devel@lists.xenproject.org, Anthony Perard <anthony.perard@citrix.com>, 
	Weiwei Li <liwei1518@gmail.com>, qemu-ppc@nongnu.org, 
	Sunil Muthuswamy <sunilmut@microsoft.com>, Halil Pasic <pasic@linux.ibm.com>, 
	Song Gao <gaosong@loongson.cn>, Aurelien Jarno <aurelien@aurel32.net>, 
	=?UTF-8?B?QWxleCBCZW5uw6ll?= <alex.bennee@linaro.org>, 
	=?UTF-8?Q?C=C3=A9dric_Le_Goater?= <clg@kaod.org>, 
	Andrey Smirnov <andrew.smirnov@gmail.com>, Marcel Apfelbaum <marcel.apfelbaum@gmail.com>, 
	Eduardo Habkost <eduardo@habkost.net>, "Michael S. Tsirkin" <mst@redhat.com>, 
	Marcelo Tosatti <mtosatti@redhat.com>, qemu-riscv@nongnu.org, 
	Palmer Dabbelt <palmer@dabbelt.com>, Alexander Graf <agraf@csgraf.de>, 
	Markus Armbruster <armbru@redhat.com>, John Snow <jsnow@redhat.com>, 
	Paolo Bonzini <pbonzini@redhat.com>, Peter Xu <peterx@redhat.com>, Stefan Weil <sw@weilnetz.de>, 
	Harsh Prateek Bora <harshpb@linux.ibm.com>, Hailiang Zhang <zhanghailiang@xfusion.com>, 
	Hyman Huang <yong.huang@smartx.com>, Michael Roth <michael.roth@amd.com>, Fam Zheng <fam@euphon.net>, 
	Stefano Stabellini <sstabellini@kernel.org>, 
	Vladimir Sementsov-Ogievskiy <vsementsov@yandex-team.ru>, David Gibson <david@gibson.dropbear.id.au>, 
	Artyom Tarasenko <atar4qemu@gmail.com>, Stafford Horne <shorne@gmail.com>, 
	Liu Zhiwei <zhiwei_liu@linux.alibaba.com>, David Woodhouse <dwmw2@infradead.org>, 
	Cameron Esfahani <dirty@apple.com>, Eric Farman <farman@linux.ibm.com>, Jason Wang <jasowang@redhat.com>, 
	Nicholas Piggin <npiggin@gmail.com>, Ilya Leoshkevich <iii@linux.ibm.com>, 
	Richard Henderson <richard.henderson@linaro.org>, Hanna Reitz <hreitz@redhat.com>, 
	Huacai Chen <chenhuacai@kernel.org>, Jagannathan Raman <jag.raman@oracle.com>, 
	Elena Ufimtseva <elena.ufimtseva@oracle.com>, Bin Meng <bin.meng@windriver.com>, 
	Fabiano Rosas <farosas@suse.de>, Akihiko Odaki <akihiko.odaki@daynix.com>, 
	David Hildenbrand <david@redhat.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

On Mon, 8 Jan 2024 at 16:37, Stefan Hajnoczi <stefanha@redhat.com> wrote:
>
> The following changes since commit ffd454c67e38cc6df792733ebc5d967eee28ac=
0d:
>
>   Merge tag 'pull-vfio-20240107' of https://github.com/legoater/qemu into=
 staging (2024-01-08 10:28:42 +0000)
>
> are available in the Git repository at:
>
>   https://gitlab.com/stefanha/qemu.git tags/block-pull-request
>
> for you to fetch changes up to 0b2675c473f68f13bc5ca1dd1c43ce421542e7b8:
>
>   Rename "QEMU global mutex" to "BQL" in comments and docs (2024-01-08 10=
:45:43 -0500)
>
> ----------------------------------------------------------------
> Pull request
>
> ----------------------------------------------------------------
>
> Philippe Mathieu-Daud=C3=A9 (1):
>   iothread: Remove unused Error** argument in aio_context_set_aio_params
>
> Stefan Hajnoczi (5):
>   system/cpus: rename qemu_mutex_lock_iothread() to bql_lock()
>   qemu/main-loop: rename QEMU_IOTHREAD_LOCK_GUARD to BQL_LOCK_GUARD
>   qemu/main-loop: rename qemu_cond_wait_iothread() to
>     qemu_cond_wait_bql()
>   Replace "iothread lock" with "BQL" in comments
>   Rename "QEMU global mutex" to "BQL" in comments and docs


Applied, thanks.

Please update the changelog at https://wiki.qemu.org/ChangeLog/9.0
for any user-visible changes.

-- PMM


From xen-devel-bounces@lists.xenproject.org Tue Jan 09 14:39:41 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 09 Jan 2024 14:39:41 +0000
Received: from list by lists.xenproject.org with outflank-mailman.664671.1034744 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNDGR-0008TS-Iq; Tue, 09 Jan 2024 14:39:35 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 664671.1034744; Tue, 09 Jan 2024 14:39:35 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNDGR-0008TL-G5; Tue, 09 Jan 2024 14:39:35 +0000
Received: by outflank-mailman (input) for mailman id 664671;
 Tue, 09 Jan 2024 14:39:33 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=RTBC=IT=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rNDGP-0008Su-Ph
 for xen-devel@lists.xenproject.org; Tue, 09 Jan 2024 14:39:33 +0000
Received: from mail-lj1-x234.google.com (mail-lj1-x234.google.com
 [2a00:1450:4864:20::234])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id e6f608cc-aefc-11ee-98ef-6d05b1d4d9a1;
 Tue, 09 Jan 2024 15:39:32 +0100 (CET)
Received: by mail-lj1-x234.google.com with SMTP id
 38308e7fff4ca-2cd1232a2c7so35155411fa.0
 for <xen-devel@lists.xenproject.org>; Tue, 09 Jan 2024 06:39:32 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 q4-20020a6bf204000000b007bbd0bb93f2sm535254ioh.21.2024.01.09.06.39.30
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 09 Jan 2024 06:39:31 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: e6f608cc-aefc-11ee-98ef-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1704811172; x=1705415972; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=7BfeE0WSFekNfWYs3J1x3hitUJUMPx40aPnP9S+VpFQ=;
        b=D1i8o6VMHC38jKy0mbRBti7V4MR/2JGvedqdLqo/spftsxr5LDYSYRl0X0p3TbXn14
         VWXUsOT3TEGzjS8z3Krcww6AJQJhgCRsp1ZhDnBO6wgup5QwjdwWIyl09W7tkSk/er9A
         3E2pBrd2Z91alImN6/PQojW4Jomv0KZiVEgGf2jx5jGt4tUySJKKJgpSPecvft4Uu2wd
         3moJ6kYvbqnewsU5O5lFm59wlr2t1TzByfcMjpOU/6E7Wvp+35Ga27jEB+UNqqpRnptZ
         kpxaKMYsxAKAfGPG1Qj6+pZzimRK2SQxiNLgBi76D8lD/ijb+dTFU5MnDmznTImzAK44
         KsPg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704811172; x=1705415972;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=7BfeE0WSFekNfWYs3J1x3hitUJUMPx40aPnP9S+VpFQ=;
        b=NX1OV9WMFRyaKC1fqbf94i3RVC4OYUt0sw6PbD5jyZ383Tli3/1rseavA86U8SlA/D
         jve3Qv1omlt0mfXDZqb5/HHnaAfS9yK4V72z0ZcuAvTin9EBE5NumNEBwZbPuyzhFwvX
         X3nbAvRL8fHDc5T6wchVix5h7FJzdyqq/cFT+EQOUpw6eXgso0eWZUb8Snk3watdV4MM
         KHKsBpzF6hECY3w9Oz30HaIM6+et3cHejqBqsscm9vJOsGgPm5BfcLM4QfqUYu+/WK3F
         DBxfxvQi6uFqvtzKwgfR3n/WkRf6/kJHlkS7cwt9Asm7LElRtni0WPziiFaL0EezJGP5
         XjTA==
X-Gm-Message-State: AOJu0YyNArdQo6EuaCU3UXAqZ/OdKEicog6Xn0Q+6Kztth/e2NDe/3xv
	f2vLjaLrIvFTpS+ek+WpqBhglQKQzgU9aJh/WOiXyEVDwg==
X-Google-Smtp-Source: AGHT+IErm26GPDZFAGpl4ZPKcW22UWjmwN6nr1FJ7VHy6ANAhifWqsC/1uiY0U9cDrppF6YK++rT3g==
X-Received: by 2002:a05:651c:19ac:b0:2cd:517a:21d4 with SMTP id bx44-20020a05651c19ac00b002cd517a21d4mr2089043ljb.103.1704811171970;
        Tue, 09 Jan 2024 06:39:31 -0800 (PST)
Message-ID: <83f266f1-c46b-4ace-9c29-b0b486f817a6@suse.com>
Date: Tue, 9 Jan 2024 15:39:28 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2 08/15] VMX: convert vmx_basic_msr
Content-Language: en-US
To: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: Wei Liu <wl@xen.org>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger.pau@citrix.com>, Kevin Tian <kevin.tian@intel.com>,
 Jun Nakajima <jun.nakajima@intel.com>,
 George Dunlap <george.dunlap@citrix.com>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
References: <b63b648f-02d0-4e52-a5e5-94ffd5666a14@suse.com>
 <d07fb86f-ef9c-4c2b-ba9a-f1e5c813d45d@suse.com>
 <e17d6e45-b03c-4906-9fb3-af4770aa3cf0@citrix.com>
 <beac1f7c-51cb-47a9-8e96-d09cb3ea6ab7@suse.com>
 <04992603-cb10-43ff-9eb3-b8f8f1dc765c@citrix.com>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <04992603-cb10-43ff-9eb3-b8f8f1dc765c@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 18.12.2023 18:29, Andrew Cooper wrote:
> On 27/11/2023 12:44 pm, Jan Beulich wrote:
>> On 24.11.2023 23:41, Andrew Cooper wrote:
>>> On 24/11/2023 8:41 am, Jan Beulich wrote:
>>>> ... to a struct field, which is then going to be accompanied by other
>>>> capability/control data presently living in individual variables. As
>>>> this structure isn't supposed to be altered post-boot, put it in
>>>> .data.ro_after_init right away.
>>>>
>>>> Suggested-by: Roger Pau Monné <roger.pau@citrix.com>
>>>> Signed-off-by: Jan Beulich <jbeulich@suse.com>
>>> For (usable) nested virt, we're going to need the VMX MSRs, in their
>>> architectural form, in struct cpu_policy.  And just like CPUID features,
>>> I want it to end up with nice bitfields to use.
>>>
>>> Looking through the rest of this series, vmx_caps ends up almost in
>>> architectural form.
>>>
>>> Could I talk you into having a "struct vmx_msrs" (or similar - 'caps'
>>> doesn't feel quite right here) in the policy object, and also
>>> instantiating one instance of it for this purpose here?
>> I was actually wondering while doing the conversion. The main reason I
>> didn't go that route right away was that I wasn't really certain whether
>> what I'd put there would the really be the (largely) final shape it
>> wants to take there. (One thing you've likely noticed I didn't convert
>> is _vmx_misc_cap, which right now only exists as a local variable in
>> vmx_init_vmcs_config().)
>>
>>> AFAICT, it would only be a minor deviation to the latter half of this
>>> series, but it would be an excellent start to fixing nested virt - and
>>> getting this data in the policy really is the first task in getting the
>>> ball rolling on nested virt.
>> How much of a further change it would end up being (or where that change
>> would occur) depends on another aspect: When put in cpu-policy.h (and I
>> take it you mean the lib/ instance, not the asm/ one), it would seem
>> natural and perhaps even necessary to properly introduce bitfields for
>> each of the MSRs right away. That'll lead to a "raw" field as well. In
>> VMX code (mostly its cpu_has_* #define-s), I'd then either need to use
>> .raw (perhaps a little ugly here and there) or go with using the
>> individual bitfields right away (likely eliminating the need for many of
>> the constant #define-s), which increases the risk of inadvertent mistakes
>> (and their overlooking during review).
>>
>>> I don't mind about serialising/de-serialsing it - that still has a bit
>>> of userspace complexity to work out, and depends on some of the cleanup
>>> still needing a repost.
>>>
>>> If you don't want to take the added space in cpu_policy yet, how about
>>> having the declaration there and just forgo instantiating the subobject
>>> in the short term?
>> There's quite a bit of effectively dead space in the struct already; I
>> think I wouldn't mind instantiating the struct there right away. So long
>> as you're convinced it's going to be used there in not too distant a
>> future.
>>
>> But: If I go as far, why would I introduce a global instance of the new
>> struct? Wouldn't it then make more sense to use host_cpu_policy right
>> away? I probably would keep populating it in vmx_init_vmcs_config() to
>> limit churn for now, but consumers of the flags could then right away
>> use the host policy.
> 
> George has stated an intent to pick nested virt up imminently.  I'll
> have to defer to him on when this will actually start.
> 
> But, sorting out this data in the policies is the next step, whenever
> that occurs.
> 
> 
> If you fancy going all the way to use the raw/host policy then great,
> but I expect that would be a large amount of extra work, hence the
> suggestion to just use the "inner" struct in the short term.

Even the inner struct plan falls apart pretty quickly (or grows what
needs doing by too much for my taste, in the context right here):
While for basic_msr this works, and it would apparently also work
for vmfunc and tertiary exec control (the latter is itself only part
of a yet to be reviewed / approved patch), it doesn't for all the
others with split 0-setting and 1-setting halves. This is because
what VMX code wants are the calculated values to put in the VMCS,
whereas imo in the policy we'd want to store both halves (and what
exactly wants to be in the host policy there isn't really clear to
me). As a result I can't create a single uniform structure properly
serving both purposes. Nor could I have VMX code use the host
policy for most of its capability checks.

Thought / ideas?

Jan

> Conversion to bitfields would want to be separate patch anyway, at which
> point an A/B compile can confirm whether there was no resulting change.
> 
> I'm happy if you want to do all of this, but it's a lot of work, and
> simply having the data in plain architectural uint64_t in the host
> policy is something that I thought would be a very minor change to your
> current series, but with a useful step towards nested virt.
> 
> One open question, before we get too far into this, is still whether to
> express half of these as MSR-features like ARCH_CAPS.  Linux does, and
> there is a very complex set of dependencies between certain properties,
> although I have a sneaking suspicion that the dependency logic will
> needed at runtime as the L1 hypervisor changes the various controls.
> 
> ~Andrew



From xen-devel-bounces@lists.xenproject.org Tue Jan 09 14:55:05 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 09 Jan 2024 14:55:05 +0000
Received: from list by lists.xenproject.org with outflank-mailman.664679.1034757 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNDV9-0004EG-U3; Tue, 09 Jan 2024 14:54:47 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 664679.1034757; Tue, 09 Jan 2024 14:54:47 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNDV9-0004E9-QI; Tue, 09 Jan 2024 14:54:47 +0000
Received: by outflank-mailman (input) for mailman id 664679;
 Tue, 09 Jan 2024 14:54:47 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=/xjK=IT=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1rNDV9-000451-3r
 for xen-devel@lists.xenproject.org; Tue, 09 Jan 2024 14:54:47 +0000
Received: from mail-wr1-x430.google.com (mail-wr1-x430.google.com
 [2a00:1450:4864:20::430])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 074e9375-aeff-11ee-98ef-6d05b1d4d9a1;
 Tue, 09 Jan 2024 15:54:46 +0100 (CET)
Received: by mail-wr1-x430.google.com with SMTP id
 ffacd0b85a97d-3374c693f92so2476174f8f.1
 for <xen-devel@lists.xenproject.org>; Tue, 09 Jan 2024 06:54:45 -0800 (PST)
Received: from [10.80.67.30] (default-46-102-197-194.interdsl.co.uk.
 [46.102.197.194]) by smtp.gmail.com with ESMTPSA id
 je4-20020a05600c1f8400b0040e38b7cfdasm15202326wmb.4.2024.01.09.06.54.44
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 09 Jan 2024 06:54:45 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 074e9375-aeff-11ee-98ef-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1704812085; x=1705416885; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=4zUxdBr5grWnHlsYsRvUHBI0zDSbY7yuz2MFDS6W2BY=;
        b=lC4F1L/yZGHQsMu1zz48bzMl35TVE/rVY6pB2cicGnWkzzhCFCsS6Xxu8iV00Svfml
         XiTfMYIYj49fPco58eoH2whH6VCiaDpNV6TvZiEuaJ4z3bpBmcLcOGGs1huif5FFn2EE
         S1aA+NIkjbeIbfr7LQxc39khROrM/oMWrBpf0=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704812085; x=1705416885;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=4zUxdBr5grWnHlsYsRvUHBI0zDSbY7yuz2MFDS6W2BY=;
        b=mIF7IVx7Xz1cZ4x0frLHei+3kRGwP1Am4HONfua0/F6F3uLie6rX0x9MhFCtBfydVv
         hJsWNrMDc/dFIUfa4Y4p8YQbUhlnV5u/Opd1Gt85F5MLJRcqPnaRbAymoCyuW9C3K0id
         kjmKyEI0nLGr5yAoFLGimHvOahQkrXWD4mpZRlo2Rpd3xKjcfmlU/EpnSGsgZ94gYh4S
         JKP1E9yB1a7sgvJxzAtGeiGuWHAtqNzA+dM6JnInFNNqoxMLQBosdWKKGwvkvqO7Fibu
         NOGB51nYVfcPBX4nV8bJHMhxZu7yqr0O49SnUMbMIDnkB6ctKCpTGGTsaXXtCQ5JwFnR
         hK3w==
X-Gm-Message-State: AOJu0YyF7Uo5kyhfRi3ZcCPQLnXGiNhtOVCxKUAbJWYMrAm0z4If+2/9
	RBUIj1AOXJeKHMuZ22HjQAqqCNmWf8E81A==
X-Google-Smtp-Source: AGHT+IFHZ/73ex6nB6+OAk9zHcLTjdi/YlM7jsGX0RUqWHABHJvyywFpuRVD3JklyxBxzflof79YVw==
X-Received: by 2002:a5d:4f83:0:b0:336:67c9:1d9e with SMTP id d3-20020a5d4f83000000b0033667c91d9emr761653wru.79.1704812085313;
        Tue, 09 Jan 2024 06:54:45 -0800 (PST)
Message-ID: <3af7e3a7-c76d-4784-a215-06510171c66c@citrix.com>
Date: Tue, 9 Jan 2024 14:54:44 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2 08/15] VMX: convert vmx_basic_msr
Content-Language: en-GB
To: Jan Beulich <jbeulich@suse.com>
Cc: Wei Liu <wl@xen.org>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger.pau@citrix.com>, Kevin Tian <kevin.tian@intel.com>,
 Jun Nakajima <jun.nakajima@intel.com>,
 George Dunlap <george.dunlap@citrix.com>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
References: <b63b648f-02d0-4e52-a5e5-94ffd5666a14@suse.com>
 <d07fb86f-ef9c-4c2b-ba9a-f1e5c813d45d@suse.com>
 <e17d6e45-b03c-4906-9fb3-af4770aa3cf0@citrix.com>
 <beac1f7c-51cb-47a9-8e96-d09cb3ea6ab7@suse.com>
 <04992603-cb10-43ff-9eb3-b8f8f1dc765c@citrix.com>
 <83f266f1-c46b-4ace-9c29-b0b486f817a6@suse.com>
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 xsFNBFLhNn8BEADVhE+Hb8i0GV6mihnnr/uiQQdPF8kUoFzCOPXkf7jQ5sLYeJa0cQi6Penp
 VtiFYznTairnVsN5J+ujSTIb+OlMSJUWV4opS7WVNnxHbFTPYZVQ3erv7NKc2iVizCRZ2Kxn
 srM1oPXWRic8BIAdYOKOloF2300SL/bIpeD+x7h3w9B/qez7nOin5NzkxgFoaUeIal12pXSR
 Q354FKFoy6Vh96gc4VRqte3jw8mPuJQpfws+Pb+swvSf/i1q1+1I4jsRQQh2m6OTADHIqg2E
 ofTYAEh7R5HfPx0EXoEDMdRjOeKn8+vvkAwhviWXTHlG3R1QkbE5M/oywnZ83udJmi+lxjJ5
 YhQ5IzomvJ16H0Bq+TLyVLO/VRksp1VR9HxCzItLNCS8PdpYYz5TC204ViycobYU65WMpzWe
 LFAGn8jSS25XIpqv0Y9k87dLbctKKA14Ifw2kq5OIVu2FuX+3i446JOa2vpCI9GcjCzi3oHV
 e00bzYiHMIl0FICrNJU0Kjho8pdo0m2uxkn6SYEpogAy9pnatUlO+erL4LqFUO7GXSdBRbw5
 gNt25XTLdSFuZtMxkY3tq8MFss5QnjhehCVPEpE6y9ZjI4XB8ad1G4oBHVGK5LMsvg22PfMJ
 ISWFSHoF/B5+lHkCKWkFxZ0gZn33ju5n6/FOdEx4B8cMJt+cWwARAQABzSlBbmRyZXcgQ29v
 cGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPsLBegQTAQgAJAIbAwULCQgHAwUVCgkI
 CwUWAgMBAAIeAQIXgAUCWKD95wIZAQAKCRBlw/kGpdefoHbdD/9AIoR3k6fKl+RFiFpyAhvO
 59ttDFI7nIAnlYngev2XUR3acFElJATHSDO0ju+hqWqAb8kVijXLops0gOfqt3VPZq9cuHlh
 IMDquatGLzAadfFx2eQYIYT+FYuMoPZy/aTUazmJIDVxP7L383grjIkn+7tAv+qeDfE+txL4
 SAm1UHNvmdfgL2/lcmL3xRh7sub3nJilM93RWX1Pe5LBSDXO45uzCGEdst6uSlzYR/MEr+5Z
 JQQ32JV64zwvf/aKaagSQSQMYNX9JFgfZ3TKWC1KJQbX5ssoX/5hNLqxMcZV3TN7kU8I3kjK
 mPec9+1nECOjjJSO/h4P0sBZyIUGfguwzhEeGf4sMCuSEM4xjCnwiBwftR17sr0spYcOpqET
 ZGcAmyYcNjy6CYadNCnfR40vhhWuCfNCBzWnUW0lFoo12wb0YnzoOLjvfD6OL3JjIUJNOmJy
 RCsJ5IA/Iz33RhSVRmROu+TztwuThClw63g7+hoyewv7BemKyuU6FTVhjjW+XUWmS/FzknSi
 dAG+insr0746cTPpSkGl3KAXeWDGJzve7/SBBfyznWCMGaf8E2P1oOdIZRxHgWj0zNr1+ooF
 /PzgLPiCI4OMUttTlEKChgbUTQ+5o0P080JojqfXwbPAyumbaYcQNiH1/xYbJdOFSiBv9rpt
 TQTBLzDKXok86M7BTQRS4TZ/ARAAkgqudHsp+hd82UVkvgnlqZjzz2vyrYfz7bkPtXaGb9H4
 Rfo7mQsEQavEBdWWjbga6eMnDqtu+FC+qeTGYebToxEyp2lKDSoAsvt8w82tIlP/EbmRbDVn
 7bhjBlfRcFjVYw8uVDPptT0TV47vpoCVkTwcyb6OltJrvg/QzV9f07DJswuda1JH3/qvYu0p
 vjPnYvCq4NsqY2XSdAJ02HrdYPFtNyPEntu1n1KK+gJrstjtw7KsZ4ygXYrsm/oCBiVW/OgU
 g/XIlGErkrxe4vQvJyVwg6YH653YTX5hLLUEL1NS4TCo47RP+wi6y+TnuAL36UtK/uFyEuPy
 wwrDVcC4cIFhYSfsO0BumEI65yu7a8aHbGfq2lW251UcoU48Z27ZUUZd2Dr6O/n8poQHbaTd
 6bJJSjzGGHZVbRP9UQ3lkmkmc0+XCHmj5WhwNNYjgbbmML7y0fsJT5RgvefAIFfHBg7fTY/i
 kBEimoUsTEQz+N4hbKwo1hULfVxDJStE4sbPhjbsPCrlXf6W9CxSyQ0qmZ2bXsLQYRj2xqd1
 bpA+1o1j2N4/au1R/uSiUFjewJdT/LX1EklKDcQwpk06Af/N7VZtSfEJeRV04unbsKVXWZAk
 uAJyDDKN99ziC0Wz5kcPyVD1HNf8bgaqGDzrv3TfYjwqayRFcMf7xJaL9xXedMcAEQEAAcLB
 XwQYAQgACQUCUuE2fwIbDAAKCRBlw/kGpdefoG4XEACD1Qf/er8EA7g23HMxYWd3FXHThrVQ
 HgiGdk5Yh632vjOm9L4sd/GCEACVQKjsu98e8o3ysitFlznEns5EAAXEbITrgKWXDDUWGYxd
 pnjj2u+GkVdsOAGk0kxczX6s+VRBhpbBI2PWnOsRJgU2n10PZ3mZD4Xu9kU2IXYmuW+e5KCA
 vTArRUdCrAtIa1k01sPipPPw6dfxx2e5asy21YOytzxuWFfJTGnVxZZSCyLUO83sh6OZhJkk
 b9rxL9wPmpN/t2IPaEKoAc0FTQZS36wAMOXkBh24PQ9gaLJvfPKpNzGD8XWR5HHF0NLIJhgg
 4ZlEXQ2fVp3XrtocHqhu4UZR4koCijgB8sB7Tb0GCpwK+C4UePdFLfhKyRdSXuvY3AHJd4CP
 4JzW0Bzq/WXY3XMOzUTYApGQpnUpdOmuQSfpV9MQO+/jo7r6yPbxT7CwRS5dcQPzUiuHLK9i
 nvjREdh84qycnx0/6dDroYhp0DFv4udxuAvt1h4wGwTPRQZerSm4xaYegEFusyhbZrI0U9tJ
 B8WrhBLXDiYlyJT6zOV2yZFuW47VrLsjYnHwn27hmxTC/7tvG3euCklmkn9Sl9IAKFu29RSo
 d5bD8kMSCYsTqtTfT6W4A3qHGvIDta3ptLYpIAOD2sY3GYq2nf3Bbzx81wZK14JdDDHUX2Rs
 6+ahAA==
In-Reply-To: <83f266f1-c46b-4ace-9c29-b0b486f817a6@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 09/01/2024 2:39 pm, Jan Beulich wrote:
> On 18.12.2023 18:29, Andrew Cooper wrote:
>> On 27/11/2023 12:44 pm, Jan Beulich wrote:
>>> On 24.11.2023 23:41, Andrew Cooper wrote:
>>>> On 24/11/2023 8:41 am, Jan Beulich wrote:
>>>>> ... to a struct field, which is then going to be accompanied by other
>>>>> capability/control data presently living in individual variables. As
>>>>> this structure isn't supposed to be altered post-boot, put it in
>>>>> .data.ro_after_init right away.
>>>>>
>>>>> Suggested-by: Roger Pau Monné <roger.pau@citrix.com>
>>>>> Signed-off-by: Jan Beulich <jbeulich@suse.com>
>>>> For (usable) nested virt, we're going to need the VMX MSRs, in their
>>>> architectural form, in struct cpu_policy.  And just like CPUID features,
>>>> I want it to end up with nice bitfields to use.
>>>>
>>>> Looking through the rest of this series, vmx_caps ends up almost in
>>>> architectural form.
>>>>
>>>> Could I talk you into having a "struct vmx_msrs" (or similar - 'caps'
>>>> doesn't feel quite right here) in the policy object, and also
>>>> instantiating one instance of it for this purpose here?
>>> I was actually wondering while doing the conversion. The main reason I
>>> didn't go that route right away was that I wasn't really certain whether
>>> what I'd put there would the really be the (largely) final shape it
>>> wants to take there. (One thing you've likely noticed I didn't convert
>>> is _vmx_misc_cap, which right now only exists as a local variable in
>>> vmx_init_vmcs_config().)
>>>
>>>> AFAICT, it would only be a minor deviation to the latter half of this
>>>> series, but it would be an excellent start to fixing nested virt - and
>>>> getting this data in the policy really is the first task in getting the
>>>> ball rolling on nested virt.
>>> How much of a further change it would end up being (or where that change
>>> would occur) depends on another aspect: When put in cpu-policy.h (and I
>>> take it you mean the lib/ instance, not the asm/ one), it would seem
>>> natural and perhaps even necessary to properly introduce bitfields for
>>> each of the MSRs right away. That'll lead to a "raw" field as well. In
>>> VMX code (mostly its cpu_has_* #define-s), I'd then either need to use
>>> .raw (perhaps a little ugly here and there) or go with using the
>>> individual bitfields right away (likely eliminating the need for many of
>>> the constant #define-s), which increases the risk of inadvertent mistakes
>>> (and their overlooking during review).
>>>
>>>> I don't mind about serialising/de-serialsing it - that still has a bit
>>>> of userspace complexity to work out, and depends on some of the cleanup
>>>> still needing a repost.
>>>>
>>>> If you don't want to take the added space in cpu_policy yet, how about
>>>> having the declaration there and just forgo instantiating the subobject
>>>> in the short term?
>>> There's quite a bit of effectively dead space in the struct already; I
>>> think I wouldn't mind instantiating the struct there right away. So long
>>> as you're convinced it's going to be used there in not too distant a
>>> future.
>>>
>>> But: If I go as far, why would I introduce a global instance of the new
>>> struct? Wouldn't it then make more sense to use host_cpu_policy right
>>> away? I probably would keep populating it in vmx_init_vmcs_config() to
>>> limit churn for now, but consumers of the flags could then right away
>>> use the host policy.
>> George has stated an intent to pick nested virt up imminently.  I'll
>> have to defer to him on when this will actually start.
>>
>> But, sorting out this data in the policies is the next step, whenever
>> that occurs.
>>
>>
>> If you fancy going all the way to use the raw/host policy then great,
>> but I expect that would be a large amount of extra work, hence the
>> suggestion to just use the "inner" struct in the short term.
> Even the inner struct plan falls apart pretty quickly (or grows what
> needs doing by too much for my taste, in the context right here):
> While for basic_msr this works, and it would apparently also work
> for vmfunc and tertiary exec control (the latter is itself only part
> of a yet to be reviewed / approved patch), it doesn't for all the
> others with split 0-setting and 1-setting halves. This is because
> what VMX code wants are the calculated values to put in the VMCS,
> whereas imo in the policy we'd want to store both halves (and what
> exactly wants to be in the host policy there isn't really clear to
> me). As a result I can't create a single uniform structure properly
> serving both purposes. Nor could I have VMX code use the host
> policy for most of its capability checks.
>
> Thought / ideas?

If it's not actually trivial, then don't worry.

The policy does need to hold the architectural representation.  The
in-use settings need storing per-vCPU because they do (or need to me
made to) vary based on the configuration of the VM, and because they're
needed on every virtual vmentry when re-calculating VMCS02.

~Andrew


From xen-devel-bounces@lists.xenproject.org Tue Jan 09 15:24:26 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 09 Jan 2024 15:24:26 +0000
Received: from list by lists.xenproject.org with outflank-mailman.664689.1034767 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNDxi-00049V-5z; Tue, 09 Jan 2024 15:24:18 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 664689.1034767; Tue, 09 Jan 2024 15:24:18 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNDxi-00049O-2f; Tue, 09 Jan 2024 15:24:18 +0000
Received: by outflank-mailman (input) for mailman id 664689;
 Tue, 09 Jan 2024 15:24:17 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=ONpl=IT=amd.com=Stewart.Hildebrand@srs-se1.protection.inumbo.net>)
 id 1rNDxh-00049H-5Z
 for xen-devel@lists.xenproject.org; Tue, 09 Jan 2024 15:24:17 +0000
Received: from NAM04-MW2-obe.outbound.protection.outlook.com
 (mail-mw2nam04on2061d.outbound.protection.outlook.com
 [2a01:111:f400:7e8c::61d])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 2549019d-af03-11ee-98ef-6d05b1d4d9a1;
 Tue, 09 Jan 2024 16:24:15 +0100 (CET)
Received: from BYAPR05CA0090.namprd05.prod.outlook.com (2603:10b6:a03:e0::31)
 by MN0PR12MB6151.namprd12.prod.outlook.com (2603:10b6:208:3c5::13)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7159.23; Tue, 9 Jan
 2024 15:24:09 +0000
Received: from SJ1PEPF00001CDF.namprd05.prod.outlook.com
 (2603:10b6:a03:e0:cafe::db) by BYAPR05CA0090.outlook.office365.com
 (2603:10b6:a03:e0::31) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7181.15 via Frontend
 Transport; Tue, 9 Jan 2024 15:24:08 +0000
Received: from SATLEXMB04.amd.com (165.204.84.17) by
 SJ1PEPF00001CDF.mail.protection.outlook.com (10.167.242.7) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.7181.14 via Frontend Transport; Tue, 9 Jan 2024 15:24:08 +0000
Received: from SATLEXMB03.amd.com (10.181.40.144) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.34; Tue, 9 Jan
 2024 09:24:07 -0600
Received: from [172.23.76.218] (10.180.168.240) by SATLEXMB03.amd.com
 (10.181.40.144) with Microsoft SMTP Server id 15.1.2507.34 via Frontend
 Transport; Tue, 9 Jan 2024 09:24:06 -0600
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 2549019d-af03-11ee-98ef-6d05b1d4d9a1
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=HxxFuNEBkHDBaLE6eA+Ndxqe7neuvfTsPUGDgL7vx0H0HKPJTY/HvaUPTSEcRdDPGA8+r7nqBqOtrhx55tPYwzD3ZN13Fso3gPB5wNaaSPuF8yWnLgmeHwKZBp73R21/d9+n0eVcAxeDGbDS4drYBfiNAYdEAYsZNxa3HtNj0REZiV02lHrIzppXpwjZHVmLGImjK7qaPPfEsM8IRyqXAhpoT08LwNhz8CSPWNJDvOeoN3NhIVLmwqVkUin37yMZzgLjSYMVjHXLl3OpaFLst9ozOxUfcM49BkJGJ1lPhPy8Y1bhVtn6J2VfBaX//xS5SulHAjmWdu9WmYDUioKNlg==
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=u+HMJXyXGN7Yzen/DWfjQa/KINyran/Sq/l+V+dwkPA=;
 b=ijfKQCBoMqPW4SrWO6roZoZn2eM+CQOkp989S4J3yGE2J9XhC/QjuJKqBeaAQMuIus36BvQlYPHBRSIlNpcwinIzhPGarGXhS66UlnaTubROBHfxmDlMaFDmRCL3Kkyiclym1M+x7DJQI339rmVQO82mVz10gKPjNZjjqdSFNjY+cCpD/5F9Q78kiBKM4lLdMRYmZNpQcl8/7YZ3mPUcPRWzROPSXKWzshG+LnlaNrrRpLeHqC18i3puAiJHoWHE6fRjWROzkBK8Riwcuii/CDvHpus7h+JIqzTdu8JAvo6ullXOgUjHKpm3QRVY7xP0hW45ieZ0FLZuoGU6OW4Qww==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=lists.xenproject.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)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=u+HMJXyXGN7Yzen/DWfjQa/KINyran/Sq/l+V+dwkPA=;
 b=IwhcvrPG5OirW0fhCNwTpA9KkJSNxoy7JDwlxE2rQUeJIw8qCVFKpcMJ4I8IvyGcU4oamKnOJydx/5YH8K5L9iahdQVvCdDJXpLQhK5NQ6x3O6X/0wzgUEpC7yRdG3M9BboSgBVgn6qkEnlgvhz2ru355BXyfGKndfkotaREm6Y=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C
Message-ID: <70add06b-59c6-469a-8570-f7a6f5bc15fb@amd.com>
Date: Tue, 9 Jan 2024 10:24:05 -0500
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [RFC XEN PATCH v4 1/5] xen/vpci: Clear all vpci status of device
Content-Language: en-US
To: Jiqian Chen <Jiqian.Chen@amd.com>, <xen-devel@lists.xenproject.org>
CC: Jan Beulich <jbeulich@suse.com>, Andrew Cooper
	<andrew.cooper3@citrix.com>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
	<roger.pau@citrix.com>, Wei Liu <wl@xen.org>, George Dunlap
	<george.dunlap@citrix.com>, Julien Grall <julien@xen.org>, Stefano Stabellini
	<sstabellini@kernel.org>, Anthony PERARD <anthony.perard@citrix.com>,
	"Juergen Gross" <jgross@suse.com>, Huang Rui <Ray.Huang@amd.com>
References: <20240105070920.350113-1-Jiqian.Chen@amd.com>
 <20240105070920.350113-2-Jiqian.Chen@amd.com>
From: Stewart Hildebrand <stewart.hildebrand@amd.com>
In-Reply-To: <20240105070920.350113-2-Jiqian.Chen@amd.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 7bit
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: SJ1PEPF00001CDF:EE_|MN0PR12MB6151:EE_
X-MS-Office365-Filtering-Correlation-Id: e45a136e-d26d-4058-f076-08dc1127060a
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam: BCL:0;
X-Microsoft-Antispam-Message-Info:
	xgklTidAKq6Qhv/pFfq8UVhkqZZgJDYZHxkw5+DrOVTB7pSRjcWDXBCbYOWCDAFvxX0ckPoe+HXklcpuMeExuDYZ/3sOC4syjxt8xtTDPA3IcxKQV27w1LnJhgh/XQAPR6fV4uKtHG2hmutlmxvneYqZqGfZ7IO4X8/VWr6HEBP2XlDuFsSmvJbAica1BrnuTbCj97ei1NtB+s9i7DnM6E4Lv0CaGLlHuV1pS+HJ08lXXAu8DseL8i+89leCbxPHOSPOj9gRiZpxXPfFhjE8yCyx720uB173Vt+ZNSPGrsAQE10gggZwb328dbf2wHnKRRBq8oLIU7e0skwF9fsBNuwCmyDl8NYKyrgyXPJ3lu0B6RFCaPbsJqnEB5fGD26+MN0wK41Nqqun5f07Ao2zJzpsmwN7GNwsD2v1+lijWvexhb74CM3XJnDZy6G5PfCjOQe72nr9SKo8IBOIO35W6YDTm1FGlayEYOFzCR+BLiuRPEh4KOYoPR2CGue2B1zR6u1h5E1e1x9Gr9KYUDe6NtvjVmU0WVH6YL84PKD/pmjfDBBBxAedvkV6woe1s7Z/v15lF3qqgVsutmVyxGC35DxZc3lqfFUOn0iZq/wmyOlI3YRb48W5rDBkEBDOhqD+lToLnnX7ZPq5uNFj9l+flWV+If0WMB+07bFqc2GXBynOFQVT3SxdjKHpn3e61YvquvfNlUXZgYr0R1Ya0XMu94GueXd8wJRKUjwBTzmILDKaasey+SES9Ii97KHzOSDJhlrMO5NU8+io6mLMu00czmxD7lWY5S/Wiy0tQ413rP0uH1gjfLEBHvLAMEF3QcyQ
X-Forefront-Antispam-Report:
	CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230031)(4636009)(376002)(396003)(136003)(346002)(39860400002)(230922051799003)(1800799012)(82310400011)(64100799003)(186009)(451199024)(36840700001)(40470700004)(46966006)(2616005)(26005)(426003)(336012)(53546011)(478600001)(5660300002)(83380400001)(41300700001)(2906002)(36860700001)(16576012)(44832011)(70206006)(4326008)(70586007)(54906003)(110136005)(8676002)(8936002)(47076005)(316002)(82740400003)(356005)(86362001)(31696002)(36756003)(81166007)(7416002)(31686004)(40460700003)(40480700001)(36900700001)(43740500002);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Jan 2024 15:24:08.1451
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: e45a136e-d26d-4058-f076-08dc1127060a
X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com]
X-MS-Exchange-CrossTenant-AuthSource:
	SJ1PEPF00001CDF.namprd05.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN0PR12MB6151

On 1/5/24 02:09, Jiqian Chen wrote:
> diff --git a/xen/drivers/pci/physdev.c b/xen/drivers/pci/physdev.c
> index 42db3e6d133c..552ccbf747cb 100644
> --- a/xen/drivers/pci/physdev.c
> +++ b/xen/drivers/pci/physdev.c
> @@ -67,6 +68,39 @@ ret_t pci_physdev_op(int cmd, XEN_GUEST_HANDLE_PARAM(void) arg)
>          break;
>      }
>  
> +    case PHYSDEVOP_pci_device_state_reset: {
> +        struct physdev_pci_device dev;
> +        struct pci_dev *pdev;
> +        pci_sbdf_t sbdf;
> +
> +        if ( !is_pci_passthrough_enabled() )
> +            return -EOPNOTSUPP;
> +
> +        ret = -EFAULT;
> +        if ( copy_from_guest(&dev, arg, 1) != 0 )
> +            break;
> +        sbdf = PCI_SBDF(dev.seg, dev.bus, dev.devfn);
> +
> +        ret = xsm_resource_setup_pci(XSM_PRIV, sbdf.sbdf);
> +        if ( ret )
> +            break;
> +
> +        pcidevs_lock();
> +        pdev = pci_get_pdev(NULL, sbdf);
> +        if ( !pdev )
> +        {
> +            pcidevs_unlock();
> +            ret = -ENODEV;
> +            break;
> +        }
> +

        write_lock(&pdev->domain->pci_lock);

> +        ret = vpci_reset_device_state(pdev);

        write_unlock(&pdev->domain->pci_lock);

> +        pcidevs_unlock();
> +        if ( ret )
> +            printk(XENLOG_ERR "%pp: failed to reset PCI device state\n", &sbdf);
> +        break;
> +    }
> +
>      default:
>          ret = -ENOSYS;
>          break;
> diff --git a/xen/drivers/vpci/vpci.c b/xen/drivers/vpci/vpci.c
> index 72ef277c4f8e..3c64cb10ccbb 100644
> --- a/xen/drivers/vpci/vpci.c
> +++ b/xen/drivers/vpci/vpci.c
> @@ -107,6 +107,15 @@ int vpci_add_handlers(struct pci_dev *pdev)
>  
>      return rc;
>  }
> +
> +int vpci_reset_device_state(struct pci_dev *pdev)
> +{
> +    ASSERT(pcidevs_locked());

    ASSERT(rw_is_write_locked(&pdev->domain->pci_lock));

> +
> +    vpci_remove_device(pdev);
> +    return vpci_add_handlers(pdev);
> +}
> +
>  #endif /* __XEN__ */
>  
>  static int vpci_register_cmp(const struct vpci_register *r1,


From xen-devel-bounces@lists.xenproject.org Tue Jan 09 15:32:03 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 09 Jan 2024 15:32:03 +0000
Received: from list by lists.xenproject.org with outflank-mailman.664694.1034777 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNE58-00075v-Tt; Tue, 09 Jan 2024 15:31:58 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 664694.1034777; Tue, 09 Jan 2024 15:31:58 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNE58-00075o-RE; Tue, 09 Jan 2024 15:31:58 +0000
Received: by outflank-mailman (input) for mailman id 664694;
 Tue, 09 Jan 2024 15:31:57 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>) id 1rNE57-00075i-G8
 for xen-devel@lists.xenproject.org; Tue, 09 Jan 2024 15:31:57 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rNE57-0002dm-Aa; Tue, 09 Jan 2024 15:31:57 +0000
Received: from [15.248.2.151] (helo=[10.24.67.35])
 by xenbits.xenproject.org with esmtpsa
 (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rNE57-0000Y4-4p; Tue, 09 Jan 2024 15:31:57 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
	s=20200302mail; h=Content-Transfer-Encoding:Content-Type:In-Reply-To:From:
	References:Cc:To:Subject:MIME-Version:Date:Message-ID;
	bh=SuAblUljxg3JbFXhjmgVvNf4F0yHwRVvrKNh87/n0zE=; b=lBr8/bbeJoCf0Msxk3TUP5LrO9
	6PCtDi7Wimbm+LYs7thDyA69HDNPvDfwpql6lil2RDbhhpI67hx9ygjb1Vn6Eiemmr/NeILXP3uGa
	Sql+E88a0KyDkE8w757t50bM4+BV0rbNw3pfQk75BX+X0PElggl9XEph+5xomstCQrnQ=;
Message-ID: <e579994b-80ff-42db-bf57-6c6068fca902@xen.org>
Date: Tue, 9 Jan 2024 15:31:55 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH for-4.18 v1] xen/common: Don't dereference overlay_node
 after checking that it is NULL
Content-Language: en-GB
To: Javi Merino <javi.merino@cloud.com>, xen-devel@lists.xenproject.org
Cc: Vikram Garhwal <vikram.garhwal@amd.com>,
 Stefano Stabellini <sstabellini@kernel.org>
References: <6b2db92de764b6031647926d27cb14dd455eff7d.1704809355.git.javi.merino@cloud.com>
From: Julien Grall <julien@xen.org>
In-Reply-To: <6b2db92de764b6031647926d27cb14dd455eff7d.1704809355.git.javi.merino@cloud.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

Hi Javi,

Title: Any reason this is titled for-4.18? Shouldn't this patch also be 
merged in staging?

On 09/01/2024 14:19, Javi Merino wrote:
> In remove_nodes(), overlay_node is dereferenced when printing the
> error message even though it is known to be NULLL.  Fix the error

Typo: s/NULLL/NULL/

This can be fixed on commit if there is nothing else.

> message to avoid dereferencing a NULL pointer.
> 
> The semantic patch that spots this code is available in
> 
> https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/scripts/coccinelle/null/deref_null.cocci?id=1f874787ed9a2d78ed59cb21d0d90ac0178eceb0

Good catch and glad to see that coccinelle can work on Xen. I am looking 
forward for more work in that area :).

> 
> Fixes: 7e5c4a8b86f1 ("xen/arm: Implement device tree node removal functionalities")
> Signed-off-by: Javi Merino <javi.merino@cloud.com>
c> ---
> CC: Vikram Garhwal <vikram.garhwal@amd.com>
> 
> Vikram, I didn't know what to put in the error message.  Feel free to
> suggest something more appropriate than "Device not present in the
> tree".

More questions for Vikram, looking at the code, it is not 100% clear in 
which condition overlay_node could be NULL. Is this a programming error? 
if so, maybe this should be an ASSERT_UNREACHABLE() (could be added 
separately) and it would be fine to print nothing.

Cheers,

-- 
Julien Grall


From xen-devel-bounces@lists.xenproject.org Tue Jan 09 15:38:46 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 09 Jan 2024 15:38:46 +0000
Received: from list by lists.xenproject.org with outflank-mailman.664699.1034797 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNEBf-0008HW-P3; Tue, 09 Jan 2024 15:38:43 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 664699.1034797; Tue, 09 Jan 2024 15:38:43 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNEBf-0008HN-Lt; Tue, 09 Jan 2024 15:38:43 +0000
Received: by outflank-mailman (input) for mailman id 664699;
 Tue, 09 Jan 2024 15:38:42 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=C4Q/=IT=cloud.com=alejandro.vallejo@srs-se1.protection.inumbo.net>)
 id 1rNEBe-00081L-1O
 for xen-devel@lists.xenproject.org; Tue, 09 Jan 2024 15:38:42 +0000
Received: from mail-wm1-x335.google.com (mail-wm1-x335.google.com
 [2a00:1450:4864:20::335])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 29fdd3c8-af05-11ee-98ef-6d05b1d4d9a1;
 Tue, 09 Jan 2024 16:38:41 +0100 (CET)
Received: by mail-wm1-x335.google.com with SMTP id
 5b1f17b1804b1-40d5336986cso40412885e9.1
 for <xen-devel@lists.xenproject.org>; Tue, 09 Jan 2024 07:38:41 -0800 (PST)
Received: from EMEAENGAAD19049.citrite.net
 (default-46-102-197-194.interdsl.co.uk. [46.102.197.194])
 by smtp.gmail.com with ESMTPSA id
 fi3-20020a170906da0300b00a2adb417051sm1153685ejb.216.2024.01.09.07.38.39
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 09 Jan 2024 07:38:39 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 29fdd3c8-af05-11ee-98ef-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1704814720; x=1705419520; darn=lists.xenproject.org;
        h=content-transfer-encoding:mime-version:references:in-reply-to
         :message-id:date:subject:cc:to:from:from:to:cc:subject:date
         :message-id:reply-to;
        bh=+00zpDD6E1F2vymnDKj104s79dZsxIp75zMuYgp0YY0=;
        b=gr2qTOtuZqyPVqd6P3vBDX4ulp7+VgwR10D9Vo9Lclgc+kyeZ12vC+3pjGkjMXcwQf
         855q0K1Vig+UtngUpzKjJBygCBP9OW5xfuxT9t3y7M6unGs39QG1Coi6NsYiC25oBItS
         Xz0wMbRDnB8vJMyspBzIrxPtF5PKgNJlNkGRs=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704814720; x=1705419520;
        h=content-transfer-encoding:mime-version:references:in-reply-to
         :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to;
        bh=+00zpDD6E1F2vymnDKj104s79dZsxIp75zMuYgp0YY0=;
        b=gR+7dMd7RzypzrKvYxIOO/bs8aotn/J9iKs5rwTuZ6mFwzppgiaA0gnBm9n5Deh+CU
         SailEh5UFxxSZdCtAHzIlZ1Z8DfYDauKlZo2A1ipqZUiXc1FVMpm53BoFmA4+m/WRKEo
         K0GFKLZHVMqstXU9JJfknVtKqJm4RVTMdbov1DYo+9X0WdUS2cRLa+5sKXP6c839BogF
         z1GW7/02hL3eWLRgZtk/Z4LwlIr9FFPCfeJSLOxAqr3CsukgsQiSYVVtGoDqM8QXpex1
         No0gjVT2Kpbq8ThSF3xxCATvV+P16kKM2OxZPH8fCvcrQN3Dpgv7Zc5LE6gG7tEvs3TQ
         f2dw==
X-Gm-Message-State: AOJu0Yy8GjHOlmz9WFiHiZKLzIukuR1tjNSFRpVB3blYi0FPLU5+FKg3
	u/0Yh4jWnpW/uWGw2BJotrtra4JAe4JtnZZl7PqixfYoO0c=
X-Google-Smtp-Source: AGHT+IFMsroVWEpT8SgYSbgTDA+tq4Q7UFJVMCwsEySCtcDdTqRvpp+J6jABJErYFEZOm5SYRhPvRg==
X-Received: by 2002:a1c:7707:0:b0:40e:4921:5044 with SMTP id t7-20020a1c7707000000b0040e49215044mr1207878wmi.55.1704814720090;
        Tue, 09 Jan 2024 07:38:40 -0800 (PST)
From: Alejandro Vallejo <alejandro.vallejo@cloud.com>
To: Xen-devel <xen-devel@lists.xenproject.org>
Cc: Alejandro Vallejo <alejandro.vallejo@cloud.com>,
	Wei Liu <wl@xen.org>,
	Anthony PERARD <anthony.perard@citrix.com>,
	Juergen Gross <jgross@suse.com>,
	Jan Beulich <jbeulich@suse.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>
Subject: [PATCH 2/6] tools/xc: Add xc_cpu_policy to the public xenctrl.h header
Date: Tue,  9 Jan 2024 15:38:30 +0000
Message-Id: <20240109153834.4192-3-alejandro.vallejo@cloud.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20240109153834.4192-1-alejandro.vallejo@cloud.com>
References: <20240109153834.4192-1-alejandro.vallejo@cloud.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Move struct xc_cpu_policy data structure out of xg_private.h and into
the public xenguest.h so it can be used by libxl.

Signed-off-by: Alejandro Vallejo <alejandro.vallejo@cloud.com>
---
 tools/include/xenguest.h             |  8 +++++++-
 tools/libs/guest/xg_private.h        | 10 ----------
 xen/include/xen/lib/x86/cpu-policy.h |  5 +++++
 3 files changed, 12 insertions(+), 11 deletions(-)

diff --git a/tools/include/xenguest.h b/tools/include/xenguest.h
index e01f494b77..4e9078fdee 100644
--- a/tools/include/xenguest.h
+++ b/tools/include/xenguest.h
@@ -784,7 +784,13 @@ xen_pfn_t *xc_map_m2p(xc_interface *xch,
                       unsigned long *mfn0);
 
 #if defined(__i386__) || defined(__x86_64__)
-typedef struct xc_cpu_policy xc_cpu_policy_t;
+#include <xen/lib/x86/cpu-policy.h>
+
+typedef struct xc_cpu_policy {
+    struct cpu_policy policy;
+    xen_cpuid_leaf_t leaves[CPUID_MAX_SERIALISED_LEAVES];
+    xen_msr_entry_t msrs[MSR_MAX_SERIALISED_ENTRIES];
+} xc_cpu_policy_t;
 
 /* Create and free a xc_cpu_policy object. */
 xc_cpu_policy_t *xc_cpu_policy_init(void);
diff --git a/tools/libs/guest/xg_private.h b/tools/libs/guest/xg_private.h
index d73947094f..d1940f1ea4 100644
--- a/tools/libs/guest/xg_private.h
+++ b/tools/libs/guest/xg_private.h
@@ -170,14 +170,4 @@ int pin_table(xc_interface *xch, unsigned int type, unsigned long mfn,
 #define M2P_SIZE(_m)    ROUNDUP(((_m) * sizeof(xen_pfn_t)), M2P_SHIFT)
 #define M2P_CHUNKS(_m)  (M2P_SIZE((_m)) >> M2P_SHIFT)
 
-#if defined(__x86_64__) || defined(__i386__)
-#include <xen/lib/x86/cpu-policy.h>
-
-struct xc_cpu_policy {
-    struct cpu_policy policy;
-    xen_cpuid_leaf_t leaves[CPUID_MAX_SERIALISED_LEAVES];
-    xen_msr_entry_t msrs[MSR_MAX_SERIALISED_ENTRIES];
-};
-#endif /* x86 */
-
 #endif /* XG_PRIVATE_H */
diff --git a/xen/include/xen/lib/x86/cpu-policy.h b/xen/include/xen/lib/x86/cpu-policy.h
index 14724cedff..65f6335b32 100644
--- a/xen/include/xen/lib/x86/cpu-policy.h
+++ b/xen/include/xen/lib/x86/cpu-policy.h
@@ -85,6 +85,11 @@ unsigned int x86_cpuid_lookup_vendor(uint32_t ebx, uint32_t ecx, uint32_t edx);
  */
 const char *x86_cpuid_vendor_to_str(unsigned int vendor);
 
+#ifndef __XEN__
+/* Needed for MAX() */
+#include <xen-tools/common-macros.h>
+#endif /* __XEN__ */
+
 #define CPUID_GUEST_NR_BASIC      (0xdu + 1)
 #define CPUID_GUEST_NR_CACHE      (5u + 1)
 #define CPUID_GUEST_NR_FEAT       (2u + 1)
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Tue Jan 09 15:38:46 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 09 Jan 2024 15:38:46 +0000
Received: from list by lists.xenproject.org with outflank-mailman.664700.1034806 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNEBh-00004r-5X; Tue, 09 Jan 2024 15:38:45 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 664700.1034806; Tue, 09 Jan 2024 15:38:45 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNEBh-0008WQ-2b; Tue, 09 Jan 2024 15:38:45 +0000
Received: by outflank-mailman (input) for mailman id 664700;
 Tue, 09 Jan 2024 15:38:43 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=C4Q/=IT=cloud.com=alejandro.vallejo@srs-se1.protection.inumbo.net>)
 id 1rNEBf-00081L-PT
 for xen-devel@lists.xenproject.org; Tue, 09 Jan 2024 15:38:43 +0000
Received: from mail-ej1-x632.google.com (mail-ej1-x632.google.com
 [2a00:1450:4864:20::632])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 2b3888ba-af05-11ee-98ef-6d05b1d4d9a1;
 Tue, 09 Jan 2024 16:38:43 +0100 (CET)
Received: by mail-ej1-x632.google.com with SMTP id
 a640c23a62f3a-a28ab7ae504so297438766b.3
 for <xen-devel@lists.xenproject.org>; Tue, 09 Jan 2024 07:38:43 -0800 (PST)
Received: from EMEAENGAAD19049.citrite.net
 (default-46-102-197-194.interdsl.co.uk. [46.102.197.194])
 by smtp.gmail.com with ESMTPSA id
 fi3-20020a170906da0300b00a2adb417051sm1153685ejb.216.2024.01.09.07.38.41
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 09 Jan 2024 07:38:42 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 2b3888ba-af05-11ee-98ef-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1704814722; x=1705419522; darn=lists.xenproject.org;
        h=content-transfer-encoding:mime-version:references:in-reply-to
         :message-id:date:subject:cc:to:from:from:to:cc:subject:date
         :message-id:reply-to;
        bh=V9v48h63fj7+uc/V0QQbcMsF6YnV1T/2wiKWzNfz/LI=;
        b=SDPpe2byTIkQ/t0jWOJ88cf43i8yaio67CN/DAA5UENn/CPI/tGwTPL4Whs9N3LUvu
         BfT3dy1DSfYTOtHEjYOxN7q21U3OgDBVOqpOmK0paH/30pUgovewJZ8EJDjSTf1Guo+P
         1O8DmaQbt6EqYl6Na7GFkJmTrIXWLU/xAF/ww=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704814722; x=1705419522;
        h=content-transfer-encoding:mime-version:references:in-reply-to
         :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to;
        bh=V9v48h63fj7+uc/V0QQbcMsF6YnV1T/2wiKWzNfz/LI=;
        b=f0/KqbyLFSeVqjb6un7urXE+8Zi1HzZztdOGYpb5i0nd7hPcE0kcyvR82X2npHQC1m
         QCC7HHoTZtEvBs0YG3TLlcrVGFI0bufCHVmyXCXtnodZJi0e6WghqXxxIrgDpsOL8myh
         77KG3PEGYZuvxkz9s4+9MYHLcIpBZpGusH/lTMHz6Z14S9PnJHr5uQu2Y5jpr0rJSkh/
         QsCkMM56lX1T5WfpuCkTcOJSTKHF+LNzJ8V4arX4QvQsOC+6LaSnkzhhXzd3q1dV0qY5
         Yxl9PSsain88ft1DBd3vRAX+Zi4AGje4cwRDcDC5W7Yat79ORJYAHBZLEcVf/vnKWnsi
         vq7g==
X-Gm-Message-State: AOJu0YyDQfrEo8yqBL4OorVIcWsPwEI+nF+tttTHoBUG82uYv6cuVnVG
	2UpG2LJnxfY8LvOptG8SSe6+nSFQUOc6mxt1rujF16/DrcM=
X-Google-Smtp-Source: AGHT+IEo1krAN+qcSUiH5qafdfWiu4LMfiL5nRv9wcOqzqwtnyUI88IYyLgyrMkG9RRrc7rpezawRQ==
X-Received: by 2002:a17:907:c91b:b0:a28:bb1a:6209 with SMTP id ui27-20020a170907c91b00b00a28bb1a6209mr526126ejc.118.1704814722498;
        Tue, 09 Jan 2024 07:38:42 -0800 (PST)
From: Alejandro Vallejo <alejandro.vallejo@cloud.com>
To: Xen-devel <xen-devel@lists.xenproject.org>
Cc: Alejandro Vallejo <alejandro.vallejo@cloud.com>,
	Jan Beulich <jbeulich@suse.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>,
	Wei Liu <wl@xen.org>,
	Anthony PERARD <anthony.perard@citrix.com>
Subject: [PATCH 5/6] xen/x86: Derive topologically correct x2APIC IDs from the policy
Date: Tue,  9 Jan 2024 15:38:33 +0000
Message-Id: <20240109153834.4192-6-alejandro.vallejo@cloud.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20240109153834.4192-1-alejandro.vallejo@cloud.com>
References: <20240109153834.4192-1-alejandro.vallejo@cloud.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Implements the helper for mapping vcpu_id to x2apic_id given a valid
topology in a policy. The algo is written with the intention of extending
it to leaves 0x1f and e26 in the future.

Toolstack doesn't set leaf 0xb and the HVM default policy has it cleared,
so the leaf is not implemented. In that case, the new helper just returns
the legacy mapping.

Signed-off-by: Alejandro Vallejo <alejandro.vallejo@cloud.com>
---
 tools/tests/cpu-policy/test-cpu-policy.c | 128 +++++++++++++++++++++++
 xen/include/xen/lib/x86/cpu-policy.h     |   2 +
 xen/lib/x86/policy.c                     |  75 +++++++++++--
 3 files changed, 199 insertions(+), 6 deletions(-)

diff --git a/tools/tests/cpu-policy/test-cpu-policy.c b/tools/tests/cpu-policy/test-cpu-policy.c
index 301df2c002..6ff5c1dd3d 100644
--- a/tools/tests/cpu-policy/test-cpu-policy.c
+++ b/tools/tests/cpu-policy/test-cpu-policy.c
@@ -650,6 +650,132 @@ static void test_is_compatible_failure(void)
     }
 }
 
+static void test_x2apic_id_from_vcpu_id_success(void)
+{
+    static struct test {
+        const char *name;
+        uint32_t vcpu_id;
+        uint32_t x2apic_id;
+        struct cpu_policy policy;
+    } tests[] = {
+        {
+            .name = "3v: 3 t/c, 8 c/s", .vcpu_id = 3, .x2apic_id = 1 << 2,
+            .policy = {
+                .x86_vendor = X86_VENDOR_AMD,
+                .topo.subleaf = {
+                    [0] = { .nr_logical = 3, .level = 0, .type = 1, .id_shift = 2, },
+                    [1] = { .nr_logical = 8, .level = 1, .type = 2, .id_shift = 5, },
+                },
+            },
+        },
+        {
+            .name = "6v: 3 t/c, 8 c/s", .vcpu_id = 6, .x2apic_id = 2 << 2,
+            .policy = {
+                .x86_vendor = X86_VENDOR_AMD,
+                .topo.subleaf = {
+                    [0] = { .nr_logical = 3, .level = 0, .type = 1, .id_shift = 2, },
+                    [1] = { .nr_logical = 8, .level = 1, .type = 2, .id_shift = 5, },
+                },
+            },
+        },
+        {
+            .name = "24v: 3 t/c, 8 c/s", .vcpu_id = 24, .x2apic_id = 1 << 5,
+            .policy = {
+                .x86_vendor = X86_VENDOR_AMD,
+                .topo.subleaf = {
+                    [0] = { .nr_logical = 3, .level = 0, .type = 1, .id_shift = 2, },
+                    [1] = { .nr_logical = 8, .level = 1, .type = 2, .id_shift = 5, },
+                },
+            },
+        },
+        {
+            .name = "35v: 3 t/c, 8 c/s", .vcpu_id = 35,
+            .x2apic_id = (35 % 3) | (((35 / 3) % 8)  << 2) | ((35 / 24) << 5),
+            .policy = {
+                .x86_vendor = X86_VENDOR_AMD,
+                .topo.subleaf = {
+                    [0] = { .nr_logical = 3, .level = 0, .type = 1, .id_shift = 2, },
+                    [1] = { .nr_logical = 8, .level = 1, .type = 2, .id_shift = 5, },
+                },
+            },
+        },
+        {
+            .name = "96v: 7 t/c, 3 c/s", .vcpu_id = 96,
+            .x2apic_id = (96 % 7) | (((96 / 7) % 3)  << 3) | ((96 / 21) << 5),
+            .policy = {
+                .x86_vendor = X86_VENDOR_AMD,
+                .topo.subleaf = {
+                    [0] = { .nr_logical = 7, .level = 0, .type = 1, .id_shift = 3, },
+                    [1] = { .nr_logical = 3, .level = 1, .type = 2, .id_shift = 5, },
+                },
+            },
+        },
+        {
+            .name = "3v: 3 t/c, 8 c/s", .vcpu_id = 3, .x2apic_id = 1 << 2,
+            .policy = {
+                .x86_vendor = X86_VENDOR_INTEL,
+                .topo.subleaf = {
+                    [0] = { .nr_logical = 3,  .level = 0, .type = 1, .id_shift = 2, },
+                    [1] = { .nr_logical = 24, .level = 1, .type = 2, .id_shift = 5, },
+                },
+            },
+        },
+        {
+            .name = "6v: 3 t/c, 8 c/s", .vcpu_id = 6, .x2apic_id = 2 << 2,
+            .policy = {
+                .x86_vendor = X86_VENDOR_INTEL,
+                .topo.subleaf = {
+                    [0] = { .nr_logical = 3,  .level = 0, .type = 1, .id_shift = 2, },
+                    [1] = { .nr_logical = 24, .level = 1, .type = 2, .id_shift = 5, },
+                },
+            },
+        },
+        {
+            .name = "24v: 3 t/c, 8 c/s", .vcpu_id = 24, .x2apic_id = 1 << 5,
+            .policy = {
+                .x86_vendor = X86_VENDOR_INTEL,
+                .topo.subleaf = {
+                    [0] = { .nr_logical = 3,  .level = 0, .type = 1, .id_shift = 2, },
+                    [1] = { .nr_logical = 24, .level = 1, .type = 2, .id_shift = 5, },
+                },
+            },
+        },
+        {
+            .name = "35v: 3 t/c, 8 c/s", .vcpu_id = 35,
+            .x2apic_id = (35 % 3) | (((35 / 3) % 8)  << 2) | ((35 / 24) << 5),
+            .policy = {
+                .x86_vendor = X86_VENDOR_INTEL,
+                .topo.subleaf = {
+                    [0] = { .nr_logical = 3,  .level = 0, .type = 1, .id_shift = 2, },
+                    [1] = { .nr_logical = 24, .level = 1, .type = 2, .id_shift = 5, },
+                },
+            },
+        },
+        {
+            .name = "96v: 7 t/c, 3 c/s", .vcpu_id = 96,
+            .x2apic_id = (96 % 7) | (((96 / 7) % 3)  << 3) | ((96 / 21) << 5),
+            .policy = {
+                .x86_vendor = X86_VENDOR_INTEL,
+                .topo.subleaf = {
+                    [0] = { .nr_logical = 7,   .level = 0, .type = 1, .id_shift = 3, },
+                    [1] = { .nr_logical = 21,  .level = 1, .type = 2, .id_shift = 5, },
+                },
+            },
+        },
+    };
+
+    printf("Testing x2apic id from vcpu id success:\n");
+
+    for ( size_t i = 0; i < ARRAY_SIZE(tests); ++i )
+    {
+        struct test *t = &tests[i];
+        uint32_t x2apic_id = x86_x2apic_id_from_vcpu_id(&t->policy, t->vcpu_id);
+        if ( x2apic_id != t->x2apic_id )
+            fail("FAIL - '%s'. bad x2apic_id: expected=%u actual=%u\n",
+                 t->name, t->x2apic_id, x2apic_id);
+    }
+}
+
 int main(int argc, char **argv)
 {
     printf("CPU Policy unit tests\n");
@@ -667,6 +793,8 @@ int main(int argc, char **argv)
     test_is_compatible_success();
     test_is_compatible_failure();
 
+    test_x2apic_id_from_vcpu_id_success();
+
     if ( nr_failures )
         printf("Done: %u failures\n", nr_failures);
     else
diff --git a/xen/include/xen/lib/x86/cpu-policy.h b/xen/include/xen/lib/x86/cpu-policy.h
index 65f6335b32..d81ae2f47c 100644
--- a/xen/include/xen/lib/x86/cpu-policy.h
+++ b/xen/include/xen/lib/x86/cpu-policy.h
@@ -550,6 +550,8 @@ int x86_cpu_policies_are_compatible(const struct cpu_policy *host,
 /**
  * Calculates the x2APIC ID of a vCPU given a CPU policy
  *
+ * If the policy lacks leaf 0xb falls back to legacy mapping of apic_id=cpu*2
+ *
  * @param p          CPU policy of the domain.
  * @param vcpu_id    vCPU ID of the vCPU.
  * @returns x2APIC ID of the vCPU.
diff --git a/xen/lib/x86/policy.c b/xen/lib/x86/policy.c
index a3b24e6879..2a50bc076a 100644
--- a/xen/lib/x86/policy.c
+++ b/xen/lib/x86/policy.c
@@ -2,15 +2,78 @@
 
 #include <xen/lib/x86/cpu-policy.h>
 
-uint32_t x86_x2apic_id_from_vcpu_id(const struct cpu_policy *p, uint32_t vcpu_id)
+static uint32_t parts_per_higher_scoped_level(const struct cpu_policy *p, size_t lvl)
 {
     /*
-     * TODO: Derive x2APIC ID from the topology information inside `p`
-     *       rather than from vCPU ID. This bodge is a temporary measure
-     *       until all infra is in place to retrieve or derive the initial
-     *       x2APIC ID from migrated domains.
+     * `nr_logical` reported by Intel is the number of THREADS contained in
+     * the next topological scope. For example, assuming a system with 2
+     * threads/core and 3 cores/module in a fully symmetric topology,
+     * `nr_logical` at the core level will report 6. Because it's reporting
+     * the number of threads in a module.
+     *
+     * On AMD/Hygon, nr_logical is already normalized by the higher scoped
+     * level (cores/complex, etc) so we can return it as-is.
      */
-    return vcpu_id * 2;
+    if ( p->x86_vendor != X86_VENDOR_INTEL || !lvl )
+        return p->topo.subleaf[lvl].nr_logical;
+
+    return p->topo.subleaf[lvl].nr_logical / p->topo.subleaf[lvl - 1].nr_logical;
+}
+
+uint32_t x86_x2apic_id_from_vcpu_id(const struct cpu_policy *p, uint32_t id)
+{
+    uint32_t shift = 0, x2apic_id = 0;
+
+    /* In the absence of topology leaves, fallback to traditional mapping */
+    if ( !p->topo.subleaf[0].type )
+        return id * 2;
+
+    /*
+     * `id` means different things at different points of the algo
+     *
+     * At lvl=0: global thread_id (same as vcpu_id)
+     * At lvl=1: global core_id
+     * At lvl=2: global socket_id (actually complex_id in AMD, module_id
+     *                             in Intel, but the name is inconsequential)
+     *
+     *                 +--+
+     *            ____ |#0| ______           <= 1 socket
+     *           /     +--+       \+--+
+     *       __#0__              __|#1|__    <= 2 cores/socket
+     *      /   |  \        +--+/  +-|+  \
+     *    #0   #1   #2      |#3|    #4    #5 <= 3 threads/core
+     *                      +--+
+     *
+     * ... and so on. Global in this context means that it's a unique
+     * identifier for the whole topology, and not relative to the level
+     * it's in. For example, in the diagram shown above, we're looking at
+     * thread #3 in the global sense, though it's #0 within its core.
+     *
+     * Note that dividing a global thread_id by the number of threads per
+     * core returns the global core id that contains it. e.g: 0, 1 or 2
+     * divided by 3 returns core_id=0. 3, 4 or 5 divided by 3 returns core
+     * 1, and so on. An analogous argument holds for higher levels. This is
+     * the property we exploit to derive x2apic_id from vcpu_id.
+     *
+     * NOTE: `topo` is currently derived from leaf 0xb, which is bound to
+     * two levels, but once we track leaves 0x1f (or e26) there will be a
+     * few more. The algorithm is written to cope with that case.
+     */
+    for ( uint32_t i = 0; i < ARRAY_SIZE(p->topo.raw); i++ )
+    {
+        uint32_t nr_parts;
+
+        if ( !p->topo.subleaf[i].type )
+            /* sentinel subleaf */
+            break;
+
+        nr_parts = parts_per_higher_scoped_level(p, i);
+        x2apic_id |= (id % nr_parts) << shift;
+        id /= nr_parts;
+        shift = p->topo.subleaf[i].id_shift;
+    }
+
+    return (id << shift) | x2apic_id;
 }
 
 int x86_cpu_policies_are_compatible(const struct cpu_policy *host,
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Tue Jan 09 15:38:46 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 09 Jan 2024 15:38:46 +0000
Received: from list by lists.xenproject.org with outflank-mailman.664701.1034812 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNEBh-00007U-GN; Tue, 09 Jan 2024 15:38:45 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 664701.1034812; Tue, 09 Jan 2024 15:38:45 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNEBh-00006a-9h; Tue, 09 Jan 2024 15:38:45 +0000
Received: by outflank-mailman (input) for mailman id 664701;
 Tue, 09 Jan 2024 15:38:44 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=C4Q/=IT=cloud.com=alejandro.vallejo@srs-se1.protection.inumbo.net>)
 id 1rNEBg-00081N-EV
 for xen-devel@lists.xenproject.org; Tue, 09 Jan 2024 15:38:44 +0000
Received: from mail-wm1-x32b.google.com (mail-wm1-x32b.google.com
 [2a00:1450:4864:20::32b])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 2925d36a-af05-11ee-9b0f-b553b5be7939;
 Tue, 09 Jan 2024 16:38:39 +0100 (CET)
Received: by mail-wm1-x32b.google.com with SMTP id
 5b1f17b1804b1-40d5aefcc2fso34966265e9.0
 for <xen-devel@lists.xenproject.org>; Tue, 09 Jan 2024 07:38:39 -0800 (PST)
Received: from EMEAENGAAD19049.citrite.net
 (default-46-102-197-194.interdsl.co.uk. [46.102.197.194])
 by smtp.gmail.com with ESMTPSA id
 fi3-20020a170906da0300b00a2adb417051sm1153685ejb.216.2024.01.09.07.38.38
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 09 Jan 2024 07:38:38 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 2925d36a-af05-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1704814719; x=1705419519; darn=lists.xenproject.org;
        h=content-transfer-encoding:mime-version:message-id:date:subject:cc
         :to:from:from:to:cc:subject:date:message-id:reply-to;
        bh=2vekzOGyuCFWtV816mclTU6Ph4tvS+J39NwObNUzzNQ=;
        b=Vznmdc/f+8FzGv9bS+czQpR739zUFc6cY2xc9JE2Qlwd8J5vzzC2n5K/9x6auCVKSU
         b+cp2ZOysuU7SpCDhLj7g9MPZ72V6W3LYv2YM/egR3FXZcdqb3c1CbXQLCcsK8BoxTsE
         iSWxSPCMjYhGjj5aKzZsaVuJfb0InA3DLcsQ4=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704814719; x=1705419519;
        h=content-transfer-encoding:mime-version:message-id:date:subject:cc
         :to:from:x-gm-message-state:from:to:cc:subject:date:message-id
         :reply-to;
        bh=2vekzOGyuCFWtV816mclTU6Ph4tvS+J39NwObNUzzNQ=;
        b=avMShVhNGq0elVtLCo7GM8FrAe4lpY3eruqygJrTcZCMAI1rUSWuqx10xwX9rnaPGc
         hsrGX02kttmzRKrnEJOKPIsfx34Jbh/zjFcjSOuxG4xNmmPncj7iyNVTlZQ6CLaSq4dC
         79d97+eh8+cLyQx6eVNAZ8e/BHAvyIuqYQARNuH55eH1ljGSRfA8omp3CD5VBMF7/csp
         mVS4URrrV1nXEAKS2Fr2Djsw9SlcrhX7Jbnee8RZZihC5iUv2KtUxtsRN6URW/9xm8Hg
         dUwL8dEKwns7MUoWe71izzlbuydVsTdRLNx5KVLYvlZtuDsXPGHTPiCVTvOHMEgqmy8u
         rsoQ==
X-Gm-Message-State: AOJu0YyDYvtcD+wjW4zrMMXQ/J8In5ZrJ6EsN+Blsoag+Vn9Va1IbAGL
	6QgLxYqKTuK/6cQG13VZT+byYQILhTpuGbtVEVIBCgDBt1E=
X-Google-Smtp-Source: AGHT+IEh7rzbL9Lly24TxSX61UeTCnlZUVbb1o74vb7WqVjOil6yYqRFNSWFAneD0U3IVjVK4jfZXQ==
X-Received: by 2002:a05:600c:4f10:b0:40e:39dd:b319 with SMTP id l16-20020a05600c4f1000b0040e39ddb319mr2857663wmq.123.1704814718883;
        Tue, 09 Jan 2024 07:38:38 -0800 (PST)
From: Alejandro Vallejo <alejandro.vallejo@cloud.com>
To: Xen-devel <xen-devel@lists.xenproject.org>
Cc: Alejandro Vallejo <alejandro.vallejo@cloud.com>,
	Jan Beulich <jbeulich@suse.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>,
	Wei Liu <wl@xen.org>,
	Anthony PERARD <anthony.perard@citrix.com>,
	Juergen Gross <jgross@suse.com>
Subject: [PATCH 0/6] x86: Expose consistent topology to guests
Date: Tue,  9 Jan 2024 15:38:28 +0000
Message-Id: <20240109153834.4192-1-alejandro.vallejo@cloud.com>
X-Mailer: git-send-email 2.34.1
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Current topology handling is close to non-existent. As things stand, APIC
IDs are allocated through the apic_id=vcpu_id*2 relation without giving any
hints to the OS on how to parse the x2APIC ID of a given CPU and assuming
the guest will assume 2 threads per core.

This series involves bringing x2APIC IDs into the migration stream, so
older guests keep operating as they used to and enhancing Xen+toolstack so
new guests get topology information consistent with their x2APIC IDs. As a
side effect of this, x2APIC IDs are now packed and don't have (unless under
a pathological case) gaps.

Further work ought to allow combining this topology configurations with
gang-scheduling of guest hyperthreads into affine physical hyperthreads.
For the time being it purposefully keeps the configuration of "1 socket" +
"1 thread per core" + "1 core per vCPU".

Patch 1: Includes x2APIC IDs in the migration stream. This allows Xen to
         reconstruct the right x2APIC IDs on migrated-in guests, and
         future-proofs itself in the face of x2APIC ID derivation changes.
Patch 2: Minor refactor to expose xc_cpu_policy in libxl
Patch 3: Refactors xen/lib/x86 to work on non-Xen freestanding environments
         (e.g: hvmloader)
Patch 4: Remove old assumptions about vcpu_id<->apic_id relationship in hvmloader
Patch 5: Add logic to derive x2APIC IDs given a CPU policy and vCPU IDs
Patch 6: Includes a simple topology generator for toolstack so new guests
         have topologically consistent information in CPUID

Alejandro Vallejo (6):
  xen/x86: Add initial x2APIC ID to the per-vLAPIC save area
  tools/xc: Add xc_cpu_policy to the public xenctrl.h header
  xen/x86: Refactor xen/lib/x86 so it can be linked in hvmloader
  tools/hvmloader: Use cpu_policy to determine APIC IDs
  xen/x86: Derive topologically correct x2APIC IDs from the policy
  xen/x86: Add topology generator

 tools/firmware/hvmloader/Makefile        |   7 ++
 tools/firmware/hvmloader/config.h        |   5 +-
 tools/firmware/hvmloader/hvmloader.c     |   6 +
 tools/firmware/hvmloader/util.c          |   3 +-
 tools/include/xenguest.h                 |  23 +++-
 tools/libacpi/build.c                    |  27 ++++-
 tools/libacpi/libacpi.h                  |   5 +-
 tools/libs/guest/xg_cpuid_x86.c          | 144 ++++++++++++++---------
 tools/libs/guest/xg_private.h            |  10 --
 tools/libs/light/libxl_x86_acpi.c        |  21 +++-
 tools/tests/cpu-policy/test-cpu-policy.c | 128 ++++++++++++++++++++
 xen/arch/x86/cpu-policy.c                |   6 +-
 xen/arch/x86/cpuid.c                     |  20 +---
 xen/arch/x86/domain.c                    |   3 +
 xen/arch/x86/hvm/vlapic.c                |  27 ++++-
 xen/arch/x86/include/asm/hvm/vlapic.h    |   2 +
 xen/include/public/arch-x86/hvm/save.h   |   2 +
 xen/include/xen/lib/x86/cpu-policy.h     |  16 +++
 xen/lib/x86/cpuid.c                      |  12 +-
 xen/lib/x86/policy.c                     |  74 ++++++++++++
 xen/lib/x86/private.h                    |   8 +-
 21 files changed, 442 insertions(+), 107 deletions(-)

-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Tue Jan 09 15:38:46 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 09 Jan 2024 15:38:46 +0000
Received: from list by lists.xenproject.org with outflank-mailman.664698.1034786 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNEBe-00082t-I2; Tue, 09 Jan 2024 15:38:42 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 664698.1034786; Tue, 09 Jan 2024 15:38:42 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNEBe-00082m-FU; Tue, 09 Jan 2024 15:38:42 +0000
Received: by outflank-mailman (input) for mailman id 664698;
 Tue, 09 Jan 2024 15:38:41 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=C4Q/=IT=cloud.com=alejandro.vallejo@srs-se1.protection.inumbo.net>)
 id 1rNEBd-00081L-D5
 for xen-devel@lists.xenproject.org; Tue, 09 Jan 2024 15:38:41 +0000
Received: from mail-ej1-x633.google.com (mail-ej1-x633.google.com
 [2a00:1450:4864:20::633])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 2977078a-af05-11ee-98ef-6d05b1d4d9a1;
 Tue, 09 Jan 2024 16:38:40 +0100 (CET)
Received: by mail-ej1-x633.google.com with SMTP id
 a640c23a62f3a-a271a28aeb4so320149766b.2
 for <xen-devel@lists.xenproject.org>; Tue, 09 Jan 2024 07:38:40 -0800 (PST)
Received: from EMEAENGAAD19049.citrite.net
 (default-46-102-197-194.interdsl.co.uk. [46.102.197.194])
 by smtp.gmail.com with ESMTPSA id
 fi3-20020a170906da0300b00a2adb417051sm1153685ejb.216.2024.01.09.07.38.39
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 09 Jan 2024 07:38:39 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 2977078a-af05-11ee-98ef-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1704814719; x=1705419519; darn=lists.xenproject.org;
        h=content-transfer-encoding:mime-version:references:in-reply-to
         :message-id:date:subject:cc:to:from:from:to:cc:subject:date
         :message-id:reply-to;
        bh=VhSOpe56MpOWcnrNuJqvTnfUTnjkdLUXYQWxAJ3egc0=;
        b=hJRR61ooKW04RYi5R4qI/97kiqsnxrvOZSFq8yagC5EBDbXLPDTUwvI5CJQDNe6Wzq
         NB8DJ0CtWifJtdwDCQ6h2xDSYACVyzQ2mN+YeVPIjQjUmL365c4VELfv/eQqI2X8rR9+
         zI/NOSF4QcLIxrEZeRC+PO9Q7mZRdDeUB1Iag=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704814719; x=1705419519;
        h=content-transfer-encoding:mime-version:references:in-reply-to
         :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to;
        bh=VhSOpe56MpOWcnrNuJqvTnfUTnjkdLUXYQWxAJ3egc0=;
        b=qfiiNeLl8AI4ocdg5qkh3craeIr/RzIy7ywP8/i1QAIbr7GDgdXmKEyQ5k9XJSa1vE
         U/iM6BllLCaz7qDWzQeRk0c9t3ZsXD0P4HbuHGj1CrzB/HAyIdd5SbgXFi2bnaEoj8d6
         CCfd5qgjwVWz+qARKi1uDj3/smjt3gkYEYabyMmiCA5WRdOu3qmW99QV7FAC5R+lXg85
         d7fT+EUCdPR1TjTGByZ/uEITpOL1aZztpm7JXkucZJhv0gt0rkI6RQpiRqgcW80xEJhx
         oCErUii50Pj77TVBfMxAKCKvGcRl2v91swoC4q3neu/m/ykVKuanmJTcx1cHg+fiwMK9
         W6Hw==
X-Gm-Message-State: AOJu0YxlKgxcorKd+FvaJfMo9D6gn/6bQ7sPqHaVtmdXrODUPxN+ISYU
	Vykx1bN9oplPuPlX9otZBCEq3OEYUsWagkP2a4ZhncSmOUI=
X-Google-Smtp-Source: AGHT+IEZfJpx4+I0TuLd3gyZSUgBkd00EGOddGMDLqfVylYXXAZ9UoHQiChxbzuG2kD+kJPN4VqWZQ==
X-Received: by 2002:a17:906:74c3:b0:a23:4b44:7dcc with SMTP id z3-20020a17090674c300b00a234b447dccmr790867ejl.33.1704814719495;
        Tue, 09 Jan 2024 07:38:39 -0800 (PST)
From: Alejandro Vallejo <alejandro.vallejo@cloud.com>
To: Xen-devel <xen-devel@lists.xenproject.org>
Cc: Alejandro Vallejo <alejandro.vallejo@cloud.com>,
	Jan Beulich <jbeulich@suse.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>,
	Wei Liu <wl@xen.org>
Subject: [PATCH 1/6] xen/x86: Add initial x2APIC ID to the per-vLAPIC save area
Date: Tue,  9 Jan 2024 15:38:29 +0000
Message-Id: <20240109153834.4192-2-alejandro.vallejo@cloud.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20240109153834.4192-1-alejandro.vallejo@cloud.com>
References: <20240109153834.4192-1-alejandro.vallejo@cloud.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

This allows the initial x2APIC ID to be sent on the migration stream. The
hardcoded mapping x2apic_id=2*vcpu_id is maintained for the time being.
Given the vlapic data is zero-extended on restore, fix up migrations from
hosts without the field by setting it to the old convention if zero.

x2APIC IDs are calculated from the CPU policy where the guest topology is
defined. For the time being, the function simply returns the old
relationship, but will eventually return results consistent with the
topology.

Signed-off-by: Alejandro Vallejo <alejandro.vallejo@cloud.com>
---
 xen/arch/x86/cpuid.c                   | 20 ++++---------------
 xen/arch/x86/domain.c                  |  3 +++
 xen/arch/x86/hvm/vlapic.c              | 27 ++++++++++++++++++++++++--
 xen/arch/x86/include/asm/hvm/vlapic.h  |  2 ++
 xen/include/public/arch-x86/hvm/save.h |  2 ++
 xen/include/xen/lib/x86/cpu-policy.h   |  9 +++++++++
 xen/lib/x86/policy.c                   | 11 +++++++++++
 7 files changed, 56 insertions(+), 18 deletions(-)

diff --git a/xen/arch/x86/cpuid.c b/xen/arch/x86/cpuid.c
index 7290a979c6..6e259785d0 100644
--- a/xen/arch/x86/cpuid.c
+++ b/xen/arch/x86/cpuid.c
@@ -139,10 +139,9 @@ void guest_cpuid(const struct vcpu *v, uint32_t leaf,
         const struct cpu_user_regs *regs;
 
     case 0x1:
-        /* TODO: Rework topology logic. */
         res->b &= 0x00ffffffu;
         if ( is_hvm_domain(d) )
-            res->b |= (v->vcpu_id * 2) << 24;
+            res->b |= SET_xAPIC_ID(vlapic_x2apic_id(vcpu_vlapic(v)));
 
         /* TODO: Rework vPMU control in terms of toolstack choices. */
         if ( vpmu_available(v) &&
@@ -311,20 +310,9 @@ void guest_cpuid(const struct vcpu *v, uint32_t leaf,
         break;
 
     case 0xb:
-        /*
-         * In principle, this leaf is Intel-only.  In practice, it is tightly
-         * coupled with x2apic, and we offer an x2apic-capable APIC emulation
-         * to guests on AMD hardware as well.
-         *
-         * TODO: Rework topology logic.
-         */
-        if ( p->basic.x2apic )
-        {
-            *(uint8_t *)&res->c = subleaf;
-
-            /* Fix the x2APIC identifier. */
-            res->d = v->vcpu_id * 2;
-        }
+        /* ecx != 0 if the subleaf is implemented */
+        if ( res->c && p->basic.x2apic )
+            res->d = vlapic_x2apic_id(vcpu_vlapic(v));
         break;
 
     case XSTATE_CPUID:
diff --git a/xen/arch/x86/domain.c b/xen/arch/x86/domain.c
index 8a31d18f69..e0c7ed8d5d 100644
--- a/xen/arch/x86/domain.c
+++ b/xen/arch/x86/domain.c
@@ -288,7 +288,10 @@ void update_guest_memory_policy(struct vcpu *v,
 static void cpu_policy_updated(struct vcpu *v)
 {
     if ( is_hvm_vcpu(v) )
+    {
         hvm_cpuid_policy_changed(v);
+        vlapic_cpu_policy_changed(v);
+    }
 }
 
 void domain_cpu_policy_changed(struct domain *d)
diff --git a/xen/arch/x86/hvm/vlapic.c b/xen/arch/x86/hvm/vlapic.c
index cdb69d9742..f500d66543 100644
--- a/xen/arch/x86/hvm/vlapic.c
+++ b/xen/arch/x86/hvm/vlapic.c
@@ -1069,7 +1069,7 @@ static uint32_t x2apic_ldr_from_id(uint32_t id)
 static void set_x2apic_id(struct vlapic *vlapic)
 {
     const struct vcpu *v = vlapic_vcpu(vlapic);
-    uint32_t apic_id = v->vcpu_id * 2;
+    uint32_t apic_id = vlapic->hw.x2apic_id;
     uint32_t apic_ldr = x2apic_ldr_from_id(apic_id);
 
     /*
@@ -1083,6 +1083,22 @@ static void set_x2apic_id(struct vlapic *vlapic)
     vlapic_set_reg(vlapic, APIC_LDR, apic_ldr);
 }
 
+void vlapic_cpu_policy_changed(struct vcpu *v)
+{
+    struct vlapic *vlapic = vcpu_vlapic(v);
+    struct cpu_policy *cp = v->domain->arch.cpu_policy;
+
+    /*
+     * Don't override the initial x2APIC ID if we have migrated it or
+     * if the domain doesn't have vLAPIC at all.
+     */
+    if ( !has_vlapic(v->domain) || vlapic->loaded.hw )
+        return;
+
+    vlapic->hw.x2apic_id = x86_x2apic_id_from_vcpu_id(cp, v->vcpu_id);
+    vlapic_set_reg(vlapic, APIC_ID, SET_xAPIC_ID(vlapic->hw.x2apic_id));
+}
+
 int guest_wrmsr_apic_base(struct vcpu *v, uint64_t val)
 {
     const struct cpu_policy *cp = v->domain->arch.cpu_policy;
@@ -1449,7 +1465,7 @@ void vlapic_reset(struct vlapic *vlapic)
     if ( v->vcpu_id == 0 )
         vlapic->hw.apic_base_msr |= APIC_BASE_BSP;
 
-    vlapic_set_reg(vlapic, APIC_ID, (v->vcpu_id * 2) << 24);
+    vlapic_set_reg(vlapic, APIC_ID, SET_xAPIC_ID(vlapic->hw.x2apic_id));
     vlapic_do_init(vlapic);
 }
 
@@ -1514,6 +1530,13 @@ static void lapic_load_fixup(struct vlapic *vlapic)
     const struct vcpu *v = vlapic_vcpu(vlapic);
     uint32_t good_ldr = x2apic_ldr_from_id(vlapic->loaded.id);
 
+    /*
+     * Guest with hardcoded assumptions about x2apic_id <-> vcpu_id
+     * mappings. Recreate the mapping it used to have in old host.
+     */
+    if ( !vlapic->hw.x2apic_id )
+        vlapic->hw.x2apic_id = v->vcpu_id * 2;
+
     /* Skip fixups on xAPIC mode, or if the x2APIC LDR is already correct */
     if ( !vlapic_x2apic_mode(vlapic) ||
          (vlapic->loaded.ldr == good_ldr) )
diff --git a/xen/arch/x86/include/asm/hvm/vlapic.h b/xen/arch/x86/include/asm/hvm/vlapic.h
index 88ef945243..e8d41313ab 100644
--- a/xen/arch/x86/include/asm/hvm/vlapic.h
+++ b/xen/arch/x86/include/asm/hvm/vlapic.h
@@ -44,6 +44,7 @@
 #define vlapic_xapic_mode(vlapic)                               \
     (!vlapic_hw_disabled(vlapic) && \
      !((vlapic)->hw.apic_base_msr & APIC_BASE_EXTD))
+#define vlapic_x2apic_id(vlapic) ((vlapic)->hw.x2apic_id)
 
 /*
  * Generic APIC bitmap vector update & search routines.
@@ -107,6 +108,7 @@ int vlapic_ack_pending_irq(struct vcpu *v, int vector, bool force_ack);
 
 int  vlapic_init(struct vcpu *v);
 void vlapic_destroy(struct vcpu *v);
+void vlapic_cpu_policy_changed(struct vcpu *v);
 
 void vlapic_reset(struct vlapic *vlapic);
 
diff --git a/xen/include/public/arch-x86/hvm/save.h b/xen/include/public/arch-x86/hvm/save.h
index 7ecacadde1..1c2ec669ff 100644
--- a/xen/include/public/arch-x86/hvm/save.h
+++ b/xen/include/public/arch-x86/hvm/save.h
@@ -394,6 +394,8 @@ struct hvm_hw_lapic {
     uint32_t             disabled; /* VLAPIC_xx_DISABLED */
     uint32_t             timer_divisor;
     uint64_t             tdt_msr;
+    uint32_t             x2apic_id;
+    uint32_t             rsvd_zero;
 };
 
 DECLARE_HVM_SAVE_TYPE(LAPIC, 5, struct hvm_hw_lapic);
diff --git a/xen/include/xen/lib/x86/cpu-policy.h b/xen/include/xen/lib/x86/cpu-policy.h
index d5e447e9dc..14724cedff 100644
--- a/xen/include/xen/lib/x86/cpu-policy.h
+++ b/xen/include/xen/lib/x86/cpu-policy.h
@@ -542,6 +542,15 @@ int x86_cpu_policies_are_compatible(const struct cpu_policy *host,
                                     const struct cpu_policy *guest,
                                     struct cpu_policy_errors *err);
 
+/**
+ * Calculates the x2APIC ID of a vCPU given a CPU policy
+ *
+ * @param p          CPU policy of the domain.
+ * @param vcpu_id    vCPU ID of the vCPU.
+ * @returns x2APIC ID of the vCPU.
+ */
+uint32_t x86_x2apic_id_from_vcpu_id(const struct cpu_policy *p, uint32_t vcpu_id);
+
 #endif /* !XEN_LIB_X86_POLICIES_H */
 
 /*
diff --git a/xen/lib/x86/policy.c b/xen/lib/x86/policy.c
index f033d22785..a3b24e6879 100644
--- a/xen/lib/x86/policy.c
+++ b/xen/lib/x86/policy.c
@@ -2,6 +2,17 @@
 
 #include <xen/lib/x86/cpu-policy.h>
 
+uint32_t x86_x2apic_id_from_vcpu_id(const struct cpu_policy *p, uint32_t vcpu_id)
+{
+    /*
+     * TODO: Derive x2APIC ID from the topology information inside `p`
+     *       rather than from vCPU ID. This bodge is a temporary measure
+     *       until all infra is in place to retrieve or derive the initial
+     *       x2APIC ID from migrated domains.
+     */
+    return vcpu_id * 2;
+}
+
 int x86_cpu_policies_are_compatible(const struct cpu_policy *host,
                                     const struct cpu_policy *guest,
                                     struct cpu_policy_errors *err)
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Tue Jan 09 15:38:46 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 09 Jan 2024 15:38:46 +0000
Received: from list by lists.xenproject.org with outflank-mailman.664702.1034826 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNEBi-0000ZN-OM; Tue, 09 Jan 2024 15:38:46 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 664702.1034826; Tue, 09 Jan 2024 15:38:46 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNEBi-0000Yo-KM; Tue, 09 Jan 2024 15:38:46 +0000
Received: by outflank-mailman (input) for mailman id 664702;
 Tue, 09 Jan 2024 15:38:44 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=C4Q/=IT=cloud.com=alejandro.vallejo@srs-se1.protection.inumbo.net>)
 id 1rNEBg-00081N-LT
 for xen-devel@lists.xenproject.org; Tue, 09 Jan 2024 15:38:44 +0000
Received: from mail-ed1-x52a.google.com (mail-ed1-x52a.google.com
 [2a00:1450:4864:20::52a])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 2a52ca72-af05-11ee-9b0f-b553b5be7939;
 Tue, 09 Jan 2024 16:38:41 +0100 (CET)
Received: by mail-ed1-x52a.google.com with SMTP id
 4fb4d7f45d1cf-555144cd330so3811816a12.2
 for <xen-devel@lists.xenproject.org>; Tue, 09 Jan 2024 07:38:41 -0800 (PST)
Received: from EMEAENGAAD19049.citrite.net
 (default-46-102-197-194.interdsl.co.uk. [46.102.197.194])
 by smtp.gmail.com with ESMTPSA id
 fi3-20020a170906da0300b00a2adb417051sm1153685ejb.216.2024.01.09.07.38.40
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 09 Jan 2024 07:38:40 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 2a52ca72-af05-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1704814721; x=1705419521; darn=lists.xenproject.org;
        h=content-transfer-encoding:mime-version:references:in-reply-to
         :message-id:date:subject:cc:to:from:from:to:cc:subject:date
         :message-id:reply-to;
        bh=3Tyvj96yu+ExmEaYuZYuzT4Vsi1GPehED1a8sOXZbwo=;
        b=XTGrQ8P4be3M0Vs5MtFzjdjzkSl3aZmMuFVzrPW/xLJrESOXbFgA0WzCEJyOUzjqyx
         AdTfrMG8kyv9s1L1QTSuEY6dCfvQa7jnqMNBYdGXcedBLcOixpDRPH2lE4QrNbQjbyXn
         wf/TgSSfSP/hkywnsSzqEe2blQoQtrztvpqQI=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704814721; x=1705419521;
        h=content-transfer-encoding:mime-version:references:in-reply-to
         :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to;
        bh=3Tyvj96yu+ExmEaYuZYuzT4Vsi1GPehED1a8sOXZbwo=;
        b=nT0K1q0BGTUA8VRiAAvzI4aLpOnP+GFT030fGcaIOLzrql3TLAmjd8DDFKzBi6UbJF
         1NHMHXom48K32Drpy7Dx0c5OZWrfTPfpf6+Oh0w6zb6Ck2a3LbQS1sFtw++628PzfX0e
         J+syKXI6hc90Nt3b3JMoS5t7s2bEt/4g09mJSPpwMep9yuu9stuVLIdUaq5mKjfka/VV
         8U8ma+9m6wDeqrA10qTjtDTOQDZ4/JvyuCRfzKX/XtmII/yPbr74OmS7wpgyNe/iNqvo
         SS3UCS+k0OC6ojuzXBE2/wEe19P1urg4Y/g5aCO+FutzUw5dKMmop64ysZOe4Bg0mA+p
         cfPA==
X-Gm-Message-State: AOJu0YzJbsWgV5LNQDSCJIdh/Ij3uuakwdkws+pTBBNI72c+G2a/vX1j
	bSp7ENdcIuP2ardwK0snu6EKOuqrrALqYxsrOG+x+94SJ8A=
X-Google-Smtp-Source: AGHT+IEFk0EhIfe0ycvYEIqj7VI5sVFnxOOeuQm8MgIUUKNKFkGLeTC02i742HgQRpSTYVgVXSDvpw==
X-Received: by 2002:a17:906:dfe2:b0:a26:e9fe:f59f with SMTP id lc2-20020a170906dfe200b00a26e9fef59fmr697946ejc.133.1704814721012;
        Tue, 09 Jan 2024 07:38:41 -0800 (PST)
From: Alejandro Vallejo <alejandro.vallejo@cloud.com>
To: Xen-devel <xen-devel@lists.xenproject.org>
Cc: Alejandro Vallejo <alejandro.vallejo@cloud.com>,
	Jan Beulich <jbeulich@suse.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>,
	Wei Liu <wl@xen.org>
Subject: [PATCH 3/6] xen/x86: Refactor xen/lib/x86 so it can be linked in hvmloader
Date: Tue,  9 Jan 2024 15:38:31 +0000
Message-Id: <20240109153834.4192-4-alejandro.vallejo@cloud.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20240109153834.4192-1-alejandro.vallejo@cloud.com>
References: <20240109153834.4192-1-alejandro.vallejo@cloud.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

A future patch will use these in hvmloader, which is freestanding, but
lacks the Xen code. The following changes fix the compilation errors.

* string.h => Remove memset() usages and bzero through assignments
* inttypes.h => Use stdint.h (it's what it should've been to begin with)
* errno.h => Use xen/errno.h instead

No functional change intended.

Signed-off-by: Alejandro Vallejo <alejandro.vallejo@cloud.com>
---
 xen/lib/x86/cpuid.c   | 12 ++++++------
 xen/lib/x86/private.h |  8 +++++---
 2 files changed, 11 insertions(+), 9 deletions(-)

diff --git a/xen/lib/x86/cpuid.c b/xen/lib/x86/cpuid.c
index eb7698dc73..4a138c3a11 100644
--- a/xen/lib/x86/cpuid.c
+++ b/xen/lib/x86/cpuid.c
@@ -5,8 +5,8 @@
 static void zero_leaves(struct cpuid_leaf *l,
                         unsigned int first, unsigned int last)
 {
-    if ( first <= last )
-        memset(&l[first], 0, sizeof(*l) * (last - first + 1));
+    for (l = &l[first]; first <= last; first++, l++ )
+        *l = (struct cpuid_leaf){};
 }
 
 unsigned int x86_cpuid_lookup_vendor(uint32_t ebx, uint32_t ecx, uint32_t edx)
@@ -244,7 +244,7 @@ void x86_cpu_policy_clear_out_of_range_leaves(struct cpu_policy *p)
                 ARRAY_SIZE(p->basic.raw) - 1);
 
     if ( p->basic.max_leaf < 4 )
-        memset(p->cache.raw, 0, sizeof(p->cache.raw));
+        p->cache = (typeof(p->cache)){};
     else
     {
         for ( i = 0; (i < ARRAY_SIZE(p->cache.raw) &&
@@ -255,13 +255,13 @@ void x86_cpu_policy_clear_out_of_range_leaves(struct cpu_policy *p)
     }
 
     if ( p->basic.max_leaf < 7 )
-        memset(p->feat.raw, 0, sizeof(p->feat.raw));
+        p->feat = (typeof(p->feat)){};
     else
         zero_leaves(p->feat.raw, p->feat.max_subleaf + 1,
                     ARRAY_SIZE(p->feat.raw) - 1);
 
     if ( p->basic.max_leaf < 0xb )
-        memset(p->topo.raw, 0, sizeof(p->topo.raw));
+        p->topo = (typeof(p->topo)){};
     else
     {
         for ( i = 0; (i < ARRAY_SIZE(p->topo.raw) &&
@@ -272,7 +272,7 @@ void x86_cpu_policy_clear_out_of_range_leaves(struct cpu_policy *p)
     }
 
     if ( p->basic.max_leaf < 0xd || !cpu_policy_xstates(p) )
-        memset(p->xstate.raw, 0, sizeof(p->xstate.raw));
+        p->xstate = (typeof(p->xstate)){};
     else
     {
         /* This logic will probably need adjusting when XCR0[63] gets used. */
diff --git a/xen/lib/x86/private.h b/xen/lib/x86/private.h
index 60bb82a400..4b8cb97e64 100644
--- a/xen/lib/x86/private.h
+++ b/xen/lib/x86/private.h
@@ -17,12 +17,14 @@
 
 #else
 
-#include <errno.h>
-#include <inttypes.h>
+#include <stdint.h>
 #include <stdbool.h>
 #include <stddef.h>
-#include <string.h>
 
+enum {
+#define XEN_ERRNO(ident, rc) ident = (rc),
+#include <xen/errno.h>
+};
 #include <xen/asm/msr-index.h>
 #include <xen/asm/x86-vendors.h>
 
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Tue Jan 09 15:38:47 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 09 Jan 2024 15:38:47 +0000
Received: from list by lists.xenproject.org with outflank-mailman.664703.1034833 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNEBj-0000fD-9P; Tue, 09 Jan 2024 15:38:47 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 664703.1034833; Tue, 09 Jan 2024 15:38:47 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNEBj-0000eo-1C; Tue, 09 Jan 2024 15:38:47 +0000
Received: by outflank-mailman (input) for mailman id 664703;
 Tue, 09 Jan 2024 15:38:45 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=C4Q/=IT=cloud.com=alejandro.vallejo@srs-se1.protection.inumbo.net>)
 id 1rNEBh-00081N-Lk
 for xen-devel@lists.xenproject.org; Tue, 09 Jan 2024 15:38:45 +0000
Received: from mail-ej1-x631.google.com (mail-ej1-x631.google.com
 [2a00:1450:4864:20::631])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 2acaf547-af05-11ee-9b0f-b553b5be7939;
 Tue, 09 Jan 2024 16:38:42 +0100 (CET)
Received: by mail-ej1-x631.google.com with SMTP id
 a640c23a62f3a-a28fb463a28so308664166b.3
 for <xen-devel@lists.xenproject.org>; Tue, 09 Jan 2024 07:38:42 -0800 (PST)
Received: from EMEAENGAAD19049.citrite.net
 (default-46-102-197-194.interdsl.co.uk. [46.102.197.194])
 by smtp.gmail.com with ESMTPSA id
 fi3-20020a170906da0300b00a2adb417051sm1153685ejb.216.2024.01.09.07.38.41
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 09 Jan 2024 07:38:41 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 2acaf547-af05-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1704814722; x=1705419522; darn=lists.xenproject.org;
        h=content-transfer-encoding:mime-version:references:in-reply-to
         :message-id:date:subject:cc:to:from:from:to:cc:subject:date
         :message-id:reply-to;
        bh=Z/Mi6cC8uykb3/316Hk1+e5LTrJjSyfEFqMapLdzQzU=;
        b=IViI4yhHSDRuJkL+lOsd1cVKkAE1AiJJxXX1mvB0SF0ZHxqTzMT3XCo+wCL5FXgiP+
         z937tQVBooFQ5UI75JONWqqmYlaEWH57u01vVn+K197x+/17/3CPsBFMAZ0MchWUvrgb
         ulHVKTAHkqimtUIKP8Gm4UrqRCB0MGvQfNbiY=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704814722; x=1705419522;
        h=content-transfer-encoding:mime-version:references:in-reply-to
         :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to;
        bh=Z/Mi6cC8uykb3/316Hk1+e5LTrJjSyfEFqMapLdzQzU=;
        b=lZ+RPMS6WMXRPVjvFd9GGLiAhy5ESC6pwPg1XA0zFaYKjZ+0S8wZGcL2OyNHvpNAoy
         Bs2JkM1CSFzvJgZphlz8/+ukM/96XV3wHMCdfPjQtSRc3q+wMk0vvLrxwxZX012QkqHj
         6UowgVXfJYbjvuglQgzOHk7texyPMXX91ytVClO0niTVQp2CiejOfQDfFewU4ShZGceK
         LPzTvDmzBWcT+6HoHHQE+XCMXHeXy81LeMB1EQqhRSr0wGAaUccUgyiWYCE1wrlo8wTS
         hcF23Mo93+qCvcMy3kFGn43KWD4lDA8TeHw0hHPj+k90yWy84AGZeQTDKY2Sg90bJ8iM
         Gqlg==
X-Gm-Message-State: AOJu0Yze1J3HQaMziTid7pLvJK7RDLF7chEV1Hi/lwvMW/XCw/ot+rrx
	2oaLbnNSLRGpvcO6o+9NM07xERqrxhxQZoNgv7FeservqIc=
X-Google-Smtp-Source: AGHT+IElL8SkPzR8ym/erEuOW/j52nGuVC8Q0DK5O9UwVPma0sgsQsnjC06cIgEky0KZlZPvm9yPVA==
X-Received: by 2002:a17:906:a895:b0:a28:fdac:95e8 with SMTP id ha21-20020a170906a89500b00a28fdac95e8mr626937ejb.17.1704814721793;
        Tue, 09 Jan 2024 07:38:41 -0800 (PST)
From: Alejandro Vallejo <alejandro.vallejo@cloud.com>
To: Xen-devel <xen-devel@lists.xenproject.org>
Cc: Alejandro Vallejo <alejandro.vallejo@cloud.com>,
	Jan Beulich <jbeulich@suse.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>,
	Wei Liu <wl@xen.org>,
	Anthony PERARD <anthony.perard@citrix.com>,
	Juergen Gross <jgross@suse.com>
Subject: [PATCH 4/6] tools/hvmloader: Use cpu_policy to determine APIC IDs
Date: Tue,  9 Jan 2024 15:38:32 +0000
Message-Id: <20240109153834.4192-5-alejandro.vallejo@cloud.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20240109153834.4192-1-alejandro.vallejo@cloud.com>
References: <20240109153834.4192-1-alejandro.vallejo@cloud.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

As part of topology correction efforts, APIC IDs can no longer be derived
strictly through the vCPU ID alone. Bring in the machinery for policy
retrieval and parsing in order to generate the proper MADT table and wake
the appropriate CPUs.

Signed-off-by: Alejandro Vallejo <alejandro.vallejo@cloud.com>
---
 tools/firmware/hvmloader/Makefile    |  7 +++++++
 tools/firmware/hvmloader/config.h    |  5 ++++-
 tools/firmware/hvmloader/hvmloader.c |  6 ++++++
 tools/firmware/hvmloader/util.c      |  3 ++-
 tools/libacpi/build.c                | 27 +++++++++++++++++++++------
 tools/libacpi/libacpi.h              |  5 ++++-
 tools/libs/light/libxl_x86_acpi.c    | 21 +++++++++++++++++++--
 7 files changed, 63 insertions(+), 11 deletions(-)

diff --git a/tools/firmware/hvmloader/Makefile b/tools/firmware/hvmloader/Makefile
index e5de1ade17..503ef2e219 100644
--- a/tools/firmware/hvmloader/Makefile
+++ b/tools/firmware/hvmloader/Makefile
@@ -37,6 +37,13 @@ ifeq ($(debug),y)
 OBJS += tests.o
 endif
 
+CFLAGS += -I../../../xen/arch/x86/include/
+
+vpath cpuid.c ../../../xen/lib/x86/
+OBJS += cpuid.o
+vpath policy.c ../../../xen/lib/x86/
+OBJS += policy.o
+
 CIRRUSVGA_DEBUG ?= n
 
 ROMBIOS_DIR := ../rombios
diff --git a/tools/firmware/hvmloader/config.h b/tools/firmware/hvmloader/config.h
index c82adf6dc5..3304b63cd8 100644
--- a/tools/firmware/hvmloader/config.h
+++ b/tools/firmware/hvmloader/config.h
@@ -3,10 +3,13 @@
 
 #include <stdint.h>
 #include <stdbool.h>
+#include <xen/lib/x86/cpu-policy.h>
 
 enum virtual_vga { VGA_none, VGA_std, VGA_cirrus, VGA_pt };
 extern enum virtual_vga virtual_vga;
 
+extern struct cpu_policy cpu_policy;
+
 extern unsigned long igd_opregion_pgbase;
 #define IGD_OPREGION_PAGES 3
 
@@ -50,7 +53,7 @@ extern uint8_t ioapic_version;
 #define IOAPIC_ID           0x01
 
 #define LAPIC_BASE_ADDRESS  0xfee00000
-#define LAPIC_ID(vcpu_id)   ((vcpu_id) * 2)
+#define LAPIC_ID(vcpu_id) x86_x2apic_id_from_vcpu_id(&cpu_policy, vcpu_id)
 
 #define PCI_ISA_DEVFN       0x08    /* dev 1, fn 0 */
 #define PCI_ISA_IRQ_MASK    0x0c20U /* ISA IRQs 5,10,11 are PCI connected */
diff --git a/tools/firmware/hvmloader/hvmloader.c b/tools/firmware/hvmloader/hvmloader.c
index c58841e5b5..8874165c66 100644
--- a/tools/firmware/hvmloader/hvmloader.c
+++ b/tools/firmware/hvmloader/hvmloader.c
@@ -28,6 +28,7 @@
 #include <acpi2_0.h>
 #include <xen/version.h>
 #include <xen/hvm/params.h>
+#include <xen/lib/x86/cpu-policy.h>
 #include <xen/arch-x86/hvm/start_info.h>
 
 const struct hvm_start_info *hvm_start_info;
@@ -118,6 +119,9 @@ uint8_t ioapic_version;
 
 bool acpi_enabled;
 
+/* TODO: Remove after HVM ACPI building makes it to libxl */
+struct cpu_policy cpu_policy;
+
 static void init_hypercalls(void)
 {
     uint32_t eax, ebx, ecx, edx;
@@ -331,6 +335,8 @@ int main(void)
     printf("HVM Loader\n");
     BUG_ON(hvm_start_info->magic != XEN_HVM_START_MAGIC_VALUE);
 
+    x86_cpu_policy_fill_native(&cpu_policy);
+
     init_hypercalls();
 
     memory_map_setup();
diff --git a/tools/firmware/hvmloader/util.c b/tools/firmware/hvmloader/util.c
index e82047d993..25a0245c5c 100644
--- a/tools/firmware/hvmloader/util.c
+++ b/tools/firmware/hvmloader/util.c
@@ -30,6 +30,7 @@
 #include <xen/sched.h>
 #include <xen/hvm/hvm_xs_strings.h>
 #include <xen/hvm/params.h>
+#include <xen/lib/x86/cpu-policy.h>
 
 /*
  * Check whether there exists overlap in the specified memory range.
@@ -1041,7 +1042,7 @@ void hvmloader_acpi_build_tables(struct acpi_config *config,
     ctxt.mem_ops.free = acpi_mem_free;
     ctxt.mem_ops.v2p = acpi_v2p;
 
-    acpi_build_tables(&ctxt, config);
+    acpi_build_tables(&ctxt, config, &cpu_policy);
 
     hvm_param_set(HVM_PARAM_VM_GENERATION_ID_ADDR, config->vm_gid_addr);
 }
diff --git a/tools/libacpi/build.c b/tools/libacpi/build.c
index 2f29863db1..ab05e54c96 100644
--- a/tools/libacpi/build.c
+++ b/tools/libacpi/build.c
@@ -17,6 +17,7 @@
 #include <xen/hvm/hvm_xs_strings.h>
 #include <xen/hvm/params.h>
 #include <xen/memory.h>
+#include <xen/lib/x86/cpu-policy.h>
 
 #define ACPI_MAX_SECONDARY_TABLES 16
 
@@ -65,7 +66,8 @@ static void set_checksum(
 
 static struct acpi_20_madt *construct_madt(struct acpi_ctxt *ctxt,
                                            const struct acpi_config *config,
-                                           struct acpi_info *info)
+                                           struct acpi_info *info,
+                                           const struct cpu_policy *policy)
 {
     struct acpi_20_madt           *madt;
     struct acpi_20_madt_intsrcovr *intsrcovr;
@@ -143,14 +145,25 @@ static struct acpi_20_madt *construct_madt(struct acpi_ctxt *ctxt,
     info->madt_lapic0_addr = ctxt->mem_ops.v2p(ctxt, lapic);
     for ( i = 0; i < hvminfo->nr_vcpus; i++ )
     {
+        uint32_t x2apic_id = x86_x2apic_id_from_vcpu_id(policy, i);
+
         memset(lapic, 0, sizeof(*lapic));
         lapic->type    = ACPI_PROCESSOR_LOCAL_APIC;
         lapic->length  = sizeof(*lapic);
         /* Processor ID must match processor-object IDs in the DSDT. */
         lapic->acpi_processor_id = i;
-        lapic->apic_id = config->lapic_id(i);
+        lapic->apic_id = x2apic_id;
         lapic->flags = (test_bit(i, hvminfo->vcpu_online)
                         ? ACPI_LOCAL_APIC_ENABLED : 0);
+
+        /*
+         * Error-out if the x2APIC ID doesn't fit in the entry
+         *
+         * TODO: Use "x2apic" entries if biggest x2apic_id > 254
+         */
+        if ( lapic->apic_id != x2apic_id )
+            return NULL;
+
         lapic++;
     }
 
@@ -335,7 +348,8 @@ static int construct_passthrough_tables(struct acpi_ctxt *ctxt,
 static int construct_secondary_tables(struct acpi_ctxt *ctxt,
                                       unsigned long *table_ptrs,
                                       struct acpi_config *config,
-                                      struct acpi_info *info)
+                                      struct acpi_info *info,
+                                      const struct cpu_policy *policy)
 {
     int nr_tables = 0;
     struct acpi_20_madt *madt;
@@ -349,7 +363,7 @@ static int construct_secondary_tables(struct acpi_ctxt *ctxt,
     /* MADT. */
     if ( (config->hvminfo->nr_vcpus > 1) || config->hvminfo->apic_mode )
     {
-        madt = construct_madt(ctxt, config, info);
+        madt = construct_madt(ctxt, config, info, policy);
         if (!madt) return -1;
         table_ptrs[nr_tables++] = ctxt->mem_ops.v2p(ctxt, madt);
     }
@@ -539,7 +553,8 @@ static int new_vm_gid(struct acpi_ctxt *ctxt,
     return 1;
 }
 
-int acpi_build_tables(struct acpi_ctxt *ctxt, struct acpi_config *config)
+int acpi_build_tables(struct acpi_ctxt *ctxt, struct acpi_config *config,
+                      struct cpu_policy *policy)
 {
     struct acpi_info *acpi_info;
     struct acpi_20_rsdp *rsdp;
@@ -667,7 +682,7 @@ int acpi_build_tables(struct acpi_ctxt *ctxt, struct acpi_config *config)
     set_checksum(fadt, offsetof(struct acpi_header, checksum), fadt_size);
 
     nr_secondaries = construct_secondary_tables(ctxt, secondary_tables,
-                 config, acpi_info);
+                 config, acpi_info, policy);
     if ( nr_secondaries < 0 )
         goto oom;
 
diff --git a/tools/libacpi/libacpi.h b/tools/libacpi/libacpi.h
index deda39e5db..24f62aa5d4 100644
--- a/tools/libacpi/libacpi.h
+++ b/tools/libacpi/libacpi.h
@@ -28,6 +28,8 @@
 #define ACPI_HAS_CMOS_RTC          (1<<14)
 #define ACPI_HAS_SSDT_LAPTOP_SLATE (1<<15)
 
+struct cpu_policy;
+
 struct xen_vmemrange;
 struct acpi_numa {
     uint32_t nr_vmemranges;
@@ -91,7 +93,8 @@ struct acpi_config {
     uint8_t ioapic_id;
 };
 
-int acpi_build_tables(struct acpi_ctxt *ctxt, struct acpi_config *config);
+int acpi_build_tables(struct acpi_ctxt *ctxt, struct acpi_config *config,
+                      struct cpu_policy *policy);
 
 #endif /* __LIBACPI_H__ */
 
diff --git a/tools/libs/light/libxl_x86_acpi.c b/tools/libs/light/libxl_x86_acpi.c
index 620f3c700c..a5bd42683e 100644
--- a/tools/libs/light/libxl_x86_acpi.c
+++ b/tools/libs/light/libxl_x86_acpi.c
@@ -158,11 +158,27 @@ int libxl__dom_load_acpi(libxl__gc *gc,
 {
     struct acpi_config config = {0};
     struct libxl_acpi_ctxt libxl_ctxt;
-    int rc = 0, acpi_pages_num;
+    uint16_t domid = dom->guest_domid;
+    int rc = 0, r, acpi_pages_num;
+    xc_cpu_policy_t *policy = NULL;
 
     if (b_info->type != LIBXL_DOMAIN_TYPE_PVH)
         goto out;
 
+    policy = xc_cpu_policy_init();
+    if (!policy) {
+        LOGED(ERROR, domid, "xc_cpu_policy_init failed");
+        rc = ERROR_NOMEM;
+        goto out;
+    }
+
+    r = xc_cpu_policy_get_domain(dom->xch, domid, policy);
+    if (r < 0) {
+        LOGED(ERROR, domid, "get_cpu_policy failed");
+        rc = ERROR_FAIL;
+        goto out;
+    }
+
     libxl_ctxt.page_size = XC_DOM_PAGE_SIZE(dom);
     libxl_ctxt.page_shift =  XC_DOM_PAGE_SHIFT(dom);
 
@@ -192,7 +208,7 @@ int libxl__dom_load_acpi(libxl__gc *gc,
     libxl_ctxt.guest_end += NUM_ACPI_PAGES * libxl_ctxt.page_size;
 
     /* Build the tables. */
-    rc = acpi_build_tables(&libxl_ctxt.c, &config);
+    rc = acpi_build_tables(&libxl_ctxt.c, &config, &policy->policy);
     if (rc) {
         LOG(ERROR, "acpi_build_tables failed with %d", rc);
         goto out;
@@ -226,6 +242,7 @@ int libxl__dom_load_acpi(libxl__gc *gc,
         libxl_ctxt.page_size;
 
 out:
+    xc_cpu_policy_destroy(policy);
     return rc;
 }
 
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Tue Jan 09 15:38:48 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 09 Jan 2024 15:38:48 +0000
Received: from list by lists.xenproject.org with outflank-mailman.664704.1034847 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNEBk-00018S-N9; Tue, 09 Jan 2024 15:38:48 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 664704.1034847; Tue, 09 Jan 2024 15:38:48 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNEBk-00017L-Ha; Tue, 09 Jan 2024 15:38:48 +0000
Received: by outflank-mailman (input) for mailman id 664704;
 Tue, 09 Jan 2024 15:38:46 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=C4Q/=IT=cloud.com=alejandro.vallejo@srs-se1.protection.inumbo.net>)
 id 1rNEBi-00081N-M2
 for xen-devel@lists.xenproject.org; Tue, 09 Jan 2024 15:38:46 +0000
Received: from mail-ed1-x533.google.com (mail-ed1-x533.google.com
 [2a00:1450:4864:20::533])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 2baa700d-af05-11ee-9b0f-b553b5be7939;
 Tue, 09 Jan 2024 16:38:43 +0100 (CET)
Received: by mail-ed1-x533.google.com with SMTP id
 4fb4d7f45d1cf-557bfc7f7b4so3275023a12.0
 for <xen-devel@lists.xenproject.org>; Tue, 09 Jan 2024 07:38:43 -0800 (PST)
Received: from EMEAENGAAD19049.citrite.net
 (default-46-102-197-194.interdsl.co.uk. [46.102.197.194])
 by smtp.gmail.com with ESMTPSA id
 fi3-20020a170906da0300b00a2adb417051sm1153685ejb.216.2024.01.09.07.38.42
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 09 Jan 2024 07:38:42 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 2baa700d-af05-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1704814723; x=1705419523; darn=lists.xenproject.org;
        h=content-transfer-encoding:mime-version:references:in-reply-to
         :message-id:date:subject:cc:to:from:from:to:cc:subject:date
         :message-id:reply-to;
        bh=ip0/OxWiHAhF5VmbjEgxvgDRsSrRtgBm50FRE5FwbqQ=;
        b=brS3bRqHxXNU66iQEeFqTDvN59lN3eTMjFOxwCfyQdMo0WRrADjAoGXYVCc3qnwFff
         Hz9MLJjoSSwcKAyhqe3n5HXxQBHm3qrHThtWYqx4j08VaxxsJu2VKp5Lzbv29D2XWAsg
         futw2kezOFtxTUCmz7Uoi4z+oGM+kr2itKnX4=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704814723; x=1705419523;
        h=content-transfer-encoding:mime-version:references:in-reply-to
         :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to;
        bh=ip0/OxWiHAhF5VmbjEgxvgDRsSrRtgBm50FRE5FwbqQ=;
        b=PliZcg2Hhv7Ey8nIIAdz6nKsGu1lIToqRVWYRkCrqPEDoQ1NEUMiaoH9sc+26v48XJ
         l7/bTBzsJ7QwLFedMrvwku3nlj5n94REAPFMkEbpCyMj2upBgRRmvN65GjbGuM+tyIPd
         cUasns67Y3+f8xCY9aCWXJtYXKURB3RwQV1WAJafllMZlN4kZlPO2BA0xfn9LDjDs4N4
         GulWt8bXNwMJMD36JDmkxvRqY3YHLQc6WJm+3Ydk7qzW6nZ6dBGfIMfwxELt5blWxuNa
         zFk0YeLmHGp4Ukw/EgMduSePDTxrIpZWzmrUY4OovG4S4a6wHm8eGeTHU3+94SryitAS
         RKaQ==
X-Gm-Message-State: AOJu0YziZ0o5mrKV7xnu5r4pfEDZpw0/9f3MAPnW+KnxpyMa88soWvDm
	FIidyC7ZHNoZKv1o3XvZOzlitFQ8mFgSLNm2TsZcHsfzr9Y=
X-Google-Smtp-Source: AGHT+IE2HfS1HpRppvtt5bqnp8gTZZIdOPraqXzbpm3Ahk9DyKr+vlJhrMk3dVY1NAQcGCgux/5Vvg==
X-Received: by 2002:a17:906:ecab:b0:a28:ac72:4570 with SMTP id qh11-20020a170906ecab00b00a28ac724570mr1014762ejb.21.1704814723186;
        Tue, 09 Jan 2024 07:38:43 -0800 (PST)
From: Alejandro Vallejo <alejandro.vallejo@cloud.com>
To: Xen-devel <xen-devel@lists.xenproject.org>
Cc: Alejandro Vallejo <alejandro.vallejo@cloud.com>,
	Wei Liu <wl@xen.org>,
	Anthony PERARD <anthony.perard@citrix.com>,
	Juergen Gross <jgross@suse.com>,
	Jan Beulich <jbeulich@suse.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>
Subject: [PATCH 6/6] xen/x86: Add topology generator
Date: Tue,  9 Jan 2024 15:38:34 +0000
Message-Id: <20240109153834.4192-7-alejandro.vallejo@cloud.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20240109153834.4192-1-alejandro.vallejo@cloud.com>
References: <20240109153834.4192-1-alejandro.vallejo@cloud.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

This allows toolstack to synthesise sensible topologies for guests. In
particular, this patch causes x2APIC IDs to be packed according to the
topology now exposed to the guests on leaf 0xb.

Signed-off-by: Alejandro Vallejo <alejandro.vallejo@cloud.com>
---
 tools/include/xenguest.h        |  15 ++++
 tools/libs/guest/xg_cpuid_x86.c | 144 ++++++++++++++++++++------------
 xen/arch/x86/cpu-policy.c       |   6 +-
 3 files changed, 107 insertions(+), 58 deletions(-)

diff --git a/tools/include/xenguest.h b/tools/include/xenguest.h
index 4e9078fdee..f0043c559b 100644
--- a/tools/include/xenguest.h
+++ b/tools/include/xenguest.h
@@ -843,5 +843,20 @@ enum xc_static_cpu_featuremask {
     XC_FEATUREMASK_HVM_HAP_DEF,
 };
 const uint32_t *xc_get_static_cpu_featuremask(enum xc_static_cpu_featuremask);
+
+/**
+ * Synthesise topology information in `p` given high-level constraints
+ *
+ * Topology is given in various fields accross several leaves, some of
+ * which are vendor-specific. This function uses the policy itself to
+ * derive such leaves from threads/core and cores/package.
+ *
+ * @param p                   CPU policy of the domain.
+ * @param threads_per_core    threads/core. Doesn't need to be a power of 2.
+ * @param cores_per_package   cores/package. Doesn't need to be a power of 2.
+ */
+void xc_topo_from_parts(struct cpu_policy *p,
+                        uint32_t threads_per_core, uint32_t cores_per_pkg);
+
 #endif /* __i386__ || __x86_64__ */
 #endif /* XENGUEST_H */
diff --git a/tools/libs/guest/xg_cpuid_x86.c b/tools/libs/guest/xg_cpuid_x86.c
index 4453178100..7a622721be 100644
--- a/tools/libs/guest/xg_cpuid_x86.c
+++ b/tools/libs/guest/xg_cpuid_x86.c
@@ -584,7 +584,7 @@ int xc_cpuid_apply_policy(xc_interface *xch, uint32_t domid, bool restore,
     bool hvm;
     xc_domaininfo_t di;
     struct xc_cpu_policy *p = xc_cpu_policy_init();
-    unsigned int i, nr_leaves = ARRAY_SIZE(p->leaves), nr_msrs = 0;
+    unsigned int nr_leaves = ARRAY_SIZE(p->leaves), nr_msrs = 0;
     uint32_t err_leaf = -1, err_subleaf = -1, err_msr = -1;
     uint32_t host_featureset[FEATURESET_NR_ENTRIES] = {};
     uint32_t len = ARRAY_SIZE(host_featureset);
@@ -727,60 +727,8 @@ int xc_cpuid_apply_policy(xc_interface *xch, uint32_t domid, bool restore,
     }
     else
     {
-        /*
-         * Topology for HVM guests is entirely controlled by Xen.  For now, we
-         * hardcode APIC_ID = vcpu_id * 2 to give the illusion of no SMT.
-         */
-        p->policy.basic.htt = true;
-        p->policy.extd.cmp_legacy = false;
-
-        /*
-         * Leaf 1 EBX[23:16] is Maximum Logical Processors Per Package.
-         * Update to reflect vLAPIC_ID = vCPU_ID * 2, but make sure to avoid
-         * overflow.
-         */
-        if ( !p->policy.basic.lppp )
-            p->policy.basic.lppp = 2;
-        else if ( !(p->policy.basic.lppp & 0x80) )
-            p->policy.basic.lppp *= 2;
-
-        switch ( p->policy.x86_vendor )
-        {
-        case X86_VENDOR_INTEL:
-            for ( i = 0; (p->policy.cache.subleaf[i].type &&
-                          i < ARRAY_SIZE(p->policy.cache.raw)); ++i )
-            {
-                p->policy.cache.subleaf[i].cores_per_package =
-                    (p->policy.cache.subleaf[i].cores_per_package << 1) | 1;
-                p->policy.cache.subleaf[i].threads_per_cache = 0;
-            }
-            break;
-
-        case X86_VENDOR_AMD:
-        case X86_VENDOR_HYGON:
-            /*
-             * Leaf 0x80000008 ECX[15:12] is ApicIdCoreSize.
-             * Leaf 0x80000008 ECX[7:0] is NumberOfCores (minus one).
-             * Update to reflect vLAPIC_ID = vCPU_ID * 2.  But avoid
-             * - overflow,
-             * - going out of sync with leaf 1 EBX[23:16],
-             * - incrementing ApicIdCoreSize when it's zero (which changes the
-             *   meaning of bits 7:0).
-             *
-             * UPDATE: I addition to avoiding overflow, some
-             * proprietary operating systems have trouble with
-             * apic_id_size values greater than 7.  Limit the value to
-             * 7 for now.
-             */
-            if ( p->policy.extd.nc < 0x7f )
-            {
-                if ( p->policy.extd.apic_id_size != 0 && p->policy.extd.apic_id_size < 0x7 )
-                    p->policy.extd.apic_id_size++;
-
-                p->policy.extd.nc = (p->policy.extd.nc << 1) | 1;
-            }
-            break;
-        }
+        /* TODO: Expose the ability to choose a custom topology for HVM/PVH */
+        xc_topo_from_parts(&p->policy, 1, di.max_vcpu_id + 1);
     }
 
     nr_leaves = ARRAY_SIZE(p->leaves);
@@ -1028,3 +976,89 @@ bool xc_cpu_policy_is_compatible(xc_interface *xch, xc_cpu_policy_t *host,
 
     return false;
 }
+
+static uint32_t order(uint32_t n)
+{
+    return 32 - __builtin_clz(n);
+}
+
+void xc_topo_from_parts(struct cpu_policy *p,
+                        uint32_t threads_per_core, uint32_t cores_per_pkg)
+{
+    uint32_t threads_per_pkg = threads_per_core * cores_per_pkg;
+    uint32_t apic_id_size;
+
+    if ( p->basic.max_leaf < 0xb )
+        p->basic.max_leaf = 0xb;
+
+    memset(p->topo.raw, 0, sizeof(p->topo.raw));
+
+    /* thread level */
+    p->topo.subleaf[0].nr_logical = threads_per_core;
+    p->topo.subleaf[0].id_shift = 0;
+    p->topo.subleaf[0].level = 0;
+    p->topo.subleaf[0].type = 1;
+    if ( threads_per_core > 1 )
+        p->topo.subleaf[0].id_shift = order(threads_per_core - 1);
+
+    /* core level */
+    p->topo.subleaf[1].nr_logical = cores_per_pkg;
+    if ( p->x86_vendor == X86_VENDOR_INTEL )
+        p->topo.subleaf[1].nr_logical = threads_per_pkg;
+    p->topo.subleaf[1].id_shift = p->topo.subleaf[0].id_shift;
+    p->topo.subleaf[1].level = 1;
+    p->topo.subleaf[1].type = 2;
+    if ( cores_per_pkg > 1 )
+        p->topo.subleaf[1].id_shift += order(cores_per_pkg - 1);
+
+    apic_id_size = p->topo.subleaf[1].id_shift;
+
+    /*
+     * Contrary to what the name might seem to imply. HTT is an enabler for
+     * SMP and there's no harm in setting it even with a single vCPU.
+     */
+    p->basic.htt = true;
+
+    p->basic.lppp = 0xff;
+    if ( threads_per_pkg < 0xff )
+        p->basic.lppp = threads_per_pkg;
+
+    switch ( p->x86_vendor )
+    {
+        case X86_VENDOR_INTEL:
+            struct cpuid_cache_leaf *sl = p->cache.subleaf;
+            for ( size_t i = 0; sl->type &&
+                                i < ARRAY_SIZE(p->cache.raw); i++, sl++ )
+            {
+                sl->cores_per_package = cores_per_pkg - 1;
+                sl->threads_per_cache = threads_per_core - 1;
+                if ( sl->type == 3 /* unified cache */ )
+                    sl->threads_per_cache = threads_per_pkg - 1;
+            }
+            break;
+
+        case X86_VENDOR_AMD:
+        case X86_VENDOR_HYGON:
+            /* Expose p->basic.lppp */
+            p->extd.cmp_legacy = true;
+
+            /* Clip NC to the maximum value it can hold */
+            p->extd.nc = 0xff;
+            if ( threads_per_pkg <= 0xff )
+                p->extd.nc = threads_per_pkg - 1;
+
+            /* TODO: Expose leaf e1E */
+            p->extd.topoext = false;
+
+            /*
+             * Clip APIC ID to 8, as that's what high core-count machines do
+             *
+             * That what AMD EPYC 9654 does with >256 CPUs
+             */
+            p->extd.apic_id_size = 8;
+            if ( apic_id_size < 8 )
+                p->extd.apic_id_size = apic_id_size;
+
+            break;
+    }
+}
diff --git a/xen/arch/x86/cpu-policy.c b/xen/arch/x86/cpu-policy.c
index 76efb050ed..679d1fe4fa 100644
--- a/xen/arch/x86/cpu-policy.c
+++ b/xen/arch/x86/cpu-policy.c
@@ -278,9 +278,6 @@ static void recalculate_misc(struct cpu_policy *p)
 
     p->basic.raw[0x8] = EMPTY_LEAF;
 
-    /* TODO: Rework topology logic. */
-    memset(p->topo.raw, 0, sizeof(p->topo.raw));
-
     p->basic.raw[0xc] = EMPTY_LEAF;
 
     p->extd.e1d &= ~CPUID_COMMON_1D_FEATURES;
@@ -387,6 +384,9 @@ static void __init calculate_host_policy(void)
     recalculate_xstate(p);
     recalculate_misc(p);
 
+    /* Wipe host topology. Toolstack is expected to synthesise a sensible one */
+    memset(p->topo.raw, 0, sizeof(p->topo.raw));
+
     /* When vPMU is disabled, drop it from the host policy. */
     if ( vpmu_mode == XENPMU_MODE_OFF )
         p->basic.raw[0xa] = EMPTY_LEAF;
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Tue Jan 09 15:42:28 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 09 Jan 2024 15:42:28 +0000
Received: from list by lists.xenproject.org with outflank-mailman.664734.1034857 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNEFH-0005Bl-4U; Tue, 09 Jan 2024 15:42:27 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 664734.1034857; Tue, 09 Jan 2024 15:42:27 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNEFH-0005Be-1A; Tue, 09 Jan 2024 15:42:27 +0000
Received: by outflank-mailman (input) for mailman id 664734;
 Tue, 09 Jan 2024 15:42:26 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=bEKq=IT=cloud.com=javi.merino@srs-se1.protection.inumbo.net>)
 id 1rNEFG-00055i-3k
 for xen-devel@lists.xenproject.org; Tue, 09 Jan 2024 15:42:26 +0000
Received: from mail-wm1-x329.google.com (mail-wm1-x329.google.com
 [2a00:1450:4864:20::329])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id af41ce82-af05-11ee-9b0f-b553b5be7939;
 Tue, 09 Jan 2024 16:42:24 +0100 (CET)
Received: by mail-wm1-x329.google.com with SMTP id
 5b1f17b1804b1-40d5336986cso40462895e9.1
 for <xen-devel@lists.xenproject.org>; Tue, 09 Jan 2024 07:42:24 -0800 (PST)
Received: from jmerino-thinkstation (default-46-102-197-194.interdsl.co.uk.
 [46.102.197.194]) by smtp.gmail.com with ESMTPSA id
 n12-20020a170906688c00b00a2825a9e1d0sm1178339ejr.174.2024.01.09.07.42.23
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 09 Jan 2024 07:42:23 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: af41ce82-af05-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1704814944; x=1705419744; darn=lists.xenproject.org;
        h=in-reply-to:content-disposition:mime-version:references:message-id
         :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to;
        bh=ze6XnSneRG0PU0NqUP6k/xJLsZgsIR3r5by7spki+J8=;
        b=PKrkO1L77njKhQVSjcKT4XS1Tj7+yLlNlVewAu9emgneKv2Z1UL0SINONpwcRUcZn/
         qoLVZfWIXL+heA5B4/n8y4jKoCJFI+peVsyytcZsZS4ZES6BmzmaJBVaelX8i5LqzOol
         W1AP6YK5JRs2vnU6/iExkOWm+kRDNQPErD0mE=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704814944; x=1705419744;
        h=in-reply-to:content-disposition:mime-version:references:message-id
         :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to;
        bh=ze6XnSneRG0PU0NqUP6k/xJLsZgsIR3r5by7spki+J8=;
        b=VnU+kHo+4JjfxcuSky4JpkIu46wpY+UiynE3WS8j9XlMFV9Gblgcz5HriJvOsVJZae
         GP1pepycxyTL3Bx+A8ZYjvYECY9++Hf1S8NrWrGchrIxH0TU+OEvb17FZ1BahuCXS86H
         cC7YJPV7grj03I1BPpHmuqCyE7kpwvLqel0SuUlulxg2tdcJjWLxCK+q7QIly/Dpoo2s
         yyNdLYU7wpgjFNElWKdKhawvjN4myDDBisWg4bOKMXeKKaZTD8vFwAgZCilRlKg0xZfH
         JQuSRdpUA7xemaeZNr9H1TZ1f3uUVbg/21WBioHKP1QGt3Z3JmKcGQ/OtE56wCwct1Ss
         /+kg==
X-Gm-Message-State: AOJu0Yw97AR+QUiGmBYOeBq5raFqg4NnTU0lZawEU+VUH+LNOa1vu6b+
	/T0ppqCdljA32WktIoe4xt0SSO5GkQsdfc+lZ0VjDmW/Nbs=
X-Google-Smtp-Source: AGHT+IF+CS7jBnnpsaMTW59lFi3xv/3471PJsW6gRajdwQDu4OXkjXhCn7eBY83/AZ44Nu+9mZifag==
X-Received: by 2002:a7b:c395:0:b0:40e:4e14:b90a with SMTP id s21-20020a7bc395000000b0040e4e14b90amr616394wmj.146.1704814943973;
        Tue, 09 Jan 2024 07:42:23 -0800 (PST)
Date: Tue, 9 Jan 2024 15:42:23 +0000
From: Javi Merino <javi.merino@cloud.com>
To: Julien Grall <julien@xen.org>
Cc: xen-devel@lists.xenproject.org, 
	Vikram Garhwal <vikram.garhwal@amd.com>, Stefano Stabellini <sstabellini@kernel.org>
Subject: Re: [PATCH for-4.18 v1] xen/common: Don't dereference overlay_node
 after checking that it is NULL
Message-ID: <4pfn6xyqw2eum4hokedzeqzvteyrwjokynt2zxq6wesaxfwzsp@cfk6iab3etey>
References: <6b2db92de764b6031647926d27cb14dd455eff7d.1704809355.git.javi.merino@cloud.com>
 <e579994b-80ff-42db-bf57-6c6068fca902@xen.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
In-Reply-To: <e579994b-80ff-42db-bf57-6c6068fca902@xen.org>

On Tue, Jan 09, 2024 at 03:31:55PM +0000, Julien Grall wrote:
> Hi Javi,
> 
> Title: Any reason this is titled for-4.18? Shouldn't this patch also be
> merged in staging?

This is for staging and 4.18.  If the tag "for-4.18" meant "this is
only for 4.18", then that's not what I meant.  Sorry for that.

> On 09/01/2024 14:19, Javi Merino wrote:
> > In remove_nodes(), overlay_node is dereferenced when printing the
> > error message even though it is known to be NULLL.  Fix the error
> 
> Typo: s/NULLL/NULL/
> 
> This can be fixed on commit if there is nothing else.
> 
> > message to avoid dereferencing a NULL pointer.
> > 
> > The semantic patch that spots this code is available in
> > 
> > https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/scripts/coccinelle/null/deref_null.cocci?id=1f874787ed9a2d78ed59cb21d0d90ac0178eceb0
> 
> Good catch and glad to see that coccinelle can work on Xen. I am looking
> forward for more work in that area :).

I'm working on a series to add a "make coccicheck" to Xen, similar to
the coccicheck in the kernel.  All the other semantic patches that I
think are relevant to us only give false positives, but I think it
would still be beneficial to have them.

Cheers,
Javi


From xen-devel-bounces@lists.xenproject.org Tue Jan 09 15:50:48 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 09 Jan 2024 15:50:48 +0000
Received: from list by lists.xenproject.org with outflank-mailman.664743.1034868 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNENF-00006o-T3; Tue, 09 Jan 2024 15:50:41 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 664743.1034868; Tue, 09 Jan 2024 15:50:41 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNENF-00006h-P2; Tue, 09 Jan 2024 15:50:41 +0000
Received: by outflank-mailman (input) for mailman id 664743;
 Tue, 09 Jan 2024 15:50:39 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>) id 1rNEND-00006b-Qx
 for xen-devel@lists.xenproject.org; Tue, 09 Jan 2024 15:50:39 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rNEND-000314-Kv; Tue, 09 Jan 2024 15:50:39 +0000
Received: from [15.248.2.151] (helo=[10.24.67.35])
 by xenbits.xenproject.org with esmtpsa
 (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rNEND-0001Vn-E0; Tue, 09 Jan 2024 15:50:39 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
	s=20200302mail; h=Content-Transfer-Encoding:Content-Type:In-Reply-To:From:
	References:Cc:To:Subject:MIME-Version:Date:Message-ID;
	bh=peRqcZSmXsmG1QrIEOkzCTVBqwdXs+OLvD2zPyypUV4=; b=DsMWgqhe0byJX2Vj0lU3X3bQC4
	oxZJIEuiNWZCG1DPcXjIXkgdNIm5c6nyItoMbVTb6KdkbIH7BwgCuK13cVI1wEkYXSd6m+8BpQLOl
	n2MKHIu83ULY6Bgul/D33+jCF8s8m2uQRcNNY4ljdHn+Oyn67XoL2iWCmxECm30RRPyQ=;
Message-ID: <6fe36a67-b798-42a7-8eab-07b154cfd781@xen.org>
Date: Tue, 9 Jan 2024 15:50:38 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH for-4.18 v1] xen/common: Don't dereference overlay_node
 after checking that it is NULL
Content-Language: en-GB
To: Javi Merino <javi.merino@cloud.com>
Cc: xen-devel@lists.xenproject.org, Vikram Garhwal <vikram.garhwal@amd.com>,
 Stefano Stabellini <sstabellini@kernel.org>
References: <6b2db92de764b6031647926d27cb14dd455eff7d.1704809355.git.javi.merino@cloud.com>
 <e579994b-80ff-42db-bf57-6c6068fca902@xen.org>
 <4pfn6xyqw2eum4hokedzeqzvteyrwjokynt2zxq6wesaxfwzsp@cfk6iab3etey>
From: Julien Grall <julien@xen.org>
In-Reply-To: <4pfn6xyqw2eum4hokedzeqzvteyrwjokynt2zxq6wesaxfwzsp@cfk6iab3etey>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

Hi Javi,

On 09/01/2024 15:42, Javi Merino wrote:
> On Tue, Jan 09, 2024 at 03:31:55PM +0000, Julien Grall wrote:
>> Hi Javi,
>>
>> Title: Any reason this is titled for-4.18? Shouldn't this patch also be
>> merged in staging?
> 
> This is for staging and 4.18.  If the tag "for-4.18" meant "this is
> only for 4.18", then that's not what I meant.  Sorry for that.

We usually use "for-4.XX" during code freeze to indicate whether a patch 
should be part of the upcoming relase of the next week. Hence my confusion.

Outside of the code freeze, we sometimes add the tag "Backport: 4.XX+" 
just above the Signed-off-by in addition to the Fixes tag to indicate 
how far the backport should go. The Fixes tag is also sufficient.

As a side node, this is fixing experimental code. So in general we would 
not backport such patch (we only do backport for supported features). 
This is because there are no guarantee that an experimental would not 
crash Xen.

Although, the tag is still useful for downstream that may have decided 
to take the patch in (I think AMD/Xilinx is using them) and accept some 
of the risks.

Stefano is the person doing the backport for Arm. So I will let him 
decide whether he wants to backport it.

Cheers,

-- 
Julien Grall


From xen-devel-bounces@lists.xenproject.org Tue Jan 09 16:25:47 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 09 Jan 2024 16:25:47 +0000
Received: from list by lists.xenproject.org with outflank-mailman.664778.1034892 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNEv7-0003Pe-PF; Tue, 09 Jan 2024 16:25:41 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 664778.1034892; Tue, 09 Jan 2024 16:25:41 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNEv7-0003PX-MW; Tue, 09 Jan 2024 16:25:41 +0000
Received: by outflank-mailman (input) for mailman id 664778;
 Tue, 09 Jan 2024 16:25:40 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rNEv6-0003PL-Pn; Tue, 09 Jan 2024 16:25:40 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rNEv6-0004A3-LD; Tue, 09 Jan 2024 16:25:40 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rNEv6-0004gK-7d; Tue, 09 Jan 2024 16:25:40 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rNEv6-0002XW-7H; Tue, 09 Jan 2024 16:25:40 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=R/AbGQGKx6oFABj6e9QOplcu0Ikyk66xWemBWVHkGH4=; b=UbuFjpziz+mL1N45epkMEXk12U
	N0CoeWGBsF6fdUaofxb2Uhis1Dyw3Qhk7hs9VLRZizxv53GXYb7QNNyF2pb9IH3Vm9DCHz4mSrzHE
	c10O4pMQ+seAe24p/ZoOTIQoQ+joAPZy3Jcomia3D9Sq5btmRbgBP+RzhpWyBCXWVin0=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184290-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [linux-linus test] 184290: regressions - trouble: broken/fail/pass
X-Osstest-Failures:
    linux-linus:test-amd64-amd64-xl-shadow:<job status>:broken:regression
    linux-linus:test-amd64-amd64-xl-shadow:host-install(5):broken:regression
    linux-linus:test-arm64-arm64-xl-xsm:debian-install:fail:regression
    linux-linus:test-arm64-arm64-libvirt-xsm:debian-install:fail:regression
    linux-linus:test-amd64-amd64-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    linux-linus:test-amd64-amd64-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    linux-linus:test-amd64-amd64-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-qcow2:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-raw:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    linux-linus:test-amd64-amd64-qemuu-nested-amd:debian-hvm-install/l1/l2:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-xsm:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-credit1:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-thunderx:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-credit1:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-thunderx:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-credit2:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-credit2:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-multivcpu:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-multivcpu:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-arndale:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-arndale:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-rtds:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-rtds:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit1:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit1:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-qcow2:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit2:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit2:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-libvirt-raw:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-vhd:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-vhd:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-qcow2:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-vhd:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-vhd:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl:saverestore-support-check:fail:nonblocking
X-Osstest-Versions-This:
    linux=9f8413c4a66f2fb776d3dc3c9ed20bf435eb305e
X-Osstest-Versions-That:
    linux=0dd3ee31125508cd67f7e7172247f05b7fd1753a
From: osstest service owner <osstest-admin@xenproject.org>
Date: Tue, 09 Jan 2024 16:25:40 +0000

flight 184290 linux-linus real [real]
http://logs.test-lab.xenproject.org/osstest/logs/184290/

Regressions :-(

Tests which did not succeed and are blocking,
including tests which could not be run:
 test-amd64-amd64-xl-shadow      <job status>                 broken
 test-amd64-amd64-xl-shadow    5 host-install(5)        broken REGR. vs. 184270
 test-arm64-arm64-xl-xsm      12 debian-install           fail REGR. vs. 184270
 test-arm64-arm64-libvirt-xsm 12 debian-install           fail REGR. vs. 184270

Tests which did not succeed, but are not blocking:
 test-amd64-amd64-xl-qemut-win7-amd64 19 guest-stop            fail like 184270
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 184270
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 184270
 test-armhf-armhf-libvirt-qcow2 15 saverestore-support-check   fail like 184270
 test-armhf-armhf-libvirt-raw 15 saverestore-support-check    fail  like 184270
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 184270
 test-amd64-amd64-xl-qemut-ws16-amd64 19 guest-stop            fail like 184270
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 184270
 test-amd64-amd64-libvirt     15 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl          15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl          16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-credit1  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-thunderx 15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit1  16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-thunderx 16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-credit2  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit2  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-multivcpu 15 migrate-support-check        fail  never pass
 test-armhf-armhf-xl-multivcpu 16 saverestore-support-check    fail  never pass
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-armhf-armhf-xl-arndale  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-arndale  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-rtds     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-rtds     16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-credit1  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit1  16 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-qcow2 14 migrate-support-check        fail never pass
 test-armhf-armhf-xl-credit2  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit2  16 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-raw 14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 15 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-vhd      14 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-vhd      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-qcow2 14 migrate-support-check        fail never pass
 test-armhf-armhf-libvirt-raw 14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          16 saverestore-support-check    fail   never pass

version targeted for testing:
 linux                9f8413c4a66f2fb776d3dc3c9ed20bf435eb305e
baseline version:
 linux                0dd3ee31125508cd67f7e7172247f05b7fd1753a

Last test of basis   184270  2024-01-07 20:42:19 Z    1 days
Failing since        184283  2024-01-08 20:10:43 Z    0 days    2 attempts
Testing same since   184290  2024-01-09 05:47:33 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  "Aneesh Kumar K.V (IBM)" <aneesh.kumar@kernel.org>
  "Aneesh Kumar K.V" <aneesh.kumar@linux.ibm.com>
  "Paul E. McKenney" <paulmck@kernel.org>
  Aaron Lu <aaron.lu@intel.com>
  Abel Wu <wuyun.abel@bytedance.com>
  Abhinav Singh <singhabhinav9051571833@gmail.com>
  Aditya Gupta <adityag@linux.ibm.com>
  Adrian Huang <ahuang12@lenovo.com>
  Al Viro <viro@zeniv.linux.org.uk>
  Alexander Antonov <alexander.antonov@linux.intel.com>
  Alexander Mikhalitsyn <aleksandr.mikhalitsyn@canonical.com>
  Amir Goldstein <amir73il@gmail.com>
  Ammy Yi <ammy.yi@intel.com>
  Andrei Vagin <avagin@google.com>
  Andrew Cooper <andrew.cooper3@citrix.com>
  Andrew Donnellan <ajd@linux.ibm.com>
  Andrew Donnellan <ajd@linux.ibm.com> # ocxl
  Andrzej Hajda <andrzej.hajda@intel.com>
  Andy Shevchenko <andriy.shevchenko@linux.intel.com>
  Aneesh Kumar K.V (IBM) <aneesh.kumar@kernel.org>
  Aneesh Kumar K.V <aneesh.kumar@linux.ibm.com>
  Anna-Maria Behnsen <anna-maria@linutronix.de>
  Anshuman Khandual <anshuman.khandual@arm.com>
  Ard Biesheuvel <ardb@kernel.org>
  Arnd Bergmann <arnd@arndb.de>
  Ashok Raj <ashok.raj@intel.com>
  Atul Kumar Pant <atulpant.linux@gmail.com>
  Bagas Sanjaya <bagasdotme@gmail.com>
  Bjorn Helgaas <bhelgaas@google.com>
  Bjorn Helgaas <bhelgaas@google.com>   # pci_ids.h
  Borislav Petkov (AMD) <bp@alien8.de>
  Catalin Marinas <catalin.marinas@arm.com>
  Chandan Babu R <chandanbabu@kernel.org>
  Christian Brauner <brauner@kernel.org>
  Christoph Hellwig <hch@lst.de>
  Christophe JAILLET <christophe.jaillet@wanadoo.fr>
  Christophe Leroy <christophe.leroy@csgroup.eu>
  Chuck Lever <chuck.lever@oracle.com>
  Claudiu Beznea <claudiu.beznea.uj@bp.renesas.com>
  Colin Ian King <colin.i.king@gmail.com>
  Conor Dooley <conor.dooley@microchip.com>
  Crystal Wood <oss@buserror.net>
  Daniel Bristot de Oliveira <bristot@kernel.org>
  Dario Binacchi <dario.binacchi@amarulasolutions.com>
  Darrick J. Wong <djwong@kernel.org>
  Dave Hansen <dave.hansen@linux.intel.com>
  David Heidelberg <david@ixit.cz>
  David Sterba <dsterba@suse.com>
  Derek Barbosa <debarbos@redhat.com>
  Dmitry Antipov <dmantipov@yandex.ru>
  Dmitry Torokhov <dmitry.torokhov@gmail.com>
  Edward Adam Davis <eadavis@qq.com>
  Elliot Berman <quic_eberman@quicinc.com>
  Eric Farman <farman@linux.ibm.com>  # s390
  Finn Thain <fthain@linux-m68k.org>
  Florian Fainelli <florian.fainelli@broadcom.com>
  Frederic Barrat <fbarrat@linux.ibm.com>
  Frederic Weisbecker <frederic@kernel.org>
  Fuad Tabba <tabba@google.com>
  Geert Uytterhoeven <geert+renesas@glider.be>
  Geert Uytterhoeven <geert@linux-m68k.org>
  Geoff Levand <geoff@infradead.org>
  Greg KH <gregkh@linuxfoundation.org>
  Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  Hao Ge <gehao@kylinos.cn>
  Haoran Liu <liuhaoran14@163.com>
  Hou Wenlong <houwenlong.hwl@antgroup.com>
  Huang Shijie <shijie@os.amperecomputing.com>
  Ilkka Koskinen <ilkka@os.amperecomputing.com>
  Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
  Imran Khan <imran.f.khan@oracle.com>
  Ingo Molnar <mingo@kernel.org>
  Jakub Kicinski <kuba@kernel.org>
  James Clark <james.clark@arm.com>
  James Morse <james.morse@arm.com>
  Jan Harkes <jaharkes@cs.cmu.edu>
  Jan Kara <jack@suse.cz>
  Jann Horn <jannh@google.com>
  Jeff Layton <jlayton@kernel.org>
  Jens Axboe <axboe@kernel.dk>
  Jia Zhu <zhujia.zj@bytedance.com>
  Joey Gouly <joey.gouly@arm.com>
  Jordan Niethe <jniethe5@gmail.com>
  Josef Bacik <josef@toxicpanda.com>
  Josh Don <joshdon@google.com>
  Josh Poimboeuf <jpoimboe@kernel.org>
  Juergen Gross <jgross@suse.com>
  Jun'ichi Nomura <junichi.nomura@nec.com>
  Junhao He <hejunhao3@huawei.com>
  Kajol Jain <kjain@linux.ibm.com>
  Kan Liang <kan.liang@linux.intel.com>
  Kees Cook <keescook@chromium.org>
  Kent Overstreet <kent.overstreet@linux.dev>
  Kevin Hao <haokexin@gmail.com>
  Konrad Dybcio <konrad.dybcio@linaro.org>
  Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
  Kunwu Chan <chentao@kylinos.cn>
  Kyle Meyer <kyle.meyer@hpe.com>
  Li kunyu <kunyu@nfschina.com>
  Li zeming <zeming@nfschina.com>
  Linus Torvalds <torvalds@linux-foundation.org>
  Lukas Bulwahn <lukas.bulwahn@gmail.com>
  Lukas Schauer <lukas@schauer.dev>
  Lukasz Luba <lukasz.luba@arm.com>
  Marc Zyngier <maz@kernel.org>
  Mark Brown <broonie@kernel.org>
  Mark Rutland <mark.rutland@arm.com>
  Martin K. Petersen <martin.petersen@oracle.com>
  Masahiro Yamada <masahiroy@kernel.org>
  Masami Hiramatsu <mhiramat@kernel.org>
  Mateusz Guzik <mjguzik@gmail.com>
  Matthew Wilcox (Oracle) <willy@infradead.org>
  Max Filippov <jcmvbkbc@gmail.com>
  Mel Gorman <mgorman@suse.de>
  Michael Ellerman <mpe@ellerman.id.au>
  Michal Simek <michal.simek@amd.com>
  Michal Suchánek <msuchanek@suse.de>
  Miklos Szeredi <mszeredi@redhat.com>
  Muralidhara M K <muralidhara.mk@amd.com>
  Namhyung Kim <namhyung@kernel.org>
  Nathan Chancellor <nathan@kernel.org>
  Nathan Lynch <nathanl@linux.ibm.com>
  Naveen N Rao <naveen@kernel.org>
  Nicholas Piggin <npiggin@gmail.com>
  Nikolay Borisov <nik.borisov@suse.com>
  Paul E. McKenney <paulmck@kernel.org>
  Peter Zijlstra (Intel) <peterz@infradead.org>
  Peter Zijlstra <peterz@infradead.org>
  Pierre Gondois <pierre.gondois@arm.com>
  Qais Yousef <qyousef@layalina.io>
  Qiuxu Zhuo <qiuxu.zhuo@intel.com>
  Rafael J. Wysocki <rafael.j.wysocki@intel.com>
  Rafael J. Wysocki <rafael@kernel.org>
  Raghavendra K T <raghavendra.kt@amd.com>
  Randy Dunlap <rdunlap@infradead.org>
  Ravi Bangoria <ravi.bangoria@amd.com>
  Rob Herring <robh@kernel.org>
  Robin Murphy <robin.murphy@arm.com>
  Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
  Ryan Roberts <ryan.roberts@arm.com>
  Ryusuke Konishi <konishi.ryusuke@gmail.com>
  Sam James <sam@gentoo.org>
  Samuel Zeter <samuelzeter@gmail.com>
  Sathvika Vasireddy <sv@linux.ibm.com>
  Segher Boessenkool <segher@kernel.crashing.org>
  Shawn Guo <shawn.guo@linaro.org>
  Shuai Xue <xueshuai@linux.alibaba.com>
  Srikar Dronamraju <srikar@linux.vnet.ibm.com>
  Stephen Rothwell <sfr@canb.auug.org.au>
  Sudeep Holla <sudeep.holla@arm.com>
  Sven Schnelle <svens@linux.ibm.com>
  Tejun Heo <tj@kernel.org>
  Thomas Gleixner <tglx@linutronix.de>
  Thomas Richter <tmricht@linux.ibm.com>
  Tom Lendacky <thomas.lendacky@amd.com>
  Tony Luck <tony.luck@intel.com>
  Tsung-Han Lin <tsunghan.tw@gmail.com>
  Uros Bizjak <ubizjak@gmail.com>
  Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
  Vaibhav Jain <vaibhav@linux.ibm.com>
  Vegard Nossum <vegard.nossum@oracle.com>
  Vincent Guittot <vincent.guittot@linaro.org>
  Viresh Kumar <viresh.kumar@linaro.org>
  Waiman Long <longman@redhat.com>
  Wang Jinchao <wangjinchao@xfusion.com>
  Wenyu Huang <huangwenyu5@huawei.com>
  Will Deacon <will@kernel.org>
  Xiaoming Wang <xiaoming.wang@intel.com>
  Xin Yin <yinxin.x@bytedance.com>
  Xu Yang <xu.yang_2@nxp.com>
  Xu Yilun <yilun.xu@intel.com>
  Yafang Shao <laoar.shao@gmail.com>
  YangXin <yx.0xffff@gmail.com>
  Yazen Ghannam <yazen.ghannam@amd.com>
  Yiwei Lin <s921975628@gmail.com>
  Youquan Song <youquan.song@intel.com>
  Yuntao Wang <ytcoode@gmail.com>
  Zenghui Yu <yuzenghui@huawei.com>
  Zhao Ke <ke.zhao@shingroup.cn>
  Zhiquan Li <zhiquan1.li@intel.com>

jobs:
 build-amd64-xsm                                              pass    
 build-arm64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64                                                  pass    
 build-arm64                                                  pass    
 build-armhf                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-arm64-libvirt                                          pass    
 build-armhf-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-pvops                                            pass    
 build-arm64-pvops                                            pass    
 build-armhf-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-amd64-amd64-xl                                          pass    
 test-amd64-coresched-amd64-xl                                pass    
 test-arm64-arm64-xl                                          pass    
 test-armhf-armhf-xl                                          pass    
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm           pass    
 test-amd64-amd64-xl-qemut-stubdom-debianhvm-amd64-xsm        pass    
 test-amd64-amd64-xl-qemut-debianhvm-i386-xsm                 pass    
 test-amd64-amd64-xl-qemuu-debianhvm-i386-xsm                 pass    
 test-amd64-amd64-libvirt-xsm                                 pass    
 test-arm64-arm64-libvirt-xsm                                 fail    
 test-amd64-amd64-xl-xsm                                      pass    
 test-arm64-arm64-xl-xsm                                      fail    
 test-amd64-amd64-qemuu-nested-amd                            fail    
 test-amd64-amd64-xl-pvhv2-amd                                pass    
 test-amd64-amd64-dom0pvh-xl-amd                              pass    
 test-amd64-amd64-xl-qemut-debianhvm-amd64                    pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64                    pass    
 test-amd64-amd64-freebsd11-amd64                             pass    
 test-amd64-amd64-freebsd12-amd64                             pass    
 test-amd64-amd64-xl-qemuu-ovmf-amd64                         pass    
 test-amd64-amd64-xl-qemut-win7-amd64                         fail    
 test-amd64-amd64-xl-qemuu-win7-amd64                         fail    
 test-amd64-amd64-xl-qemut-ws16-amd64                         fail    
 test-amd64-amd64-xl-qemuu-ws16-amd64                         fail    
 test-armhf-armhf-xl-arndale                                  pass    
 test-amd64-amd64-examine-bios                                pass    
 test-amd64-amd64-xl-credit1                                  pass    
 test-arm64-arm64-xl-credit1                                  pass    
 test-armhf-armhf-xl-credit1                                  pass    
 test-amd64-amd64-xl-credit2                                  pass    
 test-arm64-arm64-xl-credit2                                  pass    
 test-armhf-armhf-xl-credit2                                  pass    
 test-amd64-amd64-xl-qemuu-dmrestrict-amd64-dmrestrict        pass    
 test-amd64-amd64-examine                                     pass    
 test-arm64-arm64-examine                                     pass    
 test-armhf-armhf-examine                                     pass    
 test-amd64-amd64-qemuu-nested-intel                          pass    
 test-amd64-amd64-xl-pvhv2-intel                              pass    
 test-amd64-amd64-dom0pvh-xl-intel                            pass    
 test-amd64-amd64-libvirt                                     pass    
 test-armhf-armhf-libvirt                                     pass    
 test-amd64-amd64-xl-multivcpu                                pass    
 test-armhf-armhf-xl-multivcpu                                pass    
 test-amd64-amd64-pair                                        pass    
 test-amd64-amd64-libvirt-pair                                pass    
 test-amd64-amd64-xl-pvshim                                   pass    
 test-amd64-amd64-pygrub                                      pass    
 test-amd64-amd64-libvirt-qcow2                               pass    
 test-armhf-armhf-libvirt-qcow2                               pass    
 test-amd64-amd64-libvirt-raw                                 pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-armhf-armhf-libvirt-raw                                 pass    
 test-amd64-amd64-xl-rtds                                     pass    
 test-armhf-armhf-xl-rtds                                     pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64-shadow             pass    
 test-amd64-amd64-xl-shadow                                   broken  
 test-arm64-arm64-xl-thunderx                                 pass    
 test-amd64-amd64-examine-uefi                                pass    
 test-amd64-amd64-xl-vhd                                      pass    
 test-arm64-arm64-xl-vhd                                      pass    
 test-armhf-armhf-xl-vhd                                      pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary

broken-job test-amd64-amd64-xl-shadow broken
broken-step test-amd64-amd64-xl-shadow host-install(5)

Not pushing.

(No revision log; it would be 12830 lines long.)


From xen-devel-bounces@lists.xenproject.org Tue Jan 09 16:29:41 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 09 Jan 2024 16:29:41 +0000
Received: from list by lists.xenproject.org with outflank-mailman.664790.1034902 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNEyx-0004iv-F1; Tue, 09 Jan 2024 16:29:39 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 664790.1034902; Tue, 09 Jan 2024 16:29:39 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNEyx-0004io-CL; Tue, 09 Jan 2024 16:29:39 +0000
Received: by outflank-mailman (input) for mailman id 664790;
 Tue, 09 Jan 2024 16:29:38 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rNEyw-0004hS-8f; Tue, 09 Jan 2024 16:29:38 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rNEyw-0004Fj-7i; Tue, 09 Jan 2024 16:29:38 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rNEyv-0004lF-Uo; Tue, 09 Jan 2024 16:29:37 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rNEyv-0005Hr-UL; Tue, 09 Jan 2024 16:29:37 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=4Yf9Lv2M8p6NV+OipWgyFtMacYScdi+Ev6IYRB+C9Fc=; b=ICXvl5GHevFYQ8tdYPF0z1QQy6
	ajIsu50dMfBRjWvNaC94BJIV/xbEFQ8OJrCd62x/MG2xLKIfsfM3FUCeYWzvH3fIsnQ5w79wgz7EJ
	8jMgZ5H6bzJhk9E1C4zQJTThYrlqJ9HWTblkqXEQDOGdOH5WQhyB/TvCI46He6QPShY8=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184295-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [xen-unstable-smoke test] 184295: tolerable all pass - PUSHED
X-Osstest-Failures:
    xen-unstable-smoke:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    xen-unstable-smoke:test-arm64-arm64-xl-xsm:migrate-support-check:fail:nonblocking
    xen-unstable-smoke:test-arm64-arm64-xl-xsm:saverestore-support-check:fail:nonblocking
    xen-unstable-smoke:test-armhf-armhf-xl:migrate-support-check:fail:nonblocking
    xen-unstable-smoke:test-armhf-armhf-xl:saverestore-support-check:fail:nonblocking
X-Osstest-Versions-This:
    xen=c27c8922f2c6995d688437b0758cec6a27d18320
X-Osstest-Versions-That:
    xen=2467ab2a74463107132f7d929d2ff0e30a8b6fa3
From: osstest service owner <osstest-admin@xenproject.org>
Date: Tue, 09 Jan 2024 16:29:37 +0000

flight 184295 xen-unstable-smoke real [real]
http://logs.test-lab.xenproject.org/osstest/logs/184295/

Failures :-/ but no regressions.

Tests which did not succeed, but are not blocking:
 test-amd64-amd64-libvirt     15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-xsm      15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-xsm      16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl          15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          16 saverestore-support-check    fail   never pass

version targeted for testing:
 xen                  c27c8922f2c6995d688437b0758cec6a27d18320
baseline version:
 xen                  2467ab2a74463107132f7d929d2ff0e30a8b6fa3

Last test of basis   184274  2024-01-08 10:05:30 Z    1 days
Testing same since   184295  2024-01-09 14:00:26 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Jan Beulich <jbeulich@suse.com>
  Roger Pau Monné <roger.pau@citrix.com>

jobs:
 build-arm64-xsm                                              pass    
 build-amd64                                                  pass    
 build-armhf                                                  pass    
 build-amd64-libvirt                                          pass    
 test-armhf-armhf-xl                                          pass    
 test-arm64-arm64-xl-xsm                                      pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64                    pass    
 test-amd64-amd64-libvirt                                     pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Pushing revision :

To xenbits.xen.org:/home/xen/git/xen.git
   2467ab2a74..c27c8922f2  c27c8922f2c6995d688437b0758cec6a27d18320 -> smoke


From xen-devel-bounces@lists.xenproject.org Tue Jan 09 16:50:21 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 09 Jan 2024 16:50:21 +0000
Received: from list by lists.xenproject.org with outflank-mailman.664798.1034913 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNFIs-0004Lk-2y; Tue, 09 Jan 2024 16:50:14 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 664798.1034913; Tue, 09 Jan 2024 16:50:14 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNFIr-0004Ld-WA; Tue, 09 Jan 2024 16:50:14 +0000
Received: by outflank-mailman (input) for mailman id 664798;
 Tue, 09 Jan 2024 16:50:13 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=7UFC=IT=damsy.net=pierre-eric@srs-se1.protection.inumbo.net>)
 id 1rNFIq-0004I1-DO
 for xen-devel@lists.xenproject.org; Tue, 09 Jan 2024 16:50:13 +0000
Received: from mail.damsy.net (mail.damsy.net [85.90.245.9])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 25b5bf21-af0f-11ee-9b0f-b553b5be7939;
 Tue, 09 Jan 2024 17:50:09 +0100 (CET)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 25b5bf21-af0f-11ee-9b0f-b553b5be7939
Message-ID: <ccc34ce0-44af-425e-8634-6f7a0583ee12@damsy.net>
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=damsy.net; s=201803;
	t=1704819007;
	h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
	 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=cmTqXjQE9oi8D1S4ju4PPUhrFm+c3g32Xgd7HRMxqhc=;
	b=tiN/sfBdf4M7vCNJgv2G6++I/3fx7ZWcDOdGKbRaf7v52r68W290yUL78WKbMBjhEToFcc
	yG0ZIIKtbhu/YT0cfX2qBS+nbJ7YllFTXYXoZnyJ90zd0n+a14fUNtM+lAnutBQ7gsvSeg
	fOrtVBQrNs+vAdZ5OnG1dS6aBIxQi9xqV6Qut1xhme6bRYQW6B3f1ONBzxcVrqcJ30LxVY
	Y9BPXL4/gHaq8UuPK1rY7bpAR1Cc9b7VynBP2leczArWykzoxuC+k3nMAfMiaBfUptxIFJ
	0B2H7MmmXpHGioS13IuNz4vqb+nFUZPfmtl6PCGOwHw9el6eJ/+14jiTYVaXCw==
Date: Tue, 9 Jan 2024 17:50:06 +0100
MIME-Version: 1.0
Subject: Re: [PATCH v6 07/11] virtio-gpu: Handle resource blob commands
Content-Language: fr
To: Huang Rui <ray.huang@amd.com>, Akihiko Odaki <akihiko.odaki@daynix.com>,
 =?UTF-8?Q?Marc-Andr=C3=A9_Lureau?= <marcandre.lureau@gmail.com>,
 =?UTF-8?Q?Philippe_Mathieu-Daud=C3=A9?= <philmd@linaro.org>,
 Gerd Hoffmann <kraxel@redhat.com>, "Michael S . Tsirkin" <mst@redhat.com>,
 Stefano Stabellini <sstabellini@kernel.org>,
 Anthony PERARD <anthony.perard@citrix.com>,
 Antonio Caggiano <quic_acaggian@quicinc.com>,
 "Dr . David Alan Gilbert" <dgilbert@redhat.com>,
 Robert Beckett <bob.beckett@collabora.com>,
 Dmitry Osipenko <dmitry.osipenko@collabora.com>,
 Gert Wollny <gert.wollny@collabora.com>, =?UTF-8?Q?Alex_Benn=C3=A9e?=
 <alex.bennee@linaro.org>, qemu-devel@nongnu.org
Cc: xen-devel@lists.xenproject.org,
 Gurchetan Singh <gurchetansingh@chromium.org>, ernunes@redhat.com,
 Alyssa Ross <hi@alyssa.is>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger.pau@citrix.com>, Alex Deucher <alexander.deucher@amd.com>,
 Stefano Stabellini <stefano.stabellini@amd.com>,
 =?UTF-8?Q?Christian_K=C3=B6nig?= <christian.koenig@amd.com>,
 Xenia Ragiadakou <xenia.ragiadakou@amd.com>,
 Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com>,
 Honglei Huang <honglei1.huang@amd.com>, Julia Zhang <julia.zhang@amd.com>,
 Chen Jiqian <Jiqian.Chen@amd.com>,
 Antonio Caggiano <antonio.caggiano@collabora.com>
References: <20231219075320.165227-1-ray.huang@amd.com>
 <20231219075320.165227-8-ray.huang@amd.com>
From: Pierre-Eric Pelloux-Prayer <pierre-eric@damsy.net>
In-Reply-To: <20231219075320.165227-8-ray.huang@amd.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit



Le 19/12/2023 à 08:53, Huang Rui a écrit :
> From: Antonio Caggiano <antonio.caggiano@collabora.com>
> 
> Support BLOB resources creation, mapping and unmapping by calling the
> new stable virglrenderer 0.10 interface. Only enabled when available and
> via the blob config. E.g. -device virtio-vga-gl,blob=true
> 
> Signed-off-by: Antonio Caggiano <antonio.caggiano@collabora.com>
> Signed-off-by: Dmitry Osipenko <dmitry.osipenko@collabora.com>
> Signed-off-by: Xenia Ragiadakou <xenia.ragiadakou@amd.com>
> Signed-off-by: Huang Rui <ray.huang@amd.com>
> ---
> 
> Changes in v6:
> - Use new struct virgl_gpu_resource.
> - Unmap, unref and destroy the resource only after the memory region
>    has been completely removed.
> - In unref check whether the resource is still mapped.
> - In unmap_blob check whether the resource has been already unmapped.
> - Fix coding style
> 
>   hw/display/virtio-gpu-virgl.c | 274 +++++++++++++++++++++++++++++++++-
>   hw/display/virtio-gpu.c       |   4 +-
>   meson.build                   |   4 +
>   3 files changed, 276 insertions(+), 6 deletions(-)
> 
> diff --git a/hw/display/virtio-gpu-virgl.c b/hw/display/virtio-gpu-virgl.c
> index faab374336..5a3a292f79 100644
> --- a/hw/display/virtio-gpu-virgl.c
> +++ b/hw/display/virtio-gpu-virgl.c
> @@ -17,6 +17,7 @@
>   #include "trace.h"
>   #include "hw/virtio/virtio.h"
>   #include "hw/virtio/virtio-gpu.h"
> +#include "hw/virtio/virtio-gpu-bswap.h"
>   
>   #include "ui/egl-helpers.h"
>   
> @@ -24,8 +25,62 @@
>   
>   struct virgl_gpu_resource {
>       struct virtio_gpu_simple_resource res;
> +    uint32_t ref;
> +    VirtIOGPU *g;
> +
> +#ifdef HAVE_VIRGL_RESOURCE_BLOB
> +    /* only blob resource needs this region to be mapped as guest mmio */
> +    MemoryRegion *region;
> +#endif
>   };
>   
> +static void vres_get_ref(struct virgl_gpu_resource *vres)
> +{
> +    uint32_t ref;
> +
> +    ref = qatomic_fetch_inc(&vres->ref);
> +    g_assert(ref < INT_MAX);
> +}
> +
> +static void virgl_resource_destroy(struct virgl_gpu_resource *vres)
> +{
> +    struct virtio_gpu_simple_resource *res;
> +    VirtIOGPU *g;
> +
> +    if (!vres) {
> +        return;
> +    }
> +
> +    g = vres->g;
> +    res = &vres->res;
> +    QTAILQ_REMOVE(&g->reslist, res, next);
> +    virtio_gpu_cleanup_mapping(g, res);
> +    g_free(vres);
> +}
> +
> +static void virgl_resource_unref(struct virgl_gpu_resource *vres)
> +{
> +    struct virtio_gpu_simple_resource *res;
> +
> +    if (!vres) {
> +        return;
> +    }
> +
> +    res = &vres->res;
> +    virgl_renderer_resource_detach_iov(res->resource_id, NULL, NULL);
> +    virgl_renderer_resource_unref(res->resource_id);
> +}
> +
> +static void vres_put_ref(struct virgl_gpu_resource *vres)
> +{
> +    g_assert(vres->ref > 0);
> +
> +    if (qatomic_fetch_dec(&vres->ref) == 1) {
> +        virgl_resource_unref(vres);
> +        virgl_resource_destroy(vres);
> +    }
> +}
> +
>   static struct virgl_gpu_resource *
>   virgl_gpu_find_resource(VirtIOGPU *g, uint32_t resource_id)
>   {
> @@ -59,6 +114,8 @@ static void virgl_cmd_create_resource_2d(VirtIOGPU *g,
>                                          c2d.width, c2d.height);
>   
>       vres = g_new0(struct virgl_gpu_resource, 1);
> +    vres_get_ref(vres);
> +    vres->g = g;
>       vres->res.width = c2d.width;
>       vres->res.height = c2d.height;
>       vres->res.format = c2d.format;
> @@ -91,6 +148,8 @@ static void virgl_cmd_create_resource_3d(VirtIOGPU *g,
>                                          c3d.width, c3d.height, c3d.depth);
>   
>       vres = g_new0(struct virgl_gpu_resource, 1);
> +    vres_get_ref(vres);
> +    vres->g = g;
>       vres->res.width = c3d.width;
>       vres->res.height = c3d.height;
>       vres->res.format = c3d.format;
> @@ -126,12 +185,21 @@ static void virgl_cmd_resource_unref(VirtIOGPU *g,
>           return;
>       }
>   
> -    virgl_renderer_resource_detach_iov(unref.resource_id, NULL, NULL);
> -    virgl_renderer_resource_unref(unref.resource_id);
> +#ifdef HAVE_VIRGL_RESOURCE_BLOB
> +    if (vres->region) {
> +        VirtIOGPUBase *b = VIRTIO_GPU_BASE(g);
> +        MemoryRegion *mr = vres->region;
> +
> +        warn_report("%s: blob resource %d not unmapped",
> +                    __func__, unref.resource_id);
> +        vres->region = NULL;

Shouldn't there be a call to memory_region_unref(mr)?

> +        memory_region_set_enabled(mr, false);
> +        memory_region_del_subregion(&b->hostmem, mr);
> +        object_unparent(OBJECT(mr));
> +    }
> +#endif /* HAVE_VIRGL_RESOURCE_BLOB */
>   
> -    QTAILQ_REMOVE(&g->reslist, &vres->res, next);
> -    virtio_gpu_cleanup_mapping(g, &vres->res);
> -    g_free(vres);
> +    vres_put_ref(vres);
>   }
>   
>   static void virgl_cmd_context_create(VirtIOGPU *g,
> @@ -470,6 +538,191 @@ static void virgl_cmd_get_capset(VirtIOGPU *g,
>       g_free(resp);
>   }
>   
> +#ifdef HAVE_VIRGL_RESOURCE_BLOB
> +
> +static void virgl_resource_unmap(struct virgl_gpu_resource *vres)
> +{
> +    if (!vres) {
> +        return;
> +    }
> +
> +    virgl_renderer_resource_unmap(vres->res.resource_id);
> +
> +    vres_put_ref(vres);
> +}
> +
> +static void virgl_resource_blob_async_unmap(void *obj)
> +{
> +    MemoryRegion *mr = MEMORY_REGION(obj);
> +    struct virgl_gpu_resource *vres = mr->opaque;
> +
> +    virgl_resource_unmap(vres);
> +
> +    g_free(obj);
> +}
> +
> +static void virgl_cmd_resource_create_blob(VirtIOGPU *g,
> +                                           struct virtio_gpu_ctrl_command *cmd)
> +{
> +    struct virgl_gpu_resource *vres;
> +    struct virtio_gpu_resource_create_blob cblob;
> +    struct virgl_renderer_resource_create_blob_args virgl_args = { 0 };
> +    int ret;
> +
> +    VIRTIO_GPU_FILL_CMD(cblob);
> +    virtio_gpu_create_blob_bswap(&cblob);
> +    trace_virtio_gpu_cmd_res_create_blob(cblob.resource_id, cblob.size);
> +
> +    if (cblob.resource_id == 0) {
> +        qemu_log_mask(LOG_GUEST_ERROR, "%s: resource id 0 is not allowed\n",
> +                      __func__);
> +        cmd->error = VIRTIO_GPU_RESP_ERR_INVALID_RESOURCE_ID;
> +        return;
> +    }
> +
> +    vres = virgl_gpu_find_resource(g, cblob.resource_id);
> +    if (vres) {
> +        qemu_log_mask(LOG_GUEST_ERROR, "%s: resource already exists %d\n",
> +                      __func__, cblob.resource_id);
> +        cmd->error = VIRTIO_GPU_RESP_ERR_INVALID_RESOURCE_ID;
> +        return;
> +    }
> +
> +    vres = g_new0(struct virgl_gpu_resource, 1);
> +    vres_get_ref(vres);
> +    vres->g = g;
> +    vres->res.resource_id = cblob.resource_id;
> +    vres->res.blob_size = cblob.size;
> +
> +    if (cblob.blob_mem != VIRTIO_GPU_BLOB_MEM_HOST3D) {
> +        ret = virtio_gpu_create_mapping_iov(g, cblob.nr_entries, sizeof(cblob),
> +                                            cmd, &vres->res.addrs,
> +                                            &vres->res.iov, &vres->res.iov_cnt);
> +        if (!ret) {
> +            g_free(vres);
> +            cmd->error = VIRTIO_GPU_RESP_ERR_UNSPEC;
> +            return;
> +        }
> +    }
> +
> +    QTAILQ_INSERT_HEAD(&g->reslist, &vres->res, next);
> +
> +    virgl_args.res_handle = cblob.resource_id;
> +    virgl_args.ctx_id = cblob.hdr.ctx_id;
> +    virgl_args.blob_mem = cblob.blob_mem;
> +    virgl_args.blob_id = cblob.blob_id;
> +    virgl_args.blob_flags = cblob.blob_flags;
> +    virgl_args.size = cblob.size;
> +    virgl_args.iovecs = vres->res.iov;
> +    virgl_args.num_iovs = vres->res.iov_cnt;
> +
> +    ret = virgl_renderer_resource_create_blob(&virgl_args);
> +    if (ret) {
> +        qemu_log_mask(LOG_GUEST_ERROR, "%s: virgl blob create error: %s\n",
> +                      __func__, strerror(-ret));
> +        cmd->error = VIRTIO_GPU_RESP_ERR_UNSPEC;
> +    }
> +}
> +
> +static void virgl_cmd_resource_map_blob(VirtIOGPU *g,
> +                                        struct virtio_gpu_ctrl_command *cmd)
> +{
> +    struct virgl_gpu_resource *vres;
> +    struct virtio_gpu_resource_map_blob mblob;
> +    int ret;
> +    void *data;
> +    uint64_t size;
> +    struct virtio_gpu_resp_map_info resp;
> +    VirtIOGPUBase *b = VIRTIO_GPU_BASE(g);
> +
> +    VIRTIO_GPU_FILL_CMD(mblob);
> +    virtio_gpu_map_blob_bswap(&mblob);
> +
> +    if (mblob.resource_id == 0) {
> +        qemu_log_mask(LOG_GUEST_ERROR, "%s: resource id 0 is not allowed\n",
> +                      __func__);
> +        cmd->error = VIRTIO_GPU_RESP_ERR_INVALID_RESOURCE_ID;
> +        return;
> +    }
> +
> +    vres = virgl_gpu_find_resource(g, mblob.resource_id);
> +    if (!vres) {
> +        qemu_log_mask(LOG_GUEST_ERROR, "%s: resource does not exist %d\n",
> +                      __func__, mblob.resource_id);
> +        cmd->error = VIRTIO_GPU_RESP_ERR_INVALID_RESOURCE_ID;
> +        return;
> +    }
> +    if (vres->region) {
> +        qemu_log_mask(LOG_GUEST_ERROR, "%s: resource already mapped %d\n",
> +                      __func__, mblob.resource_id);
> +        cmd->error = VIRTIO_GPU_RESP_ERR_INVALID_RESOURCE_ID;
> +        return;
> +    }
> +
> +    ret = virgl_renderer_resource_map(vres->res.resource_id, &data, &size);
> +    if (ret) {
> +        qemu_log_mask(LOG_GUEST_ERROR, "%s: resource map error: %s\n",
> +                      __func__, strerror(-ret));
> +        cmd->error = VIRTIO_GPU_RESP_ERR_INVALID_RESOURCE_ID;
> +        return;
> +    }
> +
> +    vres_get_ref(vres);

Why is this needed? And if it is, shouldn't virgl_cmd_resource_unmap_blob
call "vres_put_ref(vres)" ?

> +    vres->region = g_new0(MemoryRegion, 1);
> +    memory_region_init_ram_ptr(vres->region, OBJECT(g), NULL, size, data);
> +    vres->region->opaque = vres;
> +    OBJECT(vres->region)->free = virgl_resource_blob_async_unmap;
> +    memory_region_add_subregion(&b->hostmem, mblob.offset, vres->region);
> +    memory_region_set_enabled(vres->region, true);
> +
> +    memset(&resp, 0, sizeof(resp));
> +    resp.hdr.type = VIRTIO_GPU_RESP_OK_MAP_INFO;
> +    virgl_renderer_resource_get_map_info(mblob.resource_id, &resp.map_info);
> +    virtio_gpu_ctrl_response(g, cmd, &resp.hdr, sizeof(resp));
> +}
> +
> +static void virgl_cmd_resource_unmap_blob(VirtIOGPU *g,
> +                                          struct virtio_gpu_ctrl_command *cmd)
> +{
> +    struct virgl_gpu_resource *vres;
> +    struct virtio_gpu_resource_unmap_blob ublob;
> +    VirtIOGPUBase *b = VIRTIO_GPU_BASE(g);
> +    MemoryRegion *mr;
> +
> +    VIRTIO_GPU_FILL_CMD(ublob);
> +    virtio_gpu_unmap_blob_bswap(&ublob);
> +
> +    if (ublob.resource_id == 0) {
> +        qemu_log_mask(LOG_GUEST_ERROR, "%s: resource id 0 is not allowed\n",
> +                      __func__);
> +        cmd->error = VIRTIO_GPU_RESP_ERR_INVALID_RESOURCE_ID;
> +        return;
> +    }
> +
> +    vres = virgl_gpu_find_resource(g, ublob.resource_id);
> +    if (!vres) {
> +        qemu_log_mask(LOG_GUEST_ERROR, "%s: resource does not exist %d\n",
> +                      __func__, ublob.resource_id);
> +        cmd->error = VIRTIO_GPU_RESP_ERR_INVALID_RESOURCE_ID;
> +        return;
> +    }
> +
> +    if (!vres->region) {
> +        qemu_log_mask(LOG_GUEST_ERROR, "%s: resource already unmapped %d\n",
> +                      __func__, ublob.resource_id);
> +        cmd->error = VIRTIO_GPU_RESP_ERR_INVALID_RESOURCE_ID;
> +        return;
> +    }
> +
> +    mr = vres->region;
> +    vres->region = NULL;

memory_region_unref(mr)?

Note that AFAICT without the added memory_region_unref() calls virgl_resource_unmap()
was never called.

Regards,
Pierre-Eric

> +    memory_region_set_enabled(mr, false);
> +    memory_region_del_subregion(&b->hostmem, mr);
> +    object_unparent(OBJECT(mr));
> +}
> +
> +#endif /* HAVE_VIRGL_RESOURCE_BLOB */
> +
>   void virtio_gpu_virgl_process_cmd(VirtIOGPU *g,
>                                         struct virtio_gpu_ctrl_command *cmd)
>   {
> @@ -536,6 +789,17 @@ void virtio_gpu_virgl_process_cmd(VirtIOGPU *g,
>       case VIRTIO_GPU_CMD_GET_EDID:
>           virtio_gpu_get_edid(g, cmd);
>           break;
> +#ifdef HAVE_VIRGL_RESOURCE_BLOB
> +    case VIRTIO_GPU_CMD_RESOURCE_CREATE_BLOB:
> +        virgl_cmd_resource_create_blob(g, cmd);
> +        break;
> +    case VIRTIO_GPU_CMD_RESOURCE_MAP_BLOB:
> +        virgl_cmd_resource_map_blob(g, cmd);
> +        break;
> +    case VIRTIO_GPU_CMD_RESOURCE_UNMAP_BLOB:
> +        virgl_cmd_resource_unmap_blob(g, cmd);
> +        break;
> +#endif /* HAVE_VIRGL_RESOURCE_BLOB */
>       default:
>           cmd->error = VIRTIO_GPU_RESP_ERR_UNSPEC;
>           break;
> diff --git a/hw/display/virtio-gpu.c b/hw/display/virtio-gpu.c
> index 4c3ec9d0ea..8189c392dc 100644
> --- a/hw/display/virtio-gpu.c
> +++ b/hw/display/virtio-gpu.c
> @@ -1449,10 +1449,12 @@ void virtio_gpu_device_realize(DeviceState *qdev, Error **errp)
>               return;
>           }
>   
> +#ifndef HAVE_VIRGL_RESOURCE_BLOB
>           if (virtio_gpu_virgl_enabled(g->parent_obj.conf)) {
> -            error_setg(errp, "blobs and virgl are not compatible (yet)");
> +            error_setg(errp, "Linked virglrenderer does not support blob resources");
>               return;
>           }
> +#endif
>       }
>   
>       if (!virtio_gpu_base_device_realize(qdev,
> diff --git a/meson.build b/meson.build
> index ea52ef1b9c..629407128e 100644
> --- a/meson.build
> +++ b/meson.build
> @@ -1054,6 +1054,10 @@ if not get_option('virglrenderer').auto() or have_system or have_vhost_user_gpu
>                            cc.has_function('virgl_renderer_context_create_with_flags',
>                                            prefix: '#include <virglrenderer.h>',
>                                            dependencies: virgl))
> +    config_host_data.set('HAVE_VIRGL_RESOURCE_BLOB',
> +                         cc.has_function('virgl_renderer_resource_create_blob',
> +                                         prefix: '#include <virglrenderer.h>',
> +                                         dependencies: virgl))
>     endif
>   endif
>   rutabaga = not_found


From xen-devel-bounces@lists.xenproject.org Tue Jan 09 17:04:32 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 09 Jan 2024 17:04:32 +0000
Received: from list by lists.xenproject.org with outflank-mailman.664803.1034923 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNFWd-0008KZ-AC; Tue, 09 Jan 2024 17:04:27 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 664803.1034923; Tue, 09 Jan 2024 17:04:27 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNFWd-0008KS-7M; Tue, 09 Jan 2024 17:04:27 +0000
Received: by outflank-mailman (input) for mailman id 664803;
 Tue, 09 Jan 2024 17:04:25 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=HMzr=IT=epam.com=prvs=7738cdaa61=oleksandr_tyshchenko@srs-se1.protection.inumbo.net>)
 id 1rNFWb-0008FF-6F
 for xen-devel@lists.xenproject.org; Tue, 09 Jan 2024 17:04:25 +0000
Received: from mx0a-0039f301.pphosted.com (mx0a-0039f301.pphosted.com
 [148.163.133.242]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 220863cc-af11-11ee-9b0f-b553b5be7939;
 Tue, 09 Jan 2024 18:04:22 +0100 (CET)
Received: from pps.filterd (m0174678.ppops.net [127.0.0.1])
 by mx0a-0039f301.pphosted.com (8.17.1.24/8.17.1.24) with ESMTP id
 409GakVP026343; Tue, 9 Jan 2024 17:04:04 GMT
Received: from eur02-db5-obe.outbound.protection.outlook.com
 (mail-db5eur02lp2104.outbound.protection.outlook.com [104.47.11.104])
 by mx0a-0039f301.pphosted.com (PPS) with ESMTPS id 3vh6q511bj-1
 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT);
 Tue, 09 Jan 2024 17:04:03 +0000 (GMT)
Received: from DB8PR03MB6108.eurprd03.prod.outlook.com (2603:10a6:10:ed::15)
 by AS8PR03MB8859.eurprd03.prod.outlook.com (2603:10a6:20b:56f::15) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7159.21; Tue, 9 Jan
 2024 17:03:56 +0000
Received: from DB8PR03MB6108.eurprd03.prod.outlook.com
 ([fe80::82af:59a5:4446:9167]) by DB8PR03MB6108.eurprd03.prod.outlook.com
 ([fe80::82af:59a5:4446:9167%4]) with mapi id 15.20.7159.020; Tue, 9 Jan 2024
 17:03:56 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 220863cc-af11-11ee-9b0f-b553b5be7939
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=l91UECNZmKIutwTLzPJ8mwoJbZYlnO0lQPHXGFBXbgYIdV/tGPAip0fs5z2SRCR4z6OqXPKe4UbHY3zU8DcEsXYDhND3cImc4FFQ7f2dlylcaxeLdxXnq7qcd5cpmIgO2DawGMdO1tSi/lofmpZVz8z4BPaDz+ktCkU2dXHRXasjK21VryaeWmYzBn4TUq0FPrXCv211zJtQ6RoWfWccmdOyuHuOsp1IKk/4xtVorJV1Ew7S+mYCvt4l/taEg9lyTBYtTvfSZnMB4IBJqNVpL1AFCi5zJGmfH7FDjYKC8EdAI5GZrtwlRDVmHze/iobM/vqiIaTboK7wsZCOadxF/g==
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=H0J9GIwLAp4ZxcVEDHKtuCfL8rnH+L7o5D2FBXcFZrk=;
 b=T8t5Yboza2PkmrvetwQTIGVIBHZZk/zPK/WIb4rPVcE54rByrF0ciua6dwEjEejf7+sR0g0fQhpLAd31dWVK36NmX/N6Upac6VIVfeBT84LxAWam0Ao7vjkEcx8QC1Gkj8vfYiXnGPpoBgcqOo4N4fPlUuzWJI8eX5EvWfyo1Dd+Hn3xSjWcjvTwbQ1CNGRmDSjzO+cs0Q6yAb/UvEzPEIJTRYzy8ITGWCwhwUUMHMh8iyZoXmGR63bcV4NeevyUAmQuBlBtEYN2MHez7twfp8cG/PFzoP+NCvyHTMztuBXhttIc9PaCcXxJIZDH4il+K8qzbenfiKT911h7fugs3A==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=epam.com; dmarc=pass action=none header.from=epam.com;
 dkim=pass header.d=epam.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=epam.com; s=selector2;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=H0J9GIwLAp4ZxcVEDHKtuCfL8rnH+L7o5D2FBXcFZrk=;
 b=cD3iV846jSlhjOV+tfEL7zql4SPaKRo2s8Vn01d5nZYuPW49wxLP/qMA2FS1p/Q5l0j3jp+03lAiUf9bmQfQsCf9OWtbWbT/EZV0dmgvFoiYzMmX+P+bn3f7rQMT6VitdVnnTeefL5MPMavnzp/8ocSAPwl7rXcumVWXjOZK3FwOJVM65mvEUpTLaDAh1x4nbwQJXIYIpthdoJbuqOatqQNfWL+GROi7T486wk0ZcEZdhM1t2SML6gezUZ1dinBw7zPT5eevXm/G9vnrNR0fQohQ76CuR4zfdrbJJO9iNPmMcLP5tdl/ZNx69IDHLwNpgJ8YcWEXnTvZ2yPTQOtUgg==
From: Oleksandr Tyshchenko <Oleksandr_Tyshchenko@epam.com>
To: Daniel Vetter <daniel@ffwll.ch>
CC: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>,
        Oleksandr Tyshchenko <olekstysh@gmail.com>,
        "linux-kernel@vger.kernel.org"
	<linux-kernel@vger.kernel.org>,
        =?utf-8?B?Q2hyaXN0aWFuIEvDtm5pZw==?=
	<christian.koenig@amd.com>,
        Juergen Gross <jgross@suse.com>,
        Stefano
 Stabellini <sstabellini@kernel.org>
Subject: Re: [PATCH v2] xen/gntdev: Fix the abuse of underlying struct page in
 DMA-buf import
Thread-Topic: [PATCH v2] xen/gntdev: Fix the abuse of underlying struct page
 in DMA-buf import
Thread-Index: AQHaQVU6yMzlzksitEGXkGgH1iK2frDP0zwAgAHluwA=
Date: Tue, 9 Jan 2024 17:03:56 +0000
Message-ID: <4386d559-8543-4afb-8162-94bdcc198266@epam.com>
References: <20240107103426.2038075-1-olekstysh@gmail.com>
 <CAKMK7uE07Uz-3yxH3+TNUEroKCobZ5xG+_HBPNWLOO0-cKAS+g@mail.gmail.com>
In-Reply-To: 
 <CAKMK7uE07Uz-3yxH3+TNUEroKCobZ5xG+_HBPNWLOO0-cKAS+g@mail.gmail.com>
Accept-Language: en-US, ru-RU
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: DB8PR03MB6108:EE_|AS8PR03MB8859:EE_
x-ms-office365-filtering-correlation-id: bd148c32-e027-4b83-afee-08dc1134f716
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam: BCL:0;
x-microsoft-antispam-message-info: 
 nSqE3D1eTZvWf0bh9B16nXghOwvO8uLavoizs7MOcDN7Wu5eUoFWXHmXtCDBlggCh9QfN/35n84lT4TFH2fhqENrGu50gQdmUUX8uDMTtT86TO76R6wQUene7WzvLYCg7lSoUgQJU/RkxoJ9KQO5cs07lFQBZRKrFXsm7lc5dqWKSTKQNsEliktOJfdLOYyjlfwDPcZ3GFFeHSGnmYhS607EnjiLTOv8+OWJx7MhUa8140+vz37gvB4NYyxK77pU+Cwg6nt/AV0GB4llfQbHs1JQ7bnkrYWUlJbcyxfHxM+xIvjGecqR+pq80bNLISZW8OOAMd78zNr66hpKhXjf5HPx0PRBc6bgTwiRjTgNceu2Noj9vofLj0V/nBVues2NN8ml79mosVaU3iLxclxP0rVJl6PWXB8abIWjNw6xB55xdvG6JUOXaAZLqGIqLPlWT8Iy95hAvwvzEs3gWhEeYmYsJozYd9drrM8+DLIrChyQPIgvya7xKek5zoCYE/jBn0w3I5ORA1jknwambYqL8iqL6J6g8idZy1Wc/JngNgRFzogLDe56ZemS6X5XBSJvPYxXq36BnOV3Sut3IxMaIArJJA/giNDdCyvNXUIjoXZWckU2n+km1heg9OUwGths2t/xO/pB8puDixrqvIFtMk/f5EnZRePwHQIzjwY4NLHa1QmyQFy5TaDpHahiqz0z
x-forefront-antispam-report: 
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DB8PR03MB6108.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230031)(366004)(396003)(39860400002)(136003)(346002)(376002)(230922051799003)(230273577357003)(230173577357003)(64100799003)(186009)(451199024)(1800799012)(31686004)(38100700002)(6486002)(122000001)(2906002)(41300700001)(5660300002)(66476007)(6916009)(8676002)(8936002)(76116006)(64756008)(66556008)(316002)(66446008)(66946007)(91956017)(83380400001)(38070700009)(4326008)(54906003)(71200400001)(6512007)(86362001)(6506007)(36756003)(31696002)(2616005)(478600001)(53546011)(26005)(66574015)(966005)(45980500001);DIR:OUT;SFP:1101;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0: 
 =?utf-8?B?akxNTlNWSTdJNllxNUtMVTQ2aWx1VjRNODh6VC9UN2tYUXhmaXNvN3JYK0lw?=
 =?utf-8?B?VlRJNGNLbkIzYjlkSnY4Ukw3V2lINW5Yc1ROUFBxcFY5U2FqREV1em1CbTdL?=
 =?utf-8?B?UUZxY0VQWlMzdGVIYlh0RGNTV0w2Yis3MHdXeUhJYWxBdHJRVjFVcmxwNE5m?=
 =?utf-8?B?YU5mdjAza05yOTZJQWJ4dUkzanVRMEpNaVR3WWM2WjFVbk9FeVVwRkRDZC9x?=
 =?utf-8?B?MnpCTkRxcmJjcnVJaVlUTURXYkxxU1AyRWNGMUdRZUExQURTZVBkOTR2ZUlM?=
 =?utf-8?B?b0lGYTA3RzlLaGFvUWoydXgzMXZYekpLT0RqdVN0cmZ3eStzcjJkbE4zUXAv?=
 =?utf-8?B?MkJad2tnVzVaR2JvQ0h1Rkljb1lkc3R3SUdVbHpNeGxFTk0ydEdlaWtCc1Bo?=
 =?utf-8?B?c3V5akd4bUF4blZQeG9hNmVxMWpacm44Wld5WUFlMG5FSjhLSEFuRDdiSmEr?=
 =?utf-8?B?RjF3Q1hraU5nVzBodnBPeVlkZ1I0MjFtdGF4dmRmUmdMdmxDa2pSZmJHc1d4?=
 =?utf-8?B?N2hTTjU4MFRGc2Y3NnREUkVEWWZqelVXN0hsUWgzZzUxbXRhdzhxK2ZZM21m?=
 =?utf-8?B?aStQOWFSNnM5S2J0Q0JsbUtDNXVSYWlDdnVOVmsvNzFPc1ZxcmJhd29BTHg2?=
 =?utf-8?B?NnYzTmdlRHRtK0FVdkNGUWRHQ0VjU2dDVUM5UE50Q1ZYN29XOGNLVE82bkxx?=
 =?utf-8?B?dFRxNkdlYk8wcDVuVE43QVg3Tk5SMDBFSiswbFBUNTBKRDFNZVZybFlDU1ZC?=
 =?utf-8?B?SVpqc2tqMGtiRjg2WVlpSWhqbWRFZ2svNW1nV3RscTBXRFkrRThLaWZNWTdZ?=
 =?utf-8?B?Q25lTDVLejhaWG94TjRkaFExOEQrZEM1REhGUURSdzhtMGxKZmpqTzV1OTRP?=
 =?utf-8?B?NWNhZXB2MnpLMmM1RmNkbmQwOTU1ekxVWGllRTJmL2xYSGU5Wjg4ZDlRQzBJ?=
 =?utf-8?B?emtnMUNjcHFuQ29xQzR0Q3F4NEhqUGZNZVlGOUJ4QjVsTnhIN1p5M3BHbnF6?=
 =?utf-8?B?dCtxR2RJOHFGWUxBMXZnd2RMdUVzSXdPdWJiTWMxd1dQMTBVckZUbjV0Tndw?=
 =?utf-8?B?WXlIU0lWeEdPZ1BqVHhReHdzNlpZUGNuR3E3NVBQVDRNd0h2QlhjUCtTRUVk?=
 =?utf-8?B?VmNlQ2ZBdFFoMThJQlAvR3hiSWVKUTJEZ2NYelUwQTF0UG45M3BESzB4T0NB?=
 =?utf-8?B?RVJWbWpSR3I3SEw0azBHQTdkSGF5MU5EZzVUZFpMSVAvR0VPNzNScmswb1VY?=
 =?utf-8?B?T1o5VlE3cUV3RHJBR2grSkx5TUlzc2ZPWThhMXBuVS9LU25RT1ZTelg5WXlt?=
 =?utf-8?B?ODhSL29Xd1Fvbkh6YS8xUUk5WER6S1lGQXFQY2J5VTFLWXFRaWJmeVVEZjVn?=
 =?utf-8?B?a0tybDY2WjArUzlQZ0ZyM3F3TTdsenZFd1ZURGN5K1ZzczZxbzhHcDl2S05s?=
 =?utf-8?B?Y0QzWVJERlFwS2wxeGxTdnR5Wlc4bEgrYnZtVDhIWXUzTmJTMDZYMnFHa2R2?=
 =?utf-8?B?U3FMVXJlUjR5Y3I4MkxnazB5OUxoeUQ5OG9YaGozTG1wbTNSdFV2ZmttZEZr?=
 =?utf-8?B?UWlyeHNtWEsxT1ZjZ3VjNFV0eDJqcVpJcW51NncxajJJbFl6Q09MWnFXOEc4?=
 =?utf-8?B?UDJTMEVlUlpGTkVjSEJjQThuOGRhS3F4eUpxdzE1cGg5V0REQWJFUTZWdDhL?=
 =?utf-8?B?cFNQUUlkY2kwc0pnakpwcCttbE1TQmh2S2JOaEZBOVN3dk5XSFNWYnNPYXc4?=
 =?utf-8?B?bFErQ1ZBeElkOStURnJFcmxiKzVVZnZqZHN3RC9PZDFjOUgvb1NWU0NGVmhk?=
 =?utf-8?B?R1pRZG51djlrTU1LcnE3WjlCcitqVWh3em5od05SSW81RW9pcTVyYmNXQjlp?=
 =?utf-8?B?QXVudjNVeFUxdUNHUk9oSHBjd25VL1o4d1IveFQraUdZbk85cnZRamp1dGNP?=
 =?utf-8?B?eFpsMjkweERMUTlZclFXdVBRYXJ4YVIwM1JIV25pL2VHTTVlaEowNVlXZUhZ?=
 =?utf-8?B?ZmZVN3F3YUhEVDJNZFB3enlwdzhkRko0VHpqRDNxYm1kOStvbXRMVXh3N1hO?=
 =?utf-8?B?U3paMS9tdUtwSzFDaDFBTTN2bi9pb3FqQStLWEI1RkM0UUZjQjdWUVo5QVJG?=
 =?utf-8?B?dCtySHhWYzVIUWMrUk1lVzNkcDlwUnRXcmZXM3J0d3BJQkRuOHh0RS81N1cx?=
 =?utf-8?Q?g+/vDgLAzltdQfIf4SutL0w=3D?=
Content-Type: text/plain; charset="utf-8"
Content-ID: <5AAE19337E15484E84B0098404BEE7F5@eurprd03.prod.outlook.com>
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-OriginatorOrg: epam.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: DB8PR03MB6108.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: bd148c32-e027-4b83-afee-08dc1134f716
X-MS-Exchange-CrossTenant-originalarrivaltime: 09 Jan 2024 17:03:56.0870
 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: b41b72d0-4e9f-4c26-8a69-f949f367c91d
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: d0/7Rwg7MV78xEma8Oi3I3TIBlJ0JVoz7UkTbdd5gUEUpkCYnU6nll/gYmfDbtsEI7kIcMQSE117pSbPXczR+y9HP8mCehfJQSVzyqIdq/s=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR03MB8859
X-Proofpoint-ORIG-GUID: -h9GZdLAXGaRbYl1FO6Hdoi2Cplg2bgj
X-Proofpoint-GUID: -h9GZdLAXGaRbYl1FO6Hdoi2Cplg2bgj
X-Proofpoint-Virus-Version: vendor=baseguard
 engine=ICAP:2.0.272,Aquarius:18.0.997,Hydra:6.0.619,FMLib:17.11.176.26
 definitions=2023-12-09_02,2023-12-07_01,2023-05-22_02
X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 bulkscore=0
 priorityscore=1501 adultscore=0 phishscore=0 mlxscore=0 clxscore=1011
 mlxlogscore=999 impostorscore=0 malwarescore=0 suspectscore=0 spamscore=0
 lowpriorityscore=0 classifier=spam adjust=0 reason=mlx scancount=1
 engine=8.19.0-2311290000 definitions=main-2401090138

DQoNCk9uIDA4LjAxLjI0IDE0OjA1LCBEYW5pZWwgVmV0dGVyIHdyb3RlOg0KDQpIZWxsbyBEYW5p
ZWwNCg0KDQo+IE9uIFN1biwgNyBKYW4gMjAyNCBhdCAxMTozNSwgT2xla3NhbmRyIFR5c2hjaGVu
a28gPG9sZWtzdHlzaEBnbWFpbC5jb20+IHdyb3RlOg0KPj4NCj4+IEZyb206IE9sZWtzYW5kciBU
eXNoY2hlbmtvIDxvbGVrc2FuZHJfdHlzaGNoZW5rb0BlcGFtLmNvbT4NCj4+DQo+PiBETyBOT1Qg
YWNjZXNzIHRoZSB1bmRlcmx5aW5nIHN0cnVjdCBwYWdlIG9mIGFuIHNnIHRhYmxlIGV4cG9ydGVk
DQo+PiBieSBETUEtYnVmIGluIGRtYWJ1Zl9pbXBfdG9fcmVmcygpLCB0aGlzIGlzIG5vdCBhbGxv
d2VkLg0KPj4gUGxlYXNlIHNlZSBkcml2ZXJzL2RtYS1idWYvZG1hLWJ1Zi5jOm1hbmdsZV9zZ190
YWJsZSgpIGZvciBkZXRhaWxzLg0KPj4NCj4+IEZvcnR1bmF0ZWx5LCBoZXJlIChmb3Igc3BlY2lh
bCBYZW4gZGV2aWNlKSB3ZSBjYW4gYXZvaWQgdXNpbmcNCj4+IHBhZ2VzIGFuZCBjYWxjdWxhdGUg
Z2ZucyBkaXJlY3RseSBmcm9tIGRtYSBhZGRyZXNzZXMgcHJvdmlkZWQgYnkNCj4+IHRoZSBzZyB0
YWJsZS4NCj4+DQo+PiBTdWdnZXN0ZWQtYnk6IERhbmllbCBWZXR0ZXIgPGRhbmllbEBmZndsbC5j
aD4NCj4+IFNpZ25lZC1vZmYtYnk6IE9sZWtzYW5kciBUeXNoY2hlbmtvIDxvbGVrc2FuZHJfdHlz
aGNoZW5rb0BlcGFtLmNvbT4NCj4+IEFja2VkLWJ5OiBDaHJpc3RpYW4gS8O2bmlnIDxjaHJpc3Rp
YW4ua29lbmlnQGFtZC5jb20+DQo+PiBSZXZpZXdlZC1ieTogU3RlZmFubyBTdGFiZWxsaW5pIDxz
c3RhYmVsbGluaUBrZXJuZWwub3JnPg0KPj4gLS0tDQo+PiBQbGVhc2Ugbm90ZSwgSSBkaWRuJ3Qg
bWFuYWdlIHRvIHRlc3QgdGhlIHBhdGNoIGFnYWluc3QgdGhlIGxhdGVzdCBtYXN0ZXIgYnJhbmNo
DQo+PiBvbiByZWFsIEhXIChwYXRjaCB3YXMgb25seSBidWlsZCB0ZXN0ZWQgdGhlcmUpLiBQYXRj
aCB3YXMgdGVzdGVkIG9uIEFybTY0DQo+PiBndWVzdHMgdXNpbmcgTGludXggdjUuMTAuNDEgZnJv
bSB2ZW5kb3IncyBCU1AsIHRoaXMgaXMgdGhlIGVudmlyb25tZW50IHdoZXJlDQo+PiBydW5uaW5n
IHRoaXMgdXNlLWNhc2UgaXMgcG9zc2libGUgYW5kIHRvIHdoaWNoIEkgaGF2ZSBhbiBhY2Nlc3Mg
KFhlbiBQViBkaXNwbGF5DQo+PiB3aXRoIHplcm8tY29weSBhbmQgYmFja2VuZCBkb21haW4gYXMg
YSBidWZmZXIgcHJvdmlkZXIgLSBiZS1hbGxvYz0xLCBzbyBkbWEtYnVmDQo+PiBpbXBvcnQgcGFy
dCB3YXMgaW52b2x2ZWQpLiBBIGxpdHRsZSBiaXQgb2xkLCBidXQgdGhlIGRtYS1idWYgaW1wb3J0
IGNvZGUNCj4+IGluIGdudGRldi1kbWFidWYuYyBoYXNuJ3QgYmVlbiBjaGFuZ2VkIG11Y2ggc2lu
Y2UgdGhhdCB0aW1lLCBhbGwgY29udGV4dA0KPj4gcmVtYWlucyBhbGxtb3N0IHRoZSBzYW1lIGFj
Y29yZGluZyB0byBteSBjb2RlIGluc3BlY3Rpb24uDQo+Pg0KPj4gICAgdjI6DQo+PiAgICAgLSBh
ZGQgUi1iIGFuZCBBLWINCj4+ICAgICAtIGZpeCBidWlsZCB3YXJuaW5nIG5vdGljZWQgYnkga2Vy
bmVsIHRlc3Qgcm9ib3QgYnkgaW5pdGlhbGl6aW5nDQo+PiAgICAgICAicmV0IiBpbiBjYXNlIG9m
IGVycm9yDQo+PiAgICAgICBodHRwczovL3VybGRlZmVuc2UuY29tL3YzL19faHR0cHM6Ly9sb3Jl
Lmtlcm5lbC5vcmcvb2Uta2J1aWxkLWFsbC8yMDI0MDEwNjIxMjIuaXQ2enZMRzAtbGtwQGludGVs
LmNvbS9fXzshIUdGXzI5ZGJjUUlVQlBBITM4LW13VDlIQ3RPZVpDM200SS1tOW4waHJhZ1lNSGZt
V2NIS2dEeEVwR3M5bWczNU0wYnBQV1dPUks4YWljaHhIdE8zNkdaX0puQ1dUTGRKWGRaWUJtQ3Yk
IFtsb3JlWy5da2VybmVsWy5db3JnXQ0KPj4gLS0tDQo+PiAtLS0NCj4+ICAgZHJpdmVycy94ZW4v
Z250ZGV2LWRtYWJ1Zi5jIHwgNDQgKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0t
LQ0KPj4gICAxIGZpbGUgY2hhbmdlZCwgMTkgaW5zZXJ0aW9ucygrKSwgMjUgZGVsZXRpb25zKC0p
DQo+Pg0KPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMveGVuL2dudGRldi1kbWFidWYuYyBiL2RyaXZl
cnMveGVuL2dudGRldi1kbWFidWYuYw0KPj4gaW5kZXggNDQ0MGU2MjZiNzk3Li4yNzJjMGFiMDFl
ZjUgMTAwNjQ0DQo+PiAtLS0gYS9kcml2ZXJzL3hlbi9nbnRkZXYtZG1hYnVmLmMNCj4+ICsrKyBi
L2RyaXZlcnMveGVuL2dudGRldi1kbWFidWYuYw0KPj4gQEAgLTExLDYgKzExLDcgQEANCj4+ICAg
I2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5oPg0KPj4gICAjaW5jbHVkZSA8bGludXgvZXJybm8uaD4N
Cj4+ICAgI2luY2x1ZGUgPGxpbnV4L2RtYS1idWYuaD4NCj4+ICsjaW5jbHVkZSA8bGludXgvZG1h
LWRpcmVjdC5oPg0KPj4gICAjaW5jbHVkZSA8bGludXgvc2xhYi5oPg0KPj4gICAjaW5jbHVkZSA8
bGludXgvdHlwZXMuaD4NCj4+ICAgI2luY2x1ZGUgPGxpbnV4L3VhY2Nlc3MuaD4NCj4+IEBAIC01
MCw3ICs1MSw3IEBAIHN0cnVjdCBnbnRkZXZfZG1hYnVmIHsNCj4+DQo+PiAgICAgICAgICAvKiBO
dW1iZXIgb2YgcGFnZXMgdGhpcyBidWZmZXIgaGFzLiAqLw0KPj4gICAgICAgICAgaW50IG5yX3Bh
Z2VzOw0KPj4gLSAgICAgICAvKiBQYWdlcyBvZiB0aGlzIGJ1ZmZlci4gKi8NCj4+ICsgICAgICAg
LyogUGFnZXMgb2YgdGhpcyBidWZmZXIgKG9ubHkgZm9yIGRtYS1idWYgZXhwb3J0KS4gKi8NCj4+
ICAgICAgICAgIHN0cnVjdCBwYWdlICoqcGFnZXM7DQo+PiAgIH07DQo+Pg0KPj4gQEAgLTQ4NCw3
ICs0ODUsNyBAQCBzdGF0aWMgaW50IGRtYWJ1Zl9leHBfZnJvbV9yZWZzKHN0cnVjdCBnbnRkZXZf
cHJpdiAqcHJpdiwgaW50IGZsYWdzLA0KPj4gICAvKiBETUEgYnVmZmVyIGltcG9ydCBzdXBwb3J0
LiAqLw0KPj4NCj4+ICAgc3RhdGljIGludA0KPj4gLWRtYWJ1Zl9pbXBfZ3JhbnRfZm9yZWlnbl9h
Y2Nlc3Moc3RydWN0IHBhZ2UgKipwYWdlcywgdTMyICpyZWZzLA0KPj4gK2RtYWJ1Zl9pbXBfZ3Jh
bnRfZm9yZWlnbl9hY2Nlc3ModW5zaWduZWQgbG9uZyAqZ2ZucywgdTMyICpyZWZzLA0KPj4gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGNvdW50LCBpbnQgZG9taWQpDQo+PiAg
IHsNCj4+ICAgICAgICAgIGdyYW50X3JlZl90IHByaXZfZ3JlZl9oZWFkOw0KPj4gQEAgLTUwNyw3
ICs1MDgsNyBAQCBkbWFidWZfaW1wX2dyYW50X2ZvcmVpZ25fYWNjZXNzKHN0cnVjdCBwYWdlICoq
cGFnZXMsIHUzMiAqcmVmcywNCj4+ICAgICAgICAgICAgICAgICAgfQ0KPj4NCj4+ICAgICAgICAg
ICAgICAgICAgZ250dGFiX2dyYW50X2ZvcmVpZ25fYWNjZXNzX3JlZihjdXJfcmVmLCBkb21pZCwN
Cj4+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhlbl9w
YWdlX3RvX2dmbihwYWdlc1tpXSksIDApOw0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZ2Zuc1tpXSwgMCk7DQo+PiAgICAgICAgICAgICAgICAgIHJl
ZnNbaV0gPSBjdXJfcmVmOw0KPj4gICAgICAgICAgfQ0KPj4NCj4+IEBAIC01MjksNyArNTMwLDYg
QEAgc3RhdGljIHZvaWQgZG1hYnVmX2ltcF9lbmRfZm9yZWlnbl9hY2Nlc3ModTMyICpyZWZzLCBp
bnQgY291bnQpDQo+Pg0KPj4gICBzdGF0aWMgdm9pZCBkbWFidWZfaW1wX2ZyZWVfc3RvcmFnZShz
dHJ1Y3QgZ250ZGV2X2RtYWJ1ZiAqZ250ZGV2X2RtYWJ1ZikNCj4+ICAgew0KPj4gLSAgICAgICBr
ZnJlZShnbnRkZXZfZG1hYnVmLT5wYWdlcyk7DQo+PiAgICAgICAgICBrZnJlZShnbnRkZXZfZG1h
YnVmLT51LmltcC5yZWZzKTsNCj4+ICAgICAgICAgIGtmcmVlKGdudGRldl9kbWFidWYpOw0KPj4g
ICB9DQo+PiBAQCAtNTQ5LDEyICs1NDksNiBAQCBzdGF0aWMgc3RydWN0IGdudGRldl9kbWFidWYg
KmRtYWJ1Zl9pbXBfYWxsb2Nfc3RvcmFnZShpbnQgY291bnQpDQo+PiAgICAgICAgICBpZiAoIWdu
dGRldl9kbWFidWYtPnUuaW1wLnJlZnMpDQo+PiAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbDsN
Cj4+DQo+PiAtICAgICAgIGdudGRldl9kbWFidWYtPnBhZ2VzID0ga2NhbGxvYyhjb3VudCwNCj4+
IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihnbnRkZXZfZG1h
YnVmLT5wYWdlc1swXSksDQo+PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHRlBfS0VSTkVMKTsNCj4+IC0gICAgICAgaWYgKCFnbnRkZXZfZG1hYnVmLT5wYWdlcykNCj4+
IC0gICAgICAgICAgICAgICBnb3RvIGZhaWw7DQo+PiAtDQo+PiAgICAgICAgICBnbnRkZXZfZG1h
YnVmLT5ucl9wYWdlcyA9IGNvdW50Ow0KPj4NCj4+ICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBj
b3VudDsgaSsrKQ0KPj4gQEAgLTU3Niw3ICs1NzAsOCBAQCBkbWFidWZfaW1wX3RvX3JlZnMoc3Ry
dWN0IGdudGRldl9kbWFidWZfcHJpdiAqcHJpdiwgc3RydWN0IGRldmljZSAqZGV2LA0KPj4gICAg
ICAgICAgc3RydWN0IGRtYV9idWYgKmRtYV9idWY7DQo+PiAgICAgICAgICBzdHJ1Y3QgZG1hX2J1
Zl9hdHRhY2htZW50ICphdHRhY2g7DQo+PiAgICAgICAgICBzdHJ1Y3Qgc2dfdGFibGUgKnNndDsN
Cj4+IC0gICAgICAgc3RydWN0IHNnX3BhZ2VfaXRlciBzZ19pdGVyOw0KPj4gKyAgICAgICBzdHJ1
Y3Qgc2dfZG1hX3BhZ2VfaXRlciBzZ19pdGVyOw0KPj4gKyAgICAgICB1bnNpZ25lZCBsb25nICpn
Zm5zOw0KPj4gICAgICAgICAgaW50IGk7DQo+Pg0KPj4gICAgICAgICAgZG1hX2J1ZiA9IGRtYV9i
dWZfZ2V0KGZkKTsNCj4+IEBAIC02MjQsMjYgKzYxOSwyNSBAQCBkbWFidWZfaW1wX3RvX3JlZnMo
c3RydWN0IGdudGRldl9kbWFidWZfcHJpdiAqcHJpdiwgc3RydWN0IGRldmljZSAqZGV2LA0KPj4N
Cj4+ICAgICAgICAgIGdudGRldl9kbWFidWYtPnUuaW1wLnNndCA9IHNndDsNCj4+DQo+PiAtICAg
ICAgIC8qIE5vdyBjb252ZXJ0IHNndCB0byBhcnJheSBvZiBwYWdlcyBhbmQgY2hlY2sgZm9yIHBh
Z2UgdmFsaWRpdHkuICovDQo+PiArICAgICAgIGdmbnMgPSBrY2FsbG9jKGNvdW50LCBzaXplb2Yo
KmdmbnMpLCBHRlBfS0VSTkVMKTsNCj4+ICsgICAgICAgaWYgKCFnZm5zKSB7DQo+PiArICAgICAg
ICAgICAgICAgcmV0ID0gRVJSX1BUUigtRU5PTUVNKTsNCj4+ICsgICAgICAgICAgICAgICBnb3Rv
IGZhaWxfdW5tYXA7DQo+PiArICAgICAgIH0NCj4+ICsNCj4+ICsgICAgICAgLyogTm93IGNvbnZl
cnQgc2d0IHRvIGFycmF5IG9mIGdmbnMgd2l0aG91dCBhY2Nlc3NpbmcgdW5kZXJseWluZyBwYWdl
cy4gKi8NCj4+ICAgICAgICAgIGkgPSAwOw0KPj4gLSAgICAgICBmb3JfZWFjaF9zZ3RhYmxlX3Bh
Z2Uoc2d0LCAmc2dfaXRlciwgMCkgew0KPj4gLSAgICAgICAgICAgICAgIHN0cnVjdCBwYWdlICpw
YWdlID0gc2dfcGFnZV9pdGVyX3BhZ2UoJnNnX2l0ZXIpOw0KPj4gLSAgICAgICAgICAgICAgIC8q
DQo+PiAtICAgICAgICAgICAgICAgICogQ2hlY2sgaWYgcGFnZSBpcyB2YWxpZDogdGhpcyBjYW4g
aGFwcGVuIGlmIHdlIGFyZSBnaXZlbg0KPj4gLSAgICAgICAgICAgICAgICAqIGEgcGFnZSBmcm9t
IFZSQU0gb3Igb3RoZXIgcmVzb3VyY2VzIHdoaWNoIGFyZSBub3QgYmFja2VkDQo+PiAtICAgICAg
ICAgICAgICAgICogYnkgYSBzdHJ1Y3QgcGFnZS4NCj4+IC0gICAgICAgICAgICAgICAgKi8NCj4+
IC0gICAgICAgICAgICAgICBpZiAoIXBmbl92YWxpZChwYWdlX3RvX3BmbihwYWdlKSkpIHsNCj4+
IC0gICAgICAgICAgICAgICAgICAgICAgIHJldCA9IEVSUl9QVFIoLUVJTlZBTCk7DQo+PiAtICAg
ICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxfdW5tYXA7DQo+PiAtICAgICAgICAgICAgICAg
fQ0KPj4gKyAgICAgICBmb3JfZWFjaF9zZ3RhYmxlX2RtYV9wYWdlKHNndCwgJnNnX2l0ZXIsIDAp
IHsNCj4gDQo+IE1heWJlIGFkZCBhIGNvbW1lbnQgaGVyZSB0byBleHBsYWluIHdoeSB0aGlzIGlz
IGRvbmUgYW5kIHdoeSBpdCdzIG9rPw0KDQoNCk1ha2VzIHNlbnNlLCB3aWxsIGRvIGZvciB2My4N
Cg0KDQo+IEVpdGhlciB3YXk6DQo+IA0KPiBBY2tlZC1ieTogRGFuaWVsIFZldHRlciA8ZGFuaWVs
QGZmd2xsLmNoPg0KDQoNClRoYW5rcyENCg0KDQpbc25pcF0=


From xen-devel-bounces@lists.xenproject.org Tue Jan 09 17:06:03 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 09 Jan 2024 17:06:03 +0000
Received: from list by lists.xenproject.org with outflank-mailman.664809.1034932 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNFY7-0000WX-O3; Tue, 09 Jan 2024 17:05:59 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 664809.1034932; Tue, 09 Jan 2024 17:05:59 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNFY7-0000WQ-Kk; Tue, 09 Jan 2024 17:05:59 +0000
Received: by outflank-mailman (input) for mailman id 664809;
 Tue, 09 Jan 2024 17:05:57 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=Qgrd=IT=gmail.com=jandryuk@srs-se1.protection.inumbo.net>)
 id 1rNFY5-0000WE-EW
 for xen-devel@lists.xenproject.org; Tue, 09 Jan 2024 17:05:57 +0000
Received: from mail-qk1-x734.google.com (mail-qk1-x734.google.com
 [2607:f8b0:4864:20::734])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 59b48abd-af11-11ee-9b0f-b553b5be7939;
 Tue, 09 Jan 2024 18:05:55 +0100 (CET)
Received: by mail-qk1-x734.google.com with SMTP id
 af79cd13be357-783293278adso114906585a.3
 for <xen-devel@lists.xenproject.org>; Tue, 09 Jan 2024 09:05:55 -0800 (PST)
Received: from pm2-ws13.praxislan02.com
 (207-172-141-204.s8906.c3-0.slvr-cbr1.lnh-slvr.md.cable.rcncustomer.com.
 [207.172.141.204]) by smtp.gmail.com with ESMTPSA id
 dt15-20020a05620a478f00b0077f435ed844sm938738qkb.112.2024.01.09.09.05.52
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 09 Jan 2024 09:05:52 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 59b48abd-af11-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1704819953; x=1705424753; darn=lists.xenproject.org;
        h=content-transfer-encoding:mime-version:message-id:date:subject:cc
         :to:from:from:to:cc:subject:date:message-id:reply-to;
        bh=a2SwLljorVhWvgkSuH2ZFX21icy4tS63YsP+lvu7tic=;
        b=i6Lfjx9M2hmopdYy4jEjuOuX2LZqaZIYgOgngyMXmpCAhVMh/sS+RUYStKX+NUNBSy
         2OSiYg3Ob+Bsnc/H4gAAPh+m0qh8Gk6sudXwkSbHCzY5OFYH5FY+qmud22G0Ie5YTYJ0
         YYog+jQx0FwnLIUenFkdOc7GirMdLaWVRjfjQBEHSsa9uDqVWNcgyqRteyqWiyfBEChW
         jRI2NbTtx447SGDZz2I9opbWPTkmKgIKInTOpSifAgtMwK42p70QWJbmOxpnyRk3dMK3
         SPOVNKp9d5gdL9Falr7oXaJmyiHRSjvFpo6fWmdtvwyDP8kahhlEUAWbxH/VMLb+DfV0
         HiUg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704819953; x=1705424753;
        h=content-transfer-encoding:mime-version:message-id:date:subject:cc
         :to:from:x-gm-message-state:from:to:cc:subject:date:message-id
         :reply-to;
        bh=a2SwLljorVhWvgkSuH2ZFX21icy4tS63YsP+lvu7tic=;
        b=tOJ3H9Kgp1QeRTj5+UznFpML656aL+onwi+EJ4juE9iUg6PHsXtn7F0egcNpEi1NYh
         7nn/r1nbfRJ2uSNheKu9BmgixTxwvVlR3BszKTotgQfGsKXsCAsuD2qjmM9qHIySuSIP
         5LClAydSFdSn2piluGZHcixXkgcws2KHCz1brH7BLCKGo9nKxSeWwlbDzN6FLKQ9yaLI
         hZ5BcxQDqVs+aOueSFlABepnyJ1bSpPCxdZ2J6SSIlEDJjiqDU8R/LZaaKSu9Z9iKwnA
         H8pcZ5yqYiX6oekB5nb026+D9H/quX4npIrcKr3f9n336i+JGg5H/RroTUEYhw/9RDKs
         V00g==
X-Gm-Message-State: AOJu0Yye/BSH4hbIe+W0cLyHihdr+AeyzIVRMmGH9Ui5eRLv59HXSgzJ
	8XIxqfBoTFNywyY9+O8BAcNhQtCdGrg=
X-Google-Smtp-Source: AGHT+IFo5XVNKn1BRUlDrYawuzLXG1w6fYgO5McNwSWHOEdOSwOvHMbdZy5okKGy/E2TaPGvXyaf7Q==
X-Received: by 2002:a05:620a:29d5:b0:783:639:39d7 with SMTP id s21-20020a05620a29d500b00783063939d7mr6922552qkp.4.1704819953574;
        Tue, 09 Jan 2024 09:05:53 -0800 (PST)
From: Jason Andryuk <jandryuk@gmail.com>
To: xen-devel@lists.xenproject.org
Cc: Jason Andryuk <jandryuk@gmail.com>,
	Wei Liu <wl@xen.org>,
	Anthony PERARD <anthony.perard@citrix.com>,
	Juergen Gross <jgross@suse.com>
Subject: [PATCH 0/2] libxl: devd support for QEMU 9pfs
Date: Tue,  9 Jan 2024 12:05:38 -0500
Message-ID: <20240109170540.38239-1-jandryuk@gmail.com>
X-Mailer: git-send-email 2.43.0
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

These two patches enable xl devd (in a service vm) to launch QEMU to
provide 9pfs backends.

Jason Andryuk (2):
  libxl: Fix segfault in device_model_spawn_outcome
  libxl: devd: Spawn QEMU for 9pfs

 tools/libs/light/libxl_device.c   | 22 ++++++++++++----------
 tools/libs/light/libxl_dm.c       | 15 ++++++++-------
 tools/libs/light/libxl_internal.h |  4 ++--
 3 files changed, 22 insertions(+), 19 deletions(-)

-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Tue Jan 09 17:06:03 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 09 Jan 2024 17:06:03 +0000
Received: from list by lists.xenproject.org with outflank-mailman.664810.1034939 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNFY8-0000Zp-0Q; Tue, 09 Jan 2024 17:06:00 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 664810.1034939; Tue, 09 Jan 2024 17:05:59 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNFY7-0000Yc-RQ; Tue, 09 Jan 2024 17:05:59 +0000
Received: by outflank-mailman (input) for mailman id 664810;
 Tue, 09 Jan 2024 17:05:59 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=Qgrd=IT=gmail.com=jandryuk@srs-se1.protection.inumbo.net>)
 id 1rNFY7-0000WK-4L
 for xen-devel@lists.xenproject.org; Tue, 09 Jan 2024 17:05:59 +0000
Received: from mail-qk1-x734.google.com (mail-qk1-x734.google.com
 [2607:f8b0:4864:20::734])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 5b5eaab1-af11-11ee-98ef-6d05b1d4d9a1;
 Tue, 09 Jan 2024 18:05:58 +0100 (CET)
Received: by mail-qk1-x734.google.com with SMTP id
 af79cd13be357-7831e87ba13so220446385a.0
 for <xen-devel@lists.xenproject.org>; Tue, 09 Jan 2024 09:05:58 -0800 (PST)
Received: from pm2-ws13.praxislan02.com
 (207-172-141-204.s8906.c3-0.slvr-cbr1.lnh-slvr.md.cable.rcncustomer.com.
 [207.172.141.204]) by smtp.gmail.com with ESMTPSA id
 dt15-20020a05620a478f00b0077f435ed844sm938738qkb.112.2024.01.09.09.05.55
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 09 Jan 2024 09:05:56 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 5b5eaab1-af11-11ee-98ef-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1704819957; x=1705424757; darn=lists.xenproject.org;
        h=content-transfer-encoding:mime-version:references:in-reply-to
         :message-id:date:subject:cc:to:from:from:to:cc:subject:date
         :message-id:reply-to;
        bh=B0PZby6BxJlkqBCgAX+pIJcCzjfBuPqSrxzw4k3aYx8=;
        b=ZDkJEtvdBKUQ7U9jJTdgZWobYYvCaQkFXL4k739XxGX67NWoJOdrNqlZ6FM1Vlif7q
         UTkuXbkRm3yDn+baHgsD3YPu/HtsfO3Dg33FJWOiHUi10z7xLtpPcO4h3a8JELVvzidd
         XUS3C8F2qzt8hBsK7zCdfTfClr1dfMIJSuVfxnh0HDBMIVq44cjrgo11I6vutTce/cbW
         hBj8xB49/OEyr0dXFQHRmWO9CewL2wm0b2fkAD5NZFOuGsPxx/8MtqdD9UgEm1257OYx
         ioxnxx9hthb81oE3vYAFR8ateksamXLFFkdt13nyAjWrilTq6IqdeqWMpParKr47SC7Z
         k8aw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704819957; x=1705424757;
        h=content-transfer-encoding:mime-version:references:in-reply-to
         :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to;
        bh=B0PZby6BxJlkqBCgAX+pIJcCzjfBuPqSrxzw4k3aYx8=;
        b=xAPnoNJX1rbb8bzVaPh2din9oUkincbehlsucTrEOOpwsuYxPVsN9jTcGD1/Ods92J
         PC2qJ4y1iqBBsdWr+dItuVsTqXv5nsRlkXVQW1l9SFCiTamn9u7MWbXIXvAs/erR7xmj
         3hozkkTJPC0aRkMe7zUfE+BNG9crazvaTvJbwLaVsBfNAX4NztrjxxRxHFlibWCD+/no
         ICHjONwvs76QHcNHqZ2EzrC8Ws7ncWdrVOaayXntkwyzdJ+V47KbvuMEc3pumWLJ5/wb
         sK71U8lO+wU7xpbOQR2qgFbjb6JqdTsGTbX5nFhixmyMtqUSH9cr5ZvdGflUYufx5qsK
         czFw==
X-Gm-Message-State: AOJu0YyTg8AqcedM3+Yh1ZKnGlqlRalEei6fFDEJoLc5JhMoMWnla/1f
	fPrCm6uix4rRT8BQicoG9o9UFXCfkx4=
X-Google-Smtp-Source: AGHT+IEj7HQxGa690Yfp7Wjp6VYnpuyyqaztpvN+cfh8DppYJuymX/7PNvEPnu8bJOjC9KvJ7dCcmw==
X-Received: by 2002:a05:620a:166f:b0:783:1c3e:6825 with SMTP id d15-20020a05620a166f00b007831c3e6825mr3984152qko.153.1704819956714;
        Tue, 09 Jan 2024 09:05:56 -0800 (PST)
From: Jason Andryuk <jandryuk@gmail.com>
To: xen-devel@lists.xenproject.org
Cc: Jason Andryuk <jandryuk@gmail.com>,
	Wei Liu <wl@xen.org>,
	Anthony PERARD <anthony.perard@citrix.com>,
	Juergen Gross <jgross@suse.com>
Subject: [PATCH 1/2] libxl: Fix segfault in device_model_spawn_outcome
Date: Tue,  9 Jan 2024 12:05:39 -0500
Message-ID: <20240109170540.38239-2-jandryuk@gmail.com>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20240109170540.38239-1-jandryuk@gmail.com>
References: <20240109170540.38239-1-jandryuk@gmail.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

libxl__spawn_qdisk_backend() explicitly sets guest_config to NULL when
starting QEMU (the usual launch through libxl__spawn_local_dm() has a
guest_config though).

Bail early on a NULL guest_config/d_config.  This skips the QMP queries
for chardevs and VNC, but this xenpv QEMU instance isn't expected to
provide those - only qdisk (or 9pfs backends after an upcoming change).

Signed-off-by: Jason Andryuk <jandryuk@gmail.com>
---
 tools/libs/light/libxl_dm.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/tools/libs/light/libxl_dm.c b/tools/libs/light/libxl_dm.c
index f7c796011d..6ef16ad2a0 100644
--- a/tools/libs/light/libxl_dm.c
+++ b/tools/libs/light/libxl_dm.c
@@ -3161,8 +3161,8 @@ static void device_model_spawn_outcome(libxl__egc *egc,
 
     /* Check if spawn failed */
     if (rc) goto out;
-
-    if (d_config->b_info.device_model_version
+    /* d_config is NULL for xl devd/libxl__spawn_qemu_xenpv_backend(). */
+    if (d_config && d_config->b_info.device_model_version
             == LIBXL_DEVICE_MODEL_VERSION_QEMU_XEN) {
         rc = libxl__ev_time_register_rel(ao, &dmss->timeout,
                                          devise_model_postconfig_timeout,
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Tue Jan 09 17:06:04 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 09 Jan 2024 17:06:04 +0000
Received: from list by lists.xenproject.org with outflank-mailman.664811.1034953 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNFYC-00011h-79; Tue, 09 Jan 2024 17:06:04 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 664811.1034953; Tue, 09 Jan 2024 17:06:04 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNFYC-00011Y-3O; Tue, 09 Jan 2024 17:06:04 +0000
Received: by outflank-mailman (input) for mailman id 664811;
 Tue, 09 Jan 2024 17:06:02 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=Qgrd=IT=gmail.com=jandryuk@srs-se1.protection.inumbo.net>)
 id 1rNFYA-0000WK-Ke
 for xen-devel@lists.xenproject.org; Tue, 09 Jan 2024 17:06:02 +0000
Received: from mail-qk1-x72a.google.com (mail-qk1-x72a.google.com
 [2607:f8b0:4864:20::72a])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 5d931243-af11-11ee-98ef-6d05b1d4d9a1;
 Tue, 09 Jan 2024 18:06:02 +0100 (CET)
Received: by mail-qk1-x72a.google.com with SMTP id
 af79cd13be357-783148737d5so280612985a.2
 for <xen-devel@lists.xenproject.org>; Tue, 09 Jan 2024 09:06:02 -0800 (PST)
Received: from pm2-ws13.praxislan02.com
 (207-172-141-204.s8906.c3-0.slvr-cbr1.lnh-slvr.md.cable.rcncustomer.com.
 [207.172.141.204]) by smtp.gmail.com with ESMTPSA id
 dt15-20020a05620a478f00b0077f435ed844sm938738qkb.112.2024.01.09.09.05.59
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 09 Jan 2024 09:05:59 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 5d931243-af11-11ee-98ef-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1704819960; x=1705424760; darn=lists.xenproject.org;
        h=content-transfer-encoding:mime-version:references:in-reply-to
         :message-id:date:subject:cc:to:from:from:to:cc:subject:date
         :message-id:reply-to;
        bh=xIN7rMO1wIab7x2KrwJzoPsPT457jdlwAxClxkQIv+k=;
        b=GdXY+HpvpGRoEF2LH1T8znr/t0uW/XBRjJxI9e/9tF3ehmqfOL7ikN0VU7HyTVe33V
         4T45VczWkGorx76sfNhEeEd2KSlMX0h0AqRWdSrkYv0lqtsCG2jPMSyMshz6iZiJ8FzU
         gZZFZbH3K71g03cOnDdxpXF0/1lIKST0IEP3U1VkSrQ683/F2QbitwtIwdE1HvXTa4ln
         qIgdspRGenyWm74nUrRdLCuHBjR2hjkDyUq7SOoQONpU4MXwAiLk2BgG9E8GwsddHo4I
         FtDRw84vvkR6CkSYCgHwPzabaIvz99j07nQKVic0IYV2BElRi4X/hawXq8GkATNd3V41
         dozg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704819960; x=1705424760;
        h=content-transfer-encoding:mime-version:references:in-reply-to
         :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to;
        bh=xIN7rMO1wIab7x2KrwJzoPsPT457jdlwAxClxkQIv+k=;
        b=luQe10DOAgULjq3cx/bFEZhAFod1fjPf9NpCZWDE2WIfRDx21KSh+/YPhnAW2ZuMWN
         WZOBS70c4Szl9qXcYykPsZ1dvXjrbTHoWIxl0IfrCYywoHojUUpoeM7ibyaPvBop+Aaa
         hFJ+9I4jeNA1AX4PipSMW3HZ/OKPMy9NWVr7zo9SzguqWlJAngeBKfWaxecpDKlc4vjx
         +RjabrRn5mNets9O8zCFu3Ja6ex6qfHOog8xGe7NQPR8Y4P1v9uBW4H+KtSCMHxUkZ+0
         kaVcdgho1wgmgHaz3vsWKtj6Mc88OvAlPeKeUb9f0LuPJrwAubL8//1TMcmdZwgG0L/p
         E/JQ==
X-Gm-Message-State: AOJu0YwCvlwxX69wstiU+QV4hmy3AEYlsIPUg9lHvvpn7EP2CaHVSzME
	iBhAtepDzgKDDeSYh3XKZU3JEyKoDwo=
X-Google-Smtp-Source: AGHT+IFxFFzCqYIekU3jfQxBe9r4oxI7ch8Bp4XTK4ZJZM+MFX8KdB15/s4ECXqdbjYHLLqXWIfMZg==
X-Received: by 2002:a05:620a:5601:b0:783:2e71:d49d with SMTP id vu1-20020a05620a560100b007832e71d49dmr1126662qkn.93.1704819960469;
        Tue, 09 Jan 2024 09:06:00 -0800 (PST)
From: Jason Andryuk <jandryuk@gmail.com>
To: xen-devel@lists.xenproject.org
Cc: Jason Andryuk <jandryuk@gmail.com>,
	Wei Liu <wl@xen.org>,
	Anthony PERARD <anthony.perard@citrix.com>,
	Juergen Gross <jgross@suse.com>
Subject: [PATCH 2/2] libxl: devd: Spawn QEMU for 9pfs
Date: Tue,  9 Jan 2024 12:05:40 -0500
Message-ID: <20240109170540.38239-3-jandryuk@gmail.com>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20240109170540.38239-1-jandryuk@gmail.com>
References: <20240109170540.38239-1-jandryuk@gmail.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Add support for xl devd to support 9pfs in a domU.  devd need to spawn a
pvqemu for the domain to service 9pfs as well as qdisk backends.  Rename
num_qdisks to pvqemu_refcnt to be more generic.

Signed-off-by: Jason Andryuk <jandryuk@gmail.com>
---
 tools/libs/light/libxl_device.c   | 22 ++++++++++++----------
 tools/libs/light/libxl_dm.c       | 11 ++++++-----
 tools/libs/light/libxl_internal.h |  4 ++--
 3 files changed, 20 insertions(+), 17 deletions(-)

diff --git a/tools/libs/light/libxl_device.c b/tools/libs/light/libxl_device.c
index ae2b71b0bf..eb76d3a486 100644
--- a/tools/libs/light/libxl_device.c
+++ b/tools/libs/light/libxl_device.c
@@ -1517,12 +1517,12 @@ static void device_complete(libxl__egc *egc, libxl__ao_device *aodev)
     libxl__nested_ao_free(aodev->ao);
 }
 
-static void qdisk_spawn_outcome(libxl__egc *egc, libxl__dm_spawn_state *dmss,
-                                int rc)
+static void qemu_xenpv_spawn_outcome(libxl__egc *egc,
+                                     libxl__dm_spawn_state *dmss, int rc)
 {
     STATE_AO_GC(dmss->spawn.ao);
 
-    LOGD(DEBUG, dmss->guest_domid, "qdisk backend spawn %s",
+    LOGD(DEBUG, dmss->guest_domid, "qemu xenpv backend spawn %s",
                 rc ? "failed" : "succeed");
 
     libxl__nested_ao_free(dmss->spawn.ao);
@@ -1545,7 +1545,7 @@ typedef struct libxl__ddomain_device {
  */
 typedef struct libxl__ddomain_guest {
     uint32_t domid;
-    int num_qdisks;
+    int pvqemu_refcnt;
     XEN_SLIST_HEAD(, struct libxl__ddomain_device) devices;
     XEN_SLIST_ENTRY(struct libxl__ddomain_guest) next;
 } libxl__ddomain_guest;
@@ -1639,15 +1639,16 @@ static int add_device(libxl__egc *egc, libxl__ao *ao,
 
     switch(dev->backend_kind) {
     case LIBXL__DEVICE_KIND_QDISK:
-        if (dguest->num_qdisks == 0) {
+    case LIBXL__DEVICE_KIND_9PFS:
+        if (dguest->pvqemu_refcnt == 0) {
             GCNEW(dmss);
             dmss->guest_domid = dev->domid;
             dmss->spawn.ao = ao;
-            dmss->callback = qdisk_spawn_outcome;
+            dmss->callback = qemu_xenpv_spawn_outcome;
 
-            libxl__spawn_qdisk_backend(egc, dmss);
+            libxl__spawn_qemu_xenpv_backend(egc, dmss);
         }
-        dguest->num_qdisks++;
+        dguest->pvqemu_refcnt++;
         break;
     default:
         GCNEW(aodev);
@@ -1678,8 +1679,9 @@ static int remove_device(libxl__egc *egc, libxl__ao *ao,
 
     switch(ddev->dev->backend_kind) {
     case LIBXL__DEVICE_KIND_QDISK:
-        if (--dguest->num_qdisks == 0) {
-            rc = libxl__destroy_qdisk_backend(gc, dev->domid);
+    case LIBXL__DEVICE_KIND_9PFS:
+        if (--dguest->pvqemu_refcnt == 0) {
+            rc = libxl__destroy_qemu_xenpv_backend(gc, dev->domid);
             if (rc)
                 goto out;
         }
diff --git a/tools/libs/light/libxl_dm.c b/tools/libs/light/libxl_dm.c
index 6ef16ad2a0..5343ebd4dc 100644
--- a/tools/libs/light/libxl_dm.c
+++ b/tools/libs/light/libxl_dm.c
@@ -3370,7 +3370,8 @@ static void device_model_postconfig_done(libxl__egc *egc,
     dmss->callback(egc, dmss, rc);
 }
 
-void libxl__spawn_qdisk_backend(libxl__egc *egc, libxl__dm_spawn_state *dmss)
+void libxl__spawn_qemu_xenpv_backend(libxl__egc *egc,
+                                     libxl__dm_spawn_state *dmss)
 {
     STATE_AO_GC(dmss->spawn.ao);
     flexarray_t *dm_args, *dm_envs;
@@ -3403,7 +3404,7 @@ void libxl__spawn_qdisk_backend(libxl__egc *egc, libxl__dm_spawn_state *dmss)
     libxl__set_qemu_env_for_xsa_180(gc, dm_envs);
     envs = (char **) flexarray_contents(dm_envs);
 
-    logfile_w = libxl__create_qemu_logfile(gc, GCSPRINTF("qdisk-%u", domid));
+    logfile_w = libxl__create_qemu_logfile(gc, GCSPRINTF("qemu-xenpv-%u", domid));
     if (logfile_w < 0) {
         rc = logfile_w;
         goto out;
@@ -3430,7 +3431,7 @@ void libxl__spawn_qdisk_backend(libxl__egc *egc, libxl__dm_spawn_state *dmss)
      * because we will call this from unprivileged driver domains,
      * so save it in the current domain libxl private dir.
      */
-    dmss->spawn.pidpath = GCSPRINTF("libxl/%u/qdisk-backend-pid", domid);
+    dmss->spawn.pidpath = GCSPRINTF("libxl/%u/qemu-xenpv-backend-pid", domid);
     dmss->spawn.midproc_cb = libxl__spawn_record_pid;
     dmss->spawn.confirm_cb = device_model_confirm;
     dmss->spawn.failure_cb = device_model_startup_failed;
@@ -3460,12 +3461,12 @@ static int kill_device_model(libxl__gc *gc, const char *xs_path_pid)
 }
 
 /* Helper to destroy a Qdisk backend */
-int libxl__destroy_qdisk_backend(libxl__gc *gc, uint32_t domid)
+int libxl__destroy_qemu_xenpv_backend(libxl__gc *gc, uint32_t domid)
 {
     char *pid_path;
     int rc;
 
-    pid_path = GCSPRINTF("libxl/%u/qdisk-backend-pid", domid);
+    pid_path = GCSPRINTF("libxl/%u/qemu-xenpv-backend-pid", domid);
 
     rc = kill_device_model(gc, pid_path);
     if (rc)
diff --git a/tools/libs/light/libxl_internal.h b/tools/libs/light/libxl_internal.h
index d5732d1c37..b9e4661129 100644
--- a/tools/libs/light/libxl_internal.h
+++ b/tools/libs/light/libxl_internal.h
@@ -4195,9 +4195,9 @@ _hidden char *libxl__stub_dm_name(libxl__gc *gc, const char * guest_name);
 
 /* Qdisk backend launch helpers */
 
-_hidden void libxl__spawn_qdisk_backend(libxl__egc *egc,
+_hidden void libxl__spawn_qemu_xenpv_backend(libxl__egc *egc,
                                         libxl__dm_spawn_state *dmss);
-_hidden int libxl__destroy_qdisk_backend(libxl__gc *gc, uint32_t domid);
+_hidden int libxl__destroy_qemu_xenpv_backend(libxl__gc *gc, uint32_t domid);
 
 /*----- Domain creation -----*/
 
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Tue Jan 09 17:16:52 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 09 Jan 2024 17:16:52 +0000
Received: from list by lists.xenproject.org with outflank-mailman.664855.1034979 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNFiY-00052S-Gj; Tue, 09 Jan 2024 17:16:46 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 664855.1034979; Tue, 09 Jan 2024 17:16:46 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNFiY-00052L-Dm; Tue, 09 Jan 2024 17:16:46 +0000
Received: by outflank-mailman (input) for mailman id 664855;
 Tue, 09 Jan 2024 17:16:45 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=Qgrd=IT=gmail.com=jandryuk@srs-se1.protection.inumbo.net>)
 id 1rNFiX-00052F-4E
 for xen-devel@lists.xenproject.org; Tue, 09 Jan 2024 17:16:45 +0000
Received: from mail-qk1-x72a.google.com (mail-qk1-x72a.google.com
 [2607:f8b0:4864:20::72a])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id dc614c99-af12-11ee-98ef-6d05b1d4d9a1;
 Tue, 09 Jan 2024 18:16:44 +0100 (CET)
Received: by mail-qk1-x72a.google.com with SMTP id
 af79cd13be357-783269124a8so128115485a.1
 for <xen-devel@lists.xenproject.org>; Tue, 09 Jan 2024 09:16:44 -0800 (PST)
Received: from pm2-ws13.praxislan02.com
 (207-172-141-204.s8906.c3-0.slvr-cbr1.lnh-slvr.md.cable.rcncustomer.com.
 [207.172.141.204]) by smtp.gmail.com with ESMTPSA id
 p17-20020ae9f311000000b007832f812b55sm554709qkg.82.2024.01.09.09.16.41
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 09 Jan 2024 09:16:41 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: dc614c99-af12-11ee-98ef-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1704820602; x=1705425402; darn=lists.xenproject.org;
        h=content-transfer-encoding:mime-version:message-id:date:subject:cc
         :to:from:from:to:cc:subject:date:message-id:reply-to;
        bh=zLntkworFozqUhIj+VSpyXjWsszU3gOI1osMehFczYM=;
        b=Gx5JFo/P3tR4G2uU9AqTxNMxbF/9SiqRKZ7+/ELiQINtLUv48wGegb0lQbsi6CNs80
         RvryR8rO2pO7Jbc550IUZ8WBCbmazv8gYE6U89OBvFC5qt3APlLQHFa2yBjGN/RldQAP
         r97xRZZ8lDOZaD42BTiSjY835Njtnm5xeftAcpBb9ISWJBS/dwulIv9GaK/RsjF6cnsn
         K27d/eLoXXS4AqrnR1d8Qur7KTJlMewicbuBc1Rn5qc2hRTP9qdvqNByA5PfnlOhOxpr
         phd1OMzFuDOMoRWEkpEt/cMmxMKZiIBsjzET5vCaKyWQVZY8iTesr1aC8B0Oe60DxLfp
         2www==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704820602; x=1705425402;
        h=content-transfer-encoding:mime-version:message-id:date:subject:cc
         :to:from:x-gm-message-state:from:to:cc:subject:date:message-id
         :reply-to;
        bh=zLntkworFozqUhIj+VSpyXjWsszU3gOI1osMehFczYM=;
        b=gizYfgJ/AR0ge/Y1yw0v1Wl26mFEeLqnwsf5GLmwvRCRV8rfkv7veK1jmGVauCZ07m
         gaX7aunwh8nx9wcZirKaZTzjp09Uj061hzl5enPvD0vYVrFP2X2AeVfUANj7HodfHn8w
         oA0tgcmx5JyUZej4NYcXg3hKX8CJuyswuz8XQ5gCNiqgc/rTu/c1xEFpBKTUPVOHR4bo
         Ms/LD4SjzYC5sQesLYxX7vaxIUVjzy7MIOJ2c840BW98IE0qOCPJate6QM70JyVWdXPG
         AuScVkqSN0wc0jnDu80+4B1DaF3O+Wlb1oT6jZ1mvHBHd3cf4sqrL19cxSFzft9ocBPq
         gtmQ==
X-Gm-Message-State: AOJu0YwhsIKY2EI3Pm+mhkayWRWbk2EVXhEkE6A/qPG2jpseKxT6zQD4
	ZJNK0qcS/JIFnmhg35j6lAjt+jhbV/4=
X-Google-Smtp-Source: AGHT+IGpbora5pdnB3/OUkiqC2O3dLZLTuWijKCAy87CFi3pzqDSs3LwcYfbIv4ezQjE5MZHzO/YUA==
X-Received: by 2002:a05:620a:4690:b0:781:bdfe:33b7 with SMTP id bq16-20020a05620a469000b00781bdfe33b7mr8514985qkb.151.1704820602223;
        Tue, 09 Jan 2024 09:16:42 -0800 (PST)
From: Jason Andryuk <jandryuk@gmail.com>
To: xen-devel@lists.xenproject.org
Cc: Jason Andryuk <jandryuk@gmail.com>,
	Wei Liu <wl@xen.org>,
	Anthony PERARD <anthony.perard@citrix.com>,
	Juergen Gross <jgross@suse.com>
Subject: [PATCH] libxl: Use vkb=[] for HVMs
Date: Tue,  9 Jan 2024 12:16:31 -0500
Message-ID: <20240109171631.40071-1-jandryuk@gmail.com>
X-Mailer: git-send-email 2.43.0
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

xl/libxl only applies vkb=[] to PV & PVH guests.  HVM gets only a single
vkb by default, but that can be disabled by the vkb_device boolean.
Notably the HVM vkb cannot be configured, so feature-abs-pointer or the
backend-type cannot be specified.

Re-arrange the logic so that vkb=[] is handled regardless of domain
type.  If vkb is empty or unspecified, follow the vkb_device boolean for
HVMs.  Nothing changes for PVH & PV.  HVMs can now get a configured vkb
instead of just the default one.

The chance for regression is an HVM config with
vkb=["$something"]
vkb_device=false

Which would now get a vkb.

This is useful for vGlass which provides a VKB to HVMs.  vGlass wants to
specify feature-abs-pointer, but that is racily written by vGlass
instead of coming through the xl.cfg.  Unhelpfully, Linux xen-kbdfront
reads the backend nodes without checking that the backend is in
InitWait.

Signed-off-by: Jason Andryuk <jandryuk@gmail.com>
---
 tools/libs/light/libxl_create.c | 26 ++++++++++++++------------
 1 file changed, 14 insertions(+), 12 deletions(-)

diff --git a/tools/libs/light/libxl_create.c b/tools/libs/light/libxl_create.c
index ce1d431103..39c50b3711 100644
--- a/tools/libs/light/libxl_create.c
+++ b/tools/libs/light/libxl_create.c
@@ -1771,24 +1771,31 @@ static void domcreate_launch_dm(libxl__egc *egc, libxl__multidev *multidev,
         libxl__device_add(gc, domid, &libxl__virtio_devtype,
                           &d_config->virtios[i]);
 
+    if (d_config->num_vkbs) {
+        for (i = 0; i < d_config->num_vkbs; i++) {
+            libxl__device_add(gc, domid, &libxl__vkb_devtype,
+                              &d_config->vkbs[i]);
+        }
+    } else if (d_config->c_info.type == LIBXL_DOMAIN_TYPE_HVM &&
+               libxl_defbool_val(d_config->b_info.u.hvm.vkb_device)) {
+        libxl_device_vkb vkb;
+
+        libxl_device_vkb_init(&vkb);
+        libxl__device_add(gc, domid, &libxl__vkb_devtype, &vkb);
+        libxl_device_vkb_dispose(&vkb);
+    }
+
     switch (d_config->c_info.type) {
     case LIBXL_DOMAIN_TYPE_HVM:
     {
         libxl__device_console console;
         libxl__device device;
-        libxl_device_vkb vkb;
 
         init_console_info(gc, &console, 0);
         console.backend_domid = state->console_domid;
         libxl__device_console_add(gc, domid, &console, state, &device);
         libxl__device_console_dispose(&console);
 
-        if (libxl_defbool_val(d_config->b_info.u.hvm.vkb_device)) {
-            libxl_device_vkb_init(&vkb);
-            libxl__device_add(gc, domid, &libxl__vkb_devtype, &vkb);
-            libxl_device_vkb_dispose(&vkb);
-        }
-
         dcs->sdss.dm.guest_domid = domid;
         if (libxl_defbool_val(d_config->b_info.device_model_stubdomain))
             libxl__spawn_stub_dm(egc, &dcs->sdss);
@@ -1816,11 +1823,6 @@ static void domcreate_launch_dm(libxl__egc *egc, libxl__multidev *multidev,
                               &d_config->vfbs[i]);
         }
 
-        for (i = 0; i < d_config->num_vkbs; i++) {
-            libxl__device_add(gc, domid, &libxl__vkb_devtype,
-                              &d_config->vkbs[i]);
-        }
-
         if (d_config->b_info.arch_arm.vuart == LIBXL_VUART_TYPE_SBSA_UART) {
             init_console_info(gc, &vuart, 0);
             vuart.backend_domid = state->console_domid;
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Tue Jan 09 17:51:26 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 09 Jan 2024 17:51:26 +0000
Received: from list by lists.xenproject.org with outflank-mailman.664891.1035005 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNGG1-00022e-8Z; Tue, 09 Jan 2024 17:51:21 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 664891.1035005; Tue, 09 Jan 2024 17:51:21 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNGG1-00022X-5u; Tue, 09 Jan 2024 17:51:21 +0000
Received: by outflank-mailman (input) for mailman id 664891;
 Tue, 09 Jan 2024 17:51:20 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=bEKq=IT=cloud.com=javi.merino@srs-se1.protection.inumbo.net>)
 id 1rNGG0-00022R-8G
 for xen-devel@lists.xenproject.org; Tue, 09 Jan 2024 17:51:20 +0000
Received: from mail-ed1-x52a.google.com (mail-ed1-x52a.google.com
 [2a00:1450:4864:20::52a])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id afaeff2a-af17-11ee-9b0f-b553b5be7939;
 Tue, 09 Jan 2024 18:51:16 +0100 (CET)
Received: by mail-ed1-x52a.google.com with SMTP id
 4fb4d7f45d1cf-55783b7b47aso3000669a12.0
 for <xen-devel@lists.xenproject.org>; Tue, 09 Jan 2024 09:51:16 -0800 (PST)
Received: from jmerino-thinkstation (default-46-102-197-194.interdsl.co.uk.
 [46.102.197.194]) by smtp.gmail.com with ESMTPSA id
 dt13-20020a170906b78d00b00a26b057df46sm1246405ejb.126.2024.01.09.09.51.15
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 09 Jan 2024 09:51:15 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: afaeff2a-af17-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1704822676; x=1705427476; darn=lists.xenproject.org;
        h=in-reply-to:content-disposition:mime-version:references:message-id
         :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to;
        bh=YgRb8MKHr8h0tFnzTJhPr7fl80PWyC+x0SDz9mVCcg4=;
        b=dKgfJ90QeK7jRtoq8J2eutANTuV4iOrDKzeunDskSCAyLi3kFJ6hrrpCp2JhXFfxX6
         Yng9+7md1qJKw/NnuCUx2ubCkG6bbKm+UXjVy5b8KzVHY1xR3QQJKnncxgsr6/h/SZN2
         Jw1HElPOCTxmamtzvqTqPzcZod4n/Wzo990yw=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704822676; x=1705427476;
        h=in-reply-to:content-disposition:mime-version:references:message-id
         :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to;
        bh=YgRb8MKHr8h0tFnzTJhPr7fl80PWyC+x0SDz9mVCcg4=;
        b=XKHkvc9SscnONWpYH7dJBAKesSVVesoS9hZgx4bdB/iML9vkP5lV7JlVOAKiVgTrAP
         Ofay24lc2F0JNIp8minW53yYCBbSZjXe1+YS3kZZnfj2MfNCjX3aF4jbSK7wSdDMv3ic
         363Tqn0WQx4fQCVnkyyaqOa4IuwbZeyTgUmDJztiKA+1XhPaH0k2Pw1qQfKBr2MRa6dc
         wTUnZ29f6Na7aD1NYLqG7Z9J4J/pxLyf7wzyf6/okdIRDoKdJON+r3YCP39o9FJDaTFq
         wLlLZ3EikzGP9jBzcNjBm/hw/h+r8hsF9eN1385V8TxA9xHhX3EJspF9O+6ywGCWRskM
         lAcA==
X-Gm-Message-State: AOJu0Yx0HiYqGy7KjWmIcWNYZvpMt7HSNbtMuTCVJxM2ioRITpPs8Y5e
	HurMWCKvtn0h2m8Mgn1I4IC2tk4JpuxwCA==
X-Google-Smtp-Source: AGHT+IGfboNQ+rTqUFQiHIKf6mlZgjzx1Y2J1VToNH3bCU6RYYnC4R3mCEHFAIbtkTcfUwR2YxH6cQ==
X-Received: by 2002:a17:907:1b28:b0:a2a:fc9b:c05a with SMTP id mp40-20020a1709071b2800b00a2afc9bc05amr1202339ejc.15.1704822676056;
        Tue, 09 Jan 2024 09:51:16 -0800 (PST)
Date: Tue, 9 Jan 2024 17:51:15 +0000
From: Javi Merino <javi.merino@cloud.com>
To: Julien Grall <julien@xen.org>
Cc: xen-devel@lists.xenproject.org, 
	Vikram Garhwal <vikram.garhwal@amd.com>, Stefano Stabellini <sstabellini@kernel.org>
Subject: Re: [PATCH for-4.18 v1] xen/common: Don't dereference overlay_node
 after checking that it is NULL
Message-ID: <y5ity42qgf634cg2kh2bxnwwlpksxpif7volgvvgcdtg55izlx@bgneyecst7hp>
References: <6b2db92de764b6031647926d27cb14dd455eff7d.1704809355.git.javi.merino@cloud.com>
 <e579994b-80ff-42db-bf57-6c6068fca902@xen.org>
 <4pfn6xyqw2eum4hokedzeqzvteyrwjokynt2zxq6wesaxfwzsp@cfk6iab3etey>
 <6fe36a67-b798-42a7-8eab-07b154cfd781@xen.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
In-Reply-To: <6fe36a67-b798-42a7-8eab-07b154cfd781@xen.org>

On Tue, Jan 09, 2024 at 03:50:38PM +0000, Julien Grall wrote:
> Hi Javi,
> 
> On 09/01/2024 15:42, Javi Merino wrote:
> > On Tue, Jan 09, 2024 at 03:31:55PM +0000, Julien Grall wrote:
> > > Hi Javi,
> > > 
> > > Title: Any reason this is titled for-4.18? Shouldn't this patch also be
> > > merged in staging?
> > 
> > This is for staging and 4.18.  If the tag "for-4.18" meant "this is
> > only for 4.18", then that's not what I meant.  Sorry for that.
> 
> We usually use "for-4.XX" during code freeze to indicate whether a patch
> should be part of the upcoming relase of the next week. Hence my confusion.

Ok, I know for next time.  Thanks for the clarification.

> Outside of the code freeze, we sometimes add the tag "Backport: 4.XX+" just
> above the Signed-off-by in addition to the Fixes tag to indicate how far the
> backport should go. The Fixes tag is also sufficient.
> 
> As a side node, this is fixing experimental code. So in general we would not
> backport such patch (we only do backport for supported features). This is
> because there are no guarantee that an experimental would not crash Xen.
> 
> Although, the tag is still useful for downstream that may have decided to
> take the patch in (I think AMD/Xilinx is using them) and accept some of the
> risks.
> 
> Stefano is the person doing the backport for Arm. So I will let him decide
> whether he wants to backport it.

Fair enough.

Cheers,
Javi


From xen-devel-bounces@lists.xenproject.org Tue Jan 09 18:15:06 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 09 Jan 2024 18:15:06 +0000
Received: from list by lists.xenproject.org with outflank-mailman.664898.1035014 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNGcu-0001gq-5v; Tue, 09 Jan 2024 18:15:00 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 664898.1035014; Tue, 09 Jan 2024 18:15:00 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNGcu-0001gj-3L; Tue, 09 Jan 2024 18:15:00 +0000
Received: by outflank-mailman (input) for mailman id 664898;
 Tue, 09 Jan 2024 18:14:58 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>) id 1rNGcs-0001gd-9T
 for xen-devel@lists.xenproject.org; Tue, 09 Jan 2024 18:14:58 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rNGcr-0006Ec-S4; Tue, 09 Jan 2024 18:14:57 +0000
Received: from [15.248.2.151] (helo=[10.24.67.35])
 by xenbits.xenproject.org with esmtpsa
 (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rNGcr-0005tI-N7; Tue, 09 Jan 2024 18:14:57 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
	s=20200302mail; h=Content-Transfer-Encoding:Content-Type:In-Reply-To:From:
	References:Cc:To:Subject:MIME-Version:Date:Message-ID;
	bh=7K8CAESnRqY9IgoQOk7J1iQuVN3/aQoucmyGCXaiHZI=; b=gz+4dmvVUngwRyXwBxvHz1n4ym
	J4PCo8HYpUQ8N7NKlP5Pb+iXM5A6s5X9rMW1P1oU9c3dgTzeux9J2Zf7VoN+Ti2hk0jVaQ3Ai97fF
	++hRnv0EQtTOuci26yRcQUNPH12f5im2PiM+ZtX6Ffbg+3EBCM+YlYjLd6DS/2T7fu6M=;
Message-ID: <c1c6ee29-7fa1-4b39-aa7a-1b8f750cd893@xen.org>
Date: Tue, 9 Jan 2024 18:14:56 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2 4/7] xen/device-tree: Fix bootfdt.c to tolerate 0
 reserved regions
Content-Language: en-GB
To: Shawn Anastasio <sanastasio@raptorengineering.com>,
 xen-devel@lists.xenproject.org
Cc: Timothy Pearson <tpearson@raptorengineering.com>,
 Jan Beulich <jbeulich@suse.com>, Stefano Stabellini <sstabellini@kernel.org>
References: <cover.1702607884.git.sanastasio@raptorengineering.com>
 <1c6f0f94f4ea2b773f960d88bd02e2168ac28abb.1702607884.git.sanastasio@raptorengineering.com>
From: Julien Grall <julien@xen.org>
In-Reply-To: <1c6f0f94f4ea2b773f960d88bd02e2168ac28abb.1702607884.git.sanastasio@raptorengineering.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

(+ Stefano)

Hi Shawn,

On 15/12/2023 02:43, Shawn Anastasio wrote:
> The early_print_info routine in bootfdt.c incorrectly stores the result
> of a call to fdt_num_mem_rsv() in an unsigned int, which results in the
> negative error code being interpreted incorrectly in a subsequent loop
> in the case where the device tree does not contain any memory reserve
> map entries.

I have some trouble to reconciliate the code with your explanation. 
Looking at the implementation fdt_num_mem_rsv() should return 0 if there 
are no reserved regions. A negative value would only be returned if the 
device-tree is malformated.

Do you have a Device-Tree where the issue occurs?

That said, I agree that the code could be hardened.

> 
> Signed-off-by: Shawn Anastasio <sanastasio@raptorengineering.com>
> ---
>   xen/common/device-tree/bootfdt.c | 5 +++--
>   1 file changed, 3 insertions(+), 2 deletions(-)
> 
> diff --git a/xen/common/device-tree/bootfdt.c b/xen/common/device-tree/bootfdt.c
> index ae9fa1e3d6..796ac01c18 100644
> --- a/xen/common/device-tree/bootfdt.c
> +++ b/xen/common/device-tree/bootfdt.c
> @@ -466,7 +466,8 @@ static void __init early_print_info(void)
>       struct meminfo *mem_resv = &bootinfo.reserved_mem;
>       struct bootmodules *mods = &bootinfo.modules;
>       struct bootcmdlines *cmds = &bootinfo.cmdlines;
> -    unsigned int i, j, nr_rsvd;
> +    unsigned int i, j;
> +    int nr_rsvd;
>   
>       for ( i = 0; i < mi->nr_banks; i++ )
>           printk("RAM: %"PRIpaddr" - %"PRIpaddr"\n",
> @@ -481,7 +482,7 @@ static void __init early_print_info(void)
>                   boot_module_kind_as_string(mods->module[i].kind));
>   
>       nr_rsvd = fdt_num_mem_rsv(device_tree_flattened);

If I am correct above, then I think we should panic() rather than trying 
to continue with a buggy DT.

> -    for ( i = 0; i < nr_rsvd; i++ )
> +    for ( i = 0; nr_rsvd > 0 && i < nr_rsvd; i++ )
>       {
>           paddr_t s, e;
>   

Cheers,

-- 
Julien Grall


From xen-devel-bounces@lists.xenproject.org Tue Jan 09 18:32:05 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 09 Jan 2024 18:32:05 +0000
Received: from list by lists.xenproject.org with outflank-mailman.664904.1035025 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNGtD-0005Xf-K5; Tue, 09 Jan 2024 18:31:51 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 664904.1035025; Tue, 09 Jan 2024 18:31:51 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNGtD-0005XY-Gh; Tue, 09 Jan 2024 18:31:51 +0000
Received: by outflank-mailman (input) for mailman id 664904;
 Tue, 09 Jan 2024 18:31:50 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=XP49=IT=gmail.com=olekstysh@srs-se1.protection.inumbo.net>)
 id 1rNGtC-0005XS-CB
 for xen-devel@lists.xenproject.org; Tue, 09 Jan 2024 18:31:50 +0000
Received: from mail-wm1-x335.google.com (mail-wm1-x335.google.com
 [2a00:1450:4864:20::335])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 58faa396-af1d-11ee-9b0f-b553b5be7939;
 Tue, 09 Jan 2024 19:31:47 +0100 (CET)
Received: by mail-wm1-x335.google.com with SMTP id
 5b1f17b1804b1-40d60c49ee7so37393115e9.0
 for <xen-devel@lists.xenproject.org>; Tue, 09 Jan 2024 10:31:47 -0800 (PST)
Received: from EPUAKYIW03DD.. ([91.123.150.198])
 by smtp.gmail.com with ESMTPSA id
 j17-20020adfea51000000b0033660f75d08sm2998540wrn.116.2024.01.09.10.31.44
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 09 Jan 2024 10:31:45 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 58faa396-af1d-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1704825107; x=1705429907; darn=lists.xenproject.org;
        h=content-transfer-encoding:mime-version:message-id:date:subject:cc
         :to:from:from:to:cc:subject:date:message-id:reply-to;
        bh=9XFtGICw0ZOYP1KaZFQnHRK8o8vGVTmy1dPmwlRy2FE=;
        b=OiFgjurBcRnNjEkIpyAgnV+ABCcmuDAKOkzdVEEm7Vu9q73IX/o78vaqJLwUgu5gZ0
         JtI+W8qfHVokCu3O3QyhcfZiPnWheJEaLhv7NL7w50jYfTFw+G5DHjvffnR5rmaU0qfW
         rMZQb/cLsEor83tD0aVGgfNpva8TYAlB6oeeY4BTSAUg4a6Kw8niXucMaPGeb2LVv+FP
         jukRZL4wtHZBj8mLMQEvl3n44f4UFMbq4FfGDM/HZdsu/9bicc056W33PMDGZBpce5K1
         tdrhg6iglqwxod7gAhFxYKj00u2Kbh3k7+st09dnIpqra9KDOdSQTjbSWpTcARuVYSKF
         uCSg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704825107; x=1705429907;
        h=content-transfer-encoding:mime-version:message-id:date:subject:cc
         :to:from:x-gm-message-state:from:to:cc:subject:date:message-id
         :reply-to;
        bh=9XFtGICw0ZOYP1KaZFQnHRK8o8vGVTmy1dPmwlRy2FE=;
        b=Sl0xo7M9LqA/SmLx9VJ8RcFTVdbCF0OKpw1VRO9y4MmmQnbNMp1BPan5vPKReqYeCq
         EWbbdBbj+yic8l3/y79qjndjZSre0A0ceCatzHO3ixRqitSj8sfci6AdjgpT1pTy0523
         sdlvnCz+bYzQPnMQNBUju055u7JxFkUE9AjsPUKRDw6CqcogUqoD74cOM6mKToLxzDIe
         oDhFnfOmAlKt34CvOUCDylnIrOJ9OK7lS65RXySCK30WYhKCm5BhRt03K1+cezVR9Ier
         SxCaEl4S1jgylImgvM5bLp6fhT75PGG3klU8BZNng1R9PEunLk7YdGFxDW33XR3SpJd6
         lepg==
X-Gm-Message-State: AOJu0YymLldvk7vCKdnB53cvoOp5AJlcrul7HzxN0cJdmsLHmHhmPgoS
	6id6UZ5QxYlBoC8eTdAc9g3ITbhGjBA=
X-Google-Smtp-Source: AGHT+IFZ4AzApNWClmEutZip6HiuDvW/c+sSPmo7DJau1xq5iTK1B1Ps9CIi7CX59E4NeJQg4oPg4w==
X-Received: by 2002:adf:f605:0:b0:336:c5e2:fc9e with SMTP id t5-20020adff605000000b00336c5e2fc9emr838902wrp.35.1704825106616;
        Tue, 09 Jan 2024 10:31:46 -0800 (PST)
From: Oleksandr Tyshchenko <olekstysh@gmail.com>
To: xen-devel@lists.xenproject.org,
	linux-kernel@vger.kernel.org
Cc: Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>,
	=?UTF-8?q?Christian=20K=C3=B6nig?= <christian.koenig@amd.com>,
	Daniel Vetter <daniel@ffwll.ch>,
	Juergen Gross <jgross@suse.com>,
	Stefano Stabellini <sstabellini@kernel.org>
Subject: [PATCH v3] xen/gntdev: Fix the abuse of underlying struct page in DMA-buf import
Date: Tue,  9 Jan 2024 20:31:25 +0200
Message-Id: <20240109183125.2654368-1-olekstysh@gmail.com>
X-Mailer: git-send-email 2.34.1
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

From: Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>

DO NOT access the underlying struct page of an sg table exported
by DMA-buf in dmabuf_imp_to_refs(), this is not allowed.
Please see drivers/dma-buf/dma-buf.c:mangle_sg_table() for details.

Fortunately, here (for special Xen device) we can avoid using
pages and calculate gfns directly from dma addresses provided by
the sg table.

Suggested-by: Daniel Vetter <daniel@ffwll.ch>
Signed-off-by: Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>
Acked-by: Christian König <christian.koenig@amd.com>
Acked-by: Daniel Vetter <daniel@ffwll.ch>
Reviewed-by: Stefano Stabellini <sstabellini@kernel.org>
---
Please note, I didn't manage to test the patch against the latest master branch
on real HW (patch was only build tested there). Patch was tested on Arm64
guests using Linux v5.10.41 from vendor's BSP, this is the environment where
running this use-case is possible and to which I have an access (Xen PV display
with zero-copy and backend domain as a buffer provider - be-alloc=1, so dma-buf
import part was involved). A little bit old, but the dma-buf import code
in gntdev-dmabuf.c hasn't been changed much since that time, all context
remains allmost the same according to my code inspection.

  V2:
   - add R-b and A-b
   - fix build warning noticed by kernel test robot by initializing
     "ret" in case of error
     https://lore.kernel.org/oe-kbuild-all/202401062122.it6zvLG0-lkp@intel.com/

  V3:
   - add A-b
   - add in-code comment
---
---
 drivers/xen/gntdev-dmabuf.c | 50 ++++++++++++++++++-------------------
 1 file changed, 25 insertions(+), 25 deletions(-)

diff --git a/drivers/xen/gntdev-dmabuf.c b/drivers/xen/gntdev-dmabuf.c
index 4440e626b797..42adc2c1e06b 100644
--- a/drivers/xen/gntdev-dmabuf.c
+++ b/drivers/xen/gntdev-dmabuf.c
@@ -11,6 +11,7 @@
 #include <linux/kernel.h>
 #include <linux/errno.h>
 #include <linux/dma-buf.h>
+#include <linux/dma-direct.h>
 #include <linux/slab.h>
 #include <linux/types.h>
 #include <linux/uaccess.h>
@@ -50,7 +51,7 @@ struct gntdev_dmabuf {
 
 	/* Number of pages this buffer has. */
 	int nr_pages;
-	/* Pages of this buffer. */
+	/* Pages of this buffer (only for dma-buf export). */
 	struct page **pages;
 };
 
@@ -484,7 +485,7 @@ static int dmabuf_exp_from_refs(struct gntdev_priv *priv, int flags,
 /* DMA buffer import support. */
 
 static int
-dmabuf_imp_grant_foreign_access(struct page **pages, u32 *refs,
+dmabuf_imp_grant_foreign_access(unsigned long *gfns, u32 *refs,
 				int count, int domid)
 {
 	grant_ref_t priv_gref_head;
@@ -507,7 +508,7 @@ dmabuf_imp_grant_foreign_access(struct page **pages, u32 *refs,
 		}
 
 		gnttab_grant_foreign_access_ref(cur_ref, domid,
-						xen_page_to_gfn(pages[i]), 0);
+						gfns[i], 0);
 		refs[i] = cur_ref;
 	}
 
@@ -529,7 +530,6 @@ static void dmabuf_imp_end_foreign_access(u32 *refs, int count)
 
 static void dmabuf_imp_free_storage(struct gntdev_dmabuf *gntdev_dmabuf)
 {
-	kfree(gntdev_dmabuf->pages);
 	kfree(gntdev_dmabuf->u.imp.refs);
 	kfree(gntdev_dmabuf);
 }
@@ -549,12 +549,6 @@ static struct gntdev_dmabuf *dmabuf_imp_alloc_storage(int count)
 	if (!gntdev_dmabuf->u.imp.refs)
 		goto fail;
 
-	gntdev_dmabuf->pages = kcalloc(count,
-				       sizeof(gntdev_dmabuf->pages[0]),
-				       GFP_KERNEL);
-	if (!gntdev_dmabuf->pages)
-		goto fail;
-
 	gntdev_dmabuf->nr_pages = count;
 
 	for (i = 0; i < count; i++)
@@ -576,7 +570,8 @@ dmabuf_imp_to_refs(struct gntdev_dmabuf_priv *priv, struct device *dev,
 	struct dma_buf *dma_buf;
 	struct dma_buf_attachment *attach;
 	struct sg_table *sgt;
-	struct sg_page_iter sg_iter;
+	struct sg_dma_page_iter sg_iter;
+	unsigned long *gfns;
 	int i;
 
 	dma_buf = dma_buf_get(fd);
@@ -624,26 +619,31 @@ dmabuf_imp_to_refs(struct gntdev_dmabuf_priv *priv, struct device *dev,
 
 	gntdev_dmabuf->u.imp.sgt = sgt;
 
-	/* Now convert sgt to array of pages and check for page validity. */
+	gfns = kcalloc(count, sizeof(*gfns), GFP_KERNEL);
+	if (!gfns) {
+		ret = ERR_PTR(-ENOMEM);
+		goto fail_unmap;
+	}
+
+	/*
+	 * Now convert sgt to array of gfns without accessing underlying pages.
+	 * It is not allowed to access the underlying struct page of an sg table
+	 * exported by DMA-buf, but since we deal with special Xen dma device here
+	 * (not a normal physical one) look at the dma addresses in the sg table
+	 * and then calculate gfns directly from them.
+	 */
 	i = 0;
-	for_each_sgtable_page(sgt, &sg_iter, 0) {
-		struct page *page = sg_page_iter_page(&sg_iter);
-		/*
-		 * Check if page is valid: this can happen if we are given
-		 * a page from VRAM or other resources which are not backed
-		 * by a struct page.
-		 */
-		if (!pfn_valid(page_to_pfn(page))) {
-			ret = ERR_PTR(-EINVAL);
-			goto fail_unmap;
-		}
+	for_each_sgtable_dma_page(sgt, &sg_iter, 0) {
+		dma_addr_t addr = sg_page_iter_dma_address(&sg_iter);
+		unsigned long pfn = bfn_to_pfn(XEN_PFN_DOWN(dma_to_phys(dev, addr)));
 
-		gntdev_dmabuf->pages[i++] = page;
+		gfns[i++] = pfn_to_gfn(pfn);
 	}
 
-	ret = ERR_PTR(dmabuf_imp_grant_foreign_access(gntdev_dmabuf->pages,
+	ret = ERR_PTR(dmabuf_imp_grant_foreign_access(gfns,
 						      gntdev_dmabuf->u.imp.refs,
 						      count, domid));
+	kfree(gfns);
 	if (IS_ERR(ret))
 		goto fail_end_access;
 
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Tue Jan 09 18:49:01 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 09 Jan 2024 18:49:01 +0000
Received: from list by lists.xenproject.org with outflank-mailman.664910.1035036 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNH9j-0003Wo-Qk; Tue, 09 Jan 2024 18:48:55 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 664910.1035036; Tue, 09 Jan 2024 18:48:55 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNH9j-0003Wh-MJ; Tue, 09 Jan 2024 18:48:55 +0000
Received: by outflank-mailman (input) for mailman id 664910;
 Tue, 09 Jan 2024 18:48:55 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=Qgrd=IT=gmail.com=jandryuk@srs-se1.protection.inumbo.net>)
 id 1rNH9j-0003WN-2O
 for xen-devel@lists.xenproject.org; Tue, 09 Jan 2024 18:48:55 +0000
Received: from mail-ed1-x52b.google.com (mail-ed1-x52b.google.com
 [2a00:1450:4864:20::52b])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id bcf977b2-af1f-11ee-98ef-6d05b1d4d9a1;
 Tue, 09 Jan 2024 19:48:54 +0100 (CET)
Received: by mail-ed1-x52b.google.com with SMTP id
 4fb4d7f45d1cf-55822753823so849514a12.2
 for <xen-devel@lists.xenproject.org>; Tue, 09 Jan 2024 10:48:54 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: bcf977b2-af1f-11ee-98ef-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1704826134; x=1705430934; darn=lists.xenproject.org;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:from:to:cc:subject:date
         :message-id:reply-to;
        bh=I8BUJrymoqoqnWLjATv//fzdi5296zc26zx1D/fqfvA=;
        b=hI6PAGA/Mcf8+OnIRxHY3r5omUIQPAJkircr4OCrVDwpKWeTBFosAP+/vnh3il3kUP
         udlyIDp0CZZfgFCGXY7qDMew/gStYWpjsqvkDBDZrwJb4zw9QClkbsz4rII22Mxan7O0
         KfrHH1nKJiAlHBOqWTUQGdxmoC1Alc/w+Pil5M1Wg7yHgyoXKefBTvSXKydCrj683Bnx
         D2dViPeN2By1Fpu6F1UF4ypTl3uGd8g/2MNwejsUkdx1Y8UQg9B8ogQUHlMufeKIG8NR
         EcxRMJeHh+J7jJdRMsWVdd79he5FpR84PV5LiYuAK8Qx7wl/Il3NylS6t6AmnwUv5iHQ
         hT8g==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704826134; x=1705430934;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to;
        bh=I8BUJrymoqoqnWLjATv//fzdi5296zc26zx1D/fqfvA=;
        b=n3ti4c9Tz5y6xP20uvVXkLWWryNXlFPtG0tnW3crv8bOUqpqrQl9+wx8X7C2Cx8kcn
         jxY8rbxhHESXzFO6o23QJ3R9rFmGxBw26AjSmVssdK0/tiw/7kCdqs1nuN9OZhq2ly0J
         FrbWKnJTqfQJg6GKlHQtZneONWPJVcj7AvLY8Uiuzgf23eB0XZ5EqCeUzATt2wWfMWAX
         2x0ByR3WrJPeX/ITt8MbS3zBQ/B2UXInYpFOQ5xnpoFBugiEX60gLcwOTqJ6sKXu2S/6
         /E/WfblJFRny+ym/nYv3gBfO7ZlsVzO1i2B0+ormv7QpaGMlXHIud2bRRRCTaZHzXK4n
         CyTQ==
X-Gm-Message-State: AOJu0YzDy51PhaSMqBrnivtYsk/5BqsDaFYEBvaz55sWPYM8xLkPsKEa
	5h6A3rCyylgZoTNpLIg1lBDcW4N/MesINDFV6vY=
X-Google-Smtp-Source: AGHT+IGHNEOC+knSGePDZCVE5hsEllBBm+xegjK69r4jMHP1FMziAfG1G1Pr+3EAJ3N7+ldwK9Bpaasl4dJTnOP9jjc=
X-Received: by 2002:a50:9353:0:b0:552:8534:2a53 with SMTP id
 n19-20020a509353000000b0055285342a53mr2252198eda.23.1704826133894; Tue, 09
 Jan 2024 10:48:53 -0800 (PST)
MIME-Version: 1.0
References: <20240104090055.27323-1-jgross@suse.com> <20240104090055.27323-9-jgross@suse.com>
In-Reply-To: <20240104090055.27323-9-jgross@suse.com>
From: Jason Andryuk <jandryuk@gmail.com>
Date: Tue, 9 Jan 2024 13:48:41 -0500
Message-ID: <CAKf6xpv2BHy_8qomwfFJq2dePFf8bB19NZQ4dmw-eFDj5+hdng@mail.gmail.com>
Subject: Re: [PATCH v3 08/33] tools/xenlogd: add 9pfs attach request support
To: Juergen Gross <jgross@suse.com>
Cc: xen-devel@lists.xenproject.org, Wei Liu <wl@xen.org>, 
	Anthony PERARD <anthony.perard@citrix.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

On Thu, Jan 4, 2024 at 4:12=E2=80=AFAM Juergen Gross <jgross@suse.com> wrot=
e:
>
> Add the attach request of the 9pfs protocol. This introduces the "fid"
> scheme of the 9pfs protocol.
>
> As this will be needed later, use a dedicated memory allocation
> function in alloc_fid() and prepare a fid reference count.
>
> For filling the qid data take the approach from the qemu 9pfs backend
> implementation.
>
> Signed-off-by: Juergen Gross <jgross@suse.com>
> ---
> V2:
> - make fill_qid() parameter stbuf const (Jason Andryuk)
> - free fids after disconnecting guest (Jason Andryuk)
> V3:
> - only store relative path in fid (Jason Andryuk)

The code looks good.  I did have a thought though.

> +static struct p9_fid *alloc_fid_mem(device *device, unsigned int fid,
> +                                    const char *path)
> +{
> +    struct p9_fid *fidp;
> +    size_t pathlen;
> +
> +    /* Paths always start with "/" as they are starting at the mount poi=
nt. */
> +    assert(path[0] =3D=3D '/');
> +

...

> +
> +static const char *relpath_from_path(const char *path)
> +{
> +    if (!strcmp(path, "/"))
> +        return ".";
> +
> +    return (path[0] =3D=3D '/') ? path + 1 : path;
> +}

You've carefully written the code to ensure the *at() functions are
not called with paths starting with "/".  What do you think about
storing the converted paths when storing into the p9_fid?  That way
the code doesn't have to worry about always going through
relpath_from_path() before use.  Another option beside performing the
relpath_from_path() conversion, would be to save fidp->path with "./"
at the start to eliminate absolute paths that way.  My thinking is
it's more robust to not have any absolute paths that could be passed
to a *at() function.

Having written that, I don't see any issue with the code as-is, so if
you don't want to make any further change:
Reviewed-by: Jason Andryuk <jandryuk@gmail.com>

Regards,
Jason


From xen-devel-bounces@lists.xenproject.org Tue Jan 09 19:16:13 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 09 Jan 2024 19:16:13 +0000
Received: from list by lists.xenproject.org with outflank-mailman.664916.1035045 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNHa1-0002a6-Sz; Tue, 09 Jan 2024 19:16:05 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 664916.1035045; Tue, 09 Jan 2024 19:16:05 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNHa1-0002Zz-PN; Tue, 09 Jan 2024 19:16:05 +0000
Received: by outflank-mailman (input) for mailman id 664916;
 Tue, 09 Jan 2024 19:16:04 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rNHa0-0002Zp-Tj; Tue, 09 Jan 2024 19:16:04 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rNHa0-0007Em-RQ; Tue, 09 Jan 2024 19:16:04 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rNHa0-0003L4-CL; Tue, 09 Jan 2024 19:16:04 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rNHa0-00081p-Bq; Tue, 09 Jan 2024 19:16:04 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=nNkKQxh3sHMm1Ih1B4JoQhJPTPg0n6ny72CoqeOQROE=; b=x2iNlAxhhDIJEwnKPzAAKrWTJW
	GLcnBBJKdEwLX3/WUDE3vP0TGH5fQucVZGJmNKcMbpkMRZhOvJsBn7hoIWcT7YgQBqg8V6wy0B54C
	nqkFEZSbR5sqPV/AiBfYtU6yBXv3k9GqrfuIZqwx4FOQOW/FXG7Dl61ddqdwXelprV4Q=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184297-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [ovmf test] 184297: all pass - PUSHED
X-Osstest-Versions-This:
    ovmf=4a443f73fd67ca8caaf0a3e1a01f8231b330d2e0
X-Osstest-Versions-That:
    ovmf=f2b074398ca0624206355524a1c5f653ff87876a
From: osstest service owner <osstest-admin@xenproject.org>
Date: Tue, 09 Jan 2024 19:16:04 +0000

flight 184297 ovmf real [real]
http://logs.test-lab.xenproject.org/osstest/logs/184297/

Perfect :-)
All tests in this flight passed as required
version targeted for testing:
 ovmf                 4a443f73fd67ca8caaf0a3e1a01f8231b330d2e0
baseline version:
 ovmf                 f2b074398ca0624206355524a1c5f653ff87876a

Last test of basis   184288  2024-01-09 03:12:49 Z    0 days
Testing same since   184297  2024-01-09 16:43:52 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Dun Tan <dun.tan@intel.com>
  duntan <dun.tan@intel.com>
  Gerd Hoffmann <kraxel@redhat.com>

jobs:
 build-amd64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-amd64-amd64-xl-qemuu-ovmf-amd64                         pass    
 test-amd64-i386-xl-qemuu-ovmf-amd64                          pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Pushing revision :

To xenbits.xen.org:/home/xen/git/osstest/ovmf.git
   f2b074398c..4a443f73fd  4a443f73fd67ca8caaf0a3e1a01f8231b330d2e0 -> xen-tested-master


From xen-devel-bounces@lists.xenproject.org Tue Jan 09 19:19:32 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 09 Jan 2024 19:19:32 +0000
Received: from list by lists.xenproject.org with outflank-mailman.664923.1035055 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNHdL-0003YL-AZ; Tue, 09 Jan 2024 19:19:31 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 664923.1035055; Tue, 09 Jan 2024 19:19:31 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNHdL-0003YE-7c; Tue, 09 Jan 2024 19:19:31 +0000
Received: by outflank-mailman (input) for mailman id 664923;
 Tue, 09 Jan 2024 19:19:30 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=Qgrd=IT=gmail.com=jandryuk@srs-se1.protection.inumbo.net>)
 id 1rNHdK-0003Y8-FR
 for xen-devel@lists.xenproject.org; Tue, 09 Jan 2024 19:19:30 +0000
Received: from mail-ed1-x52f.google.com (mail-ed1-x52f.google.com
 [2a00:1450:4864:20::52f])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 0211845b-af24-11ee-9b0f-b553b5be7939;
 Tue, 09 Jan 2024 20:19:28 +0100 (CET)
Received: by mail-ed1-x52f.google.com with SMTP id
 4fb4d7f45d1cf-5537dd673e5so2848266a12.0
 for <xen-devel@lists.xenproject.org>; Tue, 09 Jan 2024 11:19:28 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 0211845b-af24-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1704827968; x=1705432768; darn=lists.xenproject.org;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:from:to:cc:subject:date
         :message-id:reply-to;
        bh=Gy/j+RRXODkGHLfjKG7cyx2aYViX/Dhfxb0YeAQNk8Y=;
        b=B28gJm4aNYs7AXJWzHDPHMB3/bnyWs6JMS9SNUmdLy5bx7GSa13H8psb254P07RleP
         HjAPGb4a6j+1iPl4JXq8fGJ472VqEJxcT7iE3XhZuTCUu6hI6XJbhBCNQ/aW8Uc6mhv1
         rYxfRqqi9dcTiiaYsnTnFFDzjfFPoIIb36JNr952h/XLyllFEl74OUn/9DJm6sINw64w
         3dpR/OvqBoFPBykGLp1GGDNDMg70bTLyUrFFscyXkE1baorj2C35bfWZSLeFoQgBf++v
         x4N2ZWtuc9EzUIKUpVr6yVOtWmnj5BYeW8l4KYfvlGG/n+bhaa7uRLB1A1UJ+QPgYp8R
         cqdA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704827968; x=1705432768;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to;
        bh=Gy/j+RRXODkGHLfjKG7cyx2aYViX/Dhfxb0YeAQNk8Y=;
        b=k++PSrqNu8Cp1Q8KZJJIlrpx6EVGuANNvQKud4N38+L7mL9QHaHGYZZ2CJr004l98w
         w6QwTByISJ3ZUCqRAHTSJqSHV4QwZLsnvK/gNSWFqM8EcxdBk1rBqeZ9bQRa9EpCHlk9
         q/l/eD8PyneA7RdaE7TWuYuQC4+zZ2Ehzg8Qh9sEOHyQtw3lLlsU3xl+5Tj06qetH7Xl
         YVSCab17/wxdl/+2MmKMG3Ohhqownro+V4BzwWTaIf1WbOTeHQEY2xvwOwWc29i33n5V
         R7i6uHZqPzNHiL5YHIdz0QtfZRNMreZyJQMTjIaoKqCDSVIGlUlRzyRfUdC50fQQkrP6
         lA3g==
X-Gm-Message-State: AOJu0YztGGfR74LafpRd5k1FjfWuQtvE94fSKSAr+yMJ2N1FhMZqP4ga
	gWdCBbFEW6z+HmfosKqhdZEa/yFSV5YRh6DwfXY=
X-Google-Smtp-Source: AGHT+IGAnZXWhzF7k1h8I6pQ9xItPQEuUnnzaE9ii3SwR6oUdVB77/fEuheJznS5NFZucCBXvge5rFpbDwmQxiIv198=
X-Received: by 2002:a50:955c:0:b0:553:ad79:b7cb with SMTP id
 v28-20020a50955c000000b00553ad79b7cbmr3169209eda.3.1704827967756; Tue, 09 Jan
 2024 11:19:27 -0800 (PST)
MIME-Version: 1.0
References: <20240104090055.27323-1-jgross@suse.com> <20240104090055.27323-10-jgross@suse.com>
In-Reply-To: <20240104090055.27323-10-jgross@suse.com>
From: Jason Andryuk <jandryuk@gmail.com>
Date: Tue, 9 Jan 2024 14:19:15 -0500
Message-ID: <CAKf6xpu-P5pmL6Nk2Zvu3Va1fgzTUPnTgrdk0wgszAb3WoBgtg@mail.gmail.com>
Subject: Re: [PATCH v3 09/33] tools/xenlogd: add 9pfs walk request support
To: Juergen Gross <jgross@suse.com>
Cc: xen-devel@lists.xenproject.org, Wei Liu <wl@xen.org>, 
	Anthony PERARD <anthony.perard@citrix.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

On Thu, Jan 4, 2024 at 4:10=E2=80=AFAM Juergen Gross <jgross@suse.com> wrot=
e:
>
> Add the walk request of the 9pfs protocol.
>
> Signed-off-by: Juergen Gross <jgross@suse.com>

Reviewed-by: Jason Andryuk <jandryuk@gmail.com>

With one minor comment.

> +    path =3D calloc(path_len + 1, 1);
> +    if ( !path )
> +    {
> +        p9_error(ring, hdr->tag, ENOMEM);
> +        goto out;
> +    }
> +    strcpy(path, fidp->path);
> +
> +    if ( n_names )
> +    {
> +        qids =3D calloc(n_names, sizeof(*qids));
> +        if ( !qids )
> +        {
> +            p9_error(ring, hdr->tag, ENOMEM);
> +            goto out;
> +        }
> +        for ( i =3D 0; i < n_names; i++ )
> +        {
> +            if (strcmp(path, "/"))
> +                strcat(path, "/");

strcmp() can only return 0 on the first iteration, so it seems
inefficient to have it inside this loop.  But the added complexity to
avoid calling it doesn't seem worthwhile.

> +            strcat(path, ring->str + names[i]);
> +            ret =3D fill_qid(device, path, qids + i, NULL);
> +            if ( ret )
> +            {
> +                if ( !walked )
> +                {
> +                    p9_error(ring, hdr->tag, errno);
> +                    goto out;
> +                }
> +                break;
> +            }
> +            walked++;
> +        }
> +    }


From xen-devel-bounces@lists.xenproject.org Tue Jan 09 19:37:43 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 09 Jan 2024 19:37:43 +0000
Received: from list by lists.xenproject.org with outflank-mailman.664928.1035065 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNHuk-0001Cp-OT; Tue, 09 Jan 2024 19:37:30 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 664928.1035065; Tue, 09 Jan 2024 19:37:30 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNHuk-0001Ci-Kz; Tue, 09 Jan 2024 19:37:30 +0000
Received: by outflank-mailman (input) for mailman id 664928;
 Tue, 09 Jan 2024 19:37:29 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=Qgrd=IT=gmail.com=jandryuk@srs-se1.protection.inumbo.net>)
 id 1rNHui-0001Cc-V9
 for xen-devel@lists.xenproject.org; Tue, 09 Jan 2024 19:37:29 +0000
Received: from mail-ed1-x52c.google.com (mail-ed1-x52c.google.com
 [2a00:1450:4864:20::52c])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 84eac3c8-af26-11ee-9b0f-b553b5be7939;
 Tue, 09 Jan 2024 20:37:27 +0100 (CET)
Received: by mail-ed1-x52c.google.com with SMTP id
 4fb4d7f45d1cf-5534dcfdd61so5961729a12.0
 for <xen-devel@lists.xenproject.org>; Tue, 09 Jan 2024 11:37:27 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 84eac3c8-af26-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1704829046; x=1705433846; darn=lists.xenproject.org;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:from:to:cc:subject:date
         :message-id:reply-to;
        bh=JufRb3v6Ocno2vQc4pm6Nu7BjmQD9aFQ6+XHPNGl1pQ=;
        b=iSKHCFC2isawnTWKip0KfCh6bpqX78b++GjSQO+TlqTiQrtMBLQjNGZgrnXbWazpA4
         mD+1xpuUokOZfE2YHkAYH0zueMpADLOnKCWWpaLBmvkPgy584VGMP0h5C+ZegU/DNhxq
         uXEza+hSYULwSvCHDtAqpfSUcXbVmzEOIEzUJudirjUSit0odcbJHoCDEEHzlem3dUG3
         vKLnKx21p+Sj+e0bZXKqCC49+eQtEbElYDX5Z50JiQ14PHimOb76q7mvNOHoVmv44bL9
         jnvHsXlv2MfsevwxJV0/k3IW78LE80QRsqJa3Q7Vxdns0lVQDuNy6LScK/eWPSzrHlrC
         7XPg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704829046; x=1705433846;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to;
        bh=JufRb3v6Ocno2vQc4pm6Nu7BjmQD9aFQ6+XHPNGl1pQ=;
        b=HI8mtD3B42fCMftyoZpnkyWVbvXU/cZtTe35QTLzua0lRXTXs9ofz+zULMzyGyCoiV
         e0jUbrOaBg74ET+YCKQCBtXX0wh+ZhA0HurDPV1ZCly7ZaO4x4c8vq4+YLmC7BgbLU7A
         k+bgwD9PAIVRKSUk/6EP4xA8dbP4R5ho4BHkef/BmPOvGRjYxZx+4kt1TVBBdQ4/hN8z
         a/ATWEQUC0DPY7xm4S8xcaUFGvtXhC4/FPqeJie1WVh3kmtwug9KMK2RjyNDpcSL9+6s
         vQamca93jGbmCG9nXdGzKBCJnp9vazeHgLOYKZE9nrRcOpqoLFr6nuETPqWRPI2sPM/H
         MkVQ==
X-Gm-Message-State: AOJu0YxhS5fa9WBBEdkMD6uf5vCB9gg88Noow4XR5kmlHQLbQP1qGw4+
	iYVP1D7ULZJFfbhwGDYdc4Z+LT6vg8/2sJHTY9Y=
X-Google-Smtp-Source: AGHT+IEh5B4pQyZo9qoHfmu5CFroTHk0kZ1h20OnkPlde4IXL9LTwz0In7XdzdK5s/fT2dY36by1fzFVFlWmfroXQ6Y=
X-Received: by 2002:a50:d709:0:b0:558:252c:21fc with SMTP id
 t9-20020a50d709000000b00558252c21fcmr933897edi.43.1704829046416; Tue, 09 Jan
 2024 11:37:26 -0800 (PST)
MIME-Version: 1.0
References: <20240104090055.27323-1-jgross@suse.com> <20240104090055.27323-11-jgross@suse.com>
In-Reply-To: <20240104090055.27323-11-jgross@suse.com>
From: Jason Andryuk <jandryuk@gmail.com>
Date: Tue, 9 Jan 2024 14:37:14 -0500
Message-ID: <CAKf6xpu_Ts5wY9RxzPid0_Fo4rd-aj=t4x8a9Nd1qA3jrscK-w@mail.gmail.com>
Subject: Re: [PATCH v3 10/33] tools/xenlogd: add 9pfs open request support
To: Juergen Gross <jgross@suse.com>
Cc: xen-devel@lists.xenproject.org, Wei Liu <wl@xen.org>, 
	Anthony PERARD <anthony.perard@citrix.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

On Thu, Jan 4, 2024 at 4:13=E2=80=AFAM Juergen Gross <jgross@suse.com> wrot=
e:
>
> Add the open request of the 9pfs protocol.
>
> Signed-off-by: Juergen Gross <jgross@suse.com>

Reviewed-by: Jason Andryuk <jandryuk@gmail.com>


From xen-devel-bounces@lists.xenproject.org Tue Jan 09 19:41:16 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 09 Jan 2024 19:41:16 +0000
Received: from list by lists.xenproject.org with outflank-mailman.664934.1035075 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNHyN-0003hR-BC; Tue, 09 Jan 2024 19:41:15 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 664934.1035075; Tue, 09 Jan 2024 19:41:15 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNHyN-0003hK-7V; Tue, 09 Jan 2024 19:41:15 +0000
Received: by outflank-mailman (input) for mailman id 664934;
 Tue, 09 Jan 2024 19:41:14 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=Qgrd=IT=gmail.com=jandryuk@srs-se1.protection.inumbo.net>)
 id 1rNHyM-0003hE-0S
 for xen-devel@lists.xenproject.org; Tue, 09 Jan 2024 19:41:14 +0000
Received: from mail-ed1-x52a.google.com (mail-ed1-x52a.google.com
 [2a00:1450:4864:20::52a])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 0bc0766c-af27-11ee-98ef-6d05b1d4d9a1;
 Tue, 09 Jan 2024 20:41:13 +0100 (CET)
Received: by mail-ed1-x52a.google.com with SMTP id
 4fb4d7f45d1cf-557c188f313so3728368a12.1
 for <xen-devel@lists.xenproject.org>; Tue, 09 Jan 2024 11:41:13 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 0bc0766c-af27-11ee-98ef-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1704829273; x=1705434073; darn=lists.xenproject.org;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:from:to:cc:subject:date
         :message-id:reply-to;
        bh=/jBCC+8roDVSQAyI+69/0l++c3mBV52vqgbyaSZdsB4=;
        b=PHoj92EjSCzX3a7FcOURqaBTQ0NYZajUWyOBbAvX5jTCnREC+Aqq0TxW9tyfSehy9P
         3LoVwJX/NMEyT+lfsrXBWGnu2lc52VAvf1icvrNVoyW0UMJw7++wIk2vVdnIQqO/733c
         x6sR9Z3kFhLhXHU6sHNaVYgsbYstgf2QlGKwjQLWxqIXbhYDYNDvUNDe5lThMokkwF9i
         1H7yU8ua8MYfzRGk7AgAeberpChbR7Z0xcyPBEcbnxBxJK7qrniD2HkqzJA5dlrizWuh
         jjReNaCqPK+9X1AKvDmrvpHMLkFEOI2o61DN/2BeULzExBvLjJlKPiOT4vDmARLN0pXb
         db1g==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704829273; x=1705434073;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to;
        bh=/jBCC+8roDVSQAyI+69/0l++c3mBV52vqgbyaSZdsB4=;
        b=nvl/7bohanchsdtoZpS4YzCxwDNjiw+O2ePAI7BkFPmXAhlfVek62XV9M+5ViTOirA
         SWiXhPU330KxwQneMov/9bLuI1PptkvoTJIOfs5turaVIvEFx3tDolSMXMiiF1jO0R9N
         TnqpDnyJnmF8OwIToD/i7SKAPUaUOffRH9cjrJTU5T7k+Y/aQfPUvEHV2CKecbWJBC9w
         PJ3HntjXxwp9/TUOgU92TwxSGTIehyygkenx+i96b6Yh4b0uYzKkxYZ1zUIlMrxr8gBc
         pyrquHKMKX38WwlZp8qdRlFwDGeJAQDSBGSFUK3n4+UD5+RI9R4CHF+VSnT8op5iMwgF
         ttHg==
X-Gm-Message-State: AOJu0YyXk5w5A8OYTQ9Ne4E1SUWdqU+Zi/dg3iyrFWdv1GFOu/Iyznmr
	fzJiLpWUisAk6ca4fvPAfJBLEZ1EOXg9qEonRXA=
X-Google-Smtp-Source: AGHT+IEj9nGuh26SMHb7dm3QmFTULYzb6B8AkpvYDn1OZvdCTyBufGTlxxrOm6bsvThtC1zJOw23gGUZ5kIlf8raptM=
X-Received: by 2002:a50:ef07:0:b0:557:1654:d705 with SMTP id
 m7-20020a50ef07000000b005571654d705mr1343778eds.5.1704829272697; Tue, 09 Jan
 2024 11:41:12 -0800 (PST)
MIME-Version: 1.0
References: <20240104090055.27323-1-jgross@suse.com> <20240104090055.27323-12-jgross@suse.com>
In-Reply-To: <20240104090055.27323-12-jgross@suse.com>
From: Jason Andryuk <jandryuk@gmail.com>
Date: Tue, 9 Jan 2024 14:41:01 -0500
Message-ID: <CAKf6xpvLFn7KkDFgPr0jnyhFqirAjBD+UxnyK6c6TTLuo652iw@mail.gmail.com>
Subject: Re: [PATCH v3 11/33] tools/xenlogd: add 9pfs clunk request support
To: Juergen Gross <jgross@suse.com>
Cc: xen-devel@lists.xenproject.org, Wei Liu <wl@xen.org>, 
	Anthony PERARD <anthony.perard@citrix.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

On Thu, Jan 4, 2024 at 4:34=E2=80=AFAM Juergen Gross <jgross@suse.com> wrot=
e:
>
> Add the clunk request of the 9pfs protocol.
>
> Signed-off-by: Juergen Gross <jgross@suse.com>

Reviewed-by: Jason Andryuk <jandryuk@gmail.com>


From xen-devel-bounces@lists.xenproject.org Tue Jan 09 19:45:53 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 09 Jan 2024 19:45:53 +0000
Received: from list by lists.xenproject.org with outflank-mailman.664940.1035085 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNI2n-0004cn-SM; Tue, 09 Jan 2024 19:45:49 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 664940.1035085; Tue, 09 Jan 2024 19:45:49 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNI2n-0004cg-Ph; Tue, 09 Jan 2024 19:45:49 +0000
Received: by outflank-mailman (input) for mailman id 664940;
 Tue, 09 Jan 2024 19:45:49 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=Qgrd=IT=gmail.com=jandryuk@srs-se1.protection.inumbo.net>)
 id 1rNI2n-0004ca-4k
 for xen-devel@lists.xenproject.org; Tue, 09 Jan 2024 19:45:49 +0000
Received: from mail-lj1-x233.google.com (mail-lj1-x233.google.com
 [2a00:1450:4864:20::233])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id af11566a-af27-11ee-9b0f-b553b5be7939;
 Tue, 09 Jan 2024 20:45:47 +0100 (CET)
Received: by mail-lj1-x233.google.com with SMTP id
 38308e7fff4ca-2cd56dac1adso28717951fa.2
 for <xen-devel@lists.xenproject.org>; Tue, 09 Jan 2024 11:45:47 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: af11566a-af27-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1704829546; x=1705434346; darn=lists.xenproject.org;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:from:to:cc:subject:date
         :message-id:reply-to;
        bh=peJWWf86DIwACu1g3bAnPDPszT38X8bGX+7jVbS+I0Y=;
        b=dMUHj4fRVVxBYUXn2kj0UhbpaP1RD23o9dgmIWCGjxBSj83N4IXxxcvH0qvL/+KwBH
         oxbLaS9YT0VzGYvqdCE4Vk0uwIwnfiA/lNzRop3Ibhb5sZNAEcefRsZSyVcmbHkJ7ze3
         ZzmThjdDi9GP8IOzzZSO0drrbrsrwZ1gfGDLkB6InLqvCzZYCkIatdCvlCTZsIAKm3q9
         u/XwayBDmLiGiEGVCqUUo9JnCYJFY4l82Yaqwt9E9/jxXUdS2Sj2oiA77kiKNqsZbaza
         17CMiYhHdMXBPd6emok9Hi9CEQM4fFzBtZBfeS137S5tF49BbPcwiD0Wn+dN5qQRRD0p
         oP0g==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704829546; x=1705434346;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to;
        bh=peJWWf86DIwACu1g3bAnPDPszT38X8bGX+7jVbS+I0Y=;
        b=MJqSHPc8JLJ7AlhjzZ2T78aT3R0UwLyVn9SLYmv8tUY65AQo2QTr2SaYU96lwDzWse
         +igizKkKcFYTB8It2h5jSDW5AE/H1iIFAXOoTyk4gp2qty7Uoi++tTjo8eMxVor/K+vZ
         cY0bk/gH63ZUmPUTfXWz8LE7o4d3TpK8b68FqjasP+JFJrgORMu5Qg8H+f4fzAXkD4Cs
         oyE3uQCKWUWNixtLhUfVTvgbwjhFsBDX+tRIoP/eWVRtyx5ZENEmjXo8NY0SXK72RNeu
         AOc+y6a1Os9zYtNCQFojGFker+PmtdbCE4DSkjihe2tTBhNJPwnJd8bCOp9EVHFJiEbM
         8ocg==
X-Gm-Message-State: AOJu0Yx2HoaLBembcQvMs+fWtxQykeBZAQ5f9no+A7IZtB+MOsvL9LWy
	LEXVhDtLQpwyDiOeS9cukQt7CHRv4FRi0aeGeHw=
X-Google-Smtp-Source: AGHT+IHVbTg10/3rSmyQp18KyRTmwxBYDhBUc6i1+W3BDuB29wtHn0aHyoRr6LstJtJ3+GpOzDvWos5uQJ6LjnW3Pc0=
X-Received: by 2002:a2e:9350:0:b0:2cc:e708:adb2 with SMTP id
 m16-20020a2e9350000000b002cce708adb2mr2681709ljh.96.1704829546436; Tue, 09
 Jan 2024 11:45:46 -0800 (PST)
MIME-Version: 1.0
References: <20240104090055.27323-1-jgross@suse.com> <20240104090055.27323-13-jgross@suse.com>
In-Reply-To: <20240104090055.27323-13-jgross@suse.com>
From: Jason Andryuk <jandryuk@gmail.com>
Date: Tue, 9 Jan 2024 14:45:34 -0500
Message-ID: <CAKf6xptcUCOxtzA8FpdUj2dQ4yRUoXgxeGrzmBnb-X0g3_xnKw@mail.gmail.com>
Subject: Re: [PATCH v3 12/33] tools/xenlogd: add 9pfs create request support
To: Juergen Gross <jgross@suse.com>
Cc: xen-devel@lists.xenproject.org, Wei Liu <wl@xen.org>, 
	Anthony PERARD <anthony.perard@citrix.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

On Thu, Jan 4, 2024 at 4:13=E2=80=AFAM Juergen Gross <jgross@suse.com> wrot=
e:
>
> Add the create request of the 9pfs protocol.
>
> Signed-off-by: Juergen Gross <jgross@suse.com>

Reviewed-by: Jason Andryuk <jandryuk@gmail.com>


From xen-devel-bounces@lists.xenproject.org Tue Jan 09 19:48:30 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 09 Jan 2024 19:48:30 +0000
Received: from list by lists.xenproject.org with outflank-mailman.664945.1035095 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNI5M-0005eL-AC; Tue, 09 Jan 2024 19:48:28 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 664945.1035095; Tue, 09 Jan 2024 19:48:28 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNI5M-0005e9-5U; Tue, 09 Jan 2024 19:48:28 +0000
Received: by outflank-mailman (input) for mailman id 664945;
 Tue, 09 Jan 2024 19:48:27 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=Qgrd=IT=gmail.com=jandryuk@srs-se1.protection.inumbo.net>)
 id 1rNI5L-0005e1-Ez
 for xen-devel@lists.xenproject.org; Tue, 09 Jan 2024 19:48:27 +0000
Received: from mail-wr1-x433.google.com (mail-wr1-x433.google.com
 [2a00:1450:4864:20::433])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 0d7236ba-af28-11ee-9b0f-b553b5be7939;
 Tue, 09 Jan 2024 20:48:25 +0100 (CET)
Received: by mail-wr1-x433.google.com with SMTP id
 ffacd0b85a97d-33687627ad0so2992619f8f.2
 for <xen-devel@lists.xenproject.org>; Tue, 09 Jan 2024 11:48:25 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 0d7236ba-af28-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1704829705; x=1705434505; darn=lists.xenproject.org;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:from:to:cc:subject:date
         :message-id:reply-to;
        bh=HQTvPCN2zWa5yZRABHiEa1XRZcLKao4D7D/0DzROdzs=;
        b=JgXoJ9I985F3hFrCS/LOga+zMuIyYT9r+ZD8HLt/E4V+T4CWVOpB+ImtrvyQXdNcHt
         dmkcvqtCRyaAhG7BRjzRtOFKj1fs96zpV9qabKbAghXQcMQKMTyfq0U1tbU2pINUCgvR
         KrqaKY/eQeejfr36q47ckZQwc+89Hs+UL6eBD8GR5QRBLPRLK/wDax8RBj6FVXl3Hal+
         OSDBmSrOF9syUZiPScK2Y/gcop2ERqzlDjdQqtAhlUsvqFuuvgcoQkyHrEkFdDSGbmqm
         +QrviTTVtGWBfpUE07eyXCbx8gBZWRbvJ2hRVKfhWLUat1jU+0VrYw5a0Igm++oguhqh
         KBPw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704829705; x=1705434505;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to;
        bh=HQTvPCN2zWa5yZRABHiEa1XRZcLKao4D7D/0DzROdzs=;
        b=icyMbAASlG0MaxfLbGQx99dhiCF4Nu4IAXpZGGYQ9AH6451i1pYeDOaqp4qWD6xvEv
         cc38uYlz5UD3HsRzD7TQUQJlJ/x+qGSHBO+naxOvrX+E5CvyKqInXmCiFXMNZsWY7FnW
         kOV9LpN9QxV5+qgkVK3sHnfQU5PKJcwre86GrIjn0PjggqY1mAh7AbZpG6C1LQFSlt03
         L2MPRvx60JTDiDVXFxMly8iEkVYACng3x8m7YHsIDs4hfTIssTEVvKOxl1bCoFuSjPrl
         hmm0lwMx1dNuD4+UVSdg02smjEh2NaajnPy435xcVbYUF1DbnsEQb2Gtqt5+OZ2/HQ1m
         tu0Q==
X-Gm-Message-State: AOJu0Yy6uTAzGPY9t4rMSwYUOBSMbCOpjrUQ36T5zbij2JPXEGmSQhUP
	5h5avfKFuBepjMaJGA6lmP9G57/ISKrwIan1+F8=
X-Google-Smtp-Source: AGHT+IEDLq96gl3MXOq4NbSYXl8b3AVbX65HQlqTw0GdpNzycnrtX2ynIOLrLv5wnjZOjflx4wctVy23+J7YyCjbLs0=
X-Received: by 2002:adf:e810:0:b0:336:76a5:5774 with SMTP id
 o16-20020adfe810000000b0033676a55774mr768939wrm.68.1704829705063; Tue, 09 Jan
 2024 11:48:25 -0800 (PST)
MIME-Version: 1.0
References: <20240104090055.27323-1-jgross@suse.com> <20240104090055.27323-14-jgross@suse.com>
In-Reply-To: <20240104090055.27323-14-jgross@suse.com>
From: Jason Andryuk <jandryuk@gmail.com>
Date: Tue, 9 Jan 2024 14:48:13 -0500
Message-ID: <CAKf6xpskhWj5TX233tLTp84xKDKoBDu-CwUtVkJy4NagOKnVJw@mail.gmail.com>
Subject: Re: [PATCH v3 13/33] tools/xenlogd: add 9pfs stat request support
To: Juergen Gross <jgross@suse.com>
Cc: xen-devel@lists.xenproject.org, Wei Liu <wl@xen.org>, 
	Anthony PERARD <anthony.perard@citrix.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

On Thu, Jan 4, 2024 at 6:32=E2=80=AFAM Juergen Gross <jgross@suse.com> wrot=
e:
>
> Add the stat request of the 9pfs protocol.
>
> Signed-off-by: Juergen Gross <jgross@suse.com>

Reviewed-by: Jason Andryuk <jandryuk@gmail.com>


From xen-devel-bounces@lists.xenproject.org Tue Jan 09 20:01:48 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 09 Jan 2024 20:01:48 +0000
Received: from list by lists.xenproject.org with outflank-mailman.664950.1035105 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNIIA-0002Yr-Cm; Tue, 09 Jan 2024 20:01:42 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 664950.1035105; Tue, 09 Jan 2024 20:01:42 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNIIA-0002Yk-90; Tue, 09 Jan 2024 20:01:42 +0000
Received: by outflank-mailman (input) for mailman id 664950;
 Tue, 09 Jan 2024 20:01:41 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=Qgrd=IT=gmail.com=jandryuk@srs-se1.protection.inumbo.net>)
 id 1rNII9-0002Yc-Af
 for xen-devel@lists.xenproject.org; Tue, 09 Jan 2024 20:01:41 +0000
Received: from mail-lf1-x12d.google.com (mail-lf1-x12d.google.com
 [2a00:1450:4864:20::12d])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id e73c169b-af29-11ee-98ef-6d05b1d4d9a1;
 Tue, 09 Jan 2024 21:01:40 +0100 (CET)
Received: by mail-lf1-x12d.google.com with SMTP id
 2adb3069b0e04-50e7c6f0487so3303842e87.3
 for <xen-devel@lists.xenproject.org>; Tue, 09 Jan 2024 12:01:40 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: e73c169b-af29-11ee-98ef-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1704830500; x=1705435300; darn=lists.xenproject.org;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:from:to:cc:subject:date
         :message-id:reply-to;
        bh=bOO4ayKK2UoK28WAEDe31K//qfuYSZXi6pXJh+a7zjI=;
        b=T/KXLiSJQyGbE3Y6C9jupHYXQFgZwxq5MGR6TRH0Ee0+kkrgLm4RUC+wqgl405s+Mv
         AC5FJU2brxXAKMLLQuqdbIuHGAfF6nvSGbLL6jvYSaAhGGP5Z1jhPpIHxLUGOem1ZDLz
         rgpr52G8AqP5IEwQIIhH7hROR5HSaB4HD7Vsss15Ng7KCcHbkbIYB+1FfhYPypsstBSc
         q8UsppJSJ1yCnLloc5Ko+SjWgNR/fBR4Q735XZUz/KmZDQX+4DzQH+WF0sZt0k+qWi4J
         p/rABEZUYJ1tREAdil6P0qT5z28gidABlhxAiBPFpY7xuacm//1XME1LrG2cnxeQKNOQ
         5Lyw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704830500; x=1705435300;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to;
        bh=bOO4ayKK2UoK28WAEDe31K//qfuYSZXi6pXJh+a7zjI=;
        b=ZgOzGiHdVx9D5H2RzRRrhSnDXKao+Ewz1u6ngtKfMFyVTHOP3MPYCXLm1KkbikZGvu
         lcJF0ITCwtGcE388V+b/UVuVbKDDEEI5RRujTZGIJs0umXCJAgQaFnPJExzhyJazpNLZ
         lyPe12p2FTz4ZuHWl4LuW/GcDdgtrgC8q9SyQg2I/aYlH2hXidm/2AYHSJ4ZBmXj9/EZ
         yg04L5tTEQLN54WdgcBjMUadzkSPAwQWiVM3klQZ9CS2QghU7wHA43vW63PEvlLw7ksK
         LWzgaP5l9RZBL0jtKpPHUvZS5uITH08eVkvRjn3jrRtsxboHkLenzFhmZRdZ1tJ4FZVD
         ID0w==
X-Gm-Message-State: AOJu0Yx+HZ0SoIVzxu7kRc8ZcoIbKqPdEa+yYjt+8Vl8eCe//5XPI6AK
	xvgpUg/kNfUbqHlHuNjWl4irVwRs+MGZjwlOjbo=
X-Google-Smtp-Source: AGHT+IHR4vNJxHw5RAm73g4WkkHX8vdiEczvgO0a2ey+LGawUvLtYqJbYwnQRRFw0YgpFy9VdlbW8snQ3iNxXeFkMQo=
X-Received: by 2002:ac2:59d9:0:b0:50e:8e94:bcfe with SMTP id
 x25-20020ac259d9000000b0050e8e94bcfemr1634466lfn.64.1704830499831; Tue, 09
 Jan 2024 12:01:39 -0800 (PST)
MIME-Version: 1.0
References: <20240104090055.27323-1-jgross@suse.com> <20240104090055.27323-18-jgross@suse.com>
In-Reply-To: <20240104090055.27323-18-jgross@suse.com>
From: Jason Andryuk <jandryuk@gmail.com>
Date: Tue, 9 Jan 2024 15:01:28 -0500
Message-ID: <CAKf6xptpjVyQ3Jhg1rCa6AJXrv9DEUZVS+jYZPMwN69CXP=ZdQ@mail.gmail.com>
Subject: Re: [PATCH v3 17/33] tools/xl: support new 9pfs backend xen-9pfsd
To: Juergen Gross <jgross@suse.com>
Cc: xen-devel@lists.xenproject.org, Wei Liu <wl@xen.org>, 
	Anthony PERARD <anthony.perard@citrix.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

On Thu, Jan 4, 2024 at 4:02=E2=80=AFAM Juergen Gross <jgross@suse.com> wrot=
e:
>
> Add support for the new 9pfs backend "xen-9pfsd". For this backend type
> the tag defaults to "Xen" and the host side path to
> "/var/log/xen/guests/<dom-name>".
>
> Signed-off-by: Juergen Gross <jgross@suse.com>
> Reviewed-by: Jason Andryuk <jandryuk@gmail.com>
> ---
> V2:
> - test max_files and max_open_files, too (Jason Andryuk)
> ---
>  docs/man/xl.cfg.5.pod.in | 36 ++++++++++++++++++++++++++++++++++--
>  tools/xl/xl_parse.c      | 36 ++++++++++++++++++++++++++++++++++++
>  2 files changed, 70 insertions(+), 2 deletions(-)
>
> diff --git a/docs/man/xl.cfg.5.pod.in b/docs/man/xl.cfg.5.pod.in
> index 2e234b450e..80011adbf3 100644
> --- a/docs/man/xl.cfg.5.pod.in
> +++ b/docs/man/xl.cfg.5.pod.in
> @@ -772,10 +772,16 @@ settings, from the following list:
>
>  =3Dover 4
>
> +=3Ditem B<type=3DTYPE>
> +
> +The backendtype for the PV device. Supported values are B<qemu> and
> +B<xen-9pfsd>.  The default is B<qemu>.
> +
>  =3Ditem B<tag=3DSTRING>
>
>  9pfs tag to identify the filesystem share. The tag is needed on the
> -guest side to mount it.
> +guest side to mount it. For the backendtype of B<xen-9pfsd> the tag defa=
ults to
> +"Xen".

Here and below it's "xen_9pfsd" as the type.

I tried mounting a xen-9pfsd export in Linux, but mount failed:
mount: /mnt/9p-b: mount(2) system call failed: Remove I/O error.
dmesg(1) may have more information after failed mount system call.

dmesg doesn't have any other details.
/sys/bus/xen/devices/9pfs-2/state shows Connected.

Regards,
Jason


From xen-devel-bounces@lists.xenproject.org Tue Jan 09 20:47:32 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 09 Jan 2024 20:47:32 +0000
Received: from list by lists.xenproject.org with outflank-mailman.664987.1035151 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNJ0R-0006W3-HY; Tue, 09 Jan 2024 20:47:27 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 664987.1035151; Tue, 09 Jan 2024 20:47:27 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNJ0R-0006Vw-EN; Tue, 09 Jan 2024 20:47:27 +0000
Received: by outflank-mailman (input) for mailman id 664987;
 Tue, 09 Jan 2024 20:47:26 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=Qgrd=IT=gmail.com=jandryuk@srs-se1.protection.inumbo.net>)
 id 1rNJ0Q-00065f-IX
 for xen-devel@lists.xenproject.org; Tue, 09 Jan 2024 20:47:26 +0000
Received: from mail-qk1-x72a.google.com (mail-qk1-x72a.google.com
 [2607:f8b0:4864:20::72a])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 4b26d17a-af30-11ee-98ef-6d05b1d4d9a1;
 Tue, 09 Jan 2024 21:47:25 +0100 (CET)
Received: by mail-qk1-x72a.google.com with SMTP id
 af79cd13be357-781048954d9so302347385a.1
 for <xen-devel@lists.xenproject.org>; Tue, 09 Jan 2024 12:47:25 -0800 (PST)
Received: from pm2-ws13.praxislan02.com
 (207-172-141-204.s8906.c3-0.slvr-cbr1.lnh-slvr.md.cable.rcncustomer.com.
 [207.172.141.204]) by smtp.gmail.com with ESMTPSA id
 fh7-20020a05622a588700b00425442a2f32sm1181628qtb.16.2024.01.09.12.47.22
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 09 Jan 2024 12:47:22 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 4b26d17a-af30-11ee-98ef-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1704833243; x=1705438043; darn=lists.xenproject.org;
        h=content-transfer-encoding:mime-version:references:in-reply-to
         :message-id:date:subject:cc:to:from:from:to:cc:subject:date
         :message-id:reply-to;
        bh=ViNYWsZ+tkGR79TRKrSivtlEeNOudvbQVyhtr8+uN/E=;
        b=MGJXkSBuQ50lxH03dyV4VZfzfhW8XZ3GPCfcm6xGBNBEwvl4WTE6lc42b5Yi0kOs7T
         /ElecddymOH+KKx/ewmx79W3CKaKxZO0VROuws6jhUaD7AGeEHA0E0Fd93igre/EkkIO
         601l4ssCnS/QyVtOFs2u4JyF4sji37C8zwVapOuaxXSP2aZ54gyuEfjukeMh1L9aGsIo
         dduC57y0dZMtv1N245d4soKzHC0yo0HuUUWXXcoDSXZDsNtsI34KzjaTPm5xN701Rty3
         zmCWqtM4f8OH63jhKT4fuCE5IKdXGH8HkjG29iaSxN/NI4rJgMtJvisYT5E1SisJprOJ
         fngg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704833243; x=1705438043;
        h=content-transfer-encoding:mime-version:references:in-reply-to
         :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to;
        bh=ViNYWsZ+tkGR79TRKrSivtlEeNOudvbQVyhtr8+uN/E=;
        b=t5baqxLxpc2JDYJqU0OAQqmp8xESQeC8/ftdWFdQqgK2nMvADLRwXvXHDxgC+k66mH
         0CUN8Id6/NAVvvcaeUzOtqfxxWy2N2jK5aeGcIEDjK9ptu7GL4MqfCO2wSbZHVxIj0+V
         PAffozTA7/MpVgWYhY2KJ8D/LLQnAGNrudxjEU5lgcwUUO8q9E76QP8byT0YSjJZT8as
         b++I7VjdBUswTIWRU9G0DlZ80Yy5xYnSYalfPgAMTMOzCjkZBgaZ/XuYZoLf6U56L547
         j9Fycd7zSejcD+hAEGO/4dl8FctRz+dLW7TfMjoc9kph0sTyeeD73qFtjw2eRt68acu2
         pR8w==
X-Gm-Message-State: AOJu0YyMtsX+3vYLrFEi7WnxAjjlTx1hgcOIS7LJdVwCrMZ6l7R54CBg
	sr6jzAoX2tYK0o/UFFi2ZGos9Kiu7n8=
X-Google-Smtp-Source: AGHT+IHscg5iZ74EIuO9kXbFetliiq7+RRpobRy4DX1CQvjnWUATw/SswYp8bq5NLbgTBn/Jb4L7eQ==
X-Received: by 2002:a05:622a:351:b0:428:3ad6:e651 with SMTP id r17-20020a05622a035100b004283ad6e651mr37004qtw.14.1704833243446;
        Tue, 09 Jan 2024 12:47:23 -0800 (PST)
From: Jason Andryuk <jandryuk@gmail.com>
To: xen-devel@lists.xenproject.org
Cc: =?UTF-8?q?Marek=20Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>,
	Jason Andryuk <jandryuk@gmail.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	George Dunlap <george.dunlap@citrix.com>,
	Jan Beulich <jbeulich@suse.com>,
	Julien Grall <julien@xen.org>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Wei Liu <wl@xen.org>,
	Anthony PERARD <anthony.perard@citrix.com>,
	Juergen Gross <jgross@suse.com>
Subject: [PATCH 2/2] libxl: Enable stubdom cdrom changing
Date: Tue,  9 Jan 2024 15:46:55 -0500
Message-ID: <20240109204655.72063-3-jandryuk@gmail.com>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20240109204655.72063-1-jandryuk@gmail.com>
References: <20240109204655.72063-1-jandryuk@gmail.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

To change the cd-rom medium, libxl will:
 - QMP eject the medium from QEMU
 - block-detach the old PV disk
 - block-attach the new PV disk
 - QMP change the medium to the new PV disk by fdset-id

The QMP code is reused, and remove and attach are implemented here.

The stubdom must internally handle adding /dev/xvdc to the appropriate
fdset.  libxl in dom0 doesn't see the result of adding to the fdset as
that is internal to the stubdom, so a delay and retries are added to
around calling cdrom_insert_addfd_cb().

Signed-off-by: Jason Andryuk <jandryuk@gmail.com>
---
 docs/misc/stubdom.txt         |  16 ++
 tools/libs/light/libxl_disk.c | 299 ++++++++++++++++++++++++++++++----
 2 files changed, 285 insertions(+), 30 deletions(-)

diff --git a/docs/misc/stubdom.txt b/docs/misc/stubdom.txt
index c717a95d17..1b2380ae8f 100644
--- a/docs/misc/stubdom.txt
+++ b/docs/misc/stubdom.txt
@@ -127,6 +127,22 @@ Limitations:
  - at most 26 emulated disks are supported (more are still available as PV disks)
  - graphics output (VNC/SDL/Spice) not supported
 
+CD-ROM changing:
+
+To change the CD-ROM medium, libxl will:
+ - QMP eject the medium from QEMU
+ - block-detach the old PV disk
+ - block-attach the new PV disk
+ - QMP change the medium to the new PV disk by fdset-id
+
+The QMP change insert uses fdset-id STUBDOM_FDSET_CD + $disk - 'a'.
+That is, hda -> 'a', so
+STUBDOM_FDSET_CD + 'a' - 'a' = STUBDOM_FDSET_CD.
+For hdc:
+STUBDOM_FDSET_CD + 'c' - 'a' = STUBDOM_FDSET_CD + 2.
+
+The stubdom must internally handle adding /dev/xvdc to the appropriate
+fdset.
 
                                    PV-GRUB
                                    =======
diff --git a/tools/libs/light/libxl_disk.c b/tools/libs/light/libxl_disk.c
index d1f84ef404..c67da510f2 100644
--- a/tools/libs/light/libxl_disk.c
+++ b/tools/libs/light/libxl_disk.c
@@ -790,25 +790,46 @@ int libxl_device_disk_getinfo(libxl_ctx *ctx, uint32_t domid,
 
 typedef struct {
     libxl__ao *ao;
+    libxl__ao_device aodev;
+    libxl__ao_device aodev_del;
     libxl_domid domid;
+    libxl_domid disk_domid;
     libxl_device_disk *disk;
     libxl_device_disk disk_saved;
     libxl__ev_slowlock qmp_lock;
     int dm_ver;
     libxl__ev_time time;
+    libxl__ev_time timeout_retry;
     libxl__ev_qmp qmp;
+    int retries;
+    int stubdom_fdset;
 } libxl__cdrom_insert_state;
 
 static void cdrom_insert_lock_acquired(libxl__egc *, libxl__ev_slowlock *,
                                        int rc);
 static void cdrom_insert_qmp_connected(libxl__egc *, libxl__ev_qmp *,
                                        const libxl__json_object *, int rc);
+static void cdrom_insert_stubdom_removefd(libxl__egc *egc, libxl__ev_qmp *qmp,
+                                          const libxl__json_object *response,
+                                          int rc);
+static void cdrom_insert_stubdom_ejected(libxl__egc *egc, libxl__ev_qmp *,
+                                         const libxl__json_object *, int rc);
+static void cdrom_insert_stubdom_disk_ejected_aocomplete(libxl__egc *egc,
+                                                         libxl__ao_device *aodev);
+static void cdrom_insert_stubdom_disk_ejected(libxl__egc *egc, libxl__ev_qmp *,
+                                              const libxl__json_object *,
+                                              int rc);
+static void cdrom_insert_ejected_aodevcb(libxl__egc *egc,
+                                         libxl__ao_device *aodev);
 static void cdrom_insert_ejected(libxl__egc *egc, libxl__ev_qmp *,
                                  const libxl__json_object *, int rc);
 static void cdrom_insert_addfd_cb(libxl__egc *egc, libxl__ev_qmp *,
                                   const libxl__json_object *, int rc);
 static void cdrom_insert_inserted(libxl__egc *egc, libxl__ev_qmp *,
                                   const libxl__json_object *, int rc);
+static void cdrom_insert_addfd_retry(libxl__egc *egc, libxl__ev_time *ev,
+                                     const struct timeval *requested_abs,
+                                     int rc);
 static void cdrom_insert_timout(libxl__egc *egc, libxl__ev_time *ev,
                                 const struct timeval *requested_abs,
                                 int rc);
@@ -824,6 +845,7 @@ int libxl_cdrom_insert(libxl_ctx *ctx, uint32_t domid, libxl_device_disk *disk,
     libxl_device_disk *disks = NULL;
     int rc;
     libxl__cdrom_insert_state *cis;
+    libxl_domid stubdomid;
 
     GCNEW(cis);
     cis->ao = ao;
@@ -835,6 +857,8 @@ int libxl_cdrom_insert(libxl_ctx *ctx, uint32_t domid, libxl_device_disk *disk,
     cis->qmp_lock.ao = ao;
     cis->qmp_lock.domid = domid;
     libxl__ev_time_init(&cis->time);
+    libxl__ev_time_init(&cis->timeout_retry);
+    cis->retries = 0;
     libxl__ev_qmp_init(&cis->qmp);
     cis->qmp.ao = ao;
     cis->qmp.domid = domid;
@@ -851,12 +875,6 @@ int libxl_cdrom_insert(libxl_ctx *ctx, uint32_t domid, libxl_device_disk *disk,
         goto out;
     }
 
-    if (libxl_get_stubdom_id(ctx, domid) != 0) {
-        LOGD(ERROR, domid, "cdrom-insert doesn't work for stub domains");
-        rc = ERROR_INVAL;
-        goto out;
-    }
-
     cis->dm_ver = libxl__device_model_version_running(gc, domid);
     if (cis->dm_ver == -1) {
         LOGD(ERROR, domid, "Cannot determine device model version");
@@ -864,7 +882,14 @@ int libxl_cdrom_insert(libxl_ctx *ctx, uint32_t domid, libxl_device_disk *disk,
         goto out;
     }
 
-    disks = libxl__device_list(gc, &libxl__disk_devtype, domid, &num);
+    stubdomid = libxl_get_stubdom_id(CTX, cis->domid);
+    if (stubdomid == 0) {
+        cis->disk_domid = domid;
+    } else {
+        cis->disk_domid = stubdomid;
+    }
+
+    disks = libxl__device_list(gc, &libxl__disk_devtype, cis->disk_domid, &num);
     for (i = 0; i < num; i++) {
         if (disks[i].is_cdrom && !strcmp(disk->vdev, disks[i].vdev))
         {
@@ -879,7 +904,7 @@ int libxl_cdrom_insert(libxl_ctx *ctx, uint32_t domid, libxl_device_disk *disk,
         goto out;
     }
 
-    rc = libxl__device_disk_setdefault(gc, domid, disk, false);
+    rc = libxl__device_disk_setdefault(gc, cis->disk_domid, disk, false);
     if (rc) goto out;
 
     if (!disk->pdev_path) {
@@ -887,6 +912,18 @@ int libxl_cdrom_insert(libxl_ctx *ctx, uint32_t domid, libxl_device_disk *disk,
         disk->format = LIBXL_DISK_FORMAT_EMPTY;
     }
 
+#define STUBDOM_FDSET_CD 8000
+    if (strncmp(disk->vdev, "hd", 2) == 0) {
+	    cis->stubdom_fdset = STUBDOM_FDSET_CD + disk->vdev[2] - 'a';
+    } else if (strncmp(disk->vdev, "xvd", 3) == 0) {
+	    cis->stubdom_fdset = STUBDOM_FDSET_CD + disk->vdev[3] - 'a';
+    } else {
+        LOGD(ERROR, cis->domid, "disk->vdev \"%s\" isn't hdX or xvdY",
+             disk->vdev);
+        rc = ERROR_FAIL;
+        goto out;
+    }
+
 out:
     libxl__device_list_free(&libxl__disk_devtype, disks, num);
     if (rc) {
@@ -905,6 +942,7 @@ static void cdrom_insert_lock_acquired(libxl__egc *egc,
     libxl__cdrom_insert_state *cis = CONTAINER_OF(lock, *cis, qmp_lock);
     STATE_AO_GC(cis->ao);
 
+    LOGD(DEBUG, cis->domid, "rc=%d", rc);
     if (rc) goto out;
 
     rc = libxl__ev_time_register_rel(ao, &cis->time,
@@ -953,7 +991,12 @@ static void cdrom_insert_qmp_connected(libxl__egc *egc, libxl__ev_qmp *qmp,
         QMP_PARAMETERS_SPRINTF(&args, "id", "ide-%i", devid);
     else
         QMP_PARAMETERS_SPRINTF(&args, "device", "ide-%i", devid);
-    qmp->callback = cdrom_insert_ejected;
+
+    if (libxl_get_stubdom_id(CTX, cis->domid))
+        qmp->callback = cdrom_insert_stubdom_removefd;
+    else
+        qmp->callback = cdrom_insert_ejected;
+
     rc = libxl__ev_qmp_send(egc, qmp, "eject", args);
     if (rc) goto out;
     return;
@@ -961,6 +1004,147 @@ out:
     cdrom_insert_done(egc, cis, rc); /* must be last */
 }
 
+static void cdrom_insert_stubdom_removefd(libxl__egc *egc, libxl__ev_qmp *qmp,
+                                          const libxl__json_object *response,
+                                          int rc)
+{
+    libxl__cdrom_insert_state *cis = CONTAINER_OF(qmp, *cis, qmp);
+    STATE_AO_GC(cis->ao);
+
+    if (rc) goto out;
+
+    /* Only called for qemu-xen/linux stubdom. */
+    assert(cis->dm_ver == LIBXL_DEVICE_MODEL_VERSION_QEMU_XEN);
+    libxl__json_object *args = NULL;
+
+    libxl__qmp_param_add_integer(gc, &args, "fdset-id", cis->stubdom_fdset);
+
+    cis->qmp.callback = cdrom_insert_stubdom_ejected;
+
+    rc = libxl__ev_qmp_send(egc, &cis->qmp, "remove-fd", args);
+    if (rc) goto out;
+
+    return;
+
+out:
+    cdrom_insert_done(egc, cis, rc); /* must be last */
+}
+
+static void cdrom_insert_stubdom_ejected(libxl__egc *egc, libxl__ev_qmp *qmp,
+                                         const libxl__json_object *response,
+                                         int rc)
+{
+    libxl__cdrom_insert_state *cis = CONTAINER_OF(qmp, *cis, qmp);
+    libxl__device *device;
+    STATE_AO_GC(cis->ao);
+    domid_t stubdomid = libxl_get_stubdom_id(CTX, cis->domid);
+
+    LOGD(DEBUG, cis->domid, "rc=%d", rc);
+    /* cis->stubdom_fdset is initially empty, so remove-fd fails the first
+     * call with:
+     * {"error": {"class": "GenericError",
+     *            "desc": "File descriptor named 'fdset-id:8675' not found"}}
+     * Carry on in that case. */
+    if (rc && rc != ERROR_QMP_GENERIC_ERROR) goto out;
+
+    GCNEW(device);
+    rc = libxl__device_from_disk(gc, stubdomid, cis->disk, device);
+    if (rc != 0) goto out;
+
+    /* block dev eject */
+    /* Below is basically an open coding of:
+     * libxl_device_disk__remove(CTX, cis->domid, cis->disk, 0);
+     * ...since we can't call it from within libxl.
+     */
+    libxl__prepare_ao_device(ao, &cis->aodev_del);
+    cis->aodev_del.action = LIBXL__DEVICE_ACTION_REMOVE;
+    cis->aodev_del.dev = device;
+    cis->aodev_del.callback = cdrom_insert_stubdom_disk_ejected_aocomplete;
+    cis->aodev_del.force.flag = LIBXL__FORCE_OFF;
+    libxl__initiate_device_generic_remove(egc, &cis->aodev_del);
+    return;
+
+ out:
+    cdrom_insert_done(egc, cis, rc); /* must be last */
+}
+
+static void cdrom_insert_stubdom_disk_ejected_aocomplete(libxl__egc *egc,
+                                                         libxl__ao_device *aodev)
+{
+    STATE_AO_GC(aodev->ao);
+    libxl__cdrom_insert_state *cis = CONTAINER_OF(aodev, *cis, aodev_del);
+
+    LOGD(DEBUG, cis->domid, "rc=%d", aodev->rc);
+    if (aodev->rc) {
+        if (aodev->dev) {
+            LOGD(ERROR, aodev->dev->domid, "Unable to %s %s with id %u",
+                        libxl__device_action_to_string(aodev->action),
+                        libxl__device_kind_to_string(aodev->dev->kind),
+                        aodev->dev->devid);
+        } else {
+            LOG(ERROR, "unable to %s device",
+                       libxl__device_action_to_string(aodev->action));
+        }
+        goto out;
+    }
+
+    cdrom_insert_stubdom_disk_ejected(egc, &cis->qmp, NULL, aodev->rc);
+    return;
+
+ out:
+    cdrom_insert_done(egc, cis, aodev->rc);
+}
+
+static void cdrom_insert_stubdom_disk_ejected(libxl__egc *egc,
+                                              libxl__ev_qmp *qmp,
+                                              const libxl__json_object *response,
+                                              int rc)
+{
+    libxl__cdrom_insert_state *cis = CONTAINER_OF(qmp, *cis, qmp);
+    STATE_AO_GC(cis->ao);
+    domid_t stubdomid = libxl_get_stubdom_id(CTX, cis->domid);
+
+    LOGD(DEBUG, cis->domid, "rc=%d", rc);
+    if (rc) goto out;
+
+    /* block dev insert */
+    libxl__prepare_ao_device(ao, &cis->aodev);
+    /* set an ao callback to end up in cdrom_insert_ejected */
+    cis->aodev.callback = cdrom_insert_ejected_aodevcb;
+    libxl__device_disk_add(egc, stubdomid, cis->disk, &cis->aodev);
+    return;
+
+ out:
+    cdrom_insert_done(egc, cis, rc); /* must be last */
+}
+
+static void cdrom_insert_ejected_aodevcb(libxl__egc *egc,
+                                         libxl__ao_device *aodev)
+{
+    STATE_AO_GC(aodev->ao);
+    libxl__cdrom_insert_state *cis = CONTAINER_OF(aodev, *cis, aodev);
+
+    LOGD(DEBUG, cis->domid, "rc=%d", aodev->rc);
+    if (aodev->rc) {
+        if (aodev->dev) {
+            LOGD(ERROR, aodev->dev->domid, "Unable to %s %s with id %u",
+                        libxl__device_action_to_string(aodev->action),
+                        libxl__device_kind_to_string(aodev->dev->kind),
+                        aodev->dev->devid);
+        } else {
+            LOG(ERROR, "unable to %s device",
+                       libxl__device_action_to_string(aodev->action));
+        }
+        goto out;
+    }
+
+    cdrom_insert_ejected(egc, &cis->qmp, NULL, aodev->rc);
+    return;
+
+ out:
+    cdrom_insert_done(egc, cis, aodev->rc);
+}
+
 static void cdrom_insert_ejected(libxl__egc *egc,
                                  libxl__ev_qmp *qmp,
                                  const libxl__json_object *response,
@@ -983,9 +1167,10 @@ static void cdrom_insert_ejected(libxl__egc *egc,
 
     libxl_domain_config_init(&d_config);
 
+    LOGD(DEBUG, cis->domid, "rc=%d", rc);
     if (rc) goto out;
 
-    rc = libxl__device_from_disk(gc, domid, disk, &device);
+    rc = libxl__device_from_disk(gc, cis->disk_domid, disk, &device);
     if (rc) goto out;
     be_path = libxl__device_backend_path(gc, &device);
     libxl_path = libxl__device_libxl_path(gc, &device);
@@ -1032,7 +1217,7 @@ static void cdrom_insert_ejected(libxl__egc *egc,
      */
 
     rc = libxl__get_domain_configuration(gc, domid, &d_config);
-    if (rc) goto out;
+    if (rc && rc != ERROR_JSON_CONFIG_EMPTY) goto out;
 
     device_add_domain_config(gc, &d_config, &libxl__disk_devtype,
                              &cis->disk_saved);
@@ -1040,10 +1225,15 @@ static void cdrom_insert_ejected(libxl__egc *egc,
     rc = libxl__dm_check_start(gc, &d_config, domid);
     if (rc) goto out;
 
+    LOGD(DEBUG, cis->domid, "stubdom_id=%d",
+                libxl_get_stubdom_id(CTX, cis->domid));
+    /* A linux stubdom will perform add-fd with calculated stubdom_fdset. */
     if (cis->dm_ver == LIBXL_DEVICE_MODEL_VERSION_QEMU_XEN &&
+        libxl_get_stubdom_id(CTX, cis->domid) == 0 &&
         disk->format != LIBXL_DISK_FORMAT_EMPTY) {
         libxl__json_object *args = NULL;
 
+        LOGD(DEBUG, cis->domid, "Doing qmp add-fd path");
         assert(qmp->payload_fd == -1);
         qmp->payload_fd = open(disk->pdev_path, O_RDONLY);
         if (qmp->payload_fd < 0) {
@@ -1062,20 +1252,28 @@ static void cdrom_insert_ejected(libxl__egc *egc,
         if (rc) goto out;
         has_callback = true;
     } else {
+        LOGD(DEBUG, cis->domid, "Skipping qmp add-fd path");
         has_callback = false;
     }
 
     rc = 0;
 
 out:
+    LOGD(DEBUG, cis->domid, "out label rc=%d", rc);
     libxl__xs_transaction_abort(gc, &t);
     libxl_domain_config_dispose(&d_config);
     if (data_lock) libxl__unlock_file(data_lock);
     if (rc) {
         cdrom_insert_done(egc, cis, rc); /* must be last */
     } else if (!has_callback) {
-        /* Only called if no asynchronous callback are set. */
-        cdrom_insert_inserted(egc, qmp, NULL, 0); /* must be last */
+        LOGD(DEBUG, cis->domid, "no callback; stubdom_id=%d",
+                libxl_get_stubdom_id(CTX, cis->domid));
+        if (libxl_get_stubdom_id(CTX, cis->domid) == 0) {
+            /* Only called if no asynchronous callback are set. */
+            cdrom_insert_inserted(egc, qmp, NULL, 0); /* must be last */
+        } else {
+            cdrom_insert_addfd_cb(egc, qmp, NULL, 0);
+        }
     }
 }
 
@@ -1094,17 +1292,24 @@ static void cdrom_insert_addfd_cb(libxl__egc *egc,
     /* convenience aliases */
     libxl_device_disk *disk = cis->disk;
 
-    close(qmp->payload_fd);
-    qmp->payload_fd = -1;
+    LOGD(DEBUG, cis->domid, "rc=%d", rc);
 
     if (rc) goto out;
 
-    o = libxl__json_map_get("fdset-id", response, JSON_INTEGER);
-    if (!o) {
-        rc = ERROR_FAIL;
-        goto out;
+    /* response non-NULL only for non-stubdom */
+    if (response) {
+        close(qmp->payload_fd);
+        qmp->payload_fd = -1;
+
+        o = libxl__json_map_get("fdset-id", response, JSON_INTEGER);
+        if (!o) {
+            rc = ERROR_FAIL;
+            goto out;
+        }
+        fdset = libxl__json_object_get_integer(o);
+    } else {
+        fdset = cis->stubdom_fdset;
     }
-    fdset = libxl__json_object_get_integer(o);
 
     devid = libxl__device_disk_dev_number(disk->vdev, NULL, NULL);
     qmp->callback = cdrom_insert_inserted;
@@ -1117,8 +1322,13 @@ static void cdrom_insert_addfd_cb(libxl__egc *egc,
     if (libxl__qmp_ev_qemu_compare_version(qmp, 2, 8, 0) >= 0) {
         QMP_PARAMETERS_SPRINTF(&args, "id", "ide-%i", devid);
         QMP_PARAMETERS_SPRINTF(&args, "filename", "/dev/fdset/%d", fdset);
-        libxl__qmp_param_add_string(gc, &args, "format",
-            libxl__qemu_disk_format_string(disk->format));
+        if (response) {
+            libxl__qmp_param_add_string(gc, &args, "format",
+                libxl__qemu_disk_format_string(disk->format));
+        } else {
+            /* Stubdom is using blockdev /dev/xvd* */
+            libxl__qmp_param_add_string(gc, &args, "format", "host_device");
+        }
         rc = libxl__ev_qmp_send(egc, qmp, "blockdev-change-medium", args);
     } else {
         QMP_PARAMETERS_SPRINTF(&args, "device", "ide-%i", devid);
@@ -1132,13 +1342,22 @@ out:
         cdrom_insert_done(egc, cis, rc); /* must be last */
 }
 
+static void cdrom_insert_addfd_retry(libxl__egc *egc, libxl__ev_time *ev,
+                                     const struct timeval *requested_abs,
+                                     int rc)
+{
+    libxl__cdrom_insert_state *cis = CONTAINER_OF(ev, *cis, timeout_retry);
+
+    cdrom_insert_addfd_cb(egc, &cis->qmp, NULL, 0);
+}
+
 static void cdrom_insert_inserted(libxl__egc *egc,
                                   libxl__ev_qmp *qmp,
                                   const libxl__json_object *response,
                                   int rc)
 {
-    EGC_GC;
     libxl__cdrom_insert_state *cis = CONTAINER_OF(qmp, *cis, qmp);
+    STATE_AO_GC(cis->ao);
     libxl__flock *data_lock = NULL;
     libxl_domain_config d_config;
     flexarray_t *insert = NULL;
@@ -1153,9 +1372,22 @@ static void cdrom_insert_inserted(libxl__egc *egc,
 
     libxl_domain_config_init(&d_config);
 
-    if (rc) goto out;
+    LOGD(DEBUG, cis->domid, "rc=%d", rc);
+
+    if (rc) {
+        if (cis->retries++ < 10 ) {
+            LOGD(DEBUG, qmp->domid, "Retrying QMP cdrom change\n");
+            rc = libxl__ev_time_register_rel(ao, &cis->timeout_retry,
+                                             cdrom_insert_addfd_retry, 100);
+            if (rc) goto out;
+
+            return;
+        } else {
+            goto out;
+        }
+    }
 
-    rc = libxl__device_from_disk(gc, domid, disk, &device);
+    rc = libxl__device_from_disk(gc, cis->disk_domid, disk, &device);
     if (rc) goto out;
     be_path = libxl__device_backend_path(gc, &device);
     libxl_path = libxl__device_libxl_path(gc, &device);
@@ -1167,7 +1399,7 @@ static void cdrom_insert_inserted(libxl__egc *egc,
     }
 
     rc = libxl__get_domain_configuration(gc, domid, &d_config);
-    if (rc) goto out;
+    if (rc && rc != ERROR_JSON_CONFIG_EMPTY) goto out;
 
     device_add_domain_config(gc, &d_config, &libxl__disk_devtype,
                              &cis->disk_saved);
@@ -1176,10 +1408,14 @@ static void cdrom_insert_inserted(libxl__egc *egc,
     flexarray_append_pair(insert, "type",
                       libxl__device_disk_string_of_backend(disk->backend));
     if (disk->format != LIBXL_DISK_FORMAT_EMPTY)
-        flexarray_append_pair(insert, "params",
-                    GCSPRINTF("%s:%s",
-                        libxl__device_disk_string_of_format(disk->format),
-                        disk->pdev_path));
+        if (disk->backend == LIBXL_DISK_BACKEND_QDISK) {
+            flexarray_append_pair(insert, "params",
+                        GCSPRINTF("%s:%s",
+                            libxl__device_disk_string_of_format(disk->format),
+                            disk->pdev_path));
+        } else {
+            flexarray_append_pair(insert, "params", disk->pdev_path);
+        }
     else
         flexarray_append_pair(insert, "params", "");
 
@@ -1237,7 +1473,10 @@ static void cdrom_insert_done(libxl__egc *egc,
 {
     EGC_GC;
 
+    LOGD(DEBUG, cis->domid, "rc=%d", rc);
+
     libxl__ev_time_deregister(gc, &cis->time);
+    libxl__ev_time_deregister(gc, &cis->timeout_retry);
     libxl__ev_qmp_dispose(gc, &cis->qmp);
     if (cis->qmp.payload_fd >= 0) close(cis->qmp.payload_fd);
     libxl__ev_slowlock_unlock(gc, &cis->qmp_lock);
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Tue Jan 09 20:47:32 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 09 Jan 2024 20:47:32 +0000
Received: from list by lists.xenproject.org with outflank-mailman.664985.1035130 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNJ0N-0005zs-2E; Tue, 09 Jan 2024 20:47:23 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 664985.1035130; Tue, 09 Jan 2024 20:47:23 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNJ0M-0005zl-Vp; Tue, 09 Jan 2024 20:47:22 +0000
Received: by outflank-mailman (input) for mailman id 664985;
 Tue, 09 Jan 2024 20:47:21 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=Qgrd=IT=gmail.com=jandryuk@srs-se1.protection.inumbo.net>)
 id 1rNJ0L-0005uQ-J1
 for xen-devel@lists.xenproject.org; Tue, 09 Jan 2024 20:47:21 +0000
Received: from mail-qt1-x831.google.com (mail-qt1-x831.google.com
 [2607:f8b0:4864:20::831])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 477bb3a4-af30-11ee-9b0f-b553b5be7939;
 Tue, 09 Jan 2024 21:47:19 +0100 (CET)
Received: by mail-qt1-x831.google.com with SMTP id
 d75a77b69052e-4299a70d0a7so11201751cf.3
 for <xen-devel@lists.xenproject.org>; Tue, 09 Jan 2024 12:47:19 -0800 (PST)
Received: from pm2-ws13.praxislan02.com
 (207-172-141-204.s8906.c3-0.slvr-cbr1.lnh-slvr.md.cable.rcncustomer.com.
 [207.172.141.204]) by smtp.gmail.com with ESMTPSA id
 fh7-20020a05622a588700b00425442a2f32sm1181628qtb.16.2024.01.09.12.47.16
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 09 Jan 2024 12:47:16 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 477bb3a4-af30-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1704833237; x=1705438037; darn=lists.xenproject.org;
        h=content-transfer-encoding:mime-version:message-id:date:subject:cc
         :to:from:from:to:cc:subject:date:message-id:reply-to;
        bh=iUfUodEymbZtEHWKt1nCEcn+QQzKCU0Kdpn57cnp3Go=;
        b=SJMrFJjKRvJRbMUIJyFtiiFl/TBKNIyDA6idXBWrVlmF1CEocxQLAOBEMcfRFkOgIB
         RMTUl7dtZUv5A6G2cDeXQDHHvVgIPrHUlUjis31fOmnF0qDFBPnRkHmKLb+JrbWbugRz
         6rUBVo+q8b/X6HnspDZ0smNVPWr+0ODMiP9hxBZfTrc4DIxaBP2kT04WVg6yXjIqwa8x
         /B2FCGcP9TGZMcXTY7Tzz4E3URYwE/xH3V0aNqMOVu2ETx5SrX0kxn8W3b0ciigXzQyX
         5xWxLhQRikGm2pEAy9Fmf/921YFVTvyLt82iom4aoOYUtzKkGUgog02QseJUDKMipaF0
         y5hw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704833237; x=1705438037;
        h=content-transfer-encoding:mime-version:message-id:date:subject:cc
         :to:from:x-gm-message-state:from:to:cc:subject:date:message-id
         :reply-to;
        bh=iUfUodEymbZtEHWKt1nCEcn+QQzKCU0Kdpn57cnp3Go=;
        b=git5ve8PA/TUkVonBPQkLOoA1W+bKyIm491ad/EsZsVWGSajQ+mZwM2AznuDNMXb8V
         FQm0dH6ZWDWRmvj870wlSKx9z4ShessASYEcE0xzAk0fNwF9t6+1A7jilMzgeEtlwUIC
         uIgdwA51UXVzRRPGvehxQ/qMR3gUdl6dnxccuVLvCCGDJLfkGtqqfXJNoKkhDX1JVoSd
         HTcfwqfIeL+ZQsT6iJDSafkujt6thSk/l4RuU7Vp0UabPWzaIzemdJekxstD8DqFnlZq
         C22COn1vXlgYfjmrUeccRj6psPVTMlXqLdZ284Z/4mfsb65yY6nawQRmaG7N6tNQm0y9
         Jwlw==
X-Gm-Message-State: AOJu0YxrQ1hbw0aFOYEiAMCLdOLFzgGsVZMH6wsLhNX0GTuXTEri+Ivb
	+2fvKeSK4xsLr3uH8xKGtYozdpVP/cg=
X-Google-Smtp-Source: AGHT+IFgDrhdGTITMW4nXRBlXahwxOH/JWni8FmmJR8ibZvTRgK7YGCZpgxbwfqsjIhLue/+nHpgTg==
X-Received: by 2002:a05:622a:489a:b0:429:9ec8:386d with SMTP id fc26-20020a05622a489a00b004299ec8386dmr37369qtb.49.1704833237371;
        Tue, 09 Jan 2024 12:47:17 -0800 (PST)
From: Jason Andryuk <jandryuk@gmail.com>
To: xen-devel@lists.xenproject.org
Cc: =?UTF-8?q?Marek=20Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>,
	Jason Andryuk <jandryuk@gmail.com>,
	Wei Liu <wl@xen.org>,
	Anthony PERARD <anthony.perard@citrix.com>,
	Juergen Gross <jgross@suse.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	George Dunlap <george.dunlap@citrix.com>,
	Jan Beulich <jbeulich@suse.com>,
	Julien Grall <julien@xen.org>,
	Stefano Stabellini <sstabellini@kernel.org>
Subject: [PATCH 0/2] libxl: Stubdom cd-rom changing support
Date: Tue,  9 Jan 2024 15:46:53 -0500
Message-ID: <20240109204655.72063-1-jandryuk@gmail.com>
X-Mailer: git-send-email 2.43.0
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

These two patches enable cd-rom media changing for an HVM with a
linux stubdom.

The first patch allows use of non-QDISK drives with a stubdom.  The
second expands the cd-rom changing code to support the stubdom case.

To change the cd-rom medium, libxl will:
 - QMP eject the medium from QEMU
 - block-detach the old PV disk
 - block-attach the new PV disk
 - QMP change the medium to the new PV disk by fdset-id

The QMP change insert uses fdset-id STUBDOM_FDSET_CD + $disk - 'a'.
That is, hda -> 'a', so
STUBDOM_FDSET_CD + 'a' - 'a' = STUBDOM_FDSET_CD.
For hdc:
STUBDOM_FDSET_CD + 'c' - 'a' = STUBDOM_FDSET_CD + 2.

The stubdom must internally handle adding /dev/xvdc to the appropriate
fdset inside QEMU.

A script like this:
https://github.com/OpenXT/xenclient-oe/blob/master/recipes-core/initrdscripts/initramfs-stubdomain/qemu-xvdc-add-fd.sh

Can be called by busybox mdev configured like this:
https://github.com/OpenXT/xenclient-oe/blob/master/recipes-core/busybox/files/mdev.conf

Jason Andryuk (2):
  libxl: Remove cdrom forced QDISK w/ stubdom
  libxl: Enable stubdom cdrom changing

 docs/misc/stubdom.txt         |  16 ++
 tools/libs/light/libxl_disk.c | 302 ++++++++++++++++++++++++++++++----
 2 files changed, 287 insertions(+), 31 deletions(-)

-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Tue Jan 09 20:47:32 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 09 Jan 2024 20:47:32 +0000
Received: from list by lists.xenproject.org with outflank-mailman.664986.1035141 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNJ0O-0006E8-9n; Tue, 09 Jan 2024 20:47:24 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 664986.1035141; Tue, 09 Jan 2024 20:47:24 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNJ0O-0006E1-6w; Tue, 09 Jan 2024 20:47:24 +0000
Received: by outflank-mailman (input) for mailman id 664986;
 Tue, 09 Jan 2024 20:47:23 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=Qgrd=IT=gmail.com=jandryuk@srs-se1.protection.inumbo.net>)
 id 1rNJ0N-00065f-Lx
 for xen-devel@lists.xenproject.org; Tue, 09 Jan 2024 20:47:23 +0000
Received: from mail-qt1-x832.google.com (mail-qt1-x832.google.com
 [2607:f8b0:4864:20::832])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 49773ba1-af30-11ee-98ef-6d05b1d4d9a1;
 Tue, 09 Jan 2024 21:47:22 +0100 (CET)
Received: by mail-qt1-x832.google.com with SMTP id
 d75a77b69052e-4299400fd94so14397291cf.2
 for <xen-devel@lists.xenproject.org>; Tue, 09 Jan 2024 12:47:22 -0800 (PST)
Received: from pm2-ws13.praxislan02.com
 (207-172-141-204.s8906.c3-0.slvr-cbr1.lnh-slvr.md.cable.rcncustomer.com.
 [207.172.141.204]) by smtp.gmail.com with ESMTPSA id
 fh7-20020a05622a588700b00425442a2f32sm1181628qtb.16.2024.01.09.12.47.20
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 09 Jan 2024 12:47:20 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 49773ba1-af30-11ee-98ef-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1704833241; x=1705438041; darn=lists.xenproject.org;
        h=content-transfer-encoding:mime-version:references:in-reply-to
         :message-id:date:subject:cc:to:from:from:to:cc:subject:date
         :message-id:reply-to;
        bh=LmDIAatmxct3SyiOSDfQ1Zlj25zPKv9fsM2oRUEHdKU=;
        b=CDCY1hh8Rz7d1hb31I9gqvyt3Sabb9MglsumerW1PF8wrHQOOJLf6u4zHbwkUBry7f
         4fvmHXQrLJBGDgqSYvsddXw829B6N+xKP3arwG66Lidh4/H5JvaNvAMsbTJm5hHzNXu1
         DWq4piaE8u6pwvz4dQrM62yFk6EIOFtd2X6+Y4Vw/vW0E71muXexMLhntL5zZPLp3VJN
         miFN7NetiHpZZqtaRhnGQ7uvxpUmAd/kzM9+vLaRykug+i9LSRR0FcdJLq5OdhTbDxXe
         uuDqxSGdRwYcFz9jSQhMmF6RsKToak9dbXqDCWYaiHJaPfBL64ZGACHxmPJaWWjk4YlX
         efIw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704833241; x=1705438041;
        h=content-transfer-encoding:mime-version:references:in-reply-to
         :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to;
        bh=LmDIAatmxct3SyiOSDfQ1Zlj25zPKv9fsM2oRUEHdKU=;
        b=d37F+hAJjFeP+7ZJv1bbY79Ap5yzL5zQsxqJN+afF5/VeXSmnXLhRm+5XU2vb12p6z
         3Ma7tVF5NpB8g24w5g4qIMwLDwiuYYYnDQZaz3KYb4W//eKSvtHkcrrgceU1033EVjax
         oYmwluDVAHSy8k2Mb9DMUot+lElxU/gH7DFtDsJSBr4ECdnzX4G9siML8I6Y0NVOo/Yl
         3mv7uYag9ZUjmsjGir9yWoQtYemN/hMP/pEqcLcqlycQlEEc1akAJ+MFXfuXyZTGd7V4
         4H7IFrsjykJlVVbcHaJ0Ch5QJD7+Ew4Bm84LVBOtY4fsPUe+/NOEJQkVpII4pvBZYYdx
         WaDQ==
X-Gm-Message-State: AOJu0YzF2yntWqpi1vs3jbHhaOPrr2tfUA9wFe+Sfsm8npW1SXdAsHEE
	4CKqhA75fHy5RnCrd9QE7KxXrCBBrjM=
X-Google-Smtp-Source: AGHT+IG0IOClNAHazYB/C5f+kT4FJpwVJFR67PGWdq0fBU8Keue7kuvgqUmwtb/0T76zcvdaYRG73g==
X-Received: by 2002:ac8:5c0e:0:b0:428:34c5:491e with SMTP id i14-20020ac85c0e000000b0042834c5491emr31195qti.23.1704833241054;
        Tue, 09 Jan 2024 12:47:21 -0800 (PST)
From: Jason Andryuk <jandryuk@gmail.com>
To: xen-devel@lists.xenproject.org
Cc: =?UTF-8?q?Marek=20Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>,
	Jason Andryuk <jandryuk@gmail.com>,
	Wei Liu <wl@xen.org>,
	Anthony PERARD <anthony.perard@citrix.com>,
	Juergen Gross <jgross@suse.com>
Subject: [PATCH 1/2] libxl: Remove cdrom forced QDISK w/ stubdom
Date: Tue,  9 Jan 2024 15:46:54 -0500
Message-ID: <20240109204655.72063-2-jandryuk@gmail.com>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20240109204655.72063-1-jandryuk@gmail.com>
References: <20240109204655.72063-1-jandryuk@gmail.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

A Linux HVM domain ignores PV block devices with type cdrom.  The
Windows PV drivers also ignore device-type != "disk".  Therefore QEMU's
emulated CD-ROM support is used.  This allows ejection and other CD-ROM
features to work.

With a stubdom, QEMU is running in the stubdom.  A PV disk is still
connected into the stubdom, and then QEMU can emulate the CD-ROM into
the guest.  This removes the need for forcing to a QDISK.  Relax the
checks to support this.

Signed-off-by: Jason Andryuk <jandryuk@gmail.com>
---
 tools/libs/light/libxl_disk.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/tools/libs/light/libxl_disk.c b/tools/libs/light/libxl_disk.c
index b65cad33cc..d1f84ef404 100644
--- a/tools/libs/light/libxl_disk.c
+++ b/tools/libs/light/libxl_disk.c
@@ -192,7 +192,8 @@ static int libxl__device_disk_setdefault(libxl__gc *gc, uint32_t domid,
 
     /* Force Qdisk backend for CDROM devices of guests with a device model. */
     if (disk->is_cdrom != 0 &&
-        libxl__domain_type(gc, domid) == LIBXL_DOMAIN_TYPE_HVM) {
+        libxl__domain_type(gc, domid) == LIBXL_DOMAIN_TYPE_HVM &&
+        !libxl_get_stubdom_id(CTX, domid)) {
         if (!(disk->backend == LIBXL_DISK_BACKEND_QDISK ||
               disk->backend == LIBXL_DISK_BACKEND_UNKNOWN)) {
             LOGD(ERROR, domid, "Backend for CD devices on HVM guests must be Qdisk");
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Tue Jan 09 21:36:40 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 09 Jan 2024 21:36:40 +0000
Received: from list by lists.xenproject.org with outflank-mailman.665002.1035160 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNJlw-0002eL-CA; Tue, 09 Jan 2024 21:36:32 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 665002.1035160; Tue, 09 Jan 2024 21:36:32 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNJlw-0002eE-9Q; Tue, 09 Jan 2024 21:36:32 +0000
Received: by outflank-mailman (input) for mailman id 665002;
 Tue, 09 Jan 2024 21:36:30 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rNJlu-0002dy-9G; Tue, 09 Jan 2024 21:36:30 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rNJlu-0001U0-1L; Tue, 09 Jan 2024 21:36:30 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rNJlt-0007h6-KW; Tue, 09 Jan 2024 21:36:29 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rNJlt-0000px-Ju; Tue, 09 Jan 2024 21:36:29 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=6bLY4qCtpI+QcevkpHWD+uzR60skPmUNq3/FgoisgmQ=; b=GnCRnLvjqTM8I5mR9vCZf158W5
	dwpuypl2ldWqhBj+AZkGmjmxNAU2qiHTYtMFlZxAHjAMOxQ48LK5vRiR/wHClG8mfAyFUY64k3LtD
	CcSD8AUndKnEE1vnHmrDt4+vIggpKkGH8zhyiUcHBWC0BuogbaIqkAq6c4HGVpyTvBnE=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184291-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [linux-5.4 test] 184291: regressions - trouble: broken/fail/pass
X-Osstest-Failures:
    linux-5.4:test-amd64-amd64-xl-rtds:<job status>:broken:regression
    linux-5.4:test-armhf-armhf-xl-multivcpu:guest-start/debian.repeat:fail:regression
    linux-5.4:test-amd64-amd64-xl-rtds:host-install(5):broken:heisenbug
    linux-5.4:test-amd64-amd64-xl-qemut-debianhvm-i386-xsm:debian-hvm-install:fail:heisenbug
    linux-5.4:test-armhf-armhf-xl-rtds:guest-start:fail:heisenbug
    linux-5.4:test-armhf-armhf-xl-credit2:guest-start:fail:heisenbug
    linux-5.4:test-armhf-armhf-xl:guest-start/debian.repeat:fail:heisenbug
    linux-5.4:test-arm64-arm64-libvirt-raw:guest-start/debian.repeat:fail:heisenbug
    linux-5.4:test-armhf-armhf-xl-multivcpu:guest-start:fail:heisenbug
    linux-5.4:test-armhf-armhf-xl-rtds:guest-start/debian.repeat:fail:allowable
    linux-5.4:test-armhf-armhf-xl-credit1:guest-start/debian.repeat:fail:nonblocking
    linux-5.4:test-armhf-armhf-libvirt-qcow2:saverestore-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-multivcpu:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-multivcpu:saverestore-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-credit1:guest-start:fail:nonblocking
    linux-5.4:test-armhf-armhf-libvirt:saverestore-support-check:fail:nonblocking
    linux-5.4:test-amd64-amd64-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    linux-5.4:test-amd64-i386-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    linux-5.4:test-amd64-i386-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-credit2:guest-start/debian.repeat:fail:nonblocking
    linux-5.4:test-amd64-amd64-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-arndale:guest-start/debian.repeat:fail:nonblocking
    linux-5.4:test-amd64-amd64-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    linux-5.4:test-amd64-amd64-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    linux-5.4:test-armhf-armhf-libvirt-raw:saverestore-support-check:fail:nonblocking
    linux-5.4:test-amd64-i386-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    linux-5.4:test-amd64-i386-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    linux-5.4:test-amd64-amd64-qemuu-nested-amd:debian-hvm-install/l1/l2:fail:nonblocking
    linux-5.4:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    linux-5.4:test-amd64-i386-libvirt:migrate-support-check:fail:nonblocking
    linux-5.4:test-amd64-i386-xl-pvshim:guest-start:fail:nonblocking
    linux-5.4:test-amd64-amd64-libvirt-xsm:migrate-support-check:fail:nonblocking
    linux-5.4:test-amd64-i386-libvirt-xsm:migrate-support-check:fail:nonblocking
    linux-5.4:test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-xsm:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-xsm:saverestore-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-libvirt-xsm:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-libvirt-xsm:saverestore-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-thunderx:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl:saverestore-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-thunderx:saverestore-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-credit1:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-credit1:saverestore-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-credit2:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-credit2:saverestore-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-rtds:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-rtds:saverestore-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-credit1:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-credit1:saverestore-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl:saverestore-support-check:fail:nonblocking
    linux-5.4:test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-arndale:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-arndale:saverestore-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-libvirt:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-credit2:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-credit2:saverestore-support-check:fail:nonblocking
    linux-5.4:test-amd64-amd64-libvirt-vhd:migrate-support-check:fail:nonblocking
    linux-5.4:test-amd64-i386-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-libvirt-raw:saverestore-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-vhd:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-vhd:saverestore-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-libvirt-qcow2:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-vhd:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-vhd:saverestore-support-check:fail:nonblocking
X-Osstest-Versions-This:
    linux=4410df70110ff5175bf7f7fdc3bae5c80f2c36d9
X-Osstest-Versions-That:
    linux=2d21f73b2f16f51608c8d8b1726df270229a5006
From: osstest service owner <osstest-admin@xenproject.org>
Date: Tue, 09 Jan 2024 21:36:29 +0000

flight 184291 linux-5.4 real [real]
http://logs.test-lab.xenproject.org/osstest/logs/184291/

Regressions :-(

Tests which did not succeed and are blocking,
including tests which could not be run:
 test-amd64-amd64-xl-rtds        <job status>                 broken
 test-armhf-armhf-xl-multivcpu 18 guest-start/debian.repeat fail in 184275 REGR. vs. 184192

Tests which are failing intermittently (not blocking):
 test-amd64-amd64-xl-rtds      5 host-install(5)          broken pass in 184281
 test-amd64-amd64-xl-qemut-debianhvm-i386-xsm 12 debian-hvm-install fail in 184275 pass in 184291
 test-armhf-armhf-xl-rtds     14 guest-start      fail in 184281 pass in 184291
 test-armhf-armhf-xl-credit2  14 guest-start      fail in 184281 pass in 184291
 test-armhf-armhf-xl 18 guest-start/debian.repeat fail in 184281 pass in 184291
 test-arm64-arm64-libvirt-raw 17 guest-start/debian.repeat fail in 184281 pass in 184291
 test-armhf-armhf-xl-multivcpu 14 guest-start               fail pass in 184275

Regressions which are regarded as allowable (not blocking):
 test-armhf-armhf-xl-rtds    18 guest-start/debian.repeat fail REGR. vs. 184192

Tests which did not succeed, but are not blocking:
 test-armhf-armhf-xl-credit1 18 guest-start/debian.repeat fail blocked in 184192
 test-armhf-armhf-libvirt-qcow2 15 saverestore-support-check fail blocked in 184192
 test-armhf-armhf-xl-multivcpu 15 migrate-support-check fail in 184275 never pass
 test-armhf-armhf-xl-multivcpu 16 saverestore-support-check fail in 184275 never pass
 test-armhf-armhf-xl-credit1  14 guest-start         fail in 184281 like 184192
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 184192
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 184192
 test-amd64-i386-xl-qemut-win7-amd64 19 guest-stop             fail like 184192
 test-amd64-i386-xl-qemuu-win7-amd64 19 guest-stop             fail like 184192
 test-armhf-armhf-xl-credit2  18 guest-start/debian.repeat    fail  like 184192
 test-amd64-amd64-xl-qemut-win7-amd64 19 guest-stop            fail like 184192
 test-armhf-armhf-xl-arndale  18 guest-start/debian.repeat    fail  like 184192
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 184192
 test-amd64-amd64-xl-qemut-ws16-amd64 19 guest-stop            fail like 184192
 test-armhf-armhf-libvirt-raw 15 saverestore-support-check    fail  like 184192
 test-amd64-i386-xl-qemut-ws16-amd64 19 guest-stop             fail like 184192
 test-amd64-i386-xl-qemuu-ws16-amd64 19 guest-stop             fail like 184192
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 184192
 test-amd64-amd64-libvirt     15 migrate-support-check        fail   never pass
 test-amd64-i386-libvirt      15 migrate-support-check        fail   never pass
 test-amd64-i386-xl-pvshim    14 guest-start                  fail   never pass
 test-amd64-amd64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-amd64-i386-libvirt-xsm  15 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-arm64-arm64-xl-xsm      15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-xsm      16 saverestore-support-check    fail   never pass
 test-arm64-arm64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-xsm 16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl          15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-thunderx 15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl          16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-thunderx 16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-credit1  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit1  16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-credit2  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit2  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-rtds     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-rtds     16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-credit1  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit1  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl          15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          16 saverestore-support-check    fail   never pass
 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-armhf-armhf-xl-arndale  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-arndale  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit2  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit2  16 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-vhd 14 migrate-support-check        fail   never pass
 test-amd64-i386-libvirt-raw  14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 15 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-vhd      14 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-vhd      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-qcow2 14 migrate-support-check        fail never pass
 test-armhf-armhf-libvirt-raw 14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      15 saverestore-support-check    fail   never pass

version targeted for testing:
 linux                4410df70110ff5175bf7f7fdc3bae5c80f2c36d9
baseline version:
 linux                2d21f73b2f16f51608c8d8b1726df270229a5006

Last test of basis   184192  2023-12-20 15:16:31 Z   20 days
Testing same since   184275  2024-01-08 10:43:33 Z    1 days    3 attempts

------------------------------------------------------------
People who touched revisions under test:
  Alexander Gordeev <agordeev@linux.ibm.com>
  Alexis Lothoré <alexis.lothore@bootlin.com>
  Alper Ak <alperyasinak1@gmail.com>
  Bin Li <bin.li@canonical.com>
  Borislav Petkov (AMD) <bp@alien8.de>
  Chen-Yu Tsai <wens@kernel.org>
  Dan Carpenter <dan.carpenter@linaro.org>
  David Howells <dhowells@redhat.com>
  David S. Miller <davem@davemloft.net>
  David Sterba <dsterba@suse.com>
  Dmitry Torokhov <dmitry.torokhov@gmail.com>
  Dominique Martinet <asmadeus@codewreck.org>
  Eric Dumazet <edumazet@google.com>
  Fedor Pchelkin <pchelkin@ispras.ru>
  Florian Fainelli <florian.fainelli@broadcom.com>
  Geert Uytterhoeven <geert+renesas@glider.be>
  Georgi Djakov <djakov@kernel.org>
  Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  Haoran Liu <liuhaoran14@163.com>
  Harshit Mogalapalli <harshit.m.mogalapalli@oracle.com>
  Heiko Carstens <hca@linux.ibm.com>
  Heiner Kallweit <hkallweit1@gmail.com>
  Hu Haowen <xianfengting221@163.com>
  Jakub Kicinski <kuba@kernel.org>
  Jamal Hadi Salim <jhs@mojatatu.com>
  Javier Carrasco <javier.carrasco.cruz@gmail.com>
  Jens Axboe <axboe@kernel.dk>
  Johan Hovold <johan@kernel.org>
  Johannes Berg <johannes.berg@intel.com>
  Jonathan Cameron <Jonathan.Cameron@huawei.com>
  Josef Bacik <josef@toxicpanda.com>
  Kai Vehmanen <kai.vehmanen@linux.intel.com>
  kernelci.org bot <bot@kernelci.org>
  Kunwu Chan <chentao@kylinos.cn>
  Linus Torvalds <torvalds@linux-foundation.org>
  Linus Walleij <linus.walleij@linaro.org>
  Linux Kernel Functional Testing <lkft@linaro.org>
  Liu Jian <liujian56@huawei.com>
  Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
  Mark Glover <mark.glover@actisense.com>
  Markus Suvanto <markus.suvanto@gmail.com>
  Martin K. Petersen <martin.petersen@oracle.com>
  Masami Hiramatsu (Google) <mhiramat@kernel.org>
  Mike Snitzer <snitzer@kernel.org>
  Mike Tipton <quic_mdtipton@quicinc.com>
  Miri Korenblit <miriam.rachel.korenblit@intel.com>
  Moshe Shemesh <moshe@nvidia.com>
  Namjae Jeon <linkinjeon@kernel.org>
  Paolo Abeni <pabeni@redhat.com>
  Paulo Alcantara (SUSE) <pc@manguebit.com>
  Paulo Alcantara <pc@manguebit.com>
  Peter Zijlstra (Intel) <peterz@infradead.org>
  Philipp Zabel <p.zabel@pengutronix.de>
  Quan Nguyen <quan@os.amperecomputing.com>
  Rahul Rameshbabu <rrameshbabu@nvidia.com>
  Reinhard Speyerer <rspmn@arcor.de>
  Rouven Czerwinski <r.czerwinski@pengutronix.de>
  Saeed Mahameed <saeedm@mellanox.com>
  Saeed Mahameed <saeedm@nvidia.com>
  Sarthak Kukreti <sarthakkukreti@chromium.org>
  Sasha Levin <sashal@kernel.org>
  Seth Forshee <sforshee@kernel.org>
  Slark Xiao <slark_xiao@163.com>
  Steve French <stfrench@microsoft.com>
  Steven Rostedt (Google) <rostedt@goodmis.org>
  Su Hui <suhui@nfschina.com>
  Takashi Iwai <tiwai@suse.de>
  Thomas Gleixner <tglx@linutronix.de>
  Tony Lindgren <tony@atomide.com>
  Vlad Buslov <vladbu@nvidia.com>
  Wadim Egorov <w.egorov@phytec.de>
  Wei Yongjun <weiyongjun1@huawei.com>
  Wolfram Sang <wsa@kernel.org>
  Zhipeng Lu <alexious@zju.edu.cn>

jobs:
 build-amd64-xsm                                              pass    
 build-arm64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64                                                  pass    
 build-arm64                                                  pass    
 build-armhf                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-arm64-libvirt                                          pass    
 build-armhf-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-pvops                                            pass    
 build-arm64-pvops                                            pass    
 build-armhf-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-amd64-amd64-xl                                          pass    
 test-amd64-coresched-amd64-xl                                pass    
 test-arm64-arm64-xl                                          pass    
 test-armhf-armhf-xl                                          pass    
 test-amd64-i386-xl                                           pass    
 test-amd64-coresched-i386-xl                                 pass    
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm           pass    
 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm            pass    
 test-amd64-amd64-xl-qemut-stubdom-debianhvm-amd64-xsm        pass    
 test-amd64-i386-xl-qemut-stubdom-debianhvm-amd64-xsm         pass    
 test-amd64-amd64-xl-qemut-debianhvm-i386-xsm                 pass    
 test-amd64-i386-xl-qemut-debianhvm-i386-xsm                  pass    
 test-amd64-amd64-xl-qemuu-debianhvm-i386-xsm                 pass    
 test-amd64-i386-xl-qemuu-debianhvm-i386-xsm                  pass    
 test-amd64-amd64-libvirt-xsm                                 pass    
 test-arm64-arm64-libvirt-xsm                                 pass    
 test-amd64-i386-libvirt-xsm                                  pass    
 test-amd64-amd64-xl-xsm                                      pass    
 test-arm64-arm64-xl-xsm                                      pass    
 test-amd64-i386-xl-xsm                                       pass    
 test-amd64-amd64-qemuu-nested-amd                            fail    
 test-amd64-amd64-xl-pvhv2-amd                                pass    
 test-amd64-i386-qemut-rhel6hvm-amd                           pass    
 test-amd64-i386-qemuu-rhel6hvm-amd                           pass    
 test-amd64-amd64-dom0pvh-xl-amd                              pass    
 test-amd64-amd64-xl-qemut-debianhvm-amd64                    pass    
 test-amd64-i386-xl-qemut-debianhvm-amd64                     pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64                    pass    
 test-amd64-i386-xl-qemuu-debianhvm-amd64                     pass    
 test-amd64-i386-freebsd10-amd64                              pass    
 test-amd64-amd64-qemuu-freebsd11-amd64                       pass    
 test-amd64-amd64-qemuu-freebsd12-amd64                       pass    
 test-amd64-amd64-xl-qemuu-ovmf-amd64                         pass    
 test-amd64-i386-xl-qemuu-ovmf-amd64                          pass    
 test-amd64-amd64-xl-qemut-win7-amd64                         fail    
 test-amd64-i386-xl-qemut-win7-amd64                          fail    
 test-amd64-amd64-xl-qemuu-win7-amd64                         fail    
 test-amd64-i386-xl-qemuu-win7-amd64                          fail    
 test-amd64-amd64-xl-qemut-ws16-amd64                         fail    
 test-amd64-i386-xl-qemut-ws16-amd64                          fail    
 test-amd64-amd64-xl-qemuu-ws16-amd64                         fail    
 test-amd64-i386-xl-qemuu-ws16-amd64                          fail    
 test-armhf-armhf-xl-arndale                                  fail    
 test-amd64-amd64-examine-bios                                pass    
 test-amd64-i386-examine-bios                                 pass    
 test-amd64-amd64-xl-credit1                                  pass    
 test-arm64-arm64-xl-credit1                                  pass    
 test-armhf-armhf-xl-credit1                                  fail    
 test-amd64-amd64-xl-credit2                                  pass    
 test-arm64-arm64-xl-credit2                                  pass    
 test-armhf-armhf-xl-credit2                                  fail    
 test-amd64-amd64-xl-qemuu-dmrestrict-amd64-dmrestrict        pass    
 test-amd64-i386-xl-qemuu-dmrestrict-amd64-dmrestrict         pass    
 test-amd64-amd64-examine                                     pass    
 test-arm64-arm64-examine                                     pass    
 test-armhf-armhf-examine                                     pass    
 test-amd64-i386-examine                                      pass    
 test-amd64-i386-freebsd10-i386                               pass    
 test-amd64-amd64-qemuu-nested-intel                          pass    
 test-amd64-amd64-xl-pvhv2-intel                              pass    
 test-amd64-i386-qemut-rhel6hvm-intel                         pass    
 test-amd64-i386-qemuu-rhel6hvm-intel                         pass    
 test-amd64-amd64-dom0pvh-xl-intel                            pass    
 test-amd64-amd64-libvirt                                     pass    
 test-armhf-armhf-libvirt                                     pass    
 test-amd64-i386-libvirt                                      pass    
 test-amd64-amd64-xl-multivcpu                                pass    
 test-armhf-armhf-xl-multivcpu                                fail    
 test-amd64-amd64-pair                                        pass    
 test-amd64-i386-pair                                         pass    
 test-amd64-amd64-libvirt-pair                                pass    
 test-amd64-i386-libvirt-pair                                 pass    
 test-amd64-amd64-xl-pvshim                                   pass    
 test-amd64-i386-xl-pvshim                                    fail    
 test-amd64-amd64-pygrub                                      pass    
 test-armhf-armhf-libvirt-qcow2                               pass    
 test-amd64-amd64-xl-qcow2                                    pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-armhf-armhf-libvirt-raw                                 pass    
 test-amd64-i386-libvirt-raw                                  pass    
 test-amd64-amd64-xl-rtds                                     broken  
 test-armhf-armhf-xl-rtds                                     fail    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64-shadow             pass    
 test-amd64-i386-xl-qemuu-debianhvm-amd64-shadow              pass    
 test-amd64-amd64-xl-shadow                                   pass    
 test-amd64-i386-xl-shadow                                    pass    
 test-arm64-arm64-xl-thunderx                                 pass    
 test-amd64-amd64-examine-uefi                                pass    
 test-amd64-i386-examine-uefi                                 pass    
 test-amd64-amd64-libvirt-vhd                                 pass    
 test-arm64-arm64-xl-vhd                                      pass    
 test-armhf-armhf-xl-vhd                                      pass    
 test-amd64-i386-xl-vhd                                       pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary

broken-job test-amd64-amd64-xl-rtds broken
broken-step test-amd64-amd64-xl-rtds host-install(5)

Not pushing.

(No revision log; it would be 1652 lines long.)


From xen-devel-bounces@lists.xenproject.org Tue Jan 09 21:52:17 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 09 Jan 2024 21:52:17 +0000
Received: from list by lists.xenproject.org with outflank-mailman.665009.1035171 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNK0x-0007Mm-Nq; Tue, 09 Jan 2024 21:52:03 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 665009.1035171; Tue, 09 Jan 2024 21:52:03 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNK0x-0007Mf-Kg; Tue, 09 Jan 2024 21:52:03 +0000
Received: by outflank-mailman (input) for mailman id 665009;
 Tue, 09 Jan 2024 21:52:02 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=ONpl=IT=amd.com=Stewart.Hildebrand@srs-se1.protection.inumbo.net>)
 id 1rNK0v-0007MZ-Va
 for xen-devel@lists.xenproject.org; Tue, 09 Jan 2024 21:52:02 +0000
Received: from NAM11-CO1-obe.outbound.protection.outlook.com
 (mail-co1nam11on20601.outbound.protection.outlook.com
 [2a01:111:f403:2416::601])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 50036820-af39-11ee-98ef-6d05b1d4d9a1;
 Tue, 09 Jan 2024 22:52:00 +0100 (CET)
Received: from SJ0PR03CA0281.namprd03.prod.outlook.com (2603:10b6:a03:39e::16)
 by BN9PR12MB5321.namprd12.prod.outlook.com (2603:10b6:408:102::20)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7159.23; Tue, 9 Jan
 2024 21:51:55 +0000
Received: from SJ1PEPF00001CE5.namprd03.prod.outlook.com
 (2603:10b6:a03:39e:cafe::34) by SJ0PR03CA0281.outlook.office365.com
 (2603:10b6:a03:39e::16) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7159.23 via Frontend
 Transport; Tue, 9 Jan 2024 21:51:54 +0000
Received: from SATLEXMB03.amd.com (165.204.84.17) by
 SJ1PEPF00001CE5.mail.protection.outlook.com (10.167.242.21) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.7181.14 via Frontend Transport; Tue, 9 Jan 2024 21:51:54 +0000
Received: from SATLEXMB05.amd.com (10.181.40.146) by SATLEXMB03.amd.com
 (10.181.40.144) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.34; Tue, 9 Jan
 2024 15:51:53 -0600
Received: from SATLEXMB04.amd.com (10.181.40.145) by SATLEXMB05.amd.com
 (10.181.40.146) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.34; Tue, 9 Jan
 2024 15:51:53 -0600
Received: from ubuntu.mshome.net (10.180.168.240) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server id 15.1.2507.34 via Frontend
 Transport; Tue, 9 Jan 2024 15:51:51 -0600
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 50036820-af39-11ee-98ef-6d05b1d4d9a1
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=evffYdFnsPwji8kK+v+DrGfj/PaSmACNduw4L8DLALLiUIg6MEuQxwZVCMOsxDXFGBd8AEgD9YB14PTZ73fPlPIPi10pGdez0ZxAR3xrEBIYXUFuVAsJ3Tfd4CHgq0j+3XdE2B37qIIKPaKUhQTR0pzGINqhowMylIJTlK4Qu4J3V3s23MlZHecI6e0urDXKcZBQbeoh4ug3nFogATUwYR+U7Ow7ICmKqQOi2kMJv2RC3dXtTJZYyJb5e7qxGpm+6I5uZSmkkSzWzyw+j7RVoOXvO7SPHnOttD4/P+nqfyhlbKcgQz4K0xyLuWDLeSztpq4XKkiE8NdxpwO5NTGPSw==
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=3iFXtgdIVWCHpihKA9LGQ1gsHtm+B14AwR4IHl5tTVo=;
 b=abHG/L6iZJZ0GDLsPxWH+xnwSHNFzgZBbH5hRpEU9yitjlut8n1XaleDAtnhZ2Q9W586abhk+zJItcAspIMBqWqmBmABlqpuo7I9oQCtAPBPSGGu31cI0lZ/HTRa9HnJiD5bP59qKbGbXX2p4HDZjNtgCdEH6Sznsv2ph9aAUSl5VIEtTfxrYjExLSDifevXT5e6I6EOhoZ/gL6x8R2SD04ksP0IBxfaAbzl0SRHtwP9fo3p5ti969c3yLqFWrbDN0dLiYVjNcSD+329Qxj1DITFxcxQWpzuiPzuGFyeq4RKf9W3tCVa1whxBhaxyebLQb5BQyAYwURURZCpE7XIRg==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=lists.xenproject.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)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=3iFXtgdIVWCHpihKA9LGQ1gsHtm+B14AwR4IHl5tTVo=;
 b=RYtggHpkVjOV+Tyw7D/EddEbxwcJtmm+siqzO/bDVRqUHpRxbYdWqWzrQjx/8R6sWqjYS5Ky//drs15QsUrGxIyeD69IvWB/TbiIQQQOqVFjswYYCPxnuLS7Nn0t3MPMK8yVMbYv0+tjDB+hwvifHKbHM5Xs90fovwI6IdEU8Zc=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=SATLEXMB03.amd.com; pr=C
From: Stewart Hildebrand <stewart.hildebrand@amd.com>
To: <xen-devel@lists.xenproject.org>
CC: Stewart Hildebrand <stewart.hildebrand@amd.com>, Jan Beulich
	<jbeulich@suse.com>, Andrew Cooper <andrew.cooper3@citrix.com>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>, Wei Liu
	<wl@xen.org>, George Dunlap <george.dunlap@citrix.com>, Julien Grall
	<julien@xen.org>, Stefano Stabellini <sstabellini@kernel.org>, Jun Nakajima
	<jun.nakajima@intel.com>, Kevin Tian <kevin.tian@intel.com>, Paul Durrant
	<paul@xen.org>, "Daniel P. Smith" <dpsmith@apertussolutions.com>, "Bertrand
 Marquis" <bertrand.marquis@arm.com>, Michal Orzel <michal.orzel@amd.com>,
	Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>
Subject: [PATCH v12 00/15] PCI devices passthrough on Arm, part 3
Date: Tue, 9 Jan 2024 16:51:15 -0500
Message-ID: <20240109215145.430207-1-stewart.hildebrand@amd.com>
X-Mailer: git-send-email 2.43.0
MIME-Version: 1.0
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: SJ1PEPF00001CE5:EE_|BN9PR12MB5321:EE_
X-MS-Office365-Filtering-Correlation-Id: 751d9517-fcae-48b0-9160-08dc115d31af
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam: BCL:0;
X-Microsoft-Antispam-Message-Info:
	XBQ0gAw6/GalKPHDl1OA52KWA2nAEdkGkg6WTtsFM3rLmHq0rb09+7ULNORBfZtFmxEp0YEW2qvTpVkkWnuLue11tsjSzlMNf65AEZ6nPgddbr2Ra5LGWcQb6z3q0oPPuJN1ShVvFHLHADrw3DtKz7q+dzrAbQ/VHq1E2VtE1hmo+duT8ztWjHtThLp5PR16sXNuHDFWgJuEen/X221dhcGXgrS2DwkhDc2h6pDYPSRmBBhISoPuZ26uxyYuN+OXjG8GrkFjyRAFhMFYVJEM+grifa8zRKuR2/53hQoJA2CtTGJ+wVUfRHHXNJgFO79kSrnKsxHUZaMVqwPtj5AmTtrlvo+OOMzGWilXvzrWzPLeuhdSAlPoz6JQRh11PA2HW7KaE0pvXUrHN3C3GFZfmpzzByV9CopnO/komIW8Iwkat/gYPuMeINtVmZUl0poyBI3bBUGGkSP9DxgYrQd7b84gLwRrcVo2hIkaAFOft0oy1fdFueQ+iPgsOPtfZKhYil+E6Ie+yT6486a9c0uMYs9CqHR5SnuhU5bczoe5uyaNHGV3GP09oQ9hU51oB1C4L7yX5tPoM8nz9bYOydBnfuDb5lmRDz9KO7ivpurKmCStpabeZo7QpdBACsKcsPvpcXdzAX7jbga1FdyU57mB8nrhCFDVibLErbmzMt6A+acTxDiwkQ4GTSUuNThLtxMNCvlFp6JtVCxAdQYq80rHw08va5aE7Amk3PqxLDOn2ZSfEThjxM/+YTczYCaY5l46KRMBwd5I+Ec0o3r7/TTN2w==
X-Forefront-Antispam-Report:
	CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB03.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230031)(4636009)(39860400002)(376002)(136003)(396003)(346002)(230922051799003)(64100799003)(82310400011)(186009)(451199024)(1800799012)(40470700004)(36840700001)(46966006)(83380400001)(26005)(426003)(1076003)(336012)(2616005)(5660300002)(82740400003)(47076005)(36860700001)(44832011)(8936002)(4326008)(8676002)(7416002)(2906002)(478600001)(54906003)(6666004)(6916009)(316002)(70206006)(70586007)(41300700001)(356005)(36756003)(86362001)(81166007)(40480700001)(40460700003)(36900700001);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Jan 2024 21:51:54.1738
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 751d9517-fcae-48b0-9160-08dc115d31af
X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB03.amd.com]
X-MS-Exchange-CrossTenant-AuthSource:
	SJ1PEPF00001CE5.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN9PR12MB5321

This is next version of vPCI rework. Aim of this series is to prepare
ground for introducing PCI support on ARM platform.

in v12:
 - I (Stewart) coordinated with Volodomyr to send this whole series. So,
   add my (Stewart) Signed-off-by to all patches.
 - The biggest change is to re-work the PCI_COMMAND register patch.
   Additional feedback has also been addressed - see individual patches.
 - Drop ("pci: msi: pass pdev to pci_enable_msi() function") and
   ("pci: introduce per-domain PCI rwlock") as they were committed
 - Rename ("rangeset: add rangeset_empty() function")
       to ("rangeset: add rangeset_purge() function")
 - Rename ("vpci/header: rework exit path in init_bars")
       to ("vpci/header: rework exit path in init_header()")

in v11:
 - Added my (Volodymyr) Signed-off-by tag to all patches
 - Patch "vpci/header: emulate PCI_COMMAND register for guests" is in
   intermediate state, because it was agreed to rework it once Stewart's
   series on register handling are in.
 - Addressed comments, please see patch descriptions for details.

in v10:

 - Removed patch ("xen/arm: vpci: check guest range"), proper fix
   for the issue is part of ("vpci/header: emulate PCI_COMMAND
   register for guests")
 - Removed patch ("pci/header: reset the command register when adding
   devices")
 - Added patch ("rangeset: add rangeset_empty() function") because
   this function is needed in ("vpci/header: handle p2m range sets
   per BAR")
 - Added ("vpci/header: handle p2m range sets per BAR") which addressed
   an issue discovered by Andrii Chepurnyi during virtio integration
 - Added ("pci: msi: pass pdev to pci_enable_msi() function"), which is
   prereq for ("pci: introduce per-domain PCI rwlock")
 - Fixed "Since v9/v8/... " comments in changelogs to reduce confusion.
   I left "Since" entries for older versions, because they were added
   by original author of the patches.

in v9:

v9 includes addressed commentes from a previous one. Also it
introduces a couple patches from Stewart. This patches are related to
vPCI use on ARM. Patch "vpci/header: rework exit path in init_bars"
was factored-out from "vpci/header: handle p2m range sets per BAR".

in v8:

The biggest change from previous, mistakenly named, v7 series is how
locking is implemented. Instead of d->vpci_rwlock we introduce
d->pci_lock which has broader scope, as it protects not only domain's
vpci state, but domain's list of PCI devices as well.

As we discussed in IRC with Roger, it is not feasible to rework all
the existing code to use the new lock right away. It was agreed that
any write access to d->pdev_list will be protected by **both**
d->pci_lock in write mode and pcidevs_lock(). Read access on other
hand should be protected by either d->pci_lock in read mode or
pcidevs_lock(). It is expected that existing code will use
pcidevs_lock() and new users will use new rw lock. Of course, this
does not mean that new users shall not use pcidevs_lock() when it is
appropriate.

Changes from previous versions are described in each separate patch.

Oleksandr Andrushchenko (11):
  vpci: use per-domain PCI lock to protect vpci structure
  vpci: restrict unhandled read/write operations for guests
  vpci: add hooks for PCI device assign/de-assign
  vpci/header: implement guest BAR register handlers
  rangeset: add RANGESETF_no_print flag
  vpci/header: handle p2m range sets per BAR
  vpci/header: program p2m with guest BAR view
  vpci/header: emulate PCI_COMMAND register for guests
  vpci: add initial support for virtual PCI bus topology
  xen/arm: translate virtual PCI bus topology for guests
  xen/arm: account IO handlers for emulated PCI MSI-X

Stewart Hildebrand (1):
  xen/arm: vpci: permit access to guest vpci space

Volodymyr Babchuk (3):
  vpci/header: rework exit path in init_header()
  rangeset: add rangeset_purge() function
  arm/vpci: honor access size when returning an error

 xen/arch/arm/vpci.c           |  72 ++++-
 xen/arch/x86/hvm/vmsi.c       |  22 +-
 xen/arch/x86/hvm/vmx/vmx.c    |   2 +-
 xen/arch/x86/irq.c            |   8 +-
 xen/arch/x86/msi.c            |  14 +-
 xen/arch/x86/physdev.c        |   2 +
 xen/common/domain.c           |  12 +-
 xen/common/rangeset.c         |  21 +-
 xen/drivers/Kconfig           |   4 +
 xen/drivers/passthrough/pci.c |  32 ++-
 xen/drivers/vpci/header.c     | 495 +++++++++++++++++++++++++++-------
 xen/drivers/vpci/msi.c        |  37 ++-
 xen/drivers/vpci/msix.c       |  59 +++-
 xen/drivers/vpci/vpci.c       | 129 ++++++++-
 xen/include/xen/pci_regs.h    |   1 +
 xen/include/xen/rangeset.h    |   8 +-
 xen/include/xen/sched.h       |  11 +-
 xen/include/xen/vpci.h        |  44 ++-
 18 files changed, 798 insertions(+), 175 deletions(-)


base-commit: c27c8922f2c6995d688437b0758cec6a27d18320
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Tue Jan 09 21:52:20 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 09 Jan 2024 21:52:20 +0000
Received: from list by lists.xenproject.org with outflank-mailman.665010.1035181 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNK1E-0007mP-4g; Tue, 09 Jan 2024 21:52:20 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 665010.1035181; Tue, 09 Jan 2024 21:52:20 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNK1E-0007mG-1W; Tue, 09 Jan 2024 21:52:20 +0000
Received: by outflank-mailman (input) for mailman id 665010;
 Tue, 09 Jan 2024 21:52:19 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=ONpl=IT=amd.com=Stewart.Hildebrand@srs-se1.protection.inumbo.net>)
 id 1rNK1D-0007gG-4Z
 for xen-devel@lists.xenproject.org; Tue, 09 Jan 2024 21:52:19 +0000
Received: from NAM11-CO1-obe.outbound.protection.outlook.com
 (mail-co1nam11on20600.outbound.protection.outlook.com
 [2a01:111:f403:2416::600])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 5818697a-af39-11ee-9b0f-b553b5be7939;
 Tue, 09 Jan 2024 22:52:13 +0100 (CET)
Received: from BL0PR02CA0083.namprd02.prod.outlook.com (2603:10b6:208:51::24)
 by CH2PR12MB4859.namprd12.prod.outlook.com (2603:10b6:610:62::14)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7159.23; Tue, 9 Jan
 2024 21:52:08 +0000
Received: from BL6PEPF0001AB4B.namprd04.prod.outlook.com
 (2603:10b6:208:51:cafe::18) by BL0PR02CA0083.outlook.office365.com
 (2603:10b6:208:51::24) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7159.23 via Frontend
 Transport; Tue, 9 Jan 2024 21:52:08 +0000
Received: from SATLEXMB04.amd.com (165.204.84.17) by
 BL6PEPF0001AB4B.mail.protection.outlook.com (10.167.242.69) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.7181.14 via Frontend Transport; Tue, 9 Jan 2024 21:52:08 +0000
Received: from SATLEXMB04.amd.com (10.181.40.145) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.34; Tue, 9 Jan
 2024 15:52:07 -0600
Received: from ubuntu.mshome.net (10.180.168.240) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server id 15.1.2507.34 via Frontend
 Transport; Tue, 9 Jan 2024 15:52:04 -0600
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 5818697a-af39-11ee-9b0f-b553b5be7939
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=naPLih+ZtP45yilDZ4jO1X9eF/iT1DhmMtMTqWLRfX1XwhggKaxPJY13FDeIxeTbzW1zVR8fSLZGFkBQhzjozuX5x7Nf/1kYkAyG8W17Uf3GeuI2fIDCN2tMlnvDaTL2lIzdPp/KsGOWnI8OjGMtUsekCFYNy3uTzPMLiH7Eo4L9LZP2tKkYjeRXmucgZzCNRHljS8i3f2f3OlkKDKicACHCIe8KKSYGMnyAhXtG1ZVRn1ZguLtg9fnlMF4A2LfMlf/bEnX1S8055IEj18M/jxhKrZmFu09r9+2ao1tT+xczWwqWuxyJnQ7DglQZ+gOabEjXiykX8M6PsdruFhNlKQ==
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=RL158H3zLFXBqit8wLF1yDE7o053DsgxgnYdW9a1plc=;
 b=PcfJURML/GgDkXEy8NC214aZI6BAK8ZdU3tAQiUt4dtSg607avmYpaJH5TNW8FxU/TYKggjiGBDQ4rAJ0n+tKebPxrxci8PSZcDU6NWGeKbiPLwA/F3iXKKij9NhgoBe2WU+Doj7xaxWNMXZ1dGSQYXUDe3hfCWLhFywg2OHDCJyYo5rTdK8bktlRPxruzclb0h/XxTdJIZ3hskdgU13ynL4ZKRTtdSmo3flw5rNnlR63Hu/KsLlFabwffmB0omRwY+5xLTXhjJfDQ/ItOEjIkr4LV4r9EkiB4ObECHxt1PISfF0jrn5oae4kpxjQzemei6Kq7A5C7yBdsFDAl2WBw==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=lists.xenproject.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)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=RL158H3zLFXBqit8wLF1yDE7o053DsgxgnYdW9a1plc=;
 b=X7bpmR0HJMxodqAYJglhYDDI1jFGxKofwbUAHZuFOASjo8MqghY+q9R4/wwY9FwbfI2VtredLyIBMO2cd2L7pC0FWg/Il5W4sYVJk34TupjHaPSiiH+kN+gnimAZKRWsZzHi1qn+JRNSfXUEX2IR7ZhVaFEp3XvVeAYPXkHitSc=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C
From: Stewart Hildebrand <stewart.hildebrand@amd.com>
To: <xen-devel@lists.xenproject.org>
CC: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>, Jan Beulich
	<jbeulich@suse.com>, Andrew Cooper <andrew.cooper3@citrix.com>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>, Wei Liu
	<wl@xen.org>, George Dunlap <george.dunlap@citrix.com>, Julien Grall
	<julien@xen.org>, Stefano Stabellini <sstabellini@kernel.org>, Jun Nakajima
	<jun.nakajima@intel.com>, Kevin Tian <kevin.tian@intel.com>, Paul Durrant
	<paul@xen.org>, Volodymyr Babchuk <volodymyr_babchuk@epam.com>, "Stewart
 Hildebrand" <stewart.hildebrand@amd.com>
Subject: [PATCH v12 01/15] vpci: use per-domain PCI lock to protect vpci structure
Date: Tue, 9 Jan 2024 16:51:16 -0500
Message-ID: <20240109215145.430207-2-stewart.hildebrand@amd.com>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20240109215145.430207-1-stewart.hildebrand@amd.com>
References: <20240109215145.430207-1-stewart.hildebrand@amd.com>
MIME-Version: 1.0
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: BL6PEPF0001AB4B:EE_|CH2PR12MB4859:EE_
X-MS-Office365-Filtering-Correlation-Id: b3085e0f-5073-4dd2-11b4-08dc115d39e6
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam: BCL:0;
X-Microsoft-Antispam-Message-Info:
	98EHorli8UHBwW8fVmiO863ZSbr5w73jSv7TKQQW2s+P8KenVIURHrE4nj/7nVDtNnifM6cXHcTu0m03q1x+pySHSg+LtIi6MsLNr69rgyDiVVTrvpMdN+wCxsey6lmtxiWz3dqsrMGnjV68ePbahX9l8YI53Lav+Wa0WL/1+6Y/oPfSK0qZiqKdJilcG99AClqBVtn7oy+dUhEDtzl+BwhDbQGU+gWjLXiibNFN0BzDi/uZXIHItYXarEXH/SCeF2pcvL7J914B3/foFIICfrwStB4VlPfiLc7Di9/TawpHSQmzKPKGJW8Hbwql6eOXFMYw+Go0vzk+H9p9agVANEnD+4GHRHAEmCeA3OoJ6FVuu5yJ3+S6G43/Ie7QHiKbeSyIRmE5fIP0pfsBbV5/AskK7b29e7BgIj5rbpBWj3qnCh74x47tp06zbHwatODCIE2Sl8OB4lJ2ZyguQBxa/vlkLS4QBI/aO9xj1IVWuRP/YHO3Hm7aneG1prpNodWIICUGQMzhM6IIpkPLOXzoEtnROwT1oP1pHQQML3SnGHvcW84upoCy2G+vXzDwiM+dfYkXKruT9U85OYNuBDOzc8EwO+yAB2wy5vbnKcFRe2rZd2eQFU6F+UJ9YZBMvuYLHn261UIBGR5pevg2XYjoPjN+Hc7cOdSs8BZaA4OPCGA7tq/hikZ8DEXFR9sc8bRETLa2+9vE9Dbn3/heq1EtKL+sYSpj2DvoXY+j4cyjACvE/IzT1GKC1KXbJyUiWMrnfD/04qFzbLNfxYjccpdauzzCyZS81I7hBo/pucfdXt0=
X-Forefront-Antispam-Report:
	CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230031)(4636009)(136003)(39860400002)(346002)(396003)(376002)(230922051799003)(1800799012)(82310400011)(186009)(451199024)(64100799003)(46966006)(40470700004)(36840700001)(30864003)(7416002)(41300700001)(81166007)(2906002)(5660300002)(82740400003)(54906003)(44832011)(40460700003)(36756003)(36860700001)(86362001)(356005)(6916009)(40480700001)(6666004)(316002)(8676002)(8936002)(4326008)(70586007)(70206006)(47076005)(83380400001)(336012)(1076003)(26005)(478600001)(426003)(2616005)(36900700001)(309714004);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Jan 2024 21:52:08.0308
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: b3085e0f-5073-4dd2-11b4-08dc115d39e6
X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com]
X-MS-Exchange-CrossTenant-AuthSource:
	BL6PEPF0001AB4B.namprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH2PR12MB4859

From: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>

Use a previously introduced per-domain read/write lock to check
whether vpci is present, so we are sure there are no accesses to the
contents of the vpci struct if not. This lock can be used (and in a
few cases is used right away) so that vpci removal can be performed
while holding the lock in write mode. Previously such removal could
race with vpci_read for example.

When taking both d->pci_lock and pdev->vpci->lock, they should be
taken in this exact order: d->pci_lock then pdev->vpci->lock to avoid
possible deadlock situations.

1. Per-domain's pci_lock is used to protect pdev->vpci structure
from being removed.

2. Writing the command register and ROM BAR register may trigger
modify_bars to run, which in turn may access multiple pdevs while
checking for the existing BAR's overlap. The overlapping check, if
done under the read lock, requires vpci->lock to be acquired on both
devices being compared, which may produce a deadlock. It is not
possible to upgrade read lock to write lock in such a case. So, in
order to prevent the deadlock, use d->pci_lock instead.

All other code, which doesn't lead to pdev->vpci destruction and does
not access multiple pdevs at the same time, can still use a
combination of the read lock and pdev->vpci->lock.

3. Drop const qualifier where the new rwlock is used and this is
appropriate.

4. Do not call process_pending_softirqs with any locks held. For that
unlock prior the call and re-acquire the locks after. After
re-acquiring the lock there is no need to check if pdev->vpci exists:
 - in apply_map because of the context it is called (no race condition
   possible)
 - for MSI/MSI-X debug code because it is called at the end of
   pdev->vpci access and no further access to pdev->vpci is made

5. Use d->pci_lock around for_each_pdev and pci_get_pdev_by_domain
while accessing pdevs in vpci code.

Suggested-by: Roger Pau Monné <roger.pau@citrix.com>
Suggested-by: Jan Beulich <jbeulich@suse.com>
Signed-off-by: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>
Signed-off-by: Volodymyr Babchuk <volodymyr_babchuk@epam.com>
Signed-off-by: Stewart Hildebrand <stewart.hildebrand@amd.com>
---
Changes in v12:
 - s/pci_rwlock/pci_lock/ in commit message
 - expand comment about scope of pci_lock in sched.h
 - in vpci_{read,write}, if hwdom is trying to access a device assigned
   to dom_xen, holding hwdom->pci_lock is sufficient (no need to hold
   dom_xen->pci_lock)
 - reintroduce ASSERT in vmx_pi_update_irte()
 - reintroduce ASSERT in __pci_enable_msi{x}()
 - delete note 6. in commit message about removing ASSERTs since we have
   reintroduced them

Changes in v11:
 - Fixed commit message regarding possible spinlocks
 - Removed parameter from allocate_and_map_msi_pirq(), which was added
 in the prev version. Now we are taking pcidevs_lock in
 physdev_map_pirq()
 - Returned ASSERT to pci_enable_msi
 - Fixed case when we took read lock instead of write one
 - Fixed label indentation

Changes in v10:
 - Moved printk pas locked area
 - Returned back ASSERTs
 - Added new parameter to allocate_and_map_msi_pirq() so it knows if
 it should take the global pci lock
 - Added comment about possible improvement in vpci_write
 - Changed ASSERT(rw_is_locked()) to rw_is_write_locked() in
   appropriate places
 - Renamed release_domain_locks() to release_domain_write_locks()
 - moved domain_done label in vpci_dump_msi() to correct place
Changes in v9:
 - extended locked region to protect vpci_remove_device and
   vpci_add_handlers() calls
 - vpci_write() takes lock in the write mode to protect
   potential call to modify_bars()
 - renamed lock releasing function
 - removed ASSERT()s from msi code
 - added trylock in vpci_dump_msi

Changes in v8:
 - changed d->vpci_lock to d->pci_lock
 - introducing d->pci_lock in a separate patch
 - extended locked region in vpci_process_pending
 - removed pcidevs_lockis vpci_dump_msi()
 - removed some changes as they are not needed with
   the new locking scheme
 - added handling for hwdom && dom_xen case
---
 xen/arch/x86/hvm/vmsi.c       | 22 +++++++--------
 xen/arch/x86/hvm/vmx/vmx.c    |  2 +-
 xen/arch/x86/irq.c            |  8 +++---
 xen/arch/x86/msi.c            | 14 +++++-----
 xen/arch/x86/physdev.c        |  2 ++
 xen/drivers/passthrough/pci.c |  9 +++---
 xen/drivers/vpci/header.c     | 18 ++++++++++++
 xen/drivers/vpci/msi.c        | 28 +++++++++++++++++--
 xen/drivers/vpci/msix.c       | 52 ++++++++++++++++++++++++++++++-----
 xen/drivers/vpci/vpci.c       | 28 ++++++++++++++++---
 xen/include/xen/sched.h       |  3 +-
 11 files changed, 144 insertions(+), 42 deletions(-)

diff --git a/xen/arch/x86/hvm/vmsi.c b/xen/arch/x86/hvm/vmsi.c
index 128f23636279..03caf91beefc 100644
--- a/xen/arch/x86/hvm/vmsi.c
+++ b/xen/arch/x86/hvm/vmsi.c
@@ -468,7 +468,7 @@ int msixtbl_pt_register(struct domain *d, struct pirq *pirq, uint64_t gtable)
     struct msixtbl_entry *entry, *new_entry;
     int r = -EINVAL;
 
-    ASSERT(pcidevs_locked());
+    ASSERT(pcidevs_locked() || rw_is_locked(&d->pci_lock));
     ASSERT(rw_is_write_locked(&d->event_lock));
 
     if ( !msixtbl_initialised(d) )
@@ -538,7 +538,7 @@ void msixtbl_pt_unregister(struct domain *d, struct pirq *pirq)
     struct pci_dev *pdev;
     struct msixtbl_entry *entry;
 
-    ASSERT(pcidevs_locked());
+    ASSERT(pcidevs_locked() || rw_is_locked(&d->pci_lock));
     ASSERT(rw_is_write_locked(&d->event_lock));
 
     if ( !msixtbl_initialised(d) )
@@ -684,7 +684,7 @@ static int vpci_msi_update(const struct pci_dev *pdev, uint32_t data,
 {
     unsigned int i;
 
-    ASSERT(pcidevs_locked());
+    ASSERT(rw_is_locked(&pdev->domain->pci_lock));
 
     if ( (address & MSI_ADDR_BASE_MASK) != MSI_ADDR_HEADER )
     {
@@ -725,8 +725,8 @@ void vpci_msi_arch_update(struct vpci_msi *msi, const struct pci_dev *pdev)
     int rc;
 
     ASSERT(msi->arch.pirq != INVALID_PIRQ);
+    ASSERT(rw_is_locked(&pdev->domain->pci_lock));
 
-    pcidevs_lock();
     for ( i = 0; i < msi->vectors && msi->arch.bound; i++ )
     {
         struct xen_domctl_bind_pt_irq unbind = {
@@ -745,7 +745,6 @@ void vpci_msi_arch_update(struct vpci_msi *msi, const struct pci_dev *pdev)
 
     msi->arch.bound = !vpci_msi_update(pdev, msi->data, msi->address,
                                        msi->vectors, msi->arch.pirq, msi->mask);
-    pcidevs_unlock();
 }
 
 static int vpci_msi_enable(const struct pci_dev *pdev, unsigned int nr,
@@ -778,15 +777,14 @@ int vpci_msi_arch_enable(struct vpci_msi *msi, const struct pci_dev *pdev,
     int rc;
 
     ASSERT(msi->arch.pirq == INVALID_PIRQ);
+    ASSERT(rw_is_locked(&pdev->domain->pci_lock));
     rc = vpci_msi_enable(pdev, vectors, 0);
     if ( rc < 0 )
         return rc;
     msi->arch.pirq = rc;
 
-    pcidevs_lock();
     msi->arch.bound = !vpci_msi_update(pdev, msi->data, msi->address, vectors,
                                        msi->arch.pirq, msi->mask);
-    pcidevs_unlock();
 
     return 0;
 }
@@ -797,8 +795,8 @@ static void vpci_msi_disable(const struct pci_dev *pdev, int pirq,
     unsigned int i;
 
     ASSERT(pirq != INVALID_PIRQ);
+    ASSERT(rw_is_locked(&pdev->domain->pci_lock));
 
-    pcidevs_lock();
     for ( i = 0; i < nr && bound; i++ )
     {
         struct xen_domctl_bind_pt_irq bind = {
@@ -814,7 +812,6 @@ static void vpci_msi_disable(const struct pci_dev *pdev, int pirq,
     write_lock(&pdev->domain->event_lock);
     unmap_domain_pirq(pdev->domain, pirq);
     write_unlock(&pdev->domain->event_lock);
-    pcidevs_unlock();
 }
 
 void vpci_msi_arch_disable(struct vpci_msi *msi, const struct pci_dev *pdev)
@@ -854,6 +851,7 @@ int vpci_msix_arch_enable_entry(struct vpci_msix_entry *entry,
     int rc;
 
     ASSERT(entry->arch.pirq == INVALID_PIRQ);
+    ASSERT(rw_is_locked(&pdev->domain->pci_lock));
     rc = vpci_msi_enable(pdev, vmsix_entry_nr(pdev->vpci->msix, entry),
                          table_base);
     if ( rc < 0 )
@@ -861,7 +859,6 @@ int vpci_msix_arch_enable_entry(struct vpci_msix_entry *entry,
 
     entry->arch.pirq = rc;
 
-    pcidevs_lock();
     rc = vpci_msi_update(pdev, entry->data, entry->addr, 1, entry->arch.pirq,
                          entry->masked);
     if ( rc )
@@ -869,7 +866,6 @@ int vpci_msix_arch_enable_entry(struct vpci_msix_entry *entry,
         vpci_msi_disable(pdev, entry->arch.pirq, 1, false);
         entry->arch.pirq = INVALID_PIRQ;
     }
-    pcidevs_unlock();
 
     return rc;
 }
@@ -895,6 +891,8 @@ int vpci_msix_arch_print(const struct vpci_msix *msix)
 {
     unsigned int i;
 
+    ASSERT(rw_is_locked(&msix->pdev->domain->pci_lock));
+
     for ( i = 0; i < msix->max_entries; i++ )
     {
         const struct vpci_msix_entry *entry = &msix->entries[i];
@@ -913,7 +911,9 @@ int vpci_msix_arch_print(const struct vpci_msix *msix)
             struct pci_dev *pdev = msix->pdev;
 
             spin_unlock(&msix->pdev->vpci->lock);
+            read_unlock(&pdev->domain->pci_lock);
             process_pending_softirqs();
+            read_lock(&pdev->domain->pci_lock);
             /* NB: we assume that pdev cannot go away for an alive domain. */
             if ( !pdev->vpci || !spin_trylock(&pdev->vpci->lock) )
                 return -EBUSY;
diff --git a/xen/arch/x86/hvm/vmx/vmx.c b/xen/arch/x86/hvm/vmx/vmx.c
index 8ff675883c2b..890faef48b82 100644
--- a/xen/arch/x86/hvm/vmx/vmx.c
+++ b/xen/arch/x86/hvm/vmx/vmx.c
@@ -413,7 +413,7 @@ static int cf_check vmx_pi_update_irte(const struct vcpu *v,
 
     spin_unlock_irq(&desc->lock);
 
-    ASSERT(pcidevs_locked());
+    ASSERT(pcidevs_locked() || rw_is_locked(&msi_desc->dev->domain->pci_lock));
 
     return iommu_update_ire_from_msi(msi_desc, &msi_desc->msg);
 
diff --git a/xen/arch/x86/irq.c b/xen/arch/x86/irq.c
index 50e49e1a4b6f..4d89d9af99fe 100644
--- a/xen/arch/x86/irq.c
+++ b/xen/arch/x86/irq.c
@@ -2166,7 +2166,7 @@ int map_domain_pirq(
         struct pci_dev *pdev;
         unsigned int nr = 0;
 
-        ASSERT(pcidevs_locked());
+        ASSERT(pcidevs_locked() || rw_is_locked(&d->pci_lock));
 
         ret = -ENODEV;
         if ( !cpu_has_apic )
@@ -2323,7 +2323,7 @@ int unmap_domain_pirq(struct domain *d, int pirq)
     if ( (pirq < 0) || (pirq >= d->nr_pirqs) )
         return -EINVAL;
 
-    ASSERT(pcidevs_locked());
+    ASSERT(pcidevs_locked() || rw_is_locked(&d->pci_lock));
     ASSERT(rw_is_write_locked(&d->event_lock));
 
     info = pirq_info(d, pirq);
@@ -2888,6 +2888,8 @@ int allocate_and_map_msi_pirq(struct domain *d, int index, int *pirq_p,
 {
     int irq, pirq, ret;
 
+    ASSERT(pcidevs_locked() || rw_is_locked(&d->pci_lock));
+
     switch ( type )
     {
     case MAP_PIRQ_TYPE_MSI:
@@ -2917,7 +2919,6 @@ int allocate_and_map_msi_pirq(struct domain *d, int index, int *pirq_p,
 
     msi->irq = irq;
 
-    pcidevs_lock();
     /* Verify or get pirq. */
     write_lock(&d->event_lock);
     pirq = allocate_pirq(d, index, *pirq_p, irq, type, &msi->entry_nr);
@@ -2933,7 +2934,6 @@ int allocate_and_map_msi_pirq(struct domain *d, int index, int *pirq_p,
 
  done:
     write_unlock(&d->event_lock);
-    pcidevs_unlock();
     if ( ret )
     {
         switch ( type )
diff --git a/xen/arch/x86/msi.c b/xen/arch/x86/msi.c
index 335c0868a225..7da2affa2e82 100644
--- a/xen/arch/x86/msi.c
+++ b/xen/arch/x86/msi.c
@@ -602,7 +602,7 @@ static int msi_capability_init(struct pci_dev *dev,
     unsigned int i, mpos;
     uint16_t control;
 
-    ASSERT(pcidevs_locked());
+    ASSERT(pcidevs_locked() || rw_is_locked(&dev->domain->pci_lock));
     pos = pci_find_cap_offset(dev->sbdf, PCI_CAP_ID_MSI);
     if ( !pos )
         return -ENODEV;
@@ -771,7 +771,7 @@ static int msix_capability_init(struct pci_dev *dev,
     if ( !pos )
         return -ENODEV;
 
-    ASSERT(pcidevs_locked());
+    ASSERT(pcidevs_locked() || rw_is_locked(&dev->domain->pci_lock));
 
     control = pci_conf_read16(dev->sbdf, msix_control_reg(pos));
     /*
@@ -988,11 +988,11 @@ static int __pci_enable_msi(struct pci_dev *pdev, struct msi_info *msi,
 {
     struct msi_desc *old_desc;
 
-    ASSERT(pcidevs_locked());
-
     if ( !pdev )
         return -ENODEV;
 
+    ASSERT(pcidevs_locked() || rw_is_locked(&pdev->domain->pci_lock));
+
     old_desc = find_msi_entry(pdev, msi->irq, PCI_CAP_ID_MSI);
     if ( old_desc )
     {
@@ -1043,11 +1043,11 @@ static int __pci_enable_msix(struct pci_dev *pdev, struct msi_info *msi,
 {
     struct msi_desc *old_desc;
 
-    ASSERT(pcidevs_locked());
-
     if ( !pdev || !pdev->msix )
         return -ENODEV;
 
+    ASSERT(pcidevs_locked() || rw_is_locked(&pdev->domain->pci_lock));
+
     if ( msi->entry_nr >= pdev->msix->nr_entries )
         return -EINVAL;
 
@@ -1154,7 +1154,7 @@ int pci_prepare_msix(u16 seg, u8 bus, u8 devfn, bool off)
 int pci_enable_msi(struct pci_dev *pdev, struct msi_info *msi,
                    struct msi_desc **desc)
 {
-    ASSERT(pcidevs_locked());
+    ASSERT(pcidevs_locked() || rw_is_locked(&pdev->domain->pci_lock));
 
     if ( !use_msi )
         return -EPERM;
diff --git a/xen/arch/x86/physdev.c b/xen/arch/x86/physdev.c
index 47c4da0af7e1..369c9e788c1c 100644
--- a/xen/arch/x86/physdev.c
+++ b/xen/arch/x86/physdev.c
@@ -123,7 +123,9 @@ int physdev_map_pirq(domid_t domid, int type, int *index, int *pirq_p,
 
     case MAP_PIRQ_TYPE_MSI:
     case MAP_PIRQ_TYPE_MULTI_MSI:
+        pcidevs_lock();
         ret = allocate_and_map_msi_pirq(d, *index, pirq_p, type, msi);
+        pcidevs_unlock();
         break;
 
     default:
diff --git a/xen/drivers/passthrough/pci.c b/xen/drivers/passthrough/pci.c
index 1439d1ef2b26..3a973324bca1 100644
--- a/xen/drivers/passthrough/pci.c
+++ b/xen/drivers/passthrough/pci.c
@@ -750,7 +750,6 @@ int pci_add_device(u16 seg, u8 bus, u8 devfn,
         pdev->domain = hardware_domain;
         write_lock(&hardware_domain->pci_lock);
         list_add(&pdev->domain_list, &hardware_domain->pdev_list);
-        write_unlock(&hardware_domain->pci_lock);
 
         /*
          * For devices not discovered by Xen during boot, add vPCI handlers
@@ -759,18 +758,18 @@ int pci_add_device(u16 seg, u8 bus, u8 devfn,
         ret = vpci_add_handlers(pdev);
         if ( ret )
         {
-            printk(XENLOG_ERR "Setup of vPCI failed: %d\n", ret);
-            write_lock(&hardware_domain->pci_lock);
             list_del(&pdev->domain_list);
             write_unlock(&hardware_domain->pci_lock);
             pdev->domain = NULL;
+            printk(XENLOG_ERR "Setup of vPCI failed: %d\n", ret);
             goto out;
         }
+        write_unlock(&hardware_domain->pci_lock);
         ret = iommu_add_device(pdev);
         if ( ret )
         {
-            vpci_remove_device(pdev);
             write_lock(&hardware_domain->pci_lock);
+            vpci_remove_device(pdev);
             list_del(&pdev->domain_list);
             write_unlock(&hardware_domain->pci_lock);
             pdev->domain = NULL;
@@ -1146,7 +1145,9 @@ static void __hwdom_init setup_one_hwdom_device(const struct setup_hwdom *ctxt,
     } while ( devfn != pdev->devfn &&
               PCI_SLOT(devfn) == PCI_SLOT(pdev->devfn) );
 
+    write_lock(&ctxt->d->pci_lock);
     err = vpci_add_handlers(pdev);
+    write_unlock(&ctxt->d->pci_lock);
     if ( err )
         printk(XENLOG_ERR "setup of vPCI for d%d failed: %d\n",
                ctxt->d->domain_id, err);
diff --git a/xen/drivers/vpci/header.c b/xen/drivers/vpci/header.c
index 58195549d50a..8f5850b8cf6d 100644
--- a/xen/drivers/vpci/header.c
+++ b/xen/drivers/vpci/header.c
@@ -173,6 +173,7 @@ bool vpci_process_pending(struct vcpu *v)
         if ( rc == -ERESTART )
             return true;
 
+        write_lock(&v->domain->pci_lock);
         spin_lock(&v->vpci.pdev->vpci->lock);
         /* Disable memory decoding unconditionally on failure. */
         modify_decoding(v->vpci.pdev,
@@ -191,6 +192,7 @@ bool vpci_process_pending(struct vcpu *v)
              * failure.
              */
             vpci_remove_device(v->vpci.pdev);
+        write_unlock(&v->domain->pci_lock);
     }
 
     return false;
@@ -202,8 +204,20 @@ static int __init apply_map(struct domain *d, const struct pci_dev *pdev,
     struct map_data data = { .d = d, .map = true };
     int rc;
 
+    ASSERT(rw_is_write_locked(&d->pci_lock));
+
     while ( (rc = rangeset_consume_ranges(mem, map_range, &data)) == -ERESTART )
+    {
+        /*
+         * It's safe to drop and reacquire the lock in this context
+         * without risking pdev disappearing because devices cannot be
+         * removed until the initial domain has been started.
+         */
+        write_unlock(&d->pci_lock);
         process_pending_softirqs();
+        write_lock(&d->pci_lock);
+    }
+
     rangeset_destroy(mem);
     if ( !rc )
         modify_decoding(pdev, cmd, false);
@@ -244,6 +258,8 @@ static int modify_bars(const struct pci_dev *pdev, uint16_t cmd, bool rom_only)
     unsigned int i;
     int rc;
 
+    ASSERT(rw_is_write_locked(&pdev->domain->pci_lock));
+
     if ( !mem )
         return -ENOMEM;
 
@@ -524,6 +540,8 @@ static int cf_check init_header(struct pci_dev *pdev)
     int rc;
     bool mask_cap_list = false;
 
+    ASSERT(rw_is_write_locked(&pdev->domain->pci_lock));
+
     switch ( pci_conf_read8(pdev->sbdf, PCI_HEADER_TYPE) & 0x7f )
     {
     case PCI_HEADER_TYPE_NORMAL:
diff --git a/xen/drivers/vpci/msi.c b/xen/drivers/vpci/msi.c
index a253ccbd7db7..6ff71e5f9ab7 100644
--- a/xen/drivers/vpci/msi.c
+++ b/xen/drivers/vpci/msi.c
@@ -263,7 +263,7 @@ REGISTER_VPCI_INIT(init_msi, VPCI_PRIORITY_LOW);
 
 void vpci_dump_msi(void)
 {
-    const struct domain *d;
+    struct domain *d;
 
     rcu_read_lock(&domlist_read_lock);
     for_each_domain ( d )
@@ -275,6 +275,9 @@ void vpci_dump_msi(void)
 
         printk("vPCI MSI/MSI-X d%d\n", d->domain_id);
 
+        if ( !read_trylock(&d->pci_lock) )
+            continue;
+
         for_each_pdev ( d, pdev )
         {
             const struct vpci_msi *msi;
@@ -316,14 +319,33 @@ void vpci_dump_msi(void)
                      * holding the lock.
                      */
                     printk("unable to print all MSI-X entries: %d\n", rc);
-                    process_pending_softirqs();
-                    continue;
+                    goto pdev_done;
                 }
             }
 
             spin_unlock(&pdev->vpci->lock);
+        pdev_done:
+            /*
+             * Unlock lock to process pending softirqs. This is
+             * potentially unsafe, as d->pdev_list can be changed in
+             * meantime.
+             */
+            read_unlock(&d->pci_lock);
             process_pending_softirqs();
+            if ( !read_trylock(&d->pci_lock) )
+            {
+                printk("unable to access other devices for the domain\n");
+                goto domain_done;
+            }
         }
+        read_unlock(&d->pci_lock);
+    domain_done:
+        /*
+         * We need this label at the end of the loop, but some
+         * compilers might not be happy about label at the end of the
+         * compound statement so we adding an empty statement here.
+         */
+        ;
     }
     rcu_read_unlock(&domlist_read_lock);
 }
diff --git a/xen/drivers/vpci/msix.c b/xen/drivers/vpci/msix.c
index d1126a417da9..b6abab47efdd 100644
--- a/xen/drivers/vpci/msix.c
+++ b/xen/drivers/vpci/msix.c
@@ -147,6 +147,8 @@ static struct vpci_msix *msix_find(const struct domain *d, unsigned long addr)
 {
     struct vpci_msix *msix;
 
+    ASSERT(rw_is_locked(&d->pci_lock));
+
     list_for_each_entry ( msix, &d->arch.hvm.msix_tables, next )
     {
         const struct vpci_bar *bars = msix->pdev->vpci->header.bars;
@@ -163,7 +165,13 @@ static struct vpci_msix *msix_find(const struct domain *d, unsigned long addr)
 
 static int cf_check msix_accept(struct vcpu *v, unsigned long addr)
 {
-    return !!msix_find(v->domain, addr);
+    int rc;
+
+    read_lock(&v->domain->pci_lock);
+    rc = !!msix_find(v->domain, addr);
+    read_unlock(&v->domain->pci_lock);
+
+    return rc;
 }
 
 static bool access_allowed(const struct pci_dev *pdev, unsigned long addr,
@@ -358,21 +366,35 @@ static int adjacent_read(const struct domain *d, const struct vpci_msix *msix,
 static int cf_check msix_read(
     struct vcpu *v, unsigned long addr, unsigned int len, unsigned long *data)
 {
-    const struct domain *d = v->domain;
-    struct vpci_msix *msix = msix_find(d, addr);
+    struct domain *d = v->domain;
+    struct vpci_msix *msix;
     const struct vpci_msix_entry *entry;
     unsigned int offset;
 
     *data = ~0UL;
 
+    read_lock(&d->pci_lock);
+
+    msix = msix_find(d, addr);
     if ( !msix )
+    {
+        read_unlock(&d->pci_lock);
         return X86EMUL_RETRY;
+    }
 
     if ( adjacent_handle(msix, addr) )
-        return adjacent_read(d, msix, addr, len, data);
+    {
+        int rc = adjacent_read(d, msix, addr, len, data);
+
+        read_unlock(&d->pci_lock);
+        return rc;
+    }
 
     if ( !access_allowed(msix->pdev, addr, len) )
+    {
+        read_unlock(&d->pci_lock);
         return X86EMUL_OKAY;
+    }
 
     spin_lock(&msix->pdev->vpci->lock);
     entry = get_entry(msix, addr);
@@ -404,6 +426,7 @@ static int cf_check msix_read(
         break;
     }
     spin_unlock(&msix->pdev->vpci->lock);
+    read_unlock(&d->pci_lock);
 
     return X86EMUL_OKAY;
 }
@@ -491,19 +514,33 @@ static int adjacent_write(const struct domain *d, const struct vpci_msix *msix,
 static int cf_check msix_write(
     struct vcpu *v, unsigned long addr, unsigned int len, unsigned long data)
 {
-    const struct domain *d = v->domain;
-    struct vpci_msix *msix = msix_find(d, addr);
+    struct domain *d = v->domain;
+    struct vpci_msix *msix;
     struct vpci_msix_entry *entry;
     unsigned int offset;
 
+    read_lock(&d->pci_lock);
+
+    msix = msix_find(d, addr);
     if ( !msix )
+    {
+        read_unlock(&d->pci_lock);
         return X86EMUL_RETRY;
+    }
 
     if ( adjacent_handle(msix, addr) )
-        return adjacent_write(d, msix, addr, len, data);
+    {
+        int rc = adjacent_write(d, msix, addr, len, data);
+
+        read_unlock(&d->pci_lock);
+        return rc;
+    }
 
     if ( !access_allowed(msix->pdev, addr, len) )
+    {
+        read_unlock(&d->pci_lock);
         return X86EMUL_OKAY;
+    }
 
     spin_lock(&msix->pdev->vpci->lock);
     entry = get_entry(msix, addr);
@@ -579,6 +616,7 @@ static int cf_check msix_write(
         break;
     }
     spin_unlock(&msix->pdev->vpci->lock);
+    read_unlock(&d->pci_lock);
 
     return X86EMUL_OKAY;
 }
diff --git a/xen/drivers/vpci/vpci.c b/xen/drivers/vpci/vpci.c
index 72ef277c4f8e..a1a004460491 100644
--- a/xen/drivers/vpci/vpci.c
+++ b/xen/drivers/vpci/vpci.c
@@ -42,6 +42,8 @@ extern vpci_register_init_t *const __end_vpci_array[];
 
 void vpci_remove_device(struct pci_dev *pdev)
 {
+    ASSERT(rw_is_write_locked(&pdev->domain->pci_lock));
+
     if ( !has_vpci(pdev->domain) || !pdev->vpci )
         return;
 
@@ -77,6 +79,8 @@ int vpci_add_handlers(struct pci_dev *pdev)
     const unsigned long *ro_map;
     int rc = 0;
 
+    ASSERT(rw_is_write_locked(&pdev->domain->pci_lock));
+
     if ( !has_vpci(pdev->domain) )
         return 0;
 
@@ -361,7 +365,7 @@ static uint32_t merge_result(uint32_t data, uint32_t new, unsigned int size,
 
 uint32_t vpci_read(pci_sbdf_t sbdf, unsigned int reg, unsigned int size)
 {
-    const struct domain *d = current->domain;
+    struct domain *d = current->domain;
     const struct pci_dev *pdev;
     const struct vpci_register *r;
     unsigned int data_offset = 0;
@@ -375,13 +379,19 @@ uint32_t vpci_read(pci_sbdf_t sbdf, unsigned int reg, unsigned int size)
 
     /*
      * Find the PCI dev matching the address, which for hwdom also requires
-     * consulting DomXEN.  Passthrough everything that's not trapped.
+     * consulting DomXEN. Passthrough everything that's not trapped.
+     * If this is hwdom and the device is assigned to dom_xen, acquiring hwdom's
+     * pci_lock is sufficient.
      */
+    read_lock(&d->pci_lock);
     pdev = pci_get_pdev(d, sbdf);
     if ( !pdev && is_hardware_domain(d) )
         pdev = pci_get_pdev(dom_xen, sbdf);
     if ( !pdev || !pdev->vpci )
+    {
+        read_unlock(&d->pci_lock);
         return vpci_read_hw(sbdf, reg, size);
+    }
 
     spin_lock(&pdev->vpci->lock);
 
@@ -428,6 +438,7 @@ uint32_t vpci_read(pci_sbdf_t sbdf, unsigned int reg, unsigned int size)
         ASSERT(data_offset < size);
     }
     spin_unlock(&pdev->vpci->lock);
+    read_unlock(&d->pci_lock);
 
     if ( data_offset < size )
     {
@@ -470,7 +481,7 @@ static void vpci_write_helper(const struct pci_dev *pdev,
 void vpci_write(pci_sbdf_t sbdf, unsigned int reg, unsigned int size,
                 uint32_t data)
 {
-    const struct domain *d = current->domain;
+    struct domain *d = current->domain;
     const struct pci_dev *pdev;
     const struct vpci_register *r;
     unsigned int data_offset = 0;
@@ -483,8 +494,14 @@ void vpci_write(pci_sbdf_t sbdf, unsigned int reg, unsigned int size,
 
     /*
      * Find the PCI dev matching the address, which for hwdom also requires
-     * consulting DomXEN.  Passthrough everything that's not trapped.
+     * consulting DomXEN. Passthrough everything that's not trapped.
+     * If this is hwdom and the device is assigned to dom_xen, acquiring hwdom's
+     * pci_lock is sufficient.
+     *
+     * TODO: We need to take pci_locks in exclusive mode only if we
+     * are modifying BARs, so there is a room for improvement.
      */
+    write_lock(&d->pci_lock);
     pdev = pci_get_pdev(d, sbdf);
     if ( !pdev && is_hardware_domain(d) )
         pdev = pci_get_pdev(dom_xen, sbdf);
@@ -493,6 +510,8 @@ void vpci_write(pci_sbdf_t sbdf, unsigned int reg, unsigned int size,
         /* Ignore writes to read-only devices, which have no ->vpci. */
         const unsigned long *ro_map = pci_get_ro_map(sbdf.seg);
 
+        write_unlock(&d->pci_lock);
+
         if ( !ro_map || !test_bit(sbdf.bdf, ro_map) )
             vpci_write_hw(sbdf, reg, size, data);
         return;
@@ -534,6 +553,7 @@ void vpci_write(pci_sbdf_t sbdf, unsigned int reg, unsigned int size,
         ASSERT(data_offset < size);
     }
     spin_unlock(&pdev->vpci->lock);
+    write_unlock(&d->pci_lock);
 
     if ( data_offset < size )
         /* Tailing gap, write the remaining. */
diff --git a/xen/include/xen/sched.h b/xen/include/xen/sched.h
index 9da91e0e6244..37f5922f3206 100644
--- a/xen/include/xen/sched.h
+++ b/xen/include/xen/sched.h
@@ -462,7 +462,8 @@ struct domain
 #ifdef CONFIG_HAS_PCI
     struct list_head pdev_list;
     /*
-     * pci_lock protects access to pdev_list.
+     * pci_lock protects access to pdev_list. pci_lock also protects pdev->vpci
+     * structure from being removed.
      *
      * Any user *reading* from pdev_list, or from devices stored in pdev_list,
      * should hold either pcidevs_lock() or pci_lock in read mode. Optionally,
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Tue Jan 09 21:52:26 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 09 Jan 2024 21:52:26 +0000
Received: from list by lists.xenproject.org with outflank-mailman.665013.1035191 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNK1K-00087F-Jy; Tue, 09 Jan 2024 21:52:26 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 665013.1035191; Tue, 09 Jan 2024 21:52:26 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNK1K-000878-HC; Tue, 09 Jan 2024 21:52:26 +0000
Received: by outflank-mailman (input) for mailman id 665013;
 Tue, 09 Jan 2024 21:52:25 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=ONpl=IT=amd.com=Stewart.Hildebrand@srs-se1.protection.inumbo.net>)
 id 1rNK1J-0007gG-Ls
 for xen-devel@lists.xenproject.org; Tue, 09 Jan 2024 21:52:25 +0000
Received: from NAM12-DM6-obe.outbound.protection.outlook.com
 (mail-dm6nam12on20601.outbound.protection.outlook.com
 [2a01:111:f403:2417::601])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 5ecfc8e2-af39-11ee-9b0f-b553b5be7939;
 Tue, 09 Jan 2024 22:52:23 +0100 (CET)
Received: from SJ0PR05CA0083.namprd05.prod.outlook.com (2603:10b6:a03:332::28)
 by PH0PR12MB8049.namprd12.prod.outlook.com (2603:10b6:510:28f::17)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7159.21; Tue, 9 Jan
 2024 21:52:20 +0000
Received: from SJ1PEPF00001CE4.namprd03.prod.outlook.com
 (2603:10b6:a03:332:cafe::4f) by SJ0PR05CA0083.outlook.office365.com
 (2603:10b6:a03:332::28) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7181.15 via Frontend
 Transport; Tue, 9 Jan 2024 21:52:19 +0000
Received: from SATLEXMB03.amd.com (165.204.84.17) by
 SJ1PEPF00001CE4.mail.protection.outlook.com (10.167.242.20) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.7181.14 via Frontend Transport; Tue, 9 Jan 2024 21:52:19 +0000
Received: from SATLEXMB05.amd.com (10.181.40.146) by SATLEXMB03.amd.com
 (10.181.40.144) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.34; Tue, 9 Jan
 2024 15:52:19 -0600
Received: from SATLEXMB04.amd.com (10.181.40.145) by SATLEXMB05.amd.com
 (10.181.40.146) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.34; Tue, 9 Jan
 2024 15:52:18 -0600
Received: from ubuntu.mshome.net (10.180.168.240) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server id 15.1.2507.34 via Frontend
 Transport; Tue, 9 Jan 2024 15:52:17 -0600
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 5ecfc8e2-af39-11ee-9b0f-b553b5be7939
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=Q9l3UghIyVCk+1hN3vH0tk526Pob2VuTeo94lsGNFBtDSSwSK7DFc5g9/ol4gtLiZOe1+VqOM18gQpm+4uU5XaljF03RXYzTJJBY8L8FUKo9ofq4duBDKZHA5cfEConNZbdeGD+i9LSjcdgjqVdSoYvrEIFsFqRzseWd579o0gpO/4II82TnU30oOjr9qunayZHXend9D5uKTg4mxbqk0VOIeyAQ9W+Cq9CjEiK7EFT9ANOZCjTlt++3vfpYPFa8r3WPBUUnnlKnfgLDZvKMoCGzkIvMaYpBTcLeTNlZC+JF6Q6bxJgtWt/gfiRINYqDi1MAdeWO6N1DUiHJXimvdw==
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=XB9PkT1l9t41YyMel2hU6TA5dMUGiXDLX5RX/vyOjHw=;
 b=VplYJ5P2tEeLBuOC12g+mizsei1kldMX4XbxIaYezuSKi45cJp6fGLlClfMZf03wY9tJ4crvD9Nhdj/pY08RooYp4e5lFDAzX+kxtplLB5WZZfZncLQnWF2UKRNiBwHVF+9vSylKcZ7r8n3b6GWu6fnESMQ9ymCmXzyGvJ29A0dgv0F/POcJPk8oBbl1Y3I2Ll2Q3i1yf5esdn3lOfc48ZSl8UVgJQeCSK5S36eCoCoOYCMURXQXtarfDlz8i0WI7Vq2ixhuAxTadCoAABVQahqhl/FIwzF7o5fIMUXHuLAbrsrFiX1RnGMiZ6ZDG/2ANYBtOCPAJvBAaJek+wtpGw==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=lists.xenproject.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)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=XB9PkT1l9t41YyMel2hU6TA5dMUGiXDLX5RX/vyOjHw=;
 b=AJxgA/DpUp5i2xH+4coEsrkxA9s2y2wPhbWPM5vqekBj9HT4LRhxHl03E5B2WLJjoATaW9qDUp4wp+eQ7cOqttz+V5t+Wp/HEhfxjTBwul2m+LDDPQIt2kLFqJyPljeqsULfr7gqErY3K51F02KoKUJlANgLJt6w2MRFC9lfP+4=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=SATLEXMB03.amd.com; pr=C
From: Stewart Hildebrand <stewart.hildebrand@amd.com>
To: <xen-devel@lists.xenproject.org>
CC: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>, "Volodymyr
 Babchuk" <volodymyr_babchuk@epam.com>, Stewart Hildebrand
	<stewart.hildebrand@amd.com>
Subject: [PATCH v12 02/15] vpci: restrict unhandled read/write operations for guests
Date: Tue, 9 Jan 2024 16:51:17 -0500
Message-ID: <20240109215145.430207-3-stewart.hildebrand@amd.com>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20240109215145.430207-1-stewart.hildebrand@amd.com>
References: <20240109215145.430207-1-stewart.hildebrand@amd.com>
MIME-Version: 1.0
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: SJ1PEPF00001CE4:EE_|PH0PR12MB8049:EE_
X-MS-Office365-Filtering-Correlation-Id: ea1f000d-31b2-46cc-7f96-08dc115d40ec
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam: BCL:0;
X-Microsoft-Antispam-Message-Info:
	TweVXBUv8JtOkDCyh0xJ7XapFlUQKNLX26/pESydd7yWJocdiF3Ca0vuU+NRApmXIjsXAPAYj1VW94zwwLdZEiZfg4R4x6n2d4gqbDNGom6exdLuKRt3pOkrPPKVh/l7nv/ePME1xYnCilo+PWjinCCzABcgH5koivVYAFiBgaBBm8B/95YOA3qCs+iZVhI/UrNavV5/YMs3Jok53NInh9lFzE1f1E86cbVkESeyjYWR7CiTThqYqJhLRI90gZY0wi1cgITdr8Xj6x8KcxDcZUIc6iYon1lpTyw5iuW5EriwbepEasNVOlAYkdkKqRHTIgOcjtb+XvRRtOEDnIRD49DTdB40JgojdnOh2NweuEm66dRK1P36AnKGYuPZAKBndWIPRnmjXhcFQZGzsb9i7/ms10u8Rbpy3oXyyI+KXtHZRZn8KTOut+132fzUtnSIZtyeuCD4IG+Ty6Gt+bmckWLbB8hUnqJC4SvHO9XWdbEttYvesHaFJNyroREhcyBIl2TrONIMCwmqcWt5A0vG1ockRkuFc/epOCgEYMqLxH1O+0bT2AFtKu/t4aYGTYL/yF5LqRnIL6FIhXCqhAL3/UidCNywjq/OKwQmrnQVmKjgO0pkuliZuTTBfzcMyqg/KJQQlM5UoYwQZ0Anvotf7c44ng+6BZ5OyQ8McqbZOv3QBrRKQ21VGn3Q6vwSbKjzf7Mp4p3AuyDQo45kfpzsTPX+ZSb9lti84rb9YXg4/HE5DIKQ3tsSgVZV5gWwGjcRtXBExqN3xnHwSMdE+OcFGQ==
X-Forefront-Antispam-Report:
	CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB03.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230031)(4636009)(376002)(396003)(39860400002)(136003)(346002)(230922051799003)(451199024)(64100799003)(186009)(1800799012)(82310400011)(40470700004)(36840700001)(46966006)(36860700001)(478600001)(82740400003)(47076005)(40460700003)(40480700001)(81166007)(356005)(83380400001)(426003)(336012)(8676002)(26005)(2616005)(2906002)(316002)(5660300002)(44832011)(54906003)(8936002)(6916009)(36756003)(70206006)(86362001)(1076003)(4326008)(70586007)(41300700001)(36900700001);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Jan 2024 21:52:19.7545
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: ea1f000d-31b2-46cc-7f96-08dc115d40ec
X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB03.amd.com]
X-MS-Exchange-CrossTenant-AuthSource:
	SJ1PEPF00001CE4.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR12MB8049

From: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>

A guest would be able to read and write those registers which are not
emulated and have no respective vPCI handlers, so it will be possible
for it to access the hardware directly.
In order to prevent a guest from reads and writes from/to the unhandled
registers make sure only hardware domain can access the hardware directly
and restrict guests from doing so.

Suggested-by: Roger Pau Monné <roger.pau@citrix.com>
Signed-off-by: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>
Signed-off-by: Volodymyr Babchuk <volodymyr_babchuk@epam.com>
Reviewed-by: Roger Pau Monné <roger.pau@citrix.com>
Signed-off-by: Stewart Hildebrand <stewart.hildebrand@amd.com>
---
Since v9:
- removed stray formatting change
- added Roger's R-b tag
Since v6:
- do not use is_hwdom parameter for vpci_{read|write}_hw and use
  current->domain internally
- update commit message
New in v6
---
 xen/drivers/vpci/vpci.c | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/xen/drivers/vpci/vpci.c b/xen/drivers/vpci/vpci.c
index a1a004460491..e98693e1dc3e 100644
--- a/xen/drivers/vpci/vpci.c
+++ b/xen/drivers/vpci/vpci.c
@@ -268,6 +268,10 @@ static uint32_t vpci_read_hw(pci_sbdf_t sbdf, unsigned int reg,
 {
     uint32_t data;
 
+    /* Guest domains are not allowed to read real hardware. */
+    if ( !is_hardware_domain(current->domain) )
+        return ~(uint32_t)0;
+
     switch ( size )
     {
     case 4:
@@ -311,6 +315,10 @@ static uint32_t vpci_read_hw(pci_sbdf_t sbdf, unsigned int reg,
 static void vpci_write_hw(pci_sbdf_t sbdf, unsigned int reg, unsigned int size,
                           uint32_t data)
 {
+    /* Guest domains are not allowed to write real hardware. */
+    if ( !is_hardware_domain(current->domain) )
+        return;
+
     switch ( size )
     {
     case 4:
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Tue Jan 09 21:52:43 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 09 Jan 2024 21:52:43 +0000
Received: from list by lists.xenproject.org with outflank-mailman.665018.1035201 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNK1a-0000Kt-TW; Tue, 09 Jan 2024 21:52:42 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 665018.1035201; Tue, 09 Jan 2024 21:52:42 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNK1a-0000Kk-Qj; Tue, 09 Jan 2024 21:52:42 +0000
Received: by outflank-mailman (input) for mailman id 665018;
 Tue, 09 Jan 2024 21:52:41 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=ONpl=IT=amd.com=Stewart.Hildebrand@srs-se1.protection.inumbo.net>)
 id 1rNK1Z-0007gG-H2
 for xen-devel@lists.xenproject.org; Tue, 09 Jan 2024 21:52:41 +0000
Received: from NAM10-DM6-obe.outbound.protection.outlook.com
 (mail-dm6nam10on2061d.outbound.protection.outlook.com
 [2a01:111:f400:7e88::61d])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 67b647c9-af39-11ee-9b0f-b553b5be7939;
 Tue, 09 Jan 2024 22:52:39 +0100 (CET)
Received: from BYAPR07CA0038.namprd07.prod.outlook.com (2603:10b6:a03:60::15)
 by IA1PR12MB8222.namprd12.prod.outlook.com (2603:10b6:208:3f2::11)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7159.21; Tue, 9 Jan
 2024 21:52:32 +0000
Received: from SJ1PEPF00001CEB.namprd03.prod.outlook.com
 (2603:10b6:a03:60:cafe::76) by BYAPR07CA0038.outlook.office365.com
 (2603:10b6:a03:60::15) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7159.23 via Frontend
 Transport; Tue, 9 Jan 2024 21:52:32 +0000
Received: from SATLEXMB03.amd.com (165.204.84.17) by
 SJ1PEPF00001CEB.mail.protection.outlook.com (10.167.242.27) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.7181.14 via Frontend Transport; Tue, 9 Jan 2024 21:52:31 +0000
Received: from SATLEXMB08.amd.com (10.181.40.132) by SATLEXMB03.amd.com
 (10.181.40.144) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.34; Tue, 9 Jan
 2024 15:52:31 -0600
Received: from SATLEXMB04.amd.com (10.181.40.145) by SATLEXMB08.amd.com
 (10.181.40.132) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.32; Tue, 9 Jan
 2024 13:52:30 -0800
Received: from ubuntu.mshome.net (10.180.168.240) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server id 15.1.2507.34 via Frontend
 Transport; Tue, 9 Jan 2024 15:52:29 -0600
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 67b647c9-af39-11ee-9b0f-b553b5be7939
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=fPbIe4AGfLg5H0PbZGcMsjYQlGEej/LE1fqXDyhwi7toYFEj7KYD49a0/IqrxKH60x4CuikZhw9PVCTs1F2Bg7lbqEyqy2UCfeHyx/6XX59RwmNXjNJZtS4am8G/UF2XBFCwc2JJ+KlqzsQ2begBdo38JuDQUzPPVPZ9WelEx3VQQIfVe0anhMwCANcwk5MEf+J2KrLpt/2Jo/slg7sZB3ENwLw5U+fyESTciZre4avZtpQS8+NHUDIIXgsvOlqwPSWhsMefADQwDlTzZOPIAM7/WnSUXb9kXE5zeoxA8g5LDkFU7orRTkEHI7WJj3G3BMGbCwxIpmAOzl3x1Amg/g==
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=E94DHi+8iv4ojBdqEJ1iMS9iLwhVWhZwG3WSVolNNZs=;
 b=TJKuLxN/j36qbc5UEdXNe7W1jlepvl+EmE6BLK/Z9lhgJ1umW8m6pxtERrTmn3v6Xn6QxnzTUIP7x1DBplWedEc0/U2m8X/c8/orHCOxaa47pRr6gsy/8657rMvkbXjLVXmD5BqZCVSELb9LEiXwDY0/saRbjHB8wx2N2XKw5b0fAJXVJvAcOVp/tgs4RN6hnUtjYKHUnxFLMStCbLIdWqVXTyijAQyGZONGq9Qux/QEq+WCo5LVEk6MCjdubte0oWe7CSsUFyEtHJi8xuSrBLsPWxy7YMkmXSV1lKvHjXXZbFYQWOar+4KUgrMr8PLPb7tbNaa8N2J4HoyoueCwCw==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=lists.xenproject.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)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=E94DHi+8iv4ojBdqEJ1iMS9iLwhVWhZwG3WSVolNNZs=;
 b=voZTB7MskqiJBx8TjC9BHBKzn/J+EeCWUYSlFtt9GULzDleqPMtPSD55PxNRdco7NaAGrN22wwHdeDPC9gplRFgMYi7llkBLLpqJnkX1oMUYNYLvcuXfxA5XzFWckesDRHwUGAo/YJ35DA4zT/2zRCM2FrGttKN1dWDn7Q+Oe7A=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=SATLEXMB03.amd.com; pr=C
From: Stewart Hildebrand <stewart.hildebrand@amd.com>
To: <xen-devel@lists.xenproject.org>
CC: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>, Jan Beulich
	<jbeulich@suse.com>, Paul Durrant <paul@xen.org>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>, "Volodymyr
 Babchuk" <volodymyr_babchuk@epam.com>, Stewart Hildebrand
	<stewart.hildebrand@amd.com>
Subject: [PATCH v12 03/15] vpci: add hooks for PCI device assign/de-assign
Date: Tue, 9 Jan 2024 16:51:18 -0500
Message-ID: <20240109215145.430207-4-stewart.hildebrand@amd.com>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20240109215145.430207-1-stewart.hildebrand@amd.com>
References: <20240109215145.430207-1-stewart.hildebrand@amd.com>
MIME-Version: 1.0
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: SJ1PEPF00001CEB:EE_|IA1PR12MB8222:EE_
X-MS-Office365-Filtering-Correlation-Id: c8a76ff7-9028-4648-a64c-08dc115d47fb
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam: BCL:0;
X-Microsoft-Antispam-Message-Info:
	7T229zm9TmGhKkB5r1olrQAAAYXaH9dfzplmQvd/w9VYONGVkJp9z3WF+JellbLR37bz/rOuXkqtcJ9OXMt0HwmqFoJaxLmW+g7AdIpAB3pKJ66SHWAJDEq0Y8MR0G5mbkzHattZFH4bvxj7T/gPmX430Bc6wDZ9lwTfycZodnSHnUsWbhdFEEeF+eXJUZ3YI8ngYANvtJ6H5Ybs+ZtQghrSnYcQCKnv7LTbX16iVN2V7GOseNXPqcUrYYQ4JX6aXK6xn2vVyv3Uk6E7Te37tTOM9LVeaDVUSNy/j7UDVzhM2RAlHA3FoAkjAckecRoyw/8ZVR/YkXDk5TnJ9RYVORjcqXOfcQ4aFEKe/X/Y35jLXpEbuD3yMqzxEslugV0kNeDTnMU7U9N9UANB+6ZpDJI9KNYwNmxaU2TKb+BoEQ0+z8Tpy5kj82aZz9NwMXJt7EPfiQe4LWqTX+64mbrSlxi2j9LPnihsxNg8IorqKri+GiSDBmltQOincMFOFjT8YDQuu6dBN/4tuR8yV+Leobvx7sfSx+gJvrKe/CqKfay96RHlEgYH8Mb9PdIimqw+3NnAhLSmwHxHMb2aepuJxx6Nds4w6Ykyzr9J0BpKXuTbjMv4cS5v4VEm67gA+Bp0BfvMFLM9gZq3YmZDGnHOjSS4OvrjdYTYRUfl6pzjLxZFEbVKNQgkhBpruaXtZNRKghGJHP5+XG5jPwyi8wvDe88PPVfZliayOE1t5Mt1fDAByNAzT72a3dOjf+0BLonUvlRxgSxSytDwyhZT3XB2iRp2OFlofmnAdeYj45CNYTPqx8JcYa9jXmqazGi7hRGa
X-Forefront-Antispam-Report:
	CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB03.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230031)(4636009)(346002)(39860400002)(136003)(376002)(396003)(230922051799003)(230273577357003)(230173577357003)(1800799012)(82310400011)(186009)(451199024)(64100799003)(36840700001)(46966006)(40470700004)(36860700001)(47076005)(2906002)(2616005)(70586007)(1076003)(70206006)(41300700001)(86362001)(40480700001)(26005)(40460700003)(36756003)(82740400003)(356005)(81166007)(5660300002)(54906003)(316002)(426003)(336012)(6666004)(4326008)(44832011)(6916009)(478600001)(83380400001)(8936002)(8676002)(36900700001);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Jan 2024 21:52:31.5822
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: c8a76ff7-9028-4648-a64c-08dc115d47fb
X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB03.amd.com]
X-MS-Exchange-CrossTenant-AuthSource:
	SJ1PEPF00001CEB.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA1PR12MB8222

From: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>

When a PCI device gets assigned/de-assigned we need to
initialize/de-initialize vPCI state for the device.

Also, rename vpci_add_handlers() to vpci_assign_device() and
vpci_remove_device() to vpci_deassign_device() to better reflect role
of the functions.

Signed-off-by: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>
Signed-off-by: Volodymyr Babchuk <volodymyr_babchuk@epam.com>
Reviewed-by: Roger Pau Monné <roger.pau@citrix.com>
Signed-off-by: Stewart Hildebrand <stewart.hildebrand@amd.com>
---
In v12:
 - Add Roger's R-b
 - Clean up comment in xen/include/xen/vpci.h
 - Add comment in xen/drivers/passthrough/pci.c:deassign_device() to
   clarify vpci_assign_device() call
In v11:
- Call vpci_assign_device() in "deassign_device" if IOMMU call
"reassign_device" was successful.
In v10:
- removed HAS_VPCI_GUEST_SUPPORT checks
- HAS_VPCI_GUEST_SUPPORT config option (in Kconfig) as it is not used
  anywhere
In v9:
- removed previous  vpci_[de]assign_device function and renamed
  existing handlers
- dropped attempts to handle errors in assign_device() function
- do not call vpci_assign_device for dom_io
- use d instead of pdev->domain
- use IS_ENABLED macro
In v8:
- removed vpci_deassign_device
In v6:
- do not pass struct domain to vpci_{assign|deassign}_device as
  pdev->domain can be used
- do not leave the device assigned (pdev->domain == new domain) in case
  vpci_assign_device fails: try to de-assign and if this also fails, then
  crash the domain
In v5:
- do not split code into run_vpci_init
- do not check for is_system_domain in vpci_{de}assign_device
- do not use vpci_remove_device_handlers_locked and re-allocate
  pdev->vpci completely
- make vpci_deassign_device void
In v4:
 - de-assign vPCI from the previous domain on device assignment
 - do not remove handlers in vpci_assign_device as those must not
   exist at that point
In v3:
 - remove toolstack roll-back description from the commit message
   as error are to be handled with proper cleanup in Xen itself
 - remove __must_check
 - remove redundant rc check while assigning devices
 - fix redundant CONFIG_HAS_VPCI check for CONFIG_HAS_VPCI_GUEST_SUPPORT
 - use REGISTER_VPCI_INIT machinery to run required steps on device
   init/assign: add run_vpci_init helper
In v2:
- define CONFIG_HAS_VPCI_GUEST_SUPPORT so dead code is not compiled
  for x86
In v1:
 - constify struct pci_dev where possible
 - do not open code is_system_domain()
 - extended the commit message
---
 xen/drivers/passthrough/pci.c | 25 +++++++++++++++++++++----
 xen/drivers/vpci/header.c     |  2 +-
 xen/drivers/vpci/vpci.c       |  6 +++---
 xen/include/xen/vpci.h        | 10 +++++-----
 4 files changed, 30 insertions(+), 13 deletions(-)

diff --git a/xen/drivers/passthrough/pci.c b/xen/drivers/passthrough/pci.c
index 3a973324bca1..a902de6a8693 100644
--- a/xen/drivers/passthrough/pci.c
+++ b/xen/drivers/passthrough/pci.c
@@ -755,7 +755,7 @@ int pci_add_device(u16 seg, u8 bus, u8 devfn,
          * For devices not discovered by Xen during boot, add vPCI handlers
          * when Dom0 first informs Xen about such devices.
          */
-        ret = vpci_add_handlers(pdev);
+        ret = vpci_assign_device(pdev);
         if ( ret )
         {
             list_del(&pdev->domain_list);
@@ -769,7 +769,7 @@ int pci_add_device(u16 seg, u8 bus, u8 devfn,
         if ( ret )
         {
             write_lock(&hardware_domain->pci_lock);
-            vpci_remove_device(pdev);
+            vpci_deassign_device(pdev);
             list_del(&pdev->domain_list);
             write_unlock(&hardware_domain->pci_lock);
             pdev->domain = NULL;
@@ -817,7 +817,7 @@ int pci_remove_device(u16 seg, u8 bus, u8 devfn)
     list_for_each_entry ( pdev, &pseg->alldevs_list, alldevs_list )
         if ( pdev->bus == bus && pdev->devfn == devfn )
         {
-            vpci_remove_device(pdev);
+            vpci_deassign_device(pdev);
             pci_cleanup_msi(pdev);
             ret = iommu_remove_device(pdev);
             if ( pdev->domain )
@@ -875,6 +875,10 @@ static int deassign_device(struct domain *d, uint16_t seg, uint8_t bus,
             goto out;
     }
 
+    write_lock(&d->pci_lock);
+    vpci_deassign_device(pdev);
+    write_unlock(&d->pci_lock);
+
     devfn = pdev->devfn;
     ret = iommu_call(hd->platform_ops, reassign_device, d, target, devfn,
                      pci_to_dev(pdev));
@@ -886,6 +890,11 @@ static int deassign_device(struct domain *d, uint16_t seg, uint8_t bus,
 
     pdev->fault.count = 0;
 
+    write_lock(&target->pci_lock);
+    /* Re-assign back to hardware_domain */
+    ret = vpci_assign_device(pdev);
+    write_unlock(&target->pci_lock);
+
  out:
     if ( ret )
         printk(XENLOG_G_ERR "%pd: deassign (%pp) failed (%d)\n",
@@ -1146,7 +1155,7 @@ static void __hwdom_init setup_one_hwdom_device(const struct setup_hwdom *ctxt,
               PCI_SLOT(devfn) == PCI_SLOT(pdev->devfn) );
 
     write_lock(&ctxt->d->pci_lock);
-    err = vpci_add_handlers(pdev);
+    err = vpci_assign_device(pdev);
     write_unlock(&ctxt->d->pci_lock);
     if ( err )
         printk(XENLOG_ERR "setup of vPCI for d%d failed: %d\n",
@@ -1476,6 +1485,10 @@ static int assign_device(struct domain *d, u16 seg, u8 bus, u8 devfn, u32 flag)
     if ( pdev->broken && d != hardware_domain && d != dom_io )
         goto done;
 
+    write_lock(&pdev->domain->pci_lock);
+    vpci_deassign_device(pdev);
+    write_unlock(&pdev->domain->pci_lock);
+
     rc = pdev_msix_assign(d, pdev);
     if ( rc )
         goto done;
@@ -1502,6 +1515,10 @@ static int assign_device(struct domain *d, u16 seg, u8 bus, u8 devfn, u32 flag)
                         pci_to_dev(pdev), flag);
     }
 
+    write_lock(&d->pci_lock);
+    rc = vpci_assign_device(pdev);
+    write_unlock(&d->pci_lock);
+
  done:
     if ( rc )
         printk(XENLOG_G_WARNING "%pd: assign (%pp) failed (%d)\n",
diff --git a/xen/drivers/vpci/header.c b/xen/drivers/vpci/header.c
index 8f5850b8cf6d..2f2d98ada012 100644
--- a/xen/drivers/vpci/header.c
+++ b/xen/drivers/vpci/header.c
@@ -191,7 +191,7 @@ bool vpci_process_pending(struct vcpu *v)
              * killed in order to avoid leaking stale p2m mappings on
              * failure.
              */
-            vpci_remove_device(v->vpci.pdev);
+            vpci_deassign_device(v->vpci.pdev);
         write_unlock(&v->domain->pci_lock);
     }
 
diff --git a/xen/drivers/vpci/vpci.c b/xen/drivers/vpci/vpci.c
index e98693e1dc3e..42eac85106a3 100644
--- a/xen/drivers/vpci/vpci.c
+++ b/xen/drivers/vpci/vpci.c
@@ -40,7 +40,7 @@ extern vpci_register_init_t *const __start_vpci_array[];
 extern vpci_register_init_t *const __end_vpci_array[];
 #define NUM_VPCI_INIT (__end_vpci_array - __start_vpci_array)
 
-void vpci_remove_device(struct pci_dev *pdev)
+void vpci_deassign_device(struct pci_dev *pdev)
 {
     ASSERT(rw_is_write_locked(&pdev->domain->pci_lock));
 
@@ -73,7 +73,7 @@ void vpci_remove_device(struct pci_dev *pdev)
     pdev->vpci = NULL;
 }
 
-int vpci_add_handlers(struct pci_dev *pdev)
+int vpci_assign_device(struct pci_dev *pdev)
 {
     unsigned int i;
     const unsigned long *ro_map;
@@ -107,7 +107,7 @@ int vpci_add_handlers(struct pci_dev *pdev)
     }
 
     if ( rc )
-        vpci_remove_device(pdev);
+        vpci_deassign_device(pdev);
 
     return rc;
 }
diff --git a/xen/include/xen/vpci.h b/xen/include/xen/vpci.h
index d20c301a3db3..99fe76f08ace 100644
--- a/xen/include/xen/vpci.h
+++ b/xen/include/xen/vpci.h
@@ -25,11 +25,11 @@ typedef int vpci_register_init_t(struct pci_dev *dev);
   static vpci_register_init_t *const x##_entry  \
                __used_section(".data.vpci." p) = x
 
-/* Add vPCI handlers to device. */
-int __must_check vpci_add_handlers(struct pci_dev *pdev);
+/* Assign vPCI to device by adding handlers. */
+int __must_check vpci_assign_device(struct pci_dev *pdev);
 
 /* Remove all handlers and free vpci related structures. */
-void vpci_remove_device(struct pci_dev *pdev);
+void vpci_deassign_device(struct pci_dev *pdev);
 
 /* Add/remove a register handler. */
 int __must_check vpci_add_register_mask(struct vpci *vpci,
@@ -255,12 +255,12 @@ bool vpci_ecam_read(pci_sbdf_t sbdf, unsigned int reg, unsigned int len,
 #else /* !CONFIG_HAS_VPCI */
 struct vpci_vcpu {};
 
-static inline int vpci_add_handlers(struct pci_dev *pdev)
+static inline int vpci_assign_device(struct pci_dev *pdev)
 {
     return 0;
 }
 
-static inline void vpci_remove_device(struct pci_dev *pdev) { }
+static inline void vpci_deassign_device(struct pci_dev *pdev) { }
 
 static inline void vpci_dump_msi(void) { }
 
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Tue Jan 09 21:52:56 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 09 Jan 2024 21:52:56 +0000
Received: from list by lists.xenproject.org with outflank-mailman.665022.1035211 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNK1n-0000nO-6b; Tue, 09 Jan 2024 21:52:55 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 665022.1035211; Tue, 09 Jan 2024 21:52:55 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNK1n-0000nC-2z; Tue, 09 Jan 2024 21:52:55 +0000
Received: by outflank-mailman (input) for mailman id 665022;
 Tue, 09 Jan 2024 21:52:53 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=ONpl=IT=amd.com=Stewart.Hildebrand@srs-se1.protection.inumbo.net>)
 id 1rNK1l-0007gG-Q1
 for xen-devel@lists.xenproject.org; Tue, 09 Jan 2024 21:52:53 +0000
Received: from NAM10-BN7-obe.outbound.protection.outlook.com
 (mail-bn7nam10on20600.outbound.protection.outlook.com
 [2a01:111:f403:2009::600])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 6ef8d12a-af39-11ee-9b0f-b553b5be7939;
 Tue, 09 Jan 2024 22:52:51 +0100 (CET)
Received: from BYAPR07CA0040.namprd07.prod.outlook.com (2603:10b6:a03:60::17)
 by CY5PR12MB6060.namprd12.prod.outlook.com (2603:10b6:930:2f::9) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7159.23; Tue, 9 Jan
 2024 21:52:48 +0000
Received: from SJ1PEPF00001CEB.namprd03.prod.outlook.com
 (2603:10b6:a03:60:cafe::35) by BYAPR07CA0040.outlook.office365.com
 (2603:10b6:a03:60::17) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7159.23 via Frontend
 Transport; Tue, 9 Jan 2024 21:52:48 +0000
Received: from SATLEXMB03.amd.com (165.204.84.17) by
 SJ1PEPF00001CEB.mail.protection.outlook.com (10.167.242.27) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.7181.14 via Frontend Transport; Tue, 9 Jan 2024 21:52:48 +0000
Received: from SATLEXMB08.amd.com (10.181.40.132) by SATLEXMB03.amd.com
 (10.181.40.144) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.34; Tue, 9 Jan
 2024 15:52:47 -0600
Received: from SATLEXMB04.amd.com (10.181.40.145) by SATLEXMB08.amd.com
 (10.181.40.132) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.32; Tue, 9 Jan
 2024 13:52:47 -0800
Received: from ubuntu.mshome.net (10.180.168.240) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server id 15.1.2507.34 via Frontend
 Transport; Tue, 9 Jan 2024 15:52:41 -0600
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 6ef8d12a-af39-11ee-9b0f-b553b5be7939
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=Y+5HlEFy3MHOeNhPCqMISwTSFG+joYrrsH3bAScNRWY2tK7knWBpdY85nUn5RKi/IxdYcIlE+uvcsRdoj0F3pFGYL30obtjwFlCFyI3zT5lgaUuFO7w9h3JNYcn1pNRclIP76BFMgQ/6jCIXqxecVpvniLC5iT6JYty5NQ2daI/cXllcDsm6CYgU2CUjg3HiYGUrWF/rHl0Zu4e7l67w7ZXdFApB0brBIz5Oq5ZkE/fnfnJLSngxgFE4pP6vqPItRX8ET9ZpMIHEaYphpBwVCKOy4niTJtINxm3sV2eVItyyXrKsZa9lY3RyWOhcuOpq8xyMYQFweid+3FNGyC0QpA==
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=xyiyI3xsKrX/cnHhNKfE69AhVBubvl5XKQMwzn7dWtQ=;
 b=oDqZs4HAfGnLUBIiU8+mlX3jy8LMVYynhTEqpfbNoJbfftZk0AIZLa2ypplgqxmBFXCzKbyedbjBfKy2xedPA28A4JxHn+DHDQZmbB+zj2IcONFZaxHKUp08difWJILrV1oa9aEGP1/e8i+HHdqKbUfVA4v313kTt/7oWW5FnERIi5Oz78tTFPiNlI9rN4eN/BhF7QbatOYnIf9r8D60OFcr9SO02D9XGKzEeTajr+7AbBm+LegfcvYUaOsO+Esurl7s6/8HQs+WJn60kXq1WpKX/DO3vvK6ZsRyMm9RlCtu1DXxXcNFxYKvm7UDLl2bWaWBRMv07ByZrUvyB2GFxg==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=lists.xenproject.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)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=xyiyI3xsKrX/cnHhNKfE69AhVBubvl5XKQMwzn7dWtQ=;
 b=u25+q2Rm6peMsIxRMQfyGhyvoinGKCFhRHvZsGRVcZkwhp0d2A4t5zx4+j8vBGBTUqsirq/OvH67ANWHR80sGT+JphmEKxLYpweVqIJr69VYluA0kJ8QR4Nv2T4+bpSIRyF+EWXd47ZCsBkJvUkiYgG1YiTBUlb/LBrC3BjMecQ=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=SATLEXMB03.amd.com; pr=C
From: Stewart Hildebrand <stewart.hildebrand@amd.com>
To: <xen-devel@lists.xenproject.org>
CC: Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>, "Volodymyr
 Babchuk" <volodymyr_babchuk@epam.com>, Stewart Hildebrand
	<stewart.hildebrand@amd.com>
Subject: [PATCH v12 04/15] vpci/header: rework exit path in init_header()
Date: Tue, 9 Jan 2024 16:51:19 -0500
Message-ID: <20240109215145.430207-5-stewart.hildebrand@amd.com>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20240109215145.430207-1-stewart.hildebrand@amd.com>
References: <20240109215145.430207-1-stewart.hildebrand@amd.com>
MIME-Version: 1.0
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: SJ1PEPF00001CEB:EE_|CY5PR12MB6060:EE_
X-MS-Office365-Filtering-Correlation-Id: 2dade6b8-1008-45d0-2504-08dc115d5214
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam: BCL:0;
X-Microsoft-Antispam-Message-Info:
	VilKMBb0cRVOBScucQf2T6cJBYRyCR89ZC7Dhbn3mZK9wbyiVcfTZyX5whMr5aGUyrKUoVMYYEScDwUKgLv57Ivnw0U8HpOfdCAMEr+weooOF9IVxRlVISaWT7bnF+nPsgnry2DdLSlH5bRQtVuJ7PDEmLgjpQLoSlbC/gMqC+4jNyQCHDfI7wBGeA6Zep+8TllYkRiRl2ktsSze0N8SPElq3sBdiMWjqHzLiUEH1d6NaXicVxrb5J0GoFKOnyys0rf5MuAoW+Uf4YLQfsEFHaSIp7Vev4F1Hvvbrmu+T0rj3PWwM2MLbv+Qzq4FM5fWHnIhOyW464gQrvGPKoIUnEZjghJH5zZaJ+W6TpKRcDGtCgR5O9vwwBQSphAv4nyOwVOzz2G5tCKUNi80he49IP/qNaqEoRZmpc7aMIDFpwUiPv0aQGryVEY3agsJ2FFe7XjtpV1ylFqmdyx0aYpO0WLRejNW4/dSETAAzA11NMIWNm86tnbj1YVpqagOAI6v7Q6LmdUsYxJ1hm+Z4mGkJWipswtcKsU0J13BPpdRTkdPFC3atNJeenWQYOthTXWj5mzhDvvkEjrsekibmAKfkgO3cA570cS/yToOXauG8e6irlvnMvYBvxhqM0stHikPbU7xHmNCyYD48vPw6zF7PiaIBD0tNwEI+kZl52BpJj9jc+i5I+Y/m9SnuNAuK/0c+tE00QikhBVIT/88AnTuZusl0Hta6sp5GCOoyt/j2rfa1NR0EsQ2loISKIYnCPI9vjzTvDHI5QFVHq+8zIx7Ng==
X-Forefront-Antispam-Report:
	CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB03.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230031)(4636009)(346002)(376002)(396003)(136003)(39860400002)(230922051799003)(82310400011)(64100799003)(186009)(451199024)(1800799012)(46966006)(36840700001)(40470700004)(40480700001)(40460700003)(2906002)(478600001)(36860700001)(5660300002)(6666004)(81166007)(4326008)(44832011)(356005)(41300700001)(8936002)(316002)(70206006)(70586007)(54906003)(36756003)(6916009)(8676002)(2616005)(86362001)(426003)(26005)(336012)(1076003)(83380400001)(47076005)(82740400003)(36900700001);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Jan 2024 21:52:48.5200
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 2dade6b8-1008-45d0-2504-08dc115d5214
X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB03.amd.com]
X-MS-Exchange-CrossTenant-AuthSource:
	SJ1PEPF00001CEB.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY5PR12MB6060

From: Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>

Introduce "fail" label in init_header() function to have the centralized
error return path. This is the pre-requirement for the future changes
in this function.

This patch does not introduce functional changes.

Suggested-by: Roger Pau Monné <roger.pau@citrix.com>
Signed-off-by: Volodymyr Babchuk <volodymyr_babchuk@epam.com>
Acked-by: Roger Pau Monné <roger.pau@citrix.com>
Signed-off-by: Stewart Hildebrand <stewart.hildebrand@amd.com>
---
In v12:
- s/init_bars/init_header/
- Re-order tags
- Fixup scissors line
In v11:
- Do not remove empty line between "goto fail;" and "continue;"
In v10:
- Added Roger's A-b tag.
In v9:
- New in v9
---
 xen/drivers/vpci/header.c | 19 +++++++------------
 1 file changed, 7 insertions(+), 12 deletions(-)

diff --git a/xen/drivers/vpci/header.c b/xen/drivers/vpci/header.c
index 2f2d98ada012..803fe4bb99a6 100644
--- a/xen/drivers/vpci/header.c
+++ b/xen/drivers/vpci/header.c
@@ -656,10 +656,7 @@ static int cf_check init_header(struct pci_dev *pdev)
             rc = vpci_add_register(pdev->vpci, vpci_hw_read32, bar_write, reg,
                                    4, &bars[i]);
             if ( rc )
-            {
-                pci_conf_write16(pdev->sbdf, PCI_COMMAND, cmd);
-                return rc;
-            }
+                goto fail;
 
             continue;
         }
@@ -679,10 +676,7 @@ static int cf_check init_header(struct pci_dev *pdev)
         rc = pci_size_mem_bar(pdev->sbdf, reg, &addr, &size,
                               (i == num_bars - 1) ? PCI_BAR_LAST : 0);
         if ( rc < 0 )
-        {
-            pci_conf_write16(pdev->sbdf, PCI_COMMAND, cmd);
-            return rc;
-        }
+            goto fail;
 
         if ( size == 0 )
         {
@@ -697,10 +691,7 @@ static int cf_check init_header(struct pci_dev *pdev)
         rc = vpci_add_register(pdev->vpci, vpci_hw_read32, bar_write, reg, 4,
                                &bars[i]);
         if ( rc )
-        {
-            pci_conf_write16(pdev->sbdf, PCI_COMMAND, cmd);
-            return rc;
-        }
+            goto fail;
     }
 
     /* Check expansion ROM. */
@@ -722,6 +713,10 @@ static int cf_check init_header(struct pci_dev *pdev)
     }
 
     return (cmd & PCI_COMMAND_MEMORY) ? modify_bars(pdev, cmd, false) : 0;
+
+ fail:
+    pci_conf_write16(pdev->sbdf, PCI_COMMAND, cmd);
+    return rc;
 }
 REGISTER_VPCI_INIT(init_header, VPCI_PRIORITY_MIDDLE);
 
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Tue Jan 09 21:53:05 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 09 Jan 2024 21:53:05 +0000
Received: from list by lists.xenproject.org with outflank-mailman.665026.1035221 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNK1x-0001M6-K4; Tue, 09 Jan 2024 21:53:05 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 665026.1035221; Tue, 09 Jan 2024 21:53:05 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNK1x-0001Lu-Gs; Tue, 09 Jan 2024 21:53:05 +0000
Received: by outflank-mailman (input) for mailman id 665026;
 Tue, 09 Jan 2024 21:53:04 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=ONpl=IT=amd.com=Stewart.Hildebrand@srs-se1.protection.inumbo.net>)
 id 1rNK1w-0008W6-O8
 for xen-devel@lists.xenproject.org; Tue, 09 Jan 2024 21:53:04 +0000
Received: from NAM12-BN8-obe.outbound.protection.outlook.com
 (mail-bn8nam12on20607.outbound.protection.outlook.com
 [2a01:111:f400:fe5b::607])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 76bf668c-af39-11ee-98ef-6d05b1d4d9a1;
 Tue, 09 Jan 2024 22:53:03 +0100 (CET)
Received: from MN2PR08CA0030.namprd08.prod.outlook.com (2603:10b6:208:239::35)
 by SJ0PR12MB5488.namprd12.prod.outlook.com (2603:10b6:a03:3ad::15)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7159.23; Tue, 9 Jan
 2024 21:53:00 +0000
Received: from BL6PEPF0001AB50.namprd04.prod.outlook.com
 (2603:10b6:208:239:cafe::48) by MN2PR08CA0030.outlook.office365.com
 (2603:10b6:208:239::35) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7181.17 via Frontend
 Transport; Tue, 9 Jan 2024 21:52:59 +0000
Received: from SATLEXMB04.amd.com (165.204.84.17) by
 BL6PEPF0001AB50.mail.protection.outlook.com (10.167.242.74) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.7181.14 via Frontend Transport; Tue, 9 Jan 2024 21:52:59 +0000
Received: from SATLEXMB06.amd.com (10.181.40.147) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.34; Tue, 9 Jan
 2024 15:52:58 -0600
Received: from SATLEXMB04.amd.com (10.181.40.145) by SATLEXMB06.amd.com
 (10.181.40.147) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.34; Tue, 9 Jan
 2024 15:52:58 -0600
Received: from ubuntu.mshome.net (10.180.168.240) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server id 15.1.2507.34 via Frontend
 Transport; Tue, 9 Jan 2024 15:52:57 -0600
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 76bf668c-af39-11ee-98ef-6d05b1d4d9a1
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=N5b5Fw/AzErrrlM6vfG/PLd918GfdvQeL+oaLT0/vPm8IhDcJG4LbnUMDhHilMmZUYwj6ufxEyF8EBmpJVXoq88Y//w/p3xYjCT7a9FkJRL2Gy60hpPbN7uoalPnoNlqlFM2AXVXrliybOApBMTl2slkIA+5rOVCX5DxFjhb9DdW24w/rPN/O72COydeGmpUf3kPQldKiue+Pox+69mipcvkYxRzlKAp2WYtzs8FmOyD9j8oEupg9+sTWMCMnDoYhLwcEGVCRRXVT8RBekL2KspuDaBe556qpBXbHiuiRWuTqcP2VXlI+Ruku+7fR/J7mQcx1OzLO6R/oZwIPK27GQ==
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=3fv9DTE0P0KLmwQzPHqaJ/yxioeZbVVsJLRZmvugJrA=;
 b=MPvT46Ugv/DKPNl4xfpzhu7LPSsPFaMmkRfCXucOpNaNJaRaLQsPDuD4bWa5xXWFxRMJV3Y8rVxGOkjOHdJIew0gkR3bP/xjsmmHQ1ksy+r6hbzVnHjnQMwk4FstEEjgNmeGvrMWMWQQ1J78HmmrfPSlY3c5xI4TrjcYZzuzU6SA0OhiaUNEbYK/Hh7bak0An4gN7CJGQJY5whOCfZMFoPdpktXXgaL4ectGf2xMK86hEWAGA6zQAQf8vZe4k3+oUXOiw/PN8V+itzy8yqfaYgGKQDrcadw3VFpB9mEbPjMALW30ngwf3zVCL8bwOgUX44FOTrQdtthqS+CN3p4clQ==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=lists.xenproject.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)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=3fv9DTE0P0KLmwQzPHqaJ/yxioeZbVVsJLRZmvugJrA=;
 b=GTebfnXm9F59ch75uYteM5zIK14PU1hQ1aJW/96Khljb5c2kC1T/QxqCdItMfB7KLSUBRyqXwZqLOu9UHNvJ4RHjiHTVWOa4iuZ0LhQ7bVf4e0/K48iYOwi/zX4vsrMdJ+ehUcU3YnsBOMi522F2FWpDLq6LNNRY23f4G3i+/Xg=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C
From: Stewart Hildebrand <stewart.hildebrand@amd.com>
To: <xen-devel@lists.xenproject.org>
CC: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>, "Volodymyr
 Babchuk" <volodymyr_babchuk@epam.com>, Stewart Hildebrand
	<stewart.hildebrand@amd.com>
Subject: [PATCH v12 05/15] vpci/header: implement guest BAR register handlers
Date: Tue, 9 Jan 2024 16:51:20 -0500
Message-ID: <20240109215145.430207-6-stewart.hildebrand@amd.com>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20240109215145.430207-1-stewart.hildebrand@amd.com>
References: <20240109215145.430207-1-stewart.hildebrand@amd.com>
MIME-Version: 1.0
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: BL6PEPF0001AB50:EE_|SJ0PR12MB5488:EE_
X-MS-Office365-Filtering-Correlation-Id: 2c3fbd5e-ce19-4d4f-b775-08dc115d5879
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam: BCL:0;
X-Microsoft-Antispam-Message-Info:
	IcUbXmpu/TxDo7CJ/ZS/lEIhzs5pB8Y5pgmNQGKtJL0taHcLfSw1qRxaCP9EQP3YgWFonB3ECZhCAH5dGB1q8upiSfgHAYTe6DuVazXxej0SZULolVdcPQ60JtLWjiWZBSBsvTfNC5+fvTN6wpuZYyhhXEJ7cHXz6RtNh/An5CgfzkMMe3fKLy39DcNzGgX8T/ywkxEo95+TRaGbWk85pFn/rBVW+fRgUCRCTqtIZswIeNtUJ5JFQxgtzGtAAtx93HUTu4aTkmzLaQ/ufJx031Zo2UNa/JJ5eJln2vDUFtCDxbTXyHuDkHYrxLg9d5OFtZ57fFBdme1icsoT57X4vKVYWL0ALECJeH2pD2HqLM1rvUTZrmKC5slwwgQ5dfvQ1blqabOzEDXF/9g2+AKqS9z15dAyBrBUUXMYWtrZ14lIT0BoXIEc9MtP1xyvgO+7T8l9rqjuHs6mNcIW/raIszXVO7Sp70izK+wVk1NGmlInRdXgN+nNj61FSlce9R+XBkD6LzZ4MxFRpNGPTZ43QSvNqruBwtUAyftVtK7aZEVNqoxJAL3PluSbQ3Qm2tgfaoeDXB9D1p2hlCcpGxawtm19JQwJmSZW8PGrItASWVWabjW/lu9WPA58RXHyVlRwzIEjbIiF8VqKfkmzcg2zsyh3y9feM+E6wtlkPJumfWyUj409D0IMsse0t2VfCHCRvxoVJD7hL6SJ8KLwyZ2+N9UpABTOSrWDndmTVwowHHeCbZRRLHqrEhsJYrIhFcvkJcxAokuqQp0BsW6wp54vLWAAjqsR6TbOXpDFXLv9/SbG0RYxhft+S/K4yFHk1V16
X-Forefront-Antispam-Report:
	CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230031)(4636009)(396003)(376002)(136003)(39860400002)(346002)(230273577357003)(230173577357003)(230922051799003)(1800799012)(64100799003)(82310400011)(186009)(451199024)(40470700004)(36840700001)(46966006)(40480700001)(40460700003)(83380400001)(316002)(70586007)(41300700001)(356005)(81166007)(82740400003)(86362001)(36756003)(70206006)(36860700001)(47076005)(478600001)(5660300002)(336012)(426003)(1076003)(2616005)(26005)(6666004)(6916009)(2906002)(54906003)(8936002)(44832011)(4326008)(8676002)(36900700001);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Jan 2024 21:52:59.3457
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 2c3fbd5e-ce19-4d4f-b775-08dc115d5879
X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com]
X-MS-Exchange-CrossTenant-AuthSource:
	BL6PEPF0001AB50.namprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ0PR12MB5488

From: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>

Add relevant vpci register handlers when assigning PCI device to a domain
and remove those when de-assigning. This allows having different
handlers for different domains, e.g. hwdom and other guests.

Emulate guest BAR register values: this allows creating a guest view
of the registers and emulates size and properties probe as it is done
during PCI device enumeration by the guest.

All empty, IO and ROM BARs for guests are emulated by returning 0 on
reads and ignoring writes: this BARs are special with this respect as
their lower bits have special meaning, so returning default ~0 on read
may confuse guest OS.

Introduce is_hwdom convenience variable and convert an existing
is_hardware_domain() check.

Signed-off-by: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>
Signed-off-by: Volodymyr Babchuk <volodymyr_babchuk@epam.com>
Reviewed-by: Roger Pau Monné <roger.pau@citrix.com>
Signed-off-by: Stewart Hildebrand <stewart.hildebrand@amd.com>
---
In v12:
- Add Roger's R-b
- Get rid of empty_bar_read, use vpci_read_val instead
- Convert an existing is_hardware_domain() check to is_hwdom
- Re-indent usage of ternary operator
- Use ternary operator to avoid re-indenting expansion ROM block
In v11:
- Access guest_addr after adjusting for MEM64_HI bar in
guest_bar_write()
- guest bar handlers renamed and now  _mem_ part to denote
that they are handling only memory BARs
- refuse to update guest BAR address if BAR is enabled
In v10:
- ull -> ULL to be MISRA-compatbile
- Use PAGE_OFFSET() instead of combining with ~PAGE_MASK
- Set type of empty bars to VPCI_BAR_EMPTY
In v9:
- factored-out "fail" label introduction in init_bars()
- replaced #ifdef CONFIG_X86 with IS_ENABLED()
- do not pass bars[i] to empty_bar_read() handler
- store guest's BAR address instead of guests BAR register view
Since v6:
- unify the writing of the PCI_COMMAND register on the
  error path into a label
- do not introduce bar_ignore_access helper and open code
- s/guest_bar_ignore_read/empty_bar_read
- update error message in guest_bar_write
- only setup empty_bar_read for IO if !x86
Since v5:
- make sure that the guest set address has the same page offset
  as the physical address on the host
- remove guest_rom_{read|write} as those just implement the default
  behaviour of the registers not being handled
- adjusted comment for struct vpci.addr field
- add guest handlers for BARs which are not handled and will otherwise
  return ~0 on read and ignore writes. The BARs are special with this
  respect as their lower bits have special meaning, so returning ~0
  doesn't seem to be right
Since v4:
- updated commit message
- s/guest_addr/guest_reg
Since v3:
- squashed two patches: dynamic add/remove handlers and guest BAR
  handler implementation
- fix guest BAR read of the high part of a 64bit BAR (Roger)
- add error handling to vpci_assign_device
- s/dom%pd/%pd
- blank line before return
Since v2:
- remove unneeded ifdefs for CONFIG_HAS_VPCI_GUEST_SUPPORT as more code
  has been eliminated from being built on x86
Since v1:
 - constify struct pci_dev where possible
 - do not open code is_system_domain()
 - simplify some code3. simplify
 - use gdprintk + error code instead of gprintk
 - gate vpci_bar_{add|remove}_handlers with CONFIG_HAS_VPCI_GUEST_SUPPORT,
   so these do not get compiled for x86
 - removed unneeded is_system_domain check
 - re-work guest read/write to be much simpler and do more work on write
   than read which is expected to be called more frequently
 - removed one too obvious comment
---
 xen/drivers/vpci/header.c | 109 +++++++++++++++++++++++++++++++++++---
 xen/include/xen/vpci.h    |   3 ++
 2 files changed, 106 insertions(+), 6 deletions(-)

diff --git a/xen/drivers/vpci/header.c b/xen/drivers/vpci/header.c
index 803fe4bb99a6..39e11e141b38 100644
--- a/xen/drivers/vpci/header.c
+++ b/xen/drivers/vpci/header.c
@@ -478,6 +478,69 @@ static void cf_check bar_write(
     pci_conf_write32(pdev->sbdf, reg, val);
 }
 
+static void cf_check guest_mem_bar_write(const struct pci_dev *pdev,
+                                         unsigned int reg, uint32_t val,
+                                         void *data)
+{
+    struct vpci_bar *bar = data;
+    bool hi = false;
+    uint64_t guest_addr;
+
+    if ( bar->type == VPCI_BAR_MEM64_HI )
+    {
+        ASSERT(reg > PCI_BASE_ADDRESS_0);
+        bar--;
+        hi = true;
+    }
+    else
+    {
+        val &= PCI_BASE_ADDRESS_MEM_MASK;
+    }
+
+    guest_addr = bar->guest_addr;
+    guest_addr &= ~(0xffffffffULL << (hi ? 32 : 0));
+    guest_addr |= (uint64_t)val << (hi ? 32 : 0);
+
+    /* Allow guest to size BAR correctly */
+    guest_addr &= ~(bar->size - 1);
+
+    /*
+     * Xen only cares whether the BAR is mapped into the p2m, so allow BAR
+     * writes as long as the BAR is not mapped into the p2m.
+     */
+    if ( bar->enabled )
+    {
+        /* If the value written is the current one avoid printing a warning. */
+        if ( guest_addr != bar->guest_addr )
+            gprintk(XENLOG_WARNING,
+                    "%pp: ignored guest BAR %zu write while mapped\n",
+                    &pdev->sbdf, bar - pdev->vpci->header.bars + hi);
+        return;
+    }
+    bar->guest_addr = guest_addr;
+}
+
+static uint32_t cf_check guest_mem_bar_read(const struct pci_dev *pdev,
+                                            unsigned int reg, void *data)
+{
+    const struct vpci_bar *bar = data;
+    uint32_t reg_val;
+
+    if ( bar->type == VPCI_BAR_MEM64_HI )
+    {
+        ASSERT(reg > PCI_BASE_ADDRESS_0);
+        bar--;
+        return bar->guest_addr >> 32;
+    }
+
+    reg_val = bar->guest_addr;
+    reg_val |= bar->type == VPCI_BAR_MEM32 ? PCI_BASE_ADDRESS_MEM_TYPE_32 :
+                                             PCI_BASE_ADDRESS_MEM_TYPE_64;
+    reg_val |= bar->prefetchable ? PCI_BASE_ADDRESS_MEM_PREFETCH : 0;
+
+    return reg_val;
+}
+
 static void cf_check rom_write(
     const struct pci_dev *pdev, unsigned int reg, uint32_t val, void *data)
 {
@@ -539,6 +602,7 @@ static int cf_check init_header(struct pci_dev *pdev)
     struct vpci_bar *bars = header->bars;
     int rc;
     bool mask_cap_list = false;
+    bool is_hwdom = is_hardware_domain(pdev->domain);
 
     ASSERT(rw_is_write_locked(&pdev->domain->pci_lock));
 
@@ -564,7 +628,7 @@ static int cf_check init_header(struct pci_dev *pdev)
     if ( rc )
         return rc;
 
-    if ( !is_hardware_domain(pdev->domain) )
+    if ( !is_hwdom )
     {
         if ( pci_conf_read16(pdev->sbdf, PCI_STATUS) & PCI_STATUS_CAP_LIST )
         {
@@ -653,8 +717,11 @@ static int cf_check init_header(struct pci_dev *pdev)
         if ( i && bars[i - 1].type == VPCI_BAR_MEM64_LO )
         {
             bars[i].type = VPCI_BAR_MEM64_HI;
-            rc = vpci_add_register(pdev->vpci, vpci_hw_read32, bar_write, reg,
-                                   4, &bars[i]);
+            rc = vpci_add_register(pdev->vpci,
+                                   is_hwdom ? vpci_hw_read32
+                                            : guest_mem_bar_read,
+                                   is_hwdom ? bar_write : guest_mem_bar_write,
+                                   reg, 4, &bars[i]);
             if ( rc )
                 goto fail;
 
@@ -665,6 +732,14 @@ static int cf_check init_header(struct pci_dev *pdev)
         if ( (val & PCI_BASE_ADDRESS_SPACE) == PCI_BASE_ADDRESS_SPACE_IO )
         {
             bars[i].type = VPCI_BAR_IO;
+            if ( !IS_ENABLED(CONFIG_X86) && !is_hwdom )
+            {
+                rc = vpci_add_register(pdev->vpci, vpci_read_val, NULL,
+                                       reg, 4, (void *)0);
+                if ( rc )
+                    goto fail;
+            }
+
             continue;
         }
         if ( (val & PCI_BASE_ADDRESS_MEM_TYPE_MASK) ==
@@ -681,6 +756,15 @@ static int cf_check init_header(struct pci_dev *pdev)
         if ( size == 0 )
         {
             bars[i].type = VPCI_BAR_EMPTY;
+
+            if ( !is_hwdom )
+            {
+                rc = vpci_add_register(pdev->vpci, vpci_read_val, NULL,
+                                       reg, 4, (void *)0);
+                if ( rc )
+                    goto fail;
+            }
+
             continue;
         }
 
@@ -688,14 +772,18 @@ static int cf_check init_header(struct pci_dev *pdev)
         bars[i].size = size;
         bars[i].prefetchable = val & PCI_BASE_ADDRESS_MEM_PREFETCH;
 
-        rc = vpci_add_register(pdev->vpci, vpci_hw_read32, bar_write, reg, 4,
-                               &bars[i]);
+        rc = vpci_add_register(pdev->vpci,
+                               is_hwdom ? vpci_hw_read32 : guest_mem_bar_read,
+                               is_hwdom ? bar_write : guest_mem_bar_write,
+                               reg, 4, &bars[i]);
         if ( rc )
             goto fail;
     }
 
     /* Check expansion ROM. */
-    rc = pci_size_mem_bar(pdev->sbdf, rom_reg, &addr, &size, PCI_BAR_ROM);
+    rc = is_hwdom ? pci_size_mem_bar(pdev->sbdf, rom_reg, &addr, &size,
+                                     PCI_BAR_ROM)
+                  : 0;
     if ( rc > 0 && size )
     {
         struct vpci_bar *rom = &header->bars[num_bars];
@@ -711,6 +799,15 @@ static int cf_check init_header(struct pci_dev *pdev)
         if ( rc )
             rom->type = VPCI_BAR_EMPTY;
     }
+    else if ( !is_hwdom )
+    {
+        /* TODO: Check expansion ROM, we do not handle ROM for guests for now */
+        header->bars[num_bars].type = VPCI_BAR_EMPTY;
+        rc = vpci_add_register(pdev->vpci, vpci_read_val, NULL,
+                               rom_reg, 4, (void *)0);
+        if ( rc )
+            goto fail;
+    }
 
     return (cmd & PCI_COMMAND_MEMORY) ? modify_bars(pdev, cmd, false) : 0;
 
diff --git a/xen/include/xen/vpci.h b/xen/include/xen/vpci.h
index 99fe76f08ace..b0e38a5a1acb 100644
--- a/xen/include/xen/vpci.h
+++ b/xen/include/xen/vpci.h
@@ -87,7 +87,10 @@ struct vpci {
     struct vpci_header {
         /* Information about the PCI BARs of this device. */
         struct vpci_bar {
+            /* Physical (host) address. */
             uint64_t addr;
+            /* Guest address. */
+            uint64_t guest_addr;
             uint64_t size;
             enum {
                 VPCI_BAR_EMPTY,
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Tue Jan 09 21:53:20 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 09 Jan 2024 21:53:20 +0000
Received: from list by lists.xenproject.org with outflank-mailman.665031.1035230 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNK2A-0001xg-TX; Tue, 09 Jan 2024 21:53:18 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 665031.1035230; Tue, 09 Jan 2024 21:53:18 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNK2A-0001xZ-Qp; Tue, 09 Jan 2024 21:53:18 +0000
Received: by outflank-mailman (input) for mailman id 665031;
 Tue, 09 Jan 2024 21:53:17 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=ONpl=IT=amd.com=Stewart.Hildebrand@srs-se1.protection.inumbo.net>)
 id 1rNK29-0008W6-6W
 for xen-devel@lists.xenproject.org; Tue, 09 Jan 2024 21:53:17 +0000
Received: from NAM04-DM6-obe.outbound.protection.outlook.com
 (mail-dm6nam04on20600.outbound.protection.outlook.com
 [2a01:111:f403:2409::600])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 7e6b801e-af39-11ee-98ef-6d05b1d4d9a1;
 Tue, 09 Jan 2024 22:53:16 +0100 (CET)
Received: from BY5PR03CA0025.namprd03.prod.outlook.com (2603:10b6:a03:1e0::35)
 by SJ0PR12MB7081.namprd12.prod.outlook.com (2603:10b6:a03:4ae::17)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7159.23; Tue, 9 Jan
 2024 21:53:12 +0000
Received: from SJ1PEPF00001CE5.namprd03.prod.outlook.com
 (2603:10b6:a03:1e0:cafe::8e) by BY5PR03CA0025.outlook.office365.com
 (2603:10b6:a03:1e0::35) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7159.24 via Frontend
 Transport; Tue, 9 Jan 2024 21:53:12 +0000
Received: from SATLEXMB03.amd.com (165.204.84.17) by
 SJ1PEPF00001CE5.mail.protection.outlook.com (10.167.242.21) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.7181.14 via Frontend Transport; Tue, 9 Jan 2024 21:53:12 +0000
Received: from SATLEXMB06.amd.com (10.181.40.147) by SATLEXMB03.amd.com
 (10.181.40.144) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.34; Tue, 9 Jan
 2024 15:53:12 -0600
Received: from SATLEXMB04.amd.com (10.181.40.145) by SATLEXMB06.amd.com
 (10.181.40.147) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.34; Tue, 9 Jan
 2024 15:53:11 -0600
Received: from ubuntu.mshome.net (10.180.168.240) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server id 15.1.2507.34 via Frontend
 Transport; Tue, 9 Jan 2024 15:53:09 -0600
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 7e6b801e-af39-11ee-98ef-6d05b1d4d9a1
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=WXTz2Mpvj/QfnORkTyz17SzRJMmmPl9jXvRlwdSdk+v81jVDIsPnV9G234ofXWU6BSM79izfS6//ImHglgJs8rFMSmxJI/uY7kwVV3KI9l5uCCCqWOtk3HmHod57NZvjOdMPskqg9ecA5xoOkGVYVkPmbiNcXYHPsnhFgyu0QeJhH4LjihfcjjPGScgdcyTHMWBxG5M/6Uv7JnOu3nuClhXht25xHKWHm7wJgb6iV2OL3EENMa18ew+cdPO5OTWbOpZT/yopedhj9lax5NpO3iBKIFLr3N1TDuKejMM+z3u+cYJ5u7wcVka795AxiFWMG2LRJEJ0H5H7fVR8/F+3LQ==
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=tIlYNCEQ+4nfk+sRGPCKjR3ey13meQvjdP5M2lt1W5E=;
 b=nCtMQHj6MfUf/M2KMlwQlA3qG8FH414UUpmqyV/fFQg+HakhC9qCjLEnDG/dfqVdRT9ZfWsKNzBhAxI9P9Io90TBTAPIvi3wZA3rWLvueFPI3SBWNmG8ZcTwZWHjUKOfA6LZI/uYRxEFZxUX8JOnJQT5YMEbn5CUiKxRtVeGS32OZcU0UIGS4MRIVscKpmj+If/ihdeJoPLnicIgnmgasN5qh/+aeQIX+iCNrG847is3Nh2JotUEJkDZCGQQIVEs/hcgd2qUNHixR2PGWSCp4UhxdCqBs1MHw5c8/UFb9CijpO/UIDw9QxlHhBGzC5Fux3enZGgXfqdSMMwbvp79NA==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=lists.xenproject.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)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=tIlYNCEQ+4nfk+sRGPCKjR3ey13meQvjdP5M2lt1W5E=;
 b=pgtpAF1ZosNJ3024LD7SEw7MXSUBKz5aeessqqpYdYVsdWKQn+zKBdIwhuUk/Qn/l5o0qYSq4Hqp7BKHSzVvYxXsj9YrVHQJMyVsJcRMRg+DezXL6/Aw4j4dPQhrh4nnXzl2GaLjslmYwiRL2+cihjI5QTOs9BGAJdpO2ZxLTPI=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=SATLEXMB03.amd.com; pr=C
From: Stewart Hildebrand <stewart.hildebrand@amd.com>
To: <xen-devel@lists.xenproject.org>
CC: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>, Andrew Cooper
	<andrew.cooper3@citrix.com>, George Dunlap <george.dunlap@citrix.com>, "Jan
 Beulich" <jbeulich@suse.com>, Julien Grall <julien@xen.org>, "Stefano
 Stabellini" <sstabellini@kernel.org>, Wei Liu <wl@xen.org>, Volodymyr Babchuk
	<volodymyr_babchuk@epam.com>, Stewart Hildebrand <stewart.hildebrand@amd.com>
Subject: [PATCH v12 06/15] rangeset: add RANGESETF_no_print flag
Date: Tue, 9 Jan 2024 16:51:21 -0500
Message-ID: <20240109215145.430207-7-stewart.hildebrand@amd.com>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20240109215145.430207-1-stewart.hildebrand@amd.com>
References: <20240109215145.430207-1-stewart.hildebrand@amd.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: SJ1PEPF00001CE5:EE_|SJ0PR12MB7081:EE_
X-MS-Office365-Filtering-Correlation-Id: 75a7f3bf-8b1a-4200-87c0-08dc115d6077
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam: BCL:0;
X-Microsoft-Antispam-Message-Info:
	rUqNpyN1LLfmUKSPQX70rqqcylRCdeJ6msqMj/6uZlUk+udyT4kHmlWMV14X3qvNSW21UkormSg4qIAEhxGSwe58PE2VPF5xCT+5yvzrRktVawQzQOCwbAhJKWmiGRhJyNAlm6xP29Bei5Dn/QFggWE6OPySXjSCi2wK/CUFCsObM0YcOsQovI2UeRD9EJDEp8xnPib/wg3QOE5UuJG1HPtFf/bzwMDzhgt2nvf/zG4Uz7uBejtO6Xwt5XIYIolWW+Fq8WswmTKc3O3JUTNxgZxrgCf1iVGat1IEqIbUWmigHBSigxDXTJlgdbH02+ywpxWcG+RP4qcH+xkkxR41HsBx3C1Fbuzmw0JB/HS3Xi9YKG9KjTr7WLN6kUpWasNm0wx8r3cCBWqvLdB5ktQyrTw6lrOCnX5GXVnPS6i75klS4sNPkIwBJ+wZFXuslsXcKT35mnSBm749aiDtwWTguf12PnIh5tBFlkgjaA7lVeKuxbPfAHMLkxyeUO2BZ5IKxsKWy9da7P9Fjx7JccS1L59CdRKG1/g0mqDWpfRwYu+62TM8k0OioU12hxHNj0yTvRW8NB+8qJ7o/NvRkGCPAADU1Mxsz88LiDB+H8zp/c9XWtWkbwGszwKM//DMA7c2MRGg1Zv6poXtjn412KaPCdy8qJAd61lRzh/ks8nIktbTnpZ/Q9gl6zX+Mmne/EQEp9avRO0mnjKVIyHgNXJvgY6piNgW57sCv8I5TST0wrFZ9Wr7E1p6Qbb5Z45WrqEuQLcP7lN1r25vPj4KctumwA==
X-Forefront-Antispam-Report:
	CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB03.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230031)(4636009)(39860400002)(376002)(136003)(346002)(396003)(230922051799003)(1800799012)(186009)(64100799003)(82310400011)(451199024)(36840700001)(40470700004)(46966006)(40460700003)(40480700001)(356005)(41300700001)(36756003)(81166007)(86362001)(36860700001)(2906002)(82740400003)(47076005)(83380400001)(26005)(1076003)(426003)(2616005)(336012)(6666004)(478600001)(70206006)(6916009)(70586007)(316002)(54906003)(8936002)(4326008)(5660300002)(8676002)(44832011)(36900700001);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Jan 2024 21:53:12.6593
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 75a7f3bf-8b1a-4200-87c0-08dc115d6077
X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB03.amd.com]
X-MS-Exchange-CrossTenant-AuthSource:
	SJ1PEPF00001CE5.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ0PR12MB7081

From: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>

There are range sets which should not be printed, so introduce a flag
which allows marking those as such. Implement relevant logic to skip
such entries while printing.

While at it also simplify the definition of the flags by directly
defining those without helpers.

Suggested-by: Jan Beulich <jbeulich@suse.com>
Signed-off-by: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>
Signed-off-by: Volodymyr Babchuk <volodymyr_babchuk@epam.com>
Reviewed-by: Jan Beulich <jbeulich@suse.com>
Signed-off-by: Stewart Hildebrand <stewart.hildebrand@amd.com>
---
Since v5:
- comment indentation (Jan)
Since v1:
- update BUG_ON with new flag
- simplify the definition of the flags
---
 xen/common/rangeset.c      | 5 ++++-
 xen/include/xen/rangeset.h | 5 +++--
 2 files changed, 7 insertions(+), 3 deletions(-)

diff --git a/xen/common/rangeset.c b/xen/common/rangeset.c
index 16a4c3b842e6..0ccd53caac52 100644
--- a/xen/common/rangeset.c
+++ b/xen/common/rangeset.c
@@ -433,7 +433,7 @@ struct rangeset *rangeset_new(
     INIT_LIST_HEAD(&r->range_list);
     r->nr_ranges = -1;
 
-    BUG_ON(flags & ~RANGESETF_prettyprint_hex);
+    BUG_ON(flags & ~(RANGESETF_prettyprint_hex | RANGESETF_no_print));
     r->flags = flags;
 
     safe_strcpy(r->name, name ?: "(no name)");
@@ -575,6 +575,9 @@ void rangeset_domain_printk(
 
     list_for_each_entry ( r, &d->rangesets, rangeset_list )
     {
+        if ( r->flags & RANGESETF_no_print )
+            continue;
+
         printk("    ");
         rangeset_printk(r);
         printk("\n");
diff --git a/xen/include/xen/rangeset.h b/xen/include/xen/rangeset.h
index 8be0722787ed..87bd956962b5 100644
--- a/xen/include/xen/rangeset.h
+++ b/xen/include/xen/rangeset.h
@@ -49,8 +49,9 @@ void rangeset_limit(
 
 /* Flags for passing to rangeset_new(). */
  /* Pretty-print range limits in hexadecimal. */
-#define _RANGESETF_prettyprint_hex 0
-#define RANGESETF_prettyprint_hex  (1U << _RANGESETF_prettyprint_hex)
+#define RANGESETF_prettyprint_hex   (1U << 0)
+ /* Do not print entries marked with this flag. */
+#define RANGESETF_no_print          (1U << 1)
 
 bool __must_check rangeset_is_empty(
     const struct rangeset *r);
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Tue Jan 09 21:53:37 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 09 Jan 2024 21:53:37 +0000
Received: from list by lists.xenproject.org with outflank-mailman.665038.1035240 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNK2T-0002e0-5w; Tue, 09 Jan 2024 21:53:37 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 665038.1035240; Tue, 09 Jan 2024 21:53:37 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNK2T-0002dt-3B; Tue, 09 Jan 2024 21:53:37 +0000
Received: by outflank-mailman (input) for mailman id 665038;
 Tue, 09 Jan 2024 21:53:35 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=ONpl=IT=amd.com=Stewart.Hildebrand@srs-se1.protection.inumbo.net>)
 id 1rNK2R-0007gG-KF
 for xen-devel@lists.xenproject.org; Tue, 09 Jan 2024 21:53:35 +0000
Received: from NAM10-DM6-obe.outbound.protection.outlook.com
 (mail-dm6nam10on2062c.outbound.protection.outlook.com
 [2a01:111:f400:7e88::62c])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 88364cd0-af39-11ee-9b0f-b553b5be7939;
 Tue, 09 Jan 2024 22:53:33 +0100 (CET)
Received: from BY5PR03CA0024.namprd03.prod.outlook.com (2603:10b6:a03:1e0::34)
 by BL0PR12MB4900.namprd12.prod.outlook.com (2603:10b6:208:1c1::23)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7159.23; Tue, 9 Jan
 2024 21:53:29 +0000
Received: from SJ1PEPF00001CE5.namprd03.prod.outlook.com
 (2603:10b6:a03:1e0:cafe::d0) by BY5PR03CA0024.outlook.office365.com
 (2603:10b6:a03:1e0::34) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7159.23 via Frontend
 Transport; Tue, 9 Jan 2024 21:53:29 +0000
Received: from SATLEXMB03.amd.com (165.204.84.17) by
 SJ1PEPF00001CE5.mail.protection.outlook.com (10.167.242.21) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.7181.14 via Frontend Transport; Tue, 9 Jan 2024 21:53:29 +0000
Received: from SATLEXMB05.amd.com (10.181.40.146) by SATLEXMB03.amd.com
 (10.181.40.144) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.34; Tue, 9 Jan
 2024 15:53:28 -0600
Received: from SATLEXMB04.amd.com (10.181.40.145) by SATLEXMB05.amd.com
 (10.181.40.146) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.34; Tue, 9 Jan
 2024 15:53:27 -0600
Received: from ubuntu.mshome.net (10.180.168.240) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server id 15.1.2507.34 via Frontend
 Transport; Tue, 9 Jan 2024 15:53:21 -0600
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 88364cd0-af39-11ee-9b0f-b553b5be7939
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=aqAc6GkKdA6GodqTHVzOU9FGo71zLMXNd3B5l8OeO/weuDPdB08WgVusoETSjkC/AG2GMSZTKDml4xkT8Rt52PkAPUyDhDDNsXOnBnCqoTGzwyvrIsuIUMQnOVAr9eHCDkDVEhNOweeVY8zBaVsjNEkWSXi4YAa+U+8L5oomJxfAZF95Xumh8KsqER43p+lEoUUJc8YI0EToN+FizBg96fH0CjH2/eV3IeR84n+CWEQZxVCTDid1whp/mgvUcoAxsLv667uRaRYanNqS1EFnT/8juVITD2BpPqqrx2n9oO2H3pXfPgSORZy9OZ5wYkCdXd4De3t5lPFbZ0x2fgzAYQ==
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=PqQc6f/gIUwm1XzrHE/xObpB2I0zC8wUwYomXWUX7YU=;
 b=UgJ/TYSOBt/AMeAlbs08A+/uJR6IB7qtNhTlGLMX+VYv6GbBcn/amZHBHGb9FkAnKiJtqTUG4R1b0niNQwQZY3mXPXI6FWLgzDx5+/SXqEH0MYSseg83ELe0LMSVJV0a82jpB0ikb9aSdU+hdZLYOc81mr0uUILuX2zKLeitsmgbF1dKsIwpp+b9VsPsKJU0ursUYpKbT8ZZo+J/GPQBc84+Kyewuob9P+GblytYCc+8AVkayvuWte0nvHuihriS+Me1maCFY378tvO+GASZLSv+BBEKTrF12vwniyA8NG5U8J1iR+3r7LwsXKtMlVLQd4CWgYSM76uB8UxHykNOAw==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=lists.xenproject.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)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=PqQc6f/gIUwm1XzrHE/xObpB2I0zC8wUwYomXWUX7YU=;
 b=XSPc1GoBid0FI/MPj7zulTa9Ah5xyopFnvsg/pCbESnXyfXU7HwGvoaufJFgbF57uOjTcXiRw101O0n269xFVrITlOjkM0eKXkF9WA+O1GYSi0teCQA6tXJNYdIiAC22ZU73zxkRrVTmE++N6RKz3yIwALlICJWFztqNWQnofyo=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=SATLEXMB03.amd.com; pr=C
From: Stewart Hildebrand <stewart.hildebrand@amd.com>
To: <xen-devel@lists.xenproject.org>
CC: Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>, Andrew Cooper
	<andrew.cooper3@citrix.com>, George Dunlap <george.dunlap@citrix.com>, "Jan
 Beulich" <jbeulich@suse.com>, Julien Grall <julien@xen.org>, "Stefano
 Stabellini" <sstabellini@kernel.org>, Wei Liu <wl@xen.org>, Volodymyr Babchuk
	<volodymyr_babchuk@epam.com>, Stewart Hildebrand <stewart.hildebrand@amd.com>
Subject: [PATCH v12 07/15] rangeset: add rangeset_purge() function
Date: Tue, 9 Jan 2024 16:51:22 -0500
Message-ID: <20240109215145.430207-8-stewart.hildebrand@amd.com>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20240109215145.430207-1-stewart.hildebrand@amd.com>
References: <20240109215145.430207-1-stewart.hildebrand@amd.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: SJ1PEPF00001CE5:EE_|BL0PR12MB4900:EE_
X-MS-Office365-Filtering-Correlation-Id: 469cb7ec-29f2-4343-69a9-08dc115d6a35
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam: BCL:0;
X-Microsoft-Antispam-Message-Info:
	q8oMiLfRnHbOKLCfZhqOIxxl8ht/vQuBxOjuWD5VvEKhBXMgmximr6mkE7ffa+TCLBGUu4qEPswvHu208VkUrzDBJwvXS8XogoOUzcMOYqmdbQ7hbtmXXWCIA2PzECyRGSQA93RSnu3C9NJMx45A1w7DXwq5gjOg9FzSgLjfwH1ITtp+0qhOAox/z2R9ERJ0lX13rsBwPqqoVs6BgbZe/0SFD1tn59rgogpyNCXJYwnwNYcl6H4OjsKFvhkoJvB0fZ36VIE/CmJWAJBKXr4XNyYMhqheo02f8zYWbPbIQxyEVRLPTpdiQ0cDu3HLW0vvoiagYOcx8Vum/w01Q3Cy9VQxXaAtM+WcujfR+iWZJcPxhSKGcOzAx3adovA+9nRT+HkH6umh5W+IX0MQXzw3ZeOENwO09E8UGTi3ESqhkkkMI9IlN7ZWbRFR3eBqYNcgdSW8Ep0ink2YQrNtEQo4lixQxozhVxIFbosGIOOo9x0nC0BiAf0hKE0uT/lTrEegQc+edrSfv2Fqph0TvsFM08SPk/7gmrzNLkbVjFhHLhApn16Z0lDdo4Wzp7bt1nVPaBtrPYYuVMJslm5fcxPmfWA2iUF3KCvuR3U6zI7vcu2EThz5hH10uQQRNjTjYgpCoiJKeof0psmbBr/o0RnbiaivLDuoKj/SEQTnoXbNN0dBhuqN6cyaD+9TS5S9vxKtD4JQWl6ohayvGqg+S1S5rSBozzsmKzdLbctShBTYnNcsely9IpeWKEaimayACV94Ui8gBcItggrAYd+V/pDT2A==
X-Forefront-Antispam-Report:
	CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB03.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230031)(4636009)(346002)(396003)(136003)(39860400002)(376002)(230922051799003)(451199024)(64100799003)(1800799012)(82310400011)(186009)(40470700004)(36840700001)(46966006)(2906002)(82740400003)(5660300002)(86362001)(41300700001)(81166007)(356005)(36756003)(36860700001)(316002)(54906003)(426003)(336012)(8936002)(8676002)(47076005)(2616005)(26005)(70206006)(40460700003)(70586007)(40480700001)(478600001)(1076003)(6916009)(83380400001)(4326008)(44832011)(36900700001);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Jan 2024 21:53:29.0033
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 469cb7ec-29f2-4343-69a9-08dc115d6a35
X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB03.amd.com]
X-MS-Exchange-CrossTenant-AuthSource:
	SJ1PEPF00001CE5.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: BL0PR12MB4900

From: Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>

This function can be used when user wants to remove all rangeset
entries but do not want to destroy rangeset itself.

Signed-off-by: Volodymyr Babchuk <volodymyr_babchuk@epam.com>
Signed-off-by: Stewart Hildebrand <stewart.hildebrand@amd.com>
---
Changes in v12:
 - s/rangeset_empty/rangeset_purge/
Changes in v11:
 - Now the function only empties rangeset, without removing it from
   domain's list

Changes in v10:
 - New in v10. The function is used in "vpci/header: handle p2m range sets per BAR"
---
 xen/common/rangeset.c      | 16 ++++++++++++----
 xen/include/xen/rangeset.h |  3 ++-
 2 files changed, 14 insertions(+), 5 deletions(-)

diff --git a/xen/common/rangeset.c b/xen/common/rangeset.c
index 0ccd53caac52..b75590f90744 100644
--- a/xen/common/rangeset.c
+++ b/xen/common/rangeset.c
@@ -448,11 +448,20 @@ struct rangeset *rangeset_new(
     return r;
 }
 
-void rangeset_destroy(
-    struct rangeset *r)
+void rangeset_purge(struct rangeset *r)
 {
     struct range *x;
 
+    if ( r == NULL )
+        return;
+
+    while ( (x = first_range(r)) != NULL )
+        destroy_range(r, x);
+}
+
+void rangeset_destroy(
+    struct rangeset *r)
+{
     if ( r == NULL )
         return;
 
@@ -463,8 +472,7 @@ void rangeset_destroy(
         spin_unlock(&r->domain->rangesets_lock);
     }
 
-    while ( (x = first_range(r)) != NULL )
-        destroy_range(r, x);
+    rangeset_purge(r);
 
     xfree(r);
 }
diff --git a/xen/include/xen/rangeset.h b/xen/include/xen/rangeset.h
index 87bd956962b5..96c918082501 100644
--- a/xen/include/xen/rangeset.h
+++ b/xen/include/xen/rangeset.h
@@ -56,7 +56,7 @@ void rangeset_limit(
 bool __must_check rangeset_is_empty(
     const struct rangeset *r);
 
-/* Add/claim/remove/query a numeric range. */
+/* Add/claim/remove/query/purge a numeric range. */
 int __must_check rangeset_add_range(
     struct rangeset *r, unsigned long s, unsigned long e);
 int __must_check rangeset_claim_range(struct rangeset *r, unsigned long size,
@@ -70,6 +70,7 @@ bool __must_check rangeset_overlaps_range(
 int rangeset_report_ranges(
     struct rangeset *r, unsigned long s, unsigned long e,
     int (*cb)(unsigned long s, unsigned long e, void *data), void *ctxt);
+void rangeset_purge(struct rangeset *r);
 
 /*
  * Note that the consume function can return an error value apart from
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Tue Jan 09 21:54:43 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 09 Jan 2024 21:54:43 +0000
Received: from list by lists.xenproject.org with outflank-mailman.665048.1035251 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNK3W-0003T9-MV; Tue, 09 Jan 2024 21:54:42 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 665048.1035251; Tue, 09 Jan 2024 21:54:42 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNK3W-0003T2-Jr; Tue, 09 Jan 2024 21:54:42 +0000
Received: by outflank-mailman (input) for mailman id 665048;
 Tue, 09 Jan 2024 21:54:42 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=ONpl=IT=amd.com=Stewart.Hildebrand@srs-se1.protection.inumbo.net>)
 id 1rNK3W-0003SZ-6e
 for xen-devel@lists.xenproject.org; Tue, 09 Jan 2024 21:54:42 +0000
Received: from NAM10-DM6-obe.outbound.protection.outlook.com
 (mail-dm6nam10on2062a.outbound.protection.outlook.com
 [2a01:111:f400:7e88::62a])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id b023d02b-af39-11ee-98ef-6d05b1d4d9a1;
 Tue, 09 Jan 2024 22:54:40 +0100 (CET)
Received: from SJ0PR03CA0252.namprd03.prod.outlook.com (2603:10b6:a03:3a0::17)
 by SJ2PR12MB9190.namprd12.prod.outlook.com (2603:10b6:a03:554::7)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7159.23; Tue, 9 Jan
 2024 21:54:34 +0000
Received: from SJ1PEPF00001CEA.namprd03.prod.outlook.com
 (2603:10b6:a03:3a0:cafe::ac) by SJ0PR03CA0252.outlook.office365.com
 (2603:10b6:a03:3a0::17) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7181.17 via Frontend
 Transport; Tue, 9 Jan 2024 21:54:34 +0000
Received: from SATLEXMB03.amd.com (165.204.84.17) by
 SJ1PEPF00001CEA.mail.protection.outlook.com (10.167.242.26) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.7181.14 via Frontend Transport; Tue, 9 Jan 2024 21:54:34 +0000
Received: from SATLEXMB04.amd.com (10.181.40.145) by SATLEXMB03.amd.com
 (10.181.40.144) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.34; Tue, 9 Jan
 2024 15:54:34 -0600
Received: from ubuntu.mshome.net (10.180.168.240) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server id 15.1.2507.34 via Frontend
 Transport; Tue, 9 Jan 2024 15:54:27 -0600
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: b023d02b-af39-11ee-98ef-6d05b1d4d9a1
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=Qc0BiCiCQS3BoatDQnZLjAwgeVo73gibk18ormyzrbMVHZESfBuByQwRULCkLskZIWw2kOVCGhLuL8sdFJCm1EcHkXPcwKS9HgeEIk1xuqpE+1CJ79Iq9wJQWMnjp2BVdOLHA5AlUDrlCjVfN2xbu9+icBg40CUC/cw4dDosWUXdDpeHMf6Pbv+g+k/pRKOtvZTncuG+/+iJxWEr4ZblfgfQv9LkfwKEWwg8HrHhC5fxhKYs9nD/LJ/snht6FX7JftNgxDoHpItEYFfGcbuRlQjjg+CrNT42oR+a4Mc5mWDm4TNbc9sAzwHk3fIUvPAz8hXVsY9olnmmaAjb+405ZA==
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=xXxqm2R+KG+DNPuVmoVRc8P1hQTGMm+S12P871URecc=;
 b=frVQVoanV4MZOE+xUTMmzl9dbSacIETz6QfHNacws+yhfzrZr4MXANupHYDKn3jLDCv9LcqmsnCKqaGdxBOxKjY+MzhZpDDlWTOfXL8zRMCmKg/Wp8mFhRazEfuZe+LIuyDd2V1F3QYZoSIl1NZxT7YqugQpPBu0bx3CQPVVPMtVDQYK1IuW3/AgXWQ64FuVcW53qOrWf6QzpHhmsidcpalEJlxU+63hAiYOSrSlFGF7+YoTQqAN5YRcQIGvcdh/HrcB4icHc3MOdTPT9ZQW+Si9WiykuntKjnDyeIyO1xF1pFV2BBXhYgAycizMLioZTPmSL6xFmplmSLBtIgYMWw==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=lists.xenproject.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)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=xXxqm2R+KG+DNPuVmoVRc8P1hQTGMm+S12P871URecc=;
 b=3EmUpLLbKy4CDmYgkHTU5CgcnTfSWmJT0U98lN9s//5/vWrZAFJbG15vOeDM3s4SP1pZcFWMh5QwW6uUXg1lqjVgieKJ+bzGo/QQiZJm6ttdDhsv4ibRE+hLEm9ADXBus3rcVFQLRlNpgqm/bIRpwofu97fh4FDFF7Xd6CbSjqc=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=SATLEXMB03.amd.com; pr=C
From: Stewart Hildebrand <stewart.hildebrand@amd.com>
To: <xen-devel@lists.xenproject.org>
CC: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>, "Stefano
 Stabellini" <sstabellini@kernel.org>, Julien Grall <julien@xen.org>,
	"Bertrand Marquis" <bertrand.marquis@arm.com>, Michal Orzel
	<michal.orzel@amd.com>, Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>, "Volodymyr
 Babchuk" <volodymyr_babchuk@epam.com>, Stewart Hildebrand
	<stewart.hildebrand@amd.com>
Subject: [PATCH v12 12/15] xen/arm: translate virtual PCI bus topology for guests
Date: Tue, 9 Jan 2024 16:51:27 -0500
Message-ID: <20240109215145.430207-13-stewart.hildebrand@amd.com>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20240109215145.430207-1-stewart.hildebrand@amd.com>
References: <20240109215145.430207-1-stewart.hildebrand@amd.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: SJ1PEPF00001CEA:EE_|SJ2PR12MB9190:EE_
X-MS-Office365-Filtering-Correlation-Id: d40471b3-af2f-4f68-767f-08dc115d916f
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam: BCL:0;
X-Microsoft-Antispam-Message-Info:
	FoW/3jSMKiVHG0OLtejhEQLKvbkbVN5BcoHU/6kvYF14nS7GL1OjifUJil7VpSQGyr4tu5BUWB4rUzFEBZMXo06xw2k+8rn7WkzXaGjI2T42pHG9onvHZHGPhnA4rAYE8MuC7A3v5hEA/N0TPPUOWUUoqyFo2JTXVNhSQB23UnKP7hkFehYjw3e1Sc7e3so5DdmWq5rYDBlBE6cWCEllgYA/C5dntJoKEHRcrl8atCtvPjN9FLluOcFC9O/jEw56TteP2t9W8IL1Q7MJnbgWLnQKIuF+JMlJJoUl8nIgSvYURoAoSaDiRD7i89ExU2OFHLyKrfks4SXFQk07Oxi1JFkBX/igItNjIvxx2Am4wfykIeyZ2Fls5EolhhguW/ZoV4FlAkPDOm1fL4ipP/rIdlyP2tDm2Plb67xLpwRpDDO9tZzIcBAqMaHXl+BYkled4vKBjIB4KEm9XaqEp6NHNaIccrTsLbRzsLhJSUJl3JJQ57HjAh3aYBYOA6BqFoHRHCLBxQWqv2qkco0YWS97Lj0yOM8A6xmHHq35IhR7TkXExNSbv03W1ugZvwaSqK4Q90E81vJbJ704Tv0/tPIdnUtg3KJSn33W/DZUmXKMsFvYPQ1l8FbA9KwnMtwzMPHxlsmkBhqrIeWeOXL/l6esvpj0eaUrEzTOdAV9szMfS4Em1oJ5hR0QMcdsUleN6BlMGbyh9AFHqJlAxDMSZIOa8LvCCgVYpwLPUnDKdGhAbRQPcluK7b1k1/HD6ijDuNocORldzMmvBlBEwfLNhYvbfQ==
X-Forefront-Antispam-Report:
	CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB03.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230031)(4636009)(396003)(39860400002)(136003)(376002)(346002)(230922051799003)(82310400011)(1800799012)(186009)(451199024)(64100799003)(46966006)(36840700001)(40470700004)(40480700001)(40460700003)(2906002)(478600001)(36860700001)(5660300002)(81166007)(4326008)(44832011)(356005)(41300700001)(8936002)(316002)(70206006)(70586007)(54906003)(36756003)(6916009)(2616005)(8676002)(86362001)(426003)(1076003)(26005)(336012)(83380400001)(47076005)(82740400003)(36900700001);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Jan 2024 21:54:34.8149
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: d40471b3-af2f-4f68-767f-08dc115d916f
X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB03.amd.com]
X-MS-Exchange-CrossTenant-AuthSource:
	SJ1PEPF00001CEA.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ2PR12MB9190

From: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>

There are three  originators for the PCI configuration space access:
1. The domain that owns physical host bridge: MMIO handlers are
there so we can update vPCI register handlers with the values
written by the hardware domain, e.g. physical view of the registers
vs guest's view on the configuration space.
2. Guest access to the passed through PCI devices: we need to properly
map virtual bus topology to the physical one, e.g. pass the configuration
space access to the corresponding physical devices.
3. Emulated host PCI bridge access. It doesn't exist in the physical
topology, e.g. it can't be mapped to some physical host bridge.
So, all access to the host bridge itself needs to be trapped and
emulated.

Signed-off-by: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>
Signed-off-by: Volodymyr Babchuk <volodymyr_babchuk@epam.com>
Signed-off-by: Stewart Hildebrand <stewart.hildebrand@amd.com>
---
In v11:
- Fixed format issues
- Added ASSERT_UNREACHABLE() to the dummy implementation of
vpci_translate_virtual_device()
- Moved variable in vpci_sbdf_from_gpa(), now it is easier to follow
the logic in the function
Since v9:
- Commend about required lock replaced with ASSERT()
- Style fixes
- call to vpci_translate_virtual_device folded into vpci_sbdf_from_gpa
Since v8:
- locks moved out of vpci_translate_virtual_device()
Since v6:
- add pcidevs locking to vpci_translate_virtual_device
- update wrt to the new locking scheme
Since v5:
- add vpci_translate_virtual_device for #ifndef CONFIG_HAS_VPCI_GUEST_SUPPORT
  case to simplify ifdefery
- add ASSERT(!is_hardware_domain(d)); to vpci_translate_virtual_device
- reset output register on failed virtual SBDF translation
Since v4:
- indentation fixes
- constify struct domain
- updated commit message
- updates to the new locking scheme (pdev->vpci_lock)
Since v3:
- revisit locking
- move code to vpci.c
Since v2:
 - pass struct domain instead of struct vcpu
 - constify arguments where possible
 - gate relevant code with CONFIG_HAS_VPCI_GUEST_SUPPORT
New in v2
---
 xen/arch/arm/vpci.c     | 47 +++++++++++++++++++++++++++++++----------
 xen/drivers/vpci/vpci.c | 24 +++++++++++++++++++++
 xen/include/xen/vpci.h  | 12 +++++++++++
 3 files changed, 72 insertions(+), 11 deletions(-)

diff --git a/xen/arch/arm/vpci.c b/xen/arch/arm/vpci.c
index 3bc4bb55082a..7a6a0017d132 100644
--- a/xen/arch/arm/vpci.c
+++ b/xen/arch/arm/vpci.c
@@ -7,31 +7,51 @@
 
 #include <asm/mmio.h>
 
-static pci_sbdf_t vpci_sbdf_from_gpa(const struct pci_host_bridge *bridge,
-                                     paddr_t gpa)
+static bool vpci_sbdf_from_gpa(struct domain *d,
+                               const struct pci_host_bridge *bridge,
+                               paddr_t gpa, pci_sbdf_t *sbdf)
 {
-    pci_sbdf_t sbdf;
+    bool translated = true;
+
+    ASSERT(sbdf);
 
     if ( bridge )
     {
-        sbdf.sbdf = VPCI_ECAM_BDF(gpa - bridge->cfg->phys_addr);
-        sbdf.seg = bridge->segment;
-        sbdf.bus += bridge->cfg->busn_start;
+        sbdf->sbdf = VPCI_ECAM_BDF(gpa - bridge->cfg->phys_addr);
+        sbdf->seg = bridge->segment;
+        sbdf->bus += bridge->cfg->busn_start;
     }
     else
-        sbdf.sbdf = VPCI_ECAM_BDF(gpa - GUEST_VPCI_ECAM_BASE);
+    {
+        /*
+         * For the passed through devices we need to map their virtual SBDF
+         * to the physical PCI device being passed through.
+         */
+        sbdf->sbdf = VPCI_ECAM_BDF(gpa - GUEST_VPCI_ECAM_BASE);
+        read_lock(&d->pci_lock);
+        translated = vpci_translate_virtual_device(d, sbdf);
+        read_unlock(&d->pci_lock);
+    }
 
-    return sbdf;
+    return translated;
 }
 
 static int vpci_mmio_read(struct vcpu *v, mmio_info_t *info,
                           register_t *r, void *p)
 {
     struct pci_host_bridge *bridge = p;
-    pci_sbdf_t sbdf = vpci_sbdf_from_gpa(bridge, info->gpa);
+    pci_sbdf_t sbdf;
     /* data is needed to prevent a pointer cast on 32bit */
     unsigned long data;
 
+    ASSERT(!bridge == !is_hardware_domain(v->domain));
+
+    if ( !vpci_sbdf_from_gpa(v->domain, bridge, info->gpa, &sbdf) )
+    {
+        *r = ~0UL;
+        return 1;
+    }
+
     if ( vpci_ecam_read(sbdf, ECAM_REG_OFFSET(info->gpa),
                         1U << info->dabt.size, &data) )
     {
@@ -39,7 +59,7 @@ static int vpci_mmio_read(struct vcpu *v, mmio_info_t *info,
         return 1;
     }
 
-    *r = ~0ul;
+    *r = ~0UL;
 
     return 0;
 }
@@ -48,7 +68,12 @@ static int vpci_mmio_write(struct vcpu *v, mmio_info_t *info,
                            register_t r, void *p)
 {
     struct pci_host_bridge *bridge = p;
-    pci_sbdf_t sbdf = vpci_sbdf_from_gpa(bridge, info->gpa);
+    pci_sbdf_t sbdf;
+
+    ASSERT(!bridge == !is_hardware_domain(v->domain));
+
+    if ( !vpci_sbdf_from_gpa(v->domain, bridge, info->gpa, &sbdf) )
+        return 1;
 
     return vpci_ecam_write(sbdf, ECAM_REG_OFFSET(info->gpa),
                            1U << info->dabt.size, r);
diff --git a/xen/drivers/vpci/vpci.c b/xen/drivers/vpci/vpci.c
index 57cfabfd9ad3..6e2d428d691b 100644
--- a/xen/drivers/vpci/vpci.c
+++ b/xen/drivers/vpci/vpci.c
@@ -81,6 +81,30 @@ static int add_virtual_device(struct pci_dev *pdev)
     return 0;
 }
 
+/*
+ * Find the physical device which is mapped to the virtual device
+ * and translate virtual SBDF to the physical one.
+ */
+bool vpci_translate_virtual_device(const struct domain *d, pci_sbdf_t *sbdf)
+{
+    const struct pci_dev *pdev;
+
+    ASSERT(!is_hardware_domain(d));
+    ASSERT(rw_is_locked(&d->pci_lock));
+
+    for_each_pdev ( d, pdev )
+    {
+        if ( pdev->vpci && (pdev->vpci->guest_sbdf.sbdf == sbdf->sbdf) )
+        {
+            /* Replace guest SBDF with the physical one. */
+            *sbdf = pdev->sbdf;
+            return true;
+        }
+    }
+
+    return false;
+}
+
 #endif /* CONFIG_HAS_VPCI_GUEST_SUPPORT */
 
 void vpci_deassign_device(struct pci_dev *pdev)
diff --git a/xen/include/xen/vpci.h b/xen/include/xen/vpci.h
index 053467f04982..3cfd9a401178 100644
--- a/xen/include/xen/vpci.h
+++ b/xen/include/xen/vpci.h
@@ -302,6 +302,18 @@ static inline bool __must_check vpci_process_pending(struct vcpu *v)
 }
 #endif
 
+#ifdef CONFIG_HAS_VPCI_GUEST_SUPPORT
+bool vpci_translate_virtual_device(const struct domain *d, pci_sbdf_t *sbdf);
+#else
+static inline bool vpci_translate_virtual_device(const struct domain *d,
+                                                 pci_sbdf_t *sbdf)
+{
+    ASSERT_UNREACHABLE();
+
+    return false;
+}
+#endif
+
 #endif
 
 /*
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Tue Jan 09 21:55:02 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 09 Jan 2024 21:55:02 +0000
Received: from list by lists.xenproject.org with outflank-mailman.665050.1035261 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNK3q-0003tn-2T; Tue, 09 Jan 2024 21:55:02 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 665050.1035261; Tue, 09 Jan 2024 21:55:02 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNK3p-0003tg-Tx; Tue, 09 Jan 2024 21:55:01 +0000
Received: by outflank-mailman (input) for mailman id 665050;
 Tue, 09 Jan 2024 21:55:00 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=ONpl=IT=amd.com=Stewart.Hildebrand@srs-se1.protection.inumbo.net>)
 id 1rNK3o-0003SZ-Qy
 for xen-devel@lists.xenproject.org; Tue, 09 Jan 2024 21:55:00 +0000
Received: from NAM12-MW2-obe.outbound.protection.outlook.com
 (mail-mw2nam12on2062c.outbound.protection.outlook.com
 [2a01:111:f400:fe5a::62c])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id bb6fe35c-af39-11ee-98ef-6d05b1d4d9a1;
 Tue, 09 Jan 2024 22:55:00 +0100 (CET)
Received: from SJ0PR05CA0188.namprd05.prod.outlook.com (2603:10b6:a03:330::13)
 by PH0PR12MB7888.namprd12.prod.outlook.com (2603:10b6:510:28b::20)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7159.23; Tue, 9 Jan
 2024 21:54:54 +0000
Received: from SJ1PEPF00001CEB.namprd03.prod.outlook.com
 (2603:10b6:a03:330:cafe::cb) by SJ0PR05CA0188.outlook.office365.com
 (2603:10b6:a03:330::13) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7181.17 via Frontend
 Transport; Tue, 9 Jan 2024 21:54:53 +0000
Received: from SATLEXMB03.amd.com (165.204.84.17) by
 SJ1PEPF00001CEB.mail.protection.outlook.com (10.167.242.27) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.7181.14 via Frontend Transport; Tue, 9 Jan 2024 21:54:53 +0000
Received: from SATLEXMB04.amd.com (10.181.40.145) by SATLEXMB03.amd.com
 (10.181.40.144) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.34; Tue, 9 Jan
 2024 15:54:50 -0600
Received: from ubuntu.mshome.net (10.180.168.240) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server id 15.1.2507.34 via Frontend
 Transport; Tue, 9 Jan 2024 15:54:44 -0600
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: bb6fe35c-af39-11ee-98ef-6d05b1d4d9a1
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=IiBl8ClfkYnTxi/Xyj8Ga5UXNGV/baEq5apBTm36tQiOpxa1C8ohnoDpWyWlT62vrmiwsUa566Idg4vDHl8MWq2Tujf60V4D5QGdFSz19gHGQxiTyp6n+Jxzz7M3UoTcfi9kMesPtoiRIcvWSFVvr/Zn8XgPuHGT2KB5SRpezY8zpCRNYvsGp7bB2ESJT2kJTt3kanRjqp5UwBqcoYuuvQoaXZpxeGV03PA5gWBPPCMRUf2hIOmtifBG/IxCwYlvJtYDUEUodVooMBWDE1yvtP+EZ1BV3O9Dsx5uWtcdjiRzga5bU8DxMVMbXotNWAmnK7seszn4sEEHmQJhmV/6Xw==
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=PsoOL/G8DIgXV37+ao0tajW6v6ZQDcdP8FQCKLy06D4=;
 b=S1ytKzBBBuRm/e9Ea9bFI4XiicMcIx/YHQFCKg8tw4gaH+KErmHoIxJQWM0RPreYG3FI7FUk3h9IrWI6AiwIC3kWLH1SpFGjPzmo9EKiAe8iohKLo7TCCfBKvuO9KvfgAeHYy6iUOvNc1wZtgvELtxjUL0YZaPs/hAsPHlhdwuAmy714ePS5egRFCm9wkg1lg0wblzOAIRgBpfYBL2m0JqXnZtWw+qW6iO1S/H7E7Hz2thGfB9gLgOpeyhpw7da+2PwzMhl8Lzi+XUp5cz2xy5s4scJ558/wboqVspBwvarkEy1sCNxo2+k9KCsiOobRo55RIieUUpUZSxkZZ0YJuQ==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=lists.xenproject.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)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=PsoOL/G8DIgXV37+ao0tajW6v6ZQDcdP8FQCKLy06D4=;
 b=EMUPFIapm7SX2CZwngMiuUbU8sSFWQO/3WmL/bkEpCucvt1HdA3ISwSAi3Nbh2QDlc5OEOnFV6KzrSGG5dUs8WZKLdtlgtlYgu/3GIC7q7L+Mxi55csLeZOY5FLCCt3LqJv4XdIzBwUpMNRrxb+31/W9YQ+7GGG1J2HlBP91nfQ=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=SATLEXMB03.amd.com; pr=C
From: Stewart Hildebrand <stewart.hildebrand@amd.com>
To: <xen-devel@lists.xenproject.org>
CC: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>, "Stefano
 Stabellini" <sstabellini@kernel.org>, Julien Grall <julien@xen.org>,
	"Bertrand Marquis" <bertrand.marquis@arm.com>, Michal Orzel
	<michal.orzel@amd.com>, Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
	Julien Grall <jgrall@amazon.com>, Volodymyr Babchuk
	<volodymyr_babchuk@epam.com>, "Stewart Hildebrand"
	<stewart.hildebrand@amd.com>
Subject: [PATCH v12 13/15] xen/arm: account IO handlers for emulated PCI MSI-X
Date: Tue, 9 Jan 2024 16:51:28 -0500
Message-ID: <20240109215145.430207-14-stewart.hildebrand@amd.com>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20240109215145.430207-1-stewart.hildebrand@amd.com>
References: <20240109215145.430207-1-stewart.hildebrand@amd.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: SJ1PEPF00001CEB:EE_|PH0PR12MB7888:EE_
X-MS-Office365-Filtering-Correlation-Id: 670b2910-6897-4576-99ce-08dc115d9c87
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam: BCL:0;
X-Microsoft-Antispam-Message-Info:
	xbttFXelL7degQf26Jl6Kd01+Kx1dejBkgh0Rnlei0Q1P0CrFRAytzXQmoAeWWFcuKE2uNxATcJ8dHPD/GiMYdXi+8x9V5e8+XRFIX+2GkDIBYQao4JQ8/n4pxnUkBpK+a+r0eYQJwQVg41tMOm6qn1JFfdEWzIKiD/I/BsQVONnpG+RZW/AnZOm4rO6LYxBQc23Q1n+ueOUopNUNzVdmAlUQ52V1MP7N7/UKLX2D2J/TpXfOHSX5Gxoq/qVnyXt+lEkrGCac8iJCwE2hM6uwbLs6irWtiOqdRscMBA3F4m1rXh4g5My57iBu2YXKZfn5qw8Tr9a2tdec0UaMNxsCL3MGNiyekZSrK53yagI35tW50q2+/XmyMUhmPwhij5fRQkRos0IMZlAQZaGnF0gPlSVLKwvNeI2lf3XAyurlU+T00wpTAYPnBrwkKQOAVSimnmVnNy2EmSk++o5THw6iSzeL9uRKbaif2yn2rbRUl5xwqn7ATdgW1wwBPquVf0m+VfHu8pm2OE3i8QPr8mc1mQCXPjiEcOwA57+5I1IC7Owm3prObNh1VRqj16XUbEyr8svWSP/FJS1okPBFu5O7PJyJa241BtoYfxV+gq2mOV+Sa89zRYvohoagmEmWsh2N8SDNSKMVRZNBgwEOEKmw+FzaVxwUWf67/6XWkE+LBjHqfRa87eVETm4mKDwIP1f39V9WCdf4dpIPlS9ERGBsKmj6a0tn94QgKJYh/SFOP6mK/qpvoJC0iTy2URJx+n+Y0stmlWDZ6Zjqt2MboB/Ow==
X-Forefront-Antispam-Report:
	CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB03.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230031)(4636009)(39860400002)(136003)(376002)(396003)(346002)(230922051799003)(186009)(82310400011)(64100799003)(1800799012)(451199024)(36840700001)(46966006)(40470700004)(83380400001)(426003)(1076003)(336012)(26005)(2616005)(36860700001)(82740400003)(47076005)(4326008)(8676002)(8936002)(44832011)(15650500001)(6916009)(5660300002)(2906002)(6666004)(478600001)(316002)(70586007)(70206006)(86362001)(41300700001)(54906003)(356005)(36756003)(81166007)(40480700001)(66899024)(40460700003)(36900700001);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Jan 2024 21:54:53.4280
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 670b2910-6897-4576-99ce-08dc115d9c87
X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB03.amd.com]
X-MS-Exchange-CrossTenant-AuthSource:
	SJ1PEPF00001CEB.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR12MB7888

From: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>

At the moment, we always allocate an extra 16 slots for IO handlers
(see MAX_IO_HANDLER). So while adding IO trap handlers for the emulated
MSI-X registers we need to explicitly tell that we have additional IO
handlers, so those are accounted.

Signed-off-by: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>
Acked-by: Julien Grall <jgrall@amazon.com>
Signed-off-by: Volodymyr Babchuk <volodymyr_babchuk@epam.com>
Signed-off-by: Stewart Hildebrand <stewart.hildebrand@amd.com>
---
This actually moved here from the part 2 of the prep work for PCI
passthrough on Arm as it seems to be the proper place for it.

Since v5:
- optimize with IS_ENABLED(CONFIG_HAS_PCI_MSI) since VPCI_MAX_VIRT_DEV is
  defined unconditionally
New in v5
---
 xen/arch/arm/vpci.c | 14 +++++++++++++-
 1 file changed, 13 insertions(+), 1 deletion(-)

diff --git a/xen/arch/arm/vpci.c b/xen/arch/arm/vpci.c
index 7a6a0017d132..348ba0fbc860 100644
--- a/xen/arch/arm/vpci.c
+++ b/xen/arch/arm/vpci.c
@@ -130,6 +130,8 @@ static int vpci_get_num_handlers_cb(struct domain *d,
 
 unsigned int domain_vpci_get_num_mmio_handlers(struct domain *d)
 {
+    unsigned int count;
+
     if ( !has_vpci(d) )
         return 0;
 
@@ -150,7 +152,17 @@ unsigned int domain_vpci_get_num_mmio_handlers(struct domain *d)
      * For guests each host bridge requires one region to cover the
      * configuration space. At the moment, we only expose a single host bridge.
      */
-    return 1;
+    count = 1;
+
+    /*
+     * There's a single MSI-X MMIO handler that deals with both PBA
+     * and MSI-X tables per each PCI device being passed through.
+     * Maximum number of emulated virtual devices is VPCI_MAX_VIRT_DEV.
+     */
+    if ( IS_ENABLED(CONFIG_HAS_PCI_MSI) )
+        count += VPCI_MAX_VIRT_DEV;
+
+    return count;
 }
 
 /*
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Tue Jan 09 21:55:14 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 09 Jan 2024 21:55:14 +0000
Received: from list by lists.xenproject.org with outflank-mailman.665052.1035271 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNK42-0004IP-A7; Tue, 09 Jan 2024 21:55:14 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 665052.1035271; Tue, 09 Jan 2024 21:55:14 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNK42-0004II-6V; Tue, 09 Jan 2024 21:55:14 +0000
Received: by outflank-mailman (input) for mailman id 665052;
 Tue, 09 Jan 2024 21:55:12 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=ONpl=IT=amd.com=Stewart.Hildebrand@srs-se1.protection.inumbo.net>)
 id 1rNK40-0003ql-D2
 for xen-devel@lists.xenproject.org; Tue, 09 Jan 2024 21:55:12 +0000
Received: from NAM10-MW2-obe.outbound.protection.outlook.com
 (mail-mw2nam10on20601.outbound.protection.outlook.com
 [2a01:111:f403:2412::601])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id c276fa03-af39-11ee-9b0f-b553b5be7939;
 Tue, 09 Jan 2024 22:55:10 +0100 (CET)
Received: from BLAP220CA0012.NAMP220.PROD.OUTLOOK.COM (2603:10b6:208:32c::17)
 by MW4PR12MB7262.namprd12.prod.outlook.com (2603:10b6:303:228::11)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7159.23; Tue, 9 Jan
 2024 21:55:05 +0000
Received: from BL6PEPF0001AB4F.namprd04.prod.outlook.com
 (2603:10b6:208:32c:cafe::6b) by BLAP220CA0012.outlook.office365.com
 (2603:10b6:208:32c::17) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7159.23 via Frontend
 Transport; Tue, 9 Jan 2024 21:55:05 +0000
Received: from SATLEXMB04.amd.com (165.204.84.17) by
 BL6PEPF0001AB4F.mail.protection.outlook.com (10.167.242.73) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.7181.14 via Frontend Transport; Tue, 9 Jan 2024 21:55:04 +0000
Received: from SATLEXMB05.amd.com (10.181.40.146) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.34; Tue, 9 Jan
 2024 15:55:04 -0600
Received: from SATLEXMB04.amd.com (10.181.40.145) by SATLEXMB05.amd.com
 (10.181.40.146) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.34; Tue, 9 Jan
 2024 15:55:04 -0600
Received: from ubuntu.mshome.net (10.180.168.240) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server id 15.1.2507.34 via Frontend
 Transport; Tue, 9 Jan 2024 15:55:02 -0600
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: c276fa03-af39-11ee-9b0f-b553b5be7939
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=W1kmXkcivhmxB0LSnjBAQftoBe1GsxXGF9sILGmhe6yshJBV7toPL6Rolc+2sUGUOb3Vt1XHlXvIHHb3gR9w2ZG8TFpx2uBDJs7hpi7/VZD4DV60Nx3MCq64zx5xNzxbX6DwcsfhBFbVxmoQ83HNE4Qn3j04MRowsT1mClxqyCZcsN+HvzAZEgaJ26kP1Z4tpYbw16hAQrK4nJRQGuoITgM9rh5G2QhDEq2HEdzD3bKAwbFfuaDGhLdXvebdOhh4VV1M+bGt6T70SnI2K37xOQZCHVYlYCTRXhKnoz377JXeJKBRRQNbSG8FPuml3dl5F8W7JGqjyJv7UllgIBC0Eg==
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=Sds9Y/npwbMXFe2dWuz/kb6byGvdHn8OQgeszTqP9BU=;
 b=Mg2/Fu1E0TwcnYFP8X4bUxgJtad9udpaZgNKaOj0Magq70PZDsPYvRkoMnDwzsAwVfYQX5hEsqTHigryRC1bQFvaMnu+wGE8wxOLkT/9WxnjbXrAPUu0ytWOz9BBTYoouRjP3yZM2kwBv6cP+L9TE5p+R8iYL8dDy9pI8IyrQRqZdy6Dg5qd078Mg45CbBDnE3byRyBHdQrNbEgK9/LkkJOQ53F4Xe02J/0sHC2LZmRUaS84hoWWEc4n7Ttz6Ks0nuWrLH5wD0QDAOFr+jR68/jNwly49++umzY9Wv5Os3QLcbAPp+Fwdee0hukyjxpVtp9IFJuYOWAgZH0Cp8St8w==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=lists.xenproject.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)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=Sds9Y/npwbMXFe2dWuz/kb6byGvdHn8OQgeszTqP9BU=;
 b=TYhbABS3gl/hk/31rMNUv0zLynkV37MBk7U663m1YfWgvvW8CpdnZOLsiaLYz+zxlQDbUOcIx540fZu7UQPuHlrezol4MBxWFCjs3obrMrzeHb2ZSzSWp8vCtdAvz6FVpymM2MCArePlK4x9umc+MuQ7UPRAVS7y7udBUQHzOlw=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C
From: Stewart Hildebrand <stewart.hildebrand@amd.com>
To: <xen-devel@lists.xenproject.org>
CC: Stewart Hildebrand <stewart.hildebrand@amd.com>, Stefano Stabellini
	<sstabellini@kernel.org>, Julien Grall <julien@xen.org>, Bertrand Marquis
	<bertrand.marquis@arm.com>, Michal Orzel <michal.orzel@amd.com>, "Volodymyr
 Babchuk" <Volodymyr_Babchuk@epam.com>, Andrew Cooper
	<andrew.cooper3@citrix.com>, George Dunlap <george.dunlap@citrix.com>, "Jan
 Beulich" <jbeulich@suse.com>, Wei Liu <wl@xen.org>
Subject: [PATCH v12 14/15] xen/arm: vpci: permit access to guest vpci space
Date: Tue, 9 Jan 2024 16:51:29 -0500
Message-ID: <20240109215145.430207-15-stewart.hildebrand@amd.com>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20240109215145.430207-1-stewart.hildebrand@amd.com>
References: <20240109215145.430207-1-stewart.hildebrand@amd.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: BL6PEPF0001AB4F:EE_|MW4PR12MB7262:EE_
X-MS-Office365-Filtering-Correlation-Id: fbe115e6-b59a-4f06-1915-08dc115da358
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam: BCL:0;
X-Microsoft-Antispam-Message-Info:
	ns4bMm7h8Eig2xdrhP0Uc2Cnw8FSxIEf3jPMOhRDi5z7lfczCnfiIFs3gmB5lQA5lNmoAPsU1XyXQuYQyXSqfF+YdTvQHpbAT8uTFh9WK7QSI5t9SinL3Q49dSu7Fk+G/wyU4bRDpydxCoanr2gVmwG9msbclY+Jzcy8vCGqvOIhTwYwJMpoAsaCET6nzu+5V/UTTQ5LrbOlt5NiuS8Ej5GnaL+D/DkUxaR4gLiVY5MvQD0naSyQEQ3JHL3bWHMTDheGyRV8haC0jmtItwEeRLzGsZJchtH5ZOyJED4YZnc8ap/z0RkeLPRFAN0qhdQqBIA1D2dSMNVX1EBig2X3ChYzd0C33C4BG/cGtGkuFmI05ilV17B2aWtIhzpAB9nHqn1VOwk/oOHFcrYPZO0fqR0D8ViHbP4owVfsMdZ2ugSYudYdm4ANvykzTjZUDN2rdujt4jY0g3m0upeCyXgL/lqRqWIPnUUWYjgmiwZgFxU7W/JHJlJeEBkKOMuP0RJspKdqahwRwQOPVaLdI9nUDhbesI753vCunDQ0dWrXFKaFPW+w2telVNHLTAJqk7n+hYQ8kWit1KxJLBxLsFPmVRqZ9SXN7eT8LLHMoA/hdp2eQ73FlX6rJIvv2Z3Bu8QCOF/d8ZmmQ2bqZppCwpEffwWHeg3uHnurUtf0KQEh83McQfAFh+igsjlBViLYy3XbnUHc8Z4yySDdCBuKvBAJ5mTQklpuHk8ZngieI/OGQTjS+5PNF+v69uDG87KqZSJLUoit+uncEHJMw/gEscS62Q==
X-Forefront-Antispam-Report:
	CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230031)(4636009)(136003)(396003)(39860400002)(376002)(346002)(230922051799003)(451199024)(1800799012)(186009)(64100799003)(82310400011)(36840700001)(40470700004)(46966006)(83380400001)(26005)(426003)(1076003)(336012)(2616005)(36860700001)(47076005)(82740400003)(4326008)(8936002)(8676002)(5660300002)(44832011)(2906002)(6916009)(6666004)(478600001)(54906003)(316002)(41300700001)(70586007)(70206006)(356005)(81166007)(36756003)(86362001)(40480700001)(40460700003)(36900700001);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Jan 2024 21:55:04.8452
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: fbe115e6-b59a-4f06-1915-08dc115da358
X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com]
X-MS-Exchange-CrossTenant-AuthSource:
	BL6PEPF0001AB4F.namprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW4PR12MB7262

Move iomem_caps initialization earlier (before arch_domain_create()).

Signed-off-by: Stewart Hildebrand <stewart.hildebrand@amd.com>
---
Changes in v11:
* move both iomem_caps and irq_caps initializations earlier, along with NULL
  check

Changes in v10:
* fix off-by-one
* also permit access to GUEST_VPCI_PREFETCH_MEM_ADDR

Changes in v9:
* new patch

This is sort of a follow-up to:

  baa6ea700386 ("vpci: add permission checks to map_range()")

I don't believe we need a fixes tag since this depends on the vPCI p2m BAR
patches.
---
 xen/arch/arm/vpci.c |  9 +++++++++
 xen/common/domain.c | 12 ++++++------
 2 files changed, 15 insertions(+), 6 deletions(-)

diff --git a/xen/arch/arm/vpci.c b/xen/arch/arm/vpci.c
index 348ba0fbc860..b6ef440f17b0 100644
--- a/xen/arch/arm/vpci.c
+++ b/xen/arch/arm/vpci.c
@@ -2,6 +2,7 @@
 /*
  * xen/arch/arm/vpci.c
  */
+#include <xen/iocap.h>
 #include <xen/sched.h>
 #include <xen/vpci.h>
 
@@ -115,8 +116,16 @@ int domain_vpci_init(struct domain *d)
             return ret;
     }
     else
+    {
         register_mmio_handler(d, &vpci_mmio_handler,
                               GUEST_VPCI_ECAM_BASE, GUEST_VPCI_ECAM_SIZE, NULL);
+        iomem_permit_access(d, paddr_to_pfn(GUEST_VPCI_MEM_ADDR),
+                            paddr_to_pfn(GUEST_VPCI_MEM_ADDR +
+                                         GUEST_VPCI_MEM_SIZE - 1));
+        iomem_permit_access(d, paddr_to_pfn(GUEST_VPCI_PREFETCH_MEM_ADDR),
+                            paddr_to_pfn(GUEST_VPCI_PREFETCH_MEM_ADDR +
+                                         GUEST_VPCI_PREFETCH_MEM_SIZE - 1));
+    }
 
     return 0;
 }
diff --git a/xen/common/domain.c b/xen/common/domain.c
index f6f557499660..8078d1ade690 100644
--- a/xen/common/domain.c
+++ b/xen/common/domain.c
@@ -693,6 +693,12 @@ struct domain *domain_create(domid_t domid,
         d->nr_pirqs = min(d->nr_pirqs, nr_irqs);
 
         radix_tree_init(&d->pirq_tree);
+
+        err = -ENOMEM;
+        d->iomem_caps = rangeset_new(d, "I/O Memory", RANGESETF_prettyprint_hex);
+        d->irq_caps   = rangeset_new(d, "Interrupts", 0);
+        if ( !d->iomem_caps || !d->irq_caps )
+            goto fail;
     }
 
     if ( (err = arch_domain_create(d, config, flags)) != 0 )
@@ -711,12 +717,6 @@ struct domain *domain_create(domid_t domid,
         watchdog_domain_init(d);
         init_status |= INIT_watchdog;
 
-        err = -ENOMEM;
-        d->iomem_caps = rangeset_new(d, "I/O Memory", RANGESETF_prettyprint_hex);
-        d->irq_caps   = rangeset_new(d, "Interrupts", 0);
-        if ( !d->iomem_caps || !d->irq_caps )
-            goto fail;
-
         if ( (err = xsm_domain_create(XSM_HOOK, d, config->ssidref)) != 0 )
             goto fail;
 
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Tue Jan 09 21:55:27 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 09 Jan 2024 21:55:27 +0000
Received: from list by lists.xenproject.org with outflank-mailman.665053.1035281 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNK4E-0004mx-PM; Tue, 09 Jan 2024 21:55:26 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 665053.1035281; Tue, 09 Jan 2024 21:55:26 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNK4E-0004mO-KJ; Tue, 09 Jan 2024 21:55:26 +0000
Received: by outflank-mailman (input) for mailman id 665053;
 Tue, 09 Jan 2024 21:55:25 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=ONpl=IT=amd.com=Stewart.Hildebrand@srs-se1.protection.inumbo.net>)
 id 1rNK4D-0003ql-7E
 for xen-devel@lists.xenproject.org; Tue, 09 Jan 2024 21:55:25 +0000
Received: from NAM10-BN7-obe.outbound.protection.outlook.com
 (mail-bn7nam10on20600.outbound.protection.outlook.com
 [2a01:111:f403:2009::600])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id c9adeb7b-af39-11ee-9b0f-b553b5be7939;
 Tue, 09 Jan 2024 22:55:23 +0100 (CET)
Received: from SJ0PR03CA0195.namprd03.prod.outlook.com (2603:10b6:a03:2ef::20)
 by CH2PR12MB4326.namprd12.prod.outlook.com (2603:10b6:610:af::11)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7181.17; Tue, 9 Jan
 2024 21:55:20 +0000
Received: from SJ1PEPF00001CE6.namprd03.prod.outlook.com
 (2603:10b6:a03:2ef:cafe::ce) by SJ0PR03CA0195.outlook.office365.com
 (2603:10b6:a03:2ef::20) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7159.25 via Frontend
 Transport; Tue, 9 Jan 2024 21:55:20 +0000
Received: from SATLEXMB03.amd.com (165.204.84.17) by
 SJ1PEPF00001CE6.mail.protection.outlook.com (10.167.242.22) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.7181.14 via Frontend Transport; Tue, 9 Jan 2024 21:55:20 +0000
Received: from SATLEXMB04.amd.com (10.181.40.145) by SATLEXMB03.amd.com
 (10.181.40.144) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.34; Tue, 9 Jan
 2024 15:55:19 -0600
Received: from ubuntu.mshome.net (10.180.168.240) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server id 15.1.2507.34 via Frontend
 Transport; Tue, 9 Jan 2024 15:55:13 -0600
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: c9adeb7b-af39-11ee-9b0f-b553b5be7939
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=bd5HjMCqvBekugTEjrpyaS6ANo2q8gssnhqrzxYZxmFlWRCEHJBc7FfqAoGQouZS+8YGbe+udzCB/Efj80Z5XWap3xN8eswlPxV7YQL79HOMTIdcyVSDBRKifs3Ru9sbNJlipjqqsbeP4ZfVAN3X6MW6d+1ams1yTYyxDEWmDiyvSV8hkW4e8nbYFgm3uongglvJmqInL66P8ukH1nZgn/DrO3eZzI5/vo/VqG0zRtd4MjISlnTjOIdljmzhb7ih0G/0DQ2x9pA6D75MXK9OGfvi33Bm53o0E3Rx4PjDegjdMO5FRoEKFqh4WG7xU/6QS0GxCMrCodnu9+WEJ90CbQ==
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=UMvnpYtMsr+XyhV7s4jn4yVI4a71Jl58SaqRvfzmz4E=;
 b=hRWeCL1gZ0UXku6fhKw/+XUNShm+4f7ma7DxypjnuBXoOCeMc1yLMu+73qcWlXRYyPWU6l0QPmUyjhki4fWnBg/DiUsGrHTjd7CojEotcuu4a0onAZS3+spp7hY/6VZPK9UBHLxtS0vcpjRr2UYcw4ktmVtN5x53qkRquOl3JS1Hgf2+e7NFM0UapX+zFv4tFKe3VwZrwSGcR6z+vHnwfqHV/tTm6PQbdeuNYf/vli5eETPi2C8HScSi9JWWq98FWkiCRUbiKMxmWJFUUO8nemOPATiBt/TBD1mZCEWQ2NbHwDzG9I0RYMjh9uNHFaI5SvPg8fpiVnkiDuLDlnO26w==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=lists.xenproject.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)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=UMvnpYtMsr+XyhV7s4jn4yVI4a71Jl58SaqRvfzmz4E=;
 b=v5XnFYjeP+bT2ni0jm4sbqjzfwhLRYm5aIZr4KP4XhlfsLhqil6i9mneoy+QTHl8IMhMrim9qMg0ojSvHgBsagQxPJE+wgoN0O177rCxNJ2gkLWbRi/indb0PBFCIXXSVnlBxlZ2awPIbgEcOswAoehtutY7b9fOYkbGpqQZzyY=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=SATLEXMB03.amd.com; pr=C
From: Stewart Hildebrand <stewart.hildebrand@amd.com>
To: <xen-devel@lists.xenproject.org>
CC: Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>, Stefano Stabellini
	<sstabellini@kernel.org>, Julien Grall <julien@xen.org>, Bertrand Marquis
	<bertrand.marquis@arm.com>, Michal Orzel <michal.orzel@amd.com>, "Volodymyr
 Babchuk" <volodymyr_babchuk@epam.com>, Stewart Hildebrand
	<stewart.hildebrand@amd.com>
Subject: [PATCH v12 15/15] arm/vpci: honor access size when returning an error
Date: Tue, 9 Jan 2024 16:51:30 -0500
Message-ID: <20240109215145.430207-16-stewart.hildebrand@amd.com>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20240109215145.430207-1-stewart.hildebrand@amd.com>
References: <20240109215145.430207-1-stewart.hildebrand@amd.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: SJ1PEPF00001CE6:EE_|CH2PR12MB4326:EE_
X-MS-Office365-Filtering-Correlation-Id: c3589657-cb2f-479a-79fd-08dc115daca5
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam: BCL:0;
X-Microsoft-Antispam-Message-Info:
	uTbryQmsQTZ2QgQasnldQSiBljJxmtfvG+q11RceWgGOjMTONsZZ39mm3ZL7uxXO8A319HprVvDtYB34R6Bgcg1f0YcFTBs+p+RCuVKfHuZ/hvBFOeIPv4pdKQqkvNdiv4OuSBqsoz3+DoQs+Sg91cRMOTw+K1P6XbFt5GENXbt53QEdLOyvl8SYYqnTgORiPqW9MJqbm9gq1+cs8k/z//ufVtB96icdJ2VWQRVqDJyOpE2OR9kih5NQuC4CEAOObZ2ivvncVbrH6kJ2KiAgsRWKC64Iluwr8Fo5ozPfWq0G2blQuWW8/6Ohj2d3uQlKnMRd4hievrFVmn593sdcfz0fgdkWiy8sOPdelXDujBUiVwdxans2a5iY+A+jnWiR+qf/P4GUmq8XKptYj/c599vIShHBWR05YiKWF8kj0bvq5ftYvDODJN23vC58RCiASx6fB05q5wrDZ5sA4W3xv1gJWnXopreocob4nXfXyzjKVVml2lMukWW2DpVqy+ozMZ2up3G8H100VPocofpu1Arb1X33lS1TgmnWMeZe++9gKdRuwSzvqGEUDF/eF7vO0TtvqlXvtD//8HLGICJGkF7IzNa9KrBpQ1oFNdM4VwbkQeODAVgTbsxbYN8g4t3nuBSUOxfrL+itVE8WkCVmMsaIw/oK0kFPDSJgwLxgeOwz/QhJBohbdZ0rK2GOZmfbBtgLFM3OweVo7Kk2dbu/EP2SHmFO4USPeYl1RtKY6CZWxm+4L5kBpTYcTjf9sY3NnKXizJEc7I1RQEa5cBbqVQ==
X-Forefront-Antispam-Report:
	CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB03.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230031)(4636009)(136003)(39860400002)(396003)(376002)(346002)(230922051799003)(451199024)(64100799003)(82310400011)(186009)(1800799012)(40470700004)(46966006)(36840700001)(36860700001)(6666004)(5660300002)(478600001)(70206006)(2616005)(86362001)(41300700001)(8676002)(8936002)(54906003)(426003)(70586007)(316002)(6916009)(47076005)(82740400003)(83380400001)(1076003)(26005)(336012)(81166007)(356005)(4326008)(36756003)(44832011)(40480700001)(2906002)(40460700003)(36900700001);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Jan 2024 21:55:20.4674
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: c3589657-cb2f-479a-79fd-08dc115daca5
X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB03.amd.com]
X-MS-Exchange-CrossTenant-AuthSource:
	SJ1PEPF00001CE6.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH2PR12MB4326

From: Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>

Guest can try to read config space using different access sizes: 8,
16, 32, 64 bits. We need to take this into account when we are
returning an error back to MMIO handler, otherwise it is possible to
provide more data than requested: i.e. guest issues LDRB instruction
to read one byte, but we are writing 0xFFFFFFFFFFFFFFFF in the target
register.

Signed-off-by: Volodymyr Babchuk <volodymyr_babchuk@epam.com>
Signed-off-by: Stewart Hildebrand <stewart.hildebrand@amd.com>
---
 xen/arch/arm/vpci.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/xen/arch/arm/vpci.c b/xen/arch/arm/vpci.c
index b6ef440f17b0..05a479096ef7 100644
--- a/xen/arch/arm/vpci.c
+++ b/xen/arch/arm/vpci.c
@@ -42,6 +42,8 @@ static int vpci_mmio_read(struct vcpu *v, mmio_info_t *info,
 {
     struct pci_host_bridge *bridge = p;
     pci_sbdf_t sbdf;
+    const uint8_t access_size = (1 << info->dabt.size) * 8;
+    const uint64_t access_mask = GENMASK_ULL(access_size - 1, 0);
     /* data is needed to prevent a pointer cast on 32bit */
     unsigned long data;
 
@@ -49,7 +51,7 @@ static int vpci_mmio_read(struct vcpu *v, mmio_info_t *info,
 
     if ( !vpci_sbdf_from_gpa(v->domain, bridge, info->gpa, &sbdf) )
     {
-        *r = ~0UL;
+        *r = access_mask;
         return 1;
     }
 
@@ -60,7 +62,7 @@ static int vpci_mmio_read(struct vcpu *v, mmio_info_t *info,
         return 1;
     }
 
-    *r = ~0UL;
+    *r = access_mask;
 
     return 0;
 }
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Tue Jan 09 22:03:24 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 09 Jan 2024 22:03:24 +0000
Received: from list by lists.xenproject.org with outflank-mailman.665074.1035291 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNKBq-0007l2-Hy; Tue, 09 Jan 2024 22:03:18 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 665074.1035291; Tue, 09 Jan 2024 22:03:18 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNKBq-0007kv-Et; Tue, 09 Jan 2024 22:03:18 +0000
Received: by outflank-mailman (input) for mailman id 665074;
 Tue, 09 Jan 2024 22:03:17 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=ONpl=IT=amd.com=Stewart.Hildebrand@srs-se1.protection.inumbo.net>)
 id 1rNK2t-0007gG-Li
 for xen-devel@lists.xenproject.org; Tue, 09 Jan 2024 21:54:03 +0000
Received: from NAM10-DM6-obe.outbound.protection.outlook.com
 (mail-dm6nam10on2061b.outbound.protection.outlook.com
 [2a01:111:f400:7e88::61b])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 989366b6-af39-11ee-9b0f-b553b5be7939;
 Tue, 09 Jan 2024 22:54:01 +0100 (CET)
Received: from MN2PR08CA0029.namprd08.prod.outlook.com (2603:10b6:208:239::34)
 by SJ2PR12MB7964.namprd12.prod.outlook.com (2603:10b6:a03:4cf::7)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7159.23; Tue, 9 Jan
 2024 21:53:55 +0000
Received: from BL6PEPF0001AB50.namprd04.prod.outlook.com
 (2603:10b6:208:239:cafe::76) by MN2PR08CA0029.outlook.office365.com
 (2603:10b6:208:239::34) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7159.23 via Frontend
 Transport; Tue, 9 Jan 2024 21:53:55 +0000
Received: from SATLEXMB04.amd.com (165.204.84.17) by
 BL6PEPF0001AB50.mail.protection.outlook.com (10.167.242.74) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.7181.14 via Frontend Transport; Tue, 9 Jan 2024 21:53:54 +0000
Received: from SATLEXMB05.amd.com (10.181.40.146) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.34; Tue, 9 Jan
 2024 15:53:54 -0600
Received: from SATLEXMB04.amd.com (10.181.40.145) by SATLEXMB05.amd.com
 (10.181.40.146) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.34; Tue, 9 Jan
 2024 15:53:54 -0600
Received: from ubuntu.mshome.net (10.180.168.240) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server id 15.1.2507.34 via Frontend
 Transport; Tue, 9 Jan 2024 15:53:53 -0600
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 989366b6-af39-11ee-9b0f-b553b5be7939
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=ItPSuv7suMx4U2wRojCyh4OZPpOdnIs1PHP0KJjI5QXrdWKCh8+8mRnCCeFOZSvKDbbiuHC60dBRxZixP+Jz56tzJEiv9K2Za9f1p33t6GFg2wNQ727oTMeiaNHfIPXIgkR9YXjJg/YUzjDE4dMstSdnutVBi7dxv8pMf+jRuX7FiNVNa/pY4W5tfChUhltntC850lHwsqJ4KWxrKxhNKNHPYLrrtekdXUzbRZFLsKedRb77g7/cysxU4C6D5f3hGGy3dR/cqTKjY3x+sWjQdIewLPifZ9cdCQjO89SSkVRWHKY0wKKi4eEfS11YOeahHTKM/Ezpo1jUsbPMGhKwqg==
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=3OVx++8ILg3L0aD2CuO8hPm8Z1yWpD5eQLVMw0q3dKw=;
 b=cfRamUJYRztRnorK2IuhKaWwIsviD0d/OMryuXz6XZFbvFT55DW6lvc1UyitGo21sCF8+Scveingl8avj/jw9UIIrXo9T0cyCrKnClHtZ1bqDFsDZLyPRnJ7LtoZBD56x3t4/kGVcGMRQLhxLtw004NKItzzof3U6b6rf5KQYX5NKfvTrjjjh7uQ5fAkmUiElip9PcE5bapNpeXCnLlbpKykBlBSmGC5rEwjo6XaQ+L00ZQtB25MoIyeuDTVezKeRXeRrLNAaJvdsxbBx2f129c0c7Okz/9PHJ+rFTkOynsTB7qyqQfdTiDxbGjfXq2hAd3EbU9V4AMG6S6S5ffVNg==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=lists.xenproject.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)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=3OVx++8ILg3L0aD2CuO8hPm8Z1yWpD5eQLVMw0q3dKw=;
 b=EeDOaNdZIk7gscAIQ/8XvB/3DIPZbluVbFmnIr6bucuHFjPBrxHur9VonjqZXII/GquICS0Uj3Hv0xAJph6usZjcWLaiJsFIytqoeQsCLxRTQqvHw1RNLh+CyYA+hYeed2yJCluHdXB5WwVDRvqwxVqHzws5mjvgkETSO7OrEds=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C
From: Stewart Hildebrand <stewart.hildebrand@amd.com>
To: <xen-devel@lists.xenproject.org>
CC: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>, "Daniel P.
 Smith" <dpsmith@apertussolutions.com>, Volodymyr Babchuk
	<volodymyr_babchuk@epam.com>, Stewart Hildebrand <stewart.hildebrand@amd.com>
Subject: [PATCH v12 09/15] vpci/header: program p2m with guest BAR view
Date: Tue, 9 Jan 2024 16:51:24 -0500
Message-ID: <20240109215145.430207-10-stewart.hildebrand@amd.com>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20240109215145.430207-1-stewart.hildebrand@amd.com>
References: <20240109215145.430207-1-stewart.hildebrand@amd.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: BL6PEPF0001AB50:EE_|SJ2PR12MB7964:EE_
X-MS-Office365-Filtering-Correlation-Id: c49a5374-5ab3-4d3a-c8c9-08dc115d79a3
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam: BCL:0;
X-Microsoft-Antispam-Message-Info:
	BLYCoHe7MEN0Nkcnd6GlnZeuXBXf+mCSSlB8pTGjB4mbvZFtQAUGK5Pa3rw3jLon5tDseua4khnJnS9FXzY/zcH157UCRk9aajV7yyY28EZLDGJNRdspNatG1VWJsEoVFC5WrqMDPQfNajLb0iXzFYRKp1yvFQAcwF+QC3HgkIqEkRw79Jd1d+uc0R5rzTfvGoNHIiXuIW0Idtw4SdMF4i9Ct8UwC+vBYKAyrV9LelUqvLt4uPkrmA2WzMrHOXjt9Y6nQ92h2AoA+NgnaoXh7BL86ChFFlS4oERVvYzt8RDnlVOsq41MeaPa+IKnAII6qREQP4BaxE5C1yG3hTLwhsykwJf4+057EKJgs3xURxkXMNWMRfUSAis6wAsJbu8f/vomIJfnx1PYuiOXh6W+3439adZfkhZAdC+kDZQ08oREIlCKmIFbjoDnr1Zll/mt37d13FKTFJgEzfmHOSjvQMrRwsaKxLvErkx/kjIOC7rSQtfM2Y753tRAh9yGCMNgcApjrd8TE3dQWubMzGq1/n3MRABCOTzMRTW5MD/GiFVbyE6BTSDCGnxhQWeAQ8ZlbHGSi8OAYVhA8ykhUiQ32OknCOnLYuOJ+hSaJ0nEJAuQjIYvFpi1xE52YaHwcg8Ppks9nU8cdVJi2Emi4UcudnaC5nGBQAa1826TsPfJCiDUtm5adYiibElZToH2mrSI0yprqANVM4HTgc1z0gGZtpDZJGyH9Melo23z/dvswPVqFwcLz3p1gkl+JokPhvMiw+8vIrVkOg88+TPNGBtYMt9hjDGlPhrSK37w9+TDW/zmSixLcTJCwlRC451MhWje
X-Forefront-Antispam-Report:
	CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230031)(4636009)(396003)(346002)(39860400002)(376002)(136003)(230173577357003)(230273577357003)(230922051799003)(82310400011)(186009)(451199024)(1800799012)(64100799003)(46966006)(36840700001)(40470700004)(336012)(83380400001)(2616005)(426003)(47076005)(40480700001)(1076003)(26005)(36860700001)(4326008)(44832011)(478600001)(6666004)(40460700003)(82740400003)(316002)(356005)(6916009)(70206006)(54906003)(70586007)(8936002)(8676002)(81166007)(41300700001)(86362001)(2906002)(36756003)(5660300002)(30864003)(36900700001);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Jan 2024 21:53:54.9706
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: c49a5374-5ab3-4d3a-c8c9-08dc115d79a3
X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com]
X-MS-Exchange-CrossTenant-AuthSource:
	BL6PEPF0001AB50.namprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ2PR12MB7964

From: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>

Take into account guest's BAR view and program its p2m accordingly:
gfn is guest's view of the BAR and mfn is the physical BAR value.
This way hardware domain sees physical BAR values and guest sees
emulated ones.

Hardware domain continues getting the BARs identity mapped, while for
domUs the BARs are mapped at the requested guest address without
modifying the BAR address in the device PCI config space.

Signed-off-by: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>
Signed-off-by: Volodymyr Babchuk <volodymyr_babchuk@epam.com>
Signed-off-by: Stewart Hildebrand <stewart.hildebrand@amd.com>
---
In v12:
- Update guest_addr in rom_write()
- Use unsigned long for start_mfn and map_mfn to reduce mfn_x() calls
- Use existing vmsix_table_*() functions
- Change vmsix_table_base() to use .guest_addr
In v11:
- Add vmsix_guest_table_addr() and vmsix_guest_table_base() functions
  to access guest's view of the VMSIx tables.
- Use MFN (not GFN) to check access permissions
- Move page offset check to this patch
- Call rangeset_remove_range() with correct parameters
In v10:
- Moved GFN variable definition outside the loop in map_range()
- Updated printk error message in map_range()
- Now BAR address is always stored in bar->guest_addr, even for
  HW dom, this removes bunch of ugly is_hwdom() checks in modify_bars()
- vmsix_table_base() now uses .guest_addr instead of .addr
In v9:
- Extended the commit message
- Use bar->guest_addr in modify_bars
- Extended printk error message in map_range
- Moved map_data initialization so .bar can be initialized during declaration
Since v5:
- remove debug print in map_range callback
- remove "identity" from the debug print
Since v4:
- moved start_{gfn|mfn} calculation into map_range
- pass vpci_bar in the map_data instead of start_{gfn|mfn}
- s/guest_addr/guest_reg
Since v3:
- updated comment (Roger)
- removed gfn_add(map->start_gfn, rc); which is wrong
- use v->domain instead of v->vpci.pdev->domain
- removed odd e.g. in comment
- s/d%d/%pd in altered code
- use gdprintk for map/unmap logs
Since v2:
- improve readability for data.start_gfn and restructure ?: construct
Since v1:
 - s/MSI/MSI-X in comments
---
 xen/drivers/vpci/header.c | 81 +++++++++++++++++++++++++++++++--------
 xen/include/xen/vpci.h    |  3 +-
 2 files changed, 66 insertions(+), 18 deletions(-)

diff --git a/xen/drivers/vpci/header.c b/xen/drivers/vpci/header.c
index feccd070ddd0..f0b0b64b0929 100644
--- a/xen/drivers/vpci/header.c
+++ b/xen/drivers/vpci/header.c
@@ -34,6 +34,7 @@
 
 struct map_data {
     struct domain *d;
+    const struct vpci_bar *bar;
     bool map;
 };
 
@@ -41,13 +42,24 @@ static int cf_check map_range(
     unsigned long s, unsigned long e, void *data, unsigned long *c)
 {
     const struct map_data *map = data;
+    /* Start address of the BAR as seen by the guest. */
+    unsigned long start_gfn = PFN_DOWN(map->bar->guest_addr);
+    /* Physical start address of the BAR. */
+    unsigned long start_mfn = PFN_DOWN(map->bar->addr);
     int rc;
 
     for ( ; ; )
     {
         unsigned long size = e - s + 1;
+        /*
+         * Ranges to be mapped don't always start at the BAR start address, as
+         * there can be holes or partially consumed ranges. Account for the
+         * offset of the current address from the BAR start.
+         */
+        unsigned long map_mfn = start_mfn + s - start_gfn;
+        unsigned long m_end = map_mfn + size - 1;
 
-        if ( !iomem_access_permitted(map->d, s, e) )
+        if ( !iomem_access_permitted(map->d, map_mfn, m_end) )
         {
             printk(XENLOG_G_WARNING
                    "%pd denied access to MMIO range [%#lx, %#lx]\n",
@@ -55,7 +67,8 @@ static int cf_check map_range(
             return -EPERM;
         }
 
-        rc = xsm_iomem_mapping(XSM_HOOK, map->d, s, e, map->map);
+        rc = xsm_iomem_mapping(XSM_HOOK, map->d, map_mfn, m_end,
+                               map->map);
         if ( rc )
         {
             printk(XENLOG_G_WARNING
@@ -73,8 +86,8 @@ static int cf_check map_range(
          * - {un}map_mmio_regions doesn't support preemption.
          */
 
-        rc = map->map ? map_mmio_regions(map->d, _gfn(s), size, _mfn(s))
-                      : unmap_mmio_regions(map->d, _gfn(s), size, _mfn(s));
+        rc = map->map ? map_mmio_regions(map->d, _gfn(s), size, _mfn(map_mfn))
+                      : unmap_mmio_regions(map->d, _gfn(s), size, _mfn(map_mfn));
         if ( rc == 0 )
         {
             *c += size;
@@ -83,8 +96,9 @@ static int cf_check map_range(
         if ( rc < 0 )
         {
             printk(XENLOG_G_WARNING
-                   "Failed to identity %smap [%lx, %lx] for d%d: %d\n",
-                   map->map ? "" : "un", s, e, map->d->domain_id, rc);
+                   "Failed to %smap [%lx %lx] -> [%lx %lx] for %pd: %d\n",
+                   map->map ? "" : "un", s, e, map_mfn,
+                   map_mfn + size, map->d, rc);
             break;
         }
         ASSERT(rc < size);
@@ -163,10 +177,6 @@ static void modify_decoding(const struct pci_dev *pdev, uint16_t cmd,
 bool vpci_process_pending(struct vcpu *v)
 {
     struct pci_dev *pdev = v->vpci.pdev;
-    struct map_data data = {
-        .d = v->domain,
-        .map = v->vpci.cmd & PCI_COMMAND_MEMORY,
-    };
     struct vpci_header *header = NULL;
     unsigned int i;
 
@@ -186,6 +196,11 @@ bool vpci_process_pending(struct vcpu *v)
     for ( i = 0; i < ARRAY_SIZE(header->bars); i++ )
     {
         struct vpci_bar *bar = &header->bars[i];
+        struct map_data data = {
+            .d = v->domain,
+            .map = v->vpci.cmd & PCI_COMMAND_MEMORY,
+            .bar = bar,
+        };
         int rc;
 
         if ( rangeset_is_empty(bar->mem) )
@@ -236,7 +251,6 @@ bool vpci_process_pending(struct vcpu *v)
 static int __init apply_map(struct domain *d, const struct pci_dev *pdev,
                             uint16_t cmd)
 {
-    struct map_data data = { .d = d, .map = true };
     struct vpci_header *header = &pdev->vpci->header;
     int rc = 0;
     unsigned int i;
@@ -246,6 +260,7 @@ static int __init apply_map(struct domain *d, const struct pci_dev *pdev,
     for ( i = 0; i < ARRAY_SIZE(header->bars); i++ )
     {
         struct vpci_bar *bar = &header->bars[i];
+        struct map_data data = { .d = d, .map = true, .bar = bar };
 
         if ( rangeset_is_empty(bar->mem) )
             continue;
@@ -311,12 +326,16 @@ static int modify_bars(const struct pci_dev *pdev, uint16_t cmd, bool rom_only)
      * First fill the rangesets with the BAR of this device or with the ROM
      * BAR only, depending on whether the guest is toggling the memory decode
      * bit of the command register, or the enable bit of the ROM BAR register.
+     *
+     * For non-hardware domain we use guest physical addresses.
      */
     for ( i = 0; i < ARRAY_SIZE(header->bars); i++ )
     {
         struct vpci_bar *bar = &header->bars[i];
         unsigned long start = PFN_DOWN(bar->addr);
         unsigned long end = PFN_DOWN(bar->addr + bar->size - 1);
+        unsigned long start_guest = PFN_DOWN(bar->guest_addr);
+        unsigned long end_guest = PFN_DOWN(bar->guest_addr + bar->size - 1);
 
         if ( !bar->mem )
             continue;
@@ -336,11 +355,25 @@ static int modify_bars(const struct pci_dev *pdev, uint16_t cmd, bool rom_only)
             continue;
         }
 
-        rc = rangeset_add_range(bar->mem, start, end);
+        /*
+         * Make sure that the guest set address has the same page offset
+         * as the physical address on the host or otherwise things won't work as
+         * expected.
+         */
+        if ( PAGE_OFFSET(bar->guest_addr) != PAGE_OFFSET(bar->addr) )
+        {
+            gprintk(XENLOG_G_WARNING,
+                    "%pp: Can't map BAR%d because of page offset mismatch: %lx vs %lx\n",
+                    &pdev->sbdf, i, PAGE_OFFSET(bar->guest_addr),
+                    PAGE_OFFSET(bar->addr));
+            return -EINVAL;
+        }
+
+        rc = rangeset_add_range(bar->mem, start_guest, end_guest);
         if ( rc )
         {
             printk(XENLOG_G_WARNING "Failed to add [%lx, %lx]: %d\n",
-                   start, end, rc);
+                   start_guest, end_guest, rc);
             return rc;
         }
 
@@ -352,12 +385,12 @@ static int modify_bars(const struct pci_dev *pdev, uint16_t cmd, bool rom_only)
             if ( rangeset_is_empty(prev_bar->mem) )
                 continue;
 
-            rc = rangeset_remove_range(prev_bar->mem, start, end);
+            rc = rangeset_remove_range(prev_bar->mem, start_guest, end_guest);
             if ( rc )
             {
                 gprintk(XENLOG_WARNING,
                        "%pp: failed to remove overlapping range [%lx, %lx]: %d\n",
-                        &pdev->sbdf, start, end, rc);
+                        &pdev->sbdf, start_guest, end_guest, rc);
                 return rc;
             }
         }
@@ -425,8 +458,8 @@ static int modify_bars(const struct pci_dev *pdev, uint16_t cmd, bool rom_only)
             for ( i = 0; i < ARRAY_SIZE(tmp->vpci->header.bars); i++ )
             {
                 const struct vpci_bar *remote_bar = &tmp->vpci->header.bars[i];
-                unsigned long start = PFN_DOWN(remote_bar->addr);
-                unsigned long end = PFN_DOWN(remote_bar->addr +
+                unsigned long start = PFN_DOWN(remote_bar->guest_addr);
+                unsigned long end = PFN_DOWN(remote_bar->guest_addr +
                                              remote_bar->size - 1);
 
                 if ( !remote_bar->enabled )
@@ -513,6 +546,8 @@ static void cf_check bar_write(
     struct vpci_bar *bar = data;
     bool hi = false;
 
+    ASSERT(is_hardware_domain(pdev->domain));
+
     if ( bar->type == VPCI_BAR_MEM64_HI )
     {
         ASSERT(reg > PCI_BASE_ADDRESS_0);
@@ -543,6 +578,10 @@ static void cf_check bar_write(
      */
     bar->addr &= ~(0xffffffffULL << (hi ? 32 : 0));
     bar->addr |= (uint64_t)val << (hi ? 32 : 0);
+    /*
+     * Update guest address as well, so hardware domain sees BAR identity mapped
+     */
+    bar->guest_addr = bar->addr;
 
     /* Make sure Xen writes back the same value for the BAR RO bits. */
     if ( !hi )
@@ -639,11 +678,14 @@ static void cf_check rom_write(
     }
 
     if ( !rom->enabled )
+    {
         /*
          * If the ROM BAR is not mapped update the address field so the
          * correct address is mapped into the p2m.
          */
         rom->addr = val & PCI_ROM_ADDRESS_MASK;
+        rom->guest_addr = rom->addr;
+    }
 
     if ( !header->bars_mapped || rom->enabled == new_enabled )
     {
@@ -667,7 +709,10 @@ static void cf_check rom_write(
         return;
 
     if ( !new_enabled )
+    {
         rom->addr = val & PCI_ROM_ADDRESS_MASK;
+        rom->guest_addr = rom->addr;
+    }
 }
 
 static int bar_add_rangeset(const struct pci_dev *pdev, struct vpci_bar *bar,
@@ -862,6 +907,7 @@ static int cf_check init_header(struct pci_dev *pdev)
         }
 
         bars[i].addr = addr;
+        bars[i].guest_addr = addr;
         bars[i].size = size;
         bars[i].prefetchable = val & PCI_BASE_ADDRESS_MEM_PREFETCH;
 
@@ -884,6 +930,7 @@ static int cf_check init_header(struct pci_dev *pdev)
         rom->type = VPCI_BAR_ROM;
         rom->size = size;
         rom->addr = addr;
+        rom->guest_addr = addr;
         header->rom_enabled = pci_conf_read32(pdev->sbdf, rom_reg) &
                               PCI_ROM_ADDRESS_ENABLE;
 
diff --git a/xen/include/xen/vpci.h b/xen/include/xen/vpci.h
index 817ee9ee7300..e89c571890b2 100644
--- a/xen/include/xen/vpci.h
+++ b/xen/include/xen/vpci.h
@@ -216,7 +216,8 @@ int vpci_msix_arch_print(const struct vpci_msix *msix);
  */
 static inline paddr_t vmsix_table_base(const struct vpci *vpci, unsigned int nr)
 {
-    return vpci->header.bars[vpci->msix->tables[nr] & PCI_MSIX_BIRMASK].addr;
+    return vpci->header.bars[vpci->msix->tables[nr] &
+                             PCI_MSIX_BIRMASK].guest_addr;
 }
 
 static inline paddr_t vmsix_table_addr(const struct vpci *vpci, unsigned int nr)
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Tue Jan 09 22:03:49 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 09 Jan 2024 22:03:49 +0000
Received: from list by lists.xenproject.org with outflank-mailman.665079.1035301 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNKCK-0008LS-UQ; Tue, 09 Jan 2024 22:03:48 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 665079.1035301; Tue, 09 Jan 2024 22:03:48 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNKCK-0008LL-PH; Tue, 09 Jan 2024 22:03:48 +0000
Received: by outflank-mailman (input) for mailman id 665079;
 Tue, 09 Jan 2024 22:03:47 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=ONpl=IT=amd.com=Stewart.Hildebrand@srs-se1.protection.inumbo.net>)
 id 1rNK3E-0007gG-Am
 for xen-devel@lists.xenproject.org; Tue, 09 Jan 2024 21:54:24 +0000
Received: from NAM11-DM6-obe.outbound.protection.outlook.com
 (mail-dm6nam11on2062d.outbound.protection.outlook.com
 [2a01:111:f400:7eaa::62d])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id a5b93a9c-af39-11ee-9b0f-b553b5be7939;
 Tue, 09 Jan 2024 22:54:22 +0100 (CET)
Received: from MN2PR12CA0022.namprd12.prod.outlook.com (2603:10b6:208:a8::35)
 by SA1PR12MB7039.namprd12.prod.outlook.com (2603:10b6:806:24e::8)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7159.23; Tue, 9 Jan
 2024 21:54:19 +0000
Received: from BL6PEPF0001AB4E.namprd04.prod.outlook.com
 (2603:10b6:208:a8:cafe::10) by MN2PR12CA0022.outlook.office365.com
 (2603:10b6:208:a8::35) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7181.17 via Frontend
 Transport; Tue, 9 Jan 2024 21:54:18 +0000
Received: from SATLEXMB04.amd.com (165.204.84.17) by
 BL6PEPF0001AB4E.mail.protection.outlook.com (10.167.242.72) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.7181.14 via Frontend Transport; Tue, 9 Jan 2024 21:54:18 +0000
Received: from SATLEXMB08.amd.com (10.181.40.132) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.34; Tue, 9 Jan
 2024 15:54:18 -0600
Received: from SATLEXMB04.amd.com (10.181.40.145) by SATLEXMB08.amd.com
 (10.181.40.132) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.32; Tue, 9 Jan
 2024 13:54:18 -0800
Received: from ubuntu.mshome.net (10.180.168.240) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server id 15.1.2507.34 via Frontend
 Transport; Tue, 9 Jan 2024 15:54:16 -0600
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: a5b93a9c-af39-11ee-9b0f-b553b5be7939
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=Q9BtIlizngkNSUc/TM76ErL6XdoEY2phrbSmdte7XhmX9iwS/cyDoqdaw4CCdwi/G64CFQG7TTdwHUzh1zbFFUhMqIIKGzQxO+QwEoCgkRTFuvLIIOUq5Gebui77UFOvUdQb6Rj4244dQV00WRAWnnbSoxRWI5KKJo9yBefT4P8kqJ8EojwsIVtVZnVRlnydtwm9cNr6Ht/XCUdDh/zpcsuPvZDFaZF++ofazneZMiAqCu1u4xXL9YZdG7KWNQYbrA/ObuQOdwxsDqxWoSozWqMwREOkotAw9OJFS99CYK2cOX7dRVjmAsqK1WmzWlsHFiOuabggA72zolb81i+bEQ==
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=RzlfpTzl8irwryHRYk7h7olENGrZhukS2mcF6gt7c7w=;
 b=GCy/8CZ5YQHW21zvco9Bnfs76xEKP4oROxkZmxFFGLTL2zXzvoitHj9N/EX2hOzY01qKyjOQZwbYiZKN+2sdMAtkfUd1IqQhC45fcmt5c8FKlEnksG0hf1ypUTW8VmImJkLzTTufyNgpLveyG4/NJQNZXotpuNR9h/MmGVK3R9G6+nia8o7blDg+iYRrDAv9K2jPTmsPv09XCwrAQrpaIpDtq+dc+vA5Xsh44uPmW9i+uVWAVlRJBhJFhvJKiwmMElDxCf8uXo+3FuANHoX9BpxqgA3Dk0DNKCzQKXH5QcbQTmPPCl++VrzFhwpL0VYv4c7QmdPsnca4UVu8rEfgaw==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=lists.xenproject.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)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=RzlfpTzl8irwryHRYk7h7olENGrZhukS2mcF6gt7c7w=;
 b=mSXNX9wLyARp/+kLY6hWFsOC4A0AmrySPfADAoOfHMXloyMgAIPTbx0IQCss7hny8O5Prsq1/b7e3ifPc+8pHAuvjht/YwR790W5BjW4DeGOonATPaJq1XJcroD/asITlBShJbf+TyOFLrk9RQvqQggh3tzh1853C6ua/O93ib4=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C
From: Stewart Hildebrand <stewart.hildebrand@amd.com>
To: <xen-devel@lists.xenproject.org>
CC: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>, Andrew Cooper
	<andrew.cooper3@citrix.com>, George Dunlap <george.dunlap@citrix.com>, "Jan
 Beulich" <jbeulich@suse.com>, Julien Grall <julien@xen.org>, "Stefano
 Stabellini" <sstabellini@kernel.org>, Wei Liu <wl@xen.org>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>, "Volodymyr
 Babchuk" <volodymyr_babchuk@epam.com>, Stewart Hildebrand
	<stewart.hildebrand@amd.com>
Subject: [PATCH v12 11/15] vpci: add initial support for virtual PCI bus topology
Date: Tue, 9 Jan 2024 16:51:26 -0500
Message-ID: <20240109215145.430207-12-stewart.hildebrand@amd.com>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20240109215145.430207-1-stewart.hildebrand@amd.com>
References: <20240109215145.430207-1-stewart.hildebrand@amd.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: BL6PEPF0001AB4E:EE_|SA1PR12MB7039:EE_
X-MS-Office365-Filtering-Correlation-Id: e25ff8bf-35b0-493b-c94f-08dc115d87c7
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam: BCL:0;
X-Microsoft-Antispam-Message-Info:
	1kY4rpoNWAyUo6LHB6bUj8h5SaQuz0mkr1VrTLi08ns8DVl71qwpd64jJaWCzwJ9l1tmx7EPN/Yw0v8rQweUFFHy/j5xuUa4ZPdUdCBFugDi7I/9z55/9APfjrRONGujtym29/6LcIADumQuqplWCL5AE1ksw9lUVLCSbGstLLUKbjUdq29kCC41U5Vaa6hWwGILHHk1MeBLmUABxFzD5pJ/RUeRBvmeBkNqAkgMe/1OFpCY9T2mPPk9dVPfxUwC2dpVgPvU1QHX6tbJkzuzI/QQUUlzzx/MaHPrkNS6QkaDzOp3MUEDygAyXjeIx0uYyYTMtOrSGN5eniUPCQxSqxLxWeG9/O+/MjKAqL9mM4j6XjltOJip775s73KNzZzY72SBgxuqs7ax9yM8u2/PnCKVfo0vAV7brrzK4tgCEVoshf59Pnm9n6XP/umEW2eNLlhQz/0CS+WWejioIu/ft5gBcn/4W5Wy4ggkw5xREXvIBe0V0vI/CiNlzkH8i9DHfkr0cT/kc5ARgwBQLq/UYcnatEr9n/u7BtUwRv+MEXepMdkmJdSQdpUcdyc7rntdN7SqB4/67BSovhwwp5j2lStTURBM6h/48rzWSs535j9YFMmwT2H4KnXd3elX7dYe88lZ3cM45VEe8r+i/E8JBvn0f/RN0PGNKbN3ajvcf/67kZ6kja9qKkQPgbPLsQiwCKqslYanXeJssniln+jjlJG2NFMXfqR2YqshDZstKdR2UD2NNOaQ3PllqkLFizpuEX1ODdHxviw/w3Cqewcr6Q==
X-Forefront-Antispam-Report:
	CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230031)(4636009)(39860400002)(136003)(376002)(396003)(346002)(230922051799003)(186009)(82310400011)(64100799003)(1800799012)(451199024)(36840700001)(46966006)(40470700004)(83380400001)(426003)(1076003)(336012)(26005)(2616005)(36860700001)(82740400003)(47076005)(4326008)(8676002)(8936002)(7416002)(44832011)(6916009)(5660300002)(2906002)(6666004)(478600001)(316002)(70586007)(70206006)(86362001)(41300700001)(54906003)(356005)(36756003)(81166007)(40480700001)(40460700003)(36900700001);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Jan 2024 21:54:18.6790
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: e25ff8bf-35b0-493b-c94f-08dc115d87c7
X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com]
X-MS-Exchange-CrossTenant-AuthSource:
	BL6PEPF0001AB4E.namprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA1PR12MB7039

From: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>

Assign SBDF to the PCI devices being passed through with bus 0.
The resulting topology is where PCIe devices reside on the bus 0 of the
root complex itself (embedded endpoints).
This implementation is limited to 32 devices which are allowed on
a single PCI bus.

Please note, that at the moment only function 0 of a multifunction
device can be passed through.

Signed-off-by: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>
Signed-off-by: Volodymyr Babchuk <volodymyr_babchuk@epam.com>
Signed-off-by: Stewart Hildebrand <stewart.hildebrand@amd.com>
---
In v11:
- Fixed code formatting
- Removed bogus write_unlock() call
- Fixed type for new_dev_number
In v10:
- Removed ASSERT(pcidevs_locked())
- Removed redundant code (local sbdf variable, clearing sbdf during
device removal, etc)
- Added __maybe_unused attribute to "out:" label
- Introduced HAS_VPCI_GUEST_SUPPORT Kconfig option, as this is the
  first patch where it is used (previously was in "vpci: add hooks for
  PCI device assign/de-assign")
In v9:
- Lock in add_virtual_device() replaced with ASSERT (thanks, Stewart)
In v8:
- Added write lock in add_virtual_device
Since v6:
- re-work wrt new locking scheme
- OT: add ASSERT(pcidevs_write_locked()); to add_virtual_device()
Since v5:
- s/vpci_add_virtual_device/add_virtual_device and make it static
- call add_virtual_device from vpci_assign_device and do not use
  REGISTER_VPCI_INIT machinery
- add pcidevs_locked ASSERT
- use DECLARE_BITMAP for vpci_dev_assigned_map
Since v4:
- moved and re-worked guest sbdf initializers
- s/set_bit/__set_bit
- s/clear_bit/__clear_bit
- minor comment fix s/Virtual/Guest/
- added VPCI_MAX_VIRT_DEV constant (PCI_SLOT(~0) + 1) which will be used
  later for counting the number of MMIO handlers required for a guest
  (Julien)
Since v3:
 - make use of VPCI_INIT
 - moved all new code to vpci.c which belongs to it
 - changed open-coded 31 to PCI_SLOT(~0)
 - added comments and code to reject multifunction devices with
   functions other than 0
 - updated comment about vpci_dev_next and made it unsigned int
 - implement roll back in case of error while assigning/deassigning devices
 - s/dom%pd/%pd
Since v2:
 - remove casts that are (a) malformed and (b) unnecessary
 - add new line for better readability
 - remove CONFIG_HAS_VPCI_GUEST_SUPPORT ifdef's as the relevant vPCI
    functions are now completely gated with this config
 - gate common code with CONFIG_HAS_VPCI_GUEST_SUPPORT
New in v2
---
 xen/drivers/Kconfig     |  4 +++
 xen/drivers/vpci/vpci.c | 57 +++++++++++++++++++++++++++++++++++++++++
 xen/include/xen/sched.h |  8 ++++++
 xen/include/xen/vpci.h  | 11 ++++++++
 4 files changed, 80 insertions(+)

diff --git a/xen/drivers/Kconfig b/xen/drivers/Kconfig
index db94393f47a6..780490cf8e39 100644
--- a/xen/drivers/Kconfig
+++ b/xen/drivers/Kconfig
@@ -15,4 +15,8 @@ source "drivers/video/Kconfig"
 config HAS_VPCI
 	bool
 
+config HAS_VPCI_GUEST_SUPPORT
+	bool
+	depends on HAS_VPCI
+
 endmenu
diff --git a/xen/drivers/vpci/vpci.c b/xen/drivers/vpci/vpci.c
index a0e8b1012509..57cfabfd9ad3 100644
--- a/xen/drivers/vpci/vpci.c
+++ b/xen/drivers/vpci/vpci.c
@@ -40,6 +40,49 @@ extern vpci_register_init_t *const __start_vpci_array[];
 extern vpci_register_init_t *const __end_vpci_array[];
 #define NUM_VPCI_INIT (__end_vpci_array - __start_vpci_array)
 
+#ifdef CONFIG_HAS_VPCI_GUEST_SUPPORT
+static int add_virtual_device(struct pci_dev *pdev)
+{
+    struct domain *d = pdev->domain;
+    unsigned int new_dev_number;
+
+    if ( is_hardware_domain(d) )
+        return 0;
+
+    ASSERT(rw_is_write_locked(&pdev->domain->pci_lock));
+
+    /*
+     * Each PCI bus supports 32 devices/slots at max or up to 256 when
+     * there are multi-function ones which are not yet supported.
+     */
+    if ( pdev->info.is_extfn && !pdev->info.is_virtfn )
+    {
+        gdprintk(XENLOG_ERR, "%pp: only function 0 passthrough supported\n",
+                 &pdev->sbdf);
+        return -EOPNOTSUPP;
+    }
+    new_dev_number = find_first_zero_bit(d->vpci_dev_assigned_map,
+                                         VPCI_MAX_VIRT_DEV);
+    if ( new_dev_number == VPCI_MAX_VIRT_DEV )
+        return -ENOSPC;
+
+    __set_bit(new_dev_number, &d->vpci_dev_assigned_map);
+
+    /*
+     * Both segment and bus number are 0:
+     *  - we emulate a single host bridge for the guest, e.g. segment 0
+     *  - with bus 0 the virtual devices are seen as embedded
+     *    endpoints behind the root complex
+     *
+     * TODO: add support for multi-function devices.
+     */
+    pdev->vpci->guest_sbdf = PCI_SBDF(0, 0, new_dev_number, 0);
+
+    return 0;
+}
+
+#endif /* CONFIG_HAS_VPCI_GUEST_SUPPORT */
+
 void vpci_deassign_device(struct pci_dev *pdev)
 {
     unsigned int i;
@@ -49,6 +92,12 @@ void vpci_deassign_device(struct pci_dev *pdev)
     if ( !has_vpci(pdev->domain) || !pdev->vpci )
         return;
 
+#ifdef CONFIG_HAS_VPCI_GUEST_SUPPORT
+    if ( pdev->vpci->guest_sbdf.sbdf != ~0 )
+        __clear_bit(pdev->vpci->guest_sbdf.dev,
+                    &pdev->domain->vpci_dev_assigned_map);
+#endif
+
     spin_lock(&pdev->vpci->lock);
     while ( !list_empty(&pdev->vpci->handlers) )
     {
@@ -105,6 +154,13 @@ int vpci_assign_device(struct pci_dev *pdev)
     INIT_LIST_HEAD(&pdev->vpci->handlers);
     spin_lock_init(&pdev->vpci->lock);
 
+#ifdef CONFIG_HAS_VPCI_GUEST_SUPPORT
+    pdev->vpci->guest_sbdf.sbdf = ~0;
+    rc = add_virtual_device(pdev);
+    if ( rc )
+        goto out;
+#endif
+
     for ( i = 0; i < NUM_VPCI_INIT; i++ )
     {
         rc = __start_vpci_array[i](pdev);
@@ -112,6 +168,7 @@ int vpci_assign_device(struct pci_dev *pdev)
             break;
     }
 
+ out: __maybe_unused;
     if ( rc )
         vpci_deassign_device(pdev);
 
diff --git a/xen/include/xen/sched.h b/xen/include/xen/sched.h
index 37f5922f3206..b58a822847be 100644
--- a/xen/include/xen/sched.h
+++ b/xen/include/xen/sched.h
@@ -484,6 +484,14 @@ struct domain
      * 2. pdev->vpci->lock
      */
     rwlock_t pci_lock;
+#ifdef CONFIG_HAS_VPCI_GUEST_SUPPORT
+    /*
+     * The bitmap which shows which device numbers are already used by the
+     * virtual PCI bus topology and is used to assign a unique SBDF to the
+     * next passed through virtual PCI device.
+     */
+    DECLARE_BITMAP(vpci_dev_assigned_map, VPCI_MAX_VIRT_DEV);
+#endif
 #endif
 
 #ifdef CONFIG_HAS_PASSTHROUGH
diff --git a/xen/include/xen/vpci.h b/xen/include/xen/vpci.h
index 77320a667e55..053467f04982 100644
--- a/xen/include/xen/vpci.h
+++ b/xen/include/xen/vpci.h
@@ -21,6 +21,13 @@ typedef int vpci_register_init_t(struct pci_dev *dev);
 
 #define VPCI_ECAM_BDF(addr)     (((addr) & 0x0ffff000) >> 12)
 
+/*
+ * Maximum number of devices supported by the virtual bus topology:
+ * each PCI bus supports 32 devices/slots at max or up to 256 when
+ * there are multi-function ones which are not yet supported.
+ */
+#define VPCI_MAX_VIRT_DEV       (PCI_SLOT(~0) + 1)
+
 #define REGISTER_VPCI_INIT(x, p)                \
   static vpci_register_init_t *const x##_entry  \
                __used_section(".data.vpci." p) = x
@@ -175,6 +182,10 @@ struct vpci {
             struct vpci_arch_msix_entry arch;
         } entries[];
     } *msix;
+#ifdef CONFIG_HAS_VPCI_GUEST_SUPPORT
+    /* Guest SBDF of the device. */
+    pci_sbdf_t guest_sbdf;
+#endif
 #endif
 };
 
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Tue Jan 09 22:06:01 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 09 Jan 2024 22:06:01 +0000
Received: from list by lists.xenproject.org with outflank-mailman.665089.1035311 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNKER-00011y-ET; Tue, 09 Jan 2024 22:05:59 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 665089.1035311; Tue, 09 Jan 2024 22:05:59 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNKER-00011r-Ar; Tue, 09 Jan 2024 22:05:59 +0000
Received: by outflank-mailman (input) for mailman id 665089;
 Tue, 09 Jan 2024 22:05:58 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=ONpl=IT=amd.com=Stewart.Hildebrand@srs-se1.protection.inumbo.net>)
 id 1rNK2d-0007gG-PN
 for xen-devel@lists.xenproject.org; Tue, 09 Jan 2024 21:53:47 +0000
Received: from NAM10-BN7-obe.outbound.protection.outlook.com
 (mail-bn7nam10on20600.outbound.protection.outlook.com
 [2a01:111:f403:2009::600])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 8f52a3d3-af39-11ee-9b0f-b553b5be7939;
 Tue, 09 Jan 2024 22:53:45 +0100 (CET)
Received: from SJ0PR03CA0254.namprd03.prod.outlook.com (2603:10b6:a03:3a0::19)
 by CH2PR12MB4311.namprd12.prod.outlook.com (2603:10b6:610:a8::21)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7159.25; Tue, 9 Jan
 2024 21:53:41 +0000
Received: from SJ1PEPF00001CEA.namprd03.prod.outlook.com
 (2603:10b6:a03:3a0:cafe::d9) by SJ0PR03CA0254.outlook.office365.com
 (2603:10b6:a03:3a0::19) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7159.23 via Frontend
 Transport; Tue, 9 Jan 2024 21:53:41 +0000
Received: from SATLEXMB03.amd.com (165.204.84.17) by
 SJ1PEPF00001CEA.mail.protection.outlook.com (10.167.242.26) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.7181.14 via Frontend Transport; Tue, 9 Jan 2024 21:53:40 +0000
Received: from SATLEXMB04.amd.com (10.181.40.145) by SATLEXMB03.amd.com
 (10.181.40.144) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.34; Tue, 9 Jan
 2024 15:53:40 -0600
Received: from ubuntu.mshome.net (10.180.168.240) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server id 15.1.2507.34 via Frontend
 Transport; Tue, 9 Jan 2024 15:53:39 -0600
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 8f52a3d3-af39-11ee-9b0f-b553b5be7939
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=bQ8LdFFdpPqsdBlAaEdalVN2W6q4/m9/OMZ2QX+60gsa+ukNv8mPs+fV/2QvsZ2Zdphujqkw6xGDJcGCzAIz+yu9hs2US8spVmIpx3BCBQo2KASqSE3IP3pSAD1L6ITuFN506mR6UqisMVZYg7K/R1Yb7BD+Epb/nUXnfxq99er8ZzPsgTHe833gg5uoP/YNJ32itB60umpqfBgTLpZwknITal9e2/eYpBKNCcpN15d57Y9MwadoAJLSguBfHx4t2bG3kssasxg9QuKabDNa6echG0WAS/cuqvRNqLPRep6fsyhROO/X5F+GSrp8XqPfKioIC1IAo+DuUU/3hSLF0g==
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=8rT/5Ji7hQyXs6rmimqQBYS2da8mep0A+0DZ9Q5ryDI=;
 b=VSjmurngnAIBEwvuPoq/p/ZMqXW+Z2nwHtUsX8hMZyvTk+infL5JkRlVDyNKon354Y4N7jv6D2yMknpMWAH2+/XiPpf8nlvjW8DADfnFrhb+QTAb6T+tFVvOKgANg6VJpAz4oGvtqvzqiNgW+/AkzAc2dXwwGjDvWe8vx00BWapp7IaDv1NxnxDNcls/PZzDFobfFY+9TMThtYNyUWDp9lfpByTIcos4sV4FoHp9G0CWHYAoIM0bXxiJQ2uwLQ6mFZcBqPp7/CKMzQuEkm4qGZLFMLwX+yPOZ2Ef59RsvBUKvige40RrmJCWod/FzuTjUzmF626A/HJ/CFfIqVPnuA==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=lists.xenproject.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)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=8rT/5Ji7hQyXs6rmimqQBYS2da8mep0A+0DZ9Q5ryDI=;
 b=OSNOQWIGMDBR+zQgnYwBdt1he+Pbv9qOfagol4HdFKGP5H65DIDzLxggn3nW2oC9eU+PsnDVmShfML7iGoNLNVo73AaNE75Ktaazr134kqy9nDZ+NbPIbUvFwA6ZmBIUKN1rA6mLtN8WKdsUUZ5+szYPYZrijeThrfEPpdWEhRY=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=SATLEXMB03.amd.com; pr=C
From: Stewart Hildebrand <stewart.hildebrand@amd.com>
To: <xen-devel@lists.xenproject.org>
CC: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>, "Volodymyr
 Babchuk" <volodymyr_babchuk@epam.com>, Stewart Hildebrand
	<stewart.hildebrand@amd.com>
Subject: [PATCH v12 08/15] vpci/header: handle p2m range sets per BAR
Date: Tue, 9 Jan 2024 16:51:23 -0500
Message-ID: <20240109215145.430207-9-stewart.hildebrand@amd.com>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20240109215145.430207-1-stewart.hildebrand@amd.com>
References: <20240109215145.430207-1-stewart.hildebrand@amd.com>
MIME-Version: 1.0
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: SJ1PEPF00001CEA:EE_|CH2PR12MB4311:EE_
X-MS-Office365-Filtering-Correlation-Id: 525c7da1-a1dc-4416-5a0d-08dc115d7131
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam: BCL:0;
X-Microsoft-Antispam-Message-Info:
	kuzD1DFmS0pNCy//oT2WjRRl18sPlpGUY89DGtN2eBTZWojoVi+OaRHySzpLJOfxoWTpq3FwRxNyB5xhoAJsZ09Z2ElA2goL1jhx5QF4aT6etMwmFWSAeA5Y0r9iZ4tWl5hIiDelmximMLyAnKFlUXSnqrk1IuK1yei7a9pf3iXaFG10tgy2WF09spP10RvSvFNKP4/RefiVcMVRfL6A36stV5mTIo0Zw74kAgWkxPbX4HiwriVRgTWp8LYIpuIuUlGprJJif6s9H5dgqySc5a5J/P0t7R+7yz5PFo7cLcPZ0DR8RbIWZb/wuT4Di37AoGUtzoSvHl4T97TFS5SlJm0yC0lbcEIZ0tB7r0bsKZ+FlaMFEoXlqt3jR7vZVAhox3i0kpiKn+dDzxuzTBB5QPFbpJ1xdANNVMrTmv9i1ps2svhr5lng5hsQF1xulks9XGnw8ZK0yM8+Uos8VYju5IBF1ooCRjRni5AGK+sSQQbVlORc1EpU98qYGv2tXfgJkca+VKDI9ckWiB5HUfRfOwXNVpng3BkZ/ZSxl/bq5MAhq/Noxip+Chx1qxyB8epKOAFK63q28KYc4lIz95ZIQHvY4cA381tTv1/Fp0/eJC3Z095Qtg0d3PzrbHA0AQ/iKgizo8Rj8m/0B2qXxSXxoIdn5LvEbADJ0wXEnyoDQsuODTIjfijOxwIMvropkjqT6iNNov8Lx5aETmQUbfUeN0Rc0h9CXrsWdjKYP0kObBU66LS+YEIqv1HrLnSEPxfL6oWxOo+CfDKEJVFkf7uM1JF/GSLDpqWew1YDFzDyGT2FVbcMrdNDIATzehnucmdy
X-Forefront-Antispam-Report:
	CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB03.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230031)(4636009)(346002)(376002)(396003)(136003)(39860400002)(230173577357003)(230273577357003)(230922051799003)(82310400011)(64100799003)(186009)(451199024)(1800799012)(46966006)(36840700001)(40470700004)(40480700001)(40460700003)(2906002)(478600001)(36860700001)(30864003)(5660300002)(6666004)(81166007)(4326008)(44832011)(356005)(41300700001)(8936002)(316002)(70206006)(70586007)(54906003)(36756003)(6916009)(8676002)(2616005)(86362001)(426003)(26005)(336012)(1076003)(83380400001)(47076005)(82740400003)(36900700001);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Jan 2024 21:53:40.7208
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 525c7da1-a1dc-4416-5a0d-08dc115d7131
X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB03.amd.com]
X-MS-Exchange-CrossTenant-AuthSource:
	SJ1PEPF00001CEA.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH2PR12MB4311

From: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>

Instead of handling a single range set, that contains all the memory
regions of all the BARs and ROM, have them per BAR.
As the range sets are now created when a PCI device is added and destroyed
when it is removed so make them named and accounted.

Note that rangesets were chosen here despite there being only up to
3 separate ranges in each set (typically just 1). But rangeset per BAR
was chosen for the ease of implementation and existing code re-usability.

Also note that error handling of vpci_process_pending() is slightly
modified, and that vPCI handlers are no longer removed if the creation
of the mappings in vpci_process_pending() fails, as that's unlikely to
lead to a functional device in any case.

This is in preparation of making non-identity mappings in p2m for the MMIOs.

Signed-off-by: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>
Signed-off-by: Volodymyr Babchuk <volodymyr_babchuk@epam.com>
Reviewed-by: Roger Pau Monné <roger.pau@citrix.com>
Signed-off-by: Stewart Hildebrand <stewart.hildebrand@amd.com>
---
In v12:
- s/rangeset_empty/rangeset_purge/
- change i to num_bars for expansion ROM (purely cosmetic change)
In v11:
- Modified commit message to note changes in error handling in
vpci_process_pending()
- Removed redundant ASSERT() in defer_map. There is no reason to
introduce it in this patch and there is no other patch where
introducing that ASSERT() was appropriate.
- Fixed formatting
- vpci_process_pending() clears v->vpci.pdev if it failed
  checks at the beginning
- Added Roger's R-B tag
In v10:
- Added additional checks to vpci_process_pending()
- vpci_process_pending() now clears rangeset in case of failure
- Fixed locks in vpci_process_pending()
- Fixed coding style issues
- Fixed error handling in init_bars
In v9:
- removed d->vpci.map_pending in favor of checking v->vpci.pdev !=
NULL
- printk -> gprintk
- renamed bar variable to fix shadowing
- fixed bug with iterating on remote device's BARs
- relaxed lock in vpci_process_pending
- removed stale comment
Since v6:
- update according to the new locking scheme
- remove odd fail label in modify_bars
Since v5:
- fix comments
- move rangeset allocation to init_bars and only allocate
  for MAPPABLE BARs
- check for overlap with the already setup BAR ranges
Since v4:
- use named range sets for BARs (Jan)
- changes required by the new locking scheme
- updated commit message (Jan)
Since v3:
- re-work vpci_cancel_pending accordingly to the per-BAR handling
- s/num_mem_ranges/map_pending and s/uint8_t/bool
- ASSERT(bar->mem) in modify_bars
- create and destroy the rangesets on add/remove
---
 xen/drivers/vpci/header.c | 257 ++++++++++++++++++++++++++------------
 xen/drivers/vpci/vpci.c   |   6 +
 xen/include/xen/vpci.h    |   2 +-
 3 files changed, 185 insertions(+), 80 deletions(-)

diff --git a/xen/drivers/vpci/header.c b/xen/drivers/vpci/header.c
index 39e11e141b38..feccd070ddd0 100644
--- a/xen/drivers/vpci/header.c
+++ b/xen/drivers/vpci/header.c
@@ -162,63 +162,107 @@ static void modify_decoding(const struct pci_dev *pdev, uint16_t cmd,
 
 bool vpci_process_pending(struct vcpu *v)
 {
-    if ( v->vpci.mem )
+    struct pci_dev *pdev = v->vpci.pdev;
+    struct map_data data = {
+        .d = v->domain,
+        .map = v->vpci.cmd & PCI_COMMAND_MEMORY,
+    };
+    struct vpci_header *header = NULL;
+    unsigned int i;
+
+    if ( !pdev )
+        return false;
+
+    read_lock(&v->domain->pci_lock);
+
+    if ( !pdev->vpci || (v->domain != pdev->domain) )
     {
-        struct map_data data = {
-            .d = v->domain,
-            .map = v->vpci.cmd & PCI_COMMAND_MEMORY,
-        };
-        int rc = rangeset_consume_ranges(v->vpci.mem, map_range, &data);
+        v->vpci.pdev = NULL;
+        read_unlock(&v->domain->pci_lock);
+        return false;
+    }
+
+    header = &pdev->vpci->header;
+    for ( i = 0; i < ARRAY_SIZE(header->bars); i++ )
+    {
+        struct vpci_bar *bar = &header->bars[i];
+        int rc;
+
+        if ( rangeset_is_empty(bar->mem) )
+            continue;
+
+        rc = rangeset_consume_ranges(bar->mem, map_range, &data);
 
         if ( rc == -ERESTART )
+        {
+            read_unlock(&v->domain->pci_lock);
             return true;
+        }
 
-        write_lock(&v->domain->pci_lock);
-        spin_lock(&v->vpci.pdev->vpci->lock);
-        /* Disable memory decoding unconditionally on failure. */
-        modify_decoding(v->vpci.pdev,
-                        rc ? v->vpci.cmd & ~PCI_COMMAND_MEMORY : v->vpci.cmd,
-                        !rc && v->vpci.rom_only);
-        spin_unlock(&v->vpci.pdev->vpci->lock);
-
-        rangeset_destroy(v->vpci.mem);
-        v->vpci.mem = NULL;
         if ( rc )
-            /*
-             * FIXME: in case of failure remove the device from the domain.
-             * Note that there might still be leftover mappings. While this is
-             * safe for Dom0, for DomUs the domain will likely need to be
-             * killed in order to avoid leaking stale p2m mappings on
-             * failure.
-             */
-            vpci_deassign_device(v->vpci.pdev);
-        write_unlock(&v->domain->pci_lock);
+        {
+            spin_lock(&pdev->vpci->lock);
+            /* Disable memory decoding unconditionally on failure. */
+            modify_decoding(pdev, v->vpci.cmd & ~PCI_COMMAND_MEMORY,
+                            false);
+            spin_unlock(&pdev->vpci->lock);
+
+            /* Clean all the rangesets */
+            for ( i = 0; i < ARRAY_SIZE(header->bars); i++ )
+                if ( !rangeset_is_empty(header->bars[i].mem) )
+                     rangeset_purge(header->bars[i].mem);
+
+            v->vpci.pdev = NULL;
+
+            read_unlock(&v->domain->pci_lock);
+
+            if ( !is_hardware_domain(v->domain) )
+                domain_crash(v->domain);
+
+            return false;
+        }
     }
+    v->vpci.pdev = NULL;
+
+    spin_lock(&pdev->vpci->lock);
+    modify_decoding(pdev, v->vpci.cmd, v->vpci.rom_only);
+    spin_unlock(&pdev->vpci->lock);
+
+    read_unlock(&v->domain->pci_lock);
 
     return false;
 }
 
 static int __init apply_map(struct domain *d, const struct pci_dev *pdev,
-                            struct rangeset *mem, uint16_t cmd)
+                            uint16_t cmd)
 {
     struct map_data data = { .d = d, .map = true };
-    int rc;
+    struct vpci_header *header = &pdev->vpci->header;
+    int rc = 0;
+    unsigned int i;
 
     ASSERT(rw_is_write_locked(&d->pci_lock));
 
-    while ( (rc = rangeset_consume_ranges(mem, map_range, &data)) == -ERESTART )
+    for ( i = 0; i < ARRAY_SIZE(header->bars); i++ )
     {
-        /*
-         * It's safe to drop and reacquire the lock in this context
-         * without risking pdev disappearing because devices cannot be
-         * removed until the initial domain has been started.
-         */
-        write_unlock(&d->pci_lock);
-        process_pending_softirqs();
-        write_lock(&d->pci_lock);
-    }
+        struct vpci_bar *bar = &header->bars[i];
 
-    rangeset_destroy(mem);
+        if ( rangeset_is_empty(bar->mem) )
+            continue;
+
+        while ( (rc = rangeset_consume_ranges(bar->mem, map_range,
+                                              &data)) == -ERESTART )
+        {
+            /*
+             * It's safe to drop and reacquire the lock in this context
+             * without risking pdev disappearing because devices cannot be
+             * removed until the initial domain has been started.
+             */
+            write_unlock(&d->pci_lock);
+            process_pending_softirqs();
+            write_lock(&d->pci_lock);
+        }
+    }
     if ( !rc )
         modify_decoding(pdev, cmd, false);
 
@@ -226,7 +270,7 @@ static int __init apply_map(struct domain *d, const struct pci_dev *pdev,
 }
 
 static void defer_map(struct domain *d, struct pci_dev *pdev,
-                      struct rangeset *mem, uint16_t cmd, bool rom_only)
+                      uint16_t cmd, bool rom_only)
 {
     struct vcpu *curr = current;
 
@@ -237,7 +281,6 @@ static void defer_map(struct domain *d, struct pci_dev *pdev,
      * started for the same device if the domain is not well-behaved.
      */
     curr->vpci.pdev = pdev;
-    curr->vpci.mem = mem;
     curr->vpci.cmd = cmd;
     curr->vpci.rom_only = rom_only;
     /*
@@ -251,33 +294,33 @@ static void defer_map(struct domain *d, struct pci_dev *pdev,
 static int modify_bars(const struct pci_dev *pdev, uint16_t cmd, bool rom_only)
 {
     struct vpci_header *header = &pdev->vpci->header;
-    struct rangeset *mem = rangeset_new(NULL, NULL, 0);
     struct pci_dev *tmp, *dev = NULL;
     const struct domain *d;
     const struct vpci_msix *msix = pdev->vpci->msix;
-    unsigned int i;
+    unsigned int i, j;
     int rc;
 
     ASSERT(rw_is_write_locked(&pdev->domain->pci_lock));
 
-    if ( !mem )
-        return -ENOMEM;
-
     /*
-     * Create a rangeset that represents the current device BARs memory region
-     * and compare it against all the currently active BAR memory regions. If
-     * an overlap is found, subtract it from the region to be mapped/unmapped.
+     * Create a rangeset per BAR that represents the current device memory
+     * region and compare it against all the currently active BAR memory
+     * regions. If an overlap is found, subtract it from the region to be
+     * mapped/unmapped.
      *
-     * First fill the rangeset with all the BARs of this device or with the ROM
+     * First fill the rangesets with the BAR of this device or with the ROM
      * BAR only, depending on whether the guest is toggling the memory decode
      * bit of the command register, or the enable bit of the ROM BAR register.
      */
     for ( i = 0; i < ARRAY_SIZE(header->bars); i++ )
     {
-        const struct vpci_bar *bar = &header->bars[i];
+        struct vpci_bar *bar = &header->bars[i];
         unsigned long start = PFN_DOWN(bar->addr);
         unsigned long end = PFN_DOWN(bar->addr + bar->size - 1);
 
+        if ( !bar->mem )
+            continue;
+
         if ( !MAPPABLE_BAR(bar) ||
              (rom_only ? bar->type != VPCI_BAR_ROM
                        : (bar->type == VPCI_BAR_ROM && !header->rom_enabled)) ||
@@ -293,14 +336,31 @@ static int modify_bars(const struct pci_dev *pdev, uint16_t cmd, bool rom_only)
             continue;
         }
 
-        rc = rangeset_add_range(mem, start, end);
+        rc = rangeset_add_range(bar->mem, start, end);
         if ( rc )
         {
             printk(XENLOG_G_WARNING "Failed to add [%lx, %lx]: %d\n",
                    start, end, rc);
-            rangeset_destroy(mem);
             return rc;
         }
+
+        /* Check for overlap with the already setup BAR ranges. */
+        for ( j = 0; j < i; j++ )
+        {
+            struct vpci_bar *prev_bar = &header->bars[j];
+
+            if ( rangeset_is_empty(prev_bar->mem) )
+                continue;
+
+            rc = rangeset_remove_range(prev_bar->mem, start, end);
+            if ( rc )
+            {
+                gprintk(XENLOG_WARNING,
+                       "%pp: failed to remove overlapping range [%lx, %lx]: %d\n",
+                        &pdev->sbdf, start, end, rc);
+                return rc;
+            }
+        }
     }
 
     /* Remove any MSIX regions if present. */
@@ -310,14 +370,21 @@ static int modify_bars(const struct pci_dev *pdev, uint16_t cmd, bool rom_only)
         unsigned long end = PFN_DOWN(vmsix_table_addr(pdev->vpci, i) +
                                      vmsix_table_size(pdev->vpci, i) - 1);
 
-        rc = rangeset_remove_range(mem, start, end);
-        if ( rc )
+        for ( j = 0; j < ARRAY_SIZE(header->bars); j++ )
         {
-            printk(XENLOG_G_WARNING
-                   "Failed to remove MSIX table [%lx, %lx]: %d\n",
-                   start, end, rc);
-            rangeset_destroy(mem);
-            return rc;
+            const struct vpci_bar *bar = &header->bars[j];
+
+            if ( rangeset_is_empty(bar->mem) )
+                continue;
+
+            rc = rangeset_remove_range(bar->mem, start, end);
+            if ( rc )
+            {
+                gprintk(XENLOG_WARNING,
+                       "%pp: failed to remove MSIX table [%lx, %lx]: %d\n",
+                        &pdev->sbdf, start, end, rc);
+                return rc;
+            }
         }
     }
 
@@ -357,27 +424,37 @@ static int modify_bars(const struct pci_dev *pdev, uint16_t cmd, bool rom_only)
 
             for ( i = 0; i < ARRAY_SIZE(tmp->vpci->header.bars); i++ )
             {
-                const struct vpci_bar *bar = &tmp->vpci->header.bars[i];
-                unsigned long start = PFN_DOWN(bar->addr);
-                unsigned long end = PFN_DOWN(bar->addr + bar->size - 1);
-
-                if ( !bar->enabled ||
-                     !rangeset_overlaps_range(mem, start, end) ||
-                     /*
-                      * If only the ROM enable bit is toggled check against
-                      * other BARs in the same device for overlaps, but not
-                      * against the same ROM BAR.
-                      */
-                     (rom_only && tmp == pdev && bar->type == VPCI_BAR_ROM) )
+                const struct vpci_bar *remote_bar = &tmp->vpci->header.bars[i];
+                unsigned long start = PFN_DOWN(remote_bar->addr);
+                unsigned long end = PFN_DOWN(remote_bar->addr +
+                                             remote_bar->size - 1);
+
+                if ( !remote_bar->enabled )
                     continue;
 
-                rc = rangeset_remove_range(mem, start, end);
-                if ( rc )
+                for ( j = 0; j < ARRAY_SIZE(header->bars); j++)
                 {
-                    printk(XENLOG_G_WARNING "Failed to remove [%lx, %lx]: %d\n",
-                           start, end, rc);
-                    rangeset_destroy(mem);
-                    return rc;
+                    const struct vpci_bar *bar = &header->bars[j];
+
+                    if ( !rangeset_overlaps_range(bar->mem, start, end) ||
+                         /*
+                          * If only the ROM enable bit is toggled check against
+                          * other BARs in the same device for overlaps, but not
+                          * against the same ROM BAR.
+                          */
+                         (rom_only &&
+                          tmp == pdev &&
+                          bar->type == VPCI_BAR_ROM) )
+                        continue;
+
+                    rc = rangeset_remove_range(bar->mem, start, end);
+                    if ( rc )
+                    {
+                        gprintk(XENLOG_WARNING,
+                                "%pp: failed to remove [%lx, %lx]: %d\n",
+                                &pdev->sbdf, start, end, rc);
+                        return rc;
+                    }
                 }
             }
         }
@@ -401,10 +478,10 @@ static int modify_bars(const struct pci_dev *pdev, uint16_t cmd, bool rom_only)
          * will always be to establish mappings and process all the BARs.
          */
         ASSERT((cmd & PCI_COMMAND_MEMORY) && !rom_only);
-        return apply_map(pdev->domain, pdev, mem, cmd);
+        return apply_map(pdev->domain, pdev, cmd);
     }
 
-    defer_map(dev->domain, dev, mem, cmd, rom_only);
+    defer_map(dev->domain, dev, cmd, rom_only);
 
     return 0;
 }
@@ -593,6 +670,18 @@ static void cf_check rom_write(
         rom->addr = val & PCI_ROM_ADDRESS_MASK;
 }
 
+static int bar_add_rangeset(const struct pci_dev *pdev, struct vpci_bar *bar,
+                            unsigned int i)
+{
+    char str[32];
+
+    snprintf(str, sizeof(str), "%pp:BAR%u", &pdev->sbdf, i);
+
+    bar->mem = rangeset_new(pdev->domain, str, RANGESETF_no_print);
+
+    return !bar->mem ? -ENOMEM : 0;
+}
+
 static int cf_check init_header(struct pci_dev *pdev)
 {
     uint16_t cmd;
@@ -748,6 +837,10 @@ static int cf_check init_header(struct pci_dev *pdev)
         else
             bars[i].type = VPCI_BAR_MEM32;
 
+        rc = bar_add_rangeset(pdev, &bars[i], i);
+        if ( rc )
+            goto fail;
+
         rc = pci_size_mem_bar(pdev->sbdf, reg, &addr, &size,
                               (i == num_bars - 1) ? PCI_BAR_LAST : 0);
         if ( rc < 0 )
@@ -798,6 +891,12 @@ static int cf_check init_header(struct pci_dev *pdev)
                                4, rom);
         if ( rc )
             rom->type = VPCI_BAR_EMPTY;
+        else
+        {
+            rc = bar_add_rangeset(pdev, rom, num_bars);
+            if ( rc )
+                goto fail;
+        }
     }
     else if ( !is_hwdom )
     {
diff --git a/xen/drivers/vpci/vpci.c b/xen/drivers/vpci/vpci.c
index 42eac85106a3..a0e8b1012509 100644
--- a/xen/drivers/vpci/vpci.c
+++ b/xen/drivers/vpci/vpci.c
@@ -42,6 +42,8 @@ extern vpci_register_init_t *const __end_vpci_array[];
 
 void vpci_deassign_device(struct pci_dev *pdev)
 {
+    unsigned int i;
+
     ASSERT(rw_is_write_locked(&pdev->domain->pci_lock));
 
     if ( !has_vpci(pdev->domain) || !pdev->vpci )
@@ -67,6 +69,10 @@ void vpci_deassign_device(struct pci_dev *pdev)
             if ( pdev->vpci->msix->table[i] )
                 iounmap(pdev->vpci->msix->table[i]);
     }
+
+    for ( i = 0; i < ARRAY_SIZE(pdev->vpci->header.bars); i++ )
+        rangeset_destroy(pdev->vpci->header.bars[i].mem);
+
     xfree(pdev->vpci->msix);
     xfree(pdev->vpci->msi);
     xfree(pdev->vpci);
diff --git a/xen/include/xen/vpci.h b/xen/include/xen/vpci.h
index b0e38a5a1acb..817ee9ee7300 100644
--- a/xen/include/xen/vpci.h
+++ b/xen/include/xen/vpci.h
@@ -92,6 +92,7 @@ struct vpci {
             /* Guest address. */
             uint64_t guest_addr;
             uint64_t size;
+            struct rangeset *mem;
             enum {
                 VPCI_BAR_EMPTY,
                 VPCI_BAR_IO,
@@ -176,7 +177,6 @@ struct vpci {
 
 struct vpci_vcpu {
     /* Per-vcpu structure to store state while {un}mapping of PCI BARs. */
-    struct rangeset *mem;
     struct pci_dev *pdev;
     uint16_t cmd;
     bool rom_only : 1;
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Tue Jan 09 22:06:48 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 09 Jan 2024 22:06:48 +0000
Received: from list by lists.xenproject.org with outflank-mailman.665092.1035320 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNKFD-0001ws-O7; Tue, 09 Jan 2024 22:06:47 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 665092.1035320; Tue, 09 Jan 2024 22:06:47 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNKFD-0001wl-LF; Tue, 09 Jan 2024 22:06:47 +0000
Received: by outflank-mailman (input) for mailman id 665092;
 Tue, 09 Jan 2024 22:06:45 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=ONpl=IT=amd.com=Stewart.Hildebrand@srs-se1.protection.inumbo.net>)
 id 1rNK34-0007gG-3i
 for xen-devel@lists.xenproject.org; Tue, 09 Jan 2024 21:54:14 +0000
Received: from NAM04-MW2-obe.outbound.protection.outlook.com
 (mail-mw2nam04on20627.outbound.protection.outlook.com
 [2a01:111:f400:7e8c::627])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 9f5ef59c-af39-11ee-9b0f-b553b5be7939;
 Tue, 09 Jan 2024 22:54:12 +0100 (CET)
Received: from SJ0PR03CA0046.namprd03.prod.outlook.com (2603:10b6:a03:33e::21)
 by CH0PR12MB5283.namprd12.prod.outlook.com (2603:10b6:610:d6::12)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7159.23; Tue, 9 Jan
 2024 21:54:07 +0000
Received: from SJ1PEPF00001CE8.namprd03.prod.outlook.com
 (2603:10b6:a03:33e:cafe::c6) by SJ0PR03CA0046.outlook.office365.com
 (2603:10b6:a03:33e::21) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7159.23 via Frontend
 Transport; Tue, 9 Jan 2024 21:54:07 +0000
Received: from SATLEXMB03.amd.com (165.204.84.17) by
 SJ1PEPF00001CE8.mail.protection.outlook.com (10.167.242.24) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.7181.14 via Frontend Transport; Tue, 9 Jan 2024 21:54:07 +0000
Received: from SATLEXMB04.amd.com (10.181.40.145) by SATLEXMB03.amd.com
 (10.181.40.144) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.34; Tue, 9 Jan
 2024 15:54:06 -0600
Received: from ubuntu.mshome.net (10.180.168.240) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server id 15.1.2507.34 via Frontend
 Transport; Tue, 9 Jan 2024 15:54:04 -0600
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 9f5ef59c-af39-11ee-9b0f-b553b5be7939
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=n/jOB2IVHFoIb2RKQldmNTWHJY50uNdRs1wgRU2pMm0WcNKGI9r6fk0RrgKKAxr0E5naS3MeSfdXgDTvei9XE/OLs3mQjbDhxDnvJ7BGpSlRNLsWZwGj4YqLCvDCafbRIQvy8BSygo+1ouMk2fh4HDxHE52F1rAKNfIPlWhONVUK+hUrgPBuAgzswInE+Dkyfpvra1d0wmaCHaPOqiPOwyII0hYBURYuLNDevaKHRY3EHKH0Osg2U/k4HewPYGEk6Rn0OCrksBXIHh/KpQiN3WlZyzhEJO2xjemrJqScZ+WrdGzVrdrYPAxbO+sGtLNCmmpf6WeRX1j9JWO6U8IoHw==
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=3xDFu5KZSSDdncpc2mzzqE3hD5UQFFULxFo1QzgNY0Y=;
 b=au9aOPYYnfT7xgPmfgCOi83lHOmKU/18fCns6YLvy2sdFNBTJoWBSdL65ZMBHNKu3T9cYcwoLP/Q7ni5A+R7fz6jw+r0wmI+7ufGTJsRIJBULhWnMBOMgNq+MZXzTiD1IL9W1iqKxhyxbatKBsonnerRUobvQAUOv96/pxCytqnyHjksn0t4OOO1mpbclPlJcUVYMfmYd93iCpu9iiS0CWEG3BOZWWgOCOoZNdebCm1+ZqcmRGxm4jCqF5d5oBpxkLuc2Z0I3cXM5SDIkq4a/lSTTj1Q++Tvvss1S/kf+XGt5/k7jUNiOSC9xQq+nU6cSQagPE8N/3aVl65ZflkFmw==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=lists.xenproject.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)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=3xDFu5KZSSDdncpc2mzzqE3hD5UQFFULxFo1QzgNY0Y=;
 b=vXz9QO25TmODe1fbtOuuf/834KfbD4gemYFKdyQpIz8KP6Cg6ur0U/CxGjmPPtFO8lU/Qkyed268scxdyibZyWSh1AT3M0kFa/BVcW0m3NEs6CRzJTVJB/uY5IaHeRZ+TmpSCZpcisOYok14qq5sm9vPSrUul9gVmdIA1g0oe3Q=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=SATLEXMB03.amd.com; pr=C
From: Stewart Hildebrand <stewart.hildebrand@amd.com>
To: <xen-devel@lists.xenproject.org>
CC: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>, Andrew Cooper
	<andrew.cooper3@citrix.com>, George Dunlap <george.dunlap@citrix.com>, "Jan
 Beulich" <jbeulich@suse.com>, Julien Grall <julien@xen.org>, "Stefano
 Stabellini" <sstabellini@kernel.org>, Wei Liu <wl@xen.org>, Volodymyr Babchuk
	<volodymyr_babchuk@epam.com>, Stewart Hildebrand <stewart.hildebrand@amd.com>
Subject: [PATCH v12 10/15] vpci/header: emulate PCI_COMMAND register for guests
Date: Tue, 9 Jan 2024 16:51:25 -0500
Message-ID: <20240109215145.430207-11-stewart.hildebrand@amd.com>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20240109215145.430207-1-stewart.hildebrand@amd.com>
References: <20240109215145.430207-1-stewart.hildebrand@amd.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: SJ1PEPF00001CE8:EE_|CH0PR12MB5283:EE_
X-MS-Office365-Filtering-Correlation-Id: 72bf7f9d-e407-4aa4-1f37-08dc115d812b
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam: BCL:0;
X-Microsoft-Antispam-Message-Info:
	UplPkD0BSlNmzrFH/GBY+acm9DEHZHSCB+famK1O433/KKF46MZTSxwK3b2x+Cf4tCfuD/yhwsKj8T7R217Wy4ljZ5HXAFzPygz2BWgrE7NIkzgdjP3lMGyE5BizYLsMprrl9eLTr2weH9RrSIdosX9tEcF/Etgr2eGT0u6uqMafg/T3fjslmzql5ruV7zIaSRiKRq6m1+Ho6TMvh/YW3YmdD3ZeWgx+r84UHThOaeDnmE2WPIAiijJAgL3QOtOe1rwoZBrdpb0OQTTErDezvuUp2L0qknGBiJd0bs1tPcqhFs0vqmWgaYoQqhByyjLmhbmFdiH4dgXNw7NGKWYZQQUwxV5dc/l4CiIlAw/aXU54/CaECrkZY0bU7vQ3wYDQTWc8f/jxgCRrgMHTFnqzXK+R5VKw2JkVyM9GB4zJeDu7dKpDOHMGrFRrcpAB1x0YExmrBa8gV7uRruw0g59H4QXAvMpwsiCidm0qGdg7u6c8UKtw9h/I9b3/2f0DecM6DoPQAP9Ck2L4w/wbnVX8hjxZS+G6Qklz4wVFGzXfXAMG/eoVZWSwGgNRF42/OMEK66bfNAe7Q7n0bCvGzxtah/7NzGWqIw615IX7Kde7lsHc1iYCp6OvHe1j8GziTCH3vn9JaK0TXkrCHt4F1p9tBaRvjnwZdfy7h+ZIdEeWdI9buRSjO02K0KLDhfUVc2byfLjgCtWpw0PNWlDhyq+td2KuB5dgfckBTn2kYxNvv5nm6YesESyl6VkzhSLAvB+zDC8+B05GxiDfB5dPQHnmOTMcO4cWuJLtEXlaUfcaYEU3whmnDpDTxlyNVXscHD1C
X-Forefront-Antispam-Report:
	CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB03.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230031)(4636009)(376002)(346002)(136003)(396003)(39860400002)(230173577357003)(230273577357003)(230922051799003)(64100799003)(1800799012)(451199024)(82310400011)(186009)(36840700001)(40470700004)(46966006)(2616005)(41300700001)(1076003)(478600001)(426003)(26005)(336012)(6666004)(36860700001)(81166007)(86362001)(36756003)(82740400003)(356005)(47076005)(83380400001)(70586007)(30864003)(2906002)(40460700003)(7416002)(8676002)(8936002)(70206006)(40480700001)(316002)(54906003)(5660300002)(44832011)(4326008)(6916009)(36900700001);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Jan 2024 21:54:07.5235
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 72bf7f9d-e407-4aa4-1f37-08dc115d812b
X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB03.amd.com]
X-MS-Exchange-CrossTenant-AuthSource:
	SJ1PEPF00001CE8.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH0PR12MB5283

From: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>

Xen and/or Dom0 may have put values in PCI_COMMAND which they expect
to remain unaltered. PCI_COMMAND_SERR bit is a good example: while the
guest's (domU) view of this will want to be zero (for now), the host
having set it to 1 should be preserved, or else we'd effectively be
giving the domU control of the bit. Thus, PCI_COMMAND register needs
proper emulation in order to honor host's settings.

According to "PCI LOCAL BUS SPECIFICATION, REV. 3.0", section "6.2.2
Device Control" the reset state of the command register is typically 0,
so when assigning a PCI device use 0 as the initial state for the
guest's (domU) view of the command register.

Here is the full list of command register bits with notes about
PCI/PCIe specification, and how Xen handles the bit. QEMU's behavior is
also documented here since that is our current reference implementation
for PCI passthrough.

PCI_COMMAND_IO (bit 0)
  PCIe 6.1: RW
  PCI LB 3.0: RW
  QEMU: (emu_mask) QEMU provides an emulated view of this bit. Guest
    writes do not propagate to hardware. QEMU sets this bit to 1 in
    hardware if an I/O BAR is exposed to the guest.
  Xen domU: (rsvdp_mask) We treat this bit as RsvdP for now since we
    don't yet support I/O BARs for domUs.
  Xen dom0: We allow dom0 to control this bit freely.

PCI_COMMAND_MEMORY (bit 1)
  PCIe 6.1: RW
  PCI LB 3.0: RW
  QEMU: (emu_mask) QEMU provides an emulated view of this bit. Guest
    writes do not propagate to hardware. QEMU sets this bit to 1 in
    hardware if a Memory BAR is exposed to the guest.
  Xen domU/dom0: We handle writes to this bit by mapping/unmapping BAR
    regions.
  Xen domU: For devices assigned to DomUs, memory decoding will be
    disabled at the time of initialization.

PCI_COMMAND_MASTER (bit 2)
  PCIe 6.1: RW
  PCI LB 3.0: RW
  QEMU: Pass through writes to hardware.
  Xen domU/dom0: Pass through writes to hardware.

PCI_COMMAND_SPECIAL (bit 3)
  PCIe 6.1: RO, hardwire to 0
  PCI LB 3.0: RW
  QEMU: Pass through writes to hardware.
  Xen domU/dom0: Pass through writes to hardware.

PCI_COMMAND_INVALIDATE (bit 4)
  PCIe 6.1: RO, hardwire to 0
  PCI LB 3.0: RW
  QEMU: Pass through writes to hardware.
  Xen domU/dom0: Pass through writes to hardware.

PCI_COMMAND_VGA_PALETTE (bit 5)
  PCIe 6.1: RO, hardwire to 0
  PCI LB 3.0: RW
  QEMU: Pass through writes to hardware.
  Xen domU/dom0: Pass through writes to hardware.

PCI_COMMAND_PARITY (bit 6)
  PCIe 6.1: RW
  PCI LB 3.0: RW
  QEMU: (emu_mask) QEMU provides an emulated view of this bit. Guest
    writes do not propagate to hardware.
  Xen domU: (rsvdp_mask) We treat this bit as RsvdP.
  Xen dom0: We allow dom0 to control this bit freely.

PCI_COMMAND_WAIT (bit 7)
  PCIe 6.1: RO, hardwire to 0
  PCI LB 3.0: hardwire to 0
  QEMU: res_mask
  Xen domU: (rsvdp_mask) We treat this bit as RsvdP.
  Xen dom0: We allow dom0 to control this bit freely.

PCI_COMMAND_SERR (bit 8)
  PCIe 6.1: RW
  PCI LB 3.0: RW
  QEMU: (emu_mask) QEMU provides an emulated view of this bit. Guest
    writes do not propagate to hardware.
  Xen domU: (rsvdp_mask) We treat this bit as RsvdP.
  Xen dom0: We allow dom0 to control this bit freely.

PCI_COMMAND_FAST_BACK (bit 9)
  PCIe 6.1: RO, hardwire to 0
  PCI LB 3.0: RW
  QEMU: (emu_mask) QEMU provides an emulated view of this bit. Guest
    writes do not propagate to hardware.
  Xen domU: (rsvdp_mask) We treat this bit as RsvdP.
  Xen dom0: We allow dom0 to control this bit freely.

PCI_COMMAND_INTX_DISABLE (bit 10)
  PCIe 6.1: RW
  PCI LB 3.0: RW
  QEMU: (emu_mask) QEMU provides an emulated view of this bit. Guest
    writes do not propagate to hardware. QEMU checks if INTx was mapped
    for a device. If it is not, then guest can't control
    PCI_COMMAND_INTX_DISABLE bit.
  Xen domU: We prohibit a guest from enabling INTx if MSI(X) is enabled.
  Xen dom0: We allow dom0 to control this bit freely.

Bits 11-15
  PCIe 6.1: RsvdP
  PCI LB 3.0: Reserved
  QEMU: res_mask
  Xen domU/dom0: rsvdp_mask

Signed-off-by: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>
Signed-off-by: Volodymyr Babchuk <volodymyr_babchuk@epam.com>
Signed-off-by: Stewart Hildebrand <stewart.hildebrand@amd.com>
---
In v12:
- Rework patch using vpci_add_register_mask()
- Add bitmask #define in pci_regs.h according to PCIe 6.1 spec, except
  don't add the RO bits because they were RW in PCI LB 3.0 spec.
- Move and expand TODO comment about properly emulating bits
- Update guest_cmd in msi.c/msix.c:control_write()
- Simplify cmd_write(), thanks to rsvdp_mask
- Update commit description

In v11:
- Fix copy-paste mistake: vpci->msi should be vpci->msix
- Handle PCI_COMMAND_IO
- Fix condition for disabling INTx in the MSI-X code
- Show domU changes to only allowed bits
- Show PCI_COMMAND_MEMORY write only after P2M was altered
- Update comments in the code
In v10:
- Added cf_check attribute to guest_cmd_read
- Removed warning about non-zero cmd
- Updated comment MSI code regarding disabling INTX
- Used ternary operator in vpci_add_register() call
- Disable memory decoding for DomUs in init_bars()
In v9:
- Reworked guest_cmd_read
- Added handling for more bits
Since v6:
- fold guest's logic into cmd_write
- implement cmd_read, so we can report emulated INTx state to guests
- introduce header->guest_cmd to hold the emulated state of the
  PCI_COMMAND register for guests
Since v5:
- add additional check for MSI-X enabled while altering INTX bit
- make sure INTx disabled while guests enable MSI/MSI-X
Since v3:
- gate more code on CONFIG_HAS_MSI
- removed logic for the case when MSI/MSI-X not enabled
---
 xen/drivers/vpci/header.c  | 59 +++++++++++++++++++++++++++++++++++---
 xen/drivers/vpci/msi.c     |  9 ++++++
 xen/drivers/vpci/msix.c    |  7 +++++
 xen/include/xen/pci_regs.h |  1 +
 xen/include/xen/vpci.h     |  3 ++
 5 files changed, 75 insertions(+), 4 deletions(-)

diff --git a/xen/drivers/vpci/header.c b/xen/drivers/vpci/header.c
index f0b0b64b0929..374e8e119231 100644
--- a/xen/drivers/vpci/header.c
+++ b/xen/drivers/vpci/header.c
@@ -168,6 +168,9 @@ static void modify_decoding(const struct pci_dev *pdev, uint16_t cmd,
     if ( !rom_only )
     {
         pci_conf_write16(pdev->sbdf, PCI_COMMAND, cmd);
+        /* Show DomU that we updated P2M */
+        header->guest_cmd &= ~PCI_COMMAND_MEMORY;
+        header->guest_cmd |= cmd & PCI_COMMAND_MEMORY;
         header->bars_mapped = map;
     }
     else
@@ -524,9 +527,26 @@ static void cf_check cmd_write(
 {
     struct vpci_header *header = data;
 
+    if ( !is_hardware_domain(pdev->domain) )
+    {
+        const struct vpci *vpci = pdev->vpci;
+
+        if ( (vpci->msi && vpci->msi->enabled) ||
+             (vpci->msix && vpci->msix->enabled) )
+            cmd |= PCI_COMMAND_INTX_DISABLE;
+
+        /*
+         * Do not show change to PCI_COMMAND_MEMORY bit until we finish
+         * modifying P2M mappings.
+         */
+        header->guest_cmd = (cmd & ~PCI_COMMAND_MEMORY) |
+                            (header->guest_cmd & PCI_COMMAND_MEMORY);
+    }
+
     /*
      * Let Dom0 play with all the bits directly except for the memory
-     * decoding one.
+     * decoding one. Bits that are not allowed for DomU are already
+     * handled above and by the rsvdp_mask.
      */
     if ( header->bars_mapped != !!(cmd & PCI_COMMAND_MEMORY) )
         /*
@@ -540,6 +560,14 @@ static void cf_check cmd_write(
         pci_conf_write16(pdev->sbdf, reg, cmd);
 }
 
+static uint32_t cf_check guest_cmd_read(
+    const struct pci_dev *pdev, unsigned int reg, void *data)
+{
+    const struct vpci_header *header = data;
+
+    return header->guest_cmd;
+}
+
 static void cf_check bar_write(
     const struct pci_dev *pdev, unsigned int reg, uint32_t val, void *data)
 {
@@ -756,9 +784,23 @@ static int cf_check init_header(struct pci_dev *pdev)
         return -EOPNOTSUPP;
     }
 
-    /* Setup a handler for the command register. */
-    rc = vpci_add_register(pdev->vpci, vpci_hw_read16, cmd_write, PCI_COMMAND,
-                           2, header);
+    /*
+     * Setup a handler for the command register.
+     *
+     * TODO: If support for emulated bits is added, re-visit how to handle
+     * PCI_COMMAND_PARITY, PCI_COMMAND_SERR, and PCI_COMMAND_FAST_BACK.
+     */
+    rc = vpci_add_register_mask(pdev->vpci,
+                                is_hwdom ? vpci_hw_read16 : guest_cmd_read,
+                                cmd_write, PCI_COMMAND, 2, header, 0, 0,
+                                PCI_COMMAND_RSVDP_MASK |
+                                    (is_hwdom ? 0
+                                              : PCI_COMMAND_IO |
+                                                PCI_COMMAND_PARITY |
+                                                PCI_COMMAND_WAIT |
+                                                PCI_COMMAND_SERR |
+                                                PCI_COMMAND_FAST_BACK),
+                                0);
     if ( rc )
         return rc;
 
@@ -843,6 +885,15 @@ static int cf_check init_header(struct pci_dev *pdev)
     if ( cmd & PCI_COMMAND_MEMORY )
         pci_conf_write16(pdev->sbdf, PCI_COMMAND, cmd & ~PCI_COMMAND_MEMORY);
 
+    /*
+     * Clear PCI_COMMAND_MEMORY and PCI_COMMAND_IO for DomUs, so they will
+     * always start with memory decoding disabled and to ensure that we will not
+     * call modify_bars() at the end of this function.
+     */
+    if ( !is_hwdom )
+        cmd &= ~(PCI_COMMAND_MEMORY | PCI_COMMAND_IO);
+    header->guest_cmd = cmd;
+
     for ( i = 0; i < num_bars; i++ )
     {
         uint8_t reg = PCI_BASE_ADDRESS_0 + i * 4;
diff --git a/xen/drivers/vpci/msi.c b/xen/drivers/vpci/msi.c
index 6ff71e5f9ab7..aae8055ce92d 100644
--- a/xen/drivers/vpci/msi.c
+++ b/xen/drivers/vpci/msi.c
@@ -70,6 +70,15 @@ static void cf_check control_write(
 
         if ( vpci_msi_arch_enable(msi, pdev, vectors) )
             return;
+
+        /*
+         * Make sure domU doesn't enable INTx while enabling MSI.
+         */
+        if ( !is_hardware_domain(pdev->domain) )
+        {
+            pci_intx(pdev, false);
+            pdev->vpci->header.guest_cmd |= PCI_COMMAND_INTX_DISABLE;
+        }
     }
     else
         vpci_msi_arch_disable(msi, pdev);
diff --git a/xen/drivers/vpci/msix.c b/xen/drivers/vpci/msix.c
index b6abab47efdd..d4f756ce287a 100644
--- a/xen/drivers/vpci/msix.c
+++ b/xen/drivers/vpci/msix.c
@@ -135,6 +135,13 @@ static void cf_check control_write(
         }
     }
 
+    /* Make sure domU doesn't enable INTx while enabling MSI-X. */
+    if ( new_enabled && !msix->enabled && !is_hardware_domain(pdev->domain) )
+    {
+        pci_intx(pdev, false);
+        pdev->vpci->header.guest_cmd |= PCI_COMMAND_INTX_DISABLE;
+    }
+
     msix->masked = new_masked;
     msix->enabled = new_enabled;
 
diff --git a/xen/include/xen/pci_regs.h b/xen/include/xen/pci_regs.h
index 9909b27425a5..b2f2e43e864d 100644
--- a/xen/include/xen/pci_regs.h
+++ b/xen/include/xen/pci_regs.h
@@ -48,6 +48,7 @@
 #define  PCI_COMMAND_SERR	0x100	/* Enable SERR */
 #define  PCI_COMMAND_FAST_BACK	0x200	/* Enable back-to-back writes */
 #define  PCI_COMMAND_INTX_DISABLE 0x400 /* INTx Emulation Disable */
+#define  PCI_COMMAND_RSVDP_MASK	0xf800
 
 #define PCI_STATUS		0x06	/* 16 bits */
 #define  PCI_STATUS_IMM_READY	0x01	/* Immediate Readiness */
diff --git a/xen/include/xen/vpci.h b/xen/include/xen/vpci.h
index e89c571890b2..77320a667e55 100644
--- a/xen/include/xen/vpci.h
+++ b/xen/include/xen/vpci.h
@@ -107,6 +107,9 @@ struct vpci {
         } bars[PCI_HEADER_NORMAL_NR_BARS + 1];
         /* At most 6 BARS + 1 expansion ROM BAR. */
 
+        /* Guest (domU only) view of the PCI_COMMAND register. */
+        uint16_t guest_cmd;
+
         /*
          * Store whether the ROM enable bit is set (doesn't imply ROM BAR
          * is mapped into guest p2m) if there's a ROM BAR on the device.
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Tue Jan 09 22:29:32 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 09 Jan 2024 22:29:32 +0000
Received: from list by lists.xenproject.org with outflank-mailman.665202.1035380 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNKb8-0006d3-2i; Tue, 09 Jan 2024 22:29:26 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 665202.1035380; Tue, 09 Jan 2024 22:29:26 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNKb7-0006cw-Uu; Tue, 09 Jan 2024 22:29:25 +0000
Received: by outflank-mailman (input) for mailman id 665202;
 Tue, 09 Jan 2024 22:29:24 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=1ngr=IT=gmail.com=shentey@srs-se1.protection.inumbo.net>)
 id 1rNKb6-0006cm-JI
 for xen-devel@lists.xenproject.org; Tue, 09 Jan 2024 22:29:24 +0000
Received: from mail-wm1-x334.google.com (mail-wm1-x334.google.com
 [2a00:1450:4864:20::334])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 8a196618-af3e-11ee-98ef-6d05b1d4d9a1;
 Tue, 09 Jan 2024 23:29:23 +0100 (CET)
Received: by mail-wm1-x334.google.com with SMTP id
 5b1f17b1804b1-40e5521db08so3784305e9.2
 for <xen-devel@lists.xenproject.org>; Tue, 09 Jan 2024 14:29:23 -0800 (PST)
Received: from [127.0.0.1] (dynamic-077-183-075-077.77.183.pool.telefonica.de.
 [77.183.75.77]) by smtp.gmail.com with ESMTPSA id
 gv2-20020a170906f10200b00a26a80a58fcsm1436941ejb.196.2024.01.09.14.29.22
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 09 Jan 2024 14:29:22 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 8a196618-af3e-11ee-98ef-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1704839363; x=1705444163; darn=lists.xenproject.org;
        h=content-transfer-encoding:mime-version:message-id:references
         :in-reply-to:subject:cc:to:from:date:from:to:cc:subject:date
         :message-id:reply-to;
        bh=6eShGOOYzJgkxXcf3BN0KmzlHl9tWf4UCVl9RkW3Vs4=;
        b=bja3Pwrds4+IRtEpG7FDoqVoFCRU1rY42RD8VxMZlCEtmfms0MvvkghwzlJewHMdim
         6utkzv3TmfwSjwdkFLZX3PhmkrTb65OTu1A0jdm+sWA8mPlaQYPzy7lpfOmW921V70BW
         TPfYpVzLW+dQ8pc24lsrtOcBwHALBm0V6iJtMaw9wcd3vb+BD8kWlpkSNR5DtdsBYMBg
         NdWDz8ZalFrk7F1VzZ9UQAYTT8kdaNJKYbZaMlmKqd8zQ5bcOimIFemyfCJyI5f6WJqh
         EQa9bwE8+QCyPWFw+Eht7LoQo/lLngXyF4k12u6tyNdOeLJS9Ro8V0Ef5ILqHIoDh1aj
         3RnQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704839363; x=1705444163;
        h=content-transfer-encoding:mime-version:message-id:references
         :in-reply-to:subject:cc:to:from:date:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to;
        bh=6eShGOOYzJgkxXcf3BN0KmzlHl9tWf4UCVl9RkW3Vs4=;
        b=JukPT4gJ3dvjRa+K9sGuLJL49p0QwyjGPMRwnz1m30MUj18LT2HK+/sh5bGxNzbQjy
         X9ZviVKFIrULo/GICrudeodbd+30AcJxdGLbPI8lf1TYBbeZOpI2/QWBswOpE01ZxbDL
         p+ZidxsvqJlmogvTUXM1bHy3AFXttEj1wjQKOXYNS21RNt960nDt2hrpvbyfQfQMwP2J
         fVqbBbNj82wbDbd/bcPM9FDA0kn3I6LZcNNPNMrLGvPMZagq4HE9c8S/q4Vp4BuZaWPo
         EVU0ZgjcnNoXtmS+LHDOKfsu2beghPmlYl07Ta8kHV5dMX6iEYN3nLImfoY8cR8SM19u
         mAgA==
X-Gm-Message-State: AOJu0YxEfYbT48oPLyffPhNSrLuc9Pua9W8bjV80fzj/sn0obI4EszTU
	pbVQt56buWg9tJpihrlXDP8=
X-Google-Smtp-Source: AGHT+IGsBx67M/CXG5ZKy9tf7B4FVsHy9jr6Taj33qNRJvhUESGymMQxI/zxyIILVvrQVh9ToM40Dw==
X-Received: by 2002:a05:600c:68d4:b0:40e:48e6:a6e3 with SMTP id jd20-20020a05600c68d400b0040e48e6a6e3mr8858wmb.149.1704839362816;
        Tue, 09 Jan 2024 14:29:22 -0800 (PST)
Date: Tue, 09 Jan 2024 22:29:14 +0000
From: Bernhard Beschow <shentey@gmail.com>
To: David Woodhouse <dwmw2@infradead.org>, qemu-devel@nongnu.org
CC: Chuck Zmudzinski <brchuckz@aol.com>, Paolo Bonzini <pbonzini@redhat.com>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org,
 Eduardo Habkost <eduardo@habkost.net>, "Michael S. Tsirkin" <mst@redhat.com>,
 Marcel Apfelbaum <marcel.apfelbaum@gmail.com>, Paul Durrant <paul@xen.org>,
 Richard Henderson <richard.henderson@linaro.org>,
 Anthony PERARD <anthony.perard@citrix.com>
Subject: =?US-ASCII?Q?Re=3A_=5BPATCH=5D_hw/i386/pc=5Fpiix=3A_Make_piix=5Fintx=5Fr?= =?US-ASCII?Q?outing=5Fnotifier=5Fxen=28=29_more_device_independent?=
In-Reply-To: <7d24b5aa384a492b3bd33f50906e3f000b1ff6a0.camel@infradead.org>
References: <20240107231623.5282-1-shentey@gmail.com> <7d24b5aa384a492b3bd33f50906e3f000b1ff6a0.camel@infradead.org>
Message-ID: <9FEEB450-CA3D-4960-8C7D-BC837C93E58D@gmail.com>
MIME-Version: 1.0
Content-Type: text/plain;
 charset=utf-8
Content-Transfer-Encoding: quoted-printable



Am 9=2E Januar 2024 08:51:37 UTC schrieb David Woodhouse <dwmw2@infradead=
=2Eorg>:
>On Mon, 2024-01-08 at 00:16 +0100, Bernhard Beschow wrote:
>> This is a follow-up on commit 89965db43cce "hw/isa/piix3: Avoid Xen-spe=
cific
>> variant of piix3_write_config()" which introduced
>> piix_intx_routing_notifier_xen()=2E This function is implemented in boa=
rd code but
>> accesses the PCI configuration space of the PIIX ISA function to determ=
ine the
>> PCI interrupt routes=2E Avoid this by reusing pci_device_route_intx_to_=
irq() which
>> makes piix_intx_routing_notifier_xen() more device-agnostic=2E
>>=20
>> One remaining improvement would be making piix_intx_routing_notifier_xe=
n()
>> agnostic towards the number of PCI interrupt routes and move it to xen-=
hvm=2E
>> This might be useful for possible Q35 Xen efforts but remains a future =
exercise
>> for now=2E
>>=20
>> Signed-off-by: Bernhard Beschow <shentey@gmail=2Ecom>
>
>I'm still moderately unhappy that all this code is written with the
>apparent assumption that there is only *one* IRQ# which is the target
>for a given INTx, when in fact it gets routed to that pin# on the
>legacy PIC and a potentially *different* pin# on the I/O APIC=2E

Would TYPE_SPLIT_IRQ help in any way?

>
>But you aren't making that worse, so
>
>Reviewed-by: David Woodhouse <dwmw@amazon=2Eco=2Euk>

Thanks!


From xen-devel-bounces@lists.xenproject.org Wed Jan 10 00:37:32 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 10 Jan 2024 00:37:32 +0000
Received: from list by lists.xenproject.org with outflank-mailman.665277.1035421 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNMas-0004kX-Mw; Wed, 10 Jan 2024 00:37:18 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 665277.1035421; Wed, 10 Jan 2024 00:37:18 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNMas-0004kM-Id; Wed, 10 Jan 2024 00:37:18 +0000
Received: by outflank-mailman (input) for mailman id 665277;
 Wed, 10 Jan 2024 00:37:16 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=0rG5=IU=kernel.org=sstabellini@srs-se1.protection.inumbo.net>)
 id 1rNMaq-0004kG-DY
 for xen-devel@lists.xenproject.org; Wed, 10 Jan 2024 00:37:16 +0000
Received: from ams.source.kernel.org (ams.source.kernel.org [145.40.68.75])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 65bf8224-af50-11ee-9b0f-b553b5be7939;
 Wed, 10 Jan 2024 01:37:13 +0100 (CET)
Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58])
 by ams.source.kernel.org (Postfix) with ESMTP id 2B4C0B81C53;
 Wed, 10 Jan 2024 00:37:13 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 07977C433F1;
 Wed, 10 Jan 2024 00:37:10 +0000 (UTC)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 65bf8224-af50-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
	s=k20201202; t=1704847032;
	bh=ir1ALmMkdeBlyZHBMSn9cZFUoK27iM8L1cV0xtliHls=;
	h=Date:From:To:cc:Subject:In-Reply-To:References:From;
	b=fho12tVyhOJKCgFx4ErHVdFBndGYA4BsXxQa6fNpHxnUroPMG7SaQLCyys8ZluqGo
	 eM0l1nkjn+t09PTZcUmA7SKXWPAuKRu7BFeYyLOhnaZLQ8CNABljfoY9IQVrNqxxUK
	 mypCzED0kh7KQwOq//ARUOZgc/Lg7qbxOx2ijnDLIoU49LS5UI2cRnBYr+eGzX6Bak
	 KdzN9uRRxkGwAGAABN6tlNja7WkZRCCFAddeBGDOM9pS0g/36MBfTP/TPIdgwUdxRE
	 llg2eINk+LaNrlxrlSy/ui6+eC0uo7lmFB2Cul9PktIunbH1MiHcBxyJVTm/Ahd5lu
	 GYoShkOci6/Vw==
Date: Tue, 9 Jan 2024 16:37:09 -0800 (PST)
From: Stefano Stabellini <sstabellini@kernel.org>
X-X-Sender: sstabellini@ubuntu-linux-20-04-desktop
To: Jan Beulich <jbeulich@suse.com>
cc: Carlo Nonato <carlo.nonato@minervasys.tech>, 
    Stefano Stabellini <sstabellini@kernel.org>, Julien Grall <julien@xen.org>, 
    Bertrand Marquis <bertrand.marquis@arm.com>, 
    Michal Orzel <michal.orzel@amd.com>, 
    Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>, 
    Andrew Cooper <andrew.cooper3@citrix.com>, 
    George Dunlap <george.dunlap@citrix.com>, Wei Liu <wl@xen.org>, 
    Marco Solieri <marco.solieri@minervasys.tech>, 
    xen-devel@lists.xenproject.org
Subject: Re: [PATCH v5 09/13] xen: add cache coloring allocator for domains
In-Reply-To: <101c638c-03ee-471b-a6c8-9c2c10772001@suse.com>
Message-ID: <alpine.DEB.2.22.394.2401091636300.3675@ubuntu-linux-20-04-desktop>
References: <20240102095138.17933-1-carlo.nonato@minervasys.tech> <20240102095138.17933-10-carlo.nonato@minervasys.tech> <7fbe9526-60cf-4844-8b48-58ab69ec1b29@suse.com> <101c638c-03ee-471b-a6c8-9c2c10772001@suse.com>
User-Agent: Alpine 2.22 (DEB 394 2020-01-19)
MIME-Version: 1.0
Content-Type: text/plain; charset=US-ASCII

On Tue, 9 Jan 2024, Jan Beulich wrote:
> On 09.01.2024 11:28, Jan Beulich wrote:
> > On 02.01.2024 10:51, Carlo Nonato wrote:
> >> v5:
> >> - Carlo Nonato as the new author
> >> - the colored allocator balances color usage for each domain and it searches
> >>   linearly only in the number of colors (FIXME removed)
> > 
> > While this addresses earlier concerns, meanwhile NUMA work has also
> > been progressing. What's the plan of interaction of coloring with it?
> 
> Thinking of interactions - what about static memory? Is coloring incompatible
> with that? If so, should the two features be excluded to both be used at the
> same time?

Yes the two features are incompatible. It makes sense to reject attempts
to enable both at the same time.


From xen-devel-bounces@lists.xenproject.org Wed Jan 10 00:46:50 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 10 Jan 2024 00:46:50 +0000
Received: from list by lists.xenproject.org with outflank-mailman.665282.1035430 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNMk2-0007qa-HL; Wed, 10 Jan 2024 00:46:46 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 665282.1035430; Wed, 10 Jan 2024 00:46:46 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNMk2-0007qT-El; Wed, 10 Jan 2024 00:46:46 +0000
Received: by outflank-mailman (input) for mailman id 665282;
 Wed, 10 Jan 2024 00:46:45 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=0rG5=IU=kernel.org=sstabellini@srs-se1.protection.inumbo.net>)
 id 1rNMk1-0007qN-LE
 for xen-devel@lists.xenproject.org; Wed, 10 Jan 2024 00:46:45 +0000
Received: from sin.source.kernel.org (sin.source.kernel.org
 [2604:1380:40e1:4800::1])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id b86f6c99-af51-11ee-9b0f-b553b5be7939;
 Wed, 10 Jan 2024 01:46:43 +0100 (CET)
Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58])
 by sin.source.kernel.org (Postfix) with ESMTP id AE080CE1AA2;
 Wed, 10 Jan 2024 00:46:40 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 02D78C433F1;
 Wed, 10 Jan 2024 00:46:37 +0000 (UTC)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: b86f6c99-af51-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
	s=k20201202; t=1704847599;
	bh=vy/N3fJJFv0kXXAl1w/jAz0jqXXPcsNLKX0239Bs7pQ=;
	h=Date:From:To:cc:Subject:In-Reply-To:References:From;
	b=NEYaVSxJcTLwBJo4hxSWqAJgTX63Nbk7mWU4+iAFFPhkKOokd103GQQfz+uWil8U9
	 PuDFYYcR7/wVJ30w82qI6BZK68F+rPfkqtAABxdIFspUmQ6T8Pfx2yly+kXykr6qF8
	 +1rXj2eSC7LKTVUWxBgVi5bWBYcZR8i3SoaDryt563OHQxV4Su8KlvMyKYimoDxtZE
	 2u7NakTS03KqvsrS20b1H6mUVFpYOSXtuakKQaDU7hndS1R53k38y0wg3Em10IkWJ5
	 hmBCMDQ4a+QEMsLjE2PfctUUSODijAXMgxQL5a6O/t5kq6E4I3ZuuSXcYs6KwiM0rI
	 qJWmEV4JvAYgg==
Date: Tue, 9 Jan 2024 16:46:36 -0800 (PST)
From: Stefano Stabellini <sstabellini@kernel.org>
X-X-Sender: sstabellini@ubuntu-linux-20-04-desktop
To: Jan Beulich <jbeulich@suse.com>
cc: Carlo Nonato <carlo.nonato@minervasys.tech>, 
    Stefano Stabellini <sstabellini@kernel.org>, Julien Grall <julien@xen.org>, 
    Bertrand Marquis <bertrand.marquis@arm.com>, 
    Michal Orzel <michal.orzel@amd.com>, 
    Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>, 
    Andrew Cooper <andrew.cooper3@citrix.com>, 
    George Dunlap <george.dunlap@citrix.com>, Wei Liu <wl@xen.org>, 
    Marco Solieri <marco.solieri@minervasys.tech>, 
    xen-devel@lists.xenproject.org
Subject: Re: [PATCH v5 09/13] xen: add cache coloring allocator for domains
In-Reply-To: <7fbe9526-60cf-4844-8b48-58ab69ec1b29@suse.com>
Message-ID: <alpine.DEB.2.22.394.2401091637160.3675@ubuntu-linux-20-04-desktop>
References: <20240102095138.17933-1-carlo.nonato@minervasys.tech> <20240102095138.17933-10-carlo.nonato@minervasys.tech> <7fbe9526-60cf-4844-8b48-58ab69ec1b29@suse.com>
User-Agent: Alpine 2.22 (DEB 394 2020-01-19)
MIME-Version: 1.0
Content-Type: text/plain; charset=US-ASCII

On Tue, 9 Jan 2024, Jan Beulich wrote:
> On 02.01.2024 10:51, Carlo Nonato wrote:
> > This commit adds a new memory page allocator that implements the cache
> > coloring mechanism. The allocation algorithm enforces equal frequency
> > distribution of cache partitions, following the coloring configuration of a
> > domain. This allows an even utilization of cache sets for every domain.
> > 
> > Pages are stored in a color-indexed array of lists. Those lists are filled
> > by a simple init function which computes the color of each page.
> > When a domain requests a page, the allocator extract the page from the list
> > with the maximum number of free pages between those that the domain can
> > access, given its coloring configuration.
> > 
> > The allocator can only handle requests of order-0 pages. This allows for
> > easier implementation and since cache coloring targets only embedded systems,
> > it's assumed not to be a major problem.
> 
> I'm curious about the specific properties of embedded systems that makes
> the performance implications of deeper page walks less of an issue for
> them.

I think Carlo meant to say that embedded systems tend to have a smaller
amount of RAM (our boards today have 4-8GB of total memory). So higher
level allocations (2MB/1GB) might not be possible.

Also, domains that care about interrupt latency tend to be RTOSes (e.g.
Zephyr, FreeRTOS) and RTOSes are happy to run with less than 1MB of
total memory available. This is so true that I vaguely remember hitting
a bug in xl/libxl when I tried to create a domain with 128KB of memory. 


> Nothing is said about address-constrained allocations. Are such entirely
> of no interest to domains on Arm, not even to Dom0 (e.g. for filling
> Linux'es swiotlb)?

Cache coloring is useful if you can use an IOMMU with all the
dma-capable devices. If that is not the case, then not even Dom0 would
be able to boot with cache coloring enabled (because it wouldn't be 1:1
mapped).

On ARM we only support booting Dom0 1:1 mapped, or not-1:1-mapped but
relying on the IOMMU.


> Certainly alloc_color_heap_page() should at least fail when it can't
> satisfy the passed in memflags.

[...]


> > +void dump_color_heap(void)
> > +{
> > +    unsigned int color;
> > +
> > +    printk("Dumping color heap info\n");
> > +    for ( color = 0; color < get_nr_llc_colors(); color++ )
> > +        if ( free_colored_pages[color] > 0 )
> > +            printk("Color heap[%u]: %lu pages\n",
> > +                   color, free_colored_pages[color]);
> > +}
> 
> What's a typical range of number of colors on a system? I expect more
> than 9, but I'm not sure about a reasonable upper bound. For the
> output to be easy to consume, [%u] may want to become at least [%2u].

16 colors on our boards


From xen-devel-bounces@lists.xenproject.org Wed Jan 10 01:00:08 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 10 Jan 2024 01:00:08 +0000
Received: from list by lists.xenproject.org with outflank-mailman.665287.1035440 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNMws-0004HY-OZ; Wed, 10 Jan 2024 01:00:02 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 665287.1035440; Wed, 10 Jan 2024 01:00:02 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNMws-0004Gz-L1; Wed, 10 Jan 2024 01:00:02 +0000
Received: by outflank-mailman (input) for mailman id 665287;
 Wed, 10 Jan 2024 01:00:01 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rNMwr-0003ja-Gd; Wed, 10 Jan 2024 01:00:01 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rNMwr-0005g9-Br; Wed, 10 Jan 2024 01:00:01 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rNMwq-00010p-Ti; Wed, 10 Jan 2024 01:00:01 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rNMwq-0002Sd-T7; Wed, 10 Jan 2024 01:00:00 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=T3u+ji3oPSnwsIeuNd4Y/MkZ5VF/+VUHgjBa5/eTWdQ=; b=2r8hdKrJQtYpgc+7KuYtqNObNl
	UMeu8G9NoPZTmRiFwvjsL0OCpORdpvvhzIX8BRHcPOeMuOv4ugGE3R9/030yqiIikDyBN5Hvdw6Bx
	pRSsgYgfThDVF/pNSqP6ap6ARYSNSMziisVvDZyJbX1wMgIqJGizAbEoerroWnNBd8i4=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184293-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [xen-unstable test] 184293: regressions - FAIL
X-Osstest-Failures:
    xen-unstable:build-arm64-pvops:kernel-build:fail:regression
    xen-unstable:test-amd64-i386-freebsd10-amd64:guest-start/freebsd.repeat:fail:heisenbug
    xen-unstable:test-arm64-arm64-libvirt-raw:build-check(1):blocked:nonblocking
    xen-unstable:test-arm64-arm64-libvirt-xsm:build-check(1):blocked:nonblocking
    xen-unstable:test-arm64-arm64-xl-vhd:build-check(1):blocked:nonblocking
    xen-unstable:test-arm64-arm64-xl-credit2:build-check(1):blocked:nonblocking
    xen-unstable:test-arm64-arm64-xl-xsm:build-check(1):blocked:nonblocking
    xen-unstable:test-arm64-arm64-xl-thunderx:build-check(1):blocked:nonblocking
    xen-unstable:test-arm64-arm64-examine:build-check(1):blocked:nonblocking
    xen-unstable:test-arm64-arm64-xl:build-check(1):blocked:nonblocking
    xen-unstable:test-arm64-arm64-xl-credit1:build-check(1):blocked:nonblocking
    xen-unstable:test-armhf-armhf-xl-vhd:guest-start/debian.repeat:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-amd64-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-qcow2:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-raw:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-amd64-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-amd64-qemuu-nested-amd:debian-hvm-install/l1/l2:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-amd64-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-i386-libvirt-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-pvshim:guest-start:fail:nonblocking
    xen-unstable:test-amd64-i386-libvirt:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-xsm:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-thunderx:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-thunderx:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-credit2:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-credit2:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-libvirt-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-libvirt-xsm:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-credit1:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-credit1:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-multivcpu:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-multivcpu:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit2:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit2:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit1:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit1:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-arndale:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-arndale:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-libvirt-raw:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-libvirt-raw:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-libvirt-raw:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt-vhd:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-vhd:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-vhd:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-qcow2:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-raw:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-vhd:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-vhd:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-rtds:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-rtds:saverestore-support-check:fail:nonblocking
X-Osstest-Versions-This:
    xen=2467ab2a74463107132f7d929d2ff0e30a8b6fa3
X-Osstest-Versions-That:
    xen=5a3ace21f3d779b291a2d305824b2820d88de7f1
From: osstest service owner <osstest-admin@xenproject.org>
Date: Wed, 10 Jan 2024 01:00:00 +0000

flight 184293 xen-unstable real [real]
http://logs.test-lab.xenproject.org/osstest/logs/184293/

Regressions :-(

Tests which did not succeed and are blocking,
including tests which could not be run:
 build-arm64-pvops             6 kernel-build   fail in 184285 REGR. vs. 184271

Tests which are failing intermittently (not blocking):
 test-amd64-i386-freebsd10-amd64 21 guest-start/freebsd.repeat fail pass in 184285

Tests which did not succeed, but are not blocking:
 test-arm64-arm64-libvirt-raw  1 build-check(1)           blocked in 184285 n/a
 test-arm64-arm64-libvirt-xsm  1 build-check(1)           blocked in 184285 n/a
 test-arm64-arm64-xl-vhd       1 build-check(1)           blocked in 184285 n/a
 test-arm64-arm64-xl-credit2   1 build-check(1)           blocked in 184285 n/a
 test-arm64-arm64-xl-xsm       1 build-check(1)           blocked in 184285 n/a
 test-arm64-arm64-xl-thunderx  1 build-check(1)           blocked in 184285 n/a
 test-arm64-arm64-examine      1 build-check(1)           blocked in 184285 n/a
 test-arm64-arm64-xl           1 build-check(1)           blocked in 184285 n/a
 test-arm64-arm64-xl-credit1   1 build-check(1)           blocked in 184285 n/a
 test-armhf-armhf-xl-vhd 17 guest-start/debian.repeat fail in 184285 like 184267
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 184271
 test-amd64-amd64-xl-qemut-win7-amd64 19 guest-stop            fail like 184271
 test-amd64-i386-xl-qemuu-win7-amd64 19 guest-stop             fail like 184271
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 184271
 test-armhf-armhf-libvirt-qcow2 15 saverestore-support-check   fail like 184271
 test-amd64-i386-xl-qemut-ws16-amd64 19 guest-stop             fail like 184271
 test-armhf-armhf-libvirt-raw 15 saverestore-support-check    fail  like 184271
 test-amd64-i386-xl-qemut-win7-amd64 19 guest-stop             fail like 184271
 test-amd64-amd64-xl-qemut-ws16-amd64 19 guest-stop            fail like 184271
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 184271
 test-amd64-i386-xl-qemuu-ws16-amd64 19 guest-stop             fail like 184271
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 184271
 test-amd64-i386-libvirt-xsm  15 migrate-support-check        fail   never pass
 test-amd64-i386-xl-pvshim    14 guest-start                  fail   never pass
 test-amd64-i386-libvirt      15 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt     15 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-xsm      15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-xsm      16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl          15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-thunderx 15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl          16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-thunderx 16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-credit2  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit2  16 saverestore-support-check    fail   never pass
 test-arm64-arm64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-xsm 16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-credit1  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit1  16 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-armhf-armhf-xl          15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          16 saverestore-support-check    fail   never pass
 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-armhf-armhf-xl-multivcpu 15 migrate-support-check        fail  never pass
 test-armhf-armhf-xl-multivcpu 16 saverestore-support-check    fail  never pass
 test-armhf-armhf-libvirt     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit2  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit2  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-credit1  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit1  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-arndale  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-arndale  16 saverestore-support-check    fail   never pass
 test-amd64-i386-libvirt-raw  14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 15 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-vhd 14 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-vhd      14 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-vhd      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-qcow2 14 migrate-support-check        fail never pass
 test-armhf-armhf-libvirt-raw 14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-rtds     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-rtds     16 saverestore-support-check    fail   never pass

version targeted for testing:
 xen                  2467ab2a74463107132f7d929d2ff0e30a8b6fa3
baseline version:
 xen                  5a3ace21f3d779b291a2d305824b2820d88de7f1

Last test of basis   184271  2024-01-08 01:53:47 Z    1 days
Testing same since   184278  2024-01-08 12:39:26 Z    1 days    3 attempts

------------------------------------------------------------
People who touched revisions under test:
  Jan Beulich <jbeulich@suse.com>
  Juergen Gross <jgross@suse.com>
  Julien Grall <jgrall@amazon.com>
  Oleksii Kurochko <oleksii.kurochko@gmail.com>
  Shawn Anastasio <sanastasio@raptorengineering.com>
  Tamas K Lengyel <tamas.lengyel@intel.com>

jobs:
 build-amd64-xsm                                              pass    
 build-arm64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64-xtf                                              pass    
 build-amd64                                                  pass    
 build-arm64                                                  pass    
 build-armhf                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-arm64-libvirt                                          pass    
 build-armhf-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-prev                                             pass    
 build-i386-prev                                              pass    
 build-amd64-pvops                                            pass    
 build-arm64-pvops                                            pass    
 build-armhf-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-xtf-amd64-amd64-1                                       pass    
 test-xtf-amd64-amd64-2                                       pass    
 test-xtf-amd64-amd64-3                                       pass    
 test-xtf-amd64-amd64-4                                       pass    
 test-xtf-amd64-amd64-5                                       pass    
 test-amd64-amd64-xl                                          pass    
 test-amd64-coresched-amd64-xl                                pass    
 test-arm64-arm64-xl                                          pass    
 test-armhf-armhf-xl                                          pass    
 test-amd64-i386-xl                                           pass    
 test-amd64-coresched-i386-xl                                 pass    
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm           pass    
 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm            pass    
 test-amd64-amd64-xl-qemut-stubdom-debianhvm-amd64-xsm        pass    
 test-amd64-i386-xl-qemut-stubdom-debianhvm-amd64-xsm         pass    
 test-amd64-amd64-xl-qemut-debianhvm-i386-xsm                 pass    
 test-amd64-i386-xl-qemut-debianhvm-i386-xsm                  pass    
 test-amd64-amd64-xl-qemuu-debianhvm-i386-xsm                 pass    
 test-amd64-i386-xl-qemuu-debianhvm-i386-xsm                  pass    
 test-amd64-amd64-libvirt-xsm                                 pass    
 test-arm64-arm64-libvirt-xsm                                 pass    
 test-amd64-i386-libvirt-xsm                                  pass    
 test-amd64-amd64-xl-xsm                                      pass    
 test-arm64-arm64-xl-xsm                                      pass    
 test-amd64-i386-xl-xsm                                       pass    
 test-amd64-amd64-qemuu-nested-amd                            fail    
 test-amd64-amd64-xl-pvhv2-amd                                pass    
 test-amd64-i386-qemut-rhel6hvm-amd                           pass    
 test-amd64-i386-qemuu-rhel6hvm-amd                           pass    
 test-amd64-amd64-dom0pvh-xl-amd                              pass    
 test-amd64-amd64-xl-qemut-debianhvm-amd64                    pass    
 test-amd64-i386-xl-qemut-debianhvm-amd64                     pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64                    pass    
 test-amd64-i386-xl-qemuu-debianhvm-amd64                     pass    
 test-amd64-i386-freebsd10-amd64                              fail    
 test-amd64-amd64-qemuu-freebsd11-amd64                       pass    
 test-amd64-amd64-qemuu-freebsd12-amd64                       pass    
 test-amd64-amd64-xl-qemuu-ovmf-amd64                         pass    
 test-amd64-i386-xl-qemuu-ovmf-amd64                          pass    
 test-amd64-amd64-xl-qemut-win7-amd64                         fail    
 test-amd64-i386-xl-qemut-win7-amd64                          fail    
 test-amd64-amd64-xl-qemuu-win7-amd64                         fail    
 test-amd64-i386-xl-qemuu-win7-amd64                          fail    
 test-amd64-amd64-xl-qemut-ws16-amd64                         fail    
 test-amd64-i386-xl-qemut-ws16-amd64                          fail    
 test-amd64-amd64-xl-qemuu-ws16-amd64                         fail    
 test-amd64-i386-xl-qemuu-ws16-amd64                          fail    
 test-armhf-armhf-xl-arndale                                  pass    
 test-amd64-amd64-examine-bios                                pass    
 test-amd64-i386-examine-bios                                 pass    
 test-amd64-amd64-xl-credit1                                  pass    
 test-arm64-arm64-xl-credit1                                  pass    
 test-armhf-armhf-xl-credit1                                  pass    
 test-amd64-amd64-xl-credit2                                  pass    
 test-arm64-arm64-xl-credit2                                  pass    
 test-armhf-armhf-xl-credit2                                  pass    
 test-amd64-amd64-xl-qemuu-dmrestrict-amd64-dmrestrict        pass    
 test-amd64-i386-xl-qemuu-dmrestrict-amd64-dmrestrict         pass    
 test-amd64-amd64-examine                                     pass    
 test-arm64-arm64-examine                                     pass    
 test-armhf-armhf-examine                                     pass    
 test-amd64-i386-examine                                      pass    
 test-amd64-i386-freebsd10-i386                               pass    
 test-amd64-amd64-qemuu-nested-intel                          pass    
 test-amd64-amd64-xl-pvhv2-intel                              pass    
 test-amd64-i386-qemut-rhel6hvm-intel                         pass    
 test-amd64-i386-qemuu-rhel6hvm-intel                         pass    
 test-amd64-amd64-dom0pvh-xl-intel                            pass    
 test-amd64-amd64-libvirt                                     pass    
 test-armhf-armhf-libvirt                                     pass    
 test-amd64-i386-libvirt                                      pass    
 test-amd64-amd64-livepatch                                   pass    
 test-amd64-i386-livepatch                                    pass    
 test-amd64-amd64-migrupgrade                                 pass    
 test-amd64-i386-migrupgrade                                  pass    
 test-amd64-amd64-xl-multivcpu                                pass    
 test-armhf-armhf-xl-multivcpu                                pass    
 test-amd64-amd64-pair                                        pass    
 test-amd64-i386-pair                                         pass    
 test-amd64-amd64-libvirt-pair                                pass    
 test-amd64-i386-libvirt-pair                                 pass    
 test-amd64-amd64-xl-pvshim                                   pass    
 test-amd64-i386-xl-pvshim                                    fail    
 test-amd64-amd64-pygrub                                      pass    
 test-armhf-armhf-libvirt-qcow2                               pass    
 test-amd64-amd64-xl-qcow2                                    pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-armhf-armhf-libvirt-raw                                 pass    
 test-amd64-i386-libvirt-raw                                  pass    
 test-amd64-amd64-xl-rtds                                     pass    
 test-armhf-armhf-xl-rtds                                     pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64-shadow             pass    
 test-amd64-i386-xl-qemuu-debianhvm-amd64-shadow              pass    
 test-amd64-amd64-xl-shadow                                   pass    
 test-amd64-i386-xl-shadow                                    pass    
 test-arm64-arm64-xl-thunderx                                 pass    
 test-amd64-amd64-examine-uefi                                pass    
 test-amd64-i386-examine-uefi                                 pass    
 test-amd64-amd64-libvirt-vhd                                 pass    
 test-arm64-arm64-xl-vhd                                      pass    
 test-armhf-armhf-xl-vhd                                      pass    
 test-amd64-i386-xl-vhd                                       pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Not pushing.

------------------------------------------------------------
commit 2467ab2a74463107132f7d929d2ff0e30a8b6fa3
Author: Tamas K Lengyel <tamas.lengyel@intel.com>
Date:   Mon Jan 8 10:16:58 2024 +0100

    x86/mwait-idle: fix ubsan warning
    
    Fix warning:
    (XEN) UBSAN: Undefined behaviour in arch/x86/cpu/mwait-idle.c:1300:44
    (XEN) left shift of 15 by 28 places cannot be represented in type 'int'
    originating from sklh_idle_state_table_update() and hence observable on
    one kind of CPU only.
    
    Fixes: 5a211704e88 ("mwait-idle: prevent SKL-H boot failure when C8+C9+C10 enabled")
    Signed-off-by: Tamas K Lengyel <tamas.lengyel@intel.com>
    Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>

commit cc5a436002c418dc970677a3e99099968fd47ec3
Author: Juergen Gross <jgross@suse.com>
Date:   Mon Jan 8 10:16:42 2024 +0100

    xen/public: add some more 9pfs xenstore paths
    
    Add some optional additional backend paths for 9pfs PV devices. Those
    paths will be supported by the new xen-9pfsd 9pfs backend.
    
    Signed-off-by: Juergen Gross <jgross@suse.com>
    Reviewed-by: Jason Andryuk <jandryuk@gmail.com>

commit 589d8cf146290bdc7f4347bced10c20bd14791f6
Author: Oleksii Kurochko <oleksii.kurochko@gmail.com>
Date:   Wed Dec 20 16:08:29 2023 +0200

    xen: ifdef inclusion of <asm/grant_table.h> in <xen/grant_table.h>
    
    Ifdef-ing inclusion of <asm/grant_table.h> allows to avoid
    generation of empty <asm/grant_table.h> for cases when
    CONFIG_GRANT_TABLE is not enabled.
    
    The following changes were done for Arm:
    <asm/grant_table.h> should be included directly because it contains
    gnttab_dom0_frames() macros which is unique for Arm and is used in
    arch/arm/domain_build.c.
    <asm/grant_table.h> is #ifdef-ed with CONFIG_GRANT_TABLE in
    <xen/grant_table.h> so in case of !CONFIG_GRANT_TABLE gnttab_dom0_frames
    won't be available for use in arch/arm/domain_build.c.
    
    Suggested-by: Jan Beulich <jbeulich@suse.com>
    Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>
    Acked-by: Julien Grall <jgrall@amazon.com>
    Acked-by: Shawn Anastasio <sanastasio@raptorengineering.com>

commit 42b814b7ff0af0022cb93c912120b59b08173158
Author: Oleksii Kurochko <oleksii.kurochko@gmail.com>
Date:   Wed Dec 20 16:08:28 2023 +0200

    xen/asm-generic: introduce stub header softirq.h
    
    <asm/softirq.h> is common between Arm, PPC and RISC-V so it is
    moved to asm-generic.
    
    Drop Arm and PPC's softirq.h and use asm-generic version instead.
    
    Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>
    Reviewed-by: Michal Orzel <michal.orzel@amd.com>
    Acked-by: Jan Beulich <jbeulich@suse.com>
    Acked-by: Shawn Anastasio <sanastasio@raptorengineering.com>
    Acked-by: Julien Grall <jgrall@amazon.com>

commit e2c7111d6505d49274f9c0d0148a956bd62c3595
Author: Oleksii Kurochko <oleksii.kurochko@gmail.com>
Date:   Wed Dec 20 16:08:25 2023 +0200

    xen/asm-generic: introduce generic div64.h header
    
    All archs have the do_div implementation for BITS_PER_LONG == 64
    so do_div64.h is moved to asm-generic.
    
    x86 and PPC were switched to asm-generic version of div64.h.
    Arm was switched partly because Arm has different implementation
    for 32-bits.
    
    Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>
    Acked-by: Jan Beulich <jbeulich@suse.com>
    Acked-by: Shawn Anastasio <sanastasio@raptorengineering.com>
    Acked-by: Julien Grall <jgrall@amazon.com>
(qemu changes not included)


From xen-devel-bounces@lists.xenproject.org Wed Jan 10 06:06:40 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 10 Jan 2024 06:06:40 +0000
Received: from list by lists.xenproject.org with outflank-mailman.665296.1035451 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNRjK-0003DC-UO; Wed, 10 Jan 2024 06:06:22 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 665296.1035451; Wed, 10 Jan 2024 06:06:22 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNRjK-0003D5-Qh; Wed, 10 Jan 2024 06:06:22 +0000
Received: by outflank-mailman (input) for mailman id 665296;
 Wed, 10 Jan 2024 06:06:21 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rNRjJ-0003Cv-Lu; Wed, 10 Jan 2024 06:06:21 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rNRjJ-0002UW-JA; Wed, 10 Jan 2024 06:06:21 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rNRjJ-0008U9-2c; Wed, 10 Jan 2024 06:06:21 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rNRjJ-000603-0p; Wed, 10 Jan 2024 06:06:21 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=wO46MgxCrlJ1JwGGRFVMOHRkpFLolCAhWwbJJigJvH8=; b=dtu5Fv3fp+Ok3YiYA2om3noooj
	K0oyLQj2v6m2MN/ZjW+QF6uleUqt2Ta10vJNQaGSik9mg1S37r+vLZQi5w6hkoMY2ehCNqMnAsBTT
	+cj2Eg0nEeMPX9I0iseJTvqCNIuglqGML61bBidsC1pMpJVA7zyJnU/s6ks//MiaVEPo=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184300-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [ovmf test] 184300: all pass - PUSHED
X-Osstest-Versions-This:
    ovmf=edba0779ba05c0598dbdd32006714fed4fd24ae0
X-Osstest-Versions-That:
    ovmf=4a443f73fd67ca8caaf0a3e1a01f8231b330d2e0
From: osstest service owner <osstest-admin@xenproject.org>
Date: Wed, 10 Jan 2024 06:06:21 +0000

flight 184300 ovmf real [real]
http://logs.test-lab.xenproject.org/osstest/logs/184300/

Perfect :-)
All tests in this flight passed as required
version targeted for testing:
 ovmf                 edba0779ba05c0598dbdd32006714fed4fd24ae0
baseline version:
 ovmf                 4a443f73fd67ca8caaf0a3e1a01f8231b330d2e0

Last test of basis   184297  2024-01-09 16:43:52 Z    0 days
Testing same since   184300  2024-01-10 01:56:08 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Gang Chen <gang.c.chen@intel.com>

jobs:
 build-amd64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-amd64-amd64-xl-qemuu-ovmf-amd64                         pass    
 test-amd64-i386-xl-qemuu-ovmf-amd64                          pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Pushing revision :

To xenbits.xen.org:/home/xen/git/osstest/ovmf.git
   4a443f73fd..edba0779ba  edba0779ba05c0598dbdd32006714fed4fd24ae0 -> xen-tested-master


From xen-devel-bounces@lists.xenproject.org Wed Jan 10 06:24:41 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 10 Jan 2024 06:24:41 +0000
Received: from list by lists.xenproject.org with outflank-mailman.665303.1035461 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNS0x-0006Ao-EB; Wed, 10 Jan 2024 06:24:35 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 665303.1035461; Wed, 10 Jan 2024 06:24:35 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNS0x-0006Ah-AK; Wed, 10 Jan 2024 06:24:35 +0000
Received: by outflank-mailman (input) for mailman id 665303;
 Wed, 10 Jan 2024 06:24:34 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=6bPZ=IU=amd.com=Jiqian.Chen@srs-se1.protection.inumbo.net>)
 id 1rNS0v-0006Ab-Sz
 for xen-devel@lists.xenproject.org; Wed, 10 Jan 2024 06:24:33 +0000
Received: from NAM02-BN1-obe.outbound.protection.outlook.com
 (mail-bn1nam02on20609.outbound.protection.outlook.com
 [2a01:111:f400:7eb2::609])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id e9910dc7-af80-11ee-9b0f-b553b5be7939;
 Wed, 10 Jan 2024 07:24:31 +0100 (CET)
Received: from BL1PR12MB5849.namprd12.prod.outlook.com (2603:10b6:208:384::18)
 by CH2PR12MB4312.namprd12.prod.outlook.com (2603:10b6:610:af::14)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7159.23; Wed, 10 Jan
 2024 06:24:27 +0000
Received: from BL1PR12MB5849.namprd12.prod.outlook.com
 ([fe80::bafd:1985:94e6:ef33]) by BL1PR12MB5849.namprd12.prod.outlook.com
 ([fe80::bafd:1985:94e6:ef33%6]) with mapi id 15.20.7181.015; Wed, 10 Jan 2024
 06:24:27 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: e9910dc7-af80-11ee-9b0f-b553b5be7939
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=G4AvRaQWSGpCs8h9Joh+2NXeh05vopMFWCQAQZU8TOBvGWty+43wQW/8bB9OjZVJWFb7vjR/O6nyu+IG80NLem/gyVLRg5e+L5Ryky+FQQK6J0Xthd3AzkNAA2/9CGj9LnbhpX8Gq35jD4jTGg1946GWWtudbyAGAYK9IWRbJTEa+Hl6kPEE494ZvOBPlo5bvnHRpeEUkIKDcSg7IHW43dkobOp+EUYTX/5EmxR/KGznJmbjNQBxsgB1caBThPkQqbYBUZihhPbk2lkqpLrUAzcY3UVje7Yss04IyDaop16k4+GkxV19YwsQyQZ5xsaKOFHvrY2gLcwSsCuMet9rgw==
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=2ic+dQrxDEN2PXgKgtZbj6lGK54OQ8ahMVCJLoStW6Y=;
 b=W8Od4HX3GACysWrBwKu2kY+P6OcKAWClf4zs9pojvkhDSwyxfLN39uAhGJh2nJu9VN7vOkshTtpDZ11byNkpH3kASO6Tu7QDTg7nx6GIGOEva+3m0Ar5A0PNI5CaQuNl+8yWMWg12ZV0GGGFjavQDQJmCd1XubWrTpNkiE8aY6H3YTKNauXfN64JfEgZ+4/lVjnxX6B1YPyTig6K4iQ7vlBDAdfQ9zVd5+BbpjUaJyuUJljUNkaptBmV4JPKkAP8DQo3HI0Tzfi8oPiPG1dJ6FR9wPf14uLuFzDf9pMDropvZTccSXl9o+QxfRZZW91LsOuDfXk0O/4ALiVreApszg==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=amd.com; dmarc=pass action=none header.from=amd.com; dkim=pass
 header.d=amd.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=2ic+dQrxDEN2PXgKgtZbj6lGK54OQ8ahMVCJLoStW6Y=;
 b=GM8Gys0XA698wv5U/14YBmBGv0T3edf4aBDitvSHc/lof32m9M1skSTpPAXy3+ZACDFgBYB3NCBknz/+QFAAJF7v5PuyEL0mXG0b8JOwr47E9cj6HRUFIhzWPW7zYO3IJ6lzMNEwB0ii1UhNmYjYrCXTrdSZrYC6i2leN9bgSVs=
From: "Chen, Jiqian" <Jiqian.Chen@amd.com>
To: "Hildebrand, Stewart" <Stewart.Hildebrand@amd.com>
CC: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>, Jan
 Beulich <jbeulich@suse.com>, Andrew Cooper <andrew.cooper3@citrix.com>,
	=?utf-8?B?Um9nZXIgUGF1IE1vbm7DqQ==?= <roger.pau@citrix.com>, Wei Liu
	<wl@xen.org>, George Dunlap <george.dunlap@citrix.com>, Julien Grall
	<julien@xen.org>, Stefano Stabellini <sstabellini@kernel.org>, Anthony PERARD
	<anthony.perard@citrix.com>, Juergen Gross <jgross@suse.com>, "Huang, Ray"
	<Ray.Huang@amd.com>, "Chen, Jiqian" <Jiqian.Chen@amd.com>
Subject: Re: [RFC XEN PATCH v4 1/5] xen/vpci: Clear all vpci status of device
Thread-Topic: [RFC XEN PATCH v4 1/5] xen/vpci: Clear all vpci status of device
Thread-Index: AQHaP6YrwTeuO8u85U6eXqUvf5Gm3LDRoHaAgAF/ZoA=
Date: Wed, 10 Jan 2024 06:24:26 +0000
Message-ID:
 <BL1PR12MB58494843C4BCE9A522A0E674E7692@BL1PR12MB5849.namprd12.prod.outlook.com>
References: <20240105070920.350113-1-Jiqian.Chen@amd.com>
 <20240105070920.350113-2-Jiqian.Chen@amd.com>
 <70add06b-59c6-469a-8570-f7a6f5bc15fb@amd.com>
In-Reply-To: <70add06b-59c6-469a-8570-f7a6f5bc15fb@amd.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-ms-exchange-imapappendstamp: BL1PR12MB5755.namprd12.prod.outlook.com
 (15.20.7181.004)
authentication-results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=amd.com;
x-ms-exchange-messagesentrepresentingtype: 1
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: BL1PR12MB5849:EE_|CH2PR12MB4312:EE_
x-ms-office365-filtering-correlation-id: 2be7568e-d820-455e-00c4-08dc11a4cbb6
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam: BCL:0;
x-microsoft-antispam-message-info:
 jF9xd07uLWr2kyyDfwjhXCCps1CBzicNtVP9cxCk6xOGVB5viNKz+d9Vy/rAjXMvgaCMT/ZCNrS/tn5dfCGUAL0ns0Kum44/yw6boab9oBEwQ0APNuxek9gvsFmSRyKskyktUQZiSqhKyIkxhySwUL+3yYzii7HOaNxwsWwXi8G35kxf3VlAcElqqzN3XEMZJW5GleeL/vCrCs2W3fV6DbOqNXSPpFBLgCmig7JgwwL+H0VwGr3hZYm0+OC16YpkCx79pkGIeeu4EkZv8TmI7xF1ajfECbOnapxyIu4wNYHRlHqGfRAX4gpnk66JVApMZcoi9ikTlZUlfcXVRKPDPptWQ0TiLCe8qV0MAdb/saBZPhpgA9RQZifohyp6WAFKRMttF7zQQbrgaXLEKrN0mgf76Tq5FLh+AacQc0rV6ekuh4mH1Q70LzgXnd4sZZj7FYp6S2Bpteosq2mem2tKM63W3pI9MZDAtgA3P3/lpSchl2pI40nUV3pMjbmXon21tLmrdo+UG0J8ztvsnZePKMfZQgagkto/u9JkXg59VoLtjJAob4VgZO6sgR8WRWCd9ik6AHkhHOLPxwEOVFgXHXu2Z8w92MfBjJn2zDN21zCSuPBuK18gF6pXvWPg/isB
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BL1PR12MB5849.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230031)(366004)(136003)(376002)(39860400002)(396003)(346002)(230922051799003)(451199024)(1800799012)(64100799003)(186009)(26005)(83380400001)(9686003)(6506007)(53546011)(7696005)(122000001)(5660300002)(71200400001)(6862004)(7416002)(52536014)(4326008)(2906002)(41300700001)(478600001)(66476007)(66446008)(316002)(54906003)(8676002)(8936002)(64756008)(6636002)(76116006)(66556008)(66946007)(33656002)(38100700002)(38070700009)(55016003);DIR:OUT;SFP:1101;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?utf-8?B?L3IrbmpkVnIrT0dNVU85T1FPZzNudW01Titta0k3YWtrNTFKTGVQVUxwVVA2?=
 =?utf-8?B?c3RaSTJxUDhUVFZqS0lqaWJtSkxOcG5uM1A5YjdMWnNKYWZYUFE2Z3ByMUJE?=
 =?utf-8?B?MnBabTFGRTNrTUlsMGVVSjBaalErZFdub0ZDV1g4ekxUb0QwSURmMUUzakwy?=
 =?utf-8?B?OVN6Z2EvT2JuREFXaUdUY010dmhndi9Na3l2dHpXMGhibXYwSEpxa2ludEVB?=
 =?utf-8?B?NU16bzQ4NFRlaUE4SkJPZkZNMHdoVUtvaFBHaHdORXRYZTU0V25vOEdqalJw?=
 =?utf-8?B?bThzVXJkTThjUThGQ2dvMUFOYXZia0JvbnptM0RQQytMajNtZ2JyNzRuQlBx?=
 =?utf-8?B?Uy8reVd1eExiem1TamNRNVlBbzVyTTdENEhnM2Y3Y0U4QTNHTWkzSEhoWXd5?=
 =?utf-8?B?cnhUaWVVUzJ3U3FEZ0l4M1JyWFhLMjc0UVBFdEw0L1FKUWU3clZubmQyVnhH?=
 =?utf-8?B?WFhFeHl5djhRWXNGYmRxZ3BLZGRmWE1za2hxUlpOSzJGazhNNVpXTG9PVUlD?=
 =?utf-8?B?ZjBMR1NpTzhiekxmTkhONmgyY0xENWU4Rms5YjZYUTFhMWNXeUpQMEJvVWNs?=
 =?utf-8?B?aGNzbTJDK2hTNk5ZNkx5L1Z2ZnhqVDNlZHFKMlBQNXB5RUx4dEJYZnNQYTV0?=
 =?utf-8?B?eFNnamkxQnhPUGlndXhoSDRFZzVrcTBxY01CMU5xUDdweFlEMlhKVUpNWHpL?=
 =?utf-8?B?N3RtVkliSWtuV3VnVEpTalZPVWJvajlVa1BaSTBqblJvUTFCRFdZamtUeUJ4?=
 =?utf-8?B?d29hOFVrTUF0cEI2MktHQytWb084ZnhGbU5JUW84NjY3ZC9LRHJ3YnFDQ21v?=
 =?utf-8?B?VEJJeEMvRVB3c3REcEZFTU52VEUrMklYYW9uQXFFRUNTblNsMG9oRjk1UW5V?=
 =?utf-8?B?Z25ha294bEZXam9nQWE1ZkFhUTRqUzR4d1JiUDlrdWZMall3aGMwTkdqTmIy?=
 =?utf-8?B?TmNva0ZUTGszRG5ydnRiY3BZbzZucEdXUURDVElPbm1UUVFFQTZWbk1kam5Z?=
 =?utf-8?B?RW1vZU13dGZKaUczV25kRWFCRjZ1dW1yN05vU1VFb1BnR0g0WlIyRitKT2ln?=
 =?utf-8?B?dUp6YVlYUGhMWlFXQ2JBSUdyVWpvQkRMRE1RTGQ2amdheEpJUlRJMTZhbUZX?=
 =?utf-8?B?Z3duemtrWm5tOGdGeWRaMDhiRWNpb2VKZ01valNybWlGTnpFeU9pNGRpNmRG?=
 =?utf-8?B?dDZUTjF4ZHRQOVhDL0dZWkdyRnAwQWUrUUNjSEVmd09JOXMwRWJEcTFLck5T?=
 =?utf-8?B?KzNHSlZUV0FUYllDTlN1aEhsUjRyajdjcy9GcG9IckNKL1RJQm1JdlFDSklD?=
 =?utf-8?B?WlBqaThQT0I5ck5hZzNyMWxyb0pyWXRKZHFFbWRCSUw0b1BUUWRJVWpwV0Vw?=
 =?utf-8?B?UVN1UXh5dUUza0lqODRVQ1pSOFEvOE1nRkh3Yms3Sk1FU3ZmWlU2VlA1OHU1?=
 =?utf-8?B?T3N0alpMd2N4eHJvT1ArZVNNdmxsc0NjVE5Zd0U0VjVBSUZua3BLeHp2TS9R?=
 =?utf-8?B?Z2N0WDBsVEFncDZRSkFqQ3VSdlI3THhnbXNtZ1U3NmtMOE9JditpK3pGc3d4?=
 =?utf-8?B?dG5NTUpGVGNpaUtLKzNUM1Y2dnVSb3BnNDNBanNveTJyem8xVFV5SzZmOGZx?=
 =?utf-8?B?MHVCU2owSVVrUk80OWcxVkhtMnJFc1BiRnhvN2d1MWE5TFNhdXRkTXRXRDl1?=
 =?utf-8?B?RGp1RFJWMjR1bC9xOGpwTFR3K0J3c1FJdVJnOU41UlJZR1BOOTlEUEFtaGIw?=
 =?utf-8?B?Wm5FNlptUnlHbXZCSjZ6TEs2SGFRMmdMcGJoZThwN05acE5MQUIyWEczNDNx?=
 =?utf-8?B?ZWI2aDdlb0RZSnFUSURWakZCeSt0eXNMZXp4bEpGV2FsdFprU1EzWU0vL3d2?=
 =?utf-8?B?bUlnYVAxZ0l4UzRaSEhiMVlnRGp5Wnl4RUcwT0VSSzhsNW51emlzM0dUZjdS?=
 =?utf-8?B?b1d0NUw0d1JKVkpPZFh1dloyam16dU0yb3ZCOWtsVUxLNGk2d24xUnVEdmFB?=
 =?utf-8?B?Q0pwOTFGbjRjamtpc2FBcW0zaGZRazdUaXpucDN2VFV3eXpPYzRkbExZcHJi?=
 =?utf-8?B?YUIwajRHVndQdEpmaG8wbitocGZUQ2FUaElJVnc2RGsrVVFXK3VnMGxudXU3?=
 =?utf-8?Q?oeOA=3D?=
Content-Type: text/plain; charset="utf-8"
Content-ID: <6C5E149B8C78C245A07382FF4DA20164@amdcloud.onmicrosoft.com>
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: BL1PR12MB5849.namprd12.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 2be7568e-d820-455e-00c4-08dc11a4cbb6
X-MS-Exchange-CrossTenant-originalarrivaltime: 10 Jan 2024 06:24:26.9344
 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 3dd8961f-e488-4e60-8e11-a82d994e183d
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: +lIp79cyuWmZacge5/RAvHSzeXlyAtics7zbHrJciyh5FzhmU+69alC9BCJCuKApc3srQRSqSSttznfae9CXHw==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH2PR12MB4312

T24gMjAyNC8xLzkgMjM6MjQsIFN0ZXdhcnQgSGlsZGVicmFuZCB3cm90ZToNCj4gT24gMS81LzI0
IDAyOjA5LCBKaXFpYW4gQ2hlbiB3cm90ZToNCj4+IGRpZmYgLS1naXQgYS94ZW4vZHJpdmVycy9w
Y2kvcGh5c2Rldi5jIGIveGVuL2RyaXZlcnMvcGNpL3BoeXNkZXYuYw0KPj4gaW5kZXggNDJkYjNl
NmQxMzNjLi41NTJjY2JmNzQ3Y2IgMTAwNjQ0DQo+PiAtLS0gYS94ZW4vZHJpdmVycy9wY2kvcGh5
c2Rldi5jDQo+PiArKysgYi94ZW4vZHJpdmVycy9wY2kvcGh5c2Rldi5jDQo+PiBAQCAtNjcsNiAr
NjgsMzkgQEAgcmV0X3QgcGNpX3BoeXNkZXZfb3AoaW50IGNtZCwgWEVOX0dVRVNUX0hBTkRMRV9Q
QVJBTSh2b2lkKSBhcmcpDQo+PiAgICAgICAgICBicmVhazsNCj4+ICAgICAgfQ0KPj4gIA0KPj4g
KyAgICBjYXNlIFBIWVNERVZPUF9wY2lfZGV2aWNlX3N0YXRlX3Jlc2V0OiB7DQo+PiArICAgICAg
ICBzdHJ1Y3QgcGh5c2Rldl9wY2lfZGV2aWNlIGRldjsNCj4+ICsgICAgICAgIHN0cnVjdCBwY2lf
ZGV2ICpwZGV2Ow0KPj4gKyAgICAgICAgcGNpX3NiZGZfdCBzYmRmOw0KPj4gKw0KPj4gKyAgICAg
ICAgaWYgKCAhaXNfcGNpX3Bhc3N0aHJvdWdoX2VuYWJsZWQoKSApDQo+PiArICAgICAgICAgICAg
cmV0dXJuIC1FT1BOT1RTVVBQOw0KPj4gKw0KPj4gKyAgICAgICAgcmV0ID0gLUVGQVVMVDsNCj4+
ICsgICAgICAgIGlmICggY29weV9mcm9tX2d1ZXN0KCZkZXYsIGFyZywgMSkgIT0gMCApDQo+PiAr
ICAgICAgICAgICAgYnJlYWs7DQo+PiArICAgICAgICBzYmRmID0gUENJX1NCREYoZGV2LnNlZywg
ZGV2LmJ1cywgZGV2LmRldmZuKTsNCj4+ICsNCj4+ICsgICAgICAgIHJldCA9IHhzbV9yZXNvdXJj
ZV9zZXR1cF9wY2koWFNNX1BSSVYsIHNiZGYuc2JkZik7DQo+PiArICAgICAgICBpZiAoIHJldCAp
DQo+PiArICAgICAgICAgICAgYnJlYWs7DQo+PiArDQo+PiArICAgICAgICBwY2lkZXZzX2xvY2so
KTsNCj4+ICsgICAgICAgIHBkZXYgPSBwY2lfZ2V0X3BkZXYoTlVMTCwgc2JkZik7DQo+PiArICAg
ICAgICBpZiAoICFwZGV2ICkNCj4+ICsgICAgICAgIHsNCj4+ICsgICAgICAgICAgICBwY2lkZXZz
X3VubG9jaygpOw0KPj4gKyAgICAgICAgICAgIHJldCA9IC1FTk9ERVY7DQo+PiArICAgICAgICAg
ICAgYnJlYWs7DQo+PiArICAgICAgICB9DQo+PiArDQo+IA0KPiAgICAgICAgIHdyaXRlX2xvY2so
JnBkZXYtPmRvbWFpbi0+cGNpX2xvY2spOw0KPiANCj4+ICsgICAgICAgIHJldCA9IHZwY2lfcmVz
ZXRfZGV2aWNlX3N0YXRlKHBkZXYpOw0KPiANCj4gICAgICAgICB3cml0ZV91bmxvY2soJnBkZXYt
PmRvbWFpbi0+cGNpX2xvY2spOw0KdnBjaV9yZXNldF9kZXZpY2Vfc3RhdGUgb25seSByZXNldCB0
aGUgdnBjaSBzdGF0ZSBvZiBwZGV2IHdpdGhvdXQgZGVsZXRpbmcgcGRldiBmcm9tIGRvbWFpbiwg
YW5kIGhlcmUgaGFzIGhlbGQgcGNpZGV2c19sb2NrLCBpdCBoYXMgbm8gbmVlZCB0byBsb2NrIHBj
aV9sb2NrPw0KDQo+IA0KPj4gKyAgICAgICAgcGNpZGV2c191bmxvY2soKTsNCj4+ICsgICAgICAg
IGlmICggcmV0ICkNCj4+ICsgICAgICAgICAgICBwcmludGsoWEVOTE9HX0VSUiAiJXBwOiBmYWls
ZWQgdG8gcmVzZXQgUENJIGRldmljZSBzdGF0ZVxuIiwgJnNiZGYpOw0KPj4gKyAgICAgICAgYnJl
YWs7DQo+PiArICAgIH0NCj4+ICsNCj4+ICAgICAgZGVmYXVsdDoNCj4+ICAgICAgICAgIHJldCA9
IC1FTk9TWVM7DQo+PiAgICAgICAgICBicmVhazsNCj4+IGRpZmYgLS1naXQgYS94ZW4vZHJpdmVy
cy92cGNpL3ZwY2kuYyBiL3hlbi9kcml2ZXJzL3ZwY2kvdnBjaS5jDQo+PiBpbmRleCA3MmVmMjc3
YzRmOGUuLjNjNjRjYjEwY2NiYiAxMDA2NDQNCj4+IC0tLSBhL3hlbi9kcml2ZXJzL3ZwY2kvdnBj
aS5jDQo+PiArKysgYi94ZW4vZHJpdmVycy92cGNpL3ZwY2kuYw0KPj4gQEAgLTEwNyw2ICsxMDcs
MTUgQEAgaW50IHZwY2lfYWRkX2hhbmRsZXJzKHN0cnVjdCBwY2lfZGV2ICpwZGV2KQ0KPj4gIA0K
Pj4gICAgICByZXR1cm4gcmM7DQo+PiAgfQ0KPj4gKw0KPj4gK2ludCB2cGNpX3Jlc2V0X2Rldmlj
ZV9zdGF0ZShzdHJ1Y3QgcGNpX2RldiAqcGRldikNCj4+ICt7DQo+PiArICAgIEFTU0VSVChwY2lk
ZXZzX2xvY2tlZCgpKTsNCj4gDQo+ICAgICBBU1NFUlQocndfaXNfd3JpdGVfbG9ja2VkKCZwZGV2
LT5kb21haW4tPnBjaV9sb2NrKSk7DQo+IA0KPj4gKw0KPj4gKyAgICB2cGNpX3JlbW92ZV9kZXZp
Y2UocGRldik7DQo+PiArICAgIHJldHVybiB2cGNpX2FkZF9oYW5kbGVycyhwZGV2KTsNCj4+ICt9
DQo+PiArDQo+PiAgI2VuZGlmIC8qIF9fWEVOX18gKi8NCj4+ICANCj4+ICBzdGF0aWMgaW50IHZw
Y2lfcmVnaXN0ZXJfY21wKGNvbnN0IHN0cnVjdCB2cGNpX3JlZ2lzdGVyICpyMSwNCg0KLS0gDQpC
ZXN0IHJlZ2FyZHMsDQpKaXFpYW4gQ2hlbi4NCg==


From xen-devel-bounces@lists.xenproject.org Wed Jan 10 07:14:52 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 10 Jan 2024 07:14:52 +0000
Received: from list by lists.xenproject.org with outflank-mailman.665308.1035471 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNSnO-0004nX-Ru; Wed, 10 Jan 2024 07:14:38 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 665308.1035471; Wed, 10 Jan 2024 07:14:38 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNSnO-0004nQ-No; Wed, 10 Jan 2024 07:14:38 +0000
Received: by outflank-mailman (input) for mailman id 665308;
 Wed, 10 Jan 2024 07:14:37 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rNSnN-0004nE-RO; Wed, 10 Jan 2024 07:14:37 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rNSnN-0003y8-LH; Wed, 10 Jan 2024 07:14:37 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rNSnN-0002Lg-3N; Wed, 10 Jan 2024 07:14:37 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rNSnN-0004wf-2r; Wed, 10 Jan 2024 07:14:37 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=UY5kuzyQXqZvZ8BnpRPAZCmrzdUf8sB+02Fl8AR2ANE=; b=fnjwq1lrAXSO3T+gL4wo+Nn+JB
	lEbcTiKAdWSUbMAl6Y2O1nCdP6KEA2loGN1uBchp+cXKcRmmpNCvShPSMSW3+nMYlbeQYSs/RQBV0
	NAImvq6D1K9W+TWKNuQfoU8UNuteiRFCL0vQK9C94uackEuI5jNI2esR6ynWRZQkTQGg=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184296-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [linux-linus test] 184296: regressions - FAIL
X-Osstest-Failures:
    linux-linus:test-amd64-amd64-xl-shadow:<job status>:broken:regression
    linux-linus:test-arm64-arm64-xl-xsm:debian-install:fail:regression
    linux-linus:test-arm64-arm64-libvirt-xsm:debian-install:fail:regression
    linux-linus:test-amd64-amd64-xl-shadow:host-install(5):broken:heisenbug
    linux-linus:test-armhf-armhf-libvirt:xen-boot:fail:heisenbug
    linux-linus:test-armhf-armhf-libvirt:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt:migrate-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    linux-linus:test-amd64-amd64-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    linux-linus:test-amd64-amd64-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-raw:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-qcow2:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-qemuu-nested-amd:debian-hvm-install/l1/l2:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-xsm:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-credit1:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-thunderx:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-credit1:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-thunderx:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-credit2:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-credit2:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-multivcpu:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-multivcpu:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-arndale:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-arndale:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-rtds:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-rtds:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit1:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit1:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-qcow2:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit2:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit2:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-libvirt-raw:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-vhd:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-vhd:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-vhd:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-vhd:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-qcow2:migrate-support-check:fail:nonblocking
X-Osstest-Versions-This:
    linux=9f8413c4a66f2fb776d3dc3c9ed20bf435eb305e
X-Osstest-Versions-That:
    linux=0dd3ee31125508cd67f7e7172247f05b7fd1753a
From: osstest service owner <osstest-admin@xenproject.org>
Date: Wed, 10 Jan 2024 07:14:37 +0000

flight 184296 linux-linus real [real]
http://logs.test-lab.xenproject.org/osstest/logs/184296/

Regressions :-(

Tests which did not succeed and are blocking,
including tests which could not be run:
 test-amd64-amd64-xl-shadow      <job status>                 broken  in 184290
 test-arm64-arm64-xl-xsm      12 debian-install           fail REGR. vs. 184270
 test-arm64-arm64-libvirt-xsm 12 debian-install           fail REGR. vs. 184270

Tests which are failing intermittently (not blocking):
 test-amd64-amd64-xl-shadow   5 host-install(5) broken in 184290 pass in 184296
 test-armhf-armhf-libvirt      8 xen-boot                   fail pass in 184290

Tests which did not succeed, but are not blocking:
 test-armhf-armhf-libvirt 16 saverestore-support-check fail in 184290 like 184270
 test-armhf-armhf-libvirt    15 migrate-support-check fail in 184290 never pass
 test-amd64-amd64-xl-qemut-win7-amd64 19 guest-stop            fail like 184270
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 184270
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 184270
 test-armhf-armhf-libvirt-raw 15 saverestore-support-check    fail  like 184270
 test-amd64-amd64-xl-qemut-ws16-amd64 19 guest-stop            fail like 184270
 test-armhf-armhf-libvirt-qcow2 15 saverestore-support-check   fail like 184270
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 184270
 test-amd64-amd64-libvirt     15 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl          15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl          16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-credit1  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-thunderx 15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit1  16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-thunderx 16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-credit2  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit2  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-multivcpu 15 migrate-support-check        fail  never pass
 test-armhf-armhf-xl-multivcpu 16 saverestore-support-check    fail  never pass
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-armhf-armhf-xl-arndale  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-arndale  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-rtds     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-rtds     16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-credit1  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit1  16 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-qcow2 14 migrate-support-check        fail never pass
 test-armhf-armhf-xl-credit2  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit2  16 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-raw 14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 15 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-vhd      14 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-vhd      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-raw 14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl          15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          16 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-qcow2 14 migrate-support-check        fail never pass

version targeted for testing:
 linux                9f8413c4a66f2fb776d3dc3c9ed20bf435eb305e
baseline version:
 linux                0dd3ee31125508cd67f7e7172247f05b7fd1753a

Last test of basis   184270  2024-01-07 20:42:19 Z    2 days
Failing since        184283  2024-01-08 20:10:43 Z    1 days    3 attempts
Testing same since   184290  2024-01-09 05:47:33 Z    1 days    2 attempts

------------------------------------------------------------
People who touched revisions under test:
  "Aneesh Kumar K.V (IBM)" <aneesh.kumar@kernel.org>
  "Aneesh Kumar K.V" <aneesh.kumar@linux.ibm.com>
  "Paul E. McKenney" <paulmck@kernel.org>
  Aaron Lu <aaron.lu@intel.com>
  Abel Wu <wuyun.abel@bytedance.com>
  Abhinav Singh <singhabhinav9051571833@gmail.com>
  Aditya Gupta <adityag@linux.ibm.com>
  Adrian Huang <ahuang12@lenovo.com>
  Al Viro <viro@zeniv.linux.org.uk>
  Alexander Antonov <alexander.antonov@linux.intel.com>
  Alexander Mikhalitsyn <aleksandr.mikhalitsyn@canonical.com>
  Amir Goldstein <amir73il@gmail.com>
  Ammy Yi <ammy.yi@intel.com>
  Andrei Vagin <avagin@google.com>
  Andrew Cooper <andrew.cooper3@citrix.com>
  Andrew Donnellan <ajd@linux.ibm.com>
  Andrew Donnellan <ajd@linux.ibm.com> # ocxl
  Andrzej Hajda <andrzej.hajda@intel.com>
  Andy Shevchenko <andriy.shevchenko@linux.intel.com>
  Aneesh Kumar K.V (IBM) <aneesh.kumar@kernel.org>
  Aneesh Kumar K.V <aneesh.kumar@linux.ibm.com>
  Anna-Maria Behnsen <anna-maria@linutronix.de>
  Anshuman Khandual <anshuman.khandual@arm.com>
  Ard Biesheuvel <ardb@kernel.org>
  Arnd Bergmann <arnd@arndb.de>
  Ashok Raj <ashok.raj@intel.com>
  Atul Kumar Pant <atulpant.linux@gmail.com>
  Bagas Sanjaya <bagasdotme@gmail.com>
  Bjorn Helgaas <bhelgaas@google.com>
  Bjorn Helgaas <bhelgaas@google.com>   # pci_ids.h
  Borislav Petkov (AMD) <bp@alien8.de>
  Catalin Marinas <catalin.marinas@arm.com>
  Chandan Babu R <chandanbabu@kernel.org>
  Christian Brauner <brauner@kernel.org>
  Christoph Hellwig <hch@lst.de>
  Christophe JAILLET <christophe.jaillet@wanadoo.fr>
  Christophe Leroy <christophe.leroy@csgroup.eu>
  Chuck Lever <chuck.lever@oracle.com>
  Claudiu Beznea <claudiu.beznea.uj@bp.renesas.com>
  Colin Ian King <colin.i.king@gmail.com>
  Conor Dooley <conor.dooley@microchip.com>
  Crystal Wood <oss@buserror.net>
  Daniel Bristot de Oliveira <bristot@kernel.org>
  Dario Binacchi <dario.binacchi@amarulasolutions.com>
  Darrick J. Wong <djwong@kernel.org>
  Dave Hansen <dave.hansen@linux.intel.com>
  David Heidelberg <david@ixit.cz>
  David Sterba <dsterba@suse.com>
  Derek Barbosa <debarbos@redhat.com>
  Dmitry Antipov <dmantipov@yandex.ru>
  Dmitry Torokhov <dmitry.torokhov@gmail.com>
  Edward Adam Davis <eadavis@qq.com>
  Elliot Berman <quic_eberman@quicinc.com>
  Eric Farman <farman@linux.ibm.com>  # s390
  Finn Thain <fthain@linux-m68k.org>
  Florian Fainelli <florian.fainelli@broadcom.com>
  Frederic Barrat <fbarrat@linux.ibm.com>
  Frederic Weisbecker <frederic@kernel.org>
  Fuad Tabba <tabba@google.com>
  Geert Uytterhoeven <geert+renesas@glider.be>
  Geert Uytterhoeven <geert@linux-m68k.org>
  Geoff Levand <geoff@infradead.org>
  Greg KH <gregkh@linuxfoundation.org>
  Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  Hao Ge <gehao@kylinos.cn>
  Haoran Liu <liuhaoran14@163.com>
  Hou Wenlong <houwenlong.hwl@antgroup.com>
  Huang Shijie <shijie@os.amperecomputing.com>
  Ilkka Koskinen <ilkka@os.amperecomputing.com>
  Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
  Imran Khan <imran.f.khan@oracle.com>
  Ingo Molnar <mingo@kernel.org>
  Jakub Kicinski <kuba@kernel.org>
  James Clark <james.clark@arm.com>
  James Morse <james.morse@arm.com>
  Jan Harkes <jaharkes@cs.cmu.edu>
  Jan Kara <jack@suse.cz>
  Jann Horn <jannh@google.com>
  Jeff Layton <jlayton@kernel.org>
  Jens Axboe <axboe@kernel.dk>
  Jia Zhu <zhujia.zj@bytedance.com>
  Joey Gouly <joey.gouly@arm.com>
  Jordan Niethe <jniethe5@gmail.com>
  Josef Bacik <josef@toxicpanda.com>
  Josh Don <joshdon@google.com>
  Josh Poimboeuf <jpoimboe@kernel.org>
  Juergen Gross <jgross@suse.com>
  Jun'ichi Nomura <junichi.nomura@nec.com>
  Junhao He <hejunhao3@huawei.com>
  Kajol Jain <kjain@linux.ibm.com>
  Kan Liang <kan.liang@linux.intel.com>
  Kees Cook <keescook@chromium.org>
  Kent Overstreet <kent.overstreet@linux.dev>
  Kevin Hao <haokexin@gmail.com>
  Konrad Dybcio <konrad.dybcio@linaro.org>
  Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
  Kunwu Chan <chentao@kylinos.cn>
  Kyle Meyer <kyle.meyer@hpe.com>
  Li kunyu <kunyu@nfschina.com>
  Li zeming <zeming@nfschina.com>
  Linus Torvalds <torvalds@linux-foundation.org>
  Lukas Bulwahn <lukas.bulwahn@gmail.com>
  Lukas Schauer <lukas@schauer.dev>
  Lukasz Luba <lukasz.luba@arm.com>
  Marc Zyngier <maz@kernel.org>
  Mark Brown <broonie@kernel.org>
  Mark Rutland <mark.rutland@arm.com>
  Martin K. Petersen <martin.petersen@oracle.com>
  Masahiro Yamada <masahiroy@kernel.org>
  Masami Hiramatsu <mhiramat@kernel.org>
  Mateusz Guzik <mjguzik@gmail.com>
  Matthew Wilcox (Oracle) <willy@infradead.org>
  Max Filippov <jcmvbkbc@gmail.com>
  Mel Gorman <mgorman@suse.de>
  Michael Ellerman <mpe@ellerman.id.au>
  Michal Simek <michal.simek@amd.com>
  Michal Suchánek <msuchanek@suse.de>
  Miklos Szeredi <mszeredi@redhat.com>
  Muralidhara M K <muralidhara.mk@amd.com>
  Namhyung Kim <namhyung@kernel.org>
  Nathan Chancellor <nathan@kernel.org>
  Nathan Lynch <nathanl@linux.ibm.com>
  Naveen N Rao <naveen@kernel.org>
  Nicholas Piggin <npiggin@gmail.com>
  Nikolay Borisov <nik.borisov@suse.com>
  Paul E. McKenney <paulmck@kernel.org>
  Peter Zijlstra (Intel) <peterz@infradead.org>
  Peter Zijlstra <peterz@infradead.org>
  Pierre Gondois <pierre.gondois@arm.com>
  Qais Yousef <qyousef@layalina.io>
  Qiuxu Zhuo <qiuxu.zhuo@intel.com>
  Rafael J. Wysocki <rafael.j.wysocki@intel.com>
  Rafael J. Wysocki <rafael@kernel.org>
  Raghavendra K T <raghavendra.kt@amd.com>
  Randy Dunlap <rdunlap@infradead.org>
  Ravi Bangoria <ravi.bangoria@amd.com>
  Rob Herring <robh@kernel.org>
  Robin Murphy <robin.murphy@arm.com>
  Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
  Ryan Roberts <ryan.roberts@arm.com>
  Ryusuke Konishi <konishi.ryusuke@gmail.com>
  Sam James <sam@gentoo.org>
  Samuel Zeter <samuelzeter@gmail.com>
  Sathvika Vasireddy <sv@linux.ibm.com>
  Segher Boessenkool <segher@kernel.crashing.org>
  Shawn Guo <shawn.guo@linaro.org>
  Shuai Xue <xueshuai@linux.alibaba.com>
  Srikar Dronamraju <srikar@linux.vnet.ibm.com>
  Stephen Rothwell <sfr@canb.auug.org.au>
  Sudeep Holla <sudeep.holla@arm.com>
  Sven Schnelle <svens@linux.ibm.com>
  Tejun Heo <tj@kernel.org>
  Thomas Gleixner <tglx@linutronix.de>
  Thomas Richter <tmricht@linux.ibm.com>
  Tom Lendacky <thomas.lendacky@amd.com>
  Tony Luck <tony.luck@intel.com>
  Tsung-Han Lin <tsunghan.tw@gmail.com>
  Uros Bizjak <ubizjak@gmail.com>
  Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
  Vaibhav Jain <vaibhav@linux.ibm.com>
  Vegard Nossum <vegard.nossum@oracle.com>
  Vincent Guittot <vincent.guittot@linaro.org>
  Viresh Kumar <viresh.kumar@linaro.org>
  Waiman Long <longman@redhat.com>
  Wang Jinchao <wangjinchao@xfusion.com>
  Wenyu Huang <huangwenyu5@huawei.com>
  Will Deacon <will@kernel.org>
  Xiaoming Wang <xiaoming.wang@intel.com>
  Xin Yin <yinxin.x@bytedance.com>
  Xu Yang <xu.yang_2@nxp.com>
  Xu Yilun <yilun.xu@intel.com>
  Yafang Shao <laoar.shao@gmail.com>
  YangXin <yx.0xffff@gmail.com>
  Yazen Ghannam <yazen.ghannam@amd.com>
  Yiwei Lin <s921975628@gmail.com>
  Youquan Song <youquan.song@intel.com>
  Yuntao Wang <ytcoode@gmail.com>
  Zenghui Yu <yuzenghui@huawei.com>
  Zhao Ke <ke.zhao@shingroup.cn>
  Zhiquan Li <zhiquan1.li@intel.com>

jobs:
 build-amd64-xsm                                              pass    
 build-arm64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64                                                  pass    
 build-arm64                                                  pass    
 build-armhf                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-arm64-libvirt                                          pass    
 build-armhf-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-pvops                                            pass    
 build-arm64-pvops                                            pass    
 build-armhf-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-amd64-amd64-xl                                          pass    
 test-amd64-coresched-amd64-xl                                pass    
 test-arm64-arm64-xl                                          pass    
 test-armhf-armhf-xl                                          pass    
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm           pass    
 test-amd64-amd64-xl-qemut-stubdom-debianhvm-amd64-xsm        pass    
 test-amd64-amd64-xl-qemut-debianhvm-i386-xsm                 pass    
 test-amd64-amd64-xl-qemuu-debianhvm-i386-xsm                 pass    
 test-amd64-amd64-libvirt-xsm                                 pass    
 test-arm64-arm64-libvirt-xsm                                 fail    
 test-amd64-amd64-xl-xsm                                      pass    
 test-arm64-arm64-xl-xsm                                      fail    
 test-amd64-amd64-qemuu-nested-amd                            fail    
 test-amd64-amd64-xl-pvhv2-amd                                pass    
 test-amd64-amd64-dom0pvh-xl-amd                              pass    
 test-amd64-amd64-xl-qemut-debianhvm-amd64                    pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64                    pass    
 test-amd64-amd64-freebsd11-amd64                             pass    
 test-amd64-amd64-freebsd12-amd64                             pass    
 test-amd64-amd64-xl-qemuu-ovmf-amd64                         pass    
 test-amd64-amd64-xl-qemut-win7-amd64                         fail    
 test-amd64-amd64-xl-qemuu-win7-amd64                         fail    
 test-amd64-amd64-xl-qemut-ws16-amd64                         fail    
 test-amd64-amd64-xl-qemuu-ws16-amd64                         fail    
 test-armhf-armhf-xl-arndale                                  pass    
 test-amd64-amd64-examine-bios                                pass    
 test-amd64-amd64-xl-credit1                                  pass    
 test-arm64-arm64-xl-credit1                                  pass    
 test-armhf-armhf-xl-credit1                                  pass    
 test-amd64-amd64-xl-credit2                                  pass    
 test-arm64-arm64-xl-credit2                                  pass    
 test-armhf-armhf-xl-credit2                                  pass    
 test-amd64-amd64-xl-qemuu-dmrestrict-amd64-dmrestrict        pass    
 test-amd64-amd64-examine                                     pass    
 test-arm64-arm64-examine                                     pass    
 test-armhf-armhf-examine                                     pass    
 test-amd64-amd64-qemuu-nested-intel                          pass    
 test-amd64-amd64-xl-pvhv2-intel                              pass    
 test-amd64-amd64-dom0pvh-xl-intel                            pass    
 test-amd64-amd64-libvirt                                     pass    
 test-armhf-armhf-libvirt                                     fail    
 test-amd64-amd64-xl-multivcpu                                pass    
 test-armhf-armhf-xl-multivcpu                                pass    
 test-amd64-amd64-pair                                        pass    
 test-amd64-amd64-libvirt-pair                                pass    
 test-amd64-amd64-xl-pvshim                                   pass    
 test-amd64-amd64-pygrub                                      pass    
 test-amd64-amd64-libvirt-qcow2                               pass    
 test-armhf-armhf-libvirt-qcow2                               pass    
 test-amd64-amd64-libvirt-raw                                 pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-armhf-armhf-libvirt-raw                                 pass    
 test-amd64-amd64-xl-rtds                                     pass    
 test-armhf-armhf-xl-rtds                                     pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64-shadow             pass    
 test-amd64-amd64-xl-shadow                                   pass    
 test-arm64-arm64-xl-thunderx                                 pass    
 test-amd64-amd64-examine-uefi                                pass    
 test-amd64-amd64-xl-vhd                                      pass    
 test-arm64-arm64-xl-vhd                                      pass    
 test-armhf-armhf-xl-vhd                                      pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary

broken-job test-amd64-amd64-xl-shadow broken

Not pushing.

(No revision log; it would be 12830 lines long.)


From xen-devel-bounces@lists.xenproject.org Wed Jan 10 08:12:36 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 10 Jan 2024 08:12:36 +0000
Received: from list by lists.xenproject.org with outflank-mailman.665321.1035480 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNThN-0004za-Bz; Wed, 10 Jan 2024 08:12:29 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 665321.1035480; Wed, 10 Jan 2024 08:12:29 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNThN-0004zT-9O; Wed, 10 Jan 2024 08:12:29 +0000
Received: by outflank-mailman (input) for mailman id 665321;
 Wed, 10 Jan 2024 08:12:27 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=PEGk=IU=bugseng.com=federico.serafini@srs-se1.protection.inumbo.net>)
 id 1rNThL-0004zL-Td
 for xen-devel@lists.xenproject.org; Wed, 10 Jan 2024 08:12:27 +0000
Received: from support.bugseng.com (mail.bugseng.com [162.55.131.47])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id fcb09ff0-af8f-11ee-9b0f-b553b5be7939;
 Wed, 10 Jan 2024 09:12:25 +0100 (CET)
Received: from [192.168.1.10] (host-79-60-221-62.business.telecomitalia.it
 [79.60.221.62])
 by support.bugseng.com (Postfix) with ESMTPSA id 570934EE073D;
 Wed, 10 Jan 2024 09:12:24 +0100 (CET)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: fcb09ff0-af8f-11ee-9b0f-b553b5be7939
Message-ID: <eb1111f4-5511-4b46-a3ec-3d02ebf68873@bugseng.com>
Date: Wed, 10 Jan 2024 09:12:23 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [XEN RFC] x86/uaccess: remove __{put,get}_user_bad()
To: Jan Beulich <jbeulich@suse.com>
Cc: consulting@bugseng.com, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger.pau@citrix.com>, Wei Liu <wl@xen.org>,
 xen-devel@lists.xenproject.org, Stefano Stabellini <sstabellini@kernel.org>,
 Nicola Vetrini <nicola.vetrini@bugseng.com>,
 Andrew Cooper <andrew.cooper3@citrix.com>, Julien Grall <julien@xen.org>
References: <9cf852da1c03b614bf5010132c58a18adc2a4161.1703155225.git.federico.serafini@bugseng.com>
 <a2050ac1-e205-4d7f-b9b1-aa625136e63a@suse.com>
 <0c5bbfde-4cf0-4878-b1ee-ccc8eb775464@citrix.com>
 <eb53449bd6595ea0931460e62dd57b9c@bugseng.com>
 <1330c757-1ca3-4b07-898b-799cbfa67e8a@suse.com>
 <6a39fe3e-524f-4e39-81bc-ffb3d48ba306@bugseng.com>
 <192c393a-3702-4cc3-af60-e2711098ec6d@suse.com>
 <8fa1f868-c7de-4a46-a827-a75c38513f6f@bugseng.com>
 <19d5c152-3ab7-4762-980b-3570d3a948e4@suse.com>
 <7ecb7703-25c6-4295-946b-7b9aed7b3c67@bugseng.com>
 <05f088cf-4736-40d4-9f4b-1f6120e12a08@suse.com>
Content-Language: en-US, it
From: Federico Serafini <federico.serafini@bugseng.com>
Organization: BUGSENG srl
In-Reply-To: <05f088cf-4736-40d4-9f4b-1f6120e12a08@suse.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

On 08/01/24 15:44, Jan Beulich wrote:
> On 08.01.2024 15:01, Federico Serafini wrote:
>> Additionally, looking at violations of 16.3 on X86 [1],
>> I think we should also consider generate_exception(),
>> ASSERT_UNREACHABLE() and PARSE_ERR_RET() as allowed terminals
>> for a switch-clause, do you agree?
> 
> No, and iirc this was discussed before. ASSERT_UNREACHABLE() is a
> debug-build-only construct, so unsuitable. The other two aren't
> global constructs, and hence shouldn't be deviated globally.
> generate_exception() at least ends in a goto anyway, so why would
> it need special treatment?

This is related to what I said before regarding the fact that Rule 16.3
is a purely syntactic rule.
The goto is within an if statement; the tool is able to considered the
fact that the condition is always true but an explicit configuration is
needed.
Sorry for the late reply.

-- 
Federico Serafini, M.Sc.

Software Engineer, BUGSENG (http://bugseng.com)


From xen-devel-bounces@lists.xenproject.org Wed Jan 10 08:15:02 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 10 Jan 2024 08:15:02 +0000
Received: from list by lists.xenproject.org with outflank-mailman.665325.1035491 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNTjg-0005YL-Op; Wed, 10 Jan 2024 08:14:52 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 665325.1035491; Wed, 10 Jan 2024 08:14:52 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNTjg-0005YE-Lw; Wed, 10 Jan 2024 08:14:52 +0000
Received: by outflank-mailman (input) for mailman id 665325;
 Wed, 10 Jan 2024 08:14:51 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rNTjf-0005Y4-JP; Wed, 10 Jan 2024 08:14:51 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rNTjf-0005a3-Fq; Wed, 10 Jan 2024 08:14:51 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rNTjf-00045M-2S; Wed, 10 Jan 2024 08:14:51 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rNTjf-0002dH-1z; Wed, 10 Jan 2024 08:14:51 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=hqSXFvpRgPBmbcPBioGeuF4uoAWongd4s1Ikp5/gv1w=; b=B6GtL26Y71O4D4fGZvsX+FxEFm
	s/rXL6FumMgexYLHLocVDnTHwbN3whfHxVXRA/OSAUyYX5s68HWZ+QPzaPboSnqN0OYVNmqRQdvwq
	yTjozWfstd3ZaLnUPKxQMT/RHRbUfawdK8kFJTF0fC57a8OTxcr8Ar/zBuo2zuKe1ZtE=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184302-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [ovmf test] 184302: all pass - PUSHED
X-Osstest-Versions-This:
    ovmf=265b4ab91b8a31d6d1760ad1eaa1e16f9244cba7
X-Osstest-Versions-That:
    ovmf=edba0779ba05c0598dbdd32006714fed4fd24ae0
From: osstest service owner <osstest-admin@xenproject.org>
Date: Wed, 10 Jan 2024 08:14:51 +0000

flight 184302 ovmf real [real]
http://logs.test-lab.xenproject.org/osstest/logs/184302/

Perfect :-)
All tests in this flight passed as required
version targeted for testing:
 ovmf                 265b4ab91b8a31d6d1760ad1eaa1e16f9244cba7
baseline version:
 ovmf                 edba0779ba05c0598dbdd32006714fed4fd24ae0

Last test of basis   184300  2024-01-10 01:56:08 Z    0 days
Testing same since   184302  2024-01-10 06:11:07 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Abner Chang <abner.chang@amd.com>

jobs:
 build-amd64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-amd64-amd64-xl-qemuu-ovmf-amd64                         pass    
 test-amd64-i386-xl-qemuu-ovmf-amd64                          pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Pushing revision :

To xenbits.xen.org:/home/xen/git/osstest/ovmf.git
   edba0779ba..265b4ab91b  265b4ab91b8a31d6d1760ad1eaa1e16f9244cba7 -> xen-tested-master


From xen-devel-bounces@lists.xenproject.org Wed Jan 10 08:15:48 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 10 Jan 2024 08:15:48 +0000
Received: from list by lists.xenproject.org with outflank-mailman.665330.1035501 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNTka-00064E-25; Wed, 10 Jan 2024 08:15:48 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 665330.1035501; Wed, 10 Jan 2024 08:15:48 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNTkZ-000645-VQ; Wed, 10 Jan 2024 08:15:47 +0000
Received: by outflank-mailman (input) for mailman id 665330;
 Wed, 10 Jan 2024 08:15:47 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=PcVA=IU=amd.com=Michal.Orzel@srs-se1.protection.inumbo.net>)
 id 1rNTkY-00063s-Sh
 for xen-devel@lists.xenproject.org; Wed, 10 Jan 2024 08:15:47 +0000
Received: from NAM12-BN8-obe.outbound.protection.outlook.com
 (mail-bn8nam12on2060e.outbound.protection.outlook.com
 [2a01:111:f400:fe5b::60e])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 7237ca77-af90-11ee-9b0f-b553b5be7939;
 Wed, 10 Jan 2024 09:15:42 +0100 (CET)
Received: from SN7P222CA0002.NAMP222.PROD.OUTLOOK.COM (2603:10b6:806:124::14)
 by CYYPR12MB8856.namprd12.prod.outlook.com (2603:10b6:930:c0::8) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7159.21; Wed, 10 Jan
 2024 08:15:39 +0000
Received: from SN1PEPF0002636A.namprd02.prod.outlook.com
 (2603:10b6:806:124:cafe::ce) by SN7P222CA0002.outlook.office365.com
 (2603:10b6:806:124::14) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7181.17 via Frontend
 Transport; Wed, 10 Jan 2024 08:15:38 +0000
Received: from SATLEXMB03.amd.com (165.204.84.17) by
 SN1PEPF0002636A.mail.protection.outlook.com (10.167.241.135) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.7181.14 via Frontend Transport; Wed, 10 Jan 2024 08:15:38 +0000
Received: from SATLEXMB05.amd.com (10.181.40.146) by SATLEXMB03.amd.com
 (10.181.40.144) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.34; Wed, 10 Jan
 2024 02:15:37 -0600
Received: from SATLEXMB03.amd.com (10.181.40.144) by SATLEXMB05.amd.com
 (10.181.40.146) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.34; Wed, 10 Jan
 2024 02:15:37 -0600
Received: from [10.252.147.188] (10.180.168.240) by SATLEXMB03.amd.com
 (10.181.40.144) with Microsoft SMTP Server id 15.1.2507.34 via Frontend
 Transport; Wed, 10 Jan 2024 02:15:36 -0600
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 7237ca77-af90-11ee-9b0f-b553b5be7939
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=HzkbwPKq3d2XZdKsP3akhEAXStsU5KayofJ7AhnoHDXYRWi3Tq5ZmQ8s0k9SGL9BfifM5I6t+nAv1Yj8SpDEv2j7mTXRWY0Qk2EMTQKO2QfECXonB/PF/cW+XFIqbu44wGvZRzVP2VIEViLlS7+5pjJPO9G8IPblsqIUORRVDhjY7PEJ03/5PCp0TO1hoQvXhm0XBNw3xDqnyu1hvgTr3rDOmCkrxjDIk+O/bZi0F7Dhs62rGvQ2+v2TqvxCj+UN5m2KL1aaBEczIcvcyFAhd/FU+bYfu4QeCZP6Iu/0c8gOetgXXXoik5NLQLCcxji6lag+MEBgbk3o/EqJm3NjKQ==
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=eJOLcC///zSSpjfavTY1zDBDUVkn+Xb8r3UJY+OGL7g=;
 b=jx4sMqXG3J42g+YxEdaM8jr8lUfdGNFjVu9JaFscgUdka0j+jKCx0gwaTl7sC0UogkDXij+Voyv4YQnnCx0AO15R+YGycLZ9eRSizlVy5snTO+nwAoGFwgro1re5Qdt6TU/CMIU2x6ULFzbk2ZKjKMXUlK4ruyZ+oFIJoWrKEElyw3BixRM5HCqOgv4Gv8/Fq+wyIXxtqRFf0fTyZhW61Skyy7jC1nTLCVFTUkmmomj+ZN4cZ6aOrLceTkLXjuEXoatKx8IbMLBWyHgvEmdm0HSpV7QK+KNrEav0LHxDyt2HEu2Wqlv+r+6grni5nDgzOx3ys7PqCtoisPnTgqSvag==
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)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=eJOLcC///zSSpjfavTY1zDBDUVkn+Xb8r3UJY+OGL7g=;
 b=46i3o4GhpxO+lvUzM+bbDVnc5h0DpynmsIyufhX68ZbQHJGLIDkybzHPUV4uSfxZoyz2euhYvVVQ2rRzOiU2wW9xErrnIO6jQHpPoqcQAy8k7qf9bxvMS10/UZgqET4PDDMdEvZ7j88xJQhdKvjhJPEtIVwFt/G4s6JKt0DWszk=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=SATLEXMB03.amd.com; pr=C
Message-ID: <3aaaa37d-0166-4321-8d3f-38f8ec71a27a@amd.com>
Date: Wed, 10 Jan 2024 09:15:35 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2 4/7] xen/device-tree: Fix bootfdt.c to tolerate 0
 reserved regions
To: Julien Grall <julien@xen.org>, Shawn Anastasio
	<sanastasio@raptorengineering.com>, <xen-devel@lists.xenproject.org>
CC: Timothy Pearson <tpearson@raptorengineering.com>, Jan Beulich
	<jbeulich@suse.com>, Stefano Stabellini <sstabellini@kernel.org>
References: <cover.1702607884.git.sanastasio@raptorengineering.com>
 <1c6f0f94f4ea2b773f960d88bd02e2168ac28abb.1702607884.git.sanastasio@raptorengineering.com>
 <c1c6ee29-7fa1-4b39-aa7a-1b8f750cd893@xen.org>
Content-Language: en-US
From: Michal Orzel <michal.orzel@amd.com>
In-Reply-To: <c1c6ee29-7fa1-4b39-aa7a-1b8f750cd893@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 7bit
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: SN1PEPF0002636A:EE_|CYYPR12MB8856:EE_
X-MS-Office365-Filtering-Correlation-Id: 68c32c16-558f-46ad-c1c2-08dc11b4543e
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam: BCL:0;
X-Microsoft-Antispam-Message-Info:
	L7EvP+37X0peBDrXeZ4RU8XzD5BSWdimxH74CLRpTWGl3mou5ttYXqJp06s0PygA9680ADh1fIpS59CaAHY7F01BJ3vnZRIJz79B68MSOngIxljXxrXeKZM47E6OiXWIBohNv3hj8D6WFjHKc5kuYasAuIYuaCnPJln5hTX/qn/nybwZN00jWrXdicc2wOSNYWW4gmgq0b/LAHPoMh8YMbpFKKIzFpQjkmJRGsRgBSDcBuNLbq6lyU+iNSdyulX81dAwc8obL0CtivHIYUkNOL8AgdMnXttVXCxeYYpD8yuGdQAKxS8Xhhg8+U+p0nh+5O5JVbbnucvNRiXHeyPsDb57sqQrPszsHROZ4e8J6WmEU6oGPOHdN3+CusKmo6/dmSuXmB2CfLaZUZTGsfJTTS8m368cEHpC1m5sPUgqBpyvz2dyp0QBGO6epZN/MrSz83n7OCHCIDq2EBFn/6Ha1WQ/NA24RgK39jDMx3wPlBUqGtPWNwScPkuKWw7fuOoxf0XCjZmZ1GzJLMISddDQPE2kb4YuY51kW1igfHDSIAln/lfDDl1A1K8R1SrHiqUiYQ3YUsG3h+YieUmLQ1u2Rps6pk8UebAxd+kg46X2zpDwG7ekuQZXiHjy9ozG5gcwXH2Fc+vm3eA5pLWYxd2xBnb7kOcYZMBSk6UxbpBEGwB2wRru0Iz8St/H1bF1OeDnqj2hz3y1pmhpsazBclbxSzWLCOHh4wmbHu9pgH0ZRsrLUHb+RLafbMFyQ6zOzd9xfyhb0eD56OuaTZE4vbcWqxBrPz5BJkRdWc0d/6WAPo3GOL3v0lehjbzK3NTmHTMB
X-Forefront-Antispam-Report:
	CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB03.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230031)(4636009)(136003)(346002)(39860400002)(396003)(376002)(230922051799003)(1800799012)(82310400011)(451199024)(64100799003)(186009)(46966006)(40470700004)(36840700001)(26005)(2616005)(478600001)(53546011)(426003)(336012)(36860700001)(83380400001)(54906003)(41300700001)(2906002)(110136005)(70206006)(316002)(16576012)(8936002)(4326008)(44832011)(8676002)(5660300002)(70586007)(356005)(86362001)(82740400003)(81166007)(31696002)(47076005)(36756003)(31686004)(40480700001)(40460700003)(43740500002)(36900700001);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Jan 2024 08:15:38.4170
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 68c32c16-558f-46ad-c1c2-08dc11b4543e
X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB03.amd.com]
X-MS-Exchange-CrossTenant-AuthSource:
	SN1PEPF0002636A.namprd02.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CYYPR12MB8856



On 09/01/2024 19:14, Julien Grall wrote:
> 
> 
> (+ Stefano)
> 
> Hi Shawn,
> 
> On 15/12/2023 02:43, Shawn Anastasio wrote:
>> The early_print_info routine in bootfdt.c incorrectly stores the result
>> of a call to fdt_num_mem_rsv() in an unsigned int, which results in the
>> negative error code being interpreted incorrectly in a subsequent loop
>> in the case where the device tree does not contain any memory reserve
>> map entries.
> 
> I have some trouble to reconciliate the code with your explanation.
> Looking at the implementation fdt_num_mem_rsv() should return 0 if there
> are no reserved regions. A negative value would only be returned if the
> device-tree is malformated.
I agree with Julien. The function takes an offset to reserve map and grabs blocks of type fdt_reserve_entry
from there. In case of no regions, there will be one entry with addr/size 0 which always acts as a termination region.
The only way to return < 0 is when you have a buggy FDT.

> 
> Do you have a Device-Tree where the issue occurs?
> 
> That said, I agree that the code could be hardened.
> 
>>
>> Signed-off-by: Shawn Anastasio <sanastasio@raptorengineering.com>
>> ---
>>   xen/common/device-tree/bootfdt.c | 5 +++--
>>   1 file changed, 3 insertions(+), 2 deletions(-)
>>
>> diff --git a/xen/common/device-tree/bootfdt.c b/xen/common/device-tree/bootfdt.c
>> index ae9fa1e3d6..796ac01c18 100644
>> --- a/xen/common/device-tree/bootfdt.c
>> +++ b/xen/common/device-tree/bootfdt.c
>> @@ -466,7 +466,8 @@ static void __init early_print_info(void)
>>       struct meminfo *mem_resv = &bootinfo.reserved_mem;
>>       struct bootmodules *mods = &bootinfo.modules;
>>       struct bootcmdlines *cmds = &bootinfo.cmdlines;
>> -    unsigned int i, j, nr_rsvd;
>> +    unsigned int i, j;
>> +    int nr_rsvd;
>>
>>       for ( i = 0; i < mi->nr_banks; i++ )
>>           printk("RAM: %"PRIpaddr" - %"PRIpaddr"\n",
>> @@ -481,7 +482,7 @@ static void __init early_print_info(void)
>>                   boot_module_kind_as_string(mods->module[i].kind));
>>
>>       nr_rsvd = fdt_num_mem_rsv(device_tree_flattened);
> 
> If I am correct above, then I think we should panic() rather than trying
> to continue with a buggy DT.
+1. Furthermore, we already call panic in such case in dt_unreserved_regions().

> 
>> -    for ( i = 0; i < nr_rsvd; i++ )
>> +    for ( i = 0; nr_rsvd > 0 && i < nr_rsvd; i++ )
>>       {
>>           paddr_t s, e;
>>
> 
> Cheers,
> 
> --
> Julien Grall
> 

~Michal


From xen-devel-bounces@lists.xenproject.org Wed Jan 10 08:50:06 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 10 Jan 2024 08:50:06 +0000
Received: from list by lists.xenproject.org with outflank-mailman.665338.1035511 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNUHg-0002b4-Ja; Wed, 10 Jan 2024 08:50:00 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 665338.1035511; Wed, 10 Jan 2024 08:50:00 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNUHg-0002ax-Fw; Wed, 10 Jan 2024 08:50:00 +0000
Received: by outflank-mailman (input) for mailman id 665338;
 Wed, 10 Jan 2024 08:49:58 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=6bPZ=IU=amd.com=Jiqian.Chen@srs-se1.protection.inumbo.net>)
 id 1rNUHe-0002ar-Lu
 for xen-devel@lists.xenproject.org; Wed, 10 Jan 2024 08:49:58 +0000
Received: from NAM04-BN8-obe.outbound.protection.outlook.com
 (mail-bn8nam04on20601.outbound.protection.outlook.com
 [2a01:111:f403:2408::601])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 3aee230e-af95-11ee-98f0-6d05b1d4d9a1;
 Wed, 10 Jan 2024 09:49:57 +0100 (CET)
Received: from BL1PR12MB5849.namprd12.prod.outlook.com (2603:10b6:208:384::18)
 by MW5PR12MB5652.namprd12.prod.outlook.com (2603:10b6:303:1a0::15)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7159.23; Wed, 10 Jan
 2024 08:49:53 +0000
Received: from BL1PR12MB5849.namprd12.prod.outlook.com
 ([fe80::bafd:1985:94e6:ef33]) by BL1PR12MB5849.namprd12.prod.outlook.com
 ([fe80::bafd:1985:94e6:ef33%6]) with mapi id 15.20.7181.015; Wed, 10 Jan 2024
 08:49:53 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 3aee230e-af95-11ee-98f0-6d05b1d4d9a1
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=X3RaG42MxSgbLwFSQoNhV+Lk6ILGQS7WhsCB85GXPOeAis0BuZDwjre7g7U9cIgUQ6SoUZlDcykOYOvOj9FVJ2TAr2kykbBs7Wuk0PSlcGfa2QZ0l8D5nGdvlGvZf93RL9d+lO3Az+MXVbclymQYMbvTvABD2b+fkZY8FkPLFXx2an8uOwjiqcaAnRsDTV2D4jg1onzj5ftmIJVVxPwqsVLahHpJk8FpipA2TjTkwAVBotdgAGyNeJFHLMFoHpUW6Z5JBeuY0CEdrro4rTjVuS3ttujhxNMKe0/2V79DB5SoBZ7v637cOazpYK63ZC9+RNXmy2gRi6XY3858D2hOxw==
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=lNC/m6Wg6FaUyMsWgAOZ2EL6+k1/Fx+GZGIBf8QCP+Q=;
 b=k8R75vJ4DK7wlYQ1E7rRg4eFSIHu4abto3v5heySdsRO+A8KZyrr8DPXtBSzmKiPfsiifP3SvXKKHo1M46L3l3TVuVqa5313XBSlxcEOStvSGxLbJ389h4uYK62XEe8ILj4beZXPBFsX7wPPH5cNXzfK3TmZbVWw9urslQmb+T13Z7GAnlil2+1FykAbr/e1ipHr0Fry2hHqFejAO6JxkhXMEtcL6XcvxoESDTZO129MWv52WluD+QIUcEL9bvx9qZZelqz6wW5+U4+P83ucDdM97DTlAwJFIsFMmQRb6CsrAvwqFZ+XvhJrWCyQVNfoGklfrto+p3/VtfAOrt92Zg==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=amd.com; dmarc=pass action=none header.from=amd.com; dkim=pass
 header.d=amd.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=lNC/m6Wg6FaUyMsWgAOZ2EL6+k1/Fx+GZGIBf8QCP+Q=;
 b=ELQXJsqxZTn35I8naNaRHq5WJSbSTpXE4OT6jHInt6IXEFCVkFx4SP7sjPsUUchJDwZsC+5uZj38JBS0KdffMMXCue6EoSNvBkbUCKOrqyR+xm9SJDPvXghii7q+xmgKjoYHEWS2l9hoIHMqFYgjGdwPXwYEuE0BlG4y68swYsA=
From: "Chen, Jiqian" <Jiqian.Chen@amd.com>
To: Jan Beulich <jbeulich@suse.com>, =?utf-8?B?Um9nZXIgUGF1IE1vbm7DqQ==?=
	<roger.pau@citrix.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>, Julien Grall <julien@xen.org>, Anthony PERARD
	<anthony.perard@citrix.com>, Juergen Gross <jgross@suse.com>, "Hildebrand,
 Stewart" <Stewart.Hildebrand@amd.com>, "Huang, Ray" <Ray.Huang@amd.com>,
	Stefano Stabellini <sstabellini@kernel.org>, "Chen, Jiqian"
	<Jiqian.Chen@amd.com>
Subject: Re: [RFC XEN PATCH v4 4/5] domctl: Use gsi to grant/revoke irq
 permission
Thread-Topic: [RFC XEN PATCH v4 4/5] domctl: Use gsi to grant/revoke irq
 permission
Thread-Index:
 AQHaP6Y1pt0ckfKChE+VsjXCWSj8+LDL+oWAgAOnBgCAAGd3gIABof4A//+U/YCAAIregP//iA0AgAH3KYA=
Date: Wed, 10 Jan 2024 08:49:53 +0000
Message-ID:
 <BL1PR12MB584997CDCE9AFF6FEDAD891AE7692@BL1PR12MB5849.namprd12.prod.outlook.com>
References: <20240105070920.350113-1-Jiqian.Chen@amd.com>
 <20240105070920.350113-5-Jiqian.Chen@amd.com>
 <alpine.DEB.2.22.394.2401051702200.3675@ubuntu-linux-20-04-desktop>
 <882bd39a-8a29-4f4f-b64f-765c4858b1c8@suse.com> <ZZwPSZoqyY6g9yhi@macbook>
 <BL1PR12MB58492746170F6BF777901141E76A2@BL1PR12MB5849.namprd12.prod.outlook.com>
 <b4ed7764-a44c-4ac8-bb56-379fdeba16e8@suse.com>
 <BL1PR12MB58490E62825A5B1ACCE605EAE76A2@BL1PR12MB5849.namprd12.prod.outlook.com>
 <d9a363e2-db8d-4c14-af17-9ce02c53f7bf@suse.com>
In-Reply-To: <d9a363e2-db8d-4c14-af17-9ce02c53f7bf@suse.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-ms-exchange-imapappendstamp: IA0PR12MB8932.namprd12.prod.outlook.com
 (15.20.7181.004)
authentication-results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=amd.com;
x-ms-exchange-messagesentrepresentingtype: 1
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: BL1PR12MB5849:EE_|MW5PR12MB5652:EE_
x-ms-office365-filtering-correlation-id: 714c91df-c254-4fbd-3cdb-08dc11b91cfe
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam: BCL:0;
x-microsoft-antispam-message-info:
 OEzgb5TEMj3jDCUMLy3KibbrZf/an+S49ybzFmHmVaqzb5aFpQZ7lrRYK+ms73w/sdOcI7hxVDkJA43SgFEhoRcjs+/LDvX61lM+NrK4YHJ2VPbU1jsZTg7S59qnvKyYn6/tKFrkUg/E9pZupz5URhGrqR9XdOjQqK3ekPzzdrXN8HaVRRvnDU9DwqwiU35CaOnkfy7dSUkxMLDULZEDKto02Z5ATtFQGtx80PbDlNUfISZccIzsTTM2QaaX/ZUZQwpLf1VFbEDrxzKjmKJkc9870hMk4A9gFBn0m0ZdFArpUpi1JpYyer0AFus8hEZE6Kn4+OvJpeh6SQg5vR0XEELrqVsmVTyAGCNAI64ELtJ8nRGI10wVgvC6hPiXOVFNpV5J2ibj0F3MLtL7N96VGwdyglSUopLhm4JL4ZoB4IRGHh97y/o04ZaubDT/dHJiM+BQxMBK+uBjbnfsUESt8be+DXsDY6dTE/umapVPEX8/YUJ6vRVJOGrnufIIn1ADbLHuxVd1Q2uCX3MtYyq5m+Bj7KSm3dtqdrkxq+oHO9JbMx0BS3VzXX6JtZHb07Hbt5+THRpJBzmGwpOd3Ws19HYcUKXSH8VeCCQz2TwARR45d2WBU3MJ3Dq48UhnV2Nf
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BL1PR12MB5849.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230031)(376002)(39860400002)(136003)(396003)(346002)(366004)(230922051799003)(1800799012)(64100799003)(186009)(451199024)(38100700002)(122000001)(38070700009)(55016003)(9686003)(6506007)(71200400001)(7696005)(53546011)(316002)(478600001)(4326008)(52536014)(26005)(76116006)(66556008)(83380400001)(66446008)(64756008)(110136005)(66476007)(33656002)(8676002)(8936002)(66946007)(54906003)(41300700001)(2906002)(5660300002)(7416002);DIR:OUT;SFP:1101;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?utf-8?B?a3ZOSmpmeUNqWTh2R3RmOHNYT0NDdFg1SkRoazlLZmQvVEIxOW01MDhSOWZM?=
 =?utf-8?B?VFkwUkw3WUdMdVdzN1QyUW5pV1BOOGJrL2pqK05ONktmR2ZzbGxBUlY1NFk3?=
 =?utf-8?B?Ujh1VFk0aXF5dC9tMW1STFZQQy9IZUNOalFlQ08yemV0YXdkOThMaGJsNkE3?=
 =?utf-8?B?cXF2cWhPNGdEcmVPTVFrRUN2Q1FsN0I0VDRKREVpcXAyUy9oMStNMmtUalRt?=
 =?utf-8?B?NFdBU1Q1d3VPb3NqZkwzR1lVd2lSTklsYzlRWjlRR09FK3RudjBRUkNrTWN0?=
 =?utf-8?B?ckF5NUZGZm8xelZJZi9hbEhoMjZkcENOYmlFMUt1dUdMYVQ5bGpJSjE0a08x?=
 =?utf-8?B?azVZMzNsZUVpUkJyNFRwSHVZc1RyVmJvTTg1bXBSRkd3bE44WGc1VC8rNS9y?=
 =?utf-8?B?T1ZmeVZudU1DbzhqckFJeW42L0F6eWRRMEdxV25GUnAzMGVxbFV4VndLWXQz?=
 =?utf-8?B?bnhERnlqUUo1R0FJUmtRZFR2SUlzelNDcjc1elFWSWlpQjVEemRHQjJlRE1T?=
 =?utf-8?B?OEc5b1l5b1RQUHE0S3laQjVVdWhHRkhLSlBjYjNFL2pIVThTbnNzYjBYU3Vl?=
 =?utf-8?B?dnFpU1dkMVVBVnJQL3FuWGRuemhDRFNXZCtBdmtkWnNLWjMxWUZQbG5hak9H?=
 =?utf-8?B?LzlHTjJsNG0vNk9MclB1aUYwcXUyL1U2bnlhOUFtc1dRR0ZDYytZNStaS1ZI?=
 =?utf-8?B?ZmhVSTlhT3ZUM3RxUkpGMGprWVNWSHEyTE5qMFR6NmMrVThrVk5FUkliTVIv?=
 =?utf-8?B?bWlvQkxqb2c1Z08vczJHN3BzR1JnRWtFVFY0dUI5TGVTSEdWd3hqREVqdG0x?=
 =?utf-8?B?dzlTN2dCWU1BUlMzQTZWR2Z4dE9nSWdwZC9LNUdaS3B5RWxaaERERDJhNXUz?=
 =?utf-8?B?RTBGbHNmTU81bXBtbVgwdkEyRG4wNUxUdVhveUZmZ2JBVTl6SUFyVVpHSk52?=
 =?utf-8?B?YVRUSEJ1RVdzOThoMVkzcWx6SitVMHVKS1FzNDhjbklSbHMwYklrLzZVQXRl?=
 =?utf-8?B?YWI0c2gxMFV2bEJQekdFUWY3ZHpEdkRlVWtsa3VoU0RYeG1CcCt1SThWb2Vs?=
 =?utf-8?B?bFV6cEgrUkVrZW9jUUFtc24xamRYYm9ndVJDZFVzK005Si9keE1YYVRGOFJB?=
 =?utf-8?B?RHJlTmNUbHdza3Y5UE5iUXgxRE16N3lmR1A5RERFZEc0eXdBMWthN2FyNEJZ?=
 =?utf-8?B?aGdmTFpySlA2bStTQmdxVVpCRHRScmhNVHdQVTFkNnlIc1ptOHZ4Z0RMQUFP?=
 =?utf-8?B?V0N1YytuWmlhem5uUlVBeTdRbzhrME5QUTNwNmwxSThSYUdCRXVVaG5KSDBN?=
 =?utf-8?B?bnNacXd2M0xvSXVOV2Q3U0dKay9HbkhCb1JRYlpsZ3RIYkc3UDhmMDRQUDdy?=
 =?utf-8?B?aVBOZjFEVWlTTmZvd2U3SFR0bkcyMjl0aVRoNnVDZGs4L1lhNS8xd21VOWph?=
 =?utf-8?B?R1Zyd0FnOUNudlJremJLdDV5N3hUYzR0bTA4aE10N2VXdmtHK0tYMDF0TUx2?=
 =?utf-8?B?WlA3QW4rZEUxMEhZTmYwV1U4RWRHaVZvdkw0bGNKS0dZVFR1YnZVTndKTFhV?=
 =?utf-8?B?R1ZDUnY0bXZQdlZncnZ5dGxBZGhUZ3lzZmVySWhuNmVkZTFRK1dzL1daZXJk?=
 =?utf-8?B?WWJDM2FiNW1lU2FEMVpVazF3WExSYzM0ZUZpVldkbDB4S1M4R0xMOTVjNGh4?=
 =?utf-8?B?OFJJVWpkdEx1K1FjK0FTamhJY082dHI3cVZRa3ZKRmNvblI5eGZJamFkVVVo?=
 =?utf-8?B?S0Z1bnFjbzdEQXJHaWJlTXBzSEg0U0tkOFE5TkJOMHNObUlGQ0RRRGFuYVo3?=
 =?utf-8?B?NElHK1VwNFFERVFUSFRFV1JiRllaelZZaVFDS2l4ZzlRa2NSNXRJR09hcWxt?=
 =?utf-8?B?ZDlOUW43NVFHUWp3UFBBMnp0QzA3QzZRbysxVzd5MzNvYzgwb292akFqc3Zm?=
 =?utf-8?B?amJFQnV6dGRSTGhxTkdRalo3Smw5R0RTMU5LZUszb2grOW01TnB3VTQ1Zjhq?=
 =?utf-8?B?bzJFM3JENlN4YlZVNTdHU0JYenhVTkpMVmgxWkNjNUNxSDhSeDl0em1zUWVE?=
 =?utf-8?B?eWc4M0pubWV5VFN2Y2puSUFOVFIzVnEyeENTMVpkMndFUDZONlhabW5DTUti?=
 =?utf-8?Q?lMIg=3D?=
Content-Type: text/plain; charset="utf-8"
Content-ID: <2F3D38CCEAAC794AACB0AB7E05F82668@amdcloud.onmicrosoft.com>
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: BL1PR12MB5849.namprd12.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 714c91df-c254-4fbd-3cdb-08dc11b91cfe
X-MS-Exchange-CrossTenant-originalarrivaltime: 10 Jan 2024 08:49:53.2276
 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 3dd8961f-e488-4e60-8e11-a82d994e183d
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: o32zMU9YzKVUNOT+BDQznVFnU+g9BV7Vo+rei5FXMrOGQ+2g6PGBIUexAxzba+xWX8ObxCcjkv0OTMcSGeN/iw==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW5PR12MB5652

VGhhbmsgSmFuIGFuZCBSb2dlciwgSSBtYXkga25vdyBob3cgdG8gYWRkIGEgbmV3IGh5cGVyY2Fs
bCBYRU5fRE9NQ1RMX2dzaV9wZXJtaXNzaW9uLCBJIHdpbGwgaW1wbGVtZW50IGl0IGluIG5leHQg
dmVyc2lvbi4NCg0KT24gMjAyNC8xLzkgMTg6NDYsIEphbiBCZXVsaWNoIHdyb3RlOg0KPiBPbiAw
OS4wMS4yMDI0IDExOjE2LCBDaGVuLCBKaXFpYW4gd3JvdGU6DQo+PiBPbiAyMDI0LzEvOSAxNzoz
OCwgSmFuIEJldWxpY2ggd3JvdGU6DQo+Pj4gT24gMDkuMDEuMjAyNCAwOToxOCwgQ2hlbiwgSmlx
aWFuIHdyb3RlOg0KPj4+PiBBIG5ldyBoeXBlcmNhbGwgdXNpbmcgZm9yIGdyYW50aW5nIGdzaT8g
SWYgc28sIGhvdyBkb2VzIHRoZSBjYWxsZXIga25vdyB0byBjYWxsIHdoaWNoIGh5cGVyY2FsbCB0
byBncmFudCBwZXJtaXNzaW9uLCBYRU5fRE9NQ1RMX2lycV9wZXJtaXNzaW9uIG9yIHRoYXQgbmV3
IGh5cGVyY2FsbD8NCj4+Pg0KPj4+IEVpdGhlciB3ZSBhZGQgYSBmZWF0dXJlIGluZGljYXRvciwg
b3IgdGhlIGNhbGxlciBzaW1wbHkgdHJpZXMgdGhlDQo+Pj4gbmV3IEdTSSBpbnRlcmZhY2UgZmly
c3QuDQo+PiBJIGFtIHN0aWxsIG5vdCBzdXJlIGhvdyB0byB1c2UgYW5kIGltcGxlbWVudCBpdC4N
Cj4+IFRha2luZyBwY2lfYWRkX2RtX2RvbmUgYXMgYW4gZXhhbXBsZSwgZm9yIG5vdyBpdHMgaW1w
bGVtZW50YXRpb24gaXM6DQo+PiBwY2lfYWRkX2RtX2RvbmUNCj4+IAl4Y19waHlzZGV2X21hcF9w
aXJxDQo+PiAJeGNfZG9tYWluX2lycV9wZXJtaXNzaW9uKCwscGlycSwpDQo+PiAJCVhFTl9ET01D
VExfaXJxX3Blcm1pc3Npb24NCj4+DQo+PiBBbmQgYXNzdW1lIHRoZSBuZXcgaHlwZXJjYWxsIGlz
IFhFTl9ET01DVExfZ3NpX3Blcm1pc3Npb24sIGRvIHlvdSBtZWFuOg0KPj4gcGNpX2FkZF9kbV9k
b25lDQo+PiAJeGNfcGh5c2Rldl9tYXBfcGlycQ0KPj4gCXJldCA9IHhjX2RvbWFpbl9nc2lfcGVy
bWlzc2lvbigsLGdzaSwpDQo+PiAJCVhFTl9ET01DVExfZ3NpX3Blcm1pc3Npb24NCj4+IAlpZiAo
IHJldCAhPSAwICkNCj4+IAkJeGNfZG9tYWluX2lycV9wZXJtaXNzaW9uKCwscGlycSwpDQo+PiAJ
CQlYRU5fRE9NQ1RMX2lycV9wZXJtaXNzaW9uDQo+IA0KPiBObywgZmFsbGluZyBiYWNrIHNob3Vs
ZG4ndCBiZSAiYmxpbmQiLiBGYWxsYmFjayBzaG91bGQgb25seSBoYXBwZW4NCj4gd2hlbiB0aGUg
bmV3IHN1Yi1vcCBpc24ndCBpbXBsZW1lbnRlZCAoaGVuY2Ugd2h5IGEgZmVhdHVyZSBpbmRpY2F0
b3INCj4gbWF5IGJlIG5lY2Vzc2FyeSksIGFuZCBvbmx5IGlmIGNhbGxpbmcgdGhlIGV4aXN0aW5n
IHN1Yi1vcCBwcm9taXNlcw0KPiB0byBiZSB1c2VmdWwgKHdoaWNoIGlpcmMgd291bGQgbGltaXQg
dGhhdCB0byB0aGUgUFYgRG9tMCBjYXNlKS4NCj4gDQo+PiBCdXQgaWYgc28sIEkgaGF2ZSBhIHF1
ZXN0aW9uIHRoYXQgaW4gWEVOX0RPTUNUTF9nc2lfcGVybWlzc2lvbiwgd2hlbiB0byBmYWlsIGFu
ZCB3aGVuIHRvIHN1Y2Nlc3M/DQo+IA0KPiBJJ20gYWZyYWlkIEkgZG9uJ3QgdW5kZXJzdGFuZCB0
aGUgcXVlc3Rpb24uIEJlaGF2aW9yIHRoZXJlIGlzbid0IHRvDQo+IGJlIGZ1bmRhbWVudGFsbHkg
ZGlmZmVyZW50IGZyb20gdGhhdCBmb3IgWEVOX0RPTUNUTF9pcnFfcGVybWlzc2lvbi4NCj4gSXQn
cyBqdXN0IHRoYXQgdGhlIGluY29taW5nIHZhbHVlIGlzIGluIGFub3RoZXIgdmFsdWUgc3BhY2Uu
DQo+IA0KPj4gT3IgZG8geW91IG1lYW46DQo+PiBwY2lfYWRkX2RtX2RvbmUNCj4+IAl4Y19waHlz
ZGV2X21hcF9waXJxDQo+PiAJcmV0ID0geGNfZG9tYWluX2lycV9wZXJtaXNzaW9uKCwscGlycSwp
DQo+PiAJCVhFTl9ET01DVExfaXJxX3Blcm1pc3Npb24NCj4+IAlpZiAoIHJldCAhPSAwICkNCj4+
IAkJeGNfZG9tYWluX2dzaV9wZXJtaXNzaW9uKCwsZ3NpLCkNCj4+IAkJCVhFTl9ET01DVExfZ3Np
X3Blcm1pc3Npb24NCj4gDQo+IE5vLCB0aGlzIGxvb2tzIHRoZSB3cm9uZyB3YXkgcm91bmQuDQo+
IA0KPj4gQW5kIGluIFhFTl9ET01DVExfZ3NpX3Blcm1pc3Npb24sIGFzIGxvbmcgYXMgdGhlIGN1
cnJlbnQgZG9tYWluIGhhcyB0aGUgYWNjZXNzIG9mIGdzaSwgdGhlbiBncmFudGluZyBnc2kgdG8g
Y2FsbGVyIHNob3VsZCBiZSBzdWNjZXNzZnVsLiBSaWdodD8NCj4gDQo+IEkgdGhpbmsgc287IHNl
ZSBhYm92ZS4NCj4gDQo+IEphbg0KDQotLSANCkJlc3QgcmVnYXJkcywNCkppcWlhbiBDaGVuLg0K


From xen-devel-bounces@lists.xenproject.org Wed Jan 10 08:51:41 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 10 Jan 2024 08:51:41 +0000
Received: from list by lists.xenproject.org with outflank-mailman.665344.1035521 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNUJI-00041r-3r; Wed, 10 Jan 2024 08:51:40 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 665344.1035521; Wed, 10 Jan 2024 08:51:40 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNUJH-00041k-WF; Wed, 10 Jan 2024 08:51:40 +0000
Received: by outflank-mailman (input) for mailman id 665344;
 Wed, 10 Jan 2024 08:51:38 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=oG7w=IU=damsy.net=pierre-eric@srs-se1.protection.inumbo.net>)
 id 1rNUJF-00041Y-1D
 for xen-devel@lists.xenproject.org; Wed, 10 Jan 2024 08:51:38 +0000
Received: from mail.damsy.net (mail.damsy.net [85.90.245.9])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 7502a26c-af95-11ee-9b0f-b553b5be7939;
 Wed, 10 Jan 2024 09:51:34 +0100 (CET)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 7502a26c-af95-11ee-9b0f-b553b5be7939
Message-ID: <c986f552-60b8-471a-a439-a8714936fa47@damsy.net>
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=damsy.net; s=201803;
	t=1704876692;
	h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
	 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=S2fvswJdo6J2JGwBNLrVoFk8Od2kF+yoajWWFUZHpYc=;
	b=aTvUsh2dkUxkLjC/FCfYwnMc4ThKi/NCM4KFDN40SLKaQCKF8chQGcOEKEg2gu0H+7cQ1+
	GmUSflL7JueR4sdoBDJX+fa/WqGg4lLJ2Jxqgt71sRXqQdM7GNpka+K8ozn4+j8F6I1wcQ
	s73s2Sri1Kh6I0L9NmlPS0Ii4jCvIfevg9iD5IO4SYicXTpWZsM82UU9e8/meoY3u0kQvw
	yTNhaSIL1XlRE2DlvPGlhV+LU+Dv51B8sjRvT5v1mGhO32ofX476Pxhg6okpC4f5OewRI6
	OLVx387dpB5U22sezxNImTFouZOI6xX+Li0nDA5ZPurOK3+4D3yaHzTUrREfiw==
Date: Wed, 10 Jan 2024 09:51:31 +0100
MIME-Version: 1.0
Subject: Re: [PATCH v6 07/11] virtio-gpu: Handle resource blob commands
From: Pierre-Eric Pelloux-Prayer <pierre-eric@damsy.net>
To: Huang Rui <ray.huang@amd.com>, Akihiko Odaki <akihiko.odaki@daynix.com>,
 =?UTF-8?Q?Marc-Andr=C3=A9_Lureau?= <marcandre.lureau@gmail.com>,
 =?UTF-8?Q?Philippe_Mathieu-Daud=C3=A9?= <philmd@linaro.org>,
 Gerd Hoffmann <kraxel@redhat.com>, "Michael S . Tsirkin" <mst@redhat.com>,
 Stefano Stabellini <sstabellini@kernel.org>,
 Anthony PERARD <anthony.perard@citrix.com>,
 Antonio Caggiano <quic_acaggian@quicinc.com>,
 "Dr . David Alan Gilbert" <dgilbert@redhat.com>,
 Robert Beckett <bob.beckett@collabora.com>,
 Dmitry Osipenko <dmitry.osipenko@collabora.com>,
 Gert Wollny <gert.wollny@collabora.com>, =?UTF-8?Q?Alex_Benn=C3=A9e?=
 <alex.bennee@linaro.org>, qemu-devel@nongnu.org
Cc: xen-devel@lists.xenproject.org,
 Gurchetan Singh <gurchetansingh@chromium.org>, ernunes@redhat.com,
 Alyssa Ross <hi@alyssa.is>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger.pau@citrix.com>, Alex Deucher <alexander.deucher@amd.com>,
 Stefano Stabellini <stefano.stabellini@amd.com>,
 =?UTF-8?Q?Christian_K=C3=B6nig?= <christian.koenig@amd.com>,
 Xenia Ragiadakou <xenia.ragiadakou@amd.com>,
 Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com>,
 Honglei Huang <honglei1.huang@amd.com>, Julia Zhang <julia.zhang@amd.com>,
 Chen Jiqian <Jiqian.Chen@amd.com>,
 Antonio Caggiano <antonio.caggiano@collabora.com>
References: <20231219075320.165227-1-ray.huang@amd.com>
 <20231219075320.165227-8-ray.huang@amd.com>
 <ccc34ce0-44af-425e-8634-6f7a0583ee12@damsy.net>
Content-Language: fr
In-Reply-To: <ccc34ce0-44af-425e-8634-6f7a0583ee12@damsy.net>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit



Le 09/01/2024 à 17:50, Pierre-Eric Pelloux-Prayer a écrit :
> 
> 
> Le 19/12/2023 à 08:53, Huang Rui a écrit :
>> From: Antonio Caggiano <antonio.caggiano@collabora.com>
>>
>> Support BLOB resources creation, mapping and unmapping by calling the
>> new stable virglrenderer 0.10 interface. Only enabled when available and
>> via the blob config. E.g. -device virtio-vga-gl,blob=true
>>
>> Signed-off-by: Antonio Caggiano <antonio.caggiano@collabora.com>
>> Signed-off-by: Dmitry Osipenko <dmitry.osipenko@collabora.com>
>> Signed-off-by: Xenia Ragiadakou <xenia.ragiadakou@amd.com>
>> Signed-off-by: Huang Rui <ray.huang@amd.com>
>> ---
>>
>> Changes in v6:
>> - Use new struct virgl_gpu_resource.
>> - Unmap, unref and destroy the resource only after the memory region
>>    has been completely removed.
>> - In unref check whether the resource is still mapped.
>> - In unmap_blob check whether the resource has been already unmapped.
>> - Fix coding style
>>
>>   hw/display/virtio-gpu-virgl.c | 274 +++++++++++++++++++++++++++++++++-
>>   hw/display/virtio-gpu.c       |   4 +-
>>   meson.build                   |   4 +
>>   3 files changed, 276 insertions(+), 6 deletions(-)
>>
>> diff --git a/hw/display/virtio-gpu-virgl.c b/hw/display/virtio-gpu-virgl.c
>> index faab374336..5a3a292f79 100644
>> --- a/hw/display/virtio-gpu-virgl.c
>> +++ b/hw/display/virtio-gpu-virgl.c
>> @@ -17,6 +17,7 @@
>>   #include "trace.h"
>>   #include "hw/virtio/virtio.h"
>>   #include "hw/virtio/virtio-gpu.h"
>> +#include "hw/virtio/virtio-gpu-bswap.h"
>>   #include "ui/egl-helpers.h"
>> @@ -24,8 +25,62 @@
>>   struct virgl_gpu_resource {
>>       struct virtio_gpu_simple_resource res;
>> +    uint32_t ref;
>> +    VirtIOGPU *g;
>> +
>> +#ifdef HAVE_VIRGL_RESOURCE_BLOB
>> +    /* only blob resource needs this region to be mapped as guest mmio */
>> +    MemoryRegion *region;
>> +#endif
>>   };
>> +static void vres_get_ref(struct virgl_gpu_resource *vres)
>> +{
>> +    uint32_t ref;
>> +
>> +    ref = qatomic_fetch_inc(&vres->ref);
>> +    g_assert(ref < INT_MAX);
>> +}
>> +
>> +static void virgl_resource_destroy(struct virgl_gpu_resource *vres)
>> +{
>> +    struct virtio_gpu_simple_resource *res;
>> +    VirtIOGPU *g;
>> +
>> +    if (!vres) {
>> +        return;
>> +    }
>> +
>> +    g = vres->g;
>> +    res = &vres->res;
>> +    QTAILQ_REMOVE(&g->reslist, res, next);
>> +    virtio_gpu_cleanup_mapping(g, res);
>> +    g_free(vres);
>> +}
>> +
>> +static void virgl_resource_unref(struct virgl_gpu_resource *vres)
>> +{
>> +    struct virtio_gpu_simple_resource *res;
>> +
>> +    if (!vres) {
>> +        return;
>> +    }
>> +
>> +    res = &vres->res;
>> +    virgl_renderer_resource_detach_iov(res->resource_id, NULL, NULL);
>> +    virgl_renderer_resource_unref(res->resource_id);
>> +}
>> +
>> +static void vres_put_ref(struct virgl_gpu_resource *vres)
>> +{
>> +    g_assert(vres->ref > 0);
>> +
>> +    if (qatomic_fetch_dec(&vres->ref) == 1) {
>> +        virgl_resource_unref(vres);
>> +        virgl_resource_destroy(vres);
>> +    }
>> +}
>> +
>>   static struct virgl_gpu_resource *
>>   virgl_gpu_find_resource(VirtIOGPU *g, uint32_t resource_id)
>>   {
>> @@ -59,6 +114,8 @@ static void virgl_cmd_create_resource_2d(VirtIOGPU *g,
>>                                          c2d.width, c2d.height);
>>       vres = g_new0(struct virgl_gpu_resource, 1);
>> +    vres_get_ref(vres);
>> +    vres->g = g;
>>       vres->res.width = c2d.width;
>>       vres->res.height = c2d.height;
>>       vres->res.format = c2d.format;
>> @@ -91,6 +148,8 @@ static void virgl_cmd_create_resource_3d(VirtIOGPU *g,
>>                                          c3d.width, c3d.height, c3d.depth);
>>       vres = g_new0(struct virgl_gpu_resource, 1);
>> +    vres_get_ref(vres);
>> +    vres->g = g;
>>       vres->res.width = c3d.width;
>>       vres->res.height = c3d.height;
>>       vres->res.format = c3d.format;
>> @@ -126,12 +185,21 @@ static void virgl_cmd_resource_unref(VirtIOGPU *g,
>>           return;
>>       }
>> -    virgl_renderer_resource_detach_iov(unref.resource_id, NULL, NULL);
>> -    virgl_renderer_resource_unref(unref.resource_id);
>> +#ifdef HAVE_VIRGL_RESOURCE_BLOB
>> +    if (vres->region) {
>> +        VirtIOGPUBase *b = VIRTIO_GPU_BASE(g);
>> +        MemoryRegion *mr = vres->region;
>> +
>> +        warn_report("%s: blob resource %d not unmapped",
>> +                    __func__, unref.resource_id);
>> +        vres->region = NULL;
> 
> Shouldn't there be a call to memory_region_unref(mr)?
> 
>> +        memory_region_set_enabled(mr, false);
>> +        memory_region_del_subregion(&b->hostmem, mr);
>> +        object_unparent(OBJECT(mr));
>> +    }
>> +#endif /* HAVE_VIRGL_RESOURCE_BLOB */
>> -    QTAILQ_REMOVE(&g->reslist, &vres->res, next);
>> -    virtio_gpu_cleanup_mapping(g, &vres->res);
>> -    g_free(vres);
>> +    vres_put_ref(vres);
>>   }
>>   static void virgl_cmd_context_create(VirtIOGPU *g,
>> @@ -470,6 +538,191 @@ static void virgl_cmd_get_capset(VirtIOGPU *g,
>>       g_free(resp);
>>   }
>> +#ifdef HAVE_VIRGL_RESOURCE_BLOB
>> +
>> +static void virgl_resource_unmap(struct virgl_gpu_resource *vres)
>> +{
>> +    if (!vres) {
>> +        return;
>> +    }
>> +
>> +    virgl_renderer_resource_unmap(vres->res.resource_id);
>> +
>> +    vres_put_ref(vres);
>> +}
>> +
>> +static void virgl_resource_blob_async_unmap(void *obj)
>> +{
>> +    MemoryRegion *mr = MEMORY_REGION(obj);
>> +    struct virgl_gpu_resource *vres = mr->opaque;
>> +
>> +    virgl_resource_unmap(vres);
>> +
>> +    g_free(obj);
>> +}
>> +
>> +static void virgl_cmd_resource_create_blob(VirtIOGPU *g,
>> +                                           struct virtio_gpu_ctrl_command *cmd)
>> +{
>> +    struct virgl_gpu_resource *vres;
>> +    struct virtio_gpu_resource_create_blob cblob;
>> +    struct virgl_renderer_resource_create_blob_args virgl_args = { 0 };
>> +    int ret;
>> +
>> +    VIRTIO_GPU_FILL_CMD(cblob);
>> +    virtio_gpu_create_blob_bswap(&cblob);
>> +    trace_virtio_gpu_cmd_res_create_blob(cblob.resource_id, cblob.size);
>> +
>> +    if (cblob.resource_id == 0) {
>> +        qemu_log_mask(LOG_GUEST_ERROR, "%s: resource id 0 is not allowed\n",
>> +                      __func__);
>> +        cmd->error = VIRTIO_GPU_RESP_ERR_INVALID_RESOURCE_ID;
>> +        return;
>> +    }
>> +
>> +    vres = virgl_gpu_find_resource(g, cblob.resource_id);
>> +    if (vres) {
>> +        qemu_log_mask(LOG_GUEST_ERROR, "%s: resource already exists %d\n",
>> +                      __func__, cblob.resource_id);
>> +        cmd->error = VIRTIO_GPU_RESP_ERR_INVALID_RESOURCE_ID;
>> +        return;
>> +    }
>> +
>> +    vres = g_new0(struct virgl_gpu_resource, 1);
>> +    vres_get_ref(vres);
>> +    vres->g = g;
>> +    vres->res.resource_id = cblob.resource_id;
>> +    vres->res.blob_size = cblob.size;
>> +
>> +    if (cblob.blob_mem != VIRTIO_GPU_BLOB_MEM_HOST3D) {
>> +        ret = virtio_gpu_create_mapping_iov(g, cblob.nr_entries, sizeof(cblob),
>> +                                            cmd, &vres->res.addrs,
>> +                                            &vres->res.iov, &vres->res.iov_cnt);
>> +        if (!ret) {
>> +            g_free(vres);
>> +            cmd->error = VIRTIO_GPU_RESP_ERR_UNSPEC;
>> +            return;
>> +        }
>> +    }
>> +
>> +    QTAILQ_INSERT_HEAD(&g->reslist, &vres->res, next);
>> +
>> +    virgl_args.res_handle = cblob.resource_id;
>> +    virgl_args.ctx_id = cblob.hdr.ctx_id;
>> +    virgl_args.blob_mem = cblob.blob_mem;
>> +    virgl_args.blob_id = cblob.blob_id;
>> +    virgl_args.blob_flags = cblob.blob_flags;
>> +    virgl_args.size = cblob.size;
>> +    virgl_args.iovecs = vres->res.iov;
>> +    virgl_args.num_iovs = vres->res.iov_cnt;
>> +
>> +    ret = virgl_renderer_resource_create_blob(&virgl_args);
>> +    if (ret) {
>> +        qemu_log_mask(LOG_GUEST_ERROR, "%s: virgl blob create error: %s\n",
>> +                      __func__, strerror(-ret));
>> +        cmd->error = VIRTIO_GPU_RESP_ERR_UNSPEC;
>> +    }
>> +}
>> +
>> +static void virgl_cmd_resource_map_blob(VirtIOGPU *g,
>> +                                        struct virtio_gpu_ctrl_command *cmd)
>> +{
>> +    struct virgl_gpu_resource *vres;
>> +    struct virtio_gpu_resource_map_blob mblob;
>> +    int ret;
>> +    void *data;
>> +    uint64_t size;
>> +    struct virtio_gpu_resp_map_info resp;
>> +    VirtIOGPUBase *b = VIRTIO_GPU_BASE(g);
>> +
>> +    VIRTIO_GPU_FILL_CMD(mblob);
>> +    virtio_gpu_map_blob_bswap(&mblob);
>> +
>> +    if (mblob.resource_id == 0) {
>> +        qemu_log_mask(LOG_GUEST_ERROR, "%s: resource id 0 is not allowed\n",
>> +                      __func__);
>> +        cmd->error = VIRTIO_GPU_RESP_ERR_INVALID_RESOURCE_ID;
>> +        return;
>> +    }
>> +
>> +    vres = virgl_gpu_find_resource(g, mblob.resource_id);
>> +    if (!vres) {
>> +        qemu_log_mask(LOG_GUEST_ERROR, "%s: resource does not exist %d\n",
>> +                      __func__, mblob.resource_id);
>> +        cmd->error = VIRTIO_GPU_RESP_ERR_INVALID_RESOURCE_ID;
>> +        return;
>> +    }
>> +    if (vres->region) {
>> +        qemu_log_mask(LOG_GUEST_ERROR, "%s: resource already mapped %d\n",
>> +                      __func__, mblob.resource_id);
>> +        cmd->error = VIRTIO_GPU_RESP_ERR_INVALID_RESOURCE_ID;
>> +        return;
>> +    }
>> +
>> +    ret = virgl_renderer_resource_map(vres->res.resource_id, &data, &size);
>> +    if (ret) {
>> +        qemu_log_mask(LOG_GUEST_ERROR, "%s: resource map error: %s\n",
>> +                      __func__, strerror(-ret));
>> +        cmd->error = VIRTIO_GPU_RESP_ERR_INVALID_RESOURCE_ID;
>> +        return;
>> +    }
>> +
>> +    vres_get_ref(vres);
> 
> Why is this needed? And if it is, shouldn't virgl_cmd_resource_unmap_blob
> call "vres_put_ref(vres)" ?
> 
>> +    vres->region = g_new0(MemoryRegion, 1);
>> +    memory_region_init_ram_ptr(vres->region, OBJECT(g), NULL, size, data);
>> +    vres->region->opaque = vres;
>> +    OBJECT(vres->region)->free = virgl_resource_blob_async_unmap;
>> +    memory_region_add_subregion(&b->hostmem, mblob.offset, vres->region);
>> +    memory_region_set_enabled(vres->region, true);
>> +
>> +    memset(&resp, 0, sizeof(resp));
>> +    resp.hdr.type = VIRTIO_GPU_RESP_OK_MAP_INFO;
>> +    virgl_renderer_resource_get_map_info(mblob.resource_id, &resp.map_info);
>> +    virtio_gpu_ctrl_response(g, cmd, &resp.hdr, sizeof(resp));
>> +}
>> +
>> +static void virgl_cmd_resource_unmap_blob(VirtIOGPU *g,
>> +                                          struct virtio_gpu_ctrl_command *cmd)
>> +{
>> +    struct virgl_gpu_resource *vres;
>> +    struct virtio_gpu_resource_unmap_blob ublob;
>> +    VirtIOGPUBase *b = VIRTIO_GPU_BASE(g);
>> +    MemoryRegion *mr;
>> +
>> +    VIRTIO_GPU_FILL_CMD(ublob);
>> +    virtio_gpu_unmap_blob_bswap(&ublob);
>> +
>> +    if (ublob.resource_id == 0) {
>> +        qemu_log_mask(LOG_GUEST_ERROR, "%s: resource id 0 is not allowed\n",
>> +                      __func__);
>> +        cmd->error = VIRTIO_GPU_RESP_ERR_INVALID_RESOURCE_ID;
>> +        return;
>> +    }
>> +
>> +    vres = virgl_gpu_find_resource(g, ublob.resource_id);
>> +    if (!vres) {
>> +        qemu_log_mask(LOG_GUEST_ERROR, "%s: resource does not exist %d\n",
>> +                      __func__, ublob.resource_id);
>> +        cmd->error = VIRTIO_GPU_RESP_ERR_INVALID_RESOURCE_ID;
>> +        return;
>> +    }
>> +
>> +    if (!vres->region) {
>> +        qemu_log_mask(LOG_GUEST_ERROR, "%s: resource already unmapped %d\n",
>> +                      __func__, ublob.resource_id);
>> +        cmd->error = VIRTIO_GPU_RESP_ERR_INVALID_RESOURCE_ID;
>> +        return;
>> +    }
>> +
>> +    mr = vres->region;
>> +    vres->region = NULL;
> 
> memory_region_unref(mr)?
> 
> Note that AFAICT without the added memory_region_unref() calls virgl_resource_unmap()
> was never called.


Xenia and I figured out the refcounting issue: this code is written based on the
assumption that:
  
    object_unparent(OBJECT(mr));


Will decrement the refcount. But this assumption is only true if mr->parent_obj.parent
is non-NULL.

The map_blob function uses the following arguments:

    memory_region_init_ram_ptr(vres->region, OBJECT(g), NULL, size, data);

Since name is NULL, mr won't be added as a child of 'g' and thus object_unparent()
does nothing.

I'd suggest 2 changes:
    * use a name ("blob_memory"?) to so mr can be a child of g
    * increment mr's refcount when setting vres->region and decrement it when clearing it.
      This change is not needed technically but when a variable is refcounted it seems
      clearer to increment/decrement the refcount in these situations.


Pierre-Eric


> 
>> +    memory_region_set_enabled(mr, false);
>> +    memory_region_del_subregion(&b->hostmem, mr);
>> +    object_unparent(OBJECT(mr));
>> +}
>> +
>> +#endif /* HAVE_VIRGL_RESOURCE_BLOB */
>> +
>>   void virtio_gpu_virgl_process_cmd(VirtIOGPU *g,
>>                                         struct virtio_gpu_ctrl_command *cmd)
>>   {
>> @@ -536,6 +789,17 @@ void virtio_gpu_virgl_process_cmd(VirtIOGPU *g,
>>       case VIRTIO_GPU_CMD_GET_EDID:
>>           virtio_gpu_get_edid(g, cmd);
>>           break;
>> +#ifdef HAVE_VIRGL_RESOURCE_BLOB
>> +    case VIRTIO_GPU_CMD_RESOURCE_CREATE_BLOB:
>> +        virgl_cmd_resource_create_blob(g, cmd);
>> +        break;
>> +    case VIRTIO_GPU_CMD_RESOURCE_MAP_BLOB:
>> +        virgl_cmd_resource_map_blob(g, cmd);
>> +        break;
>> +    case VIRTIO_GPU_CMD_RESOURCE_UNMAP_BLOB:
>> +        virgl_cmd_resource_unmap_blob(g, cmd);
>> +        break;
>> +#endif /* HAVE_VIRGL_RESOURCE_BLOB */
>>       default:
>>           cmd->error = VIRTIO_GPU_RESP_ERR_UNSPEC;
>>           break;
>> diff --git a/hw/display/virtio-gpu.c b/hw/display/virtio-gpu.c
>> index 4c3ec9d0ea..8189c392dc 100644
>> --- a/hw/display/virtio-gpu.c
>> +++ b/hw/display/virtio-gpu.c
>> @@ -1449,10 +1449,12 @@ void virtio_gpu_device_realize(DeviceState *qdev, Error **errp)
>>               return;
>>           }
>> +#ifndef HAVE_VIRGL_RESOURCE_BLOB
>>           if (virtio_gpu_virgl_enabled(g->parent_obj.conf)) {
>> -            error_setg(errp, "blobs and virgl are not compatible (yet)");
>> +            error_setg(errp, "Linked virglrenderer does not support blob resources");
>>               return;
>>           }
>> +#endif
>>       }
>>       if (!virtio_gpu_base_device_realize(qdev,
>> diff --git a/meson.build b/meson.build
>> index ea52ef1b9c..629407128e 100644
>> --- a/meson.build
>> +++ b/meson.build
>> @@ -1054,6 +1054,10 @@ if not get_option('virglrenderer').auto() or have_system or have_vhost_user_gpu
>>                            cc.has_function('virgl_renderer_context_create_with_flags',
>>                                            prefix: '#include <virglrenderer.h>',
>>                                            dependencies: virgl))
>> +    config_host_data.set('HAVE_VIRGL_RESOURCE_BLOB',
>> +                         cc.has_function('virgl_renderer_resource_create_blob',
>> +                                         prefix: '#include <virglrenderer.h>',
>> +                                         dependencies: virgl))
>>     endif
>>   endif
>>   rutabaga = not_found
> 


From xen-devel-bounces@lists.xenproject.org Wed Jan 10 09:11:03 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 10 Jan 2024 09:11:03 +0000
Received: from list by lists.xenproject.org with outflank-mailman.665350.1035530 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNUbx-0007as-7I; Wed, 10 Jan 2024 09:10:57 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 665350.1035530; Wed, 10 Jan 2024 09:10:57 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNUbx-0007al-4i; Wed, 10 Jan 2024 09:10:57 +0000
Received: by outflank-mailman (input) for mailman id 665350;
 Wed, 10 Jan 2024 09:10:55 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=/O5u=IU=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rNUbv-0007af-Tj
 for xen-devel@lists.xenproject.org; Wed, 10 Jan 2024 09:10:55 +0000
Received: from mail-lj1-x229.google.com (mail-lj1-x229.google.com
 [2a00:1450:4864:20::229])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 287626c3-af98-11ee-98f0-6d05b1d4d9a1;
 Wed, 10 Jan 2024 10:10:54 +0100 (CET)
Received: by mail-lj1-x229.google.com with SMTP id
 38308e7fff4ca-2cd7e429429so2033681fa.1
 for <xen-devel@lists.xenproject.org>; Wed, 10 Jan 2024 01:10:54 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 y16-20020a02c010000000b0046b656f4618sm1181290jai.111.2024.01.10.01.10.51
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 10 Jan 2024 01:10:53 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 287626c3-af98-11ee-98f0-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1704877854; x=1705482654; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:from:to:cc:subject:date:message-id:reply-to;
        bh=JIQQBubYknC3wI0uWH6IRtt9CNL3HhXNugwo3F4kwuw=;
        b=Th0SWsoVWliuErKUTfNRJgxCoIOq0Ng+Oli42aPPv8mezN2d12Mjs9C2j6hpE+eAiw
         euBVbCmJyWRQRAzcMZ/Ghf3yp/I2UODDLF9nQ77KAqstcct7qAj2UgHWGA83QfD+QidP
         R03qmI/iCH6JcAORiuZArZHMvFWi1SwsNlS4SqUy4SOvGWDqXQ2ly1aTinGHN2IR36ca
         YiCVR67Rt2mbolLXoG5/Ssxs7E0X5giRrabyx2LYl8FlwRjg+HDsjMKvcyfd3sylhIX+
         fqUUEGx1aVNvXEtw6Kn8pYFQ1xQHc8e8Whlruf1uaWRSvTOo5rb2zRhDD7UZAAR2DOH+
         SwdQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704877854; x=1705482654;
        h=content-transfer-encoding:in-reply-to:autocrypt:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to;
        bh=JIQQBubYknC3wI0uWH6IRtt9CNL3HhXNugwo3F4kwuw=;
        b=BvP2ZRxwenHLGhAugn6Y6FJkPycdgjfIKuyltKRcwqKASSL5MfGzSi828eJwC0/D3S
         5WoTrVzGHz1h5NBe6SCfwM5K11K2JvskbkJCUby2TK8uN8rmXaucgUb2FCRRgEpRpXcP
         ojymmBJiCNywalU8OyZc93lcJi6VBvowb2OB/wUs4PBLSXluNp/w8+z37lTTC0XYyC8a
         lTpbSyUtX1rNckkV/6A7TQI1ZpS7NiroAjpukBF8IkCEhI/JrCkLbbKZftoG10hbCj1W
         yhvWZ5AWyduA0UxyOu5VDkCv9ii/EqYqhE7i/pKDl46Ainwc6SkNv+Ib6sxWnV0Oi+xL
         9slA==
X-Gm-Message-State: AOJu0Yz0Qr4OEpe0LvsGAeJftVdZ7sgf2GlCzaS7/PlXlQsMnhKMOnM8
	FHH54SshDGBE7cx7Y7cjeUjHhU9YvsY1
X-Google-Smtp-Source: AGHT+IFRuv8tjbbC2tMZ5XIUhZXPjTQQbVhwAzKO8freRZx1GNyFue+lR3gnermPYoZkNkZ8sSYQrw==
X-Received: by 2002:a2e:930d:0:b0:2cc:e48d:d0f3 with SMTP id e13-20020a2e930d000000b002cce48dd0f3mr401916ljh.79.1704877853985;
        Wed, 10 Jan 2024 01:10:53 -0800 (PST)
Message-ID: <0f7c4c1a-5c20-4e89-bef9-2ebd02c0b141@suse.com>
Date: Wed, 10 Jan 2024 10:10:49 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v5 09/13] xen: add cache coloring allocator for domains
To: Stefano Stabellini <sstabellini@kernel.org>
Cc: Carlo Nonato <carlo.nonato@minervasys.tech>, Julien Grall
 <julien@xen.org>, Bertrand Marquis <bertrand.marquis@arm.com>,
 Michal Orzel <michal.orzel@amd.com>,
 Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
 Andrew Cooper <andrew.cooper3@citrix.com>,
 George Dunlap <george.dunlap@citrix.com>, Wei Liu <wl@xen.org>,
 Marco Solieri <marco.solieri@minervasys.tech>, xen-devel@lists.xenproject.org
References: <20240102095138.17933-1-carlo.nonato@minervasys.tech>
 <20240102095138.17933-10-carlo.nonato@minervasys.tech>
 <7fbe9526-60cf-4844-8b48-58ab69ec1b29@suse.com>
 <alpine.DEB.2.22.394.2401091637160.3675@ubuntu-linux-20-04-desktop>
Content-Language: en-US
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <alpine.DEB.2.22.394.2401091637160.3675@ubuntu-linux-20-04-desktop>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 10.01.2024 01:46, Stefano Stabellini wrote:
> On Tue, 9 Jan 2024, Jan Beulich wrote:
>> On 02.01.2024 10:51, Carlo Nonato wrote:
>>> This commit adds a new memory page allocator that implements the cache
>>> coloring mechanism. The allocation algorithm enforces equal frequency
>>> distribution of cache partitions, following the coloring configuration of a
>>> domain. This allows an even utilization of cache sets for every domain.
>>>
>>> Pages are stored in a color-indexed array of lists. Those lists are filled
>>> by a simple init function which computes the color of each page.
>>> When a domain requests a page, the allocator extract the page from the list
>>> with the maximum number of free pages between those that the domain can
>>> access, given its coloring configuration.
>>>
>>> The allocator can only handle requests of order-0 pages. This allows for
>>> easier implementation and since cache coloring targets only embedded systems,
>>> it's assumed not to be a major problem.
>>
>> I'm curious about the specific properties of embedded systems that makes
>> the performance implications of deeper page walks less of an issue for
>> them.
> 
> I think Carlo meant to say that embedded systems tend to have a smaller
> amount of RAM (our boards today have 4-8GB of total memory). So higher
> level allocations (2MB/1GB) might not be possible.
> 
> Also, domains that care about interrupt latency tend to be RTOSes (e.g.
> Zephyr, FreeRTOS) and RTOSes are happy to run with less than 1MB of
> total memory available. This is so true that I vaguely remember hitting
> a bug in xl/libxl when I tried to create a domain with 128KB of memory. 
> 
> 
>> Nothing is said about address-constrained allocations. Are such entirely
>> of no interest to domains on Arm, not even to Dom0 (e.g. for filling
>> Linux'es swiotlb)?
> 
> Cache coloring is useful if you can use an IOMMU with all the
> dma-capable devices. If that is not the case, then not even Dom0 would
> be able to boot with cache coloring enabled (because it wouldn't be 1:1
> mapped).
> 
> On ARM we only support booting Dom0 1:1 mapped, or not-1:1-mapped but
> relying on the IOMMU.

So another constraint to be enforced both at the Kconfig level and at
runtime? That said, Linux'es swiotlb allocation can't know whether an
IOMMU is in use by Xen. If something like that was done in a Dom0, the
respective allocations still wouldn't really work correctly (and the
kernel may or may not choke on this).

Jan


From xen-devel-bounces@lists.xenproject.org Wed Jan 10 09:53:42 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 10 Jan 2024 09:53:42 +0000
Received: from list by lists.xenproject.org with outflank-mailman.665355.1035540 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNVH1-0005qA-9Q; Wed, 10 Jan 2024 09:53:23 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 665355.1035540; Wed, 10 Jan 2024 09:53:23 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNVH1-0005q3-6s; Wed, 10 Jan 2024 09:53:23 +0000
Received: by outflank-mailman (input) for mailman id 665355;
 Wed, 10 Jan 2024 09:53:21 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=sd/G=IU=cloud.com=roger.pau@srs-se1.protection.inumbo.net>)
 id 1rNVGz-0005pv-JS
 for xen-devel@lists.xenproject.org; Wed, 10 Jan 2024 09:53:21 +0000
Received: from mail-lf1-x12d.google.com (mail-lf1-x12d.google.com
 [2a00:1450:4864:20::12d])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 15f4f44f-af9e-11ee-98f0-6d05b1d4d9a1;
 Wed, 10 Jan 2024 10:53:20 +0100 (CET)
Received: by mail-lf1-x12d.google.com with SMTP id
 2adb3069b0e04-50ea8fbf261so4354215e87.2
 for <xen-devel@lists.xenproject.org>; Wed, 10 Jan 2024 01:53:20 -0800 (PST)
Received: from localhost ([213.195.127.70]) by smtp.gmail.com with ESMTPSA id
 27-20020a170906329b00b00a1f738318a5sm1901045ejw.155.2024.01.10.01.53.18
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 10 Jan 2024 01:53:18 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 15f4f44f-af9e-11ee-98f0-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1704880399; x=1705485199; darn=lists.xenproject.org;
        h=content-transfer-encoding:mime-version:message-id:date:subject:cc
         :to:from:from:to:cc:subject:date:message-id:reply-to;
        bh=p+kGDEShAPonD+n+34963/25SPoZWCCdyFb4vVFLXDs=;
        b=F8uvFMZoy3VU2l+QgZQRQ/p3TpX8T1FepRdstQ3MuJePp0NIBxIVHqsxaS3OB0tNIr
         eC83FhgkUmU5MOp7ohmLdCyGXIlllKQk4FRCaY8Wu6DFy86mhBHHUdZEb1QkzaOTWAYi
         E/o93iuRwWHfA11HzLJ8ujaI5wjLimbjgBEqQ=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704880399; x=1705485199;
        h=content-transfer-encoding:mime-version:message-id:date:subject:cc
         :to:from:x-gm-message-state:from:to:cc:subject:date:message-id
         :reply-to;
        bh=p+kGDEShAPonD+n+34963/25SPoZWCCdyFb4vVFLXDs=;
        b=Pl4miAC8fV2ofv/fIuD7hOWruV1MXdul/da+i3xndw3snYeOwlscY10Hn8cM8I+Hz9
         mh8Lb365ZM/6DHfsm7CwWurraCnznVRwkEuGjsiYNvST/81kM36G+qiwFRhRA8/gY3b0
         OzK8vztdOxOD5lJA0sFY2DyQHtJ9rlRYiwIqdxaEdOcsUEZ3NE0zybflQ4JFne2YFCZt
         6r9nKgX3MrmCKZhpZWMSlKE4+yB7orkOhF6xikAj9lWw96Xol4QeyY28c4vdUic4JR2W
         n1LPfcnM19NhDx4WCc2gczlNQPukALHDqyaAwEqjVGnByTlY2OMjTqy8EZHZdzP43TtR
         badw==
X-Gm-Message-State: AOJu0YyA/22ZUstx9b4Sgp6updIrs/XiUhIS1d5H8zm/lK3YiC8pIbAm
	L5uxXJ6sDchLvtqXDmCiOoCuAyq8HCuoxTyxDhbLv2uQFiI=
X-Google-Smtp-Source: AGHT+IEeQ9ocrsopLi6w/XBsgMFVPTLEh6EvakQssCnOAoUnQBYTFPdiPaZZsNcZjBxi0M+Nzmx+yA==
X-Received: by 2002:a05:6512:2215:b0:50e:709e:dee1 with SMTP id h21-20020a056512221500b0050e709edee1mr341062lfu.96.1704880399125;
        Wed, 10 Jan 2024 01:53:19 -0800 (PST)
From: Roger Pau Monne <roger.pau@citrix.com>
To: xen-devel@lists.xenproject.org
Cc: Roger Pau Monne <roger.pau@citrix.com>,
	Wei Liu <wl@xen.org>,
	Anthony PERARD <anthony.perard@citrix.com>,
	Juergen Gross <jgross@suse.com>,
	=?UTF-8?q?Marek=20Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>,
	Jan Beulich <jbeulich@suse.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>
Subject: [PATCH] x86/hvm: don't expose XENFEAT_hvm_pirqs by default
Date: Wed, 10 Jan 2024 10:53:11 +0100
Message-ID: <20240110095311.61809-1-roger.pau@citrix.com>
X-Mailer: git-send-email 2.43.0
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

The HVM pirq feature allows routing interrupts from both physical and emulated
devices over event channels, this was done a performance improvement.  However
its usage is fully undocumented, and the only reference implementation is in
Linux.  It defeats the purpose of local APIC hardware virtualization, because
when using it interrupts avoid the usage of the local APIC altogether.

It has also been reported to not work properly with certain devices, at least
when using some AMD GPUs Linux attempts to route interrupts over event
channels, but Xen doesn't correctly detect such routing, which leads to the
hypervisor complaining with:

(XEN) d15v0: Unsupported MSI delivery mode 7 for Dom15

When MSIs are attempted to be routed over event channels the entry delivery
mode is set to ExtINT, but Xen doesn't detect such routing and attempts to
inject the interrupt following the native MSI path, and the ExtINT delivery
mode is not supported.

Disable HVM PIRQs by default and provide a per-domain option in xl.cfg to
enable such feature.  Also for backwards compatibility keep the feature enabled
for any resumed domains that don't have an explicit selection.

Note that the only user of the feature (Linux) is also able to handle native
interrupts fine, as the feature was already not used if Xen reported local APIC
hardware virtualization active.

Link: https://github.com/QubesOS/qubes-issues/issues/7971
Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
---
 docs/man/xl.cfg.5.pod.in          |  7 +++++++
 tools/include/libxl.h             |  7 +++++++
 tools/libs/light/libxl_create.c   |  7 +++++--
 tools/libs/light/libxl_types.idl  |  1 +
 tools/libs/light/libxl_x86.c      | 11 ++++++++---
 tools/python/xen/lowlevel/xc/xc.c |  4 +++-
 tools/xl/xl_parse.c               |  1 +
 xen/arch/x86/domain.c             |  4 +++-
 8 files changed, 35 insertions(+), 7 deletions(-)

diff --git a/docs/man/xl.cfg.5.pod.in b/docs/man/xl.cfg.5.pod.in
index 2e234b450efb..ea8d41727d8e 100644
--- a/docs/man/xl.cfg.5.pod.in
+++ b/docs/man/xl.cfg.5.pod.in
@@ -2460,6 +2460,13 @@ The viridian option can be specified as a boolean. A value of true (1)
 is equivalent to the list [ "defaults" ], and a value of false (0) is
 equivalent to an empty list.
 
+=item B<hvm_pirq=BOOLEAN>
+
+Select whether the guest is allowed to route interrupts from devices (either
+emulated or passed through) over event channels.
+
+This option is disabled by default.
+
 =back
 
 =head3 Emulated VGA Graphics Device
diff --git a/tools/include/libxl.h b/tools/include/libxl.h
index 907aa0a3303a..f1652b1664f0 100644
--- a/tools/include/libxl.h
+++ b/tools/include/libxl.h
@@ -608,6 +608,13 @@
  * executable in order to not run it as the same user as libxl.
  */
 
+/*
+ * LIBXL_HAVE_HVM_PIRQ indicates the presence of the u.hvm.pirq filed in
+ * libxl_domain_build_info that signals whether an HVM guest has accesses to
+ * the XENFEAT_hvm_pirqs feature.
+ */
+#define LIBXL_HAVE_HVM_PIRQ 1
+
 /*
  * libxl memory management
  *
diff --git a/tools/libs/light/libxl_create.c b/tools/libs/light/libxl_create.c
index ce1d43110336..0008fac607e3 100644
--- a/tools/libs/light/libxl_create.c
+++ b/tools/libs/light/libxl_create.c
@@ -376,6 +376,7 @@ int libxl__domain_build_info_setdefault(libxl__gc *gc,
         libxl_defbool_setdefault(&b_info->u.hvm.usb,                false);
         libxl_defbool_setdefault(&b_info->u.hvm.vkb_device,         true);
         libxl_defbool_setdefault(&b_info->u.hvm.xen_platform_pci,   true);
+        libxl_defbool_setdefault(&b_info->u.hvm.pirq,               false);
 
         libxl_defbool_setdefault(&b_info->u.hvm.spice.enable, false);
         if (!libxl_defbool_val(b_info->u.hvm.spice.enable) &&
@@ -2375,10 +2376,12 @@ int libxl_domain_create_restore(libxl_ctx *ctx, libxl_domain_config *d_config,
 
     /*
      * When restoring (either from a save file or for a migration domain) set
-     * the MSR relaxed mode for compatibility with older Xen versions if the
-     * option is not set as part of the original configuration.
+     * the MSR relaxed mode and HVM PIRQs for compatibility with older Xen
+     * versions if the options are not set as part of the original
+     * configuration.
      */
     libxl_defbool_setdefault(&d_config->b_info.arch_x86.msr_relaxed, true);
+    libxl_defbool_setdefault(&d_config->b_info.u.hvm.pirq, true);
 
     return do_domain_create(ctx, d_config, domid, restore_fd, send_back_fd,
                             params, ao_how, aop_console_how);
diff --git a/tools/libs/light/libxl_types.idl b/tools/libs/light/libxl_types.idl
index 7d8bd5d21667..899ad3096926 100644
--- a/tools/libs/light/libxl_types.idl
+++ b/tools/libs/light/libxl_types.idl
@@ -692,6 +692,7 @@ libxl_domain_build_info = Struct("domain_build_info",[
                                        ("rdm", libxl_rdm_reserve),
                                        ("rdm_mem_boundary_memkb", MemKB),
                                        ("mca_caps",         uint64),
+                                       ("pirq",             libxl_defbool),
                                        ])),
                  ("pv", Struct(None, [("kernel", string, {'deprecated_by': 'kernel'}),
                                       ("slack_memkb", MemKB),
diff --git a/tools/libs/light/libxl_x86.c b/tools/libs/light/libxl_x86.c
index d16573e72cd4..79c7c11e30b0 100644
--- a/tools/libs/light/libxl_x86.c
+++ b/tools/libs/light/libxl_x86.c
@@ -9,6 +9,8 @@ int libxl__arch_domain_prepare_config(libxl__gc *gc,
     switch(d_config->c_info.type) {
     case LIBXL_DOMAIN_TYPE_HVM:
         config->arch.emulation_flags = (XEN_X86_EMU_ALL & ~XEN_X86_EMU_VPCI);
+        if (!libxl_defbool_val(d_config->b_info.u.hvm.pirq))
+            config->arch.emulation_flags &= ~XEN_X86_EMU_USE_PIRQ;
         break;
     case LIBXL_DOMAIN_TYPE_PVH:
         config->arch.emulation_flags = XEN_X86_EMU_LAPIC;
@@ -864,15 +866,18 @@ void libxl__arch_update_domain_config(libxl__gc *gc,
                                       const libxl_domain_config *src)
 {
     /*
-     * Force MSR relaxed to be set (either to true or false) so it's part of
-     * the domain configuration when saving or performing a live-migration.
+     * Force MSR relaxed and HVM pirq to be set (either to true or false) so
+     * it's part of the domain configuration when saving or performing a
+     * live-migration.
      *
-     * Doing so allows the recovery side to figure out whether the flag should
+     * Doing so allows the recovery side to figure out whether the flags should
      * be set to true in order to keep backwards compatibility with already
      * started domains.
      */
     libxl_defbool_setdefault(&dst->b_info.arch_x86.msr_relaxed,
                     libxl_defbool_val(src->b_info.arch_x86.msr_relaxed));
+    libxl_defbool_setdefault(&dst->b_info.u.hvm.pirq,
+                             libxl_defbool_val(src->b_info.u.hvm.pirq));
 }
 
 /*
diff --git a/tools/python/xen/lowlevel/xc/xc.c b/tools/python/xen/lowlevel/xc/xc.c
index d3ea350e07b9..9feb12ae2b16 100644
--- a/tools/python/xen/lowlevel/xc/xc.c
+++ b/tools/python/xen/lowlevel/xc/xc.c
@@ -159,7 +159,9 @@ static PyObject *pyxc_domain_create(XcObject *self,
 
 #if defined (__i386) || defined(__x86_64__)
     if ( config.flags & XEN_DOMCTL_CDF_hvm )
-        config.arch.emulation_flags = (XEN_X86_EMU_ALL & ~XEN_X86_EMU_VPCI);
+        config.arch.emulation_flags = XEN_X86_EMU_ALL &
+                                      ~(XEN_X86_EMU_VPCI |
+                                        XEN_X86_EMU_USE_PIRQ);
 #elif defined (__arm__) || defined(__aarch64__)
     config.arch.gic_version = XEN_DOMCTL_CONFIG_GIC_NATIVE;
 #else
diff --git a/tools/xl/xl_parse.c b/tools/xl/xl_parse.c
index ed983200c3f8..9b358f11b88e 100644
--- a/tools/xl/xl_parse.c
+++ b/tools/xl/xl_parse.c
@@ -1801,6 +1801,7 @@ void parse_config_data(const char *config_source,
         xlu_cfg_get_defbool(config, "hpet", &b_info->u.hvm.hpet, 0);
         xlu_cfg_get_defbool(config, "vpt_align", &b_info->u.hvm.vpt_align, 0);
         xlu_cfg_get_defbool(config, "apic", &b_info->apic, 0);
+        xlu_cfg_get_defbool(config, "hvm_pirq", &b_info->u.hvm.pirq, 0);
 
         switch (xlu_cfg_get_list(config, "viridian",
                                  &viridian, &num_viridian, 1))
diff --git a/xen/arch/x86/domain.c b/xen/arch/x86/domain.c
index 8a31d18f6967..bda853e3c92b 100644
--- a/xen/arch/x86/domain.c
+++ b/xen/arch/x86/domain.c
@@ -725,7 +725,9 @@ static bool emulation_flags_ok(const struct domain *d, uint32_t emflags)
              emflags != (X86_EMU_VPCI | X86_EMU_LAPIC | X86_EMU_IOAPIC) )
             return false;
         if ( !is_hardware_domain(d) &&
-             emflags != (X86_EMU_ALL & ~X86_EMU_VPCI) &&
+             /* HVM PIRQ feature is user-selectable. */
+             (emflags & ~X86_EMU_USE_PIRQ) !=
+             (X86_EMU_ALL & ~(X86_EMU_VPCI | X86_EMU_USE_PIRQ)) &&
              emflags != X86_EMU_LAPIC )
             return false;
     }
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Wed Jan 10 10:00:33 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 10 Jan 2024 10:00:33 +0000
Received: from list by lists.xenproject.org with outflank-mailman.665362.1035550 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNVNj-00085r-3C; Wed, 10 Jan 2024 10:00:19 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 665362.1035550; Wed, 10 Jan 2024 10:00:19 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNVNj-00085k-0e; Wed, 10 Jan 2024 10:00:19 +0000
Received: by outflank-mailman (input) for mailman id 665362;
 Wed, 10 Jan 2024 10:00:18 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=/O5u=IU=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rNVNi-00085e-6a
 for xen-devel@lists.xenproject.org; Wed, 10 Jan 2024 10:00:18 +0000
Received: from mail-lj1-x22d.google.com (mail-lj1-x22d.google.com
 [2a00:1450:4864:20::22d])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 0db80bc0-af9f-11ee-9b0f-b553b5be7939;
 Wed, 10 Jan 2024 11:00:16 +0100 (CET)
Received: by mail-lj1-x22d.google.com with SMTP id
 38308e7fff4ca-2cd703e9014so13876191fa.1
 for <xen-devel@lists.xenproject.org>; Wed, 10 Jan 2024 02:00:16 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 ci7-20020a056e02360700b0035fc82879a4sm1146264ilb.45.2024.01.10.02.00.13
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 10 Jan 2024 02:00:15 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 0db80bc0-af9f-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1704880815; x=1705485615; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:from:to:cc:subject:date:message-id:reply-to;
        bh=MtsbeRNRVsJjHFzJqpM0BeFTrra42tXbUWFiQVGdZGw=;
        b=ddgaEu0n97ENBC1S/NgATJnyYs+i5GMCyThxvrf/5NhoE+ogZ/+kESkoyap576IC7J
         PVNWT1+jXYe5xhwKdirG7l/YWwgqzYjCefXH4iJXO63Spw+ZlvsguB7lce3RN3BfiOhB
         U4xZscKD4YtjO/QstWeEYspxzmHvzeYEoQQemrpspU3CLxgD+TC/ABKbjb79mH5eIeU8
         G6eLF9whXUS+sPtYObNdiCdSnRrqwHxjPTlDXt8finDeEQ7OPsNgCZiOqYtS4lx2ihxP
         d6MOFiHyRx6Q+sCn/Klbp1n81nynKoY7zFULfZuhYbMcY4mek+BkHx9L5P339SkrBIbx
         2/RA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704880815; x=1705485615;
        h=content-transfer-encoding:in-reply-to:autocrypt:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to;
        bh=MtsbeRNRVsJjHFzJqpM0BeFTrra42tXbUWFiQVGdZGw=;
        b=KtzEICYRzka2jkSlXX4fXO8nGvjLW5LDJLi48SOhv/Uj1dVhRKgkbOO8/7gbBnuFXG
         RZRbEQ1aUJncbidAI2r0DW45pizYXYCYqlyBQOtceJtL3fe88tG3mJi+2usFYQ2KG2iS
         4gbfjZBuN9fT9xHL82yenDsDb4ShLLiqDldoXR1jEOeoR7GcGWREZUPAxWnDyUHbDoKC
         2lnS27T5ZN0MQoErq+CJoq1DoF+iD9iNxob8In8Hxr/VwY1ZZuCKpGI9w8G8MR078Hz9
         U+WNGQC/Jw4GLP5u89ugSpQnOtvZ8x5jvThjRsQZyrm/eAgKmq2YbBcALXf2eE3CsIzZ
         BTdw==
X-Gm-Message-State: AOJu0Yy95Cn6WcyUa7vV3EEIWDRTqgVFj7opVwSlnRv00kzZKj2NgeKv
	UfbTEyXWVdIRKihobs8ITqrNhbUcrd7h
X-Google-Smtp-Source: AGHT+IHqTVBPPBy1nnc9v9CsEZ1sLQ9MmsPf9wdh1h3p4vMStNoNJB7mi0VwNIpWSn+rgmAmPSUo8Q==
X-Received: by 2002:a05:651c:1025:b0:2cc:eae4:b3f6 with SMTP id w5-20020a05651c102500b002cceae4b3f6mr428711ljm.44.1704880815610;
        Wed, 10 Jan 2024 02:00:15 -0800 (PST)
Message-ID: <2b3063ec-adad-45fc-908e-8c8680efb2ed@suse.com>
Date: Wed, 10 Jan 2024 11:00:12 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v12 07/15] rangeset: add rangeset_purge() function
To: Stewart Hildebrand <stewart.hildebrand@amd.com>
Cc: Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
 Andrew Cooper <andrew.cooper3@citrix.com>,
 George Dunlap <george.dunlap@citrix.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>,
 xen-devel@lists.xenproject.org
References: <20240109215145.430207-1-stewart.hildebrand@amd.com>
 <20240109215145.430207-8-stewart.hildebrand@amd.com>
Content-Language: en-US
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <20240109215145.430207-8-stewart.hildebrand@amd.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 09.01.2024 22:51, Stewart Hildebrand wrote:
> From: Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>
> 
> This function can be used when user wants to remove all rangeset
> entries but do not want to destroy rangeset itself.
> 
> Signed-off-by: Volodymyr Babchuk <volodymyr_babchuk@epam.com>
> Signed-off-by: Stewart Hildebrand <stewart.hildebrand@amd.com>

Acked-by: Jan Beulich <jbeulich@suse.com>




From xen-devel-bounces@lists.xenproject.org Wed Jan 10 10:21:23 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 10 Jan 2024 10:21:23 +0000
Received: from list by lists.xenproject.org with outflank-mailman.665368.1035561 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNVi0-0003YX-P9; Wed, 10 Jan 2024 10:21:16 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 665368.1035561; Wed, 10 Jan 2024 10:21:16 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNVi0-0003YQ-MU; Wed, 10 Jan 2024 10:21:16 +0000
Received: by outflank-mailman (input) for mailman id 665368;
 Wed, 10 Jan 2024 10:21:15 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=ZsbY=IU=gmail.com=morel.dav@srs-se1.protection.inumbo.net>)
 id 1rNVhz-0003YK-Go
 for xen-devel@lists.xenproject.org; Wed, 10 Jan 2024 10:21:15 +0000
Received: from mail-wr1-f49.google.com (mail-wr1-f49.google.com
 [209.85.221.49]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id fb581298-afa1-11ee-98f0-6d05b1d4d9a1;
 Wed, 10 Jan 2024 11:21:13 +0100 (CET)
Received: by mail-wr1-f49.google.com with SMTP id
 ffacd0b85a97d-3376f71fcbbso2308379f8f.1
 for <xen-devel@lists.xenproject.org>; Wed, 10 Jan 2024 02:21:13 -0800 (PST)
Received: from raton (lfbn-idf1-1-1403-15.w90-79.abo.wanadoo.fr. [90.79.94.15])
 by smtp.gmail.com with ESMTPSA id
 s13-20020adff80d000000b003365fc41bcasm4525034wrp.51.2024.01.10.02.21.12
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 10 Jan 2024 02:21:12 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: fb581298-afa1-11ee-98f0-6d05b1d4d9a1
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704882073; x=1705486873;
        h=in-reply-to:content-transfer-encoding:content-disposition
         :mime-version:references:message-id:subject:cc:to:from:date
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=/7w3augA3ckRPjd0e2yLAGmRwiyIEM+qyF93sj3I01A=;
        b=lppBdXKW2iAuLvu+xMl8WnCVzHYjRZdvK+G7ujg0iKvMxgUw6m5CD79WyZ3d3kn900
         Oplzclm3SHDv69IETxcGB0gY/gjrQd9Ibv5ybXCkeY1AZ/80u44PFjDL13VrNd+/BQK3
         xodIt/niAfGkqm/dPWIe264oPjMH+01hxjaXNkV3JVpzrBx1deY1JXW2KJgJQzvVJOar
         Aced6ljHXhd96GiaKHnpOpxXoUPQtk1wYUnA6mSEXQDwxQlYqfcPxGqIWfez5lkjrWu8
         H2t1ucq57W85xAyvauE6vG10UlXYu9kl5R3RIMoOtQaHuMk+tgdBhb15tQf0iA1m43KL
         KvCQ==
X-Gm-Message-State: AOJu0YzpVVbpIECCVvFlf1SM72Y5fHD3fgf8axIoHP7EciwN4KlJHfr4
	ybdx9evPmjTm/EDUsscBv8c=
X-Google-Smtp-Source: AGHT+IH9CMKWMU/0UJIIUnGi0NR+l5q1B4BDlYPDaInNLBQySrc9QoL2T/DxqNXECJbRvH5Q0BKVQw==
X-Received: by 2002:a5d:4ccb:0:b0:336:c52b:e282 with SMTP id c11-20020a5d4ccb000000b00336c52be282mr333180wrt.203.1704882072933;
        Wed, 10 Jan 2024 02:21:12 -0800 (PST)
Date: Wed, 10 Jan 2024 11:21:06 +0100
From: David Morel <david.morel@vates.tech>
To: Stefano Stabellini <sstabellini@kernel.org>
Cc: xen-devel@lists.xenproject.org, xenia.ragiadakou@amd.com,
	andrew.cooper3@citrix.com, Jan Beulich <jbeulich@suse.com>,
	Roger Pau =?iso-8859-1?Q?Monn=E9?= <roger.pau@citrix.com>,
	Juergen Gross <jgross@suse.com>
Subject: Re: AMD EPYC VM to VM performance investigation
Message-ID: <ZZ5vkr0Qx0h_iO5D@raton>
References: <ZZbSIH_pGjaQr5x-@raton>
 <alpine.DEB.2.22.394.2401041624500.1322202@ubuntu-linux-20-04-desktop>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <alpine.DEB.2.22.394.2401041624500.1322202@ubuntu-linux-20-04-desktop>

On Thu, Jan 04, 2024 at 16:39:46PM, Stefano Stabellini wrote:
> On Thu, 4 Jan 2024, David Morel wrote:
> > Hello,
> > 
> > We have a customer and multiple users on our forum having performances that
> > seems quite low related to the general performance of the machines on AMD EPYC
> > Zen hosts when doing VM to VM networking.
> 
> By "VM to VM networking" I take you mean VM-to-VM on the same host using
> PV network?
> 
> 
> > Below you'll find a write up about what we had a look at and what's in the
> > TODO on our side, but in the meantime we would like to ask here for some
> > feedback, suggestions and possible leads.
> > 
> > To sum up, the VM to VM performance on Zen generation server CPUs seems quite
> > low, and only minimally scaling when adding threads. They are outperformed by
> > 10 year old AMD desktop cpu and pretty low frequency XEON bronze from 2014.
> > CPU usage does not seem to be the limiting factor as neither the VM threads or
> > the kthreads on host seems to go to a 100% cpu usage.
> > 
> > As we're Vates, I'm talking about XCP-ng here, so Xen 4.13.5 and a dom0 kernel
> > 4.19. I did try a Xen 4.18-rc2 and kernel 6.1.56 on a Zen4 epyc, but as it was
> > borrowed from a colleague I was unsure of the setup, so although it was
> > actually worse than on my other test setups, I would not consider that a
> > complete validation the issues is also present on recent Xen versions.
> 
> I think it might be difficult to triage this if you are working on a
> Xen/Linux version that is so different from upstream
I ran some tests on a Xen 4.13.5 with a dom0 in 6.6.10, and on an XCP-ng on
the same machine, the performances are similar, a few percent better on
the recent Xen, but still pretty low for such a machine and similar to
other EPYC we looked at.

> 
> > 1. Has anybody else noticed a similar behavior?
> > 2. Has anybody done any kind of investigation about it beside us?
> > 3. Any insight and suggestions of other points to look at would be welcome :)
> > 
> > And now the lengthy part about what we tested, I tried to make it shorter and
> > more legible than a full report…
> > 
> > Investigated
> > ------------
> > 
> > - Bench various cpu with iperf2 (iperf3 is not actually multithreaded):
> >   - amd fx8320e, xeon 3106: not impacted.
> >   - epyc 7451, 7443, 7302p, 7313p, 9124: impacted, but the zen4 one scales a
> >     bit more than zen1, 2 and 3.
> >   - ryzen 5950x, ryzen 7600: performances should likely be better than
> >     observed results, but still way better than epycs, and scaling nicely with
> >     more threads.
> > - Bench with tinymembench[1]: performances were as expected and didn't show
> >   issues with rep movsb as discussed in this article[2] and issue[3]. Which
> >   makes sense as it looks like this issues is related to ERMS support which is
> >   not present on Zen1 and 2 where the issue has been raised.
> > - Bench skb allocation with a small kernel module measuring cycles: actually
> >   same or lower on epyc than on the xeon with higher frequency so can be
> >   considered faster and likely not related to our issue.
> > - mitigations: we tried disabling what can be disabled through boot
> >   parameters, both for xen, dom0 and guests, but this made no differences.
> > - disabling AVX; Zen cpus before zen4 are know to limit boost and cpu scaling
> >   when doing heavy AVX load on one core, there was no reason to think this was
> >   related, but it was a quick test and as expected had no effect.
> > - localhost iperf bench on dom0 and guests: we noticed that on other machines
> >   host/guest with 1 threads are almost 1:1, with 4 threads guests are about
> >   generally not scaling as well in guests. On epyc machines, host tests were
> >   significantly slower than guests both with 1 and 4 threads, first
> >   investigation of profiling didn't help finding a cause yet. More in the
> >   profiling and TODO.
> 
> Wait, are you saying that the localhost iperf benchmark is faster in a
> VM compared to host ("host" I take means baremetal Linux without a
> hypervisor) ?   Maybe you meant the other way around?
> 
> 
> > - cpu load: top/htop/xentop all seem to indicate that machines are not under
> >   full load, queue allocations on dom0 for VIF are by default (1 per vcpu) and
> >   seem to be all used when traffic is running but at a percentage below 100%
> >   per core/thread.
> > - pinning: manually pinning dom0 and guests to the same node and avoiding
> >   sharing cpu "threads" between host and guests gives a minimal increase of a
> >   few percents, but nothing drastic. Note, we do not know about the
> >   ccd/ccx/node mapping on these cpus, so we are not sure all memory access are
> >   "local".
> > - sched weight: playing with sched weight to prioritize dom0 did not make a
> >   difference either, which makes sense as the system are not under full load.
> > - cpu scaling: it is unlikely the core of the issue, but indeed the cpu
> >   scaling does not take advantage of the boost, never going above the base
> >   clock of these cpus. Also it also seems that less cores that the number of
> >   working kthreads/vcpus are going to base clock, may be normal in regard to
> >   the system not being fully loaded, to be defined.
> >   - QUESTION: is the powernow support in xen cpufreq implementation sufficient
> >     for zen cpus? Recent kernels/distributions use acpi_cpufreq and can use
> >     amd_pstate or even amd_pstate_epp. More concerning than the turbo boost
> >     could be the handling of package power limitation used in Zen CPUs that
> >     could prevent even all cores to base clock, to be checked…
> > 
> > Profiling
> > ---------
> > 
> > We profiled iperf on dom0 and guests on epyc, older amd desktop, and xeon
> > machines and gathered profiling traces, but analysis are still ongoing.
> > 
> > - localhost:
> > Client and server were profiled both on dom0 and guests runs for a xeon, an
> > old FX and a zen platform, to analyze the discrepancy shown by the localhost
> > tests earlier. It shows we spend a larger chunk of time in the copyout() or
> > copyin() functions on epyc and fx. This is likely related to the use of
> > copy_user_generic_string() on epyc (zen1) and old FX, whereas xeon uses
> > copy_user_enhanced_fast_string(), as it has ERMS support.  But on the same
> > machine, guests are going way faster, and the implementation of
> > copy_user_generic_string() is the same between the dom0 and guests, so this is
> > likely related to other changes in kernel and userland, and not only to these
> > function. Therefore it likely isn't directly linked to the issue.
> > 
> > - vm to vm: server, client & dom0 -> profiling traces to be analysed.
> > 
> > TODO
> > ----
> > 
> > - More Analysis of profiling traces in VM to VM case
> > - X2APIC (not enabled on the machines and setup we are using)
> > - Profiling at xen level / hypercalls
> > - Tests on a clean install of a newer Xen version
> > - Dig some more on cpu scaling, likely not the root of the problem but could
> >   be some gain to make.
> > 
> > [1] https://github.com/ssvb/tinymembench
> > [2] https://xuanwo.io/2023/04-rust-std-fs-slower-than-python/
> > [3] https://bugs.launchpad.net/ubuntu/+source/glibc/+bug/2030515
> > 
> > -- 
> > David Morel


From xen-devel-bounces@lists.xenproject.org Wed Jan 10 10:26:12 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 10 Jan 2024 10:26:12 +0000
Received: from list by lists.xenproject.org with outflank-mailman.665372.1035571 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNVml-00048q-Bu; Wed, 10 Jan 2024 10:26:11 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 665372.1035571; Wed, 10 Jan 2024 10:26:11 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNVml-00048j-86; Wed, 10 Jan 2024 10:26:11 +0000
Received: by outflank-mailman (input) for mailman id 665372;
 Wed, 10 Jan 2024 10:26:09 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=/O5u=IU=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rNVmj-00048d-DS
 for xen-devel@lists.xenproject.org; Wed, 10 Jan 2024 10:26:09 +0000
Received: from mail-lj1-x22e.google.com (mail-lj1-x22e.google.com
 [2a00:1450:4864:20::22e])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id a97bdbb4-afa2-11ee-9b0f-b553b5be7939;
 Wed, 10 Jan 2024 11:26:05 +0100 (CET)
Received: by mail-lj1-x22e.google.com with SMTP id
 38308e7fff4ca-2cd1a1c5addso46085471fa.1
 for <xen-devel@lists.xenproject.org>; Wed, 10 Jan 2024 02:26:05 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 ba44-20020a0566383aac00b0046dfb833ea5sm1208480jab.17.2024.01.10.02.26.03
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 10 Jan 2024 02:26:05 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: a97bdbb4-afa2-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1704882365; x=1705487165; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=UkIxd72KTRK5aGLmX3F3dRULdYZln7retd8aWfq1A5Y=;
        b=Qja1I6ogccg0KJ4zq5eDacv26H0I8uABsikh3JonVt7/EohyQS26sZl72bjyXzwUJa
         41H1b4MZ9RjoT2N4G1Y1D0JJpIPBDgXPty1rti+shTZaeep+n+LiTT5EtpUOeewq0TJF
         62pO4AvalnyyVRnVs4Gj8VIotHmOMLr1hEM2VliwGeLqqOljWBglfjgapMj+0mXDYlZs
         mQ+hwXPg1rd+tzq4Bhi6LzwgEo7pJNst3pOV4iwZXttKNY3QFJipWA/JV3sgT1bNwJbm
         fWeuAPFaDPmOokU23CNsq+6SzTHIrrniFIEWFWQgtCh9+JtR+WJc0D103HSa6QMsz2Q2
         Rbww==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704882365; x=1705487165;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=UkIxd72KTRK5aGLmX3F3dRULdYZln7retd8aWfq1A5Y=;
        b=aoprF3Z8TaQ6vn3RVEtKpU2T1+iS8VNcpq5qoM8eahSD+nXg6FmPu5iNnSTG/saUdt
         /pAk5u7sfYVuqAMlXOP0qeq1HCZn1yNYGFaU/Mzrur88WlV9s4+H/rpyJ2YvOsyorz+u
         w0EbH0t5NNo08Wvhim+YqDp5DN1q52lVrep6c3xw+DbRBDJL51/X4adjQAqXjo3txqZZ
         /xO0Rr/xXcunYBM3HbUnFw3q2jIeTcrlAAtbtn2DBdS1B6a5X+wF/2o2xv4CH7VO1mLz
         eVGaU3lUXknlTcVc4W3cHVrqVW25USxznA0tlW6hMoNBdQD86fXLkZHbttstjeejs/gH
         8qTg==
X-Gm-Message-State: AOJu0Yz331gFZnAitIEKzBabtYWXOKI9dzhpNLmip6fQtkGFp0ykZtQR
	MDYoQxG2oV2W5/jniT2M58ZwlWB1bTlR
X-Google-Smtp-Source: AGHT+IG+GmmVasy2X8N7zexuxhc0Tv6+P0/2vT8yiojQGp6gb0RMHyTz4bokcHwO2S+ELh5hIEgS3w==
X-Received: by 2002:a2e:8447:0:b0:2cd:3141:5d52 with SMTP id u7-20020a2e8447000000b002cd31415d52mr411807ljh.83.1704882365399;
        Wed, 10 Jan 2024 02:26:05 -0800 (PST)
Message-ID: <238b79f5-0510-4306-9c32-19dade08e819@suse.com>
Date: Wed, 10 Jan 2024 11:26:02 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] x86/hvm: don't expose XENFEAT_hvm_pirqs by default
Content-Language: en-US
To: Roger Pau Monne <roger.pau@citrix.com>
Cc: Wei Liu <wl@xen.org>, Anthony PERARD <anthony.perard@citrix.com>,
 Juergen Gross <jgross@suse.com>,
 =?UTF-8?Q?Marek_Marczykowski-G=C3=B3recki?=
 <marmarek@invisiblethingslab.com>, Andrew Cooper
 <andrew.cooper3@citrix.com>, xen-devel@lists.xenproject.org
References: <20240110095311.61809-1-roger.pau@citrix.com>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <20240110095311.61809-1-roger.pau@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 10.01.2024 10:53, Roger Pau Monne wrote:
> The HVM pirq feature allows routing interrupts from both physical and emulated
> devices over event channels, this was done a performance improvement.  However
> its usage is fully undocumented, and the only reference implementation is in
> Linux.  It defeats the purpose of local APIC hardware virtualization, because
> when using it interrupts avoid the usage of the local APIC altogether.

So without sufficient APIC acceleration, isn't this arranging for degraded
performance then? IOW should the new default perhaps be dependent on the
degree of APIC acceleration?

> It has also been reported to not work properly with certain devices, at least
> when using some AMD GPUs Linux attempts to route interrupts over event
> channels, but Xen doesn't correctly detect such routing, which leads to the
> hypervisor complaining with:
> 
> (XEN) d15v0: Unsupported MSI delivery mode 7 for Dom15
> 
> When MSIs are attempted to be routed over event channels the entry delivery
> mode is set to ExtINT, but Xen doesn't detect such routing and attempts to
> inject the interrupt following the native MSI path, and the ExtINT delivery
> mode is not supported.

Shouldn't this be properly addressed nevertheless? The way it's described
it sounds as if MSI wouldn't work at all this way; I can't spot why the
issue would only be "with certain devices". Yet that in turn doesn't look
to be very likely - pass-through use cases, in particular SR-IOV ones,
would certainly have noticed.

Jan


From xen-devel-bounces@lists.xenproject.org Wed Jan 10 10:40:13 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 10 Jan 2024 10:40:13 +0000
Received: from list by lists.xenproject.org with outflank-mailman.665378.1035582 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNW0F-0007zq-Jg; Wed, 10 Jan 2024 10:40:07 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 665378.1035582; Wed, 10 Jan 2024 10:40:07 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNW0F-0007zg-Ej; Wed, 10 Jan 2024 10:40:07 +0000
Received: by outflank-mailman (input) for mailman id 665378;
 Wed, 10 Jan 2024 10:40:06 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=/O5u=IU=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rNW0E-0007vj-8K
 for xen-devel@lists.xenproject.org; Wed, 10 Jan 2024 10:40:06 +0000
Received: from mail-lf1-x134.google.com (mail-lf1-x134.google.com
 [2a00:1450:4864:20::134])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 9d0f5ce9-afa4-11ee-9b0f-b553b5be7939;
 Wed, 10 Jan 2024 11:40:04 +0100 (CET)
Received: by mail-lf1-x134.google.com with SMTP id
 2adb3069b0e04-50ec948ad31so2528753e87.2
 for <xen-devel@lists.xenproject.org>; Wed, 10 Jan 2024 02:40:04 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 n5-20020a5d8245000000b007bc234fd196sm625829ioo.0.2024.01.10.02.40.01
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 10 Jan 2024 02:40:03 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 9d0f5ce9-afa4-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1704883203; x=1705488003; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:from:to:cc:subject:date:message-id:reply-to;
        bh=yA8YdLR2ShFVTt3u5LBepjeyUmoUlfaz55ddsaZrxTA=;
        b=YBJp/bAfnrlI9TrcPN+Y8EbS/qISI5EcXLukUaxJSDl5ka4M3BbHcuyDBcXEt81FeO
         xMCtYG5yIFtoZU8SnIaAqs/uLOARewhY8FLOWSt6Q1JzLHqlRFWhN8qOnNZvpJ2kek4n
         pxH6/dh4RkGjoROP59DjxVR/fHrfd/EoWBho3/mnajFHe6067YEAZrLpQ14flZ+GKzrn
         VsaWvmSimFlGZ/NKo62PUq+SP1Yc7umJh5l4VHEwxxOgRLB+kRrk0kr0ByCGDNRAmCPW
         kFHT59dN6p96nBg1KZ1xX3Knzg7u92CUtf3NNtHVjbdGtrfFFQDcVIQArtiO8C1vj5Qc
         u0iA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704883203; x=1705488003;
        h=content-transfer-encoding:in-reply-to:autocrypt:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to;
        bh=yA8YdLR2ShFVTt3u5LBepjeyUmoUlfaz55ddsaZrxTA=;
        b=cFUL3CBMPqqSje1I696dhCOJ3QNa8Xq05adxHQ0HJEuE8qF4ZKujqqEXipHCQamWYW
         MkrEmtbruWfMuV9dG1lvZjhd248dH7AAb3zSKv5o0ZSE+ZPTIZuuPPUXutbUgrxOFjRm
         qKeBQU48jPU3ESt8M4GZ+SO0DrvqevIy8t66jg7T4dwDEM8QqFKp2SaASa0EEPB/kX02
         2uWj3p4GAWNoHnm7Pef1JOs722lL8S8m2oBDgnN/ONUT3iGutQvMyGzfdwAEYohoR4xs
         907bYLkR8w1zih3kwKwDq5daTTJipLmzooIkzwxoUiADfQ3e8WzKyFECJMeL7sJm3f6e
         WuVw==
X-Gm-Message-State: AOJu0Yw4z4bBk68ct9aTUgeu5EXCSeHigXCDm8+B2pAx9lhqFCLuClHV
	dkmqCajlm0lbtg3kEyxKEANhPNJYHUQP
X-Google-Smtp-Source: AGHT+IG7MwNXELEl4ir54PTdG4nDoNKpz6IAa/HRrUrC6KJREzGmP3FjZodetQv3FTYGECdHbKnZ0Q==
X-Received: by 2002:a05:6512:370e:b0:50e:5049:a179 with SMTP id z14-20020a056512370e00b0050e5049a179mr273860lfr.105.1704883203495;
        Wed, 10 Jan 2024 02:40:03 -0800 (PST)
Message-ID: <1b43d027-450e-4777-9ea9-682ebcc7115e@suse.com>
Date: Wed, 10 Jan 2024 11:39:59 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2 08/15] VMX: convert vmx_basic_msr
To: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: Wei Liu <wl@xen.org>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger.pau@citrix.com>, Kevin Tian <kevin.tian@intel.com>,
 Jun Nakajima <jun.nakajima@intel.com>,
 George Dunlap <george.dunlap@citrix.com>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
References: <b63b648f-02d0-4e52-a5e5-94ffd5666a14@suse.com>
 <d07fb86f-ef9c-4c2b-ba9a-f1e5c813d45d@suse.com>
 <e17d6e45-b03c-4906-9fb3-af4770aa3cf0@citrix.com>
 <beac1f7c-51cb-47a9-8e96-d09cb3ea6ab7@suse.com>
 <04992603-cb10-43ff-9eb3-b8f8f1dc765c@citrix.com>
 <83f266f1-c46b-4ace-9c29-b0b486f817a6@suse.com>
 <3af7e3a7-c76d-4784-a215-06510171c66c@citrix.com>
Content-Language: en-US
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <3af7e3a7-c76d-4784-a215-06510171c66c@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 09.01.2024 15:54, Andrew Cooper wrote:
> On 09/01/2024 2:39 pm, Jan Beulich wrote:
>> Even the inner struct plan falls apart pretty quickly (or grows what
>> needs doing by too much for my taste, in the context right here):
>> While for basic_msr this works, and it would apparently also work
>> for vmfunc and tertiary exec control (the latter is itself only part
>> of a yet to be reviewed / approved patch), it doesn't for all the
>> others with split 0-setting and 1-setting halves. This is because
>> what VMX code wants are the calculated values to put in the VMCS,
>> whereas imo in the policy we'd want to store both halves (and what
>> exactly wants to be in the host policy there isn't really clear to
>> me). As a result I can't create a single uniform structure properly
>> serving both purposes. Nor could I have VMX code use the host
>> policy for most of its capability checks.
>>
>> Thought / ideas?
> 
> If it's not actually trivial, then don't worry.
> 
> The policy does need to hold the architectural representation.  The
> in-use settings need storing per-vCPU because they do (or need to me
> made to) vary based on the configuration of the VM, and because they're
> needed on every virtual vmentry when re-calculating VMCS02.

Would it help if I did a hybrid approach, i.e. move to raw/host policies
only what can be easily moved, with the rest kept as is (perhaps with
vmx_caps renamed to vmx_ctls then)?

Jan


From xen-devel-bounces@lists.xenproject.org Wed Jan 10 11:34:54 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 10 Jan 2024 11:34:54 +0000
Received: from list by lists.xenproject.org with outflank-mailman.665386.1035592 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNWr1-0008QY-KX; Wed, 10 Jan 2024 11:34:39 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 665386.1035592; Wed, 10 Jan 2024 11:34:39 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNWr1-0008QR-GI; Wed, 10 Jan 2024 11:34:39 +0000
Received: by outflank-mailman (input) for mailman id 665386;
 Wed, 10 Jan 2024 11:34:38 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=sd/G=IU=cloud.com=roger.pau@srs-se1.protection.inumbo.net>)
 id 1rNWr0-0008QL-Te
 for xen-devel@lists.xenproject.org; Wed, 10 Jan 2024 11:34:38 +0000
Received: from mail-ej1-x636.google.com (mail-ej1-x636.google.com
 [2a00:1450:4864:20::636])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 3aa138b1-afac-11ee-9b0f-b553b5be7939;
 Wed, 10 Jan 2024 12:34:35 +0100 (CET)
Received: by mail-ej1-x636.google.com with SMTP id
 a640c23a62f3a-a2be2148777so44665466b.0
 for <xen-devel@lists.xenproject.org>; Wed, 10 Jan 2024 03:34:35 -0800 (PST)
Received: from localhost ([213.195.127.70]) by smtp.gmail.com with ESMTPSA id
 gl21-20020a170906e0d500b00a2b034c35b5sm1975054ejb.198.2024.01.10.03.34.33
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 10 Jan 2024 03:34:34 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 3aa138b1-afac-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1704886474; x=1705491274; darn=lists.xenproject.org;
        h=in-reply-to:content-disposition:mime-version:references:message-id
         :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to;
        bh=NA39UWRKBVk5nsJsH63/avnH4btqGtj4dS+KEzaOXO0=;
        b=fuZPkKdrcuPld5gyO/3RoWYM3CSpyL7IYcKvDpJ5OaAJlgqlwOPa7iV2OK1e87v0pZ
         q/qq8u5/tjyAv09l7+SiT2XJmfr6K9t0IUvpwK8o9wigHtmqeWazJAwIhKJvgAjHMvY4
         /qKn1t8dxoLjPJvc846eRx8CKyvhkoTS4oW3E=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704886474; x=1705491274;
        h=in-reply-to:content-disposition:mime-version:references:message-id
         :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to;
        bh=NA39UWRKBVk5nsJsH63/avnH4btqGtj4dS+KEzaOXO0=;
        b=mI5SekXiVp/h7GnavSWvtBkm9lS0UPu0Xp1a6EyAkXId2hCV4XnvQyaN2YMUWvLK8o
         IVrzp/a+nazDB7yAa7c8Lq329HW7c5rnMHdoWNw+NMvXQ3ZpKPFUX/Z56i/mjKznrwe8
         sxAR8KZ1uTHxRjYGqxsOVF1jgxdxHWwcuOziigrQaIrLkM6+3+0BlLc572kXzy3PLW/0
         Qt1dJnjmFeX/WEkqbVTNQWUa+LsUhGFqnKIcpIcL9mzqbyBMGk8Yv4rXklbOsvqxWujm
         vO7F6oOqJOf83STFNnC5jxcL3lhkjYEMAYL6FUnGSDPu0F22PKTgu5qgui1iFBS7n51Q
         hOUg==
X-Gm-Message-State: AOJu0YxtQ4QmUuCvur8Ei2pgyqvgXRGf9VM9q69TJxPtiYR3zqlECpmc
	Uhs26NgRLICbrNAq7FMWQC4WR8w2q+A2ew==
X-Google-Smtp-Source: AGHT+IEvWYcaeGsByGPADCI5r/LqcJ/4uwRUUP0RLu1RonMm+0DC1HiL/qqhbToUHk6WIUzMVHyPaw==
X-Received: by 2002:a17:906:d141:b0:a28:ac5d:ffe with SMTP id br1-20020a170906d14100b00a28ac5d0ffemr546507ejb.122.1704886474314;
        Wed, 10 Jan 2024 03:34:34 -0800 (PST)
Date: Wed, 10 Jan 2024 12:34:33 +0100
From: Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
To: Jan Beulich <jbeulich@suse.com>
Cc: Wei Liu <wl@xen.org>, Anthony PERARD <anthony.perard@citrix.com>,
	Juergen Gross <jgross@suse.com>,
	Marek =?utf-8?Q?Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	xen-devel@lists.xenproject.org
Subject: Re: [PATCH] x86/hvm: don't expose XENFEAT_hvm_pirqs by default
Message-ID: <ZZ6AyeAdOZ9Dx-AK@macbook>
References: <20240110095311.61809-1-roger.pau@citrix.com>
 <238b79f5-0510-4306-9c32-19dade08e819@suse.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
In-Reply-To: <238b79f5-0510-4306-9c32-19dade08e819@suse.com>

On Wed, Jan 10, 2024 at 11:26:02AM +0100, Jan Beulich wrote:
> On 10.01.2024 10:53, Roger Pau Monne wrote:
> > The HVM pirq feature allows routing interrupts from both physical and emulated
> > devices over event channels, this was done a performance improvement.  However
> > its usage is fully undocumented, and the only reference implementation is in
> > Linux.  It defeats the purpose of local APIC hardware virtualization, because
> > when using it interrupts avoid the usage of the local APIC altogether.
> 
> So without sufficient APIC acceleration, isn't this arranging for degraded
> performance then? IOW should the new default perhaps be dependent on the
> degree of APIC acceleration?

Maybe, I certainly have no figures, but given the feature is not
working as expected I don't think we should block disabling it on
performance reasons.  Reliability should always be first to
performance.

> > It has also been reported to not work properly with certain devices, at least
> > when using some AMD GPUs Linux attempts to route interrupts over event
> > channels, but Xen doesn't correctly detect such routing, which leads to the
> > hypervisor complaining with:
> > 
> > (XEN) d15v0: Unsupported MSI delivery mode 7 for Dom15
> > 
> > When MSIs are attempted to be routed over event channels the entry delivery
> > mode is set to ExtINT, but Xen doesn't detect such routing and attempts to
> > inject the interrupt following the native MSI path, and the ExtINT delivery
> > mode is not supported.
> 
> Shouldn't this be properly addressed nevertheless?

There's no documentation at all about how the HVM PIRQ interface, so
every time I had to deal with it I had to guess and reverse engineer
how it's supposed to work.

> The way it's described
> it sounds as if MSI wouldn't work at all this way; I can't spot why the
> issue would only be "with certain devices". Yet that in turn doesn't look
> to be very likely - pass-through use cases, in particular SR-IOV ones,
> would certainly have noticed.

I think it has to do with when/how the MSI is updated.  I can't repro
myself, which makes fixing even more complicated.

TBH, I think the feature is simply broken, and I don't feel like
spending more time fixing it.  The fact that it was added in the first
place, and enabled by default was IMO a mistake.

If someone is willing to fix the issue, I'm fine with that, but I
certainly don't want to spend more time fixing issues for an
undocumented feature, the more that going forward such feature is
likely to be even less relevant with hardware APIC virtualization
being more widely available.

FWIW, this patch has an issue in libxl with PV guests, so will need to
send v2.

Thanks, Roger.


From xen-devel-bounces@lists.xenproject.org Wed Jan 10 11:41:05 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 10 Jan 2024 11:41:05 +0000
Received: from list by lists.xenproject.org with outflank-mailman.665391.1035601 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNWxC-00020E-7x; Wed, 10 Jan 2024 11:41:02 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 665391.1035601; Wed, 10 Jan 2024 11:41:02 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNWxC-000207-58; Wed, 10 Jan 2024 11:41:02 +0000
Received: by outflank-mailman (input) for mailman id 665391;
 Wed, 10 Jan 2024 11:41:01 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rNWxB-0001zx-Ie; Wed, 10 Jan 2024 11:41:01 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rNWxB-0001Ai-DR; Wed, 10 Jan 2024 11:41:01 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rNWxA-0004Hn-Va; Wed, 10 Jan 2024 11:41:01 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rNWxA-00020g-Uo; Wed, 10 Jan 2024 11:41:00 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=affXOsVupCh8l6F1FmukHvyjxACBtHv0tlHd7f11NCY=; b=q7C5MSRYWpGEjUpv04kdotzu5g
	QD4wqFoHmoFLItvH/HWtsJkFEpjt7QIackgCp5FJNNGbBDNq33GwBDxoxjheDqlZ/l5VGCKviAM7a
	A+2+GzAHe35ePjPlKU8f83gSC+bA3ZPd+wp7BhsMQOF0OUOIvUH7cGFDw92pElrLMN5g=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184298-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [linux-5.4 test] 184298: regressions - FAIL
X-Osstest-Failures:
    linux-5.4:test-armhf-armhf-xl-multivcpu:guest-start/debian.repeat:fail:regression
    linux-5.4:test-armhf-armhf-xl-rtds:guest-start/debian.repeat:fail:allowable
    linux-5.4:test-armhf-armhf-xl-credit1:guest-start/debian.repeat:fail:nonblocking
    linux-5.4:test-armhf-armhf-libvirt-qcow2:saverestore-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-libvirt:saverestore-support-check:fail:nonblocking
    linux-5.4:test-amd64-amd64-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    linux-5.4:test-amd64-i386-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    linux-5.4:test-amd64-i386-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    linux-5.4:test-amd64-amd64-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-credit2:guest-start/debian.repeat:fail:nonblocking
    linux-5.4:test-amd64-amd64-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    linux-5.4:test-amd64-amd64-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    linux-5.4:test-armhf-armhf-libvirt-raw:saverestore-support-check:fail:nonblocking
    linux-5.4:test-amd64-i386-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    linux-5.4:test-amd64-i386-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    linux-5.4:test-amd64-amd64-qemuu-nested-amd:debian-hvm-install/l1/l2:fail:nonblocking
    linux-5.4:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    linux-5.4:test-amd64-i386-libvirt:migrate-support-check:fail:nonblocking
    linux-5.4:test-amd64-i386-xl-pvshim:guest-start:fail:nonblocking
    linux-5.4:test-amd64-i386-libvirt-xsm:migrate-support-check:fail:nonblocking
    linux-5.4:test-amd64-amd64-libvirt-xsm:migrate-support-check:fail:nonblocking
    linux-5.4:test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-xsm:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-xsm:saverestore-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-libvirt-xsm:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-libvirt-xsm:saverestore-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-thunderx:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl:saverestore-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-thunderx:saverestore-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-credit1:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-credit1:saverestore-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-credit2:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-credit2:saverestore-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-rtds:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-rtds:saverestore-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-credit1:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-credit1:saverestore-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-multivcpu:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-multivcpu:saverestore-support-check:fail:nonblocking
    linux-5.4:test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-arndale:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-arndale:saverestore-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-libvirt:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl:saverestore-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-credit2:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-credit2:saverestore-support-check:fail:nonblocking
    linux-5.4:test-amd64-amd64-libvirt-vhd:migrate-support-check:fail:nonblocking
    linux-5.4:test-amd64-i386-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-libvirt-raw:saverestore-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-vhd:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-vhd:saverestore-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-libvirt-qcow2:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-vhd:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-vhd:saverestore-support-check:fail:nonblocking
X-Osstest-Versions-This:
    linux=4410df70110ff5175bf7f7fdc3bae5c80f2c36d9
X-Osstest-Versions-That:
    linux=2d21f73b2f16f51608c8d8b1726df270229a5006
From: osstest service owner <osstest-admin@xenproject.org>
Date: Wed, 10 Jan 2024 11:41:00 +0000

flight 184298 linux-5.4 real [real]
flight 184304 linux-5.4 real-retest [real]
http://logs.test-lab.xenproject.org/osstest/logs/184298/
http://logs.test-lab.xenproject.org/osstest/logs/184304/

Regressions :-(

Tests which did not succeed and are blocking,
including tests which could not be run:
 test-armhf-armhf-xl-multivcpu 18 guest-start/debian.repeat fail REGR. vs. 184192

Regressions which are regarded as allowable (not blocking):
 test-armhf-armhf-xl-rtds    18 guest-start/debian.repeat fail REGR. vs. 184192

Tests which did not succeed, but are not blocking:
 test-armhf-armhf-xl-credit1 18 guest-start/debian.repeat fail blocked in 184192
 test-armhf-armhf-libvirt-qcow2 15 saverestore-support-check fail blocked in 184192
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 184192
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 184192
 test-amd64-i386-xl-qemut-win7-amd64 19 guest-stop             fail like 184192
 test-amd64-i386-xl-qemuu-win7-amd64 19 guest-stop             fail like 184192
 test-amd64-amd64-xl-qemut-win7-amd64 19 guest-stop            fail like 184192
 test-armhf-armhf-xl-credit2  18 guest-start/debian.repeat    fail  like 184192
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 184192
 test-amd64-amd64-xl-qemut-ws16-amd64 19 guest-stop            fail like 184192
 test-armhf-armhf-libvirt-raw 15 saverestore-support-check    fail  like 184192
 test-amd64-i386-xl-qemut-ws16-amd64 19 guest-stop             fail like 184192
 test-amd64-i386-xl-qemuu-ws16-amd64 19 guest-stop             fail like 184192
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 184192
 test-amd64-amd64-libvirt     15 migrate-support-check        fail   never pass
 test-amd64-i386-libvirt      15 migrate-support-check        fail   never pass
 test-amd64-i386-xl-pvshim    14 guest-start                  fail   never pass
 test-amd64-i386-libvirt-xsm  15 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-arm64-arm64-xl-xsm      15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-xsm      16 saverestore-support-check    fail   never pass
 test-arm64-arm64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-xsm 16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl          15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-thunderx 15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl          16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-thunderx 16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-credit1  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit1  16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-credit2  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit2  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-rtds     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-rtds     16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-credit1  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit1  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-multivcpu 15 migrate-support-check        fail  never pass
 test-armhf-armhf-xl-multivcpu 16 saverestore-support-check    fail  never pass
 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-armhf-armhf-xl-arndale  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-arndale  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-credit2  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit2  16 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-vhd 14 migrate-support-check        fail   never pass
 test-amd64-i386-libvirt-raw  14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 15 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-vhd      14 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-vhd      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-qcow2 14 migrate-support-check        fail never pass
 test-armhf-armhf-libvirt-raw 14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      15 saverestore-support-check    fail   never pass

version targeted for testing:
 linux                4410df70110ff5175bf7f7fdc3bae5c80f2c36d9
baseline version:
 linux                2d21f73b2f16f51608c8d8b1726df270229a5006

Last test of basis   184192  2023-12-20 15:16:31 Z   20 days
Testing same since   184275  2024-01-08 10:43:33 Z    2 days    4 attempts

------------------------------------------------------------
People who touched revisions under test:
  Alexander Gordeev <agordeev@linux.ibm.com>
  Alexis Lothoré <alexis.lothore@bootlin.com>
  Alper Ak <alperyasinak1@gmail.com>
  Bin Li <bin.li@canonical.com>
  Borislav Petkov (AMD) <bp@alien8.de>
  Chen-Yu Tsai <wens@kernel.org>
  Dan Carpenter <dan.carpenter@linaro.org>
  David Howells <dhowells@redhat.com>
  David S. Miller <davem@davemloft.net>
  David Sterba <dsterba@suse.com>
  Dmitry Torokhov <dmitry.torokhov@gmail.com>
  Dominique Martinet <asmadeus@codewreck.org>
  Eric Dumazet <edumazet@google.com>
  Fedor Pchelkin <pchelkin@ispras.ru>
  Florian Fainelli <florian.fainelli@broadcom.com>
  Geert Uytterhoeven <geert+renesas@glider.be>
  Georgi Djakov <djakov@kernel.org>
  Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  Haoran Liu <liuhaoran14@163.com>
  Harshit Mogalapalli <harshit.m.mogalapalli@oracle.com>
  Heiko Carstens <hca@linux.ibm.com>
  Heiner Kallweit <hkallweit1@gmail.com>
  Hu Haowen <xianfengting221@163.com>
  Jakub Kicinski <kuba@kernel.org>
  Jamal Hadi Salim <jhs@mojatatu.com>
  Javier Carrasco <javier.carrasco.cruz@gmail.com>
  Jens Axboe <axboe@kernel.dk>
  Johan Hovold <johan@kernel.org>
  Johannes Berg <johannes.berg@intel.com>
  Jonathan Cameron <Jonathan.Cameron@huawei.com>
  Josef Bacik <josef@toxicpanda.com>
  Kai Vehmanen <kai.vehmanen@linux.intel.com>
  kernelci.org bot <bot@kernelci.org>
  Kunwu Chan <chentao@kylinos.cn>
  Linus Torvalds <torvalds@linux-foundation.org>
  Linus Walleij <linus.walleij@linaro.org>
  Linux Kernel Functional Testing <lkft@linaro.org>
  Liu Jian <liujian56@huawei.com>
  Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
  Mark Glover <mark.glover@actisense.com>
  Markus Suvanto <markus.suvanto@gmail.com>
  Martin K. Petersen <martin.petersen@oracle.com>
  Masami Hiramatsu (Google) <mhiramat@kernel.org>
  Mike Snitzer <snitzer@kernel.org>
  Mike Tipton <quic_mdtipton@quicinc.com>
  Miri Korenblit <miriam.rachel.korenblit@intel.com>
  Moshe Shemesh <moshe@nvidia.com>
  Namjae Jeon <linkinjeon@kernel.org>
  Paolo Abeni <pabeni@redhat.com>
  Paulo Alcantara (SUSE) <pc@manguebit.com>
  Paulo Alcantara <pc@manguebit.com>
  Peter Zijlstra (Intel) <peterz@infradead.org>
  Philipp Zabel <p.zabel@pengutronix.de>
  Quan Nguyen <quan@os.amperecomputing.com>
  Rahul Rameshbabu <rrameshbabu@nvidia.com>
  Reinhard Speyerer <rspmn@arcor.de>
  Rouven Czerwinski <r.czerwinski@pengutronix.de>
  Saeed Mahameed <saeedm@mellanox.com>
  Saeed Mahameed <saeedm@nvidia.com>
  Sarthak Kukreti <sarthakkukreti@chromium.org>
  Sasha Levin <sashal@kernel.org>
  Seth Forshee <sforshee@kernel.org>
  Slark Xiao <slark_xiao@163.com>
  Steve French <stfrench@microsoft.com>
  Steven Rostedt (Google) <rostedt@goodmis.org>
  Su Hui <suhui@nfschina.com>
  Takashi Iwai <tiwai@suse.de>
  Thomas Gleixner <tglx@linutronix.de>
  Tony Lindgren <tony@atomide.com>
  Vlad Buslov <vladbu@nvidia.com>
  Wadim Egorov <w.egorov@phytec.de>
  Wei Yongjun <weiyongjun1@huawei.com>
  Wolfram Sang <wsa@kernel.org>
  Zhipeng Lu <alexious@zju.edu.cn>

jobs:
 build-amd64-xsm                                              pass    
 build-arm64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64                                                  pass    
 build-arm64                                                  pass    
 build-armhf                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-arm64-libvirt                                          pass    
 build-armhf-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-pvops                                            pass    
 build-arm64-pvops                                            pass    
 build-armhf-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-amd64-amd64-xl                                          pass    
 test-amd64-coresched-amd64-xl                                pass    
 test-arm64-arm64-xl                                          pass    
 test-armhf-armhf-xl                                          pass    
 test-amd64-i386-xl                                           pass    
 test-amd64-coresched-i386-xl                                 pass    
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm           pass    
 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm            pass    
 test-amd64-amd64-xl-qemut-stubdom-debianhvm-amd64-xsm        pass    
 test-amd64-i386-xl-qemut-stubdom-debianhvm-amd64-xsm         pass    
 test-amd64-amd64-xl-qemut-debianhvm-i386-xsm                 pass    
 test-amd64-i386-xl-qemut-debianhvm-i386-xsm                  pass    
 test-amd64-amd64-xl-qemuu-debianhvm-i386-xsm                 pass    
 test-amd64-i386-xl-qemuu-debianhvm-i386-xsm                  pass    
 test-amd64-amd64-libvirt-xsm                                 pass    
 test-arm64-arm64-libvirt-xsm                                 pass    
 test-amd64-i386-libvirt-xsm                                  pass    
 test-amd64-amd64-xl-xsm                                      pass    
 test-arm64-arm64-xl-xsm                                      pass    
 test-amd64-i386-xl-xsm                                       pass    
 test-amd64-amd64-qemuu-nested-amd                            fail    
 test-amd64-amd64-xl-pvhv2-amd                                pass    
 test-amd64-i386-qemut-rhel6hvm-amd                           pass    
 test-amd64-i386-qemuu-rhel6hvm-amd                           pass    
 test-amd64-amd64-dom0pvh-xl-amd                              pass    
 test-amd64-amd64-xl-qemut-debianhvm-amd64                    pass    
 test-amd64-i386-xl-qemut-debianhvm-amd64                     pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64                    pass    
 test-amd64-i386-xl-qemuu-debianhvm-amd64                     pass    
 test-amd64-i386-freebsd10-amd64                              pass    
 test-amd64-amd64-qemuu-freebsd11-amd64                       pass    
 test-amd64-amd64-qemuu-freebsd12-amd64                       pass    
 test-amd64-amd64-xl-qemuu-ovmf-amd64                         pass    
 test-amd64-i386-xl-qemuu-ovmf-amd64                          pass    
 test-amd64-amd64-xl-qemut-win7-amd64                         fail    
 test-amd64-i386-xl-qemut-win7-amd64                          fail    
 test-amd64-amd64-xl-qemuu-win7-amd64                         fail    
 test-amd64-i386-xl-qemuu-win7-amd64                          fail    
 test-amd64-amd64-xl-qemut-ws16-amd64                         fail    
 test-amd64-i386-xl-qemut-ws16-amd64                          fail    
 test-amd64-amd64-xl-qemuu-ws16-amd64                         fail    
 test-amd64-i386-xl-qemuu-ws16-amd64                          fail    
 test-armhf-armhf-xl-arndale                                  pass    
 test-amd64-amd64-examine-bios                                pass    
 test-amd64-i386-examine-bios                                 pass    
 test-amd64-amd64-xl-credit1                                  pass    
 test-arm64-arm64-xl-credit1                                  pass    
 test-armhf-armhf-xl-credit1                                  fail    
 test-amd64-amd64-xl-credit2                                  pass    
 test-arm64-arm64-xl-credit2                                  pass    
 test-armhf-armhf-xl-credit2                                  fail    
 test-amd64-amd64-xl-qemuu-dmrestrict-amd64-dmrestrict        pass    
 test-amd64-i386-xl-qemuu-dmrestrict-amd64-dmrestrict         pass    
 test-amd64-amd64-examine                                     pass    
 test-arm64-arm64-examine                                     pass    
 test-armhf-armhf-examine                                     pass    
 test-amd64-i386-examine                                      pass    
 test-amd64-i386-freebsd10-i386                               pass    
 test-amd64-amd64-qemuu-nested-intel                          pass    
 test-amd64-amd64-xl-pvhv2-intel                              pass    
 test-amd64-i386-qemut-rhel6hvm-intel                         pass    
 test-amd64-i386-qemuu-rhel6hvm-intel                         pass    
 test-amd64-amd64-dom0pvh-xl-intel                            pass    
 test-amd64-amd64-libvirt                                     pass    
 test-armhf-armhf-libvirt                                     pass    
 test-amd64-i386-libvirt                                      pass    
 test-amd64-amd64-xl-multivcpu                                pass    
 test-armhf-armhf-xl-multivcpu                                fail    
 test-amd64-amd64-pair                                        pass    
 test-amd64-i386-pair                                         pass    
 test-amd64-amd64-libvirt-pair                                pass    
 test-amd64-i386-libvirt-pair                                 pass    
 test-amd64-amd64-xl-pvshim                                   pass    
 test-amd64-i386-xl-pvshim                                    fail    
 test-amd64-amd64-pygrub                                      pass    
 test-armhf-armhf-libvirt-qcow2                               pass    
 test-amd64-amd64-xl-qcow2                                    pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-armhf-armhf-libvirt-raw                                 pass    
 test-amd64-i386-libvirt-raw                                  pass    
 test-amd64-amd64-xl-rtds                                     pass    
 test-armhf-armhf-xl-rtds                                     fail    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64-shadow             pass    
 test-amd64-i386-xl-qemuu-debianhvm-amd64-shadow              pass    
 test-amd64-amd64-xl-shadow                                   pass    
 test-amd64-i386-xl-shadow                                    pass    
 test-arm64-arm64-xl-thunderx                                 pass    
 test-amd64-amd64-examine-uefi                                pass    
 test-amd64-i386-examine-uefi                                 pass    
 test-amd64-amd64-libvirt-vhd                                 pass    
 test-arm64-arm64-xl-vhd                                      pass    
 test-armhf-armhf-xl-vhd                                      pass    
 test-amd64-i386-xl-vhd                                       pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Not pushing.

(No revision log; it would be 1652 lines long.)


From xen-devel-bounces@lists.xenproject.org Wed Jan 10 12:39:58 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 10 Jan 2024 12:39:58 +0000
Received: from list by lists.xenproject.org with outflank-mailman.665419.1035610 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNXrz-0002FO-VG; Wed, 10 Jan 2024 12:39:43 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 665419.1035610; Wed, 10 Jan 2024 12:39:43 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNXrz-0002FH-Sh; Wed, 10 Jan 2024 12:39:43 +0000
Received: by outflank-mailman (input) for mailman id 665419;
 Wed, 10 Jan 2024 12:39:42 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rNXry-0002F7-KR; Wed, 10 Jan 2024 12:39:42 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rNXry-0002Ic-Gs; Wed, 10 Jan 2024 12:39:42 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rNXry-0006HJ-5J; Wed, 10 Jan 2024 12:39:42 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rNXry-0002G3-4V; Wed, 10 Jan 2024 12:39:42 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=KchJmWNIiQth6ExTyrehNEu/4gXrHQ6uQinHx5FGTto=; b=ZAU7UJJ8YRVb1X1VcESMyfqS2y
	VBqDjWK0KOetAzoeZn8KzWynhSfprmFw8bynuPraOobU1yiBk5FvdFx2k0yOk1+8+GjyU+Q3aDK7p
	BuLCLNEsSQC+19fExeM5kgzUPD2wFDCtfZOFxRdN+VKiQB4i7CiE0S7z8pjI8yRk1gQE=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184305-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [ovmf test] 184305: all pass - PUSHED
X-Osstest-Versions-This:
    ovmf=bc34a79cd2a005e1d12d4b05bec6efc3b102cad6
X-Osstest-Versions-That:
    ovmf=265b4ab91b8a31d6d1760ad1eaa1e16f9244cba7
From: osstest service owner <osstest-admin@xenproject.org>
Date: Wed, 10 Jan 2024 12:39:42 +0000

flight 184305 ovmf real [real]
http://logs.test-lab.xenproject.org/osstest/logs/184305/

Perfect :-)
All tests in this flight passed as required
version targeted for testing:
 ovmf                 bc34a79cd2a005e1d12d4b05bec6efc3b102cad6
baseline version:
 ovmf                 265b4ab91b8a31d6d1760ad1eaa1e16f9244cba7

Last test of basis   184302  2024-01-10 06:11:07 Z    0 days
Testing same since   184305  2024-01-10 10:41:30 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Nickle Wang <nicklew@nvidia.com>

jobs:
 build-amd64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-amd64-amd64-xl-qemuu-ovmf-amd64                         pass    
 test-amd64-i386-xl-qemuu-ovmf-amd64                          pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Pushing revision :

To xenbits.xen.org:/home/xen/git/osstest/ovmf.git
   265b4ab91b..bc34a79cd2  bc34a79cd2a005e1d12d4b05bec6efc3b102cad6 -> xen-tested-master


From xen-devel-bounces@lists.xenproject.org Wed Jan 10 12:45:49 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 10 Jan 2024 12:45:49 +0000
Received: from list by lists.xenproject.org with outflank-mailman.665425.1035621 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNXxp-0003if-KN; Wed, 10 Jan 2024 12:45:45 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 665425.1035621; Wed, 10 Jan 2024 12:45:45 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNXxp-0003iY-Hg; Wed, 10 Jan 2024 12:45:45 +0000
Received: by outflank-mailman (input) for mailman id 665425;
 Wed, 10 Jan 2024 12:45:44 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=sd/G=IU=cloud.com=roger.pau@srs-se1.protection.inumbo.net>)
 id 1rNXxo-0003iS-GU
 for xen-devel@lists.xenproject.org; Wed, 10 Jan 2024 12:45:44 +0000
Received: from mail-ej1-x634.google.com (mail-ej1-x634.google.com
 [2a00:1450:4864:20::634])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 2a791539-afb6-11ee-98f0-6d05b1d4d9a1;
 Wed, 10 Jan 2024 13:45:42 +0100 (CET)
Received: by mail-ej1-x634.google.com with SMTP id
 a640c23a62f3a-a2a17f3217aso451501666b.2
 for <xen-devel@lists.xenproject.org>; Wed, 10 Jan 2024 04:45:42 -0800 (PST)
Received: from localhost ([213.195.127.70]) by smtp.gmail.com with ESMTPSA id
 la8-20020a170906ad8800b00a2af8872e9bsm2106929ejb.14.2024.01.10.04.45.40
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 10 Jan 2024 04:45:40 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 2a791539-afb6-11ee-98f0-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1704890741; x=1705495541; darn=lists.xenproject.org;
        h=content-transfer-encoding:mime-version:message-id:date:subject:cc
         :to:from:from:to:cc:subject:date:message-id:reply-to;
        bh=6+xNQpM4Pq+Qx0rVDc0MOVEqgj7PcG7kb1Sxy8Z+Nto=;
        b=ari6cmBUmuAqxILC9n7KvLfBBWqsilfBsWDK3r2/hhIajNQgs3Ns04qz62yVapI6kg
         aEPS2WIGQ+9IBWSsmq99k4O41OvJWosZsP8cmMNcGTzCgDFj0wVOfzKlrNDTBi0bQIwV
         gSUeorzgllegyHLyy7CNPiwb5XLNUDv2xz+2M=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704890741; x=1705495541;
        h=content-transfer-encoding:mime-version:message-id:date:subject:cc
         :to:from:x-gm-message-state:from:to:cc:subject:date:message-id
         :reply-to;
        bh=6+xNQpM4Pq+Qx0rVDc0MOVEqgj7PcG7kb1Sxy8Z+Nto=;
        b=n39db32A823a1z8hs6aP6dikCwoOKOrC/AlbB4gzNlUXGZlmUTsrlrDovWH3O30Zhk
         zN3SiB85YQMf+RM0Ru2SqcXJCpqP5eFwfPSWOhevWyrEa7v9uz9biPFLdnlbjFk/1knE
         wwH/m35RHNDP4kxHl9BY0xJeALYmiQWty4aiR1CkW5B4lchXiUNe/GTREH9c4QLDWeys
         hNvjOL3Rj7Gw+het4jQjON5gQZ2A8zGTYbrmr5qwdgAkMYsCu/QpcVvvixIgOnxdII3h
         bsulhmmZxwVHW39padgcSpWpeYNsR2YaZBsvzwB6J6KexF52BKS4EGsS1/tnVR6A+vAb
         duVQ==
X-Gm-Message-State: AOJu0YzsJ+fXYLI06dapej32Oo8VlKMfU7JNvVLLwjcod9tQm5eemymG
	Yg2TH1L6GZguMQEKOLi/W07w56ISv/Lcz9ZfGHptfgP9QFY=
X-Google-Smtp-Source: AGHT+IGgorWm9e9SF5L0nMlP0ttfgP7nMtEU21QAcPpqdgh7ZQiCZxJ8EfygVWmBTysFi69BK2YsdA==
X-Received: by 2002:a17:906:b303:b0:a29:27ad:8eac with SMTP id n3-20020a170906b30300b00a2927ad8eacmr657564ejz.6.1704890741232;
        Wed, 10 Jan 2024 04:45:41 -0800 (PST)
From: Roger Pau Monne <roger.pau@citrix.com>
To: xen-devel@lists.xenproject.org
Cc: Roger Pau Monne <roger.pau@citrix.com>,
	Wei Liu <wl@xen.org>,
	Anthony PERARD <anthony.perard@citrix.com>,
	Juergen Gross <jgross@suse.com>,
	=?UTF-8?q?Marek=20Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>,
	Jan Beulich <jbeulich@suse.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>
Subject: [PATCH v2] x86/hvm: don't expose XENFEAT_hvm_pirqs by default
Date: Wed, 10 Jan 2024 13:42:02 +0100
Message-ID: <20240110124202.62843-1-roger.pau@citrix.com>
X-Mailer: git-send-email 2.43.0
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

The HVM pirq feature allows routing interrupts from both physical and emulated
devices over event channels, this was done a performance improvement.  However
its usage is fully undocumented, and the only reference implementation is in
Linux.  It defeats the purpose of local APIC hardware virtualization, because
when using it interrupts avoid the usage of the local APIC altogether.

It has also been reported to not work properly with certain devices, at least
when using some AMD GPUs Linux attempts to route interrupts over event
channels, but Xen doesn't correctly detect such routing, which leads to the
hypervisor complaining with:

(XEN) d15v0: Unsupported MSI delivery mode 7 for Dom15

When MSIs are attempted to be routed over event channels the entry delivery
mode is set to ExtINT, but Xen doesn't detect such routing and attempts to
inject the interrupt following the native MSI path, and the ExtINT delivery
mode is not supported.

Disable HVM PIRQs by default and provide a per-domain option in xl.cfg to
enable such feature.  Also for backwards compatibility keep the feature enabled
for any resumed domains that don't have an explicit selection.

Note that the only user of the feature (Linux) is also able to handle native
interrupts fine, as the feature was already not used if Xen reported local APIC
hardware virtualization active.

Link: https://github.com/QubesOS/qubes-issues/issues/7971
Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
---
Changes since v1:
 - Fix libxl for PV guests.
---
 docs/man/xl.cfg.5.pod.in          |  7 +++++++
 tools/include/libxl.h             |  7 +++++++
 tools/libs/light/libxl_create.c   |  7 +++++--
 tools/libs/light/libxl_types.idl  |  1 +
 tools/libs/light/libxl_x86.c      | 12 +++++++++---
 tools/python/xen/lowlevel/xc/xc.c |  4 +++-
 tools/xl/xl_parse.c               |  1 +
 xen/arch/x86/domain.c             |  4 +++-
 8 files changed, 36 insertions(+), 7 deletions(-)

diff --git a/docs/man/xl.cfg.5.pod.in b/docs/man/xl.cfg.5.pod.in
index 2e234b450efb..ea8d41727d8e 100644
--- a/docs/man/xl.cfg.5.pod.in
+++ b/docs/man/xl.cfg.5.pod.in
@@ -2460,6 +2460,13 @@ The viridian option can be specified as a boolean. A value of true (1)
 is equivalent to the list [ "defaults" ], and a value of false (0) is
 equivalent to an empty list.
 
+=item B<hvm_pirq=BOOLEAN>
+
+Select whether the guest is allowed to route interrupts from devices (either
+emulated or passed through) over event channels.
+
+This option is disabled by default.
+
 =back
 
 =head3 Emulated VGA Graphics Device
diff --git a/tools/include/libxl.h b/tools/include/libxl.h
index 907aa0a3303a..f1652b1664f0 100644
--- a/tools/include/libxl.h
+++ b/tools/include/libxl.h
@@ -608,6 +608,13 @@
  * executable in order to not run it as the same user as libxl.
  */
 
+/*
+ * LIBXL_HAVE_HVM_PIRQ indicates the presence of the u.hvm.pirq filed in
+ * libxl_domain_build_info that signals whether an HVM guest has accesses to
+ * the XENFEAT_hvm_pirqs feature.
+ */
+#define LIBXL_HAVE_HVM_PIRQ 1
+
 /*
  * libxl memory management
  *
diff --git a/tools/libs/light/libxl_create.c b/tools/libs/light/libxl_create.c
index ce1d43110336..0008fac607e3 100644
--- a/tools/libs/light/libxl_create.c
+++ b/tools/libs/light/libxl_create.c
@@ -376,6 +376,7 @@ int libxl__domain_build_info_setdefault(libxl__gc *gc,
         libxl_defbool_setdefault(&b_info->u.hvm.usb,                false);
         libxl_defbool_setdefault(&b_info->u.hvm.vkb_device,         true);
         libxl_defbool_setdefault(&b_info->u.hvm.xen_platform_pci,   true);
+        libxl_defbool_setdefault(&b_info->u.hvm.pirq,               false);
 
         libxl_defbool_setdefault(&b_info->u.hvm.spice.enable, false);
         if (!libxl_defbool_val(b_info->u.hvm.spice.enable) &&
@@ -2375,10 +2376,12 @@ int libxl_domain_create_restore(libxl_ctx *ctx, libxl_domain_config *d_config,
 
     /*
      * When restoring (either from a save file or for a migration domain) set
-     * the MSR relaxed mode for compatibility with older Xen versions if the
-     * option is not set as part of the original configuration.
+     * the MSR relaxed mode and HVM PIRQs for compatibility with older Xen
+     * versions if the options are not set as part of the original
+     * configuration.
      */
     libxl_defbool_setdefault(&d_config->b_info.arch_x86.msr_relaxed, true);
+    libxl_defbool_setdefault(&d_config->b_info.u.hvm.pirq, true);
 
     return do_domain_create(ctx, d_config, domid, restore_fd, send_back_fd,
                             params, ao_how, aop_console_how);
diff --git a/tools/libs/light/libxl_types.idl b/tools/libs/light/libxl_types.idl
index 7d8bd5d21667..899ad3096926 100644
--- a/tools/libs/light/libxl_types.idl
+++ b/tools/libs/light/libxl_types.idl
@@ -692,6 +692,7 @@ libxl_domain_build_info = Struct("domain_build_info",[
                                        ("rdm", libxl_rdm_reserve),
                                        ("rdm_mem_boundary_memkb", MemKB),
                                        ("mca_caps",         uint64),
+                                       ("pirq",             libxl_defbool),
                                        ])),
                  ("pv", Struct(None, [("kernel", string, {'deprecated_by': 'kernel'}),
                                       ("slack_memkb", MemKB),
diff --git a/tools/libs/light/libxl_x86.c b/tools/libs/light/libxl_x86.c
index d16573e72cd4..a50ec37eb3eb 100644
--- a/tools/libs/light/libxl_x86.c
+++ b/tools/libs/light/libxl_x86.c
@@ -9,6 +9,8 @@ int libxl__arch_domain_prepare_config(libxl__gc *gc,
     switch(d_config->c_info.type) {
     case LIBXL_DOMAIN_TYPE_HVM:
         config->arch.emulation_flags = (XEN_X86_EMU_ALL & ~XEN_X86_EMU_VPCI);
+        if (!libxl_defbool_val(d_config->b_info.u.hvm.pirq))
+            config->arch.emulation_flags &= ~XEN_X86_EMU_USE_PIRQ;
         break;
     case LIBXL_DOMAIN_TYPE_PVH:
         config->arch.emulation_flags = XEN_X86_EMU_LAPIC;
@@ -864,15 +866,19 @@ void libxl__arch_update_domain_config(libxl__gc *gc,
                                       const libxl_domain_config *src)
 {
     /*
-     * Force MSR relaxed to be set (either to true or false) so it's part of
-     * the domain configuration when saving or performing a live-migration.
+     * Force MSR relaxed and HVM pirq to be set (either to true or false) so
+     * it's part of the domain configuration when saving or performing a
+     * live-migration.
      *
-     * Doing so allows the recovery side to figure out whether the flag should
+     * Doing so allows the recovery side to figure out whether the flags should
      * be set to true in order to keep backwards compatibility with already
      * started domains.
      */
     libxl_defbool_setdefault(&dst->b_info.arch_x86.msr_relaxed,
                     libxl_defbool_val(src->b_info.arch_x86.msr_relaxed));
+    if (src->c_info.type == LIBXL_DOMAIN_TYPE_HVM )
+        libxl_defbool_setdefault(&dst->b_info.u.hvm.pirq,
+                                 libxl_defbool_val(src->b_info.u.hvm.pirq));
 }
 
 /*
diff --git a/tools/python/xen/lowlevel/xc/xc.c b/tools/python/xen/lowlevel/xc/xc.c
index d3ea350e07b9..9feb12ae2b16 100644
--- a/tools/python/xen/lowlevel/xc/xc.c
+++ b/tools/python/xen/lowlevel/xc/xc.c
@@ -159,7 +159,9 @@ static PyObject *pyxc_domain_create(XcObject *self,
 
 #if defined (__i386) || defined(__x86_64__)
     if ( config.flags & XEN_DOMCTL_CDF_hvm )
-        config.arch.emulation_flags = (XEN_X86_EMU_ALL & ~XEN_X86_EMU_VPCI);
+        config.arch.emulation_flags = XEN_X86_EMU_ALL &
+                                      ~(XEN_X86_EMU_VPCI |
+                                        XEN_X86_EMU_USE_PIRQ);
 #elif defined (__arm__) || defined(__aarch64__)
     config.arch.gic_version = XEN_DOMCTL_CONFIG_GIC_NATIVE;
 #else
diff --git a/tools/xl/xl_parse.c b/tools/xl/xl_parse.c
index ed983200c3f8..9b358f11b88e 100644
--- a/tools/xl/xl_parse.c
+++ b/tools/xl/xl_parse.c
@@ -1801,6 +1801,7 @@ void parse_config_data(const char *config_source,
         xlu_cfg_get_defbool(config, "hpet", &b_info->u.hvm.hpet, 0);
         xlu_cfg_get_defbool(config, "vpt_align", &b_info->u.hvm.vpt_align, 0);
         xlu_cfg_get_defbool(config, "apic", &b_info->apic, 0);
+        xlu_cfg_get_defbool(config, "hvm_pirq", &b_info->u.hvm.pirq, 0);
 
         switch (xlu_cfg_get_list(config, "viridian",
                                  &viridian, &num_viridian, 1))
diff --git a/xen/arch/x86/domain.c b/xen/arch/x86/domain.c
index 8a31d18f6967..bda853e3c92b 100644
--- a/xen/arch/x86/domain.c
+++ b/xen/arch/x86/domain.c
@@ -725,7 +725,9 @@ static bool emulation_flags_ok(const struct domain *d, uint32_t emflags)
              emflags != (X86_EMU_VPCI | X86_EMU_LAPIC | X86_EMU_IOAPIC) )
             return false;
         if ( !is_hardware_domain(d) &&
-             emflags != (X86_EMU_ALL & ~X86_EMU_VPCI) &&
+             /* HVM PIRQ feature is user-selectable. */
+             (emflags & ~X86_EMU_USE_PIRQ) !=
+             (X86_EMU_ALL & ~(X86_EMU_VPCI | X86_EMU_USE_PIRQ)) &&
              emflags != X86_EMU_LAPIC )
             return false;
     }
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Wed Jan 10 12:59:33 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 10 Jan 2024 12:59:33 +0000
Received: from list by lists.xenproject.org with outflank-mailman.665433.1035630 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNYB5-0006An-RJ; Wed, 10 Jan 2024 12:59:27 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 665433.1035630; Wed, 10 Jan 2024 12:59:27 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNYB5-0006Ag-Oc; Wed, 10 Jan 2024 12:59:27 +0000
Received: by outflank-mailman (input) for mailman id 665433;
 Wed, 10 Jan 2024 12:59:26 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=oG7w=IU=damsy.net=pierre-eric@srs-se1.protection.inumbo.net>)
 id 1rNYB3-0006Aa-Nl
 for xen-devel@lists.xenproject.org; Wed, 10 Jan 2024 12:59:26 +0000
Received: from mail.damsy.net (mail.damsy.net [85.90.245.9])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 13a624f7-afb8-11ee-9b0f-b553b5be7939;
 Wed, 10 Jan 2024 13:59:23 +0100 (CET)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 13a624f7-afb8-11ee-9b0f-b553b5be7939
Message-ID: <aefe25cd-6d67-4594-a368-f8f424526c7d@damsy.net>
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=damsy.net; s=201803;
	t=1704891562;
	h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
	 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=A4r8eZazLgjiMzk/DKUXZkBu5yIo/Yei+trtO5Q1vHc=;
	b=tXwagdUZZJx73BpxwNt/W6hboXzr1kY06nolXMI7SwYX/ZI+Y8t53jiiIBPI02pos1lpHs
	jcg2bZgS7JUsJgI0SXv2dr+4ZM6b7OAQRbi8VagYjc364QntbAjwZzZLReQ4fHYVVfyIyK
	kDvgAKBa9imlvh5lDZLpxG8KXU4OjDVTKY39BF9mZx/b96TxQtD3jDBkngTDJ89Qc9DWDQ
	Ef1tkfbGQNO40X/kycCb6SWUFCQGN4HTQDkej0+MjpyKiHFQTKHf+q305uQdZkoMpr+wDB
	2n0etZdJ5L2KP0bbMtVHsJ5J/sMQAUNJ9m5HSKC+GNq5gzOfO8jAfKVJvZyMsQ==
Date: Wed, 10 Jan 2024 13:59:21 +0100
MIME-Version: 1.0
Subject: Re: [PATCH v6 07/11] virtio-gpu: Handle resource blob commands
To: Akihiko Odaki <akihiko.odaki@daynix.com>, Huang Rui <ray.huang@amd.com>,
 =?UTF-8?Q?Marc-Andr=C3=A9_Lureau?= <marcandre.lureau@gmail.com>,
 =?UTF-8?Q?Philippe_Mathieu-Daud=C3=A9?= <philmd@linaro.org>,
 Gerd Hoffmann <kraxel@redhat.com>, "Michael S . Tsirkin" <mst@redhat.com>,
 Stefano Stabellini <sstabellini@kernel.org>,
 Anthony PERARD <anthony.perard@citrix.com>,
 Antonio Caggiano <quic_acaggian@quicinc.com>,
 "Dr . David Alan Gilbert" <dgilbert@redhat.com>,
 Robert Beckett <bob.beckett@collabora.com>,
 Dmitry Osipenko <dmitry.osipenko@collabora.com>,
 Gert Wollny <gert.wollny@collabora.com>, =?UTF-8?Q?Alex_Benn=C3=A9e?=
 <alex.bennee@linaro.org>, qemu-devel@nongnu.org
Cc: xen-devel@lists.xenproject.org,
 Gurchetan Singh <gurchetansingh@chromium.org>, ernunes@redhat.com,
 Alyssa Ross <hi@alyssa.is>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger.pau@citrix.com>, Alex Deucher <alexander.deucher@amd.com>,
 Stefano Stabellini <stefano.stabellini@amd.com>,
 =?UTF-8?Q?Christian_K=C3=B6nig?= <christian.koenig@amd.com>,
 Xenia Ragiadakou <xenia.ragiadakou@amd.com>,
 Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com>,
 Honglei Huang <honglei1.huang@amd.com>, Julia Zhang <julia.zhang@amd.com>,
 Chen Jiqian <Jiqian.Chen@amd.com>,
 Antonio Caggiano <antonio.caggiano@collabora.com>
References: <20231219075320.165227-1-ray.huang@amd.com>
 <20231219075320.165227-8-ray.huang@amd.com>
 <0d08a014-cdf5-4b4f-a683-171ae4c8b6e0@daynix.com>
Content-Language: fr
From: Pierre-Eric Pelloux-Prayer <pierre-eric@damsy.net>
In-Reply-To: <0d08a014-cdf5-4b4f-a683-171ae4c8b6e0@daynix.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit



Le 21/12/2023 à 09:09, Akihiko Odaki a écrit :
> On 2023/12/19 16:53, Huang Rui wrote:
>> From: Antonio Caggiano <antonio.caggiano@collabora.com>
>>
>> Support BLOB resources creation, mapping and unmapping by calling the
>> new stable virglrenderer 0.10 interface. Only enabled when available and
>> via the blob config. E.g. -device virtio-vga-gl,blob=true
> 
> I have another concern about delaying virgl_renderer_resource_unref() until the resource gets unmapped; the guest will expect the resource ID will be available for a new resource immediately after VIRTIO_GPU_CMD_RESOURCE_UNREF, but it will break the assumption and may corrupt things.
> 

Yes this is a problem.

And another one is virglrenderer is not really thread-safe, so this callstack:

#0  virgl_resource_blob_async_unmap ()
#1  object_finalize ()
#2  object_unref ()
#3  memory_region_unref ()
#4  flatview_destroy ()
#5  call_rcu_thread ()
#6  qemu_thread_start ()

Will call into virgl_renderer_ctx_resource_unmap which in turn uses virgl_resource_lookup
without any multithreading considerations.


Regards,
Pierre-Eric


From xen-devel-bounces@lists.xenproject.org Wed Jan 10 12:59:55 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 10 Jan 2024 12:59:55 +0000
Received: from list by lists.xenproject.org with outflank-mailman.665431.1035642 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNYBX-0006aF-5B; Wed, 10 Jan 2024 12:59:55 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 665431.1035642; Wed, 10 Jan 2024 12:59:55 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNYBX-0006a8-06; Wed, 10 Jan 2024 12:59:55 +0000
Received: by outflank-mailman (input) for mailman id 665431;
 Wed, 10 Jan 2024 12:50:30 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=kDgC=IU=amazon.co.uk=prvs=732579c64=eliasely@srs-se1.protection.inumbo.net>)
 id 1rNY2Q-0005ae-H5
 for xen-devel@lists.xenproject.org; Wed, 10 Jan 2024 12:50:30 +0000
Received: from smtp-fw-80008.amazon.com (smtp-fw-80008.amazon.com
 [99.78.197.219]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id d387774d-afb6-11ee-9b0f-b553b5be7939;
 Wed, 10 Jan 2024 13:50:27 +0100 (CET)
Received: from pdx4-co-svc-p1-lb2-vlan3.amazon.com (HELO
 email-inbound-relay-pdx-2a-m6i4x-83883bdb.us-west-2.amazon.com)
 ([10.25.36.214]) by smtp-border-fw-80008.pdx80.corp.amazon.com with
 ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 10 Jan 2024 12:50:24 +0000
Received: from smtpout.prod.us-east-1.prod.farcaster.email.amazon.dev
 (pdx2-ws-svc-p26-lb5-vlan2.pdx.amazon.com [10.39.38.66])
 by email-inbound-relay-pdx-2a-m6i4x-83883bdb.us-west-2.amazon.com (Postfix)
 with ESMTPS id 9D3EC60C68; Wed, 10 Jan 2024 12:50:23 +0000 (UTC)
Received: from EX19MTAEUA002.ant.amazon.com [10.0.10.100:54762]
 by smtpin.naws.eu-west-1.prod.farcaster.email.amazon.dev [10.0.26.238:2525]
 with esmtp (Farcaster)
 id 21254f9c-3e38-441e-a230-621b679481c4; Wed, 10 Jan 2024 12:50:22 +0000 (UTC)
Received: from EX19D018EUA002.ant.amazon.com (10.252.50.146) by
 EX19MTAEUA002.ant.amazon.com (10.252.50.126) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1118.40; Wed, 10 Jan 2024 12:50:22 +0000
Received: from [192.168.8.225] (10.106.82.23) by EX19D018EUA002.ant.amazon.com
 (10.252.50.146) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1118.40; Wed, 10 Jan
 2024 12:50:19 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: d387774d-afb6-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
  d=amazon.com; i=@amazon.com; q=dns/txt; s=amazon201209;
  t=1704891027; x=1736427027;
  h=message-id:date:mime-version:subject:to:cc:references:
   from:in-reply-to:content-transfer-encoding;
  bh=jMmmbWv6qx49xRxZS/Wny1+KtQ9OWQVIQIAlAph6n34=;
  b=N4Hb9yYcK7zadl6wUv9MTvqWvPvsnGBQE1pDnaPAMJqQQxVZu6t+Mhab
   iLd1ELWmBKKAvJqSgYzI6EPUaIYB4qtTbizNId1IqGa5HysW5mlsqDBn7
   ImDOUlGL9q9Sw33aw3WJ2ui8YVlWEboV7bN9xvQSFUUotqoKDYC9AqxBF
   0=;
X-IronPort-AV: E=Sophos;i="6.04,184,1695686400"; 
   d="scan'208";a="57272337"
X-Farcaster-Flow-ID: 21254f9c-3e38-441e-a230-621b679481c4
Message-ID: <b1879928-8e35-4506-a400-ece5c3096058@amazon.com>
Date: Wed, 10 Jan 2024 12:50:15 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 08/22] x86/pv: rewrite how building PV dom0 handles
 domheap mappings
Content-Language: en-US
To: Jan Beulich <jbeulich@suse.com>, Julien Grall <julien@xen.org>
CC: Hongyan Xia <hongyxia@amazon.com>, Andrew Cooper
	<andrew.cooper3@citrix.com>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
	<roger.pau@citrix.com>, Wei Liu <wl@xen.org>, Julien Grall
	<jgrall@amazon.com>, <xen-devel@lists.xenproject.org>
References: <20221216114853.8227-1-julien@xen.org>
 <20221216114853.8227-9-julien@xen.org>
 <1bd1de52-9f3b-6654-dbda-37001fce31d7@suse.com>
From: "El Yandouzi, Elias" <eliasely@amazon.com>
In-Reply-To: <1bd1de52-9f3b-6654-dbda-37001fce31d7@suse.com>
Content-Type: text/plain; charset="UTF-8"; format=flowed
Content-Transfer-Encoding: 7bit
X-Originating-IP: [10.106.82.23]
X-ClientProxiedBy: EX19D032UWB002.ant.amazon.com (10.13.139.190) To
 EX19D018EUA002.ant.amazon.com (10.252.50.146)
Precedence: Bulk

Hi Jan,

I have been looking at this series recently and tried my best
to address your comments. I'll shortly to the other patches too.

On 22/12/2022 11:48, Jan Beulich wrote:
> On 16.12.2022 12:48, Julien Grall wrote:
>> From: Hongyan Xia <hongyxia@amazon.com>
>>
>> Building a PV dom0 is allocating from the domheap but uses it like the
>> xenheap. This is clearly wrong. Fix.
> 
> "Clearly wrong" would mean there's a bug here, at lest under certain
> conditions. But there isn't: Even on huge systems, due to running on
> idle page tables, all memory is mapped at present.

I agree with you, I'll rephrase the commit message.

> 
>> @@ -711,22 +715,32 @@ int __init dom0_construct_pv(struct domain *d,
>>           v->arch.pv.event_callback_cs    = FLAT_COMPAT_KERNEL_CS;
>>       }
>>   
>> +#define UNMAP_MAP_AND_ADVANCE(mfn_var, virt_var, maddr) \
>> +do {                                                    \
>> +    UNMAP_DOMAIN_PAGE(virt_var);                        \
> 
> Not much point using the macro when ...
> 
>> +    mfn_var = maddr_to_mfn(maddr);                      \
>> +    maddr += PAGE_SIZE;                                 \
>> +    virt_var = map_domain_page(mfn_var);                \
> 
> ... the variable gets reset again to non-NULL unconditionally right
> away.

Sure, I'll change that.

> 
>> +} while ( false )
> 
> This being a local macro and all use sites passing mpt_alloc as the
> last argument, I think that parameter wants dropping, which would
> improve readability.

I have to disagree. It wouldn't improve readability but make only make 
things more obscure. I'll keep the macro as is.

> 
>> @@ -792,9 +808,9 @@ int __init dom0_construct_pv(struct domain *d,
>>               if ( !l3e_get_intpte(*l3tab) )
>>               {
>>                   maddr_to_page(mpt_alloc)->u.inuse.type_info = PGT_l2_page_table;
>> -                l2tab = __va(mpt_alloc); mpt_alloc += PAGE_SIZE;
>> -                clear_page(l2tab);
>> -                *l3tab = l3e_from_paddr(__pa(l2tab), L3_PROT);
>> +                UNMAP_MAP_AND_ADVANCE(l2start_mfn, l2start, mpt_alloc);
>> +                clear_page(l2start);
>> +                *l3tab = l3e_from_mfn(l2start_mfn, L3_PROT);
> 
> The l2start you map on the last iteration here can be re-used ...
> 
>> @@ -805,9 +821,17 @@ int __init dom0_construct_pv(struct domain *d,
>>           unmap_domain_page(l2t);
>>       }
> 
> ... in the code the tail of which is visible here, eliminating a
> redundant map/unmap pair.

Good catch, I'll remove the redundant pair.

> 
>> @@ -977,8 +1001,12 @@ int __init dom0_construct_pv(struct domain *d,
>>        * !CONFIG_VIDEO case so the logic here can be simplified.
>>        */
>>       if ( pv_shim )
>> +    {
>> +        l4start = map_domain_page(l4start_mfn);
>>           pv_shim_setup_dom(d, l4start, v_start, vxenstore_start, vconsole_start,
>>                             vphysmap_start, si);
>> +        UNMAP_DOMAIN_PAGE(l4start);
>> +    }
> 
> The, at the first glance, redundant re-mapping of the L4 table here could
> do with explaining in the description. However, I further wonder in how
> far in shim mode eliminating the direct map is actually useful. Which is
> to say that I question the need for this change in the first place. Or
> wait - isn't this (unlike the rest of this patch) actually a bug fix? At
> this point we're on the domain's page tables, which may not cover the
> page the L4 is allocated at (if a truly huge shim was configured). So I
> guess the change is needed but wants breaking out, allowing to at least
> consider whether to backport it.
> 

I will create a separate patch for this change.

> Jan
> 


From xen-devel-bounces@lists.xenproject.org Wed Jan 10 13:47:36 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 10 Jan 2024 13:47:36 +0000
Received: from list by lists.xenproject.org with outflank-mailman.665492.1035683 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNYvc-00073f-B1; Wed, 10 Jan 2024 13:47:32 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 665492.1035683; Wed, 10 Jan 2024 13:47:32 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNYvc-00073Y-77; Wed, 10 Jan 2024 13:47:32 +0000
Received: by outflank-mailman (input) for mailman id 665492;
 Wed, 10 Jan 2024 13:47:30 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=LBf5=IU=amd.com=Xenia.Ragiadakou@srs-se1.protection.inumbo.net>)
 id 1rNYva-00073Q-Js
 for xen-devel@lists.xenproject.org; Wed, 10 Jan 2024 13:47:30 +0000
Received: from NAM10-BN7-obe.outbound.protection.outlook.com
 (mail-bn7nam10on20600.outbound.protection.outlook.com
 [2a01:111:f403:2009::600])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id c9b21a8a-afbe-11ee-9b0f-b553b5be7939;
 Wed, 10 Jan 2024 14:47:26 +0100 (CET)
Received: from DS7PR03CA0121.namprd03.prod.outlook.com (2603:10b6:5:3b4::6) by
 BN9PR12MB5068.namprd12.prod.outlook.com (2603:10b6:408:135::21) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7181.17; Wed, 10 Jan
 2024 13:47:23 +0000
Received: from DS2PEPF00003442.namprd04.prod.outlook.com
 (2603:10b6:5:3b4:cafe::98) by DS7PR03CA0121.outlook.office365.com
 (2603:10b6:5:3b4::6) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7181.17 via Frontend
 Transport; Wed, 10 Jan 2024 13:47:23 +0000
Received: from SATLEXMB04.amd.com (165.204.84.17) by
 DS2PEPF00003442.mail.protection.outlook.com (10.167.17.69) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.7181.14 via Frontend Transport; Wed, 10 Jan 2024 13:47:23 +0000
Received: from [10.0.2.15] (10.180.168.240) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.34; Wed, 10 Jan
 2024 07:47:21 -0600
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: c9b21a8a-afbe-11ee-9b0f-b553b5be7939
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=dJu8wxq/yCzRTXYiDkyB9/EeRPsm5MMQvbCSyW6pgutLK1WMzdCsAclkOHaSpAz69JNRlXSGlFxGClcAYS+SwJ5JxtcBLeM1H+2obmcZvgFxO8IkjlNzggEUO3F91unoGZexRrBZDhP36pC3U5USRxh+Td0W3q1xQZxmojdZMqURKQiygaHZCuuAvi9n7FiTvipMRsePTvyNxnqag/07oR8A9AxkkYiV5eLhb6IiH707xAryZkrIh/KkJnP2OZRSJqyqNW7AuQ16SqqLhE8ulVh/Gvm4cezy8ABSAu4oPP6xODdE8J1nqrvp7+MUaVoImL0HOz6h4zz0LjMgksuaQg==
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=jSrHv1lzT0lXCtDazdwIRCT0bn/sObeZkzjPUICe1qE=;
 b=GkARfsK8R9VFAX0532xgZCwXDyCFdUxmxu0hVbOf906DYTsCIOJ4bnpzCX+HwyzldRK2tzZUNruxupK33erAlCyaOU/3x+9wPafsFJQ1wsqTY2d2rU6yNBkEmrXNNcxiphInuWz+rgE4+lhaXgmapThvt/8rNG1ix+1sVzZGjUvRouqFmSQBLqiZqEdzB1zxfGF4UfSVIT+26x3CqLBYDgbZjhL39NOrgr2jcjzXYuJEBNgvhxaB9BN5rg0Y8Z98oY0H8t1AlfV8+awg7pqbv425rTFMibzYXEBJLbli98YuMxR1hBDlNej5+Zr4XpBHl4Sf72BBzHq7IkjxNT1OyA==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=suse.com 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)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=jSrHv1lzT0lXCtDazdwIRCT0bn/sObeZkzjPUICe1qE=;
 b=CTequKLlwLguoEzPQ5oh7eCZnRlu76KIXWoWOCmOMOhrEb9JhFtDj0WxCaVMPdEgT9h3MLgx3WadXJeLNw9SEMq5QTEzlgS45fdht64MZ+pdMYeXkaHgiV6VNm56gCauFTm7Nwh2zYniGmPNE1VD57eOwepqgSf3oJxGmt3q85I=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C
Message-ID: <ef67e4b1-3b1e-4cca-b431-cc46464700ca@amd.com>
Date: Wed, 10 Jan 2024 15:47:12 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] x86/hvm: don't expose XENFEAT_hvm_pirqs by default
Content-Language: en-US
To: Jan Beulich <jbeulich@suse.com>, Roger Pau Monne <roger.pau@citrix.com>
CC: Wei Liu <wl@xen.org>, Anthony PERARD <anthony.perard@citrix.com>, Juergen
 Gross <jgross@suse.com>, =?UTF-8?Q?Marek_Marczykowski-G=C3=B3recki?=
	<marmarek@invisiblethingslab.com>, Andrew Cooper <andrew.cooper3@citrix.com>,
	<xen-devel@lists.xenproject.org>
References: <20240110095311.61809-1-roger.pau@citrix.com>
 <238b79f5-0510-4306-9c32-19dade08e819@suse.com>
From: Xenia Ragiadakou <xenia.ragiadakou@amd.com>
In-Reply-To: <238b79f5-0510-4306-9c32-19dade08e819@suse.com>
Content-Type: text/plain; charset="UTF-8"; format=flowed
Content-Transfer-Encoding: 7bit
X-Originating-IP: [10.180.168.240]
X-ClientProxiedBy: SATLEXMB04.amd.com (10.181.40.145) To SATLEXMB04.amd.com
 (10.181.40.145)
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: DS2PEPF00003442:EE_|BN9PR12MB5068:EE_
X-MS-Office365-Filtering-Correlation-Id: f7f04e96-06e4-4c49-fa5f-08dc11e2ac71
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam: BCL:0;
X-Microsoft-Antispam-Message-Info:
	/5lQCyHcvhl2yKVw84QGhlOGHJ++j4aXwjEc0hd1weD/RsqfTFJYVXUjJmVsJCROqm9bHlA03BPFkvwAqx9p5z+9IkPV4lhysON62XyKeyfr305Yo5eM7uECWf6RvO1hhf4dCE9K9BS3MldEDcWcsgpvxywpT4Vdw6yTQ3M1Qm/7BQ5fh3LyvkYAUA27to/ziLZ4rAK4slEXIqi11sTjcyd7rA3587qCXfvY7COFPNkf/iXqLz+WEGBkI0iwR36JR6UrxLGbAiDJdSgRo6zDh2G5V6hhvbW+PWhpNrnG0pJsMq+4J4tgR/W2fCzwCLAIc3n9M18jICrpE5pYbHucb4JSQHYrTEO66okStym5RbQKJLSYeRGMXSUuyXtikpQ+nWx0iSLMJvIkTxxdzoBxQoVhzsWOvHUBV+3ZSjKfPwL0K6AyTtdwM8NN03cWEbMUhZMSHpDDYdIrkLgRohsnk61yetNbZnDv8oP4YeO76QC7wyZPzrB/rZaaM33fpz/whHJraaF0/ky0E3fGewT5RrIQbBuO6QLbXG2ZmCcbfqb5+Bwuh23My4dK2+80oj2Qw0krHfQNeoGTRImIX4Bxl0MJRuiBDqqVaGjB0086yohhs6OvNLqofHOk6bTpnNqU+CXjdktPEXHHTgNZVnUcJKjrWT8Cyxzjz2wJ8dYoY9TPu2wqGfM6iDhmtiHi5KniiXhEs9kOmFtivvwCcRB38GWgZii55YVpSR3PSHEjb8uvgl2N4W4DETcAlTEZER+H2mBoo7wQVl4POadDDgHHPC3Ucb9l6pkUK2EjfSqqWTg=
X-Forefront-Antispam-Report:
	CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230031)(4636009)(376002)(39860400002)(396003)(346002)(136003)(230922051799003)(451199024)(186009)(64100799003)(82310400011)(1800799012)(40470700004)(46966006)(36840700001)(83380400001)(70206006)(336012)(426003)(16526019)(2616005)(26005)(82740400003)(36860700001)(47076005)(4326008)(44832011)(8676002)(53546011)(5660300002)(2906002)(54906003)(6666004)(8936002)(478600001)(16576012)(110136005)(316002)(70586007)(41300700001)(356005)(36756003)(31696002)(86362001)(81166007)(40480700001)(31686004)(40460700003)(43740500002)(36900700001);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Jan 2024 13:47:23.2418
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: f7f04e96-06e4-4c49-fa5f-08dc11e2ac71
X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com]
X-MS-Exchange-CrossTenant-AuthSource:
	DS2PEPF00003442.namprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN9PR12MB5068



On 10/1/24 12:26, Jan Beulich wrote:
> On 10.01.2024 10:53, Roger Pau Monne wrote:
>> The HVM pirq feature allows routing interrupts from both physical and emulated
>> devices over event channels, this was done a performance improvement.  However
>> its usage is fully undocumented, and the only reference implementation is in
>> Linux.  It defeats the purpose of local APIC hardware virtualization, because
>> when using it interrupts avoid the usage of the local APIC altogether.
> 
> So without sufficient APIC acceleration, isn't this arranging for degraded
> performance then? IOW should the new default perhaps be dependent on the
> degree of APIC acceleration?
> 
>> It has also been reported to not work properly with certain devices, at least
>> when using some AMD GPUs Linux attempts to route interrupts over event
>> channels, but Xen doesn't correctly detect such routing, which leads to the
>> hypervisor complaining with:
>>
>> (XEN) d15v0: Unsupported MSI delivery mode 7 for Dom15
>>
>> When MSIs are attempted to be routed over event channels the entry delivery
>> mode is set to ExtINT, but Xen doesn't detect such routing and attempts to
>> inject the interrupt following the native MSI path, and the ExtINT delivery
>> mode is not supported.
> 
> Shouldn't this be properly addressed nevertheless? The way it's described
> it sounds as if MSI wouldn't work at all this way; I can't spot why the
> issue would only be "with certain devices". Yet that in turn doesn't look
> to be very likely - pass-through use cases, in particular SR-IOV ones,
> would certainly have noticed.

The issue gets triggered when the guest performs save/restore of MSIs, 
because PHYSDEVOP_map_pirq is not implemented for MSIs, and thus, QEMU 
cannot remap the MSI to the event channel once unmapped.
So, to fix this issue either would be needed to change QEMU to not unmap 
pirq-emulated MSIs or to implement PHYSDEVOP_map_pirq for MSIs.

But still, even when no device has been passed-through, scheduling 
latencies (of hundreds of ms), were observed in the guest even when 
running a simple loop application, that disappear once the flag is 
disabled. We did not have the chance to root cause it further.

> 
> Jan
> 


From xen-devel-bounces@lists.xenproject.org Wed Jan 10 14:09:17 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 10 Jan 2024 14:09:17 +0000
Received: from list by lists.xenproject.org with outflank-mailman.665512.1035703 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNZGe-0002tW-6L; Wed, 10 Jan 2024 14:09:16 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 665512.1035703; Wed, 10 Jan 2024 14:09:16 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNZGe-0002tP-3j; Wed, 10 Jan 2024 14:09:16 +0000
Received: by outflank-mailman (input) for mailman id 665512;
 Wed, 10 Jan 2024 14:09:15 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=N3bl=IU=amd.com=Stewart.Hildebrand@srs-se1.protection.inumbo.net>)
 id 1rNZGd-0002t4-Fm
 for xen-devel@lists.xenproject.org; Wed, 10 Jan 2024 14:09:15 +0000
Received: from NAM11-CO1-obe.outbound.protection.outlook.com
 (mail-co1nam11on20600.outbound.protection.outlook.com
 [2a01:111:f403:2416::600])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id d4992047-afc1-11ee-98f0-6d05b1d4d9a1;
 Wed, 10 Jan 2024 15:09:14 +0100 (CET)
Received: from BLAPR05CA0003.namprd05.prod.outlook.com (2603:10b6:208:36e::10)
 by LV8PR12MB9334.namprd12.prod.outlook.com (2603:10b6:408:20b::8)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7181.18; Wed, 10 Jan
 2024 14:09:09 +0000
Received: from MN1PEPF0000F0E4.namprd04.prod.outlook.com
 (2603:10b6:208:36e:cafe::ef) by BLAPR05CA0003.outlook.office365.com
 (2603:10b6:208:36e::10) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7181.17 via Frontend
 Transport; Wed, 10 Jan 2024 14:09:09 +0000
Received: from SATLEXMB03.amd.com (165.204.84.17) by
 MN1PEPF0000F0E4.mail.protection.outlook.com (10.167.242.42) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.7181.14 via Frontend Transport; Wed, 10 Jan 2024 14:09:08 +0000
Received: from SATLEXMB04.amd.com (10.181.40.145) by SATLEXMB03.amd.com
 (10.181.40.144) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.34; Wed, 10 Jan
 2024 08:09:08 -0600
Received: from [172.23.76.218] (10.180.168.240) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server id 15.1.2507.34 via Frontend
 Transport; Wed, 10 Jan 2024 08:09:07 -0600
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: d4992047-afc1-11ee-98f0-6d05b1d4d9a1
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=QculUaKTvkthz5jpvAnKEIFP1mCRvEKdBgLEC7o1TzBNE2z4ri0ckonTNazYHfEQkTUWnfeNy8fI3KiS1e4emaxnDCWjmYe11HctOT8OcHCxH+ZmF1AqbYN5DplK38cWF6NAxns8Lowlb6xopd/oobIFzCbFiawUiIiXmIL9jnGbp78WPIriTzZPy1gOpO/B5C3GwqriD7IRRWStkSUczNcwXDTP/eAr5oyE4sn1b7WFVpccYaV2OpSYnMXi9QkLcMhpfRvQeRp9ycoWaN+kQAVt9O0YM4FUpFJkUadEjg6n6tkdgrilT0PnyXwxeOXt4BYlrgWBtupcsHA8k04TFA==
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=AA9/pnc0GnX2BrERDELIxm/XSzXhaAGbxx3jRIpi6J0=;
 b=E3K8+FGLHNLYr07wl0krLpryhV31oluZO/UnFNwGRE4whRGQLx0/V7bIGq3hIcE2qMS2Oxmw82xuGGIRzUvg9Q8AgNPCjJOvVrfiet5u1UHiIndJGbSxZKro5LzsYJ0EvK5ykP62QzSPbGFALGWxnzj0XJUkJsZixbGf8GGN5mOrXeRoBMcUPK69ALjyaCb00C0C/MAhJB9cX300i4oSdtDSJSVAd+uQlx4WtIl2xq3emTLEZRYTXmKrjaJx+CPMebIe5i1Nzh5bkTszvGFFerPaE1i9Aa6Xv+HKjGMWThUNbIYfbMhEGQJSB2YgQngeinMjHJ+QbeY2kLMM4pRJow==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=lists.xenproject.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)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=AA9/pnc0GnX2BrERDELIxm/XSzXhaAGbxx3jRIpi6J0=;
 b=rtCrT51NWk4CiMXuDlE37KBNJ/DB2m6PFTOkAakFQhhe/aEUF2sFiwaLaqMb8zMVM8wnmxpUqqZYYAuqM14dvmCetv2cQYvwlP2rFF8XVWqV83/GjvaftpJN9tSQI6HlcPr6GtbHikMg0Xvpyyk9SOUoW2lfB74HBPiQd7Z+jiQ=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=SATLEXMB03.amd.com; pr=C
Message-ID: <0bbb2260-3fde-4b0f-949d-01ffd03029ce@amd.com>
Date: Wed, 10 Jan 2024 09:09:06 -0500
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [RFC XEN PATCH v4 1/5] xen/vpci: Clear all vpci status of device
Content-Language: en-US
To: "Chen, Jiqian" <Jiqian.Chen@amd.com>
CC: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>, "Jan
 Beulich" <jbeulich@suse.com>, Andrew Cooper <andrew.cooper3@citrix.com>,
	=?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>, Wei Liu
	<wl@xen.org>, George Dunlap <george.dunlap@citrix.com>, Julien Grall
	<julien@xen.org>, Stefano Stabellini <sstabellini@kernel.org>, Anthony PERARD
	<anthony.perard@citrix.com>, Juergen Gross <jgross@suse.com>, "Huang, Ray"
	<Ray.Huang@amd.com>
References: <20240105070920.350113-1-Jiqian.Chen@amd.com>
 <20240105070920.350113-2-Jiqian.Chen@amd.com>
 <70add06b-59c6-469a-8570-f7a6f5bc15fb@amd.com>
 <BL1PR12MB58494843C4BCE9A522A0E674E7692@BL1PR12MB5849.namprd12.prod.outlook.com>
From: Stewart Hildebrand <stewart.hildebrand@amd.com>
In-Reply-To: <BL1PR12MB58494843C4BCE9A522A0E674E7692@BL1PR12MB5849.namprd12.prod.outlook.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 7bit
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: MN1PEPF0000F0E4:EE_|LV8PR12MB9334:EE_
X-MS-Office365-Filtering-Correlation-Id: e4cd0677-55ca-404f-d3f4-08dc11e5b6a1
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam: BCL:0;
X-Microsoft-Antispam-Message-Info:
	o6zBBuVOcRMthEg+1nBH7TdFt2N62O0piMw5qC3c233oXta+ZVw0D2l9TjMTsK1Y80HP71GT4QZQaX4GiiV1p5PRAGnUqxb4rBSXIpAUKTojAI4hCm/ENVUupPU1Tok3uZMA0zToqeE0IJ3FZ69NBQFI4CcQlkLTr5CUaOUJrq0C2QWJXHhu9fGXdGQxCKDlGLjuMgbnVlmVknD6AsnQrWBTahMVlLQvpqEvrFEhfli7KDwjHW20UpbrijOGpe7CT56GIkTIDCKq4qdhiKCdIHW6H56zSfm1I/CW+48UNEOmHJ1tuzfRo8oau+gQf1ZN7QE2B/H987zG3peJRwQ6QX3ZWXepIuu/tLR5MDQcq5pH9mqhqR0QRO4Vrl9TVyVufZJ6UBH3cv3Z/kVWq6A4msenbqZz9AIT/++Ows5cPtXjWwBBVM8U5/ZaPCzGCcfKr1URkzIKTWrtFznxP+b3fP+hFH+12a4egB2WYbg9eyXAnMoqmC/xUYqb+mWvgSyFIN1JRLMefsE+6KKNk0aT9SY3PZIwCaaodI352csW28gfqoMyRyyYZHrivfH8xhXdMw+LNosBuSHlKKD2PkNIyXG5qqrTCZcG7UrP/roRjtsAHI9Lat6MEWYD796uchnu//mA1VuSNmpJmKYPQEB951/5XLrS4JmG86w71v9Fzd8pbKN5A/8+JOcIFVmm/9QHqAo5M7+pXATXo+1xMbQ63W2B3+x9ax1ALFuozyzAjfg0/uDG9cs4rJJG4okBDpmmplb8pLpegXpS2NPSioVh5kl5Mgn5k/6SZ78zgq3TjGs=
X-Forefront-Antispam-Report:
	CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB03.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230031)(4636009)(346002)(136003)(396003)(39860400002)(376002)(230922051799003)(451199024)(82310400011)(186009)(64100799003)(1800799012)(46966006)(40470700004)(36840700001)(47076005)(83380400001)(53546011)(2616005)(426003)(336012)(26005)(82740400003)(36860700001)(6862004)(4326008)(8676002)(41300700001)(7416002)(8936002)(2906002)(5660300002)(478600001)(44832011)(16576012)(966005)(37006003)(54906003)(6636002)(316002)(70586007)(70206006)(86362001)(31696002)(81166007)(356005)(36756003)(31686004)(40480700001)(40460700003)(43740500002)(36900700001);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Jan 2024 14:09:08.8540
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: e4cd0677-55ca-404f-d3f4-08dc11e5b6a1
X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB03.amd.com]
X-MS-Exchange-CrossTenant-AuthSource:
	MN1PEPF0000F0E4.namprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: LV8PR12MB9334

On 1/10/24 01:24, Chen, Jiqian wrote:
> On 2024/1/9 23:24, Stewart Hildebrand wrote:
>> On 1/5/24 02:09, Jiqian Chen wrote:
>>> diff --git a/xen/drivers/pci/physdev.c b/xen/drivers/pci/physdev.c
>>> index 42db3e6d133c..552ccbf747cb 100644
>>> --- a/xen/drivers/pci/physdev.c
>>> +++ b/xen/drivers/pci/physdev.c
>>> @@ -67,6 +68,39 @@ ret_t pci_physdev_op(int cmd, XEN_GUEST_HANDLE_PARAM(void) arg)
>>>          break;
>>>      }
>>>  
>>> +    case PHYSDEVOP_pci_device_state_reset: {
>>> +        struct physdev_pci_device dev;
>>> +        struct pci_dev *pdev;
>>> +        pci_sbdf_t sbdf;
>>> +
>>> +        if ( !is_pci_passthrough_enabled() )
>>> +            return -EOPNOTSUPP;
>>> +
>>> +        ret = -EFAULT;
>>> +        if ( copy_from_guest(&dev, arg, 1) != 0 )
>>> +            break;
>>> +        sbdf = PCI_SBDF(dev.seg, dev.bus, dev.devfn);
>>> +
>>> +        ret = xsm_resource_setup_pci(XSM_PRIV, sbdf.sbdf);
>>> +        if ( ret )
>>> +            break;
>>> +
>>> +        pcidevs_lock();
>>> +        pdev = pci_get_pdev(NULL, sbdf);
>>> +        if ( !pdev )
>>> +        {
>>> +            pcidevs_unlock();
>>> +            ret = -ENODEV;
>>> +            break;
>>> +        }
>>> +
>>
>>         write_lock(&pdev->domain->pci_lock);
>>
>>> +        ret = vpci_reset_device_state(pdev);
>>
>>         write_unlock(&pdev->domain->pci_lock);
> vpci_reset_device_state only reset the vpci state of pdev without deleting pdev from domain, and here has held pcidevs_lock, it has no need to lock pci_lock?

Strictly speaking, it is not enforced yet. However, an upcoming change [1] will expand the scope of d->pci_lock to include protecting the pdev->vpci structure to an extent, so it will be required once that change is committed. In my opinion there is no harm in adding the additional lock now. If you prefer to wait I would not object, but in this case I would at least ask for a TODO comment to help remind us to address it later.

[1] https://lists.xenproject.org/archives/html/xen-devel/2024-01/msg00446.html

> 
>>
>>> +        pcidevs_unlock();
>>> +        if ( ret )
>>> +            printk(XENLOG_ERR "%pp: failed to reset PCI device state\n", &sbdf);
>>> +        break;
>>> +    }
>>> +
>>>      default:
>>>          ret = -ENOSYS;
>>>          break;
>>> diff --git a/xen/drivers/vpci/vpci.c b/xen/drivers/vpci/vpci.c
>>> index 72ef277c4f8e..3c64cb10ccbb 100644
>>> --- a/xen/drivers/vpci/vpci.c
>>> +++ b/xen/drivers/vpci/vpci.c
>>> @@ -107,6 +107,15 @@ int vpci_add_handlers(struct pci_dev *pdev)
>>>  
>>>      return rc;
>>>  }
>>> +
>>> +int vpci_reset_device_state(struct pci_dev *pdev)
>>> +{
>>> +    ASSERT(pcidevs_locked());
>>
>>     ASSERT(rw_is_write_locked(&pdev->domain->pci_lock));
>>
>>> +
>>> +    vpci_remove_device(pdev);
>>> +    return vpci_add_handlers(pdev);
>>> +}
>>> +
>>>  #endif /* __XEN__ */
>>>  
>>>  static int vpci_register_cmp(const struct vpci_register *r1,
> 


From xen-devel-bounces@lists.xenproject.org Wed Jan 10 14:09:17 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 10 Jan 2024 14:09:17 +0000
Received: from list by lists.xenproject.org with outflank-mailman.665511.1035693 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNZGX-0002dy-0R; Wed, 10 Jan 2024 14:09:09 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 665511.1035693; Wed, 10 Jan 2024 14:09:08 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNZGW-0002dr-TW; Wed, 10 Jan 2024 14:09:08 +0000
Received: by outflank-mailman (input) for mailman id 665511;
 Wed, 10 Jan 2024 14:09:07 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=ZQnm=IU=invisiblethingslab.com=marmarek@srs-se1.protection.inumbo.net>)
 id 1rNZGU-0002dl-SJ
 for xen-devel@lists.xenproject.org; Wed, 10 Jan 2024 14:09:07 +0000
Received: from out1-smtp.messagingengine.com (out1-smtp.messagingengine.com
 [66.111.4.25]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id ce8f277d-afc1-11ee-9b0f-b553b5be7939;
 Wed, 10 Jan 2024 15:09:03 +0100 (CET)
Received: from compute4.internal (compute4.nyi.internal [10.202.2.44])
 by mailout.nyi.internal (Postfix) with ESMTP id DC6A85C013F;
 Wed, 10 Jan 2024 09:09:01 -0500 (EST)
Received: from mailfrontend1 ([10.202.2.162])
 by compute4.internal (MEProxy); Wed, 10 Jan 2024 09:09:01 -0500
Received: by mail.messagingengine.com (Postfix) with ESMTPA; Wed,
 10 Jan 2024 09:09:00 -0500 (EST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: ce8f277d-afc1-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=
	invisiblethingslab.com; h=cc:cc:content-type:content-type:date
	:date:from:from:in-reply-to:in-reply-to:message-id:mime-version
	:references:reply-to:subject:subject:to:to; s=fm2; t=1704895741;
	 x=1704982141; bh=bgoorML9XGgR+UjI6N8gRse37mKdRM23JidHXsYL+2g=; b=
	kfI1O4miDZoUVu9fNGVcPl+hVoq2BHlpYqRgL0sAXPFc9a4Pb+sbg6eDDsml0jSe
	EgoI1d40+Ov+1ec92BZD+eMPf47b1DTu06ejISIyTlbwnfxtDa4Afhph06DPEUGP
	JAgBbC+o5q05lIHSgKhPVLpXpsqHjOlFiWMszEHOh/4mqPOlaNMZOGwHKFNhgMnm
	d39Ed2J8ztN8D/txKctPEeJwVcdEEEiL8Ui42DA0QLa+gCw+1MeR6ELIfo5RCcfU
	RVANU5784IdKUwU1T1ndAG0eClXzr/jJSLEnVHAfoLfVUSQrQmOrcLwF4h3eReiz
	PYX3fh3KRw8iUH8KzCu8ZQ==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=
	messagingengine.com; h=cc:cc:content-type:content-type:date:date
	:feedback-id:feedback-id:from:from:in-reply-to:in-reply-to
	:message-id:mime-version:references:reply-to:subject:subject:to
	:to:x-me-proxy:x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s=
	fm2; t=1704895741; x=1704982141; bh=bgoorML9XGgR+UjI6N8gRse37mKd
	RM23JidHXsYL+2g=; b=JvC75SJ6S9zX9ZLCu3R0mHY0VM6mkET+HLemG9x+B9Nq
	5U3XbPzER/0uDMjV1zA26Y1sMM7l5h4zsK7L0+DUHmJSTg/jjNOTgJpAsd+lmHbH
	kksHACFIneu0bRxSD15e7dU7Pnco7JsicTYeAu+Oi75QVYBGbEpRI+i4wnPQK05o
	J0Kk/m9AW85QwiZcZ9q1WIHbxosL/TMSceAYfGlHwRhScD0mIHzb10H+G7am0eYo
	bH2LhBs+MTrNK+6CR0CSxReiNRUxvPWXkp/SptOfnihnvP0t6G7lzf7CzKEsMDhK
	g711uRGwmyzcZ/aau09D1NlPCqQtyOv1Rh6NF52ctA==
X-ME-Sender: <xms:_aSeZZDUv0CFaK4SQ4ksIfP7NveWCijXAimILMWr3sWYMofp4o-arA>
    <xme:_aSeZXj9XAcNTXdjTsdevuqPSRm04DNmDEm8yK5nSQdJJW5sghSuIwpztWfsTC_0g
    LqDIICzSAKfuA>
X-ME-Received: <xmr:_aSeZUkUUmAdE-BNqEA4aRivNUdpobviuzhjOdQbxbw-CbY22BIxy4w7NID6j1CjnBnO2zH4xHwZlO_gFsS3N3zl2KcVenjepA>
X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvkedrvdeiuddgiedtucetufdoteggodetrfdotf
    fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen
    uceurghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmne
    cujfgurhepfffhvfevuffkfhggtggujgesghdtreertddtjeenucfhrhhomhepofgrrhgv
    khcuofgrrhgtiiihkhhofihskhhiqdfikphrvggtkhhiuceomhgrrhhmrghrvghksehinh
    hvihhsihgslhgvthhhihhnghhslhgrsgdrtghomheqnecuggftrfgrthhtvghrnhepgfdu
    leetfeevhfefheeiteeliefhjefhleduveetteekveettddvgeeuteefjedunecuvehluh
    hsthgvrhfuihiivgeptdenucfrrghrrghmpehmrghilhhfrhhomhepmhgrrhhmrghrvghk
    sehinhhvihhsihgslhgvthhhihhnghhslhgrsgdrtghomh
X-ME-Proxy: <xmx:_aSeZTylWwdysArquconLTeTXWgdoueRLqHVZmGTtL8IRKTdCRFZlA>
    <xmx:_aSeZeQGDRBxxCuVa071NO8oDOC-diDCL5z6Jpd7ZCixVwN0vIF78Q>
    <xmx:_aSeZWZj0xw-pnGEfEBqHZATAI0jlfpxnlX3c5gotyRBEj2bAhAkbA>
    <xmx:_aSeZZeMtICwP872c6lC5olKuSv9fKnCxt4HH4n6s37a_-neaAbTiw>
Feedback-ID: i1568416f:Fastmail
Date: Wed, 10 Jan 2024 15:08:56 +0100
From: Marek =?utf-8?Q?Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
To: Jason Andryuk <jandryuk@gmail.com>
Cc: xen-devel@lists.xenproject.org, Wei Liu <wl@xen.org>,
	Anthony PERARD <anthony.perard@citrix.com>,
	Juergen Gross <jgross@suse.com>
Subject: Re: [PATCH 1/2] libxl: Remove cdrom forced QDISK w/ stubdom
Message-ID: <ZZ6k-D3CXoq9rO28@mail-itl>
References: <20240109204655.72063-1-jandryuk@gmail.com>
 <20240109204655.72063-2-jandryuk@gmail.com>
MIME-Version: 1.0
Content-Type: multipart/signed; micalg=pgp-sha256;
	protocol="application/pgp-signature"; boundary="WiBhh2yyrufcCwQA"
Content-Disposition: inline
In-Reply-To: <20240109204655.72063-2-jandryuk@gmail.com>


--WiBhh2yyrufcCwQA
Content-Type: text/plain; protected-headers=v1; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable
Date: Wed, 10 Jan 2024 15:08:56 +0100
From: Marek =?utf-8?Q?Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
To: Jason Andryuk <jandryuk@gmail.com>
Cc: xen-devel@lists.xenproject.org, Wei Liu <wl@xen.org>,
	Anthony PERARD <anthony.perard@citrix.com>,
	Juergen Gross <jgross@suse.com>
Subject: Re: [PATCH 1/2] libxl: Remove cdrom forced QDISK w/ stubdom

On Tue, Jan 09, 2024 at 03:46:54PM -0500, Jason Andryuk wrote:
> A Linux HVM domain ignores PV block devices with type cdrom.  The
> Windows PV drivers also ignore device-type !=3D "disk".  Therefore QEMU's
> emulated CD-ROM support is used.  This allows ejection and other CD-ROM
> features to work.
>=20
> With a stubdom, QEMU is running in the stubdom.  A PV disk is still
> connected into the stubdom, and then QEMU can emulate the CD-ROM into
> the guest.  This removes the need for forcing to a QDISK.  Relax the
> checks to support this.
>=20
> Signed-off-by: Jason Andryuk <jandryuk@gmail.com>
> ---
>  tools/libs/light/libxl_disk.c | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
>=20
> diff --git a/tools/libs/light/libxl_disk.c b/tools/libs/light/libxl_disk.c
> index b65cad33cc..d1f84ef404 100644
> --- a/tools/libs/light/libxl_disk.c
> +++ b/tools/libs/light/libxl_disk.c
> @@ -192,7 +192,8 @@ static int libxl__device_disk_setdefault(libxl__gc *g=
c, uint32_t domid,
> =20
>      /* Force Qdisk backend for CDROM devices of guests with a device mod=
el. */
>      if (disk->is_cdrom !=3D 0 &&
> -        libxl__domain_type(gc, domid) =3D=3D LIBXL_DOMAIN_TYPE_HVM) {
> +        libxl__domain_type(gc, domid) =3D=3D LIBXL_DOMAIN_TYPE_HVM &&
> +        !libxl_get_stubdom_id(CTX, domid)) {

Should this check for stubdomain flavor too? I guess it won't really
work with qemu-traditional.
Similar check also wants to be in the next patch, instead of completely
dropping stubdomain check.

>          if (!(disk->backend =3D=3D LIBXL_DISK_BACKEND_QDISK ||
>                disk->backend =3D=3D LIBXL_DISK_BACKEND_UNKNOWN)) {
>              LOGD(ERROR, domid, "Backend for CD devices on HVM guests mus=
t be Qdisk");
> --=20
> 2.43.0
>=20

--=20
Best Regards,
Marek Marczykowski-G=C3=B3recki
Invisible Things Lab

--WiBhh2yyrufcCwQA
Content-Type: application/pgp-signature; name="signature.asc"

-----BEGIN PGP SIGNATURE-----

iQEzBAEBCAAdFiEEhrpukzGPukRmQqkK24/THMrX1ywFAmWepPgACgkQ24/THMrX
1yyJ9Qf/b2DI03JVmzUhX7Y9DjoagGaZZTVDGJrnTxjPNPUvs31Q7Kh53wPN8vwl
SUJxmNZndO4OuIc0b9z//+SoR0Dd4MQMzsT5qMBfXHOUJfzlL8IULTx1hmAX+DhS
z/BGQrYaP9beDxeJPjAFhcHL3/zeKokJoK2tKYD/Manwf45+1sGL5cNZPSPIT91Q
vFy+fOzThGeBlYf0FpPhD0v7lVYCnu2j4+V+nHrzLp6T/NoN507JbmHVfUScp5xE
9loIQCZPfVi2F1n8ZoM5UcC/VFB2nfwXmAzAzyLzgycDJiLKgFON3K0BgvZj0Tze
QHw6d5rvgUQhAKm5Tlti1vrsRHQHSA==
=+IZt
-----END PGP SIGNATURE-----

--WiBhh2yyrufcCwQA--


From xen-devel-bounces@lists.xenproject.org Wed Jan 10 14:17:11 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 10 Jan 2024 14:17:11 +0000
Received: from list by lists.xenproject.org with outflank-mailman.665520.1035712 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNZOF-0005Dd-SD; Wed, 10 Jan 2024 14:17:07 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 665520.1035712; Wed, 10 Jan 2024 14:17:07 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNZOF-0005DW-Ox; Wed, 10 Jan 2024 14:17:07 +0000
Received: by outflank-mailman (input) for mailman id 665520;
 Wed, 10 Jan 2024 14:17:07 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=ixXT=IU=cloud.com=alejandro.vallejo@srs-se1.protection.inumbo.net>)
 id 1rNZOF-0005DQ-8w
 for xen-devel@lists.xenproject.org; Wed, 10 Jan 2024 14:17:07 +0000
Received: from mail-wm1-x329.google.com (mail-wm1-x329.google.com
 [2a00:1450:4864:20::329])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id ee51d69d-afc2-11ee-9b0f-b553b5be7939;
 Wed, 10 Jan 2024 15:17:05 +0100 (CET)
Received: by mail-wm1-x329.google.com with SMTP id
 5b1f17b1804b1-40e4582ed74so34308355e9.1
 for <xen-devel@lists.xenproject.org>; Wed, 10 Jan 2024 06:17:05 -0800 (PST)
Received: from [10.80.5.21] (default-46-102-197-194.interdsl.co.uk.
 [46.102.197.194]) by smtp.gmail.com with ESMTPSA id
 bh21-20020a05600c3d1500b0040d987aae3esm2327487wmb.13.2024.01.10.06.17.00
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 10 Jan 2024 06:17:01 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: ee51d69d-afc2-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1704896221; x=1705501021; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:from:content-language
         :references:cc:to:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=mq39GSEMtRwZf848Jy4bfDCxzIoGwBU8CZ4wfqMzKes=;
        b=b27JFcS3jxzkM28wIBd7oTfknGJ4q+88Jlr3HCP1UlXlxA72Sriw8Gyqu6emBDiyKW
         v3JVb7L9uXpX19bz2/8bQCg4fBk5S7QG+QjYO7mPQPnbTHJPFAVwJmhWkfdLLGsXfJI/
         3VJhojrDPfIZjj6WBaghzZ3dbdInRjZskLI/I=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704896221; x=1705501021;
        h=content-transfer-encoding:in-reply-to:from:content-language
         :references:cc:to:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=mq39GSEMtRwZf848Jy4bfDCxzIoGwBU8CZ4wfqMzKes=;
        b=wlr0jqPWf7zhi7zRQbk2XewPTELWGsySs5s2QvUfNjx8XF4dgMhfmBfAJVysNvnnNQ
         EMB4vRRPoWDqMFkGy02sVBGmN2JWjkZwOjwp88EhRkEg+SczMwteSu9t/oOFCQIO8qaB
         ikUxHI0hZPO0tJNzgiE6H8UwXBt10s1kOY79JKNZRA4zLO4GIh37HqlCFvL5alaAqCkd
         RAaRZONrPsIe+/WKAZ3pk3DCKhDal32t/0eOokVy+Ny525dIHg+8yt1mXIQu61ifKvmy
         h06JrnZd8oIhW5w+37yls1i9jFM2VVaUUnvWRayaN453JJl92IJaDJVUrpAj5d4HPRk6
         aDkA==
X-Gm-Message-State: AOJu0YwsV+8tALxjYpeBeTwxUo/QbOwm4rlLZOuahdC37DtDuzcaHMC3
	q8t2HdstXu0DF/CoUuGDpjned3XIqBkvrp81Cg/bBVWCT1k=
X-Google-Smtp-Source: AGHT+IFtDHx0aTnOQa9NPFl2794md7PGZFAqh27MaMsMPJGM3MBRwzCxhcmh6JL2MgjmSBt3sg/szg==
X-Received: by 2002:a05:600c:4f45:b0:40e:4161:2273 with SMTP id m5-20020a05600c4f4500b0040e41612273mr315359wmq.157.1704896221388;
        Wed, 10 Jan 2024 06:17:01 -0800 (PST)
Message-ID: <495da94f-4eff-4098-9f65-b056251704b0@cloud.com>
Date: Wed, 10 Jan 2024 14:16:59 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 6/6] xen/x86: Add topology generator
To: Xen-devel <xen-devel@lists.xenproject.org>
Cc: Wei Liu <wl@xen.org>, Anthony PERARD <anthony.perard@citrix.com>,
 Juergen Gross <jgross@suse.com>, Jan Beulich <jbeulich@suse.com>,
 Andrew Cooper <andrew.cooper3@citrix.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
References: <20240109153834.4192-1-alejandro.vallejo@cloud.com>
 <20240109153834.4192-7-alejandro.vallejo@cloud.com>
Content-Language: en-US
From: Alejandro Vallejo <alejandro.vallejo@cloud.com>
In-Reply-To: <20240109153834.4192-7-alejandro.vallejo@cloud.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

Review-to-self after running in Gitlab:

On 09/01/2024 15:38, Alejandro Vallejo wrote:
> +    p->basic.lppp = 0xff;
> +    if ( threads_per_pkg < 0xff )
> +        p->basic.lppp = threads_per_pkg;
> +
> +    switch ( p->x86_vendor )
> +    {
> +        case X86_VENDOR_INTEL:
> +            struct cpuid_cache_leaf *sl = p->cache.subleaf;
> +            for ( size_t i = 0; sl->type &&
> +                                i < ARRAY_SIZE(p->cache.raw); i++, sl++ )
> +            {
> +                sl->cores_per_package = cores_per_pkg - 1;
> +                sl->threads_per_cache = threads_per_core - 1;
> +                if ( sl->type == 3 /* unified cache */ )
> +                    sl->threads_per_cache = threads_per_pkg - 1;
> +            }
> +            break;
> +
> +        case X86_VENDOR_AMD:
> +        case X86_VENDOR_HYGON:

Missing braces around the INTEL block due to the variable declarared
there. I'll include that in v2 after the rest of the review comments
come through.

Cheers,
Alejandro


From xen-devel-bounces@lists.xenproject.org Wed Jan 10 14:28:12 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 10 Jan 2024 14:28:12 +0000
Received: from list by lists.xenproject.org with outflank-mailman.665528.1035723 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNZYs-0007qZ-To; Wed, 10 Jan 2024 14:28:06 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 665528.1035723; Wed, 10 Jan 2024 14:28:06 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNZYs-0007qS-RE; Wed, 10 Jan 2024 14:28:06 +0000
Received: by outflank-mailman (input) for mailman id 665528;
 Wed, 10 Jan 2024 14:28:05 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=/O5u=IU=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rNZYr-0007qM-5d
 for xen-devel@lists.xenproject.org; Wed, 10 Jan 2024 14:28:05 +0000
Received: from mail-wm1-x334.google.com (mail-wm1-x334.google.com
 [2a00:1450:4864:20::334])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 76bc84eb-afc4-11ee-98f0-6d05b1d4d9a1;
 Wed, 10 Jan 2024 15:28:03 +0100 (CET)
Received: by mail-wm1-x334.google.com with SMTP id
 5b1f17b1804b1-40e5508ecb9so13245565e9.3
 for <xen-devel@lists.xenproject.org>; Wed, 10 Jan 2024 06:28:03 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 e30-20020a5d595e000000b0033776a50472sm4046555wri.10.2024.01.10.06.28.02
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 10 Jan 2024 06:28:03 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 76bc84eb-afc4-11ee-98f0-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1704896883; x=1705501683; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=sDzqTAl4diuv1EG4IwpVz89zKVt9xJK8wnRLqqkh1jM=;
        b=DYUhHBKiQIc55BWBZcHzRxaKHOmw7x7mkhjdEebga/jWU2NGBdobXD4j7MkFO4tyKp
         Z6JDWG3f+Y9m16I5Ns5nmr/GrgV2O97Koh8elGbtdBIJnDVnR6vZ0vE6/QVhPO3pYstM
         F/OoUGNTHT2Jt6tZZaWTjjhw04lim7xalx+bIuXN3dPqzBiHjROZwYXpGd2L8hUsFuBF
         Zxk6ZQI56w2st59V6Cl3uEVp5ERC/2HqgCZG/fuUIlGet+kYLPySCXE885UoRTbsMNx+
         6BGIzKWUxP4q2SMf+6/wPA/CfOaxaBs1QwN6eBrJ4HZ0wEJ+y5NsMIYCKXSNTVw+q5t+
         WAqA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704896883; x=1705501683;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=sDzqTAl4diuv1EG4IwpVz89zKVt9xJK8wnRLqqkh1jM=;
        b=I+OZpmtTsl8IdaoSHWP8MuXdJ2IqUI7imVCeBMD52f+U/Lxb8khHlCBP2SHG0UW0Nv
         MKgc808pttk5OC68PpTpLOCL2g1JfpsxVPEIycrJfrp8aL2TJzQ1dm2LlZsisKbV/cW+
         STBB70jj2mG17xKcixWeqexKN2e0NgPyt2CfDuUg4N3+q27LiYqBKwq+idzBvOWAOn3Z
         kfWbNdrqnoWXbqbbZ8wKrxwarbHpkmqzE+O6cjDR9lDDXCxz5GCilu9lrzX2t2W4RtPs
         YqkQ4yfOryUp/PQcgwMLMXy00GyIXze9cNUAiUoIJNfea0/mqbscjYuTDTWtxsFBl4tR
         smCA==
X-Gm-Message-State: AOJu0YzzBI4Gb/KzGBoSojaheNnuWGOBMmBEP1q1eThSTFG3QsXE5BUC
	W6bmE0DR1cuRjh+hWPOM880ubGIMTQi7
X-Google-Smtp-Source: AGHT+IERVX0BD2KQkkT8Z3qD/brgt4Z4JzCTwrEhzbPFrF8lPhK81pdFn4oRel57OgHIWmyR3hDr0w==
X-Received: by 2002:a05:600c:3107:b0:40c:610d:c2bf with SMTP id g7-20020a05600c310700b0040c610dc2bfmr651949wmo.16.1704896883211;
        Wed, 10 Jan 2024 06:28:03 -0800 (PST)
Message-ID: <5c1844d7-162b-430e-a054-274233d8982e@suse.com>
Date: Wed, 10 Jan 2024 15:28:02 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 6/6] xen/x86: Add topology generator
Content-Language: en-US
To: Alejandro Vallejo <alejandro.vallejo@cloud.com>
Cc: Wei Liu <wl@xen.org>, Anthony PERARD <anthony.perard@citrix.com>,
 Juergen Gross <jgross@suse.com>, Andrew Cooper <andrew.cooper3@citrix.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Xen-devel <xen-devel@lists.xenproject.org>
References: <20240109153834.4192-1-alejandro.vallejo@cloud.com>
 <20240109153834.4192-7-alejandro.vallejo@cloud.com>
 <495da94f-4eff-4098-9f65-b056251704b0@cloud.com>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <495da94f-4eff-4098-9f65-b056251704b0@cloud.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 10.01.2024 15:16, Alejandro Vallejo wrote:
> Review-to-self after running in Gitlab:
> 
> On 09/01/2024 15:38, Alejandro Vallejo wrote:
>> +    p->basic.lppp = 0xff;
>> +    if ( threads_per_pkg < 0xff )
>> +        p->basic.lppp = threads_per_pkg;
>> +
>> +    switch ( p->x86_vendor )
>> +    {
>> +        case X86_VENDOR_INTEL:
>> +            struct cpuid_cache_leaf *sl = p->cache.subleaf;
>> +            for ( size_t i = 0; sl->type &&
>> +                                i < ARRAY_SIZE(p->cache.raw); i++, sl++ )
>> +            {
>> +                sl->cores_per_package = cores_per_pkg - 1;
>> +                sl->threads_per_cache = threads_per_core - 1;
>> +                if ( sl->type == 3 /* unified cache */ )
>> +                    sl->threads_per_cache = threads_per_pkg - 1;
>> +            }
>> +            break;
>> +
>> +        case X86_VENDOR_AMD:
>> +        case X86_VENDOR_HYGON:
> 
> Missing braces around the INTEL block due to the variable declarared
> there. I'll include that in v2 after the rest of the review comments
> come through.

And (just looking at the fragment above) too deep indentation as well.

Jan


From xen-devel-bounces@lists.xenproject.org Wed Jan 10 14:31:42 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 10 Jan 2024 14:31:42 +0000
Received: from list by lists.xenproject.org with outflank-mailman.665533.1035732 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNZcL-0001KF-CM; Wed, 10 Jan 2024 14:31:41 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 665533.1035732; Wed, 10 Jan 2024 14:31:41 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNZcL-0001K8-9g; Wed, 10 Jan 2024 14:31:41 +0000
Received: by outflank-mailman (input) for mailman id 665533;
 Wed, 10 Jan 2024 14:31:40 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=/O5u=IU=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rNZcK-0001K2-6C
 for xen-devel@lists.xenproject.org; Wed, 10 Jan 2024 14:31:40 +0000
Received: from mail-wm1-x336.google.com (mail-wm1-x336.google.com
 [2a00:1450:4864:20::336])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id f64304bb-afc4-11ee-9b0f-b553b5be7939;
 Wed, 10 Jan 2024 15:31:37 +0100 (CET)
Received: by mail-wm1-x336.google.com with SMTP id
 5b1f17b1804b1-40e4d64a3fbso23741445e9.2
 for <xen-devel@lists.xenproject.org>; Wed, 10 Jan 2024 06:31:37 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 hn3-20020a05600ca38300b0040e4a7a7ca3sm2279388wmb.43.2024.01.10.06.31.36
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 10 Jan 2024 06:31:36 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: f64304bb-afc4-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1704897097; x=1705501897; darn=lists.xenproject.org;
        h=content-transfer-encoding:autocrypt:content-language:cc:to:subject
         :from:user-agent:mime-version:date:message-id:from:to:cc:subject
         :date:message-id:reply-to;
        bh=sHxjG98LecqqReEuFxkx/WoqeZa3gn+LST6HBOBZTZw=;
        b=W72yvK764El4z7oFGObXpNzl36Xrd+dHPiCMpIg1RettivtRlb6feDm0k4PQC+9afM
         5vK63Qc0LVhnb5MhpFLg/3nm3qgweXHWdzJTladoomBGqYniMA6OTcDpHwm/6Wfi+tzf
         VhygoFBWw48nkzgK0T4eU3oyb+xjT9mNkhQrDPGit0MizhtrrN/C5CI0LuQhZjQBG/P+
         BLsmRD7bEImPrtqrqs86KC8cPTpRDPxWqpxdaCOpaXvZKkQjYy0Ptnhd7unWfOq7lQoq
         mh+DkuMPaJAz3Alu1TgObjZxCI9xFzuJAXpgEd5n9U0i6XbZmvuCDYOHoEh+7Dt/NPOB
         LQdw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704897097; x=1705501897;
        h=content-transfer-encoding:autocrypt:content-language:cc:to:subject
         :from:user-agent:mime-version:date:message-id:x-gm-message-state
         :from:to:cc:subject:date:message-id:reply-to;
        bh=sHxjG98LecqqReEuFxkx/WoqeZa3gn+LST6HBOBZTZw=;
        b=v+5/8b/maxGCi8+oA5455HGDcGD+3BsOchZO2GDd0E9SpONa+FlQ8FcMaUa/ogrZ3q
         YFwBpFlcqK/kb3Xl0s2hNtMQmNPdM1t71gvT4Ez/ntvfbTp1gQdXNBgaLZ+ileJfdP/J
         U3XIz8Z97DoFyhvcZuONI0YHZu2/ft7U2wgI6LB+sZrkk6dasrjSVDcQVzyO8Uf0x1gQ
         WxM88TRl0jsMWJT2gDShG99nOKv4PvStzE7CDeJ0S4CqMI/rWigcbk969d5F2P9VMhDl
         /AL9zSRw0drJUm/1JkGtPWDqwllbeBloXiluBHxkEwBMZil/nsg2A6LmnSlSLDUimeip
         089Q==
X-Gm-Message-State: AOJu0YxiHZdSWX/rkhTQqw4JI0xKtqOQEitMVaZXWt2diRP3EaL8e1jc
	fpCGRkioTcBrxRp1+hAwRMpOIXsvcuDIQUIPE/EfY+jn6A==
X-Google-Smtp-Source: AGHT+IGswRAc/27csMag6lHzpYzhgYziv9XQyEb7c/QOhTkOoRH/MyrKH0xikXKQAbLeQhznC1GR/Q==
X-Received: by 2002:a7b:cd17:0:b0:40e:5573:1b7 with SMTP id f23-20020a7bcd17000000b0040e557301b7mr575556wmj.103.1704897097174;
        Wed, 10 Jan 2024 06:31:37 -0800 (PST)
Message-ID: <4db3f6fd-ba51-43d2-89f7-adbdaf720874@suse.com>
Date: Wed, 10 Jan 2024 15:31:36 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
From: Jan Beulich <jbeulich@suse.com>
Subject: [PATCH v3] NUMA: limit first_valid_mfn exposure
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 George Dunlap <george.dunlap@citrix.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>
Content-Language: en-US
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

Address the TODO regarding first_valid_mfn by making the variable static
when NUMA=y, thus also addressing a Misra C:2012 rule 8.4 concern (on
x86). To carry this out, introduce two new IS_ENABLED()-like macros
conditionally inserting "static". One less macro expansion layer is
sufficient though (I might guess that some early form of IS_ENABLED()
pasted CONFIG_ onto the incoming argument, at which point the extra
layer would have been necessary), and part of the existing helper macros
can be re-used.

Signed-off-by: Jan Beulich <jbeulich@suse.com>
---
v3: Introduce STATIC_IF{,_NOT}().
v2: New, split off.

--- a/xen/common/page_alloc.c
+++ b/xen/common/page_alloc.c
@@ -255,12 +255,10 @@ static PAGE_LIST_HEAD(page_broken_list);
  */
 
 /*
- * first_valid_mfn is exported because it is used when !CONFIG_NUMA.
- *
- * TODO: Consider if we can conditionally export first_valid_mfn based
- * on whether NUMA is selected.
+ * When !CONFIG_NUMA first_valid_mfn is non-static, for use by respective
+ * stubs.
  */
-mfn_t first_valid_mfn = INVALID_MFN_INITIALIZER;
+STATIC_IF(CONFIG_NUMA) mfn_t first_valid_mfn = INVALID_MFN_INITIALIZER;
 
 struct bootmem_region {
     unsigned long s, e; /* MFNs @s through @e-1 inclusive are free */
--- a/xen/include/xen/kconfig.h
+++ b/xen/include/xen/kconfig.h
@@ -11,6 +11,8 @@
 /* cppcheck is failing to parse the macro so use a dummy one */
 #ifdef CPPCHECK
 #define IS_ENABLED(option) option
+#define STATIC_IF(option) option
+#define STATIC_IF_NOT(option) option
 #else
 /*
  * Getting something that works in C and CPP for an arg that may or may
@@ -31,6 +33,17 @@
  * otherwise.
  */
 #define IS_ENABLED(option) config_enabled(option)
+
+/* Use similar trickery for conditionally inserting "static". */
+#define static_if(value) _static_if(__ARG_PLACEHOLDER_##value)
+#define _static_if(arg1_or_junk) ___config_enabled(arg1_or_junk static,)
+
+#define STATIC_IF(option) static_if(option)
+
+#define static_if_not(value) _static_if_not(__ARG_PLACEHOLDER_##value)
+#define _static_if_not(arg1_or_junk) ___config_enabled(arg1_or_junk, static)
+
+#define STATIC_IF_NOT(option) static_if_not(option)
 #endif
 
 #endif /* __XEN_KCONFIG_H */


From xen-devel-bounces@lists.xenproject.org Wed Jan 10 14:56:22 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 10 Jan 2024 14:56:22 +0000
Received: from list by lists.xenproject.org with outflank-mailman.665539.1035743 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNZzx-00068l-9n; Wed, 10 Jan 2024 14:56:05 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 665539.1035743; Wed, 10 Jan 2024 14:56:05 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNZzx-00068e-67; Wed, 10 Jan 2024 14:56:05 +0000
Received: by outflank-mailman (input) for mailman id 665539;
 Wed, 10 Jan 2024 14:56:03 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=/O5u=IU=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rNZzv-00068X-Cf
 for xen-devel@lists.xenproject.org; Wed, 10 Jan 2024 14:56:03 +0000
Received: from mail-wm1-x329.google.com (mail-wm1-x329.google.com
 [2a00:1450:4864:20::329])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 5d439d78-afc8-11ee-98f0-6d05b1d4d9a1;
 Wed, 10 Jan 2024 15:56:00 +0100 (CET)
Received: by mail-wm1-x329.google.com with SMTP id
 5b1f17b1804b1-40e5a5b0fb5so1471375e9.3
 for <xen-devel@lists.xenproject.org>; Wed, 10 Jan 2024 06:55:59 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 bg3-20020a05600c3c8300b0040d91fa270fsm2449640wmb.36.2024.01.10.06.55.58
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 10 Jan 2024 06:55:58 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 5d439d78-afc8-11ee-98f0-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1704898558; x=1705503358; darn=lists.xenproject.org;
        h=content-transfer-encoding:autocrypt:content-language:cc:to:subject
         :from:user-agent:mime-version:date:message-id:from:to:cc:subject
         :date:message-id:reply-to;
        bh=88zDeGIBaJoIV+hLc3oT2iJFbA8oW/DsFEN9f4HVlHc=;
        b=Fzlo4i2Wv8n/w8hOu0oH7CxeYl+9mr+jQJ9yRpt0RNLugsq5nyGkqSLWsB7BuDdIbg
         IcH3tlHUPImYcuSys11gUUWHrryORX+aYk0+QfoPbE2aMwLLASskoDyRk7Br0eCQXrPS
         3Na/lMfiZ688NIhI0Jcxg9DhzGnUxtekobGhYnOq/H5SL2/qk7ZjFx9htiO6PGvQSQWW
         UMMVLVky0l4WA4KbqPEkjnciNk1f34lIRfMwKYUqZoTjwUdLDZuDMtqNWLN1FNI/6X5c
         RXDCBSurz0FK9hqBEX1UM9pJXvkvxSINyo+y5MI254ZeWLWsSani5eVkc/Olh55WszDS
         bRBA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704898558; x=1705503358;
        h=content-transfer-encoding:autocrypt:content-language:cc:to:subject
         :from:user-agent:mime-version:date:message-id:x-gm-message-state
         :from:to:cc:subject:date:message-id:reply-to;
        bh=88zDeGIBaJoIV+hLc3oT2iJFbA8oW/DsFEN9f4HVlHc=;
        b=nXRvpYu5mZnE0rlFHmwqPJLBarPj1+Oq9u4vbvm1ChwJ+voRbTKoMQkYke+TWXtUY5
         YStXWKQA1SH9OZVYg1mvSpbUOfqOlCxIEG7xVErhCTPkqNLDSMBBaTMdHomuVR+VHyLY
         vyiKLEkESjkOSNUgpBfEUAkmVMGlUvk66TO3cbw76CUkYi9C4aOz9uiZ8TqXrZz7Ntu/
         Od6fY0sqa2iBPvbM7er714AGxqO1Zd9ImyuMVbt1DjRW9sa9O/8lohmuvAE2VjsNYnE4
         erkwnJkpRzU8VDcUTmMpQqLLBef7u2tmbnDVI9mpGjjFkjWJbc7lQQbZOwb4hgw4J8WE
         4cuw==
X-Gm-Message-State: AOJu0Yx96GN9t6te7h0dbl6Ktss8LjPHHMSC+lSaD6ZVSkVDjZmIYqke
	VwE6uZ18tuxZRGL3CPkBio808a3VcEKlQOEqrfqcvB0mJA==
X-Google-Smtp-Source: AGHT+IHCkQbXNxY5LM1hWMDq2548pIWBh3oKH9tL8SztD2ykm81zpIWtngbveTrwUNazp5wRw+vzkg==
X-Received: by 2002:a05:600c:3b91:b0:40d:609d:d65e with SMTP id n17-20020a05600c3b9100b0040d609dd65emr572928wms.177.1704898558424;
        Wed, 10 Jan 2024 06:55:58 -0800 (PST)
Message-ID: <8110e31e-5411-467e-9c59-06751902853a@suse.com>
Date: Wed, 10 Jan 2024 15:55:57 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
From: Jan Beulich <jbeulich@suse.com>
Subject: [PATCH v5 0/5] x86/HVM: load state checking
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, Wei Liu <wl@xen.org>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
Content-Language: en-US
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

With the request to convert bounding to actual refusal, and then
doing so in new hooks, the two previously separate patches now need
to be in a series, with infrastructure work done first. Clearly the
checking in other load handlers could (and likely wants to be) moved
to separate check handlers as well - one example of doing so is
added anew in v4, the rest will want doing down the road.

Only patch 1 changed in v5; see there for details.

1: HVM: split restore state checking from state loading
2: HVM: adjust save/restore hook registration for optional check handler
3: vPIT: check values loaded from state save record
4: vPIC: check values loaded from state save record
5: vIRQ: split PCI link load state checking from actual loading

Jan


From xen-devel-bounces@lists.xenproject.org Wed Jan 10 14:57:11 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 10 Jan 2024 14:57:11 +0000
Received: from list by lists.xenproject.org with outflank-mailman.665543.1035752 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNa11-0006cw-IE; Wed, 10 Jan 2024 14:57:11 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 665543.1035752; Wed, 10 Jan 2024 14:57:11 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNa11-0006cp-Fh; Wed, 10 Jan 2024 14:57:11 +0000
Received: by outflank-mailman (input) for mailman id 665543;
 Wed, 10 Jan 2024 14:57:09 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=/O5u=IU=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rNa0z-0006ap-Ju
 for xen-devel@lists.xenproject.org; Wed, 10 Jan 2024 14:57:09 +0000
Received: from mail-wm1-x32f.google.com (mail-wm1-x32f.google.com
 [2a00:1450:4864:20::32f])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 8634b0bf-afc8-11ee-9b0f-b553b5be7939;
 Wed, 10 Jan 2024 15:57:07 +0100 (CET)
Received: by mail-wm1-x32f.google.com with SMTP id
 5b1f17b1804b1-40e5a5b0fb5so1485455e9.3
 for <xen-devel@lists.xenproject.org>; Wed, 10 Jan 2024 06:57:07 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 bg3-20020a05600c3c8300b0040d91fa270fsm2449640wmb.36.2024.01.10.06.57.06
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 10 Jan 2024 06:57:06 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 8634b0bf-afc8-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1704898627; x=1705503427; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:references:cc:to
         :from:content-language:subject:user-agent:mime-version:date
         :message-id:from:to:cc:subject:date:message-id:reply-to;
        bh=C+Ns9F9oXu8JWmZgiuS6JpNqxTmui1PVJh0bmPBcMr0=;
        b=Mx6pf1HDgvmNX6mWNkvuFQ8aN7pqz73N+zVNPXhiNQTd/KTB6YWbJec8Ha1iqnPDy7
         yKznLNnp16aqkQhRJ/uXF/8vYyhUV6znbPRRQhGlvIocHniveWpoWhnIi133FCGRxcSZ
         HhU8tAL9jDdiJtA5lRIl4lEamfTEK5PqNeI765EQ9ugPe6NrTGxuIBFjn219erH/ZghG
         NA/LyVWrxlF0lX2WsOmG26orEfAuPHGKz8AFQMDVVEmoUf3ew2bX5uM9fSk5jXGPxxL8
         qffRWxdJPPPVz5v124TnjciWVEXWzcZrjlbhpHP2s9ICmuS1Ud9W7A2fUeJL/PvwtI1Z
         bcbQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704898627; x=1705503427;
        h=content-transfer-encoding:in-reply-to:autocrypt:references:cc:to
         :from:content-language:subject:user-agent:mime-version:date
         :message-id:x-gm-message-state:from:to:cc:subject:date:message-id
         :reply-to;
        bh=C+Ns9F9oXu8JWmZgiuS6JpNqxTmui1PVJh0bmPBcMr0=;
        b=SIcWCmHj6aIYLycF2YDIIdLlR0mq+5L2O6LQmWOItDSQsJCI5pPcFRxMv5bGbmsb+j
         3oGLnCSHyKYP7WdgbGuZwR264GZ1/cWjS91iD8M8L7bAurtqUBHb8tU7dqonk5saQwDX
         qO5IGG0/MNpbnFGVp8s+EwQyIfh69Y8h5EwvZE5pBb/r00zG+xcrW1f0nLo2fZEJ+xxs
         V2s2eWktqWOvtW1kmMeLoX0z7ABC/H1H6H8ipMAuxTLFNzUzyNT8ZklBL6nejMh/UigY
         HdUy+/yasmk26OFPLH9ZJ70NuH19lF4QMl+woxVmYoQX6kcDh4YjjlW9VZEVqHbLogrh
         Fn8Q==
X-Gm-Message-State: AOJu0YzjMOBpyfFc9aAR3vPd9eliaGujcA4jnUeb2f0l+58wPzVJUauP
	znpSTqxHeX13ooM003B7k3QrGvelp7SIAj4KMkyXQCXU/w==
X-Google-Smtp-Source: AGHT+IGwd4dDRXqLVlNJ8Knn15D1lvRQSiFU6wgYFjBngTtUJpgQwL87pfUkRcwNA3YuHcuzxz2yZg==
X-Received: by 2002:a05:600c:3791:b0:40e:4f24:64d6 with SMTP id o17-20020a05600c379100b0040e4f2464d6mr640947wmr.41.1704898627129;
        Wed, 10 Jan 2024 06:57:07 -0800 (PST)
Message-ID: <88437dea-8448-4420-a608-957f3d861bba@suse.com>
Date: Wed, 10 Jan 2024 15:57:06 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: [PATCH v5 1/5] x86/HVM: split restore state checking from state
 loading
Content-Language: en-US
From: Jan Beulich <jbeulich@suse.com>
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, Wei Liu <wl@xen.org>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
References: <8110e31e-5411-467e-9c59-06751902853a@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <8110e31e-5411-467e-9c59-06751902853a@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

..., at least as reasonably feasible without making a check hook
mandatory (in particular strict vs relaxed/zero-extend length checking
can't be done early this way).

Note that only one of the two uses of "real" hvm_load() is accompanied
with a "checking" one. The other directly consumes hvm_save() output,
which ought to be well-formed. This means that while input data related
checks don't need repeating in the "load" function when already done by
the "check" one (albeit assertions to this effect may be desirable),
domain state related checks (e.g. has_xyz(d)) will be required in both
places.

With the split arch_hvm_{check,load}(), also invoke the latter only
after downing all the vCPU-s.

Suggested-by: Roger Pau Monné <roger.pau@citrix.com>
Signed-off-by: Jan Beulich <jbeulich@suse.com>
---
Do we really need all the copying involved in use of _hvm_read_entry()
(backing hvm_load_entry()? Zero-extending loads are likely easier to
handle that way, but for strict loads all we gain is a reduced risk of
unaligned accesses (compared to simply pointing into h->data[]).
---
v5: Add comment. Re-order vCPU-down vs arch_hvm_load().
v4: Fold hvm_check() into hvm_load().
v2: New.

--- a/xen/arch/x86/domctl.c
+++ b/xen/arch/x86/domctl.c
@@ -379,8 +379,12 @@ long arch_do_domctl(
         if ( copy_from_guest(c.data, domctl->u.hvmcontext.buffer, c.size) != 0 )
             goto sethvmcontext_out;
 
+        ret = hvm_load(d, false, &c);
+        if ( ret )
+            goto sethvmcontext_out;
+
         domain_pause(d);
-        ret = hvm_load(d, &c);
+        ret = hvm_load(d, true, &c);
         domain_unpause(d);
 
     sethvmcontext_out:
--- a/xen/arch/x86/hvm/hvm.c
+++ b/xen/arch/x86/hvm/hvm.c
@@ -5391,7 +5391,7 @@ int hvm_copy_context_and_params(struct d
     }
 
     c.cur = 0;
-    rc = hvm_load(dst, &c);
+    rc = hvm_load(dst, true, &c);
 
  out:
     vfree(c.data);
--- a/xen/arch/x86/hvm/save.c
+++ b/xen/arch/x86/hvm/save.c
@@ -30,7 +30,8 @@ static void arch_hvm_save(struct domain
     d->arch.hvm.sync_tsc = rdtsc();
 }
 
-static int arch_hvm_load(struct domain *d, const struct hvm_save_header *hdr)
+static int arch_hvm_check(const struct domain *d,
+                          const struct hvm_save_header *hdr)
 {
     uint32_t eax, ebx, ecx, edx;
 
@@ -55,6 +56,11 @@ static int arch_hvm_load(struct domain *
                "(%#"PRIx32") and restored on another (%#"PRIx32").\n",
                d->domain_id, hdr->cpuid, eax);
 
+    return 0;
+}
+
+static void arch_hvm_load(struct domain *d, const struct hvm_save_header *hdr)
+{
     /* Restore guest's preferred TSC frequency. */
     if ( hdr->gtsc_khz )
         d->arch.tsc_khz = hdr->gtsc_khz;
@@ -66,13 +72,12 @@ static int arch_hvm_load(struct domain *
 
     /* VGA state is not saved/restored, so we nobble the cache. */
     d->arch.hvm.stdvga.cache = STDVGA_CACHE_DISABLED;
-
-    return 0;
 }
 
 /* List of handlers for various HVM save and restore types */
 static struct {
     hvm_save_handler save;
+    hvm_check_handler check;
     hvm_load_handler load;
     const char *name;
     size_t size;
@@ -88,6 +93,7 @@ void __init hvm_register_savevm(uint16_t
 {
     ASSERT(typecode <= HVM_SAVE_CODE_MAX);
     ASSERT(hvm_sr_handlers[typecode].save == NULL);
+    ASSERT(hvm_sr_handlers[typecode].check == NULL);
     ASSERT(hvm_sr_handlers[typecode].load == NULL);
     hvm_sr_handlers[typecode].save = save_state;
     hvm_sr_handlers[typecode].load = load_state;
@@ -275,12 +281,15 @@ int hvm_save(struct domain *d, hvm_domai
     return 0;
 }
 
-int hvm_load(struct domain *d, hvm_domain_context_t *h)
+/*
+ * @real = false requests checking of the incoming state, while @real = true
+ * requests actual loading, which will then assume that checking was already
+ * done or is unnecessary.
+ */
+int hvm_load(struct domain *d, bool real, hvm_domain_context_t *h)
 {
     const struct hvm_save_header *hdr;
     struct hvm_save_descriptor *desc;
-    hvm_load_handler handler;
-    struct vcpu *v;
     int rc;
 
     if ( d->is_dying )
@@ -291,50 +300,92 @@ int hvm_load(struct domain *d, hvm_domai
     if ( !hdr )
         return -ENODATA;
 
-    rc = arch_hvm_load(d, hdr);
-    if ( rc )
-        return rc;
+    rc = arch_hvm_check(d, hdr);
+    if ( real )
+    {
+        struct vcpu *v;
+
+        ASSERT(!rc);
 
-    /* Down all the vcpus: we only re-enable the ones that had state saved. */
-    for_each_vcpu(d, v)
-        if ( !test_and_set_bit(_VPF_down, &v->pause_flags) )
-            vcpu_sleep_nosync(v);
+        /*
+         * Down all the vcpus: we only re-enable the ones that had state
+         * saved.
+         */
+        for_each_vcpu(d, v)
+            if ( !test_and_set_bit(_VPF_down, &v->pause_flags) )
+                vcpu_sleep_nosync(v);
+
+        arch_hvm_load(d, hdr);
+    }
+    else if ( rc )
+        return rc;
 
     for ( ; ; )
     {
+        const char *name;
+        hvm_load_handler load;
+
         if ( h->size - h->cur < sizeof(struct hvm_save_descriptor) )
         {
             /* Run out of data */
             printk(XENLOG_G_ERR
                    "HVM%d restore: save did not end with a null entry\n",
                    d->domain_id);
+            ASSERT(!real);
             return -ENODATA;
         }
 
         /* Read the typecode of the next entry  and check for the end-marker */
         desc = (struct hvm_save_descriptor *)(&h->data[h->cur]);
-        if ( desc->typecode == 0 )
+        if ( desc->typecode == HVM_SAVE_CODE(END) )
+        {
+            /* Reset cursor for hvm_load(, true, ). */
+            if ( !real )
+                h->cur = 0;
             return 0;
+        }
 
         /* Find the handler for this entry */
-        if ( (desc->typecode > HVM_SAVE_CODE_MAX) ||
-             ((handler = hvm_sr_handlers[desc->typecode].load) == NULL) )
+        if ( desc->typecode >= ARRAY_SIZE(hvm_sr_handlers) ||
+             !(name = hvm_sr_handlers[desc->typecode].name) ||
+             !(load = hvm_sr_handlers[desc->typecode].load) )
         {
             printk(XENLOG_G_ERR "HVM%d restore: unknown entry typecode %u\n",
                    d->domain_id, desc->typecode);
+            ASSERT(!real);
             return -EINVAL;
         }
 
-        /* Load the entry */
-        printk(XENLOG_G_INFO "HVM%d restore: %s %"PRIu16"\n", d->domain_id,
-               hvm_sr_handlers[desc->typecode].name, desc->instance);
-        rc = handler(d, h);
+        if ( real )
+        {
+            /* Load the entry */
+            printk(XENLOG_G_INFO "HVM restore %pd: %s %"PRIu16"\n", d,
+                   name, desc->instance);
+            rc = load(d, h);
+        }
+        else
+        {
+            /* Check the entry. */
+            hvm_check_handler check = hvm_sr_handlers[desc->typecode].check;
+
+            if ( !check )
+            {
+                if ( desc->length > h->size - h->cur - sizeof(*desc) )
+                    return -ENODATA;
+                h->cur += sizeof(*desc) + desc->length;
+                rc = 0;
+            }
+            else
+                rc = check(d, h);
+        }
+
         if ( rc )
         {
-            printk(XENLOG_G_ERR "HVM%d restore: failed to load entry %u/%u rc %d\n",
-                   d->domain_id, desc->typecode, desc->instance, rc);
+            printk(XENLOG_G_ERR "HVM restore %pd: failed to %s %s:%u rc %d\n",
+                   d, real ? "load" : "check", name, desc->instance, rc);
             return rc;
         }
+
         process_pending_softirqs();
     }
 
--- a/xen/arch/x86/include/asm/hvm/save.h
+++ b/xen/arch/x86/include/asm/hvm/save.h
@@ -103,6 +103,8 @@ static inline unsigned int hvm_load_inst
  * restoring.  Both return non-zero on error. */
 typedef int (*hvm_save_handler) (struct vcpu *v,
                                  hvm_domain_context_t *h);
+typedef int (*hvm_check_handler)(const struct domain *d,
+                                 hvm_domain_context_t *h);
 typedef int (*hvm_load_handler) (struct domain *d,
                                  hvm_domain_context_t *h);
 
@@ -140,6 +142,6 @@ size_t hvm_save_size(struct domain *d);
 int hvm_save(struct domain *d, hvm_domain_context_t *h);
 int hvm_save_one(struct domain *d, unsigned int typecode, unsigned int instance,
                  XEN_GUEST_HANDLE_64(uint8) handle, uint64_t *bufsz);
-int hvm_load(struct domain *d, hvm_domain_context_t *h);
+int hvm_load(struct domain *d, bool real, hvm_domain_context_t *h);
 
 #endif /* __XEN_HVM_SAVE_H__ */



From xen-devel-bounces@lists.xenproject.org Wed Jan 10 14:57:36 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 10 Jan 2024 14:57:36 +0000
Received: from list by lists.xenproject.org with outflank-mailman.665548.1035763 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNa1Q-0007FG-17; Wed, 10 Jan 2024 14:57:36 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 665548.1035763; Wed, 10 Jan 2024 14:57:35 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNa1P-0007F9-UK; Wed, 10 Jan 2024 14:57:35 +0000
Received: by outflank-mailman (input) for mailman id 665548;
 Wed, 10 Jan 2024 14:57:35 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=/O5u=IU=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rNa1P-0006ap-63
 for xen-devel@lists.xenproject.org; Wed, 10 Jan 2024 14:57:35 +0000
Received: from mail-wm1-x332.google.com (mail-wm1-x332.google.com
 [2a00:1450:4864:20::332])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 957a49f0-afc8-11ee-9b0f-b553b5be7939;
 Wed, 10 Jan 2024 15:57:33 +0100 (CET)
Received: by mail-wm1-x332.google.com with SMTP id
 5b1f17b1804b1-40e4d515cdeso23217555e9.1
 for <xen-devel@lists.xenproject.org>; Wed, 10 Jan 2024 06:57:33 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 bg3-20020a05600c3c8300b0040d91fa270fsm2449640wmb.36.2024.01.10.06.57.32
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 10 Jan 2024 06:57:32 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 957a49f0-afc8-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1704898653; x=1705503453; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:references:cc:to
         :from:content-language:subject:user-agent:mime-version:date
         :message-id:from:to:cc:subject:date:message-id:reply-to;
        bh=3102lstaK73LzoqFwPAeE+Wj//RivVZPDGZVH12C8fY=;
        b=gm+rv0xfPgNhYF706WrdwHRVUqQeZf+eYgRaU9iuv6Z8Ig88WTXHnqnimEV8FRNe0S
         fFbC8bzxqO2y/rM8ZNLa2UVvaP0ZD1tvhEspPvw3WOY7HJpkV+IBkC1TMqaZCxv8aK2a
         W7yxpkO17pu+qCFbn3HwSQAGUiVEDqkyzuBBQaNBEFHJ1BCQcjxpjqIOWpUZnCUmxc4z
         KEYpIzhiK6Y2znP4mUbeEDiVLPUSA/Ybl7MN0OaS6+KTaINiveTDsW+3hHC5YE/+eUNC
         KyzGBp0BrliuhRkVWgNwvixnynh8FinWfnEjESH31RWssLySzRfk+j5E0vNI6XJoJ0XB
         /e1Q==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704898653; x=1705503453;
        h=content-transfer-encoding:in-reply-to:autocrypt:references:cc:to
         :from:content-language:subject:user-agent:mime-version:date
         :message-id:x-gm-message-state:from:to:cc:subject:date:message-id
         :reply-to;
        bh=3102lstaK73LzoqFwPAeE+Wj//RivVZPDGZVH12C8fY=;
        b=VM/hlJzyGnvKJVfckr3GrYXoLPfDnqe3B4RBoPB2QFE9gpQP8e29EjtlOkj94OcvYw
         5q6JKLlUBxQfIuQzrDSvK3pGyq0HEaL+aAXDMyp6WTrTWw+RFglnYKACudlz6GjWECyz
         cpweN1waXajlHMu0OtkO6JqUgG3WShkmwzZedc1agHyj8tgMOS4KWgtYgRr0vNwbwQ9H
         rt8YVhtjSxqvWiNYRy28uH4BSS/ODunU996QMi+X28vSwseAzilCht09OAHLvIIpEdGI
         V2+peLsbrZkGT4dRsmdJ4oAYkjh4mTIBpDJtdFi/7HYGFhkvCrD3rLoKSB6gR7+zsLMI
         sR+Q==
X-Gm-Message-State: AOJu0YzvOfMYCYHVogcaHBAXd/XpHTiVXgwjQBsDrEZCPAyi8ONYq/+f
	HtSgI1GFoQZSAVZ3GsRhLkNzMcehWZoP+xbu0v61ZZ+ifg==
X-Google-Smtp-Source: AGHT+IHDTaTydRkAfyTOn9O75WQzYwxcjetr6RQH5Ef5XnPum+MTJ3GqQR+w4sca2wiRH8biZ8e9Rg==
X-Received: by 2002:a05:600c:4513:b0:40e:44c2:a3ed with SMTP id t19-20020a05600c451300b0040e44c2a3edmr603861wmo.61.1704898652774;
        Wed, 10 Jan 2024 06:57:32 -0800 (PST)
Message-ID: <c64d27cd-0a31-440d-a231-b27b01fa6b2d@suse.com>
Date: Wed, 10 Jan 2024 15:57:32 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: [PATCH v5 2/5] x86/HVM: adjust save/restore hook registration for
 optional check handler
Content-Language: en-US
From: Jan Beulich <jbeulich@suse.com>
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, Wei Liu <wl@xen.org>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
References: <8110e31e-5411-467e-9c59-06751902853a@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <8110e31e-5411-467e-9c59-06751902853a@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

Register NULL uniformly as a first step.

Signed-off-by: Jan Beulich <jbeulich@suse.com>
Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>
---
v2: New.

--- a/xen/arch/x86/cpu/mcheck/vmce.c
+++ b/xen/arch/x86/cpu/mcheck/vmce.c
@@ -374,7 +374,7 @@ static int cf_check vmce_load_vcpu_ctxt(
     return err ?: vmce_restore_vcpu(v, &ctxt);
 }
 
-HVM_REGISTER_SAVE_RESTORE(VMCE_VCPU, vmce_save_vcpu_ctxt,
+HVM_REGISTER_SAVE_RESTORE(VMCE_VCPU, vmce_save_vcpu_ctxt, NULL,
                           vmce_load_vcpu_ctxt, 1, HVMSR_PER_VCPU);
 #endif
 
--- a/xen/arch/x86/emul-i8254.c
+++ b/xen/arch/x86/emul-i8254.c
@@ -458,7 +458,7 @@ static int cf_check pit_load(struct doma
     return rc;
 }
 
-HVM_REGISTER_SAVE_RESTORE(PIT, pit_save, pit_load, 1, HVMSR_PER_DOM);
+HVM_REGISTER_SAVE_RESTORE(PIT, pit_save, NULL, pit_load, 1, HVMSR_PER_DOM);
 #endif
 
 /* The intercept action for PIT DM retval: 0--not handled; 1--handled. */
--- a/xen/arch/x86/hvm/hpet.c
+++ b/xen/arch/x86/hvm/hpet.c
@@ -692,7 +692,7 @@ static int cf_check hpet_load(struct dom
     return 0;
 }
 
-HVM_REGISTER_SAVE_RESTORE(HPET, hpet_save, hpet_load, 1, HVMSR_PER_DOM);
+HVM_REGISTER_SAVE_RESTORE(HPET, hpet_save, NULL, hpet_load, 1, HVMSR_PER_DOM);
 
 static void hpet_set(HPETState *h)
 {
--- a/xen/arch/x86/hvm/hvm.c
+++ b/xen/arch/x86/hvm/hvm.c
@@ -793,7 +793,7 @@ static int cf_check hvm_load_tsc_adjust(
     return 0;
 }
 
-HVM_REGISTER_SAVE_RESTORE(TSC_ADJUST, hvm_save_tsc_adjust,
+HVM_REGISTER_SAVE_RESTORE(TSC_ADJUST, hvm_save_tsc_adjust, NULL,
                           hvm_load_tsc_adjust, 1, HVMSR_PER_VCPU);
 
 static int cf_check hvm_save_cpu_ctxt(struct vcpu *v, hvm_domain_context_t *h)
@@ -1186,7 +1186,7 @@ static int cf_check hvm_load_cpu_ctxt(st
     return 0;
 }
 
-HVM_REGISTER_SAVE_RESTORE(CPU, hvm_save_cpu_ctxt, hvm_load_cpu_ctxt, 1,
+HVM_REGISTER_SAVE_RESTORE(CPU, hvm_save_cpu_ctxt, NULL, hvm_load_cpu_ctxt, 1,
                           HVMSR_PER_VCPU);
 
 #define HVM_CPU_XSAVE_SIZE(xcr0) (offsetof(struct hvm_hw_cpu_xsave, \
@@ -1535,6 +1535,7 @@ static int __init cf_check hvm_register_
     hvm_register_savevm(CPU_XSAVE_CODE,
                         "CPU_XSAVE",
                         hvm_save_cpu_xsave_states,
+                        NULL,
                         hvm_load_cpu_xsave_states,
                         HVM_CPU_XSAVE_SIZE(xfeature_mask) +
                             sizeof(struct hvm_save_descriptor),
@@ -1543,6 +1544,7 @@ static int __init cf_check hvm_register_
     hvm_register_savevm(CPU_MSR_CODE,
                         "CPU_MSR",
                         hvm_save_cpu_msrs,
+                        NULL,
                         hvm_load_cpu_msrs,
                         HVM_CPU_MSR_SIZE(ARRAY_SIZE(msrs_to_send)) +
                             sizeof(struct hvm_save_descriptor),
--- a/xen/arch/x86/hvm/irq.c
+++ b/xen/arch/x86/hvm/irq.c
@@ -784,9 +784,9 @@ static int cf_check irq_load_link(struct
     return 0;
 }
 
-HVM_REGISTER_SAVE_RESTORE(PCI_IRQ, irq_save_pci, irq_load_pci,
+HVM_REGISTER_SAVE_RESTORE(PCI_IRQ, irq_save_pci, NULL, irq_load_pci,
                           1, HVMSR_PER_DOM);
-HVM_REGISTER_SAVE_RESTORE(ISA_IRQ, irq_save_isa, irq_load_isa,
+HVM_REGISTER_SAVE_RESTORE(ISA_IRQ, irq_save_isa, NULL, irq_load_isa,
                           1, HVMSR_PER_DOM);
-HVM_REGISTER_SAVE_RESTORE(PCI_LINK, irq_save_link, irq_load_link,
+HVM_REGISTER_SAVE_RESTORE(PCI_LINK, irq_save_link, NULL, irq_load_link,
                           1, HVMSR_PER_DOM);
--- a/xen/arch/x86/hvm/mtrr.c
+++ b/xen/arch/x86/hvm/mtrr.c
@@ -773,7 +773,7 @@ static int cf_check hvm_load_mtrr_msr(st
     return 0;
 }
 
-HVM_REGISTER_SAVE_RESTORE(MTRR, hvm_save_mtrr_msr, hvm_load_mtrr_msr, 1,
+HVM_REGISTER_SAVE_RESTORE(MTRR, hvm_save_mtrr_msr, NULL, hvm_load_mtrr_msr, 1,
                           HVMSR_PER_VCPU);
 
 void memory_type_changed(struct domain *d)
--- a/xen/arch/x86/hvm/pmtimer.c
+++ b/xen/arch/x86/hvm/pmtimer.c
@@ -300,7 +300,7 @@ static int cf_check acpi_load(struct dom
     return 0;
 }
 
-HVM_REGISTER_SAVE_RESTORE(PMTIMER, acpi_save, acpi_load,
+HVM_REGISTER_SAVE_RESTORE(PMTIMER, acpi_save, NULL, acpi_load,
                           1, HVMSR_PER_DOM);
 
 int pmtimer_change_ioport(struct domain *d, uint64_t version)
--- a/xen/arch/x86/hvm/rtc.c
+++ b/xen/arch/x86/hvm/rtc.c
@@ -797,7 +797,7 @@ static int cf_check rtc_load(struct doma
     return 0;
 }
 
-HVM_REGISTER_SAVE_RESTORE(RTC, rtc_save, rtc_load, 1, HVMSR_PER_DOM);
+HVM_REGISTER_SAVE_RESTORE(RTC, rtc_save, NULL, rtc_load, 1, HVMSR_PER_DOM);
 
 void rtc_reset(struct domain *d)
 {
--- a/xen/arch/x86/hvm/save.c
+++ b/xen/arch/x86/hvm/save.c
@@ -88,6 +88,7 @@ static struct {
 void __init hvm_register_savevm(uint16_t typecode,
                                 const char *name,
                                 hvm_save_handler save_state,
+                                hvm_check_handler check_state,
                                 hvm_load_handler load_state,
                                 size_t size, int kind)
 {
@@ -96,6 +97,7 @@ void __init hvm_register_savevm(uint16_t
     ASSERT(hvm_sr_handlers[typecode].check == NULL);
     ASSERT(hvm_sr_handlers[typecode].load == NULL);
     hvm_sr_handlers[typecode].save = save_state;
+    hvm_sr_handlers[typecode].check = check_state;
     hvm_sr_handlers[typecode].load = load_state;
     hvm_sr_handlers[typecode].name = name;
     hvm_sr_handlers[typecode].size = size;
--- a/xen/arch/x86/hvm/vioapic.c
+++ b/xen/arch/x86/hvm/vioapic.c
@@ -631,7 +631,8 @@ static int cf_check ioapic_load(struct d
     return 0;
 }
 
-HVM_REGISTER_SAVE_RESTORE(IOAPIC, ioapic_save, ioapic_load, 1, HVMSR_PER_DOM);
+HVM_REGISTER_SAVE_RESTORE(IOAPIC, ioapic_save, NULL, ioapic_load, 1,
+                          HVMSR_PER_DOM);
 
 void vioapic_reset(struct domain *d)
 {
--- a/xen/arch/x86/hvm/viridian/viridian.c
+++ b/xen/arch/x86/hvm/viridian/viridian.c
@@ -1145,7 +1145,7 @@ static int cf_check viridian_load_domain
     return 0;
 }
 
-HVM_REGISTER_SAVE_RESTORE(VIRIDIAN_DOMAIN, viridian_save_domain_ctxt,
+HVM_REGISTER_SAVE_RESTORE(VIRIDIAN_DOMAIN, viridian_save_domain_ctxt, NULL,
                           viridian_load_domain_ctxt, 1, HVMSR_PER_DOM);
 
 static int cf_check viridian_save_vcpu_ctxt(
@@ -1188,7 +1188,7 @@ static int cf_check viridian_load_vcpu_c
     return 0;
 }
 
-HVM_REGISTER_SAVE_RESTORE(VIRIDIAN_VCPU, viridian_save_vcpu_ctxt,
+HVM_REGISTER_SAVE_RESTORE(VIRIDIAN_VCPU, viridian_save_vcpu_ctxt, NULL,
                           viridian_load_vcpu_ctxt, 1, HVMSR_PER_VCPU);
 
 static int __init cf_check parse_viridian_version(const char *arg)
--- a/xen/arch/x86/hvm/vlapic.c
+++ b/xen/arch/x86/hvm/vlapic.c
@@ -1617,9 +1617,9 @@ static int cf_check lapic_load_regs(stru
     return 0;
 }
 
-HVM_REGISTER_SAVE_RESTORE(LAPIC, lapic_save_hidden,
+HVM_REGISTER_SAVE_RESTORE(LAPIC, lapic_save_hidden, NULL,
                           lapic_load_hidden, 1, HVMSR_PER_VCPU);
-HVM_REGISTER_SAVE_RESTORE(LAPIC_REGS, lapic_save_regs,
+HVM_REGISTER_SAVE_RESTORE(LAPIC_REGS, lapic_save_regs, NULL,
                           lapic_load_regs, 1, HVMSR_PER_VCPU);
 
 int vlapic_init(struct vcpu *v)
--- a/xen/arch/x86/hvm/vpic.c
+++ b/xen/arch/x86/hvm/vpic.c
@@ -449,7 +449,7 @@ static int cf_check vpic_load(struct dom
     return 0;
 }
 
-HVM_REGISTER_SAVE_RESTORE(PIC, vpic_save, vpic_load, 2, HVMSR_PER_DOM);
+HVM_REGISTER_SAVE_RESTORE(PIC, vpic_save, NULL, vpic_load, 2, HVMSR_PER_DOM);
 
 void vpic_reset(struct domain *d)
 {
--- a/xen/arch/x86/include/asm/hvm/save.h
+++ b/xen/arch/x86/include/asm/hvm/save.h
@@ -113,6 +113,7 @@ typedef int (*hvm_load_handler) (struct
 void hvm_register_savevm(uint16_t typecode,
                          const char *name, 
                          hvm_save_handler save_state,
+                         hvm_check_handler check_state,
                          hvm_load_handler load_state,
                          size_t size, int kind);
 
@@ -122,12 +123,13 @@ void hvm_register_savevm(uint16_t typeco
 
 /* Syntactic sugar around that function: specify the max number of
  * saves, and this calculates the size of buffer needed */
-#define HVM_REGISTER_SAVE_RESTORE(_x, _save, _load, _num, _k)             \
+#define HVM_REGISTER_SAVE_RESTORE(_x, _save, check, _load, _num, _k)      \
 static int __init cf_check __hvm_register_##_x##_save_and_restore(void)   \
 {                                                                         \
     hvm_register_savevm(HVM_SAVE_CODE(_x),                                \
                         #_x,                                              \
                         &_save,                                           \
+                        check,                                            \
                         &_load,                                           \
                         (_num) * (HVM_SAVE_LENGTH(_x)                     \
                                   + sizeof (struct hvm_save_descriptor)), \



From xen-devel-bounces@lists.xenproject.org Wed Jan 10 14:57:59 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 10 Jan 2024 14:57:59 +0000
Received: from list by lists.xenproject.org with outflank-mailman.665552.1035772 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNa1n-0007o2-7T; Wed, 10 Jan 2024 14:57:59 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 665552.1035772; Wed, 10 Jan 2024 14:57:59 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNa1n-0007nt-4u; Wed, 10 Jan 2024 14:57:59 +0000
Received: by outflank-mailman (input) for mailman id 665552;
 Wed, 10 Jan 2024 14:57:58 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=/O5u=IU=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rNa1m-0006ap-0Q
 for xen-devel@lists.xenproject.org; Wed, 10 Jan 2024 14:57:58 +0000
Received: from mail-wm1-x333.google.com (mail-wm1-x333.google.com
 [2a00:1450:4864:20::333])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id a2cb12c9-afc8-11ee-9b0f-b553b5be7939;
 Wed, 10 Jan 2024 15:57:55 +0100 (CET)
Received: by mail-wm1-x333.google.com with SMTP id
 5b1f17b1804b1-40e586a62f7so5691945e9.2
 for <xen-devel@lists.xenproject.org>; Wed, 10 Jan 2024 06:57:55 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 bg3-20020a05600c3c8300b0040d91fa270fsm2449640wmb.36.2024.01.10.06.57.54
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 10 Jan 2024 06:57:55 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: a2cb12c9-afc8-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1704898675; x=1705503475; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:references:cc:to
         :from:content-language:subject:user-agent:mime-version:date
         :message-id:from:to:cc:subject:date:message-id:reply-to;
        bh=ZlEogBHJ42bqKdVld3OnXFEdms3+g1R9Ku2xVNYGcew=;
        b=D0LbPuqJ/1GFV+QIohfs73Go3PkXyMZYCrU2EXxxKWVsn0hCXLydG7kNujrx6vMiVr
         GrjTu4hWoGM2an++4NtPbgezMEVdMZj7RWnjsrWkOKh9nBiCgbDSPxog6oLi54zIHmO/
         O/cc5d8fNVuNDXtSvaE/SOkN7bFhREwYO6z5yUT1Wo4EULS2IkLcgjl+927LIb4ClIp2
         sk7IxfyU7eAwFsO3GmtlvV8FSmASWWsIN2E0ZHHxwwYSTVtJbJdQxOR4SE/qJl6k+ZXC
         6TiQiTNXNCwA4LHOupvQGD9cYetZ3fIPlpYqkFfKsgPc45T1TmnoT8CQ1m/Mlg1MtMV5
         wbew==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704898675; x=1705503475;
        h=content-transfer-encoding:in-reply-to:autocrypt:references:cc:to
         :from:content-language:subject:user-agent:mime-version:date
         :message-id:x-gm-message-state:from:to:cc:subject:date:message-id
         :reply-to;
        bh=ZlEogBHJ42bqKdVld3OnXFEdms3+g1R9Ku2xVNYGcew=;
        b=Y/8EfFScNjIIw1zIFeVRL4Mvy8h51X8pRlbTWC5DtANVWDtegZEEUUDtWNK3Yyb4gt
         yTP0HyQjT7R+rJHKjgzhil/TeX1L54cnBoazWm0k8F6YOpyl8vMLUk6BRjFkyW+IcVO3
         0NTH+HPa2uiFbHh8WXgN48rLno3TIJNRDyE+Vhnt3lWO86RkyG9wDpwXn47RAUssLBRD
         eL0VY2kQmtungFYSFhreW7gA6noWawrr2N4J+bGianB/RnkUersvH6KhlHHeX1fmKztV
         L8W1EZxQwo6777nNtXP7XE7DIqtXK1uS2d2ORPzRyKvc3a5mujEePE0YIUlCQeqZjCr1
         l4Jg==
X-Gm-Message-State: AOJu0YwjwLujeBly4MYW12gXKeG/dLczJKR+UZDwCM5PK8RvaCdaw/ur
	LLGVtunP988pqzbfPAziKJp6hksKvTtdlcb24AQuuu0skg==
X-Google-Smtp-Source: AGHT+IGqPRZUmbbDhoja1xdxE5cCCS4uoRPFgeEHEe1bFfxyBlbTW98nxPYD55HNOyyiKPXWRX0y4A==
X-Received: by 2002:a05:600c:1f88:b0:40e:3511:2c39 with SMTP id je8-20020a05600c1f8800b0040e35112c39mr672943wmb.172.1704898675203;
        Wed, 10 Jan 2024 06:57:55 -0800 (PST)
Message-ID: <37993f0d-2f53-4889-9dcb-82c34da0dba7@suse.com>
Date: Wed, 10 Jan 2024 15:57:54 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: [PATCH v5 3/5] x86/vPIT: check values loaded from state save record
Content-Language: en-US
From: Jan Beulich <jbeulich@suse.com>
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, Wei Liu <wl@xen.org>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
References: <8110e31e-5411-467e-9c59-06751902853a@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <8110e31e-5411-467e-9c59-06751902853a@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

In particular pit_latch_status() and speaker_ioport_read() perform
calculations which assume in-bounds values. Several of the state save
record fields can hold wider ranges, though. Refuse to load values which
cannot result from normal operation, except mode, the init state of
which (see also below) cannot otherwise be reached.

Note that ->gate should only be possible to be zero for channel 2;
enforce that as well.

Adjust pit_reset()'s writing of ->mode as well, to not unduly affect
the value pit_latch_status() may calculate. The chosen mode of 7 is
still one which cannot be established by writing the control word. Note
that with or without this adjustment effectively all switch() statements
using mode as the control expression aren't quite right when the PIT is
still in that init state; there is an apparent assumption that before
these can sensibly be invoked, the guest would init the PIT (i.e. in
particular set the mode).

Signed-off-by: Jan Beulich <jbeulich@suse.com>
Reviewed-by: Roger Pau Monné <roger.pau@citrix.com>
---
For mode we could refuse to load values in the [0x08,0xfe] range; I'm
not certain that's going to be overly helpful.

For count I was considering to clip the saved value to 16 bits (i.e. to
convert the internally used 0x10000 back to the architectural 0x0000),
but pit_save() doesn't easily lend itself to such a "fixup". If desired
perhaps better a separate change anyway.
---
v3: Slightly adjust two comments. Re-base over rename in earlier patch.
v2: Introduce separate checking function; switch to refusing to load
    bogus values. Re-base.

--- a/xen/arch/x86/emul-i8254.c
+++ b/xen/arch/x86/emul-i8254.c
@@ -47,6 +47,7 @@
 #define RW_STATE_MSB 2
 #define RW_STATE_WORD0 3
 #define RW_STATE_WORD1 4
+#define RW_STATE_NUM 5
 
 #define get_guest_time(v) \
    (is_hvm_vcpu(v) ? hvm_get_guest_time(v) : (u64)get_s_time())
@@ -427,6 +428,47 @@ static int cf_check pit_save(struct vcpu
     return rc;
 }
 
+static int cf_check pit_check(const struct domain *d, hvm_domain_context_t *h)
+{
+    const struct hvm_hw_pit *hw;
+    unsigned int i;
+
+    if ( !has_vpit(d) )
+        return -ENODEV;
+
+    hw = hvm_get_entry(PIT, h);
+    if ( !hw )
+        return -ENODATA;
+
+    /*
+     * Check to-be-loaded values are within valid range, for them to represent
+     * actually reachable state.  Uses of some of the values elsewhere assume
+     * this is the case.  Note that the channels' mode fields aren't checked;
+     * Xen prior to 4.19 might save them as 0xff.
+     */
+    if ( hw->speaker_data_on > 1 || hw->pad0 )
+        return -EDOM;
+
+    for ( i = 0; i < ARRAY_SIZE(hw->channels); ++i )
+    {
+        const struct hvm_hw_pit_channel *ch = &hw->channels[i];
+
+        if ( ch->count > 0x10000 ||
+             ch->count_latched >= RW_STATE_NUM ||
+             ch->read_state >= RW_STATE_NUM ||
+             ch->write_state >= RW_STATE_NUM ||
+             ch->rw_mode > RW_STATE_WORD0 ||
+             ch->gate > 1 ||
+             ch->bcd > 1 )
+            return -EDOM;
+
+        if ( i != 2 && !ch->gate )
+            return -EINVAL;
+    }
+
+    return 0;
+}
+
 static int cf_check pit_load(struct domain *d, hvm_domain_context_t *h)
 {
     PITState *pit = domain_vpit(d);
@@ -443,6 +485,14 @@ static int cf_check pit_load(struct doma
         goto out;
     }
     
+    for ( i = 0; i < ARRAY_SIZE(pit->hw.channels); ++i )
+    {
+        struct hvm_hw_pit_channel *ch = &pit->hw.channels[i];
+
+        if ( (ch->mode &= 7) > 5 )
+            ch->mode -= 4;
+    }
+
     /*
      * Recreate platform timers from hardware state.  There will be some 
      * time jitter here, but the wall-clock will have jumped massively, so 
@@ -458,7 +508,7 @@ static int cf_check pit_load(struct doma
     return rc;
 }
 
-HVM_REGISTER_SAVE_RESTORE(PIT, pit_save, NULL, pit_load, 1, HVMSR_PER_DOM);
+HVM_REGISTER_SAVE_RESTORE(PIT, pit_save, pit_check, pit_load, 1, HVMSR_PER_DOM);
 #endif
 
 /* The intercept action for PIT DM retval: 0--not handled; 1--handled. */
@@ -575,7 +625,7 @@ void pit_reset(struct domain *d)
     for ( i = 0; i < 3; i++ )
     {
         s = &pit->hw.channels[i];
-        s->mode = 0xff; /* the init mode */
+        s->mode = 7; /* unreachable sentinel */
         s->gate = (i != 2);
         pit_load_count(pit, i, 0);
     }



From xen-devel-bounces@lists.xenproject.org Wed Jan 10 14:58:26 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 10 Jan 2024 14:58:26 +0000
Received: from list by lists.xenproject.org with outflank-mailman.665556.1035783 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNa2E-000083-FO; Wed, 10 Jan 2024 14:58:26 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 665556.1035783; Wed, 10 Jan 2024 14:58:26 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNa2E-00007t-CQ; Wed, 10 Jan 2024 14:58:26 +0000
Received: by outflank-mailman (input) for mailman id 665556;
 Wed, 10 Jan 2024 14:58:24 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=/O5u=IU=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rNa2C-0006ap-JA
 for xen-devel@lists.xenproject.org; Wed, 10 Jan 2024 14:58:24 +0000
Received: from mail-wm1-x329.google.com (mail-wm1-x329.google.com
 [2a00:1450:4864:20::329])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id b308f556-afc8-11ee-9b0f-b553b5be7939;
 Wed, 10 Jan 2024 15:58:22 +0100 (CET)
Received: by mail-wm1-x329.google.com with SMTP id
 5b1f17b1804b1-40d8902da73so40293545e9.2
 for <xen-devel@lists.xenproject.org>; Wed, 10 Jan 2024 06:58:22 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 bg3-20020a05600c3c8300b0040d91fa270fsm2449640wmb.36.2024.01.10.06.58.21
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 10 Jan 2024 06:58:22 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: b308f556-afc8-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1704898702; x=1705503502; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:references:cc:to
         :from:content-language:subject:user-agent:mime-version:date
         :message-id:from:to:cc:subject:date:message-id:reply-to;
        bh=ymXg0bpmFz+1mXkWwxvgqG3wuNIkNAkO2q/Jn5XmZJc=;
        b=BBxPKhk/Bh+Qm8tpX2EQ9OH9XMPhqAmh2J/8DNvCNehmOkiVeTq2rKNmoQWZX/PObw
         tCTHlTIKO27O0GBqCB4ClOr5Lovw9OVmTTbHGvVgGVPjevg1kcdhK6SiTDpypqB7ji6D
         MR+jKwfPgFsocG8ODcRxylN2fnQh7vJt8iXF9W3H7BOWMeKRmgVU7uzIBajfXCfSa9w4
         iMIQl2nhFBwWdv1Z5BB+Z8RwvIeUwb/5EJDzaOR0hHwPRLSzqqubQgBoAkUERolcQcLu
         jjCjf7B3r37balHeAIvxA8k7F+04bbOyal6IgHzkL+WWQ+HdDB0xW+7VgV66OK1RFFMh
         objQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704898702; x=1705503502;
        h=content-transfer-encoding:in-reply-to:autocrypt:references:cc:to
         :from:content-language:subject:user-agent:mime-version:date
         :message-id:x-gm-message-state:from:to:cc:subject:date:message-id
         :reply-to;
        bh=ymXg0bpmFz+1mXkWwxvgqG3wuNIkNAkO2q/Jn5XmZJc=;
        b=PtgUitod+TboyHowhqg3EmnFAL8deK+ijNi57vxZTUJNhzOQ5dPqAKK90ZAXrx1JhH
         S1NvwFBwBXixcgxJSJkXZE6NmuqXFhBObci/fFwcthFiAbYwbtU7/fv3uP9gSuKVoFrb
         LtBaIDIQM6BG9BMZsNINl+uI6zZie2sokdkTuJmQjin6Fa3yzCSJ/fJWJItbxUNNq5Gi
         Wa8Oj2X+NaYtORwPdhsK2DESb0lJDjHFvHn82F0yeWQVt0Naeo1lr69qY2BQSp1ZE9ts
         GsyV+NlcJEWPZ1AJN0YWe/siqTnoa1RcKl23yqE6yQqD5ebAYk3LJ4DsgEhxU4vhGSiY
         y66g==
X-Gm-Message-State: AOJu0YyFDRdjt5hW8mqSx6y90aPEVNAgkEKlN+KT8pi8E9WyRkQAhkya
	xHgiSffw2yqRuw1d4zczxx15TxBr/1jcBXImd2MGBKy39g==
X-Google-Smtp-Source: AGHT+IFCaiRv24o3bDw9N2BNcvtjXE01o5QxDf3PNFqJMyakBhMThs2ZpoGXKh7zM9QwlPCXo3yo/g==
X-Received: by 2002:a05:600c:4b8a:b0:40e:4cc6:b4b4 with SMTP id e10-20020a05600c4b8a00b0040e4cc6b4b4mr770987wmp.36.1704898702379;
        Wed, 10 Jan 2024 06:58:22 -0800 (PST)
Message-ID: <5d68379d-a08b-48bf-a73f-2ef1486c5984@suse.com>
Date: Wed, 10 Jan 2024 15:58:21 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: [PATCH v5 4/5] x86/vPIC: check values loaded from state save record
Content-Language: en-US
From: Jan Beulich <jbeulich@suse.com>
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, Wei Liu <wl@xen.org>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
References: <8110e31e-5411-467e-9c59-06751902853a@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <8110e31e-5411-467e-9c59-06751902853a@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Loading is_master from the state save record can lead to out-of-bounds
accesses via at least the two container_of() uses by vpic_domain() and
__vpic_lock(). Make sure the value is consistent with the instance being
loaded.

For ->int_output (which for whatever reason isn't a 1-bit bitfield),
besides bounds checking also take ->init_state into account.

For ELCR follow what vpic_intercept_elcr_io()'s write path and
vpic_reset() do, i.e. don't insist on the internal view of the value to
be saved.

Move the instance range check as well, leaving just an assertion in the
load handler.

Signed-off-by: Jan Beulich <jbeulich@suse.com>
Reviewed-by: Roger Pau Monné <roger.pau@citrix.com>
---
v3: vpic_domain() fix and vpic_elcr_mask() adjustment split out. Re-base
    over rename in earlier patch.
v2: Introduce separate checking function; switch to refusing to load
    bogus values. Re-base.

--- a/xen/arch/x86/hvm/vpic.c
+++ b/xen/arch/x86/hvm/vpic.c
@@ -429,6 +429,38 @@ static int cf_check vpic_save(struct vcp
     return 0;
 }
 
+static int cf_check vpic_check(const struct domain *d, hvm_domain_context_t *h)
+{
+    unsigned int inst = hvm_load_instance(h);
+    const struct hvm_hw_vpic *s;
+
+    if ( !has_vpic(d) )
+        return -ENODEV;
+
+    /* Which PIC is this? */
+    if ( inst >= ARRAY_SIZE(d->arch.hvm.vpic) )
+        return -ENOENT;
+
+    s = hvm_get_entry(PIC, h);
+    if ( !s )
+        return -ENODATA;
+
+    /*
+     * Check to-be-loaded values are within valid range, for them to represent
+     * actually reachable state.  Uses of some of the values elsewhere assume
+     * this is the case.
+     */
+    if ( s->int_output > 1 )
+        return -EDOM;
+
+    if ( s->is_master != !inst ||
+         (s->int_output && s->init_state) ||
+         (s->elcr & ~vpic_elcr_mask(s, 1)) )
+        return -EINVAL;
+
+    return 0;
+}
+
 static int cf_check vpic_load(struct domain *d, hvm_domain_context_t *h)
 {
     struct hvm_hw_vpic *s;
@@ -438,18 +470,21 @@ static int cf_check vpic_load(struct dom
         return -ENODEV;
 
     /* Which PIC is this? */
-    if ( inst > 1 )
-        return -ENOENT;
+    ASSERT(inst < ARRAY_SIZE(d->arch.hvm.vpic));
     s = &d->arch.hvm.vpic[inst];
 
     /* Load the state */
     if ( hvm_load_entry(PIC, h, s) != 0 )
         return -EINVAL;
 
+    if ( s->is_master )
+        s->elcr |= 1 << 2;
+
     return 0;
 }
 
-HVM_REGISTER_SAVE_RESTORE(PIC, vpic_save, NULL, vpic_load, 2, HVMSR_PER_DOM);
+HVM_REGISTER_SAVE_RESTORE(PIC, vpic_save, vpic_check, vpic_load, 2,
+                          HVMSR_PER_DOM);
 
 void vpic_reset(struct domain *d)
 {



From xen-devel-bounces@lists.xenproject.org Wed Jan 10 15:12:24 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 10 Jan 2024 15:12:24 +0000
Received: from list by lists.xenproject.org with outflank-mailman.665585.1035809 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNaFi-0004ic-51; Wed, 10 Jan 2024 15:12:22 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 665585.1035809; Wed, 10 Jan 2024 15:12:22 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNaFi-0004iV-2O; Wed, 10 Jan 2024 15:12:22 +0000
Received: by outflank-mailman (input) for mailman id 665585;
 Wed, 10 Jan 2024 15:12:20 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=/O5u=IU=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rNa2Y-0006ap-VU
 for xen-devel@lists.xenproject.org; Wed, 10 Jan 2024 14:58:46 +0000
Received: from mail-wm1-x32a.google.com (mail-wm1-x32a.google.com
 [2a00:1450:4864:20::32a])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id c069aa27-afc8-11ee-9b0f-b553b5be7939;
 Wed, 10 Jan 2024 15:58:45 +0100 (CET)
Received: by mail-wm1-x32a.google.com with SMTP id
 5b1f17b1804b1-40e4d515cdeso23232845e9.1
 for <xen-devel@lists.xenproject.org>; Wed, 10 Jan 2024 06:58:45 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 bg3-20020a05600c3c8300b0040d91fa270fsm2449640wmb.36.2024.01.10.06.58.44
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 10 Jan 2024 06:58:44 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: c069aa27-afc8-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1704898725; x=1705503525; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:references:cc:to
         :from:content-language:subject:user-agent:mime-version:date
         :message-id:from:to:cc:subject:date:message-id:reply-to;
        bh=FVPwAQJHu1Ys1D1OFhmt8x4WU9vXNMKYubLdP+XfH6Q=;
        b=erFj5vJh2thQooT5vy0Rw1I1D2RNBdGO1OmrTPd1QJxRCN6+fGdM7G/+BP6Z1Sr1KY
         XuNrcrwQ+HIGEV0BgH2YBstosPGXLnS7mQ0EebsfYKc0c1P3WkZEnUWqaVh28BjyPWqG
         1R/pHyNMwANdHs2f02DI8zvkmtYTeIclsyhn5VWBswym5L6hZm9QLs1o+wk4GeQCwyHa
         nNKbtZ1BhLI6ST1tabT360tI7XpI7i5KReexK9ctoS4lJDAqePv7gqQY6EjvK/jQPwQI
         W+hKtbgAIU7sNUfEQIzMpySg7UC0C9Ft0EETHxXwwNmNyPgDJw7L0K/MXs9JHeuqRjhY
         7EyQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704898725; x=1705503525;
        h=content-transfer-encoding:in-reply-to:autocrypt:references:cc:to
         :from:content-language:subject:user-agent:mime-version:date
         :message-id:x-gm-message-state:from:to:cc:subject:date:message-id
         :reply-to;
        bh=FVPwAQJHu1Ys1D1OFhmt8x4WU9vXNMKYubLdP+XfH6Q=;
        b=X36EksVIZ7lh+P3X9RCVdBCeHQsa3o6HG5i34g+bfUxygmKzQLMtZEVBesnlmulbzW
         PvsVHMn054sYYcYsLBzb+MZSvcAv7b+MfPiR2QKhfx2non0Aty4Mr9cLf/eqVDPvlB8v
         PeJhtQ5TWnGLfwXrHfJAakQyPNAFnNDB8unwPNI4TLkvuN0/Qlsxe8l05yHMwe5Rgiwl
         cmL6ftuMl3eTllA0iohcX5NdQWhYLHM0OGBvfxT66wy8jcH1CxErQpCktCpfTIuk+nDJ
         V9WElFJWP5/o3p4dhGz/rKRpe5GcaCTZE7sWS4UYgI3nSLzNIuLNlbUUTubb4xVX3YFr
         XSBQ==
X-Gm-Message-State: AOJu0YzhQalEH08FwBq2Hw+EG8wmzSctVrhC66/+rfZdnm0eaGW1WHWJ
	ifzbv0/hBBhTImLttdaSql95nxq7D6/P/dwl4W9yfVEFJA==
X-Google-Smtp-Source: AGHT+IEQURZurI+Nxdoq5cj14seNph29kf5M31nmN8egPlPmbh4clEL0LBFkFua7s/5+4DXD7kcgDA==
X-Received: by 2002:a05:600c:1e88:b0:40e:4daf:b73d with SMTP id be8-20020a05600c1e8800b0040e4dafb73dmr635076wmb.169.1704898724921;
        Wed, 10 Jan 2024 06:58:44 -0800 (PST)
Message-ID: <e3cf9c8b-f063-4612-a588-afb71c39be42@suse.com>
Date: Wed, 10 Jan 2024 15:58:44 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: [PATCH v5 5/5] x86/vIRQ: split PCI link load state checking from
 actual loading
Content-Language: en-US
From: Jan Beulich <jbeulich@suse.com>
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, Wei Liu <wl@xen.org>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
References: <8110e31e-5411-467e-9c59-06751902853a@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <8110e31e-5411-467e-9c59-06751902853a@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Move the checking into a check hook, and add checking of the padding
fields as well.

Signed-off-by: Jan Beulich <jbeulich@suse.com>
Reviewed-by: Roger Pau Monné <roger.pau@citrix.com>
---
v4: New.

--- a/xen/arch/x86/hvm/irq.c
+++ b/xen/arch/x86/hvm/irq.c
@@ -749,6 +749,30 @@ static int cf_check irq_load_isa(struct
     return 0;
 }
 
+static int cf_check irq_check_link(const struct domain *d,
+                                   hvm_domain_context_t *h)
+{
+    const struct hvm_hw_pci_link *pci_link = hvm_get_entry(PCI_LINK, h);
+    unsigned int link;
+
+    if ( !pci_link )
+        return -ENODATA;
+
+    for ( link = 0; link < ARRAY_SIZE(pci_link->pad0); link++ )
+        if ( pci_link->pad0[link] )
+            return -EINVAL;
+
+    for ( link = 0; link < ARRAY_SIZE(pci_link->route); link++ )
+        if ( pci_link->route[link] > 15 )
+        {
+            printk(XENLOG_G_ERR
+                   "HVM restore: PCI-ISA link %u out of range (%u)\n",
+                   link, pci_link->route[link]);
+            return -EINVAL;
+        }
+
+    return 0;
+}
 
 static int cf_check irq_load_link(struct domain *d, hvm_domain_context_t *h)
 {
@@ -759,16 +783,6 @@ static int cf_check irq_load_link(struct
     if ( hvm_load_entry(PCI_LINK, h, &hvm_irq->pci_link) != 0 )
         return -EINVAL;
 
-    /* Sanity check */
-    for ( link = 0; link < 4; link++ )
-        if ( hvm_irq->pci_link.route[link] > 15 )
-        {
-            printk(XENLOG_G_ERR
-                   "HVM restore: PCI-ISA link %u out of range (%u)\n",
-                   link, hvm_irq->pci_link.route[link]);
-            return -EINVAL;
-        }
-
     /* Adjust the GSI assert counts for the link outputs.
      * This relies on the PCI and ISA IRQ state being loaded first */
     for ( link = 0; link < 4; link++ )
@@ -788,5 +802,5 @@ HVM_REGISTER_SAVE_RESTORE(PCI_IRQ, irq_s
                           1, HVMSR_PER_DOM);
 HVM_REGISTER_SAVE_RESTORE(ISA_IRQ, irq_save_isa, NULL, irq_load_isa,
                           1, HVMSR_PER_DOM);
-HVM_REGISTER_SAVE_RESTORE(PCI_LINK, irq_save_link, NULL, irq_load_link,
-                          1, HVMSR_PER_DOM);
+HVM_REGISTER_SAVE_RESTORE(PCI_LINK, irq_save_link, irq_check_link,
+                          irq_load_link, 1, HVMSR_PER_DOM);



From xen-devel-bounces@lists.xenproject.org Wed Jan 10 15:20:23 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 10 Jan 2024 15:20:23 +0000
Received: from list by lists.xenproject.org with outflank-mailman.665602.1035819 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNaNO-0007zY-U1; Wed, 10 Jan 2024 15:20:18 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 665602.1035819; Wed, 10 Jan 2024 15:20:18 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNaNO-0007zR-R7; Wed, 10 Jan 2024 15:20:18 +0000
Received: by outflank-mailman (input) for mailman id 665602;
 Wed, 10 Jan 2024 15:20:17 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=ginX=IU=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1rNaNN-0007zL-TB
 for xen-devel@lists.xenproject.org; Wed, 10 Jan 2024 15:20:17 +0000
Received: from mail-wr1-x42e.google.com (mail-wr1-x42e.google.com
 [2a00:1450:4864:20::42e])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id c24e56b6-afcb-11ee-98f0-6d05b1d4d9a1;
 Wed, 10 Jan 2024 16:20:17 +0100 (CET)
Received: by mail-wr1-x42e.google.com with SMTP id
 ffacd0b85a97d-3368ae75082so2983192f8f.1
 for <xen-devel@lists.xenproject.org>; Wed, 10 Jan 2024 07:20:17 -0800 (PST)
Received: from [10.80.67.30] (default-46-102-197-194.interdsl.co.uk.
 [46.102.197.194]) by smtp.gmail.com with ESMTPSA id
 t8-20020a05600c450800b0040d7b340e07sm2503018wmo.45.2024.01.10.07.20.16
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 10 Jan 2024 07:20:16 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: c24e56b6-afcb-11ee-98f0-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1704900016; x=1705504816; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=afTnLJ9cBUqwLAipqkyA0WVHLqR7ewNBQkc7XKpMr0A=;
        b=lclLmZNxf07+bSm6PvcF1iMkuinZMsCZ+WyXwU73cWnKtl5Z4z9VTBuLvSnu1/XaZ5
         TkKtYxKQ5WxKU34gsfqC57sjcGmoLgK6foUzhEobfxA5ACc6HQUMCAathUJUbrWW39I5
         tTJEXb35ScnlOWx62h8mP6SW/jEd0WY/jR2Mo=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704900016; x=1705504816;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=afTnLJ9cBUqwLAipqkyA0WVHLqR7ewNBQkc7XKpMr0A=;
        b=dT9bQnFEIgyQJCOzdEXfvhY5TR3IlsVnpGpqm/b6FNbQCVc4TGG7GzBWhNZRoca3AQ
         tcfPc4d77iCm+2jgbF1bYl8WyuCBzbsO1XzGJ57fCTOKTo1+CSbSjvl+n5vDbmCWUShl
         05ytbsajo5I+uPL2BEemwKsedIlh+WK8vgVutWViEqSiS70oqWARjOVNvl4thwD2DFdd
         rmWlkUz8FQVY6K/LrxHRrYcZPPdc8OTYgaxX7H5FknrAEuOU7+DWBdWbekq+ZI5YrUBF
         62s0qYR5LSQtnmTuQ/WrOzldLmimy03mfAcHxTXdiIgSplpgnMM3cIy/GvEgQXOeGnJd
         HU1Q==
X-Gm-Message-State: AOJu0Yw5hC3ozh5sgEDUesRogqDLxvTo/piqNiePTQpoLsxfuaFVXRvP
	lLPdMqTamtn/aTXSuIYGn3MaYVJ6VHfC3A==
X-Google-Smtp-Source: AGHT+IF6rZaV46L2fFP38GLI7HqHXxooaKCTP9iq84N6y8eIj67B9qXLAAfvEmm4xiAUxdoRtogJ5Q==
X-Received: by 2002:a05:600c:3ba8:b0:40e:3cab:ef81 with SMTP id n40-20020a05600c3ba800b0040e3cabef81mr129486wms.97.1704900016458;
        Wed, 10 Jan 2024 07:20:16 -0800 (PST)
Message-ID: <91a354a1-4af8-42f4-a2ce-6fa43758a764@citrix.com>
Date: Wed, 10 Jan 2024 15:20:15 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] x86/hvm: don't expose XENFEAT_hvm_pirqs by default
Content-Language: en-GB
To: Jan Beulich <jbeulich@suse.com>, Roger Pau Monne <roger.pau@citrix.com>
Cc: Wei Liu <wl@xen.org>, Anthony PERARD <anthony.perard@citrix.com>,
 Juergen Gross <jgross@suse.com>,
 =?UTF-8?Q?Marek_Marczykowski-G=C3=B3recki?=
 <marmarek@invisiblethingslab.com>, xen-devel@lists.xenproject.org
References: <20240110095311.61809-1-roger.pau@citrix.com>
 <238b79f5-0510-4306-9c32-19dade08e819@suse.com>
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 xsFNBFLhNn8BEADVhE+Hb8i0GV6mihnnr/uiQQdPF8kUoFzCOPXkf7jQ5sLYeJa0cQi6Penp
 VtiFYznTairnVsN5J+ujSTIb+OlMSJUWV4opS7WVNnxHbFTPYZVQ3erv7NKc2iVizCRZ2Kxn
 srM1oPXWRic8BIAdYOKOloF2300SL/bIpeD+x7h3w9B/qez7nOin5NzkxgFoaUeIal12pXSR
 Q354FKFoy6Vh96gc4VRqte3jw8mPuJQpfws+Pb+swvSf/i1q1+1I4jsRQQh2m6OTADHIqg2E
 ofTYAEh7R5HfPx0EXoEDMdRjOeKn8+vvkAwhviWXTHlG3R1QkbE5M/oywnZ83udJmi+lxjJ5
 YhQ5IzomvJ16H0Bq+TLyVLO/VRksp1VR9HxCzItLNCS8PdpYYz5TC204ViycobYU65WMpzWe
 LFAGn8jSS25XIpqv0Y9k87dLbctKKA14Ifw2kq5OIVu2FuX+3i446JOa2vpCI9GcjCzi3oHV
 e00bzYiHMIl0FICrNJU0Kjho8pdo0m2uxkn6SYEpogAy9pnatUlO+erL4LqFUO7GXSdBRbw5
 gNt25XTLdSFuZtMxkY3tq8MFss5QnjhehCVPEpE6y9ZjI4XB8ad1G4oBHVGK5LMsvg22PfMJ
 ISWFSHoF/B5+lHkCKWkFxZ0gZn33ju5n6/FOdEx4B8cMJt+cWwARAQABzSlBbmRyZXcgQ29v
 cGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPsLBegQTAQgAJAIbAwULCQgHAwUVCgkI
 CwUWAgMBAAIeAQIXgAUCWKD95wIZAQAKCRBlw/kGpdefoHbdD/9AIoR3k6fKl+RFiFpyAhvO
 59ttDFI7nIAnlYngev2XUR3acFElJATHSDO0ju+hqWqAb8kVijXLops0gOfqt3VPZq9cuHlh
 IMDquatGLzAadfFx2eQYIYT+FYuMoPZy/aTUazmJIDVxP7L383grjIkn+7tAv+qeDfE+txL4
 SAm1UHNvmdfgL2/lcmL3xRh7sub3nJilM93RWX1Pe5LBSDXO45uzCGEdst6uSlzYR/MEr+5Z
 JQQ32JV64zwvf/aKaagSQSQMYNX9JFgfZ3TKWC1KJQbX5ssoX/5hNLqxMcZV3TN7kU8I3kjK
 mPec9+1nECOjjJSO/h4P0sBZyIUGfguwzhEeGf4sMCuSEM4xjCnwiBwftR17sr0spYcOpqET
 ZGcAmyYcNjy6CYadNCnfR40vhhWuCfNCBzWnUW0lFoo12wb0YnzoOLjvfD6OL3JjIUJNOmJy
 RCsJ5IA/Iz33RhSVRmROu+TztwuThClw63g7+hoyewv7BemKyuU6FTVhjjW+XUWmS/FzknSi
 dAG+insr0746cTPpSkGl3KAXeWDGJzve7/SBBfyznWCMGaf8E2P1oOdIZRxHgWj0zNr1+ooF
 /PzgLPiCI4OMUttTlEKChgbUTQ+5o0P080JojqfXwbPAyumbaYcQNiH1/xYbJdOFSiBv9rpt
 TQTBLzDKXok86M7BTQRS4TZ/ARAAkgqudHsp+hd82UVkvgnlqZjzz2vyrYfz7bkPtXaGb9H4
 Rfo7mQsEQavEBdWWjbga6eMnDqtu+FC+qeTGYebToxEyp2lKDSoAsvt8w82tIlP/EbmRbDVn
 7bhjBlfRcFjVYw8uVDPptT0TV47vpoCVkTwcyb6OltJrvg/QzV9f07DJswuda1JH3/qvYu0p
 vjPnYvCq4NsqY2XSdAJ02HrdYPFtNyPEntu1n1KK+gJrstjtw7KsZ4ygXYrsm/oCBiVW/OgU
 g/XIlGErkrxe4vQvJyVwg6YH653YTX5hLLUEL1NS4TCo47RP+wi6y+TnuAL36UtK/uFyEuPy
 wwrDVcC4cIFhYSfsO0BumEI65yu7a8aHbGfq2lW251UcoU48Z27ZUUZd2Dr6O/n8poQHbaTd
 6bJJSjzGGHZVbRP9UQ3lkmkmc0+XCHmj5WhwNNYjgbbmML7y0fsJT5RgvefAIFfHBg7fTY/i
 kBEimoUsTEQz+N4hbKwo1hULfVxDJStE4sbPhjbsPCrlXf6W9CxSyQ0qmZ2bXsLQYRj2xqd1
 bpA+1o1j2N4/au1R/uSiUFjewJdT/LX1EklKDcQwpk06Af/N7VZtSfEJeRV04unbsKVXWZAk
 uAJyDDKN99ziC0Wz5kcPyVD1HNf8bgaqGDzrv3TfYjwqayRFcMf7xJaL9xXedMcAEQEAAcLB
 XwQYAQgACQUCUuE2fwIbDAAKCRBlw/kGpdefoG4XEACD1Qf/er8EA7g23HMxYWd3FXHThrVQ
 HgiGdk5Yh632vjOm9L4sd/GCEACVQKjsu98e8o3ysitFlznEns5EAAXEbITrgKWXDDUWGYxd
 pnjj2u+GkVdsOAGk0kxczX6s+VRBhpbBI2PWnOsRJgU2n10PZ3mZD4Xu9kU2IXYmuW+e5KCA
 vTArRUdCrAtIa1k01sPipPPw6dfxx2e5asy21YOytzxuWFfJTGnVxZZSCyLUO83sh6OZhJkk
 b9rxL9wPmpN/t2IPaEKoAc0FTQZS36wAMOXkBh24PQ9gaLJvfPKpNzGD8XWR5HHF0NLIJhgg
 4ZlEXQ2fVp3XrtocHqhu4UZR4koCijgB8sB7Tb0GCpwK+C4UePdFLfhKyRdSXuvY3AHJd4CP
 4JzW0Bzq/WXY3XMOzUTYApGQpnUpdOmuQSfpV9MQO+/jo7r6yPbxT7CwRS5dcQPzUiuHLK9i
 nvjREdh84qycnx0/6dDroYhp0DFv4udxuAvt1h4wGwTPRQZerSm4xaYegEFusyhbZrI0U9tJ
 B8WrhBLXDiYlyJT6zOV2yZFuW47VrLsjYnHwn27hmxTC/7tvG3euCklmkn9Sl9IAKFu29RSo
 d5bD8kMSCYsTqtTfT6W4A3qHGvIDta3ptLYpIAOD2sY3GYq2nf3Bbzx81wZK14JdDDHUX2Rs
 6+ahAA==
In-Reply-To: <238b79f5-0510-4306-9c32-19dade08e819@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 10/01/2024 10:26 am, Jan Beulich wrote:
> On 10.01.2024 10:53, Roger Pau Monne wrote:
>> The HVM pirq feature allows routing interrupts from both physical and emulated
>> devices over event channels, this was done a performance improvement.  However
>> its usage is fully undocumented, and the only reference implementation is in
>> Linux.  It defeats the purpose of local APIC hardware virtualization, because
>> when using it interrupts avoid the usage of the local APIC altogether.
> So without sufficient APIC acceleration, isn't this arranging for degraded
> performance then?

Maybe.  Quite possibly.

>  IOW should the new default perhaps be dependent on the
> degree of APIC acceleration?

No.  Getting things working is strictly more important than making
things fast.

HVM_PIRQ is an entirely undocumented pile of Xen-specific deviation from
standards, with a single reference implementation and 0 people who
understand it.  It has also been shown to be the cause of real breakage,
and disabling it has been shown to make guests function better.

If and when we have two working schemes, we can choose a default based
on performance. We are not in this position right now. ~Andrew


From xen-devel-bounces@lists.xenproject.org Wed Jan 10 15:21:34 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 10 Jan 2024 15:21:34 +0000
Received: from list by lists.xenproject.org with outflank-mailman.665606.1035829 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNaOb-0000Sv-6r; Wed, 10 Jan 2024 15:21:33 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 665606.1035829; Wed, 10 Jan 2024 15:21:33 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNaOb-0000So-4K; Wed, 10 Jan 2024 15:21:33 +0000
Received: by outflank-mailman (input) for mailman id 665606;
 Wed, 10 Jan 2024 15:21:32 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=sd/G=IU=cloud.com=roger.pau@srs-se1.protection.inumbo.net>)
 id 1rNaOa-0000Si-5C
 for xen-devel@lists.xenproject.org; Wed, 10 Jan 2024 15:21:32 +0000
Received: from mail-lf1-x129.google.com (mail-lf1-x129.google.com
 [2a00:1450:4864:20::129])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id ee973f71-afcb-11ee-98f0-6d05b1d4d9a1;
 Wed, 10 Jan 2024 16:21:31 +0100 (CET)
Received: by mail-lf1-x129.google.com with SMTP id
 2adb3069b0e04-50e67e37661so5318580e87.0
 for <xen-devel@lists.xenproject.org>; Wed, 10 Jan 2024 07:21:31 -0800 (PST)
Received: from localhost ([213.195.127.70]) by smtp.gmail.com with ESMTPSA id
 h14-20020a170906590e00b00a26c2f13b73sm2225050ejq.143.2024.01.10.07.21.30
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 10 Jan 2024 07:21:30 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: ee973f71-afcb-11ee-98f0-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1704900091; x=1705504891; darn=lists.xenproject.org;
        h=in-reply-to:content-disposition:mime-version:references:message-id
         :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to;
        bh=xtkkJdbwaK1+r1hIy4LjxZaU9Yqe/RpF78GJPujKu4g=;
        b=TNp0bsIiSDW9y86dDTo4qHBBLgjzaPEs9rinpfPpeEmaQ1quj8H/EqLdxnFYI85UC9
         rRPCsXOAw1XO7GXl80j9Cc/akXlsJTkjjNTVfi6HbIyGHSexHG2Mzf7JhInMOpbuXEGa
         7EW58zad5tPwe0uPWX5ilA9eyq92e4c6EQhEE=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704900091; x=1705504891;
        h=in-reply-to:content-disposition:mime-version:references:message-id
         :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to;
        bh=xtkkJdbwaK1+r1hIy4LjxZaU9Yqe/RpF78GJPujKu4g=;
        b=pGrb3scPR4or983GGaGt0/q4VKhIsWzu3SjH92f4N28In1jsCmEzBXy6Ns/r1mKGnj
         Dp2SAfgDtFxKH9ANpHaYoz2ImwhJrctwoKa82acos9XpqIQ48pKt5IQF40goXuhf3/b7
         S6UkF9Vfkt6X0k4Oc4l2qpZt+IzqVRwi+asiNKcU2LySL0UmOj8/IercNz5A56EGEwwp
         ecrYHa3hm+/1yrLxPuQ53ZHAJr3maKJhbCNh8cfJmxv/2Wvg0wdBvRLvfrGB5a7bZ4ki
         5fd1C+nZ5cLtdn0KXUfEkrEYeO8WISwJBwGAhyuP4oGJQphmx+7YU5DRW+Aybi4A9UVJ
         qShg==
X-Gm-Message-State: AOJu0Yz1e1oim00dupOOXqYpoIEy2JNx4ChTJEZqNM1AjUO2qtH3XqKh
	ep6us0VZzPDGLaID/N+JNHzh55o0RAQIcQ==
X-Google-Smtp-Source: AGHT+IFVTnbn0tT1UnBt4XOGBpZFJ4abzkQfbf8FOLEGgGkWkgsxJAKXLOjo2sJaMZ0TW5pk14J4BA==
X-Received: by 2002:a19:2d5b:0:b0:50e:7a10:af78 with SMTP id t27-20020a192d5b000000b0050e7a10af78mr589123lft.57.1704900090657;
        Wed, 10 Jan 2024 07:21:30 -0800 (PST)
Date: Wed, 10 Jan 2024 16:21:29 +0100
From: Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
To: Xenia Ragiadakou <xenia.ragiadakou@amd.com>
Cc: Jan Beulich <jbeulich@suse.com>, Wei Liu <wl@xen.org>,
	Anthony PERARD <anthony.perard@citrix.com>,
	Juergen Gross <jgross@suse.com>,
	Marek =?utf-8?Q?Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	xen-devel@lists.xenproject.org
Subject: Re: [PATCH] x86/hvm: don't expose XENFEAT_hvm_pirqs by default
Message-ID: <ZZ61-SNkrKo12cwb@macbook>
References: <20240110095311.61809-1-roger.pau@citrix.com>
 <238b79f5-0510-4306-9c32-19dade08e819@suse.com>
 <ef67e4b1-3b1e-4cca-b431-cc46464700ca@amd.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
In-Reply-To: <ef67e4b1-3b1e-4cca-b431-cc46464700ca@amd.com>

On Wed, Jan 10, 2024 at 03:47:12PM +0200, Xenia Ragiadakou wrote:
> 
> 
> On 10/1/24 12:26, Jan Beulich wrote:
> > On 10.01.2024 10:53, Roger Pau Monne wrote:
> > > The HVM pirq feature allows routing interrupts from both physical and emulated
> > > devices over event channels, this was done a performance improvement.  However
> > > its usage is fully undocumented, and the only reference implementation is in
> > > Linux.  It defeats the purpose of local APIC hardware virtualization, because
> > > when using it interrupts avoid the usage of the local APIC altogether.
> > 
> > So without sufficient APIC acceleration, isn't this arranging for degraded
> > performance then? IOW should the new default perhaps be dependent on the
> > degree of APIC acceleration?
> > 
> > > It has also been reported to not work properly with certain devices, at least
> > > when using some AMD GPUs Linux attempts to route interrupts over event
> > > channels, but Xen doesn't correctly detect such routing, which leads to the
> > > hypervisor complaining with:
> > > 
> > > (XEN) d15v0: Unsupported MSI delivery mode 7 for Dom15
> > > 
> > > When MSIs are attempted to be routed over event channels the entry delivery
> > > mode is set to ExtINT, but Xen doesn't detect such routing and attempts to
> > > inject the interrupt following the native MSI path, and the ExtINT delivery
> > > mode is not supported.
> > 
> > Shouldn't this be properly addressed nevertheless? The way it's described
> > it sounds as if MSI wouldn't work at all this way; I can't spot why the
> > issue would only be "with certain devices". Yet that in turn doesn't look
> > to be very likely - pass-through use cases, in particular SR-IOV ones,
> > would certainly have noticed.
> 
> The issue gets triggered when the guest performs save/restore of MSIs,
> because PHYSDEVOP_map_pirq is not implemented for MSIs, and thus, QEMU
> cannot remap the MSI to the event channel once unmapped.

I'm kind of confused by this sentence, PHYSDEVOP_map_pirq does support
MSIs, see xc_physdev_map_pirq_msi() helper in Xen code base.

> So, to fix this issue either would be needed to change QEMU to not unmap
> pirq-emulated MSIs or to implement PHYSDEVOP_map_pirq for MSIs.
> 
> But still, even when no device has been passed-through, scheduling latencies
> (of hundreds of ms), were observed in the guest even when running a simple
> loop application, that disappear once the flag is disabled. We did not have
> the chance to root cause it further.

So XENFEAT_hvm_pirqs is causing such latency issues?  That I certainly
didn't notice.

Regards, Roger.


From xen-devel-bounces@lists.xenproject.org Wed Jan 10 15:31:16 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 10 Jan 2024 15:31:16 +0000
Received: from list by lists.xenproject.org with outflank-mailman.665640.1035856 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNaXr-0003Ta-ER; Wed, 10 Jan 2024 15:31:07 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 665640.1035856; Wed, 10 Jan 2024 15:31:07 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNaXr-0003TT-9h; Wed, 10 Jan 2024 15:31:07 +0000
Received: by outflank-mailman (input) for mailman id 665640;
 Wed, 10 Jan 2024 15:31:06 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rNaXq-0003TJ-JQ; Wed, 10 Jan 2024 15:31:06 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rNaXq-0005pA-9j; Wed, 10 Jan 2024 15:31:06 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rNaXp-0007Iz-O3; Wed, 10 Jan 2024 15:31:05 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rNaXp-0007t7-NR; Wed, 10 Jan 2024 15:31:05 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=EzseTJjYvRtFYdoN/LSK/SVYVnq85UhsWqAwn/28Fys=; b=NhFL6TZCCT1yhFoVkOZGs+RL67
	otWKV5eSYUGbARdUc4ROrdbAZmUfq4H1/cDEffq5+sO7BMA7P4widM0wOCObvFn9ogJbc5PItlq0w
	Z58w/cRlPHoJYr236FgIluQLrIV13wq5F5cgRLz/suFC6psZF1G4XYl1+amOVkM51p24=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184308-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [xtf test] 184308: all pass - PUSHED
X-Osstest-Versions-This:
    xtf=f3bd152f5e83da943535f6ba7b5772d4dbe96717
X-Osstest-Versions-That:
    xtf=837f771d9612215d5e6c9a1a41bf3b3ab0d0b381
From: osstest service owner <osstest-admin@xenproject.org>
Date: Wed, 10 Jan 2024 15:31:05 +0000

flight 184308 xtf real [real]
http://logs.test-lab.xenproject.org/osstest/logs/184308/

Perfect :-)
All tests in this flight passed as required
version targeted for testing:
 xtf                  f3bd152f5e83da943535f6ba7b5772d4dbe96717
baseline version:
 xtf                  837f771d9612215d5e6c9a1a41bf3b3ab0d0b381

Last test of basis   184294  2024-01-09 12:14:55 Z    1 days
Testing same since   184308  2024-01-10 14:12:53 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Andrew Cooper <andrew.cooper3@citrix.com>

jobs:
 build-amd64-xtf                                              pass    
 build-amd64                                                  pass    
 build-amd64-pvops                                            pass    
 test-xtf-amd64-amd64-1                                       pass    
 test-xtf-amd64-amd64-2                                       pass    
 test-xtf-amd64-amd64-3                                       pass    
 test-xtf-amd64-amd64-4                                       pass    
 test-xtf-amd64-amd64-5                                       pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Pushing revision :

To xenbits.xen.org:/home/xen/git/xtf.git
   837f771..f3bd152  f3bd152f5e83da943535f6ba7b5772d4dbe96717 -> xen-tested-master


From xen-devel-bounces@lists.xenproject.org Wed Jan 10 15:34:39 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 10 Jan 2024 15:34:39 +0000
Received: from list by lists.xenproject.org with outflank-mailman.665647.1035865 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNabE-0004jt-Sb; Wed, 10 Jan 2024 15:34:36 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 665647.1035865; Wed, 10 Jan 2024 15:34:36 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNabE-0004jm-PI; Wed, 10 Jan 2024 15:34:36 +0000
Received: by outflank-mailman (input) for mailman id 665647;
 Wed, 10 Jan 2024 15:34:35 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=sd/G=IU=cloud.com=roger.pau@srs-se1.protection.inumbo.net>)
 id 1rNabD-0004jg-5N
 for xen-devel@lists.xenproject.org; Wed, 10 Jan 2024 15:34:35 +0000
Received: from mail-ej1-x635.google.com (mail-ej1-x635.google.com
 [2a00:1450:4864:20::635])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id c152be20-afcd-11ee-98f0-6d05b1d4d9a1;
 Wed, 10 Jan 2024 16:34:34 +0100 (CET)
Received: by mail-ej1-x635.google.com with SMTP id
 a640c23a62f3a-a277339dcf4so471226166b.2
 for <xen-devel@lists.xenproject.org>; Wed, 10 Jan 2024 07:34:34 -0800 (PST)
Received: from localhost ([213.195.127.70]) by smtp.gmail.com with ESMTPSA id
 d11-20020a170906344b00b00a26a061ae1esm2201886ejb.97.2024.01.10.07.34.32
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 10 Jan 2024 07:34:32 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: c152be20-afcd-11ee-98f0-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1704900873; x=1705505673; darn=lists.xenproject.org;
        h=content-transfer-encoding:mime-version:message-id:date:subject:cc
         :to:from:from:to:cc:subject:date:message-id:reply-to;
        bh=s5IRUBnFgUJy9dyKlTUiUaZ7PU9nI2Yd4t73Y/sI5oE=;
        b=lZLBOZeb3BDvcA5RpJWNRFBG9UrSVbfRzMvtAh0SdkwGYygkj88xcOKwCXGys6CSB1
         jD7KP+Mse4O5gwZXysuP/QqJHFX8vnBsAvOWp/mGZevVuOdJAJehjTSTBcY/sWIU3S0c
         Fs3cCd9RK5ByTaIrc4CwTaxaXNxIxpC86uFzU=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704900873; x=1705505673;
        h=content-transfer-encoding:mime-version:message-id:date:subject:cc
         :to:from:x-gm-message-state:from:to:cc:subject:date:message-id
         :reply-to;
        bh=s5IRUBnFgUJy9dyKlTUiUaZ7PU9nI2Yd4t73Y/sI5oE=;
        b=PBCI7cNeGS9Dzpto+9totAIoVQJaGYAd9Wt2gmDf/aNkwXszUzdlTfyCwm81JB+Tyx
         rHxNBBmDZSgqrRSBMkaUXy9/SkIllTT8KdkYDmcsBBDetY2Y1YUuJJRSK0pUWyprduzU
         4/ujqjDyrGjymcFqqJ3Ef2gMmwsvHhfpv6jfwiTUknRRS73LZTggUXEDArcqPeY3orOb
         ElZM1j8OrEThtcjDwewPCNv+9pYTQBFmuobXu4NeJpQR8kfgu9wh0zXVfCvTD54VzwoA
         Ej08RlPlAJUhalKNtrH1lFByRmPtPvU1YSi9tGXYAo+1TrUOEfegxD2VCJCwfTVjl+tf
         BJkg==
X-Gm-Message-State: AOJu0Yx8sCPgFGTxz8j+a3FNTrKCqFkCwXUVNPe3FiEe98uXI+J33SjU
	P0QizSXx6wfKokhjuZRneSPDXF7HDfwf0liCQRkl21F0lSo=
X-Google-Smtp-Source: AGHT+IEaooXDF/OFzSn8bePCWjappqE7v96/kfigbVg5gFkNmeqVKiDfiDZE0LQHXIyuPEKq12dxaQ==
X-Received: by 2002:a17:906:c303:b0:a2b:4d5e:c5e4 with SMTP id s3-20020a170906c30300b00a2b4d5ec5e4mr706398ejz.66.1704900873089;
        Wed, 10 Jan 2024 07:34:33 -0800 (PST)
From: Roger Pau Monne <roger.pau@citrix.com>
To: xen-devel@lists.xenproject.org
Cc: Roger Pau Monne <roger.pau@citrix.com>,
	Jan Beulich <jbeulich@suse.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Wei Liu <wl@xen.org>
Subject: [PATCH] x86/nmi: ensure Global Performance Counter Control is setup correctly
Date: Wed, 10 Jan 2024 16:34:00 +0100
Message-ID: <20240110153400.64017-1-roger.pau@citrix.com>
X-Mailer: git-send-email 2.43.0
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

When Architectural Performance Monitoring is available, the PERF_GLOBAL_CTRL
MSR contains per-counter enable bits that is ANDed with the enable bit in the
counter EVNTSEL MSR in order for a PMC counter to be enabled.

So far the watchdog code seems to have relied on the PERF_GLOBAL_CTRL enable
bits being set by default, but at least on some Intel Sapphire and Emerald
Rapids this is no longer the case, and Xen reports:

Testing NMI watchdog on all CPUs: 0 40 stuck

The first CPU on each socket is started with PERF_GLOBAL_CTRL zeroed, so PMC0
doesn't start counting when the enable bit in EVNTSEL0 is set, due to the
relevant enable bit in PERF_GLOBAL_CTRL not being set.

Fix by detecting when Architectural Performance Monitoring is available and
making sure the enable bit for PMC0 is set in PERF_GLOBAL_CTRL.

Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
---
The fact that it's only the first CPU on each socket that's started with
PERF_GLOBAL_CTRL clear looks like a firmware bug to me, but in any case making
sure PERF_GLOBAL_CTRL is properly setup should be done regardless.
---
 xen/arch/x86/nmi.c | 13 +++++++++++++
 1 file changed, 13 insertions(+)

diff --git a/xen/arch/x86/nmi.c b/xen/arch/x86/nmi.c
index dc79c25e3ffd..7a6601c4fd31 100644
--- a/xen/arch/x86/nmi.c
+++ b/xen/arch/x86/nmi.c
@@ -335,6 +335,19 @@ static void setup_p6_watchdog(unsigned counter)
          nmi_p6_event_width > BITS_PER_LONG )
         return;
 
+    if ( cpu_has_arch_perfmon )
+    {
+        uint64_t global_ctrl;
+
+        rdmsrl(MSR_CORE_PERF_GLOBAL_CTRL, global_ctrl);
+        /*
+         * Make sure PMC0 is enabled in global control, as the enable bit in
+         * PERF_GLOBAL_CTRL is AND'ed with the enable bit in EVNTSEL0.
+         */
+        if ( !(global_ctrl & 1) )
+            wrmsrl(MSR_CORE_PERF_GLOBAL_CTRL, global_ctrl | 1);
+    }
+
     clear_msr_range(MSR_P6_EVNTSEL(0), 2);
     clear_msr_range(MSR_P6_PERFCTR(0), 2);
 
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Wed Jan 10 15:53:00 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 10 Jan 2024 15:53:00 +0000
Received: from list by lists.xenproject.org with outflank-mailman.665655.1035874 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNasv-0002Qy-C2; Wed, 10 Jan 2024 15:52:53 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 665655.1035874; Wed, 10 Jan 2024 15:52:53 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNasv-0002Qr-9X; Wed, 10 Jan 2024 15:52:53 +0000
Received: by outflank-mailman (input) for mailman id 665655;
 Wed, 10 Jan 2024 15:52:51 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=ginX=IU=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1rNast-0002Ql-Ry
 for xen-devel@lists.xenproject.org; Wed, 10 Jan 2024 15:52:51 +0000
Received: from mail-wm1-x331.google.com (mail-wm1-x331.google.com
 [2a00:1450:4864:20::331])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 4ed54e62-afd0-11ee-98f0-6d05b1d4d9a1;
 Wed, 10 Jan 2024 16:52:50 +0100 (CET)
Received: by mail-wm1-x331.google.com with SMTP id
 5b1f17b1804b1-40d5336986cso55773185e9.1
 for <xen-devel@lists.xenproject.org>; Wed, 10 Jan 2024 07:52:50 -0800 (PST)
Received: from [10.80.67.30] (default-46-102-197-194.interdsl.co.uk.
 [46.102.197.194]) by smtp.gmail.com with ESMTPSA id
 hn3-20020a05600ca38300b0040e4a7a7ca3sm2496655wmb.43.2024.01.10.07.52.49
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 10 Jan 2024 07:52:50 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 4ed54e62-afd0-11ee-98f0-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1704901970; x=1705506770; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=vPums0vJZUSqI/ihjoYuzcXuedKEcACR92Kn6yT3KLo=;
        b=nmwCzcMrl5RmXwQNJveabhrIhZhMZs8Bk8mnZ0IzuYdmv9pqs0sZtW24/u+SALmFt4
         RhRDoHN/2kD534vRulh217nH/bbexymVcC7RT60iAvJx3HviEHIQ6CB80/kdwEu03BFl
         zEklRwM0fCMtKtHVc7bCK4Cd916xaucyUHOtQ=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704901970; x=1705506770;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=vPums0vJZUSqI/ihjoYuzcXuedKEcACR92Kn6yT3KLo=;
        b=R+zqIwMShj80h+EvzUrKZSjioCPPX3T4Ro/X42do1z4/PUXn8ssWKooWXGOlQwJ333
         /ZIWeFKqbeMdtgq1zLCinRboPymkkXlRmFZQ/cMuGgzR6DbiUneNNy24n9ihx7eLyqVj
         V+MI5P3THCn9sQfrulk4TcO3re106gMkzAHI4qWGkVqN/IBlmf5HOHS3gRR4NZLYyvBF
         pQamSGJNsi41/NCW4vWPLNdSG2YBgnHpLEHFh3vmb1zAcpQXg0KafGM9/Ljq+haIDMbG
         XxDeq+lq0ZvRWkvSKPDUCEpCUZ4chVaGqHkUB8jPSBKS1shbAL+Qbjj6ksfudonnnncl
         acDg==
X-Gm-Message-State: AOJu0YyHJGFZuW41qrfgtNaoF0hCMQo4IqLQcsgrpSVtmd4CTR/8qgzA
	qH33sa639kVriVltoPFpvtvU8JYGgTqPNA==
X-Google-Smtp-Source: AGHT+IECa1Bi+z2o3eLvuTtKk0EjsysksofZ4DpXIojvtPOKyebyfe5uPmZG8SUjE2dOsT69SVQNaw==
X-Received: by 2002:a05:600c:6cf:b0:40e:517a:2971 with SMTP id b15-20020a05600c06cf00b0040e517a2971mr636826wmn.247.1704901970211;
        Wed, 10 Jan 2024 07:52:50 -0800 (PST)
Message-ID: <4bd7324f-69fc-42e5-9155-02a7e1a8a6e8@citrix.com>
Date: Wed, 10 Jan 2024 15:52:49 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] x86/nmi: ensure Global Performance Counter Control is
 setup correctly
Content-Language: en-GB
To: Roger Pau Monne <roger.pau@citrix.com>, xen-devel@lists.xenproject.org
Cc: Jan Beulich <jbeulich@suse.com>, Wei Liu <wl@xen.org>
References: <20240110153400.64017-1-roger.pau@citrix.com>
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 xsFNBFLhNn8BEADVhE+Hb8i0GV6mihnnr/uiQQdPF8kUoFzCOPXkf7jQ5sLYeJa0cQi6Penp
 VtiFYznTairnVsN5J+ujSTIb+OlMSJUWV4opS7WVNnxHbFTPYZVQ3erv7NKc2iVizCRZ2Kxn
 srM1oPXWRic8BIAdYOKOloF2300SL/bIpeD+x7h3w9B/qez7nOin5NzkxgFoaUeIal12pXSR
 Q354FKFoy6Vh96gc4VRqte3jw8mPuJQpfws+Pb+swvSf/i1q1+1I4jsRQQh2m6OTADHIqg2E
 ofTYAEh7R5HfPx0EXoEDMdRjOeKn8+vvkAwhviWXTHlG3R1QkbE5M/oywnZ83udJmi+lxjJ5
 YhQ5IzomvJ16H0Bq+TLyVLO/VRksp1VR9HxCzItLNCS8PdpYYz5TC204ViycobYU65WMpzWe
 LFAGn8jSS25XIpqv0Y9k87dLbctKKA14Ifw2kq5OIVu2FuX+3i446JOa2vpCI9GcjCzi3oHV
 e00bzYiHMIl0FICrNJU0Kjho8pdo0m2uxkn6SYEpogAy9pnatUlO+erL4LqFUO7GXSdBRbw5
 gNt25XTLdSFuZtMxkY3tq8MFss5QnjhehCVPEpE6y9ZjI4XB8ad1G4oBHVGK5LMsvg22PfMJ
 ISWFSHoF/B5+lHkCKWkFxZ0gZn33ju5n6/FOdEx4B8cMJt+cWwARAQABzSlBbmRyZXcgQ29v
 cGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPsLBegQTAQgAJAIbAwULCQgHAwUVCgkI
 CwUWAgMBAAIeAQIXgAUCWKD95wIZAQAKCRBlw/kGpdefoHbdD/9AIoR3k6fKl+RFiFpyAhvO
 59ttDFI7nIAnlYngev2XUR3acFElJATHSDO0ju+hqWqAb8kVijXLops0gOfqt3VPZq9cuHlh
 IMDquatGLzAadfFx2eQYIYT+FYuMoPZy/aTUazmJIDVxP7L383grjIkn+7tAv+qeDfE+txL4
 SAm1UHNvmdfgL2/lcmL3xRh7sub3nJilM93RWX1Pe5LBSDXO45uzCGEdst6uSlzYR/MEr+5Z
 JQQ32JV64zwvf/aKaagSQSQMYNX9JFgfZ3TKWC1KJQbX5ssoX/5hNLqxMcZV3TN7kU8I3kjK
 mPec9+1nECOjjJSO/h4P0sBZyIUGfguwzhEeGf4sMCuSEM4xjCnwiBwftR17sr0spYcOpqET
 ZGcAmyYcNjy6CYadNCnfR40vhhWuCfNCBzWnUW0lFoo12wb0YnzoOLjvfD6OL3JjIUJNOmJy
 RCsJ5IA/Iz33RhSVRmROu+TztwuThClw63g7+hoyewv7BemKyuU6FTVhjjW+XUWmS/FzknSi
 dAG+insr0746cTPpSkGl3KAXeWDGJzve7/SBBfyznWCMGaf8E2P1oOdIZRxHgWj0zNr1+ooF
 /PzgLPiCI4OMUttTlEKChgbUTQ+5o0P080JojqfXwbPAyumbaYcQNiH1/xYbJdOFSiBv9rpt
 TQTBLzDKXok86M7BTQRS4TZ/ARAAkgqudHsp+hd82UVkvgnlqZjzz2vyrYfz7bkPtXaGb9H4
 Rfo7mQsEQavEBdWWjbga6eMnDqtu+FC+qeTGYebToxEyp2lKDSoAsvt8w82tIlP/EbmRbDVn
 7bhjBlfRcFjVYw8uVDPptT0TV47vpoCVkTwcyb6OltJrvg/QzV9f07DJswuda1JH3/qvYu0p
 vjPnYvCq4NsqY2XSdAJ02HrdYPFtNyPEntu1n1KK+gJrstjtw7KsZ4ygXYrsm/oCBiVW/OgU
 g/XIlGErkrxe4vQvJyVwg6YH653YTX5hLLUEL1NS4TCo47RP+wi6y+TnuAL36UtK/uFyEuPy
 wwrDVcC4cIFhYSfsO0BumEI65yu7a8aHbGfq2lW251UcoU48Z27ZUUZd2Dr6O/n8poQHbaTd
 6bJJSjzGGHZVbRP9UQ3lkmkmc0+XCHmj5WhwNNYjgbbmML7y0fsJT5RgvefAIFfHBg7fTY/i
 kBEimoUsTEQz+N4hbKwo1hULfVxDJStE4sbPhjbsPCrlXf6W9CxSyQ0qmZ2bXsLQYRj2xqd1
 bpA+1o1j2N4/au1R/uSiUFjewJdT/LX1EklKDcQwpk06Af/N7VZtSfEJeRV04unbsKVXWZAk
 uAJyDDKN99ziC0Wz5kcPyVD1HNf8bgaqGDzrv3TfYjwqayRFcMf7xJaL9xXedMcAEQEAAcLB
 XwQYAQgACQUCUuE2fwIbDAAKCRBlw/kGpdefoG4XEACD1Qf/er8EA7g23HMxYWd3FXHThrVQ
 HgiGdk5Yh632vjOm9L4sd/GCEACVQKjsu98e8o3ysitFlznEns5EAAXEbITrgKWXDDUWGYxd
 pnjj2u+GkVdsOAGk0kxczX6s+VRBhpbBI2PWnOsRJgU2n10PZ3mZD4Xu9kU2IXYmuW+e5KCA
 vTArRUdCrAtIa1k01sPipPPw6dfxx2e5asy21YOytzxuWFfJTGnVxZZSCyLUO83sh6OZhJkk
 b9rxL9wPmpN/t2IPaEKoAc0FTQZS36wAMOXkBh24PQ9gaLJvfPKpNzGD8XWR5HHF0NLIJhgg
 4ZlEXQ2fVp3XrtocHqhu4UZR4koCijgB8sB7Tb0GCpwK+C4UePdFLfhKyRdSXuvY3AHJd4CP
 4JzW0Bzq/WXY3XMOzUTYApGQpnUpdOmuQSfpV9MQO+/jo7r6yPbxT7CwRS5dcQPzUiuHLK9i
 nvjREdh84qycnx0/6dDroYhp0DFv4udxuAvt1h4wGwTPRQZerSm4xaYegEFusyhbZrI0U9tJ
 B8WrhBLXDiYlyJT6zOV2yZFuW47VrLsjYnHwn27hmxTC/7tvG3euCklmkn9Sl9IAKFu29RSo
 d5bD8kMSCYsTqtTfT6W4A3qHGvIDta3ptLYpIAOD2sY3GYq2nf3Bbzx81wZK14JdDDHUX2Rs
 6+ahAA==
In-Reply-To: <20240110153400.64017-1-roger.pau@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 10/01/2024 3:34 pm, Roger Pau Monne wrote:
> When Architectural Performance Monitoring is available, the PERF_GLOBAL_CTRL
> MSR contains per-counter enable bits that is ANDed with the enable bit in the
> counter EVNTSEL MSR in order for a PMC counter to be enabled.
>
> So far the watchdog code seems to have relied on the PERF_GLOBAL_CTRL enable
> bits being set by default, but at least on some Intel Sapphire and Emerald
> Rapids this is no longer the case, and Xen reports:
>
> Testing NMI watchdog on all CPUs: 0 40 stuck
>
> The first CPU on each socket is started with PERF_GLOBAL_CTRL zeroed, so PMC0
> doesn't start counting when the enable bit in EVNTSEL0 is set, due to the
> relevant enable bit in PERF_GLOBAL_CTRL not being set.
>
> Fix by detecting when Architectural Performance Monitoring is available and
> making sure the enable bit for PMC0 is set in PERF_GLOBAL_CTRL.
>
> Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
> ---
> The fact that it's only the first CPU on each socket that's started with
> PERF_GLOBAL_CTRL clear looks like a firmware bug to me, but in any case making
> sure PERF_GLOBAL_CTRL is properly setup should be done regardless.

It's each package-BSP, and yes, this is clearly a firmware bug.  It's
probably worth saying that we're raising it with Intel, but this bug is
out in production firmware for SPR and EMR.

> ---
>  xen/arch/x86/nmi.c | 13 +++++++++++++
>  1 file changed, 13 insertions(+)
>
> diff --git a/xen/arch/x86/nmi.c b/xen/arch/x86/nmi.c
> index dc79c25e3ffd..7a6601c4fd31 100644
> --- a/xen/arch/x86/nmi.c
> +++ b/xen/arch/x86/nmi.c
> @@ -335,6 +335,19 @@ static void setup_p6_watchdog(unsigned counter)
>           nmi_p6_event_width > BITS_PER_LONG )
>          return;
>  
> +    if ( cpu_has_arch_perfmon )
> +    {
> +        uint64_t global_ctrl;
> +
> +        rdmsrl(MSR_CORE_PERF_GLOBAL_CTRL, global_ctrl);
> +        /*
> +         * Make sure PMC0 is enabled in global control, as the enable bit in
> +         * PERF_GLOBAL_CTRL is AND'ed with the enable bit in EVNTSEL0.
> +         */
> +        if ( !(global_ctrl & 1) )
> +            wrmsrl(MSR_CORE_PERF_GLOBAL_CTRL, global_ctrl | 1);

My gut feeling is that we ought to reinstate all bits, not just bit 1. 
If nothing else because that will make debugging using other counters
more reliable too.

vPMU (although mutually exclusive with watchdog) does context switch
this register as a whole.

See how global_ctrl_mask gets set up, although I'm not sure how much of
that infrastructure we really want to reuse here.

~Andrew


From xen-devel-bounces@lists.xenproject.org Wed Jan 10 16:09:38 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 10 Jan 2024 16:09:38 +0000
Received: from list by lists.xenproject.org with outflank-mailman.665660.1035885 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNb8s-00067y-Lb; Wed, 10 Jan 2024 16:09:22 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 665660.1035885; Wed, 10 Jan 2024 16:09:22 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNb8s-00067r-IT; Wed, 10 Jan 2024 16:09:22 +0000
Received: by outflank-mailman (input) for mailman id 665660;
 Wed, 10 Jan 2024 16:09:21 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rNb8r-00067h-Tl; Wed, 10 Jan 2024 16:09:21 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rNb8r-00075w-ND; Wed, 10 Jan 2024 16:09:21 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rNb8r-0000Jx-7t; Wed, 10 Jan 2024 16:09:21 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rNb8r-0002MZ-7U; Wed, 10 Jan 2024 16:09:21 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=atz9OULK5kcGwxXS0TmAlM/EYRw6q/UhE2hZbbVVGC4=; b=13Z0wVIx/z7mOzdqGQj7FVYIxV
	1dg1d8ftrwbekrNzJwoYN0K0neAK6ipTzzoe++pFuETqsiCAeSIOZSfk9zP2nF1RhViEMno+MOqep
	hV02+RMIZILna/8Ntxd55wGc8BBs0Vu6F6f1+VAU9We6i+FHjXpLMh9zBh2Y9394GlqI=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184307-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [ovmf test] 184307: all pass - PUSHED
X-Osstest-Versions-This:
    ovmf=7d055812cc7a7d2b062cf56291211e8cecca36ed
X-Osstest-Versions-That:
    ovmf=bc34a79cd2a005e1d12d4b05bec6efc3b102cad6
From: osstest service owner <osstest-admin@xenproject.org>
Date: Wed, 10 Jan 2024 16:09:21 +0000

flight 184307 ovmf real [real]
http://logs.test-lab.xenproject.org/osstest/logs/184307/

Perfect :-)
All tests in this flight passed as required
version targeted for testing:
 ovmf                 7d055812cc7a7d2b062cf56291211e8cecca36ed
baseline version:
 ovmf                 bc34a79cd2a005e1d12d4b05bec6efc3b102cad6

Last test of basis   184305  2024-01-10 10:41:30 Z    0 days
Testing same since   184307  2024-01-10 12:41:03 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Arun Sura <arun.surax.soundara.pandian@intel.com>

jobs:
 build-amd64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-amd64-amd64-xl-qemuu-ovmf-amd64                         pass    
 test-amd64-i386-xl-qemuu-ovmf-amd64                          pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Pushing revision :

To xenbits.xen.org:/home/xen/git/osstest/ovmf.git
   bc34a79cd2..7d055812cc  7d055812cc7a7d2b062cf56291211e8cecca36ed -> xen-tested-master


From xen-devel-bounces@lists.xenproject.org Wed Jan 10 16:10:57 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 10 Jan 2024 16:10:57 +0000
Received: from list by lists.xenproject.org with outflank-mailman.665666.1035895 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNbAP-0007ae-1J; Wed, 10 Jan 2024 16:10:57 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 665666.1035895; Wed, 10 Jan 2024 16:10:57 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNbAO-0007aX-UW; Wed, 10 Jan 2024 16:10:56 +0000
Received: by outflank-mailman (input) for mailman id 665666;
 Wed, 10 Jan 2024 16:10:56 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=iDiq=IU=proton.me=flamv3421@srs-se1.protection.inumbo.net>)
 id 1rNbAN-0007aN-8H
 for xen-devel@lists.xenproject.org; Wed, 10 Jan 2024 16:10:56 +0000
Received: from mail-40135.protonmail.ch (mail-40135.protonmail.ch
 [185.70.40.135]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id d3c2dddb-afd2-11ee-9b0f-b553b5be7939;
 Wed, 10 Jan 2024 17:10:52 +0100 (CET)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: d3c2dddb-afd2-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=proton.me;
	s=protonmail; t=1704903051; x=1705162251;
	bh=STuSjKIcHdwXsLS/ydpP1x5weV2J0nTYy9x599GKTdo=;
	h=Date:To:From:Subject:Message-ID:In-Reply-To:References:
	 Feedback-ID:From:To:Cc:Date:Subject:Reply-To:Feedback-ID:
	 Message-ID:BIMI-Selector;
	b=CMly94lulCNMW9fIK+NuM2eaJZ6qFu5G2zVW4mYrlO/HBH2yLMo0VQgNZT1M2xUco
	 Ez9dl1cQYcXbRDt5DasvIMRion/cKe0btY91q4bfHTbhEF+4w/CN1ntfnEnDnBFW0/
	 2/0tPbnny4zTuecVWprCaRHJl7uCoACP/yoLVM0TedlH7dqbxX734dHLVhl5bjwNlV
	 l48a36XInjsOWBEiqR3GaMrAyO2fUuq68AbjfwGN3d+DxkccpddqygmXciXtFoU5T9
	 MIq6BapPK6vjxYru45dj3+TYc/AAcJVE8XwguN7pO299t2IWTKApRaTjvjsmZq+FHi
	 0pV2bvkCfD3PQ==
Date: Wed, 10 Jan 2024 16:10:27 +0000
To: Jan Beulich <jbeulich@suse.com>, "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
From: flamv3421 <flamv3421@proton.me>
Subject: Re: xenpm cpufrequency settings don't work
Message-ID: <NxxKTM-RboL02YYdZ7LMKCpfphKPxYIdi0vKU1VsfmI0JZnHoJxCWxpMbMV1auJzoJjz7lxh8T6Ec4JzF16mBw9FKCy52_r1xgXi7U3URD0=@proton.me>
In-Reply-To: <f5a8bcf4-6d07-4e9a-9da9-917aa4f0c769@suse.com>
References: <syS1MXE7yvGnsDP-cXFUjca-0S1PkY-H2thU-X7ECmFD2VnugsyWnS-7y386-LTwhazuSggAuZI4d7F0Myq1tjLuw18CeOXErRKHJFCowpQ=@proton.me> <f5a8bcf4-6d07-4e9a-9da9-917aa4f0c769@suse.com>
Feedback-ID: 90923600:user:proton
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable

I meant the xenpm get-cpufreq-average result did not match with what I had =
set as the maximum scaling frequency with xenpm and there are even times wh=
ere the average is at 3GHz while my maximum scaling frequency is set to 800=
000. Even if it was accurate, I believe there is something wrong with power=
 management in xen since my laptop heats up very fast when using xen, and i=
t does not have this issue when I use it without xen.


On Thursday, January 4th, 2024 at 11:39 AM, Jan Beulich wrote:


> On 28.12.2023 12:28, flamv3421 wrote:
>=20
> > I used xenpm to disable turbo mode and set the maximum frequency to 800=
000 and governor to powersave, but my laptop fans are still running at full=
 speed when I am using xen and the average frequency shown does not match t=
he maximum frequency I set with xenpm which is 800000.
>=20
>=20
> What do you derive from that the maximum freq isn't 800MHz after you set
> it? All the CPUs are in P15 as per the output you supplied, which is a go=
od
> indication that no lower P-state is in use anymore (as even the CPU where
> the command was carried out was still in P15). Lower P-states would of
> course have been in use prior to you running xenpm. Sadly while there is =
a
> way to reset the statistics, the hypercall subfunction isn't wired up bey=
ond
> the libxc wrapper function.
>=20
> > Why are my fans running at full speed and why doesn't xenpm maximum fre=
quency setting work?
>=20
>=20
> I'm afraid I can't answer this question, as I don't know how exactly fan
> speed is controlled on that system of yours.
>=20
> Jan


From xen-devel-bounces@lists.xenproject.org Wed Jan 10 16:24:30 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 10 Jan 2024 16:24:30 +0000
Received: from list by lists.xenproject.org with outflank-mailman.665674.1035904 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNbNQ-00044Y-5o; Wed, 10 Jan 2024 16:24:24 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 665674.1035904; Wed, 10 Jan 2024 16:24:24 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNbNQ-00044R-3D; Wed, 10 Jan 2024 16:24:24 +0000
Received: by outflank-mailman (input) for mailman id 665674;
 Wed, 10 Jan 2024 16:24:23 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=kDgC=IU=amazon.co.uk=prvs=732579c64=eliasely@srs-se1.protection.inumbo.net>)
 id 1rNbNP-00044L-6w
 for xen-devel@lists.xenproject.org; Wed, 10 Jan 2024 16:24:23 +0000
Received: from smtp-fw-6002.amazon.com (smtp-fw-6002.amazon.com [52.95.49.90])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id b4dcbda8-afd4-11ee-9b0f-b553b5be7939;
 Wed, 10 Jan 2024 17:24:20 +0100 (CET)
Received: from iad12-co-svc-p1-lb1-vlan3.amazon.com (HELO
 email-inbound-relay-iad-1d-m6i4x-e651a362.us-east-1.amazon.com) ([10.43.8.6])
 by smtp-border-fw-6002.iad6.amazon.com with
 ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 10 Jan 2024 16:24:17 +0000
Received: from smtpout.prod.us-east-1.prod.farcaster.email.amazon.dev
 (iad7-ws-svc-p70-lb3-vlan3.iad.amazon.com [10.32.235.38])
 by email-inbound-relay-iad-1d-m6i4x-e651a362.us-east-1.amazon.com (Postfix)
 with ESMTPS id 9F22880741; Wed, 10 Jan 2024 16:24:15 +0000 (UTC)
Received: from EX19MTAEUA001.ant.amazon.com [10.0.43.254:31906]
 by smtpin.naws.eu-west-1.prod.farcaster.email.amazon.dev [10.0.36.219:2525]
 with esmtp (Farcaster)
 id 4ef6a9d5-919f-4523-93d1-2801bc773b21; Wed, 10 Jan 2024 16:24:14 +0000 (UTC)
Received: from EX19D018EUA002.ant.amazon.com (10.252.50.146) by
 EX19MTAEUA001.ant.amazon.com (10.252.50.192) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1118.40; Wed, 10 Jan 2024 16:24:14 +0000
Received: from [192.168.8.225] (10.106.82.23) by EX19D018EUA002.ant.amazon.com
 (10.252.50.146) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1118.40; Wed, 10 Jan
 2024 16:24:11 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: b4dcbda8-afd4-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
  d=amazon.com; i=@amazon.com; q=dns/txt; s=amazon201209;
  t=1704903861; x=1736439861;
  h=message-id:date:mime-version:subject:to:cc:references:
   from:in-reply-to:content-transfer-encoding;
  bh=RBVTl5XcYOYGvhEPYisaaNFZ9VGQaSoCUvOQGtxkqvs=;
  b=ExNGsT2BIKgGTyThE2YdC19qZgpY3shrmaZrFOGFFAV+qSknf+Y2kJV8
   s/XJ3uaAn6qJlosvSI53Udu85GqxBOVs//HpAtC3KUwaFTk1wYBG59zji
   U3ILyORvaLQjat9enfCH5wVij0N3Ty++9ZtCtL1LBDHwOS5A9LLzXv70q
   Q=;
X-IronPort-AV: E=Sophos;i="6.04,184,1695686400"; 
   d="scan'208";a="379027315"
X-Farcaster-Flow-ID: 4ef6a9d5-919f-4523-93d1-2801bc773b21
Message-ID: <88024314-245f-404e-a6b7-7ea859bae309@amazon.com>
Date: Wed, 10 Jan 2024 16:24:07 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 10/22] x86/mapcache: initialise the mapcache for the idle
 domain
Content-Language: en-US
To: Jan Beulich <jbeulich@suse.com>, Julien Grall <julien@xen.org>
CC: Hongyan Xia <hongyxia@amazon.com>, Andrew Cooper
	<andrew.cooper3@citrix.com>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
	<roger.pau@citrix.com>, Wei Liu <wl@xen.org>, Wei Wang <wawei@amazon.de>,
	Julien Grall <jgrall@amazon.com>, <xen-devel@lists.xenproject.org>
References: <20221216114853.8227-1-julien@xen.org>
 <20221216114853.8227-11-julien@xen.org>
 <751ffdb3-651c-b8e6-dc33-5a6857e3c88d@suse.com>
From: Elias El Yandouzi <eliasely@amazon.com>
In-Reply-To: <751ffdb3-651c-b8e6-dc33-5a6857e3c88d@suse.com>
Content-Type: text/plain; charset="UTF-8"; format=flowed
Content-Transfer-Encoding: 7bit
X-Originating-IP: [10.106.82.23]
X-ClientProxiedBy: EX19D041UWA004.ant.amazon.com (10.13.139.9) To
 EX19D018EUA002.ant.amazon.com (10.252.50.146)
Precedence: Bulk

Hi,

On 22/12/2022 13:06, Jan Beulich wrote:
> On 16.12.2022 12:48, Julien Grall wrote:
>> From: Hongyan Xia <hongyxia@amazon.com>
>>
>> In order to use the mapcache in the idle domain, we also have to
>> populate its page tables in the PERDOMAIN region, and we need to move
>> mapcache_domain_init() earlier in arch_domain_create().
>>
>> Note, commit 'x86: lift mapcache variable to the arch level' has
>> initialised the mapcache for HVM domains. With this patch, PV, HVM,
>> idle domains now all initialise the mapcache.
> 
> But they can't use it yet, can they? This needs saying explicitly, or
> else one is going to make wrong implications.
> 

Yes, I tried to use the mapcache right after the idle vCPU gets 
scheduled and it worked. So, I believe it is enough.

>> --- a/xen/arch/x86/domain.c
>> +++ b/xen/arch/x86/domain.c
>> @@ -732,6 +732,8 @@ int arch_domain_create(struct domain *d,
>>   
>>       spin_lock_init(&d->arch.e820_lock);
>>   
>> +    mapcache_domain_init(d);
>> +
>>       /* Minimal initialisation for the idle domain. */
>>       if ( unlikely(is_idle_domain(d)) )
>>       {
>> @@ -829,8 +831,6 @@ int arch_domain_create(struct domain *d,
>>   
>>       psr_domain_init(d);
>>   
>> -    mapcache_domain_init(d);
> 
> You move this ahead of error paths taking the "goto out" route, so
> adjustments to affected error paths are going to be needed to avoid
> memory leaks.

Correct, I'll fix that.

> 
>> --- a/xen/arch/x86/mm.c
>> +++ b/xen/arch/x86/mm.c
>> @@ -5963,6 +5963,9 @@ int create_perdomain_mapping(struct domain *d, unsigned long va,
>>           l3tab = __map_domain_page(pg);
>>           clear_page(l3tab);
>>           d->arch.perdomain_l3_pg = pg;
>> +        if ( is_idle_domain(d) )
>> +            idle_pg_table[l4_table_offset(PERDOMAIN_VIRT_START)] =
>> +                l4e_from_page(pg, __PAGE_HYPERVISOR_RW);
> 
> Hmm, having an idle domain check here isn't very nice. I agree putting
> it in arch_domain_create()'s respective conditional isn't very neat
> either, but personally I'd consider this at least a little less bad.
> And the layering violation aspect isn't much worse than that of setting
> d->arch.ctxt_switch there as well.
> 

Why do you think it would be less bad to move it in 
arch_domain_create()? To me, it would make things worse as it would 
spread the mapping stuff across different functions.

-- 
Elias


From xen-devel-bounces@lists.xenproject.org Wed Jan 10 16:43:04 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 10 Jan 2024 16:43:04 +0000
Received: from list by lists.xenproject.org with outflank-mailman.665679.1035914 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNbfP-0000oS-L1; Wed, 10 Jan 2024 16:42:59 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 665679.1035914; Wed, 10 Jan 2024 16:42:59 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNbfP-0000oL-IW; Wed, 10 Jan 2024 16:42:59 +0000
Received: by outflank-mailman (input) for mailman id 665679;
 Wed, 10 Jan 2024 16:42:57 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rNbfN-0000oB-Pp; Wed, 10 Jan 2024 16:42:57 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rNbfN-0007d7-C3; Wed, 10 Jan 2024 16:42:57 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rNbfN-0001Ez-07; Wed, 10 Jan 2024 16:42:57 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rNbfM-0007XL-Vq; Wed, 10 Jan 2024 16:42:56 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=b7gg/vggtqKGO86nHY7WG4zRf1EVrDkcvIppqnienBM=; b=hHCH1wXpCDIuH+rAkVSud9n6DU
	fe0v0jciZs2jOlP12PTxyWP92r49m2fAeApENWGxmwXZ4H0zxoLQzoasI3/jzi0l6vBciViNsWGp2
	6VIKCzsdpANKyU/ke/eVM1mi24IojP45I2Auzwyf2gZ70ckDT8uTDxYyyS/FR3mKNwt0=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184299-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [xen-unstable test] 184299: tolerable FAIL - PUSHED
X-Osstest-Failures:
    xen-unstable:test-amd64-amd64-xl-qemut-debianhvm-i386-xsm:debian-hvm-install:fail:heisenbug
    xen-unstable:test-armhf-armhf-libvirt:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-amd64-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-raw:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-amd64-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-qcow2:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-qemuu-nested-amd:debian-hvm-install/l1/l2:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-amd64-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-i386-libvirt-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-pvshim:guest-start:fail:nonblocking
    xen-unstable:test-amd64-i386-libvirt:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-xsm:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-thunderx:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-thunderx:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-credit2:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-credit2:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-libvirt-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-libvirt-xsm:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-credit1:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-credit1:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-multivcpu:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-multivcpu:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit2:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit2:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit1:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit1:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-arndale:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-arndale:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-libvirt-raw:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-libvirt-raw:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-libvirt-raw:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt-vhd:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-vhd:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-vhd:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-raw:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-vhd:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-vhd:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-rtds:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-rtds:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-qcow2:migrate-support-check:fail:nonblocking
X-Osstest-Versions-This:
    xen=c27c8922f2c6995d688437b0758cec6a27d18320
X-Osstest-Versions-That:
    xen=5a3ace21f3d779b291a2d305824b2820d88de7f1
From: osstest service owner <osstest-admin@xenproject.org>
Date: Wed, 10 Jan 2024 16:42:56 +0000

flight 184299 xen-unstable real [real]
flight 184309 xen-unstable real-retest [real]
http://logs.test-lab.xenproject.org/osstest/logs/184299/
http://logs.test-lab.xenproject.org/osstest/logs/184309/

Failures :-/ but no regressions.

Tests which are failing intermittently (not blocking):
 test-amd64-amd64-xl-qemut-debianhvm-i386-xsm 12 debian-hvm-install fail pass in 184309-retest

Tests which did not succeed, but are not blocking:
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 184271
 test-amd64-amd64-xl-qemut-win7-amd64 19 guest-stop            fail like 184271
 test-amd64-i386-xl-qemuu-win7-amd64 19 guest-stop             fail like 184271
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 184271
 test-amd64-i386-xl-qemut-ws16-amd64 19 guest-stop             fail like 184271
 test-armhf-armhf-libvirt-raw 15 saverestore-support-check    fail  like 184271
 test-amd64-i386-xl-qemut-win7-amd64 19 guest-stop             fail like 184271
 test-amd64-amd64-xl-qemut-ws16-amd64 19 guest-stop            fail like 184271
 test-armhf-armhf-libvirt-qcow2 15 saverestore-support-check   fail like 184271
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 184271
 test-amd64-i386-xl-qemuu-ws16-amd64 19 guest-stop             fail like 184271
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 184271
 test-amd64-i386-libvirt-xsm  15 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-amd64-i386-xl-pvshim    14 guest-start                  fail   never pass
 test-amd64-i386-libvirt      15 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt     15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-xsm      15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-xsm      16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl          15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-thunderx 15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl          16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-thunderx 16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-credit2  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit2  16 saverestore-support-check    fail   never pass
 test-arm64-arm64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-xsm 16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-credit1  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit1  16 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-armhf-armhf-xl          15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-multivcpu 15 migrate-support-check        fail  never pass
 test-armhf-armhf-xl-multivcpu 16 saverestore-support-check    fail  never pass
 test-armhf-armhf-libvirt     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit2  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit2  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-credit1  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit1  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-arndale  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-arndale  16 saverestore-support-check    fail   never pass
 test-amd64-i386-libvirt-raw  14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 15 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-vhd 14 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-vhd      14 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-vhd      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-raw 14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-rtds     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-rtds     16 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-qcow2 14 migrate-support-check        fail never pass

version targeted for testing:
 xen                  c27c8922f2c6995d688437b0758cec6a27d18320
baseline version:
 xen                  5a3ace21f3d779b291a2d305824b2820d88de7f1

Last test of basis   184271  2024-01-08 01:53:47 Z    2 days
Failing since        184278  2024-01-08 12:39:26 Z    2 days    4 attempts
Testing same since   184299  2024-01-10 01:09:12 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Jan Beulich <jbeulich@suse.com>
  Juergen Gross <jgross@suse.com>
  Julien Grall <jgrall@amazon.com>
  Oleksii Kurochko <oleksii.kurochko@gmail.com>
  Roger Pau Monné <roger.pau@citrix.com>
  Shawn Anastasio <sanastasio@raptorengineering.com>
  Tamas K Lengyel <tamas.lengyel@intel.com>

jobs:
 build-amd64-xsm                                              pass    
 build-arm64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64-xtf                                              pass    
 build-amd64                                                  pass    
 build-arm64                                                  pass    
 build-armhf                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-arm64-libvirt                                          pass    
 build-armhf-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-prev                                             pass    
 build-i386-prev                                              pass    
 build-amd64-pvops                                            pass    
 build-arm64-pvops                                            pass    
 build-armhf-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-xtf-amd64-amd64-1                                       pass    
 test-xtf-amd64-amd64-2                                       pass    
 test-xtf-amd64-amd64-3                                       pass    
 test-xtf-amd64-amd64-4                                       pass    
 test-xtf-amd64-amd64-5                                       pass    
 test-amd64-amd64-xl                                          pass    
 test-amd64-coresched-amd64-xl                                pass    
 test-arm64-arm64-xl                                          pass    
 test-armhf-armhf-xl                                          pass    
 test-amd64-i386-xl                                           pass    
 test-amd64-coresched-i386-xl                                 pass    
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm           pass    
 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm            pass    
 test-amd64-amd64-xl-qemut-stubdom-debianhvm-amd64-xsm        pass    
 test-amd64-i386-xl-qemut-stubdom-debianhvm-amd64-xsm         pass    
 test-amd64-amd64-xl-qemut-debianhvm-i386-xsm                 fail    
 test-amd64-i386-xl-qemut-debianhvm-i386-xsm                  pass    
 test-amd64-amd64-xl-qemuu-debianhvm-i386-xsm                 pass    
 test-amd64-i386-xl-qemuu-debianhvm-i386-xsm                  pass    
 test-amd64-amd64-libvirt-xsm                                 pass    
 test-arm64-arm64-libvirt-xsm                                 pass    
 test-amd64-i386-libvirt-xsm                                  pass    
 test-amd64-amd64-xl-xsm                                      pass    
 test-arm64-arm64-xl-xsm                                      pass    
 test-amd64-i386-xl-xsm                                       pass    
 test-amd64-amd64-qemuu-nested-amd                            fail    
 test-amd64-amd64-xl-pvhv2-amd                                pass    
 test-amd64-i386-qemut-rhel6hvm-amd                           pass    
 test-amd64-i386-qemuu-rhel6hvm-amd                           pass    
 test-amd64-amd64-dom0pvh-xl-amd                              pass    
 test-amd64-amd64-xl-qemut-debianhvm-amd64                    pass    
 test-amd64-i386-xl-qemut-debianhvm-amd64                     pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64                    pass    
 test-amd64-i386-xl-qemuu-debianhvm-amd64                     pass    
 test-amd64-i386-freebsd10-amd64                              pass    
 test-amd64-amd64-qemuu-freebsd11-amd64                       pass    
 test-amd64-amd64-qemuu-freebsd12-amd64                       pass    
 test-amd64-amd64-xl-qemuu-ovmf-amd64                         pass    
 test-amd64-i386-xl-qemuu-ovmf-amd64                          pass    
 test-amd64-amd64-xl-qemut-win7-amd64                         fail    
 test-amd64-i386-xl-qemut-win7-amd64                          fail    
 test-amd64-amd64-xl-qemuu-win7-amd64                         fail    
 test-amd64-i386-xl-qemuu-win7-amd64                          fail    
 test-amd64-amd64-xl-qemut-ws16-amd64                         fail    
 test-amd64-i386-xl-qemut-ws16-amd64                          fail    
 test-amd64-amd64-xl-qemuu-ws16-amd64                         fail    
 test-amd64-i386-xl-qemuu-ws16-amd64                          fail    
 test-armhf-armhf-xl-arndale                                  pass    
 test-amd64-amd64-examine-bios                                pass    
 test-amd64-i386-examine-bios                                 pass    
 test-amd64-amd64-xl-credit1                                  pass    
 test-arm64-arm64-xl-credit1                                  pass    
 test-armhf-armhf-xl-credit1                                  pass    
 test-amd64-amd64-xl-credit2                                  pass    
 test-arm64-arm64-xl-credit2                                  pass    
 test-armhf-armhf-xl-credit2                                  pass    
 test-amd64-amd64-xl-qemuu-dmrestrict-amd64-dmrestrict        pass    
 test-amd64-i386-xl-qemuu-dmrestrict-amd64-dmrestrict         pass    
 test-amd64-amd64-examine                                     pass    
 test-arm64-arm64-examine                                     pass    
 test-armhf-armhf-examine                                     pass    
 test-amd64-i386-examine                                      pass    
 test-amd64-i386-freebsd10-i386                               pass    
 test-amd64-amd64-qemuu-nested-intel                          pass    
 test-amd64-amd64-xl-pvhv2-intel                              pass    
 test-amd64-i386-qemut-rhel6hvm-intel                         pass    
 test-amd64-i386-qemuu-rhel6hvm-intel                         pass    
 test-amd64-amd64-dom0pvh-xl-intel                            pass    
 test-amd64-amd64-libvirt                                     pass    
 test-armhf-armhf-libvirt                                     pass    
 test-amd64-i386-libvirt                                      pass    
 test-amd64-amd64-livepatch                                   pass    
 test-amd64-i386-livepatch                                    pass    
 test-amd64-amd64-migrupgrade                                 pass    
 test-amd64-i386-migrupgrade                                  pass    
 test-amd64-amd64-xl-multivcpu                                pass    
 test-armhf-armhf-xl-multivcpu                                pass    
 test-amd64-amd64-pair                                        pass    
 test-amd64-i386-pair                                         pass    
 test-amd64-amd64-libvirt-pair                                pass    
 test-amd64-i386-libvirt-pair                                 pass    
 test-amd64-amd64-xl-pvshim                                   pass    
 test-amd64-i386-xl-pvshim                                    fail    
 test-amd64-amd64-pygrub                                      pass    
 test-armhf-armhf-libvirt-qcow2                               pass    
 test-amd64-amd64-xl-qcow2                                    pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-armhf-armhf-libvirt-raw                                 pass    
 test-amd64-i386-libvirt-raw                                  pass    
 test-amd64-amd64-xl-rtds                                     pass    
 test-armhf-armhf-xl-rtds                                     pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64-shadow             pass    
 test-amd64-i386-xl-qemuu-debianhvm-amd64-shadow              pass    
 test-amd64-amd64-xl-shadow                                   pass    
 test-amd64-i386-xl-shadow                                    pass    
 test-arm64-arm64-xl-thunderx                                 pass    
 test-amd64-amd64-examine-uefi                                pass    
 test-amd64-i386-examine-uefi                                 pass    
 test-amd64-amd64-libvirt-vhd                                 pass    
 test-arm64-arm64-xl-vhd                                      pass    
 test-armhf-armhf-xl-vhd                                      pass    
 test-amd64-i386-xl-vhd                                       pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Pushing revision :

To xenbits.xen.org:/home/xen/git/xen.git
   5a3ace21f3..c27c8922f2  c27c8922f2c6995d688437b0758cec6a27d18320 -> master


From xen-devel-bounces@lists.xenproject.org Wed Jan 10 16:59:07 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 10 Jan 2024 16:59:07 +0000
Received: from list by lists.xenproject.org with outflank-mailman.665697.1035961 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNbuw-0004EL-IL; Wed, 10 Jan 2024 16:59:02 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 665697.1035961; Wed, 10 Jan 2024 16:59:02 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNbuw-0004EE-EJ; Wed, 10 Jan 2024 16:59:02 +0000
Received: by outflank-mailman (input) for mailman id 665697;
 Wed, 10 Jan 2024 16:59:00 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=sd/G=IU=cloud.com=roger.pau@srs-se1.protection.inumbo.net>)
 id 1rNbuu-0004E8-H1
 for xen-devel@lists.xenproject.org; Wed, 10 Jan 2024 16:59:00 +0000
Received: from mail-wm1-x335.google.com (mail-wm1-x335.google.com
 [2a00:1450:4864:20::335])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 8af6833d-afd9-11ee-9b0f-b553b5be7939;
 Wed, 10 Jan 2024 17:58:57 +0100 (CET)
Received: by mail-wm1-x335.google.com with SMTP id
 5b1f17b1804b1-40e5afc18f5so1757715e9.3
 for <xen-devel@lists.xenproject.org>; Wed, 10 Jan 2024 08:58:57 -0800 (PST)
Received: from localhost ([213.195.127.70]) by smtp.gmail.com with ESMTPSA id
 bg42-20020a05600c3caa00b0040e3733a32bsm2810521wmb.41.2024.01.10.08.58.56
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 10 Jan 2024 08:58:56 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 8af6833d-afd9-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1704905936; x=1705510736; darn=lists.xenproject.org;
        h=in-reply-to:content-transfer-encoding:content-disposition
         :mime-version:references:message-id:subject:cc:to:from:date:from:to
         :cc:subject:date:message-id:reply-to;
        bh=7mk9f+63h/LbYpWSQFDQljkWr17BU378Sy96AUV/MvI=;
        b=CfIUwf/U8M1UrwGMKnuHBYdje5Ji28Uhvor+TjZ9Ks3BBdi+3eDFfJLQDZKq8yC1Os
         sz6sPNj8Gch2l9hKefSusOd9p4FE4vxyTPT/l1K6PSvva7K1mtKEDeC6J4rL4t1LVPMW
         Jqi2RH5NNGEOUyNvZdpyMdZYQknCg99XhKx3Q=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704905936; x=1705510736;
        h=in-reply-to:content-transfer-encoding:content-disposition
         :mime-version:references:message-id:subject:cc:to:from:date
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=7mk9f+63h/LbYpWSQFDQljkWr17BU378Sy96AUV/MvI=;
        b=RlYYWu8uY5aBzS/HdyFDcf7mp+I9Z7XRoU6oWC2/eTQkSqFVD+soOuDnlXwKZUhATX
         +SqJC4MqPWWcxTmGcmzuj7cfcRO7GNLz+deS0mpKvwch3H7IBdxK9XPAwv4maTGHthoG
         52NTzEqMHfop74XpRF7S68TjOyM7V0pFufhAikqozZCn2mLz2QQaNsByHSc6s2HU9D8J
         kijf2ryDFxJ7VEH0Gq4eBktxGBUdamjnV/NgducaBRmnnFv/gKKA5ob+9IBhJR22xs/1
         rdJ8tN5Q084XudqDsCv5Lh6ihn2ax8AO3Q2lSzTuG510mHbvpQcT7f5lW1okyVqd5nkZ
         /cEQ==
X-Gm-Message-State: AOJu0YxnRvbPvSZ5klVfHwiJ2JECaciJrbM7GawTybPEMZU8chXb3LFG
	hXnQmMTbiAxoCVMx+js6Zp8Z25+tWkP3Qw==
X-Google-Smtp-Source: AGHT+IHI92+n68uU9xYGmNn7sKv0YhC36BiiE3vnTVtIlMsigCI5tU4UEZaba2wh+d1TzqqFGA9xYQ==
X-Received: by 2002:a05:600c:1908:b0:40e:4a79:e119 with SMTP id j8-20020a05600c190800b0040e4a79e119mr767584wmq.114.1704905936534;
        Wed, 10 Jan 2024 08:58:56 -0800 (PST)
Date: Wed, 10 Jan 2024 17:58:55 +0100
From: Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
To: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: xen-devel@lists.xenproject.org, Jan Beulich <jbeulich@suse.com>,
	Wei Liu <wl@xen.org>
Subject: Re: [PATCH] x86/nmi: ensure Global Performance Counter Control is
 setup correctly
Message-ID: <ZZ7Mz0HymYQGpTna@macbook>
References: <20240110153400.64017-1-roger.pau@citrix.com>
 <4bd7324f-69fc-42e5-9155-02a7e1a8a6e8@citrix.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <4bd7324f-69fc-42e5-9155-02a7e1a8a6e8@citrix.com>

On Wed, Jan 10, 2024 at 03:52:49PM +0000, Andrew Cooper wrote:
> On 10/01/2024 3:34 pm, Roger Pau Monne wrote:
> > When Architectural Performance Monitoring is available, the PERF_GLOBAL_CTRL
> > MSR contains per-counter enable bits that is ANDed with the enable bit in the
> > counter EVNTSEL MSR in order for a PMC counter to be enabled.
> >
> > So far the watchdog code seems to have relied on the PERF_GLOBAL_CTRL enable
> > bits being set by default, but at least on some Intel Sapphire and Emerald
> > Rapids this is no longer the case, and Xen reports:
> >
> > Testing NMI watchdog on all CPUs: 0 40 stuck
> >
> > The first CPU on each socket is started with PERF_GLOBAL_CTRL zeroed, so PMC0
> > doesn't start counting when the enable bit in EVNTSEL0 is set, due to the
> > relevant enable bit in PERF_GLOBAL_CTRL not being set.
> >
> > Fix by detecting when Architectural Performance Monitoring is available and
> > making sure the enable bit for PMC0 is set in PERF_GLOBAL_CTRL.
> >
> > Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
> > ---
> > The fact that it's only the first CPU on each socket that's started with
> > PERF_GLOBAL_CTRL clear looks like a firmware bug to me, but in any case making
> > sure PERF_GLOBAL_CTRL is properly setup should be done regardless.
> 
> It's each package-BSP, and yes, this is clearly a firmware bug.  It's
> probably worth saying that we're raising it with Intel, but this bug is
> out in production firmware for SPR and EMR.
> 
> > ---
> >  xen/arch/x86/nmi.c | 13 +++++++++++++
> >  1 file changed, 13 insertions(+)
> >
> > diff --git a/xen/arch/x86/nmi.c b/xen/arch/x86/nmi.c
> > index dc79c25e3ffd..7a6601c4fd31 100644
> > --- a/xen/arch/x86/nmi.c
> > +++ b/xen/arch/x86/nmi.c
> > @@ -335,6 +335,19 @@ static void setup_p6_watchdog(unsigned counter)
> >           nmi_p6_event_width > BITS_PER_LONG )
> >          return;
> >  
> > +    if ( cpu_has_arch_perfmon )
> > +    {
> > +        uint64_t global_ctrl;
> > +
> > +        rdmsrl(MSR_CORE_PERF_GLOBAL_CTRL, global_ctrl);
> > +        /*
> > +         * Make sure PMC0 is enabled in global control, as the enable bit in
> > +         * PERF_GLOBAL_CTRL is AND'ed with the enable bit in EVNTSEL0.
> > +         */
> > +        if ( !(global_ctrl & 1) )
> > +            wrmsrl(MSR_CORE_PERF_GLOBAL_CTRL, global_ctrl | 1);
> 
> My gut feeling is that we ought to reinstate all bits, not just bit 1. 
> If nothing else because that will make debugging using other counters
> more reliable too.

Hm, yes, I was borderline on enabling all possible counters in
PERF_GLOBAL_CTRL, as reported by CPUID.0AH: EAX[15:8].

But then wondered if it was going too far, as for the purposes here we
just care about PMC1.

My reasoning for not doing it would be that such wide setup of
PERF_GLOBAL_CTRL would then be gated on the watchdog being enabled,
usages of other counters apart from PMC0 will be gated on the watchdog
being enabled.  It seems more reliable to me to either do the setting
of PERF_GLOBAL_CTRL as part of CPU initialization, or defer to each
user of a PMC to take care of enabling it in PERF_GLOBAL_CTRL.

> vPMU (although mutually exclusive with watchdog) does context switch
> this register as a whole.
> 
> See how global_ctrl_mask gets set up, although I'm not sure how much of
> that infrastructure we really want to reuse here.

Yes, if we want to enable all possible counters we would need to use
something similar to what's done there, albeit without the fixed
counter part.

Thanks, Roger.


From xen-devel-bounces@lists.xenproject.org Wed Jan 10 17:41:58 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 10 Jan 2024 17:41:58 +0000
Received: from list by lists.xenproject.org with outflank-mailman.665703.1035970 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNcaG-0005QO-N9; Wed, 10 Jan 2024 17:41:44 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 665703.1035970; Wed, 10 Jan 2024 17:41:44 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNcaG-0005QH-Kc; Wed, 10 Jan 2024 17:41:44 +0000
Received: by outflank-mailman (input) for mailman id 665703;
 Wed, 10 Jan 2024 17:41:44 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=ginX=IU=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1rNcaG-0005QB-5T
 for xen-devel@lists.xenproject.org; Wed, 10 Jan 2024 17:41:44 +0000
Received: from mail-wm1-x32c.google.com (mail-wm1-x32c.google.com
 [2a00:1450:4864:20::32c])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 8452896b-afdf-11ee-98f0-6d05b1d4d9a1;
 Wed, 10 Jan 2024 18:41:42 +0100 (CET)
Received: by mail-wm1-x32c.google.com with SMTP id
 5b1f17b1804b1-40d87df95ddso45603805e9.0
 for <xen-devel@lists.xenproject.org>; Wed, 10 Jan 2024 09:41:42 -0800 (PST)
Received: from [10.80.67.30] (default-46-102-197-194.interdsl.co.uk.
 [46.102.197.194]) by smtp.gmail.com with ESMTPSA id
 p14-20020a05600c358e00b0040e42391a12sm2910087wmq.13.2024.01.10.09.41.41
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 10 Jan 2024 09:41:42 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 8452896b-afdf-11ee-98f0-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1704908502; x=1705513302; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=8dSY+WGBXo9B1Ex2FCpNmU0ts6vjn/KUhABoiBBS3rE=;
        b=P93Q47pOC2TdGQbVXBo8kcY0lvAVkp7jiCsIZ/5xuWs1MKHXf6bfKnIGt2ZJ+Fq88g
         +eSHyHk1QdCcISeWZmDllOOH1NeikewAvkRY5xReZMmIm1kQmFS45AnVe2SPOjvnXmcz
         cbFGERjK3MwqjDNLDRmcDI1lH2hrxmwTxF4+I=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704908502; x=1705513302;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=8dSY+WGBXo9B1Ex2FCpNmU0ts6vjn/KUhABoiBBS3rE=;
        b=NQ21K6ubnYLnd9wfQ1hDy4KSRf/UqTOBgqQb9PakvGQgUzuSg+nVm/2gvwWyeuMePO
         g/1yeYMQdWJHSmtm24m09GU5hKMElxQwsSSV4Y/BgJa4stvZ1XLQnoBw8F19A8ONF+Kb
         8JxTZipDEqHYEtvnwuyA9K4pFSmoDNCaKxJ+7KwSvP0Dj3+zOLoX3TmFfg7aIrgSNta5
         dNuXjGRrjjunVQh5kmBokVzH8D3v2rJVr8woVuIiQgARTnnZ25WI9qAnJNI9z8n0OepU
         ZmI4+miClWxDTKyEaqNzakx6Nxy1YHQMdJBSA9d2ERCNOzsgE8rgVmLNM5KZmTP6S2eO
         YT/Q==
X-Gm-Message-State: AOJu0YwRrFDm9g9EwpXEUHoK6KOj5NMOs8JG8Ji1g+3vRS38rZWSDVnp
	iC3b9pgGTIOitvrFU+hOG59ryAl5TgBQEA==
X-Google-Smtp-Source: AGHT+IGLrqoHM4VRIUEF1+s+335MASjVJPcrF4goAp/AD4q6JohmZMutUZc4CWRI7+PtIn48mAxqdg==
X-Received: by 2002:a05:600c:a688:b0:40e:43f4:e392 with SMTP id ip8-20020a05600ca68800b0040e43f4e392mr416483wmb.366.1704908502362;
        Wed, 10 Jan 2024 09:41:42 -0800 (PST)
Message-ID: <ffebc1a9-0ed6-492c-8f3a-605a36403883@citrix.com>
Date: Wed, 10 Jan 2024 17:41:41 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] x86/nmi: ensure Global Performance Counter Control is
 setup correctly
Content-Language: en-GB
To: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
Cc: xen-devel@lists.xenproject.org, Jan Beulich <jbeulich@suse.com>,
 Wei Liu <wl@xen.org>
References: <20240110153400.64017-1-roger.pau@citrix.com>
 <4bd7324f-69fc-42e5-9155-02a7e1a8a6e8@citrix.com> <ZZ7Mz0HymYQGpTna@macbook>
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 xsFNBFLhNn8BEADVhE+Hb8i0GV6mihnnr/uiQQdPF8kUoFzCOPXkf7jQ5sLYeJa0cQi6Penp
 VtiFYznTairnVsN5J+ujSTIb+OlMSJUWV4opS7WVNnxHbFTPYZVQ3erv7NKc2iVizCRZ2Kxn
 srM1oPXWRic8BIAdYOKOloF2300SL/bIpeD+x7h3w9B/qez7nOin5NzkxgFoaUeIal12pXSR
 Q354FKFoy6Vh96gc4VRqte3jw8mPuJQpfws+Pb+swvSf/i1q1+1I4jsRQQh2m6OTADHIqg2E
 ofTYAEh7R5HfPx0EXoEDMdRjOeKn8+vvkAwhviWXTHlG3R1QkbE5M/oywnZ83udJmi+lxjJ5
 YhQ5IzomvJ16H0Bq+TLyVLO/VRksp1VR9HxCzItLNCS8PdpYYz5TC204ViycobYU65WMpzWe
 LFAGn8jSS25XIpqv0Y9k87dLbctKKA14Ifw2kq5OIVu2FuX+3i446JOa2vpCI9GcjCzi3oHV
 e00bzYiHMIl0FICrNJU0Kjho8pdo0m2uxkn6SYEpogAy9pnatUlO+erL4LqFUO7GXSdBRbw5
 gNt25XTLdSFuZtMxkY3tq8MFss5QnjhehCVPEpE6y9ZjI4XB8ad1G4oBHVGK5LMsvg22PfMJ
 ISWFSHoF/B5+lHkCKWkFxZ0gZn33ju5n6/FOdEx4B8cMJt+cWwARAQABzSlBbmRyZXcgQ29v
 cGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPsLBegQTAQgAJAIbAwULCQgHAwUVCgkI
 CwUWAgMBAAIeAQIXgAUCWKD95wIZAQAKCRBlw/kGpdefoHbdD/9AIoR3k6fKl+RFiFpyAhvO
 59ttDFI7nIAnlYngev2XUR3acFElJATHSDO0ju+hqWqAb8kVijXLops0gOfqt3VPZq9cuHlh
 IMDquatGLzAadfFx2eQYIYT+FYuMoPZy/aTUazmJIDVxP7L383grjIkn+7tAv+qeDfE+txL4
 SAm1UHNvmdfgL2/lcmL3xRh7sub3nJilM93RWX1Pe5LBSDXO45uzCGEdst6uSlzYR/MEr+5Z
 JQQ32JV64zwvf/aKaagSQSQMYNX9JFgfZ3TKWC1KJQbX5ssoX/5hNLqxMcZV3TN7kU8I3kjK
 mPec9+1nECOjjJSO/h4P0sBZyIUGfguwzhEeGf4sMCuSEM4xjCnwiBwftR17sr0spYcOpqET
 ZGcAmyYcNjy6CYadNCnfR40vhhWuCfNCBzWnUW0lFoo12wb0YnzoOLjvfD6OL3JjIUJNOmJy
 RCsJ5IA/Iz33RhSVRmROu+TztwuThClw63g7+hoyewv7BemKyuU6FTVhjjW+XUWmS/FzknSi
 dAG+insr0746cTPpSkGl3KAXeWDGJzve7/SBBfyznWCMGaf8E2P1oOdIZRxHgWj0zNr1+ooF
 /PzgLPiCI4OMUttTlEKChgbUTQ+5o0P080JojqfXwbPAyumbaYcQNiH1/xYbJdOFSiBv9rpt
 TQTBLzDKXok86M7BTQRS4TZ/ARAAkgqudHsp+hd82UVkvgnlqZjzz2vyrYfz7bkPtXaGb9H4
 Rfo7mQsEQavEBdWWjbga6eMnDqtu+FC+qeTGYebToxEyp2lKDSoAsvt8w82tIlP/EbmRbDVn
 7bhjBlfRcFjVYw8uVDPptT0TV47vpoCVkTwcyb6OltJrvg/QzV9f07DJswuda1JH3/qvYu0p
 vjPnYvCq4NsqY2XSdAJ02HrdYPFtNyPEntu1n1KK+gJrstjtw7KsZ4ygXYrsm/oCBiVW/OgU
 g/XIlGErkrxe4vQvJyVwg6YH653YTX5hLLUEL1NS4TCo47RP+wi6y+TnuAL36UtK/uFyEuPy
 wwrDVcC4cIFhYSfsO0BumEI65yu7a8aHbGfq2lW251UcoU48Z27ZUUZd2Dr6O/n8poQHbaTd
 6bJJSjzGGHZVbRP9UQ3lkmkmc0+XCHmj5WhwNNYjgbbmML7y0fsJT5RgvefAIFfHBg7fTY/i
 kBEimoUsTEQz+N4hbKwo1hULfVxDJStE4sbPhjbsPCrlXf6W9CxSyQ0qmZ2bXsLQYRj2xqd1
 bpA+1o1j2N4/au1R/uSiUFjewJdT/LX1EklKDcQwpk06Af/N7VZtSfEJeRV04unbsKVXWZAk
 uAJyDDKN99ziC0Wz5kcPyVD1HNf8bgaqGDzrv3TfYjwqayRFcMf7xJaL9xXedMcAEQEAAcLB
 XwQYAQgACQUCUuE2fwIbDAAKCRBlw/kGpdefoG4XEACD1Qf/er8EA7g23HMxYWd3FXHThrVQ
 HgiGdk5Yh632vjOm9L4sd/GCEACVQKjsu98e8o3ysitFlznEns5EAAXEbITrgKWXDDUWGYxd
 pnjj2u+GkVdsOAGk0kxczX6s+VRBhpbBI2PWnOsRJgU2n10PZ3mZD4Xu9kU2IXYmuW+e5KCA
 vTArRUdCrAtIa1k01sPipPPw6dfxx2e5asy21YOytzxuWFfJTGnVxZZSCyLUO83sh6OZhJkk
 b9rxL9wPmpN/t2IPaEKoAc0FTQZS36wAMOXkBh24PQ9gaLJvfPKpNzGD8XWR5HHF0NLIJhgg
 4ZlEXQ2fVp3XrtocHqhu4UZR4koCijgB8sB7Tb0GCpwK+C4UePdFLfhKyRdSXuvY3AHJd4CP
 4JzW0Bzq/WXY3XMOzUTYApGQpnUpdOmuQSfpV9MQO+/jo7r6yPbxT7CwRS5dcQPzUiuHLK9i
 nvjREdh84qycnx0/6dDroYhp0DFv4udxuAvt1h4wGwTPRQZerSm4xaYegEFusyhbZrI0U9tJ
 B8WrhBLXDiYlyJT6zOV2yZFuW47VrLsjYnHwn27hmxTC/7tvG3euCklmkn9Sl9IAKFu29RSo
 d5bD8kMSCYsTqtTfT6W4A3qHGvIDta3ptLYpIAOD2sY3GYq2nf3Bbzx81wZK14JdDDHUX2Rs
 6+ahAA==
In-Reply-To: <ZZ7Mz0HymYQGpTna@macbook>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 10/01/2024 4:58 pm, Roger Pau Monné wrote:
> On Wed, Jan 10, 2024 at 03:52:49PM +0000, Andrew Cooper wrote:
>> On 10/01/2024 3:34 pm, Roger Pau Monne wrote:
>>> When Architectural Performance Monitoring is available, the PERF_GLOBAL_CTRL
>>> MSR contains per-counter enable bits that is ANDed with the enable bit in the
>>> counter EVNTSEL MSR in order for a PMC counter to be enabled.
>>>
>>> So far the watchdog code seems to have relied on the PERF_GLOBAL_CTRL enable
>>> bits being set by default, but at least on some Intel Sapphire and Emerald
>>> Rapids this is no longer the case, and Xen reports:
>>>
>>> Testing NMI watchdog on all CPUs: 0 40 stuck
>>>
>>> The first CPU on each socket is started with PERF_GLOBAL_CTRL zeroed, so PMC0
>>> doesn't start counting when the enable bit in EVNTSEL0 is set, due to the
>>> relevant enable bit in PERF_GLOBAL_CTRL not being set.
>>>
>>> Fix by detecting when Architectural Performance Monitoring is available and
>>> making sure the enable bit for PMC0 is set in PERF_GLOBAL_CTRL.
>>>
>>> Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
>>> ---
>>> The fact that it's only the first CPU on each socket that's started with
>>> PERF_GLOBAL_CTRL clear looks like a firmware bug to me, but in any case making
>>> sure PERF_GLOBAL_CTRL is properly setup should be done regardless.
>> It's each package-BSP, and yes, this is clearly a firmware bug.  It's
>> probably worth saying that we're raising it with Intel, but this bug is
>> out in production firmware for SPR and EMR.
>>
>>> ---
>>>  xen/arch/x86/nmi.c | 13 +++++++++++++
>>>  1 file changed, 13 insertions(+)
>>>
>>> diff --git a/xen/arch/x86/nmi.c b/xen/arch/x86/nmi.c
>>> index dc79c25e3ffd..7a6601c4fd31 100644
>>> --- a/xen/arch/x86/nmi.c
>>> +++ b/xen/arch/x86/nmi.c
>>> @@ -335,6 +335,19 @@ static void setup_p6_watchdog(unsigned counter)
>>>           nmi_p6_event_width > BITS_PER_LONG )
>>>          return;
>>>  
>>> +    if ( cpu_has_arch_perfmon )
>>> +    {
>>> +        uint64_t global_ctrl;
>>> +
>>> +        rdmsrl(MSR_CORE_PERF_GLOBAL_CTRL, global_ctrl);
>>> +        /*
>>> +         * Make sure PMC0 is enabled in global control, as the enable bit in
>>> +         * PERF_GLOBAL_CTRL is AND'ed with the enable bit in EVNTSEL0.
>>> +         */
>>> +        if ( !(global_ctrl & 1) )
>>> +            wrmsrl(MSR_CORE_PERF_GLOBAL_CTRL, global_ctrl | 1);
>> My gut feeling is that we ought to reinstate all bits, not just bit 1. 
>> If nothing else because that will make debugging using other counters
>> more reliable too.
> Hm, yes, I was borderline on enabling all possible counters in
> PERF_GLOBAL_CTRL, as reported by CPUID.0AH: EAX[15:8].
>
> But then wondered if it was going too far, as for the purposes here we
> just care about PMC1.
>
> My reasoning for not doing it would be that such wide setup of
> PERF_GLOBAL_CTRL would then be gated on the watchdog being enabled,
> usages of other counters apart from PMC0 will be gated on the watchdog
> being enabled.  It seems more reliable to me to either do the setting
> of PERF_GLOBAL_CTRL as part of CPU initialization, or defer to each
> user of a PMC to take care of enabling it in PERF_GLOBAL_CTRL.

It is buggy that each socket-BSP is handed over with ctl=0 rather than 0xff.

But we're exasperating the bug by not returning each socket-BSP to the
default behaviour.


It makes a practical difference if a developer wants to hand-code up
PCR2.  It also makes a practical difference to what a guest sees when it
executes RDPMC in guests, because right now the perf counter values leak
in (there's another oustanding patch series of mine trying to stem this
leak).

The fixup we're performing here isn't "because we're using one
counter".  It's to get state back to default.

~Andrew


From xen-devel-bounces@lists.xenproject.org Wed Jan 10 18:31:07 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 10 Jan 2024 18:31:07 +0000
Received: from list by lists.xenproject.org with outflank-mailman.665708.1035980 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNdLx-0006FI-81; Wed, 10 Jan 2024 18:31:01 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 665708.1035980; Wed, 10 Jan 2024 18:31:01 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNdLx-0006FB-4j; Wed, 10 Jan 2024 18:31:01 +0000
Received: by outflank-mailman (input) for mailman id 665708;
 Wed, 10 Jan 2024 18:31:00 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rNdLw-0006F1-2G; Wed, 10 Jan 2024 18:31:00 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rNdLv-00015l-Qw; Wed, 10 Jan 2024 18:30:59 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rNdLv-00047E-GI; Wed, 10 Jan 2024 18:30:59 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rNdLv-0001Yn-Fi; Wed, 10 Jan 2024 18:30:59 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=Q9Mh8IccJvLs3cqDBvj4MiuFeyIuyzS2MlRhPUCT/V4=; b=piN6+lzG6JlS6IDE6u6/UDkcDL
	ilDT9om+jVLQ60EO07thDWFpcdVc4wafhd6BjxIWB7jTriUEGN3gvaIdNg6Guom5fdzzCTcYr4Sx2
	J7bcmQYsuuTHm/UFAWZKCp2Y4A/60tv3ZvO4oQxL2TgQU+4Ql0npt3q7GqnjaKyeLbic=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184310-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [ovmf test] 184310: all pass - PUSHED
X-Osstest-Versions-This:
    ovmf=e7cfdc5f14b408e85fcbcb335aae7c15bbce4dfb
X-Osstest-Versions-That:
    ovmf=7d055812cc7a7d2b062cf56291211e8cecca36ed
From: osstest service owner <osstest-admin@xenproject.org>
Date: Wed, 10 Jan 2024 18:30:59 +0000

flight 184310 ovmf real [real]
http://logs.test-lab.xenproject.org/osstest/logs/184310/

Perfect :-)
All tests in this flight passed as required
version targeted for testing:
 ovmf                 e7cfdc5f14b408e85fcbcb335aae7c15bbce4dfb
baseline version:
 ovmf                 7d055812cc7a7d2b062cf56291211e8cecca36ed

Last test of basis   184307  2024-01-10 12:41:03 Z    0 days
Testing same since   184310  2024-01-10 16:11:02 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Hou, Wenxing <wenxing.hou@intel.com>
  Joey Vagedes <joey.vagedes@gmail.com>
  Wenxing Hou <wenxing.hou@intel.com>

jobs:
 build-amd64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-amd64-amd64-xl-qemuu-ovmf-amd64                         pass    
 test-amd64-i386-xl-qemuu-ovmf-amd64                          pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Pushing revision :

To xenbits.xen.org:/home/xen/git/osstest/ovmf.git
   7d055812cc..e7cfdc5f14  e7cfdc5f14b408e85fcbcb335aae7c15bbce4dfb -> xen-tested-master


From xen-devel-bounces@lists.xenproject.org Wed Jan 10 19:12:16 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 10 Jan 2024 19:12:16 +0000
Received: from list by lists.xenproject.org with outflank-mailman.665715.1035991 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNdzc-0004LT-CZ; Wed, 10 Jan 2024 19:12:00 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 665715.1035991; Wed, 10 Jan 2024 19:12:00 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNdzc-0004LM-8k; Wed, 10 Jan 2024 19:12:00 +0000
Received: by outflank-mailman (input) for mailman id 665715;
 Wed, 10 Jan 2024 19:11:59 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=ginX=IU=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1rNdzb-0004LG-5q
 for xen-devel@lists.xenproject.org; Wed, 10 Jan 2024 19:11:59 +0000
Received: from mail-wr1-x42f.google.com (mail-wr1-x42f.google.com
 [2a00:1450:4864:20::42f])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 1f9af1b0-afec-11ee-98f0-6d05b1d4d9a1;
 Wed, 10 Jan 2024 20:11:57 +0100 (CET)
Received: by mail-wr1-x42f.google.com with SMTP id
 ffacd0b85a97d-336897b6bd6so4346413f8f.2
 for <xen-devel@lists.xenproject.org>; Wed, 10 Jan 2024 11:11:57 -0800 (PST)
Received: from [10.80.67.30] (default-46-102-197-194.interdsl.co.uk.
 [46.102.197.194]) by smtp.gmail.com with ESMTPSA id
 cw16-20020a056000091000b0033753a61e96sm5527264wrb.108.2024.01.10.11.11.56
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 10 Jan 2024 11:11:56 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 1f9af1b0-afec-11ee-98f0-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1704913917; x=1705518717; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=TafN4AVo/6YxvqOEkbR6/EsQhTsRXGqtuRlGCthuoLk=;
        b=W3i1/78fKZYtBYQtCypPCuoCiTelMbjZWNH2lBRKfcwkDhjxijvdSaFow5hmDjrCQ5
         hn4FuYQ27K+0Fb3I4BORVeC+oIEeZbDe5yIVSw/qrRtM83pqI1C6FkLpf/uDpLnpIAbI
         +p5WHXne4o74YGgWOS4qlp46oMAuXTbfNfi4w=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704913917; x=1705518717;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=TafN4AVo/6YxvqOEkbR6/EsQhTsRXGqtuRlGCthuoLk=;
        b=puWlYMlG4zhysm2hPyWPVuz3xrXl7W2s8cNV8yYh2+jTZc3Ss+k+dPEtoZ34xwdau9
         2GB1gMOY7HQu49Sk8utpaCn9k5QUiy/p4C4fn92NVKwbz2ANh3XYmdj9V5qkmA4wV/Y3
         twpFyOPq2zVvtWZ0kcMgl5IDGNGJFJqyFhDRHWqxtkSZ4gqmsKXkkDEi+YMfM2vKIGrl
         kC50P++VeltQPkr95H7JzTYSy24PLfuiaBDhdSKQ/XcgATCgLVcAHQyMqwgF5WJiW8Vx
         6tulb6G4cw+DVSNT8zEGnD4tnd6AwQQPS96Acfsa6PGneNKuTdH1R4HOlsnQq6Wp9K9l
         +q7A==
X-Gm-Message-State: AOJu0Yzn9trYGOqd1CINR05fCm1GSTbYlOdjAC6ilqs3AVD+PEDhmSDb
	qhRRfpc9oQwo7Z7I4T609CJBFL2nJCA3iA==
X-Google-Smtp-Source: AGHT+IFm+9TNphKuJrJtgIYhpo0ZIlj95TrPHrpgvfx5IaY9nGPOqSJsHjJDa6rQPXivjmVNF2JS/w==
X-Received: by 2002:a5d:4b4a:0:b0:336:8f9f:c69c with SMTP id w10-20020a5d4b4a000000b003368f9fc69cmr765121wrs.40.1704913916549;
        Wed, 10 Jan 2024 11:11:56 -0800 (PST)
Message-ID: <9f8524b4-735e-4f8f-b12c-006dd178b575@citrix.com>
Date: Wed, 10 Jan 2024 19:11:56 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 1/2] x86/vmx: Fix IRQ handling for EXIT_REASON_INIT
Content-Language: en-GB
To: Jan Beulich <jbeulich@suse.com>
Cc: Reima ISHII <ishiir@g.ecc.u-tokyo.ac.jp>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>, Wei Liu
 <wl@xen.org>, Jun Nakajima <jun.nakajima@intel.com>,
 Kevin Tian <kevin.tian@intel.com>, Tamas K Lengyel <tamas@tklengyel.com>,
 Takahiro Shinagawa <shina@ecc.u-tokyo.ac.jp>,
 Xen-devel <xen-devel@lists.xenproject.org>
References: <20231101192058.3419310-1-andrew.cooper3@citrix.com>
 <20231101192058.3419310-2-andrew.cooper3@citrix.com>
 <8ea5ad46-dbdf-2d9b-1d90-14ff20d94ab8@suse.com>
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 xsFNBFLhNn8BEADVhE+Hb8i0GV6mihnnr/uiQQdPF8kUoFzCOPXkf7jQ5sLYeJa0cQi6Penp
 VtiFYznTairnVsN5J+ujSTIb+OlMSJUWV4opS7WVNnxHbFTPYZVQ3erv7NKc2iVizCRZ2Kxn
 srM1oPXWRic8BIAdYOKOloF2300SL/bIpeD+x7h3w9B/qez7nOin5NzkxgFoaUeIal12pXSR
 Q354FKFoy6Vh96gc4VRqte3jw8mPuJQpfws+Pb+swvSf/i1q1+1I4jsRQQh2m6OTADHIqg2E
 ofTYAEh7R5HfPx0EXoEDMdRjOeKn8+vvkAwhviWXTHlG3R1QkbE5M/oywnZ83udJmi+lxjJ5
 YhQ5IzomvJ16H0Bq+TLyVLO/VRksp1VR9HxCzItLNCS8PdpYYz5TC204ViycobYU65WMpzWe
 LFAGn8jSS25XIpqv0Y9k87dLbctKKA14Ifw2kq5OIVu2FuX+3i446JOa2vpCI9GcjCzi3oHV
 e00bzYiHMIl0FICrNJU0Kjho8pdo0m2uxkn6SYEpogAy9pnatUlO+erL4LqFUO7GXSdBRbw5
 gNt25XTLdSFuZtMxkY3tq8MFss5QnjhehCVPEpE6y9ZjI4XB8ad1G4oBHVGK5LMsvg22PfMJ
 ISWFSHoF/B5+lHkCKWkFxZ0gZn33ju5n6/FOdEx4B8cMJt+cWwARAQABzSlBbmRyZXcgQ29v
 cGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPsLBegQTAQgAJAIbAwULCQgHAwUVCgkI
 CwUWAgMBAAIeAQIXgAUCWKD95wIZAQAKCRBlw/kGpdefoHbdD/9AIoR3k6fKl+RFiFpyAhvO
 59ttDFI7nIAnlYngev2XUR3acFElJATHSDO0ju+hqWqAb8kVijXLops0gOfqt3VPZq9cuHlh
 IMDquatGLzAadfFx2eQYIYT+FYuMoPZy/aTUazmJIDVxP7L383grjIkn+7tAv+qeDfE+txL4
 SAm1UHNvmdfgL2/lcmL3xRh7sub3nJilM93RWX1Pe5LBSDXO45uzCGEdst6uSlzYR/MEr+5Z
 JQQ32JV64zwvf/aKaagSQSQMYNX9JFgfZ3TKWC1KJQbX5ssoX/5hNLqxMcZV3TN7kU8I3kjK
 mPec9+1nECOjjJSO/h4P0sBZyIUGfguwzhEeGf4sMCuSEM4xjCnwiBwftR17sr0spYcOpqET
 ZGcAmyYcNjy6CYadNCnfR40vhhWuCfNCBzWnUW0lFoo12wb0YnzoOLjvfD6OL3JjIUJNOmJy
 RCsJ5IA/Iz33RhSVRmROu+TztwuThClw63g7+hoyewv7BemKyuU6FTVhjjW+XUWmS/FzknSi
 dAG+insr0746cTPpSkGl3KAXeWDGJzve7/SBBfyznWCMGaf8E2P1oOdIZRxHgWj0zNr1+ooF
 /PzgLPiCI4OMUttTlEKChgbUTQ+5o0P080JojqfXwbPAyumbaYcQNiH1/xYbJdOFSiBv9rpt
 TQTBLzDKXok86M7BTQRS4TZ/ARAAkgqudHsp+hd82UVkvgnlqZjzz2vyrYfz7bkPtXaGb9H4
 Rfo7mQsEQavEBdWWjbga6eMnDqtu+FC+qeTGYebToxEyp2lKDSoAsvt8w82tIlP/EbmRbDVn
 7bhjBlfRcFjVYw8uVDPptT0TV47vpoCVkTwcyb6OltJrvg/QzV9f07DJswuda1JH3/qvYu0p
 vjPnYvCq4NsqY2XSdAJ02HrdYPFtNyPEntu1n1KK+gJrstjtw7KsZ4ygXYrsm/oCBiVW/OgU
 g/XIlGErkrxe4vQvJyVwg6YH653YTX5hLLUEL1NS4TCo47RP+wi6y+TnuAL36UtK/uFyEuPy
 wwrDVcC4cIFhYSfsO0BumEI65yu7a8aHbGfq2lW251UcoU48Z27ZUUZd2Dr6O/n8poQHbaTd
 6bJJSjzGGHZVbRP9UQ3lkmkmc0+XCHmj5WhwNNYjgbbmML7y0fsJT5RgvefAIFfHBg7fTY/i
 kBEimoUsTEQz+N4hbKwo1hULfVxDJStE4sbPhjbsPCrlXf6W9CxSyQ0qmZ2bXsLQYRj2xqd1
 bpA+1o1j2N4/au1R/uSiUFjewJdT/LX1EklKDcQwpk06Af/N7VZtSfEJeRV04unbsKVXWZAk
 uAJyDDKN99ziC0Wz5kcPyVD1HNf8bgaqGDzrv3TfYjwqayRFcMf7xJaL9xXedMcAEQEAAcLB
 XwQYAQgACQUCUuE2fwIbDAAKCRBlw/kGpdefoG4XEACD1Qf/er8EA7g23HMxYWd3FXHThrVQ
 HgiGdk5Yh632vjOm9L4sd/GCEACVQKjsu98e8o3ysitFlznEns5EAAXEbITrgKWXDDUWGYxd
 pnjj2u+GkVdsOAGk0kxczX6s+VRBhpbBI2PWnOsRJgU2n10PZ3mZD4Xu9kU2IXYmuW+e5KCA
 vTArRUdCrAtIa1k01sPipPPw6dfxx2e5asy21YOytzxuWFfJTGnVxZZSCyLUO83sh6OZhJkk
 b9rxL9wPmpN/t2IPaEKoAc0FTQZS36wAMOXkBh24PQ9gaLJvfPKpNzGD8XWR5HHF0NLIJhgg
 4ZlEXQ2fVp3XrtocHqhu4UZR4koCijgB8sB7Tb0GCpwK+C4UePdFLfhKyRdSXuvY3AHJd4CP
 4JzW0Bzq/WXY3XMOzUTYApGQpnUpdOmuQSfpV9MQO+/jo7r6yPbxT7CwRS5dcQPzUiuHLK9i
 nvjREdh84qycnx0/6dDroYhp0DFv4udxuAvt1h4wGwTPRQZerSm4xaYegEFusyhbZrI0U9tJ
 B8WrhBLXDiYlyJT6zOV2yZFuW47VrLsjYnHwn27hmxTC/7tvG3euCklmkn9Sl9IAKFu29RSo
 d5bD8kMSCYsTqtTfT6W4A3qHGvIDta3ptLYpIAOD2sY3GYq2nf3Bbzx81wZK14JdDDHUX2Rs
 6+ahAA==
In-Reply-To: <8ea5ad46-dbdf-2d9b-1d90-14ff20d94ab8@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 02/11/2023 8:57 am, Jan Beulich wrote:
> On 01.11.2023 20:20, Andrew Cooper wrote:
>> --- a/xen/arch/x86/hvm/vmx/vmx.c
>> +++ b/xen/arch/x86/hvm/vmx/vmx.c
>> @@ -4097,10 +4097,6 @@ void vmx_vmexit_handler(struct cpu_user_regs *regs)
>>      case EXIT_REASON_MCE_DURING_VMENTRY:
>>          do_machine_check(regs);
>>          break;
>> -
>> -    case EXIT_REASON_INIT:
>> -        printk(XENLOG_ERR "Error: INIT received - ignoring\n");
>> -        return; /* Renter the guest without further processing */
>>      }
> Wouldn't the printk() better remain where it was, and just the "return" be
> purged?

Not really... that would hit the unknown vmexit path in the second.

We actually have a variety of empty cases in the second.  We could add
another.

~Andrew


From xen-devel-bounces@lists.xenproject.org Wed Jan 10 20:09:34 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 10 Jan 2024 20:09:34 +0000
Received: from list by lists.xenproject.org with outflank-mailman.665723.1036000 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNetE-0003kj-L8; Wed, 10 Jan 2024 20:09:28 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 665723.1036000; Wed, 10 Jan 2024 20:09:28 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNetE-0003kc-II; Wed, 10 Jan 2024 20:09:28 +0000
Received: by outflank-mailman (input) for mailman id 665723;
 Wed, 10 Jan 2024 20:09:27 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=N3bl=IU=amd.com=Stewart.Hildebrand@srs-se1.protection.inumbo.net>)
 id 1rNetC-0003kW-RD
 for xen-devel@lists.xenproject.org; Wed, 10 Jan 2024 20:09:27 +0000
Received: from NAM12-BN8-obe.outbound.protection.outlook.com
 (mail-bn8nam12on20617.outbound.protection.outlook.com
 [2a01:111:f400:fe5b::617])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 24b3ea75-aff4-11ee-9b0f-b553b5be7939;
 Wed, 10 Jan 2024 21:09:22 +0100 (CET)
Received: from DM6PR11CA0032.namprd11.prod.outlook.com (2603:10b6:5:190::45)
 by DM6PR12MB4284.namprd12.prod.outlook.com (2603:10b6:5:21a::12) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7181.18; Wed, 10 Jan
 2024 20:09:17 +0000
Received: from CY4PEPF0000EE39.namprd03.prod.outlook.com
 (2603:10b6:5:190:cafe::aa) by DM6PR11CA0032.outlook.office365.com
 (2603:10b6:5:190::45) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7181.17 via Frontend
 Transport; Wed, 10 Jan 2024 20:09:17 +0000
Received: from SATLEXMB03.amd.com (165.204.84.17) by
 CY4PEPF0000EE39.mail.protection.outlook.com (10.167.242.13) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.7181.14 via Frontend Transport; Wed, 10 Jan 2024 20:09:16 +0000
Received: from SATLEXMB04.amd.com (10.181.40.145) by SATLEXMB03.amd.com
 (10.181.40.144) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.34; Wed, 10 Jan
 2024 14:09:15 -0600
Received: from [172.23.76.218] (10.180.168.240) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server id 15.1.2507.34 via Frontend
 Transport; Wed, 10 Jan 2024 14:09:13 -0600
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 24b3ea75-aff4-11ee-9b0f-b553b5be7939
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=Lmd5A7Q+X2kAI7Bp8cmaZ/nVFyinX6noX7iuh2OSwy79AztBTeVMAU1um00xUOhwrp4ONUWPFmt3KGHfiU9RcZccadjl2cGRbGo8ReyzP0stUjEi6QklWLeM5NVj1ehGYDkjqD6U3W9bdIgC7OyWIcB1ugnn1dOEBq9SwHLstM1n5sVIHK4W8rzq/LzADTzqYjeD+8sWV9IwxDT1z70bBhAMv+JsbzMotNIXsKQimAUDj6wp/QmPhfn+/c44ZRdcoTbCus6NqzyzIfP1GUfi2pOjfBoDrE1A+xFGnM76xATRoUN6Z2OtaIRQdVfRSlqnQphvstQnIFioBxO00ZluFA==
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=a3pHfw4H89dtASITYqiGXbLY90yUJiRBtlD4JKK92Kg=;
 b=IExF+7EvoEPxVZ/c3M0h3ENnnbs2eN0KUsvh0e8A39OwqxDy/mtjK7dMGcu0WT4iXE/hLa8CRRV0rJzUuc3Xf8gQD/PIkcZTHL3yUFGYTv6PELbozVCYLdqUnbR8GcbaL1wVizT3nIJfE20vA/PxowwE9qk5v9lLvIaKOcmZrt/NfGqhSuWfyaVZx6HYl+6fariZfydgPI5UZr/ctl7MpadqQudcWk3vK1WTfjbCfO4yljhUvAfG1lEDS8A57Uq/yaZAfPVBKIdJ3lkMc99E3ST8piIyL8QbNNmTX1AFH3L5su29xywCMg90aU9y5qYUz3q8CCHJXvmHkAz1OCeIkQ==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=lists.xenproject.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)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=a3pHfw4H89dtASITYqiGXbLY90yUJiRBtlD4JKK92Kg=;
 b=iW97FYIaaszCqqulyejX1mpSAubrujd47f63CPzLj6RD0jmd/Zz3dQdYu6vj9llx76qAFo61Z9ZLepzSD4oPsHXYNaydU7j6+vgRjQ+OFsWypdnRohxM5cmndBd1NdnAjruWNEaj9u+H933asdDcmK2QJ57D46gbInZ2KaMg8hI=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=SATLEXMB03.amd.com; pr=C
Message-ID: <a9d7a073-7857-4567-9528-413d96a99d91@amd.com>
Date: Wed, 10 Jan 2024 15:09:14 -0500
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [RFC XEN PATCH v4 4/5] domctl: Use gsi to grant/revoke irq
 permission
Content-Language: en-US
To: Jiqian Chen <Jiqian.Chen@amd.com>, <xen-devel@lists.xenproject.org>
CC: Jan Beulich <jbeulich@suse.com>, Andrew Cooper
	<andrew.cooper3@citrix.com>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
	<roger.pau@citrix.com>, Wei Liu <wl@xen.org>, George Dunlap
	<george.dunlap@citrix.com>, Julien Grall <julien@xen.org>, Stefano Stabellini
	<sstabellini@kernel.org>, Anthony PERARD <anthony.perard@citrix.com>,
	"Juergen Gross" <jgross@suse.com>, Huang Rui <Ray.Huang@amd.com>
References: <20240105070920.350113-1-Jiqian.Chen@amd.com>
 <20240105070920.350113-5-Jiqian.Chen@amd.com>
From: Stewart Hildebrand <stewart.hildebrand@amd.com>
In-Reply-To: <20240105070920.350113-5-Jiqian.Chen@amd.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 7bit
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CY4PEPF0000EE39:EE_|DM6PR12MB4284:EE_
X-MS-Office365-Filtering-Correlation-Id: 7498e417-4433-496d-e215-08dc121805f8
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam: BCL:0;
X-Microsoft-Antispam-Message-Info:
	g2C46JgQKauAq5a+whwPq0S63ZCnDxuWjVPbzX7ZLrwQWANsY6QawzpJSUwpdEViSbb/1VfTVqR/773ik3tKsB14L391/Gi1OYf/jiNVTIQYoDoPNJqfmRcj4DlZQviTNKzE0BOQKLUaxSX8Mb1j4VCLcsfcqy4KDjBq7U3FIKKwgguzFOYcpqGC7TIW61/vuFwau8rzBLu2KeUxOJMD2g4lFMtVzcvgimfCcJMKANW5xhuwXYWvyEWuxq2J7V7V8NgRWIB1MLta1TOQNbMONTUHHA2bhh04RyHM9vwgNQ8N2B30k88DrBhnr0AOmrjscrfPNWLKpKa1CMEh97ksrJXA3MgiOmpBejcR9rs39DkbBfAzZCRAMNDagIOd8I63zlC6faeoNUF0ryQN+sol2Lluoun8qx6cKW4DZII+7533cdQFI8c0sP8TCFQPdLfENgL4+AJxWQy+HKxEoqtMc3XUQVVRxN537Y5tJ9/KA4Uh9WlJ+lC3FSZsu/eTtVWMPmqzIRi1mI6hOEdfde8Ue52AasRmcl48gyyOWQJH9At/Pjzu+79QZsVxeULZh5v58vE8SVP8rqdKQxrZ6bB2inGc+TUqVPc5CdnmTIfYVV93JrSaGP+ZV8kyYyUVUOjad0XWzfQdp7/MU1rhSBVNhxDuDxRK1oJFH2FqTsOVeCX/VwW1Gz6UkRTixeEUzTSBoGESeIaaGRr+PcP9RVOSSSs3hKrLpwYPSS92611ens7LuU8ZcDSeWybDIXu8Uwy6MHEmgDJR5c1EHN/u3+Ow4Pu5DK/R6bY1yxIbvXTNRMw=
X-Forefront-Antispam-Report:
	CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB03.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230031)(4636009)(39860400002)(346002)(376002)(396003)(136003)(230922051799003)(64100799003)(1800799012)(451199024)(82310400011)(186009)(40470700004)(36840700001)(46966006)(426003)(2616005)(26005)(336012)(478600001)(53546011)(83380400001)(36860700001)(4744005)(5660300002)(47076005)(7416002)(2906002)(44832011)(41300700001)(70586007)(70206006)(110136005)(8676002)(8936002)(16576012)(54906003)(316002)(4326008)(31696002)(81166007)(356005)(86362001)(82740400003)(36756003)(40460700003)(31686004)(40480700001)(43740500002)(36900700001);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Jan 2024 20:09:16.7542
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 7498e417-4433-496d-e215-08dc121805f8
X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB03.amd.com]
X-MS-Exchange-CrossTenant-AuthSource:
	CY4PEPF0000EE39.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR12MB4284

On 1/5/24 02:09, Jiqian Chen wrote:
> diff --git a/xen/common/domctl.c b/xen/common/domctl.c
> index f5a71ee5f78d..eeb975bd0194 100644
> --- a/xen/common/domctl.c
> +++ b/xen/common/domctl.c
> @@ -653,12 +653,20 @@ long do_domctl(XEN_GUEST_HANDLE_PARAM(xen_domctl_t) u_domctl)
>          unsigned int pirq = op->u.irq_permission.pirq, irq;
>          int allow = op->u.irq_permission.allow_access;
>  
> -        if ( pirq >= current->domain->nr_pirqs )
> +        if ( pirq >= nr_irqs_gsi )

This doesn't build on ARM, as nr_irqs_gsi is x86 only. This is a wild guess: we may want keep the existing current->domain->nr_pirqs check, then add the new nr_irqs_gsi check wrapped in #ifdef CONFIG_X86.

>          {
>              ret = -EINVAL;
>              break;
>          }
> -        irq = pirq_access_permitted(current->domain, pirq);
> +
> +        if ( irq_access_permitted(current->domain, pirq) )
> +            irq = pirq;
> +        else
> +        {
> +            ret = -EPERM;
> +            break;
> +        }
> +
>          if ( !irq || xsm_irq_permission(XSM_HOOK, d, irq, allow) )
>              ret = -EPERM;
>          else if ( allow )


From xen-devel-bounces@lists.xenproject.org Wed Jan 10 20:23:41 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 10 Jan 2024 20:23:41 +0000
Received: from list by lists.xenproject.org with outflank-mailman.665730.1036011 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNf6n-0006Vv-Tb; Wed, 10 Jan 2024 20:23:29 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 665730.1036011; Wed, 10 Jan 2024 20:23:29 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNf6n-0006Vo-QY; Wed, 10 Jan 2024 20:23:29 +0000
Received: by outflank-mailman (input) for mailman id 665730;
 Wed, 10 Jan 2024 20:23:28 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=CWwH=IU=gmail.com=jandryuk@srs-se1.protection.inumbo.net>)
 id 1rNf6m-0006Vi-O4
 for xen-devel@lists.xenproject.org; Wed, 10 Jan 2024 20:23:28 +0000
Received: from mail-ed1-x530.google.com (mail-ed1-x530.google.com
 [2a00:1450:4864:20::530])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 1cf27c94-aff6-11ee-98f0-6d05b1d4d9a1;
 Wed, 10 Jan 2024 21:23:27 +0100 (CET)
Received: by mail-ed1-x530.google.com with SMTP id
 4fb4d7f45d1cf-55818b733f7so2491547a12.3
 for <xen-devel@lists.xenproject.org>; Wed, 10 Jan 2024 12:23:27 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 1cf27c94-aff6-11ee-98f0-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1704918207; x=1705523007; darn=lists.xenproject.org;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:from:to:cc:subject:date
         :message-id:reply-to;
        bh=nBGf0IuUG38vXQsIxftO89nhi+1jrWBQtlWj2Lc3lnk=;
        b=mZzGyFNU1Ovei4Wol0ZLyaVXfCdWUb+Ga9LSZ+zaWLjtVvqytVha6II/Rw6Y+YCyYx
         zYwVSk0ofXK7bRkru2tAkP0pwoj5ctnUNT/rPxo6J9dXwXRJlAfvUZLC5bRuC+WUmEkJ
         V9YZhWTj7N8gkMb3LMXBPTkEEToul+gTcDVGO+HRC+KL9RKVzGtT0nAo5vh/vgcHsJZC
         /gIfSRu72cQVk+tRzSMFsvyC1HIp27JfELSifFQEWl2dV3vtU/ckGNWNdF/PJpqdnfPi
         0NJiL/2v3Qbd8u4t/dEa+ErVEQj3snv1kfx0kjbzxdaUT73XAKKE1ga/8aunCbB1TwbX
         AvrQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704918207; x=1705523007;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to;
        bh=nBGf0IuUG38vXQsIxftO89nhi+1jrWBQtlWj2Lc3lnk=;
        b=FAT+gZxjB/0uNVWfIjP8QEoMpPbPT5Z3W86MyYMzc4dW/GkJM3SshjByEoa6JLQ5h6
         cJQM70brGf96bBwr/nBYPyj04IFzTg6Xn1Pnb+A+ZifH/B5XgqJ2CdCGZPGMzkY8jezt
         p+/DqPc+0FW8ZKQJlUz5XkeDwZ2Asc793pBKRd1UohiOI5yZMM4t1LW31/dBigtE4rmY
         QaQOOPx4X5wgQXWNJ9DQhivWwKVlgtNmqLcsh3MVEvJ1ic9/bL3bi3VtgUHFExJwE9+s
         1hO7d3VvD3GL1j8hIikc7n1TAof2eS5zNY3F+vLRAxi2uDYawr+qjZxBKL1Zof9q6dfu
         IDSg==
X-Gm-Message-State: AOJu0YykyVt4Za39QvK86Qi89j665yAQHCU6l8TD5BtFplzI2XCpySgS
	/vkTM6xBusW418A1qWjAAAM2AL2v2JIWVMhuqaegXv/V
X-Google-Smtp-Source: AGHT+IG7wOGRVACRpE8ZELfVyCbggWXYA5dwJATs6llX4jTDlked/4YlJlgNiT5VHy8cavQ+zmsTWHyUjcbqhKEKlrc=
X-Received: by 2002:a05:6402:120a:b0:553:37e1:a5a with SMTP id
 c10-20020a056402120a00b0055337e10a5amr21280edw.40.1704918207176; Wed, 10 Jan
 2024 12:23:27 -0800 (PST)
MIME-Version: 1.0
References: <20240104090055.27323-1-jgross@suse.com> <20240104090055.27323-23-jgross@suse.com>
In-Reply-To: <20240104090055.27323-23-jgross@suse.com>
From: Jason Andryuk <jandryuk@gmail.com>
Date: Wed, 10 Jan 2024 15:23:14 -0500
Message-ID: <CAKf6xpu09_tMsAcX_fZfnbiLjpcE5k8cNeb-jTs6XTo5LvnRMA@mail.gmail.com>
Subject: Re: [PATCH v3 22/33] tools/xenstored: add early_init() function
To: Juergen Gross <jgross@suse.com>
Cc: xen-devel@lists.xenproject.org, Wei Liu <wl@xen.org>, 
	Julien Grall <julien@xen.org>, Anthony PERARD <anthony.perard@citrix.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

On Thu, Jan 4, 2024 at 4:12=E2=80=AFAM Juergen Gross <jgross@suse.com> wrot=
e:
>
> Some xenstored initialization needs to be done in the daemon case only,
> so split it out into a new early_init() function being a stub in the
> stubdom case.
>
> Remove the call of talloc_enable_leak_report_full(), as it serves no
> real purpose: the daemon only ever exits due to a crash, in which case
> a log of talloc()ed memory hardly has any value.
>
> Signed-off-by: Juergen Gross <jgross@suse.com>

Reviewed-by: Jason Andryuk <jandryuk@gmail.com>


From xen-devel-bounces@lists.xenproject.org Wed Jan 10 20:26:17 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 10 Jan 2024 20:26:17 +0000
Received: from list by lists.xenproject.org with outflank-mailman.665733.1036020 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNf9U-00073B-9U; Wed, 10 Jan 2024 20:26:16 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 665733.1036020; Wed, 10 Jan 2024 20:26:16 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNf9U-000734-6w; Wed, 10 Jan 2024 20:26:16 +0000
Received: by outflank-mailman (input) for mailman id 665733;
 Wed, 10 Jan 2024 20:26:15 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=r7A+=IU=amd.com=vikram.garhwal@srs-se1.protection.inumbo.net>)
 id 1rNf9T-00072y-5N
 for xen-devel@lists.xenproject.org; Wed, 10 Jan 2024 20:26:15 +0000
Received: from NAM04-MW2-obe.outbound.protection.outlook.com
 (mail-mw2nam04on20608.outbound.protection.outlook.com
 [2a01:111:f400:7e8c::608])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 7f0d7685-aff6-11ee-98f0-6d05b1d4d9a1;
 Wed, 10 Jan 2024 21:26:13 +0100 (CET)
Received: from MW3PR12MB4409.namprd12.prod.outlook.com (2603:10b6:303:2d::23)
 by SN7PR12MB7882.namprd12.prod.outlook.com (2603:10b6:806:348::16)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7159.23; Wed, 10 Jan
 2024 20:26:09 +0000
Received: from MW3PR12MB4409.namprd12.prod.outlook.com
 ([fe80::5aa3:9748:d8d0:87e1]) by MW3PR12MB4409.namprd12.prod.outlook.com
 ([fe80::5aa3:9748:d8d0:87e1%5]) with mapi id 15.20.7181.015; Wed, 10 Jan 2024
 20:26:09 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 7f0d7685-aff6-11ee-98f0-6d05b1d4d9a1
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=WkQghcuCVaxuvzvoVs5yRlzeIqYizxx2scm1Vs3D8wGluQ+jaNP6A6mB3QHwJaqgvkaovCeSwMUNSsqWYHkBzKs6UHROx/jy6vVBAlXDBx46WPcz5T7+AiTGQA4+zdXT/u7nPW9nODi4Bex4QdmEv68LcXMAiU9A/CA3UNTHyooaf1gB3IV+LJ0ttt7ajRS1wn7tIEOC9jHkxgntRcxj1re2boO6k02l6EsQV+lr5B3sA70273E2cXmTCYYgv6YnaPntz9XydPz2eHq346vlTn6qeIR7K6+a/cXAj5sQK+cD7lN+d5GPekZv8mgeAnUA9mLJbirp/5VA7uKP+i1m2g==
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=Inpf2mpS27KMeYkyYmNBEi7e3NL3gM3HocX5uPz7iqw=;
 b=KruJ/IE2xjpSMBCkcBJJa5LIsvXy1ukJALbiIR48Rtjbp0P/ggUuD9q3Pv1Pr7G3aPt68VZj8h3vSLELMNIvLUkHSeTE9ZGs5RWAtUpLPrXwGP4ClIMzsjruLa3SeuWtvtV8Ie6iN7+nr3bNTRS0ve8XirC77B93LWwuqSsFtLCX3Dzccq6eC7YRdV7DcjqeIQ+tSylnTbUcopO8zSHxQuo8kt4Z6Btjlu+LMlGzOajAHGTe5UXabn1PHM/JnKPeeYeQLkqKjU4tm7XL6JFGf+0smc2FLhLkOuRVmzWDXI9d4MrN2Fc5pSpPttYlCZAeVVNquq+NPmaZ+za7hQZl7w==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=amd.com; dmarc=pass action=none header.from=amd.com; dkim=pass
 header.d=amd.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=Inpf2mpS27KMeYkyYmNBEi7e3NL3gM3HocX5uPz7iqw=;
 b=s7aOBvrjmUojKw/NOMdu0bXpC/voBdxE7Rt7Tlxl/oSehApODtxad4EmyX1B2+9S3g5XVDEJsvK7Rh768+BLwpfUwTx5fRkH+csEHI4QHVm7Z8lC7uHsPAudGOeF7v4s+xa6qp+0JqoaTliYBF1IbPqVnMhHclV1hop6l0FWaAk=
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=amd.com;
Date: Wed, 10 Jan 2024 12:25:57 -0800
From: Vikram Garhwal <vikram.garhwal@amd.com>
To: Julien Grall <julien@xen.org>
Cc: Javi Merino <javi.merino@cloud.com>, xen-devel@lists.xenproject.org,
	Stefano Stabellini <sstabellini@kernel.org>
Subject: Re: [PATCH for-4.18 v1] xen/common: Don't dereference overlay_node
 after checking that it is NULL
Message-ID: <ZZ79VcZ1eCqfny-j@amd.com>
References: <6b2db92de764b6031647926d27cb14dd455eff7d.1704809355.git.javi.merino@cloud.com>
 <e579994b-80ff-42db-bf57-6c6068fca902@xen.org>
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
In-Reply-To: <e579994b-80ff-42db-bf57-6c6068fca902@xen.org>
X-ClientProxiedBy: MW4PR04CA0348.namprd04.prod.outlook.com
 (2603:10b6:303:8a::23) To MW3PR12MB4409.namprd12.prod.outlook.com
 (2603:10b6:303:2d::23)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: MW3PR12MB4409:EE_|SN7PR12MB7882:EE_
X-MS-Office365-Filtering-Correlation-Id: e1171a19-c26e-463d-ab71-08dc121a60f9
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam: BCL:0;
X-Microsoft-Antispam-Message-Info:
	PXMQS7YgFap1pVex1HUsD3uPGMlaur6WOSH2KgNU+GR0olshBKZkIScLbo4kp+eVj9gFixSm/A7MYW0utHXRCFecJXMdLbf6KtDV+1q0A6IpWZU3ASdVUOuqveqDB+IICN+LldJIZI9xU2hP+DeHQT1VovtRaXvye7klOIBEjY9ASmK3Hdzel0qQ6uX5fKP7cpKWP1IjrylTp9DQmJLuyrg2DOXtHYvlsd8voAUkfCyh01tpb3c3ayCn9LYDgOXD5slzjTOz7kshgUTf6Rbs9/ZgsRpgV6AZiI6g1/vu+7THih+8+I1k8YxB8CF1h7VXje6KmXfO5ygiSiwBEGJB5DFji6Nl3g/BFiCp00YUEaw84T6a0IJh0tshundrI4dTa2M+T6Sj6+Zym1QkGVJcVobN8IVZrg1nxyZQcPybbi68lt82NDZT0239lYtDW1yU7zozhtoROD+TgtiaXhu8OlKPS/zg9UVjBSoRAgzIzM0AlC4bygj0jzMzfVaXE6EV8dm+3geB9+JM15de3gVf5TdHK76dnAgozvEbMCv06Mg=
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:MW3PR12MB4409.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230031)(376002)(39860400002)(366004)(346002)(136003)(396003)(230922051799003)(451199024)(64100799003)(186009)(1800799012)(8676002)(8936002)(6512007)(316002)(53546011)(6506007)(54906003)(26005)(2616005)(83380400001)(6486002)(66556008)(66476007)(66946007)(41300700001)(86362001)(6916009)(6666004)(966005)(478600001)(5660300002)(36756003)(38100700002)(2906002)(4326008)(44832011);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?WHAzc2x0RDhXeWRKMWtPVnA2QWxMOWppY1B3TTA0VE4zYVpoSUJKcjNEc1RZ?=
 =?utf-8?B?aGFJVW9IdDRBVVI5U2UxNng5RWhNeUNuSFpSbHpSVVplZzdkN3VwSW1OcXk5?=
 =?utf-8?B?ZUtOY0N5bkhhQnduaFBiWUZTbXJMNzMrR2RqK2ZJTzFPdVFDNzhESEpwcTBO?=
 =?utf-8?B?djZiclZpQjRpSmJic01xVGdFUDZKRkJXMVZ5dlBFbXcvcHBITHZld3Fwdzc0?=
 =?utf-8?B?UHQvOUZCRU5mWk4ySndwNjFhR0JpcWJ2NXljcCtEVisrRWtEWnZhQTBXRFdN?=
 =?utf-8?B?MVo3clFVYUY0aGNGRXdsR1Y0TlMxaVpLclVqcGFnaGNiRTVvZUdQYkkvYVo1?=
 =?utf-8?B?WHN2WEgxZlIvcXU4a1FicHBCVnZPNkdMdnIxZFVpQTE5eUp5QUtSMUlOK0lO?=
 =?utf-8?B?NnhpU0FOOElqcWV5ZkwwVGxycUh2WkpGQzhPN3dselFZVmczeVRCTUxJWjZy?=
 =?utf-8?B?WWNVbHZ4U0JWakUwNXh0dDUwVHhadDdCbkYrd1psMjBkdHBscHNteklTelI5?=
 =?utf-8?B?MjY0cUxmSE80bEpuSm9uY3BUU1l1RW5wQ1dSKzVGRGpEYnZQc1huekFIb3R0?=
 =?utf-8?B?Y0hvV0k3dWNXTkhFTEMrVlJJYzBlNERKRDRvWjR5NzNjN0paNWdtek1ZUEU2?=
 =?utf-8?B?QVBiN2dnQ3k2YjVhWXFtbnYySHByWEx4dVBRcVFxT1NYSHVyd2V4bExPTjZ4?=
 =?utf-8?B?dnRSdld3bUF4SEhxQjZ5MlhMK2NQZzVPL3dPdFlmTzVuamw2U05QRlBDQ2Js?=
 =?utf-8?B?Y2RsekF1VlIyMWdBNzlzOFZaSzBNbEVIUkFvVTVEWnVtK1B3alErTE82V2NT?=
 =?utf-8?B?S1dmb0lSeTBUYWxyWnFITVBJSFl3TVdJYnlYYk9UK0N3TGNWcmhmUnJSWnBw?=
 =?utf-8?B?a0JtcXF5dndXS2VNVGZqRUdrWDh0TEFYZXlaQnA4SzkxaHVIS1AxaDBCcVN6?=
 =?utf-8?B?RDlMNUJ5Zi9qbVkwQnpYMTFDd1h2OUY4Z2F3ME5HSm5wZ1RBekxuaVdDVTBx?=
 =?utf-8?B?eVVSR0h2UUVOaExMS24rL25mbDZoS2pLUmxScGpGeDBmVkJEV09meGMrWTFX?=
 =?utf-8?B?THFCcGxJeGhXZUJWM2hRM1VNdTdMWnZUanFrVVJkYUlhU240Um9LN0ZRTHBG?=
 =?utf-8?B?QXd0MkVjQzlWRGZVMlZCcFhrSzRHK2pxS1g4OGlOY2NvY3habVNpT2RyQlRt?=
 =?utf-8?B?SDhsTlcrT3Y4MnU3QlhDTkxDVis0a2JxU2tOZy81YU5NTFZOaW5mRC9yUUV6?=
 =?utf-8?B?Zys0M3RTeVhPNUcwaWtsRGRwZlQ0dEpFY3p4Y1FIalJNSU90ZjBTUkcwM2V1?=
 =?utf-8?B?ZjB5UExjdGdiRGNQU281NG9ibDQza1A2Vm5mWkNDWHljVFJZMU01OXlKdVd1?=
 =?utf-8?B?U1RFZ2twV1dPQjdYTkVRSFFML1lyMlRaNDBvako0Vk0ydW55Wit5bkRXSlhX?=
 =?utf-8?B?MXFVOC9ZeVN1WVVsMFM5cEVJYWdaRGpWeUR5cWYzT1dVamQzSVhNSHJXR05S?=
 =?utf-8?B?M29oSi9lelBFWW1OOGpOdGkxNHgxSUd5RzlRL00xMmRvZDROdmNhekR4T1JT?=
 =?utf-8?B?R1lIMWlQVjVUU0pud2lPUXczRkU3amdmR0VnSjdXVDNEdmUwRElYTmpPRFhT?=
 =?utf-8?B?VHRTVW5sNXVUZDdJejlEa3lWWDVmeHlkaEpkbE9HbnlYNkxmNU80azhVNngx?=
 =?utf-8?B?MTRCdDNYNkJTRk5sQWRXdW1ZV1d6S3VVaWg5dHJ5RFF6RlZ2aGtsRDBZR3ZI?=
 =?utf-8?B?eG9LZFhJZ1RYTHFHRmlmeVFnNEZzWG5iRFpCa0gxcm1TSUNmWGRZSURZNEZ3?=
 =?utf-8?B?UEpheThoNHlNK0V4YXdaNkk1bkFJeFJGU0duOE9Cam02bkJ4U2paaU9EdTE0?=
 =?utf-8?B?WjRwWklUZ1A3QzMxWFEvNENVMGh4S3BJdTFhVE9TMnJHK0NRSFRFWEs1SVIz?=
 =?utf-8?B?dVgvbU9jSVhBS0lHbWNpbjdRbVYwMlpUOUJ1bnQvTUVHcDZqbjU1cXpyN1d2?=
 =?utf-8?B?NVZFTW9kNlltUlNmVVJqSlZRL2JrRmhFNXM5dWJHcXFQdUdjRlVycWdyQVNx?=
 =?utf-8?B?eWZGdjMzOXhyQVdPdy9lSWFZcm9BYklDV2ZmTmFZcW80c3NlVCtBQWZrMits?=
 =?utf-8?Q?MjaS929EGLGNu6i6e7TyUfs/6?=
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-Network-Message-Id: e1171a19-c26e-463d-ab71-08dc121a60f9
X-MS-Exchange-CrossTenant-AuthSource: MW3PR12MB4409.namprd12.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Jan 2024 20:26:09.0150
 (UTC)
X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted
X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d
X-MS-Exchange-CrossTenant-MailboxType: HOSTED
X-MS-Exchange-CrossTenant-UserPrincipalName: 3ufUhlFPxGaFOJH7A2OPQxC+mCOpzkloWMBW4KH8grAfy7khwaEULdeNE/izxcCVP//p8xTy22CfOwNJlRv3sg==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN7PR12MB7882

Hi Javi,
Thank you for spotting and fixing this.
On Tue, Jan 09, 2024 at 03:31:55PM +0000, Julien Grall wrote:
> Hi Javi,
> 
> Title: Any reason this is titled for-4.18? Shouldn't this patch also be
> merged in staging?
> 
> On 09/01/2024 14:19, Javi Merino wrote:
> > In remove_nodes(), overlay_node is dereferenced when printing the
> > error message even though it is known to be NULLL.  Fix the error
> 
> Typo: s/NULLL/NULL/
> 
> This can be fixed on commit if there is nothing else.
> 
> > message to avoid dereferencing a NULL pointer.
> > 
> > The semantic patch that spots this code is available in
> > 
> > https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/scripts/coccinelle/null/deref_null.cocci?id=1f874787ed9a2d78ed59cb21d0d90ac0178eceb0
> 
> Good catch and glad to see that coccinelle can work on Xen. I am looking
> forward for more work in that area :).
> 
> > 
> > Fixes: 7e5c4a8b86f1 ("xen/arm: Implement device tree node removal functionalities")
> > Signed-off-by: Javi Merino <javi.merino@cloud.com>
> c> ---
> > CC: Vikram Garhwal <vikram.garhwal@amd.com>
> > 
> > Vikram, I didn't know what to put in the error message.  Feel free to
> > suggest something more appropriate than "Device not present in the
> > tree".
> 
> More questions for Vikram, looking at the code, it is not 100% clear in
> which condition overlay_node could be NULL. Is this a programming error? if
> so, maybe this should be an ASSERT_UNREACHABLE() (could be added separately)
> and it would be fine to print nothing.
> 
This can happen with failures in add_nodes() function. add_nodes() failure will
try to call remove_nodes function. Depending on where add_nodes() is failed,
nodes_address may or may not be NULL.

We also added a detailed comment on this:
https://github.com/xen-project/xen/blob/5a3ace21f3d779b291a2d305824b2820d88de7f1/xen/common/dt-overlay.c#L816

For now, we can return from here without printing anything as error message will
be printed by the caller of remove_nodes() anyway.

> Cheers,
> 
> -- 
> Julien Grall


From xen-devel-bounces@lists.xenproject.org Wed Jan 10 20:27:14 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 10 Jan 2024 20:27:14 +0000
Received: from list by lists.xenproject.org with outflank-mailman.665738.1036030 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNfAQ-0007ZE-JG; Wed, 10 Jan 2024 20:27:14 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 665738.1036030; Wed, 10 Jan 2024 20:27:14 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNfAQ-0007Z7-Gb; Wed, 10 Jan 2024 20:27:14 +0000
Received: by outflank-mailman (input) for mailman id 665738;
 Wed, 10 Jan 2024 20:27:12 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=CWwH=IU=gmail.com=jandryuk@srs-se1.protection.inumbo.net>)
 id 1rNfAO-0007Z1-LD
 for xen-devel@lists.xenproject.org; Wed, 10 Jan 2024 20:27:12 +0000
Received: from mail-ed1-x52c.google.com (mail-ed1-x52c.google.com
 [2a00:1450:4864:20::52c])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id a270b86b-aff6-11ee-98f0-6d05b1d4d9a1;
 Wed, 10 Jan 2024 21:27:11 +0100 (CET)
Received: by mail-ed1-x52c.google.com with SMTP id
 4fb4d7f45d1cf-55818b733f7so2495733a12.3
 for <xen-devel@lists.xenproject.org>; Wed, 10 Jan 2024 12:27:11 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: a270b86b-aff6-11ee-98f0-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1704918431; x=1705523231; darn=lists.xenproject.org;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:from:to:cc:subject:date
         :message-id:reply-to;
        bh=9nRUNNOIavKulSy9Q0ggc3YP8UFXHfwTBqcyW9VsujE=;
        b=DWtJH73f0wW2pYkwGE99/QUxPzUlm7OlIjg8nYwlJoz8aMGlHcyRn0TGS3l60fUbgx
         pmENWEPexICJiQIdTQQtAx9vVwVvzl6A2GOjSwf3pOK73BDFR9BI35egd3oeGsTbtlWC
         8HlRzda5jTSE++ftQN+hkEpM1spREYsw+leVQssmixGjNRqyK1COVrRTxZ9QGNZa1aqz
         lqVMJqwPwbhuqJ1ddtcwVXs0L4J2tOfN7OLi2SQGJHTvx1l7X5RQUpseYUkNeas88Dtg
         Ft4Y2jGilQq2Wk9/0Xsy7a/aMCOmCgmUPA1wqBptdKT5BtvZUVUvN4hY7beoq9FXa1YI
         7czQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704918431; x=1705523231;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to;
        bh=9nRUNNOIavKulSy9Q0ggc3YP8UFXHfwTBqcyW9VsujE=;
        b=vYVkMuDFTnQ1zuTydhB0sd0Xui7UgRffOnQLgISRdwG8BmdVasvGD4xQc63/eCVAoE
         rIOf+67qJXAzqjpNkttigxzZxxOLcMbFlaKWQWuxsnXV1mSNBbMXw7iUl/2GcOBz77LQ
         VauQMj8p4EWzVOnHhP+KxLFMqW0hesr6EG0qWCT38TuG4oYqByzJDb53sAOsZZyjdeJ/
         Fng52yX6iIDJnHZffs+yuNARrXR1M0RcSBkvmK0rE5LhmTEamjr+duW6Zd2Gj4h1J0jV
         ycKcXn28iTLQRBPaD1xUBjlwkjJZV0ji7Gwd7cg9cxqofdCgLR9/0RyTB7XLQgMYJP8m
         l50g==
X-Gm-Message-State: AOJu0YyGHmE94LG834asRVHx7dPUxwPkajnzOQQ3PmxXSSC9cPA+KIX+
	CQDImCX8UR0hArAW9gFCCQSia2DWp5bqdY68LZKsvByI
X-Google-Smtp-Source: AGHT+IFatB/vJ+6kHPGVykCmt4UeNsBgBurUVfjTrz1gKHxrSdD2QGrGwa12FPlRK/CdOKrMupq1yJdMlzGTMcqZJ54=
X-Received: by 2002:a50:ec8e:0:b0:555:204a:beb3 with SMTP id
 e14-20020a50ec8e000000b00555204abeb3mr19076edr.59.1704918431150; Wed, 10 Jan
 2024 12:27:11 -0800 (PST)
MIME-Version: 1.0
References: <20240104090055.27323-1-jgross@suse.com> <20240104090055.27323-24-jgross@suse.com>
In-Reply-To: <20240104090055.27323-24-jgross@suse.com>
From: Jason Andryuk <jandryuk@gmail.com>
Date: Wed, 10 Jan 2024 15:26:59 -0500
Message-ID: <CAKf6xptod88p68Zppr8iG=Ni2ysJSHPvEftoocdL2PWP3_uygg@mail.gmail.com>
Subject: Re: [PATCH v3 23/33] tools/xenstored: move systemd handling to posix.c
To: Juergen Gross <jgross@suse.com>
Cc: xen-devel@lists.xenproject.org, Wei Liu <wl@xen.org>, 
	Julien Grall <julien@xen.org>, Anthony PERARD <anthony.perard@citrix.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

On Thu, Jan 4, 2024 at 4:13=E2=80=AFAM Juergen Gross <jgross@suse.com> wrot=
e:
>
> Move systemd handling to a new late_init() function in posix.c.
>
> This prepares a future removal of the NO_SOCKETS macro.
>
> Signed-off-by: Juergen Gross <jgross@suse.com>

Reviewed-by: Jason Andryuk <jandryuk@gmail.com>


From xen-devel-bounces@lists.xenproject.org Wed Jan 10 20:30:59 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 10 Jan 2024 20:30:59 +0000
Received: from list by lists.xenproject.org with outflank-mailman.665743.1036041 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNfDy-00016s-2N; Wed, 10 Jan 2024 20:30:54 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 665743.1036041; Wed, 10 Jan 2024 20:30:54 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNfDx-00016V-VN; Wed, 10 Jan 2024 20:30:53 +0000
Received: by outflank-mailman (input) for mailman id 665743;
 Wed, 10 Jan 2024 20:30:53 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=CWwH=IU=gmail.com=jandryuk@srs-se1.protection.inumbo.net>)
 id 1rNfDx-00016P-4Z
 for xen-devel@lists.xenproject.org; Wed, 10 Jan 2024 20:30:53 +0000
Received: from mail-lj1-x22b.google.com (mail-lj1-x22b.google.com
 [2a00:1450:4864:20::22b])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 25d96c99-aff7-11ee-98f0-6d05b1d4d9a1;
 Wed, 10 Jan 2024 21:30:52 +0100 (CET)
Received: by mail-lj1-x22b.google.com with SMTP id
 38308e7fff4ca-2cd0f4f306fso55135091fa.0
 for <xen-devel@lists.xenproject.org>; Wed, 10 Jan 2024 12:30:52 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 25d96c99-aff7-11ee-98f0-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1704918652; x=1705523452; darn=lists.xenproject.org;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:from:to:cc:subject:date
         :message-id:reply-to;
        bh=GhOIpROn0DuWv7Mj/10wYc/iwl6LttJqLi+jeGADm+A=;
        b=CQ6lq3xtgJIU/i0lv4xJVqG5xt22quq8OG/rDpefUyROxVkvZZ/MvVVcHPIH6XlH1O
         yCVRCRqDGpSZeU+cPgv2SOqsOY36qI872Ktxy/4SVPWkj2j4jR83BZ+cKsiAHu1f8Ne5
         d4UWbR2o5cSrn/LGeyYt27lARb8HS4JQg8dlwu02fFTsvO2oFXwiQmAz5EUqTp2iweIQ
         MLe3If1uRhCw8iSPgZPX3MSROCXRLPQKBQ75V3xQ0swmOHA/ihlUiT0exsH0PidSW2L5
         R0NkNGsxarYecGHupBFiwoPJTT39cklCyH6K5W1mYksgjd8ij/+NE8G7EIxyJwk2pUmu
         TOKQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704918652; x=1705523452;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to;
        bh=GhOIpROn0DuWv7Mj/10wYc/iwl6LttJqLi+jeGADm+A=;
        b=CEuQQEmJ1tKpLgKpDDTj9R373kXLtRrPg0xs46nfTMVgzkD4EEgmil6dJCFGn/AiiC
         TaEp16FF1ZZ3wd6VXsmSsxPO63zA04o0idzhBwiexIZz0xQwXJLIlPCljV1lPXD02J0y
         mTlDmtP5Z0Dju9pKY4Bk8tHJeozaaQM5GjSR1RKzvqr6tcCOZU4wQXsOJlNLRpDkOos+
         O7O7MsPOBOeqIPIk0R+IHmq0KMRYMDVQG6C9a+Mprir4bLFi2BOU214lMuiqQK8iBE+T
         buaJat5XAsCA2la0oqmQtbi8vA5XM+9hKMxhG+ecVqBRRCkRVRDzxnuknZaEZrm9y+oC
         RU8A==
X-Gm-Message-State: AOJu0YzXunajxJfeUCI9AE2iASZBaLIF6aT2gwOz/g9Uc0dKZyDI0IhV
	QOKdNzy37KXyGgwKLyHs14qwuA9A1WCFq3RoFYc=
X-Google-Smtp-Source: AGHT+IG5BsG43fX4Cy8wJJvZcyXgKc60yriKZ91xmZgEXXxiiquxAQCZ7pwf21bppyFzzR06wnZ9AupTNEIMMtkePqI=
X-Received: by 2002:a2e:9902:0:b0:2cc:a5ae:f122 with SMTP id
 v2-20020a2e9902000000b002cca5aef122mr62470lji.78.1704918651465; Wed, 10 Jan
 2024 12:30:51 -0800 (PST)
MIME-Version: 1.0
References: <20240104090055.27323-1-jgross@suse.com> <20240104090055.27323-25-jgross@suse.com>
In-Reply-To: <20240104090055.27323-25-jgross@suse.com>
From: Jason Andryuk <jandryuk@gmail.com>
Date: Wed, 10 Jan 2024 15:30:39 -0500
Message-ID: <CAKf6xptMfP7AjKdP+MmAmZw53pR0Un-c786ZOwS3eR0NYVtQaA@mail.gmail.com>
Subject: Re: [PATCH v3 24/33] tools/xenstored: move all log-pipe handling into posix.c
To: Juergen Gross <jgross@suse.com>
Cc: xen-devel@lists.xenproject.org, Wei Liu <wl@xen.org>, 
	Julien Grall <julien@xen.org>, Anthony PERARD <anthony.perard@citrix.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

On Thu, Jan 4, 2024 at 4:11=E2=80=AFAM Juergen Gross <jgross@suse.com> wrot=
e:
>
> All of the log-pipe handling is needed only when running as daemon.
>
> Move it into posix.c. This requires to have a service function in the
> main event loop for handling the related requests and one for setting
> the fds[] array. Use a generic name for those functions, as socket
> handling can be added to them later, too.
>
> Signed-off-by: Juergen Gross <jgross@suse.com>

Reviewed-by: Jason Andryuk <jandryuk@gmail.com>


From xen-devel-bounces@lists.xenproject.org Wed Jan 10 20:47:28 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 10 Jan 2024 20:47:28 +0000
Received: from list by lists.xenproject.org with outflank-mailman.665752.1036051 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNfTu-0003RE-F2; Wed, 10 Jan 2024 20:47:22 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 665752.1036051; Wed, 10 Jan 2024 20:47:22 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNfTu-0003R7-CD; Wed, 10 Jan 2024 20:47:22 +0000
Received: by outflank-mailman (input) for mailman id 665752;
 Wed, 10 Jan 2024 20:47:20 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=CWwH=IU=gmail.com=jandryuk@srs-se1.protection.inumbo.net>)
 id 1rNfTs-0003R1-Or
 for xen-devel@lists.xenproject.org; Wed, 10 Jan 2024 20:47:20 +0000
Received: from mail-ed1-x529.google.com (mail-ed1-x529.google.com
 [2a00:1450:4864:20::529])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 724ad809-aff9-11ee-98f0-6d05b1d4d9a1;
 Wed, 10 Jan 2024 21:47:19 +0100 (CET)
Received: by mail-ed1-x529.google.com with SMTP id
 4fb4d7f45d1cf-555f581aed9so5388463a12.3
 for <xen-devel@lists.xenproject.org>; Wed, 10 Jan 2024 12:47:19 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 724ad809-aff9-11ee-98f0-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1704919639; x=1705524439; darn=lists.xenproject.org;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:from:to:cc:subject:date
         :message-id:reply-to;
        bh=LvJNeieuIZAAb9SWVbY0cs7/rBSF6L3PddlhDHJYfYM=;
        b=JiIpFhKyVFXxDbC2GF/KS7vlEQDKrXASUiytzWu98F7iQvsKEoZkj/PfSK19w7gheA
         cc73UYXVLfCWwLcUefsWKE7HAUNCyIhwWrz27veDQRu8sjEOB4Y8LOiqlUGNBaItNezQ
         UpKw04xFB8cZeqOwDy5JGccY1vVp2k9Qgxy7ZyW56BSH822wx8IA2jgluo95XvDiHqB+
         X19veqKr4rRply2acmTorr+JNE/6F03wTFS/xycyE6nAbOTjfn4IX/tBeY3Dm+LM4xkM
         g/clDBEs25/lBOZYGz2T9xXZMfpyUKEv4zg5rRg4fN28IxL13XFv6vL0FLT6XrQd42A/
         MB1Q==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704919639; x=1705524439;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to;
        bh=LvJNeieuIZAAb9SWVbY0cs7/rBSF6L3PddlhDHJYfYM=;
        b=q/PP13t/dodnszdrbC8G7J2Yp2OugsOPouxASiUB/NIOLuS+gb30AmQ1mFouMG78Qt
         deB5a4rtUMtAjRH4bulM52oELanWpk+lanlxsytrXlK0XzDg6B4pjxbLhBAADJSWw/ED
         /ouz4b6o1l+JZgI9vsTPMvAYpNAELdEWBbKXNe6+DRyPz974GqWfo9NVuQ1ADtcsaxbA
         u7YySmzYMs9FqfMYNcU5BVAuy/TJ5RL8OYYKf7d7f9Cb/+DVDGge+sM61PTh8Muf8JEi
         ySzWZhAcQqFwlz9uLc/QzIdfC60tbSPpWpbwuy6ieElP8cSRZMeP+/yZVU1VyW+eLy0k
         /AIA==
X-Gm-Message-State: AOJu0YxHlxo2N0boDFGyGx9/hj5oxJ19EzTc6uVx+0Jm730rvcBg4par
	feb8LCLe80LbFrYoZ1jcr5yl7Z2nk8TOs8v3J/s=
X-Google-Smtp-Source: AGHT+IHLwp2CBk3j5cEn/eNeeC5YydkhEU7v0nucpJ0hxKeJpKucZa+Lua1/k1oVK8TfjLkWmCXCI+CE3Xscb8HNshY=
X-Received: by 2002:a05:6402:430d:b0:557:8067:c43b with SMTP id
 m13-20020a056402430d00b005578067c43bmr31567edc.61.1704919638965; Wed, 10 Jan
 2024 12:47:18 -0800 (PST)
MIME-Version: 1.0
References: <20240104090055.27323-1-jgross@suse.com> <20240104090055.27323-26-jgross@suse.com>
In-Reply-To: <20240104090055.27323-26-jgross@suse.com>
From: Jason Andryuk <jandryuk@gmail.com>
Date: Wed, 10 Jan 2024 15:47:07 -0500
Message-ID: <CAKf6xpvutPFTUX9EYa=Pt+TnNhZojQ7xSfgUgToujvHWPM=oWA@mail.gmail.com>
Subject: Re: [PATCH v3 25/33] tools/xenstored: move all socket handling into posix.c
To: Juergen Gross <jgross@suse.com>
Cc: xen-devel@lists.xenproject.org, Wei Liu <wl@xen.org>, 
	Julien Grall <julien@xen.org>, Anthony PERARD <anthony.perard@citrix.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

On Thu, Jan 4, 2024 at 4:10=E2=80=AFAM Juergen Gross <jgross@suse.com> wrot=
e:
>
> All of the socket handling is needed only when running as daemon.
>
> Move it into posix.c, allowing to remove the NO_SOCKETS macro.
>
> Signed-off-by: Juergen Gross <jgross@suse.com>

Reviewed-by: Jason Andryuk <jandryuk@gmail.com>


From xen-devel-bounces@lists.xenproject.org Wed Jan 10 20:48:22 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 10 Jan 2024 20:48:22 +0000
Received: from list by lists.xenproject.org with outflank-mailman.665756.1036061 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNfUs-00047p-OC; Wed, 10 Jan 2024 20:48:22 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 665756.1036061; Wed, 10 Jan 2024 20:48:22 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNfUs-00047i-LY; Wed, 10 Jan 2024 20:48:22 +0000
Received: by outflank-mailman (input) for mailman id 665756;
 Wed, 10 Jan 2024 20:48:21 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=CWwH=IU=gmail.com=jandryuk@srs-se1.protection.inumbo.net>)
 id 1rNfUr-00046K-DQ
 for xen-devel@lists.xenproject.org; Wed, 10 Jan 2024 20:48:21 +0000
Received: from mail-ed1-x533.google.com (mail-ed1-x533.google.com
 [2a00:1450:4864:20::533])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 96b36eb0-aff9-11ee-98f0-6d05b1d4d9a1;
 Wed, 10 Jan 2024 21:48:20 +0100 (CET)
Received: by mail-ed1-x533.google.com with SMTP id
 4fb4d7f45d1cf-553ba2f0c8fso5274164a12.1
 for <xen-devel@lists.xenproject.org>; Wed, 10 Jan 2024 12:48:20 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 96b36eb0-aff9-11ee-98f0-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1704919700; x=1705524500; darn=lists.xenproject.org;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:from:to:cc:subject:date
         :message-id:reply-to;
        bh=HNg12l2WC8xUYpIuBjLtpZgo+PLGNFiRlM/cKGQJ/lg=;
        b=DKklJUhlHF5vAAZBd6irMapTKL10UhpG6+AI/cRgd8Ckr03QT62wVpCP1tJ8odU2U0
         yrEykCUpRLyJuT141717QRPWy+tkfkMdPtGNuMfaXNVggc2iJQ5ZzCMckMWKuOjlWSqI
         4ZIOy6wlcWt/4Howzp9bltwZ8XqBy0ORSCvhnZP24ZVmsBubLEZGlAojo7MGzwqU0Qda
         Gqp6GmlFFbwYvBhoYBXGVsIbDKK8LO931r3K/OKla9pm/spEAvcPWgZYLJ9Glj46GnFO
         CeJch2hqMsan7p2pQDQDObdB9w1N8OJNrEaS9xaLRYK+sUFAF7OO6GP5U2vn4S0ck5Y/
         hWWQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704919700; x=1705524500;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to;
        bh=HNg12l2WC8xUYpIuBjLtpZgo+PLGNFiRlM/cKGQJ/lg=;
        b=G9EzT2zxd6i5a+AO/4ujBYGL9XX7ZtOY8Zk36IsbO8o5tATgderblw31U2nmll6Jd2
         fsqh6KrHHPwIUzFX+y2UlXV5pwTjiAOrMKvQ4g7tqNBFBzEveHDKCdppNo8thfrb4460
         utyebpjsfn/Cj7ImdE4zn3RRdxiNfWG8suv4cyQZlRtaHwo8nvYmTuUGpBlVWGX68e8W
         CCKy7P1HcXE2LwD3/8eXKpQ3bFXNKQcWfNETIiEH8UnvTIrh9JIowwHuXzZAir/xfPcA
         jk+SaSblP6uliDHIj3u7m15cFf95ejZuSJrxLEEyQmMZz6j0IlsMqqC+KJJLPP2GMM08
         2grQ==
X-Gm-Message-State: AOJu0YyEuvQuPntfHUUd9fVSra3kuy9sQdho3mkNf3uQWQJeeXoVaaIZ
	AaDT6w5R43Qh4Tqvwt91Ge9EzY1U1nb2gyKh53E=
X-Google-Smtp-Source: AGHT+IE2t6kGp/M1zuAPHsXj79SM2kRZgQksfp0Frg54H9qVZab7J0FU9Fe6oX/UiNOStr+SM8Ic3c7Oh55RmALy8pM=
X-Received: by 2002:a05:6402:1488:b0:557:63be:c867 with SMTP id
 e8-20020a056402148800b0055763bec867mr17450edv.105.1704919700150; Wed, 10 Jan
 2024 12:48:20 -0800 (PST)
MIME-Version: 1.0
References: <20240104090055.27323-1-jgross@suse.com> <20240104090055.27323-27-jgross@suse.com>
In-Reply-To: <20240104090055.27323-27-jgross@suse.com>
From: Jason Andryuk <jandryuk@gmail.com>
Date: Wed, 10 Jan 2024 15:48:08 -0500
Message-ID: <CAKf6xpvAqKjAj99Msf1EHQ9nY5quWZFrBD4TS0m_M5YzDNzm0Q@mail.gmail.com>
Subject: Re: [PATCH v3 26/33] tools/xenstored: get own domid in stubdom case
To: Juergen Gross <jgross@suse.com>
Cc: xen-devel@lists.xenproject.org, Wei Liu <wl@xen.org>, 
	Julien Grall <julien@xen.org>, Anthony PERARD <anthony.perard@citrix.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

On Thu, Jan 4, 2024 at 4:34=E2=80=AFAM Juergen Gross <jgross@suse.com> wrot=
e:
>
> Obtain the own domid when running as stubdom.

Maybe "Obtain own domid when running as stubdom."?

>
> Signed-off-by: Juergen Gross <jgross@suse.com>

Reviewed-by: Jason Andryuk <jandryuk@gmail.com>


From xen-devel-bounces@lists.xenproject.org Wed Jan 10 20:50:38 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 10 Jan 2024 20:50:38 +0000
Received: from list by lists.xenproject.org with outflank-mailman.665760.1036070 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNfX2-0005yd-3x; Wed, 10 Jan 2024 20:50:36 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 665760.1036070; Wed, 10 Jan 2024 20:50:36 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNfX2-0005yW-1E; Wed, 10 Jan 2024 20:50:36 +0000
Received: by outflank-mailman (input) for mailman id 665760;
 Wed, 10 Jan 2024 20:50:34 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=CWwH=IU=gmail.com=jandryuk@srs-se1.protection.inumbo.net>)
 id 1rNfX0-0005x4-SJ
 for xen-devel@lists.xenproject.org; Wed, 10 Jan 2024 20:50:34 +0000
Received: from mail-ed1-x52d.google.com (mail-ed1-x52d.google.com
 [2a00:1450:4864:20::52d])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id e57bb9b7-aff9-11ee-9b0f-b553b5be7939;
 Wed, 10 Jan 2024 21:50:32 +0100 (CET)
Received: by mail-ed1-x52d.google.com with SMTP id
 4fb4d7f45d1cf-5534dcfdd61so8175817a12.0
 for <xen-devel@lists.xenproject.org>; Wed, 10 Jan 2024 12:50:32 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: e57bb9b7-aff9-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1704919832; x=1705524632; darn=lists.xenproject.org;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:from:to:cc:subject:date
         :message-id:reply-to;
        bh=u9Iop9KId4sYt91ccMR9rJ5o714JaJGj6zVnQFCbGo0=;
        b=NHuBOX/DWFZ1KNLuJkFDAqXT2XxkDGsD6kZyZqPNSiKy8H0MbH5GBjCeOxNcEGiMVg
         7kI2WWY3GD82UomoK+ZgT8WHXmWVEPQpwuwC2x6xgKfaYBkkiq9GChAiHNrMjXiz00ZZ
         IIt7Z8gz5+xVlYjPBLZU4xbenjQ+xDRxTLQGxSOG9xn0sIY3P32NlSKo26xutRtVAqBk
         tutuvMUe+zP+fOHnLyEgR/Vc8OpwzX7COlSpKgDvYe2tOTqwEugz6joJJaR7ijFekqdW
         7XujCEXbLW5YJLIPP1Lq3q9G/6bvQWjswEuRPJPkpm6mOvbG3PRgshJs/MZMoGdK6k1o
         CtAA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704919832; x=1705524632;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to;
        bh=u9Iop9KId4sYt91ccMR9rJ5o714JaJGj6zVnQFCbGo0=;
        b=kR0gO3rUob4yPiOaJ11H7sWT6SCJb5pSZnQZYbAtAuwLzTeLTObpyi7JoR9o4jngtA
         264O+Fy8idSwKAz803RANFFvV3Voekerk8lgmOoCZxJ4UxB4/JiM4N/nS7LPmxV4O5wq
         eJ2teoBg6z8VdbVDPr9DatJhpOu/YwxtYQUfQfwbATV6mFJPku6Mm/+WR9Q8pHUl8Dix
         2XqPRorlFdTRKpIpiwm2aAY//9Wg9isR+jZLFbT+9OGAQ9OmF59FXsBoqbeFVIlOzLoc
         vaYa4GX4xA4eglENZ0tPJ9RgLLE0fk1IEt0u6DvY7KFxhX1ADz1dxJ/kGSZzpBl9B0TL
         0eEw==
X-Gm-Message-State: AOJu0YyhjiLQssksJWMSLiBIQxpqq6FH9HuGMwSWKFJjgF/LlitUQw9D
	T+y6cRPUvh2d8rhdUoqm4GVRnOxPLqJL9DZ328ZFIHVM
X-Google-Smtp-Source: AGHT+IHsZuEeGpGICjGga98Brh+FnErwdvlnSOW9hpnC2rtkayccDtTKPRfVm3uWEMuut80v5w2RzpNLir9av1bnfW4=
X-Received: by 2002:a50:ee10:0:b0:554:c9af:a66e with SMTP id
 g16-20020a50ee10000000b00554c9afa66emr785280eds.9.1704919832318; Wed, 10 Jan
 2024 12:50:32 -0800 (PST)
MIME-Version: 1.0
References: <20240104090055.27323-1-jgross@suse.com> <20240104090055.27323-29-jgross@suse.com>
In-Reply-To: <20240104090055.27323-29-jgross@suse.com>
From: Jason Andryuk <jandryuk@gmail.com>
Date: Wed, 10 Jan 2024 15:50:20 -0500
Message-ID: <CAKf6xpuXNjbdntg0n3Zd6crvNVYNKEv56OAaeJmFwjK20_e+Eg@mail.gmail.com>
Subject: Re: [PATCH v3 28/33] tools/xenstored: split domain_init()
To: Juergen Gross <jgross@suse.com>
Cc: xen-devel@lists.xenproject.org, Wei Liu <wl@xen.org>, 
	Julien Grall <julien@xen.org>, Anthony PERARD <anthony.perard@citrix.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

On Thu, Jan 4, 2024 at 4:59=E2=80=AFAM Juergen Gross <jgross@suse.com> wrot=
e:
>
> Today domain_init() is called either just before calling dom0_init()
> in case no live update is being performed, or it is called after
> reading the global state from read_state_global(), as the event
> channel fd is needed.
>
> Split up domain_init() into a preparation part which can be called
> unconditionally, and in a part setting up the event channel handle.
>
> Note that there is no chance that chk_domain_generation() can be
> called now before xc_handle has been setup, so there is no need for
> the related special case anymore.
>
> Signed-off-by: Juergen Gross <jgross@suse.com>

Reviewed-by: Jason Andryuk <jandryuk@gmail.com>


From xen-devel-bounces@lists.xenproject.org Wed Jan 10 20:52:39 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 10 Jan 2024 20:52:39 +0000
Received: from list by lists.xenproject.org with outflank-mailman.665764.1036080 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNfYw-0006ZU-Eo; Wed, 10 Jan 2024 20:52:34 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 665764.1036080; Wed, 10 Jan 2024 20:52:34 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNfYw-0006ZN-CH; Wed, 10 Jan 2024 20:52:34 +0000
Received: by outflank-mailman (input) for mailman id 665764;
 Wed, 10 Jan 2024 20:52:33 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=CWwH=IU=gmail.com=jandryuk@srs-se1.protection.inumbo.net>)
 id 1rNfYv-0006ZH-E6
 for xen-devel@lists.xenproject.org; Wed, 10 Jan 2024 20:52:33 +0000
Received: from mail-lj1-x236.google.com (mail-lj1-x236.google.com
 [2a00:1450:4864:20::236])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 2cd3c46a-affa-11ee-98f0-6d05b1d4d9a1;
 Wed, 10 Jan 2024 21:52:32 +0100 (CET)
Received: by mail-lj1-x236.google.com with SMTP id
 38308e7fff4ca-2cd5b467209so39532611fa.3
 for <xen-devel@lists.xenproject.org>; Wed, 10 Jan 2024 12:52:32 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 2cd3c46a-affa-11ee-98f0-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1704919952; x=1705524752; darn=lists.xenproject.org;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:from:to:cc:subject:date
         :message-id:reply-to;
        bh=pqpCOna79VvlrVPbo8TUgyMKtTSQzN/GhE6hbSw+5Bw=;
        b=EtqUKZTH9cDSpywu5ZhoQSvDlOCeTXTIXCwND2GhyYUxHISP6rLB/WazNx9mixA6u3
         SUZJwFP+uzq1v9S6MHJE2q18Lq/EU6OYkGcF3d+jb4BeC1elFfFtntfsGY3mVhrRzPni
         CgjJDV/SMssfp/ZyX3CWX1g1MJ38GRyTIn0RnAWkBjl4kEGxzt//bbmKLkuWszW81Z1/
         qARpA96yGXFBlhqN8RnapIQOUJ8/pNIiVU7uEkE6X5C4s1Xi6/qC4eYXzR7C1ambqMel
         9weMpJGflTZ3Q77ccvZK20fYQHi8nj4/pKFsUI92E/fByNP4gmc44x5sFqM/n6xlxHoM
         R3iA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704919952; x=1705524752;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to;
        bh=pqpCOna79VvlrVPbo8TUgyMKtTSQzN/GhE6hbSw+5Bw=;
        b=XZ/INuF2FPPksfkehdt3xJBWq13XF0TUkh9iwqv+4fFm8EbUIAVWqF04ZCFcGjIhZS
         NbUTiwyOPNwAot+xxVEw1F9/3aQJAM9bKZNQ3+qNBzP/Axfh8r52fHFCYwtsw41NR4aE
         5W9sYnHdmHsZt2WfaMwlzk8vifejzqi29IQevKy21r87eorj62x9gpe0pKzSL6yD7J6N
         ns8mfOYzvAJa8d3I0MVmS3TKbagU/AismqoOjNGtgl1Y8Z9E0Fbkl6IJJtNvFE64Pd9c
         vVB9qodf39qLjjq2BkCMThN9hLJv6XeqxHQceyVNbyW2W8CiGh8A3kS1JOeQLuZfZY6b
         R8/g==
X-Gm-Message-State: AOJu0YyYqfNTby6A2kMiw7E3P1BtV07UZ9ug1QNhhiv+wnJTAwJpgcJ7
	zAzQxQzYc2lWAeaE+U/PbSPHY781Hz8SESMHyGU=
X-Google-Smtp-Source: AGHT+IH82X6546XyUlDep0v31GPwb8insUC3HHHR/q3QJt5xfPNe9lKaKby6cj2+zqfZsvXCHygM6UZdNGoNTCtmQkA=
X-Received: by 2002:ac2:5df3:0:b0:50e:2bfe:ef43 with SMTP id
 z19-20020ac25df3000000b0050e2bfeef43mr8226lfq.115.1704919951662; Wed, 10 Jan
 2024 12:52:31 -0800 (PST)
MIME-Version: 1.0
References: <20240104090055.27323-1-jgross@suse.com> <20240104090055.27323-30-jgross@suse.com>
In-Reply-To: <20240104090055.27323-30-jgross@suse.com>
From: Jason Andryuk <jandryuk@gmail.com>
Date: Wed, 10 Jan 2024 15:52:19 -0500
Message-ID: <CAKf6xpsB4QPGeUWDYq=JDH0_OVRz3D5fFMD_9Bqp2NMkinfJfw@mail.gmail.com>
Subject: Re: [PATCH v3 29/33] tools/xenstored: map stubdom interface
To: Juergen Gross <jgross@suse.com>
Cc: xen-devel@lists.xenproject.org, Wei Liu <wl@xen.org>, 
	Julien Grall <julien@xen.org>, Anthony PERARD <anthony.perard@citrix.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

On Thu, Jan 4, 2024 at 4:03=E2=80=AFAM Juergen Gross <jgross@suse.com> wrot=
e:
>
> When running as stubdom, map the stubdom's Xenstore ring page in order
> to support using the 9pfs frontend.
>
> Use the same pattern as in dom0_init() when running as daemon in dom0
> (introduce the own domain, then send an event to the client side to
> signal Xenstore is ready to communicate).
>
> Signed-off-by: Juergen Gross <jgross@suse.com>

Reviewed-by: Jason Andryuk <jandryuk@gmail.com>


From xen-devel-bounces@lists.xenproject.org Wed Jan 10 21:15:24 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 10 Jan 2024 21:15:24 +0000
Received: from list by lists.xenproject.org with outflank-mailman.665772.1036090 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNfuw-0002jT-8p; Wed, 10 Jan 2024 21:15:18 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 665772.1036090; Wed, 10 Jan 2024 21:15:18 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNfuw-0002jM-5Z; Wed, 10 Jan 2024 21:15:18 +0000
Received: by outflank-mailman (input) for mailman id 665772;
 Wed, 10 Jan 2024 21:15:16 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rNfuu-0002jC-RT; Wed, 10 Jan 2024 21:15:16 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rNfuu-0003yj-Bu; Wed, 10 Jan 2024 21:15:16 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rNfut-00036n-Tn; Wed, 10 Jan 2024 21:15:15 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rNfut-0007TJ-TL; Wed, 10 Jan 2024 21:15:15 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=wXoMpp8uSJAw2XK17puOwQxfru1Ct2x+YXgyevA7iDw=; b=OSynhzsb/lpvALzYD0UG6DIb0q
	/i2okpj6nuyo8gabz+/DReTE60i2dBtDNhPhWScqwhQQkITgQZjOd0Brnbj0qd2bM5ekB2e+iGP5p
	TzrCsv17uOjwSIQ195dAYtgZuruRi6fzOUEo9HxJCFOb3VHFUlSI8iu+U3ACAumfCv8U=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184301-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [libvirt test] 184301: tolerable FAIL - PUSHED
X-Osstest-Failures:
    libvirt:test-armhf-armhf-libvirt-qcow2:guest-start:fail:heisenbug
    libvirt:test-armhf-armhf-libvirt-qcow2:saverestore-support-check:fail:nonblocking
    libvirt:test-armhf-armhf-libvirt-qcow2:migrate-support-check:fail:nonblocking
    libvirt:test-armhf-armhf-libvirt:saverestore-support-check:fail:nonblocking
    libvirt:test-armhf-armhf-libvirt-raw:saverestore-support-check:fail:nonblocking
    libvirt:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    libvirt:test-amd64-i386-libvirt-xsm:migrate-support-check:fail:nonblocking
    libvirt:test-amd64-amd64-libvirt-xsm:migrate-support-check:fail:nonblocking
    libvirt:test-amd64-i386-libvirt:migrate-support-check:fail:nonblocking
    libvirt:test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    libvirt:test-arm64-arm64-libvirt:migrate-support-check:fail:nonblocking
    libvirt:test-arm64-arm64-libvirt:saverestore-support-check:fail:nonblocking
    libvirt:test-arm64-arm64-libvirt-xsm:migrate-support-check:fail:nonblocking
    libvirt:test-arm64-arm64-libvirt-xsm:saverestore-support-check:fail:nonblocking
    libvirt:test-amd64-i386-libvirt-raw:migrate-support-check:fail:nonblocking
    libvirt:test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    libvirt:test-armhf-armhf-libvirt:migrate-support-check:fail:nonblocking
    libvirt:test-amd64-amd64-libvirt-vhd:migrate-support-check:fail:nonblocking
    libvirt:test-arm64-arm64-libvirt-qcow2:migrate-support-check:fail:nonblocking
    libvirt:test-arm64-arm64-libvirt-qcow2:saverestore-support-check:fail:nonblocking
    libvirt:test-arm64-arm64-libvirt-raw:migrate-support-check:fail:nonblocking
    libvirt:test-arm64-arm64-libvirt-raw:saverestore-support-check:fail:nonblocking
    libvirt:test-armhf-armhf-libvirt-raw:migrate-support-check:fail:nonblocking
X-Osstest-Versions-This:
    libvirt=7cb03e6a28e465c49f0cabe8fe2e7d21edb5aadf
X-Osstest-Versions-That:
    libvirt=377e30087a8379e7cdede95bd3b95d2e35cec84a
From: osstest service owner <osstest-admin@xenproject.org>
Date: Wed, 10 Jan 2024 21:15:15 +0000

flight 184301 libvirt real [real]
flight 184312 libvirt real-retest [real]
http://logs.test-lab.xenproject.org/osstest/logs/184301/
http://logs.test-lab.xenproject.org/osstest/logs/184312/

Failures :-/ but no regressions.

Tests which are failing intermittently (not blocking):
 test-armhf-armhf-libvirt-qcow2 13 guest-start       fail pass in 184312-retest

Tests which did not succeed, but are not blocking:
 test-armhf-armhf-libvirt-qcow2 15 saverestore-support-check fail in 184312 like 184289
 test-armhf-armhf-libvirt-qcow2 14 migrate-support-check fail in 184312 never pass
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 184289
 test-armhf-armhf-libvirt-raw 15 saverestore-support-check    fail  like 184289
 test-amd64-amd64-libvirt     15 migrate-support-check        fail   never pass
 test-amd64-i386-libvirt-xsm  15 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-amd64-i386-libvirt      15 migrate-support-check        fail   never pass
 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-arm64-arm64-libvirt     15 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt     16 saverestore-support-check    fail   never pass
 test-arm64-arm64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-xsm 16 saverestore-support-check    fail   never pass
 test-amd64-i386-libvirt-raw  14 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-armhf-armhf-libvirt     15 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt-vhd 14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-qcow2 14 migrate-support-check        fail never pass
 test-arm64-arm64-libvirt-qcow2 15 saverestore-support-check    fail never pass
 test-arm64-arm64-libvirt-raw 14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 15 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-raw 14 migrate-support-check        fail   never pass

version targeted for testing:
 libvirt              7cb03e6a28e465c49f0cabe8fe2e7d21edb5aadf
baseline version:
 libvirt              377e30087a8379e7cdede95bd3b95d2e35cec84a

Last test of basis   184289  2024-01-09 04:18:58 Z    1 days
Testing same since   184301  2024-01-10 04:20:43 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Andrea Bolognani <abologna@redhat.com>
  Daniel P. Berrangé <berrange@redhat.com>
  Jiri Denemark <jdenemar@redhat.com>

jobs:
 build-amd64-xsm                                              pass    
 build-arm64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64                                                  pass    
 build-arm64                                                  pass    
 build-armhf                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-arm64-libvirt                                          pass    
 build-armhf-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-pvops                                            pass    
 build-arm64-pvops                                            pass    
 build-armhf-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm           pass    
 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm            pass    
 test-amd64-amd64-libvirt-xsm                                 pass    
 test-arm64-arm64-libvirt-xsm                                 pass    
 test-amd64-i386-libvirt-xsm                                  pass    
 test-amd64-amd64-libvirt                                     pass    
 test-arm64-arm64-libvirt                                     pass    
 test-armhf-armhf-libvirt                                     pass    
 test-amd64-i386-libvirt                                      pass    
 test-amd64-amd64-libvirt-pair                                pass    
 test-amd64-i386-libvirt-pair                                 pass    
 test-arm64-arm64-libvirt-qcow2                               pass    
 test-armhf-armhf-libvirt-qcow2                               fail    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-armhf-armhf-libvirt-raw                                 pass    
 test-amd64-i386-libvirt-raw                                  pass    
 test-amd64-amd64-libvirt-vhd                                 pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Pushing revision :

To xenbits.xen.org:/home/xen/git/libvirt.git
   377e30087a..7cb03e6a28  7cb03e6a28e465c49f0cabe8fe2e7d21edb5aadf -> xen-tested-master


From xen-devel-bounces@lists.xenproject.org Thu Jan 11 02:36:49 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 11 Jan 2024 02:36:49 +0000
Received: from list by lists.xenproject.org with outflank-mailman.665851.1036133 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNkvo-0007B8-8N; Thu, 11 Jan 2024 02:36:32 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 665851.1036133; Thu, 11 Jan 2024 02:36:32 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNkvo-0007B1-4Y; Thu, 11 Jan 2024 02:36:32 +0000
Received: by outflank-mailman (input) for mailman id 665851;
 Thu, 11 Jan 2024 02:36:31 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=sXkz=IV=amd.com=Jiqian.Chen@srs-se1.protection.inumbo.net>)
 id 1rNkvn-0007Ap-4N
 for xen-devel@lists.xenproject.org; Thu, 11 Jan 2024 02:36:31 +0000
Received: from NAM10-MW2-obe.outbound.protection.outlook.com
 (mail-mw2nam10on20600.outbound.protection.outlook.com
 [2a01:111:f403:2412::600])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 38721705-b02a-11ee-9b0f-b553b5be7939;
 Thu, 11 Jan 2024 03:36:29 +0100 (CET)
Received: from BL1PR12MB5849.namprd12.prod.outlook.com (2603:10b6:208:384::18)
 by DM4PR12MB6063.namprd12.prod.outlook.com (2603:10b6:8:b1::19) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7159.23; Thu, 11 Jan
 2024 02:36:23 +0000
Received: from BL1PR12MB5849.namprd12.prod.outlook.com
 ([fe80::bafd:1985:94e6:ef33]) by BL1PR12MB5849.namprd12.prod.outlook.com
 ([fe80::bafd:1985:94e6:ef33%6]) with mapi id 15.20.7181.015; Thu, 11 Jan 2024
 02:36:23 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 38721705-b02a-11ee-9b0f-b553b5be7939
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=RLesn8eaebvzwhJQnRy2t5xSphHWBxp7z0lt+aI22QTcXkDL6Hh0TTaIj+/xVLinHvChTsAnmNTZ7WI53W95+rk5ixyVHe112cgj4InSK9k0WTjUwHIlKTd8alB8Kq2fnp22UiQO0E5LW8HgfiFuaiI9GyQeKRcTXWTrjKPzFwPQwAOWc5VF82u7RmsCggtlTmzbwdGxcf8Fj4MLi9UpiY7dJeBuDtpy3DrCpnheJ3lapzOk37fDDWJT7ltQz9+1O0SIsrV+P3mKrmo7eEbJyT8qHyuKZM403zibd9PDDjv5plqqY74TdH1SV10yWQgY8a91ICLvL7IOsiOEa4q3Fg==
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=TAm2y2f9mxG1L6fJRCLllKwedFmPKAjJe+UAACa/sCg=;
 b=lYVu0t6Sdx+YbkYH5oMEQxW4G1OB+u7VxzQ0WF66WfsLNIxzT4Wb0tbW5jw2UjpsKnUq2KuSbZsyREPWb2CNJI9D3e4dPavGsyCePWx2RwKLLOrcejm0rRZ4IqFaJxJhrqhkufICU7sgZFgHozW1Ctgcu19NCQi8aRx2jJAjkI/GaJojmZY2ll48W1In8m1CwoaRz5n1+30v9Wdeqr166StQJ/Va4/hXWJTGJXr9kmTMKThOcX3sXaqmFHrs3cQxRgvxcGBo2bZvFkhltwwEP1vtWT1XYf0LJ+bQwn0LcIt21iU7cgtULICgUvKOPOH7fB3yqiezsMjxIcMSdeuzaQ==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=amd.com; dmarc=pass action=none header.from=amd.com; dkim=pass
 header.d=amd.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=TAm2y2f9mxG1L6fJRCLllKwedFmPKAjJe+UAACa/sCg=;
 b=ADgzPKsWDgvabeVBvdATKIMD+BJ1nrgbcKYE2rhO0LZqq/MU2FeBexcKK7dw7w/CJv+FKPh/cmmS6hVtrS+s9CTTe4a8SfullJTnlsgSYIpBbGSrd7WkXybt7r3gVVdAGI3IOg1XrlgF3w+yoHt3WjbMMP9y3/nce0Uf1p0XeW8=
From: "Chen, Jiqian" <Jiqian.Chen@amd.com>
To: "Hildebrand, Stewart" <Stewart.Hildebrand@amd.com>
CC: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>, Jan
 Beulich <jbeulich@suse.com>, Andrew Cooper <andrew.cooper3@citrix.com>,
	=?utf-8?B?Um9nZXIgUGF1IE1vbm7DqQ==?= <roger.pau@citrix.com>, Wei Liu
	<wl@xen.org>, George Dunlap <george.dunlap@citrix.com>, Julien Grall
	<julien@xen.org>, Stefano Stabellini <sstabellini@kernel.org>, Anthony PERARD
	<anthony.perard@citrix.com>, Juergen Gross <jgross@suse.com>, "Huang, Ray"
	<Ray.Huang@amd.com>, "Chen, Jiqian" <Jiqian.Chen@amd.com>
Subject: Re: [RFC XEN PATCH v4 1/5] xen/vpci: Clear all vpci status of device
Thread-Topic: [RFC XEN PATCH v4 1/5] xen/vpci: Clear all vpci status of device
Thread-Index: AQHaP6YrwTeuO8u85U6eXqUvf5Gm3LDRoHaAgAF/ZoD///38AIABVnwA
Date: Thu, 11 Jan 2024 02:36:23 +0000
Message-ID:
 <BL1PR12MB58496FB5005BEF3437ACB130E7682@BL1PR12MB5849.namprd12.prod.outlook.com>
References: <20240105070920.350113-1-Jiqian.Chen@amd.com>
 <20240105070920.350113-2-Jiqian.Chen@amd.com>
 <70add06b-59c6-469a-8570-f7a6f5bc15fb@amd.com>
 <BL1PR12MB58494843C4BCE9A522A0E674E7692@BL1PR12MB5849.namprd12.prod.outlook.com>
 <0bbb2260-3fde-4b0f-949d-01ffd03029ce@amd.com>
In-Reply-To: <0bbb2260-3fde-4b0f-949d-01ffd03029ce@amd.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-ms-exchange-imapappendstamp: IA1PR12MB7567.namprd12.prod.outlook.com
 (15.20.7181.004)
authentication-results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=amd.com;
x-ms-exchange-messagesentrepresentingtype: 1
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: BL1PR12MB5849:EE_|DM4PR12MB6063:EE_
x-ms-office365-filtering-correlation-id: 2b26724a-13e8-4c65-9632-08dc124e1a46
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam: BCL:0;
x-microsoft-antispam-message-info:
 0DUfHtBZPM9v/6cq3ovcsc1W88cJM4SjxgWJBnvh73yYTfHmuj7Tm7NlQIK9nEdithAce0InxMs6U3ulXl/ZfCUB3P/xIQc+sQ8o3cT22SVkRN8TNXUYXjDFj+GdzcU0rTF+z7ju1TCNKdbsTSD74FwuoYQANWEqcqnZnvxhHaDJSr9vzuB4Kgew4E314ol5F5ntl4O440sSsPQrkytIwz1jDd8jH31p4FuShq9RbgSziteBTFydhkEyKTuzwZIbhoqO9iM205nHtQdk7y9SNdQfI4VaADfRc/xltCGOpCnVhFWCFMsUgQoNfpDNg3DmnIaVQduRTINWRLnk8+xZTY3k5zNElYk8H6fr/QItY4ul9GsAHS+YTi1Z2W1UJ/citLzfksg0k7CIX6m+2SFHmFS1TF9DauWWNI25A4rXq35TAYtcywehQSBDM8Yq3CxezSj0HMbsy4/folAVfaq4Vn3ZGm+uYdvm7TqEGWu+/MzI6fDCG3qVWzudOJo3PfFzPWk8kieaqi9iqQbSpY8gsPBByqyf2WC3ogfxXTPv5zun3fay7Av0IoiA+N4fcCxAm+uK3TIuJ8lGDjKk48p2XbT4Twhvb16Rebg04ASSOrc=
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BL1PR12MB5849.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230031)(39860400002)(346002)(136003)(366004)(376002)(396003)(230922051799003)(64100799003)(451199024)(1800799012)(186009)(55016003)(6506007)(26005)(53546011)(9686003)(7696005)(478600001)(71200400001)(966005)(38100700002)(122000001)(33656002)(66446008)(41300700001)(2906002)(66476007)(64756008)(66556008)(7416002)(76116006)(83380400001)(5660300002)(54906003)(38070700009)(8676002)(4326008)(316002)(6636002)(66946007)(8936002)(52536014)(6862004);DIR:OUT;SFP:1101;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?utf-8?B?YzZRdjhNSVlZeFNDaHoyUFd6RVlLUG4vZk5CbXk3VUM1Y1dNV0tiZk11ZS93?=
 =?utf-8?B?Y2ZnVWxUTlRGK0lkemlQZTFZeWg4a2sxZjNJM0tveXlXa2ZKZ0U5Q0Fsb0NN?=
 =?utf-8?B?SWFZeTEyMHN4SHFEY0JlU3JKcEdnKzc0ZDQzR2FHNW1GMUJZdFdGQWFsN21F?=
 =?utf-8?B?UGhza3ZBSzNQd2JrSW5vdjVRSU1ORXVXd2V5NU1vSXNoVER1SVRnNnRxQnFQ?=
 =?utf-8?B?VTNrcXhRWU9EbXZQaXJWNEt4ZlYwTDh1QkZFYUdCTVdRd2NVUkRtRGRDMndY?=
 =?utf-8?B?MXpvNjYzTUcranQ5eDBGbjJNd2MxSnNJRWlBb0VCVndYMnlmdFpCQnFDY3R6?=
 =?utf-8?B?WXYvenVwR2E1TmxreWxRR1pvbytGWUp2cWQvVEVDQU5iZHYycDZxT3NTb2wr?=
 =?utf-8?B?Z0VOajk3V2RaMmFiN0tUL2dPOWZuTkNoNkNKdmdEZDVaL20ranh2SkpHS1Nx?=
 =?utf-8?B?d3hiK2dRYy9WcjVKbnNPQ0tvTjFBanFsWVJ5UHVPSndZUktTYWxXOGFGbjR5?=
 =?utf-8?B?SldmcURCcWoycERDR3h3OXo0UEV6a0dMZGdWcTh4REl2Vm5WeXFSL3lZNGNW?=
 =?utf-8?B?cHpBR21hL2pTazFvVjVGNEJEUlJ1cFhQOWxtRHZ4d3RTMjNBcUlYcGtzV0Ni?=
 =?utf-8?B?a0xjcHA5Z2poYmZveWVsTjBhYnJBbm9YQ3pHUWJVcDRVTzkzWWJjM1E2U21J?=
 =?utf-8?B?OTFHcWI0Ynh5WjU2VHlZZWhzZ3hUTFRoWVZvSE9PTFNQMHF0RmgxN1hCcE1D?=
 =?utf-8?B?akpnUE9ydVZUaXVuMTBCb1M2eGVnQmpWWjlQclJkRm5MZVlVNW9kd0plM3NK?=
 =?utf-8?B?VksvZmF6b1E0c01XdzIxWEpTREk1WlJzR2FvTkR6TFJHaTcwM0lQcHJLUjlE?=
 =?utf-8?B?NGNkVWJab2ZTR3k2YzBISEkyZys4V3lXdE9nTk1xL01ub055OUxmakR1YXYx?=
 =?utf-8?B?YnJyTDRxRUxTRVdVT1BhZG1Rc3M0QytXTU9odXZVVWpjbVZKdjFTM1pmZ0ZZ?=
 =?utf-8?B?NXcyclVVV0lnVFE3MllCN2NCRnN3TmxWTjN4OUJjVUxOUVNGd1BxaFJzSWtJ?=
 =?utf-8?B?QzQwdXNtR1ROYmlTRVVmd2JwSm5zVVIwSHRVbVgrNGNzNFZ0ZDFwOGgybUtX?=
 =?utf-8?B?SzVSVW5oM1Z2eTl0RW9SOWxGS1FaRmN3K1JxUzZQMm0wNThXb0paOHVXQXlP?=
 =?utf-8?B?ZzNTbDJSVmZwcnpsVlZ2RExnZ2Q1MEJLY1loQWovcEpzZFYxbkFvWVp6a3o4?=
 =?utf-8?B?OFArcm5Fa2JRUEZsVWUyNXpVMVJmVVYrSDlRR2tjVTRLZjNGSTRweitrWTU1?=
 =?utf-8?B?NDA1aFFXR2Q1aXN3YjFTbXdVb3RlOHpYNUM1UXVoRndLR3dPUWNHcmx0eHMw?=
 =?utf-8?B?ZzRMWVp2dXlTbXhrZlduOWlkWFBlZjlmcHRXY2dNdjVGaEhFT2VNYWFxZjcr?=
 =?utf-8?B?dTAvSkZFUFZQemc1aXg5M0wyZlovZ0dhYStVTHl4dTVRMURDM28xOHZVNVA3?=
 =?utf-8?B?V1NSb3pHZ1VSNTg3YkRONkRYbVNocklaQURIRzZwNXVPTFFCZTlob2NIUDZ5?=
 =?utf-8?B?c0JscVBUQVFaTXU1RzRNTmdzOWpGK2hmYnZwdzhYUUV0SlltOGIvUllZM0Vx?=
 =?utf-8?B?NnRLUXQ4U3VPWk43UldCaHB5aHg2MCsza1BmRStHaEE4eHhxei9XTEVJM3lh?=
 =?utf-8?B?dXpWZnZTZjJwWlZYcTZ5ZDJLc1pmSmtDZ2w3TS9wNGpQN1JHaUZMWnU2TWow?=
 =?utf-8?B?MW1IQnkwZGdSU0tPYngxQnl4SGs0Uld6V01pSEs2TldnYUNJU05EQlQyTmc5?=
 =?utf-8?B?ekhlMGVvaTZOZUlwRUFoOHc3UUIwZXVQTTh3WjFoYThubCs5MHlXMFh5Tmpy?=
 =?utf-8?B?dEdkMFJsdUlvL3krVEtpa0RyUktFMW5TVTJMcDduT3czcWZJTmN0Q294U1Rh?=
 =?utf-8?B?V245Y2ZYTlo0NVQ2aW9BVjlVRVlqZ0l4T2hxRzFYa3BOMmorNXJKME5kNnJj?=
 =?utf-8?B?Ky8wUGNzeGZaMjhBYTBGQVpBUnNYUFVtYktldXc0cEhlUmdEZEJrdmNycjcx?=
 =?utf-8?B?Y3kxUFp5RGovbXN1NTdOcDZQSURyRmxqSVQvd0FnSlFFMjk1Qzk3T2hmV1dy?=
 =?utf-8?Q?IUSY=3D?=
Content-Type: text/plain; charset="utf-8"
Content-ID: <78F6E14321429042A3461D01B23B83EC@amdcloud.onmicrosoft.com>
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: BL1PR12MB5849.namprd12.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 2b26724a-13e8-4c65-9632-08dc124e1a46
X-MS-Exchange-CrossTenant-originalarrivaltime: 11 Jan 2024 02:36:23.7098
 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 3dd8961f-e488-4e60-8e11-a82d994e183d
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: NssdCtgIJyc8qJUy5VEGBPiqFBMytNDsHfskRPl3kkRWwhBqjrKKIei40YWoG4GKYq7dXPTnET25eZCz0/HO3A==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM4PR12MB6063

T24gMjAyNC8xLzEwIDIyOjA5LCBTdGV3YXJ0IEhpbGRlYnJhbmQgd3JvdGU6DQo+IE9uIDEvMTAv
MjQgMDE6MjQsIENoZW4sIEppcWlhbiB3cm90ZToNCj4+IE9uIDIwMjQvMS85IDIzOjI0LCBTdGV3
YXJ0IEhpbGRlYnJhbmQgd3JvdGU6DQo+Pj4gT24gMS81LzI0IDAyOjA5LCBKaXFpYW4gQ2hlbiB3
cm90ZToNCj4+Pj4gZGlmZiAtLWdpdCBhL3hlbi9kcml2ZXJzL3BjaS9waHlzZGV2LmMgYi94ZW4v
ZHJpdmVycy9wY2kvcGh5c2Rldi5jDQo+Pj4+IGluZGV4IDQyZGIzZTZkMTMzYy4uNTUyY2NiZjc0
N2NiIDEwMDY0NA0KPj4+PiAtLS0gYS94ZW4vZHJpdmVycy9wY2kvcGh5c2Rldi5jDQo+Pj4+ICsr
KyBiL3hlbi9kcml2ZXJzL3BjaS9waHlzZGV2LmMNCj4+Pj4gQEAgLTY3LDYgKzY4LDM5IEBAIHJl
dF90IHBjaV9waHlzZGV2X29wKGludCBjbWQsIFhFTl9HVUVTVF9IQU5ETEVfUEFSQU0odm9pZCkg
YXJnKQ0KPj4+PiAgICAgICAgICBicmVhazsNCj4+Pj4gICAgICB9DQo+Pj4+ICANCj4+Pj4gKyAg
ICBjYXNlIFBIWVNERVZPUF9wY2lfZGV2aWNlX3N0YXRlX3Jlc2V0OiB7DQo+Pj4+ICsgICAgICAg
IHN0cnVjdCBwaHlzZGV2X3BjaV9kZXZpY2UgZGV2Ow0KPj4+PiArICAgICAgICBzdHJ1Y3QgcGNp
X2RldiAqcGRldjsNCj4+Pj4gKyAgICAgICAgcGNpX3NiZGZfdCBzYmRmOw0KPj4+PiArDQo+Pj4+
ICsgICAgICAgIGlmICggIWlzX3BjaV9wYXNzdGhyb3VnaF9lbmFibGVkKCkgKQ0KPj4+PiArICAg
ICAgICAgICAgcmV0dXJuIC1FT1BOT1RTVVBQOw0KPj4+PiArDQo+Pj4+ICsgICAgICAgIHJldCA9
IC1FRkFVTFQ7DQo+Pj4+ICsgICAgICAgIGlmICggY29weV9mcm9tX2d1ZXN0KCZkZXYsIGFyZywg
MSkgIT0gMCApDQo+Pj4+ICsgICAgICAgICAgICBicmVhazsNCj4+Pj4gKyAgICAgICAgc2JkZiA9
IFBDSV9TQkRGKGRldi5zZWcsIGRldi5idXMsIGRldi5kZXZmbik7DQo+Pj4+ICsNCj4+Pj4gKyAg
ICAgICAgcmV0ID0geHNtX3Jlc291cmNlX3NldHVwX3BjaShYU01fUFJJViwgc2JkZi5zYmRmKTsN
Cj4+Pj4gKyAgICAgICAgaWYgKCByZXQgKQ0KPj4+PiArICAgICAgICAgICAgYnJlYWs7DQo+Pj4+
ICsNCj4+Pj4gKyAgICAgICAgcGNpZGV2c19sb2NrKCk7DQo+Pj4+ICsgICAgICAgIHBkZXYgPSBw
Y2lfZ2V0X3BkZXYoTlVMTCwgc2JkZik7DQo+Pj4+ICsgICAgICAgIGlmICggIXBkZXYgKQ0KPj4+
PiArICAgICAgICB7DQo+Pj4+ICsgICAgICAgICAgICBwY2lkZXZzX3VubG9jaygpOw0KPj4+PiAr
ICAgICAgICAgICAgcmV0ID0gLUVOT0RFVjsNCj4+Pj4gKyAgICAgICAgICAgIGJyZWFrOw0KPj4+
PiArICAgICAgICB9DQo+Pj4+ICsNCj4+Pg0KPj4+ICAgICAgICAgd3JpdGVfbG9jaygmcGRldi0+
ZG9tYWluLT5wY2lfbG9jayk7DQo+Pj4NCj4+Pj4gKyAgICAgICAgcmV0ID0gdnBjaV9yZXNldF9k
ZXZpY2Vfc3RhdGUocGRldik7DQo+Pj4NCj4+PiAgICAgICAgIHdyaXRlX3VubG9jaygmcGRldi0+
ZG9tYWluLT5wY2lfbG9jayk7DQo+PiB2cGNpX3Jlc2V0X2RldmljZV9zdGF0ZSBvbmx5IHJlc2V0
IHRoZSB2cGNpIHN0YXRlIG9mIHBkZXYgd2l0aG91dCBkZWxldGluZyBwZGV2IGZyb20gZG9tYWlu
LCBhbmQgaGVyZSBoYXMgaGVsZCBwY2lkZXZzX2xvY2ssIGl0IGhhcyBubyBuZWVkIHRvIGxvY2sg
cGNpX2xvY2s/DQo+IA0KPiBTdHJpY3RseSBzcGVha2luZywgaXQgaXMgbm90IGVuZm9yY2VkIHll
dC4gSG93ZXZlciwgYW4gdXBjb21pbmcgY2hhbmdlIFsxXSB3aWxsIGV4cGFuZCB0aGUgc2NvcGUg
b2YgZC0+cGNpX2xvY2sgdG8gaW5jbHVkZSBwcm90ZWN0aW5nIHRoZSBwZGV2LT52cGNpIHN0cnVj
dHVyZSB0byBhbiBleHRlbnQsIHNvIGl0IHdpbGwgYmUgcmVxdWlyZWQgb25jZSB0aGF0IGNoYW5n
ZSBpcyBjb21taXR0ZWQuIEluIG15IG9waW5pb24gdGhlcmUgaXMgbm8gaGFybSBpbiBhZGRpbmcg
dGhlIGFkZGl0aW9uYWwgbG9jayBub3cuIElmIHlvdSBwcmVmZXIgdG8gd2FpdCBJIHdvdWxkIG5v
dCBvYmplY3QsIGJ1dCBpbiB0aGlzIGNhc2UgSSB3b3VsZCBhdCBsZWFzdCBhc2sgZm9yIGEgVE9E
TyBjb21tZW50IHRvIGhlbHAgcmVtaW5kIHVzIHRvIGFkZHJlc3MgaXQgbGF0ZXIuDQo+IA0KPiBb
MV0gaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9hcmNoaXZlcy9odG1sL3hlbi1kZXZlbC8y
MDI0LTAxL21zZzAwNDQ2Lmh0bWwNCj4gDQpPaywgSSBzZWUuIEkgd2lsbCBhZGQgcGNpX2xvY2sg
aW4gbmV4dCB2ZXJzaW9uLCB0aGFuayB5b3UgZm9yIHJlbWluZGluZyBtZS4NCg0KPj4NCj4+Pg0K
Pj4+PiArICAgICAgICBwY2lkZXZzX3VubG9jaygpOw0KPj4+PiArICAgICAgICBpZiAoIHJldCAp
DQo+Pj4+ICsgICAgICAgICAgICBwcmludGsoWEVOTE9HX0VSUiAiJXBwOiBmYWlsZWQgdG8gcmVz
ZXQgUENJIGRldmljZSBzdGF0ZVxuIiwgJnNiZGYpOw0KPj4+PiArICAgICAgICBicmVhazsNCj4+
Pj4gKyAgICB9DQo+Pj4+ICsNCj4+Pj4gICAgICBkZWZhdWx0Og0KPj4+PiAgICAgICAgICByZXQg
PSAtRU5PU1lTOw0KPj4+PiAgICAgICAgICBicmVhazsNCj4+Pj4gZGlmZiAtLWdpdCBhL3hlbi9k
cml2ZXJzL3ZwY2kvdnBjaS5jIGIveGVuL2RyaXZlcnMvdnBjaS92cGNpLmMNCj4+Pj4gaW5kZXgg
NzJlZjI3N2M0ZjhlLi4zYzY0Y2IxMGNjYmIgMTAwNjQ0DQo+Pj4+IC0tLSBhL3hlbi9kcml2ZXJz
L3ZwY2kvdnBjaS5jDQo+Pj4+ICsrKyBiL3hlbi9kcml2ZXJzL3ZwY2kvdnBjaS5jDQo+Pj4+IEBA
IC0xMDcsNiArMTA3LDE1IEBAIGludCB2cGNpX2FkZF9oYW5kbGVycyhzdHJ1Y3QgcGNpX2RldiAq
cGRldikNCj4+Pj4gIA0KPj4+PiAgICAgIHJldHVybiByYzsNCj4+Pj4gIH0NCj4+Pj4gKw0KPj4+
PiAraW50IHZwY2lfcmVzZXRfZGV2aWNlX3N0YXRlKHN0cnVjdCBwY2lfZGV2ICpwZGV2KQ0KPj4+
PiArew0KPj4+PiArICAgIEFTU0VSVChwY2lkZXZzX2xvY2tlZCgpKTsNCj4+Pg0KPj4+ICAgICBB
U1NFUlQocndfaXNfd3JpdGVfbG9ja2VkKCZwZGV2LT5kb21haW4tPnBjaV9sb2NrKSk7DQo+Pj4N
Cj4+Pj4gKw0KPj4+PiArICAgIHZwY2lfcmVtb3ZlX2RldmljZShwZGV2KTsNCj4+Pj4gKyAgICBy
ZXR1cm4gdnBjaV9hZGRfaGFuZGxlcnMocGRldik7DQo+Pj4+ICt9DQo+Pj4+ICsNCj4+Pj4gICNl
bmRpZiAvKiBfX1hFTl9fICovDQo+Pj4+ICANCj4+Pj4gIHN0YXRpYyBpbnQgdnBjaV9yZWdpc3Rl
cl9jbXAoY29uc3Qgc3RydWN0IHZwY2lfcmVnaXN0ZXIgKnIxLA0KPj4NCg0KLS0gDQpCZXN0IHJl
Z2FyZHMsDQpKaXFpYW4gQ2hlbi4NCg==


From xen-devel-bounces@lists.xenproject.org Thu Jan 11 02:39:38 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 11 Jan 2024 02:39:38 +0000
Received: from list by lists.xenproject.org with outflank-mailman.665856.1036143 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNkym-0007nB-QU; Thu, 11 Jan 2024 02:39:36 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 665856.1036143; Thu, 11 Jan 2024 02:39:36 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNkym-0007n4-MB; Thu, 11 Jan 2024 02:39:36 +0000
Received: by outflank-mailman (input) for mailman id 665856;
 Thu, 11 Jan 2024 02:39:35 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=sXkz=IV=amd.com=Jiqian.Chen@srs-se1.protection.inumbo.net>)
 id 1rNkyl-0007my-6f
 for xen-devel@lists.xenproject.org; Thu, 11 Jan 2024 02:39:35 +0000
Received: from NAM12-BN8-obe.outbound.protection.outlook.com
 (mail-bn8nam12on2061c.outbound.protection.outlook.com
 [2a01:111:f400:fe5b::61c])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id a6ddb22a-b02a-11ee-9b0f-b553b5be7939;
 Thu, 11 Jan 2024 03:39:33 +0100 (CET)
Received: from BL1PR12MB5849.namprd12.prod.outlook.com (2603:10b6:208:384::18)
 by DM4PR12MB6063.namprd12.prod.outlook.com (2603:10b6:8:b1::19) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7159.23; Thu, 11 Jan
 2024 02:39:29 +0000
Received: from BL1PR12MB5849.namprd12.prod.outlook.com
 ([fe80::bafd:1985:94e6:ef33]) by BL1PR12MB5849.namprd12.prod.outlook.com
 ([fe80::bafd:1985:94e6:ef33%6]) with mapi id 15.20.7181.015; Thu, 11 Jan 2024
 02:39:29 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: a6ddb22a-b02a-11ee-9b0f-b553b5be7939
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=ntm+qRM3TeL9dWuE+kgYSDSSFLNuOaStvqBqT5OPz3vwj937NTl2n/2n/d80xucgefax4yiOggVoEU5Aub34jgYcHg4TCa7rBLYXndxhalb4Zm1pcmG7g+CeI3zI3RgBOwmBU0EuJvmLOBIWesA/MPRx/4ZjJof/dgtrCIIn98cJxWaKRvnLc7tqAEP8uBZMUYa8xNNCYaFEe3FSxuVJOqfNBpCr+lpnYwJsVRc5jnwYfXBxYOonx8ZWKTYPxuiFPIMbPl/S7S43RphGnAoxKUJ4Bt44FazmF+lFe52/SygTvYGoCrTZNF7R0SDyxuI7EnHBTEHweJ8LUsI9FAs0Sw==
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=O8H3k6dyh5KZVFqoEmtbTHt4mAO1M8enfs8gISBH+lA=;
 b=Aik0LWEeKTl0Ur4P7enoamTjuXdhEpfyEL+CnDtanOhTxvqTXH75nsCEeBn+OU/VLyndP48CgmPdpnM8aDIXy6DEDd12CpQa6q7ofkS4WiijZEyTjP+nm3dVcqNMWF7PItU57Wq65Eehe+x1yuLOpk9OICSXuh0ArUT9u2Ch5JeQkmyCSvta3cf4T7HyJo33Pa6v1gBv9W2hkewrnttMFrX+yNoLN7Vr/L9/80UnuwraGzI8VqMga5zrqnxIhg5dY2GzYd+Ovw0CF61kHJiWsQisrbS2ZB0JbILDmXNNyBBj5i6c2m0GkYE1JZ1cljaM/5g4nQhSrsJuzDH5GE/hdw==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=amd.com; dmarc=pass action=none header.from=amd.com; dkim=pass
 header.d=amd.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=O8H3k6dyh5KZVFqoEmtbTHt4mAO1M8enfs8gISBH+lA=;
 b=pZLmZaewa+hcMiVpxXc+BVT5WYydUW0f2D5SLfFVx4ie7Zb5vHRIT8h9noueJVucQVJwANU/g/Rm/FUh20Z5f9A86Sb4buDALjFkc1CNJl1mOlz0m+X20tRxDR5fqnuVeZ70ve8H2scBUg3t4CCYbOpGPgrFaWRrL6pvJn1Gj7k=
From: "Chen, Jiqian" <Jiqian.Chen@amd.com>
To: "Hildebrand, Stewart" <Stewart.Hildebrand@amd.com>
CC: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>, Jan
 Beulich <jbeulich@suse.com>, Andrew Cooper <andrew.cooper3@citrix.com>,
	=?utf-8?B?Um9nZXIgUGF1IE1vbm7DqQ==?= <roger.pau@citrix.com>, Wei Liu
	<wl@xen.org>, George Dunlap <george.dunlap@citrix.com>, Julien Grall
	<julien@xen.org>, Stefano Stabellini <sstabellini@kernel.org>, Anthony PERARD
	<anthony.perard@citrix.com>, Juergen Gross <jgross@suse.com>, "Huang, Ray"
	<Ray.Huang@amd.com>, "Chen, Jiqian" <Jiqian.Chen@amd.com>
Subject: Re: [RFC XEN PATCH v4 4/5] domctl: Use gsi to grant/revoke irq
 permission
Thread-Topic: [RFC XEN PATCH v4 4/5] domctl: Use gsi to grant/revoke irq
 permission
Thread-Index: AQHaP6Y1pt0ckfKChE+VsjXCWSj8+LDTgncAgADyZIA=
Date: Thu, 11 Jan 2024 02:39:29 +0000
Message-ID:
 <BL1PR12MB5849FF293A115D986256D4A4E7682@BL1PR12MB5849.namprd12.prod.outlook.com>
References: <20240105070920.350113-1-Jiqian.Chen@amd.com>
 <20240105070920.350113-5-Jiqian.Chen@amd.com>
 <a9d7a073-7857-4567-9528-413d96a99d91@amd.com>
In-Reply-To: <a9d7a073-7857-4567-9528-413d96a99d91@amd.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-ms-exchange-imapappendstamp: IA1PR12MB7567.namprd12.prod.outlook.com
 (15.20.7181.004)
authentication-results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=amd.com;
x-ms-exchange-messagesentrepresentingtype: 1
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: BL1PR12MB5849:EE_|DM4PR12MB6063:EE_
x-ms-office365-filtering-correlation-id: a6c28c43-c668-4f41-b0d9-08dc124e88c9
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam: BCL:0;
x-microsoft-antispam-message-info:
 u4RgzsmOcrw6HxON9HFSfcDMBiT5H6BFpNFHAmBfhK50ikKsTsgZn79kiBffgI5d+KEYW5IcqUkUOpWy+0ez9/1wPgW6gEvInFcEMQpftKPg/4FUD3VJW89LFWiR4L+Ua7rVqy7PNpmSkeNIc/A6IUCvrsNroK5Q/dbXZknk726EiLDdKIDZHtPZ0V3PXgAlU/Z7dZqmVRb/QlY+gd2m8/n776Xl/INyLaGnHt3LWwfmgouyg822gAv64UPsFuMPEjqC62gi5ejM8ioCog/gryBu337HMouc6eKjifS9V2CFFTnK1COnGghpQfYaRLItRqdiWJ7/I/FuucZmY4QubiYF+GSh9v19MA4iFxTysskJCKxQUftdFlFpJ9UbbU6dfObJgn3AN80ML8TjFyMO/Mhw0WNT8U88UF8CH/vE17q9LvivpvlrNemtEcYNjmEldb6UnWHRzUfCE1mOsfVdfsx3PudF4dot5VQvCzkbl/oS/zDGSlA7phC0aKmWVp2owjDqmm8qzWKl3M6g6eDMJ5t+UUZtvRDrkzgVsBFHuK30C4JuM2F5Yejwx2erSFQAWA+VU9WCY6klKEuU1rvFn5T63Q+dIjkCCY+1lVYIJe0=
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BL1PR12MB5849.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230031)(39860400002)(346002)(136003)(366004)(376002)(396003)(230922051799003)(64100799003)(451199024)(1800799012)(186009)(55016003)(6506007)(26005)(53546011)(9686003)(7696005)(478600001)(71200400001)(38100700002)(122000001)(33656002)(66446008)(41300700001)(2906002)(66476007)(64756008)(66556008)(7416002)(76116006)(83380400001)(5660300002)(54906003)(38070700009)(8676002)(4326008)(316002)(6636002)(66946007)(8936002)(52536014)(6862004);DIR:OUT;SFP:1101;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?utf-8?B?a0cwVFNpYnFYNFVhUUZyeEp5S2pPQ0xwK3NjcUVJSVBoYzd1ZG5pakwzWnI5?=
 =?utf-8?B?NEhrczdhbFV4TGpleERGWExIWmw4a3Q3OEpUcHIvYzJkemMyaHlDV2dqOG03?=
 =?utf-8?B?UTBqL3JiWHBxbkN0cjNDZFBPQWFsQnlXNzIvQk9qYW5zdCt6TWhnMkVqOTVw?=
 =?utf-8?B?ZU0xMHFhQUdKdWhvbEFXNmZZQjFoRzZhYkdvbm01NUxFWVRVZ2ZUNFd6Sm1M?=
 =?utf-8?B?d1AybXpma3hDRUdtMW16akY4TjlZT3pFRExXM1Jyak5vdGNGYWtkTk9TRHpE?=
 =?utf-8?B?c1pURVRJWFYyaVdVQ1hMTTRuMXhQd2NHT2FKNEZDNUZNYkttbktxaUtoSDRi?=
 =?utf-8?B?N2M1dnZRbWJtMEFiNVRsa2NJVDB2eFp4NFNPWnlmbXg2RWhRUHV4aUFqRFVE?=
 =?utf-8?B?T2pzdi9MMGs1NlNDZ0xtVkgwR2g5MnBtUXM5MTZpZUF0ancySXJlalltS0dx?=
 =?utf-8?B?ZDV2RGdoOEpsN01vRXlva2gra0FwWlBpdFVKNktGZ253SDFSWVpnM25wS0h2?=
 =?utf-8?B?bjkvWmtDUUJ6SDZCVW5vemsrNUJJbmdXQWxCRmozY3dFMEJJQTV1Vi9xT0th?=
 =?utf-8?B?dVFSUlRyVVRlYWJCU1BVNnVORm1KaFczWnZmcUo4cHhIOWtXVUExd2lQZW9Z?=
 =?utf-8?B?V09zQWhoTFZRVGdFQWRTQXpGZHpJZ1NhSFFlT0RaM2d4N25vNEdSRVFCT3Ix?=
 =?utf-8?B?Z0Zka3lpZDV2Y3NrWWhPQ21BbG9qMWswc0pDNzlXQzVvSThtT05ZSDZlSHlU?=
 =?utf-8?B?dzNBUEVkaXJjOTQyM25qQ0dRcW5KL2RCVit0ZEpKWVl0bHZBQzIzTzN3WDFU?=
 =?utf-8?B?bnpadDNacFV4T0pPakRCdHZvNDZabk1Nelc2SzZSaGlxNjd6U3QwcC8wODJM?=
 =?utf-8?B?N3RVZmdUeGNmQkwzdFdqSmRKMHZrNlRUYnNsNDB6dk9JR3doUUxFYVgzN1ZM?=
 =?utf-8?B?Mmo0eTNnazhKcE1BS3krRnBDaTlZZGtLOTZyT3FpSytoQkN1dzd2eUh1dm00?=
 =?utf-8?B?eDN5Q0RFOWhQRUJHZWR5dmlGdHNFQWZJRmcyZWRJT3VUUkVCZldLRmhjd2Rh?=
 =?utf-8?B?MlF3a3Y2clQxR0JYSzZONUFya0F2cmxxbDN6RWM0Y2tNcUFONmt6ZW1YNnJk?=
 =?utf-8?B?YTJncElQZVVVNVIzWDIrUkhxMHRZT1dhZWFWV0M0YVo0OUprQnJxSXhaWlZk?=
 =?utf-8?B?RC82MzVBYk05LzZaRTg0ZXdzLzBDMkxYRkpHeXhtK0J4RVpkNC8vNy9GZGlI?=
 =?utf-8?B?UWlsNm5ObnZTNmFIZVF3OFUxYzZEaEoyMjB4cGtlWjlwZmRFR0VPTVgrN054?=
 =?utf-8?B?MFd6RHhHcC82NHYwaEdMUDdsSEJaS0NiTktBc3pldkV4ZFZna2F2YjU2TWVY?=
 =?utf-8?B?WUtZbXRvUjd2UEROMlRyb2QyV0ZFajFJNHRhTUhTVmFqNFErYmQzbnNaWDN2?=
 =?utf-8?B?QnFYVitxd3NhZzVSRCszajRoWG1xeUI0MFJFTENCbHNSbVNtaW9uYWwwQzlW?=
 =?utf-8?B?TVd6ZzRuU3cvUlhJdVB4Tys4Q3dXRC9BZ0J5YVZKL0ZNaFdsYXl5bHFYamU1?=
 =?utf-8?B?SnJGU1RNZEgyaS9EdXR6MlNENlJiZVJoblhhVjM2OEEzY0hWbDlCcEVFOW5H?=
 =?utf-8?B?bDdWSTZ6L2tlVWdKVDV3bFBWNlVVYkRiVUlzSmkrVXdEczB4eDVtL25DZStR?=
 =?utf-8?B?SWdJeXhhNWdYaVRkdCtxdDVPdUtlODdjMmFMOFJxR1VDa0RJd1ZCbGUxL3l4?=
 =?utf-8?B?THd1UVJ4bnJpVHdaWWlybzYrOGVjUFVsYVFDc0I0QWRGbHBockN1Y2RTNG96?=
 =?utf-8?B?VmtDdG1OaFErRlh4bXpmd1BMWmRjTVlhZFRHaDVUa2NGODlBOHd3VlloWUVl?=
 =?utf-8?B?cXhkVUYwbjNHZDNZS3lqUWZxc3llenNTT2NRcDZyK3JmYkl5VXBFQVA3Q0tI?=
 =?utf-8?B?SjBMaC9GOHc1MFNPUHpnVTNiQ3RBbm1OYzExSUY5LzNneTl1ejBVYy9pR0t5?=
 =?utf-8?B?Ni9vOUJrQ280NnNIR3hHSURFZnIxM2taZURYa1RONXZJVkJJQk5HQWNWejVI?=
 =?utf-8?B?WVZIWkZBeUVJWG5pWHBmZjYvT3UzNnQ3UXJWeGR1K2Y3cmxIQUw2Z1NIbU9V?=
 =?utf-8?Q?ZzNE=3D?=
Content-Type: text/plain; charset="utf-8"
Content-ID: <687E4F2503B2CC4481F810F146949561@amdcloud.onmicrosoft.com>
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: BL1PR12MB5849.namprd12.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: a6c28c43-c668-4f41-b0d9-08dc124e88c9
X-MS-Exchange-CrossTenant-originalarrivaltime: 11 Jan 2024 02:39:29.0972
 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 3dd8961f-e488-4e60-8e11-a82d994e183d
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: NSolJNwOJtbJp5SBXRgXpcFSDIhvW5rBjXZRgcUGqYD7/5yKianWkMG4SB1QlO7ps8HczVuwWNpcLXVtfmkOYA==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM4PR12MB6063

T24gMjAyNC8xLzExIDA0OjA5LCBTdGV3YXJ0IEhpbGRlYnJhbmQgd3JvdGU6DQo+IE9uIDEvNS8y
NCAwMjowOSwgSmlxaWFuIENoZW4gd3JvdGU6DQo+PiBkaWZmIC0tZ2l0IGEveGVuL2NvbW1vbi9k
b21jdGwuYyBiL3hlbi9jb21tb24vZG9tY3RsLmMNCj4+IGluZGV4IGY1YTcxZWU1Zjc4ZC4uZWVi
OTc1YmQwMTk0IDEwMDY0NA0KPj4gLS0tIGEveGVuL2NvbW1vbi9kb21jdGwuYw0KPj4gKysrIGIv
eGVuL2NvbW1vbi9kb21jdGwuYw0KPj4gQEAgLTY1MywxMiArNjUzLDIwIEBAIGxvbmcgZG9fZG9t
Y3RsKFhFTl9HVUVTVF9IQU5ETEVfUEFSQU0oeGVuX2RvbWN0bF90KSB1X2RvbWN0bCkNCj4+ICAg
ICAgICAgIHVuc2lnbmVkIGludCBwaXJxID0gb3AtPnUuaXJxX3Blcm1pc3Npb24ucGlycSwgaXJx
Ow0KPj4gICAgICAgICAgaW50IGFsbG93ID0gb3AtPnUuaXJxX3Blcm1pc3Npb24uYWxsb3dfYWNj
ZXNzOw0KPj4gIA0KPj4gLSAgICAgICAgaWYgKCBwaXJxID49IGN1cnJlbnQtPmRvbWFpbi0+bnJf
cGlycXMgKQ0KPj4gKyAgICAgICAgaWYgKCBwaXJxID49IG5yX2lycXNfZ3NpICkNCj4gDQo+IFRo
aXMgZG9lc24ndCBidWlsZCBvbiBBUk0sIGFzIG5yX2lycXNfZ3NpIGlzIHg4NiBvbmx5LiBUaGlz
IGlzIGEgd2lsZCBndWVzczogd2UgbWF5IHdhbnQga2VlcCB0aGUgZXhpc3RpbmcgY3VycmVudC0+
ZG9tYWluLT5ucl9waXJxcyBjaGVjaywgdGhlbiBhZGQgdGhlIG5ldyBucl9pcnFzX2dzaSBjaGVj
ayB3cmFwcGVkIGluICNpZmRlZiBDT05GSUdfWDg2Lg0KQXMgSSB3aWxsIGFkZCBhIG5ldyBoeXBl
cmNhbGwgaW4gbmV4dCB2ZXJzaW9uLCB0aGVuIHRoaXMgY2hhbmdlIHdpbGwgbm90IGV4aXN0LCB0
aGFuayB5b3UuDQoNCj4gDQo+PiAgICAgICAgICB7DQo+PiAgICAgICAgICAgICAgcmV0ID0gLUVJ
TlZBTDsNCj4+ICAgICAgICAgICAgICBicmVhazsNCj4+ICAgICAgICAgIH0NCj4+IC0gICAgICAg
IGlycSA9IHBpcnFfYWNjZXNzX3Blcm1pdHRlZChjdXJyZW50LT5kb21haW4sIHBpcnEpOw0KPj4g
Kw0KPj4gKyAgICAgICAgaWYgKCBpcnFfYWNjZXNzX3Blcm1pdHRlZChjdXJyZW50LT5kb21haW4s
IHBpcnEpICkNCj4+ICsgICAgICAgICAgICBpcnEgPSBwaXJxOw0KPj4gKyAgICAgICAgZWxzZQ0K
Pj4gKyAgICAgICAgew0KPj4gKyAgICAgICAgICAgIHJldCA9IC1FUEVSTTsNCj4+ICsgICAgICAg
ICAgICBicmVhazsNCj4+ICsgICAgICAgIH0NCj4+ICsNCj4+ICAgICAgICAgIGlmICggIWlycSB8
fCB4c21faXJxX3Blcm1pc3Npb24oWFNNX0hPT0ssIGQsIGlycSwgYWxsb3cpICkNCj4+ICAgICAg
ICAgICAgICByZXQgPSAtRVBFUk07DQo+PiAgICAgICAgICBlbHNlIGlmICggYWxsb3cgKQ0KDQot
LSANCkJlc3QgcmVnYXJkcywNCkppcWlhbiBDaGVuLg0K


From xen-devel-bounces@lists.xenproject.org Thu Jan 11 02:39:48 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 11 Jan 2024 02:39:48 +0000
Received: from list by lists.xenproject.org with outflank-mailman.665857.1036153 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNkyy-0008H5-0M; Thu, 11 Jan 2024 02:39:48 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 665857.1036153; Thu, 11 Jan 2024 02:39:47 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNkyx-0008Gy-Ti; Thu, 11 Jan 2024 02:39:47 +0000
Received: by outflank-mailman (input) for mailman id 665857;
 Thu, 11 Jan 2024 02:39:46 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rNkyw-0008Fz-Ac; Thu, 11 Jan 2024 02:39:46 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rNkyw-0001IN-1h; Thu, 11 Jan 2024 02:39:46 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rNkyv-00061S-CU; Thu, 11 Jan 2024 02:39:45 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rNkyv-0006Z2-C0; Thu, 11 Jan 2024 02:39:45 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=ux5Nx2l12BKLWrSRFWpl5f+l3NabwBEciZGbHu5V+NU=; b=G7nZ5OWNgAk5pVv0EBmwDsU++/
	rd5mPlu2zHI5w+xNCvBHdPOVdvqAq02hpXNfMaJUL+gTSh0GVFBbdfN+r+vJvtlPH1MOM4QyTlIW4
	vZEUnRYaBkvhWADZyJeXLjg9v9+lkLRIqcnuYEP28gBK0FFRiCDtCkfpikOjdOQnK3A0=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184303-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [linux-linus test] 184303: regressions - FAIL
X-Osstest-Failures:
    linux-linus:test-arm64-arm64-xl-credit1:debian-install:fail:regression
    linux-linus:test-arm64-arm64-xl:debian-install:fail:regression
    linux-linus:test-arm64-arm64-xl-thunderx:debian-install:fail:regression
    linux-linus:test-arm64-arm64-xl-credit2:debian-install:fail:regression
    linux-linus:test-arm64-arm64-xl-xsm:debian-install:fail:regression
    linux-linus:test-arm64-arm64-libvirt-xsm:debian-install:fail:regression
    linux-linus:test-armhf-armhf-libvirt-raw:xen-boot:fail:heisenbug
    linux-linus:test-armhf-armhf-libvirt-raw:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    linux-linus:test-amd64-amd64-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    linux-linus:test-amd64-amd64-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    linux-linus:test-amd64-amd64-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-qcow2:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-qemuu-nested-amd:debian-hvm-install/l1/l2:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-xsm:migrate-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-multivcpu:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-multivcpu:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-arndale:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-arndale:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-rtds:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-rtds:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit1:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit1:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-qcow2:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit2:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit2:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-libvirt-raw:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-vhd:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-vhd:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-vhd:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-vhd:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-qcow2:migrate-support-check:fail:nonblocking
X-Osstest-Versions-This:
    linux=ab27740f76654ed58dd32ac0ba0031c18a6dea3b
X-Osstest-Versions-That:
    linux=0dd3ee31125508cd67f7e7172247f05b7fd1753a
From: osstest service owner <osstest-admin@xenproject.org>
Date: Thu, 11 Jan 2024 02:39:45 +0000

flight 184303 linux-linus real [real]
flight 184313 linux-linus real-retest [real]
http://logs.test-lab.xenproject.org/osstest/logs/184303/
http://logs.test-lab.xenproject.org/osstest/logs/184313/

Regressions :-(

Tests which did not succeed and are blocking,
including tests which could not be run:
 test-arm64-arm64-xl-credit1  12 debian-install           fail REGR. vs. 184270
 test-arm64-arm64-xl          12 debian-install           fail REGR. vs. 184270
 test-arm64-arm64-xl-thunderx 12 debian-install           fail REGR. vs. 184270
 test-arm64-arm64-xl-credit2  12 debian-install           fail REGR. vs. 184270
 test-arm64-arm64-xl-xsm      12 debian-install           fail REGR. vs. 184270
 test-arm64-arm64-libvirt-xsm 12 debian-install           fail REGR. vs. 184270

Tests which are failing intermittently (not blocking):
 test-armhf-armhf-libvirt-raw  8 xen-boot            fail pass in 184313-retest

Tests which did not succeed, but are not blocking:
 test-armhf-armhf-libvirt-raw 15 saverestore-support-check fail in 184313 like 184270
 test-armhf-armhf-libvirt-raw 14 migrate-support-check fail in 184313 never pass
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 184270
 test-amd64-amd64-xl-qemut-win7-amd64 19 guest-stop            fail like 184270
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 184270
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 184270
 test-amd64-amd64-xl-qemut-ws16-amd64 19 guest-stop            fail like 184270
 test-armhf-armhf-libvirt-qcow2 15 saverestore-support-check   fail like 184270
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 184270
 test-amd64-amd64-libvirt     15 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-armhf-armhf-xl-multivcpu 15 migrate-support-check        fail  never pass
 test-armhf-armhf-xl-multivcpu 16 saverestore-support-check    fail  never pass
 test-armhf-armhf-libvirt     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-arndale  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-arndale  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl          15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-rtds     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-rtds     16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-credit1  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit1  16 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-qcow2 14 migrate-support-check        fail never pass
 test-armhf-armhf-xl-credit2  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit2  16 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-raw 14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 15 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-vhd      14 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-vhd      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-vhd      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-qcow2 14 migrate-support-check        fail never pass

version targeted for testing:
 linux                ab27740f76654ed58dd32ac0ba0031c18a6dea3b
baseline version:
 linux                0dd3ee31125508cd67f7e7172247f05b7fd1753a

Last test of basis   184270  2024-01-07 20:42:19 Z    3 days
Failing since        184283  2024-01-08 20:10:43 Z    2 days    4 attempts
Testing same since   184303  2024-01-10 07:18:09 Z    0 days    1 attempts

------------------------------------------------------------
433 people touched revisions under test,
not listing them all

jobs:
 build-amd64-xsm                                              pass    
 build-arm64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64                                                  pass    
 build-arm64                                                  pass    
 build-armhf                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-arm64-libvirt                                          pass    
 build-armhf-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-pvops                                            pass    
 build-arm64-pvops                                            pass    
 build-armhf-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-amd64-amd64-xl                                          pass    
 test-amd64-coresched-amd64-xl                                pass    
 test-arm64-arm64-xl                                          fail    
 test-armhf-armhf-xl                                          pass    
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm           pass    
 test-amd64-amd64-xl-qemut-stubdom-debianhvm-amd64-xsm        pass    
 test-amd64-amd64-xl-qemut-debianhvm-i386-xsm                 pass    
 test-amd64-amd64-xl-qemuu-debianhvm-i386-xsm                 pass    
 test-amd64-amd64-libvirt-xsm                                 pass    
 test-arm64-arm64-libvirt-xsm                                 fail    
 test-amd64-amd64-xl-xsm                                      pass    
 test-arm64-arm64-xl-xsm                                      fail    
 test-amd64-amd64-qemuu-nested-amd                            fail    
 test-amd64-amd64-xl-pvhv2-amd                                pass    
 test-amd64-amd64-dom0pvh-xl-amd                              pass    
 test-amd64-amd64-xl-qemut-debianhvm-amd64                    pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64                    pass    
 test-amd64-amd64-freebsd11-amd64                             pass    
 test-amd64-amd64-freebsd12-amd64                             pass    
 test-amd64-amd64-xl-qemuu-ovmf-amd64                         pass    
 test-amd64-amd64-xl-qemut-win7-amd64                         fail    
 test-amd64-amd64-xl-qemuu-win7-amd64                         fail    
 test-amd64-amd64-xl-qemut-ws16-amd64                         fail    
 test-amd64-amd64-xl-qemuu-ws16-amd64                         fail    
 test-armhf-armhf-xl-arndale                                  pass    
 test-amd64-amd64-examine-bios                                pass    
 test-amd64-amd64-xl-credit1                                  pass    
 test-arm64-arm64-xl-credit1                                  fail    
 test-armhf-armhf-xl-credit1                                  pass    
 test-amd64-amd64-xl-credit2                                  pass    
 test-arm64-arm64-xl-credit2                                  fail    
 test-armhf-armhf-xl-credit2                                  pass    
 test-amd64-amd64-xl-qemuu-dmrestrict-amd64-dmrestrict        pass    
 test-amd64-amd64-examine                                     pass    
 test-arm64-arm64-examine                                     pass    
 test-armhf-armhf-examine                                     pass    
 test-amd64-amd64-qemuu-nested-intel                          pass    
 test-amd64-amd64-xl-pvhv2-intel                              pass    
 test-amd64-amd64-dom0pvh-xl-intel                            pass    
 test-amd64-amd64-libvirt                                     pass    
 test-armhf-armhf-libvirt                                     pass    
 test-amd64-amd64-xl-multivcpu                                pass    
 test-armhf-armhf-xl-multivcpu                                pass    
 test-amd64-amd64-pair                                        pass    
 test-amd64-amd64-libvirt-pair                                pass    
 test-amd64-amd64-xl-pvshim                                   pass    
 test-amd64-amd64-pygrub                                      pass    
 test-amd64-amd64-libvirt-qcow2                               pass    
 test-armhf-armhf-libvirt-qcow2                               pass    
 test-amd64-amd64-libvirt-raw                                 pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-armhf-armhf-libvirt-raw                                 fail    
 test-amd64-amd64-xl-rtds                                     pass    
 test-armhf-armhf-xl-rtds                                     pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64-shadow             pass    
 test-amd64-amd64-xl-shadow                                   pass    
 test-arm64-arm64-xl-thunderx                                 fail    
 test-amd64-amd64-examine-uefi                                pass    
 test-amd64-amd64-xl-vhd                                      pass    
 test-arm64-arm64-xl-vhd                                      pass    
 test-armhf-armhf-xl-vhd                                      pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Not pushing.

(No revision log; it would be 40668 lines long.)


From xen-devel-bounces@lists.xenproject.org Thu Jan 11 05:20:17 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 11 Jan 2024 05:20:17 +0000
Received: from list by lists.xenproject.org with outflank-mailman.665870.1036163 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNnTv-00037E-08; Thu, 11 Jan 2024 05:19:55 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 665870.1036163; Thu, 11 Jan 2024 05:19:54 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNnTu-000377-Sx; Thu, 11 Jan 2024 05:19:54 +0000
Received: by outflank-mailman (input) for mailman id 665870;
 Thu, 11 Jan 2024 05:19:53 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rNnTt-00036x-F4; Thu, 11 Jan 2024 05:19:53 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rNnTt-0004gB-As; Thu, 11 Jan 2024 05:19:53 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rNnTs-0003xg-U3; Thu, 11 Jan 2024 05:19:53 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rNnTs-0007W1-TU; Thu, 11 Jan 2024 05:19:52 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=xoV9saGmTg/85AoUdbP0tvGBEe4Uv6lNqWc67nbVMAU=; b=P6jE8Onx+uRHDMOqW4PFsAkBiW
	uWG0MQDRzqE0GZVFiYMVymqq3o7MNnjOpohP0hae9h2zoEH3pR77jOwMS3x3VZuVXuUCtECz1/wQn
	lmpze6khZGwdrKORTdjnK6MIllI25CwDDHb3Qpd4QEcmM04ylN/JiYS/hBVztfgihu8I=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184315-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [ovmf test] 184315: all pass - PUSHED
X-Osstest-Versions-This:
    ovmf=889535caf8869e3d4818b75f95f2fc910c84a4d2
X-Osstest-Versions-That:
    ovmf=e7cfdc5f14b408e85fcbcb335aae7c15bbce4dfb
From: osstest service owner <osstest-admin@xenproject.org>
Date: Thu, 11 Jan 2024 05:19:52 +0000

flight 184315 ovmf real [real]
http://logs.test-lab.xenproject.org/osstest/logs/184315/

Perfect :-)
All tests in this flight passed as required
version targeted for testing:
 ovmf                 889535caf8869e3d4818b75f95f2fc910c84a4d2
baseline version:
 ovmf                 e7cfdc5f14b408e85fcbcb335aae7c15bbce4dfb

Last test of basis   184310  2024-01-10 16:11:02 Z    0 days
Testing same since   184315  2024-01-11 03:12:57 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Junfeng Guan <junfengx.guan@intel.com>

jobs:
 build-amd64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-amd64-amd64-xl-qemuu-ovmf-amd64                         pass    
 test-amd64-i386-xl-qemuu-ovmf-amd64                          pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Pushing revision :

To xenbits.xen.org:/home/xen/git/osstest/ovmf.git
   e7cfdc5f14..889535caf8  889535caf8869e3d4818b75f95f2fc910c84a4d2 -> xen-tested-master


From xen-devel-bounces@lists.xenproject.org Thu Jan 11 06:37:30 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 11 Jan 2024 06:37:30 +0000
Received: from list by lists.xenproject.org with outflank-mailman.665849.1036172 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNogl-0003OT-Ka; Thu, 11 Jan 2024 06:37:15 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 665849.1036172; Thu, 11 Jan 2024 06:37:15 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNogl-0003OM-I0; Thu, 11 Jan 2024 06:37:15 +0000
Received: by outflank-mailman (input) for mailman id 665849;
 Thu, 11 Jan 2024 02:29:14 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=wP2G=IV=gmail.com=simonpatp@srs-se1.protection.inumbo.net>)
 id 1rNkok-0006Dh-Lc
 for xen-devel@lists.xenproject.org; Thu, 11 Jan 2024 02:29:14 +0000
Received: from mail-lj1-x22e.google.com (mail-lj1-x22e.google.com
 [2a00:1450:4864:20::22e])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 3597a8f6-b029-11ee-98f0-6d05b1d4d9a1;
 Thu, 11 Jan 2024 03:29:13 +0100 (CET)
Received: by mail-lj1-x22e.google.com with SMTP id
 38308e7fff4ca-2cd5c55d6b8so40304861fa.3
 for <xen-devel@lists.xenproject.org>; Wed, 10 Jan 2024 18:29:13 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 3597a8f6-b029-11ee-98f0-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1704940153; x=1705544953; darn=lists.xenproject.org;
        h=to:subject:message-id:date:from:mime-version:from:to:cc:subject
         :date:message-id:reply-to;
        bh=IMYtyjnz9qMfdlVNuO9e6CGKE+/OquWGdy8V+qQvres=;
        b=jkdgf2yIdzWW2l3isMUANapUVXe/1d6RLRRkwOYNz7aef5NF4gtlUOKD3pFncuM6y6
         UfoL6uaNGcYjfqoe+wJMA910yqgrH5GiuAnEQpfsMnhLGozCyN9s/BbzmfNGz/xehAUp
         UqZW+p2zfrFmnYY/hKmjDhWTswXfX2TVw94xJarsySXojGMEQ8ePafnwutYEskeQigwQ
         1gRYkGr25Ui/oP46tzpZ9mN/ugS+JRa+V6G21f0o2iduUor9LO7PLn9Ac6m9DszdDi5e
         bA27qmQ7sm06ySktbwXuGau9lTG8uAOK4g3KmICFfzgwr1H3G8oPv26ovdqNq/dEsugy
         YWqA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704940153; x=1705544953;
        h=to:subject:message-id:date:from:mime-version:x-gm-message-state
         :from:to:cc:subject:date:message-id:reply-to;
        bh=IMYtyjnz9qMfdlVNuO9e6CGKE+/OquWGdy8V+qQvres=;
        b=vcWJOfCVhxm0UZgix0pZUJhmswSlJoMNKh05zr8qxZDlfAGdyE4edOZGErM9EzUBjO
         H7njgsF9sa5lyFN5QT4+UuI+dp3vqxj2xkdjbqoTM5NNKr1Cg/wP7PA7du41IfjhYLzC
         StiWC39VuN1RYOgxHuY/aJ4CAq9QLCRSRVfRppvJ0cl3C5HdBmIV7h2mwGP+6Y42Qd1f
         ZUU4unEwy4tEAtur4CmLdst2f/Rc9S3Wheq9ib5xraMCDc9iYHDamLesWg5QfAQO7QNP
         Djey2rrV/u2wSRpmWo1NZz26PnXsz0v/RP0OIRsWiGbTSS6Ny4av6M2X9gpS1m/hn3k/
         7JHQ==
X-Gm-Message-State: AOJu0Yy7c1HDS2kH8SjvdnFUxILlUwYV0dfNnqPy66vlYJzxQBZnL1bn
	HZBh8NOaPV85U/mJTnQc84uMrIGQ5vQ+HFYIU6qdQ2VXu8I=
X-Google-Smtp-Source: AGHT+IHs8gX3igEkX2lpDOhXsbbNTqem7y2fMol2HW4/xuIzc6UpVI41ZGZDNiuZzj4KUeQJK2EKFcFxJfFEHgMXvl4=
X-Received: by 2002:a2e:9245:0:b0:2cd:65f9:570d with SMTP id
 v5-20020a2e9245000000b002cd65f9570dmr137942ljg.40.1704940152637; Wed, 10 Jan
 2024 18:29:12 -0800 (PST)
MIME-Version: 1.0
From: Patrick Plenefisch <simonpatp@gmail.com>
Date: Wed, 10 Jan 2024 21:29:01 -0500
Message-ID: <CAOCpoWdOH=xGxiQSC1c5Ueb1THxAjH4WiZbCZq-QT+d_KAk3SA@mail.gmail.com>
Subject: E820 memory allocation issue on Threadripper platforms
To: xen-devel@lists.xenproject.org
Content-Type: multipart/alternative; boundary="000000000000294dde060ea2500f"

--000000000000294dde060ea2500f
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

Hi,

I ran into a memory allocation issue, I think. It is the same as
https://github.com/QubesOS/qubes-issues/issues/8791 and I saw at the end it
was recommended (by marmarek) that the issue reporter forward the issue to
this list. I searched the list, but as I didn't see it in the list already,
I'm doing that now.

Hardware:
I have an AMD Threadripper 7960X on a ASRock TRX50 WS motherboard. The
Qubes reporter had a Threadripper 3970X on an ASUS Prime TRX40-Pro
Motherboard. I saw a 3rd issue report of a similar issue on another
Threadripper, so I think this may be Threadripper-specific.

Setup:
The QuebesOS reporter was using Qubes Installer.
My install was that I had a fresh install of Debian 12 (no gui), and then
did `apt install xen-system-amd64` and rebooted.

The issue:
Any boot of Xen on the hardware results in a halted machine. When
monitoring the logs with `vga=3D,keep`, we get:

(XEN) *** Serial input to DOM0 (type 'CTRL-a' three times to switch input)
(XEN) Freed 644kB init memory
mapping kernel into physical memory
about to get started=E2=80=A6
xen hypervisor allocated kernel memory conflicts with E820
(XEN) Hardware Dom0 halted: halting machine

None of the settings I or the Qubes reporter have tried have been able to
get past this failure.

I am happy to provide debugging support.

Patrick

--000000000000294dde060ea2500f
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr">Hi,<br><br>I ran into a memory allocation issue, I think. =
It is the same as <a href=3D"https://github.com/QubesOS/qubes-issues/issues=
/8791">https://github.com/QubesOS/qubes-issues/issues/8791</a> and I saw at=
 the end it was recommended (by marmarek) that the issue reporter forward t=
he issue to this list. I searched the list, but as I didn&#39;t see it in t=
he list already, I&#39;m doing that now.<br><br>Hardware:<br>I have an AMD =
Threadripper 7960X on a ASRock TRX50 WS motherboard. The Qubes reporter had=
 a Threadripper 3970X on an ASUS Prime TRX40-Pro Motherboard. I saw a 3rd i=
ssue report of a similar issue on another Threadripper, so I think this may=
 be Threadripper-specific.<br><br>Setup:<br>The QuebesOS reporter was using=
 Qubes Installer.<br>My install was that I had a fresh install of Debian 12=
 (no gui), and then did `apt install xen-system-amd64` and rebooted.<br><br=
>The issue:<br>Any boot of Xen on the hardware results in a halted machine.=
 When monitoring the logs with `vga=3D,keep`, we get:<br><br>(XEN) *** Seri=
al input to DOM0 (type &#39;CTRL-a&#39; three times to switch input)<br>(XE=
N) Freed 644kB init memory<br>mapping kernel into physical memory<br>about =
to get started=E2=80=A6<br>xen hypervisor allocated kernel memory conflicts=
 with E820<br>(XEN) Hardware Dom0 halted: halting machine<br><br>None of th=
e settings I or the Qubes reporter have tried have been able to get past th=
is failure.<br><br><div>I am happy to provide debugging support.</div><div>=
<br></div><div>Patrick<br></div></div>

--000000000000294dde060ea2500f--


From xen-devel-bounces@lists.xenproject.org Thu Jan 11 06:59:28 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 11 Jan 2024 06:59:28 +0000
Received: from list by lists.xenproject.org with outflank-mailman.665885.1036183 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNp2A-0006Bv-Dd; Thu, 11 Jan 2024 06:59:22 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 665885.1036183; Thu, 11 Jan 2024 06:59:22 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNp2A-0006Bo-Aa; Thu, 11 Jan 2024 06:59:22 +0000
Received: by outflank-mailman (input) for mailman id 665885;
 Thu, 11 Jan 2024 06:59:21 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rNp29-0006Be-Bw; Thu, 11 Jan 2024 06:59:21 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rNp29-0006dv-2n; Thu, 11 Jan 2024 06:59:21 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rNp28-0007ut-Hx; Thu, 11 Jan 2024 06:59:20 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rNp28-00043v-HX; Thu, 11 Jan 2024 06:59:20 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=OEZ0vDlnIXfC9qbA053jKI3PTe5ZhZqHQlyx9Y7cBMU=; b=ZVJR5n8OH4EGfX6IDSTUu7EcPc
	jSSJDdb0VWQzik2MTi3lbewD1no9+f74K0shfctRQR4+dM8c6k40eoDeKCM+ryAsTRuSrSWF+Tc03
	XhhfmN6XsEuYhJ1zy+0O7LxiySvJNjMnRCXTsiJCi1eWOSGHmlHcjiLVWvM5ueixI1ho=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184306-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [linux-5.4 test] 184306: regressions - FAIL
X-Osstest-Failures:
    linux-5.4:test-armhf-armhf-xl-multivcpu:guest-start/debian.repeat:fail:regression
    linux-5.4:test-armhf-armhf-xl-multivcpu:guest-start:fail:heisenbug
    linux-5.4:test-armhf-armhf-xl:guest-start/debian.repeat:fail:heisenbug
    linux-5.4:test-amd64-amd64-xl-qcow2:debian-di-install:fail:heisenbug
    linux-5.4:test-armhf-armhf-xl-rtds:guest-start/debian.repeat:fail:allowable
    linux-5.4:test-armhf-armhf-libvirt-qcow2:saverestore-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-credit1:guest-start/debian.repeat:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-credit1:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-credit1:saverestore-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-multivcpu:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-multivcpu:saverestore-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-credit1:guest-start:fail:nonblocking
    linux-5.4:test-armhf-armhf-libvirt:saverestore-support-check:fail:nonblocking
    linux-5.4:test-amd64-amd64-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    linux-5.4:test-amd64-i386-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    linux-5.4:test-amd64-i386-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    linux-5.4:test-amd64-amd64-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-credit2:guest-start/debian.repeat:fail:nonblocking
    linux-5.4:test-amd64-amd64-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    linux-5.4:test-amd64-amd64-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    linux-5.4:test-armhf-armhf-libvirt-raw:saverestore-support-check:fail:nonblocking
    linux-5.4:test-amd64-i386-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    linux-5.4:test-amd64-i386-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    linux-5.4:test-amd64-amd64-qemuu-nested-amd:debian-hvm-install/l1/l2:fail:nonblocking
    linux-5.4:test-amd64-i386-xl-pvshim:guest-start:fail:nonblocking
    linux-5.4:test-amd64-i386-libvirt-xsm:migrate-support-check:fail:nonblocking
    linux-5.4:test-amd64-amd64-libvirt-xsm:migrate-support-check:fail:nonblocking
    linux-5.4:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    linux-5.4:test-amd64-i386-libvirt:migrate-support-check:fail:nonblocking
    linux-5.4:test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-xsm:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-xsm:saverestore-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-libvirt-xsm:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-libvirt-xsm:saverestore-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-thunderx:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl:saverestore-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-thunderx:saverestore-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-credit1:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-credit1:saverestore-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-credit2:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-credit2:saverestore-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-rtds:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-rtds:saverestore-support-check:fail:nonblocking
    linux-5.4:test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-arndale:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-arndale:saverestore-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl:saverestore-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-credit2:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-credit2:saverestore-support-check:fail:nonblocking
    linux-5.4:test-amd64-amd64-libvirt-vhd:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-libvirt:migrate-support-check:fail:nonblocking
    linux-5.4:test-amd64-i386-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-libvirt-raw:saverestore-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-vhd:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-vhd:saverestore-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-libvirt-qcow2:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-vhd:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-vhd:saverestore-support-check:fail:nonblocking
X-Osstest-Versions-This:
    linux=4410df70110ff5175bf7f7fdc3bae5c80f2c36d9
X-Osstest-Versions-That:
    linux=2d21f73b2f16f51608c8d8b1726df270229a5006
From: osstest service owner <osstest-admin@xenproject.org>
Date: Thu, 11 Jan 2024 06:59:20 +0000

flight 184306 linux-5.4 real [real]
flight 184317 linux-5.4 real-retest [real]
http://logs.test-lab.xenproject.org/osstest/logs/184306/
http://logs.test-lab.xenproject.org/osstest/logs/184317/

Regressions :-(

Tests which did not succeed and are blocking,
including tests which could not be run:
 test-armhf-armhf-xl-multivcpu 18 guest-start/debian.repeat fail in 184298 REGR. vs. 184192

Tests which are failing intermittently (not blocking):
 test-armhf-armhf-xl-multivcpu 14 guest-start               fail pass in 184298
 test-armhf-armhf-xl          18 guest-start/debian.repeat  fail pass in 184298
 test-amd64-amd64-xl-qcow2    12 debian-di-install          fail pass in 184298

Regressions which are regarded as allowable (not blocking):
 test-armhf-armhf-xl-rtds    18 guest-start/debian.repeat fail REGR. vs. 184192

Tests which did not succeed, but are not blocking:
 test-armhf-armhf-libvirt-qcow2 15 saverestore-support-check fail blocked in 184192
 test-armhf-armhf-xl-credit1 18 guest-start/debian.repeat fail in 184298 blocked in 184192
 test-armhf-armhf-xl-credit1 15 migrate-support-check fail in 184298 never pass
 test-armhf-armhf-xl-credit1 16 saverestore-support-check fail in 184298 never pass
 test-armhf-armhf-xl-multivcpu 15 migrate-support-check fail in 184298 never pass
 test-armhf-armhf-xl-multivcpu 16 saverestore-support-check fail in 184298 never pass
 test-armhf-armhf-xl-credit1  14 guest-start                  fail  like 184192
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 184192
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 184192
 test-amd64-i386-xl-qemut-win7-amd64 19 guest-stop             fail like 184192
 test-amd64-i386-xl-qemuu-win7-amd64 19 guest-stop             fail like 184192
 test-amd64-amd64-xl-qemut-win7-amd64 19 guest-stop            fail like 184192
 test-armhf-armhf-xl-credit2  18 guest-start/debian.repeat    fail  like 184192
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 184192
 test-amd64-amd64-xl-qemut-ws16-amd64 19 guest-stop            fail like 184192
 test-armhf-armhf-libvirt-raw 15 saverestore-support-check    fail  like 184192
 test-amd64-i386-xl-qemut-ws16-amd64 19 guest-stop             fail like 184192
 test-amd64-i386-xl-qemuu-ws16-amd64 19 guest-stop             fail like 184192
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 184192
 test-amd64-i386-xl-pvshim    14 guest-start                  fail   never pass
 test-amd64-i386-libvirt-xsm  15 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt     15 migrate-support-check        fail   never pass
 test-amd64-i386-libvirt      15 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-arm64-arm64-xl-xsm      15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-xsm      16 saverestore-support-check    fail   never pass
 test-arm64-arm64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-xsm 16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl          15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-thunderx 15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl          16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-thunderx 16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-credit1  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit1  16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-credit2  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit2  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-rtds     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-rtds     16 saverestore-support-check    fail   never pass
 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-armhf-armhf-xl-arndale  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-arndale  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl          15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-credit2  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit2  16 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-vhd 14 migrate-support-check        fail   never pass
 test-armhf-armhf-libvirt     15 migrate-support-check        fail   never pass
 test-amd64-i386-libvirt-raw  14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 15 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-vhd      14 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-vhd      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-qcow2 14 migrate-support-check        fail never pass
 test-armhf-armhf-libvirt-raw 14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      15 saverestore-support-check    fail   never pass

version targeted for testing:
 linux                4410df70110ff5175bf7f7fdc3bae5c80f2c36d9
baseline version:
 linux                2d21f73b2f16f51608c8d8b1726df270229a5006

Last test of basis   184192  2023-12-20 15:16:31 Z   21 days
Testing same since   184275  2024-01-08 10:43:33 Z    2 days    5 attempts

------------------------------------------------------------
People who touched revisions under test:
  Alexander Gordeev <agordeev@linux.ibm.com>
  Alexis Lothoré <alexis.lothore@bootlin.com>
  Alper Ak <alperyasinak1@gmail.com>
  Bin Li <bin.li@canonical.com>
  Borislav Petkov (AMD) <bp@alien8.de>
  Chen-Yu Tsai <wens@kernel.org>
  Dan Carpenter <dan.carpenter@linaro.org>
  David Howells <dhowells@redhat.com>
  David S. Miller <davem@davemloft.net>
  David Sterba <dsterba@suse.com>
  Dmitry Torokhov <dmitry.torokhov@gmail.com>
  Dominique Martinet <asmadeus@codewreck.org>
  Eric Dumazet <edumazet@google.com>
  Fedor Pchelkin <pchelkin@ispras.ru>
  Florian Fainelli <florian.fainelli@broadcom.com>
  Geert Uytterhoeven <geert+renesas@glider.be>
  Georgi Djakov <djakov@kernel.org>
  Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  Haoran Liu <liuhaoran14@163.com>
  Harshit Mogalapalli <harshit.m.mogalapalli@oracle.com>
  Heiko Carstens <hca@linux.ibm.com>
  Heiner Kallweit <hkallweit1@gmail.com>
  Hu Haowen <xianfengting221@163.com>
  Jakub Kicinski <kuba@kernel.org>
  Jamal Hadi Salim <jhs@mojatatu.com>
  Javier Carrasco <javier.carrasco.cruz@gmail.com>
  Jens Axboe <axboe@kernel.dk>
  Johan Hovold <johan@kernel.org>
  Johannes Berg <johannes.berg@intel.com>
  Jonathan Cameron <Jonathan.Cameron@huawei.com>
  Josef Bacik <josef@toxicpanda.com>
  Kai Vehmanen <kai.vehmanen@linux.intel.com>
  kernelci.org bot <bot@kernelci.org>
  Kunwu Chan <chentao@kylinos.cn>
  Linus Torvalds <torvalds@linux-foundation.org>
  Linus Walleij <linus.walleij@linaro.org>
  Linux Kernel Functional Testing <lkft@linaro.org>
  Liu Jian <liujian56@huawei.com>
  Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
  Mark Glover <mark.glover@actisense.com>
  Markus Suvanto <markus.suvanto@gmail.com>
  Martin K. Petersen <martin.petersen@oracle.com>
  Masami Hiramatsu (Google) <mhiramat@kernel.org>
  Mike Snitzer <snitzer@kernel.org>
  Mike Tipton <quic_mdtipton@quicinc.com>
  Miri Korenblit <miriam.rachel.korenblit@intel.com>
  Moshe Shemesh <moshe@nvidia.com>
  Namjae Jeon <linkinjeon@kernel.org>
  Paolo Abeni <pabeni@redhat.com>
  Paulo Alcantara (SUSE) <pc@manguebit.com>
  Paulo Alcantara <pc@manguebit.com>
  Peter Zijlstra (Intel) <peterz@infradead.org>
  Philipp Zabel <p.zabel@pengutronix.de>
  Quan Nguyen <quan@os.amperecomputing.com>
  Rahul Rameshbabu <rrameshbabu@nvidia.com>
  Reinhard Speyerer <rspmn@arcor.de>
  Rouven Czerwinski <r.czerwinski@pengutronix.de>
  Saeed Mahameed <saeedm@mellanox.com>
  Saeed Mahameed <saeedm@nvidia.com>
  Sarthak Kukreti <sarthakkukreti@chromium.org>
  Sasha Levin <sashal@kernel.org>
  Seth Forshee <sforshee@kernel.org>
  Slark Xiao <slark_xiao@163.com>
  Steve French <stfrench@microsoft.com>
  Steven Rostedt (Google) <rostedt@goodmis.org>
  Su Hui <suhui@nfschina.com>
  Takashi Iwai <tiwai@suse.de>
  Thomas Gleixner <tglx@linutronix.de>
  Tony Lindgren <tony@atomide.com>
  Vlad Buslov <vladbu@nvidia.com>
  Wadim Egorov <w.egorov@phytec.de>
  Wei Yongjun <weiyongjun1@huawei.com>
  Wolfram Sang <wsa@kernel.org>
  Zhipeng Lu <alexious@zju.edu.cn>

jobs:
 build-amd64-xsm                                              pass    
 build-arm64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64                                                  pass    
 build-arm64                                                  pass    
 build-armhf                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-arm64-libvirt                                          pass    
 build-armhf-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-pvops                                            pass    
 build-arm64-pvops                                            pass    
 build-armhf-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-amd64-amd64-xl                                          pass    
 test-amd64-coresched-amd64-xl                                pass    
 test-arm64-arm64-xl                                          pass    
 test-armhf-armhf-xl                                          fail    
 test-amd64-i386-xl                                           pass    
 test-amd64-coresched-i386-xl                                 pass    
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm           pass    
 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm            pass    
 test-amd64-amd64-xl-qemut-stubdom-debianhvm-amd64-xsm        pass    
 test-amd64-i386-xl-qemut-stubdom-debianhvm-amd64-xsm         pass    
 test-amd64-amd64-xl-qemut-debianhvm-i386-xsm                 pass    
 test-amd64-i386-xl-qemut-debianhvm-i386-xsm                  pass    
 test-amd64-amd64-xl-qemuu-debianhvm-i386-xsm                 pass    
 test-amd64-i386-xl-qemuu-debianhvm-i386-xsm                  pass    
 test-amd64-amd64-libvirt-xsm                                 pass    
 test-arm64-arm64-libvirt-xsm                                 pass    
 test-amd64-i386-libvirt-xsm                                  pass    
 test-amd64-amd64-xl-xsm                                      pass    
 test-arm64-arm64-xl-xsm                                      pass    
 test-amd64-i386-xl-xsm                                       pass    
 test-amd64-amd64-qemuu-nested-amd                            fail    
 test-amd64-amd64-xl-pvhv2-amd                                pass    
 test-amd64-i386-qemut-rhel6hvm-amd                           pass    
 test-amd64-i386-qemuu-rhel6hvm-amd                           pass    
 test-amd64-amd64-dom0pvh-xl-amd                              pass    
 test-amd64-amd64-xl-qemut-debianhvm-amd64                    pass    
 test-amd64-i386-xl-qemut-debianhvm-amd64                     pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64                    pass    
 test-amd64-i386-xl-qemuu-debianhvm-amd64                     pass    
 test-amd64-i386-freebsd10-amd64                              pass    
 test-amd64-amd64-qemuu-freebsd11-amd64                       pass    
 test-amd64-amd64-qemuu-freebsd12-amd64                       pass    
 test-amd64-amd64-xl-qemuu-ovmf-amd64                         pass    
 test-amd64-i386-xl-qemuu-ovmf-amd64                          pass    
 test-amd64-amd64-xl-qemut-win7-amd64                         fail    
 test-amd64-i386-xl-qemut-win7-amd64                          fail    
 test-amd64-amd64-xl-qemuu-win7-amd64                         fail    
 test-amd64-i386-xl-qemuu-win7-amd64                          fail    
 test-amd64-amd64-xl-qemut-ws16-amd64                         fail    
 test-amd64-i386-xl-qemut-ws16-amd64                          fail    
 test-amd64-amd64-xl-qemuu-ws16-amd64                         fail    
 test-amd64-i386-xl-qemuu-ws16-amd64                          fail    
 test-armhf-armhf-xl-arndale                                  pass    
 test-amd64-amd64-examine-bios                                pass    
 test-amd64-i386-examine-bios                                 pass    
 test-amd64-amd64-xl-credit1                                  pass    
 test-arm64-arm64-xl-credit1                                  pass    
 test-armhf-armhf-xl-credit1                                  fail    
 test-amd64-amd64-xl-credit2                                  pass    
 test-arm64-arm64-xl-credit2                                  pass    
 test-armhf-armhf-xl-credit2                                  fail    
 test-amd64-amd64-xl-qemuu-dmrestrict-amd64-dmrestrict        pass    
 test-amd64-i386-xl-qemuu-dmrestrict-amd64-dmrestrict         pass    
 test-amd64-amd64-examine                                     pass    
 test-arm64-arm64-examine                                     pass    
 test-armhf-armhf-examine                                     pass    
 test-amd64-i386-examine                                      pass    
 test-amd64-i386-freebsd10-i386                               pass    
 test-amd64-amd64-qemuu-nested-intel                          pass    
 test-amd64-amd64-xl-pvhv2-intel                              pass    
 test-amd64-i386-qemut-rhel6hvm-intel                         pass    
 test-amd64-i386-qemuu-rhel6hvm-intel                         pass    
 test-amd64-amd64-dom0pvh-xl-intel                            pass    
 test-amd64-amd64-libvirt                                     pass    
 test-armhf-armhf-libvirt                                     pass    
 test-amd64-i386-libvirt                                      pass    
 test-amd64-amd64-xl-multivcpu                                pass    
 test-armhf-armhf-xl-multivcpu                                fail    
 test-amd64-amd64-pair                                        pass    
 test-amd64-i386-pair                                         pass    
 test-amd64-amd64-libvirt-pair                                pass    
 test-amd64-i386-libvirt-pair                                 pass    
 test-amd64-amd64-xl-pvshim                                   pass    
 test-amd64-i386-xl-pvshim                                    fail    
 test-amd64-amd64-pygrub                                      pass    
 test-armhf-armhf-libvirt-qcow2                               pass    
 test-amd64-amd64-xl-qcow2                                    fail    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-armhf-armhf-libvirt-raw                                 pass    
 test-amd64-i386-libvirt-raw                                  pass    
 test-amd64-amd64-xl-rtds                                     pass    
 test-armhf-armhf-xl-rtds                                     fail    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64-shadow             pass    
 test-amd64-i386-xl-qemuu-debianhvm-amd64-shadow              pass    
 test-amd64-amd64-xl-shadow                                   pass    
 test-amd64-i386-xl-shadow                                    pass    
 test-arm64-arm64-xl-thunderx                                 pass    
 test-amd64-amd64-examine-uefi                                pass    
 test-amd64-i386-examine-uefi                                 pass    
 test-amd64-amd64-libvirt-vhd                                 pass    
 test-arm64-arm64-xl-vhd                                      pass    
 test-armhf-armhf-xl-vhd                                      pass    
 test-amd64-i386-xl-vhd                                       pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Not pushing.

(No revision log; it would be 1652 lines long.)


From xen-devel-bounces@lists.xenproject.org Thu Jan 11 07:22:07 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 11 Jan 2024 07:22:07 +0000
Received: from list by lists.xenproject.org with outflank-mailman.665894.1036193 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNpO4-0001Ro-Bu; Thu, 11 Jan 2024 07:22:00 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 665894.1036193; Thu, 11 Jan 2024 07:22:00 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNpO4-0001Rh-8q; Thu, 11 Jan 2024 07:22:00 +0000
Received: by outflank-mailman (input) for mailman id 665894;
 Thu, 11 Jan 2024 07:21:58 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=YFj+=IV=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rNpO2-0001Rb-PF
 for xen-devel@lists.xenproject.org; Thu, 11 Jan 2024 07:21:58 +0000
Received: from mail-wm1-x32c.google.com (mail-wm1-x32c.google.com
 [2a00:1450:4864:20::32c])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 1a74c619-b052-11ee-98f0-6d05b1d4d9a1;
 Thu, 11 Jan 2024 08:21:57 +0100 (CET)
Received: by mail-wm1-x32c.google.com with SMTP id
 5b1f17b1804b1-40e60e1378eso1701225e9.0
 for <xen-devel@lists.xenproject.org>; Wed, 10 Jan 2024 23:21:57 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 v21-20020a05600c445500b0040e3bdff98asm4589894wmn.23.2024.01.10.23.21.56
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 10 Jan 2024 23:21:56 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 1a74c619-b052-11ee-98f0-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1704957717; x=1705562517; darn=lists.xenproject.org;
        h=content-transfer-encoding:autocrypt:subject:from:cc:to
         :content-language:user-agent:mime-version:date:message-id:from:to:cc
         :subject:date:message-id:reply-to;
        bh=M+5CGOukjfQO94V4R3Cj4aE/IhM5ucCz6YzI5SlI/Cg=;
        b=gLl0njn0yCqlsd6TsR9xKHK4BX9yyBUW0JHC/s+t1q4XccBQi7EuT1q8XZ7h5ccxC7
         4hXqRAl+HRuUmnpw75Ud1zg4Cpai+OgYEf3dGo98g7oBE8RwARJwrC/aX2RajMQVp/KB
         iP4VBlPmq3L11YRPIEKD6iD5y/JkU0LUEnR4qj7lO4D1Iz9UgrmsSacJNBSyzR/Fp0en
         BdLmEZ+WihtOQUJZ8nd1e4/ti5CAFeNjmuhxZHWp5LicqNKWsKHmdsL/lIC0B1nlhuRt
         cWnQiiurVARBVmi1zvh7S/5pbU3djDqWQBA006wJAMm3POHxcOYBXn7qf2lZuMn/rG86
         edZw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704957717; x=1705562517;
        h=content-transfer-encoding:autocrypt:subject:from:cc:to
         :content-language:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=M+5CGOukjfQO94V4R3Cj4aE/IhM5ucCz6YzI5SlI/Cg=;
        b=JpwnogHLSN5PzKlRbteZbjzYUWr5nfX2xvlG33MkeijFoWKKKRSM3XQjhCV7SAokN+
         uSMBxV/X93xJBiWXq/VB4FA4sQcSa2HuLtL8Hm0He/BUPe+r1GQ0XLJflUQ4E6E50hyV
         2p0uvUACSEPNSO7GHX0UyIjB516ZHk72P7Irl568qjLq/7fwHfGccP/6bUoX7FfGrwxb
         HnKqIE/YlEhYaslc3JoQuDprSFp9OKEHQEMlPigaMi4yy6QcR8RaB4hjSt29D5/HGyUf
         KcsBZZvj7P0rlj67V4BkGPPc6fFm7QtgMiBDm9cfncYAFeSnE7nKCsFSfcXQTZ89JY09
         g40w==
X-Gm-Message-State: AOJu0Yx0HqQMtwqbcayqlkX3LZN1eX/aXpYwd8rVjykjnyb7RZimwV9L
	j+/u/pug+ZAUTqM3yf2/BhNidYJKuoxQq6kbD6BRNjf9cQ==
X-Google-Smtp-Source: AGHT+IFkyYuMAsT4/HiJMCGUHgpiBSLBZEHHh4SHeaBfpFk1N3a0WRqN5rgewDg3ynbm8kmp631eDg==
X-Received: by 2002:a05:600c:518e:b0:40e:4e0f:3b2 with SMTP id fa14-20020a05600c518e00b0040e4e0f03b2mr139625wmb.5.1704957716863;
        Wed, 10 Jan 2024 23:21:56 -0800 (PST)
Message-ID: <5d6089a4-c597-49ce-b042-24f13922f581@suse.com>
Date: Thu, 11 Jan 2024 08:21:55 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Content-Language: en-US
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 George Dunlap <george.dunlap@citrix.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>
From: Jan Beulich <jbeulich@suse.com>
Subject: [PATCH 0/8] limit passing around of cpu_user_regs
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

Unlike (synchronous) exception handlers, interrupt handlers don't normally
have a need to know the outer context's register state. Similarly, the vast
majority of key handlers has no need for such.

1: keyhandler: don't pass cpu_user_regs around
2: IRQ: generalize [gs]et_irq_regs()
3: serial: drop serial_rx_fn's regs parameter
4: PV-shim: drop pv_console_rx()'s regs parameter
5: serial: drop serial_[rt]x_interrupt()'s regs parameter
6: IRQ: drop regs parameter from handler functions
7: x86/vPMU: drop regs parameter from interrupt functions
8: x86/APIC: drop regs parameter from direct vector handler functions

Jan


From xen-devel-bounces@lists.xenproject.org Thu Jan 11 07:24:17 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 11 Jan 2024 07:24:17 +0000
Received: from list by lists.xenproject.org with outflank-mailman.665898.1036203 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNpQG-00020D-Ob; Thu, 11 Jan 2024 07:24:16 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 665898.1036203; Thu, 11 Jan 2024 07:24:16 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNpQG-000206-Kt; Thu, 11 Jan 2024 07:24:16 +0000
Received: by outflank-mailman (input) for mailman id 665898;
 Thu, 11 Jan 2024 07:24:15 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=YFj+=IV=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rNpQF-000200-FB
 for xen-devel@lists.xenproject.org; Thu, 11 Jan 2024 07:24:15 +0000
Received: from mail-wr1-x42a.google.com (mail-wr1-x42a.google.com
 [2a00:1450:4864:20::42a])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 6abee138-b052-11ee-9b0f-b553b5be7939;
 Thu, 11 Jan 2024 08:24:12 +0100 (CET)
Received: by mail-wr1-x42a.google.com with SMTP id
 ffacd0b85a97d-3376555b756so2871906f8f.0
 for <xen-devel@lists.xenproject.org>; Wed, 10 Jan 2024 23:24:12 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 o10-20020a056000010a00b00336cbbf2e0fsm441141wrx.27.2024.01.10.23.24.11
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 10 Jan 2024 23:24:12 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 6abee138-b052-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1704957852; x=1705562652; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:references:cc:to
         :from:content-language:subject:user-agent:mime-version:date
         :message-id:from:to:cc:subject:date:message-id:reply-to;
        bh=0ec8vWmu/5aIAhFU+GtuouuNHSKMP58o3QH8ANpxtGg=;
        b=ONNAVtEf07iJts9lW9wgn7Bpn1MQpPFQFiKdqFXYmRbbKXtV6uhSmx9oM4oS5+qVrZ
         4xGG+IOnqb3+0EslsWnLAdOkH3P2IYkapwvOBLCktekSGoNYwHAdl/SSexNI6/fZ4Slj
         VuDoQLMsKdhcRhXJp7t/tEgRxFwHJvpl5yzj6addLE8yHI2pYBhB++PY1gq1eEelFynx
         Ye4kmIcR9nfOH8pp383PAGnDfa9TDCs1lddMrjLrrNmUcA9mjBceVivX5tLP2azl6Nrb
         H/mgRQ7rLMoFJueqBUs/j99RxbXBsTCU0hAGOcj3VpLLBOzn3rUACn5ULWMHTYHp8rk7
         y/Bw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704957852; x=1705562652;
        h=content-transfer-encoding:in-reply-to:autocrypt:references:cc:to
         :from:content-language:subject:user-agent:mime-version:date
         :message-id:x-gm-message-state:from:to:cc:subject:date:message-id
         :reply-to;
        bh=0ec8vWmu/5aIAhFU+GtuouuNHSKMP58o3QH8ANpxtGg=;
        b=r9Ie8ogk8lQpoZ0fsjvPb1U7jBrSqWMDSz8bLtUFOeVBNk9RQjVOw+4larspBPoKA0
         46kNQic/To5HuE237ODG/cNZuA8yP/WjX9tZdfwH11cJwC53ecwgwyYjzy4XK8CqNkgM
         Gz29fsA6NltPmGZcCkB+xcLLVF3AcC3c4A+O5iE6GqRMO00olAkfh++vOrLHzgvLA9zV
         38Q607+DsoDCG+ehvOYaWp9+l4IuMbHWcZw57TEeQ3A3bnv7GtZMro+iC0GQj6cEzqCi
         8l+MWBbd8pRYLQeYqXydBwsj+M6PRHbgblUFE9EJRRLBkzFEbD8J0lutQxSwBQTKrhXK
         Gg6Q==
X-Gm-Message-State: AOJu0YwowPaTtfQ0+D99hAWnuXbSkOyNFX6/pBDKGEmUaYT5AxpT5ulH
	AuH1CvanfyIZTxmgdrJ1iglsRPOZjCaOcKe0x828DViALQ==
X-Google-Smtp-Source: AGHT+IF1iJxaRdntkDF6jKFL3SB64XOqnl8kfYx8ByE0l/AFs6MuYV1rrBHuaqDcYD6+FxYvkPCG+Q==
X-Received: by 2002:adf:9bc6:0:b0:337:7ac9:7920 with SMTP id e6-20020adf9bc6000000b003377ac97920mr158295wrc.22.1704957852399;
        Wed, 10 Jan 2024 23:24:12 -0800 (PST)
Message-ID: <2b7dd916-9e5e-4226-94d5-5439d403644d@suse.com>
Date: Thu, 11 Jan 2024 08:24:11 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: [PATCH 1/8] limit passing around of cpu_user_regs
Content-Language: en-US
From: Jan Beulich <jbeulich@suse.com>
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 George Dunlap <george.dunlap@citrix.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>
References: <5d6089a4-c597-49ce-b042-24f13922f581@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <5d6089a4-c597-49ce-b042-24f13922f581@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

There are exactly two handlers which care about the registers. Have
handle_keypress() make the pointer available via a per-CPU variable,
thus eliminating the need to pass it to all IRQ key handlers, making
sure that a console-invoked key's handling can still nest inside a
sysctl-invoked one's.

Signed-off-by: Jan Beulich <jbeulich@suse.com>
---
Subsequently we may want to eliminate the fn/irq_fn union as well,
along with dropping the now redundant irq_keyhandler_fn_t.

--- a/xen/common/keyhandler.c
+++ b/xen/common/keyhandler.c
@@ -80,6 +80,7 @@ static void cf_check keypress_action(voi
 }
 
 static DECLARE_TASKLET(keypress_tasklet, keypress_action, NULL);
+static DEFINE_PER_CPU(struct cpu_user_regs *, keypress_regs);
 
 void handle_keypress(unsigned char key, struct cpu_user_regs *regs)
 {
@@ -91,7 +92,16 @@ void handle_keypress(unsigned char key,
     if ( !in_irq() || h->irq_callback )
     {
         console_start_log_everything();
-        h->irq_callback ? h->irq_fn(key, regs) : h->fn(key);
+        if ( h->irq_callback )
+        {
+            struct cpu_user_regs *old = this_cpu(keypress_regs);
+
+            this_cpu(keypress_regs) = regs;
+            h->irq_fn(key);
+            this_cpu(keypress_regs) = old;
+        }
+        else
+            h->fn(key);
         console_end_log_everything();
     }
     else
@@ -171,8 +181,7 @@ void cf_check dump_execstate(struct cpu_
     watchdog_enable();
 }
 
-static void cf_check dump_registers(
-    unsigned char key, struct cpu_user_regs *regs)
+static void cf_check dump_registers(unsigned char key)
 {
     unsigned int cpu;
 
@@ -185,8 +194,8 @@ static void cf_check dump_registers(
     cpumask_copy(&dump_execstate_mask, &cpu_online_map);
 
     /* Get local execution state out immediately, in case we get stuck. */
-    if ( regs )
-        dump_execstate(regs);
+    if ( this_cpu(keypress_regs) )
+        dump_execstate(this_cpu(keypress_regs));
     else
         run_in_exception_handler(dump_execstate);
 
@@ -248,8 +257,7 @@ static void cf_check dump_hwdom_register
     }
 }
 
-static void cf_check reboot_machine(
-    unsigned char key, struct cpu_user_regs *regs)
+static void cf_check reboot_machine(unsigned char key)
 {
     printk("'%c' pressed -> rebooting machine\n", key);
     machine_restart(0);
@@ -477,8 +485,7 @@ static void cf_check run_all_nonirq_keyh
 static DECLARE_TASKLET(run_all_keyhandlers_tasklet,
                        run_all_nonirq_keyhandlers, NULL);
 
-static void cf_check run_all_keyhandlers(
-    unsigned char key, struct cpu_user_regs *regs)
+static void cf_check run_all_keyhandlers(unsigned char key)
 {
     struct keyhandler *h;
     unsigned int k;
@@ -494,7 +501,7 @@ static void cf_check run_all_keyhandlers
         if ( !h->irq_fn || !h->diagnostic || !h->irq_callback )
             continue;
         printk("[%c: %s]\n", k, h->desc);
-        h->irq_fn(k, regs);
+        h->irq_fn(k);
     }
 
     watchdog_enable();
@@ -511,17 +518,16 @@ static void cf_check do_debugger_trap_fa
     barrier();
 }
 
-static void cf_check do_debug_key(unsigned char key, struct cpu_user_regs *regs)
+static void cf_check do_debug_key(unsigned char key)
 {
     printk("'%c' pressed -> trapping into debugger\n", key);
-    if ( regs )
-        do_debugger_trap_fatal(regs);
+    if ( this_cpu(keypress_regs) )
+        do_debugger_trap_fatal(this_cpu(keypress_regs));
     else
         run_in_exception_handler(do_debugger_trap_fatal);
 }
 
-static void cf_check do_toggle_alt_key(
-    unsigned char key, struct cpu_user_regs *regs)
+static void cf_check do_toggle_alt_key(unsigned char key)
 {
     alt_key_handling = !alt_key_handling;
     printk("'%c' pressed -> using %s key handling\n", key,
--- a/xen/drivers/char/console.c
+++ b/xen/drivers/char/console.c
@@ -280,7 +280,7 @@ static int *__read_mostly upper_thresh_a
 static int *__read_mostly lower_thresh_adj = &xenlog_lower_thresh;
 static const char *__read_mostly thresh_adj = "standard";
 
-static void cf_check do_toggle_guest(unsigned char key, struct cpu_user_regs *regs)
+static void cf_check do_toggle_guest(unsigned char key)
 {
     if ( upper_thresh_adj == &xenlog_upper_thresh )
     {
@@ -307,13 +307,13 @@ static void do_adj_thresh(unsigned char
            loglvl_str(*upper_thresh_adj));
 }
 
-static void cf_check do_inc_thresh(unsigned char key, struct cpu_user_regs *regs)
+static void cf_check do_inc_thresh(unsigned char key)
 {
     ++*lower_thresh_adj;
     do_adj_thresh(key);
 }
 
-static void cf_check do_dec_thresh(unsigned char key, struct cpu_user_regs *regs)
+static void cf_check do_dec_thresh(unsigned char key)
 {
     if ( *lower_thresh_adj )
         --*lower_thresh_adj;
--- a/xen/include/xen/keyhandler.h
+++ b/xen/include/xen/keyhandler.h
@@ -24,9 +24,7 @@ typedef void (keyhandler_fn_t)(unsigned
  *
  * Called in hardirq context with interrupts disabled.
  */
-struct cpu_user_regs;
-typedef void (irq_keyhandler_fn_t)(unsigned char key,
-                                   struct cpu_user_regs *regs);
+typedef void irq_keyhandler_fn_t(unsigned char key);
 
 /* Initialize keytable with default handlers. */
 void initialize_keytable(void);
@@ -46,6 +44,7 @@ void register_irq_keyhandler(unsigned ch
                              bool diagnostic);
 
 /* Inject a keypress into the key-handling subsystem. */
+struct cpu_user_regs;
 extern void handle_keypress(unsigned char key, struct cpu_user_regs *regs);
 
 enum crash_reason {



From xen-devel-bounces@lists.xenproject.org Thu Jan 11 07:25:03 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 11 Jan 2024 07:25:03 +0000
Received: from list by lists.xenproject.org with outflank-mailman.665901.1036213 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNpR1-0002VA-1G; Thu, 11 Jan 2024 07:25:03 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 665901.1036213; Thu, 11 Jan 2024 07:25:03 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNpR0-0002V3-UE; Thu, 11 Jan 2024 07:25:02 +0000
Received: by outflank-mailman (input) for mailman id 665901;
 Thu, 11 Jan 2024 07:25:01 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=YFj+=IV=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rNpQz-000200-HB
 for xen-devel@lists.xenproject.org; Thu, 11 Jan 2024 07:25:01 +0000
Received: from mail-wm1-x334.google.com (mail-wm1-x334.google.com
 [2a00:1450:4864:20::334])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 85e7ffb2-b052-11ee-9b0f-b553b5be7939;
 Thu, 11 Jan 2024 08:24:57 +0100 (CET)
Received: by mail-wm1-x334.google.com with SMTP id
 5b1f17b1804b1-40e5521dab6so17014645e9.1
 for <xen-devel@lists.xenproject.org>; Wed, 10 Jan 2024 23:24:58 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 o10-20020a056000010a00b00336cbbf2e0fsm441141wrx.27.2024.01.10.23.24.57
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 10 Jan 2024 23:24:57 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 85e7ffb2-b052-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1704957898; x=1705562698; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:references:cc:to
         :from:content-language:subject:user-agent:mime-version:date
         :message-id:from:to:cc:subject:date:message-id:reply-to;
        bh=TMrbBvkZhskVDNFDVa776VDzvxg6i1Meo4j2L0PFpIY=;
        b=f9q3IunMP2mNKM30IDclIprKiUzhZkNca2qxAbspxbxWRajt3IPU010KerhZEhhMD4
         BdR/R5RUiQwD6YR/5z+ieDu/PEINUSRm4pKg8Kr5Nwgw1mq7bKnqZk5TjGqBD6YMcJxB
         NVrAgJHlY1fDjMwnCuI3wWHl2nl3JbaRrQDrWSj3Y3iSdESpJv8qUsTZmHH+BcZRj7Lb
         GbT1lrSpPurx1HrnJM1jxnRPWl9g292XvZ27azWwhc0JvJ0VxE5w/m0aX98yPYTE9NUZ
         9qWuGo/wsn7X99n6AQweVfdU2VONv5qDR6y5VsMR2jXMLMEcHLbAke5eezxkcSyMeTCk
         lenw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704957898; x=1705562698;
        h=content-transfer-encoding:in-reply-to:autocrypt:references:cc:to
         :from:content-language:subject:user-agent:mime-version:date
         :message-id:x-gm-message-state:from:to:cc:subject:date:message-id
         :reply-to;
        bh=TMrbBvkZhskVDNFDVa776VDzvxg6i1Meo4j2L0PFpIY=;
        b=FfZ/JxGSRLlIexN+PcKGViVZjspXxkffOUlnilKFmLp48HBjRrq17q/KP1qr7K1f5W
         /tt8khXEl+kbaE9l+DcQSh7lN5oBU3dNTWlQqiLxAk1IYNRXt7ZzyG3jNC+YBcjvTkfP
         ejffNHog9zYyJLwHSBuXUK+/+tmrG+WbU8gv/0IC80+okQFm/tub8IdislHxcBJ7xHMu
         wPJr0vFcf4xuFj5mMD9DUlANbaScGS9X3vKH7+XnH8+mcSjwlo7DdsCNMz2nf29YQZxr
         +IW0uSh+ePIBosaca4cRNI8k1TgnpPq29lA7uztlubJ5vOysIpnPBVUm7YixPJk1JEIy
         dyUA==
X-Gm-Message-State: AOJu0YxarOeydYL76htBlcc5O1fL9Pcm2CySvX9OiN4w2a0Jt1A2Fpm8
	kfbnTKsIuzDMGczQUPRHHf6ZeC7gJuUNdvsI7sYSBmL/Rw==
X-Google-Smtp-Source: AGHT+IGeUfAWvi25VR9asNnMH2taWeWh7VmwFy1OrMb8DuOS6N7UX272NqHrAYOJ4l5AI/xKdCw5Bg==
X-Received: by 2002:a05:600c:3145:b0:40e:499d:5ce2 with SMTP id h5-20020a05600c314500b0040e499d5ce2mr145295wmo.1.1704957897927;
        Wed, 10 Jan 2024 23:24:57 -0800 (PST)
Message-ID: <086ab61f-fa9d-4b2e-b8b7-5a4d06effe5a@suse.com>
Date: Thu, 11 Jan 2024 08:24:57 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: [PATCH 2/8] IRQ: drop register parameter from handler functions
Content-Language: en-US
From: Jan Beulich <jbeulich@suse.com>
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 George Dunlap <george.dunlap@citrix.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Bertrand Marquis <bertrand.marquis@arm.com>,
 Michal Orzel <michal.orzel@amd.com>
References: <5d6089a4-c597-49ce-b042-24f13922f581@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <5d6089a4-c597-49ce-b042-24f13922f581@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

It's simply not needed anymore. Note how Linux made this change many
years ago already, in 2.6.19 (late 2006, see [1]).

Signed-off-by: Jan Beulich <jbeulich@suse.com>

[1] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit?id=7d12e780e003f93433d49ce78cfedf4b4c52adc5

--- a/xen/arch/arm/gic.c
+++ b/xen/arch/arm/gic.c
@@ -397,7 +397,7 @@ void gic_interrupt(struct cpu_user_regs
     } while (1);
 }
 
-static void maintenance_interrupt(int irq, void *dev_id, struct cpu_user_regs *regs)
+static void maintenance_interrupt(int irq, void *dev_id)
 {
     /*
      * This is a dummy interrupt handler.
--- a/xen/arch/arm/irq.c
+++ b/xen/arch/arm/irq.c
@@ -182,8 +182,7 @@ void irq_set_affinity(struct irq_desc *d
 }
 
 int request_irq(unsigned int irq, unsigned int irqflags,
-                void (*handler)(int irq, void *dev_id,
-                                struct cpu_user_regs *regs),
+                void (*handler)(int irq, void *dev_id),
                 const char *devname, void *dev_id)
 {
     struct irqaction *action;
@@ -276,7 +275,7 @@ void do_IRQ(struct cpu_user_regs *regs,
 
     do
     {
-        action->handler(irq, action->dev_id, regs);
+        action->handler(irq, action->dev_id);
         action = action->next;
     } while ( action );
 
--- a/xen/arch/arm/time.c
+++ b/xen/arch/arm/time.c
@@ -241,7 +241,7 @@ int reprogram_timer(s_time_t timeout)
 }
 
 /* Handle the firing timer */
-static void htimer_interrupt(int irq, void *dev_id, struct cpu_user_regs *regs)
+static void htimer_interrupt(int irq, void *dev_id)
 {
     if ( unlikely(!(READ_SYSREG(CNTHP_CTL_EL2) & CNTx_CTL_PENDING)) )
         return;
@@ -255,7 +255,7 @@ static void htimer_interrupt(int irq, vo
     WRITE_SYSREG(0, CNTHP_CTL_EL2);
 }
 
-static void vtimer_interrupt(int irq, void *dev_id, struct cpu_user_regs *regs)
+static void vtimer_interrupt(int irq, void *dev_id)
 {
     /*
      * Edge-triggered interrupts can be used for the virtual timer. Even
--- a/xen/arch/x86/irq.c
+++ b/xen/arch/x86/irq.c
@@ -962,7 +962,7 @@ static int __init cf_check irq_ratelimit
 __initcall(irq_ratelimit_init);
 
 int __init request_irq(unsigned int irq, unsigned int irqflags,
-        void (*handler)(int irq, void *dev_id, struct cpu_user_regs *regs),
+        void (*handler)(int irq, void *dev_id),
         const char * devname, void *dev_id)
 {
     struct irqaction * action;
@@ -2009,7 +2009,7 @@ void do_IRQ(struct cpu_user_regs *regs)
         spin_unlock_irq(&desc->lock);
 
         tsc_in = tb_init_done ? get_cycles() : 0;
-        action->handler(irq, action->dev_id, regs);
+        action->handler(irq, action->dev_id);
         TRACE_3D(TRC_HW_IRQ_HANDLED, irq, tsc_in, get_cycles());
 
         spin_lock_irq(&desc->lock);
--- a/xen/arch/x86/hpet.c
+++ b/xen/arch/x86/hpet.c
@@ -237,8 +237,7 @@ again:
     }
 }
 
-static void cf_check hpet_interrupt_handler(
-    int irq, void *data, struct cpu_user_regs *regs)
+static void cf_check hpet_interrupt_handler(int irq, void *data)
 {
     struct hpet_event_channel *ch = data;
 
--- a/xen/arch/x86/time.c
+++ b/xen/arch/x86/time.c
@@ -198,8 +198,7 @@ static void smp_send_timer_broadcast_ipi
     }
 }
 
-static void cf_check timer_interrupt(
-    int irq, void *dev_id, struct cpu_user_regs *regs)
+static void cf_check timer_interrupt(int irq, void *dev_id)
 {
     ASSERT(local_irq_is_enabled());
 
--- a/xen/common/irq.c
+++ b/xen/common/irq.c
@@ -29,7 +29,7 @@ int init_one_irq_desc(struct irq_desc *d
     return err;
 }
 
-void cf_check no_action(int cpl, void *dev_id, struct cpu_user_regs *regs)
+void cf_check no_action(int cpl, void *dev_id)
 {
 }
 
--- a/xen/drivers/char/cadence-uart.c
+++ b/xen/drivers/char/cadence-uart.c
@@ -40,7 +40,7 @@ static struct cuart {
 #define cuart_read(uart, off)           readl((uart)->regs + (off))
 #define cuart_write(uart, off,val)      writel((val), (uart)->regs + (off))
 
-static void cuart_interrupt(int irq, void *data, struct cpu_user_regs *regs)
+static void cuart_interrupt(int irq, void *data)
 {
     struct serial_port *port = data;
     struct cuart *uart = port->uart;
--- a/xen/drivers/char/exynos4210-uart.c
+++ b/xen/drivers/char/exynos4210-uart.c
@@ -45,7 +45,7 @@ static struct exynos4210_uart {
 #define exynos4210_read(uart, off)          readl((uart)->regs + off)
 #define exynos4210_write(uart, off, val)    writel(val, (uart->regs) + off)
 
-static void exynos4210_uart_interrupt(int irq, void *data, struct cpu_user_regs *regs)
+static void exynos4210_uart_interrupt(int irq, void *data)
 {
     struct serial_port *port = data;
     struct exynos4210_uart *uart = port->uart;
--- a/xen/drivers/char/imx-lpuart.c
+++ b/xen/drivers/char/imx-lpuart.c
@@ -37,8 +37,7 @@ static struct imx_lpuart {
     struct vuart_info vuart;
 } imx8_com;
 
-static void imx_lpuart_interrupt(int irq, void *data,
-                                 struct cpu_user_regs *regs)
+static void imx_lpuart_interrupt(int irq, void *data)
 {
     struct serial_port *port = data;
     struct imx_lpuart *uart = port->uart;
--- a/xen/drivers/char/meson-uart.c
+++ b/xen/drivers/char/meson-uart.c
@@ -61,8 +61,7 @@ static struct meson_uart {
     struct vuart_info vuart;
 } meson_com;
 
-static void meson_uart_interrupt(int irq, void *data,
-                                 struct cpu_user_regs *regs)
+static void meson_uart_interrupt(int irq, void *data)
 {
     struct serial_port *port = data;
     struct meson_uart *uart = port->uart;
--- a/xen/drivers/char/mvebu-uart.c
+++ b/xen/drivers/char/mvebu-uart.c
@@ -67,8 +67,7 @@ static struct mvebu3700_uart {
 #define mvebu3700_read(uart, off)           readl((uart)->regs + (off))
 #define mvebu3700_write(uart, off, val)     writel(val, (uart)->regs + (off))
 
-static void mvebu3700_uart_interrupt(int irq, void *data,
-                                     struct cpu_user_regs *regs)
+static void mvebu3700_uart_interrupt(int irq, void *data)
 {
     struct serial_port *port = data;
     struct mvebu3700_uart *uart = port->uart;
--- a/xen/drivers/char/ns16550.c
+++ b/xen/drivers/char/ns16550.c
@@ -175,8 +175,7 @@ static void handle_dw_usr_busy_quirk(str
     }
 }
 
-static void cf_check ns16550_interrupt(
-    int irq, void *dev_id, struct cpu_user_regs *regs)
+static void cf_check ns16550_interrupt(int irq, void *dev_id)
 {
     struct serial_port *port = dev_id;
     struct ns16550 *uart = port->uart;
--- a/xen/drivers/char/omap-uart.c
+++ b/xen/drivers/char/omap-uart.c
@@ -59,7 +59,7 @@ static struct omap_uart {
     struct vuart_info vuart;
 } omap_com = {0};
 
-static void omap_uart_interrupt(int irq, void *data, struct cpu_user_regs *regs)
+static void omap_uart_interrupt(int irq, void *data)
 {
     struct serial_port *port = data;
     struct omap_uart *uart = port->uart;
--- a/xen/drivers/char/pl011.c
+++ b/xen/drivers/char/pl011.c
@@ -82,7 +82,7 @@ static unsigned int pl011_intr_status(st
     return (pl011_read(uart, RIS) & pl011_read(uart, IMSC));
 }
 
-static void pl011_interrupt(int irq, void *data, struct cpu_user_regs *regs)
+static void pl011_interrupt(int irq, void *data)
 {
     struct serial_port *port = data;
     struct pl011 *uart = port->uart;
--- a/xen/drivers/char/scif-uart.c
+++ b/xen/drivers/char/scif-uart.c
@@ -102,7 +102,7 @@ static const struct port_params port_par
     },
 };
 
-static void scif_uart_interrupt(int irq, void *data, struct cpu_user_regs *regs)
+static void scif_uart_interrupt(int irq, void *data)
 {
     struct serial_port *port = data;
     struct scif_uart *uart = port->uart;
--- a/xen/drivers/passthrough/amd/iommu_init.c
+++ b/xen/drivers/passthrough/amd/iommu_init.c
@@ -718,8 +718,7 @@ static void cf_check do_amd_iommu_irq(vo
 
 static DECLARE_SOFTIRQ_TASKLET(amd_iommu_irq_tasklet, do_amd_iommu_irq, NULL);
 
-static void cf_check iommu_interrupt_handler(
-    int irq, void *dev_id, struct cpu_user_regs *regs)
+static void cf_check iommu_interrupt_handler(int irq, void *dev_id)
 {
     unsigned long flags;
     struct amd_iommu *iommu = dev_id;
--- a/xen/drivers/passthrough/arm/smmu.c
+++ b/xen/drivers/passthrough/arm/smmu.c
@@ -1097,16 +1097,14 @@ static irqreturn_t arm_smmu_global_fault
 }
 
 /* Xen: Interrupt handlers wrapper */
-static void arm_smmu_context_fault_xen(int irq, void *dev,
-				       struct cpu_user_regs *regs)
+static void arm_smmu_context_fault_xen(int irq, void *dev)
 {
 	arm_smmu_context_fault(irq, dev);
 }
 
 #define arm_smmu_context_fault arm_smmu_context_fault_xen
 
-static void arm_smmu_global_fault_xen(int irq, void *dev,
-				      struct cpu_user_regs *regs)
+static void arm_smmu_global_fault_xen(int irq, void *dev)
 {
 	arm_smmu_global_fault(irq, dev);
 }
--- a/xen/drivers/passthrough/arm/smmu-v3.c
+++ b/xen/drivers/passthrough/arm/smmu-v3.c
@@ -880,8 +880,7 @@ static void arm_smmu_priq_tasklet(void *
 
 static int arm_smmu_device_disable(struct arm_smmu_device *smmu);
 
-static void arm_smmu_gerror_handler(int irq, void *dev,
-				struct cpu_user_regs *regs)
+static void arm_smmu_gerror_handler(int irq, void *dev)
 {
 	u32 gerror, gerrorn, active;
 	struct arm_smmu_device *smmu = dev;
@@ -926,8 +925,7 @@ static void arm_smmu_gerror_handler(int
 	writel(gerror, smmu->base + ARM_SMMU_GERRORN);
 }
 
-static void arm_smmu_combined_irq_handler(int irq, void *dev,
-				struct cpu_user_regs *regs)
+static void arm_smmu_combined_irq_handler(int irq, void *dev)
 {
 	struct arm_smmu_device *smmu = dev;
 
@@ -945,16 +943,14 @@ static void arm_smmu_combined_irq_taskle
 		arm_smmu_priq_tasklet(dev);
 }
 
-static void arm_smmu_evtq_irq_tasklet(int irq, void *dev,
-				struct cpu_user_regs *regs)
+static void arm_smmu_evtq_irq_tasklet(int irq, void *dev)
 {
 	struct arm_smmu_device *smmu = dev;
 
 	tasklet_schedule(&(smmu->evtq_irq_tasklet));
 }
 
-static void arm_smmu_priq_irq_tasklet(int irq, void *dev,
-				struct cpu_user_regs *regs)
+static void arm_smmu_priq_irq_tasklet(int irq, void *dev)
 {
 	struct arm_smmu_device *smmu = dev;
 
--- a/xen/drivers/passthrough/vtd/iommu.c
+++ b/xen/drivers/passthrough/vtd/iommu.c
@@ -1119,8 +1119,7 @@ static void cf_check do_iommu_page_fault
         __do_iommu_page_fault(drhd->iommu);
 }
 
-static void cf_check iommu_page_fault(
-    int irq, void *dev_id, struct cpu_user_regs *regs)
+static void cf_check iommu_page_fault(int irq, void *dev_id)
 {
     /*
      * Just flag the tasklet as runnable. This is fine, according to VT-d
--- a/xen/include/xen/irq.h
+++ b/xen/include/xen/irq.h
@@ -18,7 +18,7 @@
     ASSERT(!in_irq() && (local_irq_is_enabled() || num_online_cpus() <= 1))
 
 struct irqaction {
-    void (*handler)(int irq, void *dev_id, struct cpu_user_regs *regs);
+    void (*handler)(int irq, void *dev_id);
     const char *name;
     void *dev_id;
     bool free_on_release;
@@ -119,12 +119,11 @@ extern int setup_irq(unsigned int irq, u
                      struct irqaction *new);
 extern void release_irq(unsigned int irq, const void *dev_id);
 extern int request_irq(unsigned int irq, unsigned int irqflags,
-               void (*handler)(int irq, void *dev_id,
-                     struct cpu_user_regs *regs),
+               void (*handler)(int irq, void *dev_id),
                const char *devname, void *dev_id);
 
 extern hw_irq_controller no_irq_type;
-void cf_check no_action(int cpl, void *dev_id, struct cpu_user_regs *regs);
+void cf_check no_action(int cpl, void *dev_id);
 unsigned int cf_check irq_startup_none(struct irq_desc *desc);
 void cf_check irq_actor_none(struct irq_desc *desc);
 #define irq_shutdown_none irq_actor_none



From xen-devel-bounces@lists.xenproject.org Thu Jan 11 07:25:57 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 11 Jan 2024 07:25:57 +0000
Received: from list by lists.xenproject.org with outflank-mailman.665907.1036223 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNpRs-00034o-E9; Thu, 11 Jan 2024 07:25:56 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 665907.1036223; Thu, 11 Jan 2024 07:25:56 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNpRs-00034h-Ao; Thu, 11 Jan 2024 07:25:56 +0000
Received: by outflank-mailman (input) for mailman id 665907;
 Thu, 11 Jan 2024 07:25:55 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=YFj+=IV=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rNpRr-00034Z-Nk
 for xen-devel@lists.xenproject.org; Thu, 11 Jan 2024 07:25:55 +0000
Received: from mail-lj1-x22f.google.com (mail-lj1-x22f.google.com
 [2a00:1450:4864:20::22f])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id a7fe86f9-b052-11ee-98f0-6d05b1d4d9a1;
 Thu, 11 Jan 2024 08:25:54 +0100 (CET)
Received: by mail-lj1-x22f.google.com with SMTP id
 38308e7fff4ca-2ccbc328744so60129541fa.3
 for <xen-devel@lists.xenproject.org>; Wed, 10 Jan 2024 23:25:54 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 o10-20020a056000010a00b00336cbbf2e0fsm441141wrx.27.2024.01.10.23.25.53
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 10 Jan 2024 23:25:54 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: a7fe86f9-b052-11ee-98f0-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1704957954; x=1705562754; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:references:cc:to
         :from:content-language:subject:user-agent:mime-version:date
         :message-id:from:to:cc:subject:date:message-id:reply-to;
        bh=2kKucQeG9hzCGGVi5VOoQwoW+K7wlDclKUZkgMvdu4E=;
        b=P9JwASPq42J3f3OERQWWicQ9bPcc2MSyXzRXVe/q53QzuNJd+Jzu2Lq/tR+sCtY0HH
         M3IYmukj0s6hNEavp4e5XSf7DQPwHOnJdpuB4JeGeNnlbvuMlLTUZXadTfC1Leo2f2jx
         rZhVkU0SUFEDnndk5zJMOBJ4tBu88UwNPXPqk4+tHszv5KZPLHZ9wQU/WD0YWFxuaBtc
         SbRkmrqF9JaJdxGO8k91K49Pa5KqsWTD9NkIVcyccaIgv8FNAC5krT6Ql44pMNaJR3v3
         FDyGeSPNuDOWcur7/g3EyfehdiV1FgxfcGTelU/yExP66Nlngb2cVLvQvhZ2iR+gQalF
         wxdw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704957954; x=1705562754;
        h=content-transfer-encoding:in-reply-to:autocrypt:references:cc:to
         :from:content-language:subject:user-agent:mime-version:date
         :message-id:x-gm-message-state:from:to:cc:subject:date:message-id
         :reply-to;
        bh=2kKucQeG9hzCGGVi5VOoQwoW+K7wlDclKUZkgMvdu4E=;
        b=q3xV/3MSi92rWvEYyNpKkDkbGBM6TFTmCKREzYYo442gFxcrF7OGQwAtvAiTJXkdOn
         HnrGI/orfGnmxYUDqvvDx0/dlm/W8Fs53zHC3cPgOwgKvZZEco5MzYss+ReBxC70Ki6S
         Z3cDC61lumHHXkdH6lCfx3FMIRgxJOeo4i6Z7/hLx1NicrYBKG+2GxbdHii6+XfCcsy+
         g6xkWKrM9m9BsD4ZwztK9HOVQw/RbDgu653oraZ7C4gif0/QeQzyK6Vd5UjpgQtWysNh
         9u1uAi9/MM1h5bXTGJA1Shyk+RWjiko9+d/dFihLx+BDshbWHBYu4kOgA7Mm1pPIbVNB
         o2og==
X-Gm-Message-State: AOJu0YywSOaJjq+lE0W04Hx5bbcpW2ehQGMSGrkw7aLmC3QtJvL0JB2p
	8IWGDN2A/bFERHoRsbRqHAvPH4+WGPoj44X2MMXCRYntEQ==
X-Google-Smtp-Source: AGHT+IF4liWdDvfwb1UVGsXXM5DbkozxfiiAy6C/RW1K8AXp6tqlZPfz89MnEWTGaPWetzBiAJsHdg==
X-Received: by 2002:a05:651c:204f:b0:2cc:78c5:7ffa with SMTP id t15-20020a05651c204f00b002cc78c57ffamr119364ljo.7.1704957954283;
        Wed, 10 Jan 2024 23:25:54 -0800 (PST)
Message-ID: <9ab12fd0-4b71-4ef7-9ab4-0ab38a4c94c6@suse.com>
Date: Thu, 11 Jan 2024 08:25:53 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: [PATCH 3/8] serial: drop serial_rx_fn's regs parameter
Content-Language: en-US
From: Jan Beulich <jbeulich@suse.com>
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 George Dunlap <george.dunlap@citrix.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>
References: <5d6089a4-c597-49ce-b042-24f13922f581@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <5d6089a4-c597-49ce-b042-24f13922f581@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

In the one place where it's needed, get_irq_regs() can be used instead.
This is in preparation of dropping the register parameters from IRQ
handler functions.

Signed-off-by: Jan Beulich <jbeulich@suse.com>

--- a/xen/drivers/char/console.c
+++ b/xen/drivers/char/console.c
@@ -527,12 +527,12 @@ static void switch_serial_input(void)
     printk("\n");
 }
 
-static void __serial_rx(char c, struct cpu_user_regs *regs)
+static void __serial_rx(char c)
 {
     switch ( console_rx )
     {
     case 0:
-        return handle_keypress(c, regs);
+        return handle_keypress(c, get_irq_regs());
 
     case 1:
         /*
@@ -579,7 +579,7 @@ static void __serial_rx(char c, struct c
 #endif
 }
 
-static void cf_check serial_rx(char c, struct cpu_user_regs *regs)
+static void cf_check serial_rx(char c)
 {
     static int switch_code_count = 0;
 
@@ -595,10 +595,10 @@ static void cf_check serial_rx(char c, s
     }
 
     for ( ; switch_code_count != 0; switch_code_count-- )
-        __serial_rx(switch_code, regs);
+        __serial_rx(switch_code);
 
     /* Finally process the just-received character. */
-    __serial_rx(c, regs);
+    __serial_rx(c);
 }
 
 static void cf_check notify_dom0_con_ring(void *unused)
--- a/xen/drivers/char/serial.c
+++ b/xen/drivers/char/serial.c
@@ -68,7 +68,7 @@ void serial_rx_interrupt(struct serial_p
     spin_unlock_irqrestore(&port->rx_lock, flags);
 
     if ( fn != NULL )
-        (*fn)(c & 0x7f, regs);
+        fn(c & 0x7f);
 }
 
 void serial_tx_interrupt(struct serial_port *port, struct cpu_user_regs *regs)
--- a/xen/drivers/char/xen_pv_console.c
+++ b/xen/drivers/char/xen_pv_console.c
@@ -118,7 +118,7 @@ size_t pv_console_rx(struct cpu_user_reg
     {
         c = cons_ring->in[MASK_XENCONS_IDX(cons++, cons_ring->in)];
         if ( cons_rx_handler )
-            cons_rx_handler(c, regs);
+            cons_rx_handler(c);
         recv++;
     }
 
--- a/xen/include/xen/serial.h
+++ b/xen/include/xen/serial.h
@@ -15,7 +15,7 @@
 struct cpu_user_regs;
 
 /* Register a character-receive hook on the specified COM port. */
-typedef void (*serial_rx_fn)(char c, struct cpu_user_regs *regs);
+typedef void (*serial_rx_fn)(char c);
 void serial_set_rx_handler(int handle, serial_rx_fn fn);
 
 /* Number of characters we buffer for a polling receiver. */



From xen-devel-bounces@lists.xenproject.org Thu Jan 11 07:26:27 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 11 Jan 2024 07:26:27 +0000
Received: from list by lists.xenproject.org with outflank-mailman.665912.1036233 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNpSN-0003ZN-Le; Thu, 11 Jan 2024 07:26:27 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 665912.1036233; Thu, 11 Jan 2024 07:26:27 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNpSN-0003ZG-Iz; Thu, 11 Jan 2024 07:26:27 +0000
Received: by outflank-mailman (input) for mailman id 665912;
 Thu, 11 Jan 2024 07:26:26 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=YFj+=IV=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rNpSM-00034Z-E0
 for xen-devel@lists.xenproject.org; Thu, 11 Jan 2024 07:26:26 +0000
Received: from mail-wr1-x42a.google.com (mail-wr1-x42a.google.com
 [2a00:1450:4864:20::42a])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id ba673b25-b052-11ee-98f0-6d05b1d4d9a1;
 Thu, 11 Jan 2024 08:26:25 +0100 (CET)
Received: by mail-wr1-x42a.google.com with SMTP id
 ffacd0b85a97d-336c8ab0b20so4433520f8f.1
 for <xen-devel@lists.xenproject.org>; Wed, 10 Jan 2024 23:26:25 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 o10-20020a056000010a00b00336cbbf2e0fsm441141wrx.27.2024.01.10.23.26.24
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 10 Jan 2024 23:26:25 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: ba673b25-b052-11ee-98f0-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1704957985; x=1705562785; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:references:cc:to
         :from:content-language:subject:user-agent:mime-version:date
         :message-id:from:to:cc:subject:date:message-id:reply-to;
        bh=zoKC8ochUFPTshQ5L/IkWmgj0imM/XqiSRmWYZZF9pU=;
        b=dTn/ntqgsgEiCOKf2nr4uMQOVIJnQu/zf9UmQB7x3rd+4djT66ZRn9gvvqXhWuZ4Qy
         pJoWEfgC8ibcLGBnSl9Ae8FptMadw3m+nhqvTZo/SzNWOjrT5JR6CLjn2lbNFdlkyS2m
         lYq1Mv4o6Dakzdm+MxjMLJqYpNctTRdDeTvBgb+7eEFqMYLhMw7vjSUjyLlPCd1TVptU
         TaC3KrenUrL/2E/6Ol52c0z4IK2x8NDTQ0rfNPPdZy3+ci9f1YKAW/+Hsadq/qcGRdHM
         57e8qghDZDG1lg9XDlJS9zG1njsiMLHvL+4qngb8C4w0j9q70L+7zBR91lzphB8YM6JE
         zz+Q==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704957985; x=1705562785;
        h=content-transfer-encoding:in-reply-to:autocrypt:references:cc:to
         :from:content-language:subject:user-agent:mime-version:date
         :message-id:x-gm-message-state:from:to:cc:subject:date:message-id
         :reply-to;
        bh=zoKC8ochUFPTshQ5L/IkWmgj0imM/XqiSRmWYZZF9pU=;
        b=M87VQSZUKyWJBVqJ3slgQ5U9tiA+S+vz2gtdMv9JMuuNOVgPhioRZyK5TgmI4kQ1XZ
         1W896mFtW2ikV2W/Wty75yXnFy7f86vkrwmxoKgKxXYSwmNqvgv2YR+fv2mkygI6xPVJ
         Fu428AmW9X2oj03jMwgt95g0VZCICgZIe2rL04t6vLCLZMeudFUrW5vDozYsFXT7wW8D
         dONvqlYcvLEyxQrGD29XLb/Z8mn54Xv7siys8QHMYXrIRyW4QBNF6Gv5zNoTlaM/5eYB
         2KOLW7+4lfQc62g5ph/F+HKIGEXl8UxzyAhxzVB83siZWFQwfd2PBQfjcYRjwbv2XKkO
         pZmA==
X-Gm-Message-State: AOJu0YxI1Kod4byHONFMVtiqJE8uKedabMs198+RHDS6V8eNh10K7cNK
	wJ9/PrTb3YLlh0wAmyCey/gSavjzlv7zYkeTD7kZFDX32g==
X-Google-Smtp-Source: AGHT+IEi2S9lCWjDUsOeY8BYyOKk6jfWSv9fqqfawDOrRwj/+vk3szw4QRnPRNkIT+EWVnGoCiPIDg==
X-Received: by 2002:a5d:620e:0:b0:337:2b76:30fe with SMTP id y14-20020a5d620e000000b003372b7630femr370509wru.37.1704957985246;
        Wed, 10 Jan 2024 23:26:25 -0800 (PST)
Message-ID: <d1361c45-2283-4fe9-b997-b524c82626f1@suse.com>
Date: Thu, 11 Jan 2024 08:26:24 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: [PATCH 4/8] PV-shim: drop pv_console_rx()'s regs parameter
Content-Language: en-US
From: Jan Beulich <jbeulich@suse.com>
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 George Dunlap <george.dunlap@citrix.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
References: <5d6089a4-c597-49ce-b042-24f13922f581@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <5d6089a4-c597-49ce-b042-24f13922f581@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

It's not needed anymore. This is in preparation of dropping the register
parameters from IRQ handler functions.

Signed-off-by: Jan Beulich <jbeulich@suse.com>

--- a/xen/arch/x86/guest/xen/xen.c
+++ b/xen/arch/x86/guest/xen/xen.c
@@ -181,7 +181,7 @@ static void cf_check xen_evtchn_upcall(s
             port += l1 * BITS_PER_LONG;
 
             if ( pv_console && port == pv_console_evtchn() )
-                pv_console_rx(regs);
+                pv_console_rx();
             else if ( pv_shim )
                 pv_shim_inject_evtchn(port);
         }
--- a/xen/drivers/char/xen_pv_console.c
+++ b/xen/drivers/char/xen_pv_console.c
@@ -94,7 +94,7 @@ evtchn_port_t pv_console_evtchn(void)
     return cons_evtchn;
 }
 
-size_t pv_console_rx(struct cpu_user_regs *regs)
+size_t pv_console_rx(void)
 {
     char c;
     XENCONS_RING_IDX cons, prod;
--- a/xen/include/xen/pv_console.h
+++ b/xen/include/xen/pv_console.h
@@ -9,7 +9,7 @@ void pv_console_init(void);
 void pv_console_set_rx_handler(serial_rx_fn fn);
 void pv_console_init_postirq(void);
 void pv_console_puts(const char *buf, size_t nr);
-size_t pv_console_rx(struct cpu_user_regs *regs);
+size_t pv_console_rx(void);
 evtchn_port_t pv_console_evtchn(void);
 
 #else
@@ -18,7 +18,7 @@ static inline void pv_console_init(void)
 static inline void pv_console_set_rx_handler(serial_rx_fn fn) { }
 static inline void pv_console_init_postirq(void) { }
 static inline void pv_console_puts(const char *buf, size_t nr) { }
-static inline size_t pv_console_rx(struct cpu_user_regs *regs) { return 0; }
+static inline size_t pv_console_rx(void) { return 0; }
 
 #endif /* !CONFIG_XEN_GUEST */
 #endif /* __XEN_PV_CONSOLE_H__ */



From xen-devel-bounces@lists.xenproject.org Thu Jan 11 07:30:21 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 11 Jan 2024 07:30:21 +0000
Received: from list by lists.xenproject.org with outflank-mailman.665921.1036243 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNpW5-0005QB-4T; Thu, 11 Jan 2024 07:30:17 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 665921.1036243; Thu, 11 Jan 2024 07:30:17 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNpW5-0005Q4-1b; Thu, 11 Jan 2024 07:30:17 +0000
Received: by outflank-mailman (input) for mailman id 665921;
 Thu, 11 Jan 2024 07:30:15 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=YFj+=IV=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rNpW3-0005Py-Tr
 for xen-devel@lists.xenproject.org; Thu, 11 Jan 2024 07:30:15 +0000
Received: from mail-wm1-x335.google.com (mail-wm1-x335.google.com
 [2a00:1450:4864:20::335])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 42eb26aa-b053-11ee-98f0-6d05b1d4d9a1;
 Thu, 11 Jan 2024 08:30:14 +0100 (CET)
Received: by mail-wm1-x335.google.com with SMTP id
 5b1f17b1804b1-40e55c885d7so17677775e9.0
 for <xen-devel@lists.xenproject.org>; Wed, 10 Jan 2024 23:30:14 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 n16-20020a05600c4f9000b0040d62f97e3csm4686253wmq.10.2024.01.10.23.30.13
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 10 Jan 2024 23:30:14 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 42eb26aa-b053-11ee-98f0-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1704958214; x=1705563014; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:references:cc:to
         :from:content-language:subject:user-agent:mime-version:date
         :message-id:from:to:cc:subject:date:message-id:reply-to;
        bh=vrbYM+k3rn2StvNS14c+H1vkqzUnxcZIY2WokHy7uas=;
        b=HW1MM19UkCsR4osJyfSxs4+0bOOd0FFwi5KgAyZ2InM5ynVKKKvsWm7NwzrWsIQ6va
         w3ACnHQPIcygcQa2R5MlEoeUqU5gD3GmjiEV2hKhuAPFShliYyksqKtkRJsLpS8ZBbS1
         BMfMu5rYJKLum+N8c74apP7uv977p8zFmd5zXswggJkBfVk0jcUEK7BR2izmQdvZdqEx
         KSbn0zNZbk0x+FV+PDvbQUQFcsaGse8qymMqOURCrTmHgA7XIWKK8uagp4ihp8pWgd6h
         pH97uq+LyrRfjUcsUfvy4xlhpkCCdzu1E6CqQRnIN+CM6eQAzjgvrqfQPIHAjkUmexmo
         PYnQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704958214; x=1705563014;
        h=content-transfer-encoding:in-reply-to:autocrypt:references:cc:to
         :from:content-language:subject:user-agent:mime-version:date
         :message-id:x-gm-message-state:from:to:cc:subject:date:message-id
         :reply-to;
        bh=vrbYM+k3rn2StvNS14c+H1vkqzUnxcZIY2WokHy7uas=;
        b=MrtF3iag5YpvTGatoLcz3dzUi38477eChpOCY5Gw9W0xw6kMtc88bIQCb3LC10FfHo
         +BeniGzT3xy6MPUCMzsb6h2qy+YGMaQ0yFxhSgCYRP8Boz8rJyedwE7nymWwyYFhOMMu
         +7t4FDKG+Zn3c7sNfpjt+bmeD5X9mCpDTmu/6/XHkoL72l37r1vAYTOdK8ufm9UnkP5x
         aD5hlNfgYU+cLEKiKQfDNM2S3kmV182YuJ/x25aC1MvqoiXVnvgTw0q7ym8Zdow3PxS1
         a79qJ6AeB2vfujpjQyOg9OsuGiSV3V/P5rZxzIPVZyO1+7hv4BjUUKIV6W/pnF+stmg9
         V5fA==
X-Gm-Message-State: AOJu0YyNcQPtgDx9NzuADySOhX4HUtMujUsnXL9AfCsntNynP31TekzD
	WqLnZ4J65nqmk9zknZaNmY9DGt+03igLn6gNTKNOZC4GLQ==
X-Google-Smtp-Source: AGHT+IFbCF0Cmn4ze8awRNj7NnD5DZnQdD+ckerlKPuU2k00VG6SDcDngHETqq6FGgzvFaBuAykVGw==
X-Received: by 2002:a05:600c:3584:b0:40e:5f64:a6a3 with SMTP id p4-20020a05600c358400b0040e5f64a6a3mr128934wmq.173.1704958214279;
        Wed, 10 Jan 2024 23:30:14 -0800 (PST)
Message-ID: <264f1696-3555-426b-b88d-97c3f2d27eb5@suse.com>
Date: Thu, 11 Jan 2024 08:30:13 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 0/8] limit passing around of cpu_user_regs
Content-Language: en-US
From: Jan Beulich <jbeulich@suse.com>
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 George Dunlap <george.dunlap@citrix.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>
References: <5d6089a4-c597-49ce-b042-24f13922f581@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <5d6089a4-c597-49ce-b042-24f13922f581@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 11.01.2024 08:21, Jan Beulich wrote:
> Unlike (synchronous) exception handlers, interrupt handlers don't normally
> have a need to know the outer context's register state. Similarly, the vast
> majority of key handlers has no need for such.
> 
> 1: keyhandler: don't pass cpu_user_regs around
> 2: IRQ: generalize [gs]et_irq_regs()
> 3: serial: drop serial_rx_fn's regs parameter
> 4: PV-shim: drop pv_console_rx()'s regs parameter
> 5: serial: drop serial_[rt]x_interrupt()'s regs parameter
> 6: IRQ: drop regs parameter from handler functions
> 7: x86/vPMU: drop regs parameter from interrupt functions
> 8: x86/APIC: drop regs parameter from direct vector handler functions

I'm sorry, I need to start over - somehow ordering got confused in the
reply-to-s sent so far.

Jan



From xen-devel-bounces@lists.xenproject.org Thu Jan 11 07:31:10 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 11 Jan 2024 07:31:10 +0000
Received: from list by lists.xenproject.org with outflank-mailman.665924.1036253 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNpWw-0006Ex-Db; Thu, 11 Jan 2024 07:31:10 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 665924.1036253; Thu, 11 Jan 2024 07:31:10 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNpWw-0006Eq-AT; Thu, 11 Jan 2024 07:31:10 +0000
Received: by outflank-mailman (input) for mailman id 665924;
 Thu, 11 Jan 2024 07:31:09 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=YFj+=IV=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rNpWv-0006Ec-D8
 for xen-devel@lists.xenproject.org; Thu, 11 Jan 2024 07:31:09 +0000
Received: from mail-wm1-x332.google.com (mail-wm1-x332.google.com
 [2a00:1450:4864:20::332])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 62cd6c12-b053-11ee-98f0-6d05b1d4d9a1;
 Thu, 11 Jan 2024 08:31:08 +0100 (CET)
Received: by mail-wm1-x332.google.com with SMTP id
 5b1f17b1804b1-40e5508ecb9so23642955e9.3
 for <xen-devel@lists.xenproject.org>; Wed, 10 Jan 2024 23:31:08 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 n16-20020a05600c4f9000b0040d62f97e3csm4686253wmq.10.2024.01.10.23.31.07
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 10 Jan 2024 23:31:07 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 62cd6c12-b053-11ee-98f0-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1704958268; x=1705563068; darn=lists.xenproject.org;
        h=content-transfer-encoding:autocrypt:content-language:cc:to:subject
         :from:user-agent:mime-version:date:message-id:from:to:cc:subject
         :date:message-id:reply-to;
        bh=M+5CGOukjfQO94V4R3Cj4aE/IhM5ucCz6YzI5SlI/Cg=;
        b=NV9orLaBBS8oOfNri7NmlWI9J9hzSpMUaFkfb31XbLD8j8WnTNGi+fDeZT0w2571X9
         ip5/c2nwON06AfpHq3ygXzP+CRj9zhZTQYSCmRAmXmu/YJMuHVetI1ix2P25JRJ97M4e
         PV+YEq+rMw8cKguN5dFAm8BSr/bJNTt/Ver8M0LTeBuc2HU6nkMcbldfV0ucyFfpkmN8
         HVk+4Ewt5yG5kRA0/v5kHgjWP0Z+jaHsV8w+ahXhWWiguwBCjXcMOFcGnEwGA2M9sJhH
         ZmfRS0s/rbv9NzYejzkZBIKOIdImZhsDiJkFytN/2b/lNZJvj9KGrXKIjfWxbEMbowQX
         4c4g==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704958268; x=1705563068;
        h=content-transfer-encoding:autocrypt:content-language:cc:to:subject
         :from:user-agent:mime-version:date:message-id:x-gm-message-state
         :from:to:cc:subject:date:message-id:reply-to;
        bh=M+5CGOukjfQO94V4R3Cj4aE/IhM5ucCz6YzI5SlI/Cg=;
        b=BPDWWd9eNvwjNpL7BhyLpXpALLgabet6pHj9J5aFqfaD/VnTqASOAvm0CS8C2j0nNx
         GIjfKCv3m52bpZSwrtjNkC75wg1zWWrqD5uZV6kG0qWOAJMFN0rtcqHRtJJbREvOMTxK
         HJAeAxvlddujAF1MO1RF6QxePVfwQRORxhCfVRiFqcTzh+y8FXJlsaVVoqYaJhAD2Pu9
         or40r0WnveE4wezCINU5MVaxmetJWg5cPWcdGUL7/BHQHVXF0gbwwNHk9xqQMkiRgXcn
         mvKjWOJw31QkoljAbQDzLqHKsvJuGtI63ZC7/AbD3+Zd36kcEqCLl8XSAsyJ/QkWqRPN
         MVMQ==
X-Gm-Message-State: AOJu0Yx6ePuvu7PR3N1lGMGWxSxXDliwNM4BAujSJ+fzDIU2L3ijna8f
	Z1ijmCABijLo9xbmoruI9tAKLlc3y+2jFt6n0lJC6KSVoA==
X-Google-Smtp-Source: AGHT+IEJnAO8j2RIu1MH/kul9OKGuKojB297y0gNoHuS1vTbmqiSHrCQOkyPkPaA3t7D4Kv+r6UYQw==
X-Received: by 2002:a05:600c:283:b0:40d:9369:697f with SMTP id 3-20020a05600c028300b0040d9369697fmr141778wmk.144.1704958267838;
        Wed, 10 Jan 2024 23:31:07 -0800 (PST)
Message-ID: <1ab231ec-5e3c-4662-8530-2213bc52bb7c@suse.com>
Date: Thu, 11 Jan 2024 08:31:07 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
From: Jan Beulich <jbeulich@suse.com>
Subject: [PATCH 0/8] limit passing around of cpu_user_regs
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 George Dunlap <george.dunlap@citrix.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>
Content-Language: en-US
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

Unlike (synchronous) exception handlers, interrupt handlers don't normally
have a need to know the outer context's register state. Similarly, the vast
majority of key handlers has no need for such.

1: keyhandler: don't pass cpu_user_regs around
2: IRQ: generalize [gs]et_irq_regs()
3: serial: drop serial_rx_fn's regs parameter
4: PV-shim: drop pv_console_rx()'s regs parameter
5: serial: drop serial_[rt]x_interrupt()'s regs parameter
6: IRQ: drop regs parameter from handler functions
7: x86/vPMU: drop regs parameter from interrupt functions
8: x86/APIC: drop regs parameter from direct vector handler functions

Jan


From xen-devel-bounces@lists.xenproject.org Thu Jan 11 07:32:01 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 11 Jan 2024 07:32:01 +0000
Received: from list by lists.xenproject.org with outflank-mailman.665931.1036263 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNpXk-0006kz-N7; Thu, 11 Jan 2024 07:32:00 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 665931.1036263; Thu, 11 Jan 2024 07:32:00 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNpXk-0006ks-KL; Thu, 11 Jan 2024 07:32:00 +0000
Received: by outflank-mailman (input) for mailman id 665931;
 Thu, 11 Jan 2024 07:31:58 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=YFj+=IV=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rNpXi-0006km-Tg
 for xen-devel@lists.xenproject.org; Thu, 11 Jan 2024 07:31:58 +0000
Received: from mail-wr1-x431.google.com (mail-wr1-x431.google.com
 [2a00:1450:4864:20::431])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 805b57fa-b053-11ee-98f0-6d05b1d4d9a1;
 Thu, 11 Jan 2024 08:31:57 +0100 (CET)
Received: by mail-wr1-x431.google.com with SMTP id
 ffacd0b85a97d-3368b9bbeb4so4746911f8f.2
 for <xen-devel@lists.xenproject.org>; Wed, 10 Jan 2024 23:31:57 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 d6-20020a056000114600b003366a9cb0d1sm444087wrx.92.2024.01.10.23.31.57
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 10 Jan 2024 23:31:57 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 805b57fa-b053-11ee-98f0-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1704958317; x=1705563117; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:content-language
         :references:cc:to:from:subject:user-agent:mime-version:date
         :message-id:from:to:cc:subject:date:message-id:reply-to;
        bh=0ec8vWmu/5aIAhFU+GtuouuNHSKMP58o3QH8ANpxtGg=;
        b=I/KoAXKqYCLKRnuVh9/rtkg/KW4c/RHFFgfayPD1jSp0jPNk7spZhZpKBTVI8uqSYB
         6whUr8nKJBhnAdSJI4iELq/rdr4i3Rn0q0UmsADkUO5XO1e2ScdOaxo2hRidXFJtVZOi
         5pb6qZStGvrMNHJTGV0I4T/SfNi7dqqst8+7Bc1HOkzDkTfxPmS1DM2/WRLc56KU3VEC
         u+twnmqSFiPUWF/vtdI5C+bF+LtbiBUq4+/+YxRAHRrIb4+8Katp1EwierzRDXtPB1Uz
         //Xu1X0HJFx9fLhLjuaJsUKml+sZSmZHPGwfFD586bJaA9oNuzEBqSpMc96tMMsSydYZ
         M4Uw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704958317; x=1705563117;
        h=content-transfer-encoding:in-reply-to:autocrypt:content-language
         :references:cc:to:from:subject:user-agent:mime-version:date
         :message-id:x-gm-message-state:from:to:cc:subject:date:message-id
         :reply-to;
        bh=0ec8vWmu/5aIAhFU+GtuouuNHSKMP58o3QH8ANpxtGg=;
        b=AOfMA8KE83RQeyx2v8aW8YPrmAitod+2iJDCvPrCS0JrFa8LbInD/rwq3EsAgPatMV
         ZhVauNNkeXlOzcZa034jpDfI0FQIjn4D/E5Kn49HJDRMoJxBdVUJ9lEOWzdkH+U3keNJ
         W59wYkCNJvNzR7ZZ6QOlZ/m+rLHsf3zfPkB2QGTI0jImja9T0HrxfFHxhw9nmX8wpKvQ
         Z3BLvuN0kXE/CxvsPC0hl+MgemqD18wQ/sCYQUXbRd1EEPsgsjxOPgBsbPoDR/vCypD5
         EpW4+AVfSdXTMQkmA7AB42Kdrz/x40zspeRNcIox6VqoiFwXiCxohCM2eRWQCorbv2Qv
         x45g==
X-Gm-Message-State: AOJu0Yx5vQOlyCKrW1C72JvdYmWqDRr47mw001jXR5ihxBS3vsJPnXQc
	GCwv4Y0Q+fp7AdH3ArqOSE7v4GrtiVgXkSbdbBxnWxRheg==
X-Google-Smtp-Source: AGHT+IGhgxIDgO87l4RjWlKzB5FKF5WI1Cp6iqB39lTenwigtQLspP79tdMvxU216jd8w1rdt2tonQ==
X-Received: by 2002:adf:e612:0:b0:32d:cd02:d4f3 with SMTP id p18-20020adfe612000000b0032dcd02d4f3mr149688wrm.40.1704958317480;
        Wed, 10 Jan 2024 23:31:57 -0800 (PST)
Message-ID: <dd1c24ec-4054-43e1-b0c9-6c2044b84046@suse.com>
Date: Thu, 11 Jan 2024 08:31:56 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: [PATCH 1/8] keyhandler: don't pass cpu_user_regs around
From: Jan Beulich <jbeulich@suse.com>
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 George Dunlap <george.dunlap@citrix.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>
References: <1ab231ec-5e3c-4662-8530-2213bc52bb7c@suse.com>
Content-Language: en-US
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <1ab231ec-5e3c-4662-8530-2213bc52bb7c@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

There are exactly two handlers which care about the registers. Have
handle_keypress() make the pointer available via a per-CPU variable,
thus eliminating the need to pass it to all IRQ key handlers, making
sure that a console-invoked key's handling can still nest inside a
sysctl-invoked one's.

Signed-off-by: Jan Beulich <jbeulich@suse.com>
---
Subsequently we may want to eliminate the fn/irq_fn union as well,
along with dropping the now redundant irq_keyhandler_fn_t.

--- a/xen/common/keyhandler.c
+++ b/xen/common/keyhandler.c
@@ -80,6 +80,7 @@ static void cf_check keypress_action(voi
 }
 
 static DECLARE_TASKLET(keypress_tasklet, keypress_action, NULL);
+static DEFINE_PER_CPU(struct cpu_user_regs *, keypress_regs);
 
 void handle_keypress(unsigned char key, struct cpu_user_regs *regs)
 {
@@ -91,7 +92,16 @@ void handle_keypress(unsigned char key,
     if ( !in_irq() || h->irq_callback )
     {
         console_start_log_everything();
-        h->irq_callback ? h->irq_fn(key, regs) : h->fn(key);
+        if ( h->irq_callback )
+        {
+            struct cpu_user_regs *old = this_cpu(keypress_regs);
+
+            this_cpu(keypress_regs) = regs;
+            h->irq_fn(key);
+            this_cpu(keypress_regs) = old;
+        }
+        else
+            h->fn(key);
         console_end_log_everything();
     }
     else
@@ -171,8 +181,7 @@ void cf_check dump_execstate(struct cpu_
     watchdog_enable();
 }
 
-static void cf_check dump_registers(
-    unsigned char key, struct cpu_user_regs *regs)
+static void cf_check dump_registers(unsigned char key)
 {
     unsigned int cpu;
 
@@ -185,8 +194,8 @@ static void cf_check dump_registers(
     cpumask_copy(&dump_execstate_mask, &cpu_online_map);
 
     /* Get local execution state out immediately, in case we get stuck. */
-    if ( regs )
-        dump_execstate(regs);
+    if ( this_cpu(keypress_regs) )
+        dump_execstate(this_cpu(keypress_regs));
     else
         run_in_exception_handler(dump_execstate);
 
@@ -248,8 +257,7 @@ static void cf_check dump_hwdom_register
     }
 }
 
-static void cf_check reboot_machine(
-    unsigned char key, struct cpu_user_regs *regs)
+static void cf_check reboot_machine(unsigned char key)
 {
     printk("'%c' pressed -> rebooting machine\n", key);
     machine_restart(0);
@@ -477,8 +485,7 @@ static void cf_check run_all_nonirq_keyh
 static DECLARE_TASKLET(run_all_keyhandlers_tasklet,
                        run_all_nonirq_keyhandlers, NULL);
 
-static void cf_check run_all_keyhandlers(
-    unsigned char key, struct cpu_user_regs *regs)
+static void cf_check run_all_keyhandlers(unsigned char key)
 {
     struct keyhandler *h;
     unsigned int k;
@@ -494,7 +501,7 @@ static void cf_check run_all_keyhandlers
         if ( !h->irq_fn || !h->diagnostic || !h->irq_callback )
             continue;
         printk("[%c: %s]\n", k, h->desc);
-        h->irq_fn(k, regs);
+        h->irq_fn(k);
     }
 
     watchdog_enable();
@@ -511,17 +518,16 @@ static void cf_check do_debugger_trap_fa
     barrier();
 }
 
-static void cf_check do_debug_key(unsigned char key, struct cpu_user_regs *regs)
+static void cf_check do_debug_key(unsigned char key)
 {
     printk("'%c' pressed -> trapping into debugger\n", key);
-    if ( regs )
-        do_debugger_trap_fatal(regs);
+    if ( this_cpu(keypress_regs) )
+        do_debugger_trap_fatal(this_cpu(keypress_regs));
     else
         run_in_exception_handler(do_debugger_trap_fatal);
 }
 
-static void cf_check do_toggle_alt_key(
-    unsigned char key, struct cpu_user_regs *regs)
+static void cf_check do_toggle_alt_key(unsigned char key)
 {
     alt_key_handling = !alt_key_handling;
     printk("'%c' pressed -> using %s key handling\n", key,
--- a/xen/drivers/char/console.c
+++ b/xen/drivers/char/console.c
@@ -280,7 +280,7 @@ static int *__read_mostly upper_thresh_a
 static int *__read_mostly lower_thresh_adj = &xenlog_lower_thresh;
 static const char *__read_mostly thresh_adj = "standard";
 
-static void cf_check do_toggle_guest(unsigned char key, struct cpu_user_regs *regs)
+static void cf_check do_toggle_guest(unsigned char key)
 {
     if ( upper_thresh_adj == &xenlog_upper_thresh )
     {
@@ -307,13 +307,13 @@ static void do_adj_thresh(unsigned char
            loglvl_str(*upper_thresh_adj));
 }
 
-static void cf_check do_inc_thresh(unsigned char key, struct cpu_user_regs *regs)
+static void cf_check do_inc_thresh(unsigned char key)
 {
     ++*lower_thresh_adj;
     do_adj_thresh(key);
 }
 
-static void cf_check do_dec_thresh(unsigned char key, struct cpu_user_regs *regs)
+static void cf_check do_dec_thresh(unsigned char key)
 {
     if ( *lower_thresh_adj )
         --*lower_thresh_adj;
--- a/xen/include/xen/keyhandler.h
+++ b/xen/include/xen/keyhandler.h
@@ -24,9 +24,7 @@ typedef void (keyhandler_fn_t)(unsigned
  *
  * Called in hardirq context with interrupts disabled.
  */
-struct cpu_user_regs;
-typedef void (irq_keyhandler_fn_t)(unsigned char key,
-                                   struct cpu_user_regs *regs);
+typedef void irq_keyhandler_fn_t(unsigned char key);
 
 /* Initialize keytable with default handlers. */
 void initialize_keytable(void);
@@ -46,6 +44,7 @@ void register_irq_keyhandler(unsigned ch
                              bool diagnostic);
 
 /* Inject a keypress into the key-handling subsystem. */
+struct cpu_user_regs;
 extern void handle_keypress(unsigned char key, struct cpu_user_regs *regs);
 
 enum crash_reason {



From xen-devel-bounces@lists.xenproject.org Thu Jan 11 07:32:38 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 11 Jan 2024 07:32:38 +0000
Received: from list by lists.xenproject.org with outflank-mailman.665936.1036273 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNpYL-0007KS-6J; Thu, 11 Jan 2024 07:32:37 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 665936.1036273; Thu, 11 Jan 2024 07:32:37 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNpYL-0007KL-28; Thu, 11 Jan 2024 07:32:37 +0000
Received: by outflank-mailman (input) for mailman id 665936;
 Thu, 11 Jan 2024 07:32:36 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=YFj+=IV=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rNpYK-0006km-78
 for xen-devel@lists.xenproject.org; Thu, 11 Jan 2024 07:32:36 +0000
Received: from mail-wr1-x433.google.com (mail-wr1-x433.google.com
 [2a00:1450:4864:20::433])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 96d048ed-b053-11ee-98f0-6d05b1d4d9a1;
 Thu, 11 Jan 2024 08:32:35 +0100 (CET)
Received: by mail-wr1-x433.google.com with SMTP id
 ffacd0b85a97d-336c5b5c163so2976199f8f.1
 for <xen-devel@lists.xenproject.org>; Wed, 10 Jan 2024 23:32:35 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 d6-20020a056000114600b003366a9cb0d1sm444087wrx.92.2024.01.10.23.32.34
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 10 Jan 2024 23:32:34 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 96d048ed-b053-11ee-98f0-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1704958355; x=1705563155; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:references:cc:to
         :from:content-language:subject:user-agent:mime-version:date
         :message-id:from:to:cc:subject:date:message-id:reply-to;
        bh=wA+BZrWdWKLSqnO5cn9IF1o10HKUmp9PaScVUp+oxcs=;
        b=GWHihiTglGv0/HCNKtwjOULUdNmcLNt1HROFvWHzZgz61z3eobUFE6pkx42TvC/Ixb
         Bj+WLsNeVlkUxhf1wdbHbuGEMFJN0miAnjDc0xgjYanmVbTnRhf8e2jrMzscBcdzFUr/
         BVhjzYcJ0BV7PIB1owtHDAo+e1zVj/KyL8qC0cuHJP1gE/lJnr47YfHkMG/JyaecUnCT
         swyw+vkEggCIQW5I9q8NdnKiwYy5/Zl/26RCVDfi60Kgl7Ft2W9q6fC5Xv/3jMTIZvcW
         LSSnOaIwqboExZjqvtKZKcYEn/PS7EW2Sv/hBx1crnUQzS3sEH+r3/V4xpRlerwkYq25
         UJSQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704958355; x=1705563155;
        h=content-transfer-encoding:in-reply-to:autocrypt:references:cc:to
         :from:content-language:subject:user-agent:mime-version:date
         :message-id:x-gm-message-state:from:to:cc:subject:date:message-id
         :reply-to;
        bh=wA+BZrWdWKLSqnO5cn9IF1o10HKUmp9PaScVUp+oxcs=;
        b=bfddBHLwF0o4K68/PglgnQGDk/s+JLz/a4zKDuQ/+EAMBJ00AwlJZxlQBSiSyhoPNn
         jJ6i+adAGi+b2CYWhDIiArdeM4kBYSFS3xK/0aMwj6qysegm1CJTmmUO1dmGw237laHz
         VjVO262Wh7YhZPlETv85v1XBgAHudgPF7y30CoKRsGLIRR3JVN/3CJoC7dYZLvPzpoJK
         fpY55Y4ky9a2tbEpmFNgtLQ+M47VXvvEeL4KyIo50F7fJDcACm67MIuNvEJLWp9/jOON
         Lss72Nu9RGv4/qlWnMo8PWfYF/hRANT1zMt7q9cqIfy6AFvQs2Vz+0S8aFjrGSgGhi/W
         fVdQ==
X-Gm-Message-State: AOJu0Yw1Ey4BOEBacZApr/f1WyjeeurtGsHABmuuwm7uWASAMuNpoujR
	I+PBXgpbFKryA94U5gaspHmH5sn6qHxzkjjIgAy4fBkblA==
X-Google-Smtp-Source: AGHT+IFtYbsBF5PPDoQ/YjTSVY769vqpu8ell/GA9dVTLANxBaEpgyWgzA0r2mIm0j986nNwl3zCpA==
X-Received: by 2002:a5d:53cf:0:b0:336:61e1:a325 with SMTP id a15-20020a5d53cf000000b0033661e1a325mr160157wrw.35.1704958355022;
        Wed, 10 Jan 2024 23:32:35 -0800 (PST)
Message-ID: <4c6d11b0-32dd-4ce3-a157-a848b6fc3154@suse.com>
Date: Thu, 11 Jan 2024 08:32:34 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: [PATCH 2/8] IRQ: generalize [gs]et_irq_regs()
Content-Language: en-US
From: Jan Beulich <jbeulich@suse.com>
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 George Dunlap <george.dunlap@citrix.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Bertrand Marquis <bertrand.marquis@arm.com>,
 Michal Orzel <michal.orzel@amd.com>
References: <1ab231ec-5e3c-4662-8530-2213bc52bb7c@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <1ab231ec-5e3c-4662-8530-2213bc52bb7c@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

Move functions (and their data) to common code, and invoke the functions
on Arm as well. This is in preparation of dropping the register
parameters from handler functions.

Signed-off-by: Jan Beulich <jbeulich@suse.com>
---
To limit visibility of the per-CPU data item, we may want to consider
making the functions out-of-line ones (in common/irq.c).

--- a/xen/arch/arm/irq.c
+++ b/xen/arch/arm/irq.c
@@ -221,6 +221,7 @@ void do_IRQ(struct cpu_user_regs *regs,
 {
     struct irq_desc *desc = irq_to_desc(irq);
     struct irqaction *action;
+    struct cpu_user_regs *old_regs = set_irq_regs(regs);
 
     perfc_incr(irqs);
 
@@ -288,6 +289,7 @@ out:
 out_no_end:
     spin_unlock(&desc->lock);
     irq_exit();
+    set_irq_regs(old_regs);
 }
 
 void release_irq(unsigned int irq, const void *dev_id)
--- a/xen/arch/x86/include/asm/irq.h
+++ b/xen/arch/x86/include/asm/irq.h
@@ -70,27 +70,6 @@ extern bool opt_noirqbalance;
 
 extern int opt_irq_vector_map;
 
-/*
- * Per-cpu current frame pointer - the location of the last exception frame on
- * the stack
- */
-DECLARE_PER_CPU(struct cpu_user_regs *, __irq_regs);
-
-static inline struct cpu_user_regs *get_irq_regs(void)
-{
-	return this_cpu(__irq_regs);
-}
-
-static inline struct cpu_user_regs *set_irq_regs(struct cpu_user_regs *new_regs)
-{
-	struct cpu_user_regs *old_regs, **pp_regs = &this_cpu(__irq_regs);
-
-	old_regs = *pp_regs;
-	*pp_regs = new_regs;
-	return old_regs;
-}
-
-
 #define platform_legacy_irq(irq)	((irq) < 16)
 
 void cf_check event_check_interrupt(struct cpu_user_regs *regs);
--- a/xen/arch/x86/irq.c
+++ b/xen/arch/x86/irq.c
@@ -53,8 +53,6 @@ static DEFINE_SPINLOCK(vector_lock);
 
 DEFINE_PER_CPU(vector_irq_t, vector_irq);
 
-DEFINE_PER_CPU(struct cpu_user_regs *, __irq_regs);
-
 static LIST_HEAD(irq_ratelimit_list);
 static DEFINE_SPINLOCK(irq_ratelimit_lock);
 static struct timer irq_ratelimit_timer;
--- a/xen/common/irq.c
+++ b/xen/common/irq.c
@@ -1,6 +1,8 @@
 #include <xen/irq.h>
 #include <xen/errno.h>
 
+DEFINE_PER_CPU(struct cpu_user_regs *, irq_regs);
+
 int init_one_irq_desc(struct irq_desc *desc)
 {
     int err;
--- a/xen/include/xen/irq.h
+++ b/xen/include/xen/irq.h
@@ -131,6 +131,26 @@ void cf_check irq_actor_none(struct irq_
 #define irq_disable_none irq_actor_none
 #define irq_enable_none irq_actor_none
 
+/*
+ * Per-cpu interrupted context register state - the top-most interrupt frame
+ * on the stack.
+ */
+DECLARE_PER_CPU(struct cpu_user_regs *, irq_regs);
+
+static inline struct cpu_user_regs *get_irq_regs(void)
+{
+	return this_cpu(irq_regs);
+}
+
+static inline struct cpu_user_regs *set_irq_regs(struct cpu_user_regs *new_regs)
+{
+	struct cpu_user_regs *old_regs, **pp_regs = &this_cpu(irq_regs);
+
+	old_regs = *pp_regs;
+	*pp_regs = new_regs;
+	return old_regs;
+}
+
 struct domain;
 struct vcpu;
 



From xen-devel-bounces@lists.xenproject.org Thu Jan 11 07:33:06 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 11 Jan 2024 07:33:06 +0000
Received: from list by lists.xenproject.org with outflank-mailman.665939.1036283 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNpYn-0007qi-DW; Thu, 11 Jan 2024 07:33:05 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 665939.1036283; Thu, 11 Jan 2024 07:33:05 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNpYn-0007qb-9t; Thu, 11 Jan 2024 07:33:05 +0000
Received: by outflank-mailman (input) for mailman id 665939;
 Thu, 11 Jan 2024 07:33:04 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=YFj+=IV=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rNpYm-0007qR-JI
 for xen-devel@lists.xenproject.org; Thu, 11 Jan 2024 07:33:04 +0000
Received: from mail-lj1-x231.google.com (mail-lj1-x231.google.com
 [2a00:1450:4864:20::231])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id a6dc1c08-b053-11ee-9b0f-b553b5be7939;
 Thu, 11 Jan 2024 08:33:02 +0100 (CET)
Received: by mail-lj1-x231.google.com with SMTP id
 38308e7fff4ca-2ccbc328744so60196421fa.3
 for <xen-devel@lists.xenproject.org>; Wed, 10 Jan 2024 23:33:02 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 d6-20020a056000114600b003366a9cb0d1sm444087wrx.92.2024.01.10.23.33.01
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 10 Jan 2024 23:33:01 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: a6dc1c08-b053-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1704958382; x=1705563182; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:references:cc:to
         :from:content-language:subject:user-agent:mime-version:date
         :message-id:from:to:cc:subject:date:message-id:reply-to;
        bh=2kKucQeG9hzCGGVi5VOoQwoW+K7wlDclKUZkgMvdu4E=;
        b=DAyc2LdCGcXPFuiKikfOwaS1lUkyNgmGyLP+t+iwK8P39JIC/U0KnWLd4W3nRgoMBJ
         AuLMnVt0Vv/fbmxFmpZSCjAKh34D6KkpJFu3EFpWHDRRIWhFxVFvyiyqT2oa+oZexEiH
         mxfJaiIv6AkgacfCma2AItwwc/QYdsKeazoiPDV0uDDsT8Z7rCvzFbWcAgcpVSrVhDcX
         479l/EqwoS+8nstZvBx90dFzYKJw6+8YrXMNMhitzAXZFW/12MPiGWbM30DFBHHLzzQn
         EE4a81jFdIlp9yjVrpIvO1v2+0HIC+RGg801Ltm5PRgHbIeRXlY7NNd2Z6EFzyIZOI/p
         KPVQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704958382; x=1705563182;
        h=content-transfer-encoding:in-reply-to:autocrypt:references:cc:to
         :from:content-language:subject:user-agent:mime-version:date
         :message-id:x-gm-message-state:from:to:cc:subject:date:message-id
         :reply-to;
        bh=2kKucQeG9hzCGGVi5VOoQwoW+K7wlDclKUZkgMvdu4E=;
        b=kNQUnIC02UuPBsFATpzP9/0P8HNyJOWtjQ+J8rmKr5UKrAUWscuUKSbu7et3MbvOZJ
         9Go5FllLmvpyo0RgF2f9kFa4FjWJJFZwn8wQR3OXG04CFIO3daVOKQ52sbXcLxkhTnDm
         j5iec0Ra8nbE6TJ2cG077IOEd0btNpCJRxoYsfSOOIupywCKaERQ2n/I+Yvfe04kST5E
         JMrIFqK/pHzss1pFPc/xlbLInw/wSabHjIcFiciupDvgvC3IJgYHgkxOa2h7XbY2th8d
         2yf2ymlql2dAf559PvVNJm6QHOFolneLQzkh7Vz8Ug7NZSx5dJ5d9DXBU8Lks6w41LuE
         WiNg==
X-Gm-Message-State: AOJu0YyksScqybK7sQKGq3ucmv+TCJuCD4VK1X3nlmKn4xkj+uPW6epa
	HWcUKVwTCMXkqX8BqYRppYm29JlrQWzxz+pPwIqMaik6Vw==
X-Google-Smtp-Source: AGHT+IFQekxv9tUuiagrg5drhbJERoq26nkI56qXh+ZK1ZGc/hJ3bsOKg5LcG6KpV2NCbTOAozTDLQ==
X-Received: by 2002:a2e:91cb:0:b0:2cc:d7a7:8ecb with SMTP id u11-20020a2e91cb000000b002ccd7a78ecbmr153085ljg.16.1704958381888;
        Wed, 10 Jan 2024 23:33:01 -0800 (PST)
Message-ID: <0087ad97-d315-4891-ab35-7a41e62d2f23@suse.com>
Date: Thu, 11 Jan 2024 08:33:01 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: [PATCH 3/8] serial: drop serial_rx_fn's regs parameter
Content-Language: en-US
From: Jan Beulich <jbeulich@suse.com>
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 George Dunlap <george.dunlap@citrix.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>
References: <1ab231ec-5e3c-4662-8530-2213bc52bb7c@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <1ab231ec-5e3c-4662-8530-2213bc52bb7c@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

In the one place where it's needed, get_irq_regs() can be used instead.
This is in preparation of dropping the register parameters from IRQ
handler functions.

Signed-off-by: Jan Beulich <jbeulich@suse.com>

--- a/xen/drivers/char/console.c
+++ b/xen/drivers/char/console.c
@@ -527,12 +527,12 @@ static void switch_serial_input(void)
     printk("\n");
 }
 
-static void __serial_rx(char c, struct cpu_user_regs *regs)
+static void __serial_rx(char c)
 {
     switch ( console_rx )
     {
     case 0:
-        return handle_keypress(c, regs);
+        return handle_keypress(c, get_irq_regs());
 
     case 1:
         /*
@@ -579,7 +579,7 @@ static void __serial_rx(char c, struct c
 #endif
 }
 
-static void cf_check serial_rx(char c, struct cpu_user_regs *regs)
+static void cf_check serial_rx(char c)
 {
     static int switch_code_count = 0;
 
@@ -595,10 +595,10 @@ static void cf_check serial_rx(char c, s
     }
 
     for ( ; switch_code_count != 0; switch_code_count-- )
-        __serial_rx(switch_code, regs);
+        __serial_rx(switch_code);
 
     /* Finally process the just-received character. */
-    __serial_rx(c, regs);
+    __serial_rx(c);
 }
 
 static void cf_check notify_dom0_con_ring(void *unused)
--- a/xen/drivers/char/serial.c
+++ b/xen/drivers/char/serial.c
@@ -68,7 +68,7 @@ void serial_rx_interrupt(struct serial_p
     spin_unlock_irqrestore(&port->rx_lock, flags);
 
     if ( fn != NULL )
-        (*fn)(c & 0x7f, regs);
+        fn(c & 0x7f);
 }
 
 void serial_tx_interrupt(struct serial_port *port, struct cpu_user_regs *regs)
--- a/xen/drivers/char/xen_pv_console.c
+++ b/xen/drivers/char/xen_pv_console.c
@@ -118,7 +118,7 @@ size_t pv_console_rx(struct cpu_user_reg
     {
         c = cons_ring->in[MASK_XENCONS_IDX(cons++, cons_ring->in)];
         if ( cons_rx_handler )
-            cons_rx_handler(c, regs);
+            cons_rx_handler(c);
         recv++;
     }
 
--- a/xen/include/xen/serial.h
+++ b/xen/include/xen/serial.h
@@ -15,7 +15,7 @@
 struct cpu_user_regs;
 
 /* Register a character-receive hook on the specified COM port. */
-typedef void (*serial_rx_fn)(char c, struct cpu_user_regs *regs);
+typedef void (*serial_rx_fn)(char c);
 void serial_set_rx_handler(int handle, serial_rx_fn fn);
 
 /* Number of characters we buffer for a polling receiver. */



From xen-devel-bounces@lists.xenproject.org Thu Jan 11 07:33:31 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 11 Jan 2024 07:33:31 +0000
Received: from list by lists.xenproject.org with outflank-mailman.665944.1036293 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNpZD-0008N3-K6; Thu, 11 Jan 2024 07:33:31 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 665944.1036293; Thu, 11 Jan 2024 07:33:31 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNpZD-0008Mu-HK; Thu, 11 Jan 2024 07:33:31 +0000
Received: by outflank-mailman (input) for mailman id 665944;
 Thu, 11 Jan 2024 07:33:30 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=YFj+=IV=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rNpZC-0008BU-F0
 for xen-devel@lists.xenproject.org; Thu, 11 Jan 2024 07:33:30 +0000
Received: from mail-wm1-x331.google.com (mail-wm1-x331.google.com
 [2a00:1450:4864:20::331])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id b721da82-b053-11ee-98f0-6d05b1d4d9a1;
 Thu, 11 Jan 2024 08:33:29 +0100 (CET)
Received: by mail-wm1-x331.google.com with SMTP id
 5b1f17b1804b1-40e60e13581so1644855e9.1
 for <xen-devel@lists.xenproject.org>; Wed, 10 Jan 2024 23:33:29 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 d6-20020a056000114600b003366a9cb0d1sm444087wrx.92.2024.01.10.23.33.28
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 10 Jan 2024 23:33:29 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: b721da82-b053-11ee-98f0-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1704958409; x=1705563209; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:references:cc:to
         :from:content-language:subject:user-agent:mime-version:date
         :message-id:from:to:cc:subject:date:message-id:reply-to;
        bh=zoKC8ochUFPTshQ5L/IkWmgj0imM/XqiSRmWYZZF9pU=;
        b=b8cIvKacQ6v3ddGkl7jW7lW/Hf6aABTV9kBdI3Fuxg0r3GGRkpDykFYWjiAYdiYUXV
         cbxxFc3/FMP0utm9kS/Z8F5F+usw7T+z5EaTA43AvKvF6bvgFsbCi+yG0r+hIiEE2e/y
         xcfwA14pJjMRc2ZoSfWSOvk+UZRrQkdSfUqGtAUJgeBppEnd6jhpuDfg9dUu9KU6axFX
         4/VExv32NTZwtpqofvGnummRpn+YFHuTq1d9eVgiuKjsYlPuktce163932CD3XZUigPx
         1lceiaaOI82RiA72UsKNBrJvtXXQrmbVPcJ8DMdh/fJ4RwA2plz8n6yyZ81vvamDMnGo
         m+lg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704958409; x=1705563209;
        h=content-transfer-encoding:in-reply-to:autocrypt:references:cc:to
         :from:content-language:subject:user-agent:mime-version:date
         :message-id:x-gm-message-state:from:to:cc:subject:date:message-id
         :reply-to;
        bh=zoKC8ochUFPTshQ5L/IkWmgj0imM/XqiSRmWYZZF9pU=;
        b=Yndq0IIeE7Vb09cbfQ82tlE7VdmSsOMrlKsGt8cCY2r4/g7/zB3UvjI3XRfvHpt2+a
         PYXn+j/eWL+GFXtwnnVaRiy9q9jal/aWsmVZbyo1/6wOhNL4Bagqm4zL073UY7JAUfgr
         4cAWMi7QpNonhiYJwp6/wZ0IqHBbpe0dSN4hHDNZcznahE/3ZYPWkWUkBYzmGPaErtig
         WTMQxwmdUrSiA1mhMpM+Kdj+cUPnE7zwKlO/NGN7mXPJU7o6noG5Cc35X7TC87D3vbFF
         q/Puw+tdV5yT4tDI3TCERRPbJw+2X/UStTQs2eiktgA67GtoMlRVTnrDMJGr5bzbNcGk
         44Eg==
X-Gm-Message-State: AOJu0YwWAYAuHQLd8tLFTHtHHCUn6ZD8NFYW4piLWfmJ2t0xKCLf8ygd
	YEabZ3kMXjtJDxUfa9MC+O91wr63Rufq4pL8YLTAAI1auw==
X-Google-Smtp-Source: AGHT+IHyTbTJlMfyu1Skg6ua3LsV/wsiVNoYjRHuZms4oBZQdS7LsfVCbB1nUCObOrSCjMPgo+R/ZA==
X-Received: by 2002:a05:600c:a002:b0:40d:3e8b:855e with SMTP id jg2-20020a05600ca00200b0040d3e8b855emr90591wmb.142.1704958409333;
        Wed, 10 Jan 2024 23:33:29 -0800 (PST)
Message-ID: <a770f13f-ee71-4fb1-b8d4-62e25584dd39@suse.com>
Date: Thu, 11 Jan 2024 08:33:28 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: [PATCH 4/8] PV-shim: drop pv_console_rx()'s regs parameter
Content-Language: en-US
From: Jan Beulich <jbeulich@suse.com>
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 George Dunlap <george.dunlap@citrix.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
References: <1ab231ec-5e3c-4662-8530-2213bc52bb7c@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <1ab231ec-5e3c-4662-8530-2213bc52bb7c@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

It's not needed anymore. This is in preparation of dropping the register
parameters from IRQ handler functions.

Signed-off-by: Jan Beulich <jbeulich@suse.com>

--- a/xen/arch/x86/guest/xen/xen.c
+++ b/xen/arch/x86/guest/xen/xen.c
@@ -181,7 +181,7 @@ static void cf_check xen_evtchn_upcall(s
             port += l1 * BITS_PER_LONG;
 
             if ( pv_console && port == pv_console_evtchn() )
-                pv_console_rx(regs);
+                pv_console_rx();
             else if ( pv_shim )
                 pv_shim_inject_evtchn(port);
         }
--- a/xen/drivers/char/xen_pv_console.c
+++ b/xen/drivers/char/xen_pv_console.c
@@ -94,7 +94,7 @@ evtchn_port_t pv_console_evtchn(void)
     return cons_evtchn;
 }
 
-size_t pv_console_rx(struct cpu_user_regs *regs)
+size_t pv_console_rx(void)
 {
     char c;
     XENCONS_RING_IDX cons, prod;
--- a/xen/include/xen/pv_console.h
+++ b/xen/include/xen/pv_console.h
@@ -9,7 +9,7 @@ void pv_console_init(void);
 void pv_console_set_rx_handler(serial_rx_fn fn);
 void pv_console_init_postirq(void);
 void pv_console_puts(const char *buf, size_t nr);
-size_t pv_console_rx(struct cpu_user_regs *regs);
+size_t pv_console_rx(void);
 evtchn_port_t pv_console_evtchn(void);
 
 #else
@@ -18,7 +18,7 @@ static inline void pv_console_init(void)
 static inline void pv_console_set_rx_handler(serial_rx_fn fn) { }
 static inline void pv_console_init_postirq(void) { }
 static inline void pv_console_puts(const char *buf, size_t nr) { }
-static inline size_t pv_console_rx(struct cpu_user_regs *regs) { return 0; }
+static inline size_t pv_console_rx(void) { return 0; }
 
 #endif /* !CONFIG_XEN_GUEST */
 #endif /* __XEN_PV_CONSOLE_H__ */



From xen-devel-bounces@lists.xenproject.org Thu Jan 11 07:34:35 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 11 Jan 2024 07:34:35 +0000
Received: from list by lists.xenproject.org with outflank-mailman.665949.1036302 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNpaE-0000XS-TM; Thu, 11 Jan 2024 07:34:34 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 665949.1036302; Thu, 11 Jan 2024 07:34:34 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNpaE-0000XL-QL; Thu, 11 Jan 2024 07:34:34 +0000
Received: by outflank-mailman (input) for mailman id 665949;
 Thu, 11 Jan 2024 07:34:33 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=YFj+=IV=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rNpaD-0000XC-OO
 for xen-devel@lists.xenproject.org; Thu, 11 Jan 2024 07:34:33 +0000
Received: from mail-wm1-x336.google.com (mail-wm1-x336.google.com
 [2a00:1450:4864:20::336])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id dc9aadaf-b053-11ee-98f0-6d05b1d4d9a1;
 Thu, 11 Jan 2024 08:34:32 +0100 (CET)
Received: by mail-wm1-x336.google.com with SMTP id
 5b1f17b1804b1-40e60e13581so1653715e9.1
 for <xen-devel@lists.xenproject.org>; Wed, 10 Jan 2024 23:34:32 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 d6-20020a056000114600b003366a9cb0d1sm444087wrx.92.2024.01.10.23.34.31
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 10 Jan 2024 23:34:31 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: dc9aadaf-b053-11ee-98f0-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1704958472; x=1705563272; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:references:cc:to
         :from:content-language:subject:user-agent:mime-version:date
         :message-id:from:to:cc:subject:date:message-id:reply-to;
        bh=oZKCYOY6gg3N8LW61PDUiaDApFPPurPi/J2T7sVSPdg=;
        b=N2j4rO7/S+XmTPoGdFpAWuiF5LOKyPQeVsXICi3HUfxGYNjC8qYx2rtTQeSntGB83i
         4n+MLfolAdp4ddeDqhWHJDILkOvU4rr6vkH1yUo/l5NMoD/v8kAqettQaSWlXcdmKwXi
         qybgOFjsmCtERMZol5MaIN21eaji3GfQDxOyJJKT0tz6sKZAZSuAk8dlBmwrzSOWdh/Q
         OMlVHYqGWIJuDtdYHi8CsJlY8vwonSn3OvUSbTUEQocNgDMbK6UrkY9Zp52ocr+uipWN
         ctrQziUZuYwEn6DDSdazGMp2VHrMWwL9ASMxD7rw2D7fIyZl0/h9S1Zk16f3pg0ObclS
         aGgg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704958472; x=1705563272;
        h=content-transfer-encoding:in-reply-to:autocrypt:references:cc:to
         :from:content-language:subject:user-agent:mime-version:date
         :message-id:x-gm-message-state:from:to:cc:subject:date:message-id
         :reply-to;
        bh=oZKCYOY6gg3N8LW61PDUiaDApFPPurPi/J2T7sVSPdg=;
        b=EKWn6BWSQFGTniCcbYOmQiCEwZGi9Ny2c995Omcq4o7GOV1SgFCzRFAmlXU9iBr0QY
         8GyA+1w/3455rRbIct6yt+Bj4ILhJVJS5Pij1Qi8PYEDcGUAW+CMcgyqXFditZ/9NdEc
         wd1dJPnv2auJC3zWDJfZsUnut5Zp+YKqHphqNUAmSnSVt8BfzCeyBghIoDg6ADJkhSCo
         pSTUSaGhIGNscxhkPNEEZdeOfB44If8dIw6YQgYHRVj5CK2TfVXcbZF+gsthHvMAPR/I
         Eo1qTjvAWsS6hlR91WXi4JQb7kUQy3UPiYoy2ykXNNnQeQcJPai2BK9+QyScEeQ+k1yn
         VMWA==
X-Gm-Message-State: AOJu0YzXwqqYcDj0v09+D/xu9Qnzx6DYSU+9yDMFflYWgPbn7CjW6Hf/
	0xPofrACCtYXhNAlcUZmpVRda0+St+N1U2aDioXSUFruYg==
X-Google-Smtp-Source: AGHT+IHLJlz2c/qbYVyOLjZctY3pLI6OSnMk/W+Ulnl4UM8Mb2lIMCrBge74IAUwiV/oUu+Fgj+CmQ==
X-Received: by 2002:a05:600c:314f:b0:40e:49ac:e4a6 with SMTP id h15-20020a05600c314f00b0040e49ace4a6mr107078wmo.171.1704958472053;
        Wed, 10 Jan 2024 23:34:32 -0800 (PST)
Message-ID: <05b1284a-988c-4f91-9cde-4751332aaa96@suse.com>
Date: Thu, 11 Jan 2024 08:34:31 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: [PATCH 5/8] serial: drop serial_[rt]x_interrupt()'s regs parameter
Content-Language: en-US
From: Jan Beulich <jbeulich@suse.com>
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 George Dunlap <george.dunlap@citrix.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>,
 Bertrand Marquis <bertrand.marquis@arm.com>,
 Michal Orzel <michal.orzel@amd.com>
References: <1ab231ec-5e3c-4662-8530-2213bc52bb7c@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <1ab231ec-5e3c-4662-8530-2213bc52bb7c@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

In the the polling functions (ab)using set_irq_regs() is necessary
to balance the change. This is in preparation of dropping the register
parameters from IRQ handler functions.

Signed-off-by: Jan Beulich <jbeulich@suse.com>

--- a/xen/drivers/char/cadence-uart.c
+++ b/xen/drivers/char/cadence-uart.c
@@ -51,7 +51,7 @@ static void cuart_interrupt(int irq, voi
         /* ACK.  */
         if ( status & UART_SR_INTR_RTRIG )
         {
-            serial_rx_interrupt(port, regs);
+            serial_rx_interrupt(port);
             cuart_write(uart, R_UART_CISR, UART_SR_INTR_RTRIG);
         }
     } while ( status & UART_SR_INTR_RTRIG );
--- a/xen/drivers/char/ehci-dbgp.c
+++ b/xen/drivers/char/ehci-dbgp.c
@@ -1253,6 +1253,7 @@ static void cf_check _ehci_dbgp_poll(str
     unsigned long flags;
     unsigned int timeout = MICROSECS(DBGP_CHECK_INTERVAL);
     bool empty = false;
+    struct cpu_user_regs *old_regs;
 
     if ( !dbgp->ehci_debug )
         return;
@@ -1268,11 +1269,16 @@ static void cf_check _ehci_dbgp_poll(str
         spin_unlock_irqrestore(&port->tx_lock, flags);
     }
 
+    /* Mimic interrupt context. */
+    old_regs = set_irq_regs(regs);
+
     if ( dbgp->in.chunk )
-        serial_rx_interrupt(port, regs);
+        serial_rx_interrupt(port);
 
     if ( empty )
-        serial_tx_interrupt(port, regs);
+        serial_tx_interrupt(port);
+
+    set_irq_regs(old_regs);
 
     if ( spin_trylock_irqsave(&port->tx_lock, flags) )
     {
--- a/xen/drivers/char/exynos4210-uart.c
+++ b/xen/drivers/char/exynos4210-uart.c
@@ -81,7 +81,7 @@ static void exynos4210_uart_interrupt(in
         if ( status & (UINTM_RXD | UINTM_ERROR) )
         {
             /* uart->regs[UINTM] |= RXD|ERROR; */
-            serial_rx_interrupt(port, regs);
+            serial_rx_interrupt(port);
             /* uart->regs[UINTM] &= ~(RXD|ERROR); */
             exynos4210_write(uart, UINTP, UINTM_RXD | UINTM_ERROR);
         }
@@ -89,7 +89,7 @@ static void exynos4210_uart_interrupt(in
         if ( status & (UINTM_TXD | UINTM_MODEM) )
         {
             /* uart->regs[UINTM] |= TXD|MODEM; */
-            serial_tx_interrupt(port, regs);
+            serial_tx_interrupt(port);
             /* uart->regs[UINTM] &= ~(TXD|MODEM); */
             exynos4210_write(uart, UINTP, UINTM_TXD | UINTM_MODEM);
         }
--- a/xen/drivers/char/imx-lpuart.c
+++ b/xen/drivers/char/imx-lpuart.c
@@ -48,10 +48,10 @@ static void imx_lpuart_interrupt(int irq
     rxcnt = imx_lpuart_read(uart, UARTWATER) >> UARTWATER_RXCNT_OFF;
 
     if ( (sts & UARTSTAT_RDRF) || (rxcnt > 0) )
-	    serial_rx_interrupt(port, regs);
+	    serial_rx_interrupt(port);
 
     if ( sts & UARTSTAT_TDRE )
-	    serial_tx_interrupt(port, regs);
+	    serial_tx_interrupt(port);
 
     imx_lpuart_write(uart, UARTSTAT, sts);
 }
--- a/xen/drivers/char/meson-uart.c
+++ b/xen/drivers/char/meson-uart.c
@@ -69,10 +69,10 @@ static void meson_uart_interrupt(int irq
     uint32_t st = readl(uart->regs + AML_UART_STATUS_REG);
 
     if ( !(st & AML_UART_RX_FIFO_EMPTY) )
-        serial_rx_interrupt(port, regs);
+        serial_rx_interrupt(port);
 
     if ( !(st & AML_UART_TX_FIFO_FULL) )
-        serial_tx_interrupt(port, regs);
+        serial_tx_interrupt(port);
 }
 
 static void __init meson_uart_init_preirq(struct serial_port *port)
--- a/xen/drivers/char/mvebu-uart.c
+++ b/xen/drivers/char/mvebu-uart.c
@@ -76,10 +76,10 @@ static void mvebu3700_uart_interrupt(int
 
     if ( st & (STATUS_RX_RDY | STATUS_OVR_ERR | STATUS_FRM_ERR |
                STATUS_BRK_DET) )
-        serial_rx_interrupt(port, regs);
+        serial_rx_interrupt(port);
 
     if ( st & STATUS_TX_RDY )
-        serial_tx_interrupt(port, regs);
+        serial_tx_interrupt(port);
 }
 
 static void __init mvebu3700_uart_init_preirq(struct serial_port *port)
--- a/xen/drivers/char/ns16550.c
+++ b/xen/drivers/char/ns16550.c
@@ -188,9 +188,9 @@ static void cf_check ns16550_interrupt(
         u8 lsr = ns_read_reg(uart, UART_LSR);
 
         if ( (lsr & uart->lsr_mask) == uart->lsr_mask )
-            serial_tx_interrupt(port, regs);
+            serial_tx_interrupt(port);
         if ( lsr & UART_LSR_DR )
-            serial_rx_interrupt(port, regs);
+            serial_rx_interrupt(port);
 
         /* A "busy-detect" condition is observed on Allwinner/sunxi UART
          * after LCR is written during setup. It needs to be cleared at
@@ -211,22 +211,27 @@ static void cf_check __ns16550_poll(stru
 {
     struct serial_port *port = this_cpu(poll_port);
     struct ns16550 *uart = port->uart;
+    struct cpu_user_regs *old_regs;
 
     if ( uart->intr_works )
         return; /* Interrupts work - no more polling */
 
+    /* Mimic interrupt context. */
+    old_regs = set_irq_regs(regs);
+
     while ( ns_read_reg(uart, UART_LSR) & UART_LSR_DR )
     {
         if ( ns16550_ioport_invalid(uart) )
             goto out;
 
-        serial_rx_interrupt(port, regs);
+        serial_rx_interrupt(port);
     }
 
     if ( ( ns_read_reg(uart, UART_LSR) & uart->lsr_mask ) == uart->lsr_mask )
-        serial_tx_interrupt(port, regs);
+        serial_tx_interrupt(port);
 
 out:
+    set_irq_regs(old_regs);
     set_timer(&uart->timer, NOW() + MILLISECS(uart->timeout_ms));
 }
 
--- a/xen/drivers/char/omap-uart.c
+++ b/xen/drivers/char/omap-uart.c
@@ -70,9 +70,9 @@ static void omap_uart_interrupt(int irq,
     {
         lsr = omap_read(uart, UART_LSR) & 0xff;
 	if ( lsr & UART_LSR_THRE )
-            serial_tx_interrupt(port, regs);
+            serial_tx_interrupt(port);
 	if ( lsr & UART_LSR_DR )
-            serial_rx_interrupt(port, regs);
+            serial_rx_interrupt(port);
 
         if ( port->txbufc == port->txbufp ) {
             reg = omap_read(uart, UART_IER);
--- a/xen/drivers/char/pl011.c
+++ b/xen/drivers/char/pl011.c
@@ -95,7 +95,7 @@ static void pl011_interrupt(int irq, voi
             pl011_write(uart, ICR, status & ~(TXI|RTI|RXI));
 
             if ( status & (RTI|RXI) )
-                serial_rx_interrupt(port, regs);
+                serial_rx_interrupt(port);
 
             /* TODO
                 if ( status & (DSRMI|DCDMI|CTSMI|RIMI) )
@@ -103,7 +103,7 @@ static void pl011_interrupt(int irq, voi
             */
 
             if ( status & (TXI) )
-                serial_tx_interrupt(port, regs);
+                serial_tx_interrupt(port);
 
             status = pl011_intr_status(uart);
         } while (status != 0);
--- a/xen/drivers/char/scif-uart.c
+++ b/xen/drivers/char/scif-uart.c
@@ -119,11 +119,11 @@ static void scif_uart_interrupt(int irq,
     {
         /* TX Interrupt */
         if ( status & SCFSR_TDFE )
-            serial_tx_interrupt(port, regs);
+            serial_tx_interrupt(port);
 
         /* RX Interrupt */
         if ( status & (SCFSR_RDF | SCFSR_DR) )
-            serial_rx_interrupt(port, regs);
+            serial_rx_interrupt(port);
 
         /* Error Interrupt */
         if ( status & params->error_mask )
--- a/xen/drivers/char/serial.c
+++ b/xen/drivers/char/serial.c
@@ -45,7 +45,7 @@ static inline void serial_stop_tx(struct
         port->driver->stop_tx(port);
 }
 
-void serial_rx_interrupt(struct serial_port *port, struct cpu_user_regs *regs)
+void serial_rx_interrupt(struct serial_port *port)
 {
     char c;
     serial_rx_fn fn = NULL;
@@ -71,7 +71,7 @@ void serial_rx_interrupt(struct serial_p
         fn(c & 0x7f);
 }
 
-void serial_tx_interrupt(struct serial_port *port, struct cpu_user_regs *regs)
+void serial_tx_interrupt(struct serial_port *port)
 {
     int i, n;
     unsigned long flags;
--- a/xen/drivers/char/xhci-dbc.c
+++ b/xen/drivers/char/xhci-dbc.c
@@ -1164,6 +1164,7 @@ static void cf_check dbc_uart_poll(void
     struct dbc_uart *uart = port->uart;
     struct dbc *dbc = &uart->dbc;
     unsigned long flags = 0;
+    struct cpu_user_regs *old_regs;
 
     if ( spin_trylock_irqsave(&port->tx_lock, flags) )
     {
@@ -1175,10 +1176,15 @@ static void cf_check dbc_uart_poll(void
         spin_unlock_irqrestore(&port->tx_lock, flags);
     }
 
+    /* Mimic interrupt context. */
+    old_regs = set_irq_regs(guest_cpu_user_regs());
+
     while ( dbc_work_ring_size(&dbc->dbc_iwork) )
-        serial_rx_interrupt(port, guest_cpu_user_regs());
+        serial_rx_interrupt(port);
+
+    serial_tx_interrupt(port);
 
-    serial_tx_interrupt(port, guest_cpu_user_regs());
+    set_irq_regs(old_regs);
     set_timer(&uart->timer, NOW() + MICROSECS(DBC_POLL_INTERVAL));
 }
 
--- a/xen/include/xen/serial.h
+++ b/xen/include/xen/serial.h
@@ -12,8 +12,6 @@
 #include <xen/init.h>
 #include <xen/spinlock.h>
 
-struct cpu_user_regs;
-
 /* Register a character-receive hook on the specified COM port. */
 typedef void (*serial_rx_fn)(char c);
 void serial_set_rx_handler(int handle, serial_rx_fn fn);
@@ -155,8 +153,8 @@ void serial_register_uart(int idx, struc
 /* Place the serial port into asynchronous transmit mode. */
 void serial_async_transmit(struct serial_port *port);
 /* Process work in interrupt context. */
-void serial_rx_interrupt(struct serial_port *port, struct cpu_user_regs *regs);
-void serial_tx_interrupt(struct serial_port *port, struct cpu_user_regs *regs);
+void serial_rx_interrupt(struct serial_port *port);
+void serial_tx_interrupt(struct serial_port *port);
 
 /*
  * Initialisers for individual uart drivers.



From xen-devel-bounces@lists.xenproject.org Thu Jan 11 07:35:30 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 11 Jan 2024 07:35:30 +0000
Received: from list by lists.xenproject.org with outflank-mailman.665955.1036313 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNpb5-00018n-Ay; Thu, 11 Jan 2024 07:35:27 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 665955.1036313; Thu, 11 Jan 2024 07:35:27 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNpb5-00018g-8J; Thu, 11 Jan 2024 07:35:27 +0000
Received: by outflank-mailman (input) for mailman id 665955;
 Thu, 11 Jan 2024 07:35:26 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=YFj+=IV=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rNpb4-00018Y-PB
 for xen-devel@lists.xenproject.org; Thu, 11 Jan 2024 07:35:26 +0000
Received: from mail-wr1-x42e.google.com (mail-wr1-x42e.google.com
 [2a00:1450:4864:20::42e])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id fc2a3a49-b053-11ee-98f0-6d05b1d4d9a1;
 Thu, 11 Jan 2024 08:35:25 +0100 (CET)
Received: by mail-wr1-x42e.google.com with SMTP id
 ffacd0b85a97d-336755f1688so4272290f8f.0
 for <xen-devel@lists.xenproject.org>; Wed, 10 Jan 2024 23:35:25 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 d6-20020a056000114600b003366a9cb0d1sm444087wrx.92.2024.01.10.23.35.24
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 10 Jan 2024 23:35:24 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: fc2a3a49-b053-11ee-98f0-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1704958525; x=1705563325; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:references:cc:to
         :from:content-language:subject:user-agent:mime-version:date
         :message-id:from:to:cc:subject:date:message-id:reply-to;
        bh=TMrbBvkZhskVDNFDVa776VDzvxg6i1Meo4j2L0PFpIY=;
        b=Ka9lgTFDG9SrMk16tJKPHQIDGylIVs1SfFFFHNdG1s55miL2E9asJCyQSskcL5kUjn
         GbDzflDaGE2UzXEzT96SOHoeXnbX5ijireGrDtkpXy9hskQ55eD1anddNAelOE5tQV2q
         Iz8Qbw3/EHt+AwCYS0KlwirEsIIH98cl0jC8iNITHW7Dwx0Ctb7BWpzz0h/HNIr1192j
         es576RCLuZRmUMEtQb4irLw/rpDxn2fNueP5pojLqB2kQsTPUraDwI4Q3xhxQ9+mWpIy
         glcTJ08WnRzMjxbZ0EVuuQrbfByuRMPvO0v1MnDZFFQYR/KhD0QIMpZcQ86UofMSODXf
         gsdA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704958525; x=1705563325;
        h=content-transfer-encoding:in-reply-to:autocrypt:references:cc:to
         :from:content-language:subject:user-agent:mime-version:date
         :message-id:x-gm-message-state:from:to:cc:subject:date:message-id
         :reply-to;
        bh=TMrbBvkZhskVDNFDVa776VDzvxg6i1Meo4j2L0PFpIY=;
        b=tRI64Z/tFgDiqRLX4hT6ZiediXAfd12I++zd5w/gt+F5nHuNNSSVDx0/lfXNmsTlEh
         6hsv7XM8OaG6iU5RDQMBAdlmL6hVp8YHcxWVLgiZuoIRpHE2nvYIi1UxERqO87xy86VY
         nb3Tp9D4bH3Sj9mEb4vVUdzBbpdaPVvR4A9W+ePH6z1+gE50LVQHGaSRna5uzIJrmBsV
         /xctGBh5nR1h0aPO4khNazyPkamCJMS+xcmYAPl5/MhPEOVX5SfsZJ8sXJ0BWp+92fj9
         qtmcnrXAKCl1woRbT37hxNPdNSrYViflLrG712kB1NLr777bG+ZYUT7KIgQSiQeKuL1g
         7D3w==
X-Gm-Message-State: AOJu0YyfTRzdePQ4ldgktcfQyZIAv03yZCn0GAOhHRvjsddSCYWKA7EQ
	0UOhwA32l++RKBzE+qDsLaqtMXycM1W3ETXo0B5dcTiaZg==
X-Google-Smtp-Source: AGHT+IGvxnj4i0FkUHie6I9iC/M+vw+/zXVrk6qxwayAQIhoCucG+Q4PXg7/4v+ZtPGxmp/Qn/crhA==
X-Received: by 2002:a5d:440e:0:b0:336:779b:97a1 with SMTP id z14-20020a5d440e000000b00336779b97a1mr298049wrq.74.1704958525128;
        Wed, 10 Jan 2024 23:35:25 -0800 (PST)
Message-ID: <c6926627-aeb6-40dd-a85a-1be0b324bf49@suse.com>
Date: Thu, 11 Jan 2024 08:35:24 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: [PATCH 6/8] IRQ: drop register parameter from handler functions
Content-Language: en-US
From: Jan Beulich <jbeulich@suse.com>
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 George Dunlap <george.dunlap@citrix.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Bertrand Marquis <bertrand.marquis@arm.com>,
 Michal Orzel <michal.orzel@amd.com>, Kevin Tian <kevin.tian@intel.com>
References: <1ab231ec-5e3c-4662-8530-2213bc52bb7c@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <1ab231ec-5e3c-4662-8530-2213bc52bb7c@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

It's simply not needed anymore. Note how Linux made this change many
years ago already, in 2.6.19 (late 2006, see [1]).

Signed-off-by: Jan Beulich <jbeulich@suse.com>

[1] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit?id=7d12e780e003f93433d49ce78cfedf4b4c52adc5

--- a/xen/arch/arm/gic.c
+++ b/xen/arch/arm/gic.c
@@ -397,7 +397,7 @@ void gic_interrupt(struct cpu_user_regs
     } while (1);
 }
 
-static void maintenance_interrupt(int irq, void *dev_id, struct cpu_user_regs *regs)
+static void maintenance_interrupt(int irq, void *dev_id)
 {
     /*
      * This is a dummy interrupt handler.
--- a/xen/arch/arm/irq.c
+++ b/xen/arch/arm/irq.c
@@ -182,8 +182,7 @@ void irq_set_affinity(struct irq_desc *d
 }
 
 int request_irq(unsigned int irq, unsigned int irqflags,
-                void (*handler)(int irq, void *dev_id,
-                                struct cpu_user_regs *regs),
+                void (*handler)(int irq, void *dev_id),
                 const char *devname, void *dev_id)
 {
     struct irqaction *action;
@@ -276,7 +275,7 @@ void do_IRQ(struct cpu_user_regs *regs,
 
     do
     {
-        action->handler(irq, action->dev_id, regs);
+        action->handler(irq, action->dev_id);
         action = action->next;
     } while ( action );
 
--- a/xen/arch/arm/time.c
+++ b/xen/arch/arm/time.c
@@ -241,7 +241,7 @@ int reprogram_timer(s_time_t timeout)
 }
 
 /* Handle the firing timer */
-static void htimer_interrupt(int irq, void *dev_id, struct cpu_user_regs *regs)
+static void htimer_interrupt(int irq, void *dev_id)
 {
     if ( unlikely(!(READ_SYSREG(CNTHP_CTL_EL2) & CNTx_CTL_PENDING)) )
         return;
@@ -255,7 +255,7 @@ static void htimer_interrupt(int irq, vo
     WRITE_SYSREG(0, CNTHP_CTL_EL2);
 }
 
-static void vtimer_interrupt(int irq, void *dev_id, struct cpu_user_regs *regs)
+static void vtimer_interrupt(int irq, void *dev_id)
 {
     /*
      * Edge-triggered interrupts can be used for the virtual timer. Even
--- a/xen/arch/x86/irq.c
+++ b/xen/arch/x86/irq.c
@@ -962,7 +962,7 @@ static int __init cf_check irq_ratelimit
 __initcall(irq_ratelimit_init);
 
 int __init request_irq(unsigned int irq, unsigned int irqflags,
-        void (*handler)(int irq, void *dev_id, struct cpu_user_regs *regs),
+        void (*handler)(int irq, void *dev_id),
         const char * devname, void *dev_id)
 {
     struct irqaction * action;
@@ -2009,7 +2009,7 @@ void do_IRQ(struct cpu_user_regs *regs)
         spin_unlock_irq(&desc->lock);
 
         tsc_in = tb_init_done ? get_cycles() : 0;
-        action->handler(irq, action->dev_id, regs);
+        action->handler(irq, action->dev_id);
         TRACE_3D(TRC_HW_IRQ_HANDLED, irq, tsc_in, get_cycles());
 
         spin_lock_irq(&desc->lock);
--- a/xen/arch/x86/hpet.c
+++ b/xen/arch/x86/hpet.c
@@ -237,8 +237,7 @@ again:
     }
 }
 
-static void cf_check hpet_interrupt_handler(
-    int irq, void *data, struct cpu_user_regs *regs)
+static void cf_check hpet_interrupt_handler(int irq, void *data)
 {
     struct hpet_event_channel *ch = data;
 
--- a/xen/arch/x86/time.c
+++ b/xen/arch/x86/time.c
@@ -198,8 +198,7 @@ static void smp_send_timer_broadcast_ipi
     }
 }
 
-static void cf_check timer_interrupt(
-    int irq, void *dev_id, struct cpu_user_regs *regs)
+static void cf_check timer_interrupt(int irq, void *dev_id)
 {
     ASSERT(local_irq_is_enabled());
 
--- a/xen/common/irq.c
+++ b/xen/common/irq.c
@@ -29,7 +29,7 @@ int init_one_irq_desc(struct irq_desc *d
     return err;
 }
 
-void cf_check no_action(int cpl, void *dev_id, struct cpu_user_regs *regs)
+void cf_check no_action(int cpl, void *dev_id)
 {
 }
 
--- a/xen/drivers/char/cadence-uart.c
+++ b/xen/drivers/char/cadence-uart.c
@@ -40,7 +40,7 @@ static struct cuart {
 #define cuart_read(uart, off)           readl((uart)->regs + (off))
 #define cuart_write(uart, off,val)      writel((val), (uart)->regs + (off))
 
-static void cuart_interrupt(int irq, void *data, struct cpu_user_regs *regs)
+static void cuart_interrupt(int irq, void *data)
 {
     struct serial_port *port = data;
     struct cuart *uart = port->uart;
--- a/xen/drivers/char/exynos4210-uart.c
+++ b/xen/drivers/char/exynos4210-uart.c
@@ -45,7 +45,7 @@ static struct exynos4210_uart {
 #define exynos4210_read(uart, off)          readl((uart)->regs + off)
 #define exynos4210_write(uart, off, val)    writel(val, (uart->regs) + off)
 
-static void exynos4210_uart_interrupt(int irq, void *data, struct cpu_user_regs *regs)
+static void exynos4210_uart_interrupt(int irq, void *data)
 {
     struct serial_port *port = data;
     struct exynos4210_uart *uart = port->uart;
--- a/xen/drivers/char/imx-lpuart.c
+++ b/xen/drivers/char/imx-lpuart.c
@@ -37,8 +37,7 @@ static struct imx_lpuart {
     struct vuart_info vuart;
 } imx8_com;
 
-static void imx_lpuart_interrupt(int irq, void *data,
-                                 struct cpu_user_regs *regs)
+static void imx_lpuart_interrupt(int irq, void *data)
 {
     struct serial_port *port = data;
     struct imx_lpuart *uart = port->uart;
--- a/xen/drivers/char/meson-uart.c
+++ b/xen/drivers/char/meson-uart.c
@@ -61,8 +61,7 @@ static struct meson_uart {
     struct vuart_info vuart;
 } meson_com;
 
-static void meson_uart_interrupt(int irq, void *data,
-                                 struct cpu_user_regs *regs)
+static void meson_uart_interrupt(int irq, void *data)
 {
     struct serial_port *port = data;
     struct meson_uart *uart = port->uart;
--- a/xen/drivers/char/mvebu-uart.c
+++ b/xen/drivers/char/mvebu-uart.c
@@ -67,8 +67,7 @@ static struct mvebu3700_uart {
 #define mvebu3700_read(uart, off)           readl((uart)->regs + (off))
 #define mvebu3700_write(uart, off, val)     writel(val, (uart)->regs + (off))
 
-static void mvebu3700_uart_interrupt(int irq, void *data,
-                                     struct cpu_user_regs *regs)
+static void mvebu3700_uart_interrupt(int irq, void *data)
 {
     struct serial_port *port = data;
     struct mvebu3700_uart *uart = port->uart;
--- a/xen/drivers/char/ns16550.c
+++ b/xen/drivers/char/ns16550.c
@@ -175,8 +175,7 @@ static void handle_dw_usr_busy_quirk(str
     }
 }
 
-static void cf_check ns16550_interrupt(
-    int irq, void *dev_id, struct cpu_user_regs *regs)
+static void cf_check ns16550_interrupt(int irq, void *dev_id)
 {
     struct serial_port *port = dev_id;
     struct ns16550 *uart = port->uart;
--- a/xen/drivers/char/omap-uart.c
+++ b/xen/drivers/char/omap-uart.c
@@ -59,7 +59,7 @@ static struct omap_uart {
     struct vuart_info vuart;
 } omap_com = {0};
 
-static void omap_uart_interrupt(int irq, void *data, struct cpu_user_regs *regs)
+static void omap_uart_interrupt(int irq, void *data)
 {
     struct serial_port *port = data;
     struct omap_uart *uart = port->uart;
--- a/xen/drivers/char/pl011.c
+++ b/xen/drivers/char/pl011.c
@@ -82,7 +82,7 @@ static unsigned int pl011_intr_status(st
     return (pl011_read(uart, RIS) & pl011_read(uart, IMSC));
 }
 
-static void pl011_interrupt(int irq, void *data, struct cpu_user_regs *regs)
+static void pl011_interrupt(int irq, void *data)
 {
     struct serial_port *port = data;
     struct pl011 *uart = port->uart;
--- a/xen/drivers/char/scif-uart.c
+++ b/xen/drivers/char/scif-uart.c
@@ -102,7 +102,7 @@ static const struct port_params port_par
     },
 };
 
-static void scif_uart_interrupt(int irq, void *data, struct cpu_user_regs *regs)
+static void scif_uart_interrupt(int irq, void *data)
 {
     struct serial_port *port = data;
     struct scif_uart *uart = port->uart;
--- a/xen/drivers/passthrough/amd/iommu_init.c
+++ b/xen/drivers/passthrough/amd/iommu_init.c
@@ -718,8 +718,7 @@ static void cf_check do_amd_iommu_irq(vo
 
 static DECLARE_SOFTIRQ_TASKLET(amd_iommu_irq_tasklet, do_amd_iommu_irq, NULL);
 
-static void cf_check iommu_interrupt_handler(
-    int irq, void *dev_id, struct cpu_user_regs *regs)
+static void cf_check iommu_interrupt_handler(int irq, void *dev_id)
 {
     unsigned long flags;
     struct amd_iommu *iommu = dev_id;
--- a/xen/drivers/passthrough/arm/smmu.c
+++ b/xen/drivers/passthrough/arm/smmu.c
@@ -1097,16 +1097,14 @@ static irqreturn_t arm_smmu_global_fault
 }
 
 /* Xen: Interrupt handlers wrapper */
-static void arm_smmu_context_fault_xen(int irq, void *dev,
-				       struct cpu_user_regs *regs)
+static void arm_smmu_context_fault_xen(int irq, void *dev)
 {
 	arm_smmu_context_fault(irq, dev);
 }
 
 #define arm_smmu_context_fault arm_smmu_context_fault_xen
 
-static void arm_smmu_global_fault_xen(int irq, void *dev,
-				      struct cpu_user_regs *regs)
+static void arm_smmu_global_fault_xen(int irq, void *dev)
 {
 	arm_smmu_global_fault(irq, dev);
 }
--- a/xen/drivers/passthrough/arm/smmu-v3.c
+++ b/xen/drivers/passthrough/arm/smmu-v3.c
@@ -880,8 +880,7 @@ static void arm_smmu_priq_tasklet(void *
 
 static int arm_smmu_device_disable(struct arm_smmu_device *smmu);
 
-static void arm_smmu_gerror_handler(int irq, void *dev,
-				struct cpu_user_regs *regs)
+static void arm_smmu_gerror_handler(int irq, void *dev)
 {
 	u32 gerror, gerrorn, active;
 	struct arm_smmu_device *smmu = dev;
@@ -926,8 +925,7 @@ static void arm_smmu_gerror_handler(int
 	writel(gerror, smmu->base + ARM_SMMU_GERRORN);
 }
 
-static void arm_smmu_combined_irq_handler(int irq, void *dev,
-				struct cpu_user_regs *regs)
+static void arm_smmu_combined_irq_handler(int irq, void *dev)
 {
 	struct arm_smmu_device *smmu = dev;
 
@@ -945,16 +943,14 @@ static void arm_smmu_combined_irq_taskle
 		arm_smmu_priq_tasklet(dev);
 }
 
-static void arm_smmu_evtq_irq_tasklet(int irq, void *dev,
-				struct cpu_user_regs *regs)
+static void arm_smmu_evtq_irq_tasklet(int irq, void *dev)
 {
 	struct arm_smmu_device *smmu = dev;
 
 	tasklet_schedule(&(smmu->evtq_irq_tasklet));
 }
 
-static void arm_smmu_priq_irq_tasklet(int irq, void *dev,
-				struct cpu_user_regs *regs)
+static void arm_smmu_priq_irq_tasklet(int irq, void *dev)
 {
 	struct arm_smmu_device *smmu = dev;
 
--- a/xen/drivers/passthrough/vtd/iommu.c
+++ b/xen/drivers/passthrough/vtd/iommu.c
@@ -1119,8 +1119,7 @@ static void cf_check do_iommu_page_fault
         __do_iommu_page_fault(drhd->iommu);
 }
 
-static void cf_check iommu_page_fault(
-    int irq, void *dev_id, struct cpu_user_regs *regs)
+static void cf_check iommu_page_fault(int irq, void *dev_id)
 {
     /*
      * Just flag the tasklet as runnable. This is fine, according to VT-d
--- a/xen/include/xen/irq.h
+++ b/xen/include/xen/irq.h
@@ -18,7 +18,7 @@
     ASSERT(!in_irq() && (local_irq_is_enabled() || num_online_cpus() <= 1))
 
 struct irqaction {
-    void (*handler)(int irq, void *dev_id, struct cpu_user_regs *regs);
+    void (*handler)(int irq, void *dev_id);
     const char *name;
     void *dev_id;
     bool free_on_release;
@@ -119,12 +119,11 @@ extern int setup_irq(unsigned int irq, u
                      struct irqaction *new);
 extern void release_irq(unsigned int irq, const void *dev_id);
 extern int request_irq(unsigned int irq, unsigned int irqflags,
-               void (*handler)(int irq, void *dev_id,
-                     struct cpu_user_regs *regs),
+               void (*handler)(int irq, void *dev_id),
                const char *devname, void *dev_id);
 
 extern hw_irq_controller no_irq_type;
-void cf_check no_action(int cpl, void *dev_id, struct cpu_user_regs *regs);
+void cf_check no_action(int cpl, void *dev_id);
 unsigned int cf_check irq_startup_none(struct irq_desc *desc);
 void cf_check irq_actor_none(struct irq_desc *desc);
 #define irq_shutdown_none irq_actor_none



From xen-devel-bounces@lists.xenproject.org Thu Jan 11 07:36:12 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 11 Jan 2024 07:36:12 +0000
Received: from list by lists.xenproject.org with outflank-mailman.665958.1036322 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNpbn-0001eG-JZ; Thu, 11 Jan 2024 07:36:11 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 665958.1036322; Thu, 11 Jan 2024 07:36:11 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNpbn-0001e9-Gu; Thu, 11 Jan 2024 07:36:11 +0000
Received: by outflank-mailman (input) for mailman id 665958;
 Thu, 11 Jan 2024 07:36:10 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=YFj+=IV=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rNpbm-00018Y-GC
 for xen-devel@lists.xenproject.org; Thu, 11 Jan 2024 07:36:10 +0000
Received: from mail-wr1-x42e.google.com (mail-wr1-x42e.google.com
 [2a00:1450:4864:20::42e])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 167aee1a-b054-11ee-98f0-6d05b1d4d9a1;
 Thu, 11 Jan 2024 08:36:09 +0100 (CET)
Received: by mail-wr1-x42e.google.com with SMTP id
 ffacd0b85a97d-33761e291c1so2929717f8f.0
 for <xen-devel@lists.xenproject.org>; Wed, 10 Jan 2024 23:36:09 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 d6-20020a056000114600b003366a9cb0d1sm444087wrx.92.2024.01.10.23.36.08
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 10 Jan 2024 23:36:09 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 167aee1a-b054-11ee-98f0-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1704958569; x=1705563369; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:references:cc:to
         :from:content-language:subject:user-agent:mime-version:date
         :message-id:from:to:cc:subject:date:message-id:reply-to;
        bh=wsJ7I3Jk/zIngfzbN4LmAFxnYbDQ+MHJGcXuNQpvhR0=;
        b=RlGdGYBIY3n2TtmHTQuesvPhoFS0+uPksPAUd2mqCJeBc7vpfAXK6txTjPuhBapKWN
         GzCfFNeuFGnf8b9buECKLPSEN003zpuJX8KWZBgRmUwj5KjMAhD1aXPcIRnU0NDUZPRb
         lLevMxIsSCUcnaFQHunK5BK4KxWxiDoelOchK+omRRRmD8DBqYAZ8u45dtbl4ZAurxqk
         WY2Udahagp4/cseKCaK4jDu/ZI++qg5pfU/ZJ/HGeyxzeZqXT8gEiOavqa9JZY6Hw9FU
         mFbTnMa2TimDQs74HYDTZlfDkmXpdZ4rj52rK9UMNHtLN86Zl0TCRxmt3dTxcvyg8OnT
         KF2Q==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704958569; x=1705563369;
        h=content-transfer-encoding:in-reply-to:autocrypt:references:cc:to
         :from:content-language:subject:user-agent:mime-version:date
         :message-id:x-gm-message-state:from:to:cc:subject:date:message-id
         :reply-to;
        bh=wsJ7I3Jk/zIngfzbN4LmAFxnYbDQ+MHJGcXuNQpvhR0=;
        b=fpJyPOXYlpU670dmkm2091ej2vknp3sJb8GUfbjkiti5f73XT4TVsDU9LLl6YduDvy
         Tx86lClXByNXZk7H05xuglFDyMgGg3L/SoWGEz4d/F0X8SlUYFODPwZviQbwkMXF2Bt7
         CtNDE4jcTD96wv34DirvxWDB/6ou7tP6aXgMDQlR8FtVHRbU5nUaIptsfuBgFwQWDN3m
         o9aF+tQf0GmpmN64GPpRB+mH4lTNUFqM3XN6UmVRQvEE/JNg4Mbcat7Iz9CRk7V6Pzxf
         OfiD8w8H9cphvywyXArIyRf2ujZ3ThYnIVnneKypjdtA5788FSgAJhsmhMoLob4uFkSL
         Xzmw==
X-Gm-Message-State: AOJu0YxtmNdOJCBuPaVme0B1YHp28o/Ncq52bftplSwgwQBV5C7iIcb3
	oUT/4sSWxbAdRPwPS3J9fp8gJn8vfEGlhViCqSFu8tNDUA==
X-Google-Smtp-Source: AGHT+IE3hOSLi7u6eZsceZeT2j0xRdDCG/3bXrXJZVUUgBtflr46yVh4GcwSgLEbkryx8nxxJNW/8A==
X-Received: by 2002:a05:600c:354a:b0:40d:891e:a0f1 with SMTP id i10-20020a05600c354a00b0040d891ea0f1mr119263wmq.7.1704958569288;
        Wed, 10 Jan 2024 23:36:09 -0800 (PST)
Message-ID: <a0078508-a0bf-4885-afdd-0f86cea611a4@suse.com>
Date: Thu, 11 Jan 2024 08:36:08 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: [PATCH 7/8] x86/vPMU: drop regs parameter from interrupt functions
Content-Language: en-US
From: Jan Beulich <jbeulich@suse.com>
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 George Dunlap <george.dunlap@citrix.com>, Wei Liu <wl@xen.org>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
References: <1ab231ec-5e3c-4662-8530-2213bc52bb7c@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <1ab231ec-5e3c-4662-8530-2213bc52bb7c@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

The vendor functions don't use the respective parameters at all. In
vpmu_do_interrupt() there's only a very limited area where the
outer context's state would be needed, retrievable by get_irq_regs().

This is in preparation of dropping the register parameters from direct
APIC vector handler functions.

Signed-off-by: Jan Beulich <jbeulich@suse.com>

--- a/xen/arch/x86/apic.c
+++ b/xen/arch/x86/apic.c
@@ -1412,7 +1412,7 @@ static void cf_check error_interrupt(str
 static void cf_check pmu_interrupt(struct cpu_user_regs *regs)
 {
     ack_APIC_irq();
-    vpmu_do_interrupt(regs);
+    vpmu_do_interrupt();
 }
 
 void __init apic_intr_init(void)
--- a/xen/arch/x86/cpu/vpmu.c
+++ b/xen/arch/x86/cpu/vpmu.c
@@ -158,7 +158,7 @@ static inline struct vcpu *choose_hwdom_
     return hardware_domain->vcpu[idx];
 }
 
-void vpmu_do_interrupt(struct cpu_user_regs *regs)
+void vpmu_do_interrupt(void)
 {
     struct vcpu *sampled = current, *sampling;
     struct vpmu_struct *vpmu;
@@ -239,6 +239,7 @@ void vpmu_do_interrupt(struct cpu_user_r
         else
 #endif
         {
+            const struct cpu_user_regs *regs = get_irq_regs();
             struct xen_pmu_regs *r = &vpmu->xenpmu_data->pmu.r.regs;
 
             if ( (vpmu_mode & XENPMU_MODE_SELF) )
@@ -301,7 +302,7 @@ void vpmu_do_interrupt(struct cpu_user_r
     /* We don't support (yet) HVM dom0 */
     ASSERT(sampling == sampled);
 
-    if ( !alternative_call(vpmu_ops.do_interrupt, regs) ||
+    if ( !alternative_call(vpmu_ops.do_interrupt) ||
          !is_vlapic_lvtpc_enabled(vlapic) )
         return;
 
--- a/xen/arch/x86/cpu/vpmu_amd.c
+++ b/xen/arch/x86/cpu/vpmu_amd.c
@@ -175,7 +175,7 @@ static void amd_vpmu_unset_msr_bitmap(st
     msr_bitmap_off(vpmu);
 }
 
-static int cf_check amd_vpmu_do_interrupt(struct cpu_user_regs *regs)
+static int cf_check amd_vpmu_do_interrupt(void)
 {
     return 1;
 }
--- a/xen/arch/x86/cpu/vpmu_intel.c
+++ b/xen/arch/x86/cpu/vpmu_intel.c
@@ -772,7 +772,7 @@ static void cf_check core2_vpmu_dump(con
     }
 }
 
-static int cf_check core2_vpmu_do_interrupt(struct cpu_user_regs *regs)
+static int cf_check core2_vpmu_do_interrupt(void)
 {
     struct vcpu *v = current;
     u64 msr_content;
--- a/xen/arch/x86/include/asm/vpmu.h
+++ b/xen/arch/x86/include/asm/vpmu.h
@@ -31,7 +31,7 @@ struct arch_vpmu_ops {
     int (*initialise)(struct vcpu *v);
     int (*do_wrmsr)(unsigned int msr, uint64_t msr_content);
     int (*do_rdmsr)(unsigned int msr, uint64_t *msr_content);
-    int (*do_interrupt)(struct cpu_user_regs *regs);
+    int (*do_interrupt)(void);
     void (*arch_vpmu_destroy)(struct vcpu *v);
     int (*arch_vpmu_save)(struct vcpu *v, bool to_guest);
     int (*arch_vpmu_load)(struct vcpu *v, bool from_guest);
@@ -99,7 +99,7 @@ static inline bool vpmu_are_all_set(cons
 
 void vpmu_lvtpc_update(uint32_t val);
 int vpmu_do_msr(unsigned int msr, uint64_t *msr_content, bool is_write);
-void vpmu_do_interrupt(struct cpu_user_regs *regs);
+void vpmu_do_interrupt(void);
 void vpmu_initialise(struct vcpu *v);
 void vpmu_destroy(struct vcpu *v);
 void vpmu_save(struct vcpu *v);



From xen-devel-bounces@lists.xenproject.org Thu Jan 11 07:36:55 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 11 Jan 2024 07:36:55 +0000
Received: from list by lists.xenproject.org with outflank-mailman.665968.1036332 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNpcU-0002Bi-S4; Thu, 11 Jan 2024 07:36:54 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 665968.1036332; Thu, 11 Jan 2024 07:36:54 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNpcU-0002BZ-PE; Thu, 11 Jan 2024 07:36:54 +0000
Received: by outflank-mailman (input) for mailman id 665968;
 Thu, 11 Jan 2024 07:36:53 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=YFj+=IV=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rNpcT-000203-Df
 for xen-devel@lists.xenproject.org; Thu, 11 Jan 2024 07:36:53 +0000
Received: from mail-wm1-x32d.google.com (mail-wm1-x32d.google.com
 [2a00:1450:4864:20::32d])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 2f7f94bc-b054-11ee-9b0f-b553b5be7939;
 Thu, 11 Jan 2024 08:36:51 +0100 (CET)
Received: by mail-wm1-x32d.google.com with SMTP id
 5b1f17b1804b1-40e5bfa260bso6194715e9.3
 for <xen-devel@lists.xenproject.org>; Wed, 10 Jan 2024 23:36:51 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 d6-20020a056000114600b003366a9cb0d1sm444087wrx.92.2024.01.10.23.36.50
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 10 Jan 2024 23:36:51 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 2f7f94bc-b054-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1704958611; x=1705563411; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:references:cc:to
         :from:content-language:subject:user-agent:mime-version:date
         :message-id:from:to:cc:subject:date:message-id:reply-to;
        bh=GfRv3gongelxjdY816blQolB01Qj493E2xtw5+iJNEY=;
        b=ZZURtIiCjV5cM4DLpCWgATUShi9sa+8B0p199ITGP4lDFvamkDetwn2o/8Y/z4KB5b
         WQglwyX6smtoAtbrhV/L7R3wpdk5mZwoaS25SEAtw6OPQZwJ4/8QoEqIRvZG700RXpls
         mno1bql8Zekf1H5bPg5lluViLIY4hktp23U57/9BpKsEa9bhJNKrDImeJyT41tzycUeN
         z3TUaNLMxmpqGXcXAPkuXhTrp+Bgf4YI/rDJZXQXhxAS/PFfFwP/iapyFEkvKDF2WFSR
         OCwVC9d8hn2mcsKEZtxsgIJVGpwMFAyNB+ny/YgjSTLFjBgCTDsUxbx3sswJ/mjQEEal
         DjHA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704958611; x=1705563411;
        h=content-transfer-encoding:in-reply-to:autocrypt:references:cc:to
         :from:content-language:subject:user-agent:mime-version:date
         :message-id:x-gm-message-state:from:to:cc:subject:date:message-id
         :reply-to;
        bh=GfRv3gongelxjdY816blQolB01Qj493E2xtw5+iJNEY=;
        b=MhGBp0Is1iegFQ/Q/7Z2BkdI0B9PlHBbN9zT+2ByIclhrOg3UePOzt30iSBiNWjRtj
         jb4CxxhJYvzjbX6tn3jJAGkDexrlMv4dDIIxfcHjAgt1Ffm4vt6ni35bXtq2i1mBJKYG
         QoGqY/YA7ssSjO8271W5MMfZkz8BRZd8C8lX3mzS1tfJaYcExTy1XToer3u5dcLtLxuB
         vmL4uSfG9E31odJIf2TDIRJS4oeBI9Juwi2qn/ilE/KclFHolJnXvxmgRMn7LiClbk06
         CfGLQjrXS3TaSpu39X2vnMklYBprMHjN60f5ut7n4CoXjM+Ru7DPZKwenluR8C5yoYSP
         OdVA==
X-Gm-Message-State: AOJu0YyJumr+hqB5XPFwqhbwSY69y+U/Q13hlJEshLIMZDYdDbl2ZRwU
	eN/diDYkndyHTqTW+77LueLT8GzUJUFjmQFImQzJnbADmQ==
X-Google-Smtp-Source: AGHT+IG3tnoyxIZ9O3Bq7VsN87C/tYpYyQ1jZygtip84+LEZW3cYmflTHGa0hbvjQW32umKq7BSsLg==
X-Received: by 2002:a7b:c44d:0:b0:40d:9534:d214 with SMTP id l13-20020a7bc44d000000b0040d9534d214mr66929wmi.223.1704958611319;
        Wed, 10 Jan 2024 23:36:51 -0800 (PST)
Message-ID: <0afca177-4dce-4d73-8790-82256a620ec3@suse.com>
Date: Thu, 11 Jan 2024 08:36:50 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: [PATCH 8/8] x86/APIC: drop regs parameter from direct vector handler
 functions
Content-Language: en-US
From: Jan Beulich <jbeulich@suse.com>
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 George Dunlap <george.dunlap@citrix.com>, Wei Liu <wl@xen.org>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Kevin Tian <kevin.tian@intel.com>, Jun Nakajima <jun.nakajima@intel.com>
References: <1ab231ec-5e3c-4662-8530-2213bc52bb7c@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <1ab231ec-5e3c-4662-8530-2213bc52bb7c@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

The only place it was needed is in the spurious handler, and there we
can use get_irq_regs() instead.

Signed-off-by: Jan Beulich <jbeulich@suse.com>

--- a/xen/arch/x86/apic.c
+++ b/xen/arch/x86/apic.c
@@ -1324,7 +1324,7 @@ int reprogram_timer(s_time_t timeout)
     return apic_tmict || !timeout;
 }
 
-static void cf_check apic_timer_interrupt(struct cpu_user_regs *regs)
+static void cf_check apic_timer_interrupt(void)
 {
     ack_APIC_irq();
     perfc_incr(apic_timer);
@@ -1343,7 +1343,7 @@ void smp_send_state_dump(unsigned int cp
 /*
  * Spurious interrupts should _never_ happen with our APIC/SMP architecture.
  */
-static void cf_check spurious_interrupt(struct cpu_user_regs *regs)
+static void cf_check spurious_interrupt(void)
 {
     /*
      * Check if this is a vectored interrupt (most likely, as this is probably
@@ -1357,7 +1357,7 @@ static void cf_check spurious_interrupt(
         is_spurious = !nmi_check_continuation();
         if (this_cpu(state_dump_pending)) {
             this_cpu(state_dump_pending) = false;
-            dump_execstate(regs);
+            dump_execstate(get_irq_regs());
             is_spurious = false;
         }
 
@@ -1374,7 +1374,7 @@ static void cf_check spurious_interrupt(
  * This interrupt should never happen with our APIC/SMP architecture
  */
 
-static void cf_check error_interrupt(struct cpu_user_regs *regs)
+static void cf_check error_interrupt(void)
 {
     static const char *const esr_fields[] = {
         ", Send CS error",
@@ -1409,7 +1409,7 @@ static void cf_check error_interrupt(str
  * This interrupt handles performance counters interrupt
  */
 
-static void cf_check pmu_interrupt(struct cpu_user_regs *regs)
+static void cf_check pmu_interrupt(void)
 {
     ack_APIC_irq();
     vpmu_do_interrupt();
--- a/xen/arch/x86/cpu/mcheck/mce_intel.c
+++ b/xen/arch/x86/cpu/mcheck/mce_intel.c
@@ -58,7 +58,7 @@ bool __read_mostly lmce_support;
 #define MCE_RING                0x1
 static DEFINE_PER_CPU(int, last_state);
 
-static void cf_check intel_thermal_interrupt(struct cpu_user_regs *regs)
+static void cf_check intel_thermal_interrupt(void)
 {
     uint64_t msr_content;
     unsigned int cpu = smp_processor_id();
@@ -642,7 +642,7 @@ static void cpu_mcheck_disable(void)
         clear_cmci();
 }
 
-static void cf_check cmci_interrupt(struct cpu_user_regs *regs)
+static void cf_check cmci_interrupt(void)
 {
     mctelem_cookie_t mctc;
     struct mca_summary bs;
--- a/xen/arch/x86/guest/xen/xen.c
+++ b/xen/arch/x86/guest/xen/xen.c
@@ -158,7 +158,7 @@ static void __init init_memmap(void)
     }
 }
 
-static void cf_check xen_evtchn_upcall(struct cpu_user_regs *regs)
+static void cf_check xen_evtchn_upcall(void)
 {
     struct vcpu_info *vcpu_info = this_cpu(vcpu_info);
     unsigned long pending;
--- a/xen/arch/x86/hvm/vmx/vmx.c
+++ b/xen/arch/x86/hvm/vmx/vmx.c
@@ -2773,7 +2773,7 @@ static struct hvm_function_table __initd
 };
 
 /* Handle VT-d posted-interrupt when VCPU is blocked. */
-static void cf_check pi_wakeup_interrupt(struct cpu_user_regs *regs)
+static void cf_check pi_wakeup_interrupt(void)
 {
     struct vmx_vcpu *vmx, *tmp;
     spinlock_t *lock = &per_cpu(vmx_pi_blocking, smp_processor_id()).lock;
@@ -2805,7 +2805,7 @@ static void cf_check pi_wakeup_interrupt
 }
 
 /* Handle VT-d posted-interrupt when VCPU is running. */
-static void cf_check pi_notification_interrupt(struct cpu_user_regs *regs)
+static void cf_check pi_notification_interrupt(void)
 {
     ack_APIC_irq();
     this_cpu(irq_count)++;
--- a/xen/arch/x86/include/asm/irq.h
+++ b/xen/arch/x86/include/asm/irq.h
@@ -72,17 +72,15 @@ extern int opt_irq_vector_map;
 
 #define platform_legacy_irq(irq)	((irq) < 16)
 
-void cf_check event_check_interrupt(struct cpu_user_regs *regs);
-void cf_check invalidate_interrupt(struct cpu_user_regs *regs);
-void cf_check call_function_interrupt(struct cpu_user_regs *regs);
-void cf_check irq_move_cleanup_interrupt(struct cpu_user_regs *regs);
+void cf_check event_check_interrupt(void);
+void cf_check invalidate_interrupt(void);
+void cf_check call_function_interrupt(void);
+void cf_check irq_move_cleanup_interrupt(void);
 
 uint8_t alloc_hipriority_vector(void);
 
-void set_direct_apic_vector(
-    uint8_t vector, void (*handler)(struct cpu_user_regs *regs));
-void alloc_direct_apic_vector(
-    uint8_t *vector, void (*handler)(struct cpu_user_regs *regs));
+void set_direct_apic_vector(uint8_t vector, void (*handler)(void));
+void alloc_direct_apic_vector(uint8_t *vector, void (*handler)(void));
 
 void do_IRQ(struct cpu_user_regs *regs);
 
--- a/xen/arch/x86/irq.c
+++ b/xen/arch/x86/irq.c
@@ -743,7 +743,7 @@ void move_native_irq(struct irq_desc *de
     desc->handler->enable(desc);
 }
 
-void cf_check irq_move_cleanup_interrupt(struct cpu_user_regs *regs)
+void cf_check irq_move_cleanup_interrupt(void)
 {
     unsigned vector, me;
 
@@ -913,16 +913,14 @@ uint8_t alloc_hipriority_vector(void)
     return next++;
 }
 
-static void (*direct_apic_vector[X86_NR_VECTORS])(struct cpu_user_regs *regs);
-void set_direct_apic_vector(
-    uint8_t vector, void (*handler)(struct cpu_user_regs *regs))
+static void (*direct_apic_vector[X86_NR_VECTORS])(void);
+void set_direct_apic_vector(uint8_t vector, void (*handler)(void))
 {
     BUG_ON(direct_apic_vector[vector] != NULL);
     direct_apic_vector[vector] = handler;
 }
 
-void alloc_direct_apic_vector(
-    uint8_t *vector, void (*handler)(struct cpu_user_regs *regs))
+void alloc_direct_apic_vector(uint8_t *vector, void (*handler)(void))
 {
     static DEFINE_SPINLOCK(lock);
 
@@ -1907,7 +1905,7 @@ void do_IRQ(struct cpu_user_regs *regs)
     if ( irq < 0 )
     {
         if ( direct_apic_vector[vector] )
-            direct_apic_vector[vector](regs);
+            direct_apic_vector[vector]();
         else
         {
             const char *kind = ", LAPIC";
--- a/xen/arch/x86/smp.c
+++ b/xen/arch/x86/smp.c
@@ -245,7 +245,7 @@ static cpumask_t flush_cpumask;
 static const void *flush_va;
 static unsigned int flush_flags;
 
-void cf_check invalidate_interrupt(struct cpu_user_regs *regs)
+void cf_check invalidate_interrupt(void)
 {
     unsigned int flags = flush_flags;
     ack_APIC_irq();
@@ -387,14 +387,14 @@ void smp_send_nmi_allbutself(void)
     send_IPI_mask(&cpu_online_map, APIC_DM_NMI);
 }
 
-void cf_check event_check_interrupt(struct cpu_user_regs *regs)
+void cf_check event_check_interrupt(void)
 {
     ack_APIC_irq();
     perfc_incr(ipis);
     this_cpu(irq_count)++;
 }
 
-void cf_check call_function_interrupt(struct cpu_user_regs *regs)
+void cf_check call_function_interrupt(void)
 {
     ack_APIC_irq();
     perfc_incr(ipis);



From xen-devel-bounces@lists.xenproject.org Thu Jan 11 07:48:19 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 11 Jan 2024 07:48:19 +0000
Received: from list by lists.xenproject.org with outflank-mailman.665979.1036343 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNpnK-0005gp-V2; Thu, 11 Jan 2024 07:48:06 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 665979.1036343; Thu, 11 Jan 2024 07:48:06 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNpnK-0005gi-Ro; Thu, 11 Jan 2024 07:48:06 +0000
Received: by outflank-mailman (input) for mailman id 665979;
 Thu, 11 Jan 2024 07:48:05 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=YFj+=IV=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rNpnJ-0005gc-95
 for xen-devel@lists.xenproject.org; Thu, 11 Jan 2024 07:48:05 +0000
Received: from mail-wm1-x32f.google.com (mail-wm1-x32f.google.com
 [2a00:1450:4864:20::32f])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id c0693d13-b055-11ee-98f0-6d05b1d4d9a1;
 Thu, 11 Jan 2024 08:48:04 +0100 (CET)
Received: by mail-wm1-x32f.google.com with SMTP id
 5b1f17b1804b1-40e5f615a32so2841605e9.1
 for <xen-devel@lists.xenproject.org>; Wed, 10 Jan 2024 23:48:04 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 dr18-20020a5d5f92000000b0033677a4e0d6sm491559wrb.13.2024.01.10.23.48.03
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 10 Jan 2024 23:48:03 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: c0693d13-b055-11ee-98f0-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1704959284; x=1705564084; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=pzf1Z1/LdxTvPW5MTdHruq1krKzlVUJGRi+TTE6vyTk=;
        b=Mr1m3pwhISWUsiUb/mb/quEtaYexlnQb72OxMLxt9DHt6zqqPfqF/Ba+9z30rW6gjG
         oxM9Po5YsDO9DjHUr1YVR15mC0vy7Kuo1j/ItvyB7+8snJIlNqvHxLgWk1SCJSmRrNLz
         WwzEJcO/2VscEChKB7G+2JR395qqe2IHz4X5jd7kjstV0yVDZ90CmzsvSTsG0A/n4IlO
         b+guyVdZVg/7jbweyMBPP7AxrcVeLCs7BHqHy7dH4NHUWnnspaklog/UAJB4Yjr8D0ae
         Kwyqfy4G3eadCEuVaa7ugIosl+aucoMsydTBDPH/+UyflyyXNmk4BHk5LxAinsJycESB
         0ONw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704959284; x=1705564084;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=pzf1Z1/LdxTvPW5MTdHruq1krKzlVUJGRi+TTE6vyTk=;
        b=P8JXQm7rLFWtQTceLM2b34SiGhU+NV3HGoXuyYRzwg/R4mUBgu4SYUuS6WfOnMl+mx
         4uPV1xoRg3BAZ7dAo4OYUnZLQPlBhoQ07er4SpYeMF2N4uX3Y4eIq4wJbq1hdPsWHm99
         gczrgywEfrfUrDO+ImyVLmVbYaE361CQCqz890qIHEre87BZNQ7pDDNCXYa2wupqSMNt
         QesO5GLUrI5ZQ+pdlRqBufW7LrjdNRNcqKfI6wSkfBsPDxfGRsF8gOjTatzem34WfBKk
         lrMc0n36rrz3kN0V+MMNKzdGmWjLuBvaifQck9VIULLbZckfxHErDgcu0yAPNcujWjMG
         +Y0g==
X-Gm-Message-State: AOJu0YybnO4kYr/cA295T7KgqmwXMP1uYtpsVWDLBqRMDbPdcinhlR0I
	pT//yoZ4XnGd7+4KKfeRg62X/hCL2heI
X-Google-Smtp-Source: AGHT+IFKeBt2YMbfrpuDJU/WKSSHjGnv9fXHma0CDLQLu0KDWY27oeRZTVlmd08SBijJfhu810chdQ==
X-Received: by 2002:a05:600c:3b29:b0:40d:5b0c:768b with SMTP id m41-20020a05600c3b2900b0040d5b0c768bmr75967wms.206.1704959283753;
        Wed, 10 Jan 2024 23:48:03 -0800 (PST)
Message-ID: <195c7cfb-2495-49f5-96e0-fe6bd0942a83@suse.com>
Date: Thu, 11 Jan 2024 08:48:02 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 1/2] x86/vmx: Fix IRQ handling for EXIT_REASON_INIT
Content-Language: en-US
To: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: Reima ISHII <ishiir@g.ecc.u-tokyo.ac.jp>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>, Wei Liu
 <wl@xen.org>, Jun Nakajima <jun.nakajima@intel.com>,
 Kevin Tian <kevin.tian@intel.com>, Tamas K Lengyel <tamas@tklengyel.com>,
 Takahiro Shinagawa <shina@ecc.u-tokyo.ac.jp>,
 Xen-devel <xen-devel@lists.xenproject.org>
References: <20231101192058.3419310-1-andrew.cooper3@citrix.com>
 <20231101192058.3419310-2-andrew.cooper3@citrix.com>
 <8ea5ad46-dbdf-2d9b-1d90-14ff20d94ab8@suse.com>
 <9f8524b4-735e-4f8f-b12c-006dd178b575@citrix.com>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <9f8524b4-735e-4f8f-b12c-006dd178b575@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 10.01.2024 20:11, Andrew Cooper wrote:
> On 02/11/2023 8:57 am, Jan Beulich wrote:
>> On 01.11.2023 20:20, Andrew Cooper wrote:
>>> --- a/xen/arch/x86/hvm/vmx/vmx.c
>>> +++ b/xen/arch/x86/hvm/vmx/vmx.c
>>> @@ -4097,10 +4097,6 @@ void vmx_vmexit_handler(struct cpu_user_regs *regs)
>>>      case EXIT_REASON_MCE_DURING_VMENTRY:
>>>          do_machine_check(regs);
>>>          break;
>>> -
>>> -    case EXIT_REASON_INIT:
>>> -        printk(XENLOG_ERR "Error: INIT received - ignoring\n");
>>> -        return; /* Renter the guest without further processing */
>>>      }
>> Wouldn't the printk() better remain where it was, and just the "return" be
>> purged?
> 
> Not really... that would hit the unknown vmexit path in the second.

Well, I didn't mean to suggest to purge the other hunk. Instead I meant ...

> We actually have a variety of empty cases in the second.  We could add
> another.

... something along these lines - do nothing but "break;" there.

Jan


From xen-devel-bounces@lists.xenproject.org Thu Jan 11 07:53:21 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 11 Jan 2024 07:53:21 +0000
Received: from list by lists.xenproject.org with outflank-mailman.665983.1036352 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNpsL-0008UA-Ga; Thu, 11 Jan 2024 07:53:17 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 665983.1036352; Thu, 11 Jan 2024 07:53:17 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNpsL-0008U3-Dq; Thu, 11 Jan 2024 07:53:17 +0000
Received: by outflank-mailman (input) for mailman id 665983;
 Thu, 11 Jan 2024 07:53:15 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=YFj+=IV=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rNpsJ-0008Tx-Li
 for xen-devel@lists.xenproject.org; Thu, 11 Jan 2024 07:53:15 +0000
Received: from mail-wr1-x42f.google.com (mail-wr1-x42f.google.com
 [2a00:1450:4864:20::42f])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 796e4008-b056-11ee-98f0-6d05b1d4d9a1;
 Thu, 11 Jan 2024 08:53:14 +0100 (CET)
Received: by mail-wr1-x42f.google.com with SMTP id
 ffacd0b85a97d-3374eb61cbcso4532126f8f.0
 for <xen-devel@lists.xenproject.org>; Wed, 10 Jan 2024 23:53:14 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 c28-20020adfa31c000000b0033775980d26sm500759wrb.2.2024.01.10.23.53.13
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 10 Jan 2024 23:53:14 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 796e4008-b056-11ee-98f0-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1704959594; x=1705564394; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=4Jo74aMqjG6F5Mno+cxU3pwLqXDLTAUwkJrVylM525s=;
        b=CIe7jfNV2I1SSly+56G6sN8xf8PLw2DjYo93J+iZM4iNjt69NJ+nhE0maNugISJImE
         HIpHiCXXZ/8bm5DE31wXykGIY7tBHn2T12xWw6byt2Mq87wB0BPlvg6wMPqbO13YfTyC
         0fmu/pNmwMuupW6zCT1sbOl1xI5eAjDdChybnBJHMRoX6cg4bdqc98ry4vg+CYBb+nM0
         mfFS3EHyVjajXIgZ9Z6lKf901/zdQv1UmYovlnL/KuVzgW7CYGqCcPGe/FMqpTGsHQL7
         rTeyZYoLmKlhRQbDGb9vremLfyW0shl3bjvMtKVggHiAeOmA5TEB2P+AaiT6mi5ATY96
         fQQg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704959594; x=1705564394;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=4Jo74aMqjG6F5Mno+cxU3pwLqXDLTAUwkJrVylM525s=;
        b=mw4ayfenAkEuOOdazDQiCQui/Y73s7UwA4HtiLuGdEIybEZtLoBOKcxe+WH0QDAK+e
         15/aHUcKETbYHrhPbihr08nqcf8e5zC8nNf3S1u9H4TbUW7TBLJk4UkfZuKH5jFAG5tO
         m4tY33c6yc8Q5Upfu9U3gHWBOTe+t0WSimu1UlsLlU84D4btOzJKHLc7PAtMv+LeWcwV
         Y62CTdEbgSb0qhZ7/SH59Bq7uI0rQok6224T4Hinid/36TNObMuVTfiKDSMClJw5YU8v
         vpaPK8ZxRf7sPayTCKQCr87CPiZstRx+Mzphy2u3jf+P7Q6DvTLGE3QMfUzNx5QFB/ch
         8Ftw==
X-Gm-Message-State: AOJu0Yy+VQZnhk/SIqKbVcDHi0SY2ZIL7ejI2jIWmcjlEPt5/brnW7YY
	bs3l2eJUTY34FJouaLRNSC2aIzwZwl7L
X-Google-Smtp-Source: AGHT+IHS8iJEsP0zEPsgCcSyYY7klcQRM6mh9JtkTKtu5ECwx+81rZWmNq/6uEiSTV1FT1m/bCY+Rw==
X-Received: by 2002:a5d:6644:0:b0:334:ada5:3835 with SMTP id f4-20020a5d6644000000b00334ada53835mr386369wrw.4.1704959594213;
        Wed, 10 Jan 2024 23:53:14 -0800 (PST)
Message-ID: <88d4cb45-f2e6-4acd-8ec4-060f90a444fc@suse.com>
Date: Thu, 11 Jan 2024 08:53:13 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 10/22] x86/mapcache: initialise the mapcache for the idle
 domain
Content-Language: en-US
To: Elias El Yandouzi <eliasely@amazon.com>
Cc: Hongyan Xia <hongyxia@amazon.com>,
 Andrew Cooper <andrew.cooper3@citrix.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>, Wei Liu
 <wl@xen.org>, Wei Wang <wawei@amazon.de>, Julien Grall <jgrall@amazon.com>,
 xen-devel@lists.xenproject.org, Julien Grall <julien@xen.org>
References: <20221216114853.8227-1-julien@xen.org>
 <20221216114853.8227-11-julien@xen.org>
 <751ffdb3-651c-b8e6-dc33-5a6857e3c88d@suse.com>
 <88024314-245f-404e-a6b7-7ea859bae309@amazon.com>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <88024314-245f-404e-a6b7-7ea859bae309@amazon.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 10.01.2024 17:24, Elias El Yandouzi wrote:
> On 22/12/2022 13:06, Jan Beulich wrote:
>> On 16.12.2022 12:48, Julien Grall wrote:
>>> --- a/xen/arch/x86/mm.c
>>> +++ b/xen/arch/x86/mm.c
>>> @@ -5963,6 +5963,9 @@ int create_perdomain_mapping(struct domain *d, unsigned long va,
>>>           l3tab = __map_domain_page(pg);
>>>           clear_page(l3tab);
>>>           d->arch.perdomain_l3_pg = pg;
>>> +        if ( is_idle_domain(d) )
>>> +            idle_pg_table[l4_table_offset(PERDOMAIN_VIRT_START)] =
>>> +                l4e_from_page(pg, __PAGE_HYPERVISOR_RW);
>>
>> Hmm, having an idle domain check here isn't very nice. I agree putting
>> it in arch_domain_create()'s respective conditional isn't very neat
>> either, but personally I'd consider this at least a little less bad.
>> And the layering violation aspect isn't much worse than that of setting
>> d->arch.ctxt_switch there as well.
> 
> Why do you think it would be less bad to move it in 
> arch_domain_create()? To me, it would make things worse as it would 
> spread the mapping stuff across different functions.

Not sure what to add to what I said: create_perdomain_mapping() gaining
such a check is a layering violation to me. arch_domain_create() otoh
special cases the idle domain already.

Jan


From xen-devel-bounces@lists.xenproject.org Thu Jan 11 08:05:10 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 11 Jan 2024 08:05:10 +0000
Received: from list by lists.xenproject.org with outflank-mailman.665992.1036362 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNq3k-0003xO-S1; Thu, 11 Jan 2024 08:05:04 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 665992.1036362; Thu, 11 Jan 2024 08:05:04 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNq3k-0003xH-PQ; Thu, 11 Jan 2024 08:05:04 +0000
Received: by outflank-mailman (input) for mailman id 665992;
 Thu, 11 Jan 2024 08:05:03 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=ETxW=IV=amd.com=Xenia.Ragiadakou@srs-se1.protection.inumbo.net>)
 id 1rNq3j-0003xB-5a
 for xen-devel@lists.xenproject.org; Thu, 11 Jan 2024 08:05:03 +0000
Received: from NAM04-BN8-obe.outbound.protection.outlook.com
 (mail-bn8nam04on20600.outbound.protection.outlook.com
 [2a01:111:f403:2408::600])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 1db1f82c-b058-11ee-9b0f-b553b5be7939;
 Thu, 11 Jan 2024 09:05:00 +0100 (CET)
Received: from PR0P264CA0095.FRAP264.PROD.OUTLOOK.COM (2603:10a6:100:18::35)
 by SA3PR12MB7998.namprd12.prod.outlook.com (2603:10b6:806:320::13) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7181.17; Thu, 11 Jan
 2024 08:04:57 +0000
Received: from SA2PEPF000015C9.namprd03.prod.outlook.com
 (2603:10a6:100:18:cafe::fc) by PR0P264CA0095.outlook.office365.com
 (2603:10a6:100:18::35) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7181.19 via Frontend
 Transport; Thu, 11 Jan 2024 08:04:56 +0000
Received: from SATLEXMB04.amd.com (165.204.84.17) by
 SA2PEPF000015C9.mail.protection.outlook.com (10.167.241.199) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.7181.14 via Frontend Transport; Thu, 11 Jan 2024 08:04:55 +0000
Received: from [10.0.2.15] (10.180.168.240) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.34; Thu, 11 Jan
 2024 02:04:50 -0600
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 1db1f82c-b058-11ee-9b0f-b553b5be7939
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=jFUGJIQ623iRtxmnyu2dgn8OmaLL0SmjnP4AFIBVqPXiVBlfUqKczuA4uGVDtLFHSj/eBaQQ3j1jlRJk/W4VbXLZ5KPisBcwr/L93ZFyz9FexXTQkCbTKyQcCigJh61W6IJ0ferRiCWFl5ImqDB1Zlh/hRSgAQ47OzgTWQnGaUpUBtvTP3hr/WNNHc1B94CZXg953ia+fv5IxQ/RZ7cNe2ukq8L5tJ8oeppY0lVLZ/GoR7wOdFmd5JQKGpXSrHUgla/kxbAPVgQaFoQCiMqjdoV0ZPlg1mP9ZXKeJvM/ZckEdSxOxH4zRMaoFrwCDM6DBXK6ovz3ACQucMG8BnM7bQ==
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=63dLLcSSXFG5ZIukg18Lpb8wdCW0FZwbt04IsoI/PC8=;
 b=EKivEebmxPuIuJdsqsFiJYK0DBv93WRhRmAuI8LJ2b6/AgTJI4GbFoovf6ZeCQeyK+tVjdNSTRNLFZ3o1auq1udQwb8tGPpBdxjm7XREECrMdPjCipUWED1B2AgGt1sZ5LpbN4j51JbFcDbCMY92EWi2Gu3XMQFNdlDq3m8EZ82NsUpprR9hKazYdu1WxbPe6s5JSD4ZAtv3BbfHAohPmUhodtbVpXvmEuDGO0SwQkRtzcfgnQJpBL4999v2panO8BS8AkRYq9SD3JWBlbfZoHn0IGH2ibKcYJbKgd8DTOnNqB9+KP9oSyjCnez21KzoVA/OEgoh4+fI27rw6aYPDg==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=citrix.com 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)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=63dLLcSSXFG5ZIukg18Lpb8wdCW0FZwbt04IsoI/PC8=;
 b=1rXua/8CMsJNlo3d4aT2G6ggpNYgCF6r9WAvrJsVGCXWa8bqvHVv3z1df3l46iR2rt0D43jAiJ4fTOg+yFMawbgogBY63sZqKMjYoa9c+t738BMurV4ewmciiAFvKC2m5SMrYCx5mvhLitvvHyB5VTiSIjo7gajXp5CePjuebJI=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C
Message-ID: <6fe776cd-3fa6-421f-9d02-9350e85d5612@amd.com>
Date: Thu, 11 Jan 2024 10:04:32 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] x86/hvm: don't expose XENFEAT_hvm_pirqs by default
Content-Language: en-US
To: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
CC: Jan Beulich <jbeulich@suse.com>, Wei Liu <wl@xen.org>, Anthony PERARD
	<anthony.perard@citrix.com>, Juergen Gross <jgross@suse.com>,
	=?UTF-8?Q?Marek_Marczykowski-G=C3=B3recki?=
	<marmarek@invisiblethingslab.com>, Andrew Cooper <andrew.cooper3@citrix.com>,
	<xen-devel@lists.xenproject.org>
References: <20240110095311.61809-1-roger.pau@citrix.com>
 <238b79f5-0510-4306-9c32-19dade08e819@suse.com>
 <ef67e4b1-3b1e-4cca-b431-cc46464700ca@amd.com> <ZZ61-SNkrKo12cwb@macbook>
From: Xenia Ragiadakou <xenia.ragiadakou@amd.com>
In-Reply-To: <ZZ61-SNkrKo12cwb@macbook>
Content-Type: text/plain; charset="UTF-8"; format=flowed
Content-Transfer-Encoding: 8bit
X-Originating-IP: [10.180.168.240]
X-ClientProxiedBy: SATLEXMB04.amd.com (10.181.40.145) To SATLEXMB04.amd.com
 (10.181.40.145)
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: SA2PEPF000015C9:EE_|SA3PR12MB7998:EE_
X-MS-Office365-Filtering-Correlation-Id: a3935e00-38b8-4c01-0aa0-08dc127bffbe
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam: BCL:0;
X-Microsoft-Antispam-Message-Info:
	amFsIQtLlYJqmmM8FNRibTl+j830SdAPDtIf/EVDugRUe1PTGhiFezHkYZKxdtwFJXTcJccx0sjtaAwQgSwSLmlWWr4HC0cw9yLYPwmmoSHIP30ofcUmUuauXDixKxqyeCGJPOW3/7SbNh7TKoWNc3hi8S+qAEEbqn3tfhNDh0u16hCflC7Fcn+YovO6ZKBE2C9HGc3JyFwLp2/xlF8B3DxUxfLBFvZryXoxI1sB1DokXIIQFuOScmHfEMwKwNTvUOgXrYnYFHmtETSEX1aCDz0ehCUav9DsYtIaZ5W+SBO8DI9AkJX3g2PYiE6VLbsy//bZF06D0YGt61QKWYiE7VyX9z5JfExzNk4s4tDcdagQH8LPHMTvUFffnXC9ba7ZE+YhHCokV4XtHfB873XOgTdiqlWF0eDms4QAWM4pCUWuRR26XH1CLekl49PJOnxZWYpHYZ+IclDvStbex78lr7tOd9331BnKLDsTRm/9raBAiHXuixPoB8fc5AsCgzoQ/ffTBaj6g0MfjD4k0sHku47g2BycVNhXFKVSRt1ZWfCSGcndde1lbPqiEQBAu34qT3JlH4Hy7C4Cs+5vvJW2GRYjRPEQ9fP9qQuoYX3OXpU3B9yNKYbTGOYINvxMaANjyftL/vrf+KboToqpwjpGsw6es9N6BoNeEk+P8Qe05AmVR2aHS1FYcIk272xvNwW/+4EPOfL0JbTa9bTT/HO8NQ4dB8A/aZfo/83c5nlhKQzosrwCmcgeiOfZOTI9kH+19ZkHwbLs9IxdXuCtuejxZaiMn5L0UZery2haq3QsL2ZsBtAj08oMSG5/Bs+FQa1A
X-Forefront-Antispam-Report:
	CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230031)(4636009)(376002)(346002)(136003)(39860400002)(396003)(230922051799003)(1800799012)(451199024)(186009)(64100799003)(82310400011)(46966006)(40470700004)(36840700001)(16526019)(336012)(426003)(26005)(2616005)(83380400001)(6666004)(36860700001)(53546011)(4326008)(82740400003)(41300700001)(47076005)(6916009)(5660300002)(44832011)(8936002)(2906002)(478600001)(316002)(16576012)(8676002)(70206006)(54906003)(70586007)(31696002)(86362001)(36756003)(356005)(81166007)(31686004)(40480700001)(40460700003)(43740500002)(36900700001);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Jan 2024 08:04:55.9908
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: a3935e00-38b8-4c01-0aa0-08dc127bffbe
X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com]
X-MS-Exchange-CrossTenant-AuthSource:
	SA2PEPF000015C9.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA3PR12MB7998

Hi Roger,

On 10/1/24 17:21, Roger Pau Monné wrote:
> On Wed, Jan 10, 2024 at 03:47:12PM +0200, Xenia Ragiadakou wrote:
>>
>>
>> On 10/1/24 12:26, Jan Beulich wrote:
>>> On 10.01.2024 10:53, Roger Pau Monne wrote:
>>>> The HVM pirq feature allows routing interrupts from both physical and emulated
>>>> devices over event channels, this was done a performance improvement.  However
>>>> its usage is fully undocumented, and the only reference implementation is in
>>>> Linux.  It defeats the purpose of local APIC hardware virtualization, because
>>>> when using it interrupts avoid the usage of the local APIC altogether.
>>>
>>> So without sufficient APIC acceleration, isn't this arranging for degraded
>>> performance then? IOW should the new default perhaps be dependent on the
>>> degree of APIC acceleration?
>>>
>>>> It has also been reported to not work properly with certain devices, at least
>>>> when using some AMD GPUs Linux attempts to route interrupts over event
>>>> channels, but Xen doesn't correctly detect such routing, which leads to the
>>>> hypervisor complaining with:
>>>>
>>>> (XEN) d15v0: Unsupported MSI delivery mode 7 for Dom15
>>>>
>>>> When MSIs are attempted to be routed over event channels the entry delivery
>>>> mode is set to ExtINT, but Xen doesn't detect such routing and attempts to
>>>> inject the interrupt following the native MSI path, and the ExtINT delivery
>>>> mode is not supported.
>>>
>>> Shouldn't this be properly addressed nevertheless? The way it's described
>>> it sounds as if MSI wouldn't work at all this way; I can't spot why the
>>> issue would only be "with certain devices". Yet that in turn doesn't look
>>> to be very likely - pass-through use cases, in particular SR-IOV ones,
>>> would certainly have noticed.
>>
>> The issue gets triggered when the guest performs save/restore of MSIs,
>> because PHYSDEVOP_map_pirq is not implemented for MSIs, and thus, QEMU
>> cannot remap the MSI to the event channel once unmapped.
> 
> I'm kind of confused by this sentence, PHYSDEVOP_map_pirq does support
> MSIs, see xc_physdev_map_pirq_msi() helper in Xen code base.
> 

Sorry I had to explain it better. For an HVM guest with 
XENFEAT_hvm_pirqs set, physdev_hvm_map_pirq() will be called, that has 
not support for MSI.

>> So, to fix this issue either would be needed to change QEMU to not unmap
>> pirq-emulated MSIs or to implement PHYSDEVOP_map_pirq for MSIs.
>>
>> But still, even when no device has been passed-through, scheduling latencies
>> (of hundreds of ms), were observed in the guest even when running a simple
>> loop application, that disappear once the flag is disabled. We did not have
>> the chance to root cause it further.
> 
> So XENFEAT_hvm_pirqs is causing such latency issues?  That I certainly
> didn't notice.

We 've seen that in a setup with an HVM guest using emulated MSIs. We 
were running an application, like the one below, pinned on an isolated 
and pinned vcpu.

int main()
{
     struct timeval cur_time = {0}, prev_time = {0};
     int diff;

     gettimeofday(&prev_time, NULL);
     do {
         gettimeofday(&cur_time, NULL);

         diff = (((cur_time.tv_sec - prev_time.tv_sec)*1000) + ((cur_time
.tv_usec - prev_time.tv_usec)/1000));
         if (diff>10)
            printf("app scheduled after: %d msec\n",diff);

         gettimeofday(&prev_time, NULL);
     } while(1);
}

And we 're getting values of hundreds of ms like:
app scheduled after: 985 msec

> 
> Regards, Roger.


From xen-devel-bounces@lists.xenproject.org Thu Jan 11 08:28:33 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 11 Jan 2024 08:28:33 +0000
Received: from list by lists.xenproject.org with outflank-mailman.665998.1036374 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNqQM-00027X-Ny; Thu, 11 Jan 2024 08:28:26 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 665998.1036374; Thu, 11 Jan 2024 08:28:26 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNqQM-00027L-J7; Thu, 11 Jan 2024 08:28:26 +0000
Received: by outflank-mailman (input) for mailman id 665998;
 Thu, 11 Jan 2024 08:28:25 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=4+ne=IV=cloud.com=roger.pau@srs-se1.protection.inumbo.net>)
 id 1rNqQL-00026U-7m
 for xen-devel@lists.xenproject.org; Thu, 11 Jan 2024 08:28:25 +0000
Received: from mail-lf1-x12f.google.com (mail-lf1-x12f.google.com
 [2a00:1450:4864:20::12f])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 6223737d-b05b-11ee-98f0-6d05b1d4d9a1;
 Thu, 11 Jan 2024 09:28:23 +0100 (CET)
Received: by mail-lf1-x12f.google.com with SMTP id
 2adb3069b0e04-50e835800adso5116042e87.0
 for <xen-devel@lists.xenproject.org>; Thu, 11 Jan 2024 00:28:23 -0800 (PST)
Received: from localhost ([213.195.127.70]) by smtp.gmail.com with ESMTPSA id
 a8-20020a5d5088000000b003364a0e6983sm567122wrt.62.2024.01.11.00.28.22
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 11 Jan 2024 00:28:22 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 6223737d-b05b-11ee-98f0-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1704961702; x=1705566502; darn=lists.xenproject.org;
        h=in-reply-to:content-transfer-encoding:content-disposition
         :mime-version:references:message-id:subject:cc:to:from:date:from:to
         :cc:subject:date:message-id:reply-to;
        bh=71Lki0dPYkPvCTU4ohsb/8vh0jUXkmyA7QRZyOt03J0=;
        b=EIvwH5bG2jN5cZFXXCc3ZgQ9cgO/twJSLl35MZ+1Vt7zcJuqw/k7WIckvTjR8etJj3
         cFY6mu66zjkL+bPLdWMDlaxJo4cfZ6M93dB3yX+WcHaiTdJOMjnTPix3J0d5BHLep4j9
         IF7T/GkDVWr+DVtUMNR473u7Zfq8Z/REufwuc=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704961702; x=1705566502;
        h=in-reply-to:content-transfer-encoding:content-disposition
         :mime-version:references:message-id:subject:cc:to:from:date
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=71Lki0dPYkPvCTU4ohsb/8vh0jUXkmyA7QRZyOt03J0=;
        b=W8oGniB4zUqnipMl3gXMPQ3RJqwnLDtzHaGj6URcK2CNu+JvlNJg5d2Nxr2BMh/5C5
         neqJHhYyUGDNIoWg+/cZSBzwVsY069qtuyeRuGAQ90lW6nq/sYjjtUiuDbhdHKlEHjgW
         nXfm6Suc23cJvLry30Se3QM+2Fo8/RSbGRlNPBXey+rkfgI5ia4xrroHgVv/dMOCOIDt
         EczU0BHn7Jwg0NDHK43hS8itLZpKzLbTmsYWC5kX5fZo/BrXrXstLjWV7a6rk97rjgyN
         ScdPE0p09hwm5S1acO0hjE2aKEdN8SstJS53sUhqAMcONH2z8ZvclwCz35J/QaKJfT5u
         PuHQ==
X-Gm-Message-State: AOJu0YwuFrDcFkiv3km6qNc0HsXf3iURQbPASEaSm/iuSNad75q/Qr4t
	QPs6VnIze5ekuVGzOLWY7JLNYNituzYmvA==
X-Google-Smtp-Source: AGHT+IE6ulE7TnjKHXkZOoUdltiSEkCJZxZkiMbiL17Zwjn3ld0Yxyfvu6YYbDm9rbSQktmX6fPEUw==
X-Received: by 2002:ac2:46e3:0:b0:50e:8e87:82f3 with SMTP id q3-20020ac246e3000000b0050e8e8782f3mr238087lfo.78.1704961702507;
        Thu, 11 Jan 2024 00:28:22 -0800 (PST)
Date: Thu, 11 Jan 2024 09:28:21 +0100
From: Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
To: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: xen-devel@lists.xenproject.org, Jan Beulich <jbeulich@suse.com>,
	Wei Liu <wl@xen.org>
Subject: Re: [PATCH] x86/nmi: ensure Global Performance Counter Control is
 setup correctly
Message-ID: <ZZ-mpVno40peC7l7@macbook>
References: <20240110153400.64017-1-roger.pau@citrix.com>
 <4bd7324f-69fc-42e5-9155-02a7e1a8a6e8@citrix.com>
 <ZZ7Mz0HymYQGpTna@macbook>
 <ffebc1a9-0ed6-492c-8f3a-605a36403883@citrix.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <ffebc1a9-0ed6-492c-8f3a-605a36403883@citrix.com>

On Wed, Jan 10, 2024 at 05:41:41PM +0000, Andrew Cooper wrote:
> On 10/01/2024 4:58 pm, Roger Pau Monné wrote:
> > On Wed, Jan 10, 2024 at 03:52:49PM +0000, Andrew Cooper wrote:
> >> On 10/01/2024 3:34 pm, Roger Pau Monne wrote:
> >>> When Architectural Performance Monitoring is available, the PERF_GLOBAL_CTRL
> >>> MSR contains per-counter enable bits that is ANDed with the enable bit in the
> >>> counter EVNTSEL MSR in order for a PMC counter to be enabled.
> >>>
> >>> So far the watchdog code seems to have relied on the PERF_GLOBAL_CTRL enable
> >>> bits being set by default, but at least on some Intel Sapphire and Emerald
> >>> Rapids this is no longer the case, and Xen reports:
> >>>
> >>> Testing NMI watchdog on all CPUs: 0 40 stuck
> >>>
> >>> The first CPU on each socket is started with PERF_GLOBAL_CTRL zeroed, so PMC0
> >>> doesn't start counting when the enable bit in EVNTSEL0 is set, due to the
> >>> relevant enable bit in PERF_GLOBAL_CTRL not being set.
> >>>
> >>> Fix by detecting when Architectural Performance Monitoring is available and
> >>> making sure the enable bit for PMC0 is set in PERF_GLOBAL_CTRL.
> >>>
> >>> Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
> >>> ---
> >>> The fact that it's only the first CPU on each socket that's started with
> >>> PERF_GLOBAL_CTRL clear looks like a firmware bug to me, but in any case making
> >>> sure PERF_GLOBAL_CTRL is properly setup should be done regardless.
> >> It's each package-BSP, and yes, this is clearly a firmware bug.  It's
> >> probably worth saying that we're raising it with Intel, but this bug is
> >> out in production firmware for SPR and EMR.
> >>
> >>> ---
> >>>  xen/arch/x86/nmi.c | 13 +++++++++++++
> >>>  1 file changed, 13 insertions(+)
> >>>
> >>> diff --git a/xen/arch/x86/nmi.c b/xen/arch/x86/nmi.c
> >>> index dc79c25e3ffd..7a6601c4fd31 100644
> >>> --- a/xen/arch/x86/nmi.c
> >>> +++ b/xen/arch/x86/nmi.c
> >>> @@ -335,6 +335,19 @@ static void setup_p6_watchdog(unsigned counter)
> >>>           nmi_p6_event_width > BITS_PER_LONG )
> >>>          return;
> >>>  
> >>> +    if ( cpu_has_arch_perfmon )
> >>> +    {
> >>> +        uint64_t global_ctrl;
> >>> +
> >>> +        rdmsrl(MSR_CORE_PERF_GLOBAL_CTRL, global_ctrl);
> >>> +        /*
> >>> +         * Make sure PMC0 is enabled in global control, as the enable bit in
> >>> +         * PERF_GLOBAL_CTRL is AND'ed with the enable bit in EVNTSEL0.
> >>> +         */
> >>> +        if ( !(global_ctrl & 1) )
> >>> +            wrmsrl(MSR_CORE_PERF_GLOBAL_CTRL, global_ctrl | 1);
> >> My gut feeling is that we ought to reinstate all bits, not just bit 1. 
> >> If nothing else because that will make debugging using other counters
> >> more reliable too.
> > Hm, yes, I was borderline on enabling all possible counters in
> > PERF_GLOBAL_CTRL, as reported by CPUID.0AH: EAX[15:8].
> >
> > But then wondered if it was going too far, as for the purposes here we
> > just care about PMC1.
> >
> > My reasoning for not doing it would be that such wide setup of
> > PERF_GLOBAL_CTRL would then be gated on the watchdog being enabled,
> > usages of other counters apart from PMC0 will be gated on the watchdog
> > being enabled.  It seems more reliable to me to either do the setting
> > of PERF_GLOBAL_CTRL as part of CPU initialization, or defer to each
> > user of a PMC to take care of enabling it in PERF_GLOBAL_CTRL.
> 
> It is buggy that each socket-BSP is handed over with ctl=0 rather than 0xff.
> 
> But we're exasperating the bug by not returning each socket-BSP to the
> default behaviour.
> 
> 
> It makes a practical difference if a developer wants to hand-code up
> PCR2.

I'm afraid I'm lost at what the PCR2 acronym references to here, as I
cannot find any instance of it in SDM vols 2, 3 or 4.

> It also makes a practical difference to what a guest sees when it
> executes RDPMC in guests, because right now the perf counter values leak
> in (there's another oustanding patch series of mine trying to stem this
> leak).

But RDPMC just fetches the contents of the counters, so it has no
visibility on the value of PERF_GLOBAL_CTRL.  Albeit the settings in
PERF_GLOBAL_CTRL will affect whether the counters are enabled or not,
I'm not sure a guest without access to vPMU should expect to get any
kind of consistent results out of RDPMC.

> 
> The fixup we're performing here isn't "because we're using one
> counter".  It's to get state back to default.

I'm certainly not opposed to that, but as said in my previous reply,
the adjustment should then be done somewhere else and not in
setup_p6_watchdog().  Unless there are further objections I will send
a patch to enable all general purpose PMCs in PERF_GLOBAL_CTRL at
init_intel().

Thanks, Roger.


From xen-devel-bounces@lists.xenproject.org Thu Jan 11 08:29:25 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 11 Jan 2024 08:29:25 +0000
Received: from list by lists.xenproject.org with outflank-mailman.666003.1036383 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNqRJ-000375-2C; Thu, 11 Jan 2024 08:29:25 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 666003.1036383; Thu, 11 Jan 2024 08:29:25 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNqRI-00036y-VW; Thu, 11 Jan 2024 08:29:24 +0000
Received: by outflank-mailman (input) for mailman id 666003;
 Thu, 11 Jan 2024 08:29:23 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=YFj+=IV=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rNqRH-00035X-FA
 for xen-devel@lists.xenproject.org; Thu, 11 Jan 2024 08:29:23 +0000
Received: from mail-wm1-x32b.google.com (mail-wm1-x32b.google.com
 [2a00:1450:4864:20::32b])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 85656041-b05b-11ee-98f0-6d05b1d4d9a1;
 Thu, 11 Jan 2024 09:29:22 +0100 (CET)
Received: by mail-wm1-x32b.google.com with SMTP id
 5b1f17b1804b1-40e54b2e437so20814195e9.2
 for <xen-devel@lists.xenproject.org>; Thu, 11 Jan 2024 00:29:22 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 ay12-20020a05600c1e0c00b0040d802a7619sm4992813wmb.38.2024.01.11.00.29.21
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 11 Jan 2024 00:29:21 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 85656041-b05b-11ee-98f0-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1704961762; x=1705566562; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=Z0PjHh98gEH5wksriLm0NVgosyxNyT4FnoTbeXFZfGY=;
        b=P0zSYsmXYPWLCe9DmFgYC4lO9WLPOW5v6BarTJz4wRbm+Ye/tF0baa7aRfwSbSNoZU
         heqw86IWNBGUS5EZMUN+VW0a7QNs1+c5J+C8K98aPeRsZMPlgvo+nkj4qxsgOII8bPNX
         ta4plnvkRhIgqPAbYUI2EhIb0nsJ/FBb45Akzg+fTv2qoiSEj2p5yZ5H66T2iOA2LKhP
         G4EtlHWloKZMD4FVMwMWjKQ2IzadPZDxoIEN3O/2BvsoY7Fknwoa1HzvOCRp2uqaLnIt
         1wCVi6XGff+yQ5OkO2ITSvqjKRqYzGL9JfYE1XqkFBnJubTYZBVGLzPXgUHCuwq75OrM
         V4mQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704961762; x=1705566562;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=Z0PjHh98gEH5wksriLm0NVgosyxNyT4FnoTbeXFZfGY=;
        b=iNKSLnKSkZPLEQaD6Awl/mHSdARAeIcJYhnlSSNFGXPi+X85VXs77+/eCZZYK45zG0
         02ZpBU1BGM13OB0AbDEBhIJAHJTl5v/S8oJ52wMMLE2NNSgRPCauAQ35fo7Rl99JXM24
         KCYEibcgB+8GxU4BIT2Va/CW/GKiLgS2QiGBfuTLs4VcUjTwvgJMAPtoiL0+gAFXxkWN
         iTZ1Pt4Zsl/QDEhBcHdgGbX5L/Oob99B3b/8yte9BSDyd8xdTZqkPxA2q8zeTHoDD2R2
         6CT8QoEBBocDZqt1GKPTCgkC8yJZq64KU9DLrDbWhGxBQ5TW2MRDrxcf2ubLr/SukAJv
         aPpA==
X-Gm-Message-State: AOJu0Yz+ExWBpBaXkqmP3GFH7JAbOnkMVNq7OpecpbRkpKP2qcPDKJ/0
	50F+ir/hyIlFEe+rQcF53HNTkw78nKpn
X-Google-Smtp-Source: AGHT+IGBxRu3EXBgDwmnb2+jjgikni6JbE0nhxbrNY6YaVf0c8rpcKPbXAL4Ct5TWwPNEIQk2VrclQ==
X-Received: by 2002:a05:600c:601a:b0:40e:4b16:a00f with SMTP id az26-20020a05600c601a00b0040e4b16a00fmr177106wmb.150.1704961761721;
        Thu, 11 Jan 2024 00:29:21 -0800 (PST)
Message-ID: <055945ed-86c8-48c1-851d-e87c4988c7a4@suse.com>
Date: Thu, 11 Jan 2024 09:29:20 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] x86/nmi: ensure Global Performance Counter Control is
 setup correctly
Content-Language: en-US
To: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
Cc: xen-devel@lists.xenproject.org, Wei Liu <wl@xen.org>,
 Andrew Cooper <andrew.cooper3@citrix.com>
References: <20240110153400.64017-1-roger.pau@citrix.com>
 <4bd7324f-69fc-42e5-9155-02a7e1a8a6e8@citrix.com> <ZZ7Mz0HymYQGpTna@macbook>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <ZZ7Mz0HymYQGpTna@macbook>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 10.01.2024 17:58, Roger Pau Monné wrote:
> On Wed, Jan 10, 2024 at 03:52:49PM +0000, Andrew Cooper wrote:
>> On 10/01/2024 3:34 pm, Roger Pau Monne wrote:
>>> When Architectural Performance Monitoring is available, the PERF_GLOBAL_CTRL
>>> MSR contains per-counter enable bits that is ANDed with the enable bit in the
>>> counter EVNTSEL MSR in order for a PMC counter to be enabled.
>>>
>>> So far the watchdog code seems to have relied on the PERF_GLOBAL_CTRL enable
>>> bits being set by default, but at least on some Intel Sapphire and Emerald
>>> Rapids this is no longer the case, and Xen reports:
>>>
>>> Testing NMI watchdog on all CPUs: 0 40 stuck
>>>
>>> The first CPU on each socket is started with PERF_GLOBAL_CTRL zeroed, so PMC0
>>> doesn't start counting when the enable bit in EVNTSEL0 is set, due to the
>>> relevant enable bit in PERF_GLOBAL_CTRL not being set.
>>>
>>> Fix by detecting when Architectural Performance Monitoring is available and
>>> making sure the enable bit for PMC0 is set in PERF_GLOBAL_CTRL.
>>>
>>> Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
>>> ---
>>> The fact that it's only the first CPU on each socket that's started with
>>> PERF_GLOBAL_CTRL clear looks like a firmware bug to me, but in any case making
>>> sure PERF_GLOBAL_CTRL is properly setup should be done regardless.
>>
>> It's each package-BSP, and yes, this is clearly a firmware bug.  It's
>> probably worth saying that we're raising it with Intel, but this bug is
>> out in production firmware for SPR and EMR.
>>
>>> ---
>>>  xen/arch/x86/nmi.c | 13 +++++++++++++
>>>  1 file changed, 13 insertions(+)
>>>
>>> diff --git a/xen/arch/x86/nmi.c b/xen/arch/x86/nmi.c
>>> index dc79c25e3ffd..7a6601c4fd31 100644
>>> --- a/xen/arch/x86/nmi.c
>>> +++ b/xen/arch/x86/nmi.c
>>> @@ -335,6 +335,19 @@ static void setup_p6_watchdog(unsigned counter)
>>>           nmi_p6_event_width > BITS_PER_LONG )
>>>          return;
>>>  
>>> +    if ( cpu_has_arch_perfmon )
>>> +    {
>>> +        uint64_t global_ctrl;
>>> +
>>> +        rdmsrl(MSR_CORE_PERF_GLOBAL_CTRL, global_ctrl);
>>> +        /*
>>> +         * Make sure PMC0 is enabled in global control, as the enable bit in
>>> +         * PERF_GLOBAL_CTRL is AND'ed with the enable bit in EVNTSEL0.
>>> +         */
>>> +        if ( !(global_ctrl & 1) )
>>> +            wrmsrl(MSR_CORE_PERF_GLOBAL_CTRL, global_ctrl | 1);
>>
>> My gut feeling is that we ought to reinstate all bits, not just bit 1. 
>> If nothing else because that will make debugging using other counters
>> more reliable too.
> 
> Hm, yes, I was borderline on enabling all possible counters in
> PERF_GLOBAL_CTRL, as reported by CPUID.0AH: EAX[15:8].
> 
> But then wondered if it was going too far, as for the purposes here we
> just care about PMC1.
> 
> My reasoning for not doing it would be that such wide setup of
> PERF_GLOBAL_CTRL would then be gated on the watchdog being enabled,
> usages of other counters apart from PMC0 will be gated on the watchdog
> being enabled.

Since Andrew didn't explicitly say so in his reply - imo this then means
the adjustment wants moving out of setup_p6_watchdog().

Jan

>  It seems more reliable to me to either do the setting
> of PERF_GLOBAL_CTRL as part of CPU initialization, or defer to each
> user of a PMC to take care of enabling it in PERF_GLOBAL_CTRL.
> 
>> vPMU (although mutually exclusive with watchdog) does context switch
>> this register as a whole.
>>
>> See how global_ctrl_mask gets set up, although I'm not sure how much of
>> that infrastructure we really want to reuse here.
> 
> Yes, if we want to enable all possible counters we would need to use
> something similar to what's done there, albeit without the fixed
> counter part.
> 
> Thanks, Roger.



From xen-devel-bounces@lists.xenproject.org Thu Jan 11 08:37:23 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 11 Jan 2024 08:37:23 +0000
Received: from list by lists.xenproject.org with outflank-mailman.666010.1036393 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNqYw-0005J8-Qe; Thu, 11 Jan 2024 08:37:18 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 666010.1036393; Thu, 11 Jan 2024 08:37:18 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNqYw-0005IE-Mq; Thu, 11 Jan 2024 08:37:18 +0000
Received: by outflank-mailman (input) for mailman id 666010;
 Thu, 11 Jan 2024 08:37:16 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=YFj+=IV=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rNqYu-0005Hi-PS
 for xen-devel@lists.xenproject.org; Thu, 11 Jan 2024 08:37:16 +0000
Received: from mail-wm1-x32c.google.com (mail-wm1-x32c.google.com
 [2a00:1450:4864:20::32c])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 9f193eb4-b05c-11ee-9b0f-b553b5be7939;
 Thu, 11 Jan 2024 09:37:14 +0100 (CET)
Received: by mail-wm1-x32c.google.com with SMTP id
 5b1f17b1804b1-40e60e1373bso2038115e9.1
 for <xen-devel@lists.xenproject.org>; Thu, 11 Jan 2024 00:37:14 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 h16-20020a05600c351000b0040e4914f28dsm4860973wmq.18.2024.01.11.00.37.13
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 11 Jan 2024 00:37:14 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 9f193eb4-b05c-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1704962234; x=1705567034; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:cc:autocrypt:from:references
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=WqDaRMWjxFa+sEz0bxzLptucoToC2rAxXO+kGP63rF8=;
        b=e7PoZpBM45mIsX64wbtlHY27sl/q4q5/JZTZfdglxityEGktnM9sRXX7RUkrr66P8Y
         H5VAe4luHjK06LX92bX6DKcifR2GLGAMt2cflNbohaQ/uVdcFGMr/51UEn+NAavya6J3
         neVU4HoDfhhchoDHSo4t9y789zI44WmghD5xMA7hpefO2WRiO6qq/aCdN/uG/lU6FDkO
         QYYW8YeoXYjUZwyAoKCCHO8yef73ErS5tydQDwkYCoOxt+kBQ9+opqDNFU3Ar30WEaKg
         CwjYlByDGXisL9JvHZ5OIhvchl5ivCWuNYY6C3FzR8HYL1zxWd7rV/xagUY8ItWytwrf
         CKAg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704962234; x=1705567034;
        h=content-transfer-encoding:in-reply-to:cc:autocrypt:from:references
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=WqDaRMWjxFa+sEz0bxzLptucoToC2rAxXO+kGP63rF8=;
        b=kNNjVcpo+/PXjvtolV3ysDVp7s8asg69Jui9E2RvmZ2Px8joZnkUsRHb+FNWe75iwM
         FY2Lx6C7F9gdQkLeSiyAfX25VuATUQmxT8EFDPmO+PLsnPLB44G+9CkmfHj+vpurTDoy
         BZiHT4xs08EzDnchOV2atcHqrmkUJRnl8o4Dp9+9Ktarw23KiOqey5maUcFrJCKJDy6D
         IPBqa+DZZ2qcFk5Fk4ZXcGCgA2GoeCvBWDcgUTRMQOZDbdgN7TDzsuMnOmspXCm2IYNY
         kIgopoPQeotl1pO5NDnz9MRmAK1f8K7Ir4AIMaJ/CoYXaofD6PdxJEikBfsE9ckrxs74
         1ToA==
X-Gm-Message-State: AOJu0Yz9is8SFxpy46WWieqPbKDHst9NQuC62omHX6hBnPwo+YPKAI90
	Z2iofcSd0loioi3I8JAegG7+adObJz55
X-Google-Smtp-Source: AGHT+IHGhWt2atID/9nE+GUTF3q/5l0aTWqBhl4vvCCceO/JAEs8nmLU1qNpAnvRrsZ+K7eDPBk1AQ==
X-Received: by 2002:a05:600c:501f:b0:40e:6106:3e53 with SMTP id n31-20020a05600c501f00b0040e61063e53mr199151wmr.11.1704962234291;
        Thu, 11 Jan 2024 00:37:14 -0800 (PST)
Message-ID: <1708c3d7-662a-44bc-b9b3-4ab9f8642d7b@suse.com>
Date: Thu, 11 Jan 2024 09:37:13 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: E820 memory allocation issue on Threadripper platforms
Content-Language: en-US
To: Patrick Plenefisch <simonpatp@gmail.com>
References: <CAOCpoWdOH=xGxiQSC1c5Ueb1THxAjH4WiZbCZq-QT+d_KAk3SA@mail.gmail.com>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
Cc: xen-devel@lists.xenproject.org
In-Reply-To: <CAOCpoWdOH=xGxiQSC1c5Ueb1THxAjH4WiZbCZq-QT+d_KAk3SA@mail.gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 11.01.2024 03:29, Patrick Plenefisch wrote:
> Hi,
> 
> I ran into a memory allocation issue, I think. It is the same as
> https://github.com/QubesOS/qubes-issues/issues/8791 and I saw at the end it
> was recommended (by marmarek) that the issue reporter forward the issue to
> this list. I searched the list, but as I didn't see it in the list already,
> I'm doing that now.
> 
> Hardware:
> I have an AMD Threadripper 7960X on a ASRock TRX50 WS motherboard. The
> Qubes reporter had a Threadripper 3970X on an ASUS Prime TRX40-Pro
> Motherboard. I saw a 3rd issue report of a similar issue on another
> Threadripper, so I think this may be Threadripper-specific.
> 
> Setup:
> The QuebesOS reporter was using Qubes Installer.
> My install was that I had a fresh install of Debian 12 (no gui), and then
> did `apt install xen-system-amd64` and rebooted.
> 
> The issue:
> Any boot of Xen on the hardware results in a halted machine. When
> monitoring the logs with `vga=,keep`, we get:
> 
> (XEN) *** Serial input to DOM0 (type 'CTRL-a' three times to switch input)
> (XEN) Freed 644kB init memory
> mapping kernel into physical memory
> about to get started…
> xen hypervisor allocated kernel memory conflicts with E820

So first of all (the title doesn't say it) this is a Linux Dom0 issue.
Whether or not needing addressing in Xen is unknown at this point.

> (XEN) Hardware Dom0 halted: halting machine
> 
> None of the settings I or the Qubes reporter have tried have been able to
> get past this failure.
> 
> I am happy to provide debugging support.

Well, the crucial piece of data initially is going to be: What's the
E820 map Xen gets to see, what's the E820 map Dom0 gets to see, and
what address range is the conflict detected for? The first question
is possible to answer by supplying a serial log. The second question
likely means adding some debugging code to either Xen or Linux. The
answer to third question may be possible to infer from the other
data, but would likely be better to obtain explicitly by adjusting /
amending the message Linux emits.

Jan


From xen-devel-bounces@lists.xenproject.org Thu Jan 11 08:58:02 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 11 Jan 2024 08:58:02 +0000
Received: from list by lists.xenproject.org with outflank-mailman.666015.1036402 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNqsk-0002oJ-Df; Thu, 11 Jan 2024 08:57:46 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 666015.1036402; Thu, 11 Jan 2024 08:57:46 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNqsk-0002oC-AF; Thu, 11 Jan 2024 08:57:46 +0000
Received: by outflank-mailman (input) for mailman id 666015;
 Thu, 11 Jan 2024 08:57:45 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=YFj+=IV=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rNqsj-0002o3-Rg
 for xen-devel@lists.xenproject.org; Thu, 11 Jan 2024 08:57:45 +0000
Received: from mail-wr1-x429.google.com (mail-wr1-x429.google.com
 [2a00:1450:4864:20::429])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 7ac8bb0c-b05f-11ee-9b0f-b553b5be7939;
 Thu, 11 Jan 2024 09:57:43 +0100 (CET)
Received: by mail-wr1-x429.google.com with SMTP id
 ffacd0b85a97d-336c9acec03so4430031f8f.2
 for <xen-devel@lists.xenproject.org>; Thu, 11 Jan 2024 00:57:42 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 b6-20020adfee86000000b00337478efa4fsm632929wro.60.2024.01.11.00.57.41
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 11 Jan 2024 00:57:41 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 7ac8bb0c-b05f-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1704963462; x=1705568262; darn=lists.xenproject.org;
        h=content-transfer-encoding:autocrypt:content-language:cc:to:subject
         :from:user-agent:mime-version:date:message-id:from:to:cc:subject
         :date:message-id:reply-to;
        bh=vEjp0lUxWg0eDA0qewml4+FtoJClOnbeXChKiBoeOOE=;
        b=azuX5KXq8RRbvnCXuwyiZdIqVzdGQOM5gB76AAy6ENFpwAFxjm8A7lcpHBdINy94al
         qyS33v6i1hdQXw/BMEgnMnDKf/2vXHkEZI64Q0QdTxYOLLYCMwS85ls3OEIePybUfLZn
         ysxzdK9AOgJWprGdDbcxMoeJuYoPW8AbQk4X6GbLNfPQaEEVH4CV3EFZhXogUEAdc05r
         UMH9ahMFLzAHAkdJfNO3Zj3BE7SJpkBsLBZjnUG0OkZcrZnrnvLzNjRcYqJdXCy3zD8A
         xF/tyCIUstcOGCKfnGfJbZiZvBH+IFBzPXJmDNbELnb3TpoXleGUfvOhIfN/nazDlU2S
         IaTg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704963462; x=1705568262;
        h=content-transfer-encoding:autocrypt:content-language:cc:to:subject
         :from:user-agent:mime-version:date:message-id:x-gm-message-state
         :from:to:cc:subject:date:message-id:reply-to;
        bh=vEjp0lUxWg0eDA0qewml4+FtoJClOnbeXChKiBoeOOE=;
        b=lSu3lB22x8+jEbl0IykqDGlVULhYB/psWfXePtkXje6dApCyQfQ6h1GCK6PrEDbFeu
         DUh8K8Cre1B4tnKe3iJMNlDlcU3LqOfBdaz/jnZvrjzI0t/2RtWWYLcFyj2FqRLZ2g4Z
         1OvBjXY60BxXxfQr8qTqe0fYzVEWrEoFhcg8KXlaG461Gc6qT4SxytLgv4ZJyB8dHCc2
         3PD+HM/qELextjwB9E+jMz/H5dqskMt2DYERwau7EOIud08fggK/67UdxCvuOPIcvdQv
         fCIdXQ0w+Kt3m8xSOj3ShY1NSYYaIrp9R1rcKL5wGcTsHQ905kC7eKdA0UxrXsjXR173
         pgQQ==
X-Gm-Message-State: AOJu0YycBxOOsBILoyj0rAC8lq87DepqM2PsMV1M1SVpIFQBV2jdlGWw
	EnESU9dCbwI3DQZ/h7kmYivJk9x4/fBiUZjhrOERPXL+NA==
X-Google-Smtp-Source: AGHT+IHG7IhHxy1+Dw3aMjaT+D4AhEbfTQeMAP/iS7/yZsqDWjMuDsJmfrZSp6ocQ7jisTh36DZkDA==
X-Received: by 2002:adf:e742:0:b0:336:873b:6b21 with SMTP id c2-20020adfe742000000b00336873b6b21mr427264wrn.33.1704963461980;
        Thu, 11 Jan 2024 00:57:41 -0800 (PST)
Message-ID: <9dd23064-c79e-4a50-9c71-c0e73b189944@suse.com>
Date: Thu, 11 Jan 2024 09:57:41 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
From: Jan Beulich <jbeulich@suse.com>
Subject: [PATCH v4 0/8] x86emul: misc additions
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, Wei Liu <wl@xen.org>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
Content-Language: en-US
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

1: x86emul: support LKGS
2: x86emul: support CMPccXADD
3: VMX: tertiary execution control infrastructure
4: x86emul+VMX: support {RD,WR}MSRLIST
5: x86: introduce x86_seg_sys
6: x86emul: support USER_MSR instructions
7: x86/cpu-policy: re-arrange no-VMX logic
8: VMX: support USER_MSR

Jan



From xen-devel-bounces@lists.xenproject.org Thu Jan 11 08:59:23 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 11 Jan 2024 08:59:23 +0000
Received: from list by lists.xenproject.org with outflank-mailman.666018.1036412 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNquH-0003kr-O5; Thu, 11 Jan 2024 08:59:21 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 666018.1036412; Thu, 11 Jan 2024 08:59:21 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNquH-0003kk-LH; Thu, 11 Jan 2024 08:59:21 +0000
Received: by outflank-mailman (input) for mailman id 666018;
 Thu, 11 Jan 2024 08:59:20 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=YFj+=IV=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rNquG-0003ka-Cc
 for xen-devel@lists.xenproject.org; Thu, 11 Jan 2024 08:59:20 +0000
Received: from mail-wr1-x42b.google.com (mail-wr1-x42b.google.com
 [2a00:1450:4864:20::42b])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id b3b579de-b05f-11ee-9b0f-b553b5be7939;
 Thu, 11 Jan 2024 09:59:18 +0100 (CET)
Received: by mail-wr1-x42b.google.com with SMTP id
 ffacd0b85a97d-3377d45c178so963892f8f.2
 for <xen-devel@lists.xenproject.org>; Thu, 11 Jan 2024 00:59:18 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 h6-20020adf9cc6000000b003375d8b0460sm643239wre.1.2024.01.11.00.59.16
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 11 Jan 2024 00:59:17 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: b3b579de-b05f-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1704963557; x=1705568357; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:content-language
         :references:cc:to:from:subject:user-agent:mime-version:date
         :message-id:from:to:cc:subject:date:message-id:reply-to;
        bh=znZFpFdugFR9A56wiLGjbizRfrV+yEAUwi/XRqDEfaM=;
        b=ZiGcRgS6gbop5mFJGa8JUv2sFnJm0KyrPDZoC5XDDMrwtG1nO6sSTkMIx8BIJZhpj/
         jYXP3gAFPfBV7zCgZi7fys0TaKviFY8nrTV9XiyEgaxz7W+F4pL6cz8RZ5L+tzimrJkP
         FzUMeyQotWNV8CUDNL/HJce9aYJ7y7HMNeFpeOKmw+HMndVFIqBnpA0CATYb8lbSScZc
         5NubO7OycAcnQoi1Ix8lIKB7VrBdvEqrM70OYm8+N7yxEa6r8JEiCpgq/HAifedxjU28
         wx9p75kVt/BeVruuiNliNVFV8nmngnH0mFruEZYyJiPah8g7AgYxzIdD9J43cG07WnlP
         YPnA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704963557; x=1705568357;
        h=content-transfer-encoding:in-reply-to:autocrypt:content-language
         :references:cc:to:from:subject:user-agent:mime-version:date
         :message-id:x-gm-message-state:from:to:cc:subject:date:message-id
         :reply-to;
        bh=znZFpFdugFR9A56wiLGjbizRfrV+yEAUwi/XRqDEfaM=;
        b=daqt6J3lLResYRw1XMYU9Rp7XA2DE7zTRyjMDxu5efoO8kH0torrPVDi05ay/Miq6c
         WBCmPZucNQlBpScC/ev14Oh6mxc03QGsN90tGoCYXrGMjr8hT5s59hyUVrs9J2k25ohk
         v6LLZDwCjktjtkvbzwpD8yL/VepIi/YMa2MTYLxvNjiOohOT5hqoy2tBcjzevBWKBbtn
         jYM7YlLuuGHll1fz2o1iymo9ZkMNkejFwVM2P21DwXjTTbwm/wSdzjY9e9GL4xC7pOxm
         t7ZhILvo7bfxrq1MmPUSaBfmx8/yL3rK74nWF6VcwfN5jASW7WxM2j8hFn8YF4FFuZGc
         Hsfw==
X-Gm-Message-State: AOJu0Yx38OkiL3IDbGxPcPqPDy5Ww5ae6aMcxv+hcRjZYpcptMhjBQqQ
	rJaz65mMPdFkYwbevMxxsaSBP2L7rmP40HsaKxussbZL6w==
X-Google-Smtp-Source: AGHT+IGlWrF4aJgeWzqLqIzbwftTZ3q1BJp0lUkAMTUhudUuD6s53E24JZ/CLX7bjhE4+8JBF/Hkdw==
X-Received: by 2002:a05:600c:4a9d:b0:40e:59da:c7cd with SMTP id b29-20020a05600c4a9d00b0040e59dac7cdmr214202wmp.65.1704963557397;
        Thu, 11 Jan 2024 00:59:17 -0800 (PST)
Message-ID: <dd67cd34-8aa2-46d2-8c54-fe2afb1a96e1@suse.com>
Date: Thu, 11 Jan 2024 09:59:16 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: [PATCH v4 1/8] x86emul: support LKGS
From: Jan Beulich <jbeulich@suse.com>
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, Wei Liu <wl@xen.org>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
References: <9dd23064-c79e-4a50-9c71-c0e73b189944@suse.com>
Content-Language: en-US
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <9dd23064-c79e-4a50-9c71-c0e73b189944@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

Provide support for this insn, which is a prereq to FRED. CPUID-wise
introduce both its and FRED's bit at this occasion, thus allowing to
also express the dependency right away.

While adding a testcase, also add a SWAPGS one. In order to not affect
the behavior of pre-existing tests, install write_{segment,msr} hooks
only transiently.

Signed-off-by: Jan Beulich <jbeulich@suse.com>
---
Instead of ->read_segment() we could of course also use ->read_msr() to
fetch the original GS base. I don't think I can see a clear advantage of
either approach; the way it's done it matches how we handle SWAPGS.

For PV save_segments() would need adjustment, but the insn being
restricted to ring 0 means PV guests can't use it anyway (unless we
wanted to emulate it as another privileged insn).
---
v3: Add dependency on LM. Re-base.
v2: Use X86_EXC_*. Add comments.

--- a/tools/misc/xen-cpuid.c
+++ b/tools/misc/xen-cpuid.c
@@ -190,7 +190,8 @@ static const char *const str_7a1[32] =
     [10] = "fzrm",          [11] = "fsrs",
     [12] = "fsrcs",
 
-    /* 18 */                [19] = "wrmsrns",
+    /* 16 */                [17] = "fred",
+    [18] = "lkgs",          [19] = "wrmsrns",
 
     /* 22 */                [23] = "avx-ifma",
 };
--- a/tools/tests/x86_emulator/predicates.c
+++ b/tools/tests/x86_emulator/predicates.c
@@ -326,6 +326,7 @@ static const struct {
     { { 0x00, 0x18 }, { 2, 2 }, T, R }, /* ltr */
     { { 0x00, 0x20 }, { 2, 2 }, T, R }, /* verr */
     { { 0x00, 0x28 }, { 2, 2 }, T, R }, /* verw */
+    { { 0x00, 0x30 }, { 0, 2 }, T, R, pfx_f2 }, /* lkgs */
     { { 0x01, 0x00 }, { 2, 2 }, F, W }, /* sgdt */
     { { 0x01, 0x08 }, { 2, 2 }, F, W }, /* sidt */
     { { 0x01, 0x10 }, { 2, 2 }, F, R }, /* lgdt */
--- a/tools/tests/x86_emulator/test_x86_emulator.c
+++ b/tools/tests/x86_emulator/test_x86_emulator.c
@@ -680,6 +680,10 @@ static int blk(
     return x86_emul_blk((void *)offset, p_data, bytes, eflags, state, ctxt);
 }
 
+#ifdef __x86_64__
+static unsigned long gs_base, gs_base_shadow;
+#endif
+
 static int read_segment(
     enum x86_segment seg,
     struct segment_register *reg,
@@ -689,8 +693,30 @@ static int read_segment(
         return X86EMUL_UNHANDLEABLE;
     memset(reg, 0, sizeof(*reg));
     reg->p = 1;
+
+#ifdef __x86_64__
+    if ( seg == x86_seg_gs )
+        reg->base = gs_base;
+#endif
+
+    return X86EMUL_OKAY;
+}
+
+#ifdef __x86_64__
+static int write_segment(
+    enum x86_segment seg,
+    const struct segment_register *reg,
+    struct x86_emulate_ctxt *ctxt)
+{
+    if ( !is_x86_user_segment(seg) )
+        return X86EMUL_UNHANDLEABLE;
+
+    if ( seg == x86_seg_gs )
+        gs_base = reg->base;
+
     return X86EMUL_OKAY;
 }
+#endif
 
 static int read_msr(
     unsigned int reg,
@@ -703,6 +729,20 @@ static int read_msr(
         *val = ctxt->addr_size > 32 ? 0x500 /* LME|LMA */ : 0;
         return X86EMUL_OKAY;
 
+#ifdef __x86_64__
+    case 0xc0000101: /* GS_BASE */
+        if ( ctxt->addr_size < 64 )
+            break;
+        *val = gs_base;
+        return X86EMUL_OKAY;
+
+    case 0xc0000102: /* SHADOW_GS_BASE */
+        if ( ctxt->addr_size < 64 )
+            break;
+        *val = gs_base_shadow;
+        return X86EMUL_OKAY;
+#endif
+
     case 0xc0000103: /* TSC_AUX */
 #define TSC_AUX_VALUE 0xCACACACA
         *val = TSC_AUX_VALUE;
@@ -712,6 +752,31 @@ static int read_msr(
     return X86EMUL_UNHANDLEABLE;
 }
 
+#ifdef __x86_64__
+static int write_msr(
+    unsigned int reg,
+    uint64_t val,
+    struct x86_emulate_ctxt *ctxt)
+{
+    switch ( reg )
+    {
+    case 0xc0000101: /* GS_BASE */
+        if ( ctxt->addr_size < 64 || !is_canonical_address(val) )
+            break;
+        gs_base = val;
+        return X86EMUL_OKAY;
+
+    case 0xc0000102: /* SHADOW_GS_BASE */
+        if ( ctxt->addr_size < 64 || !is_canonical_address(val) )
+            break;
+        gs_base_shadow = val;
+        return X86EMUL_OKAY;
+    }
+
+    return X86EMUL_UNHANDLEABLE;
+}
+#endif
+
 #define INVPCID_ADDR 0x12345678
 #define INVPCID_PCID 0x123
 
@@ -1345,6 +1410,41 @@ int main(int argc, char **argv)
         printf("%u bytes read - ", bytes_read);
         goto fail;
     }
+    printf("okay\n");
+
+    emulops.write_segment = write_segment;
+    emulops.write_msr     = write_msr;
+
+    printf("%-40s", "Testing swapgs...");
+    instr[0] = 0x0f; instr[1] = 0x01; instr[2] = 0xf8;
+    regs.eip = (unsigned long)&instr[0];
+    gs_base = 0xffffeeeecccc8888UL;
+    gs_base_shadow = 0x0000111122224444UL;
+    rc = x86_emulate(&ctxt, &emulops);
+    if ( (rc != X86EMUL_OKAY) ||
+         (regs.eip != (unsigned long)&instr[3]) ||
+         (gs_base != 0x0000111122224444UL) ||
+         (gs_base_shadow != 0xffffeeeecccc8888UL) )
+        goto fail;
+    printf("okay\n");
+
+    printf("%-40s", "Testing lkgs 2(%rdx)...");
+    instr[0] = 0xf2; instr[1] = 0x0f; instr[2] = 0x00; instr[3] = 0x72; instr[4] = 0x02;
+    regs.eip = (unsigned long)&instr[0];
+    regs.edx = (unsigned long)res;
+    res[0]   = 0x00004444;
+    res[1]   = 0x8888cccc;
+    i = cp.extd.nscb; cp.extd.nscb = true; /* for AMD */
+    rc = x86_emulate(&ctxt, &emulops);
+    if ( (rc != X86EMUL_OKAY) ||
+         (regs.eip != (unsigned long)&instr[5]) ||
+         (gs_base != 0x0000111122224444UL) ||
+         gs_base_shadow )
+        goto fail;
+
+    cp.extd.nscb = i;
+    emulops.write_segment = NULL;
+    emulops.write_msr     = NULL;
 #endif
     printf("okay\n");
 
--- a/tools/tests/x86_emulator/x86-emulate.c
+++ b/tools/tests/x86_emulator/x86-emulate.c
@@ -86,6 +86,7 @@ bool emul_test_init(void)
     cp.feat.adx = true;
     cp.feat.avx512pf = cp.feat.avx512f;
     cp.feat.rdpid = true;
+    cp.feat.lkgs = true;
     cp.feat.wrmsrns = true;
     cp.extd.clzero = true;
 
--- a/xen/arch/x86/x86_emulate/decode.c
+++ b/xen/arch/x86/x86_emulate/decode.c
@@ -741,8 +741,12 @@ decode_twobyte(struct x86_emulate_state
         case 0:
             s->desc |= DstMem | SrcImplicit | Mov;
             break;
+        case 6:
+            if ( !(s->modrm_reg & 1) && mode_64bit() )
+            {
         case 2: case 4:
-            s->desc |= SrcMem16;
+                s->desc |= SrcMem16;
+            }
             break;
         }
         break;
--- a/xen/arch/x86/x86_emulate/private.h
+++ b/xen/arch/x86/x86_emulate/private.h
@@ -589,6 +589,7 @@ amd_like(const struct x86_emulate_ctxt *
 #define vcpu_has_avx512_fp16() (ctxt->cpuid->feat.avx512_fp16)
 #define vcpu_has_avx_vnni()    (ctxt->cpuid->feat.avx_vnni)
 #define vcpu_has_avx512_bf16() (ctxt->cpuid->feat.avx512_bf16)
+#define vcpu_has_lkgs()        (ctxt->cpuid->feat.lkgs)
 #define vcpu_has_wrmsrns()     (ctxt->cpuid->feat.wrmsrns)
 #define vcpu_has_avx_ifma()    (ctxt->cpuid->feat.avx_ifma)
 #define vcpu_has_avx_vnni_int8() (ctxt->cpuid->feat.avx_vnni_int8)
--- a/xen/arch/x86/x86_emulate/x86_emulate.c
+++ b/xen/arch/x86/x86_emulate/x86_emulate.c
@@ -2869,8 +2869,35 @@ x86_emulate(
                 break;
             }
             break;
-        default:
-            generate_exception_if(true, X86_EXC_UD);
+        case 6: /* lkgs */
+            generate_exception_if((modrm_reg & 1) || vex.pfx != vex_f2,
+                                  X86_EXC_UD);
+            generate_exception_if(!mode_64bit() || !mode_ring0(), X86_EXC_UD);
+            vcpu_must_have(lkgs);
+            fail_if(!ops->read_segment || !ops->read_msr ||
+                    !ops->write_segment || !ops->write_msr);
+            if ( (rc = ops->read_msr(MSR_SHADOW_GS_BASE, &msr_val,
+                                     ctxt)) != X86EMUL_OKAY ||
+                 (rc = ops->read_segment(x86_seg_gs, &sreg,
+                                         ctxt)) != X86EMUL_OKAY )
+                goto done;
+            dst.orig_val = sreg.base; /* Preserve full GS Base. */
+            if ( (rc = protmode_load_seg(x86_seg_gs, src.val, false, &sreg,
+                                         ctxt, ops)) != X86EMUL_OKAY ||
+                 /* Write (32-bit) base into SHADOW_GS. */
+                 (rc = ops->write_msr(MSR_SHADOW_GS_BASE, sreg.base,
+                                      ctxt)) != X86EMUL_OKAY )
+                goto done;
+            sreg.base = dst.orig_val; /* Reinstate full GS Base. */
+            if ( (rc = ops->write_segment(x86_seg_gs, &sreg,
+                                          ctxt)) != X86EMUL_OKAY )
+            {
+                /* Best effort unwind (i.e. no real error checking). */
+                if ( ops->write_msr(MSR_SHADOW_GS_BASE, msr_val,
+                                    ctxt) == X86EMUL_EXCEPTION )
+                    x86_emul_reset_event(ctxt);
+                goto done;
+            }
             break;
         }
         break;
--- a/xen/include/public/arch-x86/cpufeatureset.h
+++ b/xen/include/public/arch-x86/cpufeatureset.h
@@ -282,6 +282,8 @@ XEN_CPUFEATURE(AVX512_BF16,  10*32+ 5) /
 XEN_CPUFEATURE(FZRM,         10*32+10) /*A  Fast Zero-length REP MOVSB */
 XEN_CPUFEATURE(FSRS,         10*32+11) /*A  Fast Short REP STOSB */
 XEN_CPUFEATURE(FSRCS,        10*32+12) /*A  Fast Short REP CMPSB/SCASB */
+XEN_CPUFEATURE(FRED,         10*32+17) /*   Flexible Return and Event Delivery */
+XEN_CPUFEATURE(LKGS,         10*32+18) /*S  Load Kernel GS Base */
 XEN_CPUFEATURE(WRMSRNS,      10*32+19) /*S  WRMSR Non-Serialising */
 XEN_CPUFEATURE(AVX_IFMA,     10*32+23) /*A  AVX-IFMA Instructions */
 
--- a/xen/tools/gen-cpuid.py
+++ b/xen/tools/gen-cpuid.py
@@ -274,7 +274,7 @@ def crunch_numbers(state):
         # superpages, PCID and PKU are only available in 4 level paging.
         # NO_LMSL indicates the absense of Long Mode Segment Limits, which
         # have been dropped in hardware.
-        LM: [CX16, PCID, LAHF_LM, PAGE1GB, PKU, NO_LMSL],
+        LM: [CX16, PCID, LAHF_LM, PAGE1GB, PKU, NO_LMSL, LKGS],
 
         # AMD K6-2+ and K6-III processors shipped with 3DNow+, beyond the
         # standard 3DNow in the earlier K6 processors.
@@ -332,6 +332,9 @@ def crunch_numbers(state):
 
         # The behaviour described by RRSBA depend on eIBRS being active.
         EIBRS: [RRSBA],
+
+        # FRED builds on the LKGS instruction.
+        LKGS: [FRED],
     }
 
     deep_features = tuple(sorted(deps.keys()))



From xen-devel-bounces@lists.xenproject.org Thu Jan 11 08:59:42 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 11 Jan 2024 08:59:42 +0000
Received: from list by lists.xenproject.org with outflank-mailman.666021.1036423 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNquc-0004J2-4n; Thu, 11 Jan 2024 08:59:42 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 666021.1036423; Thu, 11 Jan 2024 08:59:42 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNquc-0004I8-1H; Thu, 11 Jan 2024 08:59:42 +0000
Received: by outflank-mailman (input) for mailman id 666021;
 Thu, 11 Jan 2024 08:59:40 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=YFj+=IV=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rNqua-0003ka-80
 for xen-devel@lists.xenproject.org; Thu, 11 Jan 2024 08:59:40 +0000
Received: from mail-wr1-x42b.google.com (mail-wr1-x42b.google.com
 [2a00:1450:4864:20::42b])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id bfdaba3b-b05f-11ee-9b0f-b553b5be7939;
 Thu, 11 Jan 2024 09:59:38 +0100 (CET)
Received: by mail-wr1-x42b.google.com with SMTP id
 ffacd0b85a97d-3368abe1093so4046176f8f.2
 for <xen-devel@lists.xenproject.org>; Thu, 11 Jan 2024 00:59:38 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 h6-20020adf9cc6000000b003375d8b0460sm643239wre.1.2024.01.11.00.59.37
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 11 Jan 2024 00:59:37 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: bfdaba3b-b05f-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1704963578; x=1705568378; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:references:cc:to
         :from:content-language:subject:user-agent:mime-version:date
         :message-id:from:to:cc:subject:date:message-id:reply-to;
        bh=ro9sYcIYrT3iuwke3NKdji6jgyYKriFbBKqrEoY/8E0=;
        b=eCBkzuY9Qffcwj7vS0S0b1owvn9QM0RPfFMl1rFYuGIGihdGGjlVoTuPCwxcPOZRol
         tJm5el+qBwsOuGTGT9m/zT9WhRsSgqz2C5kRr50YskwChzCl+HbbbOgeJnJ6fexBN8tx
         lZ022WL0JtiMVTle+cUjryUuT7JIG7a4hGropyix6O2TdhLHK5anwF2A5XKgQb2WcTdX
         O3OdIAgfxeGPEKbRq+PKU6wTiaFcax1hpt0fekLW5yMHDd/jSQ2L8+kvvdCdH2HNvn/p
         BUunE1pWImfFlER/YxXQ40wu/1K7Eyo1nnsttnm8nWlVaBNwbEH38TdnMq1BnRhY+ALa
         avjw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704963578; x=1705568378;
        h=content-transfer-encoding:in-reply-to:autocrypt:references:cc:to
         :from:content-language:subject:user-agent:mime-version:date
         :message-id:x-gm-message-state:from:to:cc:subject:date:message-id
         :reply-to;
        bh=ro9sYcIYrT3iuwke3NKdji6jgyYKriFbBKqrEoY/8E0=;
        b=XeRXknN950uNVv+abJfWZPO2DG0ZIY8xCWkE5cDoVvRvI7pNzyDaeRazhyVzWxLEbf
         STULLJfrFo3SFIj91sDQXC1pD9pgXR+XpuSyzSplscqNOFczDWRLupYAK9VeJ1CQxaJh
         Ls9q9lf5KisHnnQuZj9HQD/ZHBTCpRpBUJ/Fq2hVjEtzvBxy5ksRlYQ827VbR3SNtdrZ
         0iPt65XmIaWStVykPw7O+jQGc5I/WwI+lE2n+t1scdPXrTEnu3kdJITDZjd3qaN7Unvz
         a48jIDdeJuEV8+SQFMfv/+Nl/bdudF/IPZVYovGtBhL6U/sVT2EEkgI4iVHrX7/dkYzq
         VRXQ==
X-Gm-Message-State: AOJu0YxL6LeFUPsT1afAfSAFOjTm7tmI+B676L9553oJwQ11MVTy8OYn
	DzKlGjL7RWXpTgRwpeuppWsZp83rm2KlRzULegnHRSDniw==
X-Google-Smtp-Source: AGHT+IEQ3bPznbTKUgDDfHX8Lg2qgVKT6K+kQNtU3t8+Sq+KXLstHTdaWMhUJigNksqpzDDp5dmoGA==
X-Received: by 2002:adf:f2d1:0:b0:332:cf4c:2a54 with SMTP id d17-20020adff2d1000000b00332cf4c2a54mr433085wrp.50.1704963577781;
        Thu, 11 Jan 2024 00:59:37 -0800 (PST)
Message-ID: <98587021-8c2e-44ab-a6f5-a66680e2df66@suse.com>
Date: Thu, 11 Jan 2024 09:59:37 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: [PATCH v4 2/8] x86emul: support CMPccXADD
Content-Language: en-US
From: Jan Beulich <jbeulich@suse.com>
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, Wei Liu <wl@xen.org>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
References: <9dd23064-c79e-4a50-9c71-c0e73b189944@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <9dd23064-c79e-4a50-9c71-c0e73b189944@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

Unconditionally wire this through the ->rmw() hook. Since x86_emul_rmw()
now wants to construct and invoke a stub, make stub_exn available to it
via a new field in the emulator state structure.

Signed-off-by: Jan Beulich <jbeulich@suse.com>
---
v3: Add dependency on LM. Re-base.
v2: Use X86_EXC_*. Move past introduction of stub_exn in struct
    x86_emulate_state. Keep feature at just "a" for now.
---
SDE: -grr or -srf

--- a/tools/misc/xen-cpuid.c
+++ b/tools/misc/xen-cpuid.c
@@ -186,6 +186,7 @@ static const char *const str_7d0[32] =
 static const char *const str_7a1[32] =
 {
     [ 4] = "avx-vnni",      [ 5] = "avx512-bf16",
+    /* 6 */                 [ 7] = "cmpccxadd",
 
     [10] = "fzrm",          [11] = "fsrs",
     [12] = "fsrcs",
--- a/tools/tests/x86_emulator/predicates.c
+++ b/tools/tests/x86_emulator/predicates.c
@@ -1403,6 +1403,22 @@ static const struct vex {
     { { 0xdd }, 2, T, R, pfx_66, WIG, Ln }, /* vaesenclast */
     { { 0xde }, 2, T, R, pfx_66, WIG, Ln }, /* vaesdec */
     { { 0xdf }, 2, T, R, pfx_66, WIG, Ln }, /* vaesdeclast */
+    { { 0xe0 }, 2, F, W, pfx_66, Wn, L0 }, /* cmpoxadd */
+    { { 0xe1 }, 2, F, W, pfx_66, Wn, L0 }, /* cmpnoxadd */
+    { { 0xe2 }, 2, F, W, pfx_66, Wn, L0 }, /* cmpbxadd */
+    { { 0xe3 }, 2, F, W, pfx_66, Wn, L0 }, /* cmpnbxadd */
+    { { 0xe4 }, 2, F, W, pfx_66, Wn, L0 }, /* cmpexadd */
+    { { 0xe5 }, 2, F, W, pfx_66, Wn, L0 }, /* cmpnexadd */
+    { { 0xe6 }, 2, F, W, pfx_66, Wn, L0 }, /* cmpbexadd */
+    { { 0xe7 }, 2, F, W, pfx_66, Wn, L0 }, /* cmpaxadd */
+    { { 0xe8 }, 2, F, W, pfx_66, Wn, L0 }, /* cmpsxadd */
+    { { 0xe9 }, 2, F, W, pfx_66, Wn, L0 }, /* cmpnsxadd */
+    { { 0xea }, 2, F, W, pfx_66, Wn, L0 }, /* cmppxadd */
+    { { 0xeb }, 2, F, W, pfx_66, Wn, L0 }, /* cmpnpxadd */
+    { { 0xec }, 2, F, W, pfx_66, Wn, L0 }, /* cmplxadd */
+    { { 0xed }, 2, F, W, pfx_66, Wn, L0 }, /* cmpgexadd */
+    { { 0xee }, 2, F, W, pfx_66, Wn, L0 }, /* cmplexadd */
+    { { 0xef }, 2, F, W, pfx_66, Wn, L0 }, /* cmpgxadd */
     { { 0xf2 }, 2, T, R, pfx_no, Wn, L0 }, /* andn */
     { { 0xf3, 0x08 }, 2, T, R, pfx_no, Wn, L0 }, /* blsr */
     { { 0xf3, 0x10 }, 2, T, R, pfx_no, Wn, L0 }, /* blsmsk */
--- a/tools/tests/x86_emulator/test_x86_emulator.c
+++ b/tools/tests/x86_emulator/test_x86_emulator.c
@@ -1412,6 +1412,78 @@ int main(int argc, char **argv)
     }
     printf("okay\n");
 
+    printf("%-40s", "Testing cmpbxadd %rbx,%r9,(%rdx)...");
+    if ( stack_exec && cpu_has_cmpccxadd )
+    {
+        instr[0] = 0xc4; instr[1] = 0x62; instr[2] = 0xe1; instr[3] = 0xe2; instr[4] = 0x0a;
+        regs.rip = (unsigned long)&instr[0];
+        regs.eflags = EFLAGS_ALWAYS_SET;
+        res[0] = 0x11223344;
+        res[1] = 0x01020304;
+        regs.rdx = (unsigned long)res;
+        regs.r9  = 0x0001020300112233UL;
+        regs.rbx = 0x0101010101010101UL;
+        rc = x86_emulate(&ctxt, &emulops);
+        if ( (rc != X86EMUL_OKAY) ||
+             (regs.eip != (unsigned long)&instr[5]) ||
+             (regs.r9 != 0x0102030411223344UL) ||
+             (regs.rbx != 0x0101010101010101UL) ||
+             ((regs.eflags & EFLAGS_MASK) !=
+              (X86_EFLAGS_PF | EFLAGS_ALWAYS_SET)) ||
+             (res[0] != 0x11223344) ||
+             (res[1] != 0x01020304) )
+            goto fail;
+
+        regs.rip = (unsigned long)&instr[0];
+        regs.r9 <<= 8;
+        rc = x86_emulate(&ctxt, &emulops);
+        if ( (rc != X86EMUL_OKAY) ||
+             (regs.eip != (unsigned long)&instr[5]) ||
+             (regs.r9 != 0x0102030411223344UL) ||
+             (regs.rbx != 0x0101010101010101UL) ||
+             ((regs.eflags & EFLAGS_MASK) !=
+              (X86_EFLAGS_CF | X86_EFLAGS_PF | X86_EFLAGS_SF |
+               EFLAGS_ALWAYS_SET)) ||
+             (res[0] != 0x12233445) ||
+             (res[1] != 0x02030405) )
+            goto fail;
+        printf("okay\n");
+
+        printf("%-40s", "Testing cmpsxadd %r9d,%ebx,4(%r10)...");
+        instr[1] = 0xc2; instr[2] = 0x31; instr[3] = 0xe8; instr[4] = 0x5a; instr[5] = 0x04;
+        regs.rip = (unsigned long)&instr[0];
+        res[2] = res[0] = ~0;
+        regs.r10 = (unsigned long)res;
+        rc = x86_emulate(&ctxt, &emulops);
+        if ( (rc != X86EMUL_OKAY) ||
+             (regs.eip != (unsigned long)&instr[6]) ||
+             (regs.r9 != 0x0102030411223344UL) ||
+             (regs.rbx != 0x02030405) ||
+             ((regs.eflags & EFLAGS_MASK) != EFLAGS_ALWAYS_SET) ||
+             (res[0] + 1) ||
+             (res[1] != 0x02030405) ||
+             (res[2] + 1) )
+            goto fail;
+
+        regs.rip = (unsigned long)&instr[0];
+        regs.rbx <<= 8;
+        rc = x86_emulate(&ctxt, &emulops);
+        if ( (rc != X86EMUL_OKAY) ||
+             (regs.eip != (unsigned long)&instr[6]) ||
+             (regs.r9 != 0x0102030411223344UL) ||
+             (regs.rbx != 0x02030405) ||
+             ((regs.eflags & EFLAGS_MASK) !=
+              (X86_EFLAGS_CF | X86_EFLAGS_PF | X86_EFLAGS_SF |
+               EFLAGS_ALWAYS_SET)) ||
+             (res[0] + 1) ||
+             (res[1] != 0x13253749) ||
+             (res[2] + 1) )
+            goto fail;
+        printf("okay\n");
+    }
+    else
+        printf("skipped\n");
+
     emulops.write_segment = write_segment;
     emulops.write_msr     = write_msr;
 
--- a/tools/tests/x86_emulator/x86-emulate.h
+++ b/tools/tests/x86_emulator/x86-emulate.h
@@ -178,6 +178,7 @@ void wrpkru(unsigned int val);
 #define cpu_has_avx512_fp16 (cp.feat.avx512_fp16 && xcr0_mask(0xe6))
 #define cpu_has_avx_vnni   (cp.feat.avx_vnni && xcr0_mask(6))
 #define cpu_has_avx512_bf16 (cp.feat.avx512_bf16 && xcr0_mask(0xe6))
+#define cpu_has_cmpccxadd  cp.feat.cmpccxadd
 #define cpu_has_avx_ifma   (cp.feat.avx_ifma && xcr0_mask(6))
 #define cpu_has_avx_vnni_int8 (cp.feat.avx_vnni_int8 && xcr0_mask(6))
 #define cpu_has_avx_ne_convert (cp.feat.avx_ne_convert && xcr0_mask(6))
--- a/xen/arch/x86/include/asm/cpufeature.h
+++ b/xen/arch/x86/include/asm/cpufeature.h
@@ -186,6 +186,7 @@ static inline bool boot_cpu_has(unsigned
 /* CPUID level 0x00000007:1.eax */
 #define cpu_has_avx_vnni        boot_cpu_has(X86_FEATURE_AVX_VNNI)
 #define cpu_has_avx512_bf16     boot_cpu_has(X86_FEATURE_AVX512_BF16)
+#define cpu_has_cmpccxadd       boot_cpu_has(X86_FEATURE_CMPCCXADD)
 #define cpu_has_avx_ifma        boot_cpu_has(X86_FEATURE_AVX_IFMA)
 
 /* CPUID level 0x00000007:1.edx */
--- a/xen/arch/x86/x86_emulate/decode.c
+++ b/xen/arch/x86/x86_emulate/decode.c
@@ -439,6 +439,7 @@ static const struct ext0f38_table {
     [0xd7] = { .simd_size = simd_scalar_vexw, .d8s = d8s_dq },
     [0xdb] = { .simd_size = simd_packed_int, .two_op = 1 },
     [0xdc ... 0xdf] = { .simd_size = simd_packed_int, .d8s = d8s_vl },
+    [0xe0 ... 0xef] = { .to_mem = 1 },
     [0xf0] = { .two_op = 1 },
     [0xf1] = { .to_mem = 1, .two_op = 1 },
     [0xf2 ... 0xf3] = {},
@@ -931,6 +932,8 @@ decode_0f38(struct x86_emulate_state *s,
             ctxt->opcode |= MASK_INSR(s->vex.pfx, X86EMUL_OPC_PFX_MASK);
         break;
 
+    case X86EMUL_OPC_VEX_66(0, 0xe0) ...
+         X86EMUL_OPC_VEX_66(0, 0xef): /* cmp<cc>xadd */
     case X86EMUL_OPC_VEX(0, 0xf2):    /* andn */
     case X86EMUL_OPC_VEX(0, 0xf3):    /* Grp 17 */
     case X86EMUL_OPC_VEX(0, 0xf5):    /* bzhi */
--- a/xen/arch/x86/x86_emulate/private.h
+++ b/xen/arch/x86/x86_emulate/private.h
@@ -257,6 +257,7 @@ struct x86_emulate_state {
         rmw_btc,
         rmw_btr,
         rmw_bts,
+        rmw_cmpccxadd,
         rmw_dec,
         rmw_inc,
         rmw_neg,
@@ -589,6 +590,7 @@ amd_like(const struct x86_emulate_ctxt *
 #define vcpu_has_avx512_fp16() (ctxt->cpuid->feat.avx512_fp16)
 #define vcpu_has_avx_vnni()    (ctxt->cpuid->feat.avx_vnni)
 #define vcpu_has_avx512_bf16() (ctxt->cpuid->feat.avx512_bf16)
+#define vcpu_has_cmpccxadd()   (ctxt->cpuid->feat.cmpccxadd)
 #define vcpu_has_lkgs()        (ctxt->cpuid->feat.lkgs)
 #define vcpu_has_wrmsrns()     (ctxt->cpuid->feat.wrmsrns)
 #define vcpu_has_avx_ifma()    (ctxt->cpuid->feat.avx_ifma)
--- a/xen/arch/x86/x86_emulate/x86_emulate.c
+++ b/xen/arch/x86/x86_emulate/x86_emulate.c
@@ -6934,6 +6934,15 @@ x86_emulate(
 
 #endif /* !X86EMUL_NO_SIMD */
 
+    case X86EMUL_OPC_VEX_66(0x0f38, 0xe0) ...
+         X86EMUL_OPC_VEX_66(0x0f38, 0xef): /* cmp<cc>xadd r,r,m */
+        generate_exception_if(!mode_64bit() || dst.type != OP_MEM || vex.l,
+                              X86_EXC_UD);
+        host_and_vcpu_must_have(cmpccxadd);
+        fail_if(!ops->rmw);
+        state->rmw = rmw_cmpccxadd;
+        break;
+
     case X86EMUL_OPC(0x0f38, 0xf0): /* movbe m,r */
     case X86EMUL_OPC(0x0f38, 0xf1): /* movbe r,m */
         vcpu_must_have(movbe);
@@ -8207,14 +8216,20 @@ x86_emulate(
     {
         ea.val = src.val;
         op_bytes = dst.bytes;
+        state->stub_exn = &stub_exn;
         rc = ops->rmw(dst.mem.seg, dst.mem.off, dst.bytes, &_regs.eflags,
                       state, ctxt);
+#ifdef __XEN__
+        if ( rc == X86EMUL_stub_failure )
+            goto emulation_stub_failure;
+#endif
         if ( rc != X86EMUL_OKAY )
             goto done;
 
         /* Some operations require a register to be written. */
         switch ( state->rmw )
         {
+        case rmw_cmpccxadd:
         case rmw_xchg:
         case rmw_xadd:
             switch ( dst.bytes )
@@ -8489,6 +8504,7 @@ int x86_emul_rmw(
     uint32_t *eflags,
     struct x86_emulate_state *s,
     struct x86_emulate_ctxt *ctxt)
+#define stub_exn (*s->stub_exn) /* for invoke_stub() */
 {
     unsigned long *dst = ptr;
 
@@ -8554,6 +8570,37 @@ int x86_emul_rmw(
 #undef BINOP
 #undef SHIFT
 
+#ifdef __x86_64__
+    case rmw_cmpccxadd:
+    {
+        struct x86_emulate_stub stub = {};
+        uint8_t *buf = get_stub(stub);
+        typeof(s->vex) *pvex = container_of(buf + 1, typeof(s->vex),
+                                            raw[0]);
+        unsigned long dummy;
+
+        buf[0] = 0xc4;
+        *pvex = s->vex;
+        pvex->b = 1;
+        pvex->r = 1;
+        pvex->reg = 0xf; /* rAX */
+        buf[3] = ctxt->opcode;
+        buf[4] = 0x11; /* reg=rDX r/m=(%RCX) */
+        buf[5] = 0xc3;
+
+        *eflags &= ~EFLAGS_MASK;
+        invoke_stub("",
+                    _POST_EFLAGS("[eflags]", "[mask]", "[tmp]"),
+                    "+m" (*dst), "+d" (s->ea.val),
+                    [tmp] "=&r" (dummy), [eflags] "+g" (*eflags)
+                    : "a" (*decode_vex_gpr(s->vex.reg, ctxt->regs, ctxt)),
+                      "c" (dst), [mask] "i" (EFLAGS_MASK));
+
+        put_stub(stub);
+        break;
+    }
+#endif
+
     case rmw_not:
         switch ( s->op_bytes )
         {
@@ -8649,7 +8696,13 @@ int x86_emul_rmw(
 #undef JCXZ
 
     return X86EMUL_OKAY;
+
+#if defined(__XEN__) && defined(__x86_64__)
+ emulation_stub_failure:
+    return X86EMUL_stub_failure;
+#endif
 }
+#undef stub_exn
 
 static void __init __maybe_unused build_assertions(void)
 {
--- a/xen/include/public/arch-x86/cpufeatureset.h
+++ b/xen/include/public/arch-x86/cpufeatureset.h
@@ -279,6 +279,7 @@ XEN_CPUFEATURE(SSBD,          9*32+31) /
 /* Intel-defined CPU features, CPUID level 0x00000007:1.eax, word 10 */
 XEN_CPUFEATURE(AVX_VNNI,     10*32+ 4) /*A  AVX-VNNI Instructions */
 XEN_CPUFEATURE(AVX512_BF16,  10*32+ 5) /*A  AVX512 BFloat16 Instructions */
+XEN_CPUFEATURE(CMPCCXADD,    10*32+ 7) /*a  CMPccXADD Instructions */
 XEN_CPUFEATURE(FZRM,         10*32+10) /*A  Fast Zero-length REP MOVSB */
 XEN_CPUFEATURE(FSRS,         10*32+11) /*A  Fast Short REP STOSB */
 XEN_CPUFEATURE(FSRCS,        10*32+12) /*A  Fast Short REP CMPSB/SCASB */
--- a/xen/tools/gen-cpuid.py
+++ b/xen/tools/gen-cpuid.py
@@ -274,7 +274,7 @@ def crunch_numbers(state):
         # superpages, PCID and PKU are only available in 4 level paging.
         # NO_LMSL indicates the absense of Long Mode Segment Limits, which
         # have been dropped in hardware.
-        LM: [CX16, PCID, LAHF_LM, PAGE1GB, PKU, NO_LMSL, LKGS],
+        LM: [CX16, PCID, LAHF_LM, PAGE1GB, PKU, NO_LMSL, LKGS, CMPCCXADD],
 
         # AMD K6-2+ and K6-III processors shipped with 3DNow+, beyond the
         # standard 3DNow in the earlier K6 processors.



From xen-devel-bounces@lists.xenproject.org Thu Jan 11 09:00:14 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 11 Jan 2024 09:00:14 +0000
Received: from list by lists.xenproject.org with outflank-mailman.666026.1036432 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNqv8-0005vF-GE; Thu, 11 Jan 2024 09:00:14 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 666026.1036432; Thu, 11 Jan 2024 09:00:14 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNqv8-0005v8-DZ; Thu, 11 Jan 2024 09:00:14 +0000
Received: by outflank-mailman (input) for mailman id 666026;
 Thu, 11 Jan 2024 09:00:13 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=YFj+=IV=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rNqv6-0003ka-Ur
 for xen-devel@lists.xenproject.org; Thu, 11 Jan 2024 09:00:13 +0000
Received: from mail-lj1-x233.google.com (mail-lj1-x233.google.com
 [2a00:1450:4864:20::233])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id d35fb0ba-b05f-11ee-9b0f-b553b5be7939;
 Thu, 11 Jan 2024 10:00:11 +0100 (CET)
Received: by mail-lj1-x233.google.com with SMTP id
 38308e7fff4ca-2cd81b09e83so10405351fa.2
 for <xen-devel@lists.xenproject.org>; Thu, 11 Jan 2024 01:00:11 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 h6-20020adf9cc6000000b003375d8b0460sm643239wre.1.2024.01.11.01.00.10
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 11 Jan 2024 01:00:10 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: d35fb0ba-b05f-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1704963610; x=1705568410; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:references:cc:to
         :from:content-language:subject:user-agent:mime-version:date
         :message-id:from:to:cc:subject:date:message-id:reply-to;
        bh=qawFEibbVgiRlO1H8/uU4f49OyAJbl7VHfPdVn+MISc=;
        b=PyNNb6egspxaHIasxBqh8q8bi+pABNwJWUmN5csi1CoNoQs14xlJvHx4v8X7WsrWR1
         YbIadCLaN9MYuho+aiLftDKFmMoO7pRvAEgjmSAP9DGQg4SiLYufxb+5iGTAIwz1S192
         N5bWesevjbA496grKoTEJ+cEGvgHfZl+gSRmwE8iPb8Hgxed7hYBuzeRAgqhY3zDfdMA
         NcTQrj6G8RaSqTxqMhDnCbJJ6y80VqyG+gcAvcnDCuWXJ0mPJXUeutl1xsfAvpbrCDAo
         rqvRPF0LiIpXzcb5cnxcXjdrrc7VrX1VhsBOo2RNhOeElkTjmBva3xRE697quCAsH4aA
         sYRA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704963610; x=1705568410;
        h=content-transfer-encoding:in-reply-to:autocrypt:references:cc:to
         :from:content-language:subject:user-agent:mime-version:date
         :message-id:x-gm-message-state:from:to:cc:subject:date:message-id
         :reply-to;
        bh=qawFEibbVgiRlO1H8/uU4f49OyAJbl7VHfPdVn+MISc=;
        b=amJTXQXMML2qV37erpPzRnvNHy7BzLrWXhxyqtDFOMowdEkxOUjF4HrJj8VMZZuBkn
         2cR03M7Qwb2HCUr4IXewLhvmv4Bc2+M2WSurmwWWINuxoOrWiKcUcVgso4TxxyOf/kdn
         GnZVQFtg7N/YBLt+XqSIe3kMtZ4tNzLA3wotrwtIm0BC/OHC0Oj4ApgFdb+49hbxIFPE
         Qsr7JRfXhxJxoJ+Kuj/hLsL0PKfMWROTs89DdaziLZGrVP7WBB6sAqD1voZBIxTIJVrg
         nkoAMeY4BamefUck+aJ972Rd4JaOURFq2iu6+9dfYODhES7Oy+AhfZl7ZK+uqUJSfZ8j
         6Sgw==
X-Gm-Message-State: AOJu0YxMfhh3pOjZ5JvNfjJE8XDnYBQtRONtxYJpzAL9beb5G4L8ZZ+y
	W5nARTVgXUQMdcy91zG6HrUhd5oiBWJGFSt+bXG/dwQr9Q==
X-Google-Smtp-Source: AGHT+IEQKhzsNvlICIbgdAIU0k5/NJfJjUUsGbtye2SjRba9mbbQ6GOLq58VPZlbsRSgQzx0tQhCjQ==
X-Received: by 2002:a2e:8655:0:b0:2cc:6f7f:6ba4 with SMTP id i21-20020a2e8655000000b002cc6f7f6ba4mr103630ljj.199.1704963610473;
        Thu, 11 Jan 2024 01:00:10 -0800 (PST)
Message-ID: <aa553449-888f-4e52-85b7-0bc0b7f010b4@suse.com>
Date: Thu, 11 Jan 2024 10:00:10 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: [PATCH v4 3/8] VMX: tertiary execution control infrastructure
Content-Language: en-US
From: Jan Beulich <jbeulich@suse.com>
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, Wei Liu <wl@xen.org>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Kevin Tian <kevin.tian@intel.com>, Jun Nakajima <jun.nakajima@intel.com>
References: <9dd23064-c79e-4a50-9c71-c0e73b189944@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <9dd23064-c79e-4a50-9c71-c0e73b189944@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

This is a prereq to enabling the MSRLIST feature.

Note that the PROCBASED_CTLS3 MSR is different from other VMX feature
reporting MSRs, in that all 64 bits report allowed 1-settings.

vVMX code is left alone, though, for the time being.

Signed-off-by: Jan Beulich <jbeulich@suse.com>
---
v2: New.

--- a/xen/arch/x86/hvm/vmx/vmcs.c
+++ b/xen/arch/x86/hvm/vmx/vmcs.c
@@ -164,6 +164,7 @@ static int cf_check parse_ept_param_runt
 u32 vmx_pin_based_exec_control __read_mostly;
 u32 vmx_cpu_based_exec_control __read_mostly;
 u32 vmx_secondary_exec_control __read_mostly;
+uint64_t vmx_tertiary_exec_control __read_mostly;
 u32 vmx_vmexit_control __read_mostly;
 u32 vmx_vmentry_control __read_mostly;
 u64 vmx_ept_vpid_cap __read_mostly;
@@ -228,10 +229,32 @@ static u32 adjust_vmx_controls(
     return ctl;
 }
 
-static bool cap_check(const char *name, u32 expected, u32 saw)
+static uint64_t adjust_vmx_controls2(
+    const char *name, uint64_t ctl_min, uint64_t ctl_opt, unsigned int msr,
+    bool *mismatch)
+{
+    uint64_t vmx_msr, ctl = ctl_min | ctl_opt;
+
+    rdmsrl(msr, vmx_msr);
+
+    ctl &= vmx_msr; /* bit == 0 ==> must be zero */
+
+    /* Ensure minimum (required) set of control bits are supported. */
+    if ( ctl_min & ~ctl )
+    {
+        *mismatch = true;
+        printk("VMX: CPU%u has insufficient %s (%#lx; requires %#lx)\n",
+               smp_processor_id(), name, ctl, ctl_min);
+    }
+
+    return ctl;
+}
+
+static bool cap_check(
+    const char *name, unsigned long expected, unsigned long saw)
 {
     if ( saw != expected )
-        printk("VMX %s: saw %#x expected %#x\n", name, saw, expected);
+        printk("VMX %s: saw %#lx expected %#lx\n", name, saw, expected);
     return saw != expected;
 }
 
@@ -241,6 +264,7 @@ static int vmx_init_vmcs_config(bool bsp
     u32 _vmx_pin_based_exec_control;
     u32 _vmx_cpu_based_exec_control;
     u32 _vmx_secondary_exec_control = 0;
+    uint64_t _vmx_tertiary_exec_control = 0;
     u64 _vmx_ept_vpid_cap = 0;
     u64 _vmx_misc_cap = 0;
     u32 _vmx_vmexit_control;
@@ -274,7 +298,8 @@ static int vmx_init_vmcs_config(bool bsp
     opt = (CPU_BASED_ACTIVATE_MSR_BITMAP |
            CPU_BASED_TPR_SHADOW |
            CPU_BASED_MONITOR_TRAP_FLAG |
-           CPU_BASED_ACTIVATE_SECONDARY_CONTROLS);
+           CPU_BASED_ACTIVATE_SECONDARY_CONTROLS |
+           CPU_BASED_ACTIVATE_TERTIARY_CONTROLS);
     _vmx_cpu_based_exec_control = adjust_vmx_controls(
         "CPU-Based Exec Control", min, opt,
         MSR_IA32_VMX_PROCBASED_CTLS, &mismatch);
@@ -338,6 +363,15 @@ static int vmx_init_vmcs_config(bool bsp
             MSR_IA32_VMX_PROCBASED_CTLS2, &mismatch);
     }
 
+    if ( _vmx_cpu_based_exec_control & CPU_BASED_ACTIVATE_TERTIARY_CONTROLS )
+    {
+        uint64_t opt = 0;
+
+        _vmx_tertiary_exec_control = adjust_vmx_controls2(
+            "Tertiary Exec Control", 0, opt,
+            MSR_IA32_VMX_PROCBASED_CTLS3, &mismatch);
+    }
+
     /* The IA32_VMX_EPT_VPID_CAP MSR exists only when EPT or VPID available */
     if ( _vmx_secondary_exec_control & (SECONDARY_EXEC_ENABLE_EPT |
                                         SECONDARY_EXEC_ENABLE_VPID) )
@@ -468,6 +502,7 @@ static int vmx_init_vmcs_config(bool bsp
         vmx_pin_based_exec_control = _vmx_pin_based_exec_control;
         vmx_cpu_based_exec_control = _vmx_cpu_based_exec_control;
         vmx_secondary_exec_control = _vmx_secondary_exec_control;
+        vmx_tertiary_exec_control  = _vmx_tertiary_exec_control;
         vmx_ept_vpid_cap           = _vmx_ept_vpid_cap;
         vmx_vmexit_control         = _vmx_vmexit_control;
         vmx_vmentry_control        = _vmx_vmentry_control;
@@ -503,6 +538,9 @@ static int vmx_init_vmcs_config(bool bsp
             "Secondary Exec Control",
             vmx_secondary_exec_control, _vmx_secondary_exec_control);
         mismatch |= cap_check(
+            "Tertiary Exec Control",
+            vmx_tertiary_exec_control, _vmx_tertiary_exec_control);
+        mismatch |= cap_check(
             "VMExit Control",
             vmx_vmexit_control, _vmx_vmexit_control);
         mismatch |= cap_check(
@@ -1080,6 +1118,7 @@ static int construct_vmcs(struct vcpu *v
         v->arch.hvm.vmx.exec_control |= CPU_BASED_RDTSC_EXITING;
 
     v->arch.hvm.vmx.secondary_exec_control = vmx_secondary_exec_control;
+    v->arch.hvm.vmx.tertiary_exec_control  = vmx_tertiary_exec_control;
 
     /*
      * Disable features which we don't want active by default:
@@ -1134,6 +1173,10 @@ static int construct_vmcs(struct vcpu *v
         __vmwrite(SECONDARY_VM_EXEC_CONTROL,
                   v->arch.hvm.vmx.secondary_exec_control);
 
+    if ( cpu_has_vmx_tertiary_exec_control )
+        __vmwrite(TERTIARY_VM_EXEC_CONTROL,
+                  v->arch.hvm.vmx.tertiary_exec_control);
+
     /* MSR access bitmap. */
     if ( cpu_has_vmx_msr_bitmap )
     {
@@ -2068,10 +2111,12 @@ void vmcs_dump_vcpu(struct vcpu *v)
                vmr(HOST_PERF_GLOBAL_CTRL));
 
     printk("*** Control State ***\n");
-    printk("PinBased=%08x CPUBased=%08x SecondaryExec=%08x\n",
+    printk("PinBased=%08x CPUBased=%08x\n",
            vmr32(PIN_BASED_VM_EXEC_CONTROL),
-           vmr32(CPU_BASED_VM_EXEC_CONTROL),
-           vmr32(SECONDARY_VM_EXEC_CONTROL));
+           vmr32(CPU_BASED_VM_EXEC_CONTROL));
+    printk("SecondaryExec=%08x TertiaryExec=%08lx\n",
+           vmr32(SECONDARY_VM_EXEC_CONTROL),
+           vmr(TERTIARY_VM_EXEC_CONTROL));
     printk("EntryControls=%08x ExitControls=%08x\n", vmentry_ctl, vmexit_ctl);
     printk("ExceptionBitmap=%08x PFECmask=%08x PFECmatch=%08x\n",
            vmr32(EXCEPTION_BITMAP),
--- a/xen/arch/x86/include/asm/hvm/vmx/vmcs.h
+++ b/xen/arch/x86/include/asm/hvm/vmx/vmcs.h
@@ -114,6 +114,7 @@ struct vmx_vcpu {
     /* Cache of cpu execution control. */
     u32                  exec_control;
     u32                  secondary_exec_control;
+    uint64_t             tertiary_exec_control;
     u32                  exception_bitmap;
 
     uint64_t             shadow_gs;
@@ -196,6 +197,7 @@ void vmx_vmcs_reload(struct vcpu *v);
 #define CPU_BASED_RDTSC_EXITING               0x00001000U
 #define CPU_BASED_CR3_LOAD_EXITING            0x00008000U
 #define CPU_BASED_CR3_STORE_EXITING           0x00010000U
+#define CPU_BASED_ACTIVATE_TERTIARY_CONTROLS  0x00020000U
 #define CPU_BASED_CR8_LOAD_EXITING            0x00080000U
 #define CPU_BASED_CR8_STORE_EXITING           0x00100000U
 #define CPU_BASED_TPR_SHADOW                  0x00200000U
@@ -260,6 +262,13 @@ extern u32 vmx_vmentry_control;
 #define SECONDARY_EXEC_NOTIFY_VM_EXITING        0x80000000U
 extern u32 vmx_secondary_exec_control;
 
+#define TERTIARY_EXEC_LOADIWKEY_EXITING         BIT(0, UL)
+#define TERTIARY_EXEC_ENABLE_HLAT               BIT(1, UL)
+#define TERTIARY_EXEC_EPT_PAGING_WRITE          BIT(2, UL)
+#define TERTIARY_EXEC_GUEST_PAGING_VERIFY       BIT(3, UL)
+#define TERTIARY_EXEC_IPI_VIRT                  BIT(4, UL)
+extern uint64_t vmx_tertiary_exec_control;
+
 #define VMX_EPT_EXEC_ONLY_SUPPORTED                         0x00000001
 #define VMX_EPT_WALK_LENGTH_4_SUPPORTED                     0x00000040
 #define VMX_EPT_MEMORY_TYPE_UC                              0x00000100
@@ -295,6 +304,8 @@ extern u64 vmx_ept_vpid_cap;
     (vmx_cpu_based_exec_control & CPU_BASED_ACTIVATE_MSR_BITMAP)
 #define cpu_has_vmx_secondary_exec_control \
     (vmx_cpu_based_exec_control & CPU_BASED_ACTIVATE_SECONDARY_CONTROLS)
+#define cpu_has_vmx_tertiary_exec_control \
+    (vmx_cpu_based_exec_control & CPU_BASED_ACTIVATE_TERTIARY_CONTROLS)
 #define cpu_has_vmx_ept \
     (vmx_secondary_exec_control & SECONDARY_EXEC_ENABLE_EPT)
 #define cpu_has_vmx_dt_exiting \
@@ -422,6 +433,7 @@ enum vmcs_field {
     VIRT_EXCEPTION_INFO             = 0x0000202a,
     XSS_EXIT_BITMAP                 = 0x0000202c,
     TSC_MULTIPLIER                  = 0x00002032,
+    TERTIARY_VM_EXEC_CONTROL        = 0x00002034,
     GUEST_PHYSICAL_ADDRESS          = 0x00002400,
     VMCS_LINK_POINTER               = 0x00002800,
     GUEST_IA32_DEBUGCTL             = 0x00002802,
--- a/xen/arch/x86/include/asm/msr-index.h
+++ b/xen/arch/x86/include/asm/msr-index.h
@@ -347,6 +347,7 @@
 #define MSR_IA32_VMX_TRUE_EXIT_CTLS             0x48f
 #define MSR_IA32_VMX_TRUE_ENTRY_CTLS            0x490
 #define MSR_IA32_VMX_VMFUNC                     0x491
+#define MSR_IA32_VMX_PROCBASED_CTLS3            0x492
 
 /* K7/K8 MSRs. Not complete. See the architecture manual for a more
    complete list. */
--- a/xen/arch/x86/hvm/vmx/vmx.c
+++ b/xen/arch/x86/hvm/vmx/vmx.c
@@ -760,6 +760,12 @@ void vmx_update_secondary_exec_control(s
                   v->arch.hvm.vmx.secondary_exec_control);
 }
 
+void vmx_update_tertiary_exec_control(struct vcpu *v)
+{
+    __vmwrite(TERTIARY_VM_EXEC_CONTROL,
+              v->arch.hvm.vmx.tertiary_exec_control);
+}
+
 void vmx_update_exception_bitmap(struct vcpu *v)
 {
     u32 bitmap = unlikely(v->arch.hvm.vmx.vmx_realmode)
--- a/xen/arch/x86/include/asm/hvm/vmx/vmx.h
+++ b/xen/arch/x86/include/asm/hvm/vmx/vmx.h
@@ -81,6 +81,7 @@ void vmx_realmode(struct cpu_user_regs *
 void vmx_update_exception_bitmap(struct vcpu *v);
 void vmx_update_cpu_exec_control(struct vcpu *v);
 void vmx_update_secondary_exec_control(struct vcpu *v);
+void vmx_update_tertiary_exec_control(struct vcpu *v);
 
 #define POSTED_INTR_ON  0
 #define POSTED_INTR_SN  1



From xen-devel-bounces@lists.xenproject.org Thu Jan 11 09:00:54 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 11 Jan 2024 09:00:54 +0000
Received: from list by lists.xenproject.org with outflank-mailman.666032.1036443 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNqvk-0006i2-WC; Thu, 11 Jan 2024 09:00:52 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 666032.1036443; Thu, 11 Jan 2024 09:00:52 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNqvk-0006hC-Su; Thu, 11 Jan 2024 09:00:52 +0000
Received: by outflank-mailman (input) for mailman id 666032;
 Thu, 11 Jan 2024 09:00:51 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=YFj+=IV=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rNqvj-0006N6-LN
 for xen-devel@lists.xenproject.org; Thu, 11 Jan 2024 09:00:51 +0000
Received: from mail-wm1-x332.google.com (mail-wm1-x332.google.com
 [2a00:1450:4864:20::332])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id eb0655de-b05f-11ee-98f0-6d05b1d4d9a1;
 Thu, 11 Jan 2024 10:00:50 +0100 (CET)
Received: by mail-wm1-x332.google.com with SMTP id
 5b1f17b1804b1-40e5afc18f5so8966235e9.3
 for <xen-devel@lists.xenproject.org>; Thu, 11 Jan 2024 01:00:50 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 h6-20020adf9cc6000000b003375d8b0460sm643239wre.1.2024.01.11.01.00.49
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 11 Jan 2024 01:00:49 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: eb0655de-b05f-11ee-98f0-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1704963650; x=1705568450; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:references:cc:to
         :from:content-language:subject:user-agent:mime-version:date
         :message-id:from:to:cc:subject:date:message-id:reply-to;
        bh=PcGZFeqMbsWwTHjboLTo6uxh0+hjy8FdQ+Bv/Ks5S4Y=;
        b=XC1ypFxszqrukROyA2Q2XTYIfe7t9BzY3PaL10JL8Jju7vJJ23jug+BhcUMabdykqy
         yLv8FjTue3wsYncbC9ytQl9U59oRWSEKCKRRgdA++HudPxUnHeQuLy03X/lkagNjJaoU
         IULNPip7tSUvSB2/LBzPujfvid0S8Z0Hs87RPIW3bosbcDlP4Ejmm6vZvyJ4zE8xyuoi
         Ho8YVl/7copCCXg/OmKIRp1up+hbJ/AirfG6ocPTqOkixNVapLbTAKq2R8c6+cQYiQVw
         VLLozxEhkWJV222ByaemBiXe5l0AXq/Fo9rFG04iAt8hkO9SbnbfKxJylvcLBrKZhBL7
         4AAg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704963650; x=1705568450;
        h=content-transfer-encoding:in-reply-to:autocrypt:references:cc:to
         :from:content-language:subject:user-agent:mime-version:date
         :message-id:x-gm-message-state:from:to:cc:subject:date:message-id
         :reply-to;
        bh=PcGZFeqMbsWwTHjboLTo6uxh0+hjy8FdQ+Bv/Ks5S4Y=;
        b=VKsOikxUIUSJTPwGRLFBY4OoDc67P7syNcXWrtJS0QwqVGD9nb1x5d4g3ESAleFh4e
         N1/ntDYUs5FAXdqEJzPgrJB2zKwNEJACnzxnmkunL5XUiiNY/VrO3hFiFf+XJDDNabdX
         e1ekDEryCKSF200IAXCA4EK/FftQ+Uoxc+reuXlK6wENhyGNbAgiwNWHpkEBQrFyMxgs
         VXRxyO+Ax1N8DJohfNed0Z5bjGLUN26/1lJoPKGoTXoWlr4g9nlvhMDebkf50QtywSFy
         WXkK5yQqXnTz4io+yhoKmQsc9x/JvH3Cp431VIi1lNSI9EF6O3Jr2oOq1pLS6mRrkNDH
         FpoQ==
X-Gm-Message-State: AOJu0Yx9l60LsuuNhtVQmoGpLmqb8HE5b5xbG/pEgC8DPY5R5Pjww/UW
	UvE6J+CHFIGpOhC9rmDXcDIErn+a/xZTzSvLTygSEIz8Vw==
X-Google-Smtp-Source: AGHT+IG2uFwBiCGczUTp09inTTnH5NBLfteOpOyj+WXWo+60zL1AFfBD88BiSmWl7YE5PqyX5jSQJw==
X-Received: by 2002:a05:600c:20cb:b0:40d:8fcb:af54 with SMTP id y11-20020a05600c20cb00b0040d8fcbaf54mr188586wmm.145.1704963650169;
        Thu, 11 Jan 2024 01:00:50 -0800 (PST)
Message-ID: <070224c3-a835-45fa-a07b-9002f9786ef0@suse.com>
Date: Thu, 11 Jan 2024 10:00:49 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: [PATCH v4 4/8] x86emul+VMX: support {RD,WR}MSRLIST
Content-Language: en-US
From: Jan Beulich <jbeulich@suse.com>
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, Wei Liu <wl@xen.org>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Kevin Tian <kevin.tian@intel.com>, Jun Nakajima <jun.nakajima@intel.com>
References: <9dd23064-c79e-4a50-9c71-c0e73b189944@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <9dd23064-c79e-4a50-9c71-c0e73b189944@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

These are "compound" instructions to issue a series of RDMSR / WRMSR
respectively. In the emulator we can therefore implement them by using
the existing msr_{read,write}() hooks. The memory accesses utilize that
the HVM ->read() / ->write() hooks are already linear-address
(x86_seg_none) aware (by way of hvmemul_virtual_to_linear() handling
this case).

Preemption is being checked for in WRMSRLIST handling only, as only MSR
writes are expected to possibly take long.

Signed-off-by: Jan Beulich <jbeulich@suse.com>
---
RFC: In vmx_vmexit_handler() handling is forwarded to the emulator
     blindly. Alternatively we could consult the exit qualification and
     process just a single MSR at a time (without involving the
     emulator), exiting back to the guest after every iteration. (I
     don't think a mix of both models makes a lot of sense.)

The precise behavior of MSR_BARRIER is still not spelled out in ISE 050,
so the (minimal) implementation continues to be a guess for now.

Wouldn't calculate_hvm_max_policy() for MPX better behave the same way
as done here, at least from an abstract perspective (assuming that AMD
won't add such functionality now that Intel have deprecated it)?
---
v3: Add dependency on LM. Limit exposure to HVM. Utilize new info from
    ISE 050. Re-base.
v2: Use X86_EXC_*. Add preemption checking to WRMSRLIST handling. Remove
    the feature from "max" when the VMX counterpart isn't available.

--- a/tools/misc/xen-cpuid.c
+++ b/tools/misc/xen-cpuid.c
@@ -195,6 +195,8 @@ static const char *const str_7a1[32] =
     [18] = "lkgs",          [19] = "wrmsrns",
 
     /* 22 */                [23] = "avx-ifma",
+
+    /* 26 */                [27] = "msrlist",
 };
 
 static const char *const str_e21a[32] =
--- a/tools/tests/x86_emulator/predicates.c
+++ b/tools/tests/x86_emulator/predicates.c
@@ -342,6 +342,8 @@ static const struct {
     { { 0x01, 0xc4 }, { 2, 2 }, F, N }, /* vmxoff */
     { { 0x01, 0xc5 }, { 2, 2 }, F, N }, /* pconfig */
     { { 0x01, 0xc6 }, { 2, 2 }, F, N }, /* wrmsrns */
+    { { 0x01, 0xc6 }, { 0, 2 }, F, W, pfx_f2 }, /* rdmsrlist */
+    { { 0x01, 0xc6 }, { 0, 2 }, F, R, pfx_f3 }, /* wrmsrlist */
     { { 0x01, 0xc8 }, { 2, 2 }, F, N }, /* monitor */
     { { 0x01, 0xc9 }, { 2, 2 }, F, N }, /* mwait */
     { { 0x01, 0xca }, { 2, 2 }, F, N }, /* clac */
--- a/tools/tests/x86_emulator/test_x86_emulator.c
+++ b/tools/tests/x86_emulator/test_x86_emulator.c
@@ -603,6 +603,7 @@ static int read(
     default:
         if ( !is_x86_user_segment(seg) )
             return X86EMUL_UNHANDLEABLE;
+    case x86_seg_none:
         bytes_read += bytes;
         break;
     }
@@ -633,7 +634,7 @@ static int write(
     if ( verbose )
         printf("** %s(%u, %p,, %u,)\n", __func__, seg, (void *)offset, bytes);
 
-    if ( !is_x86_user_segment(seg) )
+    if ( !is_x86_user_segment(seg) && seg != x86_seg_none )
         return X86EMUL_UNHANDLEABLE;
     memcpy((void *)offset, p_data, bytes);
     return X86EMUL_OKAY;
@@ -725,6 +726,10 @@ static int read_msr(
 {
     switch ( reg )
     {
+    case 0x0000002f: /* BARRIER */
+        *val = 0;
+        return X86EMUL_OKAY;
+
     case 0xc0000080: /* EFER */
         *val = ctxt->addr_size > 32 ? 0x500 /* LME|LMA */ : 0;
         return X86EMUL_OKAY;
@@ -1513,9 +1518,53 @@ int main(int argc, char **argv)
          (gs_base != 0x0000111122224444UL) ||
          gs_base_shadow )
         goto fail;
+    printf("okay\n");
 
     cp.extd.nscb = i;
     emulops.write_segment = NULL;
+
+    printf("%-40s", "Testing rdmsrlist...");
+    instr[0] = 0xf2; instr[1] = 0x0f; instr[2] = 0x01; instr[3] = 0xc6;
+    regs.rip = (unsigned long)&instr[0];
+    regs.rsi = (unsigned long)(res + 0x80);
+    regs.rdi = (unsigned long)(res + 0x80 + 0x40 * 2);
+    regs.rcx = 0x0002000100008000UL;
+    gs_base_shadow = 0x0000222244446666UL;
+    memset(res + 0x80, ~0, 0x40 * 8 * 2);
+    res[0x80 + 0x0f * 2] = 0xc0000101; /* GS_BASE */
+    res[0x80 + 0x0f * 2 + 1] = 0;
+    res[0x80 + 0x20 * 2] = 0xc0000102; /* SHADOW_GS_BASE */
+    res[0x80 + 0x20 * 2 + 1] = 0;
+    res[0x80 + 0x31 * 2] = 0x2f; /* BARRIER */
+    res[0x80 + 0x31 * 2 + 1] = 0;
+    rc = x86_emulate(&ctxt, &emulops);
+    if ( (rc != X86EMUL_OKAY) ||
+         (regs.rip != (unsigned long)&instr[4]) ||
+         regs.rcx ||
+         (res[0x80 + (0x40 + 0x0f) * 2] != (unsigned int)gs_base) ||
+         (res[0x80 + (0x40 + 0x0f) * 2 + 1] != (gs_base >> (8 * sizeof(int)))) ||
+         (res[0x80 + (0x40 + 0x20) * 2] != (unsigned int)gs_base_shadow) ||
+         (res[0x80 + (0x40 + 0x20) * 2 + 1] != (gs_base_shadow >> (8 * sizeof(int)))) ||
+         res[0x80 + (0x40 + 0x31) * 2] || res[0x80 + (0x40 + 0x31) * 2 + 1] )
+        goto fail;
+    printf("okay\n");
+
+    printf("%-40s", "Testing wrmsrlist...");
+    instr[0] = 0xf3; instr[1] = 0x0f; instr[2] = 0x01; instr[3] = 0xc6;
+    regs.eip = (unsigned long)&instr[0];
+    regs.rsi -= 0x11 * 8;
+    regs.rdi -= 0x11 * 8;
+    regs.rcx = 0x0002000100000000UL;
+    res[0x80 + 0x0f * 2] = 0xc0000102; /* SHADOW_GS_BASE */
+    res[0x80 + 0x20 * 2] = 0xc0000101; /* GS_BASE */
+    rc = x86_emulate(&ctxt, &emulops);
+    if ( (rc != X86EMUL_OKAY) ||
+         (regs.rip != (unsigned long)&instr[4]) ||
+         regs.rcx ||
+         (gs_base != 0x0000222244446666UL) ||
+         (gs_base_shadow != 0x0000111122224444UL) )
+        goto fail;
+
     emulops.write_msr     = NULL;
 #endif
     printf("okay\n");
--- a/tools/tests/x86_emulator/x86-emulate.c
+++ b/tools/tests/x86_emulator/x86-emulate.c
@@ -88,6 +88,7 @@ bool emul_test_init(void)
     cp.feat.rdpid = true;
     cp.feat.lkgs = true;
     cp.feat.wrmsrns = true;
+    cp.feat.msrlist = true;
     cp.extd.clzero = true;
 
     if ( cpu_has_xsave )
--- a/xen/arch/x86/cpu-policy.c
+++ b/xen/arch/x86/cpu-policy.c
@@ -666,6 +666,9 @@ static void __init calculate_hvm_max_pol
             __clear_bit(X86_FEATURE_XSAVES, fs);
     }
 
+    if ( !cpu_has_vmx_msrlist )
+        __clear_bit(X86_FEATURE_MSRLIST, fs);
+
     /*
      * Xen doesn't use PKS, so the guest support for it has opted to not use
      * the VMCS load/save controls for efficiency reasons.  This depends on
--- a/xen/arch/x86/hvm/vmx/vmx.c
+++ b/xen/arch/x86/hvm/vmx/vmx.c
@@ -854,6 +854,20 @@ static void cf_check vmx_cpuid_policy_ch
     else
         vmx_set_msr_intercept(v, MSR_PKRS, VMX_MSR_RW);
 
+    if ( cp->feat.msrlist )
+    {
+        vmx_clear_msr_intercept(v, MSR_BARRIER, VMX_MSR_RW);
+        v->arch.hvm.vmx.tertiary_exec_control |= TERTIARY_EXEC_ENABLE_MSRLIST;
+        vmx_update_tertiary_exec_control(v);
+    }
+    else if ( v->arch.hvm.vmx.tertiary_exec_control &
+              TERTIARY_EXEC_ENABLE_MSRLIST )
+    {
+        vmx_set_msr_intercept(v, MSR_BARRIER, VMX_MSR_RW);
+        v->arch.hvm.vmx.tertiary_exec_control &= ~TERTIARY_EXEC_ENABLE_MSRLIST;
+        vmx_update_tertiary_exec_control(v);
+    }
+
  out:
     vmx_vmcs_exit(v);
 
@@ -3704,6 +3718,22 @@ gp_fault:
     return X86EMUL_EXCEPTION;
 }
 
+static bool cf_check is_msrlist(
+    const struct x86_emulate_state *state, const struct x86_emulate_ctxt *ctxt)
+{
+
+    if ( ctxt->opcode == X86EMUL_OPC(0x0f, 0x01) )
+    {
+        unsigned int rm, reg;
+        int mode = x86_insn_modrm(state, &rm, &reg);
+
+        /* This also includes WRMSRNS; should be okay. */
+        return mode == 3 && rm == 6 && !reg;
+    }
+
+    return false;
+}
+
 static void vmx_do_extint(struct cpu_user_regs *regs)
 {
     unsigned long vector;
@@ -4511,6 +4541,17 @@ void asmlinkage vmx_vmexit_handler(struc
         }
         break;
 
+    case EXIT_REASON_RDMSRLIST:
+    case EXIT_REASON_WRMSRLIST:
+        if ( vmx_guest_x86_mode(v) != 8 || !currd->arch.cpuid->feat.msrlist )
+        {
+            ASSERT_UNREACHABLE();
+            hvm_inject_hw_exception(X86_EXC_UD, X86_EVENT_NO_EC);
+        }
+        else if ( !hvm_emulate_one_insn(is_msrlist, "MSR list") )
+            hvm_inject_hw_exception(X86_EXC_GP, 0);
+        break;
+
     case EXIT_REASON_VMXOFF:
     case EXIT_REASON_VMXON:
     case EXIT_REASON_VMCLEAR:
--- a/xen/arch/x86/include/asm/hvm/vmx/vmcs.h
+++ b/xen/arch/x86/include/asm/hvm/vmx/vmcs.h
@@ -267,6 +267,7 @@ extern u32 vmx_secondary_exec_control;
 #define TERTIARY_EXEC_EPT_PAGING_WRITE          BIT(2, UL)
 #define TERTIARY_EXEC_GUEST_PAGING_VERIFY       BIT(3, UL)
 #define TERTIARY_EXEC_IPI_VIRT                  BIT(4, UL)
+#define TERTIARY_EXEC_ENABLE_MSRLIST            BIT(6, UL)
 extern uint64_t vmx_tertiary_exec_control;
 
 #define VMX_EPT_EXEC_ONLY_SUPPORTED                         0x00000001
@@ -356,6 +357,8 @@ extern u64 vmx_ept_vpid_cap;
     (vmx_secondary_exec_control & SECONDARY_EXEC_BUS_LOCK_DETECTION)
 #define cpu_has_vmx_notify_vm_exiting \
     (vmx_secondary_exec_control & SECONDARY_EXEC_NOTIFY_VM_EXITING)
+#define cpu_has_vmx_msrlist \
+    (vmx_tertiary_exec_control & TERTIARY_EXEC_ENABLE_MSRLIST)
 
 #define VMCS_RID_TYPE_MASK              0x80000000U
 
--- a/xen/arch/x86/include/asm/hvm/vmx/vmx.h
+++ b/xen/arch/x86/include/asm/hvm/vmx/vmx.h
@@ -202,6 +202,8 @@ static inline void pi_clear_sn(struct pi
 #define EXIT_REASON_XRSTORS             64
 #define EXIT_REASON_BUS_LOCK            74
 #define EXIT_REASON_NOTIFY              75
+#define EXIT_REASON_RDMSRLIST           78
+#define EXIT_REASON_WRMSRLIST           79
 /* Remember to also update VMX_PERF_EXIT_REASON_SIZE! */
 
 /*
--- a/xen/arch/x86/include/asm/msr-index.h
+++ b/xen/arch/x86/include/asm/msr-index.h
@@ -24,6 +24,8 @@
 #define  APIC_BASE_ENABLE                   (_AC(1, ULL) << 11)
 #define  APIC_BASE_ADDR_MASK                _AC(0x000ffffffffff000, ULL)
 
+#define MSR_BARRIER                         0x0000002f
+
 #define MSR_TEST_CTRL                       0x00000033
 #define  TEST_CTRL_SPLITLOCK_DETECT         (_AC(1, ULL) << 29)
 #define  TEST_CTRL_SPLITLOCK_DISABLE        (_AC(1, ULL) << 31)
--- a/xen/arch/x86/include/asm/perfc_defn.h
+++ b/xen/arch/x86/include/asm/perfc_defn.h
@@ -6,7 +6,7 @@ PERFCOUNTER_ARRAY(exceptions,
 
 #ifdef CONFIG_HVM
 
-#define VMX_PERF_EXIT_REASON_SIZE 76
+#define VMX_PERF_EXIT_REASON_SIZE 80
 #define VMEXIT_NPF_PERFC 143
 #define SVM_PERF_EXIT_REASON_SIZE (VMEXIT_NPF_PERFC + 1)
 PERFCOUNTER_ARRAY(vmexits,              "vmexits",
--- a/xen/arch/x86/msr.c
+++ b/xen/arch/x86/msr.c
@@ -72,6 +72,12 @@ int guest_rdmsr(struct vcpu *v, uint32_t
     case MSR_AMD_PPIN:
         goto gp_fault;
 
+    case MSR_BARRIER:
+        if ( !cp->feat.msrlist )
+            goto gp_fault;
+        *val = 0;
+        break;
+
     case MSR_IA32_FEATURE_CONTROL:
         /*
          * Architecturally, availability of this MSR is enumerated by the
@@ -340,6 +346,7 @@ int guest_wrmsr(struct vcpu *v, uint32_t
         uint64_t rsvd;
 
         /* Read-only */
+    case MSR_BARRIER:
     case MSR_IA32_PLATFORM_ID:
     case MSR_CORE_CAPABILITIES:
     case MSR_INTEL_CORE_THREAD_COUNT:
--- a/xen/arch/x86/x86_emulate/0f01.c
+++ b/xen/arch/x86/x86_emulate/0f01.c
@@ -11,6 +11,7 @@
 #include "private.h"
 
 #ifdef __XEN__
+#include <xen/event.h>
 #include <asm/prot-key.h>
 #endif
 
@@ -28,6 +29,7 @@ int x86emul_0f01(struct x86_emulate_stat
     switch ( s->modrm )
     {
         unsigned long base, limit, cr0, cr0w, cr4;
+        unsigned int n;
         struct segment_register sreg;
         uint64_t msr_val;
 
@@ -42,6 +44,64 @@ int x86emul_0f01(struct x86_emulate_stat
                                 ((uint64_t)regs->r(dx) << 32) | regs->eax,
                                 ctxt);
             goto done;
+
+        case vex_f3: /* wrmsrlist */
+            vcpu_must_have(msrlist);
+            generate_exception_if(!mode_64bit(), X86_EXC_UD);
+            generate_exception_if(!mode_ring0() || (regs->r(si) & 7) ||
+                                  (regs->r(di) & 7),
+                                  X86_EXC_GP, 0);
+            fail_if(!ops->write_msr);
+            while ( regs->r(cx) )
+            {
+                n = __builtin_ffsl(regs->r(cx)) - 1;
+                if ( (rc = ops->read(x86_seg_none, regs->r(si) + n * 8,
+                                     &msr_val, 8, ctxt)) != X86EMUL_OKAY )
+                    break;
+                generate_exception_if(msr_val != (uint32_t)msr_val,
+                                      X86_EXC_GP, 0);
+                base = msr_val;
+                if ( (rc = ops->read(x86_seg_none, regs->r(di) + n * 8,
+                                     &msr_val, 8, ctxt)) != X86EMUL_OKAY ||
+                     (rc = ops->write_msr(base, msr_val, ctxt)) != X86EMUL_OKAY )
+                    break;
+                regs->r(cx) &= ~(1UL << n);
+
+#ifdef __XEN__
+                if ( regs->r(cx) && local_events_need_delivery() )
+                {
+                    rc = X86EMUL_RETRY;
+                    break;
+                }
+#endif
+            }
+            goto done;
+
+        case vex_f2: /* rdmsrlist */
+            vcpu_must_have(msrlist);
+            generate_exception_if(!mode_64bit(), X86_EXC_UD);
+            generate_exception_if(!mode_ring0() || (regs->r(si) & 7) ||
+                                  (regs->r(di) & 7),
+                                  X86_EXC_GP, 0);
+            fail_if(!ops->read_msr || !ops->write);
+            while ( regs->r(cx) )
+            {
+                n = __builtin_ffsl(regs->r(cx)) - 1;
+                if ( (rc = ops->read(x86_seg_none, regs->r(si) + n * 8,
+                                     &msr_val, 8, ctxt)) != X86EMUL_OKAY )
+                    break;
+                generate_exception_if(msr_val != (uint32_t)msr_val,
+                                      X86_EXC_GP, 0);
+                if ( (rc = ops->read_msr(msr_val, &msr_val,
+                                         ctxt)) != X86EMUL_OKAY ||
+                     (rc = ops->write(x86_seg_none, regs->r(di) + n * 8,
+                                      &msr_val, 8, ctxt)) != X86EMUL_OKAY )
+                    break;
+                regs->r(cx) &= ~(1UL << n);
+            }
+            if ( rc != X86EMUL_OKAY )
+                ctxt->regs->r(cx) = regs->r(cx);
+            goto done;
         }
         generate_exception(X86_EXC_UD);
 
--- a/xen/arch/x86/x86_emulate/private.h
+++ b/xen/arch/x86/x86_emulate/private.h
@@ -594,6 +594,7 @@ amd_like(const struct x86_emulate_ctxt *
 #define vcpu_has_lkgs()        (ctxt->cpuid->feat.lkgs)
 #define vcpu_has_wrmsrns()     (ctxt->cpuid->feat.wrmsrns)
 #define vcpu_has_avx_ifma()    (ctxt->cpuid->feat.avx_ifma)
+#define vcpu_has_msrlist()     (ctxt->cpuid->feat.msrlist)
 #define vcpu_has_avx_vnni_int8() (ctxt->cpuid->feat.avx_vnni_int8)
 #define vcpu_has_avx_ne_convert() (ctxt->cpuid->feat.avx_ne_convert)
 
--- a/xen/arch/x86/x86_emulate/util.c
+++ b/xen/arch/x86/x86_emulate/util.c
@@ -100,6 +100,9 @@ bool cf_check x86_insn_is_mem_access(con
         break;
 
     case X86EMUL_OPC(0x0f, 0x01):
+        /* {RD,WR}MSRLIST */
+        if ( mode_64bit() && s->modrm == 0xc6 )
+            return s->vex.pfx >= vex_f3;
         /* Cover CLZERO. */
         return (s->modrm_rm & 7) == 4 && (s->modrm_reg & 7) == 7;
     }
@@ -160,7 +163,11 @@ bool cf_check x86_insn_is_mem_write(cons
         case 0xff: /* Grp5 */
             break;
 
-        case X86EMUL_OPC(0x0f, 0x01): /* CLZERO is the odd one. */
+        case X86EMUL_OPC(0x0f, 0x01):
+            /* RDMSRLIST */
+            if ( mode_64bit() && s->modrm == 0xc6 )
+                return s->vex.pfx == vex_f2;
+            /* CLZERO is another odd one. */
             return (s->modrm_rm & 7) == 4 && (s->modrm_reg & 7) == 7;
 
         default:
--- a/xen/include/public/arch-x86/cpufeatureset.h
+++ b/xen/include/public/arch-x86/cpufeatureset.h
@@ -287,6 +287,7 @@ XEN_CPUFEATURE(FRED,         10*32+17) /
 XEN_CPUFEATURE(LKGS,         10*32+18) /*S  Load Kernel GS Base */
 XEN_CPUFEATURE(WRMSRNS,      10*32+19) /*S  WRMSR Non-Serialising */
 XEN_CPUFEATURE(AVX_IFMA,     10*32+23) /*A  AVX-IFMA Instructions */
+XEN_CPUFEATURE(MSRLIST,      10*32+27) /*s  MSR list instructions */
 
 /* AMD-defined CPU features, CPUID level 0x80000021.eax, word 11 */
 XEN_CPUFEATURE(LFENCE_DISPATCH,    11*32+ 2) /*A  LFENCE always serializing */
--- a/xen/tools/gen-cpuid.py
+++ b/xen/tools/gen-cpuid.py
@@ -274,7 +274,8 @@ def crunch_numbers(state):
         # superpages, PCID and PKU are only available in 4 level paging.
         # NO_LMSL indicates the absense of Long Mode Segment Limits, which
         # have been dropped in hardware.
-        LM: [CX16, PCID, LAHF_LM, PAGE1GB, PKU, NO_LMSL, LKGS, CMPCCXADD],
+        LM: [CX16, PCID, LAHF_LM, PAGE1GB, PKU, NO_LMSL, LKGS, CMPCCXADD,
+             MSRLIST],
 
         # AMD K6-2+ and K6-III processors shipped with 3DNow+, beyond the
         # standard 3DNow in the earlier K6 processors.



From xen-devel-bounces@lists.xenproject.org Thu Jan 11 09:01:16 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 11 Jan 2024 09:01:16 +0000
Received: from list by lists.xenproject.org with outflank-mailman.666035.1036453 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNqw8-00076Y-7Y; Thu, 11 Jan 2024 09:01:16 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 666035.1036453; Thu, 11 Jan 2024 09:01:16 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNqw8-00076R-4k; Thu, 11 Jan 2024 09:01:16 +0000
Received: by outflank-mailman (input) for mailman id 666035;
 Thu, 11 Jan 2024 09:01:15 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=YFj+=IV=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rNqw7-0006N6-12
 for xen-devel@lists.xenproject.org; Thu, 11 Jan 2024 09:01:15 +0000
Received: from mail-wr1-x435.google.com (mail-wr1-x435.google.com
 [2a00:1450:4864:20::435])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id f90ff9e1-b05f-11ee-98f0-6d05b1d4d9a1;
 Thu, 11 Jan 2024 10:01:14 +0100 (CET)
Received: by mail-wr1-x435.google.com with SMTP id
 ffacd0b85a97d-3374eb61cbcso4575808f8f.0
 for <xen-devel@lists.xenproject.org>; Thu, 11 Jan 2024 01:01:14 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 h6-20020adf9cc6000000b003375d8b0460sm643239wre.1.2024.01.11.01.01.13
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 11 Jan 2024 01:01:13 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: f90ff9e1-b05f-11ee-98f0-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1704963674; x=1705568474; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:references:cc:to
         :from:content-language:subject:user-agent:mime-version:date
         :message-id:from:to:cc:subject:date:message-id:reply-to;
        bh=QNpyXAGCsk8LjmM4N4uqf0ywUr9U5lVsuSLaYtpMT1I=;
        b=AKmQ0VBwyZ/zyZKEtdYuOee+LXHUBmnkxgl+qADVHkkFJived8Mh9AZpbBS8vXme0d
         Rej3RXGQUtTKj1rLkvHS5ZzocOwksgjQxiTfhdtZynoRZsDHeO2SpIfXrmlxbGoyMSoa
         Xhsfa9Uayz46HuN7XAH9RJFB4O4LGB/U3dewzPhYLyeVLWxdRWOUYQedTqPyb9Co+Ewu
         QGDOxTbSy9lUWPMgPh827V/MBecB+09QLavyngWCugUoTHhQ9/ZdZWIzAsJYGDEx63su
         y03OhucrFfjcPVycf8J4WScLEMF+tVh53AP2M2nVS9BWfRQNerS48uUCrUAfGyUpNqnd
         rZ3A==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704963674; x=1705568474;
        h=content-transfer-encoding:in-reply-to:autocrypt:references:cc:to
         :from:content-language:subject:user-agent:mime-version:date
         :message-id:x-gm-message-state:from:to:cc:subject:date:message-id
         :reply-to;
        bh=QNpyXAGCsk8LjmM4N4uqf0ywUr9U5lVsuSLaYtpMT1I=;
        b=GIoGTBkWE3yfqHib36aSMAwQ70v99FaEknQqu3PY6gjgNLfk7F4CkleGuO8o3saqkr
         5qX2/e9+kram+eJfB8NVhYE71bWCGA/KV2itDNLif/yaHfoQZcLysu/l6i3ERsILFRDp
         zKo8juRbfNwwnmUnW+Czt3Ey3j/t5esEMk1Yr9CpXzneFruFviqPj88otDV/x/zjv7ec
         YLVGtcIAnPBHf1EaRB0BzvpIO58tg33xrPsH3LRr6XalucL44K5B8EgCmVCkh7RzOqJ8
         dri5+/Lldrgf95/XeOGlrZpKngU4FY13xaebrVwMAneMg3uW7tDxZp9IkkshZ8+yqGXJ
         4hug==
X-Gm-Message-State: AOJu0Yy6ZvSlvhZgUY/BNHXAwLOYe5b6P6hUjx+at/LodGHCghFo1kZ5
	jtTHVsivc4PuF8JTPq6F20vUTUwXNI7E7EQdLeekFObDfQ==
X-Google-Smtp-Source: AGHT+IEg11sMa37R39NIji2QSJCwoFtz/NnispEcGmpEG7qxuoetx12dHuSiCVduOJEfaVMnvrZCZA==
X-Received: by 2002:a05:6000:156d:b0:337:5557:acf5 with SMTP id 13-20020a056000156d00b003375557acf5mr482845wrz.106.1704963673814;
        Thu, 11 Jan 2024 01:01:13 -0800 (PST)
Message-ID: <9263a08c-8301-4c2d-a4da-801e203adb57@suse.com>
Date: Thu, 11 Jan 2024 10:01:13 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: [PATCH v4 5/8] x86: introduce x86_seg_sys
Content-Language: en-US
From: Jan Beulich <jbeulich@suse.com>
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, Wei Liu <wl@xen.org>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
References: <9dd23064-c79e-4a50-9c71-c0e73b189944@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <9dd23064-c79e-4a50-9c71-c0e73b189944@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

To represent the USER-MSR bitmap access, a new segment type needs
introducing, behaving like x86_seg_none in terms of address treatment,
but behaving like a system segment for page walk purposes (implicit
supervisor-mode access).

Signed-off-by: Jan Beulich <jbeulich@suse.com>
---
This feels a little fragile: Of course I did look through uses of the
enumerators, and I didn't find further places which would need
adjustment, but I'm not really sure I didn't miss any place.
---
v3: New.

--- a/tools/tests/x86_emulator/test_x86_emulator.c
+++ b/tools/tests/x86_emulator/test_x86_emulator.c
@@ -603,6 +603,7 @@ static int read(
     default:
         if ( !is_x86_user_segment(seg) )
             return X86EMUL_UNHANDLEABLE;
+    case x86_seg_sys:
     case x86_seg_none:
         bytes_read += bytes;
         break;
--- a/xen/arch/x86/hvm/emulate.c
+++ b/xen/arch/x86/hvm/emulate.c
@@ -837,7 +837,7 @@ static int hvmemul_virtual_to_linear(
     int okay;
     unsigned long reps = 1;
 
-    if ( seg == x86_seg_none )
+    if ( seg == x86_seg_none || seg == x86_seg_sys )
     {
         *linear = offset;
         return X86EMUL_OKAY;
--- a/xen/arch/x86/hvm/hvm.c
+++ b/xen/arch/x86/hvm/hvm.c
@@ -2578,7 +2578,7 @@ bool hvm_vcpu_virtual_to_linear(
      * It is expected that the access rights of reg are suitable for seg (and
      * that this is enforced at the point that seg is loaded).
      */
-    ASSERT(seg < x86_seg_none);
+    ASSERT(seg < x86_seg_sys);
 
     /* However, check that insn fetches only ever specify CS. */
     ASSERT(access_type != hvm_access_insn_fetch || seg == x86_seg_cs);
--- a/xen/arch/x86/hvm/svm/svm.c
+++ b/xen/arch/x86/hvm/svm/svm.c
@@ -749,6 +749,7 @@ static void cf_check svm_set_segment_reg
         vmcb->ldtr = *reg;
         break;
 
+    case x86_seg_sys:
     case x86_seg_none:
         ASSERT_UNREACHABLE();
         break;
--- a/xen/arch/x86/x86_emulate/x86_emulate.h
+++ b/xen/arch/x86/x86_emulate/x86_emulate.h
@@ -43,7 +43,8 @@ enum x86_segment {
     x86_seg_ldtr,
     x86_seg_gdtr,
     x86_seg_idtr,
-    /* No Segment: For accesses which are already linear. */
+    /* No Segment: For (system/normal) accesses which are already linear. */
+    x86_seg_sys,
     x86_seg_none
 };
 



From xen-devel-bounces@lists.xenproject.org Thu Jan 11 09:01:39 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 11 Jan 2024 09:01:39 +0000
Received: from list by lists.xenproject.org with outflank-mailman.666041.1036462 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNqwV-0007go-Hj; Thu, 11 Jan 2024 09:01:39 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 666041.1036462; Thu, 11 Jan 2024 09:01:39 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNqwV-0007gh-F4; Thu, 11 Jan 2024 09:01:39 +0000
Received: by outflank-mailman (input) for mailman id 666041;
 Thu, 11 Jan 2024 09:01:37 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=YFj+=IV=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rNqwT-000738-PR
 for xen-devel@lists.xenproject.org; Thu, 11 Jan 2024 09:01:37 +0000
Received: from mail-wm1-x331.google.com (mail-wm1-x331.google.com
 [2a00:1450:4864:20::331])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 05ac3722-b060-11ee-9b0f-b553b5be7939;
 Thu, 11 Jan 2024 10:01:35 +0100 (CET)
Received: by mail-wm1-x331.google.com with SMTP id
 5b1f17b1804b1-40d87df95ddso52640715e9.0
 for <xen-devel@lists.xenproject.org>; Thu, 11 Jan 2024 01:01:35 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 h6-20020adf9cc6000000b003375d8b0460sm643239wre.1.2024.01.11.01.01.34
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 11 Jan 2024 01:01:34 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 05ac3722-b060-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1704963695; x=1705568495; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:references:cc:to
         :from:content-language:subject:user-agent:mime-version:date
         :message-id:from:to:cc:subject:date:message-id:reply-to;
        bh=Gb4/gtNUINoS2wM1/nsdXCF2baRKdD1wlLhO/PYM5rs=;
        b=MV6/U1ECSZFT3qjwV5ynq1wv6WVevA5zEaoXDT+mMINpqSOKb1nVYQVxXBoKjPYGqi
         IuV+EampDYirsgKumzV/Ph7LTq5LC2M8L+fvSdZQRR8i4giTawspKBbKm8wl7dShX22/
         lvipRvK79s0UemFUAIQamL4I8PbK9A57/pPiHWh7oY1NO5gFJeNL2WVesSvVTDrCXsrt
         dguSCp57rX1k1khFkXxcR1WuCRLnvuKaAyHXdipGrJAe7QQVpeIiYuVe2kl6yb15txJe
         qo8AuAvhITFfk7qRysnvPb9e83mr8c/urZpL23OCplBE76B6Dp8h6HQyVpBuB50oN3E0
         7cew==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704963695; x=1705568495;
        h=content-transfer-encoding:in-reply-to:autocrypt:references:cc:to
         :from:content-language:subject:user-agent:mime-version:date
         :message-id:x-gm-message-state:from:to:cc:subject:date:message-id
         :reply-to;
        bh=Gb4/gtNUINoS2wM1/nsdXCF2baRKdD1wlLhO/PYM5rs=;
        b=WqO5Brav9S1gG0fpUREClPYpZn44qQFFgjUDOEwt9HCp0xGfmTW6BWEfNgl+ZMehE/
         /D9kmPJdr+1O0jUXQ72fE7UMxqmVZwu+y/qTci6IJ7U+iHZJiEk0kzcT5PxvcrayyIa2
         dQZvyW+RLxv+OubeVHvyp9fAeANHQ2Nnm1RrwKuw4P1gfNfdiOiDMRNDJ9OBzjpu7/MG
         NOmqitKp6pGkKlkXltghwikwGRVlr7u9TKVrW0abc0Zg0WHFuShz3Khh4+3XyXezuxim
         /kFqX/dE7srKzVNpFlt4/PjEJno1I7F7Xslrl9kEd7oorJFcXmGIcEB4+uWk97mCtYI4
         Sstg==
X-Gm-Message-State: AOJu0Yy3Obyg2umRIFQxVJ8iGeDeg01DPD1pKdyphuqSveuAp64u33/x
	nHUmSn8JsCDqMJUq9ZXdul/qjO51M5rZnJdkLaQwborhrw==
X-Google-Smtp-Source: AGHT+IGY4ZC6Rz0245ZzEW3qCEXmuJfx52gr0YWe2wxiNWTgara33jsliRW7elEZNrjkHuIU5LSSxw==
X-Received: by 2002:a05:600c:2158:b0:40e:526f:a110 with SMTP id v24-20020a05600c215800b0040e526fa110mr94065wml.107.1704963694917;
        Thu, 11 Jan 2024 01:01:34 -0800 (PST)
Message-ID: <36e89b27-a3a2-4cbf-879c-e24cc00d862c@suse.com>
Date: Thu, 11 Jan 2024 10:01:34 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: [PATCH v4 6/8] x86emul: support USER_MSR instructions
Content-Language: en-US
From: Jan Beulich <jbeulich@suse.com>
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, Wei Liu <wl@xen.org>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
References: <9dd23064-c79e-4a50-9c71-c0e73b189944@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <9dd23064-c79e-4a50-9c71-c0e73b189944@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

While UWRMSR probably isn't of much use as long as we don't support
UINTR, URDMSR may well be useful to guests even without that (depending
on what OSes are willing to permit access to).

Since the two VEX encodings introduce a lonely opcode point in map 7,
for now don't bother introducing a full 256-entry table.

Signed-off-by: Jan Beulich <jbeulich@suse.com>
---
The retaining of (possible) #PF from the bitmap access is "speculative"
(the spec doesn't mention #PF as a possible exception; conceivably this
might also need converting to #GP).

I'm a little wary of the "MSRs Writeable by UWRMSR" table that the spec
has, and that our code thus also enforces: As new MSRs are added to that
table, we'll need piecemeal updates to that switch() statement.

The choice of using APERF in the test harness is connected to the also
pending RDPRU patch, where the register needs handling anyway.
---
v4: MSR index input regs are 64-bit (albeit only the APX spec has it
    this way for now).
v3: New.

--- a/tools/misc/xen-cpuid.c
+++ b/tools/misc/xen-cpuid.c
@@ -224,7 +224,7 @@ static const char *const str_7d1[32] =
 {
     [ 4] = "avx-vnni-int8",       [ 5] = "avx-ne-convert",
 
-    [14] = "prefetchi",
+    [14] = "prefetchi",           [15] = "user-msr",
 
     [18] = "cet-sss",
 };
--- a/tools/tests/x86_emulator/predicates.c
+++ b/tools/tests/x86_emulator/predicates.c
@@ -864,7 +864,9 @@ static const struct {
     { { 0xf6 }, { 2, 2 }, T, R, pfx_66 }, /* adcx */
     { { 0xf6 }, { 2, 2 }, T, R, pfx_f3 }, /* adox */
     { { 0xf8 }, { 2, 2 }, F, W, pfx_66 }, /* movdir64b */
+    { { 0xf8, 0xc0 }, { 0, 2 }, F, N, pfx_f3 }, /* uwrmsr */
     { { 0xf8 }, { 2, 2 }, F, W, pfx_f3 }, /* enqcmds */
+    { { 0xf8, 0xc0 }, { 0, 2 }, F, N, pfx_f2 }, /* urdmsr */
     { { 0xf8 }, { 2, 2 }, F, W, pfx_f2 }, /* enqcmd */
     { { 0xf9 }, { 2, 2 }, F, W }, /* movdiri */
 };
@@ -1502,6 +1504,9 @@ static const struct vex {
     { { 0xcf }, 3, T, R, pfx_66, W1, Ln }, /* vgf2p8affineinvqb */
     { { 0xdf }, 3, T, R, pfx_66, WIG, Ln }, /* vaeskeygenassist */
     { { 0xf0 }, 3, T, R, pfx_f2, Wn, L0 }, /* rorx */
+}, vex_map7[] = {
+    { { 0xf8, 0xc0 }, 6, F, N, pfx_f3, W0, L0 }, /* uwrmsr */
+    { { 0xf8, 0xc0 }, 6, F, N, pfx_f2, W0, L0 }, /* urdmsr */
 };
 
 static const struct {
@@ -1511,6 +1516,10 @@ static const struct {
     { vex_0f,   ARRAY_SIZE(vex_0f) },
     { vex_0f38, ARRAY_SIZE(vex_0f38) },
     { vex_0f3a, ARRAY_SIZE(vex_0f3a) },
+    { NULL,     0 }, /* map 4 */
+    { NULL,     0 }, /* map 5 */
+    { NULL,     0 }, /* map 6 */
+    { vex_map7, ARRAY_SIZE(vex_map7) },
 };
 
 static const struct xop {
@@ -2411,7 +2420,8 @@ void predicates_test(void *instr, struct
 
                 if ( vex[x].tbl[t].w == WIG || (vex[x].tbl[t].w & W0) )
                 {
-                    memcpy(ptr, vex[x].tbl[t].opc, vex[x].tbl[t].len);
+                    memcpy(ptr, vex[x].tbl[t].opc,
+                           MIN(vex[x].tbl[t].len, ARRAY_SIZE(vex->tbl->opc)));
 
                     if ( vex[x].tbl[t].l == LIG || (vex[x].tbl[t].l & L0) )
                         do_test(instr, vex[x].tbl[t].len + ((void *)ptr - instr),
@@ -2421,7 +2431,8 @@ void predicates_test(void *instr, struct
                     if ( vex[x].tbl[t].l == LIG || (vex[x].tbl[t].l & L1) )
                     {
                         ptr[-1] |= 4;
-                        memcpy(ptr, vex[x].tbl[t].opc, vex[x].tbl[t].len);
+                        memcpy(ptr, vex[x].tbl[t].opc,
+                               MIN(vex[x].tbl[t].len, ARRAY_SIZE(vex->tbl->opc)));
 
                         do_test(instr, vex[x].tbl[t].len + ((void *)ptr - instr),
                                 vex[x].tbl[t].modrm ? (void *)ptr - instr + 1 : 0,
@@ -2432,7 +2443,8 @@ void predicates_test(void *instr, struct
                 if ( vex[x].tbl[t].w == WIG || (vex[x].tbl[t].w & W1) )
                 {
                     ptr[-1] = 0xf8 | vex[x].tbl[t].pfx;
-                    memcpy(ptr, vex[x].tbl[t].opc, vex[x].tbl[t].len);
+                    memcpy(ptr, vex[x].tbl[t].opc,
+                           MIN(vex[x].tbl[t].len, ARRAY_SIZE(vex->tbl->opc)));
 
                     if ( vex[x].tbl[t].l == LIG || (vex[x].tbl[t].l & L0) )
                         do_test(instr, vex[x].tbl[t].len + ((void *)ptr - instr),
@@ -2442,7 +2454,8 @@ void predicates_test(void *instr, struct
                     if ( vex[x].tbl[t].l == LIG || (vex[x].tbl[t].l & L1) )
                     {
                         ptr[-1] |= 4;
-                        memcpy(ptr, vex[x].tbl[t].opc, vex[x].tbl[t].len);
+                        memcpy(ptr, vex[x].tbl[t].opc,
+                               MIN(vex[x].tbl[t].len, ARRAY_SIZE(vex->tbl->opc)));
 
                         do_test(instr, vex[x].tbl[t].len + ((void *)ptr - instr),
                                 vex[x].tbl[t].modrm ? (void *)ptr - instr + 1 : 0,
--- a/tools/tests/x86_emulator/test_x86_emulator.c
+++ b/tools/tests/x86_emulator/test_x86_emulator.c
@@ -684,6 +684,7 @@ static int blk(
 
 #ifdef __x86_64__
 static unsigned long gs_base, gs_base_shadow;
+static unsigned long uintr_timer;
 #endif
 
 static int read_segment(
@@ -718,6 +719,15 @@ static int write_segment(
 
     return X86EMUL_OKAY;
 }
+
+static const uint8_t __attribute__((aligned(0x1000))) umsr_bitmap[0x1000] = {
+#define RD(msr) [(msr) >> 3] = 1 << ((msr) & 7)
+#define WR(msr) [0x800 + ((msr) >> 3)] = 1 << ((msr) & 7)
+    RD(0x000000e8), /* APERF */
+    WR(0x00001b00), /* UINTR_TIMER */
+#undef WR
+#undef RD
+};
 #endif
 
 static int read_msr(
@@ -727,10 +737,22 @@ static int read_msr(
 {
     switch ( reg )
     {
+#ifdef __x86_64__
+    case 0x0000001c: /* USER_MSR_CTL */
+        *val = (unsigned long)umsr_bitmap | 1;
+        return X86EMUL_OKAY;
+#endif
+
     case 0x0000002f: /* BARRIER */
         *val = 0;
         return X86EMUL_OKAY;
 
+    case 0x000000e8: /* APERF */
+#define APERF_LO_VALUE 0xAEAEAEAE
+#define APERF_HI_VALUE 0xEAEAEAEA
+        *val = ((uint64_t)APERF_HI_VALUE << 32) | APERF_LO_VALUE;
+        return X86EMUL_OKAY;
+
     case 0xc0000080: /* EFER */
         *val = ctxt->addr_size > 32 ? 0x500 /* LME|LMA */ : 0;
         return X86EMUL_OKAY;
@@ -766,6 +788,12 @@ static int write_msr(
 {
     switch ( reg )
     {
+    case 0x00001b00: /* UINTR_TIMER */
+        if ( ctxt->addr_size < 64 )
+            break;
+        uintr_timer = val;
+        return X86EMUL_OKAY;
+
     case 0xc0000101: /* GS_BASE */
         if ( ctxt->addr_size < 64 || !is_canonical_address(val) )
             break;
@@ -1565,6 +1593,62 @@ int main(int argc, char **argv)
          (gs_base != 0x0000222244446666UL) ||
          (gs_base_shadow != 0x0000111122224444UL) )
         goto fail;
+    printf("okay\n");
+
+    printf("%-40s", "Testing urdmsr %rdx,%rcx...");
+    instr[0] = 0xf2; instr[1] = 0x0f; instr[2] = 0x38; instr[3] = 0xf8; instr[4] = 0xd1;
+    regs.rip = (unsigned long)&instr[0];
+    regs.rdx = 0x000000e8UL; /* APERF */
+    rc = x86_emulate(&ctxt, &emulops);
+    if ( (rc != X86EMUL_OKAY) ||
+         (regs.rip != (unsigned long)&instr[5]) ||
+         (regs.rcx != (((uint64_t)APERF_HI_VALUE << 32) | APERF_LO_VALUE)) )
+        goto fail;
+    printf("okay\n");
+
+    printf("%-40s", "Testing urdmsr $0xe8,%rdx...");
+    instr[0] = 0xc4; instr[1] = 0xe7; instr[2] = 0x7b; instr[3] = 0xf8; instr[4] = 0xc2;
+    instr[5] = 0xe8; instr[6] = 0; instr[7] = 0; instr[8] = 0;
+    regs.rip = (unsigned long)&instr[0];
+    rc = x86_emulate(&ctxt, &emulops);
+    if ( (rc != X86EMUL_OKAY) ||
+         (regs.rip != (unsigned long)&instr[9]) ||
+         (regs.rdx != (((uint64_t)APERF_HI_VALUE << 32) | APERF_LO_VALUE)) )
+        goto fail;
+    printf("okay\n");
+
+    printf("%-40s", "Testing uwrmsr %rdi,%rsi...");
+    instr[0] = 0xf3; instr[1] = 0x0f; instr[2] = 0x38; instr[3] = 0xf8; instr[4] = 0xf7;
+    regs.rip = (unsigned long)&instr[0];
+    regs.rsi = 0x00001b00UL; /* UINTR_TIMER */
+    regs.rdi = 0x0011223344556677UL;
+    rc = x86_emulate(&ctxt, &emulops);
+    if ( (rc != X86EMUL_OKAY) ||
+         (regs.rip != (unsigned long)&instr[5]) ||
+         (uintr_timer != 0x0011223344556677UL) )
+        goto fail;
+    printf("okay\n");
+
+    printf("%-40s", "Testing uwrmsr %rsi,$0x1b00...");
+    instr[0] = 0xc4; instr[1] = 0xe7; instr[2] = 0x7a; instr[3] = 0xf8; instr[4] = 0xc6;
+    instr[5] = 0x00; instr[6] = 0x1b; instr[7] = 0; instr[8] = 0;
+    regs.rip = (unsigned long)&instr[0];
+    regs.rsi = 0x8877665544332211UL;
+    rc = x86_emulate(&ctxt, &emulops);
+    if ( (rc != X86EMUL_OKAY) ||
+         (regs.rip != (unsigned long)&instr[9]) ||
+         (uintr_timer != 0x8877665544332211UL) )
+        goto fail;
+
+    printf("%-40s", "Testing uwrmsr %rsi,$0x1b01...");
+    instr[5] = 0x01; /* UARCH_MISC_CTL (derived from UINTR_TIMER) */
+    regs.rip = (unsigned long)&instr[0];
+    regs.rsi = 0;
+    rc = x86_emulate(&ctxt, &emulops);
+    if ( (rc != X86EMUL_EXCEPTION) ||
+         (regs.rip != (unsigned long)&instr[0]) ||
+         (uintr_timer != 0x8877665544332211UL) )
+        goto fail;
 
     emulops.write_msr     = NULL;
 #endif
--- a/xen/arch/x86/include/asm/msr-index.h
+++ b/xen/arch/x86/include/asm/msr-index.h
@@ -24,6 +24,10 @@
 #define  APIC_BASE_ENABLE                   (_AC(1, ULL) << 11)
 #define  APIC_BASE_ADDR_MASK                _AC(0x000ffffffffff000, ULL)
 
+#define MSR_USER_MSR_CTL                    0x0000001c
+#define  USER_MSR_ENABLE                    (_AC(1, ULL) <<  0)
+#define  USER_MSR_ADDR_MASK                 0xfffffffffffff000ULL
+
 #define MSR_BARRIER                         0x0000002f
 
 #define MSR_TEST_CTRL                       0x00000033
--- a/xen/arch/x86/x86_emulate/decode.c
+++ b/xen/arch/x86/x86_emulate/decode.c
@@ -901,7 +901,7 @@ decode_0f38(struct x86_emulate_state *s,
     {
     case 0x00 ... 0xef:
     case 0xf2 ... 0xf5:
-    case 0xf7 ... 0xf8:
+    case 0xf7:
     case 0xfa ... 0xff:
         s->op_bytes = 0;
         /* fall through */
@@ -946,6 +946,18 @@ decode_0f38(struct x86_emulate_state *s,
     case X86EMUL_OPC_VEX_F2(0, 0xf7): /* shrx */
         break;
 
+    case 0xf8:
+        if ( s->modrm_mod == 3 ) /* u{rd,wr}msr */
+        {
+            s->desc = DstMem | SrcReg | Mov;
+            s->op_bytes = 8;
+            s->simd_size = simd_none;
+        }
+        else /* movdir64b / enqcmd{,s} */
+            s->op_bytes = 0;
+        ctxt->opcode |= MASK_INSR(s->vex.pfx, X86EMUL_OPC_PFX_MASK);
+        break;
+
     default:
         s->op_bytes = 0;
         break;
@@ -1251,6 +1263,16 @@ int x86emul_decode(struct x86_emulate_st
                          */
                         d = twobyte_table[0x38].desc;
                         break;
+
+                    case vex_map7:
+                        opcode |= MASK_INSR(7, X86EMUL_OPC_EXT_MASK);
+                        /*
+                         * No table lookup here for now, as there's only a single
+                         * opcode point (0xf8) populated in map 7.
+                         */
+                        d = DstMem | SrcImm | ModRM | Mov;
+                        s->op_bytes = 8;
+                        break;
                     }
                 }
                 else if ( s->ext < ext_8f08 + ARRAY_SIZE(xop_table) )
@@ -1619,6 +1641,7 @@ int x86emul_decode(struct x86_emulate_st
             s->simd_size = ext8f09_table[b].simd_size;
             break;
 
+        case ext_map7:
         case ext_8f08:
         case ext_8f0a:
             /*
@@ -1833,6 +1856,7 @@ int x86emul_decode(struct x86_emulate_st
 
     case ext_map5:
     case ext_map6:
+    case ext_map7:
     case ext_8f09:
     case ext_8f0a:
         break;
--- a/xen/arch/x86/x86_emulate/private.h
+++ b/xen/arch/x86/x86_emulate/private.h
@@ -185,6 +185,7 @@ enum vex_opcx {
     vex_0f3a,
     evex_map5 = 5,
     evex_map6,
+    vex_map7,
 };
 
 enum vex_pfx {
@@ -241,6 +242,7 @@ struct x86_emulate_state {
         ext_0f3a = vex_0f3a,
         ext_map5 = evex_map5,
         ext_map6 = evex_map6,
+        ext_map7 = vex_map7,
         /*
          * For XOP use values such that the respective instruction field
          * can be used without adjustment.
--- a/xen/arch/x86/x86_emulate/x86_emulate.c
+++ b/xen/arch/x86/x86_emulate/x86_emulate.c
@@ -7125,10 +7125,67 @@ x86_emulate(
         state->simd_size = simd_none;
         break;
 
-    case X86EMUL_OPC_F2(0x0f38, 0xf8): /* enqcmd r,m512 */
-    case X86EMUL_OPC_F3(0x0f38, 0xf8): /* enqcmds r,m512 */
+    case X86EMUL_OPC_F2(0x0f38, 0xf8): /* enqcmd r,m512 / urdmsr r32,r64 */
+    case X86EMUL_OPC_F3(0x0f38, 0xf8): /* enqcmds r,m512 / uwrmsr r64,r32 */
+        if ( ea.type == OP_MEM )
+            goto enqcmd;
+        imm1 = src.val;
+        /* fall through */
+    case X86EMUL_OPC_VEX_F2(7, 0xf8): /* urdmsr imm32,r64 */
+    case X86EMUL_OPC_VEX_F3(7, 0xf8): /* uwrmsr r64,imm32 */
+        generate_exception_if(!mode_64bit() || ea.type != OP_REG, X86_EXC_UD);
+        generate_exception_if(vex.l || vex.w, X86_EXC_UD);
+        generate_exception_if(vex.opcx && (modrm_reg || vex.reg != 0xf),
+                              X86_EXC_UD);
+        fail_if(!ops->read_msr);
+        if ( ops->read_msr(MSR_USER_MSR_CTL, &msr_val, ctxt) != X86EMUL_OKAY )
+        {
+            x86_emul_reset_event(ctxt);
+            msr_val = 0;
+        }
+        generate_exception_if(!(msr_val & USER_MSR_ENABLE), X86_EXC_UD);
+        generate_exception_if(imm1 & ~0x3fff, X86_EXC_GP, 0);
+
+        /* Check the corresponding bitmap. */
+        ea.mem.off = msr_val & ~0xfff;
+        if ( vex.pfx != vex_f2 )
+            ea.mem.off += 0x800;
+        ea.mem.off += imm1 >> 3;
+        if ( (rc = ops->read(x86_seg_sys, ea.mem.off, &b, 1,
+                             ctxt)) != X86EMUL_OKAY )
+            goto done;
+        generate_exception_if(!(b & (1 << (imm1 & 7))), X86_EXC_GP, 0);
+
+        /* Carry out the actual MSR access. */
+        if ( vex.pfx == vex_f2 )
+        {
+            /* urdmsr */
+            if ( (rc = ops->read_msr(imm1, &msr_val, ctxt)) != X86EMUL_OKAY )
+                goto done;
+            dst.val = msr_val;
+            ASSERT(dst.type == OP_REG);
+            dst.bytes = 8;
+        }
+        else
+        {
+            /* uwrmsr */
+            switch ( imm1 )
+            {
+            case 0x1b00: /* UINTR_TIMER */
+            case 0x1b01: /* UARCH_MISC_CTL */
+                break;
+            default:
+                generate_exception(X86_EXC_GP, 0);
+            }
+            fail_if(!ops->write_msr);
+            if ( (rc = ops->write_msr(imm1, dst.val, ctxt)) != X86EMUL_OKAY )
+                goto done;
+            dst.type = OP_NONE;
+        }
+        break;
+
+    enqcmd:
         host_and_vcpu_must_have(enqcmd);
-        generate_exception_if(ea.type != OP_MEM, X86_EXC_UD);
         generate_exception_if(vex.pfx != vex_f2 && !mode_ring0(), X86_EXC_GP, 0);
         src.val = truncate_ea(*dst.reg);
         generate_exception_if(!is_aligned(x86_seg_es, src.val, 64, ctxt, ops),
--- a/xen/include/public/arch-x86/cpufeatureset.h
+++ b/xen/include/public/arch-x86/cpufeatureset.h
@@ -315,6 +315,7 @@ XEN_CPUFEATURE(MCDT_NO,            13*32
 XEN_CPUFEATURE(AVX_VNNI_INT8,      15*32+ 4) /*A  AVX-VNNI-INT8 Instructions */
 XEN_CPUFEATURE(AVX_NE_CONVERT,     15*32+ 5) /*A  AVX-NE-CONVERT Instructions */
 XEN_CPUFEATURE(PREFETCHI,          15*32+14) /*A  PREFETCHIT{0,1} Instructions */
+XEN_CPUFEATURE(USER_MSR,           15*32+15) /*   U{RD,WR}MSR Instructions */
 XEN_CPUFEATURE(CET_SSS,            15*32+18) /*   CET Supervisor Shadow Stacks safe to use */
 
 /* Intel-defined CPU features, MSR_ARCH_CAPS 0x10a.eax, word 16 */
--- a/xen/tools/gen-cpuid.py
+++ b/xen/tools/gen-cpuid.py
@@ -275,7 +275,7 @@ def crunch_numbers(state):
         # NO_LMSL indicates the absense of Long Mode Segment Limits, which
         # have been dropped in hardware.
         LM: [CX16, PCID, LAHF_LM, PAGE1GB, PKU, NO_LMSL, LKGS, CMPCCXADD,
-             MSRLIST],
+             MSRLIST, USER_MSR],
 
         # AMD K6-2+ and K6-III processors shipped with 3DNow+, beyond the
         # standard 3DNow in the earlier K6 processors.



From xen-devel-bounces@lists.xenproject.org Thu Jan 11 09:01:58 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 11 Jan 2024 09:01:58 +0000
Received: from list by lists.xenproject.org with outflank-mailman.666043.1036472 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNqwn-0008F8-R3; Thu, 11 Jan 2024 09:01:57 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 666043.1036472; Thu, 11 Jan 2024 09:01:57 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNqwn-0008F1-Ns; Thu, 11 Jan 2024 09:01:57 +0000
Received: by outflank-mailman (input) for mailman id 666043;
 Thu, 11 Jan 2024 09:01:56 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=YFj+=IV=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rNqwm-000738-75
 for xen-devel@lists.xenproject.org; Thu, 11 Jan 2024 09:01:56 +0000
Received: from mail-lj1-x232.google.com (mail-lj1-x232.google.com
 [2a00:1450:4864:20::232])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 10e261ef-b060-11ee-9b0f-b553b5be7939;
 Thu, 11 Jan 2024 10:01:54 +0100 (CET)
Received: by mail-lj1-x232.google.com with SMTP id
 38308e7fff4ca-2cd46e7ae8fso56210151fa.1
 for <xen-devel@lists.xenproject.org>; Thu, 11 Jan 2024 01:01:54 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 h6-20020adf9cc6000000b003375d8b0460sm643239wre.1.2024.01.11.01.01.53
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 11 Jan 2024 01:01:53 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 10e261ef-b060-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1704963714; x=1705568514; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:references:cc:to
         :from:content-language:subject:user-agent:mime-version:date
         :message-id:from:to:cc:subject:date:message-id:reply-to;
        bh=na6Z+653rGyQ/QpH5AhH8OcJuaSsVu3W3ZY2F24Kex0=;
        b=fVSJkmdjifaUcmoDv4+mmunrHTwWC0DJ5+2c5EgQdjNcNdBck2f1MmkxBfWRUaGRM7
         iENx5Jrm2JfrX7mtNHUDmU4qvzbSVWsVnqMsQ0xL9vlQeqpOW/d04QfB+W38hCMUrlfk
         GmXzE+aDHGjiBDSTsOVZduzk9fcuhKl7L4DTF3jADqBGWcP3nsdmrAx0wlx+CzQYWBvg
         0PVtImPHIg77/m7thfHXGzbw737NwKZgEzHNQfIXHTpfuxVZ1NhSz4076fUNrLrGxdc+
         lkVIzzz6dneAFA+Uj2jWIxym10wI6G3CdfkXF6m/AQQ8dAyF34CVG9SOiQHH8i32GUv3
         N9kw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704963714; x=1705568514;
        h=content-transfer-encoding:in-reply-to:autocrypt:references:cc:to
         :from:content-language:subject:user-agent:mime-version:date
         :message-id:x-gm-message-state:from:to:cc:subject:date:message-id
         :reply-to;
        bh=na6Z+653rGyQ/QpH5AhH8OcJuaSsVu3W3ZY2F24Kex0=;
        b=cFNhfwBkic7O00W6K5Q5MRDyEaBhuttomN45COWWfGWkrcvFHC77W25Qs4iMm8kCp8
         cmD1/4KeAE4E6pbEsQo/X5KnLrWThmCeank/HV2gJtROyPjPJ5hIloGiyLinv4rARzeP
         gClogS10DmXj26wheaxzw1kV+sKQtMZJCDRHfk68/61+ePnXVMMIBDYxriUIcXEwSbiY
         AAog7PsLuY3HAZ7HuJJsVUKySAMRpu0zRuUfoLYxxoa8kWmBe9zVg51QIfw4SrXDel4a
         2EaTbUw5DFTg8so24+0sdpFxW3Ri07ApA2U9KT4LY2dJHb9LIhRKbsBkpL7X/uv7CGXi
         D4Dw==
X-Gm-Message-State: AOJu0YxKsc4hppUu3ZenlLS1GUJVZ7CKli8nvXW9mRuX4CtZFuwS+K9D
	4delwisPqnCptjk6+SP5/9hwelXFpd2LPM2itG+jnHSsuw==
X-Google-Smtp-Source: AGHT+IGqJqdyJB6e2MBEQtKrunQYTYblHHSRs2HCTdFU/pCjdurYgX60BlwhEIPJ6Pm3OgcSOSNU0w==
X-Received: by 2002:a05:651c:97:b0:2cd:c2c:1c5 with SMTP id 23-20020a05651c009700b002cd0c2c01c5mr95641ljq.158.1704963713762;
        Thu, 11 Jan 2024 01:01:53 -0800 (PST)
Message-ID: <e982f0b9-d802-42a4-bfe0-78a7dd4d755a@suse.com>
Date: Thu, 11 Jan 2024 10:01:53 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: [PATCH v4 7/8] x86/cpu-policy: re-arrange no-VMX logic
Content-Language: en-US
From: Jan Beulich <jbeulich@suse.com>
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, Wei Liu <wl@xen.org>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
References: <9dd23064-c79e-4a50-9c71-c0e73b189944@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <9dd23064-c79e-4a50-9c71-c0e73b189944@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

Move the PKS check into an "else" for the corresponding "if()", such
that further adjustments (like for USER_MSR) can easily be put there as
well.

Signed-off-by: Jan Beulich <jbeulich@suse.com>
---
v4: New.

--- a/xen/arch/x86/cpu-policy.c
+++ b/xen/arch/x86/cpu-policy.c
@@ -665,19 +665,20 @@ static void __init calculate_hvm_max_pol
         if ( !cpu_has_vmx_xsaves )
             __clear_bit(X86_FEATURE_XSAVES, fs);
     }
+    else
+    {
+        /*
+         * Xen doesn't use PKS, so the guest support for it has opted to not use
+         * the VMCS load/save controls for efficiency reasons.  This depends on
+         * the exact vmentry/exit behaviour, so don't expose PKS in other
+         * situations until someone has cross-checked the behaviour for safety.
+         */
+        __clear_bit(X86_FEATURE_PKS, fs);
+    }
 
     if ( !cpu_has_vmx_msrlist )
         __clear_bit(X86_FEATURE_MSRLIST, fs);
 
-    /*
-     * Xen doesn't use PKS, so the guest support for it has opted to not use
-     * the VMCS load/save controls for efficiency reasons.  This depends on
-     * the exact vmentry/exit behaviour, so don't expose PKS in other
-     * situations until someone has cross-checked the behaviour for safety.
-     */
-    if ( !cpu_has_vmx )
-        __clear_bit(X86_FEATURE_PKS, fs);
-
     guest_common_max_feature_adjustments(fs);
     guest_common_feature_adjustments(fs);
 



From xen-devel-bounces@lists.xenproject.org Thu Jan 11 09:02:29 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 11 Jan 2024 09:02:29 +0000
Received: from list by lists.xenproject.org with outflank-mailman.666048.1036483 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNqxJ-0000WU-4a; Thu, 11 Jan 2024 09:02:29 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 666048.1036483; Thu, 11 Jan 2024 09:02:29 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNqxJ-0000WN-1T; Thu, 11 Jan 2024 09:02:29 +0000
Received: by outflank-mailman (input) for mailman id 666048;
 Thu, 11 Jan 2024 09:02:28 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=YFj+=IV=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rNqxI-0006N6-BF
 for xen-devel@lists.xenproject.org; Thu, 11 Jan 2024 09:02:28 +0000
Received: from mail-wr1-x433.google.com (mail-wr1-x433.google.com
 [2a00:1450:4864:20::433])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 24b76380-b060-11ee-98f0-6d05b1d4d9a1;
 Thu, 11 Jan 2024 10:02:27 +0100 (CET)
Received: by mail-wr1-x433.google.com with SMTP id
 ffacd0b85a97d-33765009941so4006043f8f.3
 for <xen-devel@lists.xenproject.org>; Thu, 11 Jan 2024 01:02:27 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 h6-20020adf9cc6000000b003375d8b0460sm643239wre.1.2024.01.11.01.02.26
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 11 Jan 2024 01:02:26 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 24b76380-b060-11ee-98f0-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1704963747; x=1705568547; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:references:cc:to
         :from:content-language:subject:user-agent:mime-version:date
         :message-id:from:to:cc:subject:date:message-id:reply-to;
        bh=O6gDUVTeesAB+3UgM1HShKtF9ZMrecPCai/9iqbHlNc=;
        b=Q4c7L/lYSqcbpDFUrhThdLd3PQ2sU9xrEExcVi5PFWBqXOOYqq57DWgBuMZgWAZcnS
         9GdVB2FaQOPLm7rYDG2HR7es/5kkgVarGziSDXu0+5+yfHEHieanoMFd9Qiy2/HX6NjL
         TJLcvdegxiqIVrq2F7MaqtG/oo6mHoYyT7MPvrOkOUSInOj+qmHZUu95TovC8QYRhvfk
         aUKKmgxcfnDJ5SivJdkNcGfFsMCVhpJLckFBjO2OqKcp11v9ivfSpw3Gk8mVVB8asPRz
         VjyjRiDta9dKQkTWZ+Wdz97W7RGOi8GGCYrqi4chXOT87Uu8dAzUkkIpo/sggETnLS6z
         ikVQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704963747; x=1705568547;
        h=content-transfer-encoding:in-reply-to:autocrypt:references:cc:to
         :from:content-language:subject:user-agent:mime-version:date
         :message-id:x-gm-message-state:from:to:cc:subject:date:message-id
         :reply-to;
        bh=O6gDUVTeesAB+3UgM1HShKtF9ZMrecPCai/9iqbHlNc=;
        b=Pb448SdNi0jgJDEDYkHFB/PY/OW7CeCyJXy+Pv6Ro838xDyV/87j2zc5tXgPdgrRIt
         6pLroKf5lBfPwLuxfLBgCiLmcMbO5FjwKHaIVbfgbc59HYjxNI4/mVDttC6J2gwVOPot
         8tGmaFygfsyODCCZDNkjS0B9txMIoe2PTqCAbQsbbymxknoq9nfYlgVMeJRGnsujw/Ad
         vc5H1j9SviIGlPinPuDrhlJ510/ztYwAabdxmMQBjLXS8ebTnXHBLMcO1u7h0UhppcoZ
         azZCjpJ8wEa5yUq1d3ub0Hkz3P6pIpwKxCuxdzhcaMc0hoxAlAh/o5Y3DpTvHYTpiaPl
         62lg==
X-Gm-Message-State: AOJu0YwfOvXstuK8n8Oq5GxZJiexVpCOPmNxvo5ptyy7MkMCcpVivvq5
	JxnzMeC/fiRxicoeE0+uBSrXmzJeXDwbNmDJMl0hjI6V3Q==
X-Google-Smtp-Source: AGHT+IHK7I9EmS58FYFhqOOOzePXRwPQUOluRryL+zHTekF2JdUqtwL5KKfL3tJDC2DsK8eJt4Z5LA==
X-Received: by 2002:a5d:5545:0:b0:337:7298:aeb2 with SMTP id g5-20020a5d5545000000b003377298aeb2mr432461wrw.121.1704963747015;
        Thu, 11 Jan 2024 01:02:27 -0800 (PST)
Message-ID: <e29f16f5-339b-4b15-8292-51ce498c0657@suse.com>
Date: Thu, 11 Jan 2024 10:02:26 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: [PATCH v4 8/8] VMX: support USER_MSR
Content-Language: en-US
From: Jan Beulich <jbeulich@suse.com>
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, Wei Liu <wl@xen.org>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Kevin Tian <kevin.tian@intel.com>, Jun Nakajima <jun.nakajima@intel.com>
References: <9dd23064-c79e-4a50-9c71-c0e73b189944@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <9dd23064-c79e-4a50-9c71-c0e73b189944@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

Hook up the new VM exit codes and handle guest accesses, context switch,
and save/restore. At least for now don't allow the guest direct access
to the control MSR; this may need changing if guests were to frequently
access it (e.g. on their own context switch path).

While there also correct a one-off in union ldt_or_tr_instr_info's
comment.

Signed-off-by: Jan Beulich <jbeulich@suse.com>
---
Needing to change two places in hvm.c continues to be unhelpful; I
recall I already did forget to also adjust hvm_load_cpu_msrs() for XFD.
Considering that MSRs typically arrive in the order the table has it,
couldn't we incrementally look up the incoming MSR index there, falling
back to a full lookup only when the incremental lookup failed (and thus
not normally re-iterating through the initial part of the array)?

Said comment in union ldt_or_tr_instr_info is further odd (same for
union gdt_or_idt_instr_info's) in that Instruction Information is only a
32-bit field. Hence bits 32-63 aren't undefined, but simply don't exist.

RFC: The wee attempt to "deal" with nested is likely wrong, but I'm
     afraid I simply don't know where such enforcement would be done
     properly. Returning an error there is also commented out, for
     domain_cpu_policy_changed() returning void without "x86/xstate:
     re-size save area when CPUID policy changes" in place.
---
v4: New.

--- a/xen/arch/x86/cpu-policy.c
+++ b/xen/arch/x86/cpu-policy.c
@@ -674,6 +674,12 @@ static void __init calculate_hvm_max_pol
          * situations until someone has cross-checked the behaviour for safety.
          */
         __clear_bit(X86_FEATURE_PKS, fs);
+
+        /*
+         * Don't expose USER_MSR until it is known how (if at all) it is
+         * virtualized on SVM.
+         */
+        __clear_bit(X86_FEATURE_USER_MSR, fs);
     }
 
     if ( !cpu_has_vmx_msrlist )
--- a/xen/arch/x86/domain.c
+++ b/xen/arch/x86/domain.c
@@ -447,6 +447,10 @@ void domain_cpu_policy_changed(struct do
         }
     }
 
+    /* Nested doesn't have the necessary processing, yet. */
+    if ( nestedhvm_enabled(d) && p->feat.user_msr )
+        return /* -EINVAL */;
+
     for_each_vcpu ( d, v )
     {
         cpu_policy_updated(v);
--- a/xen/arch/x86/hvm/hvm.c
+++ b/xen/arch/x86/hvm/hvm.c
@@ -1351,6 +1351,7 @@ static int cf_check hvm_load_cpu_xsave_s
 
 #define HVM_CPU_MSR_SIZE(cnt) offsetof(struct hvm_msr, msr[cnt])
 static const uint32_t msrs_to_send[] = {
+    MSR_USER_MSR_CTL,
     MSR_SPEC_CTRL,
     MSR_INTEL_MISC_FEATURES_ENABLES,
     MSR_PKRS,
@@ -1505,6 +1506,7 @@ static int cf_check hvm_load_cpu_msrs(st
         {
             int rc;
 
+        case MSR_USER_MSR_CTL:
         case MSR_SPEC_CTRL:
         case MSR_INTEL_MISC_FEATURES_ENABLES:
         case MSR_PKRS:
--- a/xen/arch/x86/hvm/vmx/vmx.c
+++ b/xen/arch/x86/hvm/vmx/vmx.c
@@ -680,13 +680,18 @@ static void cf_check vmx_vcpu_destroy(st
 }
 
 /*
- * To avoid MSR save/restore at every VM exit/entry time, we restore
- * the x86_64 specific MSRs at domain switch time. Since these MSRs
- * are not modified once set for para domains, we don't save them,
- * but simply reset them to values set in percpu_traps_init().
+ * To avoid MSR save/restore at every VM exit/entry time, we restore the
+ * x86_64 specific MSRs at vcpu switch time. Since these MSRs are not
+ * modified once set for para domains, we don't save them, but simply clear
+ * them or reset them to values set in percpu_traps_init().
  */
-static void vmx_restore_host_msrs(void)
+static void vmx_restore_host_msrs(const struct vcpu *v)
 {
+    const struct vcpu_msrs *msrs = v->arch.msrs;
+
+    if ( msrs->user_msr_ctl.enable )
+        wrmsrl(MSR_USER_MSR_CTL, 0);
+
     /* No PV guests?  No need to restore host SYSCALL infrastructure. */
     if ( !IS_ENABLED(CONFIG_PV) )
         return;
@@ -740,6 +745,9 @@ static void vmx_restore_guest_msrs(struc
 
     if ( cp->feat.pks )
         wrpkrs(msrs->pkrs);
+
+    if ( msrs->user_msr_ctl.enable )
+        wrmsrl(MSR_USER_MSR_CTL, msrs->user_msr_ctl.raw);
 }
 
 void vmx_update_cpu_exec_control(struct vcpu *v)
@@ -1161,7 +1169,7 @@ static void cf_check vmx_ctxt_switch_fro
     if ( !v->arch.fully_eager_fpu )
         vmx_fpu_leave(v);
     vmx_save_guest_msrs(v);
-    vmx_restore_host_msrs();
+    vmx_restore_host_msrs(v);
     vmx_save_dr(v);
 
     if ( v->domain->arch.hvm.pi_ops.flags & PI_CSW_FROM )
@@ -4552,6 +4560,48 @@ void asmlinkage vmx_vmexit_handler(struc
             hvm_inject_hw_exception(X86_EXC_GP, 0);
         break;
 
+    case EXIT_REASON_URDMSR:
+    {
+        uint64_t msr_content = 0;
+
+        __vmread(EXIT_QUALIFICATION, &exit_qualification);
+        switch ( hvm_msr_read_intercept(exit_qualification, &msr_content) )
+        {
+            user_msr_instr_info_t info;
+
+        case X86EMUL_OKAY:
+            __vmread(VMX_INSTRUCTION_INFO, &info.raw);
+            *decode_gpr(regs, info.gpr) = msr_content;
+            update_guest_eip(); /* Safe: URDMSR */
+            break;
+
+        case X86EMUL_EXCEPTION:
+            hvm_inject_hw_exception(X86_EXC_GP, 0);
+            break;
+        }
+        break;
+    }
+
+    case EXIT_REASON_UWRMSR:
+    {
+        user_msr_instr_info_t info;
+
+        __vmread(EXIT_QUALIFICATION, &exit_qualification);
+        __vmread(VMX_INSTRUCTION_INFO, &info.raw);
+        switch ( hvm_msr_write_intercept(exit_qualification,
+                                         *decode_gpr(regs, info.gpr), true) )
+        {
+        case X86EMUL_OKAY:
+            update_guest_eip(); /* Safe: UWRMSR */
+            break;
+
+        case X86EMUL_EXCEPTION:
+            hvm_inject_hw_exception(X86_EXC_GP, 0);
+            break;
+        }
+        break;
+    }
+
     case EXIT_REASON_VMXOFF:
     case EXIT_REASON_VMXON:
     case EXIT_REASON_VMCLEAR:
--- a/xen/arch/x86/include/asm/hvm/vmx/vmx.h
+++ b/xen/arch/x86/include/asm/hvm/vmx/vmx.h
@@ -204,6 +204,8 @@ static inline void pi_clear_sn(struct pi
 #define EXIT_REASON_NOTIFY              75
 #define EXIT_REASON_RDMSRLIST           78
 #define EXIT_REASON_WRMSRLIST           79
+#define EXIT_REASON_URDMSR              80
+#define EXIT_REASON_UWRMSR              81
 /* Remember to also update VMX_PERF_EXIT_REASON_SIZE! */
 
 /*
@@ -675,8 +677,18 @@ typedef union ldt_or_tr_instr_info {
         base_reg_invalid        :1,  /* bit 27 - Base register invalid */
         instr_identity          :1,  /* bit 28 - 0:LDT, 1:TR */
         instr_write             :1,  /* bit 29 - 0:store, 1:load */
-                                :34; /* bits 31:63 - Undefined */
+                                :34; /* bits 30:63 - Undefined */
     };
 } ldt_or_tr_instr_info_t;
 
+/* VM-Exit instruction info for URDMSR and UWRMSR */
+typedef union user_msr_instr_info {
+    unsigned long raw;
+    struct {
+        unsigned int            :3,  /* Bits 0:2 - Undefined */
+        gpr                     :4,  /* Bits 3:6 - Source/Destination register */
+                                :25; /* bits 7:31 - Undefined */
+    };
+} user_msr_instr_info_t;
+
 #endif /* __ASM_X86_HVM_VMX_VMX_H__ */
--- a/xen/arch/x86/include/asm/msr.h
+++ b/xen/arch/x86/include/asm/msr.h
@@ -296,6 +296,20 @@ uint64_t msr_spec_ctrl_valid_bits(const
 struct vcpu_msrs
 {
     /*
+     * 0x0000001c - MSR_USER_MSR_CTL
+     *
+     * Value is guest chosen, and always loaded in vcpu context.
+     */
+    union {
+        uint64_t raw;
+        struct {
+            bool enable:1;
+            unsigned int :11;
+            unsigned long bitmap:52;
+        };
+    } user_msr_ctl;
+
+    /*
      * 0x00000048 - MSR_SPEC_CTRL
      * 0xc001011f - MSR_VIRT_SPEC_CTRL (if X86_FEATURE_AMD_SSBD)
      *
--- a/xen/arch/x86/include/asm/perfc_defn.h
+++ b/xen/arch/x86/include/asm/perfc_defn.h
@@ -6,7 +6,7 @@ PERFCOUNTER_ARRAY(exceptions,
 
 #ifdef CONFIG_HVM
 
-#define VMX_PERF_EXIT_REASON_SIZE 80
+#define VMX_PERF_EXIT_REASON_SIZE 82
 #define VMEXIT_NPF_PERFC 143
 #define SVM_PERF_EXIT_REASON_SIZE (VMEXIT_NPF_PERFC + 1)
 PERFCOUNTER_ARRAY(vmexits,              "vmexits",
--- a/xen/arch/x86/msr.c
+++ b/xen/arch/x86/msr.c
@@ -204,6 +204,12 @@ int guest_rdmsr(struct vcpu *v, uint32_t
         *val = msrs->xss.raw;
         break;
 
+    case MSR_USER_MSR_CTL:
+        if ( !cp->feat.user_msr )
+            goto gp_fault;
+        *val = msrs->user_msr_ctl.raw;
+        break;
+
     case 0x40000000 ... 0x400001ff:
         if ( is_viridian_domain(d) )
         {
@@ -529,6 +535,19 @@ int guest_wrmsr(struct vcpu *v, uint32_t
         msrs->xss.raw = val;
         break;
 
+    case MSR_USER_MSR_CTL:
+        if ( !cp->feat.user_msr )
+            goto gp_fault;
+
+        if ( (val & ~(USER_MSR_ENABLE | USER_MSR_ADDR_MASK)) ||
+             !is_canonical_address(val) )
+            goto gp_fault;
+
+        msrs->user_msr_ctl.raw = val;
+        if ( v == curr )
+            wrmsrl(MSR_USER_MSR_CTL, val);
+        break;
+
     case 0x40000000 ... 0x400001ff:
         if ( is_viridian_domain(d) )
         {
--- a/xen/include/public/arch-x86/cpufeatureset.h
+++ b/xen/include/public/arch-x86/cpufeatureset.h
@@ -315,7 +315,7 @@ XEN_CPUFEATURE(MCDT_NO,            13*32
 XEN_CPUFEATURE(AVX_VNNI_INT8,      15*32+ 4) /*A  AVX-VNNI-INT8 Instructions */
 XEN_CPUFEATURE(AVX_NE_CONVERT,     15*32+ 5) /*A  AVX-NE-CONVERT Instructions */
 XEN_CPUFEATURE(PREFETCHI,          15*32+14) /*A  PREFETCHIT{0,1} Instructions */
-XEN_CPUFEATURE(USER_MSR,           15*32+15) /*   U{RD,WR}MSR Instructions */
+XEN_CPUFEATURE(USER_MSR,           15*32+15) /*s  U{RD,WR}MSR Instructions */
 XEN_CPUFEATURE(CET_SSS,            15*32+18) /*   CET Supervisor Shadow Stacks safe to use */
 
 /* Intel-defined CPU features, MSR_ARCH_CAPS 0x10a.eax, word 16 */



From xen-devel-bounces@lists.xenproject.org Thu Jan 11 09:08:44 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 11 Jan 2024 09:08:44 +0000
Received: from list by lists.xenproject.org with outflank-mailman.666067.1036492 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNr3H-00025u-UN; Thu, 11 Jan 2024 09:08:39 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 666067.1036492; Thu, 11 Jan 2024 09:08:39 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNr3H-00025n-Rr; Thu, 11 Jan 2024 09:08:39 +0000
Received: by outflank-mailman (input) for mailman id 666067;
 Thu, 11 Jan 2024 09:08:38 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=4+ne=IV=cloud.com=roger.pau@srs-se1.protection.inumbo.net>)
 id 1rNr3G-00025h-5y
 for xen-devel@lists.xenproject.org; Thu, 11 Jan 2024 09:08:38 +0000
Received: from mail-wm1-x333.google.com (mail-wm1-x333.google.com
 [2a00:1450:4864:20::333])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 01141f5c-b061-11ee-98f0-6d05b1d4d9a1;
 Thu, 11 Jan 2024 10:08:37 +0100 (CET)
Received: by mail-wm1-x333.google.com with SMTP id
 5b1f17b1804b1-40e60e1373bso2309075e9.1
 for <xen-devel@lists.xenproject.org>; Thu, 11 Jan 2024 01:08:37 -0800 (PST)
Received: from localhost ([213.195.127.70]) by smtp.gmail.com with ESMTPSA id
 s27-20020adfa29b000000b003366cf8bda4sm664221wra.41.2024.01.11.01.08.35
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 11 Jan 2024 01:08:35 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 01141f5c-b061-11ee-98f0-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1704964116; x=1705568916; darn=lists.xenproject.org;
        h=content-transfer-encoding:mime-version:message-id:date:subject:cc
         :to:from:from:to:cc:subject:date:message-id:reply-to;
        bh=xL3761ssSlB++YwBh6IrPXss1xwoWjvn8Ap3bhK0DfA=;
        b=ZNw819/T2t+BxSyaNogtE28gJK31onjx3cGHFO4qSvPEAWouVnYc2hsE3QnVhJCd48
         drK7ADQtcqOPGBoawTEvCOYIz83QJH9+yhrdsiN1WFehFW0JHc8uoDmEy64peROOwcRa
         vGKDDprnpM8i3d7Bv/vWIq/YifiFf29rBB8bw=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704964116; x=1705568916;
        h=content-transfer-encoding:mime-version:message-id:date:subject:cc
         :to:from:x-gm-message-state:from:to:cc:subject:date:message-id
         :reply-to;
        bh=xL3761ssSlB++YwBh6IrPXss1xwoWjvn8Ap3bhK0DfA=;
        b=HDRrMGJvQ+Z26lR+f5hbtZMUnVe5fb9ifDTGkFuoeltd+Pcrw4j3gc68R6tAqAAEo6
         YRsdQKyQ78/mZbpTPkvhnEipoYtuxKYRLLNjb2+m+uYOTNESz2LyoaKZC9PRcBa00Be5
         cmy7SpAuQCQ1fpSw3GukGO3UyL37OAM0eKkiqJ0i0JVFvs/hNnSET+ipo17KvUNkJGE1
         MGlM8THRXxTWK8vbgjTsxwFNalUGb2uB7OIhx7HVy5u6K/QeVGXGFhShST7d8NwtUsI2
         /V4BPM2bBV7qZNTO/BUpqtKxZrTyQ8T1cei3IlFNFKbyLAYqgJnbCav3f1s/tF+/86dy
         tb8Q==
X-Gm-Message-State: AOJu0Yzo8QqmwR0qNaWzibIUS0HSouhmwPwh5KWdj/lw3wN7yeazKGKe
	tXzUlMRp5dKxc2W65wG1TtBjyDpAWbjmwDm2FmD6PhwgIS4=
X-Google-Smtp-Source: AGHT+IGJaC/xb9CScX0wTmbsCyOacS78Kzlsy3BkCDDFX/1bAspQNvnAES0xfrc1G/TK45XOSM6enw==
X-Received: by 2002:a05:600c:12d1:b0:40d:2b60:b6cf with SMTP id v17-20020a05600c12d100b0040d2b60b6cfmr219480wmd.78.1704964115888;
        Thu, 11 Jan 2024 01:08:35 -0800 (PST)
From: Roger Pau Monne <roger.pau@citrix.com>
To: xen-devel@lists.xenproject.org
Cc: Roger Pau Monne <roger.pau@citrix.com>,
	Jan Beulich <jbeulich@suse.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Wei Liu <wl@xen.org>
Subject: [PATCH v2] x86/intel: ensure Global Performance Counter Control is setup correctly
Date: Thu, 11 Jan 2024 10:08:21 +0100
Message-ID: <20240111090821.67594-1-roger.pau@citrix.com>
X-Mailer: git-send-email 2.43.0
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

When Architectural Performance Monitoring is available, the PERF_GLOBAL_CTRL
MSR contains per-counter enable bits that is ANDed with the enable bit in the
counter EVNTSEL MSR in order for a PMC counter to be enabled.

So far the watchdog code seems to have relied on the PERF_GLOBAL_CTRL enable
bits being set by default, but at least on some Intel Sapphire and Emerald
Rapids this is no longer the case, and Xen reports:

Testing NMI watchdog on all CPUs: 0 40 stuck

The first CPU on each package is started with PERF_GLOBAL_CTRL zeroed, so PMC0
doesn't start counting when the enable bit in EVNTSEL0 is set, due to the
relevant enable bit in PERF_GLOBAL_CTRL not being set.

Check and adjust PERF_GLOBAL_CTRL during CPU initialization so that all the
general-purpose PMCs are enabled.  Doing so brings the state of the package-BSP
PERF_GLOBAL_CTRL in line with the rest of the CPUs on the system.

Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
---
Changes since v1:
 - Do the adjustment of PERF_GLOBAL_CTRL even if the watchdog is not used, and
   enable all counters.
---
Unsure whether printing a warning if the value of PERF_GLOBAL_CTRL is not
correct is of any value, hence I haven't added it.
---
 xen/arch/x86/cpu/intel.c | 18 +++++++++++++++++-
 1 file changed, 17 insertions(+), 1 deletion(-)

diff --git a/xen/arch/x86/cpu/intel.c b/xen/arch/x86/cpu/intel.c
index dfee64689ffe..40d3eb0e18a7 100644
--- a/xen/arch/x86/cpu/intel.c
+++ b/xen/arch/x86/cpu/intel.c
@@ -533,9 +533,25 @@ static void cf_check init_intel(struct cpuinfo_x86 *c)
 	init_intel_cacheinfo(c);
 	if (c->cpuid_level > 9) {
 		unsigned eax = cpuid_eax(10);
+		unsigned int cnt = (uint8_t)(eax >> 8);
+
 		/* Check for version and the number of counters */
-		if ((eax & 0xff) && (((eax>>8) & 0xff) > 1))
+		if ((eax & 0xff) && (cnt > 1) && (cnt <= 32)) {
+			uint64_t global_ctrl;
+			unsigned int cnt_mask = (1UL << cnt) - 1;
+
+			/*
+			 * On (some?) Sapphire/Emerald Rapids platforms each
+			 * package-BSP starts with all the enable bits for the
+			 * general-purpose PMCs cleared.  Adjust so counters
+			 * can be enabled from EVNTSEL.
+			 */
+			rdmsrl(MSR_CORE_PERF_GLOBAL_CTRL, global_ctrl);
+			if ((global_ctrl & cnt_mask) != cnt_mask)
+				wrmsrl(MSR_CORE_PERF_GLOBAL_CTRL,
+				       global_ctrl | cnt_mask);
 			__set_bit(X86_FEATURE_ARCH_PERFMON, c->x86_capability);
+		}
 	}
 
 	if ( !cpu_has(c, X86_FEATURE_XTOPOLOGY) )
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Thu Jan 11 09:20:14 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 11 Jan 2024 09:20:14 +0000
Received: from list by lists.xenproject.org with outflank-mailman.666073.1036503 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNrEM-0006s3-05; Thu, 11 Jan 2024 09:20:06 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 666073.1036503; Thu, 11 Jan 2024 09:20:05 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNrEL-0006rw-SD; Thu, 11 Jan 2024 09:20:05 +0000
Received: by outflank-mailman (input) for mailman id 666073;
 Thu, 11 Jan 2024 09:20:04 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=ETxW=IV=amd.com=Xenia.Ragiadakou@srs-se1.protection.inumbo.net>)
 id 1rNrEK-0006W2-1u
 for xen-devel@lists.xenproject.org; Thu, 11 Jan 2024 09:20:04 +0000
Received: from NAM12-BN8-obe.outbound.protection.outlook.com
 (mail-bn8nam12on20601.outbound.protection.outlook.com
 [2a01:111:f403:2418::601])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 98217bca-b062-11ee-9b0f-b553b5be7939;
 Thu, 11 Jan 2024 10:20:01 +0100 (CET)
Received: from DS7PR03CA0096.namprd03.prod.outlook.com (2603:10b6:5:3b7::11)
 by SJ0PR12MB6966.namprd12.prod.outlook.com (2603:10b6:a03:449::14) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7159.23; Thu, 11 Jan
 2024 09:19:55 +0000
Received: from CY4PEPF0000FCC3.namprd03.prod.outlook.com
 (2603:10b6:5:3b7:cafe::fc) by DS7PR03CA0096.outlook.office365.com
 (2603:10b6:5:3b7::11) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7181.19 via Frontend
 Transport; Thu, 11 Jan 2024 09:19:55 +0000
Received: from SATLEXMB04.amd.com (165.204.84.17) by
 CY4PEPF0000FCC3.mail.protection.outlook.com (10.167.242.105) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.7181.13 via Frontend Transport; Thu, 11 Jan 2024 09:19:55 +0000
Received: from [10.0.2.15] (10.180.168.240) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.34; Thu, 11 Jan
 2024 03:19:52 -0600
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 98217bca-b062-11ee-9b0f-b553b5be7939
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=ARiSL9WhnjOjUkuFQrCa+Df56Fy0NP0ldt2yHvUl++8Xy11ppTgc6sc4ch/AKHyZ4nI67lpgkBPe2rsR1FHFW9CA4HyQL4ahkhUw86tnMiAok/6aj1Zv9Z0zIdycj9X0oZYh5GQQ89Iu6B6t7RfgIbwA1aw8XkdzTwXvoC5/+9pHPLpeXLiGFsfAuNeGLUCZSYrbEXshJfcGhh7WL0x+UWqtkYnobOoMzd2GTW9iY83kJvathSvxRUnsjHTMuD6/uN6PLFcIT0ZXDRU+8Elox//WvZRH3ppkvWSdq2TWoV+f0Y6eA8u6utZHOWDCYF1bIcC/OcGrrEivo0FG+3Zn5A==
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=8gbuXdVNdRi1YMwNVz1bSAXG/w/y9Z7eYpqQVXaJS1w=;
 b=K4BQ/b5PsHQrQjHIp4IaAaIxjDW6h5nm/eMMNh/c1fuGbFAvykPgkHwY//jAwwYUkjb5suNUQCmZIL99DxhRwzkOUnxWEcs+HAZLAurnwkEG1NRsPVaKwpUD4xpgRNffQKMaYzz4SslXciHtlzWVTL5ijJ0a+TJ2ADW5HaUgHuwVSyze78iZ16G0r21dZnl5DKWhrO3c4rutZrceM//yECFT6CyV12WNnyl7fjjLh0K3GFRl5rk7zbEtLKY/0RdGliV1Sq+XUnlQhlZHPJAv4M3yKTBmmsczDPPQVDgV729H0fRJ01wTv8mg8SOtvRz7RUmHfYY6IoqfLcsuboDM8w==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=suse.com 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)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=8gbuXdVNdRi1YMwNVz1bSAXG/w/y9Z7eYpqQVXaJS1w=;
 b=r/TyWaGRWalKnKTSiXN02ozJjUbzf3oCMQ5Ht7Ga97zFfrkg6H3LXOG1xe5LRhH9zj2NBcHN4v5O4cVBCgjorny2XnktNe/d3amRrggntlKaTql8bQow6cFrgNGxloU+vN1cHTmSd8w0y04Q6DHTAqlUQ6rgex2czeGvN4i0Uao=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C
Message-ID: <cb9479db-2f68-4b78-8bc2-922a59566464@amd.com>
Date: Thu, 11 Jan 2024 11:19:41 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: E820 memory allocation issue on Threadripper platforms
Content-Language: en-US
To: Jan Beulich <jbeulich@suse.com>, Patrick Plenefisch <simonpatp@gmail.com>
CC: <xen-devel@lists.xenproject.org>
References: <CAOCpoWdOH=xGxiQSC1c5Ueb1THxAjH4WiZbCZq-QT+d_KAk3SA@mail.gmail.com>
 <1708c3d7-662a-44bc-b9b3-4ab9f8642d7b@suse.com>
From: Xenia Ragiadakou <xenia.ragiadakou@amd.com>
In-Reply-To: <1708c3d7-662a-44bc-b9b3-4ab9f8642d7b@suse.com>
Content-Type: text/plain; charset="UTF-8"; format=flowed
Content-Transfer-Encoding: 8bit
X-Originating-IP: [10.180.168.240]
X-ClientProxiedBy: SATLEXMB03.amd.com (10.181.40.144) To SATLEXMB04.amd.com
 (10.181.40.145)
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CY4PEPF0000FCC3:EE_|SJ0PR12MB6966:EE_
X-MS-Office365-Filtering-Correlation-Id: 1150e1bd-8aa3-4bf3-6b1a-08dc128679c5
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam: BCL:0;
X-Microsoft-Antispam-Message-Info:
	8oEMTyOma3n9JZWjwqwINNsbAF8t/+EICV1H4rM6K6I6jQsCkOtjRwDrXxjzYRMR6k7vyZn589sq7bje/Jfg98ZGVAYDqsUYZ/qNRFS+f2GcZRPGznTleJbfd8K7O4Ge8HMU3QPVMV2XmSrgZMS11r7a3MrafAfVmKrcREUX4Vw6b4d0YnKq2sgBerFEwuuJDf29ox6qPDYJfdpjXCsLZI9awzmFBAlYRns8D0Y/pXZtcoi3/XeBul/oAu6iaBnIPHLGMV9cAe6Vqd2jOOVO/Sr+8M4GRWHkfQCZ655/pkR3LcBS/T9lswPYWKcjxrcyIJplo9W3QELe3fEXXnUndEYu+8rhqt0IRe1faYCHKXKxtOQ4RglyNTFsMSzGsphuZNH49Swn9z7Gv/VJHFaQScbFIzyjYLepEzlQDiKFBQLeBcYt32COJhDl/uypwMySjR6pIzR4SPgrgQpHh2VNIvC8GdTPDQn+MebcbAN/w5VuCcjo38B1/t82iLn3t9947ThLoubMhHOzoS+kEq5xB2D/Ee6Y03hzGE6QKT2cCU6JC+JIjVFc6WIwmHDJaZ8JXK2QSwktxyuCg1ns3ohnACUBF5PvrDe/nTQ50NJKEcFqxdVhnat8FkX9j2qRN4vCizVcnyH+HWuf2keVRFyBmLggENM2RVXxfJ+bnW285nc5YJeATtWOCZ/AgtlfH9DHPlSwIdjLp722yU3q4lK7EtOcA+5mUsR24J/wM3HBtFFR7TLaVVwNbOMJsIpbBY7zHfuouhctV2ratXPGMVGz+LETR4qMSWasNY8v1Z3Ri74=
X-Forefront-Antispam-Report:
	CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230031)(4636009)(396003)(376002)(136003)(346002)(39860400002)(230922051799003)(1800799012)(451199024)(82310400011)(64100799003)(186009)(46966006)(40470700004)(36840700001)(426003)(53546011)(336012)(6666004)(26005)(478600001)(2616005)(966005)(47076005)(36860700001)(16526019)(83380400001)(5660300002)(2906002)(16576012)(110136005)(4326008)(8936002)(70586007)(8676002)(44832011)(316002)(70206006)(36756003)(82740400003)(81166007)(86362001)(31696002)(356005)(41300700001)(31686004)(40460700003)(40480700001)(36900700001)(43740500002);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Jan 2024 09:19:55.6729
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 1150e1bd-8aa3-4bf3-6b1a-08dc128679c5
X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com]
X-MS-Exchange-CrossTenant-AuthSource:
	CY4PEPF0000FCC3.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ0PR12MB6966


On 11/1/24 10:37, Jan Beulich wrote:
> On 11.01.2024 03:29, Patrick Plenefisch wrote:
>> Hi,
>>
>> I ran into a memory allocation issue, I think. It is the same as
>> https://github.com/QubesOS/qubes-issues/issues/8791 and I saw at the end it
>> was recommended (by marmarek) that the issue reporter forward the issue to
>> this list. I searched the list, but as I didn't see it in the list already,
>> I'm doing that now.
>>
>> Hardware:
>> I have an AMD Threadripper 7960X on a ASRock TRX50 WS motherboard. The
>> Qubes reporter had a Threadripper 3970X on an ASUS Prime TRX40-Pro
>> Motherboard. I saw a 3rd issue report of a similar issue on another
>> Threadripper, so I think this may be Threadripper-specific.
>>
>> Setup:
>> The QuebesOS reporter was using Qubes Installer.
>> My install was that I had a fresh install of Debian 12 (no gui), and then
>> did `apt install xen-system-amd64` and rebooted.
>>
>> The issue:
>> Any boot of Xen on the hardware results in a halted machine. When
>> monitoring the logs with `vga=,keep`, we get:
>>
>> (XEN) *** Serial input to DOM0 (type 'CTRL-a' three times to switch input)
>> (XEN) Freed 644kB init memory
>> mapping kernel into physical memory
>> about to get started…
>> xen hypervisor allocated kernel memory conflicts with E820
> 
> So first of all (the title doesn't say it) this is a Linux Dom0 issue.
> Whether or not needing addressing in Xen is unknown at this point.
> 
>> (XEN) Hardware Dom0 halted: halting machine
>>
>> None of the settings I or the Qubes reporter have tried have been able to
>> get past this failure.
>>
>> I am happy to provide debugging support.
> 
> Well, the crucial piece of data initially is going to be: What's the
> E820 map Xen gets to see, what's the E820 map Dom0 gets to see, and
> what address range is the conflict detected for? The first question
> is possible to answer by supplying a serial log. The second question
> likely means adding some debugging code to either Xen or Linux. The
> answer to third question may be possible to infer from the other
> data, but would likely be better to obtain explicitly by adjusting /
> amending the message Linux emits.

We 've already hit similar issue because xen doesn't take into account 
the reserved memory regions when loading the dom0 kernel (even if it is 
relocatable). It can be worked around by changing accordingly 
CONFIG_PHYSICAL_START in kernel config.

Let me provide more details on how to get the info Jan requested:

1) in the xen cmdline add: e820-verbose=true console_to_ring

2) in the dom0 kernel cmdline add: earlyprintk=xen

3) change the xen log message emitted by the linux kernel to print the 
conflicting address, like below

diff --git a/arch/x86/xen/setup.c b/arch/x86/xen/setup.c
index cfa99e8f054b..ad88b700d58e 100644
--- a/arch/x86/xen/setup.c
+++ b/arch/x86/xen/setup.c
@@ -717,7 +717,7 @@ static void __init xen_reserve_xen_mfnlist(void)
         xen_relocate_p2m();
         memblock_phys_free(start, size);
}
-
+void xen_raw_printk(const char *fmt, ...);
/**
   * xen_memory_setup - Hook for machine specific memory setup.
   **/
@@ -853,7 +853,8 @@ char * __init xen_memory_setup(void)
          */
         if (xen_is_e820_reserved(__pa_symbol(_text),
                         __pa_symbol(__bss_stop) - __pa_symbol(_text))) {
-               xen_raw_console_write("Xen hypervisor allocated kernel 
memory conflicts with E820 map\n");
+               xen_raw_printk("Xen hypervisor allocated kernel memory 
conflicts with E820 map: %#lx - %#lx\n",
+                              __pa_symbol(_text), 
__pa_symbol(__bss_stop));
                 BUG();
         }

> 
> Jan
> 


From xen-devel-bounces@lists.xenproject.org Thu Jan 11 09:53:23 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 11 Jan 2024 09:53:23 +0000
Received: from list by lists.xenproject.org with outflank-mailman.666078.1036514 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNrkQ-0001Gd-Gh; Thu, 11 Jan 2024 09:53:14 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 666078.1036514; Thu, 11 Jan 2024 09:53:14 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNrkQ-0001GW-C7; Thu, 11 Jan 2024 09:53:14 +0000
Received: by outflank-mailman (input) for mailman id 666078;
 Thu, 11 Jan 2024 09:53:13 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=ESFV=IV=amd.com=Michal.Orzel@srs-se1.protection.inumbo.net>)
 id 1rNrkP-0001GQ-5P
 for xen-devel@lists.xenproject.org; Thu, 11 Jan 2024 09:53:13 +0000
Received: from NAM12-DM6-obe.outbound.protection.outlook.com
 (mail-dm6nam12on20601.outbound.protection.outlook.com
 [2a01:111:f403:2417::601])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 38b4876b-b067-11ee-9b0f-b553b5be7939;
 Thu, 11 Jan 2024 10:53:08 +0100 (CET)
Received: from BY3PR04CA0003.namprd04.prod.outlook.com (2603:10b6:a03:217::8)
 by SJ0PR12MB8614.namprd12.prod.outlook.com (2603:10b6:a03:47d::17)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7159.23; Thu, 11 Jan
 2024 09:53:02 +0000
Received: from CO1PEPF000044EE.namprd05.prod.outlook.com
 (2603:10b6:a03:217:cafe::c9) by BY3PR04CA0003.outlook.office365.com
 (2603:10b6:a03:217::8) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7181.18 via Frontend
 Transport; Thu, 11 Jan 2024 09:53:02 +0000
Received: from SATLEXMB04.amd.com (165.204.84.17) by
 CO1PEPF000044EE.mail.protection.outlook.com (10.167.241.68) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.7181.14 via Frontend Transport; Thu, 11 Jan 2024 09:53:02 +0000
Received: from SATLEXMB04.amd.com (10.181.40.145) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.34; Thu, 11 Jan
 2024 03:53:01 -0600
Received: from [10.252.147.188] (10.180.168.240) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server id 15.1.2507.34 via Frontend
 Transport; Thu, 11 Jan 2024 03:52:59 -0600
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 38b4876b-b067-11ee-9b0f-b553b5be7939
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=mEdJ+TdocBz5GmC9WwzNZ2Mi6Kp3ckRBlurLME5wXagFQf1gi+sb+HlW9qgtk7MuuuyfM3j+QhWlLLwQnRvegiuLrbfHdSdSWnsgzf+7Rz9rY4Qw3Hm3wwHm/EUlX8rCowh2rPa7QUGSMXnLqFcKiZimEBKSeGVYLSll6u/7wxjG6EdUrL0xq3l2WKYgCX1hr7JdpbIZ7oPnql12eAjG9EwQzK+Mep9b5x1+UXKaiLWn3jEGcrYmeE+XMV4v3SDrCEsz5sZQ3hrMc65JHE5sHFh7sYHJDSOo+u3V6uSMzK26MCqV9TwlPNPz+ckKwJDHrljjqwdMY7Uz48/sanx2wQ==
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=XVzDmR+MQOaefvyu+uituOnKQ428yCq7W71q6U5pxzg=;
 b=idtY+js4po6v6lT3YS8QaxDtLh73CB+hdtuEJJ865MQMxooxMKsB9Wz/RoQmz7QCmv6QeVVQ7pFZkdOcQtJJOkpKPa6tdpB1YuPVPvyahvdxY59wUMGlxfXYT9bh1Itc+r4uARtCPi6YppOpEtGEwauuGV4VP1HGocT26NH9Q78/jXmoHqPMbLOzED6KDQ9AGdJf20Gj3sM1UhZi9uf2OG/6lGipoHtNLbLzbHHYrkUtRu/kgvZR4u9s6oGTiUcnsmD8FoR+EdB4XE2Tlu2jCno6QsUFD9uJiSD5Lyvleh8akLtBsgXsHuMRFvwNNddbwLRUkzNQGPKoq0rld04t6A==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=suse.com 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)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=XVzDmR+MQOaefvyu+uituOnKQ428yCq7W71q6U5pxzg=;
 b=XsGYw4CjVR+zZE1xhlsj2te2PsLGVHCXOjG2mcbQtyX5g6vN3IurKFqwrJT8htT7n6ZSxrBP24cPk8fyx3tB5Xu1Ve9FbxVxq3Ff4Qh7PgLhQ7aZVF/jNBGtj+3/V/kWOCweqV8k3AGmMMMZS8gDaKxR8TA8dVDyvk4jBiHldqA=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C
Message-ID: <1ed510cd-d542-47c4-abac-45f395760c13@amd.com>
Date: Thu, 11 Jan 2024 10:52:59 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 0/8] limit passing around of cpu_user_regs
Content-Language: en-US
To: Jan Beulich <jbeulich@suse.com>, "xen-devel@lists.xenproject.org"
	<xen-devel@lists.xenproject.org>
CC: Andrew Cooper <andrew.cooper3@citrix.com>, George Dunlap
	<george.dunlap@citrix.com>, Julien Grall <julien@xen.org>, Stefano Stabellini
	<sstabellini@kernel.org>, Wei Liu <wl@xen.org>
References: <1ab231ec-5e3c-4662-8530-2213bc52bb7c@suse.com>
From: Michal Orzel <michal.orzel@amd.com>
In-Reply-To: <1ab231ec-5e3c-4662-8530-2213bc52bb7c@suse.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 7bit
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CO1PEPF000044EE:EE_|SJ0PR12MB8614:EE_
X-MS-Office365-Filtering-Correlation-Id: 16546d5f-7342-414c-8dc9-08dc128b19de
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam: BCL:0;
X-Microsoft-Antispam-Message-Info:
	60Mtv9wT5k3Ydsu4sNf60+I+oKDQUzQlbjIU15cpWmlI6dQsWKrgjyfDQ2nx9QVzWtC72fRV6goMWKaojGzzyyNNfMUUqH5GeWeor3W2TykRC9z5zI1S4B1zWB1Ws971lPF1Fbu0Taxqdv5pYDtgcQQGR4W+cSu3QnuVNKX/5XikR1bBjhl2EDENd2x+YT4FxVYZQXXdFyEB375PcGhYuSgh26HdTgjNtcsn+sUHhjqHjcayc37SDRlabPSAPiB/SyWoA2Ed0FKzFv+6P8Eu/gXEymBiPYFNpuDR+6vRvcpNtSDJ4sWdUhDNIYMKi3BVlEchB+HVyiNZ1D5iWQPyKrTzoRwtNaILQdkMr8uZr4QOMeTCavIpNF8ALAqACdtgyxbVcIrvfXDRYyxEj9jzx3d0P0k2QOA2idHCEKTAKTo7SqBYYT9N8JIdUMnTxZdq5UQ/ZlT79+bjaSCvg2sZ0eA/ze/ODSldTnSI37S55cvG0knzcHWiIpqlQUPISPlOaVmmCEe2y1OvSuWkTc5Zz1RC9rtOhkQPaeAHzZ5tH3I47JNl83RnLgvx7fCYYAT36d3ChuqCU9ohaETkfymqY2LQnGySi9+SKbT82z4FkXmPAyLCZD6nAHuJBZCYq+ESbBnD/nz1gy9ETphDuWp2jDeQRu2Hipq/uqVA/0eI7Glxaqp1AVKKAIecYtyviggGaH7vHPLewi3k+11QMlhqazVZO+0A0UnRoo9ALaxG1PyI2ORnWja1uRMoMLGBbyKQ6IcudBK0aNVd1oTeuCvZMuUCmE5DECYUvglh2KR0oACEaS5XyJPUqr6er8ve6zef
X-Forefront-Antispam-Report:
	CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230031)(4636009)(136003)(376002)(346002)(39860400002)(396003)(230922051799003)(451199024)(82310400011)(1800799012)(186009)(64100799003)(46966006)(36840700001)(40470700004)(36860700001)(2906002)(47076005)(2616005)(70206006)(70586007)(41300700001)(31696002)(40480700001)(86362001)(31686004)(40460700003)(356005)(81166007)(4326008)(36756003)(26005)(82740400003)(110136005)(316002)(54906003)(16576012)(478600001)(336012)(426003)(5660300002)(53546011)(44832011)(8676002)(8936002)(43740500002)(36900700001);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Jan 2024 09:53:02.1818
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 16546d5f-7342-414c-8dc9-08dc128b19de
X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com]
X-MS-Exchange-CrossTenant-AuthSource:
	CO1PEPF000044EE.namprd05.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ0PR12MB8614



On 11/01/2024 08:31, Jan Beulich wrote:
> 
> 
> Unlike (synchronous) exception handlers, interrupt handlers don't normally
> have a need to know the outer context's register state. Similarly, the vast
> majority of key handlers has no need for such.
> 
> 1: keyhandler: don't pass cpu_user_regs around
> 2: IRQ: generalize [gs]et_irq_regs()
> 3: serial: drop serial_rx_fn's regs parameter
> 4: PV-shim: drop pv_console_rx()'s regs parameter
> 5: serial: drop serial_[rt]x_interrupt()'s regs parameter
> 6: IRQ: drop regs parameter from handler functions
FYI, I did a build test on Arm and there were 2 build errors. Fix below:

diff --git a/xen/drivers/passthrough/arm/ipmmu-vmsa.c b/xen/drivers/passthrough/arm/ipmmu-vmsa.c
index b5c84c51a20a..da011413c5c0 100644
--- a/xen/drivers/passthrough/arm/ipmmu-vmsa.c
+++ b/xen/drivers/passthrough/arm/ipmmu-vmsa.c
@@ -642,7 +642,7 @@ static void ipmmu_domain_irq(struct ipmmu_vmsa_domain *domain)
                         domain->d, status, iova);
 }
 
-static void ipmmu_irq(int irq, void *dev, struct cpu_user_regs *regs)
+static void ipmmu_irq(int irq, void *dev)
 {
     struct ipmmu_vmsa_device *mmu = dev;
     unsigned int i;
diff --git a/xen/drivers/passthrough/arm/smmu-v3.c b/xen/drivers/passthrough/arm/smmu-v3.c
index f820c5500e08..c3ac6d17d1c8 100644
--- a/xen/drivers/passthrough/arm/smmu-v3.c
+++ b/xen/drivers/passthrough/arm/smmu-v3.c
@@ -929,7 +929,7 @@ static void arm_smmu_combined_irq_handler(int irq, void *dev)
 {
 	struct arm_smmu_device *smmu = dev;
 
-	arm_smmu_gerror_handler(irq, dev, regs);
+	arm_smmu_gerror_handler(irq, dev);
 
 	tasklet_schedule(&(smmu->combined_irq_tasklet));
 }


> 7: x86/vPMU: drop regs parameter from interrupt functions
> 8: x86/APIC: drop regs parameter from direct vector handler functions
> 
> Jan
> 

~Michal


From xen-devel-bounces@lists.xenproject.org Thu Jan 11 09:55:16 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 11 Jan 2024 09:55:16 +0000
Received: from list by lists.xenproject.org with outflank-mailman.666082.1036523 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNrmH-0001ob-QN; Thu, 11 Jan 2024 09:55:09 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 666082.1036523; Thu, 11 Jan 2024 09:55:09 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNrmH-0001oU-Na; Thu, 11 Jan 2024 09:55:09 +0000
Received: by outflank-mailman (input) for mailman id 666082;
 Thu, 11 Jan 2024 09:55:09 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=YFj+=IV=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rNrmH-0001oN-1R
 for xen-devel@lists.xenproject.org; Thu, 11 Jan 2024 09:55:09 +0000
Received: from mail-wm1-x336.google.com (mail-wm1-x336.google.com
 [2a00:1450:4864:20::336])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 7f69927e-b067-11ee-9b0f-b553b5be7939;
 Thu, 11 Jan 2024 10:55:06 +0100 (CET)
Received: by mail-wm1-x336.google.com with SMTP id
 5b1f17b1804b1-40e60e137aaso2663325e9.0
 for <xen-devel@lists.xenproject.org>; Thu, 11 Jan 2024 01:55:06 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 n15-20020a05600c3b8f00b0040d5a5c523csm5200169wms.1.2024.01.11.01.55.05
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 11 Jan 2024 01:55:05 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 7f69927e-b067-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1704966905; x=1705571705; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=XrpN/KAHB0R41KfIeM7omrL2AebN1wVsvQ0/RgFsVoc=;
        b=ZngWCgmKuiu7OArfd1NXATZ0EKrZXILMmBmc5cbFHKBBwOggjjiCkcsF0PdHEmxDGA
         oGmnSk2lEVkbDsi2Xl/FDZgpamAm4JCb1MdJvxFwrMHJAXM1XZtQ1KSV+ju/HRDw8LW5
         t9xewx3eVUgUsaSQu69i67x67BK7b1QFGVxROvqQiOBREzFvMYAr5R/fTMjmKcxpBQKz
         mlK7OkUeo4KkClKAxHymgPh6HXORyRWFBri33VZPnAdEBfpGZKsKZvnARIkz/c5ag3BO
         lozYoTtDPvGgh/GdLjtl/PAxgpuNQqOMOdEWZD9Np95zpIVOl6IouQIJoe9Jvj9SDfZQ
         M3vw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704966905; x=1705571705;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=XrpN/KAHB0R41KfIeM7omrL2AebN1wVsvQ0/RgFsVoc=;
        b=jYENK4uA1cWsfJqf+5S50Ilp8/YC6IGWf1UCzPVyG2XByMPoAFmD3n1suY4xIm+vDr
         HXrU7uUIMyhcMKKsKqjgCszh5qIwVNOXUFEc0/jTh1oxm6P5MTsmfqubJp9DRsWq+HGj
         BroIrbezVnDlhzPMlNk+b5F1KdPZqoeSkcgSE/bqhKYtZftAWFwNemOrJh/3ze8Vye3A
         yFPen1YYmQ8iN8FBI6byP3y78h4P0+1z8QuwxE/20408+xCQDwAnmjeVrUyAL5oYefn3
         PGmKq6OAngUfm/s1lJ7rxL06Bhx0gcw0jmKqPaaGQbIqLlEGBH3MKFjrnIci2bQWpLoM
         QuWA==
X-Gm-Message-State: AOJu0YzSJbKFVdPCVtSk9lNTM74Wmu6wa5K8+Qibgw4ILkIEj2+J8w2R
	VwDMtUOleSh75w6MuwbLwg3+DFz+OLMI
X-Google-Smtp-Source: AGHT+IGkpRUmgdwQ6Sxj36iJ4Wq0/JF5MvEdLXWnzl2TCoDqbcdr4YccLp1HDPWHg8374fKAAvmtsg==
X-Received: by 2002:a7b:cb90:0:b0:40e:5d36:8bb9 with SMTP id m16-20020a7bcb90000000b0040e5d368bb9mr212983wmi.32.1704966905697;
        Thu, 11 Jan 2024 01:55:05 -0800 (PST)
Message-ID: <7b66d740-f0cf-447c-9024-843f128b93f9@suse.com>
Date: Thu, 11 Jan 2024 10:55:04 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 0/8] limit passing around of cpu_user_regs
Content-Language: en-US
To: Michal Orzel <michal.orzel@amd.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 George Dunlap <george.dunlap@citrix.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
References: <1ab231ec-5e3c-4662-8530-2213bc52bb7c@suse.com>
 <1ed510cd-d542-47c4-abac-45f395760c13@amd.com>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <1ed510cd-d542-47c4-abac-45f395760c13@amd.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 11.01.2024 10:52, Michal Orzel wrote:
> On 11/01/2024 08:31, Jan Beulich wrote:
>> Unlike (synchronous) exception handlers, interrupt handlers don't normally
>> have a need to know the outer context's register state. Similarly, the vast
>> majority of key handlers has no need for such.
>>
>> 1: keyhandler: don't pass cpu_user_regs around
>> 2: IRQ: generalize [gs]et_irq_regs()
>> 3: serial: drop serial_rx_fn's regs parameter
>> 4: PV-shim: drop pv_console_rx()'s regs parameter
>> 5: serial: drop serial_[rt]x_interrupt()'s regs parameter
>> 6: IRQ: drop regs parameter from handler functions
> FYI, I did a build test on Arm and there were 2 build errors. Fix below:

Thanks for spotting. First of all I'll want to figure out why I didn't
notice these; I certainly did do several Arm text builds.

Jan

> diff --git a/xen/drivers/passthrough/arm/ipmmu-vmsa.c b/xen/drivers/passthrough/arm/ipmmu-vmsa.c
> index b5c84c51a20a..da011413c5c0 100644
> --- a/xen/drivers/passthrough/arm/ipmmu-vmsa.c
> +++ b/xen/drivers/passthrough/arm/ipmmu-vmsa.c
> @@ -642,7 +642,7 @@ static void ipmmu_domain_irq(struct ipmmu_vmsa_domain *domain)
>                          domain->d, status, iova);
>  }
>  
> -static void ipmmu_irq(int irq, void *dev, struct cpu_user_regs *regs)
> +static void ipmmu_irq(int irq, void *dev)
>  {
>      struct ipmmu_vmsa_device *mmu = dev;
>      unsigned int i;
> diff --git a/xen/drivers/passthrough/arm/smmu-v3.c b/xen/drivers/passthrough/arm/smmu-v3.c
> index f820c5500e08..c3ac6d17d1c8 100644
> --- a/xen/drivers/passthrough/arm/smmu-v3.c
> +++ b/xen/drivers/passthrough/arm/smmu-v3.c
> @@ -929,7 +929,7 @@ static void arm_smmu_combined_irq_handler(int irq, void *dev)
>  {
>  	struct arm_smmu_device *smmu = dev;
>  
> -	arm_smmu_gerror_handler(irq, dev, regs);
> +	arm_smmu_gerror_handler(irq, dev);
>  
>  	tasklet_schedule(&(smmu->combined_irq_tasklet));
>  }
> 
> 
>> 7: x86/vPMU: drop regs parameter from interrupt functions
>> 8: x86/APIC: drop regs parameter from direct vector handler functions
>>
>> Jan
>>
> 
> ~Michal



From xen-devel-bounces@lists.xenproject.org Thu Jan 11 10:00:56 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 11 Jan 2024 10:00:56 +0000
Received: from list by lists.xenproject.org with outflank-mailman.666090.1036532 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNrrX-0004MX-Fr; Thu, 11 Jan 2024 10:00:35 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 666090.1036532; Thu, 11 Jan 2024 10:00:35 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNrrX-0004MQ-DK; Thu, 11 Jan 2024 10:00:35 +0000
Received: by outflank-mailman (input) for mailman id 666090;
 Thu, 11 Jan 2024 10:00:34 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=YFj+=IV=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rNrrW-0004MI-AA
 for xen-devel@lists.xenproject.org; Thu, 11 Jan 2024 10:00:34 +0000
Received: from mail-lj1-x232.google.com (mail-lj1-x232.google.com
 [2a00:1450:4864:20::232])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 41c8c540-b068-11ee-9b0f-b553b5be7939;
 Thu, 11 Jan 2024 11:00:32 +0100 (CET)
Received: by mail-lj1-x232.google.com with SMTP id
 38308e7fff4ca-2cca5d81826so68270691fa.2
 for <xen-devel@lists.xenproject.org>; Thu, 11 Jan 2024 02:00:32 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 ck13-20020a0566383f0d00b0046e36644c0asm219131jab.142.2024.01.11.02.00.30
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 11 Jan 2024 02:00:31 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 41c8c540-b068-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1704967232; x=1705572032; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=/vPNBHdZ/MedErYugSGqIPruilwNNZ520xOVlh57NwI=;
        b=YgzL7TQkDWTNk907ubK7XW+9/axdcGahohmdQSzM/PF6TdvVSH5I348sUS9i5DxPg1
         4t5aE4Nnvps6FeXw0TeOxXVMESJ2e5yapP2tGgGFJykitCyomB+qE8ntIWFW0fk0VaO3
         do4PuGeOIWvi0y8v1ujXanArPPQHcyaIuD9yaqcmDRCnibuYS0w5Vq5YxB/TLPRuVvSS
         ILLtFqUIC1hmSYPUC2RgOfyU3trIav+ac3UKUSuEE/NWaMyht3cZv8DfEeBHLHLwAqy8
         /EzHz71XAxCXD78LCggop6pJVtgzP29QH0arG8gAJX5jR+9Fsxq5g3vL9BwNtvx6uDZH
         J6kA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704967232; x=1705572032;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=/vPNBHdZ/MedErYugSGqIPruilwNNZ520xOVlh57NwI=;
        b=T1FEJGPMGQ7nOd6jgZEh2g7HOCR7DnkZyYt+FBBrkPm4oIbKGuN+tWBwcQYwMDqibR
         pr/JY4G2hdL56DyRzJpe6SLgPPqwvDUnMNFcqSYeYtvjEvntSiDcMVviOeRfyGo44swi
         /fVlDZpDiAv/7G/1BsMrP1KEPchVh7VXefEB+UOUGJrjiuyBTcmo9YOueb2eBSzh0dcF
         hSJiGso3jYHIjMZwciVDrcWLogmf9pn5CIw5NZ+r1Ojgfn4khlNEmSZpr3ZRizUj+aaW
         93RRqKkhtiI33Y9FDZSXVZa8em4LpYqXESmSGc4T5967y/GKq23uBJwEhwSnCOIfrZLa
         KmqA==
X-Gm-Message-State: AOJu0YwZpaPpwHrkVbQ1URnuG/1pttglf7WCXhJx4He2z8Md9u3fUEiT
	vF0krZYXg0D9I/54CXWIRDGZ6L5AfHPm
X-Google-Smtp-Source: AGHT+IEIxzC1pJO5vsBoy6g3AFuPoRWK27SoLeqgR/kDUboHms+3J5yuvyITsF/oE59ZIxJaTr6e6A==
X-Received: by 2002:a2e:b743:0:b0:2cc:5e44:a8ee with SMTP id k3-20020a2eb743000000b002cc5e44a8eemr231896ljo.105.1704967231729;
        Thu, 11 Jan 2024 02:00:31 -0800 (PST)
Message-ID: <d09dfd7c-a266-4c3b-ade6-c537b30b0a1d@suse.com>
Date: Thu, 11 Jan 2024 11:00:28 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2] x86/intel: ensure Global Performance Counter Control
 is setup correctly
Content-Language: en-US
To: Roger Pau Monne <roger.pau@citrix.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, Wei Liu <wl@xen.org>,
 xen-devel@lists.xenproject.org
References: <20240111090821.67594-1-roger.pau@citrix.com>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <20240111090821.67594-1-roger.pau@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 11.01.2024 10:08, Roger Pau Monne wrote:
> When Architectural Performance Monitoring is available, the PERF_GLOBAL_CTRL
> MSR contains per-counter enable bits that is ANDed with the enable bit in the
> counter EVNTSEL MSR in order for a PMC counter to be enabled.
> 
> So far the watchdog code seems to have relied on the PERF_GLOBAL_CTRL enable
> bits being set by default, but at least on some Intel Sapphire and Emerald
> Rapids this is no longer the case, and Xen reports:
> 
> Testing NMI watchdog on all CPUs: 0 40 stuck
> 
> The first CPU on each package is started with PERF_GLOBAL_CTRL zeroed, so PMC0
> doesn't start counting when the enable bit in EVNTSEL0 is set, due to the
> relevant enable bit in PERF_GLOBAL_CTRL not being set.
> 
> Check and adjust PERF_GLOBAL_CTRL during CPU initialization so that all the
> general-purpose PMCs are enabled.  Doing so brings the state of the package-BSP
> PERF_GLOBAL_CTRL in line with the rest of the CPUs on the system.
> 
> Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
> ---
> Changes since v1:
>  - Do the adjustment of PERF_GLOBAL_CTRL even if the watchdog is not used, and
>    enable all counters.
> ---
> Unsure whether printing a warning if the value of PERF_GLOBAL_CTRL is not
> correct is of any value, hence I haven't added it.
> ---
>  xen/arch/x86/cpu/intel.c | 18 +++++++++++++++++-
>  1 file changed, 17 insertions(+), 1 deletion(-)
> 
> diff --git a/xen/arch/x86/cpu/intel.c b/xen/arch/x86/cpu/intel.c
> index dfee64689ffe..40d3eb0e18a7 100644
> --- a/xen/arch/x86/cpu/intel.c
> +++ b/xen/arch/x86/cpu/intel.c
> @@ -533,9 +533,25 @@ static void cf_check init_intel(struct cpuinfo_x86 *c)
>  	init_intel_cacheinfo(c);
>  	if (c->cpuid_level > 9) {
>  		unsigned eax = cpuid_eax(10);
> +		unsigned int cnt = (uint8_t)(eax >> 8);

(Not just) since ./CODING_STYLE wants us to avoid fixed width types where
possible, personally I'd prefer "& 0xff" here.

>  		/* Check for version and the number of counters */
> -		if ((eax & 0xff) && (((eax>>8) & 0xff) > 1))
> +		if ((eax & 0xff) && (cnt > 1) && (cnt <= 32)) {
> +			uint64_t global_ctrl;
> +			unsigned int cnt_mask = (1UL << cnt) - 1;
> +
> +			/*
> +			 * On (some?) Sapphire/Emerald Rapids platforms each
> +			 * package-BSP starts with all the enable bits for the
> +			 * general-purpose PMCs cleared.  Adjust so counters
> +			 * can be enabled from EVNTSEL.
> +			 */
> +			rdmsrl(MSR_CORE_PERF_GLOBAL_CTRL, global_ctrl);
> +			if ((global_ctrl & cnt_mask) != cnt_mask)
> +				wrmsrl(MSR_CORE_PERF_GLOBAL_CTRL,
> +				       global_ctrl | cnt_mask);

Should there perhaps be a log message?

Jan

>  			__set_bit(X86_FEATURE_ARCH_PERFMON, c->x86_capability);
> +		}
>  	}
>  
>  	if ( !cpu_has(c, X86_FEATURE_XTOPOLOGY) )



From xen-devel-bounces@lists.xenproject.org Thu Jan 11 10:10:25 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 11 Jan 2024 10:10:25 +0000
Received: from list by lists.xenproject.org with outflank-mailman.666095.1036543 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNs0x-0007MV-CF; Thu, 11 Jan 2024 10:10:19 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 666095.1036543; Thu, 11 Jan 2024 10:10:19 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNs0x-0007MO-9Q; Thu, 11 Jan 2024 10:10:19 +0000
Received: by outflank-mailman (input) for mailman id 666095;
 Thu, 11 Jan 2024 10:10:17 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=nyxv=IV=minervasys.tech=carlo.nonato@srs-se1.protection.inumbo.net>)
 id 1rNs0v-0007MI-DZ
 for xen-devel@lists.xenproject.org; Thu, 11 Jan 2024 10:10:17 +0000
Received: from mail-ej1-x62f.google.com (mail-ej1-x62f.google.com
 [2a00:1450:4864:20::62f])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 9cf3c46c-b069-11ee-9b0f-b553b5be7939;
 Thu, 11 Jan 2024 11:10:14 +0100 (CET)
Received: by mail-ej1-x62f.google.com with SMTP id
 a640c23a62f3a-a2814fa68eeso425598466b.1
 for <xen-devel@lists.xenproject.org>; Thu, 11 Jan 2024 02:10:14 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 9cf3c46c-b069-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=minervasys-tech.20230601.gappssmtp.com; s=20230601; t=1704967814; x=1705572614; darn=lists.xenproject.org;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:from:to:cc:subject:date
         :message-id:reply-to;
        bh=i4QlDijI+0BlR7vvZB2GluE5/SYVSsNwQI26CiTSdEw=;
        b=mwgY0e1c9XuG7+Ebv3yb9dWIC+u1FX4eOuiAx52YqCo5Yua7j+XV7jSEESLdfwo37X
         E4vuDvjkoCgGnrRZqfp+J/MFzsUVzUN8427h9FgCgfhFZCP0YoEHg01IZ/ztxwVXy6VU
         JMkneWPu/TtuKksD9VeGhdlZco1OOOBf2Mkz6j5jhzHvquaQrW+lkXWII+/PGX1FS7Pg
         5xEYsR4wuHt4NYBaA1qlfTACqDpDtVbAp7HQPf/xWNrZqCB8QcYq6sFbGdFdKC3e/kvr
         ZU5VBdB49bUD6C3dhQOl0E84OHEnqkeGiMEUmmtiBw49NPO7aWvF6T8nkMQ5p/Xl7cmC
         T6xg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704967814; x=1705572614;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to;
        bh=i4QlDijI+0BlR7vvZB2GluE5/SYVSsNwQI26CiTSdEw=;
        b=BmqwMjsYOR4nkZNHdSJMQWdAm2cL51UASB5635y+XT2/fCQc4Nf1DtfRU3/+FhBk5T
         CUZjmU8ODkFGyZJwuznuSFNmoX/6QIJt+qzoJMDzGO/QMXaCvF6hhB6Rsm8gki7xJLCj
         6/emtMJc1CC24RKfeUCQWbyog+XtcMkt8S4jQtvnha2HPD1cx3zFTGC+shG9xK1tSBxL
         kg/j29I6YwJ7F+LjzZ8saVpsSrIH4rBxgP3uwZnsR0v18mA7WN4IEhYkZEjVZLVARRNC
         1zd5gyjIfYXSGGbQG5qlSF/pSvMyp9WjZRozKTdej0ObEObonbknqxHZaJT09aHxHITT
         vtow==
X-Gm-Message-State: AOJu0YxYlOoMGOhLSzriMvGppQUlrt1zYp0sj766DEX6A+/OePtWQC3b
	NjEahyvKGUWeJir1ZHbyAgIkH2Q+nQPMQ1UOun+N5N/yIgyZmA==
X-Google-Smtp-Source: AGHT+IG3wTPwDPvhZDzt2noVhl3WTd6T5eIh2H8ZMxJ1o4UvAJ9wK9gXq+ovsmFhNekDI9ddbkX55felhBA/eMMtedQ=
X-Received: by 2002:a17:907:1c03:b0:a2a:7a55:5dd with SMTP id
 nc3-20020a1709071c0300b00a2a7a5505ddmr810424ejc.16.1704967814213; Thu, 11 Jan
 2024 02:10:14 -0800 (PST)
MIME-Version: 1.0
References: <20240102095138.17933-1-carlo.nonato@minervasys.tech>
 <20240102095138.17933-2-carlo.nonato@minervasys.tech> <feb5542a-081a-4677-b569-5d4218eb794d@suse.com>
In-Reply-To: <feb5542a-081a-4677-b569-5d4218eb794d@suse.com>
From: Carlo Nonato <carlo.nonato@minervasys.tech>
Date: Thu, 11 Jan 2024 11:10:03 +0100
Message-ID: <CAG+AhRWkasky8hrNBrtXsmmnmsJjf+-Nj3Nr7Nu4LfXvFYvwvQ@mail.gmail.com>
Subject: Re: [PATCH v5 01/13] xen/common: add cache coloring common code
To: Jan Beulich <jbeulich@suse.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, George Dunlap <george.dunlap@citrix.com>, 
	Julien Grall <julien@xen.org>, Stefano Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>, 
	Marco Solieri <marco.solieri@minervasys.tech>, xen-devel@lists.xenproject.org
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

Hi Jan,

On Mon, Jan 8, 2024 at 5:53=E2=80=AFPM Jan Beulich <jbeulich@suse.com> wrot=
e:
>
> On 02.01.2024 10:51, Carlo Nonato wrote:
> > This commit adds the Last Level Cache (LLC) coloring common header, Kco=
nfig
> > options and functions. Since this is an arch specific feature, actual
> > implementation is postponed to later patches and Kconfig options are pl=
aced
> > under xen/arch.
>
> As a general remark / nit: "This commit", "this patch", or alike aren't
> well suited for descriptions.
>
> > --- a/xen/arch/Kconfig
> > +++ b/xen/arch/Kconfig
> > @@ -31,3 +31,19 @@ config NR_NUMA_NODES
> >         associated with multiple-nodes management. It is the upper boun=
d of
> >         the number of NUMA nodes that the scheduler, memory allocation =
and
> >         other NUMA-aware components can handle.
> > +
> > +config LLC_COLORING
> > +     bool "Last Level Cache (LLC) coloring" if EXPERT
> > +     depends on HAS_LLC_COLORING
> > +
> > +config NR_LLC_COLORS
> > +     int "Maximum number of LLC colors"
> > +     default 128
>
> What if I set to value to 0? Or to an unreasonably large one? You don't
> bound the value range at all.

I can reintroduce the range (it was there in previous versions). I just don=
't
know what numbers to put.
range 2 1024 seems reasonable since having 1 color only actually lowers
performances because of the obvious sharing of resources. 1024 are the colo=
rs
that can fit into a standard 4KiB page. It's big enough for currently
supported hardware that normally has 16 or 32 colors.

> > --- a/xen/common/domain.c
> > +++ b/xen/common/domain.c
> > @@ -7,6 +7,7 @@
> >  #include <xen/compat.h>
> >  #include <xen/init.h>
> >  #include <xen/lib.h>
> > +#include <xen/llc-coloring.h>
> >  #include <xen/ctype.h>
> >  #include <xen/err.h>
> >  #include <xen/param.h>
> > @@ -1144,6 +1145,9 @@ static void cf_check complete_domain_destroy(stru=
ct rcu_head *head)
> >      struct vcpu *v;
> >      int i;
> >
> > +    if ( is_domain_llc_colored(d) )
> > +        domain_llc_coloring_free(d);
>
> Would be nice if the freeing function could be called unconditionally,
> being a no-op for non-colored domains.

Ok.

> Further - is it really necessary to do this freeing this late?

No, I can move it in domain_destroy().

> > --- a/xen/common/keyhandler.c
> > +++ b/xen/common/keyhandler.c
> > @@ -6,6 +6,7 @@
> >  #include <xen/debugger.h>
> >  #include <xen/delay.h>
> >  #include <xen/keyhandler.h>
> > +#include <xen/llc-coloring.h>
> >  #include <xen/param.h>
> >  #include <xen/shutdown.h>
> >  #include <xen/event.h>
> > @@ -307,6 +308,9 @@ static void cf_check dump_domains(unsigned char key=
)
> >
> >          arch_dump_domain_info(d);
> >
> > +        if ( is_domain_llc_colored(d) )
> > +            domain_dump_llc_colors(d);
>
> I'm less concerned of the conditional here, but along the lines of the
> comment above, it could of course again be the function that simply is
> a no-op for non-colored domains.

Ok.

> > --- /dev/null
> > +++ b/xen/include/xen/llc-coloring.h
> > @@ -0,0 +1,46 @@
> > +/* SPDX-License-Identifier: GPL-2.0 */
> > +/*
> > + * Last Level Cache (LLC) coloring common header
> > + *
> > + * Copyright (C) 2022 Xilinx Inc.
> > + *
> > + * Authors:
> > + *    Carlo Nonato <carlo.nonato@minervasys.tech>
> > + */
> > +#ifndef __COLORING_H__
> > +#define __COLORING_H__
> > +
> > +#include <xen/sched.h>
> > +#include <public/domctl.h>
> > +
> > +#ifdef CONFIG_HAS_LLC_COLORING
>
> Why does this matter here? IOW why ...
>
> > +#include <asm/llc-coloring.h>
> > +
> > +#ifdef CONFIG_LLC_COLORING
>
> ... is it not just this which is checked?
>
> > +extern bool llc_coloring_enabled;
> > +#define llc_coloring_enabled (llc_coloring_enabled)
> > +#endif
> > +
> > +#endif
> > +
> > +#ifndef llc_coloring_enabled
> > +#define llc_coloring_enabled (false)
> > +#endif
>
> +1 to the question Julien has raised here.

Yes this whole block can be better structured.

> > --- a/xen/include/xen/sched.h
> > +++ b/xen/include/xen/sched.h
> > @@ -626,6 +626,11 @@ struct domain
> >
> >      /* Holding CDF_* constant. Internal flags for domain creation. */
> >      unsigned int cdf;
> > +
> > +#ifdef CONFIG_LLC_COLORING
> > +    unsigned int *llc_colors;
>
> Can the color values change over the lifetime of a domain? If not,
> it may be prudent to have this be pointer-to-const.

Can I free a pointer-to-const array?

> Jan
>
> > +    unsigned int num_llc_colors;
> > +#endif
> >  };
> >
> >  static inline struct page_list_head *page_to_list(
>

Thanks.


From xen-devel-bounces@lists.xenproject.org Thu Jan 11 10:11:13 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 11 Jan 2024 10:11:13 +0000
Received: from list by lists.xenproject.org with outflank-mailman.666099.1036552 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNs1p-0007xs-K6; Thu, 11 Jan 2024 10:11:13 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 666099.1036552; Thu, 11 Jan 2024 10:11:13 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNs1p-0007xl-HY; Thu, 11 Jan 2024 10:11:13 +0000
Received: by outflank-mailman (input) for mailman id 666099;
 Thu, 11 Jan 2024 10:11:12 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=YFj+=IV=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rNs1o-0007xX-J5
 for xen-devel@lists.xenproject.org; Thu, 11 Jan 2024 10:11:12 +0000
Received: from mail-lj1-x236.google.com (mail-lj1-x236.google.com
 [2a00:1450:4864:20::236])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id be2021cd-b069-11ee-9b0f-b553b5be7939;
 Thu, 11 Jan 2024 11:11:10 +0100 (CET)
Received: by mail-lj1-x236.google.com with SMTP id
 38308e7fff4ca-2ccae380df2so55412021fa.1
 for <xen-devel@lists.xenproject.org>; Thu, 11 Jan 2024 02:11:10 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 ck12-20020a056e02370c00b003608a649906sm200808ilb.43.2024.01.11.02.11.08
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 11 Jan 2024 02:11:09 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: be2021cd-b069-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1704967870; x=1705572670; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=axkVMIwlcIEAxN9KjQ82rb+Wu0H2tBpV5wycGiRKvnw=;
        b=BPzpGWUGE7OUPBs05b3XfWSzCxNlg5QhSJoIlCx9RazSM7oA6pceYJuhtDc8+akUTG
         iUBfEMAHNl9Eqgw3goWy1YZ05aDrpOiuEuVo36wdu0aJq4z4E/SQWcMu/ukbkZeC9fwC
         XVE4JytmRDJZ3kKnLv01pULlgUDhAbVcJACk6atDn9b0KThKlaNhMIeIuEFMY6fPNq/e
         QRMp6f6kKcPMC2+Il9mSGzqUdFLPYoV7GIBVVR7Vh3xnW5+uao99A6TwjmtsNJ1HJA+y
         iJzV9b6TBvLi8woxDnMsWf1sCAsnvlrdixLXxEdor6S/tuc4xJJ7CAgQ1G9iwfNQkHPm
         QL5g==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704967870; x=1705572670;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=axkVMIwlcIEAxN9KjQ82rb+Wu0H2tBpV5wycGiRKvnw=;
        b=sitTYvdrrfrKzm+rAD7mRKbdMQkxNyx3z/FromFFM4cKr5ruX86+ToD+0+fxMubE2X
         E6kd8NY93rn+B8mmD+p4Q2Rwy33RJjI4I3bqOCJ7G6zvc5DYy4bHp3/ucYAxaBIsIXkd
         N7zPut2CJWEqvTxlE4KhcmUuZqudRLpZGMIEVYroIpjibF45UO4x+i2yGGgMYXq6kDtE
         htSo9Eg2wjLsYoQ5hGSarcvy1yIgG/t9ccQTN2hL6NnGYHHyf+gZ/9Lt55eaTGSMl2Tc
         dxQztx/Be32h0msSDWVQSC6JzslZGtucUKsrUosBOOBiAOndxMAEr7M7t6ZTTfAafDjJ
         0KjQ==
X-Gm-Message-State: AOJu0Yx8m0eMa0n3av1TS3zXLUR5h60c7B7dXZu/YigZU1syxvUibJKe
	SiZP9/tduJzY3DxOlbmszVUx6YPxaPdQ
X-Google-Smtp-Source: AGHT+IFXEj2AyW1Cbxpkt1VA1WI1r7z9eUBJHI4j6cK/G2ELw+3d/TakyETGzh6tlu2xCUSoIbKHtg==
X-Received: by 2002:a2e:8782:0:b0:2cd:54d:482a with SMTP id n2-20020a2e8782000000b002cd054d482amr247468lji.59.1704967869863;
        Thu, 11 Jan 2024 02:11:09 -0800 (PST)
Message-ID: <3428928a-42d0-4e4b-9607-c184968c309d@suse.com>
Date: Thu, 11 Jan 2024 11:11:07 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2] x86/intel: ensure Global Performance Counter Control
 is setup correctly
Content-Language: en-US
To: Roger Pau Monne <roger.pau@citrix.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, Wei Liu <wl@xen.org>,
 xen-devel@lists.xenproject.org
References: <20240111090821.67594-1-roger.pau@citrix.com>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <20240111090821.67594-1-roger.pau@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 11.01.2024 10:08, Roger Pau Monne wrote:
> When Architectural Performance Monitoring is available, the PERF_GLOBAL_CTRL
> MSR contains per-counter enable bits that is ANDed with the enable bit in the
> counter EVNTSEL MSR in order for a PMC counter to be enabled.
> 
> So far the watchdog code seems to have relied on the PERF_GLOBAL_CTRL enable
> bits being set by default, but at least on some Intel Sapphire and Emerald
> Rapids this is no longer the case, and Xen reports:
> 
> Testing NMI watchdog on all CPUs: 0 40 stuck
> 
> The first CPU on each package is started with PERF_GLOBAL_CTRL zeroed, so PMC0
> doesn't start counting when the enable bit in EVNTSEL0 is set, due to the
> relevant enable bit in PERF_GLOBAL_CTRL not being set.
> 
> Check and adjust PERF_GLOBAL_CTRL during CPU initialization so that all the
> general-purpose PMCs are enabled.  Doing so brings the state of the package-BSP
> PERF_GLOBAL_CTRL in line with the rest of the CPUs on the system.
> 
> Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
> ---
> Changes since v1:
>  - Do the adjustment of PERF_GLOBAL_CTRL even if the watchdog is not used, and
>    enable all counters.
> ---
> Unsure whether printing a warning if the value of PERF_GLOBAL_CTRL is not
> correct is of any value, hence I haven't added it.
> ---
>  xen/arch/x86/cpu/intel.c | 18 +++++++++++++++++-
>  1 file changed, 17 insertions(+), 1 deletion(-)
> 
> diff --git a/xen/arch/x86/cpu/intel.c b/xen/arch/x86/cpu/intel.c
> index dfee64689ffe..40d3eb0e18a7 100644
> --- a/xen/arch/x86/cpu/intel.c
> +++ b/xen/arch/x86/cpu/intel.c
> @@ -533,9 +533,25 @@ static void cf_check init_intel(struct cpuinfo_x86 *c)
>  	init_intel_cacheinfo(c);
>  	if (c->cpuid_level > 9) {
>  		unsigned eax = cpuid_eax(10);
> +		unsigned int cnt = (uint8_t)(eax >> 8);
> +
>  		/* Check for version and the number of counters */
> -		if ((eax & 0xff) && (((eax>>8) & 0xff) > 1))
> +		if ((eax & 0xff) && (cnt > 1) && (cnt <= 32)) {

I may not have looked closely enough, but I didn't find the limit of
32 being stated anywhere.

> +			uint64_t global_ctrl;
> +			unsigned int cnt_mask = (1UL << cnt) - 1;

Bits 2 + 4 * n have an additional qualification as per SDM vol 4.

Jan

> +			/*
> +			 * On (some?) Sapphire/Emerald Rapids platforms each
> +			 * package-BSP starts with all the enable bits for the
> +			 * general-purpose PMCs cleared.  Adjust so counters
> +			 * can be enabled from EVNTSEL.
> +			 */
> +			rdmsrl(MSR_CORE_PERF_GLOBAL_CTRL, global_ctrl);
> +			if ((global_ctrl & cnt_mask) != cnt_mask)
> +				wrmsrl(MSR_CORE_PERF_GLOBAL_CTRL,
> +				       global_ctrl | cnt_mask);
>  			__set_bit(X86_FEATURE_ARCH_PERFMON, c->x86_capability);
> +		}
>  	}
>  
>  	if ( !cpu_has(c, X86_FEATURE_XTOPOLOGY) )



From xen-devel-bounces@lists.xenproject.org Thu Jan 11 10:13:36 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 11 Jan 2024 10:13:36 +0000
Received: from list by lists.xenproject.org with outflank-mailman.666105.1036563 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNs47-0000mI-0J; Thu, 11 Jan 2024 10:13:35 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 666105.1036563; Thu, 11 Jan 2024 10:13:34 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNs46-0000mB-TW; Thu, 11 Jan 2024 10:13:34 +0000
Received: by outflank-mailman (input) for mailman id 666105;
 Thu, 11 Jan 2024 10:13:33 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=CYFo=IV=suse.com=jgross@srs-se1.protection.inumbo.net>)
 id 1rNs44-0000m5-V4
 for xen-devel@lists.xenproject.org; Thu, 11 Jan 2024 10:13:33 +0000
Received: from smtp-out1.suse.de (smtp-out1.suse.de [195.135.223.130])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 11adec6a-b06a-11ee-9b0f-b553b5be7939;
 Thu, 11 Jan 2024 11:13:30 +0100 (CET)
Received: from imap1.dmz-prg2.suse.org (imap1.dmz-prg2.suse.org
 [IPv6:2a07:de40:b281:104:10:150:64:97])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
 (No client certificate requested)
 by smtp-out1.suse.de (Postfix) with ESMTPS id AEC0121E8F;
 Thu, 11 Jan 2024 10:13:15 +0000 (UTC)
Received: from imap1.dmz-prg2.suse.org (localhost [127.0.0.1])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
 (No client certificate requested)
 by imap1.dmz-prg2.suse.org (Postfix) with ESMTPS id 6405113635;
 Thu, 11 Jan 2024 10:11:59 +0000 (UTC)
Received: from dovecot-director2.suse.de ([10.150.64.162])
 by imap1.dmz-prg2.suse.org with ESMTPSA id hCHcFu++n2USBQAAD6G6ig
 (envelope-from <jgross@suse.com>); Thu, 11 Jan 2024 10:11:59 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 11adec6a-b06a-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1704967919; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:content-type:content-type:
	 in-reply-to:in-reply-to:references:references:autocrypt:autocrypt;
	bh=3BjA1LrwxV5AIWA3gA/Fe5aR0VRzQGP7vcxWnSASqJw=;
	b=URiEAx34QYm55HI0J5jGWyZef3vGBBqyrF/TVIVZFKiXrl1giV2rCKwwAA0AcV2drT3crL
	Om0geWBrJeB0VheQx4s4AyYUghrXzY2Nt20xhltdGvg3ls0YASk2//YUKkq+REMaJcW/VV
	k534Y8JV6mmsnd3dF0ttymqU5wdcAwY=
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1704967919; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:content-type:content-type:
	 in-reply-to:in-reply-to:references:references:autocrypt:autocrypt;
	bh=3BjA1LrwxV5AIWA3gA/Fe5aR0VRzQGP7vcxWnSASqJw=;
	b=URiEAx34QYm55HI0J5jGWyZef3vGBBqyrF/TVIVZFKiXrl1giV2rCKwwAA0AcV2drT3crL
	Om0geWBrJeB0VheQx4s4AyYUghrXzY2Nt20xhltdGvg3ls0YASk2//YUKkq+REMaJcW/VV
	k534Y8JV6mmsnd3dF0ttymqU5wdcAwY=
Message-ID: <dcaf9d8d-ad5a-4714-936b-79ed0e587f9d@suse.com>
Date: Thu, 11 Jan 2024 11:13:29 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: E820 memory allocation issue on Threadripper platforms
Content-Language: en-US
To: Jan Beulich <jbeulich@suse.com>, Patrick Plenefisch <simonpatp@gmail.com>
Cc: xen-devel@lists.xenproject.org
References: <CAOCpoWdOH=xGxiQSC1c5Ueb1THxAjH4WiZbCZq-QT+d_KAk3SA@mail.gmail.com>
 <1708c3d7-662a-44bc-b9b3-4ab9f8642d7b@suse.com>
From: Juergen Gross <jgross@suse.com>
Autocrypt: addr=jgross@suse.com; keydata=
 xsBNBFOMcBYBCACgGjqjoGvbEouQZw/ToiBg9W98AlM2QHV+iNHsEs7kxWhKMjrioyspZKOB
 ycWxw3ie3j9uvg9EOB3aN4xiTv4qbnGiTr3oJhkB1gsb6ToJQZ8uxGq2kaV2KL9650I1SJve
 dYm8Of8Zd621lSmoKOwlNClALZNew72NjJLEzTalU1OdT7/i1TXkH09XSSI8mEQ/ouNcMvIJ
 NwQpd369y9bfIhWUiVXEK7MlRgUG6MvIj6Y3Am/BBLUVbDa4+gmzDC9ezlZkTZG2t14zWPvx
 XP3FAp2pkW0xqG7/377qptDmrk42GlSKN4z76ELnLxussxc7I2hx18NUcbP8+uty4bMxABEB
 AAHNH0p1ZXJnZW4gR3Jvc3MgPGpncm9zc0BzdXNlLmNvbT7CwHkEEwECACMFAlOMcK8CGwMH
 CwkIBwMCAQYVCAIJCgsEFgIDAQIeAQIXgAAKCRCw3p3WKL8TL8eZB/9G0juS/kDY9LhEXseh
 mE9U+iA1VsLhgDqVbsOtZ/S14LRFHczNd/Lqkn7souCSoyWsBs3/wO+OjPvxf7m+Ef+sMtr0
 G5lCWEWa9wa0IXx5HRPW/ScL+e4AVUbL7rurYMfwCzco+7TfjhMEOkC+va5gzi1KrErgNRHH
 kg3PhlnRY0Udyqx++UYkAsN4TQuEhNN32MvN0Np3WlBJOgKcuXpIElmMM5f1BBzJSKBkW0Jc
 Wy3h2Wy912vHKpPV/Xv7ZwVJ27v7KcuZcErtptDevAljxJtE7aJG6WiBzm+v9EswyWxwMCIO
 RoVBYuiocc51872tRGywc03xaQydB+9R7BHPzsBNBFOMcBYBCADLMfoA44MwGOB9YT1V4KCy
 vAfd7E0BTfaAurbG+Olacciz3yd09QOmejFZC6AnoykydyvTFLAWYcSCdISMr88COmmCbJzn
 sHAogjexXiif6ANUUlHpjxlHCCcELmZUzomNDnEOTxZFeWMTFF9Rf2k2F0Tl4E5kmsNGgtSa
 aMO0rNZoOEiD/7UfPP3dfh8JCQ1VtUUsQtT1sxos8Eb/HmriJhnaTZ7Hp3jtgTVkV0ybpgFg
 w6WMaRkrBh17mV0z2ajjmabB7SJxcouSkR0hcpNl4oM74d2/VqoW4BxxxOD1FcNCObCELfIS
 auZx+XT6s+CE7Qi/c44ibBMR7hyjdzWbABEBAAHCwF8EGAECAAkFAlOMcBYCGwwACgkQsN6d
 1ii/Ey9D+Af/WFr3q+bg/8v5tCknCtn92d5lyYTBNt7xgWzDZX8G6/pngzKyWfedArllp0Pn
 fgIXtMNV+3t8Li1Tg843EXkP7+2+CQ98MB8XvvPLYAfW8nNDV85TyVgWlldNcgdv7nn1Sq8g
 HwB2BHdIAkYce3hEoDQXt/mKlgEGsLpzJcnLKimtPXQQy9TxUaLBe9PInPd+Ohix0XOlY+Uk
 QFEx50Ki3rSDl2Zt2tnkNYKUCvTJq7jvOlaPd6d/W0tZqpyy7KVay+K4aMobDsodB3dvEAs6
 ScCnh03dDAFgIq5nsB11j3KPKdVoPlfucX2c7kGNH+LUMbzqV6beIENfNexkOfxHfw==
In-Reply-To: <1708c3d7-662a-44bc-b9b3-4ab9f8642d7b@suse.com>
Content-Type: multipart/signed; micalg=pgp-sha256;
 protocol="application/pgp-signature";
 boundary="------------BjG7sAZd1yLEybfI0wGGSIdC"
Authentication-Results: smtp-out1.suse.de;
	dkim=pass header.d=suse.com header.s=susede1 header.b=URiEAx34
X-Spamd-Result: default: False [-7.20 / 50.00];
	 RCVD_VIA_SMTP_AUTH(0.00)[];
	 XM_UA_NO_VERSION(0.01)[];
	 SPAMHAUS_XBL(0.00)[2a07:de40:b281:104:10:150:64:97:from];
	 TO_DN_SOME(0.00)[];
	 HAS_ATTACHMENT(0.00)[];
	 RCVD_COUNT_THREE(0.00)[3];
	 DKIM_TRACE(0.00)[suse.com:+];
	 MIME_BASE64_TEXT(0.10)[];
	 MX_GOOD(-0.01)[];
	 SIGNED_PGP(-2.00)[];
	 FREEMAIL_TO(0.00)[suse.com,gmail.com];
	 FROM_EQ_ENVFROM(0.00)[];
	 MIME_TRACE(0.00)[0:+,1:+,2:+,3:+,4:~,5:~];
	 MID_RHS_MATCH_FROM(0.00)[];
	 BAYES_HAM(-3.00)[100.00%];
	 MIME_UNKNOWN(0.10)[application/pgp-keys];
	 ARC_NA(0.00)[];
	 R_DKIM_ALLOW(-0.20)[suse.com:s=susede1];
	 FROM_HAS_DN(0.00)[];
	 RCPT_COUNT_THREE(0.00)[3];
	 FREEMAIL_ENVRCPT(0.00)[gmail.com];
	 TO_MATCH_ENVRCPT_ALL(0.00)[];
	 MIME_GOOD(-0.20)[multipart/signed,multipart/mixed,text/plain];
	 DWL_DNSWL_MED(-2.00)[suse.com:dkim];
	 DKIM_SIGNED(0.00)[suse.com:s=susede1];
	 DBL_BLOCKED_OPENRESOLVER(0.00)[suse.com:dkim];
	 FUZZY_BLOCKED(0.00)[rspamd.com];
	 RCVD_TLS_ALL(0.00)[]
X-Rspamd-Server: rspamd1.dmz-prg2.suse.org
X-Rspamd-Queue-Id: AEC0121E8F
X-Spam-Level: 
X-Spam-Score: -7.20
X-Spam-Flag: NO

This is an OpenPGP/MIME signed message (RFC 4880 and 3156)
--------------BjG7sAZd1yLEybfI0wGGSIdC
Content-Type: multipart/mixed; boundary="------------T457Txab9UfEl0HQ8x9ig5rv";
 protected-headers="v1"
From: Juergen Gross <jgross@suse.com>
To: Jan Beulich <jbeulich@suse.com>, Patrick Plenefisch <simonpatp@gmail.com>
Cc: xen-devel@lists.xenproject.org
Message-ID: <dcaf9d8d-ad5a-4714-936b-79ed0e587f9d@suse.com>
Subject: Re: E820 memory allocation issue on Threadripper platforms
References: <CAOCpoWdOH=xGxiQSC1c5Ueb1THxAjH4WiZbCZq-QT+d_KAk3SA@mail.gmail.com>
 <1708c3d7-662a-44bc-b9b3-4ab9f8642d7b@suse.com>
In-Reply-To: <1708c3d7-662a-44bc-b9b3-4ab9f8642d7b@suse.com>

--------------T457Txab9UfEl0HQ8x9ig5rv
Content-Type: multipart/mixed; boundary="------------JqgJZdrBAc1igMyHZE4sHIRI"

--------------JqgJZdrBAc1igMyHZE4sHIRI
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: base64

T24gMTEuMDEuMjQgMDk6MzcsIEphbiBCZXVsaWNoIHdyb3RlOg0KPiBPbiAxMS4wMS4yMDI0
IDAzOjI5LCBQYXRyaWNrIFBsZW5lZmlzY2ggd3JvdGU6DQo+PiBIaSwNCj4+DQo+PiBJIHJh
biBpbnRvIGEgbWVtb3J5IGFsbG9jYXRpb24gaXNzdWUsIEkgdGhpbmsuIEl0IGlzIHRoZSBz
YW1lIGFzDQo+PiBodHRwczovL2dpdGh1Yi5jb20vUXViZXNPUy9xdWJlcy1pc3N1ZXMvaXNz
dWVzLzg3OTEgYW5kIEkgc2F3IGF0IHRoZSBlbmQgaXQNCj4+IHdhcyByZWNvbW1lbmRlZCAo
YnkgbWFybWFyZWspIHRoYXQgdGhlIGlzc3VlIHJlcG9ydGVyIGZvcndhcmQgdGhlIGlzc3Vl
IHRvDQo+PiB0aGlzIGxpc3QuIEkgc2VhcmNoZWQgdGhlIGxpc3QsIGJ1dCBhcyBJIGRpZG4n
dCBzZWUgaXQgaW4gdGhlIGxpc3QgYWxyZWFkeSwNCj4+IEknbSBkb2luZyB0aGF0IG5vdy4N
Cj4+DQo+PiBIYXJkd2FyZToNCj4+IEkgaGF2ZSBhbiBBTUQgVGhyZWFkcmlwcGVyIDc5NjBY
IG9uIGEgQVNSb2NrIFRSWDUwIFdTIG1vdGhlcmJvYXJkLiBUaGUNCj4+IFF1YmVzIHJlcG9y
dGVyIGhhZCBhIFRocmVhZHJpcHBlciAzOTcwWCBvbiBhbiBBU1VTIFByaW1lIFRSWDQwLVBy
bw0KPj4gTW90aGVyYm9hcmQuIEkgc2F3IGEgM3JkIGlzc3VlIHJlcG9ydCBvZiBhIHNpbWls
YXIgaXNzdWUgb24gYW5vdGhlcg0KPj4gVGhyZWFkcmlwcGVyLCBzbyBJIHRoaW5rIHRoaXMg
bWF5IGJlIFRocmVhZHJpcHBlci1zcGVjaWZpYy4NCj4+DQo+PiBTZXR1cDoNCj4+IFRoZSBR
dWViZXNPUyByZXBvcnRlciB3YXMgdXNpbmcgUXViZXMgSW5zdGFsbGVyLg0KPj4gTXkgaW5z
dGFsbCB3YXMgdGhhdCBJIGhhZCBhIGZyZXNoIGluc3RhbGwgb2YgRGViaWFuIDEyIChubyBn
dWkpLCBhbmQgdGhlbg0KPj4gZGlkIGBhcHQgaW5zdGFsbCB4ZW4tc3lzdGVtLWFtZDY0YCBh
bmQgcmVib290ZWQuDQo+Pg0KPj4gVGhlIGlzc3VlOg0KPj4gQW55IGJvb3Qgb2YgWGVuIG9u
IHRoZSBoYXJkd2FyZSByZXN1bHRzIGluIGEgaGFsdGVkIG1hY2hpbmUuIFdoZW4NCj4+IG1v
bml0b3JpbmcgdGhlIGxvZ3Mgd2l0aCBgdmdhPSxrZWVwYCwgd2UgZ2V0Og0KPj4NCj4+IChY
RU4pICoqKiBTZXJpYWwgaW5wdXQgdG8gRE9NMCAodHlwZSAnQ1RSTC1hJyB0aHJlZSB0aW1l
cyB0byBzd2l0Y2ggaW5wdXQpDQo+PiAoWEVOKSBGcmVlZCA2NDRrQiBpbml0IG1lbW9yeQ0K
Pj4gbWFwcGluZyBrZXJuZWwgaW50byBwaHlzaWNhbCBtZW1vcnkNCj4+IGFib3V0IHRvIGdl
dCBzdGFydGVk4oCmDQo+PiB4ZW4gaHlwZXJ2aXNvciBhbGxvY2F0ZWQga2VybmVsIG1lbW9y
eSBjb25mbGljdHMgd2l0aCBFODIwDQo+IA0KPiBTbyBmaXJzdCBvZiBhbGwgKHRoZSB0aXRs
ZSBkb2Vzbid0IHNheSBpdCkgdGhpcyBpcyBhIExpbnV4IERvbTAgaXNzdWUuDQo+IFdoZXRo
ZXIgb3Igbm90IG5lZWRpbmcgYWRkcmVzc2luZyBpbiBYZW4gaXMgdW5rbm93biBhdCB0aGlz
IHBvaW50Lg0KPiANCj4+IChYRU4pIEhhcmR3YXJlIERvbTAgaGFsdGVkOiBoYWx0aW5nIG1h
Y2hpbmUNCj4+DQo+PiBOb25lIG9mIHRoZSBzZXR0aW5ncyBJIG9yIHRoZSBRdWJlcyByZXBv
cnRlciBoYXZlIHRyaWVkIGhhdmUgYmVlbiBhYmxlIHRvDQo+PiBnZXQgcGFzdCB0aGlzIGZh
aWx1cmUuDQo+Pg0KPj4gSSBhbSBoYXBweSB0byBwcm92aWRlIGRlYnVnZ2luZyBzdXBwb3J0
Lg0KPiANCj4gV2VsbCwgdGhlIGNydWNpYWwgcGllY2Ugb2YgZGF0YSBpbml0aWFsbHkgaXMg
Z29pbmcgdG8gYmU6IFdoYXQncyB0aGUNCj4gRTgyMCBtYXAgWGVuIGdldHMgdG8gc2VlLCB3
aGF0J3MgdGhlIEU4MjAgbWFwIERvbTAgZ2V0cyB0byBzZWUsIGFuZA0KPiB3aGF0IGFkZHJl
c3MgcmFuZ2UgaXMgdGhlIGNvbmZsaWN0IGRldGVjdGVkIGZvcj8gVGhlIGZpcnN0IHF1ZXN0
aW9uDQo+IGlzIHBvc3NpYmxlIHRvIGFuc3dlciBieSBzdXBwbHlpbmcgYSBzZXJpYWwgbG9n
LiBUaGUgc2Vjb25kIHF1ZXN0aW9uDQo+IGxpa2VseSBtZWFucyBhZGRpbmcgc29tZSBkZWJ1
Z2dpbmcgY29kZSB0byBlaXRoZXIgWGVuIG9yIExpbnV4LiBUaGUNCj4gYW5zd2VyIHRvIHRo
aXJkIHF1ZXN0aW9uIG1heSBiZSBwb3NzaWJsZSB0byBpbmZlciBmcm9tIHRoZSBvdGhlcg0K
PiBkYXRhLCBidXQgd291bGQgbGlrZWx5IGJlIGJldHRlciB0byBvYnRhaW4gZXhwbGljaXRs
eSBieSBhZGp1c3RpbmcgLw0KPiBhbWVuZGluZyB0aGUgbWVzc2FnZSBMaW51eCBlbWl0cy4N
Cg0KVGhlIG5lZWRlZCBpbmZvcm1hdGlvbiBzaG91bGQgYWxsIGJlIGluIHRoZSBoeXBlcnZp
c29yIG1lc3NhZ2VzLg0KDQpUaGUgaHlwZXJ2aXNvciBpcyBpbml0aWFsbHkgcHJlc2VudGlu
ZyBhIG1lbW9yeSBtYXAgdG8gZG9tMCB3aGljaCBpcyBub3QgdGhlDQpzYW1lIGFzIHRoZSBu
YXRpdmUgbWVtb3J5IG1hcC4gRG9tMCB0cmllcyB0byByZWFycmFuZ2UgaXRzIG1lbW9yeSBs
YXlvdXQgdG8NCmJlIGNvbXBhdGlibGUgd2l0aCB0aGUgbmF0aXZlIG1lbW9yeSBtYXAuDQoN
ClRoZSBzZWVuIG1lc3NhZ2UgKCJ4ZW4gaHlwZXJ2aXNvciBhbGxvY2F0ZWQga2VybmVsIG1l
bW9yeSBjb25mbGljdHMgd2l0aCBFODIwIikNCnRlbGxzIHVzIHRoYXQgdGhlIGtlcm5lbCBw
b3NpdGlvbiBpcyBjb25mbGljdGluZyB3aXRoIHRoZSBuYXRpdmUgbWVtb3J5IG1hcA0KKGF0
IGxlYXN0IG9uZSBndWVzdCBwZm4gb2NjdXBpZWQgYnkgdGhlIGtlcm5lbCB3b3VsZCBiZSBh
dCBhIG5vbi1SQU0gcG9wdWxhdGVkDQpsb2NhdGlvbiBhZnRlciByZWFycmFuZ2VtZW50IG9m
IG1lbW9yeSkuDQoNCkluIHRoZW9yeSBpdCB3b3VsZCBiZSBwb3NzaWJsZSB0byBjb3ZlciB0
aGlzIGNhc2UsIHRvbywgYnV0IGl0IHdvdWxkIGJlIHF1aXRlDQpjdW1iZXJzb21lLiBSaWdo
dCBub3cgb25seSB0aGUgaW5pdHJkIGlzIGFsbG93ZWQgdG8gY29uZmxpY3Qgd2l0aCB0aGUg
bWVtb3J5IG1hcA0KKGl0IHdpbGwgYmUgbW92ZWQgaW4gdGhpcyBjYXNlKSwga2VybmVsIGFu
ZCBpbml0aWFsIHBhZ2UgdGFibGUgY29uZmxpY3RzIGFyZSBub3QNCmhhbmRsZWQuDQoNCldo
ZW4gSSBhZGRlZCB0aGUgY29uZmxpY3QgaGFuZGxpbmcgbmVhcmx5IDEwIHllYXJzIGFnbywg
dGhlcmUgd2FzIG5vIGhhcmR3YXJlDQprbm93biB0byBoYXZlIG1lbW9yeSBob2xlcyBhdCBh
ZGRyZXNzZXMgd2hpY2ggd291bGQgY29uZmxpY3Qgd2l0aCBYZW4ncyBpbml0aWFsDQppZGVh
IG9mIGRvbTAgbWVtb3J5IGxheW91dC4NCg0KSSBjYW4gbG9vayBpbnRvIHRoaXMgbGF0ZXIs
IGJ1dCByaWdodCBub3cgSSdtIGp1c3QgYWJvdXQgdG8gZ28gb2ZmbGluZSBwcm9iYWJseQ0K
dW50aWwgZW5kIG9mIEphbnVhcnkuDQoNCg0KSnVlcmdlbg0K
--------------JqgJZdrBAc1igMyHZE4sHIRI
Content-Type: application/pgp-keys; name="OpenPGP_0xB0DE9DD628BF132F.asc"
Content-Disposition: attachment; filename="OpenPGP_0xB0DE9DD628BF132F.asc"
Content-Description: OpenPGP public key
Content-Transfer-Encoding: quoted-printable

-----BEGIN PGP PUBLIC KEY BLOCK-----

xsBNBFOMcBYBCACgGjqjoGvbEouQZw/ToiBg9W98AlM2QHV+iNHsEs7kxWhKMjri
oyspZKOBycWxw3ie3j9uvg9EOB3aN4xiTv4qbnGiTr3oJhkB1gsb6ToJQZ8uxGq2
kaV2KL9650I1SJvedYm8Of8Zd621lSmoKOwlNClALZNew72NjJLEzTalU1OdT7/i
1TXkH09XSSI8mEQ/ouNcMvIJNwQpd369y9bfIhWUiVXEK7MlRgUG6MvIj6Y3Am/B
BLUVbDa4+gmzDC9ezlZkTZG2t14zWPvxXP3FAp2pkW0xqG7/377qptDmrk42GlSK
N4z76ELnLxussxc7I2hx18NUcbP8+uty4bMxABEBAAHNHEp1ZXJnZW4gR3Jvc3Mg
PGpnQHBmdXBmLm5ldD7CwHkEEwECACMFAlOMcBYCGwMHCwkIBwMCAQYVCAIJCgsE
FgIDAQIeAQIXgAAKCRCw3p3WKL8TL0KdB/93FcIZ3GCNwFU0u3EjNbNjmXBKDY4F
UGNQH2lvWAUy+dnyThpwdtF/jQ6j9RwE8VP0+NXcYpGJDWlNb9/JmYqLiX2Q3Tye
vpB0CA3dbBQp0OW0fgCetToGIQrg0MbD1C/sEOv8Mr4NAfbauXjZlvTj30H2jO0u
+6WGM6nHwbh2l5O8ZiHkH32iaSTfN7Eu5RnNVUJbvoPHZ8SlM4KWm8rG+lIkGurq
qu5gu8q8ZMKdsdGC4bBxdQKDKHEFExLJK/nRPFmAuGlId1E3fe10v5QL+qHI3EIP
tyfE7i9Hz6rVwi7lWKgh7pe0ZvatAudZ+JNIlBKptb64FaiIOAWDCx1SzR9KdWVy
Z2VuIEdyb3NzIDxqZ3Jvc3NAc3VzZS5jb20+wsB5BBMBAgAjBQJTjHCvAhsDBwsJ
CAcDAgEGFQgCCQoLBBYCAwECHgECF4AACgkQsN6d1ii/Ey/HmQf/RtI7kv5A2PS4
RF7HoZhPVPogNVbC4YA6lW7DrWf0teC0RR3MzXfy6pJ+7KLgkqMlrAbN/8Dvjoz7
8X+5vhH/rDLa9BuZQlhFmvcGtCF8eR0T1v0nC/nuAFVGy+67q2DH8As3KPu0344T
BDpAvr2uYM4tSqxK4DURx5INz4ZZ0WNFHcqsfvlGJALDeE0LhITTd9jLzdDad1pQ
SToCnLl6SBJZjDOX9QQcyUigZFtCXFst4dlsvddrxyqT1f17+2cFSdu7+ynLmXBK
7abQ3rwJY8SbRO2iRulogc5vr/RLMMlscDAiDkaFQWLoqHHOdfO9rURssHNN8WkM
nQfvUewRz80hSnVlcmdlbiBHcm9zcyA8amdyb3NzQG5vdmVsbC5jb20+wsB5BBMB
AgAjBQJTjHDXAhsDBwsJCAcDAgEGFQgCCQoLBBYCAwECHgECF4AACgkQsN6d1ii/
Ey8PUQf/ehmgCI9jB9hlgexLvgOtf7PJnFOXgMLdBQgBlVPO3/D9R8LtF9DBAFPN
hlrsfIG/SqICoRCqUcJ96Pn3P7UUinFG/I0ECGF4EvTE1jnDkfJZr6jrbjgyoZHi
w/4BNwSTL9rWASyLgqlA8u1mf+c2yUwcGhgkRAd1gOwungxcwzwqgljf0N51N5Jf
VRHRtyfwq/ge+YEkDGcTU6Y0sPOuj4Dyfm8fJzdfHNQsWq3PnczLVELStJNdapwP
OoE+lotufe3AM2vAEYJ9rTz3Cki4JFUsgLkHFqGZarrPGi1eyQcXeluldO3m91NK
/1xMI3/+8jbO0tsn1tqSEUGIJi7ox80eSnVlcmdlbiBHcm9zcyA8amdyb3NzQHN1
c2UuZGU+wsB5BBMBAgAjBQJTjHDrAhsDBwsJCAcDAgEGFQgCCQoLBBYCAwECHgEC
F4AACgkQsN6d1ii/Ey+LhQf9GL45eU5vOowA2u5N3g3OZUEBmDHVVbqMtzwlmNC4
k9Kx39r5s2vcFl4tXqW7g9/ViXYuiDXb0RfUpZiIUW89siKrkzmQ5dM7wRqzgJpJ
wK8Bn2MIxAKArekWpiCKvBOB/Cc+3EXE78XdlxLyOi/NrmSGRIov0karw2RzMNOu
5D+jLRZQd1Sv27AR+IP3I8U4aqnhLpwhK7MEy9oCILlgZ1QZe49kpcumcZKORmzB
TNh30FVKK1EvmV2xAKDoaEOgQB4iFQLhJCdP1I5aSgM5IVFdn7v5YgEYuJYx37Io
N1EblHI//x/e2AaIHpzK5h88NEawQsaNRpNSrcfbFmAg987ATQRTjHAWAQgAyzH6
AOODMBjgfWE9VeCgsrwH3exNAU32gLq2xvjpWnHIs98ndPUDpnoxWQugJ6MpMncr
0xSwFmHEgnSEjK/PAjppgmyc57BwKII3sV4on+gDVFJR6Y8ZRwgnBC5mVM6JjQ5x
Dk8WRXljExRfUX9pNhdE5eBOZJrDRoLUmmjDtKzWaDhIg/+1Hzz93X4fCQkNVbVF
LELU9bMaLPBG/x5q4iYZ2k2ex6d47YE1ZFdMm6YBYMOljGkZKwYde5ldM9mo45mm
we0icXKLkpEdIXKTZeKDO+Hdv1aqFuAcccTg9RXDQjmwhC3yEmrmcfl0+rPghO0I
v3OOImwTEe4co3c1mwARAQABwsBfBBgBAgAJBQJTjHAWAhsMAAoJELDendYovxMv
Q/gH/1ha96vm4P/L+bQpJwrZ/dneZcmEwTbe8YFsw2V/Buv6Z4Mysln3nQK5ZadD
534CF7TDVft7fC4tU4PONxF5D+/tvgkPfDAfF77zy2AH1vJzQ1fOU8lYFpZXTXIH
b+559UqvIB8AdgR3SAJGHHt4RKA0F7f5ipYBBrC6cyXJyyoprT10EMvU8VGiwXvT
yJz3fjoYsdFzpWPlJEBRMedCot60g5dmbdrZ5DWClAr0yau47zpWj3enf1tLWaqc
suylWsviuGjKGw7KHQd3bxALOknAp4dN3QwBYCKuZ7AddY9yjynVaD5X7nF9nO5B
jR/i1DG86lem3iBDXzXsZDn8R3/CwO0EGAEIACAWIQSFEmdy6PYElKXQl/ew3p3W
KL8TLwUCWt3w0AIbAgCBCRCw3p3WKL8TL3YgBBkWCAAdFiEEUy2wekH2OPMeOLge
gFxhu0/YY74FAlrd8NAACgkQgFxhu0/YY75NiwD/fQf/RXpyv9ZX4n8UJrKDq422
bcwkujisT6jix2mOOwYBAKiip9+mAD6W5NPXdhk1XraECcIspcf2ff5kCAlG0DIN
aTUH/RIwNWzXDG58yQoLdD/UPcFgi8GWtNUp0Fhc/GeBxGipXYnvuWxwS+Qs1Qay
7/Nbal/v4/eZZaWs8wl2VtrHTS96/IF6q2o0qMey0dq2AxnZbQIULiEndgR625EF
RFg+IbO4ldSkB3trsF2ypYLij4ZObm2casLIP7iB8NKmQ5PndL8Y07TtiQ+Sb/wn
g4GgV+BJoKdDWLPCAlCMilwbZ88Ijb+HF/aipc9hsqvW/hnXC2GajJSAY3Qs9Mib
4Hm91jzbAjmp7243pQ4bJMfYHemFFBRaoLC7ayqQjcsttN2ufINlqLFPZPR/i3IX
kt+z4drzFUyEjLM1vVvIMjkUoJs=3D
=3DeeAB
-----END PGP PUBLIC KEY BLOCK-----

--------------JqgJZdrBAc1igMyHZE4sHIRI--

--------------T457Txab9UfEl0HQ8x9ig5rv--

--------------BjG7sAZd1yLEybfI0wGGSIdC
Content-Type: application/pgp-signature; name="OpenPGP_signature.asc"
Content-Description: OpenPGP digital signature
Content-Disposition: attachment; filename="OpenPGP_signature.asc"

-----BEGIN PGP SIGNATURE-----

wsB5BAABCAAjFiEEhRJncuj2BJSl0Jf3sN6d1ii/Ey8FAmWfv0kFAwAAAAAACgkQsN6d1ii/Ey8h
Pwf/VvLB39hRRZ30T5WB29Qy6S6n5POrf1wBje+fTU8U/fD44+CZGvN7tu/xUy/4QhVQCuFujUGe
5+t5Vh4plJKnTjV0ongB7zzF/MGzm+h6d4vzACk3ivBei02Z9492gBMjrZCN/FhHN5fFIPhodx+r
cZ4vMB8o2VzdynXWzhQb4dHZATXQv0y0TM1Ts//JVAcWZ4Wg8TvxvHNda1oWwKCxhMBmPUrqRx8F
Z5i4crkKv2bw5KsrU/X/5pniFbFgTvOPji9oDilfdOsuoZFmRp3Ui3i3pTthLVg4AvVRl5c2YouS
gPoZM7VGayiA9/ZxGh6jAaKIpqjjNNc6kmdqrfBe2w==
=6zqn
-----END PGP SIGNATURE-----

--------------BjG7sAZd1yLEybfI0wGGSIdC--


From xen-devel-bounces@lists.xenproject.org Thu Jan 11 10:16:56 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 11 Jan 2024 10:16:56 +0000
Received: from list by lists.xenproject.org with outflank-mailman.666113.1036573 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNs7G-0001o9-HC; Thu, 11 Jan 2024 10:16:50 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 666113.1036573; Thu, 11 Jan 2024 10:16:50 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNs7G-0001o2-EG; Thu, 11 Jan 2024 10:16:50 +0000
Received: by outflank-mailman (input) for mailman id 666113;
 Thu, 11 Jan 2024 10:16:49 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=YFj+=IV=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rNs7F-0001nw-P0
 for xen-devel@lists.xenproject.org; Thu, 11 Jan 2024 10:16:49 +0000
Received: from mail-wm1-x336.google.com (mail-wm1-x336.google.com
 [2a00:1450:4864:20::336])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 8788a0db-b06a-11ee-98f0-6d05b1d4d9a1;
 Thu, 11 Jan 2024 11:16:48 +0100 (CET)
Received: by mail-wm1-x336.google.com with SMTP id
 5b1f17b1804b1-40e60e13762so2764675e9.2
 for <xen-devel@lists.xenproject.org>; Thu, 11 Jan 2024 02:16:48 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 k20-20020a05600c1c9400b0040e54f15d3dsm5184782wms.31.2024.01.11.02.16.47
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 11 Jan 2024 02:16:47 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 8788a0db-b06a-11ee-98f0-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1704968208; x=1705573008; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=tinWbhY1oAJ5POkapwj+NY5JxGwLGaeX9VcKGfPSrkw=;
        b=FEKktgVW2lSsJj4FT0vE/A0c2MfXaJkvtgU8dfAiA93G4dPDBr6Yhomlfk0i+uNx8u
         tFJfylJUnlfnu7GEA+4sZ7Jz8HZy1Pn5MvGUx9IW+Zjl2hstoSw8cyU/gjIHnPwLbMAn
         6bNJgIC/HoMPN2ruBxvunnlF1sXt3E2wVHCmf75uwhXi4+8kxpKcJb8AkyAGZ3fKEyM5
         LTCSaxtuhChDjYmadpAe2qXMrJ90H3Bbz62iOVqpVDHruB9jXm89M8gAZs4CaR/MyboX
         3f0EiglSHk1eexQCItPvOaxXD+iXsdBHw3meGG8aaGQlewYQCm4DDq8czFEezUo//e21
         zXzA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704968208; x=1705573008;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=tinWbhY1oAJ5POkapwj+NY5JxGwLGaeX9VcKGfPSrkw=;
        b=FfC4SapWO7yMRh33Xa5Be6YoYlc7HM4yk7/cJt9SgdkUeWveaVxK8gh3q54oXtlIEp
         bwe/wEIwX93uLGwXvraB021A9szX0o98exyN7J4VImXDMgC69Yts5gcd/U/yWug92xw7
         yPFPhQoQKemuZjFPQ0L4KgbMlOOnmtyEng4mAyApy1c/G9TSHdbZQhHBzzF0rtTT9Dir
         HYWPPoja6EHvFSQxw17EmiIP2sYV3LtabDv8626XHNeeTxcrPGwbe1CmpWrpU8QmCQHB
         hyy3TLu6AzWGPnInFOIJCl5SoSJfP3wxWgyQEHIA7VxzAfcTBfhLlKG6oVHee4DZcYX3
         D/Fw==
X-Gm-Message-State: AOJu0YyWFB+Byf4p2eI0QT/d7FwFhIBQR0sKqsvNBKBXSGxmMKy6Ln7R
	c0czMcNKUYbEZZSJeA+Yh/ww90ig7xZr
X-Google-Smtp-Source: AGHT+IGa5dZulY+98rKGmiLUdRAnZIPyWTzrJvX/7oVrgAr/nGWa+OFqeaUjNDZf7h2xTzGJ4oyOqQ==
X-Received: by 2002:a05:600c:4e89:b0:40d:55c6:b80a with SMTP id f9-20020a05600c4e8900b0040d55c6b80amr126378wmq.203.1704968207847;
        Thu, 11 Jan 2024 02:16:47 -0800 (PST)
Message-ID: <c2140315-af7c-4f39-a8c9-3d2d8b42cd92@suse.com>
Date: Thu, 11 Jan 2024 11:16:46 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v5 01/13] xen/common: add cache coloring common code
Content-Language: en-US
To: Carlo Nonato <carlo.nonato@minervasys.tech>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 George Dunlap <george.dunlap@citrix.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>,
 Marco Solieri <marco.solieri@minervasys.tech>, xen-devel@lists.xenproject.org
References: <20240102095138.17933-1-carlo.nonato@minervasys.tech>
 <20240102095138.17933-2-carlo.nonato@minervasys.tech>
 <feb5542a-081a-4677-b569-5d4218eb794d@suse.com>
 <CAG+AhRWkasky8hrNBrtXsmmnmsJjf+-Nj3Nr7Nu4LfXvFYvwvQ@mail.gmail.com>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <CAG+AhRWkasky8hrNBrtXsmmnmsJjf+-Nj3Nr7Nu4LfXvFYvwvQ@mail.gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 11.01.2024 11:10, Carlo Nonato wrote:
> On Mon, Jan 8, 2024 at 5:53 PM Jan Beulich <jbeulich@suse.com> wrote:
>> On 02.01.2024 10:51, Carlo Nonato wrote:
>>> --- a/xen/include/xen/sched.h
>>> +++ b/xen/include/xen/sched.h
>>> @@ -626,6 +626,11 @@ struct domain
>>>
>>>      /* Holding CDF_* constant. Internal flags for domain creation. */
>>>      unsigned int cdf;
>>> +
>>> +#ifdef CONFIG_LLC_COLORING
>>> +    unsigned int *llc_colors;
>>
>> Can the color values change over the lifetime of a domain? If not,
>> it may be prudent to have this be pointer-to-const.
> 
> Can I free a pointer-to-const array?

Well, you certainly can by using a cast. Avoiding the need for such call-
site casts is why I've been advocating to make xfree() / vfree() match e.g.
vunmap() / _vfree() in this regard. Yet other opinions are that the const
there ought to be dropped (without me really following the reasoning) ...

There's also the option of circumventing the need for a cast by doing

    xfree(__va(__pa(ptr)));

Jan


From xen-devel-bounces@lists.xenproject.org Thu Jan 11 10:18:14 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 11 Jan 2024 10:18:14 +0000
Received: from list by lists.xenproject.org with outflank-mailman.666117.1036583 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNs8b-0002qx-Qg; Thu, 11 Jan 2024 10:18:13 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 666117.1036583; Thu, 11 Jan 2024 10:18:13 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNs8b-0002qq-O1; Thu, 11 Jan 2024 10:18:13 +0000
Received: by outflank-mailman (input) for mailman id 666117;
 Thu, 11 Jan 2024 10:18:12 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=nyxv=IV=minervasys.tech=carlo.nonato@srs-se1.protection.inumbo.net>)
 id 1rNs8a-0002qk-7W
 for xen-devel@lists.xenproject.org; Thu, 11 Jan 2024 10:18:12 +0000
Received: from mail-lf1-x131.google.com (mail-lf1-x131.google.com
 [2a00:1450:4864:20::131])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id b90b2ff3-b06a-11ee-98f0-6d05b1d4d9a1;
 Thu, 11 Jan 2024 11:18:11 +0100 (CET)
Received: by mail-lf1-x131.google.com with SMTP id
 2adb3069b0e04-50eac018059so6391670e87.0
 for <xen-devel@lists.xenproject.org>; Thu, 11 Jan 2024 02:18:11 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: b90b2ff3-b06a-11ee-98f0-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=minervasys-tech.20230601.gappssmtp.com; s=20230601; t=1704968291; x=1705573091; darn=lists.xenproject.org;
        h=cc:to:subject:message-id:date:from:in-reply-to:references
         :mime-version:from:to:cc:subject:date:message-id:reply-to;
        bh=Tyn+8LYbh8AWGusmGVXZ3mQVmHwQC9PpIBkD9NUbPVI=;
        b=n+yihhRXyLzk3PV86OGWeyga5aC1+wKK/9DmgEg8GkHddAeLl5zK8hgvKVoezQUeJe
         R8ZgoJUu/xCDYXF8tDiYlVS/s8RDGciR1oD/uGOn6N45bODRDo8l7WsmTYZ+BSaQHTS7
         K6HmUfahNJtWLqwaTscgRVXkMReo8L3TAt1Q6JHY3aAJgzZdYDCC50m+a7ye/QGbpo9Y
         jkv+W75/kXCtoSfW+Xlvvlbv320RFd44Yoq3osY1ZSsgb0Jfk1UhITCr134ghxjkjYed
         s2AQr79fKguN3OvVFV1SVhUbRp51E/x93HGreDM5VIQ/z9Uu+CLDFB1V1A+9iCCXqdjB
         rJvQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704968291; x=1705573091;
        h=cc:to:subject:message-id:date:from:in-reply-to:references
         :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id
         :reply-to;
        bh=Tyn+8LYbh8AWGusmGVXZ3mQVmHwQC9PpIBkD9NUbPVI=;
        b=aArG3BElNGd14nqu+x3WmPe+olffw+9dmrv1TfyWmG1C+efNexMpQl8Sk/cc8mRoHn
         1H2/379GlJRve2MK82E9JqKb69+PIiz49SHR87ecwYZ3HHxVOi4GX8XK+tcifCj2fPF9
         FXU7E3vrzX5/kwfjtf1dvYZQQCzxGGz2qrWrxjVSNGcMHF5Zo9HEz19citq4BNrR3gjz
         ybdOHgbYtemMeJMnSehOaXiBcy9nuqYtHDlHLfv2WKHoWl0DWC9kB1GL9/h1wn6NMkCh
         Gbbf023YFqjKh36/k6SCs1ENk3a7WyLTPBD2H+yzLaWLPYEkNwChX9X58ztRDnHS20yA
         fPuA==
X-Gm-Message-State: AOJu0Yy/LZ7qu+Kn8H0Zv46I4DYzANRydldptWQtHVjIT1hUdkHR9X3e
	kdOCu2iE9V1npsiTGwFUslVF2X9s9pxZIQ5GgrcZkvdv7WMmag==
X-Google-Smtp-Source: AGHT+IG4Zn9knhmyZBuxU1Fdcb7j3p8yObT7SC5gHZ2BrDYz/iu/BBeubAim1hFkkENV0xGezAE7OZmtyB7RC1f6tdU=
X-Received: by 2002:ac2:5e6f:0:b0:50e:7e55:be9c with SMTP id
 a15-20020ac25e6f000000b0050e7e55be9cmr419274lfr.49.1704968290322; Thu, 11 Jan
 2024 02:18:10 -0800 (PST)
MIME-Version: 1.0
References: <20240102095138.17933-1-carlo.nonato@minervasys.tech>
 <20240102095138.17933-3-carlo.nonato@minervasys.tech> <5eb9fa24-c95e-4ea0-84ef-be74c629c106@xen.org>
 <CAG+AhRW5Xxy7BHVhmfkBqbdeKqRz7E1Mrc7wNv6F+ecM4P_QPw@mail.gmail.com>
In-Reply-To: <CAG+AhRW5Xxy7BHVhmfkBqbdeKqRz7E1Mrc7wNv6F+ecM4P_QPw@mail.gmail.com>
From: Carlo Nonato <carlo.nonato@minervasys.tech>
Date: Thu, 11 Jan 2024 11:17:59 +0100
Message-ID: <CAG+AhRUw23a92v7geAwoDX-vqPLTPUEg3uoyOTThiUzL1CTk7w@mail.gmail.com>
Subject: Re: [PATCH v5 02/13] xen/arm: add cache coloring initialization
To: Julien Grall <julien@xen.org>
Cc: xen-devel@lists.xenproject.org, 
	Stefano Stabellini <sstabellini@kernel.org>, Bertrand Marquis <bertrand.marquis@arm.com>, 
	Michal Orzel <michal.orzel@amd.com>, Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>, 
	Andrew Cooper <andrew.cooper3@citrix.com>, George Dunlap <george.dunlap@citrix.com>, 
	Jan Beulich <jbeulich@suse.com>, Wei Liu <wl@xen.org>, 
	Marco Solieri <marco.solieri@minervasys.tech>
Content-Type: text/plain; charset="UTF-8"

Hi Julien,

> > > +bool __init llc_coloring_init(void)
> > > +{
> > > +    if ( !llc_way_size && !(llc_way_size = get_llc_way_size()) )
> > > +    {
> > > +        printk(XENLOG_ERR
> > > +               "Probed LLC way size is 0 and no custom value provided\n");
> > > +        return false;
> > > +    }
> > > +
> > > +    /*
> > > +     * The maximum number of colors must be a power of 2 in order to correctly
> > > +     * map them to bits of an address, so also the LLC way size must be so.
> > > +     */
> > > +    if ( llc_way_size & (llc_way_size - 1) )
> > > +    {
> > > +        printk(XENLOG_WARNING "LLC way size (%u) isn't a power of 2.\n",
> > > +               llc_way_size);
> > > +        llc_way_size = 1U << flsl(llc_way_size);
> > > +        printk(XENLOG_WARNING
> > > +               "Using %u instead. Performances will be suboptimal\n",
> > > +               llc_way_size);
> > > +    }
> > > +
> > > +    nr_colors = llc_way_size >> PAGE_SHIFT;
> > > +
> > > +    if ( nr_colors < 2 || nr_colors > CONFIG_NR_LLC_COLORS )
> >
> > I didn't find any documentation explaining why we need at least two
> > colors. I guess you want to make sure that there is a color for Xen and
> > domain. But I wonder what could wrong with just one color (other than
> > been pointless)?
>
> Yes, it would just be pointless. I'll change it to 1.

Just wanted to correct myself here. Having just a single color introduces a
clear sharing of the cache between Xen and domains. So it's not just
pointless, but also inefficient. I would discourage such a configuration, so I
plan to better describe this with a range in the Kconfig option (see
discussion in #1).

Thanks


From xen-devel-bounces@lists.xenproject.org Thu Jan 11 10:32:20 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 11 Jan 2024 10:32:20 +0000
Received: from list by lists.xenproject.org with outflank-mailman.666123.1036592 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNsMB-00008Q-0j; Thu, 11 Jan 2024 10:32:15 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 666123.1036592; Thu, 11 Jan 2024 10:32:14 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNsMA-00008J-U6; Thu, 11 Jan 2024 10:32:14 +0000
Received: by outflank-mailman (input) for mailman id 666123;
 Thu, 11 Jan 2024 10:32:13 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=4+ne=IV=cloud.com=roger.pau@srs-se1.protection.inumbo.net>)
 id 1rNsM9-00008D-Fj
 for xen-devel@lists.xenproject.org; Thu, 11 Jan 2024 10:32:13 +0000
Received: from mail-wm1-x331.google.com (mail-wm1-x331.google.com
 [2a00:1450:4864:20::331])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id ae590d52-b06c-11ee-98f0-6d05b1d4d9a1;
 Thu, 11 Jan 2024 11:32:12 +0100 (CET)
Received: by mail-wm1-x331.google.com with SMTP id
 5b1f17b1804b1-40e613b6afbso2915085e9.3
 for <xen-devel@lists.xenproject.org>; Thu, 11 Jan 2024 02:32:12 -0800 (PST)
Received: from localhost ([213.195.127.70]) by smtp.gmail.com with ESMTPSA id
 p12-20020a05600c468c00b0040e56830a35sm1381333wmo.18.2024.01.11.02.32.11
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 11 Jan 2024 02:32:11 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: ae590d52-b06c-11ee-98f0-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1704969132; x=1705573932; darn=lists.xenproject.org;
        h=in-reply-to:content-transfer-encoding:content-disposition
         :mime-version:references:message-id:subject:cc:to:from:date:from:to
         :cc:subject:date:message-id:reply-to;
        bh=BatfChXWOq5UIApCFhClhqrW5DrFkJPGSIQlXTzWDok=;
        b=awul8LNAk1cuVXFw2LAB9kQ0Pi2yIkvFgtBIUz3iwkmLyWBeJ8qD2RsnchoCcvheTE
         XgpkAzg7Grz5xzZSzsuKys+HtTbaJDCMRDR/fDp/89g3VqwatA/IpU0qXVVyiTXyZeY7
         d1QzFGHOIAyofW6mDB1fZe1+cTXwS8RjqP4bg=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704969132; x=1705573932;
        h=in-reply-to:content-transfer-encoding:content-disposition
         :mime-version:references:message-id:subject:cc:to:from:date
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=BatfChXWOq5UIApCFhClhqrW5DrFkJPGSIQlXTzWDok=;
        b=P2F7yxFJKuHU+BOGb+iNX8sF0AtXCtfY6PTR7IsDu6rZJN9wDd7Tj0wf3XExL8Mo4t
         Hc4fG+dj8pl6m3vj7I6+h8tcETV6VIXbKq2xeJSrDPwXNWlfocE/2+a5zrkphaaJ0tzc
         bQ9Xk8kBLm5sqwSgTyC1l73SQ+apBGyqnztUUhPOrq9L+Cie6sifeihJVYGO2dU0caUr
         iOh8LXvx4fstjA0Fd/08zX052qxs8x+KrD8vij8V0d2VNAQlBGAF0z52MH0N9V8qcagu
         8uAZgHYlbkgghEymrP9I0FprANy48+5lU/6eBOghqihUXF6pOz2/TLx0Un12FI2hbA6M
         oNLg==
X-Gm-Message-State: AOJu0YxaD47aVoGqcihVSPYgX8ai+nfnNr/Deuc0WEDQDmXcYhWxqHcI
	6TzptO0Gk9Q0zg8l4aPVGgBuMLVqQznwbQ==
X-Google-Smtp-Source: AGHT+IE4RRugYhLGvjPH+TQEsXu38avj1KXzGB+T1xVnRA2+azYtn/+g7vCPx3P4aXC5AQSeY1aMYQ==
X-Received: by 2002:a05:600c:5128:b0:40e:52de:1571 with SMTP id o40-20020a05600c512800b0040e52de1571mr290922wms.18.1704969131957;
        Thu, 11 Jan 2024 02:32:11 -0800 (PST)
Date: Thu, 11 Jan 2024 11:32:11 +0100
From: Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
To: Jan Beulich <jbeulich@suse.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, Wei Liu <wl@xen.org>,
	xen-devel@lists.xenproject.org
Subject: Re: [PATCH v2] x86/intel: ensure Global Performance Counter Control
 is setup correctly
Message-ID: <ZZ_Dq7taOJmSi7Kb@macbook>
References: <20240111090821.67594-1-roger.pau@citrix.com>
 <d09dfd7c-a266-4c3b-ade6-c537b30b0a1d@suse.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <d09dfd7c-a266-4c3b-ade6-c537b30b0a1d@suse.com>

On Thu, Jan 11, 2024 at 11:00:28AM +0100, Jan Beulich wrote:
> On 11.01.2024 10:08, Roger Pau Monne wrote:
> > When Architectural Performance Monitoring is available, the PERF_GLOBAL_CTRL
> > MSR contains per-counter enable bits that is ANDed with the enable bit in the
> > counter EVNTSEL MSR in order for a PMC counter to be enabled.
> > 
> > So far the watchdog code seems to have relied on the PERF_GLOBAL_CTRL enable
> > bits being set by default, but at least on some Intel Sapphire and Emerald
> > Rapids this is no longer the case, and Xen reports:
> > 
> > Testing NMI watchdog on all CPUs: 0 40 stuck
> > 
> > The first CPU on each package is started with PERF_GLOBAL_CTRL zeroed, so PMC0
> > doesn't start counting when the enable bit in EVNTSEL0 is set, due to the
> > relevant enable bit in PERF_GLOBAL_CTRL not being set.
> > 
> > Check and adjust PERF_GLOBAL_CTRL during CPU initialization so that all the
> > general-purpose PMCs are enabled.  Doing so brings the state of the package-BSP
> > PERF_GLOBAL_CTRL in line with the rest of the CPUs on the system.
> > 
> > Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
> > ---
> > Changes since v1:
> >  - Do the adjustment of PERF_GLOBAL_CTRL even if the watchdog is not used, and
> >    enable all counters.
> > ---
> > Unsure whether printing a warning if the value of PERF_GLOBAL_CTRL is not
> > correct is of any value, hence I haven't added it.
> > ---
> >  xen/arch/x86/cpu/intel.c | 18 +++++++++++++++++-
> >  1 file changed, 17 insertions(+), 1 deletion(-)
> > 
> > diff --git a/xen/arch/x86/cpu/intel.c b/xen/arch/x86/cpu/intel.c
> > index dfee64689ffe..40d3eb0e18a7 100644
> > --- a/xen/arch/x86/cpu/intel.c
> > +++ b/xen/arch/x86/cpu/intel.c
> > @@ -533,9 +533,25 @@ static void cf_check init_intel(struct cpuinfo_x86 *c)
> >  	init_intel_cacheinfo(c);
> >  	if (c->cpuid_level > 9) {
> >  		unsigned eax = cpuid_eax(10);
> > +		unsigned int cnt = (uint8_t)(eax >> 8);
> 
> (Not just) since ./CODING_STYLE wants us to avoid fixed width types where
> possible, personally I'd prefer "& 0xff" here.

Hm, OK.  I got confused and somehow was under the impression we prefer
to truncate using fixed types rather than masks.

> >  		/* Check for version and the number of counters */
> > -		if ((eax & 0xff) && (((eax>>8) & 0xff) > 1))
> > +		if ((eax & 0xff) && (cnt > 1) && (cnt <= 32)) {
> > +			uint64_t global_ctrl;
> > +			unsigned int cnt_mask = (1UL << cnt) - 1;
> > +
> > +			/*
> > +			 * On (some?) Sapphire/Emerald Rapids platforms each
> > +			 * package-BSP starts with all the enable bits for the
> > +			 * general-purpose PMCs cleared.  Adjust so counters
> > +			 * can be enabled from EVNTSEL.
> > +			 */
> > +			rdmsrl(MSR_CORE_PERF_GLOBAL_CTRL, global_ctrl);
> > +			if ((global_ctrl & cnt_mask) != cnt_mask)
> > +				wrmsrl(MSR_CORE_PERF_GLOBAL_CTRL,
> > +				       global_ctrl | cnt_mask);
> 
> Should there perhaps be a log message?

I had a post-commit remark about that exactly.  I can add one.

Thanks, Roger.


From xen-devel-bounces@lists.xenproject.org Thu Jan 11 10:38:55 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 11 Jan 2024 10:38:55 +0000
Received: from list by lists.xenproject.org with outflank-mailman.666128.1036603 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNsSW-00017B-N1; Thu, 11 Jan 2024 10:38:48 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 666128.1036603; Thu, 11 Jan 2024 10:38:48 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNsSW-000174-Jx; Thu, 11 Jan 2024 10:38:48 +0000
Received: by outflank-mailman (input) for mailman id 666128;
 Thu, 11 Jan 2024 10:38:47 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=YFj+=IV=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rNsSU-00015k-VB
 for xen-devel@lists.xenproject.org; Thu, 11 Jan 2024 10:38:46 +0000
Received: from mail-wm1-x336.google.com (mail-wm1-x336.google.com
 [2a00:1450:4864:20::336])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 9811e4e0-b06d-11ee-9b0f-b553b5be7939;
 Thu, 11 Jan 2024 11:38:44 +0100 (CET)
Received: by mail-wm1-x336.google.com with SMTP id
 5b1f17b1804b1-40e60e135a7so2803145e9.0
 for <xen-devel@lists.xenproject.org>; Thu, 11 Jan 2024 02:38:44 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 l17-20020a05600c1d1100b0040e4a2b36bfsm5246307wms.22.2024.01.11.02.38.43
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 11 Jan 2024 02:38:43 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 9811e4e0-b06d-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1704969524; x=1705574324; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=/sji6w4RGV0612cgmk74/UKPs9DCXLsDnkOnjW+dp3E=;
        b=A3x4chPZY8p9xd8IzoZWn2t/SOJIbcvfakw1E0tR7Cr8v2JevPOKJEw6PKxtR2IJQM
         yS/R1/vgP3b/FKSBFsP3CH6VDmze/DMeXX03Pt0lPxu0n0f71T0D0l0/4sx9sgsajenh
         Xz8Y6lodAWQNJAsMj7xEeSHGemj+qxaRFpZeBwYlDYsdumebuvQjPLRhTp5OQiBRB6B8
         +CAEtrhfgraoFEKOPVSPYDpZxtxVJGeecEu7giVLrpfGFVPvrnIwWwidi4+RkGpWd8Fq
         sl6cTKIzNh3WBOJQYZCxnaOPmVBLIpingx0de7lk2bHzYBfd/6YdphCdI5UWMl+prwDW
         ASVA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704969524; x=1705574324;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=/sji6w4RGV0612cgmk74/UKPs9DCXLsDnkOnjW+dp3E=;
        b=uZt3HPl/mAjQcAvQQ9N234lX4W9qa39FYbnvaTMETlTxIgRILZ/cQuTvvBhrAHuEoZ
         W62lrVA7x8KKYxMoSnIN+2AaWsK2UzrOPyxXKw3M85Yrf8g4KbnsnaHtsDFAVSMTG+Xe
         xkwy72yGp3r1rd9jApqZMh+cyHeHd984rwTbs4Dg4UiERbfzhWlzd17ruF1Q2UF7s4Ko
         6J/YBHoMnJqTH814UpyZ7hFmGbPjcqO4R/5ixQMVGzhJjaSHwkwLGUYcNEiio3aB9rOM
         S8YIq1Rh+qFiLkr3QRYzxEmjUxABU3dBLIGXG+USdtL7CA+86rwTG2LXUB7rD0oNx+Qd
         2QwA==
X-Gm-Message-State: AOJu0YwGoOr7BGK8puNARsPy8y75r3sMOjZUZLnoPUPSy07oOd8uFjpj
	RyCnZrQVP+Bm3V5oIRZW6U5q+aEugxE7
X-Google-Smtp-Source: AGHT+IHZU+urPWNNqKS75ck30CCuGg3AdQUEy6pOIkJZA7UJ9tdW4QkAI/0IxEwE8PwvGrDbAC2b/A==
X-Received: by 2002:a05:600c:350b:b0:40e:52fd:81bd with SMTP id h11-20020a05600c350b00b0040e52fd81bdmr280791wmq.93.1704969524063;
        Thu, 11 Jan 2024 02:38:44 -0800 (PST)
Message-ID: <0b1677ed-03fe-488c-b271-a51e4c00be77@suse.com>
Date: Thu, 11 Jan 2024 11:38:42 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2] x86/intel: ensure Global Performance Counter Control
 is setup correctly
Content-Language: en-US
To: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, Wei Liu <wl@xen.org>,
 xen-devel@lists.xenproject.org
References: <20240111090821.67594-1-roger.pau@citrix.com>
 <d09dfd7c-a266-4c3b-ade6-c537b30b0a1d@suse.com> <ZZ_Dq7taOJmSi7Kb@macbook>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <ZZ_Dq7taOJmSi7Kb@macbook>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 11.01.2024 11:32, Roger Pau Monné wrote:
> On Thu, Jan 11, 2024 at 11:00:28AM +0100, Jan Beulich wrote:
>> On 11.01.2024 10:08, Roger Pau Monne wrote:
>>> When Architectural Performance Monitoring is available, the PERF_GLOBAL_CTRL
>>> MSR contains per-counter enable bits that is ANDed with the enable bit in the
>>> counter EVNTSEL MSR in order for a PMC counter to be enabled.
>>>
>>> So far the watchdog code seems to have relied on the PERF_GLOBAL_CTRL enable
>>> bits being set by default, but at least on some Intel Sapphire and Emerald
>>> Rapids this is no longer the case, and Xen reports:
>>>
>>> Testing NMI watchdog on all CPUs: 0 40 stuck
>>>
>>> The first CPU on each package is started with PERF_GLOBAL_CTRL zeroed, so PMC0
>>> doesn't start counting when the enable bit in EVNTSEL0 is set, due to the
>>> relevant enable bit in PERF_GLOBAL_CTRL not being set.
>>>
>>> Check and adjust PERF_GLOBAL_CTRL during CPU initialization so that all the
>>> general-purpose PMCs are enabled.  Doing so brings the state of the package-BSP
>>> PERF_GLOBAL_CTRL in line with the rest of the CPUs on the system.
>>>
>>> Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
>>> ---
>>> Changes since v1:
>>>  - Do the adjustment of PERF_GLOBAL_CTRL even if the watchdog is not used, and
>>>    enable all counters.
>>> ---
>>> Unsure whether printing a warning if the value of PERF_GLOBAL_CTRL is not
>>> correct is of any value, hence I haven't added it.
>>> ---
>>>  xen/arch/x86/cpu/intel.c | 18 +++++++++++++++++-
>>>  1 file changed, 17 insertions(+), 1 deletion(-)
>>>
>>> diff --git a/xen/arch/x86/cpu/intel.c b/xen/arch/x86/cpu/intel.c
>>> index dfee64689ffe..40d3eb0e18a7 100644
>>> --- a/xen/arch/x86/cpu/intel.c
>>> +++ b/xen/arch/x86/cpu/intel.c
>>> @@ -533,9 +533,25 @@ static void cf_check init_intel(struct cpuinfo_x86 *c)
>>>  	init_intel_cacheinfo(c);
>>>  	if (c->cpuid_level > 9) {
>>>  		unsigned eax = cpuid_eax(10);
>>> +		unsigned int cnt = (uint8_t)(eax >> 8);
>>
>> (Not just) since ./CODING_STYLE wants us to avoid fixed width types where
>> possible, personally I'd prefer "& 0xff" here.
> 
> Hm, OK.  I got confused and somehow was under the impression we prefer
> to truncate using fixed types rather than masks.

It's on the edge I admit, and iirc e.g. Andrew would rather see
./CODING_STYLE be relaxed some again.

>>>  		/* Check for version and the number of counters */
>>> -		if ((eax & 0xff) && (((eax>>8) & 0xff) > 1))
>>> +		if ((eax & 0xff) && (cnt > 1) && (cnt <= 32)) {
>>> +			uint64_t global_ctrl;
>>> +			unsigned int cnt_mask = (1UL << cnt) - 1;
>>> +
>>> +			/*
>>> +			 * On (some?) Sapphire/Emerald Rapids platforms each
>>> +			 * package-BSP starts with all the enable bits for the
>>> +			 * general-purpose PMCs cleared.  Adjust so counters
>>> +			 * can be enabled from EVNTSEL.
>>> +			 */
>>> +			rdmsrl(MSR_CORE_PERF_GLOBAL_CTRL, global_ctrl);
>>> +			if ((global_ctrl & cnt_mask) != cnt_mask)
>>> +				wrmsrl(MSR_CORE_PERF_GLOBAL_CTRL,
>>> +				       global_ctrl | cnt_mask);
>>
>> Should there perhaps be a log message?
> 
> I had a post-commit remark about that exactly.  I can add one.

Oh, sorry, missed that. Imo for firmware bugs it's useful to record.
Further, if such a messages is emitted first, in the (hopefully)
unlikely event of the WRMSR causing an issue, there'll be an immediate
reference of what's going on.

Jan


From xen-devel-bounces@lists.xenproject.org Thu Jan 11 10:40:18 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 11 Jan 2024 10:40:18 +0000
Received: from list by lists.xenproject.org with outflank-mailman.666132.1036612 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNsTy-0002pT-0T; Thu, 11 Jan 2024 10:40:18 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 666132.1036612; Thu, 11 Jan 2024 10:40:17 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNsTx-0002pM-Tf; Thu, 11 Jan 2024 10:40:17 +0000
Received: by outflank-mailman (input) for mailman id 666132;
 Thu, 11 Jan 2024 10:40:16 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=4+ne=IV=cloud.com=roger.pau@srs-se1.protection.inumbo.net>)
 id 1rNsTw-0002pE-7q
 for xen-devel@lists.xenproject.org; Thu, 11 Jan 2024 10:40:16 +0000
Received: from mail-wm1-x330.google.com (mail-wm1-x330.google.com
 [2a00:1450:4864:20::330])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id cd849f86-b06d-11ee-9b0f-b553b5be7939;
 Thu, 11 Jan 2024 11:40:14 +0100 (CET)
Received: by mail-wm1-x330.google.com with SMTP id
 5b1f17b1804b1-40e55c885d7so19276465e9.0
 for <xen-devel@lists.xenproject.org>; Thu, 11 Jan 2024 02:40:14 -0800 (PST)
Received: from localhost ([213.195.127.70]) by smtp.gmail.com with ESMTPSA id
 dr18-20020a5d5f92000000b0033677a4e0d6sm894382wrb.13.2024.01.11.02.40.13
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 11 Jan 2024 02:40:13 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: cd849f86-b06d-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1704969614; x=1705574414; darn=lists.xenproject.org;
        h=in-reply-to:content-transfer-encoding:content-disposition
         :mime-version:references:message-id:subject:cc:to:from:date:from:to
         :cc:subject:date:message-id:reply-to;
        bh=B+1HqSBzPcwu1yBY/92f0JW3tx+vbgkTdNGugWbez+g=;
        b=TD5kIoFLbHbs/QxbpakzgE86hHeFxB4O+Top1LLnixqFKLqOQeHijwOPhUsIeZbclQ
         RQEo/vhFDdG2M5gu76XHRzmEKh5/sGIQOuz4If2iwPGhNwTYz1GuZh2mr4QVouCb92fr
         zF27FggbkyT5jUeDc44A5W4ufw2pdh1yNDgx8=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704969614; x=1705574414;
        h=in-reply-to:content-transfer-encoding:content-disposition
         :mime-version:references:message-id:subject:cc:to:from:date
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=B+1HqSBzPcwu1yBY/92f0JW3tx+vbgkTdNGugWbez+g=;
        b=RfQOALonktogyylPpOiNnSRXNqA/EyWN6nmtzoCpxb8ooHYw3GYcqPEG9S90tACr7D
         uUY5zLgnVx84IUCMxGDeKs7kcU84sVc1KhKdbvJZjMyH6K4tqjunvc/kAK+Ua7YLZPb8
         ktIz4u4tUB4t53aBNSGajKG6QFCB7uEmG4jn9zFldNfpTSnsYdo6GVXcKUOgsWebqSrz
         I6N+XI4f7YvjPv6Y4o9wjCHOSg2r0H014Kar4vfzhWmzDgz8f9hveaqecKWSt4s3FnOL
         h+6CpPdUAFKV4Ma5tTSnlJeNRp/uIRreiD9o5Yv7YeyDUGarYgEx0OC7wQQ9CTiMcBQv
         ShNA==
X-Gm-Message-State: AOJu0YyNKUrfCrcm2Sa3CIj1MBFvlEcbSsDgGvbtf1fwozhWSWAQ5TV4
	Ul+z0SXfh8pSNJKhP9/AaGDsH8g3EfNKMjXbCz2Olb8xMUU=
X-Google-Smtp-Source: AGHT+IGpAXIkYmHTJMlDZpjVu9aJf16pDSVx8lMx65czWN3theWMDuEmhQsDB6SFo48YQ9l7RoX3Xg==
X-Received: by 2002:a05:600c:43c3:b0:40d:6582:4729 with SMTP id f3-20020a05600c43c300b0040d65824729mr299462wmn.130.1704969613749;
        Thu, 11 Jan 2024 02:40:13 -0800 (PST)
Date: Thu, 11 Jan 2024 11:40:12 +0100
From: Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
To: Jan Beulich <jbeulich@suse.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, Wei Liu <wl@xen.org>,
	xen-devel@lists.xenproject.org
Subject: Re: [PATCH v2] x86/intel: ensure Global Performance Counter Control
 is setup correctly
Message-ID: <ZZ_FjFa9mILtDZgv@macbook>
References: <20240111090821.67594-1-roger.pau@citrix.com>
 <3428928a-42d0-4e4b-9607-c184968c309d@suse.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <3428928a-42d0-4e4b-9607-c184968c309d@suse.com>

On Thu, Jan 11, 2024 at 11:11:07AM +0100, Jan Beulich wrote:
> On 11.01.2024 10:08, Roger Pau Monne wrote:
> > When Architectural Performance Monitoring is available, the PERF_GLOBAL_CTRL
> > MSR contains per-counter enable bits that is ANDed with the enable bit in the
> > counter EVNTSEL MSR in order for a PMC counter to be enabled.
> > 
> > So far the watchdog code seems to have relied on the PERF_GLOBAL_CTRL enable
> > bits being set by default, but at least on some Intel Sapphire and Emerald
> > Rapids this is no longer the case, and Xen reports:
> > 
> > Testing NMI watchdog on all CPUs: 0 40 stuck
> > 
> > The first CPU on each package is started with PERF_GLOBAL_CTRL zeroed, so PMC0
> > doesn't start counting when the enable bit in EVNTSEL0 is set, due to the
> > relevant enable bit in PERF_GLOBAL_CTRL not being set.
> > 
> > Check and adjust PERF_GLOBAL_CTRL during CPU initialization so that all the
> > general-purpose PMCs are enabled.  Doing so brings the state of the package-BSP
> > PERF_GLOBAL_CTRL in line with the rest of the CPUs on the system.
> > 
> > Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
> > ---
> > Changes since v1:
> >  - Do the adjustment of PERF_GLOBAL_CTRL even if the watchdog is not used, and
> >    enable all counters.
> > ---
> > Unsure whether printing a warning if the value of PERF_GLOBAL_CTRL is not
> > correct is of any value, hence I haven't added it.
> > ---
> >  xen/arch/x86/cpu/intel.c | 18 +++++++++++++++++-
> >  1 file changed, 17 insertions(+), 1 deletion(-)
> > 
> > diff --git a/xen/arch/x86/cpu/intel.c b/xen/arch/x86/cpu/intel.c
> > index dfee64689ffe..40d3eb0e18a7 100644
> > --- a/xen/arch/x86/cpu/intel.c
> > +++ b/xen/arch/x86/cpu/intel.c
> > @@ -533,9 +533,25 @@ static void cf_check init_intel(struct cpuinfo_x86 *c)
> >  	init_intel_cacheinfo(c);
> >  	if (c->cpuid_level > 9) {
> >  		unsigned eax = cpuid_eax(10);
> > +		unsigned int cnt = (uint8_t)(eax >> 8);
> > +
> >  		/* Check for version and the number of counters */
> > -		if ((eax & 0xff) && (((eax>>8) & 0xff) > 1))
> > +		if ((eax & 0xff) && (cnt > 1) && (cnt <= 32)) {
> 
> I may not have looked closely enough, but I didn't find the limit of
> 32 being stated anywhere.

Hm, my copy of the SDM vol4 states that bits 31:n are the enable bits,
where n is CPUID.0AH: EAX[15:8].  Bits 32, 33 and 34 control the Fixed
PMCs.

> > +			uint64_t global_ctrl;
> > +			unsigned int cnt_mask = (1UL << cnt) - 1;
> 
> Bits 2 + 4 * n have an additional qualification as per SDM vol 4.

Let me update my copy...

Looking at the version from December 2023, I see:

0 EN_PMC0 If CPUID.0AH: EAX[15:8] > 0
1 EN_PMC1 If CPUID.0AH: EAX[15:8] > 1
2 EN_PMC2 If CPUID.0AH: EAX[15:8] > 2
n EN_PMCn If CPUID.0AH: EAX[15:8] > n
31:n+1 Reserved.

And I'm afraid I'm not able to infer this additional qualification of
bits 2 + 4 * n.

Thanks, Roger.


From xen-devel-bounces@lists.xenproject.org Thu Jan 11 10:44:21 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 11 Jan 2024 10:44:21 +0000
Received: from list by lists.xenproject.org with outflank-mailman.666138.1036623 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNsXo-0004Wc-Ky; Thu, 11 Jan 2024 10:44:16 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 666138.1036623; Thu, 11 Jan 2024 10:44:16 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNsXo-0004WV-HP; Thu, 11 Jan 2024 10:44:16 +0000
Received: by outflank-mailman (input) for mailman id 666138;
 Thu, 11 Jan 2024 10:44:16 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>) id 1rNsXn-0004WP-Vg
 for xen-devel@lists.xenproject.org; Thu, 11 Jan 2024 10:44:15 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rNsXn-0002ol-7k; Thu, 11 Jan 2024 10:44:15 +0000
Received: from [15.248.2.234] (helo=[10.24.67.34])
 by xenbits.xenproject.org with esmtpsa
 (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rNsXm-0007Wh-Vf; Thu, 11 Jan 2024 10:44:15 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
	s=20200302mail; h=Content-Transfer-Encoding:Content-Type:In-Reply-To:From:
	References:Cc:To:Subject:MIME-Version:Date:Message-ID;
	bh=/NaCdFOeRBPXTsYcNlqEuqOGit/PLOF/lMB+OOgk/U8=; b=qf7xIXYie2Wc46rUULKRt0VTL5
	yVbrmps71UjVSrGCdiuSmyOyXL3bzojIn3buBQjmTrMrmm/rjk7dHlkTzkNoKI3Lc9mf4f/l+7yzX
	97OpY0u6rZ9YqNVzy199wHnhq6h4kbpT5V0eXCOX2UfrLrzhjFN+Mcm4+5C5fmXdw0CY=;
Message-ID: <c31bf4a3-979a-4445-905c-6a5545f8a36b@xen.org>
Date: Thu, 11 Jan 2024 10:44:12 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v5 02/13] xen/arm: add cache coloring initialization
To: Carlo Nonato <carlo.nonato@minervasys.tech>
Cc: xen-devel@lists.xenproject.org,
 Stefano Stabellini <sstabellini@kernel.org>,
 Bertrand Marquis <bertrand.marquis@arm.com>,
 Michal Orzel <michal.orzel@amd.com>,
 Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
 Andrew Cooper <andrew.cooper3@citrix.com>,
 George Dunlap <george.dunlap@citrix.com>, Jan Beulich <jbeulich@suse.com>,
 Wei Liu <wl@xen.org>, Marco Solieri <marco.solieri@minervasys.tech>
References: <20240102095138.17933-1-carlo.nonato@minervasys.tech>
 <20240102095138.17933-3-carlo.nonato@minervasys.tech>
 <5eb9fa24-c95e-4ea0-84ef-be74c629c106@xen.org>
 <CAG+AhRW5Xxy7BHVhmfkBqbdeKqRz7E1Mrc7wNv6F+ecM4P_QPw@mail.gmail.com>
 <CAG+AhRUw23a92v7geAwoDX-vqPLTPUEg3uoyOTThiUzL1CTk7w@mail.gmail.com>
Content-Language: en-GB
From: Julien Grall <julien@xen.org>
In-Reply-To: <CAG+AhRUw23a92v7geAwoDX-vqPLTPUEg3uoyOTThiUzL1CTk7w@mail.gmail.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit



On 11/01/2024 10:17, Carlo Nonato wrote:
> Hi Julien,

Hi Carlo,

>>>> +bool __init llc_coloring_init(void)
>>>> +{
>>>> +    if ( !llc_way_size && !(llc_way_size = get_llc_way_size()) )
>>>> +    {
>>>> +        printk(XENLOG_ERR
>>>> +               "Probed LLC way size is 0 and no custom value provided\n");
>>>> +        return false;
>>>> +    }
>>>> +
>>>> +    /*
>>>> +     * The maximum number of colors must be a power of 2 in order to correctly
>>>> +     * map them to bits of an address, so also the LLC way size must be so.
>>>> +     */
>>>> +    if ( llc_way_size & (llc_way_size - 1) )
>>>> +    {
>>>> +        printk(XENLOG_WARNING "LLC way size (%u) isn't a power of 2.\n",
>>>> +               llc_way_size);
>>>> +        llc_way_size = 1U << flsl(llc_way_size);
>>>> +        printk(XENLOG_WARNING
>>>> +               "Using %u instead. Performances will be suboptimal\n",
>>>> +               llc_way_size);
>>>> +    }
>>>> +
>>>> +    nr_colors = llc_way_size >> PAGE_SHIFT;
>>>> +
>>>> +    if ( nr_colors < 2 || nr_colors > CONFIG_NR_LLC_COLORS )
>>>
>>> I didn't find any documentation explaining why we need at least two
>>> colors. I guess you want to make sure that there is a color for Xen and
>>> domain. But I wonder what could wrong with just one color (other than
>>> been pointless)?
>>
>> Yes, it would just be pointless. I'll change it to 1.
> 
> Just wanted to correct myself here. Having just a single color introduces a
> clear sharing of the cache between Xen and domains. So it's not just
> pointless, but also inefficient. I would discourage such a configuration, so I
> plan to better describe this with a range in the Kconfig option (see
> discussion in #1).

I understand this could be inneficient. But you are also allowing the 
user to not specify the color configuration (at least for dom0less 
domain). So the colors would end up to shared with everyone (including Xen).

I don't particularly mind which way you want to go, but I think we need 
some coherency. If we want to avoid innefficiency, then we should 
prevent all the setups.

Cheers,

-- 
Julien Grall


From xen-devel-bounces@lists.xenproject.org Thu Jan 11 10:48:20 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 11 Jan 2024 10:48:20 +0000
Received: from list by lists.xenproject.org with outflank-mailman.666145.1036633 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNsbj-0005Wb-42; Thu, 11 Jan 2024 10:48:19 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 666145.1036633; Thu, 11 Jan 2024 10:48:19 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNsbj-0005WU-1A; Thu, 11 Jan 2024 10:48:19 +0000
Received: by outflank-mailman (input) for mailman id 666145;
 Thu, 11 Jan 2024 10:48:17 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=c5Cn=IV=amazon.co.uk=prvs=73372ff43=eliasely@srs-se1.protection.inumbo.net>)
 id 1rNsbh-0005WO-Qb
 for xen-devel@lists.xenproject.org; Thu, 11 Jan 2024 10:48:17 +0000
Received: from smtp-fw-9102.amazon.com (smtp-fw-9102.amazon.com
 [207.171.184.29]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id e49a174c-b06e-11ee-9b0f-b553b5be7939;
 Thu, 11 Jan 2024 11:48:03 +0100 (CET)
Received: from pdx4-co-svc-p1-lb2-vlan3.amazon.com (HELO
 email-inbound-relay-pdx-2b-m6i4x-a893d89c.us-west-2.amazon.com)
 ([10.25.36.214]) by smtp-border-fw-9102.sea19.amazon.com with
 ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 11 Jan 2024 10:47:55 +0000
Received: from smtpout.prod.us-east-1.prod.farcaster.email.amazon.dev
 (pdx2-ws-svc-p26-lb5-vlan2.pdx.amazon.com [10.39.38.66])
 by email-inbound-relay-pdx-2b-m6i4x-a893d89c.us-west-2.amazon.com (Postfix)
 with ESMTPS id 4583D41092; Thu, 11 Jan 2024 10:47:54 +0000 (UTC)
Received: from EX19MTAEUB001.ant.amazon.com [10.0.43.254:62621]
 by smtpin.naws.eu-west-1.prod.farcaster.email.amazon.dev [10.0.47.189:2525]
 with esmtp (Farcaster)
 id 6501f36b-f066-4c5d-a5f5-94238a3f5c59; Thu, 11 Jan 2024 10:47:53 +0000 (UTC)
Received: from EX19D018EUA002.ant.amazon.com (10.252.50.146) by
 EX19MTAEUB001.ant.amazon.com (10.252.51.26) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1118.40; Thu, 11 Jan 2024 10:47:53 +0000
Received: from [10.95.99.82] (10.95.99.82) by EX19D018EUA002.ant.amazon.com
 (10.252.50.146) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1118.40; Thu, 11 Jan
 2024 10:47:49 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: e49a174c-b06e-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
  d=amazon.com; i=@amazon.com; q=dns/txt; s=amazon201209;
  t=1704970084; x=1736506084;
  h=message-id:date:mime-version:from:subject:to:cc:
   references:in-reply-to:content-transfer-encoding;
  bh=CfwwQc2KmGR36m1dd3AfRZExsPllzd43VXGN7zgsSqg=;
  b=sgd6WUp3n/Vdp7MxjZtbnPTFHsywGqw0GzUpGbWKli8OV9X5bDe2QIhE
   k5UuCepgTfWomrth4J6NMw+34SyLWCMIZ20gnMtMSg+w1cLfC0Wt+767F
   MJ0q32dES+Y31fO2e9GPk/yZEOU1Gmf0XvQUHHcTzYnp7b1y2Jrl8uEW5
   A=;
X-IronPort-AV: E=Sophos;i="6.04,185,1695686400"; 
   d="scan'208";a="389113682"
X-Farcaster-Flow-ID: 6501f36b-f066-4c5d-a5f5-94238a3f5c59
Message-ID: <bc989828-69b9-4919-9ff3-fdd53fb2def1@amazon.com>
Date: Thu, 11 Jan 2024 10:47:45 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
From: Elias El Yandouzi <eliasely@amazon.com>
Subject: Re: [PATCH 11/22] x86: add a boot option to enable and disable the
 direct map
To: Jan Beulich <jbeulich@suse.com>, Julien Grall <julien@xen.org>
CC: Hongyan Xia <hongyxia@amazon.com>, Andrew Cooper
	<andrew.cooper3@citrix.com>, George Dunlap <george.dunlap@citrix.com>,
	Stefano Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>, "Bertrand
 Marquis" <bertrand.marquis@arm.com>, Volodymyr Babchuk
	<Volodymyr_Babchuk@epam.com>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
	<roger.pau@citrix.com>, Julien Grall <jgrall@amazon.com>,
	<xen-devel@lists.xenproject.org>
References: <20221216114853.8227-1-julien@xen.org>
 <20221216114853.8227-12-julien@xen.org>
 <fc70f967-34bb-9569-f514-7a3208e746c6@suse.com>
Content-Language: en-US
In-Reply-To: <fc70f967-34bb-9569-f514-7a3208e746c6@suse.com>
Content-Type: text/plain; charset="UTF-8"; format=flowed
Content-Transfer-Encoding: 7bit
X-Originating-IP: [10.95.99.82]
X-ClientProxiedBy: EX19D032UWA004.ant.amazon.com (10.13.139.56) To
 EX19D018EUA002.ant.amazon.com (10.252.50.146)
Precedence: Bulk

Hi,

On 22/12/2022 13:24, Jan Beulich wrote:
> That said, I think this change comes too early in the series, or there is
> something missing. 

At first, I had the same feeling but looking at the rest of the series, 
I can see that the option is needed in follow-up patches.

> As said in reply to patch 10, while there the mapcache
> is being initialized for the idle domain, I don't think it can be used
> just yet. Read through mapcache_current_vcpu() to understand why I think
> that way, paying particular attention to the ASSERT() near the end.

Would be able to elaborate a bit more why you think that? I haven't been 
able to get your point.

> In preparation of this patch here I think the mfn_to_virt() uses have to all
> disappear from map_domain_page(). Perhaps yet more strongly all
> ..._to_virt() (except fix_to_virt() and friends) and __va() have to
> disappear up front from x86 and any code path which can be taken on x86
> (which may simply mean purging all respective x86 #define-s, without
> breaking the build in any way).

I agree with you on that one. I think it is what we're aiming for in the 
long term. However, as mentioned by Julien in the cover letter, the 
series's name is a misnomer and I am afraid we won't be able to remove 
all of them with this series. These helpers would still be used for 
xenheap pages or when the direct map is enabled.

-- 
Elias


From xen-devel-bounces@lists.xenproject.org Thu Jan 11 10:50:53 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 11 Jan 2024 10:50:53 +0000
Received: from list by lists.xenproject.org with outflank-mailman.666149.1036642 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNse6-0007T9-FI; Thu, 11 Jan 2024 10:50:46 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 666149.1036642; Thu, 11 Jan 2024 10:50:46 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNse6-0007T2-Ch; Thu, 11 Jan 2024 10:50:46 +0000
Received: by outflank-mailman (input) for mailman id 666149;
 Thu, 11 Jan 2024 10:50:44 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=Zprx=IV=cloud.com=javi.merino@srs-se1.protection.inumbo.net>)
 id 1rNse4-0007Sw-MZ
 for xen-devel@lists.xenproject.org; Thu, 11 Jan 2024 10:50:44 +0000
Received: from mail-yw1-x1133.google.com (mail-yw1-x1133.google.com
 [2607:f8b0:4864:20::1133])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 2195d70b-b06f-11ee-98f0-6d05b1d4d9a1;
 Thu, 11 Jan 2024 11:49:45 +0100 (CET)
Received: by mail-yw1-x1133.google.com with SMTP id
 00721157ae682-5edfcba97e3so54556787b3.2
 for <xen-devel@lists.xenproject.org>; Thu, 11 Jan 2024 02:49:45 -0800 (PST)
Received: from jmerino-thinkstation (default-46-102-197-194.interdsl.co.uk.
 [46.102.197.194]) by smtp.gmail.com with ESMTPSA id
 p7-20020ac87407000000b00427fa8b8159sm323949qtq.76.2024.01.11.02.49.43
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 11 Jan 2024 02:49:43 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 2195d70b-b06f-11ee-98f0-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1704970184; x=1705574984; darn=lists.xenproject.org;
        h=in-reply-to:content-disposition:mime-version:references:message-id
         :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to;
        bh=s/Q1hglMlj4OJC0XKF8weObxizmgM539bIkSfZVJyfM=;
        b=LA1dTDGZIp2vvM0wqtymqIVoDU3Q6yb6FxpQ0wCozd3k6olMNZ5sp/uRMCFHX40rNc
         u5k82IRTYmqx085Iln5r62+iQsXeYdkZyQtbrGr1hQqT/20HT/2BSua5S4ifTtG1GHiG
         alFAMkyVLoUe9g7PXlZKl+yMTcWrqsHChDER0=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704970184; x=1705574984;
        h=in-reply-to:content-disposition:mime-version:references:message-id
         :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to;
        bh=s/Q1hglMlj4OJC0XKF8weObxizmgM539bIkSfZVJyfM=;
        b=nyxmRWJV46A0KU4cPT7a6jUI9IgWD/TPsau1wDhx7JCJaRcEVY5LKYGQSAIlDrTQYL
         7kibZ3WVPdCtzKkAO5VefrbHC5gyEWSpPtDuLo/NamwSyGXWjyuOSkARP4+zbJYtXn5f
         pujilJVjeZQmkYHMcnLpubGdg9Gr/MAr5gVBL07K09HTH1B5Vp9EVfoWXx+B+Ox4slvf
         CMYmpwQqcIPZgGLHCM3zS6XaIyOWU1YHjj4YoiY2cTD2lsnAUuhhzUOX0adnPi7J0EFt
         UhP8Pgb97KjERd0jN+jFgt+CzDa3x9cWFwNJQ17bwfv3aXjGPrL12X6E/l1MN4/cvghS
         0Qhg==
X-Gm-Message-State: AOJu0Yxl4FwR58331QURbgaUibj6lyGXSo9e6SExZnSOCVEoXvYavBG7
	cVIiFheC9+XdN5UQcv+dcAOQZugffwJKOf4zobWqi3JcU14=
X-Google-Smtp-Source: AGHT+IFuv0LaRHNAQ/DBGGCWbbVCNRgFHuBNa6cY35PYWVj9eJUURtNM4Bo7VZ8nWzhrBiy9s+X/1g==
X-Received: by 2002:a05:6902:4f4:b0:dbe:80c0:fdfb with SMTP id w20-20020a05690204f400b00dbe80c0fdfbmr889237ybs.9.1704970184200;
        Thu, 11 Jan 2024 02:49:44 -0800 (PST)
Date: Thu, 11 Jan 2024 10:49:41 +0000
From: Javi Merino <javi.merino@cloud.com>
To: Vikram Garhwal <vikram.garhwal@amd.com>
Cc: Julien Grall <julien@xen.org>, xen-devel@lists.xenproject.org, 
	Stefano Stabellini <sstabellini@kernel.org>
Subject: Re: [PATCH for-4.18 v1] xen/common: Don't dereference overlay_node
 after checking that it is NULL
Message-ID: <yjlv6552ddrw7cm6hkoffwus7zflitz4a7lwtoa6txfy6lvsgy@rkvnvhdobdlg>
References: <6b2db92de764b6031647926d27cb14dd455eff7d.1704809355.git.javi.merino@cloud.com>
 <e579994b-80ff-42db-bf57-6c6068fca902@xen.org>
 <ZZ79VcZ1eCqfny-j@amd.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
In-Reply-To: <ZZ79VcZ1eCqfny-j@amd.com>

On Wed, Jan 10, 2024 at 12:25:57PM -0800, Vikram Garhwal wrote:
> Hi Javi,
> Thank you for spotting and fixing this.

Hi Vikram,

> On Tue, Jan 09, 2024 at 03:31:55PM +0000, Julien Grall wrote:
> > On 09/01/2024 14:19, Javi Merino wrote:
> > > In remove_nodes(), overlay_node is dereferenced when printing the
> > > error message even though it is known to be NULLL.  Fix the error
> > 
> > Typo: s/NULLL/NULL/
> > 
> > This can be fixed on commit if there is nothing else.
> > 
> > > message to avoid dereferencing a NULL pointer.
> > > 
> > > The semantic patch that spots this code is available in
> > > 
> > > https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/scripts/coccinelle/null/deref_null.cocci?id=1f874787ed9a2d78ed59cb21d0d90ac0178eceb0
> > 
> > Good catch and glad to see that coccinelle can work on Xen. I am looking
> > forward for more work in that area :).
> > 
> > > 
> > > Fixes: 7e5c4a8b86f1 ("xen/arm: Implement device tree node removal functionalities")
> > > Signed-off-by: Javi Merino <javi.merino@cloud.com>
> > c> ---
> > > CC: Vikram Garhwal <vikram.garhwal@amd.com>
> > > 
> > > Vikram, I didn't know what to put in the error message.  Feel free to
> > > suggest something more appropriate than "Device not present in the
> > > tree".
> > 
> > More questions for Vikram, looking at the code, it is not 100% clear in
> > which condition overlay_node could be NULL. Is this a programming error? if
> > so, maybe this should be an ASSERT_UNREACHABLE() (could be added separately)
> > and it would be fine to print nothing.
> > 
> This can happen with failures in add_nodes() function. add_nodes() failure will
> try to call remove_nodes function. Depending on where add_nodes() is failed,
> nodes_address may or may not be NULL.
> 
> We also added a detailed comment on this:
> https://github.com/xen-project/xen/blob/5a3ace21f3d779b291a2d305824b2820d88de7f1/xen/common/dt-overlay.c#L816
> 
> For now, we can return from here without printing anything as error message will
> be printed by the caller of remove_nodes() anyway.

Ok, I'll send a v2 without the printk and add this explanation to the commit message.

Thanks!
Javi


From xen-devel-bounces@lists.xenproject.org Thu Jan 11 10:56:11 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 11 Jan 2024 10:56:11 +0000
Received: from list by lists.xenproject.org with outflank-mailman.666153.1036653 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNsjD-0000tg-3W; Thu, 11 Jan 2024 10:56:03 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 666153.1036653; Thu, 11 Jan 2024 10:56:03 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNsjC-0000tZ-Vh; Thu, 11 Jan 2024 10:56:02 +0000
Received: by outflank-mailman (input) for mailman id 666153;
 Thu, 11 Jan 2024 10:56:01 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rNsjB-0000tO-RT; Thu, 11 Jan 2024 10:56:01 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rNsjB-00032Q-EZ; Thu, 11 Jan 2024 10:56:01 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rNsjA-0002qc-T2; Thu, 11 Jan 2024 10:56:01 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rNsjA-0007yg-Rn; Thu, 11 Jan 2024 10:56:00 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=4nhipNVpISY1nLBtAnlp2KRkZRGVH6EOJdz8oUH7jxc=; b=EeWh5u3fdgSJQPMEFop+fT9L9U
	4Dr7TSfzs0JrngvOMMjz2QVOfcKYTZTfqfqkg4HYtyhhFUSSSl8otgFYkcHJMRRduRdwTjLeYbc4s
	Ouw/ubYa13b3lAyupvG86c/FLVy5D1YhQhjyqEtXDTCUmo3mF5AYRFOxZ//tjvU0f+z8=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184311-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [xen-unstable test] 184311: tolerable FAIL
X-Osstest-Failures:
    xen-unstable:test-armhf-armhf-libvirt:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-amd64-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-raw:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-amd64-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-qcow2:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-qemuu-nested-amd:debian-hvm-install/l1/l2:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-amd64-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-i386-libvirt-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-pvshim:guest-start:fail:nonblocking
    xen-unstable:test-amd64-i386-libvirt:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-thunderx:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-xsm:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-thunderx:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-credit2:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-credit2:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-libvirt-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-libvirt-xsm:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-credit1:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-credit1:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-multivcpu:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-multivcpu:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit2:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit2:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit1:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit1:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-arndale:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-arndale:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-libvirt-raw:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-libvirt-raw:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-libvirt-raw:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt-vhd:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-vhd:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-vhd:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-raw:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-vhd:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-vhd:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-rtds:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-rtds:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-qcow2:migrate-support-check:fail:nonblocking
X-Osstest-Versions-This:
    xen=c27c8922f2c6995d688437b0758cec6a27d18320
X-Osstest-Versions-That:
    xen=c27c8922f2c6995d688437b0758cec6a27d18320
From: osstest service owner <osstest-admin@xenproject.org>
Date: Thu, 11 Jan 2024 10:56:00 +0000

flight 184311 xen-unstable real [real]
http://logs.test-lab.xenproject.org/osstest/logs/184311/

Failures :-/ but no regressions.

Tests which did not succeed, but are not blocking:
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 184299
 test-amd64-amd64-xl-qemut-win7-amd64 19 guest-stop            fail like 184299
 test-amd64-i386-xl-qemuu-win7-amd64 19 guest-stop             fail like 184299
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 184299
 test-amd64-i386-xl-qemut-ws16-amd64 19 guest-stop             fail like 184299
 test-armhf-armhf-libvirt-raw 15 saverestore-support-check    fail  like 184299
 test-amd64-i386-xl-qemut-win7-amd64 19 guest-stop             fail like 184299
 test-amd64-amd64-xl-qemut-ws16-amd64 19 guest-stop            fail like 184299
 test-armhf-armhf-libvirt-qcow2 15 saverestore-support-check   fail like 184299
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 184299
 test-amd64-i386-xl-qemuu-ws16-amd64 19 guest-stop             fail like 184299
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 184299
 test-amd64-i386-libvirt-xsm  15 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-amd64-i386-xl-pvshim    14 guest-start                  fail   never pass
 test-amd64-i386-libvirt      15 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt     15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl          15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-xsm      15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-thunderx 15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl          16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-xsm      16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-thunderx 16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-credit2  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit2  16 saverestore-support-check    fail   never pass
 test-arm64-arm64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-xsm 16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-credit1  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit1  16 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-armhf-armhf-xl-multivcpu 15 migrate-support-check        fail  never pass
 test-armhf-armhf-xl-multivcpu 16 saverestore-support-check    fail  never pass
 test-armhf-armhf-libvirt     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-credit2  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit2  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-credit1  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit1  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-arndale  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-arndale  16 saverestore-support-check    fail   never pass
 test-amd64-i386-libvirt-raw  14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 15 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-vhd 14 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-vhd      14 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-vhd      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-raw 14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-rtds     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-rtds     16 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-qcow2 14 migrate-support-check        fail never pass

version targeted for testing:
 xen                  c27c8922f2c6995d688437b0758cec6a27d18320
baseline version:
 xen                  c27c8922f2c6995d688437b0758cec6a27d18320

Last test of basis   184311  2024-01-10 16:45:24 Z    0 days
Testing same since                          (not found)         0 attempts

jobs:
 build-amd64-xsm                                              pass    
 build-arm64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64-xtf                                              pass    
 build-amd64                                                  pass    
 build-arm64                                                  pass    
 build-armhf                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-arm64-libvirt                                          pass    
 build-armhf-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-prev                                             pass    
 build-i386-prev                                              pass    
 build-amd64-pvops                                            pass    
 build-arm64-pvops                                            pass    
 build-armhf-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-xtf-amd64-amd64-1                                       pass    
 test-xtf-amd64-amd64-2                                       pass    
 test-xtf-amd64-amd64-3                                       pass    
 test-xtf-amd64-amd64-4                                       pass    
 test-xtf-amd64-amd64-5                                       pass    
 test-amd64-amd64-xl                                          pass    
 test-amd64-coresched-amd64-xl                                pass    
 test-arm64-arm64-xl                                          pass    
 test-armhf-armhf-xl                                          pass    
 test-amd64-i386-xl                                           pass    
 test-amd64-coresched-i386-xl                                 pass    
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm           pass    
 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm            pass    
 test-amd64-amd64-xl-qemut-stubdom-debianhvm-amd64-xsm        pass    
 test-amd64-i386-xl-qemut-stubdom-debianhvm-amd64-xsm         pass    
 test-amd64-amd64-xl-qemut-debianhvm-i386-xsm                 pass    
 test-amd64-i386-xl-qemut-debianhvm-i386-xsm                  pass    
 test-amd64-amd64-xl-qemuu-debianhvm-i386-xsm                 pass    
 test-amd64-i386-xl-qemuu-debianhvm-i386-xsm                  pass    
 test-amd64-amd64-libvirt-xsm                                 pass    
 test-arm64-arm64-libvirt-xsm                                 pass    
 test-amd64-i386-libvirt-xsm                                  pass    
 test-amd64-amd64-xl-xsm                                      pass    
 test-arm64-arm64-xl-xsm                                      pass    
 test-amd64-i386-xl-xsm                                       pass    
 test-amd64-amd64-qemuu-nested-amd                            fail    
 test-amd64-amd64-xl-pvhv2-amd                                pass    
 test-amd64-i386-qemut-rhel6hvm-amd                           pass    
 test-amd64-i386-qemuu-rhel6hvm-amd                           pass    
 test-amd64-amd64-dom0pvh-xl-amd                              pass    
 test-amd64-amd64-xl-qemut-debianhvm-amd64                    pass    
 test-amd64-i386-xl-qemut-debianhvm-amd64                     pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64                    pass    
 test-amd64-i386-xl-qemuu-debianhvm-amd64                     pass    
 test-amd64-i386-freebsd10-amd64                              pass    
 test-amd64-amd64-qemuu-freebsd11-amd64                       pass    
 test-amd64-amd64-qemuu-freebsd12-amd64                       pass    
 test-amd64-amd64-xl-qemuu-ovmf-amd64                         pass    
 test-amd64-i386-xl-qemuu-ovmf-amd64                          pass    
 test-amd64-amd64-xl-qemut-win7-amd64                         fail    
 test-amd64-i386-xl-qemut-win7-amd64                          fail    
 test-amd64-amd64-xl-qemuu-win7-amd64                         fail    
 test-amd64-i386-xl-qemuu-win7-amd64                          fail    
 test-amd64-amd64-xl-qemut-ws16-amd64                         fail    
 test-amd64-i386-xl-qemut-ws16-amd64                          fail    
 test-amd64-amd64-xl-qemuu-ws16-amd64                         fail    
 test-amd64-i386-xl-qemuu-ws16-amd64                          fail    
 test-armhf-armhf-xl-arndale                                  pass    
 test-amd64-amd64-examine-bios                                pass    
 test-amd64-i386-examine-bios                                 pass    
 test-amd64-amd64-xl-credit1                                  pass    
 test-arm64-arm64-xl-credit1                                  pass    
 test-armhf-armhf-xl-credit1                                  pass    
 test-amd64-amd64-xl-credit2                                  pass    
 test-arm64-arm64-xl-credit2                                  pass    
 test-armhf-armhf-xl-credit2                                  pass    
 test-amd64-amd64-xl-qemuu-dmrestrict-amd64-dmrestrict        pass    
 test-amd64-i386-xl-qemuu-dmrestrict-amd64-dmrestrict         pass    
 test-amd64-amd64-examine                                     pass    
 test-arm64-arm64-examine                                     pass    
 test-armhf-armhf-examine                                     pass    
 test-amd64-i386-examine                                      pass    
 test-amd64-i386-freebsd10-i386                               pass    
 test-amd64-amd64-qemuu-nested-intel                          pass    
 test-amd64-amd64-xl-pvhv2-intel                              pass    
 test-amd64-i386-qemut-rhel6hvm-intel                         pass    
 test-amd64-i386-qemuu-rhel6hvm-intel                         pass    
 test-amd64-amd64-dom0pvh-xl-intel                            pass    
 test-amd64-amd64-libvirt                                     pass    
 test-armhf-armhf-libvirt                                     pass    
 test-amd64-i386-libvirt                                      pass    
 test-amd64-amd64-livepatch                                   pass    
 test-amd64-i386-livepatch                                    pass    
 test-amd64-amd64-migrupgrade                                 pass    
 test-amd64-i386-migrupgrade                                  pass    
 test-amd64-amd64-xl-multivcpu                                pass    
 test-armhf-armhf-xl-multivcpu                                pass    
 test-amd64-amd64-pair                                        pass    
 test-amd64-i386-pair                                         pass    
 test-amd64-amd64-libvirt-pair                                pass    
 test-amd64-i386-libvirt-pair                                 pass    
 test-amd64-amd64-xl-pvshim                                   pass    
 test-amd64-i386-xl-pvshim                                    fail    
 test-amd64-amd64-pygrub                                      pass    
 test-armhf-armhf-libvirt-qcow2                               pass    
 test-amd64-amd64-xl-qcow2                                    pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-armhf-armhf-libvirt-raw                                 pass    
 test-amd64-i386-libvirt-raw                                  pass    
 test-amd64-amd64-xl-rtds                                     pass    
 test-armhf-armhf-xl-rtds                                     pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64-shadow             pass    
 test-amd64-i386-xl-qemuu-debianhvm-amd64-shadow              pass    
 test-amd64-amd64-xl-shadow                                   pass    
 test-amd64-i386-xl-shadow                                    pass    
 test-arm64-arm64-xl-thunderx                                 pass    
 test-amd64-amd64-examine-uefi                                pass    
 test-amd64-i386-examine-uefi                                 pass    
 test-amd64-amd64-libvirt-vhd                                 pass    
 test-arm64-arm64-xl-vhd                                      pass    
 test-armhf-armhf-xl-vhd                                      pass    
 test-amd64-i386-xl-vhd                                       pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Published tested tree is already up to date.



From xen-devel-bounces@lists.xenproject.org Thu Jan 11 11:35:07 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 11 Jan 2024 11:35:07 +0000
Received: from list by lists.xenproject.org with outflank-mailman.666203.1036662 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNtKm-0004UK-4C; Thu, 11 Jan 2024 11:34:52 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 666203.1036662; Thu, 11 Jan 2024 11:34:52 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNtKm-0004UD-1c; Thu, 11 Jan 2024 11:34:52 +0000
Received: by outflank-mailman (input) for mailman id 666203;
 Thu, 11 Jan 2024 11:34:50 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=YFj+=IV=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rNtKk-0004U6-O9
 for xen-devel@lists.xenproject.org; Thu, 11 Jan 2024 11:34:50 +0000
Received: from mail-lj1-x22c.google.com (mail-lj1-x22c.google.com
 [2a00:1450:4864:20::22c])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 6db6e88e-b075-11ee-98f0-6d05b1d4d9a1;
 Thu, 11 Jan 2024 12:34:49 +0100 (CET)
Received: by mail-lj1-x22c.google.com with SMTP id
 38308e7fff4ca-2cd880ceaf2so6007361fa.2
 for <xen-devel@lists.xenproject.org>; Thu, 11 Jan 2024 03:34:49 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 i7-20020a056638400700b0046e3432a5b0sm259195jai.177.2024.01.11.03.34.47
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 11 Jan 2024 03:34:48 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 6db6e88e-b075-11ee-98f0-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1704972889; x=1705577689; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=tKKOYfgvvO/YOUbxb2mUYUWTCTW+DHqnzBkun1XWuVU=;
        b=ZUIxU7CGGk8rA9CUPACPWevLcjyXKnwZHOhrvEuTp5gFUrKhFEg4zTyOxsVkTl6qZc
         FXcuhdqMG+yB1iBTHa5qoE9b+JHQ5tGCoSmqHvSeGtviWiq2BadY3mW/2ZRWPY1Q1A2R
         AmDBRxiOZp1b6y0rguuEj+GOjKubmFslnOxa/kXkdnvwRHW/qKjuFCjUR2zW5G1eUt+F
         iistpVljH7PoJAKzcwC8GYNo3ZthkEh8kJ4neGNychRY27YOfsBmEI6hiv3lLSXkn19V
         AbRud/keF3nilKYLCm4BESbr5+Viwkafj0PTN8zIQBa905lphJiljr7SeFxiCP0zPOjA
         UJ3A==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704972889; x=1705577689;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=tKKOYfgvvO/YOUbxb2mUYUWTCTW+DHqnzBkun1XWuVU=;
        b=TmUBmExPMFI8ipBSpa9eWaw6DC1rP5XcWR4LzH61AS30zgPhhDHqXfLGrE3p9bnv6p
         eo1t1YnFSQjmfOjkqgEMLJCmd+ZhIiDJHC95o+uiXXDANiI+IcBovDTFkTs4j0s2h3iz
         FbyQ09mNYHBAp7kYPAQOEKXf4qKKJHzLREGu6jCQXMkfe2asy2XoOTPSI7P3gsWeMAMP
         qWZ857OZhqMQKt3jB6L/sIzyTErYZZuZKHiY7dSnNnykwmnDeHCFEkiMdRwcmdZXkcS2
         NVZ1csprG12NwVlT7GeBQaFLvfJ2bCtsBQY4pwn3cOpwevVwxBr/WmCC9eDJI3+8rAkr
         9iZA==
X-Gm-Message-State: AOJu0YwsrhFOsF0B91837+H/ZcntntGRwNEaQs5D5XC+QUaonYAFHO+a
	Q79TYFHB+vokcOoSHUhnymYl0KH701UjzAE70MhNGj6rNQ==
X-Google-Smtp-Source: AGHT+IEeK2utsGXC91VpFvQ6LeeRx9US3sXJ6ca8r6ZKI31XBp2lbszKFW4WRyu1mD6yyBdyw9BUqw==
X-Received: by 2002:a2e:8516:0:b0:2cc:8dda:c979 with SMTP id j22-20020a2e8516000000b002cc8ddac979mr310849lji.51.1704972888936;
        Thu, 11 Jan 2024 03:34:48 -0800 (PST)
Message-ID: <645e0c95-5a12-4202-8da6-3cc789a9e5c7@suse.com>
Date: Thu, 11 Jan 2024 12:34:45 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2] x86/intel: ensure Global Performance Counter Control
 is setup correctly
Content-Language: en-US
To: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, Wei Liu <wl@xen.org>,
 xen-devel@lists.xenproject.org
References: <20240111090821.67594-1-roger.pau@citrix.com>
 <3428928a-42d0-4e4b-9607-c184968c309d@suse.com> <ZZ_FjFa9mILtDZgv@macbook>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <ZZ_FjFa9mILtDZgv@macbook>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 11.01.2024 11:40, Roger Pau Monné wrote:
> On Thu, Jan 11, 2024 at 11:11:07AM +0100, Jan Beulich wrote:
>> On 11.01.2024 10:08, Roger Pau Monne wrote:
>>> When Architectural Performance Monitoring is available, the PERF_GLOBAL_CTRL
>>> MSR contains per-counter enable bits that is ANDed with the enable bit in the
>>> counter EVNTSEL MSR in order for a PMC counter to be enabled.
>>>
>>> So far the watchdog code seems to have relied on the PERF_GLOBAL_CTRL enable
>>> bits being set by default, but at least on some Intel Sapphire and Emerald
>>> Rapids this is no longer the case, and Xen reports:
>>>
>>> Testing NMI watchdog on all CPUs: 0 40 stuck
>>>
>>> The first CPU on each package is started with PERF_GLOBAL_CTRL zeroed, so PMC0
>>> doesn't start counting when the enable bit in EVNTSEL0 is set, due to the
>>> relevant enable bit in PERF_GLOBAL_CTRL not being set.
>>>
>>> Check and adjust PERF_GLOBAL_CTRL during CPU initialization so that all the
>>> general-purpose PMCs are enabled.  Doing so brings the state of the package-BSP
>>> PERF_GLOBAL_CTRL in line with the rest of the CPUs on the system.
>>>
>>> Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
>>> ---
>>> Changes since v1:
>>>  - Do the adjustment of PERF_GLOBAL_CTRL even if the watchdog is not used, and
>>>    enable all counters.
>>> ---
>>> Unsure whether printing a warning if the value of PERF_GLOBAL_CTRL is not
>>> correct is of any value, hence I haven't added it.
>>> ---
>>>  xen/arch/x86/cpu/intel.c | 18 +++++++++++++++++-
>>>  1 file changed, 17 insertions(+), 1 deletion(-)
>>>
>>> diff --git a/xen/arch/x86/cpu/intel.c b/xen/arch/x86/cpu/intel.c
>>> index dfee64689ffe..40d3eb0e18a7 100644
>>> --- a/xen/arch/x86/cpu/intel.c
>>> +++ b/xen/arch/x86/cpu/intel.c
>>> @@ -533,9 +533,25 @@ static void cf_check init_intel(struct cpuinfo_x86 *c)
>>>  	init_intel_cacheinfo(c);
>>>  	if (c->cpuid_level > 9) {
>>>  		unsigned eax = cpuid_eax(10);
>>> +		unsigned int cnt = (uint8_t)(eax >> 8);
>>> +
>>>  		/* Check for version and the number of counters */
>>> -		if ((eax & 0xff) && (((eax>>8) & 0xff) > 1))
>>> +		if ((eax & 0xff) && (cnt > 1) && (cnt <= 32)) {
>>
>> I may not have looked closely enough, but I didn't find the limit of
>> 32 being stated anywhere.
> 
> Hm, my copy of the SDM vol4 states that bits 31:n are the enable bits,
> where n is CPUID.0AH: EAX[15:8].  Bits 32, 33 and 34 control the Fixed
> PMCs.
> 
>>> +			uint64_t global_ctrl;
>>> +			unsigned int cnt_mask = (1UL << cnt) - 1;
>>
>> Bits 2 + 4 * n have an additional qualification as per SDM vol 4.
> 
> Let me update my copy...
> 
> Looking at the version from December 2023, I see:
> 
> 0 EN_PMC0 If CPUID.0AH: EAX[15:8] > 0
> 1 EN_PMC1 If CPUID.0AH: EAX[15:8] > 1
> 2 EN_PMC2 If CPUID.0AH: EAX[15:8] > 2
> n EN_PMCn If CPUID.0AH: EAX[15:8] > n
> 31:n+1 Reserved.
> 
> And I'm afraid I'm not able to infer this additional qualification of
> bits 2 + 4 * n.

I'm sorry, both earlier questions were my fault, due to looking at the
table entry for the first match of PERF_GLOBAL_CTRL (i.e.
IA32_FIXED_CTR_CTRL). Still need to get used to the new table layout,
it seems.

Looking at the correct entry raises a question on cnt > 1 though, as
EN_PMC0 is defined for cnt > 0.

Jan


From xen-devel-bounces@lists.xenproject.org Thu Jan 11 11:49:44 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 11 Jan 2024 11:49:44 +0000
Received: from list by lists.xenproject.org with outflank-mailman.666208.1036673 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNtZ5-0008Tq-DN; Thu, 11 Jan 2024 11:49:39 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 666208.1036673; Thu, 11 Jan 2024 11:49:39 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNtZ5-0008Tj-AM; Thu, 11 Jan 2024 11:49:39 +0000
Received: by outflank-mailman (input) for mailman id 666208;
 Thu, 11 Jan 2024 11:49:38 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=YPRU=IV=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1rNtZ3-0008Td-V6
 for xen-devel@lists.xenproject.org; Thu, 11 Jan 2024 11:49:37 +0000
Received: from mail-wm1-x335.google.com (mail-wm1-x335.google.com
 [2a00:1450:4864:20::335])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 7d794b61-b077-11ee-9b0f-b553b5be7939;
 Thu, 11 Jan 2024 12:49:35 +0100 (CET)
Received: by mail-wm1-x335.google.com with SMTP id
 5b1f17b1804b1-40e60e1373eso2211985e9.1
 for <xen-devel@lists.xenproject.org>; Thu, 11 Jan 2024 03:49:35 -0800 (PST)
Received: from [10.80.67.30] (default-46-102-197-194.interdsl.co.uk.
 [46.102.197.194]) by smtp.gmail.com with ESMTPSA id
 e16-20020a5d65d0000000b003365951cef9sm1033041wrw.55.2024.01.11.03.49.34
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 11 Jan 2024 03:49:34 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 7d794b61-b077-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1704973775; x=1705578575; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=Q26frLCjIvfc90fGU3aMkxMy5Ic1Vte7a0mEwIAaNq0=;
        b=ZyTSWQdiN32miG6RwRR/WOWHQZLTpN08uptSj29MloIizT8QBXJYMHKjwcOtu7VsCw
         OviV9qbMpZVns0lq9zzS8hxzP3hUkvB0EWiLD0RBlgYffp/kN6IRye6Qi1orQ059wS0u
         jhfie9ksZLL+RmGR+J+wKQm0DmerqtdTYj4KA=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704973775; x=1705578575;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=Q26frLCjIvfc90fGU3aMkxMy5Ic1Vte7a0mEwIAaNq0=;
        b=uJC2LLEhccsf1M8qWavN8bWtbbBuBXjXmytsW2Sw3HQRIqnVEZ5tYdgLt70CRNei0e
         9Jthj18kewqhYZH3MudDs+7uK0krrIIjfsFQeQ0uY2H75Rxduesnep/8D1O8X52SzfaQ
         lUb3ncaAUrS/yprERtqStKyFXsXy55x8uFK9jK3VL3tbSL+Viyzv9f8Y4IBe7QbaC3Ow
         6WiQPcDq0pj2eOGXOp89VlXsH4SGVBJbUzJCFjF+wKEw79rGaBl8ZLTKX57LxD7w6l2w
         5ASjBtpfuKZtC6MxxWInd1b/Msq0sxWRsbwpTRIvIew0GIMqEcm5PBduwvj+YxMPnvjZ
         2DGw==
X-Gm-Message-State: AOJu0YyrneY2B4FJ7yBMwrvH1dgTEk4R+IUvHmVXYwqDhhKv+kCWFj/Y
	bCwBQbQ6w3KzAYG/V6xnlk0p9tdxAthUrQ==
X-Google-Smtp-Source: AGHT+IGi7fPe0BkEZjU4eKy25GmwHFT6R+jaDWDKTFGYghXeihIb0WFO4BcWHN2ojde667RAMZh7VA==
X-Received: by 2002:a05:600c:1e16:b0:40e:6252:9915 with SMTP id ay22-20020a05600c1e1600b0040e62529915mr115106wmb.29.1704973774771;
        Thu, 11 Jan 2024 03:49:34 -0800 (PST)
Message-ID: <7d21e38d-d1f8-46df-89ef-809dd9c5a38b@citrix.com>
Date: Thu, 11 Jan 2024 11:49:34 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 1/8] keyhandler: don't pass cpu_user_regs around
Content-Language: en-GB
To: Jan Beulich <jbeulich@suse.com>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: George Dunlap <george.dunlap@citrix.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>
References: <1ab231ec-5e3c-4662-8530-2213bc52bb7c@suse.com>
 <dd1c24ec-4054-43e1-b0c9-6c2044b84046@suse.com>
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 xsFNBFLhNn8BEADVhE+Hb8i0GV6mihnnr/uiQQdPF8kUoFzCOPXkf7jQ5sLYeJa0cQi6Penp
 VtiFYznTairnVsN5J+ujSTIb+OlMSJUWV4opS7WVNnxHbFTPYZVQ3erv7NKc2iVizCRZ2Kxn
 srM1oPXWRic8BIAdYOKOloF2300SL/bIpeD+x7h3w9B/qez7nOin5NzkxgFoaUeIal12pXSR
 Q354FKFoy6Vh96gc4VRqte3jw8mPuJQpfws+Pb+swvSf/i1q1+1I4jsRQQh2m6OTADHIqg2E
 ofTYAEh7R5HfPx0EXoEDMdRjOeKn8+vvkAwhviWXTHlG3R1QkbE5M/oywnZ83udJmi+lxjJ5
 YhQ5IzomvJ16H0Bq+TLyVLO/VRksp1VR9HxCzItLNCS8PdpYYz5TC204ViycobYU65WMpzWe
 LFAGn8jSS25XIpqv0Y9k87dLbctKKA14Ifw2kq5OIVu2FuX+3i446JOa2vpCI9GcjCzi3oHV
 e00bzYiHMIl0FICrNJU0Kjho8pdo0m2uxkn6SYEpogAy9pnatUlO+erL4LqFUO7GXSdBRbw5
 gNt25XTLdSFuZtMxkY3tq8MFss5QnjhehCVPEpE6y9ZjI4XB8ad1G4oBHVGK5LMsvg22PfMJ
 ISWFSHoF/B5+lHkCKWkFxZ0gZn33ju5n6/FOdEx4B8cMJt+cWwARAQABzSlBbmRyZXcgQ29v
 cGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPsLBegQTAQgAJAIbAwULCQgHAwUVCgkI
 CwUWAgMBAAIeAQIXgAUCWKD95wIZAQAKCRBlw/kGpdefoHbdD/9AIoR3k6fKl+RFiFpyAhvO
 59ttDFI7nIAnlYngev2XUR3acFElJATHSDO0ju+hqWqAb8kVijXLops0gOfqt3VPZq9cuHlh
 IMDquatGLzAadfFx2eQYIYT+FYuMoPZy/aTUazmJIDVxP7L383grjIkn+7tAv+qeDfE+txL4
 SAm1UHNvmdfgL2/lcmL3xRh7sub3nJilM93RWX1Pe5LBSDXO45uzCGEdst6uSlzYR/MEr+5Z
 JQQ32JV64zwvf/aKaagSQSQMYNX9JFgfZ3TKWC1KJQbX5ssoX/5hNLqxMcZV3TN7kU8I3kjK
 mPec9+1nECOjjJSO/h4P0sBZyIUGfguwzhEeGf4sMCuSEM4xjCnwiBwftR17sr0spYcOpqET
 ZGcAmyYcNjy6CYadNCnfR40vhhWuCfNCBzWnUW0lFoo12wb0YnzoOLjvfD6OL3JjIUJNOmJy
 RCsJ5IA/Iz33RhSVRmROu+TztwuThClw63g7+hoyewv7BemKyuU6FTVhjjW+XUWmS/FzknSi
 dAG+insr0746cTPpSkGl3KAXeWDGJzve7/SBBfyznWCMGaf8E2P1oOdIZRxHgWj0zNr1+ooF
 /PzgLPiCI4OMUttTlEKChgbUTQ+5o0P080JojqfXwbPAyumbaYcQNiH1/xYbJdOFSiBv9rpt
 TQTBLzDKXok86M7BTQRS4TZ/ARAAkgqudHsp+hd82UVkvgnlqZjzz2vyrYfz7bkPtXaGb9H4
 Rfo7mQsEQavEBdWWjbga6eMnDqtu+FC+qeTGYebToxEyp2lKDSoAsvt8w82tIlP/EbmRbDVn
 7bhjBlfRcFjVYw8uVDPptT0TV47vpoCVkTwcyb6OltJrvg/QzV9f07DJswuda1JH3/qvYu0p
 vjPnYvCq4NsqY2XSdAJ02HrdYPFtNyPEntu1n1KK+gJrstjtw7KsZ4ygXYrsm/oCBiVW/OgU
 g/XIlGErkrxe4vQvJyVwg6YH653YTX5hLLUEL1NS4TCo47RP+wi6y+TnuAL36UtK/uFyEuPy
 wwrDVcC4cIFhYSfsO0BumEI65yu7a8aHbGfq2lW251UcoU48Z27ZUUZd2Dr6O/n8poQHbaTd
 6bJJSjzGGHZVbRP9UQ3lkmkmc0+XCHmj5WhwNNYjgbbmML7y0fsJT5RgvefAIFfHBg7fTY/i
 kBEimoUsTEQz+N4hbKwo1hULfVxDJStE4sbPhjbsPCrlXf6W9CxSyQ0qmZ2bXsLQYRj2xqd1
 bpA+1o1j2N4/au1R/uSiUFjewJdT/LX1EklKDcQwpk06Af/N7VZtSfEJeRV04unbsKVXWZAk
 uAJyDDKN99ziC0Wz5kcPyVD1HNf8bgaqGDzrv3TfYjwqayRFcMf7xJaL9xXedMcAEQEAAcLB
 XwQYAQgACQUCUuE2fwIbDAAKCRBlw/kGpdefoG4XEACD1Qf/er8EA7g23HMxYWd3FXHThrVQ
 HgiGdk5Yh632vjOm9L4sd/GCEACVQKjsu98e8o3ysitFlznEns5EAAXEbITrgKWXDDUWGYxd
 pnjj2u+GkVdsOAGk0kxczX6s+VRBhpbBI2PWnOsRJgU2n10PZ3mZD4Xu9kU2IXYmuW+e5KCA
 vTArRUdCrAtIa1k01sPipPPw6dfxx2e5asy21YOytzxuWFfJTGnVxZZSCyLUO83sh6OZhJkk
 b9rxL9wPmpN/t2IPaEKoAc0FTQZS36wAMOXkBh24PQ9gaLJvfPKpNzGD8XWR5HHF0NLIJhgg
 4ZlEXQ2fVp3XrtocHqhu4UZR4koCijgB8sB7Tb0GCpwK+C4UePdFLfhKyRdSXuvY3AHJd4CP
 4JzW0Bzq/WXY3XMOzUTYApGQpnUpdOmuQSfpV9MQO+/jo7r6yPbxT7CwRS5dcQPzUiuHLK9i
 nvjREdh84qycnx0/6dDroYhp0DFv4udxuAvt1h4wGwTPRQZerSm4xaYegEFusyhbZrI0U9tJ
 B8WrhBLXDiYlyJT6zOV2yZFuW47VrLsjYnHwn27hmxTC/7tvG3euCklmkn9Sl9IAKFu29RSo
 d5bD8kMSCYsTqtTfT6W4A3qHGvIDta3ptLYpIAOD2sY3GYq2nf3Bbzx81wZK14JdDDHUX2Rs
 6+ahAA==
In-Reply-To: <dd1c24ec-4054-43e1-b0c9-6c2044b84046@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 11/01/2024 7:31 am, Jan Beulich wrote:
> There are exactly two handlers which care about the registers.

Which two?  dump regs and trap to debugger?

[Edit, oh yes, this is clear in the patch, but IMO it would be helpful
to state them here.]

> Have
> handle_keypress() make the pointer available via a per-CPU variable,
> thus eliminating the need to pass it to all IRQ key handlers, making
> sure that a console-invoked key's handling can still nest inside a
> sysctl-invoked one's.

I know this is the current behaviour, and I'm not suggesting altering it
in this patch, but the sysctl was added so you had a way of using debug
keys without necessarily having a working serial connection.

It was never expected or intended for both mechanisms to work
concurrently, and I don't think we need to take any care to make/keep it
working.

> Signed-off-by: Jan Beulich <jbeulich@suse.com>

Acked-by: Andrew Cooper <andrew.cooper3@citrix.com> with a few trivial
tweaks, but see below.

> ---
> Subsequently we may want to eliminate the fn/irq_fn union as well,
> along with dropping the now redundant irq_keyhandler_fn_t.

Yes - this simplification was one I was hoping to be able to make in due
course.  I suspect the split is only because some functionality wanted
regs and others not.

Trap to debugger is an x86-ism for gdbstub only.  I'm tempted to drop
all the gdbstub code.  I've never encountered it working in 13y, and the
number of build fixes I've done personally, I don't believe the code can
plausibly be in a non-bitrotten state.

Nevertheless, an explicit trap-to-debugger which isn't a manually
inserted debugger_trap_{immediate,fatal}() is a weird construct in the
first place, not least because an attached debugger can do this on its
own anyway.

The more I think about this, the more I think we should just remove 'D',
even if we don't go for dropping gdbstub.  It's the only place where
gdbstub really escapes out of x86 into common code.  (I see there's a
new one in bug.h but that is abstracted with a macro.)

Also, `xl debug-keys D` was clearly something that just got swept up
with "make all debug keys usable via sysctl", not because it was a
plausibly useful construct.


This just leaves dump regs, which I think can safely use get_irq_regs()
|| guest_cpu_user_regs().  All it wants is something to dump_execstate()
to, which just wants to be the start of the path which led here.

With both of those sorted (albeit it with patch 2 needing to move ahead
of 1), I don't think we need to keep keypress_regs.

> --- a/xen/common/keyhandler.c
> +++ b/xen/common/keyhandler.c
> @@ -80,6 +80,7 @@ static void cf_check keypress_action(voi
>  }
>  
>  static DECLARE_TASKLET(keypress_tasklet, keypress_action, NULL);
> +static DEFINE_PER_CPU(struct cpu_user_regs *, keypress_regs);
>  
>  void handle_keypress(unsigned char key, struct cpu_user_regs *regs)
>  {
> @@ -91,7 +92,16 @@ void handle_keypress(unsigned char key,
>      if ( !in_irq() || h->irq_callback )
>      {
>          console_start_log_everything();
> -        h->irq_callback ? h->irq_fn(key, regs) : h->fn(key);

This would read better with a blank line here, and ...

> +        if ( h->irq_callback )
> +        {
> +            struct cpu_user_regs *old = this_cpu(keypress_regs);
> +
> +            this_cpu(keypress_regs) = regs;
> +            h->irq_fn(key);
> +            this_cpu(keypress_regs) = old;
> +        }
> +        else
> +            h->fn(key);

... here.

~Andrew


From xen-devel-bounces@lists.xenproject.org Thu Jan 11 11:53:43 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 11 Jan 2024 11:53:43 +0000
Received: from list by lists.xenproject.org with outflank-mailman.666212.1036682 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNtcw-0001r0-SQ; Thu, 11 Jan 2024 11:53:38 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 666212.1036682; Thu, 11 Jan 2024 11:53:38 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNtcw-0001qt-Pm; Thu, 11 Jan 2024 11:53:38 +0000
Received: by outflank-mailman (input) for mailman id 666212;
 Thu, 11 Jan 2024 11:53:37 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=YFj+=IV=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rNtcv-0001qn-PN
 for xen-devel@lists.xenproject.org; Thu, 11 Jan 2024 11:53:37 +0000
Received: from mail-wr1-x434.google.com (mail-wr1-x434.google.com
 [2a00:1450:4864:20::434])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 0c92a428-b078-11ee-9b0f-b553b5be7939;
 Thu, 11 Jan 2024 12:53:35 +0100 (CET)
Received: by mail-wr1-x434.google.com with SMTP id
 ffacd0b85a97d-3367a304091so4585095f8f.3
 for <xen-devel@lists.xenproject.org>; Thu, 11 Jan 2024 03:53:35 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 g1-20020adfa581000000b0033680f7be5fsm1047428wrc.87.2024.01.11.03.53.34
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 11 Jan 2024 03:53:34 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 0c92a428-b078-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1704974015; x=1705578815; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=g2Qwshb/jdI8nndp0vxvVsLQ84pK/8z5YopHc17NBpA=;
        b=RIJnGDo4piJ6lGZ27Tb6/xMEXCnzpfI4f43cpn/4F7gFCxmGbsuSS5OiLrVj+NYgJD
         nQIV3PnM8cXk+l3PWt1rjfpxrgFRHgQ+UVwq9dwtP75PLNFzemYP4+A1h2hIzVetJCo1
         fwAwNzt92oh0dz1nWYGCq/oO3hmt9PF6v72BvGA6gxCYzYtsl7IiPtEmXpX8nhWcZeUQ
         npAPHFfhOGz6QkwD0AXso3lIAHgVlMuiuUm4P3/6Y39qnKvrtgBnK1IRJNi1t7KX+p9d
         lMAye97zJWUwI79quQnWv6L/+8Va3pIYuhxIQebhrVl+QOZD2mw33fZ+svybi8qwgY7s
         9Suw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704974015; x=1705578815;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=g2Qwshb/jdI8nndp0vxvVsLQ84pK/8z5YopHc17NBpA=;
        b=BB1MjXJEGkF6AT5NiJoCRca7iibD55ch9pBo8S0aJJYqCNyNOj5g3LfStSlasqwLzU
         fHcyprX2uVo+gdFMm/qnNS3ogaLaP8EhZR8OrzYfeYUW/hAVwtija3+Gc0UbXOLQRk4q
         r2Et/yXR8ll7A5ypkdGcjPtSM+o7ER09H7mPwvAL8QIF+02rL6etOmfIz2d164EYY2z1
         jPgreq808ewicyg4eZVHJJ05lR2XCH8GoxQ+5jPT1n2cXlZUq6WqlUz3c4+i1bBYEt4v
         8E/OcSZd2r3uAFMWDId24zFB8VWMJP2hBalPgiuHdMjvRiWsEiTLGT6Ohfg7K3c2VsD4
         0LcQ==
X-Gm-Message-State: AOJu0YzgPDDHb9P5JQJElc5Jj55ltDJ+UkY37aSmkf9l30j9+wRX79XB
	uL2g8JiZMHViHNHDrBjqrVr9+8NAsgeb
X-Google-Smtp-Source: AGHT+IGXmlv4l4AhMzkS7nHpfSbapLln2bZaWSEwBwbnP2ifpW2tERbNtOZ1WetZ8jL1Cro6IkenoQ==
X-Received: by 2002:adf:cc89:0:b0:336:6fa9:518 with SMTP id p9-20020adfcc89000000b003366fa90518mr347941wrj.17.1704974014972;
        Thu, 11 Jan 2024 03:53:34 -0800 (PST)
Message-ID: <c736e4d9-5262-4adf-9e74-9b1be5ab13db@suse.com>
Date: Thu, 11 Jan 2024 12:53:33 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 11/22] x86: add a boot option to enable and disable the
 direct map
Content-Language: en-US
To: Elias El Yandouzi <eliasely@amazon.com>
Cc: Hongyan Xia <hongyxia@amazon.com>,
 Andrew Cooper <andrew.cooper3@citrix.com>,
 George Dunlap <george.dunlap@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>,
 Bertrand Marquis <bertrand.marquis@arm.com>,
 Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Julien Grall <jgrall@amazon.com>, xen-devel@lists.xenproject.org,
 Julien Grall <julien@xen.org>
References: <20221216114853.8227-1-julien@xen.org>
 <20221216114853.8227-12-julien@xen.org>
 <fc70f967-34bb-9569-f514-7a3208e746c6@suse.com>
 <bc989828-69b9-4919-9ff3-fdd53fb2def1@amazon.com>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <bc989828-69b9-4919-9ff3-fdd53fb2def1@amazon.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 11.01.2024 11:47, Elias El Yandouzi wrote:
> On 22/12/2022 13:24, Jan Beulich wrote:
>> That said, I think this change comes too early in the series, or there is
>> something missing. 
> 
> At first, I had the same feeling but looking at the rest of the series, 
> I can see that the option is needed in follow-up patches.
> 
>> As said in reply to patch 10, while there the mapcache
>> is being initialized for the idle domain, I don't think it can be used
>> just yet. Read through mapcache_current_vcpu() to understand why I think
>> that way, paying particular attention to the ASSERT() near the end.
> 
> Would be able to elaborate a bit more why you think that? I haven't been 
> able to get your point.

Why exactly I referred to the ASSERT() there I can't reconstruct. The
function as a whole looks problematic though when suddenly the idle
domain also gains a mapcache. I'm sorry, too much context was lost
from over a year ago; all of this will need looking at from scratch
again whenever a new version was posted.

>> In preparation of this patch here I think the mfn_to_virt() uses have to all
>> disappear from map_domain_page(). Perhaps yet more strongly all
>> ..._to_virt() (except fix_to_virt() and friends) and __va() have to
>> disappear up front from x86 and any code path which can be taken on x86
>> (which may simply mean purging all respective x86 #define-s, without
>> breaking the build in any way).
> 
> I agree with you on that one. I think it is what we're aiming for in the 
> long term. However, as mentioned by Julien in the cover letter, the 
> series's name is a misnomer and I am afraid we won't be able to remove 
> all of them with this series. These helpers would still be used for 
> xenheap pages or when the direct map is enabled.

Leaving a hazard of certain uses not having been converted, or even
overlooked in patches going in at around the same time as this series?
I view this as pretty "adventurous".

Jan


From xen-devel-bounces@lists.xenproject.org Thu Jan 11 12:09:55 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 11 Jan 2024 12:09:55 +0000
Received: from list by lists.xenproject.org with outflank-mailman.666226.1036692 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNtsa-0005iE-HT; Thu, 11 Jan 2024 12:09:48 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 666226.1036692; Thu, 11 Jan 2024 12:09:48 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNtsa-0005i7-Er; Thu, 11 Jan 2024 12:09:48 +0000
Received: by outflank-mailman (input) for mailman id 666226;
 Thu, 11 Jan 2024 12:09:47 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=Zprx=IV=cloud.com=javi.merino@srs-se1.protection.inumbo.net>)
 id 1rNtsZ-0005i1-EH
 for xen-devel@lists.xenproject.org; Thu, 11 Jan 2024 12:09:47 +0000
Received: from mail-wm1-x332.google.com (mail-wm1-x332.google.com
 [2a00:1450:4864:20::332])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 4efd23b4-b07a-11ee-98f0-6d05b1d4d9a1;
 Thu, 11 Jan 2024 13:09:45 +0100 (CET)
Received: by mail-wm1-x332.google.com with SMTP id
 5b1f17b1804b1-40e60e135a7so3593225e9.0
 for <xen-devel@lists.xenproject.org>; Thu, 11 Jan 2024 04:09:45 -0800 (PST)
Received: from jmerino-thinkstation.citrite.net
 (default-46-102-197-194.interdsl.co.uk. [46.102.197.194])
 by smtp.gmail.com with ESMTPSA id
 q2-20020a056000136200b003373fe3d345sm1073634wrz.65.2024.01.11.04.09.44
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 11 Jan 2024 04:09:44 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 4efd23b4-b07a-11ee-98f0-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1704974984; x=1705579784; darn=lists.xenproject.org;
        h=content-transfer-encoding:mime-version:message-id:date:subject:cc
         :to:from:from:to:cc:subject:date:message-id:reply-to;
        bh=jqEmzAOy68E/HXA1JywP9NLCSPH5WRxmr1i2yOTHL2s=;
        b=PglrARnD+WO8+JeC8neK+OM5ttzkwEq8nXfvl0oOAJE6z6TJcBQnLzbef8JVjUkmMi
         BJAz7ZtQaUdKKLN10lfrpQ9hnFo4vHBJ9ZIpnf8v479CIAMST5aAah2AkpLGdpkLYcA5
         5yxyzCcGo1C88lBF8DCc50lsNKnJHDx6L6Xwc=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704974984; x=1705579784;
        h=content-transfer-encoding:mime-version:message-id:date:subject:cc
         :to:from:x-gm-message-state:from:to:cc:subject:date:message-id
         :reply-to;
        bh=jqEmzAOy68E/HXA1JywP9NLCSPH5WRxmr1i2yOTHL2s=;
        b=ddapiAHdHpV1vpJSHieQTiCcZqkT/711bm8og3MapXiznCaAxcr7MCm4+leepoyWG7
         RM50QqG18YZVejeQb86BA5wfqBSjeVciO+P+wbzk+juZMpLGynaoI/KHRfBhdD2ojbVE
         sw57zSeF2BYImDgkMmDNMm+nt/z/NAIu1IwqidDLgxkPNHoSkcUEsWaNlNQZPWbbkDj/
         14NtV3KArCfv1M7+HlZOc9woA9GSJy1otXVFjGXy8O62BagvSqa2VqVf+fMx6FkVVEjC
         fwMmcYNEZRk0jw9EbJAjG+Z/HUbPlVTgb/4CguDGFDTTQ+6uB6haOsAybnXkHbM6kIys
         P3oQ==
X-Gm-Message-State: AOJu0Yx7Z7qmlfJo4CuFeY8QXBa8lpCJHf8MgEt5z6EgLcy82x98kbLp
	Fl0XOJZkB5iX9HPWpmnVu3flPwVx8UsYWi+zuwhkflfiTE8=
X-Google-Smtp-Source: AGHT+IF2p76HBcobeb53nPA0tvCSmOboCEGRMje1nbNpocAB+y8vnGvRDFzy3dNV/Pt/gttLJEEXJg==
X-Received: by 2002:a05:600c:5409:b0:40e:550b:45d8 with SMTP id he9-20020a05600c540900b0040e550b45d8mr402511wmb.56.1704974984396;
        Thu, 11 Jan 2024 04:09:44 -0800 (PST)
From: Javi Merino <javi.merino@cloud.com>
To: xen-devel@lists.xenproject.org
Cc: Javi Merino <javi.merino@cloud.com>,
	Vikram Garhwal <vikram.garhwal@amd.com>,
	Julien Grall <julien@xen.org>,
	Stefano Stabellini <sstabellini@kernel.org>
Subject: [PATCH v2] xen/common: Don't dereference overlay_node after checking that it is NULL
Date: Thu, 11 Jan 2024 12:09:27 +0000
Message-ID: <18b7b16d0cce886728410784a7b6063116be7e2d.1704970589.git.javi.merino@cloud.com>
X-Mailer: git-send-email 2.42.0
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

In remove_nodes(), overlay_node is dereferenced when printing the
error message even though it is known to be NULL.  Return without
printing as an error message is already printed by the caller.

The semantic patch that spots this code is available in

https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/scripts/coccinelle/null/deref_null.cocci?id=1f874787ed9a2d78ed59cb21d0d90ac0178eceb0

Fixes: 7e5c4a8b86f1 ("xen/arm: Implement device tree node removal functionalities")
Signed-off-by: Javi Merino <javi.merino@cloud.com>
---
CC: Vikram Garhwal <vikram.garhwal@amd.com>
CC: Julien Grall <julien@xen.org>

 xen/common/dt-overlay.c | 4 ----
 1 file changed, 4 deletions(-)

diff --git a/xen/common/dt-overlay.c b/xen/common/dt-overlay.c
index 5663a049e90a..1b197381f616 100644
--- a/xen/common/dt-overlay.c
+++ b/xen/common/dt-overlay.c
@@ -427,11 +427,7 @@ static int remove_nodes(const struct overlay_track *tracker)
     {
         overlay_node = (struct dt_device_node *)tracker->nodes_address[j];
         if ( overlay_node == NULL )
-        {
-            printk(XENLOG_ERR "Device %s is not present in the tree. Removing nodes failed\n",
-                   overlay_node->full_name);
             return -EINVAL;
-        }
 
         rc = remove_descendant_nodes_resources(overlay_node);
         if ( rc )
-- 
2.42.0



From xen-devel-bounces@lists.xenproject.org Thu Jan 11 12:11:48 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 11 Jan 2024 12:11:48 +0000
Received: from list by lists.xenproject.org with outflank-mailman.666230.1036703 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNtuV-0007bW-S3; Thu, 11 Jan 2024 12:11:47 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 666230.1036703; Thu, 11 Jan 2024 12:11:47 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNtuV-0007bP-PF; Thu, 11 Jan 2024 12:11:47 +0000
Received: by outflank-mailman (input) for mailman id 666230;
 Thu, 11 Jan 2024 12:11:46 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=YFj+=IV=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rNtuT-0007Zx-V2
 for xen-devel@lists.xenproject.org; Thu, 11 Jan 2024 12:11:45 +0000
Received: from mail-wr1-x429.google.com (mail-wr1-x429.google.com
 [2a00:1450:4864:20::429])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 957ba902-b07a-11ee-9b0f-b553b5be7939;
 Thu, 11 Jan 2024 13:11:43 +0100 (CET)
Received: by mail-wr1-x429.google.com with SMTP id
 ffacd0b85a97d-33748c4f33dso5072798f8f.1
 for <xen-devel@lists.xenproject.org>; Thu, 11 Jan 2024 04:11:43 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 x6-20020adfcc06000000b00336f43fa654sm1084576wrh.22.2024.01.11.04.11.42
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 11 Jan 2024 04:11:42 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 957ba902-b07a-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1704975103; x=1705579903; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=aLWAawrZ+jzX305L/X2X+3D8gbzYJ/QUyx/ygEN0OcU=;
        b=CFtwu2dvaacTe+8gZktAKwloXBekkU7Tt3uRYFZMWyGIiLWmj3W3BMy9xtITL+0Jry
         JEpN8q2hcrCX7o2TQQDkDJS6V+JlLhbMDx8z7nhJSe6ixuhTUhjdPdMdIh6EKGa8QiCw
         9hb211oI7IWLR1cAz+tFe3E1BdEPf+/u5aQ6Mx5o0ecsoPlx3C8s7xd/yjj4IemVy5W6
         4w4cQ/SV1fWp++FnKowF0B8TI5OUEBzGlbQ90y7/wjgjNbFRSIB2ikPP5+i39lYqPFtv
         GKA5Fm+GNictdYBPlfy2el48OnBaS1CtLTI2U3V5J1mFuwUN2Lu8P5vrxhuvVOKmqC8k
         iLeQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704975103; x=1705579903;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=aLWAawrZ+jzX305L/X2X+3D8gbzYJ/QUyx/ygEN0OcU=;
        b=sp9sruD46Vf1SjuTXCX5sd8sl0BU/oAUwNc7R0FvXRI2IpxjsJjCFi1XgJjcMVvZrp
         1/2t4xQ3m3iiB0HFFZQEo+YCA7Sy7J1gSVA+gNBgrfR2FLkQ5OYiSt39m1ObiU+gheHm
         PSy+5fItu1+VciSVz0swwbjm12iWylOWu1Kb0GUEmHsC2dl/RbnbSpdnnoIrQL+6PJef
         oQqjIWlo0DNNCHQYsBOB+FfgGB5z2pQBmMuqgVEptFl2DaS09gol3/pO8OscSwLl/3Cx
         ZWVzrH7yZ2hHkwHFdtz1w21uKeDeTjNkwwVMkesxIKpZt7ydiLMAcaFINJsolcgW9chx
         43xw==
X-Gm-Message-State: AOJu0YykwZrT/E8Dx7urR2Np1GOPPOZGEcMQpfm/Qn7SasmqrZRJdhBJ
	7hGSb5hTL/IXYXHZkpWsjzyriIR2MYey
X-Google-Smtp-Source: AGHT+IH/3wXPg/+/Y03UMvb3V0QpAo+gFrFTZayH8qx2vJgxt3A4JbhgdWrteXNfDHfK/yr+1G0GAQ==
X-Received: by 2002:a05:6000:4f2:b0:337:4206:85eb with SMTP id cr18-20020a05600004f200b00337420685ebmr521397wrb.91.1704975103132;
        Thu, 11 Jan 2024 04:11:43 -0800 (PST)
Message-ID: <aa0a0b1c-ffe0-456f-933f-2e62c9a47f82@suse.com>
Date: Thu, 11 Jan 2024 13:11:42 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 1/8] keyhandler: don't pass cpu_user_regs around
Content-Language: en-US
To: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: George Dunlap <george.dunlap@citrix.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
References: <1ab231ec-5e3c-4662-8530-2213bc52bb7c@suse.com>
 <dd1c24ec-4054-43e1-b0c9-6c2044b84046@suse.com>
 <7d21e38d-d1f8-46df-89ef-809dd9c5a38b@citrix.com>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <7d21e38d-d1f8-46df-89ef-809dd9c5a38b@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 11.01.2024 12:49, Andrew Cooper wrote:
> On 11/01/2024 7:31 am, Jan Beulich wrote:
>> There are exactly two handlers which care about the registers.
> 
> Which two?  dump regs and trap to debugger?
> 
> [Edit, oh yes, this is clear in the patch, but IMO it would be helpful
> to state them here.]

Sure, added mention of 'd' and '%'.

>> Have
>> handle_keypress() make the pointer available via a per-CPU variable,
>> thus eliminating the need to pass it to all IRQ key handlers, making
>> sure that a console-invoked key's handling can still nest inside a
>> sysctl-invoked one's.
> 
> I know this is the current behaviour, and I'm not suggesting altering it
> in this patch, but the sysctl was added so you had a way of using debug
> keys without necessarily having a working serial connection.
> 
> It was never expected or intended for both mechanisms to work
> concurrently, and I don't think we need to take any care to make/keep it
> working.

Well, all it takes is the saving and restoring of keypress_regs in
handle_keypress(). You you really think it would be better to risk
a cash, but not doing that tiny bit of extra work?

>> Signed-off-by: Jan Beulich <jbeulich@suse.com>
> 
> Acked-by: Andrew Cooper <andrew.cooper3@citrix.com> with a few trivial
> tweaks, but see below.

Thanks, and yes, I've inserted the two blank lines.

>> ---
>> Subsequently we may want to eliminate the fn/irq_fn union as well,
>> along with dropping the now redundant irq_keyhandler_fn_t.
> 
> Yes - this simplification was one I was hoping to be able to make in due
> course.  I suspect the split is only because some functionality wanted
> regs and others not.

That's my recollection, yes.

> Trap to debugger is an x86-ism for gdbstub only.  I'm tempted to drop
> all the gdbstub code.  I've never encountered it working in 13y, and the
> number of build fixes I've done personally, I don't believe the code can
> plausibly be in a non-bitrotten state.
> 
> Nevertheless, an explicit trap-to-debugger which isn't a manually
> inserted debugger_trap_{immediate,fatal}() is a weird construct in the
> first place, not least because an attached debugger can do this on its
> own anyway.

Not sure here, and I'd hope purging of that (if so wanted) can be dealt
with separately. I have a vague recollection of such "on its own" wasn't
very reliable, when trying to use such elsewhere (in the distant past,
before I started working on Xen). That's not to say that I have proof
that our debug-key is any more reliable.

> The more I think about this, the more I think we should just remove 'D',
> even if we don't go for dropping gdbstub.  It's the only place where
> gdbstub really escapes out of x86 into common code.  (I see there's a
> new one in bug.h but that is abstracted with a macro.)
> 
> Also, `xl debug-keys D` was clearly something that just got swept up
> with "make all debug keys usable via sysctl", not because it was a
> plausibly useful construct.

Did you really mean D (EPT table dump), not %? If the latter, then yes,
that may better be filtered out of what can be done via sysctl.

> This just leaves dump regs, which I think can safely use get_irq_regs()
> || guest_cpu_user_regs().  All it wants is something to dump_execstate()
> to, which just wants to be the start of the path which led here.

I don't think so - consider the case of 'd' hitting while handling an
interrupt (and, say, stuck there in an infinite loop with IRQs enabled).
We'd then wrongly dump the context of what the earlier IRQ interrupted.

Jan


From xen-devel-bounces@lists.xenproject.org Thu Jan 11 12:16:27 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 11 Jan 2024 12:16:27 +0000
Received: from list by lists.xenproject.org with outflank-mailman.666234.1036713 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNtyx-0008Fg-Cy; Thu, 11 Jan 2024 12:16:23 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 666234.1036713; Thu, 11 Jan 2024 12:16:23 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNtyx-0008FZ-9E; Thu, 11 Jan 2024 12:16:23 +0000
Received: by outflank-mailman (input) for mailman id 666234;
 Thu, 11 Jan 2024 12:16:21 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=YPRU=IV=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1rNtyv-0008FT-DT
 for xen-devel@lists.xenproject.org; Thu, 11 Jan 2024 12:16:21 +0000
Received: from mail-wr1-x429.google.com (mail-wr1-x429.google.com
 [2a00:1450:4864:20::429])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 39eba128-b07b-11ee-9b0f-b553b5be7939;
 Thu, 11 Jan 2024 13:16:19 +0100 (CET)
Received: by mail-wr1-x429.google.com with SMTP id
 ffacd0b85a97d-3368ac0f74dso3660696f8f.0
 for <xen-devel@lists.xenproject.org>; Thu, 11 Jan 2024 04:16:19 -0800 (PST)
Received: from [10.80.67.30] (default-46-102-197-194.interdsl.co.uk.
 [46.102.197.194]) by smtp.gmail.com with ESMTPSA id
 m7-20020a5d4a07000000b003365fc41bcasm1084380wrq.51.2024.01.11.04.16.18
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 11 Jan 2024 04:16:18 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 39eba128-b07b-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1704975379; x=1705580179; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=lcyEiKb+2kxFcm+1vkjMRqiqDE6e5ZAfeACWsjzt+yU=;
        b=J428wPAXVm5MBo6WcuBuBjwpUWxvn5GbGQ3+by5w5vM97c6QRYaXH3bFuVro+P5Cad
         LO9ysFqAT6lkV1owlX3RUzcP3M45O2A/JCNsnapWNoDFGJr87iunGukUf+x4aIZsDuEU
         cI5qFMiD3hdUGk9bjeOzA/uzt3/Q/PnJv6Y7A=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704975379; x=1705580179;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=lcyEiKb+2kxFcm+1vkjMRqiqDE6e5ZAfeACWsjzt+yU=;
        b=LAi43D1FoS6+fFXRiufE5NvAZ5GpLob/3vRio8bCFHrBGUsdfBvcH4BbZ78NXFd4tM
         W+709jJn2hWsarP8BUBXQYnpPf6u4Bd+mRzmQsWVuo7JAwsjKEAEBgf/7Z9AzRx3rEQ4
         rVfwCRkjeL5jGXOQTr6+hSh8XRQy7f9NuGek1ov+2ujmHrlF6vRIcuPMzAB8FbSYXhtd
         ua09WqxU3qExiFZUJEBCtjASIyh8ojfb61CSb6szMq59/DVUAAaZVx5ddbAeVU+Z/HZR
         1uS2zcg5Uq4AVoAhiPb7xFzGhGC+JDa+Lvuty4b9gjZNmLIAa0rtbOZzNb0pFb4SVDKI
         y9Xw==
X-Gm-Message-State: AOJu0YyinfiOqmfwUTko/ZwsA5MvVwPZbTMRRq2UwXVBE4ZGtD1vlvD0
	vL8vA57+YLa6mk3PHy4CQdZvnlyl6QTVXQ==
X-Google-Smtp-Source: AGHT+IH41xMKspg5OjzdEKiY+tpFuAQT/GklXik+5VETOcsB1CbwWNnE4fwdHWz/AbbhggyaSY1qIg==
X-Received: by 2002:a5d:4449:0:b0:337:55bc:6027 with SMTP id x9-20020a5d4449000000b0033755bc6027mr547529wrr.19.1704975379030;
        Thu, 11 Jan 2024 04:16:19 -0800 (PST)
Message-ID: <e25f3b1e-1d04-4847-a96f-ef59cdd7937c@citrix.com>
Date: Thu, 11 Jan 2024 12:16:18 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 2/8] IRQ: generalize [gs]et_irq_regs()
Content-Language: en-GB
To: Jan Beulich <jbeulich@suse.com>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: George Dunlap <george.dunlap@citrix.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Bertrand Marquis <bertrand.marquis@arm.com>,
 Michal Orzel <michal.orzel@amd.com>
References: <1ab231ec-5e3c-4662-8530-2213bc52bb7c@suse.com>
 <4c6d11b0-32dd-4ce3-a157-a848b6fc3154@suse.com>
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 xsFNBFLhNn8BEADVhE+Hb8i0GV6mihnnr/uiQQdPF8kUoFzCOPXkf7jQ5sLYeJa0cQi6Penp
 VtiFYznTairnVsN5J+ujSTIb+OlMSJUWV4opS7WVNnxHbFTPYZVQ3erv7NKc2iVizCRZ2Kxn
 srM1oPXWRic8BIAdYOKOloF2300SL/bIpeD+x7h3w9B/qez7nOin5NzkxgFoaUeIal12pXSR
 Q354FKFoy6Vh96gc4VRqte3jw8mPuJQpfws+Pb+swvSf/i1q1+1I4jsRQQh2m6OTADHIqg2E
 ofTYAEh7R5HfPx0EXoEDMdRjOeKn8+vvkAwhviWXTHlG3R1QkbE5M/oywnZ83udJmi+lxjJ5
 YhQ5IzomvJ16H0Bq+TLyVLO/VRksp1VR9HxCzItLNCS8PdpYYz5TC204ViycobYU65WMpzWe
 LFAGn8jSS25XIpqv0Y9k87dLbctKKA14Ifw2kq5OIVu2FuX+3i446JOa2vpCI9GcjCzi3oHV
 e00bzYiHMIl0FICrNJU0Kjho8pdo0m2uxkn6SYEpogAy9pnatUlO+erL4LqFUO7GXSdBRbw5
 gNt25XTLdSFuZtMxkY3tq8MFss5QnjhehCVPEpE6y9ZjI4XB8ad1G4oBHVGK5LMsvg22PfMJ
 ISWFSHoF/B5+lHkCKWkFxZ0gZn33ju5n6/FOdEx4B8cMJt+cWwARAQABzSlBbmRyZXcgQ29v
 cGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPsLBegQTAQgAJAIbAwULCQgHAwUVCgkI
 CwUWAgMBAAIeAQIXgAUCWKD95wIZAQAKCRBlw/kGpdefoHbdD/9AIoR3k6fKl+RFiFpyAhvO
 59ttDFI7nIAnlYngev2XUR3acFElJATHSDO0ju+hqWqAb8kVijXLops0gOfqt3VPZq9cuHlh
 IMDquatGLzAadfFx2eQYIYT+FYuMoPZy/aTUazmJIDVxP7L383grjIkn+7tAv+qeDfE+txL4
 SAm1UHNvmdfgL2/lcmL3xRh7sub3nJilM93RWX1Pe5LBSDXO45uzCGEdst6uSlzYR/MEr+5Z
 JQQ32JV64zwvf/aKaagSQSQMYNX9JFgfZ3TKWC1KJQbX5ssoX/5hNLqxMcZV3TN7kU8I3kjK
 mPec9+1nECOjjJSO/h4P0sBZyIUGfguwzhEeGf4sMCuSEM4xjCnwiBwftR17sr0spYcOpqET
 ZGcAmyYcNjy6CYadNCnfR40vhhWuCfNCBzWnUW0lFoo12wb0YnzoOLjvfD6OL3JjIUJNOmJy
 RCsJ5IA/Iz33RhSVRmROu+TztwuThClw63g7+hoyewv7BemKyuU6FTVhjjW+XUWmS/FzknSi
 dAG+insr0746cTPpSkGl3KAXeWDGJzve7/SBBfyznWCMGaf8E2P1oOdIZRxHgWj0zNr1+ooF
 /PzgLPiCI4OMUttTlEKChgbUTQ+5o0P080JojqfXwbPAyumbaYcQNiH1/xYbJdOFSiBv9rpt
 TQTBLzDKXok86M7BTQRS4TZ/ARAAkgqudHsp+hd82UVkvgnlqZjzz2vyrYfz7bkPtXaGb9H4
 Rfo7mQsEQavEBdWWjbga6eMnDqtu+FC+qeTGYebToxEyp2lKDSoAsvt8w82tIlP/EbmRbDVn
 7bhjBlfRcFjVYw8uVDPptT0TV47vpoCVkTwcyb6OltJrvg/QzV9f07DJswuda1JH3/qvYu0p
 vjPnYvCq4NsqY2XSdAJ02HrdYPFtNyPEntu1n1KK+gJrstjtw7KsZ4ygXYrsm/oCBiVW/OgU
 g/XIlGErkrxe4vQvJyVwg6YH653YTX5hLLUEL1NS4TCo47RP+wi6y+TnuAL36UtK/uFyEuPy
 wwrDVcC4cIFhYSfsO0BumEI65yu7a8aHbGfq2lW251UcoU48Z27ZUUZd2Dr6O/n8poQHbaTd
 6bJJSjzGGHZVbRP9UQ3lkmkmc0+XCHmj5WhwNNYjgbbmML7y0fsJT5RgvefAIFfHBg7fTY/i
 kBEimoUsTEQz+N4hbKwo1hULfVxDJStE4sbPhjbsPCrlXf6W9CxSyQ0qmZ2bXsLQYRj2xqd1
 bpA+1o1j2N4/au1R/uSiUFjewJdT/LX1EklKDcQwpk06Af/N7VZtSfEJeRV04unbsKVXWZAk
 uAJyDDKN99ziC0Wz5kcPyVD1HNf8bgaqGDzrv3TfYjwqayRFcMf7xJaL9xXedMcAEQEAAcLB
 XwQYAQgACQUCUuE2fwIbDAAKCRBlw/kGpdefoG4XEACD1Qf/er8EA7g23HMxYWd3FXHThrVQ
 HgiGdk5Yh632vjOm9L4sd/GCEACVQKjsu98e8o3ysitFlznEns5EAAXEbITrgKWXDDUWGYxd
 pnjj2u+GkVdsOAGk0kxczX6s+VRBhpbBI2PWnOsRJgU2n10PZ3mZD4Xu9kU2IXYmuW+e5KCA
 vTArRUdCrAtIa1k01sPipPPw6dfxx2e5asy21YOytzxuWFfJTGnVxZZSCyLUO83sh6OZhJkk
 b9rxL9wPmpN/t2IPaEKoAc0FTQZS36wAMOXkBh24PQ9gaLJvfPKpNzGD8XWR5HHF0NLIJhgg
 4ZlEXQ2fVp3XrtocHqhu4UZR4koCijgB8sB7Tb0GCpwK+C4UePdFLfhKyRdSXuvY3AHJd4CP
 4JzW0Bzq/WXY3XMOzUTYApGQpnUpdOmuQSfpV9MQO+/jo7r6yPbxT7CwRS5dcQPzUiuHLK9i
 nvjREdh84qycnx0/6dDroYhp0DFv4udxuAvt1h4wGwTPRQZerSm4xaYegEFusyhbZrI0U9tJ
 B8WrhBLXDiYlyJT6zOV2yZFuW47VrLsjYnHwn27hmxTC/7tvG3euCklmkn9Sl9IAKFu29RSo
 d5bD8kMSCYsTqtTfT6W4A3qHGvIDta3ptLYpIAOD2sY3GYq2nf3Bbzx81wZK14JdDDHUX2Rs
 6+ahAA==
In-Reply-To: <4c6d11b0-32dd-4ce3-a157-a848b6fc3154@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 11/01/2024 7:32 am, Jan Beulich wrote:
> Move functions (and their data) to common code, and invoke the functions
> on Arm as well. This is in preparation of dropping the register
> parameters from handler functions.
>
> Signed-off-by: Jan Beulich <jbeulich@suse.com>

Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com> with one wording
suggestion.

> ---
> To limit visibility of the per-CPU data item, we may want to consider
> making the functions out-of-line ones (in common/irq.c).

If we had working LTO, then maybe.  But we don't, and I think we can
reasonably cover (not using) this with normal code review.

> --- a/xen/include/xen/irq.h
> +++ b/xen/include/xen/irq.h
> @@ -131,6 +131,26 @@ void cf_check irq_actor_none(struct irq_
>  #define irq_disable_none irq_actor_none
>  #define irq_enable_none irq_actor_none
>  
> +/*
> + * Per-cpu interrupted context register state - the top-most interrupt frame
> + * on the stack.

The prior wording "last" wasn't great either.

I'd suggest "inner-most".  "top-most" comes with the usual confusions
with stacks being upside down, and inner/outer is more common
terminology with nesting.

~Andrew


From xen-devel-bounces@lists.xenproject.org Thu Jan 11 12:19:34 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 11 Jan 2024 12:19:34 +0000
Received: from list by lists.xenproject.org with outflank-mailman.666240.1036723 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNu20-0000ui-PR; Thu, 11 Jan 2024 12:19:32 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 666240.1036723; Thu, 11 Jan 2024 12:19:32 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNu20-0000ub-Mt; Thu, 11 Jan 2024 12:19:32 +0000
Received: by outflank-mailman (input) for mailman id 666240;
 Thu, 11 Jan 2024 12:19:32 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=YPRU=IV=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1rNu20-0000uV-8T
 for xen-devel@lists.xenproject.org; Thu, 11 Jan 2024 12:19:32 +0000
Received: from mail-wm1-x334.google.com (mail-wm1-x334.google.com
 [2a00:1450:4864:20::334])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id aba87aac-b07b-11ee-9b0f-b553b5be7939;
 Thu, 11 Jan 2024 13:19:30 +0100 (CET)
Received: by mail-wm1-x334.google.com with SMTP id
 5b1f17b1804b1-40e5f615a32so5110465e9.1
 for <xen-devel@lists.xenproject.org>; Thu, 11 Jan 2024 04:19:30 -0800 (PST)
Received: from [10.80.67.30] (default-46-102-197-194.interdsl.co.uk.
 [46.102.197.194]) by smtp.gmail.com with ESMTPSA id
 je6-20020a05600c1f8600b0040d8d11bf63sm1723631wmb.41.2024.01.11.04.19.29
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 11 Jan 2024 04:19:29 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: aba87aac-b07b-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1704975570; x=1705580370; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=15PoZj2QWwXgsJhkIZAJueb461Ikz08lyC405tiomZA=;
        b=ofZ7jxhvoY/szh1hHfqjId2XY0gyVN80V1tMHx5XGZC7er7rFi/CctpN5cow9xzlCS
         PoC9uNrCJp4SXBBDgWRkHd/XxHwQzzgoRuRATe3DP5+AhonZMuHCUqINuEOOJuqvi6lt
         6iPc3pUOyMubo5p1esjJWof2HrTyCuNxr5EyU=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704975570; x=1705580370;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=15PoZj2QWwXgsJhkIZAJueb461Ikz08lyC405tiomZA=;
        b=w/Elqesk6Dz7YNH5RugRwGmOR5Qu6NEIlQ8F4MbJJcmgKnPzijFHcnxlm4P7jbjPL4
         /6rfph7+6kKCBTz/m4Biev3gwfV6WrVGxa4UwUTp3z8I4CKumNKhZ12T7Lbf99tqcT5T
         cec8NlssoGBovUhFXasrQ6srh063cUxlE4ZdppMewrpnPT2tDli9HyzpjhAMYPmLmW0Q
         s37i5M1Nbm+psweMEnRyJEUV3wV7YybHAwVVpzDv9ZmtAuSp19xUVfbqRQjWAMS7Hbik
         t1osSzym8tjkq8NXfykD0DtCKFPM816j9E2USAZwdNUpMDF4OVVQpkYS4mGQSjNh0j9+
         H8TA==
X-Gm-Message-State: AOJu0Yw1O5afUJUAEHnZ0FQejQa9VIFSeE4EyTWw55zYpCfSZv8H/Lai
	el66Ott5LreW6HRQ28TG6/gVBKj4Wc7YgA==
X-Google-Smtp-Source: AGHT+IGo9W5UMdDHnMQiQzPDImZbNQosDZT4pcY8XkAj6g1AV/ShkNoUlTUeofcfdzep9Q0l50C9zA==
X-Received: by 2002:a05:600c:4e89:b0:40e:5571:378a with SMTP id f9-20020a05600c4e8900b0040e5571378amr207526wmq.198.1704975569876;
        Thu, 11 Jan 2024 04:19:29 -0800 (PST)
Message-ID: <a2d59393-a0db-4032-870a-9940853ef8bd@citrix.com>
Date: Thu, 11 Jan 2024 12:19:29 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 3/8] serial: drop serial_rx_fn's regs parameter
Content-Language: en-GB
To: Jan Beulich <jbeulich@suse.com>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: George Dunlap <george.dunlap@citrix.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>
References: <1ab231ec-5e3c-4662-8530-2213bc52bb7c@suse.com>
 <0087ad97-d315-4891-ab35-7a41e62d2f23@suse.com>
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 xsFNBFLhNn8BEADVhE+Hb8i0GV6mihnnr/uiQQdPF8kUoFzCOPXkf7jQ5sLYeJa0cQi6Penp
 VtiFYznTairnVsN5J+ujSTIb+OlMSJUWV4opS7WVNnxHbFTPYZVQ3erv7NKc2iVizCRZ2Kxn
 srM1oPXWRic8BIAdYOKOloF2300SL/bIpeD+x7h3w9B/qez7nOin5NzkxgFoaUeIal12pXSR
 Q354FKFoy6Vh96gc4VRqte3jw8mPuJQpfws+Pb+swvSf/i1q1+1I4jsRQQh2m6OTADHIqg2E
 ofTYAEh7R5HfPx0EXoEDMdRjOeKn8+vvkAwhviWXTHlG3R1QkbE5M/oywnZ83udJmi+lxjJ5
 YhQ5IzomvJ16H0Bq+TLyVLO/VRksp1VR9HxCzItLNCS8PdpYYz5TC204ViycobYU65WMpzWe
 LFAGn8jSS25XIpqv0Y9k87dLbctKKA14Ifw2kq5OIVu2FuX+3i446JOa2vpCI9GcjCzi3oHV
 e00bzYiHMIl0FICrNJU0Kjho8pdo0m2uxkn6SYEpogAy9pnatUlO+erL4LqFUO7GXSdBRbw5
 gNt25XTLdSFuZtMxkY3tq8MFss5QnjhehCVPEpE6y9ZjI4XB8ad1G4oBHVGK5LMsvg22PfMJ
 ISWFSHoF/B5+lHkCKWkFxZ0gZn33ju5n6/FOdEx4B8cMJt+cWwARAQABzSlBbmRyZXcgQ29v
 cGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPsLBegQTAQgAJAIbAwULCQgHAwUVCgkI
 CwUWAgMBAAIeAQIXgAUCWKD95wIZAQAKCRBlw/kGpdefoHbdD/9AIoR3k6fKl+RFiFpyAhvO
 59ttDFI7nIAnlYngev2XUR3acFElJATHSDO0ju+hqWqAb8kVijXLops0gOfqt3VPZq9cuHlh
 IMDquatGLzAadfFx2eQYIYT+FYuMoPZy/aTUazmJIDVxP7L383grjIkn+7tAv+qeDfE+txL4
 SAm1UHNvmdfgL2/lcmL3xRh7sub3nJilM93RWX1Pe5LBSDXO45uzCGEdst6uSlzYR/MEr+5Z
 JQQ32JV64zwvf/aKaagSQSQMYNX9JFgfZ3TKWC1KJQbX5ssoX/5hNLqxMcZV3TN7kU8I3kjK
 mPec9+1nECOjjJSO/h4P0sBZyIUGfguwzhEeGf4sMCuSEM4xjCnwiBwftR17sr0spYcOpqET
 ZGcAmyYcNjy6CYadNCnfR40vhhWuCfNCBzWnUW0lFoo12wb0YnzoOLjvfD6OL3JjIUJNOmJy
 RCsJ5IA/Iz33RhSVRmROu+TztwuThClw63g7+hoyewv7BemKyuU6FTVhjjW+XUWmS/FzknSi
 dAG+insr0746cTPpSkGl3KAXeWDGJzve7/SBBfyznWCMGaf8E2P1oOdIZRxHgWj0zNr1+ooF
 /PzgLPiCI4OMUttTlEKChgbUTQ+5o0P080JojqfXwbPAyumbaYcQNiH1/xYbJdOFSiBv9rpt
 TQTBLzDKXok86M7BTQRS4TZ/ARAAkgqudHsp+hd82UVkvgnlqZjzz2vyrYfz7bkPtXaGb9H4
 Rfo7mQsEQavEBdWWjbga6eMnDqtu+FC+qeTGYebToxEyp2lKDSoAsvt8w82tIlP/EbmRbDVn
 7bhjBlfRcFjVYw8uVDPptT0TV47vpoCVkTwcyb6OltJrvg/QzV9f07DJswuda1JH3/qvYu0p
 vjPnYvCq4NsqY2XSdAJ02HrdYPFtNyPEntu1n1KK+gJrstjtw7KsZ4ygXYrsm/oCBiVW/OgU
 g/XIlGErkrxe4vQvJyVwg6YH653YTX5hLLUEL1NS4TCo47RP+wi6y+TnuAL36UtK/uFyEuPy
 wwrDVcC4cIFhYSfsO0BumEI65yu7a8aHbGfq2lW251UcoU48Z27ZUUZd2Dr6O/n8poQHbaTd
 6bJJSjzGGHZVbRP9UQ3lkmkmc0+XCHmj5WhwNNYjgbbmML7y0fsJT5RgvefAIFfHBg7fTY/i
 kBEimoUsTEQz+N4hbKwo1hULfVxDJStE4sbPhjbsPCrlXf6W9CxSyQ0qmZ2bXsLQYRj2xqd1
 bpA+1o1j2N4/au1R/uSiUFjewJdT/LX1EklKDcQwpk06Af/N7VZtSfEJeRV04unbsKVXWZAk
 uAJyDDKN99ziC0Wz5kcPyVD1HNf8bgaqGDzrv3TfYjwqayRFcMf7xJaL9xXedMcAEQEAAcLB
 XwQYAQgACQUCUuE2fwIbDAAKCRBlw/kGpdefoG4XEACD1Qf/er8EA7g23HMxYWd3FXHThrVQ
 HgiGdk5Yh632vjOm9L4sd/GCEACVQKjsu98e8o3ysitFlznEns5EAAXEbITrgKWXDDUWGYxd
 pnjj2u+GkVdsOAGk0kxczX6s+VRBhpbBI2PWnOsRJgU2n10PZ3mZD4Xu9kU2IXYmuW+e5KCA
 vTArRUdCrAtIa1k01sPipPPw6dfxx2e5asy21YOytzxuWFfJTGnVxZZSCyLUO83sh6OZhJkk
 b9rxL9wPmpN/t2IPaEKoAc0FTQZS36wAMOXkBh24PQ9gaLJvfPKpNzGD8XWR5HHF0NLIJhgg
 4ZlEXQ2fVp3XrtocHqhu4UZR4koCijgB8sB7Tb0GCpwK+C4UePdFLfhKyRdSXuvY3AHJd4CP
 4JzW0Bzq/WXY3XMOzUTYApGQpnUpdOmuQSfpV9MQO+/jo7r6yPbxT7CwRS5dcQPzUiuHLK9i
 nvjREdh84qycnx0/6dDroYhp0DFv4udxuAvt1h4wGwTPRQZerSm4xaYegEFusyhbZrI0U9tJ
 B8WrhBLXDiYlyJT6zOV2yZFuW47VrLsjYnHwn27hmxTC/7tvG3euCklmkn9Sl9IAKFu29RSo
 d5bD8kMSCYsTqtTfT6W4A3qHGvIDta3ptLYpIAOD2sY3GYq2nf3Bbzx81wZK14JdDDHUX2Rs
 6+ahAA==
In-Reply-To: <0087ad97-d315-4891-ab35-7a41e62d2f23@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 11/01/2024 7:33 am, Jan Beulich wrote:
> In the one place where it's needed, get_irq_regs() can be used instead.
> This is in preparation of dropping the register parameters from IRQ
> handler functions.
>
> Signed-off-by: Jan Beulich <jbeulich@suse.com>

Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>


From xen-devel-bounces@lists.xenproject.org Thu Jan 11 12:19:48 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 11 Jan 2024 12:19:48 +0000
Received: from list by lists.xenproject.org with outflank-mailman.666242.1036733 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNu2G-0001Kz-3y; Thu, 11 Jan 2024 12:19:48 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 666242.1036733; Thu, 11 Jan 2024 12:19:48 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNu2G-0001Kq-1P; Thu, 11 Jan 2024 12:19:48 +0000
Received: by outflank-mailman (input) for mailman id 666242;
 Thu, 11 Jan 2024 12:19:46 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=CYFo=IV=suse.com=jgross@srs-se1.protection.inumbo.net>)
 id 1rNu2E-0001Hk-Rd
 for xen-devel@lists.xenproject.org; Thu, 11 Jan 2024 12:19:46 +0000
Received: from smtp-out2.suse.de (smtp-out2.suse.de [195.135.223.131])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id b4ac0b74-b07b-11ee-98f0-6d05b1d4d9a1;
 Thu, 11 Jan 2024 13:19:45 +0100 (CET)
Received: from imap1.dmz-prg2.suse.org (imap1.dmz-prg2.suse.org [10.150.64.97])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
 (No client certificate requested)
 by smtp-out2.suse.de (Postfix) with ESMTPS id 90A221FBA7;
 Thu, 11 Jan 2024 12:19:44 +0000 (UTC)
Received: from imap1.dmz-prg2.suse.org (localhost [127.0.0.1])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
 (No client certificate requested)
 by imap1.dmz-prg2.suse.org (Postfix) with ESMTPS id 6B8DA13635;
 Thu, 11 Jan 2024 12:19:44 +0000 (UTC)
Received: from dovecot-director2.suse.de ([2a07:de40:b281:106:10:150:64:167])
 by imap1.dmz-prg2.suse.org with ESMTPSA id OowEGeDcn2UCIQAAD6G6ig
 (envelope-from <jgross@suse.com>); Thu, 11 Jan 2024 12:19:44 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: b4ac0b74-b07b-11ee-98f0-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1704975584; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:  content-transfer-encoding:content-transfer-encoding;
	bh=zAsSdZzhpnvzBzTmhbdd6Q4oWrx5BMkN+qXi6QhRV1I=;
	b=lrEmUO3uA25sEQr2plez6YkkiaG1pzvp5Pb67rNR/2UCNEtCbrmDydOj0rttzXXWHWdm2r
	jOpfVXCEJG7yOwUcBhHVOiYgclbv+GbBwWIpp0TI6tQwHjVDKysgnIcUbmJay7g9GvFAmN
	z36h2dp92uko9OlElUJd8JJeFpvrw8U=
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1704975584; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:  content-transfer-encoding:content-transfer-encoding;
	bh=zAsSdZzhpnvzBzTmhbdd6Q4oWrx5BMkN+qXi6QhRV1I=;
	b=lrEmUO3uA25sEQr2plez6YkkiaG1pzvp5Pb67rNR/2UCNEtCbrmDydOj0rttzXXWHWdm2r
	jOpfVXCEJG7yOwUcBhHVOiYgclbv+GbBwWIpp0TI6tQwHjVDKysgnIcUbmJay7g9GvFAmN
	z36h2dp92uko9OlElUJd8JJeFpvrw8U=
From: Juergen Gross <jgross@suse.com>
To: torvalds@linux-foundation.org
Cc: linux-kernel@vger.kernel.org,
	xen-devel@lists.xenproject.org,
	sstabellini@kernel.org
Subject: [GIT PULL] xen: branch for v6.8-rc1
Date: Thu, 11 Jan 2024 13:19:43 +0100
Message-Id: <20240111121943.3342-1-jgross@suse.com>
X-Mailer: git-send-email 2.35.3
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Authentication-Results: smtp-out2.suse.de;
	none
X-Spam-Level: ***
X-Spam-Score: 3.70
X-Spamd-Result: default: False [3.70 / 50.00];
	 RCVD_VIA_SMTP_AUTH(0.00)[];
	 R_MISSING_CHARSET(2.50)[];
	 TO_DN_NONE(0.00)[];
	 BROKEN_CONTENT_TYPE(1.50)[];
	 RCVD_COUNT_THREE(0.00)[3];
	 NEURAL_HAM_SHORT(-0.20)[-1.000];
	 FROM_EQ_ENVFROM(0.00)[];
	 MIME_TRACE(0.00)[0:+];
	 BAYES_HAM(-0.00)[43.69%];
	 ARC_NA(0.00)[];
	 FROM_HAS_DN(0.00)[];
	 RCPT_COUNT_THREE(0.00)[4];
	 TO_MATCH_ENVRCPT_ALL(0.00)[];
	 NEURAL_HAM_LONG(-0.99)[-0.994];
	 MIME_GOOD(-0.10)[text/plain];
	 DKIM_SIGNED(0.00)[suse.com:s=susede1];
	 MID_CONTAINS_FROM(1.00)[];
	 FUZZY_BLOCKED(0.00)[rspamd.com];
	 RCVD_TLS_ALL(0.00)[]
X-Spam-Flag: NO

Linus,

Please git pull the following tag:

 git://git.kernel.org/pub/scm/linux/kernel/git/xen/tip.git for-linus-6.8-rc1-tag

xen: branch for v6.8-rc1

It contains:

- a patch updating some Xen PV interface related headers
- a patch fixing some kernel-doc comments in the xenbus driver
- a patch fixing the Xen gntdev driver to not access the struct page
  of pages imported from a DMA-buf


Thanks.

Juergen

 drivers/xen/gntdev-dmabuf.c        | 50 ++++++++++++++++----------------
 drivers/xen/xenbus/xenbus_client.c | 59 ++++++++++++++++++++++----------------
 include/xen/interface/io/displif.h |  2 +-
 include/xen/interface/io/ring.h    |  2 +-
 include/xen/interface/io/sndif.h   |  2 +-
 5 files changed, 62 insertions(+), 53 deletions(-)

Juergen Gross (1):
      xen: update PV-device interface headers

Oleksandr Tyshchenko (1):
      xen/gntdev: Fix the abuse of underlying struct page in DMA-buf import

Randy Dunlap (1):
      xen/xenbus: client: fix kernel-doc comments


From xen-devel-bounces@lists.xenproject.org Thu Jan 11 12:20:59 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 11 Jan 2024 12:20:59 +0000
Received: from list by lists.xenproject.org with outflank-mailman.666250.1036743 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNu3N-0003Cf-DN; Thu, 11 Jan 2024 12:20:57 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 666250.1036743; Thu, 11 Jan 2024 12:20:57 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNu3N-0003CY-Ap; Thu, 11 Jan 2024 12:20:57 +0000
Received: by outflank-mailman (input) for mailman id 666250;
 Thu, 11 Jan 2024 12:20:56 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=YPRU=IV=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1rNu3M-0003CQ-Am
 for xen-devel@lists.xenproject.org; Thu, 11 Jan 2024 12:20:56 +0000
Received: from mail-wm1-x333.google.com (mail-wm1-x333.google.com
 [2a00:1450:4864:20::333])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id ddbf1877-b07b-11ee-9b0f-b553b5be7939;
 Thu, 11 Jan 2024 13:20:54 +0100 (CET)
Received: by mail-wm1-x333.google.com with SMTP id
 5b1f17b1804b1-40e62979f41so151045e9.1
 for <xen-devel@lists.xenproject.org>; Thu, 11 Jan 2024 04:20:54 -0800 (PST)
Received: from [10.80.67.30] (default-46-102-197-194.interdsl.co.uk.
 [46.102.197.194]) by smtp.gmail.com with ESMTPSA id
 je6-20020a05600c1f8600b0040d8d11bf63sm1723631wmb.41.2024.01.11.04.20.53
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 11 Jan 2024 04:20:53 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: ddbf1877-b07b-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1704975654; x=1705580454; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=xVyYgKXujUFkGx0vO1p/aQm+jvPrERVabhyjENzZJmE=;
        b=phFPuJNZ85Or/uNkEFDGiY6C0gjgVyd1xf2JMbmP6cv+/oktC9XXU7IWj6KSNgAS5j
         F06anJbUrJsu7cxP7+PpmH71drPn9xq7HZyICHEYNQAE7l7kXc/uNrf/iwJ7l0jPb4Gp
         7G0MXq1DVJFtNNnLIHJwitz02qNOcLgMxrLZ8=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704975654; x=1705580454;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=xVyYgKXujUFkGx0vO1p/aQm+jvPrERVabhyjENzZJmE=;
        b=XXMYq6uFwtSSI8FpcxnUf6CF5KglqkUNEKd+Ds71RRPaJfPJ3aJhLnZjhM2ECfzzss
         vsVAg9J/mWZozEKOVFYoea6JPm1UPuLooZAjFDL5pBny6ZH+T4h+jnQT1PGDaxN9kYNy
         swj/kT26+iJNzApNmO9fMVxJFJyEHE0ao6CrznEJUbmLaBRSnmTLRdwka1d8PWXbK5R+
         LJGZoBXwIJqaHYUJSe40uGOlsPP/iwtlLHO7LYcL7d33hyDk83PvYkIEj8Sf6sWB7SVD
         S6dBdgbcBX++GTdAHHrWAmNUzI+m4kXkZpne/bGMU6rdw/wg8jG629dZom5VKMxDORKP
         sgQg==
X-Gm-Message-State: AOJu0Yz4R1UpUI9c+wqgBHNBhZnS7HRViyiou55RG0VgJoX6lFBhalx/
	lMoCVcwvKJfPn9ZnFNbgr9b572VoZ2Krjw==
X-Google-Smtp-Source: AGHT+IHRm/0+HC0nkLWwWA9EcLCF2rgLnaBVhE/itiVYUbq70Eb9mZtd6PD8pDZban9HkvubbimOsg==
X-Received: by 2002:a05:600c:4b95:b0:40e:4807:812c with SMTP id e21-20020a05600c4b9500b0040e4807812cmr427074wmp.38.1704975653895;
        Thu, 11 Jan 2024 04:20:53 -0800 (PST)
Message-ID: <11151a05-d951-4974-b726-015c66a2b32d@citrix.com>
Date: Thu, 11 Jan 2024 12:20:53 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 4/8] PV-shim: drop pv_console_rx()'s regs parameter
Content-Language: en-GB
To: Jan Beulich <jbeulich@suse.com>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: George Dunlap <george.dunlap@citrix.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
References: <1ab231ec-5e3c-4662-8530-2213bc52bb7c@suse.com>
 <a770f13f-ee71-4fb1-b8d4-62e25584dd39@suse.com>
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 xsFNBFLhNn8BEADVhE+Hb8i0GV6mihnnr/uiQQdPF8kUoFzCOPXkf7jQ5sLYeJa0cQi6Penp
 VtiFYznTairnVsN5J+ujSTIb+OlMSJUWV4opS7WVNnxHbFTPYZVQ3erv7NKc2iVizCRZ2Kxn
 srM1oPXWRic8BIAdYOKOloF2300SL/bIpeD+x7h3w9B/qez7nOin5NzkxgFoaUeIal12pXSR
 Q354FKFoy6Vh96gc4VRqte3jw8mPuJQpfws+Pb+swvSf/i1q1+1I4jsRQQh2m6OTADHIqg2E
 ofTYAEh7R5HfPx0EXoEDMdRjOeKn8+vvkAwhviWXTHlG3R1QkbE5M/oywnZ83udJmi+lxjJ5
 YhQ5IzomvJ16H0Bq+TLyVLO/VRksp1VR9HxCzItLNCS8PdpYYz5TC204ViycobYU65WMpzWe
 LFAGn8jSS25XIpqv0Y9k87dLbctKKA14Ifw2kq5OIVu2FuX+3i446JOa2vpCI9GcjCzi3oHV
 e00bzYiHMIl0FICrNJU0Kjho8pdo0m2uxkn6SYEpogAy9pnatUlO+erL4LqFUO7GXSdBRbw5
 gNt25XTLdSFuZtMxkY3tq8MFss5QnjhehCVPEpE6y9ZjI4XB8ad1G4oBHVGK5LMsvg22PfMJ
 ISWFSHoF/B5+lHkCKWkFxZ0gZn33ju5n6/FOdEx4B8cMJt+cWwARAQABzSlBbmRyZXcgQ29v
 cGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPsLBegQTAQgAJAIbAwULCQgHAwUVCgkI
 CwUWAgMBAAIeAQIXgAUCWKD95wIZAQAKCRBlw/kGpdefoHbdD/9AIoR3k6fKl+RFiFpyAhvO
 59ttDFI7nIAnlYngev2XUR3acFElJATHSDO0ju+hqWqAb8kVijXLops0gOfqt3VPZq9cuHlh
 IMDquatGLzAadfFx2eQYIYT+FYuMoPZy/aTUazmJIDVxP7L383grjIkn+7tAv+qeDfE+txL4
 SAm1UHNvmdfgL2/lcmL3xRh7sub3nJilM93RWX1Pe5LBSDXO45uzCGEdst6uSlzYR/MEr+5Z
 JQQ32JV64zwvf/aKaagSQSQMYNX9JFgfZ3TKWC1KJQbX5ssoX/5hNLqxMcZV3TN7kU8I3kjK
 mPec9+1nECOjjJSO/h4P0sBZyIUGfguwzhEeGf4sMCuSEM4xjCnwiBwftR17sr0spYcOpqET
 ZGcAmyYcNjy6CYadNCnfR40vhhWuCfNCBzWnUW0lFoo12wb0YnzoOLjvfD6OL3JjIUJNOmJy
 RCsJ5IA/Iz33RhSVRmROu+TztwuThClw63g7+hoyewv7BemKyuU6FTVhjjW+XUWmS/FzknSi
 dAG+insr0746cTPpSkGl3KAXeWDGJzve7/SBBfyznWCMGaf8E2P1oOdIZRxHgWj0zNr1+ooF
 /PzgLPiCI4OMUttTlEKChgbUTQ+5o0P080JojqfXwbPAyumbaYcQNiH1/xYbJdOFSiBv9rpt
 TQTBLzDKXok86M7BTQRS4TZ/ARAAkgqudHsp+hd82UVkvgnlqZjzz2vyrYfz7bkPtXaGb9H4
 Rfo7mQsEQavEBdWWjbga6eMnDqtu+FC+qeTGYebToxEyp2lKDSoAsvt8w82tIlP/EbmRbDVn
 7bhjBlfRcFjVYw8uVDPptT0TV47vpoCVkTwcyb6OltJrvg/QzV9f07DJswuda1JH3/qvYu0p
 vjPnYvCq4NsqY2XSdAJ02HrdYPFtNyPEntu1n1KK+gJrstjtw7KsZ4ygXYrsm/oCBiVW/OgU
 g/XIlGErkrxe4vQvJyVwg6YH653YTX5hLLUEL1NS4TCo47RP+wi6y+TnuAL36UtK/uFyEuPy
 wwrDVcC4cIFhYSfsO0BumEI65yu7a8aHbGfq2lW251UcoU48Z27ZUUZd2Dr6O/n8poQHbaTd
 6bJJSjzGGHZVbRP9UQ3lkmkmc0+XCHmj5WhwNNYjgbbmML7y0fsJT5RgvefAIFfHBg7fTY/i
 kBEimoUsTEQz+N4hbKwo1hULfVxDJStE4sbPhjbsPCrlXf6W9CxSyQ0qmZ2bXsLQYRj2xqd1
 bpA+1o1j2N4/au1R/uSiUFjewJdT/LX1EklKDcQwpk06Af/N7VZtSfEJeRV04unbsKVXWZAk
 uAJyDDKN99ziC0Wz5kcPyVD1HNf8bgaqGDzrv3TfYjwqayRFcMf7xJaL9xXedMcAEQEAAcLB
 XwQYAQgACQUCUuE2fwIbDAAKCRBlw/kGpdefoG4XEACD1Qf/er8EA7g23HMxYWd3FXHThrVQ
 HgiGdk5Yh632vjOm9L4sd/GCEACVQKjsu98e8o3ysitFlznEns5EAAXEbITrgKWXDDUWGYxd
 pnjj2u+GkVdsOAGk0kxczX6s+VRBhpbBI2PWnOsRJgU2n10PZ3mZD4Xu9kU2IXYmuW+e5KCA
 vTArRUdCrAtIa1k01sPipPPw6dfxx2e5asy21YOytzxuWFfJTGnVxZZSCyLUO83sh6OZhJkk
 b9rxL9wPmpN/t2IPaEKoAc0FTQZS36wAMOXkBh24PQ9gaLJvfPKpNzGD8XWR5HHF0NLIJhgg
 4ZlEXQ2fVp3XrtocHqhu4UZR4koCijgB8sB7Tb0GCpwK+C4UePdFLfhKyRdSXuvY3AHJd4CP
 4JzW0Bzq/WXY3XMOzUTYApGQpnUpdOmuQSfpV9MQO+/jo7r6yPbxT7CwRS5dcQPzUiuHLK9i
 nvjREdh84qycnx0/6dDroYhp0DFv4udxuAvt1h4wGwTPRQZerSm4xaYegEFusyhbZrI0U9tJ
 B8WrhBLXDiYlyJT6zOV2yZFuW47VrLsjYnHwn27hmxTC/7tvG3euCklmkn9Sl9IAKFu29RSo
 d5bD8kMSCYsTqtTfT6W4A3qHGvIDta3ptLYpIAOD2sY3GYq2nf3Bbzx81wZK14JdDDHUX2Rs
 6+ahAA==
In-Reply-To: <a770f13f-ee71-4fb1-b8d4-62e25584dd39@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 11/01/2024 7:33 am, Jan Beulich wrote:
> It's not needed anymore. This is in preparation of dropping the register
> parameters from IRQ handler functions.
>
> Signed-off-by: Jan Beulich <jbeulich@suse.com>

Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>


From xen-devel-bounces@lists.xenproject.org Thu Jan 11 12:22:43 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 11 Jan 2024 12:22:43 +0000
Received: from list by lists.xenproject.org with outflank-mailman.666254.1036752 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNu51-00043S-OX; Thu, 11 Jan 2024 12:22:39 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 666254.1036752; Thu, 11 Jan 2024 12:22:39 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNu51-00043L-Ll; Thu, 11 Jan 2024 12:22:39 +0000
Received: by outflank-mailman (input) for mailman id 666254;
 Thu, 11 Jan 2024 12:22:38 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=4+ne=IV=cloud.com=roger.pau@srs-se1.protection.inumbo.net>)
 id 1rNu4z-00043F-W3
 for xen-devel@lists.xenproject.org; Thu, 11 Jan 2024 12:22:37 +0000
Received: from mail-wr1-x431.google.com (mail-wr1-x431.google.com
 [2a00:1450:4864:20::431])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 1aeca809-b07c-11ee-98f0-6d05b1d4d9a1;
 Thu, 11 Jan 2024 13:22:37 +0100 (CET)
Received: by mail-wr1-x431.google.com with SMTP id
 ffacd0b85a97d-3368ae75082so3509493f8f.1
 for <xen-devel@lists.xenproject.org>; Thu, 11 Jan 2024 04:22:37 -0800 (PST)
Received: from localhost ([213.195.127.70]) by smtp.gmail.com with ESMTPSA id
 m6-20020adffa06000000b00336c6b77584sm1100188wrr.91.2024.01.11.04.22.36
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 11 Jan 2024 04:22:36 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 1aeca809-b07c-11ee-98f0-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1704975756; x=1705580556; darn=lists.xenproject.org;
        h=in-reply-to:content-transfer-encoding:content-disposition
         :mime-version:references:message-id:subject:cc:to:from:date:from:to
         :cc:subject:date:message-id:reply-to;
        bh=aYxWEd3xxlinRpZ6/L9cwah03KoU4/HDeJKi/M5dBtU=;
        b=tVN63suOjtKJGTYavnf+BGfO1TWHy9jJf2qNU9dG3G4VUyEOfeD6mTvWekeh+3KDTW
         hELeaL04/Lm6zbanbKy+14n8IuejnShR7SpzpDN93qWrG9yqzbckijtuifdhlF/5LkS/
         23N1SSESXBdd49aYt2rULR2kJ0P6TA/B4SgP8=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704975756; x=1705580556;
        h=in-reply-to:content-transfer-encoding:content-disposition
         :mime-version:references:message-id:subject:cc:to:from:date
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=aYxWEd3xxlinRpZ6/L9cwah03KoU4/HDeJKi/M5dBtU=;
        b=BoF0xUXNzqc9QzTvo4zaavOZksONHsU4N8HbHX0kJMuSNeB3ZXS644FvMwuA9ksMrZ
         pCAjYvJcNt2HrsqL9S4LrLOEIFW9WZnSN7w/AdiPnWxgH4ReNCTbtIjfPGsgyXweT8De
         Jfk8Q1G73EEppzlzfw3Nh+Hz6UoSyfRasQhWDl8res/hGnQXj9yDdqEwzBXz+L742b1t
         kazS/VKGYr4LCxZGvrjf4eL2v5NmNhK5vgpt7Opc/NzTGz3JMeZOzjY0wlQ25wh4cv56
         94XitH/d+8VsU8ML0cbugtnHigQxoWeoduUDYiu4vH8rZBdPUiNJO9sqnMbhiTqZlVjx
         q2rg==
X-Gm-Message-State: AOJu0YwU5c2Rw41+xoSt6hg5W8CK+5cl+SPw2nH+bAviR3ICD6YHQnOF
	g45cV/gBVyt0trAiyggPK0gkL1375naLjQ==
X-Google-Smtp-Source: AGHT+IEn1E4H51RkLo/wr6vbNPVEO2JVqwkVJww4+XvDdM4juGUgc8ooJAfBKCJxm9OsWbziMfPaZw==
X-Received: by 2002:a05:600c:3d89:b0:40e:6222:7f25 with SMTP id bi9-20020a05600c3d8900b0040e62227f25mr212632wmb.99.1704975756576;
        Thu, 11 Jan 2024 04:22:36 -0800 (PST)
Date: Thu, 11 Jan 2024 13:22:35 +0100
From: Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
To: Jan Beulich <jbeulich@suse.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, Wei Liu <wl@xen.org>,
	xen-devel@lists.xenproject.org
Subject: Re: [PATCH v2] x86/intel: ensure Global Performance Counter Control
 is setup correctly
Message-ID: <ZZ_di8pZB8bWtBuX@macbook>
References: <20240111090821.67594-1-roger.pau@citrix.com>
 <3428928a-42d0-4e4b-9607-c184968c309d@suse.com>
 <ZZ_FjFa9mILtDZgv@macbook>
 <645e0c95-5a12-4202-8da6-3cc789a9e5c7@suse.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <645e0c95-5a12-4202-8da6-3cc789a9e5c7@suse.com>

On Thu, Jan 11, 2024 at 12:34:45PM +0100, Jan Beulich wrote:
> On 11.01.2024 11:40, Roger Pau Monné wrote:
> > On Thu, Jan 11, 2024 at 11:11:07AM +0100, Jan Beulich wrote:
> >> On 11.01.2024 10:08, Roger Pau Monne wrote:
> >>> When Architectural Performance Monitoring is available, the PERF_GLOBAL_CTRL
> >>> MSR contains per-counter enable bits that is ANDed with the enable bit in the
> >>> counter EVNTSEL MSR in order for a PMC counter to be enabled.
> >>>
> >>> So far the watchdog code seems to have relied on the PERF_GLOBAL_CTRL enable
> >>> bits being set by default, but at least on some Intel Sapphire and Emerald
> >>> Rapids this is no longer the case, and Xen reports:
> >>>
> >>> Testing NMI watchdog on all CPUs: 0 40 stuck
> >>>
> >>> The first CPU on each package is started with PERF_GLOBAL_CTRL zeroed, so PMC0
> >>> doesn't start counting when the enable bit in EVNTSEL0 is set, due to the
> >>> relevant enable bit in PERF_GLOBAL_CTRL not being set.
> >>>
> >>> Check and adjust PERF_GLOBAL_CTRL during CPU initialization so that all the
> >>> general-purpose PMCs are enabled.  Doing so brings the state of the package-BSP
> >>> PERF_GLOBAL_CTRL in line with the rest of the CPUs on the system.
> >>>
> >>> Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
> >>> ---
> >>> Changes since v1:
> >>>  - Do the adjustment of PERF_GLOBAL_CTRL even if the watchdog is not used, and
> >>>    enable all counters.
> >>> ---
> >>> Unsure whether printing a warning if the value of PERF_GLOBAL_CTRL is not
> >>> correct is of any value, hence I haven't added it.
> >>> ---
> >>>  xen/arch/x86/cpu/intel.c | 18 +++++++++++++++++-
> >>>  1 file changed, 17 insertions(+), 1 deletion(-)
> >>>
> >>> diff --git a/xen/arch/x86/cpu/intel.c b/xen/arch/x86/cpu/intel.c
> >>> index dfee64689ffe..40d3eb0e18a7 100644
> >>> --- a/xen/arch/x86/cpu/intel.c
> >>> +++ b/xen/arch/x86/cpu/intel.c
> >>> @@ -533,9 +533,25 @@ static void cf_check init_intel(struct cpuinfo_x86 *c)
> >>>  	init_intel_cacheinfo(c);
> >>>  	if (c->cpuid_level > 9) {
> >>>  		unsigned eax = cpuid_eax(10);
> >>> +		unsigned int cnt = (uint8_t)(eax >> 8);
> >>> +
> >>>  		/* Check for version and the number of counters */
> >>> -		if ((eax & 0xff) && (((eax>>8) & 0xff) > 1))
> >>> +		if ((eax & 0xff) && (cnt > 1) && (cnt <= 32)) {
> >>
> >> I may not have looked closely enough, but I didn't find the limit of
> >> 32 being stated anywhere.
> > 
> > Hm, my copy of the SDM vol4 states that bits 31:n are the enable bits,
> > where n is CPUID.0AH: EAX[15:8].  Bits 32, 33 and 34 control the Fixed
> > PMCs.
> > 
> >>> +			uint64_t global_ctrl;
> >>> +			unsigned int cnt_mask = (1UL << cnt) - 1;
> >>
> >> Bits 2 + 4 * n have an additional qualification as per SDM vol 4.
> > 
> > Let me update my copy...
> > 
> > Looking at the version from December 2023, I see:
> > 
> > 0 EN_PMC0 If CPUID.0AH: EAX[15:8] > 0
> > 1 EN_PMC1 If CPUID.0AH: EAX[15:8] > 1
> > 2 EN_PMC2 If CPUID.0AH: EAX[15:8] > 2
> > n EN_PMCn If CPUID.0AH: EAX[15:8] > n
> > 31:n+1 Reserved.
> > 
> > And I'm afraid I'm not able to infer this additional qualification of
> > bits 2 + 4 * n.
> 
> I'm sorry, both earlier questions were my fault, due to looking at the
> table entry for the first match of PERF_GLOBAL_CTRL (i.e.
> IA32_FIXED_CTR_CTRL). Still need to get used to the new table layout,
> it seems.
> 
> Looking at the correct entry raises a question on cnt > 1 though, as
> EN_PMC0 is defined for cnt > 0.

Oh, indeed, can adjust on this same patch if that's OK (seeing as the
issue was already there previous to my change).

Thanks, Roger.


From xen-devel-bounces@lists.xenproject.org Thu Jan 11 12:26:00 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 11 Jan 2024 12:26:00 +0000
Received: from list by lists.xenproject.org with outflank-mailman.666258.1036763 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNu8E-0004yX-6a; Thu, 11 Jan 2024 12:25:58 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 666258.1036763; Thu, 11 Jan 2024 12:25:58 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNu8E-0004yQ-3g; Thu, 11 Jan 2024 12:25:58 +0000
Received: by outflank-mailman (input) for mailman id 666258;
 Thu, 11 Jan 2024 12:25:56 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>) id 1rNu8C-0004yK-Pm
 for xen-devel@lists.xenproject.org; Thu, 11 Jan 2024 12:25:56 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rNu88-0004qD-Lu; Thu, 11 Jan 2024 12:25:52 +0000
Received: from [15.248.2.234] (helo=[10.24.67.34])
 by xenbits.xenproject.org with esmtpsa
 (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rNu88-0003Yv-Dc; Thu, 11 Jan 2024 12:25:52 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
	s=20200302mail; h=Content-Transfer-Encoding:Content-Type:In-Reply-To:From:
	References:Cc:To:Subject:MIME-Version:Date:Message-ID;
	bh=rG+TBeviSM+aZkx6WVDR2RBN6aR5W+It+rirODfxg/4=; b=7G7YtFPmNcNnQxpH9xI8mshciW
	AwwtXLCoTHpSuuWI/3+hq2yW3pw7zB61g2cUPH9nsuxOqkmYOWE6w/0UT3aDlK3wfHFu27vfNbq53
	IbtV7qF/jqcsMUwNz/1p04uhKWKHyCpdtggT7pLzZfDYAs/bQI1OvEZZ5GfTa0wC/sI4=;
Message-ID: <4ab710c3-c628-4bbe-9533-88af75a9b9ec@xen.org>
Date: Thu, 11 Jan 2024 12:25:49 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 11/22] x86: add a boot option to enable and disable the
 direct map
Content-Language: en-GB
To: Jan Beulich <jbeulich@suse.com>, Elias El Yandouzi <eliasely@amazon.com>
Cc: Hongyan Xia <hongyxia@amazon.com>,
 Andrew Cooper <andrew.cooper3@citrix.com>,
 George Dunlap <george.dunlap@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>,
 Bertrand Marquis <bertrand.marquis@arm.com>,
 Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Julien Grall <jgrall@amazon.com>, xen-devel@lists.xenproject.org
References: <20221216114853.8227-1-julien@xen.org>
 <20221216114853.8227-12-julien@xen.org>
 <fc70f967-34bb-9569-f514-7a3208e746c6@suse.com>
 <bc989828-69b9-4919-9ff3-fdd53fb2def1@amazon.com>
 <c736e4d9-5262-4adf-9e74-9b1be5ab13db@suse.com>
From: Julien Grall <julien@xen.org>
In-Reply-To: <c736e4d9-5262-4adf-9e74-9b1be5ab13db@suse.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

Hi Jan,

On 11/01/2024 11:53, Jan Beulich wrote:
> On 11.01.2024 11:47, Elias El Yandouzi wrote:
>> On 22/12/2022 13:24, Jan Beulich wrote:
>>> That said, I think this change comes too early in the series, or there is
>>> something missing.
>>
>> At first, I had the same feeling but looking at the rest of the series,
>> I can see that the option is needed in follow-up patches.
>>
>>> As said in reply to patch 10, while there the mapcache
>>> is being initialized for the idle domain, I don't think it can be used
>>> just yet. Read through mapcache_current_vcpu() to understand why I think
>>> that way, paying particular attention to the ASSERT() near the end.
>>
>> Would be able to elaborate a bit more why you think that? I haven't been
>> able to get your point.
> 
> Why exactly I referred to the ASSERT() there I can't reconstruct. The
> function as a whole looks problematic though when suddenly the idle
> domain also gains a mapcache. I'm sorry, too much context was lost
> from over a year ago; all of this will need looking at from scratch
> again whenever a new version was posted.
> 
>>> In preparation of this patch here I think the mfn_to_virt() uses have to all
>>> disappear from map_domain_page(). Perhaps yet more strongly all
>>> ..._to_virt() (except fix_to_virt() and friends) and __va() have to
>>> disappear up front from x86 and any code path which can be taken on x86
>>> (which may simply mean purging all respective x86 #define-s, without
>>> breaking the build in any way).
>>
>> I agree with you on that one. I think it is what we're aiming for in the
>> long term. However, as mentioned by Julien in the cover letter, the
>> series's name is a misnomer and I am afraid we won't be able to remove
>> all of them with this series. These helpers would still be used for
>> xenheap pages or when the direct map is enabled.
> 
> Leaving a hazard of certain uses not having been converted, or even
> overlooked in patches going in at around the same time as this series?
> I view this as pretty "adventurous".

Until we get rid of the directmap completely (which is not the goal of 
this series), we will need to keep mfn_to_virt().

In fact the one you ask to remove in map_domain_page() will need to be 
replaced with function doing the same thing. The same for the code that 
will initially prepare the directmap. This to avoid impacting 
performance when the user still wants to use the directmap.

So are you just asking to remove most of the use and rename *_to_virt() 
to something that is more directmap specific (e.g. mfn_to_directmap_virt())?

Cheers,

-- 
Julien Grall


From xen-devel-bounces@lists.xenproject.org Thu Jan 11 12:27:20 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 11 Jan 2024 12:27:20 +0000
Received: from list by lists.xenproject.org with outflank-mailman.666267.1036773 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNu9X-0005VQ-GP; Thu, 11 Jan 2024 12:27:19 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 666267.1036773; Thu, 11 Jan 2024 12:27:19 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNu9X-0005VJ-DB; Thu, 11 Jan 2024 12:27:19 +0000
Received: by outflank-mailman (input) for mailman id 666267;
 Thu, 11 Jan 2024 12:27:18 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=WCg5=IV=bounce.vates.tech=bounce-md_30504962.659fdea2.v1-67bed4a62c204c4ab1070e00b57b904a@srs-se1.protection.inumbo.net>)
 id 1rNu9W-0005T6-3z
 for xen-devel@lists.xenproject.org; Thu, 11 Jan 2024 12:27:18 +0000
Received: from mail136-6.atl41.mandrillapp.com
 (mail136-6.atl41.mandrillapp.com [198.2.136.6])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id c0e4776f-b07c-11ee-9b0f-b553b5be7939;
 Thu, 11 Jan 2024 13:27:16 +0100 (CET)
Received: from pmta11.mandrill.prod.atl01.rsglab.com (localhost [127.0.0.1])
 by mail136-6.atl41.mandrillapp.com (Mailchimp) with ESMTP id 4T9kSf68pSzlfcV4
 for <xen-devel@lists.xenproject.org>; Thu, 11 Jan 2024 12:27:14 +0000 (GMT)
Received: from [37.26.189.201] by mandrillapp.com id
 67bed4a62c204c4ab1070e00b57b904a; Thu, 11 Jan 2024 12:27:14 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: c0e4776f-b07c-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mandrillapp.com;
	s=mte1; t=1704976034; x=1705236534;
	bh=GWJycRM1RMsGCNg44DODZ3MsQtz9ke7/m21LBuXqsT4=;
	h=From:Subject:Message-Id:To:References:Cc:In-Reply-To:Feedback-ID:
	 Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date:
	 Subject:From;
	b=s6dF0u9xKDMEdabS75Eq7pEcF0WTmaTrdiXqcfN7Ek7UNY625kVGu4Nv9oBfbpFjg
	 x1roGJOFxQkG6sXwo++413e+YJ9f95QdlZjkDSjlAVgv2UjcqSBEdkIqTM/807zp4c
	 Eq/3VHzOiX9JsZCvceydYh3iyKMxdO+VYwgYAHJcDi+3pB14OTIJzo4/ujO030Fa1d
	 FrFs4PuhDZjIlRFdM8Z0bY0zpim1RTItFSAmNxdgQswNCzsXm5E5R2h4Jo/vvt86wc
	 qWoj7AaKvtNpOszmC5Xgt4NTl9akUFeMMYzHTXW3o9PmEc9WXWN65SK2VfhMK6yjwm
	 ey+ACn5qsBRZA==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech;
	s=mandrill; t=1704976034; x=1705236534; i=yann.dirson@vates.tech;
	bh=GWJycRM1RMsGCNg44DODZ3MsQtz9ke7/m21LBuXqsT4=;
	h=From:Subject:Message-Id:To:References:Cc:In-Reply-To:Feedback-ID:
	 Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date:
	 Subject:From;
	b=fU8mg0Nm+Z3YX7s3CoXbe1rbBUe5fF/yoKPgfPowGyahVRwVz+P261jKZzsuUDzbb
	 /aLaPXwgu5yBJBcAfgArTCyA56IoEnNAZV9e3qe5aewzpPQKwZ0bcM2S3+RYUDrBht
	 Qzp+zBEklvgOWh/AQfrz4OLeUgyKPsXELvN1FhOs=
From: Yann Dirson <yann.dirson@vates.tech>
Subject: =?utf-8?Q?Re:=20Next=20steps=20for=20Rust=20guest=20agent?=
X-Bm-Disclaimer: Yes
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1704976032651
Message-Id: <1be8f6f1-f977-4743-bd26-362ada960dc6@vates.tech>
To: xen-devel@lists.xenproject.org
References: <aea51d2e-5da8-4da8-954f-2ee2a43be73e@vates.tech>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, George Dunlap <george.dunlap@citrix.com>, Jan Beulich <jbeulich@suse.com>, Julien Grall <julien@xen.org>, Stefano Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>, Lunfan Zhang <Lunfan.Zhang@citrix.com>, Xihuan Yang <xihuan.yang@citrix.com>, dpsmith@apertussolutions.com, marmarek@invisiblethingslab.com
In-Reply-To: <aea51d2e-5da8-4da8-954f-2ee2a43be73e@vates.tech>
X-Native-Encoded: 1
X-Report-Abuse: =?UTF-8?Q?Please=20forward=20a=20copy=20of=20this=20message,=20including=20all=20headers,=20to=20abuse@mandrill.com.=20You=20can=20also=20report=20abuse=20here:=20https://mandrillapp.com/contact/abuse=3Fid=3D30504962.67bed4a62c204c4ab1070e00b57b904a?=
X-Mandrill-User: md_30504962
Feedback-ID: 30504962:30504962.20240111:md
Date: Thu, 11 Jan 2024 12:27:14 +0000
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 7bit

On 12/8/23 10:38, Yann Dirson wrote:
> Current status:
> - primary goal: to have one guest agent all downstreams can use, in all
> guests (with Linux and FreeBSD already supported), as efficient as
> possible (with Netlink already supported on Linux)
> - developed at https://gitlab.com/xen-project/xen-guest-agent (till now
> using gitlab PRs)
> - works fine as a replacement for the Xenserver xe-guest-utilities

Let's try to reboot the discussion.

> Some points raised during the community call:
> - we likely want first to agree on a core set of collected information

Currently I see the set of information collected as divided in the 
following categories:

- those that are genuinely useful
   - OS identifier (data/os_distro), and more detailed descriptive 
string (data/os_name)
   - kernel version (data/os_uname)
   - IP addresses assigned to VIFs attached to the guest

- those that could be more useful but XAPI wants them
   - free memory (data/meminfo_free) and total memory 
(data/meminfo_total) according to guest OS (not necessarily well defined)
   - control/feature-balloon=1 (necessary for XAPI's ballooning control 
to do anything today)
   - the version of the running agent, split in components 
(attr/PVAddons/{Major,Minor,Micro,Build}Version) (including constraints 
like Major being at least 1)

- those we provide for XAPI to be but without which it seems to be not 
too sad, and I'd happily drop
   - OS major and minor version (data/os_majorver, data/os_minorver)

What set of information (not necessarily from this list) do you think 
would qualify as "core set of information to collect" ?


> - could be made more configurable (eg. define a xenstore schema at
> runtime, we don't want specific schemas needs to cause forks)
>     -> it could be the agent requesting a specific xenstore schema

I do find some appeal to the idea that a toolstack should decide what 
info the guest should give it and where.  That could take the form of a 
TBD string written to xenstore before the domain starts, e.g. matching 
well-known IDs for pieces of information to xenstore paths.


> - what should be the criteria to advertise it as official Xenproject
> guest agent ?

What do people think here?

There is at least one known issue I'd like to address rapidly, which is 
that the FreeBSD ports ship a buggy bash script [1] derived from 
obsolete version of a XenServer tool.  Maybe at least it's not necessary 
to wait before approaching them to replace that old script with the Rust 
agent in its current state?

[1] 
https://github.com/freebsd/freebsd-ports/tree/main/sysutils/xe-guest-utilities

Best regards,
-- 
Yann



Yann Dirson | Vates Platform Developer

XCP-ng & Xen Orchestra - Vates solutions

web: https://vates.tech


From xen-devel-bounces@lists.xenproject.org Thu Jan 11 13:17:01 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 11 Jan 2024 13:17:01 +0000
Received: from list by lists.xenproject.org with outflank-mailman.666275.1036783 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNuvP-0001a7-9U; Thu, 11 Jan 2024 13:16:47 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 666275.1036783; Thu, 11 Jan 2024 13:16:47 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNuvP-0001a0-5O; Thu, 11 Jan 2024 13:16:47 +0000
Received: by outflank-mailman (input) for mailman id 666275;
 Thu, 11 Jan 2024 13:16:45 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>) id 1rNuvN-0001Zt-Si
 for xen-devel@lists.xenproject.org; Thu, 11 Jan 2024 13:16:45 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rNuvN-0005kG-2D; Thu, 11 Jan 2024 13:16:45 +0000
Received: from [15.248.2.234] (helo=[10.24.67.34])
 by xenbits.xenproject.org with esmtpsa
 (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rNuvM-00068n-Qi; Thu, 11 Jan 2024 13:16:44 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
	s=20200302mail; h=Content-Transfer-Encoding:Content-Type:In-Reply-To:From:
	References:Cc:To:Subject:MIME-Version:Date:Message-ID;
	bh=fhnSpQm3XVH+09dXnDomBXbg5zFd9A+DGPHmZTbXVX8=; b=iQP6e+KJwREnT2OVSFRLj4EOVX
	GqnQAZ7d2j3SyA+3wWN9kzoNet/qrTLq+b8+m7OLDXsM2bv2VLxooE28LC9Y6gZuAjkCHOQag2lKz
	vEgJjGwOplc52EBMpeAkZAGy8XCl7KsMT4FXXNtMOq5bjIh0WHJU5eRk67hni/0wNhnw=;
Message-ID: <87afaa57-5963-4204-9425-cdb76a90bc0d@xen.org>
Date: Thu, 11 Jan 2024 13:16:43 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3] NUMA: limit first_valid_mfn exposure
Content-Language: en-GB
To: Jan Beulich <jbeulich@suse.com>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 George Dunlap <george.dunlap@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>
References: <4db3f6fd-ba51-43d2-89f7-adbdaf720874@suse.com>
From: Julien Grall <julien@xen.org>
In-Reply-To: <4db3f6fd-ba51-43d2-89f7-adbdaf720874@suse.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

Hi Jan,

On 10/01/2024 14:31, Jan Beulich wrote:
> Address the TODO regarding first_valid_mfn by making the variable static
> when NUMA=y, thus also addressing a Misra C:2012 rule 8.4 concern (on
> x86). To carry this out, introduce two new IS_ENABLED()-like macros
> conditionally inserting "static". One less macro expansion layer is
> sufficient though (I might guess that some early form of IS_ENABLED()
> pasted CONFIG_ onto the incoming argument, at which point the extra
> layer would have been necessary), and part of the existing helper macros
> can be re-used.
> 
> Signed-off-by: Jan Beulich <jbeulich@suse.com>

Reviewed-by: Julien Grall <jgrall@amazon.com>

Cheers,

-- 
Julien Grall


From xen-devel-bounces@lists.xenproject.org Thu Jan 11 13:47:25 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 11 Jan 2024 13:47:25 +0000
Received: from list by lists.xenproject.org with outflank-mailman.666280.1036793 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNvOx-0000Fe-HT; Thu, 11 Jan 2024 13:47:19 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 666280.1036793; Thu, 11 Jan 2024 13:47:19 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNvOx-0000FW-EY; Thu, 11 Jan 2024 13:47:19 +0000
Received: by outflank-mailman (input) for mailman id 666280;
 Thu, 11 Jan 2024 13:47:18 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=4+ne=IV=cloud.com=roger.pau@srs-se1.protection.inumbo.net>)
 id 1rNvOw-00008m-1z
 for xen-devel@lists.xenproject.org; Thu, 11 Jan 2024 13:47:18 +0000
Received: from mail-wm1-x333.google.com (mail-wm1-x333.google.com
 [2a00:1450:4864:20::333])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id ee9f74ba-b087-11ee-98f0-6d05b1d4d9a1;
 Thu, 11 Jan 2024 14:47:16 +0100 (CET)
Received: by mail-wm1-x333.google.com with SMTP id
 5b1f17b1804b1-40e6275e897so2078825e9.3
 for <xen-devel@lists.xenproject.org>; Thu, 11 Jan 2024 05:47:16 -0800 (PST)
Received: from localhost ([213.195.127.70]) by smtp.gmail.com with ESMTPSA id
 jg1-20020a05600ca00100b0040d4e1393dcsm5851966wmb.20.2024.01.11.05.47.15
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 11 Jan 2024 05:47:15 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: ee9f74ba-b087-11ee-98f0-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1704980835; x=1705585635; darn=lists.xenproject.org;
        h=content-transfer-encoding:mime-version:message-id:date:subject:cc
         :to:from:from:to:cc:subject:date:message-id:reply-to;
        bh=VqW9sc5MGVkvYqaq+nwC17m74Lu95c39UQRoxvyDZuo=;
        b=rvEM1jQStL5G5YyX3/d69EdqUQBMV+y65zwTfIJ6cQoBt8v59oabwkBiUvDEVLbxCS
         uz4lInUN6+owIrDSOt4Q8q4qXEEHW3XL6J1rtIoUmkBFRZ2xXf12xjiZByNvbP5FjHkY
         UztOLeYBoaMKc0sDX8cayx3fULRLnNOipG730=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704980835; x=1705585635;
        h=content-transfer-encoding:mime-version:message-id:date:subject:cc
         :to:from:x-gm-message-state:from:to:cc:subject:date:message-id
         :reply-to;
        bh=VqW9sc5MGVkvYqaq+nwC17m74Lu95c39UQRoxvyDZuo=;
        b=AyTgW6NKOwWZ0ZOf+rMsW5TrR52yUuXKBsUUbmwDIeOjsJcNGsf9T4D4Rjv3YQAcLG
         YM99LCB/drLzUhkiOF3UvqNUut5mfqrR8vJJcq6mp7Dh38IHSsocrlViZjrQOVJW/Egs
         PnOenufAvj8I5Ln0ZwD/OP/49NaFPsOb9iZxqGuhpWiP40Sui7gUZroXGg/ZRJpDgt2E
         4vqp2Pf/NRA4ekwQHBaLscTQAKnwAkItUxILVnFJtIyTnMXV9J2ZpK5eBo267boXS3za
         BFwgq1uO4CLvQxHCr0kCG/Sr1n0AfoKJ+oAvc1ukqcURVIRav05lGtcsdUxVXwxHU37p
         G0rA==
X-Gm-Message-State: AOJu0YwOkE3ZO9YpU9OCgNyWkDx713gi0OYFsOpkTlUV5vz+zplR0aZF
	MztbXSGBDyZG8GvXAER0MW2jQG7AqC1RLYwZH6QKxCx21t4=
X-Google-Smtp-Source: AGHT+IHmsBVzE5WwgK/bKXGcOMgL6bfpG67SZUxlbBLW+9Qao1lUCuQmJjJVPo70AZ7JQ52yhk5g5g==
X-Received: by 2002:a05:600c:54c2:b0:40e:4156:9f68 with SMTP id iw2-20020a05600c54c200b0040e41569f68mr464137wmb.136.1704980835407;
        Thu, 11 Jan 2024 05:47:15 -0800 (PST)
From: Roger Pau Monne <roger.pau@citrix.com>
To: xen-devel@lists.xenproject.org
Cc: Roger Pau Monne <roger.pau@citrix.com>,
	Jan Beulich <jbeulich@suse.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Wei Liu <wl@xen.org>
Subject: [PATCH v3] x86/intel: ensure Global Performance Counter Control is setup correctly
Date: Thu, 11 Jan 2024 14:47:11 +0100
Message-ID: <20240111134711.71144-1-roger.pau@citrix.com>
X-Mailer: git-send-email 2.43.0
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

When Architectural Performance Monitoring is available, the PERF_GLOBAL_CTRL
MSR contains per-counter enable bits that is ANDed with the enable bit in the
counter EVNTSEL MSR in order for a PMC counter to be enabled.

So far the watchdog code seems to have relied on the PERF_GLOBAL_CTRL enable
bits being set by default, but at least on some Intel Sapphire and Emerald
Rapids this is no longer the case, and Xen reports:

Testing NMI watchdog on all CPUs: 0 40 stuck

The first CPU on each package is started with PERF_GLOBAL_CTRL zeroed, so PMC0
doesn't start counting when the enable bit in EVNTSEL0 is set, due to the
relevant enable bit in PERF_GLOBAL_CTRL not being set.

Check and adjust PERF_GLOBAL_CTRL during CPU initialization so that all the
general-purpose PMCs are enabled.  Doing so brings the state of the package-BSP
PERF_GLOBAL_CTRL in line with the rest of the CPUs on the system.

While there also adjust the check for ARCH_PERFMON in order to require a single
counter to be present instead of two.

Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
---
Changes since v2:
 - Print message on invalid PERF_GLOBAL_CTRL.
 - Use a mask instead of type truncation.
 - Adjust the check to require a single counter instead of 2.

Changes since v1:
 - Do the adjustment of PERF_GLOBAL_CTRL even if the watchdog is not used, and
   enable all counters.
---
 xen/arch/x86/cpu/intel.c | 23 ++++++++++++++++++++++-
 1 file changed, 22 insertions(+), 1 deletion(-)

diff --git a/xen/arch/x86/cpu/intel.c b/xen/arch/x86/cpu/intel.c
index dfee64689ffe..63c270f48256 100644
--- a/xen/arch/x86/cpu/intel.c
+++ b/xen/arch/x86/cpu/intel.c
@@ -533,9 +533,30 @@ static void cf_check init_intel(struct cpuinfo_x86 *c)
 	init_intel_cacheinfo(c);
 	if (c->cpuid_level > 9) {
 		unsigned eax = cpuid_eax(10);
+		unsigned int cnt = (eax >> 8) & 0xff;
+
 		/* Check for version and the number of counters */
-		if ((eax & 0xff) && (((eax>>8) & 0xff) > 1))
+		if ((eax & 0xff) && cnt && (cnt <= 32)) {
+			uint64_t global_ctrl;
+			unsigned int cnt_mask = (1UL << cnt) - 1;
+
+			/*
+			 * On (some?) Sapphire/Emerald Rapids platforms each
+			 * package-BSP starts with all the enable bits for the
+			 * general-purpose PMCs cleared.  Adjust so counters
+			 * can be enabled from EVNTSEL.
+			 */
+			rdmsrl(MSR_CORE_PERF_GLOBAL_CTRL, global_ctrl);
+			if ((global_ctrl & cnt_mask) != cnt_mask) {
+				printk("CPU%u: invalid PERF_GLOBAL_CTRL: %#"
+				       PRIx64 " adjusting to %#" PRIx64 "\n",
+				       smp_processor_id(), global_ctrl,
+				       global_ctrl | cnt_mask);
+				wrmsrl(MSR_CORE_PERF_GLOBAL_CTRL,
+				       global_ctrl | cnt_mask);
+			}
 			__set_bit(X86_FEATURE_ARCH_PERFMON, c->x86_capability);
+		}
 	}
 
 	if ( !cpu_has(c, X86_FEATURE_XTOPOLOGY) )
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Thu Jan 11 14:01:11 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 11 Jan 2024 14:01:11 +0000
Received: from list by lists.xenproject.org with outflank-mailman.666285.1036803 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNvcH-0003wt-Mh; Thu, 11 Jan 2024 14:01:05 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 666285.1036803; Thu, 11 Jan 2024 14:01:05 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNvcH-0003wm-Ju; Thu, 11 Jan 2024 14:01:05 +0000
Received: by outflank-mailman (input) for mailman id 666285;
 Thu, 11 Jan 2024 14:01:04 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=YFj+=IV=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rNvcG-0003wP-KJ
 for xen-devel@lists.xenproject.org; Thu, 11 Jan 2024 14:01:04 +0000
Received: from mail-wm1-x332.google.com (mail-wm1-x332.google.com
 [2a00:1450:4864:20::332])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id db7330ad-b089-11ee-98f0-6d05b1d4d9a1;
 Thu, 11 Jan 2024 15:01:03 +0100 (CET)
Received: by mail-wm1-x332.google.com with SMTP id
 5b1f17b1804b1-40e60e137a3so4836185e9.1
 for <xen-devel@lists.xenproject.org>; Thu, 11 Jan 2024 06:01:03 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 j8-20020a05600c190800b0040d7b340e07sm2030224wmq.45.2024.01.11.06.01.02
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 11 Jan 2024 06:01:02 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: db7330ad-b089-11ee-98f0-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1704981663; x=1705586463; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:from:to:cc:subject:date:message-id:reply-to;
        bh=tWGNgmdvuBAwsyVsRXMboLPiwPKGcnepfW+S3Qx+oYk=;
        b=THo/w49+pOlRW8l0WaSZzGphpDh16s8pFA6vhGOWDtlyQtEQaTvRA7zS4cqf4TKBqa
         rZKh5OnNC4mPl2ETH4wwephH6M6J31W8cwzM5Lmacb7KrZ46zMy6jRGx0JlJ254+MRJD
         e8FGHN41fvko1Zb02PqjGKteoUO1gkKZK0MG6Fbw2L96SptA9/zcPExgDL2TAiMK0+UI
         BTw3n6+XGCtmBkF/caBIRkjO/bRJlCy3rqJ9I7JPAGMjkGhNboLZeuuPEy6Qktsgx234
         1GfnaXoaD7cTcl+vWizm0ZchjFVMQivHmab41W4i7ySAPJIc+O6Zb5PeCxvhxI9t863b
         Imog==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704981663; x=1705586463;
        h=content-transfer-encoding:in-reply-to:autocrypt:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to;
        bh=tWGNgmdvuBAwsyVsRXMboLPiwPKGcnepfW+S3Qx+oYk=;
        b=kUJPAjNBInTLm0F1ZJGnH5IfkWdKhMiq0NAGF2icDGXO9GZcV2SYPkffWLXl2EJd3h
         S2gLUVFLE/wEDa2B4CMeovdLr0IDu/byuO/DPuXuRKX8ZGEKlaeml20N+Ucp40WZpsmi
         TAVfo0/2u9wTloKHQNx5WQbtKDy3m8oRFXTv+HFCEHBG3rlF6UDF8RYSClmOyjNkmiyH
         +wkl242wI1wmmN4xdIjIQY0oGFxr+VJGMNgcmJLqkQXmV6SsgYwsmJ1R5RRlRf/z8rok
         DiQN0VU5mR+1q/x1N5BLbh1qMtuBiaBaE1GyhJDtFTm0cNCnGXWn6NTVyvF6kLY9MnBC
         s98Q==
X-Gm-Message-State: AOJu0Yz/PwjfuSQnuQHBWlbNX0MvrLkcM5bKdU9OR1ARJ8HYOxAx6nfm
	+srdmeCftnJr6/q0miQz21GlSNyxKsPu
X-Google-Smtp-Source: AGHT+IFEgchcuzJCZsW/Qkxj/PDBUM+8vRelxoNuoHbs483tbOHtFkvDxColH6k7S+e+kaT8rFYBCA==
X-Received: by 2002:a05:600c:43d4:b0:40e:59d2:354d with SMTP id f20-20020a05600c43d400b0040e59d2354dmr488013wmn.151.1704981662937;
        Thu, 11 Jan 2024 06:01:02 -0800 (PST)
Message-ID: <b1e76a5f-297b-4030-a69e-33cdf179c0ce@suse.com>
Date: Thu, 11 Jan 2024 15:01:01 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2] x86/intel: ensure Global Performance Counter Control
 is setup correctly
To: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, Wei Liu <wl@xen.org>,
 xen-devel@lists.xenproject.org
References: <20240111090821.67594-1-roger.pau@citrix.com>
 <3428928a-42d0-4e4b-9607-c184968c309d@suse.com> <ZZ_FjFa9mILtDZgv@macbook>
 <645e0c95-5a12-4202-8da6-3cc789a9e5c7@suse.com> <ZZ_di8pZB8bWtBuX@macbook>
Content-Language: en-US
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <ZZ_di8pZB8bWtBuX@macbook>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 11.01.2024 13:22, Roger Pau Monné wrote:
> Oh, indeed, can adjust on this same patch if that's OK (seeing as the
> issue was already there previous to my change).

Well, I'm getting the impression that it was deliberate there, i.e. set
setting of the feature flag may want to remain thus constrained.

Jan


From xen-devel-bounces@lists.xenproject.org Thu Jan 11 14:04:53 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 11 Jan 2024 14:04:53 +0000
Received: from list by lists.xenproject.org with outflank-mailman.666289.1036812 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNvfw-0004jF-3f; Thu, 11 Jan 2024 14:04:52 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 666289.1036812; Thu, 11 Jan 2024 14:04:52 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNvfw-0004j8-0u; Thu, 11 Jan 2024 14:04:52 +0000
Received: by outflank-mailman (input) for mailman id 666289;
 Thu, 11 Jan 2024 14:04:50 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=4+ne=IV=cloud.com=roger.pau@srs-se1.protection.inumbo.net>)
 id 1rNvfu-0004j2-Tw
 for xen-devel@lists.xenproject.org; Thu, 11 Jan 2024 14:04:50 +0000
Received: from mail-wm1-x332.google.com (mail-wm1-x332.google.com
 [2a00:1450:4864:20::332])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 62801d24-b08a-11ee-98f0-6d05b1d4d9a1;
 Thu, 11 Jan 2024 15:04:50 +0100 (CET)
Received: by mail-wm1-x332.google.com with SMTP id
 5b1f17b1804b1-40e613b6afbso5192835e9.3
 for <xen-devel@lists.xenproject.org>; Thu, 11 Jan 2024 06:04:50 -0800 (PST)
Received: from localhost ([213.195.127.70]) by smtp.gmail.com with ESMTPSA id
 g14-20020a05600c4ece00b0040d5f3ef2a2sm5898691wmq.16.2024.01.11.06.04.49
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 11 Jan 2024 06:04:49 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 62801d24-b08a-11ee-98f0-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1704981889; x=1705586689; darn=lists.xenproject.org;
        h=in-reply-to:content-transfer-encoding:content-disposition
         :mime-version:references:message-id:subject:cc:to:from:date:from:to
         :cc:subject:date:message-id:reply-to;
        bh=rsh8ufam+lEkXNzvVt6lxhdKuz68UHhAlMWHMZBNSjk=;
        b=orsHOw31ABNrda0VFCNhHCqd72/KjLvQe0iOM8TVU40yUN17Y/R8MmaKDzoGl+iJ8d
         iNICrgX9ZKvyKx4d2o66/BC4GAdFEVfH61KJEab+TXbMn008LRBXZc91yK0PMJj9BcEn
         DVaOWrhPwKws+ZM0YdC6db1zcg5rU4VhACDmQ=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704981889; x=1705586689;
        h=in-reply-to:content-transfer-encoding:content-disposition
         :mime-version:references:message-id:subject:cc:to:from:date
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=rsh8ufam+lEkXNzvVt6lxhdKuz68UHhAlMWHMZBNSjk=;
        b=t5yYAyvlATf4HuiMoxsu4AaJ60xQU7vYfl95koWwxmeVHk85U9Hzu6Qot2cEiXv1ia
         qjMKbUqhbjyH1ucehB6rm2ODu6ZjCUi21D4QpiCqh7sNxesdfZMb8WAK0l6OFc2j8fdM
         fb520FErKHgtq4G7du1GDXm8x8+zwTQCWCkKAkpSACoXoCFDLOO5FEGrQctXev+qEyfQ
         s4krY0/gw5ba+b0M3bTWMdd/WeOL39pH/8YfX5tWHBWnV69TXaSbbzT1tJhpQkKfK9zl
         G23SDwLz1Gdeg5yI2qh/0Lm3mzv2OLLShCBy4FI0kZpzIgz6iGXcUwcLVyN21W83DABv
         H1cA==
X-Gm-Message-State: AOJu0YyYOybsJj2a6cQfyqLLfhMWxqDTwhFePLWjZVMSONB/AhFjfDJn
	nMfRYxyWIJ6gbAgtWnPrHbBH7nqv5xIYqA==
X-Google-Smtp-Source: AGHT+IFmAhrwOYvbZhYS9aQ3IAjgfdr/Fg2FqsD2GJDPx5qw2p0D58sxWNvKf0kQXHRcYUmpny0ofA==
X-Received: by 2002:a05:600c:4b1f:b0:40e:43dc:3e35 with SMTP id i31-20020a05600c4b1f00b0040e43dc3e35mr469718wmp.57.1704981889649;
        Thu, 11 Jan 2024 06:04:49 -0800 (PST)
Date: Thu, 11 Jan 2024 15:04:48 +0100
From: Roger Pau =?utf-8?B?TW9ubsOp?= <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>
Subject: Re: [PATCH v5 1/5] x86/HVM: split restore state checking from state
 loading
Message-ID: <ZZ_1gKoqua6Pha5k@macbook>
References: <8110e31e-5411-467e-9c59-06751902853a@suse.com>
 <88437dea-8448-4420-a608-957f3d861bba@suse.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <88437dea-8448-4420-a608-957f3d861bba@suse.com>

On Wed, Jan 10, 2024 at 03:57:06PM +0100, Jan Beulich wrote:
> ..., at least as reasonably feasible without making a check hook
> mandatory (in particular strict vs relaxed/zero-extend length checking
> can't be done early this way).
> 
> Note that only one of the two uses of "real" hvm_load() is accompanied
> with a "checking" one. The other directly consumes hvm_save() output,
> which ought to be well-formed. This means that while input data related
> checks don't need repeating in the "load" function when already done by
> the "check" one (albeit assertions to this effect may be desirable),
> domain state related checks (e.g. has_xyz(d)) will be required in both
> places.
> 
> With the split arch_hvm_{check,load}(), also invoke the latter only
> after downing all the vCPU-s.
> 
> Suggested-by: Roger Pau Monné <roger.pau@citrix.com>
> Signed-off-by: Jan Beulich <jbeulich@suse.com>

Reviewed-by: Roger Pau Monné <roger.pau@citrix.com>

Thanks, Roger.


From xen-devel-bounces@lists.xenproject.org Thu Jan 11 14:09:56 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 11 Jan 2024 14:09:56 +0000
Received: from list by lists.xenproject.org with outflank-mailman.666295.1036822 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNvkm-0005yp-MX; Thu, 11 Jan 2024 14:09:52 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 666295.1036822; Thu, 11 Jan 2024 14:09:52 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNvkm-0005yV-Jg; Thu, 11 Jan 2024 14:09:52 +0000
Received: by outflank-mailman (input) for mailman id 666295;
 Thu, 11 Jan 2024 14:09:51 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=YFj+=IV=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rNvkl-0005yN-3S
 for xen-devel@lists.xenproject.org; Thu, 11 Jan 2024 14:09:51 +0000
Received: from mail-lj1-x236.google.com (mail-lj1-x236.google.com
 [2a00:1450:4864:20::236])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 15403bcc-b08b-11ee-98f0-6d05b1d4d9a1;
 Thu, 11 Jan 2024 15:09:50 +0100 (CET)
Received: by mail-lj1-x236.google.com with SMTP id
 38308e7fff4ca-2ccae380df2so58009501fa.1
 for <xen-devel@lists.xenproject.org>; Thu, 11 Jan 2024 06:09:50 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 a8-20020a0566380b0800b0046e107e49c9sm320365jab.155.2024.01.11.06.09.47
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 11 Jan 2024 06:09:48 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 15403bcc-b08b-11ee-98f0-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1704982189; x=1705586989; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=fXXtbFrxhzobfvaA1d2n6Gp2rGnt9S4VEv96mPAHMXA=;
        b=hAaBJ3vwrND/0dnBVdkHhhuOqycfBRhm2qi99gMuDzRiYvLxNq8sltcE8Tmsl9mjCM
         3NVKdXiPX899y8eiD3C7NbowoepjZiPehQlsiujMyp9CRLsiTHK9gMDmsQQuucV6NkUm
         8axhaNUgwahjx8Bd50o6ssDTGBT5CV3yHWyfaqpCEjwS7nedvZ8dTbhM5TqrQy/fREjZ
         wMtotwlcDwQRMf/GKRJ9g8AxOIGKZoh0VGtrGMEivlHRvoGQiKl5ZJ1MrC6YVyDZrOSg
         PBaYBUlzgZBF+VI+NriOPUtvWNGM3HNUCuOyRzA9fN0TC535OL7cLft7d/b47jDO4BX0
         dMiA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704982189; x=1705586989;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=fXXtbFrxhzobfvaA1d2n6Gp2rGnt9S4VEv96mPAHMXA=;
        b=X6/77J9s078vC9bNi1KKkuk59W8xxfvN3x5LVWq6CKKqJcHiORwhNrI+LinJGVYKim
         f7xy04P22mbv9v3VL+3bfHthRBIUxEwSdq3XpZubDx6Nh0RnjpOcHUTf1T75UJQig4UQ
         8jQdBzahDJOOvsAWbZYCTcuvayGZupA8drYsVK36kHFS34LpOjKiiSu2UiLaE1y2pQqy
         Q5Uv7yj+H7r1uY71eLYQY300oKqdCnWFP+fvLPy61S2wb+SSpMRfUF3GibyKzJpbe0ZT
         yJXRgeG4yLDaIRydUbM8p0MwkNYkFPzKPAYbuY09U5mOy5z9edrKYiEyiJ3xW6wzu0I+
         tlAA==
X-Gm-Message-State: AOJu0YwM2Di+Kh1wg8rZJ6EqQ3Uzl2EGdNnnQuXfQrL/2S2Y3+xPUmzA
	BJF07CmckdqJiRsw3wBuoxHjyyZxr637
X-Google-Smtp-Source: AGHT+IESHLLLTb4Y8vxqT4P9CeLTIR1BRJb2G8EFo7QbDa0suog7vN9u0YUrBaudeQ5fnz8RIdM1MQ==
X-Received: by 2002:a2e:3516:0:b0:2cd:1f7:1b56 with SMTP id z22-20020a2e3516000000b002cd01f71b56mr434092ljz.102.1704982189464;
        Thu, 11 Jan 2024 06:09:49 -0800 (PST)
Message-ID: <ba63d435-e26f-4c76-aedc-c027e8b03a6d@suse.com>
Date: Thu, 11 Jan 2024 15:09:45 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 11/22] x86: add a boot option to enable and disable the
 direct map
Content-Language: en-US
To: Julien Grall <julien@xen.org>, Elias El Yandouzi <eliasely@amazon.com>
Cc: Hongyan Xia <hongyxia@amazon.com>,
 Andrew Cooper <andrew.cooper3@citrix.com>,
 George Dunlap <george.dunlap@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>,
 Bertrand Marquis <bertrand.marquis@arm.com>,
 Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Julien Grall <jgrall@amazon.com>, xen-devel@lists.xenproject.org
References: <20221216114853.8227-1-julien@xen.org>
 <20221216114853.8227-12-julien@xen.org>
 <fc70f967-34bb-9569-f514-7a3208e746c6@suse.com>
 <bc989828-69b9-4919-9ff3-fdd53fb2def1@amazon.com>
 <c736e4d9-5262-4adf-9e74-9b1be5ab13db@suse.com>
 <4ab710c3-c628-4bbe-9533-88af75a9b9ec@xen.org>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <4ab710c3-c628-4bbe-9533-88af75a9b9ec@xen.org>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 11.01.2024 13:25, Julien Grall wrote:
> Hi Jan,
> 
> On 11/01/2024 11:53, Jan Beulich wrote:
>> On 11.01.2024 11:47, Elias El Yandouzi wrote:
>>> On 22/12/2022 13:24, Jan Beulich wrote:
>>>> That said, I think this change comes too early in the series, or there is
>>>> something missing.
>>>
>>> At first, I had the same feeling but looking at the rest of the series,
>>> I can see that the option is needed in follow-up patches.
>>>
>>>> As said in reply to patch 10, while there the mapcache
>>>> is being initialized for the idle domain, I don't think it can be used
>>>> just yet. Read through mapcache_current_vcpu() to understand why I think
>>>> that way, paying particular attention to the ASSERT() near the end.
>>>
>>> Would be able to elaborate a bit more why you think that? I haven't been
>>> able to get your point.
>>
>> Why exactly I referred to the ASSERT() there I can't reconstruct. The
>> function as a whole looks problematic though when suddenly the idle
>> domain also gains a mapcache. I'm sorry, too much context was lost
>> from over a year ago; all of this will need looking at from scratch
>> again whenever a new version was posted.
>>
>>>> In preparation of this patch here I think the mfn_to_virt() uses have to all
>>>> disappear from map_domain_page(). Perhaps yet more strongly all
>>>> ..._to_virt() (except fix_to_virt() and friends) and __va() have to
>>>> disappear up front from x86 and any code path which can be taken on x86
>>>> (which may simply mean purging all respective x86 #define-s, without
>>>> breaking the build in any way).
>>>
>>> I agree with you on that one. I think it is what we're aiming for in the
>>> long term. However, as mentioned by Julien in the cover letter, the
>>> series's name is a misnomer and I am afraid we won't be able to remove
>>> all of them with this series. These helpers would still be used for
>>> xenheap pages or when the direct map is enabled.
>>
>> Leaving a hazard of certain uses not having been converted, or even
>> overlooked in patches going in at around the same time as this series?
>> I view this as pretty "adventurous".
> 
> Until we get rid of the directmap completely (which is not the goal of 
> this series), we will need to keep mfn_to_virt().
> 
> In fact the one you ask to remove in map_domain_page() will need to be 
> replaced with function doing the same thing. The same for the code that 
> will initially prepare the directmap. This to avoid impacting 
> performance when the user still wants to use the directmap.
> 
> So are you just asking to remove most of the use and rename *_to_virt() 
> to something that is more directmap specific (e.g. mfn_to_directmap_virt())?

Well, in a way. If done this way, mfn_to_virt() (and __va()) should have no
users by the end of the series, and it would be obvious that nothing was
missed (and by then purging the old ones we could also ensure no new uses
would appear).

Jan


From xen-devel-bounces@lists.xenproject.org Thu Jan 11 14:16:07 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 11 Jan 2024 14:16:07 +0000
Received: from list by lists.xenproject.org with outflank-mailman.666302.1036832 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNvqj-000800-FV; Thu, 11 Jan 2024 14:16:01 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 666302.1036832; Thu, 11 Jan 2024 14:16:01 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNvqj-0007zt-Cr; Thu, 11 Jan 2024 14:16:01 +0000
Received: by outflank-mailman (input) for mailman id 666302;
 Thu, 11 Jan 2024 14:16:00 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=4+ne=IV=cloud.com=roger.pau@srs-se1.protection.inumbo.net>)
 id 1rNvqi-0007zl-5Y
 for xen-devel@lists.xenproject.org; Thu, 11 Jan 2024 14:16:00 +0000
Received: from mail-wm1-x32a.google.com (mail-wm1-x32a.google.com
 [2a00:1450:4864:20::32a])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id f14bcedb-b08b-11ee-98f0-6d05b1d4d9a1;
 Thu, 11 Jan 2024 15:15:59 +0100 (CET)
Received: by mail-wm1-x32a.google.com with SMTP id
 5b1f17b1804b1-40e624a8cbbso2607905e9.2
 for <xen-devel@lists.xenproject.org>; Thu, 11 Jan 2024 06:15:59 -0800 (PST)
Received: from localhost ([213.195.127.70]) by smtp.gmail.com with ESMTPSA id
 iv17-20020a05600c549100b0040e5034d8e0sm6003466wmb.43.2024.01.11.06.15.58
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 11 Jan 2024 06:15:58 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: f14bcedb-b08b-11ee-98f0-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1704982558; x=1705587358; darn=lists.xenproject.org;
        h=in-reply-to:content-transfer-encoding:content-disposition
         :mime-version:references:message-id:subject:cc:to:from:date:from:to
         :cc:subject:date:message-id:reply-to;
        bh=jGR/JQnhf1qU/ywHOv+2ixBYeb5XleYTse6KIYOcI9U=;
        b=F0MwCW1gFGOn1GpPZw+FnFRuVN8rt3G1YU1DDSfn11kwE/Kps2K6acBOaCfhmBRGeZ
         GL2dq1Epb0e1hh66KaFr/mumNVIkhpky6jnWsJmmP4CfK+8hm+K7+a4duXcpv/4xjRzN
         KdwubZeQo3JyBcJSRWbXRGJIaX49HFYuIB9TQ=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704982558; x=1705587358;
        h=in-reply-to:content-transfer-encoding:content-disposition
         :mime-version:references:message-id:subject:cc:to:from:date
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=jGR/JQnhf1qU/ywHOv+2ixBYeb5XleYTse6KIYOcI9U=;
        b=oq1O/XrBdofvf+8XiRJv5g07zLX1+9sGZcIqaXv+k6yiTVhnPhvNGzWWgtQ+CVliWg
         Lrv8ZNCq3erUpRSvbJub3hf3ni5r3W7Ii8ilDDM1bdBIlA+4+ovFi8KPUQFFDH/FK3Po
         CiorrLFbgSY3hXEXQuXm8r+6kwgDFKyxroYaxkNjRMddM3B+CQSWlpb5kP9W7jYGisMa
         KV/762wAFhpM/t5HQsnow6ixQuPLKNAQxzWXdncCFEJn6wyeP/9NP0tar4tAgrAm4arQ
         yxqGmGU21P5BMLPjTkDQ5/pgRgZhW+w114sJwzQ7okMgfjGVyns5L5KFsBxxE5+CGqoG
         kUHA==
X-Gm-Message-State: AOJu0Yy/vn8Yv4rlXGBzWo8ETg76KPpH4QvmNidng5OD+y4MWPmbf8hf
	X819IEH2zCHFm9QVuigDsRO+8UaWuo6tdr9ggfV3PeR1lb0=
X-Google-Smtp-Source: AGHT+IGIw6mcGyiFePA8NkUBvE6J0kAC+LykI3Eg1JGOvX1NkVa/jeum5/O67eGDOa8C5aQbMc+0tg==
X-Received: by 2002:a05:600c:5026:b0:40e:6240:3293 with SMTP id n38-20020a05600c502600b0040e62403293mr235387wmr.40.1704982558628;
        Thu, 11 Jan 2024 06:15:58 -0800 (PST)
Date: Thu, 11 Jan 2024 15:15:57 +0100
From: Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
To: Jan Beulich <jbeulich@suse.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, Wei Liu <wl@xen.org>,
	xen-devel@lists.xenproject.org
Subject: Re: [PATCH v2] x86/intel: ensure Global Performance Counter Control
 is setup correctly
Message-ID: <ZZ_4HSvdg0R9Dv1Y@macbook>
References: <20240111090821.67594-1-roger.pau@citrix.com>
 <3428928a-42d0-4e4b-9607-c184968c309d@suse.com>
 <ZZ_FjFa9mILtDZgv@macbook>
 <645e0c95-5a12-4202-8da6-3cc789a9e5c7@suse.com>
 <ZZ_di8pZB8bWtBuX@macbook>
 <b1e76a5f-297b-4030-a69e-33cdf179c0ce@suse.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <b1e76a5f-297b-4030-a69e-33cdf179c0ce@suse.com>

On Thu, Jan 11, 2024 at 03:01:01PM +0100, Jan Beulich wrote:
> On 11.01.2024 13:22, Roger Pau Monné wrote:
> > Oh, indeed, can adjust on this same patch if that's OK (seeing as the
> > issue was already there previous to my change).
> 
> Well, I'm getting the impression that it was deliberate there, i.e. set
> setting of the feature flag may want to remain thus constrained.

Hm, I find it weird, but the original commit message doesn't help at
all.  Xen itself only uses PMC0, and I don't find any other
justification in the current code to require at least 2 counters in
order to expose arch performance monitoring to be present.

Looking at the SDM vol3, the figures there only contain PMC0 and PMC1,
so someone only reading that manual might assume there must always be
2 global PMCs?

(vol4 clarifies the that the number of global PMCs is variable).

Thanks, Roger.


From xen-devel-bounces@lists.xenproject.org Thu Jan 11 14:23:23 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 11 Jan 2024 14:23:23 +0000
Received: from list by lists.xenproject.org with outflank-mailman.666309.1036842 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNvxh-0001oh-7B; Thu, 11 Jan 2024 14:23:13 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 666309.1036842; Thu, 11 Jan 2024 14:23:13 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNvxh-0001oa-4c; Thu, 11 Jan 2024 14:23:13 +0000
Received: by outflank-mailman (input) for mailman id 666309;
 Thu, 11 Jan 2024 14:23:11 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=c5Cn=IV=amazon.co.uk=prvs=73372ff43=eliasely@srs-se1.protection.inumbo.net>)
 id 1rNvxf-0001oP-Pd
 for xen-devel@lists.xenproject.org; Thu, 11 Jan 2024 14:23:11 +0000
Received: from smtp-fw-9102.amazon.com (smtp-fw-9102.amazon.com
 [207.171.184.29]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id f0ce3b57-b08c-11ee-9b0f-b553b5be7939;
 Thu, 11 Jan 2024 15:23:09 +0100 (CET)
Received: from pdx4-co-svc-p1-lb2-vlan3.amazon.com (HELO
 email-inbound-relay-iad-1d-m6i4x-25ac6bd5.us-east-1.amazon.com)
 ([10.25.36.214]) by smtp-border-fw-9102.sea19.amazon.com with
 ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 11 Jan 2024 14:22:58 +0000
Received: from smtpout.prod.us-east-1.prod.farcaster.email.amazon.dev
 (iad7-ws-svc-p70-lb3-vlan2.iad.amazon.com [10.32.235.34])
 by email-inbound-relay-iad-1d-m6i4x-25ac6bd5.us-east-1.amazon.com (Postfix)
 with ESMTPS id B12BD49E36; Thu, 11 Jan 2024 14:22:56 +0000 (UTC)
Received: from EX19MTAEUB001.ant.amazon.com [10.0.17.79:19433]
 by smtpin.naws.eu-west-1.prod.farcaster.email.amazon.dev [10.0.8.110:2525]
 with esmtp (Farcaster)
 id 632d1ee3-a123-4d46-9a96-0de918162ce9; Thu, 11 Jan 2024 14:22:55 +0000 (UTC)
Received: from EX19D018EUA002.ant.amazon.com (10.252.50.146) by
 EX19MTAEUB001.ant.amazon.com (10.252.51.28) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1118.40; Thu, 11 Jan 2024 14:22:55 +0000
Received: from [10.95.99.82] (10.95.99.82) by EX19D018EUA002.ant.amazon.com
 (10.252.50.146) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1118.40; Thu, 11 Jan
 2024 14:22:52 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: f0ce3b57-b08c-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
  d=amazon.com; i=@amazon.com; q=dns/txt; s=amazon201209;
  t=1704982989; x=1736518989;
  h=message-id:date:mime-version:subject:to:cc:references:
   from:in-reply-to:content-transfer-encoding;
  bh=UxX0msj9qVYm6nkqZ3EN4+ZCgnzvJVmxqtKw5NxCdY0=;
  b=u/w+V5AcN1toP0g7ULMdh6nHPCwE+Ay9ec/h/hxyoB2bWOPNn+RPojls
   6XD3JqkbPW/17PP6dEZudPRwXXyPm5zMnBjqhAx0A+D7tP2irzmZnrrIR
   mb9rmbXpvmfpYpNXVzf8vdYW7f1conzTXGTOcQtGemb07VHZBxErPgo77
   o=;
X-IronPort-AV: E=Sophos;i="6.04,186,1695686400"; 
   d="scan'208";a="389156229"
X-Farcaster-Flow-ID: 632d1ee3-a123-4d46-9a96-0de918162ce9
Message-ID: <686fa772-486b-4878-a605-85b021e06058@amazon.com>
Date: Thu, 11 Jan 2024 14:22:48 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 14/22] x86/domain_page: remove the fast paths when mfn is
 not in the directmap
Content-Language: en-US
To: Jan Beulich <jbeulich@suse.com>, Julien Grall <julien@xen.org>
CC: Hongyan Xia <hongyxia@amazon.com>, Andrew Cooper
	<andrew.cooper3@citrix.com>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
	<roger.pau@citrix.com>, Wei Liu <wl@xen.org>, Julien Grall
	<jgrall@amazon.com>, <xen-devel@lists.xenproject.org>
References: <20221216114853.8227-1-julien@xen.org>
 <20221216114853.8227-15-julien@xen.org>
 <52429554-1559-6bae-f3d9-d32152e763b4@suse.com>
From: Elias El Yandouzi <eliasely@amazon.com>
In-Reply-To: <52429554-1559-6bae-f3d9-d32152e763b4@suse.com>
Content-Type: text/plain; charset="UTF-8"; format=flowed
Content-Transfer-Encoding: 7bit
X-Originating-IP: [10.95.99.82]
X-ClientProxiedBy: EX19D046UWB004.ant.amazon.com (10.13.139.164) To
 EX19D018EUA002.ant.amazon.com (10.252.50.146)
Precedence: Bulk

Hi Jan,

On 11/01/2023 14:11, Jan Beulich wrote:
> As to using pmap - assuming you've done an audit and the number of
> simultaneous mappings that can be in use can be proven to not exceed
> the number of slots available, can you please say so in the description?

I don't know if any audit has been made but a similar code has been 
internally used for a few years now without any problem.
Quickly looking at the slots usage, I found that at most only 4 slots 
out of 8 would be used during boot time.

> I have to admit though that I'm wary - this isn't a per-CPU number of
> slots aiui, but a global one. But then you also have a BUG_ON() there
> restricting the use to early boot. The reasoning for this is also
> missing (and might address my concern).


Indeed, this isn't presented as a per-CPU number of slots, but the slots 
can be only used before we reach the state SYS_STATE_smp_boot. So 
effectively, only the BSP would use the PMAP slots.

The PMAP slots are meant to map at most the number of level page-tables.
See the comment on top of NUM_FIX_PMAP definition.

-- 
Elias


From xen-devel-bounces@lists.xenproject.org Thu Jan 11 14:23:23 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 11 Jan 2024 14:23:23 +0000
Received: from list by lists.xenproject.org with outflank-mailman.666310.1036848 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNvxh-0001ry-HR; Thu, 11 Jan 2024 14:23:13 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 666310.1036848; Thu, 11 Jan 2024 14:23:13 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNvxh-0001rJ-By; Thu, 11 Jan 2024 14:23:13 +0000
Received: by outflank-mailman (input) for mailman id 666310;
 Thu, 11 Jan 2024 14:23:12 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=YFj+=IV=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rNvxg-0001oP-RF
 for xen-devel@lists.xenproject.org; Thu, 11 Jan 2024 14:23:12 +0000
Received: from mail-lj1-x22a.google.com (mail-lj1-x22a.google.com
 [2a00:1450:4864:20::22a])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id f2d0acac-b08c-11ee-9b0f-b553b5be7939;
 Thu, 11 Jan 2024 15:23:11 +0100 (CET)
Received: by mail-lj1-x22a.google.com with SMTP id
 38308e7fff4ca-2ccae380df2so58182081fa.1
 for <xen-devel@lists.xenproject.org>; Thu, 11 Jan 2024 06:23:11 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 bs7-20020a056e02240700b003608f3db11esm316791ilb.75.2024.01.11.06.23.09
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 11 Jan 2024 06:23:10 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: f2d0acac-b08c-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1704982990; x=1705587790; darn=lists.xenproject.org;
        h=content-transfer-encoding:to:autocrypt:subject:from:cc
         :content-language:user-agent:mime-version:date:message-id:from:to:cc
         :subject:date:message-id:reply-to;
        bh=y7tUZ7Sksvkb2jjagshoBjH/zpcIAWheLeIEL0LxqkM=;
        b=EMDs3OrGlPuOo+IESSwTmAN1epuVDlFhBbguR0vEJioE9AHRzVlRN+HGSBLNdTpwze
         ABaWNY73/x02JXPSWxTK32tT4pSH0k3hr95NUN5c0Ih2i3Pgu6THwnj2l9WVLirWABH2
         Vav1wwzngCJzNzDjZdk9XehxBTSuzV0qCe6eb2J89PwndW2uHy3KwD6QiQMY9nvXaqpe
         RgW3p3H3J5a9Msf89vKTqrIaR5ha80Y7S4eTN1nENeo7rNEIQJmDx9KnZGTdxf5T1oTw
         VTnxudA8bPETF0+ubmq3k3lKKpH8YhFlLKrd8Akexm36K7AiHA0YvbGmUPWI73nBrUuD
         OEzA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704982990; x=1705587790;
        h=content-transfer-encoding:to:autocrypt:subject:from:cc
         :content-language:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=y7tUZ7Sksvkb2jjagshoBjH/zpcIAWheLeIEL0LxqkM=;
        b=PeKAZvHp7zl8RUG2y/ZeLAuu3VPrcJZVojfRNaV9ebemgJMuYVaOJBtI2QArGmtE4o
         kLd4yVGy2yTcfG96NKxc+w7r3OTCzQiwjihc5iiK7kHBlnY69ove72lyT52fACVJUEay
         qA1XwFalkZVHrahoeLU8j95AeCP9znY5cIOUMK1xiKJ3RcpSzGlK1wwPYuS5eQplkRs5
         VQ0PyMOQADwAMCDAMjjJJvrkV3MbpUketJmT5GRpiYRAkT4REnmQsIv6MQl8AtFuDMIA
         bN4SsbWBs4+rh/kv7sSJW/C6Y07hilkx2F6pOlw5ZMJQXoFZ/nGKpMOd90Dyo0tPE4ZQ
         Zt4Q==
X-Gm-Message-State: AOJu0YzdVJkGzlvRt/DB/IiS6dxGPjUaS4as7aRIs04wTuWH5cXUHR6B
	IHG5A0jr0+K0zS/ssjEEHfgksO+LuMKVyQL1dMyPcNB9GA==
X-Google-Smtp-Source: AGHT+IGv0zGI8nwohnA7RMVGp4vya4QDaW8xuxC3NNfmmnuHi/QDFD4qAEoiexIxzfTA74L0gf7AFA==
X-Received: by 2002:a2e:6e0c:0:b0:2cd:8c46:d06a with SMTP id j12-20020a2e6e0c000000b002cd8c46d06amr401570ljc.86.1704982990692;
        Thu, 11 Jan 2024 06:23:10 -0800 (PST)
Message-ID: <774ece90-296a-4975-a31f-038de45e98bc@suse.com>
Date: Thu, 11 Jan 2024 15:23:07 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Content-Language: en-US
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, Wei Liu <wl@xen.org>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
From: Jan Beulich <jbeulich@suse.com>
Subject: [PATCH v4 0/3] x86/CPUID: leaf pruning
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

These three related patches were previously part of the AMX series,
which has been stuck for about 3 years. For AVX10 some of this is
going to be needed too, though, hence I'm now refreshing these
separately. Neither of the three is strictly a functional prereq,
but two of the three introduce new functions which then are further
altered while adding AVX10 (and AMX) logic. Hence until it is clear
that one or more of these are strictly not needed / wanted (in this
or another form), having these ahead of the actual work is
preferable over accidentally losing adjustments done for AVX10 / AMX
(and down the road perhaps others).

1: adjust extended leaves out of range clearing
2: shrink max_{,sub}leaf fields according to actual leaf contents
3: move bounding of max_{,sub}leaf fields to library code

Jan


From xen-devel-bounces@lists.xenproject.org Thu Jan 11 14:24:18 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 11 Jan 2024 14:24:18 +0000
Received: from list by lists.xenproject.org with outflank-mailman.666316.1036862 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNvyj-00035W-Qr; Thu, 11 Jan 2024 14:24:17 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 666316.1036862; Thu, 11 Jan 2024 14:24:17 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNvyj-00035O-Nh; Thu, 11 Jan 2024 14:24:17 +0000
Received: by outflank-mailman (input) for mailman id 666316;
 Thu, 11 Jan 2024 14:24:16 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=YFj+=IV=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rNvyi-0002j1-Nx
 for xen-devel@lists.xenproject.org; Thu, 11 Jan 2024 14:24:16 +0000
Received: from mail-lj1-x235.google.com (mail-lj1-x235.google.com
 [2a00:1450:4864:20::235])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 19819739-b08d-11ee-98f0-6d05b1d4d9a1;
 Thu, 11 Jan 2024 15:24:16 +0100 (CET)
Received: by mail-lj1-x235.google.com with SMTP id
 38308e7fff4ca-2cd84600920so11503081fa.1
 for <xen-devel@lists.xenproject.org>; Thu, 11 Jan 2024 06:24:16 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 y7-20020a92d0c7000000b0035fffb69deasm313951ila.81.2024.01.11.06.24.14
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 11 Jan 2024 06:24:15 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 19819739-b08d-11ee-98f0-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1704983055; x=1705587855; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:content-language
         :references:cc:to:from:subject:user-agent:mime-version:date
         :message-id:from:to:cc:subject:date:message-id:reply-to;
        bh=0p4AvId7LsdumQhFUTANpZvFp9Wi6kOxkHUOGtjN1Vo=;
        b=L9/EZCNnxl8kODvcGWF/ZDYNoYljaWQ+Osvj22BTiod1SrXsFU7oNg5CXu2glaXhJu
         LOnQOJM49i51rcB+cDLEHbkBQxhp1GxUQoK7yxBI9NTCqBZkiLauvFD88tnSfaGAi8Y9
         s7z3/oNJQ9VrA5o9BRbLv8IR+Xb3RCV+8MGr8xCUMezUtqsuMK/roacyhGaA474LQAd6
         Lofofxnf3CrOMWpXB0eLR7maPCpRAOZKZ+mCyADQrR7z/jhbgx1sEa6Zv2QHZ20YNEco
         rd9XGKMs/vhVMcVNY5JWo3TDt94CWbSd7nmt2kiD9JP1yxbrjoURB6z8kuBAABa8Dkti
         Udqw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704983055; x=1705587855;
        h=content-transfer-encoding:in-reply-to:autocrypt:content-language
         :references:cc:to:from:subject:user-agent:mime-version:date
         :message-id:x-gm-message-state:from:to:cc:subject:date:message-id
         :reply-to;
        bh=0p4AvId7LsdumQhFUTANpZvFp9Wi6kOxkHUOGtjN1Vo=;
        b=UApSiCW1k3EGFVXAV3mPQ5/HAG1jjc53XWjErRouPxg3XuJjmpMVRjujHXDSnWIsmk
         CSC0x9Yk7XemnZPrg+7wlSKFGCzpQ1fOfhQIkKyldSwOeiN6NNuaqgLDPiswqO17eWIe
         8/PbZmXf0UqxK0Kgb/jgftUoaPuc/aFcHxRllL6crbwbN7quTKwLwEaGvbybdQ42LTyL
         jQs0NynuEPci/fKvj+l784gh3HqwQTT1HlEFVUwW7/R/2FOgmUKgaRKGFLF6JYPhYvqj
         iItK5a3IdAtvyEhbG/GfGCTitJIS7JMRSE00pK0KKSrrgf2bURrRweqddMgyNnqZ4ndR
         I/tA==
X-Gm-Message-State: AOJu0YxdlNxM3VFurzAscuX53Y3SVpmGYT2vWPO7xy8NPRIfUr07mWw1
	CdbwP/qdx8V26PvCBKAp1NTvXJXElZiy/JkmTewp8DmBFg==
X-Google-Smtp-Source: AGHT+IFPNL9JlvkuqXrRZgkT0lFsShxJTdo55QhNUBPVOJm95lWXEhYv/cLy2GvCg8bYiP4CZ0eCHg==
X-Received: by 2002:a2e:b947:0:b0:2cd:143a:ae5c with SMTP id 7-20020a2eb947000000b002cd143aae5cmr440364ljs.51.1704983055628;
        Thu, 11 Jan 2024 06:24:15 -0800 (PST)
Message-ID: <18b8ea5a-21bd-40fe-9c32-fab41853131a@suse.com>
Date: Thu, 11 Jan 2024 15:24:12 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: [PATCH v4 1/3] x86/CPUID: adjust extended leaves out of range
 clearing
From: Jan Beulich <jbeulich@suse.com>
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, Wei Liu <wl@xen.org>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
References: <774ece90-296a-4975-a31f-038de45e98bc@suse.com>
Content-Language: en-US
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <774ece90-296a-4975-a31f-038de45e98bc@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

A maximum extended leaf input value with the high half different from
0x8000 should not be considered valid - all leaves should be cleared in
this case.

Signed-off-by: Jan Beulich <jbeulich@suse.com>
Reviewed-by: Roger Pau Monné <roger.pau@citrix.com>
---
TBD: Andrew suggested to drop this patch, but that sub-thread still has
     a loose end. Hence, until I'm convinced otherwise, I've retained
     this patch here. I don't think it conflicts with any of the
     subsequent ones.
---
v2: Integrate into series.

--- a/tools/tests/cpu-policy/test-cpu-policy.c
+++ b/tools/tests/cpu-policy/test-cpu-policy.c
@@ -528,11 +528,22 @@ static void test_cpuid_out_of_range_clea
             },
         },
         {
+            .name = "no extd",
+            .nr_markers = 0,
+            .p = {
+                /* Clears all markers. */
+                .extd.max_leaf = 0,
+
+                .extd.vendor_ebx = 0xc2,
+                .extd.raw_fms = 0xc2,
+            },
+        },
+        {
             .name = "extd",
             .nr_markers = 1,
             .p = {
                 /* Retains marker in leaf 0.  Clears others. */
-                .extd.max_leaf = 0,
+                .extd.max_leaf = 0x80000000,
                 .extd.vendor_ebx = 0xc2,
 
                 .extd.raw_fms = 0xc2,
--- a/xen/lib/x86/cpuid.c
+++ b/xen/lib/x86/cpuid.c
@@ -285,7 +285,9 @@ void x86_cpu_policy_clear_out_of_range_l
                     ARRAY_SIZE(p->xstate.raw) - 1);
     }
 
-    zero_leaves(p->extd.raw, (p->extd.max_leaf & 0xffff) + 1,
+    zero_leaves(p->extd.raw,
+                ((p->extd.max_leaf >> 16) == 0x8000
+                 ? (p->extd.max_leaf & 0xffff) + 1 : 0),
                 ARRAY_SIZE(p->extd.raw) - 1);
 }
 



From xen-devel-bounces@lists.xenproject.org Thu Jan 11 14:24:46 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 11 Jan 2024 14:24:46 +0000
Received: from list by lists.xenproject.org with outflank-mailman.666320.1036873 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNvzC-0003ZD-3c; Thu, 11 Jan 2024 14:24:46 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 666320.1036873; Thu, 11 Jan 2024 14:24:46 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNvzB-0003Z6-W8; Thu, 11 Jan 2024 14:24:45 +0000
Received: by outflank-mailman (input) for mailman id 666320;
 Thu, 11 Jan 2024 14:24:44 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=YFj+=IV=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rNvzA-0002j1-J1
 for xen-devel@lists.xenproject.org; Thu, 11 Jan 2024 14:24:44 +0000
Received: from mail-lj1-x236.google.com (mail-lj1-x236.google.com
 [2a00:1450:4864:20::236])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 2a050d0f-b08d-11ee-98f0-6d05b1d4d9a1;
 Thu, 11 Jan 2024 15:24:43 +0100 (CET)
Received: by mail-lj1-x236.google.com with SMTP id
 38308e7fff4ca-2cd65f803b7so37244841fa.1
 for <xen-devel@lists.xenproject.org>; Thu, 11 Jan 2024 06:24:43 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 y7-20020a92d0c7000000b0035fffb69deasm313951ila.81.2024.01.11.06.24.42
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 11 Jan 2024 06:24:42 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 2a050d0f-b08d-11ee-98f0-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1704983083; x=1705587883; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:references:cc:to
         :from:content-language:subject:user-agent:mime-version:date
         :message-id:from:to:cc:subject:date:message-id:reply-to;
        bh=l0Cv5+fjR0qcX/c8Gmgh6k588kDC5I5fxICP+UlWs7Y=;
        b=epcatYHemsdCD9Bj5CsDnTAyNwxOPIJR0XYP2GM9n+9/bqlJlNmwTYKCu3+aZ7H/qU
         k1l45NCIjlofL8XVcwRi8mJsauFm+wdRXcPyCeFhGR98azSxhS4u7hp2vC+StD+fTlPP
         faeC0qLnMMuZbBTei+E8D2ix2cO2TIufVV6eQoAbiI+QzaiHTEKXFNvz3E2NvV7KB2gl
         v7CnL/Cj+1Avqzjd+MZxTYftlZwjVbKRLMM6GtvXwKzQOmHsRBYQyzJ+vRJgXmhhJkvr
         gO0o3q99TbOvKdHavDD1sk/GiA81QqKFXSUM9vtVIpFWKlEBDBHmFN1uQem5AeyM5kAb
         1Cqg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704983083; x=1705587883;
        h=content-transfer-encoding:in-reply-to:autocrypt:references:cc:to
         :from:content-language:subject:user-agent:mime-version:date
         :message-id:x-gm-message-state:from:to:cc:subject:date:message-id
         :reply-to;
        bh=l0Cv5+fjR0qcX/c8Gmgh6k588kDC5I5fxICP+UlWs7Y=;
        b=lnHy3qCzlvrTTcQhHX5d9QGmPjgpCU9k2L2aCqt7NeHT2QeBOJsuXUQjlwJBvFV9D6
         CVp5rxJXYa9ZA5B5YYV1MYTEJCcc6vJbeZ+bwcuasZGMjkeEudNynNdwHICgDVNC0xLA
         yo8kulv8I4WeoDN38UbkdPCW1YuS0KU2KeIN5CHQwYLaqZmvgdxlfIHOREFPFnrdYUIu
         teO4ONpvKuXnqMyf8dXhLulWLlMeed6MRSCWSk10tXcHeOBajHlOuyCzbg6FhKOwnGob
         21AmApddLJ0bM4eQoC1Pu9KlIQFGFpkyrWDke3KSHDAmc+qr6ckBSm3uRLBKE7etEla0
         FIZQ==
X-Gm-Message-State: AOJu0Yz35qxlIHpES5av2i0X5vjMcQXitI7RUHme0cdgHfY44VrqEF9R
	vSV80yTVxWRWeHkwoGFKKDrWMw5RJSbSk7gztOllY19WoQ==
X-Google-Smtp-Source: AGHT+IG5sZVmGe/lBcq/mtna4QlZvklmrmEHUkbyL9WYNEZyR3Llb5XKaNweos/nFq5lZoxukde9rA==
X-Received: by 2002:a2e:6a12:0:b0:2cc:c377:2baa with SMTP id f18-20020a2e6a12000000b002ccc3772baamr475158ljc.38.1704983083310;
        Thu, 11 Jan 2024 06:24:43 -0800 (PST)
Message-ID: <73296b85-e531-4622-97f9-655c35884df7@suse.com>
Date: Thu, 11 Jan 2024 15:24:41 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: [PATCH v4 2/3] x86/CPUID: shrink max_{,sub}leaf fields according to
 actual leaf contents
Content-Language: en-US
From: Jan Beulich <jbeulich@suse.com>
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, Wei Liu <wl@xen.org>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
References: <774ece90-296a-4975-a31f-038de45e98bc@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <774ece90-296a-4975-a31f-038de45e98bc@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

Zapping leaf data for out of range leaves is just one half of it: To
avoid guests (bogusly or worse) inferring information from mere leaf
presence, also shrink maximum indicators such that the respective
trailing entry is not all blank (unless of course it's the initial
subleaf of a leaf that's not the final one).

This is also in preparation of bumping the maximum basic leaf we
support, to ensure guests not getting exposed related features won't
observe a change in behavior.

Signed-off-by: Jan Beulich <jbeulich@suse.com>
---
TBD: The use in xc_cpuid_apply_policy() supposedly needs to further
     respect user (or migration source) max (sub)leaf values (i.e. the
     function needs calling unconditionally and then higher inputs need
     putting back); question is where those original values would be
     recorded / come from. (Supposedly there was a patch from Roger's
     under similar or even the same title, which should have eliminated
     the need for the patch here, but upon searching I can't find such a
     patch.)
---
v4: Re-instate with default policy shrinking dropped, and with
    81da2b544cbb folded in. Re-base.
v3: Record the actual non-empty subleaf in p->basic.raw[0x7], rather
    than subleaf 0. Re-base over Viridian leaf 40000005 addition.
v2: New.

--- a/tools/libs/guest/xg_cpuid_x86.c
+++ b/tools/libs/guest/xg_cpuid_x86.c
@@ -783,6 +783,13 @@ int xc_cpuid_apply_policy(xc_interface *
         }
     }
 
+    /*
+     * Do not try to shrink the policy if restoring, as that could cause
+     * guest visible changes in the maximum leaf fields.
+     */
+    if ( !restore )
+        x86_cpu_policy_shrink_max_leaves(&p->policy);
+
     nr_leaves = ARRAY_SIZE(p->leaves);
     rc = x86_cpuid_copy_to_buffer(&p->policy, p->leaves, &nr_leaves);
     if ( rc )
--- a/tools/tests/cpu-policy/test-cpu-policy.c
+++ b/tools/tests/cpu-policy/test-cpu-policy.c
@@ -8,10 +8,13 @@
 #include <err.h>
 
 #include <xen-tools/common-macros.h>
+#include <xen/asm/x86-defns.h>
 #include <xen/asm/x86-vendors.h>
 #include <xen/lib/x86/cpu-policy.h>
 #include <xen/domctl.h>
 
+#define XSTATE_FP_SSE  (X86_XCR0_FP | X86_XCR0_SSE)
+
 static unsigned int nr_failures;
 #define fail(fmt, ...)                          \
 ({                                              \
@@ -576,6 +579,103 @@ static void test_cpuid_out_of_range_clea
     }
 }
 
+static void test_cpuid_maximum_leaf_shrinking(void)
+{
+    static const struct test {
+        const char *name;
+        struct cpu_policy p;
+    } tests[] = {
+        {
+            .name = "basic",
+            .p = {
+                /* Very basic information only. */
+                .basic.max_leaf = 1,
+                .basic.raw_fms = 0xc2,
+            },
+        },
+        {
+            .name = "cache",
+            .p = {
+                /* Cache subleaves present. */
+                .basic.max_leaf = 4,
+                .cache.subleaf[0].type = 1,
+            },
+        },
+        {
+            .name = "feat#0",
+            .p = {
+                /* Subleaf 0 only with some valid bit. */
+                .basic.max_leaf = 7,
+                .feat.max_subleaf = 0,
+                .feat.fsgsbase = 1,
+            },
+        },
+        {
+            .name = "feat#1",
+            .p = {
+                /* Subleaf 1 only with some valid bit. */
+                .basic.max_leaf = 7,
+                .feat.max_subleaf = 1,
+                .feat.avx_vnni = 1,
+            },
+        },
+        {
+            .name = "topo",
+            .p = {
+                /* Topology subleaves present. */
+                .basic.max_leaf = 0xb,
+                .topo.subleaf[0].type = 1,
+            },
+        },
+        {
+            .name = "xstate",
+            .p = {
+                /* First subleaf always valid (and then non-zero). */
+                .basic.max_leaf = 0xd,
+                .xstate.xcr0_low = XSTATE_FP_SSE,
+            },
+        },
+        {
+            .name = "extd",
+            .p = {
+                /* Commonly available information only. */
+                .extd.max_leaf = 0x80000008,
+                .extd.maxphysaddr = 0x28,
+                .extd.maxlinaddr = 0x30,
+            },
+        },
+    };
+
+    printf("Testing CPUID maximum leaf shrinking:\n");
+
+    for ( size_t i = 0; i < ARRAY_SIZE(tests); ++i )
+    {
+        const struct test *t = &tests[i];
+        struct cpu_policy *p = memdup(&t->p);
+
+        p->basic.max_leaf = ARRAY_SIZE(p->basic.raw) - 1;
+        p->feat.max_subleaf = ARRAY_SIZE(p->feat.raw) - 1;
+        p->extd.max_leaf = 0x80000000 | (ARRAY_SIZE(p->extd.raw) - 1);
+
+        x86_cpu_policy_shrink_max_leaves(p);
+
+        /* Check the the resulting max (sub)leaf values against expecations. */
+        if ( p->basic.max_leaf != t->p.basic.max_leaf )
+             fail("  Test %s basic fail - expected %#x, got %#x\n",
+                  t->name, t->p.basic.max_leaf, p->basic.max_leaf);
+
+        if ( p->extd.max_leaf != t->p.extd.max_leaf )
+             fail("  Test %s extd fail - expected %#x, got %#x\n",
+                  t->name, t->p.extd.max_leaf, p->extd.max_leaf);
+
+        if ( p->feat.max_subleaf != t->p.feat.max_subleaf )
+             fail("  Test %s feat fail - expected %#x, got %#x\n",
+                  t->name, t->p.feat.max_subleaf, p->feat.max_subleaf);
+
+        free(p);
+    }
+}
+
 static void test_is_compatible_success(void)
 {
     static struct test {
@@ -671,6 +771,7 @@ int main(int argc, char **argv)
     test_cpuid_serialise_success();
     test_cpuid_deserialise_failure();
     test_cpuid_out_of_range_clearing();
+    test_cpuid_maximum_leaf_shrinking();
 
     test_msr_serialise_success();
     test_msr_deserialise_failure();
--- a/xen/arch/x86/cpu-policy.c
+++ b/xen/arch/x86/cpu-policy.c
@@ -404,6 +404,8 @@ static void __init calculate_host_policy
                                (1u << SVM_FEATURE_TSCRATEMSR));
     }
 
+    x86_cpu_policy_shrink_max_leaves(p);
+
     /* 0x000000ce  MSR_INTEL_PLATFORM_INFO */
     /* probe_cpuid_faulting() sanity checks presence of MISC_FEATURES_ENABLES */
     p->platform_info.cpuid_faulting = cpu_has_cpuid_faulting;
@@ -548,6 +550,8 @@ static void __init calculate_pv_max_poli
     recalculate_xstate(p);
 
     p->extd.raw[0xa] = EMPTY_LEAF; /* No SVM for PV guests. */
+
+    x86_cpu_policy_shrink_max_leaves(p);
 }
 
 static void __init calculate_pv_def_policy(void)
@@ -682,6 +686,8 @@ static void __init calculate_hvm_max_pol
     x86_cpu_featureset_to_policy(fs, p);
     recalculate_xstate(p);
 
+    x86_cpu_policy_shrink_max_leaves(p);
+
     /* It's always possible to emulate CPUID faulting for HVM guests */
     p->platform_info.cpuid_faulting = true;
 }
--- a/xen/arch/x86/traps.c
+++ b/xen/arch/x86/traps.c
@@ -1027,13 +1027,15 @@ void cpuid_hypervisor_leaves(const struc
     uint32_t base = is_viridian_domain(d) ? 0x40000100 : 0x40000000;
     uint32_t idx  = leaf - base;
     unsigned int limit = is_viridian_domain(d) ? p->hv2_limit : p->hv_limit;
+    unsigned int dflt = is_pv_domain(d) ? XEN_CPUID_MAX_PV_NUM_LEAVES
+                                        : XEN_CPUID_MAX_HVM_NUM_LEAVES;
 
     if ( limit == 0 )
         /* Default number of leaves */
-        limit = XEN_CPUID_MAX_NUM_LEAVES;
+        limit = dflt;
     else
         /* Clamp toolstack value between 2 and MAX_NUM_LEAVES. */
-        limit = min(max(limit, 2u), XEN_CPUID_MAX_NUM_LEAVES + 0u);
+        limit = min(max(limit, 2u), dflt);
 
     if ( idx > limit )
         return;
--- a/xen/include/public/arch-x86/cpuid.h
+++ b/xen/include/public/arch-x86/cpuid.h
@@ -117,6 +117,10 @@
 /* Max. address width in bits taking memory hotplug into account. */
 #define XEN_CPUID_MACHINE_ADDRESS_WIDTH_MASK (0xffu << 0)
 
-#define XEN_CPUID_MAX_NUM_LEAVES 5
+#define XEN_CPUID_MAX_PV_NUM_LEAVES 5
+#define XEN_CPUID_MAX_HVM_NUM_LEAVES 4
+#define XEN_CPUID_MAX_NUM_LEAVES \
+    (XEN_CPUID_MAX_PV_NUM_LEAVES > XEN_CPUID_MAX_HVM_NUM_LEAVES ? \
+     XEN_CPUID_MAX_PV_NUM_LEAVES : XEN_CPUID_MAX_HVM_NUM_LEAVES)
 
 #endif /* __XEN_PUBLIC_ARCH_X86_CPUID_H__ */
--- a/xen/include/xen/lib/x86/cpu-policy.h
+++ b/xen/include/xen/lib/x86/cpu-policy.h
@@ -438,6 +438,13 @@ void x86_cpu_policy_fill_native(struct c
  */
 void x86_cpu_policy_clear_out_of_range_leaves(struct cpu_policy *p);
 
+/**
+ * Shrink max leaf/subleaf values such that the last respective valid entry
+ * isn't all blank.  While permitted by the spec, such extraneous leaves may
+ * provide undue "hints" to guests.
+ */
+void x86_cpu_policy_shrink_max_leaves(struct cpu_policy *p);
+
 #ifdef __XEN__
 #include <public/arch-x86/xen.h>
 typedef XEN_GUEST_HANDLE_64(xen_cpuid_leaf_t) cpuid_leaf_buffer_t;
--- a/xen/lib/x86/cpuid.c
+++ b/xen/lib/x86/cpuid.c
@@ -291,6 +291,45 @@ void x86_cpu_policy_clear_out_of_range_l
                 ARRAY_SIZE(p->extd.raw) - 1);
 }
 
+void x86_cpu_policy_shrink_max_leaves(struct cpu_policy *p)
+{
+    unsigned int i;
+
+    p->basic.raw[0x4] = p->cache.raw[0];
+
+    for ( i = p->feat.max_subleaf; i; --i )
+        if ( p->feat.raw[i].a | p->feat.raw[i].b |
+             p->feat.raw[i].c | p->feat.raw[i].d )
+            break;
+    p->feat.max_subleaf = i;
+    p->basic.raw[0x7] = p->feat.raw[i];
+
+    p->basic.raw[0xb] = p->topo.raw[0];
+
+    /*
+     * Due to the way xstate gets handled in the hypervisor (see
+     * recalculate_xstate()) there is (for now at least) no need to fiddle
+     * with the xstate subleaves (IOW we assume they're already in consistent
+     * shape, for coming from either hardware or recalculate_xstate()).
+     */
+    p->basic.raw[0xd] = p->xstate.raw[0];
+
+    for ( i = p->basic.max_leaf; i; --i )
+        if ( p->basic.raw[i].a | p->basic.raw[i].b |
+             p->basic.raw[i].c | p->basic.raw[i].d )
+            break;
+    p->basic.max_leaf = i;
+
+    for ( i = p->extd.max_leaf & 0xffff; i; --i )
+        if ( p->extd.raw[i].a | p->extd.raw[i].b |
+             p->extd.raw[i].c | p->extd.raw[i].d )
+            break;
+    if ( i | p->extd.raw[0].b | p->extd.raw[0].c | p->extd.raw[0].d )
+        p->extd.max_leaf = 0x80000000U | i;
+    else
+        p->extd.max_leaf = 0;
+}
+
 const uint32_t *x86_cpu_policy_lookup_deep_deps(uint32_t feature)
 {
     static const uint32_t deep_features[] = INIT_DEEP_FEATURES;



From xen-devel-bounces@lists.xenproject.org Thu Jan 11 14:25:29 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 11 Jan 2024 14:25:29 +0000
Received: from list by lists.xenproject.org with outflank-mailman.666325.1036882 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNvzt-0004C3-Dt; Thu, 11 Jan 2024 14:25:29 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 666325.1036882; Thu, 11 Jan 2024 14:25:29 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNvzt-0004Bw-BG; Thu, 11 Jan 2024 14:25:29 +0000
Received: by outflank-mailman (input) for mailman id 666325;
 Thu, 11 Jan 2024 14:25:28 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=YFj+=IV=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rNvzs-0004Bg-06
 for xen-devel@lists.xenproject.org; Thu, 11 Jan 2024 14:25:28 +0000
Received: from mail-lj1-x234.google.com (mail-lj1-x234.google.com
 [2a00:1450:4864:20::234])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 43e263df-b08d-11ee-98f0-6d05b1d4d9a1;
 Thu, 11 Jan 2024 15:25:27 +0100 (CET)
Received: by mail-lj1-x234.google.com with SMTP id
 38308e7fff4ca-2cd17a979bcso60507511fa.0
 for <xen-devel@lists.xenproject.org>; Thu, 11 Jan 2024 06:25:27 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 y7-20020a92d0c7000000b0035fffb69deasm313951ila.81.2024.01.11.06.25.25
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 11 Jan 2024 06:25:26 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 43e263df-b08d-11ee-98f0-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1704983127; x=1705587927; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:references:cc:to
         :from:content-language:subject:user-agent:mime-version:date
         :message-id:from:to:cc:subject:date:message-id:reply-to;
        bh=nxlZsfY9nRps0k+Fd9YTdSyalzLKovC0rZ6cYhnCGsA=;
        b=TUrIKiyfoa9pOZldEbhvxkS1X+A0ETMqyuAILpCrunryT1K8eZ3f5nTF7GOruUYOgh
         /4t6rtH8vRY3RSZT3OfPjzLSZmrkbbosHoWLXpPxoF24beDh5bWrOW+nGF8rB7PhbqSm
         lTgBmtClk3kBInwHnTvSiimhpTPREqNyu8GxubIvjVbFE7080TnCXV055EoS1wWBxIR/
         19IYn5zfSbB4dECYvD0J2eBVs966zS2clWYihxORDhmhHkHsgwAoJ+E0Ll9MqSWGws5X
         PSd1abJdeybHAIL0jzFV6LFEA5rZa14R+CL02MTMsiBxR/jEVBgaB2ZI/fZGF1qGyIFm
         bmyQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704983127; x=1705587927;
        h=content-transfer-encoding:in-reply-to:autocrypt:references:cc:to
         :from:content-language:subject:user-agent:mime-version:date
         :message-id:x-gm-message-state:from:to:cc:subject:date:message-id
         :reply-to;
        bh=nxlZsfY9nRps0k+Fd9YTdSyalzLKovC0rZ6cYhnCGsA=;
        b=ke52WiYcLb3ZxbjTwb42OeJjKoJZu3JoNrSzLFIBIFNKt4zKO3lM34xE7+KVlWr60U
         IQiB1h8czgcZ0ysvy8wll/zHNQNDDVbOxL4FAOtABadYOCSXMM/nha+16ivhdDBmL+lc
         ALnc5Gryy7idz7xcEvM+Q3wYab6crxfoRFlpdzjtzclt+5JQYYrYOdqnhpXdXqVmRLKV
         dNhjj7gOvOdcQMAFfhs1RaPVOi0kr2tVm0Sj6DyJFk2B5CFUkojLLCC8rGgFe5nMZBxP
         At993IEF5NL9h0STkszyXhc2y+meqwpQbLfW2FRrpV+9sncE4UGw0HYWGfh3Q2NUF8gP
         0ODQ==
X-Gm-Message-State: AOJu0YzRloeOOxKdjMQ9j0NAu1M684WLsClwiEyWHMdVzJ1P3eQ+BzPQ
	xpjPqYewKk5MlN2T7AH+ecqj2G/liSy0+U9qD3FyvDLDJw==
X-Google-Smtp-Source: AGHT+IE4PbMPuuaYzzQPcjxeukvtifuQVaL5qy6GJZkf0FGZoMXpgGrvD4LAEWRz9W2Chc1aMD0v/A==
X-Received: by 2002:a2e:9685:0:b0:2cc:ad9b:8803 with SMTP id q5-20020a2e9685000000b002ccad9b8803mr222265lji.168.1704983126772;
        Thu, 11 Jan 2024 06:25:26 -0800 (PST)
Message-ID: <aaf21c66-909b-4fcd-a671-1020ee1ae8f3@suse.com>
Date: Thu, 11 Jan 2024 15:25:25 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: [PATCH v4 3/3] x86/CPUID: move bounding of max_{,sub}leaf fields to
 library code
Content-Language: en-US
From: Jan Beulich <jbeulich@suse.com>
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, Wei Liu <wl@xen.org>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
References: <774ece90-296a-4975-a31f-038de45e98bc@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <774ece90-296a-4975-a31f-038de45e98bc@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

Break out this logic from calculate_host_policy() to also use it in the
x86 emulator harness, where subsequently we'll want to avoid open-coding
AMX maximum palette bounding as well as AVX10 sub-feature pruning.

Signed-off-by: Jan Beulich <jbeulich@suse.com>
---
v4: Mark x86_cpu_policy_bound_max_leaves() __init. Add U suffixes.
    Re-base.
v2: New.

--- a/tools/tests/x86_emulator/x86-emulate.c
+++ b/tools/tests/x86_emulator/x86-emulate.c
@@ -76,6 +76,7 @@ bool emul_test_init(void)
     unsigned long sp;
 
     x86_cpu_policy_fill_native(&cp);
+    x86_cpu_policy_bound_max_leaves(&cp);
 
     /*
      * The emulator doesn't use these instructions, so can always emulate
@@ -89,6 +90,8 @@ bool emul_test_init(void)
     cp.feat.wrmsrns = true;
     cp.extd.clzero = true;
 
+    x86_cpu_policy_shrink_max_leaves(&cp);
+
     if ( cpu_has_xsave )
     {
         unsigned int tmp, ebx;
--- a/xen/arch/x86/cpu-policy.c
+++ b/xen/arch/x86/cpu-policy.c
@@ -360,28 +360,19 @@ void calculate_raw_cpu_policy(void)
 static void __init calculate_host_policy(void)
 {
     struct cpu_policy *p = &host_cpu_policy;
-    unsigned int max_extd_leaf;
 
     *p = raw_cpu_policy;
 
-    p->basic.max_leaf =
-        min_t(uint32_t, p->basic.max_leaf,   ARRAY_SIZE(p->basic.raw) - 1);
-    p->feat.max_subleaf =
-        min_t(uint32_t, p->feat.max_subleaf, ARRAY_SIZE(p->feat.raw) - 1);
-
-    max_extd_leaf = p->extd.max_leaf;
-
     /*
      * For AMD/Hygon hardware before Zen3, we unilaterally modify LFENCE to be
      * dispatch serialising for Spectre mitigations.  Extend max_extd_leaf
      * beyond what hardware supports, to include the feature leaf containing
      * this information.
      */
-    if ( cpu_has_lfence_dispatch )
-        max_extd_leaf = max(max_extd_leaf, 0x80000021U);
+    if ( cpu_has_lfence_dispatch && p->extd.max_leaf < 0x80000021U )
+        p->extd.max_leaf = 0x80000021U;
 
-    p->extd.max_leaf = 0x80000000U | min_t(uint32_t, max_extd_leaf & 0xffff,
-                                           ARRAY_SIZE(p->extd.raw) - 1);
+    x86_cpu_policy_bound_max_leaves(p);
 
     x86_cpu_featureset_to_policy(boot_cpu_data.x86_capability, p);
     recalculate_xstate(p);
--- a/xen/include/xen/lib/x86/cpu-policy.h
+++ b/xen/include/xen/lib/x86/cpu-policy.h
@@ -439,6 +439,12 @@ void x86_cpu_policy_fill_native(struct c
 void x86_cpu_policy_clear_out_of_range_leaves(struct cpu_policy *p);
 
 /**
+ * Bound max leaf/subleaf values according to the capacity of the respective
+ * arrays in struct cpu_policy.
+ */
+void x86_cpu_policy_bound_max_leaves(struct cpu_policy *p);
+
+/**
  * Shrink max leaf/subleaf values such that the last respective valid entry
  * isn't all blank.  While permitted by the spec, such extraneous leaves may
  * provide undue "hints" to guests.
--- a/xen/lib/x86/cpuid.c
+++ b/xen/lib/x86/cpuid.c
@@ -291,6 +291,16 @@ void x86_cpu_policy_clear_out_of_range_l
                 ARRAY_SIZE(p->extd.raw) - 1);
 }
 
+void __init x86_cpu_policy_bound_max_leaves(struct cpu_policy *p)
+{
+    p->basic.max_leaf =
+        min_t(uint32_t, p->basic.max_leaf, ARRAY_SIZE(p->basic.raw) - 1);
+    p->feat.max_subleaf =
+        min_t(uint32_t, p->feat.max_subleaf, ARRAY_SIZE(p->feat.raw) - 1);
+    p->extd.max_leaf = 0x80000000U | min_t(uint32_t, p->extd.max_leaf & 0xffff,
+                                           ARRAY_SIZE(p->extd.raw) - 1);
+}
+
 void x86_cpu_policy_shrink_max_leaves(struct cpu_policy *p)
 {
     unsigned int i;
--- a/xen/lib/x86/private.h
+++ b/xen/lib/x86/private.h
@@ -5,6 +5,7 @@
 
 #include <xen/bitops.h>
 #include <xen/guest_access.h>
+#include <xen/init.h>
 #include <xen/kernel.h>
 #include <xen/lib.h>
 #include <xen/nospec.h>
@@ -28,6 +29,11 @@
 
 #include <xen-tools/common-macros.h>
 
+#define __init
+#define __initdata
+#define __initconst
+#define __initconstrel
+
 static inline bool test_bit(unsigned int bit, const void *vaddr)
 {
     const char *addr = vaddr;



From xen-devel-bounces@lists.xenproject.org Thu Jan 11 14:54:30 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 11 Jan 2024 14:54:30 +0000
Received: from list by lists.xenproject.org with outflank-mailman.666336.1036893 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNwRq-0002hU-ML; Thu, 11 Jan 2024 14:54:22 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 666336.1036893; Thu, 11 Jan 2024 14:54:22 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNwRq-0002hN-JA; Thu, 11 Jan 2024 14:54:22 +0000
Received: by outflank-mailman (input) for mailman id 666336;
 Thu, 11 Jan 2024 14:54:21 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rNwRp-0002hB-LW; Thu, 11 Jan 2024 14:54:21 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rNwRp-0007fW-EF; Thu, 11 Jan 2024 14:54:21 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rNwRo-0006P6-VI; Thu, 11 Jan 2024 14:54:21 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rNwRo-0006Ei-Uo; Thu, 11 Jan 2024 14:54:20 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=DT4vMUYDSydvsGopZwARtdxXRkHYONVvUArVP4VqF7M=; b=tG66MOdpFCvWGqX8eM9m4pUcps
	O4xhEk+zPbXK6E2gzxFRZSpUKaiY2TxYpe7t+6joq+z4q2Pvhbrdg+j5Hg7FdLxUQr/D9Kz0wLWop
	toyOt7Hvmd4TPoH/hsf9h8uEjuEVuNlNGrXGmR4ebFxe4mZNg4qysdV2HAHboU28nP44=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184320-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [ovmf test] 184320: all pass - PUSHED
X-Osstest-Versions-This:
    ovmf=ebf378a1ada6d128dbf32aec76b3911895747bbb
X-Osstest-Versions-That:
    ovmf=889535caf8869e3d4818b75f95f2fc910c84a4d2
From: osstest service owner <osstest-admin@xenproject.org>
Date: Thu, 11 Jan 2024 14:54:20 +0000

flight 184320 ovmf real [real]
http://logs.test-lab.xenproject.org/osstest/logs/184320/

Perfect :-)
All tests in this flight passed as required
version targeted for testing:
 ovmf                 ebf378a1ada6d128dbf32aec76b3911895747bbb
baseline version:
 ovmf                 889535caf8869e3d4818b75f95f2fc910c84a4d2

Last test of basis   184315  2024-01-11 03:12:57 Z    0 days
Testing same since   184320  2024-01-11 12:12:48 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Sunil V L <sunilvl@ventanamicro.com>

jobs:
 build-amd64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-amd64-amd64-xl-qemuu-ovmf-amd64                         pass    
 test-amd64-i386-xl-qemuu-ovmf-amd64                          pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Pushing revision :

To xenbits.xen.org:/home/xen/git/osstest/ovmf.git
   889535caf8..ebf378a1ad  ebf378a1ada6d128dbf32aec76b3911895747bbb -> xen-tested-master


From xen-devel-bounces@lists.xenproject.org Thu Jan 11 15:15:57 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 11 Jan 2024 15:15:57 +0000
Received: from list by lists.xenproject.org with outflank-mailman.666343.1036903 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNwmb-0008EL-Cr; Thu, 11 Jan 2024 15:15:49 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 666343.1036903; Thu, 11 Jan 2024 15:15:49 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNwmb-0008EE-9e; Thu, 11 Jan 2024 15:15:49 +0000
Received: by outflank-mailman (input) for mailman id 666343;
 Thu, 11 Jan 2024 15:15:47 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=YFj+=IV=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rNwmZ-0008E6-HZ
 for xen-devel@lists.xenproject.org; Thu, 11 Jan 2024 15:15:47 +0000
Received: from mail-wm1-x335.google.com (mail-wm1-x335.google.com
 [2a00:1450:4864:20::335])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 4a07df8e-b094-11ee-9b0f-b553b5be7939;
 Thu, 11 Jan 2024 16:15:44 +0100 (CET)
Received: by mail-wm1-x335.google.com with SMTP id
 5b1f17b1804b1-40e62341ad7so3961745e9.1
 for <xen-devel@lists.xenproject.org>; Thu, 11 Jan 2024 07:15:44 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 q20-20020a05600c46d400b0040e395cd20bsm6099382wmo.7.2024.01.11.07.15.42
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 11 Jan 2024 07:15:43 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 4a07df8e-b094-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1704986143; x=1705590943; darn=lists.xenproject.org;
        h=content-transfer-encoding:autocrypt:subject:from:cc:to
         :content-language:user-agent:mime-version:date:message-id:from:to:cc
         :subject:date:message-id:reply-to;
        bh=N7rtlm0nmfIXoeCgI0acLjbqox8dMpVUfqfryO3Y0Xo=;
        b=UZDhS31UXerM5m8yDkmLEsMFzTRs+ilw5rabMoC4TlO7XgRL7RRxAZP7G3Jz3W5kvd
         d4LKRKqAO4i9G52Bsw4EXQYzOjNwYrJ6Nhdfo90rxaDrkX50YBAUcMXo3wpppeotDNy7
         ws4dIa0Lr6kr/pZl/ysgbvleXzYFYFuVpPN/hv0h9Wvcyh23XAzTvbkaHpblvdH/9Foc
         7Va+C1WmkdHtkdRCRKGyQv0WYIVRMbZldzfzWC3mAmgZhdMF9/IvSgY4F/gCS+CscJtg
         siN00yPeZEFdAcIohavH3jYK3etJYg8byTq3H3eNRt0sIdwWcPd8JSTTfeUrOOXU8eVI
         4E/g==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704986143; x=1705590943;
        h=content-transfer-encoding:autocrypt:subject:from:cc:to
         :content-language:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=N7rtlm0nmfIXoeCgI0acLjbqox8dMpVUfqfryO3Y0Xo=;
        b=ja/4j5lJZAMEvCw7R3AAps4p4deCheX6k0oh7DMbTcQC8/+WWQEiCbWPRDZDuhb5T+
         7ONmdjSm4kV6F/qXSQcLCmu1qRn/Oi1XlBEe2/ABJJjiLYKhtBhDDmkkMXZF8Ae9DT6u
         Whxjf13LKWusnOoIWL//PF/GP94GvwmoEPmnSQqpdQucjmvZcgpn3HWBWOuGIWcXzeMa
         EH/15xl67u84lEFfPpPmzBdg/Rgi7lmBdTFWhBjV0m1h9pi3rdNFqOtMvdb60nsRqiH5
         G0Xsdd1yBQUvkWLQRT1cIxyZnKBvcOAkouuhNcLu308zhXxM8efOolS1xpuLfgCPKHrI
         in3A==
X-Gm-Message-State: AOJu0Yylxjf9Hj5LkT/uBfrYq3OEeCl55wmGEvTooWQZn+/OFSLRfLMp
	hpi3Kh5Rp2yNjNkbRKo8vC+oezpSXKFTE5lA0yT20iBOGw==
X-Google-Smtp-Source: AGHT+IFSjo+kqPzZqJPHIFHO95jzLBUIGM9xo5G8/Ogz+9X8lgt9GgbPvZpJz6i/nRwIQ2YlXzhn7w==
X-Received: by 2002:a05:600c:5024:b0:40e:62b1:c047 with SMTP id n36-20020a05600c502400b0040e62b1c047mr112445wmr.102.1704986143487;
        Thu, 11 Jan 2024 07:15:43 -0800 (PST)
Message-ID: <298db76f-d0ee-4d47-931f-1baa1a7546cf@suse.com>
Date: Thu, 11 Jan 2024 16:15:42 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Content-Language: en-US
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, Wei Liu <wl@xen.org>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
From: Jan Beulich <jbeulich@suse.com>
Subject: [PATCH 0/8] x86: support AVX10.1
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

AVX10.1 is just a re-branding of certain AVX512 (sub)features, i.e.
adds no new instructions. Therefore it's mostly relaxation that needs
doing, plus dealing with the 256-bit-only case that AVX512 itself
does not allow for. Luckily an unnecessary restriction on the mask
register insns was taken out again, simplifying the actual emulator
adjustments quite a bit.

While it probably can be rebased ahead, the series in this form
depends on the previously submitted
[PATCH 0/4] x86emul: support further AVX extensions
[PATCH v4 0/8] x86emul: misc additions
[PATCH v4 0/3] x86/CPUID: leaf pruning

I've tried to be very careful in rebasing ahead of AMX and KeyLocker
patches I've been carrying, but almost all testing I've done is with
all of those collectively in place.

1: x86/CPUID: enable AVX10 leaf
2: x86emul/test: rename "cp"
3: x86emul: introduce a struct cpu_policy * local in x86_emulate()
4: x86emul: support AVX10.1
5: x86emul/test: use simd_check_avx512*() in main()
6: x86emul/test: drop cpu_has_avx512vl
7: x86emul: AVX10.1 testing
8: x86emul/test: engage AVX512VL via command line option

Jan


From xen-devel-bounces@lists.xenproject.org Thu Jan 11 15:17:44 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 11 Jan 2024 15:17:44 +0000
Received: from list by lists.xenproject.org with outflank-mailman.666347.1036912 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNwoR-0000Li-NF; Thu, 11 Jan 2024 15:17:43 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 666347.1036912; Thu, 11 Jan 2024 15:17:43 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNwoR-0000Lb-Kh; Thu, 11 Jan 2024 15:17:43 +0000
Received: by outflank-mailman (input) for mailman id 666347;
 Thu, 11 Jan 2024 15:17:43 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=YFj+=IV=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rNwoR-0000LM-4H
 for xen-devel@lists.xenproject.org; Thu, 11 Jan 2024 15:17:43 +0000
Received: from mail-wm1-x335.google.com (mail-wm1-x335.google.com
 [2a00:1450:4864:20::335])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 8ff68640-b094-11ee-98f0-6d05b1d4d9a1;
 Thu, 11 Jan 2024 16:17:41 +0100 (CET)
Received: by mail-wm1-x335.google.com with SMTP id
 5b1f17b1804b1-40e6297a00fso2509235e9.3
 for <xen-devel@lists.xenproject.org>; Thu, 11 Jan 2024 07:17:41 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 fk10-20020a05600c0cca00b0040e5a0ebabesm4245126wmb.21.2024.01.11.07.17.40
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 11 Jan 2024 07:17:40 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 8ff68640-b094-11ee-98f0-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1704986261; x=1705591061; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:references:cc:to
         :from:content-language:subject:user-agent:mime-version:date
         :message-id:from:to:cc:subject:date:message-id:reply-to;
        bh=R+dSy1p/6rzNzLV5se8Gs5M7zoR769dXJ05ONyzPn2E=;
        b=gGV7S1ZZzWqjnTzhWnjpFfJrW5UkMB63vh1Hu6WDYKOcHqsGhms6EjcvzyNFQwfYC7
         O2tXjC+7Orp9ST9yYc5FkNSz/lDNle6Gfp5nAXAQBSX38WDUfHvQDTO8Rm+gbXYSD0jI
         5Sb/7LHNx5sBRJW1kvE1cgewBbSl4QELckBdchX0Br9UjQ1P71ZtHgFs9Pfuz0XTBGCx
         5mHG38mLyCKnCDzL5yJ0FG/HYEstmq/l+022CmLlvmeMxaCXdIDRjiD6di29iCwHFCX8
         2hqROXwoEuPLDtG6bxve3vX/IQuA1LQrV2ptj8eFwb2+9boDMvgfPl4G9Sn7x+VIIRkI
         ZISw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704986261; x=1705591061;
        h=content-transfer-encoding:in-reply-to:autocrypt:references:cc:to
         :from:content-language:subject:user-agent:mime-version:date
         :message-id:x-gm-message-state:from:to:cc:subject:date:message-id
         :reply-to;
        bh=R+dSy1p/6rzNzLV5se8Gs5M7zoR769dXJ05ONyzPn2E=;
        b=b/t0uxNNWHaey/88KQeLg4DXWLLoHr4PCuqra+2YT7VhJrFXaUtPKgQUXF9KFaROJ3
         yOUclJaAGw/K31o6nFwMQ1GUXnxbgYeBOd/QKgzcJypZlyXr+bLc2a83vIX4p0CbDCDr
         +7k3HrZ/YYAumm4a/ZN0uKp0GGm8aMAn4kN1w98sWHnHPB8OYRlgos6WDq3NJjecZO/h
         A6hqVCRxJd1b5/SrHki0yOd6GcIpIf9KDrlrg4+9AVVNEEF2WhcXFRI0/0IhZS4Oi/dH
         yxtqSU/m3RCHLuK8mFk+7vErSOikBI0lN2F/1RAXd6CAbH+Ec/0zuju+eoL/qV/XC4IP
         O5Pw==
X-Gm-Message-State: AOJu0YxAj8CerPrtCfYg8E5vrYFoeEBO2eEt3opa1C+2Qi+3CC41hyLD
	gP/0pw6jajxw6WU1kmLEihrnoTHsmMarKHsb7jkJQ6Jd6w==
X-Google-Smtp-Source: AGHT+IGQf7cRqqNV5GtlcBMvz4JCVgxMu6XWgsbg6v+x1tjn6FFdoqHDIIj1yS0f1YKAl1rNC1CSVw==
X-Received: by 2002:a05:600c:154d:b0:40e:6207:2eb8 with SMTP id f13-20020a05600c154d00b0040e62072eb8mr263634wmg.47.1704986260722;
        Thu, 11 Jan 2024 07:17:40 -0800 (PST)
Message-ID: <253a35dd-d6e3-46fd-b629-999c88a4b88f@suse.com>
Date: Thu, 11 Jan 2024 16:17:39 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: [PATCH 1/8] x86/CPUID: enable AVX10 leaf
Content-Language: en-US
From: Jan Beulich <jbeulich@suse.com>
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, Wei Liu <wl@xen.org>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
References: <298db76f-d0ee-4d47-931f-1baa1a7546cf@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <298db76f-d0ee-4d47-931f-1baa1a7546cf@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

This requires bumping the number of basic leaves we support. Apart from
this the logic is modeled as closely as possible after that of leaf 7
handling.

Signed-off-by: Jan Beulich <jbeulich@suse.com>
---
The gen-cpuid.py adjustment is merely the minimum needed. It's not
really clear to me whether someone turning off e.g. AVX512BW might then
also validly expect AVX10 to be turned off.

Spec version 2 leaves unclear what the xstate components are which would
need enabling for AVX10/256. recalculate_{xstate,misc}() are therefore
conservative for now.

Do we want to synthesize AVX10 in the policy when all necessary AVX512*
features are available, thus allowing migration from an AVX10 host to a
suitable non-AVX10 one?

--- a/tools/misc/xen-cpuid.c
+++ b/tools/misc/xen-cpuid.c
@@ -230,7 +230,7 @@ static const char *const str_7d1[32] =
 
     [14] = "prefetchi",           [15] = "user-msr",
 
-    [18] = "cet-sss",
+    [18] = "cet-sss",             [19] = "avx10",
 };
 
 static const char *const str_7d2[32] =
--- a/xen/arch/x86/cpu-policy.c
+++ b/xen/arch/x86/cpu-policy.c
@@ -221,7 +221,7 @@ static void recalculate_xstate(struct cp
                           xstate_sizes[X86_XCR0_BNDCSR_POS]);
     }
 
-    if ( p->feat.avx512f )
+    if ( p->feat.avx512f || (p->feat.avx10 && p->avx10.vsz512) )
     {
         xstates |= X86_XCR0_OPMASK | X86_XCR0_ZMM | X86_XCR0_HI_ZMM;
         xstate_size = max(xstate_size,
@@ -283,6 +283,16 @@ static void recalculate_misc(struct cpu_
 
     p->basic.raw[0xc] = EMPTY_LEAF;
 
+    zero_leaves(p->basic.raw, 0xe, 0x23);
+
+    p->avx10.raw[0].b &= 0x000700ff;
+    p->avx10.raw[0].c = p->avx10.raw[0].d = 0;
+    if ( !p->feat.avx10 || !p->avx10.version || !p->avx10.vsz512 )
+    {
+        p->feat.avx10 = false;
+        memset(p->avx10.raw, 0, sizeof(p->avx10.raw));
+    }
+
     p->extd.e1d &= ~CPUID_COMMON_1D_FEATURES;
 
     /* Most of Power/RAS hidden from guests. */
@@ -800,6 +810,7 @@ void recalculate_cpuid_policy(struct dom
 
     p->basic.max_leaf   = min(p->basic.max_leaf,   max->basic.max_leaf);
     p->feat.max_subleaf = min(p->feat.max_subleaf, max->feat.max_subleaf);
+    p->avx10.max_subleaf = min(p->avx10.max_subleaf, max->avx10.max_subleaf);
     p->extd.max_leaf    = 0x80000000U | min(p->extd.max_leaf & 0xffff,
                                             ((p->x86_vendor & (X86_VENDOR_AMD |
                                                                X86_VENDOR_HYGON))
@@ -854,6 +865,8 @@ void recalculate_cpuid_policy(struct dom
 
     if ( p->basic.max_leaf < XSTATE_CPUID )
         __clear_bit(X86_FEATURE_XSAVE, fs);
+    if ( p->basic.max_leaf < 0x24 )
+        __clear_bit(X86_FEATURE_AVX10, fs);
 
     sanitise_featureset(fs);
 
@@ -967,6 +980,8 @@ static void __init __maybe_unused build_
                  sizeof(raw_cpu_policy.feat.raw));
     BUILD_BUG_ON(sizeof(raw_cpu_policy.xstate) !=
                  sizeof(raw_cpu_policy.xstate.raw));
+    BUILD_BUG_ON(sizeof(raw_cpu_policy.avx10) !=
+                 sizeof(raw_cpu_policy.avx10.raw));
     BUILD_BUG_ON(sizeof(raw_cpu_policy.extd) !=
                  sizeof(raw_cpu_policy.extd.raw));
 }
--- a/xen/arch/x86/cpuid.c
+++ b/xen/arch/x86/cpuid.c
@@ -87,6 +87,15 @@ void guest_cpuid(const struct vcpu *v, u
             *res = array_access_nospec(p->xstate.raw, subleaf);
             break;
 
+        case 0x24:
+            ASSERT(p->avx10.max_subleaf < ARRAY_SIZE(p->avx10.raw));
+            if ( subleaf > min_t(uint32_t, p->avx10.max_subleaf,
+                                 ARRAY_SIZE(p->avx10.raw) - 1) )
+                return;
+
+            *res = array_access_nospec(p->avx10.raw, subleaf);
+            break;
+
         default:
             *res = array_access_nospec(p->basic.raw, leaf);
             break;
--- a/xen/include/public/arch-x86/cpufeatureset.h
+++ b/xen/include/public/arch-x86/cpufeatureset.h
@@ -321,6 +321,7 @@ XEN_CPUFEATURE(AVX_VNNI_INT16,     15*32
 XEN_CPUFEATURE(PREFETCHI,          15*32+14) /*A  PREFETCHIT{0,1} Instructions */
 XEN_CPUFEATURE(USER_MSR,           15*32+15) /*s  U{RD,WR}MSR Instructions */
 XEN_CPUFEATURE(CET_SSS,            15*32+18) /*   CET Supervisor Shadow Stacks safe to use */
+XEN_CPUFEATURE(AVX10,              15*32+19) /*   AVX10 Converged Vector ISA */
 
 /* Intel-defined CPU features, MSR_ARCH_CAPS 0x10a.eax, word 16 */
 XEN_CPUFEATURE(RDCL_NO,            16*32+ 0) /*A  No Rogue Data Cache Load (Meltdown) */
--- a/xen/include/xen/lib/x86/cpu-policy.h
+++ b/xen/include/xen/lib/x86/cpu-policy.h
@@ -85,11 +85,12 @@ unsigned int x86_cpuid_lookup_vendor(uin
  */
 const char *x86_cpuid_vendor_to_str(unsigned int vendor);
 
-#define CPUID_GUEST_NR_BASIC      (0xdu + 1)
+#define CPUID_GUEST_NR_BASIC      (0x24u + 1)
 #define CPUID_GUEST_NR_CACHE      (5u + 1)
 #define CPUID_GUEST_NR_FEAT       (2u + 1)
 #define CPUID_GUEST_NR_TOPO       (1u + 1)
 #define CPUID_GUEST_NR_XSTATE     (62u + 1)
+#define CPUID_GUEST_NR_AVX10      (0u + 1)
 #define CPUID_GUEST_NR_EXTD_INTEL (0x8u + 1)
 #define CPUID_GUEST_NR_EXTD_AMD   (0x21u + 1)
 #define CPUID_GUEST_NR_EXTD       MAX(CPUID_GUEST_NR_EXTD_INTEL, \
@@ -255,6 +256,19 @@ struct cpu_policy
         } comp[CPUID_GUEST_NR_XSTATE];
     } xstate;
 
+    /* Structured AVX10 information leaf: 0x000000024[xx] */
+    union {
+        struct cpuid_leaf raw[CPUID_GUEST_NR_AVX10];
+        struct {
+            /* Subleaf 0. */
+            uint32_t max_subleaf;
+            uint32_t version:8, :8;
+            bool vsz128:1, vsz256:1, vsz512:1;
+            uint32_t :13;
+            uint32_t /* c */:32, /* d */:32;
+        };
+    } avx10;
+
     /* Extended leaves: 0x800000xx */
     union {
         struct cpuid_leaf raw[CPUID_GUEST_NR_EXTD];
--- a/xen/lib/x86/cpuid.c
+++ b/xen/lib/x86/cpuid.c
@@ -123,6 +123,7 @@ void x86_cpu_policy_fill_native(struct c
         switch ( i )
         {
         case 0x4: case 0x7: case 0xb: case 0xd:
+        case 0x24:
             /* Multi-invocation leaves.  Deferred. */
             continue;
         }
@@ -216,6 +217,15 @@ void x86_cpu_policy_fill_native(struct c
         }
     }
 
+    if ( p->basic.max_leaf >= 0x24 )
+    {
+        cpuid_count_leaf(0x24, 0, &p->avx10.raw[0]);
+
+        for ( i = 1; i <= MIN(p->avx10.max_subleaf,
+                              ARRAY_SIZE(p->avx10.raw) - 1); ++i )
+            cpuid_count_leaf(0x24, i, &p->avx10.raw[i]);
+    }
+
     /* Extended leaves. */
     cpuid_leaf(0x80000000U, &p->extd.raw[0]);
     for ( i = 1; i <= MIN(p->extd.max_leaf & 0xffffU,
@@ -285,6 +295,9 @@ void x86_cpu_policy_clear_out_of_range_l
                     ARRAY_SIZE(p->xstate.raw) - 1);
     }
 
+    if ( p->basic.max_leaf < 0x24 )
+        memset(p->avx10.raw, 0, sizeof(p->avx10.raw));
+
     zero_leaves(p->extd.raw,
                 ((p->extd.max_leaf >> 16) == 0x8000
                  ? (p->extd.max_leaf & 0xffff) + 1 : 0),
@@ -297,6 +310,8 @@ void __init x86_cpu_policy_bound_max_lea
         min_t(uint32_t, p->basic.max_leaf, ARRAY_SIZE(p->basic.raw) - 1);
     p->feat.max_subleaf =
         min_t(uint32_t, p->feat.max_subleaf, ARRAY_SIZE(p->feat.raw) - 1);
+    p->avx10.max_subleaf =
+        min_t(uint32_t, p->avx10.max_subleaf, ARRAY_SIZE(p->avx10.raw) - 1);
     p->extd.max_leaf = 0x80000000U | min_t(uint32_t, p->extd.max_leaf & 0xffff,
                                            ARRAY_SIZE(p->extd.raw) - 1);
 }
@@ -324,6 +339,8 @@ void x86_cpu_policy_shrink_max_leaves(st
      */
     p->basic.raw[0xd] = p->xstate.raw[0];
 
+    p->basic.raw[0x24] = p->avx10.raw[0];
+
     for ( i = p->basic.max_leaf; i; --i )
         if ( p->basic.raw[i].a | p->basic.raw[i].b |
              p->basic.raw[i].c | p->basic.raw[i].d )
@@ -457,6 +474,13 @@ int x86_cpuid_copy_to_buffer(const struc
             break;
         }
 
+        case 0x24:
+            for ( subleaf = 0;
+                  subleaf <= MIN(p->avx10.max_subleaf,
+                                 ARRAY_SIZE(p->avx10.raw) - 1); ++subleaf )
+                COPY_LEAF(leaf, subleaf, &p->avx10.raw[subleaf]);
+            break;
+
         default:
             COPY_LEAF(leaf, XEN_CPUID_NO_SUBLEAF, &p->basic.raw[leaf]);
             break;
@@ -549,6 +573,13 @@ int x86_cpuid_copy_from_buffer(struct cp
                 array_access_nospec(p->xstate.raw, data.subleaf) = l;
                 break;
 
+            case 0x24:
+                if ( data.subleaf >= ARRAY_SIZE(p->avx10.raw) )
+                    goto out_of_range;
+
+                array_access_nospec(p->avx10.raw, data.subleaf) = l;
+                break;
+
             default:
                 if ( data.subleaf != XEN_CPUID_NO_SUBLEAF )
                     goto out_of_range;
--- a/xen/lib/x86/policy.c
+++ b/xen/lib/x86/policy.c
@@ -21,6 +21,14 @@ int x86_cpu_policies_are_compatible(cons
     if ( guest->feat.max_subleaf > host->feat.max_subleaf )
         FAIL_CPUID(7, 0);
 
+    if ( guest->avx10.version > host->avx10.version ||
+         (guest->avx10.vsz512
+          ? !host->avx10.vsz512
+          : guest->avx10.vsz256
+            ? !host->avx10.vsz256
+            : guest->avx10.vsz128 && !host->avx10.vsz128 ) )
+        FAIL_CPUID(0x24, 0);
+
     if ( guest->extd.max_leaf > host->extd.max_leaf )
         FAIL_CPUID(0x80000000U, NA);
 
--- a/xen/tools/gen-cpuid.py
+++ b/xen/tools/gen-cpuid.py
@@ -286,7 +286,7 @@ def crunch_numbers(state):
         # enabled.  Certain later extensions, acting on 256-bit vectors of
         # integers, better depend on AVX2 than AVX.
         AVX2: [AVX512F, VAES, VPCLMULQDQ, AVX_VNNI, AVX_IFMA, AVX_VNNI_INT8,
-               AVX_VNNI_INT16, SHA512, SM4],
+               AVX_VNNI_INT16, SHA512, SM4, AVX10],
 
         # AVX512F is taken to mean hardware support for 512bit registers
         # (which in practice depends on the EVEX prefix to encode) as well



From xen-devel-bounces@lists.xenproject.org Thu Jan 11 15:18:24 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 11 Jan 2024 15:18:24 +0000
Received: from list by lists.xenproject.org with outflank-mailman.666353.1036923 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNwp6-000132-5B; Thu, 11 Jan 2024 15:18:24 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 666353.1036923; Thu, 11 Jan 2024 15:18:24 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNwp6-00012v-1v; Thu, 11 Jan 2024 15:18:24 +0000
Received: by outflank-mailman (input) for mailman id 666353;
 Thu, 11 Jan 2024 15:18:23 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=YFj+=IV=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rNwp5-0000LM-26
 for xen-devel@lists.xenproject.org; Thu, 11 Jan 2024 15:18:23 +0000
Received: from mail-wm1-x331.google.com (mail-wm1-x331.google.com
 [2a00:1450:4864:20::331])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id a8335aa4-b094-11ee-98f0-6d05b1d4d9a1;
 Thu, 11 Jan 2024 16:18:22 +0100 (CET)
Received: by mail-wm1-x331.google.com with SMTP id
 5b1f17b1804b1-40e62979d41so2207175e9.2
 for <xen-devel@lists.xenproject.org>; Thu, 11 Jan 2024 07:18:22 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 fk10-20020a05600c0cca00b0040e5a0ebabesm4245126wmb.21.2024.01.11.07.18.21
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 11 Jan 2024 07:18:21 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: a8335aa4-b094-11ee-98f0-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1704986301; x=1705591101; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:references:cc:to
         :from:content-language:subject:user-agent:mime-version:date
         :message-id:from:to:cc:subject:date:message-id:reply-to;
        bh=HrHkDSKkd/RFXi3H4lhjscho8DAVe02PCLpAr/Vcyyw=;
        b=NX2hVRBV3cp9Hm7J/tt32m0BrG+J/qYNE5YUUFTNJkftVPbJtq2sFoTb+RJmnYL6mp
         dYCGc2Mzzzi2hJ9ZrTsKpvBquFd9nNViz3m0tjgKMjpd0ZqxpkCIIa0dvnYL55eDKh3L
         YbY5A2USHE3lyQvOwK4afEs2orvgdeKGTc1wbXASmuBu3mQhXyPa7cVMOEJDONSE0+Jh
         78XZ8eAv00igxtF3ZhV5IemJDY01vB/4GZEYvEPCM9t1iu9ucgME4cGbE9IxBTGzW8Ow
         Ju/Cx94zGjaoEJm3agLc3HXQNYUb6JK2UG1YsV/ONIc4cbFyMCzfXpscYzarMOlTf6Sx
         o/+w==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704986301; x=1705591101;
        h=content-transfer-encoding:in-reply-to:autocrypt:references:cc:to
         :from:content-language:subject:user-agent:mime-version:date
         :message-id:x-gm-message-state:from:to:cc:subject:date:message-id
         :reply-to;
        bh=HrHkDSKkd/RFXi3H4lhjscho8DAVe02PCLpAr/Vcyyw=;
        b=gv3/p0Fxwwg23gEn3g+7neB+/0WNqp9+ONayulqxLltaoSgg2+WGNIeDxDFHv9NPkD
         oZujIHsmU5UYYj+3rooKqPUrhYNtPZQdKy0paQOkyYHLuzuiBEMJWFG+dun0r1yXu7NH
         52Vyj75bDoe04HVFOqBOCP1WTz0UbZ6Xxsp0NgHwoi/Y/x+vrI8Wt25gjLEUYzXvosK3
         /fvXPGLnbLrno6tQjeYRxBwIjU7m9GecN8feTSVCR3CRsaASAjNBRORm/qtCHRQGXT2o
         J/lHXNKicZajPw2FuDCiufJZVXH6K53pOaYWed3pC7n4AGEEro+4h5x9Gf67gCM7VUxa
         22vw==
X-Gm-Message-State: AOJu0YwLHYe8fHKTESfgOUT1ibH/TEYMmIhCU6fvrNG6A4/fQitAikCx
	zGtH0H36Au6Yg1NdJfUAbi0vnym/AClctkwv2uGT8XsLQg==
X-Google-Smtp-Source: AGHT+IEYmb7cgh2VwvkhGx4h0hrOG6gmLcujMYIwkgkSSADnki9dhycNfbNFfN89l8rmd+dKdhbBrw==
X-Received: by 2002:a05:600c:4f07:b0:40e:50e7:db03 with SMTP id l7-20020a05600c4f0700b0040e50e7db03mr292519wmq.316.1704986301507;
        Thu, 11 Jan 2024 07:18:21 -0800 (PST)
Message-ID: <9e3a4d3c-38f3-4e73-8775-3252ca531f06@suse.com>
Date: Thu, 11 Jan 2024 16:18:21 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: [PATCH 2/8] x86emul/test: rename "cp"
Content-Language: en-US
From: Jan Beulich <jbeulich@suse.com>
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, Wei Liu <wl@xen.org>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
References: <298db76f-d0ee-4d47-931f-1baa1a7546cf@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <298db76f-d0ee-4d47-931f-1baa1a7546cf@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

In preparation of introducing a const struct cpu_policy * local in
x86_emulate(), rename that global variable to something more suitable:
"cp" is our commonly used name for function parameters or local
variables of type struct cpu_policy *, and the present name of the
global could hence have interfered already.

Signed-off-by: Jan Beulich <jbeulich@suse.com>

--- a/tools/fuzz/x86_instruction_emulator/fuzz-emul.c
+++ b/tools/fuzz/x86_instruction_emulator/fuzz-emul.c
@@ -899,7 +899,7 @@ int LLVMFuzzerTestOneInput(const uint8_t
     int rc;
 
     /* Not part of the initializer, for old gcc to cope. */
-    ctxt.cpu_policy = &cp;
+    ctxt.cpu_policy = &cpu_policy;
 
     /* Reset all global state variables */
     memset(&input, 0, sizeof(input));
--- a/tools/tests/x86_emulator/test_x86_emulator.c
+++ b/tools/tests/x86_emulator/test_x86_emulator.c
@@ -888,7 +888,8 @@ static void zap_fpsel(unsigned int *env,
         env[3] &= ~0xffff;
     }
 
-    if ( cp.x86_vendor != X86_VENDOR_AMD && cp.x86_vendor != X86_VENDOR_HYGON )
+    if ( cpu_policy.x86_vendor != X86_VENDOR_AMD &&
+         cpu_policy.x86_vendor != X86_VENDOR_HYGON )
         return;
 
     if ( is_32bit )
@@ -1022,7 +1023,7 @@ int main(int argc, char **argv)
 
     ctxt.regs = &regs;
     ctxt.force_writeback = 0;
-    ctxt.cpu_policy = &cp;
+    ctxt.cpu_policy = &cpu_policy;
     ctxt.lma       = sizeof(void *) == 8;
     ctxt.addr_size = 8 * sizeof(void *);
     ctxt.sp_size   = 8 * sizeof(void *);
@@ -1540,7 +1541,7 @@ int main(int argc, char **argv)
     regs.edx = (unsigned long)res;
     res[0]   = 0x00004444;
     res[1]   = 0x8888cccc;
-    i = cp.extd.nscb; cp.extd.nscb = true; /* for AMD */
+    i = cpu_policy.extd.nscb; cpu_policy.extd.nscb = true; /* for AMD */
     rc = x86_emulate(&ctxt, &emulops);
     if ( (rc != X86EMUL_OKAY) ||
          (regs.eip != (unsigned long)&instr[5]) ||
@@ -1549,7 +1550,7 @@ int main(int argc, char **argv)
         goto fail;
     printf("okay\n");
 
-    cp.extd.nscb = i;
+    cpu_policy.extd.nscb = i;
     emulops.write_segment = NULL;
 
     printf("%-40s", "Testing rdmsrlist...");
@@ -1803,11 +1804,11 @@ int main(int argc, char **argv)
         goto fail;
     printf("okay\n");
 
-    vendor_native = cp.x86_vendor;
-    for ( cp.x86_vendor = X86_VENDOR_AMD; ; )
+    vendor_native = cpu_policy.x86_vendor;
+    for ( cpu_policy.x86_vendor = X86_VENDOR_AMD; ; )
     {
-        unsigned int v = cp.x86_vendor == X86_VENDOR_INTEL;
-        const char *vendor = cp.x86_vendor == X86_VENDOR_INTEL ? "Intel" : "AMD";
+        unsigned int v = cpu_policy.x86_vendor == X86_VENDOR_INTEL;
+        const char *vendor = cpu_policy.x86_vendor == X86_VENDOR_INTEL ? "Intel" : "AMD";
         uint64_t *stk = (void *)res + MMAP_SZ - 16;
 
         regs.rcx = 2;
@@ -1843,11 +1844,11 @@ int main(int argc, char **argv)
             printf("okay\n");
         }
 
-        if ( cp.x86_vendor == X86_VENDOR_INTEL )
+        if ( cpu_policy.x86_vendor == X86_VENDOR_INTEL )
             break;
-        cp.x86_vendor = X86_VENDOR_INTEL;
+        cpu_policy.x86_vendor = X86_VENDOR_INTEL;
     }
-    cp.x86_vendor = vendor_native;
+    cpu_policy.x86_vendor = vendor_native;
 #endif /* x86-64 */
 
     printf("%-40s", "Testing shld $1,%ecx,(%edx)...");
--- a/tools/tests/x86_emulator/x86-emulate.c
+++ b/tools/tests/x86_emulator/x86-emulate.c
@@ -25,7 +25,7 @@
 #endif
 
 uint32_t mxcsr_mask = 0x0000ffbf;
-struct cpu_policy cp;
+struct cpu_policy cpu_policy;
 
 static char fpu_save_area[0x4000] __attribute__((__aligned__((64))));
 static bool use_xsave;
@@ -75,24 +75,24 @@ bool emul_test_init(void)
 
     unsigned long sp;
 
-    x86_cpu_policy_fill_native(&cp);
-    x86_cpu_policy_bound_max_leaves(&cp);
+    x86_cpu_policy_fill_native(&cpu_policy);
+    x86_cpu_policy_bound_max_leaves(&cpu_policy);
 
     /*
      * The emulator doesn't use these instructions, so can always emulate
      * them.
      */
-    cp.basic.movbe = true;
-    cp.feat.invpcid = true;
-    cp.feat.adx = true;
-    cp.feat.avx512pf = cp.feat.avx512f;
-    cp.feat.rdpid = true;
-    cp.feat.lkgs = true;
-    cp.feat.wrmsrns = true;
-    cp.feat.msrlist = true;
-    cp.extd.clzero = true;
+    cpu_policy.basic.movbe = true;
+    cpu_policy.feat.invpcid = true;
+    cpu_policy.feat.adx = true;
+    cpu_policy.feat.avx512pf = cpu_policy.feat.avx512f;
+    cpu_policy.feat.rdpid = true;
+    cpu_policy.feat.lkgs = true;
+    cpu_policy.feat.wrmsrns = true;
+    cpu_policy.feat.msrlist = true;
+    cpu_policy.extd.clzero = true;
 
-    x86_cpu_policy_shrink_max_leaves(&cp);
+    x86_cpu_policy_shrink_max_leaves(&cpu_policy);
 
     if ( cpu_has_xsave )
     {
--- a/tools/tests/x86_emulator/x86-emulate.h
+++ b/tools/tests/x86_emulator/x86-emulate.h
@@ -69,7 +69,7 @@
 #define is_canonical_address(x) (((int64_t)(x) >> 47) == ((int64_t)(x) >> 63))
 
 extern uint32_t mxcsr_mask;
-extern struct cpu_policy cp;
+extern struct cpu_policy cpu_policy;
 
 #define MMAP_SZ 16384
 bool emul_test_init(void);
@@ -123,7 +123,7 @@ static inline uint64_t xgetbv(uint32_t x
 }
 
 /* Intentionally checking OSXSAVE here. */
-#define cpu_has_xsave     (cp.basic.raw[1].c & (1u << 27))
+#define cpu_has_xsave     (cpu_policy.basic.raw[1].c & (1u << 27))
 
 static inline bool xcr0_mask(uint64_t mask)
 {
@@ -133,67 +133,67 @@ static inline bool xcr0_mask(uint64_t ma
 unsigned int rdpkru(void);
 void wrpkru(unsigned int val);
 
-#define cache_line_size() (cp.basic.clflush_size * 8)
-#define cpu_has_fpu        cp.basic.fpu
-#define cpu_has_mmx        cp.basic.mmx
-#define cpu_has_fxsr       cp.basic.fxsr
-#define cpu_has_sse        cp.basic.sse
-#define cpu_has_sse2       cp.basic.sse2
-#define cpu_has_sse3       cp.basic.sse3
-#define cpu_has_pclmulqdq  cp.basic.pclmulqdq
-#define cpu_has_ssse3      cp.basic.ssse3
-#define cpu_has_fma       (cp.basic.fma && xcr0_mask(6))
-#define cpu_has_sse4_1     cp.basic.sse4_1
-#define cpu_has_sse4_2     cp.basic.sse4_2
-#define cpu_has_popcnt     cp.basic.popcnt
-#define cpu_has_aesni      cp.basic.aesni
-#define cpu_has_avx       (cp.basic.avx  && xcr0_mask(6))
-#define cpu_has_f16c      (cp.basic.f16c && xcr0_mask(6))
-
-#define cpu_has_avx2      (cp.feat.avx2 && xcr0_mask(6))
-#define cpu_has_bmi1       cp.feat.bmi1
-#define cpu_has_bmi2       cp.feat.bmi2
-#define cpu_has_avx512f   (cp.feat.avx512f  && xcr0_mask(0xe6))
-#define cpu_has_avx512dq  (cp.feat.avx512dq && xcr0_mask(0xe6))
-#define cpu_has_avx512_ifma (cp.feat.avx512_ifma && xcr0_mask(0xe6))
-#define cpu_has_avx512er  (cp.feat.avx512er && xcr0_mask(0xe6))
-#define cpu_has_avx512cd  (cp.feat.avx512cd && xcr0_mask(0xe6))
-#define cpu_has_sha        cp.feat.sha
-#define cpu_has_avx512bw  (cp.feat.avx512bw && xcr0_mask(0xe6))
-#define cpu_has_avx512vl  (cp.feat.avx512vl && xcr0_mask(0xe6))
-#define cpu_has_avx512_vbmi (cp.feat.avx512_vbmi && xcr0_mask(0xe6))
-#define cpu_has_avx512_vbmi2 (cp.feat.avx512_vbmi2 && xcr0_mask(0xe6))
-#define cpu_has_gfni       cp.feat.gfni
-#define cpu_has_vaes      (cp.feat.vaes && xcr0_mask(6))
-#define cpu_has_vpclmulqdq (cp.feat.vpclmulqdq && xcr0_mask(6))
-#define cpu_has_avx512_vnni (cp.feat.avx512_vnni && xcr0_mask(0xe6))
-#define cpu_has_avx512_bitalg (cp.feat.avx512_bitalg && xcr0_mask(0xe6))
-#define cpu_has_avx512_vpopcntdq (cp.feat.avx512_vpopcntdq && xcr0_mask(0xe6))
-#define cpu_has_movdiri    cp.feat.movdiri
-#define cpu_has_movdir64b  cp.feat.movdir64b
-#define cpu_has_avx512_4vnniw (cp.feat.avx512_4vnniw && xcr0_mask(0xe6))
-#define cpu_has_avx512_4fmaps (cp.feat.avx512_4fmaps && xcr0_mask(0xe6))
-#define cpu_has_avx512_vp2intersect (cp.feat.avx512_vp2intersect && xcr0_mask(0xe6))
-#define cpu_has_serialize  cp.feat.serialize
-#define cpu_has_avx512_fp16 (cp.feat.avx512_fp16 && xcr0_mask(0xe6))
-#define cpu_has_sha512     (cp.feat.sha512 && xcr0_mask(6))
-#define cpu_has_sm3        (cp.feat.sm3 && xcr0_mask(6))
-#define cpu_has_sm4        (cp.feat.sm4 && xcr0_mask(6))
-#define cpu_has_avx_vnni   (cp.feat.avx_vnni && xcr0_mask(6))
-#define cpu_has_avx512_bf16 (cp.feat.avx512_bf16 && xcr0_mask(0xe6))
-#define cpu_has_cmpccxadd  cp.feat.cmpccxadd
-#define cpu_has_avx_ifma   (cp.feat.avx_ifma && xcr0_mask(6))
-#define cpu_has_avx_vnni_int8 (cp.feat.avx_vnni_int8 && xcr0_mask(6))
-#define cpu_has_avx_ne_convert (cp.feat.avx_ne_convert && xcr0_mask(6))
-#define cpu_has_avx_vnni_int16 (cp.feat.avx_vnni_int16 && xcr0_mask(6))
-
-#define cpu_has_xgetbv1   (cpu_has_xsave && cp.xstate.xgetbv1)
-
-#define cpu_has_3dnow_ext  cp.extd._3dnowext
-#define cpu_has_sse4a      cp.extd.sse4a
-#define cpu_has_xop       (cp.extd.xop  && xcr0_mask(6))
-#define cpu_has_fma4      (cp.extd.fma4 && xcr0_mask(6))
-#define cpu_has_tbm        cp.extd.tbm
+#define cache_line_size() (cpu_policy.basic.clflush_size * 8)
+#define cpu_has_fpu        cpu_policy.basic.fpu
+#define cpu_has_mmx        cpu_policy.basic.mmx
+#define cpu_has_fxsr       cpu_policy.basic.fxsr
+#define cpu_has_sse        cpu_policy.basic.sse
+#define cpu_has_sse2       cpu_policy.basic.sse2
+#define cpu_has_sse3       cpu_policy.basic.sse3
+#define cpu_has_pclmulqdq  cpu_policy.basic.pclmulqdq
+#define cpu_has_ssse3      cpu_policy.basic.ssse3
+#define cpu_has_fma       (cpu_policy.basic.fma && xcr0_mask(6))
+#define cpu_has_sse4_1     cpu_policy.basic.sse4_1
+#define cpu_has_sse4_2     cpu_policy.basic.sse4_2
+#define cpu_has_popcnt     cpu_policy.basic.popcnt
+#define cpu_has_aesni      cpu_policy.basic.aesni
+#define cpu_has_avx       (cpu_policy.basic.avx  && xcr0_mask(6))
+#define cpu_has_f16c      (cpu_policy.basic.f16c && xcr0_mask(6))
+
+#define cpu_has_avx2      (cpu_policy.feat.avx2 && xcr0_mask(6))
+#define cpu_has_bmi1       cpu_policy.feat.bmi1
+#define cpu_has_bmi2       cpu_policy.feat.bmi2
+#define cpu_has_avx512f   (cpu_policy.feat.avx512f  && xcr0_mask(0xe6))
+#define cpu_has_avx512dq  (cpu_policy.feat.avx512dq && xcr0_mask(0xe6))
+#define cpu_has_avx512_ifma (cpu_policy.feat.avx512_ifma && xcr0_mask(0xe6))
+#define cpu_has_avx512er  (cpu_policy.feat.avx512er && xcr0_mask(0xe6))
+#define cpu_has_avx512cd  (cpu_policy.feat.avx512cd && xcr0_mask(0xe6))
+#define cpu_has_sha        cpu_policy.feat.sha
+#define cpu_has_avx512bw  (cpu_policy.feat.avx512bw && xcr0_mask(0xe6))
+#define cpu_has_avx512vl  (cpu_policy.feat.avx512vl && xcr0_mask(0xe6))
+#define cpu_has_avx512_vbmi (cpu_policy.feat.avx512_vbmi && xcr0_mask(0xe6))
+#define cpu_has_avx512_vbmi2 (cpu_policy.feat.avx512_vbmi2 && xcr0_mask(0xe6))
+#define cpu_has_gfni       cpu_policy.feat.gfni
+#define cpu_has_vaes      (cpu_policy.feat.vaes && xcr0_mask(6))
+#define cpu_has_vpclmulqdq (cpu_policy.feat.vpclmulqdq && xcr0_mask(6))
+#define cpu_has_avx512_vnni (cpu_policy.feat.avx512_vnni && xcr0_mask(0xe6))
+#define cpu_has_avx512_bitalg (cpu_policy.feat.avx512_bitalg && xcr0_mask(0xe6))
+#define cpu_has_avx512_vpopcntdq (cpu_policy.feat.avx512_vpopcntdq && xcr0_mask(0xe6))
+#define cpu_has_movdiri    cpu_policy.feat.movdiri
+#define cpu_has_movdir64b  cpu_policy.feat.movdir64b
+#define cpu_has_avx512_4vnniw (cpu_policy.feat.avx512_4vnniw && xcr0_mask(0xe6))
+#define cpu_has_avx512_4fmaps (cpu_policy.feat.avx512_4fmaps && xcr0_mask(0xe6))
+#define cpu_has_avx512_vp2intersect (cpu_policy.feat.avx512_vp2intersect && xcr0_mask(0xe6))
+#define cpu_has_serialize  cpu_policy.feat.serialize
+#define cpu_has_avx512_fp16 (cpu_policy.feat.avx512_fp16 && xcr0_mask(0xe6))
+#define cpu_has_sha512     (cpu_policy.feat.sha512 && xcr0_mask(6))
+#define cpu_has_sm3        (cpu_policy.feat.sm3 && xcr0_mask(6))
+#define cpu_has_sm4        (cpu_policy.feat.sm4 && xcr0_mask(6))
+#define cpu_has_avx_vnni   (cpu_policy.feat.avx_vnni && xcr0_mask(6))
+#define cpu_has_avx512_bf16 (cpu_policy.feat.avx512_bf16 && xcr0_mask(0xe6))
+#define cpu_has_cmpccxadd  cpu_policy.feat.cmpccxadd
+#define cpu_has_avx_ifma   (cpu_policy.feat.avx_ifma && xcr0_mask(6))
+#define cpu_has_avx_vnni_int8 (cpu_policy.feat.avx_vnni_int8 && xcr0_mask(6))
+#define cpu_has_avx_ne_convert (cpu_policy.feat.avx_ne_convert && xcr0_mask(6))
+#define cpu_has_avx_vnni_int16 (cpu_policy.feat.avx_vnni_int16 && xcr0_mask(6))
+
+#define cpu_has_xgetbv1   (cpu_has_xsave && cpu_policy.xstate.xgetbv1)
+
+#define cpu_has_3dnow_ext  cpu_policy.extd._3dnowext
+#define cpu_has_sse4a      cpu_policy.extd.sse4a
+#define cpu_has_xop       (cpu_policy.extd.xop  && xcr0_mask(6))
+#define cpu_has_fma4      (cpu_policy.extd.fma4 && xcr0_mask(6))
+#define cpu_has_tbm        cpu_policy.extd.tbm
 
 int emul_test_cpuid(
     uint32_t leaf,



From xen-devel-bounces@lists.xenproject.org Thu Jan 11 15:18:43 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 11 Jan 2024 15:18:43 +0000
Received: from list by lists.xenproject.org with outflank-mailman.666355.1036933 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNwpP-0001UE-CT; Thu, 11 Jan 2024 15:18:43 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 666355.1036933; Thu, 11 Jan 2024 15:18:43 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNwpP-0001U4-8w; Thu, 11 Jan 2024 15:18:43 +0000
Received: by outflank-mailman (input) for mailman id 666355;
 Thu, 11 Jan 2024 15:18:41 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=YFj+=IV=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rNwpN-00010p-M0
 for xen-devel@lists.xenproject.org; Thu, 11 Jan 2024 15:18:41 +0000
Received: from mail-wm1-x333.google.com (mail-wm1-x333.google.com
 [2a00:1450:4864:20::333])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id b2e71d70-b094-11ee-9b0f-b553b5be7939;
 Thu, 11 Jan 2024 16:18:40 +0100 (CET)
Received: by mail-wm1-x333.google.com with SMTP id
 5b1f17b1804b1-40e60e13581so6505105e9.1
 for <xen-devel@lists.xenproject.org>; Thu, 11 Jan 2024 07:18:40 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 fk10-20020a05600c0cca00b0040e5a0ebabesm4245126wmb.21.2024.01.11.07.18.39
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 11 Jan 2024 07:18:39 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: b2e71d70-b094-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1704986319; x=1705591119; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:references:cc:to
         :from:content-language:subject:user-agent:mime-version:date
         :message-id:from:to:cc:subject:date:message-id:reply-to;
        bh=ZjrQZ+IsckY64cqqmSStJXkQHtykH9VZpf2XCjIzkIA=;
        b=CneTUkdXxQdbklwimgJ6Dx9rH3GzcGWr3MLoHJR4AcJY4WKrvnYC5eGapz38OO0jhy
         hLI/nOkr+4V2r6sPeZFayNHZWGvLz7NtUXTiVA93tHsMmFiBLfuoMfEiRpZVtXeuIduj
         aUSoPRi9b6HbwGVTgXhET9wNXGXrZ07H/cOdQYntrmpH/WVLiifXdN2R6TXSclrKYuZ6
         TJ7GqONYB9GvDSXf0D2eqd+2hMWIfV8T5jXf5vH4lnM3PREUw9cQCNMn0g4Hfm5/1E2j
         Eo8Uw2Tb2DGbE6H9bcbhTwy6J9PJZIGP5L0bdrCwny8S5gSsFwrL+e6owO9i5s3N+IuO
         hLjw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704986319; x=1705591119;
        h=content-transfer-encoding:in-reply-to:autocrypt:references:cc:to
         :from:content-language:subject:user-agent:mime-version:date
         :message-id:x-gm-message-state:from:to:cc:subject:date:message-id
         :reply-to;
        bh=ZjrQZ+IsckY64cqqmSStJXkQHtykH9VZpf2XCjIzkIA=;
        b=NVaWSq498hrVHSf8doEpK4YETbQ9JG0+nbsYjexXI5CIiauzxJSKEHwzpy0qRQ/JaO
         say2VtTyIifn73Dt322h2mkMMigQXA5SHcIaq/Vx09tR2WkNOQE0CCfxq0tePqBO8ZR0
         M6FAisUPXePBiS1qk+/hS3Ja4KEpe/pXQS2gUUr8+LBMLQzK14UhF2mPCPdZC/rHhBsK
         iCGhWHBFI2EbDcLtanRe+bSvmLJdg4gvJnZq+FOYDo7R7+DnMclS9+DWeXPVkvYeham7
         vVZWzPDUybkjHD5uoQiS/NuwUfx+MhJYlYOHA/zbNheVeAYw51wY6vYe8uDtyeS7O4DP
         spwA==
X-Gm-Message-State: AOJu0YwbcGLOVU6hTZuUOziDm1cPxmfPHqd8MLOjgplImYubdjMiCYY6
	dzaIZlF30/PzgPKJHYOR7pimoEEzWsd5Ng4QkZYb3kkfoQ==
X-Google-Smtp-Source: AGHT+IFnImThCFYnDpLJSki0WavUX80bj8tvpqx7CELtzlxY1WQPu8e5QS3K0/ytcyW5rpNpx5vvCw==
X-Received: by 2002:a05:600c:470b:b0:40e:629a:b7c9 with SMTP id v11-20020a05600c470b00b0040e629ab7c9mr112013wmo.40.1704986319541;
        Thu, 11 Jan 2024 07:18:39 -0800 (PST)
Message-ID: <9a491a5e-1ba4-4e72-a341-c05ed1f1e9f0@suse.com>
Date: Thu, 11 Jan 2024 16:18:39 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: [PATCH 3/8] x86emul: introduce a struct cpu_policy * local in
 x86_emulate()
Content-Language: en-US
From: Jan Beulich <jbeulich@suse.com>
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, Wei Liu <wl@xen.org>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
References: <298db76f-d0ee-4d47-931f-1baa1a7546cf@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <298db76f-d0ee-4d47-931f-1baa1a7546cf@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

While of little effect right here, future patches (AVX10, AMX,
KeyLocker) will benefit more significantly.

Signed-off-by: Jan Beulich <jbeulich@suse.com>

--- a/xen/arch/x86/x86_emulate/x86_emulate.c
+++ b/xen/arch/x86/x86_emulate/x86_emulate.c
@@ -1232,6 +1232,7 @@ x86_emulate(
 {
     /* Shadow copy of register state. Committed on successful emulation. */
     struct cpu_user_regs _regs = *ctxt->regs;
+    const struct cpu_policy *cp = ctxt->cpu_policy;
     struct x86_emulate_state state;
     int rc;
     uint8_t b, d, *opc = NULL;
@@ -3101,7 +3102,7 @@ x86_emulate(
          * in fact risking to make guest OSes vulnerable to the equivalent of
          * XSA-7 (CVE-2012-0217).
          */
-        generate_exception_if(ctxt->cpuid->x86_vendor == X86_VENDOR_INTEL &&
+        generate_exception_if(cp->x86_vendor == X86_VENDOR_INTEL &&
                               op_bytes == 8 && !is_canonical_address(_regs.rcx),
                               X86_EXC_GP, 0);
 #endif



From xen-devel-bounces@lists.xenproject.org Thu Jan 11 15:19:37 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 11 Jan 2024 15:19:37 +0000
Received: from list by lists.xenproject.org with outflank-mailman.666359.1036942 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNwqG-00026O-LN; Thu, 11 Jan 2024 15:19:36 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 666359.1036942; Thu, 11 Jan 2024 15:19:36 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNwqG-00026H-IY; Thu, 11 Jan 2024 15:19:36 +0000
Received: by outflank-mailman (input) for mailman id 666359;
 Thu, 11 Jan 2024 15:19:35 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=YFj+=IV=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rNwqF-000262-BS
 for xen-devel@lists.xenproject.org; Thu, 11 Jan 2024 15:19:35 +0000
Received: from mail-wm1-x32b.google.com (mail-wm1-x32b.google.com
 [2a00:1450:4864:20::32b])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id d21e50e1-b094-11ee-9b0f-b553b5be7939;
 Thu, 11 Jan 2024 16:19:32 +0100 (CET)
Received: by mail-wm1-x32b.google.com with SMTP id
 5b1f17b1804b1-40e5f746ac4so8728675e9.1
 for <xen-devel@lists.xenproject.org>; Thu, 11 Jan 2024 07:19:32 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 fk10-20020a05600c0cca00b0040e5a0ebabesm4245126wmb.21.2024.01.11.07.19.31
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 11 Jan 2024 07:19:31 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: d21e50e1-b094-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1704986372; x=1705591172; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:references:cc:to
         :from:content-language:subject:user-agent:mime-version:date
         :message-id:from:to:cc:subject:date:message-id:reply-to;
        bh=iLAsDjDx3KHcDn4LadRWIqxkpK4/Gwrx0sSyUHW5eu8=;
        b=PfPziIDepPtDD0FJmNLpCGy2pMLbu6AcE/F8SdUSr30QjhTYb9EJMzGg5ydo4DWUHi
         qnSN8ErcwDZVNppM0hG2wUT3t+D4QPSxAfGXV6+SK0I3ppMI1eZwnJ+Q7ZowO+XvkdpY
         oxSKM6zn6NrHyfv0QmW5yeNWoYI3dXBIOr3mSpRtGc5LN3c1Nd4k0vRyUxGpAeAiu5Qu
         REI2+/+nGklLryVYw2HA2ZnyL7D00yL5cBDBdzvV4FjJfGKBfvmUDnZDynlOq8WsIhiZ
         XY9b2AccOvS1Y5jxnp5E/Uo+IcLuGwR3xtbpomsuu/LI52gnvdqWrB58kTn9qiiKAHK6
         fuIQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704986372; x=1705591172;
        h=content-transfer-encoding:in-reply-to:autocrypt:references:cc:to
         :from:content-language:subject:user-agent:mime-version:date
         :message-id:x-gm-message-state:from:to:cc:subject:date:message-id
         :reply-to;
        bh=iLAsDjDx3KHcDn4LadRWIqxkpK4/Gwrx0sSyUHW5eu8=;
        b=Ax28BJeXlPQFZyZD1NzWhqdiFo1f4jePLfORC4emWK2RVrQtUHEOo6pRJvz+FK9bNY
         rrGPl0FeVnuP3t3M5Qyh5lx4pF3ibm8EZTIVcOloIlT2vG7zSgLYe2nzYXG5HJhn5LoC
         IDi0pxPvMuH7wxlgBzJ5+xlwAz3fKzVTE52gspgBYjo1Dxa2ZUwd+mvtAQak3i4Guxpj
         IgAqUosvWTUf5ME7kodvbokFFexE0Ge1kBVRDM+kbXw6hr/M71dDCJOXgRlXn9NuNjar
         yengbSLBk2sh83yEsJw+nXRtij6S2MDPTIc11cXGHyOJj0+vM9mNyGHChDFdiso8pQ0a
         kfTA==
X-Gm-Message-State: AOJu0YxqoW5jyQANw7MRzNBrNbYeKEGGKDZHBIA4aOkH3Xx7kVrlSdmA
	IyivntneAusoF5sTcXxs4p0SYJfcWJOjif92uArnt9xxQQ==
X-Google-Smtp-Source: AGHT+IF19Ju8s0TvKjRZHkOR50UcUaQcHzdvU7eL8u2aCeDA6u2LneJRh75ZUagI8H9nhZ4fHy0fZA==
X-Received: by 2002:a05:600c:a44:b0:40d:60c3:3d53 with SMTP id c4-20020a05600c0a4400b0040d60c33d53mr561022wmq.103.1704986371620;
        Thu, 11 Jan 2024 07:19:31 -0800 (PST)
Message-ID: <b4562cfe-10e1-46f2-81f6-193768c32bc7@suse.com>
Date: Thu, 11 Jan 2024 16:19:31 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: [PATCH 4/8] x86emul: support AVX10.1
Content-Language: en-US
From: Jan Beulich <jbeulich@suse.com>
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, Wei Liu <wl@xen.org>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
References: <298db76f-d0ee-4d47-931f-1baa1a7546cf@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <298db76f-d0ee-4d47-931f-1baa1a7546cf@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

This requires relaxing various pre-existing AVX512* checks, as AVX10.1
covers all AVX512* except except PF, ER, 4FMAPS, 4VNNIW, and
VP2INTERSECT. Yet potentially with only less than 512-bit vector width,
while otoh guaranteeing more narrow widths being available when wider
are (i.e. unlike AVX512VL being an add-on feature on top of AVX512F).

Note that visa_check(), replacing host_and_vcpu_must_have() uses, checks
only the guest capability: We wouldn't expose AVX512* (nor AVX10)
without the hardware supporting it. Similarly in vlen_check() the
original host_and_vcpu_must_have() is reduced to the equivalent of just
vcpu_must_have(). This also simplifies (resulting) code in the test and
fuzzing harnesses, as there the XCR0 checks that are part of
cpu_has_avx512* are only needed in local code, not in the emulator
itself (where respective checking occurs elsewhere anyway, utilizing
emul_test_read_xcr()).

While in most cases the changes to x86_emulate() are entirely
mechanical, for opmask insns earlier unconditional AVX512F checks are
converted into "else" clauses to existing if/else-if ones.

To be certain that no uses remain, also drop respective cpu_has_avx512*
(except in the test harness) and vcpu_has_avx512*().

Signed-off-by: Jan Beulich <jbeulich@suse.com>
---
Probably avx512_vlen_check() should have the avx512_ prefix dropped, now
that it also covers AVX10. But if so that wants to be either a prereq or
a follow-on patch.

visa_check() won't cover AVX10.2 and higher, but probably we will want
independent checking logic for that anyway.

Spec version 2 still leaves unclear what the xstate components are which
would need enabling for AVX10/256. x86emul_get_fpu() is therefore
untouched for now.

Since it'll be reducing code size, we may want to further convert
host_and_vcpu_must_have() to just vcpu_must_have() where appropriate
(should be [almost?] everywhere).

--- a/xen/arch/x86/include/asm/cpufeature.h
+++ b/xen/arch/x86/include/asm/cpufeature.h
@@ -132,30 +132,19 @@ static inline bool boot_cpu_has(unsigned
 #define cpu_has_pqe             boot_cpu_has(X86_FEATURE_PQE)
 #define cpu_has_fpu_sel         (!boot_cpu_has(X86_FEATURE_NO_FPU_SEL))
 #define cpu_has_mpx             boot_cpu_has(X86_FEATURE_MPX)
-#define cpu_has_avx512f         boot_cpu_has(X86_FEATURE_AVX512F)
-#define cpu_has_avx512dq        boot_cpu_has(X86_FEATURE_AVX512DQ)
 #define cpu_has_rdseed          boot_cpu_has(X86_FEATURE_RDSEED)
 #define cpu_has_smap            boot_cpu_has(X86_FEATURE_SMAP)
-#define cpu_has_avx512_ifma     boot_cpu_has(X86_FEATURE_AVX512_IFMA)
 #define cpu_has_clflushopt      boot_cpu_has(X86_FEATURE_CLFLUSHOPT)
 #define cpu_has_clwb            boot_cpu_has(X86_FEATURE_CLWB)
 #define cpu_has_avx512er        boot_cpu_has(X86_FEATURE_AVX512ER)
-#define cpu_has_avx512cd        boot_cpu_has(X86_FEATURE_AVX512CD)
 #define cpu_has_proc_trace      boot_cpu_has(X86_FEATURE_PROC_TRACE)
 #define cpu_has_sha             boot_cpu_has(X86_FEATURE_SHA)
-#define cpu_has_avx512bw        boot_cpu_has(X86_FEATURE_AVX512BW)
-#define cpu_has_avx512vl        boot_cpu_has(X86_FEATURE_AVX512VL)
 
 /* CPUID level 0x00000007:0.ecx */
-#define cpu_has_avx512_vbmi     boot_cpu_has(X86_FEATURE_AVX512_VBMI)
 #define cpu_has_pku             boot_cpu_has(X86_FEATURE_PKU)
-#define cpu_has_avx512_vbmi2    boot_cpu_has(X86_FEATURE_AVX512_VBMI2)
 #define cpu_has_gfni            boot_cpu_has(X86_FEATURE_GFNI)
 #define cpu_has_vaes            boot_cpu_has(X86_FEATURE_VAES)
 #define cpu_has_vpclmulqdq      boot_cpu_has(X86_FEATURE_VPCLMULQDQ)
-#define cpu_has_avx512_vnni     boot_cpu_has(X86_FEATURE_AVX512_VNNI)
-#define cpu_has_avx512_bitalg   boot_cpu_has(X86_FEATURE_AVX512_BITALG)
-#define cpu_has_avx512_vpopcntdq boot_cpu_has(X86_FEATURE_AVX512_VPOPCNTDQ)
 #define cpu_has_rdpid           boot_cpu_has(X86_FEATURE_RDPID)
 #define cpu_has_movdiri         boot_cpu_has(X86_FEATURE_MOVDIRI)
 #define cpu_has_movdir64b       boot_cpu_has(X86_FEATURE_MOVDIR64B)
@@ -180,7 +169,6 @@ static inline bool boot_cpu_has(unsigned
 #define cpu_has_rtm_always_abort boot_cpu_has(X86_FEATURE_RTM_ALWAYS_ABORT)
 #define cpu_has_tsx_force_abort boot_cpu_has(X86_FEATURE_TSX_FORCE_ABORT)
 #define cpu_has_serialize       boot_cpu_has(X86_FEATURE_SERIALIZE)
-#define cpu_has_avx512_fp16     boot_cpu_has(X86_FEATURE_AVX512_FP16)
 #define cpu_has_arch_caps       boot_cpu_has(X86_FEATURE_ARCH_CAPS)
 
 /* CPUID level 0x00000007:1.eax */
@@ -188,7 +176,6 @@ static inline bool boot_cpu_has(unsigned
 #define cpu_has_sm3             boot_cpu_has(X86_FEATURE_SM3)
 #define cpu_has_sm4             boot_cpu_has(X86_FEATURE_SM4)
 #define cpu_has_avx_vnni        boot_cpu_has(X86_FEATURE_AVX_VNNI)
-#define cpu_has_avx512_bf16     boot_cpu_has(X86_FEATURE_AVX512_BF16)
 #define cpu_has_cmpccxadd       boot_cpu_has(X86_FEATURE_CMPCCXADD)
 #define cpu_has_avx_ifma        boot_cpu_has(X86_FEATURE_AVX_IFMA)
 
--- a/xen/arch/x86/x86_emulate/private.h
+++ b/xen/arch/x86/x86_emulate/private.h
@@ -558,28 +558,17 @@ amd_like(const struct x86_emulate_ctxt *
 #define vcpu_has_invpcid()     (ctxt->cpuid->feat.invpcid)
 #define vcpu_has_rtm()         (ctxt->cpuid->feat.rtm)
 #define vcpu_has_mpx()         (ctxt->cpuid->feat.mpx)
-#define vcpu_has_avx512f()     (ctxt->cpuid->feat.avx512f)
-#define vcpu_has_avx512dq()    (ctxt->cpuid->feat.avx512dq)
 #define vcpu_has_rdseed()      (ctxt->cpuid->feat.rdseed)
 #define vcpu_has_adx()         (ctxt->cpuid->feat.adx)
 #define vcpu_has_smap()        (ctxt->cpuid->feat.smap)
-#define vcpu_has_avx512_ifma() (ctxt->cpuid->feat.avx512_ifma)
 #define vcpu_has_clflushopt()  (ctxt->cpuid->feat.clflushopt)
 #define vcpu_has_clwb()        (ctxt->cpuid->feat.clwb)
 #define vcpu_has_avx512pf()    (ctxt->cpuid->feat.avx512pf)
 #define vcpu_has_avx512er()    (ctxt->cpuid->feat.avx512er)
-#define vcpu_has_avx512cd()    (ctxt->cpuid->feat.avx512cd)
 #define vcpu_has_sha()         (ctxt->cpuid->feat.sha)
-#define vcpu_has_avx512bw()    (ctxt->cpuid->feat.avx512bw)
-#define vcpu_has_avx512vl()    (ctxt->cpuid->feat.avx512vl)
-#define vcpu_has_avx512_vbmi() (ctxt->cpuid->feat.avx512_vbmi)
-#define vcpu_has_avx512_vbmi2() (ctxt->cpuid->feat.avx512_vbmi2)
 #define vcpu_has_gfni()        (ctxt->cpuid->feat.gfni)
 #define vcpu_has_vaes()        (ctxt->cpuid->feat.vaes)
 #define vcpu_has_vpclmulqdq()  (ctxt->cpuid->feat.vpclmulqdq)
-#define vcpu_has_avx512_vnni() (ctxt->cpuid->feat.avx512_vnni)
-#define vcpu_has_avx512_bitalg() (ctxt->cpuid->feat.avx512_bitalg)
-#define vcpu_has_avx512_vpopcntdq() (ctxt->cpuid->feat.avx512_vpopcntdq)
 #define vcpu_has_rdpid()       (ctxt->cpuid->feat.rdpid)
 #define vcpu_has_movdiri()     (ctxt->cpuid->feat.movdiri)
 #define vcpu_has_movdir64b()   (ctxt->cpuid->feat.movdir64b)
@@ -589,12 +578,10 @@ amd_like(const struct x86_emulate_ctxt *
 #define vcpu_has_avx512_vp2intersect() (ctxt->cpuid->feat.avx512_vp2intersect)
 #define vcpu_has_serialize()   (ctxt->cpuid->feat.serialize)
 #define vcpu_has_tsxldtrk()    (ctxt->cpuid->feat.tsxldtrk)
-#define vcpu_has_avx512_fp16() (ctxt->cpuid->feat.avx512_fp16)
 #define vcpu_has_sha512()      (ctxt->cpuid->feat.sha512)
 #define vcpu_has_sm3()         (ctxt->cpuid->feat.sm3)
 #define vcpu_has_sm4()         (ctxt->cpuid->feat.sm4)
 #define vcpu_has_avx_vnni()    (ctxt->cpuid->feat.avx_vnni)
-#define vcpu_has_avx512_bf16() (ctxt->cpuid->feat.avx512_bf16)
 #define vcpu_has_cmpccxadd()   (ctxt->cpuid->feat.cmpccxadd)
 #define vcpu_has_lkgs()        (ctxt->cpuid->feat.lkgs)
 #define vcpu_has_wrmsrns()     (ctxt->cpuid->feat.wrmsrns)
--- a/xen/arch/x86/x86_emulate/x86_emulate.c
+++ b/xen/arch/x86/x86_emulate/x86_emulate.c
@@ -1125,19 +1125,43 @@ static unsigned long *decode_vex_gpr(
     return decode_gpr(regs, ~vex_reg & (mode_64bit() ? 0xf : 7));
 }
 
-#define avx512_vlen_check(lig) do { \
-    switch ( evex.lr ) \
-    { \
-    default: \
-        generate_exception(X86_EXC_UD); \
-    case 2: \
-        break; \
-    case 0: case 1: \
-        if ( !(lig) ) \
-            host_and_vcpu_must_have(avx512vl); \
-        break; \
-    } \
-} while ( false )
+#define visa_check(subfeat) \
+        generate_exception_if(!cp->feat.avx512 ## subfeat && !cp->feat.avx10, \
+                              X86_EXC_UD)
+
+static bool _vlen_check(
+    const struct x86_emulate_state *s,
+    const struct cpu_policy *cp,
+    bool lig)
+{
+    if ( s->evex.lr > 2 )
+        return false;
+
+    if ( lig )
+        return true;
+
+    if ( cp->feat.avx10 )
+        switch ( s->evex.lr )
+        {
+        case 0:
+            if ( cp->avx10.vsz128 )
+                return true;
+            /* fall through */
+        case 1:
+            if ( cp->avx10.vsz256 )
+                return true;
+            /* fall through */
+        case 2:
+            if ( cp->avx10.vsz512 )
+                return true;
+            break;
+        }
+
+    return s->evex.lr == 2 || cp->feat.avx512vl;
+}
+
+#define avx512_vlen_check(lig) \
+        generate_exception_if(!_vlen_check(state, cp, lig), X86_EXC_UD)
 
 static bool is_branch_step(struct x86_emulate_ctxt *ctxt,
                            const struct x86_emulate_ops *ops)
@@ -1369,7 +1393,9 @@ x86_emulate(
         /* KMOV{W,Q} %k<n>, (%rax) */
         stb[0] = 0xc4;
         stb[1] = 0xe1;
-        stb[2] = cpu_has_avx512bw ? 0xf8 : 0x78;
+        stb[2] = cp->feat.avx512bw || cp->feat.avx10
+                 ? 0xf8 /* L0.NP.W1 - kmovq */
+                 : 0x78 /* L0.NP.W0 - kmovw */;
         stb[3] = 0x91;
         stb[4] = evex.opmsk << 3;
         insn_bytes = 5;
@@ -3392,7 +3418,7 @@ x86_emulate(
                                (ea.type != OP_REG && evex.brs &&
                                 (evex.pfx & VEX_PREFIX_SCALAR_MASK))),
                               X86_EXC_UD);
-        host_and_vcpu_must_have(avx512f);
+        visa_check(f);
         if ( ea.type != OP_REG || !evex.brs )
             avx512_vlen_check(evex.pfx & VEX_PREFIX_SCALAR_MASK);
     simd_zmm:
@@ -3448,7 +3474,7 @@ x86_emulate(
         generate_exception_if((evex.lr || evex.opmsk || evex.brs ||
                                evex.w != (evex.pfx & VEX_PREFIX_DOUBLE_MASK)),
                               X86_EXC_UD);
-        host_and_vcpu_must_have(avx512f);
+        visa_check(f);
         if ( (d & DstMask) != DstMem )
             d &= ~TwoOp;
         op_bytes = 8;
@@ -3475,7 +3501,7 @@ x86_emulate(
         generate_exception_if((evex.brs ||
                                evex.w != (evex.pfx & VEX_PREFIX_DOUBLE_MASK)),
                               X86_EXC_UD);
-        host_and_vcpu_must_have(avx512f);
+        visa_check(f);
         avx512_vlen_check(false);
         d |= TwoOp;
         op_bytes = !(evex.pfx & VEX_PREFIX_DOUBLE_MASK) || evex.lr
@@ -3512,7 +3538,7 @@ x86_emulate(
     case X86EMUL_OPC_EVEX_66(0x0f38, 0x64): /* vpblendm{d,q} [xyz]mm/mem,[xyz]mm,[xyz]mm{k} */
     case X86EMUL_OPC_EVEX_66(0x0f38, 0x65): /* vblendmp{s,d} [xyz]mm/mem,[xyz]mm,[xyz]mm{k} */
     avx512f_no_sae:
-        host_and_vcpu_must_have(avx512f);
+        visa_check(f);
         generate_exception_if(ea.type != OP_MEM && evex.brs, X86_EXC_UD);
         avx512_vlen_check(false);
         goto simd_zmm;
@@ -3592,13 +3618,13 @@ x86_emulate(
 
     case X86EMUL_OPC_EVEX_F3(5, 0x2a):      /* vcvtsi2sh r/m,xmm,xmm */
     case X86EMUL_OPC_EVEX_F3(5, 0x7b):      /* vcvtusi2sh r/m,xmm,xmm */
-        host_and_vcpu_must_have(avx512_fp16);
+        visa_check(_fp16);
         /* fall through */
     CASE_SIMD_SCALAR_FP(_EVEX, 0x0f, 0x2a): /* vcvtsi2s{s,d} r/m,xmm,xmm */
     CASE_SIMD_SCALAR_FP(_EVEX, 0x0f, 0x7b): /* vcvtusi2s{s,d} r/m,xmm,xmm */
         generate_exception_if(evex.opmsk || (ea.type != OP_REG && evex.brs),
                               X86_EXC_UD);
-        host_and_vcpu_must_have(avx512f);
+        visa_check(f);
         if ( !evex.brs )
             avx512_vlen_check(true);
         get_fpu(X86EMUL_FPU_zmm);
@@ -3708,7 +3734,7 @@ x86_emulate(
     case X86EMUL_OPC_EVEX_F3(5, 0x2d):      /* vcvtsh2si xmm/mem,reg */
     case X86EMUL_OPC_EVEX_F3(5, 0x78):      /* vcvttsh2usi xmm/mem,reg */
     case X86EMUL_OPC_EVEX_F3(5, 0x79):      /* vcvtsh2usi xmm/mem,reg */
-        host_and_vcpu_must_have(avx512_fp16);
+        visa_check(_fp16);
         /* fall through */
     CASE_SIMD_SCALAR_FP(_EVEX, 0x0f, 0x2c): /* vcvtts{s,d}2si xmm/mem,reg */
     CASE_SIMD_SCALAR_FP(_EVEX, 0x0f, 0x2d): /* vcvts{s,d}2si xmm/mem,reg */
@@ -3717,7 +3743,7 @@ x86_emulate(
         generate_exception_if((evex.reg != 0xf || !evex.RX || evex.opmsk ||
                                (ea.type != OP_REG && evex.brs)),
                               X86_EXC_UD);
-        host_and_vcpu_must_have(avx512f);
+        visa_check(f);
         if ( !evex.brs )
             avx512_vlen_check(true);
         get_fpu(X86EMUL_FPU_zmm);
@@ -3783,7 +3809,7 @@ x86_emulate(
 
     case X86EMUL_OPC_EVEX(5, 0x2e): /* vucomish xmm/m16,xmm */
     case X86EMUL_OPC_EVEX(5, 0x2f): /* vcomish xmm/m16,xmm */
-        host_and_vcpu_must_have(avx512_fp16);
+        visa_check(_fp16);
         generate_exception_if(evex.w, X86_EXC_UD);
         /* fall through */
     CASE_SIMD_PACKED_FP(_EVEX, 0x0f, 0x2e): /* vucomis{s,d} xmm/mem,xmm */
@@ -3792,7 +3818,7 @@ x86_emulate(
                                (ea.type != OP_REG && evex.brs) ||
                                evex.w != evex.pfx),
                               X86_EXC_UD);
-        host_and_vcpu_must_have(avx512f);
+        visa_check(f);
         if ( !evex.brs )
             avx512_vlen_check(true);
         get_fpu(X86EMUL_FPU_zmm);
@@ -3936,7 +3962,7 @@ x86_emulate(
 
     case X86EMUL_OPC_VEX(0x0f, 0x4a):    /* kadd{w,q} k,k,k */
         if ( !vex.w )
-            host_and_vcpu_must_have(avx512dq);
+            visa_check(dq);
         /* fall through */
     case X86EMUL_OPC_VEX(0x0f, 0x41):    /* kand{w,q} k,k,k */
     case X86EMUL_OPC_VEX_66(0x0f, 0x41): /* kand{b,d} k,k,k */
@@ -3952,11 +3978,12 @@ x86_emulate(
         generate_exception_if(!vex.l, X86_EXC_UD);
     opmask_basic:
         if ( vex.w )
-            host_and_vcpu_must_have(avx512bw);
+            visa_check(bw);
         else if ( vex.pfx )
-            host_and_vcpu_must_have(avx512dq);
+            visa_check(dq);
+        else
+            visa_check(f);
     opmask_common:
-        host_and_vcpu_must_have(avx512f);
         generate_exception_if(!vex.r || (mode_64bit() && !(vex.reg & 8)) ||
                               ea.type != OP_REG, X86_EXC_UD);
 
@@ -3979,13 +4006,14 @@ x86_emulate(
         generate_exception_if(vex.l || vex.reg != 0xf, X86_EXC_UD);
         goto opmask_basic;
 
-    case X86EMUL_OPC_VEX(0x0f, 0x4b):    /* kunpck{w,d}{d,q} k,k,k */
+    case X86EMUL_OPC_VEX(0x0f, 0x4b):    /* kunpck{wd,dq} k,k,k */
         generate_exception_if(!vex.l, X86_EXC_UD);
-        host_and_vcpu_must_have(avx512bw);
+        visa_check(bw);
         goto opmask_common;
 
     case X86EMUL_OPC_VEX_66(0x0f, 0x4b): /* kunpckbw k,k,k */
         generate_exception_if(!vex.l || vex.w, X86_EXC_UD);
+        visa_check(f);
         goto opmask_common;
 
 #endif /* X86EMUL_NO_SIMD */
@@ -4053,7 +4081,7 @@ x86_emulate(
         generate_exception_if((evex.w != (evex.pfx & VEX_PREFIX_DOUBLE_MASK) ||
                                (ea.type != OP_MEM && evex.brs)),
                               X86_EXC_UD);
-        host_and_vcpu_must_have(avx512dq);
+        visa_check(dq);
         avx512_vlen_check(false);
         goto simd_zmm;
 
@@ -4092,12 +4120,12 @@ x86_emulate(
     case X86EMUL_OPC_EVEX_F2(0x0f, 0x7a): /* vcvtudq2ps [xyz]mm/mem,[xyz]mm{k} */
                                           /* vcvtuqq2ps [xyz]mm/mem,{x,y}mm{k} */
         if ( evex.w )
-            host_and_vcpu_must_have(avx512dq);
+            visa_check(dq);
         else
         {
     case X86EMUL_OPC_EVEX(0x0f, 0x78):    /* vcvttp{s,d}2udq [xyz]mm/mem,[xyz]mm{k} */
     case X86EMUL_OPC_EVEX(0x0f, 0x79):    /* vcvtp{s,d}2udq [xyz]mm/mem,[xyz]mm{k} */
-            host_and_vcpu_must_have(avx512f);
+            visa_check(f);
         }
         if ( ea.type != OP_REG || !evex.brs )
             avx512_vlen_check(false);
@@ -4314,7 +4342,7 @@ x86_emulate(
     case X86EMUL_OPC_EVEX_66(0x0f38, 0x0b): /* vpmulhrsw [xyz]mm/mem,[xyz]mm,[xyz]mm{k} */
     case X86EMUL_OPC_EVEX_66(0x0f38, 0x1c): /* vpabsb [xyz]mm/mem,[xyz]mm{k} */
     case X86EMUL_OPC_EVEX_66(0x0f38, 0x1d): /* vpabsw [xyz]mm/mem,[xyz]mm{k} */
-        host_and_vcpu_must_have(avx512bw);
+        visa_check(bw);
         generate_exception_if(evex.brs, X86_EXC_UD);
         elem_bytes = 1 << (b & 1);
         goto avx512f_no_sae;
@@ -4346,7 +4374,7 @@ x86_emulate(
             generate_exception_if(b != 0x27 && evex.w != (b & 1), X86_EXC_UD);
             goto avx512f_no_sae;
         }
-        host_and_vcpu_must_have(avx512bw);
+        visa_check(bw);
         generate_exception_if(evex.brs, X86_EXC_UD);
         elem_bytes = 1 << (ext == ext_0f ? b & 1 : evex.w);
         avx512_vlen_check(false);
@@ -4419,7 +4447,7 @@ x86_emulate(
             dst.bytes = 2;
         /* fall through */
     case X86EMUL_OPC_EVEX_66(5, 0x6e): /* vmovw r/m16,xmm */
-        host_and_vcpu_must_have(avx512_fp16);
+        visa_check(_fp16);
         generate_exception_if(evex.w, X86_EXC_UD);
         /* fall through */
     case X86EMUL_OPC_EVEX_66(0x0f, 0x6e): /* vmov{d,q} r/m,xmm */
@@ -4427,7 +4455,7 @@ x86_emulate(
         generate_exception_if((evex.lr || evex.opmsk || evex.brs ||
                                evex.reg != 0xf || !evex.RX),
                               X86_EXC_UD);
-        host_and_vcpu_must_have(avx512f);
+        visa_check(f);
         get_fpu(X86EMUL_FPU_zmm);
 
         opc = init_evex(stub);
@@ -4485,7 +4513,7 @@ x86_emulate(
 
     case X86EMUL_OPC_EVEX_F2(0x0f, 0x6f): /* vmovdqu{8,16} [xyz]mm/mem,[xyz]mm{k} */
     case X86EMUL_OPC_EVEX_F2(0x0f, 0x7f): /* vmovdqu{8,16} [xyz]mm,[xyz]mm/mem{k} */
-        host_and_vcpu_must_have(avx512bw);
+        visa_check(bw);
         elem_bytes = 1 << evex.w;
         goto vmovdqa;
 
@@ -4578,7 +4606,7 @@ x86_emulate(
             generate_exception_if(evex.w, X86_EXC_UD);
         else
         {
-            host_and_vcpu_must_have(avx512bw);
+            visa_check(bw);
             generate_exception_if(evex.brs, X86_EXC_UD);
         }
         d = (d & ~SrcMask) | SrcMem | TwoOp;
@@ -4826,7 +4854,7 @@ x86_emulate(
     case X86EMUL_OPC_EVEX_F3(0x0f, 0xe6):   /* vcvtdq2pd {x,y}mm/mem,[xyz]mm{k} */
                                             /* vcvtqq2pd [xyz]mm/mem,[xyz]mm{k} */
         if ( evex.pfx != vex_f3 )
-            host_and_vcpu_must_have(avx512f);
+            visa_check(f);
         else if ( evex.w )
         {
     case X86EMUL_OPC_EVEX_66(0x0f, 0x78):   /* vcvttps2uqq {x,y}mm/mem,[xyz]mm{k} */
@@ -4837,11 +4865,11 @@ x86_emulate(
                                             /* vcvttpd2qq [xyz]mm/mem,[xyz]mm{k} */
     case X86EMUL_OPC_EVEX_66(0x0f, 0x7b):   /* vcvtps2qq {x,y}mm/mem,[xyz]mm{k} */
                                             /* vcvtpd2qq [xyz]mm/mem,[xyz]mm{k} */
-            host_and_vcpu_must_have(avx512dq);
+            visa_check(dq);
         }
         else
         {
-            host_and_vcpu_must_have(avx512f);
+            visa_check(f);
             generate_exception_if(ea.type != OP_MEM && evex.brs, X86_EXC_UD);
         }
         if ( ea.type != OP_REG || !evex.brs )
@@ -4879,7 +4907,7 @@ x86_emulate(
     case X86EMUL_OPC_EVEX_66(0x0f, 0xd6): /* vmovq xmm,xmm/m64 */
         generate_exception_if(evex.lr || !evex.w || evex.opmsk || evex.brs,
                               X86_EXC_UD);
-        host_and_vcpu_must_have(avx512f);
+        visa_check(f);
         d |= TwoOp;
         op_bytes = 8;
         goto simd_zmm;
@@ -4905,19 +4933,21 @@ x86_emulate(
     case X86EMUL_OPC_VEX(0x0f, 0x90):    /* kmov{w,q} k/mem,k */
     case X86EMUL_OPC_VEX_66(0x0f, 0x90): /* kmov{b,d} k/mem,k */
         generate_exception_if(vex.l || !vex.r, X86_EXC_UD);
-        host_and_vcpu_must_have(avx512f);
         if ( vex.w )
         {
-            host_and_vcpu_must_have(avx512bw);
+            visa_check(bw);
             op_bytes = 4 << !vex.pfx;
         }
         else if ( vex.pfx )
         {
-            host_and_vcpu_must_have(avx512dq);
+            visa_check(dq);
             op_bytes = 1;
         }
         else
+        {
+            visa_check(f);
             op_bytes = 2;
+        }
 
         get_fpu(X86EMUL_FPU_opmask);
 
@@ -4939,14 +4969,15 @@ x86_emulate(
         generate_exception_if(vex.l || !vex.r || vex.reg != 0xf ||
                               ea.type != OP_REG, X86_EXC_UD);
 
-        host_and_vcpu_must_have(avx512f);
         if ( vex.pfx == vex_f2 )
-            host_and_vcpu_must_have(avx512bw);
+            visa_check(bw);
         else
         {
             generate_exception_if(vex.w, X86_EXC_UD);
             if ( vex.pfx )
-                host_and_vcpu_must_have(avx512dq);
+                visa_check(dq);
+            else
+                visa_check(f);
         }
 
         get_fpu(X86EMUL_FPU_opmask);
@@ -4978,10 +5009,9 @@ x86_emulate(
         dst = ea;
         dst.reg = decode_gpr(&_regs, modrm_reg);
 
-        host_and_vcpu_must_have(avx512f);
         if ( vex.pfx == vex_f2 )
         {
-            host_and_vcpu_must_have(avx512bw);
+            visa_check(bw);
             dst.bytes = 4 << (mode_64bit() && vex.w);
         }
         else
@@ -4989,7 +5019,9 @@ x86_emulate(
             generate_exception_if(vex.w, X86_EXC_UD);
             dst.bytes = 4;
             if ( vex.pfx )
-                host_and_vcpu_must_have(avx512dq);
+                visa_check(dq);
+            else
+                visa_check(f);
         }
 
         get_fpu(X86EMUL_FPU_opmask);
@@ -5011,20 +5043,18 @@ x86_emulate(
         ASSERT(!state->simd_size);
         break;
 
-    case X86EMUL_OPC_VEX(0x0f, 0x99):    /* ktest{w,q} k,k */
-        if ( !vex.w )
-            host_and_vcpu_must_have(avx512dq);
-        /* fall through */
     case X86EMUL_OPC_VEX(0x0f, 0x98):    /* kortest{w,q} k,k */
     case X86EMUL_OPC_VEX_66(0x0f, 0x98): /* kortest{b,d} k,k */
+    case X86EMUL_OPC_VEX(0x0f, 0x99):    /* ktest{w,q} k,k */
     case X86EMUL_OPC_VEX_66(0x0f, 0x99): /* ktest{b,d} k,k */
         generate_exception_if(vex.l || !vex.r || vex.reg != 0xf ||
                               ea.type != OP_REG, X86_EXC_UD);
-        host_and_vcpu_must_have(avx512f);
         if ( vex.w )
-            host_and_vcpu_must_have(avx512bw);
-        else if ( vex.pfx )
-            host_and_vcpu_must_have(avx512dq);
+            visa_check(bw);
+        else if ( vex.pfx || (b & 1) )
+            visa_check(dq);
+        else
+            visa_check(f);
 
         get_fpu(X86EMUL_FPU_opmask);
 
@@ -5362,7 +5392,7 @@ x86_emulate(
                                 (evex.pfx & VEX_PREFIX_SCALAR_MASK)) ||
                                !evex.r || !evex.R || evex.z),
                               X86_EXC_UD);
-        host_and_vcpu_must_have(avx512f);
+        visa_check(f);
         if ( ea.type != OP_REG || !evex.brs )
             avx512_vlen_check(evex.pfx & VEX_PREFIX_SCALAR_MASK);
     simd_imm8_zmm:
@@ -5406,9 +5436,9 @@ x86_emulate(
     case X86EMUL_OPC_EVEX_66(0x0f3a, 0x22): /* vpinsr{d,q} $imm8,r/m,xmm,xmm */
         generate_exception_if(evex.lr || evex.opmsk || evex.brs, X86_EXC_UD);
         if ( b & 2 )
-            host_and_vcpu_must_have(avx512dq);
+            visa_check(dq);
         else
-            host_and_vcpu_must_have(avx512bw);
+            visa_check(bw);
         if ( !mode_64bit() )
             evex.w = 0;
         memcpy(mmvalp, &src.val, src.bytes);
@@ -5445,7 +5475,7 @@ x86_emulate(
         /* fall through */
     case X86EMUL_OPC_EVEX_66(0x0f3a, 0x25): /* vpternlog{d,q} $imm8,[xyz]mm/mem,[xyz]mm,[xyz]mm{k} */
     avx512f_imm8_no_sae:
-        host_and_vcpu_must_have(avx512f);
+        visa_check(f);
         generate_exception_if(ea.type != OP_MEM && evex.brs, X86_EXC_UD);
         avx512_vlen_check(false);
         goto simd_imm8_zmm;
@@ -5544,7 +5574,7 @@ x86_emulate(
     case X86EMUL_OPC_EVEX_66(0x0f, 0xe4): /* vpmulhuw [xyz]mm/mem,[xyz]mm,[xyz]mm{k} */
     case X86EMUL_OPC_EVEX_66(0x0f, 0xea): /* vpminsw [xyz]mm/mem,[xyz]mm,[xyz]mm{k} */
     case X86EMUL_OPC_EVEX_66(0x0f, 0xee): /* vpmaxsw [xyz]mm/mem,[xyz]mm,[xyz]mm{k} */
-        host_and_vcpu_must_have(avx512bw);
+        visa_check(bw);
         generate_exception_if(evex.brs, X86_EXC_UD);
         elem_bytes = b & 0x10 ? 1 : 2;
         goto avx512f_no_sae;
@@ -5769,7 +5799,7 @@ x86_emulate(
     case X86EMUL_OPC_EVEX_66(0x0f38, 0x10): /* vpsrlvw [xyz]mm/mem,[xyz]mm,[xyz]mm{k} */
     case X86EMUL_OPC_EVEX_66(0x0f38, 0x11): /* vpsravw [xyz]mm/mem,[xyz]mm,[xyz]mm{k} */
     case X86EMUL_OPC_EVEX_66(0x0f38, 0x12): /* vpsllvw [xyz]mm/mem,[xyz]mm,[xyz]mm{k} */
-        host_and_vcpu_must_have(avx512bw);
+        visa_check(bw);
         generate_exception_if(!evex.w || evex.brs, X86_EXC_UD);
         elem_bytes = 2;
         goto avx512f_no_sae;
@@ -5779,7 +5809,7 @@ x86_emulate(
     case X86EMUL_OPC_EVEX_F3(0x0f38, 0x20): /* vpmovswb [xyz]mm,{x,y}mm/mem{k} */
     case X86EMUL_OPC_EVEX_66(0x0f38, 0x30): /* vpmovzxbw {x,y}mm/mem,[xyz]mm{k} */
     case X86EMUL_OPC_EVEX_F3(0x0f38, 0x30): /* vpmovwb [xyz]mm,{x,y}mm/mem{k} */
-        host_and_vcpu_must_have(avx512bw);
+        visa_check(bw);
         if ( evex.pfx != vex_f3 )
         {
     case X86EMUL_OPC_EVEX_66(0x0f38, 0x21): /* vpmovsxbd xmm/mem,[xyz]mm{k} */
@@ -5827,7 +5857,7 @@ x86_emulate(
 
     case X86EMUL_OPC_EVEX_66(0x0f38, 0x13): /* vcvtph2ps {x,y}mm/mem,[xyz]mm{k} */
         generate_exception_if(evex.w || (ea.type != OP_REG && evex.brs), X86_EXC_UD);
-        host_and_vcpu_must_have(avx512f);
+        visa_check(f);
         if ( !evex.brs )
             avx512_vlen_check(false);
         op_bytes = 8 << evex.lr;
@@ -5881,7 +5911,7 @@ x86_emulate(
             op_bytes = 8;
         generate_exception_if(evex.brs, X86_EXC_UD);
         if ( !evex.w )
-            host_and_vcpu_must_have(avx512dq);
+            visa_check(dq);
         goto avx512_broadcast;
 
     case X86EMUL_OPC_EVEX_66(0x0f38, 0x1a): /* vbroadcastf32x4 m128,{y,z}mm{k} */
@@ -5891,7 +5921,7 @@ x86_emulate(
         generate_exception_if(ea.type != OP_MEM || !evex.lr || evex.brs,
                               X86_EXC_UD);
         if ( evex.w )
-            host_and_vcpu_must_have(avx512dq);
+            visa_check(dq);
         goto avx512_broadcast;
 
     case X86EMUL_OPC_VEX_66(0x0f38, 0x20): /* vpmovsxbw xmm/mem,{x,y}mm */
@@ -5916,9 +5946,9 @@ x86_emulate(
     case X86EMUL_OPC_EVEX_F3(0x0f38, 0x28): /* vpmovm2{b,w} k,[xyz]mm */
     case X86EMUL_OPC_EVEX_F3(0x0f38, 0x38): /* vpmovm2{d,q} k,[xyz]mm */
         if ( b & 0x10 )
-            host_and_vcpu_must_have(avx512dq);
+            visa_check(dq);
         else
-            host_and_vcpu_must_have(avx512bw);
+            visa_check(bw);
         generate_exception_if(evex.opmsk || ea.type != OP_REG, X86_EXC_UD);
         d |= TwoOp;
         op_bytes = 16 << evex.lr;
@@ -5960,7 +5990,7 @@ x86_emulate(
         fault_suppression = false;
         /* fall through */
     case X86EMUL_OPC_EVEX_66(0x0f38, 0x44): /* vplzcnt{d,q} [xyz]mm/mem,[xyz]mm{k} */
-        host_and_vcpu_must_have(avx512cd);
+        visa_check(cd);
         goto avx512f_no_sae;
 
     case X86EMUL_OPC_VEX_66(0x0f38, 0x2c): /* vmaskmovps mem,{x,y}mm,{x,y}mm */
@@ -6036,7 +6066,7 @@ x86_emulate(
     case X86EMUL_OPC_EVEX_66(0x0f38, 0xba): /* vfmsub231p{s,d} [xyz]mm/mem,[xyz]mm,[xyz]mm{k} */
     case X86EMUL_OPC_EVEX_66(0x0f38, 0xbc): /* vfnmadd231p{s,d} [xyz]mm/mem,[xyz]mm,[xyz]mm{k} */
     case X86EMUL_OPC_EVEX_66(0x0f38, 0xbe): /* vfnmsub231p{s,d} [xyz]mm/mem,[xyz]mm,[xyz]mm{k} */
-        host_and_vcpu_must_have(avx512f);
+        visa_check(f);
         if ( ea.type != OP_REG || !evex.brs )
             avx512_vlen_check(false);
         goto simd_zmm;
@@ -6055,7 +6085,7 @@ x86_emulate(
     case X86EMUL_OPC_EVEX_66(0x0f38, 0xbb): /* vfmsub231s{s,d} xmm/mem,xmm,xmm{k} */
     case X86EMUL_OPC_EVEX_66(0x0f38, 0xbd): /* vfnmadd231s{s,d} xmm/mem,xmm,xmm{k} */
     case X86EMUL_OPC_EVEX_66(0x0f38, 0xbf): /* vfnmsub231s{s,d} xmm/mem,xmm,xmm{k} */
-        host_and_vcpu_must_have(avx512f);
+        visa_check(f);
     simd_zmm_scalar_sae:
         generate_exception_if(ea.type != OP_REG && evex.brs, X86_EXC_UD);
         if ( !evex.brs )
@@ -6070,14 +6100,14 @@ x86_emulate(
     case X86EMUL_OPC_EVEX_66(0x0f38, 0x3a): /* vpminuw [xyz]mm/mem,[xyz]mm,[xyz]mm{k} */
     case X86EMUL_OPC_EVEX_66(0x0f38, 0x3c): /* vpmaxsb [xyz]mm/mem,[xyz]mm,[xyz]mm{k} */
     case X86EMUL_OPC_EVEX_66(0x0f38, 0x3e): /* vpmaxuw [xyz]mm/mem,[xyz]mm,[xyz]mm{k} */
-        host_and_vcpu_must_have(avx512bw);
+        visa_check(bw);
         generate_exception_if(evex.brs, X86_EXC_UD);
         elem_bytes = b & 2 ?: 1;
         goto avx512f_no_sae;
 
     case X86EMUL_OPC_EVEX_66(0x0f38, 0x40): /* vpmull{d,q} [xyz]mm/mem,[xyz]mm,[xyz]mm{k} */
         if ( evex.w )
-            host_and_vcpu_must_have(avx512dq);
+            visa_check(dq);
         goto avx512f_no_sae;
 
     case X86EMUL_OPC_66(0x0f38, 0xdb):     /* aesimc xmm/m128,xmm */
@@ -6116,7 +6146,7 @@ x86_emulate(
     case X86EMUL_OPC_EVEX_66(0x0f38, 0x51): /* vpdpbusds [xyz]mm/mem,[xyz]mm,[xyz]mm{k} */
     case X86EMUL_OPC_EVEX_66(0x0f38, 0x52): /* vpdpwssd [xyz]mm/mem,[xyz]mm,[xyz]mm{k} */
     case X86EMUL_OPC_EVEX_66(0x0f38, 0x53): /* vpdpwssds [xyz]mm/mem,[xyz]mm,[xyz]mm{k} */
-        host_and_vcpu_must_have(avx512_vnni);
+        visa_check(_vnni);
         generate_exception_if(evex.w, X86_EXC_UD);
         goto avx512f_no_sae;
 
@@ -6128,7 +6158,7 @@ x86_emulate(
             d |= TwoOp;
         /* fall through */
     case X86EMUL_OPC_EVEX_F3(0x0f38, 0x52): /* vdpbf16ps [xyz]mm/mem,[xyz]mm,[xyz]mm{k} */
-        host_and_vcpu_must_have(avx512_bf16);
+        visa_check(_bf16);
         generate_exception_if(evex.w, X86_EXC_UD);
         op_bytes = 16 << evex.lr;
         goto avx512f_no_sae;
@@ -6145,7 +6175,7 @@ x86_emulate(
 
     case X86EMUL_OPC_EVEX_66(0x0f38, 0x4d): /* vrcp14s{s,d} xmm/mem,xmm,xmm{k} */
     case X86EMUL_OPC_EVEX_66(0x0f38, 0x4f): /* vrsqrt14s{s,d} xmm/mem,xmm,xmm{k} */
-        host_and_vcpu_must_have(avx512f);
+        visa_check(f);
         generate_exception_if(evex.brs, X86_EXC_UD);
         avx512_vlen_check(true);
         goto simd_zmm;
@@ -6163,16 +6193,16 @@ x86_emulate(
         generate_exception_if(evex.w || !evex.r || !evex.R || evex.z, X86_EXC_UD);
         /* fall through */
     case X86EMUL_OPC_EVEX_66(0x0f38, 0x54): /* vpopcnt{b,w} [xyz]mm/mem,[xyz]mm{k} */
-        host_and_vcpu_must_have(avx512_bitalg);
+        visa_check(_bitalg);
         /* fall through */
     case X86EMUL_OPC_EVEX_66(0x0f38, 0x66): /* vpblendm{b,w} [xyz]mm/mem,[xyz]mm,[xyz]mm{k} */
-        host_and_vcpu_must_have(avx512bw);
+        visa_check(bw);
         generate_exception_if(evex.brs, X86_EXC_UD);
         elem_bytes = 1 << evex.w;
         goto avx512f_no_sae;
 
     case X86EMUL_OPC_EVEX_66(0x0f38, 0x55): /* vpopcnt{d,q} [xyz]mm/mem,[xyz]mm{k} */
-        host_and_vcpu_must_have(avx512_vpopcntdq);
+        visa_check(_vpopcntdq);
         goto avx512f_no_sae;
 
     case X86EMUL_OPC_VEX_66(0x0f38, 0x5a): /* vbroadcasti128 m128,ymm */
@@ -6181,14 +6211,14 @@ x86_emulate(
 
     case X86EMUL_OPC_EVEX_66(0x0f38, 0x62): /* vpexpand{b,w} [xyz]mm/mem,[xyz]mm{k} */
     case X86EMUL_OPC_EVEX_66(0x0f38, 0x63): /* vpcompress{b,w} [xyz]mm,[xyz]mm/mem{k} */
-        host_and_vcpu_must_have(avx512_vbmi2);
+        visa_check(_vbmi2);
         elem_bytes = 1 << evex.w;
         /* fall through */
     case X86EMUL_OPC_EVEX_66(0x0f38, 0x88): /* vexpandp{s,d} [xyz]mm/mem,[xyz]mm{k} */
     case X86EMUL_OPC_EVEX_66(0x0f38, 0x89): /* vpexpand{d,q} [xyz]mm/mem,[xyz]mm{k} */
     case X86EMUL_OPC_EVEX_66(0x0f38, 0x8a): /* vcompressp{s,d} [xyz]mm,[xyz]mm/mem{k} */
     case X86EMUL_OPC_EVEX_66(0x0f38, 0x8b): /* vpcompress{d,q} [xyz]mm,[xyz]mm/mem{k} */
-        host_and_vcpu_must_have(avx512f);
+        visa_check(f);
         generate_exception_if(evex.brs, X86_EXC_UD);
         avx512_vlen_check(false);
         /*
@@ -6222,7 +6252,7 @@ x86_emulate(
         /* fall through */
     case X86EMUL_OPC_EVEX_66(0x0f38, 0x71): /* vpshldv{d,q} [xyz]mm/mem,[xyz]mm,[xyz]mm{k} */
     case X86EMUL_OPC_EVEX_66(0x0f38, 0x73): /* vpshrdv{d,q} [xyz]mm/mem,[xyz]mm,[xyz]mm{k} */
-        host_and_vcpu_must_have(avx512_vbmi2);
+        visa_check(_vbmi2);
         goto avx512f_no_sae;
 
     case X86EMUL_OPC_VEX   (0x0f38, 0xb0): /* vcvtneoph2ps mem,[xy]mm */
@@ -6242,16 +6272,16 @@ x86_emulate(
     case X86EMUL_OPC_EVEX_66(0x0f38, 0x7d): /* vpermt2{b,w} [xyz]mm/mem,[xyz]mm,[xyz]mm{k} */
     case X86EMUL_OPC_EVEX_66(0x0f38, 0x8d): /* vperm{b,w} [xyz]mm/mem,[xyz]mm,[xyz]mm{k} */
         if ( !evex.w )
-            host_and_vcpu_must_have(avx512_vbmi);
+            visa_check(_vbmi);
         else
-            host_and_vcpu_must_have(avx512bw);
+            visa_check(bw);
         generate_exception_if(evex.brs, X86_EXC_UD);
         fault_suppression = false;
         goto avx512f_no_sae;
 
     case X86EMUL_OPC_EVEX_66(0x0f38, 0x78): /* vpbroadcastb xmm/m8,[xyz]mm{k} */
     case X86EMUL_OPC_EVEX_66(0x0f38, 0x79): /* vpbroadcastw xmm/m16,[xyz]mm{k} */
-        host_and_vcpu_must_have(avx512bw);
+        visa_check(bw);
         generate_exception_if(evex.w || evex.brs, X86_EXC_UD);
         op_bytes = elem_bytes = 1 << (b & 1);
         /* See the comment at the avx512_broadcast label. */
@@ -6260,14 +6290,14 @@ x86_emulate(
 
     case X86EMUL_OPC_EVEX_66(0x0f38, 0x7a): /* vpbroadcastb r32,[xyz]mm{k} */
     case X86EMUL_OPC_EVEX_66(0x0f38, 0x7b): /* vpbroadcastw r32,[xyz]mm{k} */
-        host_and_vcpu_must_have(avx512bw);
+        visa_check(bw);
         generate_exception_if(evex.w, X86_EXC_UD);
         /* fall through */
     case X86EMUL_OPC_EVEX_66(0x0f38, 0x7c): /* vpbroadcast{d,q} reg,[xyz]mm{k} */
         generate_exception_if((ea.type != OP_REG || evex.brs ||
                                evex.reg != 0xf || !evex.RX),
                               X86_EXC_UD);
-        host_and_vcpu_must_have(avx512f);
+        visa_check(f);
         avx512_vlen_check(false);
         get_fpu(X86EMUL_FPU_zmm);
 
@@ -6336,7 +6366,7 @@ x86_emulate(
 
     case X86EMUL_OPC_EVEX_66(0x0f38, 0x83): /* vpmultishiftqb [xyz]mm/mem,[xyz]mm,[xyz]mm{k} */
         generate_exception_if(!evex.w, X86_EXC_UD);
-        host_and_vcpu_must_have(avx512_vbmi);
+        visa_check(_vbmi);
         fault_suppression = false;
         goto avx512f_no_sae;
 
@@ -6484,8 +6514,8 @@ x86_emulate(
                                evex.reg != 0xf ||
                                modrm_reg == state->sib_index),
                               X86_EXC_UD);
+        visa_check(f);
         avx512_vlen_check(false);
-        host_and_vcpu_must_have(avx512f);
         get_fpu(X86EMUL_FPU_zmm);
 
         /* Read destination and index registers. */
@@ -6664,8 +6694,8 @@ x86_emulate(
                                evex.reg != 0xf ||
                                modrm_reg == state->sib_index),
                               X86_EXC_UD);
+        visa_check(f);
         avx512_vlen_check(false);
-        host_and_vcpu_must_have(avx512f);
         get_fpu(X86EMUL_FPU_zmm);
 
         /* Read source and index registers. */
@@ -6782,7 +6812,7 @@ x86_emulate(
 
     case X86EMUL_OPC_EVEX_66(0x0f38, 0xb4): /* vpmadd52luq [xyz]mm/mem,[xyz]mm,[xyz]mm{k} */
     case X86EMUL_OPC_EVEX_66(0x0f38, 0xb5): /* vpmadd52huq [xyz]mm/mem,[xyz]mm,[xyz]mm{k} */
-        host_and_vcpu_must_have(avx512_ifma);
+        visa_check(_ifma);
         generate_exception_if(!evex.w, X86_EXC_UD);
         goto avx512f_no_sae;
 
@@ -6798,8 +6828,8 @@ x86_emulate(
 #endif
 
         ASSERT(ea.type == OP_MEM);
-        generate_exception_if((!cpu_has_avx512f || !evex.opmsk || evex.brs ||
-                               evex.z || evex.reg != 0xf || evex.lr != 2),
+        generate_exception_if((!evex.opmsk || evex.brs || evex.z ||
+                               evex.reg != 0xf || evex.lr != 2),
                               X86_EXC_UD);
 
         switch ( modrm_reg & 7 )
@@ -7315,7 +7345,7 @@ x86_emulate(
         /* fall through */
     case X86EMUL_OPC_EVEX_66(0x0f3a, 0x08): /* vrndscaleps $imm8,[xyz]mm/mem,[xyz]mm{k} */
     case X86EMUL_OPC_EVEX_66(0x0f3a, 0x09): /* vrndscalepd $imm8,[xyz]mm/mem,[xyz]mm{k} */
-        host_and_vcpu_must_have(avx512f);
+        visa_check(f);
         generate_exception_if(evex.w != (b & 1), X86_EXC_UD);
         avx512_vlen_check(b & 2);
         goto simd_imm8_zmm;
@@ -7324,7 +7354,7 @@ x86_emulate(
         generate_exception_if(ea.type != OP_REG && evex.brs, X86_EXC_UD);
         /* fall through */
     case X86EMUL_OPC_EVEX(0x0f3a, 0x08): /* vrndscaleph $imm8,[xyz]mm/mem,[xyz]mm{k} */
-        host_and_vcpu_must_have(avx512_fp16);
+        visa_check(_fp16);
         generate_exception_if(evex.w, X86_EXC_UD);
         avx512_vlen_check(b & 2);
         goto simd_imm8_zmm;
@@ -7437,11 +7467,11 @@ x86_emulate(
                                evex.opmsk || evex.brs),
                               X86_EXC_UD);
         if ( !(b & 2) )
-            host_and_vcpu_must_have(avx512bw);
+            visa_check(bw);
         else if ( !(b & 1) )
-            host_and_vcpu_must_have(avx512dq);
+            visa_check(dq);
         else
-            host_and_vcpu_must_have(avx512f);
+            visa_check(f);
         get_fpu(X86EMUL_FPU_zmm);
         opc = init_evex(stub);
         goto pextr;
@@ -7455,7 +7485,7 @@ x86_emulate(
     case X86EMUL_OPC_EVEX_66(0x0f3a, 0x39): /* vextracti32x4 $imm8,{y,z}mm,xmm/m128{k} */
                                             /* vextracti64x2 $imm8,{y,z}mm,xmm/m128{k} */
         if ( evex.w )
-            host_and_vcpu_must_have(avx512dq);
+            visa_check(dq);
         generate_exception_if(evex.brs, X86_EXC_UD);
         /* fall through */
     case X86EMUL_OPC_EVEX_66(0x0f3a, 0x23): /* vshuff32x4 $imm8,{y,z}mm/mem,{y,z}mm,{y,z}mm{k} */
@@ -7475,7 +7505,7 @@ x86_emulate(
     case X86EMUL_OPC_EVEX_66(0x0f3a, 0x3b): /* vextracti32x8 $imm8,zmm,ymm/m256{k} */
                                             /* vextracti64x4 $imm8,zmm,ymm/m256{k} */
         if ( !evex.w )
-            host_and_vcpu_must_have(avx512dq);
+            visa_check(dq);
         generate_exception_if(evex.lr != 2 || evex.brs, X86_EXC_UD);
         fault_suppression = false;
         goto avx512f_imm8_no_sae;
@@ -7491,7 +7521,7 @@ x86_emulate(
             generate_exception_if((evex.w || evex.reg != 0xf || !evex.RX ||
                                    (ea.type != OP_REG && (evex.z || evex.brs))),
                                   X86_EXC_UD);
-            host_and_vcpu_must_have(avx512f);
+            visa_check(f);
             avx512_vlen_check(false);
             opc = init_evex(stub);
         }
@@ -7583,7 +7613,7 @@ x86_emulate(
         if ( !(b & 0x20) )
             goto avx512f_imm8_no_sae;
     avx512bw_imm:
-        host_and_vcpu_must_have(avx512bw);
+        visa_check(bw);
         generate_exception_if(evex.brs, X86_EXC_UD);
         elem_bytes = 1 << evex.w;
         avx512_vlen_check(false);
@@ -7622,7 +7652,7 @@ x86_emulate(
         goto simd_0f_imm8_avx;
 
     case X86EMUL_OPC_EVEX_66(0x0f3a, 0x21): /* vinsertps $imm8,xmm/m32,xmm,xmm */
-        host_and_vcpu_must_have(avx512f);
+        visa_check(f);
         generate_exception_if(evex.lr || evex.w || evex.opmsk || evex.brs,
                               X86_EXC_UD);
         op_bytes = 4;
@@ -7630,18 +7660,18 @@ x86_emulate(
 
     case X86EMUL_OPC_EVEX_66(0x0f3a, 0x50): /* vrangep{s,d} $imm8,[xyz]mm/mem,[xyz]mm,[xyz]mm{k} */
     case X86EMUL_OPC_EVEX_66(0x0f3a, 0x56): /* vreducep{s,d} $imm8,[xyz]mm/mem,[xyz]mm{k} */
-        host_and_vcpu_must_have(avx512dq);
+        visa_check(dq);
         /* fall through */
     case X86EMUL_OPC_EVEX_66(0x0f3a, 0x26): /* vgetmantp{s,d} $imm8,[xyz]mm/mem,[xyz]mm{k} */
     case X86EMUL_OPC_EVEX_66(0x0f3a, 0x54): /* vfixupimmp{s,d} $imm8,[xyz]mm/mem,[xyz]mm,[xyz]mm{k} */
-        host_and_vcpu_must_have(avx512f);
+        visa_check(f);
         if ( ea.type != OP_REG || !evex.brs )
             avx512_vlen_check(false);
         goto simd_imm8_zmm;
 
     case X86EMUL_OPC_EVEX(0x0f3a, 0x26): /* vgetmantph $imm8,[xyz]mm/mem,[xyz]mm{k} */
     case X86EMUL_OPC_EVEX(0x0f3a, 0x56): /* vreduceph $imm8,[xyz]mm/mem,[xyz]mm{k} */
-        host_and_vcpu_must_have(avx512_fp16);
+        visa_check(_fp16);
         generate_exception_if(evex.w, X86_EXC_UD);
         if ( ea.type != OP_REG || !evex.brs )
             avx512_vlen_check(false);
@@ -7649,11 +7679,11 @@ x86_emulate(
 
     case X86EMUL_OPC_EVEX_66(0x0f3a, 0x51): /* vranges{s,d} $imm8,xmm/mem,xmm,xmm{k} */
     case X86EMUL_OPC_EVEX_66(0x0f3a, 0x57): /* vreduces{s,d} $imm8,xmm/mem,xmm,xmm{k} */
-        host_and_vcpu_must_have(avx512dq);
+        visa_check(dq);
         /* fall through */
     case X86EMUL_OPC_EVEX_66(0x0f3a, 0x27): /* vgetmants{s,d} $imm8,xmm/mem,xmm,xmm{k} */
     case X86EMUL_OPC_EVEX_66(0x0f3a, 0x55): /* vfixupimms{s,d} $imm8,xmm/mem,xmm,xmm{k} */
-        host_and_vcpu_must_have(avx512f);
+        visa_check(f);
         generate_exception_if(ea.type != OP_REG && evex.brs, X86_EXC_UD);
         if ( !evex.brs )
             avx512_vlen_check(true);
@@ -7661,7 +7691,7 @@ x86_emulate(
 
     case X86EMUL_OPC_EVEX(0x0f3a, 0x27): /* vgetmantsh $imm8,xmm/mem,xmm,xmm{k} */
     case X86EMUL_OPC_EVEX(0x0f3a, 0x57): /* vreducesh $imm8,xmm/mem,xmm,xmm{k} */
-        host_and_vcpu_must_have(avx512_fp16);
+        visa_check(_fp16);
         generate_exception_if(evex.w, X86_EXC_UD);
         if ( !evex.brs )
             avx512_vlen_check(true);
@@ -7672,18 +7702,19 @@ x86_emulate(
     case X86EMUL_OPC_VEX_66(0x0f3a, 0x30): /* kshiftr{b,w} $imm8,k,k */
     case X86EMUL_OPC_VEX_66(0x0f3a, 0x32): /* kshiftl{b,w} $imm8,k,k */
         if ( !vex.w )
-            host_and_vcpu_must_have(avx512dq);
+            visa_check(dq);
+        else
+            visa_check(f);
     opmask_shift_imm:
         generate_exception_if(vex.l || !vex.r || vex.reg != 0xf ||
                               ea.type != OP_REG, X86_EXC_UD);
-        host_and_vcpu_must_have(avx512f);
         get_fpu(X86EMUL_FPU_opmask);
         op_bytes = 1; /* Any non-zero value will do. */
         goto simd_0f_imm8;
 
     case X86EMUL_OPC_VEX_66(0x0f3a, 0x31): /* kshiftr{d,q} $imm8,k,k */
     case X86EMUL_OPC_VEX_66(0x0f3a, 0x33): /* kshiftl{d,q} $imm8,k,k */
-        host_and_vcpu_must_have(avx512bw);
+        visa_check(bw);
         goto opmask_shift_imm;
 
     case X86EMUL_OPC_66(0x0f3a, 0x44):     /* pclmulqdq $imm8,xmm/m128,xmm */
@@ -7824,7 +7855,7 @@ x86_emulate(
 
     case X86EMUL_OPC_EVEX_66(0x0f3a, 0x66): /* vfpclassp{s,d} $imm8,[xyz]mm/mem,k{k} */
     case X86EMUL_OPC_EVEX_66(0x0f3a, 0x67): /* vfpclasss{s,d} $imm8,xmm/mem,k{k} */
-        host_and_vcpu_must_have(avx512dq);
+        visa_check(dq);
         generate_exception_if(!evex.r || !evex.R || evex.z, X86_EXC_UD);
         if ( !(b & 1) )
             goto avx512f_imm8_no_sae;
@@ -7834,7 +7865,7 @@ x86_emulate(
 
     case X86EMUL_OPC_EVEX(0x0f3a, 0x66): /* vfpclassph $imm8,[xyz]mm/mem,k{k} */
     case X86EMUL_OPC_EVEX(0x0f3a, 0x67): /* vfpclasssh $imm8,xmm/mem,k{k} */
-        host_and_vcpu_must_have(avx512_fp16);
+        visa_check(_fp16);
         generate_exception_if(evex.w || !evex.r || !evex.R || evex.z, X86_EXC_UD);
         if ( !(b & 1) )
             goto avx512f_imm8_no_sae;
@@ -7849,14 +7880,14 @@ x86_emulate(
         /* fall through */
     case X86EMUL_OPC_EVEX_66(0x0f3a, 0x71): /* vpshld{d,q} $imm8,[xyz]mm/mem,[xyz]mm,[xyz]mm{k} */
     case X86EMUL_OPC_EVEX_66(0x0f3a, 0x73): /* vpshrd{d,q} $imm8,[xyz]mm/mem,[xyz]mm,[xyz]mm{k} */
-        host_and_vcpu_must_have(avx512_vbmi2);
+        visa_check(_vbmi2);
         goto avx512f_imm8_no_sae;
 
     case X86EMUL_OPC_EVEX_F3(0x0f3a, 0xc2): /* vcmpsh $imm8,xmm/mem,xmm,k{k} */
         generate_exception_if(ea.type != OP_REG && evex.brs, X86_EXC_UD);
         /* fall through */
     case X86EMUL_OPC_EVEX(0x0f3a, 0xc2): /* vcmpph $imm8,[xyz]mm/mem,[xyz]mm,k{k} */
-        host_and_vcpu_must_have(avx512_fp16);
+        visa_check(_fp16);
         generate_exception_if(evex.w || !evex.r || !evex.R || evex.z, X86_EXC_UD);
         if ( ea.type != OP_REG || !evex.brs )
             avx512_vlen_check(evex.pfx & VEX_PREFIX_SCALAR_MASK);
@@ -7937,13 +7968,13 @@ x86_emulate(
     CASE_SIMD_SINGLE_FP(_EVEX, 5, 0x5d): /* vmin{p,s}h [xyz]mm/mem,[xyz]mm,[xyz]mm{k} */
     CASE_SIMD_SINGLE_FP(_EVEX, 5, 0x5e): /* vdiv{p,s}h [xyz]mm/mem,[xyz]mm,[xyz]mm{k} */
     CASE_SIMD_SINGLE_FP(_EVEX, 5, 0x5f): /* vmax{p,s}h [xyz]mm/mem,[xyz]mm,[xyz]mm{k} */
-        host_and_vcpu_must_have(avx512_fp16);
+        visa_check(_fp16);
         generate_exception_if(evex.w, X86_EXC_UD);
         goto avx512f_all_fp;
 
     CASE_SIMD_ALL_FP(_EVEX, 5, 0x5a):  /* vcvtp{h,d}2p{h,d} [xyz]mm/mem,[xyz]mm{k} */
                                        /* vcvts{h,d}2s{h,d} xmm/mem,xmm,xmm{k} */
-        host_and_vcpu_must_have(avx512_fp16);
+        visa_check(_fp16);
         if ( vex.pfx & VEX_PREFIX_SCALAR_MASK )
             d &= ~TwoOp;
         op_bytes = 2 << (((evex.pfx & VEX_PREFIX_SCALAR_MASK) ? 0 : 1 + evex.lr) +
@@ -7954,7 +7985,7 @@ x86_emulate(
                                        /* vcvtqq2ph [xyz]mm/mem,xmm{k} */
     case X86EMUL_OPC_EVEX_F2(5, 0x7a): /* vcvtudq2ph [xyz]mm/mem,[xy]mm{k} */
                                        /* vcvtuqq2ph [xyz]mm/mem,xmm{k} */
-        host_and_vcpu_must_have(avx512_fp16);
+        visa_check(_fp16);
         if ( ea.type != OP_REG || !evex.brs )
             avx512_vlen_check(false);
         op_bytes = 16 << evex.lr;
@@ -7964,7 +7995,7 @@ x86_emulate(
     case X86EMUL_OPC_EVEX_F3(5, 0x5b): /* vcvttph2dq [xy]mm/mem,[xyz]mm{k} */
     case X86EMUL_OPC_EVEX   (5, 0x78): /* vcvttph2udq [xy]mm/mem,[xyz]mm{k} */
     case X86EMUL_OPC_EVEX   (5, 0x79): /* vcvtph2udq [xy]mm/mem,[xyz]mm{k} */
-        host_and_vcpu_must_have(avx512_fp16);
+        visa_check(_fp16);
         generate_exception_if(evex.w, X86_EXC_UD);
         if ( ea.type != OP_REG || !evex.brs )
             avx512_vlen_check(false);
@@ -7975,7 +8006,7 @@ x86_emulate(
     case X86EMUL_OPC_EVEX_66(5, 0x79): /* vcvtph2uqq xmm/mem,[xyz]mm{k} */
     case X86EMUL_OPC_EVEX_66(5, 0x7a): /* vcvttph2qq xmm/mem,[xyz]mm{k} */
     case X86EMUL_OPC_EVEX_66(5, 0x7b): /* vcvtph2qq xmm/mem,[xyz]mm{k} */
-        host_and_vcpu_must_have(avx512_fp16);
+        visa_check(_fp16);
         generate_exception_if(evex.w, X86_EXC_UD);
         if ( ea.type != OP_REG || !evex.brs )
             avx512_vlen_check(false);
@@ -8012,7 +8043,7 @@ x86_emulate(
     case X86EMUL_OPC_EVEX_66(6, 0xba): /* vfmsub231ph [xyz]mm/mem,[xyz]mm,[xyz]mm{k} */
     case X86EMUL_OPC_EVEX_66(6, 0xbc): /* vfnmadd231ph [xyz]mm/mem,[xyz]mm,[xyz]mm{k} */
     case X86EMUL_OPC_EVEX_66(6, 0xbe): /* vfnmsub231ph [xyz]mm/mem,[xyz]mm,[xyz]mm{k} */
-        host_and_vcpu_must_have(avx512_fp16);
+        visa_check(_fp16);
         generate_exception_if(evex.w, X86_EXC_UD);
         if ( ea.type != OP_REG || !evex.brs )
             avx512_vlen_check(false);
@@ -8034,7 +8065,7 @@ x86_emulate(
     case X86EMUL_OPC_EVEX_66(6, 0xbb): /* vfmsub231sh xmm/m16,xmm,xmm{k} */
     case X86EMUL_OPC_EVEX_66(6, 0xbd): /* vfnmadd231sh xmm/m16,xmm,xmm{k} */
     case X86EMUL_OPC_EVEX_66(6, 0xbf): /* vfnmsub231sh xmm/m16,xmm,xmm{k} */
-        host_and_vcpu_must_have(avx512_fp16);
+        visa_check(_fp16);
         generate_exception_if(evex.w || (ea.type != OP_REG && evex.brs),
                               X86_EXC_UD);
         if ( !evex.brs )
@@ -8043,13 +8074,13 @@ x86_emulate(
 
     case X86EMUL_OPC_EVEX_66(6, 0x4c): /* vrcpph [xyz]mm/mem,[xyz]mm{k} */
     case X86EMUL_OPC_EVEX_66(6, 0x4e): /* vrsqrtph [xyz]mm/mem,[xyz]mm{k} */
-        host_and_vcpu_must_have(avx512_fp16);
+        visa_check(_fp16);
         generate_exception_if(evex.w, X86_EXC_UD);
         goto avx512f_no_sae;
 
     case X86EMUL_OPC_EVEX_66(6, 0x4d): /* vrcpsh xmm/m16,xmm,xmm{k} */
     case X86EMUL_OPC_EVEX_66(6, 0x4f): /* vrsqrtsh xmm/m16,xmm,xmm{k} */
-        host_and_vcpu_must_have(avx512_fp16);
+        visa_check(_fp16);
         generate_exception_if(evex.w || evex.brs, X86_EXC_UD);
         avx512_vlen_check(true);
         goto simd_zmm;
@@ -8067,7 +8098,7 @@ x86_emulate(
     {
         unsigned int src1 = ~evex.reg;
 
-        host_and_vcpu_must_have(avx512_fp16);
+        visa_check(_fp16);
         generate_exception_if(evex.w || ((b & 1) && ea.type != OP_REG && evex.brs),
                               X86_EXC_UD);
         if ( mode_64bit() )
--- a/xen/include/public/arch-x86/cpufeatureset.h
+++ b/xen/include/public/arch-x86/cpufeatureset.h
@@ -321,7 +321,7 @@ XEN_CPUFEATURE(AVX_VNNI_INT16,     15*32
 XEN_CPUFEATURE(PREFETCHI,          15*32+14) /*A  PREFETCHIT{0,1} Instructions */
 XEN_CPUFEATURE(USER_MSR,           15*32+15) /*s  U{RD,WR}MSR Instructions */
 XEN_CPUFEATURE(CET_SSS,            15*32+18) /*   CET Supervisor Shadow Stacks safe to use */
-XEN_CPUFEATURE(AVX10,              15*32+19) /*   AVX10 Converged Vector ISA */
+XEN_CPUFEATURE(AVX10,              15*32+19) /*a  AVX10 Converged Vector ISA */
 
 /* Intel-defined CPU features, MSR_ARCH_CAPS 0x10a.eax, word 16 */
 XEN_CPUFEATURE(RDCL_NO,            16*32+ 0) /*A  No Rogue Data Cache Load (Meltdown) */



From xen-devel-bounces@lists.xenproject.org Thu Jan 11 15:20:41 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 11 Jan 2024 15:20:41 +0000
Received: from list by lists.xenproject.org with outflank-mailman.666364.1036953 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNwrJ-0003XX-3n; Thu, 11 Jan 2024 15:20:41 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 666364.1036953; Thu, 11 Jan 2024 15:20:41 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNwrJ-0003XO-0e; Thu, 11 Jan 2024 15:20:41 +0000
Received: by outflank-mailman (input) for mailman id 666364;
 Thu, 11 Jan 2024 15:20:40 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=YFj+=IV=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rNwrI-0003X4-18
 for xen-devel@lists.xenproject.org; Thu, 11 Jan 2024 15:20:40 +0000
Received: from mail-wm1-x32b.google.com (mail-wm1-x32b.google.com
 [2a00:1450:4864:20::32b])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id f9373f9f-b094-11ee-9b0f-b553b5be7939;
 Thu, 11 Jan 2024 16:20:37 +0100 (CET)
Received: by mail-wm1-x32b.google.com with SMTP id
 5b1f17b1804b1-40e5f615a32so7137355e9.1
 for <xen-devel@lists.xenproject.org>; Thu, 11 Jan 2024 07:20:37 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 fk10-20020a05600c0cca00b0040e5a0ebabesm4245126wmb.21.2024.01.11.07.20.36
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 11 Jan 2024 07:20:37 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: f9373f9f-b094-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1704986437; x=1705591237; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:references:cc:to
         :from:content-language:subject:user-agent:mime-version:date
         :message-id:from:to:cc:subject:date:message-id:reply-to;
        bh=RMM3D0iEFifomsZgLJKbjqpOdTn//wfnRPE6nPynBks=;
        b=ZjCqVdCVW9Y0NCK5uhZaiYcB3jcu+w1z5vsmKqoIhJtjuzNDm13fFkPfmr4Vp1l+ej
         U1Yi81UhCtbKIyk/suJe21tSh6Krqcowuq6v4jJ7uUDB7Iy3xDYinA65EVnYpUIv0SIw
         eVSmCfhDPKFedjS8aIDg3wypbH9oU46BJnGD6AIlxhX0cwswhdA+JAwPcpIeeip+r7+0
         1fXrhDHXF53t0ENjvmTq5ZytxVHDU9EEktuXAeyYNTH2wa21lXtCpo0dQCCeh4ImqSCT
         3+I+fufzGzXJkawkVozqgb1qmTbMxUsc/bTx+0mrN/BJWdL9CIq4/O+vCpIfuWuLw1Z0
         MM5A==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704986437; x=1705591237;
        h=content-transfer-encoding:in-reply-to:autocrypt:references:cc:to
         :from:content-language:subject:user-agent:mime-version:date
         :message-id:x-gm-message-state:from:to:cc:subject:date:message-id
         :reply-to;
        bh=RMM3D0iEFifomsZgLJKbjqpOdTn//wfnRPE6nPynBks=;
        b=wrOvu1capuN9WVHWupPcN7Z35r56Qwt1M77cVHzB3R6UrbImUwQryO1UgbYaUY85fm
         HXBffWTINXW5r2eOXjeiAYQCPN82SqD74Ih4GGuF8W2+gp2XLm+uwrFFCa1cJadxU6VH
         C0dqyzAumFp8vQ4IcSpb1s+H2QN8lvilpEtKcK+d3pn6uR1xClSiF1laHqnJBzOGXib9
         cOFacBNRkeSqcTM4reY2tiAs8jzreybozWBdkBwJXCdO7VNm5EgLNYeNOvuwEDlq8qvl
         Y9kwfAnlw0Cc5cx4gvprJMzu5h4s5YeelfZtdh8ld7N1Y6yPlly+AqClbh4iYOLBw/VL
         vHKQ==
X-Gm-Message-State: AOJu0YxXLDl66I7bGjIdT0P1J29ZiOua5DfhQcdddmZpoe/RMmLF7bsU
	/rgF5k4ETsOD62X5+j4o1FiddEcrgsXZhPl/rEaI6colhA==
X-Google-Smtp-Source: AGHT+IGGByElgH0jNuAB7fFfGGmG5yjZY0ZWUGSc2An3w7p1TrZIoaZOJF72zc85fR9kpZVpTRDpEQ==
X-Received: by 2002:a05:600c:444b:b0:40d:8658:8c0d with SMTP id v11-20020a05600c444b00b0040d86588c0dmr301215wmn.3.1704986437380;
        Thu, 11 Jan 2024 07:20:37 -0800 (PST)
Message-ID: <f4bb147f-2ba4-4f75-a7a3-87d05d9d3450@suse.com>
Date: Thu, 11 Jan 2024 16:20:36 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: [PATCH 5/8] x86emul/test: use simd_check_avx512*() in main()
Content-Language: en-US
From: Jan Beulich <jbeulich@suse.com>
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, Wei Liu <wl@xen.org>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
References: <298db76f-d0ee-4d47-931f-1baa1a7546cf@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <298db76f-d0ee-4d47-931f-1baa1a7546cf@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

In preparation for having these also cover AVX10, use the helper
functions in preference of open-coded cpu_has_avx512* for those features
that AVX10 includes. Introduce a couple further helper functions where
they weren't previously needed.

Note that this way simd_check_avx512f_sha_vl() gains an AVX512F check
(which is likely benign) and simd_check_avx512bw_gf_vl() gains an
AVX512BW check (which was clearly missing). 

Signed-off-by: Jan Beulich <jbeulich@suse.com>

--- a/tools/tests/x86_emulator/test_x86_emulator.c
+++ b/tools/tests/x86_emulator/test_x86_emulator.c
@@ -173,6 +173,11 @@ static bool simd_check_avx512vbmi_vl(voi
     return cpu_has_avx512_vbmi && cpu_has_avx512vl;
 }
 
+static bool simd_check_avx512vbmi2(void)
+{
+    return cpu_has_avx512_vbmi2;
+}
+
 static bool simd_check_sse4_sha(void)
 {
     return cpu_has_sha && cpu_has_sse4_2;
@@ -185,7 +190,7 @@ static bool simd_check_avx_sha(void)
 
 static bool simd_check_avx512f_sha_vl(void)
 {
-    return cpu_has_sha && cpu_has_avx512vl;
+    return cpu_has_sha && simd_check_avx512f_vl();
 }
 
 static bool simd_check_avx2_vaes(void)
@@ -195,13 +200,13 @@ static bool simd_check_avx2_vaes(void)
 
 static bool simd_check_avx512bw_vaes(void)
 {
-    return cpu_has_aesni && cpu_has_vaes && cpu_has_avx512bw;
+    return cpu_has_aesni && cpu_has_vaes && simd_check_avx512bw();
 }
 
 static bool simd_check_avx512bw_vaes_vl(void)
 {
     return cpu_has_aesni && cpu_has_vaes &&
-           cpu_has_avx512bw && cpu_has_avx512vl;
+           simd_check_avx512bw_vl();
 }
 
 static bool simd_check_avx2_vpclmulqdq(void)
@@ -211,22 +216,22 @@ static bool simd_check_avx2_vpclmulqdq(v
 
 static bool simd_check_avx512bw_vpclmulqdq(void)
 {
-    return cpu_has_vpclmulqdq && cpu_has_avx512bw;
+    return cpu_has_vpclmulqdq && simd_check_avx512bw();
 }
 
 static bool simd_check_avx512bw_vpclmulqdq_vl(void)
 {
-    return cpu_has_vpclmulqdq && cpu_has_avx512bw && cpu_has_avx512vl;
+    return cpu_has_vpclmulqdq && simd_check_avx512bw_vl();
 }
 
 static bool simd_check_avx512vbmi2_vpclmulqdq(void)
 {
-    return cpu_has_avx512_vbmi2 && simd_check_avx512bw_vpclmulqdq();
+    return simd_check_avx512vbmi2() && simd_check_avx512bw_vpclmulqdq();
 }
 
 static bool simd_check_avx512vbmi2_vpclmulqdq_vl(void)
 {
-    return cpu_has_avx512_vbmi2 && simd_check_avx512bw_vpclmulqdq_vl();
+    return simd_check_avx512vbmi2() && simd_check_avx512bw_vpclmulqdq_vl();
 }
 
 static bool simd_check_sse2_gf(void)
@@ -241,12 +246,17 @@ static bool simd_check_avx2_gf(void)
 
 static bool simd_check_avx512bw_gf(void)
 {
-    return cpu_has_gfni && cpu_has_avx512bw;
+    return cpu_has_gfni && simd_check_avx512bw();
 }
 
 static bool simd_check_avx512bw_gf_vl(void)
 {
-    return cpu_has_gfni && cpu_has_avx512vl;
+    return cpu_has_gfni && simd_check_avx512bw_vl();
+}
+
+static bool simd_check_avx512vnni(void)
+{
+    return cpu_has_avx512_vnni;
 }
 
 static bool simd_check_avx512fp16(void)
@@ -3116,7 +3126,7 @@ int main(int argc, char **argv)
         printf("skipped\n");
 
     printf("%-40s", "Testing {evex} vmovq %xmm1,32(%edx)...");
-    if ( stack_exec && cpu_has_avx512f )
+    if ( stack_exec && simd_check_avx512f() )
     {
         decl_insn(evex_vmovq_to_mem);
 
@@ -3140,7 +3150,7 @@ int main(int argc, char **argv)
         printf("skipped\n");
 
     printf("%-40s", "Testing {evex} vmovq 32(%edx),%xmm0...");
-    if ( stack_exec && cpu_has_avx512f )
+    if ( stack_exec && simd_check_avx512f() )
     {
         decl_insn(evex_vmovq_from_mem);
 
@@ -3263,7 +3273,7 @@ int main(int argc, char **argv)
         printf("skipped\n");
 
     printf("%-40s", "Testing vmovdqu32 %zmm2,(%ecx){%k1}...");
-    if ( stack_exec && cpu_has_avx512f )
+    if ( stack_exec && simd_check_avx512f() )
     {
         decl_insn(vmovdqu32_to_mem);
 
@@ -3293,7 +3303,7 @@ int main(int argc, char **argv)
         printf("skipped\n");
 
     printf("%-40s", "Testing vmovdqu32 64(%edx),%zmm2{%k2}...");
-    if ( stack_exec && cpu_has_avx512f )
+    if ( stack_exec && simd_check_avx512f() )
     {
         decl_insn(vmovdqu32_from_mem);
 
@@ -3318,7 +3328,7 @@ int main(int argc, char **argv)
         printf("skipped\n");
 
     printf("%-40s", "Testing vmovdqu16 %zmm3,(%ecx){%k1}...");
-    if ( stack_exec && cpu_has_avx512bw )
+    if ( stack_exec && simd_check_avx512bw() )
     {
         decl_insn(vmovdqu16_to_mem);
 
@@ -3350,7 +3360,7 @@ int main(int argc, char **argv)
         printf("skipped\n");
 
     printf("%-40s", "Testing vmovdqu16 64(%edx),%zmm3{%k2}...");
-    if ( stack_exec && cpu_has_avx512bw )
+    if ( stack_exec && simd_check_avx512bw() )
     {
         decl_insn(vmovdqu16_from_mem);
 
@@ -3478,7 +3488,7 @@ int main(int argc, char **argv)
     printf("%-40s", "Testing vmovsd %xmm5,16(%ecx){%k3}...");
     memset(res, 0x88, 128);
     memset(res + 20, 0x77, 8);
-    if ( stack_exec && cpu_has_avx512f )
+    if ( stack_exec && simd_check_avx512f() )
     {
         decl_insn(vmovsd_masked_to_mem);
 
@@ -3513,7 +3523,7 @@ int main(int argc, char **argv)
     }
 
     printf("%-40s", "Testing vmovaps (%edx),%zmm7{%k3}{z}...");
-    if ( stack_exec && cpu_has_avx512f )
+    if ( stack_exec && simd_check_avx512f() )
     {
         decl_insn(vmovaps_masked_from_mem);
 
@@ -3696,7 +3706,7 @@ int main(int argc, char **argv)
         printf("skipped\n");
 
     printf("%-40s", "Testing {evex} vmovd %xmm3,32(%ecx)...");
-    if ( stack_exec && cpu_has_avx512f )
+    if ( stack_exec && simd_check_avx512f() )
     {
         decl_insn(evex_vmovd_to_mem);
 
@@ -3721,7 +3731,7 @@ int main(int argc, char **argv)
         printf("skipped\n");
 
     printf("%-40s", "Testing {evex} vmovd 32(%ecx),%xmm4...");
-    if ( stack_exec && cpu_has_avx512f )
+    if ( stack_exec && simd_check_avx512f() )
     {
         decl_insn(evex_vmovd_from_mem);
 
@@ -3911,7 +3921,7 @@ int main(int argc, char **argv)
         printf("skipped\n");
 
     printf("%-40s", "Testing {evex} vmovd %xmm2,%ebx...");
-    if ( stack_exec && cpu_has_avx512f )
+    if ( stack_exec && simd_check_avx512f() )
     {
         decl_insn(evex_vmovd_to_reg);
 
@@ -3937,7 +3947,7 @@ int main(int argc, char **argv)
         printf("skipped\n");
 
     printf("%-40s", "Testing {evex} vmovd %ebx,%xmm1...");
-    if ( stack_exec && cpu_has_avx512f )
+    if ( stack_exec && simd_check_avx512f() )
     {
         decl_insn(evex_vmovd_from_reg);
 
@@ -4039,7 +4049,7 @@ int main(int argc, char **argv)
         printf("skipped\n");
 
     printf("%-40s", "Testing {evex} vmovq %xmm11,32(%ecx)...");
-    if ( stack_exec && cpu_has_avx512f )
+    if ( stack_exec && simd_check_avx512f() )
     {
         decl_insn(evex_vmovq_to_mem2);
 
@@ -4129,7 +4139,7 @@ int main(int argc, char **argv)
         printf("skipped\n");
 
     printf("%-40s", "Testing vmovq %xmm22,%rbx...");
-    if ( stack_exec && cpu_has_avx512f )
+    if ( stack_exec && simd_check_avx512f() )
     {
         decl_insn(evex_vmovq_to_reg);
 
@@ -4322,7 +4332,7 @@ int main(int argc, char **argv)
         printf("skipped\n");
 
     printf("%-40s", "Testing vmovntdqa 64(%ecx),%zmm4...");
-    if ( stack_exec && cpu_has_avx512f )
+    if ( stack_exec && simd_check_avx512f() )
     {
         decl_insn(evex_vmovntdqa);
 
@@ -4918,7 +4928,7 @@ int main(int argc, char **argv)
         printf("skipped\n");
 
     printf("%-40s", "Testing vcvtph2ps 32(%ecx),%zmm7{%k4}...");
-    if ( stack_exec && cpu_has_avx512f )
+    if ( stack_exec && simd_check_avx512f() )
     {
         decl_insn(evex_vcvtph2ps);
         decl_insn(evex_vcvtps2ph);
@@ -4961,7 +4971,7 @@ int main(int argc, char **argv)
         printf("skipped\n");
 
     printf("%-40s", "Testing vfixupimmpd $0,8(%edx){1to8},%zmm3,%zmm4...");
-    if ( stack_exec && cpu_has_avx512f )
+    if ( stack_exec && simd_check_avx512f() )
     {
         decl_insn(vfixupimmpd);
         static const struct {
@@ -5000,7 +5010,7 @@ int main(int argc, char **argv)
 
 
     printf("%-40s", "Testing vfpclasspsz $0x46,64(%edx),%k2...");
-    if ( stack_exec && cpu_has_avx512dq )
+    if ( stack_exec && simd_check_avx512dq() )
     {
         decl_insn(vfpclassps);
 
@@ -5032,7 +5042,7 @@ int main(int argc, char **argv)
         printf("skipped\n");
 
     printf("%-40s", "Testing vfpclassphz $0x46,128(%ecx),%k3...");
-    if ( stack_exec && cpu_has_avx512_fp16 )
+    if ( stack_exec && simd_check_avx512fp16() )
     {
         decl_insn(vfpclassph);
 
@@ -5075,7 +5085,7 @@ int main(int argc, char **argv)
      * on the mapping boundaries) that elements controlled by clear mask
      * bits don't get accessed.
      */
-    if ( stack_exec && cpu_has_avx512f )
+    if ( stack_exec && simd_check_avx512f() )
     {
         decl_insn(vpcompressd);
         decl_insn(vpcompressq);
@@ -5177,7 +5187,7 @@ int main(int argc, char **argv)
     }
 
 #if __GNUC__ > 7 /* can't check for __AVX512VBMI2__ here */
-    if ( stack_exec && cpu_has_avx512_vbmi2 )
+    if ( stack_exec && simd_check_avx512vbmi2() )
     {
         decl_insn(vpcompressb);
         decl_insn(vpcompressw);
@@ -5440,7 +5450,7 @@ int main(int argc, char **argv)
     }
 
     printf("%-40s", "Testing vpdpwssd (%ecx),%{y,z}mmA,%{y,z}mmB...");
-    if ( stack_exec && cpu_has_avx512_vnni && cpu_has_avx_vnni )
+    if ( stack_exec && simd_check_avx512vnni() && cpu_has_avx_vnni )
     {
         /* Do the same operation two ways and compare the results. */
         decl_insn(vpdpwssd_vex1);
@@ -5495,7 +5505,7 @@ int main(int argc, char **argv)
         printf("skipped\n");
 
     printf("%-40s", "Testing vmovsh 8(%ecx),%xmm5...");
-    if ( stack_exec && cpu_has_avx512_fp16 )
+    if ( stack_exec && simd_check_avx512fp16() )
     {
         decl_insn(vmovsh_from_mem);
         decl_insn(vmovw_to_gpr);



From xen-devel-bounces@lists.xenproject.org Thu Jan 11 15:21:19 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 11 Jan 2024 15:21:19 +0000
Received: from list by lists.xenproject.org with outflank-mailman.666370.1036962 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNwrs-00047p-C8; Thu, 11 Jan 2024 15:21:16 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 666370.1036962; Thu, 11 Jan 2024 15:21:16 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNwrs-00047i-9B; Thu, 11 Jan 2024 15:21:16 +0000
Received: by outflank-mailman (input) for mailman id 666370;
 Thu, 11 Jan 2024 15:21:15 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=YFj+=IV=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rNwrr-00045k-Gf
 for xen-devel@lists.xenproject.org; Thu, 11 Jan 2024 15:21:15 +0000
Received: from mail-wm1-x32a.google.com (mail-wm1-x32a.google.com
 [2a00:1450:4864:20::32a])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 0e502da4-b095-11ee-9b0f-b553b5be7939;
 Thu, 11 Jan 2024 16:21:13 +0100 (CET)
Received: by mail-wm1-x32a.google.com with SMTP id
 5b1f17b1804b1-40e6275e9beso1903275e9.1
 for <xen-devel@lists.xenproject.org>; Thu, 11 Jan 2024 07:21:13 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 fk10-20020a05600c0cca00b0040e5a0ebabesm4245126wmb.21.2024.01.11.07.21.12
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 11 Jan 2024 07:21:12 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 0e502da4-b095-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1704986473; x=1705591273; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:references:cc:to
         :from:content-language:subject:user-agent:mime-version:date
         :message-id:from:to:cc:subject:date:message-id:reply-to;
        bh=8sR9iUBPyjz56T+rdvEviN3viyV4gNB0vCMZ4vWiszw=;
        b=Mg52yzYZdAj3I6B7CunlDCHvVAUVCfnP2kiw9O0cBp4b3XHya2W9dwBhweXn5IctN+
         ktyAbbF2rnGYrWcmxyD45ynFQ9o3YjpomnIyEMXsh0mQK9qNWaYjRPn+3FQeBSZrg8L6
         5yjap0XBLrZFGDqdwHhClfiWy7LubTUhvegRnzDUnNRWSaUxTrLgyw1+9YDZlTUzeicY
         NbIS9N8q7HuoAP6qeP+NTzS5JM7rVQzHZGDAGeYpIdypx93UyBAQZl3Ojm/f7NvTZ3NP
         NExY+3uaQsFphZPkK9D0cSE3W2ytON4J03MyTw9fotYq57p9M5TQCMDRfmXBUS1mHBik
         8fEw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704986473; x=1705591273;
        h=content-transfer-encoding:in-reply-to:autocrypt:references:cc:to
         :from:content-language:subject:user-agent:mime-version:date
         :message-id:x-gm-message-state:from:to:cc:subject:date:message-id
         :reply-to;
        bh=8sR9iUBPyjz56T+rdvEviN3viyV4gNB0vCMZ4vWiszw=;
        b=UGix0E4MB4V0z6SnyOBhRQByoLW4v0mXMs/rP+lqcWZ6PKI2LXZKi+0uj2iVWIfqVV
         CmUqlOLzEpqwGcdl1N6mNLYC/Fo4Tjj+a1UAKhRiXhtoY21QXPdGNqYMISRICEskBQAB
         8exsYeV+HGLCxCkuWGzdV3SCAmuOIdEX8IoAc/dG4EY/piK7Vx+jHEymErgt6SAIJcvV
         PNXiArCf0utvbENuhgerZXemMmSj53cvMf93xvG2u6USTmpYUcMRhabonbfWN3ntfoLw
         0iigWe/fXkGcf4tJ/Zhlk2M2CsJFkGNoy5CmcdUWo6UdErewzWFQ8aC0Hf5tegA7ipl/
         ZpNw==
X-Gm-Message-State: AOJu0Yw7bzVDSwXYaNG0ScQ0rVgJoQ6BkJ7zJh33n48D0EHSlE7Y/HwT
	djAs7nWjt/hOninJlZfGpO4d9AOsCd3urVxJ2+VpqmWLbA==
X-Google-Smtp-Source: AGHT+IEWxG+4nihFy66b0rZ4Uo9HIECs04qLXYWSQxj8Y2dUzgDrE6aK8ZVc8qNWtP/wJS/HLl3hmw==
X-Received: by 2002:a05:600c:384e:b0:40e:5660:c796 with SMTP id s14-20020a05600c384e00b0040e5660c796mr541012wmr.73.1704986472945;
        Thu, 11 Jan 2024 07:21:12 -0800 (PST)
Message-ID: <b44201a5-ff65-4ceb-9e54-04255bff781b@suse.com>
Date: Thu, 11 Jan 2024 16:21:12 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: [PATCH 6/8] x86emul/test: drop cpu_has_avx512vl
Content-Language: en-US
From: Jan Beulich <jbeulich@suse.com>
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, Wei Liu <wl@xen.org>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
References: <298db76f-d0ee-4d47-931f-1baa1a7546cf@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <298db76f-d0ee-4d47-931f-1baa1a7546cf@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

AVX512VL not being a standalone feature anyway, but always needing
to be combined with some other AVX512*, replace uses of
cpu_has_avx512vl by just the feature bit check.

Signed-off-by: Jan Beulich <jbeulich@suse.com>

--- a/tools/tests/x86_emulator/evex-disp8.c
+++ b/tools/tests/x86_emulator/evex-disp8.c
@@ -1031,7 +1031,8 @@ static void test_group(const struct test
     {
         for ( j = 0; j < nr_vl; ++j )
         {
-            if ( vl[0] == VL_512 && vl[j] != VL_512 && !cpu_has_avx512vl )
+            if ( vl[0] == VL_512 && vl[j] != VL_512 &&
+                 !cpu_policy.feat.avx512vl )
                 continue;
 
             switch ( tests[i].esz )
--- a/tools/tests/x86_emulator/test_x86_emulator.c
+++ b/tools/tests/x86_emulator/test_x86_emulator.c
@@ -132,7 +132,7 @@ static bool simd_check_avx512f(void)
 
 static bool simd_check_avx512f_vl(void)
 {
-    return cpu_has_avx512f && cpu_has_avx512vl;
+    return cpu_has_avx512f && cpu_policy.feat.avx512vl;
 }
 #define simd_check_avx512vl_sg simd_check_avx512f_vl
 
@@ -144,7 +144,7 @@ static bool simd_check_avx512dq(void)
 
 static bool simd_check_avx512dq_vl(void)
 {
-    return cpu_has_avx512dq && cpu_has_avx512vl;
+    return cpu_has_avx512dq && cpu_policy.feat.avx512vl;
 }
 
 static bool simd_check_avx512er(void)
@@ -160,7 +160,7 @@ static bool simd_check_avx512bw(void)
 
 static bool simd_check_avx512bw_vl(void)
 {
-    return cpu_has_avx512bw && cpu_has_avx512vl;
+    return cpu_has_avx512bw && cpu_policy.feat.avx512vl;
 }
 
 static bool simd_check_avx512vbmi(void)
@@ -170,7 +170,7 @@ static bool simd_check_avx512vbmi(void)
 
 static bool simd_check_avx512vbmi_vl(void)
 {
-    return cpu_has_avx512_vbmi && cpu_has_avx512vl;
+    return cpu_has_avx512_vbmi && cpu_policy.feat.avx512vl;
 }
 
 static bool simd_check_avx512vbmi2(void)
@@ -266,7 +266,7 @@ static bool simd_check_avx512fp16(void)
 
 static bool simd_check_avx512fp16_vl(void)
 {
-    return cpu_has_avx512_fp16 && cpu_has_avx512vl;
+    return cpu_has_avx512_fp16 && cpu_policy.feat.avx512vl;
 }
 
 static void simd_set_regs(struct cpu_user_regs *regs)
--- a/tools/tests/x86_emulator/x86-emulate.h
+++ b/tools/tests/x86_emulator/x86-emulate.h
@@ -160,7 +160,6 @@ void wrpkru(unsigned int val);
 #define cpu_has_avx512cd  (cpu_policy.feat.avx512cd && xcr0_mask(0xe6))
 #define cpu_has_sha        cpu_policy.feat.sha
 #define cpu_has_avx512bw  (cpu_policy.feat.avx512bw && xcr0_mask(0xe6))
-#define cpu_has_avx512vl  (cpu_policy.feat.avx512vl && xcr0_mask(0xe6))
 #define cpu_has_avx512_vbmi (cpu_policy.feat.avx512_vbmi && xcr0_mask(0xe6))
 #define cpu_has_avx512_vbmi2 (cpu_policy.feat.avx512_vbmi2 && xcr0_mask(0xe6))
 #define cpu_has_gfni       cpu_policy.feat.gfni



From xen-devel-bounces@lists.xenproject.org Thu Jan 11 15:21:37 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 11 Jan 2024 15:21:37 +0000
Received: from list by lists.xenproject.org with outflank-mailman.666372.1036973 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNwsD-0004Yy-KI; Thu, 11 Jan 2024 15:21:37 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 666372.1036973; Thu, 11 Jan 2024 15:21:37 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNwsD-0004Yr-Gs; Thu, 11 Jan 2024 15:21:37 +0000
Received: by outflank-mailman (input) for mailman id 666372;
 Thu, 11 Jan 2024 15:21:36 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=YFj+=IV=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rNwsC-00045k-Js
 for xen-devel@lists.xenproject.org; Thu, 11 Jan 2024 15:21:36 +0000
Received: from mail-wr1-x435.google.com (mail-wr1-x435.google.com
 [2a00:1450:4864:20::435])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 1aee62fc-b095-11ee-9b0f-b553b5be7939;
 Thu, 11 Jan 2024 16:21:34 +0100 (CET)
Received: by mail-wr1-x435.google.com with SMTP id
 ffacd0b85a97d-3368b1e056eso4392406f8f.3
 for <xen-devel@lists.xenproject.org>; Thu, 11 Jan 2024 07:21:34 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 fk10-20020a05600c0cca00b0040e5a0ebabesm4245126wmb.21.2024.01.11.07.21.33
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 11 Jan 2024 07:21:33 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 1aee62fc-b095-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1704986494; x=1705591294; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:references:cc:to
         :from:content-language:subject:user-agent:mime-version:date
         :message-id:from:to:cc:subject:date:message-id:reply-to;
        bh=IDNtIkUYBUxOgV95KZo88lsdyxrnB7KdD8z/bx9O3Jo=;
        b=KuoMPEp+YdfeUQ0l/vjBjO0W17k+1CO2Ql7N8hGzcFnaqUZemTda8AbI5XN20aGWG0
         epYfyPJL8kk0vXW2YiyN30w6OiSPYh3VCRPl+a7wj/psMe+E3D+ZUKCcWmnPwYCAx4sU
         tXtffX2KeN8+XAk+0HnfWL+lemdzhr9kmeZTYu29hwgL9UrWqBKWTZBa4mfHgxHZRHIy
         TTY3qdeYMe93gP6Ig7e91n0ezZEtNoUh42iLHihfxa2NbmC551PdIAzIuv+nbx5uDngw
         Fr9OL7bTv/jNnaQOUp9ZhBgdLguhsN6cXiSOfWIT1F7NOpCD9A0KBd1fxYkA5tdWE8SI
         M6HA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704986494; x=1705591294;
        h=content-transfer-encoding:in-reply-to:autocrypt:references:cc:to
         :from:content-language:subject:user-agent:mime-version:date
         :message-id:x-gm-message-state:from:to:cc:subject:date:message-id
         :reply-to;
        bh=IDNtIkUYBUxOgV95KZo88lsdyxrnB7KdD8z/bx9O3Jo=;
        b=JpDaONPugbZcIevaikXPn4TvkTGOhNcNi//VIt5fUuGr86ie6LkSYHBlJHGyYy+iU1
         5/kdIaJadtZGH4EqgXXOWnh5mUKuWOJyumLFlnY/VAEEFeOLECCDw6GXIcYXcpd5wZYm
         XRRh/x8WsHclJGU9mGDjYhnXbzSonjcwI7+GJBMOJ+0TMpAXKF3zcgOZ3d00Dx06LjQF
         Y2uiliKuYwAhUDSfsvBjPvEC893O6xUZbS10uqF6DsmU8PXh9Lfrje5n1oIspCk3PHGa
         N/YjFUQTH/8/t9Se+Iz8DOkX80P+kA8X+pPj8Wkx8DNbChFyJ2bNU5siVtCBrl9Xyji1
         Zrmw==
X-Gm-Message-State: AOJu0YzkqhVIypo6jOK8NK2n6fE1m808/h4TWXlfZIYwMLIx33CQwIXY
	N6H55B9eEu6vMF65SromRorY6srpOVDNOSZc3jScSX1iFg==
X-Google-Smtp-Source: AGHT+IHE4kXTzz2CtewNEdVfSDJEr6YgQ+/TSdXpIJybwIWdl5dUCbT29JetAl7KkVHDsK2k0+2T4Q==
X-Received: by 2002:a05:600c:4f8a:b0:40e:3a62:943b with SMTP id n10-20020a05600c4f8a00b0040e3a62943bmr570080wmq.20.1704986493923;
        Thu, 11 Jan 2024 07:21:33 -0800 (PST)
Message-ID: <bb2c30d8-2545-408f-a46f-c819b14eac9f@suse.com>
Date: Thu, 11 Jan 2024 16:21:33 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: [PATCH 7/8] x86emul: AVX10.1 testing
Content-Language: en-US
From: Jan Beulich <jbeulich@suse.com>
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, Wei Liu <wl@xen.org>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
References: <298db76f-d0ee-4d47-931f-1baa1a7546cf@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <298db76f-d0ee-4d47-931f-1baa1a7546cf@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

Re-use respective AVX512 tests, by suitably adjusting the predicate
functions. This leaves test names ("Testing ... NN-bit code sequence")
somewhat misleading, but I think we can live with that.

Note that the AVX512{BW,DQ} opmask tests cannot be run as-is for the
AVX10/256 case, as they include 512-bit vector <-> opmask insn tests.

Sadly until a newer SDE version (matching ISE 050 or newer) is
available, one workaround is necessary to be able to run the test
harness on SDE 9.27.0.

Signed-off-by: Jan Beulich <jbeulich@suse.com>
---
SDE: -gnr / -gnr256
---
TBD: For AVX10.1/256 need to somehow guarantee that the generated blobs
     really don't use 512-bit insns (it's uncertain whether passing
     -mprefer-vector-width= is enough). Right now according to my
     testing on SDE this is all fine. May need to probe for support of
     the new -mno-evex512 compiler option.

The AVX512{BW,DQ} opmask tests could of course be cloned (i.e. rebuilt
another time with -mavx512vl passed) accordingly, but the coverage gain
wouldbe pretty marginal (plus there would again be issues with SDE
9.27.0).

--- a/tools/tests/x86_emulator/evex-disp8.c
+++ b/tools/tests/x86_emulator/evex-disp8.c
@@ -1032,7 +1032,11 @@ static void test_group(const struct test
         for ( j = 0; j < nr_vl; ++j )
         {
             if ( vl[0] == VL_512 && vl[j] != VL_512 &&
-                 !cpu_policy.feat.avx512vl )
+                 !cpu_policy.feat.avx512vl && !cpu_policy.feat.avx10 )
+                continue;
+
+            if ( vl[j] == VL_512 && !cpu_policy.feat.avx512f &&
+                 !cpu_policy.avx10.vsz512 )
                 continue;
 
             switch ( tests[i].esz )
@@ -1083,6 +1087,27 @@ static void test_group(const struct test
     }
 }
 
+/* AVX512 (sub)features implied by AVX10. */
+#define avx10_has_avx512f             true
+#define avx10_has_avx512bw            true
+#define avx10_has_avx512cd            true
+#define avx10_has_avx512dq            true
+#define avx10_has_avx512_bf16         true
+#define avx10_has_avx512_bitalg       true
+#define avx10_has_avx512_fp16         true
+#define avx10_has_avx512_ifma         true
+#define avx10_has_avx512_vbmi         true
+#define avx10_has_avx512_vbmi2        true
+#define avx10_has_avx512_vnni         true
+#define avx10_has_avx512_vpopcntdq    true
+
+/* AVX512 sub-features /not/ implied by AVX10. */
+#define avx10_has_avx512er            false
+#define avx10_has_avx512pf            false
+#define avx10_has_avx512_4fmaps       false
+#define avx10_has_avx512_4vnniw       false
+#define avx10_has_avx512_vp2intersect false
+
 void evex_disp8_test(void *instr, struct x86_emulate_ctxt *ctxt,
                      const struct x86_emulate_ops *ops)
 {
@@ -1090,8 +1115,8 @@ void evex_disp8_test(void *instr, struct
     emulops.read = read;
     emulops.write = write;
 
-#define RUN(feat, vl) do { \
-    if ( cpu_has_##feat ) \
+#define run(cond, feat, vl) do { \
+    if ( cond ) \
     { \
         printf("%-40s", "Testing " #feat "/" #vl " disp8 handling..."); \
         test_group(feat ## _ ## vl, ARRAY_SIZE(feat ## _ ## vl), \
@@ -1100,6 +1125,12 @@ void evex_disp8_test(void *instr, struct
     } \
 } while ( false )
 
+#define RUN(feat, vl) \
+    run(cpu_has_ ## feat || \
+        (cpu_has_avx10_1 && cpu_policy.avx10.vsz256 && avx10_has_ ## feat && \
+         (ARRAY_SIZE(vl_ ## vl) > 1 || &vl_ ## vl[0] != &vl_512[0])), \
+       feat, vl)
+
     RUN(avx512f, all);
     RUN(avx512f, 128);
     RUN(avx512f, no128);
@@ -1127,10 +1158,15 @@ void evex_disp8_test(void *instr, struct
     RUN(avx512_fp16, all);
     RUN(avx512_fp16, 128);
 
-    if ( cpu_has_avx512f )
+#undef RUN
+
+    if ( cpu_has_avx512f || cpu_has_avx10_1 )
     {
+#define RUN(feat, vl) run(cpu_has_ ## feat, feat, vl)
         RUN(gfni, all);
         RUN(vaes, all);
         RUN(vpclmulqdq, all);
+#undef RUN
     }
+#undef run
 }
--- a/tools/tests/x86_emulator/testcase.mk
+++ b/tools/tests/x86_emulator/testcase.mk
@@ -4,7 +4,27 @@ include $(XEN_ROOT)/tools/Rules.mk
 
 $(call cc-options-add,CFLAGS,CC,$(EMBEDDED_EXTRA_CFLAGS))
 
-CFLAGS += -fno-builtin -g0 $($(TESTCASE)-cflags)
+ifneq ($(filter -mavx512%,$($(TESTCASE)-cflags)),)
+
+cflags-vsz64 :=
+cflags-vsz32 := -mprefer-vector-width=256
+cflags-vsz16 := -mprefer-vector-width=128
+# Scalar tests don't set VEC_SIZE (and VEC_MAX is used by S/G ones only)
+cflags-vsz   := -mprefer-vector-width=128
+
+ifneq ($(filter -DVEC_SIZE=%,$($(TESTCASE)-cflags)),)
+CFLAGS-VSZ := $(cflags-vsz$(patsubst -DVEC_SIZE=%,%,$(filter -DVEC_SIZE=%,$($(TESTCASE)-cflags))))
+else
+CFLAGS-VSZ := $(cflags-vsz$(patsubst -DVEC_MAX=%,%,$(filter -DVEC_MAX=%,$($(TESTCASE)-cflags))))
+endif
+
+else
+
+CFLAGS-VSZ :=
+
+endif
+
+CFLAGS += -fno-builtin -g0 $($(TESTCASE)-cflags) $(CFLAGS-VSZ)
 
 LDFLAGS_DIRECT += $(shell { $(LD) -v --warn-rwx-segments; } >/dev/null 2>&1 && echo --no-warn-rwx-segments)
 
--- a/tools/tests/x86_emulator/test_x86_emulator.c
+++ b/tools/tests/x86_emulator/test_x86_emulator.c
@@ -125,26 +125,33 @@ static bool simd_check_avx_pclmul(void)
 
 static bool simd_check_avx512f(void)
 {
-    return cpu_has_avx512f;
+    return cpu_has_avx512f || cpu_has_avx10_1_512;
 }
-#define simd_check_avx512f_opmask simd_check_avx512f
 #define simd_check_avx512f_sg simd_check_avx512f
 
+static bool simd_check_avx512f_sc(void)
+{
+    return cpu_has_avx512f || cpu_has_avx10_1;
+}
+#define simd_check_avx512f_opmask simd_check_avx512f_sc
+
 static bool simd_check_avx512f_vl(void)
 {
-    return cpu_has_avx512f && cpu_policy.feat.avx512vl;
+    return (cpu_has_avx512f && cpu_policy.feat.avx512vl) ||
+           cpu_has_avx10_1_256;
 }
 #define simd_check_avx512vl_sg simd_check_avx512f_vl
 
 static bool simd_check_avx512dq(void)
 {
-    return cpu_has_avx512dq;
+    return cpu_has_avx512dq || cpu_has_avx10_1_512;
 }
 #define simd_check_avx512dq_opmask simd_check_avx512dq
 
 static bool simd_check_avx512dq_vl(void)
 {
-    return cpu_has_avx512dq && cpu_policy.feat.avx512vl;
+    return (cpu_has_avx512dq && cpu_policy.feat.avx512vl) ||
+           cpu_has_avx10_1_256;
 }
 
 static bool simd_check_avx512er(void)
@@ -154,28 +161,30 @@ static bool simd_check_avx512er(void)
 
 static bool simd_check_avx512bw(void)
 {
-    return cpu_has_avx512bw;
+    return cpu_has_avx512bw || cpu_has_avx10_1_512;
 }
 #define simd_check_avx512bw_opmask simd_check_avx512bw
 
 static bool simd_check_avx512bw_vl(void)
 {
-    return cpu_has_avx512bw && cpu_policy.feat.avx512vl;
+    return (cpu_has_avx512bw && cpu_policy.feat.avx512vl) ||
+           cpu_has_avx10_1_256;
 }
 
 static bool simd_check_avx512vbmi(void)
 {
-    return cpu_has_avx512_vbmi;
+    return cpu_has_avx512_vbmi || cpu_has_avx10_1_512;
 }
 
 static bool simd_check_avx512vbmi_vl(void)
 {
-    return cpu_has_avx512_vbmi && cpu_policy.feat.avx512vl;
+    return (cpu_has_avx512_vbmi && cpu_policy.feat.avx512vl) ||
+           cpu_has_avx10_1_256;
 }
 
 static bool simd_check_avx512vbmi2(void)
 {
-    return cpu_has_avx512_vbmi2;
+    return cpu_has_avx512_vbmi2 || cpu_has_avx10_1_512;
 }
 
 static bool simd_check_sse4_sha(void)
@@ -256,17 +265,23 @@ static bool simd_check_avx512bw_gf_vl(vo
 
 static bool simd_check_avx512vnni(void)
 {
-    return cpu_has_avx512_vnni;
+    return cpu_has_avx512_vnni || cpu_has_avx10_1_512;
 }
 
 static bool simd_check_avx512fp16(void)
 {
-    return cpu_has_avx512_fp16;
+    return cpu_has_avx512_fp16 || cpu_has_avx10_1_512;
+}
+
+static bool simd_check_avx512fp16_sc(void)
+{
+    return cpu_has_avx512_fp16 || cpu_has_avx10_1;
 }
 
 static bool simd_check_avx512fp16_vl(void)
 {
-    return cpu_has_avx512_fp16 && cpu_policy.feat.avx512vl;
+    return (cpu_has_avx512_fp16 && cpu_policy.feat.avx512vl) ||
+           cpu_has_avx10_1_256;
 }
 
 static void simd_set_regs(struct cpu_user_regs *regs)
@@ -439,9 +454,13 @@ static const struct {
     SIMD(OPMASK+DQ/w, avx512dq_opmask,         2),
     SIMD(OPMASK+BW/d, avx512bw_opmask,         4),
     SIMD(OPMASK+BW/q, avx512bw_opmask,         8),
-    SIMD(AVX512F f32 scalar,  avx512f,        f4),
+#define avx512f_sc_x86_32_D_f4 avx512f_x86_32_D_f4
+#define avx512f_sc_x86_64_D_f4 avx512f_x86_64_D_f4
+    SIMD(AVX512F f32 scalar,  avx512f_sc,     f4),
     SIMD(AVX512F f32x16,      avx512f,      64f4),
-    SIMD(AVX512F f64 scalar,  avx512f,        f8),
+#define avx512f_sc_x86_32_D_f8 avx512f_x86_32_D_f8
+#define avx512f_sc_x86_64_D_f8 avx512f_x86_64_D_f8
+    SIMD(AVX512F f64 scalar,  avx512f_sc,     f8),
     SIMD(AVX512F f64x8,       avx512f,      64f8),
     SIMD(AVX512F s32x16,      avx512f,      64i4),
     SIMD(AVX512F u32x16,      avx512f,      64u4),
@@ -533,7 +552,9 @@ static const struct {
     AVX512VL(_VBMI+VL u16x8, avx512vbmi,    16u2),
     AVX512VL(_VBMI+VL s16x16, avx512vbmi,   32i2),
     AVX512VL(_VBMI+VL u16x16, avx512vbmi,   32u2),
-    SIMD(AVX512_FP16 f16 scal,avx512fp16,     f2),
+#define avx512fp16_sc_x86_32_D_f2 avx512fp16_x86_32_D_f2
+#define avx512fp16_sc_x86_64_D_f2 avx512fp16_x86_64_D_f2
+    SIMD(AVX512_FP16 f16 scal,avx512fp16_sc,  f2),
     SIMD(AVX512_FP16 f16x32, avx512fp16,    64f2),
     AVX512VL(_FP16+VL f16x8, avx512fp16,    16f2),
     AVX512VL(_FP16+VL f16x16,avx512fp16,    32f2),
@@ -3126,7 +3147,7 @@ int main(int argc, char **argv)
         printf("skipped\n");
 
     printf("%-40s", "Testing {evex} vmovq %xmm1,32(%edx)...");
-    if ( stack_exec && simd_check_avx512f() )
+    if ( stack_exec && simd_check_avx512f_sc() )
     {
         decl_insn(evex_vmovq_to_mem);
 
@@ -3150,7 +3171,7 @@ int main(int argc, char **argv)
         printf("skipped\n");
 
     printf("%-40s", "Testing {evex} vmovq 32(%edx),%xmm0...");
-    if ( stack_exec && simd_check_avx512f() )
+    if ( stack_exec && simd_check_avx512f_sc() )
     {
         decl_insn(evex_vmovq_from_mem);
 
@@ -3162,11 +3183,22 @@ int main(int argc, char **argv)
         rc = x86_emulate(&ctxt, &emulops);
         if ( rc != X86EMUL_OKAY || !check_eip(evex_vmovq_from_mem) )
             goto fail;
-        asm ( "vmovq %1, %%xmm1\n\t"
-              "vpcmpeqq %%zmm0, %%zmm1, %%k0\n"
-              "kmovw %%k0, %0" : "=r" (rc) : "m" (res[8]) );
-        if ( rc != 0xff )
-            goto fail;
+        if ( simd_check_avx512f() )
+        {
+            asm ( "vmovq %1, %%xmm1\n\t"
+                  "vpcmpeqq %%zmm0, %%zmm1, %%k0\n"
+                  "kmovw %%k0, %0" : "=r" (rc) : "m" (res[8]) );
+            if ( rc != 0x00ff )
+                goto fail;
+        }
+        else
+        {
+            asm ( "vmovq %1, %%xmm1\n\t"
+                  "vpcmpeqq %%xmm0, %%xmm1, %%k0\n"
+                  "kmovb %%k0, %0" : "=r" (rc) : "m" (res[8]) );
+            if ( rc != 0x03 )
+                goto fail;
+        }
         printf("okay\n");
     }
     else
@@ -3488,7 +3520,7 @@ int main(int argc, char **argv)
     printf("%-40s", "Testing vmovsd %xmm5,16(%ecx){%k3}...");
     memset(res, 0x88, 128);
     memset(res + 20, 0x77, 8);
-    if ( stack_exec && simd_check_avx512f() )
+    if ( stack_exec && simd_check_avx512f_sc() )
     {
         decl_insn(vmovsd_masked_to_mem);
 
@@ -3706,7 +3738,7 @@ int main(int argc, char **argv)
         printf("skipped\n");
 
     printf("%-40s", "Testing {evex} vmovd %xmm3,32(%ecx)...");
-    if ( stack_exec && simd_check_avx512f() )
+    if ( stack_exec && simd_check_avx512f_sc() )
     {
         decl_insn(evex_vmovd_to_mem);
 
@@ -3731,7 +3763,7 @@ int main(int argc, char **argv)
         printf("skipped\n");
 
     printf("%-40s", "Testing {evex} vmovd 32(%ecx),%xmm4...");
-    if ( stack_exec && simd_check_avx512f() )
+    if ( stack_exec && simd_check_avx512f_sc() )
     {
         decl_insn(evex_vmovd_from_mem);
 
@@ -3744,11 +3776,22 @@ int main(int argc, char **argv)
         rc = x86_emulate(&ctxt, &emulops);
         if ( rc != X86EMUL_OKAY || !check_eip(evex_vmovd_from_mem) )
             goto fail;
-        asm ( "vmovd %1, %%xmm0\n\t"
-              "vpcmpeqd %%zmm4, %%zmm0, %%k0\n\t"
-              "kmovw %%k0, %0" : "=r" (rc) : "m" (res[8]) );
-        if ( rc != 0xffff )
-            goto fail;
+        if ( simd_check_avx512f() )
+        {
+            asm ( "vmovd %1, %%xmm0\n\t"
+                  "vpcmpeqd %%zmm4, %%zmm0, %%k0\n\t"
+                  "kmovw %%k0, %0" : "=r" (rc) : "m" (res[8]) );
+            if ( rc != 0xffff )
+                goto fail;
+        }
+        else
+        {
+            asm ( "vmovd %1, %%xmm0\n\t"
+                  "vpcmpeqd %%xmm4, %%xmm0, %%k0\n\t"
+                  "kmovb %%k0, %0" : "=r" (rc) : "m" (res[8]) );
+            if ( rc != 0x0f )
+                goto fail;
+        }
         printf("okay\n");
     }
     else
@@ -3921,7 +3964,7 @@ int main(int argc, char **argv)
         printf("skipped\n");
 
     printf("%-40s", "Testing {evex} vmovd %xmm2,%ebx...");
-    if ( stack_exec && simd_check_avx512f() )
+    if ( stack_exec && simd_check_avx512f_sc() )
     {
         decl_insn(evex_vmovd_to_reg);
 
@@ -3947,7 +3990,7 @@ int main(int argc, char **argv)
         printf("skipped\n");
 
     printf("%-40s", "Testing {evex} vmovd %ebx,%xmm1...");
-    if ( stack_exec && simd_check_avx512f() )
+    if ( stack_exec && simd_check_avx512f_sc() )
     {
         decl_insn(evex_vmovd_from_reg);
 
@@ -3961,11 +4004,22 @@ int main(int argc, char **argv)
         rc = x86_emulate(&ctxt, &emulops);
         if ( (rc != X86EMUL_OKAY) || !check_eip(evex_vmovd_from_reg) )
             goto fail;
-        asm ( "vmovd %1, %%xmm0\n\t"
-              "vpcmpeqd %%zmm1, %%zmm0, %%k0\n\t"
-              "kmovw %%k0, %0" : "=r" (rc) : "m" (res[8]) );
-        if ( rc != 0xffff )
-            goto fail;
+        if ( simd_check_avx512f() )
+        {
+            asm ( "vmovd %1, %%xmm0\n\t"
+                  "vpcmpeqd %%zmm1, %%zmm0, %%k0\n\t"
+                  "kmovw %%k0, %0" : "=r" (rc) : "m" (res[8]) );
+            if ( rc != 0xffff )
+                goto fail;
+        }
+        else
+        {
+            asm ( "vmovd %1, %%xmm0\n\t"
+                  "vpcmpeqd %%xmm1, %%xmm0, %%k0\n\t"
+                  "kmovb %%k0, %0" : "=r" (rc) : "m" (res[8]) );
+            if ( rc != 0x0f )
+                goto fail;
+        }
         printf("okay\n");
     }
     else
@@ -4049,7 +4103,7 @@ int main(int argc, char **argv)
         printf("skipped\n");
 
     printf("%-40s", "Testing {evex} vmovq %xmm11,32(%ecx)...");
-    if ( stack_exec && simd_check_avx512f() )
+    if ( stack_exec && simd_check_avx512f_sc() )
     {
         decl_insn(evex_vmovq_to_mem2);
 
@@ -4139,7 +4193,7 @@ int main(int argc, char **argv)
         printf("skipped\n");
 
     printf("%-40s", "Testing vmovq %xmm22,%rbx...");
-    if ( stack_exec && simd_check_avx512f() )
+    if ( stack_exec && simd_check_avx512f_sc() )
     {
         decl_insn(evex_vmovq_to_reg);
 
@@ -5505,7 +5559,7 @@ int main(int argc, char **argv)
         printf("skipped\n");
 
     printf("%-40s", "Testing vmovsh 8(%ecx),%xmm5...");
-    if ( stack_exec && simd_check_avx512fp16() )
+    if ( stack_exec && simd_check_avx512fp16_sc() )
     {
         decl_insn(vmovsh_from_mem);
         decl_insn(vmovw_to_gpr);
@@ -5523,14 +5577,28 @@ int main(int argc, char **argv)
         rc = x86_emulate(&ctxt, &emulops);
         if ( (rc != X86EMUL_OKAY) || !check_eip(vmovsh_from_mem) )
             goto fail;
-        asm volatile ( "kmovw     %2, %%k1\n\t"
-                       "vmovdqu16 %1, %%zmm4%{%%k1%}%{z%}\n\t"
-                       "vpcmpeqw  %%zmm4, %%zmm5, %%k0\n\t"
-                       "kmovw     %%k0, %0"
-                       : "=g" (rc)
-                       : "m" (res[2]), "r" (1) );
-        if ( rc != 0xffff )
-            goto fail;
+        if ( simd_check_avx512fp16() )
+        {
+            asm volatile ( "kmovw     %2, %%k1\n\t"
+                           "vmovdqu16 %1, %%zmm4%{%%k1%}%{z%}\n\t"
+                           "vpcmpeqw  %%zmm4, %%zmm5, %%k0\n\t"
+                           "kmovw     %%k0, %0"
+                           : "=g" (rc)
+                           : "m" (res[2]), "r" (1) );
+            if ( rc != 0xffff )
+                goto fail;
+        }
+        else
+        {
+            asm volatile ( "kmovb     %2, %%k1\n\t"
+                           "vmovdqu16 %1, %%xmm4%{%%k1%}%{z%}\n\t"
+                           "vpcmpeqw  %%xmm4, %%xmm5, %%k0\n\t"
+                           "kmovb     %%k0, %0"
+                           : "=g" (rc)
+                           : "m" (res[2]), "r" (1) );
+            if ( rc != 0xff )
+                goto fail;
+        }
         printf("okay\n");
 
         printf("%-40s", "Testing vmovsh %xmm4,2(%eax){%k3}...");
--- a/tools/tests/x86_emulator/x86-emulate.c
+++ b/tools/tests/x86_emulator/x86-emulate.c
@@ -243,7 +243,7 @@ int emul_test_get_fpu(
             break;
     case X86EMUL_FPU_opmask:
     case X86EMUL_FPU_zmm:
-        if ( cpu_has_avx512f )
+        if ( cpu_has_avx512f || cpu_has_avx10_1 )
             break;
     default:
         return X86EMUL_UNHANDLEABLE;
--- a/tools/tests/x86_emulator/x86-emulate.h
+++ b/tools/tests/x86_emulator/x86-emulate.h
@@ -185,6 +185,12 @@ void wrpkru(unsigned int val);
 #define cpu_has_avx_vnni_int8 (cpu_policy.feat.avx_vnni_int8 && xcr0_mask(6))
 #define cpu_has_avx_ne_convert (cpu_policy.feat.avx_ne_convert && xcr0_mask(6))
 #define cpu_has_avx_vnni_int16 (cpu_policy.feat.avx_vnni_int16 && xcr0_mask(6))
+                           /* TBD: Is bit 6 (ZMM_Hi256) really needed here? */
+#define cpu_has_avx10_1    (cpu_policy.feat.avx10 && xcr0_mask(0xe6))
+#define cpu_has_avx10_1_256 (cpu_has_avx10_1 && \
+                             (cpu_policy.avx10.vsz256 || \
+                              cpu_policy.avx10.vsz512))
+#define cpu_has_avx10_1_512 (cpu_has_avx10_1 && cpu_policy.avx10.vsz512)
 
 #define cpu_has_xgetbv1   (cpu_has_xsave && cpu_policy.xstate.xgetbv1)
 
--- a/xen/arch/x86/x86_emulate/x86_emulate.c
+++ b/xen/arch/x86/x86_emulate/x86_emulate.c
@@ -1396,6 +1396,14 @@ x86_emulate(
         stb[2] = cp->feat.avx512bw || cp->feat.avx10
                  ? 0xf8 /* L0.NP.W1 - kmovq */
                  : 0x78 /* L0.NP.W0 - kmovw */;
+#ifndef __XEN__
+        /*
+         * SDE 9.27.0 is following ISE 049, where 64-bit opmask insns were
+         * valid only with vsz512.
+         */
+        if ( cp->feat.avx10 && !cp->avx10.vsz512 )
+            stb[2] = 0xf9 /* L0.66.W1 - kmovd */;
+#endif
         stb[3] = 0x91;
         stb[4] = evex.opmsk << 3;
         insn_bytes = 5;



From xen-devel-bounces@lists.xenproject.org Thu Jan 11 15:22:15 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 11 Jan 2024 15:22:15 +0000
Received: from list by lists.xenproject.org with outflank-mailman.666380.1036983 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNwso-0005Fk-35; Thu, 11 Jan 2024 15:22:14 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 666380.1036983; Thu, 11 Jan 2024 15:22:14 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNwso-0005Fd-0O; Thu, 11 Jan 2024 15:22:14 +0000
Received: by outflank-mailman (input) for mailman id 666380;
 Thu, 11 Jan 2024 15:22:12 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=YFj+=IV=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rNwsm-0005FK-IY
 for xen-devel@lists.xenproject.org; Thu, 11 Jan 2024 15:22:12 +0000
Received: from mail-wm1-x336.google.com (mail-wm1-x336.google.com
 [2a00:1450:4864:20::336])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 310eb6cc-b095-11ee-98f0-6d05b1d4d9a1;
 Thu, 11 Jan 2024 16:22:11 +0100 (CET)
Received: by mail-wm1-x336.google.com with SMTP id
 5b1f17b1804b1-40e55c885d7so22774885e9.0
 for <xen-devel@lists.xenproject.org>; Thu, 11 Jan 2024 07:22:11 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 fk10-20020a05600c0cca00b0040e5a0ebabesm4245126wmb.21.2024.01.11.07.22.10
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 11 Jan 2024 07:22:10 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 310eb6cc-b095-11ee-98f0-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1704986531; x=1705591331; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:references:cc:to
         :from:content-language:subject:user-agent:mime-version:date
         :message-id:from:to:cc:subject:date:message-id:reply-to;
        bh=VGSyTsew86/TrCcru/Rk7R/2beYcoXHkI1pXLpAyXsw=;
        b=KQFvNwtc/UE89YBPxY89GP2ckf7DXHiC2VCkp8V5LkzpveKpbp3slVufYIpx8MAkKp
         MJEpYzp8jVQRNoVjK/5E2e0Gy3rL2Y7bRsPo1c5Te47g8TqztkyGArrQ3A79JJCbh42r
         a66IEGeo5+Ck2gSNUUQ/hnnAoC2S68LcH7KuJDyVcSyfMXkH6Vb+D1iZIGoWkzA8j11i
         yKGqFzhf3vU+wGAj52RWFueNEBFvbnjMorLVICMWUeAqDH/Ki8+SNMLuCcdqfL+WpRJE
         Vrh3gdlKtFqcFsMXFt6upfTjB0Tu6j7nShKuSmDN8R9Lfas0baZQEAjEq/0GvMDAXogR
         s6FQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704986531; x=1705591331;
        h=content-transfer-encoding:in-reply-to:autocrypt:references:cc:to
         :from:content-language:subject:user-agent:mime-version:date
         :message-id:x-gm-message-state:from:to:cc:subject:date:message-id
         :reply-to;
        bh=VGSyTsew86/TrCcru/Rk7R/2beYcoXHkI1pXLpAyXsw=;
        b=Qjho3Ch+V6+LXpePR6HyCyHXYem9xVz9eAbsUvHvJaguB7cFvKTo3sFi+p8byq9ySd
         52XNMZ/A9VW6KHDxyYMA4spBTIKUOGQJBH8abnjFSCwlHeqc3GMfCL8fMwzZaq8CCFyN
         w5P4JRHvHdQNrhRksKfaFDUIWBMcTIdzsE9cekDyMPgl8O13Tj3qk7+5elYjSmPPtd3S
         fWoD0APOAP/OqVpUpswm3XtRi/aGXXU634U2ib4x6bKa7uMvHYj13zcCOKBtGZgmqoy7
         9WpQJHON4pgYHnIofhhMhcddgSMqxkX8DO0COnncF4oRd3nhN0kIOPGuSv2baQp17fbJ
         pDjw==
X-Gm-Message-State: AOJu0Yw5HsGmG3vRRdkkDJWX8FOi0gvfdOvJoe8sL7eQH2yE52eUdkku
	B4Gd83mQB60CHbVmSUepSkx6XU4Nk/68AnzYHkW7lxkvRg==
X-Google-Smtp-Source: AGHT+IEzL++dGMBUaXBsTL9iNFV3DktscG+XvFSst4IQStMlDWON/cU7xbdf2WsawJuVvzayiqm7dg==
X-Received: by 2002:a05:600c:3d95:b0:40e:4905:3fb with SMTP id bi21-20020a05600c3d9500b0040e490503fbmr466778wmb.32.1704986531094;
        Thu, 11 Jan 2024 07:22:11 -0800 (PST)
Message-ID: <837da45e-c5e2-4327-996a-13abf962adc8@suse.com>
Date: Thu, 11 Jan 2024 16:22:10 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: [PATCH 8/8] x86emul/test: engage AVX512VL via command line option
Content-Language: en-US
From: Jan Beulich <jbeulich@suse.com>
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, Wei Liu <wl@xen.org>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
References: <298db76f-d0ee-4d47-931f-1baa1a7546cf@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <298db76f-d0ee-4d47-931f-1baa1a7546cf@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

Now that we have machinery in testcase.mk to set vector length dependent
flags for AVX512 tests, let's avoid using a pragma to enable AVX512VL
insns for the compiler. This way, correct settings are in place from the
very beginning of compilation.

No change to the generated test blobs, and hence no functional change.

Signed-off-by: Jan Beulich <jbeulich@suse.com>

--- a/tools/tests/x86_emulator/simd.h
+++ b/tools/tests/x86_emulator/simd.h
@@ -215,10 +215,6 @@ DECL_OCTET(half);
 # define __builtin_ia32_shuf_i32x4_512_mask __builtin_ia32_shuf_i32x4_mask
 # define __builtin_ia32_shuf_i64x2_512_mask __builtin_ia32_shuf_i64x2_mask
 
-# if VEC_SIZE > ELEM_SIZE && (defined(VEC_MAX) ? VEC_MAX : VEC_SIZE) < 64
-#  pragma GCC target ( "avx512vl" )
-# endif
-
 # define REN(insn, old, new)                     \
     asm ( ".macro v" #insn #old " o:vararg \n\t" \
           "v" #insn #new " \\o             \n\t" \
--- a/tools/tests/x86_emulator/testcase.mk
+++ b/tools/tests/x86_emulator/testcase.mk
@@ -7,8 +7,8 @@ $(call cc-options-add,CFLAGS,CC,$(EMBEDD
 ifneq ($(filter -mavx512%,$($(TESTCASE)-cflags)),)
 
 cflags-vsz64 :=
-cflags-vsz32 := -mprefer-vector-width=256
-cflags-vsz16 := -mprefer-vector-width=128
+cflags-vsz32 := -mavx512vl -mprefer-vector-width=256
+cflags-vsz16 := -mavx512vl -mprefer-vector-width=128
 # Scalar tests don't set VEC_SIZE (and VEC_MAX is used by S/G ones only)
 cflags-vsz   := -mprefer-vector-width=128
 



From xen-devel-bounces@lists.xenproject.org Thu Jan 11 15:25:00 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 11 Jan 2024 15:25:00 +0000
Received: from list by lists.xenproject.org with outflank-mailman.666388.1036993 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNwvM-0006Mf-Ha; Thu, 11 Jan 2024 15:24:52 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 666388.1036993; Thu, 11 Jan 2024 15:24:52 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNwvM-0006MY-Eb; Thu, 11 Jan 2024 15:24:52 +0000
Received: by outflank-mailman (input) for mailman id 666388;
 Thu, 11 Jan 2024 15:24:51 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=YPRU=IV=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1rNwvL-0006LE-8P
 for xen-devel@lists.xenproject.org; Thu, 11 Jan 2024 15:24:51 +0000
Received: from mail-wm1-x335.google.com (mail-wm1-x335.google.com
 [2a00:1450:4864:20::335])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 8ee191c7-b095-11ee-9b0f-b553b5be7939;
 Thu, 11 Jan 2024 16:24:49 +0100 (CET)
Received: by mail-wm1-x335.google.com with SMTP id
 5b1f17b1804b1-40e613b6afbso6375515e9.3
 for <xen-devel@lists.xenproject.org>; Thu, 11 Jan 2024 07:24:49 -0800 (PST)
Received: from [10.80.67.30] (default-46-102-197-194.interdsl.co.uk.
 [46.102.197.194]) by smtp.gmail.com with ESMTPSA id
 q15-20020adfea0f000000b00336e6014263sm1449850wrm.98.2024.01.11.07.24.48
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 11 Jan 2024 07:24:48 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 8ee191c7-b095-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1704986688; x=1705591488; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=Yf50IBpvMi8DXqICcJcUpkaMEphxZmsxQnrWLsFQjYs=;
        b=bEy0Admg7HnN+YFCWiVLtnxPMJpxFOBrHarFlQzy6RFu8y79c2pHGN6MpvKlvJEbGJ
         GBHFFlZgiCFr2onDAo14cisungnXc96TgvkDt2ekjDXEzLDKPOJqxU1qOOmCIRQudG8K
         18hOoGntG3zeqIW0I/g/XcjTvNhp16CaZHxqc=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704986688; x=1705591488;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=Yf50IBpvMi8DXqICcJcUpkaMEphxZmsxQnrWLsFQjYs=;
        b=ReQCD96qsBgQlLofYpjCfuYMIOzTiR7fppRT2jmKiE7UHAkM45HW9JLU09aH4UO5JS
         63MxltBcYBpCdzKCNQzuvCau1kaPSmymz6MQy8NhjrF8/AWshU1C597AOnAvD3hhrCxA
         6nApUePG0tkI6PUKBZa8OCvASqqabk9KAIKyhPGzjUNA4/8zg8Fp23aeYfEeK9s7i1vc
         0LKfjOrai+2a7QCuP8AvaxRpTU7fUN5RGnjEr5/I9ZcbidJbDSD5DExjSK4C0sozG/Na
         bPWGSVZOm75+OGaOSeRA/SI59rv4f5nSC1M1hpB+XX3kcw2aIKTvK5wSQy/aDKR4aehR
         0A0g==
X-Gm-Message-State: AOJu0Ywtxme+ljIA/T9AHB0qhu61/eKiG7m7O6ojdslzy/aMdRqJ/X8w
	4S04P+A0Q3uEbXnCAdROZg6BrMgDQI9L+j3rBsPoYYzD9UkqZA==
X-Google-Smtp-Source: AGHT+IE8Ryl0G01eKyI9vtOupmlu3FQo0p281JZzZ76Tcsq5PikG/iLYMHA1KHRJBZjDVnShCbb2kg==
X-Received: by 2002:a05:600c:5247:b0:40d:484e:935 with SMTP id fc7-20020a05600c524700b0040d484e0935mr497782wmb.12.1704986688416;
        Thu, 11 Jan 2024 07:24:48 -0800 (PST)
Message-ID: <ea5c4f94-e4eb-471e-aa45-cf4b8a3a3763@citrix.com>
Date: Thu, 11 Jan 2024 15:24:47 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 1/8] keyhandler: don't pass cpu_user_regs around
Content-Language: en-GB
To: Jan Beulich <jbeulich@suse.com>
Cc: George Dunlap <george.dunlap@citrix.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
References: <1ab231ec-5e3c-4662-8530-2213bc52bb7c@suse.com>
 <dd1c24ec-4054-43e1-b0c9-6c2044b84046@suse.com>
 <7d21e38d-d1f8-46df-89ef-809dd9c5a38b@citrix.com>
 <aa0a0b1c-ffe0-456f-933f-2e62c9a47f82@suse.com>
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 xsFNBFLhNn8BEADVhE+Hb8i0GV6mihnnr/uiQQdPF8kUoFzCOPXkf7jQ5sLYeJa0cQi6Penp
 VtiFYznTairnVsN5J+ujSTIb+OlMSJUWV4opS7WVNnxHbFTPYZVQ3erv7NKc2iVizCRZ2Kxn
 srM1oPXWRic8BIAdYOKOloF2300SL/bIpeD+x7h3w9B/qez7nOin5NzkxgFoaUeIal12pXSR
 Q354FKFoy6Vh96gc4VRqte3jw8mPuJQpfws+Pb+swvSf/i1q1+1I4jsRQQh2m6OTADHIqg2E
 ofTYAEh7R5HfPx0EXoEDMdRjOeKn8+vvkAwhviWXTHlG3R1QkbE5M/oywnZ83udJmi+lxjJ5
 YhQ5IzomvJ16H0Bq+TLyVLO/VRksp1VR9HxCzItLNCS8PdpYYz5TC204ViycobYU65WMpzWe
 LFAGn8jSS25XIpqv0Y9k87dLbctKKA14Ifw2kq5OIVu2FuX+3i446JOa2vpCI9GcjCzi3oHV
 e00bzYiHMIl0FICrNJU0Kjho8pdo0m2uxkn6SYEpogAy9pnatUlO+erL4LqFUO7GXSdBRbw5
 gNt25XTLdSFuZtMxkY3tq8MFss5QnjhehCVPEpE6y9ZjI4XB8ad1G4oBHVGK5LMsvg22PfMJ
 ISWFSHoF/B5+lHkCKWkFxZ0gZn33ju5n6/FOdEx4B8cMJt+cWwARAQABzSlBbmRyZXcgQ29v
 cGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPsLBegQTAQgAJAIbAwULCQgHAwUVCgkI
 CwUWAgMBAAIeAQIXgAUCWKD95wIZAQAKCRBlw/kGpdefoHbdD/9AIoR3k6fKl+RFiFpyAhvO
 59ttDFI7nIAnlYngev2XUR3acFElJATHSDO0ju+hqWqAb8kVijXLops0gOfqt3VPZq9cuHlh
 IMDquatGLzAadfFx2eQYIYT+FYuMoPZy/aTUazmJIDVxP7L383grjIkn+7tAv+qeDfE+txL4
 SAm1UHNvmdfgL2/lcmL3xRh7sub3nJilM93RWX1Pe5LBSDXO45uzCGEdst6uSlzYR/MEr+5Z
 JQQ32JV64zwvf/aKaagSQSQMYNX9JFgfZ3TKWC1KJQbX5ssoX/5hNLqxMcZV3TN7kU8I3kjK
 mPec9+1nECOjjJSO/h4P0sBZyIUGfguwzhEeGf4sMCuSEM4xjCnwiBwftR17sr0spYcOpqET
 ZGcAmyYcNjy6CYadNCnfR40vhhWuCfNCBzWnUW0lFoo12wb0YnzoOLjvfD6OL3JjIUJNOmJy
 RCsJ5IA/Iz33RhSVRmROu+TztwuThClw63g7+hoyewv7BemKyuU6FTVhjjW+XUWmS/FzknSi
 dAG+insr0746cTPpSkGl3KAXeWDGJzve7/SBBfyznWCMGaf8E2P1oOdIZRxHgWj0zNr1+ooF
 /PzgLPiCI4OMUttTlEKChgbUTQ+5o0P080JojqfXwbPAyumbaYcQNiH1/xYbJdOFSiBv9rpt
 TQTBLzDKXok86M7BTQRS4TZ/ARAAkgqudHsp+hd82UVkvgnlqZjzz2vyrYfz7bkPtXaGb9H4
 Rfo7mQsEQavEBdWWjbga6eMnDqtu+FC+qeTGYebToxEyp2lKDSoAsvt8w82tIlP/EbmRbDVn
 7bhjBlfRcFjVYw8uVDPptT0TV47vpoCVkTwcyb6OltJrvg/QzV9f07DJswuda1JH3/qvYu0p
 vjPnYvCq4NsqY2XSdAJ02HrdYPFtNyPEntu1n1KK+gJrstjtw7KsZ4ygXYrsm/oCBiVW/OgU
 g/XIlGErkrxe4vQvJyVwg6YH653YTX5hLLUEL1NS4TCo47RP+wi6y+TnuAL36UtK/uFyEuPy
 wwrDVcC4cIFhYSfsO0BumEI65yu7a8aHbGfq2lW251UcoU48Z27ZUUZd2Dr6O/n8poQHbaTd
 6bJJSjzGGHZVbRP9UQ3lkmkmc0+XCHmj5WhwNNYjgbbmML7y0fsJT5RgvefAIFfHBg7fTY/i
 kBEimoUsTEQz+N4hbKwo1hULfVxDJStE4sbPhjbsPCrlXf6W9CxSyQ0qmZ2bXsLQYRj2xqd1
 bpA+1o1j2N4/au1R/uSiUFjewJdT/LX1EklKDcQwpk06Af/N7VZtSfEJeRV04unbsKVXWZAk
 uAJyDDKN99ziC0Wz5kcPyVD1HNf8bgaqGDzrv3TfYjwqayRFcMf7xJaL9xXedMcAEQEAAcLB
 XwQYAQgACQUCUuE2fwIbDAAKCRBlw/kGpdefoG4XEACD1Qf/er8EA7g23HMxYWd3FXHThrVQ
 HgiGdk5Yh632vjOm9L4sd/GCEACVQKjsu98e8o3ysitFlznEns5EAAXEbITrgKWXDDUWGYxd
 pnjj2u+GkVdsOAGk0kxczX6s+VRBhpbBI2PWnOsRJgU2n10PZ3mZD4Xu9kU2IXYmuW+e5KCA
 vTArRUdCrAtIa1k01sPipPPw6dfxx2e5asy21YOytzxuWFfJTGnVxZZSCyLUO83sh6OZhJkk
 b9rxL9wPmpN/t2IPaEKoAc0FTQZS36wAMOXkBh24PQ9gaLJvfPKpNzGD8XWR5HHF0NLIJhgg
 4ZlEXQ2fVp3XrtocHqhu4UZR4koCijgB8sB7Tb0GCpwK+C4UePdFLfhKyRdSXuvY3AHJd4CP
 4JzW0Bzq/WXY3XMOzUTYApGQpnUpdOmuQSfpV9MQO+/jo7r6yPbxT7CwRS5dcQPzUiuHLK9i
 nvjREdh84qycnx0/6dDroYhp0DFv4udxuAvt1h4wGwTPRQZerSm4xaYegEFusyhbZrI0U9tJ
 B8WrhBLXDiYlyJT6zOV2yZFuW47VrLsjYnHwn27hmxTC/7tvG3euCklmkn9Sl9IAKFu29RSo
 d5bD8kMSCYsTqtTfT6W4A3qHGvIDta3ptLYpIAOD2sY3GYq2nf3Bbzx81wZK14JdDDHUX2Rs
 6+ahAA==
In-Reply-To: <aa0a0b1c-ffe0-456f-933f-2e62c9a47f82@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 11/01/2024 12:11 pm, Jan Beulich wrote:
>>> Have
>>> handle_keypress() make the pointer available via a per-CPU variable,
>>> thus eliminating the need to pass it to all IRQ key handlers, making
>>> sure that a console-invoked key's handling can still nest inside a
>>> sysctl-invoked one's.
>> I know this is the current behaviour, and I'm not suggesting altering it
>> in this patch, but the sysctl was added so you had a way of using debug
>> keys without necessarily having a working serial connection.
>>
>> It was never expected or intended for both mechanisms to work
>> concurrently, and I don't think we need to take any care to make/keep it
>> working.
> Well, all it takes is the saving and restoring of keypress_regs in
> handle_keypress(). You you really think it would be better to risk
> a cash, but not doing that tiny bit of extra work?

I presume you mean crash?

I'm not advocating for leaving something explicitly unsafe, but I'm also
looking to see if we can avoid having keypress_regs to begin with.  i.e.
I think we've already got unnecessary complexity, and it would be good
to reduce it.
>> Trap to debugger is an x86-ism for gdbstub only.  I'm tempted to drop
>> all the gdbstub code.  I've never encountered it working in 13y, and the
>> number of build fixes I've done personally, I don't believe the code can
>> plausibly be in a non-bitrotten state.
>>
>> Nevertheless, an explicit trap-to-debugger which isn't a manually
>> inserted debugger_trap_{immediate,fatal}() is a weird construct in the
>> first place, not least because an attached debugger can do this on its
>> own anyway.
> Not sure here, and I'd hope purging of that (if so wanted) can be dealt
> with separately.

It can, yes.

It was just if there was an easy way to avoid introducing keypress_regs
then it would have been better to remove this first, than to refactor
and then delete.

> I have a vague recollection of such "on its own" wasn't
> very reliable, when trying to use such elsewhere (in the distant past,
> before I started working on Xen). That's not to say that I have proof
> that our debug-key is any more reliable.

This really comes back to whether gdbstub works or not.

Frankly, if you really do need to debug Xen these days, you'd be better
off running it under Qemu and using the qemu gdbstub.  If nothing else
it's more likely to work, and it does not need an alive-enough Xen to
have a working irq/serial subsystem.

>
>> The more I think about this, the more I think we should just remove 'D',
>> even if we don't go for dropping gdbstub.  It's the only place where
>> gdbstub really escapes out of x86 into common code.  (I see there's a
>> new one in bug.h but that is abstracted with a macro.)
>>
>> Also, `xl debug-keys D` was clearly something that just got swept up
>> with "make all debug keys usable via sysctl", not because it was a
>> plausibly useful construct.
> Did you really mean D (EPT table dump), not %? If the latter, then yes,
> that may better be filtered out of what can be done via sysctl.

I did mean %, yes.

>
>> This just leaves dump regs, which I think can safely use get_irq_regs()
>> || guest_cpu_user_regs().  All it wants is something to dump_execstate()
>> to, which just wants to be the start of the path which led here.
> I don't think so - consider the case of 'd' hitting while handling an
> interrupt (and, say, stuck there in an infinite loop with IRQs enabled).
> We'd then wrongly dump the context of what the earlier IRQ interrupted.

The serial IRQ producing the 'd' keypress will push a irq frame, which
is what will be returned by get_irq_regs().

It does occur to me that we're trying to accommodate for two behaviours
here.

For a real keypress, we want to dump from the the point the interrupt
hit because that's the interesting bit of stack to see.  For a SYSCTL,
there's nothing, and we're using BUGFRAME_run_fn to generate one.

So actually we just simply want "regs = get_irq_regs();" here and retain
prior NULL check, don't we?

~Andrew


From xen-devel-bounces@lists.xenproject.org Thu Jan 11 15:33:05 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 11 Jan 2024 15:33:05 +0000
Received: from list by lists.xenproject.org with outflank-mailman.666399.1037003 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNx3D-0001ja-Ck; Thu, 11 Jan 2024 15:32:59 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 666399.1037003; Thu, 11 Jan 2024 15:32:59 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNx3D-0001jT-9s; Thu, 11 Jan 2024 15:32:59 +0000
Received: by outflank-mailman (input) for mailman id 666399;
 Thu, 11 Jan 2024 15:32:58 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=tS5E=IV=oss.nxp.com=andrei.cherechesu@srs-se1.protection.inumbo.net>)
 id 1rNx3B-0001jN-V3
 for xen-devel@lists.xenproject.org; Thu, 11 Jan 2024 15:32:58 +0000
Received: from EUR05-DB8-obe.outbound.protection.outlook.com
 (mail-db8eur05on2061a.outbound.protection.outlook.com
 [2a01:111:f400:7e1a::61a])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id b1598a18-b096-11ee-98f0-6d05b1d4d9a1;
 Thu, 11 Jan 2024 16:32:56 +0100 (CET)
Received: from PA4PR04MB9565.eurprd04.prod.outlook.com (2603:10a6:102:26b::13)
 by VE1PR04MB7213.eurprd04.prod.outlook.com (2603:10a6:800:1b3::8)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7181.19; Thu, 11 Jan
 2024 15:32:53 +0000
Received: from PA4PR04MB9565.eurprd04.prod.outlook.com
 ([fe80::d191:ce86:2f34:296e]) by PA4PR04MB9565.eurprd04.prod.outlook.com
 ([fe80::d191:ce86:2f34:296e%3]) with mapi id 15.20.7159.020; Thu, 11 Jan 2024
 15:32:53 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: b1598a18-b096-11ee-98f0-6d05b1d4d9a1
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=ItZV8XfifJMrD+q3v+x4blQvAM+ZwbmJAY+Sn/bnXn1LGnvJInx+KvFRI7Pj1VMl/k1nwG0eAPvfoIW7jyR8KgTTpQB+UJCQrrmnpdobXRcUbxl/8c/bcAOtbJRNcXmvyFhlL557kZ2iLBXdbBk0VmaBYU/c5kCMRo/d1uHzzNTktHYmjOExnND8nH1lJULr6+TxZ3BZRGGoSD+pu2kcfXd6JT0ltlcpdCh3icUpB9on4iTzYvrkGOtd3Py7F4XGUL4jIDUG4nRGZA0L8CPdQltnBqv2sj/20ueBVFVoDRIFN7459g55lrQsF8pWQqBDPuS+1NSNeKT2ypEWG09Q5g==
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=gjgYrFIhS+4ANyNJYVr8jul6ptiDVCYdy2ncXhUBTwg=;
 b=FBA2DeURoiqt546Dm0m4v0s2/aUcFk0b4nrey5Lxqn1Md0Ylm43IaljnY4DcSrZfUxDLpe7CzIMZ+buq2OSZRDghSq1tipGIC61kiFfzAafMA3rvWfnPNpGJ4IMVVNwSZhmdzQ58ugV5n0BAzk5BvY2Rr+ZgUNoOJ5sH0OPpRIOxMU1hZ/JK4E3oLsERV5TS5L8BfP76I8M924TjBLmj7CyzvUTjViXvvB/rKlWJkR3i0gJuUydFmWWTGiNqe3i6eD/kw6qOnbAsv6C0lrk2imITXPy+pjAFm3gY6g441/M+EGgGfLjJA7Vg2FGTSt6mGli/OmG5QmzO7FbW+P/ttg==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=oss.nxp.com; dmarc=pass action=none header.from=oss.nxp.com;
 dkim=pass header.d=oss.nxp.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=NXP1.onmicrosoft.com;
 s=selector2-NXP1-onmicrosoft-com;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=gjgYrFIhS+4ANyNJYVr8jul6ptiDVCYdy2ncXhUBTwg=;
 b=d0rsukexe8aUIFZbHQE0+r/IlsjPYSa4mDIn/YOtnBDU8q6O4C0wmU4Hw0CCrkBqOzaGGmYrfncJ2wnT1mxSzdj4dRvOOtbzSBNeU14mSCbbH1kPK4BHUvQMahyAmrrBzBx+FX/XmUm4/26sDMzoOZim8bFQ+dM0/68LepqnAng=
From: "Andrei Cherechesu (OSS)" <andrei.cherechesu@oss.nxp.com>
To: Stefano Stabellini <sstabellini@kernel.org>, "viresh.kumar@linaro.org"
	<viresh.kumar@linaro.org>, "olekstysh@gmail.com" <olekstysh@gmail.com>,
	Julien Grall <julien@xen.org>
CC: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>, Andrei
 Cherechesu <andrei.cherechesu@nxp.com>
Subject: [VirtIO] Support for various devices in Xen
Thread-Topic: [VirtIO] Support for various devices in Xen
Thread-Index: AdpEoiWSqd5fkUgSQU6tkjSpwpXAbQ==
Date: Thu, 11 Jan 2024 15:32:53 +0000
Message-ID:
 <PA4PR04MB95655F653BBFE3A70A8CD0FBF9682@PA4PR04MB9565.eurprd04.prod.outlook.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=oss.nxp.com;
x-ms-exchange-messagesentrepresentingtype: 1
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: PA4PR04MB9565:EE_|VE1PR04MB7213:EE_
x-ms-office365-filtering-correlation-id: ac0a2e4f-b7f4-4318-d6b2-08dc12ba93d1
x-ms-exchange-sharedmailbox-routingagent-processed: True
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam: BCL:0;
x-microsoft-antispam-message-info:
 /GEr/JYa0ZcJW921c2EV7mK8KM/vS5zzMdxpm8inojcFnQn0N6JWWNQ/pjJjFoMAW316QFq4QdiO+ldUUfL/osG5XRpwuAYDa8kYK/kOC92L7zXQyV+LEXw+/WJu0IAJ885m0+CrRhwWNE6FLjKQQqlF1kg34Je9dq0+YFTKuSCvlGXEzlq5qbTqKKDB6mXOquBjkgFjA9N3Q07VMpUVpMaVoK5B4fWwV6Y9+pi+7dfY1PtWCLlSh4Ot3mjhXa+h5pmFR7iBdecai+kxrzmnb4/sHnyL3v+ERlbhXmxVyPk88yxWI/BjvaLkJ6qGDPCYaYPNHi9vZ1eChJsg3FXsETej2iL4jdHFi3K35SJJIeMzy48YuWv9/A6rO8VX+uxdzpqH2Oh64jgxmB1F2UDsWYZ3XoWSLNhqbydQTDcLAC4UJQ95DN7G2fjUpk/rHiBoichpp2ZwipEDzPXTUkpO/SfakLKADz0AE/Oy21lu1pG/znwrtwR/6PFekfSK6xsTpu9VN1ypiYvYAS+npHJ+VPGblVktkcu+HlcN65lR8z4YTYt1RngD9NWcZazEU/6U3tdDOH5T5BMg/2OQsMjmC3fxp67cceyElhtuWealFf0=
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PA4PR04MB9565.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230031)(136003)(346002)(376002)(396003)(366004)(39860400002)(230922051799003)(64100799003)(1800799012)(451199024)(186009)(9326002)(8936002)(8676002)(52536014)(5660300002)(4326008)(316002)(66446008)(54906003)(110136005)(64756008)(66476007)(66556008)(55016003)(2906002)(76116006)(66946007)(166002)(86362001)(966005)(38100700002)(122000001)(6506007)(33656002)(9686003)(7696005)(478600001)(41300700001)(26005)(38070700009)(83380400001)(71200400001);DIR:OUT;SFP:1101;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?us-ascii?Q?IsgZqfL6ddw2fIkhDGIn93t0lJYujTz+B9cDKrtAp2eMoyDzc3QV8l+S2eom?=
 =?us-ascii?Q?cljyImUhaGAczyQYBIQImxVohKc2CKamYfTkuEyihypX+8t9cp1/A8WScCja?=
 =?us-ascii?Q?1YwYFrLz0DyH1VYSTon/cQmofriCls8fTF5UmVmXnDw+C4FLVuER4rdIz0Ay?=
 =?us-ascii?Q?WGVgy9H/Ni+nmvUqYCC0RJpuMuqJLLz0kCXcKT5vcO2qmxN5xtLRrCdFe5Oz?=
 =?us-ascii?Q?fbaaUpfP20Sd3ODsMCdXwDXlzRzcVKg4VmzVUcKU2voO82r7Uw7sTe8YDme9?=
 =?us-ascii?Q?ynYqnObDPORtYMjWucrZA8I4NoHXjiWS5FPXNNIIc60IlXV6N+5PzPGtfVC1?=
 =?us-ascii?Q?KBbls7xIbVxwnBYfRrKbC1MLcWYlKBooz4E51vsksB7MIyPEtyRPS93DSCbs?=
 =?us-ascii?Q?W/JkWrMbdhEO+3ijht+KpcqNuKCJNKZ51p3YMy0NCMPJWaoj0SYhMmp1C/eU?=
 =?us-ascii?Q?K6u0zCOzfUchAkcE6pY0AMB8N+RR9y6HdIGejmNP2pigr/fFYI2w0L+wCaBW?=
 =?us-ascii?Q?edbQ5AVGmih9jGvmSK4UonssKjgpAjWNafDe8nLYkaTVDLhC/8ElnIHahErn?=
 =?us-ascii?Q?xTIVwe18bFhC+9PBHZkvQ5Z3RlIwRcZrNVa67GjGF/7aOrOS/MdC1dIx8Vnb?=
 =?us-ascii?Q?sGhfaHDCiEumq7NIMV0kP87B/cCtNaq07m3h1BGXsEPY5scqlZ+JBwuJcYgz?=
 =?us-ascii?Q?7SZPvJu3XWJI/4quEAZzsPQkpPJCbbqcSK0Npj8BFcdcmnwMPFyIWpguHBzj?=
 =?us-ascii?Q?/fZ+Sd3Xmh4OkZmZ4pDjg9WzsWYWRC90I31tbCNFUvhWZSYuty0H9j+t8bUx?=
 =?us-ascii?Q?HeXRWP9jzyFO03TUbgcorMadgbBx8G1cK264YcPY8omBSf8KLUCv+v+ABKjB?=
 =?us-ascii?Q?dgqyzKtS8kiz8BvYTJjBe0ws6ECHFPeBEdvtmA40TnWZo4XNNunp6dFXXwCC?=
 =?us-ascii?Q?szoyiezNf/WjEaNHPkUJZuTt4CgIaKg/pl+oy98m4rXhH9CQr2pJEhMeZiM0?=
 =?us-ascii?Q?mtjWi9Bf+qy1wZBldNvCsb/PnGA6R1W2ZDUjS/xXKJD13h86hSj8Jnp8xM0g?=
 =?us-ascii?Q?DbQ9jp+Tn4yga7H5NG4aD2INMMtMCrYpSWEyDKzUkg3/QHVtrq+kkoasriA4?=
 =?us-ascii?Q?JYygB/62InZlMo1Yz1fElArGdiZr5ioOjjQ1TR9nI7Z4d49ddJwJq48TsQfP?=
 =?us-ascii?Q?JIlSTN2jDl4+GIeyRIVcvwIpoh8iA9Q8olJuspPOV2q/VtjoRBjIdD8K/vxy?=
 =?us-ascii?Q?Qmj/7w16FS8Dpmp6OwsuSKaBRes3KgSFGQLUXi6l3Nt/eTqFxJWc5ppzlGrH?=
 =?us-ascii?Q?qEj2MO4hBe/+VmaYxsR9i2lqmAOkMiIUXV1jlr95JgzNZypgZhFEbAb8N50H?=
 =?us-ascii?Q?bqBe72VMbC4aEMvu9siv00sXfvDu5UlUxT3sJz2IMVT9duy6jEcT/SkOUM46?=
 =?us-ascii?Q?DAzkT76vyokKSAHpmBstTlpXlUdNXmMd25yVjunJsG7Zi7Wxf09xfWm3k0cb?=
 =?us-ascii?Q?OQKxEXLuk3FWsgZ0MShL7363dv/qws0ztFqv9b43uq6xmiUczZXrQeCWIPZ1?=
 =?us-ascii?Q?C1LZurLISZVKWd2crFBaNP13JIQ2UN/ZIZmQOtcVatwhCpkHWclg2jtZDWMW?=
 =?us-ascii?Q?EQ=3D=3D?=
Content-Type: multipart/alternative;
	boundary="_000_PA4PR04MB95655F653BBFE3A70A8CD0FBF9682PA4PR04MB9565eurp_"
MIME-Version: 1.0
X-OriginatorOrg: oss.nxp.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: PA4PR04MB9565.eurprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: ac0a2e4f-b7f4-4318-d6b2-08dc12ba93d1
X-MS-Exchange-CrossTenant-originalarrivaltime: 11 Jan 2024 15:32:53.2793
 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: Vymau3XsGr2B03ursM+PIoltHumjLvtU7CmsmuC2vKXN8YDkZ/wJ6VT9HwW0lQg4jC+qZpl5OsZJjz/gtcRNZ4LpmgibFj+x2Q7GWT9G81A=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: VE1PR04MB7213

--_000_PA4PR04MB95655F653BBFE3A70A8CD0FBF9682PA4PR04MB9565eurp_
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable

Hello,

As I've mentioned in previous discussion threads in the xen-devel
community, we are running Xen 4.17 (uprev to 4.18 in progress) on NXP
S32G automotive processors (Cortex-A53 cores) and we wanted to know more
about the support for various VirtIO device types in Xen.

In the Xen 4.17 release notes, the VirtIO standalone backends mentioned
as supported and tested are: virtio-disk, virtio-net, virtio-i2c and
virtio-gpio.

However, we've only managed to successfully set up and try some
use-cases with the virtio-disk standalone backend [0] (which Olexandr
provided) based on the virtio-mmio transport.

As such, we have a few questions, which we haven't been able to figure
out from the mailing list discussions and/or code:
    1. Are there any plans for the virtio-disk repo to have a stable
    version? Is it going to be long-term hosted and maintained in the
    xen-troops github repo? Or was it just an one-time PoC implementation
    and the strategy for future VirtIO devices will be based on a more gene=
ric
    approach (i.e., without need for a specific standalone app)?

    2. With regards to the other backends, we want to try out and provide P=
V
    networking to a DomU based on virtio-net, but we haven't found any avai=
lable
    resources for it (e.g., the standalone backend implementation if needed=
 for
    control plane, configuration examples, presentations, demos, docs). Doe=
s it
    rely on the QEMU virtio-net or vhost implementation? Are there any exam=
ples
    on how to set it up? Any required Xen/Linux Kernel/QEMU versions?

    3. What other VirtIO device types are there planned to be supported in =
Xen?
    I'm supposing libxl will also need changes to accomodate new configurat=
ion
    parameters for each of them. Or is there something I'm missing?

    4. Also, while we're at it, are there any plans regarding SCMI
    awareness for Xen (e.g., SCMI Mediator - where the RFC thread from 2022
    seems discontinued)? Or is the preferred approach for sharing SCMI acce=
ss
    to guests through virtio-scmi?

Thank you very much for the support, once again, and we're also looking
forward to the progress on the rust-vmm initiative.

Regards,
Andrei Cherechesu,
NXP Semiconductors

[0] https://github.com/xen-troops/virtio-disk

--_000_PA4PR04MB95655F653BBFE3A70A8CD0FBF9682PA4PR04MB9565eurp_
Content-Type: text/html; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable

<html xmlns:v=3D"urn:schemas-microsoft-com:vml" xmlns:o=3D"urn:schemas-micr=
osoft-com:office:office" xmlns:w=3D"urn:schemas-microsoft-com:office:word" =
xmlns:m=3D"http://schemas.microsoft.com/office/2004/12/omml" xmlns=3D"http:=
//www.w3.org/TR/REC-html40">
<head>
<meta http-equiv=3D"Content-Type" content=3D"text/html; charset=3Dus-ascii"=
>
<meta name=3D"Generator" content=3D"Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
	{font-family:"Cambria Math";
	panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
	{font-family:DengXian;
	panose-1:2 1 6 0 3 1 1 1 1 1;}
@font-face
	{font-family:Calibri;
	panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
	{font-family:"\@DengXian";
	panose-1:2 1 6 0 3 1 1 1 1 1;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
	{margin:0cm;
	font-size:11.0pt;
	font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
	{mso-style-priority:99;
	color:#0563C1;
	text-decoration:underline;}
span.EmailStyle17
	{mso-style-type:personal-compose;
	font-family:"Calibri",sans-serif;
	color:windowtext;}
.MsoChpDefault
	{mso-style-type:export-only;
	font-family:"Calibri",sans-serif;}
@page WordSection1
	{size:612.0pt 792.0pt;
	margin:72.0pt 72.0pt 72.0pt 72.0pt;}
div.WordSection1
	{page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext=3D"edit" spidmax=3D"1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext=3D"edit">
<o:idmap v:ext=3D"edit" data=3D"1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang=3D"EN-US" link=3D"#0563C1" vlink=3D"#954F72" style=3D"word-wrap:=
break-word">
<div class=3D"WordSection1">
<p class=3D"MsoNormal">Hello,<br>
<br>
As I've mentioned in previous discussion threads in the xen-devel<br>
community, we are running Xen 4.17 (uprev to 4.18 in progress) on NXP<br>
S32G automotive processors (Cortex-A53 cores) and we wanted to know more<br=
>
about the support for various VirtIO device types in Xen.<br>
<br>
In the Xen 4.17 release notes, the VirtIO standalone backends mentioned<br>
as supported and tested are: virtio-disk, virtio-net, virtio-i2c and<br>
virtio-gpio.<br>
<br>
However, we've only managed to successfully set up and try some<br>
use-cases with the virtio-disk standalone backend [0] (which Olexandr<br>
provided) based on the virtio-mmio transport.<br>
<br>
As such, we have a few questions, which we haven't been able to figure<br>
out from the mailing list discussions and/or code:<br>
&nbsp;&nbsp;&nbsp; 1. Are there any plans for the virtio-disk repo to have =
a stable<br>
&nbsp;&nbsp;&nbsp; version? Is it going to be long-term hosted and maintain=
ed in the<br>
&nbsp;&nbsp;&nbsp; xen-troops github repo? Or was it just an one-time PoC i=
mplementation<o:p></o:p></p>
<p class=3D"MsoNormal">&nbsp;&nbsp;&nbsp; and the strategy for future VirtI=
O devices will be based on a more generic<o:p></o:p></p>
<p class=3D"MsoNormal">&nbsp;&nbsp;&nbsp; approach (i.e., without need for =
a specific standalone app)?<o:p></o:p></p>
<p class=3D"MsoNormal"><br>
&nbsp;&nbsp;&nbsp; 2. With regards to the other backends, we want to try ou=
t and provide PV<o:p></o:p></p>
<p class=3D"MsoNormal">&nbsp;&nbsp;&nbsp; networking to a DomU based on vir=
tio-net, but we haven't found any available<o:p></o:p></p>
<p class=3D"MsoNormal">&nbsp;&nbsp;&nbsp; resources for it (e.g., the stand=
alone backend implementation if needed for<o:p></o:p></p>
<p class=3D"MsoNormal">&nbsp;&nbsp;&nbsp; control plane, configuration exam=
ples, presentations, demos, docs). Does it<o:p></o:p></p>
<p class=3D"MsoNormal">&nbsp;&nbsp;&nbsp; rely on the QEMU virtio-net or vh=
ost implementation? Are there any examples<o:p></o:p></p>
<p class=3D"MsoNormal">&nbsp;&nbsp;&nbsp; on how to set it up? Any required=
 Xen/Linux Kernel/QEMU versions?<o:p></o:p></p>
<p class=3D"MsoNormal"><br>
&nbsp;&nbsp;&nbsp; 3. What other VirtIO device types are there planned to b=
e supported in Xen?<o:p></o:p></p>
<p class=3D"MsoNormal">&nbsp;&nbsp;&nbsp; I'm supposing libxl will also nee=
d changes to accomodate new configuration<o:p></o:p></p>
<p class=3D"MsoNormal">&nbsp;&nbsp;&nbsp; parameters for each of them. Or i=
s there something I'm missing?<o:p></o:p></p>
<p class=3D"MsoNormal"><br>
&nbsp;&nbsp;&nbsp; 4. Also, while we're at it, are there any plans regardin=
g SCMI<br>
&nbsp;&nbsp;&nbsp; awareness for Xen (e.g., SCMI Mediator - where the RFC t=
hread from 2022<o:p></o:p></p>
<p class=3D"MsoNormal">&nbsp;&nbsp;&nbsp; seems discontinued)? Or is the pr=
eferred approach for sharing SCMI access<o:p></o:p></p>
<p class=3D"MsoNormal">&nbsp;&nbsp;&nbsp; to guests through virtio-scmi?<br=
>
<br>
Thank you very much for the support, once again, and we're also looking<br>
forward to the progress on the rust-vmm initiative.<br>
<br>
Regards,<br>
Andrei Cherechesu,<br>
NXP Semiconductors<br>
<br>
[0] <a href=3D"https://github.com/xen-troops/virtio-disk">https://github.co=
m/xen-troops/virtio-disk</a><o:p></o:p></p>
</div>
</body>
</html>

--_000_PA4PR04MB95655F653BBFE3A70A8CD0FBF9682PA4PR04MB9565eurp_--


From xen-devel-bounces@lists.xenproject.org Thu Jan 11 15:49:47 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 11 Jan 2024 15:49:47 +0000
Received: from list by lists.xenproject.org with outflank-mailman.666406.1037012 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNxJN-0005w6-VF; Thu, 11 Jan 2024 15:49:41 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 666406.1037012; Thu, 11 Jan 2024 15:49:41 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNxJN-0005vz-Sd; Thu, 11 Jan 2024 15:49:41 +0000
Received: by outflank-mailman (input) for mailman id 666406;
 Thu, 11 Jan 2024 15:49:40 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=YFj+=IV=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rNxJM-0005vs-7i
 for xen-devel@lists.xenproject.org; Thu, 11 Jan 2024 15:49:40 +0000
Received: from mail-wm1-x335.google.com (mail-wm1-x335.google.com
 [2a00:1450:4864:20::335])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 06056f35-b099-11ee-9b0f-b553b5be7939;
 Thu, 11 Jan 2024 16:49:37 +0100 (CET)
Received: by mail-wm1-x335.google.com with SMTP id
 5b1f17b1804b1-40e490c2115so26103655e9.0
 for <xen-devel@lists.xenproject.org>; Thu, 11 Jan 2024 07:49:37 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 t21-20020a05600c451500b0040e3ac9f4c8sm6194138wmo.28.2024.01.11.07.49.36
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 11 Jan 2024 07:49:36 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 06056f35-b099-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1704988177; x=1705592977; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=hjIw4X4riypAACb7Q/8zpAgWS9w3hXKdbzP2KL8WR+c=;
        b=MzyfHa/MiYnkxbgPidrJj++6ADOpmeIoG7MqCUvM9ouBVVsjKrf9gef90RSCYifw6i
         Hr8+mZRDgZY/fd/fSLxtIAKrcdXQnPLtJl13pnFU6+/xtqSJEL+3MPmsMztdJ+T0hN3t
         G05qOYci6V0T9n/3lMQWm/We+h25m5L727DVUyCZj0jR1iPdeHBxTMbilBpmHeviUZHe
         hW10mUhpnVQAuYuOwBtoGiW8/7WcIKk03t1SaTe7ZkOvmmz5SHCe+L5jQQug4+HvkDvQ
         xWlITe6CCKE6ClYn19J6eU9Qyf/IBBBsNJAeoWW/n0Ameih/J0Uvgzf8vD+KhwkxoXNu
         MBeA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704988177; x=1705592977;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=hjIw4X4riypAACb7Q/8zpAgWS9w3hXKdbzP2KL8WR+c=;
        b=VdPQU8DT3z0jHY2c+nHQB2KDGeR6E3XN8OcU1mC8dx/6uhXWTEHOUGQTvGNvaaHq+J
         OjTsciS+IbePXdpwSm+cVx+p06ESsT+x1obImGt7tAeD7EU2AE+GrTZgwQT/SzeHHixf
         7WQv8veC68xSPwwYxjiZqVjWvyBJd+00M5Ea0ZmKp+vQ2XzdfPr4iD5kZ5sZNOr0CVDY
         D39M8HGUg0WY9Yd8n4N3kTaMnt2af4W4RpRt6C2Ot4dDnCGBy1/EcBw6L/1+KcSpqyTf
         aY2H1Uwi2m34yZ4vMmq4qT4EOtCXrTdRuwk7Miu08lnNVHbHX9eoqJuO8ItUlBffY9F7
         OTnA==
X-Gm-Message-State: AOJu0Yw6LLaJ5Igf1kv0idqGdApYKcB3h5EFSeAugyn/UZoetdvGkQ6l
	YlcaNAHLZ5zGpx2zeEHWFhxKBzyFl18r
X-Google-Smtp-Source: AGHT+IGiluqWVPmSAn0HzTI3ZAdSyREpE71c7H/s0+MbilEcGqd2k8gSA0pskekowwNMXjjM+aJuLw==
X-Received: by 2002:a7b:c40e:0:b0:40e:60d3:8e99 with SMTP id k14-20020a7bc40e000000b0040e60d38e99mr14472wmi.50.1704988176844;
        Thu, 11 Jan 2024 07:49:36 -0800 (PST)
Message-ID: <5fb290bc-ded2-4883-a726-caeed98e9445@suse.com>
Date: Thu, 11 Jan 2024 16:49:35 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 1/8] keyhandler: don't pass cpu_user_regs around
Content-Language: en-US
To: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: George Dunlap <george.dunlap@citrix.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
References: <1ab231ec-5e3c-4662-8530-2213bc52bb7c@suse.com>
 <dd1c24ec-4054-43e1-b0c9-6c2044b84046@suse.com>
 <7d21e38d-d1f8-46df-89ef-809dd9c5a38b@citrix.com>
 <aa0a0b1c-ffe0-456f-933f-2e62c9a47f82@suse.com>
 <ea5c4f94-e4eb-471e-aa45-cf4b8a3a3763@citrix.com>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <ea5c4f94-e4eb-471e-aa45-cf4b8a3a3763@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 11.01.2024 16:24, Andrew Cooper wrote:
> On 11/01/2024 12:11 pm, Jan Beulich wrote:
>>>> Have
>>>> handle_keypress() make the pointer available via a per-CPU variable,
>>>> thus eliminating the need to pass it to all IRQ key handlers, making
>>>> sure that a console-invoked key's handling can still nest inside a
>>>> sysctl-invoked one's.
>>> I know this is the current behaviour, and I'm not suggesting altering it
>>> in this patch, but the sysctl was added so you had a way of using debug
>>> keys without necessarily having a working serial connection.
>>>
>>> It was never expected or intended for both mechanisms to work
>>> concurrently, and I don't think we need to take any care to make/keep it
>>> working.
>> Well, all it takes is the saving and restoring of keypress_regs in
>> handle_keypress(). You you really think it would be better to risk
>> a cash, but not doing that tiny bit of extra work?
> 
> I presume you mean crash?

Oops, yes, I do.

> I'm not advocating for leaving something explicitly unsafe, but I'm also
> looking to see if we can avoid having keypress_regs to begin with.  i.e.
> I think we've already got unnecessary complexity, and it would be good
> to reduce it.
>[...]
>>> This just leaves dump regs, which I think can safely use get_irq_regs()
>>> || guest_cpu_user_regs().  All it wants is something to dump_execstate()
>>> to, which just wants to be the start of the path which led here.
>> I don't think so - consider the case of 'd' hitting while handling an
>> interrupt (and, say, stuck there in an infinite loop with IRQs enabled).
>> We'd then wrongly dump the context of what the earlier IRQ interrupted.
> 
> The serial IRQ producing the 'd' keypress will push a irq frame, which
> is what will be returned by get_irq_regs().

Hmm, yes. I wonder what I was thinking ...

> It does occur to me that we're trying to accommodate for two behaviours
> here.
> 
> For a real keypress, we want to dump from the the point the interrupt
> hit because that's the interesting bit of stack to see.  For a SYSCTL,
> there's nothing, and we're using BUGFRAME_run_fn to generate one.

There's three forms of handle_keypress() invocations really, and hence
why (after having dropped the regs parameter already) I re-instated it.

As an aside - no, sysctl handling does not generate an exception frame.
Is uses guest_cpu_user_regs() (and imo validly so).

> So actually we just simply want "regs = get_irq_regs();" here and retain
> prior NULL check, don't we?

As per above, after I had it that way first, I backed off to accommodate
all present use forms of handle_keypress(). But dealing with that (in
whichever way we may end up deeming workable) can be separate anyway,
afaict.

Jan


From xen-devel-bounces@lists.xenproject.org Thu Jan 11 15:52:11 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 11 Jan 2024 15:52:11 +0000
Received: from list by lists.xenproject.org with outflank-mailman.666410.1037022 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNxLl-0007kb-BP; Thu, 11 Jan 2024 15:52:09 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 666410.1037022; Thu, 11 Jan 2024 15:52:09 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNxLl-0007kU-8h; Thu, 11 Jan 2024 15:52:09 +0000
Received: by outflank-mailman (input) for mailman id 666410;
 Thu, 11 Jan 2024 15:52:07 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=YFj+=IV=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rNxLj-0007kM-Ap
 for xen-devel@lists.xenproject.org; Thu, 11 Jan 2024 15:52:07 +0000
Received: from mail-wm1-x32b.google.com (mail-wm1-x32b.google.com
 [2a00:1450:4864:20::32b])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 5ebce997-b099-11ee-98f0-6d05b1d4d9a1;
 Thu, 11 Jan 2024 16:52:06 +0100 (CET)
Received: by mail-wm1-x32b.google.com with SMTP id
 5b1f17b1804b1-40e62979d41so2591865e9.2
 for <xen-devel@lists.xenproject.org>; Thu, 11 Jan 2024 07:52:06 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 m22-20020a05600c4f5600b0040d5b849f38sm6381216wmq.0.2024.01.11.07.52.05
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 11 Jan 2024 07:52:05 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 5ebce997-b099-11ee-98f0-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1704988326; x=1705593126; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=ZyeDIzL5o9UbJykHsE3RyvI3vWS7kpgDVoz2VYlxt3c=;
        b=MudtX9aFHBw8zc2ZC1dVC16psa26Jeyy0E5Ib2SktRPNFjVmaw5LRoLkgLRT5iXOol
         Se2qGDpjegbZJTdinJeflo6ESLcGDfGGe/YcHQM3D5luTdEe4qg6PHdJSCqlXceSp7yi
         6byrmVMIzw3s8J0Xhx3PFUgLxBgK/CVsK6viBl/9I4qpav20Z1/0HbQh8lHGqil+Hy+/
         1hTEvniiHhCoBYCHxMtGbxnL689cqhDUz5DrXVQrNaLqcS8xAI70/BIzGNy5ynjNKtxV
         8wonPxtVmSG1r0KlPSQz0hANo3h955pNGcVrJutqA0jZjZTnA47x/4ayMJmikFQPGjyr
         5QTA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704988326; x=1705593126;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=ZyeDIzL5o9UbJykHsE3RyvI3vWS7kpgDVoz2VYlxt3c=;
        b=lg37kAdlVIIoI9K0NNlPdUghgDqyeWHijU4YUtGU7Kv2RtDt739u3hqGfeBHGAtD5I
         p5CDR5CBz9u75u0KMkJ67y/c0W2bufUu5R1Z+Z6cnkeEMCkT4T0ZFY10aYV/Lfp8roYK
         BRzmVxZlOV79uDTSaHzTq4pFvFqwh4tusxvgksaiGOQTVDigsrSNikjLHH9apfxNyLxM
         O3zP+PQ332CDQeIKIqit4ZyNfF1pICprSYyDYMA06QTHE17bjZD5uE4zmJXZJmFI+WAO
         TaDt4iuIRkaZXm0TZpuRjTtv3Gza6DJDAGfEUM3yh2txW0FBbosr6zwg/GLxF1ffHIAd
         obsg==
X-Gm-Message-State: AOJu0YwmEmYp9pCFfUkZ2gWZ+xWOVQLTCVYAwCOeUWRDmWUsFAPbl270
	JTVNm29Opp8Nb9jD5iMXxstEL/h3z8Ei
X-Google-Smtp-Source: AGHT+IFVSSSZKmzTn7IgdMp0Rrs0HFs92xF4ej58/GHpO/9HGkHTI3994vLPMw2NILK/pfh4OmYoLQ==
X-Received: by 2002:a05:600c:4f91:b0:40d:4ee4:c73a with SMTP id n17-20020a05600c4f9100b0040d4ee4c73amr5072wmq.297.1704988325799;
        Thu, 11 Jan 2024 07:52:05 -0800 (PST)
Message-ID: <4574c9d6-eb6d-4b73-a9e1-20b5635b32db@suse.com>
Date: Thu, 11 Jan 2024 16:52:04 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2] x86/intel: ensure Global Performance Counter Control
 is setup correctly
Content-Language: en-US
To: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, Wei Liu <wl@xen.org>,
 xen-devel@lists.xenproject.org
References: <20240111090821.67594-1-roger.pau@citrix.com>
 <3428928a-42d0-4e4b-9607-c184968c309d@suse.com> <ZZ_FjFa9mILtDZgv@macbook>
 <645e0c95-5a12-4202-8da6-3cc789a9e5c7@suse.com> <ZZ_di8pZB8bWtBuX@macbook>
 <b1e76a5f-297b-4030-a69e-33cdf179c0ce@suse.com> <ZZ_4HSvdg0R9Dv1Y@macbook>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <ZZ_4HSvdg0R9Dv1Y@macbook>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 11.01.2024 15:15, Roger Pau Monné wrote:
> On Thu, Jan 11, 2024 at 03:01:01PM +0100, Jan Beulich wrote:
>> On 11.01.2024 13:22, Roger Pau Monné wrote:
>>> Oh, indeed, can adjust on this same patch if that's OK (seeing as the
>>> issue was already there previous to my change).
>>
>> Well, I'm getting the impression that it was deliberate there, i.e. set
>> setting of the feature flag may want to remain thus constrained.
> 
> Hm, I find it weird, but the original commit message doesn't help at
> all.  Xen itself only uses PMC0, and I don't find any other
> justification in the current code to require at least 2 counters in
> order to expose arch performance monitoring to be present.
> 
> Looking at the SDM vol3, the figures there only contain PMC0 and PMC1,
> so someone only reading that manual might assume there must always be
> 2 global PMCs?

That may have been the impression at the time. It may have been wrong
already back then, or ...

> (vol4 clarifies the that the number of global PMCs is variable).

... it may have been clarified in the SDM later on. My vague guess is
that the > 1 check was to skip what may have been "obviously buggy"
back at the time.

Jan


From xen-devel-bounces@lists.xenproject.org Thu Jan 11 15:57:40 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 11 Jan 2024 15:57:40 +0000
Received: from list by lists.xenproject.org with outflank-mailman.666415.1037033 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNxR1-0000Wo-Vo; Thu, 11 Jan 2024 15:57:35 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 666415.1037033; Thu, 11 Jan 2024 15:57:35 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNxR1-0000Wh-Sa; Thu, 11 Jan 2024 15:57:35 +0000
Received: by outflank-mailman (input) for mailman id 666415;
 Thu, 11 Jan 2024 15:57:35 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=YFj+=IV=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rNxR0-0000VL-Um
 for xen-devel@lists.xenproject.org; Thu, 11 Jan 2024 15:57:34 +0000
Received: from mail-wm1-x336.google.com (mail-wm1-x336.google.com
 [2a00:1450:4864:20::336])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 21610df3-b09a-11ee-9b0f-b553b5be7939;
 Thu, 11 Jan 2024 16:57:32 +0100 (CET)
Received: by mail-wm1-x336.google.com with SMTP id
 5b1f17b1804b1-40e629c5a42so3377445e9.0
 for <xen-devel@lists.xenproject.org>; Thu, 11 Jan 2024 07:57:32 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 k20-20020a05600c1c9400b0040e54f15d3dsm6227949wms.31.2024.01.11.07.57.31
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 11 Jan 2024 07:57:32 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 21610df3-b09a-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1704988652; x=1705593452; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=NbNngV0ZkuaWRmYFsH2qhghgwAROKKFwy8xFB4Etjmo=;
        b=H+AxrQqkxND6bEcYhXoZNEBfOYH9teTvhBjhIXZ92CYO/BglNZqbVO/L+9iXKdOcwO
         iOpQ0wEeCRHFtep2hVLER0CPplJisOvFGUrqgoDJ9WWXm7EGU3t0BNb7QOlKCSVnKZ0T
         79yCAOAx7NOtb1hbswJbuma6pdgwcDKVPe9Q9LEFz3tqjH5EQWhs1qYXfmJujUJoPEWV
         lj9VWIEYyEN5E/Y7VqkGml3C6vlUpQ6MlqhNcqnxqjNZowo3ZOCLfMKaa0Xmt+afiKGS
         yFm5zff7fynOEccyD+CJU5wXlhSEG0poWmRIEIvne5nLk+7Jtl7V4SBn3CfqaQ9384WJ
         5zzA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704988652; x=1705593452;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=NbNngV0ZkuaWRmYFsH2qhghgwAROKKFwy8xFB4Etjmo=;
        b=Twp1ZYkuZwOZ5z/6dDcY5jHxHsSxEot47L53H4uoSgsKcWYqfpRim8uneRl9k2H1nP
         a+BMdkMPATvVnqJvvqR+fk9mSQnuC7+pog2XrSmH68JliPz4sCeEDSSsSbAxissA07vS
         rrY4IAHcXUUHNW66H0ZgqZC8vNroQFbHVmT+Fwltdrplj2aam/DnkrfB6AQ25R2eLB1a
         TGAvY/YM6T4wVmT/fpTBd7KAbQXoH63qB9IF6yfj4rlminZOe9AOK1VLKPoMIxCUsQOV
         oQhaZCQVC8GI/qM1OYHPjJjpxJ5E1ZDHzupRSbfr+0tAqH/LO2MKiw/h0CtIicWQ2vyq
         Fujw==
X-Gm-Message-State: AOJu0YwiMG2q+wsliL/Jat18M8XDX0MCYn1IC8TUMSvNOnreRXsTMKol
	VBFedxXBpr/D8ViUXSUcY6GK1GhGPuOw
X-Google-Smtp-Source: AGHT+IGp1aF4ad8GY2mpba0fd5l4BDt2hpoGdpcopL93LR+B2zkK3lS0kW9UdTbiZeLDNdbUYhVVOw==
X-Received: by 2002:a05:600c:a684:b0:40e:3b3f:51eb with SMTP id ip4-20020a05600ca68400b0040e3b3f51ebmr19020wmb.81.1704988652315;
        Thu, 11 Jan 2024 07:57:32 -0800 (PST)
Message-ID: <076d5ca3-90df-46ac-9309-a2a96ffc378d@suse.com>
Date: Thu, 11 Jan 2024 16:57:31 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 05/34] xen/riscv: introduce guest_atomics.h
Content-Language: en-US
To: Oleksii Kurochko <oleksii.kurochko@gmail.com>
Cc: Alistair Francis <alistair.francis@wdc.com>,
 Bob Eshleman <bobbyeshleman@gmail.com>, Connor Davis
 <connojdavis@gmail.com>, Andrew Cooper <andrew.cooper3@citrix.com>,
 George Dunlap <george.dunlap@citrix.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>,
 xen-devel@lists.xenproject.org
References: <cover.1703255175.git.oleksii.kurochko@gmail.com>
 <fdbe7261178d057d9868aacea19c1c2b82d2da16.1703255175.git.oleksii.kurochko@gmail.com>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <fdbe7261178d057d9868aacea19c1c2b82d2da16.1703255175.git.oleksii.kurochko@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 22.12.2023 16:12, Oleksii Kurochko wrote:
> Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>
> ---
> Changes in V3:
>  - update the commit message

There (still) is none - what is the above about?

> --- /dev/null
> +++ b/xen/arch/riscv/include/asm/guest_atomics.h
> @@ -0,0 +1,49 @@
> +/* SPDX-License-Identifier: GPL-2.0-only */
> +#ifndef __ASM_RISCV_GUEST_ATOMICS_H
> +#define __ASM_RISCV_GUEST_ATOMICS_H
> +
> +#define guest_testop(name)                                                  \
> +static inline int guest_##name(struct domain *d, int nr, volatile void *p)  \
> +{                                                                           \
> +    (void) d;                                                               \
> +    (void) nr;                                                              \
> +    (void) p;                                                               \

What are these and ...

> +    ASSERT_UNREACHABLE();                                                   \
> +                                                                            \
> +    return 0;                                                               \
> +}
> +
> +#define guest_bitop(name)                                                   \
> +static inline void guest_##name(struct domain *d, int nr, volatile void *p) \
> +{                                                                           \
> +    (void) d;                                                               \
> +    (void) nr;                                                              \
> +    (void) p;                                                               \

... these about? If there's a reason for having them, then (nit) there
are stray blanks.

Jan


From xen-devel-bounces@lists.xenproject.org Thu Jan 11 16:00:30 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 11 Jan 2024 16:00:30 +0000
Received: from list by lists.xenproject.org with outflank-mailman.666420.1037042 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNxTo-0003Li-CI; Thu, 11 Jan 2024 16:00:28 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 666420.1037042; Thu, 11 Jan 2024 16:00:28 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNxTo-0003Lb-9P; Thu, 11 Jan 2024 16:00:28 +0000
Received: by outflank-mailman (input) for mailman id 666420;
 Thu, 11 Jan 2024 16:00:27 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=YFj+=IV=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rNxTn-0003LT-DN
 for xen-devel@lists.xenproject.org; Thu, 11 Jan 2024 16:00:27 +0000
Received: from mail-wm1-x32a.google.com (mail-wm1-x32a.google.com
 [2a00:1450:4864:20::32a])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 88086d4b-b09a-11ee-9b0f-b553b5be7939;
 Thu, 11 Jan 2024 17:00:25 +0100 (CET)
Received: by mail-wm1-x32a.google.com with SMTP id
 5b1f17b1804b1-40e5f615a32so7586645e9.1
 for <xen-devel@lists.xenproject.org>; Thu, 11 Jan 2024 08:00:25 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 p2-20020a05600c1d8200b0040e629cee7esm710630wms.35.2024.01.11.08.00.24
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 11 Jan 2024 08:00:24 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 88086d4b-b09a-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1704988824; x=1705593624; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=B/Z0ZrrZYGWgm5FHvBsUCapFzI25NOSRb1ViTJQDNVY=;
        b=RWqfYXofxkHrEe9qusidmxry6YXbPX8cQi2zG5XH4MguEbNyXLQqzeKODyYYWaUhZc
         dByxQ1nwt6vb5kqo4MtvbWQBJkr8YYLpI4inzOadaLC+xX8wMqmZpS7ttToBEYcvjrK/
         DGsLpNl4dJLOyKb9tO2uqWuX/AIqJe4dcbxRy5X6MRWC/kjXLFX5VHvx6AAfQ+8YQabS
         VrU3Q3jYQG6+WZvd1l7/1A+Sie+ztz0m6SDW65lTsm8ruzKmpPYPvp+vesyD8TfAmCHI
         UlW13qAZ9MpOXtkTWkOVPnMahyYJcLaymmwFzUDKTgAX1YvU3INoJY2jRvSID+ZuJfpi
         HjZw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704988824; x=1705593624;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=B/Z0ZrrZYGWgm5FHvBsUCapFzI25NOSRb1ViTJQDNVY=;
        b=Y200o/Q+mxEsoO9PsHL4QRV57YumgFs+HMFwH+jlOhG62V8PH2rWA2Dj61da8cNDJq
         HqofruyTb/vBJ9K7KHb0k/11K0jsx+f7se5oROjkFBzXrgutePY67eI32z75jXU8G6Aw
         +QLoEjBG3n3L4NMNcBSMxbd5dimmGb6fs0HlRdRbHinXO2YvPl5ImPXslnZ57g7wXC31
         0ZcDeYZ7sMMfudX5mVj59d/ryliPWnrtJrXIr0rEys8sI4aVBmtR94K0KyheWTYI3yt7
         MHEMYkfxt0E54LXZzzsQf115DSHJTlShgfsVudGHJP53e7ovXGOaePzfV/oYEZ6maLMk
         cdRQ==
X-Gm-Message-State: AOJu0Yw+4J74NEsebanHV1QieAu18wkA7b5d68GzyvwWWRzXoL4cNoyb
	qlBJZ0JyuYoGsPqJALiAKqDkzsopHa7y
X-Google-Smtp-Source: AGHT+IEa6+7pm0ws0NE6RQola4X2im8mNjO0dRxl1I3xkbRIdmoopKysMmnbm6EBOwdwEriCKqX1Ow==
X-Received: by 2002:a05:600c:c12:b0:40e:6303:5fb3 with SMTP id fm18-20020a05600c0c1200b0040e63035fb3mr2122wmb.321.1704988824582;
        Thu, 11 Jan 2024 08:00:24 -0800 (PST)
Message-ID: <8ca3cc48-47d4-4200-b373-a92a732b59b8@suse.com>
Date: Thu, 11 Jan 2024 17:00:23 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 09/34] xen/riscv: introduce system.h
Content-Language: en-US
To: Oleksii Kurochko <oleksii.kurochko@gmail.com>
Cc: Alistair Francis <alistair.francis@wdc.com>,
 Bob Eshleman <bobbyeshleman@gmail.com>, Connor Davis
 <connojdavis@gmail.com>, Andrew Cooper <andrew.cooper3@citrix.com>,
 George Dunlap <george.dunlap@citrix.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>,
 xen-devel@lists.xenproject.org
References: <cover.1703255175.git.oleksii.kurochko@gmail.com>
 <e577e055932d05ec34f01db57d1b2d2b1be5418d.1703255175.git.oleksii.kurochko@gmail.com>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <e577e055932d05ec34f01db57d1b2d2b1be5418d.1703255175.git.oleksii.kurochko@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 22.12.2023 16:12, Oleksii Kurochko wrote:
> --- /dev/null
> +++ b/xen/arch/riscv/include/asm/system.h
> @@ -0,0 +1,90 @@
> +/* SPDX-License-Identifier: GPL-2.0-only */
> +
> +#ifndef _ASM_RISCV_BARRIER_H
> +#define _ASM_RISCV_BARRIER_H

s/BARRIER/SYSTEM/ ?

With that taken care of (which I'd be happy to do while committing)
Acked-by: Jan Beulich <jbeulich@suse.com>

> +#include <xen/stdbool.h>
> +
> +#include <asm/csr.h>
> +
> +#ifndef __ASSEMBLY__
> +
> +#define RISCV_FENCE(p, s) \
> +    __asm__ __volatile__ ( "fence " #p "," #s : : : "memory" )
> +
> +/* These barriers need to enforce ordering on both devices or memory. */
> +#define mb()                    RISCV_FENCE(iorw, iorw)
> +#define rmb()                   RISCV_FENCE(ir, ir)
> +#define wmb()                   RISCV_FENCE(ow, ow)
> +
> +/* These barriers do not need to enforce ordering on devices, just memory. */
> +#define smp_mb()                RISCV_FENCE(rw, rw)
> +#define smp_rmb()               RISCV_FENCE(r, r)
> +#define smp_wmb()               RISCV_FENCE(w, w)
> +#define smp_mb__before_atomic() smp_mb()
> +#define smp_mb__after_atomic()  smp_mb()
> +
> +/*
> +#define smp_store_release(p, v)         \
> +do {                                    \
> +    compiletime_assert_atomic_type(*p); \
> +    RISCV_FENCE(rw, w);                 \
> +    WRITE_ONCE(*p, v);                  \
> +} while (0)
> +
> +#define smp_load_acquire(p)             \
> +({                                      \
> +    typeof(*p) p1 = READ_ONCE(*p);      \
> +    compiletime_assert_atomic_type(*p); \
> +    RISCV_FENCE(r,rw);                  \
> +    p1;                                 \
> +})
> +*/
> +
> +static inline unsigned long local_save_flags(void)
> +{
> +    return csr_read(sstatus);
> +}
> +
> +static inline void local_irq_enable(void)
> +{
> +    csr_set(sstatus, SSTATUS_SIE);
> +}
> +
> +static inline void local_irq_disable(void)
> +{
> +    csr_clear(sstatus, SSTATUS_SIE);
> +}
> +
> +#define local_irq_save(x)                           \
> +({                                                  \
> +    x = csr_read_clear(CSR_SSTATUS, SSTATUS_SIE);   \
> +    local_irq_disable();                            \
> +})
> +
> +static inline void local_irq_restore(unsigned long flags)
> +{
> +	csr_set(CSR_SSTATUS, flags & SSTATUS_SIE);
> +}
> +
> +static inline bool local_irq_is_enabled(void)
> +{
> +    unsigned long flags = local_save_flags();
> +
> +    return (flags & SSTATUS_SIE) != 0;

Just as a remark - when the resulting type is bool, we generally
prefer to omit the "!= 0".

Jan


From xen-devel-bounces@lists.xenproject.org Thu Jan 11 16:08:18 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 11 Jan 2024 16:08:18 +0000
Received: from list by lists.xenproject.org with outflank-mailman.666427.1037052 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNxbJ-0004Zq-82; Thu, 11 Jan 2024 16:08:13 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 666427.1037052; Thu, 11 Jan 2024 16:08:13 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNxbJ-0004Zj-5L; Thu, 11 Jan 2024 16:08:13 +0000
Received: by outflank-mailman (input) for mailman id 666427;
 Thu, 11 Jan 2024 16:08:12 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=YPRU=IV=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1rNxbH-0004ZY-Vo
 for xen-devel@lists.xenproject.org; Thu, 11 Jan 2024 16:08:12 +0000
Received: from mail-wm1-x32c.google.com (mail-wm1-x32c.google.com
 [2a00:1450:4864:20::32c])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 9d31f713-b09b-11ee-9b0f-b553b5be7939;
 Thu, 11 Jan 2024 17:08:10 +0100 (CET)
Received: by mail-wm1-x32c.google.com with SMTP id
 5b1f17b1804b1-40e624a8cbbso3955995e9.2
 for <xen-devel@lists.xenproject.org>; Thu, 11 Jan 2024 08:08:10 -0800 (PST)
Received: from [10.80.67.30] (default-46-102-197-194.interdsl.co.uk.
 [46.102.197.194]) by smtp.gmail.com with ESMTPSA id
 n22-20020a05600c4f9600b0040e53f24ceasm2413409wmq.16.2024.01.11.08.08.09
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 11 Jan 2024 08:08:09 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 9d31f713-b09b-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1704989289; x=1705594089; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=46475TwqCHLodT7PISpqn7vSvRTuu0sInGJO70CSMtc=;
        b=KhhY99IkC3ZsUCpOPLxKwbIFmvaJcvpXghb9T+PqJdD+PRYfHgyiJz1wh2bHWNrv8v
         Mqcoas5/BQedY37qi0Aj3yBqLhWMAmbzC1LfL9Jh++vouYMXpQ9blGuyCnFBYPwTtRIX
         zt06N5LnMHhY0+eSea0CKCHgkV+0bHeJ9Pxxg=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704989289; x=1705594089;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=46475TwqCHLodT7PISpqn7vSvRTuu0sInGJO70CSMtc=;
        b=clmlsgxkiY3WguGkSSebzBeoKKTGjulIfnmnolSwEM7gxV1BFyV+G7iHSpCakWQOdI
         xYYqbsBC+h/4qh/gWgngF1u8bu0UoyX/5FlNFN6RCHjthnLQ86W16TU67TkA8O2+Wcvw
         k9df/i8OVEyE/rzXSZElX8EvZ6rhgs5ScIyq28Op7MkYqk+hEsD3utiBUeeyjCHFJc9o
         o5iSnX2dQs+J4PSFI82Bu9eoOPrgTu9Gj4XlkOxPdzdodHULtnube/ma7tB1zBHBfS6/
         qq4YRQfF0MxcZip3aSsTFtVpfVxvx6ma70qH891rPg+KdcAX5RioBlQPnpDRSFe8EiHc
         5PKg==
X-Gm-Message-State: AOJu0YxUvG+NPa3CdCr7sCAB/iaMnhCxVjh7lSf72ORiRGaWNGkq0g2m
	cRlECWdPtfbBTrYEiwxJ3GWaW+Pwk/jXWg==
X-Google-Smtp-Source: AGHT+IHZwQZAA+u1HUNPxvp2swE+xsKXoVQDFz1rNddkECMIPHrBr2GugttVnOvF9qJwRwnPSG+fKQ==
X-Received: by 2002:a05:600c:4f48:b0:40e:6195:239c with SMTP id m8-20020a05600c4f4800b0040e6195239cmr28586wmq.90.1704989289515;
        Thu, 11 Jan 2024 08:08:09 -0800 (PST)
Message-ID: <d0af2c58-e902-48d5-b616-da5accf05375@citrix.com>
Date: Thu, 11 Jan 2024 16:08:08 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 1/8] keyhandler: don't pass cpu_user_regs around
Content-Language: en-GB
To: Jan Beulich <jbeulich@suse.com>
Cc: George Dunlap <george.dunlap@citrix.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
References: <1ab231ec-5e3c-4662-8530-2213bc52bb7c@suse.com>
 <dd1c24ec-4054-43e1-b0c9-6c2044b84046@suse.com>
 <7d21e38d-d1f8-46df-89ef-809dd9c5a38b@citrix.com>
 <aa0a0b1c-ffe0-456f-933f-2e62c9a47f82@suse.com>
 <ea5c4f94-e4eb-471e-aa45-cf4b8a3a3763@citrix.com>
 <5fb290bc-ded2-4883-a726-caeed98e9445@suse.com>
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 xsFNBFLhNn8BEADVhE+Hb8i0GV6mihnnr/uiQQdPF8kUoFzCOPXkf7jQ5sLYeJa0cQi6Penp
 VtiFYznTairnVsN5J+ujSTIb+OlMSJUWV4opS7WVNnxHbFTPYZVQ3erv7NKc2iVizCRZ2Kxn
 srM1oPXWRic8BIAdYOKOloF2300SL/bIpeD+x7h3w9B/qez7nOin5NzkxgFoaUeIal12pXSR
 Q354FKFoy6Vh96gc4VRqte3jw8mPuJQpfws+Pb+swvSf/i1q1+1I4jsRQQh2m6OTADHIqg2E
 ofTYAEh7R5HfPx0EXoEDMdRjOeKn8+vvkAwhviWXTHlG3R1QkbE5M/oywnZ83udJmi+lxjJ5
 YhQ5IzomvJ16H0Bq+TLyVLO/VRksp1VR9HxCzItLNCS8PdpYYz5TC204ViycobYU65WMpzWe
 LFAGn8jSS25XIpqv0Y9k87dLbctKKA14Ifw2kq5OIVu2FuX+3i446JOa2vpCI9GcjCzi3oHV
 e00bzYiHMIl0FICrNJU0Kjho8pdo0m2uxkn6SYEpogAy9pnatUlO+erL4LqFUO7GXSdBRbw5
 gNt25XTLdSFuZtMxkY3tq8MFss5QnjhehCVPEpE6y9ZjI4XB8ad1G4oBHVGK5LMsvg22PfMJ
 ISWFSHoF/B5+lHkCKWkFxZ0gZn33ju5n6/FOdEx4B8cMJt+cWwARAQABzSlBbmRyZXcgQ29v
 cGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPsLBegQTAQgAJAIbAwULCQgHAwUVCgkI
 CwUWAgMBAAIeAQIXgAUCWKD95wIZAQAKCRBlw/kGpdefoHbdD/9AIoR3k6fKl+RFiFpyAhvO
 59ttDFI7nIAnlYngev2XUR3acFElJATHSDO0ju+hqWqAb8kVijXLops0gOfqt3VPZq9cuHlh
 IMDquatGLzAadfFx2eQYIYT+FYuMoPZy/aTUazmJIDVxP7L383grjIkn+7tAv+qeDfE+txL4
 SAm1UHNvmdfgL2/lcmL3xRh7sub3nJilM93RWX1Pe5LBSDXO45uzCGEdst6uSlzYR/MEr+5Z
 JQQ32JV64zwvf/aKaagSQSQMYNX9JFgfZ3TKWC1KJQbX5ssoX/5hNLqxMcZV3TN7kU8I3kjK
 mPec9+1nECOjjJSO/h4P0sBZyIUGfguwzhEeGf4sMCuSEM4xjCnwiBwftR17sr0spYcOpqET
 ZGcAmyYcNjy6CYadNCnfR40vhhWuCfNCBzWnUW0lFoo12wb0YnzoOLjvfD6OL3JjIUJNOmJy
 RCsJ5IA/Iz33RhSVRmROu+TztwuThClw63g7+hoyewv7BemKyuU6FTVhjjW+XUWmS/FzknSi
 dAG+insr0746cTPpSkGl3KAXeWDGJzve7/SBBfyznWCMGaf8E2P1oOdIZRxHgWj0zNr1+ooF
 /PzgLPiCI4OMUttTlEKChgbUTQ+5o0P080JojqfXwbPAyumbaYcQNiH1/xYbJdOFSiBv9rpt
 TQTBLzDKXok86M7BTQRS4TZ/ARAAkgqudHsp+hd82UVkvgnlqZjzz2vyrYfz7bkPtXaGb9H4
 Rfo7mQsEQavEBdWWjbga6eMnDqtu+FC+qeTGYebToxEyp2lKDSoAsvt8w82tIlP/EbmRbDVn
 7bhjBlfRcFjVYw8uVDPptT0TV47vpoCVkTwcyb6OltJrvg/QzV9f07DJswuda1JH3/qvYu0p
 vjPnYvCq4NsqY2XSdAJ02HrdYPFtNyPEntu1n1KK+gJrstjtw7KsZ4ygXYrsm/oCBiVW/OgU
 g/XIlGErkrxe4vQvJyVwg6YH653YTX5hLLUEL1NS4TCo47RP+wi6y+TnuAL36UtK/uFyEuPy
 wwrDVcC4cIFhYSfsO0BumEI65yu7a8aHbGfq2lW251UcoU48Z27ZUUZd2Dr6O/n8poQHbaTd
 6bJJSjzGGHZVbRP9UQ3lkmkmc0+XCHmj5WhwNNYjgbbmML7y0fsJT5RgvefAIFfHBg7fTY/i
 kBEimoUsTEQz+N4hbKwo1hULfVxDJStE4sbPhjbsPCrlXf6W9CxSyQ0qmZ2bXsLQYRj2xqd1
 bpA+1o1j2N4/au1R/uSiUFjewJdT/LX1EklKDcQwpk06Af/N7VZtSfEJeRV04unbsKVXWZAk
 uAJyDDKN99ziC0Wz5kcPyVD1HNf8bgaqGDzrv3TfYjwqayRFcMf7xJaL9xXedMcAEQEAAcLB
 XwQYAQgACQUCUuE2fwIbDAAKCRBlw/kGpdefoG4XEACD1Qf/er8EA7g23HMxYWd3FXHThrVQ
 HgiGdk5Yh632vjOm9L4sd/GCEACVQKjsu98e8o3ysitFlznEns5EAAXEbITrgKWXDDUWGYxd
 pnjj2u+GkVdsOAGk0kxczX6s+VRBhpbBI2PWnOsRJgU2n10PZ3mZD4Xu9kU2IXYmuW+e5KCA
 vTArRUdCrAtIa1k01sPipPPw6dfxx2e5asy21YOytzxuWFfJTGnVxZZSCyLUO83sh6OZhJkk
 b9rxL9wPmpN/t2IPaEKoAc0FTQZS36wAMOXkBh24PQ9gaLJvfPKpNzGD8XWR5HHF0NLIJhgg
 4ZlEXQ2fVp3XrtocHqhu4UZR4koCijgB8sB7Tb0GCpwK+C4UePdFLfhKyRdSXuvY3AHJd4CP
 4JzW0Bzq/WXY3XMOzUTYApGQpnUpdOmuQSfpV9MQO+/jo7r6yPbxT7CwRS5dcQPzUiuHLK9i
 nvjREdh84qycnx0/6dDroYhp0DFv4udxuAvt1h4wGwTPRQZerSm4xaYegEFusyhbZrI0U9tJ
 B8WrhBLXDiYlyJT6zOV2yZFuW47VrLsjYnHwn27hmxTC/7tvG3euCklmkn9Sl9IAKFu29RSo
 d5bD8kMSCYsTqtTfT6W4A3qHGvIDta3ptLYpIAOD2sY3GYq2nf3Bbzx81wZK14JdDDHUX2Rs
 6+ahAA==
In-Reply-To: <5fb290bc-ded2-4883-a726-caeed98e9445@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 11/01/2024 3:49 pm, Jan Beulich wrote:
> On 11.01.2024 16:24, Andrew Cooper wrote:
>> On 11/01/2024 12:11 pm, Jan Beulich wrote:
>> It does occur to me that we're trying to accommodate for two behaviours
>> here.
>>
>> For a real keypress, we want to dump from the the point the interrupt
>> hit because that's the interesting bit of stack to see.  For a SYSCTL,
>> there's nothing, and we're using BUGFRAME_run_fn to generate one.
> There's three forms of handle_keypress() invocations really, and hence
> why (after having dropped the regs parameter already) I re-instated it.

Ok.  As you've done this analysis work, can you list these 3 forms?

I've clearly missed one in my analysis.

>
> As an aside - no, sysctl handling does not generate an exception frame.
> Is uses guest_cpu_user_regs() (and imo validly so).
>
>> So actually we just simply want "regs = get_irq_regs();" here and retain
>> prior NULL check, don't we?
> As per above, after I had it that way first, I backed off to accommodate
> all present use forms of handle_keypress(). But dealing with that (in
> whichever way we may end up deeming workable) can be separate anyway,
> afaict.

When complexity is involved, I always prefer to make changes in smaller
chunks.

~Andrew


From xen-devel-bounces@lists.xenproject.org Thu Jan 11 16:28:01 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 11 Jan 2024 16:28:01 +0000
Received: from list by lists.xenproject.org with outflank-mailman.666433.1037062 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNxuI-0002Zs-RB; Thu, 11 Jan 2024 16:27:50 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 666433.1037062; Thu, 11 Jan 2024 16:27:50 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNxuI-0002Zl-OO; Thu, 11 Jan 2024 16:27:50 +0000
Received: by outflank-mailman (input) for mailman id 666433;
 Thu, 11 Jan 2024 16:27:49 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=YFj+=IV=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rNxuH-0002Zc-J6
 for xen-devel@lists.xenproject.org; Thu, 11 Jan 2024 16:27:49 +0000
Received: from mail-wm1-x330.google.com (mail-wm1-x330.google.com
 [2a00:1450:4864:20::330])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 5b1dcb27-b09e-11ee-98f0-6d05b1d4d9a1;
 Thu, 11 Jan 2024 17:27:47 +0100 (CET)
Received: by mail-wm1-x330.google.com with SMTP id
 5b1f17b1804b1-40e5afc18f5so13475485e9.3
 for <xen-devel@lists.xenproject.org>; Thu, 11 Jan 2024 08:27:47 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 l17-20020a05600c1d1100b0040e4a2b36bfsm6337212wms.22.2024.01.11.08.27.46
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 11 Jan 2024 08:27:46 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 5b1dcb27-b09e-11ee-98f0-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1704990467; x=1705595267; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=VXTY36Q0A3vZMiG5DjYNECedAKGrzFQN4UyIQLIk0WY=;
        b=LenJCavk1ghaGN+5yRiQafMWJjGD5OT3C7RJ8P4tYk/u9Nwx0AlV+w2rFlI8wJOzxl
         GTTDaz2RYXmwDuM3O/ERaF9Js5tAkqt7hZ1HgdP1RW9PSYuzdvnU0rfC5gOGI69eOTA4
         dM7ZoZnsW99JWRQIHrjGjxq6EL8UVZeBCO+9nA7VIX+OcmgnqtGQIAJddK6YED/omTRr
         +QW/FiVxFmEYJh/Nk047gaFxVoLMbS9PmWXiF0B4QUE5siSt1jGFHALXktY2d8+AyGTT
         bPqzuz6q8D9PL/napzD+Dm730wR9+lBNKDcEElqfTE4gMrhxIVEsjg69HchLD6Buk+/y
         sshg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704990467; x=1705595267;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=VXTY36Q0A3vZMiG5DjYNECedAKGrzFQN4UyIQLIk0WY=;
        b=wIYIEXDxW/1ZkE3BMj8DWWsPPHIt/pfA9eVKfr95rfc3SKPpFr47GXy4GbKo1dwchK
         UL13jHq/EwhdD27NL+B6DrqDgpZiW8ZB1gL3O5Qj/zt7D382Up4TNL0kwj1fcjh6PP7d
         R1I7CFr8xNqxYQb5NUTZEEfGQCgfl10uVa5bFfQQ7gFVo0DUB0vf/gIU7IyPjFEcy7gL
         uuMXHJAVACxjTv0zLnqfT/XZ4TAE+4gP2UBFOLkXnFK6u/BqbFJK7HQSaKLFvyZNf1SV
         Tpn4KIjLdXifH01E9nc4umEmyAaofIwP3noMUuwq7Bs/EPJUnGMeRe4EOkkzX92mSz4n
         1j/Q==
X-Gm-Message-State: AOJu0YyaDt9/dB8qE6BpoV7dofDSNWKRj6rVPNabDOMdoPNrCk48cBay
	Fu1Q8PAxiVm2E83sUiohCAd0E1VqFqmu
X-Google-Smtp-Source: AGHT+IF5ZmPqgbuSxe5Zt6bZ9rASfQdLcZ68Qt2MB4tonZ+3KL1Y0AOAtIBxfQ94tWVhhbMJtmXSWA==
X-Received: by 2002:a05:600c:2988:b0:40e:6240:3293 with SMTP id r8-20020a05600c298800b0040e62403293mr53460wmd.40.1704990467103;
        Thu, 11 Jan 2024 08:27:47 -0800 (PST)
Message-ID: <d42b5ddf-5aa7-462c-aa59-829f0850d5f9@suse.com>
Date: Thu, 11 Jan 2024 17:27:46 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 1/8] keyhandler: don't pass cpu_user_regs around
Content-Language: en-US
To: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: George Dunlap <george.dunlap@citrix.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
References: <1ab231ec-5e3c-4662-8530-2213bc52bb7c@suse.com>
 <dd1c24ec-4054-43e1-b0c9-6c2044b84046@suse.com>
 <7d21e38d-d1f8-46df-89ef-809dd9c5a38b@citrix.com>
 <aa0a0b1c-ffe0-456f-933f-2e62c9a47f82@suse.com>
 <ea5c4f94-e4eb-471e-aa45-cf4b8a3a3763@citrix.com>
 <5fb290bc-ded2-4883-a726-caeed98e9445@suse.com>
 <d0af2c58-e902-48d5-b616-da5accf05375@citrix.com>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <d0af2c58-e902-48d5-b616-da5accf05375@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 11.01.2024 17:08, Andrew Cooper wrote:
> On 11/01/2024 3:49 pm, Jan Beulich wrote:
>> On 11.01.2024 16:24, Andrew Cooper wrote:
>>> On 11/01/2024 12:11 pm, Jan Beulich wrote:
>>> It does occur to me that we're trying to accommodate for two behaviours
>>> here.
>>>
>>> For a real keypress, we want to dump from the the point the interrupt
>>> hit because that's the interesting bit of stack to see.  For a SYSCTL,
>>> there's nothing, and we're using BUGFRAME_run_fn to generate one.
>> There's three forms of handle_keypress() invocations really, and hence
>> why (after having dropped the regs parameter already) I re-instated it.
> 
> Ok.  As you've done this analysis work, can you list these 3 forms?
> 
> I've clearly missed one in my analysis.

The console handler invocation is (now) using get_irq_regs(). The sysctl
handling, as said, passes guest_cpu_user_regs(). And then there are two
cases where NULL is passed, one from keypress_action() (a tasklet handler)
and the other from keyhandler_crash_action(). I'm not convinced the latter
is fully correct. The tasklet handler is used only for non-IRQ keys, and
hence only in cases where regs wouldn't have been passed to the handler
anyway.

IOW - leaving the keyhandler_crash_action() uncertainty aside, I think it
ought to be possible to do as you did suggest.

Jan


From xen-devel-bounces@lists.xenproject.org Thu Jan 11 16:37:02 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 11 Jan 2024 16:37:02 +0000
Received: from list by lists.xenproject.org with outflank-mailman.666438.1037073 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNy36-0005XT-Nc; Thu, 11 Jan 2024 16:36:56 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 666438.1037073; Thu, 11 Jan 2024 16:36:56 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNy36-0005XM-K8; Thu, 11 Jan 2024 16:36:56 +0000
Received: by outflank-mailman (input) for mailman id 666438;
 Thu, 11 Jan 2024 16:36:55 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=YFj+=IV=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rNy35-0005XG-Pp
 for xen-devel@lists.xenproject.org; Thu, 11 Jan 2024 16:36:55 +0000
Received: from mail-lf1-x12e.google.com (mail-lf1-x12e.google.com
 [2a00:1450:4864:20::12e])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id a0b4cc20-b09f-11ee-9b0f-b553b5be7939;
 Thu, 11 Jan 2024 17:36:53 +0100 (CET)
Received: by mail-lf1-x12e.google.com with SMTP id
 2adb3069b0e04-50e80d40a41so7066971e87.1
 for <xen-devel@lists.xenproject.org>; Thu, 11 Jan 2024 08:36:53 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 n15-20020a05600c3b8f00b0040d5a5c523csm6478250wms.1.2024.01.11.08.36.52
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 11 Jan 2024 08:36:53 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: a0b4cc20-b09f-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1704991013; x=1705595813; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=HG3n+sBfBE8pFUz17wFpgfLbu+v7rIvJAg9POazE9N4=;
        b=Q7Ja5KOvhP6l5DbE+y9xt49IvfWscJB7foCyA0EGSeS5sgY+a8+b/ks1Aftchxx9lf
         SujrxPcQIepRvsU9Fl6D+J7ui7ZVY5q1u3rquuPeQRHKX74OFRBZDHsxElzqMHIY/Ynz
         7IWBK+Ma8qZZHGYK6Qx9Z42fowT32XzAGTYqvw4+3CmV/PT2S5qjelt+WPkdsWdimZ2T
         N5i8f2XT53DFf6cw+4cCH3Lp8ACEMcYiSZ7QuaqiUXQ6OiYgVY58CxHLCNxREOisTBB8
         3eYiEuIfvwwPO1jTP9aYyM0CZFiTErF3u1D1TmvmJnMunH8rmT+5F4BKtZiH108agjeW
         RokQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704991013; x=1705595813;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=HG3n+sBfBE8pFUz17wFpgfLbu+v7rIvJAg9POazE9N4=;
        b=RoQa+qU7a09Q+ku+cuof7U7FcXMFK87xhUzDQhlO1OeCxSrYmTX7gLigPRLCC6Tm7C
         hfAME4IbNQ2oFp/g5L6Gjk/uFdkhUEE6SsdYCp8GZncMLWHBGRGWfGO9iz8IHkQbyvBF
         RQ8mO7d8jpxgGAMsVryC8COzdUabDGG5D5SMQT8nKdiKSxfs9dZxxNBnNTM12u1CoDgN
         WEQW8rlO0Iu7WfhcKgdtB6hW1rLIdXdApTEgKCMBZLLjUAFqb8V32WqeWlCjisHMVXG5
         e3le2gaQDAsj8KyQs7/sFWf7Rr+hfe1ZA8jlTASuZHG6Xo4/oFU6luXTuxrgZByec1ZE
         rs6g==
X-Gm-Message-State: AOJu0Yz7EupofBs8j6Vxyp0JTn9CMJX6cTXlohGCVR/fPa/aRCcGwb66
	fOriJyIzWKRWuf+wB94SI7DCu6L6ic+3
X-Google-Smtp-Source: AGHT+IHb2waL7oU2Hyzp3xkH4OWgrB1Brmh5V2maRpWWuXK04Mbpocsbs6aVPn4REvYzI26bechTkw==
X-Received: by 2002:ac2:455a:0:b0:50e:7702:a189 with SMTP id j26-20020ac2455a000000b0050e7702a189mr738997lfm.22.1704991013369;
        Thu, 11 Jan 2024 08:36:53 -0800 (PST)
Message-ID: <0cf933b6-d8d6-42d0-8a10-f3f7f9daf32d@suse.com>
Date: Thu, 11 Jan 2024 17:36:52 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 12/34] xen/riscv: introduce smp.h
Content-Language: en-US
To: Oleksii Kurochko <oleksii.kurochko@gmail.com>
Cc: Alistair Francis <alistair.francis@wdc.com>,
 Bob Eshleman <bobbyeshleman@gmail.com>, Connor Davis
 <connojdavis@gmail.com>, Andrew Cooper <andrew.cooper3@citrix.com>,
 George Dunlap <george.dunlap@citrix.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>,
 xen-devel@lists.xenproject.org
References: <cover.1703255175.git.oleksii.kurochko@gmail.com>
 <7fd0c7bdc14ac2544a568e66387df21eee892523.1703255175.git.oleksii.kurochko@gmail.com>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <7fd0c7bdc14ac2544a568e66387df21eee892523.1703255175.git.oleksii.kurochko@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 22.12.2023 16:12, Oleksii Kurochko wrote:
> Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>
> ---
> Changes in V3:
>  - drop cpu_is_offline() as it was moved to xen/smp.h.

Hmm.

>  - add SPDX.
>  - drop unnessary #ifdef.
>  - fix "No new line"
>  - update the commit message

And another hmm.

> --- /dev/null
> +++ b/xen/arch/riscv/include/asm/smp.h
> @@ -0,0 +1,28 @@
> +/* SPDX-License-Identifier: GPL-2.0-only */
> +#ifndef __ASM_RISCV_SMP_H
> +#define __ASM_RISCV_SMP_H
> +
> +#include <xen/cpumask.h>
> +#include <xen/percpu.h>
> +
> +DECLARE_PER_CPU(cpumask_var_t, cpu_sibling_mask);
> +DECLARE_PER_CPU(cpumask_var_t, cpu_core_mask);
> +
> +#define cpu_is_offline(cpu) unlikely(!cpu_online(cpu))

This clearly wasn't dropped (yet).

Jan


From xen-devel-bounces@lists.xenproject.org Thu Jan 11 16:43:22 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 11 Jan 2024 16:43:22 +0000
Received: from list by lists.xenproject.org with outflank-mailman.666443.1037082 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNy9E-0008Lq-Av; Thu, 11 Jan 2024 16:43:16 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 666443.1037082; Thu, 11 Jan 2024 16:43:16 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNy9E-0008Lj-7m; Thu, 11 Jan 2024 16:43:16 +0000
Received: by outflank-mailman (input) for mailman id 666443;
 Thu, 11 Jan 2024 16:43:15 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=YFj+=IV=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rNy9D-0008Ld-4k
 for xen-devel@lists.xenproject.org; Thu, 11 Jan 2024 16:43:15 +0000
Received: from mail-wm1-x32b.google.com (mail-wm1-x32b.google.com
 [2a00:1450:4864:20::32b])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 832e0c8a-b0a0-11ee-98f0-6d05b1d4d9a1;
 Thu, 11 Jan 2024 17:43:13 +0100 (CET)
Received: by mail-wm1-x32b.google.com with SMTP id
 5b1f17b1804b1-40e60e137aaso7162925e9.0
 for <xen-devel@lists.xenproject.org>; Thu, 11 Jan 2024 08:43:13 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 o21-20020a05600c4fd500b0040e34ca648bsm2590497wmq.0.2024.01.11.08.43.12
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 11 Jan 2024 08:43:13 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 832e0c8a-b0a0-11ee-98f0-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1704991393; x=1705596193; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=i+csp2JrHuHYTLYkP9Hl1DJt1ft9a0uqwDoUn7rONBc=;
        b=HiLJofMrgU+d2dHH9591GxU80JLPbumX9He5LKqwcIqtpWPi8aY/3yHv9LVUg03ZNK
         /PIOUaQj6AjRjvrFXdIGhZY6EYlJxBVmCRjUhKHD9hrwqWz1w5axx/TyWYYoPW+eON1z
         G6K84TD3qtxzWaHGOshH7vt5ndsMVkMzn05xiAImEolCmyhxWppY+Co1z7TWcujrC66f
         +4L32uiH1ikHybA0ZZqCB4fXnV6YdM1j0LpHXeEIJs4f8CYiSr+uLpYSf+mssu6cRVhl
         KN0dD2YZxTGoTT+47Vi992zTOFQ8uFjSnvntRxPQdcr83W9HcLVuUqGvtrjy3cH3OGQU
         2tuA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704991393; x=1705596193;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=i+csp2JrHuHYTLYkP9Hl1DJt1ft9a0uqwDoUn7rONBc=;
        b=kRjNQCYtnHcsTJlnBQiTiegcQDWA5/I+zZPnqxz8r21gQ5NL7sAozn4twypy3CLRh8
         AfLn43HhmkVkLDQjpQ/4RbEWkoNhEPbRUXcjlOBL+6vFfCu97b7vLM2W+sgshGji6MTI
         VlO8GFwfJL5Nx+CVy1U1sOm3GEuvL3q88evc4zfWuDysdxpYQ1vgxYeIdJPDoolOJs6O
         j943ldAgurt5FvOj1f8ptAuSBgtaIN4vtD//T9uTfUBfpKqL99bRNkzHCLbDYGJBqpjq
         8ibhLaPnlDfgi0D8NEWONQ66n6acy8uVC6y0hhKFfoIiED/bvfU/Ze5Y/WJKu8NcY+WA
         ucuA==
X-Gm-Message-State: AOJu0Yzx5V3Snh0AabuCDH9sZZo34UGyS/VBmr0/Epb0L45XLNla1NZ7
	+vCDE2Gan5gSeGZ0Q5CqBfa5UYpmWVpe
X-Google-Smtp-Source: AGHT+IF8QAp6IuJvDyJUZB1uNuAvlJ1U0/6eoQUqkc1YJuI5TUX7hSIENJ50imgxdMzMwtfDH9B47Q==
X-Received: by 2002:a05:600c:1d0e:b0:40e:4f24:64d6 with SMTP id l14-20020a05600c1d0e00b0040e4f2464d6mr61676wms.41.1704991393393;
        Thu, 11 Jan 2024 08:43:13 -0800 (PST)
Message-ID: <7609d810-a2f0-4843-b019-0f9e700aa1e3@suse.com>
Date: Thu, 11 Jan 2024 17:43:12 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 31/34] xen/riscv: add minimal stuff to mm.h to build
 full Xen
Content-Language: en-US
To: Oleksii <oleksii.kurochko@gmail.com>
Cc: Alistair Francis <alistair.francis@wdc.com>,
 Bob Eshleman <bobbyeshleman@gmail.com>, Connor Davis
 <connojdavis@gmail.com>, Andrew Cooper <andrew.cooper3@citrix.com>,
 George Dunlap <george.dunlap@citrix.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>,
 xen-devel@lists.xenproject.org
References: <cover.1703255175.git.oleksii.kurochko@gmail.com>
 <4411f6af38586074b347cd6005f19f9c670faa74.1703255175.git.oleksii.kurochko@gmail.com>
 <3231bf55d5da1d3e1eb03a43759932d8ebcca8de.camel@gmail.com>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <3231bf55d5da1d3e1eb03a43759932d8ebcca8de.camel@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 22.12.2023 17:32, Oleksii wrote:
>> +#define PFN_ORDER(_pfn) ((_pfn)->v.free.order)
> I missed saving these changes. It should be _pfn -> pfn_. (Just a
> reminder for me).

And what purpose would the trailing underscore serve here?

Jan


From xen-devel-bounces@lists.xenproject.org Thu Jan 11 16:53:48 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 11 Jan 2024 16:53:48 +0000
Received: from list by lists.xenproject.org with outflank-mailman.666448.1037093 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNyJL-00036A-9Z; Thu, 11 Jan 2024 16:53:43 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 666448.1037093; Thu, 11 Jan 2024 16:53:43 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNyJL-000363-5p; Thu, 11 Jan 2024 16:53:43 +0000
Received: by outflank-mailman (input) for mailman id 666448;
 Thu, 11 Jan 2024 16:53:42 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=4+ne=IV=cloud.com=roger.pau@srs-se1.protection.inumbo.net>)
 id 1rNyJJ-00035x-U6
 for xen-devel@lists.xenproject.org; Thu, 11 Jan 2024 16:53:41 +0000
Received: from mail-wm1-x334.google.com (mail-wm1-x334.google.com
 [2a00:1450:4864:20::334])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id f8e3347f-b0a1-11ee-98f0-6d05b1d4d9a1;
 Thu, 11 Jan 2024 17:53:40 +0100 (CET)
Received: by mail-wm1-x334.google.com with SMTP id
 5b1f17b1804b1-40e6296636fso4330375e9.2
 for <xen-devel@lists.xenproject.org>; Thu, 11 Jan 2024 08:53:40 -0800 (PST)
Received: from localhost ([213.195.127.70]) by smtp.gmail.com with ESMTPSA id
 jb13-20020a05600c54ed00b0040e418494absm2491749wmb.46.2024.01.11.08.53.39
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 11 Jan 2024 08:53:40 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: f8e3347f-b0a1-11ee-98f0-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1704992020; x=1705596820; darn=lists.xenproject.org;
        h=in-reply-to:content-transfer-encoding:content-disposition
         :mime-version:references:message-id:subject:cc:to:from:date:from:to
         :cc:subject:date:message-id:reply-to;
        bh=7Y63HNWbXp0WPXkJdm6CyIz3HW69obhkMP5jTMus/hs=;
        b=SpAIksWbwLFl4NDkRsvpbZW5AL07O3V+ABypIvvF/Mdfd9BUYrjBEqhTypYUcZ7uTI
         9cksCWuIhm/CPVSXqHurls6pCyQ9T3rFHrUzKZbteQec4yHLJchJKkyJFBGdfpQA1tV1
         hGxJqzMDu5gC9kegs3IKsNNLp/HwqkYocslgY=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704992020; x=1705596820;
        h=in-reply-to:content-transfer-encoding:content-disposition
         :mime-version:references:message-id:subject:cc:to:from:date
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=7Y63HNWbXp0WPXkJdm6CyIz3HW69obhkMP5jTMus/hs=;
        b=jI8REOj7M76D4vfFXhfKetzluCV5rgM81e1eXTl7CnNeGlEhxGM2jQITtDOW+vsk0U
         VBHRddFib4awaJfAi2MAFq5nAZs/9NAVUV9SiankezMTNKBQ4hDS6av5f+gCYvo300wo
         xiL6evW5RRnzQ035Zd/EnS9dFWK0NIWhyNET7XhxZfO/xRAQTwafzSQoUujS7qPZq9lO
         i+wF4uutmUzzwYXd0lBT47RdzjmPb9NdCpgr+Hs9YAg7FDTftEauvFXWvzaG3MCa6Oj/
         fw6dqTZRd0Ayha6Oj8+HeBZNm/y/Ubf2CkUxSFMAKN35oKlYR23N30wdu5PFME3KAJ+p
         Odzg==
X-Gm-Message-State: AOJu0YwGGeSHsiLyDGZHStbSRfQ6OKEbFy9OTo0yt86TeM5u600RAh0N
	BXCIN5sckrXoWmRUtNzoNU0/Ed2tvytqwg==
X-Google-Smtp-Source: AGHT+IESeu49k3kHCvgnEkzb/p7Fo/q62OOjnSaelkC4AR4xxZK29BexBckurgMzcsvLZPCfDElinw==
X-Received: by 2002:a7b:c846:0:b0:40d:8cd1:16dd with SMTP id c6-20020a7bc846000000b0040d8cd116ddmr53543wml.248.1704992020360;
        Thu, 11 Jan 2024 08:53:40 -0800 (PST)
Date: Thu, 11 Jan 2024 17:53:38 +0100
From: Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
To: Jan Beulich <jbeulich@suse.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, Wei Liu <wl@xen.org>,
	xen-devel@lists.xenproject.org
Subject: Re: [PATCH v2] x86/intel: ensure Global Performance Counter Control
 is setup correctly
Message-ID: <ZaAdEqHzbD8L_mRo@macbook>
References: <20240111090821.67594-1-roger.pau@citrix.com>
 <3428928a-42d0-4e4b-9607-c184968c309d@suse.com>
 <ZZ_FjFa9mILtDZgv@macbook>
 <645e0c95-5a12-4202-8da6-3cc789a9e5c7@suse.com>
 <ZZ_di8pZB8bWtBuX@macbook>
 <b1e76a5f-297b-4030-a69e-33cdf179c0ce@suse.com>
 <ZZ_4HSvdg0R9Dv1Y@macbook>
 <4574c9d6-eb6d-4b73-a9e1-20b5635b32db@suse.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <4574c9d6-eb6d-4b73-a9e1-20b5635b32db@suse.com>

On Thu, Jan 11, 2024 at 04:52:04PM +0100, Jan Beulich wrote:
> On 11.01.2024 15:15, Roger Pau Monné wrote:
> > On Thu, Jan 11, 2024 at 03:01:01PM +0100, Jan Beulich wrote:
> >> On 11.01.2024 13:22, Roger Pau Monné wrote:
> >>> Oh, indeed, can adjust on this same patch if that's OK (seeing as the
> >>> issue was already there previous to my change).
> >>
> >> Well, I'm getting the impression that it was deliberate there, i.e. set
> >> setting of the feature flag may want to remain thus constrained.
> > 
> > Hm, I find it weird, but the original commit message doesn't help at
> > all.  Xen itself only uses PMC0, and I don't find any other
> > justification in the current code to require at least 2 counters in
> > order to expose arch performance monitoring to be present.
> > 
> > Looking at the SDM vol3, the figures there only contain PMC0 and PMC1,
> > so someone only reading that manual might assume there must always be
> > 2 global PMCs?
> 
> That may have been the impression at the time. It may have been wrong
> already back then, or ...
> 
> > (vol4 clarifies the that the number of global PMCs is variable).
> 
> ... it may have been clarified in the SDM later on. My vague guess is
> that the > 1 check was to skip what may have been "obviously buggy"
> back at the time.

Let me know if you are OK with the adjustment in v3, or whether you
would rather leave the > 1 check as-is (or maybe adjust in a different
patch).

Thanks, Roger.


From xen-devel-bounces@lists.xenproject.org Thu Jan 11 17:37:19 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 11 Jan 2024 17:37:19 +0000
Received: from list by lists.xenproject.org with outflank-mailman.666455.1037102 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNyzK-0004Td-JK; Thu, 11 Jan 2024 17:37:06 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 666455.1037102; Thu, 11 Jan 2024 17:37:06 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNyzK-0004TW-GX; Thu, 11 Jan 2024 17:37:06 +0000
Received: by outflank-mailman (input) for mailman id 666455;
 Thu, 11 Jan 2024 17:37:05 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rNyzJ-0004TM-95; Thu, 11 Jan 2024 17:37:05 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rNyzI-0002zu-Vm; Thu, 11 Jan 2024 17:37:04 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rNyzI-0005PY-GL; Thu, 11 Jan 2024 17:37:04 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rNyzI-0001IT-Fs; Thu, 11 Jan 2024 17:37:04 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=waXcL35882ZXEnz9MmFJ/AuX/cvh8coXZosmE2BQ3M4=; b=FIh8UdIUEonFH/kuZf91MLnRAi
	6ixAyz3V8jMSG7iUHHmsZRnv91/kC7F9aS9HpD3vdl4u9r4DyGCfGX9IPCN334u+mbTQ2nbwEamuD
	vnJJxHL91aJnHN58XPTIJLTMLDiVU6VfjipeOMskW5VBY8+QCJ2xUNAkRwIS3SA3pegM=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184322-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [ovmf test] 184322: all pass - PUSHED
X-Osstest-Versions-This:
    ovmf=0765ee6cd36aef02236ae431a7097624d17762d9
X-Osstest-Versions-That:
    ovmf=ebf378a1ada6d128dbf32aec76b3911895747bbb
From: osstest service owner <osstest-admin@xenproject.org>
Date: Thu, 11 Jan 2024 17:37:04 +0000

flight 184322 ovmf real [real]
http://logs.test-lab.xenproject.org/osstest/logs/184322/

Perfect :-)
All tests in this flight passed as required
version targeted for testing:
 ovmf                 0765ee6cd36aef02236ae431a7097624d17762d9
baseline version:
 ovmf                 ebf378a1ada6d128dbf32aec76b3911895747bbb

Last test of basis   184320  2024-01-11 12:12:48 Z    0 days
Testing same since   184322  2024-01-11 15:41:27 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Yang Wang <wangyang@bosc.ac.cn>
  王洋 <wangyang@bosc.ac.cn>

jobs:
 build-amd64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-amd64-amd64-xl-qemuu-ovmf-amd64                         pass    
 test-amd64-i386-xl-qemuu-ovmf-amd64                          pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Pushing revision :

To xenbits.xen.org:/home/xen/git/osstest/ovmf.git
   ebf378a1ad..0765ee6cd3  0765ee6cd36aef02236ae431a7097624d17762d9 -> xen-tested-master


From xen-devel-bounces@lists.xenproject.org Thu Jan 11 17:47:55 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 11 Jan 2024 17:47:55 +0000
Received: from list by lists.xenproject.org with outflank-mailman.666462.1037112 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNz9h-0007DN-Hh; Thu, 11 Jan 2024 17:47:49 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 666462.1037112; Thu, 11 Jan 2024 17:47:49 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNz9h-0007DG-F5; Thu, 11 Jan 2024 17:47:49 +0000
Received: by outflank-mailman (input) for mailman id 666462;
 Thu, 11 Jan 2024 17:47:48 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=8wPl=IV=casper.srs.infradead.org=BATV+acfc1e3e2953d0546982+7445+infradead.org+dwmw2@srs-se1.protection.inumbo.net>)
 id 1rNz9f-0007Bn-FA
 for xen-devel@lists.xenproject.org; Thu, 11 Jan 2024 17:47:48 +0000
Received: from casper.infradead.org (casper.infradead.org
 [2001:8b0:10b:1236::1])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 820f7e1f-b0a9-11ee-9b0f-b553b5be7939;
 Thu, 11 Jan 2024 18:47:43 +0100 (CET)
Received: from [2001:8b0:10b:5:4642:c398:42d4:94d5]
 (helo=u3832b3a9db3152.ant.amazon.com)
 by casper.infradead.org with esmtpsa (Exim 4.94.2 #2 (Red Hat Linux))
 id 1rNz9R-00ESq6-E1; Thu, 11 Jan 2024 17:47:34 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 820f7e1f-b0a9-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=infradead.org; s=casper.20170209; h=MIME-Version:Content-Type:References:
	In-Reply-To:Date:Cc:To:From:Subject:Message-ID:Sender:Reply-To:
	Content-Transfer-Encoding:Content-ID:Content-Description;
	bh=4QaoAhMVFC2iZrJw7Wn8vYZ5OKdjscBx6Vq2BrEDc9I=; b=KpCS886IyHaAqI5yB3YmW4I1qM
	Pm0KHQysNiogT6whf9mh17B+nPkhLS/u/qKCGGI36/ajUhIDiabavaEI5iHjiNPL3MFlvbs8mO14W
	aLkmlxJr//ae5rbHKPRUfqItlv6M6u5NkCwtvPCJPxpyA+VzMj3bFFVLVSF8Z1+G7XKKvLvH5TyaD
	xV9IeuoBe0PPQxtM4Y0YW48phU6oGi4s/Axjd6ngAMyTqVl6C19MMvIqRodMU3VoDpY/co+p0bNnz
	Ph8IZH5cQrkNJgaA+KjebXsBmtzuqiF1A2MP30Acl3RLva6lpnoTe8uS0cndQqoMmmxTpeEzJ1TiY
	vx4SntpA==;
Message-ID: <96182bf50bd52cc16b8378ff571b6954144b0723.camel@infradead.org>
Subject: Re: [PATCH] x86/hvm: don't expose XENFEAT_hvm_pirqs by default
From: David Woodhouse <dwmw2@infradead.org>
To: Jan Beulich <jbeulich@suse.com>, Roger Pau Monne <roger.pau@citrix.com>
Cc: Wei Liu <wl@xen.org>, Anthony PERARD <anthony.perard@citrix.com>, 
 Juergen Gross <jgross@suse.com>, Marek
 =?ISO-8859-1?Q?Marczykowski-G=F3recki?= <marmarek@invisiblethingslab.com>,
 Andrew Cooper <andrew.cooper3@citrix.com>,  xen-devel@lists.xenproject.org
Date: Thu, 11 Jan 2024 17:47:30 +0000
In-Reply-To: <238b79f5-0510-4306-9c32-19dade08e819@suse.com>
References: <20240110095311.61809-1-roger.pau@citrix.com>
	 <238b79f5-0510-4306-9c32-19dade08e819@suse.com>
Content-Type: multipart/signed; micalg="sha-256"; protocol="application/pkcs7-signature";
	boundary="=-0dzmeIhC1xGFRPk3tTEf"
User-Agent: Evolution 3.44.4-0ubuntu2 
MIME-Version: 1.0
X-SRS-Rewrite: SMTP reverse-path rewritten from <dwmw2@infradead.org> by casper.infradead.org. See http://www.infradead.org/rpr.html


--=-0dzmeIhC1xGFRPk3tTEf
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

On Wed, 2024-01-10 at 11:26 +0100, Jan Beulich wrote:
> On 10.01.2024 10:53, Roger Pau Monne wrote:
> > The HVM pirq feature allows routing interrupts from both physical and e=
mulated
> > devices over event channels, this was done a performance improvement.=
=C2=A0 However
> > its usage is fully undocumented, and the only reference implementation =
is in
> > Linux.=C2=A0 It defeats the purpose of local APIC hardware virtualizati=
on, because
> > when using it interrupts avoid the usage of the local APIC altogether.
>=20
> So without sufficient APIC acceleration, isn't this arranging for degrade=
d
> performance then? IOW should the new default perhaps be dependent on the
> degree of APIC acceleration?

In fact Linux already declines to use MSI =E2=86=92 PIRQ routing if APIC
acceleration is enabled.

static void __init xen_hvm_msi_init(void)
{
        if (!apic_is_disabled) {
                /*
                 * If hardware supports (x2)APIC virtualization (as indicat=
ed
                 * by hypervisor's leaf 4) then we don't need to use pirqs/
                 * event channels for MSI handling and instead use regular
                 * APIC processing
                 */
                uint32_t eax =3D cpuid_eax(xen_cpuid_base() + 4);

                if (((eax & XEN_HVM_CPUID_X2APIC_VIRT) && x2apic_mode) ||
                    ((eax & XEN_HVM_CPUID_APIC_ACCESS_VIRT) && boot_cpu_has=
(X86_FEATURE_APIC)))
                        return;
        }
        xen_setup_pci_msi();
}

> > It has also been reported to not work properly with certain devices, at=
 least
> > when using some AMD GPUs Linux attempts to route interrupts over event
> > channels, but Xen doesn't correctly detect such routing, which leads to=
 the
> > hypervisor complaining with:
> >=20
> > (XEN) d15v0: Unsupported MSI delivery mode 7 for Dom15
> >=20
> > When MSIs are attempted to be routed over event channels the entry deli=
very
> > mode is set to ExtINT, but Xen doesn't detect such routing and attempts=
 to
> > inject the interrupt following the native MSI path, and the ExtINT deli=
very
> > mode is not supported.
>=20
> Shouldn't this be properly addressed nevertheless? The way it's described
> it sounds as if MSI wouldn't work at all this way; I can't spot why the
> issue would only be "with certain devices". Yet that in turn doesn't look
> to be very likely - pass-through use cases, in particular SR-IOV ones,
> would certainly have noticed.

I agree. The MSI to PIRQ routing thing is *awful*, especially the way
that Xen/QEMU snoops on writes to the MSI table while the target is
*masked*, and then Xen unmasks the MSI instead of the guest doing so.

But it does work, and there are three implementations of it on the
hypervisor side now (Xen itself, QEMU and the Nitro hypervisor). We
should fix the bug which is being reported, but I don't see why it's
necessary to completely disable the feature.


--=-0dzmeIhC1xGFRPk3tTEf
Content-Type: application/pkcs7-signature; name="smime.p7s"
Content-Disposition: attachment; filename="smime.p7s"
Content-Transfer-Encoding: base64

MIAGCSqGSIb3DQEHAqCAMIACAQExDzANBglghkgBZQMEAgEFADCABgkqhkiG9w0BBwEAAKCCEkQw
ggYQMIID+KADAgECAhBNlCwQ1DvglAnFgS06KwZPMA0GCSqGSIb3DQEBDAUAMIGIMQswCQYDVQQG
EwJVUzETMBEGA1UECBMKTmV3IEplcnNleTEUMBIGA1UEBxMLSmVyc2V5IENpdHkxHjAcBgNVBAoT
FVRoZSBVU0VSVFJVU1QgTmV0d29yazEuMCwGA1UEAxMlVVNFUlRydXN0IFJTQSBDZXJ0aWZpY2F0
aW9uIEF1dGhvcml0eTAeFw0xODExMDIwMDAwMDBaFw0zMDEyMzEyMzU5NTlaMIGWMQswCQYDVQQG
EwJHQjEbMBkGA1UECBMSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHEwdTYWxmb3JkMRgwFgYD
VQQKEw9TZWN0aWdvIExpbWl0ZWQxPjA8BgNVBAMTNVNlY3RpZ28gUlNBIENsaWVudCBBdXRoZW50
aWNhdGlvbiBhbmQgU2VjdXJlIEVtYWlsIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
AQEAyjztlApB/975Rrno1jvm2pK/KxBOqhq8gr2+JhwpKirSzZxQgT9tlC7zl6hn1fXjSo5MqXUf
ItMltrMaXqcESJuK8dtK56NCSrq4iDKaKq9NxOXFmqXX2zN8HHGjQ2b2Xv0v1L5Nk1MQPKA19xeW
QcpGEGFUUd0kN+oHox+L9aV1rjfNiCj3bJk6kJaOPabPi2503nn/ITX5e8WfPnGw4VuZ79Khj1YB
rf24k5Ee1sLTHsLtpiK9OjG4iQRBdq6Z/TlVx/hGAez5h36bBJMxqdHLpdwIUkTqT8se3ed0PewD
ch/8kHPo5fZl5u1B0ecpq/sDN/5sCG52Ds+QU5O5EwIDAQABo4IBZDCCAWAwHwYDVR0jBBgwFoAU
U3m/WqorSs9UgOHYm8Cd8rIDZsswHQYDVR0OBBYEFAnA8vwL2pTbX/4r36iZQs/J4K0AMA4GA1Ud
DwEB/wQEAwIBhjASBgNVHRMBAf8ECDAGAQH/AgEAMB0GA1UdJQQWMBQGCCsGAQUFBwMCBggrBgEF
BQcDBDARBgNVHSAECjAIMAYGBFUdIAAwUAYDVR0fBEkwRzBFoEOgQYY/aHR0cDovL2NybC51c2Vy
dHJ1c3QuY29tL1VTRVJUcnVzdFJTQUNlcnRpZmljYXRpb25BdXRob3JpdHkuY3JsMHYGCCsGAQUF
BwEBBGowaDA/BggrBgEFBQcwAoYzaHR0cDovL2NydC51c2VydHJ1c3QuY29tL1VTRVJUcnVzdFJT
QUFkZFRydXN0Q0EuY3J0MCUGCCsGAQUFBzABhhlodHRwOi8vb2NzcC51c2VydHJ1c3QuY29tMA0G
CSqGSIb3DQEBDAUAA4ICAQBBRHUAqznCFfXejpVtMnFojADdF9d6HBA4kMjjsb0XMZHztuOCtKF+
xswhh2GqkW5JQrM8zVlU+A2VP72Ky2nlRA1GwmIPgou74TZ/XTarHG8zdMSgaDrkVYzz1g3nIVO9
IHk96VwsacIvBF8JfqIs+8aWH2PfSUrNxP6Ys7U0sZYx4rXD6+cqFq/ZW5BUfClN/rhk2ddQXyn7
kkmka2RQb9d90nmNHdgKrwfQ49mQ2hWQNDkJJIXwKjYA6VUR/fZUFeCUisdDe/0ABLTI+jheXUV1
eoYV7lNwNBKpeHdNuO6Aacb533JlfeUHxvBz9OfYWUiXu09sMAviM11Q0DuMZ5760CdO2VnpsXP4
KxaYIhvqPqUMWqRdWyn7crItNkZeroXaecG03i3mM7dkiPaCkgocBg0EBYsbZDZ8bsG3a08LwEsL
1Ygz3SBsyECa0waq4hOf/Z85F2w2ZpXfP+w8q4ifwO90SGZZV+HR/Jh6rEaVPDRF/CEGVqR1hiuQ
OZ1YL5ezMTX0ZSLwrymUE0pwi/KDaiYB15uswgeIAcA6JzPFf9pLkAFFWs1QNyN++niFhsM47qod
x/PL+5jR87myx5uYdBEQkkDc+lKB1Wct6ucXqm2EmsaQ0M95QjTmy+rDWjkDYdw3Ms6mSWE3Bn7i
5ZgtwCLXgAIe5W8mybM2JzCCBhQwggT8oAMCAQICEQDGvhmWZ0DEAx0oURL6O6l+MA0GCSqGSIb3
DQEBCwUAMIGWMQswCQYDVQQGEwJHQjEbMBkGA1UECBMSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYD
VQQHEwdTYWxmb3JkMRgwFgYDVQQKEw9TZWN0aWdvIExpbWl0ZWQxPjA8BgNVBAMTNVNlY3RpZ28g
UlNBIENsaWVudCBBdXRoZW50aWNhdGlvbiBhbmQgU2VjdXJlIEVtYWlsIENBMB4XDTIyMDEwNzAw
MDAwMFoXDTI1MDEwNjIzNTk1OVowJDEiMCAGCSqGSIb3DQEJARYTZHdtdzJAaW5mcmFkZWFkLm9y
ZzCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBALQ3GpC2bomUqk+91wLYBzDMcCj5C9m6
oZaHwvmIdXftOgTbCJXADo6G9T7BBAebw2JV38EINgKpy/ZHh7htyAkWYVoFsFPrwHounto8xTsy
SSePMiPlmIdQ10BcVSXMUJ3Juu16GlWOnAMJY2oYfEzmE7uT9YgcBqKCo65pTFmOnR/VVbjJk4K2
xE34GC2nAdUQkPFuyaFisicc6HRMOYXPuF0DuwITEKnjxgNjP+qDrh0db7PAjO1D4d5ftfrsf+kd
RR4gKVGSk8Tz2WwvtLAroJM4nXjNPIBJNT4w/FWWc/5qPHJy2U+eITZ5LLE5s45mX2oPFknWqxBo
bQZ8a9dsZ3dSPZBvE9ZrmtFLrVrN4eo1jsXgAp1+p7bkfqd3BgBEmfsYWlBXO8rVXfvPgLs32VdV
NZxb/CDWPqBsiYv0Hv3HPsz07j5b+/cVoWqyHDKzkaVbxfq/7auNVRmPB3v5SWEsH8xi4Bez2V9U
KxfYCnqsjp8RaC2/khxKt0A552Eaxnz/4ly/2C7wkwTQnBmdlFYhAflWKQ03Ufiu8t3iBE3VJbc2
5oMrglj7TRZrmKq3CkbFnX0fyulB+kHimrt6PIWn7kgyl9aelIl6vtbhMA+l0nfrsORMa4kobqQ5
C5rveVgmcIad67EDa+UqEKy/GltUwlSh6xy+TrK1tzDvAgMBAAGjggHMMIIByDAfBgNVHSMEGDAW
gBQJwPL8C9qU21/+K9+omULPyeCtADAdBgNVHQ4EFgQUzMeDMcimo0oz8o1R1Nver3ZVpSkwDgYD
VR0PAQH/BAQDAgWgMAwGA1UdEwEB/wQCMAAwHQYDVR0lBBYwFAYIKwYBBQUHAwQGCCsGAQUFBwMC
MEAGA1UdIAQ5MDcwNQYMKwYBBAGyMQECAQEBMCUwIwYIKwYBBQUHAgEWF2h0dHBzOi8vc2VjdGln
by5jb20vQ1BTMFoGA1UdHwRTMFEwT6BNoEuGSWh0dHA6Ly9jcmwuc2VjdGlnby5jb20vU2VjdGln
b1JTQUNsaWVudEF1dGhlbnRpY2F0aW9uYW5kU2VjdXJlRW1haWxDQS5jcmwwgYoGCCsGAQUFBwEB
BH4wfDBVBggrBgEFBQcwAoZJaHR0cDovL2NydC5zZWN0aWdvLmNvbS9TZWN0aWdvUlNBQ2xpZW50
QXV0aGVudGljYXRpb25hbmRTZWN1cmVFbWFpbENBLmNydDAjBggrBgEFBQcwAYYXaHR0cDovL29j
c3Auc2VjdGlnby5jb20wHgYDVR0RBBcwFYETZHdtdzJAaW5mcmFkZWFkLm9yZzANBgkqhkiG9w0B
AQsFAAOCAQEAyW6MUir5dm495teKqAQjDJwuFCi35h4xgnQvQ/fzPXmtR9t54rpmI2TfyvcKgOXp
qa7BGXNFfh1JsqexVkIqZP9uWB2J+uVMD+XZEs/KYNNX2PvIlSPrzIB4Z2wyIGQpaPLlYflrrVFK
v9CjT2zdqvy2maK7HKOQRt3BiJbVG5lRiwbbygldcALEV9ChWFfgSXvrWDZspnU3Gjw/rMHrGnql
Htlyebp3pf3fSS9kzQ1FVtVIDrL6eqhTwJxe+pXSMMqFiN0whpBtXdyDjzBtQTaZJ7zTT/vlehc/
tDuqZwGHm/YJy883Ll+GP3NvOkgaRGWEuYWJJ6hFCkXYjyR9IzCCBhQwggT8oAMCAQICEQDGvhmW
Z0DEAx0oURL6O6l+MA0GCSqGSIb3DQEBCwUAMIGWMQswCQYDVQQGEwJHQjEbMBkGA1UECBMSR3Jl
YXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHEwdTYWxmb3JkMRgwFgYDVQQKEw9TZWN0aWdvIExpbWl0
ZWQxPjA8BgNVBAMTNVNlY3RpZ28gUlNBIENsaWVudCBBdXRoZW50aWNhdGlvbiBhbmQgU2VjdXJl
IEVtYWlsIENBMB4XDTIyMDEwNzAwMDAwMFoXDTI1MDEwNjIzNTk1OVowJDEiMCAGCSqGSIb3DQEJ
ARYTZHdtdzJAaW5mcmFkZWFkLm9yZzCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBALQ3
GpC2bomUqk+91wLYBzDMcCj5C9m6oZaHwvmIdXftOgTbCJXADo6G9T7BBAebw2JV38EINgKpy/ZH
h7htyAkWYVoFsFPrwHounto8xTsySSePMiPlmIdQ10BcVSXMUJ3Juu16GlWOnAMJY2oYfEzmE7uT
9YgcBqKCo65pTFmOnR/VVbjJk4K2xE34GC2nAdUQkPFuyaFisicc6HRMOYXPuF0DuwITEKnjxgNj
P+qDrh0db7PAjO1D4d5ftfrsf+kdRR4gKVGSk8Tz2WwvtLAroJM4nXjNPIBJNT4w/FWWc/5qPHJy
2U+eITZ5LLE5s45mX2oPFknWqxBobQZ8a9dsZ3dSPZBvE9ZrmtFLrVrN4eo1jsXgAp1+p7bkfqd3
BgBEmfsYWlBXO8rVXfvPgLs32VdVNZxb/CDWPqBsiYv0Hv3HPsz07j5b+/cVoWqyHDKzkaVbxfq/
7auNVRmPB3v5SWEsH8xi4Bez2V9UKxfYCnqsjp8RaC2/khxKt0A552Eaxnz/4ly/2C7wkwTQnBmd
lFYhAflWKQ03Ufiu8t3iBE3VJbc25oMrglj7TRZrmKq3CkbFnX0fyulB+kHimrt6PIWn7kgyl9ae
lIl6vtbhMA+l0nfrsORMa4kobqQ5C5rveVgmcIad67EDa+UqEKy/GltUwlSh6xy+TrK1tzDvAgMB
AAGjggHMMIIByDAfBgNVHSMEGDAWgBQJwPL8C9qU21/+K9+omULPyeCtADAdBgNVHQ4EFgQUzMeD
Mcimo0oz8o1R1Nver3ZVpSkwDgYDVR0PAQH/BAQDAgWgMAwGA1UdEwEB/wQCMAAwHQYDVR0lBBYw
FAYIKwYBBQUHAwQGCCsGAQUFBwMCMEAGA1UdIAQ5MDcwNQYMKwYBBAGyMQECAQEBMCUwIwYIKwYB
BQUHAgEWF2h0dHBzOi8vc2VjdGlnby5jb20vQ1BTMFoGA1UdHwRTMFEwT6BNoEuGSWh0dHA6Ly9j
cmwuc2VjdGlnby5jb20vU2VjdGlnb1JTQUNsaWVudEF1dGhlbnRpY2F0aW9uYW5kU2VjdXJlRW1h
aWxDQS5jcmwwgYoGCCsGAQUFBwEBBH4wfDBVBggrBgEFBQcwAoZJaHR0cDovL2NydC5zZWN0aWdv
LmNvbS9TZWN0aWdvUlNBQ2xpZW50QXV0aGVudGljYXRpb25hbmRTZWN1cmVFbWFpbENBLmNydDAj
BggrBgEFBQcwAYYXaHR0cDovL29jc3Auc2VjdGlnby5jb20wHgYDVR0RBBcwFYETZHdtdzJAaW5m
cmFkZWFkLm9yZzANBgkqhkiG9w0BAQsFAAOCAQEAyW6MUir5dm495teKqAQjDJwuFCi35h4xgnQv
Q/fzPXmtR9t54rpmI2TfyvcKgOXpqa7BGXNFfh1JsqexVkIqZP9uWB2J+uVMD+XZEs/KYNNX2PvI
lSPrzIB4Z2wyIGQpaPLlYflrrVFKv9CjT2zdqvy2maK7HKOQRt3BiJbVG5lRiwbbygldcALEV9Ch
WFfgSXvrWDZspnU3Gjw/rMHrGnqlHtlyebp3pf3fSS9kzQ1FVtVIDrL6eqhTwJxe+pXSMMqFiN0w
hpBtXdyDjzBtQTaZJ7zTT/vlehc/tDuqZwGHm/YJy883Ll+GP3NvOkgaRGWEuYWJJ6hFCkXYjyR9
IzGCBMcwggTDAgEBMIGsMIGWMQswCQYDVQQGEwJHQjEbMBkGA1UECBMSR3JlYXRlciBNYW5jaGVz
dGVyMRAwDgYDVQQHEwdTYWxmb3JkMRgwFgYDVQQKEw9TZWN0aWdvIExpbWl0ZWQxPjA8BgNVBAMT
NVNlY3RpZ28gUlNBIENsaWVudCBBdXRoZW50aWNhdGlvbiBhbmQgU2VjdXJlIEVtYWlsIENBAhEA
xr4ZlmdAxAMdKFES+jupfjANBglghkgBZQMEAgEFAKCCAeswGAYJKoZIhvcNAQkDMQsGCSqGSIb3
DQEHATAcBgkqhkiG9w0BCQUxDxcNMjQwMTExMTc0NzMwWjAvBgkqhkiG9w0BCQQxIgQgNTW0jZ5v
RhIZcGUNArmBHML9IFDFNEc0SBQD2yKnockwgb0GCSsGAQQBgjcQBDGBrzCBrDCBljELMAkGA1UE
BhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEYMBYG
A1UEChMPU2VjdGlnbyBMaW1pdGVkMT4wPAYDVQQDEzVTZWN0aWdvIFJTQSBDbGllbnQgQXV0aGVu
dGljYXRpb24gYW5kIFNlY3VyZSBFbWFpbCBDQQIRAMa+GZZnQMQDHShREvo7qX4wgb8GCyqGSIb3
DQEJEAILMYGvoIGsMIGWMQswCQYDVQQGEwJHQjEbMBkGA1UECBMSR3JlYXRlciBNYW5jaGVzdGVy
MRAwDgYDVQQHEwdTYWxmb3JkMRgwFgYDVQQKEw9TZWN0aWdvIExpbWl0ZWQxPjA8BgNVBAMTNVNl
Y3RpZ28gUlNBIENsaWVudCBBdXRoZW50aWNhdGlvbiBhbmQgU2VjdXJlIEVtYWlsIENBAhEAxr4Z
lmdAxAMdKFES+jupfjANBgkqhkiG9w0BAQEFAASCAgCVU5dQjpFzw0vJa37vkkwKs84abE85pwbE
yqgspiQFj2Y7rdq55lN1rGJJBLAV8a5WCU7yTL9rEGSVvf+hUNTJIFVirzKTq1QvANSjHC/eZyVV
qoXYVtMn5qL3dYYlf28E86ZwXFKoriaSGKVLIAyakHxMSY+ocj3ioEH7D69gHaDgUuNfrhi1yneR
mJUDrRDpGtoT1tzjt0d/U5kSGrx2wpLT+KktJQ+E+HkNufoOPtFVO/aYSoUqP1LdFQh9+FJkidph
CKPeo1bDc61Bi5bvIk/Nm0kVEelwqjNWVlSYQCCO4dWLYWWmPbZKpix5/0sNQTem6rpUsmNVb1bc
qK+H0aO+40c6ut/Mj8vv3RfmvxGfd8EGNHrTQHC71Uhbz/KCYjC6/C71GffKnwG4LXQUSnWvOW35
dmBBfI7fEo9323/yMSU1ZsmNkWcQhiF1X5uTcA3wGm1p4ezhu475XTEclBFOe4rZKK1iByMVe4hi
oZAEDr14oY3tvn8noVpDEOy+80mARzFMrqicpvaSNjIk93AsVWuhsZC400UjuZ+lavXYxcz3ARmA
tbEh4LHvLaR6yCeSnCToA6M/7FokxY087ZfyRqaZr6Q23rYWMmDt6bY0v4jiaRtMUEq1EtA6T63u
Lh4Jad2NgQCerqZvww3QzmvNhyAViPh3VO6EAhFkqQAAAAAAAA==


--=-0dzmeIhC1xGFRPk3tTEf--


From xen-devel-bounces@lists.xenproject.org Thu Jan 11 18:07:53 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 11 Jan 2024 18:07:53 +0000
Received: from list by lists.xenproject.org with outflank-mailman.666467.1037123 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNzSy-00030A-4Y; Thu, 11 Jan 2024 18:07:44 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 666467.1037123; Thu, 11 Jan 2024 18:07:44 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNzSy-000303-1G; Thu, 11 Jan 2024 18:07:44 +0000
Received: by outflank-mailman (input) for mailman id 666467;
 Thu, 11 Jan 2024 18:07:42 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=YPRU=IV=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1rNzSw-0002yk-QE
 for xen-devel@lists.xenproject.org; Thu, 11 Jan 2024 18:07:42 +0000
Received: from mail-wm1-x331.google.com (mail-wm1-x331.google.com
 [2a00:1450:4864:20::331])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 4dcea389-b0ac-11ee-9b0f-b553b5be7939;
 Thu, 11 Jan 2024 19:07:38 +0100 (CET)
Received: by mail-wm1-x331.google.com with SMTP id
 5b1f17b1804b1-40b5155e154so72268745e9.3
 for <xen-devel@lists.xenproject.org>; Thu, 11 Jan 2024 10:07:38 -0800 (PST)
Received: from [10.80.67.30] (default-46-102-197-194.interdsl.co.uk.
 [46.102.197.194]) by smtp.gmail.com with ESMTPSA id
 f1-20020a5d6641000000b0033609584b9dsm1788483wrw.74.2024.01.11.10.07.37
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 11 Jan 2024 10:07:37 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 4dcea389-b0ac-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1704996458; x=1705601258; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=+iF8o0/xbuMuQ0SG4Z3/J+WbK7BiSrX1PdDKAboasaI=;
        b=RRRgoRudbGc/ARJlmnSvBC80ZPX/CNNTz/CxCKPPgbWegchoEk08rZmFOJEn6feqzq
         bUI2vFfWglIovPzsj9MyMxMqtNbmZXP6FdOB/DZ1x3BRrXQ8Onxl9GTJ/GFlMEiT+EEB
         /Hjcg3PYboFxTpy5nG7CYIZKCwCHmg3dC9Fd4=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704996458; x=1705601258;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=+iF8o0/xbuMuQ0SG4Z3/J+WbK7BiSrX1PdDKAboasaI=;
        b=ecLaHiuWzOiA7wZRT5YhNJNgQMKx5IXFfPpFnxTPcOZ7VM69bftXpSTPTIxkIO/GBJ
         AIfWT6AS1lN+0u2Jghy3V+d0CUVpTzS4Y2jij66ryt21F0hG0cBtKT3snG0vPDLim9FQ
         4fpTXmcUn6PzWkLK8yC2I7Uc7svPmN9xZSjmCxdWzbjz31pT9J02lo/Vhvep3dninoqz
         Tm0tNxybyfa9C03PEo+afcgyLeDa4wtxwFIZPPij2oMSRqbdVpNaTWVsfjZ7OO8JTF2n
         yQL+uWfGZ/GQE2a4AC+5bNVuqlEBRV8uKShhLQizxx8pSR3myM86dz/U/UU0j3voyfvM
         8olA==
X-Gm-Message-State: AOJu0YxG1hux4A4/u1M+7v1FxabGHtXVlwa7mthvNJ7nfsN7co1kdySV
	Pw9eoDVGsDQjD+uXeIbC4cJQF0TtFgfsVg==
X-Google-Smtp-Source: AGHT+IGz8FcUfBAS2VgPqUcr3TMelgNYPXmvsXvmYLh8nwCDiP/jrtcYSqITZ5Aqxg7p+tLX+9JyiA==
X-Received: by 2002:a05:600c:4446:b0:40e:3654:29f4 with SMTP id v6-20020a05600c444600b0040e365429f4mr109047wmn.32.1704996457750;
        Thu, 11 Jan 2024 10:07:37 -0800 (PST)
Message-ID: <485553fc-b91f-4a35-b01f-8bbd5964276b@citrix.com>
Date: Thu, 11 Jan 2024 18:07:37 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 5/8] serial: drop serial_[rt]x_interrupt()'s regs
 parameter
Content-Language: en-GB
To: Jan Beulich <jbeulich@suse.com>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: George Dunlap <george.dunlap@citrix.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>,
 Bertrand Marquis <bertrand.marquis@arm.com>,
 Michal Orzel <michal.orzel@amd.com>
References: <1ab231ec-5e3c-4662-8530-2213bc52bb7c@suse.com>
 <05b1284a-988c-4f91-9cde-4751332aaa96@suse.com>
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 xsFNBFLhNn8BEADVhE+Hb8i0GV6mihnnr/uiQQdPF8kUoFzCOPXkf7jQ5sLYeJa0cQi6Penp
 VtiFYznTairnVsN5J+ujSTIb+OlMSJUWV4opS7WVNnxHbFTPYZVQ3erv7NKc2iVizCRZ2Kxn
 srM1oPXWRic8BIAdYOKOloF2300SL/bIpeD+x7h3w9B/qez7nOin5NzkxgFoaUeIal12pXSR
 Q354FKFoy6Vh96gc4VRqte3jw8mPuJQpfws+Pb+swvSf/i1q1+1I4jsRQQh2m6OTADHIqg2E
 ofTYAEh7R5HfPx0EXoEDMdRjOeKn8+vvkAwhviWXTHlG3R1QkbE5M/oywnZ83udJmi+lxjJ5
 YhQ5IzomvJ16H0Bq+TLyVLO/VRksp1VR9HxCzItLNCS8PdpYYz5TC204ViycobYU65WMpzWe
 LFAGn8jSS25XIpqv0Y9k87dLbctKKA14Ifw2kq5OIVu2FuX+3i446JOa2vpCI9GcjCzi3oHV
 e00bzYiHMIl0FICrNJU0Kjho8pdo0m2uxkn6SYEpogAy9pnatUlO+erL4LqFUO7GXSdBRbw5
 gNt25XTLdSFuZtMxkY3tq8MFss5QnjhehCVPEpE6y9ZjI4XB8ad1G4oBHVGK5LMsvg22PfMJ
 ISWFSHoF/B5+lHkCKWkFxZ0gZn33ju5n6/FOdEx4B8cMJt+cWwARAQABzSlBbmRyZXcgQ29v
 cGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPsLBegQTAQgAJAIbAwULCQgHAwUVCgkI
 CwUWAgMBAAIeAQIXgAUCWKD95wIZAQAKCRBlw/kGpdefoHbdD/9AIoR3k6fKl+RFiFpyAhvO
 59ttDFI7nIAnlYngev2XUR3acFElJATHSDO0ju+hqWqAb8kVijXLops0gOfqt3VPZq9cuHlh
 IMDquatGLzAadfFx2eQYIYT+FYuMoPZy/aTUazmJIDVxP7L383grjIkn+7tAv+qeDfE+txL4
 SAm1UHNvmdfgL2/lcmL3xRh7sub3nJilM93RWX1Pe5LBSDXO45uzCGEdst6uSlzYR/MEr+5Z
 JQQ32JV64zwvf/aKaagSQSQMYNX9JFgfZ3TKWC1KJQbX5ssoX/5hNLqxMcZV3TN7kU8I3kjK
 mPec9+1nECOjjJSO/h4P0sBZyIUGfguwzhEeGf4sMCuSEM4xjCnwiBwftR17sr0spYcOpqET
 ZGcAmyYcNjy6CYadNCnfR40vhhWuCfNCBzWnUW0lFoo12wb0YnzoOLjvfD6OL3JjIUJNOmJy
 RCsJ5IA/Iz33RhSVRmROu+TztwuThClw63g7+hoyewv7BemKyuU6FTVhjjW+XUWmS/FzknSi
 dAG+insr0746cTPpSkGl3KAXeWDGJzve7/SBBfyznWCMGaf8E2P1oOdIZRxHgWj0zNr1+ooF
 /PzgLPiCI4OMUttTlEKChgbUTQ+5o0P080JojqfXwbPAyumbaYcQNiH1/xYbJdOFSiBv9rpt
 TQTBLzDKXok86M7BTQRS4TZ/ARAAkgqudHsp+hd82UVkvgnlqZjzz2vyrYfz7bkPtXaGb9H4
 Rfo7mQsEQavEBdWWjbga6eMnDqtu+FC+qeTGYebToxEyp2lKDSoAsvt8w82tIlP/EbmRbDVn
 7bhjBlfRcFjVYw8uVDPptT0TV47vpoCVkTwcyb6OltJrvg/QzV9f07DJswuda1JH3/qvYu0p
 vjPnYvCq4NsqY2XSdAJ02HrdYPFtNyPEntu1n1KK+gJrstjtw7KsZ4ygXYrsm/oCBiVW/OgU
 g/XIlGErkrxe4vQvJyVwg6YH653YTX5hLLUEL1NS4TCo47RP+wi6y+TnuAL36UtK/uFyEuPy
 wwrDVcC4cIFhYSfsO0BumEI65yu7a8aHbGfq2lW251UcoU48Z27ZUUZd2Dr6O/n8poQHbaTd
 6bJJSjzGGHZVbRP9UQ3lkmkmc0+XCHmj5WhwNNYjgbbmML7y0fsJT5RgvefAIFfHBg7fTY/i
 kBEimoUsTEQz+N4hbKwo1hULfVxDJStE4sbPhjbsPCrlXf6W9CxSyQ0qmZ2bXsLQYRj2xqd1
 bpA+1o1j2N4/au1R/uSiUFjewJdT/LX1EklKDcQwpk06Af/N7VZtSfEJeRV04unbsKVXWZAk
 uAJyDDKN99ziC0Wz5kcPyVD1HNf8bgaqGDzrv3TfYjwqayRFcMf7xJaL9xXedMcAEQEAAcLB
 XwQYAQgACQUCUuE2fwIbDAAKCRBlw/kGpdefoG4XEACD1Qf/er8EA7g23HMxYWd3FXHThrVQ
 HgiGdk5Yh632vjOm9L4sd/GCEACVQKjsu98e8o3ysitFlznEns5EAAXEbITrgKWXDDUWGYxd
 pnjj2u+GkVdsOAGk0kxczX6s+VRBhpbBI2PWnOsRJgU2n10PZ3mZD4Xu9kU2IXYmuW+e5KCA
 vTArRUdCrAtIa1k01sPipPPw6dfxx2e5asy21YOytzxuWFfJTGnVxZZSCyLUO83sh6OZhJkk
 b9rxL9wPmpN/t2IPaEKoAc0FTQZS36wAMOXkBh24PQ9gaLJvfPKpNzGD8XWR5HHF0NLIJhgg
 4ZlEXQ2fVp3XrtocHqhu4UZR4koCijgB8sB7Tb0GCpwK+C4UePdFLfhKyRdSXuvY3AHJd4CP
 4JzW0Bzq/WXY3XMOzUTYApGQpnUpdOmuQSfpV9MQO+/jo7r6yPbxT7CwRS5dcQPzUiuHLK9i
 nvjREdh84qycnx0/6dDroYhp0DFv4udxuAvt1h4wGwTPRQZerSm4xaYegEFusyhbZrI0U9tJ
 B8WrhBLXDiYlyJT6zOV2yZFuW47VrLsjYnHwn27hmxTC/7tvG3euCklmkn9Sl9IAKFu29RSo
 d5bD8kMSCYsTqtTfT6W4A3qHGvIDta3ptLYpIAOD2sY3GYq2nf3Bbzx81wZK14JdDDHUX2Rs
 6+ahAA==
In-Reply-To: <05b1284a-988c-4f91-9cde-4751332aaa96@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 11/01/2024 7:34 am, Jan Beulich wrote:
> In the the polling functions (ab)using set_irq_regs() is necessary
> to balance the change.

I have to admit that I don't know what "balance the change" is supposed
to refer to in this context.

> --- a/xen/drivers/char/ehci-dbgp.c
> +++ b/xen/drivers/char/ehci-dbgp.c
> @@ -1268,11 +1269,16 @@ static void cf_check _ehci_dbgp_poll(str
>          spin_unlock_irqrestore(&port->tx_lock, flags);
>      }
>  
> +    /* Mimic interrupt context. */
> +    old_regs = set_irq_regs(regs);
> +
>      if ( dbgp->in.chunk )
> -        serial_rx_interrupt(port, regs);
> +        serial_rx_interrupt(port);
>  
>      if ( empty )
> -        serial_tx_interrupt(port, regs);
> +        serial_tx_interrupt(port);
> +
> +    set_irq_regs(old_regs);

Looking at this logic, it has occured to me that patch 2 probably ought
to have ASSERT(!local_irqs_enabled()) in set_irq_regs().  While the main
arch irq dispatch can reasonably have it as an implicit expectation,
uses like this could do with the check.


This construct is very nasty.  What actually needs it?

If it's only handle_keypress(), isn't there a latent issue between patch
3 and 5, given that patch 3 uses set_irq_regs() before this patch sets
it up?

Might it be better to do this in the main handling of BUGFRAME_run_fn,
rather than at a few select users?  We're already abusing
BUGFRAME_run_fn to set up an IRQ-like context for these poll functions.

I suppose a different question is what it would take to get rid of
this.  Is it something a bit more cleanup would solve, or is there some
more fundamental untangling required?


> --- a/xen/drivers/char/xhci-dbc.c
> +++ b/xen/drivers/char/xhci-dbc.c
> @@ -1175,10 +1176,15 @@ static void cf_check dbc_uart_poll(void
>          spin_unlock_irqrestore(&port->tx_lock, flags);
>      }
>  
> +    /* Mimic interrupt context. */
> +    old_regs = set_irq_regs(guest_cpu_user_regs());

This is not a bug in your patch, but...

The use of guest_cpu_user_regs() here is different to all the other poll
functions.  Is this actually correct?

If we're really in interrupt context and then we fake up a poll like
this, then we don't have a total order of frames recorded in the
irq_regs pointer.  I can't see a specific issue, but it also doesn't
feel as if it is something we should allow.

~Andrew


From xen-devel-bounces@lists.xenproject.org Thu Jan 11 18:10:25 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 11 Jan 2024 18:10:25 +0000
Received: from list by lists.xenproject.org with outflank-mailman.666471.1037133 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNzVV-0004yU-I7; Thu, 11 Jan 2024 18:10:21 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 666471.1037133; Thu, 11 Jan 2024 18:10:21 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNzVV-0004yN-EU; Thu, 11 Jan 2024 18:10:21 +0000
Received: by outflank-mailman (input) for mailman id 666471;
 Thu, 11 Jan 2024 18:10:19 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=YPRU=IV=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1rNzVT-0004yA-Ay
 for xen-devel@lists.xenproject.org; Thu, 11 Jan 2024 18:10:19 +0000
Received: from mail-wm1-x32e.google.com (mail-wm1-x32e.google.com
 [2a00:1450:4864:20::32e])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id ad33ad77-b0ac-11ee-98f0-6d05b1d4d9a1;
 Thu, 11 Jan 2024 19:10:18 +0100 (CET)
Received: by mail-wm1-x32e.google.com with SMTP id
 5b1f17b1804b1-40e5c317b34so12962945e9.2
 for <xen-devel@lists.xenproject.org>; Thu, 11 Jan 2024 10:10:18 -0800 (PST)
Received: from [10.80.67.30] (default-46-102-197-194.interdsl.co.uk.
 [46.102.197.194]) by smtp.gmail.com with ESMTPSA id
 jb13-20020a05600c54ed00b0040e418494absm2725315wmb.46.2024.01.11.10.10.17
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 11 Jan 2024 10:10:17 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: ad33ad77-b0ac-11ee-98f0-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1704996618; x=1705601418; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=zMmvvtEPFVdzsifroa1irW9dUJCTEdtN9TGaUT8ZlX4=;
        b=fOLCUwORd5COktVO91jxFeGVEOGKyVXoz1h4ZlJRBTQtlBvyTjmP+7MlGXTqneQZfC
         8vcFdAgD7rCe2bpetkwZ/N1WjuX6A6z080zTC7jyl8/NRPT5RFAC54hgE+8p3u7OIwIL
         0k1XvnkCr0RvZAcQZbxaQG8lsmE6kx0dT1PBU=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704996618; x=1705601418;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=zMmvvtEPFVdzsifroa1irW9dUJCTEdtN9TGaUT8ZlX4=;
        b=rYmd+27i89KmpBcSkY7MBFVWAluq6qcaT1K1WXLgtQ64R49J6zsUEMAboYdjTrPaR0
         5WwrvJefpSo6r/xLpDC1X3tINb5dnombvKxpNCNktq9bgUuCSn0f/X9XyYPoQqfYvz2x
         HUmgbD1kaRLfTOW+GoY0QnhxFT7/P7B9Ky5ZU68fOpT1oqFHKaTFdeq4fTWSwvpLaNj7
         oqvmPoE4QeY0SUreeP7/qJt4g4VqUy+aIzLDQlNmyBO+0a6JmM0SypP+2mJ2OjNfxU8C
         ErP+wgNH7OrfER0CrpBr0zTxJqbBpwjYE0n2xyYBzkBy+TpPMjtZgFRrgi9n7tvpJ406
         1EeA==
X-Gm-Message-State: AOJu0Yz8Eda4vf7S6vsfv1Y4/NrSS7FMPgLJUYBzM5NzZU/8Bp1ypYlw
	WD+I9lcBTmR5KvDO36E1kMmruuJvOcJGEFvwUFmTvbPFyxX24g==
X-Google-Smtp-Source: AGHT+IEhY+sBgd57NFjrcABqT7TmoZkFP5VRgAfgb+w3WapI+esQeBuhSC6XddanimMdvCnolWTjOQ==
X-Received: by 2002:a05:600c:4ecc:b0:40e:500c:23d8 with SMTP id g12-20020a05600c4ecc00b0040e500c23d8mr113878wmq.151.1704996617837;
        Thu, 11 Jan 2024 10:10:17 -0800 (PST)
Message-ID: <1e520de0-8698-499d-8187-c79f589c974d@citrix.com>
Date: Thu, 11 Jan 2024 18:10:17 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 6/8] IRQ: drop register parameter from handler functions
Content-Language: en-GB
To: Jan Beulich <jbeulich@suse.com>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: George Dunlap <george.dunlap@citrix.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Bertrand Marquis <bertrand.marquis@arm.com>,
 Michal Orzel <michal.orzel@amd.com>, Kevin Tian <kevin.tian@intel.com>
References: <1ab231ec-5e3c-4662-8530-2213bc52bb7c@suse.com>
 <c6926627-aeb6-40dd-a85a-1be0b324bf49@suse.com>
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 xsFNBFLhNn8BEADVhE+Hb8i0GV6mihnnr/uiQQdPF8kUoFzCOPXkf7jQ5sLYeJa0cQi6Penp
 VtiFYznTairnVsN5J+ujSTIb+OlMSJUWV4opS7WVNnxHbFTPYZVQ3erv7NKc2iVizCRZ2Kxn
 srM1oPXWRic8BIAdYOKOloF2300SL/bIpeD+x7h3w9B/qez7nOin5NzkxgFoaUeIal12pXSR
 Q354FKFoy6Vh96gc4VRqte3jw8mPuJQpfws+Pb+swvSf/i1q1+1I4jsRQQh2m6OTADHIqg2E
 ofTYAEh7R5HfPx0EXoEDMdRjOeKn8+vvkAwhviWXTHlG3R1QkbE5M/oywnZ83udJmi+lxjJ5
 YhQ5IzomvJ16H0Bq+TLyVLO/VRksp1VR9HxCzItLNCS8PdpYYz5TC204ViycobYU65WMpzWe
 LFAGn8jSS25XIpqv0Y9k87dLbctKKA14Ifw2kq5OIVu2FuX+3i446JOa2vpCI9GcjCzi3oHV
 e00bzYiHMIl0FICrNJU0Kjho8pdo0m2uxkn6SYEpogAy9pnatUlO+erL4LqFUO7GXSdBRbw5
 gNt25XTLdSFuZtMxkY3tq8MFss5QnjhehCVPEpE6y9ZjI4XB8ad1G4oBHVGK5LMsvg22PfMJ
 ISWFSHoF/B5+lHkCKWkFxZ0gZn33ju5n6/FOdEx4B8cMJt+cWwARAQABzSlBbmRyZXcgQ29v
 cGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPsLBegQTAQgAJAIbAwULCQgHAwUVCgkI
 CwUWAgMBAAIeAQIXgAUCWKD95wIZAQAKCRBlw/kGpdefoHbdD/9AIoR3k6fKl+RFiFpyAhvO
 59ttDFI7nIAnlYngev2XUR3acFElJATHSDO0ju+hqWqAb8kVijXLops0gOfqt3VPZq9cuHlh
 IMDquatGLzAadfFx2eQYIYT+FYuMoPZy/aTUazmJIDVxP7L383grjIkn+7tAv+qeDfE+txL4
 SAm1UHNvmdfgL2/lcmL3xRh7sub3nJilM93RWX1Pe5LBSDXO45uzCGEdst6uSlzYR/MEr+5Z
 JQQ32JV64zwvf/aKaagSQSQMYNX9JFgfZ3TKWC1KJQbX5ssoX/5hNLqxMcZV3TN7kU8I3kjK
 mPec9+1nECOjjJSO/h4P0sBZyIUGfguwzhEeGf4sMCuSEM4xjCnwiBwftR17sr0spYcOpqET
 ZGcAmyYcNjy6CYadNCnfR40vhhWuCfNCBzWnUW0lFoo12wb0YnzoOLjvfD6OL3JjIUJNOmJy
 RCsJ5IA/Iz33RhSVRmROu+TztwuThClw63g7+hoyewv7BemKyuU6FTVhjjW+XUWmS/FzknSi
 dAG+insr0746cTPpSkGl3KAXeWDGJzve7/SBBfyznWCMGaf8E2P1oOdIZRxHgWj0zNr1+ooF
 /PzgLPiCI4OMUttTlEKChgbUTQ+5o0P080JojqfXwbPAyumbaYcQNiH1/xYbJdOFSiBv9rpt
 TQTBLzDKXok86M7BTQRS4TZ/ARAAkgqudHsp+hd82UVkvgnlqZjzz2vyrYfz7bkPtXaGb9H4
 Rfo7mQsEQavEBdWWjbga6eMnDqtu+FC+qeTGYebToxEyp2lKDSoAsvt8w82tIlP/EbmRbDVn
 7bhjBlfRcFjVYw8uVDPptT0TV47vpoCVkTwcyb6OltJrvg/QzV9f07DJswuda1JH3/qvYu0p
 vjPnYvCq4NsqY2XSdAJ02HrdYPFtNyPEntu1n1KK+gJrstjtw7KsZ4ygXYrsm/oCBiVW/OgU
 g/XIlGErkrxe4vQvJyVwg6YH653YTX5hLLUEL1NS4TCo47RP+wi6y+TnuAL36UtK/uFyEuPy
 wwrDVcC4cIFhYSfsO0BumEI65yu7a8aHbGfq2lW251UcoU48Z27ZUUZd2Dr6O/n8poQHbaTd
 6bJJSjzGGHZVbRP9UQ3lkmkmc0+XCHmj5WhwNNYjgbbmML7y0fsJT5RgvefAIFfHBg7fTY/i
 kBEimoUsTEQz+N4hbKwo1hULfVxDJStE4sbPhjbsPCrlXf6W9CxSyQ0qmZ2bXsLQYRj2xqd1
 bpA+1o1j2N4/au1R/uSiUFjewJdT/LX1EklKDcQwpk06Af/N7VZtSfEJeRV04unbsKVXWZAk
 uAJyDDKN99ziC0Wz5kcPyVD1HNf8bgaqGDzrv3TfYjwqayRFcMf7xJaL9xXedMcAEQEAAcLB
 XwQYAQgACQUCUuE2fwIbDAAKCRBlw/kGpdefoG4XEACD1Qf/er8EA7g23HMxYWd3FXHThrVQ
 HgiGdk5Yh632vjOm9L4sd/GCEACVQKjsu98e8o3ysitFlznEns5EAAXEbITrgKWXDDUWGYxd
 pnjj2u+GkVdsOAGk0kxczX6s+VRBhpbBI2PWnOsRJgU2n10PZ3mZD4Xu9kU2IXYmuW+e5KCA
 vTArRUdCrAtIa1k01sPipPPw6dfxx2e5asy21YOytzxuWFfJTGnVxZZSCyLUO83sh6OZhJkk
 b9rxL9wPmpN/t2IPaEKoAc0FTQZS36wAMOXkBh24PQ9gaLJvfPKpNzGD8XWR5HHF0NLIJhgg
 4ZlEXQ2fVp3XrtocHqhu4UZR4koCijgB8sB7Tb0GCpwK+C4UePdFLfhKyRdSXuvY3AHJd4CP
 4JzW0Bzq/WXY3XMOzUTYApGQpnUpdOmuQSfpV9MQO+/jo7r6yPbxT7CwRS5dcQPzUiuHLK9i
 nvjREdh84qycnx0/6dDroYhp0DFv4udxuAvt1h4wGwTPRQZerSm4xaYegEFusyhbZrI0U9tJ
 B8WrhBLXDiYlyJT6zOV2yZFuW47VrLsjYnHwn27hmxTC/7tvG3euCklmkn9Sl9IAKFu29RSo
 d5bD8kMSCYsTqtTfT6W4A3qHGvIDta3ptLYpIAOD2sY3GYq2nf3Bbzx81wZK14JdDDHUX2Rs
 6+ahAA==
In-Reply-To: <c6926627-aeb6-40dd-a85a-1be0b324bf49@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 11/01/2024 7:35 am, Jan Beulich wrote:
> It's simply not needed anymore. Note how Linux made this change many
> years ago already, in 2.6.19 (late 2006, see [1]).
>
> Signed-off-by: Jan Beulich <jbeulich@suse.com>
>
> [1] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit?id=7d12e780e003f93433d49ce78cfedf4b4c52adc5

https://git.kernel.org/torvalds/c/7d12e780e003f93433d49ce78cfedf4b4c52adc5

See https://korg.docs.kernel.org/git-url-shorteners.html for full
details, but this is a guaranteed-stable URL.

It's worth saying that despite that patch in Linux, they've still not
yet managed to drop the regs parameter.

Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>


From xen-devel-bounces@lists.xenproject.org Thu Jan 11 18:14:18 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 11 Jan 2024 18:14:18 +0000
Received: from list by lists.xenproject.org with outflank-mailman.666478.1037143 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNzZF-0005cR-7K; Thu, 11 Jan 2024 18:14:13 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 666478.1037143; Thu, 11 Jan 2024 18:14:13 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNzZF-0005cK-3c; Thu, 11 Jan 2024 18:14:13 +0000
Received: by outflank-mailman (input) for mailman id 666478;
 Thu, 11 Jan 2024 18:14:11 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=YPRU=IV=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1rNzZD-0005cE-R0
 for xen-devel@lists.xenproject.org; Thu, 11 Jan 2024 18:14:11 +0000
Received: from mail-wr1-x42d.google.com (mail-wr1-x42d.google.com
 [2a00:1450:4864:20::42d])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 37de9d96-b0ad-11ee-98f0-6d05b1d4d9a1;
 Thu, 11 Jan 2024 19:14:11 +0100 (CET)
Received: by mail-wr1-x42d.google.com with SMTP id
 ffacd0b85a97d-3367a304091so4843453f8f.3
 for <xen-devel@lists.xenproject.org>; Thu, 11 Jan 2024 10:14:10 -0800 (PST)
Received: from [10.80.67.30] (default-46-102-197-194.interdsl.co.uk.
 [46.102.197.194]) by smtp.gmail.com with ESMTPSA id
 q5-20020adf9dc5000000b003376dbc75e9sm1773363wre.14.2024.01.11.10.14.10
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 11 Jan 2024 10:14:10 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 37de9d96-b0ad-11ee-98f0-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1704996850; x=1705601650; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=aPBAHuVD+D41eBNL4+vrA5FQG6lil0xOCzJbdFNUQE4=;
        b=j/BaoXLu/nwc4u/dDzpaXrYtt68nhFvqg9KgnhL5swBnEFNaHQdzPeOV1eIk9HHToV
         vALfg8gZ2WUgKVf2iVxuRUqe5++UKmUzNsmAgAs6H8MlLMPv0FMA4em19XbmnFlPJ3iE
         oSTDQhfuJhIzPKsN2BpM8Dvg+tPFvS9ddJLBs=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704996850; x=1705601650;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=aPBAHuVD+D41eBNL4+vrA5FQG6lil0xOCzJbdFNUQE4=;
        b=xDZ3kPrLLZQo1IOAaDaBTBrdVOhz9tPAFU2tX1lZebVm50wI2RUqEWyh6aNglhGjy6
         W+1Ix1FzLsta25NsS2HUawhcdqDb5COUJyywVAKazvVbwDodwZZyn3bGZj3UYUAb4Q2L
         ozVyP/lP0sXUElULNQqR41jnCyt6b6BzzTpjrG9xhNRaSIv+694srjYUTWcSshQdzO12
         ekUDJRXAbZHhdIxsl340X/1fXrIYdYUOf98sYnh2zQHJ16BfEVXIEoGF6zNZb4t9ifDS
         QCZtPjVo5Zg0vSI04pHNncEPq1pcdpE6suL1QUB9sd7kHqPAU7ZCe/oTyE4TKaKLwX5y
         nEbw==
X-Gm-Message-State: AOJu0Yww2svgEQRVHwOYiqyKkRWWVKmZL+hC6KUinWgrlR+MQmUoonoM
	YYjvfxPLCJSsZCDUUD6T+B9vw06oHwGMnA==
X-Google-Smtp-Source: AGHT+IG7rJO9WeH/dbbMglaKSyosEZlyIZA3oSNMKOQqFIMj9S7yBPin6VOQ/kXvGUOEAZDfFdsr6Q==
X-Received: by 2002:a5d:58cb:0:b0:337:6949:793a with SMTP id o11-20020a5d58cb000000b003376949793amr53688wrf.2.1704996850401;
        Thu, 11 Jan 2024 10:14:10 -0800 (PST)
Message-ID: <66593828-2924-4243-b604-01f8ff0da651@citrix.com>
Date: Thu, 11 Jan 2024 18:14:09 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 7/8] x86/vPMU: drop regs parameter from interrupt
 functions
Content-Language: en-GB
To: Jan Beulich <jbeulich@suse.com>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: George Dunlap <george.dunlap@citrix.com>, Wei Liu <wl@xen.org>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
References: <1ab231ec-5e3c-4662-8530-2213bc52bb7c@suse.com>
 <a0078508-a0bf-4885-afdd-0f86cea611a4@suse.com>
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 xsFNBFLhNn8BEADVhE+Hb8i0GV6mihnnr/uiQQdPF8kUoFzCOPXkf7jQ5sLYeJa0cQi6Penp
 VtiFYznTairnVsN5J+ujSTIb+OlMSJUWV4opS7WVNnxHbFTPYZVQ3erv7NKc2iVizCRZ2Kxn
 srM1oPXWRic8BIAdYOKOloF2300SL/bIpeD+x7h3w9B/qez7nOin5NzkxgFoaUeIal12pXSR
 Q354FKFoy6Vh96gc4VRqte3jw8mPuJQpfws+Pb+swvSf/i1q1+1I4jsRQQh2m6OTADHIqg2E
 ofTYAEh7R5HfPx0EXoEDMdRjOeKn8+vvkAwhviWXTHlG3R1QkbE5M/oywnZ83udJmi+lxjJ5
 YhQ5IzomvJ16H0Bq+TLyVLO/VRksp1VR9HxCzItLNCS8PdpYYz5TC204ViycobYU65WMpzWe
 LFAGn8jSS25XIpqv0Y9k87dLbctKKA14Ifw2kq5OIVu2FuX+3i446JOa2vpCI9GcjCzi3oHV
 e00bzYiHMIl0FICrNJU0Kjho8pdo0m2uxkn6SYEpogAy9pnatUlO+erL4LqFUO7GXSdBRbw5
 gNt25XTLdSFuZtMxkY3tq8MFss5QnjhehCVPEpE6y9ZjI4XB8ad1G4oBHVGK5LMsvg22PfMJ
 ISWFSHoF/B5+lHkCKWkFxZ0gZn33ju5n6/FOdEx4B8cMJt+cWwARAQABzSlBbmRyZXcgQ29v
 cGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPsLBegQTAQgAJAIbAwULCQgHAwUVCgkI
 CwUWAgMBAAIeAQIXgAUCWKD95wIZAQAKCRBlw/kGpdefoHbdD/9AIoR3k6fKl+RFiFpyAhvO
 59ttDFI7nIAnlYngev2XUR3acFElJATHSDO0ju+hqWqAb8kVijXLops0gOfqt3VPZq9cuHlh
 IMDquatGLzAadfFx2eQYIYT+FYuMoPZy/aTUazmJIDVxP7L383grjIkn+7tAv+qeDfE+txL4
 SAm1UHNvmdfgL2/lcmL3xRh7sub3nJilM93RWX1Pe5LBSDXO45uzCGEdst6uSlzYR/MEr+5Z
 JQQ32JV64zwvf/aKaagSQSQMYNX9JFgfZ3TKWC1KJQbX5ssoX/5hNLqxMcZV3TN7kU8I3kjK
 mPec9+1nECOjjJSO/h4P0sBZyIUGfguwzhEeGf4sMCuSEM4xjCnwiBwftR17sr0spYcOpqET
 ZGcAmyYcNjy6CYadNCnfR40vhhWuCfNCBzWnUW0lFoo12wb0YnzoOLjvfD6OL3JjIUJNOmJy
 RCsJ5IA/Iz33RhSVRmROu+TztwuThClw63g7+hoyewv7BemKyuU6FTVhjjW+XUWmS/FzknSi
 dAG+insr0746cTPpSkGl3KAXeWDGJzve7/SBBfyznWCMGaf8E2P1oOdIZRxHgWj0zNr1+ooF
 /PzgLPiCI4OMUttTlEKChgbUTQ+5o0P080JojqfXwbPAyumbaYcQNiH1/xYbJdOFSiBv9rpt
 TQTBLzDKXok86M7BTQRS4TZ/ARAAkgqudHsp+hd82UVkvgnlqZjzz2vyrYfz7bkPtXaGb9H4
 Rfo7mQsEQavEBdWWjbga6eMnDqtu+FC+qeTGYebToxEyp2lKDSoAsvt8w82tIlP/EbmRbDVn
 7bhjBlfRcFjVYw8uVDPptT0TV47vpoCVkTwcyb6OltJrvg/QzV9f07DJswuda1JH3/qvYu0p
 vjPnYvCq4NsqY2XSdAJ02HrdYPFtNyPEntu1n1KK+gJrstjtw7KsZ4ygXYrsm/oCBiVW/OgU
 g/XIlGErkrxe4vQvJyVwg6YH653YTX5hLLUEL1NS4TCo47RP+wi6y+TnuAL36UtK/uFyEuPy
 wwrDVcC4cIFhYSfsO0BumEI65yu7a8aHbGfq2lW251UcoU48Z27ZUUZd2Dr6O/n8poQHbaTd
 6bJJSjzGGHZVbRP9UQ3lkmkmc0+XCHmj5WhwNNYjgbbmML7y0fsJT5RgvefAIFfHBg7fTY/i
 kBEimoUsTEQz+N4hbKwo1hULfVxDJStE4sbPhjbsPCrlXf6W9CxSyQ0qmZ2bXsLQYRj2xqd1
 bpA+1o1j2N4/au1R/uSiUFjewJdT/LX1EklKDcQwpk06Af/N7VZtSfEJeRV04unbsKVXWZAk
 uAJyDDKN99ziC0Wz5kcPyVD1HNf8bgaqGDzrv3TfYjwqayRFcMf7xJaL9xXedMcAEQEAAcLB
 XwQYAQgACQUCUuE2fwIbDAAKCRBlw/kGpdefoG4XEACD1Qf/er8EA7g23HMxYWd3FXHThrVQ
 HgiGdk5Yh632vjOm9L4sd/GCEACVQKjsu98e8o3ysitFlznEns5EAAXEbITrgKWXDDUWGYxd
 pnjj2u+GkVdsOAGk0kxczX6s+VRBhpbBI2PWnOsRJgU2n10PZ3mZD4Xu9kU2IXYmuW+e5KCA
 vTArRUdCrAtIa1k01sPipPPw6dfxx2e5asy21YOytzxuWFfJTGnVxZZSCyLUO83sh6OZhJkk
 b9rxL9wPmpN/t2IPaEKoAc0FTQZS36wAMOXkBh24PQ9gaLJvfPKpNzGD8XWR5HHF0NLIJhgg
 4ZlEXQ2fVp3XrtocHqhu4UZR4koCijgB8sB7Tb0GCpwK+C4UePdFLfhKyRdSXuvY3AHJd4CP
 4JzW0Bzq/WXY3XMOzUTYApGQpnUpdOmuQSfpV9MQO+/jo7r6yPbxT7CwRS5dcQPzUiuHLK9i
 nvjREdh84qycnx0/6dDroYhp0DFv4udxuAvt1h4wGwTPRQZerSm4xaYegEFusyhbZrI0U9tJ
 B8WrhBLXDiYlyJT6zOV2yZFuW47VrLsjYnHwn27hmxTC/7tvG3euCklmkn9Sl9IAKFu29RSo
 d5bD8kMSCYsTqtTfT6W4A3qHGvIDta3ptLYpIAOD2sY3GYq2nf3Bbzx81wZK14JdDDHUX2Rs
 6+ahAA==
In-Reply-To: <a0078508-a0bf-4885-afdd-0f86cea611a4@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 11/01/2024 7:36 am, Jan Beulich wrote:
> The vendor functions don't use the respective parameters at all. In
> vpmu_do_interrupt() there's only a very limited area where the
> outer context's state would be needed, retrievable by get_irq_regs().
>
> This is in preparation of dropping the register parameters from direct
> APIC vector handler functions.
>
> Signed-off-by: Jan Beulich <jbeulich@suse.com>

Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>


From xen-devel-bounces@lists.xenproject.org Thu Jan 11 18:16:47 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 11 Jan 2024 18:16:47 +0000
Received: from list by lists.xenproject.org with outflank-mailman.666483.1037152 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNzbh-00069n-IZ; Thu, 11 Jan 2024 18:16:45 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 666483.1037152; Thu, 11 Jan 2024 18:16:45 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNzbh-00069g-FT; Thu, 11 Jan 2024 18:16:45 +0000
Received: by outflank-mailman (input) for mailman id 666483;
 Thu, 11 Jan 2024 18:16:44 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=YPRU=IV=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1rNzbg-00069a-58
 for xen-devel@lists.xenproject.org; Thu, 11 Jan 2024 18:16:44 +0000
Received: from mail-wm1-x329.google.com (mail-wm1-x329.google.com
 [2a00:1450:4864:20::329])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 92992fae-b0ad-11ee-98f0-6d05b1d4d9a1;
 Thu, 11 Jan 2024 19:16:43 +0100 (CET)
Received: by mail-wm1-x329.google.com with SMTP id
 5b1f17b1804b1-40e62979feeso5469515e9.0
 for <xen-devel@lists.xenproject.org>; Thu, 11 Jan 2024 10:16:43 -0800 (PST)
Received: from [10.80.67.30] (default-46-102-197-194.interdsl.co.uk.
 [46.102.197.194]) by smtp.gmail.com with ESMTPSA id
 o8-20020a05600c4fc800b0040e549c77a1sm6769535wmq.32.2024.01.11.10.16.42
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 11 Jan 2024 10:16:42 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 92992fae-b0ad-11ee-98f0-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1704997002; x=1705601802; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=H4pjZ8AlbWXrM0IUsz+htvYCrTu3NHPUTNMuXk6Xqyo=;
        b=vFLo0CyLtSb8ublwxAfWVUwe0lgM9MUx/DGRL12ACZKX7/nho1tNaG16SVaqMatdUh
         s0CoFNzk2AiyBPyyT5uekrQziivdqQw/lJYq1OU2EgmbQ9tTGG2kxkNP/PfteVj/IrW6
         g4C2rff/l9kSt7OfWmRyg4tHu5aoPsKa+NZEM=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1704997002; x=1705601802;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=H4pjZ8AlbWXrM0IUsz+htvYCrTu3NHPUTNMuXk6Xqyo=;
        b=AuqkLZb6yTuOruLDiRVRXcqviPV3owtFf9zXRes4qCAHhhIeQqNk7PEjxqBxOjnoKr
         Vu+EcqdrDwpCmEVlei1EtE6PXX820GIJZCyu2tMUu0kEm/9IpZrL5U/CRUx/BfwqsvDm
         HrK04vgOdqyQO9kwUEzGU23DHvo5lFm1jVXC6j9p5yeAS2cU0Ffgzc688wGI5tUxJLVs
         hgcfCxH7+I99kFhd8X/8ctlqpA4lY6RgyFgTqzkUAaz1bl6LkPnAMFKT+t5sLgMMgfGs
         HypuYd9IY/sMhK9wr+Rmo5b31hDD1yDQPbCua//s2y3QEQ/FdXdvMmj2lhVW6irPBFR8
         S7tA==
X-Gm-Message-State: AOJu0Yy0sIEVZkmLJtJB1Ucl6/yp6bFTG++JK0heXYeF97sBCTAvT5/9
	FVVPkv5g+fofqH4wbcQ/T2tMwClwjs5WmQ==
X-Google-Smtp-Source: AGHT+IFPdlGF644JCUqNmyR/azzZb6GHyJrlyBC5SjauHAB9/5b6gv3VyYXlxinIwDr8ZKpWve66rQ==
X-Received: by 2002:a1c:7415:0:b0:40e:4576:53f7 with SMTP id p21-20020a1c7415000000b0040e457653f7mr142051wmc.49.1704997002680;
        Thu, 11 Jan 2024 10:16:42 -0800 (PST)
Message-ID: <56e43caa-1a11-4d69-a98e-44ac7e810a29@citrix.com>
Date: Thu, 11 Jan 2024 18:16:42 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 8/8] x86/APIC: drop regs parameter from direct vector
 handler functions
Content-Language: en-GB
To: Jan Beulich <jbeulich@suse.com>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: George Dunlap <george.dunlap@citrix.com>, Wei Liu <wl@xen.org>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Kevin Tian <kevin.tian@intel.com>, Jun Nakajima <jun.nakajima@intel.com>
References: <1ab231ec-5e3c-4662-8530-2213bc52bb7c@suse.com>
 <0afca177-4dce-4d73-8790-82256a620ec3@suse.com>
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 xsFNBFLhNn8BEADVhE+Hb8i0GV6mihnnr/uiQQdPF8kUoFzCOPXkf7jQ5sLYeJa0cQi6Penp
 VtiFYznTairnVsN5J+ujSTIb+OlMSJUWV4opS7WVNnxHbFTPYZVQ3erv7NKc2iVizCRZ2Kxn
 srM1oPXWRic8BIAdYOKOloF2300SL/bIpeD+x7h3w9B/qez7nOin5NzkxgFoaUeIal12pXSR
 Q354FKFoy6Vh96gc4VRqte3jw8mPuJQpfws+Pb+swvSf/i1q1+1I4jsRQQh2m6OTADHIqg2E
 ofTYAEh7R5HfPx0EXoEDMdRjOeKn8+vvkAwhviWXTHlG3R1QkbE5M/oywnZ83udJmi+lxjJ5
 YhQ5IzomvJ16H0Bq+TLyVLO/VRksp1VR9HxCzItLNCS8PdpYYz5TC204ViycobYU65WMpzWe
 LFAGn8jSS25XIpqv0Y9k87dLbctKKA14Ifw2kq5OIVu2FuX+3i446JOa2vpCI9GcjCzi3oHV
 e00bzYiHMIl0FICrNJU0Kjho8pdo0m2uxkn6SYEpogAy9pnatUlO+erL4LqFUO7GXSdBRbw5
 gNt25XTLdSFuZtMxkY3tq8MFss5QnjhehCVPEpE6y9ZjI4XB8ad1G4oBHVGK5LMsvg22PfMJ
 ISWFSHoF/B5+lHkCKWkFxZ0gZn33ju5n6/FOdEx4B8cMJt+cWwARAQABzSlBbmRyZXcgQ29v
 cGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPsLBegQTAQgAJAIbAwULCQgHAwUVCgkI
 CwUWAgMBAAIeAQIXgAUCWKD95wIZAQAKCRBlw/kGpdefoHbdD/9AIoR3k6fKl+RFiFpyAhvO
 59ttDFI7nIAnlYngev2XUR3acFElJATHSDO0ju+hqWqAb8kVijXLops0gOfqt3VPZq9cuHlh
 IMDquatGLzAadfFx2eQYIYT+FYuMoPZy/aTUazmJIDVxP7L383grjIkn+7tAv+qeDfE+txL4
 SAm1UHNvmdfgL2/lcmL3xRh7sub3nJilM93RWX1Pe5LBSDXO45uzCGEdst6uSlzYR/MEr+5Z
 JQQ32JV64zwvf/aKaagSQSQMYNX9JFgfZ3TKWC1KJQbX5ssoX/5hNLqxMcZV3TN7kU8I3kjK
 mPec9+1nECOjjJSO/h4P0sBZyIUGfguwzhEeGf4sMCuSEM4xjCnwiBwftR17sr0spYcOpqET
 ZGcAmyYcNjy6CYadNCnfR40vhhWuCfNCBzWnUW0lFoo12wb0YnzoOLjvfD6OL3JjIUJNOmJy
 RCsJ5IA/Iz33RhSVRmROu+TztwuThClw63g7+hoyewv7BemKyuU6FTVhjjW+XUWmS/FzknSi
 dAG+insr0746cTPpSkGl3KAXeWDGJzve7/SBBfyznWCMGaf8E2P1oOdIZRxHgWj0zNr1+ooF
 /PzgLPiCI4OMUttTlEKChgbUTQ+5o0P080JojqfXwbPAyumbaYcQNiH1/xYbJdOFSiBv9rpt
 TQTBLzDKXok86M7BTQRS4TZ/ARAAkgqudHsp+hd82UVkvgnlqZjzz2vyrYfz7bkPtXaGb9H4
 Rfo7mQsEQavEBdWWjbga6eMnDqtu+FC+qeTGYebToxEyp2lKDSoAsvt8w82tIlP/EbmRbDVn
 7bhjBlfRcFjVYw8uVDPptT0TV47vpoCVkTwcyb6OltJrvg/QzV9f07DJswuda1JH3/qvYu0p
 vjPnYvCq4NsqY2XSdAJ02HrdYPFtNyPEntu1n1KK+gJrstjtw7KsZ4ygXYrsm/oCBiVW/OgU
 g/XIlGErkrxe4vQvJyVwg6YH653YTX5hLLUEL1NS4TCo47RP+wi6y+TnuAL36UtK/uFyEuPy
 wwrDVcC4cIFhYSfsO0BumEI65yu7a8aHbGfq2lW251UcoU48Z27ZUUZd2Dr6O/n8poQHbaTd
 6bJJSjzGGHZVbRP9UQ3lkmkmc0+XCHmj5WhwNNYjgbbmML7y0fsJT5RgvefAIFfHBg7fTY/i
 kBEimoUsTEQz+N4hbKwo1hULfVxDJStE4sbPhjbsPCrlXf6W9CxSyQ0qmZ2bXsLQYRj2xqd1
 bpA+1o1j2N4/au1R/uSiUFjewJdT/LX1EklKDcQwpk06Af/N7VZtSfEJeRV04unbsKVXWZAk
 uAJyDDKN99ziC0Wz5kcPyVD1HNf8bgaqGDzrv3TfYjwqayRFcMf7xJaL9xXedMcAEQEAAcLB
 XwQYAQgACQUCUuE2fwIbDAAKCRBlw/kGpdefoG4XEACD1Qf/er8EA7g23HMxYWd3FXHThrVQ
 HgiGdk5Yh632vjOm9L4sd/GCEACVQKjsu98e8o3ysitFlznEns5EAAXEbITrgKWXDDUWGYxd
 pnjj2u+GkVdsOAGk0kxczX6s+VRBhpbBI2PWnOsRJgU2n10PZ3mZD4Xu9kU2IXYmuW+e5KCA
 vTArRUdCrAtIa1k01sPipPPw6dfxx2e5asy21YOytzxuWFfJTGnVxZZSCyLUO83sh6OZhJkk
 b9rxL9wPmpN/t2IPaEKoAc0FTQZS36wAMOXkBh24PQ9gaLJvfPKpNzGD8XWR5HHF0NLIJhgg
 4ZlEXQ2fVp3XrtocHqhu4UZR4koCijgB8sB7Tb0GCpwK+C4UePdFLfhKyRdSXuvY3AHJd4CP
 4JzW0Bzq/WXY3XMOzUTYApGQpnUpdOmuQSfpV9MQO+/jo7r6yPbxT7CwRS5dcQPzUiuHLK9i
 nvjREdh84qycnx0/6dDroYhp0DFv4udxuAvt1h4wGwTPRQZerSm4xaYegEFusyhbZrI0U9tJ
 B8WrhBLXDiYlyJT6zOV2yZFuW47VrLsjYnHwn27hmxTC/7tvG3euCklmkn9Sl9IAKFu29RSo
 d5bD8kMSCYsTqtTfT6W4A3qHGvIDta3ptLYpIAOD2sY3GYq2nf3Bbzx81wZK14JdDDHUX2Rs
 6+ahAA==
In-Reply-To: <0afca177-4dce-4d73-8790-82256a620ec3@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 11/01/2024 7:36 am, Jan Beulich wrote:
> The only place it was needed is in the spurious handler, and there we
> can use get_irq_regs() instead.
>
> Signed-off-by: Jan Beulich <jbeulich@suse.com>

Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>

I'd forgotten that we'd abused SPIV like that, but oh well.


From xen-devel-bounces@lists.xenproject.org Thu Jan 11 18:26:00 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 11 Jan 2024 18:26:00 +0000
Received: from list by lists.xenproject.org with outflank-mailman.666490.1037163 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNzkX-0000Ef-DZ; Thu, 11 Jan 2024 18:25:53 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 666490.1037163; Thu, 11 Jan 2024 18:25:53 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNzkX-0000EY-Ai; Thu, 11 Jan 2024 18:25:53 +0000
Received: by outflank-mailman (input) for mailman id 666490;
 Thu, 11 Jan 2024 18:25:52 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=c5Cn=IV=amazon.co.uk=prvs=73372ff43=eliasely@srs-se1.protection.inumbo.net>)
 id 1rNzkW-0000ES-5a
 for xen-devel@lists.xenproject.org; Thu, 11 Jan 2024 18:25:52 +0000
Received: from smtp-fw-80009.amazon.com (smtp-fw-80009.amazon.com
 [99.78.197.220]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id d7e3ea18-b0ae-11ee-98f0-6d05b1d4d9a1;
 Thu, 11 Jan 2024 19:25:50 +0100 (CET)
Received: from pdx4-co-svc-p1-lb2-vlan2.amazon.com (HELO
 email-inbound-relay-pdx-2a-m6i4x-af372327.us-west-2.amazon.com)
 ([10.25.36.210]) by smtp-border-fw-80009.pdx80.corp.amazon.com with
 ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 11 Jan 2024 18:25:46 +0000
Received: from smtpout.prod.us-east-1.prod.farcaster.email.amazon.dev
 (pdx2-ws-svc-p26-lb5-vlan2.pdx.amazon.com [10.39.38.66])
 by email-inbound-relay-pdx-2a-m6i4x-af372327.us-west-2.amazon.com (Postfix)
 with ESMTPS id AA94060BC8; Thu, 11 Jan 2024 18:25:45 +0000 (UTC)
Received: from EX19MTAEUA001.ant.amazon.com [10.0.43.254:36151]
 by smtpin.naws.eu-west-1.prod.farcaster.email.amazon.dev [10.0.1.249:2525]
 with esmtp (Farcaster)
 id 6c268b41-c38a-4f00-846a-4f2358d60a99; Thu, 11 Jan 2024 18:25:44 +0000 (UTC)
Received: from EX19D018EUA002.ant.amazon.com (10.252.50.146) by
 EX19MTAEUA001.ant.amazon.com (10.252.50.50) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1118.40; Thu, 11 Jan 2024 18:25:40 +0000
Received: from [10.95.99.82] (10.95.99.82) by EX19D018EUA002.ant.amazon.com
 (10.252.50.146) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1118.40; Thu, 11 Jan
 2024 18:25:36 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: d7e3ea18-b0ae-11ee-98f0-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
  d=amazon.com; i=@amazon.com; q=dns/txt; s=amazon201209;
  t=1704997550; x=1736533550;
  h=message-id:date:mime-version:subject:to:cc:references:
   from:in-reply-to:content-transfer-encoding;
  bh=vQmltPkN+rNAF/jizHqb0pq7BqTmbgPAPV2pSO6QOJ4=;
  b=a09USRODQ6PrdPinjEM9GlCxOP+XRdEitBwziB1Ht4SicKhZWuOwQ4g/
   tpuKbxKv1zxaRGS9XJ9Q0ePWoauyTs7zwfiqZ6egB1w5rD6/bHWLnOs1d
   Sd2+YMsiR8jvoVlXF+ixmzEszaLO13pK23TJ8PxwGa2jXHKrOH498BNzZ
   k=;
X-IronPort-AV: E=Sophos;i="6.04,187,1695686400"; 
   d="scan'208";a="57621535"
X-Farcaster-Flow-ID: 6c268b41-c38a-4f00-846a-4f2358d60a99
Message-ID: <0dcc54dd-b729-4e20-95af-fa4907a550c6@amazon.com>
Date: Thu, 11 Jan 2024 18:25:31 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 11/22] x86: add a boot option to enable and disable the
 direct map
Content-Language: en-US
To: Jan Beulich <jbeulich@suse.com>, Julien Grall <julien@xen.org>
CC: Hongyan Xia <hongyxia@amazon.com>, Andrew Cooper
	<andrew.cooper3@citrix.com>, George Dunlap <george.dunlap@citrix.com>,
	Stefano Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>, "Bertrand
 Marquis" <bertrand.marquis@arm.com>, Volodymyr Babchuk
	<Volodymyr_Babchuk@epam.com>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
	<roger.pau@citrix.com>, Julien Grall <jgrall@amazon.com>,
	<xen-devel@lists.xenproject.org>
References: <20221216114853.8227-1-julien@xen.org>
 <20221216114853.8227-12-julien@xen.org>
 <fc70f967-34bb-9569-f514-7a3208e746c6@suse.com>
 <bc989828-69b9-4919-9ff3-fdd53fb2def1@amazon.com>
 <c736e4d9-5262-4adf-9e74-9b1be5ab13db@suse.com>
 <4ab710c3-c628-4bbe-9533-88af75a9b9ec@xen.org>
 <ba63d435-e26f-4c76-aedc-c027e8b03a6d@suse.com>
From: Elias El Yandouzi <eliasely@amazon.com>
In-Reply-To: <ba63d435-e26f-4c76-aedc-c027e8b03a6d@suse.com>
Content-Type: text/plain; charset="UTF-8"; format=flowed
Content-Transfer-Encoding: 7bit
X-Originating-IP: [10.95.99.82]
X-ClientProxiedBy: EX19D035UWB002.ant.amazon.com (10.13.138.97) To
 EX19D018EUA002.ant.amazon.com (10.252.50.146)
Precedence: Bulk



On 11/01/2024 14:09, Jan Beulich wrote:
> On 11.01.2024 13:25, Julien Grall wrote:
>> Hi Jan,
>>
>> On 11/01/2024 11:53, Jan Beulich wrote:
>>> On 11.01.2024 11:47, Elias El Yandouzi wrote:
>>>> On 22/12/2022 13:24, Jan Beulich wrote:
>>>>> That said, I think this change comes too early in the series, or there is
>>>>> something missing.
>>>>
>>>> At first, I had the same feeling but looking at the rest of the series,
>>>> I can see that the option is needed in follow-up patches.
>>>>
>>>>> As said in reply to patch 10, while there the mapcache
>>>>> is being initialized for the idle domain, I don't think it can be used
>>>>> just yet. Read through mapcache_current_vcpu() to understand why I think
>>>>> that way, paying particular attention to the ASSERT() near the end.
>>>>
>>>> Would be able to elaborate a bit more why you think that? I haven't been
>>>> able to get your point.
>>>
>>> Why exactly I referred to the ASSERT() there I can't reconstruct. The
>>> function as a whole looks problematic though when suddenly the idle
>>> domain also gains a mapcache. I'm sorry, too much context was lost
>>> from over a year ago; all of this will need looking at from scratch
>>> again whenever a new version was posted.
>>>
>>>>> In preparation of this patch here I think the mfn_to_virt() uses have to all
>>>>> disappear from map_domain_page(). Perhaps yet more strongly all
>>>>> ..._to_virt() (except fix_to_virt() and friends) and __va() have to
>>>>> disappear up front from x86 and any code path which can be taken on x86
>>>>> (which may simply mean purging all respective x86 #define-s, without
>>>>> breaking the build in any way).
>>>>
>>>> I agree with you on that one. I think it is what we're aiming for in the
>>>> long term. However, as mentioned by Julien in the cover letter, the
>>>> series's name is a misnomer and I am afraid we won't be able to remove
>>>> all of them with this series. These helpers would still be used for
>>>> xenheap pages or when the direct map is enabled.
>>>
>>> Leaving a hazard of certain uses not having been converted, or even
>>> overlooked in patches going in at around the same time as this series?
>>> I view this as pretty "adventurous".
>>
>> Until we get rid of the directmap completely (which is not the goal of
>> this series), we will need to keep mfn_to_virt().
>>
>> In fact the one you ask to remove in map_domain_page() will need to be
>> replaced with function doing the same thing. The same for the code that
>> will initially prepare the directmap. This to avoid impacting
>> performance when the user still wants to use the directmap.
>>
>> So are you just asking to remove most of the use and rename *_to_virt()
>> to something that is more directmap specific (e.g. mfn_to_directmap_virt())?
> 
> Well, in a way. If done this way, mfn_to_virt() (and __va()) should have no
> users by the end of the series, and it would be obvious that nothing was
> missed (and by then purging the old ones we could also ensure no new uses
> would appear).

What about maddr_to_virt()? For instance, in the function 
xen/arch/x86/dmi_scan.c:dmi_iterate(), we need to access a very low 
machine address which isn't in the directmap range.

How would you proceed? Calling vmap() seems to be a bit overkill for 
just a temporary mapping and I don't really want to rework this function 
to use map_domain_page().

In such case, how would you proceed? What do you suggest?

Cheers,

-- 
Elias


From xen-devel-bounces@lists.xenproject.org Thu Jan 11 18:34:24 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 11 Jan 2024 18:34:24 +0000
Received: from list by lists.xenproject.org with outflank-mailman.666498.1037186 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNzsj-0002zv-T4; Thu, 11 Jan 2024 18:34:21 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 666498.1037186; Thu, 11 Jan 2024 18:34:21 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNzsj-0002xk-PT; Thu, 11 Jan 2024 18:34:21 +0000
Received: by outflank-mailman (input) for mailman id 666498;
 Thu, 11 Jan 2024 18:34:21 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>) id 1rNzsj-0002kT-5y
 for xen-devel@lists.xenproject.org; Thu, 11 Jan 2024 18:34:21 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rNzsi-000483-RD; Thu, 11 Jan 2024 18:34:20 +0000
Received: from 54-240-197-232.amazon.com ([54.240.197.232]
 helo=dev-dsk-jgrall-1b-035652ec.eu-west-1.amazon.com)
 by xenbits.xenproject.org with esmtpsa
 (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rNzsi-0000gW-GO; Thu, 11 Jan 2024 18:34:20 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
	s=20200302mail; h=Content-Transfer-Encoding:MIME-Version:References:
	In-Reply-To:Message-Id:Date:Subject:Cc:To:From;
	bh=qJJI5QEt+6FADEEnoFWOXuZuH35ZFWnjWnhkkG3wgoM=; b=J7WdqMUO2b954/IcmcRKZ5CtdS
	+494fEPMyjbv+hqOQyA9lU8mcaPC2Wi6KkcgyaPpbSnw2m31SweWjyXA3qqTUpHqMeSfAN47TmwLi
	wbubPtr3ZWSQQ04qR8hCN/04P7+Bqw+vMGkOZQXtmipWQQYAPP7kQdjt4LIOlir4dTWg=;
From: Julien Grall <julien@xen.org>
To: xen-devel@lists.xenproject.org
Cc: julien@xen.org,
	Julien Grall <jgrall@amazon.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Bertrand Marquis <bertrand.marquis@arm.com>,
	Michal Orzel <michal.orzel@amd.com>,
	Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>
Subject: [PATCH v2 2/2] xen/arm32: head: Improve logging in head.S
Date: Thu, 11 Jan 2024 18:34:10 +0000
Message-Id: <20240111183410.45566-3-julien@xen.org>
X-Mailer: git-send-email 2.40.1
In-Reply-To: <20240111183410.45566-1-julien@xen.org>
References: <20240111183410.45566-1-julien@xen.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

From: Julien Grall <jgrall@amazon.com>

The sequence to enable the MMU on arm32 is quite complex as we may need
to jump to a temporary mapping to map Xen.

Recently, we had one bug in the logic (see f5a49eb7f8b3 ("xen/arm32:
head: Add mising isb in switch_to_runtime_mapping()") and it was
a pain to debug because there are no logging.

In order to improve the logging in the MMU switch we need to add
support for early printk while running on the identity mapping
and also on the temporary mapping.

For the identity mapping, we have only the first page of Xen mapped.
So all the strings should reside in the first page. For that purpose
a new macro PRINT_ID is introduced.

For the temporary mapping, the fixmap is already linked in the temporary
area (and so does the UART). So we just need to update the register
storing the UART address (i.e. r11) to point to the UART temporary
mapping.

Take the opportunity to introduce mov_w_on_cond in order to
conditionally execute mov_w and avoid branches.

Signed-off-by: Julien Grall <jgrall@amazon.com>

----
    Changelog since v1:
        - Rebase
        - Move one hunk to the first patch to unbreak compilation
        - Add more logging
        - Remove duplicated entry
---
 xen/arch/arm/arm32/head.S               |  9 ------
 xen/arch/arm/arm32/mmu/head.S           | 39 +++++++++++++++++++++++++
 xen/arch/arm/include/asm/arm32/macros.h | 33 +++++++++++++++------
 xen/arch/arm/include/asm/asm_defns.h    |  6 ++--
 xen/arch/arm/include/asm/early_printk.h |  3 ++
 xen/arch/arm/include/asm/mmu/layout.h   |  4 +++
 xen/arch/arm/mmu/setup.c                |  3 ++
 xen/arch/arm/xen.lds.S                  |  1 +
 8 files changed, 78 insertions(+), 20 deletions(-)

diff --git a/xen/arch/arm/arm32/head.S b/xen/arch/arm/arm32/head.S
index 34ab14a9e228..99d7d4aa63d1 100644
--- a/xen/arch/arm/arm32/head.S
+++ b/xen/arch/arm/arm32/head.S
@@ -98,10 +98,6 @@ past_zImage:
         b     enable_boot_cpu_mm
 
 primary_switched:
-#ifdef CONFIG_EARLY_PRINTK
-        /* Use a virtual address to access the UART. */
-        mov_w r11, EARLY_UART_VIRTUAL_ADDRESS
-#endif
         bl    zero_bss
         PRINT("- Ready -\r\n")
         /* Setup the arguments for start_xen and jump to C world */
@@ -142,12 +138,7 @@ GLOBAL(init_secondary)
 
         mov_w lr, secondary_switched
         b     enable_secondary_cpu_mm
-
 secondary_switched:
-#ifdef CONFIG_EARLY_PRINTK
-        /* Use a virtual address to access the UART. */
-        mov_w r11, EARLY_UART_VIRTUAL_ADDRESS
-#endif
         PRINT("- Ready -\r\n")
         /* Jump to C world */
         mov_w r2, start_secondary
diff --git a/xen/arch/arm/arm32/mmu/head.S b/xen/arch/arm/arm32/mmu/head.S
index a90799ad5451..f4abd690b612 100644
--- a/xen/arch/arm/arm32/mmu/head.S
+++ b/xen/arch/arm/arm32/mmu/head.S
@@ -298,6 +298,21 @@ enable_mmu:
         mcr   CP32(r0, HSCTLR)       /* now paging is enabled */
         isb                          /* Now, flush the icache */
 
+        /*
+         * At this stage, the UART address will depend on whether the
+         * temporary mapping was created or not.
+         *
+         * If it was, then the UART will be mapped in the temporary
+         * area. Otherwise, it will be mapped at runtime virtual
+         * mapping.
+         */
+#ifdef CONFIG_EARLY_PRINTK
+        teq   r12, #1               /* Was the temporary mapping created? */
+        mov_w_on_cond eq, r11, TEMPORARY_EARLY_UART_VIRTUAL_ADDRESS
+        mov_w_on_cond ne, r11, EARLY_UART_VIRTUAL_ADDRESS
+#endif
+        PRINT_ID("- Paging turned on -\r\n")
+
         /*
          * The MMU is turned on and we are in the 1:1 mapping. Switch
          * to the runtime mapping.
@@ -307,6 +322,17 @@ enable_mmu:
         b     switch_to_runtime_mapping
 1:
         mov   lr, r5                /* Restore LR */
+
+        /*
+         * Now we are running at the runtime address. The UART can
+         * be accessed using its runtime virtual address.
+         */
+#ifdef CONFIG_EARLY_PRINTK
+        mov_w r11, EARLY_UART_VIRTUAL_ADDRESS
+#endif
+
+        PRINT("- Switched to the runtime mapping -\r\n")
+
         /*
          * At this point, either the 1:1 map or the temporary mapping
          * will be present. The former may clash with other parts of the
@@ -348,12 +374,14 @@ switch_to_runtime_mapping:
         teq   r12, #0
         beq   ready_to_switch
 
+        PRINT_ID("- Switching to the temporary mapping -\r\n")
         /* We are still in the 1:1 mapping. Jump to the temporary Virtual address. */
         mov_w r0, 1f
         add   r0, r0, #XEN_TEMPORARY_OFFSET /* r0 := address in temporary mapping */
         mov   pc, r0
 
 1:
+        PRINT("- Running on the temporary mapping  -\r\n")
         /* Remove boot_second_id */
         mov   r2, #0
         mov   r3, #0
@@ -364,6 +392,8 @@ switch_to_runtime_mapping:
 
         flush_xen_tlb_local r0
 
+        PRINT("- 1:1 mapping removed -\r\n")
+
         /* Map boot_second into boot_pgtable */
         mov_w r0, XEN_VIRT_START
         create_table_entry boot_pgtable, boot_second, r0, 1
@@ -376,7 +406,10 @@ switch_to_runtime_mapping:
          */
         isb
 
+        PRINT("- Runtime mapping mapped -\r\n")
 ready_to_switch:
+        PRINT_ID("- Jumping to runtime address -\r\n")
+
         mov   pc, lr
 ENDPROC(switch_to_runtime_mapping)
 
@@ -404,6 +437,8 @@ ENTRY(enable_secondary_cpu_mm)
         mov_w lr, 1f
         b     enable_mmu
 1:
+        PRINT("- Switching to the runtime page-tables -\r\n")
+
         /*
          * Non-boot CPUs need to move on to the proper pagetables, which were
          * setup in prepare_secondary_mm.
@@ -468,6 +503,8 @@ ENDPROC(enable_boot_cpu_mm)
  * Clobbers r0 - r3
  */
 remove_identity_mapping:
+        PRINT("- Removing the identity mapping -\r\n")
+
         /* r2:r3 := invalid page-table entry */
         mov   r2, #0x0
         mov   r3, #0x0
@@ -488,6 +525,8 @@ ENDPROC(remove_identity_mapping)
  * Clobbers r0 - r3
  */
 remove_temporary_mapping:
+        PRINT("- Removing the temporary mapping -\r\n")
+
         /* r2:r3 := invalid page-table entry */
         mov   r2, #0
         mov   r3, #0
diff --git a/xen/arch/arm/include/asm/arm32/macros.h b/xen/arch/arm/include/asm/arm32/macros.h
index b84666c764d4..db681a7c7eaa 100644
--- a/xen/arch/arm/include/asm/arm32/macros.h
+++ b/xen/arch/arm/include/asm/arm32/macros.h
@@ -9,9 +9,13 @@
  * Move an immediate constant into a 32-bit register using movw/movt
  * instructions.
  */
+.macro mov_w_on_cond cond, reg, word
+        movw\cond  \reg, #:lower16:\word
+        movt\cond  \reg, #:upper16:\word
+.endm
+
 .macro mov_w reg, word
-        movw  \reg, #:lower16:\word
-        movt  \reg, #:upper16:\word
+        mov_w_on_cond al, \reg, \word
 .endm
 
 /*
@@ -29,16 +33,26 @@
 
 #ifdef CONFIG_EARLY_PRINTK
 /*
- * Macro to print a string to the UART, if there is one.
+ * Macros to print a string to the UART, if there is one.
+ *
+ * There are multiple flavors:
+ *  - PRINT_SECT(section, string): The @string will be located in @section
+ *  - PRINT(): The string will be located in .rodata.str.
+ *  - PRINT_ID(): When Xen is running on the Identity Mapping, it is
+ *    only possible to have a limited amount of Xen. This will create
+ *    the string in .rodata.idmap which will always be mapped.
  *
  * Clobbers r0 - r3
  */
-#define PRINT(_s)           \
-        mov   r3, lr       ;\
-        adr_l r0, 98f      ;\
-        bl    asm_puts     ;\
-        mov   lr, r3       ;\
-        RODATA_STR(98, _s)
+#define PRINT_SECT(section, string)         \
+        mov   r3, lr                       ;\
+        adr_l r0, 98f                      ;\
+        bl    asm_puts                     ;\
+        mov   lr, r3                       ;\
+        RODATA_SECT(section, 98, string)
+
+#define PRINT(string) PRINT_SECT(.rodata.str, string)
+#define PRINT_ID(string) PRINT_SECT(.rodata.idmap, string)
 
 /*
  * Macro to print the value of register \rb
@@ -54,6 +68,7 @@
 
 #else /* CONFIG_EARLY_PRINTK */
 #define PRINT(s)
+#define PRINT_ID(s)
 
 .macro print_reg rb
 .endm
diff --git a/xen/arch/arm/include/asm/asm_defns.h b/xen/arch/arm/include/asm/asm_defns.h
index 29a9dbb002fa..ec803c0a370c 100644
--- a/xen/arch/arm/include/asm/asm_defns.h
+++ b/xen/arch/arm/include/asm/asm_defns.h
@@ -22,11 +22,13 @@
 # error "unknown ARM variant"
 #endif
 
-#define RODATA_STR(label, msg)                  \
-.pushsection .rodata.str, "aMS", %progbits, 1 ; \
+#define RODATA_SECT(section, label, msg)         \
+.pushsection section, "aMS", %progbits, 1 ;     \
 label:  .asciz msg;                             \
 .popsection
 
+#define RODATA_STR(label, msg) RODATA_SECT(.rodata.str, label, msg)
+
 #define ASM_INT(label, val)                 \
     .p2align 2;                             \
 label: .long (val);                         \
diff --git a/xen/arch/arm/include/asm/early_printk.h b/xen/arch/arm/include/asm/early_printk.h
index c5149b2976da..c1e84f8b0009 100644
--- a/xen/arch/arm/include/asm/early_printk.h
+++ b/xen/arch/arm/include/asm/early_printk.h
@@ -19,6 +19,9 @@
 #define EARLY_UART_VIRTUAL_ADDRESS \
     (FIXMAP_ADDR(FIXMAP_CONSOLE) + (CONFIG_EARLY_UART_BASE_ADDRESS & ~PAGE_MASK))
 
+#define TEMPORARY_EARLY_UART_VIRTUAL_ADDRESS \
+    (TEMPORARY_FIXMAP_ADDR(FIXMAP_CONSOLE) + (CONFIG_EARLY_UART_BASE_ADDRESS & ~PAGE_MASK))
+
 #endif /* !CONFIG_EARLY_PRINTK */
 
 #endif
diff --git a/xen/arch/arm/include/asm/mmu/layout.h b/xen/arch/arm/include/asm/mmu/layout.h
index eac7eef885d6..a3b546465b5a 100644
--- a/xen/arch/arm/include/asm/mmu/layout.h
+++ b/xen/arch/arm/include/asm/mmu/layout.h
@@ -116,6 +116,10 @@
       (TEMPORARY_AREA_FIRST_SLOT << XEN_PT_LEVEL_SHIFT(1)))
 
 #define TEMPORARY_XEN_VIRT_START    TEMPORARY_AREA_ADDR(XEN_VIRT_START)
+#define TEMPORARY_FIXMAP_VIRT_START TEMPORARY_AREA_ADDR(FIXMAP_VIRT_START)
+
+#define TEMPORARY_FIXMAP_ADDR(n)                    \
+     (TEMPORARY_FIXMAP_VIRT_START + (n) * PAGE_SIZE)
 
 #else /* ARM_64 */
 
diff --git a/xen/arch/arm/mmu/setup.c b/xen/arch/arm/mmu/setup.c
index d5264e51bc44..72725840b6b7 100644
--- a/xen/arch/arm/mmu/setup.c
+++ b/xen/arch/arm/mmu/setup.c
@@ -120,7 +120,10 @@ static void __init __maybe_unused build_assertions(void)
 #ifdef CONFIG_ARM_32
     CHECK_SAME_SLOT(first, TEMPORARY_XEN_VIRT_START, DOMHEAP_VIRT_START);
     CHECK_DIFFERENT_SLOT(first, XEN_VIRT_START, TEMPORARY_XEN_VIRT_START);
+    CHECK_SAME_SLOT(first, TEMPORARY_XEN_VIRT_START,
+                    TEMPORARY_FIXMAP_VIRT_START);
     CHECK_SAME_SLOT(second, XEN_VIRT_START, TEMPORARY_XEN_VIRT_START);
+    CHECK_SAME_SLOT(second, FIXMAP_VIRT_START, TEMPORARY_FIXMAP_VIRT_START);
 #endif
 
 #undef CHECK_SAME_SLOT
diff --git a/xen/arch/arm/xen.lds.S b/xen/arch/arm/xen.lds.S
index 59b80d122fd0..20598c6963ce 100644
--- a/xen/arch/arm/xen.lds.S
+++ b/xen/arch/arm/xen.lds.S
@@ -35,6 +35,7 @@ SECTIONS
        _idmap_start = .;
        *(.text.header)
        *(.text.idmap)
+       *(.rodata.idmap)
        _idmap_end = .;
 
        *(.text.cold)
-- 
2.40.1



From xen-devel-bounces@lists.xenproject.org Thu Jan 11 18:34:24 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 11 Jan 2024 18:34:24 +0000
Received: from list by lists.xenproject.org with outflank-mailman.666496.1037173 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNzsj-0002kB-5e; Thu, 11 Jan 2024 18:34:21 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 666496.1037173; Thu, 11 Jan 2024 18:34:21 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNzsj-0002k4-2I; Thu, 11 Jan 2024 18:34:21 +0000
Received: by outflank-mailman (input) for mailman id 666496;
 Thu, 11 Jan 2024 18:34:19 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>) id 1rNzsh-0002js-7C
 for xen-devel@lists.xenproject.org; Thu, 11 Jan 2024 18:34:19 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rNzsg-00047j-M9; Thu, 11 Jan 2024 18:34:18 +0000
Received: from 54-240-197-232.amazon.com ([54.240.197.232]
 helo=dev-dsk-jgrall-1b-035652ec.eu-west-1.amazon.com)
 by xenbits.xenproject.org with esmtpsa
 (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rNzsg-0000gW-CY; Thu, 11 Jan 2024 18:34:18 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
	s=20200302mail; h=Content-Transfer-Encoding:MIME-Version:Message-Id:Date:
	Subject:Cc:To:From; bh=lLOyYGzOYxxR73FZKk/wCA+g8xZSoSsPsH50swOfQiM=; b=WlUJzQ
	hF+fLBLvMadIIPoSvP8v6c5f9qI1uzSAVgGks/gDgiN7imyFJesrpgcIhN9+unzWYifFgrO2Tvlkm
	RvrRnciiJc3SDdBLSVZeYoWDYQjdnQCKrbGNFcN8zL7aCOgak+RVVewpgNGoimdO7BjyBR9kcpwai
	JcG8yvAmYz4=;
From: Julien Grall <julien@xen.org>
To: xen-devel@lists.xenproject.org
Cc: julien@xen.org,
	Julien Grall <jgrall@amazon.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Bertrand Marquis <bertrand.marquis@arm.com>,
	Michal Orzel <michal.orzel@amd.com>,
	Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>
Subject: [PATCH v2 0/2] xen/arm32: Improve logging during early boot
Date: Thu, 11 Jan 2024 18:34:08 +0000
Message-Id: <20240111183410.45566-1-julien@xen.org>
X-Mailer: git-send-email 2.40.1
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

From: Julien Grall <jgrall@amazon.com>

Hi all,

This small series is based on some debugging I added while investigating
f5a49eb7f8b3 ("xen/arm32: head: Add mising isb in
switch_to_runtime_mapping()").

This will make easier to narrow down where the CPU is stuck while
enabling the MMU.

Cheers,

Julien Grall (2):
  xen/arm32: head: Rework how the fixmap and early UART mapping are
    prepared
  xen/arm32: head: Improve logging in head.S

 xen/arch/arm/arm32/head.S               |   9 ---
 xen/arch/arm/arm32/mmu/head.S           | 100 +++++++++++++-----------
 xen/arch/arm/include/asm/arm32/macros.h |  33 +++++---
 xen/arch/arm/include/asm/asm_defns.h    |   6 +-
 xen/arch/arm/include/asm/early_printk.h |   3 +
 xen/arch/arm/include/asm/mmu/layout.h   |   4 +
 xen/arch/arm/mmu/setup.c                |   3 +
 xen/arch/arm/xen.lds.S                  |   1 +
 8 files changed, 92 insertions(+), 67 deletions(-)

-- 
2.40.1



From xen-devel-bounces@lists.xenproject.org Thu Jan 11 18:34:24 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 11 Jan 2024 18:34:24 +0000
Received: from list by lists.xenproject.org with outflank-mailman.666497.1037177 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNzsj-0002mp-E7; Thu, 11 Jan 2024 18:34:21 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 666497.1037177; Thu, 11 Jan 2024 18:34:21 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rNzsj-0002me-9v; Thu, 11 Jan 2024 18:34:21 +0000
Received: by outflank-mailman (input) for mailman id 666497;
 Thu, 11 Jan 2024 18:34:20 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>) id 1rNzsh-0002jy-W4
 for xen-devel@lists.xenproject.org; Thu, 11 Jan 2024 18:34:19 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rNzsh-00047r-MH; Thu, 11 Jan 2024 18:34:19 +0000
Received: from 54-240-197-232.amazon.com ([54.240.197.232]
 helo=dev-dsk-jgrall-1b-035652ec.eu-west-1.amazon.com)
 by xenbits.xenproject.org with esmtpsa
 (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rNzsh-0000gW-EV; Thu, 11 Jan 2024 18:34:19 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
	s=20200302mail; h=Content-Transfer-Encoding:MIME-Version:References:
	In-Reply-To:Message-Id:Date:Subject:Cc:To:From;
	bh=wAXytEso6pk4MBo3awrqwDdyXbJvCt8docbSHZABqHw=; b=Rrd687XydKoaX3Greii8U0AVFa
	F7efTkKnbhtt4P3ZvsgB+G1fwdS9hY2I0Ed/vuwerGGekbVgdloiz4tQNnQeC9Ti/wOSMLhcWboWU
	4pMCxiz/EYmUvsi1mJ+aSG8+a/7kcV60S1LRmiqB+DsyhX1mP4H+VVwyOBx5BCzLIg88=;
From: Julien Grall <julien@xen.org>
To: xen-devel@lists.xenproject.org
Cc: julien@xen.org,
	Julien Grall <jgrall@amazon.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Bertrand Marquis <bertrand.marquis@arm.com>,
	Michal Orzel <michal.orzel@amd.com>,
	Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>
Subject: [PATCH v2 1/2] xen/arm32: head: Rework how the fixmap and early UART mapping are prepared
Date: Thu, 11 Jan 2024 18:34:09 +0000
Message-Id: <20240111183410.45566-2-julien@xen.org>
X-Mailer: git-send-email 2.40.1
In-Reply-To: <20240111183410.45566-1-julien@xen.org>
References: <20240111183410.45566-1-julien@xen.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

From: Julien Grall <jgrall@amazon.com>

Since commit 5e213f0f4d2c ("xen/arm32: head: Widen the use of the
temporary mapping"), boot_second (used to cover regions like Xen and
the fixmap) will not be mapped if the identity mapping overlap.

So it is ok to prepare the fixmap table and link it in boot_second
earlier. With that, the fixmap can also be used earlier via the
temporary mapping.

Therefore split setup_fixmap() in two:
    * The table is now linked in create_page_tables() because
      the boot page tables needs to be recreated for every CPU.
    * The early UART mapping is only added for the boot CPU0 as the
      fixmap table is not cleared when secondary CPUs boot.

Signed-off-by: Julien Grall <jgrall@amazon.com>

----

    Changelog since v1:
        * Rebase
        * Move the UART mapping enable_mm_boot_cpu()
---
 xen/arch/arm/arm32/mmu/head.S | 61 ++++++++---------------------------
 1 file changed, 14 insertions(+), 47 deletions(-)

diff --git a/xen/arch/arm/arm32/mmu/head.S b/xen/arch/arm/arm32/mmu/head.S
index 4e6395e7876d..a90799ad5451 100644
--- a/xen/arch/arm/arm32/mmu/head.S
+++ b/xen/arch/arm/arm32/mmu/head.S
@@ -165,11 +165,6 @@
  * Rebuild the boot pagetable's first-level entries. The structure
  * is described in mm.c.
  *
- * After the CPU enables paging it will add the fixmap mapping
- * to these page tables, however this may clash with the 1:1
- * mapping. So each CPU must rebuild the page tables here with
- * the 1:1 in place.
- *
  * Inputs:
  *   r9 : paddr(start)
  *   r10: phys offset
@@ -197,6 +192,10 @@ create_page_tables:
         add   r5, r5, #PAGE_SIZE            /* r5 := Next table */
 .endr
 
+        /* Map the fixmap into boot_second */
+        mov_w r0, FIXMAP_ADDR(0)
+        create_table_entry boot_second, xen_fixmap, r0, 2
+
         /*
          * Find the size of Xen in pages and multiply by the size of a
          * PTE. This will then be compared in the mapping loop below.
@@ -442,19 +441,20 @@ ENDPROC(enable_secondary_cpu_mm)
 ENTRY(enable_boot_cpu_mm)
         mov   r6, lr
 
+#ifdef CONFIG_EARLY_PRINTK
+        /*
+         * Add the UART mapping to the fixmap so the UART can be used
+         * as the MMU is on. This only need to do done on the boot CPU.
+         */
+        mov_w r0, EARLY_UART_VIRTUAL_ADDRESS
+        create_mapping_entry xen_fixmap, r0, r11, type=PT_DEV_L3
+#endif
+
         bl    create_page_tables
 
         /* Address in the runtime mapping to jump to after the MMU is enabled */
-        mov_w lr, 1f
-        b     enable_mmu
-1:
         mov   lr, r6
-
-        /*
-         * Prepare the fixmap. The function will return to the virtual address
-         * requested by the caller.
-         */
-        b     setup_fixmap
+        b     enable_mmu
 ENDPROC(enable_boot_cpu_mm)
 
 /*
@@ -503,39 +503,6 @@ remove_temporary_mapping:
         mov  pc, lr
 ENDPROC(remove_temporary_mapping)
 
-/*
- * Map the UART in the fixmap (when earlyprintk is used) and hook the
- * fixmap table in the page tables.
- *
- * The fixmap cannot be mapped in create_page_tables because it may
- * clash with the 1:1 mapping.
- *
- * Inputs:
- *   r10: Physical offset
- *   r11: Early UART base physical address
- *
- * Clobbers r0 - r4
- */
-setup_fixmap:
-#if defined(CONFIG_EARLY_PRINTK)
-        /* Add UART to the fixmap table */
-        mov_w r0, EARLY_UART_VIRTUAL_ADDRESS
-        create_mapping_entry xen_fixmap, r0, r11, type=PT_DEV_L3
-#endif
-        /* Map fixmap into boot_second */
-        mov_w r0, FIXMAP_ADDR(0)
-        create_table_entry boot_second, xen_fixmap, r0, 2
-        /* Ensure any page table updates made above have occurred. */
-        dsb   nshst
-        /*
-         * The fixmap area will be used soon after. So ensure no hardware
-         * translation happens before the dsb completes.
-         */
-        isb
-
-        mov   pc, lr
-ENDPROC(setup_fixmap)
-
 /* Fail-stop */
 fail:   PRINT("- Boot failed -\r\n")
 1:      wfe
-- 
2.40.1



From xen-devel-bounces@lists.xenproject.org Thu Jan 11 19:47:22 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 11 Jan 2024 19:47:22 +0000
Received: from list by lists.xenproject.org with outflank-mailman.666513.1037203 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rO118-0001Qu-7q; Thu, 11 Jan 2024 19:47:06 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 666513.1037203; Thu, 11 Jan 2024 19:47:06 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rO118-0001Qn-4h; Thu, 11 Jan 2024 19:47:06 +0000
Received: by outflank-mailman (input) for mailman id 666513;
 Thu, 11 Jan 2024 19:47:05 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rO117-0001Qd-0R; Thu, 11 Jan 2024 19:47:05 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rO116-0005XV-NE; Thu, 11 Jan 2024 19:47:04 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rO116-0008QO-5e; Thu, 11 Jan 2024 19:47:04 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rO116-0000PS-58; Thu, 11 Jan 2024 19:47:04 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=UFMzj0vG0amwqELjvkFIK3Mk+srU5mWG9+6OhY8YvrM=; b=BN1pDnFbCgUOnO8zJPBLcynw3l
	jtD3Uof7Yq+ZHUHmUku3fPyiVAtHFTBCDpNT2h+rVSa4wn2+qzMSsCroxs6bjYU7w5t1P2S+7a7xF
	vPgMrRDOPXoDlOZ9hgX+Wq6rvdPgzRtFpC4oPW4T0IzpPF2yMEIQZ/OG5fQ8v8BfmBKY=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184314-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [linux-linus test] 184314: regressions - FAIL
X-Osstest-Failures:
    linux-linus:test-arm64-arm64-xl-credit1:debian-install:fail:regression
    linux-linus:test-arm64-arm64-xl:debian-install:fail:regression
    linux-linus:test-arm64-arm64-xl-thunderx:debian-install:fail:regression
    linux-linus:test-arm64-arm64-xl-credit2:debian-install:fail:regression
    linux-linus:test-arm64-arm64-xl-xsm:debian-install:fail:regression
    linux-linus:test-arm64-arm64-libvirt-xsm:debian-install:fail:regression
    linux-linus:test-armhf-armhf-libvirt:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    linux-linus:test-amd64-amd64-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    linux-linus:test-amd64-amd64-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-raw:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-qcow2:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-qemuu-nested-amd:debian-hvm-install/l1/l2:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-xsm:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-multivcpu:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-multivcpu:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-arndale:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-arndale:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-rtds:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-rtds:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit1:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit1:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-qcow2:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit2:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit2:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-libvirt-raw:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-vhd:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-vhd:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-vhd:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-vhd:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-qcow2:migrate-support-check:fail:nonblocking
X-Osstest-Versions-This:
    linux=de927f6c0b07d9e698416c5b287c521b07694cac
X-Osstest-Versions-That:
    linux=0dd3ee31125508cd67f7e7172247f05b7fd1753a
From: osstest service owner <osstest-admin@xenproject.org>
Date: Thu, 11 Jan 2024 19:47:04 +0000

flight 184314 linux-linus real [real]
flight 184321 linux-linus real-retest [real]
http://logs.test-lab.xenproject.org/osstest/logs/184314/
http://logs.test-lab.xenproject.org/osstest/logs/184321/

Regressions :-(

Tests which did not succeed and are blocking,
including tests which could not be run:
 test-arm64-arm64-xl-credit1  12 debian-install           fail REGR. vs. 184270
 test-arm64-arm64-xl          12 debian-install           fail REGR. vs. 184270
 test-arm64-arm64-xl-thunderx 12 debian-install           fail REGR. vs. 184270
 test-arm64-arm64-xl-credit2  12 debian-install           fail REGR. vs. 184270
 test-arm64-arm64-xl-xsm      12 debian-install           fail REGR. vs. 184270
 test-arm64-arm64-libvirt-xsm 12 debian-install           fail REGR. vs. 184270

Tests which did not succeed, but are not blocking:
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 184270
 test-amd64-amd64-xl-qemut-win7-amd64 19 guest-stop            fail like 184270
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 184270
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 184270
 test-armhf-armhf-libvirt-raw 15 saverestore-support-check    fail  like 184270
 test-amd64-amd64-xl-qemut-ws16-amd64 19 guest-stop            fail like 184270
 test-armhf-armhf-libvirt-qcow2 15 saverestore-support-check   fail like 184270
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 184270
 test-amd64-amd64-libvirt     15 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-multivcpu 15 migrate-support-check        fail  never pass
 test-armhf-armhf-xl-multivcpu 16 saverestore-support-check    fail  never pass
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-armhf-armhf-libvirt     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-arndale  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-arndale  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl          15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-rtds     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-rtds     16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-credit1  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit1  16 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-qcow2 14 migrate-support-check        fail never pass
 test-armhf-armhf-xl-credit2  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit2  16 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-raw 14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 15 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-vhd      14 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-vhd      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-raw 14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-qcow2 14 migrate-support-check        fail never pass

version targeted for testing:
 linux                de927f6c0b07d9e698416c5b287c521b07694cac
baseline version:
 linux                0dd3ee31125508cd67f7e7172247f05b7fd1753a

Last test of basis   184270  2024-01-07 20:42:19 Z    3 days
Failing since        184283  2024-01-08 20:10:43 Z    2 days    5 attempts
Testing same since   184314  2024-01-11 02:43:05 Z    0 days    1 attempts

------------------------------------------------------------
550 people touched revisions under test,
not listing them all

jobs:
 build-amd64-xsm                                              pass    
 build-arm64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64                                                  pass    
 build-arm64                                                  pass    
 build-armhf                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-arm64-libvirt                                          pass    
 build-armhf-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-pvops                                            pass    
 build-arm64-pvops                                            pass    
 build-armhf-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-amd64-amd64-xl                                          pass    
 test-amd64-coresched-amd64-xl                                pass    
 test-arm64-arm64-xl                                          fail    
 test-armhf-armhf-xl                                          pass    
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm           pass    
 test-amd64-amd64-xl-qemut-stubdom-debianhvm-amd64-xsm        pass    
 test-amd64-amd64-xl-qemut-debianhvm-i386-xsm                 pass    
 test-amd64-amd64-xl-qemuu-debianhvm-i386-xsm                 pass    
 test-amd64-amd64-libvirt-xsm                                 pass    
 test-arm64-arm64-libvirt-xsm                                 fail    
 test-amd64-amd64-xl-xsm                                      pass    
 test-arm64-arm64-xl-xsm                                      fail    
 test-amd64-amd64-qemuu-nested-amd                            fail    
 test-amd64-amd64-xl-pvhv2-amd                                pass    
 test-amd64-amd64-dom0pvh-xl-amd                              pass    
 test-amd64-amd64-xl-qemut-debianhvm-amd64                    pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64                    pass    
 test-amd64-amd64-freebsd11-amd64                             pass    
 test-amd64-amd64-freebsd12-amd64                             pass    
 test-amd64-amd64-xl-qemuu-ovmf-amd64                         pass    
 test-amd64-amd64-xl-qemut-win7-amd64                         fail    
 test-amd64-amd64-xl-qemuu-win7-amd64                         fail    
 test-amd64-amd64-xl-qemut-ws16-amd64                         fail    
 test-amd64-amd64-xl-qemuu-ws16-amd64                         fail    
 test-armhf-armhf-xl-arndale                                  pass    
 test-amd64-amd64-examine-bios                                pass    
 test-amd64-amd64-xl-credit1                                  pass    
 test-arm64-arm64-xl-credit1                                  fail    
 test-armhf-armhf-xl-credit1                                  pass    
 test-amd64-amd64-xl-credit2                                  pass    
 test-arm64-arm64-xl-credit2                                  fail    
 test-armhf-armhf-xl-credit2                                  pass    
 test-amd64-amd64-xl-qemuu-dmrestrict-amd64-dmrestrict        pass    
 test-amd64-amd64-examine                                     pass    
 test-arm64-arm64-examine                                     pass    
 test-armhf-armhf-examine                                     pass    
 test-amd64-amd64-qemuu-nested-intel                          pass    
 test-amd64-amd64-xl-pvhv2-intel                              pass    
 test-amd64-amd64-dom0pvh-xl-intel                            pass    
 test-amd64-amd64-libvirt                                     pass    
 test-armhf-armhf-libvirt                                     pass    
 test-amd64-amd64-xl-multivcpu                                pass    
 test-armhf-armhf-xl-multivcpu                                pass    
 test-amd64-amd64-pair                                        pass    
 test-amd64-amd64-libvirt-pair                                pass    
 test-amd64-amd64-xl-pvshim                                   pass    
 test-amd64-amd64-pygrub                                      pass    
 test-amd64-amd64-libvirt-qcow2                               pass    
 test-armhf-armhf-libvirt-qcow2                               pass    
 test-amd64-amd64-libvirt-raw                                 pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-armhf-armhf-libvirt-raw                                 pass    
 test-amd64-amd64-xl-rtds                                     pass    
 test-armhf-armhf-xl-rtds                                     pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64-shadow             pass    
 test-amd64-amd64-xl-shadow                                   pass    
 test-arm64-arm64-xl-thunderx                                 fail    
 test-amd64-amd64-examine-uefi                                pass    
 test-amd64-amd64-xl-vhd                                      pass    
 test-arm64-arm64-xl-vhd                                      pass    
 test-armhf-armhf-xl-vhd                                      pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Not pushing.

(No revision log; it would be 58694 lines long.)


From xen-devel-bounces@lists.xenproject.org Thu Jan 11 20:11:55 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 11 Jan 2024 20:11:55 +0000
Received: from list by lists.xenproject.org with outflank-mailman.666521.1037213 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rO1P2-0006Vm-66; Thu, 11 Jan 2024 20:11:48 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 666521.1037213; Thu, 11 Jan 2024 20:11:48 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rO1P2-0006Vf-37; Thu, 11 Jan 2024 20:11:48 +0000
Received: by outflank-mailman (input) for mailman id 666521;
 Thu, 11 Jan 2024 20:11:47 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=ikTk=IV=citrix.com=prvs=733603de5=Andrew.Cooper3@srs-se1.protection.inumbo.net>)
 id 1rO1P1-0006VZ-4n
 for xen-devel@lists.xenproject.org; Thu, 11 Jan 2024 20:11:47 +0000
Received: from esa4.hc3370-68.iphmx.com (esa4.hc3370-68.iphmx.com
 [216.71.155.144]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id a26167c5-b0bd-11ee-9b0f-b553b5be7939;
 Thu, 11 Jan 2024 21:11:43 +0100 (CET)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: a26167c5-b0bd-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple;
  d=citrix.com; s=securemail; t=1705003903;
  h=from:to:cc:subject:date:message-id:in-reply-to:
   references:mime-version:content-transfer-encoding;
  bh=vFvoMsqyWFHreX8Y6trU3e3hv4EtiqIn/i79xDFGmac=;
  b=BRk1p8zv6fjsS3/crXgZJc6fxw2p86jl+MxcvqiuQUmls3JJCDzE+5FJ
   WuMB01AKs1pWKvl3muSGXntdZFEQ7Te9UacKfk85MeLYeRpGoCK8WdQlO
   fA/qKV++8madqfRxS/b+64/atC9z8yU5ulmaXNGDDWrNF39dbZqO9rkLg
   s=;
X-CSE-ConnectionGUID: Z6gQJUwJRXSzUt1GtVnlpQ==
X-CSE-MsgGUID: XBKvECL9QaqVW/qcQqhyGA==
Authentication-Results: esa4.hc3370-68.iphmx.com; dkim=none (message not signed) header.i=none
X-SBRS: 4.0
X-MesageID: 132139168
X-Ironport-Server: esa4.hc3370-68.iphmx.com
X-Remote-IP: 162.221.159.70
X-Policy: $RELAYED
X-ThreatScanner-Verdict: Negative
IronPort-Data: A9a23:HbVQR6wdTe9Pyz4M73p6t+dsxirEfRIJ4+MujC+fZmUNrF6WrkUBx
 jBLDG2Da/zZZWTxeosibY3l9B8Pup/Vx981SgZpqiAxQypGp/SeCIXCJC8cHc8wwu7rFxs7s
 ppEOrEsCOhuExcwcz/0auCJQUFUjPzOHvykTrecZkidfCc8IA85kxVvhuUltYBhhNm9Emult
 Mj75sbSIzdJ4RYtWo4vw/zF8E8HUMja4mtC4gRnPKkT5zcyqlFOZH4hDfDpR5fHatE88t6SH
 47r0Ly/92XFyBYhYvvNfmHTKxBirhb6ZGBiu1IOM0SQqkEqSh8ai87XAME0e0ZP4whlqvgqo
 Dl7WT5cfi9yVkHEsLx1vxC1iEiSN4UekFPMCSDXXcB+UyQq2pYjqhljJBheAGEWxgp4KVMQ+
 sU6FS8vVCC4ld+qmZ2ndO9onv12eaEHPKtH0p1h5TTQDPJgSpHfWaTao9Rf2V/chOgXQ6yYP
 ZBAL2MyPVKfO3WjOX9OYH46tM6uimPybHtzr1WNqLBsy2PS0BZwwP7mN9+9ltmiHJ4Pxx3J/
 zyWl4j/KiEwF8Ky4h7Uy3u1uNCIhCjCQYIDO5Tto5aGh3XMnzdOWXX6T2CTsfS/z0KzRd9bA
 0gV4TY167g/8lSxSdvwVAH+p2SL1jYfXNxKGuF89wCJyYLT+Q+SAmVCRTlEAPQEnsIrQT0h1
 neSgsjkQzdotdW9Vna15rqS6zSoNkAowXQqPHFeC1Ffup+6/dB10Uqnostf/LCdvIP6IBPN3
 BKwnBMsuqlKotI10aGjxAWS696znaQlXjLZ9y2OATr5t1IhOtL4D7FE/2Q3+hqpEWp4crVil
 CJd8yRmxLpSZaxhbQTUKAn3IJmn5uyeLBrXikN1Ep8q+lyFoiH7IdkBumEhfRw4bq7onAMFh
 2eK5GtsCGJ7ZiP2PcebnartYyjV8UQQPYu8Da2FBja/SpNwaBWG7ElTib24hgjQfLwXufhnY
 /+zKJ/8ZUv2/Iw7lFJasc9Bi+50rs3/rEuPLa3GI+OPi+PDNC7PFexZbzNjrIkRtcu5nekcy
 P4HX+Pi9vmVeLSWjvX/mWLLEW03EA==
IronPort-HdrOrdr: A9a23:oCb/zqiiwEcBJgrbXYSNiDaBVnBQXuIji2hC6mlwRA09TySZ//
 rBoB19726MtN9xYgBHpTnuAsm9qB/nmaKdpLNhWItKPzOW31dATrsSjrcKqgeIc0aVm9K1l5
 0QF5SWYOeAdWSS5vya3ODXKbkdKaG8gcKVuds=
X-Talos-CUID: =?us-ascii?q?9a23=3AarVSNmqixpPXavSW+Oe3n9jmUfJ7fUT/8WjyGX+?=
 =?us-ascii?q?DG1t1EZKJd1mU4Joxxg=3D=3D?=
X-Talos-MUID: 9a23:ZUiXgQv4xbmWCaDUlM2ntBtBKupDx/WXAVkzrtIfsPCdNT1fEmLI
X-IronPort-AV: E=Sophos;i="6.04,187,1695700800"; 
   d="scan'208";a="132139168"
From: Andrew Cooper <andrew.cooper3@citrix.com>
To: Xen-devel <xen-devel@lists.xenproject.org>
CC: Andrew Cooper <andrew.cooper3@citrix.com>, Konrad Rzeszutek Wilk
	<konrad.wilk@oracle.com>, Ross Lagerwall <ross.lagerwall@citrix.com>, "Jan
 Beulich" <JBeulich@suse.com>, =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?=
	<roger.pau@citrix.com>, Wei Liu <wl@xen.org>
Subject: [PATCH v1-alt] xen/livepatch: Make check_for_livepatch_work() faster in the common case
Date: Thu, 11 Jan 2024 20:11:29 +0000
Message-ID: <20240111201129.4010175-1-andrew.cooper3@citrix.com>
X-Mailer: git-send-email 2.30.2
In-Reply-To: <20231222220045.2840714-1-andrew.cooper3@citrix.com>
References: <20231222220045.2840714-1-andrew.cooper3@citrix.com>
MIME-Version: 1.0
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit

When livepatching is enabled, this function is used all the time.  Really do
check the fastpath first, and annotate it likely() as this is the right answer
100% of the time (to many significant figures).  This cuts out 3 pointer
dereferences in the "nothing to do path".

However, GCC still needs some help to persuade it not to set the full stack
frame (6 spilled registers, 3 slots of locals) even on the fastpath.

Create a new check_for_livepatch_work() with the fastpath only, and make the
"new" do_livepatch_work() noinline.  This causes the fastpath to need no stack
frame, making it faster still.

Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
---
CC: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
CC: Ross Lagerwall <ross.lagerwall@citrix.com>
CC: Jan Beulich <JBeulich@suse.com>
CC: Roger Pau Monné <roger.pau@citrix.com>
CC: Wei Liu <wl@xen.org>

v1-alt:
 * Manually split the functions.

Experimenting with __attribute__((cold)) was disappointing.  Vs this patch, it
creates an extra check_for_livepatch_work.cold function(and section) which is
just `jmp do_livepatch_work`.
---
 xen/common/livepatch.c | 17 ++++++++++++-----
 1 file changed, 12 insertions(+), 5 deletions(-)

diff --git a/xen/common/livepatch.c b/xen/common/livepatch.c
index 1209fea2566c..2c4b84382798 100644
--- a/xen/common/livepatch.c
+++ b/xen/common/livepatch.c
@@ -1693,7 +1693,7 @@ static int livepatch_spin(atomic_t *counter, s_time_t timeout,
  * The main function which manages the work of quiescing the system and
  * patching code.
  */
-void check_for_livepatch_work(void)
+static void noinline do_livepatch_work(void)
 {
 #define ACTION(x) [LIVEPATCH_ACTION_##x] = #x
     static const char *const names[] = {
@@ -1711,10 +1711,6 @@ void check_for_livepatch_work(void)
          !is_idle_domain(current->sched_unit->domain) )
         return;
 
-    /* Fast path: no work to do. */
-    if ( !per_cpu(work_to_do, cpu ) )
-        return;
-
     smp_rmb();
     /* In case we aborted, other CPUs can skip right away. */
     if ( !livepatch_work.do_work )
@@ -1864,6 +1860,17 @@ void check_for_livepatch_work(void)
     }
 }
 
+void check_for_livepatch_work(void)
+{
+    unsigned int cpu = smp_processor_id();
+
+    /* Fast path: no work to do. */
+    if ( likely(!per_cpu(work_to_do, cpu)) )
+        return;
+
+    do_livepatch_work();
+}
+
 /*
  * Only allow dependent payload is applied on top of the correct
  * build-id.
-- 
2.30.2



From xen-devel-bounces@lists.xenproject.org Thu Jan 11 21:37:36 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 11 Jan 2024 21:37:36 +0000
Received: from list by lists.xenproject.org with outflank-mailman.666531.1037223 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rO2jp-0000gV-Ag; Thu, 11 Jan 2024 21:37:21 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 666531.1037223; Thu, 11 Jan 2024 21:37:21 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rO2jp-0000gO-84; Thu, 11 Jan 2024 21:37:21 +0000
Received: by outflank-mailman (input) for mailman id 666531;
 Thu, 11 Jan 2024 21:37:19 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rO2jn-0000gE-H5; Thu, 11 Jan 2024 21:37:19 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rO2jn-0007UW-5F; Thu, 11 Jan 2024 21:37:19 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rO2jm-0004OA-Qy; Thu, 11 Jan 2024 21:37:18 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rO2jm-0005Vg-QH; Thu, 11 Jan 2024 21:37:18 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=sKJvzihRX8GSh+zJn46l+p9SPn3t+HzYazW1CBRfS+A=; b=A3yKKC8XHUGpPsP6b2Gs+d1zow
	fvSvc6vemKJr4KyIIC95Q4K6bLlv8P/x4IVr/y0uuNtAHKvROtvKOg72Wc+J1aZCBvznrqeHuTcEr
	vNVv/dex0qn280aBUoUAwWbipS7Bc2GahDVCyGrKr1nbXOtoH1ZZT6izir+aIr2JMOzk=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184316-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [libvirt test] 184316: tolerable FAIL - PUSHED
X-Osstest-Failures:
    libvirt:test-armhf-armhf-libvirt-raw:guest-start:fail:heisenbug
    libvirt:test-armhf-armhf-libvirt-qcow2:saverestore-support-check:fail:nonblocking
    libvirt:test-armhf-armhf-libvirt-raw:saverestore-support-check:fail:nonblocking
    libvirt:test-armhf-armhf-libvirt-raw:migrate-support-check:fail:nonblocking
    libvirt:test-armhf-armhf-libvirt:saverestore-support-check:fail:nonblocking
    libvirt:test-amd64-i386-libvirt-xsm:migrate-support-check:fail:nonblocking
    libvirt:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    libvirt:test-amd64-amd64-libvirt-xsm:migrate-support-check:fail:nonblocking
    libvirt:test-amd64-i386-libvirt:migrate-support-check:fail:nonblocking
    libvirt:test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    libvirt:test-arm64-arm64-libvirt:migrate-support-check:fail:nonblocking
    libvirt:test-arm64-arm64-libvirt:saverestore-support-check:fail:nonblocking
    libvirt:test-arm64-arm64-libvirt-xsm:migrate-support-check:fail:nonblocking
    libvirt:test-arm64-arm64-libvirt-xsm:saverestore-support-check:fail:nonblocking
    libvirt:test-amd64-i386-libvirt-raw:migrate-support-check:fail:nonblocking
    libvirt:test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    libvirt:test-armhf-armhf-libvirt:migrate-support-check:fail:nonblocking
    libvirt:test-arm64-arm64-libvirt-qcow2:migrate-support-check:fail:nonblocking
    libvirt:test-arm64-arm64-libvirt-qcow2:saverestore-support-check:fail:nonblocking
    libvirt:test-arm64-arm64-libvirt-raw:migrate-support-check:fail:nonblocking
    libvirt:test-arm64-arm64-libvirt-raw:saverestore-support-check:fail:nonblocking
    libvirt:test-amd64-amd64-libvirt-vhd:migrate-support-check:fail:nonblocking
    libvirt:test-armhf-armhf-libvirt-qcow2:migrate-support-check:fail:nonblocking
X-Osstest-Versions-This:
    libvirt=0e120bc43197a2d4099470f8932c37944a2fcc16
X-Osstest-Versions-That:
    libvirt=7cb03e6a28e465c49f0cabe8fe2e7d21edb5aadf
From: osstest service owner <osstest-admin@xenproject.org>
Date: Thu, 11 Jan 2024 21:37:18 +0000

flight 184316 libvirt real [real]
flight 184323 libvirt real-retest [real]
http://logs.test-lab.xenproject.org/osstest/logs/184316/
http://logs.test-lab.xenproject.org/osstest/logs/184323/

Failures :-/ but no regressions.

Tests which are failing intermittently (not blocking):
 test-armhf-armhf-libvirt-raw 13 guest-start         fail pass in 184323-retest

Tests which did not succeed, but are not blocking:
 test-armhf-armhf-libvirt-qcow2 15 saverestore-support-check fail blocked in 184301
 test-armhf-armhf-libvirt-raw 15 saverestore-support-check fail in 184323 like 184301
 test-armhf-armhf-libvirt-raw 14 migrate-support-check fail in 184323 never pass
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 184301
 test-amd64-i386-libvirt-xsm  15 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt     15 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-amd64-i386-libvirt      15 migrate-support-check        fail   never pass
 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-arm64-arm64-libvirt     15 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt     16 saverestore-support-check    fail   never pass
 test-arm64-arm64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-xsm 16 saverestore-support-check    fail   never pass
 test-amd64-i386-libvirt-raw  14 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-armhf-armhf-libvirt     15 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-qcow2 14 migrate-support-check        fail never pass
 test-arm64-arm64-libvirt-qcow2 15 saverestore-support-check    fail never pass
 test-arm64-arm64-libvirt-raw 14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 15 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-vhd 14 migrate-support-check        fail   never pass
 test-armhf-armhf-libvirt-qcow2 14 migrate-support-check        fail never pass

version targeted for testing:
 libvirt              0e120bc43197a2d4099470f8932c37944a2fcc16
baseline version:
 libvirt              7cb03e6a28e465c49f0cabe8fe2e7d21edb5aadf

Last test of basis   184301  2024-01-10 04:20:43 Z    1 days
Testing same since   184316  2024-01-11 04:18:50 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Fedora Weblate Translation <i18n@lists.fedoraproject.org>
  Göran Uddeborg <goeran@uddeborg.se>
  Michal Privoznik <mprivozn@redhat.com>
  Weblate <noreply@weblate.org>

jobs:
 build-amd64-xsm                                              pass    
 build-arm64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64                                                  pass    
 build-arm64                                                  pass    
 build-armhf                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-arm64-libvirt                                          pass    
 build-armhf-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-pvops                                            pass    
 build-arm64-pvops                                            pass    
 build-armhf-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm           pass    
 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm            pass    
 test-amd64-amd64-libvirt-xsm                                 pass    
 test-arm64-arm64-libvirt-xsm                                 pass    
 test-amd64-i386-libvirt-xsm                                  pass    
 test-amd64-amd64-libvirt                                     pass    
 test-arm64-arm64-libvirt                                     pass    
 test-armhf-armhf-libvirt                                     pass    
 test-amd64-i386-libvirt                                      pass    
 test-amd64-amd64-libvirt-pair                                pass    
 test-amd64-i386-libvirt-pair                                 pass    
 test-arm64-arm64-libvirt-qcow2                               pass    
 test-armhf-armhf-libvirt-qcow2                               pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-armhf-armhf-libvirt-raw                                 fail    
 test-amd64-i386-libvirt-raw                                  pass    
 test-amd64-amd64-libvirt-vhd                                 pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Pushing revision :

To xenbits.xen.org:/home/xen/git/libvirt.git
   7cb03e6a28..0e120bc431  0e120bc43197a2d4099470f8932c37944a2fcc16 -> xen-tested-master


From xen-devel-bounces@lists.xenproject.org Thu Jan 11 21:51:40 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 11 Jan 2024 21:51:40 +0000
Received: from list by lists.xenproject.org with outflank-mailman.666538.1037232 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rO2xb-0003U6-Fh; Thu, 11 Jan 2024 21:51:35 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 666538.1037232; Thu, 11 Jan 2024 21:51:35 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rO2xb-0003Tz-Ct; Thu, 11 Jan 2024 21:51:35 +0000
Received: by outflank-mailman (input) for mailman id 666538;
 Thu, 11 Jan 2024 21:51:33 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=pEk/=IV=amd.com=vikram.garhwal@srs-se1.protection.inumbo.net>)
 id 1rO2xZ-0003Tt-MM
 for xen-devel@lists.xenproject.org; Thu, 11 Jan 2024 21:51:33 +0000
Received: from NAM10-DM6-obe.outbound.protection.outlook.com
 (mail-dm6nam10on2060b.outbound.protection.outlook.com
 [2a01:111:f400:7e88::60b])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 93bff5b5-b0cb-11ee-9b0f-b553b5be7939;
 Thu, 11 Jan 2024 22:51:31 +0100 (CET)
Received: from MW3PR12MB4409.namprd12.prod.outlook.com (2603:10b6:303:2d::23)
 by MN2PR12MB4271.namprd12.prod.outlook.com (2603:10b6:208:1d7::16)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7181.19; Thu, 11 Jan
 2024 21:51:27 +0000
Received: from MW3PR12MB4409.namprd12.prod.outlook.com
 ([fe80::5aa3:9748:d8d0:87e1]) by MW3PR12MB4409.namprd12.prod.outlook.com
 ([fe80::5aa3:9748:d8d0:87e1%5]) with mapi id 15.20.7181.019; Thu, 11 Jan 2024
 21:51:27 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 93bff5b5-b0cb-11ee-9b0f-b553b5be7939
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=IAEA+R5O+vVy+VgCqo1J/+DAvUPFdTOrzFyK7DQq1dz+vHeA16tVipZpzvAiLZtPLXal/3pWuzgUHpndHwRP1aEfSdASyDPOndTRzsTR3lcCSUgwbeQetgwg+4Eab4BcfMX5j7xVRld0IYUOlF4lh92vBq6TjSpfnTYlC8WhrNC/1X51Y9mEZvWWaMkPNIIVSlD01+OfiIa2zh+wt5/1EY2Raonh3kOtZVJlG+pspWrLnnPT/U1c5JXMVojUg4BdHf3k4/rFMBVlaPYMGUHtKlfVY8AX+E/nWR4N+gfCns7gfAN5ZMDUI5KBv3RZfgYQ6K51a6Uz2ygTstro+KLTeA==
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=SGzNPc17IxEP2foiiC+1vsTEc4f/VnctGZ0BqNv2/CI=;
 b=jeR99gJmLZAiVySa3wbVUQqPCoS4Q8JisOvO2c+JQsi03DBh6D+dgZezDsODLldkZMJ+VXo4JrddqiZlR1z0VfdKRTSc47b10gMsQE0/s5JKRlOv0s5QvjzxUeGsmdXwaSnsGwlUu5V6YtRFnn4S4wk3Vb3ridw/hE97jT+HSx6BgizNzdO8rY0NLQNX7hH53D+bRmTBf45EYT07MUCfsjGZCU8dza7gsKA9o+jggYQi7OG5hBpjbxCHDatMUumPd9jHWpuo9cfyNq3OjplEoto/xzWkQVvO/bow7+OD/nwlkay7k8nB+IG8K1K1Y1F48ykmEAFZoj8xJ7YVVU3NWA==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=amd.com; dmarc=pass action=none header.from=amd.com; dkim=pass
 header.d=amd.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=SGzNPc17IxEP2foiiC+1vsTEc4f/VnctGZ0BqNv2/CI=;
 b=KfUmLhR3+S26i4J4tzbawJ8LQzzxNpeAlF7WxNBvkFVh18gcJgxjwWOWP+/Hj+8GOLyWptHkYhgtfsyZ8Hia2ZcgObt+5h9z9wp/R+7+Mc864Tz+giQQ74jkcAi6oHa9M8AzKN83rd5DkRqXDYtqG54lvrglcar0JRpxTZUX4cU=
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=amd.com;
Date: Thu, 11 Jan 2024 13:51:24 -0800
From: Vikram Garhwal <vikram.garhwal@amd.com>
To: Javi Merino <javi.merino@cloud.com>
Cc: xen-devel@lists.xenproject.org, Julien Grall <julien@xen.org>,
	Stefano Stabellini <sstabellini@kernel.org>
Subject: Re: [PATCH v2] xen/common: Don't dereference overlay_node after
 checking that it is NULL
Message-ID: <ZaBi3J0aZn3NJUBQ@amd.com>
References: <18b7b16d0cce886728410784a7b6063116be7e2d.1704970589.git.javi.merino@cloud.com>
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
In-Reply-To: <18b7b16d0cce886728410784a7b6063116be7e2d.1704970589.git.javi.merino@cloud.com>
X-ClientProxiedBy: BYAPR11CA0058.namprd11.prod.outlook.com
 (2603:10b6:a03:80::35) To MW3PR12MB4409.namprd12.prod.outlook.com
 (2603:10b6:303:2d::23)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: MW3PR12MB4409:EE_|MN2PR12MB4271:EE_
X-MS-Office365-Filtering-Correlation-Id: d3af173e-2231-4a3e-abb9-08dc12ef761f
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam: BCL:0;
X-Microsoft-Antispam-Message-Info:
	dRt6mTBVnoxR0UNmLkqhyr/cQCPNE6cy1iXgRinxG0EJQUcXqEeODUaf0QjdOhOnklS0OzYk/vBaFE0o5gMudziX9wNHZMLLuk+JPlyHNbdKA8QN2VBTW75aI0lih0gD5UYvu4FCDr2I0A5ejvCdBuSd6vREay5veeAHVFdQ7V/p5ELVM2/x8DToyA049Zz8EcF4yOxfKnnI3CiDcGIdIMX4lDjViqr+n6Hdo/11iW9ls6iuQvnlAW+YclGESLX1MAYX2dQC0+f39O+gTFM33GcdYkoS4H/U749EENyYGZqMvdJwPLMp0rrtt6T9IJ+T127TKfIftibnFaC+X8tJL6eOGiH9lFZ+RCykys4TwdkOV7bVpMtktjQfhX1tp26zBa/6HiDgv45lgMi/vZ9QL/FN4pjIMyVl+anQwOHrLBv1YSHJuMGdIvDWECmdRi9h/MtzwhCq+74BhImPeZBk47QqUwYaVnDfDVr6c8G7wUU5nfKvY0CcVdTkbJfsWAD2nHf3M/scKxK3Mqy7Q0gsEqKJbXZOiUVvYMk602NMATo=
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:MW3PR12MB4409.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230031)(136003)(396003)(366004)(376002)(346002)(39860400002)(230922051799003)(64100799003)(186009)(1800799012)(451199024)(83380400001)(36756003)(41300700001)(86362001)(38100700002)(6506007)(6512007)(6666004)(5660300002)(6486002)(966005)(478600001)(4326008)(8676002)(8936002)(44832011)(2616005)(26005)(316002)(2906002)(54906003)(66476007)(66556008)(66946007)(6916009);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?TUI4UEFxR0VVWGdNVmJPOCt1bC9GOVEzSDdhOStIQnByK1dEd1NnOHh2ZWVP?=
 =?utf-8?B?TWg4WndMMWtlMTBvR2xNS3RzT2FCQy92bG5jc1pVbVFVbitJaXZqRkFOYTBZ?=
 =?utf-8?B?L2wxZ3hxZnJzai9SeXFuaXZQbUliTkFZNVF1aldMOW15L3I0VlBQc09mRkln?=
 =?utf-8?B?N1lqL2VSM016TENaUm1MRmZRekM5QzI2OXB0a2hLSkZRWWpUYnZFajdleDRt?=
 =?utf-8?B?Z1d2RU90Z05zNzc4Si9wcjNTaklzS3lWZ0lMRTVoamVMMXJjSHdxd2U3cWdW?=
 =?utf-8?B?MGdpc2NFTFRaSUxnMWxaZUpoMTFlTGk2R3hHakVLeE9oa1lRbDBLQWhlaVJC?=
 =?utf-8?B?Zy9jd0JsZ05jc3lJaXBOWi9pbkxZSk91dzkyM3duYk1pVld0K3BrUWt4K290?=
 =?utf-8?B?THppbXpFZzhNMmJvWkdCY0lJalc1NEVKYzNyZ1lmMUtzbEVYajBrRFp1YllU?=
 =?utf-8?B?bDJXSlkzeVdUTHE5R0J6dVNLdXFOSzRUV1p6bUNUdnVwampxRlZuY0tQNExn?=
 =?utf-8?B?Vmp2U2s0anpJc2ZkdUc1WlBWbjdKK3pvZlpZQ3I1R3lpNnphUmY2ZlVsSm9n?=
 =?utf-8?B?bjhWN1pzbll6c3BWNWU1WlNsc0g4amZmaFpQWUJPVmZkQzhGU21sV1dYWlBD?=
 =?utf-8?B?M1djckJZTmtsU3FPV3FzNlRZdVlWSVE5SWQ1NXAybU1tem9UMUtDMW1neVNQ?=
 =?utf-8?B?dDFxaTd5WHdYaFJKVUZUUEUrNkxkdnlLQUEwZXNRNjBXNGpTWnNyNWlBbm1F?=
 =?utf-8?B?a0t2Rm92RGhPRHNRYUdBc1c2SzNYT0pwYTgyWDM1OUpRMVBvekcyOXplYTlN?=
 =?utf-8?B?K2c2TXYwc2tsR2lkMndUbjlldm12QjRLNHFvRDVGRVhUYVhpZkpCNzRIQnRj?=
 =?utf-8?B?ZEdSQ2J1cTB1UlNYTWs5RTEyWUVJOE1oNEREV1V3RzhQK2ZPUnQrRE15Y3hU?=
 =?utf-8?B?T21sSkM1ejFBbFJYdTRhZHhNdERjYzY3bTU2WWlKVElUWDN6bHQ4Q3dXdGd3?=
 =?utf-8?B?QlRISzNNbHJlYmkvQVc2TGwzaHpGZFlWeXlBVGVmL3NZWWIya1NVRTcyb2pQ?=
 =?utf-8?B?ZTRSNkpoZHVWVTN4aG9RTHZYN0YwUTF3YnFqVlMyZDFidTNhcDd3MXptZDFs?=
 =?utf-8?B?MVRLUWhTWXBTZW00dEp3WGRZdWwrc2lDUWJua3BtTjJVRmZtUjVPKzljekJx?=
 =?utf-8?B?TU9Fa0xDMGtIVGJPU2RBR2RqNk1GdFZXUXF6MWcrZWx4RUxWT0drYjFXY2Jv?=
 =?utf-8?B?RC9TdFZsZU5uMmUrdHpEVXIrUHN0TWZ4Nkk4VjR5QlRnc0NvZkIyK1BqYXBR?=
 =?utf-8?B?ZXRGTnNWTTdndEJndE5nQnNleERydGJuU1pJcFhvaEJDWm9uZVhhZUs1YXpy?=
 =?utf-8?B?N0o4WTc5a1hwYXordzVzVnUveVlIOGZWRWZQQlc4WWp4RU1oQm1CZ1FwcTRj?=
 =?utf-8?B?MFF5dmxaK2M4ZzBrTXBqQTBZWnVzcWx2Mk1rcjVURFptKzFZM2lucitOZmJB?=
 =?utf-8?B?WjNNdVM4Ym1TODRlYndQUlV1bGxYM0FZaFl5VHJOVnhxMHMvOUUwTXF6b2tv?=
 =?utf-8?B?ZkpRQTF6dWtzS2ViVGxrUFVrSm11RENCR0ZsNThVZ3pPRlNtdjVnOGl5enNU?=
 =?utf-8?B?cTJsMTVVYlY3aEMzZkY0OVhrS3JFSi9xRkpHaG1aU2Y3ZTBDQlZUdTVrbTdq?=
 =?utf-8?B?azZja2JscExYcHVkcnhjUENGN2lRVkVnKzYxUlpUUm5KREkzakJvTDNNOXgw?=
 =?utf-8?B?U21zQklRUGtDN0VReTZVZ0IyWldKd1RlZzIxWnphdHB6aFU0cllQcnVVWWxq?=
 =?utf-8?B?VlIxaWFpUzZ0V1p3QWZMbFFVUlp4Vk8zWDU4bHg2UzR3V0NBSi81VzltQlNX?=
 =?utf-8?B?dlN3Um04Y0NPN1lOVDJEZjBRQWJlWVU3UmttT3UrVHNvbVEwdnI0dnV4Vkl6?=
 =?utf-8?B?SHZNcEhaN3dmZ0YvNERSakpJRWRpZ1N1cHJMMmRwYVpONmZUQVEzM3FOR2FP?=
 =?utf-8?B?cGxEYkRrd20xQkk3R0ZObWM5SzdDOWk5U2pMdm9nb0drZElmWVVUbHFneXdX?=
 =?utf-8?B?aGdtNG80MmtrMmNjUU5XYmNsbEtSc0tTRERzM1haRVlBd2V0bG5HVllIU0c2?=
 =?utf-8?Q?Jh+DBfQNhdE9EvN5+h7znxNtq?=
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-Network-Message-Id: d3af173e-2231-4a3e-abb9-08dc12ef761f
X-MS-Exchange-CrossTenant-AuthSource: MW3PR12MB4409.namprd12.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Jan 2024 21:51:27.1020
 (UTC)
X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted
X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d
X-MS-Exchange-CrossTenant-MailboxType: HOSTED
X-MS-Exchange-CrossTenant-UserPrincipalName: M4adYPzSYWrry6IH21Si78U5jPhF4fV08WyzDQ5KB33R92Ioh7fJ08G5N2rIhiOcJXX90y4hoZ0ugGo173mAig==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR12MB4271

On Thu, Jan 11, 2024 at 12:09:27PM +0000, Javi Merino wrote:
> In remove_nodes(), overlay_node is dereferenced when printing the
> error message even though it is known to be NULL.  Return without
> printing as an error message is already printed by the caller.
> 
> The semantic patch that spots this code is available in
> 
> https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/scripts/coccinelle/null/deref_null.cocci?id=1f874787ed9a2d78ed59cb21d0d90ac0178eceb0
> 
> Fixes: 7e5c4a8b86f1 ("xen/arm: Implement device tree node removal functionalities")
> Signed-off-by: Javi Merino <javi.merino@cloud.com>
Reviewed-by: Vikram Garhwal <vikram.garhwal@amd.com>

> ---
> CC: Vikram Garhwal <vikram.garhwal@amd.com>
> CC: Julien Grall <julien@xen.org>
> 
>  xen/common/dt-overlay.c | 4 ----
>  1 file changed, 4 deletions(-)
> 
> diff --git a/xen/common/dt-overlay.c b/xen/common/dt-overlay.c
> index 5663a049e90a..1b197381f616 100644
> --- a/xen/common/dt-overlay.c
> +++ b/xen/common/dt-overlay.c
> @@ -427,11 +427,7 @@ static int remove_nodes(const struct overlay_track *tracker)
>      {
>          overlay_node = (struct dt_device_node *)tracker->nodes_address[j];
>          if ( overlay_node == NULL )
> -        {
> -            printk(XENLOG_ERR "Device %s is not present in the tree. Removing nodes failed\n",
> -                   overlay_node->full_name);
>              return -EINVAL;
> -        }
>  
>          rc = remove_descendant_nodes_resources(overlay_node);
>          if ( rc )
> -- 
> 2.42.0
> 


From xen-devel-bounces@lists.xenproject.org Thu Jan 11 22:56:31 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 11 Jan 2024 22:56:31 +0000
Received: from list by lists.xenproject.org with outflank-mailman.666543.1037242 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rO3yB-0002y6-62; Thu, 11 Jan 2024 22:56:15 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 666543.1037242; Thu, 11 Jan 2024 22:56:15 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rO3yB-0002xz-3T; Thu, 11 Jan 2024 22:56:15 +0000
Received: by outflank-mailman (input) for mailman id 666543;
 Thu, 11 Jan 2024 22:56:14 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=ifVr=IV=raptorengineering.com=sanastasio@srs-se1.protection.inumbo.net>)
 id 1rO3yA-0002xt-0m
 for xen-devel@lists.xenproject.org; Thu, 11 Jan 2024 22:56:14 +0000
Received: from raptorengineering.com (mail.raptorengineering.com
 [23.155.224.40]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 9b55bc54-b0d4-11ee-9b0f-b553b5be7939;
 Thu, 11 Jan 2024 23:56:09 +0100 (CET)
Received: from localhost (localhost [127.0.0.1])
 by mail.rptsys.com (Postfix) with ESMTP id 2650082857D9;
 Thu, 11 Jan 2024 16:56:07 -0600 (CST)
Received: from mail.rptsys.com ([127.0.0.1])
 by localhost (vali.starlink.edu [127.0.0.1]) (amavisd-new, port 10032)
 with ESMTP id 4gadJ3juCJxD; Thu, 11 Jan 2024 16:56:03 -0600 (CST)
Received: from localhost (localhost [127.0.0.1])
 by mail.rptsys.com (Postfix) with ESMTP id A92EE8285879;
 Thu, 11 Jan 2024 16:56:03 -0600 (CST)
Received: from mail.rptsys.com ([127.0.0.1])
 by localhost (vali.starlink.edu [127.0.0.1]) (amavisd-new, port 10026)
 with ESMTP id Wp50BoSZIf6W; Thu, 11 Jan 2024 16:56:03 -0600 (CST)
Received: from [10.11.0.2] (5.edge.rptsys.com [23.155.224.38])
 by mail.rptsys.com (Postfix) with ESMTPSA id 3F14082857D9;
 Thu, 11 Jan 2024 16:56:03 -0600 (CST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 9b55bc54-b0d4-11ee-9b0f-b553b5be7939
DKIM-Filter: OpenDKIM Filter v2.10.3 mail.rptsys.com A92EE8285879
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
	d=raptorengineering.com; s=B8E824E6-0BE2-11E6-931D-288C65937AAD;
	t=1705013763; bh=yQrLwSRp3Jn8EqGGK25xe2gLoRkg6NW2vk+gCSEZ93c=;
	h=Message-ID:Date:MIME-Version:To:From;
	b=dg4CJV9FMPKHk1oM2GVs7Z1q4suuDreX91CdJcKGYAywOQVgmKEe8/EIVJZvcY7Zb
	 wLobt1auWKBJsp7l6VxcVQnw6RafwZCxVkhz1qe+n3u1a9KqFKRQegVdbdY5xP0M8O
	 snlvzr4Mfnve7Y1We34Mzu/WMq4pFVpgsaxqFQtU=
X-Virus-Scanned: amavisd-new at rptsys.com
Message-ID: <767ef1bb-03fa-4c3f-8eb0-e8997d3da6f8@raptorengineering.com>
Date: Thu, 11 Jan 2024 16:56:02 -0600
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2 4/7] xen/device-tree: Fix bootfdt.c to tolerate 0
 reserved regions
Content-Language: en-US
To: Julien Grall <julien@xen.org>, xen-devel@lists.xenproject.org
Cc: Timothy Pearson <tpearson@raptorengineering.com>,
 Jan Beulich <jbeulich@suse.com>, Stefano Stabellini <sstabellini@kernel.org>
References: <cover.1702607884.git.sanastasio@raptorengineering.com>
 <1c6f0f94f4ea2b773f960d88bd02e2168ac28abb.1702607884.git.sanastasio@raptorengineering.com>
 <c1c6ee29-7fa1-4b39-aa7a-1b8f750cd893@xen.org>
From: Shawn Anastasio <sanastasio@raptorengineering.com>
In-Reply-To: <c1c6ee29-7fa1-4b39-aa7a-1b8f750cd893@xen.org>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

Hi Julien

On 1/9/24 12:14 PM, Julien Grall wrote:
> (+ Stefano)
> 
> Hi Shawn,
> 
> On 15/12/2023 02:43, Shawn Anastasio wrote:
>> The early_print_info routine in bootfdt.c incorrectly stores the result
>> of a call to fdt_num_mem_rsv() in an unsigned int, which results in the
>> negative error code being interpreted incorrectly in a subsequent loop
>> in the case where the device tree does not contain any memory reserve
>> map entries.
> 
> I have some trouble to reconciliate the code with your explanation.
> Looking at the implementation fdt_num_mem_rsv() should return 0 if there
> are no reserved regions. A negative value would only be returned if the
> device-tree is malformated.
> 
> Do you have a Device-Tree where the issue occurs?
> 
> That said, I agree that the code could be hardened.
>

After reading your comment, I looked into it again and it appears you're
right. It turns out that I was hitting this issue not because my device
tree had 0 entries or was corrupt, but because the function was being
called with an invalid device tree pointer to begin with!

Specifically, bootfdt.c:early_print_info calls fdt_num_mem_rsv using the
global `device_tree_flattened` variable which PPC's setup.c did not
properly initialize:

    nr_rsvd = fdt_num_mem_rsv(device_tree_flattened);

Thanks for the sanity check. I'll fix this in the next revision of the
patchset.

Despite my misunderstanding of how the bug was triggered in my case, it
definitely is still something that should be fixed. Following yours and
Michal's suggestion, I'll change the patch to panic() instead and submit
a follow-up (likely standalone and not as a part of this series).

> Cheers,

Thanks,
Shawn



From xen-devel-bounces@lists.xenproject.org Thu Jan 11 23:12:00 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 11 Jan 2024 23:12:00 +0000
Received: from list by lists.xenproject.org with outflank-mailman.666548.1037252 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rO4DL-0005qK-GT; Thu, 11 Jan 2024 23:11:55 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 666548.1037252; Thu, 11 Jan 2024 23:11:55 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rO4DL-0005qD-Dd; Thu, 11 Jan 2024 23:11:55 +0000
Received: by outflank-mailman (input) for mailman id 666548;
 Thu, 11 Jan 2024 23:11:54 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=ifVr=IV=raptorengineering.com=sanastasio@srs-se1.protection.inumbo.net>)
 id 1rO4DK-0005q7-3M
 for xen-devel@lists.xenproject.org; Thu, 11 Jan 2024 23:11:54 +0000
Received: from raptorengineering.com (mail.raptorengineering.com
 [23.155.224.40]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id cd6e72c3-b0d6-11ee-9b0f-b553b5be7939;
 Fri, 12 Jan 2024 00:11:51 +0100 (CET)
Received: from localhost (localhost [127.0.0.1])
 by mail.rptsys.com (Postfix) with ESMTP id AFA0682854A6;
 Thu, 11 Jan 2024 17:11:50 -0600 (CST)
Received: from mail.rptsys.com ([127.0.0.1])
 by localhost (vali.starlink.edu [127.0.0.1]) (amavisd-new, port 10032)
 with ESMTP id gSFSNHir9XPA; Thu, 11 Jan 2024 17:11:50 -0600 (CST)
Received: from localhost (localhost [127.0.0.1])
 by mail.rptsys.com (Postfix) with ESMTP id 214468285696;
 Thu, 11 Jan 2024 17:11:50 -0600 (CST)
Received: from mail.rptsys.com ([127.0.0.1])
 by localhost (vali.starlink.edu [127.0.0.1]) (amavisd-new, port 10026)
 with ESMTP id OBdXmsl_N61i; Thu, 11 Jan 2024 17:11:50 -0600 (CST)
Received: from [10.11.0.2] (5.edge.rptsys.com [23.155.224.38])
 by mail.rptsys.com (Postfix) with ESMTPSA id 9A92D82854A6;
 Thu, 11 Jan 2024 17:11:49 -0600 (CST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: cd6e72c3-b0d6-11ee-9b0f-b553b5be7939
DKIM-Filter: OpenDKIM Filter v2.10.3 mail.rptsys.com 214468285696
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
	d=raptorengineering.com; s=B8E824E6-0BE2-11E6-931D-288C65937AAD;
	t=1705014710; bh=yIJR/P1vwfACvyfGnLgWyBNzjhqLj+SbWz9TrJhpz1M=;
	h=Message-ID:Date:MIME-Version:To:From;
	b=YNWBc2b3EGrCj8t+dsWoRU4l61kVQ9afXlaYaqGROxQxgp/ZuYqezmTbiPhsPPMKC
	 1U4QXQzMr1uc/htTUDAbT1OLkGaqYKSHlfROHVPUmukSP8U3TOHIPTd5/O2/JafeYD
	 9pytgDuGLrXQA1QPXkP3C1Mn22gcdEkU6y+Dohgg=
X-Virus-Scanned: amavisd-new at rptsys.com
Message-ID: <f0de2480-3846-45f9-9573-27da24ff076c@raptorengineering.com>
Date: Thu, 11 Jan 2024 17:11:48 -0600
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 21/34] xen/riscv: introduce p2m.h
Content-Language: en-US
To: Oleksii Kurochko <oleksii.kurochko@gmail.com>,
 xen-devel@lists.xenproject.org
Cc: Alistair Francis <alistair.francis@wdc.com>,
 Bob Eshleman <bobbyeshleman@gmail.com>, Connor Davis <connojdavis@gmail.com>
References: <cover.1703255175.git.oleksii.kurochko@gmail.com>
 <c3b1f24aea1ba01505697717b240c8d036abfee1.1703255175.git.oleksii.kurochko@gmail.com>
From: Shawn Anastasio <sanastasio@raptorengineering.com>
In-Reply-To: <c3b1f24aea1ba01505697717b240c8d036abfee1.1703255175.git.oleksii.kurochko@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

Hi Oleksii,

On 12/22/23 9:13 AM, Oleksii Kurochko wrote:
> Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>
> ---
> Changes in V3:
>  - add SPDX
>  - drop unneeded for now p2m types.
>  - return false in all functions implemented with BUG() inside.
>  - update the commit message
> ---
> Changes in V2:
>  - Nothing changed. Only rebase.
> ---
>  xen/arch/ppc/include/asm/p2m.h   |   3 +-
>  xen/arch/riscv/include/asm/p2m.h | 102 +++++++++++++++++++++++++++++++
>  2 files changed, 103 insertions(+), 2 deletions(-)
>  create mode 100644 xen/arch/riscv/include/asm/p2m.h
> 
> diff --git a/xen/arch/ppc/include/asm/p2m.h b/xen/arch/ppc/include/asm/p2m.h
> index 25ba054668..3bc05b7c05 100644
> --- a/xen/arch/ppc/include/asm/p2m.h
> +++ b/xen/arch/ppc/include/asm/p2m.h
> @@ -50,8 +50,7 @@ static inline void memory_type_changed(struct domain *d)
>  static inline int guest_physmap_mark_populate_on_demand(struct domain *d, unsigned long gfn,
>                                                          unsigned int order)
>  {
> -    BUG_ON("unimplemented");
> -    return 1;
> +    return -EOPNOTSUPP;
>  }
>

Was this change included by mistake? I'm not sure why this patch should
touch PPC's p2m.h.

Thanks,
Shawn


From xen-devel-bounces@lists.xenproject.org Thu Jan 11 23:13:35 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 11 Jan 2024 23:13:35 +0000
Received: from list by lists.xenproject.org with outflank-mailman.666554.1037263 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rO4Ex-0006Rw-0Y; Thu, 11 Jan 2024 23:13:35 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 666554.1037263; Thu, 11 Jan 2024 23:13:34 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rO4Ew-0006Rp-TJ; Thu, 11 Jan 2024 23:13:34 +0000
Received: by outflank-mailman (input) for mailman id 666554;
 Thu, 11 Jan 2024 23:13:33 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=ikTk=IV=citrix.com=prvs=733603de5=Andrew.Cooper3@srs-se1.protection.inumbo.net>)
 id 1rO4Ev-0006Rc-Rn
 for xen-devel@lists.xenproject.org; Thu, 11 Jan 2024 23:13:33 +0000
Received: from esa2.hc3370-68.iphmx.com (esa2.hc3370-68.iphmx.com
 [216.71.145.153]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 07dcd248-b0d7-11ee-98f0-6d05b1d4d9a1;
 Fri, 12 Jan 2024 00:13:31 +0100 (CET)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 07dcd248-b0d7-11ee-98f0-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple;
  d=citrix.com; s=securemail; t=1705014811;
  h=from:to:cc:subject:date:message-id:mime-version:
   content-transfer-encoding;
  bh=1qAJb7K/k8QWfsH7zKV3pM6RT7p0oaCBLlDrevB05jA=;
  b=S00L3DyzRbvbPwfxkhydFHTACOHbVwv2ws6WhlQA0+EkH/DEgjEjVeSo
   Je5DFo5OX+5zFujIEvYq749O4FZ2AFCs33GF5sUeT+n9xK5LeT6W1D0KQ
   mzrUmcDC7hcHpFOqair4IlObC3+BvxfIwqgXuJFXdUiu/gpQfaRXoW/0S
   U=;
X-CSE-ConnectionGUID: tTQc7+osRG6vwTF5UyETeQ==
X-CSE-MsgGUID: y9ygL2S4RUCCWpZ7B1GSjg==
Authentication-Results: esa2.hc3370-68.iphmx.com; dkim=none (message not signed) header.i=none
X-SBRS: 4.0
X-MesageID: 129228545
X-Ironport-Server: esa2.hc3370-68.iphmx.com
X-Remote-IP: 162.221.159.70
X-Policy: $RELAYED
X-ThreatScanner-Verdict: Negative
IronPort-Data: A9a23:uogHWqoALiJp/pNWEYQvuJL0A1xeBmIjZRIvgKrLsJaIsI4StFCzt
 garIBnVPf6CZ2Snfd8kPIq18x5VsJPcy4QwTAY+qiFhRS0R+ZuZCYyVIHmrMnLJJKUvbq7FA
 +Y2MYCccZ9uHhcwgj/3b9ANeFEljfngqoLUUbOCYmYpA1Y8FE/NsDo788YhmIlknNOlNA2Ev
 NL2sqX3NUSsnjV5KQr40YrawP9UlKq04G9wUmAWP6gR4AeHziBNV/rzGInqR5fGatgMdgKFb
 76rIIGRpgvx4xorA9W5pbf3GmVirmn6ZFXmZtJ+AsBOszAazsAA+v9T2Mk0MC+7vw6hjdFpo
 OihgLTrIesf0g8gr8xGO/VQO3kW0aSrY9YrK1Dn2SCY5xWun3cBX5yCpaz5VGEV0r8fPI1Ay
 RAXACwxVxvcxOWt+p3lVPZQqJkePeTXMbpK7xmMzRmBZRonaZXKQqGM7t5ExjYgwMtJGJ4yZ
 eJAN2ApNk6ZJUQSaxFIUPrSn8/x7pX7WxRepEiYuuwc5G/LwRYq+LPsLMDUapqBQsA9ckOw/
 ziXpT6pX01HXDCZ4SvU432I3NSTpx7Qc70KJuKSr9FRglLGkwT/DzVJDADm8JFVkHWWS99Zb
 kAZ5Ccqhawz71CwCMnwWQWip3yJtQJaXMBfe8UYwgyQzqvf4y6CG3MJCDVGbbQOq8seVTEsk
 FiTkLvBByFp9rucSnuf97KdhTK0JSURa2QFYEcsTgYb4t+lvIA6iDrOSMpuFOi+ididMS35x
 jmRhDQ9g7gVgt8G0+Ow+lWvqzO3ppnIVCY6oAjcVSS4qx9+Z5+iIYWjr1rDhd5bLIefR3GMt
 3NCho2C6+MfCteEn2qPWI0w8KqBvqjfdmeG2Bg2QshnqGzFF2OfkZ54/A1HLxgqNd0+VmH3f
 3P95D5AyaNeBS7/BUNoWL5dG/jG3IC5Soy5D6GMMIYTCqWdYjNr682HWKJx44wOuBJ1+U3HE
 c3HGftA9F5DYUid8BK4Rv0GzZggzT0kyGXYSPjTlkv/jePPPi7KEOxUbDNii9zVC4vd/W3oH
 yt3bZPWm32zrsWiCsUozWLjBQ9TdiVqbXwHg8dWavSCMmJb9JIJUpfsLUcaU9U9xcx9z76Yl
 kxRr2cEkDITc1Wbc1TVAp2iAZuzNatCQYUTZHd8ZQfxiiJ5Me5CLs43LvMKQFXuz8Q7pdYcc
 hXPU5zo7ihnItgfxwkgUA==
IronPort-HdrOrdr: A9a23:SFyxPq9+BXhWLj5wrq5uk+DUI+orL9Y04lQ7vn2YSXRuHPBw8P
 re+8jztCWE7Ar5N0tBpTntAsW9qBDnhPtICOsqTNSftWDd0QPCRuxfBOPZslvd8kbFl9K1u5
 0OT0EHMqyTMWRH
X-Talos-CUID: =?us-ascii?q?9a23=3ANi9OCWp+k7dHpDDUeR8d2mbmUdwZS3aCj3DLGWD?=
 =?us-ascii?q?mF3lVZuCoWHKs9Zoxxg=3D=3D?=
X-Talos-MUID: 9a23:yElhuQbf4NB3CuBTpm79ixU4D5tS3o+FN1g/zr9flPKGOnkl
X-IronPort-AV: E=Sophos;i="6.04,187,1695700800"; 
   d="scan'208";a="129228545"
From: Andrew Cooper <andrew.cooper3@citrix.com>
To: Xen-devel <xen-devel@lists.xenproject.org>
CC: Andrew Cooper <andrew.cooper3@citrix.com>, Jan Beulich
	<JBeulich@suse.com>, =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?=
	<roger.pau@citrix.com>, Wei Liu <wl@xen.org>, Jun Nakajima
	<jun.nakajima@intel.com>, Kevin Tian <kevin.tian@intel.com>, Tamas K Lengyel
	<tamas@tklengyel.com>, Reima ISHII <ishiir@g.ecc.u-tokyo.ac.jp>, "Takahiro
 Shinagawa" <shina@ecc.u-tokyo.ac.jp>, George Dunlap
	<george.dunlap@citrix.com>
Subject: [PATCH v2 0/3] x86/vmx: Multiple fixes
Date: Thu, 11 Jan 2024 23:13:20 +0000
Message-ID: <20240111231323.4043461-1-andrew.cooper3@citrix.com>
X-Mailer: git-send-email 2.30.2
MIME-Version: 1.0
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit

Fixes for two bugs initially reported to the Xen Security Team, but determined
not have an impact in security-supported configurations.

The Xen Security Team would like to thank Ishiisan for engaging in responsible
disclsoure.

As a reminder to the rest of the Xen community, please do ask you're not sure.

v2:
 * See patches for details.

Andrew Cooper (3):
  x86/vmx: Collect all emtpy VMExit cases together
  x86/vmx: Fix IRQ handling for EXIT_REASON_INIT
  x86/vmx: Disallow the use of inactivity states

 xen/arch/x86/hvm/vmx/vmx.c              | 29 ++++++++++---------------
 xen/arch/x86/hvm/vmx/vvmx.c             |  9 ++++++--
 xen/arch/x86/include/asm/hvm/vmx/vmcs.h |  1 +
 3 files changed, 20 insertions(+), 19 deletions(-)

-- 
2.30.2



From xen-devel-bounces@lists.xenproject.org Thu Jan 11 23:13:36 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 11 Jan 2024 23:13:36 +0000
Received: from list by lists.xenproject.org with outflank-mailman.666555.1037273 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rO4Ey-0006gX-8h; Thu, 11 Jan 2024 23:13:36 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 666555.1037273; Thu, 11 Jan 2024 23:13:36 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rO4Ey-0006gQ-3s; Thu, 11 Jan 2024 23:13:36 +0000
Received: by outflank-mailman (input) for mailman id 666555;
 Thu, 11 Jan 2024 23:13:34 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=ikTk=IV=citrix.com=prvs=733603de5=Andrew.Cooper3@srs-se1.protection.inumbo.net>)
 id 1rO4Ew-0006Rc-Il
 for xen-devel@lists.xenproject.org; Thu, 11 Jan 2024 23:13:34 +0000
Received: from esa2.hc3370-68.iphmx.com (esa2.hc3370-68.iphmx.com
 [216.71.145.153]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 0a6e6415-b0d7-11ee-98f0-6d05b1d4d9a1;
 Fri, 12 Jan 2024 00:13:33 +0100 (CET)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 0a6e6415-b0d7-11ee-98f0-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple;
  d=citrix.com; s=securemail; t=1705014813;
  h=from:to:cc:subject:date:message-id:in-reply-to:
   references:mime-version:content-transfer-encoding;
  bh=EE/lRXdi+k5KtqGjtnl0bs1lLF3+iT3WJr+up5HKJ9c=;
  b=PGleRqkREkuV3Km0cdFtSPSv6MFH0zVnn/XTltfyZ0CHu8iGAZtzJs9C
   Bq8eZ5fo4C//VBcK7+C3ZkpOcukBiqWDcnoAUq4ScH6WSMUj9ijusfppF
   vhK/W9IrNzdCfaZoO7lYJNbZlpMwLrLaGTy14uHtnrBZMqwyIPSvL6V4R
   U=;
X-CSE-ConnectionGUID: tTQc7+osRG6vwTF5UyETeQ==
X-CSE-MsgGUID: uYXzKoj4SrOJO7q+DE+srg==
Authentication-Results: esa2.hc3370-68.iphmx.com; dkim=none (message not signed) header.i=none
X-SBRS: 4.0
X-MesageID: 129228546
X-Ironport-Server: esa2.hc3370-68.iphmx.com
X-Remote-IP: 162.221.159.70
X-Policy: $RELAYED
X-ThreatScanner-Verdict: Negative
IronPort-Data: A9a23:d2lgNaJPpNP3A1ypFE+R6pUlxSXFcZb7ZxGr2PjKsXjdYENS1zEOx
 mBNXjrTaffYa2L3fohxPIS/p08OuJXRnYVjG1FlqX01Q3x08seUXt7xwmUcnc+xBpaaEB84t
 ZV2hv3odp1coqr0/0/1WlTZhSAhk/nOHvylULKs1hlZHWdMUD0mhQ9oh9k3i4tphcnRKw6Ws
 Jb5rta31GWNglaYCUpKrfrfwP9TlK6q4m9A5wVnPasjUGL2zBH5MrpOfcldEFOgKmVkNrbSb
 /rOyri/4lTY838FYj9yuu+mGqGiaue60Tmm0hK6aYD76vRxjnVaPpIAHOgdcS9qZwChxLid/
 jnvWauYEm/FNoWU8AgUvoIx/ytWZcWq85efSZSzXFD6I+QrvBIAzt03ZHzaM7H09c5rPVhFq
 r8fMwoiMA6cu8zr/aOWduRV05FLwMnDZOvzu1llxDDdS/0nXYrCU+PB4towMDUY354UW6yEP
 oxANGspM0yojx5nYz/7DLoXmuuyi2a5WDpfsF+P/oI84nTJzRw327/oWDbQUoXQFJ8PzhvE+
 Aoq+UzkMyEIF9udlQGf1VCL2faMsQ64Q5gdQejQGvlC3wTImz175ActfUu2p7y1h1CzX/pbK
 lcI4Ww+oK4q7kupQ9LhGRqirxasvwUcWttKO+J85QqGjLeR/wGaF29CRzUHasROnO0cSCEu1
 1SJt8j0HjEpu7qQIVqC8p+EoDX0PjIaRUcAeClCSwIG6tvipYgbjxTTQ9IlG6mw5vX2FC/xx
 XaWrSE4r7QVkcMPka68+Djvnzupr4PhUg0x6wPYT2+hqAh+YeaNfIyp71Hz4P1LapvcUl6Cr
 X9CksPY7vhmMH2WvHXTGqNXRujvvqvUdmKE6bJyI3U/3yiRwnX8PodL2h4gOlhVHJs5aBLVb
 XaG7Gu9+6Rv0GuWgb5fOt3pV517lfa8SLzYuubogs2ii6WdlTNrHwk0PCZ8J0i3zCARfVgXY
 P93i/qEA3cAErhAxzGrXeob2rJD7nlhnT+KFMqrkE38gOb2iJuppVAtaQbmUwzExPnc/FW9H
 yh3a6NmNCmzoMWhO3KKoOb/3HgBLGQhBICeliCkXrfrH+aSI0l4U6W56ep4K+RYc1F9yr+gE
 oeVBhUJlzISRBTvdW23V5yUQOq0Dc4u9CNhZ3xE0JTB8yFLXLtDJZw3L/MfFYTLPsQ6pRKoZ
 5Hpo/m9P8k=
IronPort-HdrOrdr: A9a23:OMyhr6/A0yZvTIlqH9tuk+DgI+orL9Y04lQ7vn2YSXRuHPBw8P
 re5cjztCWE7gr5N0tBpTntAsW9qDbnhPtICOoqTNCftWvdyQiVxehZhOOIqVDd8m/Fh4pgPM
 9bAtBD4bbLbGSS4/yU3ODBKadD/OW6
X-Talos-CUID: 9a23:L/dvqmB+QOA/KFn6EzVbzUVLWcc+SFKD0mjsDRKFGEtVRYTAHA==
X-Talos-MUID: 9a23:dKHJEAThDo7nd/VzRXTxtQFwF8Bqv5+0L2IqzoxFl+THLjZ/bmI=
X-IronPort-AV: E=Sophos;i="6.04,187,1695700800"; 
   d="scan'208";a="129228546"
From: Andrew Cooper <andrew.cooper3@citrix.com>
To: Xen-devel <xen-devel@lists.xenproject.org>
CC: Andrew Cooper <andrew.cooper3@citrix.com>, Reima ISHII
	<ishiir@g.ecc.u-tokyo.ac.jp>, Jan Beulich <JBeulich@suse.com>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>, Wei Liu
	<wl@xen.org>, Jun Nakajima <jun.nakajima@intel.com>, Kevin Tian
	<kevin.tian@intel.com>, Tamas K Lengyel <tamas@tklengyel.com>, "Takahiro
 Shinagawa" <shina@ecc.u-tokyo.ac.jp>, George Dunlap
	<george.dunlap@citrix.com>
Subject: [PATCH v2 2/3] x86/vmx: Fix IRQ handling for EXIT_REASON_INIT
Date: Thu, 11 Jan 2024 23:13:22 +0000
Message-ID: <20240111231323.4043461-3-andrew.cooper3@citrix.com>
X-Mailer: git-send-email 2.30.2
In-Reply-To: <20240111231323.4043461-1-andrew.cooper3@citrix.com>
References: <20240111231323.4043461-1-andrew.cooper3@citrix.com>
MIME-Version: 1.0
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit

When receiving an INIT, a prior bugfix tried to ignore the INIT and continue
onwards.

Unfortunately it's not safe to return at that point in vmx_vmexit_handler().
Just out of context in the first hunk is a local_irqs_enabled() which is
depended-upon by the return-to-guest path, causing the following checklock
failure in debug builds:

  (XEN) Error: INIT received - ignoring
  (XEN) CHECKLOCK FAILURE: prev irqsafe: 0, curr irqsafe 1
  (XEN) Xen BUG at common/spinlock.c:132
  (XEN) ----[ Xen-4.19-unstable  x86_64  debug=y  Tainted:     H  ]----
  ...
  (XEN) Xen call trace:
  (XEN)    [<ffff82d040238e10>] R check_lock+0xcd/0xe1
  (XEN)    [<ffff82d040238fe3>] F _spin_lock+0x1b/0x60
  (XEN)    [<ffff82d0402ed6a8>] F pt_update_irq+0x32/0x3bb
  (XEN)    [<ffff82d0402b9632>] F vmx_intr_assist+0x3b/0x51d
  (XEN)    [<ffff82d040206447>] F vmx_asm_vmexit_handler+0xf7/0x210

Luckily, this is benign in release builds.  Accidentally having IRQs disabled
when trying to take an IRQs-on lock isn't a deadlock-vulnerable pattern.

Drop the problematic early return.  In hindsight, it's wrong to skip other
normal VMExit steps.

Fixes: b1f11273d5a7 ("x86/vmx: Don't spuriously crash the domain when INIT is received")
Reported-by: Reima ISHII <ishiir@g.ecc.u-tokyo.ac.jp>
Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
---
CC: Jan Beulich <JBeulich@suse.com>
CC: Roger Pau Monné <roger.pau@citrix.com>
CC: Wei Liu <wl@xen.org>
CC: Jun Nakajima <jun.nakajima@intel.com>
CC: Kevin Tian <kevin.tian@intel.com>
CC: Tamas K Lengyel <tamas@tklengyel.com>
CC: Reima Ishii <ishiir@g.ecc.u-tokyo.ac.jp>
CC: Takahiro Shinagawa <shina@ecc.u-tokyo.ac.jp>
CC: George Dunlap <george.dunlap@citrix.com>

With this patch in place, the INIT is ignored and the guest continues:

  (XEN) HVM1 restore: CPU 0
  (d1) --- Xen Test Framework ---
  (d1) Environment: HVM 64bit (Long mode 4 levels)
  (XEN) Error: INIT received - ignoring
  (d1) Test result: SUCCESS

v2:
 * Leave the printk() early, and skip in the main block.
---
 xen/arch/x86/hvm/vmx/vmx.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/xen/arch/x86/hvm/vmx/vmx.c b/xen/arch/x86/hvm/vmx/vmx.c
index 829c27f1fa33..a85394232a23 100644
--- a/xen/arch/x86/hvm/vmx/vmx.c
+++ b/xen/arch/x86/hvm/vmx/vmx.c
@@ -4090,7 +4090,7 @@ void asmlinkage vmx_vmexit_handler(struct cpu_user_regs *regs)
 
     case EXIT_REASON_INIT:
         printk(XENLOG_ERR "Error: INIT received - ignoring\n");
-        return; /* Renter the guest without further processing */
+        break;
     }
 
     /* Now enable interrupts so it's safe to take locks. */
@@ -4692,6 +4692,7 @@ void asmlinkage vmx_vmexit_handler(struct cpu_user_regs *regs)
         break;
 
     case EXIT_REASON_EXTERNAL_INTERRUPT:  /* Handled earlier */
+    case EXIT_REASON_INIT:                /* Handled earlier */
     case EXIT_REASON_TPR_BELOW_THRESHOLD: /* Handled later in vmx_intr_assist() */
     case EXIT_REASON_BUS_LOCK:            /* Nothing to do (rate-limit only) */
         break;
-- 
2.30.2



From xen-devel-bounces@lists.xenproject.org Thu Jan 11 23:13:37 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 11 Jan 2024 23:13:37 +0000
Received: from list by lists.xenproject.org with outflank-mailman.666556.1037283 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rO4Ez-0006vq-F3; Thu, 11 Jan 2024 23:13:37 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 666556.1037283; Thu, 11 Jan 2024 23:13:37 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rO4Ez-0006vh-B5; Thu, 11 Jan 2024 23:13:37 +0000
Received: by outflank-mailman (input) for mailman id 666556;
 Thu, 11 Jan 2024 23:13:36 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=ikTk=IV=citrix.com=prvs=733603de5=Andrew.Cooper3@srs-se1.protection.inumbo.net>)
 id 1rO4Ey-0006Rc-1v
 for xen-devel@lists.xenproject.org; Thu, 11 Jan 2024 23:13:36 +0000
Received: from esa3.hc3370-68.iphmx.com (esa3.hc3370-68.iphmx.com
 [216.71.145.155]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 0aa9a961-b0d7-11ee-98f0-6d05b1d4d9a1;
 Fri, 12 Jan 2024 00:13:35 +0100 (CET)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 0aa9a961-b0d7-11ee-98f0-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple;
  d=citrix.com; s=securemail; t=1705014815;
  h=from:to:cc:subject:date:message-id:in-reply-to:
   references:mime-version:content-transfer-encoding;
  bh=Dpm9/S8+MidX9muncwSRV0Kdv7DqGRwPQQ3rsiXm2ss=;
  b=A2Hq6fhnxWtyZKxgi9k2Mnh38zkg9o/VLmgUH/TQLFNrrjTLdeEWhO3V
   QFVeP8IJCO+/MWbf4syOpAktBrmrCK6Ucn/O90OHaCXdP/FEk/y2otX6/
   +k+gg9eHf/WZqY2/pkSAWXhEe+6G1PeGXW4kUCQmlW/7SmkOJNB4Dwxu6
   Y=;
X-CSE-ConnectionGUID: uyTfX/LfTRC34w9FxF0y2A==
X-CSE-MsgGUID: KuJK4YPoTpmmr6ZKUJK6Ug==
Authentication-Results: esa3.hc3370-68.iphmx.com; dkim=none (message not signed) header.i=none
X-SBRS: 4.0
X-MesageID: 129351772
X-Ironport-Server: esa3.hc3370-68.iphmx.com
X-Remote-IP: 162.221.159.70
X-Policy: $RELAYED
X-ThreatScanner-Verdict: Negative
IronPort-Data: A9a23:hiCaa6M1vRya2FnvrR3ml8FynXyQoLVcMsEvi/4bfWQNrUoj3jIBx
 jQZUG2GM66KM2T9L9l+OY2/8EoBvJTcx4JhGwto+SlhQUwRpJueD7x1DKtS0wC6dZSfER09v
 63yTvGacajYm1eF/k/F3oDJ9CQ6jefQAOOkVIYoAwgpLSd8UiAtlBl/rOAwh49skLCRDhiE/
 Nj/uKUzAnf8s9JPGjxSs/7rRC9H5qyo5GtB5wVmPpingXeF/5UrJMNHTU2OByOQrrl8RoaSW
 +vFxbelyWLVlz9F5gSNy+uTnuUiG9Y+DCDW4pZkc/HKbitq/0Te5p0TJvsEAXq7vh3S9zxHJ
 HehgrTrIeshFvWkdO3wyHC0GQkmVUFN0OevzXRSLaV/ZqAJGpfh66wGMa04AWEX0vtmPW9+s
 tgWFAomNUyc1sym7uqqEMA506zPLOGzVG8eknRpzDWfBvc6W5HTBa7N4Le03h9p2JoIR6yHI
 ZNEOHwwNHwsYDUWUrsTILs4kP2lmT/UdDpApUjOjaE2/3LS3Ep6172F3N/9I4bbHpgMwRnCz
 o7A10fkIDJGBeSY9SKA92jytMzyvwClZY1HQdVU8dY12QbOlwT/EiY+RVa95PW0lEO6c9ZeM
 FAPvDojq7Ao806mRcW7WAe3yFamlBMBX9tbE8Uh9RqAjKHT5m6xGWwsXjNHLts8u6cLqScCj
 wHT2YmzXHo27ezTFir1GqqoQS2aJDkpI19FQSE4dyBev8ayjpEd1gOVZ4M2eEKqteEZCQ0c0
 hjT83Bi3uRL05JWv5hX62wrlN5Fm3QocuLWzl+ONo5dxlklDLNJnqTxgbQh0d5OLZyCUn6Kt
 2Uels6V4YgmVM7VyHXcGrVSRer4u55p1QEwZnY2QvEcG8mFoSb/Lei8HhkiTKuWDir0UWCwO
 xKC0e+gzJRSIGGrfcdKj3GZUqwXIVzbPY29DJj8N4MeCqWdgSfbpEmCk2bMhTGy+KXt+IljU
 aqmnTGEVC1KUfU+nWDsF4/wE9YDn0gD+I8afrijpzzP7FZUTCf9pWstWLdWUt0E0Q==
IronPort-HdrOrdr: A9a23:SOIL+6yNIcKRI8tNSK7GKrPwFL1zdoMgy1knxilNoRw8SKKlfq
 eV7Y0mPH7P+VAssR4b+exoVJPtfZqYz+8R3WBzB8bEYOCFghrKEGgK1+KLqFeMJ8S9zJ846U
 4JSdkHNDSaNzlHZKjBjzVQa+xQouW6zA==
X-Talos-CUID: 9a23:8o3Xem6ci53tkW0aJtss6V8oFPBiVnPh9lyLf1DpJ3ZHEKzPYArF
X-Talos-MUID: =?us-ascii?q?9a23=3AhCUvqwwVwFluFiha55BoNTkwbv+aqIezKmNRoK0?=
 =?us-ascii?q?Bh9GBMDYuCRSgrhfpf4Byfw=3D=3D?=
X-IronPort-AV: E=Sophos;i="6.04,187,1695700800"; 
   d="scan'208";a="129351772"
From: Andrew Cooper <andrew.cooper3@citrix.com>
To: Xen-devel <xen-devel@lists.xenproject.org>
CC: Andrew Cooper <andrew.cooper3@citrix.com>, Jan Beulich
	<JBeulich@suse.com>, =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?=
	<roger.pau@citrix.com>, Wei Liu <wl@xen.org>, George Dunlap
	<george.dunlap@citrix.com>
Subject: [PATCH v2 1/3] x86/vmx: Collect all emtpy VMExit cases together
Date: Thu, 11 Jan 2024 23:13:21 +0000
Message-ID: <20240111231323.4043461-2-andrew.cooper3@citrix.com>
X-Mailer: git-send-email 2.30.2
In-Reply-To: <20240111231323.4043461-1-andrew.cooper3@citrix.com>
References: <20240111231323.4043461-1-andrew.cooper3@citrix.com>
MIME-Version: 1.0
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit

... rather than having them spread out.  Explain consicely why each is empty.

No functional change.

Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
---
CC: Jan Beulich <JBeulich@suse.com>
CC: Roger Pau Monné <roger.pau@citrix.com>
CC: Wei Liu <wl@xen.org>
CC: George Dunlap <george.dunlap@citrix.com>

v2:
 * New.
---
 xen/arch/x86/hvm/vmx/vmx.c | 21 ++++++---------------
 1 file changed, 6 insertions(+), 15 deletions(-)

diff --git a/xen/arch/x86/hvm/vmx/vmx.c b/xen/arch/x86/hvm/vmx/vmx.c
index 8ff675883c2b..829c27f1fa33 100644
--- a/xen/arch/x86/hvm/vmx/vmx.c
+++ b/xen/arch/x86/hvm/vmx/vmx.c
@@ -4374,9 +4374,7 @@ void asmlinkage vmx_vmexit_handler(struct cpu_user_regs *regs)
         }
         break;
     }
-    case EXIT_REASON_EXTERNAL_INTERRUPT:
-        /* Already handled above. */
-        break;
+
     case EXIT_REASON_TRIPLE_FAULT:
         hvm_triple_fault();
         break;
@@ -4539,9 +4537,6 @@ void asmlinkage vmx_vmexit_handler(struct cpu_user_regs *regs)
         hvm_inject_hw_exception(X86_EXC_UD, X86_EVENT_NO_EC);
         break;
 
-    case EXIT_REASON_TPR_BELOW_THRESHOLD:
-        break;
-
     case EXIT_REASON_APIC_ACCESS:
         if ( !vmx_handle_eoi_write() && !handle_mmio() )
             hvm_inject_hw_exception(X86_EXC_GP, 0);
@@ -4680,15 +4675,6 @@ void asmlinkage vmx_vmexit_handler(struct cpu_user_regs *regs)
         vmx_handle_descriptor_access(exit_reason);
         break;
 
-    case EXIT_REASON_BUS_LOCK:
-        /*
-         * Nothing to do: just taking a vmexit should be enough of a pause to
-         * prevent a VM from crippling the host with bus locks.  Note
-         * EXIT_REASON_BUS_LOCK will always have bit 26 set in exit_reason, and
-         * hence the perf counter is already increased.
-         */
-        break;
-
     case EXIT_REASON_NOTIFY:
         __vmread(EXIT_QUALIFICATION, &exit_qualification);
 
@@ -4705,6 +4691,11 @@ void asmlinkage vmx_vmexit_handler(struct cpu_user_regs *regs)
 
         break;
 
+    case EXIT_REASON_EXTERNAL_INTERRUPT:  /* Handled earlier */
+    case EXIT_REASON_TPR_BELOW_THRESHOLD: /* Handled later in vmx_intr_assist() */
+    case EXIT_REASON_BUS_LOCK:            /* Nothing to do (rate-limit only) */
+        break;
+
     case EXIT_REASON_VMX_PREEMPTION_TIMER_EXPIRED:
     case EXIT_REASON_INVPCID:
     /* fall through */
-- 
2.30.2



From xen-devel-bounces@lists.xenproject.org Thu Jan 11 23:13:38 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 11 Jan 2024 23:13:38 +0000
Received: from list by lists.xenproject.org with outflank-mailman.666557.1037292 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rO4F0-0007BZ-Ly; Thu, 11 Jan 2024 23:13:38 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 666557.1037292; Thu, 11 Jan 2024 23:13:38 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rO4F0-0007BM-IK; Thu, 11 Jan 2024 23:13:38 +0000
Received: by outflank-mailman (input) for mailman id 666557;
 Thu, 11 Jan 2024 23:13:36 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=ikTk=IV=citrix.com=prvs=733603de5=Andrew.Cooper3@srs-se1.protection.inumbo.net>)
 id 1rO4Ey-0006Rc-RP
 for xen-devel@lists.xenproject.org; Thu, 11 Jan 2024 23:13:36 +0000
Received: from esa5.hc3370-68.iphmx.com (esa5.hc3370-68.iphmx.com
 [216.71.155.168]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 0b1beb35-b0d7-11ee-98f0-6d05b1d4d9a1;
 Fri, 12 Jan 2024 00:13:35 +0100 (CET)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 0b1beb35-b0d7-11ee-98f0-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple;
  d=citrix.com; s=securemail; t=1705014815;
  h=from:to:cc:subject:date:message-id:in-reply-to:
   references:mime-version:content-transfer-encoding;
  bh=4YIR4K6W+nWMY3NLj1Q8Kd8f62sIVMxc9+xWiH9rSVw=;
  b=iX6Ucla+cmVJDrUaQhWuyHeFjxJzNHcdUZdvxdsx6ojgSInH3NW6gxFR
   bLYFU4QYLMOapNuunwdnSY06+cY6SLXk7TD2Po8UBsOejs7NZ3ARhCJh3
   hxYLkQBX9sNe8tLl9c2vlhPCd4nlV8t0aOQ9JssTnexTjHcBgP+SsuOO7
   g=;
X-CSE-ConnectionGUID: WH81DfBRRa+ZAEKw+/EGxA==
X-CSE-MsgGUID: 9/3zPfAITzu2AejPcLWbGQ==
Authentication-Results: esa5.hc3370-68.iphmx.com; dkim=none (message not signed) header.i=none
X-SBRS: 4.0
X-MesageID: 127924843
X-Ironport-Server: esa5.hc3370-68.iphmx.com
X-Remote-IP: 162.221.159.70
X-Policy: $RELAYED
X-ThreatScanner-Verdict: Negative
IronPort-Data: A9a23:evxiBqtIX0jYoxj1NhwS7DHNfOfnVG1eMUV32f8akzHdYApBsoF/q
 tZmKWrTOq2IY2fzc40lOoTjoUhSv5PRxoAxHFFopHs3RntH+JbJXdiXEBz9bniYRiHhoOCLz
 O1FM4Wdc5pkJpP4jk3wWlQ0hSAkjclkfpKlVaicfHg3HFc4IMsYoUoLs/YjhYJ1isSODQqIu
 Nfjy+XSI1bg0DNvWo4uw/vrRChH4rKq5Fv0gnRkPaoX5AaHziFOZH4iDfrZw0XQE9E88tGSH
 44v/JnhlkvF8hEkDM+Sk7qTWiXmlZaLYGBiIlIPM0STqkAqSh4ai87XB9JFAatjsB2bnsgZ9
 Tl4ncfYpTHFnEH7sL91vxFwS0mSNEDdkVPNCSDXXce7lyUqf5ZwqhnH4Y5f0YAwo45K7W9yG
 fMwFxBdNzyNrdiMyfGJY8RPmYdkAeb7FdZK0p1g5Wmx4fcORJnCR+PB5MNC3Sd2jcdLdRrcT
 5NHM3w1Nk2GOkAefAhPYH49tL7Aan3XWjtUsl+K44Ew5HDe1ldZ27nxKtvFPNeNQK25m27B/
 D2XpTipXkpy2Nq3mH3e4Eqir87zjz6hcY8QLLacyfRFuQjGroAUIEJPDgbqyRWjsWauVtQaJ
 0EK9y4Gqakp6FftXtT7Rwe/onOPolgbQdU4O+wh6ACM0ILbpQuSDS4ZCyJGa80h8sY9Az4yv
 nertd70AT1ksJWOVGmQsLyTqFuaJiw9PWIEIygeQmMt4cTl5oc6jRvNT9NqOK+zktDxXzr3x
 liiryUghrNVkc8C0Y26+0zKh3SnoZ2hZhI84wzMdn6m6g5/a5+oY8qj7l2zxe1ALYCQZlSKt
 z4Z3tSZ7/EJS5iG0i6VKNjhB5nwuazDameFxwcyTt9+r1xB5kJPY6hvwGEnCElDCPwNOg3AT
 WzM+kR8y496aS7CgbBMX26hNyg75fG/TYi8B6iKMocmX3RnSOOQEMhTia+sM4PFyhFEfVkXY
 8vzTCpVJS9y5V5b5DS3XfwB9rQg2zozw2jeLbiikEz7iOvENCHMEuZZWLdrUgzexPrZyDg5D
 v4Fb5fao/mheLGWjtbrHX47cglRcClT6WHeoM1LbO+TSjeK60l4Y8I9NYgJItQ/94wMz7egw
 51IchMAoLYJrSGdeFrih7EKQO+HYKuTWlpiZnx0bA/5gSJzCWtthY9GH6YKkXAc3LQL5ZZJo
 zMtIq1s3twnpuz7xgkg
IronPort-HdrOrdr: A9a23:EZXpyqlECEcGL79EtVoi7gD+KFzpDfIU3DAbv31ZSRFFG/Fxl6
 iV8sjzsiWE8Qr5OUtQ/+xoV5PhfZqxz/JICMwqTNKftWrdyQyVxeNZnOjfKlTbckWUnINgPO
 VbAsxD4bXLfCBHZK3BgTVQfexO/DD+ytHLudvj
X-Talos-CUID: =?us-ascii?q?9a23=3AWNc+W2v0M+/K07eztMcCGbuB6IsaUi2E4Hn6GXW?=
 =?us-ascii?q?xSlRAZZ6KChi917NNxp8=3D?=
X-Talos-MUID: 9a23:M2umaAlYbb9zenPzX9dgdnozc5x626qHKXwfjM8vtsu8PghPMRik2WE=
X-IronPort-AV: E=Sophos;i="6.04,187,1695700800"; 
   d="scan'208";a="127924843"
From: Andrew Cooper <andrew.cooper3@citrix.com>
To: Xen-devel <xen-devel@lists.xenproject.org>
CC: Andrew Cooper <andrew.cooper3@citrix.com>, Reima Ishii
	<ishiir@g.ecc.u-tokyo.ac.jp>, Jan Beulich <JBeulich@suse.com>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>, Wei Liu
	<wl@xen.org>, Jun Nakajima <jun.nakajima@intel.com>, Kevin Tian
	<kevin.tian@intel.com>, Tamas K Lengyel <tamas@tklengyel.com>, "Takahiro
 Shinagawa" <shina@ecc.u-tokyo.ac.jp>, George Dunlap
	<george.dunlap@citrix.com>
Subject: [PATCH v2 3/3] x86/vmx: Disallow the use of inactivity states
Date: Thu, 11 Jan 2024 23:13:23 +0000
Message-ID: <20240111231323.4043461-4-andrew.cooper3@citrix.com>
X-Mailer: git-send-email 2.30.2
In-Reply-To: <20240111231323.4043461-1-andrew.cooper3@citrix.com>
References: <20240111231323.4043461-1-andrew.cooper3@citrix.com>
MIME-Version: 1.0
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit

Right now, vvmx will blindly copy L12's ACTIVITY_STATE into the L02 VMCS and
enter the vCPU.  Luckily for us, nested-virt is explicitly unsupported for
security bugs.

The inactivity states are HLT, SHUTDOWN and WAIT-FOR-SIPI, and as noted by the
SDM in Vol3 27.7 "Special Features of VM Entry":

  If VM entry ends with the logical processor in an inactive activity state,
  the VM entry generates any special bus cycle that is normally generated when
  that activity state is entered from the active state.

Also,

  Some activity states unconditionally block certain events.

I.e. A VMEntry with ACTIVITY=SHUTDOWN will initiate a platform reset, while a
VMEntry with ACTIVITY=WAIT-FOR-SIPI will really block everything other than
SIPIs.

Both of these activity states are for the TXT ACM to use, not for regular
hypervisors, and Xen doesn't support dropping the HLT intercept either.

There are two paths in Xen which operate on ACTIVITY_STATE.

1) The vmx_{get,set}_nonreg_state() helpers for VM-Fork.

   As regular VMs can't use any inactivity states, this is just duplicating
   the 0 from construct_vmcs().  Retain the ability to query activity_state,
   but crash the domain on any attempt to set an inactivity state.

2) Nested virt, because of ACTIVITY_STATE in vmcs_gstate_field[].

   Explicitly hide the inactivity states in the guest's view of MSR_VMX_MISC,
   and remove ACTIVITY_STATE from vmcs_gstate_field[].

   In virtual_vmentry(), we should trigger a VMEntry failure for the use of
   any inactivity states, but there's no support for that in the code at all
   so leave a TODO for when we finally start working on nested-virt in
   earnest.

Reported-by: Reima Ishii <ishiir@g.ecc.u-tokyo.ac.jp>
Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
---
CC: Jan Beulich <JBeulich@suse.com>
CC: Roger Pau Monné <roger.pau@citrix.com>
CC: Wei Liu <wl@xen.org>
CC: Jun Nakajima <jun.nakajima@intel.com>
CC: Kevin Tian <kevin.tian@intel.com>
CC: Tamas K Lengyel <tamas@tklengyel.com>
CC: Reima ISHII <ishiir@g.ecc.u-tokyo.ac.jp>
CC: Takahiro Shinagawa <shina@ecc.u-tokyo.ac.jp>
CC: George Dunlap <george.dunlap@citrix.com>

v2:
 * Retain the ability to query ACTIVITY_STATE in the vmfork helpers, but veto
   attempts to set an inactivity state.

Note, entirely untested.
---
 xen/arch/x86/hvm/vmx/vmx.c              | 5 ++++-
 xen/arch/x86/hvm/vmx/vvmx.c             | 9 +++++++--
 xen/arch/x86/include/asm/hvm/vmx/vmcs.h | 1 +
 3 files changed, 12 insertions(+), 3 deletions(-)

diff --git a/xen/arch/x86/hvm/vmx/vmx.c b/xen/arch/x86/hvm/vmx/vmx.c
index a85394232a23..fd580bd5625f 100644
--- a/xen/arch/x86/hvm/vmx/vmx.c
+++ b/xen/arch/x86/hvm/vmx/vmx.c
@@ -1551,7 +1551,10 @@ static void cf_check vmx_set_nonreg_state(struct vcpu *v,
 {
     vmx_vmcs_enter(v);
 
-    __vmwrite(GUEST_ACTIVITY_STATE, nrs->vmx.activity_state);
+    if ( nrs->vmx.activity_state )
+        domain_crash(v->domain, "Attempt to set activity_state %#lx\n",
+                     nrs->vmx.activity_state);
+
     __vmwrite(GUEST_INTERRUPTIBILITY_INFO, nrs->vmx.interruptibility_info);
     __vmwrite(GUEST_PENDING_DBG_EXCEPTIONS, nrs->vmx.pending_dbg);
 
diff --git a/xen/arch/x86/hvm/vmx/vvmx.c b/xen/arch/x86/hvm/vmx/vvmx.c
index f14053e7637a..ece0aa243a73 100644
--- a/xen/arch/x86/hvm/vmx/vvmx.c
+++ b/xen/arch/x86/hvm/vmx/vvmx.c
@@ -899,7 +899,10 @@ static const u16 vmcs_gstate_field[] = {
     GUEST_LDTR_AR_BYTES,
     GUEST_TR_AR_BYTES,
     GUEST_INTERRUPTIBILITY_INFO,
+    /*
+     * ACTIVITY_STATE is handled specially.
     GUEST_ACTIVITY_STATE,
+     */
     GUEST_SYSENTER_CS,
     GUEST_PREEMPTION_TIMER,
     /* natural */
@@ -1200,6 +1203,8 @@ static void virtual_vmentry(struct cpu_user_regs *regs)
     nvcpu->nv_vmentry_pending = 0;
     nvcpu->nv_vmswitch_in_progress = 1;
 
+    /* TODO: Fail VMentry for GUEST_ACTIVITY_STATE != 0 */
+
     /*
      * EFER handling:
      * hvm_set_efer won't work if CR0.PG = 1, so we change the value
@@ -2316,8 +2321,8 @@ int nvmx_msr_read_intercept(unsigned int msr, u64 *msr_content)
         data = hvm_cr4_guest_valid_bits(d);
         break;
     case MSR_IA32_VMX_MISC:
-        /* Do not support CR3-target feature now */
-        data = host_data & ~VMX_MISC_CR3_TARGET;
+        /* Do not support CR3-targets or activity states. */
+        data = host_data & ~(VMX_MISC_CR3_TARGET | VMX_MISC_ACTIVITY_MASK);
         break;
     case MSR_IA32_VMX_EPT_VPID_CAP:
         data = nept_get_ept_vpid_cap();
diff --git a/xen/arch/x86/include/asm/hvm/vmx/vmcs.h b/xen/arch/x86/include/asm/hvm/vmx/vmcs.h
index a9afdffae547..5ec474c79c32 100644
--- a/xen/arch/x86/include/asm/hvm/vmx/vmcs.h
+++ b/xen/arch/x86/include/asm/hvm/vmx/vmcs.h
@@ -277,6 +277,7 @@ extern u32 vmx_secondary_exec_control;
 #define VMX_VPID_INVVPID_SINGLE_CONTEXT_RETAINING_GLOBAL 0x80000000000ULL
 extern u64 vmx_ept_vpid_cap;
 
+#define VMX_MISC_ACTIVITY_MASK                  0x000001c0
 #define VMX_MISC_PROC_TRACE                     0x00004000
 #define VMX_MISC_CR3_TARGET                     0x01ff0000
 #define VMX_MISC_VMWRITE_ALL                    0x20000000
-- 
2.30.2



From xen-devel-bounces@lists.xenproject.org Thu Jan 11 23:24:51 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 11 Jan 2024 23:24:51 +0000
Received: from list by lists.xenproject.org with outflank-mailman.666575.1037303 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rO4Pm-0001pa-LY; Thu, 11 Jan 2024 23:24:46 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 666575.1037303; Thu, 11 Jan 2024 23:24:46 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rO4Pm-0001pT-Ia; Thu, 11 Jan 2024 23:24:46 +0000
Received: by outflank-mailman (input) for mailman id 666575;
 Thu, 11 Jan 2024 23:24:45 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=ifVr=IV=raptorengineering.com=sanastasio@srs-se1.protection.inumbo.net>)
 id 1rO4Pl-0001pN-8K
 for xen-devel@lists.xenproject.org; Thu, 11 Jan 2024 23:24:45 +0000
Received: from raptorengineering.com (mail.raptorengineering.com
 [23.155.224.40]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 992a2a26-b0d8-11ee-9b0f-b553b5be7939;
 Fri, 12 Jan 2024 00:24:43 +0100 (CET)
Received: from localhost (localhost [127.0.0.1])
 by mail.rptsys.com (Postfix) with ESMTP id ED5DE82853FF;
 Thu, 11 Jan 2024 17:24:41 -0600 (CST)
Received: from mail.rptsys.com ([127.0.0.1])
 by localhost (vali.starlink.edu [127.0.0.1]) (amavisd-new, port 10032)
 with ESMTP id PwSK3NfgIfZ6; Thu, 11 Jan 2024 17:24:41 -0600 (CST)
Received: from localhost (localhost [127.0.0.1])
 by mail.rptsys.com (Postfix) with ESMTP id 5868E8285585;
 Thu, 11 Jan 2024 17:24:41 -0600 (CST)
Received: from mail.rptsys.com ([127.0.0.1])
 by localhost (vali.starlink.edu [127.0.0.1]) (amavisd-new, port 10026)
 with ESMTP id dmVeHTwLH0M1; Thu, 11 Jan 2024 17:24:41 -0600 (CST)
Received: from raptor-ewks-026.2lan (5.edge.rptsys.com [23.155.224.38])
 by mail.rptsys.com (Postfix) with ESMTPSA id C59C982853FF;
 Thu, 11 Jan 2024 17:24:40 -0600 (CST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 992a2a26-b0d8-11ee-9b0f-b553b5be7939
DKIM-Filter: OpenDKIM Filter v2.10.3 mail.rptsys.com 5868E8285585
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
	d=raptorengineering.com; s=B8E824E6-0BE2-11E6-931D-288C65937AAD;
	t=1705015481; bh=H90w1xQrYjxfrgBat3wPt+rF605mPXis1SY2TqBYf/k=;
	h=From:To:Date:Message-Id:MIME-Version;
	b=doJwMMy0hYmf9Z2H/lqxkhrupR8KbJral+2ulD03XPxTdJY+3Gs/Mqd47sq4bjPhf
	 AMrVbRJ0SqpJ8DqUnReDWZOjiTogtdxyQ3zfSBZAMBThjSCtO56i99oVqHPDaHTy75
	 qiBMqNFrhG8wuZGtD4lOOSeqCOfFeJY04QzxSB4g=
X-Virus-Scanned: amavisd-new at rptsys.com
From: Shawn Anastasio <sanastasio@raptorengineering.com>
To: xen-devel@lists.xenproject.org
Cc: Timothy Pearson <tpearson@raptorengineering.com>,
	Shawn Anastasio <sanastasio@raptorengineering.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Julien Grall <julien@xen.org>,
	Bertrand Marquis <bertrand.marquis@arm.com>,
	Michal Orzel <michal.orzel@amd.com>,
	Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>
Subject: [PATCH v2] xen/arm: bootfdt: Harden handling of malformed mem reserve map
Date: Thu, 11 Jan 2024 17:24:22 -0600
Message-Id: <20240111232422.2610495-1-sanastasio@raptorengineering.com>
X-Mailer: git-send-email 2.30.2
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit

The early_print_info routine in bootfdt.c incorrectly stores the result
of a call to fdt_num_mem_rsv() in an unsigned int, which results in the
negative error code being interpreted incorrectly in a subsequent loop
in the case where the device tree is malformed. Fix this by properly
checking the return code for an error and calling panic().

Signed-off-by: Shawn Anastasio <sanastasio@raptorengineering.com>
---
v2:
  - panic() if the fdt_num_mem_rsv() call fails
  - Reword commit message to clarify that the error condition can only
  be triggered by a malformed device tree
  - Rebase to standalone patch instead of a part of my patch series
  '[PATCH v2 0/7] Early Boot Allocation on Power'

---
 xen/arch/arm/bootfdt.c | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/xen/arch/arm/bootfdt.c b/xen/arch/arm/bootfdt.c
index 1cbac3cb2a..35dbdf3384 100644
--- a/xen/arch/arm/bootfdt.c
+++ b/xen/arch/arm/bootfdt.c
@@ -463,7 +463,8 @@ static void __init early_print_info(void)
     struct meminfo *mem_resv = &bootinfo.reserved_mem;
     struct bootmodules *mods = &bootinfo.modules;
     struct bootcmdlines *cmds = &bootinfo.cmdlines;
-    unsigned int i, j, nr_rsvd;
+    unsigned int i, j;
+    int nr_rsvd;

     for ( i = 0; i < mi->nr_banks; i++ )
         printk("RAM: %"PRIpaddr" - %"PRIpaddr"\n",
@@ -478,6 +479,9 @@ static void __init early_print_info(void)
                 boot_module_kind_as_string(mods->module[i].kind));

     nr_rsvd = fdt_num_mem_rsv(device_tree_flattened);
+    if ( nr_rsvd < 0 )
+        panic("Parsing FDT memory reserve map failed (%d)\n", nr_rsvd);
+
     for ( i = 0; i < nr_rsvd; i++ )
     {
         paddr_t s, e;
--
2.30.2



From xen-devel-bounces@lists.xenproject.org Thu Jan 11 23:25:55 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 11 Jan 2024 23:25:55 +0000
Received: from list by lists.xenproject.org with outflank-mailman.666581.1037312 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rO4Qs-0002PB-1k; Thu, 11 Jan 2024 23:25:54 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 666581.1037312; Thu, 11 Jan 2024 23:25:54 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rO4Qr-0002P4-VI; Thu, 11 Jan 2024 23:25:53 +0000
Received: by outflank-mailman (input) for mailman id 666581;
 Thu, 11 Jan 2024 23:25:53 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=wd/Q=IV=kernel.org=sstabellini@srs-se1.protection.inumbo.net>)
 id 1rO4Qr-0002Ow-5T
 for xen-devel@lists.xenproject.org; Thu, 11 Jan 2024 23:25:53 +0000
Received: from ams.source.kernel.org (ams.source.kernel.org [145.40.68.75])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id c27cbd42-b0d8-11ee-98f0-6d05b1d4d9a1;
 Fri, 12 Jan 2024 00:25:51 +0100 (CET)
Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58])
 by ams.source.kernel.org (Postfix) with ESMTP id 3EAB0B8217F;
 Thu, 11 Jan 2024 23:25:51 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 1FF37C433C7;
 Thu, 11 Jan 2024 23:25:49 +0000 (UTC)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: c27cbd42-b0d8-11ee-98f0-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
	s=k20201202; t=1705015550;
	bh=O6zWO/7B8m/R3qlw5KF+MLUk4ZsCs+Zrzh03eQXSYnk=;
	h=Date:From:To:cc:Subject:In-Reply-To:References:From;
	b=BnzfF0i5aNpLqjC5OMMzJpWb+pE6r6OntsIfh0MACy9mkD518kwdAjUnaWj35YkVk
	 KCFJfscI2cXwvdSSGbfeWaDrMn5iITdK8GJLOwdWMHu2/zjWGDQ0m+5yGUCqxxwDGP
	 CNbGAIW7R29Sw4rbwheaaJ6glxor2pfaQP/OFFdf4LZqUkYNBPeCN4W91SyysfvAq/
	 OfHfp1LuifMszkm49HnBjntPpu83hFWgo0s1iOLIZGc3K8ElgTGBYCi9IOWy7pFdwI
	 iDSQ65RhhP+0e/xqNG5Q3d4gh3GA6kF9xilO4VYDRXLhOW/k055lA7Zwv/jCPVq0QI
	 /Tia0tWtFrMFw==
Date: Thu, 11 Jan 2024 15:25:47 -0800 (PST)
From: Stefano Stabellini <sstabellini@kernel.org>
X-X-Sender: sstabellini@ubuntu-linux-20-04-desktop
To: Jan Beulich <jbeulich@suse.com>
cc: Stefano Stabellini <sstabellini@kernel.org>, 
    Carlo Nonato <carlo.nonato@minervasys.tech>, Julien Grall <julien@xen.org>, 
    Bertrand Marquis <bertrand.marquis@arm.com>, 
    Michal Orzel <michal.orzel@amd.com>, 
    Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>, 
    Andrew Cooper <andrew.cooper3@citrix.com>, 
    George Dunlap <george.dunlap@citrix.com>, Wei Liu <wl@xen.org>, 
    Marco Solieri <marco.solieri@minervasys.tech>, 
    xen-devel@lists.xenproject.org
Subject: Re: [PATCH v5 09/13] xen: add cache coloring allocator for domains
In-Reply-To: <0f7c4c1a-5c20-4e89-bef9-2ebd02c0b141@suse.com>
Message-ID: <alpine.DEB.2.22.394.2401111525320.3675@ubuntu-linux-20-04-desktop>
References: <20240102095138.17933-1-carlo.nonato@minervasys.tech> <20240102095138.17933-10-carlo.nonato@minervasys.tech> <7fbe9526-60cf-4844-8b48-58ab69ec1b29@suse.com> <alpine.DEB.2.22.394.2401091637160.3675@ubuntu-linux-20-04-desktop>
 <0f7c4c1a-5c20-4e89-bef9-2ebd02c0b141@suse.com>
User-Agent: Alpine 2.22 (DEB 394 2020-01-19)
MIME-Version: 1.0
Content-Type: text/plain; charset=US-ASCII

On Wed, 10 Jan 2024, Jan Beulich wrote:
> On 10.01.2024 01:46, Stefano Stabellini wrote:
> > On Tue, 9 Jan 2024, Jan Beulich wrote:
> >> On 02.01.2024 10:51, Carlo Nonato wrote:
> >>> This commit adds a new memory page allocator that implements the cache
> >>> coloring mechanism. The allocation algorithm enforces equal frequency
> >>> distribution of cache partitions, following the coloring configuration of a
> >>> domain. This allows an even utilization of cache sets for every domain.
> >>>
> >>> Pages are stored in a color-indexed array of lists. Those lists are filled
> >>> by a simple init function which computes the color of each page.
> >>> When a domain requests a page, the allocator extract the page from the list
> >>> with the maximum number of free pages between those that the domain can
> >>> access, given its coloring configuration.
> >>>
> >>> The allocator can only handle requests of order-0 pages. This allows for
> >>> easier implementation and since cache coloring targets only embedded systems,
> >>> it's assumed not to be a major problem.
> >>
> >> I'm curious about the specific properties of embedded systems that makes
> >> the performance implications of deeper page walks less of an issue for
> >> them.
> > 
> > I think Carlo meant to say that embedded systems tend to have a smaller
> > amount of RAM (our boards today have 4-8GB of total memory). So higher
> > level allocations (2MB/1GB) might not be possible.
> > 
> > Also, domains that care about interrupt latency tend to be RTOSes (e.g.
> > Zephyr, FreeRTOS) and RTOSes are happy to run with less than 1MB of
> > total memory available. This is so true that I vaguely remember hitting
> > a bug in xl/libxl when I tried to create a domain with 128KB of memory. 
> > 
> > 
> >> Nothing is said about address-constrained allocations. Are such entirely
> >> of no interest to domains on Arm, not even to Dom0 (e.g. for filling
> >> Linux'es swiotlb)?
> > 
> > Cache coloring is useful if you can use an IOMMU with all the
> > dma-capable devices. If that is not the case, then not even Dom0 would
> > be able to boot with cache coloring enabled (because it wouldn't be 1:1
> > mapped).
> > 
> > On ARM we only support booting Dom0 1:1 mapped, or not-1:1-mapped but
> > relying on the IOMMU.
> 
> So another constraint to be enforced both at the Kconfig level and at
> runtime?

Yeah potentially


> That said, Linux'es swiotlb allocation can't know whether an
> IOMMU is in use by Xen.

Well, not exactly but we have XENFEAT_direct_mapped and
XENFEAT_not_direct_mapped, that is how normally the kernel knows how to
behave


> If something like that was done in a Dom0, the
> respective allocations still wouldn't really work correctly (and the
> kernel may or may not choke on this).
 


From xen-devel-bounces@lists.xenproject.org Fri Jan 12 00:35:48 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 12 Jan 2024 00:35:48 +0000
Received: from list by lists.xenproject.org with outflank-mailman.666587.1037322 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rO5WK-0007Vg-95; Fri, 12 Jan 2024 00:35:36 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 666587.1037322; Fri, 12 Jan 2024 00:35:36 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rO5WK-0007VZ-6Y; Fri, 12 Jan 2024 00:35:36 +0000
Received: by outflank-mailman (input) for mailman id 666587;
 Fri, 12 Jan 2024 00:35:34 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=KDsp=IW=kernel.org=sstabellini@srs-se1.protection.inumbo.net>)
 id 1rO5WI-0007VT-Qn
 for xen-devel@lists.xenproject.org; Fri, 12 Jan 2024 00:35:34 +0000
Received: from sin.source.kernel.org (sin.source.kernel.org
 [2604:1380:40e1:4800::1])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 7cd885f3-b0e2-11ee-9b0f-b553b5be7939;
 Fri, 12 Jan 2024 01:35:31 +0100 (CET)
Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58])
 by sin.source.kernel.org (Postfix) with ESMTP id E0606CE1D6F;
 Fri, 12 Jan 2024 00:35:25 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id B5EA3C433C7;
 Fri, 12 Jan 2024 00:35:23 +0000 (UTC)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 7cd885f3-b0e2-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
	s=k20201202; t=1705019725;
	bh=GRV66zm4ivMh+EQxjFowUDR+P94FxzumS/2bUb/lpfM=;
	h=Date:From:To:cc:Subject:In-Reply-To:References:From;
	b=kGW8kKdouJdzpBXQBnPvDM42IVSdT7TW84d2QVvCF77ZqzIuV1YU5JiVI4i6tVaB8
	 +MvTV2Q8GkbuXhlf1YgSLSTl73DwmPZt4d8UgKvvc+dLUX+a8KltXl2/P8Sm8X/xsy
	 IrtFGMgfrqO3jhHfKrxOFIVlcoJuXtsEY3/VaX1qXznJHQG9SnS3P6Qu1zB+dwgu0A
	 w+DVIXwgIflLmsKuChaMYITxar41PoWq5EQepDnWwuMp7ER7UqJsLSMjBT31q4mHCH
	 t/Ovjz1y2skqrFtJHo1Dqw8I48rPaVCSjbetaMrWFAXVHpzYOlNjcLcnMOfisP4aAe
	 NpuIJ1R9zIiSg==
Date: Thu, 11 Jan 2024 16:35:22 -0800 (PST)
From: Stefano Stabellini <sstabellini@kernel.org>
X-X-Sender: sstabellini@ubuntu-linux-20-04-desktop
To: "Andrei Cherechesu (OSS)" <andrei.cherechesu@oss.nxp.com>
cc: Stefano Stabellini <sstabellini@kernel.org>, 
    "viresh.kumar@linaro.org" <viresh.kumar@linaro.org>, 
    "olekstysh@gmail.com" <olekstysh@gmail.com>, Julien Grall <julien@xen.org>, 
    "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>, 
    Andrei Cherechesu <andrei.cherechesu@nxp.com>, vikram.garhwal@amd.com, 
    Bertrand.Marquis@arm.com, michal.orzel@amd.com, Artem_Mygaiev@epam.com
Subject: Re: [VirtIO] Support for various devices in Xen
In-Reply-To: <PA4PR04MB95655F653BBFE3A70A8CD0FBF9682@PA4PR04MB9565.eurprd04.prod.outlook.com>
Message-ID: <alpine.DEB.2.22.394.2401111627360.3675@ubuntu-linux-20-04-desktop>
References: <PA4PR04MB95655F653BBFE3A70A8CD0FBF9682@PA4PR04MB9565.eurprd04.prod.outlook.com>
User-Agent: Alpine 2.22 (DEB 394 2020-01-19)
MIME-Version: 1.0
Content-Type: multipart/mixed; BOUNDARY="8323329-964746296-1705019297=:3675"
Content-ID: <alpine.DEB.2.22.394.2401111628250.3675@ubuntu-linux-20-04-desktop>

  This message is in MIME format.  The first part should be readable text,
  while the remaining parts are likely unreadable without MIME-aware tools.

--8323329-964746296-1705019297=:3675
Content-Type: text/plain; CHARSET=UTF-8
Content-Transfer-Encoding: 8BIT
Content-ID: <alpine.DEB.2.22.394.2401111628251.3675@ubuntu-linux-20-04-desktop>

Hi Andrei,

Great that you are working with Xen and virtio. We at AMD are very
interested in it as well.

I'll let Artem (CCed) and his team comment about the xen-troops
repository.

I can share that from our side we are working toward adding complete
support for using QEMU as virtio-backends provider. Vikram (CCed)
managed to get virtio-net to work with the backend in QEMU. He should be
able to provide instructions. We want to get those patches upstream in
Xen and QEMU as soon as possible.

The libxl changes are lagging behind a bit and you might have to use
device_model_args to enable virtio backends in QEMU.

For SCMI, I'll let Bertrand (CCed) comment.

Cheers,

Stefano


On Thu, 11 Jan 2024, Andrei Cherechesu (OSS) wrote:
> Hello,
> 
> As I've mentioned in previous discussion threads in the xen-devel
> community, we are running Xen 4.17 (uprev to 4.18 in progress) on NXP
> S32G automotive processors (Cortex-A53 cores) and we wanted to know more
> about the support for various VirtIO device types in Xen.
> 
> In the Xen 4.17 release notes, the VirtIO standalone backends mentioned
> as supported and tested are: virtio-disk, virtio-net, virtio-i2c and
> virtio-gpio.
> 
> However, we've only managed to successfully set up and try some
> use-cases with the virtio-disk standalone backend [0] (which Olexandr
> provided) based on the virtio-mmio transport.
> 
> As such, we have a few questions, which we haven't been able to figure
> out from the mailing list discussions and/or code:
>     1. Are there any plans for the virtio-disk repo to have a stable
>     version? Is it going to be long-term hosted and maintained in the
>     xen-troops github repo? Or was it just an one-time PoC implementation
> 
>     and the strategy for future VirtIO devices will be based on a more generic
> 
>     approach (i.e., without need for a specific standalone app)?
> 
> 
>     2. With regards to the other backends, we want to try out and provide PV
> 
>     networking to a DomU based on virtio-net, but we haven't found any available
> 
>     resources for it (e.g., the standalone backend implementation if needed for
> 
>     control plane, configuration examples, presentations, demos, docs). Does it
> 
>     rely on the QEMU virtio-net or vhost implementation? Are there any examples
> 
>     on how to set it up? Any required Xen/Linux Kernel/QEMU versions?
> 
> 
>     3. What other VirtIO device types are there planned to be supported in Xen?
> 
>     I'm supposing libxl will also need changes to accomodate new configuration
> 
>     parameters for each of them. Or is there something I'm missing?
> 
> 
>     4. Also, while we're at it, are there any plans regarding SCMI
>     awareness for Xen (e.g., SCMI Mediator - where the RFC thread from 2022
> 
>     seems discontinued)? Or is the preferred approach for sharing SCMI access
> 
>     to guests through virtio-scmi?
> 
> Thank you very much for the support, once again, and we're also looking
> forward to the progress on the rust-vmm initiative.
> 
> Regards,
> Andrei Cherechesu,
> NXP Semiconductors
> 
> [0] https://github.com/xen-troops/virtio-disk
> 
> 
> 
--8323329-964746296-1705019297=:3675--


From xen-devel-bounces@lists.xenproject.org Fri Jan 12 00:57:15 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 12 Jan 2024 00:57:15 +0000
Received: from list by lists.xenproject.org with outflank-mailman.666592.1037333 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rO5rB-0002ao-08; Fri, 12 Jan 2024 00:57:09 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 666592.1037333; Fri, 12 Jan 2024 00:57:08 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rO5rA-0002ah-Sn; Fri, 12 Jan 2024 00:57:08 +0000
Received: by outflank-mailman (input) for mailman id 666592;
 Fri, 12 Jan 2024 00:57:08 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=qME3=IW=amd.com=vikram.garhwal@srs-se1.protection.inumbo.net>)
 id 1rO5rA-0002ab-94
 for xen-devel@lists.xenproject.org; Fri, 12 Jan 2024 00:57:08 +0000
Received: from NAM12-DM6-obe.outbound.protection.outlook.com
 (mail-dm6nam12on20601.outbound.protection.outlook.com
 [2a01:111:f403:2417::601])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 80349abe-b0e5-11ee-98f0-6d05b1d4d9a1;
 Fri, 12 Jan 2024 01:57:05 +0100 (CET)
Received: from MW3PR12MB4409.namprd12.prod.outlook.com (2603:10b6:303:2d::23)
 by DS7PR12MB5984.namprd12.prod.outlook.com (2603:10b6:8:7f::18) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7159.23; Fri, 12 Jan
 2024 00:57:00 +0000
Received: from MW3PR12MB4409.namprd12.prod.outlook.com
 ([fe80::5aa3:9748:d8d0:87e1]) by MW3PR12MB4409.namprd12.prod.outlook.com
 ([fe80::5aa3:9748:d8d0:87e1%5]) with mapi id 15.20.7181.019; Fri, 12 Jan 2024
 00:56:59 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 80349abe-b0e5-11ee-98f0-6d05b1d4d9a1
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=NmAbkXN3MLw4K4vAhMNe6nFobkvhvydJqI+7XmLPWYmgoaVwDComIAO6tSSbw25A7bpDu3Cq4VDISFEMp+q2VSWanCXbz0axlEL9RkvHTZPi5mNGV9/MXGU1I9KUf69ONDsWRDZzPVzZr/fNOpNXJIORtl7iEszN3odLxhl6plEl24FYxuV2xe7PWvLSakMhl1i2M5dF8RoH6J+EIHF+brjAOkQYDWsAKcqj7ggHmJk7O5r2X7ZICcI4uFlLngU95bbh2pyhLlBWzZbRZJvvRlSEh37KH69Awt9+p1zkGM1+ycH4mKx0EtB/tZA5EsIPPBHHniJLQAzHyuF5h2+wsA==
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=3yqcE9/4t3fsWghOpIdyTxV9b2TK+2b50BVGqPPikeY=;
 b=P/zzmEyAg6Iqn3JpRdVkGPfY/w6RQTsO5juO+mJrYlyfKV1l68HBKFXoJs2jjIPQ19AVSSXDeFASjIs7qQd0IJlVyLsUkUcKnLpOHvQwiF/E/EIJf9KsKyTgbViFezlpJPV18OG1DXWpsqOpEwW+yI3AxVteOzn1BXz4YZUfCELnvYdjDoyGs0cOqszmU959lno5c24GfLNNRd/+NPNxLKYAJXNArRZnf+sXWDu/Sk58vSfPMbw3JSIjNBdpziqxVuRG1U2EVpRaGzsJHc6yGgyzePmjMImvumXAM7UYmamcmq8DlTJKhl+5JASBxD1PZsKbByoq2hn6452PTZnybg==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=amd.com; dmarc=pass action=none header.from=amd.com; dkim=pass
 header.d=amd.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=3yqcE9/4t3fsWghOpIdyTxV9b2TK+2b50BVGqPPikeY=;
 b=RA13C2rSWy4bBT4szjsdkeh4mAngqtMJnIPX3kXv1UcCkL6gdTVfGOI32Jo4rwEpBv9Ehqxz773qhRAXpdKCQwBZ5YlR1abWxHlZCSYY+F+uCInjyH6JzJN+K/j6STAvn4U5N9DnLQyCfDhIvFI3Ju+GOV6iFVJyhoinI72smcg=
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=amd.com;
Date: Thu, 11 Jan 2024 16:56:53 -0800
From: Vikram Garhwal <vikram.garhwal@amd.com>
To: Stefano Stabellini <sstabellini@kernel.org>
Cc: "Andrei Cherechesu (OSS)" <andrei.cherechesu@oss.nxp.com>,
	"viresh.kumar@linaro.org" <viresh.kumar@linaro.org>,
	"olekstysh@gmail.com" <olekstysh@gmail.com>,
	Julien Grall <julien@xen.org>,
	"xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>,
	Andrei Cherechesu <andrei.cherechesu@nxp.com>,
	Bertrand.Marquis@arm.com, michal.orzel@amd.com,
	Artem_Mygaiev@epam.com
Subject: Re: [VirtIO] Support for various devices in Xen
Message-ID: <ZaCOVSuEJtsAj9G5@amd.com>
References: <PA4PR04MB95655F653BBFE3A70A8CD0FBF9682@PA4PR04MB9565.eurprd04.prod.outlook.com>
 <alpine.DEB.2.22.394.2401111627360.3675@ubuntu-linux-20-04-desktop>
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <alpine.DEB.2.22.394.2401111627360.3675@ubuntu-linux-20-04-desktop>
X-ClientProxiedBy: SJ0PR05CA0159.namprd05.prod.outlook.com
 (2603:10b6:a03:339::14) To MW3PR12MB4409.namprd12.prod.outlook.com
 (2603:10b6:303:2d::23)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: MW3PR12MB4409:EE_|DS7PR12MB5984:EE_
X-MS-Office365-Filtering-Correlation-Id: 8fd2c670-4e23-4289-6730-08dc130961e5
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam: BCL:0;
X-Microsoft-Antispam-Message-Info:
	GTWpPctJQWsqbHvpWNzQvLsApNPiiHxxoiieko6s3T8tYz4dtxXhNcsyyQZuZZDu8wEGD46xn+MX19Ls85XF4pLzNkY+NhSqv4KeCwasZS//CQeoYAvCt3LXyjcS7/67F1Gl+aKl98dGhLj1+tMdA4RCPK4NaHFB+IGKnCbQ0NDSuBZJEUQJ5Ti6QcIKin6suzuAhgbSCxlEBaRzgYrMvZW3znVEVMhCN+VbXX9BrQkrfgl/tKgcllUuFhmtrn5U7z+H5B55iXGX8AOOGKDibXAeIVkoaZ8L92laI/lJvwM4fr4GD6v29Zj3HHiAoqnED1zTqIFDYdbhrHuum58Azz6GYbG9iKxkUrXUns1pFElhgKvow83JlCf3yCnMrRZhJNU9U3ylqYzD8X8m1d8zsdAGmyrvbJTAUzah675TN02d45iBnN1jg8ufHGWKJpQHf2kXntk3jTqg2oH+IreSBCWfG4Pq1CDR3pACxiKJh5R7zXtJZLJKTNVxWP5lV7a94AgHZcDhmqS+36tIdx9vCKh1AudiUFGUzFMwh0iK+WdeBh4NNq5K/MKV/sc99tfigxgi5kaLEbp/Stm2qxp7Mg==
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:MW3PR12MB4409.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230031)(366004)(39860400002)(396003)(136003)(346002)(376002)(230922051799003)(1800799012)(186009)(64100799003)(451199024)(41300700001)(36756003)(86362001)(2906002)(38100700002)(83380400001)(478600001)(2616005)(26005)(6666004)(66476007)(6506007)(66946007)(316002)(54906003)(66556008)(6486002)(966005)(6916009)(5660300002)(8936002)(8676002)(4326008)(44832011)(6512007);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?ZS95MlVpckJTTmhVYnVvSUNBOXZ2cWh1VWJnRDdBWHNMVGt4NWdxVHJMUVBn?=
 =?utf-8?B?L1pqemFqRGN1S1NrYW9LRTlVMk4xQzVwYUtMcGM3MFVFYnUxQUluTzlmRjc2?=
 =?utf-8?B?cHd0UG1JbGZveDVKYU1QUE9mMS9yUUlobzFtOVV0THdMczFaNVU5bUQwMEgr?=
 =?utf-8?B?bzMwNEhTNk1meTlKZnFsVnFqZml0QXZOV2cwaS9PK2s3ZEp5T0huMkJaVDNI?=
 =?utf-8?B?Zzlsd09EcS9DcUZ0cDNCMlZtbmpGTGEvcVZaWCt6azNHM1NPYyt4Y2dLUEVO?=
 =?utf-8?B?RTlOODNVT2lmWVVSWWtEeG82S1k4M243SlB2djhVZWw2eUZVeVVYbUJCMU5N?=
 =?utf-8?B?TVJFaENCMmRaNVRwRWE0UmoveGV3QzBOdDZpaExGMHpyd29KajJQU2V0L0JY?=
 =?utf-8?B?T3Y1bUZYdUxXVHQ4cFhUN1lyVVNhdDVZZ09uSVh4QjFnRVVuWitZaVBiY3E0?=
 =?utf-8?B?ODJ4Q283ZE45cW8ydWxLWVZmZjdqQWhmQTNHeVFnZDF4dkxnVkE2U0ZURHFB?=
 =?utf-8?B?MU1mZENtNEtOYXNmV21vMGNjejRNUDVFeHZyamNhWHFsTVZ5WnpYeVhCZjVh?=
 =?utf-8?B?TXBObWtJdDA5VVNyOWFFbnZmSEE2T2lGRFMrODNUSTFyTDNJTVBoQkY5TU91?=
 =?utf-8?B?VEVPM20xdGFqb1RVZzk2RTBRbUtNUm4zYy9nQVdTbEY0U3dQaWg1Z3Q4Rk5h?=
 =?utf-8?B?QWIvWnpId01jSm14ekRQd1paSjVCQmdrRU9sdm90ZTdMSWk2d3R3dmR0b0tE?=
 =?utf-8?B?dFVDelI3N1NnSFNkK2lGU0NoUDlGeFY5R1JZNTQwN2RPVldTTEV2NnVMQ2Z1?=
 =?utf-8?B?bHBSdXBac1ZjYmxzclVUSjhWMTVOL3pKRWk2VUFvdGg5WlozZEFyY05vYjFx?=
 =?utf-8?B?MW5iWWlDWGRMTXMrekhvWUdsNHh2Z01POVFKQUxmSS83YWEySUwzTDJSTVdr?=
 =?utf-8?B?RHBFaDg5RTBNSXhxU05qcVNMcm10MzF0dWFtM0ZXUVN4bHcrVTlJZzNGdHM5?=
 =?utf-8?B?d2xHOGpwZDZkZWxncmVYc0dFY2ZIQVEzeDZraVJkVXJBRU5DOFQ0R1RXemtG?=
 =?utf-8?B?RmZMUktQQXgvYTV0aWNObXlhK1paaVhFU1dlWVc4elBFU2Y5Q2N5VnRJc2dv?=
 =?utf-8?B?a09HTEU5Y0hnWVc1UmkwMndhT0RSZEVaK3NyNStkS2FEQnAzMjhFVEZnZmhM?=
 =?utf-8?B?bUxzMGFQbHFtUFFkb0RXR1QxRGI4UWlxOWMvY3pSVmY5bUtOOGp6OWpGQ0tR?=
 =?utf-8?B?Y0U4YmtmdlBsdUlkNVJqemhDZmpZK0hTRDJ1SDI3MEQxc1lWdGpZVmVFYlE4?=
 =?utf-8?B?RkxkUHVWOUY3SDRhd3Y2ZXpvUnVkOUVZQ05ZM0h2WU5CT2NiZDN1MWx5VG1t?=
 =?utf-8?B?eThvS2xIcDluVG9ua09aM1l3b1c4eUtYVnlRSlN5OXJ0UGZFL0swZi9FUGFi?=
 =?utf-8?B?OVNidncvNlJqVTNiTGxhVU9RUGx6ak5VSVppeTFvQWJ2L2FDUW9NUm9naFhE?=
 =?utf-8?B?Z3FRRENFbmh0ZHRkNGc1OXFHS2NqOENUSkJZM2FIS1dRQnZ2cnJUcFBRWE9x?=
 =?utf-8?B?R0pXak1VTTkxcWJTNllUVWhhQnlFM1Z2RVVGM3R1SVB1UXh0bFprVGsyb2FV?=
 =?utf-8?B?QmRYcjMwbEZYYzl5bVBST3FnNmVoL3BqQUxKdzI0VUU4MU9NZXR2L2djSzBO?=
 =?utf-8?B?QVJBTTk1TmZaOFFnK1VWbWE4eXRVdzBhTVBkaC9wcm1aeWFlVzg5RWJFMTBi?=
 =?utf-8?B?QkdKWUQwU2t4aGFJcWF1cGZ6UDBocCtpYi9MaCtXN1prT0VYR3Yra3BlMWJh?=
 =?utf-8?B?NzIydnpwTGpaWm1VSVJYVGc4MFZDK1pXeFAzNHB0ckNqLzJBaWMwZFdnRlN1?=
 =?utf-8?B?eTF1b1FZeVVEWmtSTGxDbHdoWklSN1d5T2xNb29SdURpTDRhOXZCMEpoaE8r?=
 =?utf-8?B?aXlXa0R3TmdLOTE1V2IwaGJmT3Z0Q0Y3anROcDllTEh4T1ZNNjZoUysvZ3J6?=
 =?utf-8?B?K3lGVklYdTZnVGJ4TVRGOVNRZHJJL2x6dmhmb25uVGgra1pLa2RETkdqSmpU?=
 =?utf-8?B?cTlzNEk1OTRsRzBzYzVBcW9xNVR6MnpkeW1YUUJBZmhOOGR5M1RrUnJZTlZa?=
 =?utf-8?Q?+GCXWBM7dQcnJ6v/gy86UYJEX?=
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 8fd2c670-4e23-4289-6730-08dc130961e5
X-MS-Exchange-CrossTenant-AuthSource: MW3PR12MB4409.namprd12.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Jan 2024 00:56:59.9416
 (UTC)
X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted
X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d
X-MS-Exchange-CrossTenant-MailboxType: HOSTED
X-MS-Exchange-CrossTenant-UserPrincipalName: XwkjnTNOC++UoDEvL3RwDKzQrvDGVhWS/4AJGz8baQvPjLqXiCIv2h6tz0zxZ/Ql90N2XpYdDkWQPh2Z/ULHnw==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS7PR12MB5984

Hi Andrei & Stefano,
On Thu, Jan 11, 2024 at 04:35:22PM -0800, Stefano Stabellini wrote:
> Hi Andrei,
> 
> Great that you are working with Xen and virtio. We at AMD are very
> interested in it as well.
> 
> I'll let Artem (CCed) and his team comment about the xen-troops
> repository.
> 
> I can share that from our side we are working toward adding complete
> support for using QEMU as virtio-backends provider. Vikram (CCed)
> managed to get virtio-net to work with the backend in QEMU. He should be
> able to provide instructions. We want to get those patches upstream in
> Xen and QEMU as soon as possible.
Actually, QEMU patches are already upstreamed for virtio-blk and virtio-net
devices available in v8.2.0.
For virtio with grants, the patches are WiP.

On Xen side, we are yet to upstream xen-tools patches which basically generate
the right arguments when invoking QEMU.
Here are down stream patches if you want:
1. https://github.com/Xilinx/xen/commit/be35b46e907c7c78fd23888d837475eb28334638
2. For Virtio disk backend:
    https://github.com/Xilinx/xen/commit/947280803294bbb963f428423f679d074c60d632
3. For Virtio-net:
    https://github.com/Xilinx/xen/commit/32fcc702718591270e5c8928b7687d853249c882
4. For changing the machine name to Xenpvh(to align with QEMU changes):
    https://github.com/Xilinx/xen/commit/5f669949c9ffdb1947cb47038956b5fb8eeb072a
> 
> The libxl changes are lagging behind a bit and you might have to use
> device_model_args to enable virtio backends in QEMU.
But QEMU 8.2.0 can still be used for virtio-net on ARM.

@Andrei here is an example on how to use virtio-net with QEMU:
    -device virtio-net-device,id=nic0,netdev=net0,mac=00:16:3e:4f:43:05 \
    -netdev type=tap,id=net0,ifname=vif1.0-emu,br=xenbr0,script=no,downscript=no\
    -machine xenpvh

Please make sure to use xenpvh as QEMU machine.

Regards,
Vikram
> 
> For SCMI, I'll let Bertrand (CCed) comment.
> 
> Cheers,
> 
> Stefano
> 
> 
> On Thu, 11 Jan 2024, Andrei Cherechesu (OSS) wrote:
> > Hello,
> > 
> > As I've mentioned in previous discussion threads in the xen-devel
> > community, we are running Xen 4.17 (uprev to 4.18 in progress) on NXP
> > S32G automotive processors (Cortex-A53 cores) and we wanted to know more
> > about the support for various VirtIO device types in Xen.
> > 
> > In the Xen 4.17 release notes, the VirtIO standalone backends mentioned
> > as supported and tested are: virtio-disk, virtio-net, virtio-i2c and
> > virtio-gpio.
> > 
> > However, we've only managed to successfully set up and try some
> > use-cases with the virtio-disk standalone backend [0] (which Olexandr
> > provided) based on the virtio-mmio transport.
> > 
> > As such, we have a few questions, which we haven't been able to figure
> > out from the mailing list discussions and/or code:
> >     1. Are there any plans for the virtio-disk repo to have a stable
> >     version? Is it going to be long-term hosted and maintained in the
> >     xen-troops github repo? Or was it just an one-time PoC implementation
> > 
> >     and the strategy for future VirtIO devices will be based on a more generic
> > 
> >     approach (i.e., without need for a specific standalone app)?
> > 
> > 
> >     2. With regards to the other backends, we want to try out and provide PV
> > 
> >     networking to a DomU based on virtio-net, but we haven't found any available
> > 
> >     resources for it (e.g., the standalone backend implementation if needed for
> > 
> >     control plane, configuration examples, presentations, demos, docs). Does it
> > 
> >     rely on the QEMU virtio-net or vhost implementation? Are there any examples
> > 
> >     on how to set it up? Any required Xen/Linux Kernel/QEMU versions?
> > 
> > 
> >     3. What other VirtIO device types are there planned to be supported in Xen?
> > 
> >     I'm supposing libxl will also need changes to accomodate new configuration
> > 
> >     parameters for each of them. Or is there something I'm missing?
> > 
> > 
> >     4. Also, while we're at it, are there any plans regarding SCMI
> >     awareness for Xen (e.g., SCMI Mediator - where the RFC thread from 2022
> > 
> >     seems discontinued)? Or is the preferred approach for sharing SCMI access
> > 
> >     to guests through virtio-scmi?
> > 
> > Thank you very much for the support, once again, and we're also looking
> > forward to the progress on the rust-vmm initiative.
> > 
> > Regards,
> > Andrei Cherechesu,
> > NXP Semiconductors
> > 
> > [0] https://github.com/xen-troops/virtio-disk
> > 
> > 
> > 



From xen-devel-bounces@lists.xenproject.org Fri Jan 12 01:31:50 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 12 Jan 2024 01:31:50 +0000
Received: from list by lists.xenproject.org with outflank-mailman.666597.1037343 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rO6Ob-0007D8-Jo; Fri, 12 Jan 2024 01:31:41 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 666597.1037343; Fri, 12 Jan 2024 01:31:41 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rO6Ob-0007D1-Ff; Fri, 12 Jan 2024 01:31:41 +0000
Received: by outflank-mailman (input) for mailman id 666597;
 Fri, 12 Jan 2024 01:31:39 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rO6OZ-0007Cr-Py; Fri, 12 Jan 2024 01:31:39 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rO6OZ-00029q-HS; Fri, 12 Jan 2024 01:31:39 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rO6OY-0003JS-Hi; Fri, 12 Jan 2024 01:31:38 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rO6OY-0002cK-Fd; Fri, 12 Jan 2024 01:31:38 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=GiSnn36XNouykrQMbqqholYelxTYYJNtbYv2dxajuu4=; b=X7jl3xDiv72Yyjba0u1AF2ArGK
	Udowo036L14GPe+ivCNAr0dHcJTvKD+wVArDIaFBkaTeUh0Dew9FZac+lYkK/j/YhP2P1OC0BWQNO
	RB/3AfmCgewgEROUtgFlSXm9AjI1Sky9xM5FctZGggJVZig+qq0kBW4Cn4jhKw4TED5M=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184318-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [linux-5.4 test] 184318: regressions - FAIL
X-Osstest-Failures:
    linux-5.4:test-armhf-armhf-xl-multivcpu:guest-start/debian.repeat:fail:regression
    linux-5.4:test-armhf-armhf-xl-multivcpu:guest-start:fail:heisenbug
    linux-5.4:test-armhf-armhf-xl:guest-start/debian.repeat:fail:heisenbug
    linux-5.4:test-amd64-amd64-xl-qcow2:debian-di-install:fail:heisenbug
    linux-5.4:test-armhf-armhf-xl-arndale:guest-start:fail:heisenbug
    linux-5.4:test-armhf-armhf-xl-credit2:guest-start:fail:heisenbug
    linux-5.4:test-armhf-armhf-xl-rtds:guest-start/debian.repeat:fail:allowable
    linux-5.4:test-armhf-armhf-xl-credit1:guest-start/debian.repeat:fail:nonblocking
    linux-5.4:test-armhf-armhf-libvirt-qcow2:saverestore-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-credit1:guest-start:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-credit2:guest-start/debian.repeat:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-arndale:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-arndale:saverestore-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-credit2:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-credit2:saverestore-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-libvirt-qcow2:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-libvirt:saverestore-support-check:fail:nonblocking
    linux-5.4:test-amd64-amd64-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    linux-5.4:test-amd64-i386-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    linux-5.4:test-amd64-i386-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    linux-5.4:test-amd64-amd64-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    linux-5.4:test-amd64-amd64-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    linux-5.4:test-amd64-amd64-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    linux-5.4:test-armhf-armhf-libvirt-raw:saverestore-support-check:fail:nonblocking
    linux-5.4:test-amd64-i386-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    linux-5.4:test-armhf-armhf-libvirt-qcow2:guest-start:fail:nonblocking
    linux-5.4:test-amd64-i386-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    linux-5.4:test-amd64-amd64-qemuu-nested-amd:debian-hvm-install/l1/l2:fail:nonblocking
    linux-5.4:test-amd64-i386-xl-pvshim:guest-start:fail:nonblocking
    linux-5.4:test-amd64-amd64-libvirt-xsm:migrate-support-check:fail:nonblocking
    linux-5.4:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    linux-5.4:test-amd64-i386-libvirt-xsm:migrate-support-check:fail:nonblocking
    linux-5.4:test-amd64-i386-libvirt:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-xsm:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-xsm:saverestore-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-thunderx:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl:saverestore-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-thunderx:saverestore-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-libvirt-xsm:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-libvirt-xsm:saverestore-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-credit1:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-credit1:saverestore-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-credit2:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-credit2:saverestore-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-rtds:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-rtds:saverestore-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-credit1:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-credit1:saverestore-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-multivcpu:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-multivcpu:saverestore-support-check:fail:nonblocking
    linux-5.4:test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    linux-5.4:test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl:saverestore-support-check:fail:nonblocking
    linux-5.4:test-amd64-amd64-libvirt-vhd:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-libvirt:migrate-support-check:fail:nonblocking
    linux-5.4:test-amd64-i386-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-libvirt-raw:saverestore-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-vhd:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-vhd:saverestore-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-vhd:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-vhd:saverestore-support-check:fail:nonblocking
X-Osstest-Versions-This:
    linux=4410df70110ff5175bf7f7fdc3bae5c80f2c36d9
X-Osstest-Versions-That:
    linux=2d21f73b2f16f51608c8d8b1726df270229a5006
From: osstest service owner <osstest-admin@xenproject.org>
Date: Fri, 12 Jan 2024 01:31:38 +0000

flight 184318 linux-5.4 real [real]
flight 184326 linux-5.4 real-retest [real]
http://logs.test-lab.xenproject.org/osstest/logs/184318/
http://logs.test-lab.xenproject.org/osstest/logs/184326/

Regressions :-(

Tests which did not succeed and are blocking,
including tests which could not be run:
 test-armhf-armhf-xl-multivcpu 18 guest-start/debian.repeat fail REGR. vs. 184192

Tests which are failing intermittently (not blocking):
 test-armhf-armhf-xl-multivcpu 14 guest-start     fail in 184306 pass in 184318
 test-armhf-armhf-xl 18 guest-start/debian.repeat fail in 184306 pass in 184318
 test-amd64-amd64-xl-qcow2   12 debian-di-install fail in 184306 pass in 184318
 test-armhf-armhf-xl-arndale  14 guest-start                fail pass in 184306
 test-armhf-armhf-xl-credit2  14 guest-start                fail pass in 184306

Regressions which are regarded as allowable (not blocking):
 test-armhf-armhf-xl-rtds    18 guest-start/debian.repeat fail REGR. vs. 184192

Tests which did not succeed, but are not blocking:
 test-armhf-armhf-xl-credit1 18 guest-start/debian.repeat fail blocked in 184192
 test-armhf-armhf-libvirt-qcow2 15 saverestore-support-check fail in 184306 blocked in 184192
 test-armhf-armhf-xl-credit1  14 guest-start         fail in 184306 like 184192
 test-armhf-armhf-xl-credit2 18 guest-start/debian.repeat fail in 184306 like 184192
 test-armhf-armhf-xl-arndale 15 migrate-support-check fail in 184306 never pass
 test-armhf-armhf-xl-arndale 16 saverestore-support-check fail in 184306 never pass
 test-armhf-armhf-xl-credit2 15 migrate-support-check fail in 184306 never pass
 test-armhf-armhf-xl-credit2 16 saverestore-support-check fail in 184306 never pass
 test-armhf-armhf-libvirt-qcow2 14 migrate-support-check fail in 184306 never pass
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 184192
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 184192
 test-amd64-i386-xl-qemut-win7-amd64 19 guest-stop             fail like 184192
 test-amd64-i386-xl-qemuu-win7-amd64 19 guest-stop             fail like 184192
 test-amd64-amd64-xl-qemut-win7-amd64 19 guest-stop            fail like 184192
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 184192
 test-amd64-amd64-xl-qemut-ws16-amd64 19 guest-stop            fail like 184192
 test-armhf-armhf-libvirt-raw 15 saverestore-support-check    fail  like 184192
 test-amd64-i386-xl-qemut-ws16-amd64 19 guest-stop             fail like 184192
 test-armhf-armhf-libvirt-qcow2 13 guest-start                 fail like 184192
 test-amd64-i386-xl-qemuu-ws16-amd64 19 guest-stop             fail like 184192
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 184192
 test-amd64-i386-xl-pvshim    14 guest-start                  fail   never pass
 test-amd64-amd64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt     15 migrate-support-check        fail   never pass
 test-amd64-i386-libvirt-xsm  15 migrate-support-check        fail   never pass
 test-amd64-i386-libvirt      15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-xsm      15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-xsm      16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl          15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-thunderx 15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl          16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-thunderx 16 saverestore-support-check    fail   never pass
 test-arm64-arm64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-xsm 16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-credit1  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit1  16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-credit2  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit2  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-rtds     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-rtds     16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-credit1  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit1  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-multivcpu 15 migrate-support-check        fail  never pass
 test-armhf-armhf-xl-multivcpu 16 saverestore-support-check    fail  never pass
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-armhf-armhf-xl          15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          16 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-vhd 14 migrate-support-check        fail   never pass
 test-armhf-armhf-libvirt     15 migrate-support-check        fail   never pass
 test-amd64-i386-libvirt-raw  14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 15 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-vhd      14 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-vhd      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-raw 14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      15 saverestore-support-check    fail   never pass

version targeted for testing:
 linux                4410df70110ff5175bf7f7fdc3bae5c80f2c36d9
baseline version:
 linux                2d21f73b2f16f51608c8d8b1726df270229a5006

Last test of basis   184192  2023-12-20 15:16:31 Z   22 days
Testing same since   184275  2024-01-08 10:43:33 Z    3 days    6 attempts

------------------------------------------------------------
People who touched revisions under test:
  Alexander Gordeev <agordeev@linux.ibm.com>
  Alexis Lothoré <alexis.lothore@bootlin.com>
  Alper Ak <alperyasinak1@gmail.com>
  Bin Li <bin.li@canonical.com>
  Borislav Petkov (AMD) <bp@alien8.de>
  Chen-Yu Tsai <wens@kernel.org>
  Dan Carpenter <dan.carpenter@linaro.org>
  David Howells <dhowells@redhat.com>
  David S. Miller <davem@davemloft.net>
  David Sterba <dsterba@suse.com>
  Dmitry Torokhov <dmitry.torokhov@gmail.com>
  Dominique Martinet <asmadeus@codewreck.org>
  Eric Dumazet <edumazet@google.com>
  Fedor Pchelkin <pchelkin@ispras.ru>
  Florian Fainelli <florian.fainelli@broadcom.com>
  Geert Uytterhoeven <geert+renesas@glider.be>
  Georgi Djakov <djakov@kernel.org>
  Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  Haoran Liu <liuhaoran14@163.com>
  Harshit Mogalapalli <harshit.m.mogalapalli@oracle.com>
  Heiko Carstens <hca@linux.ibm.com>
  Heiner Kallweit <hkallweit1@gmail.com>
  Hu Haowen <xianfengting221@163.com>
  Jakub Kicinski <kuba@kernel.org>
  Jamal Hadi Salim <jhs@mojatatu.com>
  Javier Carrasco <javier.carrasco.cruz@gmail.com>
  Jens Axboe <axboe@kernel.dk>
  Johan Hovold <johan@kernel.org>
  Johannes Berg <johannes.berg@intel.com>
  Jonathan Cameron <Jonathan.Cameron@huawei.com>
  Josef Bacik <josef@toxicpanda.com>
  Kai Vehmanen <kai.vehmanen@linux.intel.com>
  kernelci.org bot <bot@kernelci.org>
  Kunwu Chan <chentao@kylinos.cn>
  Linus Torvalds <torvalds@linux-foundation.org>
  Linus Walleij <linus.walleij@linaro.org>
  Linux Kernel Functional Testing <lkft@linaro.org>
  Liu Jian <liujian56@huawei.com>
  Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
  Mark Glover <mark.glover@actisense.com>
  Markus Suvanto <markus.suvanto@gmail.com>
  Martin K. Petersen <martin.petersen@oracle.com>
  Masami Hiramatsu (Google) <mhiramat@kernel.org>
  Mike Snitzer <snitzer@kernel.org>
  Mike Tipton <quic_mdtipton@quicinc.com>
  Miri Korenblit <miriam.rachel.korenblit@intel.com>
  Moshe Shemesh <moshe@nvidia.com>
  Namjae Jeon <linkinjeon@kernel.org>
  Paolo Abeni <pabeni@redhat.com>
  Paulo Alcantara (SUSE) <pc@manguebit.com>
  Paulo Alcantara <pc@manguebit.com>
  Peter Zijlstra (Intel) <peterz@infradead.org>
  Philipp Zabel <p.zabel@pengutronix.de>
  Quan Nguyen <quan@os.amperecomputing.com>
  Rahul Rameshbabu <rrameshbabu@nvidia.com>
  Reinhard Speyerer <rspmn@arcor.de>
  Rouven Czerwinski <r.czerwinski@pengutronix.de>
  Saeed Mahameed <saeedm@mellanox.com>
  Saeed Mahameed <saeedm@nvidia.com>
  Sarthak Kukreti <sarthakkukreti@chromium.org>
  Sasha Levin <sashal@kernel.org>
  Seth Forshee <sforshee@kernel.org>
  Slark Xiao <slark_xiao@163.com>
  Steve French <stfrench@microsoft.com>
  Steven Rostedt (Google) <rostedt@goodmis.org>
  Su Hui <suhui@nfschina.com>
  Takashi Iwai <tiwai@suse.de>
  Thomas Gleixner <tglx@linutronix.de>
  Tony Lindgren <tony@atomide.com>
  Vlad Buslov <vladbu@nvidia.com>
  Wadim Egorov <w.egorov@phytec.de>
  Wei Yongjun <weiyongjun1@huawei.com>
  Wolfram Sang <wsa@kernel.org>
  Zhipeng Lu <alexious@zju.edu.cn>

jobs:
 build-amd64-xsm                                              pass    
 build-arm64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64                                                  pass    
 build-arm64                                                  pass    
 build-armhf                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-arm64-libvirt                                          pass    
 build-armhf-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-pvops                                            pass    
 build-arm64-pvops                                            pass    
 build-armhf-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-amd64-amd64-xl                                          pass    
 test-amd64-coresched-amd64-xl                                pass    
 test-arm64-arm64-xl                                          pass    
 test-armhf-armhf-xl                                          pass    
 test-amd64-i386-xl                                           pass    
 test-amd64-coresched-i386-xl                                 pass    
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm           pass    
 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm            pass    
 test-amd64-amd64-xl-qemut-stubdom-debianhvm-amd64-xsm        pass    
 test-amd64-i386-xl-qemut-stubdom-debianhvm-amd64-xsm         pass    
 test-amd64-amd64-xl-qemut-debianhvm-i386-xsm                 pass    
 test-amd64-i386-xl-qemut-debianhvm-i386-xsm                  pass    
 test-amd64-amd64-xl-qemuu-debianhvm-i386-xsm                 pass    
 test-amd64-i386-xl-qemuu-debianhvm-i386-xsm                  pass    
 test-amd64-amd64-libvirt-xsm                                 pass    
 test-arm64-arm64-libvirt-xsm                                 pass    
 test-amd64-i386-libvirt-xsm                                  pass    
 test-amd64-amd64-xl-xsm                                      pass    
 test-arm64-arm64-xl-xsm                                      pass    
 test-amd64-i386-xl-xsm                                       pass    
 test-amd64-amd64-qemuu-nested-amd                            fail    
 test-amd64-amd64-xl-pvhv2-amd                                pass    
 test-amd64-i386-qemut-rhel6hvm-amd                           pass    
 test-amd64-i386-qemuu-rhel6hvm-amd                           pass    
 test-amd64-amd64-dom0pvh-xl-amd                              pass    
 test-amd64-amd64-xl-qemut-debianhvm-amd64                    pass    
 test-amd64-i386-xl-qemut-debianhvm-amd64                     pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64                    pass    
 test-amd64-i386-xl-qemuu-debianhvm-amd64                     pass    
 test-amd64-i386-freebsd10-amd64                              pass    
 test-amd64-amd64-qemuu-freebsd11-amd64                       pass    
 test-amd64-amd64-qemuu-freebsd12-amd64                       pass    
 test-amd64-amd64-xl-qemuu-ovmf-amd64                         pass    
 test-amd64-i386-xl-qemuu-ovmf-amd64                          pass    
 test-amd64-amd64-xl-qemut-win7-amd64                         fail    
 test-amd64-i386-xl-qemut-win7-amd64                          fail    
 test-amd64-amd64-xl-qemuu-win7-amd64                         fail    
 test-amd64-i386-xl-qemuu-win7-amd64                          fail    
 test-amd64-amd64-xl-qemut-ws16-amd64                         fail    
 test-amd64-i386-xl-qemut-ws16-amd64                          fail    
 test-amd64-amd64-xl-qemuu-ws16-amd64                         fail    
 test-amd64-i386-xl-qemuu-ws16-amd64                          fail    
 test-armhf-armhf-xl-arndale                                  fail    
 test-amd64-amd64-examine-bios                                pass    
 test-amd64-i386-examine-bios                                 pass    
 test-amd64-amd64-xl-credit1                                  pass    
 test-arm64-arm64-xl-credit1                                  pass    
 test-armhf-armhf-xl-credit1                                  fail    
 test-amd64-amd64-xl-credit2                                  pass    
 test-arm64-arm64-xl-credit2                                  pass    
 test-armhf-armhf-xl-credit2                                  fail    
 test-amd64-amd64-xl-qemuu-dmrestrict-amd64-dmrestrict        pass    
 test-amd64-i386-xl-qemuu-dmrestrict-amd64-dmrestrict         pass    
 test-amd64-amd64-examine                                     pass    
 test-arm64-arm64-examine                                     pass    
 test-armhf-armhf-examine                                     pass    
 test-amd64-i386-examine                                      pass    
 test-amd64-i386-freebsd10-i386                               pass    
 test-amd64-amd64-qemuu-nested-intel                          pass    
 test-amd64-amd64-xl-pvhv2-intel                              pass    
 test-amd64-i386-qemut-rhel6hvm-intel                         pass    
 test-amd64-i386-qemuu-rhel6hvm-intel                         pass    
 test-amd64-amd64-dom0pvh-xl-intel                            pass    
 test-amd64-amd64-libvirt                                     pass    
 test-armhf-armhf-libvirt                                     pass    
 test-amd64-i386-libvirt                                      pass    
 test-amd64-amd64-xl-multivcpu                                pass    
 test-armhf-armhf-xl-multivcpu                                fail    
 test-amd64-amd64-pair                                        pass    
 test-amd64-i386-pair                                         pass    
 test-amd64-amd64-libvirt-pair                                pass    
 test-amd64-i386-libvirt-pair                                 pass    
 test-amd64-amd64-xl-pvshim                                   pass    
 test-amd64-i386-xl-pvshim                                    fail    
 test-amd64-amd64-pygrub                                      pass    
 test-armhf-armhf-libvirt-qcow2                               fail    
 test-amd64-amd64-xl-qcow2                                    pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-armhf-armhf-libvirt-raw                                 pass    
 test-amd64-i386-libvirt-raw                                  pass    
 test-amd64-amd64-xl-rtds                                     pass    
 test-armhf-armhf-xl-rtds                                     fail    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64-shadow             pass    
 test-amd64-i386-xl-qemuu-debianhvm-amd64-shadow              pass    
 test-amd64-amd64-xl-shadow                                   pass    
 test-amd64-i386-xl-shadow                                    pass    
 test-arm64-arm64-xl-thunderx                                 pass    
 test-amd64-amd64-examine-uefi                                pass    
 test-amd64-i386-examine-uefi                                 pass    
 test-amd64-amd64-libvirt-vhd                                 pass    
 test-arm64-arm64-xl-vhd                                      pass    
 test-armhf-armhf-xl-vhd                                      pass    
 test-amd64-i386-xl-vhd                                       pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Not pushing.

(No revision log; it would be 1652 lines long.)


From xen-devel-bounces@lists.xenproject.org Fri Jan 12 01:32:34 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 12 Jan 2024 01:32:34 +0000
Received: from list by lists.xenproject.org with outflank-mailman.666604.1037353 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rO6PS-0007ky-4E; Fri, 12 Jan 2024 01:32:34 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 666604.1037353; Fri, 12 Jan 2024 01:32:34 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rO6PR-0007kr-VS; Fri, 12 Jan 2024 01:32:33 +0000
Received: by outflank-mailman (input) for mailman id 666604;
 Fri, 12 Jan 2024 01:32:32 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rO6PQ-0007kf-M9; Fri, 12 Jan 2024 01:32:32 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rO6PQ-0002Af-LK; Fri, 12 Jan 2024 01:32:32 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rO6PQ-0003KC-2X; Fri, 12 Jan 2024 01:32:32 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rO6PQ-0002dT-2B; Fri, 12 Jan 2024 01:32:32 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=oTidrFx+9ojomYlPQ87NxiyBuy8l9mNF7IkiCy5Rof8=; b=abz6U3A/PMAMSwDohbntapvgWN
	h+LMO4X+frfy0lp2lECLFOMao8GTLH/pBEpwqwRNpNhVjLxqjKRXyfcCbGz1202VrromE3AAN0yzu
	DEfWUv28pieP4+3cMFVpN7NOl7UTqrZYSjvia5uvhpIjeESBRJu0B2KyHKtMlOVeWBis=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184325-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [ovmf test] 184325: all pass - PUSHED
X-Osstest-Versions-This:
    ovmf=58355ec1926563efc954821a2851365182a4ebd4
X-Osstest-Versions-That:
    ovmf=0765ee6cd36aef02236ae431a7097624d17762d9
From: osstest service owner <osstest-admin@xenproject.org>
Date: Fri, 12 Jan 2024 01:32:32 +0000

flight 184325 ovmf real [real]
http://logs.test-lab.xenproject.org/osstest/logs/184325/

Perfect :-)
All tests in this flight passed as required
version targeted for testing:
 ovmf                 58355ec1926563efc954821a2851365182a4ebd4
baseline version:
 ovmf                 0765ee6cd36aef02236ae431a7097624d17762d9

Last test of basis   184322  2024-01-11 15:41:27 Z    0 days
Testing same since   184325  2024-01-11 23:11:05 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Abdul Lateef Attar <AbdulLateef.Attar@amd.com>

jobs:
 build-amd64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-amd64-amd64-xl-qemuu-ovmf-amd64                         pass    
 test-amd64-i386-xl-qemuu-ovmf-amd64                          pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Pushing revision :

To xenbits.xen.org:/home/xen/git/osstest/ovmf.git
   0765ee6cd3..58355ec192  58355ec1926563efc954821a2851365182a4ebd4 -> xen-tested-master


From xen-devel-bounces@lists.xenproject.org Fri Jan 12 06:04:43 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 12 Jan 2024 06:04:43 +0000
Received: from list by lists.xenproject.org with outflank-mailman.666625.1037362 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rOAeV-0006Wa-MX; Fri, 12 Jan 2024 06:04:23 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 666625.1037362; Fri, 12 Jan 2024 06:04:23 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rOAeV-0006WT-Jw; Fri, 12 Jan 2024 06:04:23 +0000
Received: by outflank-mailman (input) for mailman id 666625;
 Fri, 12 Jan 2024 06:04:21 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rOAeT-0006WJ-RF; Fri, 12 Jan 2024 06:04:21 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rOAeT-0000x9-I6; Fri, 12 Jan 2024 06:04:21 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rOAeT-00020i-22; Fri, 12 Jan 2024 06:04:21 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rOAeT-0005cm-03; Fri, 12 Jan 2024 06:04:21 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=4k4ND+FM++46b8VJgOOwu/g3vAQPnPjuc/TCi5SWvCc=; b=Gd3o8in8Hr9/EQDw/YJGfd+Lt7
	czHA508rT6nHwok4AQoTdpyS8DcMor/qeSST29I51A7ToJttpq7Wjrl+Ubj8m/4OfZKQn8UOsRBE3
	DcM7mAR5AjyrtogG5OpUfDYMB04mXTScKBWwQtEP/wj7DZo4PHzKD6Z3xr58xJF2vQO0=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184319-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [xen-unstable test] 184319: tolerable FAIL
X-Osstest-Failures:
    xen-unstable:test-amd64-amd64-xl-qemuu-win7-amd64:windows-install:fail:heisenbug
    xen-unstable:test-amd64-amd64-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-amd64-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-raw:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-amd64-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-qcow2:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-qemuu-nested-amd:debian-hvm-install/l1/l2:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-i386-libvirt-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-pvshim:guest-start:fail:nonblocking
    xen-unstable:test-amd64-i386-libvirt:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-thunderx:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-xsm:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-thunderx:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-credit2:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-credit2:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-libvirt-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-libvirt-xsm:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-credit1:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-credit1:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-multivcpu:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-multivcpu:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit2:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit2:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit1:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit1:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-arndale:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-arndale:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-libvirt-raw:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-libvirt-raw:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-libvirt-raw:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt-vhd:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-vhd:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-vhd:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-raw:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-vhd:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-vhd:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-rtds:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-rtds:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-qcow2:migrate-support-check:fail:nonblocking
X-Osstest-Versions-This:
    xen=c27c8922f2c6995d688437b0758cec6a27d18320
X-Osstest-Versions-That:
    xen=c27c8922f2c6995d688437b0758cec6a27d18320
From: osstest service owner <osstest-admin@xenproject.org>
Date: Fri, 12 Jan 2024 06:04:21 +0000

flight 184319 xen-unstable real [real]
http://logs.test-lab.xenproject.org/osstest/logs/184319/

Failures :-/ but no regressions.

Tests which are failing intermittently (not blocking):
 test-amd64-amd64-xl-qemuu-win7-amd64 12 windows-install    fail pass in 184311

Tests which did not succeed, but are not blocking:
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop  fail in 184311 like 184299
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 184311
 test-amd64-amd64-xl-qemut-win7-amd64 19 guest-stop            fail like 184311
 test-amd64-i386-xl-qemuu-win7-amd64 19 guest-stop             fail like 184311
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 184311
 test-amd64-i386-xl-qemut-ws16-amd64 19 guest-stop             fail like 184311
 test-armhf-armhf-libvirt-raw 15 saverestore-support-check    fail  like 184311
 test-amd64-i386-xl-qemut-win7-amd64 19 guest-stop             fail like 184311
 test-amd64-amd64-xl-qemut-ws16-amd64 19 guest-stop            fail like 184311
 test-armhf-armhf-libvirt-qcow2 15 saverestore-support-check   fail like 184311
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 184311
 test-amd64-i386-xl-qemuu-ws16-amd64 19 guest-stop             fail like 184311
 test-amd64-i386-libvirt-xsm  15 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-amd64-i386-xl-pvshim    14 guest-start                  fail   never pass
 test-amd64-i386-libvirt      15 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt     15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl          15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-xsm      15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-thunderx 15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl          16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-xsm      16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-thunderx 16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-credit2  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit2  16 saverestore-support-check    fail   never pass
 test-arm64-arm64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-xsm 16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-credit1  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit1  16 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-armhf-armhf-xl-multivcpu 15 migrate-support-check        fail  never pass
 test-armhf-armhf-xl-multivcpu 16 saverestore-support-check    fail  never pass
 test-armhf-armhf-libvirt     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-credit2  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit2  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-credit1  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit1  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-arndale  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-arndale  16 saverestore-support-check    fail   never pass
 test-amd64-i386-libvirt-raw  14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 15 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-vhd 14 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-vhd      14 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-vhd      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-raw 14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-rtds     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-rtds     16 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-qcow2 14 migrate-support-check        fail never pass

version targeted for testing:
 xen                  c27c8922f2c6995d688437b0758cec6a27d18320
baseline version:
 xen                  c27c8922f2c6995d688437b0758cec6a27d18320

Last test of basis   184319  2024-01-11 10:58:36 Z    0 days
Testing same since                          (not found)         0 attempts

jobs:
 build-amd64-xsm                                              pass    
 build-arm64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64-xtf                                              pass    
 build-amd64                                                  pass    
 build-arm64                                                  pass    
 build-armhf                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-arm64-libvirt                                          pass    
 build-armhf-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-prev                                             pass    
 build-i386-prev                                              pass    
 build-amd64-pvops                                            pass    
 build-arm64-pvops                                            pass    
 build-armhf-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-xtf-amd64-amd64-1                                       pass    
 test-xtf-amd64-amd64-2                                       pass    
 test-xtf-amd64-amd64-3                                       pass    
 test-xtf-amd64-amd64-4                                       pass    
 test-xtf-amd64-amd64-5                                       pass    
 test-amd64-amd64-xl                                          pass    
 test-amd64-coresched-amd64-xl                                pass    
 test-arm64-arm64-xl                                          pass    
 test-armhf-armhf-xl                                          pass    
 test-amd64-i386-xl                                           pass    
 test-amd64-coresched-i386-xl                                 pass    
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm           pass    
 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm            pass    
 test-amd64-amd64-xl-qemut-stubdom-debianhvm-amd64-xsm        pass    
 test-amd64-i386-xl-qemut-stubdom-debianhvm-amd64-xsm         pass    
 test-amd64-amd64-xl-qemut-debianhvm-i386-xsm                 pass    
 test-amd64-i386-xl-qemut-debianhvm-i386-xsm                  pass    
 test-amd64-amd64-xl-qemuu-debianhvm-i386-xsm                 pass    
 test-amd64-i386-xl-qemuu-debianhvm-i386-xsm                  pass    
 test-amd64-amd64-libvirt-xsm                                 pass    
 test-arm64-arm64-libvirt-xsm                                 pass    
 test-amd64-i386-libvirt-xsm                                  pass    
 test-amd64-amd64-xl-xsm                                      pass    
 test-arm64-arm64-xl-xsm                                      pass    
 test-amd64-i386-xl-xsm                                       pass    
 test-amd64-amd64-qemuu-nested-amd                            fail    
 test-amd64-amd64-xl-pvhv2-amd                                pass    
 test-amd64-i386-qemut-rhel6hvm-amd                           pass    
 test-amd64-i386-qemuu-rhel6hvm-amd                           pass    
 test-amd64-amd64-dom0pvh-xl-amd                              pass    
 test-amd64-amd64-xl-qemut-debianhvm-amd64                    pass    
 test-amd64-i386-xl-qemut-debianhvm-amd64                     pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64                    pass    
 test-amd64-i386-xl-qemuu-debianhvm-amd64                     pass    
 test-amd64-i386-freebsd10-amd64                              pass    
 test-amd64-amd64-qemuu-freebsd11-amd64                       pass    
 test-amd64-amd64-qemuu-freebsd12-amd64                       pass    
 test-amd64-amd64-xl-qemuu-ovmf-amd64                         pass    
 test-amd64-i386-xl-qemuu-ovmf-amd64                          pass    
 test-amd64-amd64-xl-qemut-win7-amd64                         fail    
 test-amd64-i386-xl-qemut-win7-amd64                          fail    
 test-amd64-amd64-xl-qemuu-win7-amd64                         fail    
 test-amd64-i386-xl-qemuu-win7-amd64                          fail    
 test-amd64-amd64-xl-qemut-ws16-amd64                         fail    
 test-amd64-i386-xl-qemut-ws16-amd64                          fail    
 test-amd64-amd64-xl-qemuu-ws16-amd64                         fail    
 test-amd64-i386-xl-qemuu-ws16-amd64                          fail    
 test-armhf-armhf-xl-arndale                                  pass    
 test-amd64-amd64-examine-bios                                pass    
 test-amd64-i386-examine-bios                                 pass    
 test-amd64-amd64-xl-credit1                                  pass    
 test-arm64-arm64-xl-credit1                                  pass    
 test-armhf-armhf-xl-credit1                                  pass    
 test-amd64-amd64-xl-credit2                                  pass    
 test-arm64-arm64-xl-credit2                                  pass    
 test-armhf-armhf-xl-credit2                                  pass    
 test-amd64-amd64-xl-qemuu-dmrestrict-amd64-dmrestrict        pass    
 test-amd64-i386-xl-qemuu-dmrestrict-amd64-dmrestrict         pass    
 test-amd64-amd64-examine                                     pass    
 test-arm64-arm64-examine                                     pass    
 test-armhf-armhf-examine                                     pass    
 test-amd64-i386-examine                                      pass    
 test-amd64-i386-freebsd10-i386                               pass    
 test-amd64-amd64-qemuu-nested-intel                          pass    
 test-amd64-amd64-xl-pvhv2-intel                              pass    
 test-amd64-i386-qemut-rhel6hvm-intel                         pass    
 test-amd64-i386-qemuu-rhel6hvm-intel                         pass    
 test-amd64-amd64-dom0pvh-xl-intel                            pass    
 test-amd64-amd64-libvirt                                     pass    
 test-armhf-armhf-libvirt                                     pass    
 test-amd64-i386-libvirt                                      pass    
 test-amd64-amd64-livepatch                                   pass    
 test-amd64-i386-livepatch                                    pass    
 test-amd64-amd64-migrupgrade                                 pass    
 test-amd64-i386-migrupgrade                                  pass    
 test-amd64-amd64-xl-multivcpu                                pass    
 test-armhf-armhf-xl-multivcpu                                pass    
 test-amd64-amd64-pair                                        pass    
 test-amd64-i386-pair                                         pass    
 test-amd64-amd64-libvirt-pair                                pass    
 test-amd64-i386-libvirt-pair                                 pass    
 test-amd64-amd64-xl-pvshim                                   pass    
 test-amd64-i386-xl-pvshim                                    fail    
 test-amd64-amd64-pygrub                                      pass    
 test-armhf-armhf-libvirt-qcow2                               pass    
 test-amd64-amd64-xl-qcow2                                    pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-armhf-armhf-libvirt-raw                                 pass    
 test-amd64-i386-libvirt-raw                                  pass    
 test-amd64-amd64-xl-rtds                                     pass    
 test-armhf-armhf-xl-rtds                                     pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64-shadow             pass    
 test-amd64-i386-xl-qemuu-debianhvm-amd64-shadow              pass    
 test-amd64-amd64-xl-shadow                                   pass    
 test-amd64-i386-xl-shadow                                    pass    
 test-arm64-arm64-xl-thunderx                                 pass    
 test-amd64-amd64-examine-uefi                                pass    
 test-amd64-i386-examine-uefi                                 pass    
 test-amd64-amd64-libvirt-vhd                                 pass    
 test-arm64-arm64-xl-vhd                                      pass    
 test-armhf-armhf-xl-vhd                                      pass    
 test-amd64-i386-xl-vhd                                       pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Published tested tree is already up to date.



From xen-devel-bounces@lists.xenproject.org Fri Jan 12 06:12:19 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 12 Jan 2024 06:12:19 +0000
Received: from list by lists.xenproject.org with outflank-mailman.666632.1037373 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rOAm7-00082Q-Fb; Fri, 12 Jan 2024 06:12:15 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 666632.1037373; Fri, 12 Jan 2024 06:12:15 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rOAm7-00082J-Cn; Fri, 12 Jan 2024 06:12:15 +0000
Received: by outflank-mailman (input) for mailman id 666632;
 Fri, 12 Jan 2024 06:12:13 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rOAm5-000829-TK; Fri, 12 Jan 2024 06:12:13 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rOAm5-00017k-N0; Fri, 12 Jan 2024 06:12:13 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rOAm5-0002X4-8x; Fri, 12 Jan 2024 06:12:13 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rOAm5-0001Hz-8Y; Fri, 12 Jan 2024 06:12:13 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=3yWedzneqCDBqYGiFTlkGehVDx5qtwr5HSZvEh76ByU=; b=5CednWK9aQdg7mA31Z7npws/RN
	z+Fe2coB6ONPcmWHuokSXUhp+YSp4LdCbmh6nIr4yOF1My9vJLH8j7pSNRtpVM22wqzSk/gJF7z2T
	0GZ1ivUzJJgqwfdoi6bZFp3Y7YkjfYp2xTuk9kz7ismUYZG2e63vASqOsq9Nhqt19yH4=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184328-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [ovmf test] 184328: all pass - PUSHED
X-Osstest-Versions-This:
    ovmf=2bce85bd862e54cede2b59b48972c9f05e2e733d
X-Osstest-Versions-That:
    ovmf=58355ec1926563efc954821a2851365182a4ebd4
From: osstest service owner <osstest-admin@xenproject.org>
Date: Fri, 12 Jan 2024 06:12:13 +0000

flight 184328 ovmf real [real]
http://logs.test-lab.xenproject.org/osstest/logs/184328/

Perfect :-)
All tests in this flight passed as required
version targeted for testing:
 ovmf                 2bce85bd862e54cede2b59b48972c9f05e2e733d
baseline version:
 ovmf                 58355ec1926563efc954821a2851365182a4ebd4

Last test of basis   184325  2024-01-11 23:11:05 Z    0 days
Testing same since   184328  2024-01-12 01:43:23 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Joey Vagedes (from Dev Box) <joeyvagedes@microsoft.com>
  Joey Vagedes <joey.vagedes@gmail.com>

jobs:
 build-amd64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-amd64-amd64-xl-qemuu-ovmf-amd64                         pass    
 test-amd64-i386-xl-qemuu-ovmf-amd64                          pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Pushing revision :

To xenbits.xen.org:/home/xen/git/osstest/ovmf.git
   58355ec192..2bce85bd86  2bce85bd862e54cede2b59b48972c9f05e2e733d -> xen-tested-master


From xen-devel-bounces@lists.xenproject.org Fri Jan 12 06:14:59 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 12 Jan 2024 06:14:59 +0000
Received: from list by lists.xenproject.org with outflank-mailman.666637.1037382 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rOAoj-0000B6-Sx; Fri, 12 Jan 2024 06:14:57 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 666637.1037382; Fri, 12 Jan 2024 06:14:57 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rOAoj-0000Az-QP; Fri, 12 Jan 2024 06:14:57 +0000
Received: by outflank-mailman (input) for mailman id 666637;
 Fri, 12 Jan 2024 06:14:56 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=/PwP=IW=amd.com=Jiqian.Chen@srs-se1.protection.inumbo.net>)
 id 1rOAoi-0000At-FR
 for xen-devel@lists.xenproject.org; Fri, 12 Jan 2024 06:14:56 +0000
Received: from NAM10-MW2-obe.outbound.protection.outlook.com
 (mail-mw2nam10on20601.outbound.protection.outlook.com
 [2a01:111:f403:2412::601])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id e7450f52-b111-11ee-98f0-6d05b1d4d9a1;
 Fri, 12 Jan 2024 07:14:55 +0100 (CET)
Received: from CH0PR03CA0028.namprd03.prod.outlook.com (2603:10b6:610:b0::33)
 by PH8PR12MB7254.namprd12.prod.outlook.com (2603:10b6:510:225::18)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7159.24; Fri, 12 Jan
 2024 06:14:48 +0000
Received: from DS3PEPF000099D5.namprd04.prod.outlook.com
 (2603:10b6:610:b0:cafe::8f) by CH0PR03CA0028.outlook.office365.com
 (2603:10b6:610:b0::33) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7181.21 via Frontend
 Transport; Fri, 12 Jan 2024 06:14:48 +0000
Received: from SATLEXMB04.amd.com (165.204.84.17) by
 DS3PEPF000099D5.mail.protection.outlook.com (10.167.17.6) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.7181.14 via Frontend Transport; Fri, 12 Jan 2024 06:14:48 +0000
Received: from cjq-desktop.amd.com (10.180.168.240) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.34; Fri, 12 Jan
 2024 00:14:03 -0600
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: e7450f52-b111-11ee-98f0-6d05b1d4d9a1
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=XtiOiXKUw7ajcKNYe04oSloxYJ6kNrHkq3Wv6L+6kS6o1XWg4UxLv1fNEB5qUX3BS2INY9NLOkGk5rQjNV2jHrU3kbnDmM6/Ka0h4fL1HdexdMsZZ096mOvDWEGsFtaJTgxmms9T90nPXgbIXd5nCcENtdPi68m1Etn0wG+SjIcYWOrlHMb0L3s5QPpZC+IcvtFCVMO3ltcalbx/fRBWXHCerPVSNRWzO6jnrciVBv0qAcZiiJq9Ai+gB2qNETSCNfZAnXuB9D+Cxhnr/twYdsIDr6yRNMoBkEdVL3IOpeFthN+sNCHkwAH5SEXoVOMbdHIr6xIz0QtfQnymSxMxRg==
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=XqL0kcWJVAkUceJET5Sh5tRkIKjMYXMkn5B0KUkxMa4=;
 b=Ocz9TpTbOBxwkd/fj0RgcinR9+2jRGHUnFgvG1BOHVk4c36z/VV7Bi9+70HzSoVIj/OAZeQFn3vl72RGbUDCndau8KvqsEDIeBR9REzI2R06SPaVfvC0SSLCBsW+SFlZg4rFD7p9NWsNN+17N+zMZoaA24XDOJ1Wy/NqASmd6wK/85D1mIDics+8IOmE6ANuyzGlfcn2jWnBbLgPqQiMn6OthrnnG8Gad2EZ9bRa/t1VUCMFvz0dimfVA3quT/Rzs87q7rFDChkdOrKCozCycVbg5h/8Is98kxhFh9PmLB+yXybRmr5nIvng9c2i2W8LgLnbDpAZL5t6h7dyEatKdg==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=lists.xenproject.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)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=XqL0kcWJVAkUceJET5Sh5tRkIKjMYXMkn5B0KUkxMa4=;
 b=MuZDLRvTZUwdUj2wjcHo/S+OF61eQxIejj9skcBzVwcVBVGa+J4q/tIavmyWGXgZ03OKx2N/++3hpsMSRSS7ag+h76ut8nmdmwSy3Afg+5U2zcCY/lcRQeOX6wbyLwncRGcg8jO0l93ZUGHD8uqySn61glaKT7Xg9NQVQTO/clc=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C
From: Jiqian Chen <Jiqian.Chen@amd.com>
To: <xen-devel@lists.xenproject.org>
CC: Jan Beulich <jbeulich@suse.com>, Andrew Cooper
	<andrew.cooper3@citrix.com>, =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?=
	<roger.pau@citrix.com>, Wei Liu <wl@xen.org>, George Dunlap
	<george.dunlap@citrix.com>, Julien Grall <julien@xen.org>, Stefano Stabellini
	<sstabellini@kernel.org>, Anthony PERARD <anthony.perard@citrix.com>,
	"Juergen Gross" <jgross@suse.com>, "Daniel P . Smith"
	<dpsmith@apertussolutions.com>, Stewart Hildebrand
	<Stewart.Hildebrand@amd.com>, Huang Rui <Ray.Huang@amd.com>, Jiqian Chen
	<Jiqian.Chen@amd.com>
Subject: [RFC XEN PATCH v5 0/5] Support device passthrough when dom0 is PVH on Xen
Date: Fri, 12 Jan 2024 14:13:12 +0800
Message-ID: <20240112061317.418658-1-Jiqian.Chen@amd.com>
X-Mailer: git-send-email 2.34.1
MIME-Version: 1.0
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
X-Originating-IP: [10.180.168.240]
X-ClientProxiedBy: SATLEXMB03.amd.com (10.181.40.144) To SATLEXMB04.amd.com
 (10.181.40.145)
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: DS3PEPF000099D5:EE_|PH8PR12MB7254:EE_
X-MS-Office365-Filtering-Correlation-Id: 318fe11c-b6dc-4a8f-81fb-08dc1335c798
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam: BCL:0;
X-Microsoft-Antispam-Message-Info:
	KVTtmMJsEyF8m5Rx/UX7+1662GUXEZyuxfqTZvuyweSiTEtGOmWJAWPqqaIAC7SVaKMQoSIA/TvjPqLz7CJxPElwPEA8dIQFVlmEe5SBVx8HVhhpKM5ArWxwSrxA4rp09cswDI6X8T1GYvAkFK5jKXqJ91jOYc4sR6e8++kfEaYtapeRwsXGvqEr6tm6b0F2S8/bVyXWwQIb1BqdWtj1G6giiXzKGiKEnw+AQh/9mXLic5E2ViWy0Bif1X849x0c2PEOxyfgK8ThF22AV6IGhwPSQrYYjKQguQAik3oDg9O5xGGGuw1VjQ878OreEzV9A1dDfoAGf3wr9lUPg8afyefOlPwdyELPMXs/ZNhvV1W+wNSy1nFI+6FOq52ZyW/vgjwvB4Pai5tHTKVY+PHjIkSkWydoXr29v7u6w/v64C1IPpU+ahrpRtWN67Ie7R8m0ratQUwYHs2/FS9H37C+Brmn6nCzP03Lm/ChwXQwad71DZk+fReU62urIvzYs6JM83CLAu2LUculo30TkqAtOOt0fAAo1ZkDo73Y/ZZVL7b5aWrIZzsYXhx5rHGpSNRzn0KsA4HdQP24gOfMoPkp8tcwm6kw7Vl/HEQFhVC1h9uqVx+gd4vCHuNH/En9Jl7OAjI8AzJp52AM/DcB1cbj7v3MHmhdaKXDUJGnIDF1swPtPM82E5OkLdK/Ol1z5SlRFmoKpXXhqKJaQyyvfdIbZAOsl3Y0lWo1te/i2Eip3pwFBgVA3+Me8/fNp44EyHihXG+UZthxFNuf2fUhlZtttBpxw5I1tvzGFMT7WFUgEao=
X-Forefront-Antispam-Report:
	CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230031)(4636009)(39860400002)(376002)(396003)(346002)(136003)(230922051799003)(1800799012)(82310400011)(186009)(64100799003)(451199024)(46966006)(40470700004)(36840700001)(40460700003)(40480700001)(82740400003)(336012)(356005)(41300700001)(86362001)(36756003)(70206006)(81166007)(2906002)(36860700001)(83380400001)(47076005)(16526019)(478600001)(1076003)(2616005)(26005)(426003)(7696005)(70586007)(316002)(6666004)(54906003)(966005)(6916009)(5660300002)(8936002)(4326008)(7416002)(8676002)(36900700001);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Jan 2024 06:14:48.1372
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 318fe11c-b6dc-4a8f-81fb-08dc1335c798
X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com]
X-MS-Exchange-CrossTenant-AuthSource:
	DS3PEPF000099D5.namprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH8PR12MB7254

Hi All,
This is v5 series to support passthrough when dom0 is PVH
v4->v5 changes:
* patch#1: add pci_lock wrap function vpci_reset_device_state
* patch#2: move the check of self map_pirq to physdev.c, and change to check if the caller has PIRQ flag, and just break for PHYSDEVOP_(un)map_pirq in hvm_physdev_op
* patch#3: return -EOPNOTSUPP instead, and use ASSERT(!has_pirq(currd));
* patch#4: is the patch#5 in v4 because patch#5 in v5 has some dependency on it. And add the handling of errno and add the Reviewed-by Stefano
* patch#5: is the patch#4 in v4. New implementation to add new hypercall XEN_DOMCTL_gsi_permission to grant gsi


v3->v4 changes:
* patch#1: change the comment of PHYSDEVOP_pci_device_state_reset; move printings behind pcidevs_unlock
* patch#2: add check to prevent PVH self map
* patch#3: new patch, The implementation of adding PHYSDEVOP_setup_gsi for PVH is treated as a separate patch
* patch#4: new patch to solve the map_pirq problem of PVH dom0. use gsi to grant irq permission in XEN_DOMCTL_irq_permission.
* patch#5: to be compatible with previous kernel versions, when there is no gsi sysfs, still use irq
v4 link:
https://lore.kernel.org/xen-devel/20240105070920.350113-1-Jiqian.Chen@amd.com/T/#t

v2->v3 changes:
* patch#1: move the content out of pci_reset_device_state and delete pci_reset_device_state; add xsm_resource_setup_pci check for PHYSDEVOP_pci_device_state_reset; add description for PHYSDEVOP_pci_device_state_reset;
* patch#2: du to changes in the implementation of the second patch on kernel side(that it will do setup_gsi and map_pirq when assigning a device to passthrough), add PHYSDEVOP_setup_gsi for PVH dom0, and we need to support self mapping.
* patch#3: du to changes in the implementation of the second patch on kernel side(that adds a new sysfs for gsi instead of a new syscall), so read gsi number from the sysfs of gsi.
v3 link:
https://lore.kernel.org/xen-devel/20231210164009.1551147-1-Jiqian.Chen@amd.com/T/#t

v2 link:
https://lore.kernel.org/xen-devel/20231124104136.3263722-1-Jiqian.Chen@amd.com/T/#t
Below is the description of v2 cover letter:
This series of patches are the v2 of the implementation of passthrough when dom0 is PVH on Xen.
We sent the v1 to upstream before, but the v1 had so many problems and we got lots of suggestions.
I will introduce all issues that these patches try to fix and the differences between v1 and v2.

Issues we encountered:
1. pci_stub failed to write bar for a passthrough device.
Problem: when we run “sudo xl pci-assignable-add <sbdf>” to assign a device, pci_stub will call “pcistub_init_device() -> pci_restore_state() -> pci_restore_config_space() ->
pci_restore_config_space_range() -> pci_restore_config_dword() -> pci_write_config_dword()”, the pci config write will trigger an io interrupt to bar_write() in the xen, but the
bar->enabled was set before, the write is not allowed now, and then when 
bar->Qemu config the
passthrough device in xen_pt_realize(), it gets invalid bar values.

Reason: the reason is that we don't tell vPCI that the device has been reset, so the current cached state in pdev->vpci is all out of date and is different from the real device state.

Solution: to solve this problem, the first patch of kernel(xen/pci: Add xen_reset_device_state
function) and the fist patch of xen(xen/vpci: Clear all vpci status of device) add a new hypercall to reset the state stored in vPCI when the state of real device has changed.
Thank Roger for the suggestion of this v2, and it is different from v1 (https://lore.kernel.org/xen-devel/20230312075455.450187-3-ray.huang@amd.com/), v1 simply allow domU to write pci bar, it does not comply with the design principles of vPCI.

2. failed to do PHYSDEVOP_map_pirq when dom0 is PVH
Problem: HVM domU will do PHYSDEVOP_map_pirq for a passthrough device by using gsi. See xen_pt_realize->xc_physdev_map_pirq and pci_add_dm_done->xc_physdev_map_pirq. Then xc_physdev_map_pirq will call into Xen, but in hvm_physdev_op(), PHYSDEVOP_map_pirq is not allowed.

Reason: In hvm_physdev_op(), the variable "currd" is PVH dom0 and PVH has no X86_EMU_USE_PIRQ flag, it will fail at has_pirq check.

Solution: I think we may need to allow PHYSDEVOP_map_pirq when "currd" is dom0 (at present dom0 is PVH). The second patch of xen(x86/pvh: Open PHYSDEVOP_map_pirq for PVH dom0) allow PVH dom0 do PHYSDEVOP_map_pirq. This v2 patch is better than v1, v1 simply remove the has_pirq check(xen https://lore.kernel.org/xen-devel/20230312075455.450187-4-ray.huang@amd.com/).

3. the gsi of a passthrough device doesn't be unmasked
 3.1 failed to check the permission of pirq
 3.2 the gsi of passthrough device was not registered in PVH dom0

Problem:
3.1 callback function pci_add_dm_done() will be called when qemu config a passthrough device for domU.
This function will call xc_domain_irq_permission()-> pirq_access_permitted() to check if the gsi has corresponding mappings in dom0. But it didn’t, so failed. See XEN_DOMCTL_irq_permission->pirq_access_permitted, "current" is PVH dom0 and it return irq is 0.
3.2 it's possible for a gsi (iow: vIO-APIC pin) to never get registered on PVH dom0, because the devices of PVH are using MSI(-X) interrupts. However, the IO-APIC pin must be configured for it to be able to be mapped into a domU.

Reason: After searching codes, I find "map_pirq" and "register_gsi" will be done in function vioapic_write_redirent->vioapic_hwdom_map_gsi when the gsi(aka ioapic's pin) is unmasked in PVH dom0.
So the two problems can be concluded to that the gsi of a passthrough device doesn't be unmasked.

Solution: to solve these problems, the second patch of kernel(xen/pvh: Unmask irq for passthrough device in PVH dom0) call the unmask_irq() when we assign a device to be passthrough. So that passthrough devices can have the mapping of gsi on PVH dom0 and gsi can be registered. This v2 patch is different from the v1( kernel https://lore.kernel.org/xen-devel/20230312120157.452859-5-ray.huang@amd.com/,
kernel https://lore.kernel.org/xen-devel/20230312120157.452859-5-ray.huang@amd.com/ and xen https://lore.kernel.org/xen-devel/20230312075455.450187-5-ray.huang@amd.com/),
v1 performed "map_pirq" and "register_gsi" on all pci devices on PVH dom0, which is unnecessary and may cause multiple registration.

4. failed to map pirq for gsi
Problem: qemu will call xc_physdev_map_pirq() to map a passthrough device’s gsi to pirq in function xen_pt_realize(). But failed.

Reason: According to the implement of xc_physdev_map_pirq(), it needs gsi instead of irq, but qemu pass irq to it and treat irq as gsi, it is got from file /sys/bus/pci/devices/xxxx:xx:xx.x/irq in function xen_host_pci_device_get(). But actually the gsi number is not equal with irq. On PVH dom0, when it allocates irq for a gsi in function acpi_register_gsi_ioapic(), allocation is dynamic, and follow the principle of applying first, distributing first. And if you debug the kernel codes(see function __irq_alloc_descs), you will find the irq number is allocated from small to large by order, but the applying gsi number is not, gsi 38 may come before gsi 28, that causes gsi 38 get a smaller irq number than gsi 28, and then gsi != irq.

Solution: we can record the relation between gsi and irq, then when userspace(qemu) want to use gsi, we can do a translation. The third patch of kernel(xen/privcmd: Add new syscall to get gsi from irq) records all the relations in acpi_register_gsi_xen_pvh() when dom0 initialize pci devices, and provide a syscall for userspace to get the gsi from irq. The third patch of xen(tools: Add new function to get gsi from irq) add a new function xc_physdev_gsi_from_irq() to call the new syscall added on kernel side.
And then userspace can use that function to get gsi. Then xc_physdev_map_pirq() will success. This v2 patch is the same as v1( kernel https://lore.kernel.org/xen-devel/20230312120157.452859-6-ray.huang@amd.com/ and xen https://lore.kernel.org/xen-devel/20230312075455.450187-6-ray.huang@amd.com/)

About the v2 patch of qemu, just change an included head file, other are similar to the v1 ( qemu https://lore.kernel.org/xen-devel/20230312092244.451465-19-ray.huang@amd.com/), just call
xc_physdev_gsi_from_irq() to get gsi from irq.

Jiqian Chen (5):
  xen/vpci: Clear all vpci status of device
  x86/pvh: Allow (un)map_pirq when dom0 is PVH
  x86/pvh: Add PHYSDEVOP_setup_gsi for PVH dom0
  libxl: Use gsi instead of irq for mapping pirq
  domctl: Add XEN_DOMCTL_gsi_permission to grant gsi

 tools/include/xenctrl.h      |  5 +++++
 tools/libs/ctrl/xc_domain.c  | 15 +++++++++++++
 tools/libs/light/libxl_pci.c | 41 ++++++++++++++++++++++++++++++++----
 xen/arch/x86/domctl.c        | 31 +++++++++++++++++++++++++++
 xen/arch/x86/hvm/hypercall.c |  9 ++++++++
 xen/arch/x86/physdev.c       | 22 +++++++++++++++++++
 xen/drivers/pci/physdev.c    | 36 +++++++++++++++++++++++++++++++
 xen/drivers/vpci/vpci.c      | 10 +++++++++
 xen/include/public/domctl.h  |  9 ++++++++
 xen/include/public/physdev.h |  7 ++++++
 xen/include/xen/vpci.h       |  6 ++++++
 xen/xsm/flask/hooks.c        |  1 +
 12 files changed, 188 insertions(+), 4 deletions(-)

-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Fri Jan 12 06:15:11 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 12 Jan 2024 06:15:11 +0000
Received: from list by lists.xenproject.org with outflank-mailman.666638.1037394 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rOAox-0000V0-At; Fri, 12 Jan 2024 06:15:11 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 666638.1037394; Fri, 12 Jan 2024 06:15:11 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rOAox-0000Ut-5y; Fri, 12 Jan 2024 06:15:11 +0000
Received: by outflank-mailman (input) for mailman id 666638;
 Fri, 12 Jan 2024 06:15:09 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=/PwP=IW=amd.com=Jiqian.Chen@srs-se1.protection.inumbo.net>)
 id 1rOAov-0000At-TU
 for xen-devel@lists.xenproject.org; Fri, 12 Jan 2024 06:15:09 +0000
Received: from NAM02-DM3-obe.outbound.protection.outlook.com
 (mail-dm3nam02on20600.outbound.protection.outlook.com
 [2a01:111:f403:2405::600])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id ef574fd8-b111-11ee-98f0-6d05b1d4d9a1;
 Fri, 12 Jan 2024 07:15:09 +0100 (CET)
Received: from CH0PR03CA0004.namprd03.prod.outlook.com (2603:10b6:610:b0::9)
 by DM6PR12MB4156.namprd12.prod.outlook.com (2603:10b6:5:218::17) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7181.21; Fri, 12 Jan
 2024 06:15:05 +0000
Received: from DS3PEPF000099D5.namprd04.prod.outlook.com
 (2603:10b6:610:b0:cafe::40) by CH0PR03CA0004.outlook.office365.com
 (2603:10b6:610:b0::9) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7181.19 via Frontend
 Transport; Fri, 12 Jan 2024 06:15:04 +0000
Received: from SATLEXMB04.amd.com (165.204.84.17) by
 DS3PEPF000099D5.mail.protection.outlook.com (10.167.17.6) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.7181.14 via Frontend Transport; Fri, 12 Jan 2024 06:15:04 +0000
Received: from cjq-desktop.amd.com (10.180.168.240) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.34; Fri, 12 Jan
 2024 00:14:41 -0600
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: ef574fd8-b111-11ee-98f0-6d05b1d4d9a1
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=YaV7FnLR7ifVUz5RQO+gDNH1KTtTC/gcKh2mw5+dcx972lUvNKIYbc2d9eOpUh6agA/3UK81pXyf4N3UQqVmevDwP7OjroEBZmweXfAMHbVJuXm8GlVviJyo6WSDCKjoECAUQ6yjuhnwne7VbxL8R3Y38/rFyGZGtAJuHMNHSipSn4NtL/3k2qg0ghqMy6cz5OSge4G77ZEbLJP0RIpEIqu2XVZFMOXx5kOT7ny4zhJrwjF7lRFdLQZB2u4wilbaaxJPfNqqyVS40X7RvtMaQ56yaNb73SarAxVw5nlXfLMzc+SSed482XznuhqpapJnAs79FCuZu/rUPcEqni3FfQ==
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=UY1dhgmm/7iGPInQH0m8WagUQ03lrwhilTFth0736UM=;
 b=W1X0g/6qxoMI55E2WBGbi5kQZUKDJxSG55mwm/HfR+5Yw5H19LGQMLvDRQptgOga7hZLsiWrtcQEB2wYVTyhXiUXCDDF7yGL77Xxb0zDpFbdNRz9FCQL+I84YDDSAusqzDDHLNp3VQu7my8a7p5j05947xzivpeQSPa4/NBkzv4icm1VTV7IGd1f4MSdViuh+DoMpnEraTBkjrrqv90/dWBMvCfxk412yDGJpmW/OjweCde7CYvNQIJRBHQiIa70LY5mhaUpEdZ81P7W1l084RL8Yepj5vBY5WV3TOnesF8vg0IfL9i8pen6h8NonN2dNAkvuxqF/NFtfFba9DV1Mg==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=lists.xenproject.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)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=UY1dhgmm/7iGPInQH0m8WagUQ03lrwhilTFth0736UM=;
 b=1z3ejlsSCP7BjUMwzrWQIMpfeuUN2Few1c2PwhGgGX2WP7s3dcTTDVsNrhDAIT2MtUX1trndXSuXpTfJ1+jM3CG9iUKODTsh8Su/+A4ktJ6LO/ek01HY8VVRHySXfdeD/fwtdipH3oF43BHU/rArCuK4mJUDlXEANN46wP158MA=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C
From: Jiqian Chen <Jiqian.Chen@amd.com>
To: <xen-devel@lists.xenproject.org>
CC: Jan Beulich <jbeulich@suse.com>, Andrew Cooper
	<andrew.cooper3@citrix.com>, =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?=
	<roger.pau@citrix.com>, Wei Liu <wl@xen.org>, George Dunlap
	<george.dunlap@citrix.com>, Julien Grall <julien@xen.org>, Stefano Stabellini
	<sstabellini@kernel.org>, Anthony PERARD <anthony.perard@citrix.com>,
	"Juergen Gross" <jgross@suse.com>, "Daniel P . Smith"
	<dpsmith@apertussolutions.com>, Stewart Hildebrand
	<Stewart.Hildebrand@amd.com>, Huang Rui <Ray.Huang@amd.com>, Jiqian Chen
	<Jiqian.Chen@amd.com>, Huang Rui <ray.huang@amd.com>
Subject: [RFC XEN PATCH v5 1/5] xen/vpci: Clear all vpci status of device
Date: Fri, 12 Jan 2024 14:13:13 +0800
Message-ID: <20240112061317.418658-2-Jiqian.Chen@amd.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20240112061317.418658-1-Jiqian.Chen@amd.com>
References: <20240112061317.418658-1-Jiqian.Chen@amd.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-Originating-IP: [10.180.168.240]
X-ClientProxiedBy: SATLEXMB03.amd.com (10.181.40.144) To SATLEXMB04.amd.com
 (10.181.40.145)
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: DS3PEPF000099D5:EE_|DM6PR12MB4156:EE_
X-MS-Office365-Filtering-Correlation-Id: 979ceaec-63db-4e40-5866-08dc1335d175
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam: BCL:0;
X-Microsoft-Antispam-Message-Info:
	4Ce10cm9VV5qt2iduExnwW/XdFVKtmB1NVUYdaOZ8V2+D/yAhv3Fkki0eEowzaRR021/MltdgPrHz5rd6212WEoXE1bQlX4So4vYZVbMlXEc2tcBSA2Hv+NE99Ubqx9CTwYXdK8rX8qnzpZmgBLV3e06wVIxPWm1BH0s0KShBSJf5oH4gP3P1inJW6r20vTvJ3JRu0TiNI3OBlQs4Y6e+XI6w6Dn8yv/TL+8r8Lu8Y38YzCnzUkkXJIex57vLLFuILREIpROOyLM8WqK2OOoDt+IFFMX6f+YXnmKHHBVbGFLpnm7ziKA+P+gvsgsw5J3Ogn2ZOKMnbM0I+3kNefHoD0kQ7l0v+WT+x1ydjL2nQaGaMC8SWIH6UcJtzyKdmoRDkirp2WHcgfEfp+KKuO9NeSsWt/Nvx3GyC7jiag6X1ZwyzGM9JrA35ie1h15wuHOmBajGalnA8bSWFNGtBJy3wKFh+yBHcuEZZ+CA13JLHhxR7BLOiBenS9oFvUGr84gONurmjXbII5JNUpeROzrUG4zEDKH103SQ0gKEMLuvVrFfn1ch8YKALE+07U0jwR9W39EwEj+AH77dPkhWow+mCp/uXiPvHuM79Fg+evZrwbZGJspj8jbnHGLCdddDsQ8lUx0dsMhYa4xzvRzT32mqhd+UJARkagSOhAQe+/WuFmsySwLH6+2cF9ZHNWxThjE7V3N0GXZVPHNvq28/YPW+vcMnpUCTZnpjc40Xl/esJELm+4zFrkzpO61LoZ7+cvFSyJGBQFkth58t3O53UdpBw==
X-Forefront-Antispam-Report:
	CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230031)(4636009)(39860400002)(346002)(376002)(396003)(136003)(230922051799003)(64100799003)(451199024)(1800799012)(186009)(82310400011)(46966006)(36840700001)(40470700004)(70206006)(70586007)(7696005)(26005)(36756003)(1076003)(336012)(2616005)(426003)(16526019)(6666004)(86362001)(82740400003)(36860700001)(81166007)(356005)(83380400001)(41300700001)(47076005)(478600001)(4326008)(40460700003)(40480700001)(7416002)(2906002)(5660300002)(316002)(54906003)(8936002)(8676002)(6916009)(36900700001);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Jan 2024 06:15:04.6840
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 979ceaec-63db-4e40-5866-08dc1335d175
X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com]
X-MS-Exchange-CrossTenant-AuthSource:
	DS3PEPF000099D5.namprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR12MB4156

When a device has been reset on dom0 side, the vpci on Xen
side won't get notification, so the cached state in vpci is
all out of date compare with the real device state.
To solve that problem, add a new hypercall to clear all vpci
device state. When the state of device is reset on dom0 side,
dom0 can call this hypercall to notify vpci.

Co-developed-by: Huang Rui <ray.huang@amd.com>
Signed-off-by: Jiqian Chen <Jiqian.Chen@amd.com>
---
 xen/arch/x86/hvm/hypercall.c |  1 +
 xen/drivers/pci/physdev.c    | 36 ++++++++++++++++++++++++++++++++++++
 xen/drivers/vpci/vpci.c      | 10 ++++++++++
 xen/include/public/physdev.h |  7 +++++++
 xen/include/xen/vpci.h       |  6 ++++++
 5 files changed, 60 insertions(+)

diff --git a/xen/arch/x86/hvm/hypercall.c b/xen/arch/x86/hvm/hypercall.c
index eeb73e1aa5d0..6ad5b4d5f11f 100644
--- a/xen/arch/x86/hvm/hypercall.c
+++ b/xen/arch/x86/hvm/hypercall.c
@@ -84,6 +84,7 @@ long hvm_physdev_op(int cmd, XEN_GUEST_HANDLE_PARAM(void) arg)
     case PHYSDEVOP_pci_mmcfg_reserved:
     case PHYSDEVOP_pci_device_add:
     case PHYSDEVOP_pci_device_remove:
+    case PHYSDEVOP_pci_device_state_reset:
     case PHYSDEVOP_dbgp_op:
         if ( !is_hardware_domain(currd) )
             return -ENOSYS;
diff --git a/xen/drivers/pci/physdev.c b/xen/drivers/pci/physdev.c
index 42db3e6d133c..73dc8f058b0e 100644
--- a/xen/drivers/pci/physdev.c
+++ b/xen/drivers/pci/physdev.c
@@ -2,6 +2,7 @@
 #include <xen/guest_access.h>
 #include <xen/hypercall.h>
 #include <xen/init.h>
+#include <xen/vpci.h>
 
 #ifndef COMPAT
 typedef long ret_t;
@@ -67,6 +68,41 @@ ret_t pci_physdev_op(int cmd, XEN_GUEST_HANDLE_PARAM(void) arg)
         break;
     }
 
+    case PHYSDEVOP_pci_device_state_reset: {
+        struct physdev_pci_device dev;
+        struct pci_dev *pdev;
+        pci_sbdf_t sbdf;
+
+        if ( !is_pci_passthrough_enabled() )
+            return -EOPNOTSUPP;
+
+        ret = -EFAULT;
+        if ( copy_from_guest(&dev, arg, 1) != 0 )
+            break;
+        sbdf = PCI_SBDF(dev.seg, dev.bus, dev.devfn);
+
+        ret = xsm_resource_setup_pci(XSM_PRIV, sbdf.sbdf);
+        if ( ret )
+            break;
+
+        pcidevs_lock();
+        pdev = pci_get_pdev(NULL, sbdf);
+        if ( !pdev )
+        {
+            pcidevs_unlock();
+            ret = -ENODEV;
+            break;
+        }
+
+        write_lock(&pdev->domain->pci_lock);
+        ret = vpci_reset_device_state(pdev);
+        write_unlock(&pdev->domain->pci_lock);
+        pcidevs_unlock();
+        if ( ret )
+            printk(XENLOG_ERR "%pp: failed to reset PCI device state\n", &sbdf);
+        break;
+    }
+
     default:
         ret = -ENOSYS;
         break;
diff --git a/xen/drivers/vpci/vpci.c b/xen/drivers/vpci/vpci.c
index 72ef277c4f8e..c6df2c6a9561 100644
--- a/xen/drivers/vpci/vpci.c
+++ b/xen/drivers/vpci/vpci.c
@@ -107,6 +107,16 @@ int vpci_add_handlers(struct pci_dev *pdev)
 
     return rc;
 }
+
+int vpci_reset_device_state(struct pci_dev *pdev)
+{
+    ASSERT(pcidevs_locked());
+    ASSERT(rw_is_write_locked(&pdev->domain->pci_lock));
+
+    vpci_remove_device(pdev);
+    return vpci_add_handlers(pdev);
+}
+
 #endif /* __XEN__ */
 
 static int vpci_register_cmp(const struct vpci_register *r1,
diff --git a/xen/include/public/physdev.h b/xen/include/public/physdev.h
index f0c0d4727c0b..f5bab1f29779 100644
--- a/xen/include/public/physdev.h
+++ b/xen/include/public/physdev.h
@@ -296,6 +296,13 @@ DEFINE_XEN_GUEST_HANDLE(physdev_pci_device_add_t);
  */
 #define PHYSDEVOP_prepare_msix          30
 #define PHYSDEVOP_release_msix          31
+/*
+ * Notify the hypervisor that a PCI device has been reset, so that any
+ * internally cached state is regenerated.  Should be called after any
+ * device reset performed by the hardware domain.
+ */
+#define PHYSDEVOP_pci_device_state_reset     32
+
 struct physdev_pci_device {
     /* IN */
     uint16_t seg;
diff --git a/xen/include/xen/vpci.h b/xen/include/xen/vpci.h
index d20c301a3db3..6ec83ce9ae13 100644
--- a/xen/include/xen/vpci.h
+++ b/xen/include/xen/vpci.h
@@ -30,6 +30,7 @@ int __must_check vpci_add_handlers(struct pci_dev *pdev);
 
 /* Remove all handlers and free vpci related structures. */
 void vpci_remove_device(struct pci_dev *pdev);
+int __must_check vpci_reset_device_state(struct pci_dev *pdev);
 
 /* Add/remove a register handler. */
 int __must_check vpci_add_register_mask(struct vpci *vpci,
@@ -262,6 +263,11 @@ static inline int vpci_add_handlers(struct pci_dev *pdev)
 
 static inline void vpci_remove_device(struct pci_dev *pdev) { }
 
+static inline int __must_check vpci_reset_device_state(struct pci_dev *pdev)
+{
+    return 0;
+}
+
 static inline void vpci_dump_msi(void) { }
 
 static inline uint32_t vpci_read(pci_sbdf_t sbdf, unsigned int reg,
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Fri Jan 12 06:15:18 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 12 Jan 2024 06:15:18 +0000
Received: from list by lists.xenproject.org with outflank-mailman.666641.1037402 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rOAp4-0000qu-G7; Fri, 12 Jan 2024 06:15:18 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 666641.1037402; Fri, 12 Jan 2024 06:15:18 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rOAp4-0000pz-DC; Fri, 12 Jan 2024 06:15:18 +0000
Received: by outflank-mailman (input) for mailman id 666641;
 Fri, 12 Jan 2024 06:15:17 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=/PwP=IW=amd.com=Jiqian.Chen@srs-se1.protection.inumbo.net>)
 id 1rOAp2-0000lq-Vh
 for xen-devel@lists.xenproject.org; Fri, 12 Jan 2024 06:15:16 +0000
Received: from NAM10-DM6-obe.outbound.protection.outlook.com
 (mail-dm6nam10on20613.outbound.protection.outlook.com
 [2a01:111:f400:7e88::613])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id f2a87704-b111-11ee-9b0f-b553b5be7939;
 Fri, 12 Jan 2024 07:15:15 +0100 (CET)
Received: from CH0PR04CA0053.namprd04.prod.outlook.com (2603:10b6:610:77::28)
 by PH7PR12MB8105.namprd12.prod.outlook.com (2603:10b6:510:2b7::14)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7181.21; Fri, 12 Jan
 2024 06:15:10 +0000
Received: from DS3PEPF000099D4.namprd04.prod.outlook.com
 (2603:10b6:610:77:cafe::39) by CH0PR04CA0053.outlook.office365.com
 (2603:10b6:610:77::28) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7181.19 via Frontend
 Transport; Fri, 12 Jan 2024 06:15:10 +0000
Received: from SATLEXMB04.amd.com (165.204.84.17) by
 DS3PEPF000099D4.mail.protection.outlook.com (10.167.17.5) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.7181.14 via Frontend Transport; Fri, 12 Jan 2024 06:15:09 +0000
Received: from cjq-desktop.amd.com (10.180.168.240) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.34; Fri, 12 Jan
 2024 00:14:45 -0600
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: f2a87704-b111-11ee-9b0f-b553b5be7939
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=nEK9yXfO6tP5hio9WqBB9KCPYb94o2r08SrzJhzSf8aJAFBQzqdkxUfhQb1cXyETqAQQumbasCptenl/AV44CvdwzkLcaV72IVHVbOg4oXalrsY8PcWwup+af3onL9ZL8BZ1Pi1LZNIEb+vCW9hYmXOxceiBGYxdO0GJnZWMsclMnb4cfWbGafkgF0drv1ShhDnCLZ/flv1xc2BLuWH4r8tmXajn4ZQXyMVtLl6sWig113ocVWW2F9k0immmCPKkNFwzKukhgjfntCOSyqJiTrWmSXGJ2+GzWrdghLOw1NVBSH2gUS2WtfRfMF+jg76z2JFvnzDKEglJEcknBYpzow==
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=hT7olkd/7ks/vk3IK/hSUDJvUuE/1TeMe3oCQr0a9xg=;
 b=FkIMwASHzRsLEFy9zOMTXIRY7iaqq2P7cm+1aT1tqcOe0PV4etJoybGcK45rHh8rb6V4+bbFxtkMKG0NPaffAyg3eau+FNWWM2/xoGZWNCJD31+le/lxcBfvUku6xIrY3zrnTZF0kYxsf7mLCsVXQghmT37eKyw03tMDfnTyxp+CIqElwlEyjcj3OdFejLpme7KRctdjH2UA8xdMyTp2Xpj3Ta0ZG2S2TvKQE7esudSDXftShXin5QOsLrSZ7asb5ROH7dS2XFidZ38HSEflJn6YAXVfWJgKCtf/M1ufEaXgxa4B5nv2Vrn8Cc46YRLoV1QMcKrTMIHhvuF3j9NOsQ==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=lists.xenproject.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)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=hT7olkd/7ks/vk3IK/hSUDJvUuE/1TeMe3oCQr0a9xg=;
 b=CvvpoFdo79N8RYBwtScGWo4oqBpzvW9V+SdXb81KaTmVVuZLjNjJaicmmJBelAMljsfVSLWf1+R47037AUJSy86ujRFnmt9Ne5Em2rGXvxnKW1yr3rpz328qDylbjeZ4k1keZeEG58JsbEOzCOk1f8B+DOI4wp86ggdj3JR0qZY=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C
From: Jiqian Chen <Jiqian.Chen@amd.com>
To: <xen-devel@lists.xenproject.org>
CC: Jan Beulich <jbeulich@suse.com>, Andrew Cooper
	<andrew.cooper3@citrix.com>, =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?=
	<roger.pau@citrix.com>, Wei Liu <wl@xen.org>, George Dunlap
	<george.dunlap@citrix.com>, Julien Grall <julien@xen.org>, Stefano Stabellini
	<sstabellini@kernel.org>, Anthony PERARD <anthony.perard@citrix.com>,
	"Juergen Gross" <jgross@suse.com>, "Daniel P . Smith"
	<dpsmith@apertussolutions.com>, Stewart Hildebrand
	<Stewart.Hildebrand@amd.com>, Huang Rui <Ray.Huang@amd.com>, Jiqian Chen
	<Jiqian.Chen@amd.com>, Huang Rui <ray.huang@amd.com>
Subject: [RFC XEN PATCH v5 2/5] x86/pvh: Allow (un)map_pirq when dom0 is PVH
Date: Fri, 12 Jan 2024 14:13:14 +0800
Message-ID: <20240112061317.418658-3-Jiqian.Chen@amd.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20240112061317.418658-1-Jiqian.Chen@amd.com>
References: <20240112061317.418658-1-Jiqian.Chen@amd.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-Originating-IP: [10.180.168.240]
X-ClientProxiedBy: SATLEXMB03.amd.com (10.181.40.144) To SATLEXMB04.amd.com
 (10.181.40.145)
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: DS3PEPF000099D4:EE_|PH7PR12MB8105:EE_
X-MS-Office365-Filtering-Correlation-Id: 020d4c8b-736c-4e90-b461-08dc1335d477
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam: BCL:0;
X-Microsoft-Antispam-Message-Info:
	8VvNN+qndOmFudVWRF7+yZpliVTmD811oq9YaaXy0cexfFrrHq9DnU2/GToL9ypivKazqqqsS3I9XbIVip5BYfp0rwcodGceOIs+WVrIGpQDGf6Bv62l+uY9S/djUrO/vJ2iZaSoLpYIiNRkSo/RzbSXgXlvn5JU5MKE92ulHr03igej3yS9pKwyUkWhTSmKpYA1I7RDDOBqW5GadSTtMxR/7cZGBtR19/5SKQzvJHLGlWgi6+IjCO52uWrsnE2lTnf8Xfk/DrDbiYsn3eu+9scSrFoEozbyKixmff91Jsc8tqNHIg8PQ9C8ac6KQ+D6+QjKyjfz8u296+Y5unXYv94wMgHrsJiPCajgh8byjoa5x+3Un6aj/MqwaZ4fpNzDl1lSMHM88oWk/cxFLQJkZHaPjsb5ly46seQjQvE8KwPpEPOBvk596JzQ8lScnl9fxSslftHXwe+RRkHOxJua/cZQe4gZEKlEGszxqqg/X6tcCyWr0XZ+XLTC/xn5QhlQ/WJkhIqVewRtQEHD/7X/jz7EBb+aPzldl/2k0R3iYIT5FiQvIT5TcrQZ8nxCTcXiFxsuR4BncRDFwDIe0L38DKwP7fUyBPyI0wQD7KxEpV5CWZ6sO13tJAEwe0dR2PfBsk2U8EM28GDRTj51BOB+DPGwonr++9u/5wdrSSWA/zBW2RFngI1wDDWAq1CxrfK/Ahlc/6ouTPyzoikDZAlaIp3RsneNvuBony1MFL5+sAp7Q6iqYOAymXghMxM5xoyejQfIEh3J5yLhj0zUfinunA==
X-Forefront-Antispam-Report:
	CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230031)(4636009)(346002)(39860400002)(376002)(396003)(136003)(230922051799003)(451199024)(64100799003)(82310400011)(186009)(1800799012)(36840700001)(46966006)(40470700004)(7696005)(6666004)(478600001)(426003)(336012)(26005)(1076003)(16526019)(2616005)(6916009)(316002)(36756003)(8936002)(8676002)(70586007)(70206006)(54906003)(356005)(81166007)(82740400003)(83380400001)(47076005)(86362001)(4326008)(36860700001)(5660300002)(7416002)(2906002)(41300700001)(40480700001)(40460700003)(36900700001);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Jan 2024 06:15:09.7639
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 020d4c8b-736c-4e90-b461-08dc1335d477
X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com]
X-MS-Exchange-CrossTenant-AuthSource:
	DS3PEPF000099D4.namprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR12MB8105

If run Xen with PVH dom0 and hvm domU, hvm will map a pirq for
a passthrough device by using gsi, see
xen_pt_realize->xc_physdev_map_pirq and
pci_add_dm_done->xc_physdev_map_pirq. Then xc_physdev_map_pirq
will call into Xen, but in hvm_physdev_op, PHYSDEVOP_map_pirq
is not allowed because currd is PVH dom0 and PVH has no
X86_EMU_USE_PIRQ flag, it will fail at has_pirq check.

So, allow PHYSDEVOP_map_pirq when dom0 is PVH and also allow
PHYSDEVOP_unmap_pirq for the failed path to unmap pirq. And
add a new check to prevent self map when caller has no PIRQ
flag.

Co-developed-by: Huang Rui <ray.huang@amd.com>
Signed-off-by: Jiqian Chen <Jiqian.Chen@amd.com>
---
 xen/arch/x86/hvm/hypercall.c |  2 ++
 xen/arch/x86/physdev.c       | 22 ++++++++++++++++++++++
 2 files changed, 24 insertions(+)

diff --git a/xen/arch/x86/hvm/hypercall.c b/xen/arch/x86/hvm/hypercall.c
index 6ad5b4d5f11f..493998b42ec5 100644
--- a/xen/arch/x86/hvm/hypercall.c
+++ b/xen/arch/x86/hvm/hypercall.c
@@ -74,6 +74,8 @@ long hvm_physdev_op(int cmd, XEN_GUEST_HANDLE_PARAM(void) arg)
     {
     case PHYSDEVOP_map_pirq:
     case PHYSDEVOP_unmap_pirq:
+        break;
+
     case PHYSDEVOP_eoi:
     case PHYSDEVOP_irq_status_query:
     case PHYSDEVOP_get_free_pirq:
diff --git a/xen/arch/x86/physdev.c b/xen/arch/x86/physdev.c
index 47c4da0af7e1..7f2422c2a483 100644
--- a/xen/arch/x86/physdev.c
+++ b/xen/arch/x86/physdev.c
@@ -303,11 +303,22 @@ ret_t do_physdev_op(int cmd, XEN_GUEST_HANDLE_PARAM(void) arg)
     case PHYSDEVOP_map_pirq: {
         physdev_map_pirq_t map;
         struct msi_info msi;
+        struct domain *d;
 
         ret = -EFAULT;
         if ( copy_from_guest(&map, arg, 1) != 0 )
             break;
 
+        d = rcu_lock_domain_by_any_id(map.domid);
+        if ( d == NULL )
+            return -ESRCH;
+        if ( !is_pv_domain(d) && !has_pirq(d) )
+        {
+            rcu_unlock_domain(d);
+            return -EOPNOTSUPP;
+        }
+        rcu_unlock_domain(d);
+
         switch ( map.type )
         {
         case MAP_PIRQ_TYPE_MSI_SEG:
@@ -341,11 +352,22 @@ ret_t do_physdev_op(int cmd, XEN_GUEST_HANDLE_PARAM(void) arg)
 
     case PHYSDEVOP_unmap_pirq: {
         struct physdev_unmap_pirq unmap;
+        struct domain *d;
 
         ret = -EFAULT;
         if ( copy_from_guest(&unmap, arg, 1) != 0 )
             break;
 
+        d = rcu_lock_domain_by_any_id(unmap.domid);
+        if ( d == NULL )
+            return -ESRCH;
+        if ( !is_pv_domain(d) && !has_pirq(d) )
+        {
+            rcu_unlock_domain(d);
+            return -EOPNOTSUPP;
+        }
+        rcu_unlock_domain(d);
+
         ret = physdev_unmap_pirq(unmap.domid, unmap.pirq);
         break;
     }
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Fri Jan 12 06:15:20 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 12 Jan 2024 06:15:20 +0000
Received: from list by lists.xenproject.org with outflank-mailman.666643.1037412 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rOAp6-0001B3-Pd; Fri, 12 Jan 2024 06:15:20 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 666643.1037412; Fri, 12 Jan 2024 06:15:20 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rOAp6-0001Ap-LU; Fri, 12 Jan 2024 06:15:20 +0000
Received: by outflank-mailman (input) for mailman id 666643;
 Fri, 12 Jan 2024 06:15:19 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=/PwP=IW=amd.com=Jiqian.Chen@srs-se1.protection.inumbo.net>)
 id 1rOAp5-0000lq-AQ
 for xen-devel@lists.xenproject.org; Fri, 12 Jan 2024 06:15:19 +0000
Received: from NAM12-DM6-obe.outbound.protection.outlook.com
 (mail-dm6nam12on20600.outbound.protection.outlook.com
 [2a01:111:f403:2417::600])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id f3ef2f34-b111-11ee-9b0f-b553b5be7939;
 Fri, 12 Jan 2024 07:15:17 +0100 (CET)
Received: from DM6PR11CA0017.namprd11.prod.outlook.com (2603:10b6:5:190::30)
 by SA0PR12MB7073.namprd12.prod.outlook.com (2603:10b6:806:2d5::8) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7181.21; Fri, 12 Jan
 2024 06:15:13 +0000
Received: from DS3PEPF000099D7.namprd04.prod.outlook.com
 (2603:10b6:5:190:cafe::56) by DM6PR11CA0017.outlook.office365.com
 (2603:10b6:5:190::30) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7181.21 via Frontend
 Transport; Fri, 12 Jan 2024 06:15:12 +0000
Received: from SATLEXMB04.amd.com (165.204.84.17) by
 DS3PEPF000099D7.mail.protection.outlook.com (10.167.17.8) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.7181.14 via Frontend Transport; Fri, 12 Jan 2024 06:15:12 +0000
Received: from cjq-desktop.amd.com (10.180.168.240) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.34; Fri, 12 Jan
 2024 00:15:08 -0600
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: f3ef2f34-b111-11ee-9b0f-b553b5be7939
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=N0VsFMxWNGHW+cNTDprSeMNEDXJZvXLGx5MZJRFTHz2IBvk6u/YK1VE63OnexPC8e87TGNDrD7PH1GRSAu5UPxqq+jVN82dTdOpd6MzqqPJsTHd18hDgP+SGc/tJCQCUkT/2GFgpcSzjjBetd4q85AdiOhZDIQUoOnkrfiuNvs7tgvCbDORB3V6mTLEK6GkqOF3V86Vx4iD8JdN8i9hZsoTHUAdysiBgVEulB3GSMU3fS+p5DNPn/lWSEJ+At6DIY4kgNnX0Y7ne9fj1iDEDsdV648VjrcacoyFfzG8r2LNiyRa0t2QzRgvwbzlTjJis3jq+rIEn4NJND4+SD3fJ3g==
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=QdiTH6i1r8SUyWtxRAbifltVDLUobikXsc/LwaGqRtA=;
 b=Qm5TDkFVsawzxNgwfR35mZNaLLRaH54LWSqiR5CvwC5w7Cqt4dsSyUYphT1GJHxUB7wxvBcXGJ7S5+MvdhzsDe66nMjAhKY3qi1/poQmwc0lMhDezJdFyXMXJx6PNqnwXP5FyXnf0QvtoByvG/nngHQfppMvrq8yLIig+Lnw68DZ3hhlqnsdb+OALxAqWc+PjxzP3vYBMUk815tx1bt2mi7gZTN5NDVOXiu69KJGAelK1WpDeON8Md6n28VPgr/VL0LV2vJXSJvoUEUJiT6jtOU1i0+Qn2khZa8T7oN7AnGkxEVm38+x9eI/zzIbdWAVv91AbwF6ddoWJjh/i2Lrfg==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=lists.xenproject.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)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=QdiTH6i1r8SUyWtxRAbifltVDLUobikXsc/LwaGqRtA=;
 b=4COLBEAgtBz17vW8GRpQyRRM6Vx/3AFQxiYA+PszCdKhYPBkkVMCK3IGGsO6/W753dy+yjvAoJH9UtAtpl+B6TYYcqIn9Kxffyt05faxltQxyZ44z6fGnjZ5Hf2Rv44YCRgaehP2NEr3uQG3mtnNT6OF42yB6EyBrvfDf+89Kos=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C
From: Jiqian Chen <Jiqian.Chen@amd.com>
To: <xen-devel@lists.xenproject.org>
CC: Jan Beulich <jbeulich@suse.com>, Andrew Cooper
	<andrew.cooper3@citrix.com>, =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?=
	<roger.pau@citrix.com>, Wei Liu <wl@xen.org>, George Dunlap
	<george.dunlap@citrix.com>, Julien Grall <julien@xen.org>, Stefano Stabellini
	<sstabellini@kernel.org>, Anthony PERARD <anthony.perard@citrix.com>,
	"Juergen Gross" <jgross@suse.com>, "Daniel P . Smith"
	<dpsmith@apertussolutions.com>, Stewart Hildebrand
	<Stewart.Hildebrand@amd.com>, Huang Rui <Ray.Huang@amd.com>, Jiqian Chen
	<Jiqian.Chen@amd.com>, Huang Rui <ray.huang@amd.com>
Subject: [RFC XEN PATCH v5 3/5] x86/pvh: Add PHYSDEVOP_setup_gsi for PVH dom0
Date: Fri, 12 Jan 2024 14:13:15 +0800
Message-ID: <20240112061317.418658-4-Jiqian.Chen@amd.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20240112061317.418658-1-Jiqian.Chen@amd.com>
References: <20240112061317.418658-1-Jiqian.Chen@amd.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-Originating-IP: [10.180.168.240]
X-ClientProxiedBy: SATLEXMB03.amd.com (10.181.40.144) To SATLEXMB04.amd.com
 (10.181.40.145)
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: DS3PEPF000099D7:EE_|SA0PR12MB7073:EE_
X-MS-Office365-Filtering-Correlation-Id: d720b8a1-5326-4eb9-0ff5-08dc1335d619
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam: BCL:0;
X-Microsoft-Antispam-Message-Info:
	6/W2SHCW4qIvbqdEYyFsHQhcWH+U9nv6wEdune/EvkUXtVO7J/rsZnxfabkllsiA/tw996gt61rE0mSt3+8Nap6s0ySMigyDexsqY7INVcwJrjYue3aLXiAB/i6GiM7uftidp+Ym8diWP8pL70aBkV9NNFVXyCd/L1sP66bcQG5aC73rleXWr81WIP/LyVf1Wm7WkIrgXkkDjbWywUxt1qoqtwlh4h69AQci/SnVmVAljUqUw+Dhn4RYesgJVd8epNrH0Z8TxdOO9SYOFsvWri574Km3mDMt8JC/x9/t8unFoq74A+b/TBf+3pQNLmKx6MgNDGSJeCJhN8Z69Ry0Mh10RCaXz0RjaA/l9Z5r7LxWkco64iDeyAziXSXVO3mLzm7l+1C4iOalhOkbaxjxnSyzOoLFQiaZJX4RBufqpOleQISPx0zd9KygQ8T9W4rDMcFJSVLrB29Y3DoFepsVAddfyfqPDj4JwzBSw02R2cih8o8fn7gsz6xDC9KumKEJ8zBy3BHFRePwAih2XJdMVx7SVLB4HRWqqzgURhbvd6Z/AVvH6geGF2cOxP88/dkr4teA+Ka7LA50s5bJB8gXCoBSRp3yGp8Ye4onouUDVjLzhkVO/kcEjp9xtiinbsViyFZTHgDm+Cj95/R2jAZzy7Lj98WxcKeilPQrLN4qAHuo2+9QgS8Tg5Xca7gJf0TaI+PtrkW66v4j598sjFOaapCnxPa/cvnEsyT/TrLoGjb1rzBwJl6E7dWebpNb3gSGefIHESehuhSjhPrwpLx0Og==
X-Forefront-Antispam-Report:
	CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230031)(4636009)(136003)(396003)(39860400002)(346002)(376002)(230922051799003)(1800799012)(82310400011)(451199024)(186009)(64100799003)(36840700001)(46966006)(40470700004)(40480700001)(40460700003)(86362001)(36756003)(356005)(81166007)(82740400003)(36860700001)(7696005)(6666004)(8676002)(8936002)(4326008)(5660300002)(16526019)(47076005)(2616005)(1076003)(426003)(336012)(26005)(70206006)(6916009)(316002)(54906003)(70586007)(4744005)(2906002)(7416002)(41300700001)(478600001)(36900700001);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Jan 2024 06:15:12.4991
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: d720b8a1-5326-4eb9-0ff5-08dc1335d619
X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com]
X-MS-Exchange-CrossTenant-AuthSource:
	DS3PEPF000099D7.namprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA0PR12MB7073

On PVH dom0, the gsis don't get registered, but
the gsi of a passthrough device must be configured for it to
be able to be mapped into a hvm domU.
On Linux kernel side, it calles PHYSDEVOP_setup_gsi for
passthrough devices to register gsi when dom0 is PVH.
So, add PHYSDEVOP_setup_gsi for above purpose.

Co-developed-by: Huang Rui <ray.huang@amd.com>
Signed-off-by: Jiqian Chen <Jiqian.Chen@amd.com>
---
 xen/arch/x86/hvm/hypercall.c | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/xen/arch/x86/hvm/hypercall.c b/xen/arch/x86/hvm/hypercall.c
index 493998b42ec5..46f51ee459f6 100644
--- a/xen/arch/x86/hvm/hypercall.c
+++ b/xen/arch/x86/hvm/hypercall.c
@@ -76,6 +76,12 @@ long hvm_physdev_op(int cmd, XEN_GUEST_HANDLE_PARAM(void) arg)
     case PHYSDEVOP_unmap_pirq:
         break;
 
+    case PHYSDEVOP_setup_gsi:
+        if ( !is_hardware_domain(currd) )
+            return -EOPNOTSUPP;
+        ASSERT(!has_pirq(currd));
+        break;
+
     case PHYSDEVOP_eoi:
     case PHYSDEVOP_irq_status_query:
     case PHYSDEVOP_get_free_pirq:
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Fri Jan 12 06:15:22 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 12 Jan 2024 06:15:22 +0000
Received: from list by lists.xenproject.org with outflank-mailman.666644.1037422 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rOAp8-0001TZ-7R; Fri, 12 Jan 2024 06:15:22 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 666644.1037422; Fri, 12 Jan 2024 06:15:22 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rOAp8-0001TO-4a; Fri, 12 Jan 2024 06:15:22 +0000
Received: by outflank-mailman (input) for mailman id 666644;
 Fri, 12 Jan 2024 06:15:20 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=/PwP=IW=amd.com=Jiqian.Chen@srs-se1.protection.inumbo.net>)
 id 1rOAp6-0000At-Qz
 for xen-devel@lists.xenproject.org; Fri, 12 Jan 2024 06:15:20 +0000
Received: from NAM02-DM3-obe.outbound.protection.outlook.com
 (mail-dm3nam02on20601.outbound.protection.outlook.com
 [2a01:111:f403:2405::601])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id f5df63f5-b111-11ee-98f0-6d05b1d4d9a1;
 Fri, 12 Jan 2024 07:15:20 +0100 (CET)
Received: from CH0PR04CA0056.namprd04.prod.outlook.com (2603:10b6:610:77::31)
 by DM4PR12MB7600.namprd12.prod.outlook.com (2603:10b6:8:108::5) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7181.21; Fri, 12 Jan
 2024 06:15:16 +0000
Received: from DS3PEPF000099D4.namprd04.prod.outlook.com
 (2603:10b6:610:77:cafe::23) by CH0PR04CA0056.outlook.office365.com
 (2603:10b6:610:77::31) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7181.17 via Frontend
 Transport; Fri, 12 Jan 2024 06:15:16 +0000
Received: from SATLEXMB04.amd.com (165.204.84.17) by
 DS3PEPF000099D4.mail.protection.outlook.com (10.167.17.5) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.7181.14 via Frontend Transport; Fri, 12 Jan 2024 06:15:16 +0000
Received: from cjq-desktop.amd.com (10.180.168.240) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.34; Fri, 12 Jan
 2024 00:15:12 -0600
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: f5df63f5-b111-11ee-98f0-6d05b1d4d9a1
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=OVjEO65u3PvvoYn6+tVPooJsGlJE7tzEm/y3AaMU+yCzTKQR6AHNLSBRZWTT0mNdKtqJYp8tDgBfUwXclzMYCajJCYJ/3EJx8LKmdjhWPTLm5/NiwidI1D3Q+KVxjWW0tF0TM+gVKuaW48gEytNz1r+jUhrBUxT8FGM/mJqIP33yw4ce2hhX+3dJ9Qi3LnxrXar/bHr0/dTtJXfc8VBYTbmFgCXVkMjclTJEP1sCHnlCRdBouQsQkYnA3ujYxKlPvtyxZbadMBa6JvVoBTugubiRME9pSwdhMhJ1gF5AVyxLIJHBqlQhbJ3/D+kFbGhgQ5tMuNahD0LKD5nQ2Qpulg==
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=2XjwE0ZYBirR+9vRd4V2Cvbo4ZpC70gMeKjuI4Ig4FA=;
 b=bwK+3Z3+aFx9YsoFfKFnOefPtHmE4SDP4p6VUTcY1aCMx/dcI0D+7n4AIUTYKcAW4KNCbGA+3t4OWPAF22DwmfqoEOcQWnKjyXwo64WvW6ogh483syz9h+ckjeV4/vkbDn/lswz0wlLaEfVO5bFZWiBmOpbYkt/7TCEU+SIJ7Iq/o557bJ0ytD2wMfs3Dfexfffb9hypdfBE24pZc36MwHxfsB3/Hk1gqOCyDsyYVrSaBvmKcQgxLhAhFwNrd7uF1s7cRkMspBaxEAPo3C3MZURVkWKa3p64zETRh4e0Qjhtf/MN+je8zafZFTvLKlIDNaKRJmqxfevkwgnWnuuURw==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=lists.xenproject.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)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=2XjwE0ZYBirR+9vRd4V2Cvbo4ZpC70gMeKjuI4Ig4FA=;
 b=TuM0NasNi9aK6h4S5TWv3F9uo/pH9IE5H4l9wwRR0x4TrCojulT27HJox5zhnx6lEX5Ox69ht4+BgRI3U/B4++Z+iPpeKQ89ydm7Hh/XZaR5pNLL3lD/YI8bcotRlHo5gD6FmvB9Uljfn6DQw1UziDBrcvSxrIevKcf+twTkxgY=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C
From: Jiqian Chen <Jiqian.Chen@amd.com>
To: <xen-devel@lists.xenproject.org>
CC: Jan Beulich <jbeulich@suse.com>, Andrew Cooper
	<andrew.cooper3@citrix.com>, =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?=
	<roger.pau@citrix.com>, Wei Liu <wl@xen.org>, George Dunlap
	<george.dunlap@citrix.com>, Julien Grall <julien@xen.org>, Stefano Stabellini
	<sstabellini@kernel.org>, Anthony PERARD <anthony.perard@citrix.com>,
	"Juergen Gross" <jgross@suse.com>, "Daniel P . Smith"
	<dpsmith@apertussolutions.com>, Stewart Hildebrand
	<Stewart.Hildebrand@amd.com>, Huang Rui <Ray.Huang@amd.com>, Jiqian Chen
	<Jiqian.Chen@amd.com>, Huang Rui <ray.huang@amd.com>
Subject: [RFC XEN PATCH v5 4/5] libxl: Use gsi instead of irq for mapping pirq
Date: Fri, 12 Jan 2024 14:13:16 +0800
Message-ID: <20240112061317.418658-5-Jiqian.Chen@amd.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20240112061317.418658-1-Jiqian.Chen@amd.com>
References: <20240112061317.418658-1-Jiqian.Chen@amd.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-Originating-IP: [10.180.168.240]
X-ClientProxiedBy: SATLEXMB03.amd.com (10.181.40.144) To SATLEXMB04.amd.com
 (10.181.40.145)
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: DS3PEPF000099D4:EE_|DM4PR12MB7600:EE_
X-MS-Office365-Filtering-Correlation-Id: aaf71274-9745-4c66-d1d3-08dc1335d865
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam: BCL:0;
X-Microsoft-Antispam-Message-Info:
	hQsL2RBNwlftdQ30v5qNAOIulStzYOm5ZiA+YeQlmoUG2+v/+yp8ty97ASsBpsbsiMLCdKEqPSU/3/zug/VNGK25YlmlIqWrPPnQ5yl+lZQqWTqFnFsTg7E3m2zQ/mjN/3Vx20O7kTGCu6lBGrwi4N8yq0XRCOF3Mb3etSh86nkEf9H0leANbrwTl02J2q9P/eafw3v5x5o4YnJDLZggr70DnV1wzHwL1jgF+Y92onn/MseWTHtlx2cwmw/h6/583qJbSIHZcV2r/9uU8KUfKyd5JjlFxuuVG5UUhKsQPpHgvl2YvOHIV8pfKlUfPPkIIwder4FNov7lZAXAoBGZrgSKK97B59cclb256JLnpJlznnxrrXIhedv09ft/CWC53TV2BMO9Z9mfbOdcNcF+660kTwO+ZRKm3ezT3Rs776AmTN8jMZ2K0b5rlaak9OvBisdf4+gctFz7OBUvX3aD7TDnUmuAcgYnFySmeZ7K/znhzQRehWd0utOkVlk5YQT8HZ8DAFTtIvx6TNe/Z+AqFUF18ANTyaYzqVefdGAzBXMXas/TMI2xQTcPVNeyTQoY9u4/b9+FDX2K11ZgBZxN8E4mCLga19h890YIPvJTjMnCrz2/vYAsV84dEmK/j86W2k84woj/ITPcKQ8QjUDYyfycJtOPQ7eoxW1mAcLPeaLxYkWqUxChuKIl79o7bHUG/F38X/63jfT3FQo2Mf5C1yszCPHquUUDjMIMg2WeLfDs5Cuy4tt/u0DbKIFaBji1V2jSx2YubVZYh8zgqnpx2w==
X-Forefront-Antispam-Report:
	CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230031)(4636009)(39860400002)(136003)(396003)(346002)(376002)(230922051799003)(64100799003)(451199024)(82310400011)(1800799012)(186009)(40470700004)(46966006)(36840700001)(70206006)(70586007)(36756003)(6916009)(316002)(54906003)(7696005)(478600001)(41300700001)(8936002)(8676002)(4326008)(7416002)(2906002)(82740400003)(5660300002)(83380400001)(81166007)(356005)(47076005)(426003)(40460700003)(40480700001)(36860700001)(1076003)(26005)(86362001)(336012)(2616005)(16526019)(36900700001);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Jan 2024 06:15:16.3576
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: aaf71274-9745-4c66-d1d3-08dc1335d865
X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com]
X-MS-Exchange-CrossTenant-AuthSource:
	DS3PEPF000099D4.namprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM4PR12MB7600

In PVH dom0, it uses the linux local interrupt mechanism,
when it allocs irq for a gsi, it is dynamic, and follow
the principle of applying first, distributing first. And
the irq number is alloced from small to large, but the
applying gsi number is not, may gsi 38 comes before gsi
28, that causes the irq number is not equal with the gsi
number. And when passthrough a device, xl wants to use
gsi to map pirq, see pci_add_dm_done->xc_physdev_map_pirq,
but the gsi number is got from file
/sys/bus/pci/devices/<sbdf>/irq in current code, so it
will fail when mapping.

So, use real gsi number read from gsi sysfs.

Co-developed-by: Huang Rui <ray.huang@amd.com>
Signed-off-by: Jiqian Chen <Jiqian.Chen@amd.com>
Reviewed-by: Stefano Stabellini <sstabellini@kernel.org>
---
 tools/libs/light/libxl_pci.c | 25 +++++++++++++++++++++++--
 1 file changed, 23 insertions(+), 2 deletions(-)

diff --git a/tools/libs/light/libxl_pci.c b/tools/libs/light/libxl_pci.c
index 96cb4da0794e..a1c6e82631e9 100644
--- a/tools/libs/light/libxl_pci.c
+++ b/tools/libs/light/libxl_pci.c
@@ -1478,8 +1478,19 @@ static void pci_add_dm_done(libxl__egc *egc,
     fclose(f);
     if (!pci_supp_legacy_irq())
         goto out_no_irq;
-    sysfs_path = GCSPRINTF(SYSFS_PCI_DEV"/"PCI_BDF"/irq", pci->domain,
+    sysfs_path = GCSPRINTF(SYSFS_PCI_DEV"/"PCI_BDF"/gsi", pci->domain,
                                 pci->bus, pci->dev, pci->func);
+
+    if ( access(sysfs_path, F_OK) != 0 ) {
+        if ( errno == ENOENT )
+            sysfs_path = GCSPRINTF(SYSFS_PCI_DEV"/"PCI_BDF"/irq", pci->domain,
+                                pci->bus, pci->dev, pci->func);
+        else {
+            LOGED(ERROR, domainid, "Can't access %s", sysfs_path);
+            goto out_no_irq;
+        }
+    }
+
     f = fopen(sysfs_path, "r");
     if (f == NULL) {
         LOGED(ERROR, domainid, "Couldn't open %s", sysfs_path);
@@ -2229,9 +2240,19 @@ skip_bar:
     if (!pci_supp_legacy_irq())
         goto skip_legacy_irq;
 
-    sysfs_path = GCSPRINTF(SYSFS_PCI_DEV"/"PCI_BDF"/irq", pci->domain,
+    sysfs_path = GCSPRINTF(SYSFS_PCI_DEV"/"PCI_BDF"/gsi", pci->domain,
                            pci->bus, pci->dev, pci->func);
 
+    if ( access(sysfs_path, F_OK) != 0 ) {
+        if ( errno == ENOENT )
+            sysfs_path = GCSPRINTF(SYSFS_PCI_DEV"/"PCI_BDF"/irq", pci->domain,
+                                pci->bus, pci->dev, pci->func);
+        else {
+            LOGED(ERROR, domid, "Can't access %s", sysfs_path);
+            goto skip_legacy_irq;
+        }
+    }
+
     f = fopen(sysfs_path, "r");
     if (f == NULL) {
         LOGED(ERROR, domid, "Couldn't open %s", sysfs_path);
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Fri Jan 12 06:15:29 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 12 Jan 2024 06:15:29 +0000
Received: from list by lists.xenproject.org with outflank-mailman.666645.1037433 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rOApF-000214-GC; Fri, 12 Jan 2024 06:15:29 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 666645.1037433; Fri, 12 Jan 2024 06:15:29 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rOApF-00020v-Bs; Fri, 12 Jan 2024 06:15:29 +0000
Received: by outflank-mailman (input) for mailman id 666645;
 Fri, 12 Jan 2024 06:15:27 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=/PwP=IW=amd.com=Jiqian.Chen@srs-se1.protection.inumbo.net>)
 id 1rOApD-0000lq-Nk
 for xen-devel@lists.xenproject.org; Fri, 12 Jan 2024 06:15:27 +0000
Received: from NAM02-DM3-obe.outbound.protection.outlook.com
 (mail-dm3nam02on20600.outbound.protection.outlook.com
 [2a01:111:f403:2405::600])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id f8448d00-b111-11ee-9b0f-b553b5be7939;
 Fri, 12 Jan 2024 07:15:25 +0100 (CET)
Received: from CH2PR14CA0005.namprd14.prod.outlook.com (2603:10b6:610:60::15)
 by CY8PR12MB7515.namprd12.prod.outlook.com (2603:10b6:930:93::6) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7181.19; Fri, 12 Jan
 2024 06:15:20 +0000
Received: from DS3PEPF000099D9.namprd04.prod.outlook.com
 (2603:10b6:610:60:cafe::f6) by CH2PR14CA0005.outlook.office365.com
 (2603:10b6:610:60::15) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7181.19 via Frontend
 Transport; Fri, 12 Jan 2024 06:15:20 +0000
Received: from SATLEXMB04.amd.com (165.204.84.17) by
 DS3PEPF000099D9.mail.protection.outlook.com (10.167.17.10) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.7181.14 via Frontend Transport; Fri, 12 Jan 2024 06:15:20 +0000
Received: from cjq-desktop.amd.com (10.180.168.240) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.34; Fri, 12 Jan
 2024 00:15:16 -0600
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: f8448d00-b111-11ee-9b0f-b553b5be7939
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=VAVSCJYFwHIdovrr4N6QiUnWEu3KwFi6T00bg2NvFWRqV4HJw3H1gFE6DwMlKO8LSQoSIhqDmn785ehkTJpZGCpTic3wH0PHduOCENXs9wBmIOaaqoVI8O+9PUZNKOkVIWghiYuJofe/jc2D9hLPwB22ccWds8/ITfEh+7cFqk8TQwWkweQnDywpZ/2voofQ7Zkj0OdZipwvwAV9pIz/D4XNjMlexTjYfyVqcybTeSKErORSMrBS4qvsCetjNLomgr0VLOOUj6KBkXGSAZZADu+C6WOmcqm9DW4jNO3yQJ5O4Bbkhi27DRlifaCgUJQPV7cAsrwBoa5JtCod46HiYw==
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=PSkLYrAo95Wea4+HG7BuppVa+CyaaIyZn3k0KcMeVOM=;
 b=NOYXnsKZTXzIIz74DC0T5lnDjFihVFVAtbRky2/Uhns7psBfH2jRSqczHbgnqSqGKoCp9h9T3Xyq0zs/SmV5S9fVuaeOfU+m2Sl7GbQ7PbIImnXk5on31/xwdvU7HXo/VdvCW1zByxBUKKLtsODxoKthO9KAU63LiSGNy64TCMQfroG2jrGS6HFbBoNbQ/kMUU9Cac+5kj179yAbMvbVFtkJuupb6LE/EkGJUXwKXHbRPLwTizMiIWgVh6ajhZDxoUzijuS67eIVJZfgRMtqrmyub/J0J1Att2RM+jbTr1ygyglzfnJ8SXbASV6SF7PRo2GVzOPA5zfKMYpIAklwdg==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=lists.xenproject.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)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=PSkLYrAo95Wea4+HG7BuppVa+CyaaIyZn3k0KcMeVOM=;
 b=eIzMRbrDDMEolzdkoDbJKlUzatUDOCVgSJk7Bn30355IUrh5+4B3Ctxr3LA4Bl6q3op4A2ETOQh65dGa+y8y2vZuMdB/XCioFS51QJ5TAO8lb/Y1uJiB1fCW9t8X39aF2vT4HzYVUc/8rUlpT1KytUC6tCCYWZtc91ChPhLQgYc=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C
From: Jiqian Chen <Jiqian.Chen@amd.com>
To: <xen-devel@lists.xenproject.org>
CC: Jan Beulich <jbeulich@suse.com>, Andrew Cooper
	<andrew.cooper3@citrix.com>, =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?=
	<roger.pau@citrix.com>, Wei Liu <wl@xen.org>, George Dunlap
	<george.dunlap@citrix.com>, Julien Grall <julien@xen.org>, Stefano Stabellini
	<sstabellini@kernel.org>, Anthony PERARD <anthony.perard@citrix.com>,
	"Juergen Gross" <jgross@suse.com>, "Daniel P . Smith"
	<dpsmith@apertussolutions.com>, Stewart Hildebrand
	<Stewart.Hildebrand@amd.com>, Huang Rui <Ray.Huang@amd.com>, Jiqian Chen
	<Jiqian.Chen@amd.com>, Huang Rui <ray.huang@amd.com>
Subject: [RFC XEN PATCH v5 5/5] domctl: Add XEN_DOMCTL_gsi_permission to grant gsi
Date: Fri, 12 Jan 2024 14:13:17 +0800
Message-ID: <20240112061317.418658-6-Jiqian.Chen@amd.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20240112061317.418658-1-Jiqian.Chen@amd.com>
References: <20240112061317.418658-1-Jiqian.Chen@amd.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-Originating-IP: [10.180.168.240]
X-ClientProxiedBy: SATLEXMB03.amd.com (10.181.40.144) To SATLEXMB04.amd.com
 (10.181.40.145)
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: DS3PEPF000099D9:EE_|CY8PR12MB7515:EE_
X-MS-Office365-Filtering-Correlation-Id: e28c13e0-239e-4a61-bcb3-08dc1335daa5
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam: BCL:0;
X-Microsoft-Antispam-Message-Info:
	hRt08wOhZtQQ5iUEfWVxVBnv1BKULd5sGNPpE6dnxplP3oFebyZf2Uaw12VUfHnRT6To/IrKfUGHSqxWkrDbWHDL9S0/IDn6XekXJTQUWYTSeCG+OIdKh/9dG+dgIlpiv+ZyKXPsUPYCAtgd5cuoG+6eB0AFvGoS1rl3u8Wrf+TZoSIOW6akZO3xmSbemc3B9QS3P94KvhLNojI6/D/4rxKk8AaLT9UwEByoxO1oGd6XRm3QNnOC3wyO1xyg1qBVFEy9Sct0hQPPKdWymFVy928DAvsuvT9KEs1WLwtdkSMBKycVWayBryXExIBxRKzuJX9Jgsx9W/92b1aSk0SUZIaDcC4B9rciBEgleKGCBUpFwDdtUr2CSm91z9Gm7dUmncZvyXfXugd4wm+876fPXNUzpn+nHMjKiPHcDhFw0Yu3oXIpRhJVQZikYUVHF/pd+O5q1KFPaa6+zbbJ7MWZ3kkP/wBHk1QvaU96x1ipcI/it+D7O98HGL2XY2hWgAIWZCuEEdauxROke2xKr4FnkGCdBVexEilJkEPuM20TusWTtIQPnIUCEzZL1WZdyZGPx9wgFWnx04+b5yVs98c0nyfkmAHtSPyvDFSHIdVrcNVPzTXRuscMrdPz7+yifPZr/vbP0YGl65HfAX1iUhI78iDMXYZ74690j+9oNSwdFTUcT+r9wcNaLHh0ualZx7jRcbSLdVoppQ60Plz4Q2Fv9FqYRIMazwXar+bgJ1I8u8BG7nNYIy5Fn3ybavP+zWyfI1V3D4YGIPlw81eMqaJpAg==
X-Forefront-Antispam-Report:
	CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230031)(4636009)(346002)(396003)(39860400002)(376002)(136003)(230922051799003)(186009)(451199024)(82310400011)(64100799003)(1800799012)(46966006)(40470700004)(36840700001)(83380400001)(7416002)(86362001)(26005)(1076003)(2616005)(5660300002)(2906002)(336012)(16526019)(426003)(8936002)(316002)(8676002)(6916009)(70586007)(70206006)(54906003)(7696005)(4326008)(478600001)(82740400003)(41300700001)(81166007)(356005)(47076005)(36860700001)(40480700001)(40460700003)(36756003)(36900700001);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Jan 2024 06:15:20.1475
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: e28c13e0-239e-4a61-bcb3-08dc1335daa5
X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com]
X-MS-Exchange-CrossTenant-AuthSource:
	DS3PEPF000099D9.namprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY8PR12MB7515

Some type of domain don't have PIRQ, like PVH, when
passthrough a device to guest on PVH dom0, callstack
pci_add_dm_done->XEN_DOMCTL_irq_permission will failed
at domain_pirq_to_irq.

So, add a new hypercall to grant/revoke gsi permission
when dom0 is not PV or dom0 has not PIRQ flag.

Co-developed-by: Huang Rui <ray.huang@amd.com>
Signed-off-by: Jiqian Chen <Jiqian.Chen@amd.com>
---
 tools/include/xenctrl.h      |  5 +++++
 tools/libs/ctrl/xc_domain.c  | 15 +++++++++++++++
 tools/libs/light/libxl_pci.c | 16 ++++++++++++++--
 xen/arch/x86/domctl.c        | 31 +++++++++++++++++++++++++++++++
 xen/include/public/domctl.h  |  9 +++++++++
 xen/xsm/flask/hooks.c        |  1 +
 6 files changed, 75 insertions(+), 2 deletions(-)

diff --git a/tools/include/xenctrl.h b/tools/include/xenctrl.h
index 2ef8b4e05422..519c860a00d5 100644
--- a/tools/include/xenctrl.h
+++ b/tools/include/xenctrl.h
@@ -1382,6 +1382,11 @@ int xc_domain_irq_permission(xc_interface *xch,
                              uint32_t pirq,
                              bool allow_access);
 
+int xc_domain_gsi_permission(xc_interface *xch,
+                             uint32_t domid,
+                             uint32_t gsi,
+                             bool allow_access);
+
 int xc_domain_iomem_permission(xc_interface *xch,
                                uint32_t domid,
                                unsigned long first_mfn,
diff --git a/tools/libs/ctrl/xc_domain.c b/tools/libs/ctrl/xc_domain.c
index f2d9d14b4d9f..448ba2c59ae1 100644
--- a/tools/libs/ctrl/xc_domain.c
+++ b/tools/libs/ctrl/xc_domain.c
@@ -1394,6 +1394,21 @@ int xc_domain_irq_permission(xc_interface *xch,
     return do_domctl(xch, &domctl);
 }
 
+int xc_domain_gsi_permission(xc_interface *xch,
+                             uint32_t domid,
+                             uint32_t gsi,
+                             bool allow_access)
+{
+    struct xen_domctl domctl = {};
+
+    domctl.cmd = XEN_DOMCTL_gsi_permission;
+    domctl.domain = domid;
+    domctl.u.gsi_permission.gsi = gsi;
+    domctl.u.gsi_permission.allow_access = allow_access;
+
+    return do_domctl(xch, &domctl);
+}
+
 int xc_domain_iomem_permission(xc_interface *xch,
                                uint32_t domid,
                                unsigned long first_mfn,
diff --git a/tools/libs/light/libxl_pci.c b/tools/libs/light/libxl_pci.c
index a1c6e82631e9..4136a860a048 100644
--- a/tools/libs/light/libxl_pci.c
+++ b/tools/libs/light/libxl_pci.c
@@ -1421,6 +1421,8 @@ static void pci_add_dm_done(libxl__egc *egc,
     uint32_t flag = XEN_DOMCTL_DEV_RDM_RELAXED;
     uint32_t domainid = domid;
     bool isstubdom = libxl_is_stubdom(ctx, domid, &domainid);
+    int gsi;
+    bool has_gsi = true;
 
     /* Convenience aliases */
     bool starting = pas->starting;
@@ -1482,6 +1484,7 @@ static void pci_add_dm_done(libxl__egc *egc,
                                 pci->bus, pci->dev, pci->func);
 
     if ( access(sysfs_path, F_OK) != 0 ) {
+        has_gsi = false;
         if ( errno == ENOENT )
             sysfs_path = GCSPRINTF(SYSFS_PCI_DEV"/"PCI_BDF"/irq", pci->domain,
                                 pci->bus, pci->dev, pci->func);
@@ -1497,6 +1500,7 @@ static void pci_add_dm_done(libxl__egc *egc,
         goto out_no_irq;
     }
     if ((fscanf(f, "%u", &irq) == 1) && irq) {
+        gsi = irq;
         r = xc_physdev_map_pirq(ctx->xch, domid, irq, &irq);
         if (r < 0) {
             LOGED(ERROR, domainid, "xc_physdev_map_pirq irq=%d (error=%d)",
@@ -1505,7 +1509,10 @@ static void pci_add_dm_done(libxl__egc *egc,
             rc = ERROR_FAIL;
             goto out;
         }
-        r = xc_domain_irq_permission(ctx->xch, domid, irq, 1);
+        if ( has_gsi )
+            r = xc_domain_gsi_permission(ctx->xch, domid, gsi, 1);
+        if ( !has_gsi || r == -EOPNOTSUPP )
+            r = xc_domain_irq_permission(ctx->xch, domid, irq, 1);
         if (r < 0) {
             LOGED(ERROR, domainid,
                   "xc_domain_irq_permission irq=%d (error=%d)", irq, r);
@@ -2185,6 +2192,7 @@ static void pci_remove_detached(libxl__egc *egc,
     FILE *f;
     uint32_t domainid = prs->domid;
     bool isstubdom;
+    bool has_gsi = true;
 
     /* Convenience aliases */
     libxl_device_pci *const pci = &prs->pci;
@@ -2244,6 +2252,7 @@ skip_bar:
                            pci->bus, pci->dev, pci->func);
 
     if ( access(sysfs_path, F_OK) != 0 ) {
+        has_gsi = false;
         if ( errno == ENOENT )
             sysfs_path = GCSPRINTF(SYSFS_PCI_DEV"/"PCI_BDF"/irq", pci->domain,
                                 pci->bus, pci->dev, pci->func);
@@ -2270,7 +2279,10 @@ skip_bar:
              */
             LOGED(ERROR, domid, "xc_physdev_unmap_pirq irq=%d", irq);
         }
-        rc = xc_domain_irq_permission(ctx->xch, domid, irq, 0);
+        if ( has_gsi )
+            rc = xc_domain_gsi_permission(ctx->xch, domid, irq, 0);
+        if ( !has_gsi || rc == -EOPNOTSUPP )
+            rc = xc_domain_irq_permission(ctx->xch, domid, irq, 0);
         if (rc < 0) {
             LOGED(ERROR, domid, "xc_domain_irq_permission irq=%d", irq);
         }
diff --git a/xen/arch/x86/domctl.c b/xen/arch/x86/domctl.c
index 3c0ea8554107..75f23f511ac1 100644
--- a/xen/arch/x86/domctl.c
+++ b/xen/arch/x86/domctl.c
@@ -237,6 +237,37 @@ long arch_do_domctl(
         break;
     }
 
+    case XEN_DOMCTL_gsi_permission:
+    {
+        unsigned int gsi = domctl->u.gsi_permission.gsi;
+        int allow = domctl->u.gsi_permission.allow_access;
+
+        if ( is_pv_domain(current->domain) || has_pirq(current->domain) )
+        {
+            ret = -EOPNOTSUPP;
+            break;
+        }
+
+        if ( gsi >= nr_irqs_gsi )
+        {
+            ret = -EINVAL;
+            break;
+        }
+
+        if ( !irq_access_permitted(current->domain, gsi) ||
+             xsm_irq_permission(XSM_HOOK, d, gsi, allow) )
+        {
+            ret = -EPERM;
+            break;
+        }
+
+        if ( allow )
+            ret = irq_permit_access(d, gsi);
+        else
+            ret = irq_deny_access(d, gsi);
+        break;
+    }
+
     case XEN_DOMCTL_getpageframeinfo3:
     {
         unsigned int num = domctl->u.getpageframeinfo3.num;
diff --git a/xen/include/public/domctl.h b/xen/include/public/domctl.h
index a33f9ec32b08..47e95f9ee824 100644
--- a/xen/include/public/domctl.h
+++ b/xen/include/public/domctl.h
@@ -447,6 +447,13 @@ struct xen_domctl_irq_permission {
 };
 
 
+/* XEN_DOMCTL_gsi_permission */
+struct xen_domctl_gsi_permission {
+    uint32_t gsi;
+    uint8_t allow_access;    /* flag to specify enable/disable of x86 gsi access */
+};
+
+
 /* XEN_DOMCTL_iomem_permission */
 struct xen_domctl_iomem_permission {
     uint64_aligned_t first_mfn;/* first page (physical page number) in range */
@@ -1277,6 +1284,7 @@ struct xen_domctl {
 #define XEN_DOMCTL_vmtrace_op                    84
 #define XEN_DOMCTL_get_paging_mempool_size       85
 #define XEN_DOMCTL_set_paging_mempool_size       86
+#define XEN_DOMCTL_gsi_permission                87
 #define XEN_DOMCTL_gdbsx_guestmemio            1000
 #define XEN_DOMCTL_gdbsx_pausevcpu             1001
 #define XEN_DOMCTL_gdbsx_unpausevcpu           1002
@@ -1299,6 +1307,7 @@ struct xen_domctl {
         struct xen_domctl_setdomainhandle   setdomainhandle;
         struct xen_domctl_setdebugging      setdebugging;
         struct xen_domctl_irq_permission    irq_permission;
+        struct xen_domctl_gsi_permission    gsi_permission;
         struct xen_domctl_iomem_permission  iomem_permission;
         struct xen_domctl_ioport_permission ioport_permission;
         struct xen_domctl_hypercall_init    hypercall_init;
diff --git a/xen/xsm/flask/hooks.c b/xen/xsm/flask/hooks.c
index 78225f68c15c..376076865198 100644
--- a/xen/xsm/flask/hooks.c
+++ b/xen/xsm/flask/hooks.c
@@ -685,6 +685,7 @@ static int cf_check flask_domctl(struct domain *d, int cmd)
     case XEN_DOMCTL_shadow_op:
     case XEN_DOMCTL_ioport_permission:
     case XEN_DOMCTL_ioport_mapping:
+    case XEN_DOMCTL_gsi_permission:
 #endif
 #ifdef CONFIG_HAS_PASSTHROUGH
     /*
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Fri Jan 12 06:28:33 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 12 Jan 2024 06:28:33 +0000
Received: from list by lists.xenproject.org with outflank-mailman.666666.1037443 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rOB1o-0005ce-Li; Fri, 12 Jan 2024 06:28:28 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 666666.1037443; Fri, 12 Jan 2024 06:28:28 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rOB1o-0005cX-Hh; Fri, 12 Jan 2024 06:28:28 +0000
Received: by outflank-mailman (input) for mailman id 666666;
 Fri, 12 Jan 2024 06:28:27 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=qIBg=IW=linaro.org=viresh.kumar@srs-se1.protection.inumbo.net>)
 id 1rOB1n-0005ba-BN
 for xen-devel@lists.xenproject.org; Fri, 12 Jan 2024 06:28:27 +0000
Received: from mail-oi1-x231.google.com (mail-oi1-x231.google.com
 [2607:f8b0:4864:20::231])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id ca6921f7-b113-11ee-98f0-6d05b1d4d9a1;
 Fri, 12 Jan 2024 07:28:26 +0100 (CET)
Received: by mail-oi1-x231.google.com with SMTP id
 5614622812f47-3bd4e6a7cb0so1057236b6e.3
 for <xen-devel@lists.xenproject.org>; Thu, 11 Jan 2024 22:28:26 -0800 (PST)
Received: from localhost ([122.172.81.83]) by smtp.gmail.com with ESMTPSA id
 d13-20020a056a0010cd00b006da04ab75a8sm2403788pfu.1.2024.01.11.22.28.23
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 11 Jan 2024 22:28:24 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: ca6921f7-b113-11ee-98f0-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=linaro.org; s=google; t=1705040905; x=1705645705; darn=lists.xenproject.org;
        h=in-reply-to:content-disposition:mime-version:references:message-id
         :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to;
        bh=zTdeMtiWZWpHbbW9PpBxT/lyVqLrotNVomhipJy6wZQ=;
        b=PFNxF1Na++cIs1I6RczgDtyMzuy8mcWpupI5G6s06fp6LfQQcgTVM8fqkaVKiqKZ7K
         tjBMWtIgQ+zO4j2/PfQMWGYnAw1zZI7TCQjY0U5Ya1oFcYgu6U8jxG/+6e9JgSrXOMxO
         PM1Ru+3OvNpaVv5KWN0KtCCapopQfOK47btsBVkIvjHDI68wz1+h13BO3r+MoXdhGqy0
         yK7IKlNFQqO3mxF2jRaOjtgEOJ0PEc1ks3jyspYyE8Flnw5TaooU6fKggHFrXaGsH83Q
         53bH19g7sZYOC+pf1mUn3OUZC2dOnU0wHuVIzMFz7Rq3KQRxbW9RP/J/Z2MMj6J3ToGT
         Bmqw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705040905; x=1705645705;
        h=in-reply-to:content-disposition:mime-version:references:message-id
         :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to;
        bh=zTdeMtiWZWpHbbW9PpBxT/lyVqLrotNVomhipJy6wZQ=;
        b=q3Tyt2o8Tzof7KfkPcI55Lq7WLhIDY/Yo/xZfGGXIq33BR4kq41XXvqyVLNhmRClV4
         tTK3IHnFozhDx2sihgQ54Z+CIjgJ3TxBAHrXzcIBnMsyqv6eDXiAif/QxqN0lLXfewVZ
         0tmE+dDnesScZ9EuloWZ0uZuv/jZKT8tC4rcnKn5iGxwFvkWa+xi07ngQX1H6p12Hakc
         SC6Kc3RSyv0d50MC+Lh/ZJeR9v+yeQlD27J39wJsDw+Bxn7YKtFkx/9XcH1ueauTdwbt
         NfRQUwfGB57UZgk6/6c14c8L0e12M4bUchyHEfJF7HoOOb6TBWrl2NeD5+USSb1+zicb
         CPcg==
X-Gm-Message-State: AOJu0YzTa1kDi/Hsv3iLnUK4tGMQHhAPRDF6W0fgTBUCp7P6tkyZpagv
	nKn2pjyDJAkYkwUSmF5TZ27bta+7fBGFGQ==
X-Google-Smtp-Source: AGHT+IEW5rYFGTmfMZg/wDii9PrNksOY1fnoYEvVRTm9r/XqAoWhq6Tw29Sa82HBCHSuRCmxpNi4FA==
X-Received: by 2002:a05:6808:2208:b0:3bd:5377:79df with SMTP id bd8-20020a056808220800b003bd537779dfmr601197oib.82.1705040904889;
        Thu, 11 Jan 2024 22:28:24 -0800 (PST)
Date: Fri, 12 Jan 2024 11:58:22 +0530
From: Viresh Kumar <viresh.kumar@linaro.org>
To: "Andrei Cherechesu (OSS)" <andrei.cherechesu@oss.nxp.com>
Cc: Stefano Stabellini <sstabellini@kernel.org>,
	"olekstysh@gmail.com" <olekstysh@gmail.com>,
	Julien Grall <julien@xen.org>,
	"xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>,
	Andrei Cherechesu <andrei.cherechesu@nxp.com>,
	Vincent Guittot <vincent.guittot@linaro.org>,
	Alex =?utf-8?Q?Benn=C3=A9e?= <alex.bennee@linaro.org>
Subject: Re: [VirtIO] Support for various devices in Xen
Message-ID: <20240112062822.n5knlmloh3olxedv@vireshk-i7>
References: <PA4PR04MB95655F653BBFE3A70A8CD0FBF9682@PA4PR04MB9565.eurprd04.prod.outlook.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <PA4PR04MB95655F653BBFE3A70A8CD0FBF9682@PA4PR04MB9565.eurprd04.prod.outlook.com>

+ Few Linaro folks.

Hi Andrei,

On 11-01-24, 15:32, Andrei Cherechesu (OSS) wrote:
> Hello,
> 
> As I've mentioned in previous discussion threads in the xen-devel
> community, we are running Xen 4.17 (uprev to 4.18 in progress) on NXP
> S32G automotive processors (Cortex-A53 cores) and we wanted to know more
> about the support for various VirtIO device types in Xen.
> 
> In the Xen 4.17 release notes, the VirtIO standalone backends mentioned
> as supported and tested are: virtio-disk, virtio-net, virtio-i2c and
> virtio-gpio.

We worked on I2C and GPIO for Linaro's Project Orko [1].

> However, we've only managed to successfully set up and try some
> use-cases with the virtio-disk standalone backend [0] (which Olexandr
> provided) based on the virtio-mmio transport.
> 
> As such, we have a few questions, which we haven't been able to figure
> out from the mailing list discussions and/or code:
>     1. Are there any plans for the virtio-disk repo to have a stable
>     version? Is it going to be long-term hosted and maintained in the
>     xen-troops github repo? Or was it just an one-time PoC implementation
>     and the strategy for future VirtIO devices will be based on a more generic
>     approach (i.e., without need for a specific standalone app)?
> 
>     2. With regards to the other backends, we want to try out and provide PV
>     networking to a DomU based on virtio-net, but we haven't found any available
>     resources for it (e.g., the standalone backend implementation if needed for
>     control plane, configuration examples, presentations, demos, docs). Does it
>     rely on the QEMU virtio-net or vhost implementation? Are there any examples
>     on how to set it up? Any required Xen/Linux Kernel/QEMU versions?
> 
>     3. What other VirtIO device types are there planned to be supported in Xen?
>     I'm supposing libxl will also need changes to accomodate new configuration
>     parameters for each of them. Or is there something I'm missing?
> 
>     4. Also, while we're at it, are there any plans regarding SCMI
>     awareness for Xen (e.g., SCMI Mediator - where the RFC thread from 2022
>     seems discontinued)? Or is the preferred approach for sharing SCMI access
>     to guests through virtio-scmi?
> 
> Thank you very much for the support, once again, and we're also looking
> forward to the progress on the rust-vmm initiative.

We have tested our work mostly with the rust-vmm community. We have
already upstreamed support for Xen's Foreign and Grant mapping in
there. We are maintaining a separate crate [2] inside of rust-vmm, for
all the backends, which can also be tested easily with Xen I suppose
(now that we have support for a generic Virtio-device in there).

> Regards,
> Andrei Cherechesu,
> NXP Semiconductors
> 
> [0] https://github.com/xen-troops/virtio-disk

-- 
viresh

[1] https://linaro.atlassian.net/wiki/spaces/ORKO/overview
[2] https://github.com/rust-vmm/vhost-device


From xen-devel-bounces@lists.xenproject.org Fri Jan 12 07:42:55 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 12 Jan 2024 07:42:55 +0000
Received: from list by lists.xenproject.org with outflank-mailman.666672.1037452 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rOCBX-0001Dl-1L; Fri, 12 Jan 2024 07:42:35 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 666672.1037452; Fri, 12 Jan 2024 07:42:35 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rOCBW-0001De-V3; Fri, 12 Jan 2024 07:42:34 +0000
Received: by outflank-mailman (input) for mailman id 666672;
 Fri, 12 Jan 2024 07:42:33 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=nnUc=IW=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rOCBV-0001DW-Gb
 for xen-devel@lists.xenproject.org; Fri, 12 Jan 2024 07:42:33 +0000
Received: from mail-wr1-x432.google.com (mail-wr1-x432.google.com
 [2a00:1450:4864:20::432])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 22d844b0-b11e-11ee-9b0f-b553b5be7939;
 Fri, 12 Jan 2024 08:42:28 +0100 (CET)
Received: by mail-wr1-x432.google.com with SMTP id
 ffacd0b85a97d-336c8ab0b20so5278496f8f.1
 for <xen-devel@lists.xenproject.org>; Thu, 11 Jan 2024 23:42:28 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 m7-20020a5d4a07000000b003365fc41bcasm3072184wrq.51.2024.01.11.23.42.27
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 11 Jan 2024 23:42:28 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 22d844b0-b11e-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1705045348; x=1705650148; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=QT1C3FSHhpricvIXjSOLqDvVjkwYhGsA2Lvue9KpjtE=;
        b=aK7p8QTyzjDgpTceEScEu6CuDpZickdIui1olR/NrefpjNtNG/ambaC7wNusNvmj1m
         1GRj8SWy4f/7w0Fm9134GT29WXNVDzT2dnMRBAi6nZMboaqYgvVLclwXx6bCRaQmgsi8
         nUcfdypb+EithBKepDb486QEJOwouzkRlwoLLrJPGaYhNly8W9KjEIO3axjwfCc6ZImg
         yP731moeFPGqLnvz4S7FwUV7cDex0NIrDGVsb3n5NQ6OjRphlDqK+ARBubRIaENpyjuU
         E4ar2MGvDsUEmAmbAIg/WSrN4JGPF6RA17WICiCW8MAlbQ6VM28dwBSJUbEQAaCfxc/n
         hE9w==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705045348; x=1705650148;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=QT1C3FSHhpricvIXjSOLqDvVjkwYhGsA2Lvue9KpjtE=;
        b=FtlZq38RF0gC4ApgtrJmgvymyUEgM3QwhffEs8h+yaL+QO9jTuvZJDtL2FBq+xm/A+
         Am34/mKTHzNEM+69DK1z4d0QIoHEcqfT8fVobMwNJEfLDZt6HlXohIrh2VEgsGBg5uVz
         GQHajjaie6bNDMsxIre1rAiOl2u5Y4YEbF7OdMiywt1YFRbJ6UTjrLyC9m7psshcc6lh
         9SQmrOzMSEZ+pl7ZupVWOzNyBT9iZ5fh9KQV0zE6kkgFFV4+1gIT6IfD6Nc/LyMlhGxG
         P/eAAqKARxP+TZyrdVy5VarUz8DFgJVhennv8HHcTI24kfKl6BkEI3bxyzdnhmP6jmy2
         J+pQ==
X-Gm-Message-State: AOJu0YwnXqJfJWA67/ehDbI2v8sVEPZ9gMLi/auXrHRlLzoKGCHjx6JG
	NwXBGPbnE12HkaS457ONDSjdQr80jeMF
X-Google-Smtp-Source: AGHT+IF9RKB1JJGMykkGp3gseV4nZ5D3UvLKRjAJ+oDAj6drkh53PjsNjllv9mOjGz4jpkR5MZvT+g==
X-Received: by 2002:a05:6000:10c8:b0:337:7bde:f03e with SMTP id b8-20020a05600010c800b003377bdef03emr550310wrx.16.1705045348359;
        Thu, 11 Jan 2024 23:42:28 -0800 (PST)
Message-ID: <b2412d90-e368-405f-813f-20a95f99ff21@suse.com>
Date: Fri, 12 Jan 2024 08:42:27 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2] x86/intel: ensure Global Performance Counter Control
 is setup correctly
Content-Language: en-US
To: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, Wei Liu <wl@xen.org>,
 xen-devel@lists.xenproject.org
References: <20240111090821.67594-1-roger.pau@citrix.com>
 <3428928a-42d0-4e4b-9607-c184968c309d@suse.com> <ZZ_FjFa9mILtDZgv@macbook>
 <645e0c95-5a12-4202-8da6-3cc789a9e5c7@suse.com> <ZZ_di8pZB8bWtBuX@macbook>
 <b1e76a5f-297b-4030-a69e-33cdf179c0ce@suse.com> <ZZ_4HSvdg0R9Dv1Y@macbook>
 <4574c9d6-eb6d-4b73-a9e1-20b5635b32db@suse.com> <ZaAdEqHzbD8L_mRo@macbook>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <ZaAdEqHzbD8L_mRo@macbook>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 11.01.2024 17:53, Roger Pau Monné wrote:
> On Thu, Jan 11, 2024 at 04:52:04PM +0100, Jan Beulich wrote:
>> On 11.01.2024 15:15, Roger Pau Monné wrote:
>>> On Thu, Jan 11, 2024 at 03:01:01PM +0100, Jan Beulich wrote:
>>>> On 11.01.2024 13:22, Roger Pau Monné wrote:
>>>>> Oh, indeed, can adjust on this same patch if that's OK (seeing as the
>>>>> issue was already there previous to my change).
>>>>
>>>> Well, I'm getting the impression that it was deliberate there, i.e. set
>>>> setting of the feature flag may want to remain thus constrained.
>>>
>>> Hm, I find it weird, but the original commit message doesn't help at
>>> all.  Xen itself only uses PMC0, and I don't find any other
>>> justification in the current code to require at least 2 counters in
>>> order to expose arch performance monitoring to be present.
>>>
>>> Looking at the SDM vol3, the figures there only contain PMC0 and PMC1,
>>> so someone only reading that manual might assume there must always be
>>> 2 global PMCs?
>>
>> That may have been the impression at the time. It may have been wrong
>> already back then, or ...
>>
>>> (vol4 clarifies the that the number of global PMCs is variable).
>>
>> ... it may have been clarified in the SDM later on. My vague guess is
>> that the > 1 check was to skip what may have been "obviously buggy"
>> back at the time.
> 
> Let me know if you are OK with the adjustment in v3, or whether you
> would rather leave the > 1 check as-is (or maybe adjust in a different
> patch).

Well, I haven't been able to make up my mind as to whether the original
check was wrong. Without clear indication, I think we should retain the
original behavior by having the __set_bit() gated by an additional if().
Then, since the line needs touching anyway, a further question would be
whether to properly switch to setup_force_cpu_cap() at the same time.

Jan


From xen-devel-bounces@lists.xenproject.org Fri Jan 12 07:46:25 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 12 Jan 2024 07:46:25 +0000
Received: from list by lists.xenproject.org with outflank-mailman.666675.1037463 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rOCFE-0001oq-Fc; Fri, 12 Jan 2024 07:46:24 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 666675.1037463; Fri, 12 Jan 2024 07:46:24 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rOCFE-0001oj-CQ; Fri, 12 Jan 2024 07:46:24 +0000
Received: by outflank-mailman (input) for mailman id 666675;
 Fri, 12 Jan 2024 07:46:23 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=12w8=IW=amd.com=Michal.Orzel@srs-se1.protection.inumbo.net>)
 id 1rOCFD-0001oY-JW
 for xen-devel@lists.xenproject.org; Fri, 12 Jan 2024 07:46:23 +0000
Received: from NAM11-DM6-obe.outbound.protection.outlook.com
 (mail-dm6nam11on20625.outbound.protection.outlook.com
 [2a01:111:f400:7eaa::625])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id ac3a7c06-b11e-11ee-9b0f-b553b5be7939;
 Fri, 12 Jan 2024 08:46:20 +0100 (CET)
Received: from SJ0PR05CA0103.namprd05.prod.outlook.com (2603:10b6:a03:334::18)
 by BL1PR12MB5192.namprd12.prod.outlook.com (2603:10b6:208:311::16)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7181.19; Fri, 12 Jan
 2024 07:46:16 +0000
Received: from SJ1PEPF00001CE0.namprd05.prod.outlook.com
 (2603:10b6:a03:334:cafe::bb) by SJ0PR05CA0103.outlook.office365.com
 (2603:10b6:a03:334::18) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7202.14 via Frontend
 Transport; Fri, 12 Jan 2024 07:46:16 +0000
Received: from SATLEXMB03.amd.com (165.204.84.17) by
 SJ1PEPF00001CE0.mail.protection.outlook.com (10.167.242.8) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.7181.14 via Frontend Transport; Fri, 12 Jan 2024 07:46:15 +0000
Received: from SATLEXMB04.amd.com (10.181.40.145) by SATLEXMB03.amd.com
 (10.181.40.144) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.34; Fri, 12 Jan
 2024 01:46:15 -0600
Received: from [10.252.147.188] (10.180.168.240) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server id 15.1.2507.34 via Frontend
 Transport; Fri, 12 Jan 2024 01:46:13 -0600
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: ac3a7c06-b11e-11ee-9b0f-b553b5be7939
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=mKdHEDxHvKJkvaFl8rAcLP4AYLywqpJEq8RMx94YQZNvNgoUUm/A0TxqX2RO8r0l/tp/xhxGdpNMlLypTTIW4DPpWtM6UT4p06FacAl//7sZxJ7B15b6GWSlKycXrUxT3rJ75aKDs3cCwGk74aarjSVBopmYgi7VR3NExaC64trjZrLLFhDBz03Owp/o6pTY0FkPsZWpGyq5yr/h+PzH9TUr9CAuueYU6/twLak8FeD9zRBRybdJiuyn/Z/ToMKvxMyUlpp6J4SvvqnunvU3RNcNIIYQp7UEc2K0Zu8hy+sqSJZOfeJreueQC92j3WlcGQXwKoXkbDzH+WkeKHSrRw==
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=bnd7J5FANgzq3NBtty+tCjcs0vY7BqLpDfokzVuEKQE=;
 b=JmmsOjP5BhvSiOPX2Bt0UuO/0yivVjXBVp3iyt18gClog7ngikDEjmgejpmC/ZH5VntPxrqRO0GNU7uJuVDOyPtLDffH3EG2jGfV28YG3SsGb/ScfkqTrQjfX3ww83puzXKAbfJpv9Eu2CUS1lrppP/jwE+YwqhYZmzx70amxxG/isWHulUtFbuGNmysbT19HPqR7fd9Z3a1mdI8rHM3AiPc85Qq23UUpO9iBoixA0VWyv9V/6h3AM7soMWey1Cb+NU10HsdvkjjpP9YU+iaSVntY/0zI/W3gHrWJxU73LzhX2eSIc2JNv8aAWYSrjdQmAHvKuyy2DSTU0ycT9IGvg==
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)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=bnd7J5FANgzq3NBtty+tCjcs0vY7BqLpDfokzVuEKQE=;
 b=NTzIT+JTcPucuS7BuPOIT+eFAOM1mW790WrWyzEaBO5yzlDcQn93TdYlvRSpJdnTmcE0sKEzC5QM/y4XnL0Ko+60pwd/b9paLAWW3jJOcQ3DvA8H8hjm+5Sq07YUbZnnl6E6ZkMTd7rwkU0HINZqL1RZ88vCDJSjfocJ/spsmiA=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=SATLEXMB03.amd.com; pr=C
Message-ID: <a079dabf-b938-431b-bbde-1f15b3a9a757@amd.com>
Date: Fri, 12 Jan 2024 08:46:13 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2 1/2] xen/arm32: head: Rework how the fixmap and early
 UART mapping are prepared
To: Julien Grall <julien@xen.org>, <xen-devel@lists.xenproject.org>
CC: Julien Grall <jgrall@amazon.com>, Stefano Stabellini
	<sstabellini@kernel.org>, Bertrand Marquis <bertrand.marquis@arm.com>,
	Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>
References: <20240111183410.45566-1-julien@xen.org>
 <20240111183410.45566-2-julien@xen.org>
Content-Language: en-US
From: Michal Orzel <michal.orzel@amd.com>
In-Reply-To: <20240111183410.45566-2-julien@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 7bit
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: SJ1PEPF00001CE0:EE_|BL1PR12MB5192:EE_
X-MS-Office365-Filtering-Correlation-Id: f9df7123-c163-47b0-7efb-08dc13428e92
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam: BCL:0;
X-Microsoft-Antispam-Message-Info:
	ZNeaqI16V/HhwGM0T19PhB9UBXEkOV1B+E7+KcZfuqV6P5hQ3zJLC5N3SYp4vGeCi1rAQCLuZbeVj5QfUtXk+V/ZRqFtnAT1dhfz7o57Sxs32mXkyQ4PjmXXHas32JMoG3cEFWXFsAZigNfcs3AaexkQ+5+cxjFhSqr99YxIDkfHTtqibEEX88HKFKpqoNPIUddjT5+2J9CFiAV9672SOB81Dfbao/VZVvLYFVFazKI8CvMElxTuVJigIkpTAgdZ+cV7Q9ViYpxGMighJY6xHtAZCU9dsHV7obvX5vRFpa5+lAj+ZFTjtMQDShSNnUT7JRAkSEs6rxQvQTviCMfX6ZnjTniQeYeDI+IZPuUeMhOapdMxlzi4HE5Gn02LlH6m6axQ8xGSP0cqwpX4/6moqypCOUcToEaPWUZtdHdG6Da5KHh0bjnYMyKJIqP8SXz6WSoL5AIzXpdOeGHtx1k7JksG38hPLj6RJSMfL26lsoI4CAsaNnhOTNlYMYJYiKTbxKeAb2kf+k9iP+hO3525TGW6vjF5hB8BtOVs8fkk6TWJqWh0VPaSPU6XVOpQIrBza5NlO9FCankjMUpZlmGAiNM614UR3rVio5CdsWMRP1Uhe/Zs7KCQzBIb5aDoU/cTmFOcIhqAmMlCshPiqsfnVIZjb9wCslDvlg/JpUFBMK0u8OgEGneJUEECsyiwyI7PpXgmPCGaqcdyHjdA82xg0Bv0F0MNSsJ3ajIe+RgZSetlcK2SZ1AMEOGKnk75D4nQbfI4UCopBTgVUluOA2SDzOzoD1yod0UG3YP0UC6Ytzi4pJkDM+52WelFqpUQTVag
X-Forefront-Antispam-Report:
	CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB03.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230031)(4636009)(376002)(346002)(136003)(39860400002)(396003)(230922051799003)(186009)(1800799012)(82310400011)(64100799003)(451199024)(46966006)(36840700001)(40470700004)(83380400001)(316002)(16576012)(47076005)(70206006)(54906003)(70586007)(110136005)(53546011)(31696002)(44832011)(5660300002)(26005)(426003)(336012)(2616005)(81166007)(8676002)(8936002)(40480700001)(40460700003)(4326008)(82740400003)(356005)(36756003)(86362001)(31686004)(36860700001)(45080400002)(41300700001)(478600001)(2906002)(36900700001)(43740500002);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Jan 2024 07:46:15.9252
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: f9df7123-c163-47b0-7efb-08dc13428e92
X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB03.amd.com]
X-MS-Exchange-CrossTenant-AuthSource:
	SJ1PEPF00001CE0.namprd05.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: BL1PR12MB5192

Hi Julien,

On 11/01/2024 19:34, Julien Grall wrote:
> 
> 
> From: Julien Grall <jgrall@amazon.com>
> 
> Since commit 5e213f0f4d2c ("xen/arm32: head: Widen the use of the
> temporary mapping"), boot_second (used to cover regions like Xen and
> the fixmap) will not be mapped if the identity mapping overlap.
> 
> So it is ok to prepare the fixmap table and link it in boot_second
> earlier. With that, the fixmap can also be used earlier via the
> temporary mapping.
> 
> Therefore split setup_fixmap() in two:
>     * The table is now linked in create_page_tables() because
>       the boot page tables needs to be recreated for every CPU.
>     * The early UART mapping is only added for the boot CPU0 as the
>       fixmap table is not cleared when secondary CPUs boot.
> 
> Signed-off-by: Julien Grall <jgrall@amazon.com>
Reviewed-by: Michal Orzel <michal.orzel@amd.com>

with below 2 adjustments:
> 
> ----
> 
>     Changelog since v1:
>         * Rebase
>         * Move the UART mapping enable_mm_boot_cpu()
> ---
>  xen/arch/arm/arm32/mmu/head.S | 61 ++++++++---------------------------
>  1 file changed, 14 insertions(+), 47 deletions(-)
> 
> diff --git a/xen/arch/arm/arm32/mmu/head.S b/xen/arch/arm/arm32/mmu/head.S
> index 4e6395e7876d..a90799ad5451 100644
> --- a/xen/arch/arm/arm32/mmu/head.S
> +++ b/xen/arch/arm/arm32/mmu/head.S
> @@ -165,11 +165,6 @@
>   * Rebuild the boot pagetable's first-level entries. The structure
>   * is described in mm.c.
>   *
> - * After the CPU enables paging it will add the fixmap mapping
> - * to these page tables, however this may clash with the 1:1
> - * mapping. So each CPU must rebuild the page tables here with
> - * the 1:1 in place.
> - *
>   * Inputs:
>   *   r9 : paddr(start)
>   *   r10: phys offset
> @@ -197,6 +192,10 @@ create_page_tables:
>          add   r5, r5, #PAGE_SIZE            /* r5 := Next table */
>  .endr
> 
> +        /* Map the fixmap into boot_second */
> +        mov_w r0, FIXMAP_ADDR(0)
> +        create_table_entry boot_second, xen_fixmap, r0, 2
> +
>          /*
>           * Find the size of Xen in pages and multiply by the size of a
>           * PTE. This will then be compared in the mapping loop below.
> @@ -442,19 +441,20 @@ ENDPROC(enable_secondary_cpu_mm)
>  ENTRY(enable_boot_cpu_mm)
>          mov   r6, lr
> 
> +#ifdef CONFIG_EARLY_PRINTK
> +        /*
> +         * Add the UART mapping to the fixmap so the UART can be used
> +         * as the MMU is on. This only need to do done on the boot CPU.
s/need to do done/needs to be done/

> +         */
> +        mov_w r0, EARLY_UART_VIRTUAL_ADDRESS
> +        create_mapping_entry xen_fixmap, r0, r11, type=PT_DEV_L3
Would you mind listing r11 in the Input section of a comment?

~Michal


From xen-devel-bounces@lists.xenproject.org Fri Jan 12 07:48:03 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 12 Jan 2024 07:48:03 +0000
Received: from list by lists.xenproject.org with outflank-mailman.666679.1037472 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rOCGl-0002gS-Qj; Fri, 12 Jan 2024 07:47:59 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 666679.1037472; Fri, 12 Jan 2024 07:47:59 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rOCGl-0002gL-Nt; Fri, 12 Jan 2024 07:47:59 +0000
Received: by outflank-mailman (input) for mailman id 666679;
 Fri, 12 Jan 2024 07:47:58 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=nnUc=IW=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rOCGk-0002ex-PJ
 for xen-devel@lists.xenproject.org; Fri, 12 Jan 2024 07:47:58 +0000
Received: from mail-wr1-x436.google.com (mail-wr1-x436.google.com
 [2a00:1450:4864:20::436])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id e62e3cb0-b11e-11ee-9b0f-b553b5be7939;
 Fri, 12 Jan 2024 08:47:56 +0100 (CET)
Received: by mail-wr1-x436.google.com with SMTP id
 ffacd0b85a97d-3366ddd1eddso5133591f8f.0
 for <xen-devel@lists.xenproject.org>; Thu, 11 Jan 2024 23:47:56 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 d14-20020a05600c34ce00b0040e60c00d2csm4649697wmq.12.2024.01.11.23.47.55
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 11 Jan 2024 23:47:55 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: e62e3cb0-b11e-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1705045676; x=1705650476; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=NDcCRkOllHyogcez2YXc+p19zNJiTZ+CI4GQ7eU4KFg=;
        b=Mq8XUS6KIe6U3wP+ebBC7kgW2FrjcgBi1yi6Y07Ivaf9KLc/vf5xv1zKkOOJRZnW7N
         B4oPaugTkRyYjaQNL8yDhyky9iMfKN1bp5X1iyew8DjDQ/cRiwlUsBkpPw34quIKn6+D
         r7jyKXvbwbrFz1tEC8ZH3UzB9mPG/N+K/SZc/ju2bA5vct3lGbNtZ0Nnex+8Ex/3c6SP
         Ws3mRkOmnlthhaPFg+nJV9HcAgE4+q/kwRJEi9rC3x96Jyz4B+ns+bv56Meq8UJ+sSZg
         Ci1gP52iqbkGW/HzRaFRWbtwPQAaJdOru/I6POTwosFctWRbUIcyH2jMKEOQYJ9l45Kx
         Q5Jg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705045676; x=1705650476;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=NDcCRkOllHyogcez2YXc+p19zNJiTZ+CI4GQ7eU4KFg=;
        b=VjzUk69LaMpBO3nLdLNm6r0uklIXH++LE5iRmZtyBsj6P71L4WIbshTqebLdVwt/S1
         6T6wcTevkHYuHNtaKq9esKPZsEJQeALnKdeBwSjJP6Bt6Vs+pyLYy5/XFraVDkA/vZKQ
         /TcG0Pls7xIFhCK6xwlP29O9Dz8vT8Y7lfR8aNrXM2fI3wKGr4FeIq7NHQI2wC8Le19d
         E1I2y64TxnhMePn4plFJ97/8aGQEwqXvQxAGR5CskfyUxPX8jFwgEZwh7bBJTfhvItpN
         GoPtr5RMednReQzZDXzzZOza1z/5/VksE9fYsZNO8S/3rukzu63Ao5jLNugPoj95wQdT
         kG6w==
X-Gm-Message-State: AOJu0YwQ4/A/MgiIYQGRPS6gBBCbNU1Zr6KNXDrTcUL1u7p+kZJHvHMl
	HExlOoZFXl6eaqlOTmE7vaAariT6gfPA
X-Google-Smtp-Source: AGHT+IEoadJmmuVgY2188ty8ejnsXPWU9A33w+4+0I6PeqeQFBllfQLiOaLOX2KeboLVo7I7nrQwbQ==
X-Received: by 2002:a05:600c:468d:b0:40e:6277:e11e with SMTP id p13-20020a05600c468d00b0040e6277e11emr261596wmo.304.1705045676058;
        Thu, 11 Jan 2024 23:47:56 -0800 (PST)
Message-ID: <6926f363-3994-4059-b7e1-cb8e45367be8@suse.com>
Date: Fri, 12 Jan 2024 08:47:55 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 11/22] x86: add a boot option to enable and disable the
 direct map
Content-Language: en-US
To: Elias El Yandouzi <eliasely@amazon.com>, Julien Grall <julien@xen.org>
Cc: Hongyan Xia <hongyxia@amazon.com>,
 Andrew Cooper <andrew.cooper3@citrix.com>,
 George Dunlap <george.dunlap@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>,
 Bertrand Marquis <bertrand.marquis@arm.com>,
 Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Julien Grall <jgrall@amazon.com>, xen-devel@lists.xenproject.org
References: <20221216114853.8227-1-julien@xen.org>
 <20221216114853.8227-12-julien@xen.org>
 <fc70f967-34bb-9569-f514-7a3208e746c6@suse.com>
 <bc989828-69b9-4919-9ff3-fdd53fb2def1@amazon.com>
 <c736e4d9-5262-4adf-9e74-9b1be5ab13db@suse.com>
 <4ab710c3-c628-4bbe-9533-88af75a9b9ec@xen.org>
 <ba63d435-e26f-4c76-aedc-c027e8b03a6d@suse.com>
 <0dcc54dd-b729-4e20-95af-fa4907a550c6@amazon.com>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <0dcc54dd-b729-4e20-95af-fa4907a550c6@amazon.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 11.01.2024 19:25, Elias El Yandouzi wrote:
> 
> 
> On 11/01/2024 14:09, Jan Beulich wrote:
>> On 11.01.2024 13:25, Julien Grall wrote:
>>> Hi Jan,
>>>
>>> On 11/01/2024 11:53, Jan Beulich wrote:
>>>> On 11.01.2024 11:47, Elias El Yandouzi wrote:
>>>>> On 22/12/2022 13:24, Jan Beulich wrote:
>>>>>> That said, I think this change comes too early in the series, or there is
>>>>>> something missing.
>>>>>
>>>>> At first, I had the same feeling but looking at the rest of the series,
>>>>> I can see that the option is needed in follow-up patches.
>>>>>
>>>>>> As said in reply to patch 10, while there the mapcache
>>>>>> is being initialized for the idle domain, I don't think it can be used
>>>>>> just yet. Read through mapcache_current_vcpu() to understand why I think
>>>>>> that way, paying particular attention to the ASSERT() near the end.
>>>>>
>>>>> Would be able to elaborate a bit more why you think that? I haven't been
>>>>> able to get your point.
>>>>
>>>> Why exactly I referred to the ASSERT() there I can't reconstruct. The
>>>> function as a whole looks problematic though when suddenly the idle
>>>> domain also gains a mapcache. I'm sorry, too much context was lost
>>>> from over a year ago; all of this will need looking at from scratch
>>>> again whenever a new version was posted.
>>>>
>>>>>> In preparation of this patch here I think the mfn_to_virt() uses have to all
>>>>>> disappear from map_domain_page(). Perhaps yet more strongly all
>>>>>> ..._to_virt() (except fix_to_virt() and friends) and __va() have to
>>>>>> disappear up front from x86 and any code path which can be taken on x86
>>>>>> (which may simply mean purging all respective x86 #define-s, without
>>>>>> breaking the build in any way).
>>>>>
>>>>> I agree with you on that one. I think it is what we're aiming for in the
>>>>> long term. However, as mentioned by Julien in the cover letter, the
>>>>> series's name is a misnomer and I am afraid we won't be able to remove
>>>>> all of them with this series. These helpers would still be used for
>>>>> xenheap pages or when the direct map is enabled.
>>>>
>>>> Leaving a hazard of certain uses not having been converted, or even
>>>> overlooked in patches going in at around the same time as this series?
>>>> I view this as pretty "adventurous".
>>>
>>> Until we get rid of the directmap completely (which is not the goal of
>>> this series), we will need to keep mfn_to_virt().
>>>
>>> In fact the one you ask to remove in map_domain_page() will need to be
>>> replaced with function doing the same thing. The same for the code that
>>> will initially prepare the directmap. This to avoid impacting
>>> performance when the user still wants to use the directmap.
>>>
>>> So are you just asking to remove most of the use and rename *_to_virt()
>>> to something that is more directmap specific (e.g. mfn_to_directmap_virt())?
>>
>> Well, in a way. If done this way, mfn_to_virt() (and __va()) should have no
>> users by the end of the series, and it would be obvious that nothing was
>> missed (and by then purging the old ones we could also ensure no new uses
>> would appear).
> 
> What about maddr_to_virt()? For instance, in the function 
> xen/arch/x86/dmi_scan.c:dmi_iterate(), we need to access a very low 
> machine address which isn't in the directmap range.

I'm afraid I don't follow: Very low addresses are always in the
direct map range, which - on x86 - always starts at 0.

> How would you proceed? Calling vmap() seems to be a bit overkill for 
> just a temporary mapping and I don't really want to rework this function 
> to use map_domain_page().
> 
> In such case, how would you proceed? What do you suggest?

fixmap may be an option to consider, but I also don't see why you
apparently think using vmap() would be a possibility while at the
same time making use of map_domain_page() is too much effort.

Jan


From xen-devel-bounces@lists.xenproject.org Fri Jan 12 08:49:43 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 12 Jan 2024 08:49:43 +0000
Received: from list by lists.xenproject.org with outflank-mailman.666694.1037483 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rODEF-0004Nf-Up; Fri, 12 Jan 2024 08:49:27 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 666694.1037483; Fri, 12 Jan 2024 08:49:27 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rODEF-0004NY-RY; Fri, 12 Jan 2024 08:49:27 +0000
Received: by outflank-mailman (input) for mailman id 666694;
 Fri, 12 Jan 2024 08:49:27 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=12w8=IW=amd.com=Michal.Orzel@srs-se1.protection.inumbo.net>)
 id 1rODEE-0004NS-Mu
 for xen-devel@lists.xenproject.org; Fri, 12 Jan 2024 08:49:26 +0000
Received: from NAM11-CO1-obe.outbound.protection.outlook.com
 (mail-co1nam11on20600.outbound.protection.outlook.com
 [2a01:111:f403:2416::600])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 7a626bcc-b127-11ee-9b0f-b553b5be7939;
 Fri, 12 Jan 2024 09:49:22 +0100 (CET)
Received: from BYAPR02CA0047.namprd02.prod.outlook.com (2603:10b6:a03:54::24)
 by PH7PR12MB7116.namprd12.prod.outlook.com (2603:10b6:510:1ef::12)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7159.23; Fri, 12 Jan
 2024 08:49:15 +0000
Received: from SJ1PEPF00001CE3.namprd05.prod.outlook.com
 (2603:10b6:a03:54:cafe::4) by BYAPR02CA0047.outlook.office365.com
 (2603:10b6:a03:54::24) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7181.23 via Frontend
 Transport; Fri, 12 Jan 2024 08:49:15 +0000
Received: from SATLEXMB04.amd.com (165.204.84.17) by
 SJ1PEPF00001CE3.mail.protection.outlook.com (10.167.242.11) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.7181.14 via Frontend Transport; Fri, 12 Jan 2024 08:49:14 +0000
Received: from SATLEXMB04.amd.com (10.181.40.145) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.34; Fri, 12 Jan
 2024 02:49:11 -0600
Received: from [10.252.147.188] (10.180.168.240) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server id 15.1.2507.34 via Frontend
 Transport; Fri, 12 Jan 2024 02:49:09 -0600
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 7a626bcc-b127-11ee-9b0f-b553b5be7939
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=njGeEZWdkTw2HYU77dSZphlbEph3Ju+SHOo2XfOhuht5+0Fj7NlqMLMgAcSo0zJ2klPVK0aGML6h+vNzL3qA7Wl02rKfPMk+kqiWoojlwM2fce+OBVHaptKEvzZkkKP9XiTu6XqVJE6vpE6iaCde9JpEc1d3ENfUq7BVF7u2OGu2P+83w9ww3W89u21tlZsZGfOhkIDT9VQmkD+dRpfObt7JHiqEQyuEcnkgrYTaSawhZeXemdK3FARurbLfWfrvU9KFVCUVISmuWtFYky3ae5yvZVMwzJA3bOm6MVPSxC/yYAS/6z/atoXLtFG83VCehqUx3NV7W7THQMgr0AIQ5g==
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=0qI0GK4Xgwn25JQXWhy5sQ4nCzBAnAZMpgeAwk5pPqI=;
 b=Sf8i/fMasy+cuVZGCSYIQLajDQpqFvc44OIMGWFaa0LZMkRi01CqoVf6uJ3tVIduKJzGRk/kX86+E3uMg1WOhCfMIYyqBJI0ZEM5/4Qzn+Z/ROrv2ZQ5Fpu9PJfSaGq17Lja2r4a6AQkIE9uFdf1S0Vrbt17NjmVsH79MYOuSxqR4QPX2XYpt8gaBTrUAl1wNuM7+8Hy+flWfcm8DeHCaR0JmC1dfmZg6KIunsJMVQUBKMBavKZUVEFkNcuiyRJBU0rZQ/5mwDkYxeQsuzYq+B4eJcIGjyfijlMhCYs1QofjwPLBKb9rlHrAUBZOxR88hluYTQVldMKSV5i6qPIuqQ==
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)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=0qI0GK4Xgwn25JQXWhy5sQ4nCzBAnAZMpgeAwk5pPqI=;
 b=aDwUGylOw+LUGOv6TNcWgV64ry9cMQzJFUfdnnBiW3UUmZNEg7kJL++5ohgmJS108pLOBoVM75x/8hilQbtNOM6rY5qYHoZfVH7xWviFXzzJONk3KBlioTN9HFEL9b3ZzCCLkWadDVHU7noqIVN3BCcc6sHNBdhBcZw67t+BGqI=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C
Message-ID: <58d2e455-2894-4b1f-948a-3b486bb84499@amd.com>
Date: Fri, 12 Jan 2024 09:49:08 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2 2/2] xen/arm32: head: Improve logging in head.S
Content-Language: en-US
To: Julien Grall <julien@xen.org>, <xen-devel@lists.xenproject.org>
CC: Julien Grall <jgrall@amazon.com>, Stefano Stabellini
	<sstabellini@kernel.org>, Bertrand Marquis <bertrand.marquis@arm.com>,
	Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>
References: <20240111183410.45566-1-julien@xen.org>
 <20240111183410.45566-3-julien@xen.org>
From: Michal Orzel <michal.orzel@amd.com>
In-Reply-To: <20240111183410.45566-3-julien@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 7bit
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: SJ1PEPF00001CE3:EE_|PH7PR12MB7116:EE_
X-MS-Office365-Filtering-Correlation-Id: 43cd047d-2ec8-4ee4-c450-08dc134b5abb
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam: BCL:0;
X-Microsoft-Antispam-Message-Info:
	IcOPoK0suv5SiGrgcgxTmxpxgKTnRDCr6hBre04EwrnCNDOwHpdNrLZHaZs4EjKbYnASMz/qLGIO58FlFRwM6g9Q7AhydJfe/rq9mu4jglQ0gi+0SxZR46HNZIcnOGIMPzHMuSYUlpuXh5P0ZmB8XSQzz2eI7rlgMUur4EEzm41o7AIUBj6y1fU382T+vK0cXJctlKsvlXMbAz6Mp1YIGXf8rTZgyb8XCagFLO58RgU4aJ/6MT+tFqNLH3PxobuaOnSxuA62jA+r6/G6HJpCgZCKoiBgLjuTigXCLmQaxQr5wYyEBy5asjuJmMI4vllVGIaRT+rpRS2mmGh02mWb2HP3CBv0vIOz9BQQzbgcNyZGgxoSqjKaBdiiIVGLUDhr3ED00Me4V67Upw241K4S3e6SydYC7ZC1Z6cy3SWu+/K/qrWfLGu3XRz/CEO6F1OAUPkooUeoK0po6NDIx0WPFShLbxuaLAQt1sPRZYqNron5wJ5Mi2/E+YNdrrxfgROuFg14JvfKHAFqpGpb7BI9PPVk+621Yaq1ZFNm10eQqg5aB1NHA8yIEEm6xadLqFeGgQHLz3CgO6ZVR/7bsx1cf0/zyVQx4vAEt+pRL7eCF6+wsM356v2C9WYS76vlp6E68VLj9Fm6xLCOjKRqSrwbJOgubzvimYsqfdfoVhdT5X7gD7jFg5wM5T2O16UHGbt60IZG8YvdWOa87KHFXXlirX+LJ1GgbS2pKdf2Af7nC8rowjJX7hGEOcld6DHkD2dTvw1Z0aCAsaSdVTPVjd9Y3Zh0m+yXnMGwnIya/lo/+fN705S1oo9LZYHktk+ASCLy
X-Forefront-Antispam-Report:
	CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230031)(4636009)(396003)(39860400002)(346002)(136003)(376002)(230922051799003)(186009)(451199024)(82310400011)(64100799003)(1800799012)(40470700004)(36840700001)(46966006)(31696002)(4326008)(44832011)(2906002)(110136005)(426003)(478600001)(82740400003)(54906003)(2616005)(70586007)(30864003)(83380400001)(36756003)(5660300002)(70206006)(47076005)(336012)(36860700001)(316002)(26005)(16576012)(53546011)(45080400002)(8936002)(86362001)(81166007)(41300700001)(356005)(40480700001)(8676002)(31686004)(40460700003)(43740500002)(36900700001);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Jan 2024 08:49:14.4247
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 43cd047d-2ec8-4ee4-c450-08dc134b5abb
X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com]
X-MS-Exchange-CrossTenant-AuthSource:
	SJ1PEPF00001CE3.namprd05.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR12MB7116

Hi Julien,

On 11/01/2024 19:34, Julien Grall wrote:
> 
> 
> From: Julien Grall <jgrall@amazon.com>
> 
> The sequence to enable the MMU on arm32 is quite complex as we may need
> to jump to a temporary mapping to map Xen.
> 
> Recently, we had one bug in the logic (see f5a49eb7f8b3 ("xen/arm32:
> head: Add mising isb in switch_to_runtime_mapping()") and it was
> a pain to debug because there are no logging.
> 
> In order to improve the logging in the MMU switch we need to add
> support for early printk while running on the identity mapping
> and also on the temporary mapping.
> 
> For the identity mapping, we have only the first page of Xen mapped.
> So all the strings should reside in the first page. For that purpose
> a new macro PRINT_ID is introduced.
> 
> For the temporary mapping, the fixmap is already linked in the temporary
> area (and so does the UART). So we just need to update the register
> storing the UART address (i.e. r11) to point to the UART temporary
> mapping.
> 
> Take the opportunity to introduce mov_w_on_cond in order to
> conditionally execute mov_w and avoid branches.
> 
> Signed-off-by: Julien Grall <jgrall@amazon.com>
Reviewed-by: Michal Orzel <michal.orzel@amd.com>

with some questions below:

> 
> ----
>     Changelog since v1:
>         - Rebase
>         - Move one hunk to the first patch to unbreak compilation
>         - Add more logging
>         - Remove duplicated entry
> ---
>  xen/arch/arm/arm32/head.S               |  9 ------
>  xen/arch/arm/arm32/mmu/head.S           | 39 +++++++++++++++++++++++++
>  xen/arch/arm/include/asm/arm32/macros.h | 33 +++++++++++++++------
>  xen/arch/arm/include/asm/asm_defns.h    |  6 ++--
>  xen/arch/arm/include/asm/early_printk.h |  3 ++
>  xen/arch/arm/include/asm/mmu/layout.h   |  4 +++
>  xen/arch/arm/mmu/setup.c                |  3 ++
>  xen/arch/arm/xen.lds.S                  |  1 +
>  8 files changed, 78 insertions(+), 20 deletions(-)
> 
> diff --git a/xen/arch/arm/arm32/head.S b/xen/arch/arm/arm32/head.S
> index 34ab14a9e228..99d7d4aa63d1 100644
> --- a/xen/arch/arm/arm32/head.S
> +++ b/xen/arch/arm/arm32/head.S
> @@ -98,10 +98,6 @@ past_zImage:
>          b     enable_boot_cpu_mm
> 
>  primary_switched:
> -#ifdef CONFIG_EARLY_PRINTK
> -        /* Use a virtual address to access the UART. */
> -        mov_w r11, EARLY_UART_VIRTUAL_ADDRESS
> -#endif
>          bl    zero_bss
>          PRINT("- Ready -\r\n")
>          /* Setup the arguments for start_xen and jump to C world */
> @@ -142,12 +138,7 @@ GLOBAL(init_secondary)
> 
>          mov_w lr, secondary_switched
>          b     enable_secondary_cpu_mm
> -
>  secondary_switched:
> -#ifdef CONFIG_EARLY_PRINTK
> -        /* Use a virtual address to access the UART. */
> -        mov_w r11, EARLY_UART_VIRTUAL_ADDRESS
> -#endif
>          PRINT("- Ready -\r\n")
>          /* Jump to C world */
>          mov_w r2, start_secondary
> diff --git a/xen/arch/arm/arm32/mmu/head.S b/xen/arch/arm/arm32/mmu/head.S
> index a90799ad5451..f4abd690b612 100644
> --- a/xen/arch/arm/arm32/mmu/head.S
> +++ b/xen/arch/arm/arm32/mmu/head.S
> @@ -298,6 +298,21 @@ enable_mmu:
>          mcr   CP32(r0, HSCTLR)       /* now paging is enabled */
>          isb                          /* Now, flush the icache */
> 
> +        /*
> +         * At this stage, the UART address will depend on whether the
> +         * temporary mapping was created or not.
> +         *
> +         * If it was, then the UART will be mapped in the temporary
> +         * area. Otherwise, it will be mapped at runtime virtual
> +         * mapping.
> +         */
> +#ifdef CONFIG_EARLY_PRINTK
> +        teq   r12, #1               /* Was the temporary mapping created? */
> +        mov_w_on_cond eq, r11, TEMPORARY_EARLY_UART_VIRTUAL_ADDRESS
> +        mov_w_on_cond ne, r11, EARLY_UART_VIRTUAL_ADDRESS
> +#endif
> +        PRINT_ID("- Paging turned on -\r\n")
> +
>          /*
>           * The MMU is turned on and we are in the 1:1 mapping. Switch
>           * to the runtime mapping.
> @@ -307,6 +322,17 @@ enable_mmu:
>          b     switch_to_runtime_mapping
>  1:
>          mov   lr, r5                /* Restore LR */
> +
> +        /*
> +         * Now we are running at the runtime address. The UART can
> +         * be accessed using its runtime virtual address.
> +         */
> +#ifdef CONFIG_EARLY_PRINTK
> +        mov_w r11, EARLY_UART_VIRTUAL_ADDRESS
> +#endif
> +
> +        PRINT("- Switched to the runtime mapping -\r\n")
> +
>          /*
>           * At this point, either the 1:1 map or the temporary mapping
>           * will be present. The former may clash with other parts of the
> @@ -348,12 +374,14 @@ switch_to_runtime_mapping:
>          teq   r12, #0
>          beq   ready_to_switch
> 
> +        PRINT_ID("- Switching to the temporary mapping -\r\n")
>          /* We are still in the 1:1 mapping. Jump to the temporary Virtual address. */
>          mov_w r0, 1f
>          add   r0, r0, #XEN_TEMPORARY_OFFSET /* r0 := address in temporary mapping */
>          mov   pc, r0
> 
>  1:
> +        PRINT("- Running on the temporary mapping  -\r\n")
>          /* Remove boot_second_id */
>          mov   r2, #0
>          mov   r3, #0
> @@ -364,6 +392,8 @@ switch_to_runtime_mapping:
> 
>          flush_xen_tlb_local r0
> 
> +        PRINT("- 1:1 mapping removed -\r\n")
Do I understand it right that we cannot call remove_identity_mapping due to adr_l/mov_w difference?

> +
>          /* Map boot_second into boot_pgtable */
>          mov_w r0, XEN_VIRT_START
>          create_table_entry boot_pgtable, boot_second, r0, 1
> @@ -376,7 +406,10 @@ switch_to_runtime_mapping:
>           */
>          isb
> 
> +        PRINT("- Runtime mapping mapped -\r\n")
>  ready_to_switch:
> +        PRINT_ID("- Jumping to runtime address -\r\n")
> +
>          mov   pc, lr
>  ENDPROC(switch_to_runtime_mapping)
> 
> @@ -404,6 +437,8 @@ ENTRY(enable_secondary_cpu_mm)
>          mov_w lr, 1f
>          b     enable_mmu
>  1:
> +        PRINT("- Switching to the runtime page-tables -\r\n")
> +
>          /*
>           * Non-boot CPUs need to move on to the proper pagetables, which were
>           * setup in prepare_secondary_mm.
> @@ -468,6 +503,8 @@ ENDPROC(enable_boot_cpu_mm)
>   * Clobbers r0 - r3
>   */
>  remove_identity_mapping:
> +        PRINT("- Removing the identity mapping -\r\n")
> +
>          /* r2:r3 := invalid page-table entry */
>          mov   r2, #0x0
>          mov   r3, #0x0
> @@ -488,6 +525,8 @@ ENDPROC(remove_identity_mapping)
>   * Clobbers r0 - r3
>   */
>  remove_temporary_mapping:
> +        PRINT("- Removing the temporary mapping -\r\n")
> +
>          /* r2:r3 := invalid page-table entry */
>          mov   r2, #0
>          mov   r3, #0
> diff --git a/xen/arch/arm/include/asm/arm32/macros.h b/xen/arch/arm/include/asm/arm32/macros.h
> index b84666c764d4..db681a7c7eaa 100644
> --- a/xen/arch/arm/include/asm/arm32/macros.h
> +++ b/xen/arch/arm/include/asm/arm32/macros.h
> @@ -9,9 +9,13 @@
>   * Move an immediate constant into a 32-bit register using movw/movt
>   * instructions.
>   */
> +.macro mov_w_on_cond cond, reg, word
> +        movw\cond  \reg, #:lower16:\word
> +        movt\cond  \reg, #:upper16:\word
> +.endm
> +
>  .macro mov_w reg, word
> -        movw  \reg, #:lower16:\word
> -        movt  \reg, #:upper16:\word
> +        mov_w_on_cond al, \reg, \word
>  .endm
> 
>  /*
> @@ -29,16 +33,26 @@
> 
>  #ifdef CONFIG_EARLY_PRINTK
>  /*
> - * Macro to print a string to the UART, if there is one.
> + * Macros to print a string to the UART, if there is one.
> + *
> + * There are multiple flavors:
> + *  - PRINT_SECT(section, string): The @string will be located in @section
> + *  - PRINT(): The string will be located in .rodata.str.
> + *  - PRINT_ID(): When Xen is running on the Identity Mapping, it is
> + *    only possible to have a limited amount of Xen. This will create
> + *    the string in .rodata.idmap which will always be mapped.
>   *
>   * Clobbers r0 - r3
>   */
> -#define PRINT(_s)           \
> -        mov   r3, lr       ;\
> -        adr_l r0, 98f      ;\
> -        bl    asm_puts     ;\
> -        mov   lr, r3       ;\
> -        RODATA_STR(98, _s)
> +#define PRINT_SECT(section, string)         \
> +        mov   r3, lr                       ;\
> +        adr_l r0, 98f                      ;\
> +        bl    asm_puts                     ;\
> +        mov   lr, r3                       ;\
> +        RODATA_SECT(section, 98, string)
> +
> +#define PRINT(string) PRINT_SECT(.rodata.str, string)
> +#define PRINT_ID(string) PRINT_SECT(.rodata.idmap, string)
I know this is just a macro but does it make sense to have something MMU specific in common header?
I don't expect MPU to use it.

> 
>  /*
>   * Macro to print the value of register \rb
> @@ -54,6 +68,7 @@
> 
>  #else /* CONFIG_EARLY_PRINTK */
>  #define PRINT(s)
> +#define PRINT_ID(s)
> 
>  .macro print_reg rb
>  .endm
> diff --git a/xen/arch/arm/include/asm/asm_defns.h b/xen/arch/arm/include/asm/asm_defns.h
> index 29a9dbb002fa..ec803c0a370c 100644
> --- a/xen/arch/arm/include/asm/asm_defns.h
> +++ b/xen/arch/arm/include/asm/asm_defns.h
> @@ -22,11 +22,13 @@
>  # error "unknown ARM variant"
>  #endif
> 
> -#define RODATA_STR(label, msg)                  \
> -.pushsection .rodata.str, "aMS", %progbits, 1 ; \
> +#define RODATA_SECT(section, label, msg)         \
> +.pushsection section, "aMS", %progbits, 1 ;     \
>  label:  .asciz msg;                             \
>  .popsection
> 
> +#define RODATA_STR(label, msg) RODATA_SECT(.rodata.str, label, msg)
> +
>  #define ASM_INT(label, val)                 \
>      .p2align 2;                             \
>  label: .long (val);                         \
> diff --git a/xen/arch/arm/include/asm/early_printk.h b/xen/arch/arm/include/asm/early_printk.h
> index c5149b2976da..c1e84f8b0009 100644
> --- a/xen/arch/arm/include/asm/early_printk.h
> +++ b/xen/arch/arm/include/asm/early_printk.h
> @@ -19,6 +19,9 @@
>  #define EARLY_UART_VIRTUAL_ADDRESS \
>      (FIXMAP_ADDR(FIXMAP_CONSOLE) + (CONFIG_EARLY_UART_BASE_ADDRESS & ~PAGE_MASK))
> 
> +#define TEMPORARY_EARLY_UART_VIRTUAL_ADDRESS \
> +    (TEMPORARY_FIXMAP_ADDR(FIXMAP_CONSOLE) + (CONFIG_EARLY_UART_BASE_ADDRESS & ~PAGE_MASK))
> +
>  #endif /* !CONFIG_EARLY_PRINTK */
> 
>  #endif
> diff --git a/xen/arch/arm/include/asm/mmu/layout.h b/xen/arch/arm/include/asm/mmu/layout.h
> index eac7eef885d6..a3b546465b5a 100644
> --- a/xen/arch/arm/include/asm/mmu/layout.h
> +++ b/xen/arch/arm/include/asm/mmu/layout.h
> @@ -116,6 +116,10 @@
>        (TEMPORARY_AREA_FIRST_SLOT << XEN_PT_LEVEL_SHIFT(1)))
> 
>  #define TEMPORARY_XEN_VIRT_START    TEMPORARY_AREA_ADDR(XEN_VIRT_START)
> +#define TEMPORARY_FIXMAP_VIRT_START TEMPORARY_AREA_ADDR(FIXMAP_VIRT_START)
> +
> +#define TEMPORARY_FIXMAP_ADDR(n)                    \
> +     (TEMPORARY_FIXMAP_VIRT_START + (n) * PAGE_SIZE)
NIT: this could fit in one line

> 
>  #else /* ARM_64 */
> 
> diff --git a/xen/arch/arm/mmu/setup.c b/xen/arch/arm/mmu/setup.c
> index d5264e51bc44..72725840b6b7 100644
> --- a/xen/arch/arm/mmu/setup.c
> +++ b/xen/arch/arm/mmu/setup.c
> @@ -120,7 +120,10 @@ static void __init __maybe_unused build_assertions(void)
>  #ifdef CONFIG_ARM_32
>      CHECK_SAME_SLOT(first, TEMPORARY_XEN_VIRT_START, DOMHEAP_VIRT_START);
>      CHECK_DIFFERENT_SLOT(first, XEN_VIRT_START, TEMPORARY_XEN_VIRT_START);
> +    CHECK_SAME_SLOT(first, TEMPORARY_XEN_VIRT_START,
> +                    TEMPORARY_FIXMAP_VIRT_START);
>      CHECK_SAME_SLOT(second, XEN_VIRT_START, TEMPORARY_XEN_VIRT_START);
> +    CHECK_SAME_SLOT(second, FIXMAP_VIRT_START, TEMPORARY_FIXMAP_VIRT_START);
>  #endif
> 
>  #undef CHECK_SAME_SLOT
> diff --git a/xen/arch/arm/xen.lds.S b/xen/arch/arm/xen.lds.S
> index 59b80d122fd0..20598c6963ce 100644
> --- a/xen/arch/arm/xen.lds.S
> +++ b/xen/arch/arm/xen.lds.S
> @@ -35,6 +35,7 @@ SECTIONS
>         _idmap_start = .;
>         *(.text.header)
>         *(.text.idmap)
> +       *(.rodata.idmap)
>         _idmap_end = .;
> 
>         *(.text.cold)
> --
> 2.40.1
> 

~Michal


From xen-devel-bounces@lists.xenproject.org Fri Jan 12 08:56:43 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 12 Jan 2024 08:56:43 +0000
Received: from list by lists.xenproject.org with outflank-mailman.666700.1037493 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rODLC-0005uW-PZ; Fri, 12 Jan 2024 08:56:38 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 666700.1037493; Fri, 12 Jan 2024 08:56:38 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rODLC-0005uP-MJ; Fri, 12 Jan 2024 08:56:38 +0000
Received: by outflank-mailman (input) for mailman id 666700;
 Fri, 12 Jan 2024 08:56:37 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=12w8=IW=amd.com=Michal.Orzel@srs-se1.protection.inumbo.net>)
 id 1rODLB-0005uJ-Iz
 for xen-devel@lists.xenproject.org; Fri, 12 Jan 2024 08:56:37 +0000
Received: from NAM11-BN8-obe.outbound.protection.outlook.com
 (mail-bn8nam11on20601.outbound.protection.outlook.com
 [2a01:111:f400:7eae::601])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 7db1691d-b128-11ee-98f0-6d05b1d4d9a1;
 Fri, 12 Jan 2024 09:56:36 +0100 (CET)
Received: from CH0PR03CA0034.namprd03.prod.outlook.com (2603:10b6:610:b3::9)
 by PH7PR12MB5831.namprd12.prod.outlook.com (2603:10b6:510:1d6::13) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7181.18; Fri, 12 Jan
 2024 08:56:32 +0000
Received: from DS2PEPF00003442.namprd04.prod.outlook.com
 (2603:10b6:610:b3:cafe::51) by CH0PR03CA0034.outlook.office365.com
 (2603:10b6:610:b3::9) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7181.19 via Frontend
 Transport; Fri, 12 Jan 2024 08:56:32 +0000
Received: from SATLEXMB04.amd.com (165.204.84.17) by
 DS2PEPF00003442.mail.protection.outlook.com (10.167.17.69) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.7181.14 via Frontend Transport; Fri, 12 Jan 2024 08:56:31 +0000
Received: from SATLEXMB03.amd.com (10.181.40.144) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.34; Fri, 12 Jan
 2024 02:56:31 -0600
Received: from [10.252.147.188] (10.180.168.240) by SATLEXMB03.amd.com
 (10.181.40.144) with Microsoft SMTP Server id 15.1.2507.34 via Frontend
 Transport; Fri, 12 Jan 2024 02:56:29 -0600
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 7db1691d-b128-11ee-98f0-6d05b1d4d9a1
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=Xbxafc4Ez7I9mOY98c4UbrPlITg8wsEXutj9mjZZ1TAZudrB/AUFRTxZ+3wEzPMQP0lBbfrhG0c2ZkACebDAZP2s1u5zB6v3LnA5Wrt/sYLPNgv+iZJQEaryWSI0XFfUkAOKP9Ttcv8+obCt2YJtoUbTojP9BCcqCbVyW6BWcxaeLdHscOMewvnFbJCzPTEzBYAFOLEhwQBy9rigNBgV0cLXK1CTGpaKxCLDAKbymuoCHjozwBuYCvzoZ+aehfXQO3UCKS+i/NiUPQz3Z30Zso6LxoTwf0S6Llnrt8i1Y1sEPeMgwh8RETwMiv8OD1h6qd4QtyPRyb3b9UrmDN60eA==
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=isriwWgkS0R+B3UXi/BtYK/HMKHNBQgThZOOLE3xvaU=;
 b=D12Eh12Bi2/y3U5D1RsJgtiYxiUma1eL60zIgq+8KXOaZYWXisyjvbnOXWHBDmAyWa86nF4DYy6akt/hueb3AQLmXi+gd4Dwqut6R25ogX7EywaeOrZWSwrmlhrDCWDbOfI3t34e0iPnuqR3zGiB9UXn1Vo1ldY9gjdzv9DiRBxO6U1yIvlsnIw1bsbFaiv9PuZPkfqbE7Ut65ZXWtNdGMz2eyN2f8LmN83Dvd5c1quPx+go812NjvPAiaKvhUZrassMvlN8+AY2HW/so2QB4o85ElgZYjtcvUIq6qeri9dWqHC28x1DA7MbFBCnmyp7pU7t1jYk9kgHCs/shYNQSg==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=raptorengineering.com 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)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=isriwWgkS0R+B3UXi/BtYK/HMKHNBQgThZOOLE3xvaU=;
 b=G8P4aFPQIHGLZzFEGjuzUrpNrakEQHe3iPpVbZbee4EaUFakJzosioIuodoPLwwx6lXXHNV8nzXLV0u10tL4tyG/CH4QvguMULGvYdsIqATaqXKv2Kp7IebpJ9rYwg1Frumt8mEMZx4IYbwk+2uGy88dWeYxE2QGp5WXMidfnuY=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C
Message-ID: <62bb1962-6668-4243-b41d-5aca5d3b7ecd@amd.com>
Date: Fri, 12 Jan 2024 09:56:24 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2] xen/arm: bootfdt: Harden handling of malformed mem
 reserve map
Content-Language: en-US
To: Shawn Anastasio <sanastasio@raptorengineering.com>,
	<xen-devel@lists.xenproject.org>
CC: Timothy Pearson <tpearson@raptorengineering.com>, Stefano Stabellini
	<sstabellini@kernel.org>, Julien Grall <julien@xen.org>, Bertrand Marquis
	<bertrand.marquis@arm.com>, Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>
References: <20240111232422.2610495-1-sanastasio@raptorengineering.com>
From: Michal Orzel <michal.orzel@amd.com>
In-Reply-To: <20240111232422.2610495-1-sanastasio@raptorengineering.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 7bit
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: DS2PEPF00003442:EE_|PH7PR12MB5831:EE_
X-MS-Office365-Filtering-Correlation-Id: d5b26a03-23ce-4ac1-3557-08dc134c5f7d
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam: BCL:0;
X-Microsoft-Antispam-Message-Info:
	2wtqQnhWPs864lWxxfX4eDXoaw2uKGz0oF29G7Pk3oc+IGU/1fsIsL/Ti4KSSAJpEQ8WwlQMpt/pCNlDlhivR7xOw3RVsARd4eI0fEtOxNf3MBZ46VwDe0Hf9D25gBCbIL+dy4cYpmv0lPt0EyXrjK7YIt5rEhsIGTHPuW6I8lks9CwB+TLaMJlNL/jGyxLJxK5+IkdAooQK9QHaf9K2zwGpkr7bUtvpFofv7fY0+Y/doq+j+1i3W6e+ZtY46kJZa2HS8vQpfS2GdGPR6lm3tF1PgObPQepwwlCNwH2PeogOktexCplKh0q2DRV8qxU+5WxggWAcLIFqF0Dk96y8vJ5FTxRFtMZ63r3d/eb2HGhk/28T9bHRF9g+vfzAdPBJOguEbdG/n3GuUrJMRat5HIi9ev0qOQM1r3mur+J1Mf5COZ+DtJEfecOvh9lmr3WKjV4S+x8j/Js8Zrr1PNeJuiYGk67zrVQIuaGiv780PUsDzVHBFTt5NjQv7WIZnb7tjdHfQy7nk+rX5dk4s4D7af+38yAjtvDMVDBkL4tXsjq236RxXJLTC+faP+dq8shDToadapAEy52mWs3e/ZL5mXrOMGRRhTBtT7ocIl3y2kqPVrweHt5EGY8z09E1h+z6W2h8/RZIByOp8rpWDzggbQqPRiQPQqVtQsp9UqXIIjV3vwlJhndwJqklUJJVM9Fi7vHvtji+G/4w8tvHdQ44S2tXBW+S7FHDMrVdeDf93XpYWutaMLp8peIQp/29ioG2ZYzHL0FDcoZZz/PwNde9MfvoSN/4FPSo/g1N2d24/P4=
X-Forefront-Antispam-Report:
	CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230031)(4636009)(346002)(376002)(136003)(396003)(39860400002)(230922051799003)(1800799012)(64100799003)(186009)(82310400011)(451199024)(36840700001)(40470700004)(46966006)(31686004)(40480700001)(40460700003)(336012)(70586007)(36756003)(356005)(31696002)(81166007)(86362001)(41300700001)(70206006)(36860700001)(110136005)(2616005)(4326008)(26005)(47076005)(426003)(478600001)(16576012)(54906003)(316002)(2906002)(8936002)(8676002)(5660300002)(44832011)(4744005)(6666004)(53546011)(82740400003)(43740500002)(36900700001);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Jan 2024 08:56:31.9157
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: d5b26a03-23ce-4ac1-3557-08dc134c5f7d
X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com]
X-MS-Exchange-CrossTenant-AuthSource:
	DS2PEPF00003442.namprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR12MB5831



On 12/01/2024 00:24, Shawn Anastasio wrote:
> 
> 
> The early_print_info routine in bootfdt.c incorrectly stores the result
> of a call to fdt_num_mem_rsv() in an unsigned int, which results in the
> negative error code being interpreted incorrectly in a subsequent loop
> in the case where the device tree is malformed. Fix this by properly
> checking the return code for an error and calling panic().
> 
> Signed-off-by: Shawn Anastasio <sanastasio@raptorengineering.com>
Reviewed-by: Michal Orzel <michal.orzel@amd.com>

~Michal



From xen-devel-bounces@lists.xenproject.org Fri Jan 12 09:24:17 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 12 Jan 2024 09:24:17 +0000
Received: from list by lists.xenproject.org with outflank-mailman.666705.1037506 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rODlr-0002CQ-6d; Fri, 12 Jan 2024 09:24:11 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 666705.1037506; Fri, 12 Jan 2024 09:24:11 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rODlr-0002CJ-3b; Fri, 12 Jan 2024 09:24:11 +0000
Received: by outflank-mailman (input) for mailman id 666705;
 Fri, 12 Jan 2024 09:24:10 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=12w8=IW=amd.com=Michal.Orzel@srs-se1.protection.inumbo.net>)
 id 1rODlq-0002CD-D1
 for xen-devel@lists.xenproject.org; Fri, 12 Jan 2024 09:24:10 +0000
Received: from NAM11-BN8-obe.outbound.protection.outlook.com
 (mail-bn8nam11on20601.outbound.protection.outlook.com
 [2a01:111:f400:7eae::601])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 5679e5b5-b12c-11ee-98f0-6d05b1d4d9a1;
 Fri, 12 Jan 2024 10:24:09 +0100 (CET)
Received: from DS7PR05CA0053.namprd05.prod.outlook.com (2603:10b6:8:2f::34) by
 SN7PR12MB6669.namprd12.prod.outlook.com (2603:10b6:806:26f::13) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7181.19; Fri, 12 Jan
 2024 09:24:04 +0000
Received: from DS1PEPF00017094.namprd03.prod.outlook.com
 (2603:10b6:8:2f:cafe::80) by DS7PR05CA0053.outlook.office365.com
 (2603:10b6:8:2f::34) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7202.14 via Frontend
 Transport; Fri, 12 Jan 2024 09:24:04 +0000
Received: from SATLEXMB04.amd.com (165.204.84.17) by
 DS1PEPF00017094.mail.protection.outlook.com (10.167.17.137) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.7181.14 via Frontend Transport; Fri, 12 Jan 2024 09:24:04 +0000
Received: from SATLEXMB04.amd.com (10.181.40.145) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.34; Fri, 12 Jan
 2024 03:24:03 -0600
Received: from [10.252.147.188] (10.180.168.240) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server id 15.1.2507.34 via Frontend
 Transport; Fri, 12 Jan 2024 03:24:02 -0600
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 5679e5b5-b12c-11ee-98f0-6d05b1d4d9a1
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=DL3RYWH4EzI4ND51GJBaB23RoweTR7gBk/MpPxzAH0wZvAammoK3aNcv1HJFfXxNuxt24lZ9wJxVdsNCpL44IFxaeCP17/ed1XLTVM22iupRPnp5+xk+PuUpCJKjJ1zmYK/6833B0S11qd/+9lI5Oa9tHUjO/nOGeJelLQoEZwvSf67F5qby40Q1bglKOAY5WYy7ZzZvmUQgUh9u7NBlQMSNzL+2VD/dfm9S8jWq2Ibqw6llKLsRHpJGF81+SUOLxCdXAWHe1tMOkvf3HzzXtEL/StGtRua7U051N2pyoF2JYhtmWw6QfkbEu9LLyxdOWH4GkLWd62jpEUU2msE2pQ==
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=3d5sQc7GYmsoB3+ad5xudQbsp68MZa1BpP0XA5mYCjk=;
 b=FUVokPSEjQR0soJdU0aPxns61lFuMWV/i3Q28pOpdoHHFhQ03kC/uNsZc5YUWSjlT6Xu8QhlZumQwt+fCe3WFBJbmW6eJD0hVRCwWm5esN7qzZdzbPHJeGo1dtoyvv2m/yGXaBDheZZ1l9MnWAVxPzm4o85KueNTpoafXl7T2l6Tw65/YAO7okljV+sx4Qppac5JPY1BEQlDIi3UfhneqqPYuL/uJoW3y/lsstMT+P71B3Op7noqgpdBkmDwVrVNrvh5fIYfSpqA1pIi4cWAZEBNZKVPnQkFQe2dEEYkz3zWguLkremNV+dGxFaNzRoltXD2ibJIHiCsEvab4GDlgw==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=minervasys.tech 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)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=3d5sQc7GYmsoB3+ad5xudQbsp68MZa1BpP0XA5mYCjk=;
 b=l0kkbSfPcDSlebspIyidRpmyFMdEWjIGuJQs1SZBX+CpJjnCYUi4QPMRtpKBL398nyHPh2zRujzGvYxiC0X+66oFSaVshYrbp3UtOejq4QxDdhtOu9FT/kUkyRsRUdIvR9gz57mCnz9R+/Ce4i4/6qsOTNdQYwrfPtxNZkU7aJQ=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C
Message-ID: <a7a06a26-ae79-402c-96a4-a1ebfe8b5862@amd.com>
Date: Fri, 12 Jan 2024 10:24:01 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v4 03/11] xen/arm: add Dom0 cache coloring support
Content-Language: en-US
To: Carlo Nonato <carlo.nonato@minervasys.tech>,
	<xen-devel@lists.xenproject.org>
CC: Luca Miccio <lucmiccio@gmail.com>, Stefano Stabellini
	<sstabellini@kernel.org>, Julien Grall <julien@xen.org>, Bertrand Marquis
	<bertrand.marquis@arm.com>, Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
	Marco Solieri <marco.solieri@minervasys.tech>
References: <20230123154735.74832-1-carlo.nonato@minervasys.tech>
 <20230123154735.74832-4-carlo.nonato@minervasys.tech>
From: Michal Orzel <michal.orzel@amd.com>
In-Reply-To: <20230123154735.74832-4-carlo.nonato@minervasys.tech>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 7bit
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: DS1PEPF00017094:EE_|SN7PR12MB6669:EE_
X-MS-Office365-Filtering-Correlation-Id: 5fe16880-648f-402a-1d12-08dc13503888
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam: BCL:0;
X-Microsoft-Antispam-Message-Info:
	bVWVCoNwQTI/XGlKPK+evqmLmDcGcULiG7oBX8BAEF8O/kk2e57ZVmI2p5r2H4wHkBxN+igAKxlm/Qm6v1vhzqLhqK2TBUfszn8r1SWDucNagiL0WJg6n+IWSnGjwsDqJ3UWbgvOV3ABG7ULVyjVCOk5KAB8yBqMljlTKdHlW3dRyzc+TB8/52oUeH019yNhERugsCiYoqU+WDMs0/PglFmR6P9j+J4O0QhwN+99rk1LWyTMqpLYVaJP0DvzTjgeg/xY433UmqgOdVe5VXe9PvoE+dXYBTRGGwgpQPN5cOAAt2cPznwWYZy0eG1d9o4l/K923xdzLTptsbOWz0Jw4gThEukvo855Fgw0yXBorY1L507wN+3HFH8oGblmQda90zZmiBMWSLIFwi2B4d851aLakd7ym3NnVWVLyo5LdGuT2uxd8Zrhaw7jDwQDkiJTeDJDe1vDmnp0cQ4D+yZ4Y3OlDwWRP9AhJa/52XVuYruOZcJcEsz+HZGN8xkDF7QUjcElo2KY4l2xq5o7FrlMX1RUBq1Rxr5eLkwEFTLOVSl0WEyBRU0haNwGoWptGRUNV+C1/jXHDv+r6xr9ioBausdFspUKVkWiFpXVUZAnp8zJdACrFXufdqJb8h/bzu0QHLZnbkkxwdrJH4q2oE23qWI50qMei4PEG8LNlM1+TBD/JbGKb6VYpCDK8Vurn6B+bIGkeUpBYuJfDCqXiE87TBD785sbgude6k7MPAWebv1ZIIDX67L9Mvx+o07kFgV7yTsP3akFOkPdcgEm/B5ReDx7GeV/2/t7fZkBDexsqHJVrUs+MkXjgs3zzDcyGxLK
X-Forefront-Antispam-Report:
	CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230031)(4636009)(376002)(346002)(39860400002)(136003)(396003)(230922051799003)(64100799003)(82310400011)(451199024)(1800799012)(186009)(36840700001)(40470700004)(46966006)(5660300002)(40460700003)(40480700001)(8936002)(44832011)(8676002)(4326008)(70206006)(54906003)(16576012)(2906002)(316002)(70586007)(31686004)(110136005)(478600001)(36860700001)(53546011)(336012)(426003)(36756003)(2616005)(26005)(81166007)(83380400001)(47076005)(356005)(31696002)(86362001)(41300700001)(82740400003)(36900700001)(43740500002);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Jan 2024 09:24:04.5117
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 5fe16880-648f-402a-1d12-08dc13503888
X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com]
X-MS-Exchange-CrossTenant-AuthSource:
	DS1PEPF00017094.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN7PR12MB6669

Hi Carlo,

On 23/01/2023 16:47, Carlo Nonato wrote:
> 
> 
> From: Luca Miccio <lucmiccio@gmail.com>
> 
> This commit allows the user to set the cache coloring configuration for
> Dom0 via a command line parameter.
> Since cache coloring and static memory are incompatible, direct mapping
> Dom0 isn't possible when coloring is enabled.
> 
> Here is also introduced a common configuration syntax for cache colors.
> 
> Signed-off-by: Luca Miccio <lucmiccio@gmail.com>
> Signed-off-by: Marco Solieri <marco.solieri@minervasys.tech>
> Signed-off-by: Carlo Nonato <carlo.nonato@minervasys.tech>
> ---
> v4:
> - dom0 colors are dynamically allocated as for any other domain
>   (colors are duplicated in dom0_colors and in the new array, but logic
>   is simpler)
> ---
>  docs/misc/arm/cache-coloring.rst        | 32 ++++++++++++++++++++++---
>  xen/arch/arm/domain_build.c             | 17 +++++++++++--
>  xen/arch/arm/include/asm/llc_coloring.h |  4 ++++
>  xen/arch/arm/llc_coloring.c             | 14 +++++++++++
>  4 files changed, 62 insertions(+), 5 deletions(-)
> 
> diff --git a/docs/misc/arm/cache-coloring.rst b/docs/misc/arm/cache-coloring.rst
> index 0244d2f606..c2e0e87426 100644
> --- a/docs/misc/arm/cache-coloring.rst
> +++ b/docs/misc/arm/cache-coloring.rst
> @@ -83,12 +83,38 @@ manually set the way size it's left for the user to overcome failing situations
>  or for debugging/testing purposes. See `Coloring parameters and domain
>  configurations`_ section for more information on that.
> 
> +Colors selection format
> +***********************
> +
> +Regardless of the memory pool that has to be colored (Xen, Dom0/DomUs),
> +the color selection can be expressed using the same syntax. In particular a
> +comma-separated list of colors or ranges of colors is used.
> +Ranges are hyphen-separated intervals (such as `0-4`) and are inclusive on both
> +sides.
> +
> +Note that:
> + - no spaces are allowed between values.
> + - no overlapping ranges or duplicated colors are allowed.
> + - values must be written in ascending order.
> +
> +Examples:
> +
> ++---------------------+-----------------------------------+
> +|**Configuration**    |**Actual selection**               |
> ++---------------------+-----------------------------------+
> +|  1-2,5-8            | [1, 2, 5, 6, 7, 8]                |
> ++---------------------+-----------------------------------+
> +|  4-8,10,11,12       | [4, 5, 6, 7, 8, 10, 11, 12]       |
> ++---------------------+-----------------------------------+
> +|  0                  | [0]                               |
> ++---------------------+-----------------------------------+
> +
>  Coloring parameters and domain configurations
>  *********************************************
> 
> -LLC way size (as previously discussed) can be set using the appropriate command
> -line parameter. See the relevant documentation in
> -"docs/misc/xen-command-line.pandoc".
> +LLC way size (as previously discussed) and Dom0 colors can be set using the
> +appropriate command line parameters. See the relevant documentation
> +in "docs/misc/xen-command-line.pandoc".
> 
>  **Note:** If no color configuration is provided for a domain, the default one,
>  which corresponds to all available colors, is used instead.
> diff --git a/xen/arch/arm/domain_build.c b/xen/arch/arm/domain_build.c
> index f35f4d2456..093d4ad6f6 100644
> --- a/xen/arch/arm/domain_build.c
> +++ b/xen/arch/arm/domain_build.c
> @@ -2,6 +2,7 @@
>  #include <xen/init.h>
>  #include <xen/compile.h>
>  #include <xen/lib.h>
> +#include <xen/llc_coloring.h>
>  #include <xen/mm.h>
>  #include <xen/param.h>
>  #include <xen/domain_page.h>
> @@ -4014,7 +4015,10 @@ static int __init construct_dom0(struct domain *d)
>      /* type must be set before allocate_memory */
>      d->arch.type = kinfo.type;
>  #endif
> -    allocate_memory_11(d, &kinfo);
> +    if ( is_domain_llc_colored(d) )
> +        allocate_memory(d, &kinfo);
While doing some checks, I realized that the issue from previous series is still present.
Given that dom0 is hwdom, how are you going to prevent conflicts between allocated RAM and HW resources
that are to be mapped to dom0?

~Michal



From xen-devel-bounces@lists.xenproject.org Fri Jan 12 09:43:42 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 12 Jan 2024 09:43:42 +0000
Received: from list by lists.xenproject.org with outflank-mailman.666709.1037515 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rOE4e-0005Z9-OI; Fri, 12 Jan 2024 09:43:36 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 666709.1037515; Fri, 12 Jan 2024 09:43:36 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rOE4e-0005Z2-Ku; Fri, 12 Jan 2024 09:43:36 +0000
Received: by outflank-mailman (input) for mailman id 666709;
 Fri, 12 Jan 2024 09:43:35 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=OJSm=IW=minervasys.tech=carlo.nonato@srs-se1.protection.inumbo.net>)
 id 1rOE4d-0005Yu-Ac
 for xen-devel@lists.xenproject.org; Fri, 12 Jan 2024 09:43:35 +0000
Received: from mail-ej1-x634.google.com (mail-ej1-x634.google.com
 [2a00:1450:4864:20::634])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 0caa36b9-b12f-11ee-9b0f-b553b5be7939;
 Fri, 12 Jan 2024 10:43:33 +0100 (CET)
Received: by mail-ej1-x634.google.com with SMTP id
 a640c23a62f3a-a26f73732c5so736815566b.3
 for <xen-devel@lists.xenproject.org>; Fri, 12 Jan 2024 01:43:33 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 0caa36b9-b12f-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=minervasys-tech.20230601.gappssmtp.com; s=20230601; t=1705052612; x=1705657412; darn=lists.xenproject.org;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:from:to:cc:subject:date
         :message-id:reply-to;
        bh=p2QSHPKL0uDRekqreT9rA+JEVU2eVavDOd3CwdbQPKk=;
        b=epbzNm3GmqVj3gSU/S6UNaviUCB1JA3Qe8OH0tNcDU4vl0I0arVsM7ecqJmolgMb6C
         kP/WMOS07YN/Jha6TXS0dup0eNQDvR9eK0L/pje57RSF85G8dASVzG+8ERi74XoCsnhs
         7tZkLfeLk9R3zFYKmuVLsmOskRbj8/HGwWcVy0sRteS1kfucaYHplUtX/5FT7ED3yxJ5
         hPu8p4gKACz28SJ1+4XwmZrhGiWeNwDYYQBRVrXsw0Y6MlRujAv10r7LxgK8sE7H32Sp
         xO42uPEgp3mFn88o5MQbYjUnWr7KRzAGC1BETO8VhkCHLHbyJ83WJ4TDUeyy5rc4ry5J
         Q7Vw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705052612; x=1705657412;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to;
        bh=p2QSHPKL0uDRekqreT9rA+JEVU2eVavDOd3CwdbQPKk=;
        b=kCmovS8LZcwieI0qLQQ1b6csqm8UpX+YjRiu4mJWOz2lhI+bv5LLspoltJX03XTtMO
         3GZYvVALK2N2bx7BuBgD72OJ22c52wQrytONMBcOshsREdfwGpu/noUb7LRdHStn6mbF
         lhkAaHJEk9Ue5mkkwkPzzloQjdC2GxuYwW+FQYbEbhBNJD4iOM1jePhE3p/xnk0NwI+U
         JaXvGNQ1QVEZhojIYQ0YtxM7dsEmfMFWnAz831yWxD3oSVd/RQ/X2nCnuZy5vTqY7cEq
         Ema+kDwwim9afQ5ZjhxIhj4C8V/dbp5Go95vFmnp2KRo9KZ/rxJkEO/Q1JCVONtaZeaT
         CE0A==
X-Gm-Message-State: AOJu0Yxq+CXWfY8yyeHSuVZMEEFFuG60ktCtxeCJGUcNIGxMXztMcD2J
	8z54nP+CQuxJRDyAD1B3mSdQMPFDQPfzSF7qbp/IyPD8GWR+lw==
X-Google-Smtp-Source: AGHT+IEZffuPOUm59yPVEeg3aZJWNEBTzm033fQlyMjGZe/EnpzxR5H7OqnzSLwDnrJ7goC4QvAo/6GF3epvUwqNNbg=
X-Received: by 2002:a17:906:79c4:b0:a23:482:ee74 with SMTP id
 m4-20020a17090679c400b00a230482ee74mr507816ejo.28.1705052612455; Fri, 12 Jan
 2024 01:43:32 -0800 (PST)
MIME-Version: 1.0
References: <20240102095138.17933-1-carlo.nonato@minervasys.tech>
 <20240102095138.17933-8-carlo.nonato@minervasys.tech> <8212c8c3-762b-4163-b734-2c759c8c3b12@suse.com>
In-Reply-To: <8212c8c3-762b-4163-b734-2c759c8c3b12@suse.com>
From: Carlo Nonato <carlo.nonato@minervasys.tech>
Date: Fri, 12 Jan 2024 10:43:21 +0100
Message-ID: <CAG+AhRXb0_ygh_D07bJiEOmn6LZdF0f=F8tmzVSx1Kn7cGh-pw@mail.gmail.com>
Subject: Re: [PATCH v5 07/13] xen/page_alloc: introduce init_free_page_fields()
 helper
To: Jan Beulich <jbeulich@suse.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, George Dunlap <george.dunlap@citrix.com>, 
	Julien Grall <julien@xen.org>, Stefano Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>, 
	Marco Solieri <marco.solieri@minervasys.tech>, xen-devel@lists.xenproject.org
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

Hi Jan,

On Tue, Jan 9, 2024 at 11:36=E2=80=AFAM Jan Beulich <jbeulich@suse.com> wro=
te:
>
> On 02.01.2024 10:51, Carlo Nonato wrote:
> > Introduce a new helper to initialize fields that have different uses fo=
r
> > free pages.
> >
> > Signed-off-by: Carlo Nonato <carlo.nonato@minervasys.tech>
> > Signed-off-by: Marco Solieri <marco.solieri@minervasys.tech>
>
> I might in principle ack this change, but what's the deal with this 2nd
> S-o-b? The typical expectation is for yours to be last, and the 1st one
> being the original author's (which generally means you can't be the
> original author in such a case, yet the absence of a From: suggests
> you are).

You're right. I mistakenly copied it from other patches.
I did the same in #10. Will remove Marco Solieri from those.
But there are some patches where we are both authors, so I will leave both
Signed-off-by.

Thanks.

> Jan


From xen-devel-bounces@lists.xenproject.org Fri Jan 12 10:02:10 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 12 Jan 2024 10:02:10 +0000
Received: from list by lists.xenproject.org with outflank-mailman.666713.1037525 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rOEMF-0000eg-6b; Fri, 12 Jan 2024 10:01:47 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 666713.1037525; Fri, 12 Jan 2024 10:01:47 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rOEMF-0000eZ-3x; Fri, 12 Jan 2024 10:01:47 +0000
Received: by outflank-mailman (input) for mailman id 666713;
 Fri, 12 Jan 2024 10:01:45 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=OJSm=IW=minervasys.tech=carlo.nonato@srs-se1.protection.inumbo.net>)
 id 1rOEMD-0000eT-TB
 for xen-devel@lists.xenproject.org; Fri, 12 Jan 2024 10:01:45 +0000
Received: from mail-ed1-x536.google.com (mail-ed1-x536.google.com
 [2a00:1450:4864:20::536])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 955c8f7b-b131-11ee-9b0f-b553b5be7939;
 Fri, 12 Jan 2024 11:01:41 +0100 (CET)
Received: by mail-ed1-x536.google.com with SMTP id
 4fb4d7f45d1cf-55745901085so7824458a12.0
 for <xen-devel@lists.xenproject.org>; Fri, 12 Jan 2024 02:01:41 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 955c8f7b-b131-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=minervasys-tech.20230601.gappssmtp.com; s=20230601; t=1705053701; x=1705658501; darn=lists.xenproject.org;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:from:to:cc:subject:date
         :message-id:reply-to;
        bh=JXzBeWK6MOh6MFCMvlg2jq3gV6x6lL9pDwBY1YfITOI=;
        b=xiw+Tcmtbt0LCi/nlNDja6QyoSyeNka9yVBR4XXPfVmosOst4VKuvMjdMBrMXqPVcE
         Y4kE+GO/E8a7TxH5B8h+XSxCPcMhYB3G3VfprTVSNGROltvkqIFQ9/Uhg5yF/XvWA1Do
         r3tBSbRk7HtGt2vnRgA2xokgmIfpo5A3hphRtxFGU+8283BCc3ACwsY0wYPBmtU3lNHV
         Dxo1EvO4BibzFjWxmS7FZdFybGk95cQD5+E8WP/yZWPoO21ntLRKd3+P54Px3ZeE+j4N
         DHPBSjhn18m+E8XieDFIy5kYUQDXGSYZGxS1ftg42fUslIQJurDCHPMW02TOUohJON++
         ip/w==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705053701; x=1705658501;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to;
        bh=JXzBeWK6MOh6MFCMvlg2jq3gV6x6lL9pDwBY1YfITOI=;
        b=w5FrdaK2RsD3x96ckGrDN8LSwej7BzU6MBEulSHweGkNjeGRyfPLdN06IVn6EgZiz0
         zrd1PITksmkSttDvKsduYzs8d9IHz42nWpP6o7MKLXpuKI+Q77M0iNcpfUlwYsYhCLZ7
         yvjfGQ4xi4xdlGDUvIWMYqCvIAC3S1JSE1kqCrz8GMv3IfINUiUNygOTLuLSKnB7WFKM
         fWoQD3rhfx9anmoH3m0xtMb2nzK5FICjBGTC1QaAgfOq7vC5s36Cd/+gn/9TN3nUm6Bm
         k/KpmI/edHIA1Lfdhh9hIiDes9fHAbx2JKpUPdIM10b5UUos6Nses6z/OJx8298cZ6D2
         35MA==
X-Gm-Message-State: AOJu0YyrTYKHXXopU6pLLA4+1nDaQ2JaaJmdWRp9iTw+R9PZim4BkDN3
	DcbSgPR+m5ijvhTVrzebwvHUM1EYSh4sWoD/uakay08AjYKJ5A==
X-Google-Smtp-Source: AGHT+IFtdQNJnqRbyS27RyrDOU1f8t/2iJT4Mk+bWM7FYtCIpzU76UCemiE5QlCMK8+9qkZMQqZaENLiM4z62Rp08sY=
X-Received: by 2002:a17:906:36d6:b0:a2b:a027:467a with SMTP id
 b22-20020a17090636d600b00a2ba027467amr591618ejc.141.1705053700773; Fri, 12
 Jan 2024 02:01:40 -0800 (PST)
MIME-Version: 1.0
References: <20240102095138.17933-1-carlo.nonato@minervasys.tech>
 <20240102095138.17933-9-carlo.nonato@minervasys.tech> <dea5c6bc-e217-4229-9298-74fced9b7439@suse.com>
In-Reply-To: <dea5c6bc-e217-4229-9298-74fced9b7439@suse.com>
From: Carlo Nonato <carlo.nonato@minervasys.tech>
Date: Fri, 12 Jan 2024 11:01:29 +0100
Message-ID: <CAG+AhRWvUipcxzXhKce2pgMYmz039QO_ccWy8fGmcijoYty+-g@mail.gmail.com>
Subject: Re: [PATCH v5 08/13] xen/page_alloc: introduce preserved page flags macro
To: Jan Beulich <jbeulich@suse.com>
Cc: xen-devel@lists.xenproject.org, Andrew Cooper <andrew.cooper3@citrix.com>, 
	George Dunlap <george.dunlap@citrix.com>, Julien Grall <julien@xen.org>, 
	Stefano Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>, 
	Marco Solieri <marco.solieri@minervasys.tech>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

Hi Jan,

On Mon, Jan 8, 2024 at 6:08=E2=80=AFPM Jan Beulich <jbeulich@suse.com> wrot=
e:
>
> On 02.01.2024 10:51, Carlo Nonato wrote:
> > PGC_static and PGC_extra are flags that needs to be preserved when assi=
gning
> > a page. Define a new macro that groups those flags and use it instead o=
f
> > or'ing every time.
> >
> > The new macro is used also in free_heap_pages() allowing future commits=
 to
> > extended it with other flags that must stop merging, as it now works fo=
r
> > PGC_static. PGC_extra is no harm here since it's only ever being set on
> > allocated pages.
>
> Is it? I can't see where free_domheap_pages() would clear it before calli=
ng
> free_heap_pages(). Or wait, that may happen in mark_page_free(), but then
> PGC_static would be cleared there, too. I must be missing something.
>
> > --- a/xen/common/page_alloc.c
> > +++ b/xen/common/page_alloc.c
> > @@ -158,6 +158,8 @@
> >  #define PGC_static 0
> >  #endif
> >
> > +#define preserved_flags (PGC_extra | PGC_static)
>
> I think this wants to (a) have a PGC_ prefix and (b) as a #define be all
> capitals.
>
> > @@ -1504,7 +1506,7 @@ static void free_heap_pages(
> >              /* Merge with predecessor block? */
> >              if ( !mfn_valid(page_to_mfn(predecessor)) ||
> >                   !page_state_is(predecessor, free) ||
> > -                 (predecessor->count_info & PGC_static) ||
> > +                 (predecessor->count_info & preserved_flags) ||
> >                   (PFN_ORDER(predecessor) !=3D order) ||
> >                   (page_to_nid(predecessor) !=3D node) )
> >                  break;
> > @@ -1528,7 +1530,7 @@ static void free_heap_pages(
> >              /* Merge with successor block? */
> >              if ( !mfn_valid(page_to_mfn(successor)) ||
> >                   !page_state_is(successor, free) ||
> > -                 (successor->count_info & PGC_static) ||
> > +                 (successor->count_info & preserved_flags) ||
> >                   (PFN_ORDER(successor) !=3D order) ||
> >                   (page_to_nid(successor) !=3D node) )
> >                  break;
>
> Irrespective of the comment at the top, this looks like an abuse of the
> new constant: There's nothing inherently making preserved flags also
> suppress merging (assuming it was properly checked that both sided have
> the same flags set/clear).

Sorry, I may have misinterpreted your comments on the previous version of t=
he
series (I know it was a really long time ago)

https://patchew.org/Xen/20230123154735.74832-1-carlo.nonato@minervasys.tech=
/20230123154735.74832-8-carlo.nonato@minervasys.tech/#c843b031-52f7-056d-e8=
c0-75fe9c426343@suse.com

Anyway, would the solution here be to have two distinct #define? One for
suppress merging and the other for preserved flags. This would probably als=
o
remove any confusion with the usage of PGC_extra.

Thanks.

> Jan


From xen-devel-bounces@lists.xenproject.org Fri Jan 12 10:09:00 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 12 Jan 2024 10:09:00 +0000
Received: from list by lists.xenproject.org with outflank-mailman.666718.1037535 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rOET9-0001v7-W5; Fri, 12 Jan 2024 10:08:55 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 666718.1037535; Fri, 12 Jan 2024 10:08:55 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rOET9-0001v0-Tc; Fri, 12 Jan 2024 10:08:55 +0000
Received: by outflank-mailman (input) for mailman id 666718;
 Fri, 12 Jan 2024 10:08:54 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=flvc=IW=cloud.com=roger.pau@srs-se1.protection.inumbo.net>)
 id 1rOET7-0001uu-Uu
 for xen-devel@lists.xenproject.org; Fri, 12 Jan 2024 10:08:53 +0000
Received: from mail-wr1-x42e.google.com (mail-wr1-x42e.google.com
 [2a00:1450:4864:20::42e])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 968b3dab-b132-11ee-98f0-6d05b1d4d9a1;
 Fri, 12 Jan 2024 11:08:52 +0100 (CET)
Received: by mail-wr1-x42e.google.com with SMTP id
 ffacd0b85a97d-3376d424a79so4230435f8f.1
 for <xen-devel@lists.xenproject.org>; Fri, 12 Jan 2024 02:08:52 -0800 (PST)
Received: from localhost ([213.195.127.70]) by smtp.gmail.com with ESMTPSA id
 e16-20020a5d65d0000000b003365951cef9sm3417296wrw.55.2024.01.12.02.08.51
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Fri, 12 Jan 2024 02:08:52 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 968b3dab-b132-11ee-98f0-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1705054132; x=1705658932; darn=lists.xenproject.org;
        h=in-reply-to:content-transfer-encoding:content-disposition
         :mime-version:references:message-id:subject:cc:to:from:date:from:to
         :cc:subject:date:message-id:reply-to;
        bh=XC1nUnroBTR3MD1SKJe6TqIqJfhJyXvoLRJCpKfBaYY=;
        b=YY0tZ+Oy94ew+fVsJEK17Eaojc0n1KmwuEnZDaeYej8y57a6B/vrcm1qt3qOKvDAMz
         idQKI//EML8/9vSbpE1VfM3PRtLjsUQ2IFEVRtArzNlGxoRHFiq6dzipFAfWlygyYxI6
         gofGDDMN161iD1IMnyuYzeDcYYq8asdm8cXRg=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705054132; x=1705658932;
        h=in-reply-to:content-transfer-encoding:content-disposition
         :mime-version:references:message-id:subject:cc:to:from:date
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=XC1nUnroBTR3MD1SKJe6TqIqJfhJyXvoLRJCpKfBaYY=;
        b=V9Ygna8bzJM0E220u1OKiu6B0f5VqNGkvXu8e/CTIPOvsI36rUwUDzl8UXafPAkSuw
         +VdRlzCIqkBl66kEoLK61eTdxE3YA5F6AVo2TuAwm14MK7Lm56YyeYAKM8yJaphkvIj0
         E++FQ0HjswuM5SN+AdQnlDS87NmtVcWNsqxI7N6dDXX2z1bsxfROxYKrP14L6WCDjmOF
         8k1bjDLIGVa1zxsYOcsn/JUU5CzRTvmEyPeD7KAJ1N7kYslJHL8oy6g//eGSDoDK1xTv
         3K4ePovwlSchj/9UoiGbCEGkB73vq4IPA8qAiWNqsbps/qJZAcbZjNuZLXrEn4MPMZ8M
         KsnA==
X-Gm-Message-State: AOJu0YyPnhMBTuTcvi5yO8gfWew6rYamO0mropteZqxvI5hnd9doWSvh
	dno7kO5s9vysPuVlhZpCnddnUDX7dnLRcA==
X-Google-Smtp-Source: AGHT+IEKqGXbLV6JwEo6LUq5DIIQhCtaRbE5wpDEdn14UpiyhE7VvGCn/JtmKxcRfksuCpWZqFta/Q==
X-Received: by 2002:a05:6000:400c:b0:333:3f5d:63d2 with SMTP id cp12-20020a056000400c00b003333f5d63d2mr689184wrb.3.1705054132354;
        Fri, 12 Jan 2024 02:08:52 -0800 (PST)
Date: Fri, 12 Jan 2024 11:08:51 +0100
From: Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
To: Jan Beulich <jbeulich@suse.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, Wei Liu <wl@xen.org>,
	xen-devel@lists.xenproject.org
Subject: Re: [PATCH v2] x86/intel: ensure Global Performance Counter Control
 is setup correctly
Message-ID: <ZaEPs5Y0SUgcOb3c@macbook>
References: <20240111090821.67594-1-roger.pau@citrix.com>
 <3428928a-42d0-4e4b-9607-c184968c309d@suse.com>
 <ZZ_FjFa9mILtDZgv@macbook>
 <645e0c95-5a12-4202-8da6-3cc789a9e5c7@suse.com>
 <ZZ_di8pZB8bWtBuX@macbook>
 <b1e76a5f-297b-4030-a69e-33cdf179c0ce@suse.com>
 <ZZ_4HSvdg0R9Dv1Y@macbook>
 <4574c9d6-eb6d-4b73-a9e1-20b5635b32db@suse.com>
 <ZaAdEqHzbD8L_mRo@macbook>
 <b2412d90-e368-405f-813f-20a95f99ff21@suse.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <b2412d90-e368-405f-813f-20a95f99ff21@suse.com>

On Fri, Jan 12, 2024 at 08:42:27AM +0100, Jan Beulich wrote:
> On 11.01.2024 17:53, Roger Pau Monné wrote:
> > On Thu, Jan 11, 2024 at 04:52:04PM +0100, Jan Beulich wrote:
> >> On 11.01.2024 15:15, Roger Pau Monné wrote:
> >>> On Thu, Jan 11, 2024 at 03:01:01PM +0100, Jan Beulich wrote:
> >>>> On 11.01.2024 13:22, Roger Pau Monné wrote:
> >>>>> Oh, indeed, can adjust on this same patch if that's OK (seeing as the
> >>>>> issue was already there previous to my change).
> >>>>
> >>>> Well, I'm getting the impression that it was deliberate there, i.e. set
> >>>> setting of the feature flag may want to remain thus constrained.
> >>>
> >>> Hm, I find it weird, but the original commit message doesn't help at
> >>> all.  Xen itself only uses PMC0, and I don't find any other
> >>> justification in the current code to require at least 2 counters in
> >>> order to expose arch performance monitoring to be present.
> >>>
> >>> Looking at the SDM vol3, the figures there only contain PMC0 and PMC1,
> >>> so someone only reading that manual might assume there must always be
> >>> 2 global PMCs?
> >>
> >> That may have been the impression at the time. It may have been wrong
> >> already back then, or ...
> >>
> >>> (vol4 clarifies the that the number of global PMCs is variable).
> >>
> >> ... it may have been clarified in the SDM later on. My vague guess is
> >> that the > 1 check was to skip what may have been "obviously buggy"
> >> back at the time.
> > 
> > Let me know if you are OK with the adjustment in v3, or whether you
> > would rather leave the > 1 check as-is (or maybe adjust in a different
> > patch).
> 
> Well, I haven't been able to make up my mind as to whether the original
> check was wrong. Without clear indication, I think we should retain the
> original behavior by having the __set_bit() gated by an additional if().
> Then, since the line needs touching anyway, a further question would be
> whether to properly switch to setup_force_cpu_cap() at the same time.

Having looked at Linux, it has exactly the same check for > 1, which I
guess is to be expected since the code in Xen is quite likely adapted
from the code in Linux.

Overall, it might be best to leave the check as > 1.  It's possible (as
I think you also mention in a previous email) that there's simply no
hardware with 1 counter.  This might no longer be true when
virtualized, but given the current checks in both Xen and Linux any
virtualization environment that attempts to expose arch perf support
would need to expose at least 2 PMCs.

My suggestion is to leave the cnt > 1 check as it is in v2.

I can send a v4 with that check fixed if there's nothing else in v3
that needs fixing.

IMO doing the adjustment to PERF_GLOBAL_CTRL without setting
ARCH_PERFMON would be contradictory.  Either we set ARCH_PERFMON
support and consequently adjust PERF_GLOBAL_CTRL, or we don't.

Thanks, Roger.


From xen-devel-bounces@lists.xenproject.org Fri Jan 12 10:12:47 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 12 Jan 2024 10:12:47 +0000
Received: from list by lists.xenproject.org with outflank-mailman.666721.1037546 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rOEWr-0003Jz-I0; Fri, 12 Jan 2024 10:12:45 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 666721.1037546; Fri, 12 Jan 2024 10:12:45 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rOEWr-0003Js-DV; Fri, 12 Jan 2024 10:12:45 +0000
Received: by outflank-mailman (input) for mailman id 666721;
 Fri, 12 Jan 2024 10:12:44 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rOEWq-0003Ji-KN; Fri, 12 Jan 2024 10:12:44 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rOEWq-0006HN-Fg; Fri, 12 Jan 2024 10:12:44 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rOEWq-0007W2-2U; Fri, 12 Jan 2024 10:12:44 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rOEWq-0004yX-1Q; Fri, 12 Jan 2024 10:12:44 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=Pvn2EISBgXcVNH/Tjj5huWWhM59cYHpbSi1qVKDDPl8=; b=6PRtv0Es9uU+3+o0y27uZhamLy
	c4dBchRcUFhpjosoB5SE6CTA467A35izmDgeFQalpBV5QFlbYBgFa1wQsIbWssAz/xowPRpDg5T30
	eLYP+tO1PtQVHPqe4/KI1lGbt7KXjkd2SM7izd/UPoSA2mrG1avIA+puSa4TSThY6KmU=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184324-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [linux-linus test] 184324: regressions - FAIL
X-Osstest-Failures:
    linux-linus:test-amd64-amd64-xl-pvhv2-intel:guest-localmigrate/x10:fail:regression
    linux-linus:test-arm64-arm64-xl-credit1:debian-install:fail:regression
    linux-linus:test-arm64-arm64-xl:debian-install:fail:regression
    linux-linus:test-arm64-arm64-xl-thunderx:debian-install:fail:regression
    linux-linus:test-arm64-arm64-xl-credit2:debian-install:fail:regression
    linux-linus:test-arm64-arm64-xl-xsm:debian-install:fail:regression
    linux-linus:test-arm64-arm64-libvirt-xsm:debian-install:fail:regression
    linux-linus:test-armhf-armhf-xl-arndale:xen-boot:fail:regression
    linux-linus:test-amd64-amd64-xl-qemut-debianhvm-i386-xsm:debian-hvm-install:fail:regression
    linux-linus:test-armhf-armhf-libvirt:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    linux-linus:test-amd64-amd64-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    linux-linus:test-amd64-amd64-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-raw:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-qcow2:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-qemuu-nested-amd:debian-hvm-install/l1/l2:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-xsm:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-multivcpu:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-multivcpu:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-rtds:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-rtds:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit1:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit1:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-qcow2:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit2:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit2:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-libvirt-raw:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-vhd:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-vhd:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-vhd:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-vhd:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-qcow2:migrate-support-check:fail:nonblocking
X-Osstest-Versions-This:
    linux=3e7aeb78ab01c2c2f0e1f784e5ddec88fcd3d106
X-Osstest-Versions-That:
    linux=0dd3ee31125508cd67f7e7172247f05b7fd1753a
From: osstest service owner <osstest-admin@xenproject.org>
Date: Fri, 12 Jan 2024 10:12:44 +0000

flight 184324 linux-linus real [real]
http://logs.test-lab.xenproject.org/osstest/logs/184324/

Regressions :-(

Tests which did not succeed and are blocking,
including tests which could not be run:
 test-amd64-amd64-xl-pvhv2-intel 20 guest-localmigrate/x10 fail REGR. vs. 184270
 test-arm64-arm64-xl-credit1  12 debian-install           fail REGR. vs. 184270
 test-arm64-arm64-xl          12 debian-install           fail REGR. vs. 184270
 test-arm64-arm64-xl-thunderx 12 debian-install           fail REGR. vs. 184270
 test-arm64-arm64-xl-credit2  12 debian-install           fail REGR. vs. 184270
 test-arm64-arm64-xl-xsm      12 debian-install           fail REGR. vs. 184270
 test-arm64-arm64-libvirt-xsm 12 debian-install           fail REGR. vs. 184270
 test-armhf-armhf-xl-arndale   8 xen-boot                 fail REGR. vs. 184270
 test-amd64-amd64-xl-qemut-debianhvm-i386-xsm 12 debian-hvm-install fail REGR. vs. 184270

Tests which did not succeed, but are not blocking:
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 184270
 test-amd64-amd64-xl-qemut-win7-amd64 19 guest-stop            fail like 184270
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 184270
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 184270
 test-armhf-armhf-libvirt-raw 15 saverestore-support-check    fail  like 184270
 test-amd64-amd64-xl-qemut-ws16-amd64 19 guest-stop            fail like 184270
 test-armhf-armhf-libvirt-qcow2 15 saverestore-support-check   fail like 184270
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 184270
 test-amd64-amd64-libvirt     15 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-multivcpu 15 migrate-support-check        fail  never pass
 test-armhf-armhf-xl-multivcpu 16 saverestore-support-check    fail  never pass
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-armhf-armhf-libvirt     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-rtds     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-rtds     16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-credit1  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit1  16 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-qcow2 14 migrate-support-check        fail never pass
 test-armhf-armhf-xl-credit2  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit2  16 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-raw 14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 15 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-vhd      14 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-vhd      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-raw 14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-qcow2 14 migrate-support-check        fail never pass

version targeted for testing:
 linux                3e7aeb78ab01c2c2f0e1f784e5ddec88fcd3d106
baseline version:
 linux                0dd3ee31125508cd67f7e7172247f05b7fd1753a

Last test of basis   184270  2024-01-07 20:42:19 Z    4 days
Failing since        184283  2024-01-08 20:10:43 Z    3 days    6 attempts
Testing same since   184324  2024-01-11 20:11:36 Z    0 days    1 attempts

------------------------------------------------------------
903 people touched revisions under test,
not listing them all

jobs:
 build-amd64-xsm                                              pass    
 build-arm64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64                                                  pass    
 build-arm64                                                  pass    
 build-armhf                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-arm64-libvirt                                          pass    
 build-armhf-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-pvops                                            pass    
 build-arm64-pvops                                            pass    
 build-armhf-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-amd64-amd64-xl                                          pass    
 test-amd64-coresched-amd64-xl                                pass    
 test-arm64-arm64-xl                                          fail    
 test-armhf-armhf-xl                                          pass    
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm           pass    
 test-amd64-amd64-xl-qemut-stubdom-debianhvm-amd64-xsm        pass    
 test-amd64-amd64-xl-qemut-debianhvm-i386-xsm                 fail    
 test-amd64-amd64-xl-qemuu-debianhvm-i386-xsm                 pass    
 test-amd64-amd64-libvirt-xsm                                 pass    
 test-arm64-arm64-libvirt-xsm                                 fail    
 test-amd64-amd64-xl-xsm                                      pass    
 test-arm64-arm64-xl-xsm                                      fail    
 test-amd64-amd64-qemuu-nested-amd                            fail    
 test-amd64-amd64-xl-pvhv2-amd                                pass    
 test-amd64-amd64-dom0pvh-xl-amd                              pass    
 test-amd64-amd64-xl-qemut-debianhvm-amd64                    pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64                    pass    
 test-amd64-amd64-freebsd11-amd64                             pass    
 test-amd64-amd64-freebsd12-amd64                             pass    
 test-amd64-amd64-xl-qemuu-ovmf-amd64                         pass    
 test-amd64-amd64-xl-qemut-win7-amd64                         fail    
 test-amd64-amd64-xl-qemuu-win7-amd64                         fail    
 test-amd64-amd64-xl-qemut-ws16-amd64                         fail    
 test-amd64-amd64-xl-qemuu-ws16-amd64                         fail    
 test-armhf-armhf-xl-arndale                                  fail    
 test-amd64-amd64-examine-bios                                pass    
 test-amd64-amd64-xl-credit1                                  pass    
 test-arm64-arm64-xl-credit1                                  fail    
 test-armhf-armhf-xl-credit1                                  pass    
 test-amd64-amd64-xl-credit2                                  pass    
 test-arm64-arm64-xl-credit2                                  fail    
 test-armhf-armhf-xl-credit2                                  pass    
 test-amd64-amd64-xl-qemuu-dmrestrict-amd64-dmrestrict        pass    
 test-amd64-amd64-examine                                     pass    
 test-arm64-arm64-examine                                     pass    
 test-armhf-armhf-examine                                     pass    
 test-amd64-amd64-qemuu-nested-intel                          pass    
 test-amd64-amd64-xl-pvhv2-intel                              fail    
 test-amd64-amd64-dom0pvh-xl-intel                            pass    
 test-amd64-amd64-libvirt                                     pass    
 test-armhf-armhf-libvirt                                     pass    
 test-amd64-amd64-xl-multivcpu                                pass    
 test-armhf-armhf-xl-multivcpu                                pass    
 test-amd64-amd64-pair                                        pass    
 test-amd64-amd64-libvirt-pair                                pass    
 test-amd64-amd64-xl-pvshim                                   pass    
 test-amd64-amd64-pygrub                                      pass    
 test-amd64-amd64-libvirt-qcow2                               pass    
 test-armhf-armhf-libvirt-qcow2                               pass    
 test-amd64-amd64-libvirt-raw                                 pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-armhf-armhf-libvirt-raw                                 pass    
 test-amd64-amd64-xl-rtds                                     pass    
 test-armhf-armhf-xl-rtds                                     pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64-shadow             pass    
 test-amd64-amd64-xl-shadow                                   pass    
 test-arm64-arm64-xl-thunderx                                 fail    
 test-amd64-amd64-examine-uefi                                pass    
 test-amd64-amd64-xl-vhd                                      pass    
 test-arm64-arm64-xl-vhd                                      pass    
 test-armhf-armhf-xl-vhd                                      pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Not pushing.

(No revision log; it would be 104367 lines long.)


From xen-devel-bounces@lists.xenproject.org Fri Jan 12 10:19:19 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 12 Jan 2024 10:19:19 +0000
Received: from list by lists.xenproject.org with outflank-mailman.666728.1037556 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rOEd8-0004K3-6L; Fri, 12 Jan 2024 10:19:14 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 666728.1037556; Fri, 12 Jan 2024 10:19:14 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rOEd8-0004Jw-3D; Fri, 12 Jan 2024 10:19:14 +0000
Received: by outflank-mailman (input) for mailman id 666728;
 Fri, 12 Jan 2024 10:19:12 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=nnUc=IW=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rOEd6-0004Jq-7V
 for xen-devel@lists.xenproject.org; Fri, 12 Jan 2024 10:19:12 +0000
Received: from mail-lj1-x234.google.com (mail-lj1-x234.google.com
 [2a00:1450:4864:20::234])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 070ef816-b134-11ee-98f0-6d05b1d4d9a1;
 Fri, 12 Jan 2024 11:19:11 +0100 (CET)
Received: by mail-lj1-x234.google.com with SMTP id
 38308e7fff4ca-2ccbbb5eb77so74009431fa.2
 for <xen-devel@lists.xenproject.org>; Fri, 12 Jan 2024 02:19:11 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 u18-20020a05660229b200b007befaf58e52sm702869ios.30.2024.01.12.02.19.09
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Fri, 12 Jan 2024 02:19:10 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 070ef816-b134-11ee-98f0-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1705054750; x=1705659550; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=orxMPBtpMhujs16DjlWq79nyG9ufDIOFOOYn0DaHUSw=;
        b=NEnLawB8JJt8Nqj9d/We53CTXWEcywyB/vGXgV8UOOI5TT/YkedzAjdI8iDg1Zsg/k
         uXUI1Y9M912XYHv5iGXQVhjQ9uaLhWGfmryzPFfPtCjZ/u9e4vSicwLeQWhacRGo0+1t
         YXimVaELuQfnihZXjA3pQgx8492m1aABhpH8NC9rzZhQxf2JiwDedZzuAsWSXUz7P7Ja
         wO4N9JWBMZMpXLaHoZrF/LFfK29jSA1SWnAIgTIIjyiKTCBvtkl2vpfyIAmAbg6GL8Hb
         TPdPm433EuUsoVtoPRm3KUAQbyiL1pbMjslyuTb61x+vW+65GiNS2Ucpsu03M3NS5JcQ
         xWyA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705054750; x=1705659550;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=orxMPBtpMhujs16DjlWq79nyG9ufDIOFOOYn0DaHUSw=;
        b=CKA7URo6uDmjdtYEaZFIVZUI6M1mjcIHiuBbP+87jcjqy0E2YLuNjB8FRyAMi2h2bo
         BlUsRBrldktatr/NnWwVYuzcEu2uS1EWFx0Nopy9YuHA7fyq6YeKuGth5Ow9pcOUmmXn
         z0j2yjf1vdekG7w0dEwD5yDn6k1oDz5gLX9j2XpjsFLtpvMl6gO71VvCXNqw+Ps9hhSB
         EPSQciXg1ayWLiom2OoraEq8Jd/cMUShc1X9VCJLWd9C9XgXhmoGsbEi8S2wm5awKNz7
         4v1iDsnBivRa4kGiKwCp30gvvDzLEH5VpZ3OVdbkpAQ/k32b+kHtrbengRrSYDARqz0S
         yqsQ==
X-Gm-Message-State: AOJu0Yx+fBEdj5k0lTxdxC/Pm+OgJV7N1k3K1vvev0PYi5PE2udrYqh3
	LP8VxZuLeFSt12wkNyjbrxOj361R8W5I
X-Google-Smtp-Source: AGHT+IElRIokT8PGniw9klyZZ/u2d02srmb53Ko7F34Jb4Hd1jieNYuJC5WQxp5qpRnjqFau7pv58Q==
X-Received: by 2002:a05:651c:14b:b0:2cd:6c8d:4c7 with SMTP id c11-20020a05651c014b00b002cd6c8d04c7mr538056ljd.38.1705054750583;
        Fri, 12 Jan 2024 02:19:10 -0800 (PST)
Message-ID: <7b1f9f84-1e54-4ba5-aed4-a8b677ebdd99@suse.com>
Date: Fri, 12 Jan 2024 11:19:09 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2] x86/intel: ensure Global Performance Counter Control
 is setup correctly
Content-Language: en-US
To: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, Wei Liu <wl@xen.org>,
 xen-devel@lists.xenproject.org
References: <20240111090821.67594-1-roger.pau@citrix.com>
 <3428928a-42d0-4e4b-9607-c184968c309d@suse.com> <ZZ_FjFa9mILtDZgv@macbook>
 <645e0c95-5a12-4202-8da6-3cc789a9e5c7@suse.com> <ZZ_di8pZB8bWtBuX@macbook>
 <b1e76a5f-297b-4030-a69e-33cdf179c0ce@suse.com> <ZZ_4HSvdg0R9Dv1Y@macbook>
 <4574c9d6-eb6d-4b73-a9e1-20b5635b32db@suse.com> <ZaAdEqHzbD8L_mRo@macbook>
 <b2412d90-e368-405f-813f-20a95f99ff21@suse.com> <ZaEPs5Y0SUgcOb3c@macbook>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <ZaEPs5Y0SUgcOb3c@macbook>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 12.01.2024 11:08, Roger Pau Monné wrote:
> On Fri, Jan 12, 2024 at 08:42:27AM +0100, Jan Beulich wrote:
>> On 11.01.2024 17:53, Roger Pau Monné wrote:
>>> On Thu, Jan 11, 2024 at 04:52:04PM +0100, Jan Beulich wrote:
>>>> On 11.01.2024 15:15, Roger Pau Monné wrote:
>>>>> On Thu, Jan 11, 2024 at 03:01:01PM +0100, Jan Beulich wrote:
>>>>>> On 11.01.2024 13:22, Roger Pau Monné wrote:
>>>>>>> Oh, indeed, can adjust on this same patch if that's OK (seeing as the
>>>>>>> issue was already there previous to my change).
>>>>>>
>>>>>> Well, I'm getting the impression that it was deliberate there, i.e. set
>>>>>> setting of the feature flag may want to remain thus constrained.
>>>>>
>>>>> Hm, I find it weird, but the original commit message doesn't help at
>>>>> all.  Xen itself only uses PMC0, and I don't find any other
>>>>> justification in the current code to require at least 2 counters in
>>>>> order to expose arch performance monitoring to be present.
>>>>>
>>>>> Looking at the SDM vol3, the figures there only contain PMC0 and PMC1,
>>>>> so someone only reading that manual might assume there must always be
>>>>> 2 global PMCs?
>>>>
>>>> That may have been the impression at the time. It may have been wrong
>>>> already back then, or ...
>>>>
>>>>> (vol4 clarifies the that the number of global PMCs is variable).
>>>>
>>>> ... it may have been clarified in the SDM later on. My vague guess is
>>>> that the > 1 check was to skip what may have been "obviously buggy"
>>>> back at the time.
>>>
>>> Let me know if you are OK with the adjustment in v3, or whether you
>>> would rather leave the > 1 check as-is (or maybe adjust in a different
>>> patch).
>>
>> Well, I haven't been able to make up my mind as to whether the original
>> check was wrong. Without clear indication, I think we should retain the
>> original behavior by having the __set_bit() gated by an additional if().
>> Then, since the line needs touching anyway, a further question would be
>> whether to properly switch to setup_force_cpu_cap() at the same time.
> 
> Having looked at Linux, it has exactly the same check for > 1, which I
> guess is to be expected since the code in Xen is quite likely adapted
> from the code in Linux.
> 
> Overall, it might be best to leave the check as > 1.  It's possible (as
> I think you also mention in a previous email) that there's simply no
> hardware with 1 counter.  This might no longer be true when
> virtualized, but given the current checks in both Xen and Linux any
> virtualization environment that attempts to expose arch perf support
> would need to expose at least 2 PMCs.
> 
> My suggestion is to leave the cnt > 1 check as it is in v2.
> 
> I can send a v4 with that check fixed if there's nothing else in v3
> that needs fixing.
> 
> IMO doing the adjustment to PERF_GLOBAL_CTRL without setting
> ARCH_PERFMON would be contradictory.  Either we set ARCH_PERFMON
> support and consequently adjust PERF_GLOBAL_CTRL, or we don't.

Probably fair enough.

Jan


From xen-devel-bounces@lists.xenproject.org Fri Jan 12 10:22:59 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 12 Jan 2024 10:22:59 +0000
Received: from list by lists.xenproject.org with outflank-mailman.666733.1037565 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rOEgi-000648-OE; Fri, 12 Jan 2024 10:22:56 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 666733.1037565; Fri, 12 Jan 2024 10:22:56 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rOEgi-000641-Ld; Fri, 12 Jan 2024 10:22:56 +0000
Received: by outflank-mailman (input) for mailman id 666733;
 Fri, 12 Jan 2024 10:22:55 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=nnUc=IW=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rOEgh-00063v-9Q
 for xen-devel@lists.xenproject.org; Fri, 12 Jan 2024 10:22:55 +0000
Received: from mail-lj1-x231.google.com (mail-lj1-x231.google.com
 [2a00:1450:4864:20::231])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 8c10dd20-b134-11ee-98f0-6d05b1d4d9a1;
 Fri, 12 Jan 2024 11:22:54 +0100 (CET)
Received: by mail-lj1-x231.google.com with SMTP id
 38308e7fff4ca-2cca8eb0509so77458701fa.3
 for <xen-devel@lists.xenproject.org>; Fri, 12 Jan 2024 02:22:54 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 s3-20020a02cf23000000b0046d7ba50ce4sm791692jar.8.2024.01.12.02.22.51
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Fri, 12 Jan 2024 02:22:53 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 8c10dd20-b134-11ee-98f0-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1705054974; x=1705659774; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=rozZVG5zqbL9S0QxnzYqcZwe2k5PDpvkLuRhcirDxQc=;
        b=ZLAekQClzULdEG2HLqPQ++ar3RWhAUfXTpl3F4YN12ACEbXSD3B+Nv+3Qt5EbO5d+h
         M1LMTn+ts/3xZtqo4cE1jjnsUPt7d/ZOnJMoYCL0FSfGbWs67QwQyW9MMNL+wClqimJM
         w/TyziwZoQVkTbocrJdY2736hNa6wa8FrIBTft52fJf/FRRq8ccObomxcEq0HnlgdjRu
         J2nZuVrXyp7Za7CxQv5z8ywC78/3VQHrFftPAVjkBP2q0mFZ5OYc8viwYeie5fO6GByk
         2jHOEU6HwaIf8NUBxbsMBq8QaxyHR5p/I/MwNwaoHClhjUP79iUhj66xhI7g5gkLDRcN
         KlGQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705054974; x=1705659774;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=rozZVG5zqbL9S0QxnzYqcZwe2k5PDpvkLuRhcirDxQc=;
        b=eKzOSwVa38nWAhGC3IWurEFykeNDi+qU+p57rWJ8w82Ikyi0K26N2idKQVa8r9/Orv
         kTbiVDjm6AGkYfNY8fd/JFpznAHV68FixCtYdorMVCbtU8ORgcGfBmE6Iw05H+2+6WiF
         VFnKHMWbONn1RYvFIjyhT8Ymqd5M0fCwRv4SJJA22MQUscsyB1jhGSZJPMAYnQjuaJRM
         4Ae6GvbDcYNYVsrTzlCCyHlYi6CdqcqPwzXCj2J0BWT2EcyX1w2jEwuH884ftFZAyo2/
         07Mnw8dzYw7QFUadDLf8PfT49P3U72JLGNtWHXaIuUUbQRZMCu/G45W9V+9+HPqju2nC
         TVGA==
X-Gm-Message-State: AOJu0YyLiRMF1c0f2RkRnxKtKV3jMa21dcpRXaSzQDqXCbWELqdpCQqn
	veHCi6S4GbfXkp+9EsaXbGrq9iNsJoxI
X-Google-Smtp-Source: AGHT+IEC/rdFTNZscT5rnwmFPKdN4shmFBdn905ZlP3aVmRg52lYfEtGubwxAd6e0uKG052192aXAQ==
X-Received: by 2002:a2e:904d:0:b0:2cd:1eab:fec5 with SMTP id n13-20020a2e904d000000b002cd1eabfec5mr542328ljg.56.1705054973794;
        Fri, 12 Jan 2024 02:22:53 -0800 (PST)
Message-ID: <146bf90f-52c6-493d-af73-48c97d83ac2e@suse.com>
Date: Fri, 12 Jan 2024 11:22:50 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v5 08/13] xen/page_alloc: introduce preserved page flags
 macro
Content-Language: en-US
To: Carlo Nonato <carlo.nonato@minervasys.tech>
Cc: xen-devel@lists.xenproject.org, Andrew Cooper
 <andrew.cooper3@citrix.com>, George Dunlap <george.dunlap@citrix.com>,
 Julien Grall <julien@xen.org>, Stefano Stabellini <sstabellini@kernel.org>,
 Wei Liu <wl@xen.org>, Marco Solieri <marco.solieri@minervasys.tech>
References: <20240102095138.17933-1-carlo.nonato@minervasys.tech>
 <20240102095138.17933-9-carlo.nonato@minervasys.tech>
 <dea5c6bc-e217-4229-9298-74fced9b7439@suse.com>
 <CAG+AhRWvUipcxzXhKce2pgMYmz039QO_ccWy8fGmcijoYty+-g@mail.gmail.com>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <CAG+AhRWvUipcxzXhKce2pgMYmz039QO_ccWy8fGmcijoYty+-g@mail.gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 12.01.2024 11:01, Carlo Nonato wrote:
> On Mon, Jan 8, 2024 at 6:08 PM Jan Beulich <jbeulich@suse.com> wrote:
>> On 02.01.2024 10:51, Carlo Nonato wrote:
>>> PGC_static and PGC_extra are flags that needs to be preserved when assigning
>>> a page. Define a new macro that groups those flags and use it instead of
>>> or'ing every time.
>>>
>>> The new macro is used also in free_heap_pages() allowing future commits to
>>> extended it with other flags that must stop merging, as it now works for
>>> PGC_static. PGC_extra is no harm here since it's only ever being set on
>>> allocated pages.
>>
>> Is it? I can't see where free_domheap_pages() would clear it before calling
>> free_heap_pages(). Or wait, that may happen in mark_page_free(), but then
>> PGC_static would be cleared there, too. I must be missing something.
>>
>>> --- a/xen/common/page_alloc.c
>>> +++ b/xen/common/page_alloc.c
>>> @@ -158,6 +158,8 @@
>>>  #define PGC_static 0
>>>  #endif
>>>
>>> +#define preserved_flags (PGC_extra | PGC_static)
>>
>> I think this wants to (a) have a PGC_ prefix and (b) as a #define be all
>> capitals.
>>
>>> @@ -1504,7 +1506,7 @@ static void free_heap_pages(
>>>              /* Merge with predecessor block? */
>>>              if ( !mfn_valid(page_to_mfn(predecessor)) ||
>>>                   !page_state_is(predecessor, free) ||
>>> -                 (predecessor->count_info & PGC_static) ||
>>> +                 (predecessor->count_info & preserved_flags) ||
>>>                   (PFN_ORDER(predecessor) != order) ||
>>>                   (page_to_nid(predecessor) != node) )
>>>                  break;
>>> @@ -1528,7 +1530,7 @@ static void free_heap_pages(
>>>              /* Merge with successor block? */
>>>              if ( !mfn_valid(page_to_mfn(successor)) ||
>>>                   !page_state_is(successor, free) ||
>>> -                 (successor->count_info & PGC_static) ||
>>> +                 (successor->count_info & preserved_flags) ||
>>>                   (PFN_ORDER(successor) != order) ||
>>>                   (page_to_nid(successor) != node) )
>>>                  break;
>>
>> Irrespective of the comment at the top, this looks like an abuse of the
>> new constant: There's nothing inherently making preserved flags also
>> suppress merging (assuming it was properly checked that both sided have
>> the same flags set/clear).
> 
> Sorry, I may have misinterpreted your comments on the previous version of the
> series (I know it was a really long time ago)
> 
> https://patchew.org/Xen/20230123154735.74832-1-carlo.nonato@minervasys.tech/20230123154735.74832-8-carlo.nonato@minervasys.tech/#c843b031-52f7-056d-e8c0-75fe9c426343@suse.com
> 
> Anyway, would the solution here be to have two distinct #define? One for
> suppress merging and the other for preserved flags. This would probably also
> remove any confusion with the usage of PGC_extra.

That's one way to deal with this. Another would be to refine the above
checks, such that both buddies' preserved flags are actually compared,
and merging be suppressed if they're different. Then going with a single
#define would imo be quite okay.

Jan


From xen-devel-bounces@lists.xenproject.org Fri Jan 12 10:31:34 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 12 Jan 2024 10:31:34 +0000
Received: from list by lists.xenproject.org with outflank-mailman.666738.1037575 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rOEp0-0008SQ-IW; Fri, 12 Jan 2024 10:31:30 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 666738.1037575; Fri, 12 Jan 2024 10:31:30 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rOEp0-0008SJ-Fo; Fri, 12 Jan 2024 10:31:30 +0000
Received: by outflank-mailman (input) for mailman id 666738;
 Fri, 12 Jan 2024 10:31:28 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=nnUc=IW=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rOEoy-0008SB-Ta
 for xen-devel@lists.xenproject.org; Fri, 12 Jan 2024 10:31:28 +0000
Received: from mail-lf1-x12b.google.com (mail-lf1-x12b.google.com
 [2a00:1450:4864:20::12b])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id bda2be14-b135-11ee-9b0f-b553b5be7939;
 Fri, 12 Jan 2024 11:31:26 +0100 (CET)
Received: by mail-lf1-x12b.google.com with SMTP id
 2adb3069b0e04-50e7ddd999bso7058103e87.1
 for <xen-devel@lists.xenproject.org>; Fri, 12 Jan 2024 02:31:26 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 p6-20020a056e0206c600b003607f777e2bsm855479ils.11.2024.01.12.02.31.24
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Fri, 12 Jan 2024 02:31:26 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: bda2be14-b135-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1705055486; x=1705660286; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:from:to:cc:subject:date:message-id:reply-to;
        bh=U+3cskQ2+69SDII5ZUMBhAh/Cftn4ngwadW9WtDiN4s=;
        b=VzjG2kNOUYlJRWe/mXfL1waF61ufcUXIZIHAce7U/5hLMJkqEVzqjKbDo1aIaWDfQ3
         7nLhfyVe/qsWVfWxsQLiPF+TfCzLwOLGPq4dgHPEQZRpqJRgX4FXn/YPCSXx29ZaEikZ
         UgHKDJj9EiR6ybK0U3EHq6h3ZzuaFCfeNpK18E5gMosjSyskghMhNjhX+jQI2y/qp7Ob
         P0kLpDhluw/wC7d4POG9j1b2m6crTjYiaI5oAXTyLMvYVIyaIiYeOMd0Ew/Rp9PFaMw3
         StSHL1KemLU1xLpAYT1DIMs1ljyd3rDwhVxvIW3NGg0XJVTV29PKqMyCm2bxCmROZs9t
         lxxQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705055486; x=1705660286;
        h=content-transfer-encoding:in-reply-to:autocrypt:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to;
        bh=U+3cskQ2+69SDII5ZUMBhAh/Cftn4ngwadW9WtDiN4s=;
        b=dIlybFMFr0R0uZAL1GRftZKgZb+VcrhtvdjItcpvvoia/CWDEmvxo34DDvShnUvtt1
         9ylkE58pfld/Ndz82FzY0/oScck5suuWu1PIkLn+Y4G5T9TrHgaiWWpg2Hu9QbjQUwNO
         UBsuUUHZAAVj03mE7rMNHK0Dw8QfwSYDxU8wEgF1y8s2KYw1xRcp8OK3JVAbyDW803gx
         zkFwpwPuOlJrvzR8RaPiKHujAW93cCo9IqDjo1XZKisDjIWPHtIOzKgH/J0psHnEtCpG
         aAHCNdR5/nKMDRggfQaXQfN7a1XmEiZA8lBBSVMXVhF4cupuXqFesPCPEyyKQonuXRVT
         Ie0A==
X-Gm-Message-State: AOJu0YzL1Om1mpJS5rEDZJCImBHs2v/cHho8/3yiV7/z/OG9Tm8PQJ14
	j6YFc61ilcSfhvkXEYcaNzCNRD+MgieKyW2kL2wIPXPaCg==
X-Google-Smtp-Source: AGHT+IFSYfql2BB1rQA3a3/Kin76KP3kCPvyydSdKIB3ZhMaoudnMcQQRiy5uI0XhD84uzij/PpHXw==
X-Received: by 2002:a05:6512:282b:b0:50e:cd02:b537 with SMTP id cf43-20020a056512282b00b0050ecd02b537mr544945lfb.11.1705055486413;
        Fri, 12 Jan 2024 02:31:26 -0800 (PST)
Message-ID: <3300034e-f761-48ac-ad9c-cbbcbb768d58@suse.com>
Date: Fri, 12 Jan 2024 11:31:22 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v1-alt] xen/livepatch: Make check_for_livepatch_work()
 faster in the common case
To: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>,
 Ross Lagerwall <ross.lagerwall@citrix.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>, Wei Liu
 <wl@xen.org>, Xen-devel <xen-devel@lists.xenproject.org>
References: <20231222220045.2840714-1-andrew.cooper3@citrix.com>
 <20240111201129.4010175-1-andrew.cooper3@citrix.com>
Content-Language: en-US
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <20240111201129.4010175-1-andrew.cooper3@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 11.01.2024 21:11, Andrew Cooper wrote:
> When livepatching is enabled, this function is used all the time.  Really do
> check the fastpath first, and annotate it likely() as this is the right answer
> 100% of the time (to many significant figures).  This cuts out 3 pointer
> dereferences in the "nothing to do path".
> 
> However, GCC still needs some help to persuade it not to set the full stack
> frame (6 spilled registers, 3 slots of locals) even on the fastpath.
> 
> Create a new check_for_livepatch_work() with the fastpath only, and make the
> "new" do_livepatch_work() noinline.  This causes the fastpath to need no stack
> frame, making it faster still.
> 
> Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>

Reviewed-by: Jan Beulich <jbeulich@suse.com>




From xen-devel-bounces@lists.xenproject.org Fri Jan 12 10:32:29 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 12 Jan 2024 10:32:29 +0000
Received: from list by lists.xenproject.org with outflank-mailman.666740.1037586 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rOEpw-0000Xa-St; Fri, 12 Jan 2024 10:32:28 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 666740.1037586; Fri, 12 Jan 2024 10:32:28 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rOEpw-0000XT-P8; Fri, 12 Jan 2024 10:32:28 +0000
Received: by outflank-mailman (input) for mailman id 666740;
 Fri, 12 Jan 2024 10:32:27 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=nnUc=IW=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rOEpv-0000XC-R5
 for xen-devel@lists.xenproject.org; Fri, 12 Jan 2024 10:32:27 +0000
Received: from mail-lj1-x22d.google.com (mail-lj1-x22d.google.com
 [2a00:1450:4864:20::22d])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id e0c58ade-b135-11ee-9b0f-b553b5be7939;
 Fri, 12 Jan 2024 11:32:25 +0100 (CET)
Received: by mail-lj1-x22d.google.com with SMTP id
 38308e7fff4ca-2cd7e348311so31394211fa.2
 for <xen-devel@lists.xenproject.org>; Fri, 12 Jan 2024 02:32:25 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 p6-20020a056e0206c600b003607f777e2bsm855479ils.11.2024.01.12.02.32.24
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Fri, 12 Jan 2024 02:32:25 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: e0c58ade-b135-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1705055545; x=1705660345; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=VaXeqnGqMfvdtweBedl2DIdxSBhilSSdX6el04mTpf8=;
        b=Gvb/CeauKbxQQt1iw5MLskYYiOIgPC0wYkkBIQB6QR4WZJd8Qf8mtGmA+nasfiZHHi
         53LD6Ev0Ooyzznz5LytrG6ygdTUhDKTvi4ajLoXWuAk1i1MRzKUvsEP56sVXUiC++iZY
         LJ6fk5BDNkpWFPe9OFDBiUcqSYypH+7Z8BO7vdFQfzpQEikfsRu5i9afxkoxN/CQ26vk
         Us4GI4V8p9gcCRFt3kXX3aBwY5XYqzu9sB3ZZa3S0vl3z05dFXVrVbB6cHU8ct87SAkD
         8Jpkf6mgAEnzK4EnWICRKovwc4Wx8DINH6cH5mEIRchrdw2Lbj7QGK35cDX/zdUFB1Bj
         JasA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705055545; x=1705660345;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=VaXeqnGqMfvdtweBedl2DIdxSBhilSSdX6el04mTpf8=;
        b=Dpx7avl8SqXUbDRircRmYOiUUFpw0LDw+8u9xlHEb3vv56iIxMfsW9K9bwfCZQinES
         /fbpLcP9HCdqiPRUq72LEWowvj0paE+p1FtgjBeOaCWo5wuMv0p8SAusfjG1wAibyFNU
         /iY/CDGpkEkzwh8355QT7efd8OuS2mqzYAfRv5Qn4MqNjg05XdxIKCpsIx3S/by0dNd2
         iBXwm9BderlBbw8fZtxQkwavbLxVR9+XQN2HmZqH55By6fUTKupCIzihxM9rrfeghqof
         vbhv9Qi088CWay68XKffoYf4zDGW9VvQE1e+XQuCJJ6PNccCg5eRWRkc4WQ2uZ13Qi9i
         qmzQ==
X-Gm-Message-State: AOJu0YypJFHxAiECgKa0iCqlvfDtquNndCcA5PT33B+k/zV1RYhr5q1Q
	mn+T0f1Dyyw9X9faOWOkXa8cVijOrHO2
X-Google-Smtp-Source: AGHT+IGs17TswpoUqpEzqEdkjeG9vR7txfSv+WHv/qZCNpFJUi1QIKFFsMxtCLYsbLWP1VjXW43ySw==
X-Received: by 2002:a2e:b752:0:b0:2cc:f1ea:aa6b with SMTP id k18-20020a2eb752000000b002ccf1eaaa6bmr543920ljo.78.1705055545476;
        Fri, 12 Jan 2024 02:32:25 -0800 (PST)
Message-ID: <0734779c-c3c3-452e-bb58-533492a9fc81@suse.com>
Date: Fri, 12 Jan 2024 11:32:23 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2 1/3] x86/vmx: Collect all emtpy VMExit cases together
Content-Language: en-US
To: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Wei Liu <wl@xen.org>, George Dunlap <george.dunlap@citrix.com>,
 Xen-devel <xen-devel@lists.xenproject.org>
References: <20240111231323.4043461-1-andrew.cooper3@citrix.com>
 <20240111231323.4043461-2-andrew.cooper3@citrix.com>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <20240111231323.4043461-2-andrew.cooper3@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 12.01.2024 00:13, Andrew Cooper wrote:
> ... rather than having them spread out.  Explain consicely why each is empty.
> 
> No functional change.
> 
> Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>

Reviewed-by: Jan Beulich <jbeulich@suse.com>




From xen-devel-bounces@lists.xenproject.org Fri Jan 12 10:33:14 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 12 Jan 2024 10:33:14 +0000
Received: from list by lists.xenproject.org with outflank-mailman.666743.1037595 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rOEqf-00012z-3Z; Fri, 12 Jan 2024 10:33:13 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 666743.1037595; Fri, 12 Jan 2024 10:33:13 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rOEqf-00012s-0s; Fri, 12 Jan 2024 10:33:13 +0000
Received: by outflank-mailman (input) for mailman id 666743;
 Fri, 12 Jan 2024 10:33:12 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=nnUc=IW=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rOEqe-00012e-1P
 for xen-devel@lists.xenproject.org; Fri, 12 Jan 2024 10:33:12 +0000
Received: from mail-lj1-x233.google.com (mail-lj1-x233.google.com
 [2a00:1450:4864:20::233])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id fb020cf2-b135-11ee-9b0f-b553b5be7939;
 Fri, 12 Jan 2024 11:33:09 +0100 (CET)
Received: by mail-lj1-x233.google.com with SMTP id
 38308e7fff4ca-2cd5b467209so57291741fa.3
 for <xen-devel@lists.xenproject.org>; Fri, 12 Jan 2024 02:33:09 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 p6-20020a056e0206c600b003607f777e2bsm855479ils.11.2024.01.12.02.33.07
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Fri, 12 Jan 2024 02:33:09 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: fb020cf2-b135-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1705055589; x=1705660389; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=ashpNaP+sl1EW6oRNvDkHVBwTLskjs740wSzWpmuUr0=;
        b=Jh/SE2WUt662JSjrStZ8DF/z2aO06JNekL1n91a/pWk+E6O3rqkr5TLYcDu3doHyoQ
         vlpNQhUdlPO1brOWirjsX7/AN+nxhqkf9GFESCebguLGqv54s4Amgi36yxRwnikS/oUs
         QneCKk2qBRZAV9UCEN9+zeXNFLXKgeqqPFCUxmEHUZeBhJJu5ZL5XsuQyalfEbBxx+Ka
         z8rnY0WtQqyy4BRX2HQ3NVqr82N22YYQfifZ4ASPyB2m3pM+/2Fnos1bhGnFDIfgtu9t
         6GvteJ9Bn7+NEwpqK+nO6coa183JN0W4yl62WCIsoUxpbsaSiiNCwvtGrGXwE7+60rEl
         xqMQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705055589; x=1705660389;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=ashpNaP+sl1EW6oRNvDkHVBwTLskjs740wSzWpmuUr0=;
        b=CNuqSRX7Arp97GvdlB1g/XBOrLKrwJRGCMljcH1NS6GlEkNQxtg33esoY2FCN9Adac
         uFa8Ap/ev06ibwC5ug1xlwHX4FTRrxQ0mpLtOmbSrmnwQQQBc7tj7gek5prgwNllseHn
         iDTIGV/YZE49jQMSykhjk0nm4rxh1i1vJX/ZQGV0KAYde6BqKXgMPWD7UW6lRI5qqXJq
         dClBWXWYKOzEeynC2kkZ2CwbEhgG8O1zD9ntzjMOLcVQcwGvvOjOUSSoU6tGTzpuVxbj
         cshYnb20ywhHye5RjmkFoAKM0kvPxG46HNlE4o2Zkxz03HpX/cxms3MFVJLj18REuUPT
         twHw==
X-Gm-Message-State: AOJu0YwDh6f44o5G/+YPosZ11V1TJUQsIln/z+d1MuSNQD7PVJfZ0wif
	Kl32I/N7UKSu+YjnFq/3DP33DMH+Zy8Y
X-Google-Smtp-Source: AGHT+IEgP1xPoRvmccTCfuFvJ7KxnVGy0HBsuoXV+M8KfWNebW9cEGZZoIRpZ+VKfLpKLxIRnHUMMQ==
X-Received: by 2002:a2e:7c01:0:b0:2cc:63e4:884c with SMTP id x1-20020a2e7c01000000b002cc63e4884cmr568781ljc.50.1705055589413;
        Fri, 12 Jan 2024 02:33:09 -0800 (PST)
Message-ID: <36c8f8e9-3573-4e14-9357-aabf9b4d8f12@suse.com>
Date: Fri, 12 Jan 2024 11:33:07 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2 2/3] x86/vmx: Fix IRQ handling for EXIT_REASON_INIT
Content-Language: en-US
To: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: Reima ISHII <ishiir@g.ecc.u-tokyo.ac.jp>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>, Wei Liu
 <wl@xen.org>, Jun Nakajima <jun.nakajima@intel.com>,
 Kevin Tian <kevin.tian@intel.com>, Tamas K Lengyel <tamas@tklengyel.com>,
 Takahiro Shinagawa <shina@ecc.u-tokyo.ac.jp>,
 George Dunlap <george.dunlap@citrix.com>,
 Xen-devel <xen-devel@lists.xenproject.org>
References: <20240111231323.4043461-1-andrew.cooper3@citrix.com>
 <20240111231323.4043461-3-andrew.cooper3@citrix.com>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <20240111231323.4043461-3-andrew.cooper3@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 12.01.2024 00:13, Andrew Cooper wrote:
> When receiving an INIT, a prior bugfix tried to ignore the INIT and continue
> onwards.
> 
> Unfortunately it's not safe to return at that point in vmx_vmexit_handler().
> Just out of context in the first hunk is a local_irqs_enabled() which is
> depended-upon by the return-to-guest path, causing the following checklock
> failure in debug builds:
> 
>   (XEN) Error: INIT received - ignoring
>   (XEN) CHECKLOCK FAILURE: prev irqsafe: 0, curr irqsafe 1
>   (XEN) Xen BUG at common/spinlock.c:132
>   (XEN) ----[ Xen-4.19-unstable  x86_64  debug=y  Tainted:     H  ]----
>   ...
>   (XEN) Xen call trace:
>   (XEN)    [<ffff82d040238e10>] R check_lock+0xcd/0xe1
>   (XEN)    [<ffff82d040238fe3>] F _spin_lock+0x1b/0x60
>   (XEN)    [<ffff82d0402ed6a8>] F pt_update_irq+0x32/0x3bb
>   (XEN)    [<ffff82d0402b9632>] F vmx_intr_assist+0x3b/0x51d
>   (XEN)    [<ffff82d040206447>] F vmx_asm_vmexit_handler+0xf7/0x210
> 
> Luckily, this is benign in release builds.  Accidentally having IRQs disabled
> when trying to take an IRQs-on lock isn't a deadlock-vulnerable pattern.
> 
> Drop the problematic early return.  In hindsight, it's wrong to skip other
> normal VMExit steps.
> 
> Fixes: b1f11273d5a7 ("x86/vmx: Don't spuriously crash the domain when INIT is received")
> Reported-by: Reima ISHII <ishiir@g.ecc.u-tokyo.ac.jp>
> Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>

Reviewed-by: Jan Beulich <jbeulich@suse.com>




From xen-devel-bounces@lists.xenproject.org Fri Jan 12 10:38:03 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 12 Jan 2024 10:38:03 +0000
Received: from list by lists.xenproject.org with outflank-mailman.666750.1037606 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rOEvG-0001y1-M4; Fri, 12 Jan 2024 10:37:58 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 666750.1037606; Fri, 12 Jan 2024 10:37:58 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rOEvG-0001xu-Il; Fri, 12 Jan 2024 10:37:58 +0000
Received: by outflank-mailman (input) for mailman id 666750;
 Fri, 12 Jan 2024 10:37:57 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=nnUc=IW=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rOEvF-0001wY-C8
 for xen-devel@lists.xenproject.org; Fri, 12 Jan 2024 10:37:57 +0000
Received: from mail-wr1-x42a.google.com (mail-wr1-x42a.google.com
 [2a00:1450:4864:20::42a])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id a50b8628-b136-11ee-9b0f-b553b5be7939;
 Fri, 12 Jan 2024 11:37:55 +0100 (CET)
Received: by mail-wr1-x42a.google.com with SMTP id
 ffacd0b85a97d-3368ae75082so4056207f8f.1
 for <xen-devel@lists.xenproject.org>; Fri, 12 Jan 2024 02:37:55 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 n16-20020a05600c4f9000b0040d62f97e3csm9125465wmq.10.2024.01.12.02.37.54
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Fri, 12 Jan 2024 02:37:54 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: a50b8628-b136-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1705055874; x=1705660674; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=C5zB/pswNIYdGg53pgkOeVVwidGfVcoPooKMr+TVH30=;
        b=In5+fGGP+GdwFOal1AAP2pF97Z5fGzFi8Ep3tYWDLgY+TLrjXYJjDc/nb8COHu5nRi
         N7ChxwlnB7l+/wxQR0r9O9KzJ8/XvHw906KCcMDSR/dZHNqBGYCVDT2Dc0hcMIQPpywv
         jdvYGlC+h3y5dOWcJheKmutFrqoYorkX0IijR72Ylq8DXzSL2WWUEfSrAL1lBXlaZUFo
         iPHPxv7ilcAxBGj0AXpLc5QWPO5MssPA9iNPmxWvngxvWmzplnSOdoc5wnnnvcK9FuGt
         VQWnQT39ljBToRIvcW4cTO7Q5G336gDN+VlVWG6ETnTc8PoM7ZMzDMtQqRCBZpH5DjjG
         3iAg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705055874; x=1705660674;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=C5zB/pswNIYdGg53pgkOeVVwidGfVcoPooKMr+TVH30=;
        b=HkRihjrXNmsWkE8W8gA1PFcqeM3CUudBe5u3A+H4hJsrLLnmckFKsxflpuwlZdXrgY
         719ju1FwMbq6OOKxmMyxJ91HjbWgjb83zCpLhVvAaXP9RSYzI7oq5KIsJVUwEp74oAze
         niKXvVt6vltOf8zmBC0+sEd8HSindc4Eci4mJ0qY5VQDCnpONFaljb0XJbkl1DWhvgwP
         9Twa6rEOUbs+I1HYJ5MnYfS87lDmaTCEKPfp445wOZ2IrnGiOGnVV2qQTYiNFcODBSmf
         JBE2i45xCELFNtZKEUxxkPBJI690xnmoG7Sb9T2il0lShUYkj1UTOcVTFK+xGJWoYFQ1
         bSrw==
X-Gm-Message-State: AOJu0YzuPJ8fz8LERWMZHRkWFk5caRGnwv10xhF894evr93tONuOf4xk
	GNG6nn4nT+UV+XXauF+qE4P/BeePfGYa
X-Google-Smtp-Source: AGHT+IEcUxWmGHUDJGhKvKW9klyhPv0ZXcz2QsshCCWZGa6mNfsjE6zyo/enLtK9j2c0l4PMko6osQ==
X-Received: by 2002:a05:600c:3147:b0:40d:5d0a:cf4a with SMTP id h7-20020a05600c314700b0040d5d0acf4amr690707wmo.34.1705055874575;
        Fri, 12 Jan 2024 02:37:54 -0800 (PST)
Message-ID: <d9d9ee2b-ff95-4d5e-bb81-b1722681a4a5@suse.com>
Date: Fri, 12 Jan 2024 11:37:53 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2 3/3] x86/vmx: Disallow the use of inactivity states
Content-Language: en-US
To: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: Reima Ishii <ishiir@g.ecc.u-tokyo.ac.jp>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>, Wei Liu
 <wl@xen.org>, Jun Nakajima <jun.nakajima@intel.com>,
 Kevin Tian <kevin.tian@intel.com>, Tamas K Lengyel <tamas@tklengyel.com>,
 Takahiro Shinagawa <shina@ecc.u-tokyo.ac.jp>,
 George Dunlap <george.dunlap@citrix.com>,
 Xen-devel <xen-devel@lists.xenproject.org>
References: <20240111231323.4043461-1-andrew.cooper3@citrix.com>
 <20240111231323.4043461-4-andrew.cooper3@citrix.com>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <20240111231323.4043461-4-andrew.cooper3@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 12.01.2024 00:13, Andrew Cooper wrote:
> Right now, vvmx will blindly copy L12's ACTIVITY_STATE into the L02 VMCS and
> enter the vCPU.  Luckily for us, nested-virt is explicitly unsupported for
> security bugs.
> 
> The inactivity states are HLT, SHUTDOWN and WAIT-FOR-SIPI, and as noted by the
> SDM in Vol3 27.7 "Special Features of VM Entry":
> 
>   If VM entry ends with the logical processor in an inactive activity state,
>   the VM entry generates any special bus cycle that is normally generated when
>   that activity state is entered from the active state.
> 
> Also,
> 
>   Some activity states unconditionally block certain events.
> 
> I.e. A VMEntry with ACTIVITY=SHUTDOWN will initiate a platform reset, while a
> VMEntry with ACTIVITY=WAIT-FOR-SIPI will really block everything other than
> SIPIs.
> 
> Both of these activity states are for the TXT ACM to use, not for regular
> hypervisors, and Xen doesn't support dropping the HLT intercept either.
> 
> There are two paths in Xen which operate on ACTIVITY_STATE.
> 
> 1) The vmx_{get,set}_nonreg_state() helpers for VM-Fork.
> 
>    As regular VMs can't use any inactivity states, this is just duplicating
>    the 0 from construct_vmcs().  Retain the ability to query activity_state,
>    but crash the domain on any attempt to set an inactivity state.
> 
> 2) Nested virt, because of ACTIVITY_STATE in vmcs_gstate_field[].
> 
>    Explicitly hide the inactivity states in the guest's view of MSR_VMX_MISC,
>    and remove ACTIVITY_STATE from vmcs_gstate_field[].
> 
>    In virtual_vmentry(), we should trigger a VMEntry failure for the use of
>    any inactivity states, but there's no support for that in the code at all
>    so leave a TODO for when we finally start working on nested-virt in
>    earnest.
> 
> Reported-by: Reima Ishii <ishiir@g.ecc.u-tokyo.ac.jp>
> Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>

Reviewed-by: Jan Beulich <jbeulich@suse.com>
with one remark/suggestion:

> --- a/xen/arch/x86/hvm/vmx/vmx.c
> +++ b/xen/arch/x86/hvm/vmx/vmx.c
> @@ -1551,7 +1551,10 @@ static void cf_check vmx_set_nonreg_state(struct vcpu *v,
>  {
>      vmx_vmcs_enter(v);
>  
> -    __vmwrite(GUEST_ACTIVITY_STATE, nrs->vmx.activity_state);
> +    if ( nrs->vmx.activity_state )
> +        domain_crash(v->domain, "Attempt to set activity_state %#lx\n",
> +                     nrs->vmx.activity_state);

Might be useful to log the offending vCPU here?

Jan


From xen-devel-bounces@lists.xenproject.org Fri Jan 12 10:39:06 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 12 Jan 2024 10:39:06 +0000
Received: from list by lists.xenproject.org with outflank-mailman.666755.1037616 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rOEwL-0002rq-4n; Fri, 12 Jan 2024 10:39:05 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 666755.1037616; Fri, 12 Jan 2024 10:39:05 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rOEwL-0002rj-1m; Fri, 12 Jan 2024 10:39:05 +0000
Received: by outflank-mailman (input) for mailman id 666755;
 Fri, 12 Jan 2024 10:39:04 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>) id 1rOEwK-0002rb-CA
 for xen-devel@lists.xenproject.org; Fri, 12 Jan 2024 10:39:04 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rOEwJ-0006jt-QD; Fri, 12 Jan 2024 10:39:03 +0000
Received: from gw1.octic.net ([88.97.20.152] helo=[10.0.1.240])
 by xenbits.xenproject.org with esmtpsa
 (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rOEwJ-0006Ig-L8; Fri, 12 Jan 2024 10:39:03 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
	s=20200302mail; h=Content-Transfer-Encoding:Content-Type:In-Reply-To:From:
	References:Cc:To:Subject:MIME-Version:Date:Message-ID;
	bh=+tW/+mU/2/tpxvg9cykHPdDfudlHP2MIefnxZUJdaCQ=; b=ck3n4Dx7UfLWcS6V1Xh3rR7+2x
	hGgrcaR0xAAp9fjE4eHNOuPqCbynX9FPzOknTRqa4YK2G5RVLC0n5UcbfLGUDDL0LlKc5rE6HV6qp
	dHwGS8YU0gnnSAsTeNQlW6fMgNF/XVbA+ssu2V0w6vRuCuQZTwVfXwOeDh1/yLPkznhI=;
Message-ID: <abeafa19-7867-46b2-bc0e-b39eaa0f5036@xen.org>
Date: Fri, 12 Jan 2024 10:39:01 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 21/34] xen/riscv: introduce p2m.h
Content-Language: en-GB
To: Oleksii Kurochko <oleksii.kurochko@gmail.com>,
 xen-devel@lists.xenproject.org
Cc: Shawn Anastasio <sanastasio@raptorengineering.com>,
 Alistair Francis <alistair.francis@wdc.com>,
 Bob Eshleman <bobbyeshleman@gmail.com>, Connor Davis <connojdavis@gmail.com>
References: <cover.1703255175.git.oleksii.kurochko@gmail.com>
 <c3b1f24aea1ba01505697717b240c8d036abfee1.1703255175.git.oleksii.kurochko@gmail.com>
From: Julien Grall <julien@xen.org>
In-Reply-To: <c3b1f24aea1ba01505697717b240c8d036abfee1.1703255175.git.oleksii.kurochko@gmail.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

Hi Oleksii,

On 22/12/2023 15:13, Oleksii Kurochko wrote:
> Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>
> ---
> Changes in V3:
>   - add SPDX
>   - drop unneeded for now p2m types.
>   - return false in all functions implemented with BUG() inside.
>   - update the commit message
> ---
> Changes in V2:
>   - Nothing changed. Only rebase.
> ---
>   xen/arch/ppc/include/asm/p2m.h   |   3 +-
>   xen/arch/riscv/include/asm/p2m.h | 102 +++++++++++++++++++++++++++++++
>   2 files changed, 103 insertions(+), 2 deletions(-)
>   create mode 100644 xen/arch/riscv/include/asm/p2m.h
> 
> diff --git a/xen/arch/ppc/include/asm/p2m.h b/xen/arch/ppc/include/asm/p2m.h
> index 25ba054668..3bc05b7c05 100644
> --- a/xen/arch/ppc/include/asm/p2m.h
> +++ b/xen/arch/ppc/include/asm/p2m.h
> @@ -50,8 +50,7 @@ static inline void memory_type_changed(struct domain *d)
>   static inline int guest_physmap_mark_populate_on_demand(struct domain *d, unsigned long gfn,
>                                                           unsigned int order)
>   {
> -    BUG_ON("unimplemented");
> -    return 1;
> +    return -EOPNOTSUPP;
>   }
>   
>   static inline int guest_physmap_add_entry(struct domain *d,
> diff --git a/xen/arch/riscv/include/asm/p2m.h b/xen/arch/riscv/include/asm/p2m.h
> new file mode 100644
> index 0000000000..d270ef6635
> --- /dev/null
> +++ b/xen/arch/riscv/include/asm/p2m.h
> @@ -0,0 +1,102 @@
> +/* SPDX-License-Identifier: GPL-2.0-only */
> +#ifndef __ASM_RISCV_P2M_H__
> +#define __ASM_RISCV_P2M_H__
> +
> +#include <asm/page-bits.h>
> +
> +#define paddr_bits PADDR_BITS
> +
> +/*
> + * List of possible type for each page in the p2m entry.
> + * The number of available bit per page in the pte for this purpose is 4 bits.
> + * So it's possible to only have 16 fields. If we run out of value in the
> + * future, it's possible to use higher value for pseudo-type and don't store
> + * them in the p2m entry.
> + */

This looks like a verbatim copy from Arm. Did you actually check RISC-V 
has 4 bits available in the PTE to store this value?

> +typedef enum {
> +    p2m_invalid = 0,    /* Nothing mapped here */
> +    p2m_ram_rw,         /* Normal read/write guest RAM */

s/guest/domain/ as this also applies for dom0.

> +} p2m_type_t;
> +
> +#include <xen/p2m-common.h>
> +
> +static inline int get_page_and_type(struct page_info *page,
> +                                    struct domain *domain,
> +                                    unsigned long type)
> +{
> +    BUG();

I understand your goal with the BUG() but I find it risky. This is not a 
problem right now, it is more when we will decide to have RISC-V 
supported. You will have to go through all the BUG() to figure out which 
one are warrant or not.

To reduce the load, I would recommend to switch to ASSERT_UNREACHABLE() 
(or maybe introduced a different macro) that would lead to a crash on 
debug build but propagate the error normally on production build.

Of course, if you can't propagate an error, then the right course of 
action is a BUG(). But I expect this case to be limited.

[...]

> +static inline mfn_t gfn_to_mfn(struct domain *d, gfn_t gfn)
> +{
> +    BUG();
> +    return _mfn(0);

This wants to be INVALID_MFN.

[...]


-- 
Julien Grall


From xen-devel-bounces@lists.xenproject.org Fri Jan 12 10:39:28 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 12 Jan 2024 10:39:28 +0000
Received: from list by lists.xenproject.org with outflank-mailman.666757.1037626 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rOEwi-0003Nv-Bp; Fri, 12 Jan 2024 10:39:28 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 666757.1037626; Fri, 12 Jan 2024 10:39:28 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rOEwi-0003No-8X; Fri, 12 Jan 2024 10:39:28 +0000
Received: by outflank-mailman (input) for mailman id 666757;
 Fri, 12 Jan 2024 10:39:27 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=12w8=IW=amd.com=Michal.Orzel@srs-se1.protection.inumbo.net>)
 id 1rOEwg-0003Il-Qv
 for xen-devel@lists.xenproject.org; Fri, 12 Jan 2024 10:39:26 +0000
Received: from NAM02-DM3-obe.outbound.protection.outlook.com
 (mail-dm3nam02on20600.outbound.protection.outlook.com
 [2a01:111:f403:2405::600])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id d96ae132-b136-11ee-9b0f-b553b5be7939;
 Fri, 12 Jan 2024 11:39:24 +0100 (CET)
Received: from DM5PR08CA0025.namprd08.prod.outlook.com (2603:10b6:4:60::14) by
 PH7PR12MB7890.namprd12.prod.outlook.com (2603:10b6:510:268::15) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7159.23; Fri, 12 Jan
 2024 10:39:20 +0000
Received: from DS3PEPF000099D5.namprd04.prod.outlook.com
 (2603:10b6:4:60:cafe::63) by DM5PR08CA0025.outlook.office365.com
 (2603:10b6:4:60::14) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7181.23 via Frontend
 Transport; Fri, 12 Jan 2024 10:39:19 +0000
Received: from SATLEXMB03.amd.com (165.204.84.17) by
 DS3PEPF000099D5.mail.protection.outlook.com (10.167.17.6) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.7181.14 via Frontend Transport; Fri, 12 Jan 2024 10:39:19 +0000
Received: from SATLEXMB05.amd.com (10.181.40.146) by SATLEXMB03.amd.com
 (10.181.40.144) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.34; Fri, 12 Jan
 2024 04:39:19 -0600
Received: from SATLEXMB04.amd.com (10.181.40.145) by SATLEXMB05.amd.com
 (10.181.40.146) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.34; Fri, 12 Jan
 2024 04:39:18 -0600
Received: from [10.252.147.188] (10.180.168.240) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server id 15.1.2507.34 via Frontend
 Transport; Fri, 12 Jan 2024 04:39:17 -0600
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: d96ae132-b136-11ee-9b0f-b553b5be7939
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=cnB2poUZDhMAVsGYYrPOOGujxWZKpTiQvJsL9tRgUIUzX+4wWyXcPM3lLlcQRnsGMPkdemjTd75kc3cCPNgp/4W3bOs6sREKvtAgaFIQnpNaMO6aLVAXWLMklzD9ub96RZRRIzNBv8ZrwKchKBUIyFbh8zzFrfoRdG9JaJEH15zWonvswA7M/NosZPiKRu0rUzmOecy7gSADpnvI0MMu+INhtDxH2KxccAHsKEUp2NIYx46QeTeV6yAsVQ0vpyq0sG4ab+6w+zZIpl1tFyBIPVVmcnda7qfQUvlcxw6XDn6Wy4tlERsPoeY8lPbt01wgxa3kqsc0DQIf+24wXhua1Q==
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=zleXylavJ1CuW4VXEdB9REEC+cE6odoh5gtbbdbr0v8=;
 b=V6e8OmW61opnEPb2+Beh6m1DpyKeXyfFKvoOzPl/2sttGUktjvfe/GCOcMAG5YziXxOJ7XaGxspUybcSAtWgiNrpJHHbzIpkSaDMcH4x6U9m634BySn+/IYXgtmUsWwB29dFnqA1fgUI8JNKDHw5LaijDwOBB2MRSbnL100RAU2jYhU2Cc2vl4FYJqWbYp0Gd0h45MPaj5fpExuuCQYJKHN+E0U5o59BbqVQPhQIePHUvMhImxsXK7hySOeF6KBZEAFXL1mSm0OiB29d0v4BAk+aFVI7M8bns2+Ql6AJ1nA+bNv9E3oN2eYecMrf5MyESy+Q8rILFgALQtELIrB+Hw==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=minervasys.tech 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)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=zleXylavJ1CuW4VXEdB9REEC+cE6odoh5gtbbdbr0v8=;
 b=e1Z9AJDM/8MMXqxvSqyEHL+ms4YBJ6BecDbenu2o/ggT66qzPL9V7TCc/azFo59+3azo+eQf8HmVZnpNsVaTti3eOfnuVsRY4snhP6y2fEUJDP0N5KUa7QCaCW9GfPdUYxKqm7ZXaXggWdrncjRZ5VZ7PWPfmTcG5bwa8cz9FcM=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=SATLEXMB03.amd.com; pr=C
Message-ID: <5b1e66d3-84fb-4d88-869e-c16469029fe6@amd.com>
Date: Fri, 12 Jan 2024 11:39:16 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v4 03/11] xen/arm: add Dom0 cache coloring support
Content-Language: en-US
From: Michal Orzel <michal.orzel@amd.com>
To: Carlo Nonato <carlo.nonato@minervasys.tech>,
	<xen-devel@lists.xenproject.org>
CC: Luca Miccio <lucmiccio@gmail.com>, Stefano Stabellini
	<sstabellini@kernel.org>, Julien Grall <julien@xen.org>, Bertrand Marquis
	<bertrand.marquis@arm.com>, Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
	Marco Solieri <marco.solieri@minervasys.tech>
References: <20230123154735.74832-1-carlo.nonato@minervasys.tech>
 <20230123154735.74832-4-carlo.nonato@minervasys.tech>
 <a7a06a26-ae79-402c-96a4-a1ebfe8b5862@amd.com>
In-Reply-To: <a7a06a26-ae79-402c-96a4-a1ebfe8b5862@amd.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 7bit
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: DS3PEPF000099D5:EE_|PH7PR12MB7890:EE_
X-MS-Office365-Filtering-Correlation-Id: 91fefc03-23ed-4a09-48bb-08dc135abba3
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam: BCL:0;
X-Microsoft-Antispam-Message-Info:
	kNPZzjZgtYmHnF2EfrRhH5eIjy135mNSpetGCT836mL+r6i+QfffSlCN97YMW+wFEp44bczlCsH1mdDoOYjxy0muE+tf2O32xq4zyiFkLi+xk2vH7tMeMOBHi9Dqa6eUDL+HvZU5TedYMuN7ayuR887AgqCuEEQcwQWo6Oxf3LB+pZPqAPxg6J7WVIttrvB8Sq1vYOMJFdwHKj6XL/UFJApuLbJ31t9y9v6rTx4y5u9T88zCK0LX9FH7Ghkc1QTw71D2bO9Ni9FtSEs/X8vEIXHEAoEzjR6E/H1/k+YDIbKNthoAF9MvDya2erG2TssWUUnErz4WZE1S2hrQcAZVjYu8fhpv+tRJJY6FxEfNjhhNDnSsT6jBR9ID8xEfTcgXXMOOqaYqI1kJ98X3noxvbBIKJAeKasvDYS+y4OP4I2L+2Jt4iw7auj6NGtV0rsGC31qm0GE+9hEEBG7jT6PiLM/+0m+W9afgbxYriAJjDtMGq+v0zQzqRzFEvC70RIRIy1SCy72KWO5RfvO7V4ZwSiY49IjvJwcIAUebNgTTcxFWrj52rktsYKigvWz/SR0oZ+lW1gGtZQ26z5xCEenLt8tXuPwlcqY5G3aQ2gjiEc1zk+IZdlgs/bYeQsYJWcruKkexoPmJtU6H0CC8wTB6unE/r4ZB4L20g4KOc5/R+NX6G1KYIVeAi17vHXZwlhem8CAgxhF+7uyZOEJ/BTqGqdEu7FqmwL5vHPlwM+qx1/qc493c3lA3RH+8QRJyJ4LIqZiF/P3KIBkdizAMuTi7ZUDVaAIn3e2n2BSjQscrvVOPXL+7bFCKPU5HFpbrEEU8
X-Forefront-Antispam-Report:
	CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB03.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230031)(4636009)(39860400002)(346002)(396003)(136003)(376002)(230922051799003)(1800799012)(64100799003)(186009)(82310400011)(451199024)(36840700001)(40470700004)(46966006)(31686004)(40480700001)(40460700003)(83380400001)(81166007)(70206006)(41300700001)(70586007)(36756003)(356005)(31696002)(86362001)(36860700001)(82740400003)(54906003)(47076005)(426003)(316002)(2616005)(26005)(53546011)(2906002)(5660300002)(44832011)(16576012)(478600001)(336012)(8676002)(8936002)(110136005)(4326008)(43740500002)(36900700001);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Jan 2024 10:39:19.5011
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 91fefc03-23ed-4a09-48bb-08dc135abba3
X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB03.amd.com]
X-MS-Exchange-CrossTenant-AuthSource:
	DS3PEPF000099D5.namprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR12MB7890



On 12/01/2024 10:24, Michal Orzel wrote:
> 
> 
> Hi Carlo,
> 
> On 23/01/2023 16:47, Carlo Nonato wrote:
>>
>>
>> From: Luca Miccio <lucmiccio@gmail.com>
>>
>> This commit allows the user to set the cache coloring configuration for
>> Dom0 via a command line parameter.
>> Since cache coloring and static memory are incompatible, direct mapping
>> Dom0 isn't possible when coloring is enabled.
>>
>> Here is also introduced a common configuration syntax for cache colors.
>>
>> Signed-off-by: Luca Miccio <lucmiccio@gmail.com>
>> Signed-off-by: Marco Solieri <marco.solieri@minervasys.tech>
>> Signed-off-by: Carlo Nonato <carlo.nonato@minervasys.tech>
>> ---
>> v4:
>> - dom0 colors are dynamically allocated as for any other domain
>>   (colors are duplicated in dom0_colors and in the new array, but logic
>>   is simpler)
>> ---
>>  docs/misc/arm/cache-coloring.rst        | 32 ++++++++++++++++++++++---
>>  xen/arch/arm/domain_build.c             | 17 +++++++++++--
>>  xen/arch/arm/include/asm/llc_coloring.h |  4 ++++
>>  xen/arch/arm/llc_coloring.c             | 14 +++++++++++
>>  4 files changed, 62 insertions(+), 5 deletions(-)
>>
>> diff --git a/docs/misc/arm/cache-coloring.rst b/docs/misc/arm/cache-coloring.rst
>> index 0244d2f606..c2e0e87426 100644
>> --- a/docs/misc/arm/cache-coloring.rst
>> +++ b/docs/misc/arm/cache-coloring.rst
>> @@ -83,12 +83,38 @@ manually set the way size it's left for the user to overcome failing situations
>>  or for debugging/testing purposes. See `Coloring parameters and domain
>>  configurations`_ section for more information on that.
>>
>> +Colors selection format
>> +***********************
>> +
>> +Regardless of the memory pool that has to be colored (Xen, Dom0/DomUs),
>> +the color selection can be expressed using the same syntax. In particular a
>> +comma-separated list of colors or ranges of colors is used.
>> +Ranges are hyphen-separated intervals (such as `0-4`) and are inclusive on both
>> +sides.
>> +
>> +Note that:
>> + - no spaces are allowed between values.
>> + - no overlapping ranges or duplicated colors are allowed.
>> + - values must be written in ascending order.
>> +
>> +Examples:
>> +
>> ++---------------------+-----------------------------------+
>> +|**Configuration**    |**Actual selection**               |
>> ++---------------------+-----------------------------------+
>> +|  1-2,5-8            | [1, 2, 5, 6, 7, 8]                |
>> ++---------------------+-----------------------------------+
>> +|  4-8,10,11,12       | [4, 5, 6, 7, 8, 10, 11, 12]       |
>> ++---------------------+-----------------------------------+
>> +|  0                  | [0]                               |
>> ++---------------------+-----------------------------------+
>> +
>>  Coloring parameters and domain configurations
>>  *********************************************
>>
>> -LLC way size (as previously discussed) can be set using the appropriate command
>> -line parameter. See the relevant documentation in
>> -"docs/misc/xen-command-line.pandoc".
>> +LLC way size (as previously discussed) and Dom0 colors can be set using the
>> +appropriate command line parameters. See the relevant documentation
>> +in "docs/misc/xen-command-line.pandoc".
>>
>>  **Note:** If no color configuration is provided for a domain, the default one,
>>  which corresponds to all available colors, is used instead.
>> diff --git a/xen/arch/arm/domain_build.c b/xen/arch/arm/domain_build.c
>> index f35f4d2456..093d4ad6f6 100644
>> --- a/xen/arch/arm/domain_build.c
>> +++ b/xen/arch/arm/domain_build.c
>> @@ -2,6 +2,7 @@
>>  #include <xen/init.h>
>>  #include <xen/compile.h>
>>  #include <xen/lib.h>
>> +#include <xen/llc_coloring.h>
>>  #include <xen/mm.h>
>>  #include <xen/param.h>
>>  #include <xen/domain_page.h>
>> @@ -4014,7 +4015,10 @@ static int __init construct_dom0(struct domain *d)
>>      /* type must be set before allocate_memory */
>>      d->arch.type = kinfo.type;
>>  #endif
>> -    allocate_memory_11(d, &kinfo);
>> +    if ( is_domain_llc_colored(d) )
>> +        allocate_memory(d, &kinfo);
> While doing some checks, I realized that the issue from previous series is still present.
> Given that dom0 is hwdom, how are you going to prevent conflicts between allocated RAM and HW resources
> that are to be mapped to dom0?
Sorry. I answered to the wrong revision :)
Anyway, the remark still applies to v5.

~Michal


From xen-devel-bounces@lists.xenproject.org Fri Jan 12 10:43:45 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 12 Jan 2024 10:43:45 +0000
Received: from list by lists.xenproject.org with outflank-mailman.666783.1037652 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rOF0m-0006Eu-68; Fri, 12 Jan 2024 10:43:40 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 666783.1037652; Fri, 12 Jan 2024 10:43:40 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rOF0m-0006En-39; Fri, 12 Jan 2024 10:43:40 +0000
Received: by outflank-mailman (input) for mailman id 666783;
 Fri, 12 Jan 2024 10:43:38 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=jnEz=IW=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1rOF0k-0006EZ-04
 for xen-devel@lists.xenproject.org; Fri, 12 Jan 2024 10:43:38 +0000
Received: from mail-wr1-x431.google.com (mail-wr1-x431.google.com
 [2a00:1450:4864:20::431])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 70c58ccb-b137-11ee-98f0-6d05b1d4d9a1;
 Fri, 12 Jan 2024 11:43:37 +0100 (CET)
Received: by mail-wr1-x431.google.com with SMTP id
 ffacd0b85a97d-336897b6bd6so5846714f8f.2
 for <xen-devel@lists.xenproject.org>; Fri, 12 Jan 2024 02:43:37 -0800 (PST)
Received: from [10.80.67.30] (default-46-102-197-194.interdsl.co.uk.
 [46.102.197.194]) by smtp.gmail.com with ESMTPSA id
 t21-20020a05600c451500b0040e3ac9f4c8sm9066766wmo.28.2024.01.12.02.43.35
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Fri, 12 Jan 2024 02:43:36 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 70c58ccb-b137-11ee-98f0-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1705056216; x=1705661016; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=V4EgiPJtSrTPltZhyDumH5xrUfDTlLQdzf3EOOZ/NNo=;
        b=l0mZmRq0V6xvwIHRssv3L+mo72fcrLXdxBe26tZelPp+LQNKe2TnIwlFBmt465Tf4N
         nvVddxpyHEG779Wmt54kgJzNf6DgO85SbQ7aQ6o7fuK7c5FfzhvHsq7AyBmq75+IOCcW
         eHQFf/ED5dbobN/8vVgBR8Pb1/ugplUhB/NgA=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705056216; x=1705661016;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=V4EgiPJtSrTPltZhyDumH5xrUfDTlLQdzf3EOOZ/NNo=;
        b=GGRV2Z14MldW9fwxI8L/I/OnLf/dm+KkWOv9isSIATrafIBRDCXeccj2+2m25OuUgw
         QO3Bxh9vNIrYktMVbxF1DWDIXaUoYzCFMg+dXrSkeU0TfH4nIwWgBRbJcA3GTQZU0Zp/
         X8Szv3hgs0EXL5ppo2VEzA9gxSsXwwUh8BqD1r86RG4P6/EutIXRClN7zbCZBqrG/eDl
         wQ/htv13HoO6zwVA/BOvEBIQD5Suf4QDPdbK2juhWSyj1Wg3JJ0AfWR7w3Z8YZNJhZ8b
         FfE9DpluAOyRaxdoYvjIrYYsAalTN4f/fYIQXNSXMgH8u/TUEJ703bgxOLy0mCSJ47Gt
         42HQ==
X-Gm-Message-State: AOJu0YxtSZFl+Zs8oT52aEYRidkKG+Nfa2tW4h4FNrYvjwO8w8QMve+4
	oIYZ4Gl6R5zjc5bv+nZmBRGoXZeXC0hFOA==
X-Google-Smtp-Source: AGHT+IEZctMpp9/Xgb5d5ng3OJ5xgBqIhOvdW4gO5uUNjtpXsVOLmAzMKnuZX4qDEhzY8mhJweqmYg==
X-Received: by 2002:a05:600c:a297:b0:40e:4a29:d267 with SMTP id hu23-20020a05600ca29700b0040e4a29d267mr628343wmb.227.1705056216472;
        Fri, 12 Jan 2024 02:43:36 -0800 (PST)
Message-ID: <8225cfd3-73d6-4a93-92b4-185399ab0ad3@citrix.com>
Date: Fri, 12 Jan 2024 10:43:35 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2 3/3] x86/vmx: Disallow the use of inactivity states
Content-Language: en-GB
To: Jan Beulich <jbeulich@suse.com>
Cc: Reima Ishii <ishiir@g.ecc.u-tokyo.ac.jp>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>, Wei Liu
 <wl@xen.org>, Jun Nakajima <jun.nakajima@intel.com>,
 Kevin Tian <kevin.tian@intel.com>, Tamas K Lengyel <tamas@tklengyel.com>,
 Takahiro Shinagawa <shina@ecc.u-tokyo.ac.jp>,
 George Dunlap <george.dunlap@citrix.com>,
 Xen-devel <xen-devel@lists.xenproject.org>
References: <20240111231323.4043461-1-andrew.cooper3@citrix.com>
 <20240111231323.4043461-4-andrew.cooper3@citrix.com>
 <d9d9ee2b-ff95-4d5e-bb81-b1722681a4a5@suse.com>
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 xsFNBFLhNn8BEADVhE+Hb8i0GV6mihnnr/uiQQdPF8kUoFzCOPXkf7jQ5sLYeJa0cQi6Penp
 VtiFYznTairnVsN5J+ujSTIb+OlMSJUWV4opS7WVNnxHbFTPYZVQ3erv7NKc2iVizCRZ2Kxn
 srM1oPXWRic8BIAdYOKOloF2300SL/bIpeD+x7h3w9B/qez7nOin5NzkxgFoaUeIal12pXSR
 Q354FKFoy6Vh96gc4VRqte3jw8mPuJQpfws+Pb+swvSf/i1q1+1I4jsRQQh2m6OTADHIqg2E
 ofTYAEh7R5HfPx0EXoEDMdRjOeKn8+vvkAwhviWXTHlG3R1QkbE5M/oywnZ83udJmi+lxjJ5
 YhQ5IzomvJ16H0Bq+TLyVLO/VRksp1VR9HxCzItLNCS8PdpYYz5TC204ViycobYU65WMpzWe
 LFAGn8jSS25XIpqv0Y9k87dLbctKKA14Ifw2kq5OIVu2FuX+3i446JOa2vpCI9GcjCzi3oHV
 e00bzYiHMIl0FICrNJU0Kjho8pdo0m2uxkn6SYEpogAy9pnatUlO+erL4LqFUO7GXSdBRbw5
 gNt25XTLdSFuZtMxkY3tq8MFss5QnjhehCVPEpE6y9ZjI4XB8ad1G4oBHVGK5LMsvg22PfMJ
 ISWFSHoF/B5+lHkCKWkFxZ0gZn33ju5n6/FOdEx4B8cMJt+cWwARAQABzSlBbmRyZXcgQ29v
 cGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPsLBegQTAQgAJAIbAwULCQgHAwUVCgkI
 CwUWAgMBAAIeAQIXgAUCWKD95wIZAQAKCRBlw/kGpdefoHbdD/9AIoR3k6fKl+RFiFpyAhvO
 59ttDFI7nIAnlYngev2XUR3acFElJATHSDO0ju+hqWqAb8kVijXLops0gOfqt3VPZq9cuHlh
 IMDquatGLzAadfFx2eQYIYT+FYuMoPZy/aTUazmJIDVxP7L383grjIkn+7tAv+qeDfE+txL4
 SAm1UHNvmdfgL2/lcmL3xRh7sub3nJilM93RWX1Pe5LBSDXO45uzCGEdst6uSlzYR/MEr+5Z
 JQQ32JV64zwvf/aKaagSQSQMYNX9JFgfZ3TKWC1KJQbX5ssoX/5hNLqxMcZV3TN7kU8I3kjK
 mPec9+1nECOjjJSO/h4P0sBZyIUGfguwzhEeGf4sMCuSEM4xjCnwiBwftR17sr0spYcOpqET
 ZGcAmyYcNjy6CYadNCnfR40vhhWuCfNCBzWnUW0lFoo12wb0YnzoOLjvfD6OL3JjIUJNOmJy
 RCsJ5IA/Iz33RhSVRmROu+TztwuThClw63g7+hoyewv7BemKyuU6FTVhjjW+XUWmS/FzknSi
 dAG+insr0746cTPpSkGl3KAXeWDGJzve7/SBBfyznWCMGaf8E2P1oOdIZRxHgWj0zNr1+ooF
 /PzgLPiCI4OMUttTlEKChgbUTQ+5o0P080JojqfXwbPAyumbaYcQNiH1/xYbJdOFSiBv9rpt
 TQTBLzDKXok86M7BTQRS4TZ/ARAAkgqudHsp+hd82UVkvgnlqZjzz2vyrYfz7bkPtXaGb9H4
 Rfo7mQsEQavEBdWWjbga6eMnDqtu+FC+qeTGYebToxEyp2lKDSoAsvt8w82tIlP/EbmRbDVn
 7bhjBlfRcFjVYw8uVDPptT0TV47vpoCVkTwcyb6OltJrvg/QzV9f07DJswuda1JH3/qvYu0p
 vjPnYvCq4NsqY2XSdAJ02HrdYPFtNyPEntu1n1KK+gJrstjtw7KsZ4ygXYrsm/oCBiVW/OgU
 g/XIlGErkrxe4vQvJyVwg6YH653YTX5hLLUEL1NS4TCo47RP+wi6y+TnuAL36UtK/uFyEuPy
 wwrDVcC4cIFhYSfsO0BumEI65yu7a8aHbGfq2lW251UcoU48Z27ZUUZd2Dr6O/n8poQHbaTd
 6bJJSjzGGHZVbRP9UQ3lkmkmc0+XCHmj5WhwNNYjgbbmML7y0fsJT5RgvefAIFfHBg7fTY/i
 kBEimoUsTEQz+N4hbKwo1hULfVxDJStE4sbPhjbsPCrlXf6W9CxSyQ0qmZ2bXsLQYRj2xqd1
 bpA+1o1j2N4/au1R/uSiUFjewJdT/LX1EklKDcQwpk06Af/N7VZtSfEJeRV04unbsKVXWZAk
 uAJyDDKN99ziC0Wz5kcPyVD1HNf8bgaqGDzrv3TfYjwqayRFcMf7xJaL9xXedMcAEQEAAcLB
 XwQYAQgACQUCUuE2fwIbDAAKCRBlw/kGpdefoG4XEACD1Qf/er8EA7g23HMxYWd3FXHThrVQ
 HgiGdk5Yh632vjOm9L4sd/GCEACVQKjsu98e8o3ysitFlznEns5EAAXEbITrgKWXDDUWGYxd
 pnjj2u+GkVdsOAGk0kxczX6s+VRBhpbBI2PWnOsRJgU2n10PZ3mZD4Xu9kU2IXYmuW+e5KCA
 vTArRUdCrAtIa1k01sPipPPw6dfxx2e5asy21YOytzxuWFfJTGnVxZZSCyLUO83sh6OZhJkk
 b9rxL9wPmpN/t2IPaEKoAc0FTQZS36wAMOXkBh24PQ9gaLJvfPKpNzGD8XWR5HHF0NLIJhgg
 4ZlEXQ2fVp3XrtocHqhu4UZR4koCijgB8sB7Tb0GCpwK+C4UePdFLfhKyRdSXuvY3AHJd4CP
 4JzW0Bzq/WXY3XMOzUTYApGQpnUpdOmuQSfpV9MQO+/jo7r6yPbxT7CwRS5dcQPzUiuHLK9i
 nvjREdh84qycnx0/6dDroYhp0DFv4udxuAvt1h4wGwTPRQZerSm4xaYegEFusyhbZrI0U9tJ
 B8WrhBLXDiYlyJT6zOV2yZFuW47VrLsjYnHwn27hmxTC/7tvG3euCklmkn9Sl9IAKFu29RSo
 d5bD8kMSCYsTqtTfT6W4A3qHGvIDta3ptLYpIAOD2sY3GYq2nf3Bbzx81wZK14JdDDHUX2Rs
 6+ahAA==
In-Reply-To: <d9d9ee2b-ff95-4d5e-bb81-b1722681a4a5@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 12/01/2024 10:37 am, Jan Beulich wrote:
> On 12.01.2024 00:13, Andrew Cooper wrote:
>> Right now, vvmx will blindly copy L12's ACTIVITY_STATE into the L02 VMCS and
>> enter the vCPU.  Luckily for us, nested-virt is explicitly unsupported for
>> security bugs.
>>
>> The inactivity states are HLT, SHUTDOWN and WAIT-FOR-SIPI, and as noted by the
>> SDM in Vol3 27.7 "Special Features of VM Entry":
>>
>>   If VM entry ends with the logical processor in an inactive activity state,
>>   the VM entry generates any special bus cycle that is normally generated when
>>   that activity state is entered from the active state.
>>
>> Also,
>>
>>   Some activity states unconditionally block certain events.
>>
>> I.e. A VMEntry with ACTIVITY=SHUTDOWN will initiate a platform reset, while a
>> VMEntry with ACTIVITY=WAIT-FOR-SIPI will really block everything other than
>> SIPIs.
>>
>> Both of these activity states are for the TXT ACM to use, not for regular
>> hypervisors, and Xen doesn't support dropping the HLT intercept either.
>>
>> There are two paths in Xen which operate on ACTIVITY_STATE.
>>
>> 1) The vmx_{get,set}_nonreg_state() helpers for VM-Fork.
>>
>>    As regular VMs can't use any inactivity states, this is just duplicating
>>    the 0 from construct_vmcs().  Retain the ability to query activity_state,
>>    but crash the domain on any attempt to set an inactivity state.
>>
>> 2) Nested virt, because of ACTIVITY_STATE in vmcs_gstate_field[].
>>
>>    Explicitly hide the inactivity states in the guest's view of MSR_VMX_MISC,
>>    and remove ACTIVITY_STATE from vmcs_gstate_field[].
>>
>>    In virtual_vmentry(), we should trigger a VMEntry failure for the use of
>>    any inactivity states, but there's no support for that in the code at all
>>    so leave a TODO for when we finally start working on nested-virt in
>>    earnest.
>>
>> Reported-by: Reima Ishii <ishiir@g.ecc.u-tokyo.ac.jp>
>> Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
> Reviewed-by: Jan Beulich <jbeulich@suse.com>

Thanks.

> with one remark/suggestion:
>
>> --- a/xen/arch/x86/hvm/vmx/vmx.c
>> +++ b/xen/arch/x86/hvm/vmx/vmx.c
>> @@ -1551,7 +1551,10 @@ static void cf_check vmx_set_nonreg_state(struct vcpu *v,
>>  {
>>      vmx_vmcs_enter(v);
>>  
>> -    __vmwrite(GUEST_ACTIVITY_STATE, nrs->vmx.activity_state);
>> +    if ( nrs->vmx.activity_state )
>> +        domain_crash(v->domain, "Attempt to set activity_state %#lx\n",
>> +                     nrs->vmx.activity_state);
> Might be useful to log the offending vCPU here?

Already covered.  the innards of __domain_crash() does:

    else if ( d == current->domain )
    {
        printk("Domain %d (vcpu#%d) crashed on cpu#%d:\n",
        ...

~Andrew


From xen-devel-bounces@lists.xenproject.org Fri Jan 12 10:44:04 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 12 Jan 2024 10:44:04 +0000
Received: from list by lists.xenproject.org with outflank-mailman.666786.1037662 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rOF1A-0006hw-Dh; Fri, 12 Jan 2024 10:44:04 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 666786.1037662; Fri, 12 Jan 2024 10:44:04 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rOF1A-0006hp-Ax; Fri, 12 Jan 2024 10:44:04 +0000
Received: by outflank-mailman (input) for mailman id 666786;
 Fri, 12 Jan 2024 10:44:03 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>) id 1rOF19-0006gS-5D
 for xen-devel@lists.xenproject.org; Fri, 12 Jan 2024 10:44:03 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rOF18-0006pW-QI; Fri, 12 Jan 2024 10:44:02 +0000
Received: from gw1.octic.net ([88.97.20.152] helo=[10.0.1.240])
 by xenbits.xenproject.org with esmtpsa
 (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rOF18-0006RG-JX; Fri, 12 Jan 2024 10:44:02 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
	s=20200302mail; h=Content-Transfer-Encoding:Content-Type:In-Reply-To:From:
	References:Cc:To:Subject:MIME-Version:Date:Message-ID;
	bh=SorHYVzhbrvPQmwWtQnn8ZZLBM1LEpnc2+bkg5dKssE=; b=u1Lpt3XJ71O/Amnbg3XHD9wR8v
	lWUKQLo/KUTgM5WmI9r6fKIMSMMCDr205bfpDqRX74ZVqXzIogMtOiOsmmIl0BSoYcQxqyvg1MElg
	ot+wpN0rTYlrnfOJs3ijwlFGAtlWkOqt/n+nQGmFnGCUzQI4M419O1+8+IQSKYE9w2e0=;
Message-ID: <05cd75c4-5e67-4902-b3a5-1ec7701684ff@xen.org>
Date: Fri, 12 Jan 2024 10:44:00 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2 1/2] xen/arm32: head: Rework how the fixmap and early
 UART mapping are prepared
Content-Language: en-GB
To: Michal Orzel <michal.orzel@amd.com>, xen-devel@lists.xenproject.org
Cc: Julien Grall <jgrall@amazon.com>,
 Stefano Stabellini <sstabellini@kernel.org>,
 Bertrand Marquis <bertrand.marquis@arm.com>,
 Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>
References: <20240111183410.45566-1-julien@xen.org>
 <20240111183410.45566-2-julien@xen.org>
 <a079dabf-b938-431b-bbde-1f15b3a9a757@amd.com>
From: Julien Grall <julien@xen.org>
In-Reply-To: <a079dabf-b938-431b-bbde-1f15b3a9a757@amd.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

Hi Michal,

On 12/01/2024 07:46, Michal Orzel wrote:
> On 11/01/2024 19:34, Julien Grall wrote:
>>
>>
>> From: Julien Grall <jgrall@amazon.com>
>>
>> Since commit 5e213f0f4d2c ("xen/arm32: head: Widen the use of the
>> temporary mapping"), boot_second (used to cover regions like Xen and
>> the fixmap) will not be mapped if the identity mapping overlap.
>>
>> So it is ok to prepare the fixmap table and link it in boot_second
>> earlier. With that, the fixmap can also be used earlier via the
>> temporary mapping.
>>
>> Therefore split setup_fixmap() in two:
>>      * The table is now linked in create_page_tables() because
>>        the boot page tables needs to be recreated for every CPU.
>>      * The early UART mapping is only added for the boot CPU0 as the
>>        fixmap table is not cleared when secondary CPUs boot.
>>
>> Signed-off-by: Julien Grall <jgrall@amazon.com>
> Reviewed-by: Michal Orzel <michal.orzel@amd.com>

Thanks.

> 
> with below 2 adjustments:

I will address them on commit.

>> +         */
>> +        mov_w r0, EARLY_UART_VIRTUAL_ADDRESS
>> +        create_mapping_entry xen_fixmap, r0, r11, type=PT_DEV_L3
> Would you mind listing r11 in the Input section of a comment?

I have added:

r11: UART physical address

> 
> ~Michal

-- 
Julien Grall


From xen-devel-bounces@lists.xenproject.org Fri Jan 12 10:58:17 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 12 Jan 2024 10:58:17 +0000
Received: from list by lists.xenproject.org with outflank-mailman.666805.1037672 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rOFEq-0001o0-ON; Fri, 12 Jan 2024 10:58:12 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 666805.1037672; Fri, 12 Jan 2024 10:58:12 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rOFEq-0001nt-KM; Fri, 12 Jan 2024 10:58:12 +0000
Received: by outflank-mailman (input) for mailman id 666805;
 Fri, 12 Jan 2024 10:58:11 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>) id 1rOFEp-0001nn-2x
 for xen-devel@lists.xenproject.org; Fri, 12 Jan 2024 10:58:11 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rOFEo-00075k-Cz; Fri, 12 Jan 2024 10:58:10 +0000
Received: from gw1.octic.net ([88.97.20.152] helo=[10.0.1.240])
 by xenbits.xenproject.org with esmtpsa
 (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rOFEo-00072j-7k; Fri, 12 Jan 2024 10:58:10 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
	s=20200302mail; h=Content-Transfer-Encoding:Content-Type:In-Reply-To:From:
	References:Cc:To:Subject:MIME-Version:Date:Message-ID;
	bh=94N4VETRfp+qR4YM8/QUJDjHelFUTuzLbqNtk8utknA=; b=IsGSmAg6tDGckbzJ5xy8miB1RW
	y8EeJJEasLNE84Q6jYm3wcCeiHU1npDHPuLfL/xFP9UE2sRZf/KJF2m+RDm2Kf1KenaVvV9w0wJpG
	ZZobcLjvAVayk2kXiiqhsbmfBW8KkBwbeXA8cSirum7PSzB8vzBz2KWi+ZrqSPfalASc=;
Message-ID: <bb7d0581-6e47-4dce-afa3-0f3d55db9ebf@xen.org>
Date: Fri, 12 Jan 2024 10:58:08 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2 2/2] xen/arm32: head: Improve logging in head.S
Content-Language: en-GB
To: Michal Orzel <michal.orzel@amd.com>, xen-devel@lists.xenproject.org
Cc: Julien Grall <jgrall@amazon.com>,
 Stefano Stabellini <sstabellini@kernel.org>,
 Bertrand Marquis <bertrand.marquis@arm.com>,
 Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>
References: <20240111183410.45566-1-julien@xen.org>
 <20240111183410.45566-3-julien@xen.org>
 <58d2e455-2894-4b1f-948a-3b486bb84499@amd.com>
From: Julien Grall <julien@xen.org>
In-Reply-To: <58d2e455-2894-4b1f-948a-3b486bb84499@amd.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit



On 12/01/2024 08:49, Michal Orzel wrote:
> Hi Julien,

Hi Michal,

> On 11/01/2024 19:34, Julien Grall wrote:
>>
>>
>> From: Julien Grall <jgrall@amazon.com>
>>
>> The sequence to enable the MMU on arm32 is quite complex as we may need
>> to jump to a temporary mapping to map Xen.
>>
>> Recently, we had one bug in the logic (see f5a49eb7f8b3 ("xen/arm32:
>> head: Add mising isb in switch_to_runtime_mapping()") and it was
>> a pain to debug because there are no logging.
>>
>> In order to improve the logging in the MMU switch we need to add
>> support for early printk while running on the identity mapping
>> and also on the temporary mapping.
>>
>> For the identity mapping, we have only the first page of Xen mapped.
>> So all the strings should reside in the first page. For that purpose
>> a new macro PRINT_ID is introduced.
>>
>> For the temporary mapping, the fixmap is already linked in the temporary
>> area (and so does the UART). So we just need to update the register
>> storing the UART address (i.e. r11) to point to the UART temporary
>> mapping.
>>
>> Take the opportunity to introduce mov_w_on_cond in order to
>> conditionally execute mov_w and avoid branches.
>>
>> Signed-off-by: Julien Grall <jgrall@amazon.com>
> Reviewed-by: Michal Orzel <michal.orzel@amd.com>

Thanks!

>>   /*
>> @@ -29,16 +33,26 @@
>>
>>   #ifdef CONFIG_EARLY_PRINTK
>>   /*
>> - * Macro to print a string to the UART, if there is one.
>> + * Macros to print a string to the UART, if there is one.
>> + *
>> + * There are multiple flavors:
>> + *  - PRINT_SECT(section, string): The @string will be located in @section
>> + *  - PRINT(): The string will be located in .rodata.str.
>> + *  - PRINT_ID(): When Xen is running on the Identity Mapping, it is
>> + *    only possible to have a limited amount of Xen. This will create
>> + *    the string in .rodata.idmap which will always be mapped.
>>    *
>>    * Clobbers r0 - r3
>>    */
>> -#define PRINT(_s)           \
>> -        mov   r3, lr       ;\
>> -        adr_l r0, 98f      ;\
>> -        bl    asm_puts     ;\
>> -        mov   lr, r3       ;\
>> -        RODATA_STR(98, _s)
>> +#define PRINT_SECT(section, string)         \
>> +        mov   r3, lr                       ;\
>> +        adr_l r0, 98f                      ;\
>> +        bl    asm_puts                     ;\
>> +        mov   lr, r3                       ;\
>> +        RODATA_SECT(section, 98, string)
>> +
>> +#define PRINT(string) PRINT_SECT(.rodata.str, string)
>> +#define PRINT_ID(string) PRINT_SECT(.rodata.idmap, string)
> I know this is just a macro but does it make sense to have something MMU specific in common header?
> I don't expect MPU to use it.
For cache coloring, I would like secondary boot CPUs to start directly 
on the colored Xen. This means that any message used before enabling the 
MMU will need to be part of the .rodata.idmap.

I know that 32-bit is not in scope for the cache coloring series. But I 
would like to keep 32-bit and 64-bit boot logic fairly similar.

With that in mind, would you be happy if I keep PRINT_ID() in macros.h? 
Note that I would be ok to move in mmu/head.S and move back in macros.h 
later on. I just wanted to avoid code movement :).

> 
>>
>>   /*
>>    * Macro to print the value of register \rb
>> @@ -54,6 +68,7 @@
>>
>>   #else /* CONFIG_EARLY_PRINTK */
>>   #define PRINT(s)
>> +#define PRINT_ID(s)
>>
>>   .macro print_reg rb
>>   .endm
>> diff --git a/xen/arch/arm/include/asm/asm_defns.h b/xen/arch/arm/include/asm/asm_defns.h
>> index 29a9dbb002fa..ec803c0a370c 100644
>> --- a/xen/arch/arm/include/asm/asm_defns.h
>> +++ b/xen/arch/arm/include/asm/asm_defns.h
>> @@ -22,11 +22,13 @@
>>   # error "unknown ARM variant"
>>   #endif
>>
>> -#define RODATA_STR(label, msg)                  \
>> -.pushsection .rodata.str, "aMS", %progbits, 1 ; \
>> +#define RODATA_SECT(section, label, msg)         \
>> +.pushsection section, "aMS", %progbits, 1 ;     \
>>   label:  .asciz msg;                             \
>>   .popsection
>>
>> +#define RODATA_STR(label, msg) RODATA_SECT(.rodata.str, label, msg)
>> +
>>   #define ASM_INT(label, val)                 \
>>       .p2align 2;                             \
>>   label: .long (val);                         \
>> diff --git a/xen/arch/arm/include/asm/early_printk.h b/xen/arch/arm/include/asm/early_printk.h
>> index c5149b2976da..c1e84f8b0009 100644
>> --- a/xen/arch/arm/include/asm/early_printk.h
>> +++ b/xen/arch/arm/include/asm/early_printk.h
>> @@ -19,6 +19,9 @@
>>   #define EARLY_UART_VIRTUAL_ADDRESS \
>>       (FIXMAP_ADDR(FIXMAP_CONSOLE) + (CONFIG_EARLY_UART_BASE_ADDRESS & ~PAGE_MASK))
>>
>> +#define TEMPORARY_EARLY_UART_VIRTUAL_ADDRESS \
>> +    (TEMPORARY_FIXMAP_ADDR(FIXMAP_CONSOLE) + (CONFIG_EARLY_UART_BASE_ADDRESS & ~PAGE_MASK))
>> +
>>   #endif /* !CONFIG_EARLY_PRINTK */
>>
>>   #endif
>> diff --git a/xen/arch/arm/include/asm/mmu/layout.h b/xen/arch/arm/include/asm/mmu/layout.h
>> index eac7eef885d6..a3b546465b5a 100644
>> --- a/xen/arch/arm/include/asm/mmu/layout.h
>> +++ b/xen/arch/arm/include/asm/mmu/layout.h
>> @@ -116,6 +116,10 @@
>>         (TEMPORARY_AREA_FIRST_SLOT << XEN_PT_LEVEL_SHIFT(1)))
>>
>>   #define TEMPORARY_XEN_VIRT_START    TEMPORARY_AREA_ADDR(XEN_VIRT_START)
>> +#define TEMPORARY_FIXMAP_VIRT_START TEMPORARY_AREA_ADDR(FIXMAP_VIRT_START)
>> +
>> +#define TEMPORARY_FIXMAP_ADDR(n)                    \
>> +     (TEMPORARY_FIXMAP_VIRT_START + (n) * PAGE_SIZE)
> NIT: this could fit in one line

It actually doesn't. With the newline, it will be 81 characters.

Cheers,

-- 
Julien Grall


From xen-devel-bounces@lists.xenproject.org Fri Jan 12 11:04:34 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 12 Jan 2024 11:04:34 +0000
Received: from list by lists.xenproject.org with outflank-mailman.666808.1037682 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rOFKn-0004Q3-Be; Fri, 12 Jan 2024 11:04:21 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 666808.1037682; Fri, 12 Jan 2024 11:04:21 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rOFKn-0004Pw-8N; Fri, 12 Jan 2024 11:04:21 +0000
Received: by outflank-mailman (input) for mailman id 666808;
 Fri, 12 Jan 2024 11:04:19 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>) id 1rOFKl-0004Pq-MR
 for xen-devel@lists.xenproject.org; Fri, 12 Jan 2024 11:04:19 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rOFKl-0007FD-CG; Fri, 12 Jan 2024 11:04:19 +0000
Received: from gw1.octic.net ([88.97.20.152] helo=[10.0.1.240])
 by xenbits.xenproject.org with esmtpsa
 (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rOFKl-0007OC-6C; Fri, 12 Jan 2024 11:04:19 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
	s=20200302mail; h=Content-Transfer-Encoding:Content-Type:In-Reply-To:From:
	References:Cc:To:Subject:MIME-Version:Date:Message-ID;
	bh=8FQlyWnaYDTmxOeyyKm4QXo5oeOlMEeqrWlm4JS9Zrc=; b=i91B19iY2VJvFWwlwcRRNrWuFF
	vEK6o8tECFHME8/upHhITI5tdFd2pW4UIhExSvVxEEJQc37WestvAMHjWsdC/eNYvtPmFWgktNSD8
	ZbDZXfhtT9cc+GUUcy00xCPHrka9SkS3lJwtQ8cZEN1n1Rzo7ijH8aXrH6roDxwxiC/I=;
Message-ID: <addeb29a-0c4d-4222-96b7-123c7ad8b15e@xen.org>
Date: Fri, 12 Jan 2024 11:04:17 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2] xen/common: Don't dereference overlay_node after
 checking that it is NULL
Content-Language: en-GB
To: Javi Merino <javi.merino@cloud.com>, xen-devel@lists.xenproject.org
Cc: Vikram Garhwal <vikram.garhwal@amd.com>,
 Stefano Stabellini <sstabellini@kernel.org>
References: <18b7b16d0cce886728410784a7b6063116be7e2d.1704970589.git.javi.merino@cloud.com>
From: Julien Grall <julien@xen.org>
In-Reply-To: <18b7b16d0cce886728410784a7b6063116be7e2d.1704970589.git.javi.merino@cloud.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

Hi Javi,

On 11/01/2024 12:09, Javi Merino wrote:
> In remove_nodes(), overlay_node is dereferenced when printing the
> error message even though it is known to be NULL.  Return without
> printing as an error message is already printed by the caller.
> 
> The semantic patch that spots this code is available in
> 
> https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/scripts/coccinelle/null/deref_null.cocci?id=1f874787ed9a2d78ed59cb21d0d90ac0178eceb0
> 
> Fixes: 7e5c4a8b86f1 ("xen/arm: Implement device tree node removal functionalities")
> Signed-off-by: Javi Merino <javi.merino@cloud.com>

Acked-by: Julien Grall <jgrall@amazon.com>

And committed.

Cheers,

-- 
Julien Grall


From xen-devel-bounces@lists.xenproject.org Fri Jan 12 11:04:37 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 12 Jan 2024 11:04:37 +0000
Received: from list by lists.xenproject.org with outflank-mailman.666809.1037691 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rOFL3-0004ie-Hw; Fri, 12 Jan 2024 11:04:37 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 666809.1037691; Fri, 12 Jan 2024 11:04:37 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rOFL3-0004iX-FK; Fri, 12 Jan 2024 11:04:37 +0000
Received: by outflank-mailman (input) for mailman id 666809;
 Fri, 12 Jan 2024 11:04:36 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=nnUc=IW=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rOFL2-0004i3-DZ
 for xen-devel@lists.xenproject.org; Fri, 12 Jan 2024 11:04:36 +0000
Received: from mail-lj1-x235.google.com (mail-lj1-x235.google.com
 [2a00:1450:4864:20::235])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 5e6d384f-b13a-11ee-98f0-6d05b1d4d9a1;
 Fri, 12 Jan 2024 12:04:34 +0100 (CET)
Received: by mail-lj1-x235.google.com with SMTP id
 38308e7fff4ca-2cd0f4797aaso69402131fa.0
 for <xen-devel@lists.xenproject.org>; Fri, 12 Jan 2024 03:04:34 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 m6-20020a0566380ac600b0046993034c91sm830667jab.77.2024.01.12.03.04.32
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Fri, 12 Jan 2024 03:04:33 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 5e6d384f-b13a-11ee-98f0-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1705057474; x=1705662274; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=X/lKaL3NoHZ96NAbSyFV4LhVOU5rBsgz5d+bVpr/DHs=;
        b=LOAu9p1KtDMTxFcVr5x7RzqnBrQytF8bMF1vKGuUTF0xlA1DwgE0bdoF4DXhs2w3i7
         8PdYoBfq/vk+nR0A2rsrP5jTUEfaEEH66TtBu0Gbip38xCzbzu7fwStjgGRfxz5sfsrW
         TlFC93+8wbh7s7QjmbGZ80AJp4CPTvZThOAkIWK90HMpiNwu6MFnodyfC9qg2cEicwjJ
         mMrIgA/dDg9B5pKMZ0eSZbyv/3oZG3uyOzh9mzCkS+iptVB+FK58ThqGhZOmWfxs9SEs
         CnqfmwEILk3XHKMrZ3RlCLYunDpfeYhvai6ZxiMSqDQDArE0nIyjCw9ltOY98TUCrJEF
         YHBA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705057474; x=1705662274;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=X/lKaL3NoHZ96NAbSyFV4LhVOU5rBsgz5d+bVpr/DHs=;
        b=K0xmHeUnBDVkxdpRG9wwRvQlM/7qWhSwRlXP4B5QImIt+oENon6SVnta2waybTTSTE
         +WbJMN9dh2MKpAqN6sG3CcNX2ddBPtLmxyNPr6zfWO6Igzoeuz9OpE0lSH+b4vRIZ35P
         z3Vue6O9Xfe2dlzlsVSPatWRNl5kQ2S9R40FceuN46XbJKgEaneE/DMarLRmuf3I6TVh
         WXBJotveYBLcqR8l4aZ0w5K5c3XpFyKk5tzD/18xhnkzEKZ6NwIky9hEh3A/jKp0TXpi
         TShPj4UIq2cmSeFB7xSv1B8PO4iCbyPziLA4eUV3cetBklwMDWboMLKsK3Dxz21dPViO
         8CLQ==
X-Gm-Message-State: AOJu0YzyHtJat+M3kjl74DccmBy/e8+sKkO70sian1yorzSTqsbmtVUu
	CRTjbdB//OJlf/sGLcKm7hxIDa8PPWFV
X-Google-Smtp-Source: AGHT+IH+l4fHfaC0FgxryHhOY46cy4PiwudoxB+no+NdzEr5gGMTHvpsqw6zUwdUaYBil0GGh5j7cA==
X-Received: by 2002:a2e:80cc:0:b0:2cd:122a:7ee1 with SMTP id r12-20020a2e80cc000000b002cd122a7ee1mr591336ljg.36.1705057474127;
        Fri, 12 Jan 2024 03:04:34 -0800 (PST)
Message-ID: <b25c0ff6-b2da-4e5b-b6b9-dca7843816d2@suse.com>
Date: Fri, 12 Jan 2024 12:04:30 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2 3/3] x86/vmx: Disallow the use of inactivity states
Content-Language: en-US
To: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: Reima Ishii <ishiir@g.ecc.u-tokyo.ac.jp>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>, Wei Liu
 <wl@xen.org>, Jun Nakajima <jun.nakajima@intel.com>,
 Kevin Tian <kevin.tian@intel.com>, Tamas K Lengyel <tamas@tklengyel.com>,
 Takahiro Shinagawa <shina@ecc.u-tokyo.ac.jp>,
 George Dunlap <george.dunlap@citrix.com>,
 Xen-devel <xen-devel@lists.xenproject.org>
References: <20240111231323.4043461-1-andrew.cooper3@citrix.com>
 <20240111231323.4043461-4-andrew.cooper3@citrix.com>
 <d9d9ee2b-ff95-4d5e-bb81-b1722681a4a5@suse.com>
 <8225cfd3-73d6-4a93-92b4-185399ab0ad3@citrix.com>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <8225cfd3-73d6-4a93-92b4-185399ab0ad3@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 12.01.2024 11:43, Andrew Cooper wrote:
> On 12/01/2024 10:37 am, Jan Beulich wrote:
>> On 12.01.2024 00:13, Andrew Cooper wrote:
>>> --- a/xen/arch/x86/hvm/vmx/vmx.c
>>> +++ b/xen/arch/x86/hvm/vmx/vmx.c
>>> @@ -1551,7 +1551,10 @@ static void cf_check vmx_set_nonreg_state(struct vcpu *v,
>>>  {
>>>      vmx_vmcs_enter(v);
>>>  
>>> -    __vmwrite(GUEST_ACTIVITY_STATE, nrs->vmx.activity_state);
>>> +    if ( nrs->vmx.activity_state )
>>> +        domain_crash(v->domain, "Attempt to set activity_state %#lx\n",
>>> +                     nrs->vmx.activity_state);
>> Might be useful to log the offending vCPU here?
> 
> Already covered.  the innards of __domain_crash() does:
> 
>     else if ( d == current->domain )
>     {
>         printk("Domain %d (vcpu#%d) crashed on cpu#%d:\n",
>         ...

Except that afaict v != current here at all times (at least as far as
current use of the function goes).

Jan


From xen-devel-bounces@lists.xenproject.org Fri Jan 12 11:05:37 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 12 Jan 2024 11:05:37 +0000
Received: from list by lists.xenproject.org with outflank-mailman.666812.1037702 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rOFLz-0005Qt-RL; Fri, 12 Jan 2024 11:05:35 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 666812.1037702; Fri, 12 Jan 2024 11:05:35 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rOFLz-0005Qm-OT; Fri, 12 Jan 2024 11:05:35 +0000
Received: by outflank-mailman (input) for mailman id 666812;
 Fri, 12 Jan 2024 11:05:34 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>) id 1rOFLy-0005QL-I5
 for xen-devel@lists.xenproject.org; Fri, 12 Jan 2024 11:05:34 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rOFLy-0007Ga-17; Fri, 12 Jan 2024 11:05:34 +0000
Received: from gw1.octic.net ([88.97.20.152] helo=[10.0.1.240])
 by xenbits.xenproject.org with esmtpsa
 (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rOFLx-0007OC-SO; Fri, 12 Jan 2024 11:05:33 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
	s=20200302mail; h=Content-Transfer-Encoding:Content-Type:In-Reply-To:From:
	References:Cc:To:Subject:MIME-Version:Date:Message-ID;
	bh=LdRAXqyKlIxX6ztq316dIx8ul6QQBxSvOYeooF+/5PY=; b=iXmpdCa4cNk9cHgnsApbbwyUT+
	Nh8xQcxVC94vapUCWn9HhebJlIUDktWSW/G9sdGFUqSEtQ938ink5ys206nhKRXRkWpt6SBZhIARF
	LQ20b8KZGEZBxNQHklIufLbuLt3lZx79lgbWhK7q7sUK6mzUrWSRv/JlDcbbYuCHEKeo=;
Message-ID: <31997e9d-35f7-4916-b6d7-de38b2697ef7@xen.org>
Date: Fri, 12 Jan 2024 11:05:32 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2] xen/arm: bootfdt: Harden handling of malformed mem
 reserve map
Content-Language: en-GB
To: Michal Orzel <michal.orzel@amd.com>,
 Shawn Anastasio <sanastasio@raptorengineering.com>,
 xen-devel@lists.xenproject.org
Cc: Timothy Pearson <tpearson@raptorengineering.com>,
 Stefano Stabellini <sstabellini@kernel.org>,
 Bertrand Marquis <bertrand.marquis@arm.com>,
 Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>
References: <20240111232422.2610495-1-sanastasio@raptorengineering.com>
 <62bb1962-6668-4243-b41d-5aca5d3b7ecd@amd.com>
From: Julien Grall <julien@xen.org>
In-Reply-To: <62bb1962-6668-4243-b41d-5aca5d3b7ecd@amd.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

Hi,

On 12/01/2024 08:56, Michal Orzel wrote:
> 
> 
> On 12/01/2024 00:24, Shawn Anastasio wrote:
>>
>>
>> The early_print_info routine in bootfdt.c incorrectly stores the result
>> of a call to fdt_num_mem_rsv() in an unsigned int, which results in the
>> negative error code being interpreted incorrectly in a subsequent loop
>> in the case where the device tree is malformed. Fix this by properly
>> checking the return code for an error and calling panic().
>>
>> Signed-off-by: Shawn Anastasio <sanastasio@raptorengineering.com>
> Reviewed-by: Michal Orzel <michal.orzel@amd.com>

Committed.

Cheers,

-- 
Julien Grall


From xen-devel-bounces@lists.xenproject.org Fri Jan 12 11:05:37 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 12 Jan 2024 11:05:37 +0000
Received: from list by lists.xenproject.org with outflank-mailman.666814.1037709 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rOFM0-0005UD-7l; Fri, 12 Jan 2024 11:05:36 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 666814.1037709; Fri, 12 Jan 2024 11:05:36 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rOFM0-0005U1-0X; Fri, 12 Jan 2024 11:05:36 +0000
Received: by outflank-mailman (input) for mailman id 666814;
 Fri, 12 Jan 2024 11:05:35 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=flvc=IW=cloud.com=roger.pau@srs-se1.protection.inumbo.net>)
 id 1rOFLz-0005QQ-0D
 for xen-devel@lists.xenproject.org; Fri, 12 Jan 2024 11:05:35 +0000
Received: from mail-wm1-x32f.google.com (mail-wm1-x32f.google.com
 [2a00:1450:4864:20::32f])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 812dec73-b13a-11ee-9b0f-b553b5be7939;
 Fri, 12 Jan 2024 12:05:33 +0100 (CET)
Received: by mail-wm1-x32f.google.com with SMTP id
 5b1f17b1804b1-40e68d0dc2aso847055e9.3
 for <xen-devel@lists.xenproject.org>; Fri, 12 Jan 2024 03:05:33 -0800 (PST)
Received: from localhost ([213.195.127.70]) by smtp.gmail.com with ESMTPSA id
 m22-20020a05600c4f5600b0040d5b849f38sm9376455wmq.0.2024.01.12.03.05.32
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Fri, 12 Jan 2024 03:05:32 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 812dec73-b13a-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1705057532; x=1705662332; darn=lists.xenproject.org;
        h=in-reply-to:content-transfer-encoding:content-disposition
         :mime-version:references:message-id:subject:cc:to:from:date:from:to
         :cc:subject:date:message-id:reply-to;
        bh=0fKtKx8f4NRRmDQBJOBk21ATr4s902HPCm3N4KyZPKA=;
        b=PvCSms6J5C0my5XlnLbsDvhJein3WfBTcFDq+iy1tXcj6XZu9xF8zkhsfwXiz4HZQE
         W8i9iec8Yh0cMz8GBOY8eeWO1C38I37FoDgi6Gk8HlDUp0yCrFTSsudlgZQ/io0UTb/E
         nAG6qmzZM2VdsgWWnXVjUZmyel5Wmtnol/bZA=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705057532; x=1705662332;
        h=in-reply-to:content-transfer-encoding:content-disposition
         :mime-version:references:message-id:subject:cc:to:from:date
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=0fKtKx8f4NRRmDQBJOBk21ATr4s902HPCm3N4KyZPKA=;
        b=wN0+XgBHKxqHexfxcoxlS22m7O8u/xLM6ZS/HVmEjVlsPI+AyrMRSk1vHvYoDKY3Xx
         6pkJ02NNmspnFesmza9+JNp33NlO7ypGJxOB7P/7z/hbGyV7kMjWy10VAgqtRV8zwLIY
         0FlyVR50ixegs7Lo7zTkCMjJ7pCIiL3romY1LT/iWq4l6y34tndqxh/b10W9its4q155
         VhLXWzYbgGvYkMGvMJgpQvmZVAwDUw6vLsbmWnWKIR6BBDu8TNQBKucN7S3r0kQZ9RAt
         FY5xBwKgs19lmEMBsulMfno66ocVP3mLk6gpph1MXXmM9EgBAPWnoob4bCC/2WOAP8u5
         fxVg==
X-Gm-Message-State: AOJu0Yz3xnqZM/sP1HgNgG2HdjzlCMhDdJph84MXa2/mwO0PZFvuqtOa
	73KLlH7ybCt/+qfIyieWlu1SboA2DZ9X/g==
X-Google-Smtp-Source: AGHT+IE6YA4uifsZlbkks0kaKplgSxGM6yO0CKaqEnDQnMCdUVKCG3iSvWealcHIfJtFApfrljSptw==
X-Received: by 2002:a05:600c:1885:b0:40e:50d7:6902 with SMTP id x5-20020a05600c188500b0040e50d76902mr414056wmp.64.1705057532462;
        Fri, 12 Jan 2024 03:05:32 -0800 (PST)
Date: Fri, 12 Jan 2024 12:05:31 +0100
From: Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
To: David Woodhouse <dwmw2@infradead.org>
Cc: Jan Beulich <jbeulich@suse.com>, Wei Liu <wl@xen.org>,
	Anthony PERARD <anthony.perard@citrix.com>,
	Juergen Gross <jgross@suse.com>,
	Marek =?utf-8?Q?Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	xen-devel@lists.xenproject.org
Subject: Re: [PATCH] x86/hvm: don't expose XENFEAT_hvm_pirqs by default
Message-ID: <ZaEc-3tVnpFWVxLr@macbook>
References: <20240110095311.61809-1-roger.pau@citrix.com>
 <238b79f5-0510-4306-9c32-19dade08e819@suse.com>
 <96182bf50bd52cc16b8378ff571b6954144b0723.camel@infradead.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <96182bf50bd52cc16b8378ff571b6954144b0723.camel@infradead.org>

On Thu, Jan 11, 2024 at 05:47:30PM +0000, David Woodhouse wrote:
> On Wed, 2024-01-10 at 11:26 +0100, Jan Beulich wrote:
> > On 10.01.2024 10:53, Roger Pau Monne wrote:
> > > The HVM pirq feature allows routing interrupts from both physical and emulated
> > > devices over event channels, this was done a performance improvement.  However
> > > its usage is fully undocumented, and the only reference implementation is in
> > > Linux.  It defeats the purpose of local APIC hardware virtualization, because
> > > when using it interrupts avoid the usage of the local APIC altogether.
> > 
> > So without sufficient APIC acceleration, isn't this arranging for degraded
> > performance then? IOW should the new default perhaps be dependent on the
> > degree of APIC acceleration?
> 
> In fact Linux already declines to use MSI → PIRQ routing if APIC
> acceleration is enabled.
> 
> static void __init xen_hvm_msi_init(void)
> {
>         if (!apic_is_disabled) {
>                 /*
>                  * If hardware supports (x2)APIC virtualization (as indicated
>                  * by hypervisor's leaf 4) then we don't need to use pirqs/
>                  * event channels for MSI handling and instead use regular
>                  * APIC processing
>                  */
>                 uint32_t eax = cpuid_eax(xen_cpuid_base() + 4);
> 
>                 if (((eax & XEN_HVM_CPUID_X2APIC_VIRT) && x2apic_mode) ||
>                     ((eax & XEN_HVM_CPUID_APIC_ACCESS_VIRT) && boot_cpu_has(X86_FEATURE_APIC)))
>                         return;
>         }
>         xen_setup_pci_msi();
> }
> 
> > > It has also been reported to not work properly with certain devices, at least
> > > when using some AMD GPUs Linux attempts to route interrupts over event
> > > channels, but Xen doesn't correctly detect such routing, which leads to the
> > > hypervisor complaining with:
> > > 
> > > (XEN) d15v0: Unsupported MSI delivery mode 7 for Dom15
> > > 
> > > When MSIs are attempted to be routed over event channels the entry delivery
> > > mode is set to ExtINT, but Xen doesn't detect such routing and attempts to
> > > inject the interrupt following the native MSI path, and the ExtINT delivery
> > > mode is not supported.
> > 
> > Shouldn't this be properly addressed nevertheless? The way it's described
> > it sounds as if MSI wouldn't work at all this way; I can't spot why the
> > issue would only be "with certain devices". Yet that in turn doesn't look
> > to be very likely - pass-through use cases, in particular SR-IOV ones,
> > would certainly have noticed.
> 
> I agree. The MSI to PIRQ routing thing is *awful*, especially the way
> that Xen/QEMU snoops on writes to the MSI table while the target is
> *masked*, and then Xen unmasks the MSI instead of the guest doing so.
> 
> But it does work, and there are three implementations of it on the
> hypervisor side now (Xen itself, QEMU and the Nitro hypervisor).

There's only one implementation in Xen, that's split between the
hypervisor and QEMU.  IOW: it's not like the QEMU and the hypervisor
sides are independent.

It's also only used by Linux, I don't know of any other guest having
implemented support for them (thankfully I should say).

> We
> should fix the bug which is being reported, but I don't see why it's
> necessary to completely disable the feature.

It's not just this bug, the feature is fully undocumented, and every
time there's an issue reported against interrupt delivery on HVM Linux
we need to reverse engineer how this is supposed to work.

Not to mention the MSI breakage it introduces by re-using the MSI
data and address fields for Xen specific purposes.

Note that this commit is not removing the code, just disabling it by
default.  Users can still enable it using hvm_pirq option on xl.cfg
(and toolstacks can use the domctl create flag to enable it).

IMO if someone whats to make a case for having HVM PIRQs enabled by
default, we first need documentation about how it's supposed to work,
plus all the reported bugs fixed.  I have to admit I would probably be
reluctant to enable it by default even then.

Apart from the original issue, Xenia has also reported that when
having the option enabled they see some unexpected scheduling
imbalance, that's gone when the option is disabled:

https://lore.kernel.org/xen-devel/6fe776cd-3fa6-421f-9d02-9350e85d5612@amd.com/

Regards, Roger.


From xen-devel-bounces@lists.xenproject.org Fri Jan 12 11:06:58 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 12 Jan 2024 11:06:58 +0000
Received: from list by lists.xenproject.org with outflank-mailman.666827.1037723 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rOFNI-0006aF-Jm; Fri, 12 Jan 2024 11:06:56 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 666827.1037723; Fri, 12 Jan 2024 11:06:56 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rOFNI-0006a8-Ex; Fri, 12 Jan 2024 11:06:56 +0000
Received: by outflank-mailman (input) for mailman id 666827;
 Fri, 12 Jan 2024 11:06:55 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=nnUc=IW=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rOFNH-0006WZ-OW
 for xen-devel@lists.xenproject.org; Fri, 12 Jan 2024 11:06:55 +0000
Received: from mail-lf1-x131.google.com (mail-lf1-x131.google.com
 [2a00:1450:4864:20::131])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id b23a1bdb-b13a-11ee-98f0-6d05b1d4d9a1;
 Fri, 12 Jan 2024 12:06:55 +0100 (CET)
Received: by mail-lf1-x131.google.com with SMTP id
 2adb3069b0e04-50eabd1c701so7724963e87.3
 for <xen-devel@lists.xenproject.org>; Fri, 12 Jan 2024 03:06:55 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 f12-20020a02cacc000000b0046e61d0c894sm251302jap.161.2024.01.12.03.06.53
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Fri, 12 Jan 2024 03:06:54 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: b23a1bdb-b13a-11ee-98f0-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1705057615; x=1705662415; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=2OjQ+fqyf18UHDjgD2Tw6o+ti9mI3oLbjkww6S/7H7Q=;
        b=eC+1btOfNTAYSC0hH0YQknhWV2YbU6+gdrkAfUP/Ksj7/n5WCBXZnpNz6dwr381NLg
         5/pHfKQrCR2f2IAOGSAa0dpkv3v0qhwbJjTaU1qED4aIpsYK0h7I3gEcPSo7YjTL8uNa
         218L2R/H11Hytk117exqvZLc/6PLOVVB/sdl6ezAepB3KKUsf8TRopGgjOjXsqahRZFw
         zQgu9ylWhyHnGJSdPxfqlE/ZMBRqQr5hU+V3z36R4AgCZq/9/NLyGhiYevdatDL+bOdZ
         aoKzCt44qL+qiQ6q6RY7eosZp2kkGacDfFYFGneX2ZbTCYgPjbsZoumHSjPBFvAPEIeu
         ie1Q==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705057615; x=1705662415;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=2OjQ+fqyf18UHDjgD2Tw6o+ti9mI3oLbjkww6S/7H7Q=;
        b=t/38Q3WFlneh+b7JY619iVIFe50j3xYf6mouYkx4z648X60hT0cyAPOs4pNKo64GRr
         ufgYxnLXn15qPD39VvuC/Tptq5vh5KvJU4InYu/ruKMtBDr4SxScr6He0uriVLA0NGrW
         M/7egGMhbKbwWrSiqQYvOvc9jSNwU8Djcv6vqzqzBZbuPajitX86sH3sfhbRaMllAUrs
         ZdZ+YiDCEIU3jJ7ZQI+v9rdKsfajh6Ta3l/g65KvhkYSS7UlZcTDoIshwZJ/ftqmB/1c
         GZlIigFoT962VdvyJpghsYY9adlNzypQ+DFxaD0vULPu/sk6dyNYrZu5dk5E/BVca+rV
         efsg==
X-Gm-Message-State: AOJu0YwfP8BWMLGq/9hkdjyrMgs0bhrD9wrG3Z6elm4UG9ft+m2Oi2sc
	viDvNkf8cNHXOPYRDcvZMyEwr0SZuWfc
X-Google-Smtp-Source: AGHT+IFOH0hNpGp9R5af2ewsCa3thZ5k3KRU83thmDsLWbyjdMa2xHn9gvuPnlbm9hXgoYIC4+6hoA==
X-Received: by 2002:a19:ca16:0:b0:50e:769b:7163 with SMTP id a22-20020a19ca16000000b0050e769b7163mr454744lfg.138.1705057614815;
        Fri, 12 Jan 2024 03:06:54 -0800 (PST)
Message-ID: <05589cba-6779-4794-9684-470589fe2383@suse.com>
Date: Fri, 12 Jan 2024 12:06:51 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 21/34] xen/riscv: introduce p2m.h
Content-Language: en-US
To: Julien Grall <julien@xen.org>,
 Oleksii Kurochko <oleksii.kurochko@gmail.com>
Cc: Shawn Anastasio <sanastasio@raptorengineering.com>,
 Alistair Francis <alistair.francis@wdc.com>,
 Bob Eshleman <bobbyeshleman@gmail.com>, Connor Davis
 <connojdavis@gmail.com>, xen-devel@lists.xenproject.org
References: <cover.1703255175.git.oleksii.kurochko@gmail.com>
 <c3b1f24aea1ba01505697717b240c8d036abfee1.1703255175.git.oleksii.kurochko@gmail.com>
 <abeafa19-7867-46b2-bc0e-b39eaa0f5036@xen.org>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <abeafa19-7867-46b2-bc0e-b39eaa0f5036@xen.org>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 12.01.2024 11:39, Julien Grall wrote:
> On 22/12/2023 15:13, Oleksii Kurochko wrote:
>> Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>
>> ---
>> Changes in V3:
>>   - add SPDX
>>   - drop unneeded for now p2m types.
>>   - return false in all functions implemented with BUG() inside.
>>   - update the commit message
>> ---
>> Changes in V2:
>>   - Nothing changed. Only rebase.
>> ---
>>   xen/arch/ppc/include/asm/p2m.h   |   3 +-
>>   xen/arch/riscv/include/asm/p2m.h | 102 +++++++++++++++++++++++++++++++
>>   2 files changed, 103 insertions(+), 2 deletions(-)
>>   create mode 100644 xen/arch/riscv/include/asm/p2m.h
>>
>> diff --git a/xen/arch/ppc/include/asm/p2m.h b/xen/arch/ppc/include/asm/p2m.h
>> index 25ba054668..3bc05b7c05 100644
>> --- a/xen/arch/ppc/include/asm/p2m.h
>> +++ b/xen/arch/ppc/include/asm/p2m.h
>> @@ -50,8 +50,7 @@ static inline void memory_type_changed(struct domain *d)
>>   static inline int guest_physmap_mark_populate_on_demand(struct domain *d, unsigned long gfn,
>>                                                           unsigned int order)
>>   {
>> -    BUG_ON("unimplemented");
>> -    return 1;
>> +    return -EOPNOTSUPP;
>>   }
>>   
>>   static inline int guest_physmap_add_entry(struct domain *d,
>> diff --git a/xen/arch/riscv/include/asm/p2m.h b/xen/arch/riscv/include/asm/p2m.h
>> new file mode 100644
>> index 0000000000..d270ef6635
>> --- /dev/null
>> +++ b/xen/arch/riscv/include/asm/p2m.h
>> @@ -0,0 +1,102 @@
>> +/* SPDX-License-Identifier: GPL-2.0-only */
>> +#ifndef __ASM_RISCV_P2M_H__
>> +#define __ASM_RISCV_P2M_H__
>> +
>> +#include <asm/page-bits.h>
>> +
>> +#define paddr_bits PADDR_BITS
>> +
>> +/*
>> + * List of possible type for each page in the p2m entry.
>> + * The number of available bit per page in the pte for this purpose is 4 bits.
>> + * So it's possible to only have 16 fields. If we run out of value in the
>> + * future, it's possible to use higher value for pseudo-type and don't store
>> + * them in the p2m entry.
>> + */
> 
> This looks like a verbatim copy from Arm. Did you actually check RISC-V 
> has 4 bits available in the PTE to store this value?
> 
>> +typedef enum {
>> +    p2m_invalid = 0,    /* Nothing mapped here */
>> +    p2m_ram_rw,         /* Normal read/write guest RAM */
> 
> s/guest/domain/ as this also applies for dom0.
> 
>> +} p2m_type_t;
>> +
>> +#include <xen/p2m-common.h>
>> +
>> +static inline int get_page_and_type(struct page_info *page,
>> +                                    struct domain *domain,
>> +                                    unsigned long type)
>> +{
>> +    BUG();
> 
> I understand your goal with the BUG() but I find it risky. This is not a 
> problem right now, it is more when we will decide to have RISC-V 
> supported. You will have to go through all the BUG() to figure out which 
> one are warrant or not.
> 
> To reduce the load, I would recommend to switch to ASSERT_UNREACHABLE() 
> (or maybe introduced a different macro) that would lead to a crash on 
> debug build but propagate the error normally on production build.

Elsewhere BUG_ON("unimplemented") is used to indicate such cases.
Can't this be used here (and then uniformly elsewhere) as well?

Jan


From xen-devel-bounces@lists.xenproject.org Fri Jan 12 11:09:41 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 12 Jan 2024 11:09:41 +0000
Received: from list by lists.xenproject.org with outflank-mailman.666830.1037732 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rOFPr-0007pC-V2; Fri, 12 Jan 2024 11:09:35 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 666830.1037732; Fri, 12 Jan 2024 11:09:35 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rOFPr-0007p5-S2; Fri, 12 Jan 2024 11:09:35 +0000
Received: by outflank-mailman (input) for mailman id 666830;
 Fri, 12 Jan 2024 11:09:34 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>) id 1rOFPq-0007oz-GR
 for xen-devel@lists.xenproject.org; Fri, 12 Jan 2024 11:09:34 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rOFPo-0007Ms-Lx; Fri, 12 Jan 2024 11:09:32 +0000
Received: from gw1.octic.net ([88.97.20.152] helo=[10.0.1.240])
 by xenbits.xenproject.org with esmtpsa
 (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rOFPo-0007jE-Gg; Fri, 12 Jan 2024 11:09:32 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
	s=20200302mail; h=Content-Transfer-Encoding:Content-Type:In-Reply-To:From:
	References:Cc:To:Subject:MIME-Version:Date:Message-ID;
	bh=3+/zjifcTz60wbhEA479EO8AVIrZPdJxsFNtLve40tI=; b=6IvilGuNKBuKbMFCK27BFwXaEl
	iWS7ykwdW7W0IV3WzRpqWAJdnWmawZOF5Xaqav53IeIQDuKzlenaFWb4QR5z9dtF3deb157Ng+rJ5
	2njCnTgxnS+4OXwP983RyFeRZ6GRh7y6CAP//YeHvNVsQXMtB3VT4iOPkz3iB0+nA3R0=;
Message-ID: <bb62c55c-d11c-4835-b13f-a0c8c70a2fe0@xen.org>
Date: Fri, 12 Jan 2024 11:09:31 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 21/34] xen/riscv: introduce p2m.h
Content-Language: en-GB
To: Jan Beulich <jbeulich@suse.com>,
 Oleksii Kurochko <oleksii.kurochko@gmail.com>
Cc: Shawn Anastasio <sanastasio@raptorengineering.com>,
 Alistair Francis <alistair.francis@wdc.com>,
 Bob Eshleman <bobbyeshleman@gmail.com>, Connor Davis
 <connojdavis@gmail.com>, xen-devel@lists.xenproject.org
References: <cover.1703255175.git.oleksii.kurochko@gmail.com>
 <c3b1f24aea1ba01505697717b240c8d036abfee1.1703255175.git.oleksii.kurochko@gmail.com>
 <abeafa19-7867-46b2-bc0e-b39eaa0f5036@xen.org>
 <05589cba-6779-4794-9684-470589fe2383@suse.com>
From: Julien Grall <julien@xen.org>
In-Reply-To: <05589cba-6779-4794-9684-470589fe2383@suse.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

Hi Jan,

On 12/01/2024 11:06, Jan Beulich wrote:
> On 12.01.2024 11:39, Julien Grall wrote:
>> On 22/12/2023 15:13, Oleksii Kurochko wrote:
>>> Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>
>>> ---
>>> Changes in V3:
>>>    - add SPDX
>>>    - drop unneeded for now p2m types.
>>>    - return false in all functions implemented with BUG() inside.
>>>    - update the commit message
>>> ---
>>> Changes in V2:
>>>    - Nothing changed. Only rebase.
>>> ---
>>>    xen/arch/ppc/include/asm/p2m.h   |   3 +-
>>>    xen/arch/riscv/include/asm/p2m.h | 102 +++++++++++++++++++++++++++++++
>>>    2 files changed, 103 insertions(+), 2 deletions(-)
>>>    create mode 100644 xen/arch/riscv/include/asm/p2m.h
>>>
>>> diff --git a/xen/arch/ppc/include/asm/p2m.h b/xen/arch/ppc/include/asm/p2m.h
>>> index 25ba054668..3bc05b7c05 100644
>>> --- a/xen/arch/ppc/include/asm/p2m.h
>>> +++ b/xen/arch/ppc/include/asm/p2m.h
>>> @@ -50,8 +50,7 @@ static inline void memory_type_changed(struct domain *d)
>>>    static inline int guest_physmap_mark_populate_on_demand(struct domain *d, unsigned long gfn,
>>>                                                            unsigned int order)
>>>    {
>>> -    BUG_ON("unimplemented");
>>> -    return 1;
>>> +    return -EOPNOTSUPP;
>>>    }
>>>    
>>>    static inline int guest_physmap_add_entry(struct domain *d,
>>> diff --git a/xen/arch/riscv/include/asm/p2m.h b/xen/arch/riscv/include/asm/p2m.h
>>> new file mode 100644
>>> index 0000000000..d270ef6635
>>> --- /dev/null
>>> +++ b/xen/arch/riscv/include/asm/p2m.h
>>> @@ -0,0 +1,102 @@
>>> +/* SPDX-License-Identifier: GPL-2.0-only */
>>> +#ifndef __ASM_RISCV_P2M_H__
>>> +#define __ASM_RISCV_P2M_H__
>>> +
>>> +#include <asm/page-bits.h>
>>> +
>>> +#define paddr_bits PADDR_BITS
>>> +
>>> +/*
>>> + * List of possible type for each page in the p2m entry.
>>> + * The number of available bit per page in the pte for this purpose is 4 bits.
>>> + * So it's possible to only have 16 fields. If we run out of value in the
>>> + * future, it's possible to use higher value for pseudo-type and don't store
>>> + * them in the p2m entry.
>>> + */
>>
>> This looks like a verbatim copy from Arm. Did you actually check RISC-V
>> has 4 bits available in the PTE to store this value?
>>
>>> +typedef enum {
>>> +    p2m_invalid = 0,    /* Nothing mapped here */
>>> +    p2m_ram_rw,         /* Normal read/write guest RAM */
>>
>> s/guest/domain/ as this also applies for dom0.
>>
>>> +} p2m_type_t;
>>> +
>>> +#include <xen/p2m-common.h>
>>> +
>>> +static inline int get_page_and_type(struct page_info *page,
>>> +                                    struct domain *domain,
>>> +                                    unsigned long type)
>>> +{
>>> +    BUG();
>>
>> I understand your goal with the BUG() but I find it risky. This is not a
>> problem right now, it is more when we will decide to have RISC-V
>> supported. You will have to go through all the BUG() to figure out which
>> one are warrant or not.
>>
>> To reduce the load, I would recommend to switch to ASSERT_UNREACHABLE()
>> (or maybe introduced a different macro) that would lead to a crash on
>> debug build but propagate the error normally on production build.
> 
> Elsewhere BUG_ON("unimplemented") is used to indicate such cases.
> Can't this be used here (and then uniformly elsewhere) as well?

I would prefer something that can be compiled out in production build. 
But I would be Ok with BUG_ON("...") this is at least clearer than a 
plain BUG().

-- 
Julien Grall


From xen-devel-bounces@lists.xenproject.org Fri Jan 12 11:10:14 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 12 Jan 2024 11:10:14 +0000
Received: from list by lists.xenproject.org with outflank-mailman.666832.1037742 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rOFQU-0000mb-7b; Fri, 12 Jan 2024 11:10:14 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 666832.1037742; Fri, 12 Jan 2024 11:10:14 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rOFQU-0000mU-4T; Fri, 12 Jan 2024 11:10:14 +0000
Received: by outflank-mailman (input) for mailman id 666832;
 Fri, 12 Jan 2024 11:10:12 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=flvc=IW=cloud.com=roger.pau@srs-se1.protection.inumbo.net>)
 id 1rOFQS-0008DP-Ga
 for xen-devel@lists.xenproject.org; Fri, 12 Jan 2024 11:10:12 +0000
Received: from mail-wm1-x333.google.com (mail-wm1-x333.google.com
 [2a00:1450:4864:20::333])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 26bfb0fe-b13b-11ee-9b0f-b553b5be7939;
 Fri, 12 Jan 2024 12:10:10 +0100 (CET)
Received: by mail-wm1-x333.google.com with SMTP id
 5b1f17b1804b1-40e68d836bcso685465e9.2
 for <xen-devel@lists.xenproject.org>; Fri, 12 Jan 2024 03:10:10 -0800 (PST)
Received: from localhost ([213.195.127.70]) by smtp.gmail.com with ESMTPSA id
 z15-20020a056000110f00b00336751cd4ebsm3602157wrw.72.2024.01.12.03.10.09
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Fri, 12 Jan 2024 03:10:09 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 26bfb0fe-b13b-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1705057809; x=1705662609; darn=lists.xenproject.org;
        h=content-transfer-encoding:mime-version:message-id:date:subject:cc
         :to:from:from:to:cc:subject:date:message-id:reply-to;
        bh=2zpalpvILeRSgBXoHohbB9YC1Sb183LE28BuW4yOvrQ=;
        b=JaEvFXvFSFz80I5GuTr1TqmAZPCjSNnhc3jJdvoCO77SK2SwcEwiWJ4JNNLvalvjIT
         Sm/FgYaMXKpWA58cd+wBBJknSbsJdEO92qvM6HkpQvXTk1TFWvaoZcoJEY7uYKZMq3bd
         fVnnUmVrL3mC4O6sAY2PBKKhu8o/r2c0DElQ8=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705057809; x=1705662609;
        h=content-transfer-encoding:mime-version:message-id:date:subject:cc
         :to:from:x-gm-message-state:from:to:cc:subject:date:message-id
         :reply-to;
        bh=2zpalpvILeRSgBXoHohbB9YC1Sb183LE28BuW4yOvrQ=;
        b=FB+FR3ASBOSZyg/Jqxy7KDIfC+MdpeckWhBSKEoxBqn7k4Sy21ljRKf6+cXFH/64+M
         CLAGY2C8bMoKeiSinMOLkCwgXi+jqLIO/vRaygG2guhZLwDc1JxThh56Om17Cs6pnNjk
         cctxnz3S/s/br88IJYqUFGti3zR5LmpZW7fYsQHXjRJVhS+XrLHNBCuYmwIKC0ABHKBQ
         WLwnwysCZq1WcYe0HmOiLxlHdCClI+Ij7plDUudKqE8crkw0xNstwScfYVByFbnZJ+/9
         WGjVnr3qvxNqAxph8hG7NGz0n9urEuUQUSsn4IbvgXWRvr8FgxKNE8v6XzOrSvre4jcv
         fWGQ==
X-Gm-Message-State: AOJu0YyDOzod4Xv+RW+WcZkmbD62ypWMoAvcuTuOBMa7Q9B8SWlUcbT8
	M1xvJJD+dIHBUTpnsheLz/yhG7hipExOY9cB4EJJzilPPAg=
X-Google-Smtp-Source: AGHT+IFcZZSG3fB9KLeDwmdrIxaAkXqtI7urdQAtFF7ukQLakZCaPiQi5I4dYBErtN1hXp0t2rZH6w==
X-Received: by 2002:a05:600c:3b87:b0:40e:6275:e6be with SMTP id n7-20020a05600c3b8700b0040e6275e6bemr688938wms.43.1705057809424;
        Fri, 12 Jan 2024 03:10:09 -0800 (PST)
From: Roger Pau Monne <roger.pau@citrix.com>
To: xen-devel@lists.xenproject.org
Cc: Roger Pau Monne <roger.pau@citrix.com>,
	Jan Beulich <jbeulich@suse.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Wei Liu <wl@xen.org>
Subject: [PATCH v4] x86/intel: ensure Global Performance Counter Control is setup correctly
Date: Fri, 12 Jan 2024 12:09:46 +0100
Message-ID: <20240112110946.75582-1-roger.pau@citrix.com>
X-Mailer: git-send-email 2.43.0
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

When Architectural Performance Monitoring is available, the PERF_GLOBAL_CTRL
MSR contains per-counter enable bits that is ANDed with the enable bit in the
counter EVNTSEL MSR in order for a PMC counter to be enabled.

So far the watchdog code seems to have relied on the PERF_GLOBAL_CTRL enable
bits being set by default, but at least on some Intel Sapphire and Emerald
Rapids this is no longer the case, and Xen reports:

Testing NMI watchdog on all CPUs: 0 40 stuck

The first CPU on each package is started with PERF_GLOBAL_CTRL zeroed, so PMC0
doesn't start counting when the enable bit in EVNTSEL0 is set, due to the
relevant enable bit in PERF_GLOBAL_CTRL not being set.

Check and adjust PERF_GLOBAL_CTRL during CPU initialization so that all the
general-purpose PMCs are enabled.  Doing so brings the state of the package-BSP
PERF_GLOBAL_CTRL in line with the rest of the CPUs on the system.

Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
---
Changes since v3:
 - Revert previous change and require 2 counters.

Changes since v2:
 - Print message on invalid PERF_GLOBAL_CTRL.
 - Use a mask instead of type truncation.
 - Adjust the check to require a single counter instead of 2.

Changes since v1:
 - Do the adjustment of PERF_GLOBAL_CTRL even if the watchdog is not used, and
   enable all counters.
---
 xen/arch/x86/cpu/intel.c | 23 ++++++++++++++++++++++-
 1 file changed, 22 insertions(+), 1 deletion(-)

diff --git a/xen/arch/x86/cpu/intel.c b/xen/arch/x86/cpu/intel.c
index dfee64689ffe..b5490eb06e00 100644
--- a/xen/arch/x86/cpu/intel.c
+++ b/xen/arch/x86/cpu/intel.c
@@ -533,9 +533,30 @@ static void cf_check init_intel(struct cpuinfo_x86 *c)
 	init_intel_cacheinfo(c);
 	if (c->cpuid_level > 9) {
 		unsigned eax = cpuid_eax(10);
+		unsigned int cnt = (eax >> 8) & 0xff;
+
 		/* Check for version and the number of counters */
-		if ((eax & 0xff) && (((eax>>8) & 0xff) > 1))
+		if ((eax & 0xff) && (cnt > 1) && (cnt <= 32)) {
+			uint64_t global_ctrl;
+			unsigned int cnt_mask = (1UL << cnt) - 1;
+
+			/*
+			 * On (some?) Sapphire/Emerald Rapids platforms each
+			 * package-BSP starts with all the enable bits for the
+			 * general-purpose PMCs cleared.  Adjust so counters
+			 * can be enabled from EVNTSEL.
+			 */
+			rdmsrl(MSR_CORE_PERF_GLOBAL_CTRL, global_ctrl);
+			if ((global_ctrl & cnt_mask) != cnt_mask) {
+				printk("CPU%u: invalid PERF_GLOBAL_CTRL: %#"
+				       PRIx64 " adjusting to %#" PRIx64 "\n",
+				       smp_processor_id(), global_ctrl,
+				       global_ctrl | cnt_mask);
+				wrmsrl(MSR_CORE_PERF_GLOBAL_CTRL,
+				       global_ctrl | cnt_mask);
+			}
 			__set_bit(X86_FEATURE_ARCH_PERFMON, c->x86_capability);
+		}
 	}
 
 	if ( !cpu_has(c, X86_FEATURE_XTOPOLOGY) )
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Fri Jan 12 11:19:03 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 12 Jan 2024 11:19:03 +0000
Received: from list by lists.xenproject.org with outflank-mailman.666839.1037751 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rOFYw-0004Q7-1F; Fri, 12 Jan 2024 11:18:58 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 666839.1037751; Fri, 12 Jan 2024 11:18:58 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rOFYv-0004Q0-Um; Fri, 12 Jan 2024 11:18:57 +0000
Received: by outflank-mailman (input) for mailman id 666839;
 Fri, 12 Jan 2024 11:18:56 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=jnEz=IW=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1rOFYu-0004OZ-EC
 for xen-devel@lists.xenproject.org; Fri, 12 Jan 2024 11:18:56 +0000
Received: from mail-wm1-x32a.google.com (mail-wm1-x32a.google.com
 [2a00:1450:4864:20::32a])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 5ee6b79e-b13c-11ee-9b0f-b553b5be7939;
 Fri, 12 Jan 2024 12:18:54 +0100 (CET)
Received: by mail-wm1-x32a.google.com with SMTP id
 5b1f17b1804b1-40d5336986cso80769705e9.1
 for <xen-devel@lists.xenproject.org>; Fri, 12 Jan 2024 03:18:54 -0800 (PST)
Received: from [10.80.67.30] (default-46-102-197-194.interdsl.co.uk.
 [46.102.197.194]) by smtp.gmail.com with ESMTPSA id
 r19-20020a05600c459300b0040e42391a12sm5390876wmo.13.2024.01.12.03.18.53
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Fri, 12 Jan 2024 03:18:53 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 5ee6b79e-b13c-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1705058334; x=1705663134; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=oU9o5JKKXTW4GrHJtIRxMttdhs29ICYJGsisDCRDS1w=;
        b=aFOudQ2HJGJp91czyIc35osVq3W1aqB2qx3jdMLIwkfU4ZF28IEyMqt813/8b6ALZp
         vDYlJhqt572bKHM9S1svlrRUfSAyYu6B7V3bPmkz6grwgy0Ll1pm78miEDIZZYopXpm8
         fRv/1AUp09fMeS194+JenUuO78c3g4PwVFBdQ=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705058334; x=1705663134;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=oU9o5JKKXTW4GrHJtIRxMttdhs29ICYJGsisDCRDS1w=;
        b=EIndjvMqAZyOn51yJNQ5v21siqCf4h6fE3fo6gZPCyv6zrOZUJwhh5TYo/BP1fQ+U5
         bQ+z/Zo54jUDzgehzmd/jk2QR2zPBYKB4xSRGAicmNqfXZTm9m8Thg80Psuje+f23qmA
         C1WDh6jB9j/gZ6d4Ryw7iXUkWvGflevAC3Fcs8/mEpVe15fWAXr8ZZQgmE2Au+FVu+O+
         MQMbviPzSOgTqUKlDG2Mw2TL7g1IiO7/2lfc/xsE7rM+swJLdcOci1gEpuIIylGNm3xZ
         jVkuP5e9RcemOo9ul/4va377CcNRzMzd99mZLNKPAJFlktlyy+5wIeFXJ5vMpZbv1y9P
         y44A==
X-Gm-Message-State: AOJu0Yz624R9YKogzxaYiG51MSkymK2NUswAqg8m3Cil87jjx7dMGDiE
	wzfTpPDU6dwGqk4gCl7E0dnlfIzCHyWDmQ==
X-Google-Smtp-Source: AGHT+IEWOElTsRTnsb7jrXpDys5yiu6U1YGnOH/ChI8e+YSNp3oGxtqN7sxD60tA7Dk8YOFOKYp1mQ==
X-Received: by 2002:a05:600c:19d2:b0:40e:541e:d5b with SMTP id u18-20020a05600c19d200b0040e541e0d5bmr614549wmq.192.1705058333811;
        Fri, 12 Jan 2024 03:18:53 -0800 (PST)
Message-ID: <9eab7ca8-7c28-461b-8527-e3e7d650e921@citrix.com>
Date: Fri, 12 Jan 2024 11:18:53 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2 3/3] x86/vmx: Disallow the use of inactivity states
Content-Language: en-GB
To: Jan Beulich <jbeulich@suse.com>
Cc: Reima Ishii <ishiir@g.ecc.u-tokyo.ac.jp>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>, Wei Liu
 <wl@xen.org>, Jun Nakajima <jun.nakajima@intel.com>,
 Kevin Tian <kevin.tian@intel.com>, Tamas K Lengyel <tamas@tklengyel.com>,
 Takahiro Shinagawa <shina@ecc.u-tokyo.ac.jp>,
 George Dunlap <george.dunlap@citrix.com>,
 Xen-devel <xen-devel@lists.xenproject.org>
References: <20240111231323.4043461-1-andrew.cooper3@citrix.com>
 <20240111231323.4043461-4-andrew.cooper3@citrix.com>
 <d9d9ee2b-ff95-4d5e-bb81-b1722681a4a5@suse.com>
 <8225cfd3-73d6-4a93-92b4-185399ab0ad3@citrix.com>
 <b25c0ff6-b2da-4e5b-b6b9-dca7843816d2@suse.com>
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 xsFNBFLhNn8BEADVhE+Hb8i0GV6mihnnr/uiQQdPF8kUoFzCOPXkf7jQ5sLYeJa0cQi6Penp
 VtiFYznTairnVsN5J+ujSTIb+OlMSJUWV4opS7WVNnxHbFTPYZVQ3erv7NKc2iVizCRZ2Kxn
 srM1oPXWRic8BIAdYOKOloF2300SL/bIpeD+x7h3w9B/qez7nOin5NzkxgFoaUeIal12pXSR
 Q354FKFoy6Vh96gc4VRqte3jw8mPuJQpfws+Pb+swvSf/i1q1+1I4jsRQQh2m6OTADHIqg2E
 ofTYAEh7R5HfPx0EXoEDMdRjOeKn8+vvkAwhviWXTHlG3R1QkbE5M/oywnZ83udJmi+lxjJ5
 YhQ5IzomvJ16H0Bq+TLyVLO/VRksp1VR9HxCzItLNCS8PdpYYz5TC204ViycobYU65WMpzWe
 LFAGn8jSS25XIpqv0Y9k87dLbctKKA14Ifw2kq5OIVu2FuX+3i446JOa2vpCI9GcjCzi3oHV
 e00bzYiHMIl0FICrNJU0Kjho8pdo0m2uxkn6SYEpogAy9pnatUlO+erL4LqFUO7GXSdBRbw5
 gNt25XTLdSFuZtMxkY3tq8MFss5QnjhehCVPEpE6y9ZjI4XB8ad1G4oBHVGK5LMsvg22PfMJ
 ISWFSHoF/B5+lHkCKWkFxZ0gZn33ju5n6/FOdEx4B8cMJt+cWwARAQABzSlBbmRyZXcgQ29v
 cGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPsLBegQTAQgAJAIbAwULCQgHAwUVCgkI
 CwUWAgMBAAIeAQIXgAUCWKD95wIZAQAKCRBlw/kGpdefoHbdD/9AIoR3k6fKl+RFiFpyAhvO
 59ttDFI7nIAnlYngev2XUR3acFElJATHSDO0ju+hqWqAb8kVijXLops0gOfqt3VPZq9cuHlh
 IMDquatGLzAadfFx2eQYIYT+FYuMoPZy/aTUazmJIDVxP7L383grjIkn+7tAv+qeDfE+txL4
 SAm1UHNvmdfgL2/lcmL3xRh7sub3nJilM93RWX1Pe5LBSDXO45uzCGEdst6uSlzYR/MEr+5Z
 JQQ32JV64zwvf/aKaagSQSQMYNX9JFgfZ3TKWC1KJQbX5ssoX/5hNLqxMcZV3TN7kU8I3kjK
 mPec9+1nECOjjJSO/h4P0sBZyIUGfguwzhEeGf4sMCuSEM4xjCnwiBwftR17sr0spYcOpqET
 ZGcAmyYcNjy6CYadNCnfR40vhhWuCfNCBzWnUW0lFoo12wb0YnzoOLjvfD6OL3JjIUJNOmJy
 RCsJ5IA/Iz33RhSVRmROu+TztwuThClw63g7+hoyewv7BemKyuU6FTVhjjW+XUWmS/FzknSi
 dAG+insr0746cTPpSkGl3KAXeWDGJzve7/SBBfyznWCMGaf8E2P1oOdIZRxHgWj0zNr1+ooF
 /PzgLPiCI4OMUttTlEKChgbUTQ+5o0P080JojqfXwbPAyumbaYcQNiH1/xYbJdOFSiBv9rpt
 TQTBLzDKXok86M7BTQRS4TZ/ARAAkgqudHsp+hd82UVkvgnlqZjzz2vyrYfz7bkPtXaGb9H4
 Rfo7mQsEQavEBdWWjbga6eMnDqtu+FC+qeTGYebToxEyp2lKDSoAsvt8w82tIlP/EbmRbDVn
 7bhjBlfRcFjVYw8uVDPptT0TV47vpoCVkTwcyb6OltJrvg/QzV9f07DJswuda1JH3/qvYu0p
 vjPnYvCq4NsqY2XSdAJ02HrdYPFtNyPEntu1n1KK+gJrstjtw7KsZ4ygXYrsm/oCBiVW/OgU
 g/XIlGErkrxe4vQvJyVwg6YH653YTX5hLLUEL1NS4TCo47RP+wi6y+TnuAL36UtK/uFyEuPy
 wwrDVcC4cIFhYSfsO0BumEI65yu7a8aHbGfq2lW251UcoU48Z27ZUUZd2Dr6O/n8poQHbaTd
 6bJJSjzGGHZVbRP9UQ3lkmkmc0+XCHmj5WhwNNYjgbbmML7y0fsJT5RgvefAIFfHBg7fTY/i
 kBEimoUsTEQz+N4hbKwo1hULfVxDJStE4sbPhjbsPCrlXf6W9CxSyQ0qmZ2bXsLQYRj2xqd1
 bpA+1o1j2N4/au1R/uSiUFjewJdT/LX1EklKDcQwpk06Af/N7VZtSfEJeRV04unbsKVXWZAk
 uAJyDDKN99ziC0Wz5kcPyVD1HNf8bgaqGDzrv3TfYjwqayRFcMf7xJaL9xXedMcAEQEAAcLB
 XwQYAQgACQUCUuE2fwIbDAAKCRBlw/kGpdefoG4XEACD1Qf/er8EA7g23HMxYWd3FXHThrVQ
 HgiGdk5Yh632vjOm9L4sd/GCEACVQKjsu98e8o3ysitFlznEns5EAAXEbITrgKWXDDUWGYxd
 pnjj2u+GkVdsOAGk0kxczX6s+VRBhpbBI2PWnOsRJgU2n10PZ3mZD4Xu9kU2IXYmuW+e5KCA
 vTArRUdCrAtIa1k01sPipPPw6dfxx2e5asy21YOytzxuWFfJTGnVxZZSCyLUO83sh6OZhJkk
 b9rxL9wPmpN/t2IPaEKoAc0FTQZS36wAMOXkBh24PQ9gaLJvfPKpNzGD8XWR5HHF0NLIJhgg
 4ZlEXQ2fVp3XrtocHqhu4UZR4koCijgB8sB7Tb0GCpwK+C4UePdFLfhKyRdSXuvY3AHJd4CP
 4JzW0Bzq/WXY3XMOzUTYApGQpnUpdOmuQSfpV9MQO+/jo7r6yPbxT7CwRS5dcQPzUiuHLK9i
 nvjREdh84qycnx0/6dDroYhp0DFv4udxuAvt1h4wGwTPRQZerSm4xaYegEFusyhbZrI0U9tJ
 B8WrhBLXDiYlyJT6zOV2yZFuW47VrLsjYnHwn27hmxTC/7tvG3euCklmkn9Sl9IAKFu29RSo
 d5bD8kMSCYsTqtTfT6W4A3qHGvIDta3ptLYpIAOD2sY3GYq2nf3Bbzx81wZK14JdDDHUX2Rs
 6+ahAA==
In-Reply-To: <b25c0ff6-b2da-4e5b-b6b9-dca7843816d2@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 12/01/2024 11:04 am, Jan Beulich wrote:
> On 12.01.2024 11:43, Andrew Cooper wrote:
>> On 12/01/2024 10:37 am, Jan Beulich wrote:
>>> On 12.01.2024 00:13, Andrew Cooper wrote:
>>>> --- a/xen/arch/x86/hvm/vmx/vmx.c
>>>> +++ b/xen/arch/x86/hvm/vmx/vmx.c
>>>> @@ -1551,7 +1551,10 @@ static void cf_check vmx_set_nonreg_state(struct vcpu *v,
>>>>  {
>>>>      vmx_vmcs_enter(v);
>>>>  
>>>> -    __vmwrite(GUEST_ACTIVITY_STATE, nrs->vmx.activity_state);
>>>> +    if ( nrs->vmx.activity_state )
>>>> +        domain_crash(v->domain, "Attempt to set activity_state %#lx\n",
>>>> +                     nrs->vmx.activity_state);
>>> Might be useful to log the offending vCPU here?
>> Already covered.  the innards of __domain_crash() does:
>>
>>     else if ( d == current->domain )
>>     {
>>         printk("Domain %d (vcpu#%d) crashed on cpu#%d:\n",
>>         ...
> Except that afaict v != current here at all times (at least as far as
> current use of the function goes).

Hmm.  That's irritating.

In this case, it's a dead logic path - hence why in v1 I simply deleted it.

But I would prefer not to have to rely on a human getting an error
message right in order to get proper logging.

I suppose what we really want is a vcpu_crash(), but this is now firmly
in the realms of the cleanup patch I still haven't had time to repost.

I think I'll extend this with %pv for now, which can be dropped when
vcpu_crash() appears.

~Andrew


From xen-devel-bounces@lists.xenproject.org Fri Jan 12 11:25:48 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 12 Jan 2024 11:25:48 +0000
Received: from list by lists.xenproject.org with outflank-mailman.666845.1037762 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rOFfT-0006IN-RT; Fri, 12 Jan 2024 11:25:43 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 666845.1037762; Fri, 12 Jan 2024 11:25:43 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rOFfT-0006IG-OC; Fri, 12 Jan 2024 11:25:43 +0000
Received: by outflank-mailman (input) for mailman id 666845;
 Fri, 12 Jan 2024 11:25:43 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=12w8=IW=amd.com=Michal.Orzel@srs-se1.protection.inumbo.net>)
 id 1rOFfS-0006IA-QT
 for xen-devel@lists.xenproject.org; Fri, 12 Jan 2024 11:25:43 +0000
Received: from NAM12-MW2-obe.outbound.protection.outlook.com
 (mail-mw2nam12on20600.outbound.protection.outlook.com
 [2a01:111:f403:200a::600])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 50a4dd8b-b13d-11ee-98f0-6d05b1d4d9a1;
 Fri, 12 Jan 2024 12:25:41 +0100 (CET)
Received: from MW4PR04CA0265.namprd04.prod.outlook.com (2603:10b6:303:88::30)
 by CY8PR12MB7364.namprd12.prod.outlook.com (2603:10b6:930:50::20)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7159.23; Fri, 12 Jan
 2024 11:25:37 +0000
Received: from CO1PEPF000044F6.namprd21.prod.outlook.com
 (2603:10b6:303:88:cafe::ba) by MW4PR04CA0265.outlook.office365.com
 (2603:10b6:303:88::30) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7181.21 via Frontend
 Transport; Fri, 12 Jan 2024 11:25:37 +0000
Received: from SATLEXMB04.amd.com (165.204.84.17) by
 CO1PEPF000044F6.mail.protection.outlook.com (10.167.241.196) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.7202.4 via Frontend Transport; Fri, 12 Jan 2024 11:25:36 +0000
Received: from SATLEXMB05.amd.com (10.181.40.146) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.34; Fri, 12 Jan
 2024 05:25:35 -0600
Received: from SATLEXMB03.amd.com (10.181.40.144) by SATLEXMB05.amd.com
 (10.181.40.146) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.34; Fri, 12 Jan
 2024 05:25:34 -0600
Received: from [10.252.147.188] (10.180.168.240) by SATLEXMB03.amd.com
 (10.181.40.144) with Microsoft SMTP Server id 15.1.2507.34 via Frontend
 Transport; Fri, 12 Jan 2024 05:25:32 -0600
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 50a4dd8b-b13d-11ee-98f0-6d05b1d4d9a1
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=Po4NJN5GcH4D12RICatAa72u6kazovCU0CVV4tTSHrOGBISC7FqvsEicXUuJaN10zoqGmAHGC/GXT0eHLbAEn7xS66iZBPn3Rm6AdR+7hPyG7xONPDH13z5is93TVR8fI12+dltm9wESjw5kroQqw1Jn1GanCQJ3hSLg0i/ZsvAVxiraPRf6PoFfxY0Ktvm6CRVcxbwGbe3fBHImriU2zidSXrZQUTgE3X1UZKUvCVNhcS0LjKMp+fDLUz/ceuhsW7VoXz7uIrKS3pc63dJW3mAonfp0nTr4HyV7I9pOgDO12qnNmACpMExx3Ozmcsw8ETg+xdICfhWxMAxcEinfXQ==
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=AsDre6F0jXp/nVBwmuF/N0dFA525Ew6TBX8RCdgMuks=;
 b=Ody8VE/pHo3w8sQO+5L5b7xT5NQrDn1c7GVDMgLO6V2QokdSQAGiXMhenlWGbz8htfIXHz2J97NCLJGVkWtXHJEvPKNKKBGz4FoxGclt9Foev3YRfGmwqrlrUigu9q77SY2X2zAAJmyHMZOIOVIP49+7NNmESfhbJ9UvjGIhYZijN2eTWiPT5sFG805osahC8rjscrseA4qz2mn16z8E+txf4ugNLcXo6vbDsh4meNBsxYJfwrZJmT2zGH25U6+Pf/liWC4Tq+vj7d5m7tK9Zt/FupTooBS+y7JTYqeNBrw5S8+j3VK3HSFsT8zWwO2LBiiA9EjiuqCvQzNXmeyqCg==
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)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=AsDre6F0jXp/nVBwmuF/N0dFA525Ew6TBX8RCdgMuks=;
 b=5JT8fDgDDoinMRQtfW/Fj9EPOLO9IanZApDYWMd+9b+Th2/Eudodd/J9gjUNqtYbKMzEYelSDgYEmBBvDucO1pnHuiliWDYzCCZg7jMz+5EdYVEn85sGtojFFzljXI2rDXuGxPR82wCujZUifUWeup3fi4APhIqxiZQeDV5lK8c=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C
Message-ID: <a154f9c4-6905-4f51-a8fd-36f3ca652f1d@amd.com>
Date: Fri, 12 Jan 2024 12:25:27 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2 2/2] xen/arm32: head: Improve logging in head.S
Content-Language: en-US
To: Julien Grall <julien@xen.org>, <xen-devel@lists.xenproject.org>
CC: Julien Grall <jgrall@amazon.com>, Stefano Stabellini
	<sstabellini@kernel.org>, Bertrand Marquis <bertrand.marquis@arm.com>,
	Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>
References: <20240111183410.45566-1-julien@xen.org>
 <20240111183410.45566-3-julien@xen.org>
 <58d2e455-2894-4b1f-948a-3b486bb84499@amd.com>
 <bb7d0581-6e47-4dce-afa3-0f3d55db9ebf@xen.org>
From: Michal Orzel <michal.orzel@amd.com>
In-Reply-To: <bb7d0581-6e47-4dce-afa3-0f3d55db9ebf@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 7bit
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CO1PEPF000044F6:EE_|CY8PR12MB7364:EE_
X-MS-Office365-Filtering-Correlation-Id: 8f9e805c-ab24-4553-48b4-08dc136132fd
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam: BCL:0;
X-Microsoft-Antispam-Message-Info:
	V9e6vGMmjtHJpSULG1GOxvD3gtqIu1pzMJaafiDEF08hAzm0Mr5fuUezzLzoKMg762N336EvF93eZxoA0KS8KQ25V2PuGhZBFKMAlRXTZqZh8YKgf3+oNecYidqYopC5sCqR7Eh0yWp8QFDKW/dB7cmDnzbv0OjhdWKMmfOpb9IuwQ/7pKw3PGkJwpUbNeORvyM6NoCsWw/WH0TUWJV55ZNE1OXcfARPwSacGKHgW7UfJH+jideujn0UKhsNbdGT88A67KcM/SNVXu7/Y5UtOqDhzF/wyqgj//BkTJxbPmt3gBsRy/CZamBELPkaY1HADdegFdyTSMN3WYQVDrXcXMEVDsfgcj0ShPYvciF0na1wyXKcnBUZZDWNWG8Yl5qZ5xPNnJADxtMnd7PFxm1jKg6/AnTpp+/Xi81EquCPi4TqRgSlzaridx1okMBdMZMXv/GbvwDNmVJrL9ksR1TgnfL4pdQlXkI4KuWb9DRNasRTAKrUVBjryafcp+B44RQDFIKp+QU0mY0e4J/NbHJF66zHHZ8ZIFscZsSLegFRpMfjJ/mWr2GgKHehcNkkedQfZJnsLPzy1bcgGPn5jFUMX+vD+tCc/NPpkRTzPb6Hn4ikoTarufnMPHuPQnI8ZXE+6wrha+Q3pgsipBfm0PS+W6y6IpuW8ZVu7wPKvsJFIfMs5Xjgr//Rg0Nw9NdtqDCOIrEIlkE4c+GkyYxYp8OxpvgFERwSUCvuDJqU/8f39BTvC9Rcvm+NjtKKPYCYUoU+jaekMxF1hKxr8LyeIerfKH3RLY9NwgJ88W33aEJWPA0KmwEkB+f9L5X4W0MdK6ti
X-Forefront-Antispam-Report:
	CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230031)(4636009)(376002)(396003)(346002)(136003)(39860400002)(230922051799003)(1800799012)(451199024)(64100799003)(82310400011)(186009)(46966006)(40470700004)(36840700001)(86362001)(36756003)(8676002)(83380400001)(26005)(356005)(81166007)(82740400003)(336012)(2616005)(4326008)(8936002)(316002)(54906003)(16576012)(110136005)(2906002)(44832011)(5660300002)(45080400002)(41300700001)(426003)(6666004)(70586007)(70206006)(53546011)(36860700001)(47076005)(31696002)(478600001)(40480700001)(31686004)(40460700003)(36900700001)(43740500002);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Jan 2024 11:25:36.6577
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 8f9e805c-ab24-4553-48b4-08dc136132fd
X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com]
X-MS-Exchange-CrossTenant-AuthSource:
	CO1PEPF000044F6.namprd21.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY8PR12MB7364



On 12/01/2024 11:58, Julien Grall wrote:
> 
> 
> On 12/01/2024 08:49, Michal Orzel wrote:
>> Hi Julien,
> 
> Hi Michal,
> 
>> On 11/01/2024 19:34, Julien Grall wrote:
>>>
>>>
>>> From: Julien Grall <jgrall@amazon.com>
>>>
>>> The sequence to enable the MMU on arm32 is quite complex as we may need
>>> to jump to a temporary mapping to map Xen.
>>>
>>> Recently, we had one bug in the logic (see f5a49eb7f8b3 ("xen/arm32:
>>> head: Add mising isb in switch_to_runtime_mapping()") and it was
>>> a pain to debug because there are no logging.
>>>
>>> In order to improve the logging in the MMU switch we need to add
>>> support for early printk while running on the identity mapping
>>> and also on the temporary mapping.
>>>
>>> For the identity mapping, we have only the first page of Xen mapped.
>>> So all the strings should reside in the first page. For that purpose
>>> a new macro PRINT_ID is introduced.
>>>
>>> For the temporary mapping, the fixmap is already linked in the temporary
>>> area (and so does the UART). So we just need to update the register
>>> storing the UART address (i.e. r11) to point to the UART temporary
>>> mapping.
>>>
>>> Take the opportunity to introduce mov_w_on_cond in order to
>>> conditionally execute mov_w and avoid branches.
>>>
>>> Signed-off-by: Julien Grall <jgrall@amazon.com>
>> Reviewed-by: Michal Orzel <michal.orzel@amd.com>
> 
> Thanks!
> 
>>>   /*
>>> @@ -29,16 +33,26 @@
>>>
>>>   #ifdef CONFIG_EARLY_PRINTK
>>>   /*
>>> - * Macro to print a string to the UART, if there is one.
>>> + * Macros to print a string to the UART, if there is one.
>>> + *
>>> + * There are multiple flavors:
>>> + *  - PRINT_SECT(section, string): The @string will be located in @section
>>> + *  - PRINT(): The string will be located in .rodata.str.
>>> + *  - PRINT_ID(): When Xen is running on the Identity Mapping, it is
>>> + *    only possible to have a limited amount of Xen. This will create
>>> + *    the string in .rodata.idmap which will always be mapped.
>>>    *
>>>    * Clobbers r0 - r3
>>>    */
>>> -#define PRINT(_s)           \
>>> -        mov   r3, lr       ;\
>>> -        adr_l r0, 98f      ;\
>>> -        bl    asm_puts     ;\
>>> -        mov   lr, r3       ;\
>>> -        RODATA_STR(98, _s)
>>> +#define PRINT_SECT(section, string)         \
>>> +        mov   r3, lr                       ;\
>>> +        adr_l r0, 98f                      ;\
>>> +        bl    asm_puts                     ;\
>>> +        mov   lr, r3                       ;\
>>> +        RODATA_SECT(section, 98, string)
>>> +
>>> +#define PRINT(string) PRINT_SECT(.rodata.str, string)
>>> +#define PRINT_ID(string) PRINT_SECT(.rodata.idmap, string)
>> I know this is just a macro but does it make sense to have something MMU specific in common header?
>> I don't expect MPU to use it.
> For cache coloring, I would like secondary boot CPUs to start directly
> on the colored Xen. This means that any message used before enabling the
> MMU will need to be part of the .rodata.idmap.
> 
> I know that 32-bit is not in scope for the cache coloring series. But I
> would like to keep 32-bit and 64-bit boot logic fairly similar.
> 
> With that in mind, would you be happy if I keep PRINT_ID() in macros.h?
> Note that I would be ok to move in mmu/head.S and move back in macros.h
> later on. I just wanted to avoid code movement :).
With the above explanation it does not make sense to move it back and forth, so let's keep it as is.

~Michal


From xen-devel-bounces@lists.xenproject.org Fri Jan 12 11:31:56 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 12 Jan 2024 11:31:56 +0000
Received: from list by lists.xenproject.org with outflank-mailman.666849.1037772 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rOFlP-0000FP-FD; Fri, 12 Jan 2024 11:31:51 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 666849.1037772; Fri, 12 Jan 2024 11:31:51 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rOFlP-0000FI-C5; Fri, 12 Jan 2024 11:31:51 +0000
Received: by outflank-mailman (input) for mailman id 666849;
 Fri, 12 Jan 2024 11:31:50 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rOFlO-0000F8-7l; Fri, 12 Jan 2024 11:31:50 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rOFlN-0007nD-VC; Fri, 12 Jan 2024 11:31:49 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rOFlN-0002w0-GD; Fri, 12 Jan 2024 11:31:49 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rOFlN-0003wd-Fj; Fri, 12 Jan 2024 11:31:49 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=c18MW270tHyQnYsl8fxHQm/gIw101O6THwUjyYcl1BM=; b=1O4JJgzdq2eQReX1yY6X5gtoQ3
	5egCTA4l4KrrtZDUAEZbOvSbtVQq3WWEfWBwQer4wjYt1HA+sAYAkYjv8xRfnXVlZT7rmZHqI/CKC
	vuumjLznS9zCudy1p9wHs5zanuXx8ngH2KbzZUMpuP4unBL24HOwJ9P6GAvcLon//Pv8=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184331-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [ovmf test] 184331: all pass - PUSHED
X-Osstest-Versions-This:
    ovmf=cfe48465724293abd0a7d92c2a72f8ee3cf15628
X-Osstest-Versions-That:
    ovmf=2bce85bd862e54cede2b59b48972c9f05e2e733d
From: osstest service owner <osstest-admin@xenproject.org>
Date: Fri, 12 Jan 2024 11:31:49 +0000

flight 184331 ovmf real [real]
http://logs.test-lab.xenproject.org/osstest/logs/184331/

Perfect :-)
All tests in this flight passed as required
version targeted for testing:
 ovmf                 cfe48465724293abd0a7d92c2a72f8ee3cf15628
baseline version:
 ovmf                 2bce85bd862e54cede2b59b48972c9f05e2e733d

Last test of basis   184328  2024-01-12 01:43:23 Z    0 days
Testing same since   184331  2024-01-12 06:14:31 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Zhi Jin <zhi.jin@intel.com>

jobs:
 build-amd64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-amd64-amd64-xl-qemuu-ovmf-amd64                         pass    
 test-amd64-i386-xl-qemuu-ovmf-amd64                          pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Pushing revision :

To xenbits.xen.org:/home/xen/git/osstest/ovmf.git
   2bce85bd86..cfe4846572  cfe48465724293abd0a7d92c2a72f8ee3cf15628 -> xen-tested-master


From xen-devel-bounces@lists.xenproject.org Fri Jan 12 11:47:12 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 12 Jan 2024 11:47:12 +0000
Received: from list by lists.xenproject.org with outflank-mailman.666855.1037781 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rOG06-00050Q-Kt; Fri, 12 Jan 2024 11:47:02 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 666855.1037781; Fri, 12 Jan 2024 11:47:02 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rOG06-00050J-II; Fri, 12 Jan 2024 11:47:02 +0000
Received: by outflank-mailman (input) for mailman id 666855;
 Fri, 12 Jan 2024 11:47:01 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=QRUo=IW=cloud.com=george.dunlap@srs-se1.protection.inumbo.net>)
 id 1rOG05-00050D-Q3
 for xen-devel@lists.xenproject.org; Fri, 12 Jan 2024 11:47:01 +0000
Received: from mail-lf1-x130.google.com (mail-lf1-x130.google.com
 [2a00:1450:4864:20::130])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 4c00edda-b140-11ee-98f0-6d05b1d4d9a1;
 Fri, 12 Jan 2024 12:47:00 +0100 (CET)
Received: by mail-lf1-x130.google.com with SMTP id
 2adb3069b0e04-50e7af5f618so7298882e87.1
 for <xen-devel@lists.xenproject.org>; Fri, 12 Jan 2024 03:47:00 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 4c00edda-b140-11ee-98f0-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1705060020; x=1705664820; darn=lists.xenproject.org;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:from:to:cc:subject:date
         :message-id:reply-to;
        bh=XERSsMREHJUGBE4kRO3dIeaXL6/4OylYGvOJ3gdq530=;
        b=Q29JMsuSlMWD4H4mCEZrHcv/y3FhiRPUN+aEwinyEtKcos8Yoe89oMVCRudoc0lXwL
         nQ3Xl7Xc3ghMBb8TQ8oKbs9M5nnlt3V6V9XoFh/EIf/1yoLMaF6tDt6E5KZOGsnM5Wg2
         tDD0tm6dcKt5V9x+HgzeRcDO5ifEnZ9fimndw=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705060020; x=1705664820;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to;
        bh=XERSsMREHJUGBE4kRO3dIeaXL6/4OylYGvOJ3gdq530=;
        b=EK0zvMHcCfGhoStxA7XMtoQWufZ/fRr3RZgr68vzB/Vt6XfadFTtEo6UGd8BLIadBi
         T2OXxkW2fIpLT3hvLqPMnpQc3rfLbrP0+Td0P7sdV3Bf1VDFrsUrh1CXb/lzaQHoFQ7S
         PHymzpzuyuyYtCMne8DfZLccdri67sxdpNn/iZP21L/MPivuoPZfveP8oC1Ew5L4NMNO
         U4dFuZ7LI1DitcASPYJfve6nA9K5hBTOOafTbhyWL5ot3LObYgyleTDNmTFu/Qjl93SC
         9+t4k5NaQx7zi+umJqNmnaj2PYaVghsXF+4gpDphOLbvk89vDZN2toRlZqkaaBL9FsVo
         aNSg==
X-Gm-Message-State: AOJu0YzqXVy0ddcmxo9tJRycxA5idHjAo9Iq+cHyN9/oL5guQ7LhT8DZ
	ehH6VRsnDvMf8K9/lxE4nUC4pa3qZS5dYPV9HHw56c9A9xH1+BQX7TJZ1Mtt
X-Google-Smtp-Source: AGHT+IF+xLx6roTdvIRp2aW7rW0C/79GM8zycpdwXE9FWpj0vNpoij+IXZrZOuBSX7EX+Fr8psdnpRh2X7EmXwM42Yo=
X-Received: by 2002:a05:6512:224f:b0:50e:74c6:8960 with SMTP id
 i15-20020a056512224f00b0050e74c68960mr681672lfu.96.1705060020188; Fri, 12 Jan
 2024 03:47:00 -0800 (PST)
MIME-Version: 1.0
References: <20240109215145.430207-1-stewart.hildebrand@amd.com> <20240109215145.430207-12-stewart.hildebrand@amd.com>
In-Reply-To: <20240109215145.430207-12-stewart.hildebrand@amd.com>
From: George Dunlap <george.dunlap@cloud.com>
Date: Fri, 12 Jan 2024 11:46:49 +0000
Message-ID: <CA+zSX=Z33cixDd1w10zwC-c80z-sB4E8Nu__nTNi30n-FW6GwA@mail.gmail.com>
Subject: Re: [PATCH v12 11/15] vpci: add initial support for virtual PCI bus topology
To: Stewart Hildebrand <stewart.hildebrand@amd.com>
Cc: xen-devel@lists.xenproject.org, 
	Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>, 
	Andrew Cooper <andrew.cooper3@citrix.com>, Jan Beulich <jbeulich@suse.com>, 
	Julien Grall <julien@xen.org>, Stefano Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>, 
	=?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>, 
	Volodymyr Babchuk <volodymyr_babchuk@epam.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

On Tue, Jan 9, 2024 at 9:54=E2=80=AFPM Stewart Hildebrand
<stewart.hildebrand@amd.com> wrote:
> diff --git a/xen/include/xen/sched.h b/xen/include/xen/sched.h
> index 37f5922f3206..b58a822847be 100644
> --- a/xen/include/xen/sched.h
> +++ b/xen/include/xen/sched.h
> @@ -484,6 +484,14 @@ struct domain
>       * 2. pdev->vpci->lock
>       */
>      rwlock_t pci_lock;
> +#ifdef CONFIG_HAS_VPCI_GUEST_SUPPORT
> +    /*
> +     * The bitmap which shows which device numbers are already used by t=
he
> +     * virtual PCI bus topology and is used to assign a unique SBDF to t=
he
> +     * next passed through virtual PCI device.
> +     */
> +    DECLARE_BITMAP(vpci_dev_assigned_map, VPCI_MAX_VIRT_DEV);
> +#endif
>  #endif

Without digging through the whole series, how big do we expect this
bitmap to be on typical systems?

If it's only going to be a handful of bytes, keeping it around for all
guests would be OK; but it's large, it would be better as a pointer,
since it's unused on the vast majority of guests.

 -George


From xen-devel-bounces@lists.xenproject.org Fri Jan 12 11:55:21 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 12 Jan 2024 11:55:21 +0000
Received: from list by lists.xenproject.org with outflank-mailman.666858.1037792 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rOG84-0008SU-FM; Fri, 12 Jan 2024 11:55:16 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 666858.1037792; Fri, 12 Jan 2024 11:55:16 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rOG84-0008SN-B8; Fri, 12 Jan 2024 11:55:16 +0000
Received: by outflank-mailman (input) for mailman id 666858;
 Fri, 12 Jan 2024 11:55:14 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>) id 1rOG82-0008SE-PF
 for xen-devel@lists.xenproject.org; Fri, 12 Jan 2024 11:55:14 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rOG82-0008Cq-2j; Fri, 12 Jan 2024 11:55:14 +0000
Received: from gw1.octic.net ([88.97.20.152] helo=[10.0.1.240])
 by xenbits.xenproject.org with esmtpsa
 (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rOG81-0001QQ-Ta; Fri, 12 Jan 2024 11:55:14 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
	s=20200302mail; h=Content-Transfer-Encoding:Content-Type:In-Reply-To:From:
	References:Cc:To:Subject:MIME-Version:Date:Message-ID;
	bh=ZLo3nAB/Nbgl2/KRcGrKclifdZ8eIU9XGts2JGAItlk=; b=KRuVZVPlh6S/2syqflMVJB+qxm
	5D5VYKdX3jTHK6dt+bM/ceiasNct1hVpEWBIbHpm95cIDhBoxlBFs4/X07I+uHslykIv7ACbB5SEA
	PqKOKYVr47TYxMGRw+GA7OJ7ENKAd4SuDQsfnw1c6AQRAGvVvNipJpyjyyKZdGDnkq10=;
Message-ID: <da0c98ec-85e1-4b71-97da-840015773a2c@xen.org>
Date: Fri, 12 Jan 2024 11:55:12 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2 2/2] xen/arm32: head: Improve logging in head.S
Content-Language: en-GB
To: Michal Orzel <michal.orzel@amd.com>, xen-devel@lists.xenproject.org
Cc: Julien Grall <jgrall@amazon.com>,
 Stefano Stabellini <sstabellini@kernel.org>,
 Bertrand Marquis <bertrand.marquis@arm.com>,
 Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>
References: <20240111183410.45566-1-julien@xen.org>
 <20240111183410.45566-3-julien@xen.org>
 <58d2e455-2894-4b1f-948a-3b486bb84499@amd.com>
 <bb7d0581-6e47-4dce-afa3-0f3d55db9ebf@xen.org>
 <a154f9c4-6905-4f51-a8fd-36f3ca652f1d@amd.com>
From: Julien Grall <julien@xen.org>
In-Reply-To: <a154f9c4-6905-4f51-a8fd-36f3ca652f1d@amd.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

Hi Michal,

On 12/01/2024 11:25, Michal Orzel wrote:
> 
> 
> On 12/01/2024 11:58, Julien Grall wrote:
>>
>>
>> On 12/01/2024 08:49, Michal Orzel wrote:
>>> Hi Julien,
>>
>> Hi Michal,
>>
>>> On 11/01/2024 19:34, Julien Grall wrote:
>>>>
>>>>
>>>> From: Julien Grall <jgrall@amazon.com>
>>>>
>>>> The sequence to enable the MMU on arm32 is quite complex as we may need
>>>> to jump to a temporary mapping to map Xen.
>>>>
>>>> Recently, we had one bug in the logic (see f5a49eb7f8b3 ("xen/arm32:
>>>> head: Add mising isb in switch_to_runtime_mapping()") and it was
>>>> a pain to debug because there are no logging.
>>>>
>>>> In order to improve the logging in the MMU switch we need to add
>>>> support for early printk while running on the identity mapping
>>>> and also on the temporary mapping.
>>>>
>>>> For the identity mapping, we have only the first page of Xen mapped.
>>>> So all the strings should reside in the first page. For that purpose
>>>> a new macro PRINT_ID is introduced.
>>>>
>>>> For the temporary mapping, the fixmap is already linked in the temporary
>>>> area (and so does the UART). So we just need to update the register
>>>> storing the UART address (i.e. r11) to point to the UART temporary
>>>> mapping.
>>>>
>>>> Take the opportunity to introduce mov_w_on_cond in order to
>>>> conditionally execute mov_w and avoid branches.
>>>>
>>>> Signed-off-by: Julien Grall <jgrall@amazon.com>
>>> Reviewed-by: Michal Orzel <michal.orzel@amd.com>
>>
>> Thanks!
>>
>>>>    /*
>>>> @@ -29,16 +33,26 @@
>>>>
>>>>    #ifdef CONFIG_EARLY_PRINTK
>>>>    /*
>>>> - * Macro to print a string to the UART, if there is one.
>>>> + * Macros to print a string to the UART, if there is one.
>>>> + *
>>>> + * There are multiple flavors:
>>>> + *  - PRINT_SECT(section, string): The @string will be located in @section
>>>> + *  - PRINT(): The string will be located in .rodata.str.
>>>> + *  - PRINT_ID(): When Xen is running on the Identity Mapping, it is
>>>> + *    only possible to have a limited amount of Xen. This will create
>>>> + *    the string in .rodata.idmap which will always be mapped.
>>>>     *
>>>>     * Clobbers r0 - r3
>>>>     */
>>>> -#define PRINT(_s)           \
>>>> -        mov   r3, lr       ;\
>>>> -        adr_l r0, 98f      ;\
>>>> -        bl    asm_puts     ;\
>>>> -        mov   lr, r3       ;\
>>>> -        RODATA_STR(98, _s)
>>>> +#define PRINT_SECT(section, string)         \
>>>> +        mov   r3, lr                       ;\
>>>> +        adr_l r0, 98f                      ;\
>>>> +        bl    asm_puts                     ;\
>>>> +        mov   lr, r3                       ;\
>>>> +        RODATA_SECT(section, 98, string)
>>>> +
>>>> +#define PRINT(string) PRINT_SECT(.rodata.str, string)
>>>> +#define PRINT_ID(string) PRINT_SECT(.rodata.idmap, string)
>>> I know this is just a macro but does it make sense to have something MMU specific in common header?
>>> I don't expect MPU to use it.
>> For cache coloring, I would like secondary boot CPUs to start directly
>> on the colored Xen. This means that any message used before enabling the
>> MMU will need to be part of the .rodata.idmap.
>>
>> I know that 32-bit is not in scope for the cache coloring series. But I
>> would like to keep 32-bit and 64-bit boot logic fairly similar.
>>
>> With that in mind, would you be happy if I keep PRINT_ID() in macros.h?
>> Note that I would be ok to move in mmu/head.S and move back in macros.h
>> later on. I just wanted to avoid code movement :).
> With the above explanation it does not make sense to move it back and forth, so let's keep it as is.

Thanks! If that's change, we will move PRINT_ID() to mmu/head.S

I have committed the patch.

Cheers,

-- 
Julien Grall


From xen-devel-bounces@lists.xenproject.org Fri Jan 12 13:49:21 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 12 Jan 2024 13:49:21 +0000
Received: from list by lists.xenproject.org with outflank-mailman.666888.1037813 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rOHuC-0008K6-Vm; Fri, 12 Jan 2024 13:49:04 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 666888.1037813; Fri, 12 Jan 2024 13:49:04 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rOHuC-0008Jz-SG; Fri, 12 Jan 2024 13:49:04 +0000
Received: by outflank-mailman (input) for mailman id 666888;
 Fri, 12 Jan 2024 13:49:04 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=flvc=IW=cloud.com=roger.pau@srs-se1.protection.inumbo.net>)
 id 1rOHuB-0008Jt-Pr
 for xen-devel@lists.xenproject.org; Fri, 12 Jan 2024 13:49:04 +0000
Received: from mail-wm1-x334.google.com (mail-wm1-x334.google.com
 [2a00:1450:4864:20::334])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 575e8b57-b151-11ee-98f0-6d05b1d4d9a1;
 Fri, 12 Jan 2024 14:49:01 +0100 (CET)
Received: by mail-wm1-x334.google.com with SMTP id
 5b1f17b1804b1-40e68ca8b45so2838705e9.0
 for <xen-devel@lists.xenproject.org>; Fri, 12 Jan 2024 05:49:01 -0800 (PST)
Received: from localhost ([213.195.127.70]) by smtp.gmail.com with ESMTPSA id
 f18-20020a05600c155200b0040d87100733sm5897935wmg.39.2024.01.12.05.49.00
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Fri, 12 Jan 2024 05:49:00 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 575e8b57-b151-11ee-98f0-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1705067341; x=1705672141; darn=lists.xenproject.org;
        h=in-reply-to:content-transfer-encoding:content-disposition
         :mime-version:references:message-id:subject:cc:to:from:date:from:to
         :cc:subject:date:message-id:reply-to;
        bh=NmISp6PSIwLqgbCKgFHOgb/SuP7DIK2CyX6qRTEryb4=;
        b=kmm12P40UZmRwkULiMo6F/Pt6jjVAGpImw/O9L3JzsBz7QSiWYHfHHepcJHyfD0r0r
         xtkv0GMb8f4vmeYBdJalZNaZD6DxJDpZuiptAJ81W+ejTheNkZ4T+n1fjHU10O4ARhIb
         XGEysQ86bLffSG2aEYkbVVpV1KX8IcHA6mEzM=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705067341; x=1705672141;
        h=in-reply-to:content-transfer-encoding:content-disposition
         :mime-version:references:message-id:subject:cc:to:from:date
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=NmISp6PSIwLqgbCKgFHOgb/SuP7DIK2CyX6qRTEryb4=;
        b=AoqbJoHkCxHehsH6vIq1UjN5kpvb+V+46jsMSPCb5uqlBoEYwYi2UUklqgsS1tgrQJ
         lc4EnMFABUoFGRXqFLV+gUjVfJEZpSQPBqN0qw3o8TyM5lDrBLmN1LlhtSKBczSgNkAF
         Xke3fRuSxM9cl0jekgvkvorS/Db0QXHe0J7968mHKR17s8oSzKoFePbHJfF7HKxAi8uL
         Rmww3j7iSSrV6dHBRu5/wKtm383fZEubYDwfzR2a2oV9ifghW3WH0H0LK2gYtDSxy7ZT
         2bb/TsUGCOH+Wug0mlptYhU/WI5B3VAci2PQ4r/kWGud2FwxTTUGUcZySbsEFnVIaw+7
         Rhlg==
X-Gm-Message-State: AOJu0YwynRtMMf+ZKSIHsGhG3DRtpq+WhuLelhyJwrYvg8Nrz4SeWvMj
	b5Yd7hTLqNGaWy+tf+Vnpml8szCkIDOFmA==
X-Google-Smtp-Source: AGHT+IFABTRgQeLiL4IagPIMFMoHV+0j0qINihvFlql/U4Fsv9t+y3bL01g0XFo0xzj1/ceg5GExHQ==
X-Received: by 2002:a05:600c:1c0a:b0:40e:4cb1:c302 with SMTP id j10-20020a05600c1c0a00b0040e4cb1c302mr884027wms.114.1705067340597;
        Fri, 12 Jan 2024 05:49:00 -0800 (PST)
Date: Fri, 12 Jan 2024 14:48:59 +0100
From: Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
To: Stewart Hildebrand <stewart.hildebrand@amd.com>
Cc: xen-devel@lists.xenproject.org,
	Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>,
	Jan Beulich <jbeulich@suse.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>, Wei Liu <wl@xen.org>,
	George Dunlap <george.dunlap@citrix.com>,
	Julien Grall <julien@xen.org>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Jun Nakajima <jun.nakajima@intel.com>,
	Kevin Tian <kevin.tian@intel.com>, Paul Durrant <paul@xen.org>,
	Volodymyr Babchuk <volodymyr_babchuk@epam.com>
Subject: Re: [PATCH v12 01/15] vpci: use per-domain PCI lock to protect vpci
 structure
Message-ID: <ZaFDS7uZgW5l0eHG@macbook>
References: <20240109215145.430207-1-stewart.hildebrand@amd.com>
 <20240109215145.430207-2-stewart.hildebrand@amd.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <20240109215145.430207-2-stewart.hildebrand@amd.com>

On Tue, Jan 09, 2024 at 04:51:16PM -0500, Stewart Hildebrand wrote:
> From: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>
> 
> Use a previously introduced per-domain read/write lock to check
> whether vpci is present, so we are sure there are no accesses to the
> contents of the vpci struct if not.

Nit: isn't this sentence kind of awkward?  I would word it as:

"Use the per-domain PCI read/write lock to protect the presence of the
pci device vpci field."

> This lock can be used (and in a
> few cases is used right away) so that vpci removal can be performed
> while holding the lock in write mode. Previously such removal could
> race with vpci_read for example.
> 
> When taking both d->pci_lock and pdev->vpci->lock, they should be
> taken in this exact order: d->pci_lock then pdev->vpci->lock to avoid
> possible deadlock situations.
> 
> 1. Per-domain's pci_lock is used to protect pdev->vpci structure
> from being removed.
> 
> 2. Writing the command register and ROM BAR register may trigger
> modify_bars to run, which in turn may access multiple pdevs while
> checking for the existing BAR's overlap. The overlapping check, if
> done under the read lock, requires vpci->lock to be acquired on both
> devices being compared, which may produce a deadlock. It is not
> possible to upgrade read lock to write lock in such a case. So, in
> order to prevent the deadlock, use d->pci_lock instead.

... use d->pci_lock in write mode instead.

> 
> All other code, which doesn't lead to pdev->vpci destruction and does
> not access multiple pdevs at the same time, can still use a
> combination of the read lock and pdev->vpci->lock.
> 
> 3. Drop const qualifier where the new rwlock is used and this is
> appropriate.
> 
> 4. Do not call process_pending_softirqs with any locks held. For that
> unlock prior the call and re-acquire the locks after. After
> re-acquiring the lock there is no need to check if pdev->vpci exists:
>  - in apply_map because of the context it is called (no race condition
>    possible)
>  - for MSI/MSI-X debug code because it is called at the end of
>    pdev->vpci access and no further access to pdev->vpci is made
> 
> 5. Use d->pci_lock around for_each_pdev and pci_get_pdev_by_domain
> while accessing pdevs in vpci code.
> 
> Suggested-by: Roger Pau Monné <roger.pau@citrix.com>
> Suggested-by: Jan Beulich <jbeulich@suse.com>
> Signed-off-by: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>
> Signed-off-by: Volodymyr Babchuk <volodymyr_babchuk@epam.com>
> Signed-off-by: Stewart Hildebrand <stewart.hildebrand@amd.com>

Just one code fix regarding the usage of read_lock (instead of the
trylock version) in vpci_msix_arch_print().. With that and the
comments adjusted:

Reviewed-by: Roger Pau Monné <roger.pau@citrix.com>

> ---
> Changes in v12:
>  - s/pci_rwlock/pci_lock/ in commit message
>  - expand comment about scope of pci_lock in sched.h
>  - in vpci_{read,write}, if hwdom is trying to access a device assigned
>    to dom_xen, holding hwdom->pci_lock is sufficient (no need to hold
>    dom_xen->pci_lock)
>  - reintroduce ASSERT in vmx_pi_update_irte()
>  - reintroduce ASSERT in __pci_enable_msi{x}()
>  - delete note 6. in commit message about removing ASSERTs since we have
>    reintroduced them
> 
> Changes in v11:
>  - Fixed commit message regarding possible spinlocks
>  - Removed parameter from allocate_and_map_msi_pirq(), which was added
>  in the prev version. Now we are taking pcidevs_lock in
>  physdev_map_pirq()
>  - Returned ASSERT to pci_enable_msi
>  - Fixed case when we took read lock instead of write one
>  - Fixed label indentation
> 
> Changes in v10:
>  - Moved printk pas locked area
>  - Returned back ASSERTs
>  - Added new parameter to allocate_and_map_msi_pirq() so it knows if
>  it should take the global pci lock
>  - Added comment about possible improvement in vpci_write
>  - Changed ASSERT(rw_is_locked()) to rw_is_write_locked() in
>    appropriate places
>  - Renamed release_domain_locks() to release_domain_write_locks()
>  - moved domain_done label in vpci_dump_msi() to correct place
> Changes in v9:
>  - extended locked region to protect vpci_remove_device and
>    vpci_add_handlers() calls
>  - vpci_write() takes lock in the write mode to protect
>    potential call to modify_bars()
>  - renamed lock releasing function
>  - removed ASSERT()s from msi code
>  - added trylock in vpci_dump_msi
> 
> Changes in v8:
>  - changed d->vpci_lock to d->pci_lock
>  - introducing d->pci_lock in a separate patch
>  - extended locked region in vpci_process_pending
>  - removed pcidevs_lockis vpci_dump_msi()
>  - removed some changes as they are not needed with
>    the new locking scheme
>  - added handling for hwdom && dom_xen case
> ---
>  xen/arch/x86/hvm/vmsi.c       | 22 +++++++--------
>  xen/arch/x86/hvm/vmx/vmx.c    |  2 +-
>  xen/arch/x86/irq.c            |  8 +++---
>  xen/arch/x86/msi.c            | 14 +++++-----
>  xen/arch/x86/physdev.c        |  2 ++
>  xen/drivers/passthrough/pci.c |  9 +++---
>  xen/drivers/vpci/header.c     | 18 ++++++++++++
>  xen/drivers/vpci/msi.c        | 28 +++++++++++++++++--
>  xen/drivers/vpci/msix.c       | 52 ++++++++++++++++++++++++++++++-----
>  xen/drivers/vpci/vpci.c       | 28 ++++++++++++++++---
>  xen/include/xen/sched.h       |  3 +-
>  11 files changed, 144 insertions(+), 42 deletions(-)
> 
> diff --git a/xen/arch/x86/hvm/vmsi.c b/xen/arch/x86/hvm/vmsi.c
> index 128f23636279..03caf91beefc 100644
> --- a/xen/arch/x86/hvm/vmsi.c
> +++ b/xen/arch/x86/hvm/vmsi.c
> @@ -468,7 +468,7 @@ int msixtbl_pt_register(struct domain *d, struct pirq *pirq, uint64_t gtable)
>      struct msixtbl_entry *entry, *new_entry;
>      int r = -EINVAL;
>  
> -    ASSERT(pcidevs_locked());
> +    ASSERT(pcidevs_locked() || rw_is_locked(&d->pci_lock));
>      ASSERT(rw_is_write_locked(&d->event_lock));
>  
>      if ( !msixtbl_initialised(d) )
> @@ -538,7 +538,7 @@ void msixtbl_pt_unregister(struct domain *d, struct pirq *pirq)
>      struct pci_dev *pdev;
>      struct msixtbl_entry *entry;
>  
> -    ASSERT(pcidevs_locked());
> +    ASSERT(pcidevs_locked() || rw_is_locked(&d->pci_lock));
>      ASSERT(rw_is_write_locked(&d->event_lock));
>  
>      if ( !msixtbl_initialised(d) )
> @@ -684,7 +684,7 @@ static int vpci_msi_update(const struct pci_dev *pdev, uint32_t data,
>  {
>      unsigned int i;
>  
> -    ASSERT(pcidevs_locked());
> +    ASSERT(rw_is_locked(&pdev->domain->pci_lock));
>  
>      if ( (address & MSI_ADDR_BASE_MASK) != MSI_ADDR_HEADER )
>      {
> @@ -725,8 +725,8 @@ void vpci_msi_arch_update(struct vpci_msi *msi, const struct pci_dev *pdev)
>      int rc;
>  
>      ASSERT(msi->arch.pirq != INVALID_PIRQ);
> +    ASSERT(rw_is_locked(&pdev->domain->pci_lock));
>  
> -    pcidevs_lock();
>      for ( i = 0; i < msi->vectors && msi->arch.bound; i++ )
>      {
>          struct xen_domctl_bind_pt_irq unbind = {
> @@ -745,7 +745,6 @@ void vpci_msi_arch_update(struct vpci_msi *msi, const struct pci_dev *pdev)
>  
>      msi->arch.bound = !vpci_msi_update(pdev, msi->data, msi->address,
>                                         msi->vectors, msi->arch.pirq, msi->mask);
> -    pcidevs_unlock();
>  }
>  
>  static int vpci_msi_enable(const struct pci_dev *pdev, unsigned int nr,
> @@ -778,15 +777,14 @@ int vpci_msi_arch_enable(struct vpci_msi *msi, const struct pci_dev *pdev,
>      int rc;
>  
>      ASSERT(msi->arch.pirq == INVALID_PIRQ);
> +    ASSERT(rw_is_locked(&pdev->domain->pci_lock));
>      rc = vpci_msi_enable(pdev, vectors, 0);
>      if ( rc < 0 )
>          return rc;
>      msi->arch.pirq = rc;
>  
> -    pcidevs_lock();
>      msi->arch.bound = !vpci_msi_update(pdev, msi->data, msi->address, vectors,
>                                         msi->arch.pirq, msi->mask);
> -    pcidevs_unlock();
>  
>      return 0;
>  }
> @@ -797,8 +795,8 @@ static void vpci_msi_disable(const struct pci_dev *pdev, int pirq,
>      unsigned int i;
>  
>      ASSERT(pirq != INVALID_PIRQ);
> +    ASSERT(rw_is_locked(&pdev->domain->pci_lock));
>  
> -    pcidevs_lock();
>      for ( i = 0; i < nr && bound; i++ )
>      {
>          struct xen_domctl_bind_pt_irq bind = {
> @@ -814,7 +812,6 @@ static void vpci_msi_disable(const struct pci_dev *pdev, int pirq,
>      write_lock(&pdev->domain->event_lock);
>      unmap_domain_pirq(pdev->domain, pirq);
>      write_unlock(&pdev->domain->event_lock);
> -    pcidevs_unlock();
>  }
>  
>  void vpci_msi_arch_disable(struct vpci_msi *msi, const struct pci_dev *pdev)
> @@ -854,6 +851,7 @@ int vpci_msix_arch_enable_entry(struct vpci_msix_entry *entry,
>      int rc;
>  
>      ASSERT(entry->arch.pirq == INVALID_PIRQ);
> +    ASSERT(rw_is_locked(&pdev->domain->pci_lock));
>      rc = vpci_msi_enable(pdev, vmsix_entry_nr(pdev->vpci->msix, entry),
>                           table_base);
>      if ( rc < 0 )
> @@ -861,7 +859,6 @@ int vpci_msix_arch_enable_entry(struct vpci_msix_entry *entry,
>  
>      entry->arch.pirq = rc;
>  
> -    pcidevs_lock();
>      rc = vpci_msi_update(pdev, entry->data, entry->addr, 1, entry->arch.pirq,
>                           entry->masked);
>      if ( rc )
> @@ -869,7 +866,6 @@ int vpci_msix_arch_enable_entry(struct vpci_msix_entry *entry,
>          vpci_msi_disable(pdev, entry->arch.pirq, 1, false);
>          entry->arch.pirq = INVALID_PIRQ;
>      }
> -    pcidevs_unlock();
>  
>      return rc;
>  }
> @@ -895,6 +891,8 @@ int vpci_msix_arch_print(const struct vpci_msix *msix)
>  {
>      unsigned int i;
>  
> +    ASSERT(rw_is_locked(&msix->pdev->domain->pci_lock));
> +
>      for ( i = 0; i < msix->max_entries; i++ )
>      {
>          const struct vpci_msix_entry *entry = &msix->entries[i];
> @@ -913,7 +911,9 @@ int vpci_msix_arch_print(const struct vpci_msix *msix)
>              struct pci_dev *pdev = msix->pdev;
>  
>              spin_unlock(&msix->pdev->vpci->lock);
> +            read_unlock(&pdev->domain->pci_lock);
>              process_pending_softirqs();
> +            read_lock(&pdev->domain->pci_lock);

This should be a trylock, like it's on the caller (vpci_dump_msi()).

>              /* NB: we assume that pdev cannot go away for an alive domain. */
>              if ( !pdev->vpci || !spin_trylock(&pdev->vpci->lock) )
>                  return -EBUSY;
> diff --git a/xen/arch/x86/hvm/vmx/vmx.c b/xen/arch/x86/hvm/vmx/vmx.c
> index 8ff675883c2b..890faef48b82 100644
> --- a/xen/arch/x86/hvm/vmx/vmx.c
> +++ b/xen/arch/x86/hvm/vmx/vmx.c
> @@ -413,7 +413,7 @@ static int cf_check vmx_pi_update_irte(const struct vcpu *v,
>  
>      spin_unlock_irq(&desc->lock);
>  
> -    ASSERT(pcidevs_locked());
> +    ASSERT(pcidevs_locked() || rw_is_locked(&msi_desc->dev->domain->pci_lock));
>  
>      return iommu_update_ire_from_msi(msi_desc, &msi_desc->msg);
>  
> diff --git a/xen/arch/x86/irq.c b/xen/arch/x86/irq.c
> index 50e49e1a4b6f..4d89d9af99fe 100644
> --- a/xen/arch/x86/irq.c
> +++ b/xen/arch/x86/irq.c
> @@ -2166,7 +2166,7 @@ int map_domain_pirq(
>          struct pci_dev *pdev;
>          unsigned int nr = 0;
>  
> -        ASSERT(pcidevs_locked());
> +        ASSERT(pcidevs_locked() || rw_is_locked(&d->pci_lock));
>  
>          ret = -ENODEV;
>          if ( !cpu_has_apic )
> @@ -2323,7 +2323,7 @@ int unmap_domain_pirq(struct domain *d, int pirq)
>      if ( (pirq < 0) || (pirq >= d->nr_pirqs) )
>          return -EINVAL;
>  
> -    ASSERT(pcidevs_locked());
> +    ASSERT(pcidevs_locked() || rw_is_locked(&d->pci_lock));
>      ASSERT(rw_is_write_locked(&d->event_lock));
>  
>      info = pirq_info(d, pirq);
> @@ -2888,6 +2888,8 @@ int allocate_and_map_msi_pirq(struct domain *d, int index, int *pirq_p,
>  {
>      int irq, pirq, ret;
>  
> +    ASSERT(pcidevs_locked() || rw_is_locked(&d->pci_lock));
> +
>      switch ( type )
>      {
>      case MAP_PIRQ_TYPE_MSI:
> @@ -2917,7 +2919,6 @@ int allocate_and_map_msi_pirq(struct domain *d, int index, int *pirq_p,
>  
>      msi->irq = irq;
>  
> -    pcidevs_lock();
>      /* Verify or get pirq. */
>      write_lock(&d->event_lock);
>      pirq = allocate_pirq(d, index, *pirq_p, irq, type, &msi->entry_nr);
> @@ -2933,7 +2934,6 @@ int allocate_and_map_msi_pirq(struct domain *d, int index, int *pirq_p,
>  
>   done:
>      write_unlock(&d->event_lock);
> -    pcidevs_unlock();
>      if ( ret )
>      {
>          switch ( type )
> diff --git a/xen/arch/x86/msi.c b/xen/arch/x86/msi.c
> index 335c0868a225..7da2affa2e82 100644
> --- a/xen/arch/x86/msi.c
> +++ b/xen/arch/x86/msi.c
> @@ -602,7 +602,7 @@ static int msi_capability_init(struct pci_dev *dev,
>      unsigned int i, mpos;
>      uint16_t control;
>  
> -    ASSERT(pcidevs_locked());
> +    ASSERT(pcidevs_locked() || rw_is_locked(&dev->domain->pci_lock));
>      pos = pci_find_cap_offset(dev->sbdf, PCI_CAP_ID_MSI);
>      if ( !pos )
>          return -ENODEV;
> @@ -771,7 +771,7 @@ static int msix_capability_init(struct pci_dev *dev,
>      if ( !pos )
>          return -ENODEV;
>  
> -    ASSERT(pcidevs_locked());
> +    ASSERT(pcidevs_locked() || rw_is_locked(&dev->domain->pci_lock));
>  
>      control = pci_conf_read16(dev->sbdf, msix_control_reg(pos));
>      /*
> @@ -988,11 +988,11 @@ static int __pci_enable_msi(struct pci_dev *pdev, struct msi_info *msi,
>  {
>      struct msi_desc *old_desc;
>  
> -    ASSERT(pcidevs_locked());
> -
>      if ( !pdev )
>          return -ENODEV;
>  
> +    ASSERT(pcidevs_locked() || rw_is_locked(&pdev->domain->pci_lock));
> +
>      old_desc = find_msi_entry(pdev, msi->irq, PCI_CAP_ID_MSI);
>      if ( old_desc )
>      {
> @@ -1043,11 +1043,11 @@ static int __pci_enable_msix(struct pci_dev *pdev, struct msi_info *msi,
>  {
>      struct msi_desc *old_desc;
>  
> -    ASSERT(pcidevs_locked());
> -
>      if ( !pdev || !pdev->msix )
>          return -ENODEV;
>  
> +    ASSERT(pcidevs_locked() || rw_is_locked(&pdev->domain->pci_lock));
> +
>      if ( msi->entry_nr >= pdev->msix->nr_entries )
>          return -EINVAL;
>  
> @@ -1154,7 +1154,7 @@ int pci_prepare_msix(u16 seg, u8 bus, u8 devfn, bool off)
>  int pci_enable_msi(struct pci_dev *pdev, struct msi_info *msi,
>                     struct msi_desc **desc)
>  {
> -    ASSERT(pcidevs_locked());
> +    ASSERT(pcidevs_locked() || rw_is_locked(&pdev->domain->pci_lock));
>  
>      if ( !use_msi )
>          return -EPERM;
> diff --git a/xen/arch/x86/physdev.c b/xen/arch/x86/physdev.c
> index 47c4da0af7e1..369c9e788c1c 100644
> --- a/xen/arch/x86/physdev.c
> +++ b/xen/arch/x86/physdev.c
> @@ -123,7 +123,9 @@ int physdev_map_pirq(domid_t domid, int type, int *index, int *pirq_p,
>  
>      case MAP_PIRQ_TYPE_MSI:
>      case MAP_PIRQ_TYPE_MULTI_MSI:
> +        pcidevs_lock();
>          ret = allocate_and_map_msi_pirq(d, *index, pirq_p, type, msi);
> +        pcidevs_unlock();
>          break;
>  
>      default:
> diff --git a/xen/drivers/passthrough/pci.c b/xen/drivers/passthrough/pci.c
> index 1439d1ef2b26..3a973324bca1 100644
> --- a/xen/drivers/passthrough/pci.c
> +++ b/xen/drivers/passthrough/pci.c
> @@ -750,7 +750,6 @@ int pci_add_device(u16 seg, u8 bus, u8 devfn,
>          pdev->domain = hardware_domain;
>          write_lock(&hardware_domain->pci_lock);
>          list_add(&pdev->domain_list, &hardware_domain->pdev_list);
> -        write_unlock(&hardware_domain->pci_lock);
>  
>          /*
>           * For devices not discovered by Xen during boot, add vPCI handlers
> @@ -759,18 +758,18 @@ int pci_add_device(u16 seg, u8 bus, u8 devfn,
>          ret = vpci_add_handlers(pdev);
>          if ( ret )
>          {
> -            printk(XENLOG_ERR "Setup of vPCI failed: %d\n", ret);
> -            write_lock(&hardware_domain->pci_lock);
>              list_del(&pdev->domain_list);
>              write_unlock(&hardware_domain->pci_lock);
>              pdev->domain = NULL;
> +            printk(XENLOG_ERR "Setup of vPCI failed: %d\n", ret);
>              goto out;
>          }
> +        write_unlock(&hardware_domain->pci_lock);
>          ret = iommu_add_device(pdev);
>          if ( ret )
>          {
> -            vpci_remove_device(pdev);
>              write_lock(&hardware_domain->pci_lock);
> +            vpci_remove_device(pdev);
>              list_del(&pdev->domain_list);
>              write_unlock(&hardware_domain->pci_lock);
>              pdev->domain = NULL;
> @@ -1146,7 +1145,9 @@ static void __hwdom_init setup_one_hwdom_device(const struct setup_hwdom *ctxt,
>      } while ( devfn != pdev->devfn &&
>                PCI_SLOT(devfn) == PCI_SLOT(pdev->devfn) );
>  
> +    write_lock(&ctxt->d->pci_lock);
>      err = vpci_add_handlers(pdev);
> +    write_unlock(&ctxt->d->pci_lock);
>      if ( err )
>          printk(XENLOG_ERR "setup of vPCI for d%d failed: %d\n",
>                 ctxt->d->domain_id, err);
> diff --git a/xen/drivers/vpci/header.c b/xen/drivers/vpci/header.c
> index 58195549d50a..8f5850b8cf6d 100644
> --- a/xen/drivers/vpci/header.c
> +++ b/xen/drivers/vpci/header.c
> @@ -173,6 +173,7 @@ bool vpci_process_pending(struct vcpu *v)
>          if ( rc == -ERESTART )
>              return true;
>  
> +        write_lock(&v->domain->pci_lock);
>          spin_lock(&v->vpci.pdev->vpci->lock);
>          /* Disable memory decoding unconditionally on failure. */
>          modify_decoding(v->vpci.pdev,
> @@ -191,6 +192,7 @@ bool vpci_process_pending(struct vcpu *v)
>               * failure.
>               */
>              vpci_remove_device(v->vpci.pdev);
> +        write_unlock(&v->domain->pci_lock);
>      }
>  
>      return false;
> @@ -202,8 +204,20 @@ static int __init apply_map(struct domain *d, const struct pci_dev *pdev,
>      struct map_data data = { .d = d, .map = true };
>      int rc;
>  
> +    ASSERT(rw_is_write_locked(&d->pci_lock));
> +
>      while ( (rc = rangeset_consume_ranges(mem, map_range, &data)) == -ERESTART )
> +    {
> +        /*
> +         * It's safe to drop and reacquire the lock in this context
> +         * without risking pdev disappearing because devices cannot be
> +         * removed until the initial domain has been started.
> +         */
> +        write_unlock(&d->pci_lock);
>          process_pending_softirqs();
> +        write_lock(&d->pci_lock);

Hm, I should have noticed before, but we already call
process_pending_softirqs() with the pdev->vpci->lock held here, so it
would make sense to drop it also.

Fix should be in a separate patch.

> +    }
> +
>      rangeset_destroy(mem);
>      if ( !rc )
>          modify_decoding(pdev, cmd, false);
> @@ -244,6 +258,8 @@ static int modify_bars(const struct pci_dev *pdev, uint16_t cmd, bool rom_only)
>      unsigned int i;
>      int rc;
>  
> +    ASSERT(rw_is_write_locked(&pdev->domain->pci_lock));
> +
>      if ( !mem )
>          return -ENOMEM;
>  
> @@ -524,6 +540,8 @@ static int cf_check init_header(struct pci_dev *pdev)
>      int rc;
>      bool mask_cap_list = false;
>  
> +    ASSERT(rw_is_write_locked(&pdev->domain->pci_lock));
> +
>      switch ( pci_conf_read8(pdev->sbdf, PCI_HEADER_TYPE) & 0x7f )
>      {
>      case PCI_HEADER_TYPE_NORMAL:
> diff --git a/xen/drivers/vpci/msi.c b/xen/drivers/vpci/msi.c
> index a253ccbd7db7..6ff71e5f9ab7 100644
> --- a/xen/drivers/vpci/msi.c
> +++ b/xen/drivers/vpci/msi.c
> @@ -263,7 +263,7 @@ REGISTER_VPCI_INIT(init_msi, VPCI_PRIORITY_LOW);
>  
>  void vpci_dump_msi(void)
>  {
> -    const struct domain *d;
> +    struct domain *d;
>  
>      rcu_read_lock(&domlist_read_lock);
>      for_each_domain ( d )
> @@ -275,6 +275,9 @@ void vpci_dump_msi(void)
>  
>          printk("vPCI MSI/MSI-X d%d\n", d->domain_id);
>  
> +        if ( !read_trylock(&d->pci_lock) )
> +            continue;
> +
>          for_each_pdev ( d, pdev )
>          {
>              const struct vpci_msi *msi;
> @@ -316,14 +319,33 @@ void vpci_dump_msi(void)
>                       * holding the lock.
>                       */
>                      printk("unable to print all MSI-X entries: %d\n", rc);
> -                    process_pending_softirqs();
> -                    continue;
> +                    goto pdev_done;
>                  }
>              }
>  
>              spin_unlock(&pdev->vpci->lock);
> +        pdev_done:
> +            /*
> +             * Unlock lock to process pending softirqs. This is
> +             * potentially unsafe, as d->pdev_list can be changed in
> +             * meantime.
> +             */
> +            read_unlock(&d->pci_lock);
>              process_pending_softirqs();
> +            if ( !read_trylock(&d->pci_lock) )
> +            {
> +                printk("unable to access other devices for the domain\n");
> +                goto domain_done;
> +            }
>          }
> +        read_unlock(&d->pci_lock);
> +    domain_done:
> +        /*
> +         * We need this label at the end of the loop, but some
> +         * compilers might not be happy about label at the end of the
> +         * compound statement so we adding an empty statement here.
> +         */
> +        ;
>      }
>      rcu_read_unlock(&domlist_read_lock);
>  }
> diff --git a/xen/drivers/vpci/msix.c b/xen/drivers/vpci/msix.c
> index d1126a417da9..b6abab47efdd 100644
> --- a/xen/drivers/vpci/msix.c
> +++ b/xen/drivers/vpci/msix.c
> @@ -147,6 +147,8 @@ static struct vpci_msix *msix_find(const struct domain *d, unsigned long addr)
>  {
>      struct vpci_msix *msix;
>  
> +    ASSERT(rw_is_locked(&d->pci_lock));
> +
>      list_for_each_entry ( msix, &d->arch.hvm.msix_tables, next )
>      {
>          const struct vpci_bar *bars = msix->pdev->vpci->header.bars;
> @@ -163,7 +165,13 @@ static struct vpci_msix *msix_find(const struct domain *d, unsigned long addr)
>  
>  static int cf_check msix_accept(struct vcpu *v, unsigned long addr)
>  {
> -    return !!msix_find(v->domain, addr);
> +    int rc;
> +
> +    read_lock(&v->domain->pci_lock);
> +    rc = !!msix_find(v->domain, addr);
> +    read_unlock(&v->domain->pci_lock);
> +
> +    return rc;
>  }
>  
>  static bool access_allowed(const struct pci_dev *pdev, unsigned long addr,
> @@ -358,21 +366,35 @@ static int adjacent_read(const struct domain *d, const struct vpci_msix *msix,
>  static int cf_check msix_read(
>      struct vcpu *v, unsigned long addr, unsigned int len, unsigned long *data)
>  {
> -    const struct domain *d = v->domain;
> -    struct vpci_msix *msix = msix_find(d, addr);
> +    struct domain *d = v->domain;
> +    struct vpci_msix *msix;
>      const struct vpci_msix_entry *entry;
>      unsigned int offset;
>  
>      *data = ~0UL;
>  
> +    read_lock(&d->pci_lock);
> +
> +    msix = msix_find(d, addr);
>      if ( !msix )
> +    {
> +        read_unlock(&d->pci_lock);
>          return X86EMUL_RETRY;
> +    }
>  
>      if ( adjacent_handle(msix, addr) )
> -        return adjacent_read(d, msix, addr, len, data);
> +    {
> +        int rc = adjacent_read(d, msix, addr, len, data);
> +
> +        read_unlock(&d->pci_lock);
> +        return rc;
> +    }
>  
>      if ( !access_allowed(msix->pdev, addr, len) )
> +    {
> +        read_unlock(&d->pci_lock);
>          return X86EMUL_OKAY;
> +    }
>  
>      spin_lock(&msix->pdev->vpci->lock);
>      entry = get_entry(msix, addr);
> @@ -404,6 +426,7 @@ static int cf_check msix_read(
>          break;
>      }
>      spin_unlock(&msix->pdev->vpci->lock);
> +    read_unlock(&d->pci_lock);
>  
>      return X86EMUL_OKAY;
>  }
> @@ -491,19 +514,33 @@ static int adjacent_write(const struct domain *d, const struct vpci_msix *msix,
>  static int cf_check msix_write(
>      struct vcpu *v, unsigned long addr, unsigned int len, unsigned long data)
>  {
> -    const struct domain *d = v->domain;
> -    struct vpci_msix *msix = msix_find(d, addr);
> +    struct domain *d = v->domain;
> +    struct vpci_msix *msix;
>      struct vpci_msix_entry *entry;
>      unsigned int offset;
>  
> +    read_lock(&d->pci_lock);
> +
> +    msix = msix_find(d, addr);
>      if ( !msix )
> +    {
> +        read_unlock(&d->pci_lock);
>          return X86EMUL_RETRY;
> +    }
>  
>      if ( adjacent_handle(msix, addr) )
> -        return adjacent_write(d, msix, addr, len, data);
> +    {
> +        int rc = adjacent_write(d, msix, addr, len, data);
> +
> +        read_unlock(&d->pci_lock);
> +        return rc;
> +    }
>  
>      if ( !access_allowed(msix->pdev, addr, len) )
> +    {
> +        read_unlock(&d->pci_lock);
>          return X86EMUL_OKAY;
> +    }
>  
>      spin_lock(&msix->pdev->vpci->lock);
>      entry = get_entry(msix, addr);
> @@ -579,6 +616,7 @@ static int cf_check msix_write(
>          break;
>      }
>      spin_unlock(&msix->pdev->vpci->lock);
> +    read_unlock(&d->pci_lock);
>  
>      return X86EMUL_OKAY;
>  }
> diff --git a/xen/drivers/vpci/vpci.c b/xen/drivers/vpci/vpci.c
> index 72ef277c4f8e..a1a004460491 100644
> --- a/xen/drivers/vpci/vpci.c
> +++ b/xen/drivers/vpci/vpci.c
> @@ -42,6 +42,8 @@ extern vpci_register_init_t *const __end_vpci_array[];
>  
>  void vpci_remove_device(struct pci_dev *pdev)
>  {
> +    ASSERT(rw_is_write_locked(&pdev->domain->pci_lock));
> +
>      if ( !has_vpci(pdev->domain) || !pdev->vpci )
>          return;
>  
> @@ -77,6 +79,8 @@ int vpci_add_handlers(struct pci_dev *pdev)
>      const unsigned long *ro_map;
>      int rc = 0;
>  
> +    ASSERT(rw_is_write_locked(&pdev->domain->pci_lock));
> +
>      if ( !has_vpci(pdev->domain) )
>          return 0;
>  
> @@ -361,7 +365,7 @@ static uint32_t merge_result(uint32_t data, uint32_t new, unsigned int size,
>  
>  uint32_t vpci_read(pci_sbdf_t sbdf, unsigned int reg, unsigned int size)
>  {
> -    const struct domain *d = current->domain;
> +    struct domain *d = current->domain;
>      const struct pci_dev *pdev;
>      const struct vpci_register *r;
>      unsigned int data_offset = 0;
> @@ -375,13 +379,19 @@ uint32_t vpci_read(pci_sbdf_t sbdf, unsigned int reg, unsigned int size)
>  
>      /*
>       * Find the PCI dev matching the address, which for hwdom also requires
> -     * consulting DomXEN.  Passthrough everything that's not trapped.
> +     * consulting DomXEN. Passthrough everything that's not trapped.

The double space in the comment above was intentional.

> +     * If this is hwdom and the device is assigned to dom_xen, acquiring hwdom's

For consistency with the above sentence, could you please use DomXEN
here?

> +     * pci_lock is sufficient.
>       */
> +    read_lock(&d->pci_lock);
>      pdev = pci_get_pdev(d, sbdf);
>      if ( !pdev && is_hardware_domain(d) )
>          pdev = pci_get_pdev(dom_xen, sbdf);
>      if ( !pdev || !pdev->vpci )
> +    {
> +        read_unlock(&d->pci_lock);
>          return vpci_read_hw(sbdf, reg, size);
> +    }
>  
>      spin_lock(&pdev->vpci->lock);
>  
> @@ -428,6 +438,7 @@ uint32_t vpci_read(pci_sbdf_t sbdf, unsigned int reg, unsigned int size)
>          ASSERT(data_offset < size);
>      }
>      spin_unlock(&pdev->vpci->lock);
> +    read_unlock(&d->pci_lock);
>  
>      if ( data_offset < size )
>      {
> @@ -470,7 +481,7 @@ static void vpci_write_helper(const struct pci_dev *pdev,
>  void vpci_write(pci_sbdf_t sbdf, unsigned int reg, unsigned int size,
>                  uint32_t data)
>  {
> -    const struct domain *d = current->domain;
> +    struct domain *d = current->domain;
>      const struct pci_dev *pdev;
>      const struct vpci_register *r;
>      unsigned int data_offset = 0;
> @@ -483,8 +494,14 @@ void vpci_write(pci_sbdf_t sbdf, unsigned int reg, unsigned int size,
>  
>      /*
>       * Find the PCI dev matching the address, which for hwdom also requires
> -     * consulting DomXEN.  Passthrough everything that's not trapped.
> +     * consulting DomXEN. Passthrough everything that's not trapped.

Same here re the double space removal and the usage of dom_xen below.

Thanks, Roger.


From xen-devel-bounces@lists.xenproject.org Fri Jan 12 13:50:52 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 12 Jan 2024 13:50:52 +0000
Received: from list by lists.xenproject.org with outflank-mailman.666892.1037823 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rOHvv-0001IC-Fq; Fri, 12 Jan 2024 13:50:51 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 666892.1037823; Fri, 12 Jan 2024 13:50:51 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rOHvv-0001I5-Ca; Fri, 12 Jan 2024 13:50:51 +0000
Received: by outflank-mailman (input) for mailman id 666892;
 Fri, 12 Jan 2024 13:50:50 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=Vfvq=IW=amd.com=Stewart.Hildebrand@srs-se1.protection.inumbo.net>)
 id 1rOHvu-0001Hz-3n
 for xen-devel@lists.xenproject.org; Fri, 12 Jan 2024 13:50:50 +0000
Received: from NAM11-CO1-obe.outbound.protection.outlook.com
 (mail-co1nam11on20601.outbound.protection.outlook.com
 [2a01:111:f403:2416::601])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 95c79a8a-b151-11ee-9b0f-b553b5be7939;
 Fri, 12 Jan 2024 14:50:47 +0100 (CET)
Received: from DM6PR06CA0089.namprd06.prod.outlook.com (2603:10b6:5:336::22)
 by IA0PR12MB7700.namprd12.prod.outlook.com (2603:10b6:208:430::20) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7159.23; Fri, 12 Jan
 2024 13:50:43 +0000
Received: from CO1PEPF000042AD.namprd03.prod.outlook.com
 (2603:10b6:5:336:cafe::f2) by DM6PR06CA0089.outlook.office365.com
 (2603:10b6:5:336::22) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7181.21 via Frontend
 Transport; Fri, 12 Jan 2024 13:50:42 +0000
Received: from SATLEXMB04.amd.com (165.204.84.17) by
 CO1PEPF000042AD.mail.protection.outlook.com (10.167.243.42) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.7181.14 via Frontend Transport; Fri, 12 Jan 2024 13:50:42 +0000
Received: from SATLEXMB03.amd.com (10.181.40.144) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.34; Fri, 12 Jan
 2024 07:50:41 -0600
Received: from [172.23.76.218] (10.180.168.240) by SATLEXMB03.amd.com
 (10.181.40.144) with Microsoft SMTP Server id 15.1.2507.34 via Frontend
 Transport; Fri, 12 Jan 2024 07:50:40 -0600
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 95c79a8a-b151-11ee-9b0f-b553b5be7939
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=HSlIpMIsKL5cpOr+lbMSwoY4hd5td8fIdvVAqHCGRLPXvsd+M/4lFsRaVMcyOTYq2VIwAN5LsvyPIbhdJSYtQ7mwUOMT+UHnI978GmwJsn8x9RLFhBPkoDST3PzkAzcDq+JLmfmjxcj3RFER5uyMX7OvusvIkCIhrVxZncbZx6PSs3MEJ2249twgCQ459fv05zKGF/JG6rOu8vSHiDJ8P5cfjMJzxwxCUvnQ38rvSqfZE90RsxaLtUkjgRYCs2Z4WevNyRrsBga/hyxCwZ344LNZatIOUmZ+YGM/alAY0eLrUylhORY+ywt7WAHrBJOo/wZCkwHbN25yxIkjJGNoPw==
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=gN6DhG3pJAvtFPFPedn4aa2WTMysDp5MNUjyuuO+5fI=;
 b=Ds84SYhvBHRjT/78b5zXbW/irbzcrbM67S+z3Daq/qK7VjYRKEx/y56iBu4fcRJsWfSkZ8XYXMvMloS7ZT1hMOqR8tMhZ3U8xbUe4fvwbBGLzDzZudbAI7ofhpV/io80MTRNyJYEdcqRTNcJjdYIbnCF3uRlaL4yxBvAekw+wdy8fofHQNzQ30d+RYlLafASMGUnlloU4ayGCSDv563rl/U3suVR5DrfHzOv4fJBIQ7BWRtSw/CiwHp/GnaBo72+CuSd19SgTgle3C5jpTPLkp9BR7g5CZxtbKyy+x4Kt3HwiZwQx1jEhIQN1ac7HwemWPOZOrrIN98vPHFZsktjYg==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=cloud.com 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)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=gN6DhG3pJAvtFPFPedn4aa2WTMysDp5MNUjyuuO+5fI=;
 b=kX8s9sMHPgAtvXJhG40WebRiqmG5+Dtp6qMTBKf4EvJ3BsDl4GdStakCcrNiHBVRdLBfgNxRf34Si4R2qt3O0oDLroybmmMpbzVpGOd5d1ax9gj1UGZvb/9qfr27WUmiYRCebZFLTM83TqPt6Pe9k5i5vPT0i4SO4yIU+XhpHOU=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C
Message-ID: <39c114b7-2384-4209-bae5-edabb243226e@amd.com>
Date: Fri, 12 Jan 2024 08:50:39 -0500
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v12 11/15] vpci: add initial support for virtual PCI bus
 topology
Content-Language: en-US
To: George Dunlap <george.dunlap@cloud.com>
CC: <xen-devel@lists.xenproject.org>, Oleksandr Andrushchenko
	<oleksandr_andrushchenko@epam.com>, Andrew Cooper
	<andrew.cooper3@citrix.com>, Jan Beulich <jbeulich@suse.com>, Julien Grall
	<julien@xen.org>, Stefano Stabellini <sstabellini@kernel.org>, Wei Liu
	<wl@xen.org>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
	Volodymyr Babchuk <volodymyr_babchuk@epam.com>
References: <20240109215145.430207-1-stewart.hildebrand@amd.com>
 <20240109215145.430207-12-stewart.hildebrand@amd.com>
 <CA+zSX=Z33cixDd1w10zwC-c80z-sB4E8Nu__nTNi30n-FW6GwA@mail.gmail.com>
From: Stewart Hildebrand <stewart.hildebrand@amd.com>
In-Reply-To: <CA+zSX=Z33cixDd1w10zwC-c80z-sB4E8Nu__nTNi30n-FW6GwA@mail.gmail.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CO1PEPF000042AD:EE_|IA0PR12MB7700:EE_
X-MS-Office365-Filtering-Correlation-Id: 5b57d654-5328-4275-72ef-08dc13757814
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam: BCL:0;
X-Microsoft-Antispam-Message-Info:
	pWh20Ja52tPJ8EXKY/TMtWm+ph+V5u13mJBVIly8aHaUaW3c0x81GzYcdfdas6HooHvi9qk5ZHFXWxfP6Kwsev9wm6JURtSOBujCpD6WG0jITshORYiHBlgfkT1HuKdNcrqiw01PF76xdjEM4tngVvXK4gzNe+pP9cC3/pen//JhMHnD+1OyqHjS+qQ+UzJyQ1xXf+8jSN21KL7mvvA2HaEVDuCYjC2J5QjKwys1om59Dfco1+V/cEgG/7dj6NfMtwQeG9z93LphPd88A9OoJgAtDyJhSraNtf3rE9zLtRbwAXxg8gQhbDnIPN7AkysMlzBSZDnZp9onIb+6cN/T0ZgNySyUbgIWdfki+cFQ8VJmvu6/vQmyTbh8Q2JOB50DSbZN/hXs/SFmsKdVTI+nUCY4gRRTtPo3hKhlJiVVYiOaQEkIdXgAk4DmGN+GauWFGRVsiAIezjSh6BkfA3tZnISmivXYd48OyNZAIxCUtILf9rqZa866w5XpT5j1PZ/PA0SR5A8J7LWY5vBL7b4JofX8fB65mudNtIpMHno1UTWTJNAUMWhx7baSVkPlD5X8dri0ZGsbGniV1260AkM8W6/b5AfB2WvvTLZodP5OGs3136gPr1Cuas1Zy7c3rjHE+EVJtgvsxMCiX6aWwB0XWusQGkNEfpr69Oq9Cien9h9xj/O9rUy4woNjMJOJY3mb6+Ez0skeL3PkTqAwHvHosUC+cifWJz7KcOl9klGrDksCqW+TNgwcuetJzi5zVDc5o3CXz3/DQoHZIY80QjCNmPctdIJnXNXpxA28F4uTLUg=
X-Forefront-Antispam-Report:
	CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230031)(4636009)(346002)(376002)(396003)(39860400002)(136003)(230922051799003)(64100799003)(82310400011)(186009)(451199024)(1800799012)(40470700004)(36840700001)(46966006)(40480700001)(40460700003)(31686004)(83380400001)(356005)(86362001)(81166007)(41300700001)(70586007)(70206006)(36756003)(31696002)(47076005)(36860700001)(316002)(426003)(26005)(336012)(478600001)(53546011)(7416002)(2616005)(2906002)(82740400003)(5660300002)(6916009)(16576012)(8676002)(4326008)(8936002)(54906003)(44832011)(43740500002)(36900700001);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Jan 2024 13:50:42.4443
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 5b57d654-5328-4275-72ef-08dc13757814
X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com]
X-MS-Exchange-CrossTenant-AuthSource:
	CO1PEPF000042AD.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA0PR12MB7700

On 1/12/24 06:46, George Dunlap wrote:
> On Tue, Jan 9, 2024 at 9:54 PM Stewart Hildebrand
> <stewart.hildebrand@amd.com> wrote:
>> diff --git a/xen/include/xen/sched.h b/xen/include/xen/sched.h
>> index 37f5922f3206..b58a822847be 100644
>> --- a/xen/include/xen/sched.h
>> +++ b/xen/include/xen/sched.h
>> @@ -484,6 +484,14 @@ struct domain
>>       * 2. pdev->vpci->lock
>>       */
>>      rwlock_t pci_lock;
>> +#ifdef CONFIG_HAS_VPCI_GUEST_SUPPORT
>> +    /*
>> +     * The bitmap which shows which device numbers are already used by the
>> +     * virtual PCI bus topology and is used to assign a unique SBDF to the
>> +     * next passed through virtual PCI device.
>> +     */
>> +    DECLARE_BITMAP(vpci_dev_assigned_map, VPCI_MAX_VIRT_DEV);
>> +#endif
>>  #endif
> 
> Without digging through the whole series, how big do we expect this
> bitmap to be on typical systems?
> 
> If it's only going to be a handful of bytes, keeping it around for all
> guests would be OK; but it's large, it would be better as a pointer,
> since it's unused on the vast majority of guests.

Since the bitmap is an unsigned long type it will typically be 8 bytes, although only 4 bytes are actually used. VPCI_MAX_VIRT_DEV is currently fixed at 32, as we are only tracking D (not the whole SBDF) in the bitmap so far.


From xen-devel-bounces@lists.xenproject.org Fri Jan 12 14:40:51 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 12 Jan 2024 14:40:51 +0000
Received: from list by lists.xenproject.org with outflank-mailman.666903.1037838 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rOIiA-0000xW-43; Fri, 12 Jan 2024 14:40:42 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 666903.1037838; Fri, 12 Jan 2024 14:40:42 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rOIiA-0000xP-1L; Fri, 12 Jan 2024 14:40:42 +0000
Received: by outflank-mailman (input) for mailman id 666903;
 Fri, 12 Jan 2024 14:40:40 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=UAL2=IW=cloud.com=anthony.perard@srs-se1.protection.inumbo.net>)
 id 1rOIi8-0000xI-E9
 for xen-devel@lists.xenproject.org; Fri, 12 Jan 2024 14:40:40 +0000
Received: from mail-wm1-x32f.google.com (mail-wm1-x32f.google.com
 [2a00:1450:4864:20::32f])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 8d4b0ae0-b158-11ee-9b0f-b553b5be7939;
 Fri, 12 Jan 2024 15:40:38 +0100 (CET)
Received: by mail-wm1-x32f.google.com with SMTP id
 5b1f17b1804b1-40d6b4e2945so75610265e9.0
 for <xen-devel@lists.xenproject.org>; Fri, 12 Jan 2024 06:40:38 -0800 (PST)
Received: from perard.uk.xensource.com (default-46-102-197-194.interdsl.co.uk.
 [46.102.197.194]) by smtp.gmail.com with ESMTPSA id
 j17-20020a05600c1c1100b0040c46719966sm9949056wms.25.2024.01.12.06.40.36
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Fri, 12 Jan 2024 06:40:36 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 8d4b0ae0-b158-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1705070437; x=1705675237; darn=lists.xenproject.org;
        h=in-reply-to:content-transfer-encoding:content-disposition
         :mime-version:references:message-id:subject:cc:to:from:date:from:to
         :cc:subject:date:message-id:reply-to;
        bh=0WLkMv+Bv4decaU9ImEkTxl8k8dzoFw6XgyEPxak7mA=;
        b=WWhbsSPqXel0ND1y1u8Xq2LW4JnQRYVSCCnM/HFMKQeO9wIATStypWOJD5KPMab+Og
         7celGLjpZt8csUPaj2bXXhAbszt38P3C4oRWQ9jPS+qfEjbeo4qelRkyR8paevLrNlV2
         2PZm87hCtdZZA2/XGcNXumXQ7pSkkxYHLT0oI=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705070437; x=1705675237;
        h=in-reply-to:content-transfer-encoding:content-disposition
         :mime-version:references:message-id:subject:cc:to:from:date
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=0WLkMv+Bv4decaU9ImEkTxl8k8dzoFw6XgyEPxak7mA=;
        b=TapXcQoN1aakyiViJkanJ47wqJmM+W6hfBuy62O1G5i2ivm6OW0TrLSP5ggNMhAeth
         BeodxmEYMWnlAtDZ4Bq7VcT0R+H/XVsfsCKmsrmSr9uc59SFg1qLXCgs2GefhNhXm9kM
         5CmSyI3F02jBymXAzpJSGfRIZIkdpDDfABTpc9YU8pm4E5XM66wI6W3ofjTfBpSJgNLp
         duGVYe6mpT1M4U7fnFzOHQPLbfwKMvlHHPE0MFOEsX4ATsHXO4la8AgiT2I0IT7OLRhv
         VL5GnNzyML+DZvZpfrRg0b5B1cPwtlmJJmZ7yCwDoORBpq1QqefJtyL8tyYZ834YJzdW
         E1iA==
X-Gm-Message-State: AOJu0YwH2VNvYPKfQXd+CaEIioRYhIZHBVzEwurs0R0bEUCRfyguVp4N
	NEH/HAChCMpBe6ae0Ba2xdnHNGhoDEZyKw==
X-Google-Smtp-Source: AGHT+IFypSk3he7+ExpeN1ER61UgFNd+yXDwBbwa2YzeUoNWuRvUgWdj9BEYkMAIZbGOEMTXu6+mgQ==
X-Received: by 2002:a05:600c:2a18:b0:40e:4b04:d2b6 with SMTP id w24-20020a05600c2a1800b0040e4b04d2b6mr550911wme.207.1705070437633;
        Fri, 12 Jan 2024 06:40:37 -0800 (PST)
Date: Fri, 12 Jan 2024 14:40:35 +0000
From: Anthony PERARD <anthony.perard@citrix.com>
To: Roger Pau Monne <roger.pau@citrix.com>
Cc: xen-devel@lists.xenproject.org, Wei Liu <wl@xen.org>,
	Juergen Gross <jgross@suse.com>,
	Marek =?iso-8859-1?Q?Marczykowski-G=F3recki?= <marmarek@invisiblethingslab.com>,
	Jan Beulich <jbeulich@suse.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>
Subject: Re: [PATCH v2] x86/hvm: don't expose XENFEAT_hvm_pirqs by default
Message-ID: <7e325111-5b36-4b31-aed8-f5f11390b504@perard>
References: <20240110124202.62843-1-roger.pau@citrix.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=iso-8859-1
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <20240110124202.62843-1-roger.pau@citrix.com>

On Wed, Jan 10, 2024 at 01:42:02PM +0100, Roger Pau Monne wrote:
> The HVM pirq feature allows routing interrupts from both physical and emulated
> devices over event channels, this was done a performance improvement.  However
> its usage is fully undocumented, and the only reference implementation is in
> Linux.  It defeats the purpose of local APIC hardware virtualization, because
> when using it interrupts avoid the usage of the local APIC altogether.
> 
> It has also been reported to not work properly with certain devices, at least
> when using some AMD GPUs Linux attempts to route interrupts over event
> channels, but Xen doesn't correctly detect such routing, which leads to the
> hypervisor complaining with:
> 
> (XEN) d15v0: Unsupported MSI delivery mode 7 for Dom15
> 
> When MSIs are attempted to be routed over event channels the entry delivery
> mode is set to ExtINT, but Xen doesn't detect such routing and attempts to
> inject the interrupt following the native MSI path, and the ExtINT delivery
> mode is not supported.
> 
> Disable HVM PIRQs by default and provide a per-domain option in xl.cfg to
> enable such feature.  Also for backwards compatibility keep the feature enabled
> for any resumed domains that don't have an explicit selection.
> 
> Note that the only user of the feature (Linux) is also able to handle native
> interrupts fine, as the feature was already not used if Xen reported local APIC
> hardware virtualization active.
> 
> Link: https://github.com/QubesOS/qubes-issues/issues/7971
> Signed-off-by: Roger Pau Monn <roger.pau@citrix.com>

Should we have an entry in the changelog about this patch?

With the patch, we will need to regenerate the golang binding, at least
on commit.

Otherwise, patch looks fine:
Reviewed-by: Anthony PERARD <anthony.perard@citrix.com>

Thanks,

-- 
Anthony PERARD


From xen-devel-bounces@lists.xenproject.org Fri Jan 12 15:07:08 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 12 Jan 2024 15:07:08 +0000
Received: from list by lists.xenproject.org with outflank-mailman.666914.1037849 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rOJ7S-0004Xt-AD; Fri, 12 Jan 2024 15:06:50 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 666914.1037849; Fri, 12 Jan 2024 15:06:50 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rOJ7S-0004Xm-6w; Fri, 12 Jan 2024 15:06:50 +0000
Received: by outflank-mailman (input) for mailman id 666914;
 Fri, 12 Jan 2024 15:06:49 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=flvc=IW=cloud.com=roger.pau@srs-se1.protection.inumbo.net>)
 id 1rOJ7R-0004Xg-D8
 for xen-devel@lists.xenproject.org; Fri, 12 Jan 2024 15:06:49 +0000
Received: from mail-wr1-x431.google.com (mail-wr1-x431.google.com
 [2a00:1450:4864:20::431])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 34680595-b15c-11ee-98f0-6d05b1d4d9a1;
 Fri, 12 Jan 2024 16:06:47 +0100 (CET)
Received: by mail-wr1-x431.google.com with SMTP id
 ffacd0b85a97d-3376f71fcbbso4352599f8f.1
 for <xen-devel@lists.xenproject.org>; Fri, 12 Jan 2024 07:06:47 -0800 (PST)
Received: from localhost ([213.195.127.70]) by smtp.gmail.com with ESMTPSA id
 a7-20020adff7c7000000b0033660f75d08sm4102402wrq.116.2024.01.12.07.06.45
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Fri, 12 Jan 2024 07:06:46 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 34680595-b15c-11ee-98f0-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1705072006; x=1705676806; darn=lists.xenproject.org;
        h=in-reply-to:content-transfer-encoding:content-disposition
         :mime-version:references:message-id:subject:cc:to:from:date:from:to
         :cc:subject:date:message-id:reply-to;
        bh=vnA8RRNwAy+RlELZg4RbGOHswEXnMjFsRgVp2iFzVRs=;
        b=wPSTvRSh6HhKqzDDGbPc+0PUiuCe3/dOCyoZ72eWKLs8deHCAQdqsKIz/l7xyZFsyi
         WAQ4HX+Qw01BgsXW5oTsxq9CEMHX9dcG5xMiGl+de8/D6YKQPsJnDszYzw0LwbmU+cjP
         pe+75j02krNaXtO8eEEegT1StqS/lMbzIMU3E=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705072006; x=1705676806;
        h=in-reply-to:content-transfer-encoding:content-disposition
         :mime-version:references:message-id:subject:cc:to:from:date
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=vnA8RRNwAy+RlELZg4RbGOHswEXnMjFsRgVp2iFzVRs=;
        b=V6C/R4ds3e5YxB51nTBQVvLT/wkSbrxqh8rNCQgtW3CwQQYjTO7sSKwrER8sLyxHs/
         8wg9RwQAx3DR7K1tPtI5JmmZkSSL3V4ruyMoTVOvS6n0HMsHYJQWsv1gX0I5ih1GRl/i
         n5+SGoQ/av14l/qkLEjZyGIsRad4wwi7LSEAGHkr1onnH0ySHcQlRQDzbtiD19ySeS8b
         2oxF9L6ZMhtkYaxzVo0sgdURgNjcpT1q71MiMsdTvqobf3XtiTQB0C9FoglgHGckoFaG
         ee4wBQTkTTjgC3gtdfuoQmOIO/WjsOZfIuX/TAXUQBITFf45+/2Y/oq2pwawBkl29G6x
         ksHw==
X-Gm-Message-State: AOJu0YwjrXiOXZSoEPw0DWCGlDzNP5+IfK729qpZQ5GHFKpV5eJjF0lH
	pVaLXHaGooLGGL7Ib5M/O33ExaIDP3Mc7A==
X-Google-Smtp-Source: AGHT+IFGI4QGs8jSgLmFuLnnF4ifiSiceRtNVXTxoLaJ6AqpUPSekFlUHDTtVyv5aZVM+we9+4bJ3Q==
X-Received: by 2002:adf:e3c1:0:b0:336:5d37:866c with SMTP id k1-20020adfe3c1000000b003365d37866cmr475433wrm.82.1705072006339;
        Fri, 12 Jan 2024 07:06:46 -0800 (PST)
Date: Fri, 12 Jan 2024 16:06:45 +0100
From: Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
To: Stewart Hildebrand <stewart.hildebrand@amd.com>
Cc: xen-devel@lists.xenproject.org,
	Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>,
	"Daniel P. Smith" <dpsmith@apertussolutions.com>,
	Volodymyr Babchuk <volodymyr_babchuk@epam.com>
Subject: Re: [PATCH v12 09/15] vpci/header: program p2m with guest BAR view
Message-ID: <ZaFVhaVvpDljEgdM@macbook>
References: <20240109215145.430207-1-stewart.hildebrand@amd.com>
 <20240109215145.430207-10-stewart.hildebrand@amd.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <20240109215145.430207-10-stewart.hildebrand@amd.com>

On Tue, Jan 09, 2024 at 04:51:24PM -0500, Stewart Hildebrand wrote:
> From: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>
> 
> Take into account guest's BAR view and program its p2m accordingly:
> gfn is guest's view of the BAR and mfn is the physical BAR value.
> This way hardware domain sees physical BAR values and guest sees
> emulated ones.
> 
> Hardware domain continues getting the BARs identity mapped, while for
> domUs the BARs are mapped at the requested guest address without
> modifying the BAR address in the device PCI config space.
> 
> Signed-off-by: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>
> Signed-off-by: Volodymyr Babchuk <volodymyr_babchuk@epam.com>
> Signed-off-by: Stewart Hildebrand <stewart.hildebrand@amd.com>

Some nits and a request to add an extra assert. If you agree:

Reviewed-by: Roger Pau Monné <roger.pau@citrix.com>

> ---
> In v12:
> - Update guest_addr in rom_write()
> - Use unsigned long for start_mfn and map_mfn to reduce mfn_x() calls
> - Use existing vmsix_table_*() functions
> - Change vmsix_table_base() to use .guest_addr
> In v11:
> - Add vmsix_guest_table_addr() and vmsix_guest_table_base() functions
>   to access guest's view of the VMSIx tables.
> - Use MFN (not GFN) to check access permissions
> - Move page offset check to this patch
> - Call rangeset_remove_range() with correct parameters
> In v10:
> - Moved GFN variable definition outside the loop in map_range()
> - Updated printk error message in map_range()
> - Now BAR address is always stored in bar->guest_addr, even for
>   HW dom, this removes bunch of ugly is_hwdom() checks in modify_bars()
> - vmsix_table_base() now uses .guest_addr instead of .addr
> In v9:
> - Extended the commit message
> - Use bar->guest_addr in modify_bars
> - Extended printk error message in map_range
> - Moved map_data initialization so .bar can be initialized during declaration
> Since v5:
> - remove debug print in map_range callback
> - remove "identity" from the debug print
> Since v4:
> - moved start_{gfn|mfn} calculation into map_range
> - pass vpci_bar in the map_data instead of start_{gfn|mfn}
> - s/guest_addr/guest_reg
> Since v3:
> - updated comment (Roger)
> - removed gfn_add(map->start_gfn, rc); which is wrong
> - use v->domain instead of v->vpci.pdev->domain
> - removed odd e.g. in comment
> - s/d%d/%pd in altered code
> - use gdprintk for map/unmap logs
> Since v2:
> - improve readability for data.start_gfn and restructure ?: construct
> Since v1:
>  - s/MSI/MSI-X in comments
> ---
>  xen/drivers/vpci/header.c | 81 +++++++++++++++++++++++++++++++--------
>  xen/include/xen/vpci.h    |  3 +-
>  2 files changed, 66 insertions(+), 18 deletions(-)
> 
> diff --git a/xen/drivers/vpci/header.c b/xen/drivers/vpci/header.c
> index feccd070ddd0..f0b0b64b0929 100644
> --- a/xen/drivers/vpci/header.c
> +++ b/xen/drivers/vpci/header.c
> @@ -34,6 +34,7 @@
>  
>  struct map_data {
>      struct domain *d;
> +    const struct vpci_bar *bar;
>      bool map;
>  };
>  
> @@ -41,13 +42,24 @@ static int cf_check map_range(
>      unsigned long s, unsigned long e, void *data, unsigned long *c)
>  {
>      const struct map_data *map = data;
> +    /* Start address of the BAR as seen by the guest. */
> +    unsigned long start_gfn = PFN_DOWN(map->bar->guest_addr);
> +    /* Physical start address of the BAR. */
> +    unsigned long start_mfn = PFN_DOWN(map->bar->addr);
>      int rc;
>  
>      for ( ; ; )
>      {
>          unsigned long size = e - s + 1;
> +        /*
> +         * Ranges to be mapped don't always start at the BAR start address, as
> +         * there can be holes or partially consumed ranges. Account for the
> +         * offset of the current address from the BAR start.
> +         */
> +        unsigned long map_mfn = start_mfn + s - start_gfn;
> +        unsigned long m_end = map_mfn + size - 1;
>  
> -        if ( !iomem_access_permitted(map->d, s, e) )
> +        if ( !iomem_access_permitted(map->d, map_mfn, m_end) )
>          {
>              printk(XENLOG_G_WARNING
>                     "%pd denied access to MMIO range [%#lx, %#lx]\n",
> @@ -55,7 +67,8 @@ static int cf_check map_range(
>              return -EPERM;
>          }
>  
> -        rc = xsm_iomem_mapping(XSM_HOOK, map->d, s, e, map->map);
> +        rc = xsm_iomem_mapping(XSM_HOOK, map->d, map_mfn, m_end,
> +                               map->map);
>          if ( rc )
>          {
>              printk(XENLOG_G_WARNING
> @@ -73,8 +86,8 @@ static int cf_check map_range(
>           * - {un}map_mmio_regions doesn't support preemption.
>           */
>  
> -        rc = map->map ? map_mmio_regions(map->d, _gfn(s), size, _mfn(s))
> -                      : unmap_mmio_regions(map->d, _gfn(s), size, _mfn(s));
> +        rc = map->map ? map_mmio_regions(map->d, _gfn(s), size, _mfn(map_mfn))
> +                      : unmap_mmio_regions(map->d, _gfn(s), size, _mfn(map_mfn));
>          if ( rc == 0 )
>          {
>              *c += size;
> @@ -83,8 +96,9 @@ static int cf_check map_range(
>          if ( rc < 0 )
>          {
>              printk(XENLOG_G_WARNING
> -                   "Failed to identity %smap [%lx, %lx] for d%d: %d\n",
> -                   map->map ? "" : "un", s, e, map->d->domain_id, rc);
> +                   "Failed to %smap [%lx %lx] -> [%lx %lx] for %pd: %d\n",
> +                   map->map ? "" : "un", s, e, map_mfn,
> +                   map_mfn + size, map->d, rc);
>              break;
>          }
>          ASSERT(rc < size);
> @@ -163,10 +177,6 @@ static void modify_decoding(const struct pci_dev *pdev, uint16_t cmd,
>  bool vpci_process_pending(struct vcpu *v)
>  {
>      struct pci_dev *pdev = v->vpci.pdev;
> -    struct map_data data = {
> -        .d = v->domain,
> -        .map = v->vpci.cmd & PCI_COMMAND_MEMORY,
> -    };
>      struct vpci_header *header = NULL;
>      unsigned int i;
>  
> @@ -186,6 +196,11 @@ bool vpci_process_pending(struct vcpu *v)
>      for ( i = 0; i < ARRAY_SIZE(header->bars); i++ )
>      {
>          struct vpci_bar *bar = &header->bars[i];
> +        struct map_data data = {
> +            .d = v->domain,
> +            .map = v->vpci.cmd & PCI_COMMAND_MEMORY,
> +            .bar = bar,
> +        };
>          int rc;
>  
>          if ( rangeset_is_empty(bar->mem) )
> @@ -236,7 +251,6 @@ bool vpci_process_pending(struct vcpu *v)
>  static int __init apply_map(struct domain *d, const struct pci_dev *pdev,
>                              uint16_t cmd)
>  {
> -    struct map_data data = { .d = d, .map = true };
>      struct vpci_header *header = &pdev->vpci->header;
>      int rc = 0;
>      unsigned int i;
> @@ -246,6 +260,7 @@ static int __init apply_map(struct domain *d, const struct pci_dev *pdev,
>      for ( i = 0; i < ARRAY_SIZE(header->bars); i++ )
>      {
>          struct vpci_bar *bar = &header->bars[i];
> +        struct map_data data = { .d = d, .map = true, .bar = bar };
>  
>          if ( rangeset_is_empty(bar->mem) )
>              continue;
> @@ -311,12 +326,16 @@ static int modify_bars(const struct pci_dev *pdev, uint16_t cmd, bool rom_only)
>       * First fill the rangesets with the BAR of this device or with the ROM
>       * BAR only, depending on whether the guest is toggling the memory decode
>       * bit of the command register, or the enable bit of the ROM BAR register.
> +     *
> +     * For non-hardware domain we use guest physical addresses.
>       */
>      for ( i = 0; i < ARRAY_SIZE(header->bars); i++ )
>      {
>          struct vpci_bar *bar = &header->bars[i];
>          unsigned long start = PFN_DOWN(bar->addr);
>          unsigned long end = PFN_DOWN(bar->addr + bar->size - 1);
> +        unsigned long start_guest = PFN_DOWN(bar->guest_addr);
> +        unsigned long end_guest = PFN_DOWN(bar->guest_addr + bar->size - 1);
>  
>          if ( !bar->mem )
>              continue;
> @@ -336,11 +355,25 @@ static int modify_bars(const struct pci_dev *pdev, uint16_t cmd, bool rom_only)
>              continue;
>          }

Should we assert that the BAR rangeset is empty here? To stay on the
safe side.

>  
> -        rc = rangeset_add_range(bar->mem, start, end);
> +        /*
> +         * Make sure that the guest set address has the same page offset
> +         * as the physical address on the host or otherwise things won't work as
> +         * expected.
> +         */
> +        if ( PAGE_OFFSET(bar->guest_addr) != PAGE_OFFSET(bar->addr) )
> +        {
> +            gprintk(XENLOG_G_WARNING,
> +                    "%pp: Can't map BAR%d because of page offset mismatch: %lx vs %lx\n",
                                           ^u

Also when using the x modifier it's better to also use # to print the
0x prefix.  You can also reduce the length of the message using
s/because of/due to/ IMO:

%pp: Can't map BAR%u due to offset mismatch: %lx vs %lx

> +                    &pdev->sbdf, i, PAGE_OFFSET(bar->guest_addr),
> +                    PAGE_OFFSET(bar->addr));

Maybe worth printing the whole address?

> +            return -EINVAL;
> +        }
> +
> +        rc = rangeset_add_range(bar->mem, start_guest, end_guest);
>          if ( rc )
>          {
>              printk(XENLOG_G_WARNING "Failed to add [%lx, %lx]: %d\n",
> -                   start, end, rc);
> +                   start_guest, end_guest, rc);
>              return rc;
>          }
>  
> @@ -352,12 +385,12 @@ static int modify_bars(const struct pci_dev *pdev, uint16_t cmd, bool rom_only)
>              if ( rangeset_is_empty(prev_bar->mem) )
>                  continue;
>  
> -            rc = rangeset_remove_range(prev_bar->mem, start, end);
> +            rc = rangeset_remove_range(prev_bar->mem, start_guest, end_guest);
>              if ( rc )
>              {
>                  gprintk(XENLOG_WARNING,
>                         "%pp: failed to remove overlapping range [%lx, %lx]: %d\n",
> -                        &pdev->sbdf, start, end, rc);
> +                        &pdev->sbdf, start_guest, end_guest, rc);
>                  return rc;
>              }
>          }
> @@ -425,8 +458,8 @@ static int modify_bars(const struct pci_dev *pdev, uint16_t cmd, bool rom_only)
>              for ( i = 0; i < ARRAY_SIZE(tmp->vpci->header.bars); i++ )
>              {
>                  const struct vpci_bar *remote_bar = &tmp->vpci->header.bars[i];
> -                unsigned long start = PFN_DOWN(remote_bar->addr);
> -                unsigned long end = PFN_DOWN(remote_bar->addr +
> +                unsigned long start = PFN_DOWN(remote_bar->guest_addr);
> +                unsigned long end = PFN_DOWN(remote_bar->guest_addr +
>                                               remote_bar->size - 1);
>  
>                  if ( !remote_bar->enabled )
> @@ -513,6 +546,8 @@ static void cf_check bar_write(
>      struct vpci_bar *bar = data;
>      bool hi = false;
>  
> +    ASSERT(is_hardware_domain(pdev->domain));
> +
>      if ( bar->type == VPCI_BAR_MEM64_HI )
>      {
>          ASSERT(reg > PCI_BASE_ADDRESS_0);
> @@ -543,6 +578,10 @@ static void cf_check bar_write(
>       */
>      bar->addr &= ~(0xffffffffULL << (hi ? 32 : 0));
>      bar->addr |= (uint64_t)val << (hi ? 32 : 0);
> +    /*
> +     * Update guest address as well, so hardware domain sees BAR identity mapped
> +     */

Can you drop the 'as well' and make this a single line comment?

Otherwise maybe reword to:

Update guest address, so hardware domain BAR is identity mapped.

Sorry, I find it wasteful to have the opening and closing comment
delimiters in separate lines for single line comments.

Thanks, Roger.


From xen-devel-bounces@lists.xenproject.org Fri Jan 12 15:08:23 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 12 Jan 2024 15:08:23 +0000
Received: from list by lists.xenproject.org with outflank-mailman.666919.1037859 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rOJ8w-0005Np-Ok; Fri, 12 Jan 2024 15:08:22 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 666919.1037859; Fri, 12 Jan 2024 15:08:22 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rOJ8w-0005Ni-LO; Fri, 12 Jan 2024 15:08:22 +0000
Received: by outflank-mailman (input) for mailman id 666919;
 Fri, 12 Jan 2024 15:08:21 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=flvc=IW=cloud.com=roger.pau@srs-se1.protection.inumbo.net>)
 id 1rOJ8v-0005Ls-EQ
 for xen-devel@lists.xenproject.org; Fri, 12 Jan 2024 15:08:21 +0000
Received: from mail-wm1-x332.google.com (mail-wm1-x332.google.com
 [2a00:1450:4864:20::332])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 6b72e393-b15c-11ee-9b0f-b553b5be7939;
 Fri, 12 Jan 2024 16:08:19 +0100 (CET)
Received: by mail-wm1-x332.google.com with SMTP id
 5b1f17b1804b1-40e55c885d7so34529385e9.0
 for <xen-devel@lists.xenproject.org>; Fri, 12 Jan 2024 07:08:19 -0800 (PST)
Received: from localhost ([213.195.127.70]) by smtp.gmail.com with ESMTPSA id
 o8-20020a05600c4fc800b0040e549c77a1sm10019671wmq.32.2024.01.12.07.08.18
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Fri, 12 Jan 2024 07:08:18 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 6b72e393-b15c-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1705072099; x=1705676899; darn=lists.xenproject.org;
        h=in-reply-to:content-transfer-encoding:content-disposition
         :mime-version:references:message-id:subject:cc:to:from:date:from:to
         :cc:subject:date:message-id:reply-to;
        bh=3kmJcdzTxEKxmAR5qr7Tx/n1jmkpfBBlDiFIzZ4PYYI=;
        b=GIxcbEAIrquso8GDDiBX/LKa8ydcPhQOy4jSMiKFMlkUKExpdljF7zJNNzmJmJShH/
         ncLyEacD+xt4GKsS3plOEQWazOZyiBAMbnWUEYI7kxCUqr9mwwUuXY9+VTVfK4yzr/DB
         4wKyQitIKXEzQY6mOu1NwugBWAzu1Ub8N4jjE=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705072099; x=1705676899;
        h=in-reply-to:content-transfer-encoding:content-disposition
         :mime-version:references:message-id:subject:cc:to:from:date
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=3kmJcdzTxEKxmAR5qr7Tx/n1jmkpfBBlDiFIzZ4PYYI=;
        b=CIM4tT6LhcH43FKPgMAIkERUkDvkZn7Qf+Tg1hcg5lA6u8D6WtT3+IarspeE5JeAq/
         b4BnDpnm8nr3SE12/0FCMOQI1FfjB8sEfHmBRdSmClq/yMP/0opQwhsWChzRU6X9l/uX
         p7awQixTmPsYLRXHMTYFrjojlHROcsg9XUSkavyL3mvOSGWBWiAVhnykDFP4CZSie+1T
         4cdgtyTMos3JcUWbA0mJLetSD6UjXfhXI2/I0s/35rLfSewoHlEuJOg6qCg7L3OIRA5+
         h9irBH1q6wAM2lIQPmdG9rTBEN99xXPGHYjvaE0tpTCUrkpHmOlcff8Sg4lG3pLoDqgi
         RrKQ==
X-Gm-Message-State: AOJu0YzPZU+oecj8+Pk/yn7f72IjQ4tXSolBAur8PeuGpScxi978Y7Uh
	phX50Vz5WT53rkbG33Is2lzfnJSFdWJICXIOAWECPfCDVas=
X-Google-Smtp-Source: AGHT+IHr2h5OkzPC7fmc+zvDXBweqosROPDHkucTut4qxfJTFuKh5exYAGu7lIGAp11FBgwmiHSoAg==
X-Received: by 2002:a7b:c7c5:0:b0:40e:5fa7:db4d with SMTP id z5-20020a7bc7c5000000b0040e5fa7db4dmr823107wmk.154.1705072098901;
        Fri, 12 Jan 2024 07:08:18 -0800 (PST)
Date: Fri, 12 Jan 2024 16:08:17 +0100
From: Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
To: Anthony PERARD <anthony.perard@citrix.com>
Cc: xen-devel@lists.xenproject.org, Wei Liu <wl@xen.org>,
	Juergen Gross <jgross@suse.com>,
	Marek =?utf-8?Q?Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>,
	Jan Beulich <jbeulich@suse.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>
Subject: Re: [PATCH v2] x86/hvm: don't expose XENFEAT_hvm_pirqs by default
Message-ID: <ZaFV4TY0oLTDNV_J@macbook>
References: <20240110124202.62843-1-roger.pau@citrix.com>
 <7e325111-5b36-4b31-aed8-f5f11390b504@perard>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <7e325111-5b36-4b31-aed8-f5f11390b504@perard>

On Fri, Jan 12, 2024 at 02:40:35PM +0000, Anthony PERARD wrote:
> On Wed, Jan 10, 2024 at 01:42:02PM +0100, Roger Pau Monne wrote:
> > The HVM pirq feature allows routing interrupts from both physical and emulated
> > devices over event channels, this was done a performance improvement.  However
> > its usage is fully undocumented, and the only reference implementation is in
> > Linux.  It defeats the purpose of local APIC hardware virtualization, because
> > when using it interrupts avoid the usage of the local APIC altogether.
> > 
> > It has also been reported to not work properly with certain devices, at least
> > when using some AMD GPUs Linux attempts to route interrupts over event
> > channels, but Xen doesn't correctly detect such routing, which leads to the
> > hypervisor complaining with:
> > 
> > (XEN) d15v0: Unsupported MSI delivery mode 7 for Dom15
> > 
> > When MSIs are attempted to be routed over event channels the entry delivery
> > mode is set to ExtINT, but Xen doesn't detect such routing and attempts to
> > inject the interrupt following the native MSI path, and the ExtINT delivery
> > mode is not supported.
> > 
> > Disable HVM PIRQs by default and provide a per-domain option in xl.cfg to
> > enable such feature.  Also for backwards compatibility keep the feature enabled
> > for any resumed domains that don't have an explicit selection.
> > 
> > Note that the only user of the feature (Linux) is also able to handle native
> > interrupts fine, as the feature was already not used if Xen reported local APIC
> > hardware virtualization active.
> > 
> > Link: https://github.com/QubesOS/qubes-issues/issues/7971
> > Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
> 
> Should we have an entry in the changelog about this patch?

Yes, indeed.  I always forget.  Will send v3 on Monday with you RB and
the changelog.

> With the patch, we will need to regenerate the golang binding, at least
> on commit.
> 
> Otherwise, patch looks fine:
> Reviewed-by: Anthony PERARD <anthony.perard@citrix.com>

Thanks!


From xen-devel-bounces@lists.xenproject.org Fri Jan 12 15:37:44 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 12 Jan 2024 15:37:44 +0000
Received: from list by lists.xenproject.org with outflank-mailman.666924.1037868 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rOJbF-0001kE-VR; Fri, 12 Jan 2024 15:37:37 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 666924.1037868; Fri, 12 Jan 2024 15:37:37 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rOJbF-0001k7-Sc; Fri, 12 Jan 2024 15:37:37 +0000
Received: by outflank-mailman (input) for mailman id 666924;
 Fri, 12 Jan 2024 15:37:36 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=XUEQ=IW=linutronix.de=bigeasy@srs-se1.protection.inumbo.net>)
 id 1rOJbE-0001k1-4q
 for xen-devel@lists.xenproject.org; Fri, 12 Jan 2024 15:37:36 +0000
Received: from galois.linutronix.de (galois.linutronix.de [193.142.43.55])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 808a430b-b160-11ee-98f0-6d05b1d4d9a1;
 Fri, 12 Jan 2024 16:37:34 +0100 (CET)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 808a430b-b160-11ee-98f0-6d05b1d4d9a1
Date: Fri, 12 Jan 2024 16:37:29 +0100
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linutronix.de;
	s=2020; t=1705073851;
	h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
	 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
	 in-reply-to:in-reply-to:references:references;
	bh=BbMbE7TF8i1sZXppGrqoHHjUY3M11JhDxCtzDdAUuRw=;
	b=1GGf1DU68xr+ui1Avv/QWcHvqsdOuManS53L5hKHadiHJXCRP3Y8kk99lV9FjsQNjSF1nO
	nd7IXO8qvMHZcOmpIelxtpx32TDUeBOVEp1/kXueuR1rPRQ9XvlgQfZmn+Z/I2dC8JsgIr
	1MUL3nBT/t6g/FU0b9WPzkss5hz5wQCruZHqnZTUs/o0V4Z6GIj4lDVJnisVRC8l0qgGx7
	mXi0mJ00yAkRAG26UCcMiCcBNLXf6PaujYD6CNKC13FNEltl/MWVGqXp5sUx8NZqswynxn
	KMFIocRjpwH0NGzuCJnFJe/y5AAxWHlKqVgIFlQDtBRw4v0YNjcU6DEFx27kKg==
DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=linutronix.de;
	s=2020e; t=1705073851;
	h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
	 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
	 in-reply-to:in-reply-to:references:references;
	bh=BbMbE7TF8i1sZXppGrqoHHjUY3M11JhDxCtzDdAUuRw=;
	b=fvlnJbYLOwIgdowsO9OyVTF9juUCvJAx60fsmA5ZO/FIGj8AXSun0fRnqtBhGeFwd4GU/P
	FS9aiBohTk/VYFAw==
From: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
To: Daniel Borkmann <daniel@iogearbox.net>
Cc: linux-kernel@vger.kernel.org, netdev@vger.kernel.org,
	"David S. Miller" <davem@davemloft.net>,
	Boqun Feng <boqun.feng@gmail.com>,
	Eric Dumazet <edumazet@google.com>,
	Frederic Weisbecker <frederic@kernel.org>,
	Ingo Molnar <mingo@redhat.com>, Jakub Kicinski <kuba@kernel.org>,
	Paolo Abeni <pabeni@redhat.com>,
	Peter Zijlstra <peterz@infradead.org>,
	Thomas Gleixner <tglx@linutronix.de>,
	Waiman Long <longman@redhat.com>, Will Deacon <will@kernel.org>,
	"K. Y. Srinivasan" <kys@microsoft.com>,
	"Michael S. Tsirkin" <mst@redhat.com>,
	Alexei Starovoitov <ast@kernel.org>,
	Andrii Nakryiko <andrii@kernel.org>,
	Dexuan Cui <decui@microsoft.com>,
	Haiyang Zhang <haiyangz@microsoft.com>, Hao Luo <haoluo@google.com>,
	Jesper Dangaard Brouer <hawk@kernel.org>,
	Jiri Olsa <jolsa@kernel.org>,
	John Fastabend <john.fastabend@gmail.com>,
	Juergen Gross <jgross@suse.com>, KP Singh <kpsingh@kernel.org>,
	Martin KaFai Lau <martin.lau@linux.dev>,
	Nikolay Aleksandrov <razor@blackwall.org>,
	Song Liu <song@kernel.org>, Stanislav Fomichev <sdf@google.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Wei Liu <wei.liu@kernel.org>,
	Willem de Bruijn <willemdebruijn.kernel@gmail.com>,
	Xuan Zhuo <xuanzhuo@linux.alibaba.com>,
	Yonghong Song <yonghong.song@linux.dev>, bpf@vger.kernel.org,
	virtualization@lists.linux.dev, xen-devel@lists.xenproject.org
Subject: Re: [PATCH net-next 16/24] net: netkit, veth, tun, virt*: Use
 nested-BH locking for XDP redirect.
Message-ID: <20240112153729.A68q4xsA@linutronix.de>
References: <20231215171020.687342-1-bigeasy@linutronix.de>
 <20231215171020.687342-17-bigeasy@linutronix.de>
 <74feb818-7109-cb1e-8eec-a037c17a2871@iogearbox.net>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
In-Reply-To: <74feb818-7109-cb1e-8eec-a037c17a2871@iogearbox.net>

On 2023-12-18 09:52:05 [+0100], Daniel Borkmann wrote:
> Hi Sebastian,
Hi Daniel,

> Please exclude netkit from this set given it does not support XDP, but
> instead only accepts tc BPF typed programs.

okay, thank you.

> Thanks,
> Daniel

Sebastian


From xen-devel-bounces@lists.xenproject.org Fri Jan 12 16:03:28 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 12 Jan 2024 16:03:28 +0000
Received: from list by lists.xenproject.org with outflank-mailman.666928.1037880 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rOK08-0007Nl-W4; Fri, 12 Jan 2024 16:03:20 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 666928.1037880; Fri, 12 Jan 2024 16:03:20 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rOK08-0007Ne-Rl; Fri, 12 Jan 2024 16:03:20 +0000
Received: by outflank-mailman (input) for mailman id 666928;
 Fri, 12 Jan 2024 16:03:20 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rOK08-0007NU-EZ; Fri, 12 Jan 2024 16:03:20 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rOK08-0004om-2D; Fri, 12 Jan 2024 16:03:20 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rOK07-0004CT-M0; Fri, 12 Jan 2024 16:03:19 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rOK07-0004zx-Lf; Fri, 12 Jan 2024 16:03:19 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=nh7oYgjVJkF54n3Kb4gOdm9bjOB9+oAVh91RSCV79XA=; b=quwZDtNTDz2qLZdlcXFyg253EK
	/PsUBU9wyGMJwhzTaz3z9Qgvpuh/9hTKyMmR5rSALhvGs/xXcCWPvim7y+jIHMmVKtiEzIvoautFQ
	rKV28/OU+Z+kaJI8TZwX8k9JdmlQCtmVzEkI62EXPwawZf2ETxmaVPipTlJgHwGd/Xw8=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184333-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [xen-unstable-smoke test] 184333: tolerable all pass - PUSHED
X-Osstest-Failures:
    xen-unstable-smoke:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    xen-unstable-smoke:test-arm64-arm64-xl-xsm:migrate-support-check:fail:nonblocking
    xen-unstable-smoke:test-arm64-arm64-xl-xsm:saverestore-support-check:fail:nonblocking
    xen-unstable-smoke:test-armhf-armhf-xl:migrate-support-check:fail:nonblocking
    xen-unstable-smoke:test-armhf-armhf-xl:saverestore-support-check:fail:nonblocking
X-Osstest-Versions-This:
    xen=1ec3fe1f664fa837daf31e9fa8938f6109464f28
X-Osstest-Versions-That:
    xen=c27c8922f2c6995d688437b0758cec6a27d18320
From: osstest service owner <osstest-admin@xenproject.org>
Date: Fri, 12 Jan 2024 16:03:19 +0000

flight 184333 xen-unstable-smoke real [real]
http://logs.test-lab.xenproject.org/osstest/logs/184333/

Failures :-/ but no regressions.

Tests which did not succeed, but are not blocking:
 test-amd64-amd64-libvirt     15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-xsm      15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-xsm      16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl          15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          16 saverestore-support-check    fail   never pass

version targeted for testing:
 xen                  1ec3fe1f664fa837daf31e9fa8938f6109464f28
baseline version:
 xen                  c27c8922f2c6995d688437b0758cec6a27d18320

Last test of basis   184295  2024-01-09 14:00:26 Z    3 days
Testing same since   184333  2024-01-12 12:03:48 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Javi Merino <javi.merino@cloud.com>
  Julien Grall <jgrall@amazon.com>
  Shawn Anastasio <sanastasio@raptorengineering.com>

jobs:
 build-arm64-xsm                                              pass    
 build-amd64                                                  pass    
 build-armhf                                                  pass    
 build-amd64-libvirt                                          pass    
 test-armhf-armhf-xl                                          pass    
 test-arm64-arm64-xl-xsm                                      pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64                    pass    
 test-amd64-amd64-libvirt                                     pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Pushing revision :

To xenbits.xen.org:/home/xen/git/xen.git
   c27c8922f2..1ec3fe1f66  1ec3fe1f664fa837daf31e9fa8938f6109464f28 -> smoke


From xen-devel-bounces@lists.xenproject.org Fri Jan 12 16:29:40 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 12 Jan 2024 16:29:40 +0000
Received: from list by lists.xenproject.org with outflank-mailman.666935.1037893 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rOKPP-00030z-84; Fri, 12 Jan 2024 16:29:27 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 666935.1037893; Fri, 12 Jan 2024 16:29:27 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rOKPP-00030s-1T; Fri, 12 Jan 2024 16:29:27 +0000
Received: by outflank-mailman (input) for mailman id 666935;
 Fri, 12 Jan 2024 16:29:26 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rOKPO-00030i-9l; Fri, 12 Jan 2024 16:29:26 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rOKPN-0005EF-Vv; Fri, 12 Jan 2024 16:29:26 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rOKPN-0004pc-KM; Fri, 12 Jan 2024 16:29:25 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rOKPN-0005BY-Ju; Fri, 12 Jan 2024 16:29:25 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=uoDlJDLUtK9cTlXBe94tGEzV5BI9zegJbZ5c8wPOlx0=; b=b+vtL9Wn6IYURKkIP0sikB4wsP
	EkDY1l+os3GKDo8CoHRt2jNxqOx3Xn4TPulMyJT45kpH8qau/KmsnUtWvU+mWkkdJ+WYOey6Crdx1
	q6ZieMzLtdN0o16RVIL4bbruIk2nAM9VSspAY6QNlRecRov4sX7O4VKKlicP2EXigmqQ=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184327-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [linux-5.4 test] 184327: regressions - FAIL
X-Osstest-Failures:
    linux-5.4:test-armhf-armhf-xl-multivcpu:guest-start/debian.repeat:fail:regression
    linux-5.4:test-armhf-armhf-xl-arndale:guest-start:fail:heisenbug
    linux-5.4:test-armhf-armhf-xl-credit2:guest-start:fail:heisenbug
    linux-5.4:test-arm64-arm64-libvirt-raw:guest-start/debian.repeat:fail:heisenbug
    linux-5.4:test-armhf-armhf-libvirt-raw:guest-start/debian.repeat:fail:heisenbug
    linux-5.4:test-armhf-armhf-xl-vhd:guest-start:fail:heisenbug
    linux-5.4:test-amd64-i386-xl-qemuu-ws16-amd64:windows-install:fail:heisenbug
    linux-5.4:test-armhf-armhf-xl-rtds:guest-start/debian.repeat:fail:allowable
    linux-5.4:test-armhf-armhf-libvirt-qcow2:saverestore-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-credit1:guest-start/debian.repeat:fail:nonblocking
    linux-5.4:test-armhf-armhf-libvirt-qcow2:guest-start:fail:nonblocking
    linux-5.4:test-amd64-i386-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-credit1:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-credit1:saverestore-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-vhd:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-vhd:saverestore-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-credit1:guest-start:fail:nonblocking
    linux-5.4:test-armhf-armhf-libvirt:saverestore-support-check:fail:nonblocking
    linux-5.4:test-amd64-amd64-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    linux-5.4:test-amd64-i386-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    linux-5.4:test-amd64-i386-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    linux-5.4:test-amd64-amd64-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-arndale:guest-start/debian.repeat:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-credit2:guest-start/debian.repeat:fail:nonblocking
    linux-5.4:test-amd64-amd64-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    linux-5.4:test-amd64-amd64-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    linux-5.4:test-amd64-i386-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    linux-5.4:test-armhf-armhf-libvirt-raw:saverestore-support-check:fail:nonblocking
    linux-5.4:test-amd64-amd64-qemuu-nested-amd:debian-hvm-install/l1/l2:fail:nonblocking
    linux-5.4:test-amd64-i386-xl-pvshim:guest-start:fail:nonblocking
    linux-5.4:test-amd64-amd64-libvirt-xsm:migrate-support-check:fail:nonblocking
    linux-5.4:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    linux-5.4:test-amd64-i386-libvirt-xsm:migrate-support-check:fail:nonblocking
    linux-5.4:test-amd64-i386-libvirt:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-xsm:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-xsm:saverestore-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl:saverestore-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-libvirt-xsm:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-libvirt-xsm:saverestore-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-credit1:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-credit1:saverestore-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-credit2:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-credit2:saverestore-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-thunderx:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-thunderx:saverestore-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-multivcpu:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-multivcpu:saverestore-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-rtds:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-rtds:saverestore-support-check:fail:nonblocking
    linux-5.4:test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    linux-5.4:test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-arndale:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-arndale:saverestore-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl:saverestore-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-credit2:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-credit2:saverestore-support-check:fail:nonblocking
    linux-5.4:test-amd64-amd64-libvirt-vhd:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-libvirt:migrate-support-check:fail:nonblocking
    linux-5.4:test-amd64-i386-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-libvirt-raw:saverestore-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-vhd:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-vhd:saverestore-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-libvirt-qcow2:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-libvirt-raw:migrate-support-check:fail:nonblocking
X-Osstest-Versions-This:
    linux=4410df70110ff5175bf7f7fdc3bae5c80f2c36d9
X-Osstest-Versions-That:
    linux=2d21f73b2f16f51608c8d8b1726df270229a5006
From: osstest service owner <osstest-admin@xenproject.org>
Date: Fri, 12 Jan 2024 16:29:25 +0000

flight 184327 linux-5.4 real [real]
http://logs.test-lab.xenproject.org/osstest/logs/184327/

Regressions :-(

Tests which did not succeed and are blocking,
including tests which could not be run:
 test-armhf-armhf-xl-multivcpu 18 guest-start/debian.repeat fail REGR. vs. 184192

Tests which are failing intermittently (not blocking):
 test-armhf-armhf-xl-arndale  14 guest-start      fail in 184318 pass in 184327
 test-armhf-armhf-xl-credit2  14 guest-start      fail in 184318 pass in 184327
 test-arm64-arm64-libvirt-raw 17 guest-start/debian.repeat  fail pass in 184318
 test-armhf-armhf-libvirt-raw 17 guest-start/debian.repeat  fail pass in 184318
 test-armhf-armhf-xl-vhd      13 guest-start                fail pass in 184318
 test-amd64-i386-xl-qemuu-ws16-amd64 12 windows-install     fail pass in 184318

Regressions which are regarded as allowable (not blocking):
 test-armhf-armhf-xl-rtds    18 guest-start/debian.repeat fail REGR. vs. 184192

Tests which did not succeed, but are not blocking:
 test-armhf-armhf-libvirt-qcow2 15 saverestore-support-check fail blocked in 184192
 test-armhf-armhf-xl-credit1 18 guest-start/debian.repeat fail in 184318 blocked in 184192
 test-armhf-armhf-libvirt-qcow2 13 guest-start       fail in 184318 like 184192
 test-amd64-i386-xl-qemuu-ws16-amd64 19 guest-stop   fail in 184318 like 184192
 test-armhf-armhf-xl-credit1 15 migrate-support-check fail in 184318 never pass
 test-armhf-armhf-xl-credit1 16 saverestore-support-check fail in 184318 never pass
 test-armhf-armhf-xl-vhd     14 migrate-support-check fail in 184318 never pass
 test-armhf-armhf-xl-vhd 15 saverestore-support-check fail in 184318 never pass
 test-armhf-armhf-xl-credit1  14 guest-start                  fail  like 184192
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 184192
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 184192
 test-amd64-i386-xl-qemut-win7-amd64 19 guest-stop             fail like 184192
 test-amd64-i386-xl-qemuu-win7-amd64 19 guest-stop             fail like 184192
 test-amd64-amd64-xl-qemut-win7-amd64 19 guest-stop            fail like 184192
 test-armhf-armhf-xl-arndale  18 guest-start/debian.repeat    fail  like 184192
 test-armhf-armhf-xl-credit2  18 guest-start/debian.repeat    fail  like 184192
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 184192
 test-amd64-amd64-xl-qemut-ws16-amd64 19 guest-stop            fail like 184192
 test-amd64-i386-xl-qemut-ws16-amd64 19 guest-stop             fail like 184192
 test-armhf-armhf-libvirt-raw 15 saverestore-support-check    fail  like 184192
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 184192
 test-amd64-i386-xl-pvshim    14 guest-start                  fail   never pass
 test-amd64-amd64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt     15 migrate-support-check        fail   never pass
 test-amd64-i386-libvirt-xsm  15 migrate-support-check        fail   never pass
 test-amd64-i386-libvirt      15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-xsm      15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-xsm      16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl          15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl          16 saverestore-support-check    fail   never pass
 test-arm64-arm64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-xsm 16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-credit1  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit1  16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-credit2  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit2  16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-thunderx 15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-thunderx 16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-multivcpu 15 migrate-support-check        fail  never pass
 test-armhf-armhf-xl-multivcpu 16 saverestore-support-check    fail  never pass
 test-armhf-armhf-xl-rtds     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-rtds     16 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-armhf-armhf-xl-arndale  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-arndale  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl          15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-credit2  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit2  16 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-vhd 14 migrate-support-check        fail   never pass
 test-armhf-armhf-libvirt     15 migrate-support-check        fail   never pass
 test-amd64-i386-libvirt-raw  14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 15 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-vhd      14 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-vhd      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-qcow2 14 migrate-support-check        fail never pass
 test-armhf-armhf-libvirt-raw 14 migrate-support-check        fail   never pass

version targeted for testing:
 linux                4410df70110ff5175bf7f7fdc3bae5c80f2c36d9
baseline version:
 linux                2d21f73b2f16f51608c8d8b1726df270229a5006

Last test of basis   184192  2023-12-20 15:16:31 Z   23 days
Testing same since   184275  2024-01-08 10:43:33 Z    4 days    7 attempts

------------------------------------------------------------
People who touched revisions under test:
  Alexander Gordeev <agordeev@linux.ibm.com>
  Alexis Lothoré <alexis.lothore@bootlin.com>
  Alper Ak <alperyasinak1@gmail.com>
  Bin Li <bin.li@canonical.com>
  Borislav Petkov (AMD) <bp@alien8.de>
  Chen-Yu Tsai <wens@kernel.org>
  Dan Carpenter <dan.carpenter@linaro.org>
  David Howells <dhowells@redhat.com>
  David S. Miller <davem@davemloft.net>
  David Sterba <dsterba@suse.com>
  Dmitry Torokhov <dmitry.torokhov@gmail.com>
  Dominique Martinet <asmadeus@codewreck.org>
  Eric Dumazet <edumazet@google.com>
  Fedor Pchelkin <pchelkin@ispras.ru>
  Florian Fainelli <florian.fainelli@broadcom.com>
  Geert Uytterhoeven <geert+renesas@glider.be>
  Georgi Djakov <djakov@kernel.org>
  Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  Haoran Liu <liuhaoran14@163.com>
  Harshit Mogalapalli <harshit.m.mogalapalli@oracle.com>
  Heiko Carstens <hca@linux.ibm.com>
  Heiner Kallweit <hkallweit1@gmail.com>
  Hu Haowen <xianfengting221@163.com>
  Jakub Kicinski <kuba@kernel.org>
  Jamal Hadi Salim <jhs@mojatatu.com>
  Javier Carrasco <javier.carrasco.cruz@gmail.com>
  Jens Axboe <axboe@kernel.dk>
  Johan Hovold <johan@kernel.org>
  Johannes Berg <johannes.berg@intel.com>
  Jonathan Cameron <Jonathan.Cameron@huawei.com>
  Josef Bacik <josef@toxicpanda.com>
  Kai Vehmanen <kai.vehmanen@linux.intel.com>
  kernelci.org bot <bot@kernelci.org>
  Kunwu Chan <chentao@kylinos.cn>
  Linus Torvalds <torvalds@linux-foundation.org>
  Linus Walleij <linus.walleij@linaro.org>
  Linux Kernel Functional Testing <lkft@linaro.org>
  Liu Jian <liujian56@huawei.com>
  Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
  Mark Glover <mark.glover@actisense.com>
  Markus Suvanto <markus.suvanto@gmail.com>
  Martin K. Petersen <martin.petersen@oracle.com>
  Masami Hiramatsu (Google) <mhiramat@kernel.org>
  Mike Snitzer <snitzer@kernel.org>
  Mike Tipton <quic_mdtipton@quicinc.com>
  Miri Korenblit <miriam.rachel.korenblit@intel.com>
  Moshe Shemesh <moshe@nvidia.com>
  Namjae Jeon <linkinjeon@kernel.org>
  Paolo Abeni <pabeni@redhat.com>
  Paulo Alcantara (SUSE) <pc@manguebit.com>
  Paulo Alcantara <pc@manguebit.com>
  Peter Zijlstra (Intel) <peterz@infradead.org>
  Philipp Zabel <p.zabel@pengutronix.de>
  Quan Nguyen <quan@os.amperecomputing.com>
  Rahul Rameshbabu <rrameshbabu@nvidia.com>
  Reinhard Speyerer <rspmn@arcor.de>
  Rouven Czerwinski <r.czerwinski@pengutronix.de>
  Saeed Mahameed <saeedm@mellanox.com>
  Saeed Mahameed <saeedm@nvidia.com>
  Sarthak Kukreti <sarthakkukreti@chromium.org>
  Sasha Levin <sashal@kernel.org>
  Seth Forshee <sforshee@kernel.org>
  Slark Xiao <slark_xiao@163.com>
  Steve French <stfrench@microsoft.com>
  Steven Rostedt (Google) <rostedt@goodmis.org>
  Su Hui <suhui@nfschina.com>
  Takashi Iwai <tiwai@suse.de>
  Thomas Gleixner <tglx@linutronix.de>
  Tony Lindgren <tony@atomide.com>
  Vlad Buslov <vladbu@nvidia.com>
  Wadim Egorov <w.egorov@phytec.de>
  Wei Yongjun <weiyongjun1@huawei.com>
  Wolfram Sang <wsa@kernel.org>
  Zhipeng Lu <alexious@zju.edu.cn>

jobs:
 build-amd64-xsm                                              pass    
 build-arm64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64                                                  pass    
 build-arm64                                                  pass    
 build-armhf                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-arm64-libvirt                                          pass    
 build-armhf-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-pvops                                            pass    
 build-arm64-pvops                                            pass    
 build-armhf-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-amd64-amd64-xl                                          pass    
 test-amd64-coresched-amd64-xl                                pass    
 test-arm64-arm64-xl                                          pass    
 test-armhf-armhf-xl                                          pass    
 test-amd64-i386-xl                                           pass    
 test-amd64-coresched-i386-xl                                 pass    
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm           pass    
 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm            pass    
 test-amd64-amd64-xl-qemut-stubdom-debianhvm-amd64-xsm        pass    
 test-amd64-i386-xl-qemut-stubdom-debianhvm-amd64-xsm         pass    
 test-amd64-amd64-xl-qemut-debianhvm-i386-xsm                 pass    
 test-amd64-i386-xl-qemut-debianhvm-i386-xsm                  pass    
 test-amd64-amd64-xl-qemuu-debianhvm-i386-xsm                 pass    
 test-amd64-i386-xl-qemuu-debianhvm-i386-xsm                  pass    
 test-amd64-amd64-libvirt-xsm                                 pass    
 test-arm64-arm64-libvirt-xsm                                 pass    
 test-amd64-i386-libvirt-xsm                                  pass    
 test-amd64-amd64-xl-xsm                                      pass    
 test-arm64-arm64-xl-xsm                                      pass    
 test-amd64-i386-xl-xsm                                       pass    
 test-amd64-amd64-qemuu-nested-amd                            fail    
 test-amd64-amd64-xl-pvhv2-amd                                pass    
 test-amd64-i386-qemut-rhel6hvm-amd                           pass    
 test-amd64-i386-qemuu-rhel6hvm-amd                           pass    
 test-amd64-amd64-dom0pvh-xl-amd                              pass    
 test-amd64-amd64-xl-qemut-debianhvm-amd64                    pass    
 test-amd64-i386-xl-qemut-debianhvm-amd64                     pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64                    pass    
 test-amd64-i386-xl-qemuu-debianhvm-amd64                     pass    
 test-amd64-i386-freebsd10-amd64                              pass    
 test-amd64-amd64-qemuu-freebsd11-amd64                       pass    
 test-amd64-amd64-qemuu-freebsd12-amd64                       pass    
 test-amd64-amd64-xl-qemuu-ovmf-amd64                         pass    
 test-amd64-i386-xl-qemuu-ovmf-amd64                          pass    
 test-amd64-amd64-xl-qemut-win7-amd64                         fail    
 test-amd64-i386-xl-qemut-win7-amd64                          fail    
 test-amd64-amd64-xl-qemuu-win7-amd64                         fail    
 test-amd64-i386-xl-qemuu-win7-amd64                          fail    
 test-amd64-amd64-xl-qemut-ws16-amd64                         fail    
 test-amd64-i386-xl-qemut-ws16-amd64                          fail    
 test-amd64-amd64-xl-qemuu-ws16-amd64                         fail    
 test-amd64-i386-xl-qemuu-ws16-amd64                          fail    
 test-armhf-armhf-xl-arndale                                  fail    
 test-amd64-amd64-examine-bios                                pass    
 test-amd64-i386-examine-bios                                 pass    
 test-amd64-amd64-xl-credit1                                  pass    
 test-arm64-arm64-xl-credit1                                  pass    
 test-armhf-armhf-xl-credit1                                  fail    
 test-amd64-amd64-xl-credit2                                  pass    
 test-arm64-arm64-xl-credit2                                  pass    
 test-armhf-armhf-xl-credit2                                  fail    
 test-amd64-amd64-xl-qemuu-dmrestrict-amd64-dmrestrict        pass    
 test-amd64-i386-xl-qemuu-dmrestrict-amd64-dmrestrict         pass    
 test-amd64-amd64-examine                                     pass    
 test-arm64-arm64-examine                                     pass    
 test-armhf-armhf-examine                                     pass    
 test-amd64-i386-examine                                      pass    
 test-amd64-i386-freebsd10-i386                               pass    
 test-amd64-amd64-qemuu-nested-intel                          pass    
 test-amd64-amd64-xl-pvhv2-intel                              pass    
 test-amd64-i386-qemut-rhel6hvm-intel                         pass    
 test-amd64-i386-qemuu-rhel6hvm-intel                         pass    
 test-amd64-amd64-dom0pvh-xl-intel                            pass    
 test-amd64-amd64-libvirt                                     pass    
 test-armhf-armhf-libvirt                                     pass    
 test-amd64-i386-libvirt                                      pass    
 test-amd64-amd64-xl-multivcpu                                pass    
 test-armhf-armhf-xl-multivcpu                                fail    
 test-amd64-amd64-pair                                        pass    
 test-amd64-i386-pair                                         pass    
 test-amd64-amd64-libvirt-pair                                pass    
 test-amd64-i386-libvirt-pair                                 pass    
 test-amd64-amd64-xl-pvshim                                   pass    
 test-amd64-i386-xl-pvshim                                    fail    
 test-amd64-amd64-pygrub                                      pass    
 test-armhf-armhf-libvirt-qcow2                               pass    
 test-amd64-amd64-xl-qcow2                                    pass    
 test-arm64-arm64-libvirt-raw                                 fail    
 test-armhf-armhf-libvirt-raw                                 fail    
 test-amd64-i386-libvirt-raw                                  pass    
 test-amd64-amd64-xl-rtds                                     pass    
 test-armhf-armhf-xl-rtds                                     fail    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64-shadow             pass    
 test-amd64-i386-xl-qemuu-debianhvm-amd64-shadow              pass    
 test-amd64-amd64-xl-shadow                                   pass    
 test-amd64-i386-xl-shadow                                    pass    
 test-arm64-arm64-xl-thunderx                                 pass    
 test-amd64-amd64-examine-uefi                                pass    
 test-amd64-i386-examine-uefi                                 pass    
 test-amd64-amd64-libvirt-vhd                                 pass    
 test-arm64-arm64-xl-vhd                                      pass    
 test-armhf-armhf-xl-vhd                                      fail    
 test-amd64-i386-xl-vhd                                       pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Not pushing.

(No revision log; it would be 1652 lines long.)


From xen-devel-bounces@lists.xenproject.org Fri Jan 12 16:55:35 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 12 Jan 2024 16:55:35 +0000
Received: from list by lists.xenproject.org with outflank-mailman.666944.1037904 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rOKoZ-0007GY-BF; Fri, 12 Jan 2024 16:55:27 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 666944.1037904; Fri, 12 Jan 2024 16:55:27 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rOKoZ-0007GR-8S; Fri, 12 Jan 2024 16:55:27 +0000
Received: by outflank-mailman (input) for mailman id 666944;
 Fri, 12 Jan 2024 16:55:26 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=UAL2=IW=cloud.com=anthony.perard@srs-se1.protection.inumbo.net>)
 id 1rOKoY-0007GL-CJ
 for xen-devel@lists.xenproject.org; Fri, 12 Jan 2024 16:55:26 +0000
Received: from mail-wm1-x32e.google.com (mail-wm1-x32e.google.com
 [2a00:1450:4864:20::32e])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 61775d39-b16b-11ee-98f1-6d05b1d4d9a1;
 Fri, 12 Jan 2024 17:55:25 +0100 (CET)
Received: by mail-wm1-x32e.google.com with SMTP id
 5b1f17b1804b1-40e5a5b0fb5so27742635e9.3
 for <xen-devel@lists.xenproject.org>; Fri, 12 Jan 2024 08:55:25 -0800 (PST)
Received: from perard.uk.xensource.com (default-46-102-197-194.interdsl.co.uk.
 [46.102.197.194]) by smtp.gmail.com with ESMTPSA id
 o21-20020a05600c4fd500b0040e34ca648bsm6466686wmq.0.2024.01.12.08.55.23
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Fri, 12 Jan 2024 08:55:23 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 61775d39-b16b-11ee-98f1-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1705078524; x=1705683324; darn=lists.xenproject.org;
        h=in-reply-to:content-disposition:mime-version:references:message-id
         :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to;
        bh=s8+1LVx/LS7Q7kV71hnu0RtkCDp1L/JfIrlZR7un8Qg=;
        b=EJuhEMy6gb0uEkHpgqCla664sgG5dycP1pJ4J9+8I98ljIuDAR60VYQVK5MnJnAhYa
         rZ8waNYRY/XNFCpRDfJ4zB0HERicB47RCsKzGThTmI7IRU2bASv4lx3d9Gvvw4ygelZ0
         IYozSWHszL7p6RFPsfPbg2ACHFBYgr/CeAuTU=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705078524; x=1705683324;
        h=in-reply-to:content-disposition:mime-version:references:message-id
         :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to;
        bh=s8+1LVx/LS7Q7kV71hnu0RtkCDp1L/JfIrlZR7un8Qg=;
        b=Onae0d2dTzMZlOO0vAsRLvyA0xX39QuYDdIgFap9Syfpa8vURSbnrr2iktny5TKsVV
         QlEl5nCURsTjqaZrxGaKdzQ9K8zsiUzfqcl8i+U8r1RzhhhceXAWqar6nYe64gn4SVY2
         YR8rGKN4HgicqUSa391zxxTKhCpSHAyoqMB8k1e9FLIf8ElxVrRsgoEFQgoKQLt5GTmk
         WlU1fKk3s++gx+kTmBcgjb5RPeh+9eJulaWqVE45qadW5MrggWTQeCAWFD7Z6W4RXtJg
         W6qeDQ75+Us6cETi6PZioQwyJrc8hFLFYa1YSWAYjhAqLlia1NLoXwBVqXc93wpSZAwK
         2t0A==
X-Gm-Message-State: AOJu0Yw9e/9WLfcRBbBqJ4FeOMIoEYOIhkpZDGz907YzIyazB/NiUTpy
	w6KnbRlNJxoSyogBfZ+Pi5SWMrh8dp427w==
X-Google-Smtp-Source: AGHT+IFM4AZWENnVELrVSK/nLRpXdWDxuSQpbqaLs5pcIz9361GjDvNaJph2EcM30ZAm8oa2QUdUaQ==
X-Received: by 2002:a05:600c:19d2:b0:40e:5a80:7e7c with SMTP id u18-20020a05600c19d200b0040e5a807e7cmr1038330wmq.7.1705078524507;
        Fri, 12 Jan 2024 08:55:24 -0800 (PST)
Date: Fri, 12 Jan 2024 16:55:22 +0000
From: Anthony PERARD <anthony.perard@citrix.com>
To: Juergen Gross <jgross@suse.com>
Cc: xen-devel@lists.xenproject.org,
	George Dunlap <george.dunlap@citrix.com>,
	Nick Rosbrook <rosbrookn@gmail.com>, Wei Liu <wl@xen.org>,
	Jason Andryuk <jandryuk@gmail.com>
Subject: Re: [PATCH v3 16/33] tools/libs/light: add backend type for 9pfs PV
 devices
Message-ID: <2a2f50d3-f065-4b03-b75d-401a40fcb6fd@perard>
References: <20240104090055.27323-1-jgross@suse.com>
 <20240104090055.27323-17-jgross@suse.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <20240104090055.27323-17-jgross@suse.com>

On Thu, Jan 04, 2024 at 10:00:38AM +0100, Juergen Gross wrote:
> diff --git a/tools/libs/light/libxl_9pfs.c b/tools/libs/light/libxl_9pfs.c
> index 5ab0d3aa21..486bc4326e 100644
> --- a/tools/libs/light/libxl_9pfs.c
> +++ b/tools/libs/light/libxl_9pfs.c
> @@ -33,20 +33,159 @@ static int libxl__set_xenstore_p9(libxl__gc *gc, uint32_t domid,
>  
>      flexarray_append_pair(front, "tag", p9->tag);
>  
> +    if (p9->type == LIBXL_P9_TYPE_XEN_9PFSD) {
> +        flexarray_append_pair(back, "max-space",
> +                              GCSPRINTF("%u", p9->max_space));
> +        flexarray_append_pair(back, "max-files",
> +                              GCSPRINTF("%u", p9->max_files));
> +        flexarray_append_pair(back, "max-open-files",
> +                              GCSPRINTF("%u", p9->max_open_files));
> +        flexarray_append_pair(back, "auto-delete",
> +                              p9->auto_delete ? "1" : "0");
> +    }
> +
> +    return 0;
> +}
> +
> +static int libxl__device_from_p9(libxl__gc *gc, uint32_t domid,
> +                                 libxl_device_p9 *type, libxl__device *device)
> +{
> +    device->backend_devid   = type->devid;
> +    device->backend_domid   = type->backend_domid;
> +    device->backend_kind    = type->type == LIBXL_P9_TYPE_QEMU
> +                              ? LIBXL__DEVICE_KIND_9PFS
> +                              : LIBXL__DEVICE_KIND_XEN_9PFS;
> +    device->devid           = type->devid;
> +    device->domid           = domid;
> +    device->kind            = LIBXL__DEVICE_KIND_9PFS;
> +
>      return 0;
>  }
>  
> -#define libxl__add_p9s NULL
> +static int libxl_device_p9_dm_needed(void *e, unsigned domid)

Prefix of the function should be "libxl__" as it's only internal to
libxl.

> +{
> +    libxl_device_p9 *elem = e;
> +
> +    return elem->type == LIBXL_P9_TYPE_QEMU && elem->backend_domid == domid;
> +}
> +
> +typedef struct libxl__aop9_state libxl__aop9_state;
> +
> +struct libxl__aop9_state {
> +    libxl__spawn_state spawn;
> +    libxl__ao_device *aodev;
> +    libxl_device_p9 *p9;
> +    uint32_t domid;
> +    void (*callback)(libxl__egc *, libxl__aop9_state *, int);
> +};
> +
> +static void xen9pfsd_spawn_outcome(libxl__egc *egc, libxl__aop9_state *aop9,
> +                                   int rc)
> +{
> +    aop9->aodev->rc = rc;
> +    if (rc)
> +        aop9->aodev->callback(egc, aop9->aodev);
> +    else
> +        libxl__device_add_async(egc, aop9->domid, &libxl__p9_devtype,
> +                                aop9->p9, aop9->aodev);
> +}
> +
> +static void xen9pfsd_confirm(libxl__egc *egc, libxl__spawn_state *spawn,
> +                             const char *xsdata)
> +{
> +    STATE_AO_GC(spawn->ao);
> +
> +    if (!xsdata)
> +        return;
> +
> +    if (strcmp(xsdata, "running"))
> +        return;
> +
> +    libxl__spawn_initiate_detach(gc, spawn);
> +}
> +
> +static void xen9pfsd_failed(libxl__egc *egc, libxl__spawn_state *spawn, int rc)
> +{
> +    libxl__aop9_state *aop9 = CONTAINER_OF(spawn, *aop9, spawn);
> +
> +    xen9pfsd_spawn_outcome(egc, aop9, rc);
> +}
> +
> +static void xen9pfsd_detached(libxl__egc *egc, libxl__spawn_state *spawn)
> +{
> +    libxl__aop9_state *aop9 = CONTAINER_OF(spawn, *aop9, spawn);
> +
> +    xen9pfsd_spawn_outcome(egc, aop9, 0);
> +}
> +
> +static int xen9pfsd_spawn(libxl__egc *egc, uint32_t domid, libxl_device_p9 *p9,
> +                         libxl__ao_device *aodev)
> +{
> +    STATE_AO_GC(aodev->ao);
> +    struct libxl__aop9_state *aop9;
> +    int rc;
> +    char *args[] = { "xen-9pfsd", NULL };
> +    char *path = GCSPRINTF("/local/domain/%u/libxl/xen-9pfs",
> +                           p9->backend_domid);
> +
> +    if (p9->type != LIBXL_P9_TYPE_XEN_9PFSD ||
> +        libxl__xs_read(gc, XBT_NULL, GCSPRINTF("%s/state", path)))

I feel like this check and this function might not work as expected.
What happen if we try to add more than one 9pfs "device"? libxl I think
is going to try to start several xen-9pfs daemon before the first one
have had time to write the "*/state" path.
What about two different libxl process trying to spawn that daemon? Is
xen-9pfs going to behave well and have one giveup? But that would
probably mean that libxl is going to have an error due to the process
exiting early, maybe.

> +        return 0;
> +
> +    GCNEW(aop9);
> +    aop9->aodev = aodev;
> +    aop9->p9 = p9;
> +    aop9->domid = domid;
> +    aop9->callback = xen9pfsd_spawn_outcome;
> +
> +    aop9->spawn.ao = aodev->ao;
> +    aop9->spawn.what = "xen-9pfs daemon";
> +    aop9->spawn.xspath = GCSPRINTF("%s/state", path);
> +    aop9->spawn.timeout_ms = LIBXL_DEVICE_MODEL_START_TIMEOUT * 1000;
> +    aop9->spawn.pidpath = GCSPRINTF("%s/pid", path);
> +    aop9->spawn.midproc_cb = libxl__spawn_record_pid;
> +    aop9->spawn.confirm_cb = xen9pfsd_confirm;
> +    aop9->spawn.failure_cb = xen9pfsd_failed;
> +    aop9->spawn.detached_cb = xen9pfsd_detached;
> +    rc = libxl__spawn_spawn(egc, &aop9->spawn);
> +    if (rc < 0)
> +        return rc;
> +    if (!rc) {
> +        setsid();
> +        libxl__exec(gc, -1, -1, -1, LIBEXEC_BIN "/xen-9pfsd", args, NULL);
> +    }
> +
> +    return 1;
> +}

Could you reorder the file, to make it easier to follow the code of
the async style? "xen9pfsd_spawn()" should be first, followed by
_confirm() _failed and _detached() and finally xen9pfsd_spawn_outcome().

> +
> +static void libxl__device_p9_add(libxl__egc *egc, uint32_t domid,
> +                                 libxl_device_p9 *p9,
> +                                 libxl__ao_device *aodev)
> +{
> +    int rc;
> +
> +    rc = xen9pfsd_spawn(egc, domid, p9, aodev);
> +    if (rc == 1)

I'd like a comment about what's different about rc==1 vs rc==0, here or
in the function xen9pfsd_spawn. These functions that sometime setup a
callback (or actually call it) and sometime don't, make things harder to
follow.

Or maybe we could rewrite things a bit so that there's only one function
that calls libxl__device_add_async(). But the current
libxl__device_p9_add() is kind of ok, with additional comments.

> +        return;
> +
> +    if (rc == 0)
> +        libxl__device_add_async(egc, domid, &libxl__p9_devtype, p9, aodev);
> +
> +    aodev->rc = rc;
> +    if (rc)
> +        aodev->callback(egc, aodev);
> +}
> +
>  #define libxl_device_p9_list NULL
>  #define libxl_device_p9_compare NULL
>  
>  static LIBXL_DEFINE_UPDATE_DEVID(p9)
> -static LIBXL_DEFINE_DEVICE_FROM_TYPE(p9)
> +static LIBXL_DEFINE_DEVICES_ADD(p9)
>  
>  LIBXL_DEFINE_DEVICE_REMOVE(p9)
>  
>  DEFINE_DEVICE_TYPE_STRUCT(p9, 9PFS, p9s,
> -    .skip_attach = 1,
>      .set_xenstore_config = (device_set_xenstore_config_fn_t)
>                             libxl__set_xenstore_p9,
> +    .dm_needed = libxl_device_p9_dm_needed,
>  );
> diff --git a/tools/libs/light/libxl_types.idl b/tools/libs/light/libxl_types.idl
> index 7d8bd5d216..82565c4c10 100644
> --- a/tools/libs/light/libxl_types.idl
> +++ b/tools/libs/light/libxl_types.idl
> @@ -150,6 +150,12 @@ libxl_nic_type = Enumeration("nic_type", [
>      (2, "VIF"),
>      ])
>  
> +libxl_p9_type = Enumeration("p9_type", [
> +    (0, "unknown"),
> +    (1, "qemu"),
> +    (2, "xen_9pfsd"),
> +    ])
> +
>  libxl_action_on_shutdown = Enumeration("action_on_shutdown", [
>      (1, "DESTROY"),
>  
> @@ -942,6 +948,11 @@ libxl_device_p9 = Struct("device_p9", [
>      ("path",             string),
>      ("security_model",   string),
>      ("devid",            libxl_devid),
> +    ("type",             libxl_p9_type),
> +    ("max_space",        integer),
> +    ("max_files",        integer),
> +    ("max_open_files",   integer),
> +    ("auto_delete",      bool),

These additional fields and options probably a
LIBXL_HAVE_XEN_9PFS macro in libxl.h.


Thanks,

-- 
Anthony PERARD


From xen-devel-bounces@lists.xenproject.org Fri Jan 12 17:55:28 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 12 Jan 2024 17:55:28 +0000
Received: from list by lists.xenproject.org with outflank-mailman.666949.1037917 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rOLkQ-000702-EZ; Fri, 12 Jan 2024 17:55:14 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 666949.1037917; Fri, 12 Jan 2024 17:55:14 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rOLkQ-0006zv-Bu; Fri, 12 Jan 2024 17:55:14 +0000
Received: by outflank-mailman (input) for mailman id 666949;
 Fri, 12 Jan 2024 17:55:12 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=Vfvq=IW=amd.com=Stewart.Hildebrand@srs-se1.protection.inumbo.net>)
 id 1rOLkO-0006zp-7h
 for xen-devel@lists.xenproject.org; Fri, 12 Jan 2024 17:55:12 +0000
Received: from NAM02-DM3-obe.outbound.protection.outlook.com
 (mail-dm3nam02on20601.outbound.protection.outlook.com
 [2a01:111:f403:2405::601])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id b979e91f-b173-11ee-98f1-6d05b1d4d9a1;
 Fri, 12 Jan 2024 18:55:09 +0100 (CET)
Received: from MN2PR03CA0016.namprd03.prod.outlook.com (2603:10b6:208:23a::21)
 by DM4PR12MB6254.namprd12.prod.outlook.com (2603:10b6:8:a5::17) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7181.19; Fri, 12 Jan
 2024 17:55:05 +0000
Received: from BL6PEPF0001AB4B.namprd04.prod.outlook.com
 (2603:10b6:208:23a:cafe::7b) by MN2PR03CA0016.outlook.office365.com
 (2603:10b6:208:23a::21) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7181.19 via Frontend
 Transport; Fri, 12 Jan 2024 17:55:04 +0000
Received: from SATLEXMB04.amd.com (165.204.84.17) by
 BL6PEPF0001AB4B.mail.protection.outlook.com (10.167.242.69) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.7181.14 via Frontend Transport; Fri, 12 Jan 2024 17:55:04 +0000
Received: from SATLEXMB08.amd.com (10.181.40.132) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.34; Fri, 12 Jan
 2024 11:55:04 -0600
Received: from SATLEXMB03.amd.com (10.181.40.144) by SATLEXMB08.amd.com
 (10.181.40.132) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.32; Fri, 12 Jan
 2024 09:55:04 -0800
Received: from [172.23.76.218] (10.180.168.240) by SATLEXMB03.amd.com
 (10.181.40.144) with Microsoft SMTP Server id 15.1.2507.34 via Frontend
 Transport; Fri, 12 Jan 2024 11:55:02 -0600
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: b979e91f-b173-11ee-98f1-6d05b1d4d9a1
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=aftT+pufbJN18xFGmpn6GZG2wvkg914bQAVvvxiKujlx0JrAZGO7BPZO5jdrgt486MEd9Zq32CXRVJDJvkd5TpcwImZfvQN/r3EpVxKOzxlc4UxrRgUycC1jSNybLn0TUAnz2+LSwTPYiK0CKPVAr6R02MjnX92cc4NWSbU9loPDTcyjb6jnt+bFKXmwd1zG8Fz3wIEdYP/xp1/iL8KFtc6/66PVM18o94xgH6z/a9SS594Yuz01cCYwquOd5s6s+Y+M/IUZ7HSzATidEEqYTregUKmgaUTxjmGZM3EuqCzQQdgkund5Ggmw7NknSupSZ51IMTsUCHpCZ0y60NPP4g==
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=Vg5eF91JrY0QGgVuEDVUEzxiWGv51OE1tc1RJ58P5c4=;
 b=gUJjOwR0n9t3un5rBrp54sn673wTBzyKv9rYwrZHrJBXL5CGqJa60z4tPO9DewpN8L85wmJtN20z2l83UoMXi5O0JOiSdnEZ0VD2g9K4QU683mJEuOKFFZk5pvjBya+AkrbpycCoy0KYjhk7/s5EsIhIJ+STopP24tiZVE/N8JIA6tQyQ2+7Iylh/o+XFXvUVj9ZyTa9namGb//ds5c+pegCJ9GsmqwerTQmn9tBU7+EB45Nk74aB905S+qw+/0Ym7ovVnKwqg3TgR7/cV1MQbx2AFLt+L3w8r2XmCe4a1UvQhJghW7AzhFRO1GVtpxwxjtA7jZqVyS0wTob6g+WKw==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=citrix.com 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)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=Vg5eF91JrY0QGgVuEDVUEzxiWGv51OE1tc1RJ58P5c4=;
 b=Xt3tUtLjh8i48xKNIkylZQd+lGD2jAgPbbg68XqAAJBqzzQpzcFMDrRUa+CBsDmRRkSyLz1XPUR+w52rPzIm1KIoncZLDz3APx/q/aE0GZXbhpRi2UT3Ehwprc5og1ohBpDpqe6q4ZdBWxBMy243T+8AlPBoQ1voKAWO/RbbXQM=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C
Message-ID: <590a157a-b9d4-4d2d-8aff-6584da3045c3@amd.com>
Date: Fri, 12 Jan 2024 12:54:56 -0500
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v12 01/15] vpci: use per-domain PCI lock to protect vpci
 structure
Content-Language: en-US
To: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
CC: <xen-devel@lists.xenproject.org>, Oleksandr Andrushchenko
	<oleksandr_andrushchenko@epam.com>, Jan Beulich <jbeulich@suse.com>, "Andrew
 Cooper" <andrew.cooper3@citrix.com>, Wei Liu <wl@xen.org>, George Dunlap
	<george.dunlap@citrix.com>, Julien Grall <julien@xen.org>, Stefano Stabellini
	<sstabellini@kernel.org>, Jun Nakajima <jun.nakajima@intel.com>, Kevin Tian
	<kevin.tian@intel.com>, Paul Durrant <paul@xen.org>, Volodymyr Babchuk
	<volodymyr_babchuk@epam.com>
References: <20240109215145.430207-1-stewart.hildebrand@amd.com>
 <20240109215145.430207-2-stewart.hildebrand@amd.com>
 <ZaFDS7uZgW5l0eHG@macbook>
From: Stewart Hildebrand <stewart.hildebrand@amd.com>
In-Reply-To: <ZaFDS7uZgW5l0eHG@macbook>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: BL6PEPF0001AB4B:EE_|DM4PR12MB6254:EE_
X-MS-Office365-Filtering-Correlation-Id: 881f2d72-2e8e-4982-32aa-08dc13979b73
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam: BCL:0;
X-Microsoft-Antispam-Message-Info:
	ORylSchM7sX4RKC2fdFs3NCfwjSlVHKI1AM2xS5X19d7d8S7IZOuH4vzh5KN+q73QGfYpxP5JagaPfTQKXGvt7YoJ3WZi0Bq5jDd2z8S18tjBOYLMWO0PCdCs8b0DdIEhUaeCin3iKpGRy8OXMGE87G/pKkOfFIgD7t1VmWZKPN5glFRmPUgXw2RnrX9RXwAEQX+n/SN8O8HltFx1H1Npmw9CMX3kk2KB2CfYOE/Ra7NwX2CndNwuLhShnZIBWBooYLlJ6vEYgfKvxGQMWyAtdSmAgTKvHZUX60tee58TFojlrI9g3+lEaIztMvK3JmierXRBvQNSRDpB9GUzt2XoVUNaM3oBzjgLOS/nQIXLwYJkAs2g8q0Qm630/gazuBJ+/JTOojopoNso0VFGeeGM6Yq4hFlAH1OxZ0bwEAv9dTGl+6ca5fL4feQzl30LIkFrYfbrJv75QH0SVtZGhzfTfyoxKlV3kuKLribPHeGXKbQPgk2mhyTVYumCAL+t5F5GtrML+Hp8qMfyR13I2PTudtG22DXEmbfF6PRsYGBwP7KCkVUZ3m7mqiGFHKnel4+yWcUurr0gbXF8xjMokyQRzvPHUsa7Ml9mOi+mD0lKoVJLC25s0NiRHBE3T5k01zme76Us8jtKsL+Dy36C5kOoIvOMPPBV4M5znYGG7QI8AcbqHNY7Sgxx9FHp3MQwKn6MEsPGGhc38X7wjhp2UOQWMu+zcLFhoK9gJ6DdujPU/THHXGzvZVOe/Xa+lbLB39t2fDVs3+p9dEsNVwPPtEbt8n6ExWFEWHtpxUCuWq79uSoVe7/huONbzQYTSU+6KQ3wdHrW+j50KucTRBjEC0+GQ==
X-Forefront-Antispam-Report:
	CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230031)(4636009)(346002)(376002)(136003)(39860400002)(396003)(230922051799003)(186009)(1800799012)(451199024)(82310400011)(64100799003)(46966006)(40470700004)(36840700001)(6666004)(83380400001)(6916009)(16576012)(316002)(47076005)(70206006)(54906003)(70586007)(53546011)(31696002)(81166007)(26005)(336012)(2616005)(426003)(44832011)(8936002)(8676002)(40460700003)(40480700001)(82740400003)(5660300002)(356005)(4326008)(36756003)(86362001)(31686004)(36860700001)(7416002)(30864003)(41300700001)(478600001)(2906002)(36900700001)(43740500002)(309714004);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Jan 2024 17:55:04.8462
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 881f2d72-2e8e-4982-32aa-08dc13979b73
X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com]
X-MS-Exchange-CrossTenant-AuthSource:
	BL6PEPF0001AB4B.namprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM4PR12MB6254

On 1/12/24 08:48, Roger Pau Monné wrote:
> On Tue, Jan 09, 2024 at 04:51:16PM -0500, Stewart Hildebrand wrote:
>> From: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>
>>
>> Use a previously introduced per-domain read/write lock to check
>> whether vpci is present, so we are sure there are no accesses to the
>> contents of the vpci struct if not.
> 
> Nit: isn't this sentence kind of awkward?  I would word it as:
> 
> "Use the per-domain PCI read/write lock to protect the presence of the
> pci device vpci field."

I'll use your suggested wording.

> 
>> This lock can be used (and in a
>> few cases is used right away) so that vpci removal can be performed
>> while holding the lock in write mode. Previously such removal could
>> race with vpci_read for example.
>>
>> When taking both d->pci_lock and pdev->vpci->lock, they should be
>> taken in this exact order: d->pci_lock then pdev->vpci->lock to avoid
>> possible deadlock situations.
>>
>> 1. Per-domain's pci_lock is used to protect pdev->vpci structure
>> from being removed.
>>
>> 2. Writing the command register and ROM BAR register may trigger
>> modify_bars to run, which in turn may access multiple pdevs while
>> checking for the existing BAR's overlap. The overlapping check, if
>> done under the read lock, requires vpci->lock to be acquired on both
>> devices being compared, which may produce a deadlock. It is not
>> possible to upgrade read lock to write lock in such a case. So, in
>> order to prevent the deadlock, use d->pci_lock instead.
> 
> ... use d->pci_lock in write mode instead.

Will fix

> 
>>
>> All other code, which doesn't lead to pdev->vpci destruction and does
>> not access multiple pdevs at the same time, can still use a
>> combination of the read lock and pdev->vpci->lock.
>>
>> 3. Drop const qualifier where the new rwlock is used and this is
>> appropriate.
>>
>> 4. Do not call process_pending_softirqs with any locks held. For that
>> unlock prior the call and re-acquire the locks after. After
>> re-acquiring the lock there is no need to check if pdev->vpci exists:
>>  - in apply_map because of the context it is called (no race condition
>>    possible)
>>  - for MSI/MSI-X debug code because it is called at the end of
>>    pdev->vpci access and no further access to pdev->vpci is made
>>
>> 5. Use d->pci_lock around for_each_pdev and pci_get_pdev_by_domain
>> while accessing pdevs in vpci code.
>>
>> Suggested-by: Roger Pau Monné <roger.pau@citrix.com>
>> Suggested-by: Jan Beulich <jbeulich@suse.com>
>> Signed-off-by: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>
>> Signed-off-by: Volodymyr Babchuk <volodymyr_babchuk@epam.com>
>> Signed-off-by: Stewart Hildebrand <stewart.hildebrand@amd.com>
> 
> Just one code fix regarding the usage of read_lock (instead of the
> trylock version) in vpci_msix_arch_print().. With that and the
> comments adjusted:
> 
> Reviewed-by: Roger Pau Monné <roger.pau@citrix.com>

Thanks! I'll reply to this with a v12.1 patch so as to not unnessecarily resend the whole series.

> 
>> ---
>> Changes in v12:
>>  - s/pci_rwlock/pci_lock/ in commit message
>>  - expand comment about scope of pci_lock in sched.h
>>  - in vpci_{read,write}, if hwdom is trying to access a device assigned
>>    to dom_xen, holding hwdom->pci_lock is sufficient (no need to hold
>>    dom_xen->pci_lock)
>>  - reintroduce ASSERT in vmx_pi_update_irte()
>>  - reintroduce ASSERT in __pci_enable_msi{x}()
>>  - delete note 6. in commit message about removing ASSERTs since we have
>>    reintroduced them
>>
>> Changes in v11:
>>  - Fixed commit message regarding possible spinlocks
>>  - Removed parameter from allocate_and_map_msi_pirq(), which was added
>>  in the prev version. Now we are taking pcidevs_lock in
>>  physdev_map_pirq()
>>  - Returned ASSERT to pci_enable_msi
>>  - Fixed case when we took read lock instead of write one
>>  - Fixed label indentation
>>
>> Changes in v10:
>>  - Moved printk pas locked area
>>  - Returned back ASSERTs
>>  - Added new parameter to allocate_and_map_msi_pirq() so it knows if
>>  it should take the global pci lock
>>  - Added comment about possible improvement in vpci_write
>>  - Changed ASSERT(rw_is_locked()) to rw_is_write_locked() in
>>    appropriate places
>>  - Renamed release_domain_locks() to release_domain_write_locks()
>>  - moved domain_done label in vpci_dump_msi() to correct place
>> Changes in v9:
>>  - extended locked region to protect vpci_remove_device and
>>    vpci_add_handlers() calls
>>  - vpci_write() takes lock in the write mode to protect
>>    potential call to modify_bars()
>>  - renamed lock releasing function
>>  - removed ASSERT()s from msi code
>>  - added trylock in vpci_dump_msi
>>
>> Changes in v8:
>>  - changed d->vpci_lock to d->pci_lock
>>  - introducing d->pci_lock in a separate patch
>>  - extended locked region in vpci_process_pending
>>  - removed pcidevs_lockis vpci_dump_msi()
>>  - removed some changes as they are not needed with
>>    the new locking scheme
>>  - added handling for hwdom && dom_xen case
>> ---
>>  xen/arch/x86/hvm/vmsi.c       | 22 +++++++--------
>>  xen/arch/x86/hvm/vmx/vmx.c    |  2 +-
>>  xen/arch/x86/irq.c            |  8 +++---
>>  xen/arch/x86/msi.c            | 14 +++++-----
>>  xen/arch/x86/physdev.c        |  2 ++
>>  xen/drivers/passthrough/pci.c |  9 +++---
>>  xen/drivers/vpci/header.c     | 18 ++++++++++++
>>  xen/drivers/vpci/msi.c        | 28 +++++++++++++++++--
>>  xen/drivers/vpci/msix.c       | 52 ++++++++++++++++++++++++++++++-----
>>  xen/drivers/vpci/vpci.c       | 28 ++++++++++++++++---
>>  xen/include/xen/sched.h       |  3 +-
>>  11 files changed, 144 insertions(+), 42 deletions(-)
>>
>> diff --git a/xen/arch/x86/hvm/vmsi.c b/xen/arch/x86/hvm/vmsi.c
>> index 128f23636279..03caf91beefc 100644
>> --- a/xen/arch/x86/hvm/vmsi.c
>> +++ b/xen/arch/x86/hvm/vmsi.c
>> @@ -468,7 +468,7 @@ int msixtbl_pt_register(struct domain *d, struct pirq *pirq, uint64_t gtable)
>>      struct msixtbl_entry *entry, *new_entry;
>>      int r = -EINVAL;
>>  
>> -    ASSERT(pcidevs_locked());
>> +    ASSERT(pcidevs_locked() || rw_is_locked(&d->pci_lock));
>>      ASSERT(rw_is_write_locked(&d->event_lock));
>>  
>>      if ( !msixtbl_initialised(d) )
>> @@ -538,7 +538,7 @@ void msixtbl_pt_unregister(struct domain *d, struct pirq *pirq)
>>      struct pci_dev *pdev;
>>      struct msixtbl_entry *entry;
>>  
>> -    ASSERT(pcidevs_locked());
>> +    ASSERT(pcidevs_locked() || rw_is_locked(&d->pci_lock));
>>      ASSERT(rw_is_write_locked(&d->event_lock));
>>  
>>      if ( !msixtbl_initialised(d) )
>> @@ -684,7 +684,7 @@ static int vpci_msi_update(const struct pci_dev *pdev, uint32_t data,
>>  {
>>      unsigned int i;
>>  
>> -    ASSERT(pcidevs_locked());
>> +    ASSERT(rw_is_locked(&pdev->domain->pci_lock));
>>  
>>      if ( (address & MSI_ADDR_BASE_MASK) != MSI_ADDR_HEADER )
>>      {
>> @@ -725,8 +725,8 @@ void vpci_msi_arch_update(struct vpci_msi *msi, const struct pci_dev *pdev)
>>      int rc;
>>  
>>      ASSERT(msi->arch.pirq != INVALID_PIRQ);
>> +    ASSERT(rw_is_locked(&pdev->domain->pci_lock));
>>  
>> -    pcidevs_lock();
>>      for ( i = 0; i < msi->vectors && msi->arch.bound; i++ )
>>      {
>>          struct xen_domctl_bind_pt_irq unbind = {
>> @@ -745,7 +745,6 @@ void vpci_msi_arch_update(struct vpci_msi *msi, const struct pci_dev *pdev)
>>  
>>      msi->arch.bound = !vpci_msi_update(pdev, msi->data, msi->address,
>>                                         msi->vectors, msi->arch.pirq, msi->mask);
>> -    pcidevs_unlock();
>>  }
>>  
>>  static int vpci_msi_enable(const struct pci_dev *pdev, unsigned int nr,
>> @@ -778,15 +777,14 @@ int vpci_msi_arch_enable(struct vpci_msi *msi, const struct pci_dev *pdev,
>>      int rc;
>>  
>>      ASSERT(msi->arch.pirq == INVALID_PIRQ);
>> +    ASSERT(rw_is_locked(&pdev->domain->pci_lock));
>>      rc = vpci_msi_enable(pdev, vectors, 0);
>>      if ( rc < 0 )
>>          return rc;
>>      msi->arch.pirq = rc;
>>  
>> -    pcidevs_lock();
>>      msi->arch.bound = !vpci_msi_update(pdev, msi->data, msi->address, vectors,
>>                                         msi->arch.pirq, msi->mask);
>> -    pcidevs_unlock();
>>  
>>      return 0;
>>  }
>> @@ -797,8 +795,8 @@ static void vpci_msi_disable(const struct pci_dev *pdev, int pirq,
>>      unsigned int i;
>>  
>>      ASSERT(pirq != INVALID_PIRQ);
>> +    ASSERT(rw_is_locked(&pdev->domain->pci_lock));
>>  
>> -    pcidevs_lock();
>>      for ( i = 0; i < nr && bound; i++ )
>>      {
>>          struct xen_domctl_bind_pt_irq bind = {
>> @@ -814,7 +812,6 @@ static void vpci_msi_disable(const struct pci_dev *pdev, int pirq,
>>      write_lock(&pdev->domain->event_lock);
>>      unmap_domain_pirq(pdev->domain, pirq);
>>      write_unlock(&pdev->domain->event_lock);
>> -    pcidevs_unlock();
>>  }
>>  
>>  void vpci_msi_arch_disable(struct vpci_msi *msi, const struct pci_dev *pdev)
>> @@ -854,6 +851,7 @@ int vpci_msix_arch_enable_entry(struct vpci_msix_entry *entry,
>>      int rc;
>>  
>>      ASSERT(entry->arch.pirq == INVALID_PIRQ);
>> +    ASSERT(rw_is_locked(&pdev->domain->pci_lock));
>>      rc = vpci_msi_enable(pdev, vmsix_entry_nr(pdev->vpci->msix, entry),
>>                           table_base);
>>      if ( rc < 0 )
>> @@ -861,7 +859,6 @@ int vpci_msix_arch_enable_entry(struct vpci_msix_entry *entry,
>>  
>>      entry->arch.pirq = rc;
>>  
>> -    pcidevs_lock();
>>      rc = vpci_msi_update(pdev, entry->data, entry->addr, 1, entry->arch.pirq,
>>                           entry->masked);
>>      if ( rc )
>> @@ -869,7 +866,6 @@ int vpci_msix_arch_enable_entry(struct vpci_msix_entry *entry,
>>          vpci_msi_disable(pdev, entry->arch.pirq, 1, false);
>>          entry->arch.pirq = INVALID_PIRQ;
>>      }
>> -    pcidevs_unlock();
>>  
>>      return rc;
>>  }
>> @@ -895,6 +891,8 @@ int vpci_msix_arch_print(const struct vpci_msix *msix)
>>  {
>>      unsigned int i;
>>  
>> +    ASSERT(rw_is_locked(&msix->pdev->domain->pci_lock));
>> +
>>      for ( i = 0; i < msix->max_entries; i++ )
>>      {
>>          const struct vpci_msix_entry *entry = &msix->entries[i];
>> @@ -913,7 +911,9 @@ int vpci_msix_arch_print(const struct vpci_msix *msix)
>>              struct pci_dev *pdev = msix->pdev;
>>  
>>              spin_unlock(&msix->pdev->vpci->lock);
>> +            read_unlock(&pdev->domain->pci_lock);
>>              process_pending_softirqs();
>> +            read_lock(&pdev->domain->pci_lock);
> 
> This should be a trylock, like it's on the caller (vpci_dump_msi()).

I'll replace the read_lock with:

            if ( !read_trylock(&pdev->domain->pci_lock) )
                return -EBUSY;

> 
>>              /* NB: we assume that pdev cannot go away for an alive domain. */
>>              if ( !pdev->vpci || !spin_trylock(&pdev->vpci->lock) )
>>                  return -EBUSY;
>> diff --git a/xen/arch/x86/hvm/vmx/vmx.c b/xen/arch/x86/hvm/vmx/vmx.c
>> index 8ff675883c2b..890faef48b82 100644
>> --- a/xen/arch/x86/hvm/vmx/vmx.c
>> +++ b/xen/arch/x86/hvm/vmx/vmx.c
>> @@ -413,7 +413,7 @@ static int cf_check vmx_pi_update_irte(const struct vcpu *v,
>>  
>>      spin_unlock_irq(&desc->lock);
>>  
>> -    ASSERT(pcidevs_locked());
>> +    ASSERT(pcidevs_locked() || rw_is_locked(&msi_desc->dev->domain->pci_lock));
>>  
>>      return iommu_update_ire_from_msi(msi_desc, &msi_desc->msg);
>>  
>> diff --git a/xen/arch/x86/irq.c b/xen/arch/x86/irq.c
>> index 50e49e1a4b6f..4d89d9af99fe 100644
>> --- a/xen/arch/x86/irq.c
>> +++ b/xen/arch/x86/irq.c
>> @@ -2166,7 +2166,7 @@ int map_domain_pirq(
>>          struct pci_dev *pdev;
>>          unsigned int nr = 0;
>>  
>> -        ASSERT(pcidevs_locked());
>> +        ASSERT(pcidevs_locked() || rw_is_locked(&d->pci_lock));
>>  
>>          ret = -ENODEV;
>>          if ( !cpu_has_apic )
>> @@ -2323,7 +2323,7 @@ int unmap_domain_pirq(struct domain *d, int pirq)
>>      if ( (pirq < 0) || (pirq >= d->nr_pirqs) )
>>          return -EINVAL;
>>  
>> -    ASSERT(pcidevs_locked());
>> +    ASSERT(pcidevs_locked() || rw_is_locked(&d->pci_lock));
>>      ASSERT(rw_is_write_locked(&d->event_lock));
>>  
>>      info = pirq_info(d, pirq);
>> @@ -2888,6 +2888,8 @@ int allocate_and_map_msi_pirq(struct domain *d, int index, int *pirq_p,
>>  {
>>      int irq, pirq, ret;
>>  
>> +    ASSERT(pcidevs_locked() || rw_is_locked(&d->pci_lock));
>> +
>>      switch ( type )
>>      {
>>      case MAP_PIRQ_TYPE_MSI:
>> @@ -2917,7 +2919,6 @@ int allocate_and_map_msi_pirq(struct domain *d, int index, int *pirq_p,
>>  
>>      msi->irq = irq;
>>  
>> -    pcidevs_lock();
>>      /* Verify or get pirq. */
>>      write_lock(&d->event_lock);
>>      pirq = allocate_pirq(d, index, *pirq_p, irq, type, &msi->entry_nr);
>> @@ -2933,7 +2934,6 @@ int allocate_and_map_msi_pirq(struct domain *d, int index, int *pirq_p,
>>  
>>   done:
>>      write_unlock(&d->event_lock);
>> -    pcidevs_unlock();
>>      if ( ret )
>>      {
>>          switch ( type )
>> diff --git a/xen/arch/x86/msi.c b/xen/arch/x86/msi.c
>> index 335c0868a225..7da2affa2e82 100644
>> --- a/xen/arch/x86/msi.c
>> +++ b/xen/arch/x86/msi.c
>> @@ -602,7 +602,7 @@ static int msi_capability_init(struct pci_dev *dev,
>>      unsigned int i, mpos;
>>      uint16_t control;
>>  
>> -    ASSERT(pcidevs_locked());
>> +    ASSERT(pcidevs_locked() || rw_is_locked(&dev->domain->pci_lock));
>>      pos = pci_find_cap_offset(dev->sbdf, PCI_CAP_ID_MSI);
>>      if ( !pos )
>>          return -ENODEV;
>> @@ -771,7 +771,7 @@ static int msix_capability_init(struct pci_dev *dev,
>>      if ( !pos )
>>          return -ENODEV;
>>  
>> -    ASSERT(pcidevs_locked());
>> +    ASSERT(pcidevs_locked() || rw_is_locked(&dev->domain->pci_lock));
>>  
>>      control = pci_conf_read16(dev->sbdf, msix_control_reg(pos));
>>      /*
>> @@ -988,11 +988,11 @@ static int __pci_enable_msi(struct pci_dev *pdev, struct msi_info *msi,
>>  {
>>      struct msi_desc *old_desc;
>>  
>> -    ASSERT(pcidevs_locked());
>> -
>>      if ( !pdev )
>>          return -ENODEV;
>>  
>> +    ASSERT(pcidevs_locked() || rw_is_locked(&pdev->domain->pci_lock));
>> +
>>      old_desc = find_msi_entry(pdev, msi->irq, PCI_CAP_ID_MSI);
>>      if ( old_desc )
>>      {
>> @@ -1043,11 +1043,11 @@ static int __pci_enable_msix(struct pci_dev *pdev, struct msi_info *msi,
>>  {
>>      struct msi_desc *old_desc;
>>  
>> -    ASSERT(pcidevs_locked());
>> -
>>      if ( !pdev || !pdev->msix )
>>          return -ENODEV;
>>  
>> +    ASSERT(pcidevs_locked() || rw_is_locked(&pdev->domain->pci_lock));
>> +
>>      if ( msi->entry_nr >= pdev->msix->nr_entries )
>>          return -EINVAL;
>>  
>> @@ -1154,7 +1154,7 @@ int pci_prepare_msix(u16 seg, u8 bus, u8 devfn, bool off)
>>  int pci_enable_msi(struct pci_dev *pdev, struct msi_info *msi,
>>                     struct msi_desc **desc)
>>  {
>> -    ASSERT(pcidevs_locked());
>> +    ASSERT(pcidevs_locked() || rw_is_locked(&pdev->domain->pci_lock));
>>  
>>      if ( !use_msi )
>>          return -EPERM;
>> diff --git a/xen/arch/x86/physdev.c b/xen/arch/x86/physdev.c
>> index 47c4da0af7e1..369c9e788c1c 100644
>> --- a/xen/arch/x86/physdev.c
>> +++ b/xen/arch/x86/physdev.c
>> @@ -123,7 +123,9 @@ int physdev_map_pirq(domid_t domid, int type, int *index, int *pirq_p,
>>  
>>      case MAP_PIRQ_TYPE_MSI:
>>      case MAP_PIRQ_TYPE_MULTI_MSI:
>> +        pcidevs_lock();
>>          ret = allocate_and_map_msi_pirq(d, *index, pirq_p, type, msi);
>> +        pcidevs_unlock();
>>          break;
>>  
>>      default:
>> diff --git a/xen/drivers/passthrough/pci.c b/xen/drivers/passthrough/pci.c
>> index 1439d1ef2b26..3a973324bca1 100644
>> --- a/xen/drivers/passthrough/pci.c
>> +++ b/xen/drivers/passthrough/pci.c
>> @@ -750,7 +750,6 @@ int pci_add_device(u16 seg, u8 bus, u8 devfn,
>>          pdev->domain = hardware_domain;
>>          write_lock(&hardware_domain->pci_lock);
>>          list_add(&pdev->domain_list, &hardware_domain->pdev_list);
>> -        write_unlock(&hardware_domain->pci_lock);
>>  
>>          /*
>>           * For devices not discovered by Xen during boot, add vPCI handlers
>> @@ -759,18 +758,18 @@ int pci_add_device(u16 seg, u8 bus, u8 devfn,
>>          ret = vpci_add_handlers(pdev);
>>          if ( ret )
>>          {
>> -            printk(XENLOG_ERR "Setup of vPCI failed: %d\n", ret);
>> -            write_lock(&hardware_domain->pci_lock);
>>              list_del(&pdev->domain_list);
>>              write_unlock(&hardware_domain->pci_lock);
>>              pdev->domain = NULL;
>> +            printk(XENLOG_ERR "Setup of vPCI failed: %d\n", ret);
>>              goto out;
>>          }
>> +        write_unlock(&hardware_domain->pci_lock);
>>          ret = iommu_add_device(pdev);
>>          if ( ret )
>>          {
>> -            vpci_remove_device(pdev);
>>              write_lock(&hardware_domain->pci_lock);
>> +            vpci_remove_device(pdev);
>>              list_del(&pdev->domain_list);
>>              write_unlock(&hardware_domain->pci_lock);
>>              pdev->domain = NULL;
>> @@ -1146,7 +1145,9 @@ static void __hwdom_init setup_one_hwdom_device(const struct setup_hwdom *ctxt,
>>      } while ( devfn != pdev->devfn &&
>>                PCI_SLOT(devfn) == PCI_SLOT(pdev->devfn) );
>>  
>> +    write_lock(&ctxt->d->pci_lock);
>>      err = vpci_add_handlers(pdev);
>> +    write_unlock(&ctxt->d->pci_lock);
>>      if ( err )
>>          printk(XENLOG_ERR "setup of vPCI for d%d failed: %d\n",
>>                 ctxt->d->domain_id, err);
>> diff --git a/xen/drivers/vpci/header.c b/xen/drivers/vpci/header.c
>> index 58195549d50a..8f5850b8cf6d 100644
>> --- a/xen/drivers/vpci/header.c
>> +++ b/xen/drivers/vpci/header.c
>> @@ -173,6 +173,7 @@ bool vpci_process_pending(struct vcpu *v)
>>          if ( rc == -ERESTART )
>>              return true;
>>  
>> +        write_lock(&v->domain->pci_lock);
>>          spin_lock(&v->vpci.pdev->vpci->lock);
>>          /* Disable memory decoding unconditionally on failure. */
>>          modify_decoding(v->vpci.pdev,
>> @@ -191,6 +192,7 @@ bool vpci_process_pending(struct vcpu *v)
>>               * failure.
>>               */
>>              vpci_remove_device(v->vpci.pdev);
>> +        write_unlock(&v->domain->pci_lock);
>>      }
>>  
>>      return false;
>> @@ -202,8 +204,20 @@ static int __init apply_map(struct domain *d, const struct pci_dev *pdev,
>>      struct map_data data = { .d = d, .map = true };
>>      int rc;
>>  
>> +    ASSERT(rw_is_write_locked(&d->pci_lock));
>> +
>>      while ( (rc = rangeset_consume_ranges(mem, map_range, &data)) == -ERESTART )
>> +    {
>> +        /*
>> +         * It's safe to drop and reacquire the lock in this context
>> +         * without risking pdev disappearing because devices cannot be
>> +         * removed until the initial domain has been started.
>> +         */
>> +        write_unlock(&d->pci_lock);
>>          process_pending_softirqs();
>> +        write_lock(&d->pci_lock);
> 
> Hm, I should have noticed before, but we already call
> process_pending_softirqs() with the pdev->vpci->lock held here, so it
> would make sense to drop it also.

I don't quite understand this, maybe I'm missing something. I don't see where we acquire pdev->vpci->lock before calling process_pending_softirqs()?

Also, I tried adding

    ASSERT(!spin_is_locked(&pdev->vpci->lock));

both here in apply_map() and in vpci_process_pending(), and they haven't triggered in either dom0 or domU test cases, tested on both arm and x86.

> 
> Fix should be in a separate patch.

Agreed, I'll send v12.1 addressing the other feedback, and we can address this separately.

> 
>> +    }
>> +
>>      rangeset_destroy(mem);
>>      if ( !rc )
>>          modify_decoding(pdev, cmd, false);
>> @@ -244,6 +258,8 @@ static int modify_bars(const struct pci_dev *pdev, uint16_t cmd, bool rom_only)
>>      unsigned int i;
>>      int rc;
>>  
>> +    ASSERT(rw_is_write_locked(&pdev->domain->pci_lock));
>> +
>>      if ( !mem )
>>          return -ENOMEM;
>>  
>> @@ -524,6 +540,8 @@ static int cf_check init_header(struct pci_dev *pdev)
>>      int rc;
>>      bool mask_cap_list = false;
>>  
>> +    ASSERT(rw_is_write_locked(&pdev->domain->pci_lock));
>> +
>>      switch ( pci_conf_read8(pdev->sbdf, PCI_HEADER_TYPE) & 0x7f )
>>      {
>>      case PCI_HEADER_TYPE_NORMAL:
>> diff --git a/xen/drivers/vpci/msi.c b/xen/drivers/vpci/msi.c
>> index a253ccbd7db7..6ff71e5f9ab7 100644
>> --- a/xen/drivers/vpci/msi.c
>> +++ b/xen/drivers/vpci/msi.c
>> @@ -263,7 +263,7 @@ REGISTER_VPCI_INIT(init_msi, VPCI_PRIORITY_LOW);
>>  
>>  void vpci_dump_msi(void)
>>  {
>> -    const struct domain *d;
>> +    struct domain *d;
>>  
>>      rcu_read_lock(&domlist_read_lock);
>>      for_each_domain ( d )
>> @@ -275,6 +275,9 @@ void vpci_dump_msi(void)
>>  
>>          printk("vPCI MSI/MSI-X d%d\n", d->domain_id);
>>  
>> +        if ( !read_trylock(&d->pci_lock) )
>> +            continue;
>> +
>>          for_each_pdev ( d, pdev )
>>          {
>>              const struct vpci_msi *msi;
>> @@ -316,14 +319,33 @@ void vpci_dump_msi(void)
>>                       * holding the lock.
>>                       */
>>                      printk("unable to print all MSI-X entries: %d\n", rc);
>> -                    process_pending_softirqs();
>> -                    continue;
>> +                    goto pdev_done;
>>                  }
>>              }
>>  
>>              spin_unlock(&pdev->vpci->lock);
>> +        pdev_done:
>> +            /*
>> +             * Unlock lock to process pending softirqs. This is
>> +             * potentially unsafe, as d->pdev_list can be changed in
>> +             * meantime.
>> +             */
>> +            read_unlock(&d->pci_lock);
>>              process_pending_softirqs();
>> +            if ( !read_trylock(&d->pci_lock) )
>> +            {
>> +                printk("unable to access other devices for the domain\n");
>> +                goto domain_done;
>> +            }
>>          }
>> +        read_unlock(&d->pci_lock);
>> +    domain_done:
>> +        /*
>> +         * We need this label at the end of the loop, but some
>> +         * compilers might not be happy about label at the end of the
>> +         * compound statement so we adding an empty statement here.
>> +         */
>> +        ;
>>      }
>>      rcu_read_unlock(&domlist_read_lock);
>>  }
>> diff --git a/xen/drivers/vpci/msix.c b/xen/drivers/vpci/msix.c
>> index d1126a417da9..b6abab47efdd 100644
>> --- a/xen/drivers/vpci/msix.c
>> +++ b/xen/drivers/vpci/msix.c
>> @@ -147,6 +147,8 @@ static struct vpci_msix *msix_find(const struct domain *d, unsigned long addr)
>>  {
>>      struct vpci_msix *msix;
>>  
>> +    ASSERT(rw_is_locked(&d->pci_lock));
>> +
>>      list_for_each_entry ( msix, &d->arch.hvm.msix_tables, next )
>>      {
>>          const struct vpci_bar *bars = msix->pdev->vpci->header.bars;
>> @@ -163,7 +165,13 @@ static struct vpci_msix *msix_find(const struct domain *d, unsigned long addr)
>>  
>>  static int cf_check msix_accept(struct vcpu *v, unsigned long addr)
>>  {
>> -    return !!msix_find(v->domain, addr);
>> +    int rc;
>> +
>> +    read_lock(&v->domain->pci_lock);
>> +    rc = !!msix_find(v->domain, addr);
>> +    read_unlock(&v->domain->pci_lock);
>> +
>> +    return rc;
>>  }
>>  
>>  static bool access_allowed(const struct pci_dev *pdev, unsigned long addr,
>> @@ -358,21 +366,35 @@ static int adjacent_read(const struct domain *d, const struct vpci_msix *msix,
>>  static int cf_check msix_read(
>>      struct vcpu *v, unsigned long addr, unsigned int len, unsigned long *data)
>>  {
>> -    const struct domain *d = v->domain;
>> -    struct vpci_msix *msix = msix_find(d, addr);
>> +    struct domain *d = v->domain;
>> +    struct vpci_msix *msix;
>>      const struct vpci_msix_entry *entry;
>>      unsigned int offset;
>>  
>>      *data = ~0UL;
>>  
>> +    read_lock(&d->pci_lock);
>> +
>> +    msix = msix_find(d, addr);
>>      if ( !msix )
>> +    {
>> +        read_unlock(&d->pci_lock);
>>          return X86EMUL_RETRY;
>> +    }
>>  
>>      if ( adjacent_handle(msix, addr) )
>> -        return adjacent_read(d, msix, addr, len, data);
>> +    {
>> +        int rc = adjacent_read(d, msix, addr, len, data);
>> +
>> +        read_unlock(&d->pci_lock);
>> +        return rc;
>> +    }
>>  
>>      if ( !access_allowed(msix->pdev, addr, len) )
>> +    {
>> +        read_unlock(&d->pci_lock);
>>          return X86EMUL_OKAY;
>> +    }
>>  
>>      spin_lock(&msix->pdev->vpci->lock);
>>      entry = get_entry(msix, addr);
>> @@ -404,6 +426,7 @@ static int cf_check msix_read(
>>          break;
>>      }
>>      spin_unlock(&msix->pdev->vpci->lock);
>> +    read_unlock(&d->pci_lock);
>>  
>>      return X86EMUL_OKAY;
>>  }
>> @@ -491,19 +514,33 @@ static int adjacent_write(const struct domain *d, const struct vpci_msix *msix,
>>  static int cf_check msix_write(
>>      struct vcpu *v, unsigned long addr, unsigned int len, unsigned long data)
>>  {
>> -    const struct domain *d = v->domain;
>> -    struct vpci_msix *msix = msix_find(d, addr);
>> +    struct domain *d = v->domain;
>> +    struct vpci_msix *msix;
>>      struct vpci_msix_entry *entry;
>>      unsigned int offset;
>>  
>> +    read_lock(&d->pci_lock);
>> +
>> +    msix = msix_find(d, addr);
>>      if ( !msix )
>> +    {
>> +        read_unlock(&d->pci_lock);
>>          return X86EMUL_RETRY;
>> +    }
>>  
>>      if ( adjacent_handle(msix, addr) )
>> -        return adjacent_write(d, msix, addr, len, data);
>> +    {
>> +        int rc = adjacent_write(d, msix, addr, len, data);
>> +
>> +        read_unlock(&d->pci_lock);
>> +        return rc;
>> +    }
>>  
>>      if ( !access_allowed(msix->pdev, addr, len) )
>> +    {
>> +        read_unlock(&d->pci_lock);
>>          return X86EMUL_OKAY;
>> +    }
>>  
>>      spin_lock(&msix->pdev->vpci->lock);
>>      entry = get_entry(msix, addr);
>> @@ -579,6 +616,7 @@ static int cf_check msix_write(
>>          break;
>>      }
>>      spin_unlock(&msix->pdev->vpci->lock);
>> +    read_unlock(&d->pci_lock);
>>  
>>      return X86EMUL_OKAY;
>>  }
>> diff --git a/xen/drivers/vpci/vpci.c b/xen/drivers/vpci/vpci.c
>> index 72ef277c4f8e..a1a004460491 100644
>> --- a/xen/drivers/vpci/vpci.c
>> +++ b/xen/drivers/vpci/vpci.c
>> @@ -42,6 +42,8 @@ extern vpci_register_init_t *const __end_vpci_array[];
>>  
>>  void vpci_remove_device(struct pci_dev *pdev)
>>  {
>> +    ASSERT(rw_is_write_locked(&pdev->domain->pci_lock));
>> +
>>      if ( !has_vpci(pdev->domain) || !pdev->vpci )
>>          return;
>>  
>> @@ -77,6 +79,8 @@ int vpci_add_handlers(struct pci_dev *pdev)
>>      const unsigned long *ro_map;
>>      int rc = 0;
>>  
>> +    ASSERT(rw_is_write_locked(&pdev->domain->pci_lock));
>> +
>>      if ( !has_vpci(pdev->domain) )
>>          return 0;
>>  
>> @@ -361,7 +365,7 @@ static uint32_t merge_result(uint32_t data, uint32_t new, unsigned int size,
>>  
>>  uint32_t vpci_read(pci_sbdf_t sbdf, unsigned int reg, unsigned int size)
>>  {
>> -    const struct domain *d = current->domain;
>> +    struct domain *d = current->domain;
>>      const struct pci_dev *pdev;
>>      const struct vpci_register *r;
>>      unsigned int data_offset = 0;
>> @@ -375,13 +379,19 @@ uint32_t vpci_read(pci_sbdf_t sbdf, unsigned int reg, unsigned int size)
>>  
>>      /*
>>       * Find the PCI dev matching the address, which for hwdom also requires
>> -     * consulting DomXEN.  Passthrough everything that's not trapped.
>> +     * consulting DomXEN. Passthrough everything that's not trapped.
> 
> The double space in the comment above was intentional.

Will fix

> 
>> +     * If this is hwdom and the device is assigned to dom_xen, acquiring hwdom's
> 
> For consistency with the above sentence, could you please use DomXEN
> here?

Yes

> 
>> +     * pci_lock is sufficient.
>>       */
>> +    read_lock(&d->pci_lock);
>>      pdev = pci_get_pdev(d, sbdf);
>>      if ( !pdev && is_hardware_domain(d) )
>>          pdev = pci_get_pdev(dom_xen, sbdf);
>>      if ( !pdev || !pdev->vpci )
>> +    {
>> +        read_unlock(&d->pci_lock);
>>          return vpci_read_hw(sbdf, reg, size);
>> +    }
>>  
>>      spin_lock(&pdev->vpci->lock);
>>  
>> @@ -428,6 +438,7 @@ uint32_t vpci_read(pci_sbdf_t sbdf, unsigned int reg, unsigned int size)
>>          ASSERT(data_offset < size);
>>      }
>>      spin_unlock(&pdev->vpci->lock);
>> +    read_unlock(&d->pci_lock);
>>  
>>      if ( data_offset < size )
>>      {
>> @@ -470,7 +481,7 @@ static void vpci_write_helper(const struct pci_dev *pdev,
>>  void vpci_write(pci_sbdf_t sbdf, unsigned int reg, unsigned int size,
>>                  uint32_t data)
>>  {
>> -    const struct domain *d = current->domain;
>> +    struct domain *d = current->domain;
>>      const struct pci_dev *pdev;
>>      const struct vpci_register *r;
>>      unsigned int data_offset = 0;
>> @@ -483,8 +494,14 @@ void vpci_write(pci_sbdf_t sbdf, unsigned int reg, unsigned int size,
>>  
>>      /*
>>       * Find the PCI dev matching the address, which for hwdom also requires
>> -     * consulting DomXEN.  Passthrough everything that's not trapped.
>> +     * consulting DomXEN. Passthrough everything that's not trapped.
> 
> Same here re the double space removal and the usage of dom_xen below.

Will fix

> 
> Thanks, Roger.


From xen-devel-bounces@lists.xenproject.org Fri Jan 12 18:01:00 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 12 Jan 2024 18:01:00 +0000
Received: from list by lists.xenproject.org with outflank-mailman.666955.1037927 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rOLpw-0000V4-8T; Fri, 12 Jan 2024 18:00:56 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 666955.1037927; Fri, 12 Jan 2024 18:00:56 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rOLpw-0000Ux-5r; Fri, 12 Jan 2024 18:00:56 +0000
Received: by outflank-mailman (input) for mailman id 666955;
 Fri, 12 Jan 2024 18:00:55 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rOLpv-0000Un-8b; Fri, 12 Jan 2024 18:00:55 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rOLpu-0006of-SI; Fri, 12 Jan 2024 18:00:54 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rOLpu-0008SV-Jb; Fri, 12 Jan 2024 18:00:54 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rOLpu-0007ml-Hf; Fri, 12 Jan 2024 18:00:54 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=OCVlMbedVdJjerzdhINQw4n6ic8YXbKt+zoqOMn3KUg=; b=KiR914kuyQ4nbNd58I2va2bXL0
	4OlW687TD6gBb0qgBbL1p1dlgOcCWIfVuyOHSQWkTEDOvXA5vpeRylomskPbGCQIvAK2mFFp3aLNN
	wiHPS71eO0ZWtIIvEMl6ZN29HLYLrl0ZNdhtlDi6sqr/YGLSQgBJrSy7+CG/jLJ3WQRQ=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184330-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [xen-unstable test] 184330: tolerable trouble: fail/pass/starved
X-Osstest-Failures:
    xen-unstable:test-amd64-amd64-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-amd64-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-raw:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-amd64-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-qcow2:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-qemuu-nested-amd:debian-hvm-install/l1/l2:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-i386-libvirt-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-pvshim:guest-start:fail:nonblocking
    xen-unstable:test-amd64-i386-libvirt:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-multivcpu:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-multivcpu:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit2:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit2:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit1:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit1:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-arndale:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-arndale:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-libvirt-raw:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt-vhd:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-raw:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-vhd:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-vhd:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-rtds:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-rtds:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-qcow2:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-libvirt-raw:hosts-allocate:starved:nonblocking
    xen-unstable:test-arm64-arm64-xl-credit2:hosts-allocate:starved:nonblocking
    xen-unstable:test-arm64-arm64-xl-vhd:hosts-allocate:starved:nonblocking
    xen-unstable:test-arm64-arm64-xl-xsm:hosts-allocate:starved:nonblocking
    xen-unstable:test-arm64-arm64-xl:hosts-allocate:starved:nonblocking
    xen-unstable:test-arm64-arm64-xl-credit1:hosts-allocate:starved:nonblocking
    xen-unstable:test-arm64-arm64-xl-thunderx:hosts-allocate:starved:nonblocking
    xen-unstable:test-arm64-arm64-libvirt-xsm:hosts-allocate:starved:nonblocking
X-Osstest-Versions-This:
    xen=c27c8922f2c6995d688437b0758cec6a27d18320
X-Osstest-Versions-That:
    xen=c27c8922f2c6995d688437b0758cec6a27d18320
From: osstest service owner <osstest-admin@xenproject.org>
Date: Fri, 12 Jan 2024 18:00:54 +0000

flight 184330 xen-unstable real [real]
http://logs.test-lab.xenproject.org/osstest/logs/184330/

Failures :-/ but no regressions.

Tests which did not succeed, but are not blocking:
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 184311
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 184319
 test-amd64-amd64-xl-qemut-win7-amd64 19 guest-stop            fail like 184319
 test-amd64-i386-xl-qemuu-win7-amd64 19 guest-stop             fail like 184319
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 184319
 test-amd64-i386-xl-qemut-ws16-amd64 19 guest-stop             fail like 184319
 test-armhf-armhf-libvirt-raw 15 saverestore-support-check    fail  like 184319
 test-amd64-i386-xl-qemut-win7-amd64 19 guest-stop             fail like 184319
 test-amd64-amd64-xl-qemut-ws16-amd64 19 guest-stop            fail like 184319
 test-armhf-armhf-libvirt-qcow2 15 saverestore-support-check   fail like 184319
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 184319
 test-amd64-i386-xl-qemuu-ws16-amd64 19 guest-stop             fail like 184319
 test-amd64-i386-libvirt-xsm  15 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-amd64-i386-xl-pvshim    14 guest-start                  fail   never pass
 test-amd64-i386-libvirt      15 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt     15 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-armhf-armhf-xl-multivcpu 15 migrate-support-check        fail  never pass
 test-armhf-armhf-xl-multivcpu 16 saverestore-support-check    fail  never pass
 test-armhf-armhf-libvirt     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-credit2  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit2  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-credit1  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit1  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-arndale  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-arndale  16 saverestore-support-check    fail   never pass
 test-amd64-i386-libvirt-raw  14 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt-vhd 14 migrate-support-check        fail   never pass
 test-armhf-armhf-libvirt-raw 14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-rtds     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-rtds     16 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-qcow2 14 migrate-support-check        fail never pass
 test-arm64-arm64-libvirt-raw  3 hosts-allocate               starved  n/a
 test-arm64-arm64-xl-credit2   3 hosts-allocate               starved  n/a
 test-arm64-arm64-xl-vhd       3 hosts-allocate               starved  n/a
 test-arm64-arm64-xl-xsm       3 hosts-allocate               starved  n/a
 test-arm64-arm64-xl           3 hosts-allocate               starved  n/a
 test-arm64-arm64-xl-credit1   3 hosts-allocate               starved  n/a
 test-arm64-arm64-xl-thunderx  3 hosts-allocate               starved  n/a
 test-arm64-arm64-libvirt-xsm  3 hosts-allocate               starved  n/a

version targeted for testing:
 xen                  c27c8922f2c6995d688437b0758cec6a27d18320
baseline version:
 xen                  c27c8922f2c6995d688437b0758cec6a27d18320

Last test of basis   184330  2024-01-12 06:07:09 Z    0 days
Testing same since                          (not found)         0 attempts

jobs:
 build-amd64-xsm                                              pass    
 build-arm64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64-xtf                                              pass    
 build-amd64                                                  pass    
 build-arm64                                                  pass    
 build-armhf                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-arm64-libvirt                                          pass    
 build-armhf-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-prev                                             pass    
 build-i386-prev                                              pass    
 build-amd64-pvops                                            pass    
 build-arm64-pvops                                            pass    
 build-armhf-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-xtf-amd64-amd64-1                                       pass    
 test-xtf-amd64-amd64-2                                       pass    
 test-xtf-amd64-amd64-3                                       pass    
 test-xtf-amd64-amd64-4                                       pass    
 test-xtf-amd64-amd64-5                                       pass    
 test-amd64-amd64-xl                                          pass    
 test-amd64-coresched-amd64-xl                                pass    
 test-arm64-arm64-xl                                          starved 
 test-armhf-armhf-xl                                          pass    
 test-amd64-i386-xl                                           pass    
 test-amd64-coresched-i386-xl                                 pass    
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm           pass    
 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm            pass    
 test-amd64-amd64-xl-qemut-stubdom-debianhvm-amd64-xsm        pass    
 test-amd64-i386-xl-qemut-stubdom-debianhvm-amd64-xsm         pass    
 test-amd64-amd64-xl-qemut-debianhvm-i386-xsm                 pass    
 test-amd64-i386-xl-qemut-debianhvm-i386-xsm                  pass    
 test-amd64-amd64-xl-qemuu-debianhvm-i386-xsm                 pass    
 test-amd64-i386-xl-qemuu-debianhvm-i386-xsm                  pass    
 test-amd64-amd64-libvirt-xsm                                 pass    
 test-arm64-arm64-libvirt-xsm                                 starved 
 test-amd64-i386-libvirt-xsm                                  pass    
 test-amd64-amd64-xl-xsm                                      pass    
 test-arm64-arm64-xl-xsm                                      starved 
 test-amd64-i386-xl-xsm                                       pass    
 test-amd64-amd64-qemuu-nested-amd                            fail    
 test-amd64-amd64-xl-pvhv2-amd                                pass    
 test-amd64-i386-qemut-rhel6hvm-amd                           pass    
 test-amd64-i386-qemuu-rhel6hvm-amd                           pass    
 test-amd64-amd64-dom0pvh-xl-amd                              pass    
 test-amd64-amd64-xl-qemut-debianhvm-amd64                    pass    
 test-amd64-i386-xl-qemut-debianhvm-amd64                     pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64                    pass    
 test-amd64-i386-xl-qemuu-debianhvm-amd64                     pass    
 test-amd64-i386-freebsd10-amd64                              pass    
 test-amd64-amd64-qemuu-freebsd11-amd64                       pass    
 test-amd64-amd64-qemuu-freebsd12-amd64                       pass    
 test-amd64-amd64-xl-qemuu-ovmf-amd64                         pass    
 test-amd64-i386-xl-qemuu-ovmf-amd64                          pass    
 test-amd64-amd64-xl-qemut-win7-amd64                         fail    
 test-amd64-i386-xl-qemut-win7-amd64                          fail    
 test-amd64-amd64-xl-qemuu-win7-amd64                         fail    
 test-amd64-i386-xl-qemuu-win7-amd64                          fail    
 test-amd64-amd64-xl-qemut-ws16-amd64                         fail    
 test-amd64-i386-xl-qemut-ws16-amd64                          fail    
 test-amd64-amd64-xl-qemuu-ws16-amd64                         fail    
 test-amd64-i386-xl-qemuu-ws16-amd64                          fail    
 test-armhf-armhf-xl-arndale                                  pass    
 test-amd64-amd64-examine-bios                                pass    
 test-amd64-i386-examine-bios                                 pass    
 test-amd64-amd64-xl-credit1                                  pass    
 test-arm64-arm64-xl-credit1                                  starved 
 test-armhf-armhf-xl-credit1                                  pass    
 test-amd64-amd64-xl-credit2                                  pass    
 test-arm64-arm64-xl-credit2                                  starved 
 test-armhf-armhf-xl-credit2                                  pass    
 test-amd64-amd64-xl-qemuu-dmrestrict-amd64-dmrestrict        pass    
 test-amd64-i386-xl-qemuu-dmrestrict-amd64-dmrestrict         pass    
 test-amd64-amd64-examine                                     pass    
 test-arm64-arm64-examine                                     pass    
 test-armhf-armhf-examine                                     pass    
 test-amd64-i386-examine                                      pass    
 test-amd64-i386-freebsd10-i386                               pass    
 test-amd64-amd64-qemuu-nested-intel                          pass    
 test-amd64-amd64-xl-pvhv2-intel                              pass    
 test-amd64-i386-qemut-rhel6hvm-intel                         pass    
 test-amd64-i386-qemuu-rhel6hvm-intel                         pass    
 test-amd64-amd64-dom0pvh-xl-intel                            pass    
 test-amd64-amd64-libvirt                                     pass    
 test-armhf-armhf-libvirt                                     pass    
 test-amd64-i386-libvirt                                      pass    
 test-amd64-amd64-livepatch                                   pass    
 test-amd64-i386-livepatch                                    pass    
 test-amd64-amd64-migrupgrade                                 pass    
 test-amd64-i386-migrupgrade                                  pass    
 test-amd64-amd64-xl-multivcpu                                pass    
 test-armhf-armhf-xl-multivcpu                                pass    
 test-amd64-amd64-pair                                        pass    
 test-amd64-i386-pair                                         pass    
 test-amd64-amd64-libvirt-pair                                pass    
 test-amd64-i386-libvirt-pair                                 pass    
 test-amd64-amd64-xl-pvshim                                   pass    
 test-amd64-i386-xl-pvshim                                    fail    
 test-amd64-amd64-pygrub                                      pass    
 test-armhf-armhf-libvirt-qcow2                               pass    
 test-amd64-amd64-xl-qcow2                                    pass    
 test-arm64-arm64-libvirt-raw                                 starved 
 test-armhf-armhf-libvirt-raw                                 pass    
 test-amd64-i386-libvirt-raw                                  pass    
 test-amd64-amd64-xl-rtds                                     pass    
 test-armhf-armhf-xl-rtds                                     pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64-shadow             pass    
 test-amd64-i386-xl-qemuu-debianhvm-amd64-shadow              pass    
 test-amd64-amd64-xl-shadow                                   pass    
 test-amd64-i386-xl-shadow                                    pass    
 test-arm64-arm64-xl-thunderx                                 starved 
 test-amd64-amd64-examine-uefi                                pass    
 test-amd64-i386-examine-uefi                                 pass    
 test-amd64-amd64-libvirt-vhd                                 pass    
 test-arm64-arm64-xl-vhd                                      starved 
 test-armhf-armhf-xl-vhd                                      pass    
 test-amd64-i386-xl-vhd                                       pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Published tested tree is already up to date.



From xen-devel-bounces@lists.xenproject.org Fri Jan 12 18:08:07 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 12 Jan 2024 18:08:07 +0000
Received: from list by lists.xenproject.org with outflank-mailman.666961.1037938 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rOLwn-0001CD-0r; Fri, 12 Jan 2024 18:08:01 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 666961.1037938; Fri, 12 Jan 2024 18:08:00 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rOLwm-0001C6-Rs; Fri, 12 Jan 2024 18:08:00 +0000
Received: by outflank-mailman (input) for mailman id 666961;
 Fri, 12 Jan 2024 18:07:59 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rOLwl-0001Bw-IY; Fri, 12 Jan 2024 18:07:59 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rOLwl-0006xR-AD; Fri, 12 Jan 2024 18:07:59 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rOLwk-0000FH-Rg; Fri, 12 Jan 2024 18:07:58 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rOLwk-0008BU-R9; Fri, 12 Jan 2024 18:07:58 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=4Uko5lYjSVFu+Wx7YDorlIDUB6+xTkl5WfYfQJMNO7o=; b=Kal0OqTTkYg9TGoBXqWerzK5qW
	ev0l/rp7Rd8CmM/Aifx6BvWISI74rTQYAI/VT9/TuFS9AVkRIs0IakuCJtaCB1PpMuVYdC2JH/xl7
	rb8jH47cp7ilimi42I+4xcyDYYBRAj1kyiB6w0vQa36Lkz9EkJVl0HmKHwDHNOAJKzMQ=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184329-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [libvirt test] 184329: tolerable all pass - PUSHED
X-Osstest-Failures:
    libvirt:test-armhf-armhf-libvirt-raw:saverestore-support-check:fail:nonblocking
    libvirt:test-armhf-armhf-libvirt:saverestore-support-check:fail:nonblocking
    libvirt:test-armhf-armhf-libvirt-qcow2:saverestore-support-check:fail:nonblocking
    libvirt:test-amd64-i386-libvirt-xsm:migrate-support-check:fail:nonblocking
    libvirt:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    libvirt:test-amd64-amd64-libvirt-xsm:migrate-support-check:fail:nonblocking
    libvirt:test-amd64-i386-libvirt:migrate-support-check:fail:nonblocking
    libvirt:test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    libvirt:test-arm64-arm64-libvirt:migrate-support-check:fail:nonblocking
    libvirt:test-arm64-arm64-libvirt:saverestore-support-check:fail:nonblocking
    libvirt:test-arm64-arm64-libvirt-xsm:migrate-support-check:fail:nonblocking
    libvirt:test-arm64-arm64-libvirt-xsm:saverestore-support-check:fail:nonblocking
    libvirt:test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    libvirt:test-armhf-armhf-libvirt:migrate-support-check:fail:nonblocking
    libvirt:test-amd64-i386-libvirt-raw:migrate-support-check:fail:nonblocking
    libvirt:test-arm64-arm64-libvirt-qcow2:migrate-support-check:fail:nonblocking
    libvirt:test-arm64-arm64-libvirt-qcow2:saverestore-support-check:fail:nonblocking
    libvirt:test-arm64-arm64-libvirt-raw:migrate-support-check:fail:nonblocking
    libvirt:test-arm64-arm64-libvirt-raw:saverestore-support-check:fail:nonblocking
    libvirt:test-amd64-amd64-libvirt-vhd:migrate-support-check:fail:nonblocking
    libvirt:test-armhf-armhf-libvirt-qcow2:migrate-support-check:fail:nonblocking
    libvirt:test-armhf-armhf-libvirt-raw:migrate-support-check:fail:nonblocking
X-Osstest-Versions-This:
    libvirt=9ef6fee12909a70e52b37c3e5277e83d70cdf0da
X-Osstest-Versions-That:
    libvirt=0e120bc43197a2d4099470f8932c37944a2fcc16
From: osstest service owner <osstest-admin@xenproject.org>
Date: Fri, 12 Jan 2024 18:07:58 +0000

flight 184329 libvirt real [real]
http://logs.test-lab.xenproject.org/osstest/logs/184329/

Failures :-/ but no regressions.

Tests which did not succeed, but are not blocking:
 test-armhf-armhf-libvirt-raw 15 saverestore-support-check fail blocked in 184316
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 184316
 test-armhf-armhf-libvirt-qcow2 15 saverestore-support-check   fail like 184316
 test-amd64-i386-libvirt-xsm  15 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt     15 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-amd64-i386-libvirt      15 migrate-support-check        fail   never pass
 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-arm64-arm64-libvirt     15 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt     16 saverestore-support-check    fail   never pass
 test-arm64-arm64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-xsm 16 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-armhf-armhf-libvirt     15 migrate-support-check        fail   never pass
 test-amd64-i386-libvirt-raw  14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-qcow2 14 migrate-support-check        fail never pass
 test-arm64-arm64-libvirt-qcow2 15 saverestore-support-check    fail never pass
 test-arm64-arm64-libvirt-raw 14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 15 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-vhd 14 migrate-support-check        fail   never pass
 test-armhf-armhf-libvirt-qcow2 14 migrate-support-check        fail never pass
 test-armhf-armhf-libvirt-raw 14 migrate-support-check        fail   never pass

version targeted for testing:
 libvirt              9ef6fee12909a70e52b37c3e5277e83d70cdf0da
baseline version:
 libvirt              0e120bc43197a2d4099470f8932c37944a2fcc16

Last test of basis   184316  2024-01-11 04:18:50 Z    1 days
Testing same since   184329  2024-01-12 04:20:39 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Sergio Durigan Junior <sergio.durigan@canonical.com>
  Shaleen Bathla <shaleen.bathla@oracle.com>
  Yalei Li <274268859@qq.com>
  Yalei Li <liyl43@chinatelecom.cn>

jobs:
 build-amd64-xsm                                              pass    
 build-arm64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64                                                  pass    
 build-arm64                                                  pass    
 build-armhf                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-arm64-libvirt                                          pass    
 build-armhf-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-pvops                                            pass    
 build-arm64-pvops                                            pass    
 build-armhf-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm           pass    
 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm            pass    
 test-amd64-amd64-libvirt-xsm                                 pass    
 test-arm64-arm64-libvirt-xsm                                 pass    
 test-amd64-i386-libvirt-xsm                                  pass    
 test-amd64-amd64-libvirt                                     pass    
 test-arm64-arm64-libvirt                                     pass    
 test-armhf-armhf-libvirt                                     pass    
 test-amd64-i386-libvirt                                      pass    
 test-amd64-amd64-libvirt-pair                                pass    
 test-amd64-i386-libvirt-pair                                 pass    
 test-arm64-arm64-libvirt-qcow2                               pass    
 test-armhf-armhf-libvirt-qcow2                               pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-armhf-armhf-libvirt-raw                                 pass    
 test-amd64-i386-libvirt-raw                                  pass    
 test-amd64-amd64-libvirt-vhd                                 pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Pushing revision :

To xenbits.xen.org:/home/xen/git/libvirt.git
   0e120bc431..9ef6fee129  9ef6fee12909a70e52b37c3e5277e83d70cdf0da -> xen-tested-master


From xen-devel-bounces@lists.xenproject.org Fri Jan 12 18:15:32 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 12 Jan 2024 18:15:32 +0000
Received: from list by lists.xenproject.org with outflank-mailman.666967.1037948 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rOM3z-0002sf-NE; Fri, 12 Jan 2024 18:15:27 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 666967.1037948; Fri, 12 Jan 2024 18:15:27 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rOM3z-0002sY-Jz; Fri, 12 Jan 2024 18:15:27 +0000
Received: by outflank-mailman (input) for mailman id 666967;
 Fri, 12 Jan 2024 18:15:26 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=Vfvq=IW=amd.com=Stewart.Hildebrand@srs-se1.protection.inumbo.net>)
 id 1rOM3x-0002sS-Qj
 for xen-devel@lists.xenproject.org; Fri, 12 Jan 2024 18:15:26 +0000
Received: from NAM12-MW2-obe.outbound.protection.outlook.com
 (mail-mw2nam12on20601.outbound.protection.outlook.com
 [2a01:111:f403:200a::601])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 8b0be0ad-b176-11ee-9b0f-b553b5be7939;
 Fri, 12 Jan 2024 19:15:20 +0100 (CET)
Received: from BLAPR03CA0065.namprd03.prod.outlook.com (2603:10b6:208:329::10)
 by LV2PR12MB5798.namprd12.prod.outlook.com (2603:10b6:408:17a::6)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7181.21; Fri, 12 Jan
 2024 18:15:15 +0000
Received: from MN1PEPF0000ECD5.namprd02.prod.outlook.com
 (2603:10b6:208:329:cafe::8d) by BLAPR03CA0065.outlook.office365.com
 (2603:10b6:208:329::10) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7181.21 via Frontend
 Transport; Fri, 12 Jan 2024 18:15:15 +0000
Received: from SATLEXMB03.amd.com (165.204.84.17) by
 MN1PEPF0000ECD5.mail.protection.outlook.com (10.167.242.133) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.7181.14 via Frontend Transport; Fri, 12 Jan 2024 18:15:14 +0000
Received: from SATLEXMB05.amd.com (10.181.40.146) by SATLEXMB03.amd.com
 (10.181.40.144) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.34; Fri, 12 Jan
 2024 12:15:13 -0600
Received: from SATLEXMB03.amd.com (10.181.40.144) by SATLEXMB05.amd.com
 (10.181.40.146) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.34; Fri, 12 Jan
 2024 12:15:12 -0600
Received: from ubuntu.mshome.net (10.180.168.240) by SATLEXMB03.amd.com
 (10.181.40.144) with Microsoft SMTP Server id 15.1.2507.34 via Frontend
 Transport; Fri, 12 Jan 2024 12:15:10 -0600
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 8b0be0ad-b176-11ee-9b0f-b553b5be7939
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=QzYfJsYyBGWdOKcz0mLMnboRJHz/czM7Ux6IT2ucKOgLtbZe92NLdW73NuZqqJTfG33dVWx+QAzEDJlLfuZUSKnGYsEEAJBsuwE8aBfyzrp9vYcT06W9adjdkGLpiAbavhB6MyFw6/2DuzxqmAf7OkTo/2vWD1AwGGBmMMOScZVMNUngttC0rQp3svoPerUbckcRqrlaHsIrsnbenn0xjGe+mDOwAID5WU5owDHhMmPIJ7frbC94CsyJdatF8HlG754xIVMNnrqfAzLA59EetyrevtWwNkDdOsAlyNFliK3Ajup4UV73PfsYH4/rktYfC4QPFcQcizzVsN9/4s2QwQ==
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=ObZLbk8+hu53jfZcYokuPboDLFNjFWXZzoC02xi6aQ8=;
 b=TAeWqQbs7wZpdQpCpRikxtLELzf7gowXGsR2365Fa2Nhc1wE/IpBRjAPxGGzU7Bzez4iMCyvYtuWnPKTSJt50Ec22RXh6RImz3MMI5hTLBbpbfCzyXKF3McVXBNMmx5N+yrJIKCVJfrILK11W41iixY2glayZqBAu3d0PICQRLajcUppdekQA611nGi3kS9rwit88BHqRi1Gc6grp+8Dio/Mg/XaGkx/To9EAaeFgGlzkoja4zZuHtrZLtfKl83EszMQcduXZo/cqFdHWn+3gZee2kIW4jf4/GJZd+qseXtVFcZvs6Yj4neeEo8xLdjf1kXHgLN9RQarU0S7aCDOnA==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=lists.xenproject.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)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=ObZLbk8+hu53jfZcYokuPboDLFNjFWXZzoC02xi6aQ8=;
 b=4HR1l1Br/TPIe5ecKDRnebHxn0wGcllp0k9zk504pw52Ra71AzZhpLLPgDzLlMnyu6gKdqf90m80UxKk9K7NJS8q88zH63gj8CVJgm2uv8JpkMKj0ulBnU1LoJBB1H9p5av2FBoiopffuQfrTe7LXQllIBVA4TbmAqovrDYVrPg=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=SATLEXMB03.amd.com; pr=C
From: Stewart Hildebrand <stewart.hildebrand@amd.com>
To: <xen-devel@lists.xenproject.org>
CC: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>, Jan Beulich
	<jbeulich@suse.com>, Andrew Cooper <andrew.cooper3@citrix.com>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>, Wei Liu
	<wl@xen.org>, George Dunlap <george.dunlap@citrix.com>, Julien Grall
	<julien@xen.org>, Stefano Stabellini <sstabellini@kernel.org>, Jun Nakajima
	<jun.nakajima@intel.com>, Kevin Tian <kevin.tian@intel.com>, Paul Durrant
	<paul@xen.org>, Volodymyr Babchuk <volodymyr_babchuk@epam.com>, "Stewart
 Hildebrand" <stewart.hildebrand@amd.com>
Subject: [PATCH v12.1 01/15] vpci: use per-domain PCI lock to protect vpci structure
Date: Fri, 12 Jan 2024 13:14:41 -0500
Message-ID: <20240112181442.674031-1-stewart.hildebrand@amd.com>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <590a157a-b9d4-4d2d-8aff-6584da3045c3@amd.com>
References: <20240109215145.430207-1-stewart.hildebrand@amd.com> <20240109215145.430207-2-stewart.hildebrand@amd.com> <ZaFDS7uZgW5l0eHG@macbook> <590a157a-b9d4-4d2d-8aff-6584da3045c3@amd.com>
MIME-Version: 1.0
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: MN1PEPF0000ECD5:EE_|LV2PR12MB5798:EE_
X-MS-Office365-Filtering-Correlation-Id: bdafd97c-a21e-47a4-5b7d-08dc139a6cac
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam: BCL:0;
X-Microsoft-Antispam-Message-Info:
	uW4QRrMR3Pj7O2Omw2MvjGZrg8zOhqYyyGSQE8xmkmeydJZ1RaKqRpgriST/z0gBA7hpWopQ6tVsQi0yHcnIqYplhQfcPUXQCIh08OvydO+jEi6HWDWSxXgHqZcfr+YANmR3DuqaBElBIbdyKYWRChgpoojnmT/UIFq0Nxl81ehrs7Z5cdT408ASVg6Ev1HHNcx4izwTCH3LcxZ8ZT20/RFYFpHx86P7VI7bCL2wUGqlrSQPcwGubMmeunyDGMAnQoN3zZFw8WEr5YTvYPbpcXlb+fLZhGzNkGVY3++Gs5jm+lDqx8+uPPUwO2MB4+knW04TXHYFumkYfqi9f2/TCt0Kj5m62ebBCjcRI2s74VVTf9w5kxt2A4r/pgHG0nOhPP7pb2Ud1OMUHKAYutK2OVf2/leXeT2DBF6cUTzJWQmlvnV5PnbbJ0IYvmNY+2bV4wDGlMdDd2EjU+gZarXiRSyQ1MViz8KoSGQWzrOMRDBDTkoYGRMKvGv1qaZPBvhUAlwPScro1PUou2xtheaFVUyKC7ZSrVg9ep9pkoNMJvb2n8DsvwTjA2NSrvucmgE07MQpsBEjrgnx4fVFzFHb+lG4CpS0eVlXggiAQbRlZ/7CGvtRJ6UA3UXEdQitUWVvPDcyYGMaZqfYnjLLap1xEdnAj+cTZT0oVQcW1DedkTdnULy/rPwZjPQZK3IjEynGgFgF+FSb59PGMc07nXGnaepgKmYdT4y0bMF4m2eDHATa19N55Yjbi3I5A1z2sZL72uYNYVE2TRMQf5bys6SGWHZDvuswOGiL6uXINxF03Fo=
X-Forefront-Antispam-Report:
	CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB03.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230031)(4636009)(376002)(346002)(136003)(396003)(39860400002)(230922051799003)(186009)(1800799012)(451199024)(64100799003)(82310400011)(36840700001)(46966006)(40470700004)(82740400003)(83380400001)(5660300002)(30864003)(356005)(81166007)(8676002)(8936002)(4326008)(7416002)(2906002)(86362001)(2616005)(336012)(47076005)(426003)(1076003)(26005)(40460700003)(36860700001)(40480700001)(44832011)(6666004)(478600001)(36756003)(70586007)(70206006)(6916009)(316002)(54906003)(41300700001)(36900700001)(309714004);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Jan 2024 18:15:14.8581
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: bdafd97c-a21e-47a4-5b7d-08dc139a6cac
X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB03.amd.com]
X-MS-Exchange-CrossTenant-AuthSource:
	MN1PEPF0000ECD5.namprd02.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: LV2PR12MB5798

From: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>

Use the per-domain PCI read/write lock to protect the presence of the
pci device vpci field. This lock can be used (and in a few cases is used
right away) so that vpci removal can be performed while holding the lock
in write mode. Previously such removal could race with vpci_read for
example.

When taking both d->pci_lock and pdev->vpci->lock, they should be
taken in this exact order: d->pci_lock then pdev->vpci->lock to avoid
possible deadlock situations.

1. Per-domain's pci_lock is used to protect pdev->vpci structure
from being removed.

2. Writing the command register and ROM BAR register may trigger
modify_bars to run, which in turn may access multiple pdevs while
checking for the existing BAR's overlap. The overlapping check, if
done under the read lock, requires vpci->lock to be acquired on both
devices being compared, which may produce a deadlock. It is not
possible to upgrade read lock to write lock in such a case. So, in
order to prevent the deadlock, use d->pci_lock in write mode instead.

All other code, which doesn't lead to pdev->vpci destruction and does
not access multiple pdevs at the same time, can still use a
combination of the read lock and pdev->vpci->lock.

3. Drop const qualifier where the new rwlock is used and this is
appropriate.

4. Do not call process_pending_softirqs with any locks held. For that
unlock prior the call and re-acquire the locks after. After
re-acquiring the lock there is no need to check if pdev->vpci exists:
 - in apply_map because of the context it is called (no race condition
   possible)
 - for MSI/MSI-X debug code because it is called at the end of
   pdev->vpci access and no further access to pdev->vpci is made

5. Use d->pci_lock around for_each_pdev and pci_get_pdev_by_domain
while accessing pdevs in vpci code.

Suggested-by: Roger Pau Monné <roger.pau@citrix.com>
Suggested-by: Jan Beulich <jbeulich@suse.com>
Signed-off-by: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>
Signed-off-by: Volodymyr Babchuk <volodymyr_babchuk@epam.com>
Signed-off-by: Stewart Hildebrand <stewart.hildebrand@amd.com>
Reviewed-by: Roger Pau Monné <roger.pau@citrix.com>
---
Changes in v12.1:
 - use read_trylock() in vpci_msix_arch_print()
 - fixup in-code comments (revert double space, use DomXEN) in
   vpci_{read,write}()
 - minor updates in commit message
 - add Roger's R-b

Changes in v12:
 - s/pci_rwlock/pci_lock/ in commit message
 - expand comment about scope of pci_lock in sched.h
 - in vpci_{read,write}, if hwdom is trying to access a device assigned
   to dom_xen, holding hwdom->pci_lock is sufficient (no need to hold
   dom_xen->pci_lock)
 - reintroduce ASSERT in vmx_pi_update_irte()
 - reintroduce ASSERT in __pci_enable_msi{x}()
 - delete note 6. in commit message about removing ASSERTs since we have
   reintroduced them

Changes in v11:
 - Fixed commit message regarding possible spinlocks
 - Removed parameter from allocate_and_map_msi_pirq(), which was added
 in the prev version. Now we are taking pcidevs_lock in
 physdev_map_pirq()
 - Returned ASSERT to pci_enable_msi
 - Fixed case when we took read lock instead of write one
 - Fixed label indentation

Changes in v10:
 - Moved printk pas locked area
 - Returned back ASSERTs
 - Added new parameter to allocate_and_map_msi_pirq() so it knows if
 it should take the global pci lock
 - Added comment about possible improvement in vpci_write
 - Changed ASSERT(rw_is_locked()) to rw_is_write_locked() in
   appropriate places
 - Renamed release_domain_locks() to release_domain_write_locks()
 - moved domain_done label in vpci_dump_msi() to correct place
Changes in v9:
 - extended locked region to protect vpci_remove_device and
   vpci_add_handlers() calls
 - vpci_write() takes lock in the write mode to protect
   potential call to modify_bars()
 - renamed lock releasing function
 - removed ASSERT()s from msi code
 - added trylock in vpci_dump_msi

Changes in v8:
 - changed d->vpci_lock to d->pci_lock
 - introducing d->pci_lock in a separate patch
 - extended locked region in vpci_process_pending
 - removed pcidevs_lockis vpci_dump_msi()
 - removed some changes as they are not needed with
   the new locking scheme
 - added handling for hwdom && dom_xen case
---
 xen/arch/x86/hvm/vmsi.c       | 25 +++++++++--------
 xen/arch/x86/hvm/vmx/vmx.c    |  2 +-
 xen/arch/x86/irq.c            |  8 +++---
 xen/arch/x86/msi.c            | 14 +++++-----
 xen/arch/x86/physdev.c        |  2 ++
 xen/drivers/passthrough/pci.c |  9 +++---
 xen/drivers/vpci/header.c     | 18 ++++++++++++
 xen/drivers/vpci/msi.c        | 28 +++++++++++++++++--
 xen/drivers/vpci/msix.c       | 52 ++++++++++++++++++++++++++++++-----
 xen/drivers/vpci/vpci.c       | 24 ++++++++++++++--
 xen/include/xen/sched.h       |  3 +-
 11 files changed, 145 insertions(+), 40 deletions(-)

diff --git a/xen/arch/x86/hvm/vmsi.c b/xen/arch/x86/hvm/vmsi.c
index 128f23636279..4725e3b72d53 100644
--- a/xen/arch/x86/hvm/vmsi.c
+++ b/xen/arch/x86/hvm/vmsi.c
@@ -468,7 +468,7 @@ int msixtbl_pt_register(struct domain *d, struct pirq *pirq, uint64_t gtable)
     struct msixtbl_entry *entry, *new_entry;
     int r = -EINVAL;
 
-    ASSERT(pcidevs_locked());
+    ASSERT(pcidevs_locked() || rw_is_locked(&d->pci_lock));
     ASSERT(rw_is_write_locked(&d->event_lock));
 
     if ( !msixtbl_initialised(d) )
@@ -538,7 +538,7 @@ void msixtbl_pt_unregister(struct domain *d, struct pirq *pirq)
     struct pci_dev *pdev;
     struct msixtbl_entry *entry;
 
-    ASSERT(pcidevs_locked());
+    ASSERT(pcidevs_locked() || rw_is_locked(&d->pci_lock));
     ASSERT(rw_is_write_locked(&d->event_lock));
 
     if ( !msixtbl_initialised(d) )
@@ -684,7 +684,7 @@ static int vpci_msi_update(const struct pci_dev *pdev, uint32_t data,
 {
     unsigned int i;
 
-    ASSERT(pcidevs_locked());
+    ASSERT(rw_is_locked(&pdev->domain->pci_lock));
 
     if ( (address & MSI_ADDR_BASE_MASK) != MSI_ADDR_HEADER )
     {
@@ -725,8 +725,8 @@ void vpci_msi_arch_update(struct vpci_msi *msi, const struct pci_dev *pdev)
     int rc;
 
     ASSERT(msi->arch.pirq != INVALID_PIRQ);
+    ASSERT(rw_is_locked(&pdev->domain->pci_lock));
 
-    pcidevs_lock();
     for ( i = 0; i < msi->vectors && msi->arch.bound; i++ )
     {
         struct xen_domctl_bind_pt_irq unbind = {
@@ -745,7 +745,6 @@ void vpci_msi_arch_update(struct vpci_msi *msi, const struct pci_dev *pdev)
 
     msi->arch.bound = !vpci_msi_update(pdev, msi->data, msi->address,
                                        msi->vectors, msi->arch.pirq, msi->mask);
-    pcidevs_unlock();
 }
 
 static int vpci_msi_enable(const struct pci_dev *pdev, unsigned int nr,
@@ -778,15 +777,14 @@ int vpci_msi_arch_enable(struct vpci_msi *msi, const struct pci_dev *pdev,
     int rc;
 
     ASSERT(msi->arch.pirq == INVALID_PIRQ);
+    ASSERT(rw_is_locked(&pdev->domain->pci_lock));
     rc = vpci_msi_enable(pdev, vectors, 0);
     if ( rc < 0 )
         return rc;
     msi->arch.pirq = rc;
 
-    pcidevs_lock();
     msi->arch.bound = !vpci_msi_update(pdev, msi->data, msi->address, vectors,
                                        msi->arch.pirq, msi->mask);
-    pcidevs_unlock();
 
     return 0;
 }
@@ -797,8 +795,8 @@ static void vpci_msi_disable(const struct pci_dev *pdev, int pirq,
     unsigned int i;
 
     ASSERT(pirq != INVALID_PIRQ);
+    ASSERT(rw_is_locked(&pdev->domain->pci_lock));
 
-    pcidevs_lock();
     for ( i = 0; i < nr && bound; i++ )
     {
         struct xen_domctl_bind_pt_irq bind = {
@@ -814,7 +812,6 @@ static void vpci_msi_disable(const struct pci_dev *pdev, int pirq,
     write_lock(&pdev->domain->event_lock);
     unmap_domain_pirq(pdev->domain, pirq);
     write_unlock(&pdev->domain->event_lock);
-    pcidevs_unlock();
 }
 
 void vpci_msi_arch_disable(struct vpci_msi *msi, const struct pci_dev *pdev)
@@ -854,6 +851,7 @@ int vpci_msix_arch_enable_entry(struct vpci_msix_entry *entry,
     int rc;
 
     ASSERT(entry->arch.pirq == INVALID_PIRQ);
+    ASSERT(rw_is_locked(&pdev->domain->pci_lock));
     rc = vpci_msi_enable(pdev, vmsix_entry_nr(pdev->vpci->msix, entry),
                          table_base);
     if ( rc < 0 )
@@ -861,7 +859,6 @@ int vpci_msix_arch_enable_entry(struct vpci_msix_entry *entry,
 
     entry->arch.pirq = rc;
 
-    pcidevs_lock();
     rc = vpci_msi_update(pdev, entry->data, entry->addr, 1, entry->arch.pirq,
                          entry->masked);
     if ( rc )
@@ -869,7 +866,6 @@ int vpci_msix_arch_enable_entry(struct vpci_msix_entry *entry,
         vpci_msi_disable(pdev, entry->arch.pirq, 1, false);
         entry->arch.pirq = INVALID_PIRQ;
     }
-    pcidevs_unlock();
 
     return rc;
 }
@@ -895,6 +891,8 @@ int vpci_msix_arch_print(const struct vpci_msix *msix)
 {
     unsigned int i;
 
+    ASSERT(rw_is_locked(&msix->pdev->domain->pci_lock));
+
     for ( i = 0; i < msix->max_entries; i++ )
     {
         const struct vpci_msix_entry *entry = &msix->entries[i];
@@ -913,7 +911,12 @@ int vpci_msix_arch_print(const struct vpci_msix *msix)
             struct pci_dev *pdev = msix->pdev;
 
             spin_unlock(&msix->pdev->vpci->lock);
+            read_unlock(&pdev->domain->pci_lock);
             process_pending_softirqs();
+
+            if ( !read_trylock(&pdev->domain->pci_lock) )
+                return -EBUSY;
+
             /* NB: we assume that pdev cannot go away for an alive domain. */
             if ( !pdev->vpci || !spin_trylock(&pdev->vpci->lock) )
                 return -EBUSY;
diff --git a/xen/arch/x86/hvm/vmx/vmx.c b/xen/arch/x86/hvm/vmx/vmx.c
index 8ff675883c2b..890faef48b82 100644
--- a/xen/arch/x86/hvm/vmx/vmx.c
+++ b/xen/arch/x86/hvm/vmx/vmx.c
@@ -413,7 +413,7 @@ static int cf_check vmx_pi_update_irte(const struct vcpu *v,
 
     spin_unlock_irq(&desc->lock);
 
-    ASSERT(pcidevs_locked());
+    ASSERT(pcidevs_locked() || rw_is_locked(&msi_desc->dev->domain->pci_lock));
 
     return iommu_update_ire_from_msi(msi_desc, &msi_desc->msg);
 
diff --git a/xen/arch/x86/irq.c b/xen/arch/x86/irq.c
index 50e49e1a4b6f..4d89d9af99fe 100644
--- a/xen/arch/x86/irq.c
+++ b/xen/arch/x86/irq.c
@@ -2166,7 +2166,7 @@ int map_domain_pirq(
         struct pci_dev *pdev;
         unsigned int nr = 0;
 
-        ASSERT(pcidevs_locked());
+        ASSERT(pcidevs_locked() || rw_is_locked(&d->pci_lock));
 
         ret = -ENODEV;
         if ( !cpu_has_apic )
@@ -2323,7 +2323,7 @@ int unmap_domain_pirq(struct domain *d, int pirq)
     if ( (pirq < 0) || (pirq >= d->nr_pirqs) )
         return -EINVAL;
 
-    ASSERT(pcidevs_locked());
+    ASSERT(pcidevs_locked() || rw_is_locked(&d->pci_lock));
     ASSERT(rw_is_write_locked(&d->event_lock));
 
     info = pirq_info(d, pirq);
@@ -2888,6 +2888,8 @@ int allocate_and_map_msi_pirq(struct domain *d, int index, int *pirq_p,
 {
     int irq, pirq, ret;
 
+    ASSERT(pcidevs_locked() || rw_is_locked(&d->pci_lock));
+
     switch ( type )
     {
     case MAP_PIRQ_TYPE_MSI:
@@ -2917,7 +2919,6 @@ int allocate_and_map_msi_pirq(struct domain *d, int index, int *pirq_p,
 
     msi->irq = irq;
 
-    pcidevs_lock();
     /* Verify or get pirq. */
     write_lock(&d->event_lock);
     pirq = allocate_pirq(d, index, *pirq_p, irq, type, &msi->entry_nr);
@@ -2933,7 +2934,6 @@ int allocate_and_map_msi_pirq(struct domain *d, int index, int *pirq_p,
 
  done:
     write_unlock(&d->event_lock);
-    pcidevs_unlock();
     if ( ret )
     {
         switch ( type )
diff --git a/xen/arch/x86/msi.c b/xen/arch/x86/msi.c
index 335c0868a225..7da2affa2e82 100644
--- a/xen/arch/x86/msi.c
+++ b/xen/arch/x86/msi.c
@@ -602,7 +602,7 @@ static int msi_capability_init(struct pci_dev *dev,
     unsigned int i, mpos;
     uint16_t control;
 
-    ASSERT(pcidevs_locked());
+    ASSERT(pcidevs_locked() || rw_is_locked(&dev->domain->pci_lock));
     pos = pci_find_cap_offset(dev->sbdf, PCI_CAP_ID_MSI);
     if ( !pos )
         return -ENODEV;
@@ -771,7 +771,7 @@ static int msix_capability_init(struct pci_dev *dev,
     if ( !pos )
         return -ENODEV;
 
-    ASSERT(pcidevs_locked());
+    ASSERT(pcidevs_locked() || rw_is_locked(&dev->domain->pci_lock));
 
     control = pci_conf_read16(dev->sbdf, msix_control_reg(pos));
     /*
@@ -988,11 +988,11 @@ static int __pci_enable_msi(struct pci_dev *pdev, struct msi_info *msi,
 {
     struct msi_desc *old_desc;
 
-    ASSERT(pcidevs_locked());
-
     if ( !pdev )
         return -ENODEV;
 
+    ASSERT(pcidevs_locked() || rw_is_locked(&pdev->domain->pci_lock));
+
     old_desc = find_msi_entry(pdev, msi->irq, PCI_CAP_ID_MSI);
     if ( old_desc )
     {
@@ -1043,11 +1043,11 @@ static int __pci_enable_msix(struct pci_dev *pdev, struct msi_info *msi,
 {
     struct msi_desc *old_desc;
 
-    ASSERT(pcidevs_locked());
-
     if ( !pdev || !pdev->msix )
         return -ENODEV;
 
+    ASSERT(pcidevs_locked() || rw_is_locked(&pdev->domain->pci_lock));
+
     if ( msi->entry_nr >= pdev->msix->nr_entries )
         return -EINVAL;
 
@@ -1154,7 +1154,7 @@ int pci_prepare_msix(u16 seg, u8 bus, u8 devfn, bool off)
 int pci_enable_msi(struct pci_dev *pdev, struct msi_info *msi,
                    struct msi_desc **desc)
 {
-    ASSERT(pcidevs_locked());
+    ASSERT(pcidevs_locked() || rw_is_locked(&pdev->domain->pci_lock));
 
     if ( !use_msi )
         return -EPERM;
diff --git a/xen/arch/x86/physdev.c b/xen/arch/x86/physdev.c
index 47c4da0af7e1..369c9e788c1c 100644
--- a/xen/arch/x86/physdev.c
+++ b/xen/arch/x86/physdev.c
@@ -123,7 +123,9 @@ int physdev_map_pirq(domid_t domid, int type, int *index, int *pirq_p,
 
     case MAP_PIRQ_TYPE_MSI:
     case MAP_PIRQ_TYPE_MULTI_MSI:
+        pcidevs_lock();
         ret = allocate_and_map_msi_pirq(d, *index, pirq_p, type, msi);
+        pcidevs_unlock();
         break;
 
     default:
diff --git a/xen/drivers/passthrough/pci.c b/xen/drivers/passthrough/pci.c
index 1439d1ef2b26..3a973324bca1 100644
--- a/xen/drivers/passthrough/pci.c
+++ b/xen/drivers/passthrough/pci.c
@@ -750,7 +750,6 @@ int pci_add_device(u16 seg, u8 bus, u8 devfn,
         pdev->domain = hardware_domain;
         write_lock(&hardware_domain->pci_lock);
         list_add(&pdev->domain_list, &hardware_domain->pdev_list);
-        write_unlock(&hardware_domain->pci_lock);
 
         /*
          * For devices not discovered by Xen during boot, add vPCI handlers
@@ -759,18 +758,18 @@ int pci_add_device(u16 seg, u8 bus, u8 devfn,
         ret = vpci_add_handlers(pdev);
         if ( ret )
         {
-            printk(XENLOG_ERR "Setup of vPCI failed: %d\n", ret);
-            write_lock(&hardware_domain->pci_lock);
             list_del(&pdev->domain_list);
             write_unlock(&hardware_domain->pci_lock);
             pdev->domain = NULL;
+            printk(XENLOG_ERR "Setup of vPCI failed: %d\n", ret);
             goto out;
         }
+        write_unlock(&hardware_domain->pci_lock);
         ret = iommu_add_device(pdev);
         if ( ret )
         {
-            vpci_remove_device(pdev);
             write_lock(&hardware_domain->pci_lock);
+            vpci_remove_device(pdev);
             list_del(&pdev->domain_list);
             write_unlock(&hardware_domain->pci_lock);
             pdev->domain = NULL;
@@ -1146,7 +1145,9 @@ static void __hwdom_init setup_one_hwdom_device(const struct setup_hwdom *ctxt,
     } while ( devfn != pdev->devfn &&
               PCI_SLOT(devfn) == PCI_SLOT(pdev->devfn) );
 
+    write_lock(&ctxt->d->pci_lock);
     err = vpci_add_handlers(pdev);
+    write_unlock(&ctxt->d->pci_lock);
     if ( err )
         printk(XENLOG_ERR "setup of vPCI for d%d failed: %d\n",
                ctxt->d->domain_id, err);
diff --git a/xen/drivers/vpci/header.c b/xen/drivers/vpci/header.c
index 58195549d50a..8f5850b8cf6d 100644
--- a/xen/drivers/vpci/header.c
+++ b/xen/drivers/vpci/header.c
@@ -173,6 +173,7 @@ bool vpci_process_pending(struct vcpu *v)
         if ( rc == -ERESTART )
             return true;
 
+        write_lock(&v->domain->pci_lock);
         spin_lock(&v->vpci.pdev->vpci->lock);
         /* Disable memory decoding unconditionally on failure. */
         modify_decoding(v->vpci.pdev,
@@ -191,6 +192,7 @@ bool vpci_process_pending(struct vcpu *v)
              * failure.
              */
             vpci_remove_device(v->vpci.pdev);
+        write_unlock(&v->domain->pci_lock);
     }
 
     return false;
@@ -202,8 +204,20 @@ static int __init apply_map(struct domain *d, const struct pci_dev *pdev,
     struct map_data data = { .d = d, .map = true };
     int rc;
 
+    ASSERT(rw_is_write_locked(&d->pci_lock));
+
     while ( (rc = rangeset_consume_ranges(mem, map_range, &data)) == -ERESTART )
+    {
+        /*
+         * It's safe to drop and reacquire the lock in this context
+         * without risking pdev disappearing because devices cannot be
+         * removed until the initial domain has been started.
+         */
+        write_unlock(&d->pci_lock);
         process_pending_softirqs();
+        write_lock(&d->pci_lock);
+    }
+
     rangeset_destroy(mem);
     if ( !rc )
         modify_decoding(pdev, cmd, false);
@@ -244,6 +258,8 @@ static int modify_bars(const struct pci_dev *pdev, uint16_t cmd, bool rom_only)
     unsigned int i;
     int rc;
 
+    ASSERT(rw_is_write_locked(&pdev->domain->pci_lock));
+
     if ( !mem )
         return -ENOMEM;
 
@@ -524,6 +540,8 @@ static int cf_check init_header(struct pci_dev *pdev)
     int rc;
     bool mask_cap_list = false;
 
+    ASSERT(rw_is_write_locked(&pdev->domain->pci_lock));
+
     switch ( pci_conf_read8(pdev->sbdf, PCI_HEADER_TYPE) & 0x7f )
     {
     case PCI_HEADER_TYPE_NORMAL:
diff --git a/xen/drivers/vpci/msi.c b/xen/drivers/vpci/msi.c
index a253ccbd7db7..6ff71e5f9ab7 100644
--- a/xen/drivers/vpci/msi.c
+++ b/xen/drivers/vpci/msi.c
@@ -263,7 +263,7 @@ REGISTER_VPCI_INIT(init_msi, VPCI_PRIORITY_LOW);
 
 void vpci_dump_msi(void)
 {
-    const struct domain *d;
+    struct domain *d;
 
     rcu_read_lock(&domlist_read_lock);
     for_each_domain ( d )
@@ -275,6 +275,9 @@ void vpci_dump_msi(void)
 
         printk("vPCI MSI/MSI-X d%d\n", d->domain_id);
 
+        if ( !read_trylock(&d->pci_lock) )
+            continue;
+
         for_each_pdev ( d, pdev )
         {
             const struct vpci_msi *msi;
@@ -316,14 +319,33 @@ void vpci_dump_msi(void)
                      * holding the lock.
                      */
                     printk("unable to print all MSI-X entries: %d\n", rc);
-                    process_pending_softirqs();
-                    continue;
+                    goto pdev_done;
                 }
             }
 
             spin_unlock(&pdev->vpci->lock);
+        pdev_done:
+            /*
+             * Unlock lock to process pending softirqs. This is
+             * potentially unsafe, as d->pdev_list can be changed in
+             * meantime.
+             */
+            read_unlock(&d->pci_lock);
             process_pending_softirqs();
+            if ( !read_trylock(&d->pci_lock) )
+            {
+                printk("unable to access other devices for the domain\n");
+                goto domain_done;
+            }
         }
+        read_unlock(&d->pci_lock);
+    domain_done:
+        /*
+         * We need this label at the end of the loop, but some
+         * compilers might not be happy about label at the end of the
+         * compound statement so we adding an empty statement here.
+         */
+        ;
     }
     rcu_read_unlock(&domlist_read_lock);
 }
diff --git a/xen/drivers/vpci/msix.c b/xen/drivers/vpci/msix.c
index d1126a417da9..b6abab47efdd 100644
--- a/xen/drivers/vpci/msix.c
+++ b/xen/drivers/vpci/msix.c
@@ -147,6 +147,8 @@ static struct vpci_msix *msix_find(const struct domain *d, unsigned long addr)
 {
     struct vpci_msix *msix;
 
+    ASSERT(rw_is_locked(&d->pci_lock));
+
     list_for_each_entry ( msix, &d->arch.hvm.msix_tables, next )
     {
         const struct vpci_bar *bars = msix->pdev->vpci->header.bars;
@@ -163,7 +165,13 @@ static struct vpci_msix *msix_find(const struct domain *d, unsigned long addr)
 
 static int cf_check msix_accept(struct vcpu *v, unsigned long addr)
 {
-    return !!msix_find(v->domain, addr);
+    int rc;
+
+    read_lock(&v->domain->pci_lock);
+    rc = !!msix_find(v->domain, addr);
+    read_unlock(&v->domain->pci_lock);
+
+    return rc;
 }
 
 static bool access_allowed(const struct pci_dev *pdev, unsigned long addr,
@@ -358,21 +366,35 @@ static int adjacent_read(const struct domain *d, const struct vpci_msix *msix,
 static int cf_check msix_read(
     struct vcpu *v, unsigned long addr, unsigned int len, unsigned long *data)
 {
-    const struct domain *d = v->domain;
-    struct vpci_msix *msix = msix_find(d, addr);
+    struct domain *d = v->domain;
+    struct vpci_msix *msix;
     const struct vpci_msix_entry *entry;
     unsigned int offset;
 
     *data = ~0UL;
 
+    read_lock(&d->pci_lock);
+
+    msix = msix_find(d, addr);
     if ( !msix )
+    {
+        read_unlock(&d->pci_lock);
         return X86EMUL_RETRY;
+    }
 
     if ( adjacent_handle(msix, addr) )
-        return adjacent_read(d, msix, addr, len, data);
+    {
+        int rc = adjacent_read(d, msix, addr, len, data);
+
+        read_unlock(&d->pci_lock);
+        return rc;
+    }
 
     if ( !access_allowed(msix->pdev, addr, len) )
+    {
+        read_unlock(&d->pci_lock);
         return X86EMUL_OKAY;
+    }
 
     spin_lock(&msix->pdev->vpci->lock);
     entry = get_entry(msix, addr);
@@ -404,6 +426,7 @@ static int cf_check msix_read(
         break;
     }
     spin_unlock(&msix->pdev->vpci->lock);
+    read_unlock(&d->pci_lock);
 
     return X86EMUL_OKAY;
 }
@@ -491,19 +514,33 @@ static int adjacent_write(const struct domain *d, const struct vpci_msix *msix,
 static int cf_check msix_write(
     struct vcpu *v, unsigned long addr, unsigned int len, unsigned long data)
 {
-    const struct domain *d = v->domain;
-    struct vpci_msix *msix = msix_find(d, addr);
+    struct domain *d = v->domain;
+    struct vpci_msix *msix;
     struct vpci_msix_entry *entry;
     unsigned int offset;
 
+    read_lock(&d->pci_lock);
+
+    msix = msix_find(d, addr);
     if ( !msix )
+    {
+        read_unlock(&d->pci_lock);
         return X86EMUL_RETRY;
+    }
 
     if ( adjacent_handle(msix, addr) )
-        return adjacent_write(d, msix, addr, len, data);
+    {
+        int rc = adjacent_write(d, msix, addr, len, data);
+
+        read_unlock(&d->pci_lock);
+        return rc;
+    }
 
     if ( !access_allowed(msix->pdev, addr, len) )
+    {
+        read_unlock(&d->pci_lock);
         return X86EMUL_OKAY;
+    }
 
     spin_lock(&msix->pdev->vpci->lock);
     entry = get_entry(msix, addr);
@@ -579,6 +616,7 @@ static int cf_check msix_write(
         break;
     }
     spin_unlock(&msix->pdev->vpci->lock);
+    read_unlock(&d->pci_lock);
 
     return X86EMUL_OKAY;
 }
diff --git a/xen/drivers/vpci/vpci.c b/xen/drivers/vpci/vpci.c
index 72ef277c4f8e..475272b173f3 100644
--- a/xen/drivers/vpci/vpci.c
+++ b/xen/drivers/vpci/vpci.c
@@ -42,6 +42,8 @@ extern vpci_register_init_t *const __end_vpci_array[];
 
 void vpci_remove_device(struct pci_dev *pdev)
 {
+    ASSERT(rw_is_write_locked(&pdev->domain->pci_lock));
+
     if ( !has_vpci(pdev->domain) || !pdev->vpci )
         return;
 
@@ -77,6 +79,8 @@ int vpci_add_handlers(struct pci_dev *pdev)
     const unsigned long *ro_map;
     int rc = 0;
 
+    ASSERT(rw_is_write_locked(&pdev->domain->pci_lock));
+
     if ( !has_vpci(pdev->domain) )
         return 0;
 
@@ -361,7 +365,7 @@ static uint32_t merge_result(uint32_t data, uint32_t new, unsigned int size,
 
 uint32_t vpci_read(pci_sbdf_t sbdf, unsigned int reg, unsigned int size)
 {
-    const struct domain *d = current->domain;
+    struct domain *d = current->domain;
     const struct pci_dev *pdev;
     const struct vpci_register *r;
     unsigned int data_offset = 0;
@@ -376,12 +380,18 @@ uint32_t vpci_read(pci_sbdf_t sbdf, unsigned int reg, unsigned int size)
     /*
      * Find the PCI dev matching the address, which for hwdom also requires
      * consulting DomXEN.  Passthrough everything that's not trapped.
+     * If this is hwdom and the device is assigned to DomXEN, acquiring hwdom's
+     * pci_lock is sufficient.
      */
+    read_lock(&d->pci_lock);
     pdev = pci_get_pdev(d, sbdf);
     if ( !pdev && is_hardware_domain(d) )
         pdev = pci_get_pdev(dom_xen, sbdf);
     if ( !pdev || !pdev->vpci )
+    {
+        read_unlock(&d->pci_lock);
         return vpci_read_hw(sbdf, reg, size);
+    }
 
     spin_lock(&pdev->vpci->lock);
 
@@ -428,6 +438,7 @@ uint32_t vpci_read(pci_sbdf_t sbdf, unsigned int reg, unsigned int size)
         ASSERT(data_offset < size);
     }
     spin_unlock(&pdev->vpci->lock);
+    read_unlock(&d->pci_lock);
 
     if ( data_offset < size )
     {
@@ -470,7 +481,7 @@ static void vpci_write_helper(const struct pci_dev *pdev,
 void vpci_write(pci_sbdf_t sbdf, unsigned int reg, unsigned int size,
                 uint32_t data)
 {
-    const struct domain *d = current->domain;
+    struct domain *d = current->domain;
     const struct pci_dev *pdev;
     const struct vpci_register *r;
     unsigned int data_offset = 0;
@@ -484,7 +495,13 @@ void vpci_write(pci_sbdf_t sbdf, unsigned int reg, unsigned int size,
     /*
      * Find the PCI dev matching the address, which for hwdom also requires
      * consulting DomXEN.  Passthrough everything that's not trapped.
+     * If this is hwdom and the device is assigned to DomXEN, acquiring hwdom's
+     * pci_lock is sufficient.
+     *
+     * TODO: We need to take pci_locks in exclusive mode only if we
+     * are modifying BARs, so there is a room for improvement.
      */
+    write_lock(&d->pci_lock);
     pdev = pci_get_pdev(d, sbdf);
     if ( !pdev && is_hardware_domain(d) )
         pdev = pci_get_pdev(dom_xen, sbdf);
@@ -493,6 +510,8 @@ void vpci_write(pci_sbdf_t sbdf, unsigned int reg, unsigned int size,
         /* Ignore writes to read-only devices, which have no ->vpci. */
         const unsigned long *ro_map = pci_get_ro_map(sbdf.seg);
 
+        write_unlock(&d->pci_lock);
+
         if ( !ro_map || !test_bit(sbdf.bdf, ro_map) )
             vpci_write_hw(sbdf, reg, size, data);
         return;
@@ -534,6 +553,7 @@ void vpci_write(pci_sbdf_t sbdf, unsigned int reg, unsigned int size,
         ASSERT(data_offset < size);
     }
     spin_unlock(&pdev->vpci->lock);
+    write_unlock(&d->pci_lock);
 
     if ( data_offset < size )
         /* Tailing gap, write the remaining. */
diff --git a/xen/include/xen/sched.h b/xen/include/xen/sched.h
index 9da91e0e6244..37f5922f3206 100644
--- a/xen/include/xen/sched.h
+++ b/xen/include/xen/sched.h
@@ -462,7 +462,8 @@ struct domain
 #ifdef CONFIG_HAS_PCI
     struct list_head pdev_list;
     /*
-     * pci_lock protects access to pdev_list.
+     * pci_lock protects access to pdev_list. pci_lock also protects pdev->vpci
+     * structure from being removed.
      *
      * Any user *reading* from pdev_list, or from devices stored in pdev_list,
      * should hold either pcidevs_lock() or pci_lock in read mode. Optionally,

base-commit: 1ec3fe1f664fa837daf31e9fa8938f6109464f28
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Fri Jan 12 18:59:28 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 12 Jan 2024 18:59:28 +0000
Received: from list by lists.xenproject.org with outflank-mailman.666974.1037958 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rOMkM-0000b4-54; Fri, 12 Jan 2024 18:59:14 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 666974.1037958; Fri, 12 Jan 2024 18:59:14 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rOMkM-0000ax-2Z; Fri, 12 Jan 2024 18:59:14 +0000
Received: by outflank-mailman (input) for mailman id 666974;
 Fri, 12 Jan 2024 18:59:13 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=Zoml=IW=kernel.org=sj@srs-se1.protection.inumbo.net>)
 id 1rOMkK-0000ar-Ud
 for xen-devel@lists.xenproject.org; Fri, 12 Jan 2024 18:59:13 +0000
Received: from sin.source.kernel.org (sin.source.kernel.org
 [2604:1380:40e1:4800::1])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id aaa45c81-b17c-11ee-98f1-6d05b1d4d9a1;
 Fri, 12 Jan 2024 19:59:10 +0100 (CET)
Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58])
 by sin.source.kernel.org (Postfix) with ESMTP id 51415CE2441;
 Fri, 12 Jan 2024 18:59:08 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id EE036C433C7;
 Fri, 12 Jan 2024 18:59:06 +0000 (UTC)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: aaa45c81-b17c-11ee-98f1-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
	s=k20201202; t=1705085947;
	bh=3ibygWlbfSkC0FBcuBrq55XAKl25vUGqLzjDUTlhUwQ=;
	h=From:To:Cc:Subject:Date:From;
	b=DtIkcx34By6VgPFf8lo2BTDnvhF6QQjOelSvfydld6vmUqrdazzSRqg0pIDwXN7Uo
	 H8k77MepDSjADQ6+o12Va2qKoR+Fsi8FA5TvLceCZkPHyFnaAwsJyVWehm55sXWPFX
	 /TLYirvpcvcqUi3V+O5qKWVGDcvTapvRDVSR1i57cvnKpe4bBwcA7NxRdKiJMmZ4GO
	 RTPCI1ib6ToxxEbz/dXoFDl5C6ubioYCFqJbiJIadjvVzrhIjUHXMbqWTHdQKwl22e
	 7i5J4q2Xd7VXIEh5ATPJB2CytgzqBuZkuM4lcytWnCg1wLF7odfhbmT+TfK2AFDoE+
	 86QwFMkrXh1hQ==
From: SeongJae Park <sj@kernel.org>
To: jgross@suse.com
Cc: sstabellini@kernel.org,
	oleksandr_tyshchenko@epam.com,
	xen-devel@lists.xenproject.org,
	linux-kernel@vger.kernel.org,
	SeongJae Park <sj@kernel.org>,
	kernel test robot <lkp@intel.com>
Subject: [PATCH] xen/xenbus: document will_handle argument for xenbus_watch_path()
Date: Fri, 12 Jan 2024 10:59:03 -0800
Message-Id: <20240112185903.83737-1-sj@kernel.org>
X-Mailer: git-send-email 2.39.2
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Commit 2e85d32b1c86 ("xen/xenbus: Add 'will_handle' callback support in
xenbus_watch_path()") added will_handle argument to xenbus_watch_path()
and its wrapper, xenbus_watch_pathfmt(), but didn't document it on the
kerneldoc comments of the function.  This is causing warnings that
reported by kernel test robot.  Add the documentation to fix it.

Fixes: 2e85d32b1c86 ("xen/xenbus: Add 'will_handle' callback support in xenbus_watch_path()")
Reported-by: kernel test robot <lkp@intel.com>
Closes: https://lore.kernel.org/oe-kbuild-all/202401121154.FI8jDGun-lkp@intel.com/
Signed-off-by: SeongJae Park <sj@kernel.org>
---
 drivers/xen/xenbus/xenbus_client.c | 26 +++++++++++++++-----------
 1 file changed, 15 insertions(+), 11 deletions(-)

diff --git a/drivers/xen/xenbus/xenbus_client.c b/drivers/xen/xenbus/xenbus_client.c
index d4b251925796..d539210b39d8 100644
--- a/drivers/xen/xenbus/xenbus_client.c
+++ b/drivers/xen/xenbus/xenbus_client.c
@@ -116,14 +116,16 @@ EXPORT_SYMBOL_GPL(xenbus_strstate);
  * @dev: xenbus device
  * @path: path to watch
  * @watch: watch to register
+ * @will_handle: events queuing determine callback
  * @callback: callback to register
  *
  * Register a @watch on the given path, using the given xenbus_watch structure
- * for storage, and the given @callback function as the callback.  Return 0 on
- * success, or -errno on error.  On success, the given @path will be saved as
- * @watch->node, and remains the caller's to free.  On error, @watch->node will
- * be NULL, the device will switch to %XenbusStateClosing, and the error will
- * be saved in the store.
+ * for storage, @will_handle function as the callback to determine if each
+ * event need to be queued, and the given @callback function as the callback.
+ * Return 0 on success, or -errno on error.  On success, the given @path will
+ * be saved as @watch->node, and remains the caller's to free.  On error,
+ * @watch->node will be NULL, the device will switch to %XenbusStateClosing,
+ * and the error will be saved in the store.
  */
 int xenbus_watch_path(struct xenbus_device *dev, const char *path,
 		      struct xenbus_watch *watch,
@@ -156,16 +158,18 @@ EXPORT_SYMBOL_GPL(xenbus_watch_path);
  * xenbus_watch_pathfmt - register a watch on a sprintf-formatted path
  * @dev: xenbus device
  * @watch: watch to register
+ * @will_handle: events queuing determine callback
  * @callback: callback to register
  * @pathfmt: format of path to watch
  *
  * Register a watch on the given @path, using the given xenbus_watch
- * structure for storage, and the given @callback function as the callback.
- * Return 0 on success, or -errno on error.  On success, the watched path
- * (@path/@path2) will be saved as @watch->node, and becomes the caller's to
- * kfree().  On error, watch->node will be NULL, so the caller has nothing to
- * free, the device will switch to %XenbusStateClosing, and the error will be
- * saved in the store.
+ * structure for storage, @will_handle function as the callback to determine if
+ * each event need to be queued, and the given @callback function as the
+ * callback.  Return 0 on success, or -errno on error.  On success, the watched
+ * path (@path/@path2) will be saved as @watch->node, and becomes the caller's
+ * to kfree().  On error, watch->node will be NULL, so the caller has nothing
+ * to free, the device will switch to %XenbusStateClosing, and the error will
+ * be saved in the store.
  */
 int xenbus_watch_pathfmt(struct xenbus_device *dev,
 			 struct xenbus_watch *watch,
-- 
2.39.2



From xen-devel-bounces@lists.xenproject.org Fri Jan 12 20:32:13 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 12 Jan 2024 20:32:13 +0000
Received: from list by lists.xenproject.org with outflank-mailman.666979.1037967 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rOOC3-0005Cp-Qc; Fri, 12 Jan 2024 20:31:55 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 666979.1037967; Fri, 12 Jan 2024 20:31:55 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rOOC3-0005Ci-Ns; Fri, 12 Jan 2024 20:31:55 +0000
Received: by outflank-mailman (input) for mailman id 666979;
 Fri, 12 Jan 2024 20:31:53 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=Vfvq=IW=amd.com=Stewart.Hildebrand@srs-se1.protection.inumbo.net>)
 id 1rOOC1-0005CY-Fw
 for xen-devel@lists.xenproject.org; Fri, 12 Jan 2024 20:31:53 +0000
Received: from NAM11-DM6-obe.outbound.protection.outlook.com
 (mail-dm6nam11on20607.outbound.protection.outlook.com
 [2a01:111:f400:7eaa::607])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 9bda05f5-b189-11ee-9b0f-b553b5be7939;
 Fri, 12 Jan 2024 21:31:49 +0100 (CET)
Received: from CY8PR02CA0019.namprd02.prod.outlook.com (2603:10b6:930:4d::12)
 by CH0PR12MB5073.namprd12.prod.outlook.com (2603:10b6:610:e0::10)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7181.17; Fri, 12 Jan
 2024 20:31:43 +0000
Received: from CY4PEPF0000E9D7.namprd05.prod.outlook.com
 (2603:10b6:930:4d:cafe::b0) by CY8PR02CA0019.outlook.office365.com
 (2603:10b6:930:4d::12) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7181.23 via Frontend
 Transport; Fri, 12 Jan 2024 20:31:43 +0000
Received: from SATLEXMB03.amd.com (165.204.84.17) by
 CY4PEPF0000E9D7.mail.protection.outlook.com (10.167.241.78) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.7181.14 via Frontend Transport; Fri, 12 Jan 2024 20:31:42 +0000
Received: from SATLEXMB05.amd.com (10.181.40.146) by SATLEXMB03.amd.com
 (10.181.40.144) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.34; Fri, 12 Jan
 2024 14:31:42 -0600
Received: from SATLEXMB04.amd.com (10.181.40.145) by SATLEXMB05.amd.com
 (10.181.40.146) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.34; Fri, 12 Jan
 2024 14:31:42 -0600
Received: from [172.23.76.218] (10.180.168.240) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server id 15.1.2507.34 via Frontend
 Transport; Fri, 12 Jan 2024 14:31:40 -0600
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 9bda05f5-b189-11ee-9b0f-b553b5be7939
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=gCIfZgHqNMlqopAvwjVFCJxhVkQ6ltssSjj7Ad54Z4tY3ml/j84N9a/acxR7SkRsZDPVDrhCn1LI0GSe/hAMwDQLGe+os4Mb7EjqCcpDkW6UpKu1gZgprxXbY+sLVdizu+a3PQzNO+20/bz/8OHst2XxpfOKmK3/JQ25lbninoBC8+nN6gfqqoGiX45vLtXTG0db45F4k7WhuueCTB2SIanzOCgj5E9LR1NoyISq0sRPnr2JeS/l8b+NzCk95xPMs1niMl1OaoLKLkINS7H4G3o0fso0biQT2z3I5f4rIqw+uw8N+slQkL5OouJxY8nFLZrIaaC12yhvErruT8aKPg==
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=6s946DDDDbu/PynPrmfVtC7o6tO58Biy8XHhUbwbMOQ=;
 b=kcIs4WcaBIXeaK/lGBW9pmLEhjhXWCwS4T6gCLlhWkms1Cpueoluj6KaXhUGNj+VbmNOd7BLqPa0Bz9H6YPste5UJigWt6D2MPv98x744vvQB11nCCXITFGu/gFULd13JCrqp3Z2YHZpSRfY/81qjgYel/kW6KHeR1Vq4LxDmlzhkeDi06jEJSDrVJ6UyltJ26N/z4nfuRZGg0AG0n4gRmVVPb7OgqYdQsKG5vlWthe+61xnrJIRLVl4m1jXSJ2g9iJ9ofuPcSYyB9g+6GFTQkD4M3xrEkKXQl54+wc7AeN3lJaovRu1Cfp1XhMXdA3gcqPE0TkRirGgltedyp+GYQ==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=citrix.com 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)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=6s946DDDDbu/PynPrmfVtC7o6tO58Biy8XHhUbwbMOQ=;
 b=NNGJdukMmi7+oS5eGX5WIdPnrjQhxrJuN8cunbWwHS4Ynx1UafV7RbljMnV2mqDDljuK1xjCbOKAaJQYLg9s9sBEhhxs/VaEMce5v3TIhxHZ8X0HO8PlmvCF6zaiblzRRuM9K4M/U/3IjFlE26jYojdq4dlqhH5Mbz98+vnLwUM=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=SATLEXMB03.amd.com; pr=C
Message-ID: <009f9287-d4cf-4008-8b47-59825c6510bf@amd.com>
Date: Fri, 12 Jan 2024 15:31:39 -0500
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v12 09/15] vpci/header: program p2m with guest BAR view
Content-Language: en-US
To: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
CC: <xen-devel@lists.xenproject.org>, Oleksandr Andrushchenko
	<oleksandr_andrushchenko@epam.com>, "Daniel P. Smith"
	<dpsmith@apertussolutions.com>, Volodymyr Babchuk
	<volodymyr_babchuk@epam.com>
References: <20240109215145.430207-1-stewart.hildebrand@amd.com>
 <20240109215145.430207-10-stewart.hildebrand@amd.com>
 <ZaFVhaVvpDljEgdM@macbook>
From: Stewart Hildebrand <stewart.hildebrand@amd.com>
In-Reply-To: <ZaFVhaVvpDljEgdM@macbook>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CY4PEPF0000E9D7:EE_|CH0PR12MB5073:EE_
X-MS-Office365-Filtering-Correlation-Id: 5ffe968b-5b52-47f0-3db1-08dc13ad7d29
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam: BCL:0;
X-Microsoft-Antispam-Message-Info:
	gz4ynDKEAiw5EMbLdAeIXGUS5rSrZbGJul/rkLM/EldFYiD/GkfgcmGQhfW9fzhMM0xF4gYfA/VTS4+CG0RAGH2m0VGytPbiltdH2nh2QWNDdZQ8NlqBEOPm+eW3JevAN+ZY4jaUIUOgp1ZpVqEmumq9USIqNzBe0rgOtlLRGlIxU69/40NK5oQht801FfzzwE3J8GthmhSXPgvhFv5AlhhawRLBcCJJCbFFNf1FPRXbcyNu4r9D9tM4Ck1TSMmigsUelX/Z+kp3PsT0TP/vEkHLa0Sbc4S6sibXgQd5agSNcEo4FAcUqr5M/lKch0czlb8RY+2FoxYEZkWL1FyUnXT3lsGNKBKO/RV80mD1Y7MdWr023te5xUFuIjyXrU/SpMA+BqOoqCSRZN1fwSwxA0YWUb49nYjJol2s9WQfWN9J1v7v3+nzeWW6f1Gfpb4REGrP3YBAcE3NYs6zJ5uJKjgOwZNPvAvS1M7lEnC6Yu4wHQsRwMGbV/bqHWK7f0NPhN2whDi/Evvv5T2Tq1O32CC0jIY2l5p09tCdB5Jcy9354r+tloUm0mnAd9lXetrGyvOx065mT5ArgwC1SLEHxKhj6gtmKHZVHIbcLHLP/3+vRxBAOL1crN2EC/qsMrW6Kc/a8L/hSa9fq2/hYYrxMogjdYnqzgQrSQiSpziO9rM8UeLldxNZgXFyUo+P/tepEjkv4grqebeOghrNXk4EH3GRHCEDL4vHPhmiBhFfnHXU1yF9EvQDtH6Mhrit+uW/17N7dloo897KM0N+LJzDzXexegdC3GGO6lmiyYn8tGtvkdxvj5j1XVtdPSpv6ILAQd1QNlkYDJmDa+lQ0SGMZUqpfTVxcpJ7bVCXz3Lo/mY=
X-Forefront-Antispam-Report:
	CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB03.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230031)(4636009)(376002)(396003)(39860400002)(346002)(136003)(230173577357003)(230273577357003)(230922051799003)(451199024)(64100799003)(82310400011)(186009)(1800799012)(36840700001)(46966006)(40470700004)(31686004)(40460700003)(40480700001)(26005)(336012)(426003)(83380400001)(86362001)(31696002)(36756003)(81166007)(356005)(5660300002)(30864003)(16576012)(4326008)(47076005)(36860700001)(44832011)(41300700001)(53546011)(2616005)(82740400003)(8936002)(8676002)(6916009)(54906003)(70586007)(316002)(70206006)(2906002)(478600001)(43740500002)(36900700001);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Jan 2024 20:31:42.8798
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 5ffe968b-5b52-47f0-3db1-08dc13ad7d29
X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB03.amd.com]
X-MS-Exchange-CrossTenant-AuthSource:
	CY4PEPF0000E9D7.namprd05.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH0PR12MB5073

On 1/12/24 10:06, Roger Pau Monné wrote:
> On Tue, Jan 09, 2024 at 04:51:24PM -0500, Stewart Hildebrand wrote:
>> From: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>
>>
>> Take into account guest's BAR view and program its p2m accordingly:
>> gfn is guest's view of the BAR and mfn is the physical BAR value.
>> This way hardware domain sees physical BAR values and guest sees
>> emulated ones.
>>
>> Hardware domain continues getting the BARs identity mapped, while for
>> domUs the BARs are mapped at the requested guest address without
>> modifying the BAR address in the device PCI config space.
>>
>> Signed-off-by: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>
>> Signed-off-by: Volodymyr Babchuk <volodymyr_babchuk@epam.com>
>> Signed-off-by: Stewart Hildebrand <stewart.hildebrand@amd.com>
> 
> Some nits and a request to add an extra assert. If you agree:
> 
> Reviewed-by: Roger Pau Monné <roger.pau@citrix.com>

Thanks! I agree. I'll reply to this with a v12.1 patch.

> 
>> ---
>> In v12:
>> - Update guest_addr in rom_write()
>> - Use unsigned long for start_mfn and map_mfn to reduce mfn_x() calls
>> - Use existing vmsix_table_*() functions
>> - Change vmsix_table_base() to use .guest_addr
>> In v11:
>> - Add vmsix_guest_table_addr() and vmsix_guest_table_base() functions
>>   to access guest's view of the VMSIx tables.
>> - Use MFN (not GFN) to check access permissions
>> - Move page offset check to this patch
>> - Call rangeset_remove_range() with correct parameters
>> In v10:
>> - Moved GFN variable definition outside the loop in map_range()
>> - Updated printk error message in map_range()
>> - Now BAR address is always stored in bar->guest_addr, even for
>>   HW dom, this removes bunch of ugly is_hwdom() checks in modify_bars()
>> - vmsix_table_base() now uses .guest_addr instead of .addr
>> In v9:
>> - Extended the commit message
>> - Use bar->guest_addr in modify_bars
>> - Extended printk error message in map_range
>> - Moved map_data initialization so .bar can be initialized during declaration
>> Since v5:
>> - remove debug print in map_range callback
>> - remove "identity" from the debug print
>> Since v4:
>> - moved start_{gfn|mfn} calculation into map_range
>> - pass vpci_bar in the map_data instead of start_{gfn|mfn}
>> - s/guest_addr/guest_reg
>> Since v3:
>> - updated comment (Roger)
>> - removed gfn_add(map->start_gfn, rc); which is wrong
>> - use v->domain instead of v->vpci.pdev->domain
>> - removed odd e.g. in comment
>> - s/d%d/%pd in altered code
>> - use gdprintk for map/unmap logs
>> Since v2:
>> - improve readability for data.start_gfn and restructure ?: construct
>> Since v1:
>>  - s/MSI/MSI-X in comments
>> ---
>>  xen/drivers/vpci/header.c | 81 +++++++++++++++++++++++++++++++--------
>>  xen/include/xen/vpci.h    |  3 +-
>>  2 files changed, 66 insertions(+), 18 deletions(-)
>>
>> diff --git a/xen/drivers/vpci/header.c b/xen/drivers/vpci/header.c
>> index feccd070ddd0..f0b0b64b0929 100644
>> --- a/xen/drivers/vpci/header.c
>> +++ b/xen/drivers/vpci/header.c
>> @@ -34,6 +34,7 @@
>>  
>>  struct map_data {
>>      struct domain *d;
>> +    const struct vpci_bar *bar;
>>      bool map;
>>  };
>>  
>> @@ -41,13 +42,24 @@ static int cf_check map_range(
>>      unsigned long s, unsigned long e, void *data, unsigned long *c)
>>  {
>>      const struct map_data *map = data;
>> +    /* Start address of the BAR as seen by the guest. */
>> +    unsigned long start_gfn = PFN_DOWN(map->bar->guest_addr);
>> +    /* Physical start address of the BAR. */
>> +    unsigned long start_mfn = PFN_DOWN(map->bar->addr);
>>      int rc;
>>  
>>      for ( ; ; )
>>      {
>>          unsigned long size = e - s + 1;
>> +        /*
>> +         * Ranges to be mapped don't always start at the BAR start address, as
>> +         * there can be holes or partially consumed ranges. Account for the
>> +         * offset of the current address from the BAR start.
>> +         */
>> +        unsigned long map_mfn = start_mfn + s - start_gfn;
>> +        unsigned long m_end = map_mfn + size - 1;
>>  
>> -        if ( !iomem_access_permitted(map->d, s, e) )
>> +        if ( !iomem_access_permitted(map->d, map_mfn, m_end) )
>>          {
>>              printk(XENLOG_G_WARNING
>>                     "%pd denied access to MMIO range [%#lx, %#lx]\n",
>> @@ -55,7 +67,8 @@ static int cf_check map_range(
>>              return -EPERM;
>>          }
>>  
>> -        rc = xsm_iomem_mapping(XSM_HOOK, map->d, s, e, map->map);
>> +        rc = xsm_iomem_mapping(XSM_HOOK, map->d, map_mfn, m_end,
>> +                               map->map);
>>          if ( rc )
>>          {
>>              printk(XENLOG_G_WARNING
>> @@ -73,8 +86,8 @@ static int cf_check map_range(
>>           * - {un}map_mmio_regions doesn't support preemption.
>>           */
>>  
>> -        rc = map->map ? map_mmio_regions(map->d, _gfn(s), size, _mfn(s))
>> -                      : unmap_mmio_regions(map->d, _gfn(s), size, _mfn(s));
>> +        rc = map->map ? map_mmio_regions(map->d, _gfn(s), size, _mfn(map_mfn))
>> +                      : unmap_mmio_regions(map->d, _gfn(s), size, _mfn(map_mfn));
>>          if ( rc == 0 )
>>          {
>>              *c += size;
>> @@ -83,8 +96,9 @@ static int cf_check map_range(
>>          if ( rc < 0 )
>>          {
>>              printk(XENLOG_G_WARNING
>> -                   "Failed to identity %smap [%lx, %lx] for d%d: %d\n",
>> -                   map->map ? "" : "un", s, e, map->d->domain_id, rc);
>> +                   "Failed to %smap [%lx %lx] -> [%lx %lx] for %pd: %d\n",
>> +                   map->map ? "" : "un", s, e, map_mfn,
>> +                   map_mfn + size, map->d, rc);
>>              break;
>>          }
>>          ASSERT(rc < size);
>> @@ -163,10 +177,6 @@ static void modify_decoding(const struct pci_dev *pdev, uint16_t cmd,
>>  bool vpci_process_pending(struct vcpu *v)
>>  {
>>      struct pci_dev *pdev = v->vpci.pdev;
>> -    struct map_data data = {
>> -        .d = v->domain,
>> -        .map = v->vpci.cmd & PCI_COMMAND_MEMORY,
>> -    };
>>      struct vpci_header *header = NULL;
>>      unsigned int i;
>>  
>> @@ -186,6 +196,11 @@ bool vpci_process_pending(struct vcpu *v)
>>      for ( i = 0; i < ARRAY_SIZE(header->bars); i++ )
>>      {
>>          struct vpci_bar *bar = &header->bars[i];
>> +        struct map_data data = {
>> +            .d = v->domain,
>> +            .map = v->vpci.cmd & PCI_COMMAND_MEMORY,
>> +            .bar = bar,
>> +        };
>>          int rc;
>>  
>>          if ( rangeset_is_empty(bar->mem) )
>> @@ -236,7 +251,6 @@ bool vpci_process_pending(struct vcpu *v)
>>  static int __init apply_map(struct domain *d, const struct pci_dev *pdev,
>>                              uint16_t cmd)
>>  {
>> -    struct map_data data = { .d = d, .map = true };
>>      struct vpci_header *header = &pdev->vpci->header;
>>      int rc = 0;
>>      unsigned int i;
>> @@ -246,6 +260,7 @@ static int __init apply_map(struct domain *d, const struct pci_dev *pdev,
>>      for ( i = 0; i < ARRAY_SIZE(header->bars); i++ )
>>      {
>>          struct vpci_bar *bar = &header->bars[i];
>> +        struct map_data data = { .d = d, .map = true, .bar = bar };
>>  
>>          if ( rangeset_is_empty(bar->mem) )
>>              continue;
>> @@ -311,12 +326,16 @@ static int modify_bars(const struct pci_dev *pdev, uint16_t cmd, bool rom_only)
>>       * First fill the rangesets with the BAR of this device or with the ROM
>>       * BAR only, depending on whether the guest is toggling the memory decode
>>       * bit of the command register, or the enable bit of the ROM BAR register.
>> +     *
>> +     * For non-hardware domain we use guest physical addresses.
>>       */
>>      for ( i = 0; i < ARRAY_SIZE(header->bars); i++ )
>>      {
>>          struct vpci_bar *bar = &header->bars[i];
>>          unsigned long start = PFN_DOWN(bar->addr);
>>          unsigned long end = PFN_DOWN(bar->addr + bar->size - 1);
>> +        unsigned long start_guest = PFN_DOWN(bar->guest_addr);
>> +        unsigned long end_guest = PFN_DOWN(bar->guest_addr + bar->size - 1);
>>  
>>          if ( !bar->mem )
>>              continue;
>> @@ -336,11 +355,25 @@ static int modify_bars(const struct pci_dev *pdev, uint16_t cmd, bool rom_only)
>>              continue;
>>          }
> 
> Should we assert that the BAR rangeset is empty here? To stay on the
> safe side.

Yes, I'll add an ASSERT.

> 
>>  
>> -        rc = rangeset_add_range(bar->mem, start, end);
>> +        /*
>> +         * Make sure that the guest set address has the same page offset
>> +         * as the physical address on the host or otherwise things won't work as
>> +         * expected.
>> +         */
>> +        if ( PAGE_OFFSET(bar->guest_addr) != PAGE_OFFSET(bar->addr) )
>> +        {
>> +            gprintk(XENLOG_G_WARNING,
>> +                    "%pp: Can't map BAR%d because of page offset mismatch: %lx vs %lx\n",
>                                            ^u
> 
> Also when using the x modifier it's better to also use # to print the
> 0x prefix.  You can also reduce the length of the message using
> s/because of/due to/ IMO:
> 
> %pp: Can't map BAR%u due to offset mismatch: %lx vs %lx

Will do

> 
>> +                    &pdev->sbdf, i, PAGE_OFFSET(bar->guest_addr),
>> +                    PAGE_OFFSET(bar->addr));
> 
> Maybe worth printing the whole address?

Agreed, will do

> 
>> +            return -EINVAL;
>> +        }
>> +
>> +        rc = rangeset_add_range(bar->mem, start_guest, end_guest);
>>          if ( rc )
>>          {
>>              printk(XENLOG_G_WARNING "Failed to add [%lx, %lx]: %d\n",
>> -                   start, end, rc);
>> +                   start_guest, end_guest, rc);
>>              return rc;
>>          }
>>  
>> @@ -352,12 +385,12 @@ static int modify_bars(const struct pci_dev *pdev, uint16_t cmd, bool rom_only)
>>              if ( rangeset_is_empty(prev_bar->mem) )
>>                  continue;
>>  
>> -            rc = rangeset_remove_range(prev_bar->mem, start, end);
>> +            rc = rangeset_remove_range(prev_bar->mem, start_guest, end_guest);
>>              if ( rc )
>>              {
>>                  gprintk(XENLOG_WARNING,
>>                         "%pp: failed to remove overlapping range [%lx, %lx]: %d\n",
>> -                        &pdev->sbdf, start, end, rc);
>> +                        &pdev->sbdf, start_guest, end_guest, rc);
>>                  return rc;
>>              }
>>          }
>> @@ -425,8 +458,8 @@ static int modify_bars(const struct pci_dev *pdev, uint16_t cmd, bool rom_only)
>>              for ( i = 0; i < ARRAY_SIZE(tmp->vpci->header.bars); i++ )
>>              {
>>                  const struct vpci_bar *remote_bar = &tmp->vpci->header.bars[i];
>> -                unsigned long start = PFN_DOWN(remote_bar->addr);
>> -                unsigned long end = PFN_DOWN(remote_bar->addr +
>> +                unsigned long start = PFN_DOWN(remote_bar->guest_addr);
>> +                unsigned long end = PFN_DOWN(remote_bar->guest_addr +
>>                                               remote_bar->size - 1);
>>  
>>                  if ( !remote_bar->enabled )
>> @@ -513,6 +546,8 @@ static void cf_check bar_write(
>>      struct vpci_bar *bar = data;
>>      bool hi = false;
>>  
>> +    ASSERT(is_hardware_domain(pdev->domain));
>> +
>>      if ( bar->type == VPCI_BAR_MEM64_HI )
>>      {
>>          ASSERT(reg > PCI_BASE_ADDRESS_0);
>> @@ -543,6 +578,10 @@ static void cf_check bar_write(
>>       */
>>      bar->addr &= ~(0xffffffffULL << (hi ? 32 : 0));
>>      bar->addr |= (uint64_t)val << (hi ? 32 : 0);
>> +    /*
>> +     * Update guest address as well, so hardware domain sees BAR identity mapped
>> +     */
> 
> Can you drop the 'as well' and make this a single line comment?
> 
> Otherwise maybe reword to:
> 
> Update guest address, so hardware domain BAR is identity mapped.
> 
> Sorry, I find it wasteful to have the opening and closing comment
> delimiters in separate lines for single line comments.

Yep, I'll make it single line


From xen-devel-bounces@lists.xenproject.org Fri Jan 12 20:50:22 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 12 Jan 2024 20:50:22 +0000
Received: from list by lists.xenproject.org with outflank-mailman.666983.1037978 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rOOTo-0008Dq-CI; Fri, 12 Jan 2024 20:50:16 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 666983.1037978; Fri, 12 Jan 2024 20:50:16 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rOOTo-0008Dj-86; Fri, 12 Jan 2024 20:50:16 +0000
Received: by outflank-mailman (input) for mailman id 666983;
 Fri, 12 Jan 2024 20:50:15 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=Vfvq=IW=amd.com=Stewart.Hildebrand@srs-se1.protection.inumbo.net>)
 id 1rOOTn-0008Da-Hk
 for xen-devel@lists.xenproject.org; Fri, 12 Jan 2024 20:50:15 +0000
Received: from NAM11-CO1-obe.outbound.protection.outlook.com
 (mail-co1nam11on20600.outbound.protection.outlook.com
 [2a01:111:f403:2416::600])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 2dde51b6-b18c-11ee-98f1-6d05b1d4d9a1;
 Fri, 12 Jan 2024 21:50:13 +0100 (CET)
Received: from SJ0PR13CA0213.namprd13.prod.outlook.com (2603:10b6:a03:2c1::8)
 by BY5PR12MB5509.namprd12.prod.outlook.com (2603:10b6:a03:1d7::21)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7181.21; Fri, 12 Jan
 2024 20:50:08 +0000
Received: from SJ1PEPF00001CE6.namprd03.prod.outlook.com
 (2603:10b6:a03:2c1:cafe::fb) by SJ0PR13CA0213.outlook.office365.com
 (2603:10b6:a03:2c1::8) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7181.20 via Frontend
 Transport; Fri, 12 Jan 2024 20:50:08 +0000
Received: from SATLEXMB04.amd.com (165.204.84.17) by
 SJ1PEPF00001CE6.mail.protection.outlook.com (10.167.242.22) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.7181.14 via Frontend Transport; Fri, 12 Jan 2024 20:50:07 +0000
Received: from SATLEXMB08.amd.com (10.181.40.132) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.34; Fri, 12 Jan
 2024 14:50:07 -0600
Received: from SATLEXMB04.amd.com (10.181.40.145) by SATLEXMB08.amd.com
 (10.181.40.132) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.32; Fri, 12 Jan
 2024 12:50:06 -0800
Received: from ubuntu.mshome.net (10.180.168.240) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server id 15.1.2507.34 via Frontend
 Transport; Fri, 12 Jan 2024 14:50:05 -0600
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 2dde51b6-b18c-11ee-98f1-6d05b1d4d9a1
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=g27NYY1hrx4DdSli9BVaupQWHmMEBrf6fxICPHwOqFmYo1PcCs4swVxgs1LugMkVfsWLVMwynedgJT60zot6bHIt1ylbaCLGgOzKezqAeDyMS7lwRhEohgJKWs514PGV2dAZIADbeDba6MiBzqmkA4wgKDX29heAZlGKsubMUBPe6Em8D3I08zPVA9uWSYiIZ1upSPgx1dizpg9nH5xDe3wUEBT3WIadQkbyqvXuedlfeiyshJrUBft5WhGMrueBK1Zy9CgFNoysuv3jvAIP8xEsj6c7OYs6CYz3uu+uirffW0PLfvNs4+5fh3FeT8lvHQM2b9np5C6L34a5XGCEBw==
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=NR6yCtpUtnu8sn/fncHh0sDSjNi8UnhIcRupzUe9XbI=;
 b=SWWSMzmuCdp2+yd3KAl1k6/APYS9BQyEwFxW/6ekqMQZJAm7IEuIq014LEZWw0UPdzDAWwkCxEyEnZpqkt355bFSUs0OeMNroDD1B6uzCOlhX7WdCTDPwbfo8Jq6voT0x3S3ydKJKOlKrf6r/JXeFGOwH77mMCpp9nXNH9bicyzOLs9IYelezGFGfTocd73RZnUtocrp9/N/KZCEdjAay6i6XH4KJfmfZwqdZ33DVMLZZbyryJ4htLG9nYoBSUnWQ+OkZiZAWCuzBSl8tKZw7aPklyXvPRxrrMefZFtOANJYewmo6ddic5W6CzIKzych8xgSJkHmarAXANlaK+59Aw==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=lists.xenproject.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)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=NR6yCtpUtnu8sn/fncHh0sDSjNi8UnhIcRupzUe9XbI=;
 b=NsqvDJ2qNo1QMY79on7SHtseq+XX8eZ8nB+9isg7QDigdlOoWxk1+hfy+PzybV75aHBTA3Kcd6woihFhjVMTEN8JHR8X/Y1ajEZK6nPlIwzNFlki6srLoNdC1w3kkSSgB4YLOVzySMz3epqFcKPI8iSiwpT/HCkruYKBZTrnIFU=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C
From: Stewart Hildebrand <stewart.hildebrand@amd.com>
To: <xen-devel@lists.xenproject.org>
CC: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>, "Daniel P.
 Smith" <dpsmith@apertussolutions.com>, Volodymyr Babchuk
	<volodymyr_babchuk@epam.com>, Stewart Hildebrand <stewart.hildebrand@amd.com>
Subject: [PATCH v12.1 09/15] vpci/header: program p2m with guest BAR view
Date: Fri, 12 Jan 2024 15:49:47 -0500
Message-ID: <20240112204948.694115-1-stewart.hildebrand@amd.com>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <009f9287-d4cf-4008-8b47-59825c6510bf@amd.com>
References: <20240109215145.430207-1-stewart.hildebrand@amd.com> <20240109215145.430207-10-stewart.hildebrand@amd.com> <ZaFVhaVvpDljEgdM@macbook> <009f9287-d4cf-4008-8b47-59825c6510bf@amd.com>
MIME-Version: 1.0
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: SJ1PEPF00001CE6:EE_|BY5PR12MB5509:EE_
X-MS-Office365-Filtering-Correlation-Id: a4ed1005-6b54-4e93-ccc1-08dc13b00fd3
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam: BCL:0;
X-Microsoft-Antispam-Message-Info:
	BLcc+FU96CdPcWq+zSDt5Eyt6QCU4EL4khvEWizP/UTd2Eh5DizIGpaALYOO3ifvemJ+bxtqAMYAXO8DeUps+QEwaZVLDgIKYSoXuOSZebCD5z7eZrlFjvzh4VOO2AtDGTCdZPrUUJG2tl/8CbDlyk40Wm/cRIs1hF+26zstXUbWeBV+O/xL6w1jyFTesGsMxsREOZQ40i5YN58rdZNZJ+S4FQOH2FSs8sHDzRuqlB4117zmdo2RY24EYhvyt0OSdDJBu2yrJB/28JIRlpODIre/e2k5fCzyEknRcN5tpjNLRCWIghGFhNoyxsx5b8R/m5/A5sf+sJ/Z/j5JADkNz3HAvGpf7/tD8jxY66e2KfUujw33KqT9UKwW3Vf44617u6eUP9W1P4RxLdymWhVO5kgT5JNXfzNK+leZWzD2spsry+hX2UpGIhe7CIRAhKagb2/j0UXX+EmM/b5NMx21Zi9Q0ZF5c7AfMAk5eHuXxBT6p81YcbDIoXfniEzbd2JA0ithQGCYAN9hqNXpNViT2VmU3xBHP4zUxxv5vwx45bS5sD7b2bCYuUzrjCxrJsq7p6si/2y2S2jjK4DyyIb2SM09uk37I1vA5eMXJXtFcCSOArBtchTxEdK4vWfpiYBR8CLjvUDVtc82D0BpqqI3WX4d/GhOrR0oythjzDXI+IGMqf9ixP/fWgGoTCvyKZxAq+vVYg7AabgDTFNi92Zo2dp/uXG5Slvwh6jjDiVnryZ7rMJyTbWxsFHzkxF3E6gLMt9hv1bmSJZhZBTPsrHXmyBTjlYJQfjwbuhEgc7jvNV9DPCoW7E8fjpRVXSvDm1w
X-Forefront-Antispam-Report:
	CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230031)(4636009)(346002)(136003)(376002)(39860400002)(396003)(230173577357003)(230922051799003)(230273577357003)(82310400011)(1800799012)(64100799003)(451199024)(186009)(46966006)(36840700001)(40470700004)(40460700003)(40480700001)(8676002)(4326008)(6666004)(83380400001)(26005)(8936002)(5660300002)(47076005)(316002)(70586007)(54906003)(70206006)(6916009)(478600001)(336012)(426003)(2616005)(44832011)(81166007)(356005)(82740400003)(36756003)(30864003)(41300700001)(86362001)(1076003)(2906002)(36860700001)(36900700001);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Jan 2024 20:50:07.8915
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: a4ed1005-6b54-4e93-ccc1-08dc13b00fd3
X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com]
X-MS-Exchange-CrossTenant-AuthSource:
	SJ1PEPF00001CE6.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY5PR12MB5509

From: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>

Take into account guest's BAR view and program its p2m accordingly:
gfn is guest's view of the BAR and mfn is the physical BAR value.
This way hardware domain sees physical BAR values and guest sees
emulated ones.

Hardware domain continues getting the BARs identity mapped, while for
domUs the BARs are mapped at the requested guest address without
modifying the BAR address in the device PCI config space.

Signed-off-by: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>
Signed-off-by: Volodymyr Babchuk <volodymyr_babchuk@epam.com>
Signed-off-by: Stewart Hildebrand <stewart.hildebrand@amd.com>
Reviewed-by: Roger Pau Monné <roger.pau@citrix.com>
---
In v12.1:
- ASSERT(rangeset_is_empty()) in modify_bars()
- Fixup print format in modify_bars()
- Make comment single line in bar_write()
- Add Roger's R-b
In v12:
- Update guest_addr in rom_write()
- Use unsigned long for start_mfn and map_mfn to reduce mfn_x() calls
- Use existing vmsix_table_*() functions
- Change vmsix_table_base() to use .guest_addr
In v11:
- Add vmsix_guest_table_addr() and vmsix_guest_table_base() functions
  to access guest's view of the VMSIx tables.
- Use MFN (not GFN) to check access permissions
- Move page offset check to this patch
- Call rangeset_remove_range() with correct parameters
In v10:
- Moved GFN variable definition outside the loop in map_range()
- Updated printk error message in map_range()
- Now BAR address is always stored in bar->guest_addr, even for
  HW dom, this removes bunch of ugly is_hwdom() checks in modify_bars()
- vmsix_table_base() now uses .guest_addr instead of .addr
In v9:
- Extended the commit message
- Use bar->guest_addr in modify_bars
- Extended printk error message in map_range
- Moved map_data initialization so .bar can be initialized during declaration
Since v5:
- remove debug print in map_range callback
- remove "identity" from the debug print
Since v4:
- moved start_{gfn|mfn} calculation into map_range
- pass vpci_bar in the map_data instead of start_{gfn|mfn}
- s/guest_addr/guest_reg
Since v3:
- updated comment (Roger)
- removed gfn_add(map->start_gfn, rc); which is wrong
- use v->domain instead of v->vpci.pdev->domain
- removed odd e.g. in comment
- s/d%d/%pd in altered code
- use gdprintk for map/unmap logs
Since v2:
- improve readability for data.start_gfn and restructure ?: construct
Since v1:
 - s/MSI/MSI-X in comments
---
 xen/drivers/vpci/header.c | 80 ++++++++++++++++++++++++++++++---------
 xen/include/xen/vpci.h    |  3 +-
 2 files changed, 65 insertions(+), 18 deletions(-)

diff --git a/xen/drivers/vpci/header.c b/xen/drivers/vpci/header.c
index feccd070ddd0..f1e366bb5fc6 100644
--- a/xen/drivers/vpci/header.c
+++ b/xen/drivers/vpci/header.c
@@ -34,6 +34,7 @@
 
 struct map_data {
     struct domain *d;
+    const struct vpci_bar *bar;
     bool map;
 };
 
@@ -41,13 +42,24 @@ static int cf_check map_range(
     unsigned long s, unsigned long e, void *data, unsigned long *c)
 {
     const struct map_data *map = data;
+    /* Start address of the BAR as seen by the guest. */
+    unsigned long start_gfn = PFN_DOWN(map->bar->guest_addr);
+    /* Physical start address of the BAR. */
+    unsigned long start_mfn = PFN_DOWN(map->bar->addr);
     int rc;
 
     for ( ; ; )
     {
         unsigned long size = e - s + 1;
+        /*
+         * Ranges to be mapped don't always start at the BAR start address, as
+         * there can be holes or partially consumed ranges. Account for the
+         * offset of the current address from the BAR start.
+         */
+        unsigned long map_mfn = start_mfn + s - start_gfn;
+        unsigned long m_end = map_mfn + size - 1;
 
-        if ( !iomem_access_permitted(map->d, s, e) )
+        if ( !iomem_access_permitted(map->d, map_mfn, m_end) )
         {
             printk(XENLOG_G_WARNING
                    "%pd denied access to MMIO range [%#lx, %#lx]\n",
@@ -55,7 +67,8 @@ static int cf_check map_range(
             return -EPERM;
         }
 
-        rc = xsm_iomem_mapping(XSM_HOOK, map->d, s, e, map->map);
+        rc = xsm_iomem_mapping(XSM_HOOK, map->d, map_mfn, m_end,
+                               map->map);
         if ( rc )
         {
             printk(XENLOG_G_WARNING
@@ -73,8 +86,8 @@ static int cf_check map_range(
          * - {un}map_mmio_regions doesn't support preemption.
          */
 
-        rc = map->map ? map_mmio_regions(map->d, _gfn(s), size, _mfn(s))
-                      : unmap_mmio_regions(map->d, _gfn(s), size, _mfn(s));
+        rc = map->map ? map_mmio_regions(map->d, _gfn(s), size, _mfn(map_mfn))
+                      : unmap_mmio_regions(map->d, _gfn(s), size, _mfn(map_mfn));
         if ( rc == 0 )
         {
             *c += size;
@@ -83,8 +96,9 @@ static int cf_check map_range(
         if ( rc < 0 )
         {
             printk(XENLOG_G_WARNING
-                   "Failed to identity %smap [%lx, %lx] for d%d: %d\n",
-                   map->map ? "" : "un", s, e, map->d->domain_id, rc);
+                   "Failed to %smap [%lx %lx] -> [%lx %lx] for %pd: %d\n",
+                   map->map ? "" : "un", s, e, map_mfn,
+                   map_mfn + size, map->d, rc);
             break;
         }
         ASSERT(rc < size);
@@ -163,10 +177,6 @@ static void modify_decoding(const struct pci_dev *pdev, uint16_t cmd,
 bool vpci_process_pending(struct vcpu *v)
 {
     struct pci_dev *pdev = v->vpci.pdev;
-    struct map_data data = {
-        .d = v->domain,
-        .map = v->vpci.cmd & PCI_COMMAND_MEMORY,
-    };
     struct vpci_header *header = NULL;
     unsigned int i;
 
@@ -186,6 +196,11 @@ bool vpci_process_pending(struct vcpu *v)
     for ( i = 0; i < ARRAY_SIZE(header->bars); i++ )
     {
         struct vpci_bar *bar = &header->bars[i];
+        struct map_data data = {
+            .d = v->domain,
+            .map = v->vpci.cmd & PCI_COMMAND_MEMORY,
+            .bar = bar,
+        };
         int rc;
 
         if ( rangeset_is_empty(bar->mem) )
@@ -236,7 +251,6 @@ bool vpci_process_pending(struct vcpu *v)
 static int __init apply_map(struct domain *d, const struct pci_dev *pdev,
                             uint16_t cmd)
 {
-    struct map_data data = { .d = d, .map = true };
     struct vpci_header *header = &pdev->vpci->header;
     int rc = 0;
     unsigned int i;
@@ -246,6 +260,7 @@ static int __init apply_map(struct domain *d, const struct pci_dev *pdev,
     for ( i = 0; i < ARRAY_SIZE(header->bars); i++ )
     {
         struct vpci_bar *bar = &header->bars[i];
+        struct map_data data = { .d = d, .map = true, .bar = bar };
 
         if ( rangeset_is_empty(bar->mem) )
             continue;
@@ -311,12 +326,16 @@ static int modify_bars(const struct pci_dev *pdev, uint16_t cmd, bool rom_only)
      * First fill the rangesets with the BAR of this device or with the ROM
      * BAR only, depending on whether the guest is toggling the memory decode
      * bit of the command register, or the enable bit of the ROM BAR register.
+     *
+     * For non-hardware domain we use guest physical addresses.
      */
     for ( i = 0; i < ARRAY_SIZE(header->bars); i++ )
     {
         struct vpci_bar *bar = &header->bars[i];
         unsigned long start = PFN_DOWN(bar->addr);
         unsigned long end = PFN_DOWN(bar->addr + bar->size - 1);
+        unsigned long start_guest = PFN_DOWN(bar->guest_addr);
+        unsigned long end_guest = PFN_DOWN(bar->guest_addr + bar->size - 1);
 
         if ( !bar->mem )
             continue;
@@ -336,11 +355,26 @@ static int modify_bars(const struct pci_dev *pdev, uint16_t cmd, bool rom_only)
             continue;
         }
 
-        rc = rangeset_add_range(bar->mem, start, end);
+        ASSERT(rangeset_is_empty(bar->mem));
+
+        /*
+         * Make sure that the guest set address has the same page offset
+         * as the physical address on the host or otherwise things won't work as
+         * expected.
+         */
+        if ( PAGE_OFFSET(bar->guest_addr) != PAGE_OFFSET(bar->addr) )
+        {
+            gprintk(XENLOG_G_WARNING,
+                    "%pp: Can't map BAR%u due to offset mismatch: %#lx vs %#lx\n",
+                    &pdev->sbdf, i, bar->guest_addr, bar->addr);
+            return -EINVAL;
+        }
+
+        rc = rangeset_add_range(bar->mem, start_guest, end_guest);
         if ( rc )
         {
             printk(XENLOG_G_WARNING "Failed to add [%lx, %lx]: %d\n",
-                   start, end, rc);
+                   start_guest, end_guest, rc);
             return rc;
         }
 
@@ -352,12 +386,12 @@ static int modify_bars(const struct pci_dev *pdev, uint16_t cmd, bool rom_only)
             if ( rangeset_is_empty(prev_bar->mem) )
                 continue;
 
-            rc = rangeset_remove_range(prev_bar->mem, start, end);
+            rc = rangeset_remove_range(prev_bar->mem, start_guest, end_guest);
             if ( rc )
             {
                 gprintk(XENLOG_WARNING,
                        "%pp: failed to remove overlapping range [%lx, %lx]: %d\n",
-                        &pdev->sbdf, start, end, rc);
+                        &pdev->sbdf, start_guest, end_guest, rc);
                 return rc;
             }
         }
@@ -425,8 +459,8 @@ static int modify_bars(const struct pci_dev *pdev, uint16_t cmd, bool rom_only)
             for ( i = 0; i < ARRAY_SIZE(tmp->vpci->header.bars); i++ )
             {
                 const struct vpci_bar *remote_bar = &tmp->vpci->header.bars[i];
-                unsigned long start = PFN_DOWN(remote_bar->addr);
-                unsigned long end = PFN_DOWN(remote_bar->addr +
+                unsigned long start = PFN_DOWN(remote_bar->guest_addr);
+                unsigned long end = PFN_DOWN(remote_bar->guest_addr +
                                              remote_bar->size - 1);
 
                 if ( !remote_bar->enabled )
@@ -513,6 +547,8 @@ static void cf_check bar_write(
     struct vpci_bar *bar = data;
     bool hi = false;
 
+    ASSERT(is_hardware_domain(pdev->domain));
+
     if ( bar->type == VPCI_BAR_MEM64_HI )
     {
         ASSERT(reg > PCI_BASE_ADDRESS_0);
@@ -543,6 +579,8 @@ static void cf_check bar_write(
      */
     bar->addr &= ~(0xffffffffULL << (hi ? 32 : 0));
     bar->addr |= (uint64_t)val << (hi ? 32 : 0);
+    /* Update guest address, so hardware domain BAR is identity mapped. */
+    bar->guest_addr = bar->addr;
 
     /* Make sure Xen writes back the same value for the BAR RO bits. */
     if ( !hi )
@@ -639,11 +677,14 @@ static void cf_check rom_write(
     }
 
     if ( !rom->enabled )
+    {
         /*
          * If the ROM BAR is not mapped update the address field so the
          * correct address is mapped into the p2m.
          */
         rom->addr = val & PCI_ROM_ADDRESS_MASK;
+        rom->guest_addr = rom->addr;
+    }
 
     if ( !header->bars_mapped || rom->enabled == new_enabled )
     {
@@ -667,7 +708,10 @@ static void cf_check rom_write(
         return;
 
     if ( !new_enabled )
+    {
         rom->addr = val & PCI_ROM_ADDRESS_MASK;
+        rom->guest_addr = rom->addr;
+    }
 }
 
 static int bar_add_rangeset(const struct pci_dev *pdev, struct vpci_bar *bar,
@@ -862,6 +906,7 @@ static int cf_check init_header(struct pci_dev *pdev)
         }
 
         bars[i].addr = addr;
+        bars[i].guest_addr = addr;
         bars[i].size = size;
         bars[i].prefetchable = val & PCI_BASE_ADDRESS_MEM_PREFETCH;
 
@@ -884,6 +929,7 @@ static int cf_check init_header(struct pci_dev *pdev)
         rom->type = VPCI_BAR_ROM;
         rom->size = size;
         rom->addr = addr;
+        rom->guest_addr = addr;
         header->rom_enabled = pci_conf_read32(pdev->sbdf, rom_reg) &
                               PCI_ROM_ADDRESS_ENABLE;
 
diff --git a/xen/include/xen/vpci.h b/xen/include/xen/vpci.h
index 817ee9ee7300..e89c571890b2 100644
--- a/xen/include/xen/vpci.h
+++ b/xen/include/xen/vpci.h
@@ -216,7 +216,8 @@ int vpci_msix_arch_print(const struct vpci_msix *msix);
  */
 static inline paddr_t vmsix_table_base(const struct vpci *vpci, unsigned int nr)
 {
-    return vpci->header.bars[vpci->msix->tables[nr] & PCI_MSIX_BIRMASK].addr;
+    return vpci->header.bars[vpci->msix->tables[nr] &
+                             PCI_MSIX_BIRMASK].guest_addr;
 }
 
 static inline paddr_t vmsix_table_addr(const struct vpci *vpci, unsigned int nr)
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Fri Jan 12 20:52:16 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 12 Jan 2024 20:52:16 +0000
Received: from list by lists.xenproject.org with outflank-mailman.666988.1037989 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rOOVi-0000NN-US; Fri, 12 Jan 2024 20:52:14 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 666988.1037989; Fri, 12 Jan 2024 20:52:14 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rOOVi-0000NG-Pe; Fri, 12 Jan 2024 20:52:14 +0000
Received: by outflank-mailman (input) for mailman id 666988;
 Fri, 12 Jan 2024 20:52:14 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=jnEz=IW=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1rOOVi-0000NA-1a
 for xen-devel@lists.xenproject.org; Fri, 12 Jan 2024 20:52:14 +0000
Received: from mail-wr1-x42a.google.com (mail-wr1-x42a.google.com
 [2a00:1450:4864:20::42a])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 75338118-b18c-11ee-9b0f-b553b5be7939;
 Fri, 12 Jan 2024 21:52:11 +0100 (CET)
Received: by mail-wr1-x42a.google.com with SMTP id
 ffacd0b85a97d-33678156e27so5729586f8f.1
 for <xen-devel@lists.xenproject.org>; Fri, 12 Jan 2024 12:52:11 -0800 (PST)
Received: from [10.80.67.30] (default-46-102-197-194.interdsl.co.uk.
 [46.102.197.194]) by smtp.gmail.com with ESMTPSA id
 m6-20020adffa06000000b00336c6b77584sm4806726wrr.91.2024.01.12.12.52.10
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Fri, 12 Jan 2024 12:52:10 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 75338118-b18c-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1705092731; x=1705697531; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=z6mXLcmtkPfn4GASHNwqUvErDpLSclxYuQA3kpaPqZ8=;
        b=aGI9fTJgHWyW2MCDuHDPbWC2+48qGtvpzh4P8pTNwrMnURb7LtdQ9Cx2oLBhMAUTrW
         1vVHCrIXyCUhmHqW4LNua4sFi8KZ+uP6L/+hL+wNMF/ff4g+K47d5Txo1wRAkH4Ng40u
         eRLO9/+8HHS5JXspcnhnJFTAdZnZSNPL43vcI=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705092731; x=1705697531;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=z6mXLcmtkPfn4GASHNwqUvErDpLSclxYuQA3kpaPqZ8=;
        b=O3DVICH2yVmEiqV4p+zoaDJIqIWkTvOvVSmi4TGLnebD28Vd++eHmvmSUUULVzlqpl
         9uLkrAplP5AGLpeREwNZqYvUFrUe8nNk1gogiT/ZdgOB08Ng+3AuiV4H5ZkSehKtpk+W
         qdbzV/oIlSiPGHOl+6lQ8RzbA40My17QpCj+3CyHAgTdjwVihhmk/GqJHrldDC3kB8bs
         Xr9+Mgegd1Jqgf9KtEF10F7oybI3c4nE0lqnYWVFw1aMJATiu5bV7wdwPTdb+HVOly52
         yZy7gt0kIA/S7k8fAXoMAiXW/EK3gbpaVmhMAr3XRGYk68QS23dwEHHzCI2lEAj5/NXX
         Pl2A==
X-Gm-Message-State: AOJu0Yxw7Dh7sAR+Ga7z9kp36ORN9apbISyXJORcesNM/6MX/Nvf46b5
	bRBheci5rvkTYTY/rHh4jFXGN6B5PmyV/g==
X-Google-Smtp-Source: AGHT+IEckfZkzonapBfcttt1xswkm0Ft7e/vDymdknjkgQkttI7DMwMJUuCEzlAj2zh26wbuM9N4oA==
X-Received: by 2002:a5d:54c6:0:b0:336:6602:1b5 with SMTP id x6-20020a5d54c6000000b00336660201b5mr1036820wrv.133.1705092731121;
        Fri, 12 Jan 2024 12:52:11 -0800 (PST)
Message-ID: <7ceabb61-41ce-40de-89f8-8779c7764f9f@citrix.com>
Date: Fri, 12 Jan 2024 20:52:10 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 0/4] x86emul: support further AVX extensions
Content-Language: en-GB
To: Jan Beulich <jbeulich@suse.com>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Wei Liu <wl@xen.org>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger.pau@citrix.com>
References: <96f70f2f-8712-9f93-34e3-f56deae364a8@suse.com>
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 xsFNBFLhNn8BEADVhE+Hb8i0GV6mihnnr/uiQQdPF8kUoFzCOPXkf7jQ5sLYeJa0cQi6Penp
 VtiFYznTairnVsN5J+ujSTIb+OlMSJUWV4opS7WVNnxHbFTPYZVQ3erv7NKc2iVizCRZ2Kxn
 srM1oPXWRic8BIAdYOKOloF2300SL/bIpeD+x7h3w9B/qez7nOin5NzkxgFoaUeIal12pXSR
 Q354FKFoy6Vh96gc4VRqte3jw8mPuJQpfws+Pb+swvSf/i1q1+1I4jsRQQh2m6OTADHIqg2E
 ofTYAEh7R5HfPx0EXoEDMdRjOeKn8+vvkAwhviWXTHlG3R1QkbE5M/oywnZ83udJmi+lxjJ5
 YhQ5IzomvJ16H0Bq+TLyVLO/VRksp1VR9HxCzItLNCS8PdpYYz5TC204ViycobYU65WMpzWe
 LFAGn8jSS25XIpqv0Y9k87dLbctKKA14Ifw2kq5OIVu2FuX+3i446JOa2vpCI9GcjCzi3oHV
 e00bzYiHMIl0FICrNJU0Kjho8pdo0m2uxkn6SYEpogAy9pnatUlO+erL4LqFUO7GXSdBRbw5
 gNt25XTLdSFuZtMxkY3tq8MFss5QnjhehCVPEpE6y9ZjI4XB8ad1G4oBHVGK5LMsvg22PfMJ
 ISWFSHoF/B5+lHkCKWkFxZ0gZn33ju5n6/FOdEx4B8cMJt+cWwARAQABzSlBbmRyZXcgQ29v
 cGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPsLBegQTAQgAJAIbAwULCQgHAwUVCgkI
 CwUWAgMBAAIeAQIXgAUCWKD95wIZAQAKCRBlw/kGpdefoHbdD/9AIoR3k6fKl+RFiFpyAhvO
 59ttDFI7nIAnlYngev2XUR3acFElJATHSDO0ju+hqWqAb8kVijXLops0gOfqt3VPZq9cuHlh
 IMDquatGLzAadfFx2eQYIYT+FYuMoPZy/aTUazmJIDVxP7L383grjIkn+7tAv+qeDfE+txL4
 SAm1UHNvmdfgL2/lcmL3xRh7sub3nJilM93RWX1Pe5LBSDXO45uzCGEdst6uSlzYR/MEr+5Z
 JQQ32JV64zwvf/aKaagSQSQMYNX9JFgfZ3TKWC1KJQbX5ssoX/5hNLqxMcZV3TN7kU8I3kjK
 mPec9+1nECOjjJSO/h4P0sBZyIUGfguwzhEeGf4sMCuSEM4xjCnwiBwftR17sr0spYcOpqET
 ZGcAmyYcNjy6CYadNCnfR40vhhWuCfNCBzWnUW0lFoo12wb0YnzoOLjvfD6OL3JjIUJNOmJy
 RCsJ5IA/Iz33RhSVRmROu+TztwuThClw63g7+hoyewv7BemKyuU6FTVhjjW+XUWmS/FzknSi
 dAG+insr0746cTPpSkGl3KAXeWDGJzve7/SBBfyznWCMGaf8E2P1oOdIZRxHgWj0zNr1+ooF
 /PzgLPiCI4OMUttTlEKChgbUTQ+5o0P080JojqfXwbPAyumbaYcQNiH1/xYbJdOFSiBv9rpt
 TQTBLzDKXok86M7BTQRS4TZ/ARAAkgqudHsp+hd82UVkvgnlqZjzz2vyrYfz7bkPtXaGb9H4
 Rfo7mQsEQavEBdWWjbga6eMnDqtu+FC+qeTGYebToxEyp2lKDSoAsvt8w82tIlP/EbmRbDVn
 7bhjBlfRcFjVYw8uVDPptT0TV47vpoCVkTwcyb6OltJrvg/QzV9f07DJswuda1JH3/qvYu0p
 vjPnYvCq4NsqY2XSdAJ02HrdYPFtNyPEntu1n1KK+gJrstjtw7KsZ4ygXYrsm/oCBiVW/OgU
 g/XIlGErkrxe4vQvJyVwg6YH653YTX5hLLUEL1NS4TCo47RP+wi6y+TnuAL36UtK/uFyEuPy
 wwrDVcC4cIFhYSfsO0BumEI65yu7a8aHbGfq2lW251UcoU48Z27ZUUZd2Dr6O/n8poQHbaTd
 6bJJSjzGGHZVbRP9UQ3lkmkmc0+XCHmj5WhwNNYjgbbmML7y0fsJT5RgvefAIFfHBg7fTY/i
 kBEimoUsTEQz+N4hbKwo1hULfVxDJStE4sbPhjbsPCrlXf6W9CxSyQ0qmZ2bXsLQYRj2xqd1
 bpA+1o1j2N4/au1R/uSiUFjewJdT/LX1EklKDcQwpk06Af/N7VZtSfEJeRV04unbsKVXWZAk
 uAJyDDKN99ziC0Wz5kcPyVD1HNf8bgaqGDzrv3TfYjwqayRFcMf7xJaL9xXedMcAEQEAAcLB
 XwQYAQgACQUCUuE2fwIbDAAKCRBlw/kGpdefoG4XEACD1Qf/er8EA7g23HMxYWd3FXHThrVQ
 HgiGdk5Yh632vjOm9L4sd/GCEACVQKjsu98e8o3ysitFlznEns5EAAXEbITrgKWXDDUWGYxd
 pnjj2u+GkVdsOAGk0kxczX6s+VRBhpbBI2PWnOsRJgU2n10PZ3mZD4Xu9kU2IXYmuW+e5KCA
 vTArRUdCrAtIa1k01sPipPPw6dfxx2e5asy21YOytzxuWFfJTGnVxZZSCyLUO83sh6OZhJkk
 b9rxL9wPmpN/t2IPaEKoAc0FTQZS36wAMOXkBh24PQ9gaLJvfPKpNzGD8XWR5HHF0NLIJhgg
 4ZlEXQ2fVp3XrtocHqhu4UZR4koCijgB8sB7Tb0GCpwK+C4UePdFLfhKyRdSXuvY3AHJd4CP
 4JzW0Bzq/WXY3XMOzUTYApGQpnUpdOmuQSfpV9MQO+/jo7r6yPbxT7CwRS5dcQPzUiuHLK9i
 nvjREdh84qycnx0/6dDroYhp0DFv4udxuAvt1h4wGwTPRQZerSm4xaYegEFusyhbZrI0U9tJ
 B8WrhBLXDiYlyJT6zOV2yZFuW47VrLsjYnHwn27hmxTC/7tvG3euCklmkn9Sl9IAKFu29RSo
 d5bD8kMSCYsTqtTfT6W4A3qHGvIDta3ptLYpIAOD2sY3GYq2nf3Bbzx81wZK14JdDDHUX2Rs
 6+ahAA==
In-Reply-To: <96f70f2f-8712-9f93-34e3-f56deae364a8@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 07/08/2023 4:18 pm, Jan Beulich wrote:
> Covers the smaller recently announced extensions, but not AVX10 (and
> even less so APX). Obviously CPUID aspects are taken care of alongside
> the actual emulator additions.
>
> 1: support AVX-VNNI-INT16
> 2: support SHA512
> 3: support SM3
> 4: support SM4

Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>

Sorry this took so long.  I think this is the 3rd time I've decided this
was all fine to go in, and clearly the first time I've written an email
to that effect.

~Andrew


From xen-devel-bounces@lists.xenproject.org Sat Jan 13 05:37:50 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 13 Jan 2024 05:37:50 +0000
Received: from list by lists.xenproject.org with outflank-mailman.667007.1037998 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rOWi8-0004UH-66; Sat, 13 Jan 2024 05:37:36 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 667007.1037998; Sat, 13 Jan 2024 05:37:36 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rOWi8-0004UA-3S; Sat, 13 Jan 2024 05:37:36 +0000
Received: by outflank-mailman (input) for mailman id 667007;
 Sat, 13 Jan 2024 05:37:35 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rOWi7-0004U0-Hx; Sat, 13 Jan 2024 05:37:35 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rOWi7-0007CA-7d; Sat, 13 Jan 2024 05:37:35 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rOWi6-0005Ms-Jz; Sat, 13 Jan 2024 05:37:34 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rOWi6-0004oB-Hv; Sat, 13 Jan 2024 05:37:34 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=JOGkF2vXNYQdgm2J7D/X55Rb4v7g8+SwAyCMcu17BHg=; b=phxRew6QVC9BisztfVWvAyQJ++
	jrnAaNSrNHQFE8wDDEwKuAbOxR1i29BqU6wF9kvYZB0u7b0VtYJHt+DzEbfAOLAIK9rCPjh/6ZHNC
	sOLi5hS+AJaHLySxI7k1ZCjChobxmkAlds6EqGQqwwO5PuVgjtyJt2lIrZWLcLBimohM=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184332-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [linux-linus test] 184332: regressions - FAIL
X-Osstest-Failures:
    linux-linus:test-arm64-arm64-xl-xsm:debian-install:fail:regression
    linux-linus:test-arm64-arm64-xl-credit1:debian-install:fail:regression
    linux-linus:test-arm64-arm64-xl:debian-install:fail:regression
    linux-linus:test-arm64-arm64-xl-thunderx:debian-install:fail:regression
    linux-linus:test-arm64-arm64-xl-credit2:debian-install:fail:regression
    linux-linus:test-arm64-arm64-libvirt-xsm:debian-install:fail:regression
    linux-linus:test-armhf-armhf-xl-vhd:guest-start:fail:heisenbug
    linux-linus:test-armhf-armhf-xl-vhd:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-vhd:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    linux-linus:test-amd64-amd64-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    linux-linus:test-amd64-amd64-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-raw:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-qcow2:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-qemuu-nested-amd:debian-hvm-install/l1/l2:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-xsm:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-multivcpu:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-multivcpu:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-arndale:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-arndale:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-rtds:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-rtds:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit1:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit1:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-qcow2:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit2:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit2:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-libvirt-raw:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-vhd:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-vhd:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-qcow2:migrate-support-check:fail:nonblocking
X-Osstest-Versions-This:
    linux=70d201a40823acba23899342d62bc2644051ad2e
X-Osstest-Versions-That:
    linux=0dd3ee31125508cd67f7e7172247f05b7fd1753a
From: osstest service owner <osstest-admin@xenproject.org>
Date: Sat, 13 Jan 2024 05:37:34 +0000

flight 184332 linux-linus real [real]
flight 184336 linux-linus real-retest [real]
http://logs.test-lab.xenproject.org/osstest/logs/184332/
http://logs.test-lab.xenproject.org/osstest/logs/184336/

Regressions :-(

Tests which did not succeed and are blocking,
including tests which could not be run:
 test-arm64-arm64-xl-xsm      12 debian-install           fail REGR. vs. 184270
 test-arm64-arm64-xl-credit1  12 debian-install           fail REGR. vs. 184270
 test-arm64-arm64-xl          12 debian-install           fail REGR. vs. 184270
 test-arm64-arm64-xl-thunderx 12 debian-install           fail REGR. vs. 184270
 test-arm64-arm64-xl-credit2  12 debian-install           fail REGR. vs. 184270
 test-arm64-arm64-libvirt-xsm 12 debian-install           fail REGR. vs. 184270

Tests which are failing intermittently (not blocking):
 test-armhf-armhf-xl-vhd      13 guest-start         fail pass in 184336-retest

Tests which did not succeed, but are not blocking:
 test-armhf-armhf-xl-vhd     14 migrate-support-check fail in 184336 never pass
 test-armhf-armhf-xl-vhd 15 saverestore-support-check fail in 184336 never pass
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 184270
 test-amd64-amd64-xl-qemut-win7-amd64 19 guest-stop            fail like 184270
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 184270
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 184270
 test-armhf-armhf-libvirt-raw 15 saverestore-support-check    fail  like 184270
 test-amd64-amd64-xl-qemut-ws16-amd64 19 guest-stop            fail like 184270
 test-armhf-armhf-libvirt-qcow2 15 saverestore-support-check   fail like 184270
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 184270
 test-amd64-amd64-libvirt     15 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-multivcpu 15 migrate-support-check        fail  never pass
 test-armhf-armhf-xl-multivcpu 16 saverestore-support-check    fail  never pass
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-armhf-armhf-libvirt     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-arndale  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-arndale  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl          15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-rtds     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-rtds     16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-credit1  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit1  16 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-qcow2 14 migrate-support-check        fail never pass
 test-armhf-armhf-xl-credit2  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit2  16 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-raw 14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 15 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-vhd      14 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-vhd      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-raw 14 migrate-support-check        fail   never pass
 test-armhf-armhf-libvirt-qcow2 14 migrate-support-check        fail never pass

version targeted for testing:
 linux                70d201a40823acba23899342d62bc2644051ad2e
baseline version:
 linux                0dd3ee31125508cd67f7e7172247f05b7fd1753a

Last test of basis   184270  2024-01-07 20:42:19 Z    5 days
Failing since        184283  2024-01-08 20:10:43 Z    4 days    7 attempts
Testing same since   184332  2024-01-12 10:15:58 Z    0 days    1 attempts

------------------------------------------------------------
1200 people touched revisions under test,
not listing them all

jobs:
 build-amd64-xsm                                              pass    
 build-arm64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64                                                  pass    
 build-arm64                                                  pass    
 build-armhf                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-arm64-libvirt                                          pass    
 build-armhf-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-pvops                                            pass    
 build-arm64-pvops                                            pass    
 build-armhf-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-amd64-amd64-xl                                          pass    
 test-amd64-coresched-amd64-xl                                pass    
 test-arm64-arm64-xl                                          fail    
 test-armhf-armhf-xl                                          pass    
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm           pass    
 test-amd64-amd64-xl-qemut-stubdom-debianhvm-amd64-xsm        pass    
 test-amd64-amd64-xl-qemut-debianhvm-i386-xsm                 pass    
 test-amd64-amd64-xl-qemuu-debianhvm-i386-xsm                 pass    
 test-amd64-amd64-libvirt-xsm                                 pass    
 test-arm64-arm64-libvirt-xsm                                 fail    
 test-amd64-amd64-xl-xsm                                      pass    
 test-arm64-arm64-xl-xsm                                      fail    
 test-amd64-amd64-qemuu-nested-amd                            fail    
 test-amd64-amd64-xl-pvhv2-amd                                pass    
 test-amd64-amd64-dom0pvh-xl-amd                              pass    
 test-amd64-amd64-xl-qemut-debianhvm-amd64                    pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64                    pass    
 test-amd64-amd64-freebsd11-amd64                             pass    
 test-amd64-amd64-freebsd12-amd64                             pass    
 test-amd64-amd64-xl-qemuu-ovmf-amd64                         pass    
 test-amd64-amd64-xl-qemut-win7-amd64                         fail    
 test-amd64-amd64-xl-qemuu-win7-amd64                         fail    
 test-amd64-amd64-xl-qemut-ws16-amd64                         fail    
 test-amd64-amd64-xl-qemuu-ws16-amd64                         fail    
 test-armhf-armhf-xl-arndale                                  pass    
 test-amd64-amd64-examine-bios                                pass    
 test-amd64-amd64-xl-credit1                                  pass    
 test-arm64-arm64-xl-credit1                                  fail    
 test-armhf-armhf-xl-credit1                                  pass    
 test-amd64-amd64-xl-credit2                                  pass    
 test-arm64-arm64-xl-credit2                                  fail    
 test-armhf-armhf-xl-credit2                                  pass    
 test-amd64-amd64-xl-qemuu-dmrestrict-amd64-dmrestrict        pass    
 test-amd64-amd64-examine                                     pass    
 test-arm64-arm64-examine                                     pass    
 test-armhf-armhf-examine                                     pass    
 test-amd64-amd64-qemuu-nested-intel                          pass    
 test-amd64-amd64-xl-pvhv2-intel                              pass    
 test-amd64-amd64-dom0pvh-xl-intel                            pass    
 test-amd64-amd64-libvirt                                     pass    
 test-armhf-armhf-libvirt                                     pass    
 test-amd64-amd64-xl-multivcpu                                pass    
 test-armhf-armhf-xl-multivcpu                                pass    
 test-amd64-amd64-pair                                        pass    
 test-amd64-amd64-libvirt-pair                                pass    
 test-amd64-amd64-xl-pvshim                                   pass    
 test-amd64-amd64-pygrub                                      pass    
 test-amd64-amd64-libvirt-qcow2                               pass    
 test-armhf-armhf-libvirt-qcow2                               pass    
 test-amd64-amd64-libvirt-raw                                 pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-armhf-armhf-libvirt-raw                                 pass    
 test-amd64-amd64-xl-rtds                                     pass    
 test-armhf-armhf-xl-rtds                                     pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64-shadow             pass    
 test-amd64-amd64-xl-shadow                                   pass    
 test-arm64-arm64-xl-thunderx                                 fail    
 test-amd64-amd64-examine-uefi                                pass    
 test-amd64-amd64-xl-vhd                                      pass    
 test-arm64-arm64-xl-vhd                                      pass    
 test-armhf-armhf-xl-vhd                                      fail    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Not pushing.

(No revision log; it would be 134395 lines long.)


From xen-devel-bounces@lists.xenproject.org Sat Jan 13 06:29:59 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 13 Jan 2024 06:29:59 +0000
Received: from list by lists.xenproject.org with outflank-mailman.667013.1038008 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rOXWh-0001uF-SQ; Sat, 13 Jan 2024 06:29:51 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 667013.1038008; Sat, 13 Jan 2024 06:29:51 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rOXWh-0001u8-Ny; Sat, 13 Jan 2024 06:29:51 +0000
Received: by outflank-mailman (input) for mailman id 667013;
 Sat, 13 Jan 2024 06:29:50 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rOXWg-0001ty-4x; Sat, 13 Jan 2024 06:29:50 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rOXWf-0008EN-RW; Sat, 13 Jan 2024 06:29:49 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rOXWf-0006lp-D3; Sat, 13 Jan 2024 06:29:49 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rOXWf-000657-CP; Sat, 13 Jan 2024 06:29:49 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=xKmP2RtV/F+G/GfMkYAMTqiG23fB/FrdAHj4bzE2Azc=; b=IzmOJx3noY9USJnDlatpogAKjB
	QCuQJ6mhiGN3JIqXtJS5Cmm1vlHj1r7ne+/7BggQZ2Sv+hrHs5APRioojrM2VPr0HZScclJjKhm+H
	dGBxdCuVXFc0+H7D+gbpYkydsmpLvqLjRbkRwHmIaI6VpBzMGi4NW0pIDuE0Up7/rJ+A=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184334-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [linux-5.4 test] 184334: regressions - FAIL
X-Osstest-Failures:
    linux-5.4:test-armhf-armhf-xl-multivcpu:guest-start/debian.repeat:fail:regression
    linux-5.4:test-arm64-arm64-libvirt-raw:guest-start/debian.repeat:fail:heisenbug
    linux-5.4:test-armhf-armhf-libvirt-raw:guest-start/debian.repeat:fail:heisenbug
    linux-5.4:test-armhf-armhf-xl-vhd:guest-start:fail:heisenbug
    linux-5.4:test-amd64-i386-xl-qemuu-ws16-amd64:windows-install:fail:heisenbug
    linux-5.4:test-armhf-armhf-xl:guest-start/debian.repeat:fail:heisenbug
    linux-5.4:test-armhf-armhf-xl-rtds:guest-start/debian.repeat:fail:allowable
    linux-5.4:test-armhf-armhf-xl-credit1:guest-start/debian.repeat:fail:nonblocking
    linux-5.4:test-armhf-armhf-libvirt-qcow2:saverestore-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-credit1:guest-start:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-arndale:guest-start/debian.repeat:fail:nonblocking
    linux-5.4:test-armhf-armhf-libvirt-qcow2:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-libvirt:saverestore-support-check:fail:nonblocking
    linux-5.4:test-amd64-amd64-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    linux-5.4:test-amd64-i386-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    linux-5.4:test-amd64-i386-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    linux-5.4:test-amd64-amd64-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-credit2:guest-start/debian.repeat:fail:nonblocking
    linux-5.4:test-amd64-amd64-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    linux-5.4:test-amd64-amd64-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    linux-5.4:test-amd64-i386-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    linux-5.4:test-armhf-armhf-libvirt-raw:saverestore-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-libvirt-qcow2:guest-start:fail:nonblocking
    linux-5.4:test-amd64-i386-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    linux-5.4:test-amd64-amd64-qemuu-nested-amd:debian-hvm-install/l1/l2:fail:nonblocking
    linux-5.4:test-amd64-i386-xl-pvshim:guest-start:fail:nonblocking
    linux-5.4:test-amd64-amd64-libvirt-xsm:migrate-support-check:fail:nonblocking
    linux-5.4:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    linux-5.4:test-amd64-i386-libvirt-xsm:migrate-support-check:fail:nonblocking
    linux-5.4:test-amd64-i386-libvirt:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-xsm:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-xsm:saverestore-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-libvirt-xsm:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl:saverestore-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-libvirt-xsm:saverestore-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-credit1:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-credit1:saverestore-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-credit2:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-credit2:saverestore-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-thunderx:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-thunderx:saverestore-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-multivcpu:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-multivcpu:saverestore-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-rtds:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-rtds:saverestore-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-credit1:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-credit1:saverestore-support-check:fail:nonblocking
    linux-5.4:test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    linux-5.4:test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-arndale:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-arndale:saverestore-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-credit2:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-credit2:saverestore-support-check:fail:nonblocking
    linux-5.4:test-amd64-amd64-libvirt-vhd:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl:saverestore-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-libvirt:migrate-support-check:fail:nonblocking
    linux-5.4:test-amd64-i386-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-libvirt-raw:saverestore-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-vhd:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-vhd:saverestore-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-vhd:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-vhd:saverestore-support-check:fail:nonblocking
X-Osstest-Versions-This:
    linux=4410df70110ff5175bf7f7fdc3bae5c80f2c36d9
X-Osstest-Versions-That:
    linux=2d21f73b2f16f51608c8d8b1726df270229a5006
From: osstest service owner <osstest-admin@xenproject.org>
Date: Sat, 13 Jan 2024 06:29:49 +0000

flight 184334 linux-5.4 real [real]
http://logs.test-lab.xenproject.org/osstest/logs/184334/

Regressions :-(

Tests which did not succeed and are blocking,
including tests which could not be run:
 test-armhf-armhf-xl-multivcpu 18 guest-start/debian.repeat fail REGR. vs. 184192

Tests which are failing intermittently (not blocking):
 test-arm64-arm64-libvirt-raw 17 guest-start/debian.repeat fail in 184327 pass in 184334
 test-armhf-armhf-libvirt-raw 17 guest-start/debian.repeat fail in 184327 pass in 184334
 test-armhf-armhf-xl-vhd      13 guest-start      fail in 184327 pass in 184334
 test-amd64-i386-xl-qemuu-ws16-amd64 12 windows-install fail in 184327 pass in 184334
 test-armhf-armhf-xl          18 guest-start/debian.repeat  fail pass in 184327

Regressions which are regarded as allowable (not blocking):
 test-armhf-armhf-xl-rtds    18 guest-start/debian.repeat fail REGR. vs. 184192

Tests which did not succeed, but are not blocking:
 test-armhf-armhf-xl-credit1 18 guest-start/debian.repeat fail blocked in 184192
 test-armhf-armhf-libvirt-qcow2 15 saverestore-support-check fail in 184327 blocked in 184192
 test-armhf-armhf-xl-credit1  14 guest-start         fail in 184327 like 184192
 test-armhf-armhf-xl-arndale 18 guest-start/debian.repeat fail in 184327 like 184192
 test-armhf-armhf-libvirt-qcow2 14 migrate-support-check fail in 184327 never pass
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 184192
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 184192
 test-amd64-i386-xl-qemut-win7-amd64 19 guest-stop             fail like 184192
 test-amd64-i386-xl-qemuu-win7-amd64 19 guest-stop             fail like 184192
 test-amd64-amd64-xl-qemut-win7-amd64 19 guest-stop            fail like 184192
 test-armhf-armhf-xl-credit2  18 guest-start/debian.repeat    fail  like 184192
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 184192
 test-amd64-amd64-xl-qemut-ws16-amd64 19 guest-stop            fail like 184192
 test-amd64-i386-xl-qemut-ws16-amd64 19 guest-stop             fail like 184192
 test-armhf-armhf-libvirt-raw 15 saverestore-support-check    fail  like 184192
 test-armhf-armhf-libvirt-qcow2 13 guest-start                 fail like 184192
 test-amd64-i386-xl-qemuu-ws16-amd64 19 guest-stop             fail like 184192
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 184192
 test-amd64-i386-xl-pvshim    14 guest-start                  fail   never pass
 test-amd64-amd64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt     15 migrate-support-check        fail   never pass
 test-amd64-i386-libvirt-xsm  15 migrate-support-check        fail   never pass
 test-amd64-i386-libvirt      15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-xsm      15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-xsm      16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl          15 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl          16 saverestore-support-check    fail   never pass
 test-arm64-arm64-libvirt-xsm 16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-credit1  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit1  16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-credit2  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit2  16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-thunderx 15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-thunderx 16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-multivcpu 15 migrate-support-check        fail  never pass
 test-armhf-armhf-xl-multivcpu 16 saverestore-support-check    fail  never pass
 test-armhf-armhf-xl-rtds     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-rtds     16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-credit1  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit1  16 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-armhf-armhf-xl-arndale  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-arndale  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-credit2  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit2  16 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-vhd 14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          16 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt     15 migrate-support-check        fail   never pass
 test-amd64-i386-libvirt-raw  14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 15 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-vhd      14 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-vhd      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-raw 14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      15 saverestore-support-check    fail   never pass

version targeted for testing:
 linux                4410df70110ff5175bf7f7fdc3bae5c80f2c36d9
baseline version:
 linux                2d21f73b2f16f51608c8d8b1726df270229a5006

Last test of basis   184192  2023-12-20 15:16:31 Z   23 days
Testing same since   184275  2024-01-08 10:43:33 Z    4 days    8 attempts

------------------------------------------------------------
People who touched revisions under test:
  Alexander Gordeev <agordeev@linux.ibm.com>
  Alexis Lothoré <alexis.lothore@bootlin.com>
  Alper Ak <alperyasinak1@gmail.com>
  Bin Li <bin.li@canonical.com>
  Borislav Petkov (AMD) <bp@alien8.de>
  Chen-Yu Tsai <wens@kernel.org>
  Dan Carpenter <dan.carpenter@linaro.org>
  David Howells <dhowells@redhat.com>
  David S. Miller <davem@davemloft.net>
  David Sterba <dsterba@suse.com>
  Dmitry Torokhov <dmitry.torokhov@gmail.com>
  Dominique Martinet <asmadeus@codewreck.org>
  Eric Dumazet <edumazet@google.com>
  Fedor Pchelkin <pchelkin@ispras.ru>
  Florian Fainelli <florian.fainelli@broadcom.com>
  Geert Uytterhoeven <geert+renesas@glider.be>
  Georgi Djakov <djakov@kernel.org>
  Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  Haoran Liu <liuhaoran14@163.com>
  Harshit Mogalapalli <harshit.m.mogalapalli@oracle.com>
  Heiko Carstens <hca@linux.ibm.com>
  Heiner Kallweit <hkallweit1@gmail.com>
  Hu Haowen <xianfengting221@163.com>
  Jakub Kicinski <kuba@kernel.org>
  Jamal Hadi Salim <jhs@mojatatu.com>
  Javier Carrasco <javier.carrasco.cruz@gmail.com>
  Jens Axboe <axboe@kernel.dk>
  Johan Hovold <johan@kernel.org>
  Johannes Berg <johannes.berg@intel.com>
  Jonathan Cameron <Jonathan.Cameron@huawei.com>
  Josef Bacik <josef@toxicpanda.com>
  Kai Vehmanen <kai.vehmanen@linux.intel.com>
  kernelci.org bot <bot@kernelci.org>
  Kunwu Chan <chentao@kylinos.cn>
  Linus Torvalds <torvalds@linux-foundation.org>
  Linus Walleij <linus.walleij@linaro.org>
  Linux Kernel Functional Testing <lkft@linaro.org>
  Liu Jian <liujian56@huawei.com>
  Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
  Mark Glover <mark.glover@actisense.com>
  Markus Suvanto <markus.suvanto@gmail.com>
  Martin K. Petersen <martin.petersen@oracle.com>
  Masami Hiramatsu (Google) <mhiramat@kernel.org>
  Mike Snitzer <snitzer@kernel.org>
  Mike Tipton <quic_mdtipton@quicinc.com>
  Miri Korenblit <miriam.rachel.korenblit@intel.com>
  Moshe Shemesh <moshe@nvidia.com>
  Namjae Jeon <linkinjeon@kernel.org>
  Paolo Abeni <pabeni@redhat.com>
  Paulo Alcantara (SUSE) <pc@manguebit.com>
  Paulo Alcantara <pc@manguebit.com>
  Peter Zijlstra (Intel) <peterz@infradead.org>
  Philipp Zabel <p.zabel@pengutronix.de>
  Quan Nguyen <quan@os.amperecomputing.com>
  Rahul Rameshbabu <rrameshbabu@nvidia.com>
  Reinhard Speyerer <rspmn@arcor.de>
  Rouven Czerwinski <r.czerwinski@pengutronix.de>
  Saeed Mahameed <saeedm@mellanox.com>
  Saeed Mahameed <saeedm@nvidia.com>
  Sarthak Kukreti <sarthakkukreti@chromium.org>
  Sasha Levin <sashal@kernel.org>
  Seth Forshee <sforshee@kernel.org>
  Slark Xiao <slark_xiao@163.com>
  Steve French <stfrench@microsoft.com>
  Steven Rostedt (Google) <rostedt@goodmis.org>
  Su Hui <suhui@nfschina.com>
  Takashi Iwai <tiwai@suse.de>
  Thomas Gleixner <tglx@linutronix.de>
  Tony Lindgren <tony@atomide.com>
  Vlad Buslov <vladbu@nvidia.com>
  Wadim Egorov <w.egorov@phytec.de>
  Wei Yongjun <weiyongjun1@huawei.com>
  Wolfram Sang <wsa@kernel.org>
  Zhipeng Lu <alexious@zju.edu.cn>

jobs:
 build-amd64-xsm                                              pass    
 build-arm64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64                                                  pass    
 build-arm64                                                  pass    
 build-armhf                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-arm64-libvirt                                          pass    
 build-armhf-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-pvops                                            pass    
 build-arm64-pvops                                            pass    
 build-armhf-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-amd64-amd64-xl                                          pass    
 test-amd64-coresched-amd64-xl                                pass    
 test-arm64-arm64-xl                                          pass    
 test-armhf-armhf-xl                                          fail    
 test-amd64-i386-xl                                           pass    
 test-amd64-coresched-i386-xl                                 pass    
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm           pass    
 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm            pass    
 test-amd64-amd64-xl-qemut-stubdom-debianhvm-amd64-xsm        pass    
 test-amd64-i386-xl-qemut-stubdom-debianhvm-amd64-xsm         pass    
 test-amd64-amd64-xl-qemut-debianhvm-i386-xsm                 pass    
 test-amd64-i386-xl-qemut-debianhvm-i386-xsm                  pass    
 test-amd64-amd64-xl-qemuu-debianhvm-i386-xsm                 pass    
 test-amd64-i386-xl-qemuu-debianhvm-i386-xsm                  pass    
 test-amd64-amd64-libvirt-xsm                                 pass    
 test-arm64-arm64-libvirt-xsm                                 pass    
 test-amd64-i386-libvirt-xsm                                  pass    
 test-amd64-amd64-xl-xsm                                      pass    
 test-arm64-arm64-xl-xsm                                      pass    
 test-amd64-i386-xl-xsm                                       pass    
 test-amd64-amd64-qemuu-nested-amd                            fail    
 test-amd64-amd64-xl-pvhv2-amd                                pass    
 test-amd64-i386-qemut-rhel6hvm-amd                           pass    
 test-amd64-i386-qemuu-rhel6hvm-amd                           pass    
 test-amd64-amd64-dom0pvh-xl-amd                              pass    
 test-amd64-amd64-xl-qemut-debianhvm-amd64                    pass    
 test-amd64-i386-xl-qemut-debianhvm-amd64                     pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64                    pass    
 test-amd64-i386-xl-qemuu-debianhvm-amd64                     pass    
 test-amd64-i386-freebsd10-amd64                              pass    
 test-amd64-amd64-qemuu-freebsd11-amd64                       pass    
 test-amd64-amd64-qemuu-freebsd12-amd64                       pass    
 test-amd64-amd64-xl-qemuu-ovmf-amd64                         pass    
 test-amd64-i386-xl-qemuu-ovmf-amd64                          pass    
 test-amd64-amd64-xl-qemut-win7-amd64                         fail    
 test-amd64-i386-xl-qemut-win7-amd64                          fail    
 test-amd64-amd64-xl-qemuu-win7-amd64                         fail    
 test-amd64-i386-xl-qemuu-win7-amd64                          fail    
 test-amd64-amd64-xl-qemut-ws16-amd64                         fail    
 test-amd64-i386-xl-qemut-ws16-amd64                          fail    
 test-amd64-amd64-xl-qemuu-ws16-amd64                         fail    
 test-amd64-i386-xl-qemuu-ws16-amd64                          fail    
 test-armhf-armhf-xl-arndale                                  pass    
 test-amd64-amd64-examine-bios                                pass    
 test-amd64-i386-examine-bios                                 pass    
 test-amd64-amd64-xl-credit1                                  pass    
 test-arm64-arm64-xl-credit1                                  pass    
 test-armhf-armhf-xl-credit1                                  fail    
 test-amd64-amd64-xl-credit2                                  pass    
 test-arm64-arm64-xl-credit2                                  pass    
 test-armhf-armhf-xl-credit2                                  fail    
 test-amd64-amd64-xl-qemuu-dmrestrict-amd64-dmrestrict        pass    
 test-amd64-i386-xl-qemuu-dmrestrict-amd64-dmrestrict         pass    
 test-amd64-amd64-examine                                     pass    
 test-arm64-arm64-examine                                     pass    
 test-armhf-armhf-examine                                     pass    
 test-amd64-i386-examine                                      pass    
 test-amd64-i386-freebsd10-i386                               pass    
 test-amd64-amd64-qemuu-nested-intel                          pass    
 test-amd64-amd64-xl-pvhv2-intel                              pass    
 test-amd64-i386-qemut-rhel6hvm-intel                         pass    
 test-amd64-i386-qemuu-rhel6hvm-intel                         pass    
 test-amd64-amd64-dom0pvh-xl-intel                            pass    
 test-amd64-amd64-libvirt                                     pass    
 test-armhf-armhf-libvirt                                     pass    
 test-amd64-i386-libvirt                                      pass    
 test-amd64-amd64-xl-multivcpu                                pass    
 test-armhf-armhf-xl-multivcpu                                fail    
 test-amd64-amd64-pair                                        pass    
 test-amd64-i386-pair                                         pass    
 test-amd64-amd64-libvirt-pair                                pass    
 test-amd64-i386-libvirt-pair                                 pass    
 test-amd64-amd64-xl-pvshim                                   pass    
 test-amd64-i386-xl-pvshim                                    fail    
 test-amd64-amd64-pygrub                                      pass    
 test-armhf-armhf-libvirt-qcow2                               fail    
 test-amd64-amd64-xl-qcow2                                    pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-armhf-armhf-libvirt-raw                                 pass    
 test-amd64-i386-libvirt-raw                                  pass    
 test-amd64-amd64-xl-rtds                                     pass    
 test-armhf-armhf-xl-rtds                                     fail    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64-shadow             pass    
 test-amd64-i386-xl-qemuu-debianhvm-amd64-shadow              pass    
 test-amd64-amd64-xl-shadow                                   pass    
 test-amd64-i386-xl-shadow                                    pass    
 test-arm64-arm64-xl-thunderx                                 pass    
 test-amd64-amd64-examine-uefi                                pass    
 test-amd64-i386-examine-uefi                                 pass    
 test-amd64-amd64-libvirt-vhd                                 pass    
 test-arm64-arm64-xl-vhd                                      pass    
 test-armhf-armhf-xl-vhd                                      pass    
 test-amd64-i386-xl-vhd                                       pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Not pushing.

(No revision log; it would be 1652 lines long.)


From xen-devel-bounces@lists.xenproject.org Sat Jan 13 11:01:17 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 13 Jan 2024 11:01:17 +0000
Received: from list by lists.xenproject.org with outflank-mailman.667034.1038033 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rObl5-0006pD-9V; Sat, 13 Jan 2024 11:00:59 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 667034.1038033; Sat, 13 Jan 2024 11:00:59 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rObl5-0006p6-6s; Sat, 13 Jan 2024 11:00:59 +0000
Received: by outflank-mailman (input) for mailman id 667034;
 Sat, 13 Jan 2024 11:00:57 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rObl3-0006ow-Mq; Sat, 13 Jan 2024 11:00:57 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rObl3-0005PN-KX; Sat, 13 Jan 2024 11:00:57 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rObl3-0005A5-0B; Sat, 13 Jan 2024 11:00:57 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rObl2-0003s4-Td; Sat, 13 Jan 2024 11:00:56 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=Dt00TljzuU0QjNewI8oK5UcQ82vdCx7I3KNbs+JzOmc=; b=vXo3TZRK1r/ES4YNp3sFKZ6nz7
	euUSHIJvNhdp2iPfbI643stt2qsGxHn/WbO6EObdpmS1Qaciw+tw5s1rhlEINID9EG5bysqdv1+bZ
	tfCyHt0vKXSHDFRZ4ClubeVJRnSw/uKJEf0j0OfregZgDRtyNWLNDHlc40KuhZnzPxI8=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184335-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [xen-unstable test] 184335: tolerable FAIL - PUSHED
X-Osstest-Failures:
    xen-unstable:test-amd64-amd64-xl-qemut-debianhvm-i386-xsm:debian-hvm-install:fail:nonblocking
    xen-unstable:test-amd64-amd64-xl-qemuu-win7-amd64:windows-install:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-amd64-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-raw:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-amd64-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-qcow2:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-qemuu-nested-amd:debian-hvm-install/l1/l2:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-i386-libvirt-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-pvshim:guest-start:fail:nonblocking
    xen-unstable:test-amd64-i386-libvirt:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-thunderx:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-xsm:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-thunderx:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-credit2:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-credit2:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-libvirt-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-libvirt-xsm:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-credit1:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-credit1:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-multivcpu:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-multivcpu:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit2:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit2:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit1:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit1:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-arndale:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-arndale:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-libvirt-raw:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-libvirt-raw:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-libvirt-raw:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt-vhd:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-vhd:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-vhd:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-raw:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-vhd:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-vhd:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-rtds:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-rtds:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-qcow2:migrate-support-check:fail:nonblocking
X-Osstest-Versions-This:
    xen=1ec3fe1f664fa837daf31e9fa8938f6109464f28
X-Osstest-Versions-That:
    xen=c27c8922f2c6995d688437b0758cec6a27d18320
From: osstest service owner <osstest-admin@xenproject.org>
Date: Sat, 13 Jan 2024 11:00:56 +0000

flight 184335 xen-unstable real [real]
http://logs.test-lab.xenproject.org/osstest/logs/184335/

Failures :-/ but no regressions.

Tests which did not succeed, but are not blocking:
 test-amd64-amd64-xl-qemut-debianhvm-i386-xsm 12 debian-hvm-install fail like 184299
 test-amd64-amd64-xl-qemuu-win7-amd64 12 windows-install       fail like 184319
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 184330
 test-amd64-amd64-xl-qemut-win7-amd64 19 guest-stop            fail like 184330
 test-amd64-i386-xl-qemuu-win7-amd64 19 guest-stop             fail like 184330
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 184330
 test-amd64-i386-xl-qemut-ws16-amd64 19 guest-stop             fail like 184330
 test-armhf-armhf-libvirt-raw 15 saverestore-support-check    fail  like 184330
 test-amd64-i386-xl-qemut-win7-amd64 19 guest-stop             fail like 184330
 test-amd64-amd64-xl-qemut-ws16-amd64 19 guest-stop            fail like 184330
 test-armhf-armhf-libvirt-qcow2 15 saverestore-support-check   fail like 184330
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 184330
 test-amd64-i386-xl-qemuu-ws16-amd64 19 guest-stop             fail like 184330
 test-amd64-i386-libvirt-xsm  15 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-amd64-i386-xl-pvshim    14 guest-start                  fail   never pass
 test-amd64-i386-libvirt      15 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt     15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl          15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-xsm      15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-thunderx 15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl          16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-xsm      16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-thunderx 16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-credit2  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit2  16 saverestore-support-check    fail   never pass
 test-arm64-arm64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-xsm 16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-credit1  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit1  16 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-armhf-armhf-xl-multivcpu 15 migrate-support-check        fail  never pass
 test-armhf-armhf-xl-multivcpu 16 saverestore-support-check    fail  never pass
 test-armhf-armhf-libvirt     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-credit2  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit2  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-credit1  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit1  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-arndale  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-arndale  16 saverestore-support-check    fail   never pass
 test-amd64-i386-libvirt-raw  14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 15 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-vhd 14 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-vhd      14 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-vhd      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-raw 14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-rtds     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-rtds     16 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-qcow2 14 migrate-support-check        fail never pass

version targeted for testing:
 xen                  1ec3fe1f664fa837daf31e9fa8938f6109464f28
baseline version:
 xen                  c27c8922f2c6995d688437b0758cec6a27d18320

Last test of basis   184330  2024-01-12 06:07:09 Z    1 days
Testing same since   184335  2024-01-12 18:10:05 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Javi Merino <javi.merino@cloud.com>
  Julien Grall <jgrall@amazon.com>
  Shawn Anastasio <sanastasio@raptorengineering.com>

jobs:
 build-amd64-xsm                                              pass    
 build-arm64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64-xtf                                              pass    
 build-amd64                                                  pass    
 build-arm64                                                  pass    
 build-armhf                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-arm64-libvirt                                          pass    
 build-armhf-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-prev                                             pass    
 build-i386-prev                                              pass    
 build-amd64-pvops                                            pass    
 build-arm64-pvops                                            pass    
 build-armhf-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-xtf-amd64-amd64-1                                       pass    
 test-xtf-amd64-amd64-2                                       pass    
 test-xtf-amd64-amd64-3                                       pass    
 test-xtf-amd64-amd64-4                                       pass    
 test-xtf-amd64-amd64-5                                       pass    
 test-amd64-amd64-xl                                          pass    
 test-amd64-coresched-amd64-xl                                pass    
 test-arm64-arm64-xl                                          pass    
 test-armhf-armhf-xl                                          pass    
 test-amd64-i386-xl                                           pass    
 test-amd64-coresched-i386-xl                                 pass    
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm           pass    
 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm            pass    
 test-amd64-amd64-xl-qemut-stubdom-debianhvm-amd64-xsm        pass    
 test-amd64-i386-xl-qemut-stubdom-debianhvm-amd64-xsm         pass    
 test-amd64-amd64-xl-qemut-debianhvm-i386-xsm                 fail    
 test-amd64-i386-xl-qemut-debianhvm-i386-xsm                  pass    
 test-amd64-amd64-xl-qemuu-debianhvm-i386-xsm                 pass    
 test-amd64-i386-xl-qemuu-debianhvm-i386-xsm                  pass    
 test-amd64-amd64-libvirt-xsm                                 pass    
 test-arm64-arm64-libvirt-xsm                                 pass    
 test-amd64-i386-libvirt-xsm                                  pass    
 test-amd64-amd64-xl-xsm                                      pass    
 test-arm64-arm64-xl-xsm                                      pass    
 test-amd64-i386-xl-xsm                                       pass    
 test-amd64-amd64-qemuu-nested-amd                            fail    
 test-amd64-amd64-xl-pvhv2-amd                                pass    
 test-amd64-i386-qemut-rhel6hvm-amd                           pass    
 test-amd64-i386-qemuu-rhel6hvm-amd                           pass    
 test-amd64-amd64-dom0pvh-xl-amd                              pass    
 test-amd64-amd64-xl-qemut-debianhvm-amd64                    pass    
 test-amd64-i386-xl-qemut-debianhvm-amd64                     pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64                    pass    
 test-amd64-i386-xl-qemuu-debianhvm-amd64                     pass    
 test-amd64-i386-freebsd10-amd64                              pass    
 test-amd64-amd64-qemuu-freebsd11-amd64                       pass    
 test-amd64-amd64-qemuu-freebsd12-amd64                       pass    
 test-amd64-amd64-xl-qemuu-ovmf-amd64                         pass    
 test-amd64-i386-xl-qemuu-ovmf-amd64                          pass    
 test-amd64-amd64-xl-qemut-win7-amd64                         fail    
 test-amd64-i386-xl-qemut-win7-amd64                          fail    
 test-amd64-amd64-xl-qemuu-win7-amd64                         fail    
 test-amd64-i386-xl-qemuu-win7-amd64                          fail    
 test-amd64-amd64-xl-qemut-ws16-amd64                         fail    
 test-amd64-i386-xl-qemut-ws16-amd64                          fail    
 test-amd64-amd64-xl-qemuu-ws16-amd64                         fail    
 test-amd64-i386-xl-qemuu-ws16-amd64                          fail    
 test-armhf-armhf-xl-arndale                                  pass    
 test-amd64-amd64-examine-bios                                pass    
 test-amd64-i386-examine-bios                                 pass    
 test-amd64-amd64-xl-credit1                                  pass    
 test-arm64-arm64-xl-credit1                                  pass    
 test-armhf-armhf-xl-credit1                                  pass    
 test-amd64-amd64-xl-credit2                                  pass    
 test-arm64-arm64-xl-credit2                                  pass    
 test-armhf-armhf-xl-credit2                                  pass    
 test-amd64-amd64-xl-qemuu-dmrestrict-amd64-dmrestrict        pass    
 test-amd64-i386-xl-qemuu-dmrestrict-amd64-dmrestrict         pass    
 test-amd64-amd64-examine                                     pass    
 test-arm64-arm64-examine                                     pass    
 test-armhf-armhf-examine                                     pass    
 test-amd64-i386-examine                                      pass    
 test-amd64-i386-freebsd10-i386                               pass    
 test-amd64-amd64-qemuu-nested-intel                          pass    
 test-amd64-amd64-xl-pvhv2-intel                              pass    
 test-amd64-i386-qemut-rhel6hvm-intel                         pass    
 test-amd64-i386-qemuu-rhel6hvm-intel                         pass    
 test-amd64-amd64-dom0pvh-xl-intel                            pass    
 test-amd64-amd64-libvirt                                     pass    
 test-armhf-armhf-libvirt                                     pass    
 test-amd64-i386-libvirt                                      pass    
 test-amd64-amd64-livepatch                                   pass    
 test-amd64-i386-livepatch                                    pass    
 test-amd64-amd64-migrupgrade                                 pass    
 test-amd64-i386-migrupgrade                                  pass    
 test-amd64-amd64-xl-multivcpu                                pass    
 test-armhf-armhf-xl-multivcpu                                pass    
 test-amd64-amd64-pair                                        pass    
 test-amd64-i386-pair                                         pass    
 test-amd64-amd64-libvirt-pair                                pass    
 test-amd64-i386-libvirt-pair                                 pass    
 test-amd64-amd64-xl-pvshim                                   pass    
 test-amd64-i386-xl-pvshim                                    fail    
 test-amd64-amd64-pygrub                                      pass    
 test-armhf-armhf-libvirt-qcow2                               pass    
 test-amd64-amd64-xl-qcow2                                    pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-armhf-armhf-libvirt-raw                                 pass    
 test-amd64-i386-libvirt-raw                                  pass    
 test-amd64-amd64-xl-rtds                                     pass    
 test-armhf-armhf-xl-rtds                                     pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64-shadow             pass    
 test-amd64-i386-xl-qemuu-debianhvm-amd64-shadow              pass    
 test-amd64-amd64-xl-shadow                                   pass    
 test-amd64-i386-xl-shadow                                    pass    
 test-arm64-arm64-xl-thunderx                                 pass    
 test-amd64-amd64-examine-uefi                                pass    
 test-amd64-i386-examine-uefi                                 pass    
 test-amd64-amd64-libvirt-vhd                                 pass    
 test-arm64-arm64-xl-vhd                                      pass    
 test-armhf-armhf-xl-vhd                                      pass    
 test-amd64-i386-xl-vhd                                       pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Pushing revision :

To xenbits.xen.org:/home/xen/git/xen.git
   c27c8922f2..1ec3fe1f66  1ec3fe1f664fa837daf31e9fa8938f6109464f28 -> master


From xen-devel-bounces@lists.xenproject.org Sat Jan 13 15:47:32 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 13 Jan 2024 15:47:32 +0000
Received: from list by lists.xenproject.org with outflank-mailman.667045.1038044 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rOgE7-0002hv-UJ; Sat, 13 Jan 2024 15:47:15 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 667045.1038044; Sat, 13 Jan 2024 15:47:15 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rOgE7-0002ho-Pc; Sat, 13 Jan 2024 15:47:15 +0000
Received: by outflank-mailman (input) for mailman id 667045;
 Sat, 13 Jan 2024 15:47:15 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rOgE7-0002he-00; Sat, 13 Jan 2024 15:47:15 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rOgE6-00026B-Po; Sat, 13 Jan 2024 15:47:14 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rOgE6-00023J-ES; Sat, 13 Jan 2024 15:47:14 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rOgE6-0002xm-Dw; Sat, 13 Jan 2024 15:47:14 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=j18NLn8ANYYJm7GQOPPNXq4wTD8WZfmGygSuiK8dvz4=; b=50YevMVMN6IoBsvRdVwXB0L+Xt
	m0qbjvYOue0P9IK6kHcRbjLWGoeQGgsSTheIXZbjJgwHxgTHPdmSlx6GUy+tMqdY+tTLR48OtOT9C
	8Qlh5gJZuG67mknZwn8DeTyez2wM80RWqzIeSUamHDlPrATTk/WVwOmwxN3BGlk3Sj74=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184341-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [xtf test] 184341: all pass - PUSHED
X-Osstest-Versions-This:
    xtf=5a513bb7a7f08a0ab9aa23312ab9a34240a24d2c
X-Osstest-Versions-That:
    xtf=f3bd152f5e83da943535f6ba7b5772d4dbe96717
From: osstest service owner <osstest-admin@xenproject.org>
Date: Sat, 13 Jan 2024 15:47:14 +0000

flight 184341 xtf real [real]
http://logs.test-lab.xenproject.org/osstest/logs/184341/

Perfect :-)
All tests in this flight passed as required
version targeted for testing:
 xtf                  5a513bb7a7f08a0ab9aa23312ab9a34240a24d2c
baseline version:
 xtf                  f3bd152f5e83da943535f6ba7b5772d4dbe96717

Last test of basis   184308  2024-01-10 14:12:53 Z    3 days
Testing same since   184341  2024-01-13 14:42:52 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Andrew Cooper <andrew.cooper3@citrix.com>

jobs:
 build-amd64-xtf                                              pass    
 build-amd64                                                  pass    
 build-amd64-pvops                                            pass    
 test-xtf-amd64-amd64-1                                       pass    
 test-xtf-amd64-amd64-2                                       pass    
 test-xtf-amd64-amd64-3                                       pass    
 test-xtf-amd64-amd64-4                                       pass    
 test-xtf-amd64-amd64-5                                       pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Pushing revision :

To xenbits.xen.org:/home/xen/git/xtf.git
   f3bd152..5a513bb  5a513bb7a7f08a0ab9aa23312ab9a34240a24d2c -> xen-tested-master


From xen-devel-bounces@lists.xenproject.org Sat Jan 13 16:55:18 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 13 Jan 2024 16:55:18 +0000
Received: from list by lists.xenproject.org with outflank-mailman.667051.1038054 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rOhHi-0002Rz-SE; Sat, 13 Jan 2024 16:55:02 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 667051.1038054; Sat, 13 Jan 2024 16:55:02 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rOhHi-0002Rs-P5; Sat, 13 Jan 2024 16:55:02 +0000
Received: by outflank-mailman (input) for mailman id 667051;
 Sat, 13 Jan 2024 16:55:00 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rOhHg-0002Ri-Ru; Sat, 13 Jan 2024 16:55:00 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rOhHg-0003yr-OH; Sat, 13 Jan 2024 16:55:00 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rOhHg-0004Xe-9W; Sat, 13 Jan 2024 16:55:00 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rOhHg-0002VJ-8v; Sat, 13 Jan 2024 16:55:00 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=ZwMm88ZYV3fIJleu2CzQmJc2np570iGDfvCgFpy74I0=; b=T3ybKluzXuX1QIFLJjE4+8mFEU
	XDbHz19OdiKqD6HO7nu2UXFfBwTPWsWO9Gpi/vDAqZPCHWBogtTkmsfLtjYa616RoZ3YDNu4/JIU0
	HYphcDPdd4RaaRiwS5BJYhwp2P/ZZ01LdutC4TZ340BtL8lGmtEkd63vUJ8EcuqBbXvc=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184337-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [libvirt test] 184337: tolerable all pass - PUSHED
X-Osstest-Failures:
    libvirt:test-armhf-armhf-libvirt:saverestore-support-check:fail:nonblocking
    libvirt:test-armhf-armhf-libvirt-qcow2:saverestore-support-check:fail:nonblocking
    libvirt:test-armhf-armhf-libvirt-raw:saverestore-support-check:fail:nonblocking
    libvirt:test-amd64-i386-libvirt-xsm:migrate-support-check:fail:nonblocking
    libvirt:test-amd64-amd64-libvirt-xsm:migrate-support-check:fail:nonblocking
    libvirt:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    libvirt:test-amd64-i386-libvirt:migrate-support-check:fail:nonblocking
    libvirt:test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    libvirt:test-arm64-arm64-libvirt:migrate-support-check:fail:nonblocking
    libvirt:test-arm64-arm64-libvirt:saverestore-support-check:fail:nonblocking
    libvirt:test-arm64-arm64-libvirt-xsm:migrate-support-check:fail:nonblocking
    libvirt:test-arm64-arm64-libvirt-xsm:saverestore-support-check:fail:nonblocking
    libvirt:test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    libvirt:test-armhf-armhf-libvirt:migrate-support-check:fail:nonblocking
    libvirt:test-amd64-i386-libvirt-raw:migrate-support-check:fail:nonblocking
    libvirt:test-arm64-arm64-libvirt-qcow2:migrate-support-check:fail:nonblocking
    libvirt:test-arm64-arm64-libvirt-qcow2:saverestore-support-check:fail:nonblocking
    libvirt:test-arm64-arm64-libvirt-raw:migrate-support-check:fail:nonblocking
    libvirt:test-arm64-arm64-libvirt-raw:saverestore-support-check:fail:nonblocking
    libvirt:test-amd64-amd64-libvirt-vhd:migrate-support-check:fail:nonblocking
    libvirt:test-armhf-armhf-libvirt-qcow2:migrate-support-check:fail:nonblocking
    libvirt:test-armhf-armhf-libvirt-raw:migrate-support-check:fail:nonblocking
X-Osstest-Versions-This:
    libvirt=10042f0253b98c8ce4626b271a00339e9128eda1
X-Osstest-Versions-That:
    libvirt=9ef6fee12909a70e52b37c3e5277e83d70cdf0da
From: osstest service owner <osstest-admin@xenproject.org>
Date: Sat, 13 Jan 2024 16:55:00 +0000

flight 184337 libvirt real [real]
http://logs.test-lab.xenproject.org/osstest/logs/184337/

Failures :-/ but no regressions.

Tests which did not succeed, but are not blocking:
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 184329
 test-armhf-armhf-libvirt-qcow2 15 saverestore-support-check   fail like 184329
 test-armhf-armhf-libvirt-raw 15 saverestore-support-check    fail  like 184329
 test-amd64-i386-libvirt-xsm  15 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt     15 migrate-support-check        fail   never pass
 test-amd64-i386-libvirt      15 migrate-support-check        fail   never pass
 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-arm64-arm64-libvirt     15 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt     16 saverestore-support-check    fail   never pass
 test-arm64-arm64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-xsm 16 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-armhf-armhf-libvirt     15 migrate-support-check        fail   never pass
 test-amd64-i386-libvirt-raw  14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-qcow2 14 migrate-support-check        fail never pass
 test-arm64-arm64-libvirt-qcow2 15 saverestore-support-check    fail never pass
 test-arm64-arm64-libvirt-raw 14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 15 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-vhd 14 migrate-support-check        fail   never pass
 test-armhf-armhf-libvirt-qcow2 14 migrate-support-check        fail never pass
 test-armhf-armhf-libvirt-raw 14 migrate-support-check        fail   never pass

version targeted for testing:
 libvirt              10042f0253b98c8ce4626b271a00339e9128eda1
baseline version:
 libvirt              9ef6fee12909a70e52b37c3e5277e83d70cdf0da

Last test of basis   184329  2024-01-12 04:20:39 Z    1 days
Testing same since   184337  2024-01-13 04:21:08 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Andrea Bolognani <abologna@redhat.com>
  Göran Uddeborg <goeran@uddeborg.se>
  Peter Krempa <pkrempa@redhat.com>
  Ricky Tigg <ricky.tigg@gmail.com>
  김인수 <simmon@nplob.com>

jobs:
 build-amd64-xsm                                              pass    
 build-arm64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64                                                  pass    
 build-arm64                                                  pass    
 build-armhf                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-arm64-libvirt                                          pass    
 build-armhf-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-pvops                                            pass    
 build-arm64-pvops                                            pass    
 build-armhf-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm           pass    
 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm            pass    
 test-amd64-amd64-libvirt-xsm                                 pass    
 test-arm64-arm64-libvirt-xsm                                 pass    
 test-amd64-i386-libvirt-xsm                                  pass    
 test-amd64-amd64-libvirt                                     pass    
 test-arm64-arm64-libvirt                                     pass    
 test-armhf-armhf-libvirt                                     pass    
 test-amd64-i386-libvirt                                      pass    
 test-amd64-amd64-libvirt-pair                                pass    
 test-amd64-i386-libvirt-pair                                 pass    
 test-arm64-arm64-libvirt-qcow2                               pass    
 test-armhf-armhf-libvirt-qcow2                               pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-armhf-armhf-libvirt-raw                                 pass    
 test-amd64-i386-libvirt-raw                                  pass    
 test-amd64-amd64-libvirt-vhd                                 pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Pushing revision :

To xenbits.xen.org:/home/xen/git/libvirt.git
   9ef6fee129..10042f0253  10042f0253b98c8ce4626b271a00339e9128eda1 -> xen-tested-master


From xen-devel-bounces@lists.xenproject.org Sat Jan 13 17:07:32 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 13 Jan 2024 17:07:32 +0000
Received: from list by lists.xenproject.org with outflank-mailman.667057.1038063 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rOhTj-00044W-U9; Sat, 13 Jan 2024 17:07:27 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 667057.1038063; Sat, 13 Jan 2024 17:07:27 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rOhTj-00044N-RJ; Sat, 13 Jan 2024 17:07:27 +0000
Received: by outflank-mailman (input) for mailman id 667057;
 Sat, 13 Jan 2024 17:07:26 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=CyeC=IX=minervasys.tech=carlo.nonato@srs-se1.protection.inumbo.net>)
 id 1rOhTh-00044H-RE
 for xen-devel@lists.xenproject.org; Sat, 13 Jan 2024 17:07:26 +0000
Received: from mail-ed1-x529.google.com (mail-ed1-x529.google.com
 [2a00:1450:4864:20::529])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 3654e0d4-b236-11ee-98f1-6d05b1d4d9a1;
 Sat, 13 Jan 2024 18:07:21 +0100 (CET)
Received: by mail-ed1-x529.google.com with SMTP id
 4fb4d7f45d1cf-558e82bc4b4so1937449a12.1
 for <xen-devel@lists.xenproject.org>; Sat, 13 Jan 2024 09:07:20 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 3654e0d4-b236-11ee-98f1-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=minervasys-tech.20230601.gappssmtp.com; s=20230601; t=1705165640; x=1705770440; darn=lists.xenproject.org;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:from:to:cc:subject:date
         :message-id:reply-to;
        bh=ap876zB0TBvu0EWyF0vdjHMjBtvsgWgzPjjUcmhj9+w=;
        b=IO3+E0H/M1eAc/XUOpNf9MU0u5MuTp6T5Imkxv9Y3PClgNWBGHSOSqlfB81tSkHmHP
         bPyA9EoJyUp9qlCeUKtY0G3Uxerl/ec9ZM4emADPBFmkRKxkqJiLMUfn55GuM06uQ1Nt
         lUVv/Et8o5IdwJL6lUvHT8MDVhe8bhCKuJNC713P0EBN17fKCNIhscCcqSTeJ2eVI++y
         EMco3Y79z7shC9rFppbxWs1JsgiOlsjpbhw+UUNCOk8Llz9kpNMaqCEEdTpaMYSRdVDC
         Wy6dr0/dq+uH5cj+jWVvnJl5wgXILYnpdDeAR2GkVDnVH9btNMlPnRP5PE4vHtTrR+aD
         t4PQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705165640; x=1705770440;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to;
        bh=ap876zB0TBvu0EWyF0vdjHMjBtvsgWgzPjjUcmhj9+w=;
        b=TLFJbtv26nb77nBCAKBd23/QAqXWsW4nz9Bk4w98NIjrClcx0ZoXKoSsbXHn7WcsbV
         i1WmHKDgfb53WyjcB12sWdtFIuzz92BU+YwRXCWXHzCcO9d+3LnbAR7NELgH1BYOD11j
         mmAc9kymTH57pMitrbKpnRAScAaUp7QwOMYs0aBBOto3eHqdclsAKkhLu95k3bIDdgpa
         5SKboQKv4XLjgcIF6xT8fmB7B5lV+Rx8NJB23FlxB7vA7hRVqgwbIpe7be2b/V3Wzf8B
         W2hXiEg30WQTRMbaB1kv61dLK3xVpDLTTsx5UVhG0FOr5MG9DUpaAO4GeT8k5pwsbSUL
         aaAw==
X-Gm-Message-State: AOJu0Yxfl66z0TfT5ZYrUo+yQP0gMkRFnhcUAiQ53fELaDrR1o3r1K7h
	WqHjozRPxve6lunqXhW8r9i7qICHYKH4c574dDBlPGzBY2seDQ==
X-Google-Smtp-Source: AGHT+IHXgbdGcs47gcLPE0MBurLY4IlAshi8Yleh0nW+zUiM5iVEIfe/xASUSROio8HLf5GDN55xW0HCKm30r9Zle60=
X-Received: by 2002:a17:907:7eaa:b0:a2c:96a1:99ed with SMTP id
 qb42-20020a1709077eaa00b00a2c96a199edmr3760613ejc.11.1705165639651; Sat, 13
 Jan 2024 09:07:19 -0800 (PST)
MIME-Version: 1.0
References: <20240102095138.17933-1-carlo.nonato@minervasys.tech>
 <20240102095138.17933-14-carlo.nonato@minervasys.tech> <4553cc26-deb5-42ed-87b9-6cba2a5099eb@xen.org>
In-Reply-To: <4553cc26-deb5-42ed-87b9-6cba2a5099eb@xen.org>
From: Carlo Nonato <carlo.nonato@minervasys.tech>
Date: Sat, 13 Jan 2024 18:07:08 +0100
Message-ID: <CAG+AhRXHfGJksqUrPXoHqNze+D654jJV0kVYBZaPLYwccdEz5Q@mail.gmail.com>
Subject: Re: [PATCH v5 13/13] xen/arm: add cache coloring support for Xen
To: Julien Grall <julien@xen.org>
Cc: xen-devel@lists.xenproject.org, 
	Stefano Stabellini <sstabellini@kernel.org>, Bertrand Marquis <bertrand.marquis@arm.com>, 
	Michal Orzel <michal.orzel@amd.com>, Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>, 
	Marco Solieri <marco.solieri@minervasys.tech>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

Hi Julien,

On Fri, Jan 5, 2024 at 8:12=E2=80=AFPM Julien Grall <julien@xen.org> wrote:
>
> Hi Carlo,
>
> On 02/01/2024 09:51, Carlo Nonato wrote:
> > This commit adds the cache coloring support for Xen own physical space.
> >
> > It extends the implementation of setup_pagetables() to make use of Xen
> > cache coloring configuration. Page tables construction is essentially t=
he
> > same except for the fact that PTEs point to a new temporary mapped,
> > physically colored space.
> >
> > The temporary mapping is also used to relocate Xen to the new physical
> > space starting at the address taken from the old get_xen_paddr() functi=
on
> > which is brought back for the occasion.
> > The temporary mapping is finally converted to a mapping of the "old"
> > (meaning the original physical space) Xen code, so that the boot CPU ca=
n
> > actually address the variables and functions used by secondary CPUs unt=
il
> > they enable the MMU. This happens when the boot CPU needs to bring up o=
ther
> > CPUs (psci.c and smpboot.c) and when the TTBR value is passed to them
> > (prepare_secondary_mm()).
> >
> > Finally, since the alternative framework needs to remap the Xen text an=
d
> > inittext sections, this operation must be done in a coloring-aware way.
> > The function xen_remap_colored() is introduced for that.
> >
> > Signed-off-by: Carlo Nonato <carlo.nonato@minervasys.tech>
> > Signed-off-by: Marco Solieri <marco.solieri@minervasys.tech>
> > ---
> > v5:
> > - FIXME: consider_modules copy pasted since it got moved
> > v4:
> > - removed set_value_for_secondary() because it was wrongly cleaning cac=
he
> > - relocate_xen() now calls switch_ttbr_id()
> > ---
> >   xen/arch/arm/alternative.c              |   9 +-
> >   xen/arch/arm/arm64/mmu/head.S           |  48 +++++++
> >   xen/arch/arm/arm64/mmu/mm.c             |  26 +++-
> >   xen/arch/arm/include/asm/llc-coloring.h |  16 +++
> >   xen/arch/arm/include/asm/mm.h           |   7 +-
> >   xen/arch/arm/llc-coloring.c             |  44 +++++++
> >   xen/arch/arm/mmu/setup.c                |  82 +++++++++++-
> >   xen/arch/arm/mmu/smpboot.c              |  11 +-
> >   xen/arch/arm/psci.c                     |   9 +-
> >   xen/arch/arm/setup.c                    | 165 +++++++++++++++++++++++=
-
> >   xen/arch/arm/smpboot.c                  |   9 +-
>
> This patch has is touching a lot of different components. I think this
> want to be split in more smaller chunk. It would also be help to mention
> what code has been copied from previous Xen. For instance,
> relocate_xen() is clearly a copy of f60658c6ae47.
>
> >   11 files changed, 406 insertions(+), 20 deletions(-)
> >
> > diff --git a/xen/arch/arm/alternative.c b/xen/arch/arm/alternative.c
> > index 016e66978b..54cbc2afad 100644
> > --- a/xen/arch/arm/alternative.c
> > +++ b/xen/arch/arm/alternative.c
> > @@ -9,6 +9,7 @@
> >   #include <xen/init.h>
> >   #include <xen/types.h>
> >   #include <xen/kernel.h>
> > +#include <xen/llc-coloring.h>
> >   #include <xen/mm.h>
> >   #include <xen/vmap.h>
> >   #include <xen/smp.h>
> > @@ -209,8 +210,12 @@ void __init apply_alternatives_all(void)
> >        * The text and inittext section are read-only. So re-map Xen to
> >        * be able to patch the code.
> >        */
> > -    xenmap =3D __vmap(&xen_mfn, 1U << xen_order, 1, 1, PAGE_HYPERVISOR=
,
> > -                    VMAP_DEFAULT);
> > +    if ( llc_coloring_enabled )
> > +        xenmap =3D xen_remap_colored(xen_mfn, xen_size);
> > +    else
> > +        xenmap =3D __vmap(&xen_mfn, 1U << xen_order, 1, 1, PAGE_HYPERV=
ISOR,
> > +                        VMAP_DEFAULT);
> > +
> >       /* Re-mapping Xen is not expected to fail during boot. */
> >       BUG_ON(!xenmap);
> >
> > diff --git a/xen/arch/arm/arm64/mmu/head.S b/xen/arch/arm/arm64/mmu/hea=
d.S
> > index 10774f30e4..6f0cc72897 100644
> > --- a/xen/arch/arm/arm64/mmu/head.S
> > +++ b/xen/arch/arm/arm64/mmu/head.S
> > @@ -419,6 +419,54 @@ fail:   PRINT("- Boot failed -\r\n")
> >           b     1b
> >   ENDPROC(fail)
> >
> > +/* Copy Xen to new location and switch TTBR
> > + * x0    ttbr
> > + * x1    source address
> > + * x2    destination address
> > + * x3    length
> > + *
> > + * Source and destination must be word aligned, length is rounded up
> > + * to a 16 byte boundary.
> > + *
> > + * MUST BE VERY CAREFUL when saving things to RAM over the copy */
>
> If you plan to re-introduce code, then please at least make sure it
> match the coding style. For comments, it should be:
>
> /*
>   * Foo
>   * Bar
>   */
>
> > +ENTRY(relocate_xen)
> > +        /* Copy 16 bytes at a time using:
> > +         *   x9: counter
> > +         *   x10: data
> > +         *   x11: data
> > +         *   x12: source
> > +         *   x13: destination
> > +         */
> > +        mov     x9, x3
> > +        mov     x12, x1
> > +        mov     x13, x2
> > +
> > +1:      ldp     x10, x11, [x12], #16
> > +        stp     x10, x11, [x13], #16
> > +
> > +        subs    x9, x9, #16
> > +        bgt     1b
> > +
> > +        /* Flush destination from dcache using:
>
> I would explain why you need the flush. AFAICT, this is because you want
> the data to be visible to the instruction cache. I would also point out
> that you need the instruction cache flush in switch_ttbr_id() where the
> sentence "This should not be necessary ..." should be now reworked
> (AFAIK it is mandatory for cache coloring).
>
> > +         * x9: counter
> > +         * x10: step
> > +         * x11: vaddr
> > +         */
> > +        dsb   sy        /* So the CPU issues all writes to the range *=
/
> > +
> > +        mov   x9, x3
> > +        ldr   x10, =3Ddcache_line_bytes /* x10 :=3D step */
> > +        ldr   x10, [x10]
> > +        mov   x11, x2
> > +
> > +1:      dc    cvac, x11
> > +
> > +        add   x11, x11, x10
> > +        subs  x9, x9, x10
> > +        bgt   1b
> > +
>
> I would add a comment here explaining you are relying on the dsb/isb in
> switch_ttbr_id().
>
> > +        b switch_ttbr_id
> > +
> >   /*
> >    * Switch TTBR
> >    *
> > diff --git a/xen/arch/arm/arm64/mmu/mm.c b/xen/arch/arm/arm64/mmu/mm.c
> > index d2651c9486..5a26d64ab7 100644
> > --- a/xen/arch/arm/arm64/mmu/mm.c
> > +++ b/xen/arch/arm/arm64/mmu/mm.c
> > @@ -1,6 +1,7 @@
> >   /* SPDX-License-Identifier: GPL-2.0 */
> >
> >   #include <xen/init.h>
> > +#include <xen/llc-coloring.h>
> >   #include <xen/mm.h>
> >   #include <xen/pfn.h>
> >
> > @@ -125,27 +126,44 @@ void update_identity_mapping(bool enable)
> >   }
> >
> >   extern void switch_ttbr_id(uint64_t ttbr);
> > +extern void relocate_xen(uint64_t ttbr, void *src, void *dst, size_t l=
en);
> >
> >   typedef void (switch_ttbr_fn)(uint64_t ttbr);
> > +typedef void (relocate_xen_fn)(uint64_t ttbr, void *src, void *dst, si=
ze_t len);
> >
> >   void __init switch_ttbr(uint64_t ttbr)
> >   {
> > -    vaddr_t id_addr =3D virt_to_maddr(switch_ttbr_id);
> > -    switch_ttbr_fn *fn =3D (switch_ttbr_fn *)id_addr;
> > +    vaddr_t vaddr, id_addr;
> >       lpae_t pte;
> >
> > +    if ( llc_coloring_enabled )
> > +        vaddr =3D (vaddr_t)relocate_xen;
> > +    else
> > +        vaddr =3D (vaddr_t)switch_ttbr_id;
> > +
> > +    id_addr =3D virt_to_maddr(vaddr);
> > +
> >       /* Enable the identity mapping in the boot page tables */
> >       update_identity_mapping(true);
> >
> >       /* Enable the identity mapping in the runtime page tables */
> > -    pte =3D pte_of_xenaddr((vaddr_t)switch_ttbr_id);
> > +    pte =3D pte_of_xenaddr(vaddr);
> >       pte.pt.table =3D 1;
> >       pte.pt.xn =3D 0;
> >       pte.pt.ro =3D 1;
> >       write_pte(&xen_third_id[third_table_offset(id_addr)], pte);
> >
> >       /* Switch TTBR */
> > -    fn(ttbr);
> > +    if ( llc_coloring_enabled )
> > +    {
> > +        relocate_xen_fn *fn =3D (relocate_xen_fn *)id_addr;
>
> Coding style: We tend to add a new line after variable declaration.
>
> > +        fn(ttbr, _start, (void *)BOOT_RELOC_VIRT_START, _end - _start)=
;
> > +    }
> > +    else
> > +    {
> > +        switch_ttbr_fn *fn =3D (switch_ttbr_fn *)id_addr;
>
> Ditto for the coding style.
>
> > +        fn(ttbr);
> > +    }
> >
> >       /*
> >        * Disable the identity mapping in the runtime page tables.
> > diff --git a/xen/arch/arm/include/asm/llc-coloring.h b/xen/arch/arm/inc=
lude/asm/llc-coloring.h
> > index 5f9b0a8121..4d6071e50b 100644
> > --- a/xen/arch/arm/include/asm/llc-coloring.h
> > +++ b/xen/arch/arm/include/asm/llc-coloring.h
> > @@ -12,11 +12,27 @@
> >   #define __ASM_ARM_COLORING_H__
> >
> >   #include <xen/init.h>
> > +#include <xen/mm-frame.h>
> > +
> > +/**
> > + * Iterate over each Xen mfn in the colored space.
> > + * @mfn:    the current mfn. The first non colored mfn must be provide=
d as the
> > + *          starting point.
> > + * @i:      loop index.
> > + */
> > +#define for_each_xen_colored_mfn(mfn, i)        \
> > +    for ( i =3D 0, mfn =3D xen_colored_mfn(mfn);    \
> > +          i < (_end - _start) >> PAGE_SHIFT;    \
> > +          i++, mfn =3D xen_colored_mfn(mfn_add(mfn, 1)) )
> >
> >   bool __init llc_coloring_init(void);
> >   int dom0_set_llc_colors(struct domain *d);
> >   int domain_set_llc_colors_from_str(struct domain *d, const char *str)=
;
> >
> > +paddr_t xen_colored_map_size(paddr_t size);
> > +mfn_t xen_colored_mfn(mfn_t mfn);
> > +void *xen_remap_colored(mfn_t xen_fn, paddr_t xen_size);
> > +
> >   #endif /* __ASM_ARM_COLORING_H__ */
> >
> >   /*
> > diff --git a/xen/arch/arm/include/asm/mm.h b/xen/arch/arm/include/asm/m=
m.h
> > index 1829c559d6..311f092cf2 100644
> > --- a/xen/arch/arm/include/asm/mm.h
> > +++ b/xen/arch/arm/include/asm/mm.h
> > @@ -203,12 +203,17 @@ extern unsigned long frametable_base_pdx;
> >
> >   #define PDX_GROUP_SHIFT SECOND_SHIFT
> >
> > +#define virt_to_reloc_virt(virt) \
> > +    (((vaddr_t)virt) - XEN_VIRT_START + BOOT_RELOC_VIRT_START)
> > +
> >   /* Boot-time pagetable setup */
> > -extern void setup_pagetables(unsigned long boot_phys_offset);
> > +extern void setup_pagetables(unsigned long boot_phys_offset, paddr_t x=
en_paddr);
> >   /* Map FDT in boot pagetable */
> >   extern void *early_fdt_map(paddr_t fdt_paddr);
> >   /* Remove early mappings */
> >   extern void remove_early_mappings(void);
> > +/* Remove early LLC coloring mappings */
> > +extern void remove_llc_coloring_mappings(void);
> >   /* Prepare the memory subystem to bring-up the given secondary CPU */
> >   extern int prepare_secondary_mm(int cpu);
> >   /* Map a frame table to cover physical addresses ps through pe */
> > diff --git a/xen/arch/arm/llc-coloring.c b/xen/arch/arm/llc-coloring.c
> > index 99ea69ad39..f434efc45b 100644
> > --- a/xen/arch/arm/llc-coloring.c
> > +++ b/xen/arch/arm/llc-coloring.c
> > @@ -14,6 +14,7 @@
> >   #include <xen/llc-coloring.h>
> >   #include <xen/param.h>
> >   #include <xen/types.h>
> > +#include <xen/vmap.h>
> >
> >   #include <asm/processor.h>
> >   #include <asm/sysregs.h>
> > @@ -38,6 +39,7 @@ static unsigned int __ro_after_init xen_num_colors;
> >
> >   #define mfn_color_mask              (nr_colors - 1)
> >   #define mfn_to_color(mfn)           (mfn_x(mfn) & mfn_color_mask)
> > +#define mfn_set_color(mfn, color)   ((mfn_x(mfn) & ~mfn_color_mask) | =
(color))
> >
> >   /*
> >    * Parse the coloring configuration given in the buf string, followin=
g the
> > @@ -354,6 +356,48 @@ unsigned int get_nr_llc_colors(void)
> >       return nr_colors;
> >   }
> >
> > +paddr_t xen_colored_map_size(paddr_t size)
> > +{
> > +    return ROUNDUP(size * nr_colors, XEN_PADDR_ALIGN);
> > +}
> > + > +mfn_t xen_colored_mfn(mfn_t mfn)
>
> Is this going to be used outside of boot? If not, then please add
> __init. If yes, then can you point me where?
>
> > +{
> > +    unsigned int i, color =3D mfn_to_color(mfn);
> > +
> > +    for( i =3D 0; i < xen_num_colors; i++ )
> > +    {
> > +        if ( color =3D=3D xen_colors[i] )
> > +            return mfn;
> > +        else if ( color < xen_colors[i] )
> > +            return mfn_set_color(mfn, xen_colors[i]);
> > +    }
> > +
> > +    /* Jump to next color space (nr_colors mfns) and use the first col=
or */
> > +    return mfn_set_color(mfn_add(mfn, nr_colors), xen_colors[0]);
> > +}
> > +
> > +void *xen_remap_colored(mfn_t xen_mfn, paddr_t xen_size)
>
> I think this function can be __init.
>
> > +{
> > +    unsigned int i;
> > +    void *xenmap;
> > +    mfn_t *xen_colored_mfns;
> > +
> > +    xen_colored_mfns =3D xmalloc_array(mfn_t, xen_size >> PAGE_SHIFT);
> > +    if ( !xen_colored_mfns )
> > +        panic("Can't allocate LLC colored MFNs\n");
> Let's try to limit the number of panic(). In this case, I think you
> should return NULL and let the caller decide.
>
> > +
> > +    for_each_xen_colored_mfn( xen_mfn, i )
> > +    {
> > +        xen_colored_mfns[i] =3D xen_mfn;
> > +    }
> > +
> > +    xenmap =3D vmap(xen_colored_mfns, xen_size >> PAGE_SHIFT);
> > +    xfree(xen_colored_mfns);
> > +
> > +    return xenmap;
> > +}
> > +
> >   /*
> >    * Local variables:
> >    * mode: C
> > diff --git a/xen/arch/arm/mmu/setup.c b/xen/arch/arm/mmu/setup.c
> > index 37b6d230ad..66b674eeab 100644
> > --- a/xen/arch/arm/mmu/setup.c
> > +++ b/xen/arch/arm/mmu/setup.c
> > @@ -7,6 +7,7 @@
> >
> >   #include <xen/init.h>
> >   #include <xen/libfdt/libfdt.h>
> > +#include <xen/llc-coloring.h>
> >   #include <xen/sizes.h>
> >   #include <xen/vmap.h>
> >
> > @@ -39,6 +40,10 @@ DEFINE_PER_CPU(lpae_t *, xen_pgtable);
> >   static DEFINE_PAGE_TABLE(cpu0_pgtable);
> >   #endif
> >
> > +#ifdef CONFIG_LLC_COLORING
> > +static DEFINE_PAGE_TABLE(xen_colored_temp);
> > +#endif
>
> Does this actually need to be static?

Why it shouldn't be static? I don't want to access it from another file.

> And if yes, then is it necessary
> to be kept the boot as completed?

Nope. __initdata?

> Also, this is not going to be enough to cover Xen. See above.
>
>
> > +
> >   /* Common pagetable leaves */
> >   /* Second level page table used to cover Xen virtual address space */
> >   static DEFINE_PAGE_TABLE(xen_second);
> > @@ -130,7 +135,12 @@ static void __init __maybe_unused build_assertions=
(void)
> >
> >   lpae_t __init pte_of_xenaddr(vaddr_t va)
> >   {
> > -    paddr_t ma =3D va + phys_offset;
> > +    paddr_t ma;
> > +
> > +    if ( llc_coloring_enabled )
> > +        ma =3D virt_to_maddr(virt_to_reloc_virt(va));
> > +    else
> > +        ma =3D va + phys_offset;
> >
> >       return mfn_to_xen_entry(maddr_to_mfn(ma), MT_NORMAL);
> >   }
> > @@ -216,11 +226,55 @@ static void xen_pt_enforce_wnx(void)
> >       flush_xen_tlb_local();
> >   }
> >
> > +#ifdef CONFIG_LLC_COLORING
> > +static void __init create_llc_coloring_mappings(paddr_t xen_paddr)
> > +{
> > +    lpae_t pte;
> > +    unsigned int i;
> > +    mfn_t mfn =3D maddr_to_mfn(xen_paddr);
> > +
> > +    for_each_xen_colored_mfn( mfn, i )
> > +    {
> > +        pte =3D mfn_to_xen_entry(mfn, MT_NORMAL);
> > +        pte.pt.table =3D 1; /* level 3 mappings always have this bit s=
et */
> > +        xen_colored_temp[i] =3D pte;
> > +    }
> > +
> > +    pte =3D mfn_to_xen_entry(virt_to_mfn(xen_colored_temp), MT_NORMAL)=
;
> > +    pte.pt.table =3D 1;
> > +    write_pte(&boot_second[second_table_offset(BOOT_RELOC_VIRT_START)]=
, pte);
> > +}
> > +
> > +void __init remove_llc_coloring_mappings(void)
> > +{
> > +    int rc;
> > +
> > +    /* destroy the _PAGE_BLOCK mapping */
> > +    rc =3D modify_xen_mappings(BOOT_RELOC_VIRT_START,
> > +                             BOOT_RELOC_VIRT_START + SZ_2M,
>
> See above, Xen can now be bigger than 2MB. The limit is 8MB and could
> change in the future.
>
> > +                             _PAGE_BLOCK);
> > +    BUG_ON(rc);
> > +}
> > +#else
> > +static void __init create_llc_coloring_mappings(paddr_t xen_paddr) {}
> > +void __init remove_llc_coloring_mappings(void) {}
>
> Both should never be called when !CONFIG_LCC_COLORING, correct? If so,
> then please add ASSERT_UNREACHABLE() in their body.
>
> > +#endif /* CONFIG_LLC_COLORING */
> > +
> >   /*
> > - * Boot-time pagetable setup.
> > + * Boot-time pagetable setup with coloring support
> >    * Changes here may need matching changes in head.S
> > + *
> > + * The coloring support consists of:
> > + * - Create a temporary colored mapping that conforms to Xen color sel=
ection.
> > + * - pte_of_xenaddr takes care of translating the virtual addresses to=
 the
> > + *   new colored physical space and the returns the pte, so that the p=
age table
> > + *   initialization can remain the same.
> > + * - Copy Xen to the new colored physical space by exploiting the temp=
orary
> > + *   mapping.
> > + * - Update TTBR0_EL2 with the new root page table address.
> >    */
> > -void __init setup_pagetables(unsigned long boot_phys_offset)
> > +
> > +void __init setup_pagetables(unsigned long boot_phys_offset, paddr_t x=
en_paddr)
> >   {
> >       uint64_t ttbr;
> >       lpae_t pte, *p;
> > @@ -228,6 +282,9 @@ void __init setup_pagetables(unsigned long boot_phy=
s_offset)
> >
> >       phys_offset =3D boot_phys_offset;
> >
> > +    if ( llc_coloring_enabled )
> > +        create_llc_coloring_mappings(xen_paddr);
> > +
> >       arch_setup_page_tables();
> >
> >   #ifdef CONFIG_ARM_64
> > @@ -281,10 +338,13 @@ void __init setup_pagetables(unsigned long boot_p=
hys_offset)
> >       pte.pt.table =3D 1;
> >       xen_second[second_table_offset(FIXMAP_ADDR(0))] =3D pte;
> >
> > +    if ( llc_coloring_enabled )
> > +        ttbr =3D virt_to_maddr(virt_to_reloc_virt(xen_pgtable));
>
> xen_pgtable is only valid for Arm64. But rather than ifdef-ing. I would
> consder to move...
>
> > +    else
> >   #ifdef CONFIG_ARM_64
> > -    ttbr =3D (uintptr_t) xen_pgtable + phys_offset;
> > +        ttbr =3D (uintptr_t) xen_pgtable + phys_offset;
> >   #else
> > -    ttbr =3D (uintptr_t) cpu0_pgtable + phys_offset;
> > +        ttbr =3D (uintptr_t) cpu0_pgtable + phys_offset;
> >   #endif
> >
> >       switch_ttbr(ttbr);
> > @@ -294,6 +354,18 @@ void __init setup_pagetables(unsigned long boot_ph=
ys_offset)
> >   #ifdef CONFIG_ARM_32
> >       per_cpu(xen_pgtable, 0) =3D cpu0_pgtable;
> >   #endif
>
> .. these two lines before hand so you can use THIS_CPU_PGTABLE.
>
> > +
> > +    /*
>
> Coding style: It looks like you have one space too much before /*.
>
> > +    * Keep original Xen memory mapped because secondary CPUs still poi=
nt to it
> > +    * and a few variables needs to be accessed by the master CPU in or=
der to
> > +    * let them boot. This mapping will also replace the one created at=
 the
> > +    * beginning of setup_pagetables.
> > +    */
>
> It feels wrong to keep the full Xen (even temporarily) just for CPU
> bring-up. But I don't think this is necessary. The secondary CPUs
> outside of code in head.S, secondary CPU should only need to access to
> init_ttbr and smp_cpu_up.
>
> The last one is already questionable because the CPU should never wait
> in Xen. Instead they would be held somewhere else. But that's separate
> issue.
>
> Anyway, if you move init_ttbr and smp_cpu_up in the identity mapped
> area, then you will not need to copy of Xen. Instead, secondary CPUs
> should be able to jump to the new Xen directly.

So to recap:

1) How to move variables in the identity map area?
__attribute__((section(".text.idmap"))) triggers some warning when assembli=
ng.

Warning: setting incorrect section attributes for .text.idmap

2) If I'm not mistaken the identity mapping is read only (PAGE_HYPERVISOR_R=
X)
and forcing it to be PAGE_HYPERVISOR_RW breaks something else.

3) To access the identity mapping area I would need some accessor that take=
s
an address and returns it + phys_offset, or is there a better way to do it?

4) Maybe I misinterpreted the above comment, but I would still need to copy
Xen in the physically colored space. What I can drop is the temporary virtu=
al
space used to access the "old" variables.

5) The identity mapping at runtime, at the moment, is pointing to the new
colored space because of how pte_of_xenaddr is implemented. This means that=
 if
I want to use it to access the old variables, I would need to keep it a rea=
l
identity mapping, right?

> This will also avoid to spread cache coloring changes in every Xen
> components.

Maybe I'm missing something, but even with this identity mapping "shortcut"=
 I
would still need to touch the same amount of files, for example when init_t=
tbr
or smp_up_cpu are accessed, they would need to use identity virtual address=
es.

> > +    if ( llc_coloring_enabled )
> > +        map_pages_to_xen(BOOT_RELOC_VIRT_START,
> > +                         maddr_to_mfn(XEN_VIRT_START + phys_offset),
> > +                         SZ_2M >> PAGE_SHIFT, PAGE_HYPERVISOR_RW | _PA=
GE_BLOCK);
> > +
> >   }
> >
> >   void *__init arch_vmap_virt_end(void)
> > diff --git a/xen/arch/arm/mmu/smpboot.c b/xen/arch/arm/mmu/smpboot.c
> > index b6fc0aae07..a69183ec88 100644
> > --- a/xen/arch/arm/mmu/smpboot.c
> > +++ b/xen/arch/arm/mmu/smpboot.c
> > @@ -6,6 +6,7 @@
> >    */
> >
> >   #include <xen/domain_page.h>
> > +#include <xen/llc-coloring.h>
> >
> >   #include <asm/setup.h>
> >
> > @@ -71,14 +72,20 @@ static void clear_boot_pagetables(void)
> >   #ifdef CONFIG_ARM_64
> >   int prepare_secondary_mm(int cpu)
> >   {
> > +    uint64_t *init_ttbr_addr =3D &init_ttbr;
> > +
> >       clear_boot_pagetables();
> >
> > +    if ( llc_coloring_enabled )
> > +        init_ttbr_addr =3D (uint64_t *)virt_to_reloc_virt(&init_ttbr);
> > +
> >       /*
> >        * Set init_ttbr for this CPU coming up. All CPUs share a single =
setof
> >        * pagetables, but rewrite it each time for consistency with 32 b=
it.
> >        */
> > -    init_ttbr =3D virt_to_maddr(xen_pgtable);
> > -    clean_dcache(init_ttbr);
> > +    *init_ttbr_addr =3D virt_to_maddr(xen_pgtable);
> > +    clean_dcache(*init_ttbr_addr);
> > +
> >       return 0;
> >   }
> >   #else
> > diff --git a/xen/arch/arm/psci.c b/xen/arch/arm/psci.c
> > index 695d2fa1f1..23e298c477 100644
> > --- a/xen/arch/arm/psci.c
> > +++ b/xen/arch/arm/psci.c
> > @@ -11,6 +11,7 @@
> >
> >   #include <xen/types.h>
> >   #include <xen/init.h>
> > +#include <xen/llc-coloring.h>
> >   #include <xen/mm.h>
> >   #include <xen/smp.h>
> >   #include <asm/cpufeature.h>
> > @@ -39,9 +40,13 @@ static uint32_t psci_cpu_on_nr;
> >   int call_psci_cpu_on(int cpu)
> >   {
> >       struct arm_smccc_res res;
> > +    vaddr_t init_secondary_addr =3D (vaddr_t)init_secondary;
> >
> > -    arm_smccc_smc(psci_cpu_on_nr, cpu_logical_map(cpu), __pa(init_seco=
ndary),
> > -                  &res);
> > +    if ( llc_coloring_enabled )
> > +        init_secondary_addr =3D virt_to_reloc_virt(init_secondary);
> > +
> > +    arm_smccc_smc(psci_cpu_on_nr, cpu_logical_map(cpu),
> > +                  __pa(init_secondary_addr), &res);
> >
> >       return PSCI_RET(res);
> >   }
>
> [...]
>
> > +#ifdef CONFIG_LLC_COLORING
> > +/**
> > + * get_xen_paddr - get physical address to relocate Xen to
> > + *
> > + * Xen is relocated to as near to the top of RAM as possible and
> > + * aligned to a XEN_PADDR_ALIGN boundary.
> > + */
> > +static paddr_t __init get_xen_paddr(uint32_t xen_size)
> > +{
> > +    struct meminfo *mi =3D &bootinfo.mem;
> > +    paddr_t min_size;
> > +    paddr_t paddr =3D 0;
> > +    int i;
> > +
> > +    min_size =3D (xen_size + (XEN_PADDR_ALIGN-1)) & ~(XEN_PADDR_ALIGN-=
1);
> > +
> > +    /* Find the highest bank with enough space. */
> > +    for ( i =3D 0; i < mi->nr_banks; i++ )
> > +    {
> > +        const struct membank *bank =3D &mi->bank[i];
> > +        paddr_t s, e;
> > +
> > +        if ( bank->size >=3D min_size )
> > +        {
> > +            e =3D consider_modules(bank->start, bank->start + bank->si=
ze,
> > +                                 min_size, XEN_PADDR_ALIGN, 0);
> > +            if ( !e )
> > +                continue;
> > +
> > +#ifdef CONFIG_ARM_32
> > +            /* Xen must be under 4GB */
> > +            if ( e > 0x100000000ULL )
> > +                e =3D 0x100000000ULL;
> > +            if ( e < bank->start )
> > +                continue;
> > +#endif
> > +
> > +            s =3D e - min_size;
> > +
> > +            if ( s > paddr )
> > +                paddr =3D s;
> > +        }
> > +    }
> > +
> > +    if ( !paddr )
> > +        panic("Not enough memory to relocate Xen\n");
> > +
> > +    printk("Placing Xen at 0x%"PRIpaddr"-0x%"PRIpaddr"\n",
> > +           paddr, paddr + min_size);
> > +
> > +    return paddr;
> > +}
> > +#else
> > +static paddr_t __init get_xen_paddr(uint32_t xen_size) { return 0; }
> > +#endif
> > +
> >   void __init init_pdx(void)
> >   {
> >       paddr_t bank_start, bank_size, bank_end;
> > @@ -724,8 +874,6 @@ void asmlinkage __init start_xen(unsigned long boot=
_phys_offset,
> >       /* Initialize traps early allow us to get backtrace when an error=
 occurred */
> >       init_traps();
> >
> > -    setup_pagetables(boot_phys_offset);
> > -
> >       smp_clear_cpu_maps();
> >
> >       device_tree_flattened =3D early_fdt_map(fdt_paddr);
> > @@ -751,8 +899,13 @@ void asmlinkage __init start_xen(unsigned long boo=
t_phys_offset,
> >       {
> >           if ( !llc_coloring_init() )
> >               panic("Xen LLC coloring support: setup failed\n");
> > +        xen_bootmodule->size =3D xen_colored_map_size(_end - _start);
> > +        xen_bootmodule->start =3D get_xen_paddr(xen_bootmodule->size);
>
> As you update xen_bootmodule, wouldn't this mean that the non-relocated
> Xen would could be passed to the bootallocator?

Yes that should be memory that in the end would not be needed so it must
return to the boot-allocator (if that's what you mean). But how to do
that?

> >       } >
> > +    setup_pagetables(boot_phys_offset, xen_bootmodule->start);
>
> The new placement of setup_pagetables() deserve an explanation.
>
> > +    device_tree_flattened =3D early_fdt_map(fdt_paddr);
> > +
> >       setup_mm();
> >
> >       /* Parse the ACPI tables for possible boot-time configuration */
> > @@ -867,6 +1020,14 @@ void asmlinkage __init start_xen(unsigned long bo=
ot_phys_offset,
> >
> >       setup_virt_paging();
> >
> > +    /*
> > +     * The removal is done earlier than discard_initial_modules beacus=
e the
>
> Typo: s/beacuase/because/
>
> > +     * livepatch init uses a virtual address equal to BOOT_RELOC_VIRT_=
START.
> > +     * Remove LLC coloring mappings to expose a clear state to the liv=
epatch
> > +     * module.
> > +     */
> > +    if ( llc_coloring_enabled )
> > +        remove_llc_coloring_mappings();
> >       do_initcalls();
> >
> >       /*
> > diff --git a/xen/arch/arm/smpboot.c b/xen/arch/arm/smpboot.c
> > index 7110bc11fc..7ed7357d58 100644
> > --- a/xen/arch/arm/smpboot.c
> > +++ b/xen/arch/arm/smpboot.c
> > @@ -14,6 +14,7 @@
> >   #include <xen/domain_page.h>
> >   #include <xen/errno.h>
> >   #include <xen/init.h>
> > +#include <xen/llc-coloring.h>
> >   #include <xen/mm.h>
> >   #include <xen/param.h>
> >   #include <xen/sched.h>
> > @@ -444,6 +445,7 @@ int __cpu_up(unsigned int cpu)
> >   {
> >       int rc;
> >       s_time_t deadline;
> > +    unsigned long *smp_up_cpu_addr =3D &smp_up_cpu;
> >
> >       printk("Bringing up CPU%d\n", cpu);
> >
> > @@ -459,9 +461,12 @@ int __cpu_up(unsigned int cpu)
> >       /* Tell the remote CPU what its logical CPU ID is. */
> >       init_data.cpuid =3D cpu;
> >
> > +    if ( llc_coloring_enabled )
> > +        smp_up_cpu_addr =3D (unsigned long *)virt_to_reloc_virt(&smp_u=
p_cpu);
> > +
> >       /* Open the gate for this CPU */
> > -    smp_up_cpu =3D cpu_logical_map(cpu);
> > -    clean_dcache(smp_up_cpu);
> > +    *smp_up_cpu_addr =3D cpu_logical_map(cpu);
> > +    clean_dcache(*smp_up_cpu_addr);
> >
> >       rc =3D arch_cpu_up(cpu);
> >
>
> Cheers,
>
> --
> Julien Grall

Thanks.


From xen-devel-bounces@lists.xenproject.org Sat Jan 13 19:53:20 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 13 Jan 2024 19:53:20 +0000
Received: from list by lists.xenproject.org with outflank-mailman.667063.1038073 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rOk43-00066i-DZ; Sat, 13 Jan 2024 19:53:07 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 667063.1038073; Sat, 13 Jan 2024 19:53:07 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rOk43-00066b-Ar; Sat, 13 Jan 2024 19:53:07 +0000
Received: by outflank-mailman (input) for mailman id 667063;
 Sat, 13 Jan 2024 19:53:05 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rOk41-00066R-NJ; Sat, 13 Jan 2024 19:53:05 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rOk41-0007J4-Fv; Sat, 13 Jan 2024 19:53:05 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rOk41-0000h9-2w; Sat, 13 Jan 2024 19:53:05 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rOk41-00074E-2P; Sat, 13 Jan 2024 19:53:05 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=beDsBH6UqMK5/8R+HIx2KQUBcNh2PL2tGTaoLirdubg=; b=oC0VA6RYSnOkwrHAHeEOifI2ay
	/SG0QDBJhOmhvzJgrLNVd3Qhkbnc+8m8EkV49ibSv+EsokMWd2f/rmuOnX4DMf2EyH/h30osBAZOB
	6kt+IdCi2+xs/oSsUDIs+5TYOORBjSe7VDpk05GgV2DjARiPiRvN4HAGKByCp4wef1Ig=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184338-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [linux-linus test] 184338: regressions - FAIL
X-Osstest-Failures:
    linux-linus:test-arm64-arm64-xl-xsm:debian-install:fail:regression
    linux-linus:test-amd64-amd64-xl-shadow:guest-localmigrate/x10:fail:regression
    linux-linus:test-arm64-arm64-xl-credit1:debian-install:fail:regression
    linux-linus:test-arm64-arm64-xl:debian-install:fail:regression
    linux-linus:test-arm64-arm64-xl-thunderx:debian-install:fail:regression
    linux-linus:test-arm64-arm64-xl-credit2:debian-install:fail:regression
    linux-linus:test-arm64-arm64-libvirt-xsm:debian-install:fail:regression
    linux-linus:test-armhf-armhf-xl-vhd:guest-start/debian.repeat:fail:regression
    linux-linus:test-armhf-armhf-libvirt:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    linux-linus:test-amd64-amd64-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    linux-linus:test-amd64-amd64-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-raw:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-qcow2:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-qemuu-nested-amd:debian-hvm-install/l1/l2:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-xsm:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-multivcpu:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-multivcpu:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-arndale:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-arndale:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-rtds:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-rtds:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit1:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit1:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-qcow2:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit2:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit2:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-libvirt-raw:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-vhd:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-vhd:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-vhd:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-vhd:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-qcow2:migrate-support-check:fail:nonblocking
X-Osstest-Versions-This:
    linux=052d534373b7ed33712a63d5e17b2b6cdbce84fd
X-Osstest-Versions-That:
    linux=0dd3ee31125508cd67f7e7172247f05b7fd1753a
From: osstest service owner <osstest-admin@xenproject.org>
Date: Sat, 13 Jan 2024 19:53:05 +0000

flight 184338 linux-linus real [real]
http://logs.test-lab.xenproject.org/osstest/logs/184338/

Regressions :-(

Tests which did not succeed and are blocking,
including tests which could not be run:
 test-arm64-arm64-xl-xsm      12 debian-install           fail REGR. vs. 184270
 test-amd64-amd64-xl-shadow   20 guest-localmigrate/x10   fail REGR. vs. 184270
 test-arm64-arm64-xl-credit1  12 debian-install           fail REGR. vs. 184270
 test-arm64-arm64-xl          12 debian-install           fail REGR. vs. 184270
 test-arm64-arm64-xl-thunderx 12 debian-install           fail REGR. vs. 184270
 test-arm64-arm64-xl-credit2  12 debian-install           fail REGR. vs. 184270
 test-arm64-arm64-libvirt-xsm 12 debian-install           fail REGR. vs. 184270
 test-armhf-armhf-xl-vhd     17 guest-start/debian.repeat fail REGR. vs. 184270

Tests which did not succeed, but are not blocking:
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 184270
 test-amd64-amd64-xl-qemut-win7-amd64 19 guest-stop            fail like 184270
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 184270
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 184270
 test-armhf-armhf-libvirt-raw 15 saverestore-support-check    fail  like 184270
 test-amd64-amd64-xl-qemut-ws16-amd64 19 guest-stop            fail like 184270
 test-armhf-armhf-libvirt-qcow2 15 saverestore-support-check   fail like 184270
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 184270
 test-amd64-amd64-libvirt     15 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-multivcpu 15 migrate-support-check        fail  never pass
 test-armhf-armhf-xl-multivcpu 16 saverestore-support-check    fail  never pass
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-armhf-armhf-libvirt     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-arndale  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-arndale  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl          15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-rtds     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-rtds     16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-credit1  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit1  16 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-qcow2 14 migrate-support-check        fail never pass
 test-armhf-armhf-xl-credit2  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit2  16 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-raw 14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 15 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-vhd      14 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-vhd      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-raw 14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-qcow2 14 migrate-support-check        fail never pass

version targeted for testing:
 linux                052d534373b7ed33712a63d5e17b2b6cdbce84fd
baseline version:
 linux                0dd3ee31125508cd67f7e7172247f05b7fd1753a

Last test of basis   184270  2024-01-07 20:42:19 Z    5 days
Failing since        184283  2024-01-08 20:10:43 Z    4 days    8 attempts
Testing same since   184338  2024-01-13 05:40:28 Z    0 days    1 attempts

------------------------------------------------------------
1701 people touched revisions under test,
not listing them all

jobs:
 build-amd64-xsm                                              pass    
 build-arm64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64                                                  pass    
 build-arm64                                                  pass    
 build-armhf                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-arm64-libvirt                                          pass    
 build-armhf-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-pvops                                            pass    
 build-arm64-pvops                                            pass    
 build-armhf-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-amd64-amd64-xl                                          pass    
 test-amd64-coresched-amd64-xl                                pass    
 test-arm64-arm64-xl                                          fail    
 test-armhf-armhf-xl                                          pass    
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm           pass    
 test-amd64-amd64-xl-qemut-stubdom-debianhvm-amd64-xsm        pass    
 test-amd64-amd64-xl-qemut-debianhvm-i386-xsm                 pass    
 test-amd64-amd64-xl-qemuu-debianhvm-i386-xsm                 pass    
 test-amd64-amd64-libvirt-xsm                                 pass    
 test-arm64-arm64-libvirt-xsm                                 fail    
 test-amd64-amd64-xl-xsm                                      pass    
 test-arm64-arm64-xl-xsm                                      fail    
 test-amd64-amd64-qemuu-nested-amd                            fail    
 test-amd64-amd64-xl-pvhv2-amd                                pass    
 test-amd64-amd64-dom0pvh-xl-amd                              pass    
 test-amd64-amd64-xl-qemut-debianhvm-amd64                    pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64                    pass    
 test-amd64-amd64-freebsd11-amd64                             pass    
 test-amd64-amd64-freebsd12-amd64                             pass    
 test-amd64-amd64-xl-qemuu-ovmf-amd64                         pass    
 test-amd64-amd64-xl-qemut-win7-amd64                         fail    
 test-amd64-amd64-xl-qemuu-win7-amd64                         fail    
 test-amd64-amd64-xl-qemut-ws16-amd64                         fail    
 test-amd64-amd64-xl-qemuu-ws16-amd64                         fail    
 test-armhf-armhf-xl-arndale                                  pass    
 test-amd64-amd64-examine-bios                                pass    
 test-amd64-amd64-xl-credit1                                  pass    
 test-arm64-arm64-xl-credit1                                  fail    
 test-armhf-armhf-xl-credit1                                  pass    
 test-amd64-amd64-xl-credit2                                  pass    
 test-arm64-arm64-xl-credit2                                  fail    
 test-armhf-armhf-xl-credit2                                  pass    
 test-amd64-amd64-xl-qemuu-dmrestrict-amd64-dmrestrict        pass    
 test-amd64-amd64-examine                                     pass    
 test-arm64-arm64-examine                                     pass    
 test-armhf-armhf-examine                                     pass    
 test-amd64-amd64-qemuu-nested-intel                          pass    
 test-amd64-amd64-xl-pvhv2-intel                              pass    
 test-amd64-amd64-dom0pvh-xl-intel                            pass    
 test-amd64-amd64-libvirt                                     pass    
 test-armhf-armhf-libvirt                                     pass    
 test-amd64-amd64-xl-multivcpu                                pass    
 test-armhf-armhf-xl-multivcpu                                pass    
 test-amd64-amd64-pair                                        pass    
 test-amd64-amd64-libvirt-pair                                pass    
 test-amd64-amd64-xl-pvshim                                   pass    
 test-amd64-amd64-pygrub                                      pass    
 test-amd64-amd64-libvirt-qcow2                               pass    
 test-armhf-armhf-libvirt-qcow2                               pass    
 test-amd64-amd64-libvirt-raw                                 pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-armhf-armhf-libvirt-raw                                 pass    
 test-amd64-amd64-xl-rtds                                     pass    
 test-armhf-armhf-xl-rtds                                     pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64-shadow             pass    
 test-amd64-amd64-xl-shadow                                   fail    
 test-arm64-arm64-xl-thunderx                                 fail    
 test-amd64-amd64-examine-uefi                                pass    
 test-amd64-amd64-xl-vhd                                      pass    
 test-arm64-arm64-xl-vhd                                      pass    
 test-armhf-armhf-xl-vhd                                      fail    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Not pushing.

(No revision log; it would be 204832 lines long.)


From xen-devel-bounces@lists.xenproject.org Sat Jan 13 22:42:12 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 13 Jan 2024 22:42:12 +0000
Received: from list by lists.xenproject.org with outflank-mailman.667072.1038084 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rOmhN-0007K8-CA; Sat, 13 Jan 2024 22:41:53 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 667072.1038084; Sat, 13 Jan 2024 22:41:53 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rOmhN-0007K1-9B; Sat, 13 Jan 2024 22:41:53 +0000
Received: by outflank-mailman (input) for mailman id 667072;
 Sat, 13 Jan 2024 22:41:51 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rOmhL-0007Jr-Bn; Sat, 13 Jan 2024 22:41:51 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rOmhL-00027r-5r; Sat, 13 Jan 2024 22:41:51 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rOmhK-0008MK-NO; Sat, 13 Jan 2024 22:41:50 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rOmhK-0002yg-Ms; Sat, 13 Jan 2024 22:41:50 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=6Trx7Eg3XbJvN6iDvUK5ZxBs+tDsWktaOzAqr2vBTjE=; b=jr4PYeSqox7TBJGW8mZzvDUi+q
	hIjig2FASsm9jqGMmmInm2rMshAPkMHpcMVwDVNDRnbi1KSwRsrpyjx+a7LZWgh7i4pmCrmDhun+P
	KKxBzl8efgu1eXaILRyn5Tdy9zpXzVbPK7TmEVooBRlL01pPb9oRMyyRhTuNfPsO+7H4=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184339-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [linux-5.4 test] 184339: tolerable FAIL - PUSHED
X-Osstest-Failures:
    linux-5.4:test-armhf-armhf-xl-multivcpu:guest-start/debian.repeat:fail:heisenbug
    linux-5.4:test-armhf-armhf-xl:guest-start/debian.repeat:fail:heisenbug
    linux-5.4:test-armhf-armhf-libvirt-raw:guest-start/debian.repeat:fail:heisenbug
    linux-5.4:test-armhf-armhf-xl-rtds:guest-start/debian.repeat:fail:allowable
    linux-5.4:test-armhf-armhf-xl-credit1:guest-start/debian.repeat:fail:nonblocking
    linux-5.4:test-armhf-armhf-libvirt-qcow2:saverestore-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-credit2:guest-start/debian.repeat:fail:nonblocking
    linux-5.4:test-armhf-armhf-libvirt-qcow2:guest-start:fail:nonblocking
    linux-5.4:test-armhf-armhf-libvirt:saverestore-support-check:fail:nonblocking
    linux-5.4:test-amd64-amd64-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    linux-5.4:test-amd64-i386-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    linux-5.4:test-amd64-i386-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    linux-5.4:test-amd64-amd64-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    linux-5.4:test-amd64-amd64-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    linux-5.4:test-amd64-amd64-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    linux-5.4:test-amd64-i386-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    linux-5.4:test-armhf-armhf-libvirt-raw:saverestore-support-check:fail:nonblocking
    linux-5.4:test-amd64-i386-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    linux-5.4:test-amd64-amd64-qemuu-nested-amd:debian-hvm-install/l1/l2:fail:nonblocking
    linux-5.4:test-amd64-i386-xl-pvshim:guest-start:fail:nonblocking
    linux-5.4:test-amd64-amd64-libvirt-xsm:migrate-support-check:fail:nonblocking
    linux-5.4:test-amd64-i386-libvirt-xsm:migrate-support-check:fail:nonblocking
    linux-5.4:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    linux-5.4:test-amd64-i386-libvirt:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-xsm:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-xsm:saverestore-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-libvirt-xsm:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl:saverestore-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-libvirt-xsm:saverestore-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-credit1:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-credit1:saverestore-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-credit2:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-credit2:saverestore-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-thunderx:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-thunderx:saverestore-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-multivcpu:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-multivcpu:saverestore-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-credit1:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-credit1:saverestore-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-rtds:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-rtds:saverestore-support-check:fail:nonblocking
    linux-5.4:test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    linux-5.4:test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-arndale:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-arndale:saverestore-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-credit2:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-credit2:saverestore-support-check:fail:nonblocking
    linux-5.4:test-amd64-amd64-libvirt-vhd:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl:saverestore-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-libvirt:migrate-support-check:fail:nonblocking
    linux-5.4:test-amd64-i386-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-libvirt-raw:saverestore-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-vhd:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-vhd:saverestore-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-libvirt-qcow2:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-vhd:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-vhd:saverestore-support-check:fail:nonblocking
X-Osstest-Versions-This:
    linux=4410df70110ff5175bf7f7fdc3bae5c80f2c36d9
X-Osstest-Versions-That:
    linux=2d21f73b2f16f51608c8d8b1726df270229a5006
From: osstest service owner <osstest-admin@xenproject.org>
Date: Sat, 13 Jan 2024 22:41:50 +0000

flight 184339 linux-5.4 real [real]
http://logs.test-lab.xenproject.org/osstest/logs/184339/

Failures :-/ but no regressions.

Tests which are failing intermittently (not blocking):
 test-armhf-armhf-xl-multivcpu 18 guest-start/debian.repeat fail in 184334 pass in 184339
 test-armhf-armhf-xl 18 guest-start/debian.repeat fail in 184334 pass in 184339
 test-armhf-armhf-libvirt-raw 17 guest-start/debian.repeat  fail pass in 184334

Regressions which are regarded as allowable (not blocking):
 test-armhf-armhf-xl-rtds    18 guest-start/debian.repeat fail REGR. vs. 184192

Tests which did not succeed, but are not blocking:
 test-armhf-armhf-xl-credit1 18 guest-start/debian.repeat fail blocked in 184192
 test-armhf-armhf-libvirt-qcow2 15 saverestore-support-check fail blocked in 184192
 test-armhf-armhf-xl-credit2 18 guest-start/debian.repeat fail in 184334 like 184192
 test-armhf-armhf-libvirt-qcow2 13 guest-start       fail in 184334 like 184192
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 184192
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 184192
 test-amd64-i386-xl-qemut-win7-amd64 19 guest-stop             fail like 184192
 test-amd64-i386-xl-qemuu-win7-amd64 19 guest-stop             fail like 184192
 test-amd64-amd64-xl-qemut-win7-amd64 19 guest-stop            fail like 184192
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 184192
 test-amd64-amd64-xl-qemut-ws16-amd64 19 guest-stop            fail like 184192
 test-amd64-i386-xl-qemut-ws16-amd64 19 guest-stop             fail like 184192
 test-armhf-armhf-libvirt-raw 15 saverestore-support-check    fail  like 184192
 test-amd64-i386-xl-qemuu-ws16-amd64 19 guest-stop             fail like 184192
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 184192
 test-amd64-i386-xl-pvshim    14 guest-start                  fail   never pass
 test-amd64-amd64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-amd64-i386-libvirt-xsm  15 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt     15 migrate-support-check        fail   never pass
 test-amd64-i386-libvirt      15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-xsm      15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-xsm      16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl          15 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl          16 saverestore-support-check    fail   never pass
 test-arm64-arm64-libvirt-xsm 16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-credit1  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit1  16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-credit2  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit2  16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-thunderx 15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-thunderx 16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-multivcpu 15 migrate-support-check        fail  never pass
 test-armhf-armhf-xl-multivcpu 16 saverestore-support-check    fail  never pass
 test-armhf-armhf-xl-credit1  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit1  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-rtds     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-rtds     16 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-armhf-armhf-xl-arndale  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-arndale  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-credit2  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit2  16 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-vhd 14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          16 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt     15 migrate-support-check        fail   never pass
 test-amd64-i386-libvirt-raw  14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 15 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-vhd      14 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-vhd      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-qcow2 14 migrate-support-check        fail never pass
 test-armhf-armhf-libvirt-raw 14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      15 saverestore-support-check    fail   never pass

version targeted for testing:
 linux                4410df70110ff5175bf7f7fdc3bae5c80f2c36d9
baseline version:
 linux                2d21f73b2f16f51608c8d8b1726df270229a5006

Last test of basis   184192  2023-12-20 15:16:31 Z   24 days
Testing same since   184275  2024-01-08 10:43:33 Z    5 days    9 attempts

------------------------------------------------------------
People who touched revisions under test:
  Alexander Gordeev <agordeev@linux.ibm.com>
  Alexis Lothoré <alexis.lothore@bootlin.com>
  Alper Ak <alperyasinak1@gmail.com>
  Bin Li <bin.li@canonical.com>
  Borislav Petkov (AMD) <bp@alien8.de>
  Chen-Yu Tsai <wens@kernel.org>
  Dan Carpenter <dan.carpenter@linaro.org>
  David Howells <dhowells@redhat.com>
  David S. Miller <davem@davemloft.net>
  David Sterba <dsterba@suse.com>
  Dmitry Torokhov <dmitry.torokhov@gmail.com>
  Dominique Martinet <asmadeus@codewreck.org>
  Eric Dumazet <edumazet@google.com>
  Fedor Pchelkin <pchelkin@ispras.ru>
  Florian Fainelli <florian.fainelli@broadcom.com>
  Geert Uytterhoeven <geert+renesas@glider.be>
  Georgi Djakov <djakov@kernel.org>
  Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  Haoran Liu <liuhaoran14@163.com>
  Harshit Mogalapalli <harshit.m.mogalapalli@oracle.com>
  Heiko Carstens <hca@linux.ibm.com>
  Heiner Kallweit <hkallweit1@gmail.com>
  Hu Haowen <xianfengting221@163.com>
  Jakub Kicinski <kuba@kernel.org>
  Jamal Hadi Salim <jhs@mojatatu.com>
  Javier Carrasco <javier.carrasco.cruz@gmail.com>
  Jens Axboe <axboe@kernel.dk>
  Johan Hovold <johan@kernel.org>
  Johannes Berg <johannes.berg@intel.com>
  Jonathan Cameron <Jonathan.Cameron@huawei.com>
  Josef Bacik <josef@toxicpanda.com>
  Kai Vehmanen <kai.vehmanen@linux.intel.com>
  kernelci.org bot <bot@kernelci.org>
  Kunwu Chan <chentao@kylinos.cn>
  Linus Torvalds <torvalds@linux-foundation.org>
  Linus Walleij <linus.walleij@linaro.org>
  Linux Kernel Functional Testing <lkft@linaro.org>
  Liu Jian <liujian56@huawei.com>
  Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
  Mark Glover <mark.glover@actisense.com>
  Markus Suvanto <markus.suvanto@gmail.com>
  Martin K. Petersen <martin.petersen@oracle.com>
  Masami Hiramatsu (Google) <mhiramat@kernel.org>
  Mike Snitzer <snitzer@kernel.org>
  Mike Tipton <quic_mdtipton@quicinc.com>
  Miri Korenblit <miriam.rachel.korenblit@intel.com>
  Moshe Shemesh <moshe@nvidia.com>
  Namjae Jeon <linkinjeon@kernel.org>
  Paolo Abeni <pabeni@redhat.com>
  Paulo Alcantara (SUSE) <pc@manguebit.com>
  Paulo Alcantara <pc@manguebit.com>
  Peter Zijlstra (Intel) <peterz@infradead.org>
  Philipp Zabel <p.zabel@pengutronix.de>
  Quan Nguyen <quan@os.amperecomputing.com>
  Rahul Rameshbabu <rrameshbabu@nvidia.com>
  Reinhard Speyerer <rspmn@arcor.de>
  Rouven Czerwinski <r.czerwinski@pengutronix.de>
  Saeed Mahameed <saeedm@mellanox.com>
  Saeed Mahameed <saeedm@nvidia.com>
  Sarthak Kukreti <sarthakkukreti@chromium.org>
  Sasha Levin <sashal@kernel.org>
  Seth Forshee <sforshee@kernel.org>
  Slark Xiao <slark_xiao@163.com>
  Steve French <stfrench@microsoft.com>
  Steven Rostedt (Google) <rostedt@goodmis.org>
  Su Hui <suhui@nfschina.com>
  Takashi Iwai <tiwai@suse.de>
  Thomas Gleixner <tglx@linutronix.de>
  Tony Lindgren <tony@atomide.com>
  Vlad Buslov <vladbu@nvidia.com>
  Wadim Egorov <w.egorov@phytec.de>
  Wei Yongjun <weiyongjun1@huawei.com>
  Wolfram Sang <wsa@kernel.org>
  Zhipeng Lu <alexious@zju.edu.cn>

jobs:
 build-amd64-xsm                                              pass    
 build-arm64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64                                                  pass    
 build-arm64                                                  pass    
 build-armhf                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-arm64-libvirt                                          pass    
 build-armhf-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-pvops                                            pass    
 build-arm64-pvops                                            pass    
 build-armhf-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-amd64-amd64-xl                                          pass    
 test-amd64-coresched-amd64-xl                                pass    
 test-arm64-arm64-xl                                          pass    
 test-armhf-armhf-xl                                          pass    
 test-amd64-i386-xl                                           pass    
 test-amd64-coresched-i386-xl                                 pass    
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm           pass    
 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm            pass    
 test-amd64-amd64-xl-qemut-stubdom-debianhvm-amd64-xsm        pass    
 test-amd64-i386-xl-qemut-stubdom-debianhvm-amd64-xsm         pass    
 test-amd64-amd64-xl-qemut-debianhvm-i386-xsm                 pass    
 test-amd64-i386-xl-qemut-debianhvm-i386-xsm                  pass    
 test-amd64-amd64-xl-qemuu-debianhvm-i386-xsm                 pass    
 test-amd64-i386-xl-qemuu-debianhvm-i386-xsm                  pass    
 test-amd64-amd64-libvirt-xsm                                 pass    
 test-arm64-arm64-libvirt-xsm                                 pass    
 test-amd64-i386-libvirt-xsm                                  pass    
 test-amd64-amd64-xl-xsm                                      pass    
 test-arm64-arm64-xl-xsm                                      pass    
 test-amd64-i386-xl-xsm                                       pass    
 test-amd64-amd64-qemuu-nested-amd                            fail    
 test-amd64-amd64-xl-pvhv2-amd                                pass    
 test-amd64-i386-qemut-rhel6hvm-amd                           pass    
 test-amd64-i386-qemuu-rhel6hvm-amd                           pass    
 test-amd64-amd64-dom0pvh-xl-amd                              pass    
 test-amd64-amd64-xl-qemut-debianhvm-amd64                    pass    
 test-amd64-i386-xl-qemut-debianhvm-amd64                     pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64                    pass    
 test-amd64-i386-xl-qemuu-debianhvm-amd64                     pass    
 test-amd64-i386-freebsd10-amd64                              pass    
 test-amd64-amd64-qemuu-freebsd11-amd64                       pass    
 test-amd64-amd64-qemuu-freebsd12-amd64                       pass    
 test-amd64-amd64-xl-qemuu-ovmf-amd64                         pass    
 test-amd64-i386-xl-qemuu-ovmf-amd64                          pass    
 test-amd64-amd64-xl-qemut-win7-amd64                         fail    
 test-amd64-i386-xl-qemut-win7-amd64                          fail    
 test-amd64-amd64-xl-qemuu-win7-amd64                         fail    
 test-amd64-i386-xl-qemuu-win7-amd64                          fail    
 test-amd64-amd64-xl-qemut-ws16-amd64                         fail    
 test-amd64-i386-xl-qemut-ws16-amd64                          fail    
 test-amd64-amd64-xl-qemuu-ws16-amd64                         fail    
 test-amd64-i386-xl-qemuu-ws16-amd64                          fail    
 test-armhf-armhf-xl-arndale                                  pass    
 test-amd64-amd64-examine-bios                                pass    
 test-amd64-i386-examine-bios                                 pass    
 test-amd64-amd64-xl-credit1                                  pass    
 test-arm64-arm64-xl-credit1                                  pass    
 test-armhf-armhf-xl-credit1                                  fail    
 test-amd64-amd64-xl-credit2                                  pass    
 test-arm64-arm64-xl-credit2                                  pass    
 test-armhf-armhf-xl-credit2                                  pass    
 test-amd64-amd64-xl-qemuu-dmrestrict-amd64-dmrestrict        pass    
 test-amd64-i386-xl-qemuu-dmrestrict-amd64-dmrestrict         pass    
 test-amd64-amd64-examine                                     pass    
 test-arm64-arm64-examine                                     pass    
 test-armhf-armhf-examine                                     pass    
 test-amd64-i386-examine                                      pass    
 test-amd64-i386-freebsd10-i386                               pass    
 test-amd64-amd64-qemuu-nested-intel                          pass    
 test-amd64-amd64-xl-pvhv2-intel                              pass    
 test-amd64-i386-qemut-rhel6hvm-intel                         pass    
 test-amd64-i386-qemuu-rhel6hvm-intel                         pass    
 test-amd64-amd64-dom0pvh-xl-intel                            pass    
 test-amd64-amd64-libvirt                                     pass    
 test-armhf-armhf-libvirt                                     pass    
 test-amd64-i386-libvirt                                      pass    
 test-amd64-amd64-xl-multivcpu                                pass    
 test-armhf-armhf-xl-multivcpu                                pass    
 test-amd64-amd64-pair                                        pass    
 test-amd64-i386-pair                                         pass    
 test-amd64-amd64-libvirt-pair                                pass    
 test-amd64-i386-libvirt-pair                                 pass    
 test-amd64-amd64-xl-pvshim                                   pass    
 test-amd64-i386-xl-pvshim                                    fail    
 test-amd64-amd64-pygrub                                      pass    
 test-armhf-armhf-libvirt-qcow2                               pass    
 test-amd64-amd64-xl-qcow2                                    pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-armhf-armhf-libvirt-raw                                 fail    
 test-amd64-i386-libvirt-raw                                  pass    
 test-amd64-amd64-xl-rtds                                     pass    
 test-armhf-armhf-xl-rtds                                     fail    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64-shadow             pass    
 test-amd64-i386-xl-qemuu-debianhvm-amd64-shadow              pass    
 test-amd64-amd64-xl-shadow                                   pass    
 test-amd64-i386-xl-shadow                                    pass    
 test-arm64-arm64-xl-thunderx                                 pass    
 test-amd64-amd64-examine-uefi                                pass    
 test-amd64-i386-examine-uefi                                 pass    
 test-amd64-amd64-libvirt-vhd                                 pass    
 test-arm64-arm64-xl-vhd                                      pass    
 test-armhf-armhf-xl-vhd                                      pass    
 test-amd64-i386-xl-vhd                                       pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Pushing revision :

hint: The 'hooks/update' hook was ignored because it's not set as executable.
hint: You can disable this warning with `git config advice.ignoredHook false`.
hint: The 'hooks/post-receive' hook was ignored because it's not set as executable.
hint: You can disable this warning with `git config advice.ignoredHook false`.
hint: The 'hooks/post-update' hook was ignored because it's not set as executable.
hint: You can disable this warning with `git config advice.ignoredHook false`.
To xenbits.xen.org:/home/xen/git/linux-pvops.git
   2d21f73b2f16..4410df70110f  4410df70110ff5175bf7f7fdc3bae5c80f2c36d9 -> tested/linux-5.4


From xen-devel-bounces@lists.xenproject.org Sun Jan 14 05:05:59 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sun, 14 Jan 2024 05:05:59 +0000
Received: from list by lists.xenproject.org with outflank-mailman.667082.1038093 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rOsgr-0008GW-AP; Sun, 14 Jan 2024 05:05:45 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 667082.1038093; Sun, 14 Jan 2024 05:05:45 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rOsgr-0008GP-7g; Sun, 14 Jan 2024 05:05:45 +0000
Received: by outflank-mailman (input) for mailman id 667082;
 Sun, 14 Jan 2024 05:05:44 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rOsgq-0008GD-1n; Sun, 14 Jan 2024 05:05:44 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rOsgp-0004qr-OL; Sun, 14 Jan 2024 05:05:43 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rOsgp-0001Ia-5T; Sun, 14 Jan 2024 05:05:43 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rOsgp-0001KJ-50; Sun, 14 Jan 2024 05:05:43 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=mOyWTuRWJ0UOfS8Z7hn7ISqGS+oePt7osgN0tf7ld/I=; b=PZHE4jUbeLpdtqqB8F/WYWfWRN
	rqFc+zvadMXQWFTKlmQ07kwm2TvmoW0TeRcq4f3fdOsgNyT4spmbMv80raDdjvSRAw7D13DYxmsl3
	guh7ekes7tXHPBz9uk98T4EZr5x5Ea4wu2jFIn+doZH9MCZ/seyI2UFEVEUZIh7Fw95s=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184340-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [xen-unstable test] 184340: tolerable FAIL
X-Osstest-Failures:
    xen-unstable:test-amd64-amd64-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-amd64-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-raw:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-amd64-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-qcow2:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-amd64-qemuu-nested-amd:debian-hvm-install/l1/l2:fail:nonblocking
    xen-unstable:test-amd64-i386-libvirt-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-libvirt:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-pvshim:guest-start:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-thunderx:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-xsm:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-thunderx:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-credit2:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-credit2:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-libvirt-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-libvirt-xsm:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-credit1:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-credit1:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit1:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit1:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-multivcpu:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-multivcpu:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit2:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit2:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-libvirt-raw:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt-vhd:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-libvirt-raw:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-libvirt-raw:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-vhd:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-vhd:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-raw:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-vhd:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-vhd:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-rtds:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-rtds:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-arndale:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-arndale:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-qcow2:migrate-support-check:fail:nonblocking
X-Osstest-Versions-This:
    xen=1ec3fe1f664fa837daf31e9fa8938f6109464f28
X-Osstest-Versions-That:
    xen=1ec3fe1f664fa837daf31e9fa8938f6109464f28
From: osstest service owner <osstest-admin@xenproject.org>
Date: Sun, 14 Jan 2024 05:05:43 +0000

flight 184340 xen-unstable real [real]
http://logs.test-lab.xenproject.org/osstest/logs/184340/

Failures :-/ but no regressions.

Tests which did not succeed, but are not blocking:
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop      fail blocked in 184335
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 184335
 test-amd64-amd64-xl-qemut-win7-amd64 19 guest-stop            fail like 184335
 test-amd64-i386-xl-qemuu-win7-amd64 19 guest-stop             fail like 184335
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 184335
 test-amd64-i386-xl-qemut-ws16-amd64 19 guest-stop             fail like 184335
 test-armhf-armhf-libvirt-raw 15 saverestore-support-check    fail  like 184335
 test-amd64-i386-xl-qemut-win7-amd64 19 guest-stop             fail like 184335
 test-amd64-amd64-xl-qemut-ws16-amd64 19 guest-stop            fail like 184335
 test-armhf-armhf-libvirt-qcow2 15 saverestore-support-check   fail like 184335
 test-amd64-i386-xl-qemuu-ws16-amd64 19 guest-stop             fail like 184335
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 184335
 test-amd64-i386-libvirt-xsm  15 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-amd64-i386-libvirt      15 migrate-support-check        fail   never pass
 test-amd64-i386-xl-pvshim    14 guest-start                  fail   never pass
 test-arm64-arm64-xl          15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-xsm      15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-thunderx 15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl          16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-xsm      16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-thunderx 16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-credit2  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit2  16 saverestore-support-check    fail   never pass
 test-arm64-arm64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-xsm 16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-credit1  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit1  16 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt     15 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-armhf-armhf-xl-credit1  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit1  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-multivcpu 15 migrate-support-check        fail  never pass
 test-armhf-armhf-xl-multivcpu 16 saverestore-support-check    fail  never pass
 test-armhf-armhf-libvirt     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-credit2  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit2  16 saverestore-support-check    fail   never pass
 test-amd64-i386-libvirt-raw  14 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt-vhd 14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 15 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-vhd      14 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-vhd      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-raw 14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-rtds     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-rtds     16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-arndale  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-arndale  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-qcow2 14 migrate-support-check        fail never pass

version targeted for testing:
 xen                  1ec3fe1f664fa837daf31e9fa8938f6109464f28
baseline version:
 xen                  1ec3fe1f664fa837daf31e9fa8938f6109464f28

Last test of basis   184340  2024-01-13 11:05:59 Z    0 days
Testing same since                          (not found)         0 attempts

jobs:
 build-amd64-xsm                                              pass    
 build-arm64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64-xtf                                              pass    
 build-amd64                                                  pass    
 build-arm64                                                  pass    
 build-armhf                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-arm64-libvirt                                          pass    
 build-armhf-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-prev                                             pass    
 build-i386-prev                                              pass    
 build-amd64-pvops                                            pass    
 build-arm64-pvops                                            pass    
 build-armhf-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-xtf-amd64-amd64-1                                       pass    
 test-xtf-amd64-amd64-2                                       pass    
 test-xtf-amd64-amd64-3                                       pass    
 test-xtf-amd64-amd64-4                                       pass    
 test-xtf-amd64-amd64-5                                       pass    
 test-amd64-amd64-xl                                          pass    
 test-amd64-coresched-amd64-xl                                pass    
 test-arm64-arm64-xl                                          pass    
 test-armhf-armhf-xl                                          pass    
 test-amd64-i386-xl                                           pass    
 test-amd64-coresched-i386-xl                                 pass    
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm           pass    
 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm            pass    
 test-amd64-amd64-xl-qemut-stubdom-debianhvm-amd64-xsm        pass    
 test-amd64-i386-xl-qemut-stubdom-debianhvm-amd64-xsm         pass    
 test-amd64-amd64-xl-qemut-debianhvm-i386-xsm                 pass    
 test-amd64-i386-xl-qemut-debianhvm-i386-xsm                  pass    
 test-amd64-amd64-xl-qemuu-debianhvm-i386-xsm                 pass    
 test-amd64-i386-xl-qemuu-debianhvm-i386-xsm                  pass    
 test-amd64-amd64-libvirt-xsm                                 pass    
 test-arm64-arm64-libvirt-xsm                                 pass    
 test-amd64-i386-libvirt-xsm                                  pass    
 test-amd64-amd64-xl-xsm                                      pass    
 test-arm64-arm64-xl-xsm                                      pass    
 test-amd64-i386-xl-xsm                                       pass    
 test-amd64-amd64-qemuu-nested-amd                            fail    
 test-amd64-amd64-xl-pvhv2-amd                                pass    
 test-amd64-i386-qemut-rhel6hvm-amd                           pass    
 test-amd64-i386-qemuu-rhel6hvm-amd                           pass    
 test-amd64-amd64-dom0pvh-xl-amd                              pass    
 test-amd64-amd64-xl-qemut-debianhvm-amd64                    pass    
 test-amd64-i386-xl-qemut-debianhvm-amd64                     pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64                    pass    
 test-amd64-i386-xl-qemuu-debianhvm-amd64                     pass    
 test-amd64-i386-freebsd10-amd64                              pass    
 test-amd64-amd64-qemuu-freebsd11-amd64                       pass    
 test-amd64-amd64-qemuu-freebsd12-amd64                       pass    
 test-amd64-amd64-xl-qemuu-ovmf-amd64                         pass    
 test-amd64-i386-xl-qemuu-ovmf-amd64                          pass    
 test-amd64-amd64-xl-qemut-win7-amd64                         fail    
 test-amd64-i386-xl-qemut-win7-amd64                          fail    
 test-amd64-amd64-xl-qemuu-win7-amd64                         fail    
 test-amd64-i386-xl-qemuu-win7-amd64                          fail    
 test-amd64-amd64-xl-qemut-ws16-amd64                         fail    
 test-amd64-i386-xl-qemut-ws16-amd64                          fail    
 test-amd64-amd64-xl-qemuu-ws16-amd64                         fail    
 test-amd64-i386-xl-qemuu-ws16-amd64                          fail    
 test-armhf-armhf-xl-arndale                                  pass    
 test-amd64-amd64-examine-bios                                pass    
 test-amd64-i386-examine-bios                                 pass    
 test-amd64-amd64-xl-credit1                                  pass    
 test-arm64-arm64-xl-credit1                                  pass    
 test-armhf-armhf-xl-credit1                                  pass    
 test-amd64-amd64-xl-credit2                                  pass    
 test-arm64-arm64-xl-credit2                                  pass    
 test-armhf-armhf-xl-credit2                                  pass    
 test-amd64-amd64-xl-qemuu-dmrestrict-amd64-dmrestrict        pass    
 test-amd64-i386-xl-qemuu-dmrestrict-amd64-dmrestrict         pass    
 test-amd64-amd64-examine                                     pass    
 test-arm64-arm64-examine                                     pass    
 test-armhf-armhf-examine                                     pass    
 test-amd64-i386-examine                                      pass    
 test-amd64-i386-freebsd10-i386                               pass    
 test-amd64-amd64-qemuu-nested-intel                          pass    
 test-amd64-amd64-xl-pvhv2-intel                              pass    
 test-amd64-i386-qemut-rhel6hvm-intel                         pass    
 test-amd64-i386-qemuu-rhel6hvm-intel                         pass    
 test-amd64-amd64-dom0pvh-xl-intel                            pass    
 test-amd64-amd64-libvirt                                     pass    
 test-armhf-armhf-libvirt                                     pass    
 test-amd64-i386-libvirt                                      pass    
 test-amd64-amd64-livepatch                                   pass    
 test-amd64-i386-livepatch                                    pass    
 test-amd64-amd64-migrupgrade                                 pass    
 test-amd64-i386-migrupgrade                                  pass    
 test-amd64-amd64-xl-multivcpu                                pass    
 test-armhf-armhf-xl-multivcpu                                pass    
 test-amd64-amd64-pair                                        pass    
 test-amd64-i386-pair                                         pass    
 test-amd64-amd64-libvirt-pair                                pass    
 test-amd64-i386-libvirt-pair                                 pass    
 test-amd64-amd64-xl-pvshim                                   pass    
 test-amd64-i386-xl-pvshim                                    fail    
 test-amd64-amd64-pygrub                                      pass    
 test-armhf-armhf-libvirt-qcow2                               pass    
 test-amd64-amd64-xl-qcow2                                    pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-armhf-armhf-libvirt-raw                                 pass    
 test-amd64-i386-libvirt-raw                                  pass    
 test-amd64-amd64-xl-rtds                                     pass    
 test-armhf-armhf-xl-rtds                                     pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64-shadow             pass    
 test-amd64-i386-xl-qemuu-debianhvm-amd64-shadow              pass    
 test-amd64-amd64-xl-shadow                                   pass    
 test-amd64-i386-xl-shadow                                    pass    
 test-arm64-arm64-xl-thunderx                                 pass    
 test-amd64-amd64-examine-uefi                                pass    
 test-amd64-i386-examine-uefi                                 pass    
 test-amd64-amd64-libvirt-vhd                                 pass    
 test-arm64-arm64-xl-vhd                                      pass    
 test-armhf-armhf-xl-vhd                                      pass    
 test-amd64-i386-xl-vhd                                       pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Published tested tree is already up to date.



From xen-devel-bounces@lists.xenproject.org Sun Jan 14 10:02:23 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sun, 14 Jan 2024 10:02:23 +0000
Received: from list by lists.xenproject.org with outflank-mailman.667095.1038104 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rOxJm-0006AX-AM; Sun, 14 Jan 2024 10:02:14 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 667095.1038104; Sun, 14 Jan 2024 10:02:14 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rOxJm-0006AQ-6U; Sun, 14 Jan 2024 10:02:14 +0000
Received: by outflank-mailman (input) for mailman id 667095;
 Sun, 14 Jan 2024 10:02:12 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=KR5a=IY=epam.com=prvs=774324cbd8=mykyta_poturai@srs-se1.protection.inumbo.net>)
 id 1rOxJk-0006AA-Cp
 for xen-devel@lists.xenproject.org; Sun, 14 Jan 2024 10:02:12 +0000
Received: from mx0a-0039f301.pphosted.com (mx0a-0039f301.pphosted.com
 [148.163.133.242]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id fa2730a7-b2c3-11ee-9b0f-b553b5be7939;
 Sun, 14 Jan 2024 11:02:09 +0100 (CET)
Received: from pps.filterd (m0174678.ppops.net [127.0.0.1])
 by mx0a-0039f301.pphosted.com (8.17.1.24/8.17.1.24) with ESMTP id
 40E3ctSc031009; Sun, 14 Jan 2024 10:01:53 GMT
Received: from eur05-am6-obe.outbound.protection.outlook.com
 (mail-am6eur05lp2105.outbound.protection.outlook.com [104.47.18.105])
 by mx0a-0039f301.pphosted.com (PPS) with ESMTPS id 3vkmhw1tj0-1
 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT);
 Sun, 14 Jan 2024 10:01:53 +0000 (GMT)
Received: from AS2PR03MB10110.eurprd03.prod.outlook.com
 (2603:10a6:20b:57a::22) by AM9PR03MB7725.eurprd03.prod.outlook.com
 (2603:10a6:20b:41e::24) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7181.23; Sun, 14 Jan
 2024 10:01:48 +0000
Received: from AS2PR03MB10110.eurprd03.prod.outlook.com
 ([fe80::9640:139b:8daa:fc9e]) by AS2PR03MB10110.eurprd03.prod.outlook.com
 ([fe80::9640:139b:8daa:fc9e%3]) with mapi id 15.20.7181.022; Sun, 14 Jan 2024
 10:01:48 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: fa2730a7-b2c3-11ee-9b0f-b553b5be7939
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=U3gQolu3Be+Uev/qghi1VnDCEZGuvXHPG7OgQlt41O8du5DGkApg9RDE0Gfy4m1iA4e35BBHvC29xl3Uke6EFeg+WOY5MRQBU+zrQTlDCTdYOMO61ACqmgPaw9haTfW0kMWPNBto723UBGk82ALfNP6yOK9XQCGUB/bG/3P0rPSkXFA79+6XqRUropzRwDTWjmq3Ivn6zpbloBxuZhpkT4EK6HOmkERLPLs+gb9IeUjh/Wte0KV2gY0Uigh2lyGhX47EotwhEbaB0Sh+foee/E9MbLYhg00VK3hlFSnN9MJkprKsn58qWfP4ll1kdvnSnzdVkWmsb+xe5jQEtiMTnA==
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=sRVOy0vPlI2Ik0MoBGOJBYPBn3f+l8ozQjhm7KSEaDI=;
 b=Epjav0g1plWyr49zFaq0D2KOJWDF9sRAgvf8KKsNuMdQZVlVQ7rNbBaSOHU8O4nB8Su0TPOXYI0Co73Hg2VAUctyQF12WFIRWzBTKb7TqO8YMdx2C7WYXmQJZsKkWFfL0r9MKN7lLWCWEohXIfEQuF4+/gpBUzTu+ccIXkGubP3iD8szv/thNS7iatyHF7Ik4RdSS8wzGaCDfdPqEeJFwIO0lPFs0lfqSCmTBjwCHcNQnGcy165rrsLDMqNi4fTQiLaUWzfVGNZDEx1pRaab4gdsnzNlLirdqBUnXUgurJfw3M6Yk6HudO47shbqgLeZPzmzV/2a4UQo+5+ds6BCGA==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=epam.com; dmarc=pass action=none header.from=epam.com;
 dkim=pass header.d=epam.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=epam.com; s=selector2;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=sRVOy0vPlI2Ik0MoBGOJBYPBn3f+l8ozQjhm7KSEaDI=;
 b=TILprAW5MyCjWkHARTUSPTE4mFPiZsUzq8EO7N8y8vP9EpjFJGtFXuBeGcKKXS2w5f2bW2hrDoi9+T0m3P8cWfnQ3smJPuN9hXYBt9cf/UiYx+gtm3CyIV5AJ7NHb5Ap9tyYwkNwtItAnen+4xeA+4eH/urOwxWDD9WpMQUhlhvHKvpXUwNRiooxN/rZQVle1xj0KWgtyWIWdhDqFOgoUNG2FUqeYqmW0tXWg+kx2TQHFnNEwxX7rbnyYPPpq3L7/WD6f6ti5jz1fvKMCct3WgpK5/M8a1FlSBwv6nCJ4+JVAHOX8urj+n0Q7Rk27yJ1mu8fNQZQXtD0X2CM35PC0A==
From: Mykyta Poturai <Mykyta_Poturai@epam.com>
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
CC: Mykyta Poturai <Mykyta_Poturai@epam.com>,
        Stefano Stabellini
	<sstabellini@kernel.org>,
        Julien Grall <julien@xen.org>,
        Bertrand Marquis
	<bertrand.marquis@arm.com>,
        Michal Orzel <michal.orzel@amd.com>,
        Volodymyr
 Babchuk <Volodymyr_Babchuk@epam.com>, Wei Liu <wl@xen.org>,
        Anthony PERARD
	<anthony.perard@citrix.com>,
        Juergen Gross <jgross@suse.com>,
        Andrew Cooper
	<andrew.cooper3@citrix.com>,
        George Dunlap <george.dunlap@citrix.com>,
        Jan
 Beulich <jbeulich@suse.com>,
        =?iso-8859-1?Q?Roger_Pau_Monn=E9?=
	<roger.pau@citrix.com>
Subject: [PATCH 0/2] Add support for MSI injection on Arm
Thread-Topic: [PATCH 0/2] Add support for MSI injection on Arm
Thread-Index: AQHaRtCwUl38pp01cEa3npHNYwCgZw==
Date: Sun, 14 Jan 2024 10:01:48 +0000
Message-ID: <cover.1705066642.git.mykyta_poturai@epam.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: AS2PR03MB10110:EE_|AM9PR03MB7725:EE_
x-ms-office365-filtering-correlation-id: f88ff70f-1cee-49c7-e899-08dc14e7d2be
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam: BCL:0;
x-microsoft-antispam-message-info: 
 NMwkXZj2W5uJXw1ykIOf0XQ5MN2KRH57gHPjVunBiGlHW+h2QtwjvADCJqog9wIuRy8YnGE4k+tp66ROixRhwh2mZsNSuz5rRK4pT126zkycGMEpxQMF66LlL3wt0d6Rik9h1flUux1IjssDqaX1b+s0rs7OXB106LvAmqCVTu3XmRykGRql2tfga7tUszwaw4q74iqvBvQ8Cj02aNedxe693uAW2WKmSEp2NDARDxrkNSjZKGcqnbYZzuXYg06IXu//DAO/+QtrDrLWk9xDYkMfbDLv2hSshBZm1hBanzVgMqZqbT66KNKGaIP4bdnF6SiT2NOCWvZAB27lWeEwHxTNwHMkVC8wddNiHl1zdSgqe1ieH/aL6DF7QRVTYdTm9e/cPkWugsvXqt3kRhunc/5Q6ryh2tDtw7oMIkJBrdZVijE6WoBNJshmWQCfJLNKgo8AEzMI6wVoXEL8YDhQsJ7aXImkxkpX1FlZLQ0GzpQ02GsdpRpiw9NRuEMsXppSmEswKa/T5JGckrDvuMRd9P6TFnDom+KEzt43zrtL+WGVujBStgbAdqBfIAR7h9NJsvHRDtpGdVpB4Teizpd4kyvHqqFWRo+y75L1Hm2rpcs=
x-forefront-antispam-report: 
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AS2PR03MB10110.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230031)(346002)(366004)(136003)(39860400002)(396003)(376002)(230922051799003)(186009)(64100799003)(451199024)(1800799012)(6512007)(316002)(8936002)(8676002)(91956017)(71200400001)(66476007)(64756008)(66446008)(54906003)(6916009)(6506007)(66556008)(478600001)(66946007)(6486002)(966005)(76116006)(2616005)(26005)(7416002)(5660300002)(4326008)(41300700001)(2906002)(38070700009)(36756003)(122000001)(38100700002)(86362001);DIR:OUT;SFP:1101;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0: 
 =?iso-8859-1?Q?+lbi6aNuJ9frERTVrua61wlDezAlA7iZlWYIN7fINmeAZZ7gC2naHujyGg?=
 =?iso-8859-1?Q?ItRw8s4uPEw6OarmF63vmPRqH4TbPvUgWMXceADWYsIatA8fHBLGp1BSbz?=
 =?iso-8859-1?Q?Loti4yc/Rogu/36uo4sJ4gjxje2ttS54vPMnot7A/vBZayD12FMrDBRHI4?=
 =?iso-8859-1?Q?bBSS1Pjce7OH6O+9LreJMtStpNQlgWOayjk6kszbRfZpIKM7rBXBzGVxEH?=
 =?iso-8859-1?Q?Gi0nrbrjwXo04/AInyMmB6NlMZASgN6vFCE5n5Yrg+aZmzTG+EMKLfVqja?=
 =?iso-8859-1?Q?77WzhfSz39WmAnGbX0rompVrF9ef2Vs/IKDlkCnuIjRGe2tkUC1+als+D5?=
 =?iso-8859-1?Q?FOrWht8WA4YwrpfcQEZI9iG60Vo1L1rY52pGq7ostOsuBdBiPcRb43TPHH?=
 =?iso-8859-1?Q?Ueol9qPh5f3Yd2QKvH3Dr/7iOwYo6tMxw/ldlQ5FDurFa3qPcRQtfYFRTN?=
 =?iso-8859-1?Q?gtSGxVJ6Hu7jNWCMNa8qmHP2HbZRgjuf7cZ6EquTIrKLaV6698aZU0WmAm?=
 =?iso-8859-1?Q?2vE6GEYuxvEKAO/30Xzh1Xm6dSxpULGSLHBLY7IcsNpPg8LI0mER9WI9nQ?=
 =?iso-8859-1?Q?cotDzIq2nMzdEqdEazxBHBghYxEnJpqUZIkAcYuwk3TLMNaJOyAgq8Pgll?=
 =?iso-8859-1?Q?L1+mm3GLTv91eBeWAL6UYG53SwTr9yCFd4YkYKVJn6Ng0gyTa4eFscuyzl?=
 =?iso-8859-1?Q?DG3y6VZSAIagKjhYq8hCTknWzWAmyDJ3tiDwPHsMov28fIM/mGSbWgOH9m?=
 =?iso-8859-1?Q?Yh6SyZ2hlFuSwWpaesXYK24g8UpzKbCIM30ItysY3jp+7PA5IPz7Mv1l0g?=
 =?iso-8859-1?Q?czZ2SH0PQVSSnfn6X5/hhRsaeplAC9yRtM71TLnH7/NBUmF1ZdEttGbis+?=
 =?iso-8859-1?Q?IxrKS7RN4zzb7JHU8SC6MaXrT83cn7L4ioqPUEFk8z5bbETuYb6R+xPzsQ?=
 =?iso-8859-1?Q?RGGXQhfEZtbtdvTUKYVgt3C8Gvibzn6nlSB4m9cG6776GccnBXutJLvLJw?=
 =?iso-8859-1?Q?vlMrdHxRSnkMwOOwjnFSvx3F2GqWJFmTQ8RDqqQoHeT1U+KWUIWreR/J+L?=
 =?iso-8859-1?Q?01Yu7Skw2eJLkGWyxDhReXFcXKW4HRuDiuHwrHgQtW2A1rKer45sAM4Cpw?=
 =?iso-8859-1?Q?ReTDEswZPtzCWU1BK6u1X1N4PP4AtMCtaeegO/DRE3xkB/w+eB6qycevvf?=
 =?iso-8859-1?Q?MNKt2EuyPQkAyuDQFYuKn2IYahVVXjxCaPr3cP/Nie7uU+ACI9mz+RXiN3?=
 =?iso-8859-1?Q?nblH1InR6nlnQZ8QRJBmZcSX2+BjmnNh/stNmkwvR8CJNOIjb7Kbsk6rZ1?=
 =?iso-8859-1?Q?9tDjRfmNgfNSkBrcMoL2UqKlciLj+K5bDS/OdsoYsob+r50BTpNEQgN+hT?=
 =?iso-8859-1?Q?swCvMDTxC6t3VL5upjCk11sDfFykHjAu62SMcAP9BChVrUG5iuUizaXpTf?=
 =?iso-8859-1?Q?lF2PM8g67EL92iJyP8dMJeCYdqMTWVFnesnzjMPBsBbk66Xm8KhMsTteC9?=
 =?iso-8859-1?Q?iuKx3GpHjuK0qWY3S6lvx3F71LVljlm+VyAB/wBarEhmJj5NQd1Dlr56wX?=
 =?iso-8859-1?Q?ueHmeIr84VvDUp2cWS34HqGMViRJWuUvkpIS6GXkKW0n086sKHFAnqKtVc?=
 =?iso-8859-1?Q?7Nz6RT2XEpX4aKS67U1z5c08uikLY6HtqpsGt9Ad7MiTtfc0qrn9WGGg?=
 =?iso-8859-1?Q?=3D=3D?=
Content-Type: text/plain; charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-OriginatorOrg: epam.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: AS2PR03MB10110.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: f88ff70f-1cee-49c7-e899-08dc14e7d2be
X-MS-Exchange-CrossTenant-originalarrivaltime: 14 Jan 2024 10:01:48.4875
 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: b41b72d0-4e9f-4c26-8a69-f949f367c91d
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: xU8y1dzsgJBTXYH6uKf1HxIAsv6kZZPjwbzyY/krqW/78fMQNJL8565+piR+UDJXruZQzg7aMSTweLvqq2rSFw==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM9PR03MB7725
X-Proofpoint-ORIG-GUID: ufgqS3AlmZpHo-UkJrog7CUcX-A3IAEV
X-Proofpoint-GUID: ufgqS3AlmZpHo-UkJrog7CUcX-A3IAEV
X-Proofpoint-Virus-Version: vendor=baseguard
 engine=ICAP:2.0.272,Aquarius:18.0.997,Hydra:6.0.619,FMLib:17.11.176.26
 definitions=2023-12-09_02,2023-12-07_01,2023-05-22_02
X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 bulkscore=0 mlxscore=0
 adultscore=0 lowpriorityscore=0 suspectscore=0 impostorscore=0
 priorityscore=1501 clxscore=1011 mlxlogscore=535 malwarescore=0
 phishscore=0 spamscore=0 classifier=spam adjust=0 reason=mlx scancount=1
 engine=8.19.0-2311290000 definitions=main-2401140078

This series adds the base support for MSI injection on Arm. This is
needed to streamline virtio-pci interrupt triggering.

With this patches, MSIs can be triggered in guests by issuing the new
DM op, inject_msi2. This op is similar to inject_msi, but it allows
to specify the source id of the MSI.

We chose the approach of adding a new DM op instead of using the pad
field of inject_msi because we have no clear way of distinguishing
between set and unset pad fields. New implementations also adds flags
field to clearly specify if the SBDF is set.

Patches were tested on QEMU with QEMU virtio-pci backends, with=20
virtio-pci patches and patches for ITS support for DomUs applied.

Virtio-pci patches:
https://github.com/xen-troops/xen/tree/xen-4.18-xt0.2

ITS patches:
https://github.com/stewdk/xen/commits/pcie-passthrough-arm-vpci-v11

Mykyta Poturai (2):
  arm: vgic: Add the ability to trigger MSIs from the Hypervisor
  xen/dm: arm: Introduce inject_msi2 DM op

 tools/include/xendevicemodel.h               | 14 ++++++++
 tools/libs/devicemodel/core.c                | 22 ++++++++++++
 tools/libs/devicemodel/libxendevicemodel.map |  5 +++
 xen/arch/arm/dm.c                            | 15 +++++++++
 xen/arch/arm/include/asm/vgic.h              | 11 ++++++
 xen/arch/arm/vgic-v3-its.c                   | 35 ++++++++++++++++++++
 xen/arch/x86/hvm/dm.c                        | 13 ++++++++
 xen/include/public/hvm/dm_op.h               | 12 +++++++
 8 files changed, 127 insertions(+)

--=20
2.34.1


From xen-devel-bounces@lists.xenproject.org Sun Jan 14 10:02:23 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sun, 14 Jan 2024 10:02:23 +0000
Received: from list by lists.xenproject.org with outflank-mailman.667097.1038118 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rOxJn-0006QF-1c; Sun, 14 Jan 2024 10:02:15 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 667097.1038118; Sun, 14 Jan 2024 10:02:14 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rOxJm-0006Ox-Sd; Sun, 14 Jan 2024 10:02:14 +0000
Received: by outflank-mailman (input) for mailman id 667097;
 Sun, 14 Jan 2024 10:02:13 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=KR5a=IY=epam.com=prvs=774324cbd8=mykyta_poturai@srs-se1.protection.inumbo.net>)
 id 1rOxJl-0006AA-I9
 for xen-devel@lists.xenproject.org; Sun, 14 Jan 2024 10:02:13 +0000
Received: from mx0b-0039f301.pphosted.com (mx0b-0039f301.pphosted.com
 [148.163.137.242]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id fab47a89-b2c3-11ee-9b0f-b553b5be7939;
 Sun, 14 Jan 2024 11:02:09 +0100 (CET)
Received: from pps.filterd (m0174681.ppops.net [127.0.0.1])
 by mx0b-0039f301.pphosted.com (8.17.1.24/8.17.1.24) with ESMTP id
 40E29Aat013393; Sun, 14 Jan 2024 10:01:56 GMT
Received: from eur05-am6-obe.outbound.protection.outlook.com
 (mail-am6eur05lp2104.outbound.protection.outlook.com [104.47.18.104])
 by mx0b-0039f301.pphosted.com (PPS) with ESMTPS id 3vkmj1hsv6-2
 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT);
 Sun, 14 Jan 2024 10:01:56 +0000 (GMT)
Received: from AS2PR03MB10110.eurprd03.prod.outlook.com
 (2603:10a6:20b:57a::22) by AM9PR03MB7725.eurprd03.prod.outlook.com
 (2603:10a6:20b:41e::24) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7181.23; Sun, 14 Jan
 2024 10:01:53 +0000
Received: from AS2PR03MB10110.eurprd03.prod.outlook.com
 ([fe80::9640:139b:8daa:fc9e]) by AS2PR03MB10110.eurprd03.prod.outlook.com
 ([fe80::9640:139b:8daa:fc9e%3]) with mapi id 15.20.7181.022; Sun, 14 Jan 2024
 10:01:53 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: fab47a89-b2c3-11ee-9b0f-b553b5be7939
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=O/7D4F8abhHtlI6G7CfJL4BhRaISN31KPe1cUJllSW6m8Sqo2/xHmiYj3JnOuj9TQ1461yptmmYOxJ9dzluvEVG1MtC+QX/FuFykqn5HsTWLj543KtMWT1GlD7LEefDB+cPEiQ0StwuImHHyBI/PY/4SDstAJpgGxHUkr5hlnaOGfGjyHyYQEFVmfwaN9Uob0UM8dSv9/Vi0W5c7q0tFaQDMPpYq2f3JRK98DdGA78y9yAdcX42IluitEMwR4lyhEXC6V309ZuSJOt3abRZzWPW/0F460MYuafw63vpmFzwRQfin6EDRZPA95ocwj/Um02RJ+qe8UWVozfd3CLU4UA==
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=i5WrO4pORRjJwySMRAgFI+4Dm/wKfZdXFK/o0SQScYM=;
 b=FaS3dCkE5myn+5jTghZV5jr4gX44LBYSMd7DMRqRLWpl4tovV/a6SD6HCn7Jb99ywjrGF1gZe00h0EDt0pH6D3yRIAjZipYO725FsPaTO8cDEbNbiDrBXw5WltDBuW1EtIWD0/hELm+y/11ZMfgSgFy4/WcNyyBMz+iBSgGbGNPQK9rnwlvCGeL/DAqYH8WbQbtOdueN7aK9tnXhvKXjy6n72fO4ReAjeW/id1e3q7irEbGF++AJ2Xmp+cDHF+Vn+ELxWysLEGpUIgYwlNzI3w8EP0KVdw7sZj4A2yGQyMB23CnzUVmIRpsbk7PoAQxsB90BqGBBcTHoONDgDPUSPg==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=epam.com; dmarc=pass action=none header.from=epam.com;
 dkim=pass header.d=epam.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=epam.com; s=selector2;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=i5WrO4pORRjJwySMRAgFI+4Dm/wKfZdXFK/o0SQScYM=;
 b=Qbcf0iPYz+OVMFfLBwbkEp+YZ+O3M87YIRq7cfyYPL91F+hj6E/iXrFCP+LP69KOYq/oRBd934BgRMi6Oj1qscpNhIAltQcGwrHA75VKqRV9f7ZBFHxzxgKX66oWbA20/fXgL8REJTSyEbNEH0VIZK72lmtYEPz2KdGJ1pFt5lXO46seMaWV3IHjbBnvFT06nsCIGOzlam3nZOEGK35pbxT0uQfP3h2cJ1RuAmPnNOHqN0g5whI4Ie2HeRqcnGJMj0DesGOjtrHYMJ8EVqBTyl+xwsZP5W0jbfn89hVqD0rCTY+VKOwsNjsFVMzAAOeg/I8Gq4hUUspqjrQzabebcA==
From: Mykyta Poturai <Mykyta_Poturai@epam.com>
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
CC: Mykyta Poturai <Mykyta_Poturai@epam.com>, Wei Liu <wl@xen.org>,
        Anthony
 PERARD <anthony.perard@citrix.com>,
        Juergen Gross <jgross@suse.com>,
        Andrew
 Cooper <andrew.cooper3@citrix.com>,
        George Dunlap <george.dunlap@citrix.com>,
        Jan Beulich <jbeulich@suse.com>, Julien Grall <julien@xen.org>,
        Stefano
 Stabellini <sstabellini@kernel.org>,
        Bertrand Marquis
	<bertrand.marquis@arm.com>,
        Michal Orzel <michal.orzel@amd.com>,
        Volodymyr
 Babchuk <Volodymyr_Babchuk@epam.com>,
        =?iso-8859-1?Q?Roger_Pau_Monn=E9?=
	<roger.pau@citrix.com>
Subject: [PATCH 2/2] xen/dm: arm: Introduce inject_msi2 DM op
Thread-Topic: [PATCH 2/2] xen/dm: arm: Introduce inject_msi2 DM op
Thread-Index: AQHaRtCzsHPhy+CQVkWhqLuVBID2ow==
Date: Sun, 14 Jan 2024 10:01:53 +0000
Message-ID: 
 <6c551b03796fbf091b22fcde96d894cd5308ff91.1705066642.git.mykyta_poturai@epam.com>
References: <cover.1705066642.git.mykyta_poturai@epam.com>
In-Reply-To: <cover.1705066642.git.mykyta_poturai@epam.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: AS2PR03MB10110:EE_|AM9PR03MB7725:EE_
x-ms-office365-filtering-correlation-id: ed95b25e-b022-4a46-f393-08dc14e7d58d
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam: BCL:0;
x-microsoft-antispam-message-info: 
 Ea9yoJKoqsLJSU9J8I0z8B5ifPEwTrfLoS9K+IujV+Zq66+ma+rSEzZ7zMuPgJd8S3pFGOgt2fxYZgmfj5W5J9nRktA6Pezl4DRJj+dKhce1FhF8m3haqAxvATG0Tp2kJnZ2ISIPlFgcKlYOfs9/DwDyutf7kYeP5iNqZq6LrJ33a3yx++n03nD1jtM3WayN5fiMBMld9qK5Ez/ijfv2Y35rdB42gqeg20Yli7iQycuUyukaThv13XZZgp6k9sKpMNbFowpzTnw3JT5cncBjlQ+gI07pG0srUxB4iW9zDqqZIkZNu4/Sl3O1pgAH4GfnAsWYMiR1uN/96xSlkpZNeQ5OxsZZIgIxAh2L6WUhYVU9zFtniDMmGUO0kNRTLeoSn4M41V44nVytM2PN5TkVjbQwwUAbjDT89B7E6sIrGq/4yZvA1N6Sg0SSlB9/2yjOI4zZBVQEBpzzVVu3cWN6QiR8t7i0rXBklN/w7fwsd7042Z6u+qNAYGDc/9eqxfROKrrI4BffuSnAC4gsPPPVnl7vGFUSax1gI4jwVufvv9WSd5t/PR3XGZZacEXtPA0RrAl7Vu5Dl4XYQREjvDKvw4Nd/SOZ0F4JVhWkuwBp4FxhsttV7QypWeFfile5jQcWUxYeYodi/id8BmN9BNr9JXgaBdI17VLIJ3h9pX3kvF4=
x-forefront-antispam-report: 
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AS2PR03MB10110.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230031)(346002)(366004)(136003)(39860400002)(396003)(376002)(230922051799003)(230273577357003)(230173577357003)(186009)(64100799003)(451199024)(1800799012)(6512007)(316002)(8936002)(8676002)(91956017)(71200400001)(66476007)(64756008)(66446008)(54906003)(6916009)(6506007)(66556008)(478600001)(66946007)(6486002)(76116006)(2616005)(83380400001)(26005)(7416002)(5660300002)(4326008)(41300700001)(2906002)(38070700009)(36756003)(122000001)(38100700002)(86362001);DIR:OUT;SFP:1101;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0: 
 =?iso-8859-1?Q?QUkjUWLzNTvo60Su71ifnBprbNKBcUy8SxtV2HgFIYcac7rkYzsdK+COIL?=
 =?iso-8859-1?Q?DETEdvScbTJazhUD0O5NqnBOOn4QPBhA6+tsD/rdx+UMV+BMKgMx9hpF8b?=
 =?iso-8859-1?Q?4Mp/H0Wo6BIFJRkhM4bTgL/mLBjV7VEZhJnmR3+g5i2pSScp84oekp99Ax?=
 =?iso-8859-1?Q?3PU/zTjq4n+sBr3yxInLvRdsVZu9j04eAAcp1weex2Si3gXpe80upuPyHi?=
 =?iso-8859-1?Q?fb7xyd8qwRp1FReqX9P7movoa7R15RCXM8i5h3kS/zvVR+qzpKoQN9DmMP?=
 =?iso-8859-1?Q?OkUFiVGrGwov1S2iLdTT2H6n+h7aPygI7C1iRA2O+MV0qsKYGZeyuzKnbj?=
 =?iso-8859-1?Q?7Ua4mtAKhjw/7McLaT5epdDl5O4PpbwTXFFDTZYNXcZPprp3bGcc9SOmtW?=
 =?iso-8859-1?Q?1BPCKLoqoWYi/gd48iXLiQLMp5i4cV8EsSh+vBtYA6VEkJD4rEBQOwMPxf?=
 =?iso-8859-1?Q?4yv/THVU7dYHDXZRyV2EJfgHAGd8x4rhl9V3DNkNTbvKTpVbDDMVQT0J47?=
 =?iso-8859-1?Q?YJ8LdEPdW8E/jkiOezYVZnq2v2JfH8u0VHNK6vG/EWrtGvz32GzHUfvxO9?=
 =?iso-8859-1?Q?2HPGT43ImPDOFYN5E4AoLa/BeKi78WuB3/TVH8+w/sXKeIVFtmH8I7gVVZ?=
 =?iso-8859-1?Q?sDYmF1FgVmX/gFqFbkOTpPvUnNPAwV/aOW0qqpKFW0zKi81lUzSZttYBDo?=
 =?iso-8859-1?Q?aCX0DGXgIJU1uobveUKzvWlfu7FVT6n0bW5Dj7hjrTvcCxxbCOUbZsCF0s?=
 =?iso-8859-1?Q?pc1JiXP4pGXmBNFU/lLUJPRGyDeBsMdVOwk3xryvVIhjO33phN5+oE2kKc?=
 =?iso-8859-1?Q?gNUkTE+IqH5IhU/5WKivqJh13VByTf8xdIxxufUI22vWmJP2+OevEoNrOQ?=
 =?iso-8859-1?Q?nv6Xjpoh4C5JXa4zUjiHibb52ObHrO+RD8ZRHgh/yNFtqaeEESV+J5dupr?=
 =?iso-8859-1?Q?DLSFvAnNMAS4dovh+gdIDZsaN0DvfaC0pjn1LTdvmIPTMxq6eCHDxk/FKp?=
 =?iso-8859-1?Q?xZHjIx0FQp3UQq0GXWnHJE9W6IfEAnHkN/FNmq4xxakJSVMDYP+okn4dG8?=
 =?iso-8859-1?Q?xnBEoKF/j559VFz8Bh/l2tE12XhRKlpiGqqL1JI39mbwMG4QA5nCS+BKhu?=
 =?iso-8859-1?Q?cWDvLfzugZBl+M3pVyolljKRaXaDF+voOgJJPwg6curEmyBoe0bdJmyjf+?=
 =?iso-8859-1?Q?rVkx9uiZsAFubAIA9+g4B1/jGKaA14jwwwu7MwTXHy9HX+GZeCw/zAvmtv?=
 =?iso-8859-1?Q?GKkOTCgi1/NdTh9BvSgXC4wPdD1VTU/HHZulUaj05Mem47h1URtBucNMfV?=
 =?iso-8859-1?Q?FmljAgE3VYe9/Yj9EK7//xphUW5vAvResoadl72Cn+rZgHUeMzzuHIE0i2?=
 =?iso-8859-1?Q?KMpN7AZ0wfWh6f0prXFv4oifWRKL+pYJhVf9Kixsn7M7PybqXYAgd0iTUT?=
 =?iso-8859-1?Q?k2TlFItVHwhYKqwx42JIL/HGCZAgbHVwz+65VfFcsDMyCWYyFHRC0UYZGI?=
 =?iso-8859-1?Q?rgusuza19/iBaEAzi8eNGmg5XdtrFNK8if6QFOM8TP7bXP2EfGHLuT4IWK?=
 =?iso-8859-1?Q?x4sPN8qJzOvAT57lTAkJ1XW3uc/DrKxEeLccz0cERk7GcNhvGXfBl+l0Ou?=
 =?iso-8859-1?Q?GTAk17mjCIkKY08IfW6gSrggfkdHi27TII/dzT8pLOnzbq2rkQDw4TvA?=
 =?iso-8859-1?Q?=3D=3D?=
Content-Type: text/plain; charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-OriginatorOrg: epam.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: AS2PR03MB10110.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: ed95b25e-b022-4a46-f393-08dc14e7d58d
X-MS-Exchange-CrossTenant-originalarrivaltime: 14 Jan 2024 10:01:53.2011
 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: b41b72d0-4e9f-4c26-8a69-f949f367c91d
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: n7+BZ3Vt6JSG0z60/FMUKVanqYJ2ZnI/1fZPsDirWVQgtRCZEs0aHjGrLKFZgSJaCoif1A49EvZOXwVFt1MrhA==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM9PR03MB7725
X-Proofpoint-GUID: mzJhV2cR_4FNwPYKjX505Xu2OmZkY671
X-Proofpoint-ORIG-GUID: mzJhV2cR_4FNwPYKjX505Xu2OmZkY671
X-Proofpoint-Virus-Version: vendor=baseguard
 engine=ICAP:2.0.272,Aquarius:18.0.997,Hydra:6.0.619,FMLib:17.11.176.26
 definitions=2023-12-09_02,2023-12-07_01,2023-05-22_02
X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 lowpriorityscore=0
 impostorscore=0 mlxlogscore=707 suspectscore=0 adultscore=0 clxscore=1015
 bulkscore=0 malwarescore=0 mlxscore=0 phishscore=0 spamscore=0
 priorityscore=1501 classifier=spam adjust=0 reason=mlx scancount=1
 engine=8.19.0-2311290000 definitions=main-2401140078

Add the second version of inject_msi DM op, which allows to specify
the source_id of an MSI interrupt. This is needed for correct MSI
injection on ARM.

It would not be safe to include the source_id in the original inject_msi
in the pad field, because we have no way to know if it is set or not.

Signed-off-by: Mykyta Poturai <mykyta_poturai@epam.com>
---
 tools/include/xendevicemodel.h               | 14 +++++++++++++
 tools/libs/devicemodel/core.c                | 22 ++++++++++++++++++++
 tools/libs/devicemodel/libxendevicemodel.map |  5 +++++
 xen/arch/arm/dm.c                            | 15 +++++++++++++
 xen/arch/x86/hvm/dm.c                        | 13 ++++++++++++
 xen/include/public/hvm/dm_op.h               | 12 +++++++++++
 6 files changed, 81 insertions(+)

diff --git a/tools/include/xendevicemodel.h b/tools/include/xendevicemodel.=
h
index 797e0c6b29..4833e55bce 100644
--- a/tools/include/xendevicemodel.h
+++ b/tools/include/xendevicemodel.h
@@ -236,6 +236,20 @@ int xendevicemodel_inject_msi(
     xendevicemodel_handle *dmod, domid_t domid, uint64_t msi_addr,
     uint32_t msi_data);
=20
+/**
+ * This function injects an MSI into a guest.
+ *
+ * @parm dmod a handle to an open devicemodel interface.
+ * @parm domid the domain id to be serviced
+ * @parm msi_addr the MSI address (0xfeexxxxx)
+ * @parm source_id the PCI SBDF of the source device
+ * @parm msi_data the MSI data
+ * @return 0 on success, -1 on failure.
+*/
+int xendevicemodel_inject_msi2(
+    xendevicemodel_handle *dmod, domid_t domid, uint64_t msi_addr, uint32_=
t source_id,
+    uint32_t msi_data, unsigned int source_id_valid);
+
 /**
  * This function enables tracking of changes in the VRAM area.
  *
diff --git a/tools/libs/devicemodel/core.c b/tools/libs/devicemodel/core.c
index 8e619eeb0a..17ad00c5d9 100644
--- a/tools/libs/devicemodel/core.c
+++ b/tools/libs/devicemodel/core.c
@@ -448,6 +448,28 @@ int xendevicemodel_set_irq_level(
     return xendevicemodel_op(dmod, domid, 1, &op, sizeof(op));
 }
=20
+int xendevicemodel_inject_msi2(
+    xendevicemodel_handle *dmod, domid_t domid, uint64_t msi_addr, uint32_=
t source_id,
+    uint32_t msi_data, unsigned int source_id_valid)
+{
+    struct xen_dm_op op;
+    struct xen_dm_op_inject_msi2 *data;
+
+    memset(&op, 0, sizeof(op));
+
+    op.op =3D XEN_DMOP_inject_msi2;
+    data =3D &op.u.inject_msi2;
+
+    data->addr =3D msi_addr;
+    data->data =3D msi_data;
+    if ( source_id_valid ) {
+        data->source_id =3D source_id;
+        data->flags =3D XEN_DMOP_MSI_SOURCE_ID_VALID;
+    }
+
+    return xendevicemodel_op(dmod, domid, 1, &op, sizeof(op));
+}
+
 int xendevicemodel_set_pci_link_route(
     xendevicemodel_handle *dmod, domid_t domid, uint8_t link, uint8_t irq)
 {
diff --git a/tools/libs/devicemodel/libxendevicemodel.map b/tools/libs/devi=
cemodel/libxendevicemodel.map
index f7f9e3d932..aa05768642 100644
--- a/tools/libs/devicemodel/libxendevicemodel.map
+++ b/tools/libs/devicemodel/libxendevicemodel.map
@@ -44,3 +44,8 @@ VERS_1.4 {
 		xendevicemodel_set_irq_level;
 		xendevicemodel_nr_vcpus;
 } VERS_1.3;
+
+VERS_1.5 {
+	global:
+		xendevicemodel_inject_msi2;
+} VERS_1.4;
diff --git a/xen/arch/arm/dm.c b/xen/arch/arm/dm.c
index 5569efa121..c45e196561 100644
--- a/xen/arch/arm/dm.c
+++ b/xen/arch/arm/dm.c
@@ -27,6 +27,7 @@ int dm_op(const struct dmop_args *op_args)
         [XEN_DMOP_set_ioreq_server_state]           =3D sizeof(struct xen_=
dm_op_set_ioreq_server_state),
         [XEN_DMOP_destroy_ioreq_server]             =3D sizeof(struct xen_=
dm_op_destroy_ioreq_server),
         [XEN_DMOP_set_irq_level]                    =3D sizeof(struct xen_=
dm_op_set_irq_level),
+        [XEN_DMOP_inject_msi2]                      =3D sizeof(struct xen_=
dm_op_inject_msi2),
         [XEN_DMOP_nr_vcpus]                         =3D sizeof(struct xen_=
dm_op_nr_vcpus),
     };
=20
@@ -112,6 +113,20 @@ int dm_op(const struct dmop_args *op_args)
         break;
     }
=20
+    case XEN_DMOP_inject_msi2:
+    {
+        const struct xen_dm_op_inject_msi2 *data =3D
+            &op.u.inject_msi2;
+
+        if ( !(data->flags & XEN_DMOP_MSI_SOURCE_ID_VALID) )
+        {
+            rc =3D -EINVAL;
+            break;
+        }
+        rc =3D vgic_its_trigger_msi(d, data->addr, data->source_id, data->=
data);
+        break;
+
+    }
     case XEN_DMOP_nr_vcpus:
     {
         struct xen_dm_op_nr_vcpus *data =3D &op.u.nr_vcpus;
diff --git a/xen/arch/x86/hvm/dm.c b/xen/arch/x86/hvm/dm.c
index 462691f91d..a4a0e3dff9 100644
--- a/xen/arch/x86/hvm/dm.c
+++ b/xen/arch/x86/hvm/dm.c
@@ -344,6 +344,7 @@ int dm_op(const struct dmop_args *op_args)
         [XEN_DMOP_set_mem_type]                     =3D sizeof(struct xen_=
dm_op_set_mem_type),
         [XEN_DMOP_inject_event]                     =3D sizeof(struct xen_=
dm_op_inject_event),
         [XEN_DMOP_inject_msi]                       =3D sizeof(struct xen_=
dm_op_inject_msi),
+        [XEN_DMOP_inject_msi2]                      =3D sizeof(struct xen_=
dm_op_inject_msi2),
         [XEN_DMOP_map_mem_type_to_ioreq_server]     =3D sizeof(struct xen_=
dm_op_map_mem_type_to_ioreq_server),
         [XEN_DMOP_remote_shutdown]                  =3D sizeof(struct xen_=
dm_op_remote_shutdown),
         [XEN_DMOP_relocate_memory]                  =3D sizeof(struct xen_=
dm_op_relocate_memory),
@@ -539,6 +540,18 @@ int dm_op(const struct dmop_args *op_args)
         break;
     }
=20
+    case XEN_DMOP_inject_msi2:
+    {
+        const struct xen_dm_op_inject_msi2 *data =3D
+            &op.u.inject_msi2;
+
+        if ( !(data->flags & XEN_DMOP_MSI_SOURCE_ID_VALID) )
+            printk(XENLOG_WARNING "XEN_DMOP_inject_msi2: source_id is igno=
red\n");
+
+        rc =3D hvm_inject_msi(d, data->addr, data->data);
+        break;
+    }
+
     case XEN_DMOP_remote_shutdown:
     {
         const struct xen_dm_op_remote_shutdown *data =3D
diff --git a/xen/include/public/hvm/dm_op.h b/xen/include/public/hvm/dm_op.=
h
index fa98551914..da2ce4a7f7 100644
--- a/xen/include/public/hvm/dm_op.h
+++ b/xen/include/public/hvm/dm_op.h
@@ -444,6 +444,17 @@ struct xen_dm_op_nr_vcpus {
 };
 typedef struct xen_dm_op_nr_vcpus xen_dm_op_nr_vcpus_t;
=20
+#define XEN_DMOP_inject_msi2 21
+#define XEN_DMOP_MSI_SOURCE_ID_VALID (1u << 0)
+
+struct xen_dm_op_inject_msi2 {
+    uint64_aligned_t addr;
+    uint32_t data;
+    uint32_t source_id; /* PCI SBDF */
+    uint32_t flags;
+};
+typedef struct xen_dm_op_inject_msi2 xen_dm_op_inject_msi2_t;
+
 struct xen_dm_op {
     uint32_t op;
     uint32_t pad;
@@ -463,6 +474,7 @@ struct xen_dm_op {
         xen_dm_op_set_mem_type_t set_mem_type;
         xen_dm_op_inject_event_t inject_event;
         xen_dm_op_inject_msi_t inject_msi;
+        xen_dm_op_inject_msi2_t inject_msi2;
         xen_dm_op_map_mem_type_to_ioreq_server_t map_mem_type_to_ioreq_ser=
ver;
         xen_dm_op_remote_shutdown_t remote_shutdown;
         xen_dm_op_relocate_memory_t relocate_memory;
--=20
2.34.1


From xen-devel-bounces@lists.xenproject.org Sun Jan 14 10:02:23 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sun, 14 Jan 2024 10:02:23 +0000
Received: from list by lists.xenproject.org with outflank-mailman.667096.1038110 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rOxJm-0006Do-KG; Sun, 14 Jan 2024 10:02:14 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 667096.1038110; Sun, 14 Jan 2024 10:02:14 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rOxJm-0006DS-E8; Sun, 14 Jan 2024 10:02:14 +0000
Received: by outflank-mailman (input) for mailman id 667096;
 Sun, 14 Jan 2024 10:02:12 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=KR5a=IY=epam.com=prvs=774324cbd8=mykyta_poturai@srs-se1.protection.inumbo.net>)
 id 1rOxJk-0006AA-M9
 for xen-devel@lists.xenproject.org; Sun, 14 Jan 2024 10:02:12 +0000
Received: from mx0b-0039f301.pphosted.com (mx0b-0039f301.pphosted.com
 [148.163.137.242]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id faad8ca0-b2c3-11ee-9b0f-b553b5be7939;
 Sun, 14 Jan 2024 11:02:09 +0100 (CET)
Received: from pps.filterd (m0174681.ppops.net [127.0.0.1])
 by mx0b-0039f301.pphosted.com (8.17.1.24/8.17.1.24) with ESMTP id
 40E29Aas013393; Sun, 14 Jan 2024 10:01:56 GMT
Received: from eur05-am6-obe.outbound.protection.outlook.com
 (mail-am6eur05lp2104.outbound.protection.outlook.com [104.47.18.104])
 by mx0b-0039f301.pphosted.com (PPS) with ESMTPS id 3vkmj1hsv6-1
 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT);
 Sun, 14 Jan 2024 10:01:55 +0000 (GMT)
Received: from AS2PR03MB10110.eurprd03.prod.outlook.com
 (2603:10a6:20b:57a::22) by AM9PR03MB7725.eurprd03.prod.outlook.com
 (2603:10a6:20b:41e::24) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7181.23; Sun, 14 Jan
 2024 10:01:53 +0000
Received: from AS2PR03MB10110.eurprd03.prod.outlook.com
 ([fe80::9640:139b:8daa:fc9e]) by AS2PR03MB10110.eurprd03.prod.outlook.com
 ([fe80::9640:139b:8daa:fc9e%3]) with mapi id 15.20.7181.022; Sun, 14 Jan 2024
 10:01:52 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: faad8ca0-b2c3-11ee-9b0f-b553b5be7939
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=az7Pllc578GTJzSzL8AZ/0iYuGnobWL2iagFKGcP3xT9JiMIFeodAWViF9R2k66FsAFPBY2jbKdfNSySCLX3kZQRKmCX1eWY0BSW68NPQq6iQeY6Tfm6piGkuzabCRTTZfWiaBxDiue0YuX1s0byCjwKkccfSwksaFCFRnTZhy4KtPpOq+yRR8Khg7bTm8+VeT1HlLUlfJMqOQ3fD8EmsCLIpv1mnU4omaTLMfpqzvhk1pxRmdfsR5eZjiPa7nDzb8JxsBem1jSaZdJnge1inf0LYHTPeKZsXsywmFZTCw8g18Zj9nqEmWkpCLe850TQc1yWuZDhNWBSqsJbfXDaiQ==
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=baf0t9FWoP6jlnYrKU9AwSGWPTgwixnTUwKMBjpqAJQ=;
 b=HIpxxNZu9gArgo3iXeT9IWzwOFwZA/qLsGxUkNHvzrmHmWIg0KLKq+GeW7d/mG2xC2ofaeJsgercVopvgLl7z7IM92I7GqF8TuzoyLK/1ofBLqHqEBVDWcvP6se9HDXZ/cZsckMXs2OTB1iKCatA8mC9WLzePCnDO5oy9xQrvMjE1YKZC6f12yzT+/CG9/CcMCnpnCqMLQHsE+o0Y9bSZb2r8gHBZFJR0whCPb7iE3wmLW1WzD5e/MjSOtD4bL2waaOOAoxIHDIc3ZB9Mq2ljbc8uiObrJmDR9ZpsZNLT1cC0O5CpambEH5Ev79XfZ0Mde1VOMNDiIh/5y4ItFKXLg==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=epam.com; dmarc=pass action=none header.from=epam.com;
 dkim=pass header.d=epam.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=epam.com; s=selector2;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=baf0t9FWoP6jlnYrKU9AwSGWPTgwixnTUwKMBjpqAJQ=;
 b=dm1aaQ0jWjFsUR3PRzp/9xfLm39j7V8yUAjNjzakCR0nQDlQx5gKvsRKP8/rLgN0KdxZzS1BpCGoWFKA8NhRTR/BzpjqI+4ndpbF7pI8Q3VudoKukvRmIZKqpAlvHvuRWblsl2crSRvZFTx+yu0P/w+Hnmqt+/CK0C76skEg0Xv6i8Qkd4qG6GmqIKiZ66edjjzOfVYxe0uDDJjzxnMhBsIyB22rQZ0zv8gOWMXAh8TCpckDqcZ/5/13DFAh9ZIZE9dPMMG6rGEBD0dpA3rUJxEvvjP1CqIv3AmB+vSxn8dNKp1DaG1mbNNpckAo8xhzMo+lOZK1S2mJrXplaHUDew==
From: Mykyta Poturai <Mykyta_Poturai@epam.com>
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
CC: Mykyta Poturai <Mykyta_Poturai@epam.com>,
        Stefano Stabellini
	<sstabellini@kernel.org>,
        Julien Grall <julien@xen.org>,
        Bertrand Marquis
	<bertrand.marquis@arm.com>,
        Michal Orzel <michal.orzel@amd.com>,
        Volodymyr
 Babchuk <Volodymyr_Babchuk@epam.com>
Subject: [PATCH 1/2] arm: vgic: Add the ability to trigger MSIs from the
 Hypervisor
Thread-Topic: [PATCH 1/2] arm: vgic: Add the ability to trigger MSIs from the
 Hypervisor
Thread-Index: AQHaRtCyuPXvgfJKsESPEkC3vc4pGw==
Date: Sun, 14 Jan 2024 10:01:52 +0000
Message-ID: 
 <e109a4092d80a825256d26a8e56dbb5a2ae6d04e.1705066642.git.mykyta_poturai@epam.com>
References: <cover.1705066642.git.mykyta_poturai@epam.com>
In-Reply-To: <cover.1705066642.git.mykyta_poturai@epam.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: AS2PR03MB10110:EE_|AM9PR03MB7725:EE_
x-ms-office365-filtering-correlation-id: 1fd52959-07ed-4437-f492-08dc14e7d4d4
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam: BCL:0;
x-microsoft-antispam-message-info: 
 0eTX8mrXON6rqetiij/MU0Tt/ziBqJBqk34KFyMqVXbiGw04NlZGxPddDy6esNbvmv2qrFFzjhB25lMKaHJPyFy1yydC3P6kIecMcDmNvtCQfJPvk9ZQaqHM2rFfitRdP5Ezntr5zmYFLbPOCAbKDyVyXujLK9Z+Bobrij08XbYSLUIBmbVL/I3Ws1oOd++UU6yGXMbmsSEp0sJcCIi/dqwH8jcKpEf+SGDLFDJHE4hjV+HhEH0BdbuYnSdxwmRgbGP85+NnSQ2p8XN4/1QPV5knKosiJBW5TN4IeicuGnbBhkcbh+HLXV5WfmsukPEAG5rx8yx30HEYVxmZx8zQN/t0S2B9W1L+20wpzMV3r3zW8Eml4KzAMan7W2WgZgG5bjR7lP7nA1YRQtg+vHY0+WvCq3dFH9xNc/xxHaU67be2onFsIBSZZGNrwjfP46St/BmS188jDIQ88z9xQP27LsBLUsDKSs8GvuekQVpu+/BtAFDh8R4lRe91VAGdH8/McLfnA4oKs5zMW7g6fUJbjwOOQ3DbqxzZX7P+JLuER0K1aSO+lzaOfq4BrfEvUTsYSZU0k4ZndcTb9qT3uTM55mKa75RH/8p0QJKFQw3xE+T4KgQGVtDKeFqVdUuvmAtJ
x-forefront-antispam-report: 
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AS2PR03MB10110.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230031)(346002)(366004)(136003)(39860400002)(396003)(376002)(230922051799003)(186009)(64100799003)(451199024)(1800799012)(6512007)(316002)(8936002)(8676002)(91956017)(71200400001)(66476007)(64756008)(66446008)(54906003)(6916009)(6506007)(66556008)(478600001)(66946007)(6486002)(76116006)(2616005)(107886003)(83380400001)(26005)(5660300002)(4326008)(41300700001)(2906002)(38070700009)(36756003)(122000001)(38100700002)(86362001);DIR:OUT;SFP:1101;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0: 
 =?iso-8859-1?Q?ZVJ5LMZrRC2xBpJifxCotKkBUNgbqmP5md1clL3Onw5ocIb0ba9lznlBcs?=
 =?iso-8859-1?Q?11N9/eMkSvMRfyeIBv0cO5PX8okgyGlcEUd2iCMpJpceD4ETxeGglTlOWg?=
 =?iso-8859-1?Q?Sn+83uug0KqmY4x0XfrvYV26pj/XcvkG2eRiRkQMHFx0afBKBlqgQ6S1CU?=
 =?iso-8859-1?Q?wEox8yED84GOvP3cDyUk8M3w36PhKWR2caXX4RB6ebD/h5rhr075Y0ey2t?=
 =?iso-8859-1?Q?wQT5yumKBWlyP5gDTguBVhAbDJNpr2eM+DGUrUy8hSLwM9emQ5xWHzDr4x?=
 =?iso-8859-1?Q?6NbW34Yni7Q7YOs1fKfDIO+hce9yC6OyeT3kfXsiL9xdTcOGORbhTSgIaA?=
 =?iso-8859-1?Q?w81GdJMKC1SY3g1fxksS7+E2duLK94qZ3xhx+IO60cDKw9sHowssVgg0qU?=
 =?iso-8859-1?Q?BuGX5RYq+DBrvuLhaVs8bDu+KCthWcHN+6JgYWbv/CDXFRHFscHDS1eAaF?=
 =?iso-8859-1?Q?foxAoaWrh9uhQgOQJo7iqXu+kD9cYtIcRV/yw9nISusVxvKuxdFU/Yto9e?=
 =?iso-8859-1?Q?a69gt/AqTegY5Y5Y/W2nnx/gs4LW8ta4vQSdRv7/oRjLFbO21FyprOxfTO?=
 =?iso-8859-1?Q?Z81wygzoqAG7fO6shdvsA/MdnqPfMGLA0xlmXBClA8BVQ8p0ylgYH4wNni?=
 =?iso-8859-1?Q?fFfXed25ZbNvb8sjr3QWFmHF8tr9NsH4Z0tclwKIibhZzaI+MG3KKPw4b1?=
 =?iso-8859-1?Q?IwhMStycZeoWmJLx4u0wrhye0IBF3Fh4Tg+yWIYKyZvqygDN2igAkCKcfB?=
 =?iso-8859-1?Q?JIce9hOw8y8uAGAdLdJEtgsqitlxt1vakNty9cuX02DfzPoXUhFUm2EmRU?=
 =?iso-8859-1?Q?YZ8HjZtBUB2+wmO6JOwyWsSPQa3c7jbr39PvI9EX7qLx5NzRABLHH4CClN?=
 =?iso-8859-1?Q?XfYk0ipSWfvdXM6dadKLsf2FlmzNxiOK8DNztARo9y1woOgTWrZ/Z4UvsD?=
 =?iso-8859-1?Q?H2zfiYv2IRnHZ6jtDbMjqTGrWfoQTuXcPT0dhqfzgX/4MB5k7XAKG9yjqn?=
 =?iso-8859-1?Q?qQOsqrbZsUDCItztzoQsOHo95/HCQBqgN+YnGOZCFNbbR/2lqsmc7zqF1i?=
 =?iso-8859-1?Q?yTayGByiX/Gvb9PAO3GO/EzlQjca/ANZLHnEpwg98MG5gDZA4NmDx02TUj?=
 =?iso-8859-1?Q?uPGHCU+fFuXSS6GHGc/x0X7GVDFcaax3xPXLcr6KKjYtVhz9XANStjNOLt?=
 =?iso-8859-1?Q?SB9ZojC+rnUDUUiGUCsrh8gJlOfleTt7zTlm0LJsIbj2jKCB8riDwL21Ev?=
 =?iso-8859-1?Q?x6dlKJ2C3y3Sbb/c3xJ7HV7WZdAA04EznsVVjwMxIhJQuGnSxiqk2nsHSN?=
 =?iso-8859-1?Q?JSFabT2aTBvCMTXDJ2lVq6qL4m2l6PNKW0V/P/otBS8dGCRJenN5nZZ5Tt?=
 =?iso-8859-1?Q?iOxHNMNIPaUFgX8aSAvdqpehXuHq2Ip5cS6HJflyvL6REb6MxZ2UfEqmWO?=
 =?iso-8859-1?Q?5+j3+VTzzUXu3N55waMrMsCqHPL0C70p1gvs72jZNREFZPUtopqEUdwWY/?=
 =?iso-8859-1?Q?Q5VRqY8ctg35GwHO8hAmCubNQx2lo49JsBJkAyrr5E8nk1JKdq4oRK+q1/?=
 =?iso-8859-1?Q?u3kE9LdXb5Cohh+Jzh/ZkzOBEkXZBossTPy2LyCSQyfo/8kTVXwpsCgONp?=
 =?iso-8859-1?Q?ohOIEaph+kD86wPj4DOvtcGrbYxcmr1Xv0KhS//3453UcCV/h3vPamHw?=
 =?iso-8859-1?Q?=3D=3D?=
Content-Type: text/plain; charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-OriginatorOrg: epam.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: AS2PR03MB10110.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 1fd52959-07ed-4437-f492-08dc14e7d4d4
X-MS-Exchange-CrossTenant-originalarrivaltime: 14 Jan 2024 10:01:52.0356
 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: b41b72d0-4e9f-4c26-8a69-f949f367c91d
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: tp5mkFgci2DsqNasRSLr1t0NHI3IG//GRCWB0lMcQOogjKgbLEjp0zGAtKDNiH6Qpo3hbhc5KYRKFLpS2Zy53g==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM9PR03MB7725
X-Proofpoint-GUID: 4ySXo3ywPZaZD4uk7qmNZ_U2SSVffQo9
X-Proofpoint-ORIG-GUID: 4ySXo3ywPZaZD4uk7qmNZ_U2SSVffQo9
X-Proofpoint-Virus-Version: vendor=baseguard
 engine=ICAP:2.0.272,Aquarius:18.0.997,Hydra:6.0.619,FMLib:17.11.176.26
 definitions=2023-12-09_02,2023-12-07_01,2023-05-22_02
X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 lowpriorityscore=0
 impostorscore=0 mlxlogscore=946 suspectscore=0 adultscore=0 clxscore=1015
 bulkscore=0 malwarescore=0 mlxscore=0 phishscore=0 spamscore=0
 priorityscore=1501 classifier=spam adjust=0 reason=mlx scancount=1
 engine=8.19.0-2311290000 definitions=main-2401140078

Add the vgic_its_trigger_msi() function to the vgic interface. This
function allows to inject MSIs from the Hypervisor to the guest.
Which is useful for userspace PCI backend drivers.

Signed-off-by: Mykyta Poturai <mykyta_poturai@epam.com>
---
 xen/arch/arm/include/asm/vgic.h | 11 +++++++++++
 xen/arch/arm/vgic-v3-its.c      | 35 +++++++++++++++++++++++++++++++++
 2 files changed, 46 insertions(+)

diff --git a/xen/arch/arm/include/asm/vgic.h b/xen/arch/arm/include/asm/vgi=
c.h
index 922779ce14..4695743848 100644
--- a/xen/arch/arm/include/asm/vgic.h
+++ b/xen/arch/arm/include/asm/vgic.h
@@ -317,6 +317,17 @@ extern bool vgic_migrate_irq(struct vcpu *old, struct =
vcpu *new, unsigned int ir
 extern void vgic_check_inflight_irqs_pending(struct domain *d, struct vcpu=
 *v,
                                              unsigned int rank, uint32_t r=
);
=20
+#ifdef CONFIG_HAS_ITS
+int vgic_its_trigger_msi(struct domain *d, paddr_t doorbell_address,
+                                u32 devid, u32 eventid);
+#else
+static inline int vgic_its_trigger_msi(struct domain *d, paddr_t doorbell_=
address,
+                                u32 devid, u32 eventid)
+{
+    return -EOPNOTSUPP;
+}
+#endif /* CONFIG_HAS_ITS */
+
 #endif /* !CONFIG_NEW_VGIC */
=20
 /*** Common VGIC functions used by Xen arch code ****/
diff --git a/xen/arch/arm/vgic-v3-its.c b/xen/arch/arm/vgic-v3-its.c
index 70b5aeb822..683a378f6e 100644
--- a/xen/arch/arm/vgic-v3-its.c
+++ b/xen/arch/arm/vgic-v3-its.c
@@ -1484,6 +1484,41 @@ static int vgic_v3_its_init_virtual(struct domain *d=
, paddr_t guest_addr,
     return 0;
 }
=20
+int vgic_its_trigger_msi(struct domain *d, paddr_t doorbell_address,
+                                u32 devid, u32 eventid)
+{
+    struct vcpu *vcpu;
+    struct virt_its *pos, *temp;
+    struct virt_its *its =3D NULL;
+    uint32_t vlpi;
+    bool ret;
+
+    list_for_each_entry_safe( pos, temp, &d->arch.vgic.vits_list, vits_lis=
t )
+    {
+        if ( pos->doorbell_address =3D=3D doorbell_address )
+        {
+            its =3D pos;
+            break;
+        }
+    }
+
+    if ( !its )
+        return -EINVAL;
+
+    spin_lock(&its->its_lock);
+    ret =3D read_itte(its, devid, eventid, &vcpu, &vlpi);
+    spin_unlock(&its->its_lock);
+    if ( !ret )
+        return -1;
+
+    if ( vlpi =3D=3D INVALID_LPI )
+        return -1;
+
+    vgic_vcpu_inject_lpi(its->d, vlpi);
+
+    return 0;
+}
+
 unsigned int vgic_v3_its_count(const struct domain *d)
 {
     struct host_its *hw_its;
--=20
2.34.1


From xen-devel-bounces@lists.xenproject.org Sun Jan 14 12:22:34 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sun, 14 Jan 2024 12:22:34 +0000
Received: from list by lists.xenproject.org with outflank-mailman.667113.1038133 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rOzVD-00007C-VB; Sun, 14 Jan 2024 12:22:11 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 667113.1038133; Sun, 14 Jan 2024 12:22:11 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rOzVD-000075-SF; Sun, 14 Jan 2024 12:22:11 +0000
Received: by outflank-mailman (input) for mailman id 667113;
 Sun, 14 Jan 2024 12:22:10 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=rPIO=IY=gmail.com=shentey@srs-se1.protection.inumbo.net>)
 id 1rOzVC-00006z-NU
 for xen-devel@lists.xenproject.org; Sun, 14 Jan 2024 12:22:10 +0000
Received: from mail-lf1-x12f.google.com (mail-lf1-x12f.google.com
 [2a00:1450:4864:20::12f])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 8944d22d-b2d7-11ee-9b0f-b553b5be7939;
 Sun, 14 Jan 2024 13:22:08 +0100 (CET)
Received: by mail-lf1-x12f.google.com with SMTP id
 2adb3069b0e04-50eaaf2c7deso8800177e87.2
 for <xen-devel@lists.xenproject.org>; Sun, 14 Jan 2024 04:22:08 -0800 (PST)
Received: from [127.0.0.1] (dynamic-077-183-249-018.77.183.pool.telefonica.de.
 [77.183.249.18]) by smtp.gmail.com with ESMTPSA id
 d14-20020a170906c20e00b00a298e2f6b3csm3998496ejz.213.2024.01.14.04.22.05
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Sun, 14 Jan 2024 04:22:06 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 8944d22d-b2d7-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1705234928; x=1705839728; darn=lists.xenproject.org;
        h=content-transfer-encoding:mime-version:message-id:references
         :in-reply-to:subject:cc:to:from:date:from:to:cc:subject:date
         :message-id:reply-to;
        bh=N4WLy0Jn5L0bRVN3nquFYC5ivaTwn2STN2BPox24LN8=;
        b=kvm6ZrrK7SJK4IQwSP14cWbXYv76LwQK6i1802bREt6NrJOAy9J0g2WvLZFB/2hvTS
         Nk9tqMusG1/QBJoMqoYvTBuJBXeDRswhlrffA/QxgN0zUJvrm2uJcCPOv4Yj79LHYEqr
         335aYewkojUwys+4AKWL1KjNogjt6qczH/voLzPrXe45SgixU2TJtoMZIf8FQ9lBzqTh
         O/Y/qGYsic2fXE4IHKeWJ6hLy3aNKkpS7XJ6+eM486gNuSIcPi9Viy5DZfZJlqOVuohc
         m81hqkY7/cxBw+655DA19aLSFne8CSEXyrSTX8nUgh+3QTSSiainJozasyC2h0cKHNiX
         KvJg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705234928; x=1705839728;
        h=content-transfer-encoding:mime-version:message-id:references
         :in-reply-to:subject:cc:to:from:date:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to;
        bh=N4WLy0Jn5L0bRVN3nquFYC5ivaTwn2STN2BPox24LN8=;
        b=ZviKduUr37Ymy0+49FB4IubJS2uyhqAfO7Koo6n6MCFGftDnaezITBb8g2X59LgLlk
         VVB6M+zh/4nIkiv258HmN8HA1NEWZIEDRspyxigLTYd6XMo6Ni50NHGubdiP7tCeLDbO
         fmVVi1ruOWCwtH5E/zm9S6oKZRVnoFGwRB5DSeuLMD/Y/3bOs4zAyMJ+8XnLdrvZqHn6
         i8o6dMohXscfi5ti/OJtCKpWrUljSKzhY57hI/zkUAzJuk0wUDPo5xlWhYCn6iBx8fhd
         we5uO1irbnwXDTzN/98gfWhSKslLU4KzUjPkGGtPpkWJoGYLn9/Q26Auld8JOdCM3Wcs
         ys9g==
X-Gm-Message-State: AOJu0YxkuTjRmlPqbyht/PE9/02UHEfB1Ejhuv8w20x1jSy0FhRsDjlo
	6p1IpUqgFKjqv6Y5gVeaO8E=
X-Google-Smtp-Source: AGHT+IGffXqbfcTbgvg/M/WX4Vodo0S9K719nbuFypYeXJPw/acIGJ2/C85yJ2piMEImH0Z207xfCg==
X-Received: by 2002:a05:6512:39d5:b0:50e:aa46:2a95 with SMTP id k21-20020a05651239d500b0050eaa462a95mr2216499lfu.18.1705234927908;
        Sun, 14 Jan 2024 04:22:07 -0800 (PST)
Date: Sun, 14 Jan 2024 12:21:59 +0000
From: Bernhard Beschow <shentey@gmail.com>
To: qemu-devel@nongnu.org
CC: Chuck Zmudzinski <brchuckz@aol.com>, Paolo Bonzini <pbonzini@redhat.com>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org,
 David Woodhouse <dwmw2@infradead.org>, Eduardo Habkost <eduardo@habkost.net>,
 "Michael S. Tsirkin" <mst@redhat.com>,
 Marcel Apfelbaum <marcel.apfelbaum@gmail.com>, Paul Durrant <paul@xen.org>,
 Richard Henderson <richard.henderson@linaro.org>,
 Anthony PERARD <anthony.perard@citrix.com>
Subject: =?US-ASCII?Q?Re=3A_=5BPATCH=5D_hw/i386/pc=5Fpiix=3A_Make_piix=5Fintx=5Fr?= =?US-ASCII?Q?outing=5Fnotifier=5Fxen=28=29_more_device_independent?=
In-Reply-To: <20240107231623.5282-1-shentey@gmail.com>
References: <20240107231623.5282-1-shentey@gmail.com>
Message-ID: <B404ABCE-E6B5-4716-BA60-3CEE74B72701@gmail.com>
MIME-Version: 1.0
Content-Type: text/plain;
 charset=utf-8
Content-Transfer-Encoding: quoted-printable



Am 7=2E Januar 2024 23:16:23 UTC schrieb Bernhard Beschow <shentey@gmail=
=2Ecom>:
>This is a follow-up on commit 89965db43cce "hw/isa/piix3: Avoid Xen-speci=
fic
>variant of piix3_write_config()" which introduced
>piix_intx_routing_notifier_xen()=2E This function is implemented in board=
 code but
>accesses the PCI configuration space of the PIIX ISA function to determin=
e the
>PCI interrupt routes=2E Avoid this by reusing pci_device_route_intx_to_ir=
q() which
>makes piix_intx_routing_notifier_xen() more device-agnostic=2E
>
>One remaining improvement would be making piix_intx_routing_notifier_xen(=
)
>agnostic towards the number of PCI interrupt routes and move it to xen-hv=
m=2E
>This might be useful for possible Q35 Xen efforts but remains a future ex=
ercise
>for now=2E
>
>Signed-off-by: Bernhard Beschow <shentey@gmail=2Ecom>

Hi Michael,

could you tag this, too? Or do we need another R-b?

Best regards,
Bernhard

>---
> hw/i386/pc_piix=2Ec | 9 +++------
> 1 file changed, 3 insertions(+), 6 deletions(-)
>
>diff --git a/hw/i386/pc_piix=2Ec b/hw/i386/pc_piix=2Ec
>index 042c13cdbc=2E=2Eabfcfe4d2b 100644
>--- a/hw/i386/pc_piix=2Ec
>+++ b/hw/i386/pc_piix=2Ec
>@@ -92,13 +92,10 @@ static void piix_intx_routing_notifier_xen(PCIDevice =
*dev)
> {
>     int i;
>=20
>-    /* Scan for updates to PCI link routes (0x60-0x63)=2E */
>+    /* Scan for updates to PCI link routes=2E */
>     for (i =3D 0; i < PIIX_NUM_PIRQS; i++) {
>-        uint8_t v =3D dev->config_read(dev, PIIX_PIRQCA + i, 1);
>-        if (v & 0x80) {
>-            v =3D 0;
>-        }
>-        v &=3D 0xf;
>+        const PCIINTxRoute route =3D pci_device_route_intx_to_irq(dev, i=
);
>+        const uint8_t v =3D route=2Emode =3D=3D PCI_INTX_ENABLED ? route=
=2Eirq : 0;
>         xen_set_pci_link_route(i, v);
>     }
> }


From xen-devel-bounces@lists.xenproject.org Sun Jan 14 12:25:57 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sun, 14 Jan 2024 12:25:57 +0000
Received: from list by lists.xenproject.org with outflank-mailman.667115.1038144 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rOzYq-0000gJ-Ec; Sun, 14 Jan 2024 12:25:56 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 667115.1038144; Sun, 14 Jan 2024 12:25:56 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rOzYq-0000gC-At; Sun, 14 Jan 2024 12:25:56 +0000
Received: by outflank-mailman (input) for mailman id 667115;
 Sun, 14 Jan 2024 12:25:55 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=mcEk=IY=redhat.com=mst@srs-se1.protection.inumbo.net>)
 id 1rOzYp-0000g6-Aq
 for xen-devel@lists.xenproject.org; Sun, 14 Jan 2024 12:25:55 +0000
Received: from us-smtp-delivery-124.mimecast.com
 (us-smtp-delivery-124.mimecast.com [170.10.133.124])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 0f153fc9-b2d8-11ee-98f1-6d05b1d4d9a1;
 Sun, 14 Jan 2024 13:25:54 +0100 (CET)
Received: from mail-wr1-f71.google.com (mail-wr1-f71.google.com
 [209.85.221.71]) by relay.mimecast.com with ESMTP with STARTTLS
 (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id
 us-mta-84-tce3z_0eOMmRkmou_Mpliw-1; Sun, 14 Jan 2024 07:25:46 -0500
Received: by mail-wr1-f71.google.com with SMTP id
 ffacd0b85a97d-3368abe10c5so5175702f8f.0
 for <xen-devel@lists.xenproject.org>; Sun, 14 Jan 2024 04:25:46 -0800 (PST)
Received: from redhat.com ([2.52.131.87]) by smtp.gmail.com with ESMTPSA id
 v16-20020adfa1d0000000b003379d475928sm3925626wrv.18.2024.01.14.04.25.42
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Sun, 14 Jan 2024 04:25:43 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 0f153fc9-b2d8-11ee-98f1-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
	s=mimecast20190719; t=1705235152;
	h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
	 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
	 in-reply-to:in-reply-to:references:references;
	bh=tAkYy2esf7Pd2G69r02QQxGJJf+2ehPe/4HNxSRnO8Q=;
	b=GuZten3p7IF8CHOvqANyZR5pm7ztQvl6plpYTkyRWjzWz1GXZHbRs2ZZAxLHvmnq8nwDCk
	GZMpnZLwYLgRGMUvmc3I4yD1ST23FRFtGkdYvrV8UOk0Ot33HpX6tAjHj/MumeiviLwipG
	3AbcnR33eSq+COBDrHN5TQvWSIqJ1c0=
X-MC-Unique: tce3z_0eOMmRkmou_Mpliw-1
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705235145; x=1705839945;
        h=in-reply-to:content-disposition:mime-version:references:message-id
         :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to;
        bh=tAkYy2esf7Pd2G69r02QQxGJJf+2ehPe/4HNxSRnO8Q=;
        b=g6Uiuo38qauIKwjvgSJUBQpYX6cYtxKrxY3YLUx6S8fu8npEzKd4+cXN6M56cnw19T
         7tD6m5YUUP8v9COPGkCvYUOBfnEK2fWHW38Tn3CxF6kGek2Bl+Domrr0fuKr4xtGSRj4
         q1qlGE2Nyuc5bYQ9Y4/yUqpu/LjpB3oxxuwcGsOuCrnYDccjaLYL2azZ59J/p9r0uFEt
         qG1l3BVodYCfFFBC1S8IzV8iF814/Jh/6fH+zD3Ou3VlC1gQJs6GFIJOcGtGzIwYV+NJ
         EaT+uqbK4qnwlRjQCu0DwTTzqF+MbOnwilmC5kkBEUauaERxvcXbzZBWMwsPKGcduJO0
         3AMg==
X-Gm-Message-State: AOJu0YzHuYQextH5H6KKxw8l6fmeWhnPlXOMNRLTnRJec6WQFPZ4PUqX
	a9WDbkoNwB6cUXewrfQDVkc7fbvdnU9o3eRivW/BcT11+ppibWXBoU5PeYWvU2b5d4Qxwr8JlO8
	lmRQTz5U/s41lv9G7wD4OLMlFH0D5WnO5D1w=
X-Received: by 2002:a5d:6283:0:b0:337:4fa6:2306 with SMTP id k3-20020a5d6283000000b003374fa62306mr1473321wru.158.1705235145122;
        Sun, 14 Jan 2024 04:25:45 -0800 (PST)
X-Google-Smtp-Source: AGHT+IGcs6wlsSgQGa8meTzrVry5X6WKhXJy+/DmR/kQta9Vn0vh4yGyp1UV+e1xl3ZaOJo+HPKNTQ==
X-Received: by 2002:a5d:6283:0:b0:337:4fa6:2306 with SMTP id k3-20020a5d6283000000b003374fa62306mr1473311wru.158.1705235144683;
        Sun, 14 Jan 2024 04:25:44 -0800 (PST)
Date: Sun, 14 Jan 2024 07:25:40 -0500
From: "Michael S. Tsirkin" <mst@redhat.com>
To: Bernhard Beschow <shentey@gmail.com>
Cc: qemu-devel@nongnu.org, Chuck Zmudzinski <brchuckz@aol.com>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	xen-devel@lists.xenproject.org,
	David Woodhouse <dwmw2@infradead.org>,
	Eduardo Habkost <eduardo@habkost.net>,
	Marcel Apfelbaum <marcel.apfelbaum@gmail.com>,
	Paul Durrant <paul@xen.org>,
	Richard Henderson <richard.henderson@linaro.org>,
	Anthony PERARD <anthony.perard@citrix.com>
Subject: Re: [PATCH] hw/i386/pc_piix: Make piix_intx_routing_notifier_xen()
 more device independent
Message-ID: <20240114072529-mutt-send-email-mst@kernel.org>
References: <20240107231623.5282-1-shentey@gmail.com>
 <B404ABCE-E6B5-4716-BA60-3CEE74B72701@gmail.com>
MIME-Version: 1.0
In-Reply-To: <B404ABCE-E6B5-4716-BA60-3CEE74B72701@gmail.com>
X-Mimecast-Spam-Score: 0
X-Mimecast-Originator: redhat.com
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline

On Sun, Jan 14, 2024 at 12:21:59PM +0000, Bernhard Beschow wrote:
> 
> 
> Am 7. Januar 2024 23:16:23 UTC schrieb Bernhard Beschow <shentey@gmail.com>:
> >This is a follow-up on commit 89965db43cce "hw/isa/piix3: Avoid Xen-specific
> >variant of piix3_write_config()" which introduced
> >piix_intx_routing_notifier_xen(). This function is implemented in board code but
> >accesses the PCI configuration space of the PIIX ISA function to determine the
> >PCI interrupt routes. Avoid this by reusing pci_device_route_intx_to_irq() which
> >makes piix_intx_routing_notifier_xen() more device-agnostic.
> >
> >One remaining improvement would be making piix_intx_routing_notifier_xen()
> >agnostic towards the number of PCI interrupt routes and move it to xen-hvm.
> >This might be useful for possible Q35 Xen efforts but remains a future exercise
> >for now.
> >
> >Signed-off-by: Bernhard Beschow <shentey@gmail.com>
> 
> Hi Michael,
> 
> could you tag this, too? Or do we need another R-b?
> 
> Best regards,
> Bernhard

tagged, too.

> >---
> > hw/i386/pc_piix.c | 9 +++------
> > 1 file changed, 3 insertions(+), 6 deletions(-)
> >
> >diff --git a/hw/i386/pc_piix.c b/hw/i386/pc_piix.c
> >index 042c13cdbc..abfcfe4d2b 100644
> >--- a/hw/i386/pc_piix.c
> >+++ b/hw/i386/pc_piix.c
> >@@ -92,13 +92,10 @@ static void piix_intx_routing_notifier_xen(PCIDevice *dev)
> > {
> >     int i;
> > 
> >-    /* Scan for updates to PCI link routes (0x60-0x63). */
> >+    /* Scan for updates to PCI link routes. */
> >     for (i = 0; i < PIIX_NUM_PIRQS; i++) {
> >-        uint8_t v = dev->config_read(dev, PIIX_PIRQCA + i, 1);
> >-        if (v & 0x80) {
> >-            v = 0;
> >-        }
> >-        v &= 0xf;
> >+        const PCIINTxRoute route = pci_device_route_intx_to_irq(dev, i);
> >+        const uint8_t v = route.mode == PCI_INTX_ENABLED ? route.irq : 0;
> >         xen_set_pci_link_route(i, v);
> >     }
> > }



From xen-devel-bounces@lists.xenproject.org Sun Jan 14 13:08:46 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sun, 14 Jan 2024 13:08:46 +0000
Received: from list by lists.xenproject.org with outflank-mailman.667121.1038154 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rP0E7-0006ku-Hy; Sun, 14 Jan 2024 13:08:35 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 667121.1038154; Sun, 14 Jan 2024 13:08:35 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rP0E7-0006kn-F5; Sun, 14 Jan 2024 13:08:35 +0000
Received: by outflank-mailman (input) for mailman id 667121;
 Sun, 14 Jan 2024 13:08:34 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rP0E6-0006kd-4t; Sun, 14 Jan 2024 13:08:34 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rP0E5-0005cm-Q9; Sun, 14 Jan 2024 13:08:33 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rP0E5-00032G-Dv; Sun, 14 Jan 2024 13:08:33 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rP0E5-0001Cd-D6; Sun, 14 Jan 2024 13:08:33 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=gKmzk8H4y72E6AHBsfnKT9Y3PdWUb250CGGx+VKvk/E=; b=p1E72Z9CHmzplmOPhfv3afWlz3
	bGPI9z++FSA2AhIeh5UajP8EH3XV2gNTAQh9KwyZo27y6wlia03wKUk5I7FZyLZpCGH0au6ELNTVi
	aMA+qQjcwCqOc6Savnv84s080VDn6t3N2EofwdIb1sLcpSwwIcLKxeZOMYiKUqc1eX90=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184342-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [linux-linus test] 184342: regressions - FAIL
X-Osstest-Failures:
    linux-linus:test-arm64-arm64-xl-xsm:debian-install:fail:regression
    linux-linus:test-arm64-arm64-xl-credit1:debian-install:fail:regression
    linux-linus:test-arm64-arm64-xl:debian-install:fail:regression
    linux-linus:test-arm64-arm64-xl-thunderx:debian-install:fail:regression
    linux-linus:test-arm64-arm64-xl-credit2:debian-install:fail:regression
    linux-linus:test-arm64-arm64-libvirt-xsm:debian-install:fail:regression
    linux-linus:test-armhf-armhf-libvirt:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    linux-linus:test-amd64-amd64-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    linux-linus:test-amd64-amd64-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-raw:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-qcow2:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-qemuu-nested-amd:debian-hvm-install/l1/l2:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-xsm:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-multivcpu:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-multivcpu:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-arndale:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-arndale:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-rtds:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-rtds:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit1:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit1:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit2:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit2:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-libvirt-raw:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-vhd:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-vhd:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-vhd:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-vhd:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-qcow2:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-qcow2:migrate-support-check:fail:nonblocking
X-Osstest-Versions-This:
    linux=052d534373b7ed33712a63d5e17b2b6cdbce84fd
X-Osstest-Versions-That:
    linux=0dd3ee31125508cd67f7e7172247f05b7fd1753a
From: osstest service owner <osstest-admin@xenproject.org>
Date: Sun, 14 Jan 2024 13:08:33 +0000

flight 184342 linux-linus real [real]
flight 184344 linux-linus real-retest [real]
http://logs.test-lab.xenproject.org/osstest/logs/184342/
http://logs.test-lab.xenproject.org/osstest/logs/184344/

Regressions :-(

Tests which did not succeed and are blocking,
including tests which could not be run:
 test-arm64-arm64-xl-xsm      12 debian-install           fail REGR. vs. 184270
 test-arm64-arm64-xl-credit1  12 debian-install           fail REGR. vs. 184270
 test-arm64-arm64-xl          12 debian-install           fail REGR. vs. 184270
 test-arm64-arm64-xl-thunderx 12 debian-install           fail REGR. vs. 184270
 test-arm64-arm64-xl-credit2  12 debian-install           fail REGR. vs. 184270
 test-arm64-arm64-libvirt-xsm 12 debian-install           fail REGR. vs. 184270

Tests which did not succeed, but are not blocking:
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 184270
 test-amd64-amd64-xl-qemut-win7-amd64 19 guest-stop            fail like 184270
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 184270
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 184270
 test-armhf-armhf-libvirt-raw 15 saverestore-support-check    fail  like 184270
 test-amd64-amd64-xl-qemut-ws16-amd64 19 guest-stop            fail like 184270
 test-armhf-armhf-libvirt-qcow2 15 saverestore-support-check   fail like 184270
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 184270
 test-amd64-amd64-libvirt     15 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-multivcpu 15 migrate-support-check        fail  never pass
 test-armhf-armhf-xl-multivcpu 16 saverestore-support-check    fail  never pass
 test-armhf-armhf-xl-arndale  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-arndale  16 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-armhf-armhf-libvirt     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-rtds     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-rtds     16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-credit1  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit1  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-credit2  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit2  16 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-raw 14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 15 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-vhd      14 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-vhd      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-raw 14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      15 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-qcow2 14 migrate-support-check        fail never pass
 test-armhf-armhf-libvirt-qcow2 14 migrate-support-check        fail never pass

version targeted for testing:
 linux                052d534373b7ed33712a63d5e17b2b6cdbce84fd
baseline version:
 linux                0dd3ee31125508cd67f7e7172247f05b7fd1753a

Last test of basis   184270  2024-01-07 20:42:19 Z    6 days
Failing since        184283  2024-01-08 20:10:43 Z    5 days    9 attempts
Testing same since   184338  2024-01-13 05:40:28 Z    1 days    2 attempts

------------------------------------------------------------
1701 people touched revisions under test,
not listing them all

jobs:
 build-amd64-xsm                                              pass    
 build-arm64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64                                                  pass    
 build-arm64                                                  pass    
 build-armhf                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-arm64-libvirt                                          pass    
 build-armhf-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-pvops                                            pass    
 build-arm64-pvops                                            pass    
 build-armhf-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-amd64-amd64-xl                                          pass    
 test-amd64-coresched-amd64-xl                                pass    
 test-arm64-arm64-xl                                          fail    
 test-armhf-armhf-xl                                          pass    
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm           pass    
 test-amd64-amd64-xl-qemut-stubdom-debianhvm-amd64-xsm        pass    
 test-amd64-amd64-xl-qemut-debianhvm-i386-xsm                 pass    
 test-amd64-amd64-xl-qemuu-debianhvm-i386-xsm                 pass    
 test-amd64-amd64-libvirt-xsm                                 pass    
 test-arm64-arm64-libvirt-xsm                                 fail    
 test-amd64-amd64-xl-xsm                                      pass    
 test-arm64-arm64-xl-xsm                                      fail    
 test-amd64-amd64-qemuu-nested-amd                            fail    
 test-amd64-amd64-xl-pvhv2-amd                                pass    
 test-amd64-amd64-dom0pvh-xl-amd                              pass    
 test-amd64-amd64-xl-qemut-debianhvm-amd64                    pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64                    pass    
 test-amd64-amd64-freebsd11-amd64                             pass    
 test-amd64-amd64-freebsd12-amd64                             pass    
 test-amd64-amd64-xl-qemuu-ovmf-amd64                         pass    
 test-amd64-amd64-xl-qemut-win7-amd64                         fail    
 test-amd64-amd64-xl-qemuu-win7-amd64                         fail    
 test-amd64-amd64-xl-qemut-ws16-amd64                         fail    
 test-amd64-amd64-xl-qemuu-ws16-amd64                         fail    
 test-armhf-armhf-xl-arndale                                  pass    
 test-amd64-amd64-examine-bios                                pass    
 test-amd64-amd64-xl-credit1                                  pass    
 test-arm64-arm64-xl-credit1                                  fail    
 test-armhf-armhf-xl-credit1                                  pass    
 test-amd64-amd64-xl-credit2                                  pass    
 test-arm64-arm64-xl-credit2                                  fail    
 test-armhf-armhf-xl-credit2                                  pass    
 test-amd64-amd64-xl-qemuu-dmrestrict-amd64-dmrestrict        pass    
 test-amd64-amd64-examine                                     pass    
 test-arm64-arm64-examine                                     pass    
 test-armhf-armhf-examine                                     pass    
 test-amd64-amd64-qemuu-nested-intel                          pass    
 test-amd64-amd64-xl-pvhv2-intel                              pass    
 test-amd64-amd64-dom0pvh-xl-intel                            pass    
 test-amd64-amd64-libvirt                                     pass    
 test-armhf-armhf-libvirt                                     pass    
 test-amd64-amd64-xl-multivcpu                                pass    
 test-armhf-armhf-xl-multivcpu                                pass    
 test-amd64-amd64-pair                                        pass    
 test-amd64-amd64-libvirt-pair                                pass    
 test-amd64-amd64-xl-pvshim                                   pass    
 test-amd64-amd64-pygrub                                      pass    
 test-amd64-amd64-libvirt-qcow2                               pass    
 test-armhf-armhf-libvirt-qcow2                               pass    
 test-amd64-amd64-libvirt-raw                                 pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-armhf-armhf-libvirt-raw                                 pass    
 test-amd64-amd64-xl-rtds                                     pass    
 test-armhf-armhf-xl-rtds                                     pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64-shadow             pass    
 test-amd64-amd64-xl-shadow                                   pass    
 test-arm64-arm64-xl-thunderx                                 fail    
 test-amd64-amd64-examine-uefi                                pass    
 test-amd64-amd64-xl-vhd                                      pass    
 test-arm64-arm64-xl-vhd                                      pass    
 test-armhf-armhf-xl-vhd                                      pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Not pushing.

(No revision log; it would be 204832 lines long.)


From xen-devel-bounces@lists.xenproject.org Sun Jan 14 14:39:05 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sun, 14 Jan 2024 14:39:05 +0000
Received: from list by lists.xenproject.org with outflank-mailman.667127.1038164 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rP1dT-0001Ws-1M; Sun, 14 Jan 2024 14:38:51 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 667127.1038164; Sun, 14 Jan 2024 14:38:51 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rP1dS-0001Wl-U1; Sun, 14 Jan 2024 14:38:50 +0000
Received: by outflank-mailman (input) for mailman id 667127;
 Sun, 14 Jan 2024 14:38:49 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rP1dR-0001Wa-KC; Sun, 14 Jan 2024 14:38:49 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rP1dR-0007KL-5Y; Sun, 14 Jan 2024 14:38:49 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rP1dQ-0005Ij-4A; Sun, 14 Jan 2024 14:38:48 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rP1dQ-0001I6-3c; Sun, 14 Jan 2024 14:38:48 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=DJGx34DTn5BgODsNMrQRykvxXq5Cia9LQz/o2yLH7Rs=; b=qoZMyeq/Oz2558a/7rGS/BjxS/
	pBur5dueWrD9hOspDLunmOV0HpROTxJ6KSH4WcWZC80Mz4mEmvC2FGi1L3rixNARsQK549bgU+VyS
	0LBKamV9zXPVa8e8CziaUH3soLAkIXtew1FdSOjhlIt7uA4kqWFnW/pm4KjxHlP+Dbqo=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184343-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [xen-unstable test] 184343: tolerable FAIL
X-Osstest-Failures:
    xen-unstable:test-amd64-amd64-xl-qemut-debianhvm-i386-xsm:debian-hvm-install:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-amd64-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-raw:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-amd64-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-qcow2:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-amd64-qemuu-nested-amd:debian-hvm-install/l1/l2:fail:nonblocking
    xen-unstable:test-amd64-amd64-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-i386-libvirt-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-libvirt:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-pvshim:guest-start:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-thunderx:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-xsm:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-thunderx:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-credit2:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-credit2:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-libvirt-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-libvirt-xsm:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-credit1:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-credit1:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit1:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit1:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-multivcpu:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-multivcpu:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit2:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit2:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-libvirt-raw:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt-vhd:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-libvirt-raw:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-libvirt-raw:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-vhd:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-vhd:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-raw:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-vhd:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-vhd:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-rtds:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-rtds:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-arndale:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-arndale:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-qcow2:migrate-support-check:fail:nonblocking
X-Osstest-Versions-This:
    xen=1ec3fe1f664fa837daf31e9fa8938f6109464f28
X-Osstest-Versions-That:
    xen=1ec3fe1f664fa837daf31e9fa8938f6109464f28
From: osstest service owner <osstest-admin@xenproject.org>
Date: Sun, 14 Jan 2024 14:38:48 +0000

flight 184343 xen-unstable real [real]
http://logs.test-lab.xenproject.org/osstest/logs/184343/

Failures :-/ but no regressions.

Tests which did not succeed, but are not blocking:
 test-amd64-amd64-xl-qemut-debianhvm-i386-xsm 12 debian-hvm-install fail like 184335
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 184340
 test-amd64-amd64-xl-qemut-win7-amd64 19 guest-stop            fail like 184340
 test-amd64-i386-xl-qemuu-win7-amd64 19 guest-stop             fail like 184340
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 184340
 test-amd64-i386-xl-qemut-ws16-amd64 19 guest-stop             fail like 184340
 test-armhf-armhf-libvirt-raw 15 saverestore-support-check    fail  like 184340
 test-amd64-i386-xl-qemut-win7-amd64 19 guest-stop             fail like 184340
 test-amd64-amd64-xl-qemut-ws16-amd64 19 guest-stop            fail like 184340
 test-armhf-armhf-libvirt-qcow2 15 saverestore-support-check   fail like 184340
 test-amd64-i386-xl-qemuu-ws16-amd64 19 guest-stop             fail like 184340
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 184340
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 184340
 test-amd64-i386-libvirt-xsm  15 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-amd64-i386-libvirt      15 migrate-support-check        fail   never pass
 test-amd64-i386-xl-pvshim    14 guest-start                  fail   never pass
 test-arm64-arm64-xl          15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-xsm      15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-thunderx 15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl          16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-xsm      16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-thunderx 16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-credit2  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit2  16 saverestore-support-check    fail   never pass
 test-arm64-arm64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-xsm 16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-credit1  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit1  16 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt     15 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-armhf-armhf-xl-credit1  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit1  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-multivcpu 15 migrate-support-check        fail  never pass
 test-armhf-armhf-xl-multivcpu 16 saverestore-support-check    fail  never pass
 test-armhf-armhf-libvirt     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-credit2  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit2  16 saverestore-support-check    fail   never pass
 test-amd64-i386-libvirt-raw  14 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt-vhd 14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 15 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-vhd      14 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-vhd      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-raw 14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-rtds     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-rtds     16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-arndale  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-arndale  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-qcow2 14 migrate-support-check        fail never pass

version targeted for testing:
 xen                  1ec3fe1f664fa837daf31e9fa8938f6109464f28
baseline version:
 xen                  1ec3fe1f664fa837daf31e9fa8938f6109464f28

Last test of basis   184343  2024-01-14 05:10:10 Z    0 days
Testing same since                          (not found)         0 attempts

jobs:
 build-amd64-xsm                                              pass    
 build-arm64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64-xtf                                              pass    
 build-amd64                                                  pass    
 build-arm64                                                  pass    
 build-armhf                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-arm64-libvirt                                          pass    
 build-armhf-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-prev                                             pass    
 build-i386-prev                                              pass    
 build-amd64-pvops                                            pass    
 build-arm64-pvops                                            pass    
 build-armhf-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-xtf-amd64-amd64-1                                       pass    
 test-xtf-amd64-amd64-2                                       pass    
 test-xtf-amd64-amd64-3                                       pass    
 test-xtf-amd64-amd64-4                                       pass    
 test-xtf-amd64-amd64-5                                       pass    
 test-amd64-amd64-xl                                          pass    
 test-amd64-coresched-amd64-xl                                pass    
 test-arm64-arm64-xl                                          pass    
 test-armhf-armhf-xl                                          pass    
 test-amd64-i386-xl                                           pass    
 test-amd64-coresched-i386-xl                                 pass    
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm           pass    
 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm            pass    
 test-amd64-amd64-xl-qemut-stubdom-debianhvm-amd64-xsm        pass    
 test-amd64-i386-xl-qemut-stubdom-debianhvm-amd64-xsm         pass    
 test-amd64-amd64-xl-qemut-debianhvm-i386-xsm                 fail    
 test-amd64-i386-xl-qemut-debianhvm-i386-xsm                  pass    
 test-amd64-amd64-xl-qemuu-debianhvm-i386-xsm                 pass    
 test-amd64-i386-xl-qemuu-debianhvm-i386-xsm                  pass    
 test-amd64-amd64-libvirt-xsm                                 pass    
 test-arm64-arm64-libvirt-xsm                                 pass    
 test-amd64-i386-libvirt-xsm                                  pass    
 test-amd64-amd64-xl-xsm                                      pass    
 test-arm64-arm64-xl-xsm                                      pass    
 test-amd64-i386-xl-xsm                                       pass    
 test-amd64-amd64-qemuu-nested-amd                            fail    
 test-amd64-amd64-xl-pvhv2-amd                                pass    
 test-amd64-i386-qemut-rhel6hvm-amd                           pass    
 test-amd64-i386-qemuu-rhel6hvm-amd                           pass    
 test-amd64-amd64-dom0pvh-xl-amd                              pass    
 test-amd64-amd64-xl-qemut-debianhvm-amd64                    pass    
 test-amd64-i386-xl-qemut-debianhvm-amd64                     pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64                    pass    
 test-amd64-i386-xl-qemuu-debianhvm-amd64                     pass    
 test-amd64-i386-freebsd10-amd64                              pass    
 test-amd64-amd64-qemuu-freebsd11-amd64                       pass    
 test-amd64-amd64-qemuu-freebsd12-amd64                       pass    
 test-amd64-amd64-xl-qemuu-ovmf-amd64                         pass    
 test-amd64-i386-xl-qemuu-ovmf-amd64                          pass    
 test-amd64-amd64-xl-qemut-win7-amd64                         fail    
 test-amd64-i386-xl-qemut-win7-amd64                          fail    
 test-amd64-amd64-xl-qemuu-win7-amd64                         fail    
 test-amd64-i386-xl-qemuu-win7-amd64                          fail    
 test-amd64-amd64-xl-qemut-ws16-amd64                         fail    
 test-amd64-i386-xl-qemut-ws16-amd64                          fail    
 test-amd64-amd64-xl-qemuu-ws16-amd64                         fail    
 test-amd64-i386-xl-qemuu-ws16-amd64                          fail    
 test-armhf-armhf-xl-arndale                                  pass    
 test-amd64-amd64-examine-bios                                pass    
 test-amd64-i386-examine-bios                                 pass    
 test-amd64-amd64-xl-credit1                                  pass    
 test-arm64-arm64-xl-credit1                                  pass    
 test-armhf-armhf-xl-credit1                                  pass    
 test-amd64-amd64-xl-credit2                                  pass    
 test-arm64-arm64-xl-credit2                                  pass    
 test-armhf-armhf-xl-credit2                                  pass    
 test-amd64-amd64-xl-qemuu-dmrestrict-amd64-dmrestrict        pass    
 test-amd64-i386-xl-qemuu-dmrestrict-amd64-dmrestrict         pass    
 test-amd64-amd64-examine                                     pass    
 test-arm64-arm64-examine                                     pass    
 test-armhf-armhf-examine                                     pass    
 test-amd64-i386-examine                                      pass    
 test-amd64-i386-freebsd10-i386                               pass    
 test-amd64-amd64-qemuu-nested-intel                          pass    
 test-amd64-amd64-xl-pvhv2-intel                              pass    
 test-amd64-i386-qemut-rhel6hvm-intel                         pass    
 test-amd64-i386-qemuu-rhel6hvm-intel                         pass    
 test-amd64-amd64-dom0pvh-xl-intel                            pass    
 test-amd64-amd64-libvirt                                     pass    
 test-armhf-armhf-libvirt                                     pass    
 test-amd64-i386-libvirt                                      pass    
 test-amd64-amd64-livepatch                                   pass    
 test-amd64-i386-livepatch                                    pass    
 test-amd64-amd64-migrupgrade                                 pass    
 test-amd64-i386-migrupgrade                                  pass    
 test-amd64-amd64-xl-multivcpu                                pass    
 test-armhf-armhf-xl-multivcpu                                pass    
 test-amd64-amd64-pair                                        pass    
 test-amd64-i386-pair                                         pass    
 test-amd64-amd64-libvirt-pair                                pass    
 test-amd64-i386-libvirt-pair                                 pass    
 test-amd64-amd64-xl-pvshim                                   pass    
 test-amd64-i386-xl-pvshim                                    fail    
 test-amd64-amd64-pygrub                                      pass    
 test-armhf-armhf-libvirt-qcow2                               pass    
 test-amd64-amd64-xl-qcow2                                    pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-armhf-armhf-libvirt-raw                                 pass    
 test-amd64-i386-libvirt-raw                                  pass    
 test-amd64-amd64-xl-rtds                                     pass    
 test-armhf-armhf-xl-rtds                                     pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64-shadow             pass    
 test-amd64-i386-xl-qemuu-debianhvm-amd64-shadow              pass    
 test-amd64-amd64-xl-shadow                                   pass    
 test-amd64-i386-xl-shadow                                    pass    
 test-arm64-arm64-xl-thunderx                                 pass    
 test-amd64-amd64-examine-uefi                                pass    
 test-amd64-i386-examine-uefi                                 pass    
 test-amd64-amd64-libvirt-vhd                                 pass    
 test-arm64-arm64-xl-vhd                                      pass    
 test-armhf-armhf-xl-vhd                                      pass    
 test-amd64-i386-xl-vhd                                       pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Published tested tree is already up to date.



From xen-devel-bounces@lists.xenproject.org Sun Jan 14 19:22:45 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sun, 14 Jan 2024 19:22:45 +0000
Received: from list by lists.xenproject.org with outflank-mailman.667169.1038189 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rP63y-0001Qb-C1; Sun, 14 Jan 2024 19:22:30 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 667169.1038189; Sun, 14 Jan 2024 19:22:30 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rP63y-0001QU-9U; Sun, 14 Jan 2024 19:22:30 +0000
Received: by outflank-mailman (input) for mailman id 667169;
 Sun, 14 Jan 2024 19:22:28 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>) id 1rP63w-0001QM-Hh
 for xen-devel@lists.xenproject.org; Sun, 14 Jan 2024 19:22:28 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rP63v-0004Z8-Ti; Sun, 14 Jan 2024 19:22:27 +0000
Received: from gw1.octic.net ([88.97.20.152] helo=[10.0.1.102])
 by xenbits.xenproject.org with esmtpsa
 (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rP63v-0003QL-N8; Sun, 14 Jan 2024 19:22:27 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
	s=20200302mail; h=Content-Transfer-Encoding:Content-Type:In-Reply-To:From:
	References:Cc:To:Subject:MIME-Version:Date:Message-ID;
	bh=9cJjGSaVGnf1vbKh8q2IJoaYMuhKMVd7+zrJ3BMtR9o=; b=wNeheuFLWDk8E9g9SS22F/ZOfz
	FokX/w0k2ae7XvzLGLym2ErBNU4J/0fMWMyd6KT/8xU+WP9+xazTPz6AHCzdLsNGvRk9Z9CJMGyiQ
	kS2Yd7ol1OH/7H+su1XUCHc0mLsquNWqv1Lkc+Wa2vIjN4IMebyD1/hV57qaPUCB5hTA=;
Message-ID: <aa064f8f-d30e-4ac1-9239-daba5a806794@xen.org>
Date: Sun, 14 Jan 2024 19:22:25 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v5 13/13] xen/arm: add cache coloring support for Xen
To: Carlo Nonato <carlo.nonato@minervasys.tech>
Cc: xen-devel@lists.xenproject.org,
 Stefano Stabellini <sstabellini@kernel.org>,
 Bertrand Marquis <bertrand.marquis@arm.com>,
 Michal Orzel <michal.orzel@amd.com>,
 Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
 Marco Solieri <marco.solieri@minervasys.tech>
References: <20240102095138.17933-1-carlo.nonato@minervasys.tech>
 <20240102095138.17933-14-carlo.nonato@minervasys.tech>
 <4553cc26-deb5-42ed-87b9-6cba2a5099eb@xen.org>
 <CAG+AhRXHfGJksqUrPXoHqNze+D654jJV0kVYBZaPLYwccdEz5Q@mail.gmail.com>
Content-Language: en-GB
From: Julien Grall <julien@xen.org>
In-Reply-To: <CAG+AhRXHfGJksqUrPXoHqNze+D654jJV0kVYBZaPLYwccdEz5Q@mail.gmail.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

Hi Carlo,

On 13/01/2024 17:07, Carlo Nonato wrote:
>>> diff --git a/xen/arch/arm/mmu/setup.c b/xen/arch/arm/mmu/setup.c
>>> index 37b6d230ad..66b674eeab 100644
>>> --- a/xen/arch/arm/mmu/setup.c
>>> +++ b/xen/arch/arm/mmu/setup.c
>>> @@ -7,6 +7,7 @@
>>>
>>>    #include <xen/init.h>
>>>    #include <xen/libfdt/libfdt.h>
>>> +#include <xen/llc-coloring.h>
>>>    #include <xen/sizes.h>
>>>    #include <xen/vmap.h>
>>>
>>> @@ -39,6 +40,10 @@ DEFINE_PER_CPU(lpae_t *, xen_pgtable);
>>>    static DEFINE_PAGE_TABLE(cpu0_pgtable);
>>>    #endif
>>>
>>> +#ifdef CONFIG_LLC_COLORING
>>> +static DEFINE_PAGE_TABLE(xen_colored_temp);
>>> +#endif
>>
>> Does this actually need to be static?
> 
> Why it shouldn't be static? I don't want to access it from another file.

My question was whether this could be allocated dynamically (or possibly 
re-use an existing set of page tables). In particular with the fact that 
we will need more than 1 page to cover the whole Xen binary.

Looking at the use xen_colored_temp. This is pretty much the same as 
xen_map[i] but with different permissions. So what you could do is 
preparing xen_map[i] with very permissive permissions (i.e. RWX) and 
then enforcing the permission once the TTBR has been switched.

Something like that (tested without cache coloring):

diff --git a/xen/arch/arm/mmu/setup.c b/xen/arch/arm/mmu/setup.c
index a3a263a5d94b..f7ac5cabf92c 100644
--- a/xen/arch/arm/mmu/setup.c
+++ b/xen/arch/arm/mmu/setup.c
@@ -306,7 +306,11 @@ void __init setup_pagetables(unsigned long 
boot_phys_offset, paddr_t xen_paddr)
      p[0].pt.table = 1;
      p[0].pt.xn = 0;

-    /* Break up the Xen mapping into pages and protect them separately. */
+    /*
+     * Break up the Xen mapping into pages. We will protect the
+     * permissions later in order to allow xen_xenmap to be used for
+     * when relocating Xen.
+     */
      for ( i = 0; i < XEN_NR_ENTRIES(3); i++ )
      {
          vaddr_t va = XEN_VIRT_START + (i << PAGE_SHIFT);
@@ -315,13 +319,7 @@ void __init setup_pagetables(unsigned long 
boot_phys_offset, paddr_t xen_paddr)
              break;
          pte = pte_of_xenaddr(va);
          pte.pt.table = 1; /* third level mappings always have this bit 
set */
-        if ( is_kernel_text(va) || is_kernel_inittext(va) )
-        {
-            pte.pt.xn = 0;
-            pte.pt.ro = 1;
-        }
-        if ( is_kernel_rodata(va) )
-            pte.pt.ro = 1;
+        pte.pt.xn = 0; /* Permissions will be enforced later. Allow 
execution */
          xen_xenmap[i] = pte;
      }

@@ -352,6 +350,37 @@ void __init setup_pagetables(unsigned long 
boot_phys_offset, paddr_t xen_paddr)

      switch_ttbr(ttbr);

+    /* Protect Xen */
+    for ( i = 0; i < XEN_NR_ENTRIES(3); i++ )
+    {
+        vaddr_t va = XEN_VIRT_START + (i << PAGE_SHIFT);
+        lpae_t *entry = xen_xenmap + i;
+
+        if ( !is_kernel(va) )
+            break;
+
+        pte = read_atomic(entry);
+
+        if ( is_kernel_text(va) || is_kernel_inittext(va) )
+        {
+            pte.pt.xn = 0;
+            pte.pt.ro = 1;
+        } else if ( is_kernel_rodata(va) ) {
+            pte.pt.ro = 1;
+            pte.pt.xn = 1;
+        } else {
+            pte.pt.xn = 1;
+            pte.pt.ro = 0;
+        }
+
+        write_pte(entry, pte);
+    }
+
+    /*
+     * We modified live page-tables. Ensure the TBLs are invalidated
+     * before setting enforcing the WnX permissions.
+     */
+    flush_xen_tlb_local();
      xen_pt_enforce_wnx();

  #ifdef CONFIG_ARM_32

> 
>> And if yes, then is it necessary
>> to be kept the boot as completed?
> 
> Nope. __initdata?

Yes.

[...]

>> It feels wrong to keep the full Xen (even temporarily) just for CPU
>> bring-up. But I don't think this is necessary. The secondary CPUs
>> outside of code in head.S, secondary CPU should only need to access to
>> init_ttbr and smp_cpu_up.
>>
>> The last one is already questionable because the CPU should never wait
>> in Xen. Instead they would be held somewhere else. But that's separate
>> issue.
>>
>> Anyway, if you move init_ttbr and smp_cpu_up in the identity mapped
>> area, then you will not need to copy of Xen. Instead, secondary CPUs
>> should be able to jump to the new Xen directly.
> 
> So to recap:
> 
> 1) How to move variables in the identity map area?
> __attribute__((section(".text.idmap"))) triggers some warning when assembling.
> 
> Warning: setting incorrect section attributes for .text.idmap
> 
> 2) If I'm not mistaken the identity mapping is read only (PAGE_HYPERVISOR_RX)
> and forcing it to be PAGE_HYPERVISOR_RW breaks something else.
The warning above has nothing to do with the attributes used in the 
page-tables. It is telling you have multiple .text.idmap section with 
different attributes.

There are a couple of ways to solve it:
    1. Define init_ttbr in head.S
    2. Use a different section (e.g. .data.idmap) and add it in the linker.

Note that this means the init_ttbr cannot be written directly. But you 
can solve this problem by re-mapping the address.

> 
> 3) To access the identity mapping area I would need some accessor that takes
> an address and returns it + phys_offset, or is there a better way to do it?

I am not sure I understand what you mean. Can you clarify?


> 
> 4) Maybe I misinterpreted the above comment, but I would still need to copy
> Xen in the physically colored space. What I can drop is the temporary virtual
> space used to access the "old" variables.

Correct.

> 
> 5) The identity mapping at runtime, at the moment, is pointing to the new
> colored space because of how pte_of_xenaddr is implemented. This means that if
> I want to use it to access the old variables, I would need to keep it a real
> identity mapping, right?

Why would you need to access the old variables?

>> This will also avoid to spread cache coloring changes in every Xen
>> components.
> 
> Maybe I'm missing something, but even with this identity mapping "shortcut" I
> would still need to touch the same amount of files, for example when init_ttbr
> or smp_up_cpu are accessed, they would need to use identity virtual addresses.

My point was not related to the amount of files you are touching. But 
the number of ...

> 
>>> +    if ( llc_coloring_enabled )

... if ( llc_coloring_enabled ) you sprinkle in Xen. I would really like 
to reduce to the strict minimum. Also...

[...]

>>> @@ -751,8 +899,13 @@ void asmlinkage __init start_xen(unsigned long boot_phys_offset,
>>>        {
>>>            if ( !llc_coloring_init() )
>>>                panic("Xen LLC coloring support: setup failed\n");
>>> +        xen_bootmodule->size = xen_colored_map_size(_end - _start);
>>> +        xen_bootmodule->start = get_xen_paddr(xen_bootmodule->size);
>>
>> As you update xen_bootmodule, wouldn't this mean that the non-relocated >> Xen would could be passed to the bootallocator?

... as I wrote ealier your current approach seems to have a flaw. As you 
overwrite xen_bootmodule->{start, size}. setup_mm() will end up to add 
the old Xen region to the boot allocator. This is before any secondary 
CPUs are booted up.

IOW, the allocator may provide some memory from the old Xen and nothing 
good will happen from that.

The only way to solve it is to add another module. So the memory is 
skipped by setup_mm(). However see below.

> 
> Yes that should be memory that in the end would not be needed so it must
> return to the boot-allocator (if that's what you mean). But how to do
> that?

You can't really discard the old temporary Xen. This may work today 
because we don't support CPU hotplug or suspend/resume. But there was 
some series on the ML to enable it and I don't see any reason why 
someone would not want to use the features with cache coloring.

So the old temporary Xen would have to be kept around forever. This is 
up to 8MB of memory wasted.

The right approach is to have the secondary CPU boot code (including the 
variables it is using) fitting in the same page (or possibly multiple so 
long this is small and physically contiguous). With that it doesn't 
matter where is the trampoline, it could stay at the old place, but we 
would only waste a few pages rather than up 8MB as it is today.

Cheers,

-- 
Julien Grall


From xen-devel-bounces@lists.xenproject.org Sun Jan 14 21:45:52 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sun, 14 Jan 2024 21:45:52 +0000
Received: from list by lists.xenproject.org with outflank-mailman.667174.1038200 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rP8IT-0000lf-AY; Sun, 14 Jan 2024 21:45:37 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 667174.1038200; Sun, 14 Jan 2024 21:45:37 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rP8IT-0000lY-6r; Sun, 14 Jan 2024 21:45:37 +0000
Received: by outflank-mailman (input) for mailman id 667174;
 Sun, 14 Jan 2024 21:45:36 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rP8IS-0000lO-Gf; Sun, 14 Jan 2024 21:45:36 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rP8IS-0007OB-7S; Sun, 14 Jan 2024 21:45:36 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rP8IR-0001P2-Qn; Sun, 14 Jan 2024 21:45:35 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rP8IR-0000o7-QT; Sun, 14 Jan 2024 21:45:35 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=97ZGEjxU81WNl8QWYqQU/0xEKZz0q8ld9USKLX/EFm4=; b=JuAogs4IQQGXPwO5rJNtwUU19G
	8clQ+fKoZkeD75sdHTxHU3U+fkc6jnVBw6iwI8I/lFSrBK3Ba4Yc92b5ud9JImxFUxXatNspxxvD4
	c4ZJg/4r2/sq9THBGsGtVABeJ52sIdVfTc6drfEz12aPwtWXSVGz9iSzRv5nmuKxQDc4=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184345-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [linux-linus test] 184345: regressions - FAIL
X-Osstest-Failures:
    linux-linus:test-arm64-arm64-xl-credit1:debian-install:fail:regression
    linux-linus:test-arm64-arm64-xl-xsm:debian-install:fail:regression
    linux-linus:test-arm64-arm64-xl:debian-install:fail:regression
    linux-linus:test-arm64-arm64-xl-thunderx:debian-install:fail:regression
    linux-linus:test-arm64-arm64-xl-credit2:debian-install:fail:regression
    linux-linus:test-arm64-arm64-libvirt-xsm:debian-install:fail:regression
    linux-linus:test-amd64-amd64-xl-qemuu-debianhvm-i386-xsm:debian-hvm-install:fail:heisenbug
    linux-linus:test-armhf-armhf-libvirt:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    linux-linus:test-amd64-amd64-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    linux-linus:test-amd64-amd64-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-raw:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-qcow2:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-qemuu-nested-amd:debian-hvm-install/l1/l2:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-xsm:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-multivcpu:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-multivcpu:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-arndale:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-arndale:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-rtds:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-rtds:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit1:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit1:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit2:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit2:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-libvirt-raw:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-vhd:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-vhd:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-vhd:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-vhd:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-qcow2:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-qcow2:migrate-support-check:fail:nonblocking
X-Osstest-Versions-This:
    linux=052d534373b7ed33712a63d5e17b2b6cdbce84fd
X-Osstest-Versions-That:
    linux=0dd3ee31125508cd67f7e7172247f05b7fd1753a
From: osstest service owner <osstest-admin@xenproject.org>
Date: Sun, 14 Jan 2024 21:45:35 +0000

flight 184345 linux-linus real [real]
http://logs.test-lab.xenproject.org/osstest/logs/184345/

Regressions :-(

Tests which did not succeed and are blocking,
including tests which could not be run:
 test-arm64-arm64-xl-credit1  12 debian-install           fail REGR. vs. 184270
 test-arm64-arm64-xl-xsm      12 debian-install           fail REGR. vs. 184270
 test-arm64-arm64-xl          12 debian-install           fail REGR. vs. 184270
 test-arm64-arm64-xl-thunderx 12 debian-install           fail REGR. vs. 184270
 test-arm64-arm64-xl-credit2  12 debian-install           fail REGR. vs. 184270
 test-arm64-arm64-libvirt-xsm 12 debian-install           fail REGR. vs. 184270

Tests which are failing intermittently (not blocking):
 test-amd64-amd64-xl-qemuu-debianhvm-i386-xsm 12 debian-hvm-install fail pass in 184342

Tests which did not succeed, but are not blocking:
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 184270
 test-amd64-amd64-xl-qemut-win7-amd64 19 guest-stop            fail like 184270
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 184270
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 184270
 test-armhf-armhf-libvirt-raw 15 saverestore-support-check    fail  like 184270
 test-amd64-amd64-xl-qemut-ws16-amd64 19 guest-stop            fail like 184270
 test-armhf-armhf-libvirt-qcow2 15 saverestore-support-check   fail like 184270
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 184270
 test-amd64-amd64-libvirt     15 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-multivcpu 15 migrate-support-check        fail  never pass
 test-armhf-armhf-xl-multivcpu 16 saverestore-support-check    fail  never pass
 test-armhf-armhf-xl-arndale  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-arndale  16 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-armhf-armhf-libvirt     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-rtds     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-rtds     16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-credit1  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit1  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-credit2  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit2  16 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-raw 14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 15 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-vhd      14 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-vhd      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-raw 14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      15 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-qcow2 14 migrate-support-check        fail never pass
 test-armhf-armhf-libvirt-qcow2 14 migrate-support-check        fail never pass

version targeted for testing:
 linux                052d534373b7ed33712a63d5e17b2b6cdbce84fd
baseline version:
 linux                0dd3ee31125508cd67f7e7172247f05b7fd1753a

Last test of basis   184270  2024-01-07 20:42:19 Z    7 days
Failing since        184283  2024-01-08 20:10:43 Z    6 days   10 attempts
Testing same since   184338  2024-01-13 05:40:28 Z    1 days    3 attempts

------------------------------------------------------------
1701 people touched revisions under test,
not listing them all

jobs:
 build-amd64-xsm                                              pass    
 build-arm64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64                                                  pass    
 build-arm64                                                  pass    
 build-armhf                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-arm64-libvirt                                          pass    
 build-armhf-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-pvops                                            pass    
 build-arm64-pvops                                            pass    
 build-armhf-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-amd64-amd64-xl                                          pass    
 test-amd64-coresched-amd64-xl                                pass    
 test-arm64-arm64-xl                                          fail    
 test-armhf-armhf-xl                                          pass    
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm           pass    
 test-amd64-amd64-xl-qemut-stubdom-debianhvm-amd64-xsm        pass    
 test-amd64-amd64-xl-qemut-debianhvm-i386-xsm                 pass    
 test-amd64-amd64-xl-qemuu-debianhvm-i386-xsm                 fail    
 test-amd64-amd64-libvirt-xsm                                 pass    
 test-arm64-arm64-libvirt-xsm                                 fail    
 test-amd64-amd64-xl-xsm                                      pass    
 test-arm64-arm64-xl-xsm                                      fail    
 test-amd64-amd64-qemuu-nested-amd                            fail    
 test-amd64-amd64-xl-pvhv2-amd                                pass    
 test-amd64-amd64-dom0pvh-xl-amd                              pass    
 test-amd64-amd64-xl-qemut-debianhvm-amd64                    pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64                    pass    
 test-amd64-amd64-freebsd11-amd64                             pass    
 test-amd64-amd64-freebsd12-amd64                             pass    
 test-amd64-amd64-xl-qemuu-ovmf-amd64                         pass    
 test-amd64-amd64-xl-qemut-win7-amd64                         fail    
 test-amd64-amd64-xl-qemuu-win7-amd64                         fail    
 test-amd64-amd64-xl-qemut-ws16-amd64                         fail    
 test-amd64-amd64-xl-qemuu-ws16-amd64                         fail    
 test-armhf-armhf-xl-arndale                                  pass    
 test-amd64-amd64-examine-bios                                pass    
 test-amd64-amd64-xl-credit1                                  pass    
 test-arm64-arm64-xl-credit1                                  fail    
 test-armhf-armhf-xl-credit1                                  pass    
 test-amd64-amd64-xl-credit2                                  pass    
 test-arm64-arm64-xl-credit2                                  fail    
 test-armhf-armhf-xl-credit2                                  pass    
 test-amd64-amd64-xl-qemuu-dmrestrict-amd64-dmrestrict        pass    
 test-amd64-amd64-examine                                     pass    
 test-arm64-arm64-examine                                     pass    
 test-armhf-armhf-examine                                     pass    
 test-amd64-amd64-qemuu-nested-intel                          pass    
 test-amd64-amd64-xl-pvhv2-intel                              pass    
 test-amd64-amd64-dom0pvh-xl-intel                            pass    
 test-amd64-amd64-libvirt                                     pass    
 test-armhf-armhf-libvirt                                     pass    
 test-amd64-amd64-xl-multivcpu                                pass    
 test-armhf-armhf-xl-multivcpu                                pass    
 test-amd64-amd64-pair                                        pass    
 test-amd64-amd64-libvirt-pair                                pass    
 test-amd64-amd64-xl-pvshim                                   pass    
 test-amd64-amd64-pygrub                                      pass    
 test-amd64-amd64-libvirt-qcow2                               pass    
 test-armhf-armhf-libvirt-qcow2                               pass    
 test-amd64-amd64-libvirt-raw                                 pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-armhf-armhf-libvirt-raw                                 pass    
 test-amd64-amd64-xl-rtds                                     pass    
 test-armhf-armhf-xl-rtds                                     pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64-shadow             pass    
 test-amd64-amd64-xl-shadow                                   pass    
 test-arm64-arm64-xl-thunderx                                 fail    
 test-amd64-amd64-examine-uefi                                pass    
 test-amd64-amd64-xl-vhd                                      pass    
 test-arm64-arm64-xl-vhd                                      pass    
 test-armhf-armhf-xl-vhd                                      pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Not pushing.

(No revision log; it would be 204832 lines long.)


From xen-devel-bounces@lists.xenproject.org Sun Jan 14 21:54:42 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sun, 14 Jan 2024 21:54:42 +0000
Received: from list by lists.xenproject.org with outflank-mailman.667180.1038209 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rP8RB-0002Jn-5d; Sun, 14 Jan 2024 21:54:37 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 667180.1038209; Sun, 14 Jan 2024 21:54:37 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rP8RB-0002Jg-31; Sun, 14 Jan 2024 21:54:37 +0000
Received: by outflank-mailman (input) for mailman id 667180;
 Sun, 14 Jan 2024 21:54:36 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=saPc=IY=onlineschubla.de=paul@srs-se1.protection.inumbo.net>)
 id 1rP8RA-0002Ja-4r
 for xen-devel@lists.xenproject.org; Sun, 14 Jan 2024 21:54:36 +0000
Received: from mo4-p00-ob.smtp.rzone.de (mo4-p00-ob.smtp.rzone.de
 [81.169.146.217]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 803ebdc5-b327-11ee-98f1-6d05b1d4d9a1;
 Sun, 14 Jan 2024 22:54:33 +0100 (CET)
Received: from mail.onlineschubla.de
 by smtp.strato.de (RZmta 49.10.2 DYNA|AUTH)
 with ESMTPSA id ybe60200ELsWadA
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256 bits))
 (Client did not present a certificate)
 for <xen-devel@lists.xenproject.org>;
 Sun, 14 Jan 2024 22:54:32 +0100 (CET)
Received: from localhost (localhost [127.0.0.1])
 by mail.onlineschubla.de (Postfix) with ESMTP id 0BE332113D
 for <xen-devel@lists.xenproject.org>; Sun, 14 Jan 2024 22:54:32 +0100 (CET)
Received: from mail.onlineschubla.de ([127.0.0.1])
 by localhost (mail.onlineschubla.de [127.0.0.1]) (amavis, port 10024)
 with ESMTP id NJUZ_ytrl1Wa for <xen-devel@lists.xenproject.org>;
 Sun, 14 Jan 2024 22:54:31 +0100 (CET)
Received: from [10.0.0.105] (unknown [10.0.0.105])
 by mail.onlineschubla.de (Postfix) with ESMTPA id 46CE720138
 for <xen-devel@lists.xenproject.org>; Sun, 14 Jan 2024 22:54:31 +0100 (CET)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 803ebdc5-b327-11ee-98f1-6d05b1d4d9a1
ARC-Seal: i=1; a=rsa-sha256; t=1705269272; cv=none;
    d=strato.com; s=strato-dkim-0002;
    b=jC1tIjdA4Ehj0eKlDjBRbGbgm4yxACeiKxluYgyufVy5SQFIuV1fP83+52PbvHTtDR
    n0rl1PgKQ9DTZLHGKBhy6URvY/DI4nDbjT7LddLnQFvcZS+SB6U9igYl7k7o6MLlLG/6
    7alVH+YK2zl6QCbcS3HIMsFmSBX8qQDFBjqUkD1iem06fgXL88JOnkU+elTH1AmB3TK1
    MTBl+uxCY83jOesSh8NtyWirCG5D32hRL+HjlJ54bxRis9GSzL95JpK0LLmAT728U4F4
    E7/rVemkfzwItcPLGQe1jzPpSeq7JPJyMFKqyYpolDNAXIdDIm6yubaC4hY86xNayBE3
    L35A==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; t=1705269272;
    s=strato-dkim-0002; d=strato.com;
    h=In-Reply-To:References:To:From:Subject:Date:Message-ID:Cc:Date:From:
    Subject:Sender;
    bh=IomIQKftQa+rHgQpWxw99vJ5CCr+nsXsLy+YkV2At9E=;
    b=FAEy2KI2hPfui5CkwKr16nmNcHe9vitDmmmw697mM7d9+fsw2uDPDIwNRH9AuR8wxG
    5ImVh2lVuXxSxNh8HoEB+5SG9G1vRc3JDYqzJDHhMDWnH10Msk+BypAMql2qEmrJmS/o
    LKvrUl/4OGEZOJrcwGmdzhnyjau3H2bclnYJGXwwKFB0b/CR9lCgEj36gw7BFMENX19m
    5PoVrFLhhNGOMX257ud4i7zND67V9ZRLHMeL7fx4sYn+DivSB02T//jto3ZtxmF4yXxk
    aV6vTXzAwBj84rETGUeFTusPOTCobvdCdBpadnq+bP8t7qhy1QOCTbY+KqRDp71okHsF
    ITyw==
ARC-Authentication-Results: i=1; strato.com;
    arc=none;
    dkim=none
X-RZG-CLASS-ID: mo00
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; t=1705269272;
    s=strato-dkim-0002; d=onlineschubla.de;
    h=In-Reply-To:References:To:From:Subject:Date:Message-ID:Cc:Date:From:
    Subject:Sender;
    bh=IomIQKftQa+rHgQpWxw99vJ5CCr+nsXsLy+YkV2At9E=;
    b=pbxeS07+Uct47pA4Q3oA4A8gMcho4TQNiOXuAJ9ETsznismhjymWrOjF4VSei7Hu2s
    6IrOy/hdW+l+HIUIqQEXUylVF+hjo2gfoznOByYjalfDsmDEVLvuGxeEdYHyC4V6agDL
    0f66DMqGi9abCRg/gqIqEZKxOyyaPVY4PbI/FUqrPH99G14qIXcY0J7r1etic+5cu2PO
    mIJTMmdDDkXkSeqiJSCr+J0IvBhpd9lYtlgdgTXzJK7Cq4HKxbV+1jT9BEwLXHgrW65O
    lpzNIOTrHZpS7JMWYyAWhgYyv3sTKQIjJCvTnDnK3mhRlAEjWrlhZ80PBrpaLnQ4Z3JV
    snOg==
DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; t=1705269272;
    s=strato-dkim-0003; d=onlineschubla.de;
    h=In-Reply-To:References:To:From:Subject:Date:Message-ID:Cc:Date:From:
    Subject:Sender;
    bh=IomIQKftQa+rHgQpWxw99vJ5CCr+nsXsLy+YkV2At9E=;
    b=ooCPY8mH9VlmH1t0vv2MWx3frJUm7NHVygtwwC/8Ayyn6ouLoiUHc2EeU7zLomUzn7
    kuvKZu4I/LPxXBoh1nDA==
X-RZG-AUTH: ":PG0ReWCndfO3rCSML4AvNaDxJ7WJyilEI/NMX3IPsStZLbcZC9mNZx0oO96cCwabxEcCkdw/gi5R5Q=="
X-Virus-Scanned: Debian amavis at onlineschubla.de
Message-ID: <f8f39239-ea95-4fc7-9abe-6ca005eb02d2@onlineschubla.de>
Date: Sun, 14 Jan 2024 22:54:24 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: Xen 4.18rc/ARM64 on Raspberry Pi 4B: Traffic in DomU crashing
 Dom0 when using VLANs
Content-Language: en-US
From: Paul Leiber <paul@onlineschubla.de>
To: xen-devel@lists.xenproject.org
References: <838ff75f-1352-4d3c-9bc1-c7a57c828231@onlineschubla.de>
 <4cddfd89-f195-4a50-a14d-b86121414e56@onlineschubla.de>
In-Reply-To: <4cddfd89-f195-4a50-a14d-b86121414e56@onlineschubla.de>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit



Am 22.10.2023 um 07:42 schrieb Paul Leiber:
> Am 13.10.2023 um 20:56 schrieb Paul Leiber:
>> Hi Xen developers list,
>>
>> TL;DR:
>> ------
>>
>> Causing certain web server traffic on a secondary VLAN on Raspberry Pi 
>> under vanilla Debian/UEFI in combination with Xen leads to complete 
>> system reboot (watchdog triggering for Dom0). Other strange things are 
>> happening.
>>
>> Description:
>> ----------
>>
>> I recently set up Xen (self compiled, Version 4.18-rc) on a Raspberry 
>> Pi 4B (on vanilla Debian Bookworm, UEFI boot mode). Until some time 
>> ago, everything worked well with Dom0, one DomU and one bridge.
>>
>> Then I wanted to actually make use of the virtualization and started 
>> to set up a second Debian Bookworm DomU (using xen-create-image) for 
>> monitoring my systems with zabbix (a webserver based system monitoring 
>> solution). The bridge used for this setup was the device bridging the 
>> hardware NIC. I installed zabbix, set it up, and everything went well, 
>> I could access the web interface without any problem.
>>
>> Then I set up VLANs (initally using VLAN numbers 1 and 2) to separate 
>> network traffic between the DomUs. I made the existing device bridge 
>> VLAN 1 (bridge 1) and created a secondary device for bridging VLAN 2 
>> (bridge 2). Using only bridge 1 / VLAN 1 everything works well, I can 
>> access the zabbix web interface without any noticeable issue. After 
>> switching the zabbix DomU to VLAN 2 / bridge 2, everything seemingly 
>> keeps on working well, I can ping different devices in my network from 
>> the zabbix DomU and vice versa, I can ssh into the machine.
>>
>> However, as soon as I remotely access the zabbix web interface, the 
>> complete system (DomUs and Dom0) becomes unresponsive and reboots 
>> after some time (usually seconds, sometimes 1-2 minutes). The reboot 
>> is reliably reproducable.
>>
>> I didn't see any error message in any log (zabbix, DomU syslog, Dom0 
>> syslog) except for the following lines immediately before the system 
>> reboots on the Xen serial console:
>>
>> (XEN) Watchdog timer fired for domain 0
>> (XEN) Hardware Dom0 shutdown: watchdog rebooting machine
>>
>> As soon as I change the bridge to bridge 1 (with or without VLAN 
>> setup), the web interface is accessible again after booting the zabbix 
>> DomU, no reboots.
>>
>> So I assume that causing specific traffic on the virtual NIC when 
>> using a VLAN setup with more than one VLAN under Xen makes the Dom0 
>> system hard crash. Of course, there might be other causes that I'm not 
>> aware of, but to me, this seems to be the most likely explanation 
>> right now.
>>
>> What I tried:
>> -------------
>>
>> 1. I changed the VLAN numbers. First to 101, 102, 103 etc. This was 
>> when I noticed another strange thing: VLANs with numbers >99 simply 
>> don't work on my Raspberry Pi under Debian, with or without Xen. VLAN 
>> 99 works, VLAN 100 (or everything else >99 that I tried) doesn't work. 
>> If I choose a number >99, the VLAN is not configured, "ip a" doesn't 
>> list it. Other Debian systems on x64 architecture don't show this 
>> behavior, there, it was no problem to set up VLANs > 99. Therefore, 
>> I've changed the VLANs to 10, 20, 30 etc., which worked. But it didn't 
>> solve the initial problem of the crashing Dom0 and DomUs.
>>
>> 2. Different bridge options, without noticable effect:
>> bridge_stp off      # dont use STP (spanning tree proto)
>> bridge_waitport 0   # dont wait for port to be available
>> bridge_fd 0         # no forward delay
>>
>> 3. Removing IPv6: No noticable effect.
>>
>> 4. Network traffic analysis: Now, here it becomes _really_ strange. I 
>> started tcpdumps on Dom0, and depending on on which interface/bridge 
>> traffic was logged, the problem went away, meaning, the DomU was 
>> running smoothly for hours, even when accessing the zabbix web 
>> interface. Stopping the log makes the system crash (as above, after 
>> seconds up to 1-2 minutes) reproducably if I access the zabbix web 
>> interface.
>>
>> Logging enabcm6e4ei0 (NIC): no crashes
>> Logging enabcm6e4ei0.10 (VLAN 10): instant crash
>> Logging enabcm6e4ei0.20 (VLAN 20): no crashes
>> Logging xenbr0 (on VLAN 10): instant crash
>> Logging xenbr1 (on VLAN 20): no crashes
>>
>> I am clinging to the thought that there must be a rational explanation 
>> for why logging the traffic on certain interfaces/bridges should avoid 
>> the crash of the complete system, while logging other 
>> interfaces/bridges doesn't. I myself can't think of one.
>>
>> I checked the dumps of enabcm6e4ei0.10 and xenbr0 (where the system 
>> crashes) with wireshark, nothing sticks out to me (but I am really no 
>> expert in analyzing network traffic). Dumps can be provided.
>>
>> 5. Watchdog: I tried to dig deeper into the cause for the watchdog 
>> triggering. However, I didn't find any useful documentation on the web 
>> on how the watchdog works or how to enable logging.
>>
>> 6. Eliminating Xen as cause: I booted the Debian system (which in Xen 
>> setup would be Dom0) without Xen and set it up to use the VLAN 20 
>> bridge (the same that leads to a reboot when using it in the DomU) as 
>> primary network interface. Everything seemed to be working, I could 
>> download large files from the internet without any problem. Setting up 
>> Zabbix on the base Debian system showed that the same setup (VLANs 10 
>> and 20, bridges 1 and 2, using bridge 2 as interface for Zabbix) 
>> without Xen is working reliably, no reboots. This points to some Xen 
>> related component being the root cause, I think.
>>
>> 7. Eliminating Apache as root cause: Reloading the Apache starting 
>> page hosted on DomU several times per second didn't lead to a reboot.
>>
>> 8. Recompiling Xen: Independent of which Xen master branch version I 
>> was using (all 4.18), the behavior was the same. I didn't get Xen 
>> working on ARM64/UEFI in version 4.17.
>>
>> Current situation:(XEN) d3v0 Unhandled SMC/HVC: 0x84000050
(XEN) d3v0 Unhandled SMC/HVC: 0x8600ff01
(XEN) d3v0: vGICD: unhandled word write 0x000000ffffffff to ICACTIVER0
(XEN) common/grant_table.c:1909:d3v0 Expanding d3 grant table from 1 to 
2 frames
(XEN) common/grant_table.c:1909:d3v0 Expanding d3 grant table from 2 to 
3 frames
(XEN) common/grant_table.c:1909:d3v0 Expanding d3 grant table from 3 to 
4 frames
>> ------------------
>>
>> I am out of ideas what to do next. Everything that was recommended to 
>> me on xen-users didn't lead to significant insight or solve the problem.
>>
>> I'd appreciate any hints how to troubleshoot this and/or how to 
>> proceed otherwise.
> 
> O.k., let's try to break that issue down.
> 
> Firstly, how can I get more information on why the Xen watchdog 
> triggers? Is there documentation? Are there any logs? I couldn't find 
> anything useful with my search skills.
> 

After some delay, I have picked up the Raspberry Pi again, built Xen 
4.19-unstable, with the same result: Reboot of the complete system after 
the Dom0 watchdog triggering when accessing the Zabbix content on a 
webserver on DomU.

I still would like to find out what's going wrong here, but I have no 
idea what to do. I'd appreciate any hint.

Not knowing if it helps, I added Xen logs from boot until Dom0 
crash/reboot below.

Loading Xen xen ...
Loading Linux 6.1.0-17-arm64 ...
Loading initial ramdisk ...
Using modules provided by bootloader in FDT
Xen 4.19-unstable (c/s Fri Jan 12 11:54:31 2024 +0000 
git:1ec3fe1f66-dirty) EFI
loader
  Xen 4.19-unstable
(XEN) Xen version 4.19-unstable (root@lan.onlineschubla.de) (gcc (Debian 
12.2.0- 
 
 
                            14) 12.2.0) debug=y Sun Jan 14 21:46:34 CET 2024
(XEN) Latest ChangeSet: Fri Jan 12 11:54:31 2024 +0000 git:1ec3fe1f66-dirty
(XEN) build-id: babb03cb6107fc46f7d8969142ccd6772a1133c3
(XEN) Console output is synchronous.
(XEN) Processor: 00000000410fd083: "ARM Limited", variant: 0x0, part 
0xd08,rev 0 
 
 
                                x3
(XEN) 64-bit Execution:
(XEN)   Processor Features: 0000000000002222 0000000000000000
(XEN)     Exception Levels: EL3:64+32 EL2:64+32 EL1:64+32 EL0:64+32
(XEN)     Extensions: FloatingPoint AdvancedSIMD
(XEN)   Debug Features: 0000000010305106 0000000000000000
(XEN)   Auxiliary Features: 0000000000000000 0000000000000000
(XEN)   Memory Model Features: 0000000000001124 0000000000000000
(XEN)   ISA Features:  0000000000010000 0000000000000000
(XEN) 32-bit Execution:
(XEN)   Processor Features: 0000000000000131:0000000000011011
(XEN)     Instruction Sets: AArch32 A32 Thumb Thumb-2 Jazelle
(XEN)     Extensions: GenericTimer Security
(XEN)   Debug Features: 0000000003010066
(XEN)   Auxiliary Features: 0000000000000000
(XEN)   Memory Model Features: 0000000010201105 0000000040000000
(XEN)                          0000000001260000 0000000002102211
(XEN)   ISA Features: 0000000002101110 0000000013112111 0000000021232042
(XEN)                 0000000001112131 0000000000011142 0000000000010001
(XEN) Using SMC Calling Convention v1.2
(XEN) Using PSCI v1.1
(XEN) ACPI: GICC (acpi_id[0x0000] address[0xff842000] MPIDR[0x0] enabled)
(XEN) ACPI: GICC (acpi_id[0x0001] address[0xff842000] MPIDR[0x1] enabled)
(XEN) ACPI: GICC (acpi_id[0x0002] address[0xff842000] MPIDR[0x2] enabled)
(XEN) ACPI: GICC (acpi_id[0x0003] address[0xff842000] MPIDR[0x3] enabled)
(XEN) 4 CPUs enabled, 4 CPUs total
(XEN) SMP: Allowing 4 CPUs
(XEN) enabled workaround for: ARM erratum 1319537
(XEN) Generic Timer IRQ: phys=30 hyp=26 virt=27 Freq: 54000 KHz
(XEN) GICv2 initialization:
(XEN)         gic_dist_addr=00000000ff841000
(XEN)         gic_cpu_addr=00000000ff842000
(XEN)         gic_hyp_addr=00000000ff844000
(XEN)         gic_vcpu_addr=00000000ff846000
(XEN)         gic_maintenance_irq=25
(XEN) GICv2: 256 lines, 4 cpus, secure (IID 0200143b).
(XEN) XSM Framework v1.0.1 initialized
(XEN) Initialising XSM SILO mode
(XEN) Using scheduler: SMP Credit Scheduler rev2 (credit2)
(XEN) Initializing Credit2 scheduler
(XEN)  load_precision_shift: 18
(XEN)  load_window_shift: 30
(XEN)  underload_balance_tolerance: 0
(XEN)  overload_balance_tolerance: -3
(XEN)  runqueues arrangement: socket
(XEN)  cap enforcement granularity: 10ms
(XEN) load tracking window length 1073741824 ns
(XEN) Allocated console ring of 32 KiB.
(XEN) CPU0: Guest atomics will try 16 times before pausing the domain
(XEN) Bringing up CPU1
(XEN) CPU1: Guest atomics will try 16 times before pausing the domain
(XEN) CPU 1 booted.
(XEN) Bringing up CPU2
(XEN) CPU2: Guest atomics will try 13 times before pausing the domain
(XEN) CPU 2 booted.
(XEN) Bringing up CPU3
(XEN) CPU3: Guest atomics will try 16 times before pausing the domain
(XEN) Brought up 4 CPUs
(XEN) CPU 3 booted.
(XEN) I/O virtualisation disabled
(XEN) P2M: 44-bit IPA with 44-bit PA and 8-bit VMID
(XEN) P2M: 4 levels with order-0 root, VTCR 0x0000000080043594
(XEN) Scheduling granularity: cpu, 1 CPU per sched-resource
(XEN) Initializing Credit2 scheduler
(XEN)  load_precision_shift: 18
(XEN)  load_window_shift: 30
(XEN)  underload_balance_tolerance: 0
(XEN)  overload_balance_tolerance: -3
(XEN)  runqueues arrangement: socket
(XEN)  cap enforcement granularity: 10ms
(XEN) load tracking window length 1073741824 ns
(XEN) Adding cpu 0 to runqueue 0
(XEN)  First cpu on runqueue, activating
(XEN) Adding cpu 1 to runqueue 0
(XEN) Adding cpu 2 to runqueue 0
(XEN) Adding cpu 3 to runqueue 0
(XEN) alternatives: Patching with alt table 00000a00002ee0b0 -> 
00000a00002ef250
(XEN) CPU2 will call ARM_SMCCC_ARCH_WORKAROUND_1 on exception entry
(XEN) CPU1 will call ARM_SMCCC_ARCH_WORKAROUND_1 on exception entry
(XEN) CPU3 will call ARM_SMCCC_ARCH_WORKAROUND_1 on exception entry
(XEN) CPU0 will call ARM_SMCCC_ARCH_WORKAROUND_1 on exception entry
(XEN) *** LOADING DOMAIN 0 ***
(XEN) Loading d0 kernel from boot module @ 0000000030ef7000
(XEN) Loading ramdisk from boot module @ 000000002ee6d000
(XEN) Allocating 1:1 mappings totalling 1024MB for dom0:
(XEN) BANK[0] 0x00000040000000-0x00000080000000 (1024MB)
(XEN) Grant table range: 0x0000002eceb000-0x0000002ed2b000
(XEN) Allocating PPI 16 for event channel interrupt
(XEN) Loading zImage from 0000000030ef7000 to 
0000000040000000-0000000041f1c7c0
(XEN) Loading d0 initrd from 000000002ee6d000 to 
0x0000000048200000-0x000000004a 
 
 
                                                    288c22
(XEN) Loading d0 DTB to 0x0000000048000000-0x00000000480002c3
(XEN) Initial low memory virq threshold set at 0x4000 pages.
(XEN) Scrubbing Free RAM in background
(XEN) Std. Loglevel: All
(XEN) Guest Loglevel: All
(XEN) ***************************************************
(XEN) WARNING: CONSOLE OUTPUT IS SYNCHRONOUS
(XEN) This option is intended to aid debugging of Xen by ensuring
(XEN) that all output is synchronously delivered on the serial line.
(XEN) However it can introduce SIGNIFICANT latencies and affect
(XEN) timekeeping. It is NOT recommended for production use!
(XEN) ***************************************************
(XEN) 3... 2... 1...
(XEN) *** Serial input to DOM0 (type 'CTRL-a' three times to switch input)
(XEN) Freed 376kB init memory.
(XEN) d0v0 Unhandled SMC/HVC: 0x84000050
(XEN) d0v0 Unhandled SMC/HVC: 0x8600ff01
(XEN) d0v0: vGICD: unhandled word write 0x000000ffffffff to ICACTIVER4
(XEN) d0v0: vGICD: unhandled word write 0x000000ffffffff to ICACTIVER8
(XEN) d0v0: vGICD: unhandled word write 0x000000ffffffff to ICACTIVER12
(XEN) d0v0: vGICD: unhandled word write 0x000000ffffffff to ICACTIVER16
(XEN) d0v0: vGICD: unhandled word write 0x000000ffffffff to ICACTIVER20
(XEN) d0v0: vGICD: unhandled word write 0x000000ffffffff to ICACTIVER24
(XEN) d0v0: vGICD: unhandled word write 0x000000ffffffff to ICACTIVER28
(XEN) d0v0: vGICD: unhandled word write 0x000000ffffffff to ICACTIVER0
(XEN) d0v1: vGICD: unhandled word write 0x000000ffffffff to ICACTIVER0
(XEN) d0v2: vGICD: unhandled word write 0x000000ffffffff to ICACTIVER0
(XEN) d0v3: vGICD: unhandled word write 0x000000ffffffff to ICACTIVER0
(XEN) d1v0 Unhandled SMC/HVC: 0x84000050
(XEN) d1v0 Unhandled SMC/HVC: 0x8600ff01
(XEN) d1v0: vGICD: unhandled word write 0x000000ffffffff to ICACTIVER0
(XEN) common/grant_table.c:1909:d1v0 Expanding d1 grant table from 1 to 
2 frames
(XEN) gnttab_mark_dirty not implemented yet
(XEN) d2v0 Unhandled SMC/HVC: 0x84000050
(XEN) d2v0 Unhandled SMC/HVC: 0x8600ff01
(XEN) d2v0: vGICD: unhandled word write 0x000000ffffffff to ICACTIVER0
(XEN) common/grant_table.c:1909:d2v0 Expanding d2 grant table from 1 to 
2 frames
(XEN) common/grant_table.c:1909:d2v0 Expanding d2 grant table from 2 to 
3 frames
(XEN) common/grant_table.c:1909:d2v0 Expanding d2 grant table from 3 to 
4 frames
(XEN) Watchdog timer fired for domain 0
(XEN) Hardware Dom0 shutdown: watchdog rebooting machine


From xen-devel-bounces@lists.xenproject.org Mon Jan 15 06:47:27 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 15 Jan 2024 06:47:27 +0000
Received: from list by lists.xenproject.org with outflank-mailman.667192.1038220 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPGkX-0002Sw-MS; Mon, 15 Jan 2024 06:47:09 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 667192.1038220; Mon, 15 Jan 2024 06:47:09 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPGkX-0002Sp-HN; Mon, 15 Jan 2024 06:47:09 +0000
Received: by outflank-mailman (input) for mailman id 667192;
 Mon, 15 Jan 2024 06:47:09 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rPGkX-0002Sf-0M; Mon, 15 Jan 2024 06:47:09 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rPGkW-0003s1-Qu; Mon, 15 Jan 2024 06:47:08 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rPGkW-0007zE-5b; Mon, 15 Jan 2024 06:47:08 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rPGkW-0000bf-58; Mon, 15 Jan 2024 06:47:08 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=xLI0/wD++zBAtv0fRGZexOl4NyWG2OlYtPiC9afxXBM=; b=vvMwG17nj0ONlziJeK78NyC0OJ
	jEmXYbp4YuxWkNXOM5sa/U/s3pGMCWoTUjWQlMeNeSduCgiUSXMkHqTaaHSnb9YKvWV1wj0j2agJH
	4GyBKahgVJjgr35YUUP7QT88MhcgeGmbTvg/xJOPlfpB85sQ3mqW7RbLOOv0FPKmzFEM=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184348-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [ovmf test] 184348: all pass - PUSHED
X-Osstest-Versions-This:
    ovmf=f5b91c60ef24eecf5702e061dd7fd700943405b2
X-Osstest-Versions-That:
    ovmf=cfe48465724293abd0a7d92c2a72f8ee3cf15628
From: osstest service owner <osstest-admin@xenproject.org>
Date: Mon, 15 Jan 2024 06:47:08 +0000

flight 184348 ovmf real [real]
http://logs.test-lab.xenproject.org/osstest/logs/184348/

Perfect :-)
All tests in this flight passed as required
version targeted for testing:
 ovmf                 f5b91c60ef24eecf5702e061dd7fd700943405b2
baseline version:
 ovmf                 cfe48465724293abd0a7d92c2a72f8ee3cf15628

Last test of basis   184331  2024-01-12 06:14:31 Z    3 days
Testing same since   184348  2024-01-15 01:56:07 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Dun Tan <dun.tan@intel.com>

jobs:
 build-amd64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-amd64-amd64-xl-qemuu-ovmf-amd64                         pass    
 test-amd64-i386-xl-qemuu-ovmf-amd64                          pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Pushing revision :

To xenbits.xen.org:/home/xen/git/osstest/ovmf.git
   cfe4846572..f5b91c60ef  f5b91c60ef24eecf5702e061dd7fd700943405b2 -> xen-tested-master


From xen-devel-bounces@lists.xenproject.org Mon Jan 15 08:40:00 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 15 Jan 2024 08:40:00 +0000
Received: from list by lists.xenproject.org with outflank-mailman.667204.1038229 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPIVY-0006tZ-2W; Mon, 15 Jan 2024 08:39:48 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 667204.1038229; Mon, 15 Jan 2024 08:39:48 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPIVX-0006tS-WC; Mon, 15 Jan 2024 08:39:48 +0000
Received: by outflank-mailman (input) for mailman id 667204;
 Mon, 15 Jan 2024 08:39:46 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rPIVW-0006tI-Ha; Mon, 15 Jan 2024 08:39:46 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rPIVW-0006Gz-9w; Mon, 15 Jan 2024 08:39:46 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rPIVV-0003if-QU; Mon, 15 Jan 2024 08:39:45 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rPIVV-0002u5-Q2; Mon, 15 Jan 2024 08:39:45 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=pymjvn4ffKLgZxaFLIqI9LEI0YESB289fNFIGDIdFR0=; b=DwJDGljSNfRN2UMs9msVLk+9n4
	UwW7AZ1+GT3XUewaZIj//kwLxbryUVM1XOYKvVn876C25r4h02vwkizz8f4unUpnSTp7vmkBdELmm
	9mt60LN8ZcZPv5shnQ+0hnXjpkmD4W2MSAKriRj1Ip5moB3++Eo1II5TE+UW8B+f0hxw=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184346-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [linux-linus test] 184346: regressions - FAIL
X-Osstest-Failures:
    linux-linus:test-arm64-arm64-xl-credit1:debian-install:fail:regression
    linux-linus:test-arm64-arm64-xl-xsm:debian-install:fail:regression
    linux-linus:test-arm64-arm64-xl:debian-install:fail:regression
    linux-linus:test-arm64-arm64-xl-thunderx:debian-install:fail:regression
    linux-linus:test-arm64-arm64-xl-credit2:debian-install:fail:regression
    linux-linus:test-arm64-arm64-libvirt-xsm:debian-install:fail:regression
    linux-linus:test-armhf-armhf-libvirt:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    linux-linus:test-amd64-amd64-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    linux-linus:test-amd64-amd64-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-raw:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-qcow2:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-qemuu-nested-amd:debian-hvm-install/l1/l2:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-xsm:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-arndale:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-arndale:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-multivcpu:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-multivcpu:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-rtds:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-rtds:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit1:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit1:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit2:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit2:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-libvirt-raw:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-vhd:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-vhd:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-vhd:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-vhd:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-qcow2:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-qcow2:migrate-support-check:fail:nonblocking
X-Osstest-Versions-This:
    linux=052d534373b7ed33712a63d5e17b2b6cdbce84fd
X-Osstest-Versions-That:
    linux=0dd3ee31125508cd67f7e7172247f05b7fd1753a
From: osstest service owner <osstest-admin@xenproject.org>
Date: Mon, 15 Jan 2024 08:39:45 +0000

flight 184346 linux-linus real [real]
flight 184349 linux-linus real-retest [real]
http://logs.test-lab.xenproject.org/osstest/logs/184346/
http://logs.test-lab.xenproject.org/osstest/logs/184349/

Regressions :-(

Tests which did not succeed and are blocking,
including tests which could not be run:
 test-arm64-arm64-xl-credit1  12 debian-install           fail REGR. vs. 184270
 test-arm64-arm64-xl-xsm      12 debian-install           fail REGR. vs. 184270
 test-arm64-arm64-xl          12 debian-install           fail REGR. vs. 184270
 test-arm64-arm64-xl-thunderx 12 debian-install           fail REGR. vs. 184270
 test-arm64-arm64-xl-credit2  12 debian-install           fail REGR. vs. 184270
 test-arm64-arm64-libvirt-xsm 12 debian-install           fail REGR. vs. 184270

Tests which did not succeed, but are not blocking:
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 184270
 test-amd64-amd64-xl-qemut-win7-amd64 19 guest-stop            fail like 184270
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 184270
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 184270
 test-armhf-armhf-libvirt-raw 15 saverestore-support-check    fail  like 184270
 test-amd64-amd64-xl-qemut-ws16-amd64 19 guest-stop            fail like 184270
 test-armhf-armhf-libvirt-qcow2 15 saverestore-support-check   fail like 184270
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 184270
 test-amd64-amd64-libvirt     15 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-arndale  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-arndale  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-multivcpu 15 migrate-support-check        fail  never pass
 test-armhf-armhf-xl-multivcpu 16 saverestore-support-check    fail  never pass
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-armhf-armhf-libvirt     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-rtds     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-rtds     16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-credit1  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit1  16 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-raw 14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit2  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit2  16 saverestore-support-check    fail   never pass
 test-arm64-arm64-libvirt-raw 14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 15 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-vhd      14 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-vhd      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-raw 14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      15 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-qcow2 14 migrate-support-check        fail never pass
 test-armhf-armhf-libvirt-qcow2 14 migrate-support-check        fail never pass

version targeted for testing:
 linux                052d534373b7ed33712a63d5e17b2b6cdbce84fd
baseline version:
 linux                0dd3ee31125508cd67f7e7172247f05b7fd1753a

Last test of basis   184270  2024-01-07 20:42:19 Z    7 days
Failing since        184283  2024-01-08 20:10:43 Z    6 days   11 attempts
Testing same since   184338  2024-01-13 05:40:28 Z    2 days    4 attempts

------------------------------------------------------------
1701 people touched revisions under test,
not listing them all

jobs:
 build-amd64-xsm                                              pass    
 build-arm64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64                                                  pass    
 build-arm64                                                  pass    
 build-armhf                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-arm64-libvirt                                          pass    
 build-armhf-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-pvops                                            pass    
 build-arm64-pvops                                            pass    
 build-armhf-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-amd64-amd64-xl                                          pass    
 test-amd64-coresched-amd64-xl                                pass    
 test-arm64-arm64-xl                                          fail    
 test-armhf-armhf-xl                                          pass    
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm           pass    
 test-amd64-amd64-xl-qemut-stubdom-debianhvm-amd64-xsm        pass    
 test-amd64-amd64-xl-qemut-debianhvm-i386-xsm                 pass    
 test-amd64-amd64-xl-qemuu-debianhvm-i386-xsm                 pass    
 test-amd64-amd64-libvirt-xsm                                 pass    
 test-arm64-arm64-libvirt-xsm                                 fail    
 test-amd64-amd64-xl-xsm                                      pass    
 test-arm64-arm64-xl-xsm                                      fail    
 test-amd64-amd64-qemuu-nested-amd                            fail    
 test-amd64-amd64-xl-pvhv2-amd                                pass    
 test-amd64-amd64-dom0pvh-xl-amd                              pass    
 test-amd64-amd64-xl-qemut-debianhvm-amd64                    pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64                    pass    
 test-amd64-amd64-freebsd11-amd64                             pass    
 test-amd64-amd64-freebsd12-amd64                             pass    
 test-amd64-amd64-xl-qemuu-ovmf-amd64                         pass    
 test-amd64-amd64-xl-qemut-win7-amd64                         fail    
 test-amd64-amd64-xl-qemuu-win7-amd64                         fail    
 test-amd64-amd64-xl-qemut-ws16-amd64                         fail    
 test-amd64-amd64-xl-qemuu-ws16-amd64                         fail    
 test-armhf-armhf-xl-arndale                                  pass    
 test-amd64-amd64-examine-bios                                pass    
 test-amd64-amd64-xl-credit1                                  pass    
 test-arm64-arm64-xl-credit1                                  fail    
 test-armhf-armhf-xl-credit1                                  pass    
 test-amd64-amd64-xl-credit2                                  pass    
 test-arm64-arm64-xl-credit2                                  fail    
 test-armhf-armhf-xl-credit2                                  pass    
 test-amd64-amd64-xl-qemuu-dmrestrict-amd64-dmrestrict        pass    
 test-amd64-amd64-examine                                     pass    
 test-arm64-arm64-examine                                     pass    
 test-armhf-armhf-examine                                     pass    
 test-amd64-amd64-qemuu-nested-intel                          pass    
 test-amd64-amd64-xl-pvhv2-intel                              pass    
 test-amd64-amd64-dom0pvh-xl-intel                            pass    
 test-amd64-amd64-libvirt                                     pass    
 test-armhf-armhf-libvirt                                     pass    
 test-amd64-amd64-xl-multivcpu                                pass    
 test-armhf-armhf-xl-multivcpu                                pass    
 test-amd64-amd64-pair                                        pass    
 test-amd64-amd64-libvirt-pair                                pass    
 test-amd64-amd64-xl-pvshim                                   pass    
 test-amd64-amd64-pygrub                                      pass    
 test-amd64-amd64-libvirt-qcow2                               pass    
 test-armhf-armhf-libvirt-qcow2                               pass    
 test-amd64-amd64-libvirt-raw                                 pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-armhf-armhf-libvirt-raw                                 pass    
 test-amd64-amd64-xl-rtds                                     pass    
 test-armhf-armhf-xl-rtds                                     pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64-shadow             pass    
 test-amd64-amd64-xl-shadow                                   pass    
 test-arm64-arm64-xl-thunderx                                 fail    
 test-amd64-amd64-examine-uefi                                pass    
 test-amd64-amd64-xl-vhd                                      pass    
 test-arm64-arm64-xl-vhd                                      pass    
 test-armhf-armhf-xl-vhd                                      pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Not pushing.

(No revision log; it would be 204832 lines long.)


From xen-devel-bounces@lists.xenproject.org Mon Jan 15 08:40:52 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 15 Jan 2024 08:40:52 +0000
Received: from list by lists.xenproject.org with outflank-mailman.667208.1038240 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPIWa-0008FC-CN; Mon, 15 Jan 2024 08:40:52 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 667208.1038240; Mon, 15 Jan 2024 08:40:52 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPIWa-0008F5-9l; Mon, 15 Jan 2024 08:40:52 +0000
Received: by outflank-mailman (input) for mailman id 667208;
 Mon, 15 Jan 2024 08:40:51 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=jLm1=IZ=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rPIWY-0008En-Vw
 for xen-devel@lists.xenproject.org; Mon, 15 Jan 2024 08:40:51 +0000
Received: from mail-wr1-x435.google.com (mail-wr1-x435.google.com
 [2a00:1450:4864:20::435])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id c8454c31-b381-11ee-98f1-6d05b1d4d9a1;
 Mon, 15 Jan 2024 09:40:49 +0100 (CET)
Received: by mail-wr1-x435.google.com with SMTP id
 ffacd0b85a97d-3373a30af67so7602178f8f.0
 for <xen-devel@lists.xenproject.org>; Mon, 15 Jan 2024 00:40:48 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 k20-20020a05600c1c9400b0040e54f15d3dsm18874249wms.31.2024.01.15.00.40.47
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 15 Jan 2024 00:40:48 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: c8454c31-b381-11ee-98f1-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1705308048; x=1705912848; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=6QYpGqzwgqtT7SMPfxn3FeVOClAMt3sOK/qR9eQ9SI8=;
        b=GOC/TGCwuJ9LBqp7RJnkc61+yFWwRp8uFWnM1PDsN6sBdKk5P4qku7uFcMyndEbUeW
         hwGnZrCTJk2Y24M7F9oKJ7OlnzEsoMqmoU6H0gVz0raj0ZLW/MiQCfdRw5ierj4gpiM7
         4lS1Jj/4DtmlcOoZjSBrBL5Y4QkrG2sTKALHoGwOQ1KfbS5VHR9WtFMpw6l3fgn9JvEN
         lbezQzpD42o151lWZomA1PqDXCOrPTGCF3tNc6EnwvmN9jL+vdX6CaY5z8mpZ6hyjhrd
         oSKJ8kfMkoNAE7jVv0Lm7ZzBTsiFEVZR5PwRrgyLMstT+8NWFupd+3GslK/6jirBYUdT
         z9zw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705308048; x=1705912848;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=6QYpGqzwgqtT7SMPfxn3FeVOClAMt3sOK/qR9eQ9SI8=;
        b=PXyZ3Te2x9MkOc+8Ivl6Oa48t+JxE5ElDzq89Jz22MLJ1bOfz0JJn+Y5CTn8MzryR0
         ItUraYOrApZQeOiLABYixQRPygBhPhRQ18VZ67yzKRQ+q/iHojsA07TrVI+1SFdXVDjG
         deC0Voh17m0Ha+5OvvgPlK71f5VzDNejHnojZHCko/pyD0br1gjC3h5gFRYVlLtqksoW
         nXE8M27NMAZ0SQjHkUs+TWG49yinLIeeORsuLs07cyt2+GPwtGpHuh1KWO3gTKRT2C1O
         OjbnREin+4cpNCpJMqGk2wAQgPDjJfn3ZRV9wrkkqjurIeYWT9hjpqQiO8NOZxtGwo1N
         Dauw==
X-Gm-Message-State: AOJu0YyPBlBtgaQc8ohXCUXZP3lHBE+pO8sok2rzR4yd3cbFbLP4o/Fx
	ry9EfqUgEdfYmY+rsNVfk04r39wGqW1A
X-Google-Smtp-Source: AGHT+IHoWrka2zHvPJJj4GaaYa7lgbvFhLZfPzIC79Elr7pOd4vk+oTSKRmN1V1Rmv5+FZzXjxXv1w==
X-Received: by 2002:a05:600c:54ef:b0:40e:55aa:3bc8 with SMTP id jb15-20020a05600c54ef00b0040e55aa3bc8mr1728598wmb.169.1705308048323;
        Mon, 15 Jan 2024 00:40:48 -0800 (PST)
Message-ID: <e37230c1-1ced-41af-adac-cad5fc2cb0e8@suse.com>
Date: Mon, 15 Jan 2024 09:40:50 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 5/8] serial: drop serial_[rt]x_interrupt()'s regs
 parameter
Content-Language: en-US
To: Andrew Cooper <andrew.cooper3@citrix.com>,
 Marek Marczykowski <marmarek@invisiblethingslab.com>
Cc: George Dunlap <george.dunlap@citrix.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>,
 Bertrand Marquis <bertrand.marquis@arm.com>,
 Michal Orzel <michal.orzel@amd.com>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
References: <1ab231ec-5e3c-4662-8530-2213bc52bb7c@suse.com>
 <05b1284a-988c-4f91-9cde-4751332aaa96@suse.com>
 <485553fc-b91f-4a35-b01f-8bbd5964276b@citrix.com>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <485553fc-b91f-4a35-b01f-8bbd5964276b@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 11.01.2024 19:07, Andrew Cooper wrote:
> On 11/01/2024 7:34 am, Jan Beulich wrote:
>> In the the polling functions (ab)using set_irq_regs() is necessary
>> to balance the change.
> 
> I have to admit that I don't know what "balance the change" is supposed
> to refer to in this context.

Maybe just a lack of proper English on my part. What I'm trying to say is
that the removal of the function parameter comes with the need to make
the pointer available via set_irq_regs() (which is, in a way at least, an
abuse of the function).

>> --- a/xen/drivers/char/ehci-dbgp.c
>> +++ b/xen/drivers/char/ehci-dbgp.c
>> @@ -1268,11 +1269,16 @@ static void cf_check _ehci_dbgp_poll(str
>>          spin_unlock_irqrestore(&port->tx_lock, flags);
>>      }
>>  
>> +    /* Mimic interrupt context. */
>> +    old_regs = set_irq_regs(regs);
>> +
>>      if ( dbgp->in.chunk )
>> -        serial_rx_interrupt(port, regs);
>> +        serial_rx_interrupt(port);
>>  
>>      if ( empty )
>> -        serial_tx_interrupt(port, regs);
>> +        serial_tx_interrupt(port);
>> +
>> +    set_irq_regs(old_regs);
> 
> Looking at this logic, it has occured to me that patch 2 probably ought
> to have ASSERT(!local_irqs_enabled()) in set_irq_regs().  While the main
> arch irq dispatch can reasonably have it as an implicit expectation,
> uses like this could do with the check.

Why would IRQs need to be off for set_irq_regs()? It's all a matter of
proper nesting, and any IRQ (nested into here or nested inside another
IRQ) would properly save/restore the outer context's pointer
(irrespective of what kind of context that actually is).

Note also how __ns16550_poll() doesn't itself disable interrupts.
While apparently not the case right now, I'm also of the opinion that
IRQs could in principle be turned back on transiently while handling
BUGFRAME_run_fn (and perhaps also BUGFRAME_warn).

> This construct is very nasty.  What actually needs it?
> 
> If it's only handle_keypress(), isn't there a latent issue between patch
> 3 and 5, given that patch 3 uses set_irq_regs() before this patch sets
> it up?

I think you're right - looks like I need to re-order (or fold, in case
there would then be a build issue).

> Might it be better to do this in the main handling of BUGFRAME_run_fn,
> rather than at a few select users?  We're already abusing
> BUGFRAME_run_fn to set up an IRQ-like context for these poll functions.

Hmm. It would then look at least a little less abusive, I suppose. Otoh
the handler function being passed registers is quite natural imo, for
being exception (not interrupt) related. Or are you suggesting to "pass"
registers both ways (i.e. keep the handler function parameter while
additionally also using set_irq_regs())? That would feel a little odd,
for being redundant.

Also I've never viewed use of BUGFRAME_run_fn here as having the purpose
of setting up an IRQ-like context. I've always understood it as merely a
means to get at a meaningful struct cpu_user_regs instance (i.e. covering
the case of running in idle vCPU context; see below). Much like
BUGFRAME_warn imo has only this as a purpose of involving generation of
an exception.

> I suppose a different question is what it would take to get rid of
> this.  Is it something a bit more cleanup would solve, or is there some
> more fundamental untangling required?

Well, what exactly is "this" here? Something needs to set the pointer,
even if I add a patch to switch handle_keypress() itself to not take a
regs parameter anymore.

>> --- a/xen/drivers/char/xhci-dbc.c
>> +++ b/xen/drivers/char/xhci-dbc.c
>> @@ -1175,10 +1176,15 @@ static void cf_check dbc_uart_poll(void
>>          spin_unlock_irqrestore(&port->tx_lock, flags);
>>      }
>>  
>> +    /* Mimic interrupt context. */
>> +    old_regs = set_irq_regs(guest_cpu_user_regs());
> 
> This is not a bug in your patch, but...
> 
> The use of guest_cpu_user_regs() here is different to all the other poll
> functions.  Is this actually correct?

I think it is okay-ish right now, but indeed I meant to have a post-
commit-message remark about this. In particular, ...

> If we're really in interrupt context and then we fake up a poll like
> this, then we don't have a total order of frames recorded in the
> irq_regs pointer.  I can't see a specific issue, but it also doesn't
> feel as if it is something we should allow.

... I don't see any ordering constraint. dbc_uart_poll() is a timer
handler, so will never itself run in interrupt context. And any IRQ
would cleanly nest. Nevertheless register state will likely not be
very meaningful when the timer ends up running in the context of an
idle vCPU. Marek, what's the background of you having done this
differently to other poll handlers?

Jan


From xen-devel-bounces@lists.xenproject.org Mon Jan 15 08:44:26 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 15 Jan 2024 08:44:26 +0000
Received: from list by lists.xenproject.org with outflank-mailman.667214.1038250 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPIZz-0000US-VV; Mon, 15 Jan 2024 08:44:23 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 667214.1038250; Mon, 15 Jan 2024 08:44:23 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPIZz-0000UL-Sh; Mon, 15 Jan 2024 08:44:23 +0000
Received: by outflank-mailman (input) for mailman id 667214;
 Mon, 15 Jan 2024 08:44:22 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=jLm1=IZ=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rPIZy-0000UF-Lr
 for xen-devel@lists.xenproject.org; Mon, 15 Jan 2024 08:44:22 +0000
Received: from mail-wm1-x32e.google.com (mail-wm1-x32e.google.com
 [2a00:1450:4864:20::32e])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 4706e65c-b382-11ee-98f1-6d05b1d4d9a1;
 Mon, 15 Jan 2024 09:44:21 +0100 (CET)
Received: by mail-wm1-x32e.google.com with SMTP id
 5b1f17b1804b1-40e7fce1abcso607585e9.2
 for <xen-devel@lists.xenproject.org>; Mon, 15 Jan 2024 00:44:21 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 g7-20020a7bc4c7000000b0040d5c58c41dsm14739655wmk.24.2024.01.15.00.44.20
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 15 Jan 2024 00:44:20 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 4706e65c-b382-11ee-98f1-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1705308261; x=1705913061; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=U01Ehwgs5B6LmAPaY3WKSiwDxNPutwx/aEutUDHSZBM=;
        b=LVg/TGD4FvelmEeKFbySlRPEcvksOBvYr2hggbbKPVi5yfe77LLgFBk+rDMztVyiN3
         +bfwuizVkxtx0KV0ZvRzg03DjEjgx+ldyx9KJTdxQz3jZ3nO2KKVlJn8SnR8yrY1IO4q
         w38HRFYfxItGyLki69agGPKL6IDRVW14Vhf18+9sgU7Yl3wHYAblsgSalOw6ZvWXWAx4
         WWUE4Y8UfYzxmd531E04nMw5aOk5oGA0EWh/4vaYu0qzVF4sycYEha2cyFLhlSM3tVZQ
         fQXWRQS3hORhaR7tj82nX7/oXHijx31JHqh4GLJNJa58V14eJwwHRwcFXD2tDI2GNODS
         iTPw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705308261; x=1705913061;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=U01Ehwgs5B6LmAPaY3WKSiwDxNPutwx/aEutUDHSZBM=;
        b=gKXX7kypjnbuo4pmR4mz1Ptrp9oc+AtdtJ37mjAdyJKDgzCOZ6/xpX1sGZd/KJGSWM
         kGf97tM+lIt0o7Hn5E8/Qbl9O3F7VR7erVbhGuirMP0aKLyIPl/jS3ad0fSf71h4k7kF
         B1xr0S0CHTLq78wedwtnfLSwKV2/d5GN8eI7tkNUQVMHEPLb9S5wkoSbON3363hUQiNK
         so8jnOnfF6TI0J4H1YSOiC9laY4RG82HvPpJvZ/ipSpejEgT83hdgIuwFiYptyXtMQXp
         8Vi98gF0xuE0AgqOsISukLPgdL2eZZCX0FxjrGHWgP2nPBdt+WKcY6XVJm0V/7hpZ5HC
         8Ngw==
X-Gm-Message-State: AOJu0YzgBKyO0B7SJcKzafOGRtYprcF+yc3nUBzFSEG7tB1KgrQFwIzL
	Bcc+L/QNLfrnmA/pzfh4J/N0NzEThUzT
X-Google-Smtp-Source: AGHT+IGikOcJFJnyUcas44nyO2HvFpUl0O0+WNCooWxHfVXCROYMpL9ijRivBV9on04hny6pgZmOKA==
X-Received: by 2002:a7b:cb93:0:b0:40e:7d47:661e with SMTP id m19-20020a7bcb93000000b0040e7d47661emr254374wmi.51.1705308261035;
        Mon, 15 Jan 2024 00:44:21 -0800 (PST)
Message-ID: <859202f5-b946-4cb7-8ef4-3d74afc8128c@suse.com>
Date: Mon, 15 Jan 2024 09:44:23 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 6/8] IRQ: drop register parameter from handler functions
Content-Language: en-US
To: Andrew Cooper <andrew.cooper3@citrix.com>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: George Dunlap <george.dunlap@citrix.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Bertrand Marquis <bertrand.marquis@arm.com>,
 Michal Orzel <michal.orzel@amd.com>, Kevin Tian <kevin.tian@intel.com>
References: <1ab231ec-5e3c-4662-8530-2213bc52bb7c@suse.com>
 <c6926627-aeb6-40dd-a85a-1be0b324bf49@suse.com>
 <1e520de0-8698-499d-8187-c79f589c974d@citrix.com>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <1e520de0-8698-499d-8187-c79f589c974d@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 11.01.2024 19:10, Andrew Cooper wrote:
> On 11/01/2024 7:35 am, Jan Beulich wrote:
>> It's simply not needed anymore. Note how Linux made this change many
>> years ago already, in 2.6.19 (late 2006, see [1]).
>>
>> Signed-off-by: Jan Beulich <jbeulich@suse.com>
>>
>> [1] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit?id=7d12e780e003f93433d49ce78cfedf4b4c52adc5
> 
> https://git.kernel.org/torvalds/c/7d12e780e003f93433d49ce78cfedf4b4c52adc5
> 
> See https://korg.docs.kernel.org/git-url-shorteners.html for full
> details, but this is a guaranteed-stable URL.

Okay, changed. I'll try to keep this in mind.

> It's worth saying that despite that patch in Linux, they've still not
> yet managed to drop the regs parameter.

How that, when they have

typedef irqreturn_t (*irq_handler_t)(int, void *);

?

> Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>

Thanks.

Jan


From xen-devel-bounces@lists.xenproject.org Mon Jan 15 08:53:25 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 15 Jan 2024 08:53:25 +0000
Received: from list by lists.xenproject.org with outflank-mailman.667221.1038259 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPIic-0002Ac-Pv; Mon, 15 Jan 2024 08:53:18 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 667221.1038259; Mon, 15 Jan 2024 08:53:18 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPIic-0002AV-NN; Mon, 15 Jan 2024 08:53:18 +0000
Received: by outflank-mailman (input) for mailman id 667221;
 Mon, 15 Jan 2024 08:53:16 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=Y0sJ=IZ=cloud.com=roger.pau@srs-se1.protection.inumbo.net>)
 id 1rPIia-0002AP-Om
 for xen-devel@lists.xenproject.org; Mon, 15 Jan 2024 08:53:16 +0000
Received: from mail-wr1-x42e.google.com (mail-wr1-x42e.google.com
 [2a00:1450:4864:20::42e])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 854ad33f-b383-11ee-98f1-6d05b1d4d9a1;
 Mon, 15 Jan 2024 09:53:15 +0100 (CET)
Received: by mail-wr1-x42e.google.com with SMTP id
 ffacd0b85a97d-3366ddd1eddso6999930f8f.0
 for <xen-devel@lists.xenproject.org>; Mon, 15 Jan 2024 00:53:15 -0800 (PST)
Received: from localhost ([213.195.127.68]) by smtp.gmail.com with ESMTPSA id
 x18-20020adfffd2000000b003377680c55bsm11275017wrs.16.2024.01.15.00.53.14
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 15 Jan 2024 00:53:14 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 854ad33f-b383-11ee-98f1-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1705308795; x=1705913595; darn=lists.xenproject.org;
        h=in-reply-to:content-transfer-encoding:content-disposition
         :mime-version:references:message-id:subject:cc:to:from:date:from:to
         :cc:subject:date:message-id:reply-to;
        bh=HIUKF3lLqQzKZ1u6IfeqNjZ2oNZaRqnWVzcYniBTp14=;
        b=FspunkgFZD6FOjTUOTtk8mr4DGpI8BQzVS2e3LCOnSFJeVr5GYC1CDq3l6ej37oGR3
         SSuknGZOMomT9w2gctUViMPjsFPaTKkC+BaaZFRWwZNsP4iD8bztd+s27hvNC8soQNU8
         8yaHhh4I2euz/xzP/NGLcQ52RKflfcUal6EGg=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705308795; x=1705913595;
        h=in-reply-to:content-transfer-encoding:content-disposition
         :mime-version:references:message-id:subject:cc:to:from:date
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=HIUKF3lLqQzKZ1u6IfeqNjZ2oNZaRqnWVzcYniBTp14=;
        b=cciCKCo9xkxK7XRbI7gFFlH43Aw/K64O90ucF2IdEZq3y/tAEabsq/anLAxXAKsD0u
         wWSFwonohDABRHFkidJ8CY6yxOJ2FmIEyuzUKtvszpyI6+FDYyfut7cu8HagNOBrHVyv
         v5Ki3TvhTb5y0MxSCNZz6pPKTPCyT9LMo4vXMSiE1hDVPEo0WQwjQmPpeEtbTcpQd/dd
         +zrIMcignjStc+GGYLnKgOWGEYPQLhMGCaHVjvb+AkSRB8IM5JRcKNFsWnhmrAApcNRW
         Aq+zEFJ1sYlz6XgXHk6DrUokofy+0BA/PSeUdaU+EoLzdLaOqCu9UmtqMrIP8tVY4Cli
         5D9w==
X-Gm-Message-State: AOJu0YxfwAKTqn3nzJNBaaIgQiwROkZA+EtLYFVxMbQ/dGw/jQd+Liwa
	/776ugZM35WtXN0PrGP9Gt5yO1zEI2yNWw==
X-Google-Smtp-Source: AGHT+IEqcR6C7rorzKXEs2l2QRXS5RLRMKRaeWDUQeRFbczKfd3zk00JJ3681tKSaJNIvfEPRL9V8w==
X-Received: by 2002:adf:f44e:0:b0:337:7d38:4e94 with SMTP id f14-20020adff44e000000b003377d384e94mr1579426wrp.202.1705308794981;
        Mon, 15 Jan 2024 00:53:14 -0800 (PST)
Date: Mon, 15 Jan 2024 09:53:14 +0100
From: Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
To: Stewart Hildebrand <stewart.hildebrand@amd.com>
Cc: xen-devel@lists.xenproject.org,
	Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>,
	Jan Beulich <jbeulich@suse.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>, Wei Liu <wl@xen.org>,
	George Dunlap <george.dunlap@citrix.com>,
	Julien Grall <julien@xen.org>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Jun Nakajima <jun.nakajima@intel.com>,
	Kevin Tian <kevin.tian@intel.com>, Paul Durrant <paul@xen.org>,
	Volodymyr Babchuk <volodymyr_babchuk@epam.com>
Subject: Re: [PATCH v12 01/15] vpci: use per-domain PCI lock to protect vpci
 structure
Message-ID: <ZaTyehqxp_q9wY3Y@macbook>
References: <20240109215145.430207-1-stewart.hildebrand@amd.com>
 <20240109215145.430207-2-stewart.hildebrand@amd.com>
 <ZaFDS7uZgW5l0eHG@macbook>
 <590a157a-b9d4-4d2d-8aff-6584da3045c3@amd.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <590a157a-b9d4-4d2d-8aff-6584da3045c3@amd.com>

On Fri, Jan 12, 2024 at 12:54:56PM -0500, Stewart Hildebrand wrote:
> On 1/12/24 08:48, Roger Pau Monné wrote:
> > On Tue, Jan 09, 2024 at 04:51:16PM -0500, Stewart Hildebrand wrote:
> >> @@ -202,8 +204,20 @@ static int __init apply_map(struct domain *d, const struct pci_dev *pdev,
> >>      struct map_data data = { .d = d, .map = true };
> >>      int rc;
> >>  
> >> +    ASSERT(rw_is_write_locked(&d->pci_lock));
> >> +
> >>      while ( (rc = rangeset_consume_ranges(mem, map_range, &data)) == -ERESTART )
> >> +    {
> >> +        /*
> >> +         * It's safe to drop and reacquire the lock in this context
> >> +         * without risking pdev disappearing because devices cannot be
> >> +         * removed until the initial domain has been started.
> >> +         */
> >> +        write_unlock(&d->pci_lock);
> >>          process_pending_softirqs();
> >> +        write_lock(&d->pci_lock);
> > 
> > Hm, I should have noticed before, but we already call
> > process_pending_softirqs() with the pdev->vpci->lock held here, so it
> > would make sense to drop it also.
> 
> I don't quite understand this, maybe I'm missing something. I don't see where we acquire pdev->vpci->lock before calling process_pending_softirqs()?
> 
> Also, I tried adding
> 
>     ASSERT(!spin_is_locked(&pdev->vpci->lock));
> 
> both here in apply_map() and in vpci_process_pending(), and they haven't triggered in either dom0 or domU test cases, tested on both arm and x86.

I think I was confused.  Are you sure that pdev->vpci->lock is taken
in the apply_map() call?  I was mistakenly assuming that
vpci_add_handlers() called the init function with the vpci->lock
taken, but that doesn't seem to be case with the current code.  That
leads to apply_map() also being called without the vpci->lock taken.

I was wrongly assuming that apply_map() was called with the vpci->lock
lock taken, and that would need dropping around the
process_pending_softirqs() call.

Thanks, Roger.


From xen-devel-bounces@lists.xenproject.org Mon Jan 15 08:58:07 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 15 Jan 2024 08:58:07 +0000
Received: from list by lists.xenproject.org with outflank-mailman.667224.1038270 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPInE-00035V-C4; Mon, 15 Jan 2024 08:58:04 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 667224.1038270; Mon, 15 Jan 2024 08:58:04 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPInE-00035O-8M; Mon, 15 Jan 2024 08:58:04 +0000
Received: by outflank-mailman (input) for mailman id 667224;
 Mon, 15 Jan 2024 08:58:03 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=jLm1=IZ=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rPInD-00035I-TV
 for xen-devel@lists.xenproject.org; Mon, 15 Jan 2024 08:58:03 +0000
Received: from mail-wm1-x336.google.com (mail-wm1-x336.google.com
 [2a00:1450:4864:20::336])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 3087d2ca-b384-11ee-98f1-6d05b1d4d9a1;
 Mon, 15 Jan 2024 09:58:02 +0100 (CET)
Received: by mail-wm1-x336.google.com with SMTP id
 5b1f17b1804b1-40e80046263so441845e9.2
 for <xen-devel@lists.xenproject.org>; Mon, 15 Jan 2024 00:58:02 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 c11-20020a05600c0a4b00b0040d53588d94sm19151579wmq.46.2024.01.15.00.58.01
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 15 Jan 2024 00:58:02 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 3087d2ca-b384-11ee-98f1-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1705309082; x=1705913882; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=Gg3E6MfcDuJwlFR9OvjQblrNS1r9dvoSxV9oblVARg8=;
        b=PD8ilqJv00o2LYYoPHETYHPVwxQpmOkmsSXUGSZJKIqNPEvOt3mEeU6NVh6CtUo6VI
         Q8AV3M+IpdKrloocJjIMEZyuExblOVFOwtPE5V0CBDG8APwcjH9mtpmK+M3+yU9wk0PN
         V/9ZkuvDVKJOJvNImJXMLXMCWUSldgnFzrqHz8FONUyRe2/qGVCd3zNQPYe/qsmL+7AC
         SL9cQ52Ic+DbL72gUkG2ZSQ7PeoH8J8B7GCpd+6DWfcAqksaI3OtJBdGxDL9Ohomnztp
         DILLFan+AjeXDoJIitb1LxKRt20psmV3ck8JNG8UyEhkqKM4W/FBU5Vri8d5Op7GHw46
         LLKw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705309082; x=1705913882;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=Gg3E6MfcDuJwlFR9OvjQblrNS1r9dvoSxV9oblVARg8=;
        b=c4Ht2y54hpExjlnsM4qpydVJaxfv3akkFe62/OLMPH561/QwPuZ6o4yi+ZoWPMh1Qn
         myS9Cj80APzcOedUil7ZM020VOta5ZLk+F/6IujF4/MiKrTGwkVvKkjNwysl1lvzejv3
         vw6LnvtPXABTLXo65bJ6hdlYWYZyoTQNihdoqR3/tOFiC4/rQkEnB7bizsHCnvRRHi4K
         GLyeysLykGXRRYQU8cPaBV3smF6tE+9tGiyeCClvtlj4HnTQfFWNvfgmBpZtaWXaq/HE
         9FrugXB1Nm8l13lWFgsS9Ptxhf9+rFsKG/IwSMFd+qoaPMGGTV7AP/+vQBRx8/KRbmIq
         tvJw==
X-Gm-Message-State: AOJu0YxVXaMQ6SDPZxtP9SQ+/QaNXB54AIVTNIVb53v1mBKzTD/CnP81
	/A5zhHi/A+L2KZlLl7QaVWzGSzuiuUcx
X-Google-Smtp-Source: AGHT+IEzutio8nveGpjeJIFQcWn4WHddqPTPbOu8Yl4TY5GnVDpDAMthsFEjakbX8fL3Bz/FLrc4Pw==
X-Received: by 2002:a05:600c:5103:b0:40e:76b5:1463 with SMTP id o3-20020a05600c510300b0040e76b51463mr732241wms.29.1705309082264;
        Mon, 15 Jan 2024 00:58:02 -0800 (PST)
Message-ID: <34b4cbf1-989d-43a0-aaea-717f06a79960@suse.com>
Date: Mon, 15 Jan 2024 09:58:04 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v12.1 01/15] vpci: use per-domain PCI lock to protect vpci
 structure
Content-Language: en-US
To: Stewart Hildebrand <stewart.hildebrand@amd.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
Cc: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>,
 Andrew Cooper <andrew.cooper3@citrix.com>, Wei Liu <wl@xen.org>,
 George Dunlap <george.dunlap@citrix.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>,
 Jun Nakajima <jun.nakajima@intel.com>, Kevin Tian <kevin.tian@intel.com>,
 Paul Durrant <paul@xen.org>, Volodymyr Babchuk <volodymyr_babchuk@epam.com>,
 xen-devel@lists.xenproject.org
References: <20240109215145.430207-1-stewart.hildebrand@amd.com>
 <20240109215145.430207-2-stewart.hildebrand@amd.com>
 <ZaFDS7uZgW5l0eHG@macbook> <590a157a-b9d4-4d2d-8aff-6584da3045c3@amd.com>
 <20240112181442.674031-1-stewart.hildebrand@amd.com>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <20240112181442.674031-1-stewart.hildebrand@amd.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 12.01.2024 19:14, Stewart Hildebrand wrote:
> From: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>
> 
> Use the per-domain PCI read/write lock to protect the presence of the
> pci device vpci field. This lock can be used (and in a few cases is used
> right away) so that vpci removal can be performed while holding the lock
> in write mode. Previously such removal could race with vpci_read for
> example.
> 
> When taking both d->pci_lock and pdev->vpci->lock, they should be
> taken in this exact order: d->pci_lock then pdev->vpci->lock to avoid
> possible deadlock situations.
> 
> 1. Per-domain's pci_lock is used to protect pdev->vpci structure
> from being removed.
> 
> 2. Writing the command register and ROM BAR register may trigger
> modify_bars to run, which in turn may access multiple pdevs while
> checking for the existing BAR's overlap. The overlapping check, if
> done under the read lock, requires vpci->lock to be acquired on both
> devices being compared, which may produce a deadlock. It is not
> possible to upgrade read lock to write lock in such a case. So, in
> order to prevent the deadlock, use d->pci_lock in write mode instead.
> 
> All other code, which doesn't lead to pdev->vpci destruction and does
> not access multiple pdevs at the same time, can still use a
> combination of the read lock and pdev->vpci->lock.
> 
> 3. Drop const qualifier where the new rwlock is used and this is
> appropriate.
> 
> 4. Do not call process_pending_softirqs with any locks held. For that
> unlock prior the call and re-acquire the locks after. After
> re-acquiring the lock there is no need to check if pdev->vpci exists:
>  - in apply_map because of the context it is called (no race condition
>    possible)
>  - for MSI/MSI-X debug code because it is called at the end of
>    pdev->vpci access and no further access to pdev->vpci is made
> 
> 5. Use d->pci_lock around for_each_pdev and pci_get_pdev_by_domain
> while accessing pdevs in vpci code.
> 
> Suggested-by: Roger Pau Monné <roger.pau@citrix.com>
> Suggested-by: Jan Beulich <jbeulich@suse.com>
> Signed-off-by: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>
> Signed-off-by: Volodymyr Babchuk <volodymyr_babchuk@epam.com>
> Signed-off-by: Stewart Hildebrand <stewart.hildebrand@amd.com>
> Reviewed-by: Roger Pau Monné <roger.pau@citrix.com>

While I know Roger did offer the tag with certain adjustments, ...

> @@ -913,7 +911,12 @@ int vpci_msix_arch_print(const struct vpci_msix *msix)
>              struct pci_dev *pdev = msix->pdev;
>  
>              spin_unlock(&msix->pdev->vpci->lock);
> +            read_unlock(&pdev->domain->pci_lock);
>              process_pending_softirqs();
> +
> +            if ( !read_trylock(&pdev->domain->pci_lock) )
> +                return -EBUSY;
> +
>              /* NB: we assume that pdev cannot go away for an alive domain. */
>              if ( !pdev->vpci || !spin_trylock(&pdev->vpci->lock) )
>                  return -EBUSY;

... I'm sure he was assuming you would get this right, in also
dropping the 1st-try-acquired lock when this 2nd try-lock fails.
Personally I feel this is the kind of change one would better not
offer (or take) R-b ahead of time.

I further think the respective comment in vpci_dump_msi() also wants
adjusting from singular to plural.

Jan


From xen-devel-bounces@lists.xenproject.org Mon Jan 15 09:07:18 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 15 Jan 2024 09:07:18 +0000
Received: from list by lists.xenproject.org with outflank-mailman.667230.1038280 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPIw3-0004bp-70; Mon, 15 Jan 2024 09:07:11 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 667230.1038280; Mon, 15 Jan 2024 09:07:11 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPIw3-0004bi-3J; Mon, 15 Jan 2024 09:07:11 +0000
Received: by outflank-mailman (input) for mailman id 667230;
 Mon, 15 Jan 2024 09:07:09 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=jLm1=IZ=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rPIw1-0004bc-O0
 for xen-devel@lists.xenproject.org; Mon, 15 Jan 2024 09:07:09 +0000
Received: from mail-lf1-x134.google.com (mail-lf1-x134.google.com
 [2a00:1450:4864:20::134])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 75551a1d-b385-11ee-9b0f-b553b5be7939;
 Mon, 15 Jan 2024 10:07:07 +0100 (CET)
Received: by mail-lf1-x134.google.com with SMTP id
 2adb3069b0e04-50e9e5c97e1so10536339e87.0
 for <xen-devel@lists.xenproject.org>; Mon, 15 Jan 2024 01:07:07 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 t30-20020a02b19e000000b0046d950cf82bsm2200479jah.85.2024.01.15.01.07.05
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 15 Jan 2024 01:07:06 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 75551a1d-b385-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1705309627; x=1705914427; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=7lTwm/RchhPfKQClcsMYPVfiFqGv8zg/eFQBRH1aqGw=;
        b=YC6zwR0bPs4STKg4hroNG5+QgQtrXbOTmMw5vwpnv+n9QKk1NtqokSA1jMkyqU1hk1
         oD0eCDbcuywsIZDM5WbibGfEOw+nI5K0dR568J5DNAyzSd/h282F2+T/cjPkxWlNC0p4
         4897t097eipfkgcNIpWVzaaIO6ZAZdYxeJdS8+cKfi/NNktsmsr80XIl0OJ3HxgEpJ9u
         NL0k3xkKh3JAojn0osA67lR4v+m01l/gL9YO4WQovmdOOeAXbp76VGR7eHzq3iL+2CX1
         7DsPIZ9azvoIgC6ax7JbXH/BbSmqp3Cmxwov6zv61iahSGyJrJJ/FpZ6t/Fj2elz9XKy
         YdgQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705309627; x=1705914427;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=7lTwm/RchhPfKQClcsMYPVfiFqGv8zg/eFQBRH1aqGw=;
        b=WpPu/JdkZwibJ9ce9/ZslVdlzPj3hTDa3zrrse/q4h8hnyvm8N6MK8mic20TeOodK9
         h0FZWPhT0UOVcr7vZNb+tePV1JQsQrM169Rp0oGb20OuqjL2TMOrDW8NcNJtyRuJjnA5
         TfkFW5LjEwc7IRNyj07TWyJw8ZsFdLZcE99Gzp7OrLb4p2Z5O/y5aTNSQA7ifF4KLkKd
         hN5sDQxWI4NvVabZp72YmoCu3uqbe4PFDf2aiU0pmJ91esOzAZfsPf+gHl76jRfMXZqs
         QQD6lCc7Ey034UQWePdC1jRlBgoMZg9n8Kv6F+O0TQGs2fTsUjAfuiZXptJM6q5nlPTs
         ZcBg==
X-Gm-Message-State: AOJu0Yz+0ThmhK3tB7RK0rqZYqh/izapDFnPXrLqTw44pYtq8e6HPmD4
	bWfY5fTfP5lIn/a8J8x7+zqT3o1a0yQq
X-Google-Smtp-Source: AGHT+IHSs1iH3qQYiN0gDEEbCUZYDCg0PnStPvVs0K+4Akvy9Ay5Iway5xFwdfVDoP3Muy8izb2ykQ==
X-Received: by 2002:ac2:4294:0:b0:50e:b301:f386 with SMTP id m20-20020ac24294000000b0050eb301f386mr1953929lfh.104.1705309627178;
        Mon, 15 Jan 2024 01:07:07 -0800 (PST)
Message-ID: <2e2bc9b7-f0c0-4924-89f6-8717e10266de@suse.com>
Date: Mon, 15 Jan 2024 10:07:07 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v12 09/15] vpci/header: program p2m with guest BAR view
Content-Language: en-US
To: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Stewart Hildebrand <stewart.hildebrand@amd.com>
Cc: xen-devel@lists.xenproject.org,
 Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>,
 "Daniel P. Smith" <dpsmith@apertussolutions.com>,
 Volodymyr Babchuk <volodymyr_babchuk@epam.com>
References: <20240109215145.430207-1-stewart.hildebrand@amd.com>
 <20240109215145.430207-10-stewart.hildebrand@amd.com>
 <ZaFVhaVvpDljEgdM@macbook>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <ZaFVhaVvpDljEgdM@macbook>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 12.01.2024 16:06, Roger Pau Monné wrote:
> On Tue, Jan 09, 2024 at 04:51:24PM -0500, Stewart Hildebrand wrote:
>> From: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>
>> +        /*
>> +         * Make sure that the guest set address has the same page offset
>> +         * as the physical address on the host or otherwise things won't work as
>> +         * expected.
>> +         */
>> +        if ( PAGE_OFFSET(bar->guest_addr) != PAGE_OFFSET(bar->addr) )
>> +        {
>> +            gprintk(XENLOG_G_WARNING,
>> +                    "%pp: Can't map BAR%d because of page offset mismatch: %lx vs %lx\n",
>                                            ^u
> 
> Also when using the x modifier it's better to also use # to print the
> 0x prefix.  You can also reduce the length of the message using
> s/because of/due to/ IMO:
> 
> %pp: Can't map BAR%u due to offset mismatch: %lx vs %lx

Or even

%pp: can't map BAR%u - offset mismatch: %lx vs %lx

? Note also my use of lower-case 'c', which brings this log message in
line with all pre-existing (prior to the whole series) vPCI log messages
starting with "%pp: " (when not limiting to thus-prefixed there are a
couple of "Failed to ..." outliers).

Jan


From xen-devel-bounces@lists.xenproject.org Mon Jan 15 09:12:15 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 15 Jan 2024 09:12:15 +0000
Received: from list by lists.xenproject.org with outflank-mailman.667235.1038290 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPJ0u-0006bn-Rn; Mon, 15 Jan 2024 09:12:12 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 667235.1038290; Mon, 15 Jan 2024 09:12:12 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPJ0u-0006bg-PA; Mon, 15 Jan 2024 09:12:12 +0000
Received: by outflank-mailman (input) for mailman id 667235;
 Mon, 15 Jan 2024 09:12:11 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=jLm1=IZ=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rPJ0t-0006bY-FC
 for xen-devel@lists.xenproject.org; Mon, 15 Jan 2024 09:12:11 +0000
Received: from mail-wm1-x332.google.com (mail-wm1-x332.google.com
 [2a00:1450:4864:20::332])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 299b1df8-b386-11ee-98f1-6d05b1d4d9a1;
 Mon, 15 Jan 2024 10:12:10 +0100 (CET)
Received: by mail-wm1-x332.google.com with SMTP id
 5b1f17b1804b1-40e80046264so727315e9.0
 for <xen-devel@lists.xenproject.org>; Mon, 15 Jan 2024 01:12:10 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 k9-20020a05600c1c8900b0040d772030c2sm15067359wms.44.2024.01.15.01.12.09
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 15 Jan 2024 01:12:09 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 299b1df8-b386-11ee-98f1-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1705309929; x=1705914729; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:cc:references
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=CUIdAHMbyBcA5TI/c11EvN3FbqEVX14Ws80LcvSbcds=;
        b=P8lIrR+PP5e7O/0kQ3IaDI6XsxLik3EGgpGR32dP2ngZiQ1r0JfZR5h3Yko+tyY32k
         iBDhipqbhwZnPqOy4BR8gR551T/OhZK7hjBhlRcjchksSGIZlB84Rq/M9dTFHsBBNOZD
         UEsMvwaI7YW3dJNppMWMNOZn/wls1+NIFpCigFwzy3+uJanU5IL7l3tDZZiLJWCcZbPo
         2Aslz9KThs94tmbxNbwVVJzvfeuXCneKnKNaHkwCSg3FSPvPabNxyxExYxN89K2uk7YN
         +x4vJtH4NM8M6qlRI+zdjT16or4znRPMaHw87qpfuMjniLM1/DPmK+fiHxLmssrY6hbK
         xzwg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705309929; x=1705914729;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:cc:references
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=CUIdAHMbyBcA5TI/c11EvN3FbqEVX14Ws80LcvSbcds=;
        b=mCl27UMAToNHj7928YlVXMnILKOZjxkLHS4sWYJan/C1i6N260y2revPYnkJ+Y6PcG
         0fem9Oz0O08j7AZiPwHnPRnhonAUbMjWDXbU+pj/J/YEr2lMi2SwbH+JQCix0vf8LB1Z
         1NX1Q0GRbCglIGR/KyTUWN+43hxlOh/HeMBe5s5PdCgYJZ0Zln20seUlYklDCCV7IUgp
         sMJLuucaqaejiYLxvzHAz6C6lp0Fj9z66JP2upgSfjyx2K3LcMv3RbuTVsSarOi6or42
         kMcwMgHYnA3EAeQ7s7UXRywdQ4B1UF5KksDBNzBI/BxPsokhyCpJLfr+88SAL/lsI0AS
         SlZw==
X-Gm-Message-State: AOJu0YwfkwU3Do3h088gwXyfs2f/WARxvpUE3kR4bCj22l54A0wPwCOq
	QaKtFbWJxYGcnl7/wSRWInelnH4YxxT2E+tJcILpJFcpKw==
X-Google-Smtp-Source: AGHT+IFB9CehI+j208HVGlwOGQTTQxOaWyKHEwJXFaa/jF5WTe8IQ+NGn5OJmeEsFiwZ5pttjEM0bA==
X-Received: by 2002:a05:600c:4686:b0:40e:3511:2c39 with SMTP id p6-20020a05600c468600b0040e35112c39mr3219720wmo.172.1705309929552;
        Mon, 15 Jan 2024 01:12:09 -0800 (PST)
Message-ID: <b6b92c4e-6331-4f32-8c98-312847537e26@suse.com>
Date: Mon, 15 Jan 2024 10:12:12 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [linux-linus test] 184346: regressions - FAIL
Content-Language: en-US
To: osstest service owner <osstest-admin@xenproject.org>
References: <osstest-184346-mainreport@xen.org>
Cc: xen-devel@lists.xenproject.org
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <osstest-184346-mainreport@xen.org>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 15.01.2024 09:39, osstest service owner wrote:
> flight 184346 linux-linus real [real]
> flight 184349 linux-linus real-retest [real]
> http://logs.test-lab.xenproject.org/osstest/logs/184346/
> http://logs.test-lab.xenproject.org/osstest/logs/184349/
> 
> Regressions :-(
> 
> Tests which did not succeed and are blocking,
> including tests which could not be run:
>  test-arm64-arm64-xl-credit1  12 debian-install           fail REGR. vs. 184270
>  test-arm64-arm64-xl-xsm      12 debian-install           fail REGR. vs. 184270
>  test-arm64-arm64-xl          12 debian-install           fail REGR. vs. 184270

Taking this as example:

gzip: stdout: No space left on device

No idea whether we've been running very close to the edge, or whether
something caused a drastic increase of disk space requirements.

Jan

>  test-arm64-arm64-xl-thunderx 12 debian-install           fail REGR. vs. 184270
>  test-arm64-arm64-xl-credit2  12 debian-install           fail REGR. vs. 184270
>  test-arm64-arm64-libvirt-xsm 12 debian-install           fail REGR. vs. 184270
> 
> Tests which did not succeed, but are not blocking:
>  test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 184270
>  test-amd64-amd64-xl-qemut-win7-amd64 19 guest-stop            fail like 184270
>  test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 184270
>  test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 184270
>  test-armhf-armhf-libvirt-raw 15 saverestore-support-check    fail  like 184270
>  test-amd64-amd64-xl-qemut-ws16-amd64 19 guest-stop            fail like 184270
>  test-armhf-armhf-libvirt-qcow2 15 saverestore-support-check   fail like 184270
>  test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 184270
>  test-amd64-amd64-libvirt     15 migrate-support-check        fail   never pass
>  test-amd64-amd64-libvirt-xsm 15 migrate-support-check        fail   never pass
>  test-armhf-armhf-xl-arndale  15 migrate-support-check        fail   never pass
>  test-armhf-armhf-xl-arndale  16 saverestore-support-check    fail   never pass
>  test-armhf-armhf-xl-multivcpu 15 migrate-support-check        fail  never pass
>  test-armhf-armhf-xl-multivcpu 16 saverestore-support-check    fail  never pass
>  test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
>  test-armhf-armhf-libvirt     15 migrate-support-check        fail   never pass
>  test-armhf-armhf-xl          15 migrate-support-check        fail   never pass
>  test-armhf-armhf-xl          16 saverestore-support-check    fail   never pass
>  test-armhf-armhf-xl-rtds     15 migrate-support-check        fail   never pass
>  test-armhf-armhf-xl-rtds     16 saverestore-support-check    fail   never pass
>  test-armhf-armhf-xl-credit1  15 migrate-support-check        fail   never pass
>  test-armhf-armhf-xl-credit1  16 saverestore-support-check    fail   never pass
>  test-amd64-amd64-libvirt-raw 14 migrate-support-check        fail   never pass
>  test-armhf-armhf-xl-credit2  15 migrate-support-check        fail   never pass
>  test-armhf-armhf-xl-credit2  16 saverestore-support-check    fail   never pass
>  test-arm64-arm64-libvirt-raw 14 migrate-support-check        fail   never pass
>  test-arm64-arm64-libvirt-raw 15 saverestore-support-check    fail   never pass
>  test-arm64-arm64-xl-vhd      14 migrate-support-check        fail   never pass
>  test-arm64-arm64-xl-vhd      15 saverestore-support-check    fail   never pass
>  test-armhf-armhf-libvirt-raw 14 migrate-support-check        fail   never pass
>  test-armhf-armhf-xl-vhd      14 migrate-support-check        fail   never pass
>  test-armhf-armhf-xl-vhd      15 saverestore-support-check    fail   never pass
>  test-amd64-amd64-libvirt-qcow2 14 migrate-support-check        fail never pass
>  test-armhf-armhf-libvirt-qcow2 14 migrate-support-check        fail never pass
> 
> version targeted for testing:
>  linux                052d534373b7ed33712a63d5e17b2b6cdbce84fd
> baseline version:
>  linux                0dd3ee31125508cd67f7e7172247f05b7fd1753a
> 
> Last test of basis   184270  2024-01-07 20:42:19 Z    7 days
> Failing since        184283  2024-01-08 20:10:43 Z    6 days   11 attempts
> Testing same since   184338  2024-01-13 05:40:28 Z    2 days    4 attempts
> 
> ------------------------------------------------------------
> 1701 people touched revisions under test,
> not listing them all
> 
> jobs:
>  build-amd64-xsm                                              pass    
>  build-arm64-xsm                                              pass    
>  build-i386-xsm                                               pass    
>  build-amd64                                                  pass    
>  build-arm64                                                  pass    
>  build-armhf                                                  pass    
>  build-i386                                                   pass    
>  build-amd64-libvirt                                          pass    
>  build-arm64-libvirt                                          pass    
>  build-armhf-libvirt                                          pass    
>  build-i386-libvirt                                           pass    
>  build-amd64-pvops                                            pass    
>  build-arm64-pvops                                            pass    
>  build-armhf-pvops                                            pass    
>  build-i386-pvops                                             pass    
>  test-amd64-amd64-xl                                          pass    
>  test-amd64-coresched-amd64-xl                                pass    
>  test-arm64-arm64-xl                                          fail    
>  test-armhf-armhf-xl                                          pass    
>  test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm           pass    
>  test-amd64-amd64-xl-qemut-stubdom-debianhvm-amd64-xsm        pass    
>  test-amd64-amd64-xl-qemut-debianhvm-i386-xsm                 pass    
>  test-amd64-amd64-xl-qemuu-debianhvm-i386-xsm                 pass    
>  test-amd64-amd64-libvirt-xsm                                 pass    
>  test-arm64-arm64-libvirt-xsm                                 fail    
>  test-amd64-amd64-xl-xsm                                      pass    
>  test-arm64-arm64-xl-xsm                                      fail    
>  test-amd64-amd64-qemuu-nested-amd                            fail    
>  test-amd64-amd64-xl-pvhv2-amd                                pass    
>  test-amd64-amd64-dom0pvh-xl-amd                              pass    
>  test-amd64-amd64-xl-qemut-debianhvm-amd64                    pass    
>  test-amd64-amd64-xl-qemuu-debianhvm-amd64                    pass    
>  test-amd64-amd64-freebsd11-amd64                             pass    
>  test-amd64-amd64-freebsd12-amd64                             pass    
>  test-amd64-amd64-xl-qemuu-ovmf-amd64                         pass    
>  test-amd64-amd64-xl-qemut-win7-amd64                         fail    
>  test-amd64-amd64-xl-qemuu-win7-amd64                         fail    
>  test-amd64-amd64-xl-qemut-ws16-amd64                         fail    
>  test-amd64-amd64-xl-qemuu-ws16-amd64                         fail    
>  test-armhf-armhf-xl-arndale                                  pass    
>  test-amd64-amd64-examine-bios                                pass    
>  test-amd64-amd64-xl-credit1                                  pass    
>  test-arm64-arm64-xl-credit1                                  fail    
>  test-armhf-armhf-xl-credit1                                  pass    
>  test-amd64-amd64-xl-credit2                                  pass    
>  test-arm64-arm64-xl-credit2                                  fail    
>  test-armhf-armhf-xl-credit2                                  pass    
>  test-amd64-amd64-xl-qemuu-dmrestrict-amd64-dmrestrict        pass    
>  test-amd64-amd64-examine                                     pass    
>  test-arm64-arm64-examine                                     pass    
>  test-armhf-armhf-examine                                     pass    
>  test-amd64-amd64-qemuu-nested-intel                          pass    
>  test-amd64-amd64-xl-pvhv2-intel                              pass    
>  test-amd64-amd64-dom0pvh-xl-intel                            pass    
>  test-amd64-amd64-libvirt                                     pass    
>  test-armhf-armhf-libvirt                                     pass    
>  test-amd64-amd64-xl-multivcpu                                pass    
>  test-armhf-armhf-xl-multivcpu                                pass    
>  test-amd64-amd64-pair                                        pass    
>  test-amd64-amd64-libvirt-pair                                pass    
>  test-amd64-amd64-xl-pvshim                                   pass    
>  test-amd64-amd64-pygrub                                      pass    
>  test-amd64-amd64-libvirt-qcow2                               pass    
>  test-armhf-armhf-libvirt-qcow2                               pass    
>  test-amd64-amd64-libvirt-raw                                 pass    
>  test-arm64-arm64-libvirt-raw                                 pass    
>  test-armhf-armhf-libvirt-raw                                 pass    
>  test-amd64-amd64-xl-rtds                                     pass    
>  test-armhf-armhf-xl-rtds                                     pass    
>  test-amd64-amd64-xl-qemuu-debianhvm-amd64-shadow             pass    
>  test-amd64-amd64-xl-shadow                                   pass    
>  test-arm64-arm64-xl-thunderx                                 fail    
>  test-amd64-amd64-examine-uefi                                pass    
>  test-amd64-amd64-xl-vhd                                      pass    
>  test-arm64-arm64-xl-vhd                                      pass    
>  test-armhf-armhf-xl-vhd                                      pass    
> 
> 
> ------------------------------------------------------------
> sg-report-flight on osstest.test-lab.xenproject.org
> logs: /home/logs/logs
> images: /home/logs/images
> 
> Logs, config files, etc. are available at
>     http://logs.test-lab.xenproject.org/osstest/logs
> 
> Explanation of these reports, and of osstest in general, is at
>     http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
>     http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master
> 
> Test harness code can be found at
>     http://xenbits.xen.org/gitweb?p=osstest.git;a=summary
> 
> 
> Not pushing.
> 
> (No revision log; it would be 204832 lines long.)
> 



From xen-devel-bounces@lists.xenproject.org Mon Jan 15 09:17:13 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 15 Jan 2024 09:17:13 +0000
Received: from list by lists.xenproject.org with outflank-mailman.667240.1038300 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPJ5h-0007E2-EC; Mon, 15 Jan 2024 09:17:09 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 667240.1038300; Mon, 15 Jan 2024 09:17:09 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPJ5h-0007Dv-Ak; Mon, 15 Jan 2024 09:17:09 +0000
Received: by outflank-mailman (input) for mailman id 667240;
 Mon, 15 Jan 2024 09:17:07 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rPJ5f-0007Dl-PI; Mon, 15 Jan 2024 09:17:07 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rPJ5f-00071G-Dr; Mon, 15 Jan 2024 09:17:07 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rPJ5f-0004i4-0B; Mon, 15 Jan 2024 09:17:07 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rPJ5e-0007df-Vv; Mon, 15 Jan 2024 09:17:06 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=HTlFTx/W69W9vWcjlUC73FMa9ZylvKIEbFq5OZT0CLs=; b=SCSDoDMr1kDg+trh+WbSsuBPC1
	TT9fbGrAf9i/Ecsgnj9HA/V6k8tJI/uKUZI+c224W+HM2e36zlVhSQvZWSZSjsa+9DXJFblsc20up
	DxVoWOCVFK57qemcuW5SgfOXkVdwZLmK83JdJn+ZQkziMt/TzucEyn1sIpbWHfxeBN/8=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184350-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [ovmf test] 184350: all pass - PUSHED
X-Osstest-Versions-This:
    ovmf=6a01fb2ea5b3b142a98f3649b0947268f038f389
X-Osstest-Versions-That:
    ovmf=f5b91c60ef24eecf5702e061dd7fd700943405b2
From: osstest service owner <osstest-admin@xenproject.org>
Date: Mon, 15 Jan 2024 09:17:06 +0000

flight 184350 ovmf real [real]
http://logs.test-lab.xenproject.org/osstest/logs/184350/

Perfect :-)
All tests in this flight passed as required
version targeted for testing:
 ovmf                 6a01fb2ea5b3b142a98f3649b0947268f038f389
baseline version:
 ovmf                 f5b91c60ef24eecf5702e061dd7fd700943405b2

Last test of basis   184348  2024-01-15 01:56:07 Z    0 days
Testing same since   184350  2024-01-15 07:12:42 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Heng Luo <heng.luo@intel.com>
  Tuan Phan <tphan@ventanamicro.com>

jobs:
 build-amd64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-amd64-amd64-xl-qemuu-ovmf-amd64                         pass    
 test-amd64-i386-xl-qemuu-ovmf-amd64                          pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Pushing revision :

To xenbits.xen.org:/home/xen/git/osstest/ovmf.git
   f5b91c60ef..6a01fb2ea5  6a01fb2ea5b3b142a98f3649b0947268f038f389 -> xen-tested-master


From xen-devel-bounces@lists.xenproject.org Mon Jan 15 09:26:36 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 15 Jan 2024 09:26:36 +0000
Received: from list by lists.xenproject.org with outflank-mailman.667245.1038309 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPJEj-0000zy-9T; Mon, 15 Jan 2024 09:26:29 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 667245.1038309; Mon, 15 Jan 2024 09:26:29 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPJEj-0000zr-6n; Mon, 15 Jan 2024 09:26:29 +0000
Received: by outflank-mailman (input) for mailman id 667245;
 Mon, 15 Jan 2024 09:26:28 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=TGva=IZ=gmail.com=oleksii.kurochko@srs-se1.protection.inumbo.net>)
 id 1rPJEh-0000zj-US
 for xen-devel@lists.xenproject.org; Mon, 15 Jan 2024 09:26:28 +0000
Received: from mail-ej1-x62d.google.com (mail-ej1-x62d.google.com
 [2a00:1450:4864:20::62d])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 2823f4d1-b388-11ee-98f1-6d05b1d4d9a1;
 Mon, 15 Jan 2024 10:26:26 +0100 (CET)
Received: by mail-ej1-x62d.google.com with SMTP id
 a640c23a62f3a-a2d04888d3dso235017666b.2
 for <xen-devel@lists.xenproject.org>; Mon, 15 Jan 2024 01:26:26 -0800 (PST)
Received: from [192.168.206.239] ([94.75.70.14])
 by smtp.gmail.com with ESMTPSA id
 q21-20020a1709066b1500b00a2990007447sm5024457ejr.122.2024.01.15.01.26.24
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 15 Jan 2024 01:26:25 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 2823f4d1-b388-11ee-98f1-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1705310786; x=1705915586; darn=lists.xenproject.org;
        h=mime-version:user-agent:content-transfer-encoding:references
         :in-reply-to:date:cc:to:from:subject:message-id:from:to:cc:subject
         :date:message-id:reply-to;
        bh=twn8mxq6QWu6op/kJWNGEolTbdkLvo3nNC4I8/wKp6Q=;
        b=aMLGYJaVdwOPJahDNj+fN1tSPE3MdHMaxyMKdk2xeWg42pbcS92Y9v8/gx2yQ4Qxwp
         amNsxBrzMtGCoIUJzdD3CHgGaMXgDCIub2eyrO3kvfrDCkVIkqVdtcxvcvtH1w0dGQoE
         u00q1poQSKkKQCMb1WFrAhmzrlHA1h3BnBzuv3N3RS/mCm+V7JvLtotELTPfIFWNRps7
         GGoPmpXu+vQ6GmLpSxrNsU3fU3QBjfnGKLzaOzFhq566B/mGolxpHGCZgbaB5im0Ujqk
         hnX1SOv6PKQYq0xiz/fua+ltoEEr7Q16kiO0BsekTBT2o4/wkkqeUUEL/pyRk23RQJ+D
         Ctdw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705310786; x=1705915586;
        h=mime-version:user-agent:content-transfer-encoding:references
         :in-reply-to:date:cc:to:from:subject:message-id:x-gm-message-state
         :from:to:cc:subject:date:message-id:reply-to;
        bh=twn8mxq6QWu6op/kJWNGEolTbdkLvo3nNC4I8/wKp6Q=;
        b=KreEmfck7OjVpAIKiXkZWaZm60otyqPJjw4lVnaAG4K2157rBascLJqJW0DKQYO99L
         FU+8Nuhjizc/vqHLEs0oMhAnToB6HW6LMzftPoHPyk1t4iD9FmbutI+f4/Gsl0dLLgLi
         MkDn1GFOzncgy9Xhk3bZdH/X7wBRG0mswisHqZ1BZnXDETSmfQ+evBV8wQDSR8qvr8Vf
         gvLIFftA4f72/j1rHceK9t3tet50Idv7nNpc83Lzjk6LTAc9FfNmhYHmLUHmm0CrXFWT
         trFFh4LcoVHvfnCh5EhU7PaTVqhVYz45CtYLpl/x9Pw86XTPteIa++OIWHA1o9l2zStE
         a4aw==
X-Gm-Message-State: AOJu0YwZSNBNmUi1lWZhM6qTKdxHxQd9xcUf2KL18dC6KIBb6qETqM9U
	zy8Jdax5vlvcNC+YF9f+iQY=
X-Google-Smtp-Source: AGHT+IEgcI3SDw1hYUzuO0HkE+6F/LQQxTB0oKGKGUfbjjcbiPhIsDSn8zZITt2h4xmjQQgVYs3pLA==
X-Received: by 2002:a17:907:a094:b0:a2b:5d55:c322 with SMTP id hu20-20020a170907a09400b00a2b5d55c322mr2550239ejc.25.1705310785933;
        Mon, 15 Jan 2024 01:26:25 -0800 (PST)
Message-ID: <b518eb0c42b4c14cf6ae2bae781dfdc32df8c500.camel@gmail.com>
Subject: Re: [PATCH v3 05/34] xen/riscv: introduce guest_atomics.h
From: Oleksii <oleksii.kurochko@gmail.com>
To: Jan Beulich <jbeulich@suse.com>
Cc: Alistair Francis <alistair.francis@wdc.com>, Bob Eshleman
 <bobbyeshleman@gmail.com>, Connor Davis <connojdavis@gmail.com>, Andrew
 Cooper <andrew.cooper3@citrix.com>, George Dunlap
 <george.dunlap@citrix.com>,  Julien Grall <julien@xen.org>, Stefano
 Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>, 
 xen-devel@lists.xenproject.org
Date: Mon, 15 Jan 2024 11:26:24 +0200
In-Reply-To: <076d5ca3-90df-46ac-9309-a2a96ffc378d@suse.com>
References: <cover.1703255175.git.oleksii.kurochko@gmail.com>
	 <fdbe7261178d057d9868aacea19c1c2b82d2da16.1703255175.git.oleksii.kurochko@gmail.com>
	 <076d5ca3-90df-46ac-9309-a2a96ffc378d@suse.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: base64
User-Agent: Evolution 3.50.2 (3.50.2-1.fc39) 
MIME-Version: 1.0

T24gVGh1LCAyMDI0LTAxLTExIGF0IDE2OjU3ICswMTAwLCBKYW4gQmV1bGljaCB3cm90ZToKPiBP
biAyMi4xMi4yMDIzIDE2OjEyLCBPbGVrc2lpIEt1cm9jaGtvIHdyb3RlOgo+ID4gU2lnbmVkLW9m
Zi1ieTogT2xla3NpaSBLdXJvY2hrbyA8b2xla3NpaS5rdXJvY2hrb0BnbWFpbC5jb20+Cj4gPiAt
LS0KPiA+IENoYW5nZXMgaW4gVjM6Cj4gPiDCoC0gdXBkYXRlIHRoZSBjb21taXQgbWVzc2FnZQo+
IAo+IFRoZXJlIChzdGlsbCkgaXMgbm9uZSAtIHdoYXQgaXMgdGhlIGFib3ZlIGFib3V0PwpNaXNz
ZWQgc29tZXRoaW5nLiBJJ2xsIGRvdWJsZSBjaGVjayBkdXJpbmcgcHJvdmlkaW5nIHRoZSBuZXh0
IHBhdGNoCnZlcnNpb24uCj4gCj4gPiAtLS0gL2Rldi9udWxsCj4gPiArKysgYi94ZW4vYXJjaC9y
aXNjdi9pbmNsdWRlL2FzbS9ndWVzdF9hdG9taWNzLmgKPiA+IEBAIC0wLDAgKzEsNDkgQEAKPiA+
ICsvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5ICovCj4gPiArI2lmbmRl
ZiBfX0FTTV9SSVNDVl9HVUVTVF9BVE9NSUNTX0gKPiA+ICsjZGVmaW5lIF9fQVNNX1JJU0NWX0dV
RVNUX0FUT01JQ1NfSAo+ID4gKwo+ID4gKyNkZWZpbmUKPiA+IGd1ZXN0X3Rlc3RvcChuYW1lKcKg
wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC
oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgCj4gPiBcCj4gPiArc3RhdGlj
IGlubGluZSBpbnQgZ3Vlc3RfIyNuYW1lKHN0cnVjdCBkb21haW4gKmQsIGludCBuciwgdm9sYXRp
bGUKPiA+IHZvaWQgKnApwqAgXAo+ID4gK3vCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC
oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgCj4gPiDCoMKgwqDCoMKg
wqDCoMKgwqAgXAo+ID4gK8KgwqDCoCAodm9pZCkKPiA+IGQ7wqDCoMKgwqDCoMKgwqDCoMKgwqDC
oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBcCj4gPiArwqDC
oMKgICh2b2lkKQo+ID4gbnI7wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC
oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgXAo+ID4gK8KgwqDCoCAodm9pZCkKPiA+IHA7wqDC
oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC
oMKgwqDCoCBcCj4gCj4gV2hhdCBhcmUgdGhlc2UgYW5kIC4uLgo+IAo+ID4gK8KgwqDCoAo+ID4g
QVNTRVJUX1VOUkVBQ0hBQkxFKCk7wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAK
PiA+IMKgwqDCoMKgIFwKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC
oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAKPiA+IMKgwqDCoMKgwqDCoMKg
wqDCoCBcCj4gPiArwqDCoMKgIHJldHVybgo+ID4gMDvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC
oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFwKPiA+ICt9Cj4gPiAr
Cj4gPiArI2RlZmluZQo+ID4gZ3Vlc3RfYml0b3AobmFtZSnCoMKgwqDCoMKgwqDCoMKgwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC
oMKgwqDCoMKgwqDCoMKgwqDCoMKgCj4gPiBcCj4gPiArc3RhdGljIGlubGluZSB2b2lkIGd1ZXN0
XyMjbmFtZShzdHJ1Y3QgZG9tYWluICpkLCBpbnQgbnIsIHZvbGF0aWxlCj4gPiB2b2lkICpwKSBc
Cj4gPiAre8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC
oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAKPiA+IMKgwqDCoMKgwqDCoMKgwqDCoCBcCj4gPiArwqDC
oMKgICh2b2lkKQo+ID4gZDvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC
oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFwKPiA+ICvCoMKgwqAgKHZvaWQpCj4gPiBucjvC
oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC
oMKgwqDCoCBcCj4gPiArwqDCoMKgICh2b2lkKQo+ID4gcDvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC
oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFwKPiAKPiAuLi4g
dGhlc2UgYWJvdXQ/IElmIHRoZXJlJ3MgYSByZWFzb24gZm9yIGhhdmluZyB0aGVtLCB0aGVuIChu
aXQpCj4gdGhlcmUKPiBhcmUgc3RyYXkgYmxhbmtzLgpJdCBpcyBvbmx5IG9uZSByZWFzb24gZm9y
IHRoYXQgdG8gc2hvdyB0aGF0IGFyZ3MgYXJlIHVudXNlZCBmb3IgdGltZQpiZWluZy4KQnV0IEkg
dGhpbmsgSSBjYW4gZHJvcCB0aGVzZSBjaGFuZ2VzLgoKCn4gT2xla3NpaQo=



From xen-devel-bounces@lists.xenproject.org Mon Jan 15 09:28:44 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 15 Jan 2024 09:28:44 +0000
Received: from list by lists.xenproject.org with outflank-mailman.667249.1038319 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPJGs-0001uo-KO; Mon, 15 Jan 2024 09:28:42 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 667249.1038319; Mon, 15 Jan 2024 09:28:42 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPJGs-0001uh-Hp; Mon, 15 Jan 2024 09:28:42 +0000
Received: by outflank-mailman (input) for mailman id 667249;
 Mon, 15 Jan 2024 09:28:40 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=TGva=IZ=gmail.com=oleksii.kurochko@srs-se1.protection.inumbo.net>)
 id 1rPJGq-0001uU-Mm
 for xen-devel@lists.xenproject.org; Mon, 15 Jan 2024 09:28:40 +0000
Received: from mail-ed1-x529.google.com (mail-ed1-x529.google.com
 [2a00:1450:4864:20::529])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 76a93505-b388-11ee-9b0f-b553b5be7939;
 Mon, 15 Jan 2024 10:28:38 +0100 (CET)
Received: by mail-ed1-x529.google.com with SMTP id
 4fb4d7f45d1cf-558ac3407eeso4245776a12.0
 for <xen-devel@lists.xenproject.org>; Mon, 15 Jan 2024 01:28:38 -0800 (PST)
Received: from [192.168.206.239] ([94.75.70.14])
 by smtp.gmail.com with ESMTPSA id
 gc9-20020a170906c8c900b00a26f1f36708sm5057649ejb.78.2024.01.15.01.28.36
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 15 Jan 2024 01:28:37 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 76a93505-b388-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1705310918; x=1705915718; darn=lists.xenproject.org;
        h=mime-version:user-agent:content-transfer-encoding:references
         :in-reply-to:date:cc:to:from:subject:message-id:from:to:cc:subject
         :date:message-id:reply-to;
        bh=7+IfC7nTCHh8oZHfuYjonPeTJCBGQBnZJJ9mWA4ybBg=;
        b=Zr870K9TLJCqYtxacLyr91grGluxidRGfm3S/k9AqcaHuJkmAtJpXx5lOyatvdHIPa
         5yBgAwu5ACMAgvj9Fphly6Phk2QobWPX7BIKJ+YKFW527vGbqmeKtLRXMK5OTggJrSDM
         R7I2OrPxLas/DaGPPWNtnpSMGR//YSPYIvMJQ/DWnwwSpi9Ol3JzMXseWFDS577LREUI
         hE8jdlc4gNrRxbxu0xTk9Pzku7GDpd2wxX5079ipbD69fTZGPb7s20t3N1ImLANEqVmJ
         lXSsXXUZ3uxFfjemPISC5dPxy4vYGWr89wA7xI0X3WR8hJ+MwaKvRDV6N5xOjIQPQiU5
         o5bQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705310918; x=1705915718;
        h=mime-version:user-agent:content-transfer-encoding:references
         :in-reply-to:date:cc:to:from:subject:message-id:x-gm-message-state
         :from:to:cc:subject:date:message-id:reply-to;
        bh=7+IfC7nTCHh8oZHfuYjonPeTJCBGQBnZJJ9mWA4ybBg=;
        b=EoJD1avFzkOvmWgV+vXWQv531FAy+HehZ5hAJX6KB7EFMU0bpRb/DzuSscVCmRwkUF
         9Yj4xxrugaheloyJOALDiWzvGNdbckP3SiM8WjDOpctB41oSxGF3wM88T8Q7+6m2kKIh
         xuRAc1v0pQZPnTjzcPoSQFleSY2twBu7oqTP4L2SRBBXDT4sWQTqNSc3LlZ077BEB76d
         Fk2H2oKx5EhPUu4Kw7MnQf5OunKk+O0RUoVxEMddfKUW9h1rfOkdEaDJ1Sc8KtcQKPfR
         y1GoIt1Gr9p6vZAd0DZfcKO6DqatiW7UF2JeSdelbLIrG3JGkm7BJAhiK5WM7SPfJdyd
         Zyww==
X-Gm-Message-State: AOJu0YyRlED0+xQO+G8ZA6hov8SMNBy/LTzfFs+fi4bqdCtJ9JLUHNSW
	QrNDYJZiTvr0Do+IndJQraI=
X-Google-Smtp-Source: AGHT+IENWWoOp+qDp5OV+psCAvRpeIdzwELhzYM+fK26FoIdeZc0ze5Dh0IHEWV2vllccJbQQuoQww==
X-Received: by 2002:a17:907:a0d3:b0:a2d:474e:8236 with SMTP id hw19-20020a170907a0d300b00a2d474e8236mr1504953ejc.134.1705310917851;
        Mon, 15 Jan 2024 01:28:37 -0800 (PST)
Message-ID: <68d40ce9945939ce707707a07417d2fbe538509b.camel@gmail.com>
Subject: Re: [PATCH v3 09/34] xen/riscv: introduce system.h
From: Oleksii <oleksii.kurochko@gmail.com>
To: Jan Beulich <jbeulich@suse.com>
Cc: Alistair Francis <alistair.francis@wdc.com>, Bob Eshleman
 <bobbyeshleman@gmail.com>, Connor Davis <connojdavis@gmail.com>, Andrew
 Cooper <andrew.cooper3@citrix.com>, George Dunlap
 <george.dunlap@citrix.com>,  Julien Grall <julien@xen.org>, Stefano
 Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>, 
 xen-devel@lists.xenproject.org
Date: Mon, 15 Jan 2024 11:28:36 +0200
In-Reply-To: <8ca3cc48-47d4-4200-b373-a92a732b59b8@suse.com>
References: <cover.1703255175.git.oleksii.kurochko@gmail.com>
	 <e577e055932d05ec34f01db57d1b2d2b1be5418d.1703255175.git.oleksii.kurochko@gmail.com>
	 <8ca3cc48-47d4-4200-b373-a92a732b59b8@suse.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: base64
User-Agent: Evolution 3.50.2 (3.50.2-1.fc39) 
MIME-Version: 1.0

T24gVGh1LCAyMDI0LTAxLTExIGF0IDE3OjAwICswMTAwLCBKYW4gQmV1bGljaCB3cm90ZToKPiBP
biAyMi4xMi4yMDIzIDE2OjEyLCBPbGVrc2lpIEt1cm9jaGtvIHdyb3RlOgo+ID4gLS0tIC9kZXYv
bnVsbAo+ID4gKysrIGIveGVuL2FyY2gvcmlzY3YvaW5jbHVkZS9hc20vc3lzdGVtLmgKPiA+IEBA
IC0wLDAgKzEsOTAgQEAKPiA+ICsvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1v
bmx5ICovCj4gPiArCj4gPiArI2lmbmRlZiBfQVNNX1JJU0NWX0JBUlJJRVJfSAo+ID4gKyNkZWZp
bmUgX0FTTV9SSVNDVl9CQVJSSUVSX0gKPiAKPiBzL0JBUlJJRVIvU1lTVEVNLyA/ClllcywgaXQg
c2hvdWxkIGJlIFNZU1RFTS4gVGhhbmtzIGZvciBub3RpY2luZyB0aGF0LgoKPiAKPiBXaXRoIHRo
YXQgdGFrZW4gY2FyZSBvZiAod2hpY2ggSSdkIGJlIGhhcHB5IHRvIGRvIHdoaWxlIGNvbW1pdHRp
bmcpCj4gQWNrZWQtYnk6IEphbiBCZXVsaWNoIDxqYmV1bGljaEBzdXNlLmNvbT4KVGhhbmtzIGEg
bG90LiBJJ2xsIGJlIGhhcHB5IHdpdGggdGhhdC4KCj4gCj4gPiArI2luY2x1ZGUgPHhlbi9zdGRi
b29sLmg+Cj4gPiArCj4gPiArI2luY2x1ZGUgPGFzbS9jc3IuaD4KPiA+ICsKPiA+ICsjaWZuZGVm
IF9fQVNTRU1CTFlfXwo+ID4gKwo+ID4gKyNkZWZpbmUgUklTQ1ZfRkVOQ0UocCwgcykgXAo+ID4g
K8KgwqDCoCBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoICJmZW5jZSAiICNwICIsIiAjcyA6IDogOiAi
bWVtb3J5IiApCj4gPiArCj4gPiArLyogVGhlc2UgYmFycmllcnMgbmVlZCB0byBlbmZvcmNlIG9y
ZGVyaW5nIG9uIGJvdGggZGV2aWNlcyBvcgo+ID4gbWVtb3J5LiAqLwo+ID4gKyNkZWZpbmUgbWIo
KcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFJJU0NWX0ZFTkNFKGlvcncs
IGlvcncpCj4gPiArI2RlZmluZSBybWIoKcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg
wqDCoCBSSVNDVl9GRU5DRShpciwgaXIpCj4gPiArI2RlZmluZSB3bWIoKcKgwqDCoMKgwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBSSVNDVl9GRU5DRShvdywgb3cpCj4gPiArCj4gPiArLyog
VGhlc2UgYmFycmllcnMgZG8gbm90IG5lZWQgdG8gZW5mb3JjZSBvcmRlcmluZyBvbiBkZXZpY2Vz
LCBqdXN0Cj4gPiBtZW1vcnkuICovCj4gPiArI2RlZmluZSBzbXBfbWIoKcKgwqDCoMKgwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoCBSSVNDVl9GRU5DRShydywgcncpCj4gPiArI2RlZmluZSBzbXBfcm1i
KCnCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFJJU0NWX0ZFTkNFKHIsIHIpCj4gPiArI2Rl
ZmluZSBzbXBfd21iKCnCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFJJU0NWX0ZFTkNFKHcs
IHcpCj4gPiArI2RlZmluZSBzbXBfbWJfX2JlZm9yZV9hdG9taWMoKSBzbXBfbWIoKQo+ID4gKyNk
ZWZpbmUgc21wX21iX19hZnRlcl9hdG9taWMoKcKgIHNtcF9tYigpCj4gPiArCj4gPiArLyoKPiA+
ICsjZGVmaW5lIHNtcF9zdG9yZV9yZWxlYXNlKHAsIHYpwqDCoMKgwqDCoMKgwqDCoCBcCj4gPiAr
ZG8ge8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC
oMKgwqDCoMKgwqDCoMKgwqAgXAo+ID4gK8KgwqDCoCBjb21waWxldGltZV9hc3NlcnRfYXRvbWlj
X3R5cGUoKnApOyBcCj4gPiArwqDCoMKgIFJJU0NWX0ZFTkNFKHJ3LCB3KTvCoMKgwqDCoMKgwqDC
oMKgwqDCoMKgwqDCoMKgwqDCoCBcCj4gPiArwqDCoMKgIFdSSVRFX09OQ0UoKnAsIHYpO8KgwqDC
oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgXAo+ID4gK30gd2hpbGUgKDApCj4gPiArCj4g
PiArI2RlZmluZSBzbXBfbG9hZF9hY3F1aXJlKHApwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFwK
PiA+ICsoe8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFwKPiA+ICvCoMKgwqAgdHlwZW9mKCpwKSBwMSA9IFJF
QURfT05DRSgqcCk7wqDCoMKgwqDCoCBcCj4gPiArwqDCoMKgIGNvbXBpbGV0aW1lX2Fzc2VydF9h
dG9taWNfdHlwZSgqcCk7IFwKPiA+ICvCoMKgwqAgUklTQ1ZfRkVOQ0Uocixydyk7wqDCoMKgwqDC
oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBcCj4gPiArwqDCoMKgIHAxO8KgwqDCoMKgwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgXAo+ID4g
K30pCj4gPiArKi8KPiA+ICsKPiA+ICtzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcgbG9jYWxf
c2F2ZV9mbGFncyh2b2lkKQo+ID4gK3sKPiA+ICvCoMKgwqAgcmV0dXJuIGNzcl9yZWFkKHNzdGF0
dXMpOwo+ID4gK30KPiA+ICsKPiA+ICtzdGF0aWMgaW5saW5lIHZvaWQgbG9jYWxfaXJxX2VuYWJs
ZSh2b2lkKQo+ID4gK3sKPiA+ICvCoMKgwqAgY3NyX3NldChzc3RhdHVzLCBTU1RBVFVTX1NJRSk7
Cj4gPiArfQo+ID4gKwo+ID4gK3N0YXRpYyBpbmxpbmUgdm9pZCBsb2NhbF9pcnFfZGlzYWJsZSh2
b2lkKQo+ID4gK3sKPiA+ICvCoMKgwqAgY3NyX2NsZWFyKHNzdGF0dXMsIFNTVEFUVVNfU0lFKTsK
PiA+ICt9Cj4gPiArCj4gPiArI2RlZmluZSBsb2NhbF9pcnFfc2F2ZSh4KcKgwqDCoMKgwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgXAo+ID4gKyh7wqDCoMKgwqDC
oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgXAo+ID4gK8KgwqDCoCB4ID0gY3NyX3Jl
YWRfY2xlYXIoQ1NSX1NTVEFUVVMsIFNTVEFUVVNfU0lFKTvCoMKgIFwKPiA+ICvCoMKgwqAgbG9j
YWxfaXJxX2Rpc2FibGUoKTvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg
wqDCoMKgwqDCoMKgwqAgXAo+ID4gK30pCj4gPiArCj4gPiArc3RhdGljIGlubGluZSB2b2lkIGxv
Y2FsX2lycV9yZXN0b3JlKHVuc2lnbmVkIGxvbmcgZmxhZ3MpCj4gPiArewo+ID4gKwljc3Jfc2V0
KENTUl9TU1RBVFVTLCBmbGFncyAmIFNTVEFUVVNfU0lFKTsKPiA+ICt9Cj4gPiArCj4gPiArc3Rh
dGljIGlubGluZSBib29sIGxvY2FsX2lycV9pc19lbmFibGVkKHZvaWQpCj4gPiArewo+ID4gK8Kg
wqDCoCB1bnNpZ25lZCBsb25nIGZsYWdzID0gbG9jYWxfc2F2ZV9mbGFncygpOwo+ID4gKwo+ID4g
K8KgwqDCoCByZXR1cm4gKGZsYWdzICYgU1NUQVRVU19TSUUpICE9IDA7Cj4gCj4gSnVzdCBhcyBh
IHJlbWFyayAtIHdoZW4gdGhlIHJlc3VsdGluZyB0eXBlIGlzIGJvb2wsIHdlIGdlbmVyYWxseQo+
IHByZWZlciB0byBvbWl0IHRoZSAiIT0gMCIuClRoYW5rcy4gSSdsbCB0YWtlIGludG8gYWNjb3Vu
dCB0aGF0LgoKfiBPbGVrc2lpCg==



From xen-devel-bounces@lists.xenproject.org Mon Jan 15 09:35:41 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 15 Jan 2024 09:35:41 +0000
Received: from list by lists.xenproject.org with outflank-mailman.667254.1038330 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPJNY-0003pH-Et; Mon, 15 Jan 2024 09:35:36 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 667254.1038330; Mon, 15 Jan 2024 09:35:36 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPJNY-0003pA-Ax; Mon, 15 Jan 2024 09:35:36 +0000
Received: by outflank-mailman (input) for mailman id 667254;
 Mon, 15 Jan 2024 09:35:36 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=TGva=IZ=gmail.com=oleksii.kurochko@srs-se1.protection.inumbo.net>)
 id 1rPJNX-0003p4-Un
 for xen-devel@lists.xenproject.org; Mon, 15 Jan 2024 09:35:35 +0000
Received: from mail-yw1-x1135.google.com (mail-yw1-x1135.google.com
 [2607:f8b0:4864:20::1135])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 6e899140-b389-11ee-98f1-6d05b1d4d9a1;
 Mon, 15 Jan 2024 10:35:34 +0100 (CET)
Received: by mail-yw1-x1135.google.com with SMTP id
 00721157ae682-5f00bef973aso86895887b3.0
 for <xen-devel@lists.xenproject.org>; Mon, 15 Jan 2024 01:35:34 -0800 (PST)
Received: from [192.168.206.239] ([94.75.70.14])
 by smtp.gmail.com with ESMTPSA id
 c127-20020a254e85000000b00dbdb2966f67sm3443921ybb.24.2024.01.15.01.35.30
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 15 Jan 2024 01:35:33 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 6e899140-b389-11ee-98f1-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1705311333; x=1705916133; darn=lists.xenproject.org;
        h=mime-version:user-agent:content-transfer-encoding:references
         :in-reply-to:date:cc:to:from:subject:message-id:from:to:cc:subject
         :date:message-id:reply-to;
        bh=GUwoC9lz3a3h7jWOBpUmkl75aFlkCggHO0oqdKDd744=;
        b=ewWmUnC+YejoLU2LUmuS655smza0KaN4wEtlS1gA/j3+WjNLwze/qcb3w48A/oxYnZ
         p0MeJ5M3BLgCSmGIxma8ozY4jMzBw6RJgzEc8oRKU2r9BQtO54LFDtWGy2hchs7CcrRp
         5GMoLGB2U7doB8/Xhcjl1pXqV6D5X5fuLtNN8oaec5SsuuqYkWmUvuPP1nFoIxbCtI+J
         6gWka11lMQIuqCLJEcl5+01Ug4JAbJTkjXJ/ZHlbOL7PzDF/X2+4W7y2pwoyp+i8v/qC
         nEzyG0TblAZ26j/h5m4tPQRnp4jkd9VwA1DgI7/mU5eNR4zEkHqkqTG/FGpylGO397Af
         jzsA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705311333; x=1705916133;
        h=mime-version:user-agent:content-transfer-encoding:references
         :in-reply-to:date:cc:to:from:subject:message-id:x-gm-message-state
         :from:to:cc:subject:date:message-id:reply-to;
        bh=GUwoC9lz3a3h7jWOBpUmkl75aFlkCggHO0oqdKDd744=;
        b=qlilcxlLuISFVe7Qp+5WqH6z0Y4jupbuJMe7Jda0wBCtVuj1Qt0KMKEvCV/xOJa86W
         XHn/8w8gA23M7SCFUb+Ik9y46Ar9uVKUYDsW8IDORDSWyRaExAjAoPtdSwDVx91bsrNS
         X5jqpumy93Tk38E2pvaLnt+x4iVUqUQjKseU5hQjOySHK1MVx44aMCnqJg9Kcnrx5cGe
         d9cGh4JjbmDp80a5zZcgBrXNInby15ICeSAEN3VV+akJmkfGuTtyK6j4HXzHHs1f7Itn
         LGCn95AYO9y2C6iU0Z2GNS4i8GUcr9cHTxZ+f1O59TtzekAN4eL8e9DygJfWP+dnv7lx
         5F6w==
X-Gm-Message-State: AOJu0YysXk7FrK6OQumGvzuPOpUpBNNWEoOFt844gAQCsTAB/WoNMYz6
	dZMhnRXePOFjQEzPBDxw2n0=
X-Google-Smtp-Source: AGHT+IEtgemc4cmX8/kXhFT9hngnkDRavjzf9oHW9NXKTS4JNm1R3DhEG/SbJHxD+XkeIXxhTSig4w==
X-Received: by 2002:a25:ad44:0:b0:dbe:346b:b97 with SMTP id l4-20020a25ad44000000b00dbe346b0b97mr2634780ybe.23.1705311333601;
        Mon, 15 Jan 2024 01:35:33 -0800 (PST)
Message-ID: <fa8ab7da978f87312157fbdcc9c15fa9cc840cb2.camel@gmail.com>
Subject: Re: [PATCH v3 12/34] xen/riscv: introduce smp.h
From: Oleksii <oleksii.kurochko@gmail.com>
To: Jan Beulich <jbeulich@suse.com>
Cc: Alistair Francis <alistair.francis@wdc.com>, Bob Eshleman
 <bobbyeshleman@gmail.com>, Connor Davis <connojdavis@gmail.com>, Andrew
 Cooper <andrew.cooper3@citrix.com>, George Dunlap
 <george.dunlap@citrix.com>,  Julien Grall <julien@xen.org>, Stefano
 Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>, 
 xen-devel@lists.xenproject.org
Date: Mon, 15 Jan 2024 11:35:29 +0200
In-Reply-To: <0cf933b6-d8d6-42d0-8a10-f3f7f9daf32d@suse.com>
References: <cover.1703255175.git.oleksii.kurochko@gmail.com>
	 <7fd0c7bdc14ac2544a568e66387df21eee892523.1703255175.git.oleksii.kurochko@gmail.com>
	 <0cf933b6-d8d6-42d0-8a10-f3f7f9daf32d@suse.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
User-Agent: Evolution 3.50.2 (3.50.2-1.fc39) 
MIME-Version: 1.0

On Thu, 2024-01-11 at 17:36 +0100, Jan Beulich wrote:
> On 22.12.2023 16:12, Oleksii Kurochko wrote:
> > Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>
> > ---
> > Changes in V3:
> > =C2=A0- drop cpu_is_offline() as it was moved to xen/smp.h.
>=20
> Hmm.
>=20
> > =C2=A0- add SPDX.
> > =C2=A0- drop unnessary #ifdef.
> > =C2=A0- fix "No new line"
> > =C2=A0- update the commit message
>=20
> And another hmm.
It was removed word "asm/" before smp.h, but yes it is not correct to
write commit "message" should be "title".
I'll be more precise next time.

>=20
> > --- /dev/null
> > +++ b/xen/arch/riscv/include/asm/smp.h
> > @@ -0,0 +1,28 @@
> > +/* SPDX-License-Identifier: GPL-2.0-only */
> > +#ifndef __ASM_RISCV_SMP_H
> > +#define __ASM_RISCV_SMP_H
> > +
> > +#include <xen/cpumask.h>
> > +#include <xen/percpu.h>
> > +
> > +DECLARE_PER_CPU(cpumask_var_t, cpu_sibling_mask);
> > +DECLARE_PER_CPU(cpumask_var_t, cpu_core_mask);
> > +
> > +#define cpu_is_offline(cpu) unlikely(!cpu_online(cpu))
>=20
> This clearly wasn't dropped (yet).
It looks like it was rebasing issue.
I'll handle that in the next patch version.
Thanks.

~ Oleksii


From xen-devel-bounces@lists.xenproject.org Mon Jan 15 09:35:59 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 15 Jan 2024 09:35:59 +0000
Received: from list by lists.xenproject.org with outflank-mailman.667255.1038340 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPJNv-0004Fr-Lz; Mon, 15 Jan 2024 09:35:59 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 667255.1038340; Mon, 15 Jan 2024 09:35:59 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPJNv-0004Fj-J0; Mon, 15 Jan 2024 09:35:59 +0000
Received: by outflank-mailman (input) for mailman id 667255;
 Mon, 15 Jan 2024 09:35:58 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=jLm1=IZ=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rPJNu-0003p4-R6
 for xen-devel@lists.xenproject.org; Mon, 15 Jan 2024 09:35:58 +0000
Received: from mail-lf1-x12e.google.com (mail-lf1-x12e.google.com
 [2a00:1450:4864:20::12e])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 7ccddbbd-b389-11ee-98f1-6d05b1d4d9a1;
 Mon, 15 Jan 2024 10:35:58 +0100 (CET)
Received: by mail-lf1-x12e.google.com with SMTP id
 2adb3069b0e04-50edf4f478eso5846198e87.3
 for <xen-devel@lists.xenproject.org>; Mon, 15 Jan 2024 01:35:58 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 d11-20020adfa34b000000b00336e15fbc85sm11401502wrb.82.2024.01.15.01.35.56
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 15 Jan 2024 01:35:57 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 7ccddbbd-b389-11ee-98f1-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1705311357; x=1705916157; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=f8pJbFLLzq++RLoMdHnUHOsjTOd/6nBu1YmmrG9duUo=;
        b=hDjneoupBb7KSiJwzXS0k5CEgAWjd7JES1BIBoXDNjN6mOOhEBrwr0NvQi6QuAQyDU
         sFbOuZ9GzGTgjeCvegyarTJlI8ZVPCIa1bNvHhuNQ9uylRZUIylBFyG3137Bgj2y8rHu
         3Ci4/NW/E+Y2pcf5l0mgzsf19oAP8QjyN3mvjMG5PLOGHc1ZgFTauACPD25Bb9EFM2XU
         vCIOgRfn4/y6XEE0L7CVKapHrnnpyWsFjSTa//aDSJNaG2WtY5Ne7xwbutjUHJZ4w2dY
         8i92hHzkdHfG+D3QkhebAdHKXdEZy5DovE6ug++io+mYjXTv4QWmgo3xxc1nDa/xF8Qu
         YJ+A==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705311357; x=1705916157;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=f8pJbFLLzq++RLoMdHnUHOsjTOd/6nBu1YmmrG9duUo=;
        b=oX4MS6dljp9l/O1uYUkavcw8uwJkXULLISMViQs/SVs4d6X9u9c4o6IuppNmJFZsj9
         XjfdLyUXC59WkEd+u0psO3EyfeMVOEZCAelps/1EtSDwImIEcKsliKCa6UEW9EStfDqX
         29sbDHveJ42GIS+BUEOhNWbMxTq6VfO2jzqzmgEdfkFp+wAwy3FI79csf07DrKnBQMp/
         JVOwCBy+ctUio0CQVtdAILVo9lkONDtcid6uOf4O1v5JgurvDrzRfN9WAJlwRAJ4G8Jp
         IGmzS8T1XW8f06BKlNfmffnhhlbxnm9J6LYOs/5YAH2ngKyT7Eo+M1H7f9cdCy6goMIo
         DpVA==
X-Gm-Message-State: AOJu0Yx0sZNaWf4K05sg6uvs8PWwvibBBLg3YdZT4WAV8Nqao3Vto1XA
	ODiof2AyZSi+iJXuLumfnAZGtjc9ExBq
X-Google-Smtp-Source: AGHT+IFXPo1gcX1e7EirUbKWg0H9lYqlPaTc6vHwzmSbtDv7MN6c2RvHRQ0NigsYXB+w/hIIdCMzJg==
X-Received: by 2002:ac2:5632:0:b0:50e:7846:7acf with SMTP id b18-20020ac25632000000b0050e78467acfmr1914478lff.34.1705311357631;
        Mon, 15 Jan 2024 01:35:57 -0800 (PST)
Message-ID: <1793f158-ed83-46f9-be12-68c5ce86e4c4@suse.com>
Date: Mon, 15 Jan 2024 10:35:59 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 2/2] xen/dm: arm: Introduce inject_msi2 DM op
Content-Language: en-US
To: Mykyta Poturai <Mykyta_Poturai@epam.com>
Cc: Wei Liu <wl@xen.org>, Anthony PERARD <anthony.perard@citrix.com>,
 Juergen Gross <jgross@suse.com>, Andrew Cooper <andrew.cooper3@citrix.com>,
 George Dunlap <george.dunlap@citrix.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>,
 Bertrand Marquis <bertrand.marquis@arm.com>,
 Michal Orzel <michal.orzel@amd.com>,
 Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
References: <cover.1705066642.git.mykyta_poturai@epam.com>
 <6c551b03796fbf091b22fcde96d894cd5308ff91.1705066642.git.mykyta_poturai@epam.com>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <6c551b03796fbf091b22fcde96d894cd5308ff91.1705066642.git.mykyta_poturai@epam.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 14.01.2024 11:01, Mykyta Poturai wrote:
> Add the second version of inject_msi DM op, which allows to specify
> the source_id of an MSI interrupt. This is needed for correct MSI
> injection on ARM.
> 
> It would not be safe to include the source_id in the original inject_msi
> in the pad field, because we have no way to know if it is set or not.

At least on x86 I think 0 could serve as a "not valid" indicator, as that's
always a host bridge, which would never be handed through to guests. Can't
speak for Arm, as I don't know whether 00:00.0 always being a host bridge
(or unpopulated) is a universal requirement of the spec. Therefore this may
be insufficient justification for adding a new sub-op.

> --- a/xen/arch/arm/dm.c
> +++ b/xen/arch/arm/dm.c
> @@ -27,6 +27,7 @@ int dm_op(const struct dmop_args *op_args)
>          [XEN_DMOP_set_ioreq_server_state]           = sizeof(struct xen_dm_op_set_ioreq_server_state),
>          [XEN_DMOP_destroy_ioreq_server]             = sizeof(struct xen_dm_op_destroy_ioreq_server),
>          [XEN_DMOP_set_irq_level]                    = sizeof(struct xen_dm_op_set_irq_level),
> +        [XEN_DMOP_inject_msi2]                      = sizeof(struct xen_dm_op_inject_msi2),
>          [XEN_DMOP_nr_vcpus]                         = sizeof(struct xen_dm_op_nr_vcpus),
>      };
>  
> @@ -112,6 +113,20 @@ int dm_op(const struct dmop_args *op_args)
>          break;
>      }
>  
> +    case XEN_DMOP_inject_msi2:
> +    {
> +        const struct xen_dm_op_inject_msi2 *data =
> +            &op.u.inject_msi2;
> +
> +        if ( !(data->flags & XEN_DMOP_MSI_SOURCE_ID_VALID) )
> +        {
> +            rc = -EINVAL;
> +            break;
> +        }

While I can see the reason for this check here, ...

> @@ -539,6 +540,18 @@ int dm_op(const struct dmop_args *op_args)
>          break;
>      }
>  
> +    case XEN_DMOP_inject_msi2:
> +    {
> +        const struct xen_dm_op_inject_msi2 *data =
> +            &op.u.inject_msi2;
> +
> +        if ( !(data->flags & XEN_DMOP_MSI_SOURCE_ID_VALID) )
> +            printk(XENLOG_WARNING "XEN_DMOP_inject_msi2: source_id is ignored\n");

... I don't understand what's going on here: If the flag isn't set, it's
obvious that the field is to be ignored. Is the conditional inverted?

Also in both cases you will need to check that all other flags fields
are clear, or else we won't be able to give them meaning down the road.

Finally such a message, if really warranted, wants to use gprintk().

> --- a/xen/include/public/hvm/dm_op.h
> +++ b/xen/include/public/hvm/dm_op.h
> @@ -444,6 +444,17 @@ struct xen_dm_op_nr_vcpus {
>  };
>  typedef struct xen_dm_op_nr_vcpus xen_dm_op_nr_vcpus_t;
>  
> +#define XEN_DMOP_inject_msi2 21
> +#define XEN_DMOP_MSI_SOURCE_ID_VALID (1u << 0)
> +
> +struct xen_dm_op_inject_msi2 {
> +    uint64_aligned_t addr;
> +    uint32_t data;
> +    uint32_t source_id; /* PCI SBDF */

Since the comment says SBDF (not BDF), how are multiple segments handled
here? At least on x86 (VT-d and V-i) source IDs are only 16 bits iirc,
and are local to the respective segment. It would feel wrong to use a
32-bit quantity there; IOW I'd rather see this as being two 16-bit fields
(segment and source_id).

> +    uint32_t flags;
> +};

Just like in struct xen_dm_op_inject_msi padding wants making explicit,
and then wants checking for being zero.

Jan


From xen-devel-bounces@lists.xenproject.org Mon Jan 15 09:38:04 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 15 Jan 2024 09:38:04 +0000
Received: from list by lists.xenproject.org with outflank-mailman.667264.1038349 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPJPu-0005Ni-0R; Mon, 15 Jan 2024 09:38:02 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 667264.1038349; Mon, 15 Jan 2024 09:38:01 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPJPt-0005Nb-U8; Mon, 15 Jan 2024 09:38:01 +0000
Received: by outflank-mailman (input) for mailman id 667264;
 Mon, 15 Jan 2024 09:38:00 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=TGva=IZ=gmail.com=oleksii.kurochko@srs-se1.protection.inumbo.net>)
 id 1rPJPs-0005NT-Fx
 for xen-devel@lists.xenproject.org; Mon, 15 Jan 2024 09:38:00 +0000
Received: from mail-lf1-x136.google.com (mail-lf1-x136.google.com
 [2a00:1450:4864:20::136])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id c5442180-b389-11ee-98f1-6d05b1d4d9a1;
 Mon, 15 Jan 2024 10:37:59 +0100 (CET)
Received: by mail-lf1-x136.google.com with SMTP id
 2adb3069b0e04-50eabfac2b7so9825609e87.0
 for <xen-devel@lists.xenproject.org>; Mon, 15 Jan 2024 01:37:59 -0800 (PST)
Received: from [192.168.206.239] ([94.75.70.14])
 by smtp.gmail.com with ESMTPSA id
 o11-20020a198c0b000000b0050e7b6ee12bsm1440446lfd.296.2024.01.15.01.37.58
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 15 Jan 2024 01:37:58 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: c5442180-b389-11ee-98f1-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1705311479; x=1705916279; darn=lists.xenproject.org;
        h=mime-version:user-agent:content-transfer-encoding:references
         :in-reply-to:date:cc:to:from:subject:message-id:from:to:cc:subject
         :date:message-id:reply-to;
        bh=vlRTL88w8z+BqsXDPeQfiAuCSdodVvVf+jInYcxjbbc=;
        b=Ng+dysYgmbVs8vnZ6Ub1VKd6VAbmZVRHicPxENkcCBysqj2shAoqROlWXIs/zbNzuw
         D9A6V9MyllbpD5FTRiH7LqHzjzGNifGceQeZR33qinnxfgOWuNbB9bj8Gvpv2w54Rsef
         Nru0HoWEGdmOCarOvDB+qVrPNHBpf2T5mVifLLEotCl9IwTwvO8X9j2lca65pu0l7MsE
         LmPKddhdM+JP0/83De6oDCC5Vzmp4+neRIZHk0qPOryyiF7p9juIRHMCAiJslZQI49ck
         3AB2zeS0DkJdHRMWkjJf+VjtQjd/vWjb7JNkzvI/PMy9RU8FNGg/kzPJWS3AwIMSqnrt
         Rhhw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705311479; x=1705916279;
        h=mime-version:user-agent:content-transfer-encoding:references
         :in-reply-to:date:cc:to:from:subject:message-id:x-gm-message-state
         :from:to:cc:subject:date:message-id:reply-to;
        bh=vlRTL88w8z+BqsXDPeQfiAuCSdodVvVf+jInYcxjbbc=;
        b=H5AedqsYqbwkEmlMSFXbZQFAHL0rSGOBvpkFBaE4TAVmP+xv5AW8cdVJX2XEGx2oD0
         Ej4l1jFXvOOaHxyRd3pj+rZ2zEMk1AO624zHNlb4DzQpnuoZDNWqM5rH7Br6qfv6JO3c
         R+7LRF/lf0e3STj4koi7XkRMIkjxePvqVXs02oimsEaeHFTvBeeAwzmcTX6QgcMLNcQL
         1OLeUUJe78arS9mkySn4KT2JJZy43eVpQSGYvcfXQY9rtWqnS9elSntqMty9QXWs3m5o
         frnaXQav/OyqDQ5i0lLDhDQutQvB3Wusw8mdE7xwC2huiy9MrwPaM0q35KgejUoc7STK
         nDSw==
X-Gm-Message-State: AOJu0YwUhpsY09b9eGHjbSn73XGh9UmewnA+zXrOnnyPykqWP4+apTI0
	b8tHd6Q3LcK2BulIC/RYA8g=
X-Google-Smtp-Source: AGHT+IHEZySFt3QRwEzI9PSk6F8XgiLSJ5eO0z4AFbzcwBAyABl0sFVRDYqHsciRUNsM8vm+7KfNyA==
X-Received: by 2002:a05:6512:3ca4:b0:50e:73a1:f514 with SMTP id h36-20020a0565123ca400b0050e73a1f514mr2878702lfv.9.1705311478976;
        Mon, 15 Jan 2024 01:37:58 -0800 (PST)
Message-ID: <e73673678efcd9402e4548829797dcbc36b654af.camel@gmail.com>
Subject: Re: [PATCH v3 21/34] xen/riscv: introduce p2m.h
From: Oleksii <oleksii.kurochko@gmail.com>
To: Shawn Anastasio <sanastasio@raptorengineering.com>, 
	xen-devel@lists.xenproject.org
Cc: Alistair Francis <alistair.francis@wdc.com>, Bob Eshleman
	 <bobbyeshleman@gmail.com>, Connor Davis <connojdavis@gmail.com>
Date: Mon, 15 Jan 2024 11:37:58 +0200
In-Reply-To: <f0de2480-3846-45f9-9573-27da24ff076c@raptorengineering.com>
References: <cover.1703255175.git.oleksii.kurochko@gmail.com>
	 <c3b1f24aea1ba01505697717b240c8d036abfee1.1703255175.git.oleksii.kurochko@gmail.com>
	 <f0de2480-3846-45f9-9573-27da24ff076c@raptorengineering.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
User-Agent: Evolution 3.50.2 (3.50.2-1.fc39) 
MIME-Version: 1.0

On Thu, 2024-01-11 at 17:11 -0600, Shawn Anastasio wrote:
> Hi Oleksii,
>=20
> On 12/22/23 9:13 AM, Oleksii Kurochko wrote:
> > Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>
> > ---
> > Changes in V3:
> > =C2=A0- add SPDX
> > =C2=A0- drop unneeded for now p2m types.
> > =C2=A0- return false in all functions implemented with BUG() inside.
> > =C2=A0- update the commit message
> > ---
> > Changes in V2:
> > =C2=A0- Nothing changed. Only rebase.
> > ---
> > =C2=A0xen/arch/ppc/include/asm/p2m.h=C2=A0=C2=A0 |=C2=A0=C2=A0 3 +-
> > =C2=A0xen/arch/riscv/include/asm/p2m.h | 102
> > +++++++++++++++++++++++++++++++
> > =C2=A02 files changed, 103 insertions(+), 2 deletions(-)
> > =C2=A0create mode 100644 xen/arch/riscv/include/asm/p2m.h
> >=20
> > diff --git a/xen/arch/ppc/include/asm/p2m.h
> > b/xen/arch/ppc/include/asm/p2m.h
> > index 25ba054668..3bc05b7c05 100644
> > --- a/xen/arch/ppc/include/asm/p2m.h
> > +++ b/xen/arch/ppc/include/asm/p2m.h
> > @@ -50,8 +50,7 @@ static inline void memory_type_changed(struct
> > domain *d)
> > =C2=A0static inline int guest_physmap_mark_populate_on_demand(struct
> > domain *d, unsigned long gfn,
> > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 unsigned
> > int order)
> > =C2=A0{
> > -=C2=A0=C2=A0=C2=A0 BUG_ON("unimplemented");
> > -=C2=A0=C2=A0=C2=A0 return 1;
> > +=C2=A0=C2=A0=C2=A0 return -EOPNOTSUPP;
> > =C2=A0}
> >=20
>=20
> Was this change included by mistake? I'm not sure why this patch
> should
> touch PPC's p2m.h.
I think you are right. It's mistake. RISC-V has the similar p2m.h so I
faulty changed PPC version too.

Thanks.

~ Oleksii


From xen-devel-bounces@lists.xenproject.org Mon Jan 15 10:12:01 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 15 Jan 2024 10:12:01 +0000
Received: from list by lists.xenproject.org with outflank-mailman.667270.1038360 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPJwX-0004zO-J7; Mon, 15 Jan 2024 10:11:45 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 667270.1038360; Mon, 15 Jan 2024 10:11:45 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPJwX-0004zH-Fk; Mon, 15 Jan 2024 10:11:45 +0000
Received: by outflank-mailman (input) for mailman id 667270;
 Mon, 15 Jan 2024 10:11:43 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=nyhf=IZ=minervasys.tech=carlo.nonato@srs-se1.protection.inumbo.net>)
 id 1rPJwV-0004z9-Le
 for xen-devel@lists.xenproject.org; Mon, 15 Jan 2024 10:11:43 +0000
Received: from mail-ej1-x631.google.com (mail-ej1-x631.google.com
 [2a00:1450:4864:20::631])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 79a636c4-b38e-11ee-9b0f-b553b5be7939;
 Mon, 15 Jan 2024 11:11:40 +0100 (CET)
Received: by mail-ej1-x631.google.com with SMTP id
 a640c23a62f3a-a27733ae1dfso980166866b.3
 for <xen-devel@lists.xenproject.org>; Mon, 15 Jan 2024 02:11:40 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 79a636c4-b38e-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=minervasys-tech.20230601.gappssmtp.com; s=20230601; t=1705313500; x=1705918300; darn=lists.xenproject.org;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:from:to:cc:subject:date
         :message-id:reply-to;
        bh=zG9RdoTI1Fev2PV47zxkZTvtWxfXbDkghecJCYioV3I=;
        b=sNJpkU0I+kfsqgUMbZMT+p35gayPeqmbQ0RE1PYYChK3bW53gHhh8RwpdIQ/XBaPtS
         PJG78gfLyl/07sygOUEJZYnoe2q2U6Fh3lL8wqxxuuC02D3GK2vJQOLgUqC894jFsG48
         ugUpJl3kQf5u6BE2i6aBC9tchsBqQ6pS0h3vjCOUd9aJZVCwr33PY04UCrUiJyuvR9cW
         7IXgrlXIrjk/QOmkV6BuSVbskFdpWbw2bbFt0RcNdAvEKJFHVgp6vt746Sf2xcnNHg9D
         B4yVH1M+06mM+cYda71GlrSX+KdCzYqM6BWnl73WsJX/AFnhrki6Q9JMGqm0LKlhQyc9
         hIpw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705313500; x=1705918300;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to;
        bh=zG9RdoTI1Fev2PV47zxkZTvtWxfXbDkghecJCYioV3I=;
        b=rszykZr4jszpelr3xFEAyyjHsNoRLkKGBcI8Ux3Zk4HoMYGdU4ITBfsPe+8kuEGARl
         5ARqQ7AbN4zkIHHF/V+I5HMJl6Aheaj9r8dEUDPjyxsODN5pxNrn5PG2SR7Ss/IrVQMd
         5kAfBT/unsUwjWG2OdHfQoDHCPGNne+Zyxsrq6OjlUxIlQzTBs14NvuC+pzA0sNWHBgd
         45chLAAQ5YDzrD+vbilbjvmuhiZ8a/eLKQ1wraiLyqE5JHtmkISd3HowykFKYTNja24s
         RkSgsl+mF6gBI5nYS8C+wC4Vq8tPGhMKy0VZm+NEu4HzhzHDEl3ejIUXA9hqTjW85wXn
         Kuzg==
X-Gm-Message-State: AOJu0YwKxsY+xOZniLQCDqbyQTy736VqlnACB8Kj+lAe/3PyDnH/YZB9
	TLbSH79U4JV4Iyx0ifA4goJZ37sxe2CWvSbRiX59CLHhdnHb7g==
X-Google-Smtp-Source: AGHT+IEadYTbKRcOMFVcN3W+PSx+6uFCbYpOFoITXqgO0V2j57ssybREU5x35ZjykoxndF+b+/0vVbEp1EYc5hcFYPA=
X-Received: by 2002:a17:906:7d4f:b0:a2a:3d65:effa with SMTP id
 l15-20020a1709067d4f00b00a2a3d65effamr1170203ejp.104.1705313499829; Mon, 15
 Jan 2024 02:11:39 -0800 (PST)
MIME-Version: 1.0
References: <20240102095138.17933-1-carlo.nonato@minervasys.tech>
 <20240102095138.17933-14-carlo.nonato@minervasys.tech> <4553cc26-deb5-42ed-87b9-6cba2a5099eb@xen.org>
 <CAG+AhRXHfGJksqUrPXoHqNze+D654jJV0kVYBZaPLYwccdEz5Q@mail.gmail.com> <aa064f8f-d30e-4ac1-9239-daba5a806794@xen.org>
In-Reply-To: <aa064f8f-d30e-4ac1-9239-daba5a806794@xen.org>
From: Carlo Nonato <carlo.nonato@minervasys.tech>
Date: Mon, 15 Jan 2024 11:11:28 +0100
Message-ID: <CAG+AhRXUPvKGu-y9qbVmhc0_ThCdxFvG=BYwCQMBH=mjo45qHw@mail.gmail.com>
Subject: Re: [PATCH v5 13/13] xen/arm: add cache coloring support for Xen
To: Julien Grall <julien@xen.org>
Cc: xen-devel@lists.xenproject.org, 
	Stefano Stabellini <sstabellini@kernel.org>, Bertrand Marquis <bertrand.marquis@arm.com>, 
	Michal Orzel <michal.orzel@amd.com>, Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>, 
	Marco Solieri <marco.solieri@minervasys.tech>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

Hi Julien,

On Sun, Jan 14, 2024 at 8:22=E2=80=AFPM Julien Grall <julien@xen.org> wrote=
:
>
> Hi Carlo,
>
> On 13/01/2024 17:07, Carlo Nonato wrote:
> >>> diff --git a/xen/arch/arm/mmu/setup.c b/xen/arch/arm/mmu/setup.c
> >>> index 37b6d230ad..66b674eeab 100644
> >>> --- a/xen/arch/arm/mmu/setup.c
> >>> +++ b/xen/arch/arm/mmu/setup.c
> >>> @@ -7,6 +7,7 @@
> >>>
> >>>    #include <xen/init.h>
> >>>    #include <xen/libfdt/libfdt.h>
> >>> +#include <xen/llc-coloring.h>
> >>>    #include <xen/sizes.h>
> >>>    #include <xen/vmap.h>
> >>>
> >>> @@ -39,6 +40,10 @@ DEFINE_PER_CPU(lpae_t *, xen_pgtable);
> >>>    static DEFINE_PAGE_TABLE(cpu0_pgtable);
> >>>    #endif
> >>>
> >>> +#ifdef CONFIG_LLC_COLORING
> >>> +static DEFINE_PAGE_TABLE(xen_colored_temp);
> >>> +#endif
> >>
> >> Does this actually need to be static?
> >
> > Why it shouldn't be static? I don't want to access it from another file=
.
>
> My question was whether this could be allocated dynamically (or possibly
> re-use an existing set of page tables). In particular with the fact that
> we will need more than 1 page to cover the whole Xen binary.
>
> Looking at the use xen_colored_temp. This is pretty much the same as
> xen_map[i] but with different permissions. So what you could do is
> preparing xen_map[i] with very permissive permissions (i.e. RWX) and
> then enforcing the permission once the TTBR has been switched.
>
> Something like that (tested without cache coloring):
>
> diff --git a/xen/arch/arm/mmu/setup.c b/xen/arch/arm/mmu/setup.c
> index a3a263a5d94b..f7ac5cabf92c 100644
> --- a/xen/arch/arm/mmu/setup.c
> +++ b/xen/arch/arm/mmu/setup.c
> @@ -306,7 +306,11 @@ void __init setup_pagetables(unsigned long
> boot_phys_offset, paddr_t xen_paddr)
>       p[0].pt.table =3D 1;
>       p[0].pt.xn =3D 0;
>
> -    /* Break up the Xen mapping into pages and protect them separately. =
*/
> +    /*
> +     * Break up the Xen mapping into pages. We will protect the
> +     * permissions later in order to allow xen_xenmap to be used for
> +     * when relocating Xen.
> +     */
>       for ( i =3D 0; i < XEN_NR_ENTRIES(3); i++ )
>       {
>           vaddr_t va =3D XEN_VIRT_START + (i << PAGE_SHIFT);
> @@ -315,13 +319,7 @@ void __init setup_pagetables(unsigned long
> boot_phys_offset, paddr_t xen_paddr)
>               break;
>           pte =3D pte_of_xenaddr(va);
>           pte.pt.table =3D 1; /* third level mappings always have this bi=
t
> set */
> -        if ( is_kernel_text(va) || is_kernel_inittext(va) )
> -        {
> -            pte.pt.xn =3D 0;
> -            pte.pt.ro =3D 1;
> -        }
> -        if ( is_kernel_rodata(va) )
> -            pte.pt.ro =3D 1;
> +        pte.pt.xn =3D 0; /* Permissions will be enforced later. Allow
> execution */
>           xen_xenmap[i] =3D pte;
>       }
>
> @@ -352,6 +350,37 @@ void __init setup_pagetables(unsigned long
> boot_phys_offset, paddr_t xen_paddr)
>
>       switch_ttbr(ttbr);
>
> +    /* Protect Xen */
> +    for ( i =3D 0; i < XEN_NR_ENTRIES(3); i++ )
> +    {
> +        vaddr_t va =3D XEN_VIRT_START + (i << PAGE_SHIFT);
> +        lpae_t *entry =3D xen_xenmap + i;
> +
> +        if ( !is_kernel(va) )
> +            break;
> +
> +        pte =3D read_atomic(entry);
> +
> +        if ( is_kernel_text(va) || is_kernel_inittext(va) )
> +        {
> +            pte.pt.xn =3D 0;
> +            pte.pt.ro =3D 1;
> +        } else if ( is_kernel_rodata(va) ) {
> +            pte.pt.ro =3D 1;
> +            pte.pt.xn =3D 1;
> +        } else {
> +            pte.pt.xn =3D 1;
> +            pte.pt.ro =3D 0;
> +        }
> +
> +        write_pte(entry, pte);
> +    }
> +
> +    /*
> +     * We modified live page-tables. Ensure the TBLs are invalidated
> +     * before setting enforcing the WnX permissions.
> +     */
> +    flush_xen_tlb_local();
>       xen_pt_enforce_wnx();
>
>   #ifdef CONFIG_ARM_32

I understand what you're talking about, and it seems reasonable to get rid =
of
xen_colored_temp[] and create_llc_coloring_mappings() since in the end they
serve the purpose of mapping the physically colored space that is already
mapped using xen_xenmap[] pagetables.
What I don't understand is then how to copy/relocate Xen since I don't have=
 a
destination virtual space anymore to use in relocate_xen().

> >
> >> And if yes, then is it necessary
> >> to be kept the boot as completed?
> >
> > Nope. __initdata?
>
> Yes.
>
> [...]
>
> >> It feels wrong to keep the full Xen (even temporarily) just for CPU
> >> bring-up. But I don't think this is necessary. The secondary CPUs
> >> outside of code in head.S, secondary CPU should only need to access to
> >> init_ttbr and smp_cpu_up.
> >>
> >> The last one is already questionable because the CPU should never wait
> >> in Xen. Instead they would be held somewhere else. But that's separate
> >> issue.
> >>
> >> Anyway, if you move init_ttbr and smp_cpu_up in the identity mapped
> >> area, then you will not need to copy of Xen. Instead, secondary CPUs
> >> should be able to jump to the new Xen directly.
> >
> > So to recap:
> >
> > 1) How to move variables in the identity map area?
> > __attribute__((section(".text.idmap"))) triggers some warning when asse=
mbling.
> >
> > Warning: setting incorrect section attributes for .text.idmap
> >
> > 2) If I'm not mistaken the identity mapping is read only (PAGE_HYPERVIS=
OR_RX)
> > and forcing it to be PAGE_HYPERVISOR_RW breaks something else.
> The warning above has nothing to do with the attributes used in the
> page-tables. It is telling you have multiple .text.idmap section with
> different attributes.
>
> There are a couple of ways to solve it:
>     1. Define init_ttbr in head.S
>     2. Use a different section (e.g. .data.idmap) and add it in the linke=
r.

First one seems the easiest.

> Note that this means the init_ttbr cannot be written directly. But you
> can solve this problem by re-mapping the address.

How to remap a single address?
And if moving init_ttbr in the identity-mapped area means that it's no long=
er
writable, so that I need to remap it, why moving it in that area in the fir=
st
place. Again I think I'm missing something.

> >
> > 3) To access the identity mapping area I would need some accessor that =
takes
> > an address and returns it + phys_offset, or is there a better way to do=
 it?
>
> I am not sure I understand what you mean. Can you clarify?

In my idea, I would use the identity mapping to access the "old" variables,
where "old" means non physically colored. init_ttbr is an example. When
Xen it's copied on the new physical space, init_ttbr is copied with it and
if the boot cpu modifies this variable, it's actually touching the colored
one and not the old one. This means that secondary CPUs that still haven't
jumped to the new space, won't be able to see the new value and will never
go online.
So to access this "old" init_ttbr variable I need it's identity address,
which is its current virtual address + some physical offset. I was asking
you if this is the right approach to use the identity mapping.

> >
> > 4) Maybe I misinterpreted the above comment, but I would still need to =
copy
> > Xen in the physically colored space. What I can drop is the temporary v=
irtual
> > space used to access the "old" variables.
>
> Correct.
>
> >
> > 5) The identity mapping at runtime, at the moment, is pointing to the n=
ew
> > colored space because of how pte_of_xenaddr is implemented. This means =
that if
> > I want to use it to access the old variables, I would need to keep it a=
 real
> > identity mapping, right?
>
> Why would you need to access the old variables?

I hope the above comment is clear enough to answer this point.

> >> This will also avoid to spread cache coloring changes in every Xen
> >> components.
> >
> > Maybe I'm missing something, but even with this identity mapping "short=
cut" I
> > would still need to touch the same amount of files, for example when in=
it_ttbr
> > or smp_up_cpu are accessed, they would need to use identity virtual add=
resses.
>
> My point was not related to the amount of files you are touching. But
> the number of ...
>
> >
> >>> +    if ( llc_coloring_enabled )
>
> ... if ( llc_coloring_enabled ) you sprinkle in Xen. I would really like
> to reduce to the strict minimum. Also...
>
> [...]
>
> >>> @@ -751,8 +899,13 @@ void asmlinkage __init start_xen(unsigned long b=
oot_phys_offset,
> >>>        {
> >>>            if ( !llc_coloring_init() )
> >>>                panic("Xen LLC coloring support: setup failed\n");
> >>> +        xen_bootmodule->size =3D xen_colored_map_size(_end - _start)=
;
> >>> +        xen_bootmodule->start =3D get_xen_paddr(xen_bootmodule->size=
);
> >>
> >> As you update xen_bootmodule, wouldn't this mean that the non-relocate=
d >> Xen would could be passed to the bootallocator?
>
> ... as I wrote ealier your current approach seems to have a flaw. As you
> overwrite xen_bootmodule->{start, size}. setup_mm() will end up to add
> the old Xen region to the boot allocator. This is before any secondary
> CPUs are booted up.
>
> IOW, the allocator may provide some memory from the old Xen and nothing
> good will happen from that.
>
> The only way to solve it is to add another module. So the memory is
> skipped by setup_mm(). However see below.
>
> >
> > Yes that should be memory that in the end would not be needed so it mus=
t
> > return to the boot-allocator (if that's what you mean). But how to do
> > that?
>
> You can't really discard the old temporary Xen. This may work today
> because we don't support CPU hotplug or suspend/resume. But there was
> some series on the ML to enable it and I don't see any reason why
> someone would not want to use the features with cache coloring.
>
> So the old temporary Xen would have to be kept around forever. This is
> up to 8MB of memory wasted.
>
> The right approach is to have the secondary CPU boot code (including the
> variables it is using) fitting in the same page (or possibly multiple so
> long this is small and physically contiguous). With that it doesn't
> matter where is the trampoline, it could stay at the old place, but we
> would only waste a few pages rather than up 8MB as it is today.

So what are you suggesting is to create a new section in the linker script
for the trampoline code and data, then in setup_mm() we would skip this
memory? Am I following you correctly? Sorry those topics are a little out
of my preparation as you probably already guessed.

> Cheers,
>
> --
> Julien Grall

Thanks.


From xen-devel-bounces@lists.xenproject.org Mon Jan 15 10:27:39 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 15 Jan 2024 10:27:39 +0000
Received: from list by lists.xenproject.org with outflank-mailman.667276.1038369 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPKBo-0007dJ-UX; Mon, 15 Jan 2024 10:27:32 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 667276.1038369; Mon, 15 Jan 2024 10:27:32 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPKBo-0007dC-Rk; Mon, 15 Jan 2024 10:27:32 +0000
Received: by outflank-mailman (input) for mailman id 667276;
 Mon, 15 Jan 2024 10:27:30 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=Y0sJ=IZ=cloud.com=roger.pau@srs-se1.protection.inumbo.net>)
 id 1rPKBm-0007d6-Sn
 for xen-devel@lists.xenproject.org; Mon, 15 Jan 2024 10:27:30 +0000
Received: from mail-ed1-x535.google.com (mail-ed1-x535.google.com
 [2a00:1450:4864:20::535])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id ae642f30-b390-11ee-98f1-6d05b1d4d9a1;
 Mon, 15 Jan 2024 11:27:27 +0100 (CET)
Received: by mail-ed1-x535.google.com with SMTP id
 4fb4d7f45d1cf-55790581457so9648725a12.3
 for <xen-devel@lists.xenproject.org>; Mon, 15 Jan 2024 02:27:27 -0800 (PST)
Received: from localhost ([213.195.127.68]) by smtp.gmail.com with ESMTPSA id
 w26-20020a17090652da00b00a1c7b20e9e6sm5098330ejn.32.2024.01.15.02.27.26
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 15 Jan 2024 02:27:26 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: ae642f30-b390-11ee-98f1-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1705314447; x=1705919247; darn=lists.xenproject.org;
        h=content-transfer-encoding:mime-version:message-id:date:subject:cc
         :to:from:from:to:cc:subject:date:message-id:reply-to;
        bh=u2hlj+SUWp4Z7x8nJLTw3nkULa+otkpDaZaf12QWm7Y=;
        b=T3oIN6usgrtsaS63/iLr3lXWYmEQoOtrcF21iwMIww5lv8daFC2vhxQ8aT6xmg4tuV
         JZWzaN9jzdhIms36A+FaEKiOZju7ZC7Xtca4sTmxMcCOeuaXulGh5TPgL59Wv8LWqeD5
         HzKigeJBQiRoSWOafUScggzyf+ddkjH5QIOpU=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705314447; x=1705919247;
        h=content-transfer-encoding:mime-version:message-id:date:subject:cc
         :to:from:x-gm-message-state:from:to:cc:subject:date:message-id
         :reply-to;
        bh=u2hlj+SUWp4Z7x8nJLTw3nkULa+otkpDaZaf12QWm7Y=;
        b=FuQBHb2LRxvsWWBM0fEHDFAvKexS3DXPFuIE5j2lxYAfW2vXIATcnUSuS/CP2pe8PZ
         6nPRrjun3UYp7F2GTC1ZFcd9c1ILNvb+LKTMgmtx4nixpNVHEtXWESA7tCbzfMaYNphS
         Ju7N0VIjFqpGzyg7KtJWvD4ZT6mPhKA0FCwvL7Hw7pVubk07G/IZuWo4sA19xCuKXbHS
         ztoPAAxfF9ICPOTosUxtmMZ1DNzs1kS8hDG/3Hx5Ga/SPgxusqTyKbiN7BujJ4ZgZgA+
         gIzEcIONiy2v5PgOx46s3wihwMZ63ysuLb9+8WgvxlwxxUS1HR4NTffwREKmp3u91vBw
         t2cg==
X-Gm-Message-State: AOJu0YwXUDe2UY4ibi7ue66cMotCttZmFvYWj/hbWBWo7jBwiWp9mtjQ
	AYwomgS3z/zDle7LdbJlRjAmrLRLEYQt3lljvCj9NniwkXs=
X-Google-Smtp-Source: AGHT+IEolSgfyz00x6gwWaQsgAfG6PCcRungvjsjNun1FmvFE6Kboj0e6sQ4ourjnWd5WC5zngwrXw==
X-Received: by 2002:a17:906:ff53:b0:a26:c83d:e086 with SMTP id zo19-20020a170906ff5300b00a26c83de086mr2268129ejb.103.1705314447172;
        Mon, 15 Jan 2024 02:27:27 -0800 (PST)
From: Roger Pau Monne <roger.pau@citrix.com>
To: xen-devel@lists.xenproject.org
Cc: Roger Pau Monne <roger.pau@citrix.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	George Dunlap <george.dunlap@citrix.com>,
	Jan Beulich <jbeulich@suse.com>,
	Julien Grall <julien@xen.org>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Wei Liu <wl@xen.org>
Subject: [PATCH] CirrusCI: drop FreeBSD 12
Date: Mon, 15 Jan 2024 11:27:18 +0100
Message-ID: <20240115102718.81294-1-roger.pau@citrix.com>
X-Mailer: git-send-email 2.43.0
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Went EOL by the end of December 2023, and the pkg repos have been shut down.

Reported-by: Andrew Cooper <andrew.cooper3@citrix.com>
Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
---
 .cirrus.yml | 6 ------
 1 file changed, 6 deletions(-)

diff --git a/.cirrus.yml b/.cirrus.yml
index 385618c394ea..d0a9021a77e4 100644
--- a/.cirrus.yml
+++ b/.cirrus.yml
@@ -14,12 +14,6 @@ freebsd_template: &FREEBSD_TEMPLATE
     - ./configure --with-system-seabios=/usr/local/share/seabios/bios.bin
     - gmake -j`sysctl -n hw.ncpu` clang=y
 
-task:
-  name: 'FreeBSD 12'
-  freebsd_instance:
-    image_family: freebsd-12-4
-  << : *FREEBSD_TEMPLATE
-
 task:
   name: 'FreeBSD 13'
   freebsd_instance:
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Mon Jan 15 10:36:01 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 15 Jan 2024 10:36:01 +0000
Received: from list by lists.xenproject.org with outflank-mailman.667279.1038380 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPKJv-0001av-P9; Mon, 15 Jan 2024 10:35:55 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 667279.1038380; Mon, 15 Jan 2024 10:35:55 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPKJv-0001an-MY; Mon, 15 Jan 2024 10:35:55 +0000
Received: by outflank-mailman (input) for mailman id 667279;
 Mon, 15 Jan 2024 10:35:54 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=TGva=IZ=gmail.com=oleksii.kurochko@srs-se1.protection.inumbo.net>)
 id 1rPKJu-0001ah-IR
 for xen-devel@lists.xenproject.org; Mon, 15 Jan 2024 10:35:54 +0000
Received: from mail-ej1-x633.google.com (mail-ej1-x633.google.com
 [2a00:1450:4864:20::633])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id dbd45e8b-b391-11ee-98f1-6d05b1d4d9a1;
 Mon, 15 Jan 2024 11:35:53 +0100 (CET)
Received: by mail-ej1-x633.google.com with SMTP id
 a640c23a62f3a-a28bd9ca247so1009236366b.1
 for <xen-devel@lists.xenproject.org>; Mon, 15 Jan 2024 02:35:53 -0800 (PST)
Received: from [192.168.206.239] ([94.75.70.14])
 by smtp.gmail.com with ESMTPSA id
 k6-20020a170906128600b00a2b0b0fc80esm5086339ejb.193.2024.01.15.02.35.52
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 15 Jan 2024 02:35:52 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: dbd45e8b-b391-11ee-98f1-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1705314953; x=1705919753; darn=lists.xenproject.org;
        h=mime-version:user-agent:content-transfer-encoding:references
         :in-reply-to:date:cc:to:from:subject:message-id:from:to:cc:subject
         :date:message-id:reply-to;
        bh=s5EVfj78CbwqEJXL5WmbHLeYABJtKUe4T6SHcgmLoNE=;
        b=Ddwz1MYWBx/z0b7EeOdZUYrAne2x38/wJ9+xXkmwGZuvf/FGDfeQSD700+FJGDXzIt
         2jFxS1po49cma+r0fDND92Yo+lP3uBmsH2NKwJBrotx9SvF6fX+eyqBYJyc+XQxzaApW
         rJXbTjdWVgRz+0ZstGzsRcne7SEhrH+mxfpbF16quVf/fREA/nDSh50VHDgmhKgVd9uU
         f9sazj4n5PQtWvXY/wuk+ryMRjcd7D/ylzP0f5otgQp1fQV/aS+WjfwL0AZfkMYgUSol
         TTmr7KAZSNvIx8gTYQA9QjBZT5Ql04fyH8/xEfsdRS1Z8Vpl4hSOimJOLu7WC4xVbpFI
         2Qiw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705314953; x=1705919753;
        h=mime-version:user-agent:content-transfer-encoding:references
         :in-reply-to:date:cc:to:from:subject:message-id:x-gm-message-state
         :from:to:cc:subject:date:message-id:reply-to;
        bh=s5EVfj78CbwqEJXL5WmbHLeYABJtKUe4T6SHcgmLoNE=;
        b=ZdtozxVr2i1N6QGI9zdyjq3hHPXW80pA1lsY7O84JTr4PRKR3w5xskvs9pQpicDy8N
         dO5LFg4438o4/7GYeCay6BUxIpPgU1B+AUnayB5J+YJJopo7DXOCyyEJ6TvJAwAc1OZX
         GdcPWbqK+g0XLHZy7f/eVefH2v64tejNY4YnpFklqPildFfeaVthNW3RQclAjOc1Zfve
         zgIV/0sSBijxXOaGOPdVQQ4IZzfbGlzesOKlaFcmYZPdWMWFtew53rjpXgGuTqx9MV76
         XP/R7urwoNsa8pIjdL2LRw3FwdaWS2INS0cIX16DdC7qA0Abz94/nGLZAB3qoOwUMnvn
         Yh1w==
X-Gm-Message-State: AOJu0YxIO6er5NliY8vWFhsBSXXFFKLe1M1IajUUqrFtiBUBnISZih83
	GBCfNjcpDRDVg/Z+tzSPhmI=
X-Google-Smtp-Source: AGHT+IGoUZ9g/N8grHffXSmjeMotL3I0N/6R+fIgT0hqm94Zs99A8UAFVjMc3O+5mCVyE6iB7aKong==
X-Received: by 2002:a17:907:7d8e:b0:a29:8155:b813 with SMTP id oz14-20020a1709077d8e00b00a298155b813mr2891707ejc.85.1705314952819;
        Mon, 15 Jan 2024 02:35:52 -0800 (PST)
Message-ID: <abef4701c3f2292e672679f1a18c826d699e1af2.camel@gmail.com>
Subject: Re: [PATCH v3 21/34] xen/riscv: introduce p2m.h
From: Oleksii <oleksii.kurochko@gmail.com>
To: Julien Grall <julien@xen.org>, xen-devel@lists.xenproject.org
Cc: Shawn Anastasio <sanastasio@raptorengineering.com>, Alistair Francis
	 <alistair.francis@wdc.com>, Bob Eshleman <bobbyeshleman@gmail.com>, Connor
	Davis <connojdavis@gmail.com>
Date: Mon, 15 Jan 2024 12:35:51 +0200
In-Reply-To: <abeafa19-7867-46b2-bc0e-b39eaa0f5036@xen.org>
References: <cover.1703255175.git.oleksii.kurochko@gmail.com>
	 <c3b1f24aea1ba01505697717b240c8d036abfee1.1703255175.git.oleksii.kurochko@gmail.com>
	 <abeafa19-7867-46b2-bc0e-b39eaa0f5036@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
User-Agent: Evolution 3.50.2 (3.50.2-1.fc39) 
MIME-Version: 1.0

Hi Julien,

On Fri, 2024-01-12 at 10:39 +0000, Julien Grall wrote:
> Hi Oleksii,
>=20
> On 22/12/2023 15:13, Oleksii Kurochko wrote:
> > Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>
> > ---
> > Changes in V3:
> > =C2=A0 - add SPDX
> > =C2=A0 - drop unneeded for now p2m types.
> > =C2=A0 - return false in all functions implemented with BUG() inside.
> > =C2=A0 - update the commit message
> > ---
> > Changes in V2:
> > =C2=A0 - Nothing changed. Only rebase.
> > ---
> > =C2=A0 xen/arch/ppc/include/asm/p2m.h=C2=A0=C2=A0 |=C2=A0=C2=A0 3 +-
> > =C2=A0 xen/arch/riscv/include/asm/p2m.h | 102
> > +++++++++++++++++++++++++++++++
> > =C2=A0 2 files changed, 103 insertions(+), 2 deletions(-)
> > =C2=A0 create mode 100644 xen/arch/riscv/include/asm/p2m.h
> >=20
> > diff --git a/xen/arch/ppc/include/asm/p2m.h
> > b/xen/arch/ppc/include/asm/p2m.h
> > index 25ba054668..3bc05b7c05 100644
> > --- a/xen/arch/ppc/include/asm/p2m.h
> > +++ b/xen/arch/ppc/include/asm/p2m.h
> > @@ -50,8 +50,7 @@ static inline void memory_type_changed(struct
> > domain *d)
> > =C2=A0 static inline int guest_physmap_mark_populate_on_demand(struct
> > domain *d, unsigned long gfn,
> > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 unsigned
> > int order)
> > =C2=A0 {
> > -=C2=A0=C2=A0=C2=A0 BUG_ON("unimplemented");
> > -=C2=A0=C2=A0=C2=A0 return 1;
> > +=C2=A0=C2=A0=C2=A0 return -EOPNOTSUPP;
> > =C2=A0 }
> > =C2=A0=20
> > =C2=A0 static inline int guest_physmap_add_entry(struct domain *d,
> > diff --git a/xen/arch/riscv/include/asm/p2m.h
> > b/xen/arch/riscv/include/asm/p2m.h
> > new file mode 100644
> > index 0000000000..d270ef6635
> > --- /dev/null
> > +++ b/xen/arch/riscv/include/asm/p2m.h
> > @@ -0,0 +1,102 @@
> > +/* SPDX-License-Identifier: GPL-2.0-only */
> > +#ifndef __ASM_RISCV_P2M_H__
> > +#define __ASM_RISCV_P2M_H__
> > +
> > +#include <asm/page-bits.h>
> > +
> > +#define paddr_bits PADDR_BITS
> > +
> > +/*
> > + * List of possible type for each page in the p2m entry.
> > + * The number of available bit per page in the pte for this
> > purpose is 4 bits.
> > + * So it's possible to only have 16 fields. If we run out of value
> > in the
> > + * future, it's possible to use higher value for pseudo-type and
> > don't store
> > + * them in the p2m entry.
> > + */
>=20
> This looks like a verbatim copy from Arm. Did you actually check
> RISC-V=20
> has 4 bits available in the PTE to store this value?
Thanks for noticing that, in RISC-V it is available only 2 bits ( bits
8 and 9), so I'll update the comment:
53                   10 9    8 7 6 5 4 3 2 1 0
 Physical Page Number     RSV  D A G U X W R V

It seems that I missed something in the Arm code/architecture.As far as I r=
ecall, in Arm, bits 5-8 are ignored by the MMU, and they
are expected
to be used by the hypervisor for its purpose.
However, in the code, I notice that these bits are utilized for storing
a reference counter.

Could you confirm if my understanding is correct?
Additionally, I am curious about where the PTE bits are used to store
one of the values of the enum `p2m_type_t`.

>=20
> > +typedef enum {
> > +=C2=A0=C2=A0=C2=A0 p2m_invalid =3D 0,=C2=A0=C2=A0=C2=A0 /* Nothing map=
ped here */
> > +=C2=A0=C2=A0=C2=A0 p2m_ram_rw,=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0 /* Normal read/write guest RAM */
>=20
> s/guest/domain/ as this also applies for dom0.
Thanks. I'll update that.
>=20
> > +} p2m_type_t;
> > +
> > +#include <xen/p2m-common.h>
> > +
> > +static inline int get_page_and_type(struct page_info *page,
> > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 struct d=
omain *domain,
> > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 unsigned=
 long type)
> > +{
> > +=C2=A0=C2=A0=C2=A0 BUG();
>=20
> I understand your goal with the BUG() but I find it risky. This is
> not a=20
> problem right now, it is more when we will decide to have RISC-V=20
> supported. You will have to go through all the BUG() to figure out
> which=20
> one are warrant or not.
>=20
> To reduce the load, I would recommend to switch to
> ASSERT_UNREACHABLE()=20
> (or maybe introduced a different macro) that would lead to a crash on
> debug build but propagate the error normally on production build.
>=20
> Of course, if you can't propagate an error, then the right course of=20
> action is a BUG(). But I expect this case to be limited.
Thanks.

I'm currently transitioning to using ASSERT_UNREACHABLE() or BUG_ON()
throughout the codebase, and this is one of the instances where I
overlooked the update.

>=20
> [...]
>=20
> > +static inline mfn_t gfn_to_mfn(struct domain *d, gfn_t gfn)
> > +{
> > +=C2=A0=C2=A0=C2=A0 BUG();
> > +=C2=A0=C2=A0=C2=A0 return _mfn(0);
>=20
> This wants to be INVALID_MFN.
>=20
> [...]
>=20

~ Oleksii


From xen-devel-bounces@lists.xenproject.org Mon Jan 15 10:36:58 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 15 Jan 2024 10:36:58 +0000
Received: from list by lists.xenproject.org with outflank-mailman.667284.1038389 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPKKw-00026T-2d; Mon, 15 Jan 2024 10:36:58 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 667284.1038389; Mon, 15 Jan 2024 10:36:58 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPKKw-00026M-03; Mon, 15 Jan 2024 10:36:58 +0000
Received: by outflank-mailman (input) for mailman id 667284;
 Mon, 15 Jan 2024 10:36:56 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=TGva=IZ=gmail.com=oleksii.kurochko@srs-se1.protection.inumbo.net>)
 id 1rPKKu-0001ah-Tf
 for xen-devel@lists.xenproject.org; Mon, 15 Jan 2024 10:36:56 +0000
Received: from mail-lj1-x236.google.com (mail-lj1-x236.google.com
 [2a00:1450:4864:20::236])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 014ab31a-b392-11ee-98f1-6d05b1d4d9a1;
 Mon, 15 Jan 2024 11:36:56 +0100 (CET)
Received: by mail-lj1-x236.google.com with SMTP id
 38308e7fff4ca-2cda523725bso17448031fa.3
 for <xen-devel@lists.xenproject.org>; Mon, 15 Jan 2024 02:36:56 -0800 (PST)
Received: from [192.168.206.239] ([94.75.70.14])
 by smtp.gmail.com with ESMTPSA id
 q1-20020a05651232a100b0050ec4839e23sm1414114lfe.195.2024.01.15.02.36.54
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 15 Jan 2024 02:36:55 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 014ab31a-b392-11ee-98f1-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1705315016; x=1705919816; darn=lists.xenproject.org;
        h=mime-version:user-agent:content-transfer-encoding:references
         :in-reply-to:date:cc:to:from:subject:message-id:from:to:cc:subject
         :date:message-id:reply-to;
        bh=haNGLYASDeou/aJYA7rZb1xeWzzh0nnjlRJbbFbhGoc=;
        b=YJCPNRHbpOve0FBBGpHpwEV9Oy4KHsTN6VOBRcL/C4piSLxv4rYOx0f6whUDU8KDX4
         pakja56VrS0jtK9mVkokGcyAgivfMd19IBRrim6XLHPlV/sHhaPd/KgXioPPQbVCIB0R
         hARjeD2JdkfYYxlmpIriz5V8nVSBEqPhm0zB97N8HfU+cbfDwJFss6kg6lB9uo+RLw70
         d7IiMmwO9g3im9B9Lzw/b7viteRldhvn2LO+STiYEfA8vcLqVPEQWqQO91+mfgccmSXM
         6iDhE0ErG9GC+VzLue0RIIDywm0Pp2uDZln1GNd9bgSqBya8yXefrS4aqK/4wq/fqGbH
         53kQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705315016; x=1705919816;
        h=mime-version:user-agent:content-transfer-encoding:references
         :in-reply-to:date:cc:to:from:subject:message-id:x-gm-message-state
         :from:to:cc:subject:date:message-id:reply-to;
        bh=haNGLYASDeou/aJYA7rZb1xeWzzh0nnjlRJbbFbhGoc=;
        b=n/dgE5va9Wx5aTmp2GTKrROimqrwY4RJsW6AyJuncpfzmy072iPqhVcZf90DYjV0y7
         adEGs9yVg8O2CuBYyET2Lght1rhP2iSuWV9nPA9+KY1Pf6lomglIBs6dA4PD89Yf0jla
         XEUuL80X0Nt+e/eDzeyIuVwOivmNFo/EbM2DxRwRskV6OnVb02JKDiZwNJjkZTj7mw8F
         +PvcRtUqFoO4l5Xg7eXj0dTBLeX5GwwTGaTBFxzsmA7sHxzJ0Rfr9qgBHD9YUir2jGkm
         OMiqWKn1uj6+DHUg40yivXfQ/86oEG3dgIjFKFBz3SBrk39FrPoo5U0lH8WTNktLDdcs
         WBMQ==
X-Gm-Message-State: AOJu0YyWU3WWQuv+FecPytxXMOUYBXKpKc6BXPFKZwczFrGZeW+Zth+l
	gHlFIMaxcj9LY7T12tZie1Y=
X-Google-Smtp-Source: AGHT+IHSdP6ZVznBDxBYqMxg8j5Vw+jxgWDspNmpSGGp8Sf17CI3f+9FVw9q/YcZNaZ8BO2U7DHiiA==
X-Received: by 2002:a05:6512:31d2:b0:50e:3d3b:93fa with SMTP id j18-20020a05651231d200b0050e3d3b93famr2068100lfe.12.1705315015648;
        Mon, 15 Jan 2024 02:36:55 -0800 (PST)
Message-ID: <64c0e5b049d8d26161b9c87e25824c1adee649c6.camel@gmail.com>
Subject: Re: [PATCH v3 31/34] xen/riscv: add minimal stuff to mm.h to build
 full Xen
From: Oleksii <oleksii.kurochko@gmail.com>
To: Jan Beulich <jbeulich@suse.com>
Cc: Alistair Francis <alistair.francis@wdc.com>, Bob Eshleman
 <bobbyeshleman@gmail.com>, Connor Davis <connojdavis@gmail.com>, Andrew
 Cooper <andrew.cooper3@citrix.com>, George Dunlap
 <george.dunlap@citrix.com>,  Julien Grall <julien@xen.org>, Stefano
 Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>, 
 xen-devel@lists.xenproject.org
Date: Mon, 15 Jan 2024 12:36:54 +0200
In-Reply-To: <7609d810-a2f0-4843-b019-0f9e700aa1e3@suse.com>
References: <cover.1703255175.git.oleksii.kurochko@gmail.com>
	 <4411f6af38586074b347cd6005f19f9c670faa74.1703255175.git.oleksii.kurochko@gmail.com>
	 <3231bf55d5da1d3e1eb03a43759932d8ebcca8de.camel@gmail.com>
	 <7609d810-a2f0-4843-b019-0f9e700aa1e3@suse.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
User-Agent: Evolution 3.50.2 (3.50.2-1.fc39) 
MIME-Version: 1.0

On Thu, 2024-01-11 at 17:43 +0100, Jan Beulich wrote:
> On 22.12.2023 17:32, Oleksii wrote:
> > > +#define PFN_ORDER(_pfn) ((_pfn)->v.free.order)
> > I missed saving these changes. It should be _pfn -> pfn_. (Just a
> > reminder for me).
>=20
> And what purpose would the trailing underscore serve here?
There is no any. I'll use just pfn. Thanks for noticing that.

~ Oleksii


From xen-devel-bounces@lists.xenproject.org Mon Jan 15 10:41:55 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 15 Jan 2024 10:41:55 +0000
Received: from list by lists.xenproject.org with outflank-mailman.667287.1038399 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPKPd-0004jU-K0; Mon, 15 Jan 2024 10:41:49 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 667287.1038399; Mon, 15 Jan 2024 10:41:49 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPKPd-0004jN-HS; Mon, 15 Jan 2024 10:41:49 +0000
Received: by outflank-mailman (input) for mailman id 667287;
 Mon, 15 Jan 2024 10:41:48 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=Y0sJ=IZ=cloud.com=roger.pau@srs-se1.protection.inumbo.net>)
 id 1rPKPc-0004jH-5S
 for xen-devel@lists.xenproject.org; Mon, 15 Jan 2024 10:41:48 +0000
Received: from mail-wr1-x42f.google.com (mail-wr1-x42f.google.com
 [2a00:1450:4864:20::42f])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id ae5cebe6-b392-11ee-98f1-6d05b1d4d9a1;
 Mon, 15 Jan 2024 11:41:46 +0100 (CET)
Received: by mail-wr1-x42f.google.com with SMTP id
 ffacd0b85a97d-3368ac0f74dso6254369f8f.0
 for <xen-devel@lists.xenproject.org>; Mon, 15 Jan 2024 02:41:46 -0800 (PST)
Received: from localhost ([213.195.127.68]) by smtp.gmail.com with ESMTPSA id
 b6-20020adfee86000000b00337478efa4fsm11455234wro.60.2024.01.15.02.41.45
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 15 Jan 2024 02:41:45 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: ae5cebe6-b392-11ee-98f1-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1705315306; x=1705920106; darn=lists.xenproject.org;
        h=content-transfer-encoding:mime-version:message-id:date:subject:cc
         :to:from:from:to:cc:subject:date:message-id:reply-to;
        bh=mMD2PDDnJJu11V1BVyI/L+cq92NPn+wMLESE0L2eU+c=;
        b=gsWNBDq5fFpbiEA00q//9eZCeKL3Ul+6lglAX/aIaEPtqk5c55xMLhcUiZGy9b4R/M
         Xw3uzOzuifJrmhB9JvwIXh2KanFF9dTUK8p3PwA2rZiS6nNiUVTvIpe93OUtn2LbhBEA
         dvsdB8mEZRvC1aI9fqGrRroDMxowBC2qMrRgM=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705315306; x=1705920106;
        h=content-transfer-encoding:mime-version:message-id:date:subject:cc
         :to:from:x-gm-message-state:from:to:cc:subject:date:message-id
         :reply-to;
        bh=mMD2PDDnJJu11V1BVyI/L+cq92NPn+wMLESE0L2eU+c=;
        b=auC/b1jEpa+b08RxLIFwUgZJAM16MJzWFQEuXXmD3yOuGcQzXxPuf20itPIVwnkG0Z
         IlkBnQ2AB+ulDWIDqAlH4Z9duNCaE7HwBrSPYnzmwpdXIzFvsI4GkSqV0kl0DknHOt/B
         KK1C0mKdXLRdDRkFzHw5PjqAr4azEeHJ1T3lCvHnWIa59EPIgom2jQtbE8yNc7FXSLUv
         GGE5egQg5FubUEPQxYg8MYHQs8yDBYs/IaUUeCWfiPSISNRzCSIHlhxjpBbOg+tb0uaH
         t/goQ2ACRjJ6zMHvfnWcIAFUSLjB1bBft2Qe7pAKpS5xYx2Z03IkNlYdd0Wm/iM58UCk
         W5DA==
X-Gm-Message-State: AOJu0YzW8mC218FTIDLmLOI41avdjtNuTYRahup/Ropaftf2rfGIYpty
	nDyzPprKjKC9vM03/aLUyPFZx/eNKVp23IH+4hwwUfgdCRE=
X-Google-Smtp-Source: AGHT+IF/xMA9/RcGk4inBUUd2n8DVwM+hPv3BgLo+a4Y9NvKCDRo7FPQr25B0tgIDqHNa1ZzCMKHFw==
X-Received: by 2002:a5d:595f:0:b0:336:ded0:a21f with SMTP id e31-20020a5d595f000000b00336ded0a21fmr2715646wri.105.1705315305994;
        Mon, 15 Jan 2024 02:41:45 -0800 (PST)
From: Roger Pau Monne <roger.pau@citrix.com>
To: xen-devel@lists.xenproject.org
Cc: Roger Pau Monne <roger.pau@citrix.com>,
	Oleksii Kurochko <oleksii.kurochko@gmail.com>,
	Community Manager <community.manager@xenproject.org>,
	Wei Liu <wl@xen.org>,
	Anthony PERARD <anthony.perard@citrix.com>,
	Juergen Gross <jgross@suse.com>,
	=?UTF-8?q?Marek=20Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>,
	Jan Beulich <jbeulich@suse.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>
Subject: [PATCH v3] x86/hvm: don't expose XENFEAT_hvm_pirqs by default
Date: Mon, 15 Jan 2024 11:40:15 +0100
Message-ID: <20240115104015.81452-1-roger.pau@citrix.com>
X-Mailer: git-send-email 2.43.0
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

The HVM pirq feature allows routing interrupts from both physical and emulated
devices over event channels, this was done a performance improvement.  However
its usage is fully undocumented, and the only reference implementation is in
Linux.  It defeats the purpose of local APIC hardware virtualization, because
when using it interrupts avoid the usage of the local APIC altogether.

It has also been reported to not work properly with certain devices, at least
when using some AMD GPUs Linux attempts to route interrupts over event
channels, but Xen doesn't correctly detect such routing, which leads to the
hypervisor complaining with:

(XEN) d15v0: Unsupported MSI delivery mode 7 for Dom15

When MSIs are attempted to be routed over event channels the entry delivery
mode is set to ExtINT, but Xen doesn't detect such routing and attempts to
inject the interrupt following the native MSI path, and the ExtINT delivery
mode is not supported.

Disable HVM PIRQs by default and provide a per-domain option in xl.cfg to
enable such feature.  Also for backwards compatibility keep the feature enabled
for any resumed domains that don't have an explicit selection.

Note that the only user of the feature (Linux) is also able to handle native
interrupts fine, as the feature was already not used if Xen reported local APIC
hardware virtualization active.

Link: https://github.com/QubesOS/qubes-issues/issues/7971
Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
Reviewed-by: Anthony PERARD <anthony.perard@citrix.com>
---
Changes since v2:
 - Add changelog entry.

Changes since v1:
 - Fix libxl for PV guests.
---
 CHANGELOG.md                      |  2 ++
 docs/man/xl.cfg.5.pod.in          |  7 +++++++
 tools/include/libxl.h             |  7 +++++++
 tools/libs/light/libxl_create.c   |  7 +++++--
 tools/libs/light/libxl_types.idl  |  1 +
 tools/libs/light/libxl_x86.c      | 12 +++++++++---
 tools/python/xen/lowlevel/xc/xc.c |  4 +++-
 tools/xl/xl_parse.c               |  1 +
 xen/arch/x86/domain.c             |  4 +++-
 9 files changed, 38 insertions(+), 7 deletions(-)

diff --git a/CHANGELOG.md b/CHANGELOG.md
index 723d06425431..ddb3ab8db4e7 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -9,6 +9,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/)
 ### Changed
  - Changed flexible array definitions in public I/O interface headers to not
    use "1" as the number of array elements.
+ - On x86:
+   - HVM PIRQs are disabled by default.
 
 ### Added
  - On x86:
diff --git a/docs/man/xl.cfg.5.pod.in b/docs/man/xl.cfg.5.pod.in
index 2e234b450efb..ea8d41727d8e 100644
--- a/docs/man/xl.cfg.5.pod.in
+++ b/docs/man/xl.cfg.5.pod.in
@@ -2460,6 +2460,13 @@ The viridian option can be specified as a boolean. A value of true (1)
 is equivalent to the list [ "defaults" ], and a value of false (0) is
 equivalent to an empty list.
 
+=item B<hvm_pirq=BOOLEAN>
+
+Select whether the guest is allowed to route interrupts from devices (either
+emulated or passed through) over event channels.
+
+This option is disabled by default.
+
 =back
 
 =head3 Emulated VGA Graphics Device
diff --git a/tools/include/libxl.h b/tools/include/libxl.h
index 907aa0a3303a..f1652b1664f0 100644
--- a/tools/include/libxl.h
+++ b/tools/include/libxl.h
@@ -608,6 +608,13 @@
  * executable in order to not run it as the same user as libxl.
  */
 
+/*
+ * LIBXL_HAVE_HVM_PIRQ indicates the presence of the u.hvm.pirq filed in
+ * libxl_domain_build_info that signals whether an HVM guest has accesses to
+ * the XENFEAT_hvm_pirqs feature.
+ */
+#define LIBXL_HAVE_HVM_PIRQ 1
+
 /*
  * libxl memory management
  *
diff --git a/tools/libs/light/libxl_create.c b/tools/libs/light/libxl_create.c
index ce1d43110336..0008fac607e3 100644
--- a/tools/libs/light/libxl_create.c
+++ b/tools/libs/light/libxl_create.c
@@ -376,6 +376,7 @@ int libxl__domain_build_info_setdefault(libxl__gc *gc,
         libxl_defbool_setdefault(&b_info->u.hvm.usb,                false);
         libxl_defbool_setdefault(&b_info->u.hvm.vkb_device,         true);
         libxl_defbool_setdefault(&b_info->u.hvm.xen_platform_pci,   true);
+        libxl_defbool_setdefault(&b_info->u.hvm.pirq,               false);
 
         libxl_defbool_setdefault(&b_info->u.hvm.spice.enable, false);
         if (!libxl_defbool_val(b_info->u.hvm.spice.enable) &&
@@ -2375,10 +2376,12 @@ int libxl_domain_create_restore(libxl_ctx *ctx, libxl_domain_config *d_config,
 
     /*
      * When restoring (either from a save file or for a migration domain) set
-     * the MSR relaxed mode for compatibility with older Xen versions if the
-     * option is not set as part of the original configuration.
+     * the MSR relaxed mode and HVM PIRQs for compatibility with older Xen
+     * versions if the options are not set as part of the original
+     * configuration.
      */
     libxl_defbool_setdefault(&d_config->b_info.arch_x86.msr_relaxed, true);
+    libxl_defbool_setdefault(&d_config->b_info.u.hvm.pirq, true);
 
     return do_domain_create(ctx, d_config, domid, restore_fd, send_back_fd,
                             params, ao_how, aop_console_how);
diff --git a/tools/libs/light/libxl_types.idl b/tools/libs/light/libxl_types.idl
index 7d8bd5d21667..899ad3096926 100644
--- a/tools/libs/light/libxl_types.idl
+++ b/tools/libs/light/libxl_types.idl
@@ -692,6 +692,7 @@ libxl_domain_build_info = Struct("domain_build_info",[
                                        ("rdm", libxl_rdm_reserve),
                                        ("rdm_mem_boundary_memkb", MemKB),
                                        ("mca_caps",         uint64),
+                                       ("pirq",             libxl_defbool),
                                        ])),
                  ("pv", Struct(None, [("kernel", string, {'deprecated_by': 'kernel'}),
                                       ("slack_memkb", MemKB),
diff --git a/tools/libs/light/libxl_x86.c b/tools/libs/light/libxl_x86.c
index d16573e72cd4..a50ec37eb3eb 100644
--- a/tools/libs/light/libxl_x86.c
+++ b/tools/libs/light/libxl_x86.c
@@ -9,6 +9,8 @@ int libxl__arch_domain_prepare_config(libxl__gc *gc,
     switch(d_config->c_info.type) {
     case LIBXL_DOMAIN_TYPE_HVM:
         config->arch.emulation_flags = (XEN_X86_EMU_ALL & ~XEN_X86_EMU_VPCI);
+        if (!libxl_defbool_val(d_config->b_info.u.hvm.pirq))
+            config->arch.emulation_flags &= ~XEN_X86_EMU_USE_PIRQ;
         break;
     case LIBXL_DOMAIN_TYPE_PVH:
         config->arch.emulation_flags = XEN_X86_EMU_LAPIC;
@@ -864,15 +866,19 @@ void libxl__arch_update_domain_config(libxl__gc *gc,
                                       const libxl_domain_config *src)
 {
     /*
-     * Force MSR relaxed to be set (either to true or false) so it's part of
-     * the domain configuration when saving or performing a live-migration.
+     * Force MSR relaxed and HVM pirq to be set (either to true or false) so
+     * it's part of the domain configuration when saving or performing a
+     * live-migration.
      *
-     * Doing so allows the recovery side to figure out whether the flag should
+     * Doing so allows the recovery side to figure out whether the flags should
      * be set to true in order to keep backwards compatibility with already
      * started domains.
      */
     libxl_defbool_setdefault(&dst->b_info.arch_x86.msr_relaxed,
                     libxl_defbool_val(src->b_info.arch_x86.msr_relaxed));
+    if (src->c_info.type == LIBXL_DOMAIN_TYPE_HVM )
+        libxl_defbool_setdefault(&dst->b_info.u.hvm.pirq,
+                                 libxl_defbool_val(src->b_info.u.hvm.pirq));
 }
 
 /*
diff --git a/tools/python/xen/lowlevel/xc/xc.c b/tools/python/xen/lowlevel/xc/xc.c
index d3ea350e07b9..9feb12ae2b16 100644
--- a/tools/python/xen/lowlevel/xc/xc.c
+++ b/tools/python/xen/lowlevel/xc/xc.c
@@ -159,7 +159,9 @@ static PyObject *pyxc_domain_create(XcObject *self,
 
 #if defined (__i386) || defined(__x86_64__)
     if ( config.flags & XEN_DOMCTL_CDF_hvm )
-        config.arch.emulation_flags = (XEN_X86_EMU_ALL & ~XEN_X86_EMU_VPCI);
+        config.arch.emulation_flags = XEN_X86_EMU_ALL &
+                                      ~(XEN_X86_EMU_VPCI |
+                                        XEN_X86_EMU_USE_PIRQ);
 #elif defined (__arm__) || defined(__aarch64__)
     config.arch.gic_version = XEN_DOMCTL_CONFIG_GIC_NATIVE;
 #else
diff --git a/tools/xl/xl_parse.c b/tools/xl/xl_parse.c
index ed983200c3f8..9b358f11b88e 100644
--- a/tools/xl/xl_parse.c
+++ b/tools/xl/xl_parse.c
@@ -1801,6 +1801,7 @@ void parse_config_data(const char *config_source,
         xlu_cfg_get_defbool(config, "hpet", &b_info->u.hvm.hpet, 0);
         xlu_cfg_get_defbool(config, "vpt_align", &b_info->u.hvm.vpt_align, 0);
         xlu_cfg_get_defbool(config, "apic", &b_info->apic, 0);
+        xlu_cfg_get_defbool(config, "hvm_pirq", &b_info->u.hvm.pirq, 0);
 
         switch (xlu_cfg_get_list(config, "viridian",
                                  &viridian, &num_viridian, 1))
diff --git a/xen/arch/x86/domain.c b/xen/arch/x86/domain.c
index 8a31d18f6967..bda853e3c92b 100644
--- a/xen/arch/x86/domain.c
+++ b/xen/arch/x86/domain.c
@@ -725,7 +725,9 @@ static bool emulation_flags_ok(const struct domain *d, uint32_t emflags)
              emflags != (X86_EMU_VPCI | X86_EMU_LAPIC | X86_EMU_IOAPIC) )
             return false;
         if ( !is_hardware_domain(d) &&
-             emflags != (X86_EMU_ALL & ~X86_EMU_VPCI) &&
+             /* HVM PIRQ feature is user-selectable. */
+             (emflags & ~X86_EMU_USE_PIRQ) !=
+             (X86_EMU_ALL & ~(X86_EMU_VPCI | X86_EMU_USE_PIRQ)) &&
              emflags != X86_EMU_LAPIC )
             return false;
     }
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Mon Jan 15 11:01:24 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 15 Jan 2024 11:01:24 +0000
Received: from list by lists.xenproject.org with outflank-mailman.667294.1038410 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPKiS-000177-9q; Mon, 15 Jan 2024 11:01:16 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 667294.1038410; Mon, 15 Jan 2024 11:01:16 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPKiS-000170-6T; Mon, 15 Jan 2024 11:01:16 +0000
Received: by outflank-mailman (input) for mailman id 667294;
 Mon, 15 Jan 2024 11:01:14 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=jLm1=IZ=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rPKiQ-00016u-91
 for xen-devel@lists.xenproject.org; Mon, 15 Jan 2024 11:01:14 +0000
Received: from mail-lj1-x22b.google.com (mail-lj1-x22b.google.com
 [2a00:1450:4864:20::22b])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 64c2da33-b395-11ee-9b0f-b553b5be7939;
 Mon, 15 Jan 2024 12:01:11 +0100 (CET)
Received: by mail-lj1-x22b.google.com with SMTP id
 38308e7fff4ca-2ccbc328744so103259711fa.3
 for <xen-devel@lists.xenproject.org>; Mon, 15 Jan 2024 03:01:11 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 z15-20020a6bc90f000000b007bf05f618f3sm2414781iof.55.2024.01.15.03.01.09
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 15 Jan 2024 03:01:10 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 64c2da33-b395-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1705316471; x=1705921271; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=wuAsbI4N3KCf8fOkgguZHZdTspuwvGCauC8OkwkHco4=;
        b=GIelxCSgSmmtZK+vk2ws6CtXdgBiLhWInFu0EjE14b4o71wedRR86DHZpYYKlGtPUe
         AczLjI0EKnsrCUEa2LgdZXrFu83GHkMRgzqbm5QQ3qEsQENcUAINT0GApz6seLEP83OG
         t9aogXtRrbe1GnGh6I8ME6UNZY1Vm4/39wgk+kGANcA04cG0/TqjQx3X80glFQvUPYqz
         SOKi96S3dMixyZ3ozUAeoRnHlP8LNBCIp0/wZ18YPVR/QNwXYUEL5AusfJs8WPukd7cl
         D7ZieXN6dQVb+gSdX6p5e9nWCWCYBZARt8O3PzoSbvA1v4Yb+iBJMWQTBAHHCmzaz5Eb
         I98w==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705316471; x=1705921271;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=wuAsbI4N3KCf8fOkgguZHZdTspuwvGCauC8OkwkHco4=;
        b=pkmoFnXTMNuZRMecoVC1QfP92I85S4FOGR/k9yYcrKdttlJRGB7cZwbeh9+twAthkv
         7CpwasIyeWE0TyqwN5UiA7I4tYyfv3m17S9MPwhCqIQ+9PwnSA/7nxBIJA4scQ5oE4qk
         Ixoa9JqsR5tkKLl2UUBAjjRXma4ytDPnTO540uFRaUAWp/+uK65rIT0H7SLR4R5RAwqS
         wExQn5+WQrqyMzd/dtoFNiATsp8BfChAW2x7vxD48rA2DqirTVaaYpMjoE/dSvPUOFVS
         mVQFvZF3amTHE2dZ5bBbcHW04fLDfmyyuzL4frx4Imak0bhdDm6LnnqJv7CxXnODRKum
         7Vyg==
X-Gm-Message-State: AOJu0Yz5tIyFV2K4u+gQHTv1j61HqQT996x56Y8bTMRPiVQTkB5Z1ntY
	CZngB/Zfy8wt4/PFoBGp5B7qveurk1w1
X-Google-Smtp-Source: AGHT+IGNqy1aJbZFFzXiNoqAuNAqdIqFFehe5qiQF01GtBb1MYv1/QXZtSdJRxWIrU7cFvABYwyxMg==
X-Received: by 2002:a2e:a23b:0:b0:2cc:f135:8d60 with SMTP id i27-20020a2ea23b000000b002ccf1358d60mr2159211ljm.91.1705316471280;
        Mon, 15 Jan 2024 03:01:11 -0800 (PST)
Message-ID: <c1abf4ca-d69a-4a17-b23c-18f06b8fddda@suse.com>
Date: Mon, 15 Jan 2024 12:01:11 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 21/34] xen/riscv: introduce p2m.h
Content-Language: en-US
To: Oleksii <oleksii.kurochko@gmail.com>
Cc: Shawn Anastasio <sanastasio@raptorengineering.com>,
 Alistair Francis <alistair.francis@wdc.com>,
 Bob Eshleman <bobbyeshleman@gmail.com>, Connor Davis
 <connojdavis@gmail.com>, xen-devel@lists.xenproject.org,
 Julien Grall <julien@xen.org>
References: <cover.1703255175.git.oleksii.kurochko@gmail.com>
 <c3b1f24aea1ba01505697717b240c8d036abfee1.1703255175.git.oleksii.kurochko@gmail.com>
 <abeafa19-7867-46b2-bc0e-b39eaa0f5036@xen.org>
 <abef4701c3f2292e672679f1a18c826d699e1af2.camel@gmail.com>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <abef4701c3f2292e672679f1a18c826d699e1af2.camel@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 15.01.2024 11:35, Oleksii wrote:
> Hi Julien,
> 
> On Fri, 2024-01-12 at 10:39 +0000, Julien Grall wrote:
>> Hi Oleksii,
>>
>> On 22/12/2023 15:13, Oleksii Kurochko wrote:
>>> Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>
>>> ---
>>> Changes in V3:
>>>   - add SPDX
>>>   - drop unneeded for now p2m types.
>>>   - return false in all functions implemented with BUG() inside.
>>>   - update the commit message
>>> ---
>>> Changes in V2:
>>>   - Nothing changed. Only rebase.
>>> ---
>>>   xen/arch/ppc/include/asm/p2m.h   |   3 +-
>>>   xen/arch/riscv/include/asm/p2m.h | 102
>>> +++++++++++++++++++++++++++++++
>>>   2 files changed, 103 insertions(+), 2 deletions(-)
>>>   create mode 100644 xen/arch/riscv/include/asm/p2m.h
>>>
>>> diff --git a/xen/arch/ppc/include/asm/p2m.h
>>> b/xen/arch/ppc/include/asm/p2m.h
>>> index 25ba054668..3bc05b7c05 100644
>>> --- a/xen/arch/ppc/include/asm/p2m.h
>>> +++ b/xen/arch/ppc/include/asm/p2m.h
>>> @@ -50,8 +50,7 @@ static inline void memory_type_changed(struct
>>> domain *d)
>>>   static inline int guest_physmap_mark_populate_on_demand(struct
>>> domain *d, unsigned long gfn,
>>>                                                           unsigned
>>> int order)
>>>   {
>>> -    BUG_ON("unimplemented");
>>> -    return 1;
>>> +    return -EOPNOTSUPP;
>>>   }
>>>   
>>>   static inline int guest_physmap_add_entry(struct domain *d,
>>> diff --git a/xen/arch/riscv/include/asm/p2m.h
>>> b/xen/arch/riscv/include/asm/p2m.h
>>> new file mode 100644
>>> index 0000000000..d270ef6635
>>> --- /dev/null
>>> +++ b/xen/arch/riscv/include/asm/p2m.h
>>> @@ -0,0 +1,102 @@
>>> +/* SPDX-License-Identifier: GPL-2.0-only */
>>> +#ifndef __ASM_RISCV_P2M_H__
>>> +#define __ASM_RISCV_P2M_H__
>>> +
>>> +#include <asm/page-bits.h>
>>> +
>>> +#define paddr_bits PADDR_BITS
>>> +
>>> +/*
>>> + * List of possible type for each page in the p2m entry.
>>> + * The number of available bit per page in the pte for this
>>> purpose is 4 bits.
>>> + * So it's possible to only have 16 fields. If we run out of value
>>> in the
>>> + * future, it's possible to use higher value for pseudo-type and
>>> don't store
>>> + * them in the p2m entry.
>>> + */
>>
>> This looks like a verbatim copy from Arm. Did you actually check
>> RISC-V 
>> has 4 bits available in the PTE to store this value?
> Thanks for noticing that, in RISC-V it is available only 2 bits ( bits
> 8 and 9), so I'll update the comment:
> 53                   10 9    8 7 6 5 4 3 2 1 0
>  Physical Page Number     RSV  D A G U X W R V

It's RSW (Reserved for Supervisor softWare use), not RSV, which is pretty
important in this context.

> It seems that I missed something in the Arm code/architecture.As far as I recall, in Arm, bits 5-8 are ignored by the MMU, and they
> are expected
> to be used by the hypervisor for its purpose.
> However, in the code, I notice that these bits are utilized for storing
> a reference counter.

Why "however"? Hardware still is going to ignore these bits.

Jan


From xen-devel-bounces@lists.xenproject.org Mon Jan 15 11:01:59 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 15 Jan 2024 11:01:59 +0000
Received: from list by lists.xenproject.org with outflank-mailman.667296.1038420 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPKj9-0001a5-JB; Mon, 15 Jan 2024 11:01:59 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 667296.1038420; Mon, 15 Jan 2024 11:01:59 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPKj9-0001Zy-F7; Mon, 15 Jan 2024 11:01:59 +0000
Received: by outflank-mailman (input) for mailman id 667296;
 Mon, 15 Jan 2024 11:01:57 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=1TER=IZ=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1rPKj7-00016u-PC
 for xen-devel@lists.xenproject.org; Mon, 15 Jan 2024 11:01:57 +0000
Received: from mail-ej1-x631.google.com (mail-ej1-x631.google.com
 [2a00:1450:4864:20::631])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 7f2633f3-b395-11ee-9b0f-b553b5be7939;
 Mon, 15 Jan 2024 12:01:56 +0100 (CET)
Received: by mail-ej1-x631.google.com with SMTP id
 a640c23a62f3a-a29058bb2ceso916985666b.0
 for <xen-devel@lists.xenproject.org>; Mon, 15 Jan 2024 03:01:56 -0800 (PST)
Received: from [10.80.67.30] (default-46-102-197-194.interdsl.co.uk.
 [46.102.197.194]) by smtp.gmail.com with ESMTPSA id
 a23-20020a1709062b1700b00a2a67731f31sm5099665ejg.109.2024.01.15.03.01.55
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 15 Jan 2024 03:01:55 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 7f2633f3-b395-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1705316515; x=1705921315; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=sv/QjmJSggjPLqJihTOZzuwyxSejKrYTfPobr1dVrQQ=;
        b=pVUf6+cmCdpFt0ocvKCXjYgxrZ+PSkAsuny+/2jnusQkqCS09UlnKcWLNonTSfOIyL
         cXhV7fwrg/flV72+l4PYHA6na1cZzh7fyn4t1J5m4sAG0J2bf5oZtGY8zD0cgT5SDhsJ
         BXWJNawJ3+NroyrYMSPAb8iz8+nB2t54g5nvs=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705316515; x=1705921315;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=sv/QjmJSggjPLqJihTOZzuwyxSejKrYTfPobr1dVrQQ=;
        b=R59J+nrrRQdK+Ea8IBgRTBCdT2GVEp07Od4GSuKBqXdilprv7/GhTiOhPNj8alfvIT
         ONO0E3vkhPAu70DNFBAJUf0Dig7K56mPfb7bhqsoldie53K6POgr3UT5ANdeQX9q3MTL
         LxLhl+nhxYN6znIgqh+fA/5L4p78cAJwv2ltBaonthihrboCbU7v7liTnVb+80JCis6p
         puQm9ErwpR6u7J4/xFQhjaVptcWl5F4oga/3WCv1zxQdXd7HEf1jqBoX+HaUPp24jKPj
         kTjjn+p7lsAY6eRRBnjMmifmUdUgc1qMJct7m70QDtYUPevttNZ5MPUxPmpDDWNKULRo
         NrhQ==
X-Gm-Message-State: AOJu0YzhGcKi3NaMIWWrtg9W3lb35KgJt6dKCB8Aa+qNHOBGhJa4DZEQ
	nwPisPcjdDkF0++dOIMdpiD20/c/3pa44qQuXiey8zCQxdAD2Q==
X-Google-Smtp-Source: AGHT+IFaXXPlC1+6FrVwaTJiRLVNMZlmVksLEE2FQc+HCOuKqxdSNLtZnbOlTozYSaPfiiruPQ+CSQ==
X-Received: by 2002:a17:907:830a:b0:a27:f865:4a14 with SMTP id mq10-20020a170907830a00b00a27f8654a14mr1457943ejc.141.1705316515544;
        Mon, 15 Jan 2024 03:01:55 -0800 (PST)
Message-ID: <854db64e-a3c1-4c2f-8a68-8557f7f5a5d1@citrix.com>
Date: Mon, 15 Jan 2024 11:01:54 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] CirrusCI: drop FreeBSD 12
Content-Language: en-GB
To: Roger Pau Monne <roger.pau@citrix.com>, xen-devel@lists.xenproject.org
Cc: George Dunlap <george.dunlap@citrix.com>, Jan Beulich
 <jbeulich@suse.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>
References: <20240115102718.81294-1-roger.pau@citrix.com>
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 xsFNBFLhNn8BEADVhE+Hb8i0GV6mihnnr/uiQQdPF8kUoFzCOPXkf7jQ5sLYeJa0cQi6Penp
 VtiFYznTairnVsN5J+ujSTIb+OlMSJUWV4opS7WVNnxHbFTPYZVQ3erv7NKc2iVizCRZ2Kxn
 srM1oPXWRic8BIAdYOKOloF2300SL/bIpeD+x7h3w9B/qez7nOin5NzkxgFoaUeIal12pXSR
 Q354FKFoy6Vh96gc4VRqte3jw8mPuJQpfws+Pb+swvSf/i1q1+1I4jsRQQh2m6OTADHIqg2E
 ofTYAEh7R5HfPx0EXoEDMdRjOeKn8+vvkAwhviWXTHlG3R1QkbE5M/oywnZ83udJmi+lxjJ5
 YhQ5IzomvJ16H0Bq+TLyVLO/VRksp1VR9HxCzItLNCS8PdpYYz5TC204ViycobYU65WMpzWe
 LFAGn8jSS25XIpqv0Y9k87dLbctKKA14Ifw2kq5OIVu2FuX+3i446JOa2vpCI9GcjCzi3oHV
 e00bzYiHMIl0FICrNJU0Kjho8pdo0m2uxkn6SYEpogAy9pnatUlO+erL4LqFUO7GXSdBRbw5
 gNt25XTLdSFuZtMxkY3tq8MFss5QnjhehCVPEpE6y9ZjI4XB8ad1G4oBHVGK5LMsvg22PfMJ
 ISWFSHoF/B5+lHkCKWkFxZ0gZn33ju5n6/FOdEx4B8cMJt+cWwARAQABzSlBbmRyZXcgQ29v
 cGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPsLBegQTAQgAJAIbAwULCQgHAwUVCgkI
 CwUWAgMBAAIeAQIXgAUCWKD95wIZAQAKCRBlw/kGpdefoHbdD/9AIoR3k6fKl+RFiFpyAhvO
 59ttDFI7nIAnlYngev2XUR3acFElJATHSDO0ju+hqWqAb8kVijXLops0gOfqt3VPZq9cuHlh
 IMDquatGLzAadfFx2eQYIYT+FYuMoPZy/aTUazmJIDVxP7L383grjIkn+7tAv+qeDfE+txL4
 SAm1UHNvmdfgL2/lcmL3xRh7sub3nJilM93RWX1Pe5LBSDXO45uzCGEdst6uSlzYR/MEr+5Z
 JQQ32JV64zwvf/aKaagSQSQMYNX9JFgfZ3TKWC1KJQbX5ssoX/5hNLqxMcZV3TN7kU8I3kjK
 mPec9+1nECOjjJSO/h4P0sBZyIUGfguwzhEeGf4sMCuSEM4xjCnwiBwftR17sr0spYcOpqET
 ZGcAmyYcNjy6CYadNCnfR40vhhWuCfNCBzWnUW0lFoo12wb0YnzoOLjvfD6OL3JjIUJNOmJy
 RCsJ5IA/Iz33RhSVRmROu+TztwuThClw63g7+hoyewv7BemKyuU6FTVhjjW+XUWmS/FzknSi
 dAG+insr0746cTPpSkGl3KAXeWDGJzve7/SBBfyznWCMGaf8E2P1oOdIZRxHgWj0zNr1+ooF
 /PzgLPiCI4OMUttTlEKChgbUTQ+5o0P080JojqfXwbPAyumbaYcQNiH1/xYbJdOFSiBv9rpt
 TQTBLzDKXok86M7BTQRS4TZ/ARAAkgqudHsp+hd82UVkvgnlqZjzz2vyrYfz7bkPtXaGb9H4
 Rfo7mQsEQavEBdWWjbga6eMnDqtu+FC+qeTGYebToxEyp2lKDSoAsvt8w82tIlP/EbmRbDVn
 7bhjBlfRcFjVYw8uVDPptT0TV47vpoCVkTwcyb6OltJrvg/QzV9f07DJswuda1JH3/qvYu0p
 vjPnYvCq4NsqY2XSdAJ02HrdYPFtNyPEntu1n1KK+gJrstjtw7KsZ4ygXYrsm/oCBiVW/OgU
 g/XIlGErkrxe4vQvJyVwg6YH653YTX5hLLUEL1NS4TCo47RP+wi6y+TnuAL36UtK/uFyEuPy
 wwrDVcC4cIFhYSfsO0BumEI65yu7a8aHbGfq2lW251UcoU48Z27ZUUZd2Dr6O/n8poQHbaTd
 6bJJSjzGGHZVbRP9UQ3lkmkmc0+XCHmj5WhwNNYjgbbmML7y0fsJT5RgvefAIFfHBg7fTY/i
 kBEimoUsTEQz+N4hbKwo1hULfVxDJStE4sbPhjbsPCrlXf6W9CxSyQ0qmZ2bXsLQYRj2xqd1
 bpA+1o1j2N4/au1R/uSiUFjewJdT/LX1EklKDcQwpk06Af/N7VZtSfEJeRV04unbsKVXWZAk
 uAJyDDKN99ziC0Wz5kcPyVD1HNf8bgaqGDzrv3TfYjwqayRFcMf7xJaL9xXedMcAEQEAAcLB
 XwQYAQgACQUCUuE2fwIbDAAKCRBlw/kGpdefoG4XEACD1Qf/er8EA7g23HMxYWd3FXHThrVQ
 HgiGdk5Yh632vjOm9L4sd/GCEACVQKjsu98e8o3ysitFlznEns5EAAXEbITrgKWXDDUWGYxd
 pnjj2u+GkVdsOAGk0kxczX6s+VRBhpbBI2PWnOsRJgU2n10PZ3mZD4Xu9kU2IXYmuW+e5KCA
 vTArRUdCrAtIa1k01sPipPPw6dfxx2e5asy21YOytzxuWFfJTGnVxZZSCyLUO83sh6OZhJkk
 b9rxL9wPmpN/t2IPaEKoAc0FTQZS36wAMOXkBh24PQ9gaLJvfPKpNzGD8XWR5HHF0NLIJhgg
 4ZlEXQ2fVp3XrtocHqhu4UZR4koCijgB8sB7Tb0GCpwK+C4UePdFLfhKyRdSXuvY3AHJd4CP
 4JzW0Bzq/WXY3XMOzUTYApGQpnUpdOmuQSfpV9MQO+/jo7r6yPbxT7CwRS5dcQPzUiuHLK9i
 nvjREdh84qycnx0/6dDroYhp0DFv4udxuAvt1h4wGwTPRQZerSm4xaYegEFusyhbZrI0U9tJ
 B8WrhBLXDiYlyJT6zOV2yZFuW47VrLsjYnHwn27hmxTC/7tvG3euCklmkn9Sl9IAKFu29RSo
 d5bD8kMSCYsTqtTfT6W4A3qHGvIDta3ptLYpIAOD2sY3GYq2nf3Bbzx81wZK14JdDDHUX2Rs
 6+ahAA==
In-Reply-To: <20240115102718.81294-1-roger.pau@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 15/01/2024 10:27 am, Roger Pau Monne wrote:
> Went EOL by the end of December 2023, and the pkg repos have been shut down.
>
> Reported-by: Andrew Cooper <andrew.cooper3@citrix.com>
> Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>

Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>

We'll need to backport this, I guess ?


From xen-devel-bounces@lists.xenproject.org Mon Jan 15 11:05:26 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 15 Jan 2024 11:05:26 +0000
Received: from list by lists.xenproject.org with outflank-mailman.667300.1038429 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPKmT-0002Cq-02; Mon, 15 Jan 2024 11:05:25 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 667300.1038429; Mon, 15 Jan 2024 11:05:24 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPKmS-0002Cj-Tm; Mon, 15 Jan 2024 11:05:24 +0000
Received: by outflank-mailman (input) for mailman id 667300;
 Mon, 15 Jan 2024 11:05:24 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=nyhf=IZ=minervasys.tech=carlo.nonato@srs-se1.protection.inumbo.net>)
 id 1rPKmS-0002Cd-9H
 for xen-devel@lists.xenproject.org; Mon, 15 Jan 2024 11:05:24 +0000
Received: from mail-ej1-x62c.google.com (mail-ej1-x62c.google.com
 [2a00:1450:4864:20::62c])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id fa131b70-b395-11ee-9b0f-b553b5be7939;
 Mon, 15 Jan 2024 12:05:22 +0100 (CET)
Received: by mail-ej1-x62c.google.com with SMTP id
 a640c23a62f3a-a28b2e1a13fso905367066b.3
 for <xen-devel@lists.xenproject.org>; Mon, 15 Jan 2024 03:05:22 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: fa131b70-b395-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=minervasys-tech.20230601.gappssmtp.com; s=20230601; t=1705316722; x=1705921522; darn=lists.xenproject.org;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:from:to:cc:subject:date
         :message-id:reply-to;
        bh=q+1A3r8A/mtSHOVUpe7XomgsOGCCJ7c+QcdSEI0IBXs=;
        b=Zi9/E3AKRMHrK38KnloeOPgJYtZzIEi++KA2LvuEcwOut2KFGG0Mh53Vna/+DPH/Y5
         r6A/pu4ksF1nJabvLS3lo7W0VhSETubwyKr7ai92U3DY/F3h9oiz3TqbAzfH/ATVuNgW
         aexISNHTEgNMQQnQxI2F5YOE0kbaMRRG2gnMaQOlwgROZ5nbt97cxA3A1EdlmnIoJDIt
         MKlu8HGvvAj81c6OolcwrDmPYgk5vSLtMD3xUn1AM6aHBhigwZf3r3fVOSTpFavGG+Dz
         bYQWUadJo8pQ2tzvBwxTo+mleYGBhYWNB9Mox7cB8Oet0QL2lGzq48/CmBZ0XJYkvfDd
         we4w==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705316722; x=1705921522;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to;
        bh=q+1A3r8A/mtSHOVUpe7XomgsOGCCJ7c+QcdSEI0IBXs=;
        b=jj8qVskm6afgmIzCgLH1X+dsDukmqP4HS0fSdWPihdtF54ebaKvo2muD6mQcdAK76V
         Fp/ZLyg3LRhcVWDOW9G7I2RWIuIXXg5Sy/xhai10mNX2d+hgXlBaJIFGmarC1iNd+CSC
         iDheZQ4mPaOgjopCojcbPezE8a4jfUBn7JHKp/Q7r6yNdjywXFrBu3zIKy/TgA6o2SMx
         ZHx6/uWjiUgAeiVgI3OkJybnjRWVlf6MLz+3GLMTYhqCNqZs0FqEf2ekKOL/l78bK6zf
         iwB+dlnVSvaFfcw5iEOkdJkhQFDD3RPsx+NvK4mKYDw10ToktiancU5f7/AEOQqh4JSw
         isnw==
X-Gm-Message-State: AOJu0YwCJulzPvNqZNnnBBh4Y9c2y9ZwMo6fBpalL22xo3e9+vQ8Qzus
	3V47dCsRWE+XnzKhdDC5AUru1sFUCOWECoy/vCuw16X6T5Sxdg==
X-Google-Smtp-Source: AGHT+IEXxsiJEK8g0TGxdQ1mNIa1GlA/I2w249GnNy8k4Y+86wKVOJgDbjuFCc36B1YBNbmfuxoqk5Je3+a1G+QX/+k=
X-Received: by 2002:a17:907:a08b:b0:a28:d132:c4a9 with SMTP id
 hu11-20020a170907a08b00b00a28d132c4a9mr2795255ejc.17.1705316721876; Mon, 15
 Jan 2024 03:05:21 -0800 (PST)
MIME-Version: 1.0
References: <20240102095138.17933-1-carlo.nonato@minervasys.tech>
 <20240102095138.17933-3-carlo.nonato@minervasys.tech> <5eb9fa24-c95e-4ea0-84ef-be74c629c106@xen.org>
 <CAG+AhRW5Xxy7BHVhmfkBqbdeKqRz7E1Mrc7wNv6F+ecM4P_QPw@mail.gmail.com>
 <CAG+AhRUw23a92v7geAwoDX-vqPLTPUEg3uoyOTThiUzL1CTk7w@mail.gmail.com> <c31bf4a3-979a-4445-905c-6a5545f8a36b@xen.org>
In-Reply-To: <c31bf4a3-979a-4445-905c-6a5545f8a36b@xen.org>
From: Carlo Nonato <carlo.nonato@minervasys.tech>
Date: Mon, 15 Jan 2024 12:05:11 +0100
Message-ID: <CAG+AhRUs_O5XKGTm+0x68PUGYHavdSC+tJ-F5jnyb=J-mLhG=Q@mail.gmail.com>
Subject: Re: [PATCH v5 02/13] xen/arm: add cache coloring initialization
To: Julien Grall <julien@xen.org>
Cc: xen-devel@lists.xenproject.org, 
	Stefano Stabellini <sstabellini@kernel.org>, Bertrand Marquis <bertrand.marquis@arm.com>, 
	Michal Orzel <michal.orzel@amd.com>, Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>, 
	Andrew Cooper <andrew.cooper3@citrix.com>, George Dunlap <george.dunlap@citrix.com>, 
	Jan Beulich <jbeulich@suse.com>, Wei Liu <wl@xen.org>, 
	Marco Solieri <marco.solieri@minervasys.tech>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

Hi Julien,

On Thu, Jan 11, 2024 at 11:44=E2=80=AFAM Julien Grall <julien@xen.org> wrot=
e:
> On 11/01/2024 10:17, Carlo Nonato wrote:
> > Hi Julien,
>
> Hi Carlo,
>
> >>>> +bool __init llc_coloring_init(void)
> >>>> +{
> >>>> +    if ( !llc_way_size && !(llc_way_size =3D get_llc_way_size()) )
> >>>> +    {
> >>>> +        printk(XENLOG_ERR
> >>>> +               "Probed LLC way size is 0 and no custom value provid=
ed\n");
> >>>> +        return false;
> >>>> +    }
> >>>> +
> >>>> +    /*
> >>>> +     * The maximum number of colors must be a power of 2 in order t=
o correctly
> >>>> +     * map them to bits of an address, so also the LLC way size mus=
t be so.
> >>>> +     */
> >>>> +    if ( llc_way_size & (llc_way_size - 1) )
> >>>> +    {
> >>>> +        printk(XENLOG_WARNING "LLC way size (%u) isn't a power of 2=
.\n",
> >>>> +               llc_way_size);
> >>>> +        llc_way_size =3D 1U << flsl(llc_way_size);
> >>>> +        printk(XENLOG_WARNING
> >>>> +               "Using %u instead. Performances will be suboptimal\n=
",
> >>>> +               llc_way_size);
> >>>> +    }
> >>>> +
> >>>> +    nr_colors =3D llc_way_size >> PAGE_SHIFT;
> >>>> +
> >>>> +    if ( nr_colors < 2 || nr_colors > CONFIG_NR_LLC_COLORS )
> >>>
> >>> I didn't find any documentation explaining why we need at least two
> >>> colors. I guess you want to make sure that there is a color for Xen a=
nd
> >>> domain. But I wonder what could wrong with just one color (other than
> >>> been pointless)?
> >>
> >> Yes, it would just be pointless. I'll change it to 1.
> >
> > Just wanted to correct myself here. Having just a single color introduc=
es a
> > clear sharing of the cache between Xen and domains. So it's not just
> > pointless, but also inefficient. I would discourage such a configuratio=
n, so I
> > plan to better describe this with a range in the Kconfig option (see
> > discussion in #1).
>
> I understand this could be inneficient. But you are also allowing the
> user to not specify the color configuration (at least for dom0less
> domain). So the colors would end up to shared with everyone (including Xe=
n).
>
> I don't particularly mind which way you want to go, but I think we need
> some coherency. If we want to avoid innefficiency, then we should
> prevent all the setups.

I definitely don't want to check for overlapping configurations since that
could also be a desired setup, but I do want sane defaults. You found some
inchoerency there cause Xen and the domains share one color. Maybe the best
solution would be to have a default configuration for domains that doesn't
overlap with the Xen one.

Back to the original point, having a single color for the whole platform is
just stupid, not only pointless. It defeats completely the coloring idea.
On the other hand the default configuration is something that could have an
application (still pretty "basic").

In patch #5 (dom0less) there is some contradiction where Xen panics when no
configuration is provided. I also misuderstood your comment on that patch
and it can't actually panic in that case, but instead use the default
configuration.

Thanks.

> Cheers,
>
> --
> Julien Grall


From xen-devel-bounces@lists.xenproject.org Mon Jan 15 11:07:49 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 15 Jan 2024 11:07:49 +0000
Received: from list by lists.xenproject.org with outflank-mailman.667307.1038439 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPKoi-0002lL-CB; Mon, 15 Jan 2024 11:07:44 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 667307.1038439; Mon, 15 Jan 2024 11:07:44 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPKoi-0002lE-8t; Mon, 15 Jan 2024 11:07:44 +0000
Received: by outflank-mailman (input) for mailman id 667307;
 Mon, 15 Jan 2024 11:07:43 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=nyhf=IZ=minervasys.tech=carlo.nonato@srs-se1.protection.inumbo.net>)
 id 1rPKog-0002l8-Uj
 for xen-devel@lists.xenproject.org; Mon, 15 Jan 2024 11:07:42 +0000
Received: from mail-lj1-x235.google.com (mail-lj1-x235.google.com
 [2a00:1450:4864:20::235])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 4cb82ac0-b396-11ee-9b0f-b553b5be7939;
 Mon, 15 Jan 2024 12:07:41 +0100 (CET)
Received: by mail-lj1-x235.google.com with SMTP id
 38308e7fff4ca-2cd33336b32so112240851fa.0
 for <xen-devel@lists.xenproject.org>; Mon, 15 Jan 2024 03:07:40 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 4cb82ac0-b396-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=minervasys-tech.20230601.gappssmtp.com; s=20230601; t=1705316860; x=1705921660; darn=lists.xenproject.org;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:from:to:cc:subject:date
         :message-id:reply-to;
        bh=TeVHDkO9IKAn0SnE591ikiHtFW1jLd3OhEB1XJbKsJg=;
        b=R7CEekcchOrVeopjnnE7oOac1xit1UoRenOe4Blgwo23sQujOpuAbAci2pt4SbRgTE
         SLPc3emxdYDMLhFlAizLZOQ4YilUPBMq4gLt6dSOCzA+So5Pn45attCAFyOYdTaydg5H
         Mg/UWQY4Gbp+fj7LcxbCk7UVrIBCmaon8dqmMBRL+urVagV7h1JNlMY8rqvTrjFHC5pW
         cRExZw2Feyrxg9RnpazrNQl2AAbmAW9oxR57XA7zBH72kDh0Max1Ts2WP2NmxacTI0wP
         0A+mmSpDMZWzh6YZ15PP5rz2OoUyMUoNawGQCr9VRSU5cJox3VJANaN3jq0rPGw6RFVK
         Ne3Q==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705316860; x=1705921660;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to;
        bh=TeVHDkO9IKAn0SnE591ikiHtFW1jLd3OhEB1XJbKsJg=;
        b=eMUkM10EnsiN0KqExPAbf5mdNQkkb9toO1MIR70MdRzR7r2IWCT30ZegrIqvZ1JVwt
         NZH6eIemffrCSdo6cQOWIk9IVmnOrYoY6jR6neEH4vxwTylR7F95/pt4SFtuAFVMV8wg
         XuLX8WMQxkQyigmAeSaeGiYr0D+o9lxTJ/rvkOUEEACF3s7h55i0nUtXQ4B14/pHwT/8
         2jcy4BefmpSksMihIi8NMV65/t3wnuOwpQRbNYqvf4XJkM7DixR3VgNqNU6RBgdImW0z
         BWfNG3dOtGc9abSopszSGrMr9eEVpS9o5AALVbVjJPNFy+ZqYbt16V+9zElTvyxOgKf/
         X9zQ==
X-Gm-Message-State: AOJu0YyIkrU5NaWl4399ZcqA38a3aHfC8RkuYSlHZGwpWCcwzMiuyUo2
	0yQDnB2sg6dnB6Po5tcwvzyox+y5C1F1EDzWyJ5istBNXQgUOA==
X-Google-Smtp-Source: AGHT+IFS2bZCDtelUD2IC2wmkkpOf0zmFg5Q/FR6T+lYalz1jK/OOpCbbPZlVKXTX9P9YTTIemUyrmHrFiYXnLa8Zzs=
X-Received: by 2002:a2e:2410:0:b0:2cc:a5b8:efaf with SMTP id
 k16-20020a2e2410000000b002cca5b8efafmr2453903ljk.55.1705316860235; Mon, 15
 Jan 2024 03:07:40 -0800 (PST)
MIME-Version: 1.0
References: <20240102095138.17933-1-carlo.nonato@minervasys.tech>
 <20240102095138.17933-10-carlo.nonato@minervasys.tech> <7fbe9526-60cf-4844-8b48-58ab69ec1b29@suse.com>
In-Reply-To: <7fbe9526-60cf-4844-8b48-58ab69ec1b29@suse.com>
From: Carlo Nonato <carlo.nonato@minervasys.tech>
Date: Mon, 15 Jan 2024 12:07:29 +0100
Message-ID: <CAG+AhRXFME0hzhhpRaAZ8AfK3A-npHWcGf=pHw_feVEA7SkaiQ@mail.gmail.com>
Subject: Re: [PATCH v5 09/13] xen: add cache coloring allocator for domains
To: Jan Beulich <jbeulich@suse.com>
Cc: Stefano Stabellini <sstabellini@kernel.org>, Julien Grall <julien@xen.org>, 
	Bertrand Marquis <bertrand.marquis@arm.com>, Michal Orzel <michal.orzel@amd.com>, 
	Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>, Andrew Cooper <andrew.cooper3@citrix.com>, 
	George Dunlap <george.dunlap@citrix.com>, Wei Liu <wl@xen.org>, 
	Marco Solieri <marco.solieri@minervasys.tech>, xen-devel@lists.xenproject.org
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

Hi Jan,

On Tue, Jan 9, 2024 at 11:28=E2=80=AFAM Jan Beulich <jbeulich@suse.com> wro=
te:
>
> On 02.01.2024 10:51, Carlo Nonato wrote:
> > This commit adds a new memory page allocator that implements the cache
> > coloring mechanism. The allocation algorithm enforces equal frequency
> > distribution of cache partitions, following the coloring configuration =
of a
> > domain. This allows an even utilization of cache sets for every domain.
> >
> > Pages are stored in a color-indexed array of lists. Those lists are fil=
led
> > by a simple init function which computes the color of each page.
> > When a domain requests a page, the allocator extract the page from the =
list
> > with the maximum number of free pages between those that the domain can
> > access, given its coloring configuration.
> >
> > The allocator can only handle requests of order-0 pages. This allows fo=
r
> > easier implementation and since cache coloring targets only embedded sy=
stems,
> > it's assumed not to be a major problem.
>
> I'm curious about the specific properties of embedded systems that makes
> the performance implications of deeper page walks less of an issue for
> them.
>
> Nothing is said about address-constrained allocations. Are such entirely
> of no interest to domains on Arm, not even to Dom0 (e.g. for filling
> Linux'es swiotlb)? Certainly alloc_color_heap_page() should at least
> fail when it can't satisfy the passed in memflags.
>
> > ---
> > v5:
> > - Carlo Nonato as the new author
> > - the colored allocator balances color usage for each domain and it sea=
rches
> >   linearly only in the number of colors (FIXME removed)
>
> While this addresses earlier concerns, meanwhile NUMA work has also
> been progressing. What's the plan of interaction of coloring with it?
>
> > --- a/xen/arch/Kconfig
> > +++ b/xen/arch/Kconfig
> > @@ -47,3 +47,15 @@ config NR_LLC_COLORS
> >         bound. The runtime value is autocomputed or manually set via cm=
dline.
> >         The default value corresponds to an 8 MiB 16-ways LLC, which sh=
ould be
> >         more than what needed in the general case.
> > +
> > +config BUDDY_ALLOCATOR_SIZE
> > +     int "Buddy allocator reserved memory size (MiB)"
> > +     default "64"
> > +     depends on LLC_COLORING
> > +     help
> > +       Amount of memory reserved for the buddy allocator to work along=
side
> > +       the colored one. The colored allocator is meant as an alternati=
ve to
> > +       the buddy allocator because its allocation policy is by definit=
ion
> > +       incompatible with the generic one. Since the Xen heap is not co=
lored
> > +       yet, we need to support the coexistence of the two allocators a=
nd some
> > +       memory must be left for the buddy one.
>
> Imo help text should be about the specific option, not general
> documentation. How about
>
>           Amount of memory reserved for the buddy allocator, to serve Xen=
's
>           heap, to work alongside the colored one.
>
> or some such?
>
> > --- a/xen/arch/arm/llc-coloring.c
> > +++ b/xen/arch/arm/llc-coloring.c
> > @@ -30,6 +30,9 @@ static unsigned int __ro_after_init nr_colors =3D CON=
FIG_NR_LLC_COLORS;
> >  static unsigned int __ro_after_init dom0_colors[CONFIG_NR_LLC_COLORS];
> >  static unsigned int __ro_after_init dom0_num_colors;
> >
> > +#define mfn_color_mask              (nr_colors - 1)
>
> This is used solely ...
>
> > +#define mfn_to_color(mfn)           (mfn_x(mfn) & mfn_color_mask)
>
> ... here, and this one in turn is used solely ...
>
> > @@ -312,6 +315,16 @@ int domain_set_llc_colors_from_str(struct domain *=
d, const char *str)
> >      return domain_check_colors(d);
> >  }
> >
> > +unsigned int page_to_llc_color(const struct page_info *pg)
> > +{
> > +    return mfn_to_color(page_to_mfn(pg));
> > +}
>
> ... here. What's the point in having those (private) macros?

They will be used in later patches (#13).

> > @@ -1946,6 +1951,162 @@ static unsigned long avail_heap_pages(
> >      return free_pages;
> >  }
> >
> > +/*************************
> > + * COLORED SIDE-ALLOCATOR
> > + *
> > + * Pages are grouped by LLC color in lists which are globally referred=
 to as the
> > + * color heap. Lists are populated in end_boot_allocator().
> > + * After initialization there will be N lists where N is the number of
> > + * available colors on the platform.
> > + */
> > +static struct page_list_head *__ro_after_init _color_heap;
> > +static unsigned long *__ro_after_init free_colored_pages;
>
> It's "just" two pointers, but still - what use are they when ...
>
> > +/* Memory required for buddy allocator to work with colored one */
> > +#ifdef CONFIG_LLC_COLORING
>
> ... this isn't defined?
>
> > +static unsigned long __initdata buddy_alloc_size =3D
> > +    MB(CONFIG_BUDDY_ALLOCATOR_SIZE);
> > +size_param("buddy-alloc-size", buddy_alloc_size);
> > +
> > +#define domain_num_llc_colors(d) ((d)->num_llc_colors)
> > +#define domain_llc_color(d, i)   ((d)->llc_colors[(i)])
>
> Nit: No need to parenthesize i when used like this.
>
> > +#else
> > +static unsigned long __initdata buddy_alloc_size;
> > +
> > +#define domain_num_llc_colors(d) 0
> > +#define domain_llc_color(d, i)   0
> > +#define page_to_llc_color(p)     0
> > +#define get_nr_llc_colors()      0
> > +#endif
> > +
> > +#define color_heap(color) (&_color_heap[color])
> > +
> > +void free_color_heap_page(struct page_info *pg, bool need_scrub)
>
> Likely applicable further down as well - this is dead code when
> !CONFIG_LLC_COLORING. Besides me, Misra also won't like this. The
> function also looks to want to be static, at which point DCE would
> apparently take care of removing it (and others, and then hopefully
> also the two static variables commented on above).
>
> > +struct page_info *alloc_color_heap_page(unsigned int memflags, struct =
domain *d)
>
> I don't think d is written through in the function, so it wants to
> be pointer-to-const.
>
> > +void __init init_color_heap_pages(struct page_info *pg, unsigned long =
nr_pages)
> > +{
> > +    unsigned int i;
> > +    bool need_scrub =3D (system_state < SYS_STATE_active &&
>
> Can this part of the condition be false, seeing we're in an __init
> function?

Nope. I'll drop it.

> > +                       opt_bootscrub =3D=3D BOOTSCRUB_IDLE);
> > +
> > +    if ( buddy_alloc_size )
> > +    {
> > +        unsigned long buddy_pages =3D min(PFN_DOWN(buddy_alloc_size), =
nr_pages);
> > +
> > +        init_heap_pages(pg, buddy_pages);
> > +        nr_pages -=3D buddy_pages;
> > +        buddy_alloc_size -=3D buddy_pages << PAGE_SHIFT;
> > +        pg +=3D buddy_pages;
> > +    }
>
> So whatever is passed into this function first is going to fill the
> Xen heap, without regard to address. I expect you're sure this won't
> cause issues on Arm. On x86 certain constraints exist which would
> require lower address ranges to be preferred.
>
> > +void dump_color_heap(void)
> > +{
> > +    unsigned int color;
> > +
> > +    printk("Dumping color heap info\n");
> > +    for ( color =3D 0; color < get_nr_llc_colors(); color++ )
> > +        if ( free_colored_pages[color] > 0 )
> > +            printk("Color heap[%u]: %lu pages\n",
> > +                   color, free_colored_pages[color]);
> > +}
>
> What's a typical range of number of colors on a system? I expect more
> than 9, but I'm not sure about a reasonable upper bound. For the
> output to be easy to consume, [%u] may want to become at least [%2u].

16 or 32 colors are pretty typical. In the past we set an upper bound at
128 colors.

Thanks.

> Jan


From xen-devel-bounces@lists.xenproject.org Mon Jan 15 11:16:10 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 15 Jan 2024 11:16:10 +0000
Received: from list by lists.xenproject.org with outflank-mailman.667312.1038450 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPKwe-0005eB-7E; Mon, 15 Jan 2024 11:15:56 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 667312.1038450; Mon, 15 Jan 2024 11:15:56 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPKwe-0005e4-3y; Mon, 15 Jan 2024 11:15:56 +0000
Received: by outflank-mailman (input) for mailman id 667312;
 Mon, 15 Jan 2024 11:15:54 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=sLQD=IZ=arm.com=Bertrand.Marquis@srs-se1.protection.inumbo.net>)
 id 1rPKwb-0005dy-VU
 for xen-devel@lists.xenproject.org; Mon, 15 Jan 2024 11:15:54 +0000
Received: from EUR05-AM6-obe.outbound.protection.outlook.com
 (mail-am6eur05on20601.outbound.protection.outlook.com
 [2a01:111:f403:2612::601])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 721bd66c-b397-11ee-98f1-6d05b1d4d9a1;
 Mon, 15 Jan 2024 12:15:53 +0100 (CET)
Received: from AS9PR05CA0028.eurprd05.prod.outlook.com (2603:10a6:20b:488::26)
 by AS4PR08MB7479.eurprd08.prod.outlook.com (2603:10a6:20b:4e6::16)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7181.23; Mon, 15 Jan
 2024 11:15:44 +0000
Received: from AMS0EPF00000197.eurprd05.prod.outlook.com
 (2603:10a6:20b:488:cafe::b1) by AS9PR05CA0028.outlook.office365.com
 (2603:10a6:20b:488::26) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7181.23 via Frontend
 Transport; Mon, 15 Jan 2024 11:15:44 +0000
Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by
 AMS0EPF00000197.mail.protection.outlook.com (10.167.16.219) with
 Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.7202.16 via Frontend Transport; Mon, 15 Jan 2024 11:15:44 +0000
Received: ("Tessian outbound 1076c872ecc6:v228");
 Mon, 15 Jan 2024 11:15:44 +0000
Received: from d00e78ca29c9.1
 by 64aa7808-outbound-1.mta.getcheckrecipient.com id
 88501D4A-7537-41A8-961B-A573FEE6BE93.1; 
 Mon, 15 Jan 2024 11:15:37 +0000
Received: from EUR03-DBA-obe.outbound.protection.outlook.com
 by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id d00e78ca29c9.1
 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384);
 Mon, 15 Jan 2024 11:15:37 +0000
Received: from DB9PR08MB6588.eurprd08.prod.outlook.com (2603:10a6:10:25a::24)
 by GV2PR08MB7931.eurprd08.prod.outlook.com (2603:10a6:150:a8::14)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7181.19; Mon, 15 Jan
 2024 11:15:34 +0000
Received: from DB9PR08MB6588.eurprd08.prod.outlook.com
 ([fe80::a856:52ca:c1c6:a21d]) by DB9PR08MB6588.eurprd08.prod.outlook.com
 ([fe80::a856:52ca:c1c6:a21d%4]) with mapi id 15.20.7181.024; Mon, 15 Jan 2024
 11:15:34 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 721bd66c-b397-11ee-98f1-6d05b1d4d9a1
ARC-Seal: i=2; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=pass;
 b=a6ugnSzZsFYbEHbXzxXBSDeLFlw/qRbbGar7FZdEmjRQ2KwxEtntqlCdutyUKFMWXYXzTVRB8Glk3iVCWKxoXgRAxbpsF/++4D8rJQN1l/Gm8zKEU7SVZp/jw0dMKFgCqTp+OfkfhE8VVreobF6ePIAeNRFTScmrRxExg8lAaT0Quw69o41N369qjjxJbioG71MolBnUc0xt6eCaZpOnfDhodfSJVFBsGlTNvucarGoye5uQ72dPRtj4gvAWWnMsN2U92OhJ/GomWlY9Nh5Y9wD+CyE4In2OKaL6ELpreksRa1EJYfmwUOPXYq54Og5SDLgMjMtjcO19TVl9W/Bubg==
ARC-Message-Signature: i=2; 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=gudoaZhbtfJ4EoLZI29GsH9a+MtZ54bxh7M8d6YYiA0=;
 b=mcl2zC+QBPIH+8kNHf5uS0FHs1A+j5GVH1d42Y2V1Ccs+MoR5U35x2d7JkwQmGc8dSE8lgBpliNa/foznRHsSyBxsjtKpfe16DMFpuye/jiz4MLhZV/CnUjQjxNIb1hsZ9oInpoiLf1snEtjDZn4BnQwfFC2zFHnbsWpRWEHzQqEmkif8+DGvm9UyO1zgcH0zo9wkOPo350YKoJ7o8c0vaZy4MRCXiD5nzS1Wz2Hd7PHWkEjsgwsalWMmCuD2MfT8R3Vdo3NjrVnDUpCOpzW8A8psqDfl46sF18kjC307TT8qP7/xYz31cXxg/Ffe5bfVXEoE44m3nrzubcFtwNf1A==
ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is
 63.35.35.123) smtp.rcpttodomain=lists.xenproject.org smtp.mailfrom=arm.com;
 dmarc=pass (p=none sp=none pct=100) action=none header.from=arm.com;
 dkim=pass (signature was verified) header.d=armh.onmicrosoft.com; arc=pass (0
 oda=1 ltdi=1 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com]
 dmarc=[1,1,header.from=arm.com])
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com;
 s=selector2-armh-onmicrosoft-com;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=gudoaZhbtfJ4EoLZI29GsH9a+MtZ54bxh7M8d6YYiA0=;
 b=tD3PTkB+YJHClv0YWPwaigPLJ4JwzFpt6K78v50RfJUuPiQCITJaSCjNztAedJ4ZZEBd5zh0m9sJ5DsqH76BVVyUYW7FyHx2AO+2CR0Vtrmi0xwpTSZ5hZEHotgGA8F7+ZfHGpqcAS3yPHIOzBPbk2GwgwLOCtaU7L/wQa2bz04=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 63.35.35.123)
 smtp.mailfrom=arm.com; dkim=pass (signature was verified)
 header.d=armh.onmicrosoft.com;dmarc=pass action=none header.from=arm.com;
Received-SPF: Pass (protection.outlook.com: domain of arm.com designates
 63.35.35.123 as permitted sender) receiver=protection.outlook.com;
 client-ip=63.35.35.123; helo=64aa7808-outbound-1.mta.getcheckrecipient.com;
 pr=C
X-CheckRecipientChecked: true
X-CR-MTA-CID: 76c0c380fdec197d
X-CR-MTA-TID: 64aa7808
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=enlagUCjcxW/vFN/tEx0utX3DjQ3qeCT3be2KoyFpR5hMhTIgxuU3QpdXqDHjPYHE4pHtXK7PzsbyeYUOEv2qGwcXJjA4NP6wLfNZQmVReUOCsPLc3SoppSR5oB3m2xh+ASO+MgvdLK9ypUIQ/cqU2uoOoCMrLoCUpcA0TXAKC/vOHWKUuI4RQHyAsOlfjER03TOEhwum9Ojqc5wKV1ACQnXPQ6+Pb/HtZtfI2PHdEJ7lk5l4G7HIKPsa9InGQkySKaA+MUuvWFW/kINrfh87C9jtkYN8Jag9PGgTJCDtYhAuI2uLHZNH51VgZA1uKQnzQkTo/PLHqzYsWx11tW/QQ==
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=gudoaZhbtfJ4EoLZI29GsH9a+MtZ54bxh7M8d6YYiA0=;
 b=nGvVim8uZZ4o22o5IUlbkEQN9rlhC/YMoJvzhl5nORk4rwheCCqeGBaBRxsN7iJPxNfEv4tHd2+k/ggFqDjWh0aFHIQ7jtbcNSXxe5ngd8nXYs3EMGoKap3JOF8lj2dMegPVR00zzFF/IbH/uFYqTMMbOcW2qIDtipkO5gKYYYvoIAQtMrfKiXIMTwDpyVVpYMtw6Y2ZvUr9IF68mOP7eYud25C0AzkRFU6lLTioNXfT84hqnx8NQVfEqyZ4kMcUEhTrWIB6hmDfr2/SA1JM2mBHs5KDDJ0gn6QnNwFkPPQeDL1OTuW2AvkJq9JpoOUG2VsVCyjG4umsAIK1egUC2A==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass
 header.d=arm.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com;
 s=selector2-armh-onmicrosoft-com;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=gudoaZhbtfJ4EoLZI29GsH9a+MtZ54bxh7M8d6YYiA0=;
 b=tD3PTkB+YJHClv0YWPwaigPLJ4JwzFpt6K78v50RfJUuPiQCITJaSCjNztAedJ4ZZEBd5zh0m9sJ5DsqH76BVVyUYW7FyHx2AO+2CR0Vtrmi0xwpTSZ5hZEHotgGA8F7+ZfHGpqcAS3yPHIOzBPbk2GwgwLOCtaU7L/wQa2bz04=
From: Bertrand Marquis <Bertrand.Marquis@arm.com>
To: Jens Wiklander <jens.wiklander@linaro.org>
CC: Xen-devel <xen-devel@lists.xenproject.org>, "patches@linaro.org"
	<patches@linaro.org>, Volodymyr Babchuk <volodymyr_babchuk@epam.com>, Stefano
 Stabellini <sstabellini@kernel.org>, Julien Grall <julien@xen.org>, Andrew
 Cooper <andrew.cooper3@citrix.com>
Subject: Re: [XEN PATCH v2] xen/arm: ffa: reclaim shared memory on guest
 destroy
Thread-Topic: [XEN PATCH v2] xen/arm: ffa: reclaim shared memory on guest
 destroy
Thread-Index: AQHaLbct3uqrhXbQ3UuIzfHMXy5EtLDa7NWA
Date: Mon, 15 Jan 2024 11:15:34 +0000
Message-ID: <766738F2-9DE5-4B75-8579-5D49DEA5BC1D@arm.com>
References: <20231213112557.2393086-1-jens.wiklander@linaro.org>
In-Reply-To: <20231213112557.2393086-1-jens.wiklander@linaro.org>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-mailer: Apple Mail (2.3774.200.91.1.1)
Authentication-Results-Original: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=arm.com;
x-ms-traffictypediagnostic:
	DB9PR08MB6588:EE_|GV2PR08MB7931:EE_|AMS0EPF00000197:EE_|AS4PR08MB7479:EE_
X-MS-Office365-Filtering-Correlation-Id: 5166b869-a431-4348-4056-08dc15bb5132
x-checkrecipientrouted: true
nodisclaimer: true
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted: BCL:0;
X-Microsoft-Antispam-Message-Info-Original:
 URSOXGVoCqfS04K4Gzqer2fudNonFamcwuwqpL73ZvLRLSxclI3g7ACHNwF9lr0sw7sBL6uaal7ie4OAFIG9F00OG7RasfAWvUBRnFfepr3LOzz3n/CTYqTnzsTqpb3oYpXsTFR24uKv8nNFgYCjLoIPDGFutB34PU4f8qNPW5c1o6L42rnJ/tYDWKUcK6YPVQRraM2DiUcFCTEm2Hupx8RqdOMO01rmqZ/6jxyjQQW2EdqAzU9pLs0+QsvNublzys5TxpEf8XYf4LkC2TKPRmroekcWpyXOB4brrao+754uzL08jzBQ4XXD6a7KkMMDTvL819px7UXIuekbg+A6lq136KF9GEOhaU+PmH+2qMCCaYxXFdtYYOdRyJcFFtGo1nsJl4JwluDpvRB9ZBYlym786YTRzg67f5ZR3+ymKuLLWFB+7VzuAk6JBXzluT8i/Udzzq6/zdGIcSYQ16gyZs6L+Clx84rWfdo1JttPNFXTphFgdDhk9U9Xa4ReMm6oMrSzLdAfS4vPYan+7bGIF7I3zFFp3M/GN0jt4FhXX3AiNcP5b3BM1jSXPfXPQ8KDGW1A9t72rIy6aP7fXxX5rNhCh6+WjlOVfRabOw3VP4xpkLEXIQVJzKdTS3VJuflGp0gMADG/2dru0iFpZKcwNg==
X-Forefront-Antispam-Report-Untrusted:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DB9PR08MB6588.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230031)(376002)(366004)(396003)(136003)(346002)(39860400002)(230922051799003)(1800799012)(451199024)(186009)(64100799003)(66446008)(76116006)(64756008)(66476007)(66946007)(6916009)(66556008)(33656002)(122000001)(36756003)(54906003)(8676002)(316002)(8936002)(6512007)(6486002)(4326008)(38100700002)(91956017)(38070700009)(2906002)(30864003)(5660300002)(83380400001)(41300700001)(86362001)(71200400001)(478600001)(2616005)(6506007)(53546011)(45980500001);DIR:OUT;SFP:1101;
Content-Type: text/plain; charset="us-ascii"
Content-ID: <7433E64C93066446A36AD50F7882CEF9@eurprd08.prod.outlook.com>
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-MS-Exchange-Transport-CrossTenantHeadersStamped: GV2PR08MB7931
Original-Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=arm.com;
X-EOPAttributedMessage: 0
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 AMS0EPF00000197.eurprd05.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	b6dedcc8-b2fb-4ca5-fb38-08dc15bb4aff
X-Microsoft-Antispam: BCL:0;
X-Microsoft-Antispam-Message-Info:
	bA5PvgNxOqoacFyjmCYD8E7BxgzH/J6IITIQAqowvT6I1gPhfXz8W9GN3n4+wbrxZ/MRbpSj7+gJvusoFcczTVYT4A+rCSDtqSmtBIKfUNCoimHigMGr1mKg88Z2JNdmGoE2AvQGIiKOtCAShXYYYWTYKS3b2i8Hnh6TGZ8xKFDgZtiyev16Fk0oy/h3fbEK+rYo+y963tTOrA4ZNaA/W0RwCLP94Z8FGqH8s46IUTx6RcxMr8BY247E0MpI3OASC5SXT68RUgWRrJfb+lRK1HO44vMQMKZ2b4OF9Sm908hziwzpmL7TksG/0k4s10tGNy2RGimE8roMpl5WzcfO/uCp8L/DjBnRg+HfyfG0fjzXhQt7aNno6FQn7OU/SvKDKv31Qw9mANr+zCCY0yOiqZSdMVIOlqa4Gm6g/stK6fhwsM2xIV7x0N86Sw9kkmCXj/km7msaSsFnl2OrH0mnvtdrbe94WKfXAAnAtdB2usM1prjOHmuUTapkr1MhD/9UO9uczT5cG40/gdcDUut/zTlNa4ycZCyk/6vvNqIu7VfL6r6juwU25+QKC4UWptYIeJsOxyheJWGjMrLQAR9C/EK6yvdffO1jiz6L/PezHSQoDIiglePqIVCTcYIA7JeDyQAae1I+hBwoGIQKWrTrmfCFZ8+fWRcKWgK3cPnylxJBHnyDbmmQ/aep/tGofNebj5N8N4HzxmhlazjayCH3fkZfpQsM3MDRf8VbhEq9SJOx5Hgj9BC69fOpuXEO7JGx
X-Forefront-Antispam-Report:
	CIP:63.35.35.123;CTRY:IE;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:64aa7808-outbound-1.mta.getcheckrecipient.com;PTR:ec2-63-35-35-123.eu-west-1.compute.amazonaws.com;CAT:NONE;SFS:(13230031)(4636009)(346002)(376002)(396003)(136003)(39860400002)(230922051799003)(451199024)(186009)(82310400011)(64100799003)(1800799012)(36840700001)(40470700004)(46966006)(83380400001)(6512007)(107886003)(336012)(26005)(2616005)(82740400003)(36860700001)(47076005)(5660300002)(6862004)(8676002)(30864003)(8936002)(2906002)(478600001)(6486002)(4326008)(6506007)(53546011)(316002)(54906003)(70206006)(70586007)(41300700001)(33656002)(356005)(36756003)(81166007)(86362001)(40480700001)(40460700003);DIR:OUT;SFP:1101;
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Jan 2024 11:15:44.4301
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 5166b869-a431-4348-4056-08dc15bb5132
X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[63.35.35.123];Helo=[64aa7808-outbound-1.mta.getcheckrecipient.com]
X-MS-Exchange-CrossTenant-AuthSource:
	AMS0EPF00000197.eurprd05.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS4PR08MB7479

Hi Jens,

Very sorry for the long delay.

> On 13 Dec 2023, at 12:25, Jens Wiklander <jens.wiklander@linaro.org> wrot=
e:
>=20
> When an FF-A enabled guest is destroyed it may leave behind memory
> shared with SPs. This memory must be reclaimed before it's reused or an
> SP may make changes to memory used by a new unrelated guest. So when the
> domain is teared down add FF-A requests to reclaim all remaining shared
> memory.
>=20
> SPs in the secure world are notified using VM_DESTROYED that a guest has
> been destroyed. An SP is supposed to relinquish all shared memory to allo=
w
> reclaiming the memory. The relinquish operation may need to be delayed if
> the shared memory is for instance part of a DMA operation.
>=20
> The domain reference counter is increased when the first FF-A shared
> memory is registered and the counter is decreased again when the last
> shared memory is reclaimed. If FF-A shared memory registrations remain
> at the end of of ffa_domain_teardown() a timer is set to try to reclaim
> the shared memory every second until the memory is reclaimed.
>=20
> Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>
> ---
> Hi,
>=20
> This is a follow-up to the RFC patch. In this patch, I take an explicit
> reference on the domain when FF-A shared memory is registered. I've
> discovered that it might not be strictly necessary until all the shared
> pages are released with put_page() they also keep a reference to the
> domain.
>=20
> I'm not entirely sure what is the status of the shared memory when the
> domain has turned into a zombie. We still hold references on the shared
> pages until put_page() is called on each. Is that enough to guarantee tha=
t
> they will not be reused?
>=20
> Thanks,
> Jens
>=20
> v2:
> - Update commit message to match the new implementation
> - Using a per domain bitfield to keep track of which SPs has been notifie=
d
>  with VM_DESTROYED
> - Holding a domain reference counter to keep the domain as a zombie domai=
n
>  while there still is shared memory registrations remaining to be reclaim=
ed
> - Using a timer to retry reclaiming remaining shared memory registrations
>=20
> ---
> xen/arch/arm/tee/ffa.c | 270 ++++++++++++++++++++++++++++++++++-------
> 1 file changed, 224 insertions(+), 46 deletions(-)
>=20
> diff --git a/xen/arch/arm/tee/ffa.c b/xen/arch/arm/tee/ffa.c
> index 183528d13388..22906a6e1cff 100644
> --- a/xen/arch/arm/tee/ffa.c
> +++ b/xen/arch/arm/tee/ffa.c
> @@ -54,6 +54,7 @@
> #include <xen/mm.h>
> #include <xen/sched.h>
> #include <xen/sizes.h>
> +#include <xen/timer.h>
> #include <xen/types.h>
>=20
> #include <asm/event.h>
> @@ -384,11 +385,6 @@ struct ffa_ctx {
>     unsigned int page_count;
>     /* FF-A version used by the guest */
>     uint32_t guest_vers;
> -    /*
> -     * Number of SPs that we have sent a VM created signal to, used in
> -     * ffa_domain_teardown() to know which SPs need to be signalled.
> -     */
> -    uint16_t create_signal_count;
>     bool rx_is_free;
>     /* Used shared memory objects, struct ffa_shm_mem */
>     struct list_head shm_list;
> @@ -402,6 +398,15 @@ struct ffa_ctx {
>     spinlock_t tx_lock;
>     spinlock_t rx_lock;
>     spinlock_t lock;
> +    /* Used if domain can't be teared down immediately */
> +    struct domain *teardown_d;
> +    struct list_head teardown_list;
> +    s_time_t teardown_expire;
> +    /*
> +     * Used for ffa_domain_teardown() to keep track of which SPs should =
be
> +     * notified that this guest is being destroyed.
> +     */
> +    unsigned long vm_destroy_bitmap[];
> };
>=20
> struct ffa_shm_mem {
> @@ -436,6 +441,12 @@ static void *ffa_tx __read_mostly;
> static DEFINE_SPINLOCK(ffa_rx_buffer_lock);
> static DEFINE_SPINLOCK(ffa_tx_buffer_lock);
>=20
> +
> +/* Used if domain can't be teared down immediately */

Please adapt the comment as this for all domains.
Suggest: Used to track domains that could not be teared down immediately.

> +static struct timer ffa_teardown_timer;
> +static struct list_head ffa_teardown_head;
> +static DEFINE_SPINLOCK(ffa_teardown_lock);
> +
> static bool ffa_get_version(uint32_t *vers)
> {
>     const struct arm_smccc_1_2_regs arg =3D {
> @@ -850,7 +861,6 @@ static int32_t handle_partition_info_get(uint32_t w1,=
 uint32_t w2, uint32_t w3,
>             goto out_rx_release;
>         }
>=20
> -

You have several style changes like that in the patch.
Those are not major so I am ok if you keep them in the patch but please
mention in the commit messages that you do some code style fixes.

>         memcpy(ctx->rx, ffa_rx, sz);
>     }
>     ctx->rx_is_free =3D false;
> @@ -989,53 +999,75 @@ static void put_shm_pages(struct ffa_shm_mem *shm)
>     }
> }
>=20
> -static bool inc_ctx_shm_count(struct ffa_ctx *ctx)
> +static bool inc_ctx_shm_count(struct domain *d, struct ffa_ctx *ctx)
> {
>     bool ret =3D true;
>=20
>     spin_lock(&ctx->lock);
> +
> +    /*
> +     * If this is the first shm added, increase the domain reference
> +     * counter as we may need to domain around a bit longer to reclaim t=
he

This sentence needs fixing (need to keep the domain..)

> +     * shared memory in the teardown path.
> +     */
> +    if ( !ctx->shm_count )
> +        get_knownalive_domain(d);
> +
>     if (ctx->shm_count >=3D FFA_MAX_SHM_COUNT)
>         ret =3D false;
>     else
>         ctx->shm_count++;
> +
>     spin_unlock(&ctx->lock);
>=20
>     return ret;
> }
>=20
> -static void dec_ctx_shm_count(struct ffa_ctx *ctx)
> +static void dec_ctx_shm_count(struct domain *d, struct ffa_ctx *ctx)
> {
>     spin_lock(&ctx->lock);
> +
>     ASSERT(ctx->shm_count > 0);
>     ctx->shm_count--;
> +
> +    /*
> +     * If this was the last shm removed, let go of the domain reference =
we
> +     * took in inc_ctx_shm_count() above.
> +     */
> +    if ( !ctx->shm_count )
> +        put_domain(d);
> +
>     spin_unlock(&ctx->lock);
> }
>=20
> -static struct ffa_shm_mem *alloc_ffa_shm_mem(struct ffa_ctx *ctx,
> +static struct ffa_shm_mem *alloc_ffa_shm_mem(struct domain *d,
>                                              unsigned int page_count)
> {
> +    struct ffa_ctx *ctx =3D d->arch.tee;
>     struct ffa_shm_mem *shm;
>=20
>     if ( page_count >=3D FFA_MAX_SHM_PAGE_COUNT )
>         return NULL;
> -    if ( !inc_ctx_shm_count(ctx) )
> +    if ( !inc_ctx_shm_count(d, ctx) )
>         return NULL;
>=20
>     shm =3D xzalloc_flex_struct(struct ffa_shm_mem, pages, page_count);
>     if ( shm )
>         shm->page_count =3D page_count;
>     else
> -        dec_ctx_shm_count(ctx);
> +        dec_ctx_shm_count(d, ctx);
>=20
>     return shm;
> }
>=20
> -static void free_ffa_shm_mem(struct ffa_ctx *ctx, struct ffa_shm_mem *sh=
m)
> +static void free_ffa_shm_mem(struct domain *d, struct ffa_shm_mem *shm)
> {
> +    struct ffa_ctx *ctx =3D d->arch.tee;
> +
>     if ( !shm )
>         return;
>=20
> -    dec_ctx_shm_count(ctx);
> +    dec_ctx_shm_count(d, ctx);
>     put_shm_pages(shm);
>     xfree(shm);
> }
> @@ -1303,7 +1335,7 @@ static void handle_mem_share(struct cpu_user_regs *=
regs)
>         goto out_unlock;
>     }
>=20
> -    shm =3D alloc_ffa_shm_mem(ctx, page_count);
> +    shm =3D alloc_ffa_shm_mem(d, page_count);
>     if ( !shm )
>     {
>         ret =3D FFA_RET_NO_MEMORY;
> @@ -1347,7 +1379,7 @@ static void handle_mem_share(struct cpu_user_regs *=
regs)
>=20
> out:
>     if ( ret )
> -        free_ffa_shm_mem(ctx, shm);
> +        free_ffa_shm_mem(d, shm);
> out_unlock:
>     spin_unlock(&ctx->tx_lock);
>=20
> @@ -1398,7 +1430,7 @@ static int handle_mem_reclaim(uint64_t handle, uint=
32_t flags)
>     }
>     else
>     {
> -        free_ffa_shm_mem(ctx, shm);
> +        free_ffa_shm_mem(d, shm);
>     }
>=20
>     return ret;
> @@ -1481,6 +1513,41 @@ static bool ffa_handle_call(struct cpu_user_regs *=
regs)
>     }
> }
>=20
> +static bool is_in_subscr_list(const uint16_t *subscr, uint16_t start,
> +                              uint16_t end, uint16_t sp_id)
> +{
> +    unsigned int n;
> +
> +    for ( n =3D start; n < end; n++ )
> +    {
> +        if ( subscr[n] =3D=3D sp_id )
> +            return true;
> +    }
> +
> +    return false;
> +}
> +
> +static void vm_destroy_bitmap_init(struct ffa_ctx *ctx,
> +                                   unsigned int create_signal_count)
> +{
> +    unsigned int n;
> +
> +    for ( n =3D 0; n < subscr_vm_destroyed_count; n++ )
> +    {
> +        /*
> +         * Skip SPs subscribed to the VM created event that never was
> +         * notified of the VM creation due to an error during
> +         * ffa_domain_init().
> +         */
> +        if ( is_in_subscr_list(subscr_vm_created, create_signal_count,
> +                               subscr_vm_created_count,
> +                               subscr_vm_destroyed[n]) )
> +            continue;
> +
> +        set_bit(n, ctx->vm_destroy_bitmap);
> +    }
> +}
> +
> static int ffa_domain_init(struct domain *d)
> {
>     struct ffa_ctx *ctx;
> @@ -1496,11 +1563,14 @@ static int ffa_domain_init(struct domain *d)
>     if ( d->domain_id >=3D UINT16_MAX)
>         return -ERANGE;
>=20
> -    ctx =3D xzalloc(struct ffa_ctx);
> +    ctx =3D xzalloc_flex_struct(struct ffa_ctx, vm_destroy_bitmap,
> +                              BITS_TO_LONGS(subscr_vm_destroyed_count));
>     if ( !ctx )
>         return -ENOMEM;
>=20
>     d->arch.tee =3D ctx;
> +    ctx->teardown_d =3D d;
> +    INIT_LIST_HEAD(&ctx->shm_list);
>=20
>     for ( n =3D 0; n < subscr_vm_created_count; n++ )
>     {
> @@ -1510,64 +1580,169 @@ static int ffa_domain_init(struct domain *d)
>         {
>             printk(XENLOG_ERR "ffa: Failed to report creation of vm_id %u=
 to  %u: res %d\n",
>                    get_vm_id(d), subscr_vm_created[n], res);
> -            ctx->create_signal_count =3D n;
> +            vm_destroy_bitmap_init(ctx, n);

Here you could just break and ..

>             return -EIO;
>         }
>     }
> -    ctx->create_signal_count =3D subscr_vm_created_count;
> -
> -    INIT_LIST_HEAD(&ctx->shm_list);
> +    vm_destroy_bitmap_init(ctx, subscr_vm_created_count);

call with n and return -EIO if n !=3D vm_created_count.

>=20
>     return 0;
> }
>=20
> -static bool is_in_subscr_list(const uint16_t *subscr, uint16_t start,
> -                              uint16_t end, uint16_t sp_id)
> +static void send_vm_destroyed(struct domain *d)
> {
> +    struct ffa_ctx *ctx =3D d->arch.tee;
>     unsigned int n;
> +    int32_t res;
>=20
> -    for ( n =3D start; n < end; n++ )
> +    for ( n =3D 0; n < subscr_vm_destroyed_count; n++ )
>     {
> -        if ( subscr[n] =3D=3D sp_id )
> -            return true;
> -    }
> +        if ( !test_bit(n, ctx->vm_destroy_bitmap) )
> +            continue;
>=20
> -    return false;
> +        res =3D ffa_direct_req_send_vm(subscr_vm_destroyed[n], get_vm_id=
(d),
> +                                     FFA_MSG_SEND_VM_DESTROYED);
> +
> +        if ( res )
> +        {
> +            printk(XENLOG_ERR "%pd: ffa: Failed to report destruction of=
 vm_id %u to %u: res %d\n",
> +                   d, get_vm_id(d), subscr_vm_destroyed[n], res);
> +        }
> +        else
> +        {
> +            clear_bit(n, ctx->vm_destroy_bitmap);
> +        }
> +    }
> }
>=20
> -/* This function is supposed to undo what ffa_domain_init() has done */
> -static int ffa_domain_teardown(struct domain *d)
> +static void reclaim_shms(struct domain *d)
> {
>     struct ffa_ctx *ctx =3D d->arch.tee;
> -    unsigned int n;
> +    struct ffa_shm_mem *shm, *tmp;
>     int32_t res;
>=20
> +    list_for_each_entry_safe(shm, tmp, &ctx->shm_list, list)
> +    {
> +        register_t handle_hi;
> +        register_t handle_lo;
> +
> +        uint64_to_regpair(&handle_hi, &handle_lo, shm->handle);
> +        res =3D ffa_mem_reclaim(handle_lo, handle_hi, 0);
> +        if ( res )
> +        {
> +            printk(XENLOG_G_INFO "%pd: ffa: Failed to reclaim handle %#l=
x : %d\n",
> +                   d, shm->handle, res);
> +        }
> +        else
> +        {
> +            printk(XENLOG_G_DEBUG "%pd: ffa: Reclaimed handle %#lx\n",
> +                   d, shm->handle);
> +            list_del(&shm->list);
> +            free_ffa_shm_mem(d, shm);
> +        }
> +    }
> +}
> +
> +static bool ffa_domain_teardown_continue(struct ffa_ctx *ctx)
> +{
> +    send_vm_destroyed(ctx->teardown_d);
> +    reclaim_shms(ctx->teardown_d);
> +
> +    if ( ctx->shm_count )
> +    {
> +        printk(XENLOG_G_INFO "%pd: ffa: Remaining unclaimed handles, ret=
rying\n", ctx->teardown_d);
> +        return false;
> +    }
> +    else
> +    {
> +        return true;
> +    }
> +}
> +
> +static void ffa_teardown_timer_callback(void *arg)
> +{
> +    struct ffa_ctx *ctx;
> +    bool do_free;
> +
> +    spin_lock(&ffa_teardown_lock);
> +    ctx =3D list_first_entry_or_null(&ffa_teardown_head, struct ffa_ctx,
> +                                   teardown_list);
> +    spin_unlock(&ffa_teardown_lock);
> +
>     if ( !ctx )
> -        return 0;
> +    {
> +        printk(XENLOG_G_ERR "%s: teardown list is empty\n", __func__);
> +        return;
> +    }
>=20
> -    for ( n =3D 0; n < subscr_vm_destroyed_count; n++ )
> +    do_free =3D ffa_domain_teardown_continue(ctx);
> +
> +    spin_lock(&ffa_teardown_lock);
> +    list_del(&ctx->teardown_list);
> +    if ( !do_free )
> +    {
> +        ctx->teardown_expire =3D NOW() + SECONDS(1);
> +        list_add_tail(&ctx->teardown_list, &ffa_teardown_head);
> +    }
> +    spin_unlock(&ffa_teardown_lock);
> +
> +    if ( do_free )
>     {
>         /*
> -         * Skip SPs subscribed to the VM created event that never was
> -         * notified of the VM creation due to an error during
> -         * ffa_domain_init().
> +         * domain_destroy() has likely been called (via put_domain() in
> +         * reclaim_shms()) by now, so we can't touch the domain
> +         * structure anymore.
>          */
> -        if ( is_in_subscr_list(subscr_vm_created, ctx->create_signal_cou=
nt,
> -                               subscr_vm_created_count,
> -                               subscr_vm_destroyed[n]) )
> -            continue;
> +        xfree(ctx);
> +    }
>=20
> -        res =3D ffa_direct_req_send_vm(subscr_vm_destroyed[n], get_vm_id=
(d),
> -                                     FFA_MSG_SEND_VM_DESTROYED);
> +    spin_lock(&ffa_teardown_lock);
> +    ctx =3D list_first_entry_or_null(&ffa_teardown_head, struct ffa_ctx,
> +                                   teardown_list);

Why not using list_empty here ?

> +    spin_unlock(&ffa_teardown_lock);
>=20
> -        if ( res )
> -            printk(XENLOG_ERR "ffa: Failed to report destruction of vm_i=
d %u to  %u: res %d\n",
> -                   get_vm_id(d), subscr_vm_destroyed[n], res);
> -    }
> +    if ( ctx )
> +        set_timer(&ffa_teardown_timer, ctx->teardown_expire);

I am a bit lost in the teardown_expire here.

Why not just always set the timer to NOW() + SECONDS(1) ?
Don't you have the risk of using an entry where the value was set previousl=
y and would now
be in the past ?

By the way could you create a proper define for the SECONDS(1) part so
that one wanting to do this more or less frequently would just have to chan=
ge
one define value instead ?

> +}
> +
> +static void ffa_queue_ctx_teardown(struct ffa_ctx *ctx)
> +{
> +    ctx->teardown_expire =3D  NOW() + SECONDS(1);
> +
> +    spin_lock(&ffa_teardown_lock);
> +
> +    /*
> +     * The timer is already active if there are queued teardown entries.
> +     */
> +    if ( list_empty(&ffa_teardown_head) )
> +        set_timer(&ffa_teardown_timer, ctx->teardown_expire);
> +
> +    list_add_tail(&ctx->teardown_list, &ffa_teardown_head);
> +
> +    spin_unlock(&ffa_teardown_lock);
> +}
> +
> +/* This function is supposed to undo what ffa_domain_init() has done */
> +static int ffa_domain_teardown(struct domain *d)
> +{
> +    struct ffa_ctx *ctx =3D d->arch.tee;
> +
> +    if ( !ctx )
> +        return 0;
>=20
>     if ( ctx->rx )
>         rxtx_unmap(ctx);
>=20
> +    send_vm_destroyed(d);
> +    reclaim_shms(d);
> +
> +    if ( ctx->shm_count )
> +    {
> +        printk(XENLOG_G_INFO "%pd: ffa: Remaining unclaimed handles, ret=
rying\n", d);

This block of code is the same as ffa_domain_teardown_continue so you could=
 just call it and ..

> +        ffa_queue_ctx_teardown(ctx);

call this if it returns false.

Overall i am a bit thinking that we could just have a generic function for =
one
context doing:
- try send vm_destroy
- try reclaim shms
- if succeed free tee
- if not put the context at the end of the teardown list and refire the tim=
er if needed

It feels that we have a bit of code duplication here that might be possible=
 to reduce a bit.


> +        return 0;
> +    }
> +
>     XFREE(d->arch.tee);
>=20
>     return 0;
> @@ -1733,6 +1908,9 @@ static bool ffa_probe(void)
>     if ( !init_sps() )
>         goto err_free_ffa_tx;
>=20
> +    INIT_LIST_HEAD(&ffa_teardown_head);
> +    init_timer(&ffa_teardown_timer, ffa_teardown_timer_callback, NULL, 0=
);
> +
>     return true;
>=20
> err_free_ffa_tx:
> --=20
> 2.34.1

Cheers
Bertrand



From xen-devel-bounces@lists.xenproject.org Mon Jan 15 11:18:10 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 15 Jan 2024 11:18:10 +0000
Received: from list by lists.xenproject.org with outflank-mailman.667316.1038460 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPKym-0006OZ-LQ; Mon, 15 Jan 2024 11:18:08 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 667316.1038460; Mon, 15 Jan 2024 11:18:08 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPKym-0006OS-HJ; Mon, 15 Jan 2024 11:18:08 +0000
Received: by outflank-mailman (input) for mailman id 667316;
 Mon, 15 Jan 2024 11:18:07 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>) id 1rPKyk-0006OM-VS
 for xen-devel@lists.xenproject.org; Mon, 15 Jan 2024 11:18:06 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rPKyk-00013u-7j; Mon, 15 Jan 2024 11:18:06 +0000
Received: from gw1.octic.net ([88.97.20.152] helo=[10.0.1.240])
 by xenbits.xenproject.org with esmtpsa
 (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rPKyk-0005P8-2L; Mon, 15 Jan 2024 11:18:06 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
	s=20200302mail; h=Content-Transfer-Encoding:Content-Type:In-Reply-To:From:
	References:Cc:To:Subject:MIME-Version:Date:Message-ID;
	bh=CmRh3JgELxH4nCRIpnB+Erg4yYZAJ5Q809cnjERgF3o=; b=JSuTwvKIp+nxdBMMM6VaA1B/OA
	9eMXPL9qnlj1We8MGPXTR+e73PZNAljZYClA8SubJlFJk6cnUbiF+ttWEe/N10nsIznwepmDOH8t7
	dj8Qf0Xxf/VgR00Jm3o+ixSW9b95salrvR4HgOUlvWmlqfSAPtdP1AlOQ7nVFZ+mNHuk=;
Message-ID: <985e1a2a-45eb-496c-8043-5f0c3c9f7766@xen.org>
Date: Mon, 15 Jan 2024 11:18:04 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v5 13/13] xen/arm: add cache coloring support for Xen
To: Carlo Nonato <carlo.nonato@minervasys.tech>
Cc: xen-devel@lists.xenproject.org,
 Stefano Stabellini <sstabellini@kernel.org>,
 Bertrand Marquis <bertrand.marquis@arm.com>,
 Michal Orzel <michal.orzel@amd.com>,
 Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
 Marco Solieri <marco.solieri@minervasys.tech>
References: <20240102095138.17933-1-carlo.nonato@minervasys.tech>
 <20240102095138.17933-14-carlo.nonato@minervasys.tech>
 <4553cc26-deb5-42ed-87b9-6cba2a5099eb@xen.org>
 <CAG+AhRXHfGJksqUrPXoHqNze+D654jJV0kVYBZaPLYwccdEz5Q@mail.gmail.com>
 <aa064f8f-d30e-4ac1-9239-daba5a806794@xen.org>
 <CAG+AhRXUPvKGu-y9qbVmhc0_ThCdxFvG=BYwCQMBH=mjo45qHw@mail.gmail.com>
Content-Language: en-GB
From: Julien Grall <julien@xen.org>
In-Reply-To: <CAG+AhRXUPvKGu-y9qbVmhc0_ThCdxFvG=BYwCQMBH=mjo45qHw@mail.gmail.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit



On 15/01/2024 10:11, Carlo Nonato wrote:
> Hi Julien,

Hi Carlo,

> On Sun, Jan 14, 2024 at 8:22 PM Julien Grall <julien@xen.org> wrote:
>>
>> Hi Carlo,
>>
>> On 13/01/2024 17:07, Carlo Nonato wrote:
>>>>> diff --git a/xen/arch/arm/mmu/setup.c b/xen/arch/arm/mmu/setup.c
>>>>> index 37b6d230ad..66b674eeab 100644
>>>>> --- a/xen/arch/arm/mmu/setup.c
>>>>> +++ b/xen/arch/arm/mmu/setup.c
>>>>> @@ -7,6 +7,7 @@
>>>>>
>>>>>     #include <xen/init.h>
>>>>>     #include <xen/libfdt/libfdt.h>
>>>>> +#include <xen/llc-coloring.h>
>>>>>     #include <xen/sizes.h>
>>>>>     #include <xen/vmap.h>
>>>>>
>>>>> @@ -39,6 +40,10 @@ DEFINE_PER_CPU(lpae_t *, xen_pgtable);
>>>>>     static DEFINE_PAGE_TABLE(cpu0_pgtable);
>>>>>     #endif
>>>>>
>>>>> +#ifdef CONFIG_LLC_COLORING
>>>>> +static DEFINE_PAGE_TABLE(xen_colored_temp);
>>>>> +#endif
>>>>
>>>> Does this actually need to be static?
>>>
>>> Why it shouldn't be static? I don't want to access it from another file.
>>
>> My question was whether this could be allocated dynamically (or possibly
>> re-use an existing set of page tables). In particular with the fact that
>> we will need more than 1 page to cover the whole Xen binary.
>>
>> Looking at the use xen_colored_temp. This is pretty much the same as
>> xen_map[i] but with different permissions. So what you could do is
>> preparing xen_map[i] with very permissive permissions (i.e. RWX) and
>> then enforcing the permission once the TTBR has been switched.
>>
>> Something like that (tested without cache coloring):
>>
>> diff --git a/xen/arch/arm/mmu/setup.c b/xen/arch/arm/mmu/setup.c
>> index a3a263a5d94b..f7ac5cabf92c 100644
>> --- a/xen/arch/arm/mmu/setup.c
>> +++ b/xen/arch/arm/mmu/setup.c
>> @@ -306,7 +306,11 @@ void __init setup_pagetables(unsigned long
>> boot_phys_offset, paddr_t xen_paddr)
>>        p[0].pt.table = 1;
>>        p[0].pt.xn = 0;
>>
>> -    /* Break up the Xen mapping into pages and protect them separately. */
>> +    /*
>> +     * Break up the Xen mapping into pages. We will protect the
>> +     * permissions later in order to allow xen_xenmap to be used for
>> +     * when relocating Xen.
>> +     */
>>        for ( i = 0; i < XEN_NR_ENTRIES(3); i++ )
>>        {
>>            vaddr_t va = XEN_VIRT_START + (i << PAGE_SHIFT);
>> @@ -315,13 +319,7 @@ void __init setup_pagetables(unsigned long
>> boot_phys_offset, paddr_t xen_paddr)
>>                break;
>>            pte = pte_of_xenaddr(va);
>>            pte.pt.table = 1; /* third level mappings always have this bit
>> set */
>> -        if ( is_kernel_text(va) || is_kernel_inittext(va) )
>> -        {
>> -            pte.pt.xn = 0;
>> -            pte.pt.ro = 1;
>> -        }
>> -        if ( is_kernel_rodata(va) )
>> -            pte.pt.ro = 1;
>> +        pte.pt.xn = 0; /* Permissions will be enforced later. Allow
>> execution */
>>            xen_xenmap[i] = pte;
>>        }
>>
>> @@ -352,6 +350,37 @@ void __init setup_pagetables(unsigned long
>> boot_phys_offset, paddr_t xen_paddr)
>>
>>        switch_ttbr(ttbr);
>>
>> +    /* Protect Xen */
>> +    for ( i = 0; i < XEN_NR_ENTRIES(3); i++ )
>> +    {
>> +        vaddr_t va = XEN_VIRT_START + (i << PAGE_SHIFT);
>> +        lpae_t *entry = xen_xenmap + i;
>> +
>> +        if ( !is_kernel(va) )
>> +            break;
>> +
>> +        pte = read_atomic(entry);
>> +
>> +        if ( is_kernel_text(va) || is_kernel_inittext(va) )
>> +        {
>> +            pte.pt.xn = 0;
>> +            pte.pt.ro = 1;
>> +        } else if ( is_kernel_rodata(va) ) {
>> +            pte.pt.ro = 1;
>> +            pte.pt.xn = 1;
>> +        } else {
>> +            pte.pt.xn = 1;
>> +            pte.pt.ro = 0;
>> +        }
>> +
>> +        write_pte(entry, pte);
>> +    }
>> +
>> +    /*
>> +     * We modified live page-tables. Ensure the TBLs are invalidated
>> +     * before setting enforcing the WnX permissions.
>> +     */
>> +    flush_xen_tlb_local();
>>        xen_pt_enforce_wnx();
>>
>>    #ifdef CONFIG_ARM_32
> 
> I understand what you're talking about, and it seems reasonable to get rid of
> xen_colored_temp[] and create_llc_coloring_mappings() since in the end they
> serve the purpose of mapping the physically colored space that is already
> mapped using xen_xenmap[] pagetables.
> What I don't understand is then how to copy/relocate Xen since I don't have a
> destination virtual space anymore to use in relocate_xen().

You will need to link xen_xenmap[] in boot_second[...] as well. With 
that, you will be able to access the new Xen through the temporary area.

[...]

>> Note that this means the init_ttbr cannot be written directly. But you
>> can solve this problem by re-mapping the address.
> 
> How to remap a single address?

You should be able to use map_domain_page() to map the page where 
init_ttbr is.

> And if moving init_ttbr in the identity-mapped area means that it's no longer
> writable, so that I need to remap it, why moving it in that area in the first
> place. Again I think I'm missing something.

The goal is to have everything used (code, data) before the MMU is 
turned on residing in a single page. So secondary CPUs can directly jump 
to the colored Xen without any trouble.

>>>
>>> 3) To access the identity mapping area I would need some accessor that takes
>>> an address and returns it + phys_offset, or is there a better way to do it?
>>
>> I am not sure I understand what you mean. Can you clarify?
> 
> In my idea, I would use the identity mapping to access the "old" variables,
> where "old" means non physically colored. init_ttbr is an example. When
> Xen it's copied on the new physical space, init_ttbr is copied with it and
> if the boot cpu modifies this variable, it's actually touching the colored
> one and not the old one. This means that secondary CPUs that still haven't
> jumped to the new space, won't be able to see the new value and will never
> go online.
> So to access this "old" init_ttbr variable I need it's identity address,
> which is its current virtual address + some physical offset. I was asking
> you if this is the right approach to use the identity mapping.

Secondary CPUs would directly start on the colored Xen. So they will be 
able to access the "new" init_ttbr & co.

[...]

>> ... as I wrote ealier your current approach seems to have a flaw. As you
>> overwrite xen_bootmodule->{start, size}. setup_mm() will end up to add
>> the old Xen region to the boot allocator. This is before any secondary
>> CPUs are booted up.
>>
>> IOW, the allocator may provide some memory from the old Xen and nothing
>> good will happen from that.
>>
>> The only way to solve it is to add another module. So the memory is
>> skipped by setup_mm(). However see below.
>>
>>>
>>> Yes that should be memory that in the end would not be needed so it must
>>> return to the boot-allocator (if that's what you mean). But how to do
>>> that?
>>
>> You can't really discard the old temporary Xen. This may work today
>> because we don't support CPU hotplug or suspend/resume. But there was
>> some series on the ML to enable it and I don't see any reason why
>> someone would not want to use the features with cache coloring.
>>
>> So the old temporary Xen would have to be kept around forever. This is
>> up to 8MB of memory wasted.
>>
>> The right approach is to have the secondary CPU boot code (including the
>> variables it is using) fitting in the same page (or possibly multiple so
>> long this is small and physically contiguous). With that it doesn't
>> matter where is the trampoline, it could stay at the old place, but we
>> would only waste a few pages rather than up 8MB as it is today.
> 
> So what are you suggesting is to create a new section in the linker script
> for the trampoline code and data,

We already have a section for that in place (see .idmap.*) which happens 
to be at the beginning of Xen. Right now, the section is in text. Which 
is why it is read-only executable.

> then in setup_mm() we would skip this
> memory?

We should not need this. Secondary boot CPUs should boot direclty on the 
colored Xen.

> Am I following you correctly? Sorry those topics are a little out
> of my preparation as you probably already guessed.

No worries. I am happy to go in as much details as necessary. I can also 
attempt to write a patch if that helps. (unless someone else in the Arm 
maintainers want to give a try).

Cheers,

-- 
Julien Grall


From xen-devel-bounces@lists.xenproject.org Mon Jan 15 11:20:35 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 15 Jan 2024 11:20:35 +0000
Received: from list by lists.xenproject.org with outflank-mailman.667321.1038470 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPL18-0000Ei-55; Mon, 15 Jan 2024 11:20:34 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 667321.1038470; Mon, 15 Jan 2024 11:20:34 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPL18-0000Eb-1U; Mon, 15 Jan 2024 11:20:34 +0000
Received: by outflank-mailman (input) for mailman id 667321;
 Mon, 15 Jan 2024 11:20:33 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=Y0sJ=IZ=cloud.com=roger.pau@srs-se1.protection.inumbo.net>)
 id 1rPL17-0000EU-E3
 for xen-devel@lists.xenproject.org; Mon, 15 Jan 2024 11:20:33 +0000
Received: from mail-ej1-x636.google.com (mail-ej1-x636.google.com
 [2a00:1450:4864:20::636])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 1898b23f-b398-11ee-98f1-6d05b1d4d9a1;
 Mon, 15 Jan 2024 12:20:32 +0100 (CET)
Received: by mail-ej1-x636.google.com with SMTP id
 a640c23a62f3a-a28fb463a28so914828666b.3
 for <xen-devel@lists.xenproject.org>; Mon, 15 Jan 2024 03:20:32 -0800 (PST)
Received: from localhost ([213.195.127.68]) by smtp.gmail.com with ESMTPSA id
 a1-20020a170906190100b00a2689e28445sm5171612eje.106.2024.01.15.03.20.31
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 15 Jan 2024 03:20:31 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 1898b23f-b398-11ee-98f1-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1705317632; x=1705922432; darn=lists.xenproject.org;
        h=in-reply-to:content-transfer-encoding:content-disposition
         :mime-version:references:message-id:subject:cc:to:from:date:from:to
         :cc:subject:date:message-id:reply-to;
        bh=4pFSVQ2SxFWFJuYu58k/HcROajk7lIQmmQsbVXnyE/E=;
        b=e7EComIZWfo2VxWA+IP0j+HpzS592YDUCScXeZyFUzuMN8uzIoO8ZxVhJ4F+8IMFXE
         k06AQ3d1YYxBbLyYCBDdlhz0/pdLX6dUT5c2gHpPogCfFL1SOCcSk5zJUVbUzhT/deWH
         OEGLtS/TDS1hTMIB3s9nYGg+2xdYLkHY2y7ak=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705317632; x=1705922432;
        h=in-reply-to:content-transfer-encoding:content-disposition
         :mime-version:references:message-id:subject:cc:to:from:date
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=4pFSVQ2SxFWFJuYu58k/HcROajk7lIQmmQsbVXnyE/E=;
        b=ncM+boB3sKkVRRXNlQM4BgM9ELJkYk36xaAigXjNt3/H4Y5Wzd8Ihiq40ip4xxG1Bv
         6YRXJJBkPvfin/feaT/YrbKytjJtEdzPLoyEZux5+L7t4dKcVun66v0ySgvwhdJ6GRmr
         j27QgSNJOdLGBHaFq1hKYM4ssHoxNm0tpNix6iJtLKMAsvxl6SraHNlSsXCiaathBzwR
         Za8LvctwvpHiZWuiHmyh07EQQaW79fYSuB76bVZIydB0+89aVyCd68pJN74e9CJhjX2Z
         SiybFKY37/yJwq1k1kDzOceOaGiA3EytjTR6BwiTS+qB45Kpm+vemuwq/WqmkIxn6DWH
         560w==
X-Gm-Message-State: AOJu0YwHvAFEfqNrU/lc55x5LX/9mlKtsJf5b5EEu56HiNuMoNbI8ZGX
	fgYTDnmvd7K3fMJHrK0KGtCSBrhnAI2W1A==
X-Google-Smtp-Source: AGHT+IG6cYcXpJuReSc/RN7rPhfb9/Qt58EGibcCWYXB9Ak0M48mMZplZm9+1Wx6PXy/8WsWO2EEdA==
X-Received: by 2002:a17:906:1d50:b0:a2c:2258:6605 with SMTP id o16-20020a1709061d5000b00a2c22586605mr2386497ejh.29.1705317632030;
        Mon, 15 Jan 2024 03:20:32 -0800 (PST)
Date: Mon, 15 Jan 2024 12:20:30 +0100
From: Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
To: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: xen-devel@lists.xenproject.org,
	George Dunlap <george.dunlap@citrix.com>,
	Jan Beulich <jbeulich@suse.com>, Julien Grall <julien@xen.org>,
	Stefano Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>
Subject: Re: [PATCH] CirrusCI: drop FreeBSD 12
Message-ID: <ZaUU_qqqOs_F4qe0@macbook>
References: <20240115102718.81294-1-roger.pau@citrix.com>
 <854db64e-a3c1-4c2f-8a68-8557f7f5a5d1@citrix.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <854db64e-a3c1-4c2f-8a68-8557f7f5a5d1@citrix.com>

On Mon, Jan 15, 2024 at 11:01:54AM +0000, Andrew Cooper wrote:
> On 15/01/2024 10:27 am, Roger Pau Monne wrote:
> > Went EOL by the end of December 2023, and the pkg repos have been shut down.
> >
> > Reported-by: Andrew Cooper <andrew.cooper3@citrix.com>
> > Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
> 
> Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>
> 
> We'll need to backport this, I guess ?

Yup, but it might not apply cleanly without the rest of the changes to
the file backported also.

Thanks, Roger.


From xen-devel-bounces@lists.xenproject.org Mon Jan 15 11:37:50 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 15 Jan 2024 11:37:50 +0000
Received: from list by lists.xenproject.org with outflank-mailman.667328.1038480 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPLHj-00041t-IS; Mon, 15 Jan 2024 11:37:43 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 667328.1038480; Mon, 15 Jan 2024 11:37:43 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPLHj-00041m-F4; Mon, 15 Jan 2024 11:37:43 +0000
Received: by outflank-mailman (input) for mailman id 667328;
 Mon, 15 Jan 2024 11:37:42 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=jLm1=IZ=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rPLHi-00041g-66
 for xen-devel@lists.xenproject.org; Mon, 15 Jan 2024 11:37:42 +0000
Received: from mail-lf1-x136.google.com (mail-lf1-x136.google.com
 [2a00:1450:4864:20::136])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 7cfc396a-b39a-11ee-9b0f-b553b5be7939;
 Mon, 15 Jan 2024 12:37:39 +0100 (CET)
Received: by mail-lf1-x136.google.com with SMTP id
 2adb3069b0e04-50e67e37661so11776889e87.0
 for <xen-devel@lists.xenproject.org>; Mon, 15 Jan 2024 03:37:39 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 d1-20020a6b6e01000000b007bc47488033sm2218542ioh.1.2024.01.15.03.37.37
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 15 Jan 2024 03:37:39 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 7cfc396a-b39a-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1705318659; x=1705923459; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:from:to:cc:subject:date:message-id:reply-to;
        bh=eb8W0WyrxdsCOcLv2saulZtSn7fUcurs+4+Usg8qA7o=;
        b=Ir0oK1/6FeXlZ3CPs2j9ivDB6uUkwT9rkgwGO2lYXNJPN9wgx4swefA2HtK05ViVrE
         9uFH1y6K1rHtObuVD9/3aLCnP/QTD2LIac9zpHyupE2CwiTe5QYjxhXUf9qiISuB2Maz
         DdC35frDOVqve7Yg+Jf2hYJVIJ401ehJgLvCYq24GBUdWSd95kOGmdYt3lm1R1FnWSqs
         Jo+FKiXgsK+dAkJXzUd4+vQsdZZW/hXtg4kmeiMrs+OISB/p8MukCBaf0TJcBQ32vMZ7
         OmuyzVrG5um0abjpct6TQlPLiSTN9UWHpRfcofKbE0e2RMyqkkRCR3WMEu0OTGoH9tTB
         KjUg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705318659; x=1705923459;
        h=content-transfer-encoding:in-reply-to:autocrypt:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to;
        bh=eb8W0WyrxdsCOcLv2saulZtSn7fUcurs+4+Usg8qA7o=;
        b=BZ5otinKPv3wSPemWQNp7L/Z00Jk7YFLMpfgbwmLrMGg+Tqo+tDKdaLKOOSLBMajKI
         AqUyijNf2sgMxzIXsHtt/j2dDhg3qvDznQ6N2A1m11BepTEPCKJvx6vVgIqTpHXOm4OG
         1NPq75kDpJyZrbOfagTCpskChluRriG3uIhQZrjJkVe2HLG05WECGgll9ieuW6mpfpnq
         46wrlyTZlHkZtFpLRlvOhCiBxHm0KO/HEJPln+9mhvdKHRhxQVLR+AEPWYV2JWcro+ib
         JLlOeJrQWud/NtdpJCVKy6YwCH3vnCdioCgnFbNTjiLaHDbGnjL21zyvJG/W08n0NAcG
         1POw==
X-Gm-Message-State: AOJu0YxtF94FKYT4BR3dcCPnZUL3c+AcnTpFxFY+EPF7mPyB4e1kgGKB
	ME+YJjbi6JywvzBggB8vmOdBGDm2URKO
X-Google-Smtp-Source: AGHT+IGnfiHTw3c/Hydr9kuU7B7aKFCZjTkDJDxGjvC+w7hNYtjnwwDaXE1lwCfpxgOEgsWphMmpig==
X-Received: by 2002:ac2:5635:0:b0:50e:75f8:ac9f with SMTP id b21-20020ac25635000000b0050e75f8ac9fmr2275388lff.28.1705318659456;
        Mon, 15 Jan 2024 03:37:39 -0800 (PST)
Message-ID: <6528658a-5cb7-4f9b-a92d-a4ca43f6352b@suse.com>
Date: Mon, 15 Jan 2024 12:37:39 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] CirrusCI: drop FreeBSD 12
To: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Andrew Cooper <andrew.cooper3@citrix.com>
Cc: xen-devel@lists.xenproject.org, George Dunlap <george.dunlap@citrix.com>,
 Julien Grall <julien@xen.org>, Stefano Stabellini <sstabellini@kernel.org>,
 Wei Liu <wl@xen.org>
References: <20240115102718.81294-1-roger.pau@citrix.com>
 <854db64e-a3c1-4c2f-8a68-8557f7f5a5d1@citrix.com> <ZaUU_qqqOs_F4qe0@macbook>
Content-Language: en-US
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <ZaUU_qqqOs_F4qe0@macbook>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 15.01.2024 12:20, Roger Pau Monné wrote:
> On Mon, Jan 15, 2024 at 11:01:54AM +0000, Andrew Cooper wrote:
>> On 15/01/2024 10:27 am, Roger Pau Monne wrote:
>>> Went EOL by the end of December 2023, and the pkg repos have been shut down.
>>>
>>> Reported-by: Andrew Cooper <andrew.cooper3@citrix.com>
>>> Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
>>
>> Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>
>>
>> We'll need to backport this, I guess ?
> 
> Yup, but it might not apply cleanly without the rest of the changes to
> the file backported also.

Looks to apply fine to .18 and .17, which it what I'll queue it for.
If and when we need it on .16 and/or .15 as well, adjusting the patch
rather then taking further (not really) prereqs may be preferable.

Jan


From xen-devel-bounces@lists.xenproject.org Mon Jan 15 11:48:52 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 15 Jan 2024 11:48:52 +0000
Received: from list by lists.xenproject.org with outflank-mailman.667332.1038490 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPLSP-0007IT-Gc; Mon, 15 Jan 2024 11:48:45 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 667332.1038490; Mon, 15 Jan 2024 11:48:45 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPLSP-0007IM-CO; Mon, 15 Jan 2024 11:48:45 +0000
Received: by outflank-mailman (input) for mailman id 667332;
 Mon, 15 Jan 2024 11:48:44 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=JaYU=IZ=cloud.com=george.dunlap@srs-se1.protection.inumbo.net>)
 id 1rPLSO-0007ID-Hh
 for xen-devel@lists.xenproject.org; Mon, 15 Jan 2024 11:48:44 +0000
Received: from mail-lf1-x129.google.com (mail-lf1-x129.google.com
 [2a00:1450:4864:20::129])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 07dcd2a5-b39c-11ee-9b0f-b553b5be7939;
 Mon, 15 Jan 2024 12:48:42 +0100 (CET)
Received: by mail-lf1-x129.google.com with SMTP id
 2adb3069b0e04-50e759ece35so9865985e87.3
 for <xen-devel@lists.xenproject.org>; Mon, 15 Jan 2024 03:48:42 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 07dcd2a5-b39c-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1705319322; x=1705924122; darn=lists.xenproject.org;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:from:to:cc:subject:date
         :message-id:reply-to;
        bh=bFIlhrybhO+sljsKgOTurLEBsQ668No2Ssxyu2yEUfQ=;
        b=h4ClJs1VV+WZh4oGcDQgT3ndOVCvnbzVnyAeErxLxWJ89VdnINA+pZirxF9uDOn5JD
         LFu90xD5Qyy8iBJFhFBcSxlXpx5SFhptTGD6ncOX/AHe+01f6OdaUW+0L+HXEQ/b/RfM
         38WAna6bruLtrSfDSnBglzNzEkKB25r+xfaAA=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705319322; x=1705924122;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to;
        bh=bFIlhrybhO+sljsKgOTurLEBsQ668No2Ssxyu2yEUfQ=;
        b=fq9JN1Cix8jQzPSOfV70V+ckrit1DH0kPgvIWScO1qsbaKCGL25iACNakA0i053xFK
         1nDgU2s6k0vbACf/tehjzeYFcuV4LJrhtofT5n6jfTu7k+Pw1BGGxZnoL4Za/1LAB40r
         OmVKHdzIp0GB3dGc5i9432leiYNyiZS+q7WHJHT0A/7aON4p/d4sPkKB74nwa46kh7L5
         XluJ7oKn89mM+ZRHz4iou/e5XZndvMcjnlp3OXeqwwGfZryqEaDTkflViGCIbplGLthd
         spe5IcLa3NQsj3bm8TNqtsdKCkNgi3JabdYUk1CFv4b3NczQbhysGhuoXJ0ez91q18lj
         AfuA==
X-Gm-Message-State: AOJu0YyUWtMlj0r2MAgnz7GMPjwenbtO27hdGj79DyXcTUzxzPJMHlcq
	GLB879K+fyuqQRmUVwlZDJyhsooxsINIEsXK7Ps2n3yDx3Bg3g==
X-Google-Smtp-Source: AGHT+IHtUWQa5erx+MxhAgpsypVEmwtRRGihZqNMzfcFv0DNqbzTFJi4c+DnJUBffc0PpmjAZXqZkFCXNQcqjqRzSRY=
X-Received: by 2002:a05:6512:2256:b0:50e:e168:9fcd with SMTP id
 i22-20020a056512225600b0050ee1689fcdmr2916492lfu.26.1705319321871; Mon, 15
 Jan 2024 03:48:41 -0800 (PST)
MIME-Version: 1.0
References: <20240109215145.430207-1-stewart.hildebrand@amd.com>
 <20240109215145.430207-12-stewart.hildebrand@amd.com> <CA+zSX=Z33cixDd1w10zwC-c80z-sB4E8Nu__nTNi30n-FW6GwA@mail.gmail.com>
 <39c114b7-2384-4209-bae5-edabb243226e@amd.com>
In-Reply-To: <39c114b7-2384-4209-bae5-edabb243226e@amd.com>
From: George Dunlap <george.dunlap@cloud.com>
Date: Mon, 15 Jan 2024 11:48:30 +0000
Message-ID: <CA+zSX=Zk4sSThR49xYY1eW8hiHwLq-jQ=ODcq9=6B+QO4RsqcA@mail.gmail.com>
Subject: Re: [PATCH v12 11/15] vpci: add initial support for virtual PCI bus topology
To: Stewart Hildebrand <stewart.hildebrand@amd.com>
Cc: xen-devel@lists.xenproject.org, 
	Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>, 
	Andrew Cooper <andrew.cooper3@citrix.com>, Jan Beulich <jbeulich@suse.com>, 
	Julien Grall <julien@xen.org>, Stefano Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>, 
	=?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>, 
	Volodymyr Babchuk <volodymyr_babchuk@epam.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

On Fri, Jan 12, 2024 at 1:50=E2=80=AFPM Stewart Hildebrand
<stewart.hildebrand@amd.com> wrote:
>
> On 1/12/24 06:46, George Dunlap wrote:
> > On Tue, Jan 9, 2024 at 9:54=E2=80=AFPM Stewart Hildebrand
> > <stewart.hildebrand@amd.com> wrote:
> >> diff --git a/xen/include/xen/sched.h b/xen/include/xen/sched.h
> >> index 37f5922f3206..b58a822847be 100644
> >> --- a/xen/include/xen/sched.h
> >> +++ b/xen/include/xen/sched.h
> >> @@ -484,6 +484,14 @@ struct domain
> >>       * 2. pdev->vpci->lock
> >>       */
> >>      rwlock_t pci_lock;
> >> +#ifdef CONFIG_HAS_VPCI_GUEST_SUPPORT
> >> +    /*
> >> +     * The bitmap which shows which device numbers are already used b=
y the
> >> +     * virtual PCI bus topology and is used to assign a unique SBDF t=
o the
> >> +     * next passed through virtual PCI device.
> >> +     */
> >> +    DECLARE_BITMAP(vpci_dev_assigned_map, VPCI_MAX_VIRT_DEV);
> >> +#endif
> >>  #endif
> >
> > Without digging through the whole series, how big do we expect this
> > bitmap to be on typical systems?
> >
> > If it's only going to be a handful of bytes, keeping it around for all
> > guests would be OK; but it's large, it would be better as a pointer,
> > since it's unused on the vast majority of guests.
>
> Since the bitmap is an unsigned long type it will typically be 8 bytes, a=
lthough only 4 bytes are actually used. VPCI_MAX_VIRT_DEV is currently fixe=
d at 32, as we are only tracking D (not the whole SBDF) in the bitmap so fa=
r.

OK, that's fine with me.  (FYI I replied because I thought you needed
my ack specifically for sched.h; looks like any of THE REST will do,
however.)

 -George


From xen-devel-bounces@lists.xenproject.org Mon Jan 15 11:49:59 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 15 Jan 2024 11:49:59 +0000
Received: from list by lists.xenproject.org with outflank-mailman.667335.1038501 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPLTa-00082T-Q8; Mon, 15 Jan 2024 11:49:58 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 667335.1038501; Mon, 15 Jan 2024 11:49:58 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPLTa-00082M-Lh; Mon, 15 Jan 2024 11:49:58 +0000
Received: by outflank-mailman (input) for mailman id 667335;
 Mon, 15 Jan 2024 11:49:57 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=jLm1=IZ=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rPLTZ-00082E-8R
 for xen-devel@lists.xenproject.org; Mon, 15 Jan 2024 11:49:57 +0000
Received: from mail-wm1-x32c.google.com (mail-wm1-x32c.google.com
 [2a00:1450:4864:20::32c])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 333d5c82-b39c-11ee-9b0f-b553b5be7939;
 Mon, 15 Jan 2024 12:49:55 +0100 (CET)
Received: by mail-wm1-x32c.google.com with SMTP id
 5b1f17b1804b1-40e69b3149fso28317355e9.3
 for <xen-devel@lists.xenproject.org>; Mon, 15 Jan 2024 03:49:55 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 ay18-20020a05600c1e1200b0040e6f6a3dcbsm7472077wmb.5.2024.01.15.03.49.54
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 15 Jan 2024 03:49:54 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 333d5c82-b39c-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1705319395; x=1705924195; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=FQdtE2Uq0z7VNPl+S6ZtIaAnlNPEvujJTf+jCmkgdew=;
        b=Nv/a1d4GxSb9u9aG8qF85eodBtbGzzRNN76dcrwK/a/THILsyqKLu2+KKVhg8tyghx
         MfK+zhweWn4IRb54+uUJbVvXdZ0/9TnR4Boyd1NJW4/6dm2M6YeQJvcBuRE3Tk0nMZ84
         W0UOpEsBMOCvU0Uwqzib9XtpwB7Ac5w5Apk8ZyDQRF4R90MbpombxIKQb36W4qV1CXf8
         ZZSHR8PQAf/5MAugHgrvRdTsj2ZdK5Hpxw4cYvczZRdYhmYDP4Sxtoy2Ql567unDbdfc
         QjJtFYU3mdVeCgVO19/6sHekbHR46VeDJ4DucAX78+5arZHbKO6ep200Tdj4mbfgtB+L
         0OCQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705319395; x=1705924195;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=FQdtE2Uq0z7VNPl+S6ZtIaAnlNPEvujJTf+jCmkgdew=;
        b=TZaTCtSrYXBXZDzZ3IxZukOOeOzkmoaK6B34vurV6JrI7n/JHcVbhMM+t+dXxJr83a
         KBNLV/Uyw+osgf5tUp5iyfm+kBMCcRMvIplUutXqZfimGVYe2+xwbNKk/uAfSQAu8Q97
         J6vx74AXjVzW6kaoEepsuVzNe+fBuC3khJvqfBmzP2BOASVFEr4PGOMuXK15eDxy5nKj
         6e86KpdqKA4w5bkYc3Q5Mmhd6UTiE+0MoExg3HEyJsNTd8K3hLK16CbxMLtUtPo4k6oU
         xVRIVaAF5JKQx7uHeTF8vLuowm8p4LlibOYI0up+PBpPHY5NBZ+xv9xColYqkUoBE1kG
         +Mbg==
X-Gm-Message-State: AOJu0Yx57Qz0idaOMblCEGC7eGPr3pMR+cHhTbEKjUfEbov4fAuiD8zi
	YJJVjPDWZFHYVg4EEH/k4jhFFSNAMOCQ
X-Google-Smtp-Source: AGHT+IEZSs0u2it1KoXz++jouHWxbmoXlwi1pU7KVNSiF8dlJOzVCnhZkotChBd1q/wwQ1cdoRvvGw==
X-Received: by 2002:a05:600c:2809:b0:40e:6272:b5a2 with SMTP id m9-20020a05600c280900b0040e6272b5a2mr2899485wmb.83.1705319394741;
        Mon, 15 Jan 2024 03:49:54 -0800 (PST)
Message-ID: <b86de549-4ebc-41d9-bf43-23dd7812614c@suse.com>
Date: Mon, 15 Jan 2024 12:49:57 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v4] x86/intel: ensure Global Performance Counter Control
 is setup correctly
Content-Language: en-US
To: Roger Pau Monne <roger.pau@citrix.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, Wei Liu <wl@xen.org>,
 xen-devel@lists.xenproject.org
References: <20240112110946.75582-1-roger.pau@citrix.com>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <20240112110946.75582-1-roger.pau@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 12.01.2024 12:09, Roger Pau Monne wrote:
> When Architectural Performance Monitoring is available, the PERF_GLOBAL_CTRL
> MSR contains per-counter enable bits that is ANDed with the enable bit in the
> counter EVNTSEL MSR in order for a PMC counter to be enabled.
> 
> So far the watchdog code seems to have relied on the PERF_GLOBAL_CTRL enable
> bits being set by default, but at least on some Intel Sapphire and Emerald
> Rapids this is no longer the case, and Xen reports:
> 
> Testing NMI watchdog on all CPUs: 0 40 stuck
> 
> The first CPU on each package is started with PERF_GLOBAL_CTRL zeroed, so PMC0
> doesn't start counting when the enable bit in EVNTSEL0 is set, due to the
> relevant enable bit in PERF_GLOBAL_CTRL not being set.
> 
> Check and adjust PERF_GLOBAL_CTRL during CPU initialization so that all the
> general-purpose PMCs are enabled.  Doing so brings the state of the package-BSP
> PERF_GLOBAL_CTRL in line with the rest of the CPUs on the system.
> 
> Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>

Acked-by: Jan Beulich <jbeulich@suse.com>




From xen-devel-bounces@lists.xenproject.org Mon Jan 15 11:57:52 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 15 Jan 2024 11:57:52 +0000
Received: from list by lists.xenproject.org with outflank-mailman.667340.1038509 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPLb8-0001yc-Gk; Mon, 15 Jan 2024 11:57:46 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 667340.1038509; Mon, 15 Jan 2024 11:57:46 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPLb8-0001yV-Dt; Mon, 15 Jan 2024 11:57:46 +0000
Received: by outflank-mailman (input) for mailman id 667340;
 Mon, 15 Jan 2024 11:57:44 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rPLb6-0001ww-GW; Mon, 15 Jan 2024 11:57:44 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rPLb6-0001gQ-Dy; Mon, 15 Jan 2024 11:57:44 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rPLb6-0003YH-2Q; Mon, 15 Jan 2024 11:57:44 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rPLb6-0006AT-1t; Mon, 15 Jan 2024 11:57:44 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=HM9zt32UxGZV+1sXOczYfxCxTQdep2YQ/tRA5P683nw=; b=Ln7DmG1gROGj891GjBkzsJFbPS
	KO/V95+YDhHTy0esVAxtB1jp1TItQGLplGPw6CksU00XYw4FYs1kq1EKk3MqJTccec3O/DuwmDG+C
	+GEYF01adUK1u7d4UbxS/sykgnVmsukJwQ2Yv/sHBAmg4RiNDlNDX0hLB9okvMKemQkI=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184352-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [ovmf test] 184352: all pass - PUSHED
X-Osstest-Versions-This:
    ovmf=d65b183f92446a3a2855c1c7dd4a7a1b760af381
X-Osstest-Versions-That:
    ovmf=6a01fb2ea5b3b142a98f3649b0947268f038f389
From: osstest service owner <osstest-admin@xenproject.org>
Date: Mon, 15 Jan 2024 11:57:44 +0000

flight 184352 ovmf real [real]
http://logs.test-lab.xenproject.org/osstest/logs/184352/

Perfect :-)
All tests in this flight passed as required
version targeted for testing:
 ovmf                 d65b183f92446a3a2855c1c7dd4a7a1b760af381
baseline version:
 ovmf                 6a01fb2ea5b3b142a98f3649b0947268f038f389

Last test of basis   184350  2024-01-15 07:12:42 Z    0 days
Testing same since   184352  2024-01-15 09:42:45 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Nickle Wang <nicklew@nvidia.com>

jobs:
 build-amd64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-amd64-amd64-xl-qemuu-ovmf-amd64                         pass    
 test-amd64-i386-xl-qemuu-ovmf-amd64                          pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Pushing revision :

To xenbits.xen.org:/home/xen/git/osstest/ovmf.git
   6a01fb2ea5..d65b183f92  d65b183f92446a3a2855c1c7dd4a7a1b760af381 -> xen-tested-master


From xen-devel-bounces@lists.xenproject.org Mon Jan 15 12:32:46 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 15 Jan 2024 12:32:46 +0000
Received: from list by lists.xenproject.org with outflank-mailman.667355.1038520 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPM8X-0003JG-Dg; Mon, 15 Jan 2024 12:32:17 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 667355.1038520; Mon, 15 Jan 2024 12:32:17 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPM8X-0003J9-Ay; Mon, 15 Jan 2024 12:32:17 +0000
Received: by outflank-mailman (input) for mailman id 667355;
 Mon, 15 Jan 2024 12:32:16 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=Y0sJ=IZ=cloud.com=roger.pau@srs-se1.protection.inumbo.net>)
 id 1rPM8V-0003Hl-VL
 for xen-devel@lists.xenproject.org; Mon, 15 Jan 2024 12:32:16 +0000
Received: from mail-wr1-x42e.google.com (mail-wr1-x42e.google.com
 [2a00:1450:4864:20::42e])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 1b7bdccc-b3a2-11ee-9b0f-b553b5be7939;
 Mon, 15 Jan 2024 13:32:12 +0100 (CET)
Received: by mail-wr1-x42e.google.com with SMTP id
 ffacd0b85a97d-3377d45c178so3821215f8f.2
 for <xen-devel@lists.xenproject.org>; Mon, 15 Jan 2024 04:32:12 -0800 (PST)
Received: from localhost ([213.195.127.68]) by smtp.gmail.com with ESMTPSA id
 d11-20020adfa34b000000b00336e15fbc85sm11828133wrb.82.2024.01.15.04.32.11
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 15 Jan 2024 04:32:11 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 1b7bdccc-b3a2-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1705321932; x=1705926732; darn=lists.xenproject.org;
        h=in-reply-to:content-transfer-encoding:content-disposition
         :mime-version:references:message-id:subject:cc:to:from:date:from:to
         :cc:subject:date:message-id:reply-to;
        bh=HbBearF0qnTRZ5J4XNGAPv8J8R9/JbmwgJcHEWKAkB4=;
        b=wVLzBnpkrngbrp3h6ie1+hm+b/i3BYr2hYV82Vbdy8+Z+UATebZ72FgQom5xMgAKct
         D7A30viOUOO4G1gmy/9BHkNtTAdcPYxEGokfxHEDDdadHlAIpb6N/3OJUudwaqDOvyDj
         LQ0Fv9/eQxLSouMzV59Smyaxhq+xOfQ8QVyRg=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705321932; x=1705926732;
        h=in-reply-to:content-transfer-encoding:content-disposition
         :mime-version:references:message-id:subject:cc:to:from:date
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=HbBearF0qnTRZ5J4XNGAPv8J8R9/JbmwgJcHEWKAkB4=;
        b=e88/lAr59v1eBhLm/RiIAuCLK12jujlFBwjgLoumW3lS7BYXrWmf1ez/csUAXAtdO+
         wdI7Wxaus9/lVBxC/T8tzZow3D8MeSnKeBa8gNIHwXziSn+uyvSbNh6rQPImc24gTWJE
         is1Uq72YDQsy54/eccdQ0rLk+oo4zKSJ3Kwg5sLIUh25pLSLc61sm1r0l37L+GcTXDvE
         vwCITVV6RS1wfH0zcfdX9YuhgDbYSu1ILUE4jWSnYgZXgY/PqzIuZxPcTJZ+vORfvDUV
         eb/cud8A1qJklOOeCTFdNXYr3qI/PJ2gfGmwCBc1wjPtc6zIHvnEuV8r/Loky8At6Dj7
         hJcw==
X-Gm-Message-State: AOJu0YxwlmS09nGeVepyOUmhF18+lt3YEtj8Wh+h8pxFhzilJsrZSr0I
	zi3oD/ViD6joSi5Kv/NrQmG1qE4RdyeQZw==
X-Google-Smtp-Source: AGHT+IGqC54mAZUreT/EJ0sv6dB5ZdtIvHnkb9T3rBbolFfa3up5yDAoYN/A3Q8zd/5ANY4QrBFyLA==
X-Received: by 2002:adf:e549:0:b0:337:53bf:9f20 with SMTP id z9-20020adfe549000000b0033753bf9f20mr3164960wrm.76.1705321931882;
        Mon, 15 Jan 2024 04:32:11 -0800 (PST)
Date: Mon, 15 Jan 2024 13:32:10 +0100
From: Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
To: Jan Beulich <jbeulich@suse.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
	xen-devel@lists.xenproject.org,
	George Dunlap <george.dunlap@citrix.com>,
	Julien Grall <julien@xen.org>,
	Stefano Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>
Subject: Re: [PATCH] CirrusCI: drop FreeBSD 12
Message-ID: <ZaUlynk34sJATApl@macbook>
References: <20240115102718.81294-1-roger.pau@citrix.com>
 <854db64e-a3c1-4c2f-8a68-8557f7f5a5d1@citrix.com>
 <ZaUU_qqqOs_F4qe0@macbook>
 <6528658a-5cb7-4f9b-a92d-a4ca43f6352b@suse.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <6528658a-5cb7-4f9b-a92d-a4ca43f6352b@suse.com>

On Mon, Jan 15, 2024 at 12:37:39PM +0100, Jan Beulich wrote:
> On 15.01.2024 12:20, Roger Pau Monné wrote:
> > On Mon, Jan 15, 2024 at 11:01:54AM +0000, Andrew Cooper wrote:
> >> On 15/01/2024 10:27 am, Roger Pau Monne wrote:
> >>> Went EOL by the end of December 2023, and the pkg repos have been shut down.
> >>>
> >>> Reported-by: Andrew Cooper <andrew.cooper3@citrix.com>
> >>> Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
> >>
> >> Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>
> >>
> >> We'll need to backport this, I guess ?
> > 
> > Yup, but it might not apply cleanly without the rest of the changes to
> > the file backported also.
> 
> Looks to apply fine to .18 and .17, which it what I'll queue it for.
> If and when we need it on .16 and/or .15 as well, adjusting the patch
> rather then taking further (not really) prereqs may be preferable.

We would likely need to take backports, because the versions in 15 and
16 CirrusCI file are also EOL, so I think it won't work anyway.

Thanks, Roger.


From xen-devel-bounces@lists.xenproject.org Mon Jan 15 12:34:20 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 15 Jan 2024 12:34:20 +0000
Received: from list by lists.xenproject.org with outflank-mailman.667358.1038529 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPMAV-0003yc-OA; Mon, 15 Jan 2024 12:34:19 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 667358.1038529; Mon, 15 Jan 2024 12:34:19 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPMAV-0003yV-LY; Mon, 15 Jan 2024 12:34:19 +0000
Received: by outflank-mailman (input) for mailman id 667358;
 Mon, 15 Jan 2024 12:34:18 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rPMAU-0003yH-Ss; Mon, 15 Jan 2024 12:34:18 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rPMAU-0002Js-Al; Mon, 15 Jan 2024 12:34:18 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rPMAT-0004Xv-Tf; Mon, 15 Jan 2024 12:34:17 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rPMAT-0001v1-SB; Mon, 15 Jan 2024 12:34:17 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=pZDAxHI2kG0AqXx2zYZYzbIA1gdHQtMvZncBC/i3YtM=; b=rBMrdoxhGCuvMFLcl6L6AIeL0U
	wdAxeEzmd0Pqomedq/Fdi6at+VFv+BMYZbuB8y4MLs0CbFKiW3qolNj8ml3+dDrAd/w1Lm1ToJqf6
	3P4ZSR6irSJj+SKtT54d84t9H7WMrhlDAUTwGq0SWEL3snyF5ONMCDaGyqBiMEmPbfSs=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184347-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [xen-unstable test] 184347: tolerable FAIL
X-Osstest-Failures:
    xen-unstable:test-armhf-armhf-libvirt:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-amd64-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-raw:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-amd64-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-qcow2:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-qemuu-nested-amd:debian-hvm-install/l1/l2:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-amd64-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-i386-libvirt-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-libvirt:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-pvshim:guest-start:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-thunderx:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-xsm:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-thunderx:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-credit2:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-credit2:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-libvirt-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-libvirt-xsm:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-credit1:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-credit1:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit1:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit1:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-multivcpu:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-multivcpu:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit2:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit2:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-libvirt-raw:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-libvirt-raw:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-libvirt-raw:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt-vhd:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-vhd:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-vhd:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-raw:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-vhd:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-vhd:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-rtds:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-rtds:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-arndale:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-arndale:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-qcow2:migrate-support-check:fail:nonblocking
X-Osstest-Versions-This:
    xen=1ec3fe1f664fa837daf31e9fa8938f6109464f28
X-Osstest-Versions-That:
    xen=1ec3fe1f664fa837daf31e9fa8938f6109464f28
From: osstest service owner <osstest-admin@xenproject.org>
Date: Mon, 15 Jan 2024 12:34:17 +0000

flight 184347 xen-unstable real [real]
http://logs.test-lab.xenproject.org/osstest/logs/184347/

Failures :-/ but no regressions.

Tests which did not succeed, but are not blocking:
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 184343
 test-amd64-amd64-xl-qemut-win7-amd64 19 guest-stop            fail like 184343
 test-amd64-i386-xl-qemuu-win7-amd64 19 guest-stop             fail like 184343
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 184343
 test-amd64-i386-xl-qemut-ws16-amd64 19 guest-stop             fail like 184343
 test-armhf-armhf-libvirt-raw 15 saverestore-support-check    fail  like 184343
 test-amd64-i386-xl-qemut-win7-amd64 19 guest-stop             fail like 184343
 test-amd64-amd64-xl-qemut-ws16-amd64 19 guest-stop            fail like 184343
 test-armhf-armhf-libvirt-qcow2 15 saverestore-support-check   fail like 184343
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 184343
 test-amd64-i386-xl-qemuu-ws16-amd64 19 guest-stop             fail like 184343
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 184343
 test-amd64-i386-libvirt-xsm  15 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-amd64-i386-libvirt      15 migrate-support-check        fail   never pass
 test-amd64-i386-xl-pvshim    14 guest-start                  fail   never pass
 test-arm64-arm64-xl          15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-xsm      15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-thunderx 15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl          16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-xsm      16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-thunderx 16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-credit2  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit2  16 saverestore-support-check    fail   never pass
 test-arm64-arm64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-xsm 16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-credit1  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit1  16 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt     15 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-armhf-armhf-xl-credit1  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit1  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-multivcpu 15 migrate-support-check        fail  never pass
 test-armhf-armhf-xl-multivcpu 16 saverestore-support-check    fail  never pass
 test-armhf-armhf-libvirt     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-credit2  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit2  16 saverestore-support-check    fail   never pass
 test-amd64-i386-libvirt-raw  14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 15 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-vhd 14 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-vhd      14 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-vhd      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-raw 14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-rtds     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-rtds     16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-arndale  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-arndale  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-qcow2 14 migrate-support-check        fail never pass

version targeted for testing:
 xen                  1ec3fe1f664fa837daf31e9fa8938f6109464f28
baseline version:
 xen                  1ec3fe1f664fa837daf31e9fa8938f6109464f28

Last test of basis   184347  2024-01-15 01:52:33 Z    0 days
Testing same since                          (not found)         0 attempts

jobs:
 build-amd64-xsm                                              pass    
 build-arm64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64-xtf                                              pass    
 build-amd64                                                  pass    
 build-arm64                                                  pass    
 build-armhf                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-arm64-libvirt                                          pass    
 build-armhf-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-prev                                             pass    
 build-i386-prev                                              pass    
 build-amd64-pvops                                            pass    
 build-arm64-pvops                                            pass    
 build-armhf-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-xtf-amd64-amd64-1                                       pass    
 test-xtf-amd64-amd64-2                                       pass    
 test-xtf-amd64-amd64-3                                       pass    
 test-xtf-amd64-amd64-4                                       pass    
 test-xtf-amd64-amd64-5                                       pass    
 test-amd64-amd64-xl                                          pass    
 test-amd64-coresched-amd64-xl                                pass    
 test-arm64-arm64-xl                                          pass    
 test-armhf-armhf-xl                                          pass    
 test-amd64-i386-xl                                           pass    
 test-amd64-coresched-i386-xl                                 pass    
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm           pass    
 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm            pass    
 test-amd64-amd64-xl-qemut-stubdom-debianhvm-amd64-xsm        pass    
 test-amd64-i386-xl-qemut-stubdom-debianhvm-amd64-xsm         pass    
 test-amd64-amd64-xl-qemut-debianhvm-i386-xsm                 pass    
 test-amd64-i386-xl-qemut-debianhvm-i386-xsm                  pass    
 test-amd64-amd64-xl-qemuu-debianhvm-i386-xsm                 pass    
 test-amd64-i386-xl-qemuu-debianhvm-i386-xsm                  pass    
 test-amd64-amd64-libvirt-xsm                                 pass    
 test-arm64-arm64-libvirt-xsm                                 pass    
 test-amd64-i386-libvirt-xsm                                  pass    
 test-amd64-amd64-xl-xsm                                      pass    
 test-arm64-arm64-xl-xsm                                      pass    
 test-amd64-i386-xl-xsm                                       pass    
 test-amd64-amd64-qemuu-nested-amd                            fail    
 test-amd64-amd64-xl-pvhv2-amd                                pass    
 test-amd64-i386-qemut-rhel6hvm-amd                           pass    
 test-amd64-i386-qemuu-rhel6hvm-amd                           pass    
 test-amd64-amd64-dom0pvh-xl-amd                              pass    
 test-amd64-amd64-xl-qemut-debianhvm-amd64                    pass    
 test-amd64-i386-xl-qemut-debianhvm-amd64                     pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64                    pass    
 test-amd64-i386-xl-qemuu-debianhvm-amd64                     pass    
 test-amd64-i386-freebsd10-amd64                              pass    
 test-amd64-amd64-qemuu-freebsd11-amd64                       pass    
 test-amd64-amd64-qemuu-freebsd12-amd64                       pass    
 test-amd64-amd64-xl-qemuu-ovmf-amd64                         pass    
 test-amd64-i386-xl-qemuu-ovmf-amd64                          pass    
 test-amd64-amd64-xl-qemut-win7-amd64                         fail    
 test-amd64-i386-xl-qemut-win7-amd64                          fail    
 test-amd64-amd64-xl-qemuu-win7-amd64                         fail    
 test-amd64-i386-xl-qemuu-win7-amd64                          fail    
 test-amd64-amd64-xl-qemut-ws16-amd64                         fail    
 test-amd64-i386-xl-qemut-ws16-amd64                          fail    
 test-amd64-amd64-xl-qemuu-ws16-amd64                         fail    
 test-amd64-i386-xl-qemuu-ws16-amd64                          fail    
 test-armhf-armhf-xl-arndale                                  pass    
 test-amd64-amd64-examine-bios                                pass    
 test-amd64-i386-examine-bios                                 pass    
 test-amd64-amd64-xl-credit1                                  pass    
 test-arm64-arm64-xl-credit1                                  pass    
 test-armhf-armhf-xl-credit1                                  pass    
 test-amd64-amd64-xl-credit2                                  pass    
 test-arm64-arm64-xl-credit2                                  pass    
 test-armhf-armhf-xl-credit2                                  pass    
 test-amd64-amd64-xl-qemuu-dmrestrict-amd64-dmrestrict        pass    
 test-amd64-i386-xl-qemuu-dmrestrict-amd64-dmrestrict         pass    
 test-amd64-amd64-examine                                     pass    
 test-arm64-arm64-examine                                     pass    
 test-armhf-armhf-examine                                     pass    
 test-amd64-i386-examine                                      pass    
 test-amd64-i386-freebsd10-i386                               pass    
 test-amd64-amd64-qemuu-nested-intel                          pass    
 test-amd64-amd64-xl-pvhv2-intel                              pass    
 test-amd64-i386-qemut-rhel6hvm-intel                         pass    
 test-amd64-i386-qemuu-rhel6hvm-intel                         pass    
 test-amd64-amd64-dom0pvh-xl-intel                            pass    
 test-amd64-amd64-libvirt                                     pass    
 test-armhf-armhf-libvirt                                     pass    
 test-amd64-i386-libvirt                                      pass    
 test-amd64-amd64-livepatch                                   pass    
 test-amd64-i386-livepatch                                    pass    
 test-amd64-amd64-migrupgrade                                 pass    
 test-amd64-i386-migrupgrade                                  pass    
 test-amd64-amd64-xl-multivcpu                                pass    
 test-armhf-armhf-xl-multivcpu                                pass    
 test-amd64-amd64-pair                                        pass    
 test-amd64-i386-pair                                         pass    
 test-amd64-amd64-libvirt-pair                                pass    
 test-amd64-i386-libvirt-pair                                 pass    
 test-amd64-amd64-xl-pvshim                                   pass    
 test-amd64-i386-xl-pvshim                                    fail    
 test-amd64-amd64-pygrub                                      pass    
 test-armhf-armhf-libvirt-qcow2                               pass    
 test-amd64-amd64-xl-qcow2                                    pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-armhf-armhf-libvirt-raw                                 pass    
 test-amd64-i386-libvirt-raw                                  pass    
 test-amd64-amd64-xl-rtds                                     pass    
 test-armhf-armhf-xl-rtds                                     pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64-shadow             pass    
 test-amd64-i386-xl-qemuu-debianhvm-amd64-shadow              pass    
 test-amd64-amd64-xl-shadow                                   pass    
 test-amd64-i386-xl-shadow                                    pass    
 test-arm64-arm64-xl-thunderx                                 pass    
 test-amd64-amd64-examine-uefi                                pass    
 test-amd64-i386-examine-uefi                                 pass    
 test-amd64-amd64-libvirt-vhd                                 pass    
 test-arm64-arm64-xl-vhd                                      pass    
 test-armhf-armhf-xl-vhd                                      pass    
 test-amd64-i386-xl-vhd                                       pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Published tested tree is already up to date.



From xen-devel-bounces@lists.xenproject.org Mon Jan 15 12:42:16 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 15 Jan 2024 12:42:16 +0000
Received: from list by lists.xenproject.org with outflank-mailman.667365.1038539 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPMI7-0006bz-CI; Mon, 15 Jan 2024 12:42:11 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 667365.1038539; Mon, 15 Jan 2024 12:42:11 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPMI7-0006bs-9U; Mon, 15 Jan 2024 12:42:11 +0000
Received: by outflank-mailman (input) for mailman id 667365;
 Mon, 15 Jan 2024 12:42:10 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=Y0sJ=IZ=cloud.com=roger.pau@srs-se1.protection.inumbo.net>)
 id 1rPMI6-0006bm-GY
 for xen-devel@lists.xenproject.org; Mon, 15 Jan 2024 12:42:10 +0000
Received: from mail-ed1-x52f.google.com (mail-ed1-x52f.google.com
 [2a00:1450:4864:20::52f])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 7eb7fca0-b3a3-11ee-9b0f-b553b5be7939;
 Mon, 15 Jan 2024 13:42:08 +0100 (CET)
Received: by mail-ed1-x52f.google.com with SMTP id
 4fb4d7f45d1cf-55783b7b47aso9214051a12.0
 for <xen-devel@lists.xenproject.org>; Mon, 15 Jan 2024 04:42:08 -0800 (PST)
Received: from localhost ([213.195.127.68]) by smtp.gmail.com with ESMTPSA id
 a13-20020a170906274d00b00a2b608ad048sm5234711ejd.28.2024.01.15.04.42.07
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 15 Jan 2024 04:42:07 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 7eb7fca0-b3a3-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1705322528; x=1705927328; darn=lists.xenproject.org;
        h=in-reply-to:content-disposition:mime-version:references:message-id
         :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to;
        bh=zHRnL7OFk58JWmF7qip3gJ+Dxrz4aAB5HdIpQ/qcUSU=;
        b=Mfky/2ZoRe1M9zf5UoCuBZTaCAg7CzDvinFa/qg4kn58cp6QTJVEF2G8RRN+yuGjor
         TuVFCNxRri+Z2lpdxhdSfwKUy1euXld/n+DSku4Kbr/WGHJuofJmiCD8ae6Lh9+SiFYO
         Pyvzrc2Gyh0kB1yM7BNQgTo3p3b2tVg5GoPlU=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705322528; x=1705927328;
        h=in-reply-to:content-disposition:mime-version:references:message-id
         :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to;
        bh=zHRnL7OFk58JWmF7qip3gJ+Dxrz4aAB5HdIpQ/qcUSU=;
        b=E8IhkFx1jxpTIwpdbnGFzpQOZMMQVE5dm6CJ9iQ87hqNKPFQ1GXSxBm8bN/whMTV2j
         tJ1uhYaNP8V8NYMBEHDsCXmCjCE313y9nxcMEY7tw4KUN1ZAjapz3reWS07H6yS3lEyC
         nMh1brXIGZ0neH783Pr5tFrISBW//qnn5q8SyeYUpfqw/jv6C125U+CV54FPm8M0aqOC
         JrtHJ37CYRkZw04bM0o4bF8q1+g7Qsby/Ng/ehiZm/d/L4Q0mRxftHzhHMohny+TfMO6
         fZaAccuqaEkfd+Y01jm22Ga+A8OUyzod2nDsfvR9BjvvYWKlTKxT48c0iH8puiwfsF+4
         FgJg==
X-Gm-Message-State: AOJu0YwJvXYyw1b9JwucLMYThRTspa6klBZaRWNBAPEACFmASmqUVBGX
	I3UjI/EcomlBaf8SDwh/Lh2fzdP0tIkWZg==
X-Google-Smtp-Source: AGHT+IGcUFbs/eChy5SnY6UzZBfGmg/Ea6RXISpoPFMV94qdvhuaQTnnbN8R7ueToFhp4NixXtn7hg==
X-Received: by 2002:a17:907:a80a:b0:a2c:aff6:f6a9 with SMTP id vo10-20020a170907a80a00b00a2caff6f6a9mr2656993ejc.150.1705322527797;
        Mon, 15 Jan 2024 04:42:07 -0800 (PST)
Date: Mon, 15 Jan 2024 13:42:06 +0100
From: Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
To: Jan Beulich <jbeulich@suse.com>
Cc: Julien Grall <julien@xen.org>, Julien Grall <jgrall@amazon.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	George Dunlap <george.dunlap@citrix.com>,
	Stefano Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>,
	xen-devel@lists.xenproject.org
Subject: Re: [PATCH v2 1/2] xen/x86: io_apic: Introduce a command line option
 to skip timer check
Message-ID: <ZaUoHlW5izg-ZJaw@macbook>
References: <20231211122322.15815-1-julien@xen.org>
 <20231211122322.15815-2-julien@xen.org>
 <b17bb7d1-1206-4ad1-96b1-7b903a740c83@suse.com>
 <8b8a62a0-f854-405e-b256-5eee4bfdcb6c@xen.org>
 <b74f1f28-58da-4604-a7ef-370aeb0522ce@suse.com>
 <d0daf858-eda8-4b2a-9cfe-82fff834df8f@xen.org>
 <3a0b6d8a-d9f3-41d0-9acc-e84b5d9d3e33@suse.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
In-Reply-To: <3a0b6d8a-d9f3-41d0-9acc-e84b5d9d3e33@suse.com>

On Thu, Jan 04, 2024 at 09:54:30AM +0100, Jan Beulich wrote:
> On 02.01.2024 20:09, Julien Grall wrote:
> > Hi Jan,
> > 
> > On 14/12/2023 10:35, Jan Beulich wrote:
> >> On 14.12.2023 11:14, Julien Grall wrote:
> >>> On 14/12/2023 10:10, Jan Beulich wrote:
> >>>> On 11.12.2023 13:23, Julien Grall wrote:
> >>>>> --- a/xen/arch/x86/io_apic.c
> >>>>> +++ b/xen/arch/x86/io_apic.c
> >>>>> @@ -57,6 +57,14 @@ bool __initdata ioapic_ack_forced;
> >>>>>    int __read_mostly nr_ioapic_entries[MAX_IO_APICS];
> >>>>>    int __read_mostly nr_ioapics;
> >>>>>    
> >>>>> +/*
> >>>>> + * The logic to check if the timer is working is expensive. So allow
> >>>>> + * the admin to bypass it if they know their platform doesn't have
> >>>>> + * a buggy timer.
> >>>>> + */
> >>>>> +static bool __initdata pit_irq_works;
> >>>>> +boolean_param("pit-irq-works", pit_irq_works);
> >>>>> +
> >>>>>    /*
> >>>>>     * Rough estimation of how many shared IRQs there are, can
> >>>>>     * be changed anytime.
> >>>>> @@ -1502,6 +1510,9 @@ static int __init timer_irq_works(void)
> >>>>>    {
> >>>>>        unsigned long t1, flags;
> >>>>>    
> >>>>> +    if ( pit_irq_works )
> >>>>> +        return 1;
> >>>>
> >>>> When the check is placed here, what exactly use of the option means is
> >>>> system dependent. I consider this somewhat risky, so I'd prefer if the
> >>>> check was put on the "normal" path in check_timer(). That way it'll
> >>>> affect only the one case which we can generally consider "known good",
> >>>> but not the cases where the virtual wire setups are being probed. I.e.
> > 
> > By "known good", do you mean the following:
> > 
> > diff --git a/xen/arch/x86/io_apic.c b/xen/arch/x86/io_apic.c
> > index c89fbed8d675..c39d39ee951a 100644
> > --- a/xen/arch/x86/io_apic.c
> > +++ b/xen/arch/x86/io_apic.c
> > @@ -1960,7 +1959,8 @@ static void __init check_timer(void)
> >            * Ok, does IRQ0 through the IOAPIC work?
> >            */
> >           unmask_IO_APIC_irq(irq_to_desc(0));
> > -        if (timer_irq_works()) {
> > +        if (pit_irq_works || timer_irq_works()) {
> > +            printk("====== pirq_irq_works %d =====\n", pit_irq_works);
> >               local_irq_restore(flags);
> >               return;
> >           }
> 
> Yes.
> 
> >>> I am not against restricting when we allow skipping the timer check. But
> >>> in that case, I wonder why Linux is doing it differently?
> >>
> >> Sadly Linux'es git history doesn't go back far enough (begins only at past
> >> 2.6.11), so I can't (easily) find the patch (and description) for the x86-64
> >> change. The later i386 change is justified mainly by paravirt needs, so
> >> isn't applicable here. I wouldn't therefore exclude that my point above
> >> wasn't even taken into consideration. Furthermore their command line option
> >> is "no_timer_check", which to me firmly says "don't check" without regard to
> >> whether the source (PIT) is actually okay. That's different with the option
> >> name you (imo validly) chose.
> > 
> > Just to note that the name was suggested by Roger. I have to admit that 
> > I didn't check if this made sense for the existing placement.
> 
> Roger, thoughts?

Right, with the usage of HPET in legacy replacement mode we are no
longer exclusively testing the PIT, so might make sense to use a more
generic name, timer-irq-works or some such.

Thanks, Roger.


From xen-devel-bounces@lists.xenproject.org Mon Jan 15 12:49:21 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 15 Jan 2024 12:49:21 +0000
Received: from list by lists.xenproject.org with outflank-mailman.667371.1038550 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPMOx-0008Ol-6L; Mon, 15 Jan 2024 12:49:15 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 667371.1038550; Mon, 15 Jan 2024 12:49:15 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPMOx-0008Oe-2V; Mon, 15 Jan 2024 12:49:15 +0000
Received: by outflank-mailman (input) for mailman id 667371;
 Mon, 15 Jan 2024 12:49:13 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=0euc=IZ=amd.com=Michal.Orzel@srs-se1.protection.inumbo.net>)
 id 1rPMOv-0008OY-Ai
 for xen-devel@lists.xenproject.org; Mon, 15 Jan 2024 12:49:13 +0000
Received: from NAM02-BN1-obe.outbound.protection.outlook.com
 (mail-bn1nam02on20600.outbound.protection.outlook.com
 [2a01:111:f403:2407::600])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 7a8659dd-b3a4-11ee-98f1-6d05b1d4d9a1;
 Mon, 15 Jan 2024 13:49:11 +0100 (CET)
Received: from MW4PR04CA0381.namprd04.prod.outlook.com (2603:10b6:303:81::26)
 by DS7PR12MB5935.namprd12.prod.outlook.com (2603:10b6:8:7e::14) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7159.24; Mon, 15 Jan
 2024 12:49:07 +0000
Received: from CO1PEPF000044EE.namprd05.prod.outlook.com
 (2603:10b6:303:81:cafe::2b) by MW4PR04CA0381.outlook.office365.com
 (2603:10b6:303:81::26) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7181.26 via Frontend
 Transport; Mon, 15 Jan 2024 12:49:07 +0000
Received: from SATLEXMB04.amd.com (165.204.84.17) by
 CO1PEPF000044EE.mail.protection.outlook.com (10.167.241.68) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.7202.16 via Frontend Transport; Mon, 15 Jan 2024 12:49:06 +0000
Received: from SATLEXMB05.amd.com (10.181.40.146) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.34; Mon, 15 Jan
 2024 06:49:05 -0600
Received: from SATLEXMB04.amd.com (10.181.40.145) by SATLEXMB05.amd.com
 (10.181.40.146) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.34; Mon, 15 Jan
 2024 06:49:05 -0600
Received: from XIR-MICHALO-L1.xilinx.com (10.180.168.240) by
 SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server id 15.1.2507.34
 via Frontend Transport; Mon, 15 Jan 2024 06:49:04 -0600
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 7a8659dd-b3a4-11ee-98f1-6d05b1d4d9a1
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=FKmMFSEfMJ+ZVtIXPoyyftDWjy+dwkminu0WjVcIuu0DF2m1A8IRyfMEnRKHuy9V0zVUWRmOj7xQqNx0lcU/1bgaz+Nvg51n7/KuRdW7++TX15w/Hjls5ig+w/FQHCrndBhMgNlUdxeGdtVNeoITMcWaYCqm0G6iBlv69w1ZOAYDlVATfHUUbriLokMnl2bTgyD3U9RscOvrA90JUEnHp9GQ7OKJoF6gkyM51Jid8S82YUd3HzXyhC4Q07WofDMoOc7AM2zD8XOVYoyfj3YPdTGfI70c4bmntA38/WLo52p7SoraXQMdkOS4Hd44pemqOj6Ge8r4D2wuBLtO9OEadg==
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=NLBQvLoHCOj3N6IhMseZ9rkZSOpJyYpqguK/QdlO4GY=;
 b=QFpRYKXAqpS1RS80b58sZn2kw3nbgFQytrAwZlhA1eg82jZG6yhjX73pvlWfzhVU25rkYXgoqcITIz+vh5aeEkNG6FpDrYvfmMbP7/sEdY9gTPKAYR8PQmQKuaRmfbUIBmG0azk2WDt90HdzLsc4TT5bvRfYJHc1EEHZC/odviLkcwMKUz8hJcZbevikKkWR8LBZgCc4mBS7TaotwPS3PxW5gzpOxHfSKMNiXToUnjxBbdLgbVlgVM93i6eFTWvVKU0x+jhjEMg2EMdNvO+zkjyS8v9iPmEqoDKezktmM+kRJtI4goqwEBIEDntechCXRuFQ1ulMWvWYfwcB0xnRCg==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=lists.xenproject.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)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=NLBQvLoHCOj3N6IhMseZ9rkZSOpJyYpqguK/QdlO4GY=;
 b=oGq2K6KCJ26nPZTb4QlJCgV3YoHGJPyif+WPDjN7WkGII1svlHAG74/s3jcanhTaexHRV9NQvEpkHjwIDG/EG4X4tYfGfdhYulATTf8SrYO/Oo5JdEMOdOHTI1Vp0rScJA7m3OOJxXrEVGO7C6+DyO3RPyizQN3n+F+qom0AJv8=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C
From: Michal Orzel <michal.orzel@amd.com>
To: <xen-devel@lists.xenproject.org>
CC: Michal Orzel <michal.orzel@amd.com>, Stefano Stabellini
	<sstabellini@kernel.org>, Julien Grall <julien@xen.org>, Bertrand Marquis
	<bertrand.marquis@arm.com>, Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>
Subject: [PATCH 1/2] xen/arm32: head: Move earlyprintk 'hex' to .rodata.idmap
Date: Mon, 15 Jan 2024 13:48:58 +0100
Message-ID: <20240115124859.89218-2-michal.orzel@amd.com>
X-Mailer: git-send-email 2.25.1
In-Reply-To: <20240115124859.89218-1-michal.orzel@amd.com>
References: <20240115124859.89218-1-michal.orzel@amd.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CO1PEPF000044EE:EE_|DS7PR12MB5935:EE_
X-MS-Office365-Filtering-Correlation-Id: 8b353449-3875-4f71-2139-08dc15c85c73
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam: BCL:0;
X-Microsoft-Antispam-Message-Info:
	9NmFwBqQZMLLU8f/wisBZZWC6tVXUgyVKa8GJoNRp34dosYDjWwqWf2ZUDk2Xc5tzGP4VFu2SwQlM1tYV6IaEsXUztH3GxIxVaxfLm5/a4i2iyT5OyOcnFI2GBYZcO0yxRzonDF+FsXcG7FBO7WbnN6GBETmIDYOVfQwpFRI1EMYIRqCC1zv+iorIcWR/bNLV0sfYGs3NOMWykpRSx+iCJpO4//kWDDdCSxGT46z7X4yjb4S6k2Hybxl3xZTCcQ3kd6bZosjYLEhq/UN75tcbveYkG/r1TnJlBK5B2tJX8kzhQBLUo5VFvEY4UEBueSPozuwpKuFcZB3bfSTvBahdb/EV4o2ntnBryHXLy+IHrrARXfx6Fh4mOJlIfd3+ZasIcH4dJl9J4pZJ8OE+043Gl2bW0vTunc3t0jJcM0HkjHuUPXcdIXq2MGQuIU/SYf0qf0IE/INAEqKdsSqC+ZJrXryGj2fX/klFMr8zM41UE1XPC2XhN4pQcLAVOJ0Nsdpc91nHLwwUI+mFdV22nzNlsV52QhV2s3wkcWBrO9s+W5LJWLznQSYA3z+VRhwy91u2g2Y5seN/vwwX9aaNz/tg0jMUt8Chzr224FT9PCSDGUrLr+Hktb80HcxrrG64LmZX0X7a10GdEmgcNAbvdTNfR1ICly6UPcc1lu7MgGW6JE7K+MOHb8iMNN0LIA/3amDC/2WgB2gMNVvOT99h0Qw4Unski0yms9FW4DDf8jg/324mhG3p8Lz/Sx8QcPrpet6jy4jVmNh6uj4VeDSD5HwuCDMkpTUMnGkmh6fDNMKLYk=
X-Forefront-Antispam-Report:
	CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230031)(4636009)(39860400002)(396003)(136003)(346002)(376002)(230922051799003)(82310400011)(186009)(64100799003)(1800799012)(451199024)(40470700004)(46966006)(36840700001)(70206006)(8936002)(4326008)(478600001)(8676002)(36860700001)(316002)(54906003)(426003)(1076003)(6916009)(26005)(70586007)(83380400001)(336012)(6666004)(2906002)(5660300002)(41300700001)(44832011)(4744005)(2616005)(36756003)(47076005)(82740400003)(356005)(81166007)(86362001)(40460700003)(40480700001)(142923001)(36900700001);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Jan 2024 12:49:06.6896
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 8b353449-3875-4f71-2139-08dc15c85c73
X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com]
X-MS-Exchange-CrossTenant-AuthSource:
	CO1PEPF000044EE.namprd05.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS7PR12MB5935

Thanks to 1ec3fe1f664f ("xen/arm32: head: Improve logging in head.S"),
we can now use PRINT_ID() macro to print messages when running on
identity mapping. For that, all the strings need to be part of the first
page that is mapped. This is not the case for a 'hex' string (used by
asm_putn when printing register values), which currently resides in
.rodata.str. Move it to .rodata.idmap to allow making use of print_reg
macro from anywhere (mostly to aid debugging).

Signed-off-by: Michal Orzel <michal.orzel@amd.com>
---
 xen/arch/arm/arm32/head.S | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/xen/arch/arm/arm32/head.S b/xen/arch/arm/arm32/head.S
index 99d7d4aa63d1..b488a21a71ba 100644
--- a/xen/arch/arm/arm32/head.S
+++ b/xen/arch/arm/arm32/head.S
@@ -320,7 +320,7 @@ ENTRY(asm_putn)
         mov   pc, lr
 ENDPROC(asm_putn)
 
-RODATA_STR(hex, "0123456789abcdef")
+RODATA_SECT(.rodata.idmap, hex, "0123456789abcdef")
 
 #endif /* CONFIG_EARLY_PRINTK */
 
-- 
2.25.1



From xen-devel-bounces@lists.xenproject.org Mon Jan 15 12:49:21 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 15 Jan 2024 12:49:21 +0000
Received: from list by lists.xenproject.org with outflank-mailman.667372.1038560 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPMP1-0000CV-Cz; Mon, 15 Jan 2024 12:49:19 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 667372.1038560; Mon, 15 Jan 2024 12:49:19 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPMP1-0000CM-A5; Mon, 15 Jan 2024 12:49:19 +0000
Received: by outflank-mailman (input) for mailman id 667372;
 Mon, 15 Jan 2024 12:49:18 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=0euc=IZ=amd.com=Michal.Orzel@srs-se1.protection.inumbo.net>)
 id 1rPMP0-0000Bs-F3
 for xen-devel@lists.xenproject.org; Mon, 15 Jan 2024 12:49:18 +0000
Received: from NAM10-MW2-obe.outbound.protection.outlook.com
 (mail-mw2nam10on20600.outbound.protection.outlook.com
 [2a01:111:f403:2412::600])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 7d22ab1f-b3a4-11ee-9b0f-b553b5be7939;
 Mon, 15 Jan 2024 13:49:16 +0100 (CET)
Received: from BYAPR21CA0011.namprd21.prod.outlook.com (2603:10b6:a03:114::21)
 by LV3PR12MB9144.namprd12.prod.outlook.com (2603:10b6:408:19d::10)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7181.23; Mon, 15 Jan
 2024 12:49:11 +0000
Received: from SJ5PEPF000001D7.namprd05.prod.outlook.com
 (2603:10b6:a03:114:cafe::b2) by BYAPR21CA0011.outlook.office365.com
 (2603:10b6:a03:114::21) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7202.14 via Frontend
 Transport; Mon, 15 Jan 2024 12:49:11 +0000
Received: from SATLEXMB03.amd.com (165.204.84.17) by
 SJ5PEPF000001D7.mail.protection.outlook.com (10.167.242.59) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.7202.16 via Frontend Transport; Mon, 15 Jan 2024 12:49:11 +0000
Received: from SATLEXMB05.amd.com (10.181.40.146) by SATLEXMB03.amd.com
 (10.181.40.144) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.34; Mon, 15 Jan
 2024 06:49:07 -0600
Received: from SATLEXMB04.amd.com (10.181.40.145) by SATLEXMB05.amd.com
 (10.181.40.146) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.34; Mon, 15 Jan
 2024 06:49:07 -0600
Received: from XIR-MICHALO-L1.xilinx.com (10.180.168.240) by
 SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server id 15.1.2507.34
 via Frontend Transport; Mon, 15 Jan 2024 06:49:05 -0600
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 7d22ab1f-b3a4-11ee-9b0f-b553b5be7939
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=l7Hbmgke0zSQ1Z+9ghQ9Xn0lIUW0PICZJv6ENsTkoHr5nDCFMkK+3G6+PZ/B70Eg5tXt4o1FKeSk5nXFWmEPlRiRLzB+9FTgFZc8OWTte2xHLmSOwY3qD7jyUafZzrDHOe8acIki/1/Z5I8uF+0gq83T4YfeCkieq/jG0JfNusfyHI4YTnMQJkXAfMHvEDQN6T2G7eEQMbbvXi0ge5ioEsmAAyndcwkqWyxCPcTRnzMkVuANpG2Zh8aHZjA6WcD+SgtaEMZQJGtMI2eXU65kpAGDxGdaFUcM5ySzvEkE/UuZZEwZfTuUzsQgJWML//TxdVRonq0Brk9i2PXSffg61w==
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=PQDEF2iuhtk4R2tIGqGFUXRYJohLUzHLoyqSVuATIKw=;
 b=Blq2QFeRx5x7e9R7ErT8+okeTrhehPPAHLTECddC21Ey1iP4s9s7Foog6W0CdLC9dnm4B5XQa7OzWYBbj0lWHs8W3gmu2LztgRTRppfUbOUYcsHIAP87bMbfKhLAtd0l3LaU95qjKpEFN+5WnYLZ27T2iKB+6cow7NvO//mUQNES6U8J24/I/e4mgs5q/ROyRHsuRqruCYN4SJhT6fhCdvf5lEv8lRXnEyQDBb+8uiAfhNIr+qFkSpaWD67WaZXgBlYOWnlixmJXtpKNqB9bHcstqQmypgg6SI6MTkiihEkOZQMWUO6RRj1GpChAwmpOVozrt89jj02X9oUvoGZXQw==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=lists.xenproject.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)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=PQDEF2iuhtk4R2tIGqGFUXRYJohLUzHLoyqSVuATIKw=;
 b=E8P1htWWf33f/GnsNBihRpZoo1MzFcFhPyQQTDruGdNkhnq2OskcEqTnOtFwcd0LP6RnTrcVfuyiFuIaErt1ikqFmn2zEsC6JdVTfQ5m5qZa8ZIwxQ62aT2O3p5NTdKJ3luCsrG+X5eIjLUyQb4t+uJ22U10zLTGAQzI4gDSaEI=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=SATLEXMB03.amd.com; pr=C
From: Michal Orzel <michal.orzel@amd.com>
To: <xen-devel@lists.xenproject.org>
CC: Michal Orzel <michal.orzel@amd.com>, Stefano Stabellini
	<sstabellini@kernel.org>, Julien Grall <julien@xen.org>, Bertrand Marquis
	<bertrand.marquis@arm.com>, Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>
Subject: [PATCH 2/2] xen/arm64: head: Allow to use early printk while on 1:1 mapping
Date: Mon, 15 Jan 2024 13:48:59 +0100
Message-ID: <20240115124859.89218-3-michal.orzel@amd.com>
X-Mailer: git-send-email 2.25.1
In-Reply-To: <20240115124859.89218-1-michal.orzel@amd.com>
References: <20240115124859.89218-1-michal.orzel@amd.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: SJ5PEPF000001D7:EE_|LV3PR12MB9144:EE_
X-MS-Office365-Filtering-Correlation-Id: 335c26fe-4393-4cca-43ee-08dc15c85f33
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam: BCL:0;
X-Microsoft-Antispam-Message-Info:
	njCq5+cfuTg4l8+g9VsWbWm4pNsbDhbsefxtN5IFFSaG/ovDYlu0aTzS5xixDBMf9wzQKazjLIZ/rh08G5cDAnGgOyPUWr7BoRBCMpwo5SyfQmXI/hK5aQbZFNFIE+Wc+fbFHrHZwVcGrOYai9CDLD/PL4YMXym/EQleTxgySPxMZCsN04XxzF8Q1GWKALKk5WyAMLn2XQE93gT9l2S9w/TPFgh4CzQDk+ZGdZELA6GgGksntKOcu5OtzeOKBqBuDqKBdkjDR+A+pRL+TdRaCHVwfS8Ox9b8D2TghSfTVZiiZAXWXECNM7rbP7pI5zJwiZVjGrE/xzzmOLcQD6ESG9K41iXP0LvowdQIL0hswCDh7cpWxha6ES809X4xDwxDRYYeFf3w0H96f80Ag1FJEVy2ZzgFi8pl4ADUBbT35D3kFiCvqO+9108Vpkp/4/yRH00+VihLzVDn1S72BZp17vQxMoF0Pfcsmd9RkLXd09bN3F1vx/ZC+I6nNV+6ZUsoIfzKK43ltgjjAaLhWlKRLe2lQWY2d9DCsjMBBMGCawBzW0MOZac0eLsSMwDg05vq69kwX64Gao2UctxVl3Vjez0Uug+cQXawOo8WJ4L5azX4fu2QLN+k2zMMJu2bZU2+Tpq7ajjPSrZDOSxynfabCbmMIsLx93r4eo5KdDiC3GjhU0p0hmirkln/z/J9+HKREiutD6/UqGGZVouw3cAtvkRZ9xX26rA6fCw6VD7T5Elgxa9yF+LwOi0usBlaLKNAdPLJG1easvvfQxQDxclJ9g==
X-Forefront-Antispam-Report:
	CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB03.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230031)(4636009)(396003)(136003)(39860400002)(376002)(346002)(230922051799003)(186009)(64100799003)(82310400011)(451199024)(1800799012)(40470700004)(36840700001)(46966006)(26005)(478600001)(1076003)(70586007)(70206006)(6666004)(2616005)(426003)(36860700001)(336012)(83380400001)(41300700001)(4326008)(44832011)(316002)(54906003)(8936002)(8676002)(5660300002)(6916009)(2906002)(47076005)(36756003)(356005)(81166007)(82740400003)(86362001)(40460700003)(40480700001)(36900700001);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Jan 2024 12:49:11.3199
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 335c26fe-4393-4cca-43ee-08dc15c85f33
X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB03.amd.com]
X-MS-Exchange-CrossTenant-AuthSource:
	SJ5PEPF000001D7.namprd05.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: LV3PR12MB9144

Take an example from commit 1ec3fe1f664f ("xen/arm32: head: Improve
logging in head.S") to add support for printing early boot messages
while running on identity mapping:
 - define PRINT_SECT() macro to be able to specify a section for storing
   a string. PRINT() will use .rodata.str and PRINT_ID() - .rodata.idmap.
   This is necessary, because when running on identity mapping, the
   strings need to be part of the first page that is mapped,
 - move loading a runtime virtual UART address right after enabling MMU
   (the corresponding steps repeated in {primary,secondary}_switched are
   now consolidated in a single place),
 - move early printk 'hex' string into .rodata.idmap and replace 'adr'
   instruction in asm_putn with 'adr_l' to extend the addressable range,
 - remove RODATA_STR() macro given no use.

Signed-off-by: Michal Orzel <michal.orzel@amd.com>
---
 xen/arch/arm/arm64/head.S               | 13 ++-----------
 xen/arch/arm/arm64/mmu/head.S           |  8 ++++++++
 xen/arch/arm/include/asm/arm64/macros.h | 25 ++++++++++++++++++-------
 xen/arch/arm/include/asm/asm_defns.h    |  2 --
 4 files changed, 28 insertions(+), 20 deletions(-)

diff --git a/xen/arch/arm/arm64/head.S b/xen/arch/arm/arm64/head.S
index 9d7d83a5ed2b..cfc04c755400 100644
--- a/xen/arch/arm/arm64/head.S
+++ b/xen/arch/arm/arm64/head.S
@@ -256,10 +256,6 @@ real_start_efi:
         b     enable_boot_cpu_mm
 
 primary_switched:
-#ifdef CONFIG_EARLY_PRINTK
-        /* Use a virtual address to access the UART. */
-        ldr   x23, =EARLY_UART_VIRTUAL_ADDRESS
-#endif
         bl    zero_bss
         PRINT("- Ready -\r\n")
         /* Setup the arguments for start_xen and jump to C world */
@@ -304,10 +300,6 @@ GLOBAL(init_secondary)
         b     enable_secondary_cpu_mm
 
 secondary_switched:
-#ifdef CONFIG_EARLY_PRINTK
-        /* Use a virtual address to access the UART. */
-        ldr   x23, =EARLY_UART_VIRTUAL_ADDRESS
-#endif
         PRINT("- Ready -\r\n")
         /* Jump to C world */
         ldr   x2, =start_secondary
@@ -480,7 +472,7 @@ ENDPROC(asm_puts)
  * Clobbers x0-x3
  */
 ENTRY(asm_putn)
-        adr   x1, hex
+        adr_l x1, hex
         mov   x3, #16
 1:
         early_uart_ready x23, 2
@@ -494,8 +486,7 @@ ENTRY(asm_putn)
         ret
 ENDPROC(asm_putn)
 
-hex:    .ascii "0123456789abcdef"
-        .align 2
+RODATA_SECT(.rodata.idmap, hex, "0123456789abcdef")
 
 #endif /* CONFIG_EARLY_PRINTK */
 
diff --git a/xen/arch/arm/arm64/mmu/head.S b/xen/arch/arm/arm64/mmu/head.S
index 10774f30e40e..92b62ae94ce5 100644
--- a/xen/arch/arm/arm64/mmu/head.S
+++ b/xen/arch/arm/arm64/mmu/head.S
@@ -295,6 +295,14 @@ enable_mmu:
         dsb   sy                     /* Flush PTE writes and finish reads */
         msr   SCTLR_EL2, x0          /* now paging is enabled */
         isb                          /* Now, flush the icache */
+
+#ifdef CONFIG_EARLY_PRINTK
+        /* Use a virtual address to access the UART. */
+        ldr   x23, =EARLY_UART_VIRTUAL_ADDRESS
+#endif
+
+        PRINT_ID("- Paging turned on -\r\n")
+
         ret
 ENDPROC(enable_mmu)
 
diff --git a/xen/arch/arm/include/asm/arm64/macros.h b/xen/arch/arm/include/asm/arm64/macros.h
index d108dc3a3a71..10e652041f57 100644
--- a/xen/arch/arm/include/asm/arm64/macros.h
+++ b/xen/arch/arm/include/asm/arm64/macros.h
@@ -34,16 +34,26 @@
 
 #ifdef CONFIG_EARLY_PRINTK
 /*
- * Macro to print a string to the UART, if there is one.
+ * Macros to print a string to the UART, if there is one.
+ *
+ * There are multiple flavors:
+ *  - PRINT_SECT(section, string): The @string will be located in @section
+ *  - PRINT(): The string will be located in .rodata.str.
+ *  - PRINT_ID(): When Xen is running on the Identity Mapping, it is
+ *    only possible to have a limited amount of Xen. This will create
+ *    the string in .rodata.idmap which will always be mapped.
  *
  * Clobbers x0 - x3
  */
-#define PRINT(_s)          \
-        mov   x3, lr ;     \
-        adr_l x0, 98f ;    \
-        bl    asm_puts ;   \
-        mov   lr, x3 ;     \
-        RODATA_STR(98, _s)
+#define PRINT_SECT(section, string)         \
+        mov   x3, lr                       ;\
+        adr_l x0, 98f                      ;\
+        bl    asm_puts                     ;\
+        mov   lr, x3                       ;\
+        RODATA_SECT(section, 98, string)
+
+#define PRINT(string) PRINT_SECT(.rodata.str, string)
+#define PRINT_ID(string) PRINT_SECT(.rodata.idmap, string)
 
 /*
  * Macro to print the value of register \xb
@@ -59,6 +69,7 @@
 
 #else /* CONFIG_EARLY_PRINTK */
 #define PRINT(s)
+#define PRINT_ID(s)
 
 .macro print_reg xb
 .endm
diff --git a/xen/arch/arm/include/asm/asm_defns.h b/xen/arch/arm/include/asm/asm_defns.h
index ec803c0a370c..eecafd3b39ef 100644
--- a/xen/arch/arm/include/asm/asm_defns.h
+++ b/xen/arch/arm/include/asm/asm_defns.h
@@ -27,8 +27,6 @@
 label:  .asciz msg;                             \
 .popsection
 
-#define RODATA_STR(label, msg) RODATA_SECT(.rodata.str, label, msg)
-
 #define ASM_INT(label, val)                 \
     .p2align 2;                             \
 label: .long (val);                         \
-- 
2.25.1



From xen-devel-bounces@lists.xenproject.org Mon Jan 15 12:49:21 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 15 Jan 2024 12:49:21 +0000
Received: from list by lists.xenproject.org with outflank-mailman.667373.1038570 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPMP2-0000S9-KQ; Mon, 15 Jan 2024 12:49:20 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 667373.1038570; Mon, 15 Jan 2024 12:49:20 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPMP2-0000Rw-HM; Mon, 15 Jan 2024 12:49:20 +0000
Received: by outflank-mailman (input) for mailman id 667373;
 Mon, 15 Jan 2024 12:49:19 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=0euc=IZ=amd.com=Michal.Orzel@srs-se1.protection.inumbo.net>)
 id 1rPMP1-0000Bs-3V
 for xen-devel@lists.xenproject.org; Mon, 15 Jan 2024 12:49:19 +0000
Received: from NAM11-DM6-obe.outbound.protection.outlook.com
 (mail-dm6nam11on20612.outbound.protection.outlook.com
 [2a01:111:f400:7eaa::612])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 7e814789-b3a4-11ee-9b0f-b553b5be7939;
 Mon, 15 Jan 2024 13:49:17 +0100 (CET)
Received: from BYAPR21CA0011.namprd21.prod.outlook.com (2603:10b6:a03:114::21)
 by DS7PR12MB6069.namprd12.prod.outlook.com (2603:10b6:8:9f::13) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7159.23; Mon, 15 Jan
 2024 12:49:10 +0000
Received: from SJ5PEPF000001D7.namprd05.prod.outlook.com
 (2603:10b6:a03:114:cafe::c6) by BYAPR21CA0011.outlook.office365.com
 (2603:10b6:a03:114::21) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7202.14 via Frontend
 Transport; Mon, 15 Jan 2024 12:49:05 +0000
Received: from SATLEXMB03.amd.com (165.204.84.17) by
 SJ5PEPF000001D7.mail.protection.outlook.com (10.167.242.59) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.7202.16 via Frontend Transport; Mon, 15 Jan 2024 12:49:04 +0000
Received: from SATLEXMB05.amd.com (10.181.40.146) by SATLEXMB03.amd.com
 (10.181.40.144) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.34; Mon, 15 Jan
 2024 06:49:04 -0600
Received: from SATLEXMB04.amd.com (10.181.40.145) by SATLEXMB05.amd.com
 (10.181.40.146) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.34; Mon, 15 Jan
 2024 06:49:04 -0600
Received: from XIR-MICHALO-L1.xilinx.com (10.180.168.240) by
 SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server id 15.1.2507.34
 via Frontend Transport; Mon, 15 Jan 2024 06:49:02 -0600
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 7e814789-b3a4-11ee-9b0f-b553b5be7939
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=Zpwkkj1NQUZoJnxocJZKhMqh8s0CMgaWGbjzQ8k2gtl8+v93avdTK/OsFZ+FNwD1HWAqNmBPKjCa8XVIN+tMJKGDNvGqkk3llbKJrYZ7pddTdF7at9motN8osGD7KDEv7kkCNvYU5YFFUgBXWGTky+0pMbzYfcgH2Zn1OO4OjaVJKBSJbfegjj4saiMJqNatZ110ifOpQpwEXHIJw1IhMXGd+0Fe2wlGYoow2bTBTPbiQbgfND/WGksusb17XPzmm9T3RJGVuPxhBhP4C54CIfbN5oPp/pYY48C3nGZ6bGU4zJEm/GKhWbiQSOO9zvqP5Kjq+Bj+xK7ZNYQ7xG0B/w==
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=+D30wa8+YjJ014W2UqmvDQpgxpi0GE90DyQ04+s4KXM=;
 b=RMwBmGWvtHpBnpRF3gewdhZNurJmS4dgaa5aia61iA3YzlximrI/bOl8bKsATABSkBQTu2dlx7wy9ELkBxvxlk2QsK9U0e9/tGTkwaFMYwQKtoX/AUNM+NWunbnwbxQ1hr/Rd/agGwl4KF2eybQL8s58Uig5EtRLay4Kf3OkRPg+TmAyEBURwVo3cci0ZAMefi0sOHWzwk9h+iVrcJeE1Yx4yCb6BlZjxXWmctrBjpDAocxs9oAU8cJ5XRrYHW9+QyFiyh/NLY5Uxp4J/0ZHkA/reTfFBCi4jr9YG38LDRoGiDP2e4q6STuSEY952K3Rdu7F/DtF4Rc36j7JlZnycw==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=lists.xenproject.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)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=+D30wa8+YjJ014W2UqmvDQpgxpi0GE90DyQ04+s4KXM=;
 b=G0d/1hp9SS+U8Ny1Xjjt3+VQp852nJIIeDF/S7g066NpGZ3gQZOLkAT1Dl44dzjdCqZRxVXe+FRAy+Xvp+arSwnidwafMyXQpyMloATxeodUi09rbFZrMefRyeZKmRDHO9GfXrraekSySNwgIzMYES5LGX233eGCpvAZ+r4hOqs=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=SATLEXMB03.amd.com; pr=C
From: Michal Orzel <michal.orzel@amd.com>
To: <xen-devel@lists.xenproject.org>
CC: Michal Orzel <michal.orzel@amd.com>, Stefano Stabellini
	<sstabellini@kernel.org>, Julien Grall <julien@xen.org>, Bertrand Marquis
	<bertrand.marquis@arm.com>, Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>
Subject: [PATCH 0/2] xen/arm: head: early printk on 1:1 mapping
Date: Mon, 15 Jan 2024 13:48:57 +0100
Message-ID: <20240115124859.89218-1-michal.orzel@amd.com>
X-Mailer: git-send-email 2.25.1
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: SJ5PEPF000001D7:EE_|DS7PR12MB6069:EE_
X-MS-Office365-Filtering-Correlation-Id: 7b6575b5-2b6b-46b7-59f9-08dc15c85b5f
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam: BCL:0;
X-Microsoft-Antispam-Message-Info:
	yrPsZQKkM3XR7JzDNh6adm73TN2n89hcVYOgJMCslOGQXhgn5NA0JnhJrrj4Z8DNpeD0kXnyrSdfALBddCxfWBKmws/ELZzE5mFpKE3X6wsMcvf9mbuvZKxSA7TPavr0RTeeW7wdJE+lPwats+vHAy4IG8FPw8D3rQML0LrVS7vJonl/g3KGWYsPcYsqSsT/0bCKk95czeaNTQR25i+aK7PKUgtdcWcYOdZJayC/N5S7f9Nx9D4541252fMxfy/mBvi2wfY+cusY+2xz9ghbdy6FOKzrmpBmYOjzVgIZg2cVvUNf03u1TJoLKyP8mfP+vND/UMRBOItl43g4FQGO3NeePELH2VDqJYZ7dO3oVnGPqE21z25m0/IkA8y34eaCjvrxrUA38lSE8DK4CLm2PMhj8WsUc1HQU/S3nsoMN5DVexKJn7r+vu/1Y8iDlS5SH+F0DHT2Ahv6xS43mRTXTvo7NamIIpzE7n4c9IUGfkVqUNaVWQHPqPhWBD2WAytU3DzpZkmTX09htl7GGdHaNDtIdYSW7Kd3zvCoAcT9hK4eCY8j+r9GCF/2pGaPFW7a0j1vOFIlnxe+i/S3BkDWtO5hdGdJ9oaN5BFsvkIH6jdQ5SKoBduom7QDaxhwgjvDYjp98Ekr/HBCC4fvT1fTH4efCX2ZHj+8aXwx1dbxQ1Dn355HC9BKNcKFuzTJt5fGrzPH4oOvmS+643AAAsAUQdcsxrxU413FPWSnlt+gTgif1MVz1WQgQZSemwAyvgvQ7HZrnsrLrtEvaJ21TM4FIA==
X-Forefront-Antispam-Report:
	CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB03.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230031)(4636009)(376002)(136003)(396003)(346002)(39860400002)(230922051799003)(451199024)(186009)(1800799012)(82310400011)(64100799003)(46966006)(36840700001)(40470700004)(5660300002)(2906002)(4744005)(41300700001)(40480700001)(40460700003)(83380400001)(356005)(26005)(1076003)(336012)(426003)(6666004)(36860700001)(86362001)(47076005)(81166007)(478600001)(2616005)(8936002)(4326008)(8676002)(70206006)(44832011)(36756003)(82740400003)(70586007)(6916009)(316002)(54906003)(36900700001);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Jan 2024 12:49:04.8979
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 7b6575b5-2b6b-46b7-59f9-08dc15c85b5f
X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB03.amd.com]
X-MS-Exchange-CrossTenant-AuthSource:
	SJ5PEPF000001D7.namprd05.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS7PR12MB6069

This series is a follow up to 1ec3fe1f664f ("xen/arm32: head: Improve logging
in head.S").

Michal Orzel (2):
  xen/arm32: head: Move earlyprintk 'hex' to .rodata.idmap
  xen/arm64: head: Allow to use early printk while on 1:1 mapping

 xen/arch/arm/arm32/head.S               |  2 +-
 xen/arch/arm/arm64/head.S               | 13 ++-----------
 xen/arch/arm/arm64/mmu/head.S           |  8 ++++++++
 xen/arch/arm/include/asm/arm64/macros.h | 25 ++++++++++++++++++-------
 xen/arch/arm/include/asm/asm_defns.h    |  2 --
 5 files changed, 29 insertions(+), 21 deletions(-)

-- 
2.25.1



From xen-devel-bounces@lists.xenproject.org Mon Jan 15 14:16:19 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 15 Jan 2024 14:16:19 +0000
Received: from list by lists.xenproject.org with outflank-mailman.667386.1038581 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPNkw-0001iD-1z; Mon, 15 Jan 2024 14:16:02 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 667386.1038581; Mon, 15 Jan 2024 14:16:02 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPNkv-0001i6-SI; Mon, 15 Jan 2024 14:16:01 +0000
Received: by outflank-mailman (input) for mailman id 667386;
 Mon, 15 Jan 2024 14:16:00 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rPNku-0001hw-HS; Mon, 15 Jan 2024 14:16:00 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rPNkt-0004T4-Oc; Mon, 15 Jan 2024 14:15:59 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rPNkt-0007Ik-Cx; Mon, 15 Jan 2024 14:15:59 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rPNkt-0000NB-CT; Mon, 15 Jan 2024 14:15:59 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=ba6Xt2eeCQV9V6WQEqWj2oD/uPFPIlxX0iTpUzbaAO4=; b=oE3AYVpCZtzAri+XG+1isWMm7a
	jJuZY8qz3q3jvVsSIs4FjcYEnP9OeOupH+XBi2Ill/id0onW2OVJcYPvh6EBf/Fa3OxXBptGOnIyQ
	Pig4ayYQWhIDgayfydbLJ5EwSUlGFRQiZbEGG3wTRKfdEIQDuBh3TfKZYNSp5iY2WLSA=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184356-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [ovmf test] 184356: all pass - PUSHED
X-Osstest-Versions-This:
    ovmf=195e59bd0c60523caa415f429517e46ff7065600
X-Osstest-Versions-That:
    ovmf=d65b183f92446a3a2855c1c7dd4a7a1b760af381
From: osstest service owner <osstest-admin@xenproject.org>
Date: Mon, 15 Jan 2024 14:15:59 +0000

flight 184356 ovmf real [real]
http://logs.test-lab.xenproject.org/osstest/logs/184356/

Perfect :-)
All tests in this flight passed as required
version targeted for testing:
 ovmf                 195e59bd0c60523caa415f429517e46ff7065600
baseline version:
 ovmf                 d65b183f92446a3a2855c1c7dd4a7a1b760af381

Last test of basis   184352  2024-01-15 09:42:45 Z    0 days
Testing same since   184356  2024-01-15 12:11:01 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Suqiang Ren <suqiangx.ren@intel.com>

jobs:
 build-amd64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-amd64-amd64-xl-qemuu-ovmf-amd64                         pass    
 test-amd64-i386-xl-qemuu-ovmf-amd64                          pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Pushing revision :

To xenbits.xen.org:/home/xen/git/osstest/ovmf.git
   d65b183f92..195e59bd0c  195e59bd0c60523caa415f429517e46ff7065600 -> xen-tested-master


From xen-devel-bounces@lists.xenproject.org Mon Jan 15 14:18:58 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 15 Jan 2024 14:18:58 +0000
Received: from list by lists.xenproject.org with outflank-mailman.667391.1038590 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPNnl-0002t5-Cu; Mon, 15 Jan 2024 14:18:57 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 667391.1038590; Mon, 15 Jan 2024 14:18:57 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPNnl-0002sy-9d; Mon, 15 Jan 2024 14:18:57 +0000
Received: by outflank-mailman (input) for mailman id 667391;
 Mon, 15 Jan 2024 14:18:55 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=Y0sJ=IZ=cloud.com=roger.pau@srs-se1.protection.inumbo.net>)
 id 1rPNnj-0002pr-9g
 for xen-devel@lists.xenproject.org; Mon, 15 Jan 2024 14:18:55 +0000
Received: from mail-lj1-x234.google.com (mail-lj1-x234.google.com
 [2a00:1450:4864:20::234])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 02bb5d8f-b3b1-11ee-9b0f-b553b5be7939;
 Mon, 15 Jan 2024 15:18:53 +0100 (CET)
Received: by mail-lj1-x234.google.com with SMTP id
 38308e7fff4ca-2cd17a979bcso98106641fa.0
 for <xen-devel@lists.xenproject.org>; Mon, 15 Jan 2024 06:18:53 -0800 (PST)
Received: from localhost ([213.195.127.68]) by smtp.gmail.com with ESMTPSA id
 fd4-20020a056402388400b0055864f99f78sm5474688edb.20.2024.01.15.06.18.52
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 15 Jan 2024 06:18:52 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 02bb5d8f-b3b1-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1705328332; x=1705933132; darn=lists.xenproject.org;
        h=content-transfer-encoding:mime-version:message-id:date:subject:cc
         :to:from:from:to:cc:subject:date:message-id:reply-to;
        bh=AuHUCtOs8INlwemCFope66L95sEtEz/jPkygbDkFePw=;
        b=h2pO5/iltnZIvf3sAQi8z+lZ1cHiiq5Gc0mrtOyDuLcDZdsmQtYxMGoOSj1GkmTTSc
         gBtchoMgGo/imG5FXt0qowL6cokITgiFtQTvr1Uop/DjQmoDAak6Wzbj0A9iWaYjou4j
         6jLqlF2v5fI9B91VHvE3AD2LFr007eOssKkRY=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705328332; x=1705933132;
        h=content-transfer-encoding:mime-version:message-id:date:subject:cc
         :to:from:x-gm-message-state:from:to:cc:subject:date:message-id
         :reply-to;
        bh=AuHUCtOs8INlwemCFope66L95sEtEz/jPkygbDkFePw=;
        b=vsFDt5z+W7mypUXmadR/iFNn4iDqt+/GsOalK6Gn6/9+pk5NrVfI1RFZjvPDVqFeO3
         FmfvMQvZIgbuXAJ3SRbqZRpUoO2gU+skoVVCizGL87menBnDhiA/ZUp6nhz7bXwE9clG
         whBeu2mkCKPwymWqTgqhsusoUSVYNn/JK4jonBMFgH04dA+ZzHio+nF2xVpiPkxjZ7YQ
         WRY4tJ1q4Z/+omRC1pAm1K62wgPN0fqijZ2IQ7mfGm/6XbTUVJDi0TQPLVOUR1ZhSft0
         PS8HeszhseW8tg9wD6zhnn+v09gMubBXeJRThjlUEUGaamaR2A/m6m7gY5xHhvWyEKsr
         1XoA==
X-Gm-Message-State: AOJu0YwE7PceX5Ujn4QRRxe5GUm2t4YZ1vK6m+rUXTpUBIpL4MODnhnu
	mP226TbsQwFRkyYZMb3UN6Fs1pWArFfH6ft4iMsLwkyq87M=
X-Google-Smtp-Source: AGHT+IFjGNVN7FCjgS9OJbnihs1hc8dxQVYMIEx8XTy8Og+w+wVtvxgTQsYGpbPK63Zr0HxUIfb6Qg==
X-Received: by 2002:a2e:9c09:0:b0:2cd:1e40:2903 with SMTP id s9-20020a2e9c09000000b002cd1e402903mr1126477lji.26.1705328332512;
        Mon, 15 Jan 2024 06:18:52 -0800 (PST)
From: Roger Pau Monne <roger.pau@citrix.com>
To: xen-devel@lists.xenproject.org
Cc: anthony.perard@citrix.com,
	iwj@xenproject.org,
	Roger Pau Monne <roger.pau@citrix.com>,
	Jan Beulich <jbeulich@suse.com>
Subject: [PATCH] osstest: bump /boot partition to 1G
Date: Mon, 15 Jan 2024 15:18:37 +0100
Message-ID: <20240115141837.82983-1-roger.pau@citrix.com>
X-Mailer: git-send-email 2.43.0
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Increase the size of the boot partition, as arm64 initrd is already exhausting
all the space:

update-initramfs: Generating /boot/initrd.img-6.7.0+
gzip: stdout: No space left on device

Reported-by: Jan Beulich <jbeulich@suse.com>
Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
---
 Osstest.pm | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/Osstest.pm b/Osstest.pm
index 7776ba88c6e2..a559ca4ea8b6 100644
--- a/Osstest.pm
+++ b/Osstest.pm
@@ -94,7 +94,7 @@ our %c = qw(
     HostProp_GenEtherPrefixBase 5e:36:0e:f5
 
     HostDiskESP    300
-    HostDiskBoot   300
+    HostDiskBoot  1000
     HostDiskRoot 20000
     HostDiskSwap  2000
 
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Mon Jan 15 14:28:30 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 15 Jan 2024 14:28:30 +0000
Received: from list by lists.xenproject.org with outflank-mailman.667396.1038600 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPNww-0004sO-A9; Mon, 15 Jan 2024 14:28:26 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 667396.1038600; Mon, 15 Jan 2024 14:28:26 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPNww-0004sG-4J; Mon, 15 Jan 2024 14:28:26 +0000
Received: by outflank-mailman (input) for mailman id 667396;
 Mon, 15 Jan 2024 14:28:24 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rPNwu-0004rI-RV; Mon, 15 Jan 2024 14:28:24 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rPNwu-0004gp-Iy; Mon, 15 Jan 2024 14:28:24 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rPNwu-0007cf-8k; Mon, 15 Jan 2024 14:28:24 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rPNwu-0005Dy-8I; Mon, 15 Jan 2024 14:28:24 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=hCdsTsGBCXlXMPygsJrHXHSctuwlo7a0WbiSGDQ/DTI=; b=xLxRxXftrYwlaqrnmLgZJfpMcY
	3MeVlfA52fwZ5vQUt3rZpPNxw21bpGY6TZIgCn1xXc36/uCrkpCe2npu74vf6CRe/63BxLwPd0bLF
	5sP+e1gaXQqHO0paiGkS0ts++SeJFLD+QGklpbVuS74J0oFynt2TwAHQtOQYReEiHcgQ=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184355-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [xen-unstable-smoke test] 184355: tolerable all pass - PUSHED
X-Osstest-Failures:
    xen-unstable-smoke:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    xen-unstable-smoke:test-arm64-arm64-xl-xsm:migrate-support-check:fail:nonblocking
    xen-unstable-smoke:test-arm64-arm64-xl-xsm:saverestore-support-check:fail:nonblocking
    xen-unstable-smoke:test-armhf-armhf-xl:migrate-support-check:fail:nonblocking
    xen-unstable-smoke:test-armhf-armhf-xl:saverestore-support-check:fail:nonblocking
X-Osstest-Versions-This:
    xen=c2ce3466472e9c9eda79f5dc98eb701bc6fdba20
X-Osstest-Versions-That:
    xen=1ec3fe1f664fa837daf31e9fa8938f6109464f28
From: osstest service owner <osstest-admin@xenproject.org>
Date: Mon, 15 Jan 2024 14:28:24 +0000

flight 184355 xen-unstable-smoke real [real]
http://logs.test-lab.xenproject.org/osstest/logs/184355/

Failures :-/ but no regressions.

Tests which did not succeed, but are not blocking:
 test-amd64-amd64-libvirt     15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-xsm      15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-xsm      16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl          15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          16 saverestore-support-check    fail   never pass

version targeted for testing:
 xen                  c2ce3466472e9c9eda79f5dc98eb701bc6fdba20
baseline version:
 xen                  1ec3fe1f664fa837daf31e9fa8938f6109464f28

Last test of basis   184333  2024-01-12 12:03:48 Z    3 days
Testing same since   184355  2024-01-15 12:02:10 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Andrew Cooper <andrew.cooper3@citrix.com>
  Jan Beulich <jbeulich@suse.com>
  Oleksii Kurochko <oleksii.kurochko@gmail.com>
  Roger Pau Monné <roger.pau@citrix.com>

jobs:
 build-arm64-xsm                                              pass    
 build-amd64                                                  pass    
 build-armhf                                                  pass    
 build-amd64-libvirt                                          pass    
 test-armhf-armhf-xl                                          pass    
 test-arm64-arm64-xl-xsm                                      pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64                    pass    
 test-amd64-amd64-libvirt                                     pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Pushing revision :

To xenbits.xen.org:/home/xen/git/xen.git
   1ec3fe1f66..c2ce346647  c2ce3466472e9c9eda79f5dc98eb701bc6fdba20 -> smoke


From xen-devel-bounces@lists.xenproject.org Mon Jan 15 14:30:47 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 15 Jan 2024 14:30:47 +0000
Received: from list by lists.xenproject.org with outflank-mailman.667401.1038610 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPNzC-0006iI-Jo; Mon, 15 Jan 2024 14:30:46 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 667401.1038610; Mon, 15 Jan 2024 14:30:46 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPNzC-0006iB-GP; Mon, 15 Jan 2024 14:30:46 +0000
Received: by outflank-mailman (input) for mailman id 667401;
 Mon, 15 Jan 2024 14:30:45 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=jLm1=IZ=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rPNzB-0006hz-Da
 for xen-devel@lists.xenproject.org; Mon, 15 Jan 2024 14:30:45 +0000
Received: from mail-wm1-x335.google.com (mail-wm1-x335.google.com
 [2a00:1450:4864:20::335])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id aa818fff-b3b2-11ee-98f1-6d05b1d4d9a1;
 Mon, 15 Jan 2024 15:30:44 +0100 (CET)
Received: by mail-wm1-x335.google.com with SMTP id
 5b1f17b1804b1-40e68d0dbf9so28487865e9.2
 for <xen-devel@lists.xenproject.org>; Mon, 15 Jan 2024 06:30:44 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 b6-20020adfee86000000b00337478efa4fsm11982183wro.60.2024.01.15.06.30.42
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 15 Jan 2024 06:30:43 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: aa818fff-b3b2-11ee-98f1-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1705329044; x=1705933844; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:content-language
         :references:cc:to:subject:from:user-agent:mime-version:date
         :message-id:from:to:cc:subject:date:message-id:reply-to;
        bh=khlMCG6Lb9J8bmE3Xh+hVWhqFVltOB8R4ef78zKo+9U=;
        b=LnC3HeGDQtIytKDnD/xHpGzbfSEaTismMZzNpA4HXXyhDiTwhOxRhvOHS/mK1TDmD1
         bkTw5tcCOcHVAs0LzdsrgEpD+ZEmsrYBwJ9tBKe/FqxpSrq6YCr6gD9luWVEMrv6Q1bN
         TKXuTTPIcoMmYvC5E/GHaRxmPI48sgF66VgEJVUh0KPc+OUsCOlKtUtpkuXjg0YwhD7Z
         KyvlyItgfd2mIPps+qQj+1MHAbzQ4R1qPPAxXBlWUDf7hvdYfwWJOKwvUNDkkCSZxlyy
         dn/0lx9AKxSjO8lZAwpb0mB+sEJJ5jSEFVIGk5OvV8sD3ei63ceJzjnUQ9ZpgccuWfMb
         Pmcg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705329044; x=1705933844;
        h=content-transfer-encoding:in-reply-to:autocrypt:content-language
         :references:cc:to:subject:from:user-agent:mime-version:date
         :message-id:x-gm-message-state:from:to:cc:subject:date:message-id
         :reply-to;
        bh=khlMCG6Lb9J8bmE3Xh+hVWhqFVltOB8R4ef78zKo+9U=;
        b=h7Wgc5HsXStyUUj/AeWFh7ANe3khVKGzYnTNdzyyJxWDVxWBEYTP2KQ9/4oST3tP4H
         SYxwGkvXBxLbAvaBMQ6GNAkOPgpk2WdE9yYVRDwGLxk7nzq96+paY59oGxjOrafoJU2A
         YqVMsor8QS9pAjnRhYKZVWrWEOKDLuAYpo+hpvXOwQ3EMOLj36N4ugnmvOWJY0gYNHP9
         GQ69vGx+tqSyJveB5usJQpxhe5UMr0ZPCpv3zDcK1pdvh6qg+ApPnHZb9omtb3AYakEl
         n9+El+0Mw+e2jntJFmQEBbam4kqij239JmFIPFRbAvyiuKduamZjseGsEhoI7TdyDzme
         xyMg==
X-Gm-Message-State: AOJu0YwITzRfA4qXNqDgyKttrc5IS/1GkOC7zfrsS44PGGw9CxBFb0s3
	RrKqk3Cadl4Tkp8dnd2SkLX1XkH1t1+Sxfg/7ofp4JZC3w==
X-Google-Smtp-Source: AGHT+IGGTk/AZfU1HlLk7T4DHAEWlJvMqBUGMer07PXDHh/9j0zmLR+TdI+25dEFTVPC02HRca/6pQ==
X-Received: by 2002:a05:600c:154d:b0:40e:621a:bfca with SMTP id f13-20020a05600c154d00b0040e621abfcamr1555400wmg.30.1705329043676;
        Mon, 15 Jan 2024 06:30:43 -0800 (PST)
Message-ID: <7a133ed9-9d13-4e2c-893a-00c083c8a35d@suse.com>
Date: Mon, 15 Jan 2024 15:30:42 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
From: Jan Beulich <jbeulich@suse.com>
Subject: [PATCH v5 0/8] annotate entry points with type and size
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, Wei Liu <wl@xen.org>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Julien Grall <julien@xen.org>, Stefano Stabellini <sstabellini@kernel.org>,
 Volodymyr Babchuk <volodymyr_babchuk@epam.com>,
 Bertrand Marquis <bertrand.marquis@arm.com>,
 Bobby Eshleman <bobbyeshleman@gmail.com>,
 Alistair Francis <alistair.francis@wdc.com>,
 Connor Davis <connojdavis@gmail.com>,
 George Dunlap <george.dunlap@citrix.com>,
 Shawn Anastasio <sanastasio@raptorengineering.com>,
 Michal Orzel <michal.orzel@amd.com>
References: <e4bf47ca-2ae6-1fd4-56a6-e4e777150b64@suse.com>
Content-Language: en-US
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <e4bf47ca-2ae6-1fd4-56a6-e4e777150b64@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

The model introduced in patch 1 is now arch-agnostic, and all arch-es
are being switched at least partly (to at least give examples of how
things will look like); PPC and RISC-V are still small enough to switch
completely in one go.

1: common: assembly entry point type/size annotations
2: x86: annotate entry points with type and size
3: x86: also mark assembler globals hidden
4: Arm: annotate entry points with type and size
5: RISC-V: annotate entry points with type and size
6: PPC: switch entry point annotations to common model
7: tools/binfile: switch to common annotations model
8: common: honor CONFIG_CC_SPLIT_SECTIONS also for assembly functions

Jan


From xen-devel-bounces@lists.xenproject.org Mon Jan 15 14:34:19 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 15 Jan 2024 14:34:19 +0000
Received: from list by lists.xenproject.org with outflank-mailman.667405.1038620 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPO2W-0007LL-1J; Mon, 15 Jan 2024 14:34:12 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 667405.1038620; Mon, 15 Jan 2024 14:34:12 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPO2V-0007LE-Ta; Mon, 15 Jan 2024 14:34:11 +0000
Received: by outflank-mailman (input) for mailman id 667405;
 Mon, 15 Jan 2024 14:34:10 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=jLm1=IZ=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rPO2U-0007L8-Jg
 for xen-devel@lists.xenproject.org; Mon, 15 Jan 2024 14:34:10 +0000
Received: from mail-wr1-x435.google.com (mail-wr1-x435.google.com
 [2a00:1450:4864:20::435])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 244fb6bd-b3b3-11ee-9b0f-b553b5be7939;
 Mon, 15 Jan 2024 15:34:08 +0100 (CET)
Received: by mail-wr1-x435.google.com with SMTP id
 ffacd0b85a97d-336990fb8fbso6981551f8f.1
 for <xen-devel@lists.xenproject.org>; Mon, 15 Jan 2024 06:34:08 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 j27-20020adfb31b000000b00336e32338f3sm12166221wrd.70.2024.01.15.06.34.05
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 15 Jan 2024 06:34:06 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 244fb6bd-b3b3-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1705329248; x=1705934048; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:content-language
         :references:cc:to:from:subject:user-agent:mime-version:date
         :message-id:from:to:cc:subject:date:message-id:reply-to;
        bh=DhGYC5xunoV+JtWHCdjOaB9LbyhgNpSYq/w1/ajKmNQ=;
        b=gYOwCgSVWGQxiWxu068OA3ETFHZSPuSndxT5wxwx07sCC3alnGPjtQOvwkshFy2VXT
         3BtthMrcI8Pdvqka8V7hDDBqYO0VlbfJqtNkBwt5Iy3uBcnhhMh5cGwLZGo5qevbDOMA
         wMVFeRvUj1jG5LIaH2io96+JcbGvEvzI2VzFTTOQwi8mu3ePiNDcGjNdBsNv3wEsdOcM
         lRMnsjFIxKcPCqWcfwSxELAoqeKKvGG45LZxjSsdRDU4JiwOXssYOd7eMcMHqEbgrtSX
         g94sVL8EKITc7TiIxoxUYitlkFHWwe7b06WeHnuY9VzBtKHEhx0KAXv5UOJ4tCKxpmtr
         Uu4A==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705329248; x=1705934048;
        h=content-transfer-encoding:in-reply-to:autocrypt:content-language
         :references:cc:to:from:subject:user-agent:mime-version:date
         :message-id:x-gm-message-state:from:to:cc:subject:date:message-id
         :reply-to;
        bh=DhGYC5xunoV+JtWHCdjOaB9LbyhgNpSYq/w1/ajKmNQ=;
        b=B5zHUScJAxe9mJiqvM/0Qu0qx1hH8gygvgPrQjOxheVbZJT+OX1dFHfQjxoJrvZYbx
         xYLwDigoiEmIaniG2mrsJVsJWE149wy2KytM01BbObTAuisny/txBcF6VHiBlCrq0dED
         hgTSIjBD/Zp+zI4L3FUZJDLQ5O5OWK1ac/VbYEAmEDafcLopZe4f3upFyUNkbqP8SIrM
         xXn3ETKjKvTuJdXIukE+M2iQaD2rmqlnX7MW75lobN9csJvcx4B6kwKDdFP/d6mmtk8y
         lzBzY7j7ZcOusiUuGFC/F+hSM4Y0P7Vog3yrJRtCh1RrFFjbxrD/vfofIQHBPPfWolZw
         HCSA==
X-Gm-Message-State: AOJu0YwNj4MsnBpeDBXEddnlGOwrTMGuJeS550ZNARTuQealgDmyTLSD
	i7vSUDNIxAF6oHe0Th4K52u+vQWp8aZTMGdwk0u44T6rjw==
X-Google-Smtp-Source: AGHT+IEbL4YAIAz4BJr2LEx28p98YovKKsD5FVF4ZkpcxIETid1bcqstUeK/zBjnrNRHsIaBFDSFkg==
X-Received: by 2002:a05:6000:91:b0:337:4202:6166 with SMTP id m17-20020a056000009100b0033742026166mr3560027wrx.80.1705329246587;
        Mon, 15 Jan 2024 06:34:06 -0800 (PST)
Message-ID: <38de36da-0822-4452-9594-8d50a5a77335@suse.com>
Date: Mon, 15 Jan 2024 15:34:05 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: [PATCH v5 1/8] common: assembly entry point type/size annotations
From: Jan Beulich <jbeulich@suse.com>
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, Wei Liu <wl@xen.org>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Julien Grall <julien@xen.org>, Stefano Stabellini <sstabellini@kernel.org>,
 George Dunlap <george.dunlap@citrix.com>
References: <e4bf47ca-2ae6-1fd4-56a6-e4e777150b64@suse.com>
 <7a133ed9-9d13-4e2c-893a-00c083c8a35d@suse.com>
Content-Language: en-US
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <7a133ed9-9d13-4e2c-893a-00c083c8a35d@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

Recent gas versions generate minimalistic Dwarf debug info for items
annotated as functions and having their sizes specified [1]. Furthermore
generating live patches wants items properly annotated. "Borrow" Arm's
END() and (remotely) derive other annotation infrastructure from
Linux'es, for all architectures to use.

Signed-off-by: Jan Beulich <jbeulich@suse.com>

[1] https://sourceware.org/git?p=binutils-gdb.git;a=commitdiff;h=591cc9fbbfd6d51131c0f1d4a92e7893edcc7a28
---
v5: Drop CODE_ALIGN fallback. s/algn/align/g.
v3: New, generalized from earlier x86-only version. LAST() (now
    LASTARG()) moved to macros.h.
---
TBD: {CODE,DATA}_ALIGN are byte granular, such that a value of 0 can be
     specified (in case this has some special meaning on an arch;
     conceivably it could mean to use some kind of arch default). We may
     not strictly need that, and hence we could also make these power-
     of-2 values (using .p2align).

Note that we can't use ALIGN() (in place of SYM_ALIGN()) as long as we
still have ALIGN.

Note further that FUNC()'s etc "align" parameter is intended to allow
for only no or a single argument. If we wanted to also make the fill
value customizable per call site, the constructs would need re-doing to
some degree.

--- /dev/null
+++ b/xen/include/xen/linkage.h
@@ -0,0 +1,54 @@
+#ifndef __LINKAGE_H__
+#define __LINKAGE_H__
+
+#ifdef __ASSEMBLY__
+
+#include <xen/macros.h>
+
+/* CODE_ALIGN needs to be specified by every architecture. */
+#ifndef CODE_FILL
+# define CODE_FILL ~0
+#endif
+
+#ifndef DATA_ALIGN
+# define DATA_ALIGN 0
+#endif
+#ifndef DATA_FILL
+# define DATA_FILL ~0
+#endif
+
+#define SYM_ALIGN(align...) .balign align
+
+#define SYM_L_GLOBAL(name) .globl name
+#define SYM_L_WEAK(name)   .weak name
+#define SYM_L_LOCAL(name)  /* nothing */
+
+#define SYM_T_FUNC         STT_FUNC
+#define SYM_T_DATA         STT_OBJECT
+#define SYM_T_NONE         STT_NOTYPE
+
+#define SYM(name, typ, linkage, align...)         \
+        .type name, SYM_T_ ## typ;                \
+        SYM_L_ ## linkage(name);                  \
+        SYM_ALIGN(align);                         \
+        name:
+
+#define END(name) .size name, . - name
+
+#define FUNC(name, align...) \
+        SYM(name, FUNC, GLOBAL, LASTARG(CODE_ALIGN, ## align), CODE_FILL)
+#define LABEL(name, align...) \
+        SYM(name, NONE, GLOBAL, LASTARG(CODE_ALIGN, ## align), CODE_FILL)
+#define DATA(name, align...) \
+        SYM(name, DATA, GLOBAL, LASTARG(DATA_ALIGN, ## align), DATA_FILL)
+
+#define FUNC_LOCAL(name, align...) \
+        SYM(name, FUNC, LOCAL, LASTARG(CODE_ALIGN, ## align), CODE_FILL)
+#define LABEL_LOCAL(name, align...) \
+        SYM(name, NONE, LOCAL, LASTARG(CODE_ALIGN, ## align), CODE_FILL)
+#define DATA_LOCAL(name, align...) \
+        SYM(name, DATA, LOCAL, LASTARG(DATA_ALIGN, ## align), DATA_FILL)
+
+#endif /*  __ASSEMBLY__ */
+
+#endif /* __LINKAGE_H__ */
--- a/xen/include/xen/macros.h
+++ b/xen/include/xen/macros.h
@@ -21,6 +21,15 @@
 #define count_args(args...) \
     count_args_(., ## args, 8, 7, 6, 5, 4, 3, 2, 1, 0)
 
+#define ARG1_(x, y...) (x)
+#define ARG2_(x, y...) ARG1_(y)
+#define ARG3_(x, y...) ARG2_(y)
+#define ARG4_(x, y...) ARG3_(y)
+
+#define ARG__(nr) ARG ## nr ## _
+#define ARG_(nr)  ARG__(nr)
+#define LASTARG(x, y...) ARG_(count_args(x, ## y))(x, ## y)
+
 /* Indirect macros required for expanded argument pasting. */
 #define PASTE_(a, b) a ## b
 #define PASTE(a, b) PASTE_(a, b)



From xen-devel-bounces@lists.xenproject.org Mon Jan 15 14:35:00 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 15 Jan 2024 14:35:00 +0000
Received: from list by lists.xenproject.org with outflank-mailman.667409.1038629 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPO3I-0007t4-BU; Mon, 15 Jan 2024 14:35:00 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 667409.1038629; Mon, 15 Jan 2024 14:35:00 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPO3I-0007sx-8m; Mon, 15 Jan 2024 14:35:00 +0000
Received: by outflank-mailman (input) for mailman id 667409;
 Mon, 15 Jan 2024 14:34:58 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=jLm1=IZ=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rPO3G-0007gY-LG
 for xen-devel@lists.xenproject.org; Mon, 15 Jan 2024 14:34:58 +0000
Received: from mail-wm1-x330.google.com (mail-wm1-x330.google.com
 [2a00:1450:4864:20::330])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 418a30d1-b3b3-11ee-98f1-6d05b1d4d9a1;
 Mon, 15 Jan 2024 15:34:57 +0100 (CET)
Received: by mail-wm1-x330.google.com with SMTP id
 5b1f17b1804b1-40e7fb927a3so4172055e9.3
 for <xen-devel@lists.xenproject.org>; Mon, 15 Jan 2024 06:34:57 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 j27-20020adfb31b000000b00336e32338f3sm12166221wrd.70.2024.01.15.06.34.56
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 15 Jan 2024 06:34:56 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 418a30d1-b3b3-11ee-98f1-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1705329297; x=1705934097; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:references:cc:to
         :from:content-language:subject:user-agent:mime-version:date
         :message-id:from:to:cc:subject:date:message-id:reply-to;
        bh=kdcFdpBiOv5Ief4bXCoTgvxcM2tE3ReF1qPR03/fxTY=;
        b=ZHWVWgLb+RTLiEt6Yap+F3IHerhJO8mTsyV6kHKv86UZrLDZ7ljktWDgk6P6Evxm24
         LlhFVSbgJ8oDsseWNQFcY912a5mLVSyhxt/eUsjcDiC9rQneASJLLsl0Vg0HC9L9OjMd
         CJ5b7rpmQQnQoUZQOQm4hkGEkFL4F3wV5/WHAkff47o6bH3M296qKkLF547Q5383UZfM
         KRu6Qy7WnwfWTVlD6izFfhiFwMht3IdWPi6BzmK668SWEw1r9TGKDmM3OWba7C2P1+mp
         AKvij5EczG7aiWhYYXnbxbToRoksXXG/8XV7v2kIJMzw5q0pVd8037+nSr5af7d7zvKN
         9Gxg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705329297; x=1705934097;
        h=content-transfer-encoding:in-reply-to:autocrypt:references:cc:to
         :from:content-language:subject:user-agent:mime-version:date
         :message-id:x-gm-message-state:from:to:cc:subject:date:message-id
         :reply-to;
        bh=kdcFdpBiOv5Ief4bXCoTgvxcM2tE3ReF1qPR03/fxTY=;
        b=TeMQQDE9K+ftjLGqvrMfygTJMS9r//iHPqWilq0+/x+cx772EiiJc3uUJXlYGcIIeE
         sQSbQ2HI3ew/HYOUju0J3KpH/z2Nihef4N/y9PiHeqH9Pw5vanfUcE85TSxQzNcufDOr
         +wObGwmlmOiqlr3NxxepSpixz0Y1VThZLqgrJlcbNshxnErYdkYws/A02sQjofXZm2J0
         f36VnpGa4drllbnlNfrEANVYZfCQdidtm9N5oP9IAn3+dGhD0A41kFl8i6dOssEHvAQ1
         7CfgclKxIDgrlRUSsjteiqxSdBTsuj7TJ5NfSFxL6HB17ye4U91e81kzQ2D0IbIa81lO
         3XDg==
X-Gm-Message-State: AOJu0YxIxP4hMzEjuBJj8AYxdtY3bYU1YbclTprgv9MtpWnRWOjQKv4v
	TXwLlNWjcdZX3q+NCclO4Ltr2MiDbjjSAYSqJodHPitYvw==
X-Google-Smtp-Source: AGHT+IG6HDtHXNVAxNe3LNwf/lfwnlq/riqmAt11HlHUKGz4GjGi63Byw/qUV1MnEYYwxA9N3RMc/w==
X-Received: by 2002:a05:600c:1d26:b0:40e:61f1:ba3 with SMTP id l38-20020a05600c1d2600b0040e61f10ba3mr2820851wms.36.1705329296994;
        Mon, 15 Jan 2024 06:34:56 -0800 (PST)
Message-ID: <9096ad1a-5d86-4dd1-a7c3-6ad2f7e5a623@suse.com>
Date: Mon, 15 Jan 2024 15:34:56 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: [PATCH v5 2/8] x86: annotate entry points with type and size
Content-Language: en-US
From: Jan Beulich <jbeulich@suse.com>
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, Wei Liu <wl@xen.org>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 George Dunlap <george.dunlap@citrix.com>
References: <e4bf47ca-2ae6-1fd4-56a6-e4e777150b64@suse.com>
 <7a133ed9-9d13-4e2c-893a-00c083c8a35d@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <7a133ed9-9d13-4e2c-893a-00c083c8a35d@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

Use the generic framework in xen/linkage.h.

For switch_to_kernel() and restore_all_guest() so far implicit alignment
(from being first in their respective sections) is being made explicit
(as in: using FUNC() without 2nd argument). Whereas for
{,compat}create_bounce_frame() and autogen_entrypoints[] alignment is
newly arranged for.

Except for the added/adjusted alignment padding (including their
knock-on effects) no change in generated code/data. Note that the basis
for support of weak definitions is added despite them not having any use
right now.

Note that ASM_INT() is switched to DATA(), not DATA_LOCAL(), as the only
use site wants the symbol global anyway.

Signed-off-by: Jan Beulich <jbeulich@suse.com>
---
v5: Re-base.
v4: Correct simd_coprocessor_error's (now entry_XM) END(). Re-base.
v3: !PV variant of ret_from_intr is local. Introduction of macros split
    off to separate patch. Also adjust ASM_INT(). Re-base.
v2: Full rework.
---
Only two of the assembly files are being converted for now. More could
be done right here or as follow-on in separate patches.

Note that the FB-label in autogen_stubs() cannot be converted just yet:
Such labels cannot be used with .type. We could further diverge from
Linux'es model and avoid setting STT_NOTYPE explicitly (that's the type
labels get by default anyway).

The ASM_INT() redundancy of .global will be eliminated by a subsequent
patch.

I didn't think that I should make CODE_FILL evaluate to 0xCC right here;
IMO that wants to be a separate patch.

--- a/xen/arch/x86/include/asm/asm_defns.h
+++ b/xen/arch/x86/include/asm/asm_defns.h
@@ -13,6 +13,7 @@
 #include <asm/alternative.h>
 
 #ifdef __ASSEMBLY__
+#include <xen/linkage.h>
 #include <asm/asm-defns.h>
 #ifndef CONFIG_INDIRECT_THUNK
 .equ CONFIG_INDIRECT_THUNK, 0
@@ -343,10 +344,7 @@ static always_inline void stac(void)
     .popsection
 
 #define ASM_INT(label, val)                 \
-    .p2align 2;                             \
-label: .long (val);                         \
-    .size label, . - label;                 \
-    .type label, @object
+    DATA(label, 4) .long (val); END(label)
 
 #define ASM_CONSTANT(name, value)                \
     asm ( ".equ " #name ", %P0; .global " #name  \
--- a/xen/arch/x86/include/asm/config.h
+++ b/xen/arch/x86/include/asm/config.h
@@ -43,7 +43,9 @@
 
 /* Linkage for x86 */
 #ifdef __ASSEMBLY__
-#define ALIGN .align 16,0x90
+#define CODE_ALIGN 16
+#define CODE_FILL 0x90
+#define ALIGN .align CODE_ALIGN, CODE_FILL
 #define ENTRY(name)                             \
   .globl name;                                  \
   ALIGN;                                        \
--- a/xen/arch/x86/x86_64/compat/entry.S
+++ b/xen/arch/x86/x86_64/compat/entry.S
@@ -11,7 +11,7 @@
 #include <public/xen.h>
 #include <irq_vectors.h>
 
-ENTRY(entry_int82)
+FUNC(entry_int82)
         ENDBR64
         ALTERNATIVE "", clac, X86_FEATURE_XEN_SMAP
         pushq $0
@@ -29,9 +29,10 @@ ENTRY(entry_int82)
 
         mov   %rsp, %rdi
         call  do_entry_int82
+END(entry_int82)
 
 /* %rbx: struct vcpu */
-ENTRY(compat_test_all_events)
+FUNC(compat_test_all_events)
         ASSERT_NOT_IN_ATOMIC
         cli                             # tests must not race interrupts
 /*compat_test_softirqs:*/
@@ -68,24 +69,21 @@ compat_test_guest_events:
         call  compat_create_bounce_frame
         jmp   compat_test_all_events
 
-        ALIGN
 /* %rbx: struct vcpu */
-compat_process_softirqs:
+LABEL_LOCAL(compat_process_softirqs)
         sti
         call  do_softirq
         jmp   compat_test_all_events
 
-        ALIGN
 /* %rbx: struct vcpu, %rdx: struct trap_bounce */
-.Lcompat_process_trapbounce:
+LABEL_LOCAL(.Lcompat_process_trapbounce)
         sti
 .Lcompat_bounce_exception:
         call  compat_create_bounce_frame
         jmp   compat_test_all_events
 
-	ALIGN
 /* %rbx: struct vcpu */
-compat_process_mce:
+LABEL_LOCAL(compat_process_mce)
         testb $1 << VCPU_TRAP_MCE,VCPU_async_exception_mask(%rbx)
         jnz   .Lcompat_test_guest_nmi
         sti
@@ -99,9 +97,8 @@ compat_process_mce:
         movb %dl,VCPU_async_exception_mask(%rbx)
         jmp   compat_process_trap
 
-	ALIGN
 /* %rbx: struct vcpu */
-compat_process_nmi:
+LABEL_LOCAL(compat_process_nmi)
         testb $1 << VCPU_TRAP_NMI,VCPU_async_exception_mask(%rbx)
         jnz   compat_test_guest_events
         sti
@@ -118,9 +115,10 @@ compat_process_trap:
         leaq  VCPU_trap_bounce(%rbx),%rdx
         call  compat_create_bounce_frame
         jmp   compat_test_all_events
+END(compat_test_all_events)
 
 /* %rbx: struct vcpu, interrupts disabled */
-ENTRY(compat_restore_all_guest)
+FUNC(compat_restore_all_guest)
         ASSERT_INTERRUPTS_DISABLED
         mov   $~(X86_EFLAGS_IOPL | X86_EFLAGS_VM), %r11d
         and   UREGS_eflags(%rsp),%r11d
@@ -163,9 +161,10 @@ ENTRY(compat_restore_all_guest)
         RESTORE_ALL adj=8 compat=1
 .Lft0:  iretq
         _ASM_PRE_EXTABLE(.Lft0, handle_exception)
+END(compat_restore_all_guest)
 
 /* This mustn't modify registers other than %rax. */
-ENTRY(cr4_pv32_restore)
+FUNC(cr4_pv32_restore)
         push  %rdx
         GET_CPUINFO_FIELD(cr4, dx)
         mov   (%rdx), %rax
@@ -195,8 +194,9 @@ ENTRY(cr4_pv32_restore)
         pop   %rdx
         xor   %eax, %eax
         ret
+END(cr4_pv32_restore)
 
-ENTRY(compat_syscall)
+FUNC(compat_syscall)
         /* Fix up reported %cs/%ss for compat domains. */
         movl  $FLAT_COMPAT_USER_SS, UREGS_ss(%rsp)
         movl  $FLAT_COMPAT_USER_CS, UREGS_cs(%rsp)
@@ -224,8 +224,9 @@ UNLIKELY_END(compat_syscall_gpf)
         movw  %si,TRAPBOUNCE_cs(%rdx)
         movb  %cl,TRAPBOUNCE_flags(%rdx)
         jmp   .Lcompat_bounce_exception
+END(compat_syscall)
 
-ENTRY(compat_sysenter)
+FUNC(compat_sysenter)
         CR4_PV32_RESTORE
         movq  VCPU_trap_ctxt(%rbx),%rcx
         cmpb  $X86_EXC_GP, UREGS_entry_vector(%rsp)
@@ -238,17 +239,19 @@ ENTRY(compat_sysenter)
         movw  %ax,TRAPBOUNCE_cs(%rdx)
         call  compat_create_bounce_frame
         jmp   compat_test_all_events
+END(compat_sysenter)
 
-ENTRY(compat_int80_direct_trap)
+FUNC(compat_int80_direct_trap)
         CR4_PV32_RESTORE
         call  compat_create_bounce_frame
         jmp   compat_test_all_events
+END(compat_int80_direct_trap)
 
 /* CREATE A BASIC EXCEPTION FRAME ON GUEST OS (RING-1) STACK:            */
 /*   {[ERRCODE,] EIP, CS, EFLAGS, [ESP, SS]}                             */
 /* %rdx: trap_bounce, %rbx: struct vcpu                                  */
 /* On return only %rbx and %rdx are guaranteed non-clobbered.            */
-compat_create_bounce_frame:
+FUNC_LOCAL(compat_create_bounce_frame)
         ASSERT_INTERRUPTS_ENABLED
         mov   %fs,%edi
         ALTERNATIVE "", stac, X86_FEATURE_XEN_SMAP
@@ -354,3 +357,4 @@ compat_crash_page_fault:
         jmp   .Lft14
 .previous
         _ASM_EXTABLE(.Lft14, .Lfx14)
+END(compat_create_bounce_frame)
--- a/xen/arch/x86/x86_64/entry.S
+++ b/xen/arch/x86/x86_64/entry.S
@@ -24,7 +24,7 @@
 
 #ifdef CONFIG_PV
 /* %rbx: struct vcpu */
-switch_to_kernel:
+FUNC_LOCAL(switch_to_kernel)
         leaq  VCPU_trap_bounce(%rbx),%rdx
 
         /* TB_eip = 32-bit syscall ? syscall32_addr : syscall_addr */
@@ -89,24 +89,21 @@ test_guest_events:
         call  create_bounce_frame
         jmp   test_all_events
 
-        ALIGN
 /* %rbx: struct vcpu */
-process_softirqs:
+LABEL_LOCAL(process_softirqs)
         sti
         call do_softirq
         jmp  test_all_events
 
-        ALIGN
 /* %rbx: struct vcpu, %rdx struct trap_bounce */
-.Lprocess_trapbounce:
+LABEL_LOCAL(.Lprocess_trapbounce)
         sti
 .Lbounce_exception:
         call  create_bounce_frame
         jmp   test_all_events
 
-        ALIGN
 /* %rbx: struct vcpu */
-process_mce:
+LABEL_LOCAL(process_mce)
         testb $1 << VCPU_TRAP_MCE, VCPU_async_exception_mask(%rbx)
         jnz  .Ltest_guest_nmi
         sti
@@ -120,9 +117,8 @@ process_mce:
         movb %dl, VCPU_async_exception_mask(%rbx)
         jmp  process_trap
 
-        ALIGN
 /* %rbx: struct vcpu */
-process_nmi:
+LABEL_LOCAL(process_nmi)
         testb $1 << VCPU_TRAP_NMI, VCPU_async_exception_mask(%rbx)
         jnz  test_guest_events
         sti
@@ -139,11 +135,12 @@ process_trap:
         leaq VCPU_trap_bounce(%rbx), %rdx
         call create_bounce_frame
         jmp  test_all_events
+END(switch_to_kernel)
 
         .section .text.entry, "ax", @progbits
 
 /* %rbx: struct vcpu, interrupts disabled */
-restore_all_guest:
+FUNC_LOCAL(restore_all_guest)
         ASSERT_INTERRUPTS_DISABLED
 
         /* Stash guest SPEC_CTRL value while we can read struct vcpu. */
@@ -220,8 +217,7 @@ restore_all_guest:
         sysretq
 1:      sysretl
 
-        ALIGN
-.Lrestore_rcx_iret_exit_to_guest:
+LABEL_LOCAL(.Lrestore_rcx_iret_exit_to_guest)
         movq  8(%rsp), %rcx           # RIP
 /* No special register assumptions. */
 iret_exit_to_guest:
@@ -230,6 +226,7 @@ iret_exit_to_guest:
         addq  $8,%rsp
 .Lft0:  iretq
         _ASM_PRE_EXTABLE(.Lft0, handle_exception)
+END(restore_all_guest)
 
 /*
  * When entering SYSCALL from kernel mode:
@@ -246,7 +243,7 @@ iret_exit_to_guest:
  *  - Guest %rsp stored in %rax
  *  - Xen stack loaded, pointing at the %ss slot
  */
-ENTRY(lstar_enter)
+FUNC(lstar_enter)
 #ifdef CONFIG_XEN_SHSTK
         ALTERNATIVE "", "setssbsy", X86_FEATURE_XEN_SHSTK
 #endif
@@ -281,9 +278,10 @@ ENTRY(lstar_enter)
         mov   %rsp, %rdi
         call  pv_hypercall
         jmp   test_all_events
+END(lstar_enter)
 
 /* See lstar_enter for entry register state. */
-ENTRY(cstar_enter)
+FUNC(cstar_enter)
 #ifdef CONFIG_XEN_SHSTK
         ALTERNATIVE "", "setssbsy", X86_FEATURE_XEN_SHSTK
 #endif
@@ -321,8 +319,9 @@ ENTRY(cstar_enter)
         jne   compat_syscall
 #endif
         jmp   switch_to_kernel
+END(cstar_enter)
 
-ENTRY(sysenter_entry)
+FUNC(sysenter_entry)
         ENDBR64
 #ifdef CONFIG_XEN_SHSTK
         ALTERNATIVE "", "setssbsy", X86_FEATURE_XEN_SHSTK
@@ -330,7 +329,7 @@ ENTRY(sysenter_entry)
         pushq $FLAT_USER_SS
         pushq $0
         pushfq
-GLOBAL(sysenter_eflags_saved)
+LABEL(sysenter_eflags_saved, 0)
         ALTERNATIVE "", clac, X86_FEATURE_XEN_SMAP
         pushq $3 /* ring 3 null cs */
         pushq $0 /* null rip */
@@ -384,8 +383,9 @@ UNLIKELY_END(sysenter_gpf)
         jne   compat_sysenter
 #endif
         jmp   .Lbounce_exception
+END(sysenter_entry)
 
-ENTRY(entry_int80)
+FUNC(entry_int80)
         ENDBR64
         ALTERNATIVE "", clac, X86_FEATURE_XEN_SMAP
         pushq $0
@@ -473,6 +473,7 @@ int80_slow_path:
          */
         GET_STACK_END(14)
         jmp   handle_exception_saved
+END(entry_int80)
 
         /* create_bounce_frame & helpers don't need to be in .text.entry */
         .text
@@ -481,7 +482,7 @@ int80_slow_path:
 /*   { RCX, R11, [ERRCODE,] RIP, CS, RFLAGS, RSP, SS }                   */
 /* %rdx: trap_bounce, %rbx: struct vcpu                                  */
 /* On return only %rbx and %rdx are guaranteed non-clobbered.            */
-create_bounce_frame:
+FUNC_LOCAL(create_bounce_frame)
         ASSERT_INTERRUPTS_ENABLED
         testb $TF_kernel_mode,VCPU_thread_flags(%rbx)
         jnz   1f
@@ -617,6 +618,7 @@ ENTRY(dom_crash_sync_extable)
         xorl  %edi,%edi
         jmp   asm_domain_crash_synchronous /* Does not return */
         .popsection
+END(create_bounce_frame)
 #endif /* CONFIG_PV */
 
 /* --- CODE BELOW THIS LINE (MOSTLY) NOT GUEST RELATED --- */
@@ -625,7 +627,7 @@ ENTRY(dom_crash_sync_extable)
 
 /* No special register assumptions. */
 #ifdef CONFIG_PV
-ENTRY(continue_pv_domain)
+FUNC(continue_pv_domain)
         ENDBR64
         call  check_wakeup_from_wait
 ret_from_intr:
@@ -640,26 +642,28 @@ ret_from_intr:
 #else
         jmp   test_all_events
 #endif
+END(continue_pv_domain)
 #else
-ret_from_intr:
+FUNC_LOCAL(ret_from_intr, 0)
         ASSERT_CONTEXT_IS_XEN
         jmp   restore_all_xen
+END(ret_from_intr)
 #endif
 
         .section .init.text, "ax", @progbits
-ENTRY(early_page_fault)
+FUNC(early_page_fault)
         ENDBR64
         movl  $X86_EXC_PF, 4(%rsp)
         SAVE_ALL
         movq  %rsp, %rdi
         call  do_early_page_fault
         jmp   restore_all_xen
+END(early_page_fault)
 
         .section .text.entry, "ax", @progbits
 
-        ALIGN
 /* %r12=ist_exit */
-restore_all_xen:
+FUNC_LOCAL(restore_all_xen)
 
 #ifdef CONFIG_DEBUG
         mov   %rsp, %rdi
@@ -683,8 +687,9 @@ UNLIKELY_END(exit_cr3)
 
         RESTORE_ALL adj=8
         iretq
+END(restore_all_xen)
 
-ENTRY(common_interrupt)
+FUNC(common_interrupt)
         ALTERNATIVE "", clac, X86_FEATURE_XEN_SMAP
         SAVE_ALL
 
@@ -713,12 +718,14 @@ ENTRY(common_interrupt)
         mov   %r15, STACK_CPUINFO_FIELD(xen_cr3)(%r14)
         mov   %bl, STACK_CPUINFO_FIELD(use_pv_cr3)(%r14)
         jmp ret_from_intr
+END(common_interrupt)
 
-ENTRY(entry_PF)
+FUNC(entry_PF)
         ENDBR64
         movl  $X86_EXC_PF, 4(%rsp)
+END(entry_PF)
 /* No special register assumptions. */
-GLOBAL(handle_exception)
+FUNC(handle_exception, 0)
         ALTERNATIVE "", clac, X86_FEATURE_XEN_SMAP
         SAVE_ALL
 
@@ -886,92 +893,108 @@ FATAL_exception_with_ints_disabled:
         xorl  %esi,%esi
         movq  %rsp,%rdi
         tailcall fatal_trap
+END(handle_exception)
 
-ENTRY(entry_DE)
+FUNC(entry_DE)
         ENDBR64
         pushq $0
         movl  $X86_EXC_DE, 4(%rsp)
         jmp   handle_exception
+END(entry_DE)
 
-ENTRY(entry_MF)
+FUNC(entry_MF)
         ENDBR64
         pushq $0
         movl  $X86_EXC_MF, 4(%rsp)
         jmp   handle_exception
+END(entry_MF)
 
-ENTRY(entry_XM)
+FUNC(entry_XM)
         ENDBR64
         pushq $0
         movl  $X86_EXC_XM, 4(%rsp)
         jmp   handle_exception
+END(entry_XM)
 
-ENTRY(entry_NM)
+FUNC(entry_NM)
         ENDBR64
         pushq $0
         movl  $X86_EXC_NM, 4(%rsp)
         jmp   handle_exception
+END(entry_NM)
 
-ENTRY(entry_DB)
+FUNC(entry_DB)
         ENDBR64
         pushq $0
         movl  $X86_EXC_DB, 4(%rsp)
         jmp   handle_ist_exception
+END(entry_DB)
 
-ENTRY(entry_BP)
+FUNC(entry_BP)
         ENDBR64
         pushq $0
         movl  $X86_EXC_BP, 4(%rsp)
         jmp   handle_exception
+END(entry_BP)
 
-ENTRY(entry_OF)
+FUNC(entry_OF)
         ENDBR64
         pushq $0
         movl  $X86_EXC_OF, 4(%rsp)
         jmp   handle_exception
+END(entry_OF)
 
-ENTRY(entry_BR)
+FUNC(entry_BR)
         ENDBR64
         pushq $0
         movl  $X86_EXC_BR, 4(%rsp)
         jmp   handle_exception
+END(entry_BR)
 
-ENTRY(entry_UD)
+FUNC(entry_UD)
         ENDBR64
         pushq $0
         movl  $X86_EXC_UD, 4(%rsp)
         jmp   handle_exception
+END(entry_UD)
 
-ENTRY(entry_TS)
+FUNC(entry_TS)
         ENDBR64
         movl  $X86_EXC_TS, 4(%rsp)
         jmp   handle_exception
+END(entry_TS)
 
-ENTRY(entry_NP)
+FUNC(entry_NP)
         ENDBR64
         movl  $X86_EXC_NP, 4(%rsp)
         jmp   handle_exception
+END(entry_NP)
 
-ENTRY(entry_SS)
+FUNC(entry_SS)
         ENDBR64
         movl  $X86_EXC_SS, 4(%rsp)
         jmp   handle_exception
+END(entry_SS)
 
-ENTRY(entry_GP)
+FUNC(entry_GP)
         ENDBR64
         movl  $X86_EXC_GP, 4(%rsp)
         jmp   handle_exception
+END(entry_GP)
 
-ENTRY(entry_AC)
+FUNC(entry_AC)
         ENDBR64
         movl  $X86_EXC_AC, 4(%rsp)
         jmp   handle_exception
+END(entry_AC)
 
-ENTRY(entry_CP)
+FUNC(entry_CP)
         ENDBR64
         movl  $X86_EXC_CP, 4(%rsp)
         jmp   handle_exception
+END(entry_CP)
 
-ENTRY(entry_DF)
+FUNC(entry_DF)
         ENDBR64
         movl  $X86_EXC_DF, 4(%rsp)
         /* Set AC to reduce chance of further SMAP faults */
@@ -994,8 +1017,9 @@ ENTRY(entry_DF)
 
         movq  %rsp,%rdi
         tailcall do_double_fault
+END(entry_DF)
 
-ENTRY(entry_NMI)
+FUNC(entry_NMI)
         ENDBR64
         pushq $0
         movl  $X86_EXC_NMI, 4(%rsp)
@@ -1126,21 +1150,24 @@ handle_ist_exception:
         ASSERT_CONTEXT_IS_XEN
         jmp   restore_all_xen
 #endif
+END(entry_NMI)
 
-ENTRY(entry_MC)
+FUNC(entry_MC)
         ENDBR64
         pushq $0
         movl  $X86_EXC_MC, 4(%rsp)
         jmp   handle_ist_exception
+END(entry_MC)
 
 /* No op trap handler.  Required for kexec crash path. */
-GLOBAL(trap_nop)
+FUNC(trap_nop, 0)
         ENDBR64
         iretq
+END(trap_nop)
 
 /* Table of automatically generated entry points.  One per vector. */
         .pushsection .init.rodata, "a", @progbits
-GLOBAL(autogen_entrypoints)
+DATA(autogen_entrypoints, 8)
         /* pop into the .init.rodata section and record an entry point. */
         .macro entrypoint ent
         .pushsection .init.rodata, "a", @progbits
@@ -1149,7 +1176,7 @@ GLOBAL(autogen_entrypoints)
         .endm
 
         .popsection
-autogen_stubs: /* Automatically generated stubs. */
+FUNC_LOCAL(autogen_stubs, 0) /* Automatically generated stubs. */
 
         vec = 0
         .rept X86_NR_VECTORS
@@ -1193,6 +1220,7 @@ autogen_stubs: /* Automatically generate
 
         vec = vec + 1
         .endr
+END(autogen_stubs)
 
         .section .init.rodata, "a", @progbits
-        .size autogen_entrypoints, . - autogen_entrypoints
+END(autogen_entrypoints)



From xen-devel-bounces@lists.xenproject.org Mon Jan 15 14:35:58 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 15 Jan 2024 14:35:58 +0000
Received: from list by lists.xenproject.org with outflank-mailman.667411.1038640 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPO4C-0008Q3-Jy; Mon, 15 Jan 2024 14:35:56 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 667411.1038640; Mon, 15 Jan 2024 14:35:56 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPO4C-0008Pw-Ge; Mon, 15 Jan 2024 14:35:56 +0000
Received: by outflank-mailman (input) for mailman id 667411;
 Mon, 15 Jan 2024 14:35:54 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=jLm1=IZ=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rPO4A-0008Pj-Qo
 for xen-devel@lists.xenproject.org; Mon, 15 Jan 2024 14:35:54 +0000
Received: from mail-wr1-x435.google.com (mail-wr1-x435.google.com
 [2a00:1450:4864:20::435])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 62a5b556-b3b3-11ee-98f1-6d05b1d4d9a1;
 Mon, 15 Jan 2024 15:35:53 +0100 (CET)
Received: by mail-wr1-x435.google.com with SMTP id
 ffacd0b85a97d-3367601a301so7611299f8f.2
 for <xen-devel@lists.xenproject.org>; Mon, 15 Jan 2024 06:35:53 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 j27-20020adfb31b000000b00336e32338f3sm12166221wrd.70.2024.01.15.06.35.52
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 15 Jan 2024 06:35:52 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 62a5b556-b3b3-11ee-98f1-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1705329352; x=1705934152; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:references:cc:to
         :from:content-language:subject:user-agent:mime-version:date
         :message-id:from:to:cc:subject:date:message-id:reply-to;
        bh=f1C+rppgzTNnRF/Pqgedt1f2Tofhn86tPcLKmKXp7wk=;
        b=YnwJhDSb+1aNgogFQq1WXGKeHlsbrHpnIeZbNeTrumTlfNsVRhkFN5fTKHBqUXSGXI
         lNpQlwkXAP7HMwqgdUDEcy54TQqmXHO+BygyJHFTEStzMePJnLVoYJurn8g18Klbmnhb
         jIkeU8FAoFNUce19zOFni9WmXKc+oIOedfrktqWnUZEssKw2XYcb4r1yjhs0HW27esLK
         4gyHLnW9pCFFKwdHO5VTETF/hEKH9uv9NxaHIaowaKEohO6BbnBt4+5bS+WQAx6esMag
         4+5SUCr+69fnwyLKb99wut363TsT/2KQCvVMatL6Y7uP6FdReLLl7iArm0v/YZsbaHdV
         XyBw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705329352; x=1705934152;
        h=content-transfer-encoding:in-reply-to:autocrypt:references:cc:to
         :from:content-language:subject:user-agent:mime-version:date
         :message-id:x-gm-message-state:from:to:cc:subject:date:message-id
         :reply-to;
        bh=f1C+rppgzTNnRF/Pqgedt1f2Tofhn86tPcLKmKXp7wk=;
        b=fPvzhtv2tl+IOLqsx+N7MwEzdiikoKN8fmSKNrXfcjsiDv7z5XaRpgwPr5BXz8Jrd3
         wVVyiFkANUGAaQccudGbCBapE/dG9F41y0d0HKcgDpgJTxYZ2Xort31jhaHh23sk81+R
         sCuDTIIrEDNYK3kGQ9apoq4NdIqvcXz4BgfTdGRHuv7i6/JyVrF8nfzZjfUKWsDvQ1BG
         IXUUCPxTLrYcFErk3iR8slbnw6H9gapjLBEDy1fwALI/TVdLZ5ccaIzRm1jbcz+ymzp1
         LjxfFUv2yd7GGG9kXouIlH36XZvZhq6SetvLs73kPca2TyVl25e8+J5uc6n4zVihqF+1
         a6VQ==
X-Gm-Message-State: AOJu0Ywc8wGrRo7ezgZZOKlVMfKiVookNwWUaMMu2j/x4iIMcdHPMbV5
	Bt15rJlZHy5RWFovIbUkCcypygIBmF6uUhGTEGV5tPJsxg==
X-Google-Smtp-Source: AGHT+IGX+tq8xYYgAgp0/quQgemYqyrfWtWcRx5Jibskl1EE2xes/OmGyTSnvJ1B07cd6yi9RZxuMg==
X-Received: by 2002:adf:ab1b:0:b0:337:5c70:304 with SMTP id q27-20020adfab1b000000b003375c700304mr2296044wrc.15.1705329352708;
        Mon, 15 Jan 2024 06:35:52 -0800 (PST)
Message-ID: <bbc1c26a-e511-4710-8803-2b915c750d70@suse.com>
Date: Mon, 15 Jan 2024 15:35:52 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: [PATCH v5 3/8] x86: also mark assembler globals hidden
Content-Language: en-US
From: Jan Beulich <jbeulich@suse.com>
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, Wei Liu <wl@xen.org>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Julien Grall <julien@xen.org>, Stefano Stabellini <sstabellini@kernel.org>,
 George Dunlap <george.dunlap@citrix.com>
References: <e4bf47ca-2ae6-1fd4-56a6-e4e777150b64@suse.com>
 <7a133ed9-9d13-4e2c-893a-00c083c8a35d@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <7a133ed9-9d13-4e2c-893a-00c083c8a35d@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Let's have assembler symbols be consistent with C ones. In principle
there are (a few) cases where gas can produce smaller code this way,
just that for now there's a gas bug causing smaller code to be emitted
even when that shouldn't be the case.

Signed-off-by: Jan Beulich <jbeulich@suse.com>
Reviewed-by: Roger Pau Monné <roger.pau@citrix.com>
---
v5: Re-base over changes earlier in the series.
v3: Re-base over generalization of the annotations.
v2: New.

--- a/xen/arch/x86/include/asm/config.h
+++ b/xen/arch/x86/include/asm/config.h
@@ -47,11 +47,11 @@
 #define CODE_FILL 0x90
 #define ALIGN .align CODE_ALIGN, CODE_FILL
 #define ENTRY(name)                             \
-  .globl name;                                  \
   ALIGN;                                        \
-  name:
+  GLOBAL(name)
 #define GLOBAL(name)                            \
   .globl name;                                  \
+  .hidden name;                                 \
   name:
 #endif
 
--- a/xen/include/xen/linkage.h
+++ b/xen/include/xen/linkage.h
@@ -19,7 +19,7 @@
 
 #define SYM_ALIGN(align...) .balign align
 
-#define SYM_L_GLOBAL(name) .globl name
+#define SYM_L_GLOBAL(name) .globl name; .hidden name
 #define SYM_L_WEAK(name)   .weak name
 #define SYM_L_LOCAL(name)  /* nothing */
 



From xen-devel-bounces@lists.xenproject.org Mon Jan 15 14:36:38 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 15 Jan 2024 14:36:38 +0000
Received: from list by lists.xenproject.org with outflank-mailman.667414.1038650 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPO4r-0000Tj-T0; Mon, 15 Jan 2024 14:36:37 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 667414.1038650; Mon, 15 Jan 2024 14:36:37 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPO4r-0000Tc-Ox; Mon, 15 Jan 2024 14:36:37 +0000
Received: by outflank-mailman (input) for mailman id 667414;
 Mon, 15 Jan 2024 14:36:36 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=jLm1=IZ=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rPO4q-0000TM-Hb
 for xen-devel@lists.xenproject.org; Mon, 15 Jan 2024 14:36:36 +0000
Received: from mail-wm1-x334.google.com (mail-wm1-x334.google.com
 [2a00:1450:4864:20::334])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 7b66d45b-b3b3-11ee-9b0f-b553b5be7939;
 Mon, 15 Jan 2024 15:36:34 +0100 (CET)
Received: by mail-wm1-x334.google.com with SMTP id
 5b1f17b1804b1-40e80046246so2658585e9.1
 for <xen-devel@lists.xenproject.org>; Mon, 15 Jan 2024 06:36:34 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 j27-20020adfb31b000000b00336e32338f3sm12166221wrd.70.2024.01.15.06.36.33
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 15 Jan 2024 06:36:34 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 7b66d45b-b3b3-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1705329394; x=1705934194; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:references:cc:to
         :from:content-language:subject:user-agent:mime-version:date
         :message-id:from:to:cc:subject:date:message-id:reply-to;
        bh=e/vLrJhMfgT6/QpkaKU7E9tT/DlCGICDK2Ql9bfvWrE=;
        b=B4jHIn2+ICkwlOBSeeuEUqDsX0YoRUY//rXeksUgyxxCnvqHx567MCFHzgjWSntwUp
         /9CW7hXo/tlZr9YEjLqHw3j5UKwcb9AaemrN8pvJvZUwhbP8YaalgDMvglkWRDGoP6Ad
         VV3wmE++D0Pqi+8kRB27UQHEunAG9z1YD9jCEItEuvShAX2uM6zN8okcJ6UNg56a829j
         Zftx6wFfQyNJqVDwV3t5XLeJSzHjBjg1CmwsdoGggv/MQX/et4FeozHh6Hh6i6xfqq2g
         CH2Q5VdB4LW+VdDrhbs4TVdsa8Os0NbGZI5BTNTWqkKwbhF00nwgZxwOcKfVbee488Q5
         AIFQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705329394; x=1705934194;
        h=content-transfer-encoding:in-reply-to:autocrypt:references:cc:to
         :from:content-language:subject:user-agent:mime-version:date
         :message-id:x-gm-message-state:from:to:cc:subject:date:message-id
         :reply-to;
        bh=e/vLrJhMfgT6/QpkaKU7E9tT/DlCGICDK2Ql9bfvWrE=;
        b=MbwG3E+0VAqpPmcDDqHrjuCmB6JT5EVVFuSuSUL3WBCfBOcl/fuUaKbDm5rlMyZ/gc
         El7y57NmNOc/MKyFarKICERq61mJu0yf8KmaBrkyISF6BqtP9nJdPN1HvVz1cOHP5fVJ
         zZqXWIfHW+5eBtX55ecPOT7fsqB4Xs5fD0SgUWAEJ0ZIGPyFx236yjHkMc10wLnlyq9B
         uRaiy3GrpTHL94VGjNJAUZXcOOpld+BACpwCEyCHu/qR/HcodK4OL3CVrbMSrjPeobRV
         xvhzuRGqqWAgj4VnCSgLu3KIsw2XI6e/R8/tYDKUKrGOF/IA75+Sndzk/3fBJaqXNXnE
         a+yA==
X-Gm-Message-State: AOJu0YwmO1yRtmT1GXf0dyWH13tB0ELYg3UoNQzOVpT+iKoTQa/qGYk/
	fbRvdAE5vd8RJ1i2sIeuMXG+1MrlxjVKBBdhtQJY51eh8A==
X-Google-Smtp-Source: AGHT+IGWxkLJBKgklwKLc6qGoDjPPjv7jwlTgeKRLNLYC1BrohudykjGpxPIL8NGYQHWKTN8/cZLHg==
X-Received: by 2002:a05:600c:379a:b0:40e:4a88:fd6c with SMTP id o26-20020a05600c379a00b0040e4a88fd6cmr3181632wmr.61.1705329394216;
        Mon, 15 Jan 2024 06:36:34 -0800 (PST)
Message-ID: <7871702a-b5ca-4430-b282-148b46fccc71@suse.com>
Date: Mon, 15 Jan 2024 15:36:33 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: [PATCH v5 4/8] Arm: annotate entry points with type and size
Content-Language: en-US
From: Jan Beulich <jbeulich@suse.com>
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Julien Grall <julien@xen.org>, Stefano Stabellini
 <sstabellini@kernel.org>, Volodymyr Babchuk <volodymyr_babchuk@epam.com>,
 Bertrand Marquis <bertrand.marquis@arm.com>,
 George Dunlap <george.dunlap@citrix.com>, Michal Orzel <michal.orzel@amd.com>
References: <e4bf47ca-2ae6-1fd4-56a6-e4e777150b64@suse.com>
 <7a133ed9-9d13-4e2c-893a-00c083c8a35d@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <7a133ed9-9d13-4e2c-893a-00c083c8a35d@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

Use the generic framework in xen/linkage.h. No change in generated code
except for the changed padding value (noticable when config.gz isn't a
multiple of 4 in size). Plus of course the converted symbols change to
be hidden ones.

Note that ASM_INT() is switched to DATA(), not DATA_LOCAL(), as the only
use site wants the symbol global anyway.

Signed-off-by: Jan Beulich <jbeulich@suse.com>
Reviewed-by: Julien Grall <jgrall@amazon.com>
---
Only one each of the assembly files is being converted for now. More
could be done right here or as follow-on in separate patches.

The ASM_INT() redundancy of .global will be eliminated by a subsequent
patch.
---
v3: New.

--- a/xen/arch/arm/arm32/lib/div64.S
+++ b/xen/arch/arm/arm32/lib/div64.S
@@ -42,7 +42,7 @@
  * Clobbered regs: xl, ip
  */
 
-ENTRY(__do_div64)
+FUNC(__do_div64)
 UNWIND(.fnstart)
 
 	@ Test for easy paths first.
@@ -206,4 +206,4 @@ Ldiv0_64:
 	ldr	pc, [sp], #8
 
 UNWIND(.fnend)
-ENDPROC(__do_div64)
+END(__do_div64)
--- a/xen/arch/arm/arm64/lib/clear_page.S
+++ b/xen/arch/arm/arm64/lib/clear_page.S
@@ -22,7 +22,7 @@
  * Parameters:
  *	x0 - dest
  */
-ENTRY(clear_page)
+FUNC(clear_page)
 	mrs	x1, dczid_el0
 	and	w1, w1, #0xf
 	mov	x2, #4
@@ -33,4 +33,4 @@ ENTRY(clear_page)
 	tst	x0, #(PAGE_SIZE - 1)
 	b.ne	1b
 	ret
-ENDPROC(clear_page)
+END(clear_page)
--- a/xen/arch/arm/include/asm/asm_defns.h
+++ b/xen/arch/arm/include/asm/asm_defns.h
@@ -5,6 +5,7 @@
 /* NB. Auto-generated from arch/.../asm-offsets.c */
 #include <asm/asm-offsets.h>
 #endif
+#include <xen/linkage.h>
 #include <asm/processor.h>
 
 /* Macros for generic assembly code */
@@ -30,10 +31,7 @@ label:  .asciz msg;
 #define RODATA_STR(label, msg) RODATA_SECT(.rodata.str, label, msg)
 
 #define ASM_INT(label, val)                 \
-    .p2align 2;                             \
-label: .long (val);                         \
-    .size label, . - label;                 \
-    .type label, %object
+    DATA(label, 4) .long (val); END(label)
 
 #endif /* __ARM_ASM_DEFNS_H__ */
 /*
--- a/xen/arch/arm/include/asm/config.h
+++ b/xen/arch/arm/include/asm/config.h
@@ -53,7 +53,8 @@
 
 /* Linkage for ARM */
 #ifdef __ASSEMBLY__
-#define ALIGN .align 2
+#define CODE_ALIGN 4
+#define ALIGN .balign CODE_ALIGN
 #define ENTRY(name)                             \
   .globl name;                                  \
   ALIGN;                                        \
@@ -61,8 +62,6 @@
 #define GLOBAL(name)                            \
   .globl name;                                  \
   name:
-#define END(name) \
-  .size name, .-name
 #define ENDPROC(name) \
   .type name, %function; \
   END(name)



From xen-devel-bounces@lists.xenproject.org Mon Jan 15 14:37:24 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 15 Jan 2024 14:37:24 +0000
Received: from list by lists.xenproject.org with outflank-mailman.667424.1038660 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPO5b-00018Y-9Z; Mon, 15 Jan 2024 14:37:23 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 667424.1038660; Mon, 15 Jan 2024 14:37:23 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPO5b-00018R-6A; Mon, 15 Jan 2024 14:37:23 +0000
Received: by outflank-mailman (input) for mailman id 667424;
 Mon, 15 Jan 2024 14:37:22 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=jLm1=IZ=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rPO5a-0000sg-5y
 for xen-devel@lists.xenproject.org; Mon, 15 Jan 2024 14:37:22 +0000
Received: from mail-wr1-x42e.google.com (mail-wr1-x42e.google.com
 [2a00:1450:4864:20::42e])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 974d4fb2-b3b3-11ee-98f1-6d05b1d4d9a1;
 Mon, 15 Jan 2024 15:37:21 +0100 (CET)
Received: by mail-wr1-x42e.google.com with SMTP id
 ffacd0b85a97d-33770772136so5054904f8f.3
 for <xen-devel@lists.xenproject.org>; Mon, 15 Jan 2024 06:37:21 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 j27-20020adfb31b000000b00336e32338f3sm12166221wrd.70.2024.01.15.06.37.20
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 15 Jan 2024 06:37:20 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 974d4fb2-b3b3-11ee-98f1-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1705329441; x=1705934241; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:references:cc:to
         :from:content-language:subject:user-agent:mime-version:date
         :message-id:from:to:cc:subject:date:message-id:reply-to;
        bh=FFQ31FcmOb6PAY2U3EoJvJoyLBbzkzu/MkKrJKkl6xs=;
        b=gUDLSaag2yjMcNlpcT7ujnoN98o9SgOFqw4x0A5uNgrvgLnKOgzU+jS2JNHwREHvFT
         HvyChURhQFj8FdWfhAFQ/qPR1is+E+6zUnYIslaaNr42Dj4v7jl1+KTqnAu19xGWndK8
         BVXlZlM8wWoEtmqxwhkB/MgcdeN0vtWKo2E1gZWGdehd2jOhay1VpSTp+LysMdI5sLiJ
         7ViwreYoWzoFfStCzE721AVPtgtBsoXHrV+ucdE5GgmYEOIU+pXWQc0RpTFN/Akvx5FC
         sVRmShGQfAwNVPmcAFB3hKzjAghNqShdqtG50MXXmqz+tGXaF1RYtrFMZnmrEZ9O71l0
         zslQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705329441; x=1705934241;
        h=content-transfer-encoding:in-reply-to:autocrypt:references:cc:to
         :from:content-language:subject:user-agent:mime-version:date
         :message-id:x-gm-message-state:from:to:cc:subject:date:message-id
         :reply-to;
        bh=FFQ31FcmOb6PAY2U3EoJvJoyLBbzkzu/MkKrJKkl6xs=;
        b=KmzKh9Uug8vF5oPCuxLuEMiOV+b3Bbt+wF8GKzi4Ew3VGJud5qcWeTESetufrF90H5
         //1N5mzwtrXUZN/bfyrm2uPcd9OzgJzMNSewh2oayA5nGnMrEOhNX0VS8Zk2X9vtsa3W
         Q10jR8/hNWZGmlWeWTDxuqRPVe5BTzyFhAJq8KC6jEJWdmy8nCofcpMQG1z+JagVytNB
         usSgDPjZKbw1NwbGeuURo51gWdVcztbwJ5+KDhkFMVw+Mv2yidZb0FhusT4ZF6XIVuHl
         V2ihokB5M1vFmS2mXZ0DiT+uv6gSHU8xNN1SbmN201lr0DqvfEgIZiTobraHSVBSjiSJ
         lLCA==
X-Gm-Message-State: AOJu0Yx7GdwdFQdqSMO2aQ2IVtMRy3lmla2xc/pGa7mmc49P5uVnn6nz
	P4aEMP6XtMX5UkqQEUbma/E/2iVDxgnPfQCYaioERUhozQ==
X-Google-Smtp-Source: AGHT+IERDl4S4Scd5eoSzdNvMNWD5vn3MbERcQ8c/IaSWBucKJnm0nZAW3cOOuUCfsgX0k4veeAOeA==
X-Received: by 2002:adf:f684:0:b0:336:7a01:98da with SMTP id v4-20020adff684000000b003367a0198damr2812334wrp.55.1705329441074;
        Mon, 15 Jan 2024 06:37:21 -0800 (PST)
Message-ID: <7c57d285-c81d-43d4-93fe-2152ea6ad7f8@suse.com>
Date: Mon, 15 Jan 2024 15:37:20 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: [PATCH v5 5/8] RISC-V: annotate entry points with type and size
Content-Language: en-US
From: Jan Beulich <jbeulich@suse.com>
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, Wei Liu <wl@xen.org>,
 Julien Grall <julien@xen.org>, Stefano Stabellini <sstabellini@kernel.org>,
 Bobby Eshleman <bobbyeshleman@gmail.com>,
 Alistair Francis <alistair.francis@wdc.com>,
 Connor Davis <connojdavis@gmail.com>,
 George Dunlap <george.dunlap@citrix.com>,
 Oleksii Kurochko <oleksii.kurochko@gmail.com>
References: <e4bf47ca-2ae6-1fd4-56a6-e4e777150b64@suse.com>
 <7a133ed9-9d13-4e2c-893a-00c083c8a35d@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <7a133ed9-9d13-4e2c-893a-00c083c8a35d@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

Use the generic framework in xen/linkage.h. No change in generated code
except of course the converted symbols change to be hidden ones and gain
a valid size.

Signed-off-by: Jan Beulich <jbeulich@suse.com>
---
Probably count_args_exp() should move to macros.h, but I first wanted to
see whether anyone can suggest any better approach for checking whether
a defined macro expands to nothing.
---
v5: Re-base.
v4: Also drop #undef-s from linker script.
v3: New.

--- a/xen/arch/riscv/entry.S
+++ b/xen/arch/riscv/entry.S
@@ -5,7 +5,7 @@
 #include <asm/traps.h>
 
 /* WIP: only works while interrupting Xen context */
-ENTRY(handle_trap)
+FUNC(handle_trap)
 
     /* Exceptions from xen */
 save_to_stack:
@@ -92,3 +92,4 @@ restore_registers:
         REG_L   sp, CPU_USER_REGS_SP(sp)
 
         sret
+END(handle_trap)
--- a/xen/arch/riscv/include/asm/asm.h
+++ b/xen/arch/riscv/include/asm/asm.h
@@ -7,6 +7,7 @@
 #define _ASM_RISCV_ASM_H
 
 #ifdef __ASSEMBLY__
+#include <xen/linkage.h>
 #define __ASM_STR(x)	x
 #else
 #define __ASM_STR(x)	#x
--- a/xen/arch/riscv/include/asm/config.h
+++ b/xen/arch/riscv/include/asm/config.h
@@ -69,12 +69,8 @@
 
 /* Linkage for RISCV */
 #ifdef __ASSEMBLY__
-#define ALIGN .align 4
-
-#define ENTRY(name)                                \
-  .globl name;                                     \
-  ALIGN;                                           \
-  name:
+#define CODE_ALIGN 16
+#define CODE_FILL /* empty */
 #endif
 
 #ifdef CONFIG_RISCV_64
--- a/xen/arch/riscv/riscv64/head.S
+++ b/xen/arch/riscv/riscv64/head.S
@@ -8,7 +8,7 @@
          *   a0 -> hart_id ( bootcpu_id )
          *   a1 -> dtb_base 
          */
-ENTRY(start)
+FUNC(start)
         /* Mask all interrupts */
         csrw    CSR_SIE, zero
 
@@ -60,19 +60,21 @@ ENTRY(start)
         mv      a1, s1
 
         tail    start_xen
+END(start)
 
         .section .text, "ax", %progbits
 
-ENTRY(reset_stack)
+FUNC(reset_stack)
         la      sp, cpu0_boot_stack
         li      t0, STACK_SIZE
         add     sp, sp, t0
 
         ret
+END(reset_stack)
 
         .section .text.ident, "ax", %progbits
 
-ENTRY(turn_on_mmu)
+FUNC(turn_on_mmu)
         sfence.vma
 
         li      t0, RV_STAGE1_MODE
@@ -84,3 +86,4 @@ ENTRY(turn_on_mmu)
         csrw    CSR_SATP, t1
 
         jr      a0
+END(turn_on_mmu)
--- a/xen/arch/riscv/xen.lds.S
+++ b/xen/arch/riscv/xen.lds.S
@@ -1,9 +1,6 @@
 #include <xen/lib.h>
 #include <xen/xen.lds.h>
 
-#undef ENTRY
-#undef ALIGN
-
 OUTPUT_ARCH(riscv)
 ENTRY(start)
 
--- a/xen/include/xen/linkage.h
+++ b/xen/include/xen/linkage.h
@@ -35,17 +35,28 @@
 
 #define END(name) .size name, . - name
 
+/*
+ * CODE_FILL in particular may need to expand to nothing (e.g. for RISC-V), in
+ * which case we also need to get rid of the comma in the .balign directive.
+ */
+#define count_args_exp(args...) count_args(args)
+#if count_args_exp(CODE_FILL)
+# define DO_CODE_ALIGN(align...) LASTARG(CODE_ALIGN, ## align), CODE_FILL
+#else
+# define DO_CODE_ALIGN(align...) LASTARG(CODE_ALIGN, ## align)
+#endif
+
 #define FUNC(name, align...) \
-        SYM(name, FUNC, GLOBAL, LASTARG(CODE_ALIGN, ## align), CODE_FILL)
+        SYM(name, FUNC, GLOBAL, DO_CODE_ALIGN(align))
 #define LABEL(name, align...) \
-        SYM(name, NONE, GLOBAL, LASTARG(CODE_ALIGN, ## align), CODE_FILL)
+        SYM(name, NONE, GLOBAL, DO_CODE_ALIGN(align))
 #define DATA(name, align...) \
         SYM(name, DATA, GLOBAL, LASTARG(DATA_ALIGN, ## align), DATA_FILL)
 
 #define FUNC_LOCAL(name, align...) \
-        SYM(name, FUNC, LOCAL, LASTARG(CODE_ALIGN, ## align), CODE_FILL)
+        SYM(name, FUNC, LOCAL, DO_CODE_ALIGN(align))
 #define LABEL_LOCAL(name, align...) \
-        SYM(name, NONE, LOCAL, LASTARG(CODE_ALIGN, ## align), CODE_FILL)
+        SYM(name, NONE, LOCAL, DO_CODE_ALIGN(align))
 #define DATA_LOCAL(name, align...) \
         SYM(name, DATA, LOCAL, LASTARG(DATA_ALIGN, ## align), DATA_FILL)
 



From xen-devel-bounces@lists.xenproject.org Mon Jan 15 14:38:59 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 15 Jan 2024 14:38:59 +0000
Received: from list by lists.xenproject.org with outflank-mailman.667428.1038671 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPO76-0002mQ-KZ; Mon, 15 Jan 2024 14:38:56 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 667428.1038671; Mon, 15 Jan 2024 14:38:56 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPO76-0002mJ-GU; Mon, 15 Jan 2024 14:38:56 +0000
Received: by outflank-mailman (input) for mailman id 667428;
 Mon, 15 Jan 2024 14:38:55 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=jLm1=IZ=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rPO75-0002mB-RD
 for xen-devel@lists.xenproject.org; Mon, 15 Jan 2024 14:38:55 +0000
Received: from mail-wr1-x432.google.com (mail-wr1-x432.google.com
 [2a00:1450:4864:20::432])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id cea3a8e5-b3b3-11ee-98f1-6d05b1d4d9a1;
 Mon, 15 Jan 2024 15:38:54 +0100 (CET)
Received: by mail-wr1-x432.google.com with SMTP id
 ffacd0b85a97d-3373bc6d625so7500272f8f.3
 for <xen-devel@lists.xenproject.org>; Mon, 15 Jan 2024 06:38:54 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 j27-20020adfb31b000000b00336e32338f3sm12166221wrd.70.2024.01.15.06.38.53
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 15 Jan 2024 06:38:53 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: cea3a8e5-b3b3-11ee-98f1-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1705329534; x=1705934334; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:references:cc:to
         :from:content-language:subject:user-agent:mime-version:date
         :message-id:from:to:cc:subject:date:message-id:reply-to;
        bh=US14xhGKhc0Smw4Hw8UT6NWF96l1rVjI7L9dESkaVts=;
        b=gb1xk321YQfY80pHySJfj73l6J5ohQgUpfQweSWOy/AwhtcyEaJrZQK591qfQKgB8E
         bo/E8bLbph6Ff7EFlQo1ki44FKpSfAiGh5s0LhMv3DZjbfKbihtci9rvUGQxYliS5/su
         roLL07+klcRBrWpYsR/6p/QaM9tUYLrSdm+eZELdXh5fwy4LqGvdC6ltGaMTlZXIsdGA
         VrvAbuK+6eI4aokT83dm6/Mmn+b60K2kpfL3ZQqcumV/eofFtNwbQF0zz0SMiZpXfBNW
         xRACktZPJzSAbAnC+9XSpZpi1hHH8LKTkz/gSgR0yAEB9O+541gOI6DJJDe+AfJzbpTk
         8iYg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705329534; x=1705934334;
        h=content-transfer-encoding:in-reply-to:autocrypt:references:cc:to
         :from:content-language:subject:user-agent:mime-version:date
         :message-id:x-gm-message-state:from:to:cc:subject:date:message-id
         :reply-to;
        bh=US14xhGKhc0Smw4Hw8UT6NWF96l1rVjI7L9dESkaVts=;
        b=ga+DD2roTNyajCz/JC4lBgGrOjeHIwHdVcZsg/9fCsvY6pALDUuiZHB/rIaThIaMN6
         U9LsEoGzSw8ukYN+zUoPbOhrL2q7hr6iWDghrxS2XFPzanABfemAZYiroLEXpaRX87cb
         lkKqIK0awzCxIf7jWYuOqyW63pHDFSezJAEd1PJVNXRHpP31+2fgZRC38eQ7Bwkz58IP
         sR4OZ6ZUTQvfTleEzCInYhTCeqnrFuJ/vSHq7krumBKxFUPrjTdgMn+zcr54djfAU1ZB
         7kCLgqvlt5M9m+k47BeZ4wBelP8Ri6QamLkAcqIBWVashpQJUJYE0s4bKmmPHTosmPFL
         v+xQ==
X-Gm-Message-State: AOJu0YzXI2T3dIK5NUTfZP4evaStH+eCpdaNVhJZZfUbZVUY7ojJHwpN
	DvtMVNZOaIdB2a8aPJYQyWK5cXTN4Bz2d2/LIrJ0tKDHZw==
X-Google-Smtp-Source: AGHT+IGy8MgsnT9vNDEznqHeZ4+w9/iz74rLCoQt+dXDDTs1PHrLhr+0E/XP3VP4XREU/hftW3z2Uw==
X-Received: by 2002:a05:6000:10d:b0:336:6388:1092 with SMTP id o13-20020a056000010d00b0033663881092mr2486344wrx.126.1705329533845;
        Mon, 15 Jan 2024 06:38:53 -0800 (PST)
Message-ID: <36004375-1398-4f94-b455-8bfdafe0c9d7@suse.com>
Date: Mon, 15 Jan 2024 15:38:53 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: [PATCH v5 6/8] PPC: switch entry point annotations to common model
Content-Language: en-US
From: Jan Beulich <jbeulich@suse.com>
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: George Dunlap <george.dunlap@citrix.com>,
 Shawn Anastasio <sanastasio@raptorengineering.com>
References: <e4bf47ca-2ae6-1fd4-56a6-e4e777150b64@suse.com>
 <7a133ed9-9d13-4e2c-893a-00c083c8a35d@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <7a133ed9-9d13-4e2c-893a-00c083c8a35d@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

Use the generic framework in xen/linkage.h. No change in generated code
except of course the converted symbols change to be hidden ones.

Signed-off-by: Jan Beulich <jbeulich@suse.com>
---
v5: Re-base.
v4: Also drop #undef-s from linker script. Re-base.
v3: New.

--- a/xen/arch/ppc/include/asm/asm-defns.h
+++ b/xen/arch/ppc/include/asm/asm-defns.h
@@ -3,6 +3,7 @@
 #define _ASM_PPC_ASM_DEFNS_H
 
 #include <asm/asm-offsets.h>
+#include <xen/linkage.h>
 
 /*
  * Load a 64-bit immediate value into the specified GPR.
--- a/xen/arch/ppc/include/asm/config.h
+++ b/xen/arch/ppc/include/asm/config.h
@@ -32,12 +32,7 @@
 
 /* Linkage for PPC */
 #ifdef __ASSEMBLY__
-#define ALIGN .p2align 2
-
-#define ENTRY(name)                                                            \
-    .globl name;                                                               \
-    ALIGN;                                                                     \
-    name:
+#define CODE_ALIGN 4
 #endif
 
 #define XEN_VIRT_START _AC(0xc000000000000000, UL)
--- a/xen/arch/ppc/ppc64/exceptions-asm.S
+++ b/xen/arch/ppc/ppc64/exceptions-asm.S
@@ -6,7 +6,7 @@
     .section .text.exceptions, "ax", %progbits
 
     /* Helper to dump CPU state to struct cpu_user_regs pointed to by r1. */
-ENTRY(exception_common)
+FUNC(exception_common)
     /*
      * Save GPRs 1-31. TODO: The value of %r1 has already been modified by the
      * ISR, so the value we save isn't the exact value we had on entry.
@@ -45,11 +45,10 @@ ENTRY(exception_common)
     stdu    %r0, -STACK_FRAME_OVERHEAD(%r1)
     bl      exception_handler
 
-    .size exception_common, . - exception_common
-    .type exception_common, %function
+    END(exception_common)
 
     /* Same as exception_common, but for exceptions that set HSRR{0,1} */
-ENTRY(h_exception_common)
+FUNC(h_exception_common)
     /*
      * Save GPRs 1-31. TODO: The value of %r1 has already been modified by the
      * ISR, so the value we save isn't the exact value we had on entry.
@@ -89,15 +88,14 @@ ENTRY(h_exception_common)
     stdu    %r0, -STACK_FRAME_OVERHEAD(%r1)
     bl      exception_handler
 
-    .size h_exception_common, . - h_exception_common
-    .type h_exception_common, %function
+    END(h_exception_common)
 
 /*
  * Declare an ISR for the provided exception that jumps to the specified handler
  */
 .macro ISR name, exc, handler
     . = (AIL_VECTOR_BASE - EXCEPTION_VECTORS_START) + \exc
-    ENTRY(\name)
+    FUNC(\name)
     /* TODO: switch stack */
 
     /* Reserve space for struct cpu_user_regs */
@@ -113,8 +111,7 @@ ENTRY(h_exception_common)
     /* Branch to common code */
     b       \handler
 
-    .size \name, . - \name
-    .type \name, %function
+    END(\name)
 .endm
 
 /*
--- a/xen/arch/ppc/ppc64/head.S
+++ b/xen/arch/ppc/ppc64/head.S
@@ -6,7 +6,7 @@
 
     .section .text.header, "ax", %progbits
 
-ENTRY(start)
+FUNC(start)
     /*
      * NOTE: argument registers (r3-r9) must be preserved until the C entrypoint
      */
@@ -64,11 +64,9 @@ ENTRY(start)
 
     /* should never return */
     trap
+END(start)
 
-    .size start, . - start
-    .type start, %function
-
-ENTRY(enable_mmu)
+FUNC(enable_mmu)
     mflr %r3
     mfmsr %r4
 
@@ -78,6 +76,4 @@ ENTRY(enable_mmu)
     mtsrr0 %r3 /* return to caller after MMU enable */
     mtsrr1 %r4
     rfid
-
-    .size enable_mmu, . - enable_mmu
-    .type enable_mmu, %function
+END(enable_mmu)
--- a/xen/arch/ppc/xen.lds.S
+++ b/xen/arch/ppc/xen.lds.S
@@ -1,9 +1,6 @@
 #include <xen/lib.h>
 #include <xen/xen.lds.h>
 
-#undef ENTRY
-#undef ALIGN
-
 OUTPUT_ARCH(powerpc:common64)
 ENTRY(start)
 



From xen-devel-bounces@lists.xenproject.org Mon Jan 15 14:39:43 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 15 Jan 2024 14:39:43 +0000
Received: from list by lists.xenproject.org with outflank-mailman.667430.1038679 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPO7n-0003N5-RU; Mon, 15 Jan 2024 14:39:39 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 667430.1038679; Mon, 15 Jan 2024 14:39:39 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPO7n-0003My-Oe; Mon, 15 Jan 2024 14:39:39 +0000
Received: by outflank-mailman (input) for mailman id 667430;
 Mon, 15 Jan 2024 14:39:38 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=jLm1=IZ=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rPO7m-0003Mo-6x
 for xen-devel@lists.xenproject.org; Mon, 15 Jan 2024 14:39:38 +0000
Received: from mail-wr1-x432.google.com (mail-wr1-x432.google.com
 [2a00:1450:4864:20::432])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id e79542d7-b3b3-11ee-9b0f-b553b5be7939;
 Mon, 15 Jan 2024 15:39:36 +0100 (CET)
Received: by mail-wr1-x432.google.com with SMTP id
 ffacd0b85a97d-337ae00f39dso510722f8f.2
 for <xen-devel@lists.xenproject.org>; Mon, 15 Jan 2024 06:39:36 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 j27-20020adfb31b000000b00336e32338f3sm12166221wrd.70.2024.01.15.06.39.35
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 15 Jan 2024 06:39:35 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: e79542d7-b3b3-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1705329576; x=1705934376; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:references:cc:to
         :from:content-language:subject:user-agent:mime-version:date
         :message-id:from:to:cc:subject:date:message-id:reply-to;
        bh=hWQFo/wX+wC8FEgbkzgKbNXtICtACu8yENHkBqHbYaY=;
        b=RG+jPdTDWqwqqnkMJZt+UMer7MEMUqlhtxYGI+bt1IWXdA4xZzBx4IJ1xvzzQiOtwv
         v+u5HEIjtTy+7RknwalUKn1UoIG1pFU3HlvHP3jyjFWpk5nZOn2L82ryIXPkwTOJ3UWQ
         RC2HVfjCHZkgG08DxdkI8l8mPac5Cmsao3qhG4euvEiqZ9meglCPnNXNye3O2FisQlWE
         E4tzrt4Lj74cFF+/SHyfHEc78PfRKSh7amCS0QgagGT3jfjty6b0KVZ/GYBdeFdlUtY7
         o3a0wahwa5CWVF5xhGWzzqJzTAfPyjnYqcXmD0QcaBldaledwT4Md00PJB16hW1pFZzD
         iYLA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705329576; x=1705934376;
        h=content-transfer-encoding:in-reply-to:autocrypt:references:cc:to
         :from:content-language:subject:user-agent:mime-version:date
         :message-id:x-gm-message-state:from:to:cc:subject:date:message-id
         :reply-to;
        bh=hWQFo/wX+wC8FEgbkzgKbNXtICtACu8yENHkBqHbYaY=;
        b=DhjJE9vgM1FHcVqBBvmqi24iqoVunF1JJN7Y2TMQXtiAYpcQqCb08v34F8nJQxK9Dg
         kdBAcjduRrkKPjpeX5CB2uC5pghvsntyTDkLXYzSABMgob/ZV1pTn/u+XS265kLYFhVU
         gJnzrCnsLVedmg0fQebfBxdGpaTLolppcucoARZ9tBYbTGFZdPiCiGPYJwzA5gZ3Ykz1
         0hc1z47gI4Owy/K0iWbSJbDmbJWBWs0hKGPidqfZOTAie91OWSZMmzn/PXB7EyY8c5Pm
         MfpeSa9lMSjWRlX4iqVLTDCZOoman8n9TdTdRdFtO7Ip3spf/508fT6Cy5zbhv8qqYWD
         dAEg==
X-Gm-Message-State: AOJu0Yx0FZ/NkiIa5ix7UGmynlb4YFxlwKIXqJWkKnE0XChuFrHgQ2ml
	2HRqRtXw8eTz5iUikuX+D/M5Nnr+NrGDi0qaRqfTR8mCMA==
X-Google-Smtp-Source: AGHT+IFxI4KnNmfmhoYBCVyJG+Z7I4BeVQXrQE52XkfbsBK1NmA5/bciGWyf2y+Z2BILad9sbPXDZg==
X-Received: by 2002:adf:db03:0:b0:337:55d8:ce80 with SMTP id s3-20020adfdb03000000b0033755d8ce80mr2911320wri.7.1705329575736;
        Mon, 15 Jan 2024 06:39:35 -0800 (PST)
Message-ID: <cf9bd41e-4c31-4617-80b9-9324ff2b9c7a@suse.com>
Date: Mon, 15 Jan 2024 15:39:35 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: [PATCH v5 7/8] tools/binfile: switch to common annotations model
Content-Language: en-US
From: Jan Beulich <jbeulich@suse.com>
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, Wei Liu <wl@xen.org>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Julien Grall <julien@xen.org>, Stefano Stabellini <sstabellini@kernel.org>,
 George Dunlap <george.dunlap@citrix.com>
References: <e4bf47ca-2ae6-1fd4-56a6-e4e777150b64@suse.com>
 <7a133ed9-9d13-4e2c-893a-00c083c8a35d@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <7a133ed9-9d13-4e2c-893a-00c083c8a35d@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

Use DATA() / END() and drop the now redundant .global. No change in
generated data; of course the two symbols now properly gain "hidden"
binding.

Signed-off-by: Jan Beulich <jbeulich@suse.com>
Reviewed-by: Julien Grall <jgrall@amazon.com>
---
v3: New.

--- a/xen/tools/binfile
+++ b/xen/tools/binfile
@@ -29,15 +29,10 @@ cat <<EOF >$target
 
         .section $section.rodata, "a", %progbits
 
-        .p2align $align
-        .global $varname
-$varname:
+DATA($varname, 1 << $align)
         .incbin "$binsource"
 .Lend:
+END($varname)
 
-        .type $varname, %object
-        .size $varname, .Lend - $varname
-
-        .global ${varname}_size
         ASM_INT(${varname}_size, .Lend - $varname)
 EOF



From xen-devel-bounces@lists.xenproject.org Mon Jan 15 14:39:45 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 15 Jan 2024 14:39:45 +0000
Received: from list by lists.xenproject.org with outflank-mailman.667431.1038690 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPO7t-0003dr-2z; Mon, 15 Jan 2024 14:39:45 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 667431.1038690; Mon, 15 Jan 2024 14:39:45 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPO7s-0003dh-VI; Mon, 15 Jan 2024 14:39:44 +0000
Received: by outflank-mailman (input) for mailman id 667431;
 Mon, 15 Jan 2024 14:39:43 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rPO7r-0003ch-Pz; Mon, 15 Jan 2024 14:39:43 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rPO7r-0004uM-EP; Mon, 15 Jan 2024 14:39:43 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rPO7q-0007sM-SL; Mon, 15 Jan 2024 14:39:43 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rPO7q-00069n-Rs; Mon, 15 Jan 2024 14:39:42 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=EFHf24elG/EWszm86xHSHGjLyVnzql0Dtv0HgbzDw0c=; b=gjhf45gOpyNK8/1B7t6d0hoxdG
	YE4uvqT5wRblczjRETnVE5RZQMZpUkG4zWKM1OA8IznT1SNxZcDidkwqY8q/iyQOc2S5Zubi8OWkz
	ZW6r0tWqAvLyrAxMEa2+Vzu58/fGF2RcgxjcWtduAumgjFmxokI1uN0+MW+enk2yzqxY=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184351-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [linux-linus test] 184351: regressions - trouble: blocked/broken/fail/pass
X-Osstest-Failures:
    linux-linus:test-amd64-amd64-xl-vhd:<job status>:broken:regression
    linux-linus:build-arm64-pvops:kernel-build:fail:regression
    linux-linus:test-arm64-arm64-xl-credit1:debian-install:fail:regression
    linux-linus:test-arm64-arm64-xl-xsm:debian-install:fail:regression
    linux-linus:test-arm64-arm64-xl:debian-install:fail:regression
    linux-linus:test-arm64-arm64-xl-thunderx:debian-install:fail:regression
    linux-linus:test-arm64-arm64-xl-credit2:debian-install:fail:regression
    linux-linus:test-arm64-arm64-libvirt-xsm:debian-install:fail:regression
    linux-linus:test-amd64-amd64-xl-vhd:host-install(5):broken:heisenbug
    linux-linus:test-arm64-arm64-examine:build-check(1):blocked:nonblocking
    linux-linus:test-arm64-arm64-libvirt-raw:build-check(1):blocked:nonblocking
    linux-linus:test-arm64-arm64-libvirt-xsm:build-check(1):blocked:nonblocking
    linux-linus:test-arm64-arm64-xl:build-check(1):blocked:nonblocking
    linux-linus:test-arm64-arm64-xl-credit1:build-check(1):blocked:nonblocking
    linux-linus:test-arm64-arm64-xl-credit2:build-check(1):blocked:nonblocking
    linux-linus:test-arm64-arm64-xl-thunderx:build-check(1):blocked:nonblocking
    linux-linus:test-arm64-arm64-xl-vhd:build-check(1):blocked:nonblocking
    linux-linus:test-arm64-arm64-xl-xsm:build-check(1):blocked:nonblocking
    linux-linus:test-arm64-arm64-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-libvirt-raw:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-vhd:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-vhd:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    linux-linus:test-amd64-amd64-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    linux-linus:test-amd64-amd64-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-raw:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-qcow2:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-qemuu-nested-amd:debian-hvm-install/l1/l2:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-xsm:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-arndale:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-arndale:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-multivcpu:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-multivcpu:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-rtds:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-rtds:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit1:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit1:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit2:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit2:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-vhd:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-vhd:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-qcow2:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-qcow2:migrate-support-check:fail:nonblocking
X-Osstest-Versions-This:
    linux=052d534373b7ed33712a63d5e17b2b6cdbce84fd
X-Osstest-Versions-That:
    linux=0dd3ee31125508cd67f7e7172247f05b7fd1753a
From: osstest service owner <osstest-admin@xenproject.org>
Date: Mon, 15 Jan 2024 14:39:42 +0000

flight 184351 linux-linus real [real]
http://logs.test-lab.xenproject.org/osstest/logs/184351/

Regressions :-(

Tests which did not succeed and are blocking,
including tests which could not be run:
 test-amd64-amd64-xl-vhd         <job status>                 broken
 build-arm64-pvops             6 kernel-build             fail REGR. vs. 184270
 test-arm64-arm64-xl-credit1  12 debian-install fail in 184346 REGR. vs. 184270
 test-arm64-arm64-xl-xsm      12 debian-install fail in 184346 REGR. vs. 184270
 test-arm64-arm64-xl          12 debian-install fail in 184346 REGR. vs. 184270
 test-arm64-arm64-xl-thunderx 12 debian-install fail in 184346 REGR. vs. 184270
 test-arm64-arm64-xl-credit2  12 debian-install fail in 184346 REGR. vs. 184270
 test-arm64-arm64-libvirt-xsm 12 debian-install fail in 184346 REGR. vs. 184270

Tests which are failing intermittently (not blocking):
 test-amd64-amd64-xl-vhd       5 host-install(5)          broken pass in 184346

Tests which did not succeed, but are not blocking:
 test-arm64-arm64-examine      1 build-check(1)               blocked  n/a
 test-arm64-arm64-libvirt-raw  1 build-check(1)               blocked  n/a
 test-arm64-arm64-libvirt-xsm  1 build-check(1)               blocked  n/a
 test-arm64-arm64-xl           1 build-check(1)               blocked  n/a
 test-arm64-arm64-xl-credit1   1 build-check(1)               blocked  n/a
 test-arm64-arm64-xl-credit2   1 build-check(1)               blocked  n/a
 test-arm64-arm64-xl-thunderx  1 build-check(1)               blocked  n/a
 test-arm64-arm64-xl-vhd       1 build-check(1)               blocked  n/a
 test-arm64-arm64-xl-xsm       1 build-check(1)               blocked  n/a
 test-arm64-arm64-libvirt-raw 14 migrate-support-check fail in 184346 never pass
 test-arm64-arm64-libvirt-raw 15 saverestore-support-check fail in 184346 never pass
 test-arm64-arm64-xl-vhd     14 migrate-support-check fail in 184346 never pass
 test-arm64-arm64-xl-vhd 15 saverestore-support-check fail in 184346 never pass
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 184270
 test-amd64-amd64-xl-qemut-win7-amd64 19 guest-stop            fail like 184270
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 184270
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 184270
 test-armhf-armhf-libvirt-raw 15 saverestore-support-check    fail  like 184270
 test-amd64-amd64-xl-qemut-ws16-amd64 19 guest-stop            fail like 184270
 test-armhf-armhf-libvirt-qcow2 15 saverestore-support-check   fail like 184270
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 184270
 test-amd64-amd64-libvirt     15 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-arndale  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-arndale  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-multivcpu 15 migrate-support-check        fail  never pass
 test-armhf-armhf-xl-multivcpu 16 saverestore-support-check    fail  never pass
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-armhf-armhf-libvirt     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-rtds     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-rtds     16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-credit1  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit1  16 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-raw 14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit2  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit2  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-raw 14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      15 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-qcow2 14 migrate-support-check        fail never pass
 test-armhf-armhf-libvirt-qcow2 14 migrate-support-check        fail never pass

version targeted for testing:
 linux                052d534373b7ed33712a63d5e17b2b6cdbce84fd
baseline version:
 linux                0dd3ee31125508cd67f7e7172247f05b7fd1753a

Last test of basis   184270  2024-01-07 20:42:19 Z    7 days
Failing since        184283  2024-01-08 20:10:43 Z    6 days   12 attempts
Testing same since   184338  2024-01-13 05:40:28 Z    2 days    5 attempts

------------------------------------------------------------
1701 people touched revisions under test,
not listing them all

jobs:
 build-amd64-xsm                                              pass    
 build-arm64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64                                                  pass    
 build-arm64                                                  pass    
 build-armhf                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-arm64-libvirt                                          pass    
 build-armhf-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-pvops                                            pass    
 build-arm64-pvops                                            fail    
 build-armhf-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-amd64-amd64-xl                                          pass    
 test-amd64-coresched-amd64-xl                                pass    
 test-arm64-arm64-xl                                          blocked 
 test-armhf-armhf-xl                                          pass    
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm           pass    
 test-amd64-amd64-xl-qemut-stubdom-debianhvm-amd64-xsm        pass    
 test-amd64-amd64-xl-qemut-debianhvm-i386-xsm                 pass    
 test-amd64-amd64-xl-qemuu-debianhvm-i386-xsm                 pass    
 test-amd64-amd64-libvirt-xsm                                 pass    
 test-arm64-arm64-libvirt-xsm                                 blocked 
 test-amd64-amd64-xl-xsm                                      pass    
 test-arm64-arm64-xl-xsm                                      blocked 
 test-amd64-amd64-qemuu-nested-amd                            fail    
 test-amd64-amd64-xl-pvhv2-amd                                pass    
 test-amd64-amd64-dom0pvh-xl-amd                              pass    
 test-amd64-amd64-xl-qemut-debianhvm-amd64                    pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64                    pass    
 test-amd64-amd64-freebsd11-amd64                             pass    
 test-amd64-amd64-freebsd12-amd64                             pass    
 test-amd64-amd64-xl-qemuu-ovmf-amd64                         pass    
 test-amd64-amd64-xl-qemut-win7-amd64                         fail    
 test-amd64-amd64-xl-qemuu-win7-amd64                         fail    
 test-amd64-amd64-xl-qemut-ws16-amd64                         fail    
 test-amd64-amd64-xl-qemuu-ws16-amd64                         fail    
 test-armhf-armhf-xl-arndale                                  pass    
 test-amd64-amd64-examine-bios                                pass    
 test-amd64-amd64-xl-credit1                                  pass    
 test-arm64-arm64-xl-credit1                                  blocked 
 test-armhf-armhf-xl-credit1                                  pass    
 test-amd64-amd64-xl-credit2                                  pass    
 test-arm64-arm64-xl-credit2                                  blocked 
 test-armhf-armhf-xl-credit2                                  pass    
 test-amd64-amd64-xl-qemuu-dmrestrict-amd64-dmrestrict        pass    
 test-amd64-amd64-examine                                     pass    
 test-arm64-arm64-examine                                     blocked 
 test-armhf-armhf-examine                                     pass    
 test-amd64-amd64-qemuu-nested-intel                          pass    
 test-amd64-amd64-xl-pvhv2-intel                              pass    
 test-amd64-amd64-dom0pvh-xl-intel                            pass    
 test-amd64-amd64-libvirt                                     pass    
 test-armhf-armhf-libvirt                                     pass    
 test-amd64-amd64-xl-multivcpu                                pass    
 test-armhf-armhf-xl-multivcpu                                pass    
 test-amd64-amd64-pair                                        pass    
 test-amd64-amd64-libvirt-pair                                pass    
 test-amd64-amd64-xl-pvshim                                   pass    
 test-amd64-amd64-pygrub                                      pass    
 test-amd64-amd64-libvirt-qcow2                               pass    
 test-armhf-armhf-libvirt-qcow2                               pass    
 test-amd64-amd64-libvirt-raw                                 pass    
 test-arm64-arm64-libvirt-raw                                 blocked 
 test-armhf-armhf-libvirt-raw                                 pass    
 test-amd64-amd64-xl-rtds                                     pass    
 test-armhf-armhf-xl-rtds                                     pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64-shadow             pass    
 test-amd64-amd64-xl-shadow                                   pass    
 test-arm64-arm64-xl-thunderx                                 blocked 
 test-amd64-amd64-examine-uefi                                pass    
 test-amd64-amd64-xl-vhd                                      broken  
 test-arm64-arm64-xl-vhd                                      blocked 
 test-armhf-armhf-xl-vhd                                      pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary

broken-job test-amd64-amd64-xl-vhd broken
broken-step test-amd64-amd64-xl-vhd host-install(5)

Not pushing.

(No revision log; it would be 204832 lines long.)


From xen-devel-bounces@lists.xenproject.org Mon Jan 15 14:40:24 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 15 Jan 2024 14:40:24 +0000
Received: from list by lists.xenproject.org with outflank-mailman.667439.1038700 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPO8U-0005Ht-F9; Mon, 15 Jan 2024 14:40:22 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 667439.1038700; Mon, 15 Jan 2024 14:40:22 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPO8U-0005Hk-CF; Mon, 15 Jan 2024 14:40:22 +0000
Received: by outflank-mailman (input) for mailman id 667439;
 Mon, 15 Jan 2024 14:40:21 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=jLm1=IZ=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rPO8T-00046P-KH
 for xen-devel@lists.xenproject.org; Mon, 15 Jan 2024 14:40:21 +0000
Received: from mail-wm1-x332.google.com (mail-wm1-x332.google.com
 [2a00:1450:4864:20::332])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 0244fda4-b3b4-11ee-98f1-6d05b1d4d9a1;
 Mon, 15 Jan 2024 15:40:21 +0100 (CET)
Received: by mail-wm1-x332.google.com with SMTP id
 5b1f17b1804b1-40e78238db9so9629195e9.3
 for <xen-devel@lists.xenproject.org>; Mon, 15 Jan 2024 06:40:21 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 j27-20020adfb31b000000b00336e32338f3sm12166221wrd.70.2024.01.15.06.40.19
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 15 Jan 2024 06:40:20 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 0244fda4-b3b4-11ee-98f1-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1705329620; x=1705934420; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:references:cc:to
         :from:content-language:subject:user-agent:mime-version:date
         :message-id:from:to:cc:subject:date:message-id:reply-to;
        bh=PGc0X6Yaf/cUmP7O9RP4fKCBRUMgrpx1/OYaXtfQg1k=;
        b=c8rwg4O9FQDUsc73rQ9+joRT4ZCz3fCZtRYWADVeG7JsmgG3/DMUmjwcWvZSAM0WSb
         MvPEnJTg9pPy9iX6vEgkha8lB0obPYCWaURVQmnS0V+4VGTA1DdY/GgB7WP8s0zaoCeX
         NO1UT7f9mOVLLqHw+/Zwj9cM0Ot2SAON/0EIvJ1Q8rYehbd+xhEDlwWGCnZyVOFfUaDF
         5WhDdkJ/ncKLqZZSFFXL99UiPwVOcO0C/SJ9+3nXQRfJF9tyjAsRv7pKxbFdtpuuk+O4
         pFoY9HdHG6Xb75Z5s8TxYiR1oFIBrUkVsiLu7DR81GwUwRFqDrKJV40AGuA8qZMrhX4u
         swAQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705329620; x=1705934420;
        h=content-transfer-encoding:in-reply-to:autocrypt:references:cc:to
         :from:content-language:subject:user-agent:mime-version:date
         :message-id:x-gm-message-state:from:to:cc:subject:date:message-id
         :reply-to;
        bh=PGc0X6Yaf/cUmP7O9RP4fKCBRUMgrpx1/OYaXtfQg1k=;
        b=BS6C0IAbcIwfE7z8LGUL7QJF27TxQvB+a1B67kS/1+Ryw4H1fCRfK2PmxhQflYBPpX
         TB8AuzWaBfY/eDZOQHMlWE7FZ61/yyMEWP2WLMlCtPv1nkee996wIBGfjYURZBFxNRUh
         HnwFqPBGC6aYQfl7rnU93bKY9wiXMNHDjVFGmAwAnpfEvDuY42r4tvU6E6vPoMyzKMB8
         TTe7Z5Jf2TJc+ZyWGxtuEemvs0Sm2Pv5aQHNLn5HfjWqnvv0a5QF8zmAkKeexNTY5ix1
         HE9VtdR6cGYAXFN8jbu7hAatcTUcJuaypcLVheDwZOVUj0cg+fYrt+3U9RPhMtzCOvKR
         yftQ==
X-Gm-Message-State: AOJu0YwOY36IH+ZJmPyHDsmTAB4ASabeynI1NxL+3eIOHh3wLlfER/ls
	QXhJNFzNcSPJ1iS+lz8sXKD2Dp7Ohik6Tv9Fhy8OCZkYpA==
X-Google-Smtp-Source: AGHT+IEoPhR57xV8FSVKgZ6TMjy/XaNhigGL4lCN5GQks/jeVjwsFpysbxkv5z0/PeovruV90mmC5g==
X-Received: by 2002:a5d:67cc:0:b0:337:4ce2:a601 with SMTP id n12-20020a5d67cc000000b003374ce2a601mr3282252wrw.76.1705329620403;
        Mon, 15 Jan 2024 06:40:20 -0800 (PST)
Message-ID: <5df1d87d-8e54-4e15-b1fb-46b274cb66ef@suse.com>
Date: Mon, 15 Jan 2024 15:40:19 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: [PATCH v5 8/8] common: honor CONFIG_CC_SPLIT_SECTIONS also for
 assembly functions
Content-Language: en-US
From: Jan Beulich <jbeulich@suse.com>
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, Wei Liu <wl@xen.org>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Julien Grall <julien@xen.org>, Stefano Stabellini <sstabellini@kernel.org>,
 Volodymyr Babchuk <volodymyr_babchuk@epam.com>,
 Bertrand Marquis <bertrand.marquis@arm.com>,
 Bobby Eshleman <bobbyeshleman@gmail.com>,
 Alistair Francis <alistair.francis@wdc.com>,
 Connor Davis <connojdavis@gmail.com>,
 George Dunlap <george.dunlap@citrix.com>,
 Shawn Anastasio <sanastasio@raptorengineering.com>,
 Michal Orzel <michal.orzel@amd.com>
References: <e4bf47ca-2ae6-1fd4-56a6-e4e777150b64@suse.com>
 <7a133ed9-9d13-4e2c-893a-00c083c8a35d@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <7a133ed9-9d13-4e2c-893a-00c083c8a35d@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

Leverage the new infrastructure in xen/linkage.h to also switch to per-
function sections (when configured), deriving the specific name from the
"base" section in use at the time FUNC() is invoked.

Signed-off-by: Jan Beulich <jbeulich@suse.com>
---
TBD: Since we use .subsection in UNLIKELY_START(), a perhaps not really
     wanted side effect of this change is that respective out-of-line
     code now moves much closer to its original (invoking) code.

TBD: Of course something with the same overall effect, but less
     impactful might do in Config.mk. E.g. $(filter-out -D%,$(3))
     instead of $(firstword (3)).

TBD: On top of Roger's respective patch (for livepatch), also respect
     CONFIG_FUNCTION_ALIGNMENT.

Note that we'd need to split DATA() in order to separate r/w and r/o
contributions. Further splitting might be needed to also support more
advanced attributes (e.g. merge), hence why this isn't done right here.
Sadly while a new section's name can be derived from the presently in
use, its attributes cannot be. Perhaps the only thing we can do is give
DATA() a 2nd mandatory parameter. Then again I guess most data
definitions could be moved to C anyway.
---
v5: Re-base over changes earlier in the series.
v4: Re-base.
v2: Make detection properly fail on old gas (by adjusting
    cc-option-add-closure).

--- a/Config.mk
+++ b/Config.mk
@@ -102,7 +102,7 @@ cc-option = $(shell if $(1) $(2:-Wno-%=-
 # Usage: $(call cc-option-add CFLAGS,CC,-march=winchip-c6)
 cc-option-add = $(eval $(call cc-option-add-closure,$(1),$(2),$(3)))
 define cc-option-add-closure
-    ifneq ($$(call cc-option,$$($(2)),$(3),n),n)
+    ifneq ($$(call cc-option,$$($(2)),$(firstword $(3)),n),n)
         $(1) += $(3)
     endif
 endef
--- a/xen/Makefile
+++ b/xen/Makefile
@@ -409,6 +409,9 @@ AFLAGS += -D__ASSEMBLY__
 
 $(call cc-option-add,AFLAGS,CC,-Wa$$(comma)--noexecstack)
 
+# Check to see whether the assmbler supports the --sectname-subst option.
+$(call cc-option-add,AFLAGS,CC,-Wa$$(comma)--sectname-subst -DHAVE_AS_SECTNAME_SUBST)
+
 LDFLAGS-$(call ld-option,--warn-rwx-segments) += --no-warn-rwx-segments
 
 CFLAGS += $(CFLAGS-y)
--- a/xen/arch/arm/xen.lds.S
+++ b/xen/arch/arm/xen.lds.S
@@ -156,6 +156,9 @@ SECTIONS
   .init.text : {
        _sinittext = .;
        *(.init.text)
+#ifdef CONFIG_CC_SPLIT_SECTIONS
+       *(.init.text.*)
+#endif
        _einittext = .;
        . = ALIGN(PAGE_SIZE);        /* Avoid mapping alt insns executable */
        *(.altinstr_replacement)
--- a/xen/arch/ppc/xen.lds.S
+++ b/xen/arch/ppc/xen.lds.S
@@ -104,6 +104,9 @@ SECTIONS
     .init.text : {
         _sinittext = .;
         *(.init.text)
+#ifdef CONFIG_CC_SPLIT_SECTIONS
+        *(.init.text.*)
+#endif
         _einittext = .;
         . = ALIGN(PAGE_SIZE);        /* Avoid mapping alt insns executable */
     } :text
--- a/xen/arch/riscv/xen.lds.S
+++ b/xen/arch/riscv/xen.lds.S
@@ -104,6 +104,9 @@ SECTIONS
     .init.text : {
         _sinittext = .;
         *(.init.text)
+#ifdef CONFIG_CC_SPLIT_SECTIONS
+        *(.init.text.*)
+#endif
         _einittext = .;
         . = ALIGN(PAGE_SIZE);        /* Avoid mapping alt insns executable */
     } :text
--- a/xen/arch/x86/xen.lds.S
+++ b/xen/arch/x86/xen.lds.S
@@ -86,6 +86,9 @@ SECTIONS
        . = ALIGN(PAGE_SIZE);
        _stextentry = .;
        *(.text.entry)
+#ifdef CONFIG_CC_SPLIT_SECTIONS
+       *(.text.entry.*)
+#endif
        . = ALIGN(PAGE_SIZE);
        _etextentry = .;
 
@@ -214,6 +217,9 @@ SECTIONS
 #endif
        _sinittext = .;
        *(.init.text)
+#ifdef CONFIG_CC_SPLIT_SECTIONS
+       *(.init.text.*)
+#endif
        *(.text.startup)
        _einittext = .;
        /*
--- a/xen/include/xen/linkage.h
+++ b/xen/include/xen/linkage.h
@@ -19,6 +19,14 @@
 
 #define SYM_ALIGN(align...) .balign align
 
+#if defined(HAVE_AS_SECTNAME_SUBST) && defined(CONFIG_CC_SPLIT_SECTIONS)
+# define SYM_PUSH_SECTION(name, attr) \
+         .pushsection %S.name, attr, %progbits; \
+         .equ .Lsplit_section, 1
+#else
+# define SYM_PUSH_SECTION(name, attr)
+#endif
+
 #define SYM_L_GLOBAL(name) .globl name; .hidden name
 #define SYM_L_WEAK(name)   .weak name
 #define SYM_L_LOCAL(name)  /* nothing */
@@ -33,7 +41,14 @@
         SYM_ALIGN(align);                         \
         name:
 
-#define END(name) .size name, . - name
+#define END(name) \
+        .size name, . - name; \
+        .ifdef .Lsplit_section; \
+            .if .Lsplit_section; \
+                .popsection; \
+                .equ .Lsplit_section, 0; \
+            .endif; \
+        .endif
 
 /*
  * CODE_FILL in particular may need to expand to nothing (e.g. for RISC-V), in
@@ -47,6 +62,7 @@
 #endif
 
 #define FUNC(name, align...) \
+        SYM_PUSH_SECTION(name, "ax"); \
         SYM(name, FUNC, GLOBAL, DO_CODE_ALIGN(align))
 #define LABEL(name, align...) \
         SYM(name, NONE, GLOBAL, DO_CODE_ALIGN(align))
@@ -54,6 +70,7 @@
         SYM(name, DATA, GLOBAL, LASTARG(DATA_ALIGN, ## align), DATA_FILL)
 
 #define FUNC_LOCAL(name, align...) \
+        SYM_PUSH_SECTION(name, "ax"); \
         SYM(name, FUNC, LOCAL, DO_CODE_ALIGN(align))
 #define LABEL_LOCAL(name, align...) \
         SYM(name, NONE, LOCAL, DO_CODE_ALIGN(align))



From xen-devel-bounces@lists.xenproject.org Mon Jan 15 14:50:37 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 15 Jan 2024 14:50:37 +0000
Received: from list by lists.xenproject.org with outflank-mailman.667450.1038709 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPOIH-0007LS-BB; Mon, 15 Jan 2024 14:50:29 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 667450.1038709; Mon, 15 Jan 2024 14:50:29 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPOIH-0007LL-8U; Mon, 15 Jan 2024 14:50:29 +0000
Received: by outflank-mailman (input) for mailman id 667450;
 Mon, 15 Jan 2024 14:50:27 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=3fTV=IZ=amazon.co.uk=prvs=737ebf78a=eliasely@srs-se1.protection.inumbo.net>)
 id 1rPOIF-0007Jt-H2
 for xen-devel@lists.xenproject.org; Mon, 15 Jan 2024 14:50:27 +0000
Received: from smtp-fw-52004.amazon.com (smtp-fw-52004.amazon.com
 [52.119.213.154]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 6a0bfcbe-b3b5-11ee-9b0f-b553b5be7939;
 Mon, 15 Jan 2024 15:50:25 +0100 (CET)
Received: from iad12-co-svc-p1-lb1-vlan2.amazon.com (HELO
 email-inbound-relay-pdx-2c-m6i4x-5eae960a.us-west-2.amazon.com) ([10.43.8.2])
 by smtp-border-fw-52004.iad7.amazon.com with
 ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 15 Jan 2024 14:50:22 +0000
Received: from smtpout.prod.us-east-1.prod.farcaster.email.amazon.dev
 (pdx2-ws-svc-p26-lb5-vlan2.pdx.amazon.com [10.39.38.66])
 by email-inbound-relay-pdx-2c-m6i4x-5eae960a.us-west-2.amazon.com (Postfix)
 with ESMTPS id 2A46340D66; Mon, 15 Jan 2024 14:50:21 +0000 (UTC)
Received: from EX19MTAEUA001.ant.amazon.com [10.0.10.100:30023]
 by smtpin.naws.eu-west-1.prod.farcaster.email.amazon.dev [10.0.36.219:2525]
 with esmtp (Farcaster)
 id b3361114-5814-41eb-b6f6-0f03ac11b31e; Mon, 15 Jan 2024 14:50:20 +0000 (UTC)
Received: from EX19D018EUA002.ant.amazon.com (10.252.50.146) by
 EX19MTAEUA001.ant.amazon.com (10.252.50.192) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1118.40; Mon, 15 Jan 2024 14:50:20 +0000
Received: from [192.168.9.238] (10.106.82.11) by EX19D018EUA002.ant.amazon.com
 (10.252.50.146) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1118.40; Mon, 15 Jan
 2024 14:50:16 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 6a0bfcbe-b3b5-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
  d=amazon.com; i=@amazon.com; q=dns/txt; s=amazon201209;
  t=1705330225; x=1736866225;
  h=message-id:date:mime-version:subject:to:cc:references:
   from:in-reply-to:content-transfer-encoding;
  bh=meDL39+ncIXuHvEulZaOqvZaF2LlMEJqAeoyskQhtnQ=;
  b=NT+T6B8/RnDi8nxyhL7kUS6wwgurkhhJNlnAqA3EKpBabXv06YF/RyIH
   G8zb2wD5os5Y/dPhROv8oloxAvn8Mu2vdxLGaIUkhq2jZY+g9+s22tiEv
   vF/woIczcEHrKxogs9x4OtWw0Uau9VVNhaRyE/0ncOEbnl/6qTLpWC+DF
   Y=;
X-IronPort-AV: E=Sophos;i="6.04,196,1695686400"; 
   d="scan'208";a="178127180"
X-Farcaster-Flow-ID: b3361114-5814-41eb-b6f6-0f03ac11b31e
Message-ID: <fcfb79c5-0509-4ed3-be58-bd3d0935a21e@amazon.com>
Date: Mon, 15 Jan 2024 14:50:11 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 11/22] x86: add a boot option to enable and disable the
 direct map
To: Jan Beulich <jbeulich@suse.com>, Julien Grall <julien@xen.org>
CC: Hongyan Xia <hongyxia@amazon.com>, Andrew Cooper
	<andrew.cooper3@citrix.com>, George Dunlap <george.dunlap@citrix.com>,
	Stefano Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>, "Bertrand
 Marquis" <bertrand.marquis@arm.com>, Volodymyr Babchuk
	<Volodymyr_Babchuk@epam.com>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
	<roger.pau@citrix.com>, Julien Grall <jgrall@amazon.com>,
	<xen-devel@lists.xenproject.org>
References: <20221216114853.8227-1-julien@xen.org>
 <20221216114853.8227-12-julien@xen.org>
 <fc70f967-34bb-9569-f514-7a3208e746c6@suse.com>
 <bc989828-69b9-4919-9ff3-fdd53fb2def1@amazon.com>
 <c736e4d9-5262-4adf-9e74-9b1be5ab13db@suse.com>
 <4ab710c3-c628-4bbe-9533-88af75a9b9ec@xen.org>
 <ba63d435-e26f-4c76-aedc-c027e8b03a6d@suse.com>
 <0dcc54dd-b729-4e20-95af-fa4907a550c6@amazon.com>
 <6926f363-3994-4059-b7e1-cb8e45367be8@suse.com>
Content-Language: en-US
From: Elias El Yandouzi <eliasely@amazon.com>
In-Reply-To: <6926f363-3994-4059-b7e1-cb8e45367be8@suse.com>
Content-Type: text/plain; charset="UTF-8"; format=flowed
Content-Transfer-Encoding: 7bit
X-Originating-IP: [10.106.82.11]
X-ClientProxiedBy: EX19D038UWC003.ant.amazon.com (10.13.139.209) To
 EX19D018EUA002.ant.amazon.com (10.252.50.146)
Precedence: Bulk

Hi,

On 12/01/2024 07:47, Jan Beulich wrote:
> On 11.01.2024 19:25, Elias El Yandouzi wrote:
>> On 11/01/2024 14:09, Jan Beulich wrote:
>>
>> What about maddr_to_virt()? For instance, in the function
>> xen/arch/x86/dmi_scan.c:dmi_iterate(), we need to access a very low
>> machine address which isn't in the directmap range.
> 
> I'm afraid I don't follow: Very low addresses are always in the
> direct map range, which - on x86 - always starts at 0.
> 

I reckon it was poorly phrased. IIUC, we'd like to remove every use of 
*_to_virt() in the case the directmap option is disabled.
So I meant that in this situation, the helper arch_mfns_in_direct_map() 
would return false.

>> How would you proceed? Calling vmap() seems to be a bit overkill for
>> just a temporary mapping and I don't really want to rework this function
>> to use map_domain_page().
>>
>> In such case, how would you proceed? What do you suggest?
> 
> fixmap may be an option to consider, but I also don't see why you
> apparently think using vmap() would be a possibility while at the
> same time making use of map_domain_page() is too much effort.

I thought about using vmap() as it allows to map a contiguous region 
easily. It is also used in the follow-up patch 17/22, so I thought it 
could be viable.

I was reluctant to use map_domain_page() for two reasons. 1) it only 
allows to map one page at the time, so I'd need to rework more deeply 
the function dmi_iterate() 2) because the mapcache wouldn't be ready to 
use at that time, the mapping would end up in PMAP which is meant to map 
the page tables, nothing else.

-- 
Elias


From xen-devel-bounces@lists.xenproject.org Mon Jan 15 15:08:31 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 15 Jan 2024 15:08:31 +0000
Received: from list by lists.xenproject.org with outflank-mailman.667454.1038720 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPOZe-0003FR-Ss; Mon, 15 Jan 2024 15:08:26 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 667454.1038720; Mon, 15 Jan 2024 15:08:26 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPOZe-0003FK-NJ; Mon, 15 Jan 2024 15:08:26 +0000
Received: by outflank-mailman (input) for mailman id 667454;
 Mon, 15 Jan 2024 15:08:24 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=tunR=IZ=cloud.com=anthony.perard@srs-se1.protection.inumbo.net>)
 id 1rPOZc-0003Do-L4
 for xen-devel@lists.xenproject.org; Mon, 15 Jan 2024 15:08:24 +0000
Received: from mail-wm1-x32d.google.com (mail-wm1-x32d.google.com
 [2a00:1450:4864:20::32d])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id eb898bd3-b3b7-11ee-9b0f-b553b5be7939;
 Mon, 15 Jan 2024 16:08:20 +0100 (CET)
Received: by mail-wm1-x32d.google.com with SMTP id
 5b1f17b1804b1-40e760e5b49so12546475e9.1
 for <xen-devel@lists.xenproject.org>; Mon, 15 Jan 2024 07:08:20 -0800 (PST)
Received: from perard.uk.xensource.com (default-46-102-197-194.interdsl.co.uk.
 [46.102.197.194]) by smtp.gmail.com with ESMTPSA id
 h5-20020a05600c314500b0040e5e21cd7bsm16036394wmo.11.2024.01.15.07.08.19
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 15 Jan 2024 07:08:20 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: eb898bd3-b3b7-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1705331300; x=1705936100; darn=lists.xenproject.org;
        h=in-reply-to:content-transfer-encoding:content-disposition
         :mime-version:references:message-id:subject:cc:to:from:date:from:to
         :cc:subject:date:message-id:reply-to;
        bh=K9rzUaYZpXYTEVeRrX4tj1tEK4S5W1ku9LxNIp/QaXc=;
        b=j++JAe76lf+Ylj9eGYbaeIHkO9YwpKHLNewsrfJ9JI7m9nUoAbiGpW21mQhbxyTdGD
         ahwyteFxmNwV9cPPCwDM4Fsmqm36Wa5eP1i8cTXRDjxtwqh8tebQbUWEwX6B9S/qXjAU
         zHg0Mk/osXOcE+jv0YIcGyG47hfU1L6pkixMo=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705331300; x=1705936100;
        h=in-reply-to:content-transfer-encoding:content-disposition
         :mime-version:references:message-id:subject:cc:to:from:date
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=K9rzUaYZpXYTEVeRrX4tj1tEK4S5W1ku9LxNIp/QaXc=;
        b=lAdFe6sdtbG5qExTOC9jGSEIvkF1cHEHs7kdOAAEzBND+pnzL2q0w1+mVcX6GyzIoZ
         AWk0FLn9Q5ruWGwZw5ZEfWs9uUVuPjkvc0NeQ8dFRPJaxo3CMBGhrPR97TsZy6JdSbWy
         pwXD92slrPd57nJx87PpBmzLDqr2H06klQPq0dtE0UKREby+zv/jDxFrPCo99asZMT1p
         bWtqJY2z6ZzsA9UnMx5fGYUHk+8lgOgMgK/ZR9yUsxtYc+XWZP+4RVXbYeinh9lMU6q2
         uV/8eQaS4Tp8iM6xBHvRe6J/T1d+AuoH4f0bubuv75L7dmlzp6xNru9gthZ+3ZB6N/1O
         83KA==
X-Gm-Message-State: AOJu0YyEtNnLs+4wZI74BaNild0t1ImMYg9vs1EhpSkVQKi2KLPb0CN+
	t2gZP7dHmP+z8QJW8IKPzPHF7bhUVeFCGA==
X-Google-Smtp-Source: AGHT+IHjHfZST8cOJudRJHiiJkqeyNeIZVR2pL/XAulQ9cJEW05ul0HQPE2Y0v+WEu7vpW7JfXb+LQ==
X-Received: by 2002:a7b:c8c4:0:b0:40e:43fa:b8b8 with SMTP id f4-20020a7bc8c4000000b0040e43fab8b8mr2170359wml.90.1705331300378;
        Mon, 15 Jan 2024 07:08:20 -0800 (PST)
Date: Mon, 15 Jan 2024 15:08:19 +0000
From: Anthony PERARD <anthony.perard@citrix.com>
To: Roger Pau Monne <roger.pau@citrix.com>
Cc: xen-devel@lists.xenproject.org, iwj@xenproject.org,
	Jan Beulich <jbeulich@suse.com>
Subject: Re: [PATCH] osstest: bump /boot partition to 1G
Message-ID: <b552ee37-c5c8-438e-98fe-ecebad296bf7@perard>
References: <20240115141837.82983-1-roger.pau@citrix.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=iso-8859-1
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <20240115141837.82983-1-roger.pau@citrix.com>

On Mon, Jan 15, 2024 at 03:18:37PM +0100, Roger Pau Monne wrote:
> Increase the size of the boot partition, as arm64 initrd is already exhausting
> all the space:
> 
> update-initramfs: Generating /boot/initrd.img-6.7.0+
> gzip: stdout: No space left on device
> 
> Reported-by: Jan Beulich <jbeulich@suse.com>
> Signed-off-by: Roger Pau Monn <roger.pau@citrix.com>
> ---
>  Osstest.pm | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/Osstest.pm b/Osstest.pm
> index 7776ba88c6e2..a559ca4ea8b6 100644
> --- a/Osstest.pm
> +++ b/Osstest.pm
> @@ -94,7 +94,7 @@ our %c = qw(
>      HostProp_GenEtherPrefixBase 5e:36:0e:f5
>  
>      HostDiskESP    300
> -    HostDiskBoot   300
> +    HostDiskBoot  1000

Did you tried this change on the arm32 machine as well? If so:
Acked-by: Anthony PERARD <anthony.perard@citrix.com>

(Or I guess we can find out the result of the test on commit.)

Thanks,


-- 
Anthony PERARD


From xen-devel-bounces@lists.xenproject.org Mon Jan 15 15:08:55 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 15 Jan 2024 15:08:55 +0000
Received: from list by lists.xenproject.org with outflank-mailman.667456.1038731 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPOa7-0003nQ-4Q; Mon, 15 Jan 2024 15:08:55 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 667456.1038731; Mon, 15 Jan 2024 15:08:55 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPOa6-0003mT-W2; Mon, 15 Jan 2024 15:08:54 +0000
Received: by outflank-mailman (input) for mailman id 667456;
 Mon, 15 Jan 2024 15:08:53 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=ghqi=IZ=amd.com=Stewart.Hildebrand@srs-se1.protection.inumbo.net>)
 id 1rPOa5-0003Do-Iv
 for xen-devel@lists.xenproject.org; Mon, 15 Jan 2024 15:08:53 +0000
Received: from NAM04-MW2-obe.outbound.protection.outlook.com
 (mail-mw2nam04on20625.outbound.protection.outlook.com
 [2a01:111:f400:7e8c::625])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id fc6e8d10-b3b7-11ee-9b0f-b553b5be7939;
 Mon, 15 Jan 2024 16:08:50 +0100 (CET)
Received: from SJ0PR13CA0135.namprd13.prod.outlook.com (2603:10b6:a03:2c6::20)
 by MN2PR12MB4470.namprd12.prod.outlook.com (2603:10b6:208:260::19)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7181.19; Mon, 15 Jan
 2024 15:08:44 +0000
Received: from SJ1PEPF00001CE0.namprd05.prod.outlook.com
 (2603:10b6:a03:2c6:cafe::f2) by SJ0PR13CA0135.outlook.office365.com
 (2603:10b6:a03:2c6::20) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7202.17 via Frontend
 Transport; Mon, 15 Jan 2024 15:08:42 +0000
Received: from SATLEXMB04.amd.com (165.204.84.17) by
 SJ1PEPF00001CE0.mail.protection.outlook.com (10.167.242.8) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.7202.16 via Frontend Transport; Mon, 15 Jan 2024 15:08:42 +0000
Received: from SATLEXMB05.amd.com (10.181.40.146) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.34; Mon, 15 Jan
 2024 09:08:42 -0600
Received: from SATLEXMB03.amd.com (10.181.40.144) by SATLEXMB05.amd.com
 (10.181.40.146) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.34; Mon, 15 Jan
 2024 09:08:42 -0600
Received: from [172.23.114.18] (10.180.168.240) by SATLEXMB03.amd.com
 (10.181.40.144) with Microsoft SMTP Server id 15.1.2507.34 via Frontend
 Transport; Mon, 15 Jan 2024 09:08:40 -0600
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: fc6e8d10-b3b7-11ee-9b0f-b553b5be7939
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=HtmOfqgveubEkFKU9zXUYLmd+RkiCSxdT+e9cUigOYkTYfVsKJaMWbvYfT7m2NSYVRFwYQ93c6wlOfIIfk32a9UNRXXWsOwhSuDubhkW564iyC7iyxDH2ErwoSH/BVhH54OISxJLgYdsp9eIrUTWaHfvu1DHqBRrIOx/62RartxYJecZqavQbBBVONdkAH2lA+6+tPWjglpTeWBeHLKutPnhxCwiV5OOBoK9yONn82YHG1jXjVAGX1U1hS9+6SdLKZiFUZZ5ecHFvZX+FfNCOnXAZGE9Z9MwRTvXLkmsGn4vd9UDtaELpMkpGhCWCVTlot2oLN41Jnm1mVqV4Y5CCw==
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=XoCIHXPvOf+Un7JWgo3DW3wxXw+wXGd2XDSFARUz5lc=;
 b=Vczfm6hygBoZTKVtvFXOLyYVrklrDWhyqgXgHB7K0Kr1u4T5Q9R4GjjOBv1o8Zbd1FAaw+lsvdRtk8Rs1Q9AScMbcopZYygZ9oP9Ufj9zJ8iSBdrQOhCytZIdPX3m+4BC1vHkMkPWkI0e63eEr+1dWgNuzQ9JWfOtOhXeOrcW6orc3K5f+EWmXaeTrjjgH3CA1OVjKDOlHrHpslGPmVWYlAqHztuOZ/nXzzA1w2bwADbFLXSBPv4n2LMDXVXKcf0RKzwQzHSp8qqRJwrCous/VoJasRMpelJGziS8vPb2Dt/Ak9AzA+oDGhwVqi8+Px36bIWrRKflmN3OrFX+s+Cbg==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=citrix.com 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)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=XoCIHXPvOf+Un7JWgo3DW3wxXw+wXGd2XDSFARUz5lc=;
 b=MHPTaAxNsR8nP92iekSKjQz86eiJ5Y5l7CJ7JL3iWuz9amXqcn6cd+JkTjfAxBNq17mAQbe2SNSGNdrdBaAGglMTOLwwVlBIXgWF93kMGTSo1uDGn0oYMXOZPbJPUN1I675va6SqBIW5AuzoxFPovmUW0dERGJvtCXHQrBtz2oE=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C
Message-ID: <26b92079-4358-4fa8-97b3-b2e1ed7277e1@amd.com>
Date: Mon, 15 Jan 2024 10:08:35 -0500
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v12 01/15] vpci: use per-domain PCI lock to protect vpci
 structure
To: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
CC: <xen-devel@lists.xenproject.org>, Oleksandr Andrushchenko
	<oleksandr_andrushchenko@epam.com>, Jan Beulich <jbeulich@suse.com>, "Andrew
 Cooper" <andrew.cooper3@citrix.com>, Wei Liu <wl@xen.org>, George Dunlap
	<george.dunlap@citrix.com>, Julien Grall <julien@xen.org>, Stefano Stabellini
	<sstabellini@kernel.org>, Jun Nakajima <jun.nakajima@intel.com>, Kevin Tian
	<kevin.tian@intel.com>, Paul Durrant <paul@xen.org>, Volodymyr Babchuk
	<volodymyr_babchuk@epam.com>
References: <20240109215145.430207-1-stewart.hildebrand@amd.com>
 <20240109215145.430207-2-stewart.hildebrand@amd.com>
 <ZaFDS7uZgW5l0eHG@macbook> <590a157a-b9d4-4d2d-8aff-6584da3045c3@amd.com>
 <ZaTyehqxp_q9wY3Y@macbook>
Content-Language: en-US
From: Stewart Hildebrand <stewart.hildebrand@amd.com>
In-Reply-To: <ZaTyehqxp_q9wY3Y@macbook>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: SJ1PEPF00001CE0:EE_|MN2PR12MB4470:EE_
X-MS-Office365-Filtering-Correlation-Id: 5aa84502-f8fc-40af-1771-08dc15dbdd01
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam: BCL:0;
X-Microsoft-Antispam-Message-Info:
	/bA41UL0w4uLIhEzJkuHSQx9+U6vzQ8V2f8v6WyPKQjqHzgyxSoukMNl2m6fXf4RLPU1/dc0hwPV4p1eUI6yY9pmYJooj6E6bDmbCn9wrrDEPl4PIf5g9eb21AmophcUYERTC86Z1rSAN1pfY2XuZVocH+KKpJPwUFrMhCylim1eJeRMXOu49pgm/1OU/foloaKeVB8/E949/pbfaMqXl75doZWgdWuQEa7jX+xlGdPRC6clZpNo4LMKpioNnjvR7UDIQcNzb0t0pe3gSaw2ULJ0sjyG4FQzbSCL6wIxCHz6AK00iCyfoJXTaQnmkGTZsB6jpUkn1JaX2GkgkuMg4p430K3rVcrbtluHjcp8Wlojxsq1rMeydqq9yxG2BU3+1cPVrBfEUSe33HgvFa8X934ABfzxH7w7I5iwQOxxii8LdADTnH9ok1/lPIAzMjpeeI/Vp+31X1dY1WGIkTpVnzjUzb7p660fiHBNCG5JiYuQgOsK9D0bFKc5B8LoLhlMRzuF04ceynybLicxvyvUxxVL4ZCUwH4fctwCbeZHZdbWCAC8El73UmlmeNPSlW7YXNgwvWAC2+LOpr2D0YJR5q6bjzpk/gqx7RTftg9y+b7q++Fn8E9aB1dvQg5FmF58KWvjHZkDIyKAqvJkHXcuCz3cNIlq6rC5pf1E6sCWIZoZfTwx4Qo6QJzqnmyPQMBlD1fM83jndXfNyDZ+bA+lvE38C9axWg3QfrEKlI031ZibGmos+6Kx3Smxq0bdkesiYKULglKuxx6CDY+sMV13xp4dG4MQF1HKG5PLdu5zi09VgbzuaRD6KlulAWZOoQ9W
X-Forefront-Antispam-Report:
	CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230031)(4636009)(346002)(376002)(136003)(39860400002)(396003)(230922051799003)(186009)(1800799012)(451199024)(82310400011)(64100799003)(36840700001)(46966006)(40470700004)(83380400001)(6916009)(47076005)(16576012)(70206006)(316002)(54906003)(70586007)(53546011)(31696002)(44832011)(5660300002)(81166007)(426003)(2616005)(336012)(26005)(8676002)(8936002)(40480700001)(40460700003)(4326008)(356005)(82740400003)(86362001)(6666004)(31686004)(36860700001)(36756003)(41300700001)(478600001)(2906002)(7416002)(36900700001)(43740500002);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Jan 2024 15:08:42.8375
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 5aa84502-f8fc-40af-1771-08dc15dbdd01
X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com]
X-MS-Exchange-CrossTenant-AuthSource:
	SJ1PEPF00001CE0.namprd05.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR12MB4470

On 1/15/24 03:53, Roger Pau Monné wrote:
> On Fri, Jan 12, 2024 at 12:54:56PM -0500, Stewart Hildebrand wrote:
>> On 1/12/24 08:48, Roger Pau Monné wrote:
>>> On Tue, Jan 09, 2024 at 04:51:16PM -0500, Stewart Hildebrand wrote:
>>>> @@ -202,8 +204,20 @@ static int __init apply_map(struct domain *d, const struct pci_dev *pdev,
>>>>      struct map_data data = { .d = d, .map = true };
>>>>      int rc;
>>>>  
>>>> +    ASSERT(rw_is_write_locked(&d->pci_lock));
>>>> +
>>>>      while ( (rc = rangeset_consume_ranges(mem, map_range, &data)) == -ERESTART )
>>>> +    {
>>>> +        /*
>>>> +         * It's safe to drop and reacquire the lock in this context
>>>> +         * without risking pdev disappearing because devices cannot be
>>>> +         * removed until the initial domain has been started.
>>>> +         */
>>>> +        write_unlock(&d->pci_lock);
>>>>          process_pending_softirqs();
>>>> +        write_lock(&d->pci_lock);
>>>
>>> Hm, I should have noticed before, but we already call
>>> process_pending_softirqs() with the pdev->vpci->lock held here, so it
>>> would make sense to drop it also.
>>
>> I don't quite understand this, maybe I'm missing something. I don't see where we acquire pdev->vpci->lock before calling process_pending_softirqs()?
>>
>> Also, I tried adding
>>
>>     ASSERT(!spin_is_locked(&pdev->vpci->lock));
>>
>> both here in apply_map() and in vpci_process_pending(), and they haven't triggered in either dom0 or domU test cases, tested on both arm and x86.
> 
> I think I was confused.  Are you sure that pdev->vpci->lock is taken
> in the apply_map() call?

I'm sure that it's NOT taken in apply_map(). See the ! in the test ASSERT above.

> I was mistakenly assuming that
> vpci_add_handlers() called the init function with the vpci->lock
> taken, but that doesn't seem to be case with the current code.  That
> leads to apply_map() also being called without the vpci->lock taken.

Right.

> 
> I was wrongly assuming that apply_map() was called with the vpci->lock
> lock taken, and that would need dropping around the
> process_pending_softirqs() call.
> 
> Thanks, Roger.


From xen-devel-bounces@lists.xenproject.org Mon Jan 15 15:14:08 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 15 Jan 2024 15:14:08 +0000
Received: from list by lists.xenproject.org with outflank-mailman.667462.1038740 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPOf5-0006EC-Od; Mon, 15 Jan 2024 15:14:03 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 667462.1038740; Mon, 15 Jan 2024 15:14:03 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPOf5-0006E5-Lv; Mon, 15 Jan 2024 15:14:03 +0000
Received: by outflank-mailman (input) for mailman id 667462;
 Mon, 15 Jan 2024 15:14:02 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=tunR=IZ=cloud.com=anthony.perard@srs-se1.protection.inumbo.net>)
 id 1rPOf4-0006Dz-L0
 for xen-devel@lists.xenproject.org; Mon, 15 Jan 2024 15:14:02 +0000
Received: from mail-wm1-x330.google.com (mail-wm1-x330.google.com
 [2a00:1450:4864:20::330])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id b6c13732-b3b8-11ee-98f1-6d05b1d4d9a1;
 Mon, 15 Jan 2024 16:14:01 +0100 (CET)
Received: by mail-wm1-x330.google.com with SMTP id
 5b1f17b1804b1-40e80046246so2949455e9.1
 for <xen-devel@lists.xenproject.org>; Mon, 15 Jan 2024 07:14:01 -0800 (PST)
Received: from perard.uk.xensource.com (default-46-102-197-194.interdsl.co.uk.
 [46.102.197.194]) by smtp.gmail.com with ESMTPSA id
 r20-20020a05600c35d400b0040d8eca092esm20244013wmq.47.2024.01.15.07.14.00
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 15 Jan 2024 07:14:01 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: b6c13732-b3b8-11ee-98f1-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1705331641; x=1705936441; darn=lists.xenproject.org;
        h=in-reply-to:content-disposition:mime-version:references:message-id
         :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to;
        bh=+hzePe3fUFW6Q7NvaSwYvslxeKT/vQ8h/FWEisb5kGQ=;
        b=peu09xLw/EhcmgdrcBxzILeZIuE3MFGjS24Kx+lPnRD6X6u1eltYu+f2tYIQhEBKKw
         paKOGTdBLG+ajcc1iScGbM/Zr/EhCpegWCrA2xKOFZJiQb3kymP6xsPcYLoBMxRMD9/O
         TkmDS1oTIcT5/S/drOE9fq+UqPsCZP9N1wIAM=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705331641; x=1705936441;
        h=in-reply-to:content-disposition:mime-version:references:message-id
         :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to;
        bh=+hzePe3fUFW6Q7NvaSwYvslxeKT/vQ8h/FWEisb5kGQ=;
        b=qJPgVQNcwmTf+mzKThtN48QxE2kV4ImrQTCPTEEKKSY7nFISVFdN7JFB4XzBxb1O4R
         t/04zMo5aYyVtPtHQ1Hiyb5NVLNj1FektUARh4jeku5raLvRm33WqCSnAnH+Igw0/Yz4
         MmIxGuYSQWMPuO5dfH/7kjXWfubvdm5Huh7+ulAKw0KxIXLe4iMPJFfnWf6jFAbodUYh
         9CAvjM48GJ8bf2jIMtL7eDDQIzGPZhRfSMxMlovz1K+tcvsg6KGcGnaIVaL527w2w7za
         vsegkFidYVW3KTaVNC9EjNfd8R4uU1GD5dWan+l7CvpUIO8ZfUzsDfNZmgARP66wg1Do
         egPQ==
X-Gm-Message-State: AOJu0YwqiCf/iV9n+tzcGDXlvMUKd6nRilv5+o/VFj48by18d5DvLWiu
	ZwbawwSJocih+68pFdZzxzK0dZlI2kSuXA==
X-Google-Smtp-Source: AGHT+IGng3lKWQ40PQR8nFimpuYG2bWbdlp/ufA/x+UJXbvAbom1GkwdcEorQC40nMa8OLtgtCm7vQ==
X-Received: by 2002:a7b:cbd4:0:b0:40e:6529:37d with SMTP id n20-20020a7bcbd4000000b0040e6529037dmr2571675wmi.119.1705331641307;
        Mon, 15 Jan 2024 07:14:01 -0800 (PST)
Date: Mon, 15 Jan 2024 15:14:00 +0000
From: Anthony PERARD <anthony.perard@citrix.com>
To: Juergen Gross <jgross@suse.com>
Cc: xen-devel@lists.xenproject.org, Wei Liu <wl@xen.org>,
	Jason Andryuk <jandryuk@gmail.com>
Subject: Re: [PATCH v3 17/33] tools/xl: support new 9pfs backend xen-9pfsd
Message-ID: <43cb6d28-34da-47b9-b61f-0be8298f9d8b@perard>
References: <20240104090055.27323-1-jgross@suse.com>
 <20240104090055.27323-18-jgross@suse.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <20240104090055.27323-18-jgross@suse.com>

On Thu, Jan 04, 2024 at 10:00:39AM +0100, Juergen Gross wrote:
> @@ -2242,6 +2256,28 @@ void parse_config_data(const char *config_source,
>  
>              libxl_string_list_dispose(&pairs);
>  
> +            if (p9->type == LIBXL_P9_TYPE_UNKNOWN) {
> +                p9->type = LIBXL_P9_TYPE_QEMU;

The defaulting is normally done in libxl, so that it works for all users
of libxl. Can this be done instead in libxl? Hopefully, it's enough to
do it in libxl__device_p9_setdefault().

Same question for the followup checks and default values.

> +            }
> +            if (p9->type == LIBXL_P9_TYPE_QEMU &&
> +                (p9->max_files || p9->max_open_files || p9->max_space ||
> +                 p9->auto_delete)) {
> +                fprintf(stderr, "Illegal 9pfs parameter combination\n");
> +                exit(1);
> +            }
> +            if (p9->type == LIBXL_P9_TYPE_XEN_9PFSD) {
> +                if (!p9->tag) {
> +                    replace_string(&p9->tag, "Xen");
> +                }
> +                if (!p9->path) {
> +                    char *path;
> +
> +                    xasprintf(&path, XEN_LOG_DIR "/guests/%s", c_info->name);
> +                    replace_string(&p9->path, path);
> +                    free(path);
> +                }
> +            }

Thanks,

-- 
Anthony PERARD


From xen-devel-bounces@lists.xenproject.org Mon Jan 15 15:26:48 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 15 Jan 2024 15:26:48 +0000
Received: from list by lists.xenproject.org with outflank-mailman.667469.1038751 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPOrE-0001UZ-Sm; Mon, 15 Jan 2024 15:26:36 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 667469.1038751; Mon, 15 Jan 2024 15:26:36 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPOrE-0001US-O0; Mon, 15 Jan 2024 15:26:36 +0000
Received: by outflank-mailman (input) for mailman id 667469;
 Mon, 15 Jan 2024 15:26:35 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=Y0sJ=IZ=cloud.com=roger.pau@srs-se1.protection.inumbo.net>)
 id 1rPOrD-0001UM-2j
 for xen-devel@lists.xenproject.org; Mon, 15 Jan 2024 15:26:35 +0000
Received: from mail-ed1-x52c.google.com (mail-ed1-x52c.google.com
 [2a00:1450:4864:20::52c])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 7638cc81-b3ba-11ee-9b0f-b553b5be7939;
 Mon, 15 Jan 2024 16:26:32 +0100 (CET)
Received: by mail-ed1-x52c.google.com with SMTP id
 4fb4d7f45d1cf-55965fd00aeso703531a12.0
 for <xen-devel@lists.xenproject.org>; Mon, 15 Jan 2024 07:26:32 -0800 (PST)
Received: from localhost ([213.195.127.68]) by smtp.gmail.com with ESMTPSA id
 k8-20020a056402048800b00558a6025397sm5326623edv.14.2024.01.15.07.26.31
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 15 Jan 2024 07:26:31 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 7638cc81-b3ba-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1705332392; x=1705937192; darn=lists.xenproject.org;
        h=in-reply-to:content-transfer-encoding:content-disposition
         :mime-version:references:message-id:subject:cc:to:from:date:from:to
         :cc:subject:date:message-id:reply-to;
        bh=Uyi7bdC/N/hyelN5IZYPeFrmv8yIwaedlu/QmVak+tA=;
        b=IvVBfw09tuLWNpwUdUmOgEYASZFyGwFIkjcaqukhWA/2dj/gEm3J1EtGMceSOuH/eQ
         OJs+017hCRnJIqRmVx5R+koF5oA071LBrG7X1/o481XmDpTzHn/7dw6B+ob0etzuVG7u
         rQXqyfpIPvd7BgEzEmvjJHgJpHrwyBZkwBxws=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705332392; x=1705937192;
        h=in-reply-to:content-transfer-encoding:content-disposition
         :mime-version:references:message-id:subject:cc:to:from:date
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=Uyi7bdC/N/hyelN5IZYPeFrmv8yIwaedlu/QmVak+tA=;
        b=LecfSpep8p0hcpB/UNi+oOgJa/Z8Dnje8FPqdKTfG+wTYxD6kbzZbZAdnRSkEbSvKj
         idfjJ2cPpu+88wvcBgZPfZO1qpuQnjq8Hi/nnyncUvmtjqYM8PcAvSKPwxoTd2SyzuZZ
         Q7e91eKDFZLWDFHWO/u1hjRqxgmXDpOLTuo3Jlr8w+fZS5CRXEP7lPD+hoP7+3i1gRkN
         bf/pdSPS756rcQ8/MgdjMz60IkZlDLcLanMNJ48jY6BHDZ8WEP9b+QhUc4BsbTYqrzYo
         MFnDB0QQnA2F3VfvASzHwMPenOObrin7wNhP6XYqybZCTlCgsEMcbYwxfDdSuzt4Sg2u
         OoLg==
X-Gm-Message-State: AOJu0Yw9vjEuQtiVtpRKwA/HcAHQBbyUERD4jzlGHrNsViAvA3Wg6tjY
	g2uQlSPuAYr+IJ82HcaCgBUiZgWQkluB1g==
X-Google-Smtp-Source: AGHT+IFuKDvY70ngqv07BBITMIxE/f1J3x2ajnlp3wRd4nrK8JVYOj/xqy41mvCkuNqPEgiQBZgxiw==
X-Received: by 2002:aa7:cd62:0:b0:557:9018:9980 with SMTP id ca2-20020aa7cd62000000b0055790189980mr2736902edb.52.1705332391988;
        Mon, 15 Jan 2024 07:26:31 -0800 (PST)
Date: Mon, 15 Jan 2024 16:26:30 +0100
From: Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
To: Anthony PERARD <anthony.perard@citrix.com>
Cc: xen-devel@lists.xenproject.org, iwj@xenproject.org,
	Jan Beulich <jbeulich@suse.com>
Subject: Re: [PATCH] osstest: bump /boot partition to 1G
Message-ID: <ZaVOpt3H0-Pn8Zf9@macbook>
References: <20240115141837.82983-1-roger.pau@citrix.com>
 <b552ee37-c5c8-438e-98fe-ecebad296bf7@perard>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <b552ee37-c5c8-438e-98fe-ecebad296bf7@perard>

On Mon, Jan 15, 2024 at 03:08:19PM +0000, Anthony PERARD wrote:
> On Mon, Jan 15, 2024 at 03:18:37PM +0100, Roger Pau Monne wrote:
> > Increase the size of the boot partition, as arm64 initrd is already exhausting
> > all the space:
> > 
> > update-initramfs: Generating /boot/initrd.img-6.7.0+
> > gzip: stdout: No space left on device
> > 
> > Reported-by: Jan Beulich <jbeulich@suse.com>
> > Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
> > ---
> >  Osstest.pm | 2 +-
> >  1 file changed, 1 insertion(+), 1 deletion(-)
> > 
> > diff --git a/Osstest.pm b/Osstest.pm
> > index 7776ba88c6e2..a559ca4ea8b6 100644
> > --- a/Osstest.pm
> > +++ b/Osstest.pm
> > @@ -94,7 +94,7 @@ our %c = qw(
> >      HostProp_GenEtherPrefixBase 5e:36:0e:f5
> >  
> >      HostDiskESP    300
> > -    HostDiskBoot   300
> > +    HostDiskBoot  1000
> 
> Did you tried this change on the arm32 machine as well? If so:
> Acked-by: Anthony PERARD <anthony.perard@citrix.com>
> 
> (Or I guess we can find out the result of the test on commit.)

Only tested on the arm64 box, I can run a full flight, but we
might as well send it to pre-test and see what we get.

Let me know if you are OK with that.

Thanks, Roger.


From xen-devel-bounces@lists.xenproject.org Mon Jan 15 15:32:05 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 15 Jan 2024 15:32:05 +0000
Received: from list by lists.xenproject.org with outflank-mailman.667472.1038760 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPOwT-0004hH-Dl; Mon, 15 Jan 2024 15:32:01 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 667472.1038760; Mon, 15 Jan 2024 15:32:01 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPOwT-0004hA-Av; Mon, 15 Jan 2024 15:32:01 +0000
Received: by outflank-mailman (input) for mailman id 667472;
 Mon, 15 Jan 2024 15:31:59 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=tunR=IZ=cloud.com=anthony.perard@srs-se1.protection.inumbo.net>)
 id 1rPOwR-0004h4-DS
 for xen-devel@lists.xenproject.org; Mon, 15 Jan 2024 15:31:59 +0000
Received: from mail-wr1-x42a.google.com (mail-wr1-x42a.google.com
 [2a00:1450:4864:20::42a])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 37dd0e5a-b3bb-11ee-9b0f-b553b5be7939;
 Mon, 15 Jan 2024 16:31:57 +0100 (CET)
Received: by mail-wr1-x42a.google.com with SMTP id
 ffacd0b85a97d-336746c7b6dso7601975f8f.0
 for <xen-devel@lists.xenproject.org>; Mon, 15 Jan 2024 07:31:57 -0800 (PST)
Received: from perard.uk.xensource.com (default-46-102-197-194.interdsl.co.uk.
 [46.102.197.194]) by smtp.gmail.com with ESMTPSA id
 dr3-20020a5d5f83000000b00336ca349bdesm12274649wrb.47.2024.01.15.07.31.56
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 15 Jan 2024 07:31:56 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 37dd0e5a-b3bb-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1705332717; x=1705937517; darn=lists.xenproject.org;
        h=in-reply-to:content-disposition:mime-version:references:message-id
         :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to;
        bh=JHAWqQkH6zAOHcspM8GtHmviVe+n90/bHhVj77LgGcI=;
        b=HoXcgdqpt46B658UquKFrIPI/H0Lwz7Jw7Dd5aK2OvXxtpKgaxxZNGjpekWvyMT4/r
         VE7mlY2MacYOv0NAcb5bOgVy/r2pbadeyQsPtGaR0x08aI14CtZitwveMzO49yVJxiJh
         A1hdcY0v1nI9l3D0sk0Fxx65ruHLAlO07zJIM=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705332717; x=1705937517;
        h=in-reply-to:content-disposition:mime-version:references:message-id
         :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to;
        bh=JHAWqQkH6zAOHcspM8GtHmviVe+n90/bHhVj77LgGcI=;
        b=oPS9PW8rf2d4InAPudM6pzPvlfeMkWzirwMijMs+049ZGdIF2Z9WcQw4QwA6lS9grx
         KlB/XtJr9l6E5tYGfhflD2MuP+aT0mI7qx1ZEc4uZSi5WCnm4siukF6GSVE3fYh7ryKv
         9JVPVknuO01bgOOdgnd9ui75udYi8bgJL94urV+tx4JhfmnkHIeULlK25sSgGb0YRD7q
         9xrAo/D170bLbQllsQJyaY1LsuXbQ1Cyooyr8Or+sNVjhmpbKSNtROi3hZWZ2KeLIsHz
         kDc5w7Ru30KlNIZtgV6WxELoSh7sJfdge5/92ZSddcQyb+DoiGfaR4GZtRwCqTAfdnFI
         b7zA==
X-Gm-Message-State: AOJu0YwwOfXLOYJzWKhY/bl4zh5SnoNBgfIT3HqMsX22JKc2rlYbUl6a
	vzJsHwFYwhgWQ/DSgNPUiy8ndCI7qNAMfA==
X-Google-Smtp-Source: AGHT+IGlOdlyj8u0ybHIAKRHtsQImammuEo3VF2mbljoDLhYHbq++Am8ABi+1d0z0Ww/AZnKN37V2w==
X-Received: by 2002:a5d:4403:0:b0:337:9fc0:67df with SMTP id z3-20020a5d4403000000b003379fc067dfmr1745106wrq.22.1705332716875;
        Mon, 15 Jan 2024 07:31:56 -0800 (PST)
Date: Mon, 15 Jan 2024 15:31:56 +0000
From: Anthony PERARD <anthony.perard@citrix.com>
To: Juergen Gross <jgross@suse.com>
Cc: xen-devel@lists.xenproject.org, Wei Liu <wl@xen.org>,
	Julien Grall <julien@xen.org>, Jason Andryuk <jandryuk@gmail.com>
Subject: Re: [PATCH v3 21/33] tools: add 9pfs device to xenstore-stubdom
Message-ID: <55c49bed-4039-449c-bb79-412ea9c2b5e2@perard>
References: <20240104090055.27323-1-jgross@suse.com>
 <20240104090055.27323-22-jgross@suse.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <20240104090055.27323-22-jgross@suse.com>

On Thu, Jan 04, 2024 at 10:00:43AM +0100, Juergen Gross wrote:
> Add a 9pfs device to Xenstore stubdom in order to allow it to do e.g.
> logging into a dom0 file.
> 
> Use the following parameters for the new device:
> 
> - tag = "xen"

Is it ok to have here tag "xen" when the default tag is "Xen" ?

> diff --git a/tools/include/libxl.h b/tools/include/libxl.h
> index 907aa0a330..00693264f7 100644
> --- a/tools/include/libxl.h
> +++ b/tools/include/libxl.h
> @@ -2060,6 +2067,16 @@ int libxl_console_add_xenstore(libxl_ctx *ctx, uint32_t domid, uint32_t backend,
>                                 const libxl_asyncop_how *ao_how)
>                                 LIBXL_EXTERNAL_CALLERS_ONLY;
>  
> +/* libxl_p9_add_xenstore writes the Xenstore entries for a domain's
> + * primary 9pfs device based on domid, backend type and device parameters.
> + */
> +int libxl_p9_add_xenstore(libxl_ctx *ctx, uint32_t domid, uint32_t backend,
> +                          libxl_p9_type type, char *tag, char *path,
> +                          char *security_model, unsigned int max_space,
> +                          unsigned int max_files, unsigned int max_open_files,
> +                          bool auto_delete, const libxl_asyncop_how *ao_how)

Could we simply pass a "libxl_device_p9*" instead of all these
parameters? It would also mean that we can update the list of parameters
without having to change the function prototype.

These functions tend to be called "libxl_device_*_add()", is it possible
to follow the same schema? In particular, I don't see anything xenstore
specific in the function.

Thanks,

-- 
Anthony PERARD


From xen-devel-bounces@lists.xenproject.org Mon Jan 15 15:38:55 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 15 Jan 2024 15:38:55 +0000
Received: from list by lists.xenproject.org with outflank-mailman.667477.1038769 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPP35-0005wq-2o; Mon, 15 Jan 2024 15:38:51 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 667477.1038769; Mon, 15 Jan 2024 15:38:51 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPP35-0005wj-0F; Mon, 15 Jan 2024 15:38:51 +0000
Received: by outflank-mailman (input) for mailman id 667477;
 Mon, 15 Jan 2024 15:38:49 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=tunR=IZ=cloud.com=anthony.perard@srs-se1.protection.inumbo.net>)
 id 1rPP33-0005wc-QN
 for xen-devel@lists.xenproject.org; Mon, 15 Jan 2024 15:38:49 +0000
Received: from mail-ej1-x629.google.com (mail-ej1-x629.google.com
 [2a00:1450:4864:20::629])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 2c83ea62-b3bc-11ee-9b0f-b553b5be7939;
 Mon, 15 Jan 2024 16:38:47 +0100 (CET)
Received: by mail-ej1-x629.google.com with SMTP id
 a640c23a62f3a-a28f66dc7ffso1797396466b.0
 for <xen-devel@lists.xenproject.org>; Mon, 15 Jan 2024 07:38:47 -0800 (PST)
Received: from perard.uk.xensource.com (default-46-102-197-194.interdsl.co.uk.
 [46.102.197.194]) by smtp.gmail.com with ESMTPSA id
 bt22-20020a170906b15600b00a2c32c5f484sm5356256ejb.209.2024.01.15.07.38.46
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 15 Jan 2024 07:38:47 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 2c83ea62-b3bc-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1705333127; x=1705937927; darn=lists.xenproject.org;
        h=in-reply-to:content-disposition:mime-version:references:message-id
         :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to;
        bh=M2HFNFbTvTgM7yHAJxm7DJmU2DepMFt5F9qPq7FLa0s=;
        b=CzmVyQPYtHUsMO0UA2fB7nnsDWA6GFziuTzcElyCGjPN7nN/PG2uz7KMgLISnFMlZE
         obC6sA+T9uYdjALR31eptA29cDuHqbn+EYBAfptdmwX9Mq3NMySdiA2uuaOLwETzbROU
         yqWWjTdfRbgn0xWxR6/xMZTEH7hO1QpdiwZog=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705333127; x=1705937927;
        h=in-reply-to:content-disposition:mime-version:references:message-id
         :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to;
        bh=M2HFNFbTvTgM7yHAJxm7DJmU2DepMFt5F9qPq7FLa0s=;
        b=kAKarc4bo/3RzA9czIC3UfX4wc3yugfS/aomv/vWYWSpkDnwX1+8m1y/nOueXPddIO
         +QN6+rz0Q00Gy/homYfKbLLJtfNd3idbc9xA8mb4drFSsSY8sVdpKKcxmPJKW2FemsIN
         jNjWlEntRMllxeo2Uyirc7hKBLZUFTY0ReueJUVussQ++QhC1yHg8uzKEDbbG0u/0S3F
         aKE/vvymlsfM5HieGH1559rPACAVjc2/yeUin3EPFyN7gCWK4vejBOXN/OC+QU3+tYLD
         i+ygSMo1yHMbsLuJ7xxZ6Ck2f0Cz5+EKG/uJDQCzYNgg2Fs1zv7DGvrzY0PQBqhzUBym
         AWcw==
X-Gm-Message-State: AOJu0YwR6xlm0iThM06hq9P43mCVq1tRVTXsaAIO9hV/yTbyj8AaQI0S
	v+eGuuaN8awkYrZ2j59T5wWeNE0GdfqKU2Qa4ZYCJ7zJVro=
X-Google-Smtp-Source: AGHT+IF7u5L1piLdoDoPgYO5UwOHphMpeOcM9ULY8oN1bKqBSfzY4RaeN78APTliW5GlQ6ttuqqFYg==
X-Received: by 2002:a17:907:c719:b0:a2c:2cef:2542 with SMTP id ty25-20020a170907c71900b00a2c2cef2542mr6554403ejc.16.1705333127385;
        Mon, 15 Jan 2024 07:38:47 -0800 (PST)
Date: Mon, 15 Jan 2024 15:38:46 +0000
From: Anthony PERARD <anthony.perard@citrix.com>
To: Juergen Gross <jgross@suse.com>
Cc: xen-devel@lists.xenproject.org,
	George Dunlap <george.dunlap@citrix.com>,
	Nick Rosbrook <rosbrookn@gmail.com>, Wei Liu <wl@xen.org>,
	Jason Andryuk <jandryuk@gmail.com>
Subject: Re: [PATCH v3 16/33] tools/libs/light: add backend type for 9pfs PV
 devices
Message-ID: <cfecc01a-b4c7-4b21-833f-d9ebcea8a89e@perard>
References: <20240104090055.27323-1-jgross@suse.com>
 <20240104090055.27323-17-jgross@suse.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <20240104090055.27323-17-jgross@suse.com>

On Thu, Jan 04, 2024 at 10:00:38AM +0100, Juergen Gross wrote:
> +static void libxl__device_p9_add(libxl__egc *egc, uint32_t domid,
> +                                 libxl_device_p9 *p9,
> +                                 libxl__ao_device *aodev)
> +{
> +    int rc;

Can you make a copy of `p9` here, or maybe in xen9pfsd_spawn? There's no
guaranty that `p9` will still be around by the time
xen9pfsd_spawn_outcome() is executed.

(with libxl_device_p9_copy())

> +    rc = xen9pfsd_spawn(egc, domid, p9, aodev);
> +    if (rc == 1)
> +        return;
> +
> +    if (rc == 0)
> +        libxl__device_add_async(egc, domid, &libxl__p9_devtype, p9, aodev);
> +
> +    aodev->rc = rc;
> +    if (rc)
> +        aodev->callback(egc, aodev);
> +}
> +

Cheers,

-- 
Anthony PERARD


From xen-devel-bounces@lists.xenproject.org Mon Jan 15 15:42:14 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 15 Jan 2024 15:42:14 +0000
Received: from list by lists.xenproject.org with outflank-mailman.667480.1038780 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPP6K-0008PC-HU; Mon, 15 Jan 2024 15:42:12 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 667480.1038780; Mon, 15 Jan 2024 15:42:12 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPP6K-0008P5-DB; Mon, 15 Jan 2024 15:42:12 +0000
Received: by outflank-mailman (input) for mailman id 667480;
 Mon, 15 Jan 2024 15:42:11 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=tunR=IZ=cloud.com=anthony.perard@srs-se1.protection.inumbo.net>)
 id 1rPP6J-0008Oz-R6
 for xen-devel@lists.xenproject.org; Mon, 15 Jan 2024 15:42:11 +0000
Received: from mail-ej1-x629.google.com (mail-ej1-x629.google.com
 [2a00:1450:4864:20::629])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id a572b9eb-b3bc-11ee-98f1-6d05b1d4d9a1;
 Mon, 15 Jan 2024 16:42:10 +0100 (CET)
Received: by mail-ej1-x629.google.com with SMTP id
 a640c23a62f3a-a28a6cef709so987233166b.1
 for <xen-devel@lists.xenproject.org>; Mon, 15 Jan 2024 07:42:10 -0800 (PST)
Received: from perard.uk.xensource.com (default-46-102-197-194.interdsl.co.uk.
 [46.102.197.194]) by smtp.gmail.com with ESMTPSA id
 qc21-20020a170906d8b500b00a26ac5e3683sm5396852ejb.100.2024.01.15.07.42.09
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 15 Jan 2024 07:42:09 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: a572b9eb-b3bc-11ee-98f1-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1705333330; x=1705938130; darn=lists.xenproject.org;
        h=in-reply-to:content-disposition:mime-version:references:message-id
         :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to;
        bh=w479U4xtwJAf5IuOKVdAk7jshwBn9K1/tolR5ewe7OM=;
        b=s6we3uEqx/zD444QYmhUps77UDMOrRwh2+8ZgohBhIn3cHos7I84KJbxWGIsJs3Ajo
         dmTh7l6w7tem2QHTQdKL0SjKBUYtyZm21Q8oLMCsxZkhYxzStNds+0InbXgLZ1LJc7Vs
         6YI+IS1oZUtECUGwKvyPwYzaPKJPP91SaRXKo=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705333330; x=1705938130;
        h=in-reply-to:content-disposition:mime-version:references:message-id
         :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to;
        bh=w479U4xtwJAf5IuOKVdAk7jshwBn9K1/tolR5ewe7OM=;
        b=aPA0vNcI4armSqVfVvkQM9987SSeiohhgSaHp5EXuUbmzCVgxeMEP+Bp9VZ21FVKCw
         r9ABuXnWeVQhgUpsMsYbxvKwzI/GxeX4bMTeofu7K3fns2zSnr9hqLYPoZKzeVDtNT3Q
         t98P3UWI31dpL+EJM+ydUQ22wkCKbqcq5yUSut6GAZRGcMgpmCeUVuGhbjsHhm4zYRtd
         p61OUNmwlzOXCxrvDeqnZmcUyeRglj9+t4fXqSDzgSWancG+htNwO5AbXVFJZB4w/5j0
         zcWloGM1rP9ZhMIf1QEY49xLy+gv1Y/eaXI5CZ9aB3MQK08dWWb1NbF+xwTmf0L1QR5t
         4JqQ==
X-Gm-Message-State: AOJu0YxYqcMzbTyv3Gam7NtqoVs1TpUbgX9aUCesfGf1JqUE4Fe5bPIB
	cz4P4DiGErA/02L7PuNKiI6msX9a/+O85g==
X-Google-Smtp-Source: AGHT+IH7UZUULTz6NPtrpB9XHNRbtdyaVDYfzoppljJB/11dNffDdSMYoh5ZPDa1giAUNd2V9Y1NJw==
X-Received: by 2002:a17:906:3e49:b0:a2d:c66a:feb6 with SMTP id t9-20020a1709063e4900b00a2dc66afeb6mr887168eji.83.1705333330295;
        Mon, 15 Jan 2024 07:42:10 -0800 (PST)
Date: Mon, 15 Jan 2024 15:42:09 +0000
From: Anthony PERARD <anthony.perard@citrix.com>
To: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: Juergen Gross <jgross@suse.com>, xen-devel@lists.xenproject.org,
	Wei Liu <wl@xen.org>, George Dunlap <george.dunlap@citrix.com>,
	Nick Rosbrook <rosbrookn@gmail.com>, Julien Grall <julien@xen.org>,
	Samuel Thibault <samuel.thibault@ens-lyon.org>
Subject: Re: [PATCH v3 00/33] tools: enable xenstore-stubdom to use 9pfs
Message-ID: <ffd345a5-018e-4c42-b5ba-093ffe26e68b@perard>
References: <20240104090055.27323-1-jgross@suse.com>
 <db974c3d-7bd8-4317-8757-e7fd3ebda7b3@citrix.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <db974c3d-7bd8-4317-8757-e7fd3ebda7b3@citrix.com>

On Fri, Jan 05, 2024 at 03:20:11PM +0000, Andrew Cooper wrote:
> On 04/01/2024 9:00 am, Juergen Gross wrote:
> >   tools: add a new xen logging daemon
> >   tools/xenlogd: connect to frontend
> >   tools/xenlogd: add transport layer
> >   tools/xenlogd: add 9pfs response generation support
> >   tools/xenlogd: add 9pfs version request support
> >   tools/xenlogd: add 9pfs attach request support
> >   tools/xenlogd: add 9pfs walk request support
> >   tools/xenlogd: add 9pfs open request support
> >   tools/xenlogd: add 9pfs clunk request support
> >   tools/xenlogd: add 9pfs create request support
> >   tools/xenlogd: add 9pfs stat request support
> >   tools/xenlogd: add 9pfs write request support
> >   tools/xenlogd: add 9pfs read request support
> 
> These all need s/logd/9pfsd/, although I think mostly in the subject only.
> 
> Can be fixed on commit, because some of them look like they're otherwise
> ready to go in.

For all these patch, with the subject fixed:
Acked-by: Anthony PERARD <anthony.perard@citrix.com>

Cheers,

-- 
Anthony PERARD


From xen-devel-bounces@lists.xenproject.org Mon Jan 15 15:42:32 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 15 Jan 2024 15:42:32 +0000
Received: from list by lists.xenproject.org with outflank-mailman.667482.1038790 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPP6e-0000Ul-Nn; Mon, 15 Jan 2024 15:42:32 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 667482.1038790; Mon, 15 Jan 2024 15:42:32 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPP6e-0000UR-Km; Mon, 15 Jan 2024 15:42:32 +0000
Received: by outflank-mailman (input) for mailman id 667482;
 Mon, 15 Jan 2024 15:42:32 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=ghqi=IZ=amd.com=Stewart.Hildebrand@srs-se1.protection.inumbo.net>)
 id 1rPP6d-0000TC-VT
 for xen-devel@lists.xenproject.org; Mon, 15 Jan 2024 15:42:32 +0000
Received: from NAM11-DM6-obe.outbound.protection.outlook.com
 (mail-dm6nam11on20621.outbound.protection.outlook.com
 [2a01:111:f400:7eaa::621])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id afbefa0a-b3bc-11ee-9b0f-b553b5be7939;
 Mon, 15 Jan 2024 16:42:29 +0100 (CET)
Received: from MN2PR04CA0006.namprd04.prod.outlook.com (2603:10b6:208:d4::19)
 by CY8PR12MB7196.namprd12.prod.outlook.com (2603:10b6:930:58::12)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7181.21; Mon, 15 Jan
 2024 15:42:25 +0000
Received: from MN1PEPF0000F0E4.namprd04.prod.outlook.com
 (2603:10b6:208:d4:cafe::7e) by MN2PR04CA0006.outlook.office365.com
 (2603:10b6:208:d4::19) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7181.23 via Frontend
 Transport; Mon, 15 Jan 2024 15:42:24 +0000
Received: from SATLEXMB03.amd.com (165.204.84.17) by
 MN1PEPF0000F0E4.mail.protection.outlook.com (10.167.242.42) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.7202.16 via Frontend Transport; Mon, 15 Jan 2024 15:42:24 +0000
Received: from SATLEXMB04.amd.com (10.181.40.145) by SATLEXMB03.amd.com
 (10.181.40.144) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.34; Mon, 15 Jan
 2024 09:42:24 -0600
Received: from [172.23.114.18] (10.180.168.240) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server id 15.1.2507.34 via Frontend
 Transport; Mon, 15 Jan 2024 09:42:22 -0600
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: afbefa0a-b3bc-11ee-9b0f-b553b5be7939
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=CWGKTIVKeOxsWiJTb18zYT0WOCdc5U3wgjEoGNFaL5VEnvf8pEb3MWsWKzYpw69z0xNrJ4ZVOzSze51Abw3kklkbmpNrvsxaFJlcP6sKdUt0vI2ecyfWCUG8oRBqrnVPNkFeRvuV2Ms2PQjFyR/itChzoabwVspk2zBFibUb+sBySChKdEevElhGjpdZ5pveBJMyPAj/gWPsYl601QAttFst7rGRqPs3gvegrXAhjOkd5+c/9atQ9uJWXa6RQbURblCWklsVN2/AW3ozndl6Uxs71AEMSGznxJwHIpG14qrs3zfsEpIWhT0tUBh6DriIt/BTVXHZI0QNA1Qkvg59mg==
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=X8LyQ3kFZs9jUVPfPzYWAGrMiG0wFz6CBulE1PQ/kcE=;
 b=KJwPHYtH1Ef8Tom54z2UQBgfnN759fXIpmTkYy7xuNpGLZ+CcAt2ZjAx38Is6qB6yeTowUjQbkNpktOskEsm+Qyx6chDj5vt1ZW9DztkBTNH1X/SA6VSztqk+JlZPZq3OnfisZA+r3oqJx+dl1jOmTRSpxHfN3CFYv82tZ4CHzM5czk+7PazR0Ybzr3QZcZU7WzeRJkHWZj1++MqtVMtw82+sR0RLVVk6+EsrIpWED02RXpBi0W6jdsAw/sbfbt0chemAjIIbCmBqcwomC2NkrCCnpzTFf2oaYZNTLI6T9jMZAyj6tT8l7mqwKZk9xNWNVqm3/UYSyGkQ4p917kHoA==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=suse.com 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)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=X8LyQ3kFZs9jUVPfPzYWAGrMiG0wFz6CBulE1PQ/kcE=;
 b=seeQB8YtdXXdkHxUaKgl8CakDR6vjE+fUlGUH5bygc3JsID+SU5T9MVt13nD2cGH/BB1s0SYL+UPDsORYqLXDZzUL+ayL9yaUkSO8/p6mqrOf6g0Ye/AkbbZmmUevnfl2QbElojAnpYk8rTprVe16JLG1fGhUgX1Bm/6PAY8kZw=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=SATLEXMB03.amd.com; pr=C
Message-ID: <ad4b7b5b-8abb-4693-9f7e-ef94bcb0d3a4@amd.com>
Date: Mon, 15 Jan 2024 10:42:21 -0500
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v12.1 01/15] vpci: use per-domain PCI lock to protect vpci
 structure
Content-Language: en-US
To: Jan Beulich <jbeulich@suse.com>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
	<roger.pau@citrix.com>
CC: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>, Andrew Cooper
	<andrew.cooper3@citrix.com>, Wei Liu <wl@xen.org>, George Dunlap
	<george.dunlap@citrix.com>, Julien Grall <julien@xen.org>, Stefano Stabellini
	<sstabellini@kernel.org>, Jun Nakajima <jun.nakajima@intel.com>, Kevin Tian
	<kevin.tian@intel.com>, Paul Durrant <paul@xen.org>, Volodymyr Babchuk
	<volodymyr_babchuk@epam.com>, <xen-devel@lists.xenproject.org>
References: <20240109215145.430207-1-stewart.hildebrand@amd.com>
 <20240109215145.430207-2-stewart.hildebrand@amd.com>
 <ZaFDS7uZgW5l0eHG@macbook> <590a157a-b9d4-4d2d-8aff-6584da3045c3@amd.com>
 <20240112181442.674031-1-stewart.hildebrand@amd.com>
 <34b4cbf1-989d-43a0-aaea-717f06a79960@suse.com>
From: Stewart Hildebrand <stewart.hildebrand@amd.com>
In-Reply-To: <34b4cbf1-989d-43a0-aaea-717f06a79960@suse.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: MN1PEPF0000F0E4:EE_|CY8PR12MB7196:EE_
X-MS-Office365-Filtering-Correlation-Id: 42303067-9fb2-4838-0eee-08dc15e09201
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam: BCL:0;
X-Microsoft-Antispam-Message-Info:
	9DW+XHcZEZmKoPzO0j3hLhccyTPptkbC3tK+OaFSyFFwKdNNNpd3ic2hL+t3xZ0uR2oAensuxolUkKWWGKBVpOuDc2QmZ8X80qbZXdSDUrystzbSVRC8fRRP6d6LOInTdLOqCBASGONf2dno2Pmuf2jX6HAQxuzykGkvNNxm5uv2YT+M9M4shsqf+spShb0x3ecVZqXsXoFLUL5Iko80anZ9weebXOx4USD9R/C7/jfF0zb5G2zjItHiIfeF4QBjcGT3Be0JK8hW/I7AVk0OyJBspa4Mjq/JBDwi3Y01NHTPG/tXX+0gX51F+9dgH76sj8TnMiWqX4x3Mp2gt6x9xX3+K6dHOHJMJTUhBleSya3yLjWAMA6WRweWhOd4tGB7YqHXtGvUYCNg0zX5KWe8CGYNSXrNIAqWeib9MK/xoTWL4cEAEpPHyJywfl2/3RJ9wCF69f0ieAnMir8kCNE1bGplnRhdqr6jGNlTRQzaH2uGg10vkWdgS62ON8GnpSZsb/TjBx6KJ81I2nVo2Dq2MnmO8Xr+Yui4LDl/eo3HvwG9F2X32yeVDOSzGNSWsgyHtHfhgJEWOmFU1aRWvIF4H+0rPeRI/GoUDAS++VjtlIoZTYkSohBAUYsHxzJrOAK9PP1nXuWrJXtaUb++9nT0RNV89fYUxXnUpzOeIgpwmrljdXx3jqpvip8iMVFgfVH52ontiSnCW8n/gLfiD+7i8p2uxqoymg7VYNr/4n1XjCBHYPG6Wy92xUC1iD0haLcSNlDx01UR1nC1f1q5NN9zSlo5xtTwutd8Joo/ewWVhWiPxCjPhG87/5kh8WSQMIZS
X-Forefront-Antispam-Report:
	CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB03.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230031)(4636009)(136003)(396003)(346002)(39860400002)(376002)(230922051799003)(82310400011)(64100799003)(1800799012)(451199024)(186009)(46966006)(40470700004)(36840700001)(40480700001)(31686004)(40460700003)(66899024)(83380400001)(70586007)(81166007)(31696002)(86362001)(36756003)(356005)(70206006)(41300700001)(47076005)(36860700001)(5660300002)(82740400003)(426003)(54906003)(336012)(26005)(2616005)(478600001)(8936002)(316002)(16576012)(53546011)(44832011)(110136005)(2906002)(8676002)(4326008)(7416002)(43740500002)(36900700001);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Jan 2024 15:42:24.5699
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 42303067-9fb2-4838-0eee-08dc15e09201
X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB03.amd.com]
X-MS-Exchange-CrossTenant-AuthSource:
	MN1PEPF0000F0E4.namprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY8PR12MB7196

On 1/15/24 03:58, Jan Beulich wrote:
> On 12.01.2024 19:14, Stewart Hildebrand wrote:
>> From: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>
>>
>> Use the per-domain PCI read/write lock to protect the presence of the
>> pci device vpci field. This lock can be used (and in a few cases is used
>> right away) so that vpci removal can be performed while holding the lock
>> in write mode. Previously such removal could race with vpci_read for
>> example.
>>
>> When taking both d->pci_lock and pdev->vpci->lock, they should be
>> taken in this exact order: d->pci_lock then pdev->vpci->lock to avoid
>> possible deadlock situations.
>>
>> 1. Per-domain's pci_lock is used to protect pdev->vpci structure
>> from being removed.
>>
>> 2. Writing the command register and ROM BAR register may trigger
>> modify_bars to run, which in turn may access multiple pdevs while
>> checking for the existing BAR's overlap. The overlapping check, if
>> done under the read lock, requires vpci->lock to be acquired on both
>> devices being compared, which may produce a deadlock. It is not
>> possible to upgrade read lock to write lock in such a case. So, in
>> order to prevent the deadlock, use d->pci_lock in write mode instead.
>>
>> All other code, which doesn't lead to pdev->vpci destruction and does
>> not access multiple pdevs at the same time, can still use a
>> combination of the read lock and pdev->vpci->lock.
>>
>> 3. Drop const qualifier where the new rwlock is used and this is
>> appropriate.
>>
>> 4. Do not call process_pending_softirqs with any locks held. For that
>> unlock prior the call and re-acquire the locks after. After
>> re-acquiring the lock there is no need to check if pdev->vpci exists:
>>  - in apply_map because of the context it is called (no race condition
>>    possible)
>>  - for MSI/MSI-X debug code because it is called at the end of
>>    pdev->vpci access and no further access to pdev->vpci is made
>>
>> 5. Use d->pci_lock around for_each_pdev and pci_get_pdev_by_domain
>> while accessing pdevs in vpci code.
>>
>> Suggested-by: Roger Pau Monné <roger.pau@citrix.com>
>> Suggested-by: Jan Beulich <jbeulich@suse.com>
>> Signed-off-by: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>
>> Signed-off-by: Volodymyr Babchuk <volodymyr_babchuk@epam.com>
>> Signed-off-by: Stewart Hildebrand <stewart.hildebrand@amd.com>
>> Reviewed-by: Roger Pau Monné <roger.pau@citrix.com>
> 
> While I know Roger did offer the tag with certain adjustments, ...
> 
>> @@ -913,7 +911,12 @@ int vpci_msix_arch_print(const struct vpci_msix *msix)
>>              struct pci_dev *pdev = msix->pdev;
>>  
>>              spin_unlock(&msix->pdev->vpci->lock);
>> +            read_unlock(&pdev->domain->pci_lock);
>>              process_pending_softirqs();
>> +
>> +            if ( !read_trylock(&pdev->domain->pci_lock) )
>> +                return -EBUSY;
>> +
>>              /* NB: we assume that pdev cannot go away for an alive domain. */
>>              if ( !pdev->vpci || !spin_trylock(&pdev->vpci->lock) )
>>                  return -EBUSY;
> 
> ... I'm sure he was assuming you would get this right, in also
> dropping the 1st-try-acquired lock when this 2nd try-lock fails.

Thanks for catching this, and I appreciate the suggestion. I'll make sure both locks are dropped if needed on all error paths in vpci_msix_arch_print(), and adjust vpci_dump_msi() accordingly.

> Personally I feel this is the kind of change one would better not
> offer (or take) R-b ahead of time.

I'll drop Roger's R-b for v12.2.

> 
> I further think the respective comment in vpci_dump_msi() also wants
> adjusting from singular to plural.

I'll fix for v12.2, thanks for suggesting this.


From xen-devel-bounces@lists.xenproject.org Mon Jan 15 15:44:14 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 15 Jan 2024 15:44:14 +0000
Received: from list by lists.xenproject.org with outflank-mailman.667488.1038800 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPP8D-0001HI-8C; Mon, 15 Jan 2024 15:44:09 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 667488.1038800; Mon, 15 Jan 2024 15:44:09 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPP8D-0001HB-48; Mon, 15 Jan 2024 15:44:09 +0000
Received: by outflank-mailman (input) for mailman id 667488;
 Mon, 15 Jan 2024 15:44:07 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=nyhf=IZ=minervasys.tech=carlo.nonato@srs-se1.protection.inumbo.net>)
 id 1rPP8B-0001H3-Ks
 for xen-devel@lists.xenproject.org; Mon, 15 Jan 2024 15:44:07 +0000
Received: from mail-ej1-x62f.google.com (mail-ej1-x62f.google.com
 [2a00:1450:4864:20::62f])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id e9bdf737-b3bc-11ee-9b0f-b553b5be7939;
 Mon, 15 Jan 2024 16:44:05 +0100 (CET)
Received: by mail-ej1-x62f.google.com with SMTP id
 a640c23a62f3a-a2e0be86878so117204266b.1
 for <xen-devel@lists.xenproject.org>; Mon, 15 Jan 2024 07:44:05 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: e9bdf737-b3bc-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=minervasys-tech.20230601.gappssmtp.com; s=20230601; t=1705333445; x=1705938245; darn=lists.xenproject.org;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:from:to:cc:subject:date
         :message-id:reply-to;
        bh=LJ+Dh41xEK+vcsGhMgIJAiumhJP32vBNNcJ2LshoHds=;
        b=zypFcJJnfFEF4KRuyJoCEi3xBVS9ZlRudXraYqsop/iix5ZGuyraMklDTUr6rX8S1I
         3UbUgt4sEhn8YfwS21VfauO8vXj0M2T/ID+tYqSQ6m66QwHVNG9izgKgR4IcmSp8K2Bp
         qw4nXqqslukHHsy0/+/HWFnpt+WPKCDwpW1j/98x2RkQfu8casw/HzyopTR/I9JlzV4B
         vtvu8GNl5AoPfSpg6biEj3obDFsSacFTKT4IcOIy3O2mnSTHpIrr24t0GF+7TbCdTpJm
         DLJJGsvrutdt2oAqCFWEbU9CNNMG/cPqmbOS6M5dKAb/sgHzQ1wz5LRPcA1/hAMchH0S
         jYew==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705333445; x=1705938245;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to;
        bh=LJ+Dh41xEK+vcsGhMgIJAiumhJP32vBNNcJ2LshoHds=;
        b=LL2fgyDWLRP5aEB5DjDt7WYpkjPyRvRFjcn1qv50hURqUqIMvZY4Rt7avBhG5MSXqK
         7ZJBMRvnZyy4CZ7qIWDhRgat7rdZgjpSoO9k2u9RW4HhktbdI5YZiwi48eEtzi22ANaX
         nKv+8qDWU/jh1LW6a3giQg/Czc7211B/z+OFCnF1BWyDCSPCukYvhsNqgomamuN+8/Ra
         7bwK6g/35KsyHnoCR4cVeOvAFtvKM0K8d9SUqG5Bf9F2ZfdI7Ag6qKk1iXExG5x/Oy2k
         G/BO/IkfBfDmkovsBykS8Gv0BintsWzH4HYfXo6zlMtIKBw4eItmyxz2DeYaKwzX2LUF
         jN/w==
X-Gm-Message-State: AOJu0YwH6fmYgBkqR9IJx4d5b6MMjul6Po8S/r+ZVUmqQDKwIaKBxyYW
	Igm/cje+xHh/vPFxNk5dURzcfTElNQO1EvD67X3V+8WOz98j/w==
X-Google-Smtp-Source: AGHT+IGGNWC1+U10KVr9pKZWsn2JpWeDFE6AmhU7Y9/ohshiSkoC2gufp1FzgZ3Jx+uQ1NQ1JxRyZCr11pi4CStPimk=
X-Received: by 2002:a17:906:bc89:b0:a2d:4474:8fc1 with SMTP id
 lv9-20020a170906bc8900b00a2d44748fc1mr3349121ejb.50.1705333444662; Mon, 15
 Jan 2024 07:44:04 -0800 (PST)
MIME-Version: 1.0
References: <20240102095138.17933-1-carlo.nonato@minervasys.tech>
 <20240102095138.17933-14-carlo.nonato@minervasys.tech> <4553cc26-deb5-42ed-87b9-6cba2a5099eb@xen.org>
 <CAG+AhRXHfGJksqUrPXoHqNze+D654jJV0kVYBZaPLYwccdEz5Q@mail.gmail.com>
 <aa064f8f-d30e-4ac1-9239-daba5a806794@xen.org> <CAG+AhRXUPvKGu-y9qbVmhc0_ThCdxFvG=BYwCQMBH=mjo45qHw@mail.gmail.com>
 <985e1a2a-45eb-496c-8043-5f0c3c9f7766@xen.org>
In-Reply-To: <985e1a2a-45eb-496c-8043-5f0c3c9f7766@xen.org>
From: Carlo Nonato <carlo.nonato@minervasys.tech>
Date: Mon, 15 Jan 2024 16:43:53 +0100
Message-ID: <CAG+AhRVKbM-n8ieg-CMbRG-4RgUXMSZL=ZER8EAWvGJgpEzUwA@mail.gmail.com>
Subject: Re: [PATCH v5 13/13] xen/arm: add cache coloring support for Xen
To: Julien Grall <julien@xen.org>
Cc: xen-devel@lists.xenproject.org, 
	Stefano Stabellini <sstabellini@kernel.org>, Bertrand Marquis <bertrand.marquis@arm.com>, 
	Michal Orzel <michal.orzel@amd.com>, Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>, 
	Marco Solieri <marco.solieri@minervasys.tech>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

Hi Julien,

On Mon, Jan 15, 2024 at 12:18=E2=80=AFPM Julien Grall <julien@xen.org> wrot=
e:
> On 15/01/2024 10:11, Carlo Nonato wrote:
> > Hi Julien,
>
> Hi Carlo,
>
> > On Sun, Jan 14, 2024 at 8:22=E2=80=AFPM Julien Grall <julien@xen.org> w=
rote:
> >>
> >> Hi Carlo,
> >>
> >> On 13/01/2024 17:07, Carlo Nonato wrote:
> >>>>> diff --git a/xen/arch/arm/mmu/setup.c b/xen/arch/arm/mmu/setup.c
> >>>>> index 37b6d230ad..66b674eeab 100644
> >>>>> --- a/xen/arch/arm/mmu/setup.c
> >>>>> +++ b/xen/arch/arm/mmu/setup.c
> >>>>> @@ -7,6 +7,7 @@
> >>>>>
> >>>>>     #include <xen/init.h>
> >>>>>     #include <xen/libfdt/libfdt.h>
> >>>>> +#include <xen/llc-coloring.h>
> >>>>>     #include <xen/sizes.h>
> >>>>>     #include <xen/vmap.h>
> >>>>>
> >>>>> @@ -39,6 +40,10 @@ DEFINE_PER_CPU(lpae_t *, xen_pgtable);
> >>>>>     static DEFINE_PAGE_TABLE(cpu0_pgtable);
> >>>>>     #endif
> >>>>>
> >>>>> +#ifdef CONFIG_LLC_COLORING
> >>>>> +static DEFINE_PAGE_TABLE(xen_colored_temp);
> >>>>> +#endif
> >>>>
> >>>> Does this actually need to be static?
> >>>
> >>> Why it shouldn't be static? I don't want to access it from another fi=
le.
> >>
> >> My question was whether this could be allocated dynamically (or possib=
ly
> >> re-use an existing set of page tables). In particular with the fact th=
at
> >> we will need more than 1 page to cover the whole Xen binary.
> >>
> >> Looking at the use xen_colored_temp. This is pretty much the same as
> >> xen_map[i] but with different permissions. So what you could do is
> >> preparing xen_map[i] with very permissive permissions (i.e. RWX) and
> >> then enforcing the permission once the TTBR has been switched.
> >>
> >> Something like that (tested without cache coloring):
> >>
> >> diff --git a/xen/arch/arm/mmu/setup.c b/xen/arch/arm/mmu/setup.c
> >> index a3a263a5d94b..f7ac5cabf92c 100644
> >> --- a/xen/arch/arm/mmu/setup.c
> >> +++ b/xen/arch/arm/mmu/setup.c
> >> @@ -306,7 +306,11 @@ void __init setup_pagetables(unsigned long
> >> boot_phys_offset, paddr_t xen_paddr)
> >>        p[0].pt.table =3D 1;
> >>        p[0].pt.xn =3D 0;
> >>
> >> -    /* Break up the Xen mapping into pages and protect them separatel=
y. */
> >> +    /*
> >> +     * Break up the Xen mapping into pages. We will protect the
> >> +     * permissions later in order to allow xen_xenmap to be used for
> >> +     * when relocating Xen.
> >> +     */
> >>        for ( i =3D 0; i < XEN_NR_ENTRIES(3); i++ )
> >>        {
> >>            vaddr_t va =3D XEN_VIRT_START + (i << PAGE_SHIFT);
> >> @@ -315,13 +319,7 @@ void __init setup_pagetables(unsigned long
> >> boot_phys_offset, paddr_t xen_paddr)
> >>                break;
> >>            pte =3D pte_of_xenaddr(va);
> >>            pte.pt.table =3D 1; /* third level mappings always have thi=
s bit
> >> set */
> >> -        if ( is_kernel_text(va) || is_kernel_inittext(va) )
> >> -        {
> >> -            pte.pt.xn =3D 0;
> >> -            pte.pt.ro =3D 1;
> >> -        }
> >> -        if ( is_kernel_rodata(va) )
> >> -            pte.pt.ro =3D 1;
> >> +        pte.pt.xn =3D 0; /* Permissions will be enforced later. Allow
> >> execution */
> >>            xen_xenmap[i] =3D pte;
> >>        }
> >>
> >> @@ -352,6 +350,37 @@ void __init setup_pagetables(unsigned long
> >> boot_phys_offset, paddr_t xen_paddr)
> >>
> >>        switch_ttbr(ttbr);
> >>
> >> +    /* Protect Xen */
> >> +    for ( i =3D 0; i < XEN_NR_ENTRIES(3); i++ )
> >> +    {
> >> +        vaddr_t va =3D XEN_VIRT_START + (i << PAGE_SHIFT);
> >> +        lpae_t *entry =3D xen_xenmap + i;
> >> +
> >> +        if ( !is_kernel(va) )
> >> +            break;
> >> +
> >> +        pte =3D read_atomic(entry);
> >> +
> >> +        if ( is_kernel_text(va) || is_kernel_inittext(va) )
> >> +        {
> >> +            pte.pt.xn =3D 0;
> >> +            pte.pt.ro =3D 1;
> >> +        } else if ( is_kernel_rodata(va) ) {
> >> +            pte.pt.ro =3D 1;
> >> +            pte.pt.xn =3D 1;
> >> +        } else {
> >> +            pte.pt.xn =3D 1;
> >> +            pte.pt.ro =3D 0;
> >> +        }
> >> +
> >> +        write_pte(entry, pte);
> >> +    }
> >> +
> >> +    /*
> >> +     * We modified live page-tables. Ensure the TBLs are invalidated
> >> +     * before setting enforcing the WnX permissions.
> >> +     */
> >> +    flush_xen_tlb_local();
> >>        xen_pt_enforce_wnx();
> >>
> >>    #ifdef CONFIG_ARM_32
> >
> > I understand what you're talking about, and it seems reasonable to get =
rid of
> > xen_colored_temp[] and create_llc_coloring_mappings() since in the end =
they
> > serve the purpose of mapping the physically colored space that is alrea=
dy
> > mapped using xen_xenmap[] pagetables.
> > What I don't understand is then how to copy/relocate Xen since I don't =
have a
> > destination virtual space anymore to use in relocate_xen().
>
> You will need to link xen_xenmap[] in boot_second[...] as well. With
> that, you will be able to access the new Xen through the temporary area.

Wouldn't it result in overwriting the current virtual space mapping?
boot_second is the live page table and if I link xen_xenmap[] then
XEN_VIRT_START would point to the new colored space which is still empty at
this stage...

> [...]
>
> >> Note that this means the init_ttbr cannot be written directly. But you
> >> can solve this problem by re-mapping the address.
> >
> > How to remap a single address?
>
> You should be able to use map_domain_page() to map the page where
> init_ttbr is.
>
> > And if moving init_ttbr in the identity-mapped area means that it's no =
longer
> > writable, so that I need to remap it, why moving it in that area in the=
 first
> > place. Again I think I'm missing something.
>
> The goal is to have everything used (code, data) before the MMU is
> turned on residing in a single page. So secondary CPUs can directly jump
> to the colored Xen without any trouble.

This is what confuses me. Why having everything on a single page makes
secondary cpus able to jump directly to colored Xen? (also see below)

> >>>
> >>> 3) To access the identity mapping area I would need some accessor tha=
t takes
> >>> an address and returns it + phys_offset, or is there a better way to =
do it?
> >>
> >> I am not sure I understand what you mean. Can you clarify?
> >
> > In my idea, I would use the identity mapping to access the "old" variab=
les,
> > where "old" means non physically colored. init_ttbr is an example. When
> > Xen it's copied on the new physical space, init_ttbr is copied with it =
and
> > if the boot cpu modifies this variable, it's actually touching the colo=
red
> > one and not the old one. This means that secondary CPUs that still have=
n't
> > jumped to the new space, won't be able to see the new value and will ne=
ver
> > go online.
> > So to access this "old" init_ttbr variable I need it's identity address=
,
> > which is its current virtual address + some physical offset. I was aski=
ng
> > you if this is the right approach to use the identity mapping.
>
> Secondary CPUs would directly start on the colored Xen. So they will be
> able to access the "new" init_ttbr & co.

How can this be true? I mean, in call_psci_cpu_on() I can start those CPUs =
in
the colored space, but they still use the boot_* pagetables and there I can=
't
easily link the new colored space, or, at least, I'm not succeding in doing
that. What I tried at the moment is to link xen_xenmap in boot_second after
switch_ttbr because of the problem I described above. But then secondary
CPUs never go online...

> [...]
>
> >> ... as I wrote ealier your current approach seems to have a flaw. As y=
ou
> >> overwrite xen_bootmodule->{start, size}. setup_mm() will end up to add
> >> the old Xen region to the boot allocator. This is before any secondary
> >> CPUs are booted up.
> >>
> >> IOW, the allocator may provide some memory from the old Xen and nothin=
g
> >> good will happen from that.
> >>
> >> The only way to solve it is to add another module. So the memory is
> >> skipped by setup_mm(). However see below.
> >>
> >>>
> >>> Yes that should be memory that in the end would not be needed so it m=
ust
> >>> return to the boot-allocator (if that's what you mean). But how to do
> >>> that?
> >>
> >> You can't really discard the old temporary Xen. This may work today
> >> because we don't support CPU hotplug or suspend/resume. But there was
> >> some series on the ML to enable it and I don't see any reason why
> >> someone would not want to use the features with cache coloring.
> >>
> >> So the old temporary Xen would have to be kept around forever. This is
> >> up to 8MB of memory wasted.
> >>
> >> The right approach is to have the secondary CPU boot code (including t=
he
> >> variables it is using) fitting in the same page (or possibly multiple =
so
> >> long this is small and physically contiguous). With that it doesn't
> >> matter where is the trampoline, it could stay at the old place, but we
> >> would only waste a few pages rather than up 8MB as it is today.
> >
> > So what are you suggesting is to create a new section in the linker scr=
ipt
> > for the trampoline code and data,
>
> We already have a section for that in place (see .idmap.*) which happens
> to be at the beginning of Xen. Right now, the section is in text. Which
> is why it is read-only executable.
>
> > then in setup_mm() we would skip this
> > memory?
>
> We should not need this. Secondary boot CPUs should boot direclty on the
> colored Xen.
>
> > Am I following you correctly? Sorry those topics are a little out
> > of my preparation as you probably already guessed.
>
> No worries. I am happy to go in as much details as necessary. I can also
> attempt to write a patch if that helps. (unless someone else in the Arm
> maintainers want to give a try).

Yes this would help. Thanks.

>
> Cheers,
>
> --
> Julien Grall


From xen-devel-bounces@lists.xenproject.org Mon Jan 15 16:04:56 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 15 Jan 2024 16:04:56 +0000
Received: from list by lists.xenproject.org with outflank-mailman.667496.1038810 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPPSA-0007d7-OS; Mon, 15 Jan 2024 16:04:46 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 667496.1038810; Mon, 15 Jan 2024 16:04:46 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPPSA-0007d0-Ku; Mon, 15 Jan 2024 16:04:46 +0000
Received: by outflank-mailman (input) for mailman id 667496;
 Mon, 15 Jan 2024 16:04:44 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=jLm1=IZ=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rPPS8-0007cu-TC
 for xen-devel@lists.xenproject.org; Mon, 15 Jan 2024 16:04:44 +0000
Received: from mail-lj1-x235.google.com (mail-lj1-x235.google.com
 [2a00:1450:4864:20::235])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id cb362d0e-b3bf-11ee-9b0f-b553b5be7939;
 Mon, 15 Jan 2024 17:04:42 +0100 (CET)
Received: by mail-lj1-x235.google.com with SMTP id
 38308e7fff4ca-2cd33336b32so116487621fa.0
 for <xen-devel@lists.xenproject.org>; Mon, 15 Jan 2024 08:04:42 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 5-20020a6b1505000000b007bf2c9bbdd6sm1685623iov.50.2024.01.15.08.04.40
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 15 Jan 2024 08:04:41 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: cb362d0e-b3bf-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1705334682; x=1705939482; darn=lists.xenproject.org;
        h=content-transfer-encoding:autocrypt:subject:from:cc:to
         :content-language:user-agent:mime-version:date:message-id:from:to:cc
         :subject:date:message-id:reply-to;
        bh=QCc5gGShZi5EVXBN8KRKI8Xy/r8mgNWyBwfE1SiFBSc=;
        b=bC2poJ4kubNyybM/bqW8cQdt9NI0MY/1jho4RP9pdsQPc+kd1oZQoNtrH8c3DGiTKh
         rTIrnWHxwCRYhDdzWm3+gnqhvOUPm8Re9RxolFNvllsuPEh+eMTbVBuuL7dHqakpq8TS
         xmyXr1dZiBk4hQnXej7ODCWqOjfdAncpQKhcvqJfavTPZmhdlBmU1fFAATUZrdFVwTxs
         nzwQ+B1v3r851wMmn+66wHSIXJgH3nzOIShKN6WIkCyzcOKzlGoK7S8KHeP5oI+d1cA8
         vhORd2eqTbFuWWC+D/9+nF7JVg9lM5qCrdkNO//KQtxeIgmF7iBhCfDZnMEmecXF3RXY
         97pg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705334682; x=1705939482;
        h=content-transfer-encoding:autocrypt:subject:from:cc:to
         :content-language:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=QCc5gGShZi5EVXBN8KRKI8Xy/r8mgNWyBwfE1SiFBSc=;
        b=MmPhJz3mqdyzaXLNxqzWfFZgW4PoYJvw6o56yvVkWhQ666FPF/nrjlZKt3VzxTRknA
         14J6LZ+5hwOy/59BMud8rniPAi4LVAI2LiMfRt5k4M/0+3LcWTOAb/ZEZq1OjyTd0M1j
         WnIxlWsKW4ibnvFytVd+IIG/jTKQUeOCF0knNzfMC0/Sh5mnft0FkXPx/RldwxXe7AKP
         QbqOhZK40OHO5pU8OyDTCp56l7QWwCcPz2zI4QG96xHa8CQhhVL7WMsFrKgQ1fleb0iM
         ov0uaDRJBLKqzojN1IIuLpAEp6dcKoBhS7bSQYKH4+TjCj4Ls3M4qhiEjvbVcahso7D+
         G4Pw==
X-Gm-Message-State: AOJu0Yxrpy1lMMqdPyo9jZ+bq7U7QBraNrF5oCeRvFpDmLafw1G4Agmm
	3RU0rY4v9L34JW3dpvLVu1BETSMi46FVg2+Uus2VIDD8aw==
X-Google-Smtp-Source: AGHT+IH7/sFTV+ZLF0+QI/eezDMnNfQ88ntDnr9nmyyA4EpXyb3BL9vTgi3drzxaEwq2e4m2s/6brg==
X-Received: by 2002:a05:651c:168f:b0:2cc:effb:cbb2 with SMTP id bd15-20020a05651c168f00b002cceffbcbb2mr2618061ljb.52.1705334682043;
        Mon, 15 Jan 2024 08:04:42 -0800 (PST)
Message-ID: <e2e66d36-5545-40e4-847d-be3b3a523944@suse.com>
Date: Mon, 15 Jan 2024 17:04:39 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Content-Language: en-US
To: Jason Andryuk <jandryuk@gmail.com>
Cc: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
From: Jan Beulich <jbeulich@suse.com>
Subject: HWP vs "xenpm get-cpufreq-..."
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

Jason,

I thought I'd try hwp on a SapphireRapids system, and of course - short
of easy other ways of seeing whether it actually has any apparent
effect - I've looked at "xenpm get-cpufreq-states" output. Just to find
that according to this, the system never enters any of the designated
Pn states (all CPUs are always claimed to be in P0), while at the same
time the P0 residencies remain in the hundreds of milliseconds. The
latter suggests CPUs do leave P0, yet it's then unclear what state they
are in during such time periods.

I was also a little puzzled when comparing "xenpm get-cpufreq-para"
output with hwp against that with acpi-cpufreq: The latter lists a range
of 800MHz ... 2501MHz, while with hwp base is 2500MHz and max is 4800MHz.

Do you have any explanation for these apparent anomalies?

Thanks, Jan


From xen-devel-bounces@lists.xenproject.org Mon Jan 15 16:08:20 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 15 Jan 2024 16:08:20 +0000
Received: from list by lists.xenproject.org with outflank-mailman.667499.1038819 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPPVb-0000Er-5P; Mon, 15 Jan 2024 16:08:19 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 667499.1038819; Mon, 15 Jan 2024 16:08:19 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPPVb-0000Ek-2q; Mon, 15 Jan 2024 16:08:19 +0000
Received: by outflank-mailman (input) for mailman id 667499;
 Mon, 15 Jan 2024 16:08:17 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=jLm1=IZ=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rPPVZ-0000Ee-36
 for xen-devel@lists.xenproject.org; Mon, 15 Jan 2024 16:08:17 +0000
Received: from mail-lj1-x22c.google.com (mail-lj1-x22c.google.com
 [2a00:1450:4864:20::22c])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 4a8b3a04-b3c0-11ee-98f1-6d05b1d4d9a1;
 Mon, 15 Jan 2024 17:08:16 +0100 (CET)
Received: by mail-lj1-x22c.google.com with SMTP id
 38308e7fff4ca-2cd853c159eso51127881fa.2
 for <xen-devel@lists.xenproject.org>; Mon, 15 Jan 2024 08:08:16 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 fa1-20020a056638618100b0046e4e92e0aesm2438604jab.174.2024.01.15.08.08.14
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 15 Jan 2024 08:08:15 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 4a8b3a04-b3c0-11ee-98f1-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1705334896; x=1705939696; darn=lists.xenproject.org;
        h=content-transfer-encoding:autocrypt:subject:from:cc:to
         :content-language:user-agent:mime-version:date:message-id:from:to:cc
         :subject:date:message-id:reply-to;
        bh=lE0eudnGHo8w4a3AubvqhY+42NwJjhy0HH3HoGUR5Qk=;
        b=MeBqbyS99CZV7waUjyBNQ/MW5+66EKmjG2OCwn+8dp20QSgyDvsQzIv4v7yvjtAzS6
         AZjcqU8FNHIdpU/uqJKfAjW+Lekoqry3EGVsdndInNMFJMzY7dSSbviigEMzVILX7IvC
         ngqvu7xOBjbiA5UNF2f2jjqJf5uuTTYuU/OLDfrn/l7AGhLJ0nf23x6RO6rg9NQhJ/O0
         KcgP6VtGPxzqvpP38qvjHb2MWEmbXBK/T1MsH95k5f/ekIO4WqxjpyuyBzZXLEavDLfz
         KTMWyMnNVhVPo+JfUSn3vC3BrrmLGMXTDBmtM82m+oZftIdGczLX0porFjk0cKQaEnZv
         P0jg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705334896; x=1705939696;
        h=content-transfer-encoding:autocrypt:subject:from:cc:to
         :content-language:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=lE0eudnGHo8w4a3AubvqhY+42NwJjhy0HH3HoGUR5Qk=;
        b=U/GVfQFPAaG8oemUexs34MqbD67HX/a8NAb/ZfO6FFbODz8pQpsVPvrhgDaDli3r/S
         fpgnEPaVUPDybNyjvScJgZsoTMunA5ROzzB56EVxDqOOjTlrRD9So7MabShRSn+GIu4w
         pNAWY+jVpmR4FEnsDL6vV3ybtzpVMMjEtSmUDrK8tg2FSserB3JOMKM2N6GnF9VzS/KQ
         9/g6UbQf1UyzgPtlJd6ts4GLMnMBQWpbrvlMxCCODPIrdYLNTaG1cAH9PgHGJIgbpb+m
         GtYIfxa1IxRcRDurTN/5tEjOSO0QrHHbRGbHZPw0Q26fplAm4bD1vJkLAMJVxP2dpiaQ
         PZPA==
X-Gm-Message-State: AOJu0Yz0zRy3+EQuRSYhrOh61a1BUE0Q5QqKE3yVfe0yClRxZJ5lWiPa
	Mttfc4jMLiCLUl0Ct8WFSa9znNeJbnUqexQTybfOBZggWQ==
X-Google-Smtp-Source: AGHT+IFRbHVTiwlQR0YepCbbEHE3F1iv1DiYYbVaWzuC/iFgJJhTAGNkxjaXINvnoH87ZZNa0QSDIw==
X-Received: by 2002:a2e:2419:0:b0:2cd:56ab:caa1 with SMTP id k25-20020a2e2419000000b002cd56abcaa1mr2487316ljk.5.1705334895737;
        Mon, 15 Jan 2024 08:08:15 -0800 (PST)
Message-ID: <c48df0a3-f837-4e03-84d8-ef63c09b6da7@suse.com>
Date: Mon, 15 Jan 2024 17:08:13 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Content-Language: en-US
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, Wei Liu <wl@xen.org>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
From: Jan Beulich <jbeulich@suse.com>
Subject: [PATCH] x86/APIC: finish genapic conversion to altcall
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

While .probe() doesn't need fiddling with for being run only very early,
init_apic_ldr() wants converting too despite not being on a frequently
executed path: This way all pre-filled struct genapic instances can
become __initconst_cf_clobber, thus allowing to eliminate 15 more ENDBR
during the 2nd phase of alternatives patching.

While fiddling with section annotations here, also move "genapic" itself
to .data.ro_after_init.

Signed-off-by: Jan Beulich <jbeulich@suse.com>

--- a/xen/arch/x86/genapic/bigsmp.c
+++ b/xen/arch/x86/genapic/bigsmp.c
@@ -44,7 +44,7 @@ static int __init cf_check probe_bigsmp(
 	return def_to_bigsmp;
 } 
 
-const struct genapic __initconstrel apic_bigsmp = {
+const struct genapic __initconst_cf_clobber apic_bigsmp = {
 	APIC_INIT("bigsmp", probe_bigsmp),
 	GENAPIC_PHYS
 };
--- a/xen/arch/x86/genapic/default.c
+++ b/xen/arch/x86/genapic/default.c
@@ -14,7 +14,7 @@
 #include <asm/io_apic.h>
 
 /* should be called last. */
-const struct genapic __initconstrel apic_default = {
+const struct genapic __initconst_cf_clobber apic_default = {
 	APIC_INIT("default", NULL),
 	GENAPIC_FLAT
 };
--- a/xen/arch/x86/genapic/probe.c
+++ b/xen/arch/x86/genapic/probe.c
@@ -16,7 +16,7 @@
 #include <asm/mach-generic/mach_apic.h>
 #include <asm/setup.h>
 
-struct genapic __read_mostly genapic;
+struct genapic __ro_after_init genapic;
 
 static const struct genapic *const __initconstrel apic_probe[] = {
 	&apic_bigsmp, 
--- a/xen/arch/x86/genapic/x2apic.c
+++ b/xen/arch/x86/genapic/x2apic.c
@@ -158,7 +158,7 @@ static void cf_check send_IPI_mask_x2api
     local_irq_restore(flags);
 }
 
-static const struct genapic __initconstrel apic_x2apic_phys = {
+static const struct genapic __initconst_cf_clobber apic_x2apic_phys = {
     APIC_INIT("x2apic_phys", NULL),
     .int_delivery_mode = dest_Fixed,
     .int_dest_mode = 0 /* physical delivery */,
@@ -169,7 +169,7 @@ static const struct genapic __initconstr
     .send_IPI_self = send_IPI_self_x2apic
 };
 
-static const struct genapic __initconstrel apic_x2apic_cluster = {
+static const struct genapic __initconst_cf_clobber apic_x2apic_cluster = {
     APIC_INIT("x2apic_cluster", NULL),
     .int_delivery_mode = dest_LowestPrio,
     .int_dest_mode = 1 /* logical delivery */,
@@ -187,7 +187,7 @@ static const struct genapic __initconstr
  * IPIs to be more efficiently delivered by not having to perform an ICR write
  * for each target CPU.
  */
-static const struct genapic __initconstrel apic_x2apic_mixed = {
+static const struct genapic __initconst_cf_clobber apic_x2apic_mixed = {
     APIC_INIT("x2apic_mixed", NULL),
 
     /*
--- a/xen/arch/x86/include/asm/mach-generic/mach_apic.h
+++ b/xen/arch/x86/include/asm/mach-generic/mach_apic.h
@@ -10,7 +10,7 @@
 #define INT_DELIVERY_MODE (genapic.int_delivery_mode)
 #define INT_DEST_MODE (genapic.int_dest_mode)
 #define TARGET_CPUS ((const typeof(cpu_online_map) *)&cpu_online_map)
-#define init_apic_ldr (genapic.init_apic_ldr)
+#define init_apic_ldr() alternative_vcall(genapic.init_apic_ldr)
 #define cpu_mask_to_apicid(mask) ({ \
 	/* \
 	 * There are a number of places where the address of a local variable \


From xen-devel-bounces@lists.xenproject.org Mon Jan 15 16:09:34 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 15 Jan 2024 16:09:34 +0000
Received: from list by lists.xenproject.org with outflank-mailman.667502.1038831 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPPWn-00014S-Go; Mon, 15 Jan 2024 16:09:33 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 667502.1038831; Mon, 15 Jan 2024 16:09:33 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPPWn-00014L-C6; Mon, 15 Jan 2024 16:09:33 +0000
Received: by outflank-mailman (input) for mailman id 667502;
 Mon, 15 Jan 2024 16:09:32 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=1TER=IZ=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1rPPWm-00014D-71
 for xen-devel@lists.xenproject.org; Mon, 15 Jan 2024 16:09:32 +0000
Received: from mail-lf1-x12d.google.com (mail-lf1-x12d.google.com
 [2a00:1450:4864:20::12d])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 77465383-b3c0-11ee-98f1-6d05b1d4d9a1;
 Mon, 15 Jan 2024 17:09:31 +0100 (CET)
Received: by mail-lf1-x12d.google.com with SMTP id
 2adb3069b0e04-50ea8fbf261so10376969e87.2
 for <xen-devel@lists.xenproject.org>; Mon, 15 Jan 2024 08:09:31 -0800 (PST)
Received: from [10.80.67.30] (default-46-102-197-194.interdsl.co.uk.
 [46.102.197.194]) by smtp.gmail.com with ESMTPSA id
 bv9-20020a170906b1c900b00a2bfd60c6a8sm5399885ejb.80.2024.01.15.08.09.30
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 15 Jan 2024 08:09:30 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 77465383-b3c0-11ee-98f1-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1705334971; x=1705939771; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=1gvpbzgCv+dl+iOCiuPw2eAquOkeJdq1M8bbcVri8Dg=;
        b=T3W+vi1BauoEVIaPn1euS9mYQ9THILohEVmSuYBP4fXqd0kIdzoRSBG8T7RzStZCwc
         9pZOBl5im635ImcyQJ7C2x8vIn6YO9hdhYZrpaRqSHit7YqX98ICa4ONT2UnkfwmO0Ew
         irFMxpyAKm38TEvs8PoVQnKfKYNt+FWyAcH7s=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705334971; x=1705939771;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=1gvpbzgCv+dl+iOCiuPw2eAquOkeJdq1M8bbcVri8Dg=;
        b=f4ZdJbtA6NYwUi42ugC4HG+K+C2B0ToWMhYZhwBua0SCArt1uncZk+l8uoAiQCN+8T
         wzSs0t3c0ppqSvd+es0AqbO5LVkAn7jR1sHYayH/1FnI2CmiQKeQ5jfVhhyDFz0ExCKe
         a2laavr7KiJFGZ6RKZdS7Uts0ttA1eeK8x+evj9Rt3AbudIrv89xg/zXVtpTb9ps3HVe
         45+MIvY7RLVw5ekmO0kRq+QqlMFwDFtOEE5CXX8WYM9G0P2t0a/l9sfPLTSjklUvMuGp
         Hg837o7lO3vsrJt62iX5jsi5hDID1I7TRcVTo7H5W2sJJOsiMlS4rQS+EQP9jdpXI+RR
         ChTA==
X-Gm-Message-State: AOJu0Yz1TIgczukfZswIorQHlqDQjtoMaw9zK5JbrDzI5JaUPK4ISM0H
	UBXY4hfO+sXOnrHrtmo2C5k2IbDpZ+VIBA==
X-Google-Smtp-Source: AGHT+IFhy0r1D7R25DPRNdUWezTOgDvwIUX3uzVqrGBNlRY6F0/kRLYJ5aH8FqQ0aypiBiLH5J5pWg==
X-Received: by 2002:a19:4f15:0:b0:50e:b206:50f6 with SMTP id d21-20020a194f15000000b0050eb20650f6mr2123417lfb.62.1705334970787;
        Mon, 15 Jan 2024 08:09:30 -0800 (PST)
Message-ID: <5b346f53-9318-467d-aa9b-cb7b8baf44c8@citrix.com>
Date: Mon, 15 Jan 2024 16:09:30 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] x86/APIC: finish genapic conversion to altcall
Content-Language: en-GB
To: Jan Beulich <jbeulich@suse.com>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Wei Liu <wl@xen.org>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger.pau@citrix.com>
References: <c48df0a3-f837-4e03-84d8-ef63c09b6da7@suse.com>
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 xsFNBFLhNn8BEADVhE+Hb8i0GV6mihnnr/uiQQdPF8kUoFzCOPXkf7jQ5sLYeJa0cQi6Penp
 VtiFYznTairnVsN5J+ujSTIb+OlMSJUWV4opS7WVNnxHbFTPYZVQ3erv7NKc2iVizCRZ2Kxn
 srM1oPXWRic8BIAdYOKOloF2300SL/bIpeD+x7h3w9B/qez7nOin5NzkxgFoaUeIal12pXSR
 Q354FKFoy6Vh96gc4VRqte3jw8mPuJQpfws+Pb+swvSf/i1q1+1I4jsRQQh2m6OTADHIqg2E
 ofTYAEh7R5HfPx0EXoEDMdRjOeKn8+vvkAwhviWXTHlG3R1QkbE5M/oywnZ83udJmi+lxjJ5
 YhQ5IzomvJ16H0Bq+TLyVLO/VRksp1VR9HxCzItLNCS8PdpYYz5TC204ViycobYU65WMpzWe
 LFAGn8jSS25XIpqv0Y9k87dLbctKKA14Ifw2kq5OIVu2FuX+3i446JOa2vpCI9GcjCzi3oHV
 e00bzYiHMIl0FICrNJU0Kjho8pdo0m2uxkn6SYEpogAy9pnatUlO+erL4LqFUO7GXSdBRbw5
 gNt25XTLdSFuZtMxkY3tq8MFss5QnjhehCVPEpE6y9ZjI4XB8ad1G4oBHVGK5LMsvg22PfMJ
 ISWFSHoF/B5+lHkCKWkFxZ0gZn33ju5n6/FOdEx4B8cMJt+cWwARAQABzSlBbmRyZXcgQ29v
 cGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPsLBegQTAQgAJAIbAwULCQgHAwUVCgkI
 CwUWAgMBAAIeAQIXgAUCWKD95wIZAQAKCRBlw/kGpdefoHbdD/9AIoR3k6fKl+RFiFpyAhvO
 59ttDFI7nIAnlYngev2XUR3acFElJATHSDO0ju+hqWqAb8kVijXLops0gOfqt3VPZq9cuHlh
 IMDquatGLzAadfFx2eQYIYT+FYuMoPZy/aTUazmJIDVxP7L383grjIkn+7tAv+qeDfE+txL4
 SAm1UHNvmdfgL2/lcmL3xRh7sub3nJilM93RWX1Pe5LBSDXO45uzCGEdst6uSlzYR/MEr+5Z
 JQQ32JV64zwvf/aKaagSQSQMYNX9JFgfZ3TKWC1KJQbX5ssoX/5hNLqxMcZV3TN7kU8I3kjK
 mPec9+1nECOjjJSO/h4P0sBZyIUGfguwzhEeGf4sMCuSEM4xjCnwiBwftR17sr0spYcOpqET
 ZGcAmyYcNjy6CYadNCnfR40vhhWuCfNCBzWnUW0lFoo12wb0YnzoOLjvfD6OL3JjIUJNOmJy
 RCsJ5IA/Iz33RhSVRmROu+TztwuThClw63g7+hoyewv7BemKyuU6FTVhjjW+XUWmS/FzknSi
 dAG+insr0746cTPpSkGl3KAXeWDGJzve7/SBBfyznWCMGaf8E2P1oOdIZRxHgWj0zNr1+ooF
 /PzgLPiCI4OMUttTlEKChgbUTQ+5o0P080JojqfXwbPAyumbaYcQNiH1/xYbJdOFSiBv9rpt
 TQTBLzDKXok86M7BTQRS4TZ/ARAAkgqudHsp+hd82UVkvgnlqZjzz2vyrYfz7bkPtXaGb9H4
 Rfo7mQsEQavEBdWWjbga6eMnDqtu+FC+qeTGYebToxEyp2lKDSoAsvt8w82tIlP/EbmRbDVn
 7bhjBlfRcFjVYw8uVDPptT0TV47vpoCVkTwcyb6OltJrvg/QzV9f07DJswuda1JH3/qvYu0p
 vjPnYvCq4NsqY2XSdAJ02HrdYPFtNyPEntu1n1KK+gJrstjtw7KsZ4ygXYrsm/oCBiVW/OgU
 g/XIlGErkrxe4vQvJyVwg6YH653YTX5hLLUEL1NS4TCo47RP+wi6y+TnuAL36UtK/uFyEuPy
 wwrDVcC4cIFhYSfsO0BumEI65yu7a8aHbGfq2lW251UcoU48Z27ZUUZd2Dr6O/n8poQHbaTd
 6bJJSjzGGHZVbRP9UQ3lkmkmc0+XCHmj5WhwNNYjgbbmML7y0fsJT5RgvefAIFfHBg7fTY/i
 kBEimoUsTEQz+N4hbKwo1hULfVxDJStE4sbPhjbsPCrlXf6W9CxSyQ0qmZ2bXsLQYRj2xqd1
 bpA+1o1j2N4/au1R/uSiUFjewJdT/LX1EklKDcQwpk06Af/N7VZtSfEJeRV04unbsKVXWZAk
 uAJyDDKN99ziC0Wz5kcPyVD1HNf8bgaqGDzrv3TfYjwqayRFcMf7xJaL9xXedMcAEQEAAcLB
 XwQYAQgACQUCUuE2fwIbDAAKCRBlw/kGpdefoG4XEACD1Qf/er8EA7g23HMxYWd3FXHThrVQ
 HgiGdk5Yh632vjOm9L4sd/GCEACVQKjsu98e8o3ysitFlznEns5EAAXEbITrgKWXDDUWGYxd
 pnjj2u+GkVdsOAGk0kxczX6s+VRBhpbBI2PWnOsRJgU2n10PZ3mZD4Xu9kU2IXYmuW+e5KCA
 vTArRUdCrAtIa1k01sPipPPw6dfxx2e5asy21YOytzxuWFfJTGnVxZZSCyLUO83sh6OZhJkk
 b9rxL9wPmpN/t2IPaEKoAc0FTQZS36wAMOXkBh24PQ9gaLJvfPKpNzGD8XWR5HHF0NLIJhgg
 4ZlEXQ2fVp3XrtocHqhu4UZR4koCijgB8sB7Tb0GCpwK+C4UePdFLfhKyRdSXuvY3AHJd4CP
 4JzW0Bzq/WXY3XMOzUTYApGQpnUpdOmuQSfpV9MQO+/jo7r6yPbxT7CwRS5dcQPzUiuHLK9i
 nvjREdh84qycnx0/6dDroYhp0DFv4udxuAvt1h4wGwTPRQZerSm4xaYegEFusyhbZrI0U9tJ
 B8WrhBLXDiYlyJT6zOV2yZFuW47VrLsjYnHwn27hmxTC/7tvG3euCklmkn9Sl9IAKFu29RSo
 d5bD8kMSCYsTqtTfT6W4A3qHGvIDta3ptLYpIAOD2sY3GYq2nf3Bbzx81wZK14JdDDHUX2Rs
 6+ahAA==
In-Reply-To: <c48df0a3-f837-4e03-84d8-ef63c09b6da7@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 15/01/2024 4:08 pm, Jan Beulich wrote:
> While .probe() doesn't need fiddling with for being run only very early,
> init_apic_ldr() wants converting too despite not being on a frequently
> executed path: This way all pre-filled struct genapic instances can
> become __initconst_cf_clobber, thus allowing to eliminate 15 more ENDBR
> during the 2nd phase of alternatives patching.
>
> While fiddling with section annotations here, also move "genapic" itself
> to .data.ro_after_init.
>
> Signed-off-by: Jan Beulich <jbeulich@suse.com>

Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>


From xen-devel-bounces@lists.xenproject.org Mon Jan 15 16:10:37 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 15 Jan 2024 16:10:37 +0000
Received: from list by lists.xenproject.org with outflank-mailman.667507.1038840 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPPXk-000301-SS; Mon, 15 Jan 2024 16:10:32 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 667507.1038840; Mon, 15 Jan 2024 16:10:32 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPPXk-0002zu-PS; Mon, 15 Jan 2024 16:10:32 +0000
Received: by outflank-mailman (input) for mailman id 667507;
 Mon, 15 Jan 2024 16:10:32 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=jLm1=IZ=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rPPXk-0002zm-2E
 for xen-devel@lists.xenproject.org; Mon, 15 Jan 2024 16:10:32 +0000
Received: from mail-wm1-x32e.google.com (mail-wm1-x32e.google.com
 [2a00:1450:4864:20::32e])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 9ae09a34-b3c0-11ee-98f1-6d05b1d4d9a1;
 Mon, 15 Jan 2024 17:10:31 +0100 (CET)
Received: by mail-wm1-x32e.google.com with SMTP id
 5b1f17b1804b1-40e80046275so3534555e9.2
 for <xen-devel@lists.xenproject.org>; Mon, 15 Jan 2024 08:10:31 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 w4-20020a05600c474400b0040d5ae2906esm20362467wmo.30.2024.01.15.08.10.29
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 15 Jan 2024 08:10:30 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 9ae09a34-b3c0-11ee-98f1-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1705335030; x=1705939830; darn=lists.xenproject.org;
        h=content-transfer-encoding:autocrypt:subject:from:cc:to
         :content-language:user-agent:mime-version:date:message-id:from:to:cc
         :subject:date:message-id:reply-to;
        bh=456YmwaT9Rl3xgCUF6lbVnWv3VMNT1WQ1BadiNTovWw=;
        b=Yf59KvUWgkLxjKcwvlHwCMPH5zbYpbLdpPFtA+50Up4s9zAP3WItyQPm/pgFPQWYDr
         7RbDvL/602wrfiqZv6HnWsSRVCx47QP2bsEI6v66xPUaXyP0qc52TeYCQpiObepJXsg9
         moCk1RltgdzoJHl8Eb3RYDJd9yi057BueElci3hbbFif0r2dAJI/cTRN7avezDuqATao
         ZcJ3Zg1aBxblLtiFREbum1FV8kl/ODgOET35lSR6JI5pOcGBK8uqhbg4vH3cYBcO3SUO
         jZEisua5BM2sda5RuNtEuIQ/ULEqmQMniZru/c/HqLnkwgw+xjwX2fduujuE0QgpsJK3
         0gZQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705335030; x=1705939830;
        h=content-transfer-encoding:autocrypt:subject:from:cc:to
         :content-language:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=456YmwaT9Rl3xgCUF6lbVnWv3VMNT1WQ1BadiNTovWw=;
        b=Kox2QNsjXQE0leE/ioXtnPBPTq8B6eJzm5mFRI/RLZBd3aKjPAh/hJTYKfX9qb3YkV
         1AriZqilfH67st5xu+YNd8K0lF27BYgkkHDBtHI6K2zpSTUda3lt8uhpV+GFPu7fxsNt
         nhjUX+WVM6WHjicY8xcGE9BS8hyoteoFu9vnlLOONKnhtxyFYbKnzybWef+Ck+asbfXs
         +2FOYOrMFzqxvq1rz0UqkXNt7733BVkqsg3A0b/Vw4CU/FpGwX2jMGDHWO0bhrSUVFY1
         qmJ+AcM72dzKdpNGeCsKL+XoqL7KTsY1ZQGebSmntoQPbzDb6ijg6kuHOQoR7Em2dRCL
         whog==
X-Gm-Message-State: AOJu0YzKuNA92zbLZkxUroRoeXatMv4vZuOGR+kcSrqTVpR1f7Y+/Ogz
	/SxUHOt8+ZadgrP/yMvcqFAqveDl2tB4zq0lYxaDXLG8dA==
X-Google-Smtp-Source: AGHT+IHl/ew3hmE1ckXT5XY+62em/zIbhXOxeOcQsNGB/uZVgd6z/OmdqKjwK4hs/u9I3X+/VQE4qg==
X-Received: by 2002:a7b:c457:0:b0:40e:6703:cfb1 with SMTP id l23-20020a7bc457000000b0040e6703cfb1mr3196617wmi.15.1705335030476;
        Mon, 15 Jan 2024 08:10:30 -0800 (PST)
Message-ID: <7da816ba-f5bd-491c-a6a8-b750e3ff2222@suse.com>
Date: Mon, 15 Jan 2024 17:10:29 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Content-Language: en-US
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 George Dunlap <george.dunlap@citrix.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
From: Jan Beulich <jbeulich@suse.com>
Subject: [PATCH] cpufreq: finish genapic conversion to altcall
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

Even functions used on infrequently executed paths want converting: This
way all pre-filled struct cpufreq_driver instances can become
__initconst_cf_clobber, thus allowing to eliminate another 15 ENDBR
during the 2nd phase of alternatives patching.

For acpi-cpufreq's optionally populated .get hook make sure alternatives
patching can actually see the pointer. See also the code comment.

Signed-off-by: Jan Beulich <jbeulich@suse.com>
---
Instead of adjusting the call site, we could also purge the .setpolicy
hook: None of the three drivers actually implements it.

--- a/xen/arch/x86/acpi/cpufreq/cpufreq.c
+++ b/xen/arch/x86/acpi/cpufreq/cpufreq.c
@@ -625,12 +625,14 @@ static int cf_check acpi_cpufreq_cpu_exi
     return 0;
 }
 
-static const struct cpufreq_driver __initconstrel acpi_cpufreq_driver = {
+static const struct cpufreq_driver __initconst_cf_clobber
+acpi_cpufreq_driver = {
     .name   = "acpi-cpufreq",
     .verify = acpi_cpufreq_verify,
     .target = acpi_cpufreq_target,
     .init   = acpi_cpufreq_cpu_init,
     .exit   = acpi_cpufreq_cpu_exit,
+    .get    = get_cur_freq_on_cpu,
 };
 
 static int __init cf_check cpufreq_driver_init(void)
@@ -675,6 +677,19 @@ static int __init cf_check cpufreq_drive
 }
 presmp_initcall(cpufreq_driver_init);
 
+static int __init cf_check cpufreq_driver_late_init(void)
+{
+    /*
+     * While acpi_cpufreq_driver wants to unconditionally have all hooks
+     * populated for __initconst_cf_clobber to have as much of an effect as
+     * possible, zap the .get hook here (but not in cpufreq_driver_init()),
+     * until acpi_cpufreq_cpu_init() knows whether it's wanted / needed.
+     */
+    cpufreq_driver.get = NULL;
+    return 0;
+}
+__initcall(cpufreq_driver_late_init);
+
 int cpufreq_cpu_init(unsigned int cpuid)
 {
     int ret;
--- a/xen/arch/x86/acpi/cpufreq/hwp.c
+++ b/xen/arch/x86/acpi/cpufreq/hwp.c
@@ -513,8 +513,8 @@ static int cf_check hwp_cpufreq_update(i
     return per_cpu(hwp_drv_data, cpuid)->ret;
 }
 
-static const struct cpufreq_driver __initconstrel hwp_cpufreq_driver =
-{
+static const struct cpufreq_driver __initconst_cf_clobber
+hwp_cpufreq_driver = {
     .name   = XEN_HWP_DRIVER_NAME,
     .verify = hwp_cpufreq_verify,
     .target = hwp_cpufreq_target,
--- a/xen/arch/x86/acpi/cpufreq/powernow.c
+++ b/xen/arch/x86/acpi/cpufreq/powernow.c
@@ -317,7 +317,8 @@ static int cf_check powernow_cpufreq_cpu
     return 0;
 }
 
-static const struct cpufreq_driver __initconstrel powernow_cpufreq_driver = {
+static const struct cpufreq_driver __initconst_cf_clobber
+powernow_cpufreq_driver = {
     .name   = "powernow",
     .verify = powernow_cpufreq_verify,
     .target = powernow_cpufreq_target,
--- a/xen/drivers/acpi/pmstat.c
+++ b/xen/drivers/acpi/pmstat.c
@@ -240,7 +240,8 @@ static int get_cpufreq_para(struct xen_s
         return ret;
 
     op->u.get_para.cpuinfo_cur_freq =
-        cpufreq_driver.get ? cpufreq_driver.get(op->cpuid) : policy->cur;
+        cpufreq_driver.get ? alternative_call(cpufreq_driver.get, op->cpuid)
+                           : policy->cur;
     op->u.get_para.cpuinfo_max_freq = policy->cpuinfo.max_freq;
     op->u.get_para.cpuinfo_min_freq = policy->cpuinfo.min_freq;
     op->u.get_para.turbo_enabled = cpufreq_get_turbo_status(op->cpuid);
--- a/xen/drivers/cpufreq/cpufreq.c
+++ b/xen/drivers/cpufreq/cpufreq.c
@@ -278,7 +278,7 @@ int cpufreq_add_cpu(unsigned int cpu)
         policy->cpu = cpu;
         per_cpu(cpufreq_cpu_policy, cpu) = policy;
 
-        ret = cpufreq_driver.init(policy);
+        ret = alternative_call(cpufreq_driver.init, policy);
         if (ret) {
             free_cpumask_var(policy->cpus);
             xfree(policy);
@@ -337,7 +337,7 @@ err1:
     cpumask_clear_cpu(cpu, cpufreq_dom->map);
 
     if (cpumask_empty(policy->cpus)) {
-        cpufreq_driver.exit(policy);
+        alternative_call(cpufreq_driver.exit, policy);
         free_cpumask_var(policy->cpus);
         xfree(policy);
     }
@@ -401,7 +401,7 @@ int cpufreq_del_cpu(unsigned int cpu)
     cpumask_clear_cpu(cpu, cpufreq_dom->map);
 
     if (cpumask_empty(policy->cpus)) {
-        cpufreq_driver.exit(policy);
+        alternative_call(cpufreq_driver.exit, policy);
         free_cpumask_var(policy->cpus);
         xfree(policy);
     }
--- a/xen/drivers/cpufreq/utility.c
+++ b/xen/drivers/cpufreq/utility.c
@@ -413,7 +413,7 @@ int cpufreq_update_turbo(int cpuid, int
     policy->turbo = new_state;
     if (cpufreq_driver.update)
     {
-        ret = cpufreq_driver.update(cpuid, policy);
+        ret = alternative_call(cpufreq_driver.update, cpuid, policy);
         if (ret)
             policy->turbo = curr_state;
     }
@@ -449,7 +449,7 @@ int __cpufreq_set_policy(struct cpufreq_
         return -EINVAL;
 
     /* verify the cpu speed can be set within this limit */
-    ret = cpufreq_driver.verify(policy);
+    ret = alternative_call(cpufreq_driver.verify, policy);
     if (ret)
         return ret;
 
@@ -457,7 +457,7 @@ int __cpufreq_set_policy(struct cpufreq_
     data->max = policy->max;
     data->limits = policy->limits;
     if (cpufreq_driver.setpolicy)
-        return cpufreq_driver.setpolicy(data);
+        return alternative_call(cpufreq_driver.setpolicy, data);
 
     if (policy->governor != data->governor) {
         /* save old, working values */


From xen-devel-bounces@lists.xenproject.org Mon Jan 15 16:14:27 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 15 Jan 2024 16:14:27 +0000
Received: from list by lists.xenproject.org with outflank-mailman.667511.1038850 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPPbV-0004vE-DE; Mon, 15 Jan 2024 16:14:25 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 667511.1038850; Mon, 15 Jan 2024 16:14:25 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPPbV-0004v7-9N; Mon, 15 Jan 2024 16:14:25 +0000
Received: by outflank-mailman (input) for mailman id 667511;
 Mon, 15 Jan 2024 16:14:24 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=1TER=IZ=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1rPPbU-0004v1-DU
 for xen-devel@lists.xenproject.org; Mon, 15 Jan 2024 16:14:24 +0000
Received: from mail-ed1-x52f.google.com (mail-ed1-x52f.google.com
 [2a00:1450:4864:20::52f])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 258cb27c-b3c1-11ee-98f1-6d05b1d4d9a1;
 Mon, 15 Jan 2024 17:14:23 +0100 (CET)
Received: by mail-ed1-x52f.google.com with SMTP id
 4fb4d7f45d1cf-554fe147ddeso9976450a12.3
 for <xen-devel@lists.xenproject.org>; Mon, 15 Jan 2024 08:14:23 -0800 (PST)
Received: from [10.80.67.30] (default-46-102-197-194.interdsl.co.uk.
 [46.102.197.194]) by smtp.gmail.com with ESMTPSA id
 q8-20020a170906360800b00a2bd52d2a84sm5390973ejb.200.2024.01.15.08.14.22
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 15 Jan 2024 08:14:22 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 258cb27c-b3c1-11ee-98f1-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1705335263; x=1705940063; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=EYOPBuDuzcEl+Ih2Qz13UOdTwcrAo3IjkMYJkUAnwY4=;
        b=eX+6XxSD3VmY2ehAo4UME7lnB6u/aNQFZHMzLQ52cdmP4+LJseZ/5RrH1CDwOl3exZ
         7lgx0X0W18WIPtZDpNO//oFEqzx9VkdODxOk7cJnoPEK+GONDNoc4zWVfNOu1e0ITXN9
         qlW770e1zZFhJ7te/zASSgcLd/HO4OWXO7vRo=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705335263; x=1705940063;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=EYOPBuDuzcEl+Ih2Qz13UOdTwcrAo3IjkMYJkUAnwY4=;
        b=HhF4y89CJP5oVmaBViB79KSZTxPM8cVPP4/s3JX5B78/mm5i5VjDlLlRj+CNT9EC52
         pS4VuST12qeksnstGRhxBt/iVEUSLy0xvXnWhtJjXj6Lo+xSjvJhzD1hf6vXjn9fMGzd
         PYWYv6XnmMmzo2vj4xfUQ+W6hZPQbm9WjAKTjg8r+h4jJ5HqTNmUuNWZ6Wwh0gZBcIr7
         PHrVrhFuavLCN5gqRmaeEdaNdz+lfy0pCz/+Rh0GjZniefS4SJF5OhXaSUh+Vu9hZs1s
         xIquQI/Ve/67ig2O03OZEBE+wPCuTvYiUXNHVgeNRnC0uUP7+1Nh/AvK0X+U9+G43LHM
         k/pw==
X-Gm-Message-State: AOJu0YwMohi9oO4BgutdgxxSnJ6X4VXU5ml7RNASb97TsEp6S/xntWV8
	ZyhjDf+1rFprtj7SxThjcsE/FXbDoYKXnA==
X-Google-Smtp-Source: AGHT+IFnKZFy8i/45QAC66vYkJ6GYD+FHeTfuErHuw/bmbnmwd2ZpGMEOz3ahDPtq2S1Q9lO0X7abQ==
X-Received: by 2002:a17:906:5f84:b0:a2d:a39c:6613 with SMTP id a4-20020a1709065f8400b00a2da39c6613mr555571eju.168.1705335263038;
        Mon, 15 Jan 2024 08:14:23 -0800 (PST)
Message-ID: <a958fc14-e3bc-4b1b-b989-78d23df8bced@citrix.com>
Date: Mon, 15 Jan 2024 16:14:22 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] cpufreq: finish genapic conversion to altcall
Content-Language: en-GB
To: Jan Beulich <jbeulich@suse.com>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: George Dunlap <george.dunlap@citrix.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
References: <7da816ba-f5bd-491c-a6a8-b750e3ff2222@suse.com>
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 xsFNBFLhNn8BEADVhE+Hb8i0GV6mihnnr/uiQQdPF8kUoFzCOPXkf7jQ5sLYeJa0cQi6Penp
 VtiFYznTairnVsN5J+ujSTIb+OlMSJUWV4opS7WVNnxHbFTPYZVQ3erv7NKc2iVizCRZ2Kxn
 srM1oPXWRic8BIAdYOKOloF2300SL/bIpeD+x7h3w9B/qez7nOin5NzkxgFoaUeIal12pXSR
 Q354FKFoy6Vh96gc4VRqte3jw8mPuJQpfws+Pb+swvSf/i1q1+1I4jsRQQh2m6OTADHIqg2E
 ofTYAEh7R5HfPx0EXoEDMdRjOeKn8+vvkAwhviWXTHlG3R1QkbE5M/oywnZ83udJmi+lxjJ5
 YhQ5IzomvJ16H0Bq+TLyVLO/VRksp1VR9HxCzItLNCS8PdpYYz5TC204ViycobYU65WMpzWe
 LFAGn8jSS25XIpqv0Y9k87dLbctKKA14Ifw2kq5OIVu2FuX+3i446JOa2vpCI9GcjCzi3oHV
 e00bzYiHMIl0FICrNJU0Kjho8pdo0m2uxkn6SYEpogAy9pnatUlO+erL4LqFUO7GXSdBRbw5
 gNt25XTLdSFuZtMxkY3tq8MFss5QnjhehCVPEpE6y9ZjI4XB8ad1G4oBHVGK5LMsvg22PfMJ
 ISWFSHoF/B5+lHkCKWkFxZ0gZn33ju5n6/FOdEx4B8cMJt+cWwARAQABzSlBbmRyZXcgQ29v
 cGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPsLBegQTAQgAJAIbAwULCQgHAwUVCgkI
 CwUWAgMBAAIeAQIXgAUCWKD95wIZAQAKCRBlw/kGpdefoHbdD/9AIoR3k6fKl+RFiFpyAhvO
 59ttDFI7nIAnlYngev2XUR3acFElJATHSDO0ju+hqWqAb8kVijXLops0gOfqt3VPZq9cuHlh
 IMDquatGLzAadfFx2eQYIYT+FYuMoPZy/aTUazmJIDVxP7L383grjIkn+7tAv+qeDfE+txL4
 SAm1UHNvmdfgL2/lcmL3xRh7sub3nJilM93RWX1Pe5LBSDXO45uzCGEdst6uSlzYR/MEr+5Z
 JQQ32JV64zwvf/aKaagSQSQMYNX9JFgfZ3TKWC1KJQbX5ssoX/5hNLqxMcZV3TN7kU8I3kjK
 mPec9+1nECOjjJSO/h4P0sBZyIUGfguwzhEeGf4sMCuSEM4xjCnwiBwftR17sr0spYcOpqET
 ZGcAmyYcNjy6CYadNCnfR40vhhWuCfNCBzWnUW0lFoo12wb0YnzoOLjvfD6OL3JjIUJNOmJy
 RCsJ5IA/Iz33RhSVRmROu+TztwuThClw63g7+hoyewv7BemKyuU6FTVhjjW+XUWmS/FzknSi
 dAG+insr0746cTPpSkGl3KAXeWDGJzve7/SBBfyznWCMGaf8E2P1oOdIZRxHgWj0zNr1+ooF
 /PzgLPiCI4OMUttTlEKChgbUTQ+5o0P080JojqfXwbPAyumbaYcQNiH1/xYbJdOFSiBv9rpt
 TQTBLzDKXok86M7BTQRS4TZ/ARAAkgqudHsp+hd82UVkvgnlqZjzz2vyrYfz7bkPtXaGb9H4
 Rfo7mQsEQavEBdWWjbga6eMnDqtu+FC+qeTGYebToxEyp2lKDSoAsvt8w82tIlP/EbmRbDVn
 7bhjBlfRcFjVYw8uVDPptT0TV47vpoCVkTwcyb6OltJrvg/QzV9f07DJswuda1JH3/qvYu0p
 vjPnYvCq4NsqY2XSdAJ02HrdYPFtNyPEntu1n1KK+gJrstjtw7KsZ4ygXYrsm/oCBiVW/OgU
 g/XIlGErkrxe4vQvJyVwg6YH653YTX5hLLUEL1NS4TCo47RP+wi6y+TnuAL36UtK/uFyEuPy
 wwrDVcC4cIFhYSfsO0BumEI65yu7a8aHbGfq2lW251UcoU48Z27ZUUZd2Dr6O/n8poQHbaTd
 6bJJSjzGGHZVbRP9UQ3lkmkmc0+XCHmj5WhwNNYjgbbmML7y0fsJT5RgvefAIFfHBg7fTY/i
 kBEimoUsTEQz+N4hbKwo1hULfVxDJStE4sbPhjbsPCrlXf6W9CxSyQ0qmZ2bXsLQYRj2xqd1
 bpA+1o1j2N4/au1R/uSiUFjewJdT/LX1EklKDcQwpk06Af/N7VZtSfEJeRV04unbsKVXWZAk
 uAJyDDKN99ziC0Wz5kcPyVD1HNf8bgaqGDzrv3TfYjwqayRFcMf7xJaL9xXedMcAEQEAAcLB
 XwQYAQgACQUCUuE2fwIbDAAKCRBlw/kGpdefoG4XEACD1Qf/er8EA7g23HMxYWd3FXHThrVQ
 HgiGdk5Yh632vjOm9L4sd/GCEACVQKjsu98e8o3ysitFlznEns5EAAXEbITrgKWXDDUWGYxd
 pnjj2u+GkVdsOAGk0kxczX6s+VRBhpbBI2PWnOsRJgU2n10PZ3mZD4Xu9kU2IXYmuW+e5KCA
 vTArRUdCrAtIa1k01sPipPPw6dfxx2e5asy21YOytzxuWFfJTGnVxZZSCyLUO83sh6OZhJkk
 b9rxL9wPmpN/t2IPaEKoAc0FTQZS36wAMOXkBh24PQ9gaLJvfPKpNzGD8XWR5HHF0NLIJhgg
 4ZlEXQ2fVp3XrtocHqhu4UZR4koCijgB8sB7Tb0GCpwK+C4UePdFLfhKyRdSXuvY3AHJd4CP
 4JzW0Bzq/WXY3XMOzUTYApGQpnUpdOmuQSfpV9MQO+/jo7r6yPbxT7CwRS5dcQPzUiuHLK9i
 nvjREdh84qycnx0/6dDroYhp0DFv4udxuAvt1h4wGwTPRQZerSm4xaYegEFusyhbZrI0U9tJ
 B8WrhBLXDiYlyJT6zOV2yZFuW47VrLsjYnHwn27hmxTC/7tvG3euCklmkn9Sl9IAKFu29RSo
 d5bD8kMSCYsTqtTfT6W4A3qHGvIDta3ptLYpIAOD2sY3GYq2nf3Bbzx81wZK14JdDDHUX2Rs
 6+ahAA==
In-Reply-To: <7da816ba-f5bd-491c-a6a8-b750e3ff2222@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 15/01/2024 4:10 pm, Jan Beulich wrote:
> Even functions used on infrequently executed paths want converting: This
> way all pre-filled struct cpufreq_driver instances can become
> __initconst_cf_clobber, thus allowing to eliminate another 15 ENDBR
> during the 2nd phase of alternatives patching.
>
> For acpi-cpufreq's optionally populated .get hook make sure alternatives
> patching can actually see the pointer. See also the code comment.
>
> Signed-off-by: Jan Beulich <jbeulich@suse.com>

Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>


From xen-devel-bounces@lists.xenproject.org Mon Jan 15 16:16:39 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 15 Jan 2024 16:16:39 +0000
Received: from list by lists.xenproject.org with outflank-mailman.667514.1038859 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPPdZ-0005Se-O3; Mon, 15 Jan 2024 16:16:33 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 667514.1038859; Mon, 15 Jan 2024 16:16:33 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPPdZ-0005SX-Kk; Mon, 15 Jan 2024 16:16:33 +0000
Received: by outflank-mailman (input) for mailman id 667514;
 Mon, 15 Jan 2024 16:16:32 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>) id 1rPPdY-0005SM-Bl
 for xen-devel@lists.xenproject.org; Mon, 15 Jan 2024 16:16:32 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rPPdX-0007Lq-Jm; Mon, 15 Jan 2024 16:16:31 +0000
Received: from gw1.octic.net ([88.97.20.152] helo=[10.0.1.240])
 by xenbits.xenproject.org with esmtpsa
 (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rPPdX-00052A-E1; Mon, 15 Jan 2024 16:16:31 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
	s=20200302mail; h=Content-Transfer-Encoding:Content-Type:In-Reply-To:From:
	References:Cc:To:Subject:MIME-Version:Date:Message-ID;
	bh=KmDogC24L+w80RLD+9Vn+ifiApG/aD7I6eieaYAx9ZQ=; b=YKa+GdPHjGJ1h5LiHMZgbSlwm/
	0uHmBia2iNWlZmhkThMFv64JuwW6xEOgj+vbZO1RPw1uLDDsdwc7+vYC7aAOjMKaFREX/CDsAHm2Q
	+Zq4KOn5CnC5blq6SoqJlFxLZGoFEt1Fxi/T1hudXFaXLkVrb0aMGaXkm3FatVl2ow74=;
Message-ID: <ca2a64f8-ac0d-4b61-8f48-34478371bcbc@xen.org>
Date: Mon, 15 Jan 2024 16:16:29 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v5 13/13] xen/arm: add cache coloring support for Xen
Content-Language: en-GB
To: Carlo Nonato <carlo.nonato@minervasys.tech>
Cc: xen-devel@lists.xenproject.org,
 Stefano Stabellini <sstabellini@kernel.org>,
 Bertrand Marquis <bertrand.marquis@arm.com>,
 Michal Orzel <michal.orzel@amd.com>,
 Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
 Marco Solieri <marco.solieri@minervasys.tech>
References: <20240102095138.17933-1-carlo.nonato@minervasys.tech>
 <20240102095138.17933-14-carlo.nonato@minervasys.tech>
 <4553cc26-deb5-42ed-87b9-6cba2a5099eb@xen.org>
 <CAG+AhRXHfGJksqUrPXoHqNze+D654jJV0kVYBZaPLYwccdEz5Q@mail.gmail.com>
 <aa064f8f-d30e-4ac1-9239-daba5a806794@xen.org>
 <CAG+AhRXUPvKGu-y9qbVmhc0_ThCdxFvG=BYwCQMBH=mjo45qHw@mail.gmail.com>
 <985e1a2a-45eb-496c-8043-5f0c3c9f7766@xen.org>
 <CAG+AhRVKbM-n8ieg-CMbRG-4RgUXMSZL=ZER8EAWvGJgpEzUwA@mail.gmail.com>
From: Julien Grall <julien@xen.org>
In-Reply-To: <CAG+AhRVKbM-n8ieg-CMbRG-4RgUXMSZL=ZER8EAWvGJgpEzUwA@mail.gmail.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit



On 15/01/2024 15:43, Carlo Nonato wrote:
> Hi Julien,

Hi Carlo,

> On Mon, Jan 15, 2024 at 12:18 PM Julien Grall <julien@xen.org> wrote:
>> On 15/01/2024 10:11, Carlo Nonato wrote:
>>> I understand what you're talking about, and it seems reasonable to get rid of
>>> xen_colored_temp[] and create_llc_coloring_mappings() since in the end they
>>> serve the purpose of mapping the physically colored space that is already
>>> mapped using xen_xenmap[] pagetables.
>>> What I don't understand is then how to copy/relocate Xen since I don't have a
>>> destination virtual space anymore to use in relocate_xen().
>>
>> You will need to link xen_xenmap[] in boot_second[...] as well. With
>> that, you will be able to access the new Xen through the temporary area.
> 
> Wouldn't it result in overwriting the current virtual space mapping?
> boot_second is the live page table and if I link xen_xenmap[] then
> XEN_VIRT_START would point to the new colored space which is still empty at
> this stage...

If you link at XEN_VIRT_START then yes. But you could link at 
BOOT_RELOC_VIRT_START like you already do today.

> 
>> [...]
>>
>>>> Note that this means the init_ttbr cannot be written directly. But you
>>>> can solve this problem by re-mapping the address.
>>>
>>> How to remap a single address?
>>
>> You should be able to use map_domain_page() to map the page where
>> init_ttbr is.
>>
>>> And if moving init_ttbr in the identity-mapped area means that it's no longer
>>> writable, so that I need to remap it, why moving it in that area in the first
>>> place. Again I think I'm missing something.
>>
>> The goal is to have everything used (code, data) before the MMU is
>> turned on residing in a single page. So secondary CPUs can directly jump
>> to the colored Xen without any trouble.
> 
> This is what confuses me. Why having everything on a single page makes
> secondary cpus able to jump directly to colored Xen? (also see below)

Because the code running with the MMU off can access easily access 
everything.

> 
>>>>>
>>>>> 3) To access the identity mapping area I would need some accessor that takes
>>>>> an address and returns it + phys_offset, or is there a better way to do it?
>>>>
>>>> I am not sure I understand what you mean. Can you clarify?
>>>
>>> In my idea, I would use the identity mapping to access the "old" variables,
>>> where "old" means non physically colored. init_ttbr is an example. When
>>> Xen it's copied on the new physical space, init_ttbr is copied with it and
>>> if the boot cpu modifies this variable, it's actually touching the colored
>>> one and not the old one. This means that secondary CPUs that still haven't
>>> jumped to the new space, won't be able to see the new value and will never
>>> go online.
>>> So to access this "old" init_ttbr variable I need it's identity address,
>>> which is its current virtual address + some physical offset. I was asking
>>> you if this is the right approach to use the identity mapping.
>>
>> Secondary CPUs would directly start on the colored Xen. So they will be
>> able to access the "new" init_ttbr & co.
> 
> How can this be true? I mean, in call_psci_cpu_on() I can start those CPUs in
> the colored space, but they still use the boot_* pagetables

Are you looking at the 64-bit or 32-bit code? For 64-bit, staging is not 
using boot_* pagetable anymore for secondary CPUs. Instead, they 
directly jump to the runtime page-tables.

> and there I can't
> easily link the new colored space, or, at least, I'm not succeding in doing
> that. What I tried at the moment is to link xen_xenmap in boot_second after
> switch_ttbr because of the problem I described above. But then secondary
> CPUs never go online...

It would be helpful if you share some code.

> 
>> [...]
>>
>>>> ... as I wrote ealier your current approach seems to have a flaw. As you
>>>> overwrite xen_bootmodule->{start, size}. setup_mm() will end up to add
>>>> the old Xen region to the boot allocator. This is before any secondary
>>>> CPUs are booted up.
>>>>
>>>> IOW, the allocator may provide some memory from the old Xen and nothing
>>>> good will happen from that.
>>>>
>>>> The only way to solve it is to add another module. So the memory is
>>>> skipped by setup_mm(). However see below.
>>>>
>>>>>
>>>>> Yes that should be memory that in the end would not be needed so it must
>>>>> return to the boot-allocator (if that's what you mean). But how to do
>>>>> that?
>>>>
>>>> You can't really discard the old temporary Xen. This may work today
>>>> because we don't support CPU hotplug or suspend/resume. But there was
>>>> some series on the ML to enable it and I don't see any reason why
>>>> someone would not want to use the features with cache coloring.
>>>>
>>>> So the old temporary Xen would have to be kept around forever. This is
>>>> up to 8MB of memory wasted.
>>>>
>>>> The right approach is to have the secondary CPU boot code (including the
>>>> variables it is using) fitting in the same page (or possibly multiple so
>>>> long this is small and physically contiguous). With that it doesn't
>>>> matter where is the trampoline, it could stay at the old place, but we
>>>> would only waste a few pages rather than up 8MB as it is today.
>>>
>>> So what are you suggesting is to create a new section in the linker script
>>> for the trampoline code and data,
>>
>> We already have a section for that in place (see .idmap.*) which happens
>> to be at the beginning of Xen. Right now, the section is in text. Which
>> is why it is read-only executable.
>>
>>> then in setup_mm() we would skip this
>>> memory?
>>
>> We should not need this. Secondary boot CPUs should boot direclty on the
>> colored Xen.
>>
>>> Am I following you correctly? Sorry those topics are a little out
>>> of my preparation as you probably already guessed.
>>
>> No worries. I am happy to go in as much details as necessary. I can also
>> attempt to write a patch if that helps. (unless someone else in the Arm
>> maintainers want to give a try).
> 
> Yes this would help. Thanks.

I will try to have a look this evening. If I can't, it may have to wait 
a couple of weeks unless someone has time before hand.

Cheers,

-- 
Julien Grall


From xen-devel-bounces@lists.xenproject.org Mon Jan 15 16:45:24 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 15 Jan 2024 16:45:24 +0000
Received: from list by lists.xenproject.org with outflank-mailman.667522.1038870 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPQ59-0006sK-Rc; Mon, 15 Jan 2024 16:45:03 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 667522.1038870; Mon, 15 Jan 2024 16:45:03 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPQ59-0006sD-Or; Mon, 15 Jan 2024 16:45:03 +0000
Received: by outflank-mailman (input) for mailman id 667522;
 Mon, 15 Jan 2024 16:45:02 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=jLm1=IZ=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rPQ58-0006s7-Df
 for xen-devel@lists.xenproject.org; Mon, 15 Jan 2024 16:45:02 +0000
Received: from mail-wr1-x42a.google.com (mail-wr1-x42a.google.com
 [2a00:1450:4864:20::42a])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 6bed2121-b3c5-11ee-9b0f-b553b5be7939;
 Mon, 15 Jan 2024 17:44:59 +0100 (CET)
Received: by mail-wr1-x42a.google.com with SMTP id
 ffacd0b85a97d-337874b8164so3881138f8f.2
 for <xen-devel@lists.xenproject.org>; Mon, 15 Jan 2024 08:44:59 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 f6-20020adfb606000000b00336aa190139sm12264240wre.5.2024.01.15.08.44.58
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 15 Jan 2024 08:44:58 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 6bed2121-b3c5-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1705337099; x=1705941899; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=sOEFBxLaLG7oVRmQSbtvUXSuPQjg+OG4PIh8V1z/iYY=;
        b=ESV4kN1Czdgq+xanj7SMQO52EGuONLlUUzhiDyms+glkZ5EyE4MJWKcdleFwuiHtnd
         BzPn/ElOShKU+MF/4JZ4DKyUknTffwQ7PJPXNyPtQtRPdXzfI5aYkoRTKFCiBWT/5gl8
         5q5op/Qy6+wI5M5p0fp3bxBfsy+XROiW6iMPEG/c2xxuj4uJMlhiCRN2YuNxKz276HKg
         crtgCRcXzLP/WYAov+7y0TfTeUR0rItDeo9tyojQWEdJk1ZQIQl18RwEwfrtuZ1LQNx2
         b/a9AHqtvPQC29+ZLz0G3mT7LzX2hWAdVA7FhoqFl5xVJA4Ousks+rrlrcwJVvtlkIqb
         N+jw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705337099; x=1705941899;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=sOEFBxLaLG7oVRmQSbtvUXSuPQjg+OG4PIh8V1z/iYY=;
        b=dVbSqVCPitP/hqQatbmht0T5YvA1HiY1yNpio3J7jmRkYLao6wUqxPIAnI3EgIpFX2
         7BJyUgwX3704+nLMgLaLSW5YUlDxrsZL4BM+N/sxQc+uGu44FIrm3wUO2AC/ZiAs6aZO
         BzzWDOPlWVlkEfs25DFI8OsocA0gHJCQYWpQ4VlfXcXjKclXSe3J09ujmsQ1WLcSZA8Q
         32Rxer/S6Js2DI7g+ZdT5r/+M4kT7dwaLM6Ga41KRGmoWdV00KkwGqBP8e165Jkptt8b
         uNNLYRzchdhIDjinanA4eYFp+LBIW8nsGgSX+BNCJGoiVWEWAWZLiU5UXkE1kBFt4wmw
         XAUQ==
X-Gm-Message-State: AOJu0YxIeHSZk0CQmtuOU9oVuIg8apfSwdTIaGjKcvPbAPcUEh3YsN4J
	SKXsgvcga/xdu5xbHR67qIwpgtkMKvpX
X-Google-Smtp-Source: AGHT+IHulxzQ4LRGKxWh4Xy6E/noRG8nmq5zJXu/oWmi6T2La0rZYuH5nYyHVk2kQsmJdYLmLMHlpQ==
X-Received: by 2002:adf:9b8d:0:b0:336:5ec6:e9c4 with SMTP id d13-20020adf9b8d000000b003365ec6e9c4mr3938991wrc.34.1705337099093;
        Mon, 15 Jan 2024 08:44:59 -0800 (PST)
Message-ID: <23f1212a-66a8-47b0-904b-08b2ab54c72b@suse.com>
Date: Mon, 15 Jan 2024 17:44:58 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 10/34] xen/riscv: introduce bitops.h
Content-Language: en-US
To: Oleksii Kurochko <oleksii.kurochko@gmail.com>
Cc: Alistair Francis <alistair.francis@wdc.com>,
 Bob Eshleman <bobbyeshleman@gmail.com>, Connor Davis
 <connojdavis@gmail.com>, Andrew Cooper <andrew.cooper3@citrix.com>,
 George Dunlap <george.dunlap@citrix.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>,
 xen-devel@lists.xenproject.org
References: <cover.1703255175.git.oleksii.kurochko@gmail.com>
 <841d59c3950970f4937da200cf8f04aa39132e14.1703255175.git.oleksii.kurochko@gmail.com>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <841d59c3950970f4937da200cf8f04aa39132e14.1703255175.git.oleksii.kurochko@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 22.12.2023 16:12, Oleksii Kurochko wrote:
> --- /dev/null
> +++ b/xen/arch/riscv/include/asm/bitops.h
> @@ -0,0 +1,267 @@
> +/* SPDX-License-Identifier: GPL-2.0 */
> +/* Copyright (C) 2012 Regents of the University of California */
> +
> +#ifndef _ASM_RISCV_BITOPS_H
> +#define _ASM_RISCV_BITOPS_H
> +
> +#include <asm/system.h>
> +
> +#include <asm-generic/bitops/bitops-bits.h>
> +
> +/* Based on linux/arch/include/linux/bits.h */
> +
> +#define BIT_MASK(nr)        (1UL << ((nr) % BITS_PER_LONG))
> +#define BIT_WORD(nr)        ((nr) / BITS_PER_LONG)
> +
> +#define __set_bit(n,p)      set_bit(n,p)
> +#define __clear_bit(n,p)    clear_bit(n,p)
> +
> +/* Based on linux/arch/include/asm/bitops.h */
> +
> +#if ( BITS_PER_LONG == 64 )
> +#define __AMO(op)   "amo" #op ".d"
> +#elif ( BITS_PER_LONG == 32 )
> +#define __AMO(op)   "amo" #op ".w"
> +#else
> +#error "Unexpected BITS_PER_LONG"
> +#endif
> +
> +#define __test_and_op_bit_ord(op, mod, nr, addr, ord)		\
> +({								\
> +    unsigned long __res, __mask;				\
> +    __mask = BIT_MASK(nr);					\
> +    __asm__ __volatile__ (					\
> +        __AMO(op) #ord " %0, %2, %1"			\
> +        : "=r" (__res), "+A" (addr[BIT_WORD(nr)])	\
> +        : "r" (mod(__mask))				\
> +        : "memory");					\
> +    ((__res & __mask) != 0);				\
> +})

Despite the taking from Linux I think the overall result wants to be
consistent formatting-wise: You switched to blank indentation (which
is fine), but you left tabs as padding for the line continuation
characters.

> +#define __op_bit_ord(op, mod, nr, addr, ord)			\
> +    __asm__ __volatile__ (					\
> +        __AMO(op) #ord " zero, %1, %0"			\
> +        : "+A" (addr[BIT_WORD(nr)])			\
> +        : "r" (mod(BIT_MASK(nr)))			\
> +        : "memory");
> +
> +#define __test_and_op_bit(op, mod, nr, addr) 			\

(At least) here you even use a mix.

> +    __test_and_op_bit_ord(op, mod, nr, addr, .aqrl)
> +#define __op_bit(op, mod, nr, addr)				\
> +    __op_bit_ord(op, mod, nr, addr, )
> +
> +/* Bitmask modifiers */
> +#define __NOP(x)	(x)
> +#define __NOT(x)	(~(x))
> +
> +/**
> + * __test_and_set_bit - Set a bit and return its old value
> + * @nr: Bit to set
> + * @addr: Address to count from
> + *
> + * This operation may be reordered on other architectures than x86.
> + */
> +static inline int __test_and_set_bit(int nr, volatile void *p)
> +{
> +    volatile uint32_t *addr = p;
> +
> +    return __test_and_op_bit(or, __NOP, nr, addr);
> +}
> +
> +/**
> + * __test_and_clear_bit - Clear a bit and return its old value
> + * @nr: Bit to clear
> + * @addr: Address to count from
> + *
> + * This operation can be reordered on other architectures other than x86.
> + */
> +static inline int __test_and_clear_bit(int nr, volatile void *p)
> +{
> +    volatile uint32_t *addr = p;
> +
> +    return __test_and_op_bit(and, __NOT, nr, addr);
> +}
> +
> +/**
> + * set_bit - Atomically set a bit in memory
> + * @nr: the bit to set
> + * @addr: the address to start counting from
> + *
> + * Note: there are no guarantees that this function will not be reordered
> + * on non x86 architectures, so if you are writing portable code,
> + * make sure not to rely on its reordering guarantees.
> + *
> + * Note that @nr may be almost arbitrarily large; this function is not
> + * restricted to acting on a single-word quantity.
> + */
> +static inline void set_bit(int nr, volatile void *p)
> +{
> +    volatile uint32_t *addr = p;
> +
> +    __op_bit(or, __NOP, nr, addr);
> +}
> +
> +/**
> + * clear_bit - Clears a bit in memory
> + * @nr: Bit to clear
> + * @addr: Address to start counting from
> + *
> + * Note: there are no guarantees that this function will not be reordered
> + * on non x86 architectures, so if you are writing portable code,
> + * make sure not to rely on its reordering guarantees.
> + */
> +static inline void clear_bit(int nr, volatile void *p)
> +{
> +    volatile uint32_t *addr = p;
> +
> +    __op_bit(and, __NOT, nr, addr);
> +}
> +
> +#undef __test_and_op_bit
> +#undef __op_bit
> +#undef __NOP
> +#undef __NOT
> +#undef __AMO
> +
> +#define test_and_set_bit   __test_and_set_bit
> +#define test_and_clear_bit __test_and_clear_bit

I realize test-and-change have no present users, despite being made
available by Arm and x86, but I think they would better be provided
right away, rather than someone introducing a use then needing to
fiddle with RISC-V (and apparently also PPC) code.

I'm also puzzled by this aliasing: Aren't there cheaper non-atomic
insn forms that could be used for the double-underscore-prefixed
variants?

> +/* Based on linux/include/asm-generic/bitops/find.h */
> +
> +#ifndef find_next_bit

What is this to guard against?

> +/**
> + * find_next_bit - find the next set bit in a memory region
> + * @addr: The address to base the search on
> + * @offset: The bitnumber to start searching at
> + * @size: The bitmap size in bits
> + */
> +extern unsigned long find_next_bit(const unsigned long *addr, unsigned long
> +        size, unsigned long offset);
> +#endif
> +
> +#ifndef find_next_zero_bit
> +/**
> + * find_next_zero_bit - find the next cleared bit in a memory region
> + * @addr: The address to base the search on
> + * @offset: The bitnumber to start searching at
> + * @size: The bitmap size in bits
> + */
> +extern unsigned long find_next_zero_bit(const unsigned long *addr, unsigned
> +        long size, unsigned long offset);
> +#endif
> +
> +/**
> + * find_first_bit - find the first set bit in a memory region
> + * @addr: The address to start the search at
> + * @size: The maximum size to search
> + *
> + * Returns the bit number of the first set bit.
> + */
> +extern unsigned long find_first_bit(const unsigned long *addr,
> +                    unsigned long size);
> +
> +/**
> + * find_first_zero_bit - find the first cleared bit in a memory region
> + * @addr: The address to start the search at
> + * @size: The maximum size to search
> + *
> + * Returns the bit number of the first cleared bit.
> + */
> +extern unsigned long find_first_zero_bit(const unsigned long *addr,
> +                     unsigned long size);
> +
> +/**
> + * ffs - find first bit in word.
> + * @word: The word to search
> + *
> + * Returns 0 if no bit exists, otherwise returns 1-indexed bit location.
> + */
> +static inline unsigned long __ffs(unsigned long word)
> +{
> +    int num = 0;

I understand it's this way in Linux, so there may be reasons to keep it
like that. Generally though we'd prefer unsigned here, and the type of
a variable used for the return value of a function would also better be
in sync with the function's return type (which I don't think needs to
be "unsigned long" either; "unsigned int" would apparently suffice).

> +#if BITS_PER_LONG == 64
> +    if ((word & 0xffffffff) == 0) {
> +        num += 32;
> +        word >>= 32;
> +    }

You're ending up with neither Xen nor Linux style this way. May I
suggest to settle on either?

> +#endif
> +    if ((word & 0xffff) == 0) {
> +        num += 16;
> +        word >>= 16;
> +    }
> +    if ((word & 0xff) == 0) {
> +        num += 8;
> +        word >>= 8;
> +    }
> +    if ((word & 0xf) == 0) {
> +        num += 4;
> +        word >>= 4;
> +    }
> +    if ((word & 0x3) == 0) {
> +        num += 2;
> +        word >>= 2;
> +    }
> +    if ((word & 0x1) == 0)
> +        num += 1;
> +    return num;
> +}
> +
> +/**
> + * ffsl - find first bit in long.
> + * @word: The word to search
> + *
> + * Returns 0 if no bit exists, otherwise returns 1-indexed bit location.
> + */
> +static inline unsigned int ffsl(unsigned long word)
> +{
> +    int num = 1;
> +
> +    if (!word)
> +        return 0;
> +
> +#if BITS_PER_LONG == 64
> +    if ((word & 0xffffffff) == 0) {
> +        num += 32;
> +        word >>= 32;
> +    }
> +#endif
> +    if ((word & 0xffff) == 0) {
> +        num += 16;
> +        word >>= 16;
> +    }
> +    if ((word & 0xff) == 0) {
> +        num += 8;
> +        word >>= 8;
> +    }
> +    if ((word & 0xf) == 0) {
> +        num += 4;
> +        word >>= 4;
> +    }
> +    if ((word & 0x3) == 0) {
> +        num += 2;
> +        word >>= 2;
> +    }
> +    if ((word & 0x1) == 0)
> +        num += 1;
> +    return num;
> +}

What's RISC-V-specific about the above? IOW why ...

> +#include <asm-generic/bitops/fls.h>
> +#include <asm-generic/bitops/flsl.h>
> +#include <asm-generic/bitops/ffs.h>
> +#include <asm-generic/bitops/ffz.h>

... can't those two also come from respective generic headers?

> --- /dev/null
> +++ b/xen/include/asm-generic/bitops/bitops-bits.h
> @@ -0,0 +1,10 @@
> +/* SPDX-License-Identifier: GPL-2.0 */
> +#ifndef _ASM_GENERIC_BITOPS_BITS_H_
> +#define _ASM_GENERIC_BITOPS_BITS_H_
> +
> +#define BITOP_BITS_PER_WORD     32
> +#define BITOP_MASK(nr)          (1UL << ((nr) % BITOP_BITS_PER_WORD))

Why 1UL and not just 1U, when bits per word is 32?

> +#define BITOP_WORD(nr)          ((nr) / BITOP_BITS_PER_WORD)
> +#define BITS_PER_BYTE           8
> +
> +#endif /* _ASM_GENERIC_BITOPS_BITS_H_ */
> \ No newline at end of file

Nit: I did comment on such before (and there's at least one more
further down).

> --- /dev/null
> +++ b/xen/include/asm-generic/bitops/ffs.h
> @@ -0,0 +1,9 @@
> +/* SPDX-License-Identifier: GPL-2.0 */
> +#ifndef _ASM_GENERIC_BITOPS_FFS_H_
> +#define _ASM_GENERIC_BITOPS_FFS_H_
> +
> +#include <xen/macros.h>
> +
> +#define ffs(x) ({ unsigned int t_ = (x); fls(ISOLATE_LSB(t_)); })
> +
> +#endif /* _ASM_GENERIC_BITOPS_FFS_H_ */
> diff --git a/xen/include/asm-generic/bitops/ffz.h b/xen/include/asm-generic/bitops/ffz.h
> new file mode 100644
> index 0000000000..92c35455d5
> --- /dev/null
> +++ b/xen/include/asm-generic/bitops/ffz.h
> @@ -0,0 +1,13 @@
> +/* SPDX-License-Identifier: GPL-2.0 */
> +#ifndef _ASM_GENERIC_BITOPS_FFZ_H_
> +#define _ASM_GENERIC_BITOPS_FFZ_H_
> +
> +/*
> + * ffz - find first zero in word.
> + * @word: The word to search
> + *
> + * Undefined if no zero exists, so code should check against ~0UL first.
> + */
> +#define ffz(x)  __ffs(~(x))

For a generic header I'd like to see consistency: ffz() may expand to
ffs(), and __ffz() may expand to __ffs(). A mix like you have it above
wants at least explaining in the description. (I don't understand
anyway why both ffs() and __ffs() would be needed. We don't have any
__ffs() on x86 afaics.)

> --- /dev/null
> +++ b/xen/include/asm-generic/bitops/find-first-bit-set.h

This file name, if it really needs to be this long, wants to match ...

> @@ -0,0 +1,17 @@
> +/* SPDX-License-Identifier: GPL-2.0 */
> +#ifndef _ASM_GENERIC_BITOPS_FIND_FIRST_BIT_SET_H_
> +#define _ASM_GENERIC_BITOPS_FIND_FIRST_BIT_SET_H_
> +
> +/**
> + * find_first_set_bit - find the first set bit in @word
> + * @word: the word to search
> + *
> + * Returns the bit-number of the first set bit (first bit being 0).
> + * The input must *not* be zero.
> + */
> +static inline unsigned int find_first_set_bit(unsigned long word)

... the function implemented herein.

> --- /dev/null
> +++ b/xen/include/asm-generic/bitops/fls.h
> @@ -0,0 +1,18 @@
> +/* SPDX-License-Identifier: GPL-2.0 */
> +#ifndef _ASM_GENERIC_BITOPS_FLS_H_
> +#define _ASM_GENERIC_BITOPS_FLS_H_
> +
> +/**
> + * fls - find last (most-significant) bit set
> + * @x: the word to search
> + *
> + * This is defined the same way as ffs.
> + * Note fls(0) = 0, fls(1) = 1, fls(0x80000000) = 32.
> + */
> +
> +static inline int fls(unsigned int x)
> +{
> +    return generic_fls(x);
> +}

Seing this, why would e.g. ffsl() not use generic_ffsl() then?

> --- /dev/null
> +++ b/xen/include/asm-generic/bitops/hweight.h
> @@ -0,0 +1,13 @@
> +/* SPDX-License-Identifier: GPL-2.0 */
> +#ifndef _ASM_GENERIC_BITOPS_HWEIGHT_H_
> +#define _ASM_GENERIC_BITOPS_HWEIGHT_H_
> +
> +/*
> + * hweightN - returns the hamming weight of a N-bit word
> + * @x: the word to weigh
> + *
> + * The Hamming Weight of a number is the total number of bits set in it.
> + */
> +#define hweight64(x) generic_hweight64(x)
> +
> +#endif /* _ASM_GENERIC_BITOPS_HWEIGHT_H_ */

Do we really need this? An arch not having suitable insns (RISC-V has,
iirc) can easily have this one #define (or the ip to four ones when
also covering the other widths) in its asm header.

> --- /dev/null
> +++ b/xen/include/asm-generic/bitops/test-bit.h
> @@ -0,0 +1,16 @@
> +/* SPDX-License-Identifier: GPL-2.0 */
> +#ifndef _ASM_GENERIC_BITOPS_TESTBIT_H_
> +#define _ASM_GENERIC_BITOPS_TESTBIT_H_
> +
> +/**
> + * test_bit - Determine whether a bit is set
> + * @nr: bit number to test
> + * @addr: Address to start counting from
> + */
> +static inline int test_bit(int nr, const volatile void *addr)
> +{
> +    const volatile unsigned int *p = addr;

With BITOP_BITS_PER_WORD I think you really mean uint32_t here.
Also you want to make sure asm-generic/bitops/bitops-bits.h is
really in use here, or else an arch overriding / not using that
header may end up screwed.

Jan

> +    return 1 & (p[BITOP_WORD(nr)] >> (nr & (BITOP_BITS_PER_WORD - 1)));
> +}
> +
> +#endif /* _ASM_GENERIC_BITOPS_TESTBIT_H_ */
> \ No newline at end of file



From xen-devel-bounces@lists.xenproject.org Mon Jan 15 16:45:52 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 15 Jan 2024 16:45:52 +0000
Received: from list by lists.xenproject.org with outflank-mailman.667526.1038880 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPQ5w-0007PP-B7; Mon, 15 Jan 2024 16:45:52 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 667526.1038880; Mon, 15 Jan 2024 16:45:52 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPQ5w-0007PI-6p; Mon, 15 Jan 2024 16:45:52 +0000
Received: by outflank-mailman (input) for mailman id 667526;
 Mon, 15 Jan 2024 16:45:51 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=l31x=IZ=gmail.com=jandryuk@srs-se1.protection.inumbo.net>)
 id 1rPQ5v-0007P8-6g
 for xen-devel@lists.xenproject.org; Mon, 15 Jan 2024 16:45:51 +0000
Received: from mail-wr1-x430.google.com (mail-wr1-x430.google.com
 [2a00:1450:4864:20::430])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 89fa10b9-b3c5-11ee-98f1-6d05b1d4d9a1;
 Mon, 15 Jan 2024 17:45:50 +0100 (CET)
Received: by mail-wr1-x430.google.com with SMTP id
 ffacd0b85a97d-3368b1e056eso7477199f8f.3
 for <xen-devel@lists.xenproject.org>; Mon, 15 Jan 2024 08:45:50 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 89fa10b9-b3c5-11ee-98f1-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1705337149; x=1705941949; darn=lists.xenproject.org;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:from:to:cc:subject:date
         :message-id:reply-to;
        bh=WEiX1tVp++KNJqEp36QmBHK7ZPeg84st5mWxpqSV4sg=;
        b=I1USLeghdMVyATYbGPiHXkWwlfISP1t7+8LeRw4wgcz5Gvu9Le+24bEobwT1xcWkCP
         qHAoiBWVQkSEwnrAkxMTjlf7gcyGGFBX+RoNmwoQrbma+zXfKZ4s1lZJ5hofRzD2VNbI
         ymShCf6hcYVnvJW67KG7LT6XjJNUWtl4S7hZkXyMgv4W6B9qP8REcyfYKJ7QyrhA0pES
         SPRcWtKN6YIv87Zg+i6XKR2eCsnwtnJrUVWXIgnuzfU7kV1rZSGZDLgPsX6JbQMvh5iK
         j5x/XCWwcDly7xv9QOxtFSlzFxPeIF5rMoIO2TexpbUi7m431kCbnEPsHeJUDZ17Dyq6
         +LAg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705337149; x=1705941949;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to;
        bh=WEiX1tVp++KNJqEp36QmBHK7ZPeg84st5mWxpqSV4sg=;
        b=s6+QzO3FsSc/OBZJaQC+rqentXVuyfeNgXcyWp8ObTEltm8DtKl9h5XLnR8xj8cFtm
         89aVT7Z7nCHpYZ6zsOxfE/6z5TKvP+j3mFfNguawf0+IMCQ9EevG3hU9GHrFmQGS2KeP
         9asXnDTQbqna+zZxes3+KVJIwLzS05aB/4GvaY0wehN+ejbTnqGKB9OjGGcZpe3739D8
         V6CIheDao3h0+orcLRuPxG1hi1bH2ALV5hU5BbC8nYDVsGaDxacWeukVF6cHJNGtWtQM
         Jx/Kjc+aT8Y6u6iH+HtQ3/LtW0vbOpvHyfXbuUq6z50oqRGTtFC8S+fEH+CJMwjlpNi0
         mpDg==
X-Gm-Message-State: AOJu0YxWYAa08G5tRmIJfzRg69i6311zYop/WgBM/6FzngMh4db3Vgf3
	5MVdMldd7xMUwG6Ug7E3aw+AhmmpGgOODA7oeRFhrvlTKKg=
X-Google-Smtp-Source: AGHT+IHrCYAaH7Kp7EBwec5XDnXB/o/MuuhHWEz8eU5rJCPWEMxuQjMkbpYBesozdmYWHXp5L/vkLeP6K4v3AOTIPrM=
X-Received: by 2002:a7b:c3d3:0:b0:40e:3b1c:d3a2 with SMTP id
 t19-20020a7bc3d3000000b0040e3b1cd3a2mr3119562wmj.126.1705337149393; Mon, 15
 Jan 2024 08:45:49 -0800 (PST)
MIME-Version: 1.0
References: <e2e66d36-5545-40e4-847d-be3b3a523944@suse.com>
In-Reply-To: <e2e66d36-5545-40e4-847d-be3b3a523944@suse.com>
From: Jason Andryuk <jandryuk@gmail.com>
Date: Mon, 15 Jan 2024 11:45:37 -0500
Message-ID: <CAKf6xpsdtUZ8ugO3rtdU1ZMSR=UzhxpGhe4XSef9odnVhofz0w@mail.gmail.com>
Subject: Re: HWP vs "xenpm get-cpufreq-..."
To: Jan Beulich <jbeulich@suse.com>
Cc: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

Hi Jan,

On Mon, Jan 15, 2024 at 11:04=E2=80=AFAM Jan Beulich <jbeulich@suse.com> wr=
ote:
>
> Jason,
>
> I thought I'd try hwp on a SapphireRapids system, and of course - short
> of easy other ways of seeing whether it actually has any apparent
> effect - I've looked at "xenpm get-cpufreq-states" output. Just to find
> that according to this, the system never enters any of the designated
> Pn states (all CPUs are always claimed to be in P0), while at the same
> time the P0 residencies remain in the hundreds of milliseconds. The
> latter suggests CPUs do leave P0, yet it's then unclear what state they
> are in during such time periods.

The `xenpm get-cpufreq-states` output may be stale under HWP.  If
normally the acpi-cpufreq driver is updating them, they won't be
updated under HWP.  I'll have to look into that more, but I guess they
shouldn't be returned under HWP.

> I was also a little puzzled when comparing "xenpm get-cpufreq-para"
> output with hwp against that with acpi-cpufreq: The latter lists a range
> of 800MHz ... 2501MHz, while with hwp base is 2500MHz and max is 4800MHz.
>
> Do you have any explanation for these apparent anomalies?

The 1 in 2501 indicates the ACPI entry for the turbo frequencies.
It's a limitation of the ACPI tables, AFAIU.  The tables weren't
designed for turbo mode where the thermal constraints dynamically
limit the maximum speed.  On systems I've looked at, there would also
be a 2500MHz ACPI entry, which matches the HWP base.

The HWP 2500MHz & 4800MHz values are taken from cpuid output - I feel
confident they are correct.  The output of `xenpm get-cpufreq-average`
under HWP looks reasonable for scaling all the way up to 4800MHz
(which can only be hit briefly before throttling down) - I think I've
only seen ~4700MHz as a maximum in my use, and they it may drop to
~4200MHz for extended preiods.  Maybe try that command on your test
system?

I introduced struct cpufreq_cpuinfo .perf_freq to correct the reported
cpu frequency under HWP.  I wonder if that should also be used for
ACPI to get correct aperf/mperf output under acpi-cpufreq.  There have
been a fair number of reports from users being confused by the
reported cpu frequency.  The presence of 2501 is similarly confusing
to users since that is a made up value and doesn't match the CPU
specs.

Regards,
Jason


From xen-devel-bounces@lists.xenproject.org Mon Jan 15 16:50:36 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 15 Jan 2024 16:50:36 +0000
Received: from list by lists.xenproject.org with outflank-mailman.667532.1038889 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPQAR-0001Uu-RK; Mon, 15 Jan 2024 16:50:31 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 667532.1038889; Mon, 15 Jan 2024 16:50:31 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPQAR-0001Un-Og; Mon, 15 Jan 2024 16:50:31 +0000
Received: by outflank-mailman (input) for mailman id 667532;
 Mon, 15 Jan 2024 16:50:30 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=jLm1=IZ=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rPQAQ-0001Uh-RB
 for xen-devel@lists.xenproject.org; Mon, 15 Jan 2024 16:50:30 +0000
Received: from mail-lj1-x22f.google.com (mail-lj1-x22f.google.com
 [2a00:1450:4864:20::22f])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 309d442c-b3c6-11ee-98f1-6d05b1d4d9a1;
 Mon, 15 Jan 2024 17:50:29 +0100 (CET)
Received: by mail-lj1-x22f.google.com with SMTP id
 38308e7fff4ca-2cca8eb0509so109840981fa.3
 for <xen-devel@lists.xenproject.org>; Mon, 15 Jan 2024 08:50:29 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 o15-20020a92c04f000000b0035ff59f9ffcsm2967233ilf.62.2024.01.15.08.50.28
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 15 Jan 2024 08:50:28 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 309d442c-b3c6-11ee-98f1-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1705337429; x=1705942229; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=gGx3HHEx1eMnvP9RBHECTf+SVCi4B1rDNyRaJ7O+qMk=;
        b=CVays0LEzBn1wk8I/yUf8nz53885EiM9ZBIg6ZmndHFvvNOspL/PM6mBQUWbHgzuIb
         T+QdmvIKhYuSOCGhW2xPeRDJ5ulTM3hL+3tHJXQz2/Ub2JReuApil7nfh0LFuDI5Hpat
         ZlwtEkrFTxgVJZfMHQS+MZCe6EJg1eBkC3MG5bTpMu5h5iEXtEE96bET7YDZxdZBuP/6
         DmtCMBvFeW85XvSH+lW/GaQJQ3f8EyLRNwNtm0UBKhUKBzbkiPRIqEMxHMhCodXu0MwF
         8Id0/JSb1oH/2Ucw0v8eIVQXYfr5N6mKYkWzpLqqMxiw/WFe4xR76Ty7XB27hMTEoSmK
         l1pA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705337429; x=1705942229;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=gGx3HHEx1eMnvP9RBHECTf+SVCi4B1rDNyRaJ7O+qMk=;
        b=DAh8FsgUaoadd55Xjd45mdTIIf+An9SdxuOf46qSLFTI/+I5MOWoJnhjaNirN0P8fG
         vxxSrHilSfDXinP/mQZPHmmAQq/0XhwL8RlKM52FzyzZ+2JMCkT5O7sdSWclrJVEmUcq
         7BfQr78fw1k2K1zgvQuAJMDKsAj46d8es8Re28KSMbit4aSbBex5PU8QeGQ/YIYUX98e
         aTyJGJ0KfhIwi5zIInQ8pLd5qOFUGTPzvMMukRHtW9bHuy0AMV5PUC2Fv6Xy19RFjJHT
         cxnSG6XWAF75Agb/fJCBAW4LjVWfp3JlBo7bXeFuLE9Lms96tukjX8SnAzCX7WcxDwbQ
         g7Yw==
X-Gm-Message-State: AOJu0Yy1z7+4bsE06Ew+Be+RRQsFtMiVKcl3ZTvxT9nyLRQQAUlFAAi6
	1RZSD4goq17KTfDZPda0niBmSbeXLeZz
X-Google-Smtp-Source: AGHT+IFyGtT4/a8f7OfZqPF0OfhHdWPEf3deP0sOguX4asQ4lZdqizAHERimxt+7ss2sNy/+8Qqkug==
X-Received: by 2002:a2e:968a:0:b0:2cc:fe00:c6ee with SMTP id q10-20020a2e968a000000b002ccfe00c6eemr2528890lji.95.1705337429071;
        Mon, 15 Jan 2024 08:50:29 -0800 (PST)
Message-ID: <39a0477d-a4ad-40e7-8a16-0b2d514e8097@suse.com>
Date: Mon, 15 Jan 2024 17:50:26 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: HWP vs "xenpm get-cpufreq-..."
Content-Language: en-US
To: Jason Andryuk <jandryuk@gmail.com>
Cc: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
References: <e2e66d36-5545-40e4-847d-be3b3a523944@suse.com>
 <CAKf6xpsdtUZ8ugO3rtdU1ZMSR=UzhxpGhe4XSef9odnVhofz0w@mail.gmail.com>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <CAKf6xpsdtUZ8ugO3rtdU1ZMSR=UzhxpGhe4XSef9odnVhofz0w@mail.gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 15.01.2024 17:45, Jason Andryuk wrote:
> On Mon, Jan 15, 2024 at 11:04 AM Jan Beulich <jbeulich@suse.com> wrote:
>> I thought I'd try hwp on a SapphireRapids system, and of course - short
>> of easy other ways of seeing whether it actually has any apparent
>> effect - I've looked at "xenpm get-cpufreq-states" output. Just to find
>> that according to this, the system never enters any of the designated
>> Pn states (all CPUs are always claimed to be in P0), while at the same
>> time the P0 residencies remain in the hundreds of milliseconds. The
>> latter suggests CPUs do leave P0, yet it's then unclear what state they
>> are in during such time periods.
> 
> The `xenpm get-cpufreq-states` output may be stale under HWP.  If
> normally the acpi-cpufreq driver is updating them, they won't be
> updated under HWP.  I'll have to look into that more, but I guess they
> shouldn't be returned under HWP.

Likely - anything that conveys no real information (and hence is at
best confusing) would better be avoided.

>> I was also a little puzzled when comparing "xenpm get-cpufreq-para"
>> output with hwp against that with acpi-cpufreq: The latter lists a range
>> of 800MHz ... 2501MHz, while with hwp base is 2500MHz and max is 4800MHz.
>>
>> Do you have any explanation for these apparent anomalies?
> 
> The 1 in 2501 indicates the ACPI entry for the turbo frequencies.
> It's a limitation of the ACPI tables, AFAIU.  The tables weren't
> designed for turbo mode where the thermal constraints dynamically
> limit the maximum speed.  On systems I've looked at, there would also
> be a 2500MHz ACPI entry, which matches the HWP base.
> 
> The HWP 2500MHz & 4800MHz values are taken from cpuid output - I feel
> confident they are correct.  The output of `xenpm get-cpufreq-average`
> under HWP looks reasonable for scaling all the way up to 4800MHz
> (which can only be hit briefly before throttling down) - I think I've
> only seen ~4700MHz as a maximum in my use, and they it may drop to
> ~4200MHz for extended preiods.  Maybe try that command on your test
> system?

I'll try to remember to check that next time round.

Jan


From xen-devel-bounces@lists.xenproject.org Mon Jan 15 16:57:51 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 15 Jan 2024 16:57:51 +0000
Received: from list by lists.xenproject.org with outflank-mailman.667536.1038900 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPQHS-0003IM-IH; Mon, 15 Jan 2024 16:57:46 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 667536.1038900; Mon, 15 Jan 2024 16:57:46 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPQHS-0003IF-Ew; Mon, 15 Jan 2024 16:57:46 +0000
Received: by outflank-mailman (input) for mailman id 667536;
 Mon, 15 Jan 2024 16:57:44 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=jLm1=IZ=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rPQHQ-0003I6-R2
 for xen-devel@lists.xenproject.org; Mon, 15 Jan 2024 16:57:44 +0000
Received: from mail-wr1-x430.google.com (mail-wr1-x430.google.com
 [2a00:1450:4864:20::430])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 3280d25a-b3c7-11ee-9b0f-b553b5be7939;
 Mon, 15 Jan 2024 17:57:42 +0100 (CET)
Received: by mail-wr1-x430.google.com with SMTP id
 ffacd0b85a97d-3377d45c178so4046482f8f.2
 for <xen-devel@lists.xenproject.org>; Mon, 15 Jan 2024 08:57:42 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 h10-20020adf9cca000000b00337afd67f40sm743410wre.1.2024.01.15.08.57.41
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 15 Jan 2024 08:57:41 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 3280d25a-b3c7-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1705337862; x=1705942662; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=r4fSiXYYvn6DzFWiSOodaMBkMpNATUVGIXjGxzfXFrc=;
        b=QOueYT0b1VKE13Wbq6alP0OVxcaTht0pHNO/g0AkA2lkspCkbaPbe6BKqSHQ2Tf60U
         QNZm8znuqFRDpNM1TPkPal6TUed6P68X3VR+4FbRF5KMC/Trjhag4xRtozktr1vcTDAs
         LNR1KmbbNpOydWNrKYOnDkv6hhcXg0/mxW0i6itGieQsBfc5r3bGhHJo58XF+7J9ATFs
         1RZJe6uy29X3JN+0YFHPvsoxQe34epv6OEfpc3DRz+K6/Bj3fsFLsuKBUXzRCWwTgXlz
         DB3DQ13gMK33u4BBRxmxmFYZXYQrtCND3NJmmXrVNhzJ/ptH3DivvmuRKmx9eDB23QUi
         ZuFw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705337862; x=1705942662;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=r4fSiXYYvn6DzFWiSOodaMBkMpNATUVGIXjGxzfXFrc=;
        b=vKLPaXbgvXvmDap6uoU48djwDxxUl8IEy1/cuNbz+mEMAvgNrmROYATzgsPjqiID6+
         NUYm5HS6zy3SPm4XOQ5hCmFqfcrWKvZMYq0M8WNzp7VhH0ez/vnKhQyqKp4rPlgW2D/R
         Q1OkQGoABL+DJwPcm+/2qwEd55FxXwFtcXEsBK7gE2f/+8GCgseB5Aq/BvMnbz0ngBHC
         QsFiOkvjwJGah0SvJRj3ds+1DhKTiakp9IqQNq9HJSa2NkOo4dKql0BtGAHjnzSj3vUn
         Z0mudNstl7Oy5jGtttoxfL+u2N3x0Dm5E8ZEOX7vrowUh6rQZVE+vlhHZ9O/beJv2j0N
         h0oA==
X-Gm-Message-State: AOJu0YxevTWyzynLsJgU4LFpATDmapg3oQRn/aE3M5WFK8cQkoPIWKDG
	CGll90QBKPeLfZRGt/UaYPIPm1zYSnV1
X-Google-Smtp-Source: AGHT+IFNaOJXeqV4T+X3U07/HWezPTcGbhnyC0fHA7va+N46JC4ZHCkFl9BkPb8vXznL38FZatxONg==
X-Received: by 2002:a05:6000:1089:b0:337:2994:15b7 with SMTP id y9-20020a056000108900b00337299415b7mr3227181wrw.125.1705337861716;
        Mon, 15 Jan 2024 08:57:41 -0800 (PST)
Message-ID: <895a60ba-547c-4064-9e4b-4ebf07dea5fb@suse.com>
Date: Mon, 15 Jan 2024 17:57:40 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 14/34] xen/riscv: introduce io.h
Content-Language: en-US
To: Oleksii Kurochko <oleksii.kurochko@gmail.com>
Cc: Alistair Francis <alistair.francis@wdc.com>,
 Bob Eshleman <bobbyeshleman@gmail.com>, Connor Davis
 <connojdavis@gmail.com>, Andrew Cooper <andrew.cooper3@citrix.com>,
 George Dunlap <george.dunlap@citrix.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>,
 xen-devel@lists.xenproject.org
References: <cover.1703255175.git.oleksii.kurochko@gmail.com>
 <5d2c032481792a3fe5bd5f1cae42d95f6e9b54b1.1703255175.git.oleksii.kurochko@gmail.com>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <5d2c032481792a3fe5bd5f1cae42d95f6e9b54b1.1703255175.git.oleksii.kurochko@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 22.12.2023 16:12, Oleksii Kurochko wrote:
> --- /dev/null
> +++ b/xen/arch/riscv/include/asm/io.h
> @@ -0,0 +1,142 @@
> +/* SPDX-License-Identifier: GPL-2.0-only */
> +/*
> + * {read,write}{b,w,l,q} based on arch/arm64/include/asm/io.h
> + *   which was based on arch/arm/include/io.h
> + *
> + * Copyright (C) 1996-2000 Russell King
> + * Copyright (C) 2012 ARM Ltd.
> + * Copyright (C) 2014 Regents of the University of California
> + */
> +
> +
> +#ifndef _ASM_RISCV_IO_H
> +#define _ASM_RISCV_IO_H
> +
> +#include <asm/byteorder.h>
> +
> +/*
> + * The RISC-V ISA doesn't yet specify how to query or modify PMAs, so we can't
> + * change the properties of memory regions.  This should be fixed by the
> + * upcoming platform spec.
> + */
> +#define ioremap_nocache(addr, size) ioremap((addr), (size))
> +#define ioremap_wc(addr, size) ioremap((addr), (size))
> +#define ioremap_wt(addr, size) ioremap((addr), (size))

Nit: No need for the inner parentheses.

> +/* Generic IO read/write.  These perform native-endian accesses. */
> +#define __raw_writeb __raw_writeb
> +static inline void __raw_writeb(u8 val, volatile void __iomem *addr)
> +{
> +	asm volatile("sb %0, 0(%1)" : : "r" (val), "r" (addr));
> +}
> +
> +#define __raw_writew __raw_writew
> +static inline void __raw_writew(u16 val, volatile void __iomem *addr)
> +{
> +	asm volatile("sh %0, 0(%1)" : : "r" (val), "r" (addr));
> +}
> +
> +#define __raw_writel __raw_writel
> +static inline void __raw_writel(u32 val, volatile void __iomem *addr)
> +{
> +	asm volatile("sw %0, 0(%1)" : : "r" (val), "r" (addr));
> +}
> +
> +#ifdef CONFIG_64BIT
> +#define __raw_writeq __raw_writeq
> +static inline void __raw_writeq(u64 val, volatile void __iomem *addr)
> +{
> +	asm volatile("sd %0, 0(%1)" : : "r" (val), "r" (addr));
> +}
> +#endif
> +
> +#define __raw_readb __raw_readb
> +static inline u8 __raw_readb(const volatile void __iomem *addr)
> +{
> +	u8 val;
> +
> +	asm volatile("lb %0, 0(%1)" : "=r" (val) : "r" (addr));
> +	return val;
> +}
> +
> +#define __raw_readw __raw_readw
> +static inline u16 __raw_readw(const volatile void __iomem *addr)
> +{
> +	u16 val;
> +
> +	asm volatile("lh %0, 0(%1)" : "=r" (val) : "r" (addr));
> +	return val;
> +}
> +
> +#define __raw_readl __raw_readl
> +static inline u32 __raw_readl(const volatile void __iomem *addr)
> +{
> +	u32 val;
> +
> +	asm volatile("lw %0, 0(%1)" : "=r" (val) : "r" (addr));
> +	return val;
> +}
> +
> +#ifdef CONFIG_64BIT
> +#define __raw_readq __raw_readq
> +static inline u64 __raw_readq(const volatile void __iomem *addr)
> +{
> +	u64 val;
> +
> +	asm volatile("ld %0, 0(%1)" : "=r" (val) : "r" (addr));
> +	return val;
> +}
> +#endif
> +
> +/*
> + * Unordered I/O memory access primitives.  These are even more relaxed than
> + * the relaxed versions, as they don't even order accesses between successive
> + * operations to the I/O regions.
> + */
> +#define readb_cpu(c)		({ u8  __r = __raw_readb(c); __r; })
> +#define readw_cpu(c)		({ u16 __r = le16_to_cpu((__force __le16)__raw_readw(c)); __r; })
> +#define readl_cpu(c)		({ u32 __r = le32_to_cpu((__force __le32)__raw_readl(c)); __r; })
> +
> +#define writeb_cpu(v,c)		((void)__raw_writeb((v),(c)))
> +#define writew_cpu(v,c)		((void)__raw_writew((__force u16)cpu_to_le16(v),(c)))
> +#define writel_cpu(v,c)		((void)__raw_writel((__force u32)cpu_to_le32(v),(c)))
> +
> +#ifdef CONFIG_64BIT
> +#define readq_cpu(c)		({ u64 __r = le64_to_cpu((__force __le64)__raw_readq(c)); __r; })
> +#define writeq_cpu(v,c)		((void)__raw_writeq((__force u64)cpu_to_le64(v),(c)))
> +#endif

How come there are endianness assumptions here on the MMIO accessed?

As a file-wide remark: While I don't mind you using u<N> here for now,
presumably to stay close to Linux, eventually - as we make progress with
the conversion to uint<N>_t - this will need to diverge anyway.

> +/*
> + * I/O memory access primitives. Reads are ordered relative to any
> + * following Normal memory access. Writes are ordered relative to any prior
> + * Normal memory access.  The memory barriers here are necessary as RISC-V
> + * doesn't define any ordering between the memory space and the I/O space.
> + */
> +#define __io_br()	do {} while (0)

Nit: Why are this and ...

> +#define __io_ar(v)	__asm__ __volatile__ ("fence i,r" : : : "memory");
> +#define __io_bw()	__asm__ __volatile__ ("fence w,o" : : : "memory");
> +#define __io_aw()	do { } while (0)

... this not expanding exactly the same?

Jan


From xen-devel-bounces@lists.xenproject.org Mon Jan 15 17:00:20 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 15 Jan 2024 17:00:20 +0000
Received: from list by lists.xenproject.org with outflank-mailman.667539.1038910 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPQJt-0005Gq-TR; Mon, 15 Jan 2024 17:00:17 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 667539.1038910; Mon, 15 Jan 2024 17:00:17 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPQJt-0005Gj-Ph; Mon, 15 Jan 2024 17:00:17 +0000
Received: by outflank-mailman (input) for mailman id 667539;
 Mon, 15 Jan 2024 17:00:16 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=jLm1=IZ=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rPQJs-0005Ga-2u
 for xen-devel@lists.xenproject.org; Mon, 15 Jan 2024 17:00:16 +0000
Received: from mail-wm1-x32a.google.com (mail-wm1-x32a.google.com
 [2a00:1450:4864:20::32a])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 8ce222e5-b3c7-11ee-9b0f-b553b5be7939;
 Mon, 15 Jan 2024 18:00:14 +0100 (CET)
Received: by mail-wm1-x32a.google.com with SMTP id
 5b1f17b1804b1-40e760e5b49so13705495e9.1
 for <xen-devel@lists.xenproject.org>; Mon, 15 Jan 2024 09:00:14 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 az6-20020a05600c600600b0040e81b4c44esm564909wmb.30.2024.01.15.09.00.12
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 15 Jan 2024 09:00:13 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 8ce222e5-b3c7-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1705338013; x=1705942813; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=pjeflTYnTDDc2QUmJAMFZi7rtAys+yOVHuosvqfUx64=;
        b=YcGIT4BtMayRhLKrnoWXbewzIYGYc1jYoP6EuIb1dCCr87QBOx2geMZyPIwNIK7OQm
         QYF7ItIrr/h9mPUJ1MbmeD8lB2WpKChLg6Ki2RMf/1EO/1sE0ds5l6xvA8B2DkCjxTRJ
         GyZttFHQobZXutPFeYaREL378XiWljxe7mr3i+nU+i6RO8hA5C6DOoeMtMmM2MP42NuE
         spCCj2MftX+9To4fzi70lxDO57L1dvITaVB20Md9mA5Fpz6kdKNGP1wpF1C3vwhefgxk
         gIl7e5VvoAZYYcByXn4d+aXZxwjTwhjGD1Vi3ZqE+Tau0a7lRzYO53Kt7dh43HEQBBOx
         bf2w==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705338013; x=1705942813;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=pjeflTYnTDDc2QUmJAMFZi7rtAys+yOVHuosvqfUx64=;
        b=wsInzb9xi4/H8wLaDQL+YnV38vPxPpPQ6FKDian2tuDkWWTF+up22HLCqxkVuL2f43
         IhO/j3+G/kVQDe1SwqQZdeFsvAz7cBAksrgSln06BxEA+R06U0ebeEnRR+vVZX1TCTxW
         LXu/IKjhMIp6ZXaNaOrSpxydt4fxWK6KfLjGe+h3S4cVJXszAX3JOtHqNYtzvAusDqwC
         y2Y3rSOIbDMZYMZwHOrwkxpNDWSkEKNI2GzZapCmWHHD8lk0AcyBlpHcQB8Ksl03NKPC
         vQZAZ1nF1ReRow4oI6rhpQ4qx0FRmriSxsskEZ6ePhT+3m8E67E3TZnK8yK7o4aNdHcQ
         F3Cg==
X-Gm-Message-State: AOJu0YyaBdbwladU6hrwDPpmHCUlwPMyXvFcNrqSY9A99zxBe+FiMhy5
	/AdYLsWj95Jj5KcAv91XZRNqdYGE6Z6f
X-Google-Smtp-Source: AGHT+IHufjA08DekHuucigPodh+3Too2YLbf+D1br61s72imH+632gECVy6U1R9mk3g3EITjtQyOuA==
X-Received: by 2002:a05:600c:1989:b0:40e:722b:3d1c with SMTP id t9-20020a05600c198900b0040e722b3d1cmr941354wmq.81.1705338013268;
        Mon, 15 Jan 2024 09:00:13 -0800 (PST)
Message-ID: <0d3cf7ef-a601-42c0-a6ed-61ab421f6c69@suse.com>
Date: Mon, 15 Jan 2024 18:00:12 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 22/34] xen/riscv: introduce regs.h
Content-Language: en-US
To: Oleksii Kurochko <oleksii.kurochko@gmail.com>
Cc: Alistair Francis <alistair.francis@wdc.com>,
 Bob Eshleman <bobbyeshleman@gmail.com>, Connor Davis
 <connojdavis@gmail.com>, Andrew Cooper <andrew.cooper3@citrix.com>,
 George Dunlap <george.dunlap@citrix.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>,
 xen-devel@lists.xenproject.org
References: <cover.1703255175.git.oleksii.kurochko@gmail.com>
 <3d1ae540120804af5fc812a1492931afac66bd39.1703255175.git.oleksii.kurochko@gmail.com>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <3d1ae540120804af5fc812a1492931afac66bd39.1703255175.git.oleksii.kurochko@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 22.12.2023 16:13, Oleksii Kurochko wrote:
> Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>
> ---
> Changes in V3:
>  - update the commit message
>  - add Acked-by: Jan Beulich <jbeulich@suse.com>

I see none above the --- marker.

Jan


From xen-devel-bounces@lists.xenproject.org Mon Jan 15 18:51:42 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 15 Jan 2024 18:51:42 +0000
Received: from list by lists.xenproject.org with outflank-mailman.667548.1038920 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPS3U-0006Vp-Sc; Mon, 15 Jan 2024 18:51:28 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 667548.1038920; Mon, 15 Jan 2024 18:51:28 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPS3U-0006Vi-Pq; Mon, 15 Jan 2024 18:51:28 +0000
Received: by outflank-mailman (input) for mailman id 667548;
 Mon, 15 Jan 2024 18:51:27 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>) id 1rPS3T-0006Vc-St
 for xen-devel@lists.xenproject.org; Mon, 15 Jan 2024 18:51:27 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rPS3T-0001iy-ET; Mon, 15 Jan 2024 18:51:27 +0000
Received: from gw1.octic.net ([88.97.20.152] helo=[10.0.1.240])
 by xenbits.xenproject.org with esmtpsa
 (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rPS3T-0008Rj-98; Mon, 15 Jan 2024 18:51:27 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
	s=20200302mail; h=Content-Transfer-Encoding:Content-Type:In-Reply-To:From:
	References:Cc:To:Subject:MIME-Version:Date:Message-ID;
	bh=RhvMhAZQ58TeT9cB54zWCxVx3eCTFyFoaQp4xr4dzqo=; b=y4ip/buhoZOADk9G9w45BgTVnE
	IoDZzjRpqWaiWAf9venT0lzZc52OMjIBIK5wxwFe2x5D60v8tg8lkRrYdn08YVSEs9d1piSVQOr3s
	TpZ7b23hHBTveGENMWGqabqiAoJeMz6GFlle3RMju5AaUjpn+mQ7dk4Q39m7STkaoEK8=;
Message-ID: <204abd64-7d16-43f8-acb2-55e84a37a510@xen.org>
Date: Mon, 15 Jan 2024 18:51:25 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 1/2] xen/arm32: head: Move earlyprintk 'hex' to
 .rodata.idmap
Content-Language: en-GB
To: Michal Orzel <michal.orzel@amd.com>, xen-devel@lists.xenproject.org
Cc: Stefano Stabellini <sstabellini@kernel.org>,
 Bertrand Marquis <bertrand.marquis@arm.com>,
 Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>
References: <20240115124859.89218-1-michal.orzel@amd.com>
 <20240115124859.89218-2-michal.orzel@amd.com>
From: Julien Grall <julien@xen.org>
In-Reply-To: <20240115124859.89218-2-michal.orzel@amd.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

Hi Michal,

On 15/01/2024 12:48, Michal Orzel wrote:
> Thanks to 1ec3fe1f664f ("xen/arm32: head: Improve logging in head.S"),
> we can now use PRINT_ID() macro to print messages when running on
> identity mapping. For that, all the strings need to be part of the first
> page that is mapped. This is not the case for a 'hex' string (used by
> asm_putn when printing register values), which currently resides in
> .rodata.str. Move it to .rodata.idmap to allow making use of print_reg
> macro from anywhere (mostly to aid debugging).
> 
> Signed-off-by: Michal Orzel <michal.orzel@amd.com>

Acked-by: Julien Grall <jgrall@amazon.com>

Cheers,

-- 
Julien Grall


From xen-devel-bounces@lists.xenproject.org Mon Jan 15 19:03:43 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 15 Jan 2024 19:03:43 +0000
Received: from list by lists.xenproject.org with outflank-mailman.667552.1038930 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPSFH-0000K7-05; Mon, 15 Jan 2024 19:03:39 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 667552.1038930; Mon, 15 Jan 2024 19:03:38 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPSFG-0000K0-SX; Mon, 15 Jan 2024 19:03:38 +0000
Received: by outflank-mailman (input) for mailman id 667552;
 Mon, 15 Jan 2024 19:03:37 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=ghqi=IZ=amd.com=Stewart.Hildebrand@srs-se1.protection.inumbo.net>)
 id 1rPSFE-0000Ju-T3
 for xen-devel@lists.xenproject.org; Mon, 15 Jan 2024 19:03:37 +0000
Received: from NAM10-MW2-obe.outbound.protection.outlook.com
 (mail-mw2nam10on20601.outbound.protection.outlook.com
 [2a01:111:f403:2412::601])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id c7a46f25-b3d8-11ee-9b0f-b553b5be7939;
 Mon, 15 Jan 2024 20:03:34 +0100 (CET)
Received: from BY5PR17CA0051.namprd17.prod.outlook.com (2603:10b6:a03:167::28)
 by IA1PR12MB8240.namprd12.prod.outlook.com (2603:10b6:208:3f2::14)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7181.21; Mon, 15 Jan
 2024 19:03:29 +0000
Received: from DS2PEPF0000343B.namprd02.prod.outlook.com
 (2603:10b6:a03:167:cafe::82) by BY5PR17CA0051.outlook.office365.com
 (2603:10b6:a03:167::28) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7181.23 via Frontend
 Transport; Mon, 15 Jan 2024 19:03:28 +0000
Received: from SATLEXMB03.amd.com (165.204.84.17) by
 DS2PEPF0000343B.mail.protection.outlook.com (10.167.18.38) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.7202.16 via Frontend Transport; Mon, 15 Jan 2024 19:03:28 +0000
Received: from SATLEXMB04.amd.com (10.181.40.145) by SATLEXMB03.amd.com
 (10.181.40.144) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.34; Mon, 15 Jan
 2024 13:03:27 -0600
Received: from [172.23.114.18] (10.180.168.240) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server id 15.1.2507.34 via Frontend
 Transport; Mon, 15 Jan 2024 13:03:26 -0600
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: c7a46f25-b3d8-11ee-9b0f-b553b5be7939
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=CoW7iQz50aF9HRTfYwANYoPTFuJhchdv8GzXL3Kx33aXMvL3dqsOD+3QfpLsUdwXrE9Om5jwj/9wg/DobvaosvE7jkInPCEW7z0zgft4XzKaH5ztMPfAExL9cGR7hI8XswB7C19T1C1s9d6KwIAtaSgjlriNh2qeD8GYp1VDxsETmjXt5jVom6yEJCUS7eo5oQMC1weR5a1VdJ/3OPMAaWDaIgjkWMtHVYb9aaNJN6NeRw7I7Eswcxsm8flCweGRXA3aMqwZxezWoPE0UjWJfjy5cHxXWoVjp2ueHdlcEaJEU9Tq2ThV650GUcA7oPUIbK4JDkN3hTYVV1wIo1f4BA==
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=9VV713wtEQl2T2nzjh+f3k8gUYFwCuB+tqUdroNeowc=;
 b=fscSGl4jet4YajLnjdX57pQxfMNTgjSWrY7t+JCoMq6aYPmX8IbF5bOIeOit6f6/uyjIQ7M5NoR5CdT3q9FNjIhYUVlctCUpihIEqd5AXwQVMHm7J50ZD9pLTz9OBQ/VFsqO/PX1fAElwigzDrTonvKNfX4EsFpxvzvrsHxJW1pRdS19kp96GxBtOn+G2vxnY4YKM1kZJOYjZ4go/Ku1FkBr+X3cxooDumaRXCWBD8Ou1Ybz8C3Fi2PyaVjvc4mhsDgcxn+WW9fR2TzqiumxRyt1ctan1LYKnNI/K0aFZzDMVlZvjoayThbcpwQf8jzeznauYURwDBIywmSXM7pZUw==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=suse.com 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)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=9VV713wtEQl2T2nzjh+f3k8gUYFwCuB+tqUdroNeowc=;
 b=ehhjVZsP8bmdictYtrhcS9WOKvKOLYWADwbfW8t0oDB0AL69veRUnbDYxKIzIjSoDKiHkxwNmdiEI9T4r7NRR3LhSUBQoDn9WxwU7iefPSKlzZ7LgXmIrkX92ccplsdupEE3E6gEORHc/dJwqZEyNr0sGmBWF+e87mw+Q1uk3yE=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=SATLEXMB03.amd.com; pr=C
Message-ID: <649ac8c8-6554-466a-a4fd-4ffd612d0756@amd.com>
Date: Mon, 15 Jan 2024 14:03:26 -0500
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v12 09/15] vpci/header: program p2m with guest BAR view
Content-Language: en-US
To: Jan Beulich <jbeulich@suse.com>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
	<roger.pau@citrix.com>
CC: <xen-devel@lists.xenproject.org>, Oleksandr Andrushchenko
	<oleksandr_andrushchenko@epam.com>, "Daniel P. Smith"
	<dpsmith@apertussolutions.com>, Volodymyr Babchuk
	<volodymyr_babchuk@epam.com>
References: <20240109215145.430207-1-stewart.hildebrand@amd.com>
 <20240109215145.430207-10-stewart.hildebrand@amd.com>
 <ZaFVhaVvpDljEgdM@macbook> <2e2bc9b7-f0c0-4924-89f6-8717e10266de@suse.com>
From: Stewart Hildebrand <stewart.hildebrand@amd.com>
In-Reply-To: <2e2bc9b7-f0c0-4924-89f6-8717e10266de@suse.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: DS2PEPF0000343B:EE_|IA1PR12MB8240:EE_
X-MS-Office365-Filtering-Correlation-Id: 068a1271-af83-4b83-2555-08dc15fca8a9
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam: BCL:0;
X-Microsoft-Antispam-Message-Info:
	i8umBLD50AxJ8NOc/PaQ8SOHxhyvJP0i4dUE1xVYLZkhySz2LmquB1GrnzWueYg0wn0HGncljX0Ze0ZnU3XeanNDGO+l8lcnGk4B94kcZ67Z55+U3NckMDEAkl36qvAVVHd2m33zQmx4+EIk5y9t9ed6siprnGkHtkrvO9Ns35CB/WaBYTZJnLw7McXJe3cHWh1IRNvgIjn+0N6iK9bRV97xsVBK6kpuA2etj4rJP571dIWb7OBCbSp8Y2QLlRZNPGhfHxqR8Hqtw1FxtTE9tTZ2p2w3rM+rgpvtq1krK9A58TOp8x2MG6HpnP6kgFCbPSSH5TOae3HVJEey3QE/v0se4HCsgtqPvgWZmFj0DKY8OaBBXZXmUZZsk/WGtYnff8GKFwtARMoUqk1IeTJW8J49RXJMC6Y8hzDdwNdZXTum0y2NgPXoXKmgMx3HbGjSS3QIFw7XMGWChC44uc9jZguR/rFx5Mh3E8EQS+s8Q6recDe2/hXc18aYtE5q/vkeVxmG2KFXWh41je1hbrcD+nMoTVq+lNZYAXe4LogWPvn9XBs1EjXVBKxs9VNcx7syFA579qtjRXmjGQjvEJm5hRp6DZTAzGuPcS1R42sYTX3MHrpnTWliMLkR7zkhpuz+htXhDgNUSBA5JEiSYcGmHi0ZFluoDGKt8+5v3S/clCYos+OsKM5P2BpdfuAWVzIPZoDmpH19L6foCuYgzlnckTZwuCRnxNLZ4wFs32Ghjb/4UGKQoMqCRXpEwntRA/2re3RLkV1HdZMH/u/2yScAyD6X7N5VCmBv+C5m2xpZT3nbkwOOuXFpSUMsko7YAJ28grbQp5pYWjZ9iYastOljqGLg99+lEi09HLl3mgrC4As=
X-Forefront-Antispam-Report:
	CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB03.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230031)(4636009)(136003)(376002)(396003)(39860400002)(346002)(230922051799003)(230173577357003)(230273577357003)(1800799012)(451199024)(64100799003)(186009)(82310400011)(46966006)(40470700004)(36840700001)(426003)(2616005)(336012)(26005)(83380400001)(41300700001)(5660300002)(47076005)(31686004)(40460700003)(40480700001)(44832011)(36756003)(31696002)(86362001)(82740400003)(36860700001)(316002)(53546011)(478600001)(2906002)(8936002)(70206006)(110136005)(8676002)(16576012)(54906003)(4326008)(70586007)(356005)(81166007)(43740500002)(36900700001);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Jan 2024 19:03:28.4585
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 068a1271-af83-4b83-2555-08dc15fca8a9
X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB03.amd.com]
X-MS-Exchange-CrossTenant-AuthSource:
	DS2PEPF0000343B.namprd02.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA1PR12MB8240

On 1/15/24 04:07, Jan Beulich wrote:
> On 12.01.2024 16:06, Roger Pau Monné wrote:
>> On Tue, Jan 09, 2024 at 04:51:24PM -0500, Stewart Hildebrand wrote:
>>> From: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>
>>> +        /*
>>> +         * Make sure that the guest set address has the same page offset
>>> +         * as the physical address on the host or otherwise things won't work as
>>> +         * expected.
>>> +         */
>>> +        if ( PAGE_OFFSET(bar->guest_addr) != PAGE_OFFSET(bar->addr) )
>>> +        {
>>> +            gprintk(XENLOG_G_WARNING,
>>> +                    "%pp: Can't map BAR%d because of page offset mismatch: %lx vs %lx\n",
>>                                            ^u
>>
>> Also when using the x modifier it's better to also use # to print the
>> 0x prefix.  You can also reduce the length of the message using
>> s/because of/due to/ IMO:
>>
>> %pp: Can't map BAR%u due to offset mismatch: %lx vs %lx
> 
> Or even
> 
> %pp: can't map BAR%u - offset mismatch: %lx vs %lx
> 
> ? 

Using # that becomes:

"%pp: can't map BAR%u - offset mismatch: %#lx vs %#lx\n"

I'll send v12.2.

> Note also my use of lower-case 'c', which brings this log message in
> line with all pre-existing (prior to the whole series) vPCI log messages
> starting with "%pp: " (when not limiting to thus-prefixed there are a
> couple of "Failed to ..." outliers).
> 
> Jan


From xen-devel-bounces@lists.xenproject.org Mon Jan 15 19:30:29 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 15 Jan 2024 19:30:29 +0000
Received: from list by lists.xenproject.org with outflank-mailman.667557.1038939 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPSf7-0005qk-3L; Mon, 15 Jan 2024 19:30:21 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 667557.1038939; Mon, 15 Jan 2024 19:30:21 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPSf7-0005qd-0s; Mon, 15 Jan 2024 19:30:21 +0000
Received: by outflank-mailman (input) for mailman id 667557;
 Mon, 15 Jan 2024 19:30:18 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>) id 1rPSf4-0005qU-S1
 for xen-devel@lists.xenproject.org; Mon, 15 Jan 2024 19:30:18 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rPSf4-0002NJ-E8; Mon, 15 Jan 2024 19:30:18 +0000
Received: from gw1.octic.net ([88.97.20.152] helo=[10.0.1.240])
 by xenbits.xenproject.org with esmtpsa
 (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rPSf4-0001l8-58; Mon, 15 Jan 2024 19:30:18 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
	s=20200302mail; h=Content-Transfer-Encoding:Content-Type:In-Reply-To:From:
	References:Cc:To:Subject:MIME-Version:Date:Message-ID;
	bh=EdCsos4Y20o+AcER+dtgG8EPIIzby5DRvTAwOvQ9aAE=; b=qS+HejuoPnek084gGPVB2wA7+O
	mABXlb5I2ymmm+0umJsJGF2b99e6PvW+BfV6+my2eJ5y2yegEQogH9/jyN7QBOUIjiiLkpiVBse1F
	+7KYoL5kH7Iytli4yStMg1W+K+PSeIdzr986+uDpCcLlwgryIi67HFjQM1FjQ9S7S4fg=;
Message-ID: <e3103572-6355-434e-ad61-4d85707d613d@xen.org>
Date: Mon, 15 Jan 2024 19:30:16 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 2/2] xen/arm64: head: Allow to use early printk while on
 1:1 mapping
Content-Language: en-GB
To: Michal Orzel <michal.orzel@amd.com>, xen-devel@lists.xenproject.org
Cc: Stefano Stabellini <sstabellini@kernel.org>,
 Bertrand Marquis <bertrand.marquis@arm.com>,
 Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>
References: <20240115124859.89218-1-michal.orzel@amd.com>
 <20240115124859.89218-3-michal.orzel@amd.com>
From: Julien Grall <julien@xen.org>
In-Reply-To: <20240115124859.89218-3-michal.orzel@amd.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

Hi Michal,

On 15/01/2024 12:48, Michal Orzel wrote:
> Take an example from commit 1ec3fe1f664f ("xen/arm32: head: Improve
> logging in head.S") to add support for printing early boot messages
> while running on identity mapping:
>   - define PRINT_SECT() macro to be able to specify a section for storing
>     a string. PRINT() will use .rodata.str and PRINT_ID() - .rodata.idmap.
>     This is necessary, because when running on identity mapping, the
>     strings need to be part of the first page that is mapped,
>   - move loading a runtime virtual UART address right after enabling MMU
>     (the corresponding steps repeated in {primary,secondary}_switched are
>     now consolidated in a single place),
>   - move early printk 'hex' string into .rodata.idmap and replace 'adr'
>     instruction in asm_putn with 'adr_l' to extend the addressable range,
>   - remove RODATA_STR() macro given no use.
> 
> Signed-off-by: Michal Orzel <michal.orzel@amd.com>

I have tested with my upcoming series to get all pre-MMU code in a 
single page.

Acked-by: Julien Grall <jgrall@amazon.com>

Cheers,

-- 
Julien Grall


From xen-devel-bounces@lists.xenproject.org Mon Jan 15 19:31:46 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 15 Jan 2024 19:31:46 +0000
Received: from list by lists.xenproject.org with outflank-mailman.667560.1038950 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPSgT-0006MJ-Dn; Mon, 15 Jan 2024 19:31:45 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 667560.1038950; Mon, 15 Jan 2024 19:31:45 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPSgT-0006MC-AD; Mon, 15 Jan 2024 19:31:45 +0000
Received: by outflank-mailman (input) for mailman id 667560;
 Mon, 15 Jan 2024 19:31:44 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>) id 1rPSgS-0006M6-5Z
 for xen-devel@lists.xenproject.org; Mon, 15 Jan 2024 19:31:44 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rPSgR-0002OJ-QJ; Mon, 15 Jan 2024 19:31:43 +0000
Received: from gw1.octic.net ([88.97.20.152] helo=[10.0.1.240])
 by xenbits.xenproject.org with esmtpsa
 (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rPSgR-0001l8-LU; Mon, 15 Jan 2024 19:31:43 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
	s=20200302mail; h=Content-Transfer-Encoding:Content-Type:In-Reply-To:From:
	References:Cc:To:Subject:MIME-Version:Date:Message-ID;
	bh=rpO6Twb9w7MImVa1X1gWMUCDq9WZ7ySOM4avdOV2fqU=; b=vKCKID7O5TymMJJJYYssRIwNzU
	Q6hlY3ZEGGddu4PYIeRSoanfd3jKl1cT9uDYXQXTr/3zoq4FX9cT9b8GHoqXmbMzZf9HOVLPzA7y3
	0bQKgfDr0ITcvN91e5illaqL9GJvCQSw1zSuQEXYoi3R/mV002U6WHQERCBqWKcnxyGE=;
Message-ID: <e4130c93-5fb1-49d3-97f7-20b1dca9c671@xen.org>
Date: Mon, 15 Jan 2024 19:31:42 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 0/2] xen/arm: head: early printk on 1:1 mapping
Content-Language: en-GB
To: Michal Orzel <michal.orzel@amd.com>, xen-devel@lists.xenproject.org
Cc: Stefano Stabellini <sstabellini@kernel.org>,
 Bertrand Marquis <bertrand.marquis@arm.com>,
 Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>
References: <20240115124859.89218-1-michal.orzel@amd.com>
From: Julien Grall <julien@xen.org>
In-Reply-To: <20240115124859.89218-1-michal.orzel@amd.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

Hi Michal,

On 15/01/2024 12:48, Michal Orzel wrote:
> This series is a follow up to 1ec3fe1f664f ("xen/arm32: head: Improve logging
> in head.S").
> 
> Michal Orzel (2):
>    xen/arm32: head: Move earlyprintk 'hex' to .rodata.idmap
>    xen/arm64: head: Allow to use early printk while on 1:1 mapping

This is now committed.

Cheers,

> 
>   xen/arch/arm/arm32/head.S               |  2 +-
>   xen/arch/arm/arm64/head.S               | 13 ++-----------
>   xen/arch/arm/arm64/mmu/head.S           |  8 ++++++++
>   xen/arch/arm/include/asm/arm64/macros.h | 25 ++++++++++++++++++-------
>   xen/arch/arm/include/asm/asm_defns.h    |  2 --
>   5 files changed, 29 insertions(+), 21 deletions(-)
> 

-- 
Julien Grall


From xen-devel-bounces@lists.xenproject.org Mon Jan 15 19:43:35 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 15 Jan 2024 19:43:35 +0000
Received: from list by lists.xenproject.org with outflank-mailman.667565.1038960 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPSrp-0000Kj-BP; Mon, 15 Jan 2024 19:43:29 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 667565.1038960; Mon, 15 Jan 2024 19:43:29 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPSrp-0000Kc-8P; Mon, 15 Jan 2024 19:43:29 +0000
Received: by outflank-mailman (input) for mailman id 667565;
 Mon, 15 Jan 2024 19:43:28 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=ghqi=IZ=amd.com=Stewart.Hildebrand@srs-se1.protection.inumbo.net>)
 id 1rPSrn-0000KU-O8
 for xen-devel@lists.xenproject.org; Mon, 15 Jan 2024 19:43:28 +0000
Received: from NAM10-DM6-obe.outbound.protection.outlook.com
 (mail-dm6nam10on20625.outbound.protection.outlook.com
 [2a01:111:f400:7e88::625])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 5746205c-b3de-11ee-98f1-6d05b1d4d9a1;
 Mon, 15 Jan 2024 20:43:25 +0100 (CET)
Received: from SJ0PR03CA0378.namprd03.prod.outlook.com (2603:10b6:a03:3a1::23)
 by SJ2PR12MB7797.namprd12.prod.outlook.com (2603:10b6:a03:4c5::13)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7181.17; Mon, 15 Jan
 2024 19:43:19 +0000
Received: from SJ5PEPF000001C9.namprd05.prod.outlook.com
 (2603:10b6:a03:3a1:cafe::2f) by SJ0PR03CA0378.outlook.office365.com
 (2603:10b6:a03:3a1::23) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7181.23 via Frontend
 Transport; Mon, 15 Jan 2024 19:43:19 +0000
Received: from SATLEXMB03.amd.com (165.204.84.17) by
 SJ5PEPF000001C9.mail.protection.outlook.com (10.167.242.37) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.7202.16 via Frontend Transport; Mon, 15 Jan 2024 19:43:18 +0000
Received: from SATLEXMB08.amd.com (10.181.40.132) by SATLEXMB03.amd.com
 (10.181.40.144) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.34; Mon, 15 Jan
 2024 13:43:18 -0600
Received: from SATLEXMB03.amd.com (10.181.40.144) by SATLEXMB08.amd.com
 (10.181.40.132) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.32; Mon, 15 Jan
 2024 11:43:17 -0800
Received: from ubuntu.mshome.net (10.180.168.240) by SATLEXMB03.amd.com
 (10.181.40.144) with Microsoft SMTP Server id 15.1.2507.34 via Frontend
 Transport; Mon, 15 Jan 2024 13:43:15 -0600
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 5746205c-b3de-11ee-98f1-6d05b1d4d9a1
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=mPetEuDyaPwMay0L2rf+kLH63lxdG1W+MAmO16kpU3JSjNMFDG9EbndmyIbrdtTmgxQohMG4351FI7/STdkklPIcoVSh0UCXH5sxOvqSzQqHJtDKtMZLgsZhUJgogNatkKZnjuQ5fDE2NSE/bIqN6kmN2HN80hzvI/CoCzqPdwjchP1QeW2bGgYIyeuDn0cMYk7ZDoJyW5+WP9XbueKLYrcNzEsOwX3UELD91s6FbV7svLlRYk4KUFhJccBYX7n0aIjKLhNt1h0TT278Khn4l+meN/yQcNrtKkWyMEml4jPHC7PlVaevuhmV5U6KbMm5UM2H4t0AG5P1e1qgOM/Rfg==
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=fSFgtIJRmpk8ECdEPUQ/pOCw9F0Lfc+srsWHQubhRJQ=;
 b=eLr3SdIuHtnElDK+slMBW2BXFwZItT5WgtpNTQfwIXPMGnQyFYgp3cp2pYS0THyxsSS2kMTGuUPduCpmk3U8XJhdhQeHMqaJokHVORH/hQ9bDHn2Zs27JPBkEeOaSmaJM21gQUqt+DQ9ZwNhoMYk2AExRIe+F9DHpjDydXI/7RDrfuC4nsDLpSJpLzR4fN89vlz2XLkfRMfzzXoz+EYR5pE2pkt4zs/khc8q5N7GZSpvowledeW/wulOz6iLzhUgCFX5bdrDqvuiCM7Yw5MDvAa6YcQXe44MEVSv5fPjV0vXpR7WP0AOTTj8F+z9Gs+qMkLjze4Rypo1dgASJsHSuA==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=lists.xenproject.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)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=fSFgtIJRmpk8ECdEPUQ/pOCw9F0Lfc+srsWHQubhRJQ=;
 b=MMqjynQ9Set3QbJQ3/wjXP0HhlA/bzT1PNfT2qbILHcXHF8LTaywGX74qFwMFtONkhjCRSEVfrQ/YhQccfCjDMB5GAlKmL3PY2uJEhX3/sIXc/WhYnIRQB1QYZiT3X/RHYFy6jqoBovyxVZQDXZS1BcgC94oW/WqrCyiDNw1hpw=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=SATLEXMB03.amd.com; pr=C
From: Stewart Hildebrand <stewart.hildebrand@amd.com>
To: <xen-devel@lists.xenproject.org>
CC: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>, Jan Beulich
	<jbeulich@suse.com>, Andrew Cooper <andrew.cooper3@citrix.com>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>, Wei Liu
	<wl@xen.org>, George Dunlap <george.dunlap@citrix.com>, Julien Grall
	<julien@xen.org>, Stefano Stabellini <sstabellini@kernel.org>, Jun Nakajima
	<jun.nakajima@intel.com>, Kevin Tian <kevin.tian@intel.com>, Paul Durrant
	<paul@xen.org>, Volodymyr Babchuk <volodymyr_babchuk@epam.com>, "Stewart
 Hildebrand" <stewart.hildebrand@amd.com>
Subject: [PATCH v12.2 01/15] vpci: use per-domain PCI lock to protect vpci structure
Date: Mon, 15 Jan 2024 14:43:08 -0500
Message-ID: <20240115194309.45683-1-stewart.hildebrand@amd.com>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20240109215145.430207-2-stewart.hildebrand@amd.com>
References: <20240109215145.430207-1-stewart.hildebrand@amd.com> <20240109215145.430207-2-stewart.hildebrand@amd.com>
MIME-Version: 1.0
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: SJ5PEPF000001C9:EE_|SJ2PR12MB7797:EE_
X-MS-Office365-Filtering-Correlation-Id: 050b146c-64d6-4621-ba7c-08dc16023969
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam: BCL:0;
X-Microsoft-Antispam-Message-Info:
	MB+nKefKUQq20vkRDyxKlGP9PeaWvqsPXR1U/Sm6hoU8AC812WBc/7LRGQPp1VtsWsVfnkK9HkreLuxCRqQbN8d5J1qg2p77vxONEATwoSOA5bxAE7pTwVufu0WCtqPWyEO6M/vM6oJeX7ixZs8LpiyBVpAzSv5MblntcD0ZTDux++fcbdedd1YleFNJUa+dbSKVemB4pxyZR9p/Wt366PNZ20wQqEd6VD54NRpOSWTtH8CCB/P1VJFacE3fMQkdJ69QKucmNnm5oH7xsgOmn7BkY+SdljVUg8mqu5rL1vzpTRbxuVRwfPCxI6gkoarkSDJuaIFNKaYzmqu/k2rOOBlK3NELBAi7kIm9L5BIJezqBJTS7u3qgVPjnuu8g45s6byMYY7lVU0ypkb5yyAMQEbtGqe6gsu6izJwMNCK361ItghkkYDIzK0kdOSTjse98ktz9mrps6wswQCcDn4sorywa90hYg7Y0IrolzHjYa8/uo3mF4iFkP1/2zi/FWUcEnMjeuIHM+vodc4fYoMNJYJAIBN2Gffg50kDJIcQydVOGAjRynHYLA/iIKBEnrfeX/eMwA06VkJ/SQd2FJTo1G+4yS9J2dZZzXfbuyuy0dyz2a6XJQQbQ02fyfRkeeriRL5ghu9KBghrabJda+eNm0Ri7XWRYmrvqeXUUiS/lxCbsYsZA9Ni9vc7PL6YlltYIeLDDW3RcFJ8dJjgbUit0GJqwLIepbzDkYKXbc5bDswsvb55vvRbPWt+ikV9WCF/5Amv0nMXTNQdO+kWi1z9F2p0CvxRBwoBks2KpYbK3Bk=
X-Forefront-Antispam-Report:
	CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB03.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230031)(4636009)(136003)(376002)(346002)(39860400002)(396003)(230922051799003)(64100799003)(186009)(82310400011)(1800799012)(451199024)(36840700001)(46966006)(40470700004)(426003)(83380400001)(54906003)(2616005)(6916009)(26005)(82740400003)(47076005)(70586007)(336012)(6666004)(1076003)(8936002)(4326008)(7416002)(8676002)(2906002)(30864003)(36860700001)(5660300002)(478600001)(44832011)(41300700001)(86362001)(81166007)(36756003)(70206006)(316002)(356005)(40480700001)(40460700003)(36900700001)(309714004);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Jan 2024 19:43:18.7493
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 050b146c-64d6-4621-ba7c-08dc16023969
X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB03.amd.com]
X-MS-Exchange-CrossTenant-AuthSource:
	SJ5PEPF000001C9.namprd05.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ2PR12MB7797

From: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>

Use the per-domain PCI read/write lock to protect the presence of the
pci device vpci field. This lock can be used (and in a few cases is used
right away) so that vpci removal can be performed while holding the lock
in write mode. Previously such removal could race with vpci_read for
example.

When taking both d->pci_lock and pdev->vpci->lock, they should be
taken in this exact order: d->pci_lock then pdev->vpci->lock to avoid
possible deadlock situations.

1. Per-domain's pci_lock is used to protect pdev->vpci structure
from being removed.

2. Writing the command register and ROM BAR register may trigger
modify_bars to run, which in turn may access multiple pdevs while
checking for the existing BAR's overlap. The overlapping check, if
done under the read lock, requires vpci->lock to be acquired on both
devices being compared, which may produce a deadlock. It is not
possible to upgrade read lock to write lock in such a case. So, in
order to prevent the deadlock, use d->pci_lock in write mode instead.

All other code, which doesn't lead to pdev->vpci destruction and does
not access multiple pdevs at the same time, can still use a
combination of the read lock and pdev->vpci->lock.

3. Drop const qualifier where the new rwlock is used and this is
appropriate.

4. Do not call process_pending_softirqs with any locks held. For that
unlock prior the call and re-acquire the locks after. After
re-acquiring the lock there is no need to check if pdev->vpci exists:
 - in apply_map because of the context it is called (no race condition
   possible)
 - for MSI/MSI-X debug code because it is called at the end of
   pdev->vpci access and no further access to pdev->vpci is made

5. Use d->pci_lock around for_each_pdev and pci_get_pdev_by_domain
while accessing pdevs in vpci code.

Suggested-by: Roger Pau Monné <roger.pau@citrix.com>
Suggested-by: Jan Beulich <jbeulich@suse.com>
Signed-off-by: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>
Signed-off-by: Volodymyr Babchuk <volodymyr_babchuk@epam.com>
Signed-off-by: Stewart Hildebrand <stewart.hildebrand@amd.com>
---
Changes in v12.2:
 - drop Roger's R-b
 - drop both locks on error paths in vpci_msix_arch_print()
 - add another ASSERT in vpci_msix_arch_print(), to enforce the
   expectation both locks are held before calling vpci_msix_arch_print()
 - move pdev_done label in vpci_dump_msi()
 - update comments in vpci_dump_msi() to say locks (plural)

Changes in v12.1:
 - use read_trylock() in vpci_msix_arch_print()
 - fixup in-code comments (revert double space, use DomXEN) in
   vpci_{read,write}()
 - minor updates in commit message
 - add Roger's R-b

Changes in v12:
 - s/pci_rwlock/pci_lock/ in commit message
 - expand comment about scope of pci_lock in sched.h
 - in vpci_{read,write}, if hwdom is trying to access a device assigned
   to dom_xen, holding hwdom->pci_lock is sufficient (no need to hold
   dom_xen->pci_lock)
 - reintroduce ASSERT in vmx_pi_update_irte()
 - reintroduce ASSERT in __pci_enable_msi{x}()
 - delete note 6. in commit message about removing ASSERTs since we have
   reintroduced them

Changes in v11:
 - Fixed commit message regarding possible spinlocks
 - Removed parameter from allocate_and_map_msi_pirq(), which was added
 in the prev version. Now we are taking pcidevs_lock in
 physdev_map_pirq()
 - Returned ASSERT to pci_enable_msi
 - Fixed case when we took read lock instead of write one
 - Fixed label indentation

Changes in v10:
 - Moved printk pas locked area
 - Returned back ASSERTs
 - Added new parameter to allocate_and_map_msi_pirq() so it knows if
 it should take the global pci lock
 - Added comment about possible improvement in vpci_write
 - Changed ASSERT(rw_is_locked()) to rw_is_write_locked() in
   appropriate places
 - Renamed release_domain_locks() to release_domain_write_locks()
 - moved domain_done label in vpci_dump_msi() to correct place
Changes in v9:
 - extended locked region to protect vpci_remove_device and
   vpci_add_handlers() calls
 - vpci_write() takes lock in the write mode to protect
   potential call to modify_bars()
 - renamed lock releasing function
 - removed ASSERT()s from msi code
 - added trylock in vpci_dump_msi

Changes in v8:
 - changed d->vpci_lock to d->pci_lock
 - introducing d->pci_lock in a separate patch
 - extended locked region in vpci_process_pending
 - removed pcidevs_lockis vpci_dump_msi()
 - removed some changes as they are not needed with
   the new locking scheme
 - added handling for hwdom && dom_xen case
---
 xen/arch/x86/hvm/vmsi.c       | 31 +++++++++++++--------
 xen/arch/x86/hvm/vmx/vmx.c    |  2 +-
 xen/arch/x86/irq.c            |  8 +++---
 xen/arch/x86/msi.c            | 14 +++++-----
 xen/arch/x86/physdev.c        |  2 ++
 xen/drivers/passthrough/pci.c |  9 +++---
 xen/drivers/vpci/header.c     | 18 ++++++++++++
 xen/drivers/vpci/msi.c        | 30 +++++++++++++++++---
 xen/drivers/vpci/msix.c       | 52 ++++++++++++++++++++++++++++++-----
 xen/drivers/vpci/vpci.c       | 24 ++++++++++++++--
 xen/include/xen/sched.h       |  3 +-
 11 files changed, 152 insertions(+), 41 deletions(-)

diff --git a/xen/arch/x86/hvm/vmsi.c b/xen/arch/x86/hvm/vmsi.c
index 128f23636279..9e5e93a6ba0f 100644
--- a/xen/arch/x86/hvm/vmsi.c
+++ b/xen/arch/x86/hvm/vmsi.c
@@ -468,7 +468,7 @@ int msixtbl_pt_register(struct domain *d, struct pirq *pirq, uint64_t gtable)
     struct msixtbl_entry *entry, *new_entry;
     int r = -EINVAL;
 
-    ASSERT(pcidevs_locked());
+    ASSERT(pcidevs_locked() || rw_is_locked(&d->pci_lock));
     ASSERT(rw_is_write_locked(&d->event_lock));
 
     if ( !msixtbl_initialised(d) )
@@ -538,7 +538,7 @@ void msixtbl_pt_unregister(struct domain *d, struct pirq *pirq)
     struct pci_dev *pdev;
     struct msixtbl_entry *entry;
 
-    ASSERT(pcidevs_locked());
+    ASSERT(pcidevs_locked() || rw_is_locked(&d->pci_lock));
     ASSERT(rw_is_write_locked(&d->event_lock));
 
     if ( !msixtbl_initialised(d) )
@@ -684,7 +684,7 @@ static int vpci_msi_update(const struct pci_dev *pdev, uint32_t data,
 {
     unsigned int i;
 
-    ASSERT(pcidevs_locked());
+    ASSERT(rw_is_locked(&pdev->domain->pci_lock));
 
     if ( (address & MSI_ADDR_BASE_MASK) != MSI_ADDR_HEADER )
     {
@@ -725,8 +725,8 @@ void vpci_msi_arch_update(struct vpci_msi *msi, const struct pci_dev *pdev)
     int rc;
 
     ASSERT(msi->arch.pirq != INVALID_PIRQ);
+    ASSERT(rw_is_locked(&pdev->domain->pci_lock));
 
-    pcidevs_lock();
     for ( i = 0; i < msi->vectors && msi->arch.bound; i++ )
     {
         struct xen_domctl_bind_pt_irq unbind = {
@@ -745,7 +745,6 @@ void vpci_msi_arch_update(struct vpci_msi *msi, const struct pci_dev *pdev)
 
     msi->arch.bound = !vpci_msi_update(pdev, msi->data, msi->address,
                                        msi->vectors, msi->arch.pirq, msi->mask);
-    pcidevs_unlock();
 }
 
 static int vpci_msi_enable(const struct pci_dev *pdev, unsigned int nr,
@@ -778,15 +777,14 @@ int vpci_msi_arch_enable(struct vpci_msi *msi, const struct pci_dev *pdev,
     int rc;
 
     ASSERT(msi->arch.pirq == INVALID_PIRQ);
+    ASSERT(rw_is_locked(&pdev->domain->pci_lock));
     rc = vpci_msi_enable(pdev, vectors, 0);
     if ( rc < 0 )
         return rc;
     msi->arch.pirq = rc;
 
-    pcidevs_lock();
     msi->arch.bound = !vpci_msi_update(pdev, msi->data, msi->address, vectors,
                                        msi->arch.pirq, msi->mask);
-    pcidevs_unlock();
 
     return 0;
 }
@@ -797,8 +795,8 @@ static void vpci_msi_disable(const struct pci_dev *pdev, int pirq,
     unsigned int i;
 
     ASSERT(pirq != INVALID_PIRQ);
+    ASSERT(rw_is_locked(&pdev->domain->pci_lock));
 
-    pcidevs_lock();
     for ( i = 0; i < nr && bound; i++ )
     {
         struct xen_domctl_bind_pt_irq bind = {
@@ -814,7 +812,6 @@ static void vpci_msi_disable(const struct pci_dev *pdev, int pirq,
     write_lock(&pdev->domain->event_lock);
     unmap_domain_pirq(pdev->domain, pirq);
     write_unlock(&pdev->domain->event_lock);
-    pcidevs_unlock();
 }
 
 void vpci_msi_arch_disable(struct vpci_msi *msi, const struct pci_dev *pdev)
@@ -854,6 +851,7 @@ int vpci_msix_arch_enable_entry(struct vpci_msix_entry *entry,
     int rc;
 
     ASSERT(entry->arch.pirq == INVALID_PIRQ);
+    ASSERT(rw_is_locked(&pdev->domain->pci_lock));
     rc = vpci_msi_enable(pdev, vmsix_entry_nr(pdev->vpci->msix, entry),
                          table_base);
     if ( rc < 0 )
@@ -861,7 +859,6 @@ int vpci_msix_arch_enable_entry(struct vpci_msix_entry *entry,
 
     entry->arch.pirq = rc;
 
-    pcidevs_lock();
     rc = vpci_msi_update(pdev, entry->data, entry->addr, 1, entry->arch.pirq,
                          entry->masked);
     if ( rc )
@@ -869,7 +866,6 @@ int vpci_msix_arch_enable_entry(struct vpci_msix_entry *entry,
         vpci_msi_disable(pdev, entry->arch.pirq, 1, false);
         entry->arch.pirq = INVALID_PIRQ;
     }
-    pcidevs_unlock();
 
     return rc;
 }
@@ -895,6 +891,9 @@ int vpci_msix_arch_print(const struct vpci_msix *msix)
 {
     unsigned int i;
 
+    ASSERT(rw_is_locked(&msix->pdev->domain->pci_lock));
+    ASSERT(spin_is_locked(&msix->pdev->vpci->lock));
+
     for ( i = 0; i < msix->max_entries; i++ )
     {
         const struct vpci_msix_entry *entry = &msix->entries[i];
@@ -913,13 +912,23 @@ int vpci_msix_arch_print(const struct vpci_msix *msix)
             struct pci_dev *pdev = msix->pdev;
 
             spin_unlock(&msix->pdev->vpci->lock);
+            read_unlock(&pdev->domain->pci_lock);
             process_pending_softirqs();
+
+            if ( !read_trylock(&pdev->domain->pci_lock) )
+                return -EBUSY;
+
             /* NB: we assume that pdev cannot go away for an alive domain. */
             if ( !pdev->vpci || !spin_trylock(&pdev->vpci->lock) )
+            {
+                read_unlock(&pdev->domain->pci_lock);
                 return -EBUSY;
+            }
+
             if ( pdev->vpci->msix != msix )
             {
                 spin_unlock(&pdev->vpci->lock);
+                read_unlock(&pdev->domain->pci_lock);
                 return -EAGAIN;
             }
         }
diff --git a/xen/arch/x86/hvm/vmx/vmx.c b/xen/arch/x86/hvm/vmx/vmx.c
index 8ff675883c2b..890faef48b82 100644
--- a/xen/arch/x86/hvm/vmx/vmx.c
+++ b/xen/arch/x86/hvm/vmx/vmx.c
@@ -413,7 +413,7 @@ static int cf_check vmx_pi_update_irte(const struct vcpu *v,
 
     spin_unlock_irq(&desc->lock);
 
-    ASSERT(pcidevs_locked());
+    ASSERT(pcidevs_locked() || rw_is_locked(&msi_desc->dev->domain->pci_lock));
 
     return iommu_update_ire_from_msi(msi_desc, &msi_desc->msg);
 
diff --git a/xen/arch/x86/irq.c b/xen/arch/x86/irq.c
index 50e49e1a4b6f..4d89d9af99fe 100644
--- a/xen/arch/x86/irq.c
+++ b/xen/arch/x86/irq.c
@@ -2166,7 +2166,7 @@ int map_domain_pirq(
         struct pci_dev *pdev;
         unsigned int nr = 0;
 
-        ASSERT(pcidevs_locked());
+        ASSERT(pcidevs_locked() || rw_is_locked(&d->pci_lock));
 
         ret = -ENODEV;
         if ( !cpu_has_apic )
@@ -2323,7 +2323,7 @@ int unmap_domain_pirq(struct domain *d, int pirq)
     if ( (pirq < 0) || (pirq >= d->nr_pirqs) )
         return -EINVAL;
 
-    ASSERT(pcidevs_locked());
+    ASSERT(pcidevs_locked() || rw_is_locked(&d->pci_lock));
     ASSERT(rw_is_write_locked(&d->event_lock));
 
     info = pirq_info(d, pirq);
@@ -2888,6 +2888,8 @@ int allocate_and_map_msi_pirq(struct domain *d, int index, int *pirq_p,
 {
     int irq, pirq, ret;
 
+    ASSERT(pcidevs_locked() || rw_is_locked(&d->pci_lock));
+
     switch ( type )
     {
     case MAP_PIRQ_TYPE_MSI:
@@ -2917,7 +2919,6 @@ int allocate_and_map_msi_pirq(struct domain *d, int index, int *pirq_p,
 
     msi->irq = irq;
 
-    pcidevs_lock();
     /* Verify or get pirq. */
     write_lock(&d->event_lock);
     pirq = allocate_pirq(d, index, *pirq_p, irq, type, &msi->entry_nr);
@@ -2933,7 +2934,6 @@ int allocate_and_map_msi_pirq(struct domain *d, int index, int *pirq_p,
 
  done:
     write_unlock(&d->event_lock);
-    pcidevs_unlock();
     if ( ret )
     {
         switch ( type )
diff --git a/xen/arch/x86/msi.c b/xen/arch/x86/msi.c
index 335c0868a225..7da2affa2e82 100644
--- a/xen/arch/x86/msi.c
+++ b/xen/arch/x86/msi.c
@@ -602,7 +602,7 @@ static int msi_capability_init(struct pci_dev *dev,
     unsigned int i, mpos;
     uint16_t control;
 
-    ASSERT(pcidevs_locked());
+    ASSERT(pcidevs_locked() || rw_is_locked(&dev->domain->pci_lock));
     pos = pci_find_cap_offset(dev->sbdf, PCI_CAP_ID_MSI);
     if ( !pos )
         return -ENODEV;
@@ -771,7 +771,7 @@ static int msix_capability_init(struct pci_dev *dev,
     if ( !pos )
         return -ENODEV;
 
-    ASSERT(pcidevs_locked());
+    ASSERT(pcidevs_locked() || rw_is_locked(&dev->domain->pci_lock));
 
     control = pci_conf_read16(dev->sbdf, msix_control_reg(pos));
     /*
@@ -988,11 +988,11 @@ static int __pci_enable_msi(struct pci_dev *pdev, struct msi_info *msi,
 {
     struct msi_desc *old_desc;
 
-    ASSERT(pcidevs_locked());
-
     if ( !pdev )
         return -ENODEV;
 
+    ASSERT(pcidevs_locked() || rw_is_locked(&pdev->domain->pci_lock));
+
     old_desc = find_msi_entry(pdev, msi->irq, PCI_CAP_ID_MSI);
     if ( old_desc )
     {
@@ -1043,11 +1043,11 @@ static int __pci_enable_msix(struct pci_dev *pdev, struct msi_info *msi,
 {
     struct msi_desc *old_desc;
 
-    ASSERT(pcidevs_locked());
-
     if ( !pdev || !pdev->msix )
         return -ENODEV;
 
+    ASSERT(pcidevs_locked() || rw_is_locked(&pdev->domain->pci_lock));
+
     if ( msi->entry_nr >= pdev->msix->nr_entries )
         return -EINVAL;
 
@@ -1154,7 +1154,7 @@ int pci_prepare_msix(u16 seg, u8 bus, u8 devfn, bool off)
 int pci_enable_msi(struct pci_dev *pdev, struct msi_info *msi,
                    struct msi_desc **desc)
 {
-    ASSERT(pcidevs_locked());
+    ASSERT(pcidevs_locked() || rw_is_locked(&pdev->domain->pci_lock));
 
     if ( !use_msi )
         return -EPERM;
diff --git a/xen/arch/x86/physdev.c b/xen/arch/x86/physdev.c
index 47c4da0af7e1..369c9e788c1c 100644
--- a/xen/arch/x86/physdev.c
+++ b/xen/arch/x86/physdev.c
@@ -123,7 +123,9 @@ int physdev_map_pirq(domid_t domid, int type, int *index, int *pirq_p,
 
     case MAP_PIRQ_TYPE_MSI:
     case MAP_PIRQ_TYPE_MULTI_MSI:
+        pcidevs_lock();
         ret = allocate_and_map_msi_pirq(d, *index, pirq_p, type, msi);
+        pcidevs_unlock();
         break;
 
     default:
diff --git a/xen/drivers/passthrough/pci.c b/xen/drivers/passthrough/pci.c
index 1439d1ef2b26..3a973324bca1 100644
--- a/xen/drivers/passthrough/pci.c
+++ b/xen/drivers/passthrough/pci.c
@@ -750,7 +750,6 @@ int pci_add_device(u16 seg, u8 bus, u8 devfn,
         pdev->domain = hardware_domain;
         write_lock(&hardware_domain->pci_lock);
         list_add(&pdev->domain_list, &hardware_domain->pdev_list);
-        write_unlock(&hardware_domain->pci_lock);
 
         /*
          * For devices not discovered by Xen during boot, add vPCI handlers
@@ -759,18 +758,18 @@ int pci_add_device(u16 seg, u8 bus, u8 devfn,
         ret = vpci_add_handlers(pdev);
         if ( ret )
         {
-            printk(XENLOG_ERR "Setup of vPCI failed: %d\n", ret);
-            write_lock(&hardware_domain->pci_lock);
             list_del(&pdev->domain_list);
             write_unlock(&hardware_domain->pci_lock);
             pdev->domain = NULL;
+            printk(XENLOG_ERR "Setup of vPCI failed: %d\n", ret);
             goto out;
         }
+        write_unlock(&hardware_domain->pci_lock);
         ret = iommu_add_device(pdev);
         if ( ret )
         {
-            vpci_remove_device(pdev);
             write_lock(&hardware_domain->pci_lock);
+            vpci_remove_device(pdev);
             list_del(&pdev->domain_list);
             write_unlock(&hardware_domain->pci_lock);
             pdev->domain = NULL;
@@ -1146,7 +1145,9 @@ static void __hwdom_init setup_one_hwdom_device(const struct setup_hwdom *ctxt,
     } while ( devfn != pdev->devfn &&
               PCI_SLOT(devfn) == PCI_SLOT(pdev->devfn) );
 
+    write_lock(&ctxt->d->pci_lock);
     err = vpci_add_handlers(pdev);
+    write_unlock(&ctxt->d->pci_lock);
     if ( err )
         printk(XENLOG_ERR "setup of vPCI for d%d failed: %d\n",
                ctxt->d->domain_id, err);
diff --git a/xen/drivers/vpci/header.c b/xen/drivers/vpci/header.c
index 58195549d50a..8f5850b8cf6d 100644
--- a/xen/drivers/vpci/header.c
+++ b/xen/drivers/vpci/header.c
@@ -173,6 +173,7 @@ bool vpci_process_pending(struct vcpu *v)
         if ( rc == -ERESTART )
             return true;
 
+        write_lock(&v->domain->pci_lock);
         spin_lock(&v->vpci.pdev->vpci->lock);
         /* Disable memory decoding unconditionally on failure. */
         modify_decoding(v->vpci.pdev,
@@ -191,6 +192,7 @@ bool vpci_process_pending(struct vcpu *v)
              * failure.
              */
             vpci_remove_device(v->vpci.pdev);
+        write_unlock(&v->domain->pci_lock);
     }
 
     return false;
@@ -202,8 +204,20 @@ static int __init apply_map(struct domain *d, const struct pci_dev *pdev,
     struct map_data data = { .d = d, .map = true };
     int rc;
 
+    ASSERT(rw_is_write_locked(&d->pci_lock));
+
     while ( (rc = rangeset_consume_ranges(mem, map_range, &data)) == -ERESTART )
+    {
+        /*
+         * It's safe to drop and reacquire the lock in this context
+         * without risking pdev disappearing because devices cannot be
+         * removed until the initial domain has been started.
+         */
+        write_unlock(&d->pci_lock);
         process_pending_softirqs();
+        write_lock(&d->pci_lock);
+    }
+
     rangeset_destroy(mem);
     if ( !rc )
         modify_decoding(pdev, cmd, false);
@@ -244,6 +258,8 @@ static int modify_bars(const struct pci_dev *pdev, uint16_t cmd, bool rom_only)
     unsigned int i;
     int rc;
 
+    ASSERT(rw_is_write_locked(&pdev->domain->pci_lock));
+
     if ( !mem )
         return -ENOMEM;
 
@@ -524,6 +540,8 @@ static int cf_check init_header(struct pci_dev *pdev)
     int rc;
     bool mask_cap_list = false;
 
+    ASSERT(rw_is_write_locked(&pdev->domain->pci_lock));
+
     switch ( pci_conf_read8(pdev->sbdf, PCI_HEADER_TYPE) & 0x7f )
     {
     case PCI_HEADER_TYPE_NORMAL:
diff --git a/xen/drivers/vpci/msi.c b/xen/drivers/vpci/msi.c
index a253ccbd7db7..dc71938e23f5 100644
--- a/xen/drivers/vpci/msi.c
+++ b/xen/drivers/vpci/msi.c
@@ -263,7 +263,7 @@ REGISTER_VPCI_INIT(init_msi, VPCI_PRIORITY_LOW);
 
 void vpci_dump_msi(void)
 {
-    const struct domain *d;
+    struct domain *d;
 
     rcu_read_lock(&domlist_read_lock);
     for_each_domain ( d )
@@ -275,6 +275,9 @@ void vpci_dump_msi(void)
 
         printk("vPCI MSI/MSI-X d%d\n", d->domain_id);
 
+        if ( !read_trylock(&d->pci_lock) )
+            continue;
+
         for_each_pdev ( d, pdev )
         {
             const struct vpci_msi *msi;
@@ -313,17 +316,36 @@ void vpci_dump_msi(void)
                 {
                     /*
                      * On error vpci_msix_arch_print will always return without
-                     * holding the lock.
+                     * holding the locks.
                      */
                     printk("unable to print all MSI-X entries: %d\n", rc);
-                    process_pending_softirqs();
-                    continue;
+                    goto pdev_done;
                 }
             }
 
+            /*
+             * Unlock locks to process pending softirqs. This is
+             * potentially unsafe, as d->pdev_list can be changed in
+             * meantime.
+             */
             spin_unlock(&pdev->vpci->lock);
+            read_unlock(&d->pci_lock);
+        pdev_done:
             process_pending_softirqs();
+            if ( !read_trylock(&d->pci_lock) )
+            {
+                printk("unable to access other devices for the domain\n");
+                goto domain_done;
+            }
         }
+        read_unlock(&d->pci_lock);
+    domain_done:
+        /*
+         * We need this label at the end of the loop, but some
+         * compilers might not be happy about label at the end of the
+         * compound statement so we adding an empty statement here.
+         */
+        ;
     }
     rcu_read_unlock(&domlist_read_lock);
 }
diff --git a/xen/drivers/vpci/msix.c b/xen/drivers/vpci/msix.c
index d1126a417da9..b6abab47efdd 100644
--- a/xen/drivers/vpci/msix.c
+++ b/xen/drivers/vpci/msix.c
@@ -147,6 +147,8 @@ static struct vpci_msix *msix_find(const struct domain *d, unsigned long addr)
 {
     struct vpci_msix *msix;
 
+    ASSERT(rw_is_locked(&d->pci_lock));
+
     list_for_each_entry ( msix, &d->arch.hvm.msix_tables, next )
     {
         const struct vpci_bar *bars = msix->pdev->vpci->header.bars;
@@ -163,7 +165,13 @@ static struct vpci_msix *msix_find(const struct domain *d, unsigned long addr)
 
 static int cf_check msix_accept(struct vcpu *v, unsigned long addr)
 {
-    return !!msix_find(v->domain, addr);
+    int rc;
+
+    read_lock(&v->domain->pci_lock);
+    rc = !!msix_find(v->domain, addr);
+    read_unlock(&v->domain->pci_lock);
+
+    return rc;
 }
 
 static bool access_allowed(const struct pci_dev *pdev, unsigned long addr,
@@ -358,21 +366,35 @@ static int adjacent_read(const struct domain *d, const struct vpci_msix *msix,
 static int cf_check msix_read(
     struct vcpu *v, unsigned long addr, unsigned int len, unsigned long *data)
 {
-    const struct domain *d = v->domain;
-    struct vpci_msix *msix = msix_find(d, addr);
+    struct domain *d = v->domain;
+    struct vpci_msix *msix;
     const struct vpci_msix_entry *entry;
     unsigned int offset;
 
     *data = ~0UL;
 
+    read_lock(&d->pci_lock);
+
+    msix = msix_find(d, addr);
     if ( !msix )
+    {
+        read_unlock(&d->pci_lock);
         return X86EMUL_RETRY;
+    }
 
     if ( adjacent_handle(msix, addr) )
-        return adjacent_read(d, msix, addr, len, data);
+    {
+        int rc = adjacent_read(d, msix, addr, len, data);
+
+        read_unlock(&d->pci_lock);
+        return rc;
+    }
 
     if ( !access_allowed(msix->pdev, addr, len) )
+    {
+        read_unlock(&d->pci_lock);
         return X86EMUL_OKAY;
+    }
 
     spin_lock(&msix->pdev->vpci->lock);
     entry = get_entry(msix, addr);
@@ -404,6 +426,7 @@ static int cf_check msix_read(
         break;
     }
     spin_unlock(&msix->pdev->vpci->lock);
+    read_unlock(&d->pci_lock);
 
     return X86EMUL_OKAY;
 }
@@ -491,19 +514,33 @@ static int adjacent_write(const struct domain *d, const struct vpci_msix *msix,
 static int cf_check msix_write(
     struct vcpu *v, unsigned long addr, unsigned int len, unsigned long data)
 {
-    const struct domain *d = v->domain;
-    struct vpci_msix *msix = msix_find(d, addr);
+    struct domain *d = v->domain;
+    struct vpci_msix *msix;
     struct vpci_msix_entry *entry;
     unsigned int offset;
 
+    read_lock(&d->pci_lock);
+
+    msix = msix_find(d, addr);
     if ( !msix )
+    {
+        read_unlock(&d->pci_lock);
         return X86EMUL_RETRY;
+    }
 
     if ( adjacent_handle(msix, addr) )
-        return adjacent_write(d, msix, addr, len, data);
+    {
+        int rc = adjacent_write(d, msix, addr, len, data);
+
+        read_unlock(&d->pci_lock);
+        return rc;
+    }
 
     if ( !access_allowed(msix->pdev, addr, len) )
+    {
+        read_unlock(&d->pci_lock);
         return X86EMUL_OKAY;
+    }
 
     spin_lock(&msix->pdev->vpci->lock);
     entry = get_entry(msix, addr);
@@ -579,6 +616,7 @@ static int cf_check msix_write(
         break;
     }
     spin_unlock(&msix->pdev->vpci->lock);
+    read_unlock(&d->pci_lock);
 
     return X86EMUL_OKAY;
 }
diff --git a/xen/drivers/vpci/vpci.c b/xen/drivers/vpci/vpci.c
index 72ef277c4f8e..475272b173f3 100644
--- a/xen/drivers/vpci/vpci.c
+++ b/xen/drivers/vpci/vpci.c
@@ -42,6 +42,8 @@ extern vpci_register_init_t *const __end_vpci_array[];
 
 void vpci_remove_device(struct pci_dev *pdev)
 {
+    ASSERT(rw_is_write_locked(&pdev->domain->pci_lock));
+
     if ( !has_vpci(pdev->domain) || !pdev->vpci )
         return;
 
@@ -77,6 +79,8 @@ int vpci_add_handlers(struct pci_dev *pdev)
     const unsigned long *ro_map;
     int rc = 0;
 
+    ASSERT(rw_is_write_locked(&pdev->domain->pci_lock));
+
     if ( !has_vpci(pdev->domain) )
         return 0;
 
@@ -361,7 +365,7 @@ static uint32_t merge_result(uint32_t data, uint32_t new, unsigned int size,
 
 uint32_t vpci_read(pci_sbdf_t sbdf, unsigned int reg, unsigned int size)
 {
-    const struct domain *d = current->domain;
+    struct domain *d = current->domain;
     const struct pci_dev *pdev;
     const struct vpci_register *r;
     unsigned int data_offset = 0;
@@ -376,12 +380,18 @@ uint32_t vpci_read(pci_sbdf_t sbdf, unsigned int reg, unsigned int size)
     /*
      * Find the PCI dev matching the address, which for hwdom also requires
      * consulting DomXEN.  Passthrough everything that's not trapped.
+     * If this is hwdom and the device is assigned to DomXEN, acquiring hwdom's
+     * pci_lock is sufficient.
      */
+    read_lock(&d->pci_lock);
     pdev = pci_get_pdev(d, sbdf);
     if ( !pdev && is_hardware_domain(d) )
         pdev = pci_get_pdev(dom_xen, sbdf);
     if ( !pdev || !pdev->vpci )
+    {
+        read_unlock(&d->pci_lock);
         return vpci_read_hw(sbdf, reg, size);
+    }
 
     spin_lock(&pdev->vpci->lock);
 
@@ -428,6 +438,7 @@ uint32_t vpci_read(pci_sbdf_t sbdf, unsigned int reg, unsigned int size)
         ASSERT(data_offset < size);
     }
     spin_unlock(&pdev->vpci->lock);
+    read_unlock(&d->pci_lock);
 
     if ( data_offset < size )
     {
@@ -470,7 +481,7 @@ static void vpci_write_helper(const struct pci_dev *pdev,
 void vpci_write(pci_sbdf_t sbdf, unsigned int reg, unsigned int size,
                 uint32_t data)
 {
-    const struct domain *d = current->domain;
+    struct domain *d = current->domain;
     const struct pci_dev *pdev;
     const struct vpci_register *r;
     unsigned int data_offset = 0;
@@ -484,7 +495,13 @@ void vpci_write(pci_sbdf_t sbdf, unsigned int reg, unsigned int size,
     /*
      * Find the PCI dev matching the address, which for hwdom also requires
      * consulting DomXEN.  Passthrough everything that's not trapped.
+     * If this is hwdom and the device is assigned to DomXEN, acquiring hwdom's
+     * pci_lock is sufficient.
+     *
+     * TODO: We need to take pci_locks in exclusive mode only if we
+     * are modifying BARs, so there is a room for improvement.
      */
+    write_lock(&d->pci_lock);
     pdev = pci_get_pdev(d, sbdf);
     if ( !pdev && is_hardware_domain(d) )
         pdev = pci_get_pdev(dom_xen, sbdf);
@@ -493,6 +510,8 @@ void vpci_write(pci_sbdf_t sbdf, unsigned int reg, unsigned int size,
         /* Ignore writes to read-only devices, which have no ->vpci. */
         const unsigned long *ro_map = pci_get_ro_map(sbdf.seg);
 
+        write_unlock(&d->pci_lock);
+
         if ( !ro_map || !test_bit(sbdf.bdf, ro_map) )
             vpci_write_hw(sbdf, reg, size, data);
         return;
@@ -534,6 +553,7 @@ void vpci_write(pci_sbdf_t sbdf, unsigned int reg, unsigned int size,
         ASSERT(data_offset < size);
     }
     spin_unlock(&pdev->vpci->lock);
+    write_unlock(&d->pci_lock);
 
     if ( data_offset < size )
         /* Tailing gap, write the remaining. */
diff --git a/xen/include/xen/sched.h b/xen/include/xen/sched.h
index 9da91e0e6244..37f5922f3206 100644
--- a/xen/include/xen/sched.h
+++ b/xen/include/xen/sched.h
@@ -462,7 +462,8 @@ struct domain
 #ifdef CONFIG_HAS_PCI
     struct list_head pdev_list;
     /*
-     * pci_lock protects access to pdev_list.
+     * pci_lock protects access to pdev_list. pci_lock also protects pdev->vpci
+     * structure from being removed.
      *
      * Any user *reading* from pdev_list, or from devices stored in pdev_list,
      * should hold either pcidevs_lock() or pci_lock in read mode. Optionally,

base-commit: c2ce3466472e9c9eda79f5dc98eb701bc6fdba20
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Mon Jan 15 19:44:22 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 15 Jan 2024 19:44:22 +0000
Received: from list by lists.xenproject.org with outflank-mailman.667569.1038970 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPSsg-0000tG-Pd; Mon, 15 Jan 2024 19:44:22 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 667569.1038970; Mon, 15 Jan 2024 19:44:22 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPSsg-0000t9-Mk; Mon, 15 Jan 2024 19:44:22 +0000
Received: by outflank-mailman (input) for mailman id 667569;
 Mon, 15 Jan 2024 19:44:21 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=ghqi=IZ=amd.com=Stewart.Hildebrand@srs-se1.protection.inumbo.net>)
 id 1rPSsf-0000sz-Pg
 for xen-devel@lists.xenproject.org; Mon, 15 Jan 2024 19:44:21 +0000
Received: from NAM12-DM6-obe.outbound.protection.outlook.com
 (mail-dm6nam12on20601.outbound.protection.outlook.com
 [2a01:111:f403:2417::601])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 798ea348-b3de-11ee-98f1-6d05b1d4d9a1;
 Mon, 15 Jan 2024 20:44:20 +0100 (CET)
Received: from BYAPR08CA0019.namprd08.prod.outlook.com (2603:10b6:a03:100::32)
 by MW6PR12MB8914.namprd12.prod.outlook.com (2603:10b6:303:244::12)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7181.21; Mon, 15 Jan
 2024 19:44:16 +0000
Received: from SJ5PEPF000001C8.namprd05.prod.outlook.com
 (2603:10b6:a03:100:cafe::a8) by BYAPR08CA0019.outlook.office365.com
 (2603:10b6:a03:100::32) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7181.23 via Frontend
 Transport; Mon, 15 Jan 2024 19:44:16 +0000
Received: from SATLEXMB03.amd.com (165.204.84.17) by
 SJ5PEPF000001C8.mail.protection.outlook.com (10.167.242.36) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.7202.16 via Frontend Transport; Mon, 15 Jan 2024 19:44:16 +0000
Received: from SATLEXMB06.amd.com (10.181.40.147) by SATLEXMB03.amd.com
 (10.181.40.144) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.34; Mon, 15 Jan
 2024 13:44:15 -0600
Received: from SATLEXMB03.amd.com (10.181.40.144) by SATLEXMB06.amd.com
 (10.181.40.147) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.34; Mon, 15 Jan
 2024 13:44:15 -0600
Received: from ubuntu.mshome.net (10.180.168.240) by SATLEXMB03.amd.com
 (10.181.40.144) with Microsoft SMTP Server id 15.1.2507.34 via Frontend
 Transport; Mon, 15 Jan 2024 13:44:14 -0600
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 798ea348-b3de-11ee-98f1-6d05b1d4d9a1
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=ofVsGVLWLsReKqwZUsypwDlX9/WuJxQk+Ih2nq9hPUDhUwo4ge1LHXK8D9/qts1aL4n5hwYjT8s1nSbugs1+wktr0nUS8lhrT5Sk3XXtdpwhA0reeiCpai+fXLbvocy0b0nsxlnwlVONCGzzHT20cF/qdmRYgFMXRdqUFxOMrSTZgQEUjVp4zkEVpYbTqCusdAVXkzYQ4qJg8U+Pvg4A6NIyVFtehBG9QzXZz00UDmDphFWJpuknDBiBG9UcuYMUDc3a+j9XUr4fD5Cf/Hqy9gcqWAJyUU7QBKWJWxRLaIWn/PyBV09uWUvZYLk9iM99YTqg2zTNszECdoF+uNN0vg==
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=9Z4G+pzzdeDmxHFFkyrx9S133UKXFqt/elxoYAtsP0U=;
 b=Hb9E2cNGBxnEpuHFN6PcyR9NplsHkuQ9bLiFyK66+/UFB91ArUh5725S57tb52JPqdk2XmBLEJ3IyKOPBeYnR1+W8mkpfBIsZFbfo5wsy0VoyPq6WgtI/Flh0JSiRFc6PMbBsLwzphrniPG8bIkike22qDNNWGMFQ0jOoRZ7onDhS+BPr2kpO9xwcQKmEt1n28JCnqCJ49Y3f9Vje9uThdfeUvCzkSLUwJjR8YCUoNr/JOr9ZUymOHTDL+Jz9Dm4RfQNMR6j7GR/rcI+sHALMl7nzNVvzGtA22+x4U4sICFjEE/WmBY/uU88CvPcSN+f4EX9MxjjWykEfaU2uOnSlw==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=lists.xenproject.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)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=9Z4G+pzzdeDmxHFFkyrx9S133UKXFqt/elxoYAtsP0U=;
 b=PiShTP0sjNVN6PcOfJQY2nAqcGYVhte+1G8yYXRHSy6OzieZ0q61BYEyNCQpf0pVFeGfd+sh0GsK7TtJse+d3zxaLuL4ugasWLBmgCVwlzJRNI2N9c9A28x0RJja47e7vFlF40mE2O0cL82GoI5knNG6xamTMShISHnQR1xRWT8=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=SATLEXMB03.amd.com; pr=C
From: Stewart Hildebrand <stewart.hildebrand@amd.com>
To: <xen-devel@lists.xenproject.org>
CC: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>, "Daniel P.
 Smith" <dpsmith@apertussolutions.com>, Volodymyr Babchuk
	<volodymyr_babchuk@epam.com>, Stewart Hildebrand <stewart.hildebrand@amd.com>
Subject: [PATCH v12.2 09/15] vpci/header: program p2m with guest BAR view
Date: Mon, 15 Jan 2024 14:44:05 -0500
Message-ID: <20240115194406.45711-1-stewart.hildebrand@amd.com>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20240109215145.430207-10-stewart.hildebrand@amd.com>
References: <20240109215145.430207-1-stewart.hildebrand@amd.com> <20240109215145.430207-10-stewart.hildebrand@amd.com>
MIME-Version: 1.0
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: SJ5PEPF000001C8:EE_|MW6PR12MB8914:EE_
X-MS-Office365-Filtering-Correlation-Id: 052da1b1-7c5d-4086-0c5a-08dc16025b8a
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam: BCL:0;
X-Microsoft-Antispam-Message-Info:
	H0+QSIpG1+44vlsDcXUcuCMhLGCNpazaZpFsNx0dQqLOFmqEdSPc7oCNvhezavaUE/c1WtD3q7Yn5MU0MhSNvJwrEN6aLLP46w12k/Pjk5gCUIV0aVWPNFJpM/j1X6UhN7+prjQoIKFw0AH852BleI/GRQZcl3LnylTnPYPleRgCr5PcMx4SAbxWT1t6DGs2qmuQ9pBNCuvpanCnENnP9u5tguNkvQsZEzcg7G2xbAF61GDc2B5pLLE87eUXcqcqBA4LC0J5Vw2e8Ts1MPeR34WreI4aMnAaZczXFbnh4eZPdp2U9E0V3VILl5MiMO/aVplJ/qfr1ctNJ9QmFpdFkQsA0H4Bzjq8CUH+Di2ZVpUEKhE3Q426FNXcQ8jMORDAj9Xs9fVMj/ReGkWrx39zrt/5LOvVZR4nZg/OHBb+zVe//LXYFw+Uj3ThpG5QnsROlMHa2s8pAatzef7gOJxh0nsqro6rymKIW1XUxvpNVVhgfGi40E0wvrR/p7h3s4csrkIze1ldZUATrPuUkiDALeRXyfq2/q1+AdHJ796nyx/4f3DvxepvWlGWPFjsR+tQWF3pnrSaFcgQlYuQFs+0XIyKWsNUBp8n1Qyh4TZ9HwPIvy/F+cM5RVC20OtvmXFqkFSl/0rrUtvdbi9OeoOuWiIJdCfeV5vs0xMH9YibRO6doKu6FutZoa+CWyysiMuHElkdcWjpcoMHkTTFgJcDGoTPnwDKBJKvFGT4jvDiDZPYyt5spziRORaG+v9qrscZoDTHvvBFZb+JIzBQ91yhkRLKm6QcNdE2HmejeINtvZhEfyMSEYqbwfTc/APCslHJ
X-Forefront-Antispam-Report:
	CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB03.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230031)(4636009)(39860400002)(346002)(396003)(376002)(136003)(230173577357003)(230922051799003)(230273577357003)(186009)(82310400011)(451199024)(1800799012)(64100799003)(40470700004)(46966006)(36840700001)(478600001)(8676002)(426003)(47076005)(36860700001)(36756003)(356005)(86362001)(41300700001)(4326008)(44832011)(6916009)(82740400003)(83380400001)(81166007)(316002)(70586007)(8936002)(54906003)(5660300002)(2906002)(2616005)(70206006)(6666004)(336012)(1076003)(30864003)(26005)(40480700001)(40460700003)(36900700001);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Jan 2024 19:44:16.0037
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 052da1b1-7c5d-4086-0c5a-08dc16025b8a
X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB03.amd.com]
X-MS-Exchange-CrossTenant-AuthSource:
	SJ5PEPF000001C8.namprd05.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW6PR12MB8914

From: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>

Take into account guest's BAR view and program its p2m accordingly:
gfn is guest's view of the BAR and mfn is the physical BAR value.
This way hardware domain sees physical BAR values and guest sees
emulated ones.

Hardware domain continues getting the BARs identity mapped, while for
domUs the BARs are mapped at the requested guest address without
modifying the BAR address in the device PCI config space.

Signed-off-by: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>
Signed-off-by: Volodymyr Babchuk <volodymyr_babchuk@epam.com>
Signed-off-by: Stewart Hildebrand <stewart.hildebrand@amd.com>
Reviewed-by: Roger Pau Monné <roger.pau@citrix.com>
---
In v12.2:
- Slightly tweak print format in modify_bars()
In v12.1:
- ASSERT(rangeset_is_empty()) in modify_bars()
- Fixup print format in modify_bars()
- Make comment single line in bar_write()
- Add Roger's R-b
In v12:
- Update guest_addr in rom_write()
- Use unsigned long for start_mfn and map_mfn to reduce mfn_x() calls
- Use existing vmsix_table_*() functions
- Change vmsix_table_base() to use .guest_addr
In v11:
- Add vmsix_guest_table_addr() and vmsix_guest_table_base() functions
  to access guest's view of the VMSIx tables.
- Use MFN (not GFN) to check access permissions
- Move page offset check to this patch
- Call rangeset_remove_range() with correct parameters
In v10:
- Moved GFN variable definition outside the loop in map_range()
- Updated printk error message in map_range()
- Now BAR address is always stored in bar->guest_addr, even for
  HW dom, this removes bunch of ugly is_hwdom() checks in modify_bars()
- vmsix_table_base() now uses .guest_addr instead of .addr
In v9:
- Extended the commit message
- Use bar->guest_addr in modify_bars
- Extended printk error message in map_range
- Moved map_data initialization so .bar can be initialized during declaration
Since v5:
- remove debug print in map_range callback
- remove "identity" from the debug print
Since v4:
- moved start_{gfn|mfn} calculation into map_range
- pass vpci_bar in the map_data instead of start_{gfn|mfn}
- s/guest_addr/guest_reg
Since v3:
- updated comment (Roger)
- removed gfn_add(map->start_gfn, rc); which is wrong
- use v->domain instead of v->vpci.pdev->domain
- removed odd e.g. in comment
- s/d%d/%pd in altered code
- use gdprintk for map/unmap logs
Since v2:
- improve readability for data.start_gfn and restructure ?: construct
Since v1:
 - s/MSI/MSI-X in comments
---
 xen/drivers/vpci/header.c | 80 ++++++++++++++++++++++++++++++---------
 xen/include/xen/vpci.h    |  3 +-
 2 files changed, 65 insertions(+), 18 deletions(-)

diff --git a/xen/drivers/vpci/header.c b/xen/drivers/vpci/header.c
index feccd070ddd0..8483404c5e91 100644
--- a/xen/drivers/vpci/header.c
+++ b/xen/drivers/vpci/header.c
@@ -34,6 +34,7 @@
 
 struct map_data {
     struct domain *d;
+    const struct vpci_bar *bar;
     bool map;
 };
 
@@ -41,13 +42,24 @@ static int cf_check map_range(
     unsigned long s, unsigned long e, void *data, unsigned long *c)
 {
     const struct map_data *map = data;
+    /* Start address of the BAR as seen by the guest. */
+    unsigned long start_gfn = PFN_DOWN(map->bar->guest_addr);
+    /* Physical start address of the BAR. */
+    unsigned long start_mfn = PFN_DOWN(map->bar->addr);
     int rc;
 
     for ( ; ; )
     {
         unsigned long size = e - s + 1;
+        /*
+         * Ranges to be mapped don't always start at the BAR start address, as
+         * there can be holes or partially consumed ranges. Account for the
+         * offset of the current address from the BAR start.
+         */
+        unsigned long map_mfn = start_mfn + s - start_gfn;
+        unsigned long m_end = map_mfn + size - 1;
 
-        if ( !iomem_access_permitted(map->d, s, e) )
+        if ( !iomem_access_permitted(map->d, map_mfn, m_end) )
         {
             printk(XENLOG_G_WARNING
                    "%pd denied access to MMIO range [%#lx, %#lx]\n",
@@ -55,7 +67,8 @@ static int cf_check map_range(
             return -EPERM;
         }
 
-        rc = xsm_iomem_mapping(XSM_HOOK, map->d, s, e, map->map);
+        rc = xsm_iomem_mapping(XSM_HOOK, map->d, map_mfn, m_end,
+                               map->map);
         if ( rc )
         {
             printk(XENLOG_G_WARNING
@@ -73,8 +86,8 @@ static int cf_check map_range(
          * - {un}map_mmio_regions doesn't support preemption.
          */
 
-        rc = map->map ? map_mmio_regions(map->d, _gfn(s), size, _mfn(s))
-                      : unmap_mmio_regions(map->d, _gfn(s), size, _mfn(s));
+        rc = map->map ? map_mmio_regions(map->d, _gfn(s), size, _mfn(map_mfn))
+                      : unmap_mmio_regions(map->d, _gfn(s), size, _mfn(map_mfn));
         if ( rc == 0 )
         {
             *c += size;
@@ -83,8 +96,9 @@ static int cf_check map_range(
         if ( rc < 0 )
         {
             printk(XENLOG_G_WARNING
-                   "Failed to identity %smap [%lx, %lx] for d%d: %d\n",
-                   map->map ? "" : "un", s, e, map->d->domain_id, rc);
+                   "Failed to %smap [%lx %lx] -> [%lx %lx] for %pd: %d\n",
+                   map->map ? "" : "un", s, e, map_mfn,
+                   map_mfn + size, map->d, rc);
             break;
         }
         ASSERT(rc < size);
@@ -163,10 +177,6 @@ static void modify_decoding(const struct pci_dev *pdev, uint16_t cmd,
 bool vpci_process_pending(struct vcpu *v)
 {
     struct pci_dev *pdev = v->vpci.pdev;
-    struct map_data data = {
-        .d = v->domain,
-        .map = v->vpci.cmd & PCI_COMMAND_MEMORY,
-    };
     struct vpci_header *header = NULL;
     unsigned int i;
 
@@ -186,6 +196,11 @@ bool vpci_process_pending(struct vcpu *v)
     for ( i = 0; i < ARRAY_SIZE(header->bars); i++ )
     {
         struct vpci_bar *bar = &header->bars[i];
+        struct map_data data = {
+            .d = v->domain,
+            .map = v->vpci.cmd & PCI_COMMAND_MEMORY,
+            .bar = bar,
+        };
         int rc;
 
         if ( rangeset_is_empty(bar->mem) )
@@ -236,7 +251,6 @@ bool vpci_process_pending(struct vcpu *v)
 static int __init apply_map(struct domain *d, const struct pci_dev *pdev,
                             uint16_t cmd)
 {
-    struct map_data data = { .d = d, .map = true };
     struct vpci_header *header = &pdev->vpci->header;
     int rc = 0;
     unsigned int i;
@@ -246,6 +260,7 @@ static int __init apply_map(struct domain *d, const struct pci_dev *pdev,
     for ( i = 0; i < ARRAY_SIZE(header->bars); i++ )
     {
         struct vpci_bar *bar = &header->bars[i];
+        struct map_data data = { .d = d, .map = true, .bar = bar };
 
         if ( rangeset_is_empty(bar->mem) )
             continue;
@@ -311,12 +326,16 @@ static int modify_bars(const struct pci_dev *pdev, uint16_t cmd, bool rom_only)
      * First fill the rangesets with the BAR of this device or with the ROM
      * BAR only, depending on whether the guest is toggling the memory decode
      * bit of the command register, or the enable bit of the ROM BAR register.
+     *
+     * For non-hardware domain we use guest physical addresses.
      */
     for ( i = 0; i < ARRAY_SIZE(header->bars); i++ )
     {
         struct vpci_bar *bar = &header->bars[i];
         unsigned long start = PFN_DOWN(bar->addr);
         unsigned long end = PFN_DOWN(bar->addr + bar->size - 1);
+        unsigned long start_guest = PFN_DOWN(bar->guest_addr);
+        unsigned long end_guest = PFN_DOWN(bar->guest_addr + bar->size - 1);
 
         if ( !bar->mem )
             continue;
@@ -336,11 +355,26 @@ static int modify_bars(const struct pci_dev *pdev, uint16_t cmd, bool rom_only)
             continue;
         }
 
-        rc = rangeset_add_range(bar->mem, start, end);
+        ASSERT(rangeset_is_empty(bar->mem));
+
+        /*
+         * Make sure that the guest set address has the same page offset
+         * as the physical address on the host or otherwise things won't work as
+         * expected.
+         */
+        if ( PAGE_OFFSET(bar->guest_addr) != PAGE_OFFSET(bar->addr) )
+        {
+            gprintk(XENLOG_G_WARNING,
+                    "%pp: can't map BAR%u - offset mismatch: %#lx vs %#lx\n",
+                    &pdev->sbdf, i, bar->guest_addr, bar->addr);
+            return -EINVAL;
+        }
+
+        rc = rangeset_add_range(bar->mem, start_guest, end_guest);
         if ( rc )
         {
             printk(XENLOG_G_WARNING "Failed to add [%lx, %lx]: %d\n",
-                   start, end, rc);
+                   start_guest, end_guest, rc);
             return rc;
         }
 
@@ -352,12 +386,12 @@ static int modify_bars(const struct pci_dev *pdev, uint16_t cmd, bool rom_only)
             if ( rangeset_is_empty(prev_bar->mem) )
                 continue;
 
-            rc = rangeset_remove_range(prev_bar->mem, start, end);
+            rc = rangeset_remove_range(prev_bar->mem, start_guest, end_guest);
             if ( rc )
             {
                 gprintk(XENLOG_WARNING,
                        "%pp: failed to remove overlapping range [%lx, %lx]: %d\n",
-                        &pdev->sbdf, start, end, rc);
+                        &pdev->sbdf, start_guest, end_guest, rc);
                 return rc;
             }
         }
@@ -425,8 +459,8 @@ static int modify_bars(const struct pci_dev *pdev, uint16_t cmd, bool rom_only)
             for ( i = 0; i < ARRAY_SIZE(tmp->vpci->header.bars); i++ )
             {
                 const struct vpci_bar *remote_bar = &tmp->vpci->header.bars[i];
-                unsigned long start = PFN_DOWN(remote_bar->addr);
-                unsigned long end = PFN_DOWN(remote_bar->addr +
+                unsigned long start = PFN_DOWN(remote_bar->guest_addr);
+                unsigned long end = PFN_DOWN(remote_bar->guest_addr +
                                              remote_bar->size - 1);
 
                 if ( !remote_bar->enabled )
@@ -513,6 +547,8 @@ static void cf_check bar_write(
     struct vpci_bar *bar = data;
     bool hi = false;
 
+    ASSERT(is_hardware_domain(pdev->domain));
+
     if ( bar->type == VPCI_BAR_MEM64_HI )
     {
         ASSERT(reg > PCI_BASE_ADDRESS_0);
@@ -543,6 +579,8 @@ static void cf_check bar_write(
      */
     bar->addr &= ~(0xffffffffULL << (hi ? 32 : 0));
     bar->addr |= (uint64_t)val << (hi ? 32 : 0);
+    /* Update guest address, so hardware domain BAR is identity mapped. */
+    bar->guest_addr = bar->addr;
 
     /* Make sure Xen writes back the same value for the BAR RO bits. */
     if ( !hi )
@@ -639,11 +677,14 @@ static void cf_check rom_write(
     }
 
     if ( !rom->enabled )
+    {
         /*
          * If the ROM BAR is not mapped update the address field so the
          * correct address is mapped into the p2m.
          */
         rom->addr = val & PCI_ROM_ADDRESS_MASK;
+        rom->guest_addr = rom->addr;
+    }
 
     if ( !header->bars_mapped || rom->enabled == new_enabled )
     {
@@ -667,7 +708,10 @@ static void cf_check rom_write(
         return;
 
     if ( !new_enabled )
+    {
         rom->addr = val & PCI_ROM_ADDRESS_MASK;
+        rom->guest_addr = rom->addr;
+    }
 }
 
 static int bar_add_rangeset(const struct pci_dev *pdev, struct vpci_bar *bar,
@@ -862,6 +906,7 @@ static int cf_check init_header(struct pci_dev *pdev)
         }
 
         bars[i].addr = addr;
+        bars[i].guest_addr = addr;
         bars[i].size = size;
         bars[i].prefetchable = val & PCI_BASE_ADDRESS_MEM_PREFETCH;
 
@@ -884,6 +929,7 @@ static int cf_check init_header(struct pci_dev *pdev)
         rom->type = VPCI_BAR_ROM;
         rom->size = size;
         rom->addr = addr;
+        rom->guest_addr = addr;
         header->rom_enabled = pci_conf_read32(pdev->sbdf, rom_reg) &
                               PCI_ROM_ADDRESS_ENABLE;
 
diff --git a/xen/include/xen/vpci.h b/xen/include/xen/vpci.h
index 817ee9ee7300..e89c571890b2 100644
--- a/xen/include/xen/vpci.h
+++ b/xen/include/xen/vpci.h
@@ -216,7 +216,8 @@ int vpci_msix_arch_print(const struct vpci_msix *msix);
  */
 static inline paddr_t vmsix_table_base(const struct vpci *vpci, unsigned int nr)
 {
-    return vpci->header.bars[vpci->msix->tables[nr] & PCI_MSIX_BIRMASK].addr;
+    return vpci->header.bars[vpci->msix->tables[nr] &
+                             PCI_MSIX_BIRMASK].guest_addr;
 }
 
 static inline paddr_t vmsix_table_addr(const struct vpci *vpci, unsigned int nr)
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Mon Jan 15 20:09:09 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 15 Jan 2024 20:09:09 +0000
Received: from list by lists.xenproject.org with outflank-mailman.667575.1038980 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPTGQ-0005t3-Nv; Mon, 15 Jan 2024 20:08:54 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 667575.1038980; Mon, 15 Jan 2024 20:08:54 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPTGQ-0005sw-Ky; Mon, 15 Jan 2024 20:08:54 +0000
Received: by outflank-mailman (input) for mailman id 667575;
 Mon, 15 Jan 2024 20:08:53 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rPTGP-0005sm-13; Mon, 15 Jan 2024 20:08:53 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rPTGO-0003Ag-Lu; Mon, 15 Jan 2024 20:08:52 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rPTGO-0008Kd-Dz; Mon, 15 Jan 2024 20:08:52 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rPTGO-0001wi-8r; Mon, 15 Jan 2024 20:08:52 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=cbFUBkARNreVKinGkIzAjkwOi4Blz1owxJylmSbOu1I=; b=D+qvsBPxMncMrzXZTc5TuSaWb1
	mkvVgwh+XyBj/aav3xPA5sospHzgBBUyNrhuPTWDbHGZEnOq0h+ByfS1JoS4D+MsN0BGlKjwx5/x3
	D9GXoUCsuD5bcxkxyajGoUyGyl2CPpWK/ySh/tBqRLCkMU6U/a5sPlagoWQsgBqXZOlw=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184361-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [ovmf test] 184361: all pass - PUSHED
X-Osstest-Versions-This:
    ovmf=82e149f2bf796a5a0492d764897ada261d266653
X-Osstest-Versions-That:
    ovmf=195e59bd0c60523caa415f429517e46ff7065600
From: osstest service owner <osstest-admin@xenproject.org>
Date: Mon, 15 Jan 2024 20:08:52 +0000

flight 184361 ovmf real [real]
http://logs.test-lab.xenproject.org/osstest/logs/184361/

Perfect :-)
All tests in this flight passed as required
version targeted for testing:
 ovmf                 82e149f2bf796a5a0492d764897ada261d266653
baseline version:
 ovmf                 195e59bd0c60523caa415f429517e46ff7065600

Last test of basis   184356  2024-01-15 12:11:01 Z    0 days
Testing same since   184361  2024-01-15 16:12:51 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Gerd Hoffmann <kraxel@redhat.com>
  Thomas Barrett <tbarrett@crusoeenergy.com>

jobs:
 build-amd64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-amd64-amd64-xl-qemuu-ovmf-amd64                         pass    
 test-amd64-i386-xl-qemuu-ovmf-amd64                          pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Pushing revision :

To xenbits.xen.org:/home/xen/git/osstest/ovmf.git
   195e59bd0c..82e149f2bf  82e149f2bf796a5a0492d764897ada261d266653 -> xen-tested-master


From xen-devel-bounces@lists.xenproject.org Mon Jan 15 23:45:20 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 15 Jan 2024 23:45:20 +0000
Received: from list by lists.xenproject.org with outflank-mailman.667581.1038990 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPWdZ-0002ic-NR; Mon, 15 Jan 2024 23:45:01 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 667581.1038990; Mon, 15 Jan 2024 23:45:01 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPWdZ-0002iV-KB; Mon, 15 Jan 2024 23:45:01 +0000
Received: by outflank-mailman (input) for mailman id 667581;
 Mon, 15 Jan 2024 23:45:00 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rPWdY-0002iL-1N; Mon, 15 Jan 2024 23:45:00 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rPWdX-0007BO-Qo; Mon, 15 Jan 2024 23:44:59 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rPWdX-0003GX-GU; Mon, 15 Jan 2024 23:44:59 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rPWdX-0008DR-G2; Mon, 15 Jan 2024 23:44:59 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=id03qKJIOfLY6NZvmEXvBhDsazH1bE3YKt7/gxRAagE=; b=GltP5zNjgsKY3PIpP9CpEM2t1E
	RA59ECBwtOPMm2h/164butvWZ3WKwY/MSeZtZ6DpuJq7vzns5WzfZTmGPRJdP4k9R8Ixgt/F6a5ei
	uxPleerGW0uvQzD7KsuHZZqSmPif2rUkoRz2J4SA7q4QJxskmlLUzW12mqOss87w1A0I=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184364-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [ovmf test] 184364: all pass - PUSHED
X-Osstest-Versions-This:
    ovmf=7c2757c298b40f5d7bad8da3faff7bb9c47ce2ae
X-Osstest-Versions-That:
    ovmf=82e149f2bf796a5a0492d764897ada261d266653
From: osstest service owner <osstest-admin@xenproject.org>
Date: Mon, 15 Jan 2024 23:44:59 +0000

flight 184364 ovmf real [real]
http://logs.test-lab.xenproject.org/osstest/logs/184364/

Perfect :-)
All tests in this flight passed as required
version targeted for testing:
 ovmf                 7c2757c298b40f5d7bad8da3faff7bb9c47ce2ae
baseline version:
 ovmf                 82e149f2bf796a5a0492d764897ada261d266653

Last test of basis   184361  2024-01-15 16:12:51 Z    0 days
Testing same since   184364  2024-01-15 20:12:55 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Suqiang Ren <suqiangx.ren@intel.com>

jobs:
 build-amd64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-amd64-amd64-xl-qemuu-ovmf-amd64                         pass    
 test-amd64-i386-xl-qemuu-ovmf-amd64                          pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Pushing revision :

To xenbits.xen.org:/home/xen/git/osstest/ovmf.git
   82e149f2bf..7c2757c298  7c2757c298b40f5d7bad8da3faff7bb9c47ce2ae -> xen-tested-master


From xen-devel-bounces@lists.xenproject.org Tue Jan 16 00:02:35 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 16 Jan 2024 00:02:35 +0000
Received: from list by lists.xenproject.org with outflank-mailman.667589.1039000 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPWuT-000674-2F; Tue, 16 Jan 2024 00:02:29 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 667589.1039000; Tue, 16 Jan 2024 00:02:29 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPWuS-00066x-VZ; Tue, 16 Jan 2024 00:02:28 +0000
Received: by outflank-mailman (input) for mailman id 667589;
 Tue, 16 Jan 2024 00:02:27 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rPWuQ-00066l-Uk; Tue, 16 Jan 2024 00:02:26 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rPWuQ-0008AZ-JC; Tue, 16 Jan 2024 00:02:26 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rPWuQ-0004Ls-4t; Tue, 16 Jan 2024 00:02:26 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rPWuQ-0007Sn-4Z; Tue, 16 Jan 2024 00:02:26 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=UEGbY8ZI3z4yOyHrHYrwGLo0+YEUwAgtpflVLV+ojhQ=; b=OR07fn1QffpfdhpMYAnO6ceCi+
	/RC5Jqt4a9XZ+ftABDcaVPrkRUPCZiF8a7cIDwRtdWFyQN9wP1L2krj+PhKOeX6VenFf1YsyZBYYz
	39yv/khuuIZq/DvK9VHGKSMqBGlmIDFSd9iAp+PyuDNMn4oQS9/YEFR2NwJDmoQo461k=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184363-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [xen-unstable-smoke test] 184363: tolerable all pass - PUSHED
X-Osstest-Failures:
    xen-unstable-smoke:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    xen-unstable-smoke:test-arm64-arm64-xl-xsm:migrate-support-check:fail:nonblocking
    xen-unstable-smoke:test-arm64-arm64-xl-xsm:saverestore-support-check:fail:nonblocking
    xen-unstable-smoke:test-armhf-armhf-xl:migrate-support-check:fail:nonblocking
    xen-unstable-smoke:test-armhf-armhf-xl:saverestore-support-check:fail:nonblocking
X-Osstest-Versions-This:
    xen=f3f6c500e2dbd23af77c207e2cf4b496fffa1b0d
X-Osstest-Versions-That:
    xen=c2ce3466472e9c9eda79f5dc98eb701bc6fdba20
From: osstest service owner <osstest-admin@xenproject.org>
Date: Tue, 16 Jan 2024 00:02:26 +0000

flight 184363 xen-unstable-smoke real [real]
http://logs.test-lab.xenproject.org/osstest/logs/184363/

Failures :-/ but no regressions.

Tests which did not succeed, but are not blocking:
 test-amd64-amd64-libvirt     15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-xsm      15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-xsm      16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl          15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          16 saverestore-support-check    fail   never pass

version targeted for testing:
 xen                  f3f6c500e2dbd23af77c207e2cf4b496fffa1b0d
baseline version:
 xen                  c2ce3466472e9c9eda79f5dc98eb701bc6fdba20

Last test of basis   184355  2024-01-15 12:02:10 Z    0 days
Testing same since   184363  2024-01-15 20:02:10 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Michal Orzel <michal.orzel@amd.com>

jobs:
 build-arm64-xsm                                              pass    
 build-amd64                                                  pass    
 build-armhf                                                  pass    
 build-amd64-libvirt                                          pass    
 test-armhf-armhf-xl                                          pass    
 test-arm64-arm64-xl-xsm                                      pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64                    pass    
 test-amd64-amd64-libvirt                                     pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Pushing revision :

To xenbits.xen.org:/home/xen/git/xen.git
   c2ce346647..f3f6c500e2  f3f6c500e2dbd23af77c207e2cf4b496fffa1b0d -> smoke


From xen-devel-bounces@lists.xenproject.org Tue Jan 16 00:22:28 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 16 Jan 2024 00:22:28 +0000
Received: from list by lists.xenproject.org with outflank-mailman.667597.1039009 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPXDh-0000Zb-Od; Tue, 16 Jan 2024 00:22:21 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 667597.1039009; Tue, 16 Jan 2024 00:22:21 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPXDh-0000ZU-Ls; Tue, 16 Jan 2024 00:22:21 +0000
Received: by outflank-mailman (input) for mailman id 667597;
 Tue, 16 Jan 2024 00:22:20 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=F3xP=I2=gmail.com=simonpatp@srs-se1.protection.inumbo.net>)
 id 1rPXDg-0000ZO-0K
 for xen-devel@lists.xenproject.org; Tue, 16 Jan 2024 00:22:20 +0000
Received: from mail-lj1-x22e.google.com (mail-lj1-x22e.google.com
 [2a00:1450:4864:20::22e])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 4dbcdcb5-b405-11ee-9b0f-b553b5be7939;
 Tue, 16 Jan 2024 01:22:16 +0100 (CET)
Received: by mail-lj1-x22e.google.com with SMTP id
 38308e7fff4ca-2cd1232a2c7so114129761fa.0
 for <xen-devel@lists.xenproject.org>; Mon, 15 Jan 2024 16:22:16 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 4dbcdcb5-b405-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1705364536; x=1705969336; darn=lists.xenproject.org;
        h=cc:to:subject:message-id:date:from:in-reply-to:references
         :mime-version:from:to:cc:subject:date:message-id:reply-to;
        bh=SRV6FI63BfWVD3UMAF3Ly8mu5MEsP/g/8WljO/WcUBk=;
        b=BfuPTC0LNmt8NhCr0m1nPjLwRmz7zvjzTZhIt8iFKY+Bi4TUmx1bJqPmxM/5QoYMG2
         t9UKfHXQ2te6Uj+uRDdcALe3tVjcovObkzj4kpzwAyf8lneaNeCHAQhcfQx9FwhIX0wr
         nzjMN3uGZyKiokfXsWf4X3hKdc+RGwoEDWhIDKZLk3HtY2wMQFAKggFY4M89I2rnRoBA
         DTfw5bha4fTlr9HLAil3UoVWF/5SWSX9Q8o405w8VlvQJ4ahgtvdoD1sblka0PoXNgNK
         9ZOK+IKutjLBDIATb8F6QTLv2oxRXzL32qzKGlIN3Q+bS5zlsxlt1XpWMRPMCuGSXo/m
         Ro8Q==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705364536; x=1705969336;
        h=cc:to:subject:message-id:date:from:in-reply-to:references
         :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id
         :reply-to;
        bh=SRV6FI63BfWVD3UMAF3Ly8mu5MEsP/g/8WljO/WcUBk=;
        b=YON1pN8JcERkwVVbY3jLPo8acZkNCdqn0CllAr40v2bnc2iOYsLNzZc+KomAMsXzQb
         nRNISV3zWRGmmW0lKgvoDiFZ+AXcPMbWux44erKkHOhtUbeNPiCphL1bdvxb8wad1Qro
         XBzu/Pc2RwzW4reTAJcj3zBAzgh9fore2JzV/3WVmo1EtR5yjQmwx09a09vdGBtF32JQ
         rVUCiarv4O2tjgK/ZZbp9aC//W61XL3h+pkX7cXRnzHfbwEa0RcUHR6VnzGmAVDYHAS4
         HZLVRNf3O5GNG5cg8mxIOSVlOOvQlL1fEJBgy0RkG+hEn5M+i9miRLj0ztuXiSKgylSI
         BQJw==
X-Gm-Message-State: AOJu0YzfxZeoxyfeU+C3vHLOvLDavdzLuCmDLaQAyQnwwCIcxJ1ksy6W
	zTnJx6dz1Zk0o0n0OmAP96TzS3or3ERioLpheOMaxqUX
X-Google-Smtp-Source: AGHT+IEgHL9Km9GbVzw/qaZBB19KC8QVVGK8SvMp5UCO0clJYYdwlreeB5gJ41Polr3QJB4Phnw0YsCLdmxqEtVqcG4=
X-Received: by 2002:a2e:b048:0:b0:2cc:c567:e518 with SMTP id
 d8-20020a2eb048000000b002ccc567e518mr2549465ljl.41.1705364535964; Mon, 15 Jan
 2024 16:22:15 -0800 (PST)
MIME-Version: 1.0
References: <CAOCpoWdOH=xGxiQSC1c5Ueb1THxAjH4WiZbCZq-QT+d_KAk3SA@mail.gmail.com>
 <1708c3d7-662a-44bc-b9b3-4ab9f8642d7b@suse.com> <dcaf9d8d-ad5a-4714-936b-79ed0e587f9d@suse.com>
In-Reply-To: <dcaf9d8d-ad5a-4714-936b-79ed0e587f9d@suse.com>
From: Patrick Plenefisch <simonpatp@gmail.com>
Date: Mon, 15 Jan 2024 19:22:04 -0500
Message-ID: <CAOCpoWeowZPuQTeBp9nu8p8CDtE=u++wN_UqRoABZtB57D50Qw@mail.gmail.com>
Subject: Re: E820 memory allocation issue on Threadripper platforms
To: Juergen Gross <jgross@suse.com>
Cc: Jan Beulich <jbeulich@suse.com>, xen-devel@lists.xenproject.org
Content-Type: multipart/mixed; boundary="000000000000610871060f051f79"

--000000000000610871060f051f79
Content-Type: multipart/alternative; boundary="000000000000610870060f051f77"

--000000000000610870060f051f77
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

I managed to set up serial access and saved the output with the requested
flags as the attached logs

Patrick

On Thu, Jan 11, 2024 at 5:13=E2=80=AFAM Juergen Gross <jgross@suse.com> wro=
te:

> On 11.01.24 09:37, Jan Beulich wrote:
> > On 11.01.2024 03:29, Patrick Plenefisch wrote:
> >> Hi,
> >>
> >> I ran into a memory allocation issue, I think. It is the same as
> >> https://github.com/QubesOS/qubes-issues/issues/8791 and I saw at the
> end it
> >> was recommended (by marmarek) that the issue reporter forward the issu=
e
> to
> >> this list. I searched the list, but as I didn't see it in the list
> already,
> >> I'm doing that now.
> >>
> >> Hardware:
> >> I have an AMD Threadripper 7960X on a ASRock TRX50 WS motherboard. The
> >> Qubes reporter had a Threadripper 3970X on an ASUS Prime TRX40-Pro
> >> Motherboard. I saw a 3rd issue report of a similar issue on another
> >> Threadripper, so I think this may be Threadripper-specific.
> >>
> >> Setup:
> >> The QuebesOS reporter was using Qubes Installer.
> >> My install was that I had a fresh install of Debian 12 (no gui), and
> then
> >> did `apt install xen-system-amd64` and rebooted.
> >>
> >> The issue:
> >> Any boot of Xen on the hardware results in a halted machine. When
> >> monitoring the logs with `vga=3D,keep`, we get:
> >>
> >> (XEN) *** Serial input to DOM0 (type 'CTRL-a' three times to switch
> input)
> >> (XEN) Freed 644kB init memory
> >> mapping kernel into physical memory
> >> about to get started=E2=80=A6
> >> xen hypervisor allocated kernel memory conflicts with E820
> >
> > So first of all (the title doesn't say it) this is a Linux Dom0 issue.
> > Whether or not needing addressing in Xen is unknown at this point.
> >
> >> (XEN) Hardware Dom0 halted: halting machine
> >>
> >> None of the settings I or the Qubes reporter have tried have been able
> to
> >> get past this failure.
> >>
> >> I am happy to provide debugging support.
> >
> > Well, the crucial piece of data initially is going to be: What's the
> > E820 map Xen gets to see, what's the E820 map Dom0 gets to see, and
> > what address range is the conflict detected for? The first question
> > is possible to answer by supplying a serial log. The second question
> > likely means adding some debugging code to either Xen or Linux. The
> > answer to third question may be possible to infer from the other
> > data, but would likely be better to obtain explicitly by adjusting /
> > amending the message Linux emits.
>
> The needed information should all be in the hypervisor messages.
>
> The hypervisor is initially presenting a memory map to dom0 which is not
> the
> same as the native memory map. Dom0 tries to rearrange its memory layout =
to
> be compatible with the native memory map.
>
> The seen message ("xen hypervisor allocated kernel memory conflicts with
> E820")
> tells us that the kernel position is conflicting with the native memory m=
ap
> (at least one guest pfn occupied by the kernel would be at a non-RAM
> populated
> location after rearrangement of memory).
>
> In theory it would be possible to cover this case, too, but it would be
> quite
> cumbersome. Right now only the initrd is allowed to conflict with the
> memory map
> (it will be moved in this case), kernel and initial page table conflicts
> are not
> handled.
>
> When I added the conflict handling nearly 10 years ago, there was no
> hardware
> known to have memory holes at addresses which would conflict with Xen's
> initial
> idea of dom0 memory layout.
>
> I can look into this later, but right now I'm just about to go offline
> probably
> until end of January.
>
>
> Juergen
>

--000000000000610870060f051f77
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><div>I managed to set up serial access and saved the outpu=
t with the requested flags as the attached logs</div><div><br></div><div>Pa=
trick<br></div></div><br><div class=3D"gmail_quote"><div dir=3D"ltr" class=
=3D"gmail_attr">On Thu, Jan 11, 2024 at 5:13=E2=80=AFAM Juergen Gross &lt;<=
a href=3D"mailto:jgross@suse.com">jgross@suse.com</a>&gt; wrote:<br></div><=
blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-l=
eft:1px solid rgb(204,204,204);padding-left:1ex">On 11.01.24 09:37, Jan Beu=
lich wrote:<br>
&gt; On 11.01.2024 03:29, Patrick Plenefisch wrote:<br>
&gt;&gt; Hi,<br>
&gt;&gt;<br>
&gt;&gt; I ran into a memory allocation issue, I think. It is the same as<b=
r>
&gt;&gt; <a href=3D"https://github.com/QubesOS/qubes-issues/issues/8791" re=
l=3D"noreferrer" target=3D"_blank">https://github.com/QubesOS/qubes-issues/=
issues/8791</a> and I saw at the end it<br>
&gt;&gt; was recommended (by marmarek) that the issue reporter forward the =
issue to<br>
&gt;&gt; this list. I searched the list, but as I didn&#39;t see it in the =
list already,<br>
&gt;&gt; I&#39;m doing that now.<br>
&gt;&gt;<br>
&gt;&gt; Hardware:<br>
&gt;&gt; I have an AMD Threadripper 7960X on a ASRock TRX50 WS motherboard.=
 The<br>
&gt;&gt; Qubes reporter had a Threadripper 3970X on an ASUS Prime TRX40-Pro=
<br>
&gt;&gt; Motherboard. I saw a 3rd issue report of a similar issue on anothe=
r<br>
&gt;&gt; Threadripper, so I think this may be Threadripper-specific.<br>
&gt;&gt;<br>
&gt;&gt; Setup:<br>
&gt;&gt; The QuebesOS reporter was using Qubes Installer.<br>
&gt;&gt; My install was that I had a fresh install of Debian 12 (no gui), a=
nd then<br>
&gt;&gt; did `apt install xen-system-amd64` and rebooted.<br>
&gt;&gt;<br>
&gt;&gt; The issue:<br>
&gt;&gt; Any boot of Xen on the hardware results in a halted machine. When<=
br>
&gt;&gt; monitoring the logs with `vga=3D,keep`, we get:<br>
&gt;&gt;<br>
&gt;&gt; (XEN) *** Serial input to DOM0 (type &#39;CTRL-a&#39; three times =
to switch input)<br>
&gt;&gt; (XEN) Freed 644kB init memory<br>
&gt;&gt; mapping kernel into physical memory<br>
&gt;&gt; about to get started=E2=80=A6<br>
&gt;&gt; xen hypervisor allocated kernel memory conflicts with E820<br>
&gt; <br>
&gt; So first of all (the title doesn&#39;t say it) this is a Linux Dom0 is=
sue.<br>
&gt; Whether or not needing addressing in Xen is unknown at this point.<br>
&gt; <br>
&gt;&gt; (XEN) Hardware Dom0 halted: halting machine<br>
&gt;&gt;<br>
&gt;&gt; None of the settings I or the Qubes reporter have tried have been =
able to<br>
&gt;&gt; get past this failure.<br>
&gt;&gt;<br>
&gt;&gt; I am happy to provide debugging support.<br>
&gt; <br>
&gt; Well, the crucial piece of data initially is going to be: What&#39;s t=
he<br>
&gt; E820 map Xen gets to see, what&#39;s the E820 map Dom0 gets to see, an=
d<br>
&gt; what address range is the conflict detected for? The first question<br=
>
&gt; is possible to answer by supplying a serial log. The second question<b=
r>
&gt; likely means adding some debugging code to either Xen or Linux. The<br=
>
&gt; answer to third question may be possible to infer from the other<br>
&gt; data, but would likely be better to obtain explicitly by adjusting /<b=
r>
&gt; amending the message Linux emits.<br>
<br>
The needed information should all be in the hypervisor messages.<br>
<br>
The hypervisor is initially presenting a memory map to dom0 which is not th=
e<br>
same as the native memory map. Dom0 tries to rearrange its memory layout to=
<br>
be compatible with the native memory map.<br>
<br>
The seen message (&quot;xen hypervisor allocated kernel memory conflicts wi=
th E820&quot;)<br>
tells us that the kernel position is conflicting with the native memory map=
<br>
(at least one guest pfn occupied by the kernel would be at a non-RAM popula=
ted<br>
location after rearrangement of memory).<br>
<br>
In theory it would be possible to cover this case, too, but it would be qui=
te<br>
cumbersome. Right now only the initrd is allowed to conflict with the memor=
y map<br>
(it will be moved in this case), kernel and initial page table conflicts ar=
e not<br>
handled.<br>
<br>
When I added the conflict handling nearly 10 years ago, there was no hardwa=
re<br>
known to have memory holes at addresses which would conflict with Xen&#39;s=
 initial<br>
idea of dom0 memory layout.<br>
<br>
I can look into this later, but right now I&#39;m just about to go offline =
probably<br>
until end of January.<br>
<br>
<br>
Juergen<br>
</blockquote></div>

--000000000000610870060f051f77--
--000000000000610871060f051f79
Content-Type: text/plain; charset="US-ASCII"; name="XENTHREADRIPPER.log.txt"
Content-Disposition: attachment; filename="XENTHREADRIPPER.log.txt"
Content-Transfer-Encoding: base64
Content-ID: <f_lrflzjdf0>
X-Attachment-Id: f_lrflzjdf0

KFhFTikgWGVuIHZlcnNpb24gNC4xNy4zLXByZSAoRGViaWFuIDQuMTcuMis3Ni1nZTFmOWNiMTZl
Mi0xfmRlYjEydTEpIChwa2cteGVuLWRldmVsQGxpc3RzLmFsaW90aC5kZWJpYW4ub3JnKSAoeDg2
XzY0LWxpbnV4LWdudS1nY2MgKERlYmlhbiAxMi4yLjAtMTQpIDEyLjIuMCkgZGVidWc9biBTYXQg
RGVjICAyIDE2OjU4OjA4IFVUQyAyMDIzCihYRU4pIGJ1aWxkLWlkOiAxOTMyOWNiN2VlZjZjNTFi
YjIxMDQzOTU3OWE3NWMzN2Q0MWJhZTY2CihYRU4pIENvbnNvbGUgb3V0cHV0IGlzIHN5bmNocm9u
b3VzLgooWEVOKSBCb290bG9hZGVyOiBHUlVCIDIuMDYtMTMrZGViMTJ1MQooWEVOKSBDb21tYW5k
IGxpbmU6IHBsYWNlaG9sZGVyIGRvbTBfbWVtPThHLG1heDo4RyBuby1yZWFsLW1vZGUgZWRkPW9m
ZiBsb2dsdmw9YWxsIGU4MjAtdmVyYm9zZT10cnVlIGNvbnNvbGVfdG9fcmluZyBzeW5jX2NvbnNv
bGUgZ3Vlc3RfbG9nbHZsPWFsbCBjb20xPTExNTIwMCw4bjEgY29uc29sZT1jb20xLHZnYQooWEVO
KSBYZW4gaW1hZ2UgbG9hZCBiYXNlIGFkZHJlc3M6IDB4OWY2MDAwMDAKKFhFTikgVmlkZW8gaW5m
b3JtYXRpb246CihYRU4pICBWR0EgaXMgZ3JhcGhpY3MgbW9kZSAyNTYweDE0NDAsIDMyIGJwcAoo
WEVOKSAgVkJFL0REQyBtZXRob2RzOiBub25lOyBFRElEIHRyYW5zZmVyIHRpbWU6IDAgc2Vjb25k
cwooWEVOKSBEaXNjIGluZm9ybWF0aW9uOgooWEVOKSAgRm91bmQgMCBNQlIgc2lnbmF0dXJlcwoo
WEVOKSAgRm91bmQgNiBFREQgaW5mb3JtYXRpb24gc3RydWN0dXJlcwooWEVOKSBDUFUgVmVuZG9y
OiBBTUQsIEZhbWlseSAyNSAoMHgxOSksIE1vZGVsIDI0ICgweDE4KSwgU3RlcHBpbmcgMSAocmF3
IDAwYTEwZjgxKQooWEVOKSBFbmFibGluZyBTdXBlcnZpc29yIFNoYWRvdyBTdGFja3MKKFhFTikg
SW5pdGlhbCBFRkkgUkFNIG1hcDoKKFhFTikgIFswMDAwMDAwMDAwMDAwMDAwLCAwMDAwMDAwMDAw
MDlmZmZmXSAodXNhYmxlKQooWEVOKSAgWzAwMDAwMDAwMDAxMDAwMDAsIDAwMDAwMDAwMDNmZmZm
ZmZdICh1c2FibGUpCihYRU4pICBbMDAwMDAwMDAwNDAwMDAwMCwgMDAwMDAwMDAwNDA0NWZmZl0g
KEFDUEkgTlZTKQooWEVOKSAgWzAwMDAwMDAwMDQwNDYwMDAsIDAwMDAwMDAwMDlhZmVmZmZdICh1
c2FibGUpCihYRU4pICBbMDAwMDAwMDAwOWFmZjAwMCwgMDAwMDAwMDAwOWZmZmZmZl0gKHJlc2Vy
dmVkKQooWEVOKSAgWzAwMDAwMDAwMGEwMDAwMDAsIDAwMDAwMDAwMGFmZmZmZmZdICh1c2FibGUp
CihYRU4pICBbMDAwMDAwMDAwYjAwMDAwMCwgMDAwMDAwMDAwYjAyMGZmZl0gKHJlc2VydmVkKQoo
WEVOKSAgWzAwMDAwMDAwMGIwMjEwMDAsIDAwMDAwMDAwYTA0ZmJmZmZdICh1c2FibGUpCihYRU4p
ICBbMDAwMDAwMDBhMDRmYzAwMCwgMDAwMDAwMDBhNjRmYmZmZl0gKHJlc2VydmVkKQooWEVOKSAg
WzAwMDAwMDAwYTY0ZmMwMDAsIDAwMDAwMDAwYTc0N2VmZmZdIChBQ1BJIGRhdGEpCihYRU4pICBb
MDAwMDAwMDBhNzQ3ZjAwMCwgMDAwMDAwMDBhOTQ3ZWZmZl0gKEFDUEkgTlZTKQooWEVOKSAgWzAw
MDAwMDAwYTk0N2YwMDAsIDAwMDAwMDAwYWRkZmVmZmZdIChyZXNlcnZlZCkKKFhFTikgIFswMDAw
MDAwMGFkZGZmMDAwLCAwMDAwMDAwMGFmZmZhZmZmXSAodXNhYmxlKQooWEVOKSAgWzAwMDAwMDAw
YWZmZmIwMDAsIDAwMDAwMDAwYWZmZmZmZmZdIChyZXNlcnZlZCkKKFhFTikgIFswMDAwMDAwMTAw
MDAwMDAwLCAwMDAwMDA0MDNkYmJmZmZmXSAodXNhYmxlKQooWEVOKSAgWzAwMDAwMDAwMDAwYTAw
MDAsIDAwMDAwMDAwMDAwZmZmZmZdIChyZXNlcnZlZCkKKFhFTikgIFswMDAwMDAwMGIwMDAwMDAw
LCAwMDAwMDAwMGJmZmZmZmZmXSAocmVzZXJ2ZWQpCihYRU4pICBbMDAwMDAwMDBkZjIwMDAwMCwg
MDAwMDAwMDBkZjJmZmZmZl0gKHJlc2VydmVkKQooWEVOKSAgWzAwMDAwMDAwZTAwMDAwMDAsIDAw
MDAwMDAwZWZmZmZmZmZdIChyZXNlcnZlZCkKKFhFTikgIFswMDAwMDAwMGZlYTAwMDAwLCAwMDAw
MDAwMGZlYWZmZmZmXSAocmVzZXJ2ZWQpCihYRU4pICBbMDAwMDAwMDBmZWMwMDAwMCwgMDAwMDAw
MDBmZWMwMGZmZl0gKHJlc2VydmVkKQooWEVOKSAgWzAwMDAwMDAwZmVjMTAwMDAsIDAwMDAwMDAw
ZmVjMTBmZmZdIChyZXNlcnZlZCkKKFhFTikgIFswMDAwMDAwMGZlYzMwMDAwLCAwMDAwMDAwMGZl
YzMwZmZmXSAocmVzZXJ2ZWQpCihYRU4pICBbMDAwMDAwMDBmZWQwMDAwMCwgMDAwMDAwMDBmZWQw
MGZmZl0gKHJlc2VydmVkKQooWEVOKSAgWzAwMDAwMDAwZmVkNDAwMDAsIDAwMDAwMDAwZmVkNDRm
ZmZdIChyZXNlcnZlZCkKKFhFTikgIFswMDAwMDAwMGZlZDgwMDAwLCAwMDAwMDAwMGZlZDhmZmZm
XSAocmVzZXJ2ZWQpCihYRU4pICBbMDAwMDAwMDBmZjAwMDAwMCwgMDAwMDAwMDBmZmZmZmZmZl0g
KHJlc2VydmVkKQooWEVOKSAgWzAwMDAwMDQwM2RiYzAwMDAsIDAwMDAwMDQwM2ZmZmZmZmZdIChy
ZXNlcnZlZCkKKFhFTikgRUZJIFJBTSBtYXA6CihYRU4pICBbMDAwMDAwMDAwMDAwMDAwMCwgMDAw
MDAwMDAwMDA5ZmZmZl0gKHVzYWJsZSkKKFhFTikgIFswMDAwMDAwMDAwMGEwMDAwLCAwMDAwMDAw
MDAwMGZmZmZmXSAocmVzZXJ2ZWQpCihYRU4pICBbMDAwMDAwMDAwMDEwMDAwMCwgMDAwMDAwMDAw
M2ZmZmZmZl0gKHVzYWJsZSkKKFhFTikgIFswMDAwMDAwMDA0MDAwMDAwLCAwMDAwMDAwMDA0MDQ1
ZmZmXSAoQUNQSSBOVlMpCihYRU4pICBbMDAwMDAwMDAwNDA0NjAwMCwgMDAwMDAwMDAwOWFmZWZm
Zl0gKHVzYWJsZSkKKFhFTikgIFswMDAwMDAwMDA5YWZmMDAwLCAwMDAwMDAwMDA5ZmZmZmZmXSAo
cmVzZXJ2ZWQpCihYRU4pICBbMDAwMDAwMDAwYTAwMDAwMCwgMDAwMDAwMDAwYWZmZmZmZl0gKHVz
YWJsZSkKKFhFTikgIFswMDAwMDAwMDBiMDAwMDAwLCAwMDAwMDAwMDBiMDIwZmZmXSAocmVzZXJ2
ZWQpCihYRU4pICBbMDAwMDAwMDAwYjAyMTAwMCwgMDAwMDAwMDBhMDRmYmZmZl0gKHVzYWJsZSkK
KFhFTikgIFswMDAwMDAwMGEwNGZjMDAwLCAwMDAwMDAwMGE2NGZiZmZmXSAocmVzZXJ2ZWQpCihY
RU4pICBbMDAwMDAwMDBhNjRmYzAwMCwgMDAwMDAwMDBhNzQ3ZWZmZl0gKEFDUEkgZGF0YSkKKFhF
TikgIFswMDAwMDAwMGE3NDdmMDAwLCAwMDAwMDAwMGE5NDdlZmZmXSAoQUNQSSBOVlMpCihYRU4p
ICBbMDAwMDAwMDBhOTQ3ZjAwMCwgMDAwMDAwMDBhZGRmZWZmZl0gKHJlc2VydmVkKQooWEVOKSAg
WzAwMDAwMDAwYWRkZmYwMDAsIDAwMDAwMDAwYWZmZmFmZmZdICh1c2FibGUpCihYRU4pICBbMDAw
MDAwMDBhZmZmYjAwMCwgMDAwMDAwMDBiZmZmZmZmZl0gKHJlc2VydmVkKQooWEVOKSAgWzAwMDAw
MDAwZGYyMDAwMDAsIDAwMDAwMDAwZGYyZmZmZmZdIChyZXNlcnZlZCkKKFhFTikgIFswMDAwMDAw
MGUwMDAwMDAwLCAwMDAwMDAwMGVmZmZmZmZmXSAocmVzZXJ2ZWQpCihYRU4pICBbMDAwMDAwMDBm
ZWEwMDAwMCwgMDAwMDAwMDBmZWFmZmZmZl0gKHJlc2VydmVkKQooWEVOKSAgWzAwMDAwMDAwZmVj
MDAwMDAsIDAwMDAwMDAwZmVjMDBmZmZdIChyZXNlcnZlZCkKKFhFTikgIFswMDAwMDAwMGZlYzEw
MDAwLCAwMDAwMDAwMGZlYzEwZmZmXSAocmVzZXJ2ZWQpCihYRU4pICBbMDAwMDAwMDBmZWMzMDAw
MCwgMDAwMDAwMDBmZWMzMGZmZl0gKHJlc2VydmVkKQooWEVOKSAgWzAwMDAwMDAwZmVkMDAwMDAs
IDAwMDAwMDAwZmVkMDBmZmZdIChyZXNlcnZlZCkKKFhFTikgIFswMDAwMDAwMGZlZDQwMDAwLCAw
MDAwMDAwMGZlZDQ0ZmZmXSAocmVzZXJ2ZWQpCihYRU4pICBbMDAwMDAwMDBmZWQ4MDAwMCwgMDAw
MDAwMDBmZWQ4ZmZmZl0gKHJlc2VydmVkKQooWEVOKSAgWzAwMDAwMDAwZmYwMDAwMDAsIDAwMDAw
MDAwZmZmZmZmZmZdIChyZXNlcnZlZCkKKFhFTikgIFswMDAwMDAwMTAwMDAwMDAwLCAwMDAwMDA0
MDNkYmJmZmZmXSAodXNhYmxlKQooWEVOKSAgWzAwMDAwMDQwM2RiYzAwMDAsIDAwMDAwMDQwM2Zm
ZmZmZmZdIChyZXNlcnZlZCkKKFhFTikgQUNQSTogUlNEUCBBOTQ2MzAxNCwgMDAyNCAocjIgQU1E
ICAgKQooWEVOKSBBQ1BJOiBYU0RUIEE5NDYyNzI4LCAwMTE0IChyMSBBTUQgICAgICBBIE0gSSAg
ICAgICAgIDEgQU1JICAgMTAwMDAxMykKKFhFTikgQUNQSTogRkFDUCBBNzQ3QzAwMCwgMDExNCAo
cjYgQU1EICAgICAgQSBNIEkgICAgICAgICAxIEFNSSAgICAgMTAwMTMpCihYRU4pIEFDUEk6IERT
RFQgQTc0NkUwMDAsIEQyRjYgKHIyIEFNRCAgICAgIEEgTSBJICAgICAgICAgMSBJTlRMIDIwMjMw
MzMxKQooWEVOKSBBQ1BJOiBGQUNTIEE5NDVBMDAwLCAwMDQwCihYRU4pIEFDUEk6IFNTRFQgQTc0
N0UwMDAsIDA5Q0MgKHIyICAgIEFNRCBCT1VMREVSRyAgICAgICAgMiBNU0ZUICA0MDAwMDAwKQoo
WEVOKSBBQ1BJOiBTU0RUIEE3NDdEMDAwLCAwMDY3IChyMiAgICBBTUQgICBDUE1EU00gICAgICAg
IDEgSU5UTCAyMDIzMDMzMSkKKFhFTikgQUNQSTogRklEVCBBNzQ2RDAwMCwgMDA5QyAocjEgICAg
QU1EICAgIEEgTSBJICAgICAgICAxIEFNSSAgICAgMTAwMTMpCihYRU4pIEFDUEk6IE1DRkcgQTc0
NkMwMDAsIDAwM0MgKHIxICAgIEFNRCAgICBBIE0gSSAgICAgICAgMSBNU0ZUICAgIDEwMDEzKQoo
WEVOKSBBQ1BJOiBTU0RUIEE3NDZCMDAwLCAwNUM1IChyMiAgICBBTUQgIENQVVNTRFQgICAgICAg
IDEgQU1JICAgICAgICAgMSkKKFhFTikgQUNQSTogSFBFVCBBNzQ2QTAwMCwgMDAzOCAocjEgICAg
QU1EICAgIEEgTSBJICAgICAgICAxIEFNSSAgICAgICAgIDUpCihYRU4pIEFDUEk6IFNTRFQgQTc0
NjgwMDAsIDFCNTMgKHIyICAgIEFNRCAgIENQTVJBUyAgICAgICAgMSBJTlRMIDIwMjMwMzMxKQoo
WEVOKSBBQ1BJOiBCRVJUIEE3NDY3MDAwLCAwMDMwIChyMSBBTUQgICAgQU1EIEJFUlQgICAgICAg
IDEgQU1EICAgICAgICAgMSkKKFhFTikgQUNQSTogRlBEVCBBNzQ2NTAwMCwgMDA0NCAocjEgQU1E
ICAgICAgQSBNIEkgICAxMDcyMDA5IEFNSSAgIDEwMDAwMTMpCihYRU4pIEFDUEk6IFNTRFQgQTc0
NjIwMDAsIDI0NDggKHIyICAgIEFNRCBHUFBfUE1FXyAgICAgICAgMSBJTlRMIDIwMjMwMzMxKQoo
WEVOKSBBQ1BJOiBTU0RUIEE3NDVGMDAwLCAyNDQ4IChyMiAgICBBTUQgR1BQX1BNRV8gICAgICAg
IDEgSU5UTCAyMDIzMDMzMSkKKFhFTikgQUNQSTogU1NEVCBBNzQ1QzAwMCwgMjQ0OCAocjIgICAg
QU1EIEdQUF9QTUVfICAgICAgICAxIElOVEwgMjAyMzAzMzEpCihYRU4pIEFDUEk6IFNTRFQgQTc0
NTkwMDAsIDI0NDggKHIyICAgIEFNRCBHUFBfUE1FXyAgICAgICAgMSBJTlRMIDIwMjMwMzMxKQoo
WEVOKSBBQ1BJOiBWRkNUIEE3NDRBMDAwLCBFNjg0IChyMSBBTUQgICAgICBBIE0gSSAgICAgICAg
IDEgIEFNRCAzMTUwNEY0NykKKFhFTikgQUNQSTogQkdSVCBBNzQ0OTAwMCwgMDAzOCAocjEgQU1E
ICAgICAgQSBNIEkgICAgICAgICAxIEFNSSAgICAgMTAwMTMpCihYRU4pIEFDUEk6IFNTRFQgQTc0
M0UwMDAsIEE0MEUgKHIyICAgIEFNRCAgQU1EIENQVSAgICAgICAgMSBBTUQgICAgICAgICAxKQoo
WEVOKSBBQ1BJOiBITUFUIEE3NDNEMDAwLCAwMEE0IChyMiAgICBBTUQgQW1kVGFibGUgICAgICAg
IDEgQU1EICAgICAgICAgMSkKKFhFTikgQUNQSTogSVZSUyBBNzQzQzAwMCwgMDFFOCAocjIgIEFN
RCAgIEFtZFRhYmxlICAgICAgICAxIEFNRCAgICAgICAgIDEpCihYRU4pIEFDUEk6IFNTRFQgQTc0
M0IwMDAsIDA2RDQgKHIyICAgIEFNRCAgQ1BNV0xSQyAgICAgICAgMSBJTlRMIDIwMjMwMzMxKQoo
WEVOKSBBQ1BJOiBTU0RUIEE3NDMxMDAwLCA5ODJGIChyMiAgICBBTUQgICBDUE1DTU4gICAgICAg
IDEgSU5UTCAyMDIzMDMzMSkKKFhFTikgQUNQSTogV1NNVCBBNzQzMDAwMCwgMDAyOCAocjEgQU1E
ICAgICAgQSBNIEkgICAgICAgICAxIEFNSSAgICAgMTAwMTMpCihYRU4pIEFDUEk6IEFQSUMgQTc0
MkUwMDAsIDEwODggKHI2IEFNRCAgICAgIEEgTSBJICAgICAgICAgMSBBTUkgICAgIDEwMDEzKQoo
WEVOKSBBQ1BJOiBTU0RUIEE3NDJCMDAwLCAyMzg3IChyMiAgICBBTUQgQU9EICAgICAgICAgICAg
IDEgSU5UTCAyMDIzMDMzMSkKKFhFTikgQUNQSTogU1NEVCBBNzQyQTAwMCwgMDUwMCAocjIgICAg
QU1EIE1FTVRPT0wwICAgICAgICAyIElOVEwgMjAyMzAzMzEpCihYRU4pIEFDUEk6IFNTRFQgQTc0
MjkwMDAsIDA5NkEgKHIyICAgIEFNRCBDUE1NU09TQyAgICAgICAgMSBJTlRMIDIwMjMwMzMxKQoo
WEVOKSBBQ1BJOiBTU0RUIEE3NDI4MDAwLCAwQjcyIChyMiAgICBBTUQgQ1BNQUNQVjYgICAgICAg
IDEgSU5UTCAyMDIzMDMzMSkKKFhFTikgQUNQSTogU1NEVCBBNzQyNzAwMCwgMDQ0RSAocjIgICAg
QU1EIEFtZFRhYmxlICAgICAgICAxIElOVEwgMjAyMzAzMzEpCihYRU4pIEFDUEk6IEVSU1QgQTc0
MjYwMDAsIDAyMzAgKHIxICBBTUlFUiBBTUkuRVJTVCAgICAgICAgMCBBTUkuICAgICAgICAwKQoo
WEVOKSBBQ1BJOiBIRVNUIEE3M0Y1MDAwLCAzMEExNCAocjEgQU1EICAgIEFNRCBIRVNUICAgICAg
ICAxIEFNRCAgICAgICAgIDEpCihYRU4pIFN5c3RlbSBSQU06IDI2MTYyOE1CICgyNjc5MDgwMzJr
QikKKFhFTikgTm8gTlVNQSBjb25maWd1cmF0aW9uIGZvdW5kCihYRU4pIEZha2luZyBhIG5vZGUg
YXQgMDAwMDAwMDAwMDAwMDAwMC0wMDAwMDA0MDNkYmMwMDAwCihYRU4pIERvbWFpbiBoZWFwIGlu
aXRpYWxpc2VkCihYRU4pIHZlc2FmYjogZnJhbWVidWZmZXIgYXQgMHgwMDAwMDRkODAwMDAwMDAw
LCBtYXBwZWQgdG8gMHhmZmZmODJjMDAwMjAxMDAwLCB1c2luZyAxNDQwMGssIHRvdGFsIDE0NDAw
awooWEVOKSB2ZXNhZmI6IG1vZGUgaXMgMjU2MHgxNDQweDMyLCBsaW5lbGVuZ3RoPTEwMjQwLCBm
b250IDh4MTYKKFhFTikgdmVzYWZiOiBUcnVlY29sb3I6IHNpemU9ODo4Ojg6OCwgc2hpZnQ9MjQ6
MTY6ODowCihYRU4pIFNNQklPUyAzLjYgcHJlc2VudC4KKFhFTikgeDJBUElDIG1vZGUgaXMgYWxy
ZWFkeSBlbmFibGVkIGJ5IEJJT1MuCihYRU4pIFVzaW5nIEFQSUMgZHJpdmVyIHgyYXBpY19jbHVz
dGVyCihYRU4pIEFDUEk6IFBNLVRpbWVyIElPIFBvcnQ6IDB4ODA4ICgzMiBiaXRzKQooWEVOKSBB
Q1BJOiB2NSBTTEVFUCBJTkZPOiBjb250cm9sWzA6MF0sIHN0YXR1c1swOjBdCihYRU4pIEFDUEk6
IFNMRUVQIElORk86IHBtMXhfY250WzE6ODA0LDE6MF0sIHBtMXhfZXZ0WzE6ODAwLDE6MF0KKFhF
TikgQUNQSTogMzIvNjRYIEZBQ1MgYWRkcmVzcyBtaXNtYXRjaCBpbiBGQURUIC0gYTk0NWEwMDAv
MDAwMDAwMDAwMDAwMDAwMCwgdXNpbmcgMzIKKFhFTikgQUNQSTogICAgICAgICAgICAgd2FrZXVw
X3ZlY1thOTQ1YTAwY10sIHZlY19zaXplWzIwXQooWEVOKSBBQ1BJOiBMb2NhbCBBUElDIGFkZHJl
c3MgMHhmZWUwMDAwMAooWEVOKSBBQ1BJOiBJT0FQSUMgKGlkWzB4ODBdIGFkZHJlc3NbMHhmZWMw
MDAwMF0gZ3NpX2Jhc2VbMF0pCihYRU4pIElPQVBJQ1swXTogYXBpY19pZCAxMjgsIHZlcnNpb24g
MzMsIGFkZHJlc3MgMHhmZWMwMDAwMCwgR1NJIDAtMjMKKFhFTikgQUNQSTogSU9BUElDIChpZFsw
eDgxXSBhZGRyZXNzWzB4ZGYxODAwMDBdIGdzaV9iYXNlWzEyMF0pCihYRU4pIElPQVBJQ1sxXTog
YXBpY19pZCAxMjksIHZlcnNpb24gMzMsIGFkZHJlc3MgMHhkZjE4MDAwMCwgR1NJIDEyMC0xNTEK
KFhFTikgQUNQSTogSU9BUElDIChpZFsweDgyXSBhZGRyZXNzWzB4ZDMxODAwMDBdIGdzaV9iYXNl
Wzg4XSkKKFhFTikgSU9BUElDWzJdOiBhcGljX2lkIDEzMCwgdmVyc2lvbiAzMywgYWRkcmVzcyAw
eGQzMTgwMDAwLCBHU0kgODgtMTE5CihYRU4pIEFDUEk6IElPQVBJQyAoaWRbMHg4M10gYWRkcmVz
c1sweGY3MTgwMDAwXSBnc2lfYmFzZVsyNF0pCihYRU4pIElPQVBJQ1szXTogYXBpY19pZCAxMzEs
IHZlcnNpb24gMzMsIGFkZHJlc3MgMHhmNzE4MDAwMCwgR1NJIDI0LTU1CihYRU4pIEFDUEk6IElP
QVBJQyAoaWRbMHg4NF0gYWRkcmVzc1sweGM5MTgwMDAwXSBnc2lfYmFzZVs1Nl0pCihYRU4pIElP
QVBJQ1s0XTogYXBpY19pZCAxMzIsIHZlcnNpb24gMzMsIGFkZHJlc3MgMHhjOTE4MDAwMCwgR1NJ
IDU2LTg3CihYRU4pIEFDUEk6IElOVF9TUkNfT1ZSIChidXMgMCBidXNfaXJxIDAgZ2xvYmFsX2ly
cSAyIGRmbCBkZmwpCihYRU4pIEFDUEk6IElOVF9TUkNfT1ZSIChidXMgMCBidXNfaXJxIDkgZ2xv
YmFsX2lycSA5IGxvdyBsZXZlbCkKKFhFTikgQUNQSTogSVJRMCB1c2VkIGJ5IG92ZXJyaWRlLgoo
WEVOKSBBQ1BJOiBJUlEyIHVzZWQgYnkgb3ZlcnJpZGUuCihYRU4pIEFDUEk6IElSUTkgdXNlZCBi
eSBvdmVycmlkZS4KKFhFTikgQUNQSTogSFBFVCBpZDogMHgxMDIyODIwMSBiYXNlOiAweGZlZDAw
MDAwCihYRU4pIFBDSTogTUNGRyBjb25maWd1cmF0aW9uIDA6IGJhc2UgZTAwMDAwMDAgc2VnbWVu
dCAwMDAwIGJ1c2VzIDAwIC0gZmYKKFhFTikgUENJOiBNQ0ZHIGFyZWEgYXQgZTAwMDAwMDAgcmVz
ZXJ2ZWQgaW4gRTgyMAooWEVOKSBQQ0k6IFVzaW5nIE1DRkcgZm9yIHNlZ21lbnQgMDAwMCBidXMg
MDAtZmYKKFhFTikgWGVuIEVSU1Qgc3VwcG9ydCBpcyBpbml0aWFsaXplZC4KKFhFTikgSEVTVDog
VGFibGUgcGFyc2luZyBoYXMgYmVlbiBpbml0aWFsaXplZAooWEVOKSBBQ1BJOiBCR1JUOiBpbnZh
bGlkYXRpbmcgdjEgaW1hZ2UgYXQgMHg5YjFjMzAxOAooWEVOKSBVc2luZyBBQ1BJIChNQURUKSBm
b3IgU01QIGNvbmZpZ3VyYXRpb24gaW5mb3JtYXRpb24KKFhFTikgU01QOiBBbGxvd2luZyA0OCBD
UFVzICgwIGhvdHBsdWcgQ1BVcykKKFhFTikgSVJRIGxpbWl0czogMTUyIEdTSSwgOTgzMiBNU0kv
TVNJLVgKKFhFTikgQU1ELVZpOiBJT01NVSBFeHRlbmRlZCBGZWF0dXJlczoKKFhFTikgLSBQZXJp
cGhlcmFsIFBhZ2UgU2VydmljZSBSZXF1ZXN0CihYRU4pIC0geDJBUElDCihYRU4pIC0gTlggYml0
CihYRU4pIC0gR3Vlc3QgQVBJQyBQaHlzaWNhbCBQcm9jZXNzb3IgSW50ZXJydXB0CihYRU4pIC0g
SW52YWxpZGF0ZSBBbGwgQ29tbWFuZAooWEVOKSAtIEd1ZXN0IEFQSUMKKFhFTikgLSBQZXJmb3Jt
YW5jZSBDb3VudGVycwooWEVOKSAtIEhvc3QgQWRkcmVzcyBUcmFuc2xhdGlvbiBTaXplOiAweDIK
KFhFTikgLSBHdWVzdCBBZGRyZXNzIFRyYW5zbGF0aW9uIFNpemU6IDB4MQooWEVOKSAtIEd1ZXN0
IENSMyBSb290IFRhYmxlIExldmVsOiAweDEKKFhFTikgLSBNYXhpbXVtIFBBU0lEOiAweGYKKFhF
TikgLSBTTUkgRmlsdGVyIFJlZ2lzdGVyOiAweDEKKFhFTikgLSBTTUkgRmlsdGVyIFJlZ2lzdGVy
IENvdW50OiAweDIKKFhFTikgLSBHdWVzdCBWaXJ0dWFsIEFQSUMgTW9kZXM6IDB4MQooWEVOKSAt
IER1YWwgUFBSIExvZzogMHgyCihYRU4pIC0gRHVhbCBFdmVudCBMb2c6IDB4MgooWEVOKSAtIFNl
Y3VyZSBBVFMKKFhFTikgLSBVc2VyIC8gU3VwZXJ2aXNvciBQYWdlIFByb3RlY3Rpb24KKFhFTikg
LSBEZXZpY2UgVGFibGUgU2VnbWVudGF0aW9uOiAwCihYRU4pIC0gUFBSIExvZyBPdmVyZmxvdyBF
YXJseSBXYXJuaW5nCihYRU4pIC0gUFBSIEF1dG9tYXRpYyBSZXNwb25zZQooWEVOKSAtIE1lbW9y
eSBBY2Nlc3MgUm91dGluZyBhbmQgQ29udHJvbDogMAooWEVOKSAtIEJsb2NrIFN0b3BNYXJrIE1l
c3NhZ2UKKFhFTikgLSBQZXJmb3JtYW5jZSBPcHRpbWl6YXRpb24KKFhFTikgLSBNU0kgQ2FwYWJp
bGl0eSBNTUlPIEFjY2VzcwooWEVOKSAtIEd1ZXN0IEkvTyBQcm90ZWN0aW9uCihYRU4pIC0gSG9z
dCBBY2Nlc3MKKFhFTikgLSBFbmhhbmNlZCBQUFIgSGFuZGxpbmcKKFhFTikgLSBBdHRyaWJ1dGUg
Rm9yd2FyZAooWEVOKSAtIEhvc3QgRGlydHkKKFhFTikgLSBWaXJ0dWFsaXplZCBJT01NVQooWEVO
KSAtIFZNR3VhcmQgSS9PIFN1cHBvcnQKKFhFTikgLSBWTSBUYWJsZSBTaXplOiAweDIKKFhFTikg
LSBHdWVzdCBBY2Nlc3MgQml0IFVwZGF0ZSBEaXNhYmxlCihYRU4pIEFNRC1WaTogRGlzYWJsZWQg
SEFQIG1lbW9yeSBtYXAgc2hhcmluZyB3aXRoIElPTU1VCihYRU4pIEFNRC1WaTogSU9NTVUgMCBF
bmFibGVkLgooWEVOKSBBTUQtVmk6IElPTU1VIDEgRW5hYmxlZC4KKFhFTikgQU1ELVZpOiBJT01N
VSAyIEVuYWJsZWQuCihYRU4pIEFNRC1WaTogSU9NTVUgMyBFbmFibGVkLgooWEVOKSBDUFUwOiAx
NTAwIC4uLiA0MjAwIE1IegooWEVOKSB4c3RhdGU6IHNpemU6IDB4OTg4IGFuZCBzdGF0ZXM6IDB4
MmU3CihYRU4pIENQVTA6IEFNRCBGYW0xOWggbWFjaGluZSBjaGVjayByZXBvcnRpbmcgZW5hYmxl
ZAooWEVOKSBTcGVjdWxhdGl2ZSBtaXRpZ2F0aW9uIGZhY2lsaXRpZXM6CihYRU4pICAgSGFyZHdh
cmUgaGludHM6IFNUSUJQX0FMV0FZUyBJQlJTX0ZBU1QgSUJSU19TQU1FX01PREUgQlRDX05PIElC
UEJfUkVUCihYRU4pICAgSGFyZHdhcmUgZmVhdHVyZXM6IElCUEIgSUJSUyBTVElCUCBTU0JEIFBT
RkQgTDFEX0ZMVVNICihYRU4pICAgQ29tcGlsZWQtaW4gc3VwcG9ydDogSU5ESVJFQ1RfVEhVTksg
U0hBRE9XX1BBR0lORwooWEVOKSAgIFhlbiBzZXR0aW5nczogQlRJLVRodW5rIEpNUCwgU1BFQ19D
VFJMOiBJQlJTKyBTVElCUCsgU1NCRC0gUFNGRC0sIE90aGVyOiBCUkFOQ0hfSEFSREVOCihYRU4p
ICAgU3VwcG9ydCBmb3IgSFZNIFZNczogTVNSX1NQRUNfQ1RSTCBNU1JfVklSVF9TUEVDX0NUUkwg
UlNCIElCUEItZW50cnkKKFhFTikgICBTdXBwb3J0IGZvciBQViBWTXM6IElCUEItZW50cnkKKFhF
TikgICBYUFRJICg2NC1iaXQgUFYgb25seSk6IERvbTAgZGlzYWJsZWQsIERvbVUgZGlzYWJsZWQg
KHdpdGggUENJRCkKKFhFTikgICBQViBMMVRGIHNoYWRvd2luZzogRG9tMCBkaXNhYmxlZCwgRG9t
VSBkaXNhYmxlZAooWEVOKSBVc2luZyBzY2hlZHVsZXI6IFNNUCBDcmVkaXQgU2NoZWR1bGVyIHJl
djIgKGNyZWRpdDIpCihYRU4pIEluaXRpYWxpemluZyBDcmVkaXQyIHNjaGVkdWxlcgooWEVOKSAg
bG9hZF9wcmVjaXNpb25fc2hpZnQ6IDE4CihYRU4pICBsb2FkX3dpbmRvd19zaGlmdDogMzAKKFhF
TikgIHVuZGVybG9hZF9iYWxhbmNlX3RvbGVyYW5jZTogMAooWEVOKSAgb3ZlcmxvYWRfYmFsYW5j
ZV90b2xlcmFuY2U6IC0zCihYRU4pICBydW5xdWV1ZXMgYXJyYW5nZW1lbnQ6IHNvY2tldAooWEVO
KSAgY2FwIGVuZm9yY2VtZW50IGdyYW51bGFyaXR5OiAxMG1zCihYRU4pIGxvYWQgdHJhY2tpbmcg
d2luZG93IGxlbmd0aCAxMDczNzQxODI0IG5zCihYRU4pIFBsYXRmb3JtIHRpbWVyIGlzIDE0LjMx
OE1IeiBIUEVUCihYRU4pIERldGVjdGVkIDQxOTkuOTYwIE1IeiBwcm9jZXNzb3IuCihYRU4pIEZy
ZWVkIDEwMjBrQiB1bnVzZWQgQlNTIG1lbW9yeQooWEVOKSBFRkkgbWVtb3J5IG1hcDoKKFhFTikg
IDAwMDAwMDAwMDAwMDAtMDAwMDAwMDAwM2ZmZiB0eXBlPTIgYXR0cj0wMDAwMDAwMDAwMDAwMDBm
CihYRU4pICAwMDAwMDAwMDA0MDAwLTAwMDAwMDAwOGVmZmYgdHlwZT03IGF0dHI9MDAwMDAwMDAw
MDAwMDAwZgooWEVOKSAgMDAwMDAwMDA4ZjAwMC0wMDAwMDAwMDllZmZmIHR5cGU9MiBhdHRyPTAw
MDAwMDAwMDAwMDAwMGYKKFhFTikgIDAwMDAwMDAwOWYwMDAtMDAwMDAwMDA5ZmZmZiB0eXBlPTQg
YXR0cj0wMDAwMDAwMDAwMDAwMDBmCihYRU4pICAwMDAwMDAwMTAwMDAwLTAwMDAwMDMxNTlmZmYg
dHlwZT0yIGF0dHI9MDAwMDAwMDAwMDAwMDAwZgooWEVOKSAgMDAwMDAwMzE1YTAwMC0wMDAwMDAz
ZmZmZmZmIHR5cGU9NyBhdHRyPTAwMDAwMDAwMDAwMDAwMGYKKFhFTikgIDAwMDAwMDQwMDAwMDAt
MDAwMDAwNDA0NWZmZiB0eXBlPTEwIGF0dHI9MDAwMDAwMDAwMDAwMDAwZgooWEVOKSAgMDAwMDAw
NDA0NjAwMC0wMDAwMDA5YWZlZmZmIHR5cGU9NyBhdHRyPTAwMDAwMDAwMDAwMDAwMGYKKFhFTikg
IDAwMDAwMDlhZmYwMDAtMDAwMDAwOWZmZmZmZiB0eXBlPTAgYXR0cj0wMDAwMDAwMDAwMDAwMDBm
CihYRU4pICAwMDAwMDBhMDAwMDAwLTAwMDAwMGEyZmZmZmYgdHlwZT00IGF0dHI9MDAwMDAwMDAw
MDAwMDAwZgooWEVOKSAgMDAwMDAwYTMwMDAwMC0wMDAwMDBhZmZmZmZmIHR5cGU9NyBhdHRyPTAw
MDAwMDAwMDAwMDAwMGYKKFhFTikgIDAwMDAwMGIwMDAwMDAtMDAwMDAwYjAyMGZmZiB0eXBlPTAg
YXR0cj0wMDAwMDAwMDAwMDAwMDBmCihYRU4pICAwMDAwMDBiMDIxMDAwLTAwMDAwNzE3NzlmZmYg
dHlwZT03IGF0dHI9MDAwMDAwMDAwMDAwMDAwZgooWEVOKSAgMDAwMDA3MTc3YTAwMC0wMDAwMDk3
YmVmZmZmIHR5cGU9MSBhdHRyPTAwMDAwMDAwMDAwMDAwMGYKKFhFTikgIDAwMDAwOTdiZjAwMDAt
MDAwMDA5N2JmMGZmZiB0eXBlPTIgYXR0cj0wMDAwMDAwMDAwMDAwMDBmCihYRU4pICAwMDAwMDk3
YmYxMDAwLTAwMDAwOTdiZjZmZmYgdHlwZT03IGF0dHI9MDAwMDAwMDAwMDAwMDAwZgooWEVOKSAg
MDAwMDA5N2JmNzAwMC0wMDAwMDk3ZmY3ZmZmIHR5cGU9MSBhdHRyPTAwMDAwMDAwMDAwMDAwMGYK
KFhFTikgIDAwMDAwOTdmZjgwMDAtMDAwMDA5OTFmYmZmZiB0eXBlPTQgYXR0cj0wMDAwMDAwMDAw
MDAwMDBmCihYRU4pICAwMDAwMDk5MWZjMDAwLTAwMDAwOTk2MTFmZmYgdHlwZT03IGF0dHI9MDAw
MDAwMDAwMDAwMDAwZgooWEVOKSAgMDAwMDA5OTYxMjAwMC0wMDAwMDk5YTkzZmZmIHR5cGU9NCBh
dHRyPTAwMDAwMDAwMDAwMDAwMGYKKFhFTikgIDAwMDAwOTlhOTQwMDAtMDAwMDA5OWJiY2ZmZiB0
eXBlPTcgYXR0cj0wMDAwMDAwMDAwMDAwMDBmCihYRU4pICAwMDAwMDk5YmJkMDAwLTAwMDAwOWIy
Y2VmZmYgdHlwZT00IGF0dHI9MDAwMDAwMDAwMDAwMDAwZgooWEVOKSAgMDAwMDA5YjJjZjAwMC0w
MDAwMDliMmQxZmZmIHR5cGU9NyBhdHRyPTAwMDAwMDAwMDAwMDAwMGYKKFhFTikgIDAwMDAwOWIy
ZDIwMDAtMDAwMDA5ZTRmYmZmZiB0eXBlPTQgYXR0cj0wMDAwMDAwMDAwMDAwMDBmCihYRU4pICAw
MDAwMDllNGZjMDAwLTAwMDAwOWY3ZmZmZmYgdHlwZT03IGF0dHI9MDAwMDAwMDAwMDAwMDAwZgoo
WEVOKSAgMDAwMDA5ZjgwMDAwMC0wMDAwMDlmYmIzZmZmIHR5cGU9MiBhdHRyPTAwMDAwMDAwMDAw
MDAwMGYKKFhFTikgIDAwMDAwOWZiYjQwMDAtMDAwMDA5ZmRiMGZmZiB0eXBlPTcgYXR0cj0wMDAw
MDAwMDAwMDAwMDBmCihYRU4pICAwMDAwMDlmZGIxMDAwLTAwMDAwYTA0ZmJmZmYgdHlwZT0zIGF0
dHI9MDAwMDAwMDAwMDAwMDAwZgooWEVOKSAgMDAwMDBhMDRmYzAwMC0wMDAwMGE2NGZiZmZmIHR5
cGU9MCBhdHRyPTAwMDAwMDAwMDAwMDAwMGYKKFhFTikgIDAwMDAwYTY0ZmMwMDAtMDAwMDBhNzQ3
ZWZmZiB0eXBlPTkgYXR0cj0wMDAwMDAwMDAwMDAwMDBmCihYRU4pICAwMDAwMGE3NDdmMDAwLTAw
MDAwYTk0N2VmZmYgdHlwZT0xMCBhdHRyPTAwMDAwMDAwMDAwMDAwMGYKKFhFTikgIDAwMDAwYTk0
N2YwMDAtMDAwMDBhZGM3ZWZmZiB0eXBlPTYgYXR0cj04MDAwMDAwMDAwMDAwMDBmCihYRU4pICAw
MDAwMGFkYzdmMDAwLTAwMDAwYWRkZmVmZmYgdHlwZT01IGF0dHI9ODAwMDAwMDAwMDAwMDAwZgoo
WEVOKSAgMDAwMDBhZGRmZjAwMC0wMDAwMGFkZmZmZmZmIHR5cGU9NCBhdHRyPTAwMDAwMDAwMDAw
MDAwMGYKKFhFTikgIDAwMDAwYWUwMDAwMDAtMDAwMDBhZTEzYWZmZiB0eXBlPTcgYXR0cj0wMDAw
MDAwMDAwMDAwMDBmCihYRU4pICAwMDAwMGFlMTNiMDAwLTAwMDAwYWUyM2FmZmYgdHlwZT00IGF0
dHI9MDAwMDAwMDAwMDAwMDAwZgooWEVOKSAgMDAwMDBhZTIzYjAwMC0wMDAwMGFlMjViZmZmIHR5
cGU9MyBhdHRyPTAwMDAwMDAwMDAwMDAwMGYKKFhFTikgIDAwMDAwYWUyNWMwMDAtMDAwMDBhZjc2
NWZmZiB0eXBlPTQgYXR0cj0wMDAwMDAwMDAwMDAwMDBmCihYRU4pICAwMDAwMGFmNzY2MDAwLTAw
MDAwYWY3ODJmZmYgdHlwZT0zIGF0dHI9MDAwMDAwMDAwMDAwMDAwZgooWEVOKSAgMDAwMDBhZjc4
MzAwMC0wMDAwMGFmNzliZmZmIHR5cGU9NCBhdHRyPTAwMDAwMDAwMDAwMDAwMGYKKFhFTikgIDAw
MDAwYWY3OWMwMDAtMDAwMDBhZjc5ZmZmZiB0eXBlPTMgYXR0cj0wMDAwMDAwMDAwMDAwMDBmCihY
RU4pICAwMDAwMGFmN2EwMDAwLTAwMDAwYWY3YjNmZmYgdHlwZT00IGF0dHI9MDAwMDAwMDAwMDAw
MDAwZgooWEVOKSAgMDAwMDBhZjdiNDAwMC0wMDAwMGFmN2RjZmZmIHR5cGU9MyBhdHRyPTAwMDAw
MDAwMDAwMDAwMGYKKFhFTikgIDAwMDAwYWY3ZGQwMDAtMDAwMDBhZmZmM2ZmZiB0eXBlPTQgYXR0
cj0wMDAwMDAwMDAwMDAwMDBmCihYRU4pICAwMDAwMGFmZmY0MDAwLTAwMDAwYWZmZmFmZmYgdHlw
ZT0zIGF0dHI9MDAwMDAwMDAwMDAwMDAwZgooWEVOKSAgMDAwMDBhZmZmYjAwMC0wMDAwMGFmZmZm
ZmZmIHR5cGU9NiBhdHRyPTgwMDAwMDAwMDAwMDAwMGYKKFhFTikgIDAwMDAxMDAwMDAwMDAtMDAw
NDAzZGJiZmZmZiB0eXBlPTcgYXR0cj0wMDAwMDAwMDAwMDAwMDBmCihYRU4pICAwMDAwMDAwMGEw
MDAwLTAwMDAwMDAwZmZmZmYgdHlwZT0wIGF0dHI9MDAwMDAwMDAwMDAwMDAwZgooWEVOKSAgMDAw
MDBiMDAwMDAwMC0wMDAwMGJmZmZmZmZmIHR5cGU9MCBhdHRyPTAwMDAwMDAwMDAwMDAwMGYKKFhF
TikgIDAwMDAwZGYyMDAwMDAtMDAwMDBkZjJmZmZmZiB0eXBlPTExIGF0dHI9ODAwMDAwMDAwMDAw
MDAwMQooWEVOKSAgMDAwMDBlMDAwMDAwMC0wMDAwMGVmZmZmZmZmIHR5cGU9MTEgYXR0cj04MDAw
MDAwMDAwMDAxMDBkCihYRU4pICAwMDAwMGZlYTAwMDAwLTAwMDAwZmVhZmZmZmYgdHlwZT0xMSBh
dHRyPTgwMDAwMDAwMDAwMDAwMDEKKFhFTikgIDAwMDAwZmVjMDAwMDAtMDAwMDBmZWMwMGZmZiB0
eXBlPTExIGF0dHI9ODAwMDAwMDAwMDAwMDAwMQooWEVOKSAgMDAwMDBmZWMxMDAwMC0wMDAwMGZl
YzEwZmZmIHR5cGU9MTEgYXR0cj04MDAwMDAwMDAwMDAwMDAxCihYRU4pICAwMDAwMGZlYzMwMDAw
LTAwMDAwZmVjMzBmZmYgdHlwZT0xMSBhdHRyPTgwMDAwMDAwMDAwMDAwMDEKKFhFTikgIDAwMDAw
ZmVkMDAwMDAtMDAwMDBmZWQwMGZmZiB0eXBlPTExIGF0dHI9ODAwMDAwMDAwMDAwMDAwMQooWEVO
KSAgMDAwMDBmZWQ0MDAwMC0wMDAwMGZlZDQ0ZmZmIHR5cGU9MTEgYXR0cj04MDAwMDAwMDAwMDAw
MDAxCihYRU4pICAwMDAwMGZlZDgwMDAwLTAwMDAwZmVkOGZmZmYgdHlwZT0xMSBhdHRyPTgwMDAw
MDAwMDAwMDAwMDEKKFhFTikgIDAwMDAwZmYwMDAwMDAtMDAwMDBmZmZmZmZmZiB0eXBlPTExIGF0
dHI9ODAwMDAwMDAwMDAwMDAwMQooWEVOKSAgMDAwNDAzZGJjMDAwMC0wMDA0MDNmZmZmZmZmIHR5
cGU9MCBhdHRyPTAwMDAwMDAwMDAwMDAwMGYKKFhFTikgYWx0IHRhYmxlIGZmZmY4MmQwNDA0NWIx
ZDAgLT4gZmZmZjgyZDA0MDQ2NzFmYwooWEVOKSBJL08gdmlydHVhbGlzYXRpb24gZW5hYmxlZAoo
WEVOKSAgLSBEb20wIG1vZGU6IFJlbGF4ZWQKKFhFTikgSW50ZXJydXB0IHJlbWFwcGluZyBlbmFi
bGVkCihYRU4pIG5yX3NvY2tldHM6IDEKKFhFTikgRW5hYmxlZCBkaXJlY3RlZCBFT0kgd2l0aCBp
b2FwaWNfYWNrX29sZCBvbiEKKFhFTikgRW5hYmxpbmcgQVBJQyBtb2RlOiAgQ2x1c3RlcmVkLiAg
VXNpbmcgNSBJL08gQVBJQ3MKKFhFTikgRU5BQkxJTkcgSU8tQVBJQyBJUlFzCihYRU4pICAtPiBV
c2luZyBvbGQgQUNLIG1ldGhvZAooWEVOKSAuLlRJTUVSOiB2ZWN0b3I9MHhGMCBhcGljMT0wIHBp
bjE9MiBhcGljMj0tMSBwaW4yPS0xCihYRU4pIERlZmF1bHRpbmcgdG8gYWx0ZXJuYXRpdmUga2V5
IGhhbmRsaW5nOyBzZW5kICdBJyB0byBzd2l0Y2ggdG8gbm9ybWFsIG1vZGUuCihYRU4pIEFsbG9j
YXRlZCBjb25zb2xlIHJpbmcgb2YgNTEyIEtpQi4KKFhFTikgbXdhaXQtaWRsZTogZG9lcyBub3Qg
cnVuIG9uIGZhbWlseSAyNSBtb2RlbCAyNAooWEVOKSBIVk06IEFTSURzIGVuYWJsZWQuCihYRU4p
IFNWTTogU3VwcG9ydGVkIGFkdmFuY2VkIGZlYXR1cmVzOgooWEVOKSAgLSBOZXN0ZWQgUGFnZSBU
YWJsZXMgKE5QVCkKKFhFTikgIC0gTGFzdCBCcmFuY2ggUmVjb3JkIChMQlIpIFZpcnR1YWxpc2F0
aW9uCihYRU4pICAtIE5leHQtUklQIFNhdmVkIG9uICNWTUVYSVQKKFhFTikgIC0gVk1DQiBDbGVh
biBCaXRzCihYRU4pICAtIERlY29kZUFzc2lzdHMKKFhFTikgIC0gVmlydHVhbCBWTUxPQUQvVk1T
QVZFCihYRU4pICAtIFZpcnR1YWwgR0lGCihYRU4pICAtIFBhdXNlLUludGVyY2VwdCBGaWx0ZXIK
KFhFTikgIC0gUGF1c2UtSW50ZXJjZXB0IEZpbHRlciBUaHJlc2hvbGQKKFhFTikgIC0gVFNDIFJh
dGUgTVNSCihYRU4pICAtIE5QVCBTdXBlcnZpc29yIFNoYWRvdyBTdGFjawooWEVOKSAgLSBNU1Jf
U1BFQ19DVFJMIHZpcnR1YWxpc2F0aW9uCihYRU4pIEhWTTogU1ZNIGVuYWJsZWQKKFhFTikgSFZN
OiBIYXJkd2FyZSBBc3Npc3RlZCBQYWdpbmcgKEhBUCkgZGV0ZWN0ZWQKKFhFTikgSFZNOiBIQVAg
cGFnZSBzaXplczogNGtCLCAyTUIsIDFHQgooWEVOKSBhbHQgdGFibGUgZmZmZjgyZDA0MDQ1YjFk
MCAtPiBmZmZmODJkMDQwNDY3MWZjCihYRU4pIEJyb3VnaHQgdXAgNDggQ1BVcwooWEVOKSBTY2hl
ZHVsaW5nIGdyYW51bGFyaXR5OiBjcHUsIDEgQ1BVIHBlciBzY2hlZC1yZXNvdXJjZQooWEVOKSBJ
bml0aWFsaXppbmcgQ3JlZGl0MiBzY2hlZHVsZXIKKFhFTikgIGxvYWRfcHJlY2lzaW9uX3NoaWZ0
OiAxOAooWEVOKSAgbG9hZF93aW5kb3dfc2hpZnQ6IDMwCihYRU4pICB1bmRlcmxvYWRfYmFsYW5j
ZV90b2xlcmFuY2U6IDAKKFhFTikgIG92ZXJsb2FkX2JhbGFuY2VfdG9sZXJhbmNlOiAtMwooWEVO
KSAgcnVucXVldWVzIGFycmFuZ2VtZW50OiBzb2NrZXQKKFhFTikgIGNhcCBlbmZvcmNlbWVudCBn
cmFudWxhcml0eTogMTBtcwooWEVOKSBsb2FkIHRyYWNraW5nIHdpbmRvdyBsZW5ndGggMTA3Mzc0
MTgyNCBucwooWEVOKSBBZGRpbmcgY3B1IDAgdG8gcnVucXVldWUgMAooWEVOKSAgRmlyc3QgY3B1
IG9uIHJ1bnF1ZXVlLCBhY3RpdmF0aW5nCihYRU4pIEFkZGluZyBjcHUgMSB0byBydW5xdWV1ZSAw
CihYRU4pIEFkZGluZyBjcHUgMiB0byBydW5xdWV1ZSAwCihYRU4pIEFkZGluZyBjcHUgMyB0byBy
dW5xdWV1ZSAwCihYRU4pIEFkZGluZyBjcHUgNCB0byBydW5xdWV1ZSAwCihYRU4pIEFkZGluZyBj
cHUgNSB0byBydW5xdWV1ZSAwCihYRU4pIEFkZGluZyBjcHUgNiB0byBydW5xdWV1ZSAwCihYRU4p
IEFkZGluZyBjcHUgNyB0byBydW5xdWV1ZSAwCihYRU4pIEFkZGluZyBjcHUgOCB0byBydW5xdWV1
ZSAwCihYRU4pIEFkZGluZyBjcHUgOSB0byBydW5xdWV1ZSAwCihYRU4pIEFkZGluZyBjcHUgMTAg
dG8gcnVucXVldWUgMAooWEVOKSBBZGRpbmcgY3B1IDExIHRvIHJ1bnF1ZXVlIDAKKFhFTikgQWRk
aW5nIGNwdSAxMiB0byBydW5xdWV1ZSAwCihYRU4pIEFkZGluZyBjcHUgMTMgdG8gcnVucXVldWUg
MAooWEVOKSBBZGRpbmcgY3B1IDE0IHRvIHJ1bnF1ZXVlIDAKKFhFTikgQWRkaW5nIGNwdSAxNSB0
byBydW5xdWV1ZSAwCihYRU4pIEFkZGluZyBjcHUgMTYgdG8gcnVucXVldWUgMQooWEVOKSAgRmly
c3QgY3B1IG9uIHJ1bnF1ZXVlLCBhY3RpdmF0aW5nCihYRU4pIEFkZGluZyBjcHUgMTcgdG8gcnVu
cXVldWUgMQooWEVOKSBBZGRpbmcgY3B1IDE4IHRvIHJ1bnF1ZXVlIDEKKFhFTikgQWRkaW5nIGNw
dSAxOSB0byBydW5xdWV1ZSAxCihYRU4pIEFkZGluZyBjcHUgMjAgdG8gcnVucXVldWUgMQooWEVO
KSBBZGRpbmcgY3B1IDIxIHRvIHJ1bnF1ZXVlIDEKKFhFTikgQWRkaW5nIGNwdSAyMiB0byBydW5x
dWV1ZSAxCihYRU4pIEFkZGluZyBjcHUgMjMgdG8gcnVucXVldWUgMQooWEVOKSBBZGRpbmcgY3B1
IDI0IHRvIHJ1bnF1ZXVlIDEKKFhFTikgQWRkaW5nIGNwdSAyNSB0byBydW5xdWV1ZSAxCihYRU4p
IEFkZGluZyBjcHUgMjYgdG8gcnVucXVldWUgMQooWEVOKSBBZGRpbmcgY3B1IDI3IHRvIHJ1bnF1
ZXVlIDEKKFhFTikgQWRkaW5nIGNwdSAyOCB0byBydW5xdWV1ZSAxCihYRU4pIEFkZGluZyBjcHUg
MjkgdG8gcnVucXVldWUgMQooWEVOKSBBZGRpbmcgY3B1IDMwIHRvIHJ1bnF1ZXVlIDEKKFhFTikg
QWRkaW5nIGNwdSAzMSB0byBydW5xdWV1ZSAxCihYRU4pIEFkZGluZyBjcHUgMzIgdG8gcnVucXVl
dWUgMgooWEVOKSAgRmlyc3QgY3B1IG9uIHJ1bnF1ZXVlLCBhY3RpdmF0aW5nCihYRU4pIEFkZGlu
ZyBjcHUgMzMgdG8gcnVucXVldWUgMgooWEVOKSBBZGRpbmcgY3B1IDM0IHRvIHJ1bnF1ZXVlIDIK
KFhFTikgQWRkaW5nIGNwdSAzNSB0byBydW5xdWV1ZSAyCihYRU4pIEFkZGluZyBjcHUgMzYgdG8g
cnVucXVldWUgMgooWEVOKSBBZGRpbmcgY3B1IDM3IHRvIHJ1bnF1ZXVlIDIKKFhFTikgQWRkaW5n
IGNwdSAzOCB0byBydW5xdWV1ZSAyCihYRU4pIEFkZGluZyBjcHUgMzkgdG8gcnVucXVldWUgMgoo
WEVOKSBBZGRpbmcgY3B1IDQwIHRvIHJ1bnF1ZXVlIDIKKFhFTikgQWRkaW5nIGNwdSA0MSB0byBy
dW5xdWV1ZSAyCihYRU4pIEFkZGluZyBjcHUgNDIgdG8gcnVucXVldWUgMgooWEVOKSBBZGRpbmcg
Y3B1IDQzIHRvIHJ1bnF1ZXVlIDIKKFhFTikgQWRkaW5nIGNwdSA0NCB0byBydW5xdWV1ZSAyCihY
RU4pIEFkZGluZyBjcHUgNDUgdG8gcnVucXVldWUgMgooWEVOKSBBZGRpbmcgY3B1IDQ2IHRvIHJ1
bnF1ZXVlIDIKKFhFTikgQWRkaW5nIGNwdSA0NyB0byBydW5xdWV1ZSAyCihYRU4pIG1jaGVja19w
b2xsOiBNYWNoaW5lIGNoZWNrIHBvbGxpbmcgdGltZXIgc3RhcnRlZC4KKFhFTikgeGVub3Byb2Y6
IEluaXRpYWxpemF0aW9uIGZhaWxlZC4gQU1EIHByb2Nlc3NvciBmYW1pbHkgMjUgaXMgbm90IHN1
cHBvcnRlZAooWEVOKSBOWCAoRXhlY3V0ZSBEaXNhYmxlKSBwcm90ZWN0aW9uIGFjdGl2ZQooWEVO
KSBEb20wIGhhcyBtYXhpbXVtIDE0MDAgUElSUXMKKFhFTikgKioqIEJ1aWxkaW5nIGEgUFYgRG9t
MCAqKioKKFhFTikgIFhlbiAga2VybmVsOiA2NC1iaXQsIGxzYgooWEVOKSAgRG9tMCBrZXJuZWw6
IDY0LWJpdCwgUEFFLCBsc2IsIHBhZGRyIDB4MTAwMDAwMCAtPiAweDRhMDAwMDAKKFhFTikgUEhZ
U0lDQUwgTUVNT1JZIEFSUkFOR0VNRU5UOgooWEVOKSAgRG9tMCBhbGxvYy46ICAgMDAwMDAwM2Zj
ODAwMDAwMC0+MDAwMDAwM2ZkMDAwMDAwMCAoMjA1Mzk5NiBwYWdlcyB0byBiZSBhbGxvY2F0ZWQp
CihYRU4pICBJbml0LiByYW1kaXNrOiAwMDAwMDA0MDNiMTZjMDAwLT4wMDAwMDA0MDNkOWZmMWM2
CihYRU4pIFZJUlRVQUwgTUVNT1JZIEFSUkFOR0VNRU5UOgooWEVOKSAgTG9hZGVkIGtlcm5lbDog
ZmZmZmZmZmY4MTAwMDAwMC0+ZmZmZmZmZmY4NGEwMDAwMAooWEVOKSAgUGh5cy1NYWNoIG1hcDog
MDAwMDAwODAwMDAwMDAwMC0+MDAwMDAwODAwMTAwMDAwMAooWEVOKSAgU3RhcnQgaW5mbzogICAg
ZmZmZmZmZmY4NGEwMDAwMC0+ZmZmZmZmZmY4NGEwMDRiOAooWEVOKSAgUGFnZSB0YWJsZXM6ICAg
ZmZmZmZmZmY4NGEwMTAwMC0+ZmZmZmZmZmY4NGEyYTAwMAooWEVOKSAgQm9vdCBzdGFjazogICAg
ZmZmZmZmZmY4NGEyYTAwMC0+ZmZmZmZmZmY4NGEyYjAwMAooWEVOKSAgVE9UQUw6ICAgICAgICAg
ZmZmZmZmZmY4MDAwMDAwMC0+ZmZmZmZmZmY4NGMwMDAwMAooWEVOKSAgRU5UUlkgQUREUkVTUzog
ZmZmZmZmZmY4MzA2ZTFjMAooWEVOKSBEb20wIGhhcyBtYXhpbXVtIDQ4IFZDUFVzCihYRU4pIElu
aXRpYWwgbG93IG1lbW9yeSB2aXJxIHRocmVzaG9sZCBzZXQgYXQgMHg0MDAwIHBhZ2VzLgooWEVO
KSBTY3J1YmJpbmcgRnJlZSBSQU0gaW4gYmFja2dyb3VuZAooWEVOKSBTdGQuIExvZ2xldmVsOiBB
bGwKKFhFTikgR3Vlc3QgTG9nbGV2ZWw6IEFsbAooWEVOKSAqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKFhFTikgV0FSTklORzogQ09OU09MRSBPVVRQ
VVQgSVMgU1lOQ0hST05PVVMKKFhFTikgVGhpcyBvcHRpb24gaXMgaW50ZW5kZWQgdG8gYWlkIGRl
YnVnZ2luZyBvZiBYZW4gYnkgZW5zdXJpbmcKKFhFTikgdGhhdCBhbGwgb3V0cHV0IGlzIHN5bmNo
cm9ub3VzbHkgZGVsaXZlcmVkIG9uIHRoZSBzZXJpYWwgbGluZS4KKFhFTikgSG93ZXZlciBpdCBj
YW4gaW50cm9kdWNlIFNJR05JRklDQU5UIGxhdGVuY2llcyBhbmQgYWZmZWN0CihYRU4pIHRpbWVr
ZWVwaW5nLiBJdCBpcyBOT1QgcmVjb21tZW5kZWQgZm9yIHByb2R1Y3Rpb24gdXNlIQooWEVOKSAq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKFhFTikg
My4uLiAyLi4uIDEuLi4gCihYRU4pIFhlbiBpcyByZWxpbnF1aXNoaW5nIFZHQSBjb25zb2xlLgoo
WEVOKSAqKiogU2VyaWFsIGlucHV0IHRvIERPTTAgKHR5cGUgJ0NUUkwtYScgdGhyZWUgdGltZXMg
dG8gc3dpdGNoIGlucHV0KQooWEVOKSBGcmVlZCA2NDRrQiBpbml0IG1lbW9yeQptYXBwaW5nIGtl
cm5lbCBpbnRvIHBoeXNpY2FsIG1lbW9yeQphYm91dCB0byBnZXQgc3RhcnRlZC4uLgpYZW4gaHlw
ZXJ2aXNvciBhbGxvY2F0ZWQga2VybmVsIG1lbW9yeSBjb25mbGljdHMgd2l0aCBFODIwIG1hcAoo
WEVOKSBIYXJkd2FyZSBEb20wIGhhbHRlZDogaGFsdGluZyBtYWNoaW5lCgo=
--000000000000610871060f051f79--


From xen-devel-bounces@lists.xenproject.org Tue Jan 16 01:33:14 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 16 Jan 2024 01:33:14 +0000
Received: from list by lists.xenproject.org with outflank-mailman.667603.1039020 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPYJz-0003T6-2h; Tue, 16 Jan 2024 01:32:55 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 667603.1039020; Tue, 16 Jan 2024 01:32:55 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPYJy-0003Sz-U0; Tue, 16 Jan 2024 01:32:54 +0000
Received: by outflank-mailman (input) for mailman id 667603;
 Tue, 16 Jan 2024 01:32:53 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rPYJx-0003Sp-Od; Tue, 16 Jan 2024 01:32:53 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rPYJx-0003QM-IA; Tue, 16 Jan 2024 01:32:53 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rPYJw-0007Ah-Ss; Tue, 16 Jan 2024 01:32:53 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rPYJw-0004dy-RG; Tue, 16 Jan 2024 01:32:52 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=4SSqhwULQRlPc7a+tqH+PEpvibY7ndabU5Krds2cW3w=; b=WMlZJqeYHhrBRBQQRnMShBGx1W
	DWH3szL2ICmuBby1ONx101KG8hgFUBl1Way4a26hLr0SHMEDf/SdMgQiFaIeN/Ac0KmBxfV0fLLvy
	UinV/t3qQutUsRFAUzemnkCxZ580D58+LouUp7olnOBFxLN4cXtz3oWQN1fhRgllVlrg=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184358-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [xen-unstable test] 184358: tolerable FAIL - PUSHED
X-Osstest-Failures:
    xen-unstable:test-armhf-armhf-libvirt:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-amd64-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-raw:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-amd64-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-qcow2:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-qemuu-nested-amd:debian-hvm-install/l1/l2:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-amd64-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-i386-libvirt-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-libvirt:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-pvshim:guest-start:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-thunderx:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-xsm:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-thunderx:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-credit2:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-credit2:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-libvirt-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-libvirt-xsm:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-credit1:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-credit1:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit1:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit1:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-multivcpu:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-multivcpu:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit2:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit2:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-libvirt-raw:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-libvirt-raw:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-libvirt-raw:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt-vhd:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-vhd:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-vhd:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-raw:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-vhd:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-vhd:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-rtds:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-rtds:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-arndale:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-arndale:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-qcow2:migrate-support-check:fail:nonblocking
X-Osstest-Versions-This:
    xen=c2ce3466472e9c9eda79f5dc98eb701bc6fdba20
X-Osstest-Versions-That:
    xen=1ec3fe1f664fa837daf31e9fa8938f6109464f28
From: osstest service owner <osstest-admin@xenproject.org>
Date: Tue, 16 Jan 2024 01:32:52 +0000

flight 184358 xen-unstable real [real]
http://logs.test-lab.xenproject.org/osstest/logs/184358/

Failures :-/ but no regressions.

Tests which did not succeed, but are not blocking:
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 184347
 test-amd64-amd64-xl-qemut-win7-amd64 19 guest-stop            fail like 184347
 test-amd64-i386-xl-qemuu-win7-amd64 19 guest-stop             fail like 184347
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 184347
 test-amd64-i386-xl-qemut-ws16-amd64 19 guest-stop             fail like 184347
 test-armhf-armhf-libvirt-raw 15 saverestore-support-check    fail  like 184347
 test-amd64-i386-xl-qemut-win7-amd64 19 guest-stop             fail like 184347
 test-amd64-amd64-xl-qemut-ws16-amd64 19 guest-stop            fail like 184347
 test-armhf-armhf-libvirt-qcow2 15 saverestore-support-check   fail like 184347
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 184347
 test-amd64-i386-xl-qemuu-ws16-amd64 19 guest-stop             fail like 184347
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 184347
 test-amd64-i386-libvirt-xsm  15 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-amd64-i386-libvirt      15 migrate-support-check        fail   never pass
 test-amd64-i386-xl-pvshim    14 guest-start                  fail   never pass
 test-arm64-arm64-xl          15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-xsm      15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-thunderx 15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl          16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-xsm      16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-thunderx 16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-credit2  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit2  16 saverestore-support-check    fail   never pass
 test-arm64-arm64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-xsm 16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-credit1  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit1  16 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt     15 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-armhf-armhf-xl-credit1  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit1  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-multivcpu 15 migrate-support-check        fail  never pass
 test-armhf-armhf-xl-multivcpu 16 saverestore-support-check    fail  never pass
 test-armhf-armhf-libvirt     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-credit2  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit2  16 saverestore-support-check    fail   never pass
 test-amd64-i386-libvirt-raw  14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 15 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-vhd 14 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-vhd      14 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-vhd      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-raw 14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-rtds     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-rtds     16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-arndale  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-arndale  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-qcow2 14 migrate-support-check        fail never pass

version targeted for testing:
 xen                  c2ce3466472e9c9eda79f5dc98eb701bc6fdba20
baseline version:
 xen                  1ec3fe1f664fa837daf31e9fa8938f6109464f28

Last test of basis   184347  2024-01-15 01:52:33 Z    0 days
Testing same since   184358  2024-01-15 14:41:38 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Andrew Cooper <andrew.cooper3@citrix.com>
  Jan Beulich <jbeulich@suse.com>
  Oleksii Kurochko <oleksii.kurochko@gmail.com>
  Roger Pau Monné <roger.pau@citrix.com>

jobs:
 build-amd64-xsm                                              pass    
 build-arm64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64-xtf                                              pass    
 build-amd64                                                  pass    
 build-arm64                                                  pass    
 build-armhf                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-arm64-libvirt                                          pass    
 build-armhf-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-prev                                             pass    
 build-i386-prev                                              pass    
 build-amd64-pvops                                            pass    
 build-arm64-pvops                                            pass    
 build-armhf-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-xtf-amd64-amd64-1                                       pass    
 test-xtf-amd64-amd64-2                                       pass    
 test-xtf-amd64-amd64-3                                       pass    
 test-xtf-amd64-amd64-4                                       pass    
 test-xtf-amd64-amd64-5                                       pass    
 test-amd64-amd64-xl                                          pass    
 test-amd64-coresched-amd64-xl                                pass    
 test-arm64-arm64-xl                                          pass    
 test-armhf-armhf-xl                                          pass    
 test-amd64-i386-xl                                           pass    
 test-amd64-coresched-i386-xl                                 pass    
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm           pass    
 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm            pass    
 test-amd64-amd64-xl-qemut-stubdom-debianhvm-amd64-xsm        pass    
 test-amd64-i386-xl-qemut-stubdom-debianhvm-amd64-xsm         pass    
 test-amd64-amd64-xl-qemut-debianhvm-i386-xsm                 pass    
 test-amd64-i386-xl-qemut-debianhvm-i386-xsm                  pass    
 test-amd64-amd64-xl-qemuu-debianhvm-i386-xsm                 pass    
 test-amd64-i386-xl-qemuu-debianhvm-i386-xsm                  pass    
 test-amd64-amd64-libvirt-xsm                                 pass    
 test-arm64-arm64-libvirt-xsm                                 pass    
 test-amd64-i386-libvirt-xsm                                  pass    
 test-amd64-amd64-xl-xsm                                      pass    
 test-arm64-arm64-xl-xsm                                      pass    
 test-amd64-i386-xl-xsm                                       pass    
 test-amd64-amd64-qemuu-nested-amd                            fail    
 test-amd64-amd64-xl-pvhv2-amd                                pass    
 test-amd64-i386-qemut-rhel6hvm-amd                           pass    
 test-amd64-i386-qemuu-rhel6hvm-amd                           pass    
 test-amd64-amd64-dom0pvh-xl-amd                              pass    
 test-amd64-amd64-xl-qemut-debianhvm-amd64                    pass    
 test-amd64-i386-xl-qemut-debianhvm-amd64                     pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64                    pass    
 test-amd64-i386-xl-qemuu-debianhvm-amd64                     pass    
 test-amd64-i386-freebsd10-amd64                              pass    
 test-amd64-amd64-qemuu-freebsd11-amd64                       pass    
 test-amd64-amd64-qemuu-freebsd12-amd64                       pass    
 test-amd64-amd64-xl-qemuu-ovmf-amd64                         pass    
 test-amd64-i386-xl-qemuu-ovmf-amd64                          pass    
 test-amd64-amd64-xl-qemut-win7-amd64                         fail    
 test-amd64-i386-xl-qemut-win7-amd64                          fail    
 test-amd64-amd64-xl-qemuu-win7-amd64                         fail    
 test-amd64-i386-xl-qemuu-win7-amd64                          fail    
 test-amd64-amd64-xl-qemut-ws16-amd64                         fail    
 test-amd64-i386-xl-qemut-ws16-amd64                          fail    
 test-amd64-amd64-xl-qemuu-ws16-amd64                         fail    
 test-amd64-i386-xl-qemuu-ws16-amd64                          fail    
 test-armhf-armhf-xl-arndale                                  pass    
 test-amd64-amd64-examine-bios                                pass    
 test-amd64-i386-examine-bios                                 pass    
 test-amd64-amd64-xl-credit1                                  pass    
 test-arm64-arm64-xl-credit1                                  pass    
 test-armhf-armhf-xl-credit1                                  pass    
 test-amd64-amd64-xl-credit2                                  pass    
 test-arm64-arm64-xl-credit2                                  pass    
 test-armhf-armhf-xl-credit2                                  pass    
 test-amd64-amd64-xl-qemuu-dmrestrict-amd64-dmrestrict        pass    
 test-amd64-i386-xl-qemuu-dmrestrict-amd64-dmrestrict         pass    
 test-amd64-amd64-examine                                     pass    
 test-arm64-arm64-examine                                     pass    
 test-armhf-armhf-examine                                     pass    
 test-amd64-i386-examine                                      pass    
 test-amd64-i386-freebsd10-i386                               pass    
 test-amd64-amd64-qemuu-nested-intel                          pass    
 test-amd64-amd64-xl-pvhv2-intel                              pass    
 test-amd64-i386-qemut-rhel6hvm-intel                         pass    
 test-amd64-i386-qemuu-rhel6hvm-intel                         pass    
 test-amd64-amd64-dom0pvh-xl-intel                            pass    
 test-amd64-amd64-libvirt                                     pass    
 test-armhf-armhf-libvirt                                     pass    
 test-amd64-i386-libvirt                                      pass    
 test-amd64-amd64-livepatch                                   pass    
 test-amd64-i386-livepatch                                    pass    
 test-amd64-amd64-migrupgrade                                 pass    
 test-amd64-i386-migrupgrade                                  pass    
 test-amd64-amd64-xl-multivcpu                                pass    
 test-armhf-armhf-xl-multivcpu                                pass    
 test-amd64-amd64-pair                                        pass    
 test-amd64-i386-pair                                         pass    
 test-amd64-amd64-libvirt-pair                                pass    
 test-amd64-i386-libvirt-pair                                 pass    
 test-amd64-amd64-xl-pvshim                                   pass    
 test-amd64-i386-xl-pvshim                                    fail    
 test-amd64-amd64-pygrub                                      pass    
 test-armhf-armhf-libvirt-qcow2                               pass    
 test-amd64-amd64-xl-qcow2                                    pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-armhf-armhf-libvirt-raw                                 pass    
 test-amd64-i386-libvirt-raw                                  pass    
 test-amd64-amd64-xl-rtds                                     pass    
 test-armhf-armhf-xl-rtds                                     pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64-shadow             pass    
 test-amd64-i386-xl-qemuu-debianhvm-amd64-shadow              pass    
 test-amd64-amd64-xl-shadow                                   pass    
 test-amd64-i386-xl-shadow                                    pass    
 test-arm64-arm64-xl-thunderx                                 pass    
 test-amd64-amd64-examine-uefi                                pass    
 test-amd64-i386-examine-uefi                                 pass    
 test-amd64-amd64-libvirt-vhd                                 pass    
 test-arm64-arm64-xl-vhd                                      pass    
 test-armhf-armhf-xl-vhd                                      pass    
 test-amd64-i386-xl-vhd                                       pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Pushing revision :

To xenbits.xen.org:/home/xen/git/xen.git
   1ec3fe1f66..c2ce346647  c2ce3466472e9c9eda79f5dc98eb701bc6fdba20 -> master


From xen-devel-bounces@lists.xenproject.org Tue Jan 16 02:21:24 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 16 Jan 2024 02:21:24 +0000
Received: from list by lists.xenproject.org with outflank-mailman.667622.1039081 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPZ4k-0002L8-7L; Tue, 16 Jan 2024 02:21:14 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 667622.1039081; Tue, 16 Jan 2024 02:21:14 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPZ4k-0002L1-4p; Tue, 16 Jan 2024 02:21:14 +0000
Received: by outflank-mailman (input) for mailman id 667622;
 Tue, 16 Jan 2024 02:21:12 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=7at1=I2=invisiblethingslab.com=marmarek@srs-se1.protection.inumbo.net>)
 id 1rPZ4h-0002Kv-MZ
 for xen-devel@lists.xenproject.org; Tue, 16 Jan 2024 02:21:12 +0000
Received: from wout5-smtp.messagingengine.com (wout5-smtp.messagingengine.com
 [64.147.123.21]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id e6538606-b415-11ee-9b0f-b553b5be7939;
 Tue, 16 Jan 2024 03:21:07 +0100 (CET)
Received: from compute6.internal (compute6.nyi.internal [10.202.2.47])
 by mailout.west.internal (Postfix) with ESMTP id 3B7E63200AE8
 for <xen-devel@lists.xenproject.org>; Mon, 15 Jan 2024 21:21:03 -0500 (EST)
Received: from mailfrontend1 ([10.202.2.162])
 by compute6.internal (MEProxy); Mon, 15 Jan 2024 21:21:03 -0500
Received: by mail.messagingengine.com (Postfix) with ESMTPA for
 <xen-devel@lists.xenproject.org>; Mon, 15 Jan 2024 21:21:01 -0500 (EST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: e6538606-b415-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=
	invisiblethingslab.com; h=cc:content-type:content-type:date:date
	:from:from:in-reply-to:message-id:mime-version:reply-to:subject
	:subject:to:to; s=fm2; t=1705371662; x=1705458062; bh=hS0UojFRdh
	zBlNJfcpyO9rDBLkhBtNBQSaj5BRPJAUA=; b=JnyaKQD+NlFrEv1IMtMPFvzce9
	TooW77e4eBmGqZubiE3AhEasgOufrLN9XuMyCUGQPmrxSFwHB9/WO1LOJDGyt4Yk
	GwQ0PWVQT7iKhyIfKtLQQdFqguT2z1LTZnpalzbLWz2JvWg8tC0nYcUW/NAsBBLZ
	AhjHWLg8zOQ19jT+9Mh41/WtXkQrWoG5MeQHGKwavtQP8qrC87U+5WzSZ7uYzsJx
	QozvG395HQ8aCUqh/KOihCehAJ8SDF9F+pRDljRclmjocX15XbFosk2dUvdhKbKp
	Bbc9XrXDwS82OWqjj83MQmBKqhr2nZ6sp6ArVP1uyKccBxz2q2CdeXJOOYTQ==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=
	messagingengine.com; h=cc:content-type:content-type:date:date
	:feedback-id:feedback-id:from:from:in-reply-to:message-id
	:mime-version:reply-to:subject:subject:to:to:x-me-proxy
	:x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s=fm3; t=
	1705371662; x=1705458062; bh=hS0UojFRdhzBlNJfcpyO9rDBLkhBtNBQSaj
	5BRPJAUA=; b=kQLCbKFdRQU1o3IgFcvBWeSKk32Lt30huN1YLtkOwi43x9ykxDE
	40c84wRuPvDfFJJgCR3T+IRB8896VUL0b8U2FNxB2zas+96yx/rxgIbwioqT2Giy
	w+nBkfUyahEUGNUTlxM/oh8iGt8QxuKsNw82SgCzzLphqSnupPkOi11co5OecrLQ
	ulGy4z2SftVdx8eGxTwWOjZnUzrEvodRN24ECGs6nFxsyKdkkvq7vgJy7KALl3rT
	YriNhiS5aa/VREscC9vqWUifEf6v9LS0QZ2Q63PW0B2HcS+5SLnCkpE2/5mzf1je
	EAuEn+WpbwoNTCftuA9i0EmomNqtxnQOyhA==
X-ME-Sender: <xms:DuilZVuD03qECbo1otNupUpahyDsq6ODvhwLiDKowwkIFHFINO7tBg>
    <xme:DuilZefL7J0Ye0Yklf2vFMF7XG-Io-pSrNAqg-HN2Z3FNlExrar5QfE5kR4-4uTvl
    5Edy3tVuDl5AA>
X-ME-Received: <xmr:DuilZYyzWD-ksZVBWkC8pGXkHRuj9kkDkHIiqnm5ME57uAun9R3OPLBn6QTN-uF95AOrsXsNcaDTnuv40Q3cSTa1ZLR0iSOTLw>
X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvkedrvdejvddggeeiucetufdoteggodetrfdotf
    fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen
    uceurghilhhouhhtmecufedttdenucenucfjughrpeffhffvuffkgggtugesghdtroertd
    dtjeenucfhrhhomhepofgrrhgvkhcuofgrrhgtiiihkhhofihskhhiqdfikphrvggtkhhi
    uceomhgrrhhmrghrvghksehinhhvihhsihgslhgvthhhihhnghhslhgrsgdrtghomheqne
    cuggftrfgrthhtvghrnhepvdekhfefjedvvdfffeffgeeitdevhefhfeetteetffeigfei
    keelteeuffetjeejnecuvehluhhsthgvrhfuihiivgeptdenucfrrghrrghmpehmrghilh
    hfrhhomhepmhgrrhhmrghrvghksehinhhvihhsihgslhgvthhhihhnghhslhgrsgdrtgho
    mh
X-ME-Proxy: <xmx:DuilZcOmB9wXFypfRbjx7rTfQe-WNszhg6B8Mn6koYBueRYSYPEp9g>
    <xmx:DuilZV_3HKE9wJ44TX3kaMwXJ_ZzbAPoSEBDb2V2CwAOBmxJmBPc7g>
    <xmx:DuilZcVJD46-_1kipHwpmz5zJsSv5roCkgWS8_AucZRANCkHuyv-7w>
    <xmx:DuilZYLeUEEvr-0IuTTUBYyAMOGMp-SWdtjnKWhmPw0pxflb5t4DIA>
Feedback-ID: i1568416f:Fastmail
Date: Tue, 16 Jan 2024 03:20:56 +0100
From: Marek =?utf-8?Q?Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
To: xen-devel <xen-devel@lists.xenproject.org>
Subject: Thunderbolt (and other PCI hotplug) isolation
Message-ID: <ZaXoCXNhYSnhLyOe@mail-itl>
MIME-Version: 1.0
Content-Type: multipart/signed; micalg=pgp-sha256;
	protocol="application/pgp-signature"; boundary="AEoi9AZsi/4cq/II"
Content-Disposition: inline


--AEoi9AZsi/4cq/II
Content-Type: text/plain; protected-headers=v1; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable
Date: Tue, 16 Jan 2024 03:20:56 +0100
From: Marek =?utf-8?Q?Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
To: xen-devel <xen-devel@lists.xenproject.org>
Subject: Thunderbolt (and other PCI hotplug) isolation

Hi,

A little background:
In Qubes OS we try to isolate external (especially hot pluggable)
devices as much as possible. For PCI devices, we do PCI passthrough to
dedicated domains (sys-net, sys-usb - mostly the latter). The goal is to
prevent unauthorized device to compromise the whole system, especially
using DMA (either initiated by a malicious device itself, or by a
compromised driver). For the discussion here, lets ignore what happens
before Xen starts.

The matter becomes much more complicated for hot plugged devices. I did
some test recently, enabled PCI hoplug in dom0 kernel (we have it
disabled by default), and this is what I got:
1. Hot plugged devices were properly detected, and dom0 told Xen about
them. In my case, it was two PCI bridges and an NVMe disk.
2. New devices were assigned to dom0 automatically.
3. New leaf device (the disk) can be assigned to a HVM domU and seems to wo=
rk.
4. The bridges cannot be assigned to a domU.

Now, there are (at least) two problems with the above:
i) The second point above: new device automatically gain ability to DMA (at
least) into dom0 memory. I guess this should be easy-ish solvable for
leaf devices by assigning them to a quarantine domain by default. There
is an issue how to decide what devices to handle this way (for example,
what about external devices present during Xen/dom0 startup already),
but it feels like a problem solvable with some configuration. And of
course dom0 will need to be adjusted to not talk to such devices
automatically (via drivers blacklisting or similar approach). But for
the bridge devices, it's more complicated, basically the second point
below.

ii) The fourth point above: an external PCI device remains in dom0
(including being able to dom0 into dom0's memory) just because it happen
to have some specific bits in its config space set. When considering
malicious device, it doesn't even need to function as a bridge - it's
just enough to present itself as a bridge, wait for dom0's thunderbolt
driver to authorize the device so it gets assigned dom0's IOMMU context,
and boom. On the other hand, a bridge has privileged function by
design, for example IIUC takes part in discovering devices behind it
(which then needs to be properly registered in Xen, assigned IOMMU
context etc).

iii) Untested, but it feels like there is a lot of room for various race
conditions in the hot plug handling. For example, device must be
allowed any DMA only after its IOMMU context is properly configured. I
believe thunderbolt technically allows that (plain PCIe hotplug most
likely not), but my guess is it's not the case currently.

My question is mostly: what can be done about the "ii" problem above?

--=20
Best Regards,
Marek Marczykowski-G=C3=B3recki
Invisible Things Lab

--AEoi9AZsi/4cq/II
Content-Type: application/pgp-signature; name="signature.asc"

-----BEGIN PGP SIGNATURE-----

iQEzBAEBCAAdFiEEhrpukzGPukRmQqkK24/THMrX1ywFAmWl6AkACgkQ24/THMrX
1yzaRQf9Gb5nn/liUB+T5nYU/4GN2pIFyBrooeAQ2OwDJUFvS9gpw/3L+jHBWMJO
UsegKxes8mz+9gdJtgVmJ2DOAEMsMsGVbc0s8z8GlMW4w5DQBODYoQ2oebF/o+V7
slBqbHKXJeBXtdKYIdqeHXXyE6mHh7q7nOEdFQWfrqQuNp3sF9LWaNCPlXfJss4t
1QdOXCbW6cyD0GnjpEmhqthv5AyVU69dgvS4eP1leL7Kz3Q17PEavy+FIeJiH2h2
5u8xLZBrullUV3TiG8KWQIeprHu6/aEyGCO7pQAlp1WB6L6V9LkvII/OMC7CGSNg
6K69rCZouA8otttIMbtZaHKvIgsBeA==
=XOdg
-----END PGP SIGNATURE-----

--AEoi9AZsi/4cq/II--


From xen-devel-bounces@lists.xenproject.org Tue Jan 16 03:53:13 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 16 Jan 2024 03:53:13 +0000
Received: from list by lists.xenproject.org with outflank-mailman.667626.1039092 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPaVW-0005FI-Qg; Tue, 16 Jan 2024 03:52:58 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 667626.1039092; Tue, 16 Jan 2024 03:52:58 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPaVW-0005FB-NP; Tue, 16 Jan 2024 03:52:58 +0000
Received: by outflank-mailman (input) for mailman id 667626;
 Tue, 16 Jan 2024 03:52:57 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=oUTP=I2=intel.com=lkp@srs-se1.protection.inumbo.net>)
 id 1rPaVV-0005F5-Cn
 for xen-devel@lists.xenproject.org; Tue, 16 Jan 2024 03:52:57 +0000
Received: from mgamail.intel.com (mgamail.intel.com [192.55.52.88])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id b8c3a3e6-b422-11ee-98f1-6d05b1d4d9a1;
 Tue, 16 Jan 2024 04:52:53 +0100 (CET)
Received: from orviesa001.jf.intel.com ([10.64.159.141])
 by fmsmga101.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;
 15 Jan 2024 19:52:50 -0800
Received: from lkp-server02.sh.intel.com (HELO b07ab15da5fe) ([10.239.97.151])
 by orviesa001.jf.intel.com with ESMTP; 15 Jan 2024 19:52:48 -0800
Received: from kbuild by b07ab15da5fe with local (Exim 4.96)
 (envelope-from <lkp@intel.com>) id 1rPaSs-000CwO-1n;
 Tue, 16 Jan 2024 03:51:17 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: b8c3a3e6-b422-11ee-98f1-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple;
  d=intel.com; i=@intel.com; q=dns/txt; s=Intel;
  t=1705377173; x=1736913173;
  h=date:from:to:cc:subject:message-id:references:
   mime-version:in-reply-to;
  bh=Q7/n37rsiUDah4i6i7efQa9HUh2Mt2hfaHw7PEa91PA=;
  b=SRT3rssof3AVhP/2kIcj9L5QT+KxiAhzuYcbEa0jEEbfXwku5PQ4RTYn
   DrnR2k1cjr19wbM41swJfW5pHYFkw7evUzOencT05BPM73CNomGsMflLc
   KRmGu6D8W3Xy2jWt0KPvc5w2iaYj/t7MxvE44HoJh1+v3VFtwYhxwNypB
   fkfMSzBfuxeKot4JEzllmc7e8KyiIsFalBFMXwjwb9VcOEMHpTVdHMmfr
   sMPZMbabtCr3SE5uYX45pVDPqoc287IbtPu3mcHzuDc6dbyPbi4bGnfdT
   bRw9zUA5R8TKxU0XD3QZPIU2mpSicAbpK+1+3XKTVFHI5ZZLkKedQxSsL
   g==;
X-IronPort-AV: E=McAfee;i="6600,9927,10954"; a="430914076"
X-IronPort-AV: E=Sophos;i="6.04,198,1695711600"; 
   d="scan'208";a="430914076"
X-ExtLoop1: 1
X-IronPort-AV: E=Sophos;i="6.04,198,1695711600"; 
   d="scan'208";a="32314188"
Date: Tue, 16 Jan 2024 11:45:50 +0800
From: kernel test robot <lkp@intel.com>
To: Kunwu Chan <chentao@kylinos.cn>, jgross@suse.com,
	boris.ostrovsky@oracle.com, tglx@linutronix.de, mingo@redhat.com,
	bp@alien8.de, dave.hansen@linux.intel.com, x86@kernel.org,
	hpa@zytor.com
Cc: llvm@lists.linux.dev, oe-kbuild-all@lists.linux.dev,
	xen-devel@lists.xenproject.org, linux-kernel@vger.kernel.org,
	Kunwu Chan <chentao@kylinos.cn>
Subject: Re: [PATCH] x86/xen: Fix some null pointer dereference issues in
 smp.c
Message-ID: <202401161119.iof6BQsf-lkp@intel.com>
References: <20240115100138.34340-1-chentao@kylinos.cn>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <20240115100138.34340-1-chentao@kylinos.cn>

Hi Kunwu,

kernel test robot noticed the following build warnings:

[auto build test WARNING on tip/x86/core]
[also build test WARNING on linus/master v6.7 next-20240112]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]

url:    https://github.com/intel-lab-lkp/linux/commits/Kunwu-Chan/x86-xen-Fix-some-null-pointer-dereference-issues-in-smp-c/20240115-180429
base:   tip/x86/core
patch link:    https://lore.kernel.org/r/20240115100138.34340-1-chentao%40kylinos.cn
patch subject: [PATCH] x86/xen: Fix some null pointer dereference issues in smp.c
config: x86_64-rhel-8.3-rust (https://download.01.org/0day-ci/archive/20240116/202401161119.iof6BQsf-lkp@intel.com/config)
compiler: ClangBuiltLinux clang version 17.0.6 (https://github.com/llvm/llvm-project 6009708b4367171ccdbf4b5905cb6a803753fe18)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240116/202401161119.iof6BQsf-lkp@intel.com/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202401161119.iof6BQsf-lkp@intel.com/

All warnings (new ones prefixed by >>):

>> arch/x86/xen/smp.c:68:6: warning: variable 'rc' is used uninitialized whenever 'if' condition is true [-Wsometimes-uninitialized]
      68 |         if (!resched_name)
         |             ^~~~~~~~~~~~~
   arch/x86/xen/smp.c:127:9: note: uninitialized use occurs here
     127 |         return rc;
         |                ^~
   arch/x86/xen/smp.c:68:2: note: remove the 'if' if its condition is always false
      68 |         if (!resched_name)
         |         ^~~~~~~~~~~~~~~~~~
      69 |                 goto fail;
         |                 ~~~~~~~~~
   arch/x86/xen/smp.c:64:8: note: initialize the variable 'rc' to silence this warning
      64 |         int rc;
         |               ^
         |                = 0
   1 warning generated.


vim +68 arch/x86/xen/smp.c

    61	
    62	int xen_smp_intr_init(unsigned int cpu)
    63	{
    64		int rc;
    65		char *resched_name, *callfunc_name, *debug_name;
    66	
    67		resched_name = kasprintf(GFP_KERNEL, "resched%d", cpu);
  > 68		if (!resched_name)
    69			goto fail;
    70		per_cpu(xen_resched_irq, cpu).name = resched_name;
    71		rc = bind_ipi_to_irqhandler(XEN_RESCHEDULE_VECTOR,
    72					    cpu,
    73					    xen_reschedule_interrupt,
    74					    IRQF_PERCPU|IRQF_NOBALANCING,
    75					    resched_name,
    76					    NULL);
    77		if (rc < 0)
    78			goto fail;
    79		per_cpu(xen_resched_irq, cpu).irq = rc;
    80	
    81		callfunc_name = kasprintf(GFP_KERNEL, "callfunc%d", cpu);
    82		if (!callfunc_name)
    83			goto fail;
    84		per_cpu(xen_callfunc_irq, cpu).name = callfunc_name;
    85		rc = bind_ipi_to_irqhandler(XEN_CALL_FUNCTION_VECTOR,
    86					    cpu,
    87					    xen_call_function_interrupt,
    88					    IRQF_PERCPU|IRQF_NOBALANCING,
    89					    callfunc_name,
    90					    NULL);
    91		if (rc < 0)
    92			goto fail;
    93		per_cpu(xen_callfunc_irq, cpu).irq = rc;
    94	
    95		if (!xen_fifo_events) {
    96			debug_name = kasprintf(GFP_KERNEL, "debug%d", cpu);
    97			if (!debug_name)
    98				goto fail;
    99			per_cpu(xen_debug_irq, cpu).name = debug_name;
   100			rc = bind_virq_to_irqhandler(VIRQ_DEBUG, cpu,
   101						     xen_debug_interrupt,
   102						     IRQF_PERCPU | IRQF_NOBALANCING,
   103						     debug_name, NULL);
   104			if (rc < 0)
   105				goto fail;
   106			per_cpu(xen_debug_irq, cpu).irq = rc;
   107		}
   108	
   109		callfunc_name = kasprintf(GFP_KERNEL, "callfuncsingle%d", cpu);
   110		if (!callfunc_name)
   111			goto fail;
   112		per_cpu(xen_callfuncsingle_irq, cpu).name = callfunc_name;
   113		rc = bind_ipi_to_irqhandler(XEN_CALL_FUNCTION_SINGLE_VECTOR,
   114					    cpu,
   115					    xen_call_function_single_interrupt,
   116					    IRQF_PERCPU|IRQF_NOBALANCING,
   117					    callfunc_name,
   118					    NULL);
   119		if (rc < 0)
   120			goto fail;
   121		per_cpu(xen_callfuncsingle_irq, cpu).irq = rc;
   122	
   123		return 0;
   124	
   125	 fail:
   126		xen_smp_intr_free(cpu);
   127		return rc;
   128	}
   129	

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki


From xen-devel-bounces@lists.xenproject.org Tue Jan 16 05:09:27 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 16 Jan 2024 05:09:27 +0000
Received: from list by lists.xenproject.org with outflank-mailman.667632.1039101 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPbhG-00071F-9l; Tue, 16 Jan 2024 05:09:10 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 667632.1039101; Tue, 16 Jan 2024 05:09:10 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPbhG-000718-7G; Tue, 16 Jan 2024 05:09:10 +0000
Received: by outflank-mailman (input) for mailman id 667632;
 Tue, 16 Jan 2024 05:09:09 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rPbhF-00070y-7f; Tue, 16 Jan 2024 05:09:09 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rPbhF-0008Op-0r; Tue, 16 Jan 2024 05:09:09 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rPbhE-0007mF-MF; Tue, 16 Jan 2024 05:09:08 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rPbhE-0002jy-LR; Tue, 16 Jan 2024 05:09:08 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=pusxxcXGI44P7X/Kt5iFA6Wygkf6ajKuUNVWWk3D8Rg=; b=GWIQ6HUUkGsiJ7njYqH3+2eM08
	TSdnazlAuEh24z2K5pqGcFFKSbl/7j61wC552vJiuK7ivVHJ5T4/e9Wi/PTODL5P2K9uRFGUiseiV
	o5JRk8I1qB6MZ/Ts2roFrzrhdcCy3slbxfYQZWVHsLc6Zep+1B/M0v9vRx5HZizY293Q=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184359-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [linux-linus test] 184359: regressions - FAIL
X-Osstest-Failures:
    linux-linus:test-amd64-amd64-xl-vhd:<job status>:broken:regression
    linux-linus:test-arm64-arm64-xl-credit1:debian-install:fail:regression
    linux-linus:test-arm64-arm64-xl-xsm:debian-install:fail:regression
    linux-linus:test-arm64-arm64-xl:debian-install:fail:regression
    linux-linus:test-arm64-arm64-xl-thunderx:debian-install:fail:regression
    linux-linus:test-arm64-arm64-xl-credit2:debian-install:fail:regression
    linux-linus:test-arm64-arm64-libvirt-xsm:debian-install:fail:regression
    linux-linus:build-arm64-pvops:kernel-build:fail:regression
    linux-linus:test-amd64-amd64-xl-vhd:host-install(5):broken:heisenbug
    linux-linus:test-amd64-amd64-xl:guest-start/debian.repeat:fail:heisenbug
    linux-linus:test-arm64-arm64-examine:build-check(1):blocked:nonblocking
    linux-linus:test-arm64-arm64-xl-credit1:build-check(1):blocked:nonblocking
    linux-linus:test-arm64-arm64-xl-thunderx:build-check(1):blocked:nonblocking
    linux-linus:test-arm64-arm64-xl:build-check(1):blocked:nonblocking
    linux-linus:test-arm64-arm64-xl-vhd:build-check(1):blocked:nonblocking
    linux-linus:test-arm64-arm64-xl-xsm:build-check(1):blocked:nonblocking
    linux-linus:test-arm64-arm64-libvirt-xsm:build-check(1):blocked:nonblocking
    linux-linus:test-arm64-arm64-libvirt-raw:build-check(1):blocked:nonblocking
    linux-linus:test-arm64-arm64-xl-credit2:build-check(1):blocked:nonblocking
    linux-linus:test-armhf-armhf-libvirt:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    linux-linus:test-amd64-amd64-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    linux-linus:test-amd64-amd64-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-raw:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-qcow2:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-qemuu-nested-amd:debian-hvm-install/l1/l2:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-xsm:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-arndale:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-arndale:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-multivcpu:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-multivcpu:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-rtds:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-rtds:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit1:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit1:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit2:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit2:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-libvirt-raw:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-vhd:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-vhd:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-vhd:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-vhd:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-qcow2:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-qcow2:migrate-support-check:fail:nonblocking
X-Osstest-Versions-This:
    linux=052d534373b7ed33712a63d5e17b2b6cdbce84fd
X-Osstest-Versions-That:
    linux=0dd3ee31125508cd67f7e7172247f05b7fd1753a
From: osstest service owner <osstest-admin@xenproject.org>
Date: Tue, 16 Jan 2024 05:09:08 +0000

flight 184359 linux-linus real [real]
http://logs.test-lab.xenproject.org/osstest/logs/184359/

Regressions :-(

Tests which did not succeed and are blocking,
including tests which could not be run:
 test-amd64-amd64-xl-vhd         <job status>                 broken  in 184351
 test-arm64-arm64-xl-credit1  12 debian-install           fail REGR. vs. 184270
 test-arm64-arm64-xl-xsm      12 debian-install           fail REGR. vs. 184270
 test-arm64-arm64-xl          12 debian-install           fail REGR. vs. 184270
 test-arm64-arm64-xl-thunderx 12 debian-install           fail REGR. vs. 184270
 test-arm64-arm64-xl-credit2  12 debian-install           fail REGR. vs. 184270
 test-arm64-arm64-libvirt-xsm 12 debian-install           fail REGR. vs. 184270
 build-arm64-pvops             6 kernel-build   fail in 184351 REGR. vs. 184270

Tests which are failing intermittently (not blocking):
 test-amd64-amd64-xl-vhd      5 host-install(5) broken in 184351 pass in 184359
 test-amd64-amd64-xl          22 guest-start/debian.repeat  fail pass in 184351

Tests which did not succeed, but are not blocking:
 test-arm64-arm64-examine      1 build-check(1)           blocked in 184351 n/a
 test-arm64-arm64-xl-credit1   1 build-check(1)           blocked in 184351 n/a
 test-arm64-arm64-xl-thunderx  1 build-check(1)           blocked in 184351 n/a
 test-arm64-arm64-xl           1 build-check(1)           blocked in 184351 n/a
 test-arm64-arm64-xl-vhd       1 build-check(1)           blocked in 184351 n/a
 test-arm64-arm64-xl-xsm       1 build-check(1)           blocked in 184351 n/a
 test-arm64-arm64-libvirt-xsm  1 build-check(1)           blocked in 184351 n/a
 test-arm64-arm64-libvirt-raw  1 build-check(1)           blocked in 184351 n/a
 test-arm64-arm64-xl-credit2   1 build-check(1)           blocked in 184351 n/a
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 184270
 test-amd64-amd64-xl-qemut-win7-amd64 19 guest-stop            fail like 184270
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 184270
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 184270
 test-armhf-armhf-libvirt-raw 15 saverestore-support-check    fail  like 184270
 test-amd64-amd64-xl-qemut-ws16-amd64 19 guest-stop            fail like 184270
 test-armhf-armhf-libvirt-qcow2 15 saverestore-support-check   fail like 184270
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 184270
 test-amd64-amd64-libvirt     15 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-arndale  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-arndale  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-multivcpu 15 migrate-support-check        fail  never pass
 test-armhf-armhf-xl-multivcpu 16 saverestore-support-check    fail  never pass
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-armhf-armhf-libvirt     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-rtds     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-rtds     16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-credit1  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit1  16 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-raw 14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit2  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit2  16 saverestore-support-check    fail   never pass
 test-arm64-arm64-libvirt-raw 14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 15 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-vhd      14 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-vhd      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-raw 14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      15 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-qcow2 14 migrate-support-check        fail never pass
 test-armhf-armhf-libvirt-qcow2 14 migrate-support-check        fail never pass

version targeted for testing:
 linux                052d534373b7ed33712a63d5e17b2b6cdbce84fd
baseline version:
 linux                0dd3ee31125508cd67f7e7172247f05b7fd1753a

Last test of basis   184270  2024-01-07 20:42:19 Z    8 days
Failing since        184283  2024-01-08 20:10:43 Z    7 days   13 attempts
Testing same since   184338  2024-01-13 05:40:28 Z    2 days    6 attempts

------------------------------------------------------------
1701 people touched revisions under test,
not listing them all

jobs:
 build-amd64-xsm                                              pass    
 build-arm64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64                                                  pass    
 build-arm64                                                  pass    
 build-armhf                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-arm64-libvirt                                          pass    
 build-armhf-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-pvops                                            pass    
 build-arm64-pvops                                            pass    
 build-armhf-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-amd64-amd64-xl                                          fail    
 test-amd64-coresched-amd64-xl                                pass    
 test-arm64-arm64-xl                                          fail    
 test-armhf-armhf-xl                                          pass    
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm           pass    
 test-amd64-amd64-xl-qemut-stubdom-debianhvm-amd64-xsm        pass    
 test-amd64-amd64-xl-qemut-debianhvm-i386-xsm                 pass    
 test-amd64-amd64-xl-qemuu-debianhvm-i386-xsm                 pass    
 test-amd64-amd64-libvirt-xsm                                 pass    
 test-arm64-arm64-libvirt-xsm                                 fail    
 test-amd64-amd64-xl-xsm                                      pass    
 test-arm64-arm64-xl-xsm                                      fail    
 test-amd64-amd64-qemuu-nested-amd                            fail    
 test-amd64-amd64-xl-pvhv2-amd                                pass    
 test-amd64-amd64-dom0pvh-xl-amd                              pass    
 test-amd64-amd64-xl-qemut-debianhvm-amd64                    pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64                    pass    
 test-amd64-amd64-freebsd11-amd64                             pass    
 test-amd64-amd64-freebsd12-amd64                             pass    
 test-amd64-amd64-xl-qemuu-ovmf-amd64                         pass    
 test-amd64-amd64-xl-qemut-win7-amd64                         fail    
 test-amd64-amd64-xl-qemuu-win7-amd64                         fail    
 test-amd64-amd64-xl-qemut-ws16-amd64                         fail    
 test-amd64-amd64-xl-qemuu-ws16-amd64                         fail    
 test-armhf-armhf-xl-arndale                                  pass    
 test-amd64-amd64-examine-bios                                pass    
 test-amd64-amd64-xl-credit1                                  pass    
 test-arm64-arm64-xl-credit1                                  fail    
 test-armhf-armhf-xl-credit1                                  pass    
 test-amd64-amd64-xl-credit2                                  pass    
 test-arm64-arm64-xl-credit2                                  fail    
 test-armhf-armhf-xl-credit2                                  pass    
 test-amd64-amd64-xl-qemuu-dmrestrict-amd64-dmrestrict        pass    
 test-amd64-amd64-examine                                     pass    
 test-arm64-arm64-examine                                     pass    
 test-armhf-armhf-examine                                     pass    
 test-amd64-amd64-qemuu-nested-intel                          pass    
 test-amd64-amd64-xl-pvhv2-intel                              pass    
 test-amd64-amd64-dom0pvh-xl-intel                            pass    
 test-amd64-amd64-libvirt                                     pass    
 test-armhf-armhf-libvirt                                     pass    
 test-amd64-amd64-xl-multivcpu                                pass    
 test-armhf-armhf-xl-multivcpu                                pass    
 test-amd64-amd64-pair                                        pass    
 test-amd64-amd64-libvirt-pair                                pass    
 test-amd64-amd64-xl-pvshim                                   pass    
 test-amd64-amd64-pygrub                                      pass    
 test-amd64-amd64-libvirt-qcow2                               pass    
 test-armhf-armhf-libvirt-qcow2                               pass    
 test-amd64-amd64-libvirt-raw                                 pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-armhf-armhf-libvirt-raw                                 pass    
 test-amd64-amd64-xl-rtds                                     pass    
 test-armhf-armhf-xl-rtds                                     pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64-shadow             pass    
 test-amd64-amd64-xl-shadow                                   pass    
 test-arm64-arm64-xl-thunderx                                 fail    
 test-amd64-amd64-examine-uefi                                pass    
 test-amd64-amd64-xl-vhd                                      pass    
 test-arm64-arm64-xl-vhd                                      pass    
 test-armhf-armhf-xl-vhd                                      pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary

broken-job test-amd64-amd64-xl-vhd broken

Not pushing.

(No revision log; it would be 204832 lines long.)


From xen-devel-bounces@lists.xenproject.org Tue Jan 16 05:14:41 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 16 Jan 2024 05:14:41 +0000
Received: from list by lists.xenproject.org with outflank-mailman.667637.1039112 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPbmX-0008Ty-UY; Tue, 16 Jan 2024 05:14:37 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 667637.1039112; Tue, 16 Jan 2024 05:14:37 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPbmX-0008Tr-QS; Tue, 16 Jan 2024 05:14:37 +0000
Received: by outflank-mailman (input) for mailman id 667637;
 Tue, 16 Jan 2024 05:14:36 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rPbmW-0008Th-Az; Tue, 16 Jan 2024 05:14:36 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rPbmV-0008U4-Vq; Tue, 16 Jan 2024 05:14:35 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rPbmV-00086y-N0; Tue, 16 Jan 2024 05:14:35 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rPbmV-0000BZ-MN; Tue, 16 Jan 2024 05:14:35 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=a7o8KhGjDAQk3SL/SxKsh4N7IapVNvIsLFs+kGefTXs=; b=SE7KjkQbdMc/LGY8+xmbrl0KH7
	n/PHayvxCfIswLY3yD9gBJgSq5MxtEMalQCrSEBmdZRFTmsbXWH1uzs3ZGZPwhqFvxU2KUC/8ulgk
	5pYP4X+uT7BfZvTzD2MnwWy6f/eYe5z1kbXMdwzEI426vlZRg7lA6huOaUIE9EdU4wVM=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184366-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [ovmf test] 184366: all pass - PUSHED
X-Osstest-Versions-This:
    ovmf=682a5ed1a229443a259da2df9f961a0448071e3e
X-Osstest-Versions-That:
    ovmf=7c2757c298b40f5d7bad8da3faff7bb9c47ce2ae
From: osstest service owner <osstest-admin@xenproject.org>
Date: Tue, 16 Jan 2024 05:14:35 +0000

flight 184366 ovmf real [real]
http://logs.test-lab.xenproject.org/osstest/logs/184366/

Perfect :-)
All tests in this flight passed as required
version targeted for testing:
 ovmf                 682a5ed1a229443a259da2df9f961a0448071e3e
baseline version:
 ovmf                 7c2757c298b40f5d7bad8da3faff7bb9c47ce2ae

Last test of basis   184364  2024-01-15 20:12:55 Z    0 days
Testing same since   184366  2024-01-16 01:42:48 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Suqiang Ren <suqiangx.ren@intel.com>

jobs:
 build-amd64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-amd64-amd64-xl-qemuu-ovmf-amd64                         pass    
 test-amd64-i386-xl-qemuu-ovmf-amd64                          pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Pushing revision :

To xenbits.xen.org:/home/xen/git/osstest/ovmf.git
   7c2757c298..682a5ed1a2  682a5ed1a229443a259da2df9f961a0448071e3e -> xen-tested-master


From xen-devel-bounces@lists.xenproject.org Tue Jan 16 08:13:18 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 16 Jan 2024 08:13:18 +0000
Received: from list by lists.xenproject.org with outflank-mailman.667651.1039122 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPeZC-0004SN-0Z; Tue, 16 Jan 2024 08:13:02 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 667651.1039122; Tue, 16 Jan 2024 08:13:01 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPeZB-0004SG-RB; Tue, 16 Jan 2024 08:13:01 +0000
Received: by outflank-mailman (input) for mailman id 667651;
 Tue, 16 Jan 2024 08:13:01 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rPeZB-0004S6-Cs; Tue, 16 Jan 2024 08:13:01 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rPeZB-00048N-04; Tue, 16 Jan 2024 08:13:01 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rPeZA-0000Mp-GI; Tue, 16 Jan 2024 08:13:00 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rPeZA-0004zK-Fq; Tue, 16 Jan 2024 08:13:00 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=WOL+yk/Wwhfxjhu3e2pQGe7Qin3OX1LbGGSl90LiCq0=; b=tsm+EZo4xiCrahkzyqZPmiq6gE
	VUb6t4cG6XerH/RsEf6zlI4tICZ4K2dBxORpfxZFcnvv57xUSgmEM62T7unQ587H9N3MwCeZyFHzM
	+YXTCOcdeh88WKoymbhPXHHOmCM3jcPRSuEVnGnYNK7AVrKdImCsqeCZ27YH5GKb4vIo=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184362-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [linux-5.4 test] 184362: regressions - trouble: broken/fail/pass
X-Osstest-Failures:
    linux-5.4:test-armhf-armhf-xl-multivcpu:<job status>:broken:regression
    linux-5.4:test-armhf-armhf-xl-multivcpu:capture-logs(19):broken:regression
    linux-5.4:test-amd64-amd64-libvirt-xsm:guest-start.2:fail:regression
    linux-5.4:test-armhf-armhf-xl-arndale:guest-start/debian.repeat:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-multivcpu:guest-start/debian.repeat:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-credit2:guest-start/debian.repeat:fail:nonblocking
    linux-5.4:test-armhf-armhf-libvirt:saverestore-support-check:fail:nonblocking
    linux-5.4:test-amd64-amd64-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    linux-5.4:test-amd64-i386-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    linux-5.4:test-amd64-i386-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    linux-5.4:test-amd64-amd64-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-rtds:guest-start/debian.repeat:fail:nonblocking
    linux-5.4:test-amd64-amd64-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    linux-5.4:test-amd64-amd64-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    linux-5.4:test-armhf-armhf-libvirt-qcow2:saverestore-support-check:fail:nonblocking
    linux-5.4:test-amd64-i386-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    linux-5.4:test-armhf-armhf-libvirt-raw:saverestore-support-check:fail:nonblocking
    linux-5.4:test-amd64-i386-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    linux-5.4:test-armhf-armhf-libvirt-raw:guest-start/debian.repeat:fail:nonblocking
    linux-5.4:test-amd64-amd64-qemuu-nested-amd:debian-hvm-install/l1/l2:fail:nonblocking
    linux-5.4:test-amd64-i386-xl-pvshim:guest-start:fail:nonblocking
    linux-5.4:test-amd64-amd64-libvirt-xsm:migrate-support-check:fail:nonblocking
    linux-5.4:test-amd64-i386-libvirt-xsm:migrate-support-check:fail:nonblocking
    linux-5.4:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    linux-5.4:test-amd64-i386-libvirt:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-xsm:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-xsm:saverestore-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-libvirt-xsm:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl:saverestore-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-libvirt-xsm:saverestore-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-credit1:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-credit1:saverestore-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-credit2:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-credit2:saverestore-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-thunderx:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-thunderx:saverestore-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-multivcpu:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-multivcpu:saverestore-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-credit1:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-credit1:saverestore-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-rtds:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-rtds:saverestore-support-check:fail:nonblocking
    linux-5.4:test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    linux-5.4:test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-arndale:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-arndale:saverestore-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-credit2:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-credit2:saverestore-support-check:fail:nonblocking
    linux-5.4:test-amd64-amd64-libvirt-vhd:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl:saverestore-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-libvirt:migrate-support-check:fail:nonblocking
    linux-5.4:test-amd64-i386-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-libvirt-raw:saverestore-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-vhd:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-vhd:saverestore-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-libvirt-qcow2:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-vhd:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-vhd:saverestore-support-check:fail:nonblocking
X-Osstest-Versions-This:
    linux=9153fc9664959aa6bb35915b2bbd8fbc4c762962
X-Osstest-Versions-That:
    linux=4410df70110ff5175bf7f7fdc3bae5c80f2c36d9
From: osstest service owner <osstest-admin@xenproject.org>
Date: Tue, 16 Jan 2024 08:13:00 +0000

flight 184362 linux-5.4 real [real]
http://logs.test-lab.xenproject.org/osstest/logs/184362/

Regressions :-(

Tests which did not succeed and are blocking,
including tests which could not be run:
 test-armhf-armhf-xl-multivcpu    <job status>                 broken
 test-armhf-armhf-xl-multivcpu 19 capture-logs(19)      broken REGR. vs. 184334
 test-amd64-amd64-libvirt-xsm 21 guest-start.2            fail REGR. vs. 184339

Tests which did not succeed, but are not blocking:
 test-armhf-armhf-xl-arndale  18 guest-start/debian.repeat    fail  like 184327
 test-armhf-armhf-xl-multivcpu 18 guest-start/debian.repeat    fail like 184334
 test-armhf-armhf-xl-credit2  18 guest-start/debian.repeat    fail  like 184334
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 184339
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 184339
 test-amd64-i386-xl-qemut-win7-amd64 19 guest-stop             fail like 184339
 test-amd64-i386-xl-qemuu-win7-amd64 19 guest-stop             fail like 184339
 test-amd64-amd64-xl-qemut-win7-amd64 19 guest-stop            fail like 184339
 test-armhf-armhf-xl-rtds     18 guest-start/debian.repeat    fail  like 184339
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 184339
 test-amd64-amd64-xl-qemut-ws16-amd64 19 guest-stop            fail like 184339
 test-armhf-armhf-libvirt-qcow2 15 saverestore-support-check   fail like 184339
 test-amd64-i386-xl-qemut-ws16-amd64 19 guest-stop             fail like 184339
 test-armhf-armhf-libvirt-raw 15 saverestore-support-check    fail  like 184339
 test-amd64-i386-xl-qemuu-ws16-amd64 19 guest-stop             fail like 184339
 test-armhf-armhf-libvirt-raw 17 guest-start/debian.repeat    fail  like 184339
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 184339
 test-amd64-i386-xl-pvshim    14 guest-start                  fail   never pass
 test-amd64-amd64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-amd64-i386-libvirt-xsm  15 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt     15 migrate-support-check        fail   never pass
 test-amd64-i386-libvirt      15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-xsm      15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-xsm      16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl          15 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl          16 saverestore-support-check    fail   never pass
 test-arm64-arm64-libvirt-xsm 16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-credit1  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit1  16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-credit2  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit2  16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-thunderx 15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-thunderx 16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-multivcpu 15 migrate-support-check        fail  never pass
 test-armhf-armhf-xl-multivcpu 16 saverestore-support-check    fail  never pass
 test-armhf-armhf-xl-credit1  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit1  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-rtds     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-rtds     16 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-armhf-armhf-xl-arndale  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-arndale  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-credit2  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit2  16 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-vhd 14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          16 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt     15 migrate-support-check        fail   never pass
 test-amd64-i386-libvirt-raw  14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 15 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-vhd      14 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-vhd      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-qcow2 14 migrate-support-check        fail never pass
 test-armhf-armhf-libvirt-raw 14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      15 saverestore-support-check    fail   never pass

version targeted for testing:
 linux                9153fc9664959aa6bb35915b2bbd8fbc4c762962
baseline version:
 linux                4410df70110ff5175bf7f7fdc3bae5c80f2c36d9

Last test of basis   184339  2024-01-13 06:35:35 Z    3 days
Testing same since   184362  2024-01-15 17:43:08 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Adrian Cinal <adriancinal1@gmail.com>
  Adrian Cinal <adriancinal@gmail.com>
  Aleksandr Loktionov <aleksandr.loktionov@intel.com>
  Amit Pundir <amit.pundir@linaro.org>
  Andrea Mayer <andrea.mayer@uniroma2.it>
  Andrew Morton <akpm@linux-foundation.org>
  Andrii Staikov <andrii.staikov@intel.com>
  Arnd Bergmann <arnd@arndb.de>
  Bartosz Pawlowski <bartosz.pawlowski@intel.com>
  Benjamin Bara <benjamin.bara@skidata.com>
  Bharathi Sreenivas <bharathi.sreenivas@intel.com>
  Bjorn Helgaas <bhelgaas@google.com>
  Chen Ni <nichen@iscas.ac.cn>
  Christophe JAILLET <christophe.jaillet@wanadoo.fr>
  David S. Miller <davem@davemloft.net>
  Ding Hui <dinghui@sangfor.com.cn>
  Dinghao Liu <dinghao.liu@zju.edu.cn>
  Doug Berger <opendmb@gmail.com>
  Douglas Anderson <dianders@chromium.org>
  Eric Dumazet <edumazet@google.com>
  Florian Fainelli <florian.fainelli@broadcom.com>
  Geert Uytterhoeven <geert+renesas@glider.be>
  Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  Hangyu Hua <hbh25y@gmail.com>
  Harshit Mogalapalli <harshit.m.mogalapalli@oracle.com>
  Jakub Kicinski <kuba@kernel.org>
  Jamal Hadi Salim <jhs@mojatatu.com>
  Jerome Brunet <jbrunet@baylibre.com>
  Jiajun Xie <jiajun.xie.sh@gmail.com>
  John Fastabend <john.fastabend@gmail.com>
  Jon Hunter <jonathanh@nvidia.com>
  Jon Maxwell <jmaxwell37@gmail.com>
  Jorge Ramirez-Ortiz <jorge@foundries.io>
  Kalle Valo <kvalo@codeaurora.org>
  Karen Ostrowska <karen.ostrowska@intel.com>
  Ke Xiao <xiaoke@sangfor.com.cn>
  Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
  Linux Kernel Functional Testing <lkft@linaro.org>
  Marc Dionne <marc.dionne@auristor.com>
  Marc Kleine-Budde <mkl@pengutronix.de>
  Mark Brown <broonie@kernel.org>
  Mateusz Palczewski <mateusz.palczewski@intel.com>
  Matthew Wilcox (Oracle) <willy@infradead.org>
  Michael Chan <michael.chan@broadcom.com>
  Michael Walle <mwalle@kernel.org>
  Oliver Hartkopp <socketcan@hartkopp.net>
  Pablo Neira Ayuso <pablo@netfilter.org>
  Phil Sutter <phil@nwl.cc>
  Pucha Himasekhar Reddy <himasekharx.reddy.pucha@intel.com> (A Contingent worker at Intel)
  Rafal Romanowski <rafal.romanowski@intel.com>
  Rakesh Pillai <pillair@codeaurora.org>
  Sasha Levin <sashal@kernel.org>
  Siddh Raman Pant <code@siddh.me>
  Stefan Wahren <wahrenst@gmx.net>
  Sudheer Mogilappagari <sudheer.mogilappagari@intel.com>
  Suraj Jitindar Singh <surajjs@amazon.com>
  Takashi Sakamoto <o-takashi@sakamocchi.jp>
  Thomas Lange <thomas@corelatus.se>
  Tony Nguyen <anthony.l.nguyen@intel.com>
  Tor Vic <torvic9@mailbox.org>
  Ulf Hansson <ulf.hansson@linaro.org>
  Vadim Fedorenko <vadfed@meta.com>
  Wenchao Chen <wenchao.chen@unisoc.com>
  Wolfram Sang <wsa@kernel.org>

jobs:
 build-amd64-xsm                                              pass    
 build-arm64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64                                                  pass    
 build-arm64                                                  pass    
 build-armhf                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-arm64-libvirt                                          pass    
 build-armhf-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-pvops                                            pass    
 build-arm64-pvops                                            pass    
 build-armhf-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-amd64-amd64-xl                                          pass    
 test-amd64-coresched-amd64-xl                                pass    
 test-arm64-arm64-xl                                          pass    
 test-armhf-armhf-xl                                          pass    
 test-amd64-i386-xl                                           pass    
 test-amd64-coresched-i386-xl                                 pass    
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm           pass    
 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm            pass    
 test-amd64-amd64-xl-qemut-stubdom-debianhvm-amd64-xsm        pass    
 test-amd64-i386-xl-qemut-stubdom-debianhvm-amd64-xsm         pass    
 test-amd64-amd64-xl-qemut-debianhvm-i386-xsm                 pass    
 test-amd64-i386-xl-qemut-debianhvm-i386-xsm                  pass    
 test-amd64-amd64-xl-qemuu-debianhvm-i386-xsm                 pass    
 test-amd64-i386-xl-qemuu-debianhvm-i386-xsm                  pass    
 test-amd64-amd64-libvirt-xsm                                 fail    
 test-arm64-arm64-libvirt-xsm                                 pass    
 test-amd64-i386-libvirt-xsm                                  pass    
 test-amd64-amd64-xl-xsm                                      pass    
 test-arm64-arm64-xl-xsm                                      pass    
 test-amd64-i386-xl-xsm                                       pass    
 test-amd64-amd64-qemuu-nested-amd                            fail    
 test-amd64-amd64-xl-pvhv2-amd                                pass    
 test-amd64-i386-qemut-rhel6hvm-amd                           pass    
 test-amd64-i386-qemuu-rhel6hvm-amd                           pass    
 test-amd64-amd64-dom0pvh-xl-amd                              pass    
 test-amd64-amd64-xl-qemut-debianhvm-amd64                    pass    
 test-amd64-i386-xl-qemut-debianhvm-amd64                     pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64                    pass    
 test-amd64-i386-xl-qemuu-debianhvm-amd64                     pass    
 test-amd64-i386-freebsd10-amd64                              pass    
 test-amd64-amd64-qemuu-freebsd11-amd64                       pass    
 test-amd64-amd64-qemuu-freebsd12-amd64                       pass    
 test-amd64-amd64-xl-qemuu-ovmf-amd64                         pass    
 test-amd64-i386-xl-qemuu-ovmf-amd64                          pass    
 test-amd64-amd64-xl-qemut-win7-amd64                         fail    
 test-amd64-i386-xl-qemut-win7-amd64                          fail    
 test-amd64-amd64-xl-qemuu-win7-amd64                         fail    
 test-amd64-i386-xl-qemuu-win7-amd64                          fail    
 test-amd64-amd64-xl-qemut-ws16-amd64                         fail    
 test-amd64-i386-xl-qemut-ws16-amd64                          fail    
 test-amd64-amd64-xl-qemuu-ws16-amd64                         fail    
 test-amd64-i386-xl-qemuu-ws16-amd64                          fail    
 test-armhf-armhf-xl-arndale                                  fail    
 test-amd64-amd64-examine-bios                                pass    
 test-amd64-i386-examine-bios                                 pass    
 test-amd64-amd64-xl-credit1                                  pass    
 test-arm64-arm64-xl-credit1                                  pass    
 test-armhf-armhf-xl-credit1                                  pass    
 test-amd64-amd64-xl-credit2                                  pass    
 test-arm64-arm64-xl-credit2                                  pass    
 test-armhf-armhf-xl-credit2                                  fail    
 test-amd64-amd64-xl-qemuu-dmrestrict-amd64-dmrestrict        pass    
 test-amd64-i386-xl-qemuu-dmrestrict-amd64-dmrestrict         pass    
 test-amd64-amd64-examine                                     pass    
 test-arm64-arm64-examine                                     pass    
 test-armhf-armhf-examine                                     pass    
 test-amd64-i386-examine                                      pass    
 test-amd64-i386-freebsd10-i386                               pass    
 test-amd64-amd64-qemuu-nested-intel                          pass    
 test-amd64-amd64-xl-pvhv2-intel                              pass    
 test-amd64-i386-qemut-rhel6hvm-intel                         pass    
 test-amd64-i386-qemuu-rhel6hvm-intel                         pass    
 test-amd64-amd64-dom0pvh-xl-intel                            pass    
 test-amd64-amd64-libvirt                                     pass    
 test-armhf-armhf-libvirt                                     pass    
 test-amd64-i386-libvirt                                      pass    
 test-amd64-amd64-xl-multivcpu                                pass    
 test-armhf-armhf-xl-multivcpu                                broken  
 test-amd64-amd64-pair                                        pass    
 test-amd64-i386-pair                                         pass    
 test-amd64-amd64-libvirt-pair                                pass    
 test-amd64-i386-libvirt-pair                                 pass    
 test-amd64-amd64-xl-pvshim                                   pass    
 test-amd64-i386-xl-pvshim                                    fail    
 test-amd64-amd64-pygrub                                      pass    
 test-armhf-armhf-libvirt-qcow2                               pass    
 test-amd64-amd64-xl-qcow2                                    pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-armhf-armhf-libvirt-raw                                 fail    
 test-amd64-i386-libvirt-raw                                  pass    
 test-amd64-amd64-xl-rtds                                     pass    
 test-armhf-armhf-xl-rtds                                     fail    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64-shadow             pass    
 test-amd64-i386-xl-qemuu-debianhvm-amd64-shadow              pass    
 test-amd64-amd64-xl-shadow                                   pass    
 test-amd64-i386-xl-shadow                                    pass    
 test-arm64-arm64-xl-thunderx                                 pass    
 test-amd64-amd64-examine-uefi                                pass    
 test-amd64-i386-examine-uefi                                 pass    
 test-amd64-amd64-libvirt-vhd                                 pass    
 test-arm64-arm64-xl-vhd                                      pass    
 test-armhf-armhf-xl-vhd                                      pass    
 test-amd64-i386-xl-vhd                                       pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary

broken-job test-armhf-armhf-xl-multivcpu broken
broken-step test-armhf-armhf-xl-multivcpu capture-logs(19)

Not pushing.

(No revision log; it would be 1379 lines long.)


From xen-devel-bounces@lists.xenproject.org Tue Jan 16 08:30:47 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 16 Jan 2024 08:30:47 +0000
Received: from list by lists.xenproject.org with outflank-mailman.667659.1039132 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPeqI-0007By-EZ; Tue, 16 Jan 2024 08:30:42 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 667659.1039132; Tue, 16 Jan 2024 08:30:42 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPeqI-0007Br-Bs; Tue, 16 Jan 2024 08:30:42 +0000
Received: by outflank-mailman (input) for mailman id 667659;
 Tue, 16 Jan 2024 08:30:41 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=MjSB=I2=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rPeqH-0007Bl-31
 for xen-devel@lists.xenproject.org; Tue, 16 Jan 2024 08:30:41 +0000
Received: from mail-wr1-x42d.google.com (mail-wr1-x42d.google.com
 [2a00:1450:4864:20::42d])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 86d7e1f2-b449-11ee-9b0f-b553b5be7939;
 Tue, 16 Jan 2024 09:30:38 +0100 (CET)
Received: by mail-wr1-x42d.google.com with SMTP id
 ffacd0b85a97d-336788cb261so7887139f8f.3
 for <xen-devel@lists.xenproject.org>; Tue, 16 Jan 2024 00:30:38 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 k6-20020adfb346000000b0033671314440sm14068395wrd.3.2024.01.16.00.30.37
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 16 Jan 2024 00:30:37 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 86d7e1f2-b449-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1705393838; x=1705998638; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=RtFoBhIyYM1gd4kJx0zYuQLT/8IqznXLoG7zBOemV1c=;
        b=CykC6ZcEgGhujsRVFqa6EOC9ygeHJOKsS1iArRbySfpV3tkwRF/yVgEaMVzqWLw9d2
         FISg3KSJfUyE4edEb3TO5wcXDsknOpWMsI/B5aIowWPq8lzj4HOjTEBhQI1BVcjc56Hh
         FXFuz68kXvqTgOpw1OkilgQvnifQJQRW+rQhYxh8b9ZVoD6BAgE6xGtrBebnXudXFFii
         Y8Gm/KCDVrendZwlbc0z5Uja+IRlXNHpXBplGW6/DTC2v9ivQYLRLYra9IPdXWinVJT1
         QXIL9H5PYmz2TrjHJkoPInEihYUOPeLxhXgUN6TnWmbDbSqrq5peUY+hwzy0jubQEwrp
         OuYg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705393838; x=1705998638;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=RtFoBhIyYM1gd4kJx0zYuQLT/8IqznXLoG7zBOemV1c=;
        b=hQagTPRK9K1+cM0EdP/kRuI8MMqY9Tv+t+5ip8/NQ3mq5t2N0tNL+KIauuyaPNPXx8
         E2ufY2jbGqV7HTHktWX/8sAO/rDWFPbvMB0jCWtR3jMvuslTN/qCykbJuxJsYlEvTtOB
         Mq/Tdj4pQO1U0Haj2sxtCcTI9hks2bOgVLO4TFXz4kWYZk4C/oyImWpXbr68mj5abUSv
         VjeSrPL3i2WSaWiKuMfCy/r7lWalStubaI8rRnenzd5id1mentDWL6MmmUatwTTAyb/R
         tLjzJhWk23fU8wY7J9Y76EHkE+zgPa8VCoz2IZ+8SiCke8vRd7Zdj2lBG56Uq5vqsfpj
         2EuA==
X-Gm-Message-State: AOJu0Yw31p84UmD5FGVRZ7o4tYj0QkG9Ig1tA0nK9PMZ36luiRtS+ZE9
	Vo2Zy43h2UOb90f6xLJabsp1XnG18hrZ
X-Google-Smtp-Source: AGHT+IESh+7+KZF5W4ImTgiOOQVgZvZbJl0AZl1RChva1WfIqjtsEISFArpm7M4TVk4CBvN+tWp2Aw==
X-Received: by 2002:a5d:608b:0:b0:337:3ed6:869d with SMTP id w11-20020a5d608b000000b003373ed6869dmr3347712wrt.93.1705393837971;
        Tue, 16 Jan 2024 00:30:37 -0800 (PST)
Message-ID: <a70b5e14-1158-4366-a65d-9f6f56d82e7a@suse.com>
Date: Tue, 16 Jan 2024 09:30:36 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 11/22] x86: add a boot option to enable and disable the
 direct map
Content-Language: en-US
To: Elias El Yandouzi <eliasely@amazon.com>
Cc: Hongyan Xia <hongyxia@amazon.com>,
 Andrew Cooper <andrew.cooper3@citrix.com>,
 George Dunlap <george.dunlap@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>,
 Bertrand Marquis <bertrand.marquis@arm.com>,
 Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Julien Grall <jgrall@amazon.com>, xen-devel@lists.xenproject.org,
 Julien Grall <julien@xen.org>
References: <20221216114853.8227-1-julien@xen.org>
 <20221216114853.8227-12-julien@xen.org>
 <fc70f967-34bb-9569-f514-7a3208e746c6@suse.com>
 <bc989828-69b9-4919-9ff3-fdd53fb2def1@amazon.com>
 <c736e4d9-5262-4adf-9e74-9b1be5ab13db@suse.com>
 <4ab710c3-c628-4bbe-9533-88af75a9b9ec@xen.org>
 <ba63d435-e26f-4c76-aedc-c027e8b03a6d@suse.com>
 <0dcc54dd-b729-4e20-95af-fa4907a550c6@amazon.com>
 <6926f363-3994-4059-b7e1-cb8e45367be8@suse.com>
 <fcfb79c5-0509-4ed3-be58-bd3d0935a21e@amazon.com>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <fcfb79c5-0509-4ed3-be58-bd3d0935a21e@amazon.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 15.01.2024 15:50, Elias El Yandouzi wrote:
> On 12/01/2024 07:47, Jan Beulich wrote:
>> On 11.01.2024 19:25, Elias El Yandouzi wrote:
>>> How would you proceed? Calling vmap() seems to be a bit overkill for
>>> just a temporary mapping and I don't really want to rework this function
>>> to use map_domain_page().
>>>
>>> In such case, how would you proceed? What do you suggest?
>>
>> fixmap may be an option to consider, but I also don't see why you
>> apparently think using vmap() would be a possibility while at the
>> same time making use of map_domain_page() is too much effort.
> 
> I thought about using vmap() as it allows to map a contiguous region 
> easily. It is also used in the follow-up patch 17/22, so I thought it 
> could be viable.
> 
> I was reluctant to use map_domain_page() for two reasons. 1) it only 
> allows to map one page at the time, so I'd need to rework more deeply 
> the function dmi_iterate() 2) because the mapcache wouldn't be ready to 
> use at that time, the mapping would end up in PMAP which is meant to map 
> the page tables, nothing else.

Oh, right, this makes sense of course.

Jan


From xen-devel-bounces@lists.xenproject.org Tue Jan 16 08:41:15 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 16 Jan 2024 08:41:15 +0000
Received: from list by lists.xenproject.org with outflank-mailman.667663.1039142 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPf0Q-0000TV-Cc; Tue, 16 Jan 2024 08:41:10 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 667663.1039142; Tue, 16 Jan 2024 08:41:10 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPf0Q-0000TO-9a; Tue, 16 Jan 2024 08:41:10 +0000
Received: by outflank-mailman (input) for mailman id 667663;
 Tue, 16 Jan 2024 08:41:09 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=MjSB=I2=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rPf0P-0000TI-Hv
 for xen-devel@lists.xenproject.org; Tue, 16 Jan 2024 08:41:09 +0000
Received: from mail-wm1-x336.google.com (mail-wm1-x336.google.com
 [2a00:1450:4864:20::336])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id fe349fe3-b44a-11ee-98f1-6d05b1d4d9a1;
 Tue, 16 Jan 2024 09:41:08 +0100 (CET)
Received: by mail-wm1-x336.google.com with SMTP id
 5b1f17b1804b1-40e7065b7bdso24736935e9.3
 for <xen-devel@lists.xenproject.org>; Tue, 16 Jan 2024 00:41:08 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 l22-20020a05600c4f1600b0040d6b91efd9sm22293931wmq.44.2024.01.16.00.41.07
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 16 Jan 2024 00:41:07 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: fe349fe3-b44a-11ee-98f1-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1705394467; x=1705999267; darn=lists.xenproject.org;
        h=content-transfer-encoding:autocrypt:subject:from:cc:to
         :content-language:user-agent:mime-version:date:message-id:from:to:cc
         :subject:date:message-id:reply-to;
        bh=IUIR6jhBeaCWm4WLuVInZHdrkJh9OVonMA+8LwOnY14=;
        b=fywtD0L4joAXfGIs0FVQxVCdyqDinW8x8MGrnPj/V5aEu9OAk9vVdATkb4j2ZKl3Or
         mNkXoY0Zj1ecS3PRthvCIxuPyPPmzW0q0LDnlzfpsRueeYkS6+XrIF1GOsFofiQ9lb1S
         6twr/RpIGKwZsS2NRkNiHWpEhLSbyEtnEwr+wL8U1hMzZXLBe+xrkECjWccit3tXxB7D
         ZX8DtYnBug1FxXvPA1xP6WC7Pb1Jt89oITKvy8O0WQriEiUIySkXPEG8Hj7XjSgOyOME
         tZ8vlo+PnwPYsf489Sqrk1uk5vpN9wjSW+xPm+pUQmRH0GiLZxDNuSsdFzM5BnvbXquh
         7B4A==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705394467; x=1705999267;
        h=content-transfer-encoding:autocrypt:subject:from:cc:to
         :content-language:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=IUIR6jhBeaCWm4WLuVInZHdrkJh9OVonMA+8LwOnY14=;
        b=EhNkG4G3pt6ComOaFee73zec6ruLPs0EY/LO0KnByf5Jk98+WsExpCf6Cp9TLh1wJ4
         sFuCD2WoHkJmDyCR2e+e5tL2IyNzwOwHHb4JxtCcwQrK1aYVYGGgDGPU4ArMFq4qzkJj
         F70BwW9iImkuCd7cWrz7+Qb7SopWb36YKRQix7wOPPIEpNQctgEXCzObIRMGnxoacEUP
         KxM0PHgfrxUkSNMWo8P8HQRk466o+r+V2Od7VsYNbKvonUCjHLwYBifDu7QpffadNoAV
         clWejWeNsJNV9UmNthB/X+EHOvF+xnOCmOFQN5epob9ElYkAX2OZ/z+DS/Ivh92AzMb9
         AW8A==
X-Gm-Message-State: AOJu0YwML1WGUb36PNfk9plW1Okdfe1R917yv5jpsylBkP49zMYAWx5o
	f/67coMbiRSaNUHw058GvrYKXgoMLiwj+UcBG+yfGaed3w==
X-Google-Smtp-Source: AGHT+IFaVq5SrdEEPnIWWlpGPantLyRt238Hl6kcFOvKpCOKrBRO6HRWnBT1oYa2GSA2suBh0W5MlQ==
X-Received: by 2002:a05:600c:5101:b0:40e:76b5:1973 with SMTP id o1-20020a05600c510100b0040e76b51973mr1085046wms.48.1705394467714;
        Tue, 16 Jan 2024 00:41:07 -0800 (PST)
Message-ID: <ece45cf6-51c8-413e-9963-21144fe64f2a@suse.com>
Date: Tue, 16 Jan 2024 09:41:06 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Content-Language: en-US
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, Wei Liu <wl@xen.org>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
From: Jan Beulich <jbeulich@suse.com>
Subject: [PATCH] x86/CPU: convert vendor hook invocations to altcall
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

While not performance critical, these hook invocations still want
converting: This way all pre-filled struct cpu_dev instances can become
__initconst_cf_clobber, thus allowing to eliminate further 8 ENDBR
during the 2nd phase of alternatives patching (besides moving previously
resident data to .init.*).

Since all use sites need touching anyway, take the opportunity and also
address a Misra C:2012 Rule 5.5 violation: Rename the this_cpu static
variable.

Signed-off-by: Jan Beulich <jbeulich@suse.com>
---
With LTO it might end up necessary to tag as __used more than just
"default_cpu".

--- a/xen/arch/x86/cpu/amd.c
+++ b/xen/arch/x86/cpu/amd.c
@@ -1302,7 +1302,7 @@ static void cf_check init_amd(struct cpu
 	amd_log_freq(c);
 }
 
-const struct cpu_dev amd_cpu_dev = {
+const struct cpu_dev __initconst_cf_clobber amd_cpu_dev = {
 	.c_early_init	= early_init_amd,
 	.c_init		= init_amd,
 };
--- a/xen/arch/x86/cpu/centaur.c
+++ b/xen/arch/x86/cpu/centaur.c
@@ -54,6 +54,6 @@ static void cf_check init_centaur(struct
 		init_c3(c);
 }
 
-const struct cpu_dev centaur_cpu_dev = {
+const struct cpu_dev __initconst_cf_clobber centaur_cpu_dev = {
 	.c_init		= init_centaur,
 };
--- a/xen/arch/x86/cpu/common.c
+++ b/xen/arch/x86/cpu/common.c
@@ -113,10 +113,10 @@ static void cf_check default_init(struct
 	__clear_bit(X86_FEATURE_SEP, c->x86_capability);
 }
 
-static const struct cpu_dev default_cpu = {
+static const struct cpu_dev __initconst_cf_clobber default_cpu = {
 	.c_init	= default_init,
 };
-static const struct cpu_dev *this_cpu = &default_cpu;
+static struct cpu_dev __ro_after_init actual_cpu;
 
 static DEFINE_PER_CPU(uint64_t, msr_misc_features);
 void (* __read_mostly ctxt_switch_masking)(const struct vcpu *next);
@@ -336,12 +336,13 @@ void __init early_cpu_init(bool verbose)
 
 	c->x86_vendor = x86_cpuid_lookup_vendor(ebx, ecx, edx);
 	switch (c->x86_vendor) {
-	case X86_VENDOR_INTEL:	  this_cpu = &intel_cpu_dev;    break;
-	case X86_VENDOR_AMD:	  this_cpu = &amd_cpu_dev;      break;
-	case X86_VENDOR_CENTAUR:  this_cpu = &centaur_cpu_dev;  break;
-	case X86_VENDOR_SHANGHAI: this_cpu = &shanghai_cpu_dev; break;
-	case X86_VENDOR_HYGON:    this_cpu = &hygon_cpu_dev;    break;
+	case X86_VENDOR_INTEL:	  actual_cpu = intel_cpu_dev;    break;
+	case X86_VENDOR_AMD:	  actual_cpu = amd_cpu_dev;      break;
+	case X86_VENDOR_CENTAUR:  actual_cpu = centaur_cpu_dev;  break;
+	case X86_VENDOR_SHANGHAI: actual_cpu = shanghai_cpu_dev; break;
+	case X86_VENDOR_HYGON:    actual_cpu = hygon_cpu_dev;    break;
 	default:
+		actual_cpu = default_cpu;
 		if (!verbose)
 			break;
 		printk(XENLOG_ERR
@@ -448,8 +449,8 @@ static void generic_identify(struct cpui
 	if (c->extended_cpuid_level >= 0x80000021)
 		c->x86_capability[FEATURESET_e21a] = cpuid_eax(0x80000021);
 
-	if (this_cpu->c_early_init)
-		this_cpu->c_early_init(c);
+	if (actual_cpu.c_early_init)
+		alternative_vcall(actual_cpu.c_early_init, c);
 
 	/* c_early_init() may have adjusted cpuid levels/features.  Reread. */
 	c->cpuid_level = cpuid_eax(0);
@@ -546,9 +547,8 @@ void identify_cpu(struct cpuinfo_x86 *c)
 	 * At the end of this section, c->x86_capability better
 	 * indicate the features this CPU genuinely supports!
 	 */
-	if (this_cpu->c_init)
-		this_cpu->c_init(c);
-
+	if (actual_cpu.c_init)
+		alternative_vcall(actual_cpu.c_init, c);
 
 	/*
 	 * The vendor-specific functions might have changed features.  Now
--- a/xen/arch/x86/cpu/hygon.c
+++ b/xen/arch/x86/cpu/hygon.c
@@ -87,7 +87,7 @@ static void cf_check init_hygon(struct c
 	amd_log_freq(c);
 }
 
-const struct cpu_dev hygon_cpu_dev = {
+const struct cpu_dev __initconst_cf_clobber hygon_cpu_dev = {
 	.c_early_init	= early_init_amd,
 	.c_init		= init_hygon,
 };
--- a/xen/arch/x86/cpu/intel.c
+++ b/xen/arch/x86/cpu/intel.c
@@ -577,7 +577,7 @@ static void cf_check init_intel(struct c
 		setup_clear_cpu_cap(X86_FEATURE_CLWB);
 }
 
-const struct cpu_dev intel_cpu_dev = {
+const struct cpu_dev __initconst_cf_clobber intel_cpu_dev = {
 	.c_early_init	= early_init_intel,
 	.c_init		= init_intel,
 };
--- a/xen/arch/x86/cpu/shanghai.c
+++ b/xen/arch/x86/cpu/shanghai.c
@@ -15,6 +15,6 @@ static void cf_check init_shanghai(struc
     init_intel_cacheinfo(c);
 }
 
-const struct cpu_dev shanghai_cpu_dev = {
+const struct cpu_dev __initconst_cf_clobber shanghai_cpu_dev = {
     .c_init     = init_shanghai,
 };


From xen-devel-bounces@lists.xenproject.org Tue Jan 16 08:55:49 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 16 Jan 2024 08:55:49 +0000
Received: from list by lists.xenproject.org with outflank-mailman.667667.1039151 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPfES-0002O4-KF; Tue, 16 Jan 2024 08:55:40 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 667667.1039151; Tue, 16 Jan 2024 08:55:40 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPfES-0002Nx-HV; Tue, 16 Jan 2024 08:55:40 +0000
Received: by outflank-mailman (input) for mailman id 667667;
 Tue, 16 Jan 2024 08:55:39 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=MjSB=I2=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rPfER-0002Nr-Pe
 for xen-devel@lists.xenproject.org; Tue, 16 Jan 2024 08:55:39 +0000
Received: from mail-wm1-x332.google.com (mail-wm1-x332.google.com
 [2a00:1450:4864:20::332])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 05099d92-b44d-11ee-98f1-6d05b1d4d9a1;
 Tue, 16 Jan 2024 09:55:38 +0100 (CET)
Received: by mail-wm1-x332.google.com with SMTP id
 5b1f17b1804b1-40e6275e9beso23985955e9.1
 for <xen-devel@lists.xenproject.org>; Tue, 16 Jan 2024 00:55:38 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 n18-20020a05600c501200b0040e77ce8768sm6678643wmr.16.2024.01.16.00.55.37
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 16 Jan 2024 00:55:37 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 05099d92-b44d-11ee-98f1-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1705395338; x=1706000138; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:content-language
         :references:cc:to:from:subject:user-agent:mime-version:date
         :message-id:from:to:cc:subject:date:message-id:reply-to;
        bh=6TAJ6zjWtLRXEZkSjTX+7HP+Qbx3hDt9G2TlnRtXvGU=;
        b=KukTinMemRFi2F5Gic3nkmcXprsKqTSuqR1gw7J5oGR4zd3jNS8hCGmzg6AF4UsSxF
         b+e0+25eC+OZXoMjL6e5LTrzQqwzUaRCeomL82AzfGAlspvvB/Z6XDQz3cTZoa1vw2s1
         w1y5g+Fm2/z1pP6pWl7BiXfCy01yH9iiin8JqwXezC80HC+5pJnmLW6kziyZHD76Cqsp
         UfL9YPZvj6o75hkB6d2LN3jbfVqXPvtkGdhzvN/Us307+/JrlDoGSYrs0yft8h9SBTDA
         OYG4CUGjXYL9mqXnZ3he4ARwm7/1OhWIqzJE+W9JVbJBfB+TOjyp52UPcvKMYmrkN//g
         jVlw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705395338; x=1706000138;
        h=content-transfer-encoding:in-reply-to:autocrypt:content-language
         :references:cc:to:from:subject:user-agent:mime-version:date
         :message-id:x-gm-message-state:from:to:cc:subject:date:message-id
         :reply-to;
        bh=6TAJ6zjWtLRXEZkSjTX+7HP+Qbx3hDt9G2TlnRtXvGU=;
        b=bXKYnJWnh2DZJYPsRTmJhY82X0oddGw61wojqt3h5ByOu+7sQhGnZ1CdyUySe5CRom
         ibcdit+ZXARfxq+kv436e0LpYRUatMyyJ3+u4XQ78hH83AVlUFrXzHX5Ud2de3PdjZvf
         Pt3YqW9JHvVQGwRj5rYKlHOP6DArKwyuffwh8L/IFYRWjhoNwOjC48VwMNRDAa/5YtUz
         4tKNyBW6eE2aLG8HVpKk6GdjttcsyAZqaVo+KnXxpK38BFxippgHFbD3y6rEkamm4+ih
         7Auw1JfhfW2BR/GQyC/SbQz62W0RLRW4O5oFp3YdPzzTwJjoP6F9jkmP241/RNJWTZob
         W1wA==
X-Gm-Message-State: AOJu0YwuOYv8+sYoOTMjEEn1441ZmmvZXdAvYbv7yepLrgiPe2yNRg21
	+uvqArqKj7wtH3gNzbcoX6G8KS2+kxpZOyUtsDJ8bfRY1g==
X-Google-Smtp-Source: AGHT+IGQbJv5tKt80iP6Bbmne5HWOK5QYrp1GRTDHDIAhgIEgBTXYE+FM5Qkus9ggNELqgxa68cOkQ==
X-Received: by 2002:a7b:c856:0:b0:40e:56ea:d9c3 with SMTP id c22-20020a7bc856000000b0040e56ead9c3mr3369722wml.47.1705395338138;
        Tue, 16 Jan 2024 00:55:38 -0800 (PST)
Message-ID: <b4532c37-1caf-481a-9621-ca4754a72ee4@suse.com>
Date: Tue, 16 Jan 2024 09:55:37 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] x86/CPU: convert vendor hook invocations to altcall
From: Jan Beulich <jbeulich@suse.com>
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, Wei Liu <wl@xen.org>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
References: <ece45cf6-51c8-413e-9963-21144fe64f2a@suse.com>
Content-Language: en-US
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <ece45cf6-51c8-413e-9963-21144fe64f2a@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 16.01.2024 09:41, Jan Beulich wrote:
> While not performance critical, these hook invocations still want
> converting: This way all pre-filled struct cpu_dev instances can become
> __initconst_cf_clobber, thus allowing to eliminate further 8 ENDBR
> during the 2nd phase of alternatives patching (besides moving previously
> resident data to .init.*).
> 
> Since all use sites need touching anyway, take the opportunity and also
> address a Misra C:2012 Rule 5.5 violation: Rename the this_cpu static
> variable.
> 
> Signed-off-by: Jan Beulich <jbeulich@suse.com>
> ---
> With LTO it might end up necessary to tag as __used more than just
> "default_cpu".

Yet then ...

> --- a/xen/arch/x86/cpu/common.c
> +++ b/xen/arch/x86/cpu/common.c
> @@ -113,10 +113,10 @@ static void cf_check default_init(struct
>  	__clear_bit(X86_FEATURE_SEP, c->x86_capability);
>  }
>  
> -static const struct cpu_dev default_cpu = {
> +static const struct cpu_dev __initconst_cf_clobber default_cpu = {

... I sent a stale patch, where __used was still missing here.

Considering the intention behind __initconst_cf_clobber I wonder
whether we wouldn't better integrate __used into that macro, such
that we become independent of optimizations the tool chain may be
doing.

Jan


From xen-devel-bounces@lists.xenproject.org Tue Jan 16 09:00:53 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 16 Jan 2024 09:00:53 +0000
Received: from list by lists.xenproject.org with outflank-mailman.667671.1039162 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPfJQ-0004Jl-D3; Tue, 16 Jan 2024 09:00:48 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 667671.1039162; Tue, 16 Jan 2024 09:00:48 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPfJQ-0004Je-AQ; Tue, 16 Jan 2024 09:00:48 +0000
Received: by outflank-mailman (input) for mailman id 667671;
 Tue, 16 Jan 2024 09:00:47 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=lstz=I2=minervasys.tech=carlo.nonato@srs-se1.protection.inumbo.net>)
 id 1rPfJP-0004JY-4Y
 for xen-devel@lists.xenproject.org; Tue, 16 Jan 2024 09:00:47 +0000
Received: from mail-ej1-x62a.google.com (mail-ej1-x62a.google.com
 [2a00:1450:4864:20::62a])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id bb8401ca-b44d-11ee-98f1-6d05b1d4d9a1;
 Tue, 16 Jan 2024 10:00:45 +0100 (CET)
Received: by mail-ej1-x62a.google.com with SMTP id
 a640c23a62f3a-a28b0207c1dso777136766b.3
 for <xen-devel@lists.xenproject.org>; Tue, 16 Jan 2024 01:00:45 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: bb8401ca-b44d-11ee-98f1-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=minervasys-tech.20230601.gappssmtp.com; s=20230601; t=1705395644; x=1706000444; darn=lists.xenproject.org;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:from:to:cc:subject:date
         :message-id:reply-to;
        bh=kyjnL1za0r89dP1OokXK0TAUeUj/Xlsyon8HZwa1NpE=;
        b=NOVuwAdU5LHxxT5veIsCb0HJPtegPJsvzXzqOPgXXR9oZTxpDQfXN6WRa35a0pVfYB
         +5w6sK/CDJVJB7q2O3nb6+2A3TSb8llRkrfvrZKOV9cTtkwFGHlOiLHe7675SKbFo2Jv
         q6Ys5zRxPB8s+jhQth1Xw7foBJONyVt8QAH6y/kGfEhA4V/nOzwGxCiYNElUz6zHfuXp
         M+3leMOwydoTjKmgHRYAyowm1ZPen7uns2kvJCX2op2pHWBap7/13c9pCXIRklgjT6cZ
         btSb19llpjz4ex8eFB5S1DVuxFeS4n3HMz9jtMxBlUGVZXUhx2mrTyBShXl2iVCFzCpw
         dbnA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705395644; x=1706000444;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to;
        bh=kyjnL1za0r89dP1OokXK0TAUeUj/Xlsyon8HZwa1NpE=;
        b=PmUeLdpSiL4B2ddrzxvYJTZYxppxkRS6CM3LwFfJAjw+UnhZ5lh1WGr9lCHMjY+ikj
         6iL0IOD5eEQL6Xh9rg/c0UVjzWlTttU7DOl46CK/wMg4PZFqAwbCJBSTAb7rbfZJgWca
         W/hXTaYYrX+hZo8Piy8QJ+oMScrCIW+QrfIAAkoUGGEVQd6FE4uue0uzM7Fel8zQL29C
         UknEbwxWGtv3Mdqmy1Le2GtiDUTszbIlWKnmc+Ehy7AHl1i6CSJk1wjjiE1In0lrE1Gk
         UaRLx9//OOCRbIjMFdvOVFXrVf+P5WebVlAU2ojXvLXhKkJF9Ow/ZmZ7M2sbZAe6ZQRu
         gZTg==
X-Gm-Message-State: AOJu0Yw+CBCvlPQG3456QuhtGNkc15/SuLUFf+P5VmPLqUDmNF2i0Qko
	NJzzOz+SWm5OiIIggEfONKCLapYyFdlev2jWIVMDjmTE+X4pkg==
X-Google-Smtp-Source: AGHT+IGSRCo6awZJOe/2+XG77RbwKBrTsP+KXpLrzgQHJhia8XT5R9OEG2H6wWp3dWjbpWTgrGSC2YS7PKMY74zsuWA=
X-Received: by 2002:a17:907:c26:b0:a28:aee4:cbd1 with SMTP id
 ga38-20020a1709070c2600b00a28aee4cbd1mr4148782ejc.7.1705395644282; Tue, 16
 Jan 2024 01:00:44 -0800 (PST)
MIME-Version: 1.0
References: <20240102095138.17933-1-carlo.nonato@minervasys.tech>
 <20240102095138.17933-14-carlo.nonato@minervasys.tech> <4553cc26-deb5-42ed-87b9-6cba2a5099eb@xen.org>
 <CAG+AhRXHfGJksqUrPXoHqNze+D654jJV0kVYBZaPLYwccdEz5Q@mail.gmail.com>
 <aa064f8f-d30e-4ac1-9239-daba5a806794@xen.org> <CAG+AhRXUPvKGu-y9qbVmhc0_ThCdxFvG=BYwCQMBH=mjo45qHw@mail.gmail.com>
 <985e1a2a-45eb-496c-8043-5f0c3c9f7766@xen.org> <CAG+AhRVKbM-n8ieg-CMbRG-4RgUXMSZL=ZER8EAWvGJgpEzUwA@mail.gmail.com>
 <ca2a64f8-ac0d-4b61-8f48-34478371bcbc@xen.org>
In-Reply-To: <ca2a64f8-ac0d-4b61-8f48-34478371bcbc@xen.org>
From: Carlo Nonato <carlo.nonato@minervasys.tech>
Date: Tue, 16 Jan 2024 10:00:32 +0100
Message-ID: <CAG+AhRVxBt=L-ioAcy9HH_kZq6jN84hLSK7UrkykO9LJVFGraA@mail.gmail.com>
Subject: Re: [PATCH v5 13/13] xen/arm: add cache coloring support for Xen
To: Julien Grall <julien@xen.org>
Cc: xen-devel@lists.xenproject.org, 
	Stefano Stabellini <sstabellini@kernel.org>, Bertrand Marquis <bertrand.marquis@arm.com>, 
	Michal Orzel <michal.orzel@amd.com>, Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>, 
	Marco Solieri <marco.solieri@minervasys.tech>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

Hi Julien,

On Mon, Jan 15, 2024 at 5:16=E2=80=AFPM Julien Grall <julien@xen.org> wrote=
:
> On 15/01/2024 15:43, Carlo Nonato wrote:
> > Hi Julien,
>
> Hi Carlo,
>
> > On Mon, Jan 15, 2024 at 12:18=E2=80=AFPM Julien Grall <julien@xen.org> =
wrote:
> >> On 15/01/2024 10:11, Carlo Nonato wrote:
> >>> I understand what you're talking about, and it seems reasonable to ge=
t rid of
> >>> xen_colored_temp[] and create_llc_coloring_mappings() since in the en=
d they
> >>> serve the purpose of mapping the physically colored space that is alr=
eady
> >>> mapped using xen_xenmap[] pagetables.
> >>> What I don't understand is then how to copy/relocate Xen since I don'=
t have a
> >>> destination virtual space anymore to use in relocate_xen().
> >>
> >> You will need to link xen_xenmap[] in boot_second[...] as well. With
> >> that, you will be able to access the new Xen through the temporary are=
a.
> >
> > Wouldn't it result in overwriting the current virtual space mapping?
> > boot_second is the live page table and if I link xen_xenmap[] then
> > XEN_VIRT_START would point to the new colored space which is still empt=
y at
> > this stage...
>
> If you link at XEN_VIRT_START then yes. But you could link at
> BOOT_RELOC_VIRT_START like you already do today.

Ok I think I got it.

> >
> >> [...]
> >>
> >>>> Note that this means the init_ttbr cannot be written directly. But y=
ou
> >>>> can solve this problem by re-mapping the address.
> >>>
> >>> How to remap a single address?
> >>
> >> You should be able to use map_domain_page() to map the page where
> >> init_ttbr is.
> >>
> >>> And if moving init_ttbr in the identity-mapped area means that it's n=
o longer
> >>> writable, so that I need to remap it, why moving it in that area in t=
he first
> >>> place. Again I think I'm missing something.
> >>
> >> The goal is to have everything used (code, data) before the MMU is
> >> turned on residing in a single page. So secondary CPUs can directly ju=
mp
> >> to the colored Xen without any trouble.
> >
> > This is what confuses me. Why having everything on a single page makes
> > secondary cpus able to jump directly to colored Xen? (also see below)
>
> Because the code running with the MMU off can access easily access
> everything.

This was what I got wrong. Now it's clear.

> >
> >>>>>
> >>>>> 3) To access the identity mapping area I would need some accessor t=
hat takes
> >>>>> an address and returns it + phys_offset, or is there a better way t=
o do it?
> >>>>
> >>>> I am not sure I understand what you mean. Can you clarify?
> >>>
> >>> In my idea, I would use the identity mapping to access the "old" vari=
ables,
> >>> where "old" means non physically colored. init_ttbr is an example. Wh=
en
> >>> Xen it's copied on the new physical space, init_ttbr is copied with i=
t and
> >>> if the boot cpu modifies this variable, it's actually touching the co=
lored
> >>> one and not the old one. This means that secondary CPUs that still ha=
ven't
> >>> jumped to the new space, won't be able to see the new value and will =
never
> >>> go online.
> >>> So to access this "old" init_ttbr variable I need it's identity addre=
ss,
> >>> which is its current virtual address + some physical offset. I was as=
king
> >>> you if this is the right approach to use the identity mapping.
> >>
> >> Secondary CPUs would directly start on the colored Xen. So they will b=
e
> >> able to access the "new" init_ttbr & co.
> >
> > How can this be true? I mean, in call_psci_cpu_on() I can start those C=
PUs in
> > the colored space, but they still use the boot_* pagetables
>
> Are you looking at the 64-bit or 32-bit code? For 64-bit, staging is not
> using boot_* pagetable anymore for secondary CPUs. Instead, they
> directly jump to the runtime page-tables.

Again, my fault. Got it.

> > and there I can't
> > easily link the new colored space, or, at least, I'm not succeding in d=
oing
> > that. What I tried at the moment is to link xen_xenmap in boot_second a=
fter
> > switch_ttbr because of the problem I described above. But then secondar=
y
> > CPUs never go online...
>
> It would be helpful if you share some code.

Given the newfound knowledge, I'll think I can get further.

Thanks.

> >
> >> [...]
> >>
> >>>> ... as I wrote ealier your current approach seems to have a flaw. As=
 you
> >>>> overwrite xen_bootmodule->{start, size}. setup_mm() will end up to a=
dd
> >>>> the old Xen region to the boot allocator. This is before any seconda=
ry
> >>>> CPUs are booted up.
> >>>>
> >>>> IOW, the allocator may provide some memory from the old Xen and noth=
ing
> >>>> good will happen from that.
> >>>>
> >>>> The only way to solve it is to add another module. So the memory is
> >>>> skipped by setup_mm(). However see below.
> >>>>
> >>>>>
> >>>>> Yes that should be memory that in the end would not be needed so it=
 must
> >>>>> return to the boot-allocator (if that's what you mean). But how to =
do
> >>>>> that?
> >>>>
> >>>> You can't really discard the old temporary Xen. This may work today
> >>>> because we don't support CPU hotplug or suspend/resume. But there wa=
s
> >>>> some series on the ML to enable it and I don't see any reason why
> >>>> someone would not want to use the features with cache coloring.
> >>>>
> >>>> So the old temporary Xen would have to be kept around forever. This =
is
> >>>> up to 8MB of memory wasted.
> >>>>
> >>>> The right approach is to have the secondary CPU boot code (including=
 the
> >>>> variables it is using) fitting in the same page (or possibly multipl=
e so
> >>>> long this is small and physically contiguous). With that it doesn't
> >>>> matter where is the trampoline, it could stay at the old place, but =
we
> >>>> would only waste a few pages rather than up 8MB as it is today.
> >>>
> >>> So what are you suggesting is to create a new section in the linker s=
cript
> >>> for the trampoline code and data,
> >>
> >> We already have a section for that in place (see .idmap.*) which happe=
ns
> >> to be at the beginning of Xen. Right now, the section is in text. Whic=
h
> >> is why it is read-only executable.
> >>
> >>> then in setup_mm() we would skip this
> >>> memory?
> >>
> >> We should not need this. Secondary boot CPUs should boot direclty on t=
he
> >> colored Xen.
> >>
> >>> Am I following you correctly? Sorry those topics are a little out
> >>> of my preparation as you probably already guessed.
> >>
> >> No worries. I am happy to go in as much details as necessary. I can al=
so
> >> attempt to write a patch if that helps. (unless someone else in the Ar=
m
> >> maintainers want to give a try).
> >
> > Yes this would help. Thanks.
>
> I will try to have a look this evening. If I can't, it may have to wait
> a couple of weeks unless someone has time before hand.
>
> Cheers,
>
> --
> Julien Grall


From xen-devel-bounces@lists.xenproject.org Tue Jan 16 09:21:54 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 16 Jan 2024 09:21:54 +0000
Received: from list by lists.xenproject.org with outflank-mailman.667677.1039172 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPfdc-0007rP-7H; Tue, 16 Jan 2024 09:21:40 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 667677.1039172; Tue, 16 Jan 2024 09:21:40 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPfdc-0007rI-2e; Tue, 16 Jan 2024 09:21:40 +0000
Received: by outflank-mailman (input) for mailman id 667677;
 Tue, 16 Jan 2024 09:21:39 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rPfdb-0007r8-0m; Tue, 16 Jan 2024 09:21:39 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rPfda-0005Jc-LW; Tue, 16 Jan 2024 09:21:38 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rPfda-0004Eh-B2; Tue, 16 Jan 2024 09:21:38 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rPfda-00044x-Ae; Tue, 16 Jan 2024 09:21:38 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=xq/FYRnm9f7BoeaAMjZKNyEQLsP2M3xpfJ1GWg5cFw0=; b=xgUxOC2IFZtjkWRW+VPgQw47W6
	W1IvrwWgFmqoR7yIsljLAISOwHUMJ4xS5Ng2N7t8ssZjbzwyes1bPDoYZH+a7DYanDDytNwpiQSJR
	gBn8xP+fQ3T/j4hNvI7rIWKa5wmmfIrH56Nc2ewANl7uXs2phYUT/l0jzGjeyfh08b4g=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184369-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [ovmf test] 184369: all pass - PUSHED
X-Osstest-Versions-This:
    ovmf=a4b8944e27f497b0f4dbfb6aa412decab2874b58
X-Osstest-Versions-That:
    ovmf=682a5ed1a229443a259da2df9f961a0448071e3e
From: osstest service owner <osstest-admin@xenproject.org>
Date: Tue, 16 Jan 2024 09:21:38 +0000

flight 184369 ovmf real [real]
http://logs.test-lab.xenproject.org/osstest/logs/184369/

Perfect :-)
All tests in this flight passed as required
version targeted for testing:
 ovmf                 a4b8944e27f497b0f4dbfb6aa412decab2874b58
baseline version:
 ovmf                 682a5ed1a229443a259da2df9f961a0448071e3e

Last test of basis   184366  2024-01-16 01:42:48 Z    0 days
Testing same since   184369  2024-01-16 07:14:43 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Junfeng Guan <junfengx.guan@intel.com>

jobs:
 build-amd64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-amd64-amd64-xl-qemuu-ovmf-amd64                         pass    
 test-amd64-i386-xl-qemuu-ovmf-amd64                          pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Pushing revision :

To xenbits.xen.org:/home/xen/git/osstest/ovmf.git
   682a5ed1a2..a4b8944e27  a4b8944e27f497b0f4dbfb6aa412decab2874b58 -> xen-tested-master


From xen-devel-bounces@lists.xenproject.org Tue Jan 16 09:33:36 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 16 Jan 2024 09:33:36 +0000
Received: from list by lists.xenproject.org with outflank-mailman.667683.1039181 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPfp5-0001PV-5x; Tue, 16 Jan 2024 09:33:31 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 667683.1039181; Tue, 16 Jan 2024 09:33:31 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPfp5-0001PO-3R; Tue, 16 Jan 2024 09:33:31 +0000
Received: by outflank-mailman (input) for mailman id 667683;
 Tue, 16 Jan 2024 09:33:29 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=MjSB=I2=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rPfp3-0001PI-TV
 for xen-devel@lists.xenproject.org; Tue, 16 Jan 2024 09:33:29 +0000
Received: from mail-wm1-x334.google.com (mail-wm1-x334.google.com
 [2a00:1450:4864:20::334])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 4dd71a0f-b452-11ee-98f1-6d05b1d4d9a1;
 Tue, 16 Jan 2024 10:33:28 +0100 (CET)
Received: by mail-wm1-x334.google.com with SMTP id
 5b1f17b1804b1-40b5155e154so117396545e9.3
 for <xen-devel@lists.xenproject.org>; Tue, 16 Jan 2024 01:33:28 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 f1-20020a5d6641000000b0033609584b9dsm14166031wrw.74.2024.01.16.01.33.27
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 16 Jan 2024 01:33:27 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 4dd71a0f-b452-11ee-98f1-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1705397608; x=1706002408; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=ayKqvM2X3si6GXuxV4ohoDRNIupE1BWknrfPh0PWMf0=;
        b=WqIWN2GCf+AH2HicMXBqji24olM2eXjA7doePIThPXKdTyqNrr3csmehW2D3lrl7SR
         DVO7GLqiIMOxcgzmz/DI2cxzaKR8EanMLdyijPXGrjNxcy1Ko1aRcCObeGJoDPd4zpq3
         i5w4/C8iF6Qgc3XPx9lS9kvev992to2cAbzfVnQvjFvLtVcm7c2vw9SWSG07hCcoJwiC
         X1DJJBUerDy/ZXNKK3c00G9osnFzD9bA14mP0xwthNfA+nr9Rd8l29/JNcBtO85rG1BV
         it9PnyURyeJf/jFrMI5N23Ld3M2GHs6iuAKH4EMlNzblLAKoFFK7Jnkrae3wd9lgq7DN
         PA6w==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705397608; x=1706002408;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=ayKqvM2X3si6GXuxV4ohoDRNIupE1BWknrfPh0PWMf0=;
        b=ti4k6ZP5XDM5psUcwMJhlloiCFwYg8tXTkTQ/k6ft5TBFz66RVq7KtQEFwPBnRBGO7
         pz7l++Wv5IxDKviFajN7iAlZ11PW8zv0HpwuZIbRUvoIwUM/KDmx6cSG3MdC7+h1RTCW
         BMRQG5l9YWz57YfVp2+Bgc22m4mgSdPT+sibsBWXal4v8vBG2eyVQMqTYhwbV5I/rM3e
         3fY7WjZ+j9YJ40nHCoNIqleOn8Ki5QNT49S1czT7fwnQXM+aFOmCbL2dvGn3NiYV69zu
         D3F+6GXzpFRqgmP95KOCfeLDREW0DYsuPwvw1zP8XzFtAE5+2dUq5gKR2gi54rsQ9G8D
         PWsg==
X-Gm-Message-State: AOJu0YwFrbA6UT4DgaYv6aekTFDVio6NmWJw9ysSBGNhy2WAEWbTp7e9
	nsN/dS1XG6/6KiY1Y/nmwe2dstcy3W8n
X-Google-Smtp-Source: AGHT+IH5zC4iG+sR7vkB90PqHsIgd8ysI5U1kUcxwHyGDuBf8c12Jp1O+jvGw0qdhthzsGEqhQxZkA==
X-Received: by 2002:a05:600c:1381:b0:40e:4b48:57d4 with SMTP id u1-20020a05600c138100b0040e4b4857d4mr3527981wmf.180.1705397607694;
        Tue, 16 Jan 2024 01:33:27 -0800 (PST)
Message-ID: <ac742d12-ec91-4215-bb42-82a145924b4f@suse.com>
Date: Tue, 16 Jan 2024 10:33:26 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: E820 memory allocation issue on Threadripper platforms
Content-Language: en-US
To: Patrick Plenefisch <simonpatp@gmail.com>
Cc: xen-devel@lists.xenproject.org, Juergen Gross <jgross@suse.com>
References: <CAOCpoWdOH=xGxiQSC1c5Ueb1THxAjH4WiZbCZq-QT+d_KAk3SA@mail.gmail.com>
 <1708c3d7-662a-44bc-b9b3-4ab9f8642d7b@suse.com>
 <dcaf9d8d-ad5a-4714-936b-79ed0e587f9d@suse.com>
 <CAOCpoWeowZPuQTeBp9nu8p8CDtE=u++wN_UqRoABZtB57D50Qw@mail.gmail.com>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <CAOCpoWeowZPuQTeBp9nu8p8CDtE=u++wN_UqRoABZtB57D50Qw@mail.gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 16.01.2024 01:22, Patrick Plenefisch wrote:
> I managed to set up serial access and saved the output with the requested
> flags as the attached logs

Thanks. While you didn't ...

> On Thu, Jan 11, 2024 at 5:13 AM Juergen Gross <jgross@suse.com> wrote:
>> On 11.01.24 09:37, Jan Beulich wrote:
>>> On 11.01.2024 03:29, Patrick Plenefisch wrote:
>>>> I ran into a memory allocation issue, I think. It is the same as
>>>> https://github.com/QubesOS/qubes-issues/issues/8791 and I saw at the
>> end it
>>>> was recommended (by marmarek) that the issue reporter forward the issue
>> to
>>>> this list. I searched the list, but as I didn't see it in the list
>> already,
>>>> I'm doing that now.
>>>>
>>>> Hardware:
>>>> I have an AMD Threadripper 7960X on a ASRock TRX50 WS motherboard. The
>>>> Qubes reporter had a Threadripper 3970X on an ASUS Prime TRX40-Pro
>>>> Motherboard. I saw a 3rd issue report of a similar issue on another
>>>> Threadripper, so I think this may be Threadripper-specific.
>>>>
>>>> Setup:
>>>> The QuebesOS reporter was using Qubes Installer.
>>>> My install was that I had a fresh install of Debian 12 (no gui), and
>> then
>>>> did `apt install xen-system-amd64` and rebooted.
>>>>
>>>> The issue:
>>>> Any boot of Xen on the hardware results in a halted machine. When
>>>> monitoring the logs with `vga=,keep`, we get:
>>>>
>>>> (XEN) *** Serial input to DOM0 (type 'CTRL-a' three times to switch
>> input)
>>>> (XEN) Freed 644kB init memory
>>>> mapping kernel into physical memory
>>>> about to get started…
>>>> xen hypervisor allocated kernel memory conflicts with E820
>>>
>>> So first of all (the title doesn't say it) this is a Linux Dom0 issue.
>>> Whether or not needing addressing in Xen is unknown at this point.
>>>
>>>> (XEN) Hardware Dom0 halted: halting machine
>>>>
>>>> None of the settings I or the Qubes reporter have tried have been able
>> to
>>>> get past this failure.
>>>>
>>>> I am happy to provide debugging support.
>>>
>>> Well, the crucial piece of data initially is going to be: What's the
>>> E820 map Xen gets to see, what's the E820 map Dom0 gets to see, and
>>> what address range is the conflict detected for? The first question
>>> is possible to answer by supplying a serial log. The second question
>>> likely means adding some debugging code to either Xen or Linux. The
>>> answer to third question may be possible to infer from the other
>>> data, but would likely be better to obtain explicitly by adjusting /
>>> amending the message Linux emits.

... fiddle with the Linux message,  ...

>> The needed information should all be in the hypervisor messages.
>> 
>> The hypervisor is initially presenting a memory map to dom0 which is not
>> the
>> same as the native memory map. Dom0 tries to rearrange its memory layout to
>> be compatible with the native memory map.
>>
>> The seen message ("xen hypervisor allocated kernel memory conflicts with
>> E820")
>> tells us that the kernel position is conflicting with the native memory map
>> (at least one guest pfn occupied by the kernel would be at a non-RAM
>> populated
>> location after rearrangement of memory).
>>
>> In theory it would be possible to cover this case, too, but it would be
>> quite
>> cumbersome. Right now only the initrd is allowed to conflict with the
>> memory map
>> (it will be moved in this case), kernel and initial page table conflicts
>> are not
>> handled.
>>
>> When I added the conflict handling nearly 10 years ago, there was no
>> hardware
>> known to have memory holes at addresses which would conflict with Xen's
>> initial
>> idea of dom0 memory layout.

... as per

(XEN)  Dom0 kernel: 64-bit, PAE, lsb, paddr 0x1000000 -> 0x4a00000

there's an overlap with not exactly a hole, but with an
EfiACPIMemoryNVS region:

(XEN)  0000000100000-0000003159fff type=2 attr=000000000000000f
(XEN)  000000315a000-0000003ffffff type=7 attr=000000000000000f
(XEN)  0000004000000-0000004045fff type=10 attr=000000000000000f
(XEN)  0000004046000-0000009afefff type=7 attr=000000000000000f

(the 3rd of the 4 lines). Considering there's another region higher
up:

(XEN)  00000a747f000-00000a947efff type=10 attr=000000000000000f

I'm inclined to say it is poor firmware (or, far less likely, boot
loader) behavior to clobber a rather low and entirely arbitrary RAM
range, rather than consolidating all such regions near the top of
RAM below 4Gb. There are further such odd regions, btw:

(XEN)  0000009aff000-0000009ffffff type=0 attr=000000000000000f
...
(XEN)  000000b000000-000000b020fff type=0 attr=000000000000000f

If the kernel image was sufficiently much larger, these could become
a problem as well. Otoh if the kernel wasn't built with
CONFIG_PHYSICAL_START=0x1000000, i.e. to start at 16Mb, but at, say,
2Mb, things should apparently work even with this unusual memory
layout (until the kernel would grow enough to again run into that
very region).

It remains to be seen in how far it is reasonably possible to work
around this in the kernel. While (sadly) still unsupported, in the
meantime you may want to consider running Dom0 in PVH mode.

Jan


From xen-devel-bounces@lists.xenproject.org Tue Jan 16 09:44:40 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 16 Jan 2024 09:44:40 +0000
Received: from list by lists.xenproject.org with outflank-mailman.667687.1039192 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPfzm-0003S9-3o; Tue, 16 Jan 2024 09:44:34 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 667687.1039192; Tue, 16 Jan 2024 09:44:34 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPfzm-0003S2-0t; Tue, 16 Jan 2024 09:44:34 +0000
Received: by outflank-mailman (input) for mailman id 667687;
 Tue, 16 Jan 2024 09:44:32 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=gvQ1=I2=gmail.com=oleksii.kurochko@srs-se1.protection.inumbo.net>)
 id 1rPfzk-0003Rw-E7
 for xen-devel@lists.xenproject.org; Tue, 16 Jan 2024 09:44:32 +0000
Received: from mail-lj1-x22a.google.com (mail-lj1-x22a.google.com
 [2a00:1450:4864:20::22a])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id d87bebfa-b453-11ee-9b0f-b553b5be7939;
 Tue, 16 Jan 2024 10:44:30 +0100 (CET)
Received: by mail-lj1-x22a.google.com with SMTP id
 38308e7fff4ca-2ccae380df2so105092071fa.1
 for <xen-devel@lists.xenproject.org>; Tue, 16 Jan 2024 01:44:30 -0800 (PST)
Received: from [192.168.206.239] ([94.75.70.14])
 by smtp.gmail.com with ESMTPSA id
 b10-20020a2e848a000000b002cdc1beb671sm617239ljh.12.2024.01.16.01.44.28
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 16 Jan 2024 01:44:29 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: d87bebfa-b453-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1705398270; x=1706003070; darn=lists.xenproject.org;
        h=mime-version:user-agent:content-transfer-encoding:references
         :in-reply-to:date:cc:to:from:subject:message-id:from:to:cc:subject
         :date:message-id:reply-to;
        bh=PQ+OewsF4vdys6UbPikUgYDURvKri31Dv3fEP0hd5eM=;
        b=ShxewF/UFXH0cNqyFkZiwLT9lM410coVZT/tgsg1uB81AH1sNRNOea6j15IxTSZi+y
         7pGtThA/pmHF7hWZU6TFbHlAcd5DMcaQGIiPoVXP2loGUDKSPbC4YMLHCy7diwaM48NM
         d+iA0EasS2ojR2sCCMfhXLGjlxwTPkTKILcSpR+rm2jaiHlk49pTQlPrRDgnlbL/T+NS
         L3jKdAJSInHwi/bNInNohLix8P3XEbXPfxJkj2yAopL2ublnmlGgk/kY1/vWmet+M2ix
         MzmjaSTYDqYzU/cauLdcvYlnNd68yuF7SXlom6BCNwb0LGKVv8do+pQpH6ITAXUPDAB6
         zhog==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705398270; x=1706003070;
        h=mime-version:user-agent:content-transfer-encoding:references
         :in-reply-to:date:cc:to:from:subject:message-id:x-gm-message-state
         :from:to:cc:subject:date:message-id:reply-to;
        bh=PQ+OewsF4vdys6UbPikUgYDURvKri31Dv3fEP0hd5eM=;
        b=ThZDyB4usluDs6CTHCp3wztGYKDTO/amGhWNXkV72HEoLVHJM+rTARCLlYhCMVEyvE
         BYvTbtfiVaQaQfSwyT+HrwsgfFALKBUXfwJROrZxnes4TXzlqm+KDodhDq/xA4HySQND
         ec3EB+9r/z/h1ayTYWd+SOVCCA+MN0RaxLPsnsTBe29DET7LrUKWmw8Eftb1upr+seo6
         HiosYJQPOvUvUmw/YSRwmKK6d1PgI15xlDwqWmLNQJzYxJq1oaV9lwpiVNU+z0hL/KX6
         3Grg4TWtPr9s4YgQqswX6AQcn1e2BZkW6+MIEvz/GXMxAScPJcX/W6BXA7WZmIHeLn0z
         XTuA==
X-Gm-Message-State: AOJu0Yxom8nnDv4sfI8q/oHGtd2tbMqC+SENIPIp527a7oTVAo/jFdRL
	o5yGmL04zPaMqpS0LAABE0I=
X-Google-Smtp-Source: AGHT+IH3Ydk5CX9J74BkEy4Hbb9g/SvzynxW1pcA4oOCYoPzaD8Mkg4wmVmlCbCE/HCEGe9bNN412Q==
X-Received: by 2002:a05:651c:204:b0:2cd:48d9:4d96 with SMTP id y4-20020a05651c020400b002cd48d94d96mr3038866ljn.49.1705398269514;
        Tue, 16 Jan 2024 01:44:29 -0800 (PST)
Message-ID: <5bf15f83be5a1cf38bff58d996e74a6de6b044b5.camel@gmail.com>
Subject: Re: [PATCH v3 21/34] xen/riscv: introduce p2m.h
From: Oleksii <oleksii.kurochko@gmail.com>
To: Jan Beulich <jbeulich@suse.com>
Cc: Shawn Anastasio <sanastasio@raptorengineering.com>, Alistair Francis
 <alistair.francis@wdc.com>, Bob Eshleman <bobbyeshleman@gmail.com>, Connor
 Davis <connojdavis@gmail.com>, xen-devel@lists.xenproject.org, Julien Grall
 <julien@xen.org>
Date: Tue, 16 Jan 2024 11:44:27 +0200
In-Reply-To: <c1abf4ca-d69a-4a17-b23c-18f06b8fddda@suse.com>
References: <cover.1703255175.git.oleksii.kurochko@gmail.com>
	 <c3b1f24aea1ba01505697717b240c8d036abfee1.1703255175.git.oleksii.kurochko@gmail.com>
	 <abeafa19-7867-46b2-bc0e-b39eaa0f5036@xen.org>
	 <abef4701c3f2292e672679f1a18c826d699e1af2.camel@gmail.com>
	 <c1abf4ca-d69a-4a17-b23c-18f06b8fddda@suse.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
User-Agent: Evolution 3.50.2 (3.50.2-1.fc39) 
MIME-Version: 1.0

On Mon, 2024-01-15 at 12:01 +0100, Jan Beulich wrote:
> On 15.01.2024 11:35, Oleksii wrote:
> > Hi Julien,
> >=20
> > On Fri, 2024-01-12 at 10:39 +0000, Julien Grall wrote:
> > > Hi Oleksii,
> > >=20
> > > On 22/12/2023 15:13, Oleksii Kurochko wrote:
> > > > Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>
> > > > ---
> > > > Changes in V3:
> > > > =C2=A0 - add SPDX
> > > > =C2=A0 - drop unneeded for now p2m types.
> > > > =C2=A0 - return false in all functions implemented with BUG()
> > > > inside.
> > > > =C2=A0 - update the commit message
> > > > ---
> > > > Changes in V2:
> > > > =C2=A0 - Nothing changed. Only rebase.
> > > > ---
> > > > =C2=A0 xen/arch/ppc/include/asm/p2m.h=C2=A0=C2=A0 |=C2=A0=C2=A0 3 +=
-
> > > > =C2=A0 xen/arch/riscv/include/asm/p2m.h | 102
> > > > +++++++++++++++++++++++++++++++
> > > > =C2=A0 2 files changed, 103 insertions(+), 2 deletions(-)
> > > > =C2=A0 create mode 100644 xen/arch/riscv/include/asm/p2m.h
> > > >=20
> > > > diff --git a/xen/arch/ppc/include/asm/p2m.h
> > > > b/xen/arch/ppc/include/asm/p2m.h
> > > > index 25ba054668..3bc05b7c05 100644
> > > > --- a/xen/arch/ppc/include/asm/p2m.h
> > > > +++ b/xen/arch/ppc/include/asm/p2m.h
> > > > @@ -50,8 +50,7 @@ static inline void memory_type_changed(struct
> > > > domain *d)
> > > > =C2=A0 static inline int
> > > > guest_physmap_mark_populate_on_demand(struct
> > > > domain *d, unsigned long gfn,
> > > > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0
> > > > unsigned
> > > > int order)
> > > > =C2=A0 {
> > > > -=C2=A0=C2=A0=C2=A0 BUG_ON("unimplemented");
> > > > -=C2=A0=C2=A0=C2=A0 return 1;
> > > > +=C2=A0=C2=A0=C2=A0 return -EOPNOTSUPP;
> > > > =C2=A0 }
> > > > =C2=A0=20
> > > > =C2=A0 static inline int guest_physmap_add_entry(struct domain *d,
> > > > diff --git a/xen/arch/riscv/include/asm/p2m.h
> > > > b/xen/arch/riscv/include/asm/p2m.h
> > > > new file mode 100644
> > > > index 0000000000..d270ef6635
> > > > --- /dev/null
> > > > +++ b/xen/arch/riscv/include/asm/p2m.h
> > > > @@ -0,0 +1,102 @@
> > > > +/* SPDX-License-Identifier: GPL-2.0-only */
> > > > +#ifndef __ASM_RISCV_P2M_H__
> > > > +#define __ASM_RISCV_P2M_H__
> > > > +
> > > > +#include <asm/page-bits.h>
> > > > +
> > > > +#define paddr_bits PADDR_BITS
> > > > +
> > > > +/*
> > > > + * List of possible type for each page in the p2m entry.
> > > > + * The number of available bit per page in the pte for this
> > > > purpose is 4 bits.
> > > > + * So it's possible to only have 16 fields. If we run out of
> > > > value
> > > > in the
> > > > + * future, it's possible to use higher value for pseudo-type
> > > > and
> > > > don't store
> > > > + * them in the p2m entry.
> > > > + */
> > >=20
> > > This looks like a verbatim copy from Arm. Did you actually check
> > > RISC-V=20
> > > has 4 bits available in the PTE to store this value?
> > Thanks for noticing that, in RISC-V it is available only 2 bits (
> > bits
> > 8 and 9), so I'll update the comment:
> > 53=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 10 9=C2=A0=C2=A0=C2=A0 8 7 6 5 4 3 =
2 1 0
> > =C2=A0Physical Page Number=C2=A0=C2=A0=C2=A0=C2=A0 RSV=C2=A0 D A G U X =
W R V
>=20
> It's RSW (Reserved for Supervisor softWare use), not RSV, which is
> pretty
> important in this context.
Yes, you are right it is RSW. Thanks for the correction.

>=20
> > It seems that I missed something in the Arm code/architecture.As
> > far as I recall, in Arm, bits 5-8 are ignored by the MMU, and they
> > are expected
> > to be used by the hypervisor for its purpose.
> > However, in the code, I notice that these bits are utilized for
> > storing
> > a reference counter.
>=20
> Why "however"? Hardware still is going to ignore these bits.
Sure, these bits are ignored by hardware. What I meant is that,
according to the code, these bits are used for storing a reference
counter, not p2m_type_t. I guess I am missing something...

~ Oleksii


From xen-devel-bounces@lists.xenproject.org Tue Jan 16 09:46:17 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 16 Jan 2024 09:46:17 +0000
Received: from list by lists.xenproject.org with outflank-mailman.667690.1039201 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPg1Q-0003yI-EZ; Tue, 16 Jan 2024 09:46:16 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 667690.1039201; Tue, 16 Jan 2024 09:46:16 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPg1Q-0003yB-Bu; Tue, 16 Jan 2024 09:46:16 +0000
Received: by outflank-mailman (input) for mailman id 667690;
 Tue, 16 Jan 2024 09:46:15 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=gvQ1=I2=gmail.com=oleksii.kurochko@srs-se1.protection.inumbo.net>)
 id 1rPg1P-0003y3-KV
 for xen-devel@lists.xenproject.org; Tue, 16 Jan 2024 09:46:15 +0000
Received: from mail-lf1-x12c.google.com (mail-lf1-x12c.google.com
 [2a00:1450:4864:20::12c])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 16249e4e-b454-11ee-9b0f-b553b5be7939;
 Tue, 16 Jan 2024 10:46:13 +0100 (CET)
Received: by mail-lf1-x12c.google.com with SMTP id
 2adb3069b0e04-50e80d14404so9180461e87.1
 for <xen-devel@lists.xenproject.org>; Tue, 16 Jan 2024 01:46:13 -0800 (PST)
Received: from [192.168.206.239] ([94.75.70.14])
 by smtp.gmail.com with ESMTPSA id
 2-20020ac24822000000b0050e7555d7a4sm1706202lft.6.2024.01.16.01.46.12
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 16 Jan 2024 01:46:12 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 16249e4e-b454-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1705398373; x=1706003173; darn=lists.xenproject.org;
        h=mime-version:user-agent:content-transfer-encoding:references
         :in-reply-to:date:cc:to:from:subject:message-id:from:to:cc:subject
         :date:message-id:reply-to;
        bh=P6mx/Gd+SFP6tPsyavF5dliAe0VRZv+bFCzrTourHb0=;
        b=TSxMCtwFH55R/Q3sFdFQwGDfsDCmykj7hsGsRQMFwbEReNsPITVarBlZR/CzuDfcF1
         i8lnFZz/1URBq/gA3WOfM4wfRxGWJ87A18fwNKHJ5kQh4LTcDsF7v+iIV/+WEASe6Owj
         /lHq2woQdlR9HD/xzpT1xo5dVRe4c+RJKSNE8cfB55gJZYdpL6wCLjKCmDHDtcr+vdsX
         d4JakUFqE/LCVe6Fl84oJoSv8ju1yY7BTuOdPvEZEIGxTH0NQErVoX/LxvYIBel1E9Ts
         aTJe+Nq4nDAewa8SKAsHJWyaSZtbwhBaw9vBBZ/EUbsTO/csEvIxXC0fItoZSP1E79q0
         p+fQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705398373; x=1706003173;
        h=mime-version:user-agent:content-transfer-encoding:references
         :in-reply-to:date:cc:to:from:subject:message-id:x-gm-message-state
         :from:to:cc:subject:date:message-id:reply-to;
        bh=P6mx/Gd+SFP6tPsyavF5dliAe0VRZv+bFCzrTourHb0=;
        b=uWnYhBo+VcWgHY5+KFLbI73u1k5HJTNueHOIMXuKo0OiXlGqbDYtytbC4Xp1mMv8N9
         CFqCkMvDgfWhS4Y25BmwXEg30JyI0mZ0b5w5QbceyfVeqMcKOFtiNarXPvdBg8VoH7HL
         M/ndws6a3nHnY6DhEYBHIgZue7E8PdTGVWtEq+ndMc2dnHB38YwuXPqR7+NYh6KXJINV
         iTdub8Md+T8zZ4/mU0S2Lz1d+AeVd8vYt4xVRQ+vx0cOyhpfBu449Bn9o8EJjnyOW0CG
         bP5kZTrsK97QSftqHnfEbgtiuqau11yruYt5pfivXoqHfl1sql8LgefWrMM4MCxIg1Ep
         hzQw==
X-Gm-Message-State: AOJu0YzR9Zqz/hnR1UdOV3Go3uWRSYpy4csyd4vF2ICk3sofN1M7esCj
	ezy7JYMYGq0NRyplmUNsfsk=
X-Google-Smtp-Source: AGHT+IFS12zgVL6MTVrHD8Im00yLXJUUnqYiV0ds0ntf6ERLiaf6mcDKuUxPvgGNzWjj0xr4vghmfw==
X-Received: by 2002:a19:654a:0:b0:50e:74e1:2e35 with SMTP id c10-20020a19654a000000b0050e74e12e35mr4749698lfj.5.1705398373061;
        Tue, 16 Jan 2024 01:46:13 -0800 (PST)
Message-ID: <37f3bac7bd801727dc97168895d28c01d122a718.camel@gmail.com>
Subject: Re: [PATCH v3 22/34] xen/riscv: introduce regs.h
From: Oleksii <oleksii.kurochko@gmail.com>
To: Jan Beulich <jbeulich@suse.com>
Cc: Alistair Francis <alistair.francis@wdc.com>, Bob Eshleman
 <bobbyeshleman@gmail.com>, Connor Davis <connojdavis@gmail.com>, Andrew
 Cooper <andrew.cooper3@citrix.com>, George Dunlap
 <george.dunlap@citrix.com>,  Julien Grall <julien@xen.org>, Stefano
 Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>, 
 xen-devel@lists.xenproject.org
Date: Tue, 16 Jan 2024 11:46:11 +0200
In-Reply-To: <0d3cf7ef-a601-42c0-a6ed-61ab421f6c69@suse.com>
References: <cover.1703255175.git.oleksii.kurochko@gmail.com>
	 <3d1ae540120804af5fc812a1492931afac66bd39.1703255175.git.oleksii.kurochko@gmail.com>
	 <0d3cf7ef-a601-42c0-a6ed-61ab421f6c69@suse.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
User-Agent: Evolution 3.50.2 (3.50.2-1.fc39) 
MIME-Version: 1.0

On Mon, 2024-01-15 at 18:00 +0100, Jan Beulich wrote:
> On 22.12.2023 16:13, Oleksii Kurochko wrote:
> > Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>
> > ---
> > Changes in V3:
> > =C2=A0- update the commit message
> > =C2=A0- add Acked-by: Jan Beulich <jbeulich@suse.com>
>=20
> I see none above the --- marker.
Thanks for noticing. I'll add in the next patch version.

~ Oleksii


From xen-devel-bounces@lists.xenproject.org Tue Jan 16 09:58:17 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 16 Jan 2024 09:58:17 +0000
Received: from list by lists.xenproject.org with outflank-mailman.667695.1039211 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPgCy-0006ao-GB; Tue, 16 Jan 2024 09:58:12 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 667695.1039211; Tue, 16 Jan 2024 09:58:12 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPgCy-0006ah-De; Tue, 16 Jan 2024 09:58:12 +0000
Received: by outflank-mailman (input) for mailman id 667695;
 Tue, 16 Jan 2024 09:58:11 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=MjSB=I2=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rPgCx-0006ab-3Z
 for xen-devel@lists.xenproject.org; Tue, 16 Jan 2024 09:58:11 +0000
Received: from mail-lj1-x236.google.com (mail-lj1-x236.google.com
 [2a00:1450:4864:20::236])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id c0e3bdd2-b455-11ee-98f1-6d05b1d4d9a1;
 Tue, 16 Jan 2024 10:58:09 +0100 (CET)
Received: by mail-lj1-x236.google.com with SMTP id
 38308e7fff4ca-2cddf596321so4584141fa.0
 for <xen-devel@lists.xenproject.org>; Tue, 16 Jan 2024 01:58:09 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 t20-20020a05687044d400b002060e99b486sm2959038oai.22.2024.01.16.01.58.08
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 16 Jan 2024 01:58:08 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: c0e3bdd2-b455-11ee-98f1-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1705399089; x=1706003889; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:cc:references
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=pSuM/UmNt07xCDdjZ412hbmgTqRAAFf8vSrsjLDFpCY=;
        b=WJj1SMHTR624pJ+STFxldQ6OBUb136suVGOr1Dw3RPZnJRDwkYzN/fNpbiXSWf84zf
         KuomTPyChnjz8NqATgxFDoXo3Mn4PdygDvA//RIckTOHTuXZDIbLowcYMQrYU94oQA9v
         stvMTc90Oy9npsBxcU5pE9AAG0XAGlhjtNEBP71TYFqM9Sx/k/VirKW7P8ex3wRCRzh4
         z3VU+1JgWabB0zmNrxptf29effuFvPd01v5aoM9zNXWRzf/Z4CGP1oYfurc/t19vLH5+
         WmijdhRGFcleOWV/7Qogo6yUuGA3DIZMQCz8pxpHFcURlQpsipHWJa7LzoDEi5ih7JAP
         JyHA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705399089; x=1706003889;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:cc:references
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=pSuM/UmNt07xCDdjZ412hbmgTqRAAFf8vSrsjLDFpCY=;
        b=aPG3XM+tXbBAXfrH9rUQ1G543pIOqrw2I4t77nnqHna34q1D6b+ptxkb6x3HObRbKI
         vSfI4kSxNV4CHKCeafppMQPtZBysgFr7buY54qtO8sa/qMG5X8nhsaggeC25172ivcyg
         a6XESshb62zpvTe2wWMaZcn5wQTeq5ZWNA80jFijq435OQtaFXPIkhF2JdCorNv348r3
         8bwTRVMoH0SK4e8j88KPujwwbYRgCNaMg8+VfcUn/0FkgWMIbwi0AdRnQm5B4sCJBBDf
         pTD+DkCF8WQ9Liz7rQRuZHmIIzTfrAL3ZIs2x9PJYzSUlMZ3CCbkWt/pctTQUmto3HuO
         8sng==
X-Gm-Message-State: AOJu0YyHOS876IgQAatCqXXR8QbVv/SIYaWGb5kC65UtpZhWq2PmFs5q
	YjVgddqIgkNn/t5DE5A4RFVQhdzeg/BXLt60XM3TWoMdmA==
X-Google-Smtp-Source: AGHT+IHsc/nZgzXIlAACB3vdpls/z03r323FuyzphYvy3Rg8VcW/rIHwcmd1vvHEmAUScm89NN362Q==
X-Received: by 2002:a2e:86da:0:b0:2cd:36ff:4d76 with SMTP id n26-20020a2e86da000000b002cd36ff4d76mr3206237ljj.76.1705399089233;
        Tue, 16 Jan 2024 01:58:09 -0800 (PST)
Message-ID: <cafae481-d193-433f-bffb-5e80a9dd7646@suse.com>
Date: Tue, 16 Jan 2024 10:58:05 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: Thunderbolt (and other PCI hotplug) isolation
Content-Language: en-US
To: =?UTF-8?Q?Marek_Marczykowski-G=C3=B3recki?=
 <marmarek@invisiblethingslab.com>
References: <ZaXoCXNhYSnhLyOe@mail-itl>
Cc: xen-devel <xen-devel@lists.xenproject.org>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <ZaXoCXNhYSnhLyOe@mail-itl>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 16.01.2024 03:20, Marek Marczykowski-Górecki wrote:
> Hi,
> 
> A little background:
> In Qubes OS we try to isolate external (especially hot pluggable)
> devices as much as possible. For PCI devices, we do PCI passthrough to
> dedicated domains (sys-net, sys-usb - mostly the latter). The goal is to
> prevent unauthorized device to compromise the whole system, especially
> using DMA (either initiated by a malicious device itself, or by a
> compromised driver). For the discussion here, lets ignore what happens
> before Xen starts.
> 
> The matter becomes much more complicated for hot plugged devices. I did
> some test recently, enabled PCI hoplug in dom0 kernel (we have it
> disabled by default), and this is what I got:
> 1. Hot plugged devices were properly detected, and dom0 told Xen about
> them. In my case, it was two PCI bridges and an NVMe disk.
> 2. New devices were assigned to dom0 automatically.
> 3. New leaf device (the disk) can be assigned to a HVM domU and seems to work.
> 4. The bridges cannot be assigned to a domU.
> 
> Now, there are (at least) two problems with the above:
> i) The second point above: new device automatically gain ability to DMA (at
> least) into dom0 memory. I guess this should be easy-ish solvable for
> leaf devices by assigning them to a quarantine domain by default. There
> is an issue how to decide what devices to handle this way (for example,
> what about external devices present during Xen/dom0 startup already),
> but it feels like a problem solvable with some configuration. And of
> course dom0 will need to be adjusted to not talk to such devices
> automatically (via drivers blacklisting or similar approach). But for
> the bridge devices, it's more complicated, basically the second point
> below.
> 
> ii) The fourth point above: an external PCI device remains in dom0
> (including being able to dom0 into dom0's memory) just because it happen
> to have some specific bits in its config space set. When considering
> malicious device, it doesn't even need to function as a bridge - it's
> just enough to present itself as a bridge, wait for dom0's thunderbolt
> driver to authorize the device so it gets assigned dom0's IOMMU context,
> and boom. On the other hand, a bridge has privileged function by
> design, for example IIUC takes part in discovering devices behind it
> (which then needs to be properly registered in Xen, assigned IOMMU
> context etc).

I may not be following the underlying concept here: If you consider a
device potentially malicious, why would you even connect it to your
system? And if you mean Dom0 to not drive devices, why would you even
build the respective drivers for such a Dom0 kernel?

> iii) Untested, but it feels like there is a lot of room for various race
> conditions in the hot plug handling. For example, device must be
> allowed any DMA only after its IOMMU context is properly configured.

Isn't that the case already? Any attempt to DMA without respective
device / context table entry (AMD / Intel terminology) ought to result
in IOMMU faults.

Jan

> I
> believe thunderbolt technically allows that (plain PCIe hotplug most
> likely not), but my guess is it's not the case currently.
> 
> My question is mostly: what can be done about the "ii" problem above?
> 



From xen-devel-bounces@lists.xenproject.org Tue Jan 16 11:39:05 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 16 Jan 2024 11:39:05 +0000
Received: from list by lists.xenproject.org with outflank-mailman.667709.1039225 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPhmO-0005j1-0b; Tue, 16 Jan 2024 11:38:52 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 667709.1039225; Tue, 16 Jan 2024 11:38:51 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPhmN-0005iu-Tl; Tue, 16 Jan 2024 11:38:51 +0000
Received: by outflank-mailman (input) for mailman id 667709;
 Tue, 16 Jan 2024 11:38:49 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=7at1=I2=invisiblethingslab.com=marmarek@srs-se1.protection.inumbo.net>)
 id 1rPhmL-0005il-Gh
 for xen-devel@lists.xenproject.org; Tue, 16 Jan 2024 11:38:49 +0000
Received: from out4-smtp.messagingengine.com (out4-smtp.messagingengine.com
 [66.111.4.28]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id ced498c6-b463-11ee-98f1-6d05b1d4d9a1;
 Tue, 16 Jan 2024 12:38:47 +0100 (CET)
Received: from compute7.internal (compute7.nyi.internal [10.202.2.48])
 by mailout.nyi.internal (Postfix) with ESMTP id 4C4085C0116;
 Tue, 16 Jan 2024 06:38:45 -0500 (EST)
Received: from mailfrontend2 ([10.202.2.163])
 by compute7.internal (MEProxy); Tue, 16 Jan 2024 06:38:45 -0500
Received: by mail.messagingengine.com (Postfix) with ESMTPA; Tue,
 16 Jan 2024 06:38:44 -0500 (EST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: ced498c6-b463-11ee-98f1-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=
	invisiblethingslab.com; h=cc:cc:content-type:content-type:date
	:date:from:from:in-reply-to:in-reply-to:message-id:mime-version
	:references:reply-to:subject:subject:to:to; s=fm2; t=1705405125;
	 x=1705491525; bh=2yY2Tr8GxZ+QrXBWIju3oEgr92Ynbhk54Bf5jwPCn/E=; b=
	WSH/sEbp/IueFwiWTWP0L4YEPWqHKXpynFsTGvzOuzAJHOBRoKAGo6/Fv8EnNQra
	ygg5IPEK6/b32mV5kGOU+vyjlQfVH6Qmw3hRsff79TrlrFqgdBRWES3015lSxD0q
	TtLvm3Du6GnkAmzpNAkJBGmwoeoIHcJkrCmFgQGWyvnbB1Ed/YvJV8tAaGkgohN4
	CLMxxPthzcgBwWvHaRCY0BIJUF40WWjUBtSLxPAbyBV4BoSzLBk5+FDn7lGSEq6l
	4hwhkUbq4hNzsk2vbLC1pTxyvWINu+dIa4FCeqh4xJOyRhO3y13dkYZWXXINEo1a
	BYHD+S3vrkfxBu8+NB5+xw==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=
	messagingengine.com; h=cc:cc:content-type:content-type:date:date
	:feedback-id:feedback-id:from:from:in-reply-to:in-reply-to
	:message-id:mime-version:references:reply-to:subject:subject:to
	:to:x-me-proxy:x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s=
	fm3; t=1705405125; x=1705491525; bh=2yY2Tr8GxZ+QrXBWIju3oEgr92Yn
	bhk54Bf5jwPCn/E=; b=VVXpNqInFdbDhGoAPUFILNMxzqqYfc173q5Z8reLoc8i
	cQpHx/LF8lqKKeSWVpRyf7oTxquIm7CGab3G7So6ktfV+hyBgtGLAov0ZmgskOXY
	nFPH/GXOYdBr15pmybU1AY4UwKB8xWEXH1Z62KRvwCi2IfbCWFXoxj+20Hz14+A9
	GBTSZ1MFatYkQUNHo2hsDWrrxMbCq5GV5m7dgL0iyRGYWA881jiKRu3iwY5n98bY
	p6kJ6f4jjFw+cKmLO7AnHWQmyege+SjUMNMgbPcNwsjgTCS2dERYdWkLAgtPw1IP
	zRsnDdQ99IJ12p46s146UzWbshJTAXqP77zn4phZSA==
X-ME-Sender: <xms:xWqmZc2kCLCJmAohFDN7jRZPRAQSpqQ4GuR-w97be5mRQtJNozvRow>
    <xme:xWqmZXF1sLLaxbFeVUszSC9ASoBxnW6_8T-CZ8NhCHwwIqrpsMJPczxj1H-k9NCzx
    vd5vurJZOr4Gw>
X-ME-Received: <xmr:xWqmZU7fMdjeGdWzS9h3GXJAC39uw6dyykU78PBco4NeUkRZsn_b8M6lP6PFO3IwyFJxXziGMkEn7MANAEbxOQ8oUSq374eDlQ>
X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvkedrvdejfedgfeduucetufdoteggodetrfdotf
    fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen
    uceurghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmne
    cujfgurhepfffhvfevuffkfhggtggujgesghdtroertddtjeenucfhrhhomhepofgrrhgv
    khcuofgrrhgtiiihkhhofihskhhiqdfikphrvggtkhhiuceomhgrrhhmrghrvghksehinh
    hvihhsihgslhgvthhhihhnghhslhgrsgdrtghomheqnecuggftrfgrthhtvghrnheptdet
    vdfhkedutedvleffgeeutdektefhtefhfffhfeetgefhieegledvtddtkedtnecuvehluh
    hsthgvrhfuihiivgeptdenucfrrghrrghmpehmrghilhhfrhhomhepmhgrrhhmrghrvghk
    sehinhhvihhsihgslhgvthhhihhnghhslhgrsgdrtghomh
X-ME-Proxy: <xmx:xWqmZV2Up6D0HF5yf7d3TKUKb8tBkX-kobeNsFt9Z4KVJtozFW1yqw>
    <xmx:xWqmZfF9pZ5kv3SXo7hRU0Hzy_KHMGbpknJKrLJ82pNkW2phz-oB8A>
    <xmx:xWqmZe_Br9R-gGQBrBkUU6OaRQvOblenBh5YXaH0x_85mHKPyk8m2A>
    <xmx:xWqmZWyFyTk0USPsG1ep0kC2UI_70QM39RuCcZWtKePWk2EEjcj42w>
Feedback-ID: i1568416f:Fastmail
Date: Tue, 16 Jan 2024 12:38:41 +0100
From: Marek =?utf-8?Q?Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
To: Jan Beulich <jbeulich@suse.com>
Cc: xen-devel <xen-devel@lists.xenproject.org>
Subject: Re: Thunderbolt (and other PCI hotplug) isolation
Message-ID: <ZaZqwkAXuKtvzPBM@mail-itl>
References: <ZaXoCXNhYSnhLyOe@mail-itl>
 <cafae481-d193-433f-bffb-5e80a9dd7646@suse.com>
MIME-Version: 1.0
Content-Type: multipart/signed; micalg=pgp-sha256;
	protocol="application/pgp-signature"; boundary="jPC/jKSKfW+dEf8J"
Content-Disposition: inline
In-Reply-To: <cafae481-d193-433f-bffb-5e80a9dd7646@suse.com>


--jPC/jKSKfW+dEf8J
Content-Type: text/plain; protected-headers=v1; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable
Date: Tue, 16 Jan 2024 12:38:41 +0100
From: Marek =?utf-8?Q?Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
To: Jan Beulich <jbeulich@suse.com>
Cc: xen-devel <xen-devel@lists.xenproject.org>
Subject: Re: Thunderbolt (and other PCI hotplug) isolation

On Tue, Jan 16, 2024 at 10:58:05AM +0100, Jan Beulich wrote:
> On 16.01.2024 03:20, Marek Marczykowski-G=C3=B3recki wrote:
> > Hi,
> >=20
> > A little background:
> > In Qubes OS we try to isolate external (especially hot pluggable)
> > devices as much as possible. For PCI devices, we do PCI passthrough to
> > dedicated domains (sys-net, sys-usb - mostly the latter). The goal is to
> > prevent unauthorized device to compromise the whole system, especially
> > using DMA (either initiated by a malicious device itself, or by a
> > compromised driver). For the discussion here, lets ignore what happens
> > before Xen starts.
> >=20
> > The matter becomes much more complicated for hot plugged devices. I did
> > some test recently, enabled PCI hoplug in dom0 kernel (we have it
> > disabled by default), and this is what I got:
> > 1. Hot plugged devices were properly detected, and dom0 told Xen about
> > them. In my case, it was two PCI bridges and an NVMe disk.
> > 2. New devices were assigned to dom0 automatically.
> > 3. New leaf device (the disk) can be assigned to a HVM domU and seems t=
o work.
> > 4. The bridges cannot be assigned to a domU.
> >=20
> > Now, there are (at least) two problems with the above:
> > i) The second point above: new device automatically gain ability to DMA=
 (at
> > least) into dom0 memory. I guess this should be easy-ish solvable for
> > leaf devices by assigning them to a quarantine domain by default. There
> > is an issue how to decide what devices to handle this way (for example,
> > what about external devices present during Xen/dom0 startup already),
> > but it feels like a problem solvable with some configuration. And of
> > course dom0 will need to be adjusted to not talk to such devices
> > automatically (via drivers blacklisting or similar approach). But for
> > the bridge devices, it's more complicated, basically the second point
> > below.
> >=20
> > ii) The fourth point above: an external PCI device remains in dom0
> > (including being able to dom0 into dom0's memory) just because it happen
> > to have some specific bits in its config space set. When considering
> > malicious device, it doesn't even need to function as a bridge - it's
> > just enough to present itself as a bridge, wait for dom0's thunderbolt
> > driver to authorize the device so it gets assigned dom0's IOMMU context,
> > and boom. On the other hand, a bridge has privileged function by
> > design, for example IIUC takes part in discovering devices behind it
> > (which then needs to be properly registered in Xen, assigned IOMMU
> > context etc).
>=20
> I may not be following the underlying concept here: If you consider a
> device potentially malicious, why would you even connect it to your
> system?=20

The thing is I don't know whether I can trust the device or not. It may
be a device I got from somebody, but also it may be a benign but buggy
device that later got its firmware compromised. Take the example of an
external nvme disk - I got some data on it to process, and the data
processing itself can easily be isolated in a separate domU (so, I don't
need to assume too much trust in that data), but also I'd like to not
assume trust in the disk itself.

Besides that, there is also an attack where somebody plugs in a device
without my knowledge (when working in open space, some conference, etc).
I'd like to avoid situation where screenlocker can be very quickly bypassed
with a "screen unlock via DMA" thunderbolt device.

> And if you mean Dom0 to not drive devices, why would you even
> build the respective drivers for such a Dom0 kernel?

I could exclude a lot of drivers indeed, but there are practical issues
with that: for example I do want to use the _internal_ nvme disk in
dom0.

> > iii) Untested, but it feels like there is a lot of room for various race
> > conditions in the hot plug handling. For example, device must be
> > allowed any DMA only after its IOMMU context is properly configured.
>=20
> Isn't that the case already? Any attempt to DMA without respective
> device / context table entry (AMD / Intel terminology) ought to result
> in IOMMU faults.

Ok, so in theory it should be matter of "just" assigning device to
appropriate domain directly, instead of assigning to dom0 first and only
later re-assigning.

> > I
> > believe thunderbolt technically allows that (plain PCIe hotplug most
> > likely not), but my guess is it's not the case currently.
> >=20
> > My question is mostly: what can be done about the "ii" problem above?
> >=20
>=20

--=20
Best Regards,
Marek Marczykowski-G=C3=B3recki
Invisible Things Lab

--jPC/jKSKfW+dEf8J
Content-Type: application/pgp-signature; name="signature.asc"

-----BEGIN PGP SIGNATURE-----

iQEzBAEBCAAdFiEEhrpukzGPukRmQqkK24/THMrX1ywFAmWmasIACgkQ24/THMrX
1yyF9wf/VKiCe7C3BQ7Ys20xDIqVtpmYnjMhO6q88AEuP1/5AuLiWOS/1wiT4R13
qExz13xSnc8VJ7pRLVQMt3psDRzd80i9KsVVRbInu9HM85T3OSCDPcZA8zIoF/41
Bw08b93iXdZMfv2/od472aYAeO5Ruf8yczuP3I7RxHOz3ik05VG1E1qsrQ5sZAkc
o9RRzLEh7FFXvHIBs1NB7itLl0V357QarxNISyA6FAWPJfWsgRcTkeRpn+aqDh1G
howw+cs94yakCyhyt2pUIabBEJWThJaqXt8fVL5E0fRgWc/mEclhyqV14EEy4qgm
04a8jq08h7LkN8V3iYWtJ1gm9rO60Q==
=R1TA
-----END PGP SIGNATURE-----

--jPC/jKSKfW+dEf8J--


From xen-devel-bounces@lists.xenproject.org Tue Jan 16 11:55:21 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 16 Jan 2024 11:55:21 +0000
Received: from list by lists.xenproject.org with outflank-mailman.667715.1039255 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPi2I-0000av-PM; Tue, 16 Jan 2024 11:55:18 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 667715.1039255; Tue, 16 Jan 2024 11:55:18 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPi2I-0000ao-LM; Tue, 16 Jan 2024 11:55:18 +0000
Received: by outflank-mailman (input) for mailman id 667715;
 Tue, 16 Jan 2024 11:55:17 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>) id 1rPi2H-0000PP-LJ
 for xen-devel@lists.xenproject.org; Tue, 16 Jan 2024 11:55:17 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rPi2H-00087a-6t; Tue, 16 Jan 2024 11:55:17 +0000
Received: from 54-240-197-224.amazon.com ([54.240.197.224]
 helo=dev-dsk-jgrall-1b-035652ec.eu-west-1.amazon.com)
 by xenbits.xenproject.org with esmtpsa
 (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rPi2G-0007ED-UI; Tue, 16 Jan 2024 11:55:17 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
	s=20200302mail; h=Content-Transfer-Encoding:MIME-Version:References:
	In-Reply-To:Message-Id:Date:Subject:Cc:To:From;
	bh=QB4GZQCd//Kzo6y8zaEONm7rNVnOunv9HV6HbpL0NS0=; b=42VSouxcLSxioR0z6ZwNN96j40
	CM2a58oaWBHVmF09hokFO9uFmfrcjZc4yqqrZIjb3ua75YOPY36z2pOuNsGtdb94OpXUEspQAq7nh
	PsdsdRJ2td2ZwYkaYcxSLLx/Vc6xOPjzCqkEePQlehs2p6fgjFkOw7tryF0VCxJcpAsw=;
From: Julien Grall <julien@xen.org>
To: xen-devel@lists.xenproject.org
Cc: carlo.nonato@minervasys.tech,
	Julien Grall <jgrall@amazon.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Julien Grall <julien@xen.org>,
	Bertrand Marquis <bertrand.marquis@arm.com>,
	Michal Orzel <michal.orzel@amd.com>,
	Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>
Subject: [PATCH 2/3] xen/arm64: head: Use PRINT_ID() for secondary CPU MMU-off boot code
Date: Tue, 16 Jan 2024 11:55:08 +0000
Message-Id: <20240116115509.77545-3-julien@xen.org>
X-Mailer: git-send-email 2.40.1
In-Reply-To: <20240116115509.77545-1-julien@xen.org>
References: <20240116115509.77545-1-julien@xen.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

From: Julien Grall <jgrall@amazon.com>

With the upcoming work to color Xen, the binary will not be anymore
physically contiguous. This will be a problem during boot as the
assembly code will need to work out where each piece of Xen reside.

An easy way to solve the issue is to have all code/data accessed
by the secondary CPUs while the MMU is off within a single page.

Right now, most of the early printk messages are using PRINT() which
will add the message in .rodata. This is unlikely to be within the
same page as the rest of the idmap.

So replace all the PRINT() that can be reachable by the secondary
CPU with MMU-off with PRINT_ID().

Signed-off-by: Julien Grall <jgrall@amazon.com>
---
 xen/arch/arm/arm64/head.S               | 14 +++++++-------
 xen/arch/arm/arm64/mmu/head.S           |  2 +-
 xen/arch/arm/include/asm/arm64/macros.h |  9 ++++++---
 3 files changed, 14 insertions(+), 11 deletions(-)

diff --git a/xen/arch/arm/arm64/head.S b/xen/arch/arm/arm64/head.S
index cfc04c755400..fa8b00b6f1db 100644
--- a/xen/arch/arm/arm64/head.S
+++ b/xen/arch/arm/arm64/head.S
@@ -289,9 +289,9 @@ GLOBAL(init_secondary)
 
 #ifdef CONFIG_EARLY_PRINTK
         ldr   x23, =CONFIG_EARLY_UART_BASE_ADDRESS /* x23 := UART base address */
-        PRINT("- CPU ")
+        PRINT_ID("- CPU ")
         print_reg x24
-        PRINT(" booting -\r\n")
+        PRINT_ID(" booting -\r\n")
 #endif
         bl    check_cpu_mode
         bl    cpu_init
@@ -314,10 +314,10 @@ ENDPROC(init_secondary)
  * Clobbers x0 - x5
  */
 check_cpu_mode:
-        PRINT("- Current EL ")
+        PRINT_ID("- Current EL ")
         mrs   x5, CurrentEL
         print_reg x5
-        PRINT(" -\r\n")
+        PRINT_ID(" -\r\n")
 
         /* Are we in EL2 */
         cmp   x5, #PSR_MODE_EL2t
@@ -326,8 +326,8 @@ check_cpu_mode:
         ret
 1:
         /* OK, we're boned. */
-        PRINT("- Xen must be entered in NS EL2 mode -\r\n")
-        PRINT("- Please update the bootloader -\r\n")
+        PRINT_ID("- Xen must be entered in NS EL2 mode -\r\n")
+        PRINT_ID("- Please update the bootloader -\r\n")
         b fail
 ENDPROC(check_cpu_mode)
 
@@ -361,7 +361,7 @@ ENDPROC(zero_bss)
  * Clobbers x0 - x3
  */
 cpu_init:
-        PRINT("- Initialize CPU -\r\n")
+        PRINT_ID("- Initialize CPU -\r\n")
 
         /* Set up memory attribute type tables */
         ldr   x0, =MAIRVAL
diff --git a/xen/arch/arm/arm64/mmu/head.S b/xen/arch/arm/arm64/mmu/head.S
index 92b62ae94ce5..fa40b696ddc8 100644
--- a/xen/arch/arm/arm64/mmu/head.S
+++ b/xen/arch/arm/arm64/mmu/head.S
@@ -276,7 +276,7 @@ ENDPROC(create_page_tables)
 enable_mmu:
         mov   x4, x0
         mov   x5, x1
-        PRINT("- Turning on paging -\r\n")
+        PRINT_ID("- Turning on paging -\r\n")
 
         /*
          * The state of the TLBs is unknown before turning on the MMU.
diff --git a/xen/arch/arm/include/asm/arm64/macros.h b/xen/arch/arm/include/asm/arm64/macros.h
index 10e652041f57..6a0108f778a2 100644
--- a/xen/arch/arm/include/asm/arm64/macros.h
+++ b/xen/arch/arm/include/asm/arm64/macros.h
@@ -39,9 +39,12 @@
  * There are multiple flavors:
  *  - PRINT_SECT(section, string): The @string will be located in @section
  *  - PRINT(): The string will be located in .rodata.str.
- *  - PRINT_ID(): When Xen is running on the Identity Mapping, it is
- *    only possible to have a limited amount of Xen. This will create
- *    the string in .rodata.idmap which will always be mapped.
+ *  - PRINT_ID(): This will create the string in .rodata.idmap which
+ *    will always be accessible. This is used when:
+ *      - Xen is running on the identity mapping because not all of Xen is mapped
+ *      - Running with the MMU-off on secondary boots as Xen may not be
+ *        physically contiguous in memory (e.g. in the case of cache
+ *        coloring).
  *
  * Clobbers x0 - x3
  */
-- 
2.40.1



From xen-devel-bounces@lists.xenproject.org Tue Jan 16 11:55:21 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 16 Jan 2024 11:55:21 +0000
Received: from list by lists.xenproject.org with outflank-mailman.667714.1039245 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPi2H-0000ME-Ht; Tue, 16 Jan 2024 11:55:17 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 667714.1039245; Tue, 16 Jan 2024 11:55:17 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPi2H-0000M7-Ee; Tue, 16 Jan 2024 11:55:17 +0000
Received: by outflank-mailman (input) for mailman id 667714;
 Tue, 16 Jan 2024 11:55:16 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>) id 1rPi2G-00009j-Ej
 for xen-devel@lists.xenproject.org; Tue, 16 Jan 2024 11:55:16 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rPi2G-00087M-2C; Tue, 16 Jan 2024 11:55:16 +0000
Received: from 54-240-197-224.amazon.com ([54.240.197.224]
 helo=dev-dsk-jgrall-1b-035652ec.eu-west-1.amazon.com)
 by xenbits.xenproject.org with esmtpsa
 (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rPi2F-0007ED-Oq; Tue, 16 Jan 2024 11:55:15 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
	s=20200302mail; h=Content-Transfer-Encoding:MIME-Version:References:
	In-Reply-To:Message-Id:Date:Subject:Cc:To:From;
	bh=Vg9wt2C8p9IZLdVpC0c8HQykip9na6+1kKIeLfSU34o=; b=t/gab+thHGymI9zQJ2+Z+jkSZU
	cJtDcFNZ1nytiSYeTr7FHIJaAFIMfJWK+BWiMb1+jjHqXyy1X/NV5hW0/FLa9cIdRRoLX72ElZOBT
	ny3nbj7CaPmaWoFegJQIrjikPQ+ESEL7BZR1QobX8FRKmqBFigclpPzf/xeC/3Kg4bTo=;
From: Julien Grall <julien@xen.org>
To: xen-devel@lists.xenproject.org
Cc: carlo.nonato@minervasys.tech,
	Julien Grall <jgrall@amazon.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Julien Grall <julien@xen.org>,
	Bertrand Marquis <bertrand.marquis@arm.com>,
	Michal Orzel <michal.orzel@amd.com>,
	Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>
Subject: [PATCH 1/3] arm/smpboot: Move smp_up_cpu to a new section .data.idmap
Date: Tue, 16 Jan 2024 11:55:07 +0000
Message-Id: <20240116115509.77545-2-julien@xen.org>
X-Mailer: git-send-email 2.40.1
In-Reply-To: <20240116115509.77545-1-julien@xen.org>
References: <20240116115509.77545-1-julien@xen.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

From: Julien Grall <jgrall@amazon.com>

With the upcoming work to color Xen, the binary will not be anymore
physically contiguous. This will be a problem during boot as the
assembly code will need to work out where each piece of Xen reside.

An easy way to solve the issue is to have all code/data accessed
by the secondary CPUs while the MMU is off within a single page.

Right now, smp_up_cpu is used by secondary CPUs to wait there turn for
booting before the MMU is on. Yet it is currently in .data which is
unlikely to be within the same page as the rest of the idmap.

Move smp_up_cpu to the recently create section .data.idmap. The idmap is
currently part of the text section and therefore will be mapped read-onl
executable. This means that we need to temporarily remap
smp_up_cpu in order to update it.

Introduce a new function set_smp_up_cpu() for this purpose so the code
is not duplicated between when opening and closing the gate.

Signed-off-by: Julien Grall <jgrall@amazon.com>
---
 xen/arch/arm/smpboot.c | 36 +++++++++++++++++++++++++++++++-----
 1 file changed, 31 insertions(+), 5 deletions(-)

diff --git a/xen/arch/arm/smpboot.c b/xen/arch/arm/smpboot.c
index 7110bc11fc05..8d508a1bb258 100644
--- a/xen/arch/arm/smpboot.c
+++ b/xen/arch/arm/smpboot.c
@@ -29,6 +29,10 @@
 #include <asm/psci.h>
 #include <asm/acpi.h>
 
+/* Override macros from asm/page.h to make them work with mfn_t */
+#undef virt_to_mfn
+#define virt_to_mfn(va) _mfn(__virt_to_mfn(va))
+
 cpumask_t cpu_online_map;
 cpumask_t cpu_present_map;
 cpumask_t cpu_possible_map;
@@ -56,7 +60,7 @@ struct init_info init_data =
 };
 
 /* Shared state for coordinating CPU bringup */
-unsigned long smp_up_cpu = MPIDR_INVALID;
+unsigned long __section(".data.idmap") smp_up_cpu = MPIDR_INVALID;
 /* Shared state for coordinating CPU teardown */
 static bool cpu_is_dead;
 
@@ -429,6 +433,28 @@ void stop_cpu(void)
         wfi();
 }
 
+static void set_smp_up_cpu(unsigned long mpidr)
+{
+    /*
+     * smp_up_cpu is part of the identity mapping which is read-only. So
+     * We need to re-map the region so it can be updated.
+     */
+    void *ptr = map_domain_page(virt_to_mfn(&smp_up_cpu));
+
+    ptr += PAGE_OFFSET(&smp_up_cpu);
+
+    *(unsigned long *)ptr = mpidr;
+
+    /*
+     * init_ttbr will be accessed with the MMU off, so ensure the update
+     * is visible by cleaning the cache.
+     */
+    clean_dcache(ptr);
+
+    unmap_domain_page(ptr);
+
+}
+
 int __init cpu_up_send_sgi(int cpu)
 {
     /* We don't know the GIC ID of the CPU until it has woken up, so just
@@ -460,8 +486,7 @@ int __cpu_up(unsigned int cpu)
     init_data.cpuid = cpu;
 
     /* Open the gate for this CPU */
-    smp_up_cpu = cpu_logical_map(cpu);
-    clean_dcache(smp_up_cpu);
+    set_smp_up_cpu(cpu_logical_map(cpu));
 
     rc = arch_cpu_up(cpu);
 
@@ -497,8 +522,9 @@ int __cpu_up(unsigned int cpu)
      */
     init_data.stack = NULL;
     init_data.cpuid = ~0;
-    smp_up_cpu = MPIDR_INVALID;
-    clean_dcache(smp_up_cpu);
+
+    set_smp_up_cpu(MPIDR_INVALID);
+
     arch_cpu_up_finish();
 
     if ( !cpu_online(cpu) )
-- 
2.40.1



From xen-devel-bounces@lists.xenproject.org Tue Jan 16 11:55:21 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 16 Jan 2024 11:55:21 +0000
Received: from list by lists.xenproject.org with outflank-mailman.667716.1039265 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPi2K-0000q1-1Y; Tue, 16 Jan 2024 11:55:20 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 667716.1039265; Tue, 16 Jan 2024 11:55:19 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPi2J-0000ps-TA; Tue, 16 Jan 2024 11:55:19 +0000
Received: by outflank-mailman (input) for mailman id 667716;
 Tue, 16 Jan 2024 11:55:18 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>) id 1rPi2I-0000cK-RP
 for xen-devel@lists.xenproject.org; Tue, 16 Jan 2024 11:55:18 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rPi2I-00087o-B7; Tue, 16 Jan 2024 11:55:18 +0000
Received: from 54-240-197-224.amazon.com ([54.240.197.224]
 helo=dev-dsk-jgrall-1b-035652ec.eu-west-1.amazon.com)
 by xenbits.xenproject.org with esmtpsa
 (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rPi2I-0007ED-3X; Tue, 16 Jan 2024 11:55:18 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
	s=20200302mail; h=Content-Transfer-Encoding:MIME-Version:References:
	In-Reply-To:Message-Id:Date:Subject:Cc:To:From;
	bh=nSJb8H4AUwBfcQwQar1U/80V0XEGtzBfpVJPiZPhupE=; b=IMbW36yI0eeJYIVSzC4dbp8DxA
	8udP0YwppNl+SE2F+mTppP10JsR2iHvtvZB/driKQwvS0QwPUleaPFR4Zc4GzK1f7NfIUkpjmpMFr
	zIkdlBu2YJBNCfgoMOW5bgcDywin4m6Ayn5nF+HY21EBYgVUX2wrghQIoReFltwKBJRE=;
From: Julien Grall <julien@xen.org>
To: xen-devel@lists.xenproject.org
Cc: carlo.nonato@minervasys.tech,
	Julien Grall <jgrall@amazon.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Julien Grall <julien@xen.org>,
	Bertrand Marquis <bertrand.marquis@arm.com>,
	Michal Orzel <michal.orzel@amd.com>,
	Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>
Subject: [PATCH 3/3] [DO NOT COMMIT] xen/arm: Create a trampoline for secondary boot CPUs
Date: Tue, 16 Jan 2024 11:55:09 +0000
Message-Id: <20240116115509.77545-4-julien@xen.org>
X-Mailer: git-send-email 2.40.1
In-Reply-To: <20240116115509.77545-1-julien@xen.org>
References: <20240116115509.77545-1-julien@xen.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

From: Julien Grall <jgrall@amazon.com>

In order to confirm the early boot code is self-contained, allocate a
separate trampoline region for secondary to boot from it.

Signed-off-by: Julien Grall <jgrall@amazon.com>
---
 xen/arch/arm/arm64/mmu/mm.c |  7 +++++++
 xen/arch/arm/mmu/smpboot.c  |  4 +++-
 xen/arch/arm/psci.c         |  5 ++++-
 xen/arch/arm/smpboot.c      | 15 ++++++++++++++-
 4 files changed, 28 insertions(+), 3 deletions(-)

diff --git a/xen/arch/arm/arm64/mmu/mm.c b/xen/arch/arm/arm64/mmu/mm.c
index d2651c948698..3c4988dc75d1 100644
--- a/xen/arch/arm/arm64/mmu/mm.c
+++ b/xen/arch/arm/arm64/mmu/mm.c
@@ -110,11 +110,18 @@ void __init arch_setup_page_tables(void)
     prepare_runtime_identity_mapping();
 }
 
+extern mfn_t trampoline_start;
+
 void update_identity_mapping(bool enable)
 {
     paddr_t id_addr = virt_to_maddr(_start);
     int rc;
 
+    if ( !mfn_eq(trampoline_start, INVALID_MFN) )
+    {
+        id_addr = mfn_to_maddr(trampoline_start);
+    }
+
     if ( enable )
         rc = map_pages_to_xen(id_addr, maddr_to_mfn(id_addr), 1,
                               PAGE_HYPERVISOR_RX);
diff --git a/xen/arch/arm/mmu/smpboot.c b/xen/arch/arm/mmu/smpboot.c
index f1cf9252710c..d768dfe065a5 100644
--- a/xen/arch/arm/mmu/smpboot.c
+++ b/xen/arch/arm/mmu/smpboot.c
@@ -72,13 +72,15 @@ static void clear_boot_pagetables(void)
     clear_table(boot_third);
 }
 
+extern mfn_t trampoline_start;
+
 static void set_init_ttbr(lpae_t *root)
 {
     /*
      * init_ttbr is part of the identity mapping which is read-only. So
      * We need to re-map the region so it can be updated
      */
-    void *ptr = map_domain_page(virt_to_mfn(&init_ttbr));
+    void *ptr = map_domain_page(trampoline_start);
 
     ptr += PAGE_OFFSET(&init_ttbr);
 
diff --git a/xen/arch/arm/psci.c b/xen/arch/arm/psci.c
index 695d2fa1f1b5..a00574d559d6 100644
--- a/xen/arch/arm/psci.c
+++ b/xen/arch/arm/psci.c
@@ -36,11 +36,14 @@ static uint32_t psci_cpu_on_nr;
 
 #define PSCI_RET(res)   ((int32_t)(res).a0)
 
+extern mfn_t trampoline_start;
+
 int call_psci_cpu_on(int cpu)
 {
     struct arm_smccc_res res;
 
-    arm_smccc_smc(psci_cpu_on_nr, cpu_logical_map(cpu), __pa(init_secondary),
+    arm_smccc_smc(psci_cpu_on_nr, cpu_logical_map(cpu),
+                  mfn_to_maddr(trampoline_start) + PAGE_OFFSET(init_secondary),
                   &res);
 
     return PSCI_RET(res);
diff --git a/xen/arch/arm/smpboot.c b/xen/arch/arm/smpboot.c
index 8d508a1bb258..ef84b73ebd46 100644
--- a/xen/arch/arm/smpboot.c
+++ b/xen/arch/arm/smpboot.c
@@ -293,10 +293,13 @@ unsigned int __init smp_get_max_cpus(void)
     return cpus;
 }
 
+mfn_t trampoline_start = INVALID_MFN_INITIALIZER;
+
 void __init
 smp_prepare_cpus(void)
 {
     int rc;
+    void *trampoline;
 
     cpumask_copy(&cpu_present_map, &cpu_possible_map);
 
@@ -304,6 +307,16 @@ smp_prepare_cpus(void)
     if ( rc )
         panic("Unable to allocate CPU sibling/core maps\n");
 
+    /* Create a trampoline to confirm early boot code is self-contained */
+    trampoline = alloc_xenheap_page();
+    BUG_ON(!trampoline);
+
+    memcpy(trampoline, _start, PAGE_SIZE);
+    clean_dcache_va_range(trampoline, PAGE_SIZE);
+    invalidate_icache();
+
+    printk("Trampoline 0x%lx\n", virt_to_maddr(trampoline));
+    trampoline_start = virt_to_mfn(trampoline);
 }
 
 /* Boot the current CPU */
@@ -439,7 +452,7 @@ static void set_smp_up_cpu(unsigned long mpidr)
      * smp_up_cpu is part of the identity mapping which is read-only. So
      * We need to re-map the region so it can be updated.
      */
-    void *ptr = map_domain_page(virt_to_mfn(&smp_up_cpu));
+    void *ptr = map_domain_page(trampoline_start);
 
     ptr += PAGE_OFFSET(&smp_up_cpu);
 
-- 
2.40.1



From xen-devel-bounces@lists.xenproject.org Tue Jan 16 11:55:21 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 16 Jan 2024 11:55:21 +0000
Received: from list by lists.xenproject.org with outflank-mailman.667713.1039235 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPi2G-00006z-B6; Tue, 16 Jan 2024 11:55:16 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 667713.1039235; Tue, 16 Jan 2024 11:55:16 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPi2G-00006s-8G; Tue, 16 Jan 2024 11:55:16 +0000
Received: by outflank-mailman (input) for mailman id 667713;
 Tue, 16 Jan 2024 11:55:15 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>) id 1rPi2F-00006m-HX
 for xen-devel@lists.xenproject.org; Tue, 16 Jan 2024 11:55:15 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rPi2E-00087E-SK; Tue, 16 Jan 2024 11:55:14 +0000
Received: from 54-240-197-224.amazon.com ([54.240.197.224]
 helo=dev-dsk-jgrall-1b-035652ec.eu-west-1.amazon.com)
 by xenbits.xenproject.org with esmtpsa
 (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rPi2E-0007ED-JM; Tue, 16 Jan 2024 11:55:14 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
	s=20200302mail; h=Content-Transfer-Encoding:MIME-Version:Message-Id:Date:
	Subject:Cc:To:From; bh=p73jrC1EeWhdd8vtWcCMgORAJTHyLiJcE27T2XJOfQM=; b=pXhvwL
	9v4kocWNnKvzRJvdEqHXS8NW36kzs8vBPJSGmoZ00QrMY9GxhrQ23tBmXc6AQAPtWIkez0vUepOkY
	/vLt753eCWiHXsAhi0h/e4zOJ5EESw4FAtrW1M4n95GqwzQoOGYJifsPYls9tfQ4XQ/cC7UTdtbJN
	lo+l6HGGros=;
From: Julien Grall <julien@xen.org>
To: xen-devel@lists.xenproject.org
Cc: carlo.nonato@minervasys.tech,
	Julien Grall <jgrall@amazon.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Julien Grall <julien@xen.org>,
	Bertrand Marquis <bertrand.marquis@arm.com>,
	Michal Orzel <michal.orzel@amd.com>,
	Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>
Subject: [PATCH 0/3] xen/arm64: Rework the MMU-off code (idmap) so it is self-contained
Date: Tue, 16 Jan 2024 11:55:06 +0000
Message-Id: <20240116115509.77545-1-julien@xen.org>
X-Mailer: git-send-email 2.40.1
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

From: Julien Grall <jgrall@amazon.com>

Hi all,

Right now, the MMU-off code will access may access data that are either
in .rodata or .data. With the enablement of cache coloring, Xen may
not be physcally contiguous anymore when secondary CPUs are brought up.

There are multiple way to solve this problem. The first is to keep
a copy of Xen physically contiguous in memory. The downside is this
means we are using up to 8MB (maximum size of Xen) when only a few
KBs is necessary.

This series is reworking the logic so all the MMU-off code is now
self-contained for secondary boot CPUs on arm64.

On arm32, this is not yet possible because secondary CPUs needs to
rebuild boot page-tables.

Cheers,

Julien Grall (3):
  arm/smpboot: Move smp_up_cpu to a new section .data.idmap
  xen/arm64: head: Use PRINT_ID() for secondary CPU MMU-off boot code
  [DO NOT COMMIT] xen/arm: Create a trampoline for secondary boot CPUs

 xen/arch/arm/arm64/head.S               | 14 +++----
 xen/arch/arm/arm64/mmu/head.S           |  2 +-
 xen/arch/arm/arm64/mmu/mm.c             |  7 ++++
 xen/arch/arm/include/asm/arm64/macros.h |  9 +++--
 xen/arch/arm/mmu/smpboot.c              |  4 +-
 xen/arch/arm/psci.c                     |  5 ++-
 xen/arch/arm/smpboot.c                  | 49 ++++++++++++++++++++++---
 7 files changed, 72 insertions(+), 18 deletions(-)

-- 
2.40.1



From xen-devel-bounces@lists.xenproject.org Tue Jan 16 11:58:56 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 16 Jan 2024 11:58:56 +0000
Received: from list by lists.xenproject.org with outflank-mailman.667731.1039275 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPi5n-00035E-Ko; Tue, 16 Jan 2024 11:58:55 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 667731.1039275; Tue, 16 Jan 2024 11:58:55 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPi5n-000357-Hd; Tue, 16 Jan 2024 11:58:55 +0000
Received: by outflank-mailman (input) for mailman id 667731;
 Tue, 16 Jan 2024 11:58:54 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=vnTh=I2=citrix.com=prvs=738cadf69=Andrew.Cooper3@srs-se1.protection.inumbo.net>)
 id 1rPi5m-000351-TG
 for xen-devel@lists.xenproject.org; Tue, 16 Jan 2024 11:58:54 +0000
Received: from esa5.hc3370-68.iphmx.com (esa5.hc3370-68.iphmx.com
 [216.71.155.168]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 9da19c34-b466-11ee-98f1-6d05b1d4d9a1;
 Tue, 16 Jan 2024 12:58:53 +0100 (CET)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 9da19c34-b466-11ee-98f1-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple;
  d=citrix.com; s=securemail; t=1705406333;
  h=from:to:cc:subject:date:message-id:mime-version:
   content-transfer-encoding;
  bh=CXG++peqcTrVae01hLc9GPCtIYnrgjTYYITPCs1EtSs=;
  b=Vr0ZMt1DfmSCIYGcSPdb17uKBcQMQXedTjuizCB2jEYaNHXy3la8y5Bi
   tSWm79XJ4tVpmTzwo4WtuEfGmlNC4EqpucLwLhq4i97h6lZep/cp8gkLc
   wWf/PmsC9mnaZsmW9lolIUjBy4cc3FCiUm54oaigDe6Dk8Cyu1R58swUk
   w=;
X-CSE-ConnectionGUID: mc5dV3RZRAKJOycBacwj5w==
X-CSE-MsgGUID: kVY3adk5T1uIoB227NOYCg==
Authentication-Results: esa5.hc3370-68.iphmx.com; dkim=none (message not signed) header.i=none
X-SBRS: 4.0
X-MesageID: 128004259
X-Ironport-Server: esa5.hc3370-68.iphmx.com
X-Remote-IP: 162.221.159.70
X-Policy: $RELAYED
X-ThreatScanner-Verdict: Negative
IronPort-Data: A9a23:ZrkRQqwUw516GpYEHJZ6t+emxirEfRIJ4+MujC+fZmUNrF6WrkUCz
 GMfW2mEPKqKMzTyfIh/aom/8B4B6p/cnIdmGQVk+CAxQypGp/SeCIXCJC8cHc8wwu7rFxs7s
 ppEOrEsCOhuExcwcz/0auCJQUFUjPzOHvykTrecZkidfCc8IA85kxVvhuUltYBhhNm9Emult
 Mj75sbSIzdJ4RYtWo4vw/zF8E4HUMja4mtC4gRnPK4T5jcyqlFOZH4hDfDpR5fHatE88t6SH
 47r0Ly/92XFyBYhYvvNfmHTKxBirhb6ZGBiu1IOM0SQqkEqSh8ai87XAME0e0ZP4whlqvgqo
 Dl7WT5cfi9yVkHEsLx1vxC1iEiSN4UekFPMCSDXXcB+UyQq2pYjqhljJBheAGEWxgp4KWRFq
 PAmcwo/VDmgpcWny5iyQfZu29t2eaEHPKtH0p1h5TTQDPJgSpHfWaTao9Rf2V/chOgXQ6yYP
 ZBAL2MyPVKfO3WjOX9OYH46tM6uimPybHtzr1WNqLBsy2PS0BZwwP7mN9+9ltmiHJ8Fxh7E/
 D+Xl4j/KhIkBYeWxTnYziuxp+jlx3mkfqUjP7Lto5aGh3XMnzdOWXX6T2CTsfS/z0KzRd9bA
 0gV4TY167g/8lSxSdvwVAH+p2SL1jY+cddNF+wx6CmW17HZpQ2eAwAsVSVdYdYrsMs3Qz0C1
 VKTmd7tQzt1v9W9Vna15rqS6zSoNkA9L3IGZCICZRsI5Z/kuo5bpizIStFvAauklOrfEDv7w
 y2JhCUmjrBVhskOv42x8ErbmTuqqt7MRxQs+wTMdmu/60VyY4vNT4mp4ljS6bBHNpSUSnGIu
 XRCkM+bhMgUCpuAjjCKBu8EE7eg/f+tOiDTmlNpEN8q8DHF03CucY1K4Tp5YlxkKM8KeDnoS
 EXOthhc4pAVN3yvBYd8ZISqFsA2zK7vPd74WevZaNUIaZ90HDJr5wk3OxTWhTq01hFxwOdgY
 f93bPpAE14fAvlr8mGMdd008p0M1ysUzGjMR83kmkHPPaWlWJKFdVsUGALRNr1itvjU+Vq9z
 jpJCyedJ/xivAzCjsr/q9d7wagidyRTOHwPg5U/mhS/CgRnAno9LPTa3KksfYdo94wMyb+Vp
 S3mChEFmAOv7ZEiFelsQio6AF8Idc8gxU/XwAR2ZQr4s5TdSdbHAFgjm2sfIuB8qb0LIQ9cR
 PgZYcSQasmjuRyekwnxmaLV9dQ4HDzy3FLmAsZQSGRnF3KWb1CTq4CMk8qG3HVmMxdbQuNk8
 uD/iF2AHcNTL+mgZe6PAM+SI5qKlSB1sIpPs4Hge7G/pG2EHFBWFhHM
IronPort-HdrOrdr: A9a23:WiCiFajHjLnokf3iPo6H7Ccz6nBQXtYji2hC6mlwRA09TySZ//
 rBoB19726StN9xYgBFpTnuAsm9qB/nmaKdgrNhWItKPjOW21dARbsKheCJrgEIcxeOkNK1vp
 0AT0ERMrLN5CBB/KTH3DU=
X-Talos-CUID: 9a23:2jBYFGFxDRdAiO+uqmJi/xMYJJsfQEf071X3MkSSAG12SuCKHAo=
X-Talos-MUID: =?us-ascii?q?9a23=3A062s7g++3+oCZXtN57bWUo6Qf8RW0v+nBENQrcw?=
 =?us-ascii?q?bms6ub3YvHRCspzviFw=3D=3D?=
X-IronPort-AV: E=Sophos;i="6.05,199,1701147600"; 
   d="scan'208";a="128004259"
From: Andrew Cooper <andrew.cooper3@citrix.com>
To: Xen-devel <xen-devel@lists.xenproject.org>
CC: Andrew Cooper <andrew.cooper3@citrix.com>, Jan Beulich
	<JBeulich@suse.com>, =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?=
	<roger.pau@citrix.com>, Wei Liu <wl@xen.org>, Stefano Stabellini
	<sstabellini@kernel.org>, Julien Grall <julien@xen.org>, Volodymyr Babchuk
	<Volodymyr_Babchuk@epam.com>, Bertrand Marquis <bertrand.marquis@arm.com>,
	Michal Orzel <michal.orzel@amd.com>, Roberto Bagnara
	<roberto.bagnara@bugseng.com>, Federico Serafini
	<federico.serafini@bugseng.com>, "consulting @ bugseng . com"
	<consulting@bugseng.com>
Subject: [PATCH] x86/cpuid: Change cpuid() from a macro to a static inline
Date: Tue, 16 Jan 2024 11:58:38 +0000
Message-ID: <20240116115838.560473-1-andrew.cooper3@citrix.com>
X-Mailer: git-send-email 2.30.2
MIME-Version: 1.0
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit

Fixes MISRA XXX

No functional change.

Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
---
CC: Jan Beulich <JBeulich@suse.com>
CC: Roger Pau Monné <roger.pau@citrix.com>
CC: Wei Liu <wl@xen.org>
CC: Stefano Stabellini <sstabellini@kernel.org>
CC: Julien Grall <julien@xen.org>
CC: Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>
CC: Bertrand Marquis <bertrand.marquis@arm.com>
CC: Michal Orzel <michal.orzel@amd.com>
CC: Roberto Bagnara <roberto.bagnara@bugseng.com>
CC: Federico Serafini <federico.serafini@bugseng.com>
CC: consulting@bugseng.com <consulting@bugseng.com>

Can someone please remind me which MISRA rule is the one about macros aliasing
identifiers?
---
 xen/arch/x86/include/asm/processor.h | 23 +++++++++++++++--------
 1 file changed, 15 insertions(+), 8 deletions(-)

diff --git a/xen/arch/x86/include/asm/processor.h b/xen/arch/x86/include/asm/processor.h
index ff62b080afbf..b227cdee8ef3 100644
--- a/xen/arch/x86/include/asm/processor.h
+++ b/xen/arch/x86/include/asm/processor.h
@@ -126,14 +126,6 @@ static inline int cpu_nr_siblings(unsigned int cpu)
     return cpu_data[cpu].x86_num_siblings;
 }
 
-/*
- * Generic CPUID function
- * clear %ecx since some cpus (Cyrix MII) do not set or clear %ecx
- * resulting in stale register contents being returned.
- */
-#define cpuid(leaf, eax, ebx, ecx, edx)          \
-        cpuid_count(leaf, 0, eax, ebx, ecx, edx)
-
 /* Some CPUID calls want 'count' to be placed in ecx */
 static inline void cpuid_count(
     unsigned int op,
@@ -148,6 +140,21 @@ static inline void cpuid_count(
           : "0" (op), "c" (count) );
 }
 
+/*
+ * Generic CPUID function
+ * clear %ecx since some cpus (Cyrix MII) do not set or clear %ecx
+ * resulting in stale register contents being returned.
+ */
+static inline void cpuid(
+    unsigned int leaf,
+    unsigned int *eax,
+    unsigned int *ebx,
+    unsigned int *ecx,
+    unsigned int *edx)
+{
+    cpuid_count(leaf, 0, eax, ebx, ecx, edx);
+}
+
 /*
  * CPUID functions returning a single datum
  */

base-commit: f3f6c500e2dbd23af77c207e2cf4b496fffa1b0d
-- 
2.30.2



From xen-devel-bounces@lists.xenproject.org Tue Jan 16 11:59:03 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 16 Jan 2024 11:59:03 +0000
Received: from list by lists.xenproject.org with outflank-mailman.667732.1039285 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPi5v-0003Mc-S9; Tue, 16 Jan 2024 11:59:03 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 667732.1039285; Tue, 16 Jan 2024 11:59:03 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPi5v-0003MV-PM; Tue, 16 Jan 2024 11:59:03 +0000
Received: by outflank-mailman (input) for mailman id 667732;
 Tue, 16 Jan 2024 11:59:02 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>) id 1rPi5u-0003Lr-IK
 for xen-devel@lists.xenproject.org; Tue, 16 Jan 2024 11:59:02 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rPi5u-0008D3-7m; Tue, 16 Jan 2024 11:59:02 +0000
Received: from [15.248.3.92] (helo=[10.24.67.36])
 by xenbits.xenproject.org with esmtpsa
 (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rPi5u-0007hq-2c; Tue, 16 Jan 2024 11:59:02 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
	s=20200302mail; h=Content-Transfer-Encoding:Content-Type:In-Reply-To:
	References:Cc:To:From:Subject:MIME-Version:Date:Message-ID;
	bh=8MTRV7hhckG1lePU33wBTnqgGgMkyM0kS6sgia2ZXCQ=; b=P71/s764q/qdHyJtkURXYZwOF8
	1H88ZKU/3cevxjM79gjT1Xm+1csp+TqvYSfzNQaMzLfrnY8SepyLJGW74lsaEA7XhCiIBWl55avyK
	/wz+huwgLNyiCsyWzP9xY6BFo0RXbctd5hpzMDKC2xbUR8TTlTvH2eR1JFwCrapHcB38=;
Message-ID: <5b017673-3b51-4da2-86dd-ab1a62fbc1be@xen.org>
Date: Tue, 16 Jan 2024 11:58:59 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v5 13/13] xen/arm: add cache coloring support for Xen
Content-Language: en-GB
From: Julien Grall <julien@xen.org>
To: Carlo Nonato <carlo.nonato@minervasys.tech>
Cc: xen-devel@lists.xenproject.org,
 Stefano Stabellini <sstabellini@kernel.org>,
 Bertrand Marquis <bertrand.marquis@arm.com>,
 Michal Orzel <michal.orzel@amd.com>,
 Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
 Marco Solieri <marco.solieri@minervasys.tech>
References: <20240102095138.17933-1-carlo.nonato@minervasys.tech>
 <20240102095138.17933-14-carlo.nonato@minervasys.tech>
 <4553cc26-deb5-42ed-87b9-6cba2a5099eb@xen.org>
 <CAG+AhRXHfGJksqUrPXoHqNze+D654jJV0kVYBZaPLYwccdEz5Q@mail.gmail.com>
 <aa064f8f-d30e-4ac1-9239-daba5a806794@xen.org>
 <CAG+AhRXUPvKGu-y9qbVmhc0_ThCdxFvG=BYwCQMBH=mjo45qHw@mail.gmail.com>
 <985e1a2a-45eb-496c-8043-5f0c3c9f7766@xen.org>
 <CAG+AhRVKbM-n8ieg-CMbRG-4RgUXMSZL=ZER8EAWvGJgpEzUwA@mail.gmail.com>
 <ca2a64f8-ac0d-4b61-8f48-34478371bcbc@xen.org>
In-Reply-To: <ca2a64f8-ac0d-4b61-8f48-34478371bcbc@xen.org>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit

Hi,

On 15/01/2024 16:16, Julien Grall wrote:
> On 15/01/2024 15:43, Carlo Nonato wrote:
>> Hi Julien,
> 
> Hi Carlo,
> 
>> On Mon, Jan 15, 2024 at 12:18 PM Julien Grall <julien@xen.org> wrote:
>>> On 15/01/2024 10:11, Carlo Nonato wrote:
>>>> I understand what you're talking about, and it seems reasonable to 
>>>> get rid of
>>>> xen_colored_temp[] and create_llc_coloring_mappings() since in the 
>>>> end they
>>>> serve the purpose of mapping the physically colored space that is 
>>>> already
>>>> mapped using xen_xenmap[] pagetables.
>>>> What I don't understand is then how to copy/relocate Xen since I 
>>>> don't have a
>>>> destination virtual space anymore to use in relocate_xen().
>>>
>>> You will need to link xen_xenmap[] in boot_second[...] as well. With
>>> that, you will be able to access the new Xen through the temporary area.
>>
>> Wouldn't it result in overwriting the current virtual space mapping?
>> boot_second is the live page table and if I link xen_xenmap[] then
>> XEN_VIRT_START would point to the new colored space which is still 
>> empty at
>> this stage...
> 
> If you link at XEN_VIRT_START then yes. But you could link at 
> BOOT_RELOC_VIRT_START like you already do today.
> 
>>
>>> [...]
>>>
>>>>> Note that this means the init_ttbr cannot be written directly. But you
>>>>> can solve this problem by re-mapping the address.
>>>>
>>>> How to remap a single address?
>>>
>>> You should be able to use map_domain_page() to map the page where
>>> init_ttbr is.
>>>
>>>> And if moving init_ttbr in the identity-mapped area means that it's 
>>>> no longer
>>>> writable, so that I need to remap it, why moving it in that area in 
>>>> the first
>>>> place. Again I think I'm missing something.
>>>
>>> The goal is to have everything used (code, data) before the MMU is
>>> turned on residing in a single page. So secondary CPUs can directly jump
>>> to the colored Xen without any trouble.
>>
>> This is what confuses me. Why having everything on a single page makes
>> secondary cpus able to jump directly to colored Xen? (also see below)
> 
> Because the code running with the MMU off can access easily access 
> everything.
> 
>>
>>>>>>
>>>>>> 3) To access the identity mapping area I would need some accessor 
>>>>>> that takes
>>>>>> an address and returns it + phys_offset, or is there a better way 
>>>>>> to do it?
>>>>>
>>>>> I am not sure I understand what you mean. Can you clarify?
>>>>
>>>> In my idea, I would use the identity mapping to access the "old" 
>>>> variables,
>>>> where "old" means non physically colored. init_ttbr is an example. When
>>>> Xen it's copied on the new physical space, init_ttbr is copied with 
>>>> it and
>>>> if the boot cpu modifies this variable, it's actually touching the 
>>>> colored
>>>> one and not the old one. This means that secondary CPUs that still 
>>>> haven't
>>>> jumped to the new space, won't be able to see the new value and will 
>>>> never
>>>> go online.
>>>> So to access this "old" init_ttbr variable I need it's identity 
>>>> address,
>>>> which is its current virtual address + some physical offset. I was 
>>>> asking
>>>> you if this is the right approach to use the identity mapping.
>>>
>>> Secondary CPUs would directly start on the colored Xen. So they will be
>>> able to access the "new" init_ttbr & co.
>>
>> How can this be true? I mean, in call_psci_cpu_on() I can start those 
>> CPUs in
>> the colored space, but they still use the boot_* pagetables
> 
> Are you looking at the 64-bit or 32-bit code? For 64-bit, staging is not 
> using boot_* pagetable anymore for secondary CPUs. Instead, they 
> directly jump to the runtime page-tables.
> 
>> and there I can't
>> easily link the new colored space, or, at least, I'm not succeding in 
>> doing
>> that. What I tried at the moment is to link xen_xenmap in boot_second 
>> after
>> switch_ttbr because of the problem I described above. But then secondary
>> CPUs never go online...
> 
> It would be helpful if you share some code.
> 
>>
>>> [...]
>>>
>>>>> ... as I wrote ealier your current approach seems to have a flaw. 
>>>>> As you
>>>>> overwrite xen_bootmodule->{start, size}. setup_mm() will end up to add
>>>>> the old Xen region to the boot allocator. This is before any secondary
>>>>> CPUs are booted up.
>>>>>
>>>>> IOW, the allocator may provide some memory from the old Xen and 
>>>>> nothing
>>>>> good will happen from that.
>>>>>
>>>>> The only way to solve it is to add another module. So the memory is
>>>>> skipped by setup_mm(). However see below.
>>>>>
>>>>>>
>>>>>> Yes that should be memory that in the end would not be needed so 
>>>>>> it must
>>>>>> return to the boot-allocator (if that's what you mean). But how to do
>>>>>> that?
>>>>>
>>>>> You can't really discard the old temporary Xen. This may work today
>>>>> because we don't support CPU hotplug or suspend/resume. But there was
>>>>> some series on the ML to enable it and I don't see any reason why
>>>>> someone would not want to use the features with cache coloring.
>>>>>
>>>>> So the old temporary Xen would have to be kept around forever. This is
>>>>> up to 8MB of memory wasted.
>>>>>
>>>>> The right approach is to have the secondary CPU boot code 
>>>>> (including the
>>>>> variables it is using) fitting in the same page (or possibly 
>>>>> multiple so
>>>>> long this is small and physically contiguous). With that it doesn't
>>>>> matter where is the trampoline, it could stay at the old place, but we
>>>>> would only waste a few pages rather than up 8MB as it is today.
>>>>
>>>> So what are you suggesting is to create a new section in the linker 
>>>> script
>>>> for the trampoline code and data,
>>>
>>> We already have a section for that in place (see .idmap.*) which happens
>>> to be at the beginning of Xen. Right now, the section is in text. Which
>>> is why it is read-only executable.
>>>
>>>> then in setup_mm() we would skip this
>>>> memory?
>>>
>>> We should not need this. Secondary boot CPUs should boot direclty on the
>>> colored Xen.
>>>
>>>> Am I following you correctly? Sorry those topics are a little out
>>>> of my preparation as you probably already guessed.
>>>
>>> No worries. I am happy to go in as much details as necessary. I can also
>>> attempt to write a patch if that helps. (unless someone else in the Arm
>>> maintainers want to give a try).
>>
>> Yes this would help. Thanks.
> 
> I will try to have a look this evening. If I can't, it may have to wait 
> a couple of weeks unless someone has time before hand.

Series sent [1]. This is not fully complete for cache coloring. You will 
need to modify the identity functions to take into account that the 
identity map will be different.

You will also want to check the new identity map area is still below 
(see the check in prepare_boot_identity_mapping()).

Cheers,

[1] https://lore.kernel.org/xen-devel/20240116115509.77545-1-julien@xen.org/

-- 
Julien Grall


From xen-devel-bounces@lists.xenproject.org Tue Jan 16 12:15:24 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 16 Jan 2024 12:15:24 +0000
Received: from list by lists.xenproject.org with outflank-mailman.667743.1039297 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPiLc-0007Bu-CF; Tue, 16 Jan 2024 12:15:16 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 667743.1039297; Tue, 16 Jan 2024 12:15:16 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPiLc-0007Bn-9Z; Tue, 16 Jan 2024 12:15:16 +0000
Received: by outflank-mailman (input) for mailman id 667743;
 Tue, 16 Jan 2024 12:15:15 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=gvQ1=I2=gmail.com=oleksii.kurochko@srs-se1.protection.inumbo.net>)
 id 1rPiLb-0007Be-6q
 for xen-devel@lists.xenproject.org; Tue, 16 Jan 2024 12:15:15 +0000
Received: from mail-lf1-x134.google.com (mail-lf1-x134.google.com
 [2a00:1450:4864:20::134])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id e708698e-b468-11ee-98f1-6d05b1d4d9a1;
 Tue, 16 Jan 2024 13:15:14 +0100 (CET)
Received: by mail-lf1-x134.google.com with SMTP id
 2adb3069b0e04-50ec948ad31so9499810e87.2
 for <xen-devel@lists.xenproject.org>; Tue, 16 Jan 2024 04:15:14 -0800 (PST)
Received: from [192.168.206.239] ([94.75.70.14])
 by smtp.gmail.com with ESMTPSA id
 k7-20020ac24f07000000b0050e2167b30bsm1747885lfr.126.2024.01.16.04.15.12
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 16 Jan 2024 04:15:13 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: e708698e-b468-11ee-98f1-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1705407314; x=1706012114; darn=lists.xenproject.org;
        h=mime-version:user-agent:content-transfer-encoding:references
         :in-reply-to:date:cc:to:from:subject:message-id:from:to:cc:subject
         :date:message-id:reply-to;
        bh=VFSZkGrdyEjxd61iF2x+3wNW950ZESzCvEripApZt3M=;
        b=gfoj49rgMcOYykBxoRheHkQ4ssX08xcIA3lovX5Z4agIhAWV2MQ39/1ChB09LduvHz
         dFGXi3brhr1jXMLrh29+Erus7hJ8N4qSdb4imaJ/Dc0DZS9lcnWt6OcBvmRXZBu0iupB
         LK6ozmmVPsHzDWSvqeCKF1r4K7VEgkF2epplDllZ1Ho5xqh9mB5UhnlVO3gmbF7YBQAk
         SPHZjU+jy62uBYO0egVSkJKpQUSwF49RLw/nLOZvRiLl6FBYwXFOIPsbV9XqvK2RQ6M+
         Rr3zck3ED4A3pHpw/Jgo3MaiSzTmO3PyeH4lCdJuNItf1jb1jD0xuNQ0c5m/fSWujma7
         NtzA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705407314; x=1706012114;
        h=mime-version:user-agent:content-transfer-encoding:references
         :in-reply-to:date:cc:to:from:subject:message-id:x-gm-message-state
         :from:to:cc:subject:date:message-id:reply-to;
        bh=VFSZkGrdyEjxd61iF2x+3wNW950ZESzCvEripApZt3M=;
        b=eQ0fTe7Jse/tMPAdLrFVV5MgFCVdpyp3TeSng1Kigr16ae5mfYeFpHN1x3vScD4stF
         oWnwxTPrtE4sC/9Xs/H57Ndj+8tRArq3iv2IIGCJv9gqLbnVvFsK6KzjZZzdPVaOAsoZ
         6sfALSUSMPqR91BRTV9Yj8XXzcJPhetCELIXLrtkz8qfh41/zGENkvluWKaroUsCQKGu
         GHvimvHV52j0+Ag5FUHxfeXJLM1klbUlDHchsv03XwXM6gS71CwE9LXP27vw4XrXHpGA
         CaNmogEaE0Mlcd/PC2XQSiPWChp7kee032oh8vt+XDF0ukdXefP0F+PvQShp0/8ih4zP
         psqg==
X-Gm-Message-State: AOJu0YyZiHSktZb1rd/knGeC+8/fdGHD6Lh6NACmChhG2dknI2UkEZak
	9HJOyzX3W74eDuIuw6gI71A=
X-Google-Smtp-Source: AGHT+IEgRn/EfSS7vH3Hmwb10AiESIz2DiTksYvWvcXUIdrsjQfHu0SxLWg9l1fsMw38gL4Nck/B/Q==
X-Received: by 2002:a19:3852:0:b0:50e:7e1a:6ef4 with SMTP id d18-20020a193852000000b0050e7e1a6ef4mr2602683lfj.102.1705407313365;
        Tue, 16 Jan 2024 04:15:13 -0800 (PST)
Message-ID: <edd226da3423a69447b8083bc0b42f221adc943e.camel@gmail.com>
Subject: Re: [PATCH v5 5/8] RISC-V: annotate entry points with type and size
From: Oleksii <oleksii.kurochko@gmail.com>
To: Jan Beulich <jbeulich@suse.com>, "xen-devel@lists.xenproject.org"
	 <xen-devel@lists.xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, Wei Liu <wl@xen.org>, Julien
 Grall <julien@xen.org>, Stefano Stabellini <sstabellini@kernel.org>, Bobby
 Eshleman <bobbyeshleman@gmail.com>, Alistair Francis
 <alistair.francis@wdc.com>,  Connor Davis <connojdavis@gmail.com>, George
 Dunlap <george.dunlap@citrix.com>
Date: Tue, 16 Jan 2024 14:15:11 +0200
In-Reply-To: <7c57d285-c81d-43d4-93fe-2152ea6ad7f8@suse.com>
References: <e4bf47ca-2ae6-1fd4-56a6-e4e777150b64@suse.com>
	 <7a133ed9-9d13-4e2c-893a-00c083c8a35d@suse.com>
	 <7c57d285-c81d-43d4-93fe-2152ea6ad7f8@suse.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: base64
User-Agent: Evolution 3.50.2 (3.50.2-1.fc39) 
MIME-Version: 1.0

T24gTW9uLCAyMDI0LTAxLTE1IGF0IDE1OjM3ICswMTAwLCBKYW4gQmV1bGljaCB3cm90ZToKPiBV
c2UgdGhlIGdlbmVyaWMgZnJhbWV3b3JrIGluIHhlbi9saW5rYWdlLmguIE5vIGNoYW5nZSBpbiBn
ZW5lcmF0ZWQKPiBjb2RlCj4gZXhjZXB0IG9mIGNvdXJzZSB0aGUgY29udmVydGVkIHN5bWJvbHMg
Y2hhbmdlIHRvIGJlIGhpZGRlbiBvbmVzIGFuZAo+IGdhaW4KPiBhIHZhbGlkIHNpemUuCj4gCj4g
U2lnbmVkLW9mZi1ieTogSmFuIEJldWxpY2ggPGpiZXVsaWNoQHN1c2UuY29tPgo+IC0tLQo+IFBy
b2JhYmx5IGNvdW50X2FyZ3NfZXhwKCkgc2hvdWxkIG1vdmUgdG8gbWFjcm9zLmgsIGJ1dCBJIGZp
cnN0IHdhbnRlZAo+IHRvCj4gc2VlIHdoZXRoZXIgYW55b25lIGNhbiBzdWdnZXN0IGFueSBiZXR0
ZXIgYXBwcm9hY2ggZm9yIGNoZWNraW5nCj4gd2hldGhlcgo+IGEgZGVmaW5lZCBtYWNybyBleHBh
bmRzIHRvIG5vdGhpbmcuCj4gLS0tClRoZSBjdXJyZW50IG9uZSBhcHByb2FjaCBsb29rcyBnb29k
IHRvIG1lLgpSZXZpZXdlZC1ieTogT2xla3NpaSBLdXJvY2hrbyA8b2xla3NpaS5rdXJvY2hrb0Bn
bWFpbC5jb20+Cgp+IE9sZWtzaWkKCj4gdjU6IFJlLWJhc2UuCj4gdjQ6IEFsc28gZHJvcCAjdW5k
ZWYtcyBmcm9tIGxpbmtlciBzY3JpcHQuCj4gdjM6IE5ldy4KPiAKPiAtLS0gYS94ZW4vYXJjaC9y
aXNjdi9lbnRyeS5TCj4gKysrIGIveGVuL2FyY2gvcmlzY3YvZW50cnkuUwo+IEBAIC01LDcgKzUs
NyBAQAo+IMKgI2luY2x1ZGUgPGFzbS90cmFwcy5oPgo+IMKgCj4gwqAvKiBXSVA6IG9ubHkgd29y
a3Mgd2hpbGUgaW50ZXJydXB0aW5nIFhlbiBjb250ZXh0ICovCj4gLUVOVFJZKGhhbmRsZV90cmFw
KQo+ICtGVU5DKGhhbmRsZV90cmFwKQo+IMKgCj4gwqDCoMKgwqAgLyogRXhjZXB0aW9ucyBmcm9t
IHhlbiAqLwo+IMKgc2F2ZV90b19zdGFjazoKPiBAQCAtOTIsMyArOTIsNCBAQCByZXN0b3JlX3Jl
Z2lzdGVyczoKPiDCoMKgwqDCoMKgwqDCoMKgIFJFR19MwqDCoCBzcCwgQ1BVX1VTRVJfUkVHU19T
UChzcCkKPiDCoAo+IMKgwqDCoMKgwqDCoMKgwqAgc3JldAo+ICtFTkQoaGFuZGxlX3RyYXApCj4g
LS0tIGEveGVuL2FyY2gvcmlzY3YvaW5jbHVkZS9hc20vYXNtLmgKPiArKysgYi94ZW4vYXJjaC9y
aXNjdi9pbmNsdWRlL2FzbS9hc20uaAo+IEBAIC03LDYgKzcsNyBAQAo+IMKgI2RlZmluZSBfQVNN
X1JJU0NWX0FTTV9ICj4gwqAKPiDCoCNpZmRlZiBfX0FTU0VNQkxZX18KPiArI2luY2x1ZGUgPHhl
bi9saW5rYWdlLmg+Cj4gwqAjZGVmaW5lIF9fQVNNX1NUUih4KQl4Cj4gwqAjZWxzZQo+IMKgI2Rl
ZmluZSBfX0FTTV9TVFIoeCkJI3gKPiAtLS0gYS94ZW4vYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9j
b25maWcuaAo+ICsrKyBiL3hlbi9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2NvbmZpZy5oCj4gQEAg
LTY5LDEyICs2OSw4IEBACj4gwqAKPiDCoC8qIExpbmthZ2UgZm9yIFJJU0NWICovCj4gwqAjaWZk
ZWYgX19BU1NFTUJMWV9fCj4gLSNkZWZpbmUgQUxJR04gLmFsaWduIDQKPiAtCj4gLSNkZWZpbmUg
RU5UUlkobmFtZSnCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoCBcCj4gLcKgIC5nbG9ibCBuYW1lO8KgwqDCoMKgwqDCoMKgwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBcCj4g
LcKgIEFMSUdOO8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC
oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBcCj4gLcKgIG5hbWU6Cj4gKyNk
ZWZpbmUgQ09ERV9BTElHTiAxNgo+ICsjZGVmaW5lIENPREVfRklMTCAvKiBlbXB0eSAqLwo+IMKg
I2VuZGlmCj4gwqAKPiDCoCNpZmRlZiBDT05GSUdfUklTQ1ZfNjQKPiAtLS0gYS94ZW4vYXJjaC9y
aXNjdi9yaXNjdjY0L2hlYWQuUwo+ICsrKyBiL3hlbi9hcmNoL3Jpc2N2L3Jpc2N2NjQvaGVhZC5T
Cj4gQEAgLTgsNyArOCw3IEBACj4gwqDCoMKgwqDCoMKgwqDCoMKgICrCoMKgIGEwIC0+IGhhcnRf
aWQgKCBib290Y3B1X2lkICkKPiDCoMKgwqDCoMKgwqDCoMKgwqAgKsKgwqAgYTEgLT4gZHRiX2Jh
c2UgCj4gwqDCoMKgwqDCoMKgwqDCoMKgICovCj4gLUVOVFJZKHN0YXJ0KQo+ICtGVU5DKHN0YXJ0
KQo+IMKgwqDCoMKgwqDCoMKgwqAgLyogTWFzayBhbGwgaW50ZXJydXB0cyAqLwo+IMKgwqDCoMKg
wqDCoMKgwqAgY3Nyd8KgwqDCoCBDU1JfU0lFLCB6ZXJvCj4gwqAKPiBAQCAtNjAsMTkgKzYwLDIx
IEBAIEVOVFJZKHN0YXJ0KQo+IMKgwqDCoMKgwqDCoMKgwqAgbXbCoMKgwqDCoMKgIGExLCBzMQo+
IMKgCj4gwqDCoMKgwqDCoMKgwqDCoCB0YWlswqDCoMKgIHN0YXJ0X3hlbgo+ICtFTkQoc3RhcnQp
Cj4gwqAKPiDCoMKgwqDCoMKgwqDCoMKgIC5zZWN0aW9uIC50ZXh0LCAiYXgiLCAlcHJvZ2JpdHMK
PiDCoAo+IC1FTlRSWShyZXNldF9zdGFjaykKPiArRlVOQyhyZXNldF9zdGFjaykKPiDCoMKgwqDC
oMKgwqDCoMKgIGxhwqDCoMKgwqDCoCBzcCwgY3B1MF9ib290X3N0YWNrCj4gwqDCoMKgwqDCoMKg
wqDCoCBsacKgwqDCoMKgwqAgdDAsIFNUQUNLX1NJWkUKPiDCoMKgwqDCoMKgwqDCoMKgIGFkZMKg
wqDCoMKgIHNwLCBzcCwgdDAKPiDCoAo+IMKgwqDCoMKgwqDCoMKgwqAgcmV0Cj4gK0VORChyZXNl
dF9zdGFjaykKPiDCoAo+IMKgwqDCoMKgwqDCoMKgwqAgLnNlY3Rpb24gLnRleHQuaWRlbnQsICJh
eCIsICVwcm9nYml0cwo+IMKgCj4gLUVOVFJZKHR1cm5fb25fbW11KQo+ICtGVU5DKHR1cm5fb25f
bW11KQo+IMKgwqDCoMKgwqDCoMKgwqAgc2ZlbmNlLnZtYQo+IMKgCj4gwqDCoMKgwqDCoMKgwqDC
oCBsacKgwqDCoMKgwqAgdDAsIFJWX1NUQUdFMV9NT0RFCj4gQEAgLTg0LDMgKzg2LDQgQEAgRU5U
UlkodHVybl9vbl9tbXUpCj4gwqDCoMKgwqDCoMKgwqDCoCBjc3J3wqDCoMKgIENTUl9TQVRQLCB0
MQo+IMKgCj4gwqDCoMKgwqDCoMKgwqDCoCBqcsKgwqDCoMKgwqAgYTAKPiArRU5EKHR1cm5fb25f
bW11KQo+IC0tLSBhL3hlbi9hcmNoL3Jpc2N2L3hlbi5sZHMuUwo+ICsrKyBiL3hlbi9hcmNoL3Jp
c2N2L3hlbi5sZHMuUwo+IEBAIC0xLDkgKzEsNiBAQAo+IMKgI2luY2x1ZGUgPHhlbi9saWIuaD4K
PiDCoCNpbmNsdWRlIDx4ZW4veGVuLmxkcy5oPgo+IMKgCj4gLSN1bmRlZiBFTlRSWQo+IC0jdW5k
ZWYgQUxJR04KPiAtCj4gwqBPVVRQVVRfQVJDSChyaXNjdikKPiDCoEVOVFJZKHN0YXJ0KQo+IMKg
Cj4gLS0tIGEveGVuL2luY2x1ZGUveGVuL2xpbmthZ2UuaAo+ICsrKyBiL3hlbi9pbmNsdWRlL3hl
bi9saW5rYWdlLmgKPiBAQCAtMzUsMTcgKzM1LDI4IEBACj4gwqAKPiDCoCNkZWZpbmUgRU5EKG5h
bWUpIC5zaXplIG5hbWUsIC4gLSBuYW1lCj4gwqAKPiArLyoKPiArICogQ09ERV9GSUxMIGluIHBh
cnRpY3VsYXIgbWF5IG5lZWQgdG8gZXhwYW5kIHRvIG5vdGhpbmcgKGUuZy4gZm9yCj4gUklTQy1W
KSwgaW4KPiArICogd2hpY2ggY2FzZSB3ZSBhbHNvIG5lZWQgdG8gZ2V0IHJpZCBvZiB0aGUgY29t
bWEgaW4gdGhlIC5iYWxpZ24KPiBkaXJlY3RpdmUuCj4gKyAqLwo+ICsjZGVmaW5lIGNvdW50X2Fy
Z3NfZXhwKGFyZ3MuLi4pIGNvdW50X2FyZ3MoYXJncykKPiArI2lmIGNvdW50X2FyZ3NfZXhwKENP
REVfRklMTCkKPiArIyBkZWZpbmUgRE9fQ09ERV9BTElHTihhbGlnbi4uLikgTEFTVEFSRyhDT0RF
X0FMSUdOLCAjIyBhbGlnbiksCj4gQ09ERV9GSUxMCj4gKyNlbHNlCj4gKyMgZGVmaW5lIERPX0NP
REVfQUxJR04oYWxpZ24uLi4pIExBU1RBUkcoQ09ERV9BTElHTiwgIyMgYWxpZ24pCj4gKyNlbmRp
Zgo+ICsKPiDCoCNkZWZpbmUgRlVOQyhuYW1lLCBhbGlnbi4uLikgXAo+IC3CoMKgwqDCoMKgwqDC
oCBTWU0obmFtZSwgRlVOQywgR0xPQkFMLCBMQVNUQVJHKENPREVfQUxJR04sICMjIGFsaWduKSwK
PiBDT0RFX0ZJTEwpCj4gK8KgwqDCoMKgwqDCoMKgIFNZTShuYW1lLCBGVU5DLCBHTE9CQUwsIERP
X0NPREVfQUxJR04oYWxpZ24pKQo+IMKgI2RlZmluZSBMQUJFTChuYW1lLCBhbGlnbi4uLikgXAo+
IC3CoMKgwqDCoMKgwqDCoCBTWU0obmFtZSwgTk9ORSwgR0xPQkFMLCBMQVNUQVJHKENPREVfQUxJ
R04sICMjIGFsaWduKSwKPiBDT0RFX0ZJTEwpCj4gK8KgwqDCoMKgwqDCoMKgIFNZTShuYW1lLCBO
T05FLCBHTE9CQUwsIERPX0NPREVfQUxJR04oYWxpZ24pKQo+IMKgI2RlZmluZSBEQVRBKG5hbWUs
IGFsaWduLi4uKSBcCj4gwqDCoMKgwqDCoMKgwqDCoCBTWU0obmFtZSwgREFUQSwgR0xPQkFMLCBM
QVNUQVJHKERBVEFfQUxJR04sICMjIGFsaWduKSwKPiBEQVRBX0ZJTEwpCj4gwqAKPiDCoCNkZWZp
bmUgRlVOQ19MT0NBTChuYW1lLCBhbGlnbi4uLikgXAo+IC3CoMKgwqDCoMKgwqDCoCBTWU0obmFt
ZSwgRlVOQywgTE9DQUwsIExBU1RBUkcoQ09ERV9BTElHTiwgIyMgYWxpZ24pLAo+IENPREVfRklM
TCkKPiArwqDCoMKgwqDCoMKgwqAgU1lNKG5hbWUsIEZVTkMsIExPQ0FMLCBET19DT0RFX0FMSUdO
KGFsaWduKSkKPiDCoCNkZWZpbmUgTEFCRUxfTE9DQUwobmFtZSwgYWxpZ24uLi4pIFwKPiAtwqDC
oMKgwqDCoMKgwqAgU1lNKG5hbWUsIE5PTkUsIExPQ0FMLCBMQVNUQVJHKENPREVfQUxJR04sICMj
IGFsaWduKSwKPiBDT0RFX0ZJTEwpCj4gK8KgwqDCoMKgwqDCoMKgIFNZTShuYW1lLCBOT05FLCBM
T0NBTCwgRE9fQ09ERV9BTElHTihhbGlnbikpCj4gwqAjZGVmaW5lIERBVEFfTE9DQUwobmFtZSwg
YWxpZ24uLi4pIFwKPiDCoMKgwqDCoMKgwqDCoMKgIFNZTShuYW1lLCBEQVRBLCBMT0NBTCwgTEFT
VEFSRyhEQVRBX0FMSUdOLCAjIyBhbGlnbiksCj4gREFUQV9GSUxMKQo+IMKgCj4gCgo=



From xen-devel-bounces@lists.xenproject.org Tue Jan 16 12:16:10 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 16 Jan 2024 12:16:10 +0000
Received: from list by lists.xenproject.org with outflank-mailman.667745.1039307 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPiMU-0007gR-LC; Tue, 16 Jan 2024 12:16:10 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 667745.1039307; Tue, 16 Jan 2024 12:16:10 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPiMU-0007gK-ID; Tue, 16 Jan 2024 12:16:10 +0000
Received: by outflank-mailman (input) for mailman id 667745;
 Tue, 16 Jan 2024 12:16:08 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rPiMS-0007g6-Ty; Tue, 16 Jan 2024 12:16:08 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rPiMS-00004r-Ob; Tue, 16 Jan 2024 12:16:08 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rPiMS-0005xa-E7; Tue, 16 Jan 2024 12:16:08 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rPiMS-0003Jd-Dd; Tue, 16 Jan 2024 12:16:08 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=zey7QD2fUGKYWNF3IJZQur3zNf/EAnjbKfzHEwJ8SD8=; b=VyG96ZI6Uwm467c7dCIMZt7RmA
	6lL1oRwOct4wWd6Z4TS+6Hi8oghp5Pkagsu1C/lqEEHRj1r9sOeG9Pi2X9l0a+0d4wZJDY8NArcLP
	t7+YskmhLCGni9o9PsE/Vdi2YtfmIhKo/E9BynDyC8hiAwawIsfpGFzF/0vYox/7EaMk=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184371-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [ovmf test] 184371: all pass - PUSHED
X-Osstest-Versions-This:
    ovmf=9971b99461e930008e3d35bc0a4a310b6afa57f6
X-Osstest-Versions-That:
    ovmf=a4b8944e27f497b0f4dbfb6aa412decab2874b58
From: osstest service owner <osstest-admin@xenproject.org>
Date: Tue, 16 Jan 2024 12:16:08 +0000

flight 184371 ovmf real [real]
http://logs.test-lab.xenproject.org/osstest/logs/184371/

Perfect :-)
All tests in this flight passed as required
version targeted for testing:
 ovmf                 9971b99461e930008e3d35bc0a4a310b6afa57f6
baseline version:
 ovmf                 a4b8944e27f497b0f4dbfb6aa412decab2874b58

Last test of basis   184369  2024-01-16 07:14:43 Z    0 days
Testing same since   184371  2024-01-16 09:42:46 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Abner Chang <abner.chang@amd.com>
  Doug Flick [MSFT] <doug.edk2@gmail.com>
  Douglas Flick [MSFT] <doug.edk2@gmail.com>

jobs:
 build-amd64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-amd64-amd64-xl-qemuu-ovmf-amd64                         pass    
 test-amd64-i386-xl-qemuu-ovmf-amd64                          pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Pushing revision :

To xenbits.xen.org:/home/xen/git/osstest/ovmf.git
   a4b8944e27..9971b99461  9971b99461e930008e3d35bc0a4a310b6afa57f6 -> xen-tested-master


From xen-devel-bounces@lists.xenproject.org Tue Jan 16 13:02:36 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 16 Jan 2024 13:02:36 +0000
Received: from list by lists.xenproject.org with outflank-mailman.667753.1039317 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPj51-0000qX-2J; Tue, 16 Jan 2024 13:02:11 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 667753.1039317; Tue, 16 Jan 2024 13:02:11 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPj50-0000qQ-W2; Tue, 16 Jan 2024 13:02:10 +0000
Received: by outflank-mailman (input) for mailman id 667753;
 Tue, 16 Jan 2024 13:02:09 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=MjSB=I2=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rPj4z-0000qK-8e
 for xen-devel@lists.xenproject.org; Tue, 16 Jan 2024 13:02:09 +0000
Received: from mail-wr1-x430.google.com (mail-wr1-x430.google.com
 [2a00:1450:4864:20::430])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 72ea973c-b46f-11ee-9b0f-b553b5be7939;
 Tue, 16 Jan 2024 14:02:05 +0100 (CET)
Received: by mail-wr1-x430.google.com with SMTP id
 ffacd0b85a97d-337bcaef29eso353493f8f.0
 for <xen-devel@lists.xenproject.org>; Tue, 16 Jan 2024 05:02:05 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 e16-20020a5d65d0000000b003365951cef9sm14481048wrw.55.2024.01.16.05.02.04
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 16 Jan 2024 05:02:05 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 72ea973c-b46f-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1705410125; x=1706014925; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=BK98qVAnVxAXF21+Q0DPOT+50exbV20IPkjA2QEyWns=;
        b=QSQAEabeyVTfmV7LV6CJPF6PLm/iAa+pZ4CdZkK5TpcVC0cmCuGdZXGGKv05xm1zPj
         1iJ+OizeADrgjRDIx3wKzthUGB4bt++byflrT/c8I6HikncGlJZEIdKZibKK98As0M0C
         QMpLYN6gyFYbgpQavmU2IabHW/odv7VoN1RHrciope4bVw1v5VcvQJC1KKQQaDo41a/R
         ANy8QME76MUUiX1mLhJG7sEGiZptDlh7AwxoM8swG2VNuiLgq4P28BEPwSRaSqqJnVlY
         GIGg4lse17sQunbX1Bhojpm5bARsfgfr9/CdUnI7+COcpzgqBXNLFjCXIWKq5iwmH14G
         FT6A==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705410125; x=1706014925;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=BK98qVAnVxAXF21+Q0DPOT+50exbV20IPkjA2QEyWns=;
        b=r0CZibTzQYW6UrSFqCqLGGU+en71h4FtZ+ELPMO60H/R2h5Q14xHhY0XRrA4F8RzT5
         UHSJoQTHT5wr99ooAbQyp6yqUAVzHBVlTAQqdWpNme9GdT9Re8PI3Ex96KWKQ/Xhcnr+
         iKkWLBfGeG3buOUpAA2AhvSWTnZSdqM4oz79OrYwkfKYVFCVhM0zuJOYOmeJQKiJ1CSb
         Ttn34XxKzY42ktRF4DzHobGYBcBh4Q+BAUUvdkY+hLe1MjMbPvZvaGw9EkCBCdgNPmFK
         bzFInl4t/cGCZFaUsBClbQgYUpS80a0TI932M5UFmfQxYZ19ZiHhsVXsKxQNNHC5m5U8
         o8wQ==
X-Gm-Message-State: AOJu0Yy1Rw9pP6TqK+IiS17T9D0+t0rRslAiX1UYNczFpywHGu+ersao
	eP12CHRmCPYGUh8vLOSAZOhKTqo2njfg
X-Google-Smtp-Source: AGHT+IHYtz6+VxjXSolvJ0IWh+iO/o8wxBTgd3vJ1UX0T1nrA//6hBG4q1vZ+ZMNG5hQJoUjp8a1qQ==
X-Received: by 2002:a05:6000:110a:b0:337:902b:3870 with SMTP id z10-20020a056000110a00b00337902b3870mr3293407wrw.126.1705410125380;
        Tue, 16 Jan 2024 05:02:05 -0800 (PST)
Message-ID: <39debf73-14bf-40a6-8aff-adf086595581@suse.com>
Date: Tue, 16 Jan 2024 14:02:03 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] x86/cpuid: Change cpuid() from a macro to a static inline
Content-Language: en-US
To: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Wei Liu <wl@xen.org>, Stefano Stabellini <sstabellini@kernel.org>,
 Julien Grall <julien@xen.org>, Volodymyr Babchuk
 <Volodymyr_Babchuk@epam.com>, Bertrand Marquis <bertrand.marquis@arm.com>,
 Michal Orzel <michal.orzel@amd.com>,
 Roberto Bagnara <roberto.bagnara@bugseng.com>,
 Federico Serafini <federico.serafini@bugseng.com>,
 "consulting @ bugseng . com" <consulting@bugseng.com>,
 Xen-devel <xen-devel@lists.xenproject.org>
References: <20240116115838.560473-1-andrew.cooper3@citrix.com>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <20240116115838.560473-1-andrew.cooper3@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 16.01.2024 12:58, Andrew Cooper wrote:
> Fixes MISRA XXX

Rule 5.5 if I'm not mistaken; had to look it up for the patch sent
earlier in the day. As to "fixes" - when it's not an actual bug, I had
(successfully) asked the bugseng guys to avoid that term, and instead
use "addresses" or "eliminates a ... violation" or some such.

> No functional change.
> 
> Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>

Reviewed-by: Jan Beulich <jbeulich@suse.com>

Jan


From xen-devel-bounces@lists.xenproject.org Tue Jan 16 13:07:04 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 16 Jan 2024 13:07:04 +0000
Received: from list by lists.xenproject.org with outflank-mailman.667756.1039327 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPj9j-0001Qe-KV; Tue, 16 Jan 2024 13:07:03 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 667756.1039327; Tue, 16 Jan 2024 13:07:03 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPj9j-0001QX-Hu; Tue, 16 Jan 2024 13:07:03 +0000
Received: by outflank-mailman (input) for mailman id 667756;
 Tue, 16 Jan 2024 13:07:01 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=gvQ1=I2=gmail.com=oleksii.kurochko@srs-se1.protection.inumbo.net>)
 id 1rPj9h-0001QR-Ix
 for xen-devel@lists.xenproject.org; Tue, 16 Jan 2024 13:07:01 +0000
Received: from mail-lf1-x12f.google.com (mail-lf1-x12f.google.com
 [2a00:1450:4864:20::12f])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 21b58ee9-b470-11ee-9b0f-b553b5be7939;
 Tue, 16 Jan 2024 14:06:59 +0100 (CET)
Received: by mail-lf1-x12f.google.com with SMTP id
 2adb3069b0e04-50e835800adso10932326e87.0
 for <xen-devel@lists.xenproject.org>; Tue, 16 Jan 2024 05:06:59 -0800 (PST)
Received: from [192.168.206.239] ([94.75.70.14])
 by smtp.gmail.com with ESMTPSA id
 a1-20020a19ca01000000b0050e7e38c9e0sm1785608lfg.62.2024.01.16.05.06.55
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 16 Jan 2024 05:06:57 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 21b58ee9-b470-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1705410418; x=1706015218; darn=lists.xenproject.org;
        h=mime-version:user-agent:content-transfer-encoding:references
         :in-reply-to:date:cc:to:from:subject:message-id:from:to:cc:subject
         :date:message-id:reply-to;
        bh=3hYmjyF6K9EWZ2YodORW05YvWQdogkkc8JZfnWUDGqM=;
        b=lcNGNTD0ZqRo/9k96aYEASxXyYIl99kjHMPD2nZrswaSnHHgW0qAVrZub4aZbXm8GR
         CxRfJ1rKs67PKYiuvK3GM6unqqyUx4JC34+V8YpDhlMhBX2vREefIxJB53nFBArlpVfF
         zzad06YO8yydkK/b6QPvdJotmOfec+21IcacFkmCuMo3Xr6DFPm1Cbpp/d8KIK2Nj5wA
         B1oKNMyCm51tYsvHBvPeMhwDhCljjWw7PetkSRduCGuqmDN57Ywde8A8K00Cy85rly21
         JLZV/g0kzkLx54oLmBCoZ1Sh1xdLvVNa3P8cJy66EzG3nHhG9pSmZUSRLk3OXBqK2slh
         iWlw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705410418; x=1706015218;
        h=mime-version:user-agent:content-transfer-encoding:references
         :in-reply-to:date:cc:to:from:subject:message-id:x-gm-message-state
         :from:to:cc:subject:date:message-id:reply-to;
        bh=3hYmjyF6K9EWZ2YodORW05YvWQdogkkc8JZfnWUDGqM=;
        b=orJMPwo/eRsGK6pI1nPYmfH0n+S2XDgcqDN0pf2/32SlEpOToJaRVgKo8ex0W3/lRW
         K1IOdU5LxftxdBjuy6O+kwvy8Q3ctmJfq8wjeGck3e/oWnHAA3zCBpX5QkOdxASo0dbH
         b62JBB/Pc+BmRsAZSoQrmhJsvxcCjVmUp9istGjIV4YGtZRT+2ZCkqS2ieVn1vs4kFf4
         ZIsKDp+hs4QPQXM71w70RIY/PGcSgJQXueZW5qFqstCMpUAosesw+6I4ke3WEdNESOW2
         82goNI7K3eNRMdNmtr2YyUCWBBl6rc9OPES2xf+1fg1+eDcUzfoPAQJTxLjQjCzpZJ+f
         HWCA==
X-Gm-Message-State: AOJu0YzXZCIy8EpTTP8+Z3LQ0rsMKmq72luSmFd7quHhp4jnpqhBnlt+
	htGK7TW4jDE8cS22IMl3cM8=
X-Google-Smtp-Source: AGHT+IFEQSo8/+xrcumqa5RMCzORj5wyaQVGx90l2ylPCX4eIEkk8JD5wKqYCM5lwInIC3h84rw7Uw==
X-Received: by 2002:a05:6512:b1e:b0:50e:4437:142b with SMTP id w30-20020a0565120b1e00b0050e4437142bmr2714109lfu.38.1705410418262;
        Tue, 16 Jan 2024 05:06:58 -0800 (PST)
Message-ID: <17d9fe474e244a15aa5955e630d553a62b0080fd.camel@gmail.com>
Subject: Re: [PATCH v3 10/34] xen/riscv: introduce bitops.h
From: Oleksii <oleksii.kurochko@gmail.com>
To: Jan Beulich <jbeulich@suse.com>
Cc: Alistair Francis <alistair.francis@wdc.com>, Bob Eshleman
 <bobbyeshleman@gmail.com>, Connor Davis <connojdavis@gmail.com>, Andrew
 Cooper <andrew.cooper3@citrix.com>, George Dunlap
 <george.dunlap@citrix.com>,  Julien Grall <julien@xen.org>, Stefano
 Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>, 
 xen-devel@lists.xenproject.org
Date: Tue, 16 Jan 2024 15:06:55 +0200
In-Reply-To: <23f1212a-66a8-47b0-904b-08b2ab54c72b@suse.com>
References: <cover.1703255175.git.oleksii.kurochko@gmail.com>
	 <841d59c3950970f4937da200cf8f04aa39132e14.1703255175.git.oleksii.kurochko@gmail.com>
	 <23f1212a-66a8-47b0-904b-08b2ab54c72b@suse.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
User-Agent: Evolution 3.50.2 (3.50.2-1.fc39) 
MIME-Version: 1.0

On Mon, 2024-01-15 at 17:44 +0100, Jan Beulich wrote:
> On 22.12.2023 16:12, Oleksii Kurochko wrote:
> > --- /dev/null
> > +++ b/xen/arch/riscv/include/asm/bitops.h
> > @@ -0,0 +1,267 @@
> > +/* SPDX-License-Identifier: GPL-2.0 */
> > +/* Copyright (C) 2012 Regents of the University of California */
> > +
> > +#ifndef _ASM_RISCV_BITOPS_H
> > +#define _ASM_RISCV_BITOPS_H
> > +
> > +#include <asm/system.h>
> > +
> > +#include <asm-generic/bitops/bitops-bits.h>
> > +
> > +/* Based on linux/arch/include/linux/bits.h */
> > +
> > +#define BIT_MASK(nr)=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 (1UL <<=
 ((nr) % BITS_PER_LONG))
> > +#define BIT_WORD(nr)=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 ((nr) /=
 BITS_PER_LONG)
> > +
> > +#define __set_bit(n,p)=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 set_bit(n,p)
> > +#define __clear_bit(n,p)=C2=A0=C2=A0=C2=A0 clear_bit(n,p)
> > +
> > +/* Based on linux/arch/include/asm/bitops.h */
> > +
> > +#if ( BITS_PER_LONG =3D=3D 64 )
> > +#define __AMO(op)=C2=A0=C2=A0 "amo" #op ".d"
> > +#elif ( BITS_PER_LONG =3D=3D 32 )
> > +#define __AMO(op)=C2=A0=C2=A0 "amo" #op ".w"
> > +#else
> > +#error "Unexpected BITS_PER_LONG"
> > +#endif
> > +
> > +#define __test_and_op_bit_ord(op, mod, nr, addr, ord)		\
> > +({								\
> > +=C2=A0=C2=A0=C2=A0 unsigned long __res, __mask;				\
> > +=C2=A0=C2=A0=C2=A0 __mask =3D BIT_MASK(nr);					\
> > +=C2=A0=C2=A0=C2=A0 __asm__ __volatile__ (					\
> > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 __AMO(op) #ord " %0, %2, %1=
"			\
> > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 : "=3Dr" (__res), "+A" (add=
r[BIT_WORD(nr)])	\
> > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 : "r" (mod(__mask))				\
> > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 : "memory");					\
> > +=C2=A0=C2=A0=C2=A0 ((__res & __mask) !=3D 0);				\
> > +})
>=20
> Despite the taking from Linux I think the overall result wants to be
> consistent formatting-wise: You switched to blank indentation (which
> is fine), but you left tabs as padding for the line continuation
> characters.
I think it is because of my IDE. I will be consistent in next patch
version.

Thanks.

>=20
> > +#define __op_bit_ord(op, mod, nr, addr, ord)			\
> > +=C2=A0=C2=A0=C2=A0 __asm__ __volatile__ (					\
> > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 __AMO(op) #ord " zero, %1, =
%0"			\
> > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 : "+A" (addr[BIT_WORD(nr)])=
			\
> > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 : "r" (mod(BIT_MASK(nr)))		=
	\
> > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 : "memory");
> > +
> > +#define __test_and_op_bit(op, mod, nr, addr)=C2=A0			\
>=20
> (At least) here you even use a mix.
>=20
> > +=C2=A0=C2=A0=C2=A0 __test_and_op_bit_ord(op, mod, nr, addr, .aqrl)
> > +#define __op_bit(op, mod, nr, addr)				\
> > +=C2=A0=C2=A0=C2=A0 __op_bit_ord(op, mod, nr, addr, )
> > +
> > +/* Bitmask modifiers */
> > +#define __NOP(x)	(x)
> > +#define __NOT(x)	(~(x))
> > +
> > +/**
> > + * __test_and_set_bit - Set a bit and return its old value
> > + * @nr: Bit to set
> > + * @addr: Address to count from
> > + *
> > + * This operation may be reordered on other architectures than
> > x86.
> > + */
> > +static inline int __test_and_set_bit(int nr, volatile void *p)
> > +{
> > +=C2=A0=C2=A0=C2=A0 volatile uint32_t *addr =3D p;
> > +
> > +=C2=A0=C2=A0=C2=A0 return __test_and_op_bit(or, __NOP, nr, addr);
> > +}
> > +
> > +/**
> > + * __test_and_clear_bit - Clear a bit and return its old value
> > + * @nr: Bit to clear
> > + * @addr: Address to count from
> > + *
> > + * This operation can be reordered on other architectures other
> > than x86.
> > + */
> > +static inline int __test_and_clear_bit(int nr, volatile void *p)
> > +{
> > +=C2=A0=C2=A0=C2=A0 volatile uint32_t *addr =3D p;
> > +
> > +=C2=A0=C2=A0=C2=A0 return __test_and_op_bit(and, __NOT, nr, addr);
> > +}
> > +
> > +/**
> > + * set_bit - Atomically set a bit in memory
> > + * @nr: the bit to set
> > + * @addr: the address to start counting from
> > + *
> > + * Note: there are no guarantees that this function will not be
> > reordered
> > + * on non x86 architectures, so if you are writing portable code,
> > + * make sure not to rely on its reordering guarantees.
> > + *
> > + * Note that @nr may be almost arbitrarily large; this function is
> > not
> > + * restricted to acting on a single-word quantity.
> > + */
> > +static inline void set_bit(int nr, volatile void *p)
> > +{
> > +=C2=A0=C2=A0=C2=A0 volatile uint32_t *addr =3D p;
> > +
> > +=C2=A0=C2=A0=C2=A0 __op_bit(or, __NOP, nr, addr);
> > +}
> > +
> > +/**
> > + * clear_bit - Clears a bit in memory
> > + * @nr: Bit to clear
> > + * @addr: Address to start counting from
> > + *
> > + * Note: there are no guarantees that this function will not be
> > reordered
> > + * on non x86 architectures, so if you are writing portable code,
> > + * make sure not to rely on its reordering guarantees.
> > + */
> > +static inline void clear_bit(int nr, volatile void *p)
> > +{
> > +=C2=A0=C2=A0=C2=A0 volatile uint32_t *addr =3D p;
> > +
> > +=C2=A0=C2=A0=C2=A0 __op_bit(and, __NOT, nr, addr);
> > +}
> > +
> > +#undef __test_and_op_bit
> > +#undef __op_bit
> > +#undef __NOP
> > +#undef __NOT
> > +#undef __AMO
> > +
> > +#define test_and_set_bit=C2=A0=C2=A0 __test_and_set_bit
> > +#define test_and_clear_bit __test_and_clear_bit
>=20
> I realize test-and-change have no present users, despite being made
> available by Arm and x86, but I think they would better be provided
> right away, rather than someone introducing a use then needing to
> fiddle with RISC-V (and apparently also PPC) code.
Sure, it makes sense. I'll add test-and-change too.

>=20
> I'm also puzzled by this aliasing: Aren't there cheaper non-atomic
> insn forms that could be used for the double-underscore-prefixed
> variants?
It will be cheaper, but I assume that this API should be safe in the
case of SMP where different CPUs can access the same variable or
similar cases with simultaneous access to the variable.

>=20
> > +/* Based on linux/include/asm-generic/bitops/find.h */
> > +
> > +#ifndef find_next_bit
>=20
> What is this to guard against?
This was copied from Linux, but in case of Xen it can be dropped.

>=20
> > +/**
> > + * find_next_bit - find the next set bit in a memory region
> > + * @addr: The address to base the search on
> > + * @offset: The bitnumber to start searching at
> > + * @size: The bitmap size in bits
> > + */
> > +extern unsigned long find_next_bit(const unsigned long *addr,
> > unsigned long
> > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 size, unsigned long offset)=
;
> > +#endif
> > +
> > +#ifndef find_next_zero_bit
> > +/**
> > + * find_next_zero_bit - find the next cleared bit in a memory
> > region
> > + * @addr: The address to base the search on
> > + * @offset: The bitnumber to start searching at
> > + * @size: The bitmap size in bits
> > + */
> > +extern unsigned long find_next_zero_bit(const unsigned long *addr,
> > unsigned
> > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 long size, unsigned long of=
fset);
> > +#endif
> > +
> > +/**
> > + * find_first_bit - find the first set bit in a memory region
> > + * @addr: The address to start the search at
> > + * @size: The maximum size to search
> > + *
> > + * Returns the bit number of the first set bit.
> > + */
> > +extern unsigned long find_first_bit(const unsigned long *addr,
> > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 unsigned long size);
> > +
> > +/**
> > + * find_first_zero_bit - find the first cleared bit in a memory
> > region
> > + * @addr: The address to start the search at
> > + * @size: The maximum size to search
> > + *
> > + * Returns the bit number of the first cleared bit.
> > + */
> > +extern unsigned long find_first_zero_bit(const unsigned long
> > *addr,
> > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 unsigned long size);
> > +
> > +/**
> > + * ffs - find first bit in word.
> > + * @word: The word to search
> > + *
> > + * Returns 0 if no bit exists, otherwise returns 1-indexed bit
> > location.
> > + */
> > +static inline unsigned long __ffs(unsigned long word)
> > +{
> > +=C2=A0=C2=A0=C2=A0 int num =3D 0;
>=20
> I understand it's this way in Linux, so there may be reasons to keep
> it
> like that. Generally though we'd prefer unsigned here, and the type
> of
> a variable used for the return value of a function would also better
> be
> in sync with the function's return type (which I don't think needs to
> be "unsigned long" either; "unsigned int" would apparently suffice).
>=20
> > +#if BITS_PER_LONG =3D=3D 64
> > +=C2=A0=C2=A0=C2=A0 if ((word & 0xffffffff) =3D=3D 0) {
> > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 num +=3D 32;
> > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 word >>=3D 32;
> > +=C2=A0=C2=A0=C2=A0 }
>=20
> You're ending up with neither Xen nor Linux style this way. May I
> suggest to settle on either?

Will it fine to rework header from Linux to Xen style? Does it make
sense?
I think this file can be reworked to Xen style as I don't expect that
it will be changed since it will be merged.

>=20
> > +#endif
> > +=C2=A0=C2=A0=C2=A0 if ((word & 0xffff) =3D=3D 0) {
> > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 num +=3D 16;
> > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 word >>=3D 16;
> > +=C2=A0=C2=A0=C2=A0 }
> > +=C2=A0=C2=A0=C2=A0 if ((word & 0xff) =3D=3D 0) {
> > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 num +=3D 8;
> > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 word >>=3D 8;
> > +=C2=A0=C2=A0=C2=A0 }
> > +=C2=A0=C2=A0=C2=A0 if ((word & 0xf) =3D=3D 0) {
> > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 num +=3D 4;
> > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 word >>=3D 4;
> > +=C2=A0=C2=A0=C2=A0 }
> > +=C2=A0=C2=A0=C2=A0 if ((word & 0x3) =3D=3D 0) {
> > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 num +=3D 2;
> > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 word >>=3D 2;
> > +=C2=A0=C2=A0=C2=A0 }
> > +=C2=A0=C2=A0=C2=A0 if ((word & 0x1) =3D=3D 0)
> > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 num +=3D 1;
> > +=C2=A0=C2=A0=C2=A0 return num;
> > +}
> > +
> > +/**
> > + * ffsl - find first bit in long.
> > + * @word: The word to search
> > + *
> > + * Returns 0 if no bit exists, otherwise returns 1-indexed bit
> > location.
> > + */
> > +static inline unsigned int ffsl(unsigned long word)
> > +{
> > +=C2=A0=C2=A0=C2=A0 int num =3D 1;
> > +
> > +=C2=A0=C2=A0=C2=A0 if (!word)
> > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 return 0;
> > +
> > +#if BITS_PER_LONG =3D=3D 64
> > +=C2=A0=C2=A0=C2=A0 if ((word & 0xffffffff) =3D=3D 0) {
> > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 num +=3D 32;
> > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 word >>=3D 32;
> > +=C2=A0=C2=A0=C2=A0 }
> > +#endif
> > +=C2=A0=C2=A0=C2=A0 if ((word & 0xffff) =3D=3D 0) {
> > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 num +=3D 16;
> > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 word >>=3D 16;
> > +=C2=A0=C2=A0=C2=A0 }
> > +=C2=A0=C2=A0=C2=A0 if ((word & 0xff) =3D=3D 0) {
> > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 num +=3D 8;
> > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 word >>=3D 8;
> > +=C2=A0=C2=A0=C2=A0 }
> > +=C2=A0=C2=A0=C2=A0 if ((word & 0xf) =3D=3D 0) {
> > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 num +=3D 4;
> > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 word >>=3D 4;
> > +=C2=A0=C2=A0=C2=A0 }
> > +=C2=A0=C2=A0=C2=A0 if ((word & 0x3) =3D=3D 0) {
> > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 num +=3D 2;
> > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 word >>=3D 2;
> > +=C2=A0=C2=A0=C2=A0 }
> > +=C2=A0=C2=A0=C2=A0 if ((word & 0x1) =3D=3D 0)
> > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 num +=3D 1;
> > +=C2=A0=C2=A0=C2=A0 return num;
> > +}
>=20
> What's RISC-V-specific about the above? IOW why ...
>=20
> > +#include <asm-generic/bitops/fls.h>
> > +#include <asm-generic/bitops/flsl.h>
> > +#include <asm-generic/bitops/ffs.h>
> > +#include <asm-generic/bitops/ffz.h>
>=20
> ... can't those two also come from respective generic headers?
Sure it can. Originally, I don't introduce it as generic headers
because RISC-V is only one who isn using C generic version.

I found that there is already present such generic function in
xen/bitops.h. I think it makes sense to re-use them.

>=20
> > --- /dev/null
> > +++ b/xen/include/asm-generic/bitops/bitops-bits.h
> > @@ -0,0 +1,10 @@
> > +/* SPDX-License-Identifier: GPL-2.0 */
> > +#ifndef _ASM_GENERIC_BITOPS_BITS_H_
> > +#define _ASM_GENERIC_BITOPS_BITS_H_
> > +
> > +#define BITOP_BITS_PER_WORD=C2=A0=C2=A0=C2=A0=C2=A0 32
> > +#define BITOP_MASK(nr)=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0 (1UL << ((nr) %
> > BITOP_BITS_PER_WORD))
>=20
> Why 1UL and not just 1U, when bits per word is 32?
There is no specific reason, should 1U. ( I originally used
BITOPS_BITS_PER_LONG ) and with introduction of asm-generic bitops
decided to follow what other archs provide.

Regarding to the second part of the question, I don't understand it
fully. Considering BITOP_BIT_PER_WORD definition for other archs ( ARM
and PPC ) it is expected that word is 32 bits.

>=20
> > +#define BITOP_WORD(nr)=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0 ((nr) / BITOP_BITS_PER_WORD)
> > +#define BITS_PER_BYTE=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0 8
> > +
> > +#endif /* _ASM_GENERIC_BITOPS_BITS_H_ */
> > \ No newline at end of file
>=20
> Nit: I did comment on such before (and there's at least one more
> further down).
Thanks.
I'll add a newline.

>=20
> > --- /dev/null
> > +++ b/xen/include/asm-generic/bitops/ffs.h
> > @@ -0,0 +1,9 @@
> > +/* SPDX-License-Identifier: GPL-2.0 */
> > +#ifndef _ASM_GENERIC_BITOPS_FFS_H_
> > +#define _ASM_GENERIC_BITOPS_FFS_H_
> > +
> > +#include <xen/macros.h>
> > +
> > +#define ffs(x) ({ unsigned int t_ =3D (x); fls(ISOLATE_LSB(t_)); })
> > +
> > +#endif /* _ASM_GENERIC_BITOPS_FFS_H_ */
> > diff --git a/xen/include/asm-generic/bitops/ffz.h
> > b/xen/include/asm-generic/bitops/ffz.h
> > new file mode 100644
> > index 0000000000..92c35455d5
> > --- /dev/null
> > +++ b/xen/include/asm-generic/bitops/ffz.h
> > @@ -0,0 +1,13 @@
> > +/* SPDX-License-Identifier: GPL-2.0 */
> > +#ifndef _ASM_GENERIC_BITOPS_FFZ_H_
> > +#define _ASM_GENERIC_BITOPS_FFZ_H_
> > +
> > +/*
> > + * ffz - find first zero in word.
> > + * @word: The word to search
> > + *
> > + * Undefined if no zero exists, so code should check against ~0UL
> > first.
> > + */
> > +#define ffz(x)=C2=A0 __ffs(~(x))
>=20
> For a generic header I'd like to see consistency: ffz() may expand to
> ffs(), and __ffz() may expand to __ffs(). A mix like you have it
> above
> wants at least explaining in the description. (I don't understand
> anyway why both ffs() and __ffs() would be needed. We don't have any
> __ffs() on x86 afaics.)
Then it looks to me that ffs() should be used instead.
ffz() was defined with __ffs() because Arm and PPC are defined so.
>=20
> > --- /dev/null
> > +++ b/xen/include/asm-generic/bitops/find-first-bit-set.h
>=20
> This file name, if it really needs to be this long, wants to match
> ...
>=20
> > @@ -0,0 +1,17 @@
> > +/* SPDX-License-Identifier: GPL-2.0 */
> > +#ifndef _ASM_GENERIC_BITOPS_FIND_FIRST_BIT_SET_H_
> > +#define _ASM_GENERIC_BITOPS_FIND_FIRST_BIT_SET_H_
> > +
> > +/**
> > + * find_first_set_bit - find the first set bit in @word
> > + * @word: the word to search
> > + *
> > + * Returns the bit-number of the first set bit (first bit being
> > 0).
> > + * The input must *not* be zero.
> > + */
> > +static inline unsigned int find_first_set_bit(unsigned long word)
>=20
> ... the function implemented herein.
Thanks. I'll update the file name.
>=20
> > --- /dev/null
> > +++ b/xen/include/asm-generic/bitops/fls.h
> > @@ -0,0 +1,18 @@
> > +/* SPDX-License-Identifier: GPL-2.0 */
> > +#ifndef _ASM_GENERIC_BITOPS_FLS_H_
> > +#define _ASM_GENERIC_BITOPS_FLS_H_
> > +
> > +/**
> > + * fls - find last (most-significant) bit set
> > + * @x: the word to search
> > + *
> > + * This is defined the same way as ffs.
> > + * Note fls(0) =3D 0, fls(1) =3D 1, fls(0x80000000) =3D 32.
> > + */
> > +
> > +static inline int fls(unsigned int x)
> > +{
> > +=C2=A0=C2=A0=C2=A0 return generic_fls(x);
> > +}
>=20
> Seing this, why would e.g. ffsl() not use generic_ffsl() then?
>=20
> > --- /dev/null
> > +++ b/xen/include/asm-generic/bitops/hweight.h
> > @@ -0,0 +1,13 @@
> > +/* SPDX-License-Identifier: GPL-2.0 */
> > +#ifndef _ASM_GENERIC_BITOPS_HWEIGHT_H_
> > +#define _ASM_GENERIC_BITOPS_HWEIGHT_H_
> > +
> > +/*
> > + * hweightN - returns the hamming weight of a N-bit word
> > + * @x: the word to weigh
> > + *
> > + * The Hamming Weight of a number is the total number of bits set
> > in it.
> > + */
> > +#define hweight64(x) generic_hweight64(x)
> > +
> > +#endif /* _ASM_GENERIC_BITOPS_HWEIGHT_H_ */
>=20
> Do we really need this? An arch not having suitable insns (RISC-V
> has,
> iirc) can easily have this one #define (or the ip to four ones when
> also covering the other widths) in its asm header.
>=20
> > --- /dev/null
> > +++ b/xen/include/asm-generic/bitops/test-bit.h
> > @@ -0,0 +1,16 @@
> > +/* SPDX-License-Identifier: GPL-2.0 */
> > +#ifndef _ASM_GENERIC_BITOPS_TESTBIT_H_
> > +#define _ASM_GENERIC_BITOPS_TESTBIT_H_
> > +
> > +/**
> > + * test_bit - Determine whether a bit is set
> > + * @nr: bit number to test
> > + * @addr: Address to start counting from
> > + */
> > +static inline int test_bit(int nr, const volatile void *addr)
> > +{
> > +=C2=A0=C2=A0=C2=A0 const volatile unsigned int *p =3D addr;
>=20
> With BITOP_BITS_PER_WORD I think you really mean uint32_t here.
Isn't it the same: 'unsigned int' and 'uint32_t'?

> Also you want to make sure asm-generic/bitops/bitops-bits.h is
> really in use here, or else an arch overriding / not using that
> header may end up screwed.
I am not really understand what do you mean. Could you please explain a
little bit more.

~ Oleksii
>=20
> Jan
>=20
> > +=C2=A0=C2=A0=C2=A0 return 1 & (p[BITOP_WORD(nr)] >> (nr & (BITOP_BITS_=
PER_WORD -
> > 1)));
> > +}
> > +
> > +#endif /* _ASM_GENERIC_BITOPS_TESTBIT_H_ */
> > \ No newline at end of file
>=20



From xen-devel-bounces@lists.xenproject.org Tue Jan 16 13:24:36 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 16 Jan 2024 13:24:36 +0000
Received: from list by lists.xenproject.org with outflank-mailman.667763.1039339 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPjQa-0005cZ-6S; Tue, 16 Jan 2024 13:24:28 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 667763.1039339; Tue, 16 Jan 2024 13:24:28 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPjQa-0005cS-22; Tue, 16 Jan 2024 13:24:28 +0000
Received: by outflank-mailman (input) for mailman id 667763;
 Tue, 16 Jan 2024 13:24:26 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=MjSB=I2=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rPjQY-0005cL-RC
 for xen-devel@lists.xenproject.org; Tue, 16 Jan 2024 13:24:26 +0000
Received: from mail-lj1-x230.google.com (mail-lj1-x230.google.com
 [2a00:1450:4864:20::230])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 90dbbef2-b472-11ee-9b0f-b553b5be7939;
 Tue, 16 Jan 2024 14:24:24 +0100 (CET)
Received: by mail-lj1-x230.google.com with SMTP id
 38308e7fff4ca-2cd1232a2c7so121199841fa.0
 for <xen-devel@lists.xenproject.org>; Tue, 16 Jan 2024 05:24:24 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 ba30-20020a0566383a9e00b0046dda6b83c1sm2906894jab.25.2024.01.16.05.24.21
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 16 Jan 2024 05:24:23 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 90dbbef2-b472-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1705411464; x=1706016264; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=17Yq9y2+qC9IoudMhbozuPkVnchduP15fO4mVknJ9rc=;
        b=IjjJp2ViEKnxf3Kkrd595lRZr+tGhARf34shedHGz2UWnWbRdhx368lbWa73AfBrj4
         RkXV/7gaZDIm6SWSIBVvbhBFs6ML/jpXWrvgXBUSSYag9Jl2zfGaFhJYpe0LHPUP/RPz
         3deJ1DPN0t2XyrSysnm8A9hd+ri1fOyiifF8SwBr5VPqB1m90ZdoewsyMCa3eo+oy29g
         SOXc91Hzq9JqyYROpMAXtNJ7vKz2aM7mw5kaIcFmutRXVhQmeqqZ4uz3C3qP8hoGPlvY
         N86e6XDzu48ORJRZg5e70/TgyMN/Xk1lkSGu4d0yLhL9bbJ/bVLwoUICYtL5jDkxv+kT
         BaxA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705411464; x=1706016264;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=17Yq9y2+qC9IoudMhbozuPkVnchduP15fO4mVknJ9rc=;
        b=NEv5pu8nzYdtCji3ZzsXA6PS3MPVccxfX1+lMA3NbwXmP7EXiVkBjMEsEREX09AHpn
         ptAHUmtc5MIxw+1PXyiMl+Ibgqgr92sQX3AQpMFQv9d2lMRzOLV7iCmX6sDF7Dnp5NKb
         6xF3uRqoNsyjkl90REsUsFw3TRoToW4H0b0m3I+1G/f5UutBQ55WxFZK3Mu2VVIPcdGA
         wtJn89pJ0ovC8f8wmdIcmQjcLMcukDcEqIDQP96/B3N2MOr79fQQd78i46Jrz/AzqvP/
         3ZkAnOR9Od6xP0QPlrWNi2yUcSjtY6iqTXxxK4q3spT+OUWwCFN34w317JvB4aauLu77
         z1rA==
X-Gm-Message-State: AOJu0YwDttlTXCvZ2FlUbFUD0QR4+D01ODOQrl9LZ8X6mLKW5cT5FSB6
	g/z79QzOhIQkXewNEHxj2vfJdLO8aDvF
X-Google-Smtp-Source: AGHT+IGtWnBkWDfKcheW8zADACbDWUbOVdStx79/OoJWvUigqpdiNX+XVT+m5mG7Ip3198xv4TykYA==
X-Received: by 2002:a2e:b604:0:b0:2cd:c1af:4c3e with SMTP id r4-20020a2eb604000000b002cdc1af4c3emr1570046ljn.42.1705411463983;
        Tue, 16 Jan 2024 05:24:23 -0800 (PST)
Message-ID: <88df7ccd-8d14-4b00-900d-04cc87d9f230@suse.com>
Date: Tue, 16 Jan 2024 14:24:20 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 10/34] xen/riscv: introduce bitops.h
Content-Language: en-US
To: Oleksii <oleksii.kurochko@gmail.com>
Cc: Alistair Francis <alistair.francis@wdc.com>,
 Bob Eshleman <bobbyeshleman@gmail.com>, Connor Davis
 <connojdavis@gmail.com>, Andrew Cooper <andrew.cooper3@citrix.com>,
 George Dunlap <george.dunlap@citrix.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>,
 xen-devel@lists.xenproject.org
References: <cover.1703255175.git.oleksii.kurochko@gmail.com>
 <841d59c3950970f4937da200cf8f04aa39132e14.1703255175.git.oleksii.kurochko@gmail.com>
 <23f1212a-66a8-47b0-904b-08b2ab54c72b@suse.com>
 <17d9fe474e244a15aa5955e630d553a62b0080fd.camel@gmail.com>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <17d9fe474e244a15aa5955e630d553a62b0080fd.camel@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 16.01.2024 14:06, Oleksii wrote:
> On Mon, 2024-01-15 at 17:44 +0100, Jan Beulich wrote:
>> On 22.12.2023 16:12, Oleksii Kurochko wrote:
>>> +#define test_and_set_bit   __test_and_set_bit
>>> +#define test_and_clear_bit __test_and_clear_bit
>>
>> I realize test-and-change have no present users, despite being made
>> available by Arm and x86, but I think they would better be provided
>> right away, rather than someone introducing a use then needing to
>> fiddle with RISC-V (and apparently also PPC) code.
> Sure, it makes sense. I'll add test-and-change too.
> 
>> I'm also puzzled by this aliasing: Aren't there cheaper non-atomic
>> insn forms that could be used for the double-underscore-prefixed
>> variants?
> It will be cheaper, but I assume that this API should be safe in the
> case of SMP where different CPUs can access the same variable or
> similar cases with simultaneous access to the variable.

Of course, that's what test_and_...() are for. __test_and_...() are
for cases where there's no concurrency, when hence the cheaper forms
can be used. Thus my asking about the aliasing done above.

>>> +#if BITS_PER_LONG == 64
>>> +    if ((word & 0xffffffff) == 0) {
>>> +        num += 32;
>>> +        word >>= 32;
>>> +    }
>>
>> You're ending up with neither Xen nor Linux style this way. May I
>> suggest to settle on either?
> 
> Will it fine to rework header from Linux to Xen style? Does it make
> sense?
> I think this file can be reworked to Xen style as I don't expect that
> it will be changed since it will be merged.

You may keep Linux style or fully switch to Xen style - which one is
largely up to you. All I'm asking is to avoid introducing further
mixed-style source files.

>>> --- /dev/null
>>> +++ b/xen/include/asm-generic/bitops/bitops-bits.h
>>> @@ -0,0 +1,10 @@
>>> +/* SPDX-License-Identifier: GPL-2.0 */
>>> +#ifndef _ASM_GENERIC_BITOPS_BITS_H_
>>> +#define _ASM_GENERIC_BITOPS_BITS_H_
>>> +
>>> +#define BITOP_BITS_PER_WORD     32
>>> +#define BITOP_MASK(nr)          (1UL << ((nr) %
>>> BITOP_BITS_PER_WORD))
>>
>> Why 1UL and not just 1U, when bits per word is 32?
> There is no specific reason, should 1U. ( I originally used
> BITOPS_BITS_PER_LONG ) and with introduction of asm-generic bitops
> decided to follow what other archs provide.
> 
> Regarding to the second part of the question, I don't understand it
> fully. Considering BITOP_BIT_PER_WORD definition for other archs ( ARM
> and PPC ) it is expected that word is 32 bits.

The 2nd part was explaining why I'm asking. It wasn't another question.

>>> --- /dev/null
>>> +++ b/xen/include/asm-generic/bitops/test-bit.h
>>> @@ -0,0 +1,16 @@
>>> +/* SPDX-License-Identifier: GPL-2.0 */
>>> +#ifndef _ASM_GENERIC_BITOPS_TESTBIT_H_
>>> +#define _ASM_GENERIC_BITOPS_TESTBIT_H_
>>> +
>>> +/**
>>> + * test_bit - Determine whether a bit is set
>>> + * @nr: bit number to test
>>> + * @addr: Address to start counting from
>>> + */
>>> +static inline int test_bit(int nr, const volatile void *addr)
>>> +{
>>> +    const volatile unsigned int *p = addr;
>>
>> With BITOP_BITS_PER_WORD I think you really mean uint32_t here.
> Isn't it the same: 'unsigned int' and 'uint32_t'?

No, or else there wouldn't have been a need to introduce uint<N>_t (and
others) in C99. It just so happens that right now all architectures Xen
can be built for have sizeof(int) == 4 and CHAR_BITS == 8. In an arch-
specific header I would see this as less of an issue, but in a generic
header we'd better avoid encoding wrong assumptions. The one assumption
we generally make is that sizeof(int) >= 4 and CHAR_BITS >= 8 (albeit I
bet really in various places we assume CHAR_BITS == 8).

>> Also you want to make sure asm-generic/bitops/bitops-bits.h is
>> really in use here, or else an arch overriding / not using that
>> header may end up screwed.
> I am not really understand what do you mean. Could you please explain a
> little bit more.

Whichever type you use here, it needs to be in sync with
BITOP_BITS_PER_WORD. Hence you want to include the _local_ bitops-bits.h
here, such that in case of an inconsistent override by an arch the
compiler would complain about the two differring #define-s. (IOW an
arch overriding BITOP_BITS_PER_WORD cannot re-use this header as-is.)

The same may, btw, be true for others of the new headers you add - the
same #include would therefore be needed there as well.

Jan


From xen-devel-bounces@lists.xenproject.org Tue Jan 16 13:27:21 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 16 Jan 2024 13:27:21 +0000
Received: from list by lists.xenproject.org with outflank-mailman.667767.1039348 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPjTM-0006AW-KB; Tue, 16 Jan 2024 13:27:20 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 667767.1039348; Tue, 16 Jan 2024 13:27:20 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPjTM-0006AP-G8; Tue, 16 Jan 2024 13:27:20 +0000
Received: by outflank-mailman (input) for mailman id 667767;
 Tue, 16 Jan 2024 13:27:19 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=WH2v=I2=redhat.com=thuth@srs-se1.protection.inumbo.net>)
 id 1rPjTL-0006AJ-DX
 for xen-devel@lists.xenproject.org; Tue, 16 Jan 2024 13:27:19 +0000
Received: from us-smtp-delivery-124.mimecast.com
 (us-smtp-delivery-124.mimecast.com [170.10.129.124])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id f70b6113-b472-11ee-9b0f-b553b5be7939;
 Tue, 16 Jan 2024 14:27:17 +0100 (CET)
Received: from mail-qt1-f200.google.com (mail-qt1-f200.google.com
 [209.85.160.200]) by relay.mimecast.com with ESMTP with STARTTLS
 (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id
 us-mta-175-dcfYfaZmM36Xcmjcj7gslg-1; Tue, 16 Jan 2024 08:27:14 -0500
Received: by mail-qt1-f200.google.com with SMTP id
 d75a77b69052e-429a1d383c3so105623641cf.1
 for <xen-devel@lists.xenproject.org>; Tue, 16 Jan 2024 05:27:14 -0800 (PST)
Received: from [192.168.0.9] (ip-109-43-179-227.web.vodafone.de.
 [109.43.179.227]) by smtp.gmail.com with ESMTPSA id
 fg25-20020a05622a581900b00429be14d3bbsm4848111qtb.13.2024.01.16.05.27.00
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 16 Jan 2024 05:27:12 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: f70b6113-b472-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
	s=mimecast20190719; t=1705411635;
	h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
	 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references:autocrypt:autocrypt;
	bh=micPVCS03YcsiQYgBq8kGJGsDZ34dwZb843rKaoq/8w=;
	b=VdI/u5CU5t7gMwV6uOCMvq809E+sn/qIH1bLFmCAZ1nPWnOdLpcShcGArHFLOuSVuRJ7Kb
	tOwTs/D4JVaDYyln3gCNh3UG1ShyKPRVa/9BAHYFOMw+lxNtBdtibVY5D0G5UG8yBPdt/C
	2x9wMWvq6Lg9vaLGW6stanGyvrFhcAk=
X-MC-Unique: dcfYfaZmM36Xcmjcj7gslg-1
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705411634; x=1706016434;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=micPVCS03YcsiQYgBq8kGJGsDZ34dwZb843rKaoq/8w=;
        b=SgeBl6HTFlQwTlsDceU1LkvV1beCAp8gGkInZKARZLVotLBF/6WYnxLTrEC4coq4+V
         fLCjhCP3yZaptapUA727ToP/cVE3qbGaJhiPtms9INQn3doXt7HJAMuXKfuc0mxIEepJ
         mvtUy+u9cBj3QvO5022KsS9KZuClWPH+S/EWzsO8puJf1U7P00eWkR9XrEToBYoylHHA
         9K4y47Zs662kf2uGfo33J2QWs2xfup4/01dcn079+MzjGRsBIf7t/oSUu/ykm6471NH/
         T9Uz0dxKhn3YpKZ/W7u/zZtqABdoiquNzmND1oeraRnvua/aV6fMHIlczFYXZ1zNKln5
         A+sQ==
X-Gm-Message-State: AOJu0YxUZAIF9qQfswej/e8DwSa/kpxw3P9P4Lsq1HLGjCKOZrRcz25U
	ShOpGleQAH3qycUoPUW66e0Xsg3CCbxnhCoTwnGrLTER5ynOKPJdAV8O26MZ/FV4NRMm+cij6AU
	ANlOLr5l6J9iAg85L6iFcjgzdLtxtEKSTR9o=
X-Received: by 2002:a05:622a:3cf:b0:429:c715:1b1 with SMTP id k15-20020a05622a03cf00b00429c71501b1mr10244573qtx.111.1705411633671;
        Tue, 16 Jan 2024 05:27:13 -0800 (PST)
X-Google-Smtp-Source: AGHT+IFfOVvI9b5J3pQbLjk/6HTmGtAD6L1/IYtPkUNMmrxkvcLJrPzDAEsx5im3gi3cIE1dHjJZFg==
X-Received: by 2002:a05:622a:3cf:b0:429:c715:1b1 with SMTP id k15-20020a05622a03cf00b00429c71501b1mr10244506qtx.111.1705411633351;
        Tue, 16 Jan 2024 05:27:13 -0800 (PST)
Message-ID: <8d1b083e-1bc7-4ee3-87da-9f1129784b3d@redhat.com>
Date: Tue, 16 Jan 2024 14:26:57 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 40/46] hw/s390x/s390-virtio-ccw: use
 qemu_create_nic_device()
To: David Woodhouse <dwmw2@infradead.org>, qemu-devel@nongnu.org
Cc: Richard Henderson <richard.henderson@linaro.org>,
 Beniamino Galvani <b.galvani@gmail.com>,
 Peter Maydell <peter.maydell@linaro.org>,
 Strahinja Jankovic <strahinja.p.jankovic@gmail.com>,
 Niek Linnenbank <nieklinnenbank@gmail.com>, =?UTF-8?Q?C=C3=A9dric_Le_Goater?=
 <clg@kaod.org>, Andrew Jeffery <andrew@codeconstruct.com.au>,
 Joel Stanley <joel@jms.id.au>, Igor Mitsyanko <i.mitsyanko@gmail.com>,
 Jean-Christophe Dubois <jcd@tribudubois.net>,
 Andrey Smirnov <andrew.smirnov@gmail.com>,
 =?UTF-8?Q?Philippe_Mathieu-Daud=C3=A9?= <philmd@linaro.org>,
 Rob Herring <robh@kernel.org>, Subbaraya Sundeep <sundeep.lkml@gmail.com>,
 Jan Kiszka <jan.kiszka@web.de>, Tyrone Ting <kfting@nuvoton.com>,
 Hao Wu <wuhaotsh@google.com>, Radoslaw Biernacki <rad@semihalf.com>,
 Leif Lindholm <quic_llindhol@quicinc.com>,
 Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org>,
 "Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
 Alistair Francis <alistair@alistair23.me>, Helge Deller <deller@gmx.de>,
 Paolo Bonzini <pbonzini@redhat.com>, Eduardo Habkost <eduardo@habkost.net>,
 "Michael S. Tsirkin" <mst@redhat.com>,
 Marcel Apfelbaum <marcel.apfelbaum@gmail.com>, Song Gao
 <gaosong@loongson.cn>, Thomas Huth <huth@tuxfamily.org>,
 Laurent Vivier <laurent@vivier.eu>, Huacai Chen <chenhuacai@kernel.org>,
 Jiaxun Yang <jiaxun.yang@flygoat.com>,
 =?UTF-8?Q?Herv=C3=A9_Poussineau?= <hpoussin@reactos.org>,
 Aleksandar Rikalo <aleksandar.rikalo@syrmia.com>,
 Aurelien Jarno <aurelien@aurel32.net>, Jason Wang <jasowang@redhat.com>,
 Jia Liu <proljc@gmail.com>, Stafford Horne <shorne@gmail.com>,
 Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>,
 Nicholas Piggin <npiggin@gmail.com>,
 Daniel Henrique Barboza <danielhb413@gmail.com>,
 David Gibson <david@gibson.dropbear.id.au>,
 Harsh Prateek Bora <harshpb@linux.ibm.com>, Bin Meng
 <bin.meng@windriver.com>, Palmer Dabbelt <palmer@dabbelt.com>,
 Weiwei Li <liwei1518@gmail.com>, Liu Zhiwei <zhiwei_liu@linux.alibaba.com>,
 Halil Pasic <pasic@linux.ibm.com>,
 Christian Borntraeger <borntraeger@linux.ibm.com>,
 Eric Farman <farman@linux.ibm.com>, David Hildenbrand <david@redhat.com>,
 Ilya Leoshkevich <iii@linux.ibm.com>,
 Yoshinori Sato <ysato@users.sourceforge.jp>,
 Magnus Damm <magnus.damm@gmail.com>, Artyom Tarasenko <atar4qemu@gmail.com>,
 Stefano Stabellini <sstabellini@kernel.org>,
 Anthony Perard <anthony.perard@citrix.com>, Paul Durrant <paul@xen.org>,
 Max Filippov <jcmvbkbc@gmail.com>, qemu-arm@nongnu.org, qemu-ppc@nongnu.org,
 qemu-riscv@nongnu.org, qemu-s390x@nongnu.org,
 xen-devel@lists.xenproject.org, David Woodhouse <dwmw@amazon.co.uk>
References: <20240108204909.564514-1-dwmw2@infradead.org>
 <20240108204909.564514-41-dwmw2@infradead.org>
From: Thomas Huth <thuth@redhat.com>
Autocrypt: addr=thuth@redhat.com; keydata=
 xsFNBFH7eUwBEACzyOXKU+5Pcs6wNpKzrlJwzRl3VGZt95VCdb+FgoU9g11m7FWcOafrVRwU
 yYkTm9+7zBUc0sW5AuPGR/dp3pSLX/yFWsA/UB4nJsHqgDvDU7BImSeiTrnpMOTXb7Arw2a2
 4CflIyFqjCpfDM4MuTmzTjXq4Uov1giGE9X6viNo1pxyEpd7PanlKNnf4PqEQp06X4IgUacW
 tSGj6Gcns1bCuHV8OPWLkf4hkRnu8hdL6i60Yxz4E6TqlrpxsfYwLXgEeswPHOA6Mn4Cso9O
 0lewVYfFfsmokfAVMKWzOl1Sr0KGI5T9CpmRfAiSHpthhHWnECcJFwl72NTi6kUcUzG4se81
 O6n9d/kTj7pzTmBdfwuOZ0YUSqcqs0W+l1NcASSYZQaDoD3/SLk+nqVeCBB4OnYOGhgmIHNW
 0CwMRO/GK+20alxzk//V9GmIM2ACElbfF8+Uug3pqiHkVnKqM7W9/S1NH2qmxB6zMiJUHlTH
 gnVeZX0dgH27mzstcF786uPcdEqS0KJuxh2kk5IvUSL3Qn3ZgmgdxBMyCPciD/1cb7/Ahazr
 3ThHQXSHXkH/aDXdfLsKVuwDzHLVSkdSnZdt5HHh75/NFHxwaTlydgfHmFFwodK8y/TjyiGZ
 zg2Kje38xnz8zKn9iesFBCcONXS7txENTzX0z80WKBhK+XSFJwARAQABzR5UaG9tYXMgSHV0
 aCA8dGh1dGhAcmVkaGF0LmNvbT7CwXgEEwECACIFAlVgX6oCGwMGCwkIBwMCBhUIAgkKCwQW
 AgMBAh4BAheAAAoJEC7Z13T+cC21EbIP/ii9cvT2HHGbFRl8HqGT6+7Wkb+XLMqJBMAIGiQK
 QIP3xk1HPTsLfVG0ao4hy/oYkGNOP8+ubLnZen6Yq3zAFiMhQ44lvgigDYJo3Ve59gfe99KX
 EbtB+X95ODARkq0McR6OAsPNJ7gpEUzfkQUUJTXRDQXfG/FX303Gvk+YU0spm2tsIKPl6AmV
 1CegDljzjycyfJbk418MQmMu2T82kjrkEofUO2a24ed3VGC0/Uz//XCR2ZTo+vBoBUQl41BD
 eFFtoCSrzo3yPFS+w5fkH9NT8ChdpSlbNS32NhYQhJtr9zjWyFRf0Zk+T/1P7ECn6gTEkp5k
 ofFIA4MFBc/fXbaDRtBmPB0N9pqTFApIUI4vuFPPO0JDrII9dLwZ6lO9EKiwuVlvr1wwzsgq
 zJTPBU3qHaUO4d/8G+gD7AL/6T4zi8Jo/GmjBsnYaTzbm94lf0CjXjsOX3seMhaE6WAZOQQG
 tZHAO1kAPWpaxne+wtgMKthyPLNwelLf+xzGvrIKvLX6QuLoWMnWldu22z2ICVnLQChlR9d6
 WW8QFEpo/FK7omuS8KvvopFcOOdlbFMM8Y/8vBgVMSsK6fsYUhruny/PahprPbYGiNIhKqz7
 UvgyZVl4pBFjTaz/SbimTk210vIlkDyy1WuS8Zsn0htv4+jQPgo9rqFE4mipJjy/iboDzsFN
 BFH7eUwBEAC2nzfUeeI8dv0C4qrfCPze6NkryUflEut9WwHhfXCLjtvCjnoGqFelH/PE9NF4
 4VPSCdvD1SSmFVzu6T9qWdcwMSaC+e7G/z0/AhBfqTeosAF5XvKQlAb9ZPkdDr7YN0a1XDfa
 +NgA+JZB4ROyBZFFAwNHT+HCnyzy0v9Sh3BgJJwfpXHH2l3LfncvV8rgFv0bvdr70U+On2XH
 5bApOyW1WpIG5KPJlDdzcQTyptOJ1dnEHfwnABEfzI3dNf63rlxsGouX/NFRRRNqkdClQR3K
 gCwciaXfZ7ir7fF0u1N2UuLsWA8Ei1JrNypk+MRxhbvdQC4tyZCZ8mVDk+QOK6pyK2f4rMf/
 WmqxNTtAVmNuZIwnJdjRMMSs4W4w6N/bRvpqtykSqx7VXcgqtv6eqoDZrNuhGbekQA0sAnCJ
 VPArerAZGArm63o39me/bRUQeQVSxEBmg66yshF9HkcUPGVeC4B0TPwz+HFcVhheo6hoJjLq
 knFOPLRj+0h+ZL+D0GenyqD3CyuyeTT5dGcNU9qT74bdSr20k/CklvI7S9yoQje8BeQAHtdV
 cvO8XCLrpGuw9SgOS7OP5oI26a0548M4KldAY+kqX6XVphEw3/6U1KTf7WxW5zYLTtadjISB
 X9xsRWSU+Yqs3C7oN5TIPSoj9tXMoxZkCIHWvnqGwZ7JhwARAQABwsFfBBgBAgAJBQJR+3lM
 AhsMAAoJEC7Z13T+cC21hPAQAIsBL9MdGpdEpvXs9CYrBkd6tS9mbaSWj6XBDfA1AEdQkBOn
 ZH1Qt7HJesk+qNSnLv6+jP4VwqK5AFMrKJ6IjE7jqgzGxtcZnvSjeDGPF1h2CKZQPpTw890k
 fy18AvgFHkVk2Oylyexw3aOBsXg6ukN44vIFqPoc+YSU0+0QIdYJp/XFsgWxnFIMYwDpxSHS
 5fdDxUjsk3UBHZx+IhFjs2siVZi5wnHIqM7eK9abr2cK2weInTBwXwqVWjsXZ4tq5+jQrwDK
 cvxIcwXdUTLGxc4/Z/VRH1PZSvfQxdxMGmNTGaXVNfdFZjm4fz0mz+OUi6AHC4CZpwnsliGV
 ODqwX8Y1zic9viSTbKS01ZNp175POyWViUk9qisPZB7ypfSIVSEULrL347qY/hm9ahhqmn17
 Ng255syASv3ehvX7iwWDfzXbA0/TVaqwa1YIkec+/8miicV0zMP9siRcYQkyTqSzaTFBBmqD
 oiT+z+/E59qj/EKfyce3sbC9XLjXv3mHMrq1tKX4G7IJGnS989E/fg6crv6NHae9Ckm7+lSs
 IQu4bBP2GxiRQ+NV3iV/KU3ebMRzqIC//DCOxzQNFNJAKldPe/bKZMCxEqtVoRkuJtNdp/5a
 yXFZ6TfE1hGKrDBYAm4vrnZ4CXFSBDllL59cFFOJCkn4Xboj/aVxxJxF30bn
In-Reply-To: <20240108204909.564514-41-dwmw2@infradead.org>
X-Mimecast-Spam-Score: 0
X-Mimecast-Originator: redhat.com
Content-Language: en-US
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

On 08/01/2024 21.27, David Woodhouse wrote:
> From: David Woodhouse <dwmw@amazon.co.uk>
> 
> Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
> ---
>   hw/s390x/s390-virtio-ccw.c | 11 ++---------
>   1 file changed, 2 insertions(+), 9 deletions(-)
> 
> diff --git a/hw/s390x/s390-virtio-ccw.c b/hw/s390x/s390-virtio-ccw.c
> index 1169e20b94..202c378131 100644
> --- a/hw/s390x/s390-virtio-ccw.c
> +++ b/hw/s390x/s390-virtio-ccw.c
> @@ -221,16 +221,9 @@ static void s390_init_ipl_dev(const char *kernel_filename,
>   
>   static void s390_create_virtio_net(BusState *bus, const char *name)
>   {
> -    int i;
> -
> -    for (i = 0; i < nb_nics; i++) {
> -        NICInfo *nd = &nd_table[i];
> -        DeviceState *dev;
> -
> -        qemu_check_nic_model(nd, "virtio");
> +    DeviceState *dev;
>   
> -        dev = qdev_new(name);
> -        qdev_set_nic_properties(dev, nd);
> +    while ((dev = qemu_create_nic_device(name, true, "virtio"))) {
>           qdev_realize_and_unref(dev, bus, &error_fatal);
>       }
>   }

Acked-by: Thomas Huth <thuth@redhat.com>



From xen-devel-bounces@lists.xenproject.org Tue Jan 16 13:33:07 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 16 Jan 2024 13:33:07 +0000
Received: from list by lists.xenproject.org with outflank-mailman.667770.1039357 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPjYs-0008UH-6I; Tue, 16 Jan 2024 13:33:02 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 667770.1039357; Tue, 16 Jan 2024 13:33:02 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPjYs-0008UA-3X; Tue, 16 Jan 2024 13:33:02 +0000
Received: by outflank-mailman (input) for mailman id 667770;
 Tue, 16 Jan 2024 13:33:01 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=FuRj=I2=kaod.org=clg@ozlabs.org>)
 id 1rPjYr-0008U4-8x
 for xen-devel@lists.xenproject.org; Tue, 16 Jan 2024 13:33:01 +0000
Received: from gandalf.ozlabs.org (gandalf.ozlabs.org [150.107.74.76])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id c2009aa5-b473-11ee-98f1-6d05b1d4d9a1;
 Tue, 16 Jan 2024 14:32:58 +0100 (CET)
Received: from gandalf.ozlabs.org (gandalf.ozlabs.org [150.107.74.76])
 by gandalf.ozlabs.org (Postfix) with ESMTP id 4TDqh606Szz4xMC;
 Wed, 17 Jan 2024 00:32:54 +1100 (AEDT)
Received: from authenticated.ozlabs.org (localhost [127.0.0.1])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
 (No client certificate requested)
 by mail.ozlabs.org (Postfix) with ESMTPSA id 4TDqgg0ccfz4x3G;
 Wed, 17 Jan 2024 00:32:30 +1100 (AEDT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: c2009aa5-b473-11ee-98f1-6d05b1d4d9a1
Message-ID: <60730ed3-9225-4b78-a44e-99b8016a2f08@kaod.org>
Date: Tue, 16 Jan 2024 14:32:23 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 22/46] hw/arm/aspeed: use qemu_configure_nic_device()
Content-Language: en-US
To: David Woodhouse <dwmw2@infradead.org>, qemu-devel@nongnu.org
Cc: Richard Henderson <richard.henderson@linaro.org>,
 Beniamino Galvani <b.galvani@gmail.com>,
 Peter Maydell <peter.maydell@linaro.org>,
 Strahinja Jankovic <strahinja.p.jankovic@gmail.com>,
 Niek Linnenbank <nieklinnenbank@gmail.com>,
 Andrew Jeffery <andrew@codeconstruct.com.au>, Joel Stanley <joel@jms.id.au>,
 Igor Mitsyanko <i.mitsyanko@gmail.com>,
 Jean-Christophe Dubois <jcd@tribudubois.net>,
 Andrey Smirnov <andrew.smirnov@gmail.com>,
 =?UTF-8?Q?Philippe_Mathieu-Daud=C3=A9?= <philmd@linaro.org>,
 Rob Herring <robh@kernel.org>, Subbaraya Sundeep <sundeep.lkml@gmail.com>,
 Jan Kiszka <jan.kiszka@web.de>, Tyrone Ting <kfting@nuvoton.com>,
 Hao Wu <wuhaotsh@google.com>, Radoslaw Biernacki <rad@semihalf.com>,
 Leif Lindholm <quic_llindhol@quicinc.com>,
 Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org>,
 "Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
 Alistair Francis <alistair@alistair23.me>, Helge Deller <deller@gmx.de>,
 Paolo Bonzini <pbonzini@redhat.com>, Eduardo Habkost <eduardo@habkost.net>,
 "Michael S. Tsirkin" <mst@redhat.com>,
 Marcel Apfelbaum <marcel.apfelbaum@gmail.com>, Song Gao
 <gaosong@loongson.cn>, Thomas Huth <huth@tuxfamily.org>,
 Laurent Vivier <laurent@vivier.eu>, Huacai Chen <chenhuacai@kernel.org>,
 Jiaxun Yang <jiaxun.yang@flygoat.com>,
 =?UTF-8?Q?Herv=C3=A9_Poussineau?= <hpoussin@reactos.org>,
 Aleksandar Rikalo <aleksandar.rikalo@syrmia.com>,
 Aurelien Jarno <aurelien@aurel32.net>, Jason Wang <jasowang@redhat.com>,
 Jia Liu <proljc@gmail.com>, Stafford Horne <shorne@gmail.com>,
 Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>,
 Nicholas Piggin <npiggin@gmail.com>,
 Daniel Henrique Barboza <danielhb413@gmail.com>,
 David Gibson <david@gibson.dropbear.id.au>,
 Harsh Prateek Bora <harshpb@linux.ibm.com>, Bin Meng
 <bin.meng@windriver.com>, Palmer Dabbelt <palmer@dabbelt.com>,
 Weiwei Li <liwei1518@gmail.com>, Liu Zhiwei <zhiwei_liu@linux.alibaba.com>,
 Halil Pasic <pasic@linux.ibm.com>,
 Christian Borntraeger <borntraeger@linux.ibm.com>,
 Eric Farman <farman@linux.ibm.com>, David Hildenbrand <david@redhat.com>,
 Ilya Leoshkevich <iii@linux.ibm.com>,
 Yoshinori Sato <ysato@users.sourceforge.jp>,
 Magnus Damm <magnus.damm@gmail.com>, Artyom Tarasenko <atar4qemu@gmail.com>,
 Stefano Stabellini <sstabellini@kernel.org>,
 Anthony Perard <anthony.perard@citrix.com>, Paul Durrant <paul@xen.org>,
 Max Filippov <jcmvbkbc@gmail.com>, qemu-arm@nongnu.org, qemu-ppc@nongnu.org,
 qemu-riscv@nongnu.org, qemu-s390x@nongnu.org,
 xen-devel@lists.xenproject.org, David Woodhouse <dwmw@amazon.co.uk>
References: <20240108204909.564514-1-dwmw2@infradead.org>
 <20240108204909.564514-23-dwmw2@infradead.org>
From: =?UTF-8?Q?C=C3=A9dric_Le_Goater?= <clg@kaod.org>
In-Reply-To: <20240108204909.564514-23-dwmw2@infradead.org>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit

On 1/8/24 21:26, David Woodhouse wrote:
> From: David Woodhouse <dwmw@amazon.co.uk>
> 
> Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
> ---
>   hw/arm/aspeed.c | 9 ++++-----
>   1 file changed, 4 insertions(+), 5 deletions(-)
> 
> diff --git a/hw/arm/aspeed.c b/hw/arm/aspeed.c
> index cc59176563..bed5e4f40b 100644
> --- a/hw/arm/aspeed.c
> +++ b/hw/arm/aspeed.c
> @@ -356,7 +356,6 @@ static void aspeed_machine_init(MachineState *machine)
>       AspeedMachineClass *amc = ASPEED_MACHINE_GET_CLASS(machine);
>       AspeedSoCClass *sc;
>       int i;
> -    NICInfo *nd = &nd_table[0];
>   
>       bmc->soc = ASPEED_SOC(object_new(amc->soc_name));
>       object_property_add_child(OBJECT(machine), "soc", OBJECT(bmc->soc));
> @@ -371,10 +370,10 @@ static void aspeed_machine_init(MachineState *machine)
>                                &error_fatal);
>   
>       for (i = 0; i < sc->macs_num; i++) {
> -        if ((amc->macs_mask & (1 << i)) && nd->used) {
> -            qemu_check_nic_model(nd, TYPE_FTGMAC100);
> -            qdev_set_nic_properties(DEVICE(&bmc->soc->ftgmac100[i]), nd);
> -            nd++;
> +        if ((amc->macs_mask & (1 << i)) &&
> +            !qemu_configure_nic_device(DEVICE(&bmc->soc->ftgmac100[i]),
> +                                       true, NULL)) {
> +            break; /* No configs left; stop asking */
>           }
>       }
>   

Acked-by: Cédric Le Goater <clg@kaod.org>

Thanks,

C.




From xen-devel-bounces@lists.xenproject.org Tue Jan 16 13:39:46 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 16 Jan 2024 13:39:46 +0000
Received: from list by lists.xenproject.org with outflank-mailman.667775.1039369 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPjfH-0001Dg-TF; Tue, 16 Jan 2024 13:39:39 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 667775.1039369; Tue, 16 Jan 2024 13:39:39 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPjfH-0001DZ-Og; Tue, 16 Jan 2024 13:39:39 +0000
Received: by outflank-mailman (input) for mailman id 667775;
 Tue, 16 Jan 2024 13:39:38 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=egl4=I2=oss.nxp.com=peng.fan@srs-se1.protection.inumbo.net>)
 id 1rPjfG-0001DS-6W
 for xen-devel@lists.xenproject.org; Tue, 16 Jan 2024 13:39:38 +0000
Received: from EUR04-HE1-obe.outbound.protection.outlook.com
 (mail-he1eur04on2087.outbound.protection.outlook.com [40.107.7.87])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id aff7bd15-b474-11ee-9b0f-b553b5be7939;
 Tue, 16 Jan 2024 14:39:35 +0100 (CET)
Received: from DU0PR04MB9417.eurprd04.prod.outlook.com (2603:10a6:10:358::11)
 by VI1PR04MB7165.eurprd04.prod.outlook.com (2603:10a6:800:125::13)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7181.23; Tue, 16 Jan
 2024 13:39:05 +0000
Received: from DU0PR04MB9417.eurprd04.prod.outlook.com
 ([fe80::c499:8cef:9bb1:ced6]) by DU0PR04MB9417.eurprd04.prod.outlook.com
 ([fe80::c499:8cef:9bb1:ced6%3]) with mapi id 15.20.7181.022; Tue, 16 Jan 2024
 13:39:05 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: aff7bd15-b474-11ee-9b0f-b553b5be7939
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=m46DZNX6uuNfw3kfH6RUhOccnw+wub7vWobPBDfePxFT1ii5gKPmWD6cS+iDK+CWTWMzu6VMBK9e8BqD+MZzoFKCXw3CgcBoqo1lJOf/N61AayMmUPSQyeGpWkJQRqujwhiRIHGptHXL3SeCo+MSvv7fpQgCy5vLKGvfvdxMRFbDSY7TIESKH29gWjdR+av51PunzMilOqhqVEEITO7A8onZQWWbXLq2tzNlH6JjAObOXSTDpAEI+rLWl0/oruv8Md1Fn5QjTBdPMg+BOrBlcsxecN+lUX5oqTH8LPV2jjZM84McxkRgr8DSycc2/IMQ42VW+nw8xLFjsK0FWBaDiw==
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=2U3E52DW1E9L3OhbwVGkXyBGddYCJr05awnT7+GVbJI=;
 b=Hqr9VMzieG7k/8ErrHHdFXicspAcPaZoRbMn3xOLMix6kmGsw5wfAYP+i4sHoS7/xBu5NTp7SbZyEi/CyrO7z1+uh2k3x0Ps8hckjlDtK4WjpkHNIvDdRdo4IRK50kC6o+5Degorx0TKgSNosH5nrKu0ap2uYxdo97bGyQgxPu99Z+MfRaI01c2jN1ffuW6jnIBReSd7GrJl5aJaYccWh5jKt/NUg8bUidJZOaa6GPOeZTFGrkgCvz5PKOEtGN8EHqM5eZDwmrl4cXDf+yZsGHsiKw7Y8V+infay5xJ+8xWh8VtXBulMopGl1iCX+nDwNwwMs8lKV2jFFHaCM2Ja5w==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=oss.nxp.com; dmarc=pass action=none header.from=oss.nxp.com;
 dkim=pass header.d=oss.nxp.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=NXP1.onmicrosoft.com;
 s=selector2-NXP1-onmicrosoft-com;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=2U3E52DW1E9L3OhbwVGkXyBGddYCJr05awnT7+GVbJI=;
 b=M+OwdT3ltHWziOOjbww5uwjUX8/CGPsPNRYLMwshPiB9B3FjL03fescWZfzzWWIuE67ID6Ig1FGV5Rn62xDfF+gG4MueO7ft2REAOwR7+374GxxqEJJPpVMc4RvShnC3M1qxNI56D9J+WH13DHG/zL5I4PZ7IlU39ap8FkB7T80=
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=oss.nxp.com;
From: "Peng Fan (OSS)" <peng.fan@oss.nxp.com>
To: sstabellini@kernel.org,
	anthony.perard@citrix.com,
	paul@xen.org,
	vikram.garhwal@amd.com,
	viresh.kumar@linaro.org
Cc: xen-devel@lists.xenproject.org,
	qemu-devel@nongnu.org,
	Peng Fan <peng.fan@nxp.com>
Subject: [PATCH] xen: Drop out of coroutine context xen_invalidate_map_cache_entry
Date: Tue, 16 Jan 2024 22:36:22 +0800
Message-Id: <20240116143622.6641-1-peng.fan@oss.nxp.com>
X-Mailer: git-send-email 2.35.3
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-ClientProxiedBy: SI2P153CA0017.APCP153.PROD.OUTLOOK.COM
 (2603:1096:4:140::10) To DU0PR04MB9417.eurprd04.prod.outlook.com
 (2603:10a6:10:358::11)
MIME-Version: 1.0
X-MS-Exchange-MessageSentRepresentingType: 1
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: DU0PR04MB9417:EE_|VI1PR04MB7165:EE_
X-MS-Office365-Filtering-Correlation-Id: ab96e1b3-9e2a-4afb-fa7e-08dc169881f4
X-MS-Exchange-SharedMailbox-RoutingAgent-Processed: True
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam: BCL:0;
X-Microsoft-Antispam-Message-Info:
	ITbcP3AkQVCnDyJwonkpEyUr6qh/O+ZJA5WYa+WC2NhGg4K6heknvGj/RZhtF6tg1nx8vqSSG548a+hKKrbS+77stmLcPiAEJ1QURx+3TEsI6hHrs9kNF73zOYdgN7OfSu3MxeJYDAdXfRnHCrC/8kyr3P55DJqbdeVpp2Y8dsmULC0wEerJCQEQjht5F3+6iBJ6RXRgnewXQKqS6ebcSZFhWnztG40hCzGT2UaMXRTm+/amdSOciYGTQ5SqeOw5grLoBeBsNhljgh1x0kpOY/oa8BvvDc7JHSLIiCOzXv542vDNfeyoZBATAam/kjpOqfnGTSDqjvzJeQ0i15CWO1oM1bs86VSEEbZxntDbSRvYnPwhvNtKsM/veInoV7pUtZNplvznOzrGuvcj98tOnGzRKgQIEnG9423auUtpMe5B40YDUFaBt1/RwUldOzn6tPn3SzHgTQcsD+yj3GQpbNkat2tt5pKsrdWTGCtx2SDB7ghKfEsGxuF4ni9wgFZIY6vyAU+cI9h6586fif23R+KHBYu3WElFB0wtXLRl7U0DfnUg5q290aeGdjRXPO1pe9zVN6Wz8IKtmGHvjEcjqHezluy2xpOp3g8xM4lMPNxQSQXXh7wizkPFDyKaMIY0
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DU0PR04MB9417.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230031)(346002)(39860400002)(366004)(136003)(396003)(376002)(230922051799003)(64100799003)(1800799012)(451199024)(186009)(26005)(52116002)(1076003)(38100700002)(38350700005)(86362001)(2616005)(2906002)(83380400001)(6512007)(478600001)(6506007)(6666004)(8936002)(8676002)(316002)(4326008)(41300700001)(66476007)(6486002)(5660300002)(66556008)(66946007);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?us-ascii?Q?GxCOyVvI4qwCwfGZz2QjLk7s2cCvqezCcy8FPqhH5MqinoB2WaBo25L4bLH1?=
 =?us-ascii?Q?sPcfT/Tfh3DUUJXpdq0RX37RUriOiwZx9oGT6JYXyg5czbaawoII/H6y4viO?=
 =?us-ascii?Q?Hx2CgpmsjuLF6GdmeFHLPsjMVpy/Hth7a0al9lmYA01VwGPOOwky4rluUhgC?=
 =?us-ascii?Q?NGP8Cv0unrXQ1aHsftT9o/BgLgGlU1p5xT0LvnXNtHwZbhBBlqEqahhIiH1x?=
 =?us-ascii?Q?P+ingplUZKG6bkYLt0n7tQb234LHOR2BeMgdqf6mSnDUq/cD3jhPPoatVd0y?=
 =?us-ascii?Q?/EdZ9Sf13R5Jhvlxa+kimRqr7+OvgZqaNSwaYKRGEuJW9JSD7Qncvxl33yId?=
 =?us-ascii?Q?BzW8jCW+gZLqrE/3J6/U2jx5h2RW2AHWkX2bFM5AsswUYBgWKwJh+/sLTJIC?=
 =?us-ascii?Q?jzkAzV7qTYLWVyUSS1ObWnEdPnwnqEUJjjxVS4cOH6bml1jpScjQ8RE4J9Jj?=
 =?us-ascii?Q?7dX0yPB1mZiiYzb17GqcPDC3gGpcSBMjJxMv/jCmqPEUFJPTDKtGB43TQ+SX?=
 =?us-ascii?Q?ndHKGIFpPQCbxFeK5L4TycQtDP/JPg9GJhnmEyyWRjgdhR3A1oRk+ng4uB+s?=
 =?us-ascii?Q?D5036r4g6JA3BLEjj0nWowRk2lpDqVdVgh41Ed73HGRSiLXppx0T0yuF8m0A?=
 =?us-ascii?Q?U72FNJtNc5WeGdm7tnGmhIVUgqF8+v/Bb1LcqIGsRrjV18LEodVDjDYP062z?=
 =?us-ascii?Q?sh8mZSe9zJoDD7nbwwFQYKcGMvmN4ecE1dJUTTdPLm9YLXlK3GuM8VRwY3dY?=
 =?us-ascii?Q?/OyHgJb0yLnvZ1bEiFlMP3h/iF8QRsuViL948floCdMRKe+L8fGX1gQoAy7N?=
 =?us-ascii?Q?9P2yXP+W60d0rP6TYOx8HEkcIBRJQ+TE+BfF8kHurQ/DjD2rVLMYeyHbIWDG?=
 =?us-ascii?Q?C1PraVW0lCd9t2kYwkzokFxNUFtZjtjDXT7bz0tm+tzDCuBk5MKCUMFOBvhh?=
 =?us-ascii?Q?2kbCoCxk9M6dHpb1l5aPl5vysWowmtpBbUnBbkcr7HseNnv0iNzLfikQVgDV?=
 =?us-ascii?Q?EUzxV4Kut9o3diyILOfZk2BMCxDrzSWwlULdoxjz6pn3TlcU+SQfVXaZAyTR?=
 =?us-ascii?Q?o4MEWjk9PwC/gj0Et646rpjfiWvyaEssdrZIQWOdMTjPn9n7Ckk7aytF9/QJ?=
 =?us-ascii?Q?+yvZT1Rz+m5KZkOB/B8J1cNkz1CmD98L9U9ze1xJ2ewwOgptEmHSnH9j0+Zp?=
 =?us-ascii?Q?4z3yQlj6+kk6YyMwo9CBlu7FTq6Ud+3Pm/AB4X1Z3xBOSk3d6w0uVeChYRdb?=
 =?us-ascii?Q?xah+p1A0rCp7XhUBvgV5+WKNc77u4pVFRYcR+bbaaZQQKitcNLXlfeqXggoc?=
 =?us-ascii?Q?9vgbjHrS7LUUbm/pzCm3ytSr55GgmVVprmbWU2DFTxOiQBzmotl0aKqbBz8R?=
 =?us-ascii?Q?pb9BA7Hpml0hsyBA9NsghaAF0xQ9VY56Gq/M6rVx4vBPRIKoMwFu59ssGNS+?=
 =?us-ascii?Q?sngE+sj6rFgOSRxtjH8D6RCA+Z2E3Wvdv+7j4FxkoXVrE1hcEKn/jDm0hqfB?=
 =?us-ascii?Q?BlGP1TYqBJq8mOu/Xo969dM4jxsQhSHOhokrDQASaqJXoWpHutNjPpT2c4Ux?=
 =?us-ascii?Q?q0cQfint5NWhlb3hgq27DrjKnvLmj+lYNQcEn3Yr?=
X-OriginatorOrg: oss.nxp.com
X-MS-Exchange-CrossTenant-Network-Message-Id: ab96e1b3-9e2a-4afb-fa7e-08dc169881f4
X-MS-Exchange-CrossTenant-AuthSource: DU0PR04MB9417.eurprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Jan 2024 13:39:05.3808
 (UTC)
X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted
X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635
X-MS-Exchange-CrossTenant-MailboxType: HOSTED
X-MS-Exchange-CrossTenant-UserPrincipalName: sZTaoXNRwsYtgOX/r3mpqE5cPXCkItBJJVC2H+qedwgKQiezY43BUs+WcRLkJi5ZbPmVt6DCBB0lcT5jcDBbIw==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR04MB7165

From: Peng Fan <peng.fan@nxp.com>

xen_invalidate_map_cache_entry is not expected to run in a
coroutine. Without this, there is crash:

    signo=signo@entry=6, no_tid=no_tid@entry=0) at pthread_kill.c:44
    threadid=<optimized out>) at pthread_kill.c:78
    at /usr/src/debug/glibc/2.38+git-r0/sysdeps/posix/raise.c:26
    fmt=0xffff9e1ca8a8 "%s%s%s:%u: %s%sAssertion `%s' failed.\n%n",
    assertion=assertion@entry=0xaaaae0d25740 "!qemu_in_coroutine()",
    file=file@entry=0xaaaae0d301a8 "../qemu-xen-dir-remote/block/graph-lock.c", line=line@entry=260,
    function=function@entry=0xaaaae0e522c0 <__PRETTY_FUNCTION__.3> "bdrv_graph_rdlock_main_loop") at assert.c:92
    assertion=assertion@entry=0xaaaae0d25740 "!qemu_in_coroutine()",
    file=file@entry=0xaaaae0d301a8 "../qemu-xen-dir-remote/block/graph-lock.c", line=line@entry=260,
    function=function@entry=0xaaaae0e522c0 <__PRETTY_FUNCTION__.3> "bdrv_graph_rdlock_main_loop") at assert.c:101
    at ../qemu-xen-dir-remote/block/graph-lock.c:260
    at /home/Freenix/work/sw-stash/xen/upstream/tools/qemu-xen-dir-remote/include/block/graph-lock.h:259
    host=host@entry=0xffff742c8000, size=size@entry=2097152)
    at ../qemu-xen-dir-remote/block/io.c:3362
    host=0xffff742c8000, size=2097152)
    at ../qemu-xen-dir-remote/block/block-backend.c:2859
    host=<optimized out>, size=<optimized out>, max_size=<optimized out>)
    at ../qemu-xen-dir-remote/block/block-ram-registrar.c:33
    size=2097152, max_size=2097152)
    at ../qemu-xen-dir-remote/hw/core/numa.c:883
    buffer=buffer@entry=0xffff743c5000 "")
    at ../qemu-xen-dir-remote/hw/xen/xen-mapcache.c:475
    buffer=buffer@entry=0xffff743c5000 "")
    at ../qemu-xen-dir-remote/hw/xen/xen-mapcache.c:487
    as=as@entry=0xaaaae1ca3ae8 <address_space_memory>, buffer=0xffff743c5000,
    len=<optimized out>, is_write=is_write@entry=true,
    access_len=access_len@entry=32768)
    at ../qemu-xen-dir-remote/system/physmem.c:3199
    dir=DMA_DIRECTION_FROM_DEVICE, len=<optimized out>,
    buffer=<optimized out>, as=0xaaaae1ca3ae8 <address_space_memory>)
    at /home/Freenix/work/sw-stash/xen/upstream/tools/qemu-xen-dir-remote/include/sysemu/dma.h:236
    elem=elem@entry=0xaaaaf620aa30, len=len@entry=32769)
    at ../qemu-xen-dir-remote/hw/virtio/virtio.c:758
    elem=elem@entry=0xaaaaf620aa30, len=len@entry=32769, idx=idx@entry=0)
    at ../qemu-xen-dir-remote/hw/virtio/virtio.c:919
    elem=elem@entry=0xaaaaf620aa30, len=32769)
    at ../qemu-xen-dir-remote/hw/virtio/virtio.c:994
    req=req@entry=0xaaaaf620aa30, status=status@entry=0 '\000')
    at ../qemu-xen-dir-remote/hw/block/virtio-blk.c:67
    ret=0) at ../qemu-xen-dir-remote/hw/block/virtio-blk.c:136
    at ../qemu-xen-dir-remote/block/block-backend.c:1559
--Type <RET> for more, q to quit, c to continue without paging--
    at ../qemu-xen-dir-remote/block/block-backend.c:1614
    i1=<optimized out>) at ../qemu-xen-dir-remote/util/coroutine-ucontext.c:177
    at ../sysdeps/unix/sysv/linux/aarch64/setcontext.S:123

Signed-off-by: Peng Fan <peng.fan@nxp.com>
---
 hw/xen/xen-mapcache.c | 31 +++++++++++++++++++++++++++++--
 1 file changed, 29 insertions(+), 2 deletions(-)

diff --git a/hw/xen/xen-mapcache.c b/hw/xen/xen-mapcache.c
index f7d974677d..4e1bb665ee 100644
--- a/hw/xen/xen-mapcache.c
+++ b/hw/xen/xen-mapcache.c
@@ -481,11 +481,38 @@ static void xen_invalidate_map_cache_entry_unlocked(uint8_t *buffer)
     g_free(entry);
 }
 
-void xen_invalidate_map_cache_entry(uint8_t *buffer)
+typedef struct XenMapCacheData {
+    Coroutine *co;
+    uint8_t *buffer;
+    int ret;
+} XenMapCacheData;
+
+static void xen_invalidate_map_cache_entry_bh(void *opaque)
 {
+    XenMapCacheData *data = opaque;
+
     mapcache_lock();
-    xen_invalidate_map_cache_entry_unlocked(buffer);
+    xen_invalidate_map_cache_entry_unlocked(data->buffer);
     mapcache_unlock();
+
+    aio_co_wake(data->co);
+}
+
+void coroutine_mixed_fn xen_invalidate_map_cache_entry(uint8_t *buffer)
+{
+    if (qemu_in_coroutine()) {
+        XenMapCacheData data = {
+            .co = qemu_coroutine_self(),
+            .buffer = buffer,
+        };
+        aio_bh_schedule_oneshot(qemu_get_current_aio_context(),
+                                xen_invalidate_map_cache_entry_bh, &data);
+        qemu_coroutine_yield();
+    } else {
+        mapcache_lock();
+        xen_invalidate_map_cache_entry_unlocked(buffer);
+        mapcache_unlock();
+    }
 }
 
 void xen_invalidate_map_cache(void)
-- 
2.35.3



From xen-devel-bounces@lists.xenproject.org Tue Jan 16 13:46:22 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 16 Jan 2024 13:46:22 +0000
Received: from list by lists.xenproject.org with outflank-mailman.667780.1039378 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPjlg-00037r-MC; Tue, 16 Jan 2024 13:46:16 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 667780.1039378; Tue, 16 Jan 2024 13:46:16 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPjlg-00037k-IX; Tue, 16 Jan 2024 13:46:16 +0000
Received: by outflank-mailman (input) for mailman id 667780;
 Tue, 16 Jan 2024 13:46:15 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=AzGb=I2=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1rPjlf-00037e-EM
 for xen-devel@lists.xenproject.org; Tue, 16 Jan 2024 13:46:15 +0000
Received: from mail-wm1-x333.google.com (mail-wm1-x333.google.com
 [2a00:1450:4864:20::333])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 9ca700ca-b475-11ee-9b0f-b553b5be7939;
 Tue, 16 Jan 2024 14:46:12 +0100 (CET)
Received: by mail-wm1-x333.google.com with SMTP id
 5b1f17b1804b1-40e775695c6so16849035e9.3
 for <xen-devel@lists.xenproject.org>; Tue, 16 Jan 2024 05:46:12 -0800 (PST)
Received: from [10.80.67.30] (default-46-102-197-194.interdsl.co.uk.
 [46.102.197.194]) by smtp.gmail.com with ESMTPSA id
 t5-20020a05600c450500b0040d6d755c90sm19463038wmo.42.2024.01.16.05.46.11
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 16 Jan 2024 05:46:12 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 9ca700ca-b475-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1705412772; x=1706017572; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=jpsfi9FtqkRNMFbmfMtYSMc8jbF0d6Yvja5Km06+sMg=;
        b=o5JAUz8jVe/SkE43bYrGHLlyk3NV8S9I5Xn0yWpmZmmJ7WzloLsYw8MCg1pwn+oveP
         zaD4p246ggxJViqANAamU0dU/iL1pNgxr6KitnjCHtN593z+Cx/gShqkm9bv7SV1eVN6
         bzv/NvyK5fNoPfAJrx3KwZBL84r5Azmpmk0XI=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705412772; x=1706017572;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=jpsfi9FtqkRNMFbmfMtYSMc8jbF0d6Yvja5Km06+sMg=;
        b=REMfeDKUBtkxhzDrLY0PhyYD4XwnR+b7Yt3g7OoGidWYFPPuHHVqkK6Lwl3wjdkWUa
         uhQMDhoBKZ+X4d7GNoR6n44g26JiNYIC6xENvT1v9udp9xw3+y/Tdpg3Qb7D1pZ+y2x8
         aQHQ8CKqR2M1hGMgS3wylH8UGT/rTyTdzenBz5zgazb/OzVN+FvccqHQXlPZPD344I4w
         eTqTqm2OM1GZRCl/YcO+74m999iBUAIju1z2zubyc2A4QMmqQyKIYEsGFC/76wOAdOQf
         hCpy/4KLRppkd5M1qXSZCrjwVS1tNJ4yPkAK5C63TwxwqwEjacoo5GwMsla8ZKaouN+8
         Ie6Q==
X-Gm-Message-State: AOJu0Ywl7NvROom8xKyPSDDPJHr/JPn50+nycMCdv+nYVwOrdyfqV2oT
	dCu2Aimr9TtYWx2xMmnU7+iN2kdzidsR1w==
X-Google-Smtp-Source: AGHT+IG/A4Eqb6vpZwQQ3MpE21bAwTg/Z4lXI49A64E+8dvlDJJtDMuDDViCOsMHtUQ2So3sszL07A==
X-Received: by 2002:a05:600c:2246:b0:40d:87eb:fa98 with SMTP id a6-20020a05600c224600b0040d87ebfa98mr4787517wmm.28.1705412772314;
        Tue, 16 Jan 2024 05:46:12 -0800 (PST)
Message-ID: <0fb5b518-cf81-4c60-8403-7e09c907bc64@citrix.com>
Date: Tue, 16 Jan 2024 13:46:11 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] x86/cpuid: Change cpuid() from a macro to a static inline
Content-Language: en-GB
To: Jan Beulich <jbeulich@suse.com>
Cc: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Wei Liu <wl@xen.org>, Stefano Stabellini <sstabellini@kernel.org>,
 Julien Grall <julien@xen.org>, Volodymyr Babchuk
 <Volodymyr_Babchuk@epam.com>, Bertrand Marquis <bertrand.marquis@arm.com>,
 Michal Orzel <michal.orzel@amd.com>,
 Roberto Bagnara <roberto.bagnara@bugseng.com>,
 Federico Serafini <federico.serafini@bugseng.com>,
 "consulting @ bugseng . com" <consulting@bugseng.com>,
 Xen-devel <xen-devel@lists.xenproject.org>
References: <20240116115838.560473-1-andrew.cooper3@citrix.com>
 <39debf73-14bf-40a6-8aff-adf086595581@suse.com>
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 xsFNBFLhNn8BEADVhE+Hb8i0GV6mihnnr/uiQQdPF8kUoFzCOPXkf7jQ5sLYeJa0cQi6Penp
 VtiFYznTairnVsN5J+ujSTIb+OlMSJUWV4opS7WVNnxHbFTPYZVQ3erv7NKc2iVizCRZ2Kxn
 srM1oPXWRic8BIAdYOKOloF2300SL/bIpeD+x7h3w9B/qez7nOin5NzkxgFoaUeIal12pXSR
 Q354FKFoy6Vh96gc4VRqte3jw8mPuJQpfws+Pb+swvSf/i1q1+1I4jsRQQh2m6OTADHIqg2E
 ofTYAEh7R5HfPx0EXoEDMdRjOeKn8+vvkAwhviWXTHlG3R1QkbE5M/oywnZ83udJmi+lxjJ5
 YhQ5IzomvJ16H0Bq+TLyVLO/VRksp1VR9HxCzItLNCS8PdpYYz5TC204ViycobYU65WMpzWe
 LFAGn8jSS25XIpqv0Y9k87dLbctKKA14Ifw2kq5OIVu2FuX+3i446JOa2vpCI9GcjCzi3oHV
 e00bzYiHMIl0FICrNJU0Kjho8pdo0m2uxkn6SYEpogAy9pnatUlO+erL4LqFUO7GXSdBRbw5
 gNt25XTLdSFuZtMxkY3tq8MFss5QnjhehCVPEpE6y9ZjI4XB8ad1G4oBHVGK5LMsvg22PfMJ
 ISWFSHoF/B5+lHkCKWkFxZ0gZn33ju5n6/FOdEx4B8cMJt+cWwARAQABzSlBbmRyZXcgQ29v
 cGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPsLBegQTAQgAJAIbAwULCQgHAwUVCgkI
 CwUWAgMBAAIeAQIXgAUCWKD95wIZAQAKCRBlw/kGpdefoHbdD/9AIoR3k6fKl+RFiFpyAhvO
 59ttDFI7nIAnlYngev2XUR3acFElJATHSDO0ju+hqWqAb8kVijXLops0gOfqt3VPZq9cuHlh
 IMDquatGLzAadfFx2eQYIYT+FYuMoPZy/aTUazmJIDVxP7L383grjIkn+7tAv+qeDfE+txL4
 SAm1UHNvmdfgL2/lcmL3xRh7sub3nJilM93RWX1Pe5LBSDXO45uzCGEdst6uSlzYR/MEr+5Z
 JQQ32JV64zwvf/aKaagSQSQMYNX9JFgfZ3TKWC1KJQbX5ssoX/5hNLqxMcZV3TN7kU8I3kjK
 mPec9+1nECOjjJSO/h4P0sBZyIUGfguwzhEeGf4sMCuSEM4xjCnwiBwftR17sr0spYcOpqET
 ZGcAmyYcNjy6CYadNCnfR40vhhWuCfNCBzWnUW0lFoo12wb0YnzoOLjvfD6OL3JjIUJNOmJy
 RCsJ5IA/Iz33RhSVRmROu+TztwuThClw63g7+hoyewv7BemKyuU6FTVhjjW+XUWmS/FzknSi
 dAG+insr0746cTPpSkGl3KAXeWDGJzve7/SBBfyznWCMGaf8E2P1oOdIZRxHgWj0zNr1+ooF
 /PzgLPiCI4OMUttTlEKChgbUTQ+5o0P080JojqfXwbPAyumbaYcQNiH1/xYbJdOFSiBv9rpt
 TQTBLzDKXok86M7BTQRS4TZ/ARAAkgqudHsp+hd82UVkvgnlqZjzz2vyrYfz7bkPtXaGb9H4
 Rfo7mQsEQavEBdWWjbga6eMnDqtu+FC+qeTGYebToxEyp2lKDSoAsvt8w82tIlP/EbmRbDVn
 7bhjBlfRcFjVYw8uVDPptT0TV47vpoCVkTwcyb6OltJrvg/QzV9f07DJswuda1JH3/qvYu0p
 vjPnYvCq4NsqY2XSdAJ02HrdYPFtNyPEntu1n1KK+gJrstjtw7KsZ4ygXYrsm/oCBiVW/OgU
 g/XIlGErkrxe4vQvJyVwg6YH653YTX5hLLUEL1NS4TCo47RP+wi6y+TnuAL36UtK/uFyEuPy
 wwrDVcC4cIFhYSfsO0BumEI65yu7a8aHbGfq2lW251UcoU48Z27ZUUZd2Dr6O/n8poQHbaTd
 6bJJSjzGGHZVbRP9UQ3lkmkmc0+XCHmj5WhwNNYjgbbmML7y0fsJT5RgvefAIFfHBg7fTY/i
 kBEimoUsTEQz+N4hbKwo1hULfVxDJStE4sbPhjbsPCrlXf6W9CxSyQ0qmZ2bXsLQYRj2xqd1
 bpA+1o1j2N4/au1R/uSiUFjewJdT/LX1EklKDcQwpk06Af/N7VZtSfEJeRV04unbsKVXWZAk
 uAJyDDKN99ziC0Wz5kcPyVD1HNf8bgaqGDzrv3TfYjwqayRFcMf7xJaL9xXedMcAEQEAAcLB
 XwQYAQgACQUCUuE2fwIbDAAKCRBlw/kGpdefoG4XEACD1Qf/er8EA7g23HMxYWd3FXHThrVQ
 HgiGdk5Yh632vjOm9L4sd/GCEACVQKjsu98e8o3ysitFlznEns5EAAXEbITrgKWXDDUWGYxd
 pnjj2u+GkVdsOAGk0kxczX6s+VRBhpbBI2PWnOsRJgU2n10PZ3mZD4Xu9kU2IXYmuW+e5KCA
 vTArRUdCrAtIa1k01sPipPPw6dfxx2e5asy21YOytzxuWFfJTGnVxZZSCyLUO83sh6OZhJkk
 b9rxL9wPmpN/t2IPaEKoAc0FTQZS36wAMOXkBh24PQ9gaLJvfPKpNzGD8XWR5HHF0NLIJhgg
 4ZlEXQ2fVp3XrtocHqhu4UZR4koCijgB8sB7Tb0GCpwK+C4UePdFLfhKyRdSXuvY3AHJd4CP
 4JzW0Bzq/WXY3XMOzUTYApGQpnUpdOmuQSfpV9MQO+/jo7r6yPbxT7CwRS5dcQPzUiuHLK9i
 nvjREdh84qycnx0/6dDroYhp0DFv4udxuAvt1h4wGwTPRQZerSm4xaYegEFusyhbZrI0U9tJ
 B8WrhBLXDiYlyJT6zOV2yZFuW47VrLsjYnHwn27hmxTC/7tvG3euCklmkn9Sl9IAKFu29RSo
 d5bD8kMSCYsTqtTfT6W4A3qHGvIDta3ptLYpIAOD2sY3GYq2nf3Bbzx81wZK14JdDDHUX2Rs
 6+ahAA==
In-Reply-To: <39debf73-14bf-40a6-8aff-adf086595581@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 16/01/2024 1:02 pm, Jan Beulich wrote:
> On 16.01.2024 12:58, Andrew Cooper wrote:
>> Fixes MISRA XXX
> Rule 5.5 if I'm not mistaken; had to look it up for the patch sent
> earlier in the day. As to "fixes" - when it's not an actual bug, I had
> (successfully) asked the bugseng guys to avoid that term, and instead
> use "addresses" or "eliminates a ... violation" or some such.

Ok.

>
>> No functional change.
>>
>> Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
> Reviewed-by: Jan Beulich <jbeulich@suse.com>

Thanks.

~Andrew


From xen-devel-bounces@lists.xenproject.org Tue Jan 16 14:10:37 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 16 Jan 2024 14:10:37 +0000
Received: from list by lists.xenproject.org with outflank-mailman.667785.1039387 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPk8z-0000kQ-9o; Tue, 16 Jan 2024 14:10:21 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 667785.1039387; Tue, 16 Jan 2024 14:10:21 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPk8z-0000kJ-70; Tue, 16 Jan 2024 14:10:21 +0000
Received: by outflank-mailman (input) for mailman id 667785;
 Tue, 16 Jan 2024 14:10:20 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=8OVi=I2=bugseng.com=federico.serafini@srs-se1.protection.inumbo.net>)
 id 1rPk8y-0000kA-CD
 for xen-devel@lists.xenproject.org; Tue, 16 Jan 2024 14:10:20 +0000
Received: from support.bugseng.com (mail.bugseng.com [162.55.131.47])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id f9663b4e-b478-11ee-9b0f-b553b5be7939;
 Tue, 16 Jan 2024 15:10:17 +0100 (CET)
Received: from [192.168.1.229] (93-36-216-194.ip62.fastwebnet.it
 [93.36.216.194])
 by support.bugseng.com (Postfix) with ESMTPSA id 1AE3D4EE073F;
 Tue, 16 Jan 2024 15:10:16 +0100 (CET)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: f9663b4e-b478-11ee-9b0f-b553b5be7939
Message-ID: <d4fb75c8-b856-41c7-9c69-828d4505b231@bugseng.com>
Date: Tue, 16 Jan 2024 15:10:15 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] x86/cpuid: Change cpuid() from a macro to a static inline
Content-Language: en-US, it
To: Jan Beulich <jbeulich@suse.com>, Andrew Cooper <andrew.cooper3@citrix.com>
Cc: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Wei Liu <wl@xen.org>, Stefano Stabellini <sstabellini@kernel.org>,
 Julien Grall <julien@xen.org>, Volodymyr Babchuk
 <Volodymyr_Babchuk@epam.com>, Bertrand Marquis <bertrand.marquis@arm.com>,
 Michal Orzel <michal.orzel@amd.com>,
 Roberto Bagnara <roberto.bagnara@bugseng.com>,
 "consulting @ bugseng . com" <consulting@bugseng.com>,
 Xen-devel <xen-devel@lists.xenproject.org>
References: <20240116115838.560473-1-andrew.cooper3@citrix.com>
 <39debf73-14bf-40a6-8aff-adf086595581@suse.com>
From: Federico Serafini <federico.serafini@bugseng.com>
Organization: BUGSENG srl
In-Reply-To: <39debf73-14bf-40a6-8aff-adf086595581@suse.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

On 16/01/24 14:02, Jan Beulich wrote:
> On 16.01.2024 12:58, Andrew Cooper wrote:
>> Fixes MISRA XXX
> 
> Rule 5.5 if I'm not mistaken; had to look it up for the patch sent
> earlier in the day. As to "fixes" - when it's not an actual bug, I had
> (successfully) asked the bugseng guys to avoid that term, and instead
> use "addresses" or "eliminates a ... violation" or some such.
> 
>> No functional change.
>>
>> Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
> 
> Reviewed-by: Jan Beulich <jbeulich@suse.com>
> 
> Jan

I confirm that it is Rule 5.5.

I would like to point out that although the patch fixes violations of
Rule 5.5, it introduces new violations of Rule 5.3 "An identifier 
declared in an inner scope shall not hide an identifier declared in an 
outer scope": cpuid is used also as an identifier for some formal 
arguments (the pipeline does not fail because Rule 5.3 is not tagged
as "clean" and the introduction of new violations does not cause
a failure).
A solution could be to rename the function adding a prefix or a suffix
to its name.

-- 
Federico Serafini, M.Sc.

Software Engineer, BUGSENG (http://bugseng.com)


From xen-devel-bounces@lists.xenproject.org Tue Jan 16 14:24:36 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 16 Jan 2024 14:24:36 +0000
Received: from list by lists.xenproject.org with outflank-mailman.667789.1039398 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPkMf-0003bD-G2; Tue, 16 Jan 2024 14:24:29 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 667789.1039398; Tue, 16 Jan 2024 14:24:29 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPkMf-0003b6-D6; Tue, 16 Jan 2024 14:24:29 +0000
Received: by outflank-mailman (input) for mailman id 667789;
 Tue, 16 Jan 2024 14:24:28 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=lstz=I2=minervasys.tech=carlo.nonato@srs-se1.protection.inumbo.net>)
 id 1rPkMe-0003ay-Gz
 for xen-devel@lists.xenproject.org; Tue, 16 Jan 2024 14:24:28 +0000
Received: from mail-ej1-x629.google.com (mail-ej1-x629.google.com
 [2a00:1450:4864:20::629])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id f427b7ce-b47a-11ee-98f1-6d05b1d4d9a1;
 Tue, 16 Jan 2024 15:24:27 +0100 (CET)
Received: by mail-ej1-x629.google.com with SMTP id
 a640c23a62f3a-a2c179aa5c4so651045766b.0
 for <xen-devel@lists.xenproject.org>; Tue, 16 Jan 2024 06:24:27 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: f427b7ce-b47a-11ee-98f1-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=minervasys-tech.20230601.gappssmtp.com; s=20230601; t=1705415066; x=1706019866; darn=lists.xenproject.org;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:from:to:cc:subject:date
         :message-id:reply-to;
        bh=NhnrQLItaSad0duFhSCp4HzrrXKTwINxqjLMFWpDc4A=;
        b=lzoQEAqRGyiYJReas9t51fe/MveoJduQEXczD7JS+fYmeo46bP1ekXmOAD920wEStn
         Psk+ErkwbbnZMpI8m3yQbnMWfG+RfJwVnsCS/bK7IG/o77N1e4EhNqx2+VUI5mstTarZ
         TZLC3MIDeOvNhP9WIqjIf0zSL8CXQjY+pf9L5wm7vE53GFR3hQG4zQ51BPsOM88eRCe0
         yiz9FYjawLQ22f17mpD9ZdSyKTuTapmKkIr8BNRcuJRQDtASQblp+BvCx3l5e8Hj1J26
         kFcePev/4TGV1TiHEj5JF2+jZwfDF72XU6LFxMMpYp2o6wEcNkKQNTu5mE4rUvAI2pr5
         K3rg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705415066; x=1706019866;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to;
        bh=NhnrQLItaSad0duFhSCp4HzrrXKTwINxqjLMFWpDc4A=;
        b=AeQE7ZGMBtboPtqJtizbygPJv0Q1V4Te6EIoiAYqLMX5hr4sKSI2ZiMTCy5+y5ixIT
         YEJUP1tuMZ+Ha1WH7aBIw1c/VvVxBYGn6P1jBNtwI+2mLjIQqQFOTcqq5GLNK3DCOgXe
         Lf8Ov38b7OXcbl0DJgST1jWdOqrJWHSx4934LSW6JVpSxRKo2EaLUy78j4IPIvoobroJ
         /bZEhtpsCxDKxjcBCcBJAjNKed6WXb5k/ys4r8zmtEENGc0PLsfZa97g1hk7sqCSUZMA
         Eq/Ybkivw32//C9SOWoAMSOICOrbTa0b+Ob0F5Y3L0uuVmIUXOSOHao6RKaEtcLZoPZE
         lnAQ==
X-Gm-Message-State: AOJu0YyOFqs3CnGpJTIJ9Qi7c0aCCccYW4iX0cvvgcdx/97TY/nsZF7c
	pVk3l8yhc79+fQt7upFkYfCBEMULqm6Oy8OhDMulVPSTmhZ2tQ==
X-Google-Smtp-Source: AGHT+IGhr9pDZ9LILpeQYQOMTGfhmyuWD19RM0zHDr6qAvg63jbNCz21hkamGHPeeDDxmVaKGERdz+R0SfnAgL2cFXo=
X-Received: by 2002:a17:906:4f0d:b0:a2e:a02f:7293 with SMTP id
 t13-20020a1709064f0d00b00a2ea02f7293mr123737eju.48.1705415066493; Tue, 16 Jan
 2024 06:24:26 -0800 (PST)
MIME-Version: 1.0
References: <20240116115509.77545-1-julien@xen.org> <20240116115509.77545-4-julien@xen.org>
In-Reply-To: <20240116115509.77545-4-julien@xen.org>
From: Carlo Nonato <carlo.nonato@minervasys.tech>
Date: Tue, 16 Jan 2024 15:24:15 +0100
Message-ID: <CAG+AhRWrN=Y4ZT57GjYMoX=7LPe0_3Xg_xaSnA4DY6CDHWPK0Q@mail.gmail.com>
Subject: Re: [PATCH 3/3] [DO NOT COMMIT] xen/arm: Create a trampoline for
 secondary boot CPUs
To: Julien Grall <julien@xen.org>
Cc: xen-devel@lists.xenproject.org, Julien Grall <jgrall@amazon.com>, 
	Stefano Stabellini <sstabellini@kernel.org>, Bertrand Marquis <bertrand.marquis@arm.com>, 
	Michal Orzel <michal.orzel@amd.com>, Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

Hi Julien,

On Tue, Jan 16, 2024 at 12:55=E2=80=AFPM Julien Grall <julien@xen.org> wrot=
e:
>
> From: Julien Grall <jgrall@amazon.com>
>
> In order to confirm the early boot code is self-contained, allocate a
> separate trampoline region for secondary to boot from it.
>
> Signed-off-by: Julien Grall <jgrall@amazon.com>
> ---
>  xen/arch/arm/arm64/mmu/mm.c |  7 +++++++
>  xen/arch/arm/mmu/smpboot.c  |  4 +++-
>  xen/arch/arm/psci.c         |  5 ++++-
>  xen/arch/arm/smpboot.c      | 15 ++++++++++++++-
>  4 files changed, 28 insertions(+), 3 deletions(-)
>
> diff --git a/xen/arch/arm/arm64/mmu/mm.c b/xen/arch/arm/arm64/mmu/mm.c
> index d2651c948698..3c4988dc75d1 100644
> --- a/xen/arch/arm/arm64/mmu/mm.c
> +++ b/xen/arch/arm/arm64/mmu/mm.c
> @@ -110,11 +110,18 @@ void __init arch_setup_page_tables(void)
>      prepare_runtime_identity_mapping();
>  }
>
> +extern mfn_t trampoline_start;
> +
>  void update_identity_mapping(bool enable)
>  {
>      paddr_t id_addr =3D virt_to_maddr(_start);
>      int rc;
>
> +    if ( !mfn_eq(trampoline_start, INVALID_MFN) )
> +    {
> +        id_addr =3D mfn_to_maddr(trampoline_start);
> +    }
> +
>      if ( enable )
>          rc =3D map_pages_to_xen(id_addr, maddr_to_mfn(id_addr), 1,
>                                PAGE_HYPERVISOR_RX);
> diff --git a/xen/arch/arm/mmu/smpboot.c b/xen/arch/arm/mmu/smpboot.c
> index f1cf9252710c..d768dfe065a5 100644
> --- a/xen/arch/arm/mmu/smpboot.c
> +++ b/xen/arch/arm/mmu/smpboot.c
> @@ -72,13 +72,15 @@ static void clear_boot_pagetables(void)
>      clear_table(boot_third);
>  }
>
> +extern mfn_t trampoline_start;
> +
>  static void set_init_ttbr(lpae_t *root)

Isn't this function not present in the patch series?

>  {
>      /*
>       * init_ttbr is part of the identity mapping which is read-only. So
>       * We need to re-map the region so it can be updated
>       */
> -    void *ptr =3D map_domain_page(virt_to_mfn(&init_ttbr));
> +    void *ptr =3D map_domain_page(trampoline_start);
>
>      ptr +=3D PAGE_OFFSET(&init_ttbr);
>
> diff --git a/xen/arch/arm/psci.c b/xen/arch/arm/psci.c
> index 695d2fa1f1b5..a00574d559d6 100644
> --- a/xen/arch/arm/psci.c
> +++ b/xen/arch/arm/psci.c
> @@ -36,11 +36,14 @@ static uint32_t psci_cpu_on_nr;
>
>  #define PSCI_RET(res)   ((int32_t)(res).a0)
>
> +extern mfn_t trampoline_start;
> +
>  int call_psci_cpu_on(int cpu)
>  {
>      struct arm_smccc_res res;
>
> -    arm_smccc_smc(psci_cpu_on_nr, cpu_logical_map(cpu), __pa(init_second=
ary),
> +    arm_smccc_smc(psci_cpu_on_nr, cpu_logical_map(cpu),
> +                  mfn_to_maddr(trampoline_start) + PAGE_OFFSET(init_seco=
ndary),
>                    &res);
>
>      return PSCI_RET(res);
> diff --git a/xen/arch/arm/smpboot.c b/xen/arch/arm/smpboot.c
> index 8d508a1bb258..ef84b73ebd46 100644
> --- a/xen/arch/arm/smpboot.c
> +++ b/xen/arch/arm/smpboot.c
> @@ -293,10 +293,13 @@ unsigned int __init smp_get_max_cpus(void)
>      return cpus;
>  }
>
> +mfn_t trampoline_start =3D INVALID_MFN_INITIALIZER;
> +
>  void __init
>  smp_prepare_cpus(void)
>  {
>      int rc;
> +    void *trampoline;
>
>      cpumask_copy(&cpu_present_map, &cpu_possible_map);
>
> @@ -304,6 +307,16 @@ smp_prepare_cpus(void)
>      if ( rc )
>          panic("Unable to allocate CPU sibling/core maps\n");
>
> +    /* Create a trampoline to confirm early boot code is self-contained =
*/
> +    trampoline =3D alloc_xenheap_page();
> +    BUG_ON(!trampoline);
> +
> +    memcpy(trampoline, _start, PAGE_SIZE);
> +    clean_dcache_va_range(trampoline, PAGE_SIZE);
> +    invalidate_icache();
> +
> +    printk("Trampoline 0x%lx\n", virt_to_maddr(trampoline));
> +    trampoline_start =3D virt_to_mfn(trampoline);
>  }
>
>  /* Boot the current CPU */
> @@ -439,7 +452,7 @@ static void set_smp_up_cpu(unsigned long mpidr)
>       * smp_up_cpu is part of the identity mapping which is read-only. So
>       * We need to re-map the region so it can be updated.
>       */
> -    void *ptr =3D map_domain_page(virt_to_mfn(&smp_up_cpu));
> +    void *ptr =3D map_domain_page(trampoline_start);
>
>      ptr +=3D PAGE_OFFSET(&smp_up_cpu);
>
> --
> 2.40.1
>

Thank you very much for your help.


From xen-devel-bounces@lists.xenproject.org Tue Jan 16 14:28:04 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 16 Jan 2024 14:28:04 +0000
Received: from list by lists.xenproject.org with outflank-mailman.667791.1039408 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPkQ7-0004MB-0o; Tue, 16 Jan 2024 14:28:03 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 667791.1039408; Tue, 16 Jan 2024 14:28:02 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPkQ6-0004M4-U0; Tue, 16 Jan 2024 14:28:02 +0000
Received: by outflank-mailman (input) for mailman id 667791;
 Tue, 16 Jan 2024 14:28:01 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=kz0G=I2=tklengyel.com=tamas@srs-se1.protection.inumbo.net>)
 id 1rPkQ5-0004Lu-7v
 for xen-devel@lists.xenproject.org; Tue, 16 Jan 2024 14:28:01 +0000
Received: from sender4-op-o12.zoho.com (sender4-op-o12.zoho.com
 [136.143.188.12]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 71c59623-b47b-11ee-98f1-6d05b1d4d9a1;
 Tue, 16 Jan 2024 15:27:59 +0100 (CET)
Received: from mail-yw1-f169.google.com (mail-yw1-f169.google.com
 [209.85.128.169]) by mx.zohomail.com
 with SMTPS id 1705415275604379.00670761475044;
 Tue, 16 Jan 2024 06:27:55 -0800 (PST)
Received: by mail-yw1-f169.google.com with SMTP id
 00721157ae682-5f2aab1c0c5so85411367b3.0
 for <xen-devel@lists.xenproject.org>; Tue, 16 Jan 2024 06:27:55 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 71c59623-b47b-11ee-98f1-6d05b1d4d9a1
ARC-Seal: i=1; a=rsa-sha256; t=1705415277; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=VoUz92F0yuDfDl624k3iz0hJIOH2pmyWXfiuismhze10rLyJ0AjfOSbKhI5byGgqLsT91o8QcE6+xBsJkmdXMcfq4nK0Dr71Hr/w0AkGxd6A971hCFHJZpWbMdqyVdxjDI6cCctNuG4uPPNnq+Ly/kX1H9uOw21lI64XmAxjkOY=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1705415277; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:MIME-Version:Message-ID:References:Subject:Subject:To:To:Message-Id:Reply-To; 
	bh=ACBLp6PzRnK+HS+Py+JpvflIap02I3QAeZBERgjSg+k=; 
	b=Kndq6DqHN1bTtBpWDy4kljYVwlF08Q2vgtrvijMaIJX+ZNfdCZ62W+c/AvAqd78D4DmKqVO38ll7vJ89EvN805S6WM08/qRLzyoiU0LD0v+vga/3Rd/RxP4Sk7wv+chivh+MedvvoTFGPywjvMuXqqQz6aJbcLhqSCS79n0H/jI=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=tklengyel.com;
	spf=pass  smtp.mailfrom=tamas@tklengyel.com;
	dmarc=pass header.from=<tamas@tklengyel.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1705415277;
	s=zmail; d=tklengyel.com; i=tamas@tklengyel.com;
	h=MIME-Version:References:In-Reply-To:From:From:Date:Date:Message-ID:Subject:Subject:To:To:Cc:Cc:Content-Type:Content-Transfer-Encoding:Message-Id:Reply-To;
	bh=ACBLp6PzRnK+HS+Py+JpvflIap02I3QAeZBERgjSg+k=;
	b=IHaf2Nm/F8ii0zH6cenONHWJXudAGbXCb4Noh7PjzCj+tVuKHujZ8Mudya6cbBct
	TYjscPMBVlGJ2PyYaYQIJ4A9JgyaSGkeSzydyrfFED5hf5fRDCqTfBmDWLppfkRWt3R
	0oeMaB2rsGgWzeWrLCTAL9syPueuBRdurwEUL5f0=
X-Gm-Message-State: AOJu0Yx/8yf7F4jbnq0wOni+J2yiyTPZW7uVqXZnmj6PU2mUJkxb98Oo
	MIrDHrFIbX2Vlz8tyyUNMgxB5xds8alJCJUdTuI=
X-Google-Smtp-Source: AGHT+IG9BMkuhAZhUhTlukx3F8N7lIbgpIJaeY0T9nHo5mckpwfDkh7CRwhm2QgATjBWiwvCAiZPTccT+msIJGwvKNE=
X-Received: by 2002:a25:bec7:0:b0:dc2:a46:3d29 with SMTP id
 k7-20020a25bec7000000b00dc20a463d29mr1395469ybm.9.1705415274442; Tue, 16 Jan
 2024 06:27:54 -0800 (PST)
MIME-Version: 1.0
References: <20240111231323.4043461-1-andrew.cooper3@citrix.com> <20240111231323.4043461-4-andrew.cooper3@citrix.com>
In-Reply-To: <20240111231323.4043461-4-andrew.cooper3@citrix.com>
From: Tamas K Lengyel <tamas@tklengyel.com>
Date: Tue, 16 Jan 2024 09:27:18 -0500
X-Gmail-Original-Message-ID: <CABfawhnbOQk=t5VkByjez+HVfE6Y3tGshxOODMu6icvKuU8AYg@mail.gmail.com>
Message-ID: <CABfawhnbOQk=t5VkByjez+HVfE6Y3tGshxOODMu6icvKuU8AYg@mail.gmail.com>
Subject: Re: [PATCH v2 3/3] x86/vmx: Disallow the use of inactivity states
To: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: Xen-devel <xen-devel@lists.xenproject.org>, 
	Reima Ishii <ishiir@g.ecc.u-tokyo.ac.jp>, Jan Beulich <JBeulich@suse.com>, 
	=?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>, Wei Liu <wl@xen.org>, 
	Jun Nakajima <jun.nakajima@intel.com>, Kevin Tian <kevin.tian@intel.com>, 
	Takahiro Shinagawa <shina@ecc.u-tokyo.ac.jp>, George Dunlap <george.dunlap@citrix.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

On Thu, Jan 11, 2024 at 6:13=E2=80=AFPM Andrew Cooper <andrew.cooper3@citri=
x.com> wrote:
>
> Right now, vvmx will blindly copy L12's ACTIVITY_STATE into the L02 VMCS =
and
> enter the vCPU.  Luckily for us, nested-virt is explicitly unsupported fo=
r
> security bugs.
>
> The inactivity states are HLT, SHUTDOWN and WAIT-FOR-SIPI, and as noted b=
y the
> SDM in Vol3 27.7 "Special Features of VM Entry":
>
>   If VM entry ends with the logical processor in an inactive activity sta=
te,
>   the VM entry generates any special bus cycle that is normally generated=
 when
>   that activity state is entered from the active state.
>
> Also,
>
>   Some activity states unconditionally block certain events.
>
> I.e. A VMEntry with ACTIVITY=3DSHUTDOWN will initiate a platform reset, w=
hile a
> VMEntry with ACTIVITY=3DWAIT-FOR-SIPI will really block everything other =
than
> SIPIs.
>
> Both of these activity states are for the TXT ACM to use, not for regular
> hypervisors, and Xen doesn't support dropping the HLT intercept either.
>
> There are two paths in Xen which operate on ACTIVITY_STATE.
>
> 1) The vmx_{get,set}_nonreg_state() helpers for VM-Fork.
>
>    As regular VMs can't use any inactivity states, this is just duplicati=
ng
>    the 0 from construct_vmcs().  Retain the ability to query activity_sta=
te,
>    but crash the domain on any attempt to set an inactivity state.
>
> 2) Nested virt, because of ACTIVITY_STATE in vmcs_gstate_field[].
>
>    Explicitly hide the inactivity states in the guest's view of MSR_VMX_M=
ISC,
>    and remove ACTIVITY_STATE from vmcs_gstate_field[].
>
>    In virtual_vmentry(), we should trigger a VMEntry failure for the use =
of
>    any inactivity states, but there's no support for that in the code at =
all
>    so leave a TODO for when we finally start working on nested-virt in
>    earnest.
>
> Reported-by: Reima Ishii <ishiir@g.ecc.u-tokyo.ac.jp>
> Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>

Reviewed-by: Tamas K Lengyel <tamas@tklengyel.com>


From xen-devel-bounces@lists.xenproject.org Tue Jan 16 14:35:50 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 16 Jan 2024 14:35:50 +0000
Received: from list by lists.xenproject.org with outflank-mailman.667798.1039418 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPkXY-0006Xh-Ql; Tue, 16 Jan 2024 14:35:44 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 667798.1039418; Tue, 16 Jan 2024 14:35:44 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPkXY-0006Xa-NF; Tue, 16 Jan 2024 14:35:44 +0000
Received: by outflank-mailman (input) for mailman id 667798;
 Tue, 16 Jan 2024 14:35:43 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>) id 1rPkXX-0006XU-Jj
 for xen-devel@lists.xenproject.org; Tue, 16 Jan 2024 14:35:43 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rPkXW-0002tt-Su; Tue, 16 Jan 2024 14:35:42 +0000
Received: from 54-240-197-231.amazon.com ([54.240.197.231]
 helo=[10.95.149.176]) by xenbits.xenproject.org with esmtpsa
 (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rPkXW-0000OY-Lj; Tue, 16 Jan 2024 14:35:42 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
	s=20200302mail; h=Content-Transfer-Encoding:Content-Type:In-Reply-To:From:
	References:Cc:To:Subject:MIME-Version:Date:Message-ID;
	bh=f+ku8OatD4EEqeSeF/EEj15d86aozunV6ZNdv5iaSIk=; b=dx+RF8Ag1gLJUi37txLxaivRnV
	6wNEvyj2nLeFD0M9V35zSWt4Y/03YtaYLNEY19Dl4vVKnrQExPCWc4w0MEH272nz+kHXZOr6zLl3t
	bce21q7oklQFJltiFlj3xJojvzorFWZQuqaolnHf8xfecbX05w+0I8igQTFbIPBxQ29w=;
Message-ID: <a2365149-9557-43dd-8a55-5812e9f56642@xen.org>
Date: Tue, 16 Jan 2024 14:35:40 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 3/3] [DO NOT COMMIT] xen/arm: Create a trampoline for
 secondary boot CPUs
Content-Language: en-GB
To: Carlo Nonato <carlo.nonato@minervasys.tech>
Cc: xen-devel@lists.xenproject.org, Julien Grall <jgrall@amazon.com>,
 Stefano Stabellini <sstabellini@kernel.org>,
 Bertrand Marquis <bertrand.marquis@arm.com>,
 Michal Orzel <michal.orzel@amd.com>,
 Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>
References: <20240116115509.77545-1-julien@xen.org>
 <20240116115509.77545-4-julien@xen.org>
 <CAG+AhRWrN=Y4ZT57GjYMoX=7LPe0_3Xg_xaSnA4DY6CDHWPK0Q@mail.gmail.com>
From: Julien Grall <julien@xen.org>
In-Reply-To: <CAG+AhRWrN=Y4ZT57GjYMoX=7LPe0_3Xg_xaSnA4DY6CDHWPK0Q@mail.gmail.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit



On 16/01/2024 14:24, Carlo Nonato wrote:
> Hi Julien,
> 
> On Tue, Jan 16, 2024 at 12:55 PM Julien Grall <julien@xen.org> wrote:
>>
>> From: Julien Grall <jgrall@amazon.com>
>>
>> In order to confirm the early boot code is self-contained, allocate a
>> separate trampoline region for secondary to boot from it.
>>
>> Signed-off-by: Julien Grall <jgrall@amazon.com>
>> ---
>>   xen/arch/arm/arm64/mmu/mm.c |  7 +++++++
>>   xen/arch/arm/mmu/smpboot.c  |  4 +++-
>>   xen/arch/arm/psci.c         |  5 ++++-
>>   xen/arch/arm/smpboot.c      | 15 ++++++++++++++-
>>   4 files changed, 28 insertions(+), 3 deletions(-)
>>
>> diff --git a/xen/arch/arm/arm64/mmu/mm.c b/xen/arch/arm/arm64/mmu/mm.c
>> index d2651c948698..3c4988dc75d1 100644
>> --- a/xen/arch/arm/arm64/mmu/mm.c
>> +++ b/xen/arch/arm/arm64/mmu/mm.c
>> @@ -110,11 +110,18 @@ void __init arch_setup_page_tables(void)
>>       prepare_runtime_identity_mapping();
>>   }
>>
>> +extern mfn_t trampoline_start;
>> +
>>   void update_identity_mapping(bool enable)
>>   {
>>       paddr_t id_addr = virt_to_maddr(_start);
>>       int rc;
>>
>> +    if ( !mfn_eq(trampoline_start, INVALID_MFN) )
>> +    {
>> +        id_addr = mfn_to_maddr(trampoline_start);
>> +    }
>> +
>>       if ( enable )
>>           rc = map_pages_to_xen(id_addr, maddr_to_mfn(id_addr), 1,
>>                                 PAGE_HYPERVISOR_RX);
>> diff --git a/xen/arch/arm/mmu/smpboot.c b/xen/arch/arm/mmu/smpboot.c
>> index f1cf9252710c..d768dfe065a5 100644
>> --- a/xen/arch/arm/mmu/smpboot.c
>> +++ b/xen/arch/arm/mmu/smpboot.c
>> @@ -72,13 +72,15 @@ static void clear_boot_pagetables(void)
>>       clear_table(boot_third);
>>   }
>>
>> +extern mfn_t trampoline_start;
>> +
>>   static void set_init_ttbr(lpae_t *root)
> 
> Isn't this function not present in the patch series?

Oh. It looks like I forgot to post one patch. Let me resend it.

Cheers,

-- 
Julien Grall


From xen-devel-bounces@lists.xenproject.org Tue Jan 16 14:37:15 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 16 Jan 2024 14:37:15 +0000
Received: from list by lists.xenproject.org with outflank-mailman.667804.1039429 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPkZ1-00077X-8f; Tue, 16 Jan 2024 14:37:15 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 667804.1039429; Tue, 16 Jan 2024 14:37:15 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPkZ1-00077Q-4D; Tue, 16 Jan 2024 14:37:15 +0000
Received: by outflank-mailman (input) for mailman id 667804;
 Tue, 16 Jan 2024 14:37:14 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>) id 1rPkZ0-00077E-4T
 for xen-devel@lists.xenproject.org; Tue, 16 Jan 2024 14:37:14 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rPkYy-0002vs-R3; Tue, 16 Jan 2024 14:37:12 +0000
Received: from 54-240-197-232.amazon.com ([54.240.197.232]
 helo=dev-dsk-jgrall-1b-035652ec.eu-west-1.amazon.com)
 by xenbits.xenproject.org with esmtpsa
 (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rPkYy-0000Te-IK; Tue, 16 Jan 2024 14:37:12 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
	s=20200302mail; h=Content-Transfer-Encoding:MIME-Version:Message-Id:Date:
	Subject:Cc:To:From; bh=XM9AeyIf1pR3Rc7j3BlY7vAmJKOyCMAvHz2S7LRU98E=; b=jTx5MT
	hVtIfH1ZJy5cQazBWW8tIsRJQg7CTTgH/zBr7CBZjrCDM3xGVu6a9QF5lDcoqYbY23J28wm4Nkuh8
	fuT0oFeHudRBNIFhqT4mkRj/Yp8HVtL72R3YyYSS1SOCLth38o5OqFuuPB802+aDJnfh5lBRDelfQ
	mNzOYqiN+sI=;
From: Julien Grall <julien@xen.org>
To: xen-devel@lists.xenproject.org
Cc: carlo.nonato@minervasys.tech,
	Julien Grall <jgrall@amazon.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Julien Grall <julien@xen.org>,
	Bertrand Marquis <bertrand.marquis@arm.com>,
	Michal Orzel <michal.orzel@amd.com>,
	Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>
Subject: [PATCH v1 repost 0/4] xen/arm64: Rework the MMU-off code (idmap) so it is self-contained
Date: Tue, 16 Jan 2024 14:37:05 +0000
Message-Id: <20240116143709.86584-1-julien@xen.org>
X-Mailer: git-send-email 2.40.1
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

From: Julien Grall <jgrall@amazon.com>

Hi all,

Right now, the MMU-off code will access may access data that are either
in .rodata or .data. With the enablement of cache coloring, Xen may
not be physcally contiguous anymore when secondary CPUs are brought up.

There are multiple way to solve this problem. The first is to keep
a copy of Xen physically contiguous in memory. The downside is this
means we are using up to 8MB (maximum size of Xen) when only a few
KBs is necessary.

This series is reworking the logic so all the MMU-off code is now
self-contained for secondary boot CPUs on arm64.

On arm32, this is not yet possible because secondary CPUs needs to
rebuild boot page-tables.

Cheers,

Julien Grall (4):
  arm/mmu: Move init_ttbr to a new section .data.idmap
  arm/smpboot: Move smp_up_cpu to a new section .data.idmap
  xen/arm64: head: Use PRINT_ID() for secondary CPU MMU-off boot code
  [DO NOT COMMIT] xen/arm: Create a trampoline for secondary boot CPUs

 xen/arch/arm/arm64/head.S               | 14 +++----
 xen/arch/arm/arm64/mmu/head.S           |  2 +-
 xen/arch/arm/arm64/mmu/mm.c             |  7 ++++
 xen/arch/arm/include/asm/arm64/macros.h |  9 +++--
 xen/arch/arm/mmu/smpboot.c              | 36 +++++++++++++++---
 xen/arch/arm/psci.c                     |  5 ++-
 xen/arch/arm/smpboot.c                  | 49 ++++++++++++++++++++++---
 xen/arch/arm/xen.lds.S                  |  1 +
 8 files changed, 101 insertions(+), 22 deletions(-)

-- 
2.40.1



From xen-devel-bounces@lists.xenproject.org Tue Jan 16 14:37:16 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 16 Jan 2024 14:37:16 +0000
Received: from list by lists.xenproject.org with outflank-mailman.667805.1039435 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPkZ1-0007Av-Hp; Tue, 16 Jan 2024 14:37:15 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 667805.1039435; Tue, 16 Jan 2024 14:37:15 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPkZ1-0007A6-BW; Tue, 16 Jan 2024 14:37:15 +0000
Received: by outflank-mailman (input) for mailman id 667805;
 Tue, 16 Jan 2024 14:37:14 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>) id 1rPkZ0-00077K-HD
 for xen-devel@lists.xenproject.org; Tue, 16 Jan 2024 14:37:14 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rPkZ0-0002vu-0l; Tue, 16 Jan 2024 14:37:14 +0000
Received: from 54-240-197-232.amazon.com ([54.240.197.232]
 helo=dev-dsk-jgrall-1b-035652ec.eu-west-1.amazon.com)
 by xenbits.xenproject.org with esmtpsa
 (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rPkYz-0000Te-Oi; Tue, 16 Jan 2024 14:37:13 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
	s=20200302mail; h=Content-Transfer-Encoding:MIME-Version:References:
	In-Reply-To:Message-Id:Date:Subject:Cc:To:From;
	bh=thlQxTTR/2J0TcN6DCYxzWx3fz1JwxED7pOaGuRoX08=; b=SgvlFM/MpSkQPUAJkDG4HFWQUY
	sghrtjogXA8iZevCApX76/SAWy21G9vPCX8E2NXXV4vve/PhlyHU0KsaPcw72EoouACxYTOk+bSx7
	oJlvbFRnnALqf/n+23KmE2/McMoiZV8BGbiupJhrT4O98tAt4YOLsZOfll5Qe/Ro397U=;
From: Julien Grall <julien@xen.org>
To: xen-devel@lists.xenproject.org
Cc: carlo.nonato@minervasys.tech,
	Julien Grall <jgrall@amazon.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Julien Grall <julien@xen.org>,
	Bertrand Marquis <bertrand.marquis@arm.com>,
	Michal Orzel <michal.orzel@amd.com>,
	Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>
Subject: [PATCH v1 repost 1/4] arm/mmu: Move init_ttbr to a new section .data.idmap
Date: Tue, 16 Jan 2024 14:37:06 +0000
Message-Id: <20240116143709.86584-2-julien@xen.org>
X-Mailer: git-send-email 2.40.1
In-Reply-To: <20240116143709.86584-1-julien@xen.org>
References: <20240116143709.86584-1-julien@xen.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

From: Julien Grall <jgrall@amazon.com>

With the upcoming work to color Xen, the binary will not be anymore
physically contiguous. This will be a problem during boot as the
assembly code will need to work out where each piece of Xen reside.

An easy way to solve the issue is to have all code/data accessed
by the secondary CPUs while the MMU is off within a single page.

Right now, init_ttbr is used by secondary CPUs to find there page-tables
before the MMU is on. Yet it is currently in .data which is unlikely
to be within the same page as the rest of the idmap.

Create a new section .data.idmap that will be used for variables
accessed by the early boot code. The first one is init_ttbr.

The idmap is currently part of the text section and therefore will
be mapped read-only executable. This means that we need to temporarily
remap init_ttbr in order to update it.

Introduce a new function set_init_ttbr() for this purpose so the code
is not duplicated between arm64 and arm32.

Signed-off-by: Julien Grall <jgrall@amazon.com>
---
 xen/arch/arm/mmu/smpboot.c | 34 +++++++++++++++++++++++++++++-----
 xen/arch/arm/xen.lds.S     |  1 +
 2 files changed, 30 insertions(+), 5 deletions(-)

diff --git a/xen/arch/arm/mmu/smpboot.c b/xen/arch/arm/mmu/smpboot.c
index b6fc0aae07f1..f1cf9252710c 100644
--- a/xen/arch/arm/mmu/smpboot.c
+++ b/xen/arch/arm/mmu/smpboot.c
@@ -9,6 +9,10 @@
 
 #include <asm/setup.h>
 
+/* Override macros from asm/page.h to make them work with mfn_t */
+#undef virt_to_mfn
+#define virt_to_mfn(va) _mfn(__virt_to_mfn(va))
+
 /*
  * Static start-of-day pagetables that we use before the allocators
  * are up. These are used by all CPUs during bringup before switching
@@ -44,7 +48,7 @@ DEFINE_BOOT_PAGE_TABLE(boot_second);
 DEFINE_BOOT_PAGE_TABLES(boot_third, XEN_NR_ENTRIES(2));
 
 /* Non-boot CPUs use this to find the correct pagetables. */
-uint64_t init_ttbr;
+uint64_t __section(".data.idmap") init_ttbr;
 
 /* Clear a translation table and clean & invalidate the cache */
 static void clear_table(void *table)
@@ -68,6 +72,27 @@ static void clear_boot_pagetables(void)
     clear_table(boot_third);
 }
 
+static void set_init_ttbr(lpae_t *root)
+{
+    /*
+     * init_ttbr is part of the identity mapping which is read-only. So
+     * We need to re-map the region so it can be updated
+     */
+    void *ptr = map_domain_page(virt_to_mfn(&init_ttbr));
+
+    ptr += PAGE_OFFSET(&init_ttbr);
+
+    *(uint64_t *)ptr = virt_to_maddr(root);
+
+    /*
+     * init_ttbr will be accessed with the MMU off, so ensure the update
+     * is visible by cleaning the cache.
+     */
+    clean_dcache(ptr);
+
+    unmap_domain_page(ptr);
+}
+
 #ifdef CONFIG_ARM_64
 int prepare_secondary_mm(int cpu)
 {
@@ -77,8 +102,8 @@ int prepare_secondary_mm(int cpu)
      * Set init_ttbr for this CPU coming up. All CPUs share a single setof
      * pagetables, but rewrite it each time for consistency with 32 bit.
      */
-    init_ttbr = virt_to_maddr(xen_pgtable);
-    clean_dcache(init_ttbr);
+    set_init_ttbr(xen_pgtable);
+
     return 0;
 }
 #else
@@ -109,8 +134,7 @@ int prepare_secondary_mm(int cpu)
     clear_boot_pagetables();
 
     /* Set init_ttbr for this CPU coming up */
-    init_ttbr = __pa(first);
-    clean_dcache(init_ttbr);
+    set_init_ttbr(first);
 
     return 0;
 }
diff --git a/xen/arch/arm/xen.lds.S b/xen/arch/arm/xen.lds.S
index 20598c6963ce..470c8f22084f 100644
--- a/xen/arch/arm/xen.lds.S
+++ b/xen/arch/arm/xen.lds.S
@@ -36,6 +36,7 @@ SECTIONS
        *(.text.header)
        *(.text.idmap)
        *(.rodata.idmap)
+       *(.data.idmap)
        _idmap_end = .;
 
        *(.text.cold)
-- 
2.40.1



From xen-devel-bounces@lists.xenproject.org Tue Jan 16 14:37:16 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 16 Jan 2024 14:37:16 +0000
Received: from list by lists.xenproject.org with outflank-mailman.667806.1039448 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPkZ2-0007ar-Nr; Tue, 16 Jan 2024 14:37:16 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 667806.1039448; Tue, 16 Jan 2024 14:37:16 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPkZ2-0007ak-Jv; Tue, 16 Jan 2024 14:37:16 +0000
Received: by outflank-mailman (input) for mailman id 667806;
 Tue, 16 Jan 2024 14:37:15 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>) id 1rPkZ1-0007Cm-FO
 for xen-devel@lists.xenproject.org; Tue, 16 Jan 2024 14:37:15 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rPkZ1-0002wE-6Q; Tue, 16 Jan 2024 14:37:15 +0000
Received: from 54-240-197-232.amazon.com ([54.240.197.232]
 helo=dev-dsk-jgrall-1b-035652ec.eu-west-1.amazon.com)
 by xenbits.xenproject.org with esmtpsa
 (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rPkZ0-0000Te-V0; Tue, 16 Jan 2024 14:37:15 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
	s=20200302mail; h=Content-Transfer-Encoding:MIME-Version:References:
	In-Reply-To:Message-Id:Date:Subject:Cc:To:From;
	bh=Vg9wt2C8p9IZLdVpC0c8HQykip9na6+1kKIeLfSU34o=; b=C7ixQ6ITvzTEhmC5fzz/v8yROa
	9W2V8HrFpkFQww9LlI0Jt8fsTgRlKMNhN9GpZzd+o8noZ0eGSNcbYav/Z7MGEix7MTDXWnwLh21JO
	PtJuNBLxOv+W9XWbLq/laLuo23mATbhDKnkC6cVmxnF15MSn/wpAkWLmFco9EtRAQXH0=;
From: Julien Grall <julien@xen.org>
To: xen-devel@lists.xenproject.org
Cc: carlo.nonato@minervasys.tech,
	Julien Grall <jgrall@amazon.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Julien Grall <julien@xen.org>,
	Bertrand Marquis <bertrand.marquis@arm.com>,
	Michal Orzel <michal.orzel@amd.com>,
	Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>
Subject: [PATCH v1 repost 2/4] arm/smpboot: Move smp_up_cpu to a new section .data.idmap
Date: Tue, 16 Jan 2024 14:37:07 +0000
Message-Id: <20240116143709.86584-3-julien@xen.org>
X-Mailer: git-send-email 2.40.1
In-Reply-To: <20240116143709.86584-1-julien@xen.org>
References: <20240116143709.86584-1-julien@xen.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

From: Julien Grall <jgrall@amazon.com>

With the upcoming work to color Xen, the binary will not be anymore
physically contiguous. This will be a problem during boot as the
assembly code will need to work out where each piece of Xen reside.

An easy way to solve the issue is to have all code/data accessed
by the secondary CPUs while the MMU is off within a single page.

Right now, smp_up_cpu is used by secondary CPUs to wait there turn for
booting before the MMU is on. Yet it is currently in .data which is
unlikely to be within the same page as the rest of the idmap.

Move smp_up_cpu to the recently create section .data.idmap. The idmap is
currently part of the text section and therefore will be mapped read-onl
executable. This means that we need to temporarily remap
smp_up_cpu in order to update it.

Introduce a new function set_smp_up_cpu() for this purpose so the code
is not duplicated between when opening and closing the gate.

Signed-off-by: Julien Grall <jgrall@amazon.com>
---
 xen/arch/arm/smpboot.c | 36 +++++++++++++++++++++++++++++++-----
 1 file changed, 31 insertions(+), 5 deletions(-)

diff --git a/xen/arch/arm/smpboot.c b/xen/arch/arm/smpboot.c
index 7110bc11fc05..8d508a1bb258 100644
--- a/xen/arch/arm/smpboot.c
+++ b/xen/arch/arm/smpboot.c
@@ -29,6 +29,10 @@
 #include <asm/psci.h>
 #include <asm/acpi.h>
 
+/* Override macros from asm/page.h to make them work with mfn_t */
+#undef virt_to_mfn
+#define virt_to_mfn(va) _mfn(__virt_to_mfn(va))
+
 cpumask_t cpu_online_map;
 cpumask_t cpu_present_map;
 cpumask_t cpu_possible_map;
@@ -56,7 +60,7 @@ struct init_info init_data =
 };
 
 /* Shared state for coordinating CPU bringup */
-unsigned long smp_up_cpu = MPIDR_INVALID;
+unsigned long __section(".data.idmap") smp_up_cpu = MPIDR_INVALID;
 /* Shared state for coordinating CPU teardown */
 static bool cpu_is_dead;
 
@@ -429,6 +433,28 @@ void stop_cpu(void)
         wfi();
 }
 
+static void set_smp_up_cpu(unsigned long mpidr)
+{
+    /*
+     * smp_up_cpu is part of the identity mapping which is read-only. So
+     * We need to re-map the region so it can be updated.
+     */
+    void *ptr = map_domain_page(virt_to_mfn(&smp_up_cpu));
+
+    ptr += PAGE_OFFSET(&smp_up_cpu);
+
+    *(unsigned long *)ptr = mpidr;
+
+    /*
+     * init_ttbr will be accessed with the MMU off, so ensure the update
+     * is visible by cleaning the cache.
+     */
+    clean_dcache(ptr);
+
+    unmap_domain_page(ptr);
+
+}
+
 int __init cpu_up_send_sgi(int cpu)
 {
     /* We don't know the GIC ID of the CPU until it has woken up, so just
@@ -460,8 +486,7 @@ int __cpu_up(unsigned int cpu)
     init_data.cpuid = cpu;
 
     /* Open the gate for this CPU */
-    smp_up_cpu = cpu_logical_map(cpu);
-    clean_dcache(smp_up_cpu);
+    set_smp_up_cpu(cpu_logical_map(cpu));
 
     rc = arch_cpu_up(cpu);
 
@@ -497,8 +522,9 @@ int __cpu_up(unsigned int cpu)
      */
     init_data.stack = NULL;
     init_data.cpuid = ~0;
-    smp_up_cpu = MPIDR_INVALID;
-    clean_dcache(smp_up_cpu);
+
+    set_smp_up_cpu(MPIDR_INVALID);
+
     arch_cpu_up_finish();
 
     if ( !cpu_online(cpu) )
-- 
2.40.1



From xen-devel-bounces@lists.xenproject.org Tue Jan 16 14:37:18 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 16 Jan 2024 14:37:18 +0000
Received: from list by lists.xenproject.org with outflank-mailman.667807.1039457 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPkZ3-0007qj-V6; Tue, 16 Jan 2024 14:37:17 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 667807.1039457; Tue, 16 Jan 2024 14:37:17 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPkZ3-0007qc-SJ; Tue, 16 Jan 2024 14:37:17 +0000
Received: by outflank-mailman (input) for mailman id 667807;
 Tue, 16 Jan 2024 14:37:16 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>) id 1rPkZ2-0007d6-R8
 for xen-devel@lists.xenproject.org; Tue, 16 Jan 2024 14:37:16 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rPkZ2-0002wi-Cj; Tue, 16 Jan 2024 14:37:16 +0000
Received: from 54-240-197-232.amazon.com ([54.240.197.232]
 helo=dev-dsk-jgrall-1b-035652ec.eu-west-1.amazon.com)
 by xenbits.xenproject.org with esmtpsa
 (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rPkZ2-0000Te-52; Tue, 16 Jan 2024 14:37:16 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
	s=20200302mail; h=Content-Transfer-Encoding:MIME-Version:References:
	In-Reply-To:Message-Id:Date:Subject:Cc:To:From;
	bh=QB4GZQCd//Kzo6y8zaEONm7rNVnOunv9HV6HbpL0NS0=; b=A10stZBEien/4deDkPtbAED6FI
	z8KyK9NuT23J+Tfi8gKy5JLzHdPt0933+ubBHtxhUvqYQZfgaJFp/SPeERvR3iaGbqTjumRISYRKV
	uand0Fk37UNxaOzAeV9lVt5+5vid6AHgf/WoRxHKtwZEiyQUT88SCsM4hORVi6MBDuhU=;
From: Julien Grall <julien@xen.org>
To: xen-devel@lists.xenproject.org
Cc: carlo.nonato@minervasys.tech,
	Julien Grall <jgrall@amazon.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Julien Grall <julien@xen.org>,
	Bertrand Marquis <bertrand.marquis@arm.com>,
	Michal Orzel <michal.orzel@amd.com>,
	Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>
Subject: [PATCH v1 repost 3/4] xen/arm64: head: Use PRINT_ID() for secondary CPU MMU-off boot code
Date: Tue, 16 Jan 2024 14:37:08 +0000
Message-Id: <20240116143709.86584-4-julien@xen.org>
X-Mailer: git-send-email 2.40.1
In-Reply-To: <20240116143709.86584-1-julien@xen.org>
References: <20240116143709.86584-1-julien@xen.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

From: Julien Grall <jgrall@amazon.com>

With the upcoming work to color Xen, the binary will not be anymore
physically contiguous. This will be a problem during boot as the
assembly code will need to work out where each piece of Xen reside.

An easy way to solve the issue is to have all code/data accessed
by the secondary CPUs while the MMU is off within a single page.

Right now, most of the early printk messages are using PRINT() which
will add the message in .rodata. This is unlikely to be within the
same page as the rest of the idmap.

So replace all the PRINT() that can be reachable by the secondary
CPU with MMU-off with PRINT_ID().

Signed-off-by: Julien Grall <jgrall@amazon.com>
---
 xen/arch/arm/arm64/head.S               | 14 +++++++-------
 xen/arch/arm/arm64/mmu/head.S           |  2 +-
 xen/arch/arm/include/asm/arm64/macros.h |  9 ++++++---
 3 files changed, 14 insertions(+), 11 deletions(-)

diff --git a/xen/arch/arm/arm64/head.S b/xen/arch/arm/arm64/head.S
index cfc04c755400..fa8b00b6f1db 100644
--- a/xen/arch/arm/arm64/head.S
+++ b/xen/arch/arm/arm64/head.S
@@ -289,9 +289,9 @@ GLOBAL(init_secondary)
 
 #ifdef CONFIG_EARLY_PRINTK
         ldr   x23, =CONFIG_EARLY_UART_BASE_ADDRESS /* x23 := UART base address */
-        PRINT("- CPU ")
+        PRINT_ID("- CPU ")
         print_reg x24
-        PRINT(" booting -\r\n")
+        PRINT_ID(" booting -\r\n")
 #endif
         bl    check_cpu_mode
         bl    cpu_init
@@ -314,10 +314,10 @@ ENDPROC(init_secondary)
  * Clobbers x0 - x5
  */
 check_cpu_mode:
-        PRINT("- Current EL ")
+        PRINT_ID("- Current EL ")
         mrs   x5, CurrentEL
         print_reg x5
-        PRINT(" -\r\n")
+        PRINT_ID(" -\r\n")
 
         /* Are we in EL2 */
         cmp   x5, #PSR_MODE_EL2t
@@ -326,8 +326,8 @@ check_cpu_mode:
         ret
 1:
         /* OK, we're boned. */
-        PRINT("- Xen must be entered in NS EL2 mode -\r\n")
-        PRINT("- Please update the bootloader -\r\n")
+        PRINT_ID("- Xen must be entered in NS EL2 mode -\r\n")
+        PRINT_ID("- Please update the bootloader -\r\n")
         b fail
 ENDPROC(check_cpu_mode)
 
@@ -361,7 +361,7 @@ ENDPROC(zero_bss)
  * Clobbers x0 - x3
  */
 cpu_init:
-        PRINT("- Initialize CPU -\r\n")
+        PRINT_ID("- Initialize CPU -\r\n")
 
         /* Set up memory attribute type tables */
         ldr   x0, =MAIRVAL
diff --git a/xen/arch/arm/arm64/mmu/head.S b/xen/arch/arm/arm64/mmu/head.S
index 92b62ae94ce5..fa40b696ddc8 100644
--- a/xen/arch/arm/arm64/mmu/head.S
+++ b/xen/arch/arm/arm64/mmu/head.S
@@ -276,7 +276,7 @@ ENDPROC(create_page_tables)
 enable_mmu:
         mov   x4, x0
         mov   x5, x1
-        PRINT("- Turning on paging -\r\n")
+        PRINT_ID("- Turning on paging -\r\n")
 
         /*
          * The state of the TLBs is unknown before turning on the MMU.
diff --git a/xen/arch/arm/include/asm/arm64/macros.h b/xen/arch/arm/include/asm/arm64/macros.h
index 10e652041f57..6a0108f778a2 100644
--- a/xen/arch/arm/include/asm/arm64/macros.h
+++ b/xen/arch/arm/include/asm/arm64/macros.h
@@ -39,9 +39,12 @@
  * There are multiple flavors:
  *  - PRINT_SECT(section, string): The @string will be located in @section
  *  - PRINT(): The string will be located in .rodata.str.
- *  - PRINT_ID(): When Xen is running on the Identity Mapping, it is
- *    only possible to have a limited amount of Xen. This will create
- *    the string in .rodata.idmap which will always be mapped.
+ *  - PRINT_ID(): This will create the string in .rodata.idmap which
+ *    will always be accessible. This is used when:
+ *      - Xen is running on the identity mapping because not all of Xen is mapped
+ *      - Running with the MMU-off on secondary boots as Xen may not be
+ *        physically contiguous in memory (e.g. in the case of cache
+ *        coloring).
  *
  * Clobbers x0 - x3
  */
-- 
2.40.1



From xen-devel-bounces@lists.xenproject.org Tue Jan 16 14:37:20 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 16 Jan 2024 14:37:20 +0000
Received: from list by lists.xenproject.org with outflank-mailman.667808.1039468 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPkZ6-0008A5-78; Tue, 16 Jan 2024 14:37:20 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 667808.1039468; Tue, 16 Jan 2024 14:37:20 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPkZ6-00089w-3F; Tue, 16 Jan 2024 14:37:20 +0000
Received: by outflank-mailman (input) for mailman id 667808;
 Tue, 16 Jan 2024 14:37:18 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>) id 1rPkZ4-0007rR-0H
 for xen-devel@lists.xenproject.org; Tue, 16 Jan 2024 14:37:18 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rPkZ3-0002x4-Iy; Tue, 16 Jan 2024 14:37:17 +0000
Received: from 54-240-197-232.amazon.com ([54.240.197.232]
 helo=dev-dsk-jgrall-1b-035652ec.eu-west-1.amazon.com)
 by xenbits.xenproject.org with esmtpsa
 (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rPkZ3-0000Te-BJ; Tue, 16 Jan 2024 14:37:17 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
	s=20200302mail; h=Content-Transfer-Encoding:MIME-Version:References:
	In-Reply-To:Message-Id:Date:Subject:Cc:To:From;
	bh=nSJb8H4AUwBfcQwQar1U/80V0XEGtzBfpVJPiZPhupE=; b=H/1jQx0a60F1WvaASINcygpe+i
	3DoLBQ9H1cGwWwHYkFWv9dkUr7+mzfSNUCck1NSj4+QqHRkqzYoaJAlPQk2bMH36rrKL7f9quC+Wk
	aO3jz/844pY4Kly63gIbysACvKzsYleORF1vlwL+QVYQU3SYGvxcJI25sLyoKJUq7OSA=;
From: Julien Grall <julien@xen.org>
To: xen-devel@lists.xenproject.org
Cc: carlo.nonato@minervasys.tech,
	Julien Grall <jgrall@amazon.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Julien Grall <julien@xen.org>,
	Bertrand Marquis <bertrand.marquis@arm.com>,
	Michal Orzel <michal.orzel@amd.com>,
	Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>
Subject: [PATCH v1 repost 4/4] [DO NOT COMMIT] xen/arm: Create a trampoline for secondary boot CPUs
Date: Tue, 16 Jan 2024 14:37:09 +0000
Message-Id: <20240116143709.86584-5-julien@xen.org>
X-Mailer: git-send-email 2.40.1
In-Reply-To: <20240116143709.86584-1-julien@xen.org>
References: <20240116143709.86584-1-julien@xen.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

From: Julien Grall <jgrall@amazon.com>

In order to confirm the early boot code is self-contained, allocate a
separate trampoline region for secondary to boot from it.

Signed-off-by: Julien Grall <jgrall@amazon.com>
---
 xen/arch/arm/arm64/mmu/mm.c |  7 +++++++
 xen/arch/arm/mmu/smpboot.c  |  4 +++-
 xen/arch/arm/psci.c         |  5 ++++-
 xen/arch/arm/smpboot.c      | 15 ++++++++++++++-
 4 files changed, 28 insertions(+), 3 deletions(-)

diff --git a/xen/arch/arm/arm64/mmu/mm.c b/xen/arch/arm/arm64/mmu/mm.c
index d2651c948698..3c4988dc75d1 100644
--- a/xen/arch/arm/arm64/mmu/mm.c
+++ b/xen/arch/arm/arm64/mmu/mm.c
@@ -110,11 +110,18 @@ void __init arch_setup_page_tables(void)
     prepare_runtime_identity_mapping();
 }
 
+extern mfn_t trampoline_start;
+
 void update_identity_mapping(bool enable)
 {
     paddr_t id_addr = virt_to_maddr(_start);
     int rc;
 
+    if ( !mfn_eq(trampoline_start, INVALID_MFN) )
+    {
+        id_addr = mfn_to_maddr(trampoline_start);
+    }
+
     if ( enable )
         rc = map_pages_to_xen(id_addr, maddr_to_mfn(id_addr), 1,
                               PAGE_HYPERVISOR_RX);
diff --git a/xen/arch/arm/mmu/smpboot.c b/xen/arch/arm/mmu/smpboot.c
index f1cf9252710c..d768dfe065a5 100644
--- a/xen/arch/arm/mmu/smpboot.c
+++ b/xen/arch/arm/mmu/smpboot.c
@@ -72,13 +72,15 @@ static void clear_boot_pagetables(void)
     clear_table(boot_third);
 }
 
+extern mfn_t trampoline_start;
+
 static void set_init_ttbr(lpae_t *root)
 {
     /*
      * init_ttbr is part of the identity mapping which is read-only. So
      * We need to re-map the region so it can be updated
      */
-    void *ptr = map_domain_page(virt_to_mfn(&init_ttbr));
+    void *ptr = map_domain_page(trampoline_start);
 
     ptr += PAGE_OFFSET(&init_ttbr);
 
diff --git a/xen/arch/arm/psci.c b/xen/arch/arm/psci.c
index 695d2fa1f1b5..a00574d559d6 100644
--- a/xen/arch/arm/psci.c
+++ b/xen/arch/arm/psci.c
@@ -36,11 +36,14 @@ static uint32_t psci_cpu_on_nr;
 
 #define PSCI_RET(res)   ((int32_t)(res).a0)
 
+extern mfn_t trampoline_start;
+
 int call_psci_cpu_on(int cpu)
 {
     struct arm_smccc_res res;
 
-    arm_smccc_smc(psci_cpu_on_nr, cpu_logical_map(cpu), __pa(init_secondary),
+    arm_smccc_smc(psci_cpu_on_nr, cpu_logical_map(cpu),
+                  mfn_to_maddr(trampoline_start) + PAGE_OFFSET(init_secondary),
                   &res);
 
     return PSCI_RET(res);
diff --git a/xen/arch/arm/smpboot.c b/xen/arch/arm/smpboot.c
index 8d508a1bb258..ef84b73ebd46 100644
--- a/xen/arch/arm/smpboot.c
+++ b/xen/arch/arm/smpboot.c
@@ -293,10 +293,13 @@ unsigned int __init smp_get_max_cpus(void)
     return cpus;
 }
 
+mfn_t trampoline_start = INVALID_MFN_INITIALIZER;
+
 void __init
 smp_prepare_cpus(void)
 {
     int rc;
+    void *trampoline;
 
     cpumask_copy(&cpu_present_map, &cpu_possible_map);
 
@@ -304,6 +307,16 @@ smp_prepare_cpus(void)
     if ( rc )
         panic("Unable to allocate CPU sibling/core maps\n");
 
+    /* Create a trampoline to confirm early boot code is self-contained */
+    trampoline = alloc_xenheap_page();
+    BUG_ON(!trampoline);
+
+    memcpy(trampoline, _start, PAGE_SIZE);
+    clean_dcache_va_range(trampoline, PAGE_SIZE);
+    invalidate_icache();
+
+    printk("Trampoline 0x%lx\n", virt_to_maddr(trampoline));
+    trampoline_start = virt_to_mfn(trampoline);
 }
 
 /* Boot the current CPU */
@@ -439,7 +452,7 @@ static void set_smp_up_cpu(unsigned long mpidr)
      * smp_up_cpu is part of the identity mapping which is read-only. So
      * We need to re-map the region so it can be updated.
      */
-    void *ptr = map_domain_page(virt_to_mfn(&smp_up_cpu));
+    void *ptr = map_domain_page(trampoline_start);
 
     ptr += PAGE_OFFSET(&smp_up_cpu);
 
-- 
2.40.1



From xen-devel-bounces@lists.xenproject.org Tue Jan 16 14:56:21 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 16 Jan 2024 14:56:21 +0000
Received: from list by lists.xenproject.org with outflank-mailman.667827.1039485 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPkrO-0006G4-QH; Tue, 16 Jan 2024 14:56:14 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 667827.1039485; Tue, 16 Jan 2024 14:56:14 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPkrO-0006Fx-Nl; Tue, 16 Jan 2024 14:56:14 +0000
Received: by outflank-mailman (input) for mailman id 667827;
 Tue, 16 Jan 2024 14:56:14 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rPkrO-0006Fn-CR; Tue, 16 Jan 2024 14:56:14 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rPkrO-0003Kg-8x; Tue, 16 Jan 2024 14:56:14 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rPkrN-0001wQ-Og; Tue, 16 Jan 2024 14:56:13 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rPkrN-0006C4-O3; Tue, 16 Jan 2024 14:56:13 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=Ml1kAovyGSaEXJlVqTdU/bDM//9MX3nfSnNydgdfqBw=; b=XUE1s0WlBmivtFy8LIM6hnmWsy
	Rc6OSWa7Lz3RtPKvuUONVQ4KQ6tRUZqz+sZUW9902Dkjj4ZkXg8f75wI4KedCZBlFIrok6sfIeYoV
	lzsV/sVRbQuBhLycxCO2JciwTplDcYWATDwdv3KWXID7MBbqgSn34JPXhvpce6Ymdq1M=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184365-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [xen-unstable test] 184365: tolerable FAIL - PUSHED
X-Osstest-Failures:
    xen-unstable:test-amd64-amd64-xl-qemuu-win7-amd64:windows-install:fail:heisenbug
    xen-unstable:test-amd64-amd64-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-amd64-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-raw:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-amd64-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-qcow2:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-qemuu-nested-amd:debian-hvm-install/l1/l2:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-i386-libvirt-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-libvirt:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-pvshim:guest-start:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-thunderx:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-xsm:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-thunderx:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-credit2:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-credit2:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-libvirt-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-libvirt-xsm:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-credit1:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-credit1:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit1:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit1:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-multivcpu:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-multivcpu:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit2:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit2:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-libvirt-raw:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-libvirt-raw:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-libvirt-raw:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt-vhd:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-vhd:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-vhd:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-raw:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-vhd:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-vhd:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-rtds:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-rtds:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-arndale:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-arndale:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-qcow2:migrate-support-check:fail:nonblocking
X-Osstest-Versions-This:
    xen=f3f6c500e2dbd23af77c207e2cf4b496fffa1b0d
X-Osstest-Versions-That:
    xen=c2ce3466472e9c9eda79f5dc98eb701bc6fdba20
From: osstest service owner <osstest-admin@xenproject.org>
Date: Tue, 16 Jan 2024 14:56:13 +0000

flight 184365 xen-unstable real [real]
flight 184373 xen-unstable real-retest [real]
http://logs.test-lab.xenproject.org/osstest/logs/184365/
http://logs.test-lab.xenproject.org/osstest/logs/184373/

Failures :-/ but no regressions.

Tests which are failing intermittently (not blocking):
 test-amd64-amd64-xl-qemuu-win7-amd64 12 windows-install fail pass in 184373-retest

Tests which did not succeed, but are not blocking:
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop  fail in 184373 like 184358
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 184358
 test-amd64-amd64-xl-qemut-win7-amd64 19 guest-stop            fail like 184358
 test-amd64-i386-xl-qemuu-win7-amd64 19 guest-stop             fail like 184358
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 184358
 test-amd64-i386-xl-qemut-ws16-amd64 19 guest-stop             fail like 184358
 test-armhf-armhf-libvirt-raw 15 saverestore-support-check    fail  like 184358
 test-amd64-i386-xl-qemut-win7-amd64 19 guest-stop             fail like 184358
 test-amd64-amd64-xl-qemut-ws16-amd64 19 guest-stop            fail like 184358
 test-armhf-armhf-libvirt-qcow2 15 saverestore-support-check   fail like 184358
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 184358
 test-amd64-i386-xl-qemuu-ws16-amd64 19 guest-stop             fail like 184358
 test-amd64-i386-libvirt-xsm  15 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-amd64-i386-libvirt      15 migrate-support-check        fail   never pass
 test-amd64-i386-xl-pvshim    14 guest-start                  fail   never pass
 test-arm64-arm64-xl          15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-xsm      15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-thunderx 15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl          16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-xsm      16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-thunderx 16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-credit2  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit2  16 saverestore-support-check    fail   never pass
 test-arm64-arm64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-xsm 16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-credit1  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit1  16 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt     15 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-armhf-armhf-xl-credit1  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit1  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-multivcpu 15 migrate-support-check        fail  never pass
 test-armhf-armhf-xl-multivcpu 16 saverestore-support-check    fail  never pass
 test-armhf-armhf-libvirt     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-credit2  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit2  16 saverestore-support-check    fail   never pass
 test-amd64-i386-libvirt-raw  14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 15 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-vhd 14 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-vhd      14 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-vhd      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-raw 14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-rtds     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-rtds     16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-arndale  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-arndale  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-qcow2 14 migrate-support-check        fail never pass

version targeted for testing:
 xen                  f3f6c500e2dbd23af77c207e2cf4b496fffa1b0d
baseline version:
 xen                  c2ce3466472e9c9eda79f5dc98eb701bc6fdba20

Last test of basis   184358  2024-01-15 14:41:38 Z    1 days
Testing same since   184365  2024-01-16 01:41:47 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Michal Orzel <michal.orzel@amd.com>

jobs:
 build-amd64-xsm                                              pass    
 build-arm64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64-xtf                                              pass    
 build-amd64                                                  pass    
 build-arm64                                                  pass    
 build-armhf                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-arm64-libvirt                                          pass    
 build-armhf-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-prev                                             pass    
 build-i386-prev                                              pass    
 build-amd64-pvops                                            pass    
 build-arm64-pvops                                            pass    
 build-armhf-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-xtf-amd64-amd64-1                                       pass    
 test-xtf-amd64-amd64-2                                       pass    
 test-xtf-amd64-amd64-3                                       pass    
 test-xtf-amd64-amd64-4                                       pass    
 test-xtf-amd64-amd64-5                                       pass    
 test-amd64-amd64-xl                                          pass    
 test-amd64-coresched-amd64-xl                                pass    
 test-arm64-arm64-xl                                          pass    
 test-armhf-armhf-xl                                          pass    
 test-amd64-i386-xl                                           pass    
 test-amd64-coresched-i386-xl                                 pass    
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm           pass    
 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm            pass    
 test-amd64-amd64-xl-qemut-stubdom-debianhvm-amd64-xsm        pass    
 test-amd64-i386-xl-qemut-stubdom-debianhvm-amd64-xsm         pass    
 test-amd64-amd64-xl-qemut-debianhvm-i386-xsm                 pass    
 test-amd64-i386-xl-qemut-debianhvm-i386-xsm                  pass    
 test-amd64-amd64-xl-qemuu-debianhvm-i386-xsm                 pass    
 test-amd64-i386-xl-qemuu-debianhvm-i386-xsm                  pass    
 test-amd64-amd64-libvirt-xsm                                 pass    
 test-arm64-arm64-libvirt-xsm                                 pass    
 test-amd64-i386-libvirt-xsm                                  pass    
 test-amd64-amd64-xl-xsm                                      pass    
 test-arm64-arm64-xl-xsm                                      pass    
 test-amd64-i386-xl-xsm                                       pass    
 test-amd64-amd64-qemuu-nested-amd                            fail    
 test-amd64-amd64-xl-pvhv2-amd                                pass    
 test-amd64-i386-qemut-rhel6hvm-amd                           pass    
 test-amd64-i386-qemuu-rhel6hvm-amd                           pass    
 test-amd64-amd64-dom0pvh-xl-amd                              pass    
 test-amd64-amd64-xl-qemut-debianhvm-amd64                    pass    
 test-amd64-i386-xl-qemut-debianhvm-amd64                     pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64                    pass    
 test-amd64-i386-xl-qemuu-debianhvm-amd64                     pass    
 test-amd64-i386-freebsd10-amd64                              pass    
 test-amd64-amd64-qemuu-freebsd11-amd64                       pass    
 test-amd64-amd64-qemuu-freebsd12-amd64                       pass    
 test-amd64-amd64-xl-qemuu-ovmf-amd64                         pass    
 test-amd64-i386-xl-qemuu-ovmf-amd64                          pass    
 test-amd64-amd64-xl-qemut-win7-amd64                         fail    
 test-amd64-i386-xl-qemut-win7-amd64                          fail    
 test-amd64-amd64-xl-qemuu-win7-amd64                         fail    
 test-amd64-i386-xl-qemuu-win7-amd64                          fail    
 test-amd64-amd64-xl-qemut-ws16-amd64                         fail    
 test-amd64-i386-xl-qemut-ws16-amd64                          fail    
 test-amd64-amd64-xl-qemuu-ws16-amd64                         fail    
 test-amd64-i386-xl-qemuu-ws16-amd64                          fail    
 test-armhf-armhf-xl-arndale                                  pass    
 test-amd64-amd64-examine-bios                                pass    
 test-amd64-i386-examine-bios                                 pass    
 test-amd64-amd64-xl-credit1                                  pass    
 test-arm64-arm64-xl-credit1                                  pass    
 test-armhf-armhf-xl-credit1                                  pass    
 test-amd64-amd64-xl-credit2                                  pass    
 test-arm64-arm64-xl-credit2                                  pass    
 test-armhf-armhf-xl-credit2                                  pass    
 test-amd64-amd64-xl-qemuu-dmrestrict-amd64-dmrestrict        pass    
 test-amd64-i386-xl-qemuu-dmrestrict-amd64-dmrestrict         pass    
 test-amd64-amd64-examine                                     pass    
 test-arm64-arm64-examine                                     pass    
 test-armhf-armhf-examine                                     pass    
 test-amd64-i386-examine                                      pass    
 test-amd64-i386-freebsd10-i386                               pass    
 test-amd64-amd64-qemuu-nested-intel                          pass    
 test-amd64-amd64-xl-pvhv2-intel                              pass    
 test-amd64-i386-qemut-rhel6hvm-intel                         pass    
 test-amd64-i386-qemuu-rhel6hvm-intel                         pass    
 test-amd64-amd64-dom0pvh-xl-intel                            pass    
 test-amd64-amd64-libvirt                                     pass    
 test-armhf-armhf-libvirt                                     pass    
 test-amd64-i386-libvirt                                      pass    
 test-amd64-amd64-livepatch                                   pass    
 test-amd64-i386-livepatch                                    pass    
 test-amd64-amd64-migrupgrade                                 pass    
 test-amd64-i386-migrupgrade                                  pass    
 test-amd64-amd64-xl-multivcpu                                pass    
 test-armhf-armhf-xl-multivcpu                                pass    
 test-amd64-amd64-pair                                        pass    
 test-amd64-i386-pair                                         pass    
 test-amd64-amd64-libvirt-pair                                pass    
 test-amd64-i386-libvirt-pair                                 pass    
 test-amd64-amd64-xl-pvshim                                   pass    
 test-amd64-i386-xl-pvshim                                    fail    
 test-amd64-amd64-pygrub                                      pass    
 test-armhf-armhf-libvirt-qcow2                               pass    
 test-amd64-amd64-xl-qcow2                                    pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-armhf-armhf-libvirt-raw                                 pass    
 test-amd64-i386-libvirt-raw                                  pass    
 test-amd64-amd64-xl-rtds                                     pass    
 test-armhf-armhf-xl-rtds                                     pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64-shadow             pass    
 test-amd64-i386-xl-qemuu-debianhvm-amd64-shadow              pass    
 test-amd64-amd64-xl-shadow                                   pass    
 test-amd64-i386-xl-shadow                                    pass    
 test-arm64-arm64-xl-thunderx                                 pass    
 test-amd64-amd64-examine-uefi                                pass    
 test-amd64-i386-examine-uefi                                 pass    
 test-amd64-amd64-libvirt-vhd                                 pass    
 test-arm64-arm64-xl-vhd                                      pass    
 test-armhf-armhf-xl-vhd                                      pass    
 test-amd64-i386-xl-vhd                                       pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Pushing revision :

To xenbits.xen.org:/home/xen/git/xen.git
   c2ce346647..f3f6c500e2  f3f6c500e2dbd23af77c207e2cf4b496fffa1b0d -> master


From xen-devel-bounces@lists.xenproject.org Tue Jan 16 15:20:43 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 16 Jan 2024 15:20:43 +0000
Received: from list by lists.xenproject.org with outflank-mailman.667836.1039495 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPlEo-0004uV-Q6; Tue, 16 Jan 2024 15:20:26 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 667836.1039495; Tue, 16 Jan 2024 15:20:26 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPlEo-0004uO-NE; Tue, 16 Jan 2024 15:20:26 +0000
Received: by outflank-mailman (input) for mailman id 667836;
 Tue, 16 Jan 2024 15:20:24 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=gvQ1=I2=gmail.com=oleksii.kurochko@srs-se1.protection.inumbo.net>)
 id 1rPlEm-0004u2-On
 for xen-devel@lists.xenproject.org; Tue, 16 Jan 2024 15:20:24 +0000
Received: from mail-pf1-x432.google.com (mail-pf1-x432.google.com
 [2607:f8b0:4864:20::432])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id c3bb9188-b482-11ee-98f1-6d05b1d4d9a1;
 Tue, 16 Jan 2024 16:20:22 +0100 (CET)
Received: by mail-pf1-x432.google.com with SMTP id
 d2e1a72fcca58-6db786df38dso2001337b3a.0
 for <xen-devel@lists.xenproject.org>; Tue, 16 Jan 2024 07:20:22 -0800 (PST)
Received: from [192.168.206.239] ([94.75.70.14])
 by smtp.gmail.com with ESMTPSA id
 t127-20020a628185000000b006d9e76be7cesm9828802pfd.73.2024.01.16.07.20.17
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 16 Jan 2024 07:20:20 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: c3bb9188-b482-11ee-98f1-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1705418421; x=1706023221; darn=lists.xenproject.org;
        h=mime-version:user-agent:content-transfer-encoding:references
         :in-reply-to:date:cc:to:from:subject:message-id:from:to:cc:subject
         :date:message-id:reply-to;
        bh=jZpKFwwpBrhvycx+ha8v2vVH1CyrajMWlfvF4EL0DT8=;
        b=PG9jW7MnYHbOMMSlLoomUd7gMNyIHYKmAwsIEXEpT4LsLCDT0bLwrj4gFcfKC/mOql
         wuDrs9NixLASdVLu9awV0PcYBw/+XNH1ym6uJj6G8yLhNIq5hxgDzeYd+dXQGXEMj+0d
         XacHvM4LUNpW4+FHBoPtx874egqpR69e6kODtzstXLSwBpqgZnQRRu2f8GbnCDGBPuaN
         PMBEoxBcrtSqKsNlpwFx6vf1QXj8CPXe4v5ADkw1fa19I/1OtVpe+J8E6GvH/CQ9KFQW
         8iDIbiXjvz9u0kfIweBS72oZthJeqQiE6kfxeKXbAoV8D87KqyAWYlAqiWWrwaLjWtAL
         9KZw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705418421; x=1706023221;
        h=mime-version:user-agent:content-transfer-encoding:references
         :in-reply-to:date:cc:to:from:subject:message-id:x-gm-message-state
         :from:to:cc:subject:date:message-id:reply-to;
        bh=jZpKFwwpBrhvycx+ha8v2vVH1CyrajMWlfvF4EL0DT8=;
        b=usJEkyhUQLkPox5BubR4t0ONyBMtg9TAKQE3x1y8a7A15W8f9bLSCxw5M5KdBDGe52
         LdokOXisMR33IpVmX/y9eTvAZfRh8nqBl7qQJ/dA1BK1JKcyLfmiptRb/MHrcaN4R0gl
         6jhw4wCMWIiZQZo+E6NT04xLcOuG9isQB5NGI8IRvDeub93llk8Pl0m5sp+eYiVWbr6b
         jbh4MbbpC/JshfGszYe9secSfBOqKYjX9KDSNsdpcC4AgZxj6yAVaubgZPQln8P4GItL
         8tkwQdN1ogkqmwplNO79gk0jU/60cri34wwKB7KUVBIbmTQO9VG2x4EKktvrj7RVogEr
         f6Ow==
X-Gm-Message-State: AOJu0YxwF876kr8EUvvQIgkjUwYOiWl81Z3L9qFNdnilxDcevQLvL5Cw
	E90me/E6igU8rxvJqM0VaV0=
X-Google-Smtp-Source: AGHT+IHdL/t/cGp/GWE6xqhUKgw3ODn9ebk/Azji7lstakhgPyX1SxTdyra7iK292Nbv4lFNUeLUNQ==
X-Received: by 2002:a05:6a20:2d99:b0:19a:3451:14dd with SMTP id bf25-20020a056a202d9900b0019a345114ddmr6320030pzb.60.1705418421027;
        Tue, 16 Jan 2024 07:20:21 -0800 (PST)
Message-ID: <c9977188e834f15e84d785e6cc1dc51d49da63d2.camel@gmail.com>
Subject: Re: [PATCH v3 14/34] xen/riscv: introduce io.h
From: Oleksii <oleksii.kurochko@gmail.com>
To: Jan Beulich <jbeulich@suse.com>
Cc: Alistair Francis <alistair.francis@wdc.com>, Bob Eshleman
 <bobbyeshleman@gmail.com>, Connor Davis <connojdavis@gmail.com>, Andrew
 Cooper <andrew.cooper3@citrix.com>, George Dunlap
 <george.dunlap@citrix.com>,  Julien Grall <julien@xen.org>, Stefano
 Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>, 
 xen-devel@lists.xenproject.org
Date: Tue, 16 Jan 2024 17:20:13 +0200
In-Reply-To: <895a60ba-547c-4064-9e4b-4ebf07dea5fb@suse.com>
References: <cover.1703255175.git.oleksii.kurochko@gmail.com>
	 <5d2c032481792a3fe5bd5f1cae42d95f6e9b54b1.1703255175.git.oleksii.kurochko@gmail.com>
	 <895a60ba-547c-4064-9e4b-4ebf07dea5fb@suse.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
User-Agent: Evolution 3.50.2 (3.50.2-1.fc39) 
MIME-Version: 1.0

On Mon, 2024-01-15 at 17:57 +0100, Jan Beulich wrote:
> On 22.12.2023 16:12, Oleksii Kurochko wrote:
> > --- /dev/null
> > +++ b/xen/arch/riscv/include/asm/io.h
> > @@ -0,0 +1,142 @@
> > +/* SPDX-License-Identifier: GPL-2.0-only */
> > +/*
> > + * {read,write}{b,w,l,q} based on arch/arm64/include/asm/io.h
> > + *=C2=A0=C2=A0 which was based on arch/arm/include/io.h
> > + *
> > + * Copyright (C) 1996-2000 Russell King
> > + * Copyright (C) 2012 ARM Ltd.
> > + * Copyright (C) 2014 Regents of the University of California
> > + */
> > +
> > +
> > +#ifndef _ASM_RISCV_IO_H
> > +#define _ASM_RISCV_IO_H
> > +
> > +#include <asm/byteorder.h>
> > +
> > +/*
> > + * The RISC-V ISA doesn't yet specify how to query or modify PMAs,
> > so we can't
> > + * change the properties of memory regions.=C2=A0 This should be fixed
> > by the
> > + * upcoming platform spec.
> > + */
> > +#define ioremap_nocache(addr, size) ioremap((addr), (size))
> > +#define ioremap_wc(addr, size) ioremap((addr), (size))
> > +#define ioremap_wt(addr, size) ioremap((addr), (size))
>=20
> Nit: No need for the inner parentheses.
Thanks. I'll update that place.

>=20
> > +/* Generic IO read/write.=C2=A0 These perform native-endian accesses.
> > */
> > +#define __raw_writeb __raw_writeb
> > +static inline void __raw_writeb(u8 val, volatile void __iomem
> > *addr)
> > +{
> > +	asm volatile("sb %0, 0(%1)" : : "r" (val), "r" (addr));
> > +}
> > +
> > +#define __raw_writew __raw_writew
> > +static inline void __raw_writew(u16 val, volatile void __iomem
> > *addr)
> > +{
> > +	asm volatile("sh %0, 0(%1)" : : "r" (val), "r" (addr));
> > +}
> > +
> > +#define __raw_writel __raw_writel
> > +static inline void __raw_writel(u32 val, volatile void __iomem
> > *addr)
> > +{
> > +	asm volatile("sw %0, 0(%1)" : : "r" (val), "r" (addr));
> > +}
> > +
> > +#ifdef CONFIG_64BIT
> > +#define __raw_writeq __raw_writeq
> > +static inline void __raw_writeq(u64 val, volatile void __iomem
> > *addr)
> > +{
> > +	asm volatile("sd %0, 0(%1)" : : "r" (val), "r" (addr));
> > +}
> > +#endif
> > +
> > +#define __raw_readb __raw_readb
> > +static inline u8 __raw_readb(const volatile void __iomem *addr)
> > +{
> > +	u8 val;
> > +
> > +	asm volatile("lb %0, 0(%1)" : "=3Dr" (val) : "r" (addr));
> > +	return val;
> > +}
> > +
> > +#define __raw_readw __raw_readw
> > +static inline u16 __raw_readw(const volatile void __iomem *addr)
> > +{
> > +	u16 val;
> > +
> > +	asm volatile("lh %0, 0(%1)" : "=3Dr" (val) : "r" (addr));
> > +	return val;
> > +}
> > +
> > +#define __raw_readl __raw_readl
> > +static inline u32 __raw_readl(const volatile void __iomem *addr)
> > +{
> > +	u32 val;
> > +
> > +	asm volatile("lw %0, 0(%1)" : "=3Dr" (val) : "r" (addr));
> > +	return val;
> > +}
> > +
> > +#ifdef CONFIG_64BIT
> > +#define __raw_readq __raw_readq
> > +static inline u64 __raw_readq(const volatile void __iomem *addr)
> > +{
> > +	u64 val;
> > +
> > +	asm volatile("ld %0, 0(%1)" : "=3Dr" (val) : "r" (addr));
> > +	return val;
> > +}
> > +#endif
> > +
> > +/*
> > + * Unordered I/O memory access primitives.=C2=A0 These are even more
> > relaxed than
> > + * the relaxed versions, as they don't even order accesses between
> > successive
> > + * operations to the I/O regions.
> > + */
> > +#define readb_cpu(c)		({ u8=C2=A0 __r =3D __raw_readb(c); __r;
> > })
> > +#define readw_cpu(c)		({ u16 __r =3D le16_to_cpu((__force
> > __le16)__raw_readw(c)); __r; })
> > +#define readl_cpu(c)		({ u32 __r =3D le32_to_cpu((__force
> > __le32)__raw_readl(c)); __r; })
> > +
> > +#define
> > writeb_cpu(v,c)		((void)__raw_writeb((v),(c)))
> > +#define
> > writew_cpu(v,c)		((void)__raw_writew((__force u16)cpu_to_le16(v),(c)))
> > +#define
> > writel_cpu(v,c)		((void)__raw_writel((__force u32)cpu_to_le32(v),(c)))
> > +
> > +#ifdef CONFIG_64BIT
> > +#define readq_cpu(c)		({ u64 __r =3D le64_to_cpu((__force
> > __le64)__raw_readq(c)); __r; })
> > +#define
> > writeq_cpu(v,c)		((void)__raw_writeq((__force u64)cpu_to_le64(v),(c)))
> > +#endif
>=20
> How come there are endianness assumptions here on the MMIO accessed?
It is a hard story.

As you might expect it was copy from Linux Kernel where it was decided
to follow only LE way:
https://patchwork.kernel.org/project/linux-riscv/patch/20190411115623.5749-=
3-hch@lst.de/
One of the answers of the author of the commit:
    And we don't know if Linux will be around if that ever changes.
    The point is:
     a) the current RISC-V spec is LE only
     b) the current linux port is LE only except for this little bit
    There is no point in leaving just this bitrotting code around.  It
    just confuses developers, (very very slightly) slows down compiles
    and will bitrot.  It also won't be any significant help to a future
    developer down the road doing a hypothetical BE RISC-V Linux port.

>From the specs [1, p.5 ] it is mentioned that:
   The base ISA has been defined to have a little-endian memory system,=20
   with big-endian or bi-endian as non-standard variants.

And in [3, p.6]:
   RISC-V base ISAs have either little-endian or big-endian memory=20
   systems, with the privileged architecture further defining bi-endian=20
   operation. Instructions are stored in memory as a sequence of 16-bit=20
   little-endian parcels, regardless of memory system endianness. Parcels
   forming one instruction are stored at increasing halfword addresses,=20
   with the lowest-addressed parcel holding the lowest-numbered bits in=20
   the instruction specification.
  =20
    We originally chose little-endian byte ordering for the RISC-V memory
   system because little-endian systems are currently dominant=20
   commercially (all x86 systems; iOS, Android, and Windows for ARM). A=20
   minor point is that we have also found little-endian memory systems to
   be more natural for hardware designers. However, certain application=20
   areas, such as IP networking, operate on big-endian data structures,=20
   and certain legacy code bases have been built assuming big-endian=20
   processors, so we have defined big-endian and bi-endian variants of=20
   RISC-V.
  =20
    We have to fix the order in which instruction parcels are stored in=20
   memory, independent of memory system endianness, to ensure that the=20
   length-encoding bits always appear first in halfword address order.=20
   This allows the length of a variable-length instruction to be quickly=
=20
   determined by an instruction-fetch unit by examining only the first few
   bits of the first 16-bit instruction parcel.

[ this part is from source [2] which I can't find in [3] for some
uknown reason ]
   We further make the instruction parcels themselves little-endian to
   decouple the instruction encoding from the memory system endianness
   altogether. This design benefits both software tooling and bi-endian
   hardware. Otherwise, for instance, a RISC-V assembler or disassembler
   would always need to know the intended active endianness, despite that
   in bi-endian systems, the endianness mode might change dynamically
   during execution. In contrast, by giving instructions a fixed
   endianness, it is sometimes possible for carefully written software to
   be endianness-agnostic even in binary form, much like position-
   independent code.
  =20
   The choice to have instructions be only little-endian does have
   consequences, however, for RISC-V software that encodes or decodes
   machine instructions. Big-endian JIT compilers, for example, must swap
   the byte order when storing to instruction memory.
  =20
   Once we had decided to fix on a little-endian instruction encoding,
   this naturally led to placing the length-encoding bits in the LSB
   positions of the instruction format to avoid breaking up opcode fields.


[1] https://riscv.org/wp-content/uploads/2017/05/riscv-spec-v2.2.pdf
[2] https://five-embeddev.com/riscv-isa-manual/latest/intro.html
[3] https://riscv.org/wp-content/uploads/2017/05/riscv-spec-v2.2.pdf
>=20
> As a file-wide remark: While I don't mind you using u<N> here for
> now,
> presumably to stay close to Linux, eventually - as we make progress
> with
> the conversion to uint<N>_t - this will need to diverge anyway.
Then I'll use uint<N>_t everywhere from the start. I am pretty sure
this file doesn't require sync often, so we can use  Xen style instead
of Linux.

>=20
> > +/*
> > + * I/O memory access primitives. Reads are ordered relative to any
> > + * following Normal memory access. Writes are ordered relative to
> > any prior
> > + * Normal memory access.=C2=A0 The memory barriers here are necessary
> > as RISC-V
> > + * doesn't define any ordering between the memory space and the
> > I/O space.
> > + */
> > +#define __io_br()	do {} while (0)
>=20
> Nit: Why are this and ...
>=20
> > +#define __io_ar(v)	__asm__ __volatile__ ("fence i,r" : : :
> > "memory");
> > +#define __io_bw()	__asm__ __volatile__ ("fence w,o" : : :
> > "memory");
> > +#define __io_aw()	do { } while (0)
>=20
> ... this not expanding exactly the same?
I don't know the specific reason, it was done so in Linux kernel in
case when CONFIG_MMIOWB isn't supported:
https://elixir.bootlin.com/linux/latest/source/include/asm-generic/mmiowb.h=
#L61

https://elixir.bootlin.com/linux/latest/source/arch/riscv/include/asm/mmio.=
h#L136



~ Oleksii


From xen-devel-bounces@lists.xenproject.org Tue Jan 16 15:52:53 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 16 Jan 2024 15:52:53 +0000
Received: from list by lists.xenproject.org with outflank-mailman.667841.1039505 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPlk7-0004PW-4f; Tue, 16 Jan 2024 15:52:47 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 667841.1039505; Tue, 16 Jan 2024 15:52:47 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPlk7-0004PP-2A; Tue, 16 Jan 2024 15:52:47 +0000
Received: by outflank-mailman (input) for mailman id 667841;
 Tue, 16 Jan 2024 15:52:46 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=62Nt=I2=gmail.com=euidzero@srs-se1.protection.inumbo.net>)
 id 1rPlk6-0004PJ-MY
 for xen-devel@lists.xenproject.org; Tue, 16 Jan 2024 15:52:46 +0000
Received: from mail-pl1-x62b.google.com (mail-pl1-x62b.google.com
 [2607:f8b0:4864:20::62b])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 499f4039-b487-11ee-98f1-6d05b1d4d9a1;
 Tue, 16 Jan 2024 16:52:45 +0100 (CET)
Received: by mail-pl1-x62b.google.com with SMTP id
 d9443c01a7336-1d5f252411aso3221575ad.2
 for <xen-devel@lists.xenproject.org>; Tue, 16 Jan 2024 07:52:45 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 499f4039-b487-11ee-98f1-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1705420364; x=1706025164; darn=lists.xenproject.org;
        h=cc:to:subject:message-id:date:from:in-reply-to:references
         :mime-version:from:to:cc:subject:date:message-id:reply-to;
        bh=WqVKUl/Uau5HI4EsqRv0/GCn4gvPIpX9BgBngDg7SJg=;
        b=CvpihxkqiSCOwqDaLlkQIy7kp8oUXjDprT2rk4LeXj+/gvkJwBGoTe1fbce9rIGJcL
         sUDvyJTKkU35sljJXMEPYa3zlzHg2W3xdFSindnlaUJmndK9pnr/u99eDJ1P4IOofhGA
         o+NpZB7+mIfIZ1+FmjN3942nrJfU1O7x6nWD2z7C5QcchpScgKDDKummNLJApg2jRJq6
         tT/hbm2uhYzXmOOAp23ThwJg+EXEkTdMS/zOItIOGHx0y1jWuN+TC31EsBLhp3wbGQIa
         KcYCci8DCj9HDTLYWw0UU5AvmAKlJabRENi5fOweSyhhQk2mz3LNVmNbRbjXFHTersXE
         xvIg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705420364; x=1706025164;
        h=cc:to:subject:message-id:date:from:in-reply-to:references
         :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id
         :reply-to;
        bh=WqVKUl/Uau5HI4EsqRv0/GCn4gvPIpX9BgBngDg7SJg=;
        b=LOsy7ZnuG823gNVbxu1Z4C+QdLUmD4Ae5JojwIWQpnns+9VcaDouJ7JOJEBcfvnvre
         CyKUD0vcveRHbBx7jjFUNE+kfEAErEVVntivkM4X/uyu7B6OFRepeIqD4uRVz/K3eqNl
         QznFnbT9O4VwO/QS22Y2xK80UzbI87YS3Yngh/7HdNEYpl/TeZo8SWXcBpxdv7JaNLco
         +uZm6tiCZEF3lnt0y6u5UQgS4LcbQ1uTRocfxvEGZSXorteEZp6JzsJv0Rrs/rSoPwec
         Yx9vfa7QsnI10q7u/EOiVYZPiAGAge2L3VsBMv80OL3NTqGF+To1vZfL7FfRexozJCYt
         jEig==
X-Gm-Message-State: AOJu0Yw81GQtrLVtHD1wIQRaq5KkI6217JIpVFjY/QRnCdMNc7q3tjPI
	b3Jd33vGT8KtjpKchIG7m0smv4Xgj3PdNdfXITU=
X-Google-Smtp-Source: AGHT+IESo5iPXC1u/d6j1gcP/8vGrvwtsAt1PQvWBrFaHLg3YhnVhwZ7Yh7Of5OnPQYN5pMETTdylLGjNxB0v+LOjFw=
X-Received: by 2002:a17:902:aa97:b0:1d5:74df:be61 with SMTP id
 d23-20020a170902aa9700b001d574dfbe61mr3452641plr.78.1705420363679; Tue, 16
 Jan 2024 07:52:43 -0800 (PST)
MIME-Version: 1.0
References: <CAKm-Umas=5=JzooRzPHxUDigKpFK3Ze7cQcG8eR5kWgn-d_7fQ@mail.gmail.com>
 <64d738b7-08c1-4b2c-a828-a137c870408e@suse.com> <CAKm-UmayUxd8F337g+BnR=_50_o__oV_PeUv9Z+9gNZ5MXYmrA@mail.gmail.com>
 <b4f46a91-b3b9-49b9-9a26-e2f962dee54c@suse.com> <CAKm-UmY9yYv2gOwm-O3DF7dBBNeNjs+3pDGuU+sYgJ+OHwcLNw@mail.gmail.com>
 <CAKm-UmZ1Q77EqUit9J6RX0-MCALdu4gjaU2zrX6oneW+45a+Kw@mail.gmail.com>
 <CAKm-UmYZcsY=C2Yhmy_EeZi0iAguVH0Eqy83upBLa_ikQtPwnw@mail.gmail.com>
 <CAKm-Umapq5LW9yhSOGk8TOg1iuvUogUDKbEXbUcE5T5-vVzW3w@mail.gmail.com>
 <CAKm-UmaUZ=rj-F3RvMoR7H3OvBHm1iy4PTRZAjyi=MQUVTuYVg@mail.gmail.com>
 <CAKm-Umat77MTh6=GEuH+bf1WRX+_B4-N5hY4xwADALfhj4QCPA@mail.gmail.com>
 <6ba9568a-ff8e-48ad-907f-74303e04d3a2@suse.com> <CAKm-UmZVoUhidEV15Xk+J_XN5a2GsBqMbXL9wqdFdoAFf_u5AA@mail.gmail.com>
 <bcbceba7-42ac-45be-80ab-e3dfe7741ec6@suse.com> <2eafe45b-fd97-472c-a173-459d6ff0b957@suse.com>
 <CAKm-Umbs2D7NHFE+NW2xKOu7-AZhFpH4uzE5QTuQusnGA_eNWA@mail.gmail.com>
 <f539144c-885a-461c-a506-bdb73e626a65@suse.com> <CAKm-UmY126AfdGhWcZ3s9vwN9+ksVRRFEhOu0ZFMoDvxrqOibw@mail.gmail.com>
 <CAKm-UmYt3iV8zOhSmtqMGhi_8T93c_nCbnefs4m3UC+3UABqeQ@mail.gmail.com> <CAKm-UmY-KXEAtBagikW4Jvp=SFXtmEg8P62pHfSo3Hr2s-0_-A@mail.gmail.com>
In-Reply-To: <CAKm-UmY-KXEAtBagikW4Jvp=SFXtmEg8P62pHfSo3Hr2s-0_-A@mail.gmail.com>
From: =?UTF-8?Q?S=C3=A9bastien_Chaumat?= <euidzero@gmail.com>
Date: Tue, 16 Jan 2024 16:52:31 +0100
Message-ID: <CAKm-UmYbMCfXc1Ny0=qfB+UaLSXV9oEHZiSgS=mwKMwmOFGVrQ@mail.gmail.com>
Subject: Re: [BUG]i2c_hid_acpi broken with 4.17.2 on Framework Laptop 13 AMD
To: Jan Beulich <jbeulich@suse.com>
Cc: xen-devel@lists.xenproject.org, Juergen Gross <jgross@suse.com>, 
	Mario Limonciello <mario.limonciello@amd.com>
Content-Type: multipart/alternative; boundary="000000000000f84bc7060f121eeb"

--000000000000f84bc7060f121eeb
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

Le mar. 2 janv. 2024 =C3=A0 21:23, S=C3=A9bastien Chaumat <euidzero@gmail.c=
om> a
=C3=A9crit :

>
>  output of gpioinfo
>>
>> kernel alone :
>>
>>         line   5: unnamed         input active-low consumer=3Dinterrupt
>>         line  84: unnamed         input active-low consumer=3Dinterrupt
>>
>> xen:
>>
>>         line   5: unnamed         input active-low
>>         line  84: unnamed         input active-low
>>
>> xen with skipping IRQ7 double init :
>>
>>         line   5: unnamed         input active-low consumer=3Dinterrupt
>>         line  84: unnamed         input active-low
>>
>>
>> So definitely progressing.
>>
>
> Checking /sys/kernel/irq/7
>
> kernel alone :
>  actions: pinctrl_amd
>  chip_name: IR-IO-APIC
>  hwirq: 7
>  name: fasteoi
>  per_cpu_count: 0,0,0,0,0,20,0,0,0,0,0,0,0,0,0,0
>  type: level
>  wakeup: enabled
>
> xen skipping IRQ7 double init :
>
> actions: pinctrl_amd
>  chip_name: xen-pirq
>  hwirq:
>  name: ioapic-level
>  per_cpu_count: 0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0
>  type: edge
>  wakeup: disabled
>
> So the skip of IRQ7 in pci_xen_initial_domain() sets the correct handler
>  (IIUC xen uses the ioapic-level and handles the eoi separately), but not
> the correct type (still edge).
> I guess this may explains the results above.
>
>
 Mario (in CC) patched the pinctrl_amd to flush pending interrupt before
starting the driver for the GPIO.

This helped in  the sense of there's no more pending interrupt on IRQ7
(whatever the handler is, level or edge) but then the touchpad is not
detected by i2c-hid.

Is there any work in progress related to the incorrect IRQ configuration ?

Thanks,
S=C3=A9bastien

--000000000000f84bc7060f121eeb
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><div dir=3D"auto"><div dir=3D"ltr"><div dir=3D"ltr"><br></=
div><div class=3D"gmail_quote"><div dir=3D"ltr" class=3D"gmail_attr">Le=C2=
=A0mar. 2 janv. 2024 =C3=A0=C2=A021:23, S=C3=A9bastien Chaumat &lt;<a href=
=3D"mailto:euidzero@gmail.com" rel=3D"noreferrer" target=3D"_blank">euidzer=
o@gmail.com</a>&gt; a =C3=A9crit=C2=A0:<br></div><blockquote class=3D"gmail=
_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204=
,204);padding-left:1ex"><div dir=3D"ltr"><br><div class=3D"gmail_quote"><bl=
ockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-lef=
t:1px solid rgb(204,204,204);padding-left:1ex"><div dir=3D"ltr"><div class=
=3D"gmail_quote"><div>=C2=A0output of gpioinfo<br><br>kernel alone :<br><br=
>=C2=A0 =C2=A0 =C2=A0 =C2=A0 line =C2=A0 5:	unnamed =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 	input active-low consumer=3Dinterrupt<br>=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0 line =C2=A084:	unnamed =C2=A0 =C2=A0 =C2=A0 =C2=A0 	inpu=
t active-low consumer=3Dinterrupt<br><br>xen:<br><br>=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0 line =C2=A0 5:	unnamed =C2=A0 =C2=A0 =C2=A0 =C2=A0 	i=
nput active-low<br>=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 line =C2=A084=
:	unnamed =C2=A0 =C2=A0 =C2=A0 =C2=A0 	input active-low<br><br>xen with ski=
pping IRQ7 double init :</div><div><br></div><div>=C2=A0 =C2=A0 =C2=A0 =C2=
=A0 line =C2=A0 5:	unnamed =C2=A0 =C2=A0 =C2=A0 =C2=A0 	input active-low co=
nsumer=3Dinterrupt<br>=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 line =C2=
=A084:	unnamed =C2=A0 =C2=A0 =C2=A0 =C2=A0 	input active-low<br><br><br>So =
definitely progressing.</div></div></div></blockquote><div><br></div><div><=
div>Checking /sys/kernel/irq/7</div><div><br></div><div>kernel alone :<br>=
=C2=A0actions: pinctrl_amd<br>=C2=A0chip_name: IR-IO-APIC<br>=C2=A0hwirq: 7=
<br>=C2=A0name: fasteoi<br>=C2=A0per_cpu_count: 0,0,0,0,0,20,0,0,0,0,0,0,0,=
0,0,0<br>=C2=A0type: level<br>=C2=A0wakeup: enabled</div><div><br></div><di=
v>xen skipping IRQ7 double init :</div><div><br></div><div>actions: pinctrl=
_amd<br>=C2=A0chip_name: xen-pirq<br>=C2=A0hwirq:</div><div>=C2=A0name: ioa=
pic-level<br>=C2=A0per_cpu_count: 0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0<br>=C2=A0=
type: edge<br>=C2=A0wakeup: disabled</div><div><br></div><div>So the skip o=
f IRQ7 in pci_xen_initial_domain() sets the correct handler</div><div>=C2=
=A0(IIUC xen uses the ioapic-level and handles the eoi separately), but not=
 the correct type (still edge).</div><div>I guess this may explains the res=
ults above.</div><div><br></div></div></div></div></blockquote><div><br></d=
iv><div>=C2=A0Mario (in CC) patched the pinctrl_amd to flush pending interr=
upt before starting the driver for the GPIO.</div><div dir=3D"auto"><br></d=
iv><div>This helped in=C2=A0 the sense of there&#39;s no more pending inter=
rupt on IRQ7 (whatever the handler is, level or edge) but then the touchpad=
 is not detected by i2c-hid.</div><div dir=3D"auto"><br></div><div dir=3D"a=
uto">Is there any work in progress related to the incorrect IRQ configurati=
on ?</div><div dir=3D"auto"><br></div><div>Thanks,</div><div>S=C3=A9bastien=
<br></div></div></div></div>
</div>

--000000000000f84bc7060f121eeb--


From xen-devel-bounces@lists.xenproject.org Tue Jan 16 16:09:56 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 16 Jan 2024 16:09:56 +0000
Received: from list by lists.xenproject.org with outflank-mailman.667845.1039515 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPm0c-0007za-FP; Tue, 16 Jan 2024 16:09:50 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 667845.1039515; Tue, 16 Jan 2024 16:09:50 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPm0c-0007zT-Cv; Tue, 16 Jan 2024 16:09:50 +0000
Received: by outflank-mailman (input) for mailman id 667845;
 Tue, 16 Jan 2024 16:09:49 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=MjSB=I2=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rPm0b-0007zN-1l
 for xen-devel@lists.xenproject.org; Tue, 16 Jan 2024 16:09:49 +0000
Received: from mail-lj1-x22b.google.com (mail-lj1-x22b.google.com
 [2a00:1450:4864:20::22b])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id ab8906d8-b489-11ee-98f1-6d05b1d4d9a1;
 Tue, 16 Jan 2024 17:09:47 +0100 (CET)
Received: by mail-lj1-x22b.google.com with SMTP id
 38308e7fff4ca-2cdb50d8982so30890761fa.2
 for <xen-devel@lists.xenproject.org>; Tue, 16 Jan 2024 08:09:47 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 n15-20020a5e8c0f000000b007bf60293ea3sm145171ioj.9.2024.01.16.08.09.45
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 16 Jan 2024 08:09:46 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: ab8906d8-b489-11ee-98f1-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1705421387; x=1706026187; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=XPWajAfCByrDeumb5zJNtaMGK4gS/onriFTtCLTohA0=;
        b=Ykj8xjtavax+7zHQdxK63FVMXwqPcPLuQ4myfFrn5a//VUN5r2JUKL4/z+HQ6qyQ5h
         9Z/5KUNQwgLJtWmCD7VIuSvomnjcNvM3JZCs1CZxqaoTNqbWvsR96L78YejwBXYuAOeH
         atSghYd9kmfGdyMsZMo4Y1FAqWI7nkrV3v+oDpjDf6oNk4MVDfH3cM+LVbdpzquZXaJT
         5DQgJmWvkOcPIjfJnuzLN89Jb+6ce+qyTVxnym7cx5sY3WIIuV9GrPelNcMvE2sVj9pL
         V2Lfs19D57u+cKYX3ioUzhdUcNHZYZpsmn7P9CxCe5hhXs0cNtABnvx+q3/dHGPsFKk+
         ruGw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705421387; x=1706026187;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=XPWajAfCByrDeumb5zJNtaMGK4gS/onriFTtCLTohA0=;
        b=MsMh1m9c+jhcRtxV0JGYWHnpr+nIzNEDeCurMWO9+v+/9moYuCaQOAGN+qgAs4lWgh
         xCK5Vb/+iLyOh+jS/ApvjjLRUEDEMJDSMCgXjFatpcLTabONlCict2e8JGLUsH8lD5NF
         6uw8SMRit/wsbw0Jco6Y41XhhL4+vNAQ7T6qF083Oo46dgsONbFqsNCMFvrELAoqwGQ/
         EX8z1B5xGZ/ObGAZPaTK1J1oViOwF9GlXuZbZghErhCDfgaUg7KzT/G957lZ1Qi85I0P
         idustnxUwjr+XaRM/8sbtaY4X2Ds7l8nPHDnwp7r5lY3G63mXElLFAATRYFFUc9XjOrO
         +DRQ==
X-Gm-Message-State: AOJu0YwqNpu8MdRIfTZNgIeE5b0ETe4wJg5gMsSxmgAp0R2prCsdZ+Qi
	fCTl5oCEbUB0I8oy/DZF90DZAyNQES59
X-Google-Smtp-Source: AGHT+IEVYDnz+3IktX+A6A7sMI+eSg1oSSiRAyHJ/DKJh9BJGwVywZ3EcETBc9642cAd+1w6NIPFqg==
X-Received: by 2002:a2e:9e4b:0:b0:2cd:299e:bd28 with SMTP id g11-20020a2e9e4b000000b002cd299ebd28mr3295472ljk.59.1705421387250;
        Tue, 16 Jan 2024 08:09:47 -0800 (PST)
Message-ID: <39c97d1e-05f5-46b1-a242-7fc8d5639af5@suse.com>
Date: Tue, 16 Jan 2024 17:09:43 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 14/34] xen/riscv: introduce io.h
Content-Language: en-US
To: Oleksii <oleksii.kurochko@gmail.com>
Cc: Alistair Francis <alistair.francis@wdc.com>,
 Bob Eshleman <bobbyeshleman@gmail.com>, Connor Davis
 <connojdavis@gmail.com>, Andrew Cooper <andrew.cooper3@citrix.com>,
 George Dunlap <george.dunlap@citrix.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>,
 xen-devel@lists.xenproject.org
References: <cover.1703255175.git.oleksii.kurochko@gmail.com>
 <5d2c032481792a3fe5bd5f1cae42d95f6e9b54b1.1703255175.git.oleksii.kurochko@gmail.com>
 <895a60ba-547c-4064-9e4b-4ebf07dea5fb@suse.com>
 <c9977188e834f15e84d785e6cc1dc51d49da63d2.camel@gmail.com>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <c9977188e834f15e84d785e6cc1dc51d49da63d2.camel@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 16.01.2024 16:20, Oleksii wrote:
> On Mon, 2024-01-15 at 17:57 +0100, Jan Beulich wrote:
>> On 22.12.2023 16:12, Oleksii Kurochko wrote:
>>> +/*
>>> + * Unordered I/O memory access primitives.  These are even more
>>> relaxed than
>>> + * the relaxed versions, as they don't even order accesses between
>>> successive
>>> + * operations to the I/O regions.
>>> + */
>>> +#define readb_cpu(c)		({ u8  __r = __raw_readb(c); __r;
>>> })
>>> +#define readw_cpu(c)		({ u16 __r = le16_to_cpu((__force
>>> __le16)__raw_readw(c)); __r; })
>>> +#define readl_cpu(c)		({ u32 __r = le32_to_cpu((__force
>>> __le32)__raw_readl(c)); __r; })
>>> +
>>> +#define
>>> writeb_cpu(v,c)		((void)__raw_writeb((v),(c)))
>>> +#define
>>> writew_cpu(v,c)		((void)__raw_writew((__force u16)cpu_to_le16(v),(c)))
>>> +#define
>>> writel_cpu(v,c)		((void)__raw_writel((__force u32)cpu_to_le32(v),(c)))
>>> +
>>> +#ifdef CONFIG_64BIT
>>> +#define readq_cpu(c)		({ u64 __r = le64_to_cpu((__force
>>> __le64)__raw_readq(c)); __r; })
>>> +#define
>>> writeq_cpu(v,c)		((void)__raw_writeq((__force u64)cpu_to_le64(v),(c)))
>>> +#endif
>>
>> How come there are endianness assumptions here on the MMIO accessed?
> It is a hard story.
> 
> As you might expect it was copy from Linux Kernel where it was decided
> to follow only LE way:
> https://patchwork.kernel.org/project/linux-riscv/patch/20190411115623.5749-3-hch@lst.de/
> One of the answers of the author of the commit:
>     And we don't know if Linux will be around if that ever changes.
>     The point is:
>      a) the current RISC-V spec is LE only
>      b) the current linux port is LE only except for this little bit
>     There is no point in leaving just this bitrotting code around.  It
>     just confuses developers, (very very slightly) slows down compiles
>     and will bitrot.  It also won't be any significant help to a future
>     developer down the road doing a hypothetical BE RISC-V Linux port.

Reads to me like a justification to _omit_ the cpu_to_le<N>().

Jan


From xen-devel-bounces@lists.xenproject.org Tue Jan 16 16:18:10 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 16 Jan 2024 16:18:10 +0000
Received: from list by lists.xenproject.org with outflank-mailman.667854.1039526 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPm8b-0001kW-CW; Tue, 16 Jan 2024 16:18:05 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 667854.1039526; Tue, 16 Jan 2024 16:18:05 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPm8b-0001kP-8p; Tue, 16 Jan 2024 16:18:05 +0000
Received: by outflank-mailman (input) for mailman id 667854;
 Tue, 16 Jan 2024 16:18:04 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=MjSB=I2=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rPm8a-0001kJ-8R
 for xen-devel@lists.xenproject.org; Tue, 16 Jan 2024 16:18:04 +0000
Received: from mail-wr1-x432.google.com (mail-wr1-x432.google.com
 [2a00:1450:4864:20::432])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id d2d551b8-b48a-11ee-98f1-6d05b1d4d9a1;
 Tue, 16 Jan 2024 17:18:03 +0100 (CET)
Received: by mail-wr1-x432.google.com with SMTP id
 ffacd0b85a97d-337b583453bso677467f8f.2
 for <xen-devel@lists.xenproject.org>; Tue, 16 Jan 2024 08:18:03 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 a14-20020a056000100e00b003371e7113d4sm14880384wrx.24.2024.01.16.08.18.02
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 16 Jan 2024 08:18:02 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: d2d551b8-b48a-11ee-98f1-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1705421882; x=1706026682; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=R0WcANJNpKhRuw+mmHBLk5Gzs0zDll/Cs9N/rtXlcvg=;
        b=c6MGMcYEha+/K+z/EW3QNCpEO4+wIGUze/5XL3JXs98YoICelmsG1+SmjiiO+fZkG8
         2CZvXNPn2tJJuA+2xNJpqII40SFTkZZ4xVJxHQ+cGlM1OOfDFv7YKdmxBkUuRSV+vjEH
         mU/DjcGqJGqHD+G+h1RJ0yOjRmDzeCHM14234SDGnx6UTMN2mP7uwoA006SJLXZK/UO1
         MofN3j+rmFLQw1SCiEpWy6+moab90CpmV8AmuZ01fnGkolmGzaGKLa5P4V4cilOe/LEe
         v9EeSYbQ0ioqBfgtyz6rhJ4BDudFWu/PrqiyZSxj1f1OmfP15HCvOvP63dSGk8FVu1Wg
         HaIQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705421882; x=1706026682;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=R0WcANJNpKhRuw+mmHBLk5Gzs0zDll/Cs9N/rtXlcvg=;
        b=fMfDo3TSEKlUNj4NhVuq9xXo/8NhjlGz5XP1RfoJIuGCK86jujfDubrm523RfBrHUU
         6LEu0yg35zq0Vzz3msidlkg/4A+7D2DNnKqTtVj7hdMrGe1TP470Sd5L/wqy83cpa0X4
         7uKZ/xYc1kdOCk/L2I9cLX/a01K4sUepNKHWvFsL+1bTCm2ca6OP/fxisuV6dmAtnJTK
         nhixB1y2D+nzDu6TT/X4rUTbab+/ZiqRnZEPz6CxpktZT7anfL4JdxuAX8TnxyyxrRPq
         fQUm/Hc8NbEXxnAw/CmNwhGt6MX4SFUble5gHYmXnncPc3DJDlJZxvXZ4q6a7EFAkM53
         xe1Q==
X-Gm-Message-State: AOJu0Yxy0rUIlKl12/0Gz4/+7OL5ZCskyHbwdMEsKH/qufQkyoOZradl
	3uN7qv2/+p+hj2LyJUqK4jvu7YrKCQoR
X-Google-Smtp-Source: AGHT+IFt/bS0sgXmLSQG+8S3z2Jz3jX91jtMtJEdqqiuTJ6eUm54dNKeg3RsxMBNOxAYeJOeFBgR7w==
X-Received: by 2002:a5d:45cb:0:b0:337:5b58:9a7e with SMTP id b11-20020a5d45cb000000b003375b589a7emr2820124wrs.67.1705421882611;
        Tue, 16 Jan 2024 08:18:02 -0800 (PST)
Message-ID: <77c1c05d-a0a0-4292-9257-9b7fbebee0e3@suse.com>
Date: Tue, 16 Jan 2024 17:18:01 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [BUG]i2c_hid_acpi broken with 4.17.2 on Framework Laptop 13 AMD
Content-Language: en-US
To: =?UTF-8?Q?S=C3=A9bastien_Chaumat?= <euidzero@gmail.com>
Cc: xen-devel@lists.xenproject.org, Juergen Gross <jgross@suse.com>,
 Mario Limonciello <mario.limonciello@amd.com>
References: <CAKm-Umas=5=JzooRzPHxUDigKpFK3Ze7cQcG8eR5kWgn-d_7fQ@mail.gmail.com>
 <CAKm-UmYZcsY=C2Yhmy_EeZi0iAguVH0Eqy83upBLa_ikQtPwnw@mail.gmail.com>
 <CAKm-Umapq5LW9yhSOGk8TOg1iuvUogUDKbEXbUcE5T5-vVzW3w@mail.gmail.com>
 <CAKm-UmaUZ=rj-F3RvMoR7H3OvBHm1iy4PTRZAjyi=MQUVTuYVg@mail.gmail.com>
 <CAKm-Umat77MTh6=GEuH+bf1WRX+_B4-N5hY4xwADALfhj4QCPA@mail.gmail.com>
 <6ba9568a-ff8e-48ad-907f-74303e04d3a2@suse.com>
 <CAKm-UmZVoUhidEV15Xk+J_XN5a2GsBqMbXL9wqdFdoAFf_u5AA@mail.gmail.com>
 <bcbceba7-42ac-45be-80ab-e3dfe7741ec6@suse.com>
 <2eafe45b-fd97-472c-a173-459d6ff0b957@suse.com>
 <CAKm-Umbs2D7NHFE+NW2xKOu7-AZhFpH4uzE5QTuQusnGA_eNWA@mail.gmail.com>
 <f539144c-885a-461c-a506-bdb73e626a65@suse.com>
 <CAKm-UmY126AfdGhWcZ3s9vwN9+ksVRRFEhOu0ZFMoDvxrqOibw@mail.gmail.com>
 <CAKm-UmYt3iV8zOhSmtqMGhi_8T93c_nCbnefs4m3UC+3UABqeQ@mail.gmail.com>
 <CAKm-UmY-KXEAtBagikW4Jvp=SFXtmEg8P62pHfSo3Hr2s-0_-A@mail.gmail.com>
 <CAKm-UmYbMCfXc1Ny0=qfB+UaLSXV9oEHZiSgS=mwKMwmOFGVrQ@mail.gmail.com>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <CAKm-UmYbMCfXc1Ny0=qfB+UaLSXV9oEHZiSgS=mwKMwmOFGVrQ@mail.gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 16.01.2024 16:52, Sébastien Chaumat wrote:
> Le mar. 2 janv. 2024 à 21:23, Sébastien Chaumat <euidzero@gmail.com> a
> écrit :
> 
>>
>>  output of gpioinfo
>>>
>>> kernel alone :
>>>
>>>         line   5: unnamed         input active-low consumer=interrupt
>>>         line  84: unnamed         input active-low consumer=interrupt
>>>
>>> xen:
>>>
>>>         line   5: unnamed         input active-low
>>>         line  84: unnamed         input active-low
>>>
>>> xen with skipping IRQ7 double init :
>>>
>>>         line   5: unnamed         input active-low consumer=interrupt
>>>         line  84: unnamed         input active-low
>>>
>>>
>>> So definitely progressing.
>>>
>>
>> Checking /sys/kernel/irq/7
>>
>> kernel alone :
>>  actions: pinctrl_amd
>>  chip_name: IR-IO-APIC
>>  hwirq: 7
>>  name: fasteoi
>>  per_cpu_count: 0,0,0,0,0,20,0,0,0,0,0,0,0,0,0,0
>>  type: level
>>  wakeup: enabled
>>
>> xen skipping IRQ7 double init :
>>
>> actions: pinctrl_amd
>>  chip_name: xen-pirq
>>  hwirq:
>>  name: ioapic-level
>>  per_cpu_count: 0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0
>>  type: edge
>>  wakeup: disabled
>>
>> So the skip of IRQ7 in pci_xen_initial_domain() sets the correct handler
>>  (IIUC xen uses the ioapic-level and handles the eoi separately), but not
>> the correct type (still edge).
>> I guess this may explains the results above.
>>
>>
>  Mario (in CC) patched the pinctrl_amd to flush pending interrupt before
> starting the driver for the GPIO.
> 
> This helped in  the sense of there's no more pending interrupt on IRQ7
> (whatever the handler is, level or edge) but then the touchpad is not
> detected by i2c-hid.
> 
> Is there any work in progress related to the incorrect IRQ configuration ?

I'm not aware of any. As per my recollection it's still not entirely
clear where in the kernel things go astray. And to be honest I don't
feel comfortable trying to half-blindly address this, e.g. by trying
to circumvent / defer the early setting up of the low 16 IRQs.

Jan


From xen-devel-bounces@lists.xenproject.org Tue Jan 16 16:23:33 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 16 Jan 2024 16:23:33 +0000
Received: from list by lists.xenproject.org with outflank-mailman.667857.1039536 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPmDf-0003ph-Ve; Tue, 16 Jan 2024 16:23:19 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 667857.1039536; Tue, 16 Jan 2024 16:23:19 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPmDf-0003pa-SJ; Tue, 16 Jan 2024 16:23:19 +0000
Received: by outflank-mailman (input) for mailman id 667857;
 Tue, 16 Jan 2024 16:23:18 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=/Syk=I2=cloud.com=kelly.choi@srs-se1.protection.inumbo.net>)
 id 1rPmDe-0003pK-Du
 for xen-devel@lists.xenproject.org; Tue, 16 Jan 2024 16:23:18 +0000
Received: from mail-ed1-x52a.google.com (mail-ed1-x52a.google.com
 [2a00:1450:4864:20::52a])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 8cb14a9f-b48b-11ee-9b0f-b553b5be7939;
 Tue, 16 Jan 2024 17:23:15 +0100 (CET)
Received: by mail-ed1-x52a.google.com with SMTP id
 4fb4d7f45d1cf-559c0bfcd59so473354a12.1
 for <xen-devel@lists.xenproject.org>; Tue, 16 Jan 2024 08:23:15 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 8cb14a9f-b48b-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1705422194; x=1706026994; darn=lists.xenproject.org;
        h=cc:to:subject:message-id:date:from:in-reply-to:references
         :mime-version:from:to:cc:subject:date:message-id:reply-to;
        bh=SgRxYqdXM1quSO/y9E/+N6LzCx+oDdi1r5uEP/2Mp+Y=;
        b=OPTL1GM+MemHILSVQOhbrkYegO7UB5gZHcjckgn/kJm1Gvtvb3pI6xFZALpMcOMKvl
         JF8zFtJ+HVIUwdUUaKaJ8z/+RZHFBtcN/pgVFRHUZkD4Fd7NMFUxttEg8xFuRrR7yh61
         inEqpXdHnsofgn/8kYt43/m7ti/cjGk653+fU=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705422194; x=1706026994;
        h=cc:to:subject:message-id:date:from:in-reply-to:references
         :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id
         :reply-to;
        bh=SgRxYqdXM1quSO/y9E/+N6LzCx+oDdi1r5uEP/2Mp+Y=;
        b=VXRb8PGE1/tJeUYoEX0M6KkdZ9GDU8RGMpB1OCTnPDTCX8KZfjJBymNC17cl34OVb+
         WIf0qefotnvLDnlK91Jy8mUpvdMsMeaY/ltrUtUjBCckmEpo+tN2lCspYUswKsbqKeO9
         AXIxJYOhbQ1HE7jaty8qzLcxo7vPBc4IEklGFPAdwI9qA/swUsBYYZO6J8JLH+C97m7u
         Z3k4Sbm7kp4uDjwWODt476dHeUpb5H5M6oIODG3QVltcVp6JCas0nGkGyZSjuC+0IUwT
         B2gNlevEUxYJzheyrkKb1P5YatsiBzJF0dz6ajhivwBvFbjWO/MuuhOopIA1deuSQw4/
         8peQ==
X-Gm-Message-State: AOJu0YzSQjcy02Q7/xIrBxIm5fj2h3QfNWL3FcwUGdrr8u2Xv0MSuJuk
	q3BoIQUA0QoEjs91fgAj0tyi95lInQH+O+2dIkSJ8gMttgLegWvz/Ad/A/zGmPY=
X-Google-Smtp-Source: AGHT+IF1QkuGs5oiDkLHFp8ZGVNuSTiS7B04bR+CONEBR7EBSbyivLCu7+dAx8ZdXsvzDWDBWKTgRTGDRxBA/9XmsYc=
X-Received: by 2002:a05:6402:27c8:b0:558:fbad:f98c with SMTP id
 c8-20020a05640227c800b00558fbadf98cmr2713872ede.80.1705422194329; Tue, 16 Jan
 2024 08:23:14 -0800 (PST)
MIME-Version: 1.0
References: <CAO-mL=yuK+t344CBL+KLFKUFc1kLfyj-eJxtHQ4t5Ltw777vFA@mail.gmail.com>
In-Reply-To: <CAO-mL=yuK+t344CBL+KLFKUFc1kLfyj-eJxtHQ4t5Ltw777vFA@mail.gmail.com>
From: Kelly Choi <kelly.choi@cloud.com>
Date: Tue, 16 Jan 2024 16:22:38 +0000
Message-ID: <CAO-mL=ypHd_wAMYXz+x+YPRdPENiocC2f0reM5NMjzW0Tk+sUA@mail.gmail.com>
Subject: Re: Xen Project Annual Survey
To: xen-devel@lists.xenproject.org, xen-users@lists.xenproject.org, 
	xen-announce@lists.xenproject.org
Cc: committers@xenproject.org
Content-Type: multipart/alternative; boundary="00000000000015e5fe060f128c70"

--00000000000015e5fe060f128c70
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

Hi all,

A reminder to fill out the Xen Project Annual survey!

Many thanks,
Kelly Choi

Community Manager
Xen Project


On Tue, Jan 9, 2024 at 1:21=E2=80=AFPM Kelly Choi <kelly.choi@cloud.com> wr=
ote:

> Happy New Year Xen Community,
>
> As we start the New Year, I'd like to ask you to reflect on how the
> project went in 2023. This will help us track the health of the community
> and also give you a chance to express your ideas and feedback.
>
> The survey can be answered anonymously and should take less than 10
> minutes.
>
> *Link: https://cryptpad.fr/form/#/2/form/view/uG22fJfe8UILyP9+jJ-YesXsINK=
MZRpuWh2c58bhBYI/
> <https://cryptpad.fr/form/#/2/form/view/uG22fJfe8UILyP9+jJ-YesXsINKMZRpuW=
h2c58bhBYI/> *
> *Deadline: 31st January 2024. *
>
> Many thanks,
> Kelly Choi
>
> Community Manager
> Xen Project
>

--00000000000015e5fe060f128c70
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><div dir=3D"ltr">Hi all,</div><div dir=3D"ltr"><br></div><=
div dir=3D"ltr">A reminder to fill out the Xen Project Annual survey!=C2=A0=
</div><div dir=3D"ltr"><br clear=3D"all"><div><div dir=3D"ltr" class=3D"gma=
il_signature"><div dir=3D"ltr"><div>Many thanks,</div><div>Kelly Choi</div>=
<div><br></div><div><div style=3D"color:rgb(136,136,136)">Community Manager=
</div><div style=3D"color:rgb(136,136,136)">Xen Project=C2=A0<br></div></di=
v></div></div></div><br></div><br><div class=3D"gmail_quote"><div dir=3D"lt=
r" class=3D"gmail_attr">On Tue, Jan 9, 2024 at 1:21=E2=80=AFPM Kelly Choi &=
lt;<a href=3D"mailto:kelly.choi@cloud.com">kelly.choi@cloud.com</a>&gt; wro=
te:<br></div><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px =
0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir=3D"=
ltr">Happy New Year Xen Community,<div><br></div><div>As we start the New Y=
ear, I&#39;d like to ask you to reflect on how the project went in 2023. Th=
is will help us track the health of the community and also give you a chanc=
e to express your ideas and feedback.=C2=A0</div><div><br></div><div>The su=
rvey can be answered anonymously and should take less than 10 minutes.</div=
><div><br></div><div><b>Link:=C2=A0<a href=3D"https://cryptpad.fr/form/#/2/=
form/view/uG22fJfe8UILyP9+jJ-YesXsINKMZRpuWh2c58bhBYI/" target=3D"_blank">h=
ttps://cryptpad.fr/form/#/2/form/view/uG22fJfe8UILyP9+jJ-YesXsINKMZRpuWh2c5=
8bhBYI/</a>=C2=A0</b></div><div><b>Deadline: 31st January 2024.=C2=A0</b></=
div><div><br></div><div><div><div dir=3D"ltr" class=3D"gmail_signature"><di=
v dir=3D"ltr"><div>Many thanks,</div><div>Kelly Choi</div><div><br></div><d=
iv><div style=3D"color:rgb(136,136,136)">Community Manager</div><div style=
=3D"color:rgb(136,136,136)">Xen Project=C2=A0<br></div></div></div></div></=
div></div></div>
</blockquote></div></div>

--00000000000015e5fe060f128c70--


From xen-devel-bounces@lists.xenproject.org Tue Jan 16 16:32:15 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 16 Jan 2024 16:32:15 +0000
Received: from list by lists.xenproject.org with outflank-mailman.667896.1039561 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPmMD-00076l-7s; Tue, 16 Jan 2024 16:32:09 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 667896.1039561; Tue, 16 Jan 2024 16:32:09 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPmMD-00076e-5D; Tue, 16 Jan 2024 16:32:09 +0000
Received: by outflank-mailman (input) for mailman id 667896;
 Tue, 16 Jan 2024 16:32:08 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=gvQ1=I2=gmail.com=oleksii.kurochko@srs-se1.protection.inumbo.net>)
 id 1rPmMC-00076Y-Dz
 for xen-devel@lists.xenproject.org; Tue, 16 Jan 2024 16:32:08 +0000
Received: from mail-ej1-x629.google.com (mail-ej1-x629.google.com
 [2a00:1450:4864:20::629])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id ca208817-b48c-11ee-98f1-6d05b1d4d9a1;
 Tue, 16 Jan 2024 17:32:07 +0100 (CET)
Received: by mail-ej1-x629.google.com with SMTP id
 a640c23a62f3a-a2d04888d3dso431179366b.2
 for <xen-devel@lists.xenproject.org>; Tue, 16 Jan 2024 08:32:07 -0800 (PST)
Received: from [192.168.206.239] ([94.75.70.14])
 by smtp.gmail.com with ESMTPSA id
 bl2-20020a170906c24200b00a29d232ab76sm6632041ejb.182.2024.01.16.08.32.05
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 16 Jan 2024 08:32:06 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: ca208817-b48c-11ee-98f1-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1705422727; x=1706027527; darn=lists.xenproject.org;
        h=mime-version:user-agent:content-transfer-encoding:date:cc:to:from
         :subject:message-id:from:to:cc:subject:date:message-id:reply-to;
        bh=pYSpP5C7P5CRoiCT6m2fIVJTuOz33kHURU8Py9UHHp4=;
        b=YUUyg5oogEtULVR5nH3hzuPLmeH5ntUZnuS7IuE09TS97v6RrFUb3+p9IfsA1iwy2V
         Kss9CTn5OUJi8aAZCVJpu/bKh2KG/BGCbyMU4BNnscsSm4K6cQi49zZJjmV33GW/RJeT
         HSJuBUYhuMKzpWQ37Dv3sgRm7YxfSAq0zKVKKiYur6OYdt/Tym1ygsxMjEUnhmwrWkQP
         BUQmMXUZHfEBm+gu15fdSVRLBMq39ASxbkrdUbE+DbHG4lerz3Tfi09kTHOGI16Z8Yi2
         +oiatHp6HQ4PT+zingWheOz4QK6f71MSQAkiTILbTweyQUTJ8i4NHbC+f8IHQIkKN61r
         dr9A==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705422727; x=1706027527;
        h=mime-version:user-agent:content-transfer-encoding:date:cc:to:from
         :subject:message-id:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to;
        bh=pYSpP5C7P5CRoiCT6m2fIVJTuOz33kHURU8Py9UHHp4=;
        b=M6ff7CizDf4DbJYiqzrwBBdhXR8i2O+upeyIAhK0AQlnvXjjrBBg//5OA3C2Lg6wft
         jbZb6LicDBRfaGm1ls7Fl2uArsJWuzlQn6bsjIZKdyrDHhOS5/gWgceLJApdz511DgZW
         xM2mF6fG0zAgt8nsyyYOCTVSRAJm6m7k7cff/z+csygxWpsfUKVWSWjR4aXMNoiOdZnR
         YlYWPPdOXewfXBmkaOqfV1rl01KR3a8qpNUePkab36A7pS8DDFCUyZOOtrGH/TKKVmEc
         AXrUjbWjNorpwEGlCzloTkElCnGzOkMaMUw7qfoAUlXZd7Ts5cwZ3HPoY9ePDK8I/yXZ
         ol3Q==
X-Gm-Message-State: AOJu0YwGBpfVCr600TMM+iVWam3Zz07GP+c9KZf/qn/Mji58rjF+iB2D
	vs+phZ6PV8EPkSUT+GoqYdDpra5euac=
X-Google-Smtp-Source: AGHT+IGjy/zlIkV6wg9/2cVTbBYPWnR64Nv3F19z5y4t2tpwUct5gxQadktnCv+fCdVxP5eVLdXk9g==
X-Received: by 2002:a17:907:a0d4:b0:a2d:b74b:26a8 with SMTP id hw20-20020a170907a0d400b00a2db74b26a8mr1984277ejc.77.1705422726525;
        Tue, 16 Jan 2024 08:32:06 -0800 (PST)
Message-ID: <08a2f9bdd7ba1f9e1e8e67fdb48420ee89223b01.camel@gmail.com>
Subject: Xen 4.19 release management plan
From: Oleksii <oleksii.kurochko@gmail.com>
To: xen-devel@lists.xenproject.org
Cc: Kelly Choi <kelly.choi@cloud.com>, Jan Beulich <jbeulich@suse.com>, 
 Andrew Cooper <andrew.cooper3@citrix.com>, Christopher Clark
 <christopher.w.clark@gmail.com>, Stefano Stabellini
 <sstabellini@kernel.org>, Julien Grall <julien@xen.org>, Bertrand Marquis
 <bertrand.marquis@arm.com>, Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
  Rahul Singh <rahul.singh@arm.com>, Henry Wang <Henry.Wang@arm.com>,
 community.manager@xenproject.org,  cardoe@cardoe.com, jgross@suse.com,
 dpsmith@apertussolutions.com, Anthony PERARD <anthony.perard@citrix.com>,
 Wei Liu <wl@xen.org>, Tamas K Lengyel <tamas@tklengyel.com>, Roger Pau
 =?ISO-8859-1?Q?Monn=E9?= <roger.pau@citrix.com>,  George Dunlap
 <george.dunlap@citrix.com>, Luca Fancellu <luca.fancellu@arm.com>, "Daniel
 P. Smith" <dpsmith@apertussolutions.com>, committers@xenproject.org
Date: Tue, 16 Jan 2024 18:32:04 +0200
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
User-Agent: Evolution 3.50.2 (3.50.2-1.fc39) 
MIME-Version: 1.0

Hello everyone,

I would like to start tracking which features and changes are expected
in Xen 4.19 for each architecture.

Please reply with items you would like to see in 4.19 so that people
know what is happening and prioritize accordingly.
You're welcome to provide a description and use cases of the feature
you're working on.

On my side:

 RISC-V:
  - full Xen build
  - Dom0 boot ( let me be optimistic. Probably, I have to divide this=20
into small parts. and track them separately ).

 x86:
  - Finish and start sending AMD SEV patches ( note: this is being   =20
developed by my colleagues at Vates, not me ).
    We are currently on phase one:
https://www.mail-archive.com/xen-devel@lists.xenproject.org/msg156388.html
.

Thanks in advance for your cooperation.

I hope you have a nice week.

Best regards,
  Oleksii



From xen-devel-bounces@lists.xenproject.org Tue Jan 16 16:48:24 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 16 Jan 2024 16:48:24 +0000
Received: from list by lists.xenproject.org with outflank-mailman.667900.1039572 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPmbm-00026u-K0; Tue, 16 Jan 2024 16:48:14 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 667900.1039572; Tue, 16 Jan 2024 16:48:14 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPmbm-00026m-Fx; Tue, 16 Jan 2024 16:48:14 +0000
Received: by outflank-mailman (input) for mailman id 667900;
 Tue, 16 Jan 2024 16:48:13 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=MjSB=I2=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rPmbl-00026f-Bg
 for xen-devel@lists.xenproject.org; Tue, 16 Jan 2024 16:48:13 +0000
Received: from mail-lj1-x22a.google.com (mail-lj1-x22a.google.com
 [2a00:1450:4864:20::22a])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 08450ca0-b48f-11ee-9b0f-b553b5be7939;
 Tue, 16 Jan 2024 17:48:10 +0100 (CET)
Received: by mail-lj1-x22a.google.com with SMTP id
 38308e7fff4ca-2cd1ca52f31so116906931fa.3
 for <xen-devel@lists.xenproject.org>; Tue, 16 Jan 2024 08:48:10 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 a42-20020a02942d000000b0046e0e9912e1sm3084180jai.69.2024.01.16.08.48.09
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 16 Jan 2024 08:48:09 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 08450ca0-b48f-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1705423690; x=1706028490; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=+pGlmAJZl9SvF2jmwQO8TaHaxg2x/corVtqdAgPzVDE=;
        b=ZQalvQtxIREivdFF88XWumwe/GgnMwi0SUsdAmww8Uw9UKOwep/jTDy/Xifm2pRJtO
         Wq59BojnSvnHXRxbVaw5Xq7lCsJcABNXRHWB69U62sGZ9SrxU+ga3gIBq7HKeNDlfsWP
         TTA6UJzyj171Xpnhdtu6x/tdJDsAA9Q+y+oQTaUDCFvLmr9SQQPLgbkbA64rggea0lwA
         9DUOb+g0JtZ5f1QDOTd9s6lRAzOeEVEcxmMXrLpZJxc6GGJcVrEBoDu1CoEE8dk8eoZ8
         Lf9N21OlCZYNmAg2V0tePHmc3uSHz4VbJWmVHb+HpUAwzZmJPsYquxOPN79Lcm1kNN2T
         mK2Q==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705423690; x=1706028490;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=+pGlmAJZl9SvF2jmwQO8TaHaxg2x/corVtqdAgPzVDE=;
        b=Qrogm4IZACyzg/+qELYhRloxvgzUAUbNzFTRjXj5U79GconT2kUfFmfSNPuOJJVEDM
         FzNJI6sDxt4UcJPWIOsOS5YXIaLyg9USoQEQkPlJkOwp9qjzrdbgvFfwgQ72qyZbYVb4
         2EyslIW8Nmf9GUGJookzD2kcZtI+/PU/r5ec00AccP31MX9mLt7zCTpS1Sm+G7no/kic
         lnbbiaHBhSI/uT5Yrpp77xpiRweP0q2Rjm232Vgf8EiswCchjhnR26yqKKw/+BWbrH0w
         GwRKc9W2LCLWML2pawXR0Tr1SdJu0mBBkqlQ49rWemI3bf6OopZSmW/TXW3WrQ6aWIuk
         sxbQ==
X-Gm-Message-State: AOJu0YyPURy/y5IwHoOrCi2WKfot6VD/QTh1hgTIIo2WlBcS9Xqxovgf
	jnVSXEZa8hwgZy5EyAzhI1hYxGwISlso
X-Google-Smtp-Source: AGHT+IG8QfhtGIEfyfzLkikIWAJIQOYr+TocF5AkYZ4QW1b+4kO9VeAFuhgJbpxuaX7VBTPFZ81mtw==
X-Received: by 2002:a2e:9e93:0:b0:2cc:5cf8:13d with SMTP id f19-20020a2e9e93000000b002cc5cf8013dmr3095308ljk.102.1705423690329;
        Tue, 16 Jan 2024 08:48:10 -0800 (PST)
Message-ID: <5e74a501-2824-42af-804b-47b515aa9bcf@suse.com>
Date: Tue, 16 Jan 2024 17:48:07 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: Xen 4.19 release management plan
Content-Language: en-US
To: Oleksii <oleksii.kurochko@gmail.com>
Cc: xen-devel@lists.xenproject.org
References: <08a2f9bdd7ba1f9e1e8e67fdb48420ee89223b01.camel@gmail.com>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <08a2f9bdd7ba1f9e1e8e67fdb48420ee89223b01.camel@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

(reducing Cc list)

On 16.01.2024 17:32, Oleksii wrote:
> Please reply with items you would like to see in 4.19 so that people
> know what is happening and prioritize accordingly.
> You're welcome to provide a description and use cases of the feature
> you're working on.

The "annotate entry points with type and size" series including as many
as possible follow-ups on the x86 and Arm side, ideally bringing both
architectures fully in shape for the new model.

On x86,
- among smaller scope ISA extension work we probably want to make
  sure AVX10.1 is going to be usable by guests (patches already posted),
- "x86: memcpy() / memset() (non-)ERMS flavors plus fallout"

There's likely more, but let's go with this for now.

Jan


From xen-devel-bounces@lists.xenproject.org Tue Jan 16 16:53:52 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 16 Jan 2024 16:53:52 +0000
Received: from list by lists.xenproject.org with outflank-mailman.667903.1039582 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPmhA-0004Iq-64; Tue, 16 Jan 2024 16:53:48 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 667903.1039582; Tue, 16 Jan 2024 16:53:48 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPmhA-0004Ij-3M; Tue, 16 Jan 2024 16:53:48 +0000
Received: by outflank-mailman (input) for mailman id 667903;
 Tue, 16 Jan 2024 16:53:46 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=MjSB=I2=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rPmh8-0004Fe-3p
 for xen-devel@lists.xenproject.org; Tue, 16 Jan 2024 16:53:46 +0000
Received: from mail-lf1-x134.google.com (mail-lf1-x134.google.com
 [2a00:1450:4864:20::134])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id cf51b44b-b48f-11ee-98f1-6d05b1d4d9a1;
 Tue, 16 Jan 2024 17:53:44 +0100 (CET)
Received: by mail-lf1-x134.google.com with SMTP id
 2adb3069b0e04-50eaabc36bcso12448205e87.2
 for <xen-devel@lists.xenproject.org>; Tue, 16 Jan 2024 08:53:44 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 o4-20020a92c684000000b0035fec5419a1sm3653344ilg.16.2024.01.16.08.53.42
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 16 Jan 2024 08:53:43 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: cf51b44b-b48f-11ee-98f1-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1705424024; x=1706028824; darn=lists.xenproject.org;
        h=content-transfer-encoding:autocrypt:subject:from:cc:to
         :content-language:user-agent:mime-version:date:message-id:from:to:cc
         :subject:date:message-id:reply-to;
        bh=KNWDMti/5OC6TyJo8byrqi6FeWcTeKmy3eyd/Ct4AYo=;
        b=P3hEzCBoJDd7beCn2wKLWsCwxw7qYGN/CRKRfdbIIie/pipzqeVdIuf/vnacC91auE
         +lc3PjfRbP9NBqeC26tPr/MSrAF+EsjF1ngFbBGN2ftNUwpi+uuazdDpouywmFkENVhN
         OzvTSALQzV1aK8TJB0hp167FBp2Ketst8USds+/Xf5NKOXtAPMnNhju6a2M1gWRNZpe9
         3EDeJx9CVQ5Dzlr4TLkqKa0T0NgLwFPrhsUjNVTliIEoj2fr45Wz61wdBB+iBf1chpa/
         xMsAhOJje68UQbSZU1rcDgYt1t2QEWcDJwTuEFry1iGnWbr6OrgGABCZqn0HyjFuqRZt
         mcww==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705424024; x=1706028824;
        h=content-transfer-encoding:autocrypt:subject:from:cc:to
         :content-language:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=KNWDMti/5OC6TyJo8byrqi6FeWcTeKmy3eyd/Ct4AYo=;
        b=UdNKhdOkaRA4BbVUWxGJY47h26HaSqyHt9ZFosFLkp/3ZqwPMvscotYUWrU3S1uI9F
         PxargzeLTE4DnqyU9gW6V+N62aGLy8rSIaxpk92/aCzeHLEjiOOeamK69KeWTd3REsG8
         YUT5qdgBSMo0Sus98bbiF5KwbhRqmF5tusPdRlr5SYMf7vc4X9jVo2AH0J5PosfqnWjN
         0glNRS3OO92TO+SJf152sb1qemT0yZrCg5RIY8o/UG0DdIu0XapjP8Nv36bFuX0ZIvpg
         kH4QG1kiFR8/9Ma8xLmHDUeIygBs+vW94Zj4/iwQ6tWiuLfWTIRBm2RmOrETTKrAd0Jm
         p7Hw==
X-Gm-Message-State: AOJu0YylRA/Hu7GDaFfrU0tuQYEytWIicaMQw/kV0yi9tJt0WA5CuQ7Z
	uz/VQWnys/VzioQ5VagcWQ/FFarVuGVdAuLJa+aSTpF0YA==
X-Google-Smtp-Source: AGHT+IGCh5UUnCv5FlABBN5nJOZ5a7AJW9KXVKDpHfHs5MT+INZhXjbK/BdVTJpSbbdM3G0/siFxdA==
X-Received: by 2002:a2e:391d:0:b0:2cd:633a:e1d6 with SMTP id g29-20020a2e391d000000b002cd633ae1d6mr4042596lja.13.1705424024197;
        Tue, 16 Jan 2024 08:53:44 -0800 (PST)
Message-ID: <c19cf600-5971-457b-936d-77a035ab6913@suse.com>
Date: Tue, 16 Jan 2024 17:53:41 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Content-Language: en-US
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, Wei Liu <wl@xen.org>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
From: Jan Beulich <jbeulich@suse.com>
Subject: [PATCH] x86: arrange for ENDBR zapping from
 <vendor>_ctxt_switch_masking()
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

While altcall is already used for them, the functions want announcing in
.init.rodata.cf_clobber, even if the resulting static variables aren't
otherwise used.

While doing this also move ctxt_switch_masking to .data.ro_after_init.

Signed-off-by: Jan Beulich <jbeulich@suse.com>

--- a/xen/arch/x86/cpu/amd.c
+++ b/xen/arch/x86/cpu/amd.c
@@ -258,6 +258,11 @@ static void cf_check amd_ctxt_switch_mas
 #undef LAZY
 }
 
+#ifdef CONFIG_XEN_IBT /* Announce the function to ENDBR clobbering logic. */
+static const typeof(ctxt_switch_masking) __initconst_cf_clobber __used csm =
+    amd_ctxt_switch_masking;
+#endif
+
 /*
  * Mask the features and extended features returned by CPUID.  Parameters are
  * set from the boot line via two methods:
--- a/xen/arch/x86/cpu/common.c
+++ b/xen/arch/x86/cpu/common.c
@@ -119,7 +119,7 @@ static const struct cpu_dev __initconst_
 static const struct cpu_dev *this_cpu = &default_cpu;
 
 static DEFINE_PER_CPU(uint64_t, msr_misc_features);
-void (* __read_mostly ctxt_switch_masking)(const struct vcpu *next);
+void (* __ro_after_init ctxt_switch_masking)(const struct vcpu *next);
 
 bool __init probe_cpuid_faulting(void)
 {
--- a/xen/arch/x86/cpu/intel.c
+++ b/xen/arch/x86/cpu/intel.c
@@ -220,6 +220,11 @@ static void cf_check intel_ctxt_switch_m
 #undef LAZY
 }
 
+#ifdef CONFIG_XEN_IBT /* Announce the function to ENDBR clobbering logic. */
+static const typeof(ctxt_switch_masking) __initconst_cf_clobber __used csm =
+    intel_ctxt_switch_masking;
+#endif
+
 /*
  * opt_cpuid_mask_ecx/edx: cpuid.1[ecx, edx] feature mask.
  * For example, E8400[Intel Core 2 Duo Processor series] ecx = 0x0008E3FD,


From xen-devel-bounces@lists.xenproject.org Tue Jan 16 16:56:17 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 16 Jan 2024 16:56:17 +0000
Received: from list by lists.xenproject.org with outflank-mailman.667908.1039592 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPmjY-0005HV-Nq; Tue, 16 Jan 2024 16:56:16 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 667908.1039592; Tue, 16 Jan 2024 16:56:16 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPmjY-0005HO-Je; Tue, 16 Jan 2024 16:56:16 +0000
Received: by outflank-mailman (input) for mailman id 667908;
 Tue, 16 Jan 2024 16:56:15 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=MjSB=I2=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rPmjX-0005HD-LS
 for xen-devel@lists.xenproject.org; Tue, 16 Jan 2024 16:56:15 +0000
Received: from mail-lj1-x230.google.com (mail-lj1-x230.google.com
 [2a00:1450:4864:20::230])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 2809021b-b490-11ee-9b0f-b553b5be7939;
 Tue, 16 Jan 2024 17:56:13 +0100 (CET)
Received: by mail-lj1-x230.google.com with SMTP id
 38308e7fff4ca-2cd64022164so117390591fa.3
 for <xen-devel@lists.xenproject.org>; Tue, 16 Jan 2024 08:56:13 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 e34-20020a028625000000b0046e3023b444sm3023535jai.32.2024.01.16.08.56.11
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 16 Jan 2024 08:56:12 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 2809021b-b490-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1705424173; x=1706028973; darn=lists.xenproject.org;
        h=content-transfer-encoding:autocrypt:subject:from:cc:to
         :content-language:user-agent:mime-version:date:message-id:from:to:cc
         :subject:date:message-id:reply-to;
        bh=Y/GRuPPUmvfZCzOlb947NDD95I7idQBnhAGh1UNVobI=;
        b=cbz51S264xPyXZh5V5gSKOpndpHnw2YSLd1I/zZq/jSd6w2VXnPe2FBjPq8I0dp9gm
         SVJAb9tfsCv+Yj8NaNoewSeoWmTD4uQJ7f9fUSrouB8zYNcd5gLnVLfle45LattBDlc0
         +YMqpY6/fG6rpTSJiIXmZczor+g5va17Op1MUeTjZPs6orIdhdwxN+oywZq9GS9ntTQj
         ROV+cJalJr/KHEHAsmFUocAJhGS7Oz3B1aiMnMNY4NBtvRmh63QKOi/W5/34r0nbyDTk
         C4/F+E7OCWJa1DS3wM80u6iLxlq3+y8lELqSTliTEyrhfgMEik04rIHqtYStBIXTWTdT
         pWBA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705424173; x=1706028973;
        h=content-transfer-encoding:autocrypt:subject:from:cc:to
         :content-language:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=Y/GRuPPUmvfZCzOlb947NDD95I7idQBnhAGh1UNVobI=;
        b=CUTOUO3r/Xj2bATjZUazUQEaqJwag1NZumz9L0G6mXlp+HWqQi2KB12Q+FYAPaw1kt
         LI0ZBJ3k/xj1/D74WA3BPsE3BDq7Y5oudzQr2UcoW9bXUeOmeQ9Q1X9AECBVThHFgYEp
         As7YuQsz2X4JoZ9aRdFoRRcozffK5EBW8rBpQTZ0VLzrMprt81BEbWSZkwugNpmdUqfi
         qhhGkcpUYWo35e8QUCREu2upMQemaZttQFq9HHSv+tU76iWm+mdg9kMMeI00u5o7lVjA
         /tD82z0o7RhBX9ycFvYE88KJDOEhw2Gt+Wo/hqzWOezDme+Q8Qdv8VZM92/u6XV2AQ4c
         vG8g==
X-Gm-Message-State: AOJu0YxXKAMF1DMJYI8Sfnynvq3phW0/szK6pMzIG2y5KcGhgLfTB0Bm
	TfvQ1/Hk0/z5rUMKPSMfZqPnIf2KKoY8G3DgB7sWav0rWA==
X-Google-Smtp-Source: AGHT+IG+oU+cC64Kwr7WB7wZmwyAKxA5SizWTm6wyRokJ2f2Mtpb90zOYKpnhkZxS6sqjrNBv/0uSQ==
X-Received: by 2002:a2e:9448:0:b0:2cd:7830:5796 with SMTP id o8-20020a2e9448000000b002cd78305796mr4008932ljh.5.1705424173036;
        Tue, 16 Jan 2024 08:56:13 -0800 (PST)
Message-ID: <34e88794-8a62-4787-baf1-e4443ec45a01@suse.com>
Date: Tue, 16 Jan 2024 17:56:10 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Content-Language: en-US
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, Wei Liu <wl@xen.org>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
From: Jan Beulich <jbeulich@suse.com>
Subject: [PATCH] x86/HPET: avoid an indirect call
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

When this code was written, indirect branches still weren't considered
much of a problem (besides being a little slower). Instead of a function
pointer, pass a boolean to _disable_pit_irq(), thus allowing to
eliminate two ENDBR (one of them in .text).

Signed-off-by: Jan Beulich <jbeulich@suse.com>

--- a/xen/arch/x86/hpet.c
+++ b/xen/arch/x86/hpet.c
@@ -563,7 +563,7 @@ static void cf_check handle_rtc_once(uin
     }
 }
 
-void __init cf_check hpet_broadcast_init(void)
+void __init hpet_broadcast_init(void)
 {
     u64 hpet_rate = hpet_setup();
     u32 hpet_id, cfg;
@@ -634,7 +634,7 @@ void __init cf_check hpet_broadcast_init
         hpet_events->flags = HPET_EVT_LEGACY;
 }
 
-void cf_check hpet_broadcast_resume(void)
+void hpet_broadcast_resume(void)
 {
     u32 cfg;
     unsigned int i, n;
--- a/xen/arch/x86/include/asm/hpet.h
+++ b/xen/arch/x86/include/asm/hpet.h
@@ -89,8 +89,8 @@ void hpet_disable_legacy_replacement_mod
  * Temporarily use an HPET event counter for timer interrupt handling,
  * rather than using the LAPIC timer. Used for Cx state entry.
  */
-void cf_check hpet_broadcast_init(void);
-void cf_check hpet_broadcast_resume(void);
+void hpet_broadcast_init(void);
+void hpet_broadcast_resume(void);
 void cf_check hpet_broadcast_enter(void);
 void cf_check hpet_broadcast_exit(void);
 int hpet_broadcast_is_available(void);
--- a/xen/arch/x86/time.c
+++ b/xen/arch/x86/time.c
@@ -2427,7 +2427,7 @@ void __init early_time_init(void)
 }
 
 /* keep pit enabled for pit_broadcast working while cpuidle enabled */
-static int _disable_pit_irq(void(*hpet_broadcast_setup)(void))
+static int _disable_pit_irq(bool init)
 {
     int ret = 1;
 
@@ -2442,13 +2442,13 @@ static int _disable_pit_irq(void(*hpet_b
      */
     if ( cpuidle_using_deep_cstate() && !boot_cpu_has(X86_FEATURE_ARAT) )
     {
-        hpet_broadcast_setup();
+        init ? hpet_broadcast_init() : hpet_broadcast_resume();
         if ( !hpet_broadcast_is_available() )
         {
             if ( xen_cpuidle > 0 )
             {
-                printk("%ps() failed, turning to PIT broadcast\n",
-                       hpet_broadcast_setup);
+                printk("hpet_broadcast_%s() failed, turning to PIT broadcast\n",
+                       init ? "init" : "resume");
                 return -1;
             }
             ret = 0;
@@ -2465,7 +2465,7 @@ static int _disable_pit_irq(void(*hpet_b
 
 static int __init cf_check disable_pit_irq(void)
 {
-    if ( !_disable_pit_irq(hpet_broadcast_init) )
+    if ( !_disable_pit_irq(true) )
     {
         xen_cpuidle = 0;
         printk("CPUIDLE: disabled due to no HPET. "
@@ -2526,7 +2526,7 @@ int time_resume(void)
 
     resume_platform_timer();
 
-    if ( !_disable_pit_irq(hpet_broadcast_resume) )
+    if ( !_disable_pit_irq(false) )
         BUG();
 
     init_percpu_time();


From xen-devel-bounces@lists.xenproject.org Tue Jan 16 16:59:09 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 16 Jan 2024 16:59:09 +0000
Received: from list by lists.xenproject.org with outflank-mailman.667914.1039601 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPmmF-0006LZ-2o; Tue, 16 Jan 2024 16:59:03 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 667914.1039601; Tue, 16 Jan 2024 16:59:03 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPmmF-0006LS-0F; Tue, 16 Jan 2024 16:59:03 +0000
Received: by outflank-mailman (input) for mailman id 667914;
 Tue, 16 Jan 2024 16:59:02 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=MjSB=I2=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rPmmE-0006K8-FI
 for xen-devel@lists.xenproject.org; Tue, 16 Jan 2024 16:59:02 +0000
Received: from mail-lj1-x232.google.com (mail-lj1-x232.google.com
 [2a00:1450:4864:20::232])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 8c1c9a73-b490-11ee-98f1-6d05b1d4d9a1;
 Tue, 16 Jan 2024 17:59:01 +0100 (CET)
Received: by mail-lj1-x232.google.com with SMTP id
 38308e7fff4ca-2cca8eb0509so124646511fa.3
 for <xen-devel@lists.xenproject.org>; Tue, 16 Jan 2024 08:59:01 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 bs10-20020a056638450a00b0046e9ad3dbe3sm446602jab.128.2024.01.16.08.58.59
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 16 Jan 2024 08:59:00 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 8c1c9a73-b490-11ee-98f1-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1705424341; x=1706029141; darn=lists.xenproject.org;
        h=content-transfer-encoding:autocrypt:subject:from:cc:to
         :content-language:user-agent:mime-version:date:message-id:from:to:cc
         :subject:date:message-id:reply-to;
        bh=pC3awBdfkOU+DgeWa6Gv9VA13lRqs0I2JhFJq/TvClQ=;
        b=cMKbAEOmfRT47y4Eu4pEEPcvOSwxXLRb+HpCWfslWlB+xiqfqLlgM1Zg6ADhQJ/WJB
         mUTRBglhvgj+Jt1CPwb/E8fEkq0QXLVNg0A5Ka7n7EUGJk+KTxuKoCWdXe+J9eTD5zLw
         8fRj4MAekzXp8rqOA1b5i3Dm/kyGhcyN6cQ5WaPJSus2Q1BWSw1wwQmYYurF4AljV136
         ph7n5SqJwtR4dVsYeKWQPCLXpirsGI1Z4r+2SWaXGVizcbwiVZvO1qr1NjQTYmRgm2pL
         hLRECEIJDiTMnsyb6cKQwMWuLmFu6fhxLys0hihgcJKWhL2Bqz1kwuTT4tMgwlhM68cq
         myAQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705424341; x=1706029141;
        h=content-transfer-encoding:autocrypt:subject:from:cc:to
         :content-language:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=pC3awBdfkOU+DgeWa6Gv9VA13lRqs0I2JhFJq/TvClQ=;
        b=aMlsO32hUUC6Qe3eoPRJKBW3OG7oUDlXtErIrtJxT4PHXNx0oyJZBhRjqzKt7y7QFn
         kZKD+jld09hv7H8mTQJTApTHC/Ck1/zBPMqQIMmDAcIM0VftrDkY5CDiol5+mtxfrYxa
         D4g29yEwUTvWi0m4b8TNZXff9nZfVbXqksCjBCBHre9ZKDGYD8lOArvikpghvTri+ubX
         y9hNdUa2PZ690Xngf32PnjAMsCfsO5JLyM/nhGtz1KZ+4ZqneNFVtvy74tdPutNDQ56A
         NwORzySB1L0XGPT6aEUt9cWz7kn5FjIXlP2etwTWBjqNpYbM3/KI0dPZVJeKIAg0FgK7
         11BQ==
X-Gm-Message-State: AOJu0Yw4P5+4Jm4KBa0ILWPdWb1ltdTNaDdsywnetAuqj7Ur6ZPfiqSK
	tnNPophLHbS5PY1wMIe9AjYCl2d4sw7qjWaw5vvR4tu+hg==
X-Google-Smtp-Source: AGHT+IFWeLLASNg6p9Vo36TSvTSFg+DW7XJb5ZwxrTR0WBzHqoKMPHD9w54TAxqLbAlhqb5WUTH43Q==
X-Received: by 2002:a2e:7c06:0:b0:2cd:463f:6c34 with SMTP id x6-20020a2e7c06000000b002cd463f6c34mr3405756ljc.78.1705424341046;
        Tue, 16 Jan 2024 08:59:01 -0800 (PST)
Message-ID: <5f7afa11-3216-4175-b05b-3ff78920fa00@suse.com>
Date: Tue, 16 Jan 2024 17:58:58 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Content-Language: en-US
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, Wei Liu <wl@xen.org>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
From: Jan Beulich <jbeulich@suse.com>
Subject: [PATCH] x86/PV: use altcall for I/O emulation quirk hook
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

This way we can arrange for ioemul_handle_proliant_quirk()'s ENDBR to
also be zapped. Utilize existing data rather than introducing another
otherwise unused static variable (array); eventually (if any new quirk
was in need of adding) we may want to use .callback and .driver_data
anyway.

For the decision to be taken before the 2nd alternative patching pass,
the initcall needs to become a pre-SMP one.

While touching this code, also arrange for it to not be built at all
when !PV - that way the respective ENDBR won't be there from the
beginning.

Signed-off-by: Jan Beulich <jbeulich@suse.com>
---
Obviously the file may want moving to pv/ then. I wasn't sure whether
to also fold doing so right into here.

--- a/xen/arch/x86/Makefile
+++ b/xen/arch/x86/Makefile
@@ -45,7 +45,7 @@ obj-$(CONFIG_LIVEPATCH) += alternative.o
 obj-y += msi.o
 obj-y += msr.o
 obj-$(CONFIG_INDIRECT_THUNK) += indirect-thunk.o
-obj-y += ioport_emulate.o
+obj-$(CONFIG_PV) += ioport_emulate.o
 obj-y += irq.o
 obj-$(CONFIG_KEXEC) += machine_kexec.o
 obj-y += mm.o x86_64/mm.o
--- a/xen/arch/x86/ioport_emulate.c
+++ b/xen/arch/x86/ioport_emulate.c
@@ -36,7 +36,7 @@ static unsigned int cf_check ioemul_hand
 }
 
 /* This table is the set of system-specific I/O emulation hooks. */
-static const struct dmi_system_id __initconstrel ioport_quirks_tbl[] = {
+static const struct dmi_system_id __initconst_cf_clobber ioport_quirks_tbl[] = {
     /*
      * I/O emulation hook for certain HP ProLiant servers with
      * 'special' SMM goodness.
@@ -46,6 +46,8 @@ static const struct dmi_system_id __init
         DMI_MATCH2(
             DMI_MATCH(DMI_BIOS_VENDOR, "HP"),
             DMI_MATCH(DMI_PRODUCT_NAME, "ProLiant DL3")),
+        /* Need in one entry only as long as .callback isn't also used. */
+        .driver_data = ioemul_handle_proliant_quirk,
     },
     {
         .ident = "HP ProLiant DL5xx",
@@ -99,7 +101,7 @@ static int __init cf_check ioport_quirks
 
     return 0;
 }
-__initcall(ioport_quirks_init);
+presmp_initcall(ioport_quirks_init);
 
 /*
  * Local variables:
--- a/xen/arch/x86/pv/emul-priv-op.c
+++ b/xen/arch/x86/pv/emul-priv-op.c
@@ -112,7 +112,8 @@ static io_emul_stub_t *io_emul_stub_setu
     /* Some platforms might need to quirk the stub for specific inputs. */
     if ( unlikely(ioemul_handle_quirk) )
     {
-        quirk_bytes = ioemul_handle_quirk(opcode, p, ctxt->ctxt.regs);
+        quirk_bytes = alternative_call(ioemul_handle_quirk, opcode, p,
+                                       ctxt->ctxt.regs);
         p += quirk_bytes;
     }
 


From xen-devel-bounces@lists.xenproject.org Tue Jan 16 17:10:07 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 16 Jan 2024 17:10:07 +0000
Received: from list by lists.xenproject.org with outflank-mailman.667918.1039613 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPmwr-0000eo-3Q; Tue, 16 Jan 2024 17:10:01 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 667918.1039613; Tue, 16 Jan 2024 17:10:01 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPmwq-0000eh-VZ; Tue, 16 Jan 2024 17:10:00 +0000
Received: by outflank-mailman (input) for mailman id 667918;
 Tue, 16 Jan 2024 17:10:00 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=AzGb=I2=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1rPmwq-0000eb-3E
 for xen-devel@lists.xenproject.org; Tue, 16 Jan 2024 17:10:00 +0000
Received: from mail-wm1-x332.google.com (mail-wm1-x332.google.com
 [2a00:1450:4864:20::332])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 13fb8c43-b492-11ee-98f1-6d05b1d4d9a1;
 Tue, 16 Jan 2024 18:09:59 +0100 (CET)
Received: by mail-wm1-x332.google.com with SMTP id
 5b1f17b1804b1-40e86c02054so4085905e9.2
 for <xen-devel@lists.xenproject.org>; Tue, 16 Jan 2024 09:09:59 -0800 (PST)
Received: from [10.80.67.30] (default-46-102-197-194.interdsl.co.uk.
 [46.102.197.194]) by smtp.gmail.com with ESMTPSA id
 f3-20020adff983000000b00337bc2176f6sm1832705wrr.81.2024.01.16.09.09.58
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 16 Jan 2024 09:09:58 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 13fb8c43-b492-11ee-98f1-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1705424998; x=1706029798; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=En26VkNhccCgfjqJ6TXWPoCDsyuYH7qCrVBoyAa/Jbo=;
        b=oaKKPjqPHklUPOdXhUo9RKjlQlLADpc3p2W1oGkDrkE2CeQzBTWNALXfYSQKMtSUYh
         Nf3uMhQMF0OwhiG8FgQ/xrCqhOSGOzt32L98OIkgIhAx82pjm9gBiWGd0KzHAPp5CFHh
         Tr/q7raoz9ULaaT3jWWDLXhocSciwOiwBSlF0=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705424998; x=1706029798;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=En26VkNhccCgfjqJ6TXWPoCDsyuYH7qCrVBoyAa/Jbo=;
        b=lO3rdzDf25bXnpk7SEj+IhJkR/XiHPRfoz6omYifSdjiBWcSJ8q/XteNt+hMPi7WMh
         Ei+d5bnNjGP+scPnI/MiyPlL7O2Sx77flAfNnPZsJ2YracyriT18pmPDfCkAohkPgAjm
         FHdxA9q2akQjfbE2D2OT3RL0bF+NmzlH2hOd+a0ilJjB3G/3M/xfEUaAVghLeCoPvbEH
         n1ZXFxQvzPY6bf3jZ9O6VzYx3qkAz/xvZtr92wMnQw6S+/5QAk4Ku8vhQUuFF+ZWsRaY
         /JgpTXtdK4Jk0T6N9a+8KvUvHpmJ486KPs8q8mcv6B1fKR6Xts2A0AHE7fBosvlmgXTP
         SpMQ==
X-Gm-Message-State: AOJu0YyZBM6n3f927mRnt+6/0Hittb8oQt1L6sQKwv9ugJzVi2+aiCWF
	rP3eSeXH2+gGdroqS9krqL3I6DFbjOrZlw==
X-Google-Smtp-Source: AGHT+IHwbKYb1jqL98YtPd7B3N4901cn0CjmF17QEFiD/vAjfDt/sQAHDCqM29xZky5V03ptObsPBQ==
X-Received: by 2002:a05:600c:538d:b0:40e:4579:9eb1 with SMTP id hg13-20020a05600c538d00b0040e45799eb1mr3863048wmb.1.1705424998464;
        Tue, 16 Jan 2024 09:09:58 -0800 (PST)
Message-ID: <38cab2f5-fb02-4266-bce6-988c4b2d2d8e@citrix.com>
Date: Tue, 16 Jan 2024 17:09:57 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] x86/HPET: avoid an indirect call
Content-Language: en-GB
To: Jan Beulich <jbeulich@suse.com>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Wei Liu <wl@xen.org>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger.pau@citrix.com>
References: <34e88794-8a62-4787-baf1-e4443ec45a01@suse.com>
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 xsFNBFLhNn8BEADVhE+Hb8i0GV6mihnnr/uiQQdPF8kUoFzCOPXkf7jQ5sLYeJa0cQi6Penp
 VtiFYznTairnVsN5J+ujSTIb+OlMSJUWV4opS7WVNnxHbFTPYZVQ3erv7NKc2iVizCRZ2Kxn
 srM1oPXWRic8BIAdYOKOloF2300SL/bIpeD+x7h3w9B/qez7nOin5NzkxgFoaUeIal12pXSR
 Q354FKFoy6Vh96gc4VRqte3jw8mPuJQpfws+Pb+swvSf/i1q1+1I4jsRQQh2m6OTADHIqg2E
 ofTYAEh7R5HfPx0EXoEDMdRjOeKn8+vvkAwhviWXTHlG3R1QkbE5M/oywnZ83udJmi+lxjJ5
 YhQ5IzomvJ16H0Bq+TLyVLO/VRksp1VR9HxCzItLNCS8PdpYYz5TC204ViycobYU65WMpzWe
 LFAGn8jSS25XIpqv0Y9k87dLbctKKA14Ifw2kq5OIVu2FuX+3i446JOa2vpCI9GcjCzi3oHV
 e00bzYiHMIl0FICrNJU0Kjho8pdo0m2uxkn6SYEpogAy9pnatUlO+erL4LqFUO7GXSdBRbw5
 gNt25XTLdSFuZtMxkY3tq8MFss5QnjhehCVPEpE6y9ZjI4XB8ad1G4oBHVGK5LMsvg22PfMJ
 ISWFSHoF/B5+lHkCKWkFxZ0gZn33ju5n6/FOdEx4B8cMJt+cWwARAQABzSlBbmRyZXcgQ29v
 cGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPsLBegQTAQgAJAIbAwULCQgHAwUVCgkI
 CwUWAgMBAAIeAQIXgAUCWKD95wIZAQAKCRBlw/kGpdefoHbdD/9AIoR3k6fKl+RFiFpyAhvO
 59ttDFI7nIAnlYngev2XUR3acFElJATHSDO0ju+hqWqAb8kVijXLops0gOfqt3VPZq9cuHlh
 IMDquatGLzAadfFx2eQYIYT+FYuMoPZy/aTUazmJIDVxP7L383grjIkn+7tAv+qeDfE+txL4
 SAm1UHNvmdfgL2/lcmL3xRh7sub3nJilM93RWX1Pe5LBSDXO45uzCGEdst6uSlzYR/MEr+5Z
 JQQ32JV64zwvf/aKaagSQSQMYNX9JFgfZ3TKWC1KJQbX5ssoX/5hNLqxMcZV3TN7kU8I3kjK
 mPec9+1nECOjjJSO/h4P0sBZyIUGfguwzhEeGf4sMCuSEM4xjCnwiBwftR17sr0spYcOpqET
 ZGcAmyYcNjy6CYadNCnfR40vhhWuCfNCBzWnUW0lFoo12wb0YnzoOLjvfD6OL3JjIUJNOmJy
 RCsJ5IA/Iz33RhSVRmROu+TztwuThClw63g7+hoyewv7BemKyuU6FTVhjjW+XUWmS/FzknSi
 dAG+insr0746cTPpSkGl3KAXeWDGJzve7/SBBfyznWCMGaf8E2P1oOdIZRxHgWj0zNr1+ooF
 /PzgLPiCI4OMUttTlEKChgbUTQ+5o0P080JojqfXwbPAyumbaYcQNiH1/xYbJdOFSiBv9rpt
 TQTBLzDKXok86M7BTQRS4TZ/ARAAkgqudHsp+hd82UVkvgnlqZjzz2vyrYfz7bkPtXaGb9H4
 Rfo7mQsEQavEBdWWjbga6eMnDqtu+FC+qeTGYebToxEyp2lKDSoAsvt8w82tIlP/EbmRbDVn
 7bhjBlfRcFjVYw8uVDPptT0TV47vpoCVkTwcyb6OltJrvg/QzV9f07DJswuda1JH3/qvYu0p
 vjPnYvCq4NsqY2XSdAJ02HrdYPFtNyPEntu1n1KK+gJrstjtw7KsZ4ygXYrsm/oCBiVW/OgU
 g/XIlGErkrxe4vQvJyVwg6YH653YTX5hLLUEL1NS4TCo47RP+wi6y+TnuAL36UtK/uFyEuPy
 wwrDVcC4cIFhYSfsO0BumEI65yu7a8aHbGfq2lW251UcoU48Z27ZUUZd2Dr6O/n8poQHbaTd
 6bJJSjzGGHZVbRP9UQ3lkmkmc0+XCHmj5WhwNNYjgbbmML7y0fsJT5RgvefAIFfHBg7fTY/i
 kBEimoUsTEQz+N4hbKwo1hULfVxDJStE4sbPhjbsPCrlXf6W9CxSyQ0qmZ2bXsLQYRj2xqd1
 bpA+1o1j2N4/au1R/uSiUFjewJdT/LX1EklKDcQwpk06Af/N7VZtSfEJeRV04unbsKVXWZAk
 uAJyDDKN99ziC0Wz5kcPyVD1HNf8bgaqGDzrv3TfYjwqayRFcMf7xJaL9xXedMcAEQEAAcLB
 XwQYAQgACQUCUuE2fwIbDAAKCRBlw/kGpdefoG4XEACD1Qf/er8EA7g23HMxYWd3FXHThrVQ
 HgiGdk5Yh632vjOm9L4sd/GCEACVQKjsu98e8o3ysitFlznEns5EAAXEbITrgKWXDDUWGYxd
 pnjj2u+GkVdsOAGk0kxczX6s+VRBhpbBI2PWnOsRJgU2n10PZ3mZD4Xu9kU2IXYmuW+e5KCA
 vTArRUdCrAtIa1k01sPipPPw6dfxx2e5asy21YOytzxuWFfJTGnVxZZSCyLUO83sh6OZhJkk
 b9rxL9wPmpN/t2IPaEKoAc0FTQZS36wAMOXkBh24PQ9gaLJvfPKpNzGD8XWR5HHF0NLIJhgg
 4ZlEXQ2fVp3XrtocHqhu4UZR4koCijgB8sB7Tb0GCpwK+C4UePdFLfhKyRdSXuvY3AHJd4CP
 4JzW0Bzq/WXY3XMOzUTYApGQpnUpdOmuQSfpV9MQO+/jo7r6yPbxT7CwRS5dcQPzUiuHLK9i
 nvjREdh84qycnx0/6dDroYhp0DFv4udxuAvt1h4wGwTPRQZerSm4xaYegEFusyhbZrI0U9tJ
 B8WrhBLXDiYlyJT6zOV2yZFuW47VrLsjYnHwn27hmxTC/7tvG3euCklmkn9Sl9IAKFu29RSo
 d5bD8kMSCYsTqtTfT6W4A3qHGvIDta3ptLYpIAOD2sY3GYq2nf3Bbzx81wZK14JdDDHUX2Rs
 6+ahAA==
In-Reply-To: <34e88794-8a62-4787-baf1-e4443ec45a01@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 16/01/2024 4:56 pm, Jan Beulich wrote:
> When this code was written, indirect branches still weren't considered
> much of a problem (besides being a little slower). Instead of a function
> pointer, pass a boolean to _disable_pit_irq(), thus allowing to
> eliminate two ENDBR (one of them in .text).
>
> Signed-off-by: Jan Beulich <jbeulich@suse.com>

Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>


From xen-devel-bounces@lists.xenproject.org Tue Jan 16 17:12:38 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 16 Jan 2024 17:12:38 +0000
Received: from list by lists.xenproject.org with outflank-mailman.667922.1039622 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPmzN-0002VM-Ex; Tue, 16 Jan 2024 17:12:37 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 667922.1039622; Tue, 16 Jan 2024 17:12:37 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPmzN-0002VF-CL; Tue, 16 Jan 2024 17:12:37 +0000
Received: by outflank-mailman (input) for mailman id 667922;
 Tue, 16 Jan 2024 17:12:36 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>) id 1rPmzM-0002V7-8p
 for xen-devel@lists.xenproject.org; Tue, 16 Jan 2024 17:12:36 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rPmzE-0006Co-PK; Tue, 16 Jan 2024 17:12:28 +0000
Received: from 54-240-197-231.amazon.com ([54.240.197.231]
 helo=[10.95.149.176]) by xenbits.xenproject.org with esmtpsa
 (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rPmzE-0005hu-JG; Tue, 16 Jan 2024 17:12:28 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
	s=20200302mail; h=Content-Transfer-Encoding:Content-Type:In-Reply-To:From:
	References:Cc:To:Subject:MIME-Version:Date:Message-ID;
	bh=YXivUxrNBIzaqto2llkJo/tRwVIJPQGCDylDpD38YpE=; b=D0aBbTXmRV2xtQ8X1wC1OKNl+X
	VDgqEAllKxHhRQ3aRMDa7PY22k3TmHHXJ8tAwnsUY9dPRlRrbqzLSH00x+jfB/q7zhjdtaDBdeKqQ
	oYN7dh/5zzVHZdvRpMc1G5X/9KdyA+mfhpIL/4njedfahRa9+JCAEK2P1XjSxySXnYYo=;
Message-ID: <402ece4f-a3bf-4eab-ac4c-ae36490ae114@xen.org>
Date: Tue, 16 Jan 2024 17:12:26 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 21/34] xen/riscv: introduce p2m.h
Content-Language: en-GB
To: Oleksii <oleksii.kurochko@gmail.com>, Jan Beulich <jbeulich@suse.com>
Cc: Shawn Anastasio <sanastasio@raptorengineering.com>,
 Alistair Francis <alistair.francis@wdc.com>,
 Bob Eshleman <bobbyeshleman@gmail.com>, Connor Davis
 <connojdavis@gmail.com>, xen-devel@lists.xenproject.org
References: <cover.1703255175.git.oleksii.kurochko@gmail.com>
 <c3b1f24aea1ba01505697717b240c8d036abfee1.1703255175.git.oleksii.kurochko@gmail.com>
 <abeafa19-7867-46b2-bc0e-b39eaa0f5036@xen.org>
 <abef4701c3f2292e672679f1a18c826d699e1af2.camel@gmail.com>
 <c1abf4ca-d69a-4a17-b23c-18f06b8fddda@suse.com>
 <5bf15f83be5a1cf38bff58d996e74a6de6b044b5.camel@gmail.com>
From: Julien Grall <julien@xen.org>
In-Reply-To: <5bf15f83be5a1cf38bff58d996e74a6de6b044b5.camel@gmail.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit

Hi Oleksii,

On 16/01/2024 09:44, Oleksii wrote:
> On Mon, 2024-01-15 at 12:01 +0100, Jan Beulich wrote:
>> On 15.01.2024 11:35, Oleksii wrote:
>>> Hi Julien,
>>>
>>> On Fri, 2024-01-12 at 10:39 +0000, Julien Grall wrote:
>>>> Hi Oleksii,
>>>>
>>>> On 22/12/2023 15:13, Oleksii Kurochko wrote:
>>>>> Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>
>>>>> ---
>>>>> Changes in V3:
>>>>>    - add SPDX
>>>>>    - drop unneeded for now p2m types.
>>>>>    - return false in all functions implemented with BUG()
>>>>> inside.
>>>>>    - update the commit message
>>>>> ---
>>>>> Changes in V2:
>>>>>    - Nothing changed. Only rebase.
>>>>> ---
>>>>>    xen/arch/ppc/include/asm/p2m.h   |   3 +-
>>>>>    xen/arch/riscv/include/asm/p2m.h | 102
>>>>> +++++++++++++++++++++++++++++++
>>>>>    2 files changed, 103 insertions(+), 2 deletions(-)
>>>>>    create mode 100644 xen/arch/riscv/include/asm/p2m.h
>>>>>
>>>>> diff --git a/xen/arch/ppc/include/asm/p2m.h
>>>>> b/xen/arch/ppc/include/asm/p2m.h
>>>>> index 25ba054668..3bc05b7c05 100644
>>>>> --- a/xen/arch/ppc/include/asm/p2m.h
>>>>> +++ b/xen/arch/ppc/include/asm/p2m.h
>>>>> @@ -50,8 +50,7 @@ static inline void memory_type_changed(struct
>>>>> domain *d)
>>>>>    static inline int
>>>>> guest_physmap_mark_populate_on_demand(struct
>>>>> domain *d, unsigned long gfn,
>>>>>                                                           
>>>>> unsigned
>>>>> int order)
>>>>>    {
>>>>> -    BUG_ON("unimplemented");
>>>>> -    return 1;
>>>>> +    return -EOPNOTSUPP;
>>>>>    }
>>>>>    
>>>>>    static inline int guest_physmap_add_entry(struct domain *d,
>>>>> diff --git a/xen/arch/riscv/include/asm/p2m.h
>>>>> b/xen/arch/riscv/include/asm/p2m.h
>>>>> new file mode 100644
>>>>> index 0000000000..d270ef6635
>>>>> --- /dev/null
>>>>> +++ b/xen/arch/riscv/include/asm/p2m.h
>>>>> @@ -0,0 +1,102 @@
>>>>> +/* SPDX-License-Identifier: GPL-2.0-only */
>>>>> +#ifndef __ASM_RISCV_P2M_H__
>>>>> +#define __ASM_RISCV_P2M_H__
>>>>> +
>>>>> +#include <asm/page-bits.h>
>>>>> +
>>>>> +#define paddr_bits PADDR_BITS
>>>>> +
>>>>> +/*
>>>>> + * List of possible type for each page in the p2m entry.
>>>>> + * The number of available bit per page in the pte for this
>>>>> purpose is 4 bits.
>>>>> + * So it's possible to only have 16 fields. If we run out of
>>>>> value
>>>>> in the
>>>>> + * future, it's possible to use higher value for pseudo-type
>>>>> and
>>>>> don't store
>>>>> + * them in the p2m entry.
>>>>> + */
>>>>
>>>> This looks like a verbatim copy from Arm. Did you actually check
>>>> RISC-V
>>>> has 4 bits available in the PTE to store this value?
>>> Thanks for noticing that, in RISC-V it is available only 2 bits (
>>> bits
>>> 8 and 9), so I'll update the comment:
>>> 53                   10 9    8 7 6 5 4 3 2 1 0
>>>   Physical Page Number     RSV  D A G U X W R V
>>
>> It's RSW (Reserved for Supervisor softWare use), not RSV, which is
>> pretty
>> important in this context.
> Yes, you are right it is RSW. Thanks for the correction.
> 
>>
>>> It seems that I missed something in the Arm code/architecture.As
>>> far as I recall, in Arm, bits 5-8 are ignored by the MMU, and they
>>> are expected
>>> to be used by the hypervisor for its purpose.
>>> However, in the code, I notice that these bits are utilized for
>>> storing
>>> a reference counter.
>>
>> Why "however"? Hardware still is going to ignore these bits.
> Sure, these bits are ignored by hardware. What I meant is that,
> according to the code, these bits are used for storing a reference
> counter, not p2m_type_t. I guess I am missing something...

I can only guess where you saw the field used for reference counting. 
This was the domain map page infrastruture, right?

If so, this is for stage-1 page-table (aka hypervisor table) and not the 
stage-2 (e.g. P2M). For the latter, we would use the p2m_type_t.

Cheers,

-- 
Julien Grall


From xen-devel-bounces@lists.xenproject.org Tue Jan 16 17:20:36 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 16 Jan 2024 17:20:36 +0000
Received: from list by lists.xenproject.org with outflank-mailman.667930.1039631 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPn72-0005Ad-BN; Tue, 16 Jan 2024 17:20:32 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 667930.1039631; Tue, 16 Jan 2024 17:20:32 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPn72-0005AW-8U; Tue, 16 Jan 2024 17:20:32 +0000
Received: by outflank-mailman (input) for mailman id 667930;
 Tue, 16 Jan 2024 17:20:30 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rPn70-00058z-B3; Tue, 16 Jan 2024 17:20:30 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rPn6z-0006MD-6D; Tue, 16 Jan 2024 17:20:29 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rPn6y-0007XM-Nl; Tue, 16 Jan 2024 17:20:28 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rPn6y-0006sF-NK; Tue, 16 Jan 2024 17:20:28 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=3+SchfzjFqY3M+pniCsSzhknBBd7wrNtKCX0xyfKc+E=; b=Gn3mkhZWNV/l+/gCPpOXUNAll8
	Ssc/etyovvglW64LrGnCP//ig+C6nVgrxDdAmkqDG8ivYR+TZAMqfJhogNeZjKjqZVB5WksKJwNAB
	bP3QoCwLdBAk/7NfTZg5Z8e2+IIY8KerWSMpIoylCAMCl6URe/cq9IumQfeEDJXWUKZs=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184367-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [libvirt test] 184367: tolerable all pass - PUSHED
X-Osstest-Failures:
    libvirt:test-armhf-armhf-libvirt:saverestore-support-check:fail:nonblocking
    libvirt:test-armhf-armhf-libvirt-qcow2:saverestore-support-check:fail:nonblocking
    libvirt:test-armhf-armhf-libvirt-raw:saverestore-support-check:fail:nonblocking
    libvirt:test-amd64-i386-libvirt-xsm:migrate-support-check:fail:nonblocking
    libvirt:test-amd64-amd64-libvirt-xsm:migrate-support-check:fail:nonblocking
    libvirt:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    libvirt:test-amd64-i386-libvirt:migrate-support-check:fail:nonblocking
    libvirt:test-arm64-arm64-libvirt:migrate-support-check:fail:nonblocking
    libvirt:test-arm64-arm64-libvirt:saverestore-support-check:fail:nonblocking
    libvirt:test-arm64-arm64-libvirt-xsm:migrate-support-check:fail:nonblocking
    libvirt:test-arm64-arm64-libvirt-xsm:saverestore-support-check:fail:nonblocking
    libvirt:test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    libvirt:test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    libvirt:test-armhf-armhf-libvirt:migrate-support-check:fail:nonblocking
    libvirt:test-amd64-i386-libvirt-raw:migrate-support-check:fail:nonblocking
    libvirt:test-arm64-arm64-libvirt-qcow2:migrate-support-check:fail:nonblocking
    libvirt:test-arm64-arm64-libvirt-qcow2:saverestore-support-check:fail:nonblocking
    libvirt:test-arm64-arm64-libvirt-raw:migrate-support-check:fail:nonblocking
    libvirt:test-arm64-arm64-libvirt-raw:saverestore-support-check:fail:nonblocking
    libvirt:test-amd64-amd64-libvirt-vhd:migrate-support-check:fail:nonblocking
    libvirt:test-armhf-armhf-libvirt-qcow2:migrate-support-check:fail:nonblocking
    libvirt:test-armhf-armhf-libvirt-raw:migrate-support-check:fail:nonblocking
X-Osstest-Versions-This:
    libvirt=3a45455558d74b2cb351c74cab472ac654f54708
X-Osstest-Versions-That:
    libvirt=10042f0253b98c8ce4626b271a00339e9128eda1
From: osstest service owner <osstest-admin@xenproject.org>
Date: Tue, 16 Jan 2024 17:20:28 +0000

flight 184367 libvirt real [real]
http://logs.test-lab.xenproject.org/osstest/logs/184367/

Failures :-/ but no regressions.

Tests which did not succeed, but are not blocking:
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 184337
 test-armhf-armhf-libvirt-qcow2 15 saverestore-support-check   fail like 184337
 test-armhf-armhf-libvirt-raw 15 saverestore-support-check    fail  like 184337
 test-amd64-i386-libvirt-xsm  15 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt     15 migrate-support-check        fail   never pass
 test-amd64-i386-libvirt      15 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt     15 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt     16 saverestore-support-check    fail   never pass
 test-arm64-arm64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-xsm 16 saverestore-support-check    fail   never pass
 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-armhf-armhf-libvirt     15 migrate-support-check        fail   never pass
 test-amd64-i386-libvirt-raw  14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-qcow2 14 migrate-support-check        fail never pass
 test-arm64-arm64-libvirt-qcow2 15 saverestore-support-check    fail never pass
 test-arm64-arm64-libvirt-raw 14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 15 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-vhd 14 migrate-support-check        fail   never pass
 test-armhf-armhf-libvirt-qcow2 14 migrate-support-check        fail never pass
 test-armhf-armhf-libvirt-raw 14 migrate-support-check        fail   never pass

version targeted for testing:
 libvirt              3a45455558d74b2cb351c74cab472ac654f54708
baseline version:
 libvirt              10042f0253b98c8ce4626b271a00339e9128eda1

Last test of basis   184337  2024-01-13 04:21:08 Z    3 days
Testing same since   184367  2024-01-16 04:20:44 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Andrea Bolognani <abologna@redhat.com>
  Göran Uddeborg <goeran@uddeborg.se>
  Jiri Denemark <jdenemar@redhat.com>
  Jonathon Jongsma <jjongsma@redhat.com>
  Laine Stump <laine@redhat.com>
  Michal Privoznik <mprivozn@redhat.com>
  Peter Krempa <pkrempa@redhat.com>

jobs:
 build-amd64-xsm                                              pass    
 build-arm64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64                                                  pass    
 build-arm64                                                  pass    
 build-armhf                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-arm64-libvirt                                          pass    
 build-armhf-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-pvops                                            pass    
 build-arm64-pvops                                            pass    
 build-armhf-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm           pass    
 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm            pass    
 test-amd64-amd64-libvirt-xsm                                 pass    
 test-arm64-arm64-libvirt-xsm                                 pass    
 test-amd64-i386-libvirt-xsm                                  pass    
 test-amd64-amd64-libvirt                                     pass    
 test-arm64-arm64-libvirt                                     pass    
 test-armhf-armhf-libvirt                                     pass    
 test-amd64-i386-libvirt                                      pass    
 test-amd64-amd64-libvirt-pair                                pass    
 test-amd64-i386-libvirt-pair                                 pass    
 test-arm64-arm64-libvirt-qcow2                               pass    
 test-armhf-armhf-libvirt-qcow2                               pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-armhf-armhf-libvirt-raw                                 pass    
 test-amd64-i386-libvirt-raw                                  pass    
 test-amd64-amd64-libvirt-vhd                                 pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Pushing revision :

To xenbits.xen.org:/home/xen/git/libvirt.git
   10042f0253..3a45455558  3a45455558d74b2cb351c74cab472ac654f54708 -> xen-tested-master


From xen-devel-bounces@lists.xenproject.org Tue Jan 16 17:31:25 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 16 Jan 2024 17:31:25 +0000
Received: from list by lists.xenproject.org with outflank-mailman.667936.1039642 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPnHJ-0000P9-AJ; Tue, 16 Jan 2024 17:31:09 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 667936.1039642; Tue, 16 Jan 2024 17:31:09 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPnHJ-0000P2-6l; Tue, 16 Jan 2024 17:31:09 +0000
Received: by outflank-mailman (input) for mailman id 667936;
 Tue, 16 Jan 2024 17:31:07 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=AzGb=I2=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1rPnHH-0000Ou-Rh
 for xen-devel@lists.xenproject.org; Tue, 16 Jan 2024 17:31:07 +0000
Received: from mail-wr1-x436.google.com (mail-wr1-x436.google.com
 [2a00:1450:4864:20::436])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 04c6ab29-b495-11ee-9b0f-b553b5be7939;
 Tue, 16 Jan 2024 18:31:02 +0100 (CET)
Received: by mail-wr1-x436.google.com with SMTP id
 ffacd0b85a97d-3366e78d872so10237848f8f.3
 for <xen-devel@lists.xenproject.org>; Tue, 16 Jan 2024 09:31:02 -0800 (PST)
Received: from [10.80.67.30] (default-46-102-197-194.interdsl.co.uk.
 [46.102.197.194]) by smtp.gmail.com with ESMTPSA id
 u2-20020a5d5142000000b00337bfd9bd47sm383876wrt.73.2024.01.16.09.31.01
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 16 Jan 2024 09:31:01 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 04c6ab29-b495-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1705426261; x=1706031061; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=LdS0Cxz54THmi7JrdZvsgp/JMlWr4E1vbYMIyrMxIIg=;
        b=QuKFa/OcN2X8LIt64+YEPV0EnyAapujxr/ikDHrHVvGUqvk3xAEVmAUQGeZpkGo4co
         6bKUmcfvzPIsdP+jl3jezFRdZpfe5zbvFKWq3JGSIZX0fJLf/SsvC/Q10No39xQkDTQR
         M/gI1Ko5akwsgjvvqx74jKqeh+OVzhLQHZDak=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705426261; x=1706031061;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=LdS0Cxz54THmi7JrdZvsgp/JMlWr4E1vbYMIyrMxIIg=;
        b=IA0H2AQLicQI/Vd7UH8UyJDFF7li/INPLMp4WV3wt0nrpaxnA9zqRvx1lb/9omz7QF
         ndmEx7BKT4TIoJM58IISV1XgXN4BBVlCuKCw3lTYw2OEd8iF+t8M5eQLvYghOXhMfRsd
         vTlVbVwve/3gsoY4kXmk9Nalbi38TaFpYx3YVdKUqTDW+gjBwzUxCitfRTCjAFt87tS+
         OsTvzpL3xzCe3AJi8nZ2ctswY9SlqEXRWC+QCGPoANbTPdhDkzFmN56LagzQQnSZyNTj
         B4oABbNmAFTrS6Sg26Kh15OzTPCZkz/IbOPOltLzTWTzpOTtp/3KpzULmxfPhDe47uv+
         QTtw==
X-Gm-Message-State: AOJu0YyWSVC4J9rzXAov/DgPG1ZezusFfr76aI6RrfiHO0hPw18TtmDr
	KD3DMZb7IhtgMHYVtL68xanSv3frzLq+Mg==
X-Google-Smtp-Source: AGHT+IFo+GTlnKOrBzYD4jaPBNW1enFUjg6Z3NlXjkaIgYWxptQZAOma4B1NUkq1sV6WGY8UFSkLmw==
X-Received: by 2002:a5d:6ac4:0:b0:336:5423:6c9c with SMTP id u4-20020a5d6ac4000000b0033654236c9cmr2300110wrw.16.1705426261475;
        Tue, 16 Jan 2024 09:31:01 -0800 (PST)
Message-ID: <3623ab9b-903e-4576-81b9-c6debe0f900c@citrix.com>
Date: Tue, 16 Jan 2024 17:31:00 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] x86/PV: use altcall for I/O emulation quirk hook
Content-Language: en-GB
To: Jan Beulich <jbeulich@suse.com>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Wei Liu <wl@xen.org>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger.pau@citrix.com>
References: <5f7afa11-3216-4175-b05b-3ff78920fa00@suse.com>
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 xsFNBFLhNn8BEADVhE+Hb8i0GV6mihnnr/uiQQdPF8kUoFzCOPXkf7jQ5sLYeJa0cQi6Penp
 VtiFYznTairnVsN5J+ujSTIb+OlMSJUWV4opS7WVNnxHbFTPYZVQ3erv7NKc2iVizCRZ2Kxn
 srM1oPXWRic8BIAdYOKOloF2300SL/bIpeD+x7h3w9B/qez7nOin5NzkxgFoaUeIal12pXSR
 Q354FKFoy6Vh96gc4VRqte3jw8mPuJQpfws+Pb+swvSf/i1q1+1I4jsRQQh2m6OTADHIqg2E
 ofTYAEh7R5HfPx0EXoEDMdRjOeKn8+vvkAwhviWXTHlG3R1QkbE5M/oywnZ83udJmi+lxjJ5
 YhQ5IzomvJ16H0Bq+TLyVLO/VRksp1VR9HxCzItLNCS8PdpYYz5TC204ViycobYU65WMpzWe
 LFAGn8jSS25XIpqv0Y9k87dLbctKKA14Ifw2kq5OIVu2FuX+3i446JOa2vpCI9GcjCzi3oHV
 e00bzYiHMIl0FICrNJU0Kjho8pdo0m2uxkn6SYEpogAy9pnatUlO+erL4LqFUO7GXSdBRbw5
 gNt25XTLdSFuZtMxkY3tq8MFss5QnjhehCVPEpE6y9ZjI4XB8ad1G4oBHVGK5LMsvg22PfMJ
 ISWFSHoF/B5+lHkCKWkFxZ0gZn33ju5n6/FOdEx4B8cMJt+cWwARAQABzSlBbmRyZXcgQ29v
 cGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPsLBegQTAQgAJAIbAwULCQgHAwUVCgkI
 CwUWAgMBAAIeAQIXgAUCWKD95wIZAQAKCRBlw/kGpdefoHbdD/9AIoR3k6fKl+RFiFpyAhvO
 59ttDFI7nIAnlYngev2XUR3acFElJATHSDO0ju+hqWqAb8kVijXLops0gOfqt3VPZq9cuHlh
 IMDquatGLzAadfFx2eQYIYT+FYuMoPZy/aTUazmJIDVxP7L383grjIkn+7tAv+qeDfE+txL4
 SAm1UHNvmdfgL2/lcmL3xRh7sub3nJilM93RWX1Pe5LBSDXO45uzCGEdst6uSlzYR/MEr+5Z
 JQQ32JV64zwvf/aKaagSQSQMYNX9JFgfZ3TKWC1KJQbX5ssoX/5hNLqxMcZV3TN7kU8I3kjK
 mPec9+1nECOjjJSO/h4P0sBZyIUGfguwzhEeGf4sMCuSEM4xjCnwiBwftR17sr0spYcOpqET
 ZGcAmyYcNjy6CYadNCnfR40vhhWuCfNCBzWnUW0lFoo12wb0YnzoOLjvfD6OL3JjIUJNOmJy
 RCsJ5IA/Iz33RhSVRmROu+TztwuThClw63g7+hoyewv7BemKyuU6FTVhjjW+XUWmS/FzknSi
 dAG+insr0746cTPpSkGl3KAXeWDGJzve7/SBBfyznWCMGaf8E2P1oOdIZRxHgWj0zNr1+ooF
 /PzgLPiCI4OMUttTlEKChgbUTQ+5o0P080JojqfXwbPAyumbaYcQNiH1/xYbJdOFSiBv9rpt
 TQTBLzDKXok86M7BTQRS4TZ/ARAAkgqudHsp+hd82UVkvgnlqZjzz2vyrYfz7bkPtXaGb9H4
 Rfo7mQsEQavEBdWWjbga6eMnDqtu+FC+qeTGYebToxEyp2lKDSoAsvt8w82tIlP/EbmRbDVn
 7bhjBlfRcFjVYw8uVDPptT0TV47vpoCVkTwcyb6OltJrvg/QzV9f07DJswuda1JH3/qvYu0p
 vjPnYvCq4NsqY2XSdAJ02HrdYPFtNyPEntu1n1KK+gJrstjtw7KsZ4ygXYrsm/oCBiVW/OgU
 g/XIlGErkrxe4vQvJyVwg6YH653YTX5hLLUEL1NS4TCo47RP+wi6y+TnuAL36UtK/uFyEuPy
 wwrDVcC4cIFhYSfsO0BumEI65yu7a8aHbGfq2lW251UcoU48Z27ZUUZd2Dr6O/n8poQHbaTd
 6bJJSjzGGHZVbRP9UQ3lkmkmc0+XCHmj5WhwNNYjgbbmML7y0fsJT5RgvefAIFfHBg7fTY/i
 kBEimoUsTEQz+N4hbKwo1hULfVxDJStE4sbPhjbsPCrlXf6W9CxSyQ0qmZ2bXsLQYRj2xqd1
 bpA+1o1j2N4/au1R/uSiUFjewJdT/LX1EklKDcQwpk06Af/N7VZtSfEJeRV04unbsKVXWZAk
 uAJyDDKN99ziC0Wz5kcPyVD1HNf8bgaqGDzrv3TfYjwqayRFcMf7xJaL9xXedMcAEQEAAcLB
 XwQYAQgACQUCUuE2fwIbDAAKCRBlw/kGpdefoG4XEACD1Qf/er8EA7g23HMxYWd3FXHThrVQ
 HgiGdk5Yh632vjOm9L4sd/GCEACVQKjsu98e8o3ysitFlznEns5EAAXEbITrgKWXDDUWGYxd
 pnjj2u+GkVdsOAGk0kxczX6s+VRBhpbBI2PWnOsRJgU2n10PZ3mZD4Xu9kU2IXYmuW+e5KCA
 vTArRUdCrAtIa1k01sPipPPw6dfxx2e5asy21YOytzxuWFfJTGnVxZZSCyLUO83sh6OZhJkk
 b9rxL9wPmpN/t2IPaEKoAc0FTQZS36wAMOXkBh24PQ9gaLJvfPKpNzGD8XWR5HHF0NLIJhgg
 4ZlEXQ2fVp3XrtocHqhu4UZR4koCijgB8sB7Tb0GCpwK+C4UePdFLfhKyRdSXuvY3AHJd4CP
 4JzW0Bzq/WXY3XMOzUTYApGQpnUpdOmuQSfpV9MQO+/jo7r6yPbxT7CwRS5dcQPzUiuHLK9i
 nvjREdh84qycnx0/6dDroYhp0DFv4udxuAvt1h4wGwTPRQZerSm4xaYegEFusyhbZrI0U9tJ
 B8WrhBLXDiYlyJT6zOV2yZFuW47VrLsjYnHwn27hmxTC/7tvG3euCklmkn9Sl9IAKFu29RSo
 d5bD8kMSCYsTqtTfT6W4A3qHGvIDta3ptLYpIAOD2sY3GYq2nf3Bbzx81wZK14JdDDHUX2Rs
 6+ahAA==
In-Reply-To: <5f7afa11-3216-4175-b05b-3ff78920fa00@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 16/01/2024 4:58 pm, Jan Beulich wrote:
> This way we can arrange for ioemul_handle_proliant_quirk()'s ENDBR to
> also be zapped. Utilize existing data rather than introducing another
> otherwise unused static variable (array); eventually (if any new quirk
> was in need of adding) we may want to use .callback and .driver_data
> anyway.
>
> For the decision to be taken before the 2nd alternative patching pass,
> the initcall needs to become a pre-SMP one.
>
> While touching this code, also arrange for it to not be built at all
> when !PV - that way the respective ENDBR won't be there from the
> beginning.
>
> Signed-off-by: Jan Beulich <jbeulich@suse.com>
> ---
> Obviously the file may want moving to pv/ then. I wasn't sure whether
> to also fold doing so right into here.

For PVH dom0, we allow almost blanket IO port access.  We could do the
same for PV dom0 by setting up a suitable TSS IO port bitmap.

That said, x86-S is soon to revoke the ability to do that, so maybe we
just save ourselves the work...


I'm confused about "rather than introducing another otherwise unused
static variable (array)".  Why an array?

In this instance, you could use the same trick as the ctxt switch mask. 
Whether we match DMI or not, it's safe to clobber the ENDBR.  We could
also consider a __{read_mostly,ro_after_init}_cf_clobber sections.


However, it's probably better still to have a `bool prolient_quirk` and
a direct call.  No extra vendor hooks have been added since this was
introduced in 2007, and I really don't foresee this changing in the near
future.  Lets just simplify it and drop all the alternatives/clobbering
games entirely.

~Andrew


From xen-devel-bounces@lists.xenproject.org Tue Jan 16 18:20:14 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 16 Jan 2024 18:20:14 +0000
Received: from list by lists.xenproject.org with outflank-mailman.667940.1039651 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPo2h-0004KC-Qo; Tue, 16 Jan 2024 18:20:07 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 667940.1039651; Tue, 16 Jan 2024 18:20:07 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPo2h-0004K5-OE; Tue, 16 Jan 2024 18:20:07 +0000
Received: by outflank-mailman (input) for mailman id 667940;
 Tue, 16 Jan 2024 18:20:06 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=/Syk=I2=cloud.com=kelly.choi@srs-se1.protection.inumbo.net>)
 id 1rPo2g-0004Ex-6o
 for xen-devel@lists.xenproject.org; Tue, 16 Jan 2024 18:20:06 +0000
Received: from mail-ed1-x529.google.com (mail-ed1-x529.google.com
 [2a00:1450:4864:20::529])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id def8b9eb-b49b-11ee-98f1-6d05b1d4d9a1;
 Tue, 16 Jan 2024 19:20:05 +0100 (CET)
Received: by mail-ed1-x529.google.com with SMTP id
 4fb4d7f45d1cf-557bfc7f7b4so15548069a12.0
 for <xen-devel@lists.xenproject.org>; Tue, 16 Jan 2024 10:20:05 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: def8b9eb-b49b-11ee-98f1-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1705429204; x=1706034004; darn=lists.xenproject.org;
        h=cc:to:subject:message-id:date:from:in-reply-to:references
         :mime-version:from:to:cc:subject:date:message-id:reply-to;
        bh=djvNaPGdNM6JP18DEgpQPNZqqxx2Mkl0btfjrLqJIUY=;
        b=P6hC0tSIlnZs2gszhjdv/mLQbuKsQVdOQh3y+LVsmawna/oKrbkc+1RqEyg3riBTXy
         BANho9AI5s//5fmtBBWOiKoGGO2o7A53TD1aDRJam97E+GIGEbjGH2WNTzNXhaiWGnof
         qRM8gykmL3pP3AHHs5cJenAE7cbOMAwoAbuME=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705429204; x=1706034004;
        h=cc:to:subject:message-id:date:from:in-reply-to:references
         :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id
         :reply-to;
        bh=djvNaPGdNM6JP18DEgpQPNZqqxx2Mkl0btfjrLqJIUY=;
        b=oafycZQXt95rAe6Xi8qgN4XkTPKrGWOy2bxdfRXLzZwUGSylaOoEcmn8I0lNsStW78
         gx1zsj587qPKse/KnH6uzKSmO7Fy/TpJyxOGG8vLNj/2Zr+CI8/Se/jmwf3D0st3nYlp
         weKJq8m/csMbNBmy+syNiXYn9R/lDji05UbH+//9nbtPKKv3fo/Rfh7DwLvzZ2/l7fpi
         +ZFiLpT5gg8R8tgWMjOYk1JTElzOh1BpF/QETuxfZB0Py4ojg8M6/YnyfRdakGQIi6Lc
         CAT4Q4zaD6R5D4mPhXKYXPhvnnhXRmCfcZEUlMw1wakDq+Bfqo3WC/IofGxL7tGyl3GN
         bI3g==
X-Gm-Message-State: AOJu0YyjpmBPcQTNfOyE9yU/Eb7SOpY2/giRhB8V3qs89aIJHJ6Qb9iD
	amZr3gWLSg5GsFbpLXcMa0ZpJ9wKyA7mEg77zKXL1XxQv/ewhlcvLSXs9wlRwyQ=
X-Google-Smtp-Source: AGHT+IE8hKRkESJQx4huWqgmeYQJEJpsdfWRjac+i1MjYYMxZEdEDnPtSAn5bb7K+Zh7VqxbCjJvfrpnUU5a+Rip/aY=
X-Received: by 2002:a17:907:a78b:b0:a2c:ea05:66b2 with SMTP id
 vx11-20020a170907a78b00b00a2cea0566b2mr7314967ejc.45.1705429204179; Tue, 16
 Jan 2024 10:20:04 -0800 (PST)
MIME-Version: 1.0
References: <CAO-mL=xGuvvD24WCD6xsCVJDCgb44uh-214GO-ueTWqqeDrgjQ@mail.gmail.com>
In-Reply-To: <CAO-mL=xGuvvD24WCD6xsCVJDCgb44uh-214GO-ueTWqqeDrgjQ@mail.gmail.com>
From: Kelly Choi <kelly.choi@cloud.com>
Date: Tue, 16 Jan 2024 18:19:27 +0000
Message-ID: <CAO-mL=z43+rfwWAdjFbVuvToiFPrSNYzNLYkUMcEnT6jxnQeRQ@mail.gmail.com>
Subject: Re: Governance change proposal on small updates
To: xen-devel@lists.xenproject.org
Cc: committers@xenproject.org
Content-Type: multipart/alternative; boundary="000000000000e7b4a9060f142df9"

--000000000000e7b4a9060f142df9
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

Hi all,

I have not had any further feedback opposing this proposal and will go
ahead with the changes.

Many thanks,
Kelly Choi

Community Manager
Xen Project


On Thu, Dec 21, 2023 at 1:00=E2=80=AFPM Kelly Choi <kelly.choi@cloud.com> w=
rote:

> Hi all,
>
> I am proposing a small change in how we update non-trivial matters in our
> governance.
>
> Currently, any governance change requires a formal vote. However, there
> will be times when this is unnecessary and would hinder progress in the
> project. For example, my previous email proposal on changes to clarity an=
d
> inclusivity language. As it stands, I have not received any pushback or
> feedback from the community.
>
> To help us progress faster, I would suggest the following:
> -* Small changes will still need to be proposed to xen-devel and the
> community*
> *- The community is welcome to give as much feedback as necessary before
> any changes are made*
> *- Proposals can be changed/updated as needed, then resubmitted to the
> community *
> *- Anyone can object to these changes or call a vote within 30 days of th=
e
> proposal if deemed necessary*
> *- A committer must ack the change for it to go ahead*
> *- If the community manager does not hear any feedback within 30 days, th=
e
> changes can be acked by a committer and put into the governance*
> *- All important matters and policy changes to the community will still g=
o
> through a formal voting process. This change only applies to small matter=
s
> within the governance. *
>
> Examples:
> *- Wording or spelling changes*
> *- Updating small sentences or clarity changes*
> *- Adding examples to existing code of conduct policies*
>
> I welcome your thoughts on the above proposal.
> Please reply by 14th January 2024 should you have any objections to this.
> If by lazy consensus I do not hear back from this date, I will assume I
> have your agreement on this.
>
> Many thanks,
> Kelly Choi
>
> Community Manager
> Xen Project
>
>
> On Fri, Nov 24, 2023 at 10:57=E2=80=AFAM Kelly Choi <kelly.choi@cloud.com=
> wrote:
>
>> Hi all,
>>
>> Please see an updated Governance PR on GitLab here:
>> https://gitlab.com/xen-project/governance/governance/-/merge_requests/1
>>
>> Comments:
>>
>> Revise code of conduct for enhanced clarity, inclusivity, and
>> accountability
>>
>> In response to valuable feedback from community members and in alignment
>> with our ongoing commitment to creating a safe and welcoming space for
>> collaboration, this commit refines the code of conduct. The changes focu=
s
>> on:
>>
>>    - *Clarity:* Rewording sections to eliminate ambiguity and ensure
>>    that expectations are clearly communicated.
>>    - *Inclusivity:* Adding language to emphasize our dedication to
>>    diversity and inclusion, and providing examples to illustrate the typ=
es of
>>    behavior we encourage.
>>
>> These updates aim to foster a more positive and collaborative atmosphere
>> within our community. Please review the changes and don't hesitate to
>> provide further input or suggestions.
>>
>> Note that the patches should be read as a whole; I'm still learning git
>> and using the gitlab UI, which doesn't have a way to do history editing.
>> Many thanks,
>> Kelly Choi
>>
>> Open Source Community Manager
>> XenServer, Cloud Software Group
>>
>

--000000000000e7b4a9060f142df9
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr">Hi all,<div><br></div><div>I have not had any further feed=
back opposing this proposal and will go ahead with the changes.=C2=A0</div>=
<div><br clear=3D"all"><div><div dir=3D"ltr" class=3D"gmail_signature" data=
-smartmail=3D"gmail_signature"><div dir=3D"ltr"><div>Many thanks,</div><div=
>Kelly Choi</div><div><br></div><div><div style=3D"color:rgb(136,136,136)">=
Community Manager</div><div style=3D"color:rgb(136,136,136)">Xen Project=C2=
=A0<br></div></div></div></div></div><br></div></div><br><div class=3D"gmai=
l_quote"><div dir=3D"ltr" class=3D"gmail_attr">On Thu, Dec 21, 2023 at 1:00=
=E2=80=AFPM Kelly Choi &lt;<a href=3D"mailto:kelly.choi@cloud.com">kelly.ch=
oi@cloud.com</a>&gt; wrote:<br></div><blockquote class=3D"gmail_quote" styl=
e=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);paddin=
g-left:1ex"><div dir=3D"ltr"><div dir=3D"ltr">Hi all,<div><br></div><div>I =
am proposing a small change in how we update non-trivial matters in our gov=
ernance.</div><div><br></div><div>Currently, any governance=C2=A0change req=
uires a formal vote. However, there will be times when this is unnecessary =
and would hinder progress in the project. For example, my previous email pr=
oposal on changes to clarity and inclusivity language. As it stands, I have=
 not received any pushback or feedback from the community.=C2=A0</div><div>=
<br></div><div>To help us progress faster, I would suggest the following:</=
div><div>-<i>=C2=A0Small changes will still need to be proposed to xen-deve=
l and the community</i></div><div><i>- The community is welcome to give as =
much feedback as necessary before any changes are made</i><i><br></i></div>=
<div><i>- Proposals can be changed/updated as needed, then resubmitted to t=
he community=C2=A0</i></div><div><i>- Anyone can object to these changes or=
 call a vote within 30 days of the proposal if deemed necessary</i></div><d=
iv><i>- A committer must ack the change for it to go ahead</i></div><div><i=
>- If the community manager does not hear any feedback within 30 days, the =
changes can be acked=C2=A0by a committer and put into the governance</i></d=
iv><div><i><b>- All important matters and policy changes to the community w=
ill still go through a formal voting process. This change only applies to s=
mall matters within the governance.=C2=A0</b></i></div><div><br></div><div>=
Examples:</div><div><i>- Wording or spelling changes</i></div><div><i>- Upd=
ating small sentences or clarity changes</i></div><div><i>- Adding examples=
 to existing code of conduct policies</i></div><div><br></div><div>I welcom=
e your thoughts on the above proposal.=C2=A0</div><div><font color=3D"#ff00=
00">Please reply by 14th January 2024 should you have any objections to thi=
s.=C2=A0</font></div><div>If by lazy consensus I do not hear back from this=
 date, I will assume I have your agreement on this.=C2=A0</div><div><br cle=
ar=3D"all"><div><div dir=3D"ltr" class=3D"gmail_signature"><div dir=3D"ltr"=
><div>Many thanks,</div><div>Kelly Choi</div><div><br></div><div><div style=
=3D"color:rgb(136,136,136)">Community Manager</div><div style=3D"color:rgb(=
136,136,136)">Xen Project=C2=A0<br></div></div></div></div></div><br></div>=
</div><br><div class=3D"gmail_quote"><div dir=3D"ltr" class=3D"gmail_attr">=
On Fri, Nov 24, 2023 at 10:57=E2=80=AFAM Kelly Choi &lt;<a href=3D"mailto:k=
elly.choi@cloud.com" target=3D"_blank">kelly.choi@cloud.com</a>&gt; wrote:<=
br></div><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8e=
x;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir=3D"ltr"=
>Hi all,=C2=A0<div><br></div><div>Please see an updated Governance PR on Gi=
tLab here:</div><div><a href=3D"https://gitlab.com/xen-project/governance/g=
overnance/-/merge_requests/1" target=3D"_blank">https://gitlab.com/xen-proj=
ect/governance/governance/-/merge_requests/1</a>=C2=A0<br></div><div><p>Com=
ments:</p><p dir=3D"auto">Revise code of conduct for enhanced clarity, incl=
usivity, and accountability</p>
<p dir=3D"auto">In response to valuable feedback from community members and=
 in alignment with our ongoing commitment to creating a safe and welcoming =
space for collaboration, this commit refines the code of conduct. The chang=
es focus on:</p>
<ul dir=3D"auto">
<li>
<strong>Clarity:</strong> Rewording sections to eliminate ambiguity and ens=
ure that expectations are clearly communicated.</li>
<li>
<strong>Inclusivity:</strong> Adding language to emphasize our dedication t=
o diversity and inclusion, and providing examples to illustrate the types o=
f behavior we encourage.</li>
</ul>
<p dir=3D"auto">These updates aim to foster a more positive and collaborati=
ve atmosphere within our community. Please review the changes and don&#39;t=
 hesitate to provide further input or suggestions.</p>
<p dir=3D"auto">Note that the patches should be read as a whole; I&#39;m st=
ill learning git and using the gitlab UI, which doesn&#39;t have a way to d=
o history editing.</p></div><div><div><div dir=3D"ltr" class=3D"gmail_signa=
ture"><div dir=3D"ltr"><div>Many thanks,</div><div>Kelly Choi</div><div><br=
></div><div><div style=3D"color:rgb(136,136,136)">Open Source Community Man=
ager</div><div style=3D"color:rgb(136,136,136)">XenServer, Cloud Software G=
roup</div></div></div></div></div></div></div>
</blockquote></div></div>
</blockquote></div>

--000000000000e7b4a9060f142df9--


From xen-devel-bounces@lists.xenproject.org Tue Jan 16 18:51:48 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 16 Jan 2024 18:51:48 +0000
Received: from list by lists.xenproject.org with outflank-mailman.667946.1039661 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPoXE-0002UV-8p; Tue, 16 Jan 2024 18:51:40 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 667946.1039661; Tue, 16 Jan 2024 18:51:40 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPoXE-0002UO-6F; Tue, 16 Jan 2024 18:51:40 +0000
Received: by outflank-mailman (input) for mailman id 667946;
 Tue, 16 Jan 2024 18:51:39 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=wmx9=I2=amazon.co.uk=prvs=738631f0b=eliasely@srs-se1.protection.inumbo.net>)
 id 1rPoXD-0002UD-1H
 for xen-devel@lists.xenproject.org; Tue, 16 Jan 2024 18:51:39 +0000
Received: from smtp-fw-80007.amazon.com (smtp-fw-80007.amazon.com
 [99.78.197.218]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 453fce27-b4a0-11ee-98f1-6d05b1d4d9a1;
 Tue, 16 Jan 2024 19:51:36 +0100 (CET)
Received: from pdx4-co-svc-p1-lb2-vlan2.amazon.com (HELO
 email-inbound-relay-pdx-2c-m6i4x-8c5b1df3.us-west-2.amazon.com)
 ([10.25.36.210]) by smtp-border-fw-80007.pdx80.corp.amazon.com with
 ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 16 Jan 2024 18:51:32 +0000
Received: from smtpout.prod.us-east-1.prod.farcaster.email.amazon.dev
 (pdx2-ws-svc-p26-lb5-vlan3.pdx.amazon.com [10.39.38.70])
 by email-inbound-relay-pdx-2c-m6i4x-8c5b1df3.us-west-2.amazon.com (Postfix)
 with ESMTPS id 4DFBF40D9D; Tue, 16 Jan 2024 18:51:32 +0000 (UTC)
Received: from EX19MTAUEB001.ant.amazon.com [10.0.44.209:13275]
 by smtpin.naws.us-east-1.prod.farcaster.email.amazon.dev [10.0.89.133:2525]
 with esmtp (Farcaster)
 id 1e494742-426e-4592-aea5-4ca418fc1d55; Tue, 16 Jan 2024 18:51:31 +0000 (UTC)
Received: from EX19D008UEC004.ant.amazon.com (10.252.135.170) by
 EX19MTAUEB001.ant.amazon.com (10.252.135.108) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1118.40; Tue, 16 Jan 2024 18:51:31 +0000
Received: from EX19MTAUWB001.ant.amazon.com (10.250.64.248) by
 EX19D008UEC004.ant.amazon.com (10.252.135.170) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1118.40; Tue, 16 Jan 2024 18:51:30 +0000
Received: from dev-dsk-eliasely-1a-fd74790f.eu-west-1.amazon.com
 (10.253.91.118) by mail-relay.amazon.com (10.250.64.254) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1118.40 via Frontend Transport; Tue, 16 Jan 2024 18:51:29 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 453fce27-b4a0-11ee-98f1-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
  d=amazon.com; i=@amazon.com; q=dns/txt; s=amazon201209;
  t=1705431096; x=1736967096;
  h=from:to:cc:subject:date:message-id:in-reply-to:
   references:mime-version:content-transfer-encoding;
  bh=v62iLnCTpjjwMqV4HyxrM90zKMQWzF/DsYPcQzLLs10=;
  b=gdvIBTShINXxxyP1DGUbwzYy2lI4QujNQKPIUCrIlmBPFxzaQhjAhbMR
   /pwlAVcc7mI7O3pTlTwPU1Qpe9GlNHuwE5VNBFEE9WvG8AHeF8igbSZGL
   nNiRJ4Yh20ejN0nmvNRJ81kFRIiFr96GrJ1cIQvmnTPaZcJBSYmLcI5UU
   g=;
X-IronPort-AV: E=Sophos;i="6.05,200,1701129600"; 
   d="scan'208";a="267182047"
X-Farcaster-Flow-ID: 1e494742-426e-4592-aea5-4ca418fc1d55
From: Elias El Yandouzi <eliasely@amazon.com>
To: <xen-devel@lists.xenproject.org>
CC: <julien@xen.org>, <pdurrant@amazon.com>, <dwmw@amazon.com>, Julien Grall
	<jgrall@amazon.com>, Andrew Cooper <andrew.cooper3@citrix.com>, George Dunlap
	<george.dunlap@citrix.com>, Jan Beulich <jbeulich@suse.com>, "Stefano
 Stabellini" <sstabellini@kernel.org>, Wei Liu <wl@xen.org>, Elias El Yandouzi
	<eliasely@amazon.com>
Subject: [PATCH v2] xen/vmap: Check the page has been mapped in vm_init_type()
Date: Tue, 16 Jan 2024 18:50:30 +0000
Message-ID: <20240116185056.15000-2-eliasely@amazon.com>
X-Mailer: git-send-email 2.40.1
In-Reply-To: <20240116185056.15000-1-eliasely@amazon.com>
References: <20240116185056.15000-1-eliasely@amazon.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain

From: Julien Grall <jgrall@amazon.com>

The function map_pages_to_xen() could fail if it can't allocate the
underlying page tables or (at least on Arm) if the area was already
mapped.

The first error is caught by clear_page() because it would fault.
However, the second error while very unlikely is not caught at all.

As this is boot code, use BUG_ON() to check if map_pages_to_xen() has
succeeded.

Signed-off-by: Julien Grall <jgrall@amazon.com>
Signed-off-by: Elias El Yandouzi <eliasely@amazon.com>

----

    Changes in v2:
        - New patch

diff --git a/xen/common/vmap.c b/xen/common/vmap.c
index 330e2ba897..830f64c5ef 100644
--- a/xen/common/vmap.c
+++ b/xen/common/vmap.c
@@ -35,8 +35,11 @@ void __init vm_init_type(enum vmap_region type, void *start, void *end)
     for ( i = 0, va = (unsigned long)vm_bitmap(type); i < nr; ++i, va += PAGE_SIZE )
     {
         struct page_info *pg = alloc_domheap_page(NULL, 0);
+        int rc;
+
+        rc = map_pages_to_xen(va, page_to_mfn(pg), 1, PAGE_HYPERVISOR);
+        BUG_ON(rc);
 
-        map_pages_to_xen(va, page_to_mfn(pg), 1, PAGE_HYPERVISOR);
         clear_page((void *)va);
     }
     bitmap_fill(vm_bitmap(type), vm_low[type]);
-- 
2.40.1



From xen-devel-bounces@lists.xenproject.org Tue Jan 16 18:51:48 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 16 Jan 2024 18:51:48 +0000
Received: from list by lists.xenproject.org with outflank-mailman.667947.1039666 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPoXE-0002X8-It; Tue, 16 Jan 2024 18:51:40 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 667947.1039666; Tue, 16 Jan 2024 18:51:40 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPoXE-0002Wg-DJ; Tue, 16 Jan 2024 18:51:40 +0000
Received: by outflank-mailman (input) for mailman id 667947;
 Tue, 16 Jan 2024 18:51:39 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=wmx9=I2=amazon.co.uk=prvs=738631f0b=eliasely@srs-se1.protection.inumbo.net>)
 id 1rPoXD-0002UD-8m
 for xen-devel@lists.xenproject.org; Tue, 16 Jan 2024 18:51:39 +0000
Received: from smtp-fw-9102.amazon.com (smtp-fw-9102.amazon.com
 [207.171.184.29]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 45fd0d18-b4a0-11ee-98f1-6d05b1d4d9a1;
 Tue, 16 Jan 2024 19:51:37 +0100 (CET)
Received: from pdx4-co-svc-p1-lb2-vlan3.amazon.com (HELO
 email-inbound-relay-iad-1e-m6i4x-3e1fab07.us-east-1.amazon.com)
 ([10.25.36.214]) by smtp-border-fw-9102.sea19.amazon.com with
 ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 16 Jan 2024 18:51:29 +0000
Received: from smtpout.prod.us-east-1.prod.farcaster.email.amazon.dev
 (iad7-ws-svc-p70-lb3-vlan3.iad.amazon.com [10.32.235.38])
 by email-inbound-relay-iad-1e-m6i4x-3e1fab07.us-east-1.amazon.com (Postfix)
 with ESMTPS id 16BED8225B; Tue, 16 Jan 2024 18:51:24 +0000 (UTC)
Received: from EX19MTAUEA002.ant.amazon.com [10.0.29.78:52782]
 by smtpin.naws.us-east-1.prod.farcaster.email.amazon.dev [10.0.89.133:2525]
 with esmtp (Farcaster)
 id 51de375d-ff58-48f6-9b91-037c1e05f0a8; Tue, 16 Jan 2024 18:51:23 +0000 (UTC)
Received: from EX19D008UEA001.ant.amazon.com (10.252.134.62) by
 EX19MTAUEA002.ant.amazon.com (10.252.134.9) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1118.40; Tue, 16 Jan 2024 18:51:23 +0000
Received: from EX19MTAUWB001.ant.amazon.com (10.250.64.248) by
 EX19D008UEA001.ant.amazon.com (10.252.134.62) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1118.40; Tue, 16 Jan 2024 18:51:22 +0000
Received: from dev-dsk-eliasely-1a-fd74790f.eu-west-1.amazon.com
 (10.253.91.118) by mail-relay.amazon.com (10.250.64.254) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1118.40 via Frontend Transport; Tue, 16 Jan 2024 18:51:20 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 45fd0d18-b4a0-11ee-98f1-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
  d=amazon.com; i=@amazon.com; q=dns/txt; s=amazon201209;
  t=1705431097; x=1736967097;
  h=from:to:cc:subject:date:message-id:mime-version:
   content-transfer-encoding;
  bh=xKWNH6kJRXsg48ZEc5dzphr9is8CTmsp5C95JI51wQI=;
  b=dLhb4FFUZpj4EednQMAUpURDD0srbq9H06wJm+Mb+Dq6tbLQpviIPGeD
   mQnoDFs07fe/yykwsMZtnEuFaPAEwOJL+p73GSrW/b2kWcyVpUqTWVKtN
   Hplmb2GsWOPyWYW1afot3J+MClwPoqPm/8fRo6/G/Voh/3R1rFrP2SyuN
   8=;
X-IronPort-AV: E=Sophos;i="6.05,200,1701129600"; 
   d="scan'208";a="390202365"
X-Farcaster-Flow-ID: 51de375d-ff58-48f6-9b91-037c1e05f0a8
From: Elias El Yandouzi <eliasely@amazon.com>
To: <xen-devel@lists.xenproject.org>
CC: <julien@xen.org>, <pdurrant@amazon.com>, <dwmw@amazon.com>, "Elias El
 Yandouzi" <eliasely@amazon.com>, Andrew Cooper <andrew.cooper3@citrix.com>,
	George Dunlap <george.dunlap@citrix.com>, Jan Beulich <jbeulich@suse.com>,
	Stefano Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>, "Bertrand
 Marquis" <bertrand.marquis@arm.com>, Michal Orzel <michal.orzel@amd.com>,
	Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>, Lukasz Hawrylko
	<lukasz@hawrylko.pl>, "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	=?UTF-8?q?Mateusz=20M=C3=B3wka?= <mateusz.mowka@intel.com>
Subject: [PATCH v2] Remove the directmap
Date: Tue, 16 Jan 2024 18:50:29 +0000
Message-ID: <20240116185056.15000-1-eliasely@amazon.com>
X-Mailer: git-send-email 2.40.1
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
Precedence: Bulk

Hi all,

A few years ago, Wei Liu implemented a PoC to remove the directmap
from Xen. The last version was sent by Hongyan Xia [1].

I will start with thanking both Wei and Hongyan for the initial work
to upstream the feature. A lot of patches already went in and this is
the last few patches missing to effectively enable the feature.

=== What is the directmap? ===

At the moment, on both arm64 and x86, most of the RAM is mapped
in Xen address space. This means that domain memory is easily
accessible in Xen.

=== Why do we want to remove the directmap? ===

(Summarizing my understanding of the previous discussion)

Speculation attacks (like Spectre SP1) rely on loading piece of memory
in the cache. If the region is not mapped then it can't be loaded.

So removing reducing the amount of memory mapped in Xen will also
reduce the surface attack.

=== What's the performance impact? ===

As the guest memory is not always mapped, then the cost of mapping
will increase. I haven't done the numbers with this new version, but
some measurement were provided in the previous version for x86.

=== Improvement possible ===

The known area to improve on x86 are:
   * Mapcache: There was a patch sent by Hongyan:
     https://lore.kernel.org/xen-devel/4058e92ce21627731c49b588a95809dc0affd83a.1581015491.git.hongyxia@amazon.com/
   * EPT: At the moment an guest page-tabel walk requires about 20 map/unmap.
     This will have an very high impact on the performance. We need to decide
     whether keep the EPT always mapped is a problem

The original series didn't have support for Arm64. But as there were
some interest, I have provided a PoC.

There are more extra work for Arm64:
   * The mapcache is quite simple. We would investigate the performance
   * The mapcache should be made compliant to the Arm Arm (this is now
     more critical).
   * We will likely have the same problem as for the EPT.
   * We have no support for merging table to a superpage, neither
     free empty page-tables. (See more below)

=== Implementation ===

The subject is probably a misnomer. The directmap is still present but
the RAM is not mapped by default. Instead, the region will still be used
to map pages allocate via alloc_xenheap_pages().

The advantage is the solution is simple (so IHMO good enough for been
merged as a tech preview). The disadvantage is the page allocator is not
trying to keep all the xenheap pages together. So we may end up to have
an increase of page table usage.

In the longer term, we should consider to remove the direct map
completely and switch to vmap(). The main problem with this approach
is it is frequent to use mfn_to_virt() in the code. So we would need
to cache the mapping (maybe in the struct page_info).

=== Why arm32 is not covered? ===

On Arm32, the domheap and xenheap is always separated. So by design
the guest memory is not mapped by default.

At this stage, it seems unnecessary to have to map/unmap xenheap pages
every time they are allocated.

=== Why not using a separate domheap and xenheap? ===

While a separate xenheap/domheap reduce the page-table usage (all
xenheap pages are contiguous and could be always mapped), it is also
currently less scalable because the split is fixed at boot time (XXX:
Can this be dynamic?).

=== Future of secret-free hypervisor ===

There are some information in an e-mail from Andrew a few years ago:

https://lore.kernel.org/xen-devel/e3219697-0759-39fc-2486-715cdec1ca9e@citrix.com/

Cheers,

[1] https://lore.kernel.org/xen-devel/cover.1588278317.git.hongyxia@amazon.com/

*** BLURB HERE ***

Elias El Yandouzi (3):
  xen/x86: Add build assertion for fixmap entries
  Rename mfn_to_virt() calls
  Rename maddr_to_virt() calls

Hongyan Xia (13):
  acpi: vmap pages in acpi_os_alloc_memory
  xen/numa: vmap the pages for memnodemap
  x86/srat: vmap the pages for acpi_slit
  x86: Map/unmap pages in restore_all_guests
  x86/pv: Rewrite how building PV dom0 handles domheap mappings
  x86/pv: Map L4 page table for shim domain
  x86/mapcache: Initialise the mapcache for the idle domain
  x86: Add a boot option to enable and disable the direct map
  x86/domain_page: Remove the fast paths when mfn is not in the
    directmap
  xen/page_alloc: Add a path for xenheap when there is no direct map
  x86/setup: Leave early boot slightly earlier
  x86/setup: vmap heap nodes when they are outside the direct map
  x86/setup: Do not create valid mappings when directmap=no

Julien Grall (8):
  xen/vmap: Check the page has been mapped in vm_init_type()
  xen/vmap: Introduce vmap_size() and use it
  xen/arm: fixmap: Rename the fixmap slots to follow the x86 convention
  xen/x86: Add support for the PMAP
  xen/arm32: mm: Rename 'first' to 'root' in init_secondary_pagetables()
  xen/arm64: mm: Use per-pCPU page-tables
  xen/arm64: Implement a mapcache for arm64
  xen/arm64: Allow the admin to enable/disable the directmap

Wei Liu (3):
  x86/setup: Move vm_init() before acpi calls
  x86/pv: Domheap pages should be mapped while relocating initrd
  x86: Lift mapcache variable to the arch level

 docs/misc/xen-command-line.pandoc             |  12 ++
 xen/arch/arm/Kconfig                          |   3 +-
 xen/arch/arm/acpi/lib.c                       |  18 +--
 xen/arch/arm/arm64/mmu/mm.c                   |  45 +++++-
 xen/arch/arm/domain_page.c                    |  50 ++++++-
 xen/arch/arm/include/asm/arm32/mm.h           |   8 --
 xen/arch/arm/include/asm/arm64/mm.h           |   7 +-
 xen/arch/arm/include/asm/domain_page.h        |  13 ++
 xen/arch/arm/include/asm/early_printk.h       |   2 +-
 xen/arch/arm/include/asm/fixmap.h             |  16 +--
 xen/arch/arm/include/asm/mm.h                 |   9 ++
 xen/arch/arm/include/asm/mmu/layout.h         |  13 +-
 xen/arch/arm/include/asm/mmu/mm.h             |   2 +
 xen/arch/arm/mm.c                             |   1 +
 xen/arch/arm/mmu/pt.c                         |  12 +-
 xen/arch/arm/mmu/setup.c                      |  33 ++---
 xen/arch/arm/mmu/smpboot.c                    |  32 ++---
 xen/arch/arm/setup.c                          |   6 +-
 xen/arch/x86/Kconfig                          |   2 +
 xen/arch/x86/dmi_scan.c                       |   4 +-
 xen/arch/x86/domain.c                         |  12 +-
 xen/arch/x86/domain_page.c                    |  74 +++++++---
 xen/arch/x86/hvm/dom0_build.c                 |   4 +-
 xen/arch/x86/include/asm/config.h             |  12 +-
 xen/arch/x86/include/asm/domain.h             |  13 +-
 xen/arch/x86/include/asm/fixmap.h             |   9 ++
 .../x86/include/asm/mach-default/bios_ebda.h  |   2 +-
 xen/arch/x86/include/asm/mm.h                 |  10 +-
 xen/arch/x86/include/asm/page.h               |   8 +-
 xen/arch/x86/include/asm/pmap.h               |  25 ++++
 xen/arch/x86/include/asm/x86_64/page.h        |   2 +-
 xen/arch/x86/mm.c                             |  18 ++-
 xen/arch/x86/mpparse.c                        |   2 +-
 xen/arch/x86/pv/dom0_build.c                  |  73 +++++++---
 xen/arch/x86/pv/domain.c                      |  34 +++++
 xen/arch/x86/setup.c                          | 129 +++++++++++++++---
 xen/arch/x86/srat.c                           |   4 +-
 xen/arch/x86/tboot.c                          |   2 +-
 xen/arch/x86/x86_64/asm-offsets.c             |   1 +
 xen/arch/x86/x86_64/entry.S                   |   8 ++
 xen/arch/x86/x86_64/mm.c                      |  26 ++--
 xen/common/Kconfig                            |  17 +++
 xen/common/efi/boot.c                         |  23 ++--
 xen/common/numa.c                             |   9 +-
 xen/common/page_alloc.c                       |  89 ++++++++++--
 xen/common/pmap.c                             |   8 +-
 xen/common/trace.c                            |   8 +-
 xen/common/vmap.c                             |  62 ++++++---
 xen/drivers/acpi/osl.c                        |  14 +-
 xen/include/xen/mm.h                          |   7 +
 xen/include/xen/vmap.h                        |   4 +
 51 files changed, 753 insertions(+), 244 deletions(-)
 create mode 100644 xen/arch/arm/include/asm/domain_page.h
 create mode 100644 xen/arch/x86/include/asm/pmap.h

-- 
2.40.1



From xen-devel-bounces@lists.xenproject.org Tue Jan 16 18:51:48 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 16 Jan 2024 18:51:48 +0000
Received: from list by lists.xenproject.org with outflank-mailman.667948.1039683 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPoXF-0002ws-Nf; Tue, 16 Jan 2024 18:51:41 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 667948.1039683; Tue, 16 Jan 2024 18:51:41 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPoXF-0002wl-JQ; Tue, 16 Jan 2024 18:51:41 +0000
Received: by outflank-mailman (input) for mailman id 667948;
 Tue, 16 Jan 2024 18:51:40 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=wmx9=I2=amazon.co.uk=prvs=738631f0b=eliasely@srs-se1.protection.inumbo.net>)
 id 1rPoXE-0002UD-BK
 for xen-devel@lists.xenproject.org; Tue, 16 Jan 2024 18:51:40 +0000
Received: from smtp-fw-52004.amazon.com (smtp-fw-52004.amazon.com
 [52.119.213.154]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 477e5fee-b4a0-11ee-98f1-6d05b1d4d9a1;
 Tue, 16 Jan 2024 19:51:39 +0100 (CET)
Received: from iad12-co-svc-p1-lb1-vlan2.amazon.com (HELO
 email-inbound-relay-pdx-2c-m6i4x-8c5b1df3.us-west-2.amazon.com) ([10.43.8.2])
 by smtp-border-fw-52004.iad7.amazon.com with
 ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 16 Jan 2024 18:51:36 +0000
Received: from smtpout.prod.us-east-1.prod.farcaster.email.amazon.dev
 (pdx2-ws-svc-p26-lb5-vlan3.pdx.amazon.com [10.39.38.70])
 by email-inbound-relay-pdx-2c-m6i4x-8c5b1df3.us-west-2.amazon.com (Postfix)
 with ESMTPS id 1A97A40D9D; Tue, 16 Jan 2024 18:51:35 +0000 (UTC)
Received: from EX19MTAUEB002.ant.amazon.com [10.0.44.209:38276]
 by smtpin.naws.us-east-1.prod.farcaster.email.amazon.dev [10.0.19.196:2525]
 with esmtp (Farcaster)
 id c77e5a4c-f232-4e6c-83ee-c950403e7d81; Tue, 16 Jan 2024 18:51:34 +0000 (UTC)
Received: from EX19D008UEA004.ant.amazon.com (10.252.134.191) by
 EX19MTAUEB002.ant.amazon.com (10.252.135.47) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1118.40; Tue, 16 Jan 2024 18:51:34 +0000
Received: from EX19MTAUWB001.ant.amazon.com (10.250.64.248) by
 EX19D008UEA004.ant.amazon.com (10.252.134.191) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1118.40; Tue, 16 Jan 2024 18:51:33 +0000
Received: from dev-dsk-eliasely-1a-fd74790f.eu-west-1.amazon.com
 (10.253.91.118) by mail-relay.amazon.com (10.250.64.254) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1118.40 via Frontend Transport; Tue, 16 Jan 2024 18:51:31 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 477e5fee-b4a0-11ee-98f1-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
  d=amazon.com; i=@amazon.com; q=dns/txt; s=amazon201209;
  t=1705431099; x=1736967099;
  h=from:to:cc:subject:date:message-id:in-reply-to:
   references:mime-version:content-transfer-encoding;
  bh=3bfMq1Uef4k7zIlKxhavHHhyVuwSclhXcQaPCDrDa7g=;
  b=YAKYjJJV21lFdmQcR7smwkE6+wndBlU7c46TWYKpUPZX17m+d+kuPTkm
   Be8/240oHQ+WgPQhX3hC+RbsIU2JwG/WTlQbiq7ixmIsd2yFL/OVYb68o
   3Pf7vlnB22lW80IF+JBBjJWr06auo74sQlKJMXx60mm89X8WAXjOReO0a
   k=;
X-IronPort-AV: E=Sophos;i="6.05,200,1701129600"; 
   d="scan'208";a="178391790"
X-Farcaster-Flow-ID: c77e5a4c-f232-4e6c-83ee-c950403e7d81
From: Elias El Yandouzi <eliasely@amazon.com>
To: <xen-devel@lists.xenproject.org>
CC: <julien@xen.org>, <pdurrant@amazon.com>, <dwmw@amazon.com>, Wei Liu
	<wei.liu2@citrix.com>, Stefano Stabellini <sstabellini@kernel.org>, "Bertrand
 Marquis" <bertrand.marquis@arm.com>, Michal Orzel <michal.orzel@amd.com>,
	Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>, Andrew Cooper
	<andrew.cooper3@citrix.com>, George Dunlap <george.dunlap@citrix.com>, "Jan
 Beulich" <jbeulich@suse.com>, Wei Liu <wl@xen.org>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>, David Woodhouse
	<dwmw2@amazon.com>, Hongyan Xia <hongyxia@amazon.com>, Julien Grall
	<jgrall@amazon.com>, Elias El Yandouzi <eliasely@amazon.com>
Subject: [PATCH v2] x86/setup: Move vm_init() before acpi calls
Date: Tue, 16 Jan 2024 18:50:31 +0000
Message-ID: <20240116185056.15000-3-eliasely@amazon.com>
X-Mailer: git-send-email 2.40.1
In-Reply-To: <20240116185056.15000-1-eliasely@amazon.com>
References: <20240116185056.15000-1-eliasely@amazon.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain

From: Wei Liu <wei.liu2@citrix.com>

After the direct map removal, pages from the boot allocator are not
going to be mapped in the direct map. Although we have map_domain_page,
they are ephemeral and are less helpful for mappings that are more than a
page, so we want a mechanism to globally map a range of pages, which is
what vmap is for. Therefore, we bring vm_init into early boot stage.

To allow vmap to be initialised and used in early boot, we need to
modify vmap to receive pages from the boot allocator during early boot
stage.

Signed-off-by: Wei Liu <wei.liu2@citrix.com>
Signed-off-by: David Woodhouse <dwmw2@amazon.com>
Signed-off-by: Hongyan Xia <hongyxia@amazon.com>
Signed-off-by: Julien Grall <jgrall@amazon.com>
Signed-off-by: Elias El Yandouzi <eliasely@amazon.com>

----

    Changes in v2:
        - The return of map_pages_to_xen() is now checked in a separate
          patch
        - Clarify the commit message
        - Group the new boolean with the others

diff --git a/xen/arch/arm/setup.c b/xen/arch/arm/setup.c
index 59dd9bb25a..7e28f62d09 100644
--- a/xen/arch/arm/setup.c
+++ b/xen/arch/arm/setup.c
@@ -748,6 +748,8 @@ void asmlinkage __init start_xen(unsigned long boot_phys_offset,
 
     setup_mm();
 
+    vm_init();
+
     /* Parse the ACPI tables for possible boot-time configuration */
     acpi_boot_table_init();
 
@@ -759,8 +761,6 @@ void asmlinkage __init start_xen(unsigned long boot_phys_offset,
      */
     system_state = SYS_STATE_boot;
 
-    vm_init();
-
     if ( acpi_disabled )
     {
         printk("Booting using Device Tree\n");
diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
index 897b7e9208..4d0c90b7a0 100644
--- a/xen/arch/x86/setup.c
+++ b/xen/arch/x86/setup.c
@@ -989,6 +989,7 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
     int i, j, e820_warn = 0, bytes = 0;
     unsigned long eb_start, eb_end;
     bool acpi_boot_table_init_done = false, relocated = false;
+    bool vm_init_done = false;
     int ret;
     struct ns16550_defaults ns16550 = {
         .data_bits = 8,
@@ -1531,12 +1532,23 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
             continue;
 
         if ( !acpi_boot_table_init_done &&
-             s >= (1ULL << 32) &&
-             !acpi_boot_table_init() )
+             s >= (1ULL << 32) )
         {
-            acpi_boot_table_init_done = true;
-            srat_parse_regions(s);
-            setup_max_pdx(raw_max_page);
+            /*
+             * We only initialise vmap and acpi after going through the bottom
+             * 4GiB, so that we have enough pages in the boot allocator.
+             */
+            if ( !vm_init_done )
+            {
+                vm_init();
+                vm_init_done = true;
+            }
+            if ( !acpi_boot_table_init() )
+            {
+                acpi_boot_table_init_done = true;
+                srat_parse_regions(s);
+                setup_max_pdx(raw_max_page);
+            }
         }
 
         if ( pfn_to_pdx((e - 1) >> PAGE_SHIFT) >= max_pdx )
@@ -1722,6 +1734,9 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
 
     init_frametable();
 
+    if ( !vm_init_done )
+        vm_init();
+
     if ( !acpi_boot_table_init_done )
         acpi_boot_table_init();
 
@@ -1761,12 +1776,6 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
         end_boot_allocator();
 
     system_state = SYS_STATE_boot;
-    /*
-     * No calls involving ACPI code should go between the setting of
-     * SYS_STATE_boot and vm_init() (or else acpi_os_{,un}map_memory()
-     * will break).
-     */
-    vm_init();
 
     bsp_stack = cpu_alloc_stack(0);
     if ( !bsp_stack )
diff --git a/xen/common/vmap.c b/xen/common/vmap.c
index 830f64c5ef..fc5c70da4d 100644
--- a/xen/common/vmap.c
+++ b/xen/common/vmap.c
@@ -34,10 +34,19 @@ void __init vm_init_type(enum vmap_region type, void *start, void *end)
 
     for ( i = 0, va = (unsigned long)vm_bitmap(type); i < nr; ++i, va += PAGE_SIZE )
     {
-        struct page_info *pg = alloc_domheap_page(NULL, 0);
+        mfn_t mfn;
         int rc;
 
-        rc = map_pages_to_xen(va, page_to_mfn(pg), 1, PAGE_HYPERVISOR);
+        if ( system_state == SYS_STATE_early_boot )
+            mfn = alloc_boot_pages(1, 1);
+        else
+        {
+            struct page_info *pg = alloc_domheap_page(NULL, 0);
+
+            BUG_ON(!pg);
+            mfn = page_to_mfn(pg);
+        }
+        rc = map_pages_to_xen(va, mfn, 1, PAGE_HYPERVISOR);
         BUG_ON(rc);
 
         clear_page((void *)va);
@@ -65,7 +74,7 @@ static void *vm_alloc(unsigned int nr, unsigned int align,
     spin_lock(&vm_lock);
     for ( ; ; )
     {
-        struct page_info *pg;
+        mfn_t mfn;
 
         ASSERT(vm_low[t] == vm_top[t] || !test_bit(vm_low[t], vm_bitmap(t)));
         for ( start = vm_low[t]; start < vm_top[t]; )
@@ -100,9 +109,16 @@ static void *vm_alloc(unsigned int nr, unsigned int align,
         if ( vm_top[t] >= vm_end[t] )
             return NULL;
 
-        pg = alloc_domheap_page(NULL, 0);
-        if ( !pg )
-            return NULL;
+        if ( system_state == SYS_STATE_early_boot )
+            mfn = alloc_boot_pages(1, 1);
+        else
+        {
+            struct page_info *pg = alloc_domheap_page(NULL, 0);
+
+            if ( !pg )
+                return NULL;
+            mfn = page_to_mfn(pg);
+        }
 
         spin_lock(&vm_lock);
 
@@ -110,7 +126,7 @@ static void *vm_alloc(unsigned int nr, unsigned int align,
         {
             unsigned long va = (unsigned long)vm_bitmap(t) + vm_top[t] / 8;
 
-            if ( !map_pages_to_xen(va, page_to_mfn(pg), 1, PAGE_HYPERVISOR) )
+            if ( !map_pages_to_xen(va, mfn, 1, PAGE_HYPERVISOR) )
             {
                 clear_page((void *)va);
                 vm_top[t] += PAGE_SIZE * 8;
@@ -120,7 +136,10 @@ static void *vm_alloc(unsigned int nr, unsigned int align,
             }
         }
 
-        free_domheap_page(pg);
+        if ( system_state == SYS_STATE_early_boot )
+            init_boot_pages(mfn_to_maddr(mfn), mfn_to_maddr(mfn) + PAGE_SIZE);
+        else
+            free_domheap_page(mfn_to_page(mfn));
 
         if ( start >= vm_top[t] )
         {
-- 
2.40.1



From xen-devel-bounces@lists.xenproject.org Tue Jan 16 18:51:50 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 16 Jan 2024 18:51:50 +0000
Received: from list by lists.xenproject.org with outflank-mailman.667949.1039692 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPoXN-0003H8-UJ; Tue, 16 Jan 2024 18:51:49 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 667949.1039692; Tue, 16 Jan 2024 18:51:49 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPoXN-0003Gz-Qq; Tue, 16 Jan 2024 18:51:49 +0000
Received: by outflank-mailman (input) for mailman id 667949;
 Tue, 16 Jan 2024 18:51:48 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=wmx9=I2=amazon.co.uk=prvs=738631f0b=eliasely@srs-se1.protection.inumbo.net>)
 id 1rPoXM-0002UD-C7
 for xen-devel@lists.xenproject.org; Tue, 16 Jan 2024 18:51:48 +0000
Received: from smtp-fw-33001.amazon.com (smtp-fw-33001.amazon.com
 [207.171.190.10]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 4c289163-b4a0-11ee-98f1-6d05b1d4d9a1;
 Tue, 16 Jan 2024 19:51:47 +0100 (CET)
Received: from iad12-co-svc-p1-lb1-vlan3.amazon.com (HELO
 email-inbound-relay-iad-1a-m6i4x-86a02d5e.us-east-1.amazon.com) ([10.43.8.6])
 by smtp-border-fw-33001.sea14.amazon.com with
 ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 16 Jan 2024 18:51:40 +0000
Received: from smtpout.prod.us-east-1.prod.farcaster.email.amazon.dev
 (iad7-ws-svc-p70-lb3-vlan2.iad.amazon.com [10.32.235.34])
 by email-inbound-relay-iad-1a-m6i4x-86a02d5e.us-east-1.amazon.com (Postfix)
 with ESMTPS id 25151EB50D; Tue, 16 Jan 2024 18:51:37 +0000 (UTC)
Received: from EX19MTAUEA002.ant.amazon.com [10.0.29.78:13843]
 by smtpin.naws.us-east-1.prod.farcaster.email.amazon.dev [10.0.28.244:2525]
 with esmtp (Farcaster)
 id 7ac88880-68e3-4a2c-a0bf-ca3885a6a86b; Tue, 16 Jan 2024 18:51:36 +0000 (UTC)
Received: from EX19D008UEA004.ant.amazon.com (10.252.134.191) by
 EX19MTAUEA002.ant.amazon.com (10.252.134.9) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1118.40; Tue, 16 Jan 2024 18:51:36 +0000
Received: from EX19MTAUWB001.ant.amazon.com (10.250.64.248) by
 EX19D008UEA004.ant.amazon.com (10.252.134.191) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1118.40; Tue, 16 Jan 2024 18:51:36 +0000
Received: from dev-dsk-eliasely-1a-fd74790f.eu-west-1.amazon.com
 (10.253.91.118) by mail-relay.amazon.com (10.250.64.254) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1118.40 via Frontend Transport; Tue, 16 Jan 2024 18:51:34 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 4c289163-b4a0-11ee-98f1-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
  d=amazon.com; i=@amazon.com; q=dns/txt; s=amazon201209;
  t=1705431108; x=1736967108;
  h=from:to:cc:subject:date:message-id:in-reply-to:
   references:mime-version:content-transfer-encoding;
  bh=8FsCSW5o3cFuUs+oU0aAarf/rBoTpzODox4faRm0p08=;
  b=X0Nqqu+ALOLB9ZxY0tzsD2S/N4TK2C/t5Bgf/m3YR/lcNPHjGv5+04JV
   nWNVMzYHgpC65/SOstJZdreALR6/li7jxJXHHI7b0rHIT0TETFCfSQDkm
   Reiez6ACNJhYzyf2t9Yvwctc5TwuzqpJunzd+BdxvX85LTAtbIX+OAK7D
   M=;
X-IronPort-AV: E=Sophos;i="6.05,200,1701129600"; 
   d="scan'208";a="321874338"
X-Farcaster-Flow-ID: 7ac88880-68e3-4a2c-a0bf-ca3885a6a86b
From: Elias El Yandouzi <eliasely@amazon.com>
To: <xen-devel@lists.xenproject.org>
CC: <julien@xen.org>, <pdurrant@amazon.com>, <dwmw@amazon.com>, Julien Grall
	<jgrall@amazon.com>, Andrew Cooper <andrew.cooper3@citrix.com>, George Dunlap
	<george.dunlap@citrix.com>, Jan Beulich <jbeulich@suse.com>, "Stefano
 Stabellini" <sstabellini@kernel.org>, Wei Liu <wl@xen.org>, Elias El Yandouzi
	<eliasely@amazon.com>
Subject: [PATCH v2] xen/vmap: Introduce vmap_size() and use it
Date: Tue, 16 Jan 2024 18:50:32 +0000
Message-ID: <20240116185056.15000-4-eliasely@amazon.com>
X-Mailer: git-send-email 2.40.1
In-Reply-To: <20240116185056.15000-1-eliasely@amazon.com>
References: <20240116185056.15000-1-eliasely@amazon.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
Precedence: Bulk

From: Julien Grall <jgrall@amazon.com>

vunmap() and vfree() currently duplicate the (small) logic to find the
size of an vmap area. In a follow-up patch, we will want to introduce
another one (this time externally).

So introduce a new helper vmap_size() that will return the number of
pages in the area starting at the given address. Take the opportunity
to replace the open-coded version.

Note that vfree() was storing the type of the area in a local variable.
But this seems to have never been used (even when it was introduced).

Signed-off-by: Julien Grall <jgrall@amazon.com>
Signed-off-by: Elias El Yandouzi <eliasely@amazon.com>

----

    Changes in v2:
        * Patch added

diff --git a/xen/common/vmap.c b/xen/common/vmap.c
index fc5c70da4d..171271fae3 100644
--- a/xen/common/vmap.c
+++ b/xen/common/vmap.c
@@ -245,14 +245,21 @@ void *vmap(const mfn_t *mfn, unsigned int nr)
     return __vmap(mfn, 1, nr, 1, PAGE_HYPERVISOR, VMAP_DEFAULT);
 }
 
-void vunmap(const void *va)
+unsigned int vmap_size(const void *va)
 {
-    unsigned long addr = (unsigned long)va;
     unsigned int pages = vm_size(va, VMAP_DEFAULT);
 
     if ( !pages )
         pages = vm_size(va, VMAP_XEN);
 
+    return pages;
+}
+
+void vunmap(const void *va)
+{
+    unsigned long addr = (unsigned long)va;
+    unsigned pages = vmap_size(va);
+
 #ifndef _PAGE_NONE
     destroy_xen_mappings(addr, addr + PAGE_SIZE * pages);
 #else /* Avoid tearing down intermediate page tables. */
@@ -328,17 +335,11 @@ void vfree(void *va)
     unsigned int i, pages;
     struct page_info *pg;
     PAGE_LIST_HEAD(pg_list);
-    enum vmap_region type = VMAP_DEFAULT;
 
     if ( !va )
         return;
 
-    pages = vm_size(va, type);
-    if ( !pages )
-    {
-        type = VMAP_XEN;
-        pages = vm_size(va, type);
-    }
+    pages = vmap_size(va);
     ASSERT(pages);
 
     for ( i = 0; i < pages; i++ )
diff --git a/xen/include/xen/vmap.h b/xen/include/xen/vmap.h
index 2b7369e062..24c85de490 100644
--- a/xen/include/xen/vmap.h
+++ b/xen/include/xen/vmap.h
@@ -25,6 +25,9 @@ void vfree(void *va);
 
 void __iomem *ioremap(paddr_t pa, size_t len);
 
+/* Return the number of pages in the mapping starting at address 'va' */
+unsigned int vmap_size(const void *va);
+
 static inline void iounmap(void __iomem *va)
 {
     unsigned long addr = (unsigned long)(void __force *)va;
-- 
2.40.1



From xen-devel-bounces@lists.xenproject.org Tue Jan 16 18:51:56 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 16 Jan 2024 18:51:56 +0000
Received: from list by lists.xenproject.org with outflank-mailman.667950.1039702 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPoXU-0003fy-Bb; Tue, 16 Jan 2024 18:51:56 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 667950.1039702; Tue, 16 Jan 2024 18:51:56 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPoXU-0003fm-7q; Tue, 16 Jan 2024 18:51:56 +0000
Received: by outflank-mailman (input) for mailman id 667950;
 Tue, 16 Jan 2024 18:51:55 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=wmx9=I2=amazon.co.uk=prvs=738631f0b=eliasely@srs-se1.protection.inumbo.net>)
 id 1rPoXT-0002UD-1D
 for xen-devel@lists.xenproject.org; Tue, 16 Jan 2024 18:51:55 +0000
Received: from smtp-fw-6002.amazon.com (smtp-fw-6002.amazon.com [52.95.49.90])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 506eb8b9-b4a0-11ee-98f1-6d05b1d4d9a1;
 Tue, 16 Jan 2024 19:51:54 +0100 (CET)
Received: from iad12-co-svc-p1-lb1-vlan3.amazon.com (HELO
 email-inbound-relay-pdx-2b-m6i4x-189d700f.us-west-2.amazon.com) ([10.43.8.6])
 by smtp-border-fw-6002.iad6.amazon.com with
 ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 16 Jan 2024 18:51:52 +0000
Received: from smtpout.prod.us-east-1.prod.farcaster.email.amazon.dev
 (pdx2-ws-svc-p26-lb5-vlan3.pdx.amazon.com [10.39.38.70])
 by email-inbound-relay-pdx-2b-m6i4x-189d700f.us-west-2.amazon.com (Postfix)
 with ESMTPS id BC74840DB4; Tue, 16 Jan 2024 18:51:49 +0000 (UTC)
Received: from EX19MTAUEA001.ant.amazon.com [10.0.44.209:44190]
 by smtpin.naws.us-east-1.prod.farcaster.email.amazon.dev [10.0.53.69:2525]
 with esmtp (Farcaster)
 id 4e784bda-cfc0-4339-b7e4-8735f2c30050; Tue, 16 Jan 2024 18:51:49 +0000 (UTC)
Received: from EX19D008UEA004.ant.amazon.com (10.252.134.191) by
 EX19MTAUEA001.ant.amazon.com (10.252.134.203) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1118.40; Tue, 16 Jan 2024 18:51:39 +0000
Received: from EX19MTAUWB001.ant.amazon.com (10.250.64.248) by
 EX19D008UEA004.ant.amazon.com (10.252.134.191) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1118.40; Tue, 16 Jan 2024 18:51:38 +0000
Received: from dev-dsk-eliasely-1a-fd74790f.eu-west-1.amazon.com
 (10.253.91.118) by mail-relay.amazon.com (10.250.64.254) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1118.40 via Frontend Transport; Tue, 16 Jan 2024 18:51:36 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 506eb8b9-b4a0-11ee-98f1-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
  d=amazon.com; i=@amazon.com; q=dns/txt; s=amazon201209;
  t=1705431115; x=1736967115;
  h=from:to:cc:subject:date:message-id:in-reply-to:
   references:mime-version:content-transfer-encoding;
  bh=OfEYXQrUMYXPAWM79GmQhfyI8aqQMCL5v2pGd2UmDoQ=;
  b=tTT9yHH3piRmJ3UQltT4VKySuiB1TsXg/j3+mBd2HQR0v/JPMxb5LaGW
   PG/fbhsYVkmlFjggK0onWvWmU48hZb8cttmlWcY1B4G6veWSa/nKgzKGM
   IYhpAo/gjdHCBLXFwgY3TBBO9raHWpJ1H4HXJR6eACnE9DIhXx6ZE8A2o
   Y=;
X-IronPort-AV: E=Sophos;i="6.05,200,1701129600"; 
   d="scan'208";a="380173152"
X-Farcaster-Flow-ID: 4e784bda-cfc0-4339-b7e4-8735f2c30050
From: Elias El Yandouzi <eliasely@amazon.com>
To: <xen-devel@lists.xenproject.org>
CC: <julien@xen.org>, <pdurrant@amazon.com>, <dwmw@amazon.com>, Hongyan Xia
	<hongyxia@amazon.com>, Andrew Cooper <andrew.cooper3@citrix.com>, "George
 Dunlap" <george.dunlap@citrix.com>, Jan Beulich <jbeulich@suse.com>, "Stefano
 Stabellini" <sstabellini@kernel.org>, Wei Liu <wl@xen.org>, Julien Grall
	<jgrall@amazon.com>, Elias El Yandouzi <eliasely@amazon.com>
Subject: [PATCH v2] acpi: vmap pages in acpi_os_alloc_memory
Date: Tue, 16 Jan 2024 18:50:33 +0000
Message-ID: <20240116185056.15000-5-eliasely@amazon.com>
X-Mailer: git-send-email 2.40.1
In-Reply-To: <20240116185056.15000-1-eliasely@amazon.com>
References: <20240116185056.15000-1-eliasely@amazon.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
Precedence: Bulk

From: Hongyan Xia <hongyxia@amazon.com>

Also, introduce a wrapper around vmap that maps a contiguous range for
boot allocations. Unfortunately, the new helper cannot be a static inline
because the dependencies are a mess. We would need to re-include
asm/page.h (was removed in aa4b9d1ee653 "include: don't use asm/page.h
from common headers") and it doesn't look to be enough anymore
because bits from asm/cpufeature.h is used in the definition of PAGE_NX.

Lastly, with the move to vmap(), it is now easier to find the size
of the mapping. So pass the whole area to init_boot_pages() rather than
just the first page.

Signed-off-by: Hongyan Xia <hongyxia@amazon.com>
Signed-off-by: Julien Grall <jgrall@amazon.com>
Signed-off-by: Elias El Yandouzi <eliasely@amazon.com>

----

    Changes in v2:
        * Rename vmap_contig_pages() to vmap_contig()
        * Rename nr_pages to nr to be consistent with vmap() parameters
        * Pass the whole region to init_boot_pages()

    Changes since Hongyan's version:
        * Rename vmap_boot_pages() to vmap_contig_pages()
        * Move the new helper in vmap.c to avoid compilation issue
        * Don't use __pa() to translate the virtual address

diff --git a/xen/common/vmap.c b/xen/common/vmap.c
index 171271fae3..966a7e763f 100644
--- a/xen/common/vmap.c
+++ b/xen/common/vmap.c
@@ -245,6 +245,11 @@ void *vmap(const mfn_t *mfn, unsigned int nr)
     return __vmap(mfn, 1, nr, 1, PAGE_HYPERVISOR, VMAP_DEFAULT);
 }
 
+void *vmap_contig(mfn_t mfn, unsigned int nr)
+{
+    return __vmap(&mfn, nr, 1, 1, PAGE_HYPERVISOR, VMAP_DEFAULT);
+}
+
 unsigned int vmap_size(const void *va)
 {
     unsigned int pages = vm_size(va, VMAP_DEFAULT);
diff --git a/xen/drivers/acpi/osl.c b/xen/drivers/acpi/osl.c
index 389505f786..ab80d6b2a9 100644
--- a/xen/drivers/acpi/osl.c
+++ b/xen/drivers/acpi/osl.c
@@ -221,7 +221,11 @@ void *__init acpi_os_alloc_memory(size_t sz)
 	void *ptr;
 
 	if (system_state == SYS_STATE_early_boot)
-		return mfn_to_virt(mfn_x(alloc_boot_pages(PFN_UP(sz), 1)));
+	{
+		mfn_t mfn = alloc_boot_pages(PFN_UP(sz), 1);
+
+		return vmap_contig(mfn, PFN_UP(sz));
+	}
 
 	ptr = xmalloc_bytes(sz);
 	ASSERT(!ptr || is_xmalloc_memory(ptr));
@@ -246,5 +250,11 @@ void __init acpi_os_free_memory(void *ptr)
 	if (is_xmalloc_memory(ptr))
 		xfree(ptr);
 	else if (ptr && system_state == SYS_STATE_early_boot)
-		init_boot_pages(__pa(ptr), __pa(ptr) + PAGE_SIZE);
+	{
+		paddr_t addr = mfn_to_maddr(vmap_to_mfn(ptr));
+		unsigned int nr = vmap_size(ptr);
+
+		vunmap(ptr);
+		init_boot_pages(addr, addr + nr * PAGE_SIZE);
+	}
 }
diff --git a/xen/include/xen/vmap.h b/xen/include/xen/vmap.h
index 24c85de490..0c16baa85f 100644
--- a/xen/include/xen/vmap.h
+++ b/xen/include/xen/vmap.h
@@ -15,6 +15,7 @@ void vm_init_type(enum vmap_region type, void *start, void *end);
 void *__vmap(const mfn_t *mfn, unsigned int granularity, unsigned int nr,
              unsigned int align, unsigned int flags, enum vmap_region type);
 void *vmap(const mfn_t *mfn, unsigned int nr);
+void *vmap_contig(mfn_t mfn, unsigned int nr);
 void vunmap(const void *va);
 
 void *vmalloc(size_t size);
-- 
2.40.1



From xen-devel-bounces@lists.xenproject.org Tue Jan 16 18:52:00 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 16 Jan 2024 18:52:00 +0000
Received: from list by lists.xenproject.org with outflank-mailman.667951.1039712 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPoXY-00046R-Kg; Tue, 16 Jan 2024 18:52:00 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 667951.1039712; Tue, 16 Jan 2024 18:52:00 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPoXY-00046I-He; Tue, 16 Jan 2024 18:52:00 +0000
Received: by outflank-mailman (input) for mailman id 667951;
 Tue, 16 Jan 2024 18:51:59 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=wmx9=I2=amazon.co.uk=prvs=738631f0b=eliasely@srs-se1.protection.inumbo.net>)
 id 1rPoXX-0003xp-2S
 for xen-devel@lists.xenproject.org; Tue, 16 Jan 2024 18:51:59 +0000
Received: from smtp-fw-80008.amazon.com (smtp-fw-80008.amazon.com
 [99.78.197.219]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 50ae57ff-b4a0-11ee-9b0f-b553b5be7939;
 Tue, 16 Jan 2024 19:51:55 +0100 (CET)
Received: from pdx4-co-svc-p1-lb2-vlan3.amazon.com (HELO
 email-inbound-relay-iad-1a-m6i4x-47cc8a4c.us-east-1.amazon.com)
 ([10.25.36.214]) by smtp-border-fw-80008.pdx80.corp.amazon.com with
 ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 16 Jan 2024 18:51:51 +0000
Received: from smtpout.prod.us-east-1.prod.farcaster.email.amazon.dev
 (iad7-ws-svc-p70-lb3-vlan2.iad.amazon.com [10.32.235.34])
 by email-inbound-relay-iad-1a-m6i4x-47cc8a4c.us-east-1.amazon.com (Postfix)
 with ESMTPS id D5D171617D2; Tue, 16 Jan 2024 18:51:48 +0000 (UTC)
Received: from EX19MTAUEA002.ant.amazon.com [10.0.29.78:14551]
 by smtpin.naws.us-east-1.prod.farcaster.email.amazon.dev [10.0.95.118:2525]
 with esmtp (Farcaster)
 id e3196003-2952-45c5-8c3d-185aa128f70d; Tue, 16 Jan 2024 18:51:48 +0000 (UTC)
Received: from EX19D008UEC004.ant.amazon.com (10.252.135.170) by
 EX19MTAUEA002.ant.amazon.com (10.252.134.9) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1118.40; Tue, 16 Jan 2024 18:51:43 +0000
Received: from EX19MTAUWB001.ant.amazon.com (10.250.64.248) by
 EX19D008UEC004.ant.amazon.com (10.252.135.170) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1118.40; Tue, 16 Jan 2024 18:51:43 +0000
Received: from dev-dsk-eliasely-1a-fd74790f.eu-west-1.amazon.com
 (10.253.91.118) by mail-relay.amazon.com (10.250.64.254) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1118.40 via Frontend Transport; Tue, 16 Jan 2024 18:51:41 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 50ae57ff-b4a0-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
  d=amazon.com; i=@amazon.com; q=dns/txt; s=amazon201209;
  t=1705431115; x=1736967115;
  h=from:to:cc:subject:date:message-id:in-reply-to:
   references:mime-version:content-transfer-encoding;
  bh=0fmTmB+LBqRWLY5/DwT7016ODIBBvVRLjSKMws6FDOA=;
  b=UsmbPv3wTGoMljuYGLx7iIKH216Giw/CbpmT71KARkb0bJOs9lreI5q3
   gpFlK74wGNqpc8MgJSuh2njxtIA2kGBssRSK9GXyn4bLr5JPOoftERvD/
   lMn/saJwYkuVTvz4sCFOiI9auOyyRNZG+zvBHuRL6QDhLA1/4G8ruXjZt
   8=;
X-IronPort-AV: E=Sophos;i="6.05,200,1701129600"; 
   d="scan'208";a="58742806"
X-Farcaster-Flow-ID: e3196003-2952-45c5-8c3d-185aa128f70d
From: Elias El Yandouzi <eliasely@amazon.com>
To: <xen-devel@lists.xenproject.org>
CC: <julien@xen.org>, <pdurrant@amazon.com>, <dwmw@amazon.com>, Hongyan Xia
	<hongyxia@amazon.com>, Jan Beulich <jbeulich@suse.com>, Andrew Cooper
	<andrew.cooper3@citrix.com>, =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?=
	<roger.pau@citrix.com>, Wei Liu <wl@xen.org>, Julien Grall
	<jgrall@amazon.com>, Elias El Yandouzi <eliasely@amazon.com>
Subject: [PATCH v2] x86/srat: vmap the pages for acpi_slit
Date: Tue, 16 Jan 2024 18:50:35 +0000
Message-ID: <20240116185056.15000-7-eliasely@amazon.com>
X-Mailer: git-send-email 2.40.1
In-Reply-To: <20240116185056.15000-1-eliasely@amazon.com>
References: <20240116185056.15000-1-eliasely@amazon.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
Precedence: Bulk

From: Hongyan Xia <hongyxia@amazon.com>

This avoids the assumption that boot pages are in the direct map.

Signed-off-by: Hongyan Xia <hongyxia@amazon.com>
Signed-off-by: Julien Grall <jgrall@amazon.com>
Signed-off-by: Elias El Yandouzi <eliasely@amazon.com>

----

    There was a discussion with Jan regarding early failure vs
    disable NUMA. I am strongly in favor of the latter because
    it is more obvious that something went wrong.

    From my understanding, Jan seems to be in favor of turning off NUMA
    and then continue to boot. But then implied that a panic() would be
    fine.

    So I went with the panic() version. I am happy to rework it to another
    approach if there is a consensus.

    Changes in v2:
        * vmap_contig_pages() was renamed to vmap_contig()
        * Use a panic() rather than BUG_ON()

    Changes since Hongyan's version:
        * vmap_boot_pages() was renamed to vmap_contig_pages()

diff --git a/xen/arch/x86/srat.c b/xen/arch/x86/srat.c
index 3f70338e6e..688f410287 100644
--- a/xen/arch/x86/srat.c
+++ b/xen/arch/x86/srat.c
@@ -135,7 +135,9 @@ void __init acpi_numa_slit_init(struct acpi_table_slit *slit)
 		return;
 	}
 	mfn = alloc_boot_pages(PFN_UP(slit->header.length), 1);
-	acpi_slit = mfn_to_virt(mfn_x(mfn));
+	acpi_slit = vmap_contig(mfn, PFN_UP(slit->header.length));
+	if ( !acpi_slit )
+		panic("Unable to map the ACPI SLIT. Retry with numa=off");
 	memcpy(acpi_slit, slit, slit->header.length);
 }
 
-- 
2.40.1



From xen-devel-bounces@lists.xenproject.org Tue Jan 16 18:52:01 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 16 Jan 2024 18:52:01 +0000
Received: from list by lists.xenproject.org with outflank-mailman.667952.1039717 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPoXZ-0004Ac-0P; Tue, 16 Jan 2024 18:52:01 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 667952.1039717; Tue, 16 Jan 2024 18:52:00 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPoXY-00049s-QV; Tue, 16 Jan 2024 18:52:00 +0000
Received: by outflank-mailman (input) for mailman id 667952;
 Tue, 16 Jan 2024 18:51:59 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=wmx9=I2=amazon.co.uk=prvs=738631f0b=eliasely@srs-se1.protection.inumbo.net>)
 id 1rPoXX-0002UD-5J
 for xen-devel@lists.xenproject.org; Tue, 16 Jan 2024 18:51:59 +0000
Received: from smtp-fw-80009.amazon.com (smtp-fw-80009.amazon.com
 [99.78.197.220]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 5282b318-b4a0-11ee-98f1-6d05b1d4d9a1;
 Tue, 16 Jan 2024 19:51:58 +0100 (CET)
Received: from pdx4-co-svc-p1-lb2-vlan2.amazon.com (HELO
 email-inbound-relay-iad-1d-m6i4x-b404fda3.us-east-1.amazon.com)
 ([10.25.36.210]) by smtp-border-fw-80009.pdx80.corp.amazon.com with
 ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 16 Jan 2024 18:51:53 +0000
Received: from smtpout.prod.us-east-1.prod.farcaster.email.amazon.dev
 (iad7-ws-svc-p70-lb3-vlan3.iad.amazon.com [10.32.235.38])
 by email-inbound-relay-iad-1d-m6i4x-b404fda3.us-east-1.amazon.com (Postfix)
 with ESMTPS id 30D2380718; Tue, 16 Jan 2024 18:51:51 +0000 (UTC)
Received: from EX19MTAUEC002.ant.amazon.com [10.0.29.78:46358]
 by smtpin.naws.us-east-1.prod.farcaster.email.amazon.dev [10.0.89.133:2525]
 with esmtp (Farcaster)
 id 30b6ac54-b3b1-41eb-98bd-7e364c531f5a; Tue, 16 Jan 2024 18:51:50 +0000 (UTC)
Received: from EX19D008UEA004.ant.amazon.com (10.252.134.191) by
 EX19MTAUEC002.ant.amazon.com (10.252.135.253) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1118.40; Tue, 16 Jan 2024 18:51:41 +0000
Received: from EX19MTAUWB001.ant.amazon.com (10.250.64.248) by
 EX19D008UEA004.ant.amazon.com (10.252.134.191) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1118.40; Tue, 16 Jan 2024 18:51:41 +0000
Received: from dev-dsk-eliasely-1a-fd74790f.eu-west-1.amazon.com
 (10.253.91.118) by mail-relay.amazon.com (10.250.64.254) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1118.40 via Frontend Transport; Tue, 16 Jan 2024 18:51:39 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 5282b318-b4a0-11ee-98f1-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
  d=amazon.com; i=@amazon.com; q=dns/txt; s=amazon201209;
  t=1705431118; x=1736967118;
  h=from:to:cc:subject:date:message-id:in-reply-to:
   references:mime-version:content-transfer-encoding;
  bh=FgFciMpLuDVe/Ws8Mo0D+wl9Af+6on00mUDD4ztD+mE=;
  b=PPkOaRVpZpcU+TtYPbkbsohqN77V345hXbeskyzRGOh5NpIsD0z22Kii
   G7n+1tl4mYEw9bUWezzfD312QoUoRAAWA81SjdONnZBTydyXzpUNlxUxo
   mvGb9wC2bIIh9Itv/4OOGZmKt0anpiGLS7Ph+nbyZUVLOVWJOOGkBHoXI
   Q=;
X-IronPort-AV: E=Sophos;i="6.05,200,1701129600"; 
   d="scan'208";a="58691940"
X-Farcaster-Flow-ID: 30b6ac54-b3b1-41eb-98bd-7e364c531f5a
From: Elias El Yandouzi <eliasely@amazon.com>
To: <xen-devel@lists.xenproject.org>
CC: <julien@xen.org>, <pdurrant@amazon.com>, <dwmw@amazon.com>, Hongyan Xia
	<hongyxia@amazon.com>, Andrew Cooper <andrew.cooper3@citrix.com>, "George
 Dunlap" <george.dunlap@citrix.com>, Jan Beulich <jbeulich@suse.com>, "Stefano
 Stabellini" <sstabellini@kernel.org>, Wei Liu <wl@xen.org>, Julien Grall
	<jgrall@amazon.com>, Elias El Yandouzi <eliasely@amazon.com>
Subject: [PATCH v2] xen/numa: vmap the pages for memnodemap
Date: Tue, 16 Jan 2024 18:50:34 +0000
Message-ID: <20240116185056.15000-6-eliasely@amazon.com>
X-Mailer: git-send-email 2.40.1
In-Reply-To: <20240116185056.15000-1-eliasely@amazon.com>
References: <20240116185056.15000-1-eliasely@amazon.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
Precedence: Bulk

From: Hongyan Xia <hongyxia@amazon.com>

This avoids the assumption that there is a direct map and boot pages
fall inside the direct map.

Clean up the variables so that mfn actually stores a type-safe mfn.

Signed-off-by: Hongyan Xia <hongyxia@amazon.com>
Signed-off-by: Julien Grall <jgrall@amazon.com>
Signed-off-by: Elias El Yandouzi <eliasely@amazon.com>

----

    See the discussion in the next patch about using panic().

    Changes in v2:
        * vmap_contig_pages() was renamed to vmap_contig()
        * Replace the BUG_ON() with a panic()

    Changes compare to Hongyan's version:
        * The function modified was moved to common code. So rebase it
        * vmap_boot_pages() was renamed to vmap_contig_pages()

diff --git a/xen/common/numa.c b/xen/common/numa.c
index f454c4d894..ef13ec2255 100644
--- a/xen/common/numa.c
+++ b/xen/common/numa.c
@@ -424,13 +424,14 @@ static int __init populate_memnodemap(const struct node *nodes,
 static int __init allocate_cachealigned_memnodemap(void)
 {
     unsigned long size = PFN_UP(memnodemapsize * sizeof(*memnodemap));
-    unsigned long mfn = mfn_x(alloc_boot_pages(size, 1));
+    mfn_t mfn = alloc_boot_pages(size, 1);
 
-    memnodemap = mfn_to_virt(mfn);
-    mfn <<= PAGE_SHIFT;
+    memnodemap = vmap_contig(mfn, size);
+    if ( !memnodemap )
+        panic("Unable to map the ACPI SLIT. Retry with numa=off");
     size <<= PAGE_SHIFT;
     printk(KERN_DEBUG "NUMA: Allocated memnodemap from %lx - %lx\n",
-           mfn, mfn + size);
+           mfn_to_maddr(mfn), mfn_to_maddr(mfn) + size);
     memnodemapsize = size / sizeof(*memnodemap);
 
     return 0;
-- 
2.40.1



From xen-devel-bounces@lists.xenproject.org Tue Jan 16 18:52:09 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 16 Jan 2024 18:52:09 +0000
Received: from list by lists.xenproject.org with outflank-mailman.667958.1039732 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPoXh-00052Z-6A; Tue, 16 Jan 2024 18:52:09 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 667958.1039732; Tue, 16 Jan 2024 18:52:09 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPoXh-00052O-3C; Tue, 16 Jan 2024 18:52:09 +0000
Received: by outflank-mailman (input) for mailman id 667958;
 Tue, 16 Jan 2024 18:52:08 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=wmx9=I2=amazon.co.uk=prvs=738631f0b=eliasely@srs-se1.protection.inumbo.net>)
 id 1rPoXf-0003xp-Vg
 for xen-devel@lists.xenproject.org; Tue, 16 Jan 2024 18:52:07 +0000
Received: from smtp-fw-52004.amazon.com (smtp-fw-52004.amazon.com
 [52.119.213.154]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 57915316-b4a0-11ee-9b0f-b553b5be7939;
 Tue, 16 Jan 2024 19:52:06 +0100 (CET)
Received: from iad12-co-svc-p1-lb1-vlan2.amazon.com (HELO
 email-inbound-relay-iad-1d-m6i4x-b404fda3.us-east-1.amazon.com) ([10.43.8.2])
 by smtp-border-fw-52004.iad7.amazon.com with
 ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 16 Jan 2024 18:52:05 +0000
Received: from smtpout.prod.us-east-1.prod.farcaster.email.amazon.dev
 (iad7-ws-svc-p70-lb3-vlan3.iad.amazon.com [10.32.235.38])
 by email-inbound-relay-iad-1d-m6i4x-b404fda3.us-east-1.amazon.com (Postfix)
 with ESMTPS id 1869880D88; Tue, 16 Jan 2024 18:52:03 +0000 (UTC)
Received: from EX19MTAUEC001.ant.amazon.com [10.0.44.209:38504]
 by smtpin.naws.us-east-1.prod.farcaster.email.amazon.dev [10.0.95.118:2525]
 with esmtp (Farcaster)
 id ad726f4a-3b94-4479-8df0-0904c57dc3d8; Tue, 16 Jan 2024 18:52:02 +0000 (UTC)
Received: from EX19D008UEA001.ant.amazon.com (10.252.134.62) by
 EX19MTAUEC001.ant.amazon.com (10.252.135.222) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1118.40; Tue, 16 Jan 2024 18:51:50 +0000
Received: from EX19MTAUWB001.ant.amazon.com (10.250.64.248) by
 EX19D008UEA001.ant.amazon.com (10.252.134.62) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1118.40; Tue, 16 Jan 2024 18:51:49 +0000
Received: from dev-dsk-eliasely-1a-fd74790f.eu-west-1.amazon.com
 (10.253.91.118) by mail-relay.amazon.com (10.250.64.254) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1118.40 via Frontend Transport; Tue, 16 Jan 2024 18:51:48 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 57915316-b4a0-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
  d=amazon.com; i=@amazon.com; q=dns/txt; s=amazon201209;
  t=1705431126; x=1736967126;
  h=from:to:cc:subject:date:message-id:in-reply-to:
   references:mime-version:content-transfer-encoding;
  bh=DFq2dA1Yv5iX6XPtrbHhlSvMP8eVQGNEuxktAlGi9eU=;
  b=t+pOHan5mvObSCvx7BmNh42+O5ktxbplcj27g6LTbpZLrwTf4PwUXfBc
   NZZoszUsTmzwslP03NzrE69wFf3TvjTODEUIEsInsBcHSPtjUKuLCGJVW
   0sg55A3bTHBZOdaSktNLAw6FdANA2IrRkgKNo8jL6dE2tm5iyZOtDeJGP
   8=;
X-IronPort-AV: E=Sophos;i="6.05,200,1701129600"; 
   d="scan'208";a="178391950"
X-Farcaster-Flow-ID: ad726f4a-3b94-4479-8df0-0904c57dc3d8
From: Elias El Yandouzi <eliasely@amazon.com>
To: <xen-devel@lists.xenproject.org>
CC: <julien@xen.org>, <pdurrant@amazon.com>, <dwmw@amazon.com>, Hongyan Xia
	<hongyxia@amazon.com>, Jan Beulich <jbeulich@suse.com>, Andrew Cooper
	<andrew.cooper3@citrix.com>, =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?=
	<roger.pau@citrix.com>, Wei Liu <wl@xen.org>, Julien Grall
	<jgrall@amazon.com>, Elias El Yandouzi <eliasely@amazon.com>
Subject: [PATCH v2] x86/pv: Rewrite how building PV dom0 handles domheap mappings
Date: Tue, 16 Jan 2024 18:50:38 +0000
Message-ID: <20240116185056.15000-10-eliasely@amazon.com>
X-Mailer: git-send-email 2.40.1
In-Reply-To: <20240116185056.15000-1-eliasely@amazon.com>
References: <20240116185056.15000-1-eliasely@amazon.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
Precedence: Bulk

From: Hongyan Xia <hongyxia@amazon.com>

Building a PV dom0 is allocating from the domheap but uses it like the
xenheap. Use the pages as they should be.

Signed-off-by: Hongyan Xia <hongyxia@amazon.com>
Signed-off-by: Julien Grall <jgrall@amazon.com>
Signed-off-by: Elias El Yandouzi <eliasely@amazon.com>

----

    Changes in V2:
        * Clarify the commit message
        * Break the patch in two parts

    Changes since Hongyan's version:
        * Rebase
        * Remove spurious newline

diff --git a/xen/arch/x86/pv/dom0_build.c b/xen/arch/x86/pv/dom0_build.c
index 5659814e0c..dc5e9fe117 100644
--- a/xen/arch/x86/pv/dom0_build.c
+++ b/xen/arch/x86/pv/dom0_build.c
@@ -382,6 +382,10 @@ int __init dom0_construct_pv(struct domain *d,
     l3_pgentry_t *l3tab = NULL, *l3start = NULL;
     l2_pgentry_t *l2tab = NULL, *l2start = NULL;
     l1_pgentry_t *l1tab = NULL, *l1start = NULL;
+    mfn_t l4start_mfn = INVALID_MFN;
+    mfn_t l3start_mfn = INVALID_MFN;
+    mfn_t l2start_mfn = INVALID_MFN;
+    mfn_t l1start_mfn = INVALID_MFN;
 
     /*
      * This fully describes the memory layout of the initial domain. All
@@ -708,22 +712,32 @@ int __init dom0_construct_pv(struct domain *d,
         v->arch.pv.event_callback_cs    = FLAT_COMPAT_KERNEL_CS;
     }
 
+#define UNMAP_MAP_AND_ADVANCE(mfn_var, virt_var, maddr) \
+do {                                                    \
+    unmap_domain_page(virt_var);                        \
+    mfn_var = maddr_to_mfn(maddr);                      \
+    maddr += PAGE_SIZE;                                 \
+    virt_var = map_domain_page(mfn_var);                \
+} while ( false )
+
     if ( !compat )
     {
         maddr_to_page(mpt_alloc)->u.inuse.type_info = PGT_l4_page_table;
-        l4start = l4tab = __va(mpt_alloc); mpt_alloc += PAGE_SIZE;
+        UNMAP_MAP_AND_ADVANCE(l4start_mfn, l4start, mpt_alloc);
+        l4tab = l4start;
         clear_page(l4tab);
-        init_xen_l4_slots(l4tab, _mfn(virt_to_mfn(l4start)),
-                          d, INVALID_MFN, true);
-        v->arch.guest_table = pagetable_from_paddr(__pa(l4start));
+        init_xen_l4_slots(l4tab, l4start_mfn, d, INVALID_MFN, true);
+        v->arch.guest_table = pagetable_from_mfn(l4start_mfn);
     }
     else
     {
         /* Monitor table already created by switch_compat(). */
-        l4start = l4tab = __va(pagetable_get_paddr(v->arch.guest_table));
+        l4start_mfn = pagetable_get_mfn(v->arch.guest_table);
+        l4start = l4tab = map_domain_page(l4start_mfn);
         /* See public/xen.h on why the following is needed. */
         maddr_to_page(mpt_alloc)->u.inuse.type_info = PGT_l3_page_table;
         l3start = __va(mpt_alloc); mpt_alloc += PAGE_SIZE;
+        UNMAP_MAP_AND_ADVANCE(l3start_mfn, l3start, mpt_alloc);
     }
 
     l4tab += l4_table_offset(v_start);
@@ -733,14 +747,16 @@ int __init dom0_construct_pv(struct domain *d,
         if ( !((unsigned long)l1tab & (PAGE_SIZE-1)) )
         {
             maddr_to_page(mpt_alloc)->u.inuse.type_info = PGT_l1_page_table;
-            l1start = l1tab = __va(mpt_alloc); mpt_alloc += PAGE_SIZE;
+            UNMAP_MAP_AND_ADVANCE(l1start_mfn, l1start, mpt_alloc);
+            l1tab = l1start;
             clear_page(l1tab);
             if ( count == 0 )
                 l1tab += l1_table_offset(v_start);
             if ( !((unsigned long)l2tab & (PAGE_SIZE-1)) )
             {
                 maddr_to_page(mpt_alloc)->u.inuse.type_info = PGT_l2_page_table;
-                l2start = l2tab = __va(mpt_alloc); mpt_alloc += PAGE_SIZE;
+                UNMAP_MAP_AND_ADVANCE(l2start_mfn, l2start, mpt_alloc);
+                l2tab = l2start;
                 clear_page(l2tab);
                 if ( count == 0 )
                     l2tab += l2_table_offset(v_start);
@@ -750,19 +766,19 @@ int __init dom0_construct_pv(struct domain *d,
                     {
                         maddr_to_page(mpt_alloc)->u.inuse.type_info =
                             PGT_l3_page_table;
-                        l3start = __va(mpt_alloc); mpt_alloc += PAGE_SIZE;
+                        UNMAP_MAP_AND_ADVANCE(l3start_mfn, l3start, mpt_alloc);
                     }
                     l3tab = l3start;
                     clear_page(l3tab);
                     if ( count == 0 )
                         l3tab += l3_table_offset(v_start);
-                    *l4tab = l4e_from_paddr(__pa(l3start), L4_PROT);
+                    *l4tab = l4e_from_mfn(l3start_mfn, L4_PROT);
                     l4tab++;
                 }
-                *l3tab = l3e_from_paddr(__pa(l2start), L3_PROT);
+                *l3tab = l3e_from_mfn(l2start_mfn, L3_PROT);
                 l3tab++;
             }
-            *l2tab = l2e_from_paddr(__pa(l1start), L2_PROT);
+            *l2tab = l2e_from_mfn(l1start_mfn, L2_PROT);
             l2tab++;
         }
         if ( count < initrd_pfn || count >= initrd_pfn + PFN_UP(initrd_len) )
@@ -781,30 +797,34 @@ int __init dom0_construct_pv(struct domain *d,
 
     if ( compat )
     {
-        l2_pgentry_t *l2t;
-
         /* Ensure the first four L3 entries are all populated. */
         for ( i = 0, l3tab = l3start; i < 4; ++i, ++l3tab )
         {
             if ( !l3e_get_intpte(*l3tab) )
             {
                 maddr_to_page(mpt_alloc)->u.inuse.type_info = PGT_l2_page_table;
-                l2tab = __va(mpt_alloc); mpt_alloc += PAGE_SIZE;
-                clear_page(l2tab);
-                *l3tab = l3e_from_paddr(__pa(l2tab), L3_PROT);
+                UNMAP_MAP_AND_ADVANCE(l2start_mfn, l2start, mpt_alloc);
+                clear_page(l2start);
+                *l3tab = l3e_from_mfn(l2start_mfn, L3_PROT);
             }
             if ( i == 3 )
                 l3e_get_page(*l3tab)->u.inuse.type_info |= PGT_pae_xen_l2;
         }
 
-        l2t = map_l2t_from_l3e(l3start[3]);
-        init_xen_pae_l2_slots(l2t, d);
-        unmap_domain_page(l2t);
+        init_xen_pae_l2_slots(l2start, d);
     }
 
+#undef UNMAP_MAP_AND_ADVANCE
+
+    UNMAP_DOMAIN_PAGE(l1start);
+    UNMAP_DOMAIN_PAGE(l2start);
+    UNMAP_DOMAIN_PAGE(l3start);
+
     /* Pages that are part of page tables must be read only. */
     mark_pv_pt_pages_rdonly(d, l4start, vpt_start, nr_pt_pages, &flush_flags);
 
+    UNMAP_DOMAIN_PAGE(l4start);
+
     /* Mask all upcalls... */
     for ( i = 0; i < XEN_LEGACY_MAX_VCPUS; i++ )
         shared_info(d, vcpu_info[i].evtchn_upcall_mask) = 1;
-- 
2.40.1



From xen-devel-bounces@lists.xenproject.org Tue Jan 16 18:52:09 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 16 Jan 2024 18:52:09 +0000
Received: from list by lists.xenproject.org with outflank-mailman.667959.1039737 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPoXh-00055i-Ig; Tue, 16 Jan 2024 18:52:09 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 667959.1039737; Tue, 16 Jan 2024 18:52:09 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPoXh-00054t-Cd; Tue, 16 Jan 2024 18:52:09 +0000
Received: by outflank-mailman (input) for mailman id 667959;
 Tue, 16 Jan 2024 18:52:08 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=wmx9=I2=amazon.co.uk=prvs=738631f0b=eliasely@srs-se1.protection.inumbo.net>)
 id 1rPoXg-0003xp-8o
 for xen-devel@lists.xenproject.org; Tue, 16 Jan 2024 18:52:08 +0000
Received: from smtp-fw-6001.amazon.com (smtp-fw-6001.amazon.com [52.95.48.154])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 576802b9-b4a0-11ee-9b0f-b553b5be7939;
 Tue, 16 Jan 2024 19:52:06 +0100 (CET)
Received: from iad12-co-svc-p1-lb1-vlan2.amazon.com (HELO
 email-inbound-relay-iad-1e-m6i4x-6e7a78d7.us-east-1.amazon.com) ([10.43.8.2])
 by smtp-border-fw-6001.iad6.amazon.com with
 ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 16 Jan 2024 18:52:04 +0000
Received: from smtpout.prod.us-east-1.prod.farcaster.email.amazon.dev
 (iad7-ws-svc-p70-lb3-vlan2.iad.amazon.com [10.32.235.34])
 by email-inbound-relay-iad-1e-m6i4x-6e7a78d7.us-east-1.amazon.com (Postfix)
 with ESMTPS id 69D548032A; Tue, 16 Jan 2024 18:52:01 +0000 (UTC)
Received: from EX19MTAUEC002.ant.amazon.com [10.0.29.78:64506]
 by smtpin.naws.us-east-1.prod.farcaster.email.amazon.dev [10.0.41.129:2525]
 with esmtp (Farcaster)
 id 0523bf02-f540-4504-a5f3-c1a71d2bc9a0; Tue, 16 Jan 2024 18:52:01 +0000 (UTC)
Received: from EX19D008UEA001.ant.amazon.com (10.252.134.62) by
 EX19MTAUEC002.ant.amazon.com (10.252.135.253) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1118.40; Tue, 16 Jan 2024 18:51:48 +0000
Received: from EX19MTAUWB001.ant.amazon.com (10.250.64.248) by
 EX19D008UEA001.ant.amazon.com (10.252.134.62) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1118.40; Tue, 16 Jan 2024 18:51:47 +0000
Received: from dev-dsk-eliasely-1a-fd74790f.eu-west-1.amazon.com
 (10.253.91.118) by mail-relay.amazon.com (10.250.64.254) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1118.40 via Frontend Transport; Tue, 16 Jan 2024 18:51:45 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 576802b9-b4a0-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
  d=amazon.com; i=@amazon.com; q=dns/txt; s=amazon201209;
  t=1705431127; x=1736967127;
  h=from:to:cc:subject:date:message-id:in-reply-to:
   references:mime-version:content-transfer-encoding;
  bh=HW3epajLPcDlyqLezVIUXLccUhl0qCm2Of6jKKbyr0s=;
  b=uXWP1fmKZakX5PidKv4MZXq53fhzXeMwZk8JYTKVvkzfDgQjC4o+YHel
   nASO1jwSZLjRBZ2l3rGhCFrzs/XNZ1HRE7sIQ0HJMQcy71bo6U2wW26hw
   bzm94HPVnfHwRElarRZTus3AnARrBr8MilJzS8kDSrFXtwhJhS5jgJ6Qp
   0=;
X-IronPort-AV: E=Sophos;i="6.05,200,1701129600"; 
   d="scan'208";a="382569709"
X-Farcaster-Flow-ID: 0523bf02-f540-4504-a5f3-c1a71d2bc9a0
From: Elias El Yandouzi <eliasely@amazon.com>
To: <xen-devel@lists.xenproject.org>
CC: <julien@xen.org>, <pdurrant@amazon.com>, <dwmw@amazon.com>, Wei Liu
	<wei.liu2@citrix.com>, Jan Beulich <jbeulich@suse.com>, Andrew Cooper
	<andrew.cooper3@citrix.com>, =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?=
	<roger.pau@citrix.com>, Wei Liu <wl@xen.org>, Wei Wang <wawei@amazon.de>,
	Julien Grall <jgrall@amazon.com>, Elias El Yandouzi <eliasely@amazon.com>
Subject: [PATCH v2] x86/pv: Domheap pages should be mapped while relocating initrd
Date: Tue, 16 Jan 2024 18:50:37 +0000
Message-ID: <20240116185056.15000-9-eliasely@amazon.com>
X-Mailer: git-send-email 2.40.1
In-Reply-To: <20240116185056.15000-1-eliasely@amazon.com>
References: <20240116185056.15000-1-eliasely@amazon.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
Precedence: Bulk

From: Wei Liu <wei.liu2@citrix.com>

Xen shouldn't use domheap page as if they were xenheap pages. Map and
unmap pages accordingly.

Signed-off-by: Wei Liu <wei.liu2@citrix.com>
Signed-off-by: Wei Wang <wawei@amazon.de>
Signed-off-by: Julien Grall <jgrall@amazon.com>
Signed-off-by: Elias El Yandouzi <eliasely@amazon.com>

----

    Changes in V2:
        * Get rid of mfn_to_virt
        * Don't open code copy_domain_page()

    Changes since Hongyan's version:
        * Add missing newline after the variable declaration

diff --git a/xen/arch/x86/pv/dom0_build.c b/xen/arch/x86/pv/dom0_build.c
index 5bbed3a36a..5659814e0c 100644
--- a/xen/arch/x86/pv/dom0_build.c
+++ b/xen/arch/x86/pv/dom0_build.c
@@ -615,18 +615,25 @@ int __init dom0_construct_pv(struct domain *d,
         if ( d->arch.physaddr_bitsize &&
              ((mfn + count - 1) >> (d->arch.physaddr_bitsize - PAGE_SHIFT)) )
         {
+            unsigned long nr_pages;
+
             order = get_order_from_pages(count);
             page = alloc_domheap_pages(d, order, MEMF_no_scrub);
             if ( !page )
                 panic("Not enough RAM for domain 0 initrd\n");
+
+            nr_pages = 1UL << order;
             for ( count = -count; order--; )
                 if ( count & (1UL << order) )
                 {
                     free_domheap_pages(page, order);
                     page += 1UL << order;
+                    nr_pages -= 1UL << order;
                 }
-            memcpy(page_to_virt(page), mfn_to_virt(initrd->mod_start),
-                   initrd_len);
+
+            for ( i = 0; i < nr_pages; i++ )
+                copy_domain_page(page_to_mfn(page + i), _mfn(initrd_mfn + i));
+
             mpt_alloc = (paddr_t)initrd->mod_start << PAGE_SHIFT;
             init_domheap_pages(mpt_alloc,
                                mpt_alloc + PAGE_ALIGN(initrd_len));
-- 
2.40.1



From xen-devel-bounces@lists.xenproject.org Tue Jan 16 18:52:11 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 16 Jan 2024 18:52:11 +0000
Received: from list by lists.xenproject.org with outflank-mailman.667960.1039751 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPoXj-0005kr-U1; Tue, 16 Jan 2024 18:52:11 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 667960.1039751; Tue, 16 Jan 2024 18:52:11 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPoXj-0005ke-Q8; Tue, 16 Jan 2024 18:52:11 +0000
Received: by outflank-mailman (input) for mailman id 667960;
 Tue, 16 Jan 2024 18:52:10 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=wmx9=I2=amazon.co.uk=prvs=738631f0b=eliasely@srs-se1.protection.inumbo.net>)
 id 1rPoXi-0003xp-N1
 for xen-devel@lists.xenproject.org; Tue, 16 Jan 2024 18:52:10 +0000
Received: from smtp-fw-52002.amazon.com (smtp-fw-52002.amazon.com
 [52.119.213.150]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 58773d9e-b4a0-11ee-9b0f-b553b5be7939;
 Tue, 16 Jan 2024 19:52:08 +0100 (CET)
Received: from iad12-co-svc-p1-lb1-vlan3.amazon.com (HELO
 email-inbound-relay-pdx-2b-m6i4x-a893d89c.us-west-2.amazon.com) ([10.43.8.6])
 by smtp-border-fw-52002.iad7.amazon.com with
 ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 16 Jan 2024 18:52:03 +0000
Received: from smtpout.prod.us-east-1.prod.farcaster.email.amazon.dev
 (pdx2-ws-svc-p26-lb5-vlan2.pdx.amazon.com [10.39.38.66])
 by email-inbound-relay-pdx-2b-m6i4x-a893d89c.us-west-2.amazon.com (Postfix)
 with ESMTPS id D41AF40DB0; Tue, 16 Jan 2024 18:52:01 +0000 (UTC)
Received: from EX19MTAUEA001.ant.amazon.com [10.0.44.209:47197]
 by smtpin.naws.us-east-1.prod.farcaster.email.amazon.dev [10.0.19.196:2525]
 with esmtp (Farcaster)
 id 8e7ede37-a1dc-4f94-b5c4-4b023a5b013f; Tue, 16 Jan 2024 18:52:01 +0000 (UTC)
Received: from EX19D008UEA001.ant.amazon.com (10.252.134.62) by
 EX19MTAUEA001.ant.amazon.com (10.252.134.203) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1118.40; Tue, 16 Jan 2024 18:51:45 +0000
Received: from EX19MTAUWB001.ant.amazon.com (10.250.64.248) by
 EX19D008UEA001.ant.amazon.com (10.252.134.62) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1118.40; Tue, 16 Jan 2024 18:51:45 +0000
Received: from dev-dsk-eliasely-1a-fd74790f.eu-west-1.amazon.com
 (10.253.91.118) by mail-relay.amazon.com (10.250.64.254) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1118.40 via Frontend Transport; Tue, 16 Jan 2024 18:51:43 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 58773d9e-b4a0-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
  d=amazon.com; i=@amazon.com; q=dns/txt; s=amazon201209;
  t=1705431128; x=1736967128;
  h=from:to:cc:subject:date:message-id:in-reply-to:
   references:mime-version:content-transfer-encoding;
  bh=RlZPoKBPtPftpmhS8npiHVFZDFdnG1+rb/ajeW5MDFo=;
  b=XYx4l8l7Qp5rCCFnwR8gKPosPgIfq/4fN1m31bJzk62I1Y+jky0Dmp1b
   WvuRQ5llFidRgPkeGv/R83qgMWff1GaFVj+Sb+VffxUG8kS3Ji8Wf/Bh3
   gRelVXbFj1Qxy49bjznYzYFv/jSVT6+bgrXEk7bFSlI1A9gr2KFT9AMg9
   U=;
X-IronPort-AV: E=Sophos;i="6.05,200,1701129600"; 
   d="scan'208";a="606811495"
X-Farcaster-Flow-ID: 8e7ede37-a1dc-4f94-b5c4-4b023a5b013f
From: Elias El Yandouzi <eliasely@amazon.com>
To: <xen-devel@lists.xenproject.org>
CC: <julien@xen.org>, <pdurrant@amazon.com>, <dwmw@amazon.com>, Hongyan Xia
	<hongyxia@amazon.com>, Jan Beulich <jbeulich@suse.com>, Andrew Cooper
	<andrew.cooper3@citrix.com>, =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?=
	<roger.pau@citrix.com>, Wei Liu <wl@xen.org>, Julien Grall
	<jgrall@amazon.com>, Elias El Yandouzi <eliasely@amazon.com>
Subject: [PATCH v2] x86: Map/unmap pages in restore_all_guests
Date: Tue, 16 Jan 2024 18:50:36 +0000
Message-ID: <20240116185056.15000-8-eliasely@amazon.com>
X-Mailer: git-send-email 2.40.1
In-Reply-To: <20240116185056.15000-1-eliasely@amazon.com>
References: <20240116185056.15000-1-eliasely@amazon.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
Precedence: Bulk

From: Hongyan Xia <hongyxia@amazon.com>

Before, it assumed the pv cr3 could be accessed via a direct map. This
is no longer true.

Note that we do not map and unmap root_pgt for now since it is still a
xenheap page.

Signed-off-by: Hongyan Xia <hongyxia@amazon.com>
Signed-off-by: Julien Grall <jgrall@amazon.com>
Signed-off-by: Elias El Yandouzi <eliasely@amazon.com>

----

    Changes in V2:
        * Rework the shadow perdomain mapping solution in the follow-up patches

    Changes since Hongyan's version:
        * Remove the final dot in the commit title

diff --git a/xen/arch/x86/include/asm/config.h b/xen/arch/x86/include/asm/config.h
index bbced338be..7cf1f33dc0 100644
--- a/xen/arch/x86/include/asm/config.h
+++ b/xen/arch/x86/include/asm/config.h
@@ -202,7 +202,7 @@ extern unsigned char boot_edid_info[128];
 /* Slot 260: per-domain mappings (including map cache). */
 #define PERDOMAIN_VIRT_START    (PML4_ADDR(260))
 #define PERDOMAIN_SLOT_MBYTES   (PML4_ENTRY_BYTES >> (20 + PAGETABLE_ORDER))
-#define PERDOMAIN_SLOTS         3
+#define PERDOMAIN_SLOTS         4
 #define PERDOMAIN_VIRT_SLOT(s)  (PERDOMAIN_VIRT_START + (s) * \
                                  (PERDOMAIN_SLOT_MBYTES << 20))
 /* Slot 4: mirror of per-domain mappings (for compat xlat area accesses). */
@@ -316,6 +316,16 @@ extern unsigned long xen_phys_start;
 #define ARG_XLAT_START(v)        \
     (ARG_XLAT_VIRT_START + ((v)->vcpu_id << ARG_XLAT_VA_SHIFT))
 
+/* root_pt shadow mapping area. The fourth per-domain-mapping sub-area */
+#define SHADOW_ROOT_PT_VIRT_START   PERDOMAIN_VIRT_SLOT(3)
+#define SHADOW_ROOT_PT_ENTRIES      MAX_VIRT_CPUS
+#define SHADOW_ROOT_PT_VIRT_END     (SHADOW_ROOT_PT_VIRT_START +    \
+                                     (SHADOW_ROOT_PT_ENTRIES * PAGE_SIZE))
+
+/* The address of a particular VCPU's ROOT_PT */
+#define SHADOW_ROOT_PT_VCPU_VIRT_START(v) \
+    (SHADOW_ROOT_PT_VIRT_START + ((v)->vcpu_id * PAGE_SIZE))
+
 #define ELFSIZE 64
 
 #define ARCH_CRASH_SAVE_VMCOREINFO
diff --git a/xen/arch/x86/include/asm/domain.h b/xen/arch/x86/include/asm/domain.h
index 622d22bef2..4d97c68028 100644
--- a/xen/arch/x86/include/asm/domain.h
+++ b/xen/arch/x86/include/asm/domain.h
@@ -273,6 +273,7 @@ struct time_scale {
 struct pv_domain
 {
     l1_pgentry_t **gdt_ldt_l1tab;
+    l1_pgentry_t **shadow_root_pt_l1tab;
 
     atomic_t nr_l4_pages;
 
diff --git a/xen/arch/x86/mm.c b/xen/arch/x86/mm.c
index b56e0d8065..a72c32d87c 100644
--- a/xen/arch/x86/mm.c
+++ b/xen/arch/x86/mm.c
@@ -505,6 +505,13 @@ void share_xen_page_with_guest(struct page_info *page, struct domain *d,
     spin_unlock(&d->page_alloc_lock);
 }
 
+#define shadow_root_pt_idx(v) \
+    ((v)->vcpu_id >> PAGETABLE_ORDER)
+
+#define pv_shadow_root_pt_pte(v) \
+    ((v)->domain->arch.pv.shadow_root_pt_l1tab[shadow_root_pt_idx(v)] + \
+     ((v)->vcpu_id & (L1_PAGETABLE_ENTRIES - 1)))
+
 void make_cr3(struct vcpu *v, mfn_t mfn)
 {
     struct domain *d = v->domain;
@@ -524,6 +531,13 @@ void write_ptbase(struct vcpu *v)
 
     if ( is_pv_vcpu(v) && v->domain->arch.pv.xpti )
     {
+        mfn_t guest_root_pt = _mfn(v->arch.cr3 >> PAGE_SHIFT);
+        l1_pgentry_t *pte = pv_shadow_root_pt_pte(v);
+
+        ASSERT(v == current);
+
+        l1e_write(pte, l1e_from_mfn(guest_root_pt, __PAGE_HYPERVISOR_RW));
+
         cpu_info->root_pgt_changed = true;
         cpu_info->pv_cr3 = __pa(this_cpu(root_pgt));
         if ( new_cr4 & X86_CR4_PCIDE )
diff --git a/xen/arch/x86/pv/domain.c b/xen/arch/x86/pv/domain.c
index 2a445bb17b..fef9ae2352 100644
--- a/xen/arch/x86/pv/domain.c
+++ b/xen/arch/x86/pv/domain.c
@@ -288,6 +288,19 @@ static void pv_destroy_gdt_ldt_l1tab(struct vcpu *v)
                               1U << GDT_LDT_VCPU_SHIFT);
 }
 
+static int pv_create_shadow_root_pt_l1tab(struct vcpu *v)
+{
+    return create_perdomain_mapping(v->domain, SHADOW_ROOT_PT_VCPU_VIRT_START(v),
+                                    1, v->domain->arch.pv.shadow_root_pt_l1tab,
+                                    NULL);
+}
+
+static void pv_destroy_shadow_root_pt_l1tab(struct vcpu *v)
+
+{
+    destroy_perdomain_mapping(v->domain, SHADOW_ROOT_PT_VCPU_VIRT_START(v), 1);
+}
+
 void pv_vcpu_destroy(struct vcpu *v)
 {
     if ( is_pv_32bit_vcpu(v) )
@@ -297,6 +310,7 @@ void pv_vcpu_destroy(struct vcpu *v)
     }
 
     pv_destroy_gdt_ldt_l1tab(v);
+    pv_destroy_shadow_root_pt_l1tab(v);
     XFREE(v->arch.pv.trap_ctxt);
 }
 
@@ -311,6 +325,13 @@ int pv_vcpu_initialise(struct vcpu *v)
     if ( rc )
         return rc;
 
+    if ( v->domain->arch.pv.xpti )
+    {
+        rc = pv_create_shadow_root_pt_l1tab(v);
+        if ( rc )
+            goto done;
+    }
+
     BUILD_BUG_ON(X86_NR_VECTORS * sizeof(*v->arch.pv.trap_ctxt) >
                  PAGE_SIZE);
     v->arch.pv.trap_ctxt = xzalloc_array(struct trap_info, X86_NR_VECTORS);
@@ -346,10 +367,12 @@ void pv_domain_destroy(struct domain *d)
 
     destroy_perdomain_mapping(d, GDT_LDT_VIRT_START,
                               GDT_LDT_MBYTES << (20 - PAGE_SHIFT));
+    destroy_perdomain_mapping(d, SHADOW_ROOT_PT_VIRT_START, SHADOW_ROOT_PT_ENTRIES);
 
     XFREE(d->arch.pv.cpuidmasks);
 
     FREE_XENHEAP_PAGE(d->arch.pv.gdt_ldt_l1tab);
+    FREE_XENHEAP_PAGE(d->arch.pv.shadow_root_pt_l1tab);
 }
 
 void noreturn cf_check continue_pv_domain(void);
@@ -371,6 +394,12 @@ int pv_domain_initialise(struct domain *d)
         goto fail;
     clear_page(d->arch.pv.gdt_ldt_l1tab);
 
+    d->arch.pv.shadow_root_pt_l1tab =
+        alloc_xenheap_pages(0, MEMF_node(domain_to_node(d)));
+    if ( !d->arch.pv.shadow_root_pt_l1tab )
+        goto fail;
+    clear_page(d->arch.pv.shadow_root_pt_l1tab);
+
     if ( levelling_caps & ~LCAP_faulting &&
          (d->arch.pv.cpuidmasks = xmemdup(&cpuidmask_defaults)) == NULL )
         goto fail;
@@ -381,6 +410,11 @@ int pv_domain_initialise(struct domain *d)
     if ( rc )
         goto fail;
 
+    rc = create_perdomain_mapping(d, SHADOW_ROOT_PT_VIRT_START,
+                                  SHADOW_ROOT_PT_ENTRIES, NULL, NULL);
+    if ( rc )
+        goto fail;
+
     d->arch.ctxt_switch = &pv_csw;
 
     d->arch.pv.xpti = is_hardware_domain(d) ? opt_xpti_hwdom : opt_xpti_domu;
diff --git a/xen/arch/x86/x86_64/asm-offsets.c b/xen/arch/x86/x86_64/asm-offsets.c
index 57b73a4e62..23f9cca1a2 100644
--- a/xen/arch/x86/x86_64/asm-offsets.c
+++ b/xen/arch/x86/x86_64/asm-offsets.c
@@ -51,6 +51,7 @@ void __dummy__(void)
     OFFSET(UREGS_kernel_sizeof, struct cpu_user_regs, es);
     BLANK();
 
+    OFFSET(VCPU_id, struct vcpu, vcpu_id);
     OFFSET(VCPU_processor, struct vcpu, processor);
     OFFSET(VCPU_domain, struct vcpu, domain);
     OFFSET(VCPU_vcpu_info, struct vcpu, vcpu_info_area.map);
diff --git a/xen/arch/x86/x86_64/entry.S b/xen/arch/x86/x86_64/entry.S
index c25b14dde6..a216c5ca7a 100644
--- a/xen/arch/x86/x86_64/entry.S
+++ b/xen/arch/x86/x86_64/entry.S
@@ -165,7 +165,15 @@ restore_all_guest:
         and   %rsi, %rdi
         and   %r9, %rsi
         add   %rcx, %rdi
+
+        /*
+         * The address in the vCPU cr3 is always mapped in the shadow
+         * root_pt virt area.
+         */
+        imul $PAGE_SIZE, VCPU_id(%rbx), %esi
+        movabs $SHADOW_ROOT_PT_VIRT_START, %rcx
         add   %rcx, %rsi
+
         mov   $ROOT_PAGETABLE_FIRST_XEN_SLOT, %ecx
         mov   root_table_offset(SH_LINEAR_PT_VIRT_START)*8(%rsi), %r8
         mov   %r8, root_table_offset(SH_LINEAR_PT_VIRT_START)*8(%rdi)
-- 
2.40.1



From xen-devel-bounces@lists.xenproject.org Tue Jan 16 18:52:16 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 16 Jan 2024 18:52:16 +0000
Received: from list by lists.xenproject.org with outflank-mailman.667963.1039762 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPoXo-0006KQ-7X; Tue, 16 Jan 2024 18:52:16 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 667963.1039762; Tue, 16 Jan 2024 18:52:16 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPoXo-0006JV-3J; Tue, 16 Jan 2024 18:52:16 +0000
Received: by outflank-mailman (input) for mailman id 667963;
 Tue, 16 Jan 2024 18:52:14 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=wmx9=I2=amazon.co.uk=prvs=738631f0b=eliasely@srs-se1.protection.inumbo.net>)
 id 1rPoXm-0003xp-9U
 for xen-devel@lists.xenproject.org; Tue, 16 Jan 2024 18:52:14 +0000
Received: from smtp-fw-52002.amazon.com (smtp-fw-52002.amazon.com
 [52.119.213.150]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 5b94df11-b4a0-11ee-9b0f-b553b5be7939;
 Tue, 16 Jan 2024 19:52:12 +0100 (CET)
Received: from iad12-co-svc-p1-lb1-vlan3.amazon.com (HELO
 email-inbound-relay-iad-1e-m6i4x-6e7a78d7.us-east-1.amazon.com) ([10.43.8.6])
 by smtp-border-fw-52002.iad7.amazon.com with
 ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 16 Jan 2024 18:52:11 +0000
Received: from smtpout.prod.us-east-1.prod.farcaster.email.amazon.dev
 (iad7-ws-svc-p70-lb3-vlan2.iad.amazon.com [10.32.235.34])
 by email-inbound-relay-iad-1e-m6i4x-6e7a78d7.us-east-1.amazon.com (Postfix)
 with ESMTPS id 1DA768032A; Tue, 16 Jan 2024 18:52:08 +0000 (UTC)
Received: from EX19MTAUEC002.ant.amazon.com [10.0.29.78:60336]
 by smtpin.naws.us-east-1.prod.farcaster.email.amazon.dev [10.0.3.20:2525] with
 esmtp (Farcaster)
 id 1934339f-4f50-41ac-9c8d-421e1f1e4d14; Tue, 16 Jan 2024 18:52:07 +0000 (UTC)
Received: from EX19D008UEC004.ant.amazon.com (10.252.135.170) by
 EX19MTAUEC002.ant.amazon.com (10.252.135.253) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1118.40; Tue, 16 Jan 2024 18:52:01 +0000
Received: from EX19MTAUWB001.ant.amazon.com (10.250.64.248) by
 EX19D008UEC004.ant.amazon.com (10.252.135.170) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1118.40; Tue, 16 Jan 2024 18:52:01 +0000
Received: from dev-dsk-eliasely-1a-fd74790f.eu-west-1.amazon.com
 (10.253.91.118) by mail-relay.amazon.com (10.250.64.254) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1118.40 via Frontend Transport; Tue, 16 Jan 2024 18:51:59 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 5b94df11-b4a0-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
  d=amazon.com; i=@amazon.com; q=dns/txt; s=amazon201209;
  t=1705431132; x=1736967132;
  h=from:to:cc:subject:date:message-id:in-reply-to:
   references:mime-version:content-transfer-encoding;
  bh=wuXlYkg7+aoOLvwI5g/1GuKiK7EGIYHkmtLupKWUrjI=;
  b=W7CUbFJ6CCFHWZuY1IP7Fq1UMNjuk8qPubp2rzcbn8T/apnpTWMpwaWS
   hf72r5vC2sbe4eBfZ32yjLwJNrPctFynEBSf3uhRaBxQn/UKMEZ4HMRmA
   le3fCQskCdR/d+q7FBUq4BJ3vZjU8Ca+hkfOtPecdIVIHSDXNXEEPMedI
   0=;
X-IronPort-AV: E=Sophos;i="6.05,200,1701129600"; 
   d="scan'208";a="606811514"
X-Farcaster-Flow-ID: 1934339f-4f50-41ac-9c8d-421e1f1e4d14
From: Elias El Yandouzi <eliasely@amazon.com>
To: <xen-devel@lists.xenproject.org>
CC: <julien@xen.org>, <pdurrant@amazon.com>, <dwmw@amazon.com>, Julien Grall
	<jgrall@amazon.com>, Stefano Stabellini <sstabellini@kernel.org>, "Bertrand
 Marquis" <bertrand.marquis@arm.com>, Michal Orzel <michal.orzel@amd.com>,
	Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>, Andrew Cooper
	<andrew.cooper3@citrix.com>, George Dunlap <george.dunlap@citrix.com>, "Jan
 Beulich" <jbeulich@suse.com>, Wei Liu <wl@xen.org>, Elias El Yandouzi
	<eliasely@amazon.com>, Henry Wang <Henry.Wang@arm.com>
Subject: [PATCH v2] xen/arm: fixmap: Rename the fixmap slots to follow the x86 convention
Date: Tue, 16 Jan 2024 18:50:43 +0000
Message-ID: <20240116185056.15000-15-eliasely@amazon.com>
X-Mailer: git-send-email 2.40.1
In-Reply-To: <20240116185056.15000-1-eliasely@amazon.com>
References: <20240116185056.15000-1-eliasely@amazon.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
Precedence: Bulk

From: Julien Grall <jgrall@amazon.com>

At the moment the fixmap slots are prefixed differently between arm and
x86.

Some of them (e.g. the PMAP slots) are used in common code. So it would
be better if they are named the same way to avoid having to create
aliases.

I have decided to use the x86 naming because they are less change. So
all the Arm fixmap slots will now be prefixed with FIX rather than
FIXMAP.

Signed-off-by: Julien Grall <jgrall@amazon.com>
Signed-off-by: Elias El Yandouzi <eliasely@amazon.com>

Reviewed-by: Henry Wang <Henry.Wang@arm.com>
Reviewed-by: Jan Beulich <jbeulich@suse.com>
Reviewed-by: Stefano Stabellini <sstabellini@kernel.org>

----

    Note that potentially more renaming that could be done to share
    more code in future. I have decided to not do that to avoid going
    down a rabbit hole.

diff --git a/xen/arch/arm/acpi/lib.c b/xen/arch/arm/acpi/lib.c
index 41d521f720..736cf09eca 100644
--- a/xen/arch/arm/acpi/lib.c
+++ b/xen/arch/arm/acpi/lib.c
@@ -40,10 +40,10 @@ char *__acpi_map_table(paddr_t phys, unsigned long size)
         return NULL;
 
     offset = phys & (PAGE_SIZE - 1);
-    base = FIXMAP_ADDR(FIXMAP_ACPI_BEGIN) + offset;
+    base = FIXMAP_ADDR(FIX_ACPI_BEGIN) + offset;
 
     /* Check the fixmap is big enough to map the region */
-    if ( (FIXMAP_ADDR(FIXMAP_ACPI_END) + PAGE_SIZE - base) < size )
+    if ( (FIXMAP_ADDR(FIX_ACPI_END) + PAGE_SIZE - base) < size )
         return NULL;
 
     /* With the fixmap, we can only map one region at the time */
@@ -54,7 +54,7 @@ char *__acpi_map_table(paddr_t phys, unsigned long size)
 
     size += offset;
     mfn = maddr_to_mfn(phys);
-    idx = FIXMAP_ACPI_BEGIN;
+    idx = FIX_ACPI_BEGIN;
 
     do {
         set_fixmap(idx, mfn, PAGE_HYPERVISOR);
@@ -72,8 +72,8 @@ bool __acpi_unmap_table(const void *ptr, unsigned long size)
     unsigned int idx;
 
     /* We are only handling fixmap address in the arch code */
-    if ( (vaddr < FIXMAP_ADDR(FIXMAP_ACPI_BEGIN)) ||
-         (vaddr >= (FIXMAP_ADDR(FIXMAP_ACPI_END) + PAGE_SIZE)) )
+    if ( (vaddr < FIXMAP_ADDR(FIX_ACPI_BEGIN)) ||
+         (vaddr >= (FIXMAP_ADDR(FIX_ACPI_END) + PAGE_SIZE)) )
         return false;
 
     /*
@@ -81,16 +81,16 @@ bool __acpi_unmap_table(const void *ptr, unsigned long size)
      * for the ACPI fixmap region. The caller is expected to free with
      * the same address.
      */
-    ASSERT((vaddr & PAGE_MASK) == FIXMAP_ADDR(FIXMAP_ACPI_BEGIN));
+    ASSERT((vaddr & PAGE_MASK) == FIXMAP_ADDR(FIX_ACPI_BEGIN));
 
     /* The region allocated fit in the ACPI fixmap region. */
-    ASSERT(size < (FIXMAP_ADDR(FIXMAP_ACPI_END) + PAGE_SIZE - vaddr));
+    ASSERT(size < (FIXMAP_ADDR(FIX_ACPI_END) + PAGE_SIZE - vaddr));
     ASSERT(fixmap_inuse);
 
     fixmap_inuse = false;
 
-    size += vaddr - FIXMAP_ADDR(FIXMAP_ACPI_BEGIN);
-    idx = FIXMAP_ACPI_BEGIN;
+    size += vaddr - FIXMAP_ADDR(FIX_ACPI_BEGIN);
+    idx = FIX_ACPI_BEGIN;
 
     do
     {
diff --git a/xen/arch/arm/include/asm/early_printk.h b/xen/arch/arm/include/asm/early_printk.h
index c1e84f8b00..f444e89a86 100644
--- a/xen/arch/arm/include/asm/early_printk.h
+++ b/xen/arch/arm/include/asm/early_printk.h
@@ -17,7 +17,7 @@
 
 /* need to add the uart address offset in page to the fixmap address */
 #define EARLY_UART_VIRTUAL_ADDRESS \
-    (FIXMAP_ADDR(FIXMAP_CONSOLE) + (CONFIG_EARLY_UART_BASE_ADDRESS & ~PAGE_MASK))
+    (FIXMAP_ADDR(FIX_CONSOLE) + (CONFIG_EARLY_UART_BASE_ADDRESS & ~PAGE_MASK))
 
 #define TEMPORARY_EARLY_UART_VIRTUAL_ADDRESS \
     (TEMPORARY_FIXMAP_ADDR(FIXMAP_CONSOLE) + (CONFIG_EARLY_UART_BASE_ADDRESS & ~PAGE_MASK))
diff --git a/xen/arch/arm/include/asm/fixmap.h b/xen/arch/arm/include/asm/fixmap.h
index 734eb9b1d4..a823456ecb 100644
--- a/xen/arch/arm/include/asm/fixmap.h
+++ b/xen/arch/arm/include/asm/fixmap.h
@@ -8,17 +8,17 @@
 #include <xen/pmap.h>
 
 /* Fixmap slots */
-#define FIXMAP_CONSOLE  0  /* The primary UART */
-#define FIXMAP_MISC     1  /* Ephemeral mappings of hardware */
-#define FIXMAP_ACPI_BEGIN  2  /* Start mappings of ACPI tables */
-#define FIXMAP_ACPI_END    (FIXMAP_ACPI_BEGIN + NUM_FIXMAP_ACPI_PAGES - 1)  /* End mappings of ACPI tables */
-#define FIXMAP_PMAP_BEGIN (FIXMAP_ACPI_END + 1) /* Start of PMAP */
-#define FIXMAP_PMAP_END (FIXMAP_PMAP_BEGIN + NUM_FIX_PMAP - 1) /* End of PMAP */
+#define FIX_CONSOLE  0  /* The primary UART */
+#define FIX_MISC     1  /* Ephemeral mappings of hardware */
+#define FIX_ACPI_BEGIN  2  /* Start mappings of ACPI tables */
+#define FIX_ACPI_END    (FIX_ACPI_BEGIN + NUM_FIXMAP_ACPI_PAGES - 1)  /* End mappings of ACPI tables */
+#define FIX_PMAP_BEGIN (FIX_ACPI_END + 1) /* Start of PMAP */
+#define FIX_PMAP_END (FIX_PMAP_BEGIN + NUM_FIX_PMAP - 1) /* End of PMAP */
 
-#define FIXMAP_LAST FIXMAP_PMAP_END
+#define FIX_LAST FIX_PMAP_END
 
 #define FIXADDR_START FIXMAP_ADDR(0)
-#define FIXADDR_TOP FIXMAP_ADDR(FIXMAP_LAST)
+#define FIXADDR_TOP FIXMAP_ADDR(FIX_LAST)
 
 #ifndef __ASSEMBLY__
 
diff --git a/xen/arch/arm/mmu/setup.c b/xen/arch/arm/mmu/setup.c
index 72725840b6..57f1b46499 100644
--- a/xen/arch/arm/mmu/setup.c
+++ b/xen/arch/arm/mmu/setup.c
@@ -351,7 +351,7 @@ void free_init_memory(void)
  */
 void __init copy_from_paddr(void *dst, paddr_t paddr, unsigned long len)
 {
-    void *src = (void *)FIXMAP_ADDR(FIXMAP_MISC);
+    void *src = (void *)FIXMAP_ADDR(FIX_MISC);
 
     while (len) {
         unsigned long l, s;
@@ -359,10 +359,10 @@ void __init copy_from_paddr(void *dst, paddr_t paddr, unsigned long len)
         s = paddr & (PAGE_SIZE - 1);
         l = min(PAGE_SIZE - s, len);
 
-        set_fixmap(FIXMAP_MISC, maddr_to_mfn(paddr), PAGE_HYPERVISOR_WC);
+        set_fixmap(FIX_MISC, maddr_to_mfn(paddr), PAGE_HYPERVISOR_WC);
         memcpy(dst, src + s, l);
         clean_dcache_va_range(dst, l);
-        clear_fixmap(FIXMAP_MISC);
+        clear_fixmap(FIX_MISC);
 
         paddr += l;
         dst += l;
diff --git a/xen/common/pmap.c b/xen/common/pmap.c
index 14517198aa..6e3ba9298d 100644
--- a/xen/common/pmap.c
+++ b/xen/common/pmap.c
@@ -32,8 +32,8 @@ void *__init pmap_map(mfn_t mfn)
 
     __set_bit(idx, inuse);
 
-    slot = idx + FIXMAP_PMAP_BEGIN;
-    ASSERT(slot >= FIXMAP_PMAP_BEGIN && slot <= FIXMAP_PMAP_END);
+    slot = idx + FIX_PMAP_BEGIN;
+    ASSERT(slot >= FIX_PMAP_BEGIN && slot <= FIX_PMAP_END);
 
     /*
      * We cannot use set_fixmap() here. We use PMAP when the domain map
@@ -53,10 +53,10 @@ void __init pmap_unmap(const void *p)
     unsigned int slot = virt_to_fix((unsigned long)p);
 
     ASSERT(system_state < SYS_STATE_smp_boot);
-    ASSERT(slot >= FIXMAP_PMAP_BEGIN && slot <= FIXMAP_PMAP_END);
+    ASSERT(slot >= FIX_PMAP_BEGIN && slot <= FIX_PMAP_END);
     ASSERT(!in_irq());
 
-    idx = slot - FIXMAP_PMAP_BEGIN;
+    idx = slot - FIX_PMAP_BEGIN;
 
     __clear_bit(idx, inuse);
     arch_pmap_unmap(slot);
-- 
2.40.1



From xen-devel-bounces@lists.xenproject.org Tue Jan 16 18:52:17 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 16 Jan 2024 18:52:17 +0000
Received: from list by lists.xenproject.org with outflank-mailman.667964.1039772 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPoXp-0006c6-J0; Tue, 16 Jan 2024 18:52:17 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 667964.1039772; Tue, 16 Jan 2024 18:52:17 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPoXp-0006bx-EI; Tue, 16 Jan 2024 18:52:17 +0000
Received: by outflank-mailman (input) for mailman id 667964;
 Tue, 16 Jan 2024 18:52:15 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=wmx9=I2=amazon.co.uk=prvs=738631f0b=eliasely@srs-se1.protection.inumbo.net>)
 id 1rPoXn-0003xp-9i
 for xen-devel@lists.xenproject.org; Tue, 16 Jan 2024 18:52:15 +0000
Received: from smtp-fw-52003.amazon.com (smtp-fw-52003.amazon.com
 [52.119.213.152]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 5b771e27-b4a0-11ee-9b0f-b553b5be7939;
 Tue, 16 Jan 2024 19:52:12 +0100 (CET)
Received: from iad12-co-svc-p1-lb1-vlan3.amazon.com (HELO
 email-inbound-relay-pdx-2c-m6i4x-dc7c3f8b.us-west-2.amazon.com) ([10.43.8.6])
 by smtp-border-fw-52003.iad7.amazon.com with
 ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 16 Jan 2024 18:52:09 +0000
Received: from smtpout.prod.us-east-1.prod.farcaster.email.amazon.dev
 (pdx2-ws-svc-p26-lb5-vlan2.pdx.amazon.com [10.39.38.66])
 by email-inbound-relay-pdx-2c-m6i4x-dc7c3f8b.us-west-2.amazon.com (Postfix)
 with ESMTPS id BC01FA09F4; Tue, 16 Jan 2024 18:52:08 +0000 (UTC)
Received: from EX19MTAUEC001.ant.amazon.com [10.0.44.209:44093]
 by smtpin.naws.us-east-1.prod.farcaster.email.amazon.dev [10.0.28.244:2525]
 with esmtp (Farcaster)
 id 8826fd54-63cc-48fd-9cd3-c458ac3478f9; Tue, 16 Jan 2024 18:52:08 +0000 (UTC)
Received: from EX19D008UEC004.ant.amazon.com (10.252.135.170) by
 EX19MTAUEC001.ant.amazon.com (10.252.135.222) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1118.40; Tue, 16 Jan 2024 18:52:03 +0000
Received: from EX19MTAUWB001.ant.amazon.com (10.250.64.248) by
 EX19D008UEC004.ant.amazon.com (10.252.135.170) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1118.40; Tue, 16 Jan 2024 18:52:03 +0000
Received: from dev-dsk-eliasely-1a-fd74790f.eu-west-1.amazon.com
 (10.253.91.118) by mail-relay.amazon.com (10.250.64.254) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1118.40 via Frontend Transport; Tue, 16 Jan 2024 18:52:01 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 5b771e27-b4a0-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
  d=amazon.com; i=@amazon.com; q=dns/txt; s=amazon201209;
  t=1705431133; x=1736967133;
  h=from:to:cc:subject:date:message-id:in-reply-to:
   references:mime-version:content-transfer-encoding;
  bh=L0+DUWALuf12F9Qa/oNJ9iBOAHkUE/QEE53X66ACQhM=;
  b=jgiXpIT8XPygbcEvGTXjPRd7pj4BD2GG+FAPPqv36gQTX4a/cswgJ+wH
   ERA0x/Iu+sfHnyzaQMER/4BVgPIGu3sq33Tga7zGGtewquM2PUf+ptrQm
   mf5XnqXd2xcnAB7TNHAaO8/12dmvZA3GllPDTXbmqTbUxwdoNZQFLYGuq
   s=;
X-IronPort-AV: E=Sophos;i="6.05,200,1701129600"; 
   d="scan'208";a="631569488"
X-Farcaster-Flow-ID: 8826fd54-63cc-48fd-9cd3-c458ac3478f9
From: Elias El Yandouzi <eliasely@amazon.com>
To: <xen-devel@lists.xenproject.org>
CC: <julien@xen.org>, <pdurrant@amazon.com>, <dwmw@amazon.com>, Julien Grall
	<jgrall@amazon.com>, Jan Beulich <jbeulich@suse.com>, Andrew Cooper
	<andrew.cooper3@citrix.com>, =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?=
	<roger.pau@citrix.com>, Wei Liu <wl@xen.org>, Elias El Yandouzi
	<eliasely@amazon.com>
Subject: [PATCH v2] xen/x86: Add support for the PMAP
Date: Tue, 16 Jan 2024 18:50:44 +0000
Message-ID: <20240116185056.15000-16-eliasely@amazon.com>
X-Mailer: git-send-email 2.40.1
In-Reply-To: <20240116185056.15000-1-eliasely@amazon.com>
References: <20240116185056.15000-1-eliasely@amazon.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
Precedence: Bulk

From: Julien Grall <jgrall@amazon.com>

PMAP will be used in a follow-up patch to bootstrap map domain
page infrastructure -- we need some way to map pages to setup the
mapcache without a direct map.

The functions pmap_{map, unmap} open code {set, clear}_fixmap to break
the loop.

Signed-off-by: Julien Grall <jgrall@amazon.com>
Signed-off-by: Elias El Yandouzi <eliasely@amazon.com>

----

    The PMAP infrastructure was upstream separately for Arm since
    Hongyan sent the secret-free hypervisor series. So this is a new
    patch to plumb the feature on x86.

    Changes in v2:
        * Declare PMAP entries earlier in fixed_addresses
        * Reword the commit message

diff --git a/xen/arch/x86/Kconfig b/xen/arch/x86/Kconfig
index 350f41b832..16b2a32469 100644
--- a/xen/arch/x86/Kconfig
+++ b/xen/arch/x86/Kconfig
@@ -25,6 +25,7 @@ config X86
 	select HAS_PASSTHROUGH
 	select HAS_PCI
 	select HAS_PCI_MSI
+	select HAS_PMAP
 	select HAS_SCHED_GRANULARITY
 	select HAS_UBSAN
 	select HAS_VPCI if HVM
diff --git a/xen/arch/x86/include/asm/fixmap.h b/xen/arch/x86/include/asm/fixmap.h
index 516ec3fa6c..a7ac365fc6 100644
--- a/xen/arch/x86/include/asm/fixmap.h
+++ b/xen/arch/x86/include/asm/fixmap.h
@@ -21,6 +21,8 @@
 
 #include <xen/acpi.h>
 #include <xen/pfn.h>
+#include <xen/pmap.h>
+
 #include <asm/apicdef.h>
 #include <asm/msi.h>
 #include <acpi/apei.h>
@@ -53,6 +55,8 @@ enum fixed_addresses {
     FIX_PV_CONSOLE,
     FIX_XEN_SHARED_INFO,
 #endif /* CONFIG_XEN_GUEST */
+    FIX_PMAP_BEGIN,
+    FIX_PMAP_END = FIX_PMAP_BEGIN + NUM_FIX_PMAP,
     /* Everything else should go further down. */
     FIX_APIC_BASE,
     FIX_IO_APIC_BASE_0,
diff --git a/xen/arch/x86/include/asm/pmap.h b/xen/arch/x86/include/asm/pmap.h
new file mode 100644
index 0000000000..62746e191d
--- /dev/null
+++ b/xen/arch/x86/include/asm/pmap.h
@@ -0,0 +1,25 @@
+#ifndef __ASM_PMAP_H__
+#define __ASM_PMAP_H__
+
+#include <asm/fixmap.h>
+
+static inline void arch_pmap_map(unsigned int slot, mfn_t mfn)
+{
+    unsigned long linear = (unsigned long)fix_to_virt(slot);
+    l1_pgentry_t *pl1e = &l1_fixmap[l1_table_offset(linear)];
+
+    ASSERT(!(l1e_get_flags(*pl1e) & _PAGE_PRESENT));
+
+    l1e_write_atomic(pl1e, l1e_from_mfn(mfn, PAGE_HYPERVISOR));
+}
+
+static inline void arch_pmap_unmap(unsigned int slot)
+{
+    unsigned long linear = (unsigned long)fix_to_virt(slot);
+    l1_pgentry_t *pl1e = &l1_fixmap[l1_table_offset(linear)];
+
+    l1e_write_atomic(pl1e, l1e_empty());
+    flush_tlb_one_local(linear);
+}
+
+#endif /* __ASM_PMAP_H__ */
-- 
2.40.1



From xen-devel-bounces@lists.xenproject.org Tue Jan 16 18:52:19 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 16 Jan 2024 18:52:19 +0000
Received: from list by lists.xenproject.org with outflank-mailman.667966.1039782 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPoXr-00076b-SD; Tue, 16 Jan 2024 18:52:19 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 667966.1039782; Tue, 16 Jan 2024 18:52:19 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPoXr-00076N-OS; Tue, 16 Jan 2024 18:52:19 +0000
Received: by outflank-mailman (input) for mailman id 667966;
 Tue, 16 Jan 2024 18:52:18 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=wmx9=I2=amazon.co.uk=prvs=738631f0b=eliasely@srs-se1.protection.inumbo.net>)
 id 1rPoXq-0003xp-NR
 for xen-devel@lists.xenproject.org; Tue, 16 Jan 2024 18:52:18 +0000
Received: from smtp-fw-9105.amazon.com (smtp-fw-9105.amazon.com
 [207.171.188.204]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 5d845d05-b4a0-11ee-9b0f-b553b5be7939;
 Tue, 16 Jan 2024 19:52:16 +0100 (CET)
Received: from pdx4-co-svc-p1-lb2-vlan2.amazon.com (HELO
 email-inbound-relay-pdx-2b-m6i4x-a893d89c.us-west-2.amazon.com)
 ([10.25.36.210]) by smtp-border-fw-9105.sea19.amazon.com with
 ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 16 Jan 2024 18:52:11 +0000
Received: from smtpout.prod.us-east-1.prod.farcaster.email.amazon.dev
 (pdx2-ws-svc-p26-lb5-vlan2.pdx.amazon.com [10.39.38.66])
 by email-inbound-relay-pdx-2b-m6i4x-a893d89c.us-west-2.amazon.com (Postfix)
 with ESMTPS id 38D4840D76; Tue, 16 Jan 2024 18:52:10 +0000 (UTC)
Received: from EX19MTAUEB002.ant.amazon.com [10.0.44.209:59869]
 by smtpin.naws.us-east-1.prod.farcaster.email.amazon.dev [10.0.57.22:2525]
 with esmtp (Farcaster)
 id b69868bd-f6ba-477d-852c-47807dd1cb29; Tue, 16 Jan 2024 18:52:09 +0000 (UTC)
Received: from EX19D008UEC004.ant.amazon.com (10.252.135.170) by
 EX19MTAUEB002.ant.amazon.com (10.252.135.47) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1118.40; Tue, 16 Jan 2024 18:52:05 +0000
Received: from EX19MTAUWB001.ant.amazon.com (10.250.64.248) by
 EX19D008UEC004.ant.amazon.com (10.252.135.170) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1118.40; Tue, 16 Jan 2024 18:52:05 +0000
Received: from dev-dsk-eliasely-1a-fd74790f.eu-west-1.amazon.com
 (10.253.91.118) by mail-relay.amazon.com (10.250.64.254) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1118.40 via Frontend Transport; Tue, 16 Jan 2024 18:52:03 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 5d845d05-b4a0-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
  d=amazon.com; i=@amazon.com; q=dns/txt; s=amazon201209;
  t=1705431137; x=1736967137;
  h=from:to:cc:subject:date:message-id:in-reply-to:
   references:mime-version:content-transfer-encoding;
  bh=tb2fNfqN0eF/OdROl8BG6kceQk3KA1cAs0YAyUr8QAc=;
  b=BsKioGJPSe+yEEJ+2aHUPFVqFkZNhK8VOI7pByqG7X3+2bT1l+N9nz0Y
   MYie2gMtFVOL0lzJjnMIS8r72kKI30b4GEiqV6bOPUGosVLicKsjWtKCN
   ZOAc6zdJ+epvokQujYn0v4QszMKU/ZINzO8o4/DQrFWpM4nJpSL1R7ern
   A=;
X-IronPort-AV: E=Sophos;i="6.05,200,1701129600"; 
   d="scan'208";a="698182050"
X-Farcaster-Flow-ID: b69868bd-f6ba-477d-852c-47807dd1cb29
From: Elias El Yandouzi <eliasely@amazon.com>
To: <xen-devel@lists.xenproject.org>
CC: <julien@xen.org>, <pdurrant@amazon.com>, <dwmw@amazon.com>, "Elias El
 Yandouzi" <eliasely@amazon.com>, Jan Beulich <jbeulich@suse.com>, "Andrew
 Cooper" <andrew.cooper3@citrix.com>, =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?=
	<roger.pau@citrix.com>, Wei Liu <wl@xen.org>
Subject: [PATCH v2] xen/x86: Add build assertion for fixmap entries
Date: Tue, 16 Jan 2024 18:50:45 +0000
Message-ID: <20240116185056.15000-17-eliasely@amazon.com>
X-Mailer: git-send-email 2.40.1
In-Reply-To: <20240116185056.15000-1-eliasely@amazon.com>
References: <20240116185056.15000-1-eliasely@amazon.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
Precedence: Bulk

The early fixed addresses must all fit into the static L1 table.
Introduce a build assertion to this end.

Signed-off-by: Elias El Yandouzi <eliasely@amazon.com>

----

     Changes in v2:
         * New patch

diff --git a/xen/arch/x86/include/asm/fixmap.h b/xen/arch/x86/include/asm/fixmap.h
index a7ac365fc6..904bee0480 100644
--- a/xen/arch/x86/include/asm/fixmap.h
+++ b/xen/arch/x86/include/asm/fixmap.h
@@ -77,6 +77,11 @@ enum fixed_addresses {
 #define FIXADDR_SIZE  (__end_of_fixed_addresses << PAGE_SHIFT)
 #define FIXADDR_START (FIXADDR_TOP - FIXADDR_SIZE)
 
+static inline void fixaddr_build_assertion(void)
+{
+    BUILD_BUG_ON(FIX_PMAP_END > L1_PAGETABLE_ENTRIES - 1);
+}
+
 extern void __set_fixmap(
     enum fixed_addresses idx, unsigned long mfn, unsigned long flags);
 
-- 
2.40.1



From xen-devel-bounces@lists.xenproject.org Tue Jan 16 19:00:22 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 16 Jan 2024 19:00:22 +0000
Received: from list by lists.xenproject.org with outflank-mailman.667994.1039791 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPofa-0002P8-Ri; Tue, 16 Jan 2024 19:00:18 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 667994.1039791; Tue, 16 Jan 2024 19:00:18 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPofa-0002P1-Of; Tue, 16 Jan 2024 19:00:18 +0000
Received: by outflank-mailman (input) for mailman id 667994;
 Tue, 16 Jan 2024 19:00:17 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=wmx9=I2=amazon.co.uk=prvs=738631f0b=eliasely@srs-se1.protection.inumbo.net>)
 id 1rPoXs-0003xp-Vl
 for xen-devel@lists.xenproject.org; Tue, 16 Jan 2024 18:52:20 +0000
Received: from smtp-fw-9105.amazon.com (smtp-fw-9105.amazon.com
 [207.171.188.204]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 5fa1380c-b4a0-11ee-9b0f-b553b5be7939;
 Tue, 16 Jan 2024 19:52:19 +0100 (CET)
Received: from pdx4-co-svc-p1-lb2-vlan2.amazon.com (HELO
 email-inbound-relay-iad-1e-m6i4x-0aba4706.us-east-1.amazon.com)
 ([10.25.36.210]) by smtp-border-fw-9105.sea19.amazon.com with
 ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 16 Jan 2024 18:52:10 +0000
Received: from smtpout.prod.us-east-1.prod.farcaster.email.amazon.dev
 (iad7-ws-svc-p70-lb3-vlan2.iad.amazon.com [10.32.235.34])
 by email-inbound-relay-iad-1e-m6i4x-0aba4706.us-east-1.amazon.com (Postfix)
 with ESMTPS id 2DEFEA0ED5; Tue, 16 Jan 2024 18:52:06 +0000 (UTC)
Received: from EX19MTAUEA001.ant.amazon.com [10.0.44.209:36830]
 by smtpin.naws.us-east-1.prod.farcaster.email.amazon.dev [10.0.15.248:2525]
 with esmtp (Farcaster)
 id a7f91975-ed87-4dde-a05c-1a70ef0afa42; Tue, 16 Jan 2024 18:52:05 +0000 (UTC)
Received: from EX19D008UEC004.ant.amazon.com (10.252.135.170) by
 EX19MTAUEA001.ant.amazon.com (10.252.134.203) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1118.40; Tue, 16 Jan 2024 18:51:52 +0000
Received: from EX19MTAUWB001.ant.amazon.com (10.250.64.248) by
 EX19D008UEC004.ant.amazon.com (10.252.135.170) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1118.40; Tue, 16 Jan 2024 18:51:51 +0000
Received: from dev-dsk-eliasely-1a-fd74790f.eu-west-1.amazon.com
 (10.253.91.118) by mail-relay.amazon.com (10.250.64.254) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1118.40 via Frontend Transport; Tue, 16 Jan 2024 18:51:50 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 5fa1380c-b4a0-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
  d=amazon.com; i=@amazon.com; q=dns/txt; s=amazon201209;
  t=1705431140; x=1736967140;
  h=from:to:cc:subject:date:message-id:in-reply-to:
   references:mime-version:content-transfer-encoding;
  bh=fLyAFvpkS62mZ58f/yx9ju+/jVeXxTTvsO8RqlfEYZw=;
  b=QTpoe6W2OZiIoMiNje46trYp40E/V05Tewo7T9/+cPsmEz1S4PZNxbYd
   ddaJGJoXVI2091nkxhrLHl24U+jMgjpI61ZnEF8LLlOtkpbEOykJBavG3
   8sum3lHRfkmUywMx06JyUuZFwyE4a4Yw1NmOD/PluVQtpC87+s/+U0SWD
   0=;
X-IronPort-AV: E=Sophos;i="6.05,200,1701129600"; 
   d="scan'208";a="698182045"
X-Farcaster-Flow-ID: a7f91975-ed87-4dde-a05c-1a70ef0afa42
From: Elias El Yandouzi <eliasely@amazon.com>
To: <xen-devel@lists.xenproject.org>
CC: <julien@xen.org>, <pdurrant@amazon.com>, <dwmw@amazon.com>, Hongyan Xia
	<hongyxia@amazon.com>, Jan Beulich <jbeulich@suse.com>, Andrew Cooper
	<andrew.cooper3@citrix.com>, =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?=
	<roger.pau@citrix.com>, Wei Liu <wl@xen.org>, Elias El Yandouzi
	<eliasely@amazon.com>
Subject: [PATCH v2] x86/pv: Map L4 page table for shim domain
Date: Tue, 16 Jan 2024 18:50:39 +0000
Message-ID: <20240116185056.15000-11-eliasely@amazon.com>
X-Mailer: git-send-email 2.40.1
In-Reply-To: <20240116185056.15000-1-eliasely@amazon.com>
References: <20240116185056.15000-1-eliasely@amazon.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
Precedence: Bulk

From: Hongyan Xia <hongyxia@amazon.com>

The root page table is allocated from the domheap and isn't
mapped by default. Map it on demand to build pv shim domain.

Signed-off-by: Hongyan Xia <hongyxia@amazon.com>
Signed-off-by: Elias El Yandouzi <eliasely@amazon.com>

----

    Changes in v2:
        * New patch

diff --git a/xen/arch/x86/pv/dom0_build.c b/xen/arch/x86/pv/dom0_build.c
index dc5e9fe117..fc51c7d362 100644
--- a/xen/arch/x86/pv/dom0_build.c
+++ b/xen/arch/x86/pv/dom0_build.c
@@ -991,8 +991,12 @@ do {                                                    \
      * !CONFIG_VIDEO case so the logic here can be simplified.
      */
     if ( pv_shim )
+    {
+        l4start = map_domain_page(l4start_mfn);
         pv_shim_setup_dom(d, l4start, v_start, vxenstore_start, vconsole_start,
                           vphysmap_start, si);
+        UNMAP_DOMAIN_PAGE(l4start);
+    }
 
 #ifdef CONFIG_COMPAT
     if ( compat )
-- 
2.40.1



From xen-devel-bounces@lists.xenproject.org Tue Jan 16 19:01:46 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 16 Jan 2024 19:01:46 +0000
Received: from list by lists.xenproject.org with outflank-mailman.667996.1039801 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPogz-00031i-4I; Tue, 16 Jan 2024 19:01:45 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 667996.1039801; Tue, 16 Jan 2024 19:01:45 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPogz-00031b-1g; Tue, 16 Jan 2024 19:01:45 +0000
Received: by outflank-mailman (input) for mailman id 667996;
 Tue, 16 Jan 2024 19:01:43 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=wmx9=I2=amazon.co.uk=prvs=738631f0b=eliasely@srs-se1.protection.inumbo.net>)
 id 1rPoXm-0002UD-4f
 for xen-devel@lists.xenproject.org; Tue, 16 Jan 2024 18:52:14 +0000
Received: from smtp-fw-9102.amazon.com (smtp-fw-9102.amazon.com
 [207.171.184.29]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 5b316841-b4a0-11ee-98f1-6d05b1d4d9a1;
 Tue, 16 Jan 2024 19:52:12 +0100 (CET)
Received: from pdx4-co-svc-p1-lb2-vlan3.amazon.com (HELO
 email-inbound-relay-iad-1box-1dm6-7f722725.us-east-1.amazon.com)
 ([10.25.36.214]) by smtp-border-fw-9102.sea19.amazon.com with
 ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 16 Jan 2024 18:52:10 +0000
Received: from smtpout.prod.us-east-1.prod.farcaster.email.amazon.dev
 (iad7-ws-svc-p70-lb3-vlan2.iad.amazon.com [10.32.235.34])
 by email-inbound-relay-iad-1box-1dm6-7f722725.us-east-1.amazon.com (Postfix)
 with ESMTPS id 4C12986ECA; Tue, 16 Jan 2024 18:52:07 +0000 (UTC)
Received: from EX19MTAUEA001.ant.amazon.com [10.0.44.209:54377]
 by smtpin.naws.us-east-1.prod.farcaster.email.amazon.dev [10.0.95.118:2525]
 with esmtp (Farcaster)
 id 9e06fc42-65ec-4c14-b51d-213d16eee67d; Tue, 16 Jan 2024 18:52:06 +0000 (UTC)
Received: from EX19D008UEA004.ant.amazon.com (10.252.134.191) by
 EX19MTAUEA001.ant.amazon.com (10.252.134.203) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1118.40; Tue, 16 Jan 2024 18:51:59 +0000
Received: from EX19MTAUWB001.ant.amazon.com (10.250.64.248) by
 EX19D008UEA004.ant.amazon.com (10.252.134.191) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1118.40; Tue, 16 Jan 2024 18:51:58 +0000
Received: from dev-dsk-eliasely-1a-fd74790f.eu-west-1.amazon.com
 (10.253.91.118) by mail-relay.amazon.com (10.250.64.254) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1118.40 via Frontend Transport; Tue, 16 Jan 2024 18:51:56 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 5b316841-b4a0-11ee-98f1-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
  d=amazon.com; i=@amazon.com; q=dns/txt; s=amazon201209;
  t=1705431133; x=1736967133;
  h=from:to:cc:subject:date:message-id:in-reply-to:
   references:mime-version:content-transfer-encoding;
  bh=OwpyHZJCgfsvXgrpfF3qQCU4NbQDoI500a3pBhrqpBY=;
  b=lTC2y5xp1rEfaDu/+8cUL02edy9LtvvvaSXhzlVtiNPglFYrn4zCeYU1
   m0tfQrJRqTBWYng0IwbggLWtqlq6zPf19PoV/qrsqd0FKTVTMDokNLL0X
   8yPcFIveCbTihCzWrAmy7I9SqmMwdwdIrWmsS1ODwyIzZKNuEEeNYLyAL
   A=;
X-IronPort-AV: E=Sophos;i="6.05,200,1701129600"; 
   d="scan'208";a="390202576"
X-Farcaster-Flow-ID: 9e06fc42-65ec-4c14-b51d-213d16eee67d
From: Elias El Yandouzi <eliasely@amazon.com>
To: <xen-devel@lists.xenproject.org>
CC: <julien@xen.org>, <pdurrant@amazon.com>, <dwmw@amazon.com>, Hongyan Xia
	<hongyxia@amazon.com>, Andrew Cooper <andrew.cooper3@citrix.com>, "George
 Dunlap" <george.dunlap@citrix.com>, Jan Beulich <jbeulich@suse.com>, "Stefano
 Stabellini" <sstabellini@kernel.org>, Wei Liu <wl@xen.org>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>, Julien Grall
	<jgrall@amazon.com>
Subject: [PATCH v2] x86: Add a boot option to enable and disable the direct map
Date: Tue, 16 Jan 2024 18:50:42 +0000
Message-ID: <20240116185056.15000-14-eliasely@amazon.com>
X-Mailer: git-send-email 2.40.1
In-Reply-To: <20240116185056.15000-1-eliasely@amazon.com>
References: <20240116185056.15000-1-eliasely@amazon.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
Precedence: Bulk

From: Hongyan Xia <hongyxia@amazon.com>

Also add a helper function to retrieve it. Change arch_mfns_in_direct_map
to check this option before returning.

This is added as a Kconfig option as well as a boot command line option.
While being generic, the Kconfig option is only usable for x86 at the moment.

Signed-off-by: Hongyan Xia <hongyxia@amazon.com>
Signed-off-by: Julien Grall <jgrall@amazon.com>

----

    Changes in V2:
        * Introduce a Kconfig option
        * Reword the commit message
        * Make opt_directmap and helper generic

    Changes since Hongyan's version:
        * Reword the commit message
        * opt_directmap is only modified during boot so mark it as
          __ro_after_init

diff --git a/docs/misc/xen-command-line.pandoc b/docs/misc/xen-command-line.pandoc
index 8e65f8bd18..63c946f482 100644
--- a/docs/misc/xen-command-line.pandoc
+++ b/docs/misc/xen-command-line.pandoc
@@ -799,6 +799,18 @@ that enabling this option cannot guarantee anything beyond what underlying
 hardware guarantees (with, where available and known to Xen, respective
 tweaks applied).
 
+### directmap (x86)
+> `= <boolean>`
+
+> Default: `true`
+
+Enable or disable the direct map region in Xen.
+
+By default, Xen creates the direct map region which maps physical memory
+in that region. Setting this to no will remove the direct map, blocking
+exploits that leak secrets via speculative memory access in the direct
+map.
+
 ### dma_bits
 > `= <integer>`
 
diff --git a/xen/arch/x86/Kconfig b/xen/arch/x86/Kconfig
index 1acdffc51c..350f41b832 100644
--- a/xen/arch/x86/Kconfig
+++ b/xen/arch/x86/Kconfig
@@ -29,6 +29,7 @@ config X86
 	select HAS_UBSAN
 	select HAS_VPCI if HVM
 	select NEEDS_LIBELF
+	select HAS_SECRET_HIDING
 
 config ARCH_DEFCONFIG
 	string
diff --git a/xen/arch/x86/include/asm/mm.h b/xen/arch/x86/include/asm/mm.h
index 7d26d9cd2f..4aae270a78 100644
--- a/xen/arch/x86/include/asm/mm.h
+++ b/xen/arch/x86/include/asm/mm.h
@@ -620,10 +620,18 @@ void write_32bit_pse_identmap(uint32_t *l2);
 /*
  * x86 maps part of physical memory via the directmap region.
  * Return whether the range of MFN falls in the directmap region.
+ *
+ * When boot command line sets directmap=no, we will not have a direct map at
+ * all so this will always return false.
  */
 static inline bool arch_mfns_in_directmap(unsigned long mfn, unsigned long nr)
 {
-    unsigned long eva = min(DIRECTMAP_VIRT_END, HYPERVISOR_VIRT_END);
+    unsigned long eva;
+
+    if ( !has_directmap() )
+        return false;
+
+    eva = min(DIRECTMAP_VIRT_END, HYPERVISOR_VIRT_END);
 
     return (mfn + nr) <= (virt_to_mfn(eva - 1) + 1);
 }
diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
index 4d0c90b7a0..b813ea75b5 100644
--- a/xen/arch/x86/setup.c
+++ b/xen/arch/x86/setup.c
@@ -1512,6 +1512,8 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
     if ( highmem_start )
         xenheap_max_mfn(PFN_DOWN(highmem_start - 1));
 
+    printk("Booting with directmap %s\n", has_directmap() ? "on" : "off");
+
     /*
      * Walk every RAM region and map it in its entirety (on x86/64, at least)
      * and notify it to the boot allocator.
diff --git a/xen/common/Kconfig b/xen/common/Kconfig
index 310ad4229c..9a24c89ac5 100644
--- a/xen/common/Kconfig
+++ b/xen/common/Kconfig
@@ -83,6 +83,23 @@ config HAS_UBSAN
 config MEM_ACCESS_ALWAYS_ON
 	bool
 
+config HAS_SECRET_HIDING
+	bool
+
+config SECRET_HIDING
+    bool "Secret hiding"
+    depends on HAS_SECRET_HIDING
+    ---help---
+    The directmap contains mapping for most of the RAM which makes domain
+    memory easily accessible. While making the performance better, it also makes
+    the hypervisor more vulnerable to speculation attacks.
+
+    Enabling this feature will allow the user to decide whether the memory
+    is always mapped at boot or mapped only on demand (see the command line
+    option "directmap").
+
+    If unsure, say N.
+
 config MEM_ACCESS
 	def_bool MEM_ACCESS_ALWAYS_ON
 	prompt "Memory Access and VM events" if !MEM_ACCESS_ALWAYS_ON
diff --git a/xen/common/page_alloc.c b/xen/common/page_alloc.c
index 740b6f0ff7..a3746cfbcf 100644
--- a/xen/common/page_alloc.c
+++ b/xen/common/page_alloc.c
@@ -173,6 +173,11 @@ paddr_t __ro_after_init mem_hotplug;
 static char __initdata opt_badpage[100] = "";
 string_param("badpage", opt_badpage);
 
+bool __ro_after_init opt_directmap = true;
+#ifdef CONFIG_HAS_SECRET_HIDING
+boolean_param("directmap", opt_directmap);
+#endif
+
 /*
  * no-bootscrub -> Free pages are not zeroed during boot.
  */
diff --git a/xen/include/xen/mm.h b/xen/include/xen/mm.h
index 3d9b2d05a5..f860e98ee4 100644
--- a/xen/include/xen/mm.h
+++ b/xen/include/xen/mm.h
@@ -165,6 +165,13 @@ extern unsigned long max_page;
 extern unsigned long total_pages;
 extern paddr_t mem_hotplug;
 
+extern bool opt_directmap;
+
+static inline bool has_directmap(void)
+{
+    return opt_directmap;
+}
+
 /*
  * Extra fault info types which are used to further describe
  * the source of an access violation.
-- 
2.40.1



From xen-devel-bounces@lists.xenproject.org Tue Jan 16 19:02:16 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 16 Jan 2024 19:02:16 +0000
Received: from list by lists.xenproject.org with outflank-mailman.668002.1039818 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPohU-0003WV-Me; Tue, 16 Jan 2024 19:02:16 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 668002.1039818; Tue, 16 Jan 2024 19:02:16 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPohU-0003VA-Fb; Tue, 16 Jan 2024 19:02:16 +0000
Received: by outflank-mailman (input) for mailman id 668002;
 Tue, 16 Jan 2024 19:02:14 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=wmx9=I2=amazon.co.uk=prvs=738631f0b=eliasely@srs-se1.protection.inumbo.net>)
 id 1rPoY0-0002UD-Nm
 for xen-devel@lists.xenproject.org; Tue, 16 Jan 2024 18:52:28 +0000
Received: from smtp-fw-80008.amazon.com (smtp-fw-80008.amazon.com
 [99.78.197.219]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 633efaf8-b4a0-11ee-98f1-6d05b1d4d9a1;
 Tue, 16 Jan 2024 19:52:26 +0100 (CET)
Received: from pdx4-co-svc-p1-lb2-vlan3.amazon.com (HELO
 email-inbound-relay-iad-1a-m6i4x-617e30c2.us-east-1.amazon.com)
 ([10.25.36.214]) by smtp-border-fw-80008.pdx80.corp.amazon.com with
 ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 16 Jan 2024 18:52:24 +0000
Received: from smtpout.prod.us-east-1.prod.farcaster.email.amazon.dev
 (iad7-ws-svc-p70-lb3-vlan2.iad.amazon.com [10.32.235.34])
 by email-inbound-relay-iad-1a-m6i4x-617e30c2.us-east-1.amazon.com (Postfix)
 with ESMTPS id 13E55690D4; Tue, 16 Jan 2024 18:52:20 +0000 (UTC)
Received: from EX19MTAUEA002.ant.amazon.com [10.0.29.78:6774]
 by smtpin.naws.us-east-1.prod.farcaster.email.amazon.dev [10.0.41.129:2525]
 with esmtp (Farcaster)
 id 6f076021-faef-46aa-80d9-ddb13dc2592e; Tue, 16 Jan 2024 18:52:19 +0000 (UTC)
Received: from EX19D008UEC004.ant.amazon.com (10.252.135.170) by
 EX19MTAUEA002.ant.amazon.com (10.252.134.9) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1118.40; Tue, 16 Jan 2024 18:52:19 +0000
Received: from EX19MTAUWB001.ant.amazon.com (10.250.64.248) by
 EX19D008UEC004.ant.amazon.com (10.252.135.170) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1118.40; Tue, 16 Jan 2024 18:52:19 +0000
Received: from dev-dsk-eliasely-1a-fd74790f.eu-west-1.amazon.com
 (10.253.91.118) by mail-relay.amazon.com (10.250.64.254) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1118.40 via Frontend Transport; Tue, 16 Jan 2024 18:52:16 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 633efaf8-b4a0-11ee-98f1-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
  d=amazon.com; i=@amazon.com; q=dns/txt; s=amazon201209;
  t=1705431146; x=1736967146;
  h=from:to:cc:subject:date:message-id:in-reply-to:
   references:mime-version:content-transfer-encoding;
  bh=A4skyGZm0AGMkXurcV6O3b2jzlTiRDRc3CtNyj3qfuY=;
  b=oUmIRK8cEveQYTFTI7DWoTuelwF5PYQs8cr8tLbNtiCqr+JLjuuZ8eFM
   ZXh2j9ZK2uMQFIqxMhiHbN2LQeSeDDlxMZ3oAsF7EvUDfv+4oJYyFB8CI
   1eybD7Y9OD0amdW29mTzH0uDDCLBxw4e3p6hkUJzq+wns/ZP8owdqyCJ2
   g=;
X-IronPort-AV: E=Sophos;i="6.05,200,1701129600"; 
   d="scan'208";a="58742941"
X-Farcaster-Flow-ID: 6f076021-faef-46aa-80d9-ddb13dc2592e
From: Elias El Yandouzi <eliasely@amazon.com>
To: <xen-devel@lists.xenproject.org>
CC: <julien@xen.org>, <pdurrant@amazon.com>, <dwmw@amazon.com>, "Elias El
 Yandouzi" <eliasely@amazon.com>, Stefano Stabellini <sstabellini@kernel.org>,
	Bertrand Marquis <bertrand.marquis@arm.com>, Michal Orzel
	<michal.orzel@amd.com>, Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>, George Dunlap
	<george.dunlap@citrix.com>, Jan Beulich <jbeulich@suse.com>, Wei Liu
	<wl@xen.org>, =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>,
	Lukasz Hawrylko <lukasz@hawrylko.pl>, "Daniel P. Smith"
	<dpsmith@apertussolutions.com>, =?UTF-8?q?Mateusz=20M=C3=B3wka?=
	<mateusz.mowka@intel.com>
Subject: [PATCH v2] Rename mfn_to_virt() calls
Date: Tue, 16 Jan 2024 18:50:51 +0000
Message-ID: <20240116185056.15000-23-eliasely@amazon.com>
X-Mailer: git-send-email 2.40.1
In-Reply-To: <20240116185056.15000-1-eliasely@amazon.com>
References: <20240116185056.15000-1-eliasely@amazon.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
Precedence: Bulk

Until directmap gets completely removed, we'd still need to
keep some calls to mfn_to_virt() for xenheap pages or when the
directmap is enabled.

Rename the macro to mfn_to_directmap_virt() to flag them and
prevent further use of mfn_to_virt().

Signed-off-by: Elias El Yandouzi <eliasely@amazon.com>

diff --git a/xen/arch/arm/include/asm/mm.h b/xen/arch/arm/include/asm/mm.h
index cbcf3bf147..9a94d7eaf7 100644
--- a/xen/arch/arm/include/asm/mm.h
+++ b/xen/arch/arm/include/asm/mm.h
@@ -336,6 +336,7 @@ static inline uint64_t gvirt_to_maddr(vaddr_t va, paddr_t *pa,
  */
 #define virt_to_mfn(va)     __virt_to_mfn(va)
 #define mfn_to_virt(mfn)    __mfn_to_virt(mfn)
+#define mfn_to_directmap_virt(mfn) mfn_to_virt(mfn)
 
 /* Convert between Xen-heap virtual addresses and page-info structures. */
 static inline struct page_info *virt_to_page(const void *v)
diff --git a/xen/arch/x86/domain_page.c b/xen/arch/x86/domain_page.c
index 89caefc8a2..62d6fee0f4 100644
--- a/xen/arch/x86/domain_page.c
+++ b/xen/arch/x86/domain_page.c
@@ -81,14 +81,14 @@ void *map_domain_page(mfn_t mfn)
 
 #ifdef NDEBUG
     if ( arch_mfns_in_directmap(mfn_x(mfn), 1) )
-        return mfn_to_virt(mfn_x(mfn));
+        return mfn_to_directmap_virt(mfn_x(mfn));
 #endif
 
     v = mapcache_current_vcpu();
     if ( !v || !v->domain->arch.mapcache.inuse )
     {
         if ( arch_mfns_in_directmap(mfn_x(mfn), 1) )
-            return mfn_to_virt(mfn_x(mfn));
+            return mfn_to_directmap_virt(mfn_x(mfn));
         else
         {
             BUG_ON(system_state >= SYS_STATE_smp_boot);
@@ -324,7 +324,7 @@ void *map_domain_page_global(mfn_t mfn)
 
 #ifdef NDEBUG
     if ( arch_mfn_in_directmap(mfn_x(mfn, 1)) )
-        return mfn_to_virt(mfn_x(mfn));
+        return mfn_to_directmap_virt(mfn_x(mfn));
 #endif
 
     return vmap(&mfn, 1);
diff --git a/xen/arch/x86/hvm/dom0_build.c b/xen/arch/x86/hvm/dom0_build.c
index e59f6657d9..1b3ebae16f 100644
--- a/xen/arch/x86/hvm/dom0_build.c
+++ b/xen/arch/x86/hvm/dom0_build.c
@@ -439,7 +439,7 @@ static int __init pvh_populate_p2m(struct domain *d)
                                  d->arch.e820[i].addr + d->arch.e820[i].size);
             enum hvm_translation_result res =
                  hvm_copy_to_guest_phys(mfn_to_maddr(_mfn(addr)),
-                                        mfn_to_virt(addr),
+                                        mfn_to_directmap_virt(addr),
                                         end - d->arch.e820[i].addr,
                                         v);
 
@@ -613,7 +613,7 @@ static int __init pvh_load_kernel(struct domain *d, const module_t *image,
 
     if ( initrd != NULL )
     {
-        rc = hvm_copy_to_guest_phys(last_addr, mfn_to_virt(initrd->mod_start),
+        rc = hvm_copy_to_guest_phys(last_addr, mfn_to_directmap_virt(initrd->mod_start),
                                     initrd->mod_end, v);
         if ( rc )
         {
diff --git a/xen/arch/x86/include/asm/page.h b/xen/arch/x86/include/asm/page.h
index 350d1fb110..c6891b52d4 100644
--- a/xen/arch/x86/include/asm/page.h
+++ b/xen/arch/x86/include/asm/page.h
@@ -268,7 +268,7 @@ void copy_page_sse2(void *to, const void *from);
  */
 #define mfn_valid(mfn)      __mfn_valid(mfn_x(mfn))
 #define virt_to_mfn(va)     __virt_to_mfn(va)
-#define mfn_to_virt(mfn)    __mfn_to_virt(mfn)
+#define mfn_to_directmap_virt(mfn)    __mfn_to_virt(mfn)
 #define virt_to_maddr(va)   __virt_to_maddr((unsigned long)(va))
 #define maddr_to_virt(ma)   __maddr_to_virt((unsigned long)(ma))
 #define maddr_to_page(ma)   __maddr_to_page(ma)
diff --git a/xen/arch/x86/mm.c b/xen/arch/x86/mm.c
index a72c32d87c..9530c93b68 100644
--- a/xen/arch/x86/mm.c
+++ b/xen/arch/x86/mm.c
@@ -318,8 +318,8 @@ void __init arch_init_memory(void)
         iostart_pfn = max_t(unsigned long, pfn, 1UL << (20 - PAGE_SHIFT));
         ioend_pfn = min(rstart_pfn, 16UL << (20 - PAGE_SHIFT));
         if ( iostart_pfn < ioend_pfn )
-            destroy_xen_mappings((unsigned long)mfn_to_virt(iostart_pfn),
-                                 (unsigned long)mfn_to_virt(ioend_pfn));
+            destroy_xen_mappings((unsigned long)mfn_to_directmap_virt(iostart_pfn),
+                                 (unsigned long)mfn_to_directmap_virt(ioend_pfn));
 
         /* Mark as I/O up to next RAM region. */
         for ( ; pfn < rstart_pfn; pfn++ )
diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
index 84c496ac4a..de69b7935c 100644
--- a/xen/arch/x86/setup.c
+++ b/xen/arch/x86/setup.c
@@ -400,7 +400,7 @@ void *__init bootstrap_map(const module_t *mod)
     void *ret;
 
     if ( system_state != SYS_STATE_early_boot )
-        return mod ? mfn_to_virt(mod->mod_start) : NULL;
+        return mod ? mfn_to_directmap_virt(mod->mod_start) : NULL;
 
     if ( !mod )
     {
@@ -1703,7 +1703,7 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
     {
         set_pdx_range(mod[i].mod_start,
                       mod[i].mod_start + PFN_UP(mod[i].mod_end));
-        map_pages_to_xen((unsigned long)mfn_to_virt(mod[i].mod_start),
+        map_pages_to_xen((unsigned long)mfn_to_directmap_virt(mod[i].mod_start),
                          _mfn(mod[i].mod_start),
                          PFN_UP(mod[i].mod_end), PAGE_HYPERVISOR);
     }
diff --git a/xen/arch/x86/tboot.c b/xen/arch/x86/tboot.c
index 86c4c22cac..4368a64009 100644
--- a/xen/arch/x86/tboot.c
+++ b/xen/arch/x86/tboot.c
@@ -253,7 +253,7 @@ static void tboot_gen_xenheap_integrity(const uint8_t key[TB_KEY_SIZE],
             continue; /* skip tboot and its page tables */
 
         if ( is_page_in_use(page) && is_special_page(page) )
-            vmac_update(mfn_to_virt(mfn), PAGE_SIZE, &ctx);
+            vmac_update(mfn_to_directmap_virt(mfn), PAGE_SIZE, &ctx);
     }
     *mac = vmac(NULL, 0, nonce, NULL, &ctx);
 
diff --git a/xen/arch/x86/x86_64/mm.c b/xen/arch/x86/x86_64/mm.c
index b2a280fba3..1697760d82 100644
--- a/xen/arch/x86/x86_64/mm.c
+++ b/xen/arch/x86/x86_64/mm.c
@@ -1247,19 +1247,25 @@ int memory_add(unsigned long spfn, unsigned long epfn, unsigned int pxm)
     i = virt_to_mfn(HYPERVISOR_VIRT_END - 1) + 1;
     if ( spfn < i )
     {
-        ret = map_pages_to_xen((unsigned long)mfn_to_virt(spfn), _mfn(spfn),
-                               min(epfn, i) - spfn, PAGE_HYPERVISOR);
-        if ( ret )
-            goto destroy_directmap;
+        if ( arch_mfns_in_directmap(spfn, min(epfn, i) - spfn ) )
+        {
+            ret = map_pages_to_xen((unsigned long)mfn_to_directmap_virt(spfn), _mfn(spfn),
+                                min(epfn, i) - spfn, PAGE_HYPERVISOR);
+            if ( ret )
+                goto destroy_directmap;
+        }
     }
     if ( i < epfn )
     {
         if ( i < spfn )
             i = spfn;
-        ret = map_pages_to_xen((unsigned long)mfn_to_virt(i), _mfn(i),
-                               epfn - i, __PAGE_HYPERVISOR_RW);
-        if ( ret )
-            goto destroy_directmap;
+        if ( arch_mfns_in_directmap(spfn, epfn - i) )
+        {
+            ret = map_pages_to_xen((unsigned long)mfn_to_directmap_virt(i), _mfn(i),
+                                epfn - i, __PAGE_HYPERVISOR_RW);
+            if ( ret )
+                goto destroy_directmap;
+        }
     }
 
     old_node_start = node_start_pfn(node);
@@ -1348,8 +1354,8 @@ destroy_frametable:
     NODE_DATA(node)->node_start_pfn = old_node_start;
     NODE_DATA(node)->node_spanned_pages = old_node_span;
  destroy_directmap:
-    destroy_xen_mappings((unsigned long)mfn_to_virt(spfn),
-                         (unsigned long)mfn_to_virt(epfn));
+    destroy_xen_mappings((unsigned long)mfn_to_directmap_virt(spfn),
+                         (unsigned long)mfn_to_directmap_virt(epfn));
 
     return ret;
 }
diff --git a/xen/common/efi/boot.c b/xen/common/efi/boot.c
index efbec00af9..39aed5845d 100644
--- a/xen/common/efi/boot.c
+++ b/xen/common/efi/boot.c
@@ -1599,7 +1599,7 @@ static __init void copy_mapping(unsigned long mfn, unsigned long end,
     for ( ; mfn < end; mfn = next )
     {
         l4_pgentry_t l4e = efi_l4t[l4_table_offset(mfn << PAGE_SHIFT)];
-        unsigned long va = (unsigned long)mfn_to_virt(mfn);
+        unsigned long va = (unsigned long)mfn_to_directmap_virt(mfn);
 
         if ( !(mfn & ((1UL << (L4_PAGETABLE_SHIFT - PAGE_SHIFT)) - 1)) )
             UNMAP_DOMAIN_PAGE(l3dst);
@@ -1757,15 +1757,18 @@ void __init efi_init_memory(void)
         if ( pfn_to_pdx(emfn - 1) < (DIRECTMAP_SIZE >> PAGE_SHIFT) &&
              pdx_is_region_compressible(mem_base, mem_npages) )
         {
-            if ( (unsigned long)mfn_to_virt(emfn - 1) >= HYPERVISOR_VIRT_END )
-                prot &= ~_PAGE_GLOBAL;
-            if ( map_pages_to_xen((unsigned long)mfn_to_virt(smfn),
-                                  _mfn(smfn), emfn - smfn, prot) == 0 )
-                desc->VirtualStart =
-                    (unsigned long)maddr_to_virt(desc->PhysicalStart);
-            else
-                printk(XENLOG_ERR "Could not map MFNs %#lx-%#lx\n",
-                       smfn, emfn - 1);
+            if ( arch_mfns_in_directmap(smfn, emfn - smfn) )
+            {
+                if ( (unsigned long)mfn_to_directmap_virt(emfn - 1) >= HYPERVISOR_VIRT_END )
+                    prot &= ~_PAGE_GLOBAL;
+                if ( map_pages_to_xen((unsigned long)mfn_to_directmap_virt(smfn),
+                                    _mfn(smfn), emfn - smfn, prot) == 0 )
+                    desc->VirtualStart =
+                        (unsigned long)maddr_to_virt(desc->PhysicalStart);
+                else
+                    printk(XENLOG_ERR "Could not map MFNs %#lx-%#lx\n",
+                        smfn, emfn - 1);
+            }
         }
         else if ( !((desc->PhysicalStart + len - 1) >> (VADDR_BITS - 1)) &&
                   (extra = xmalloc(struct rt_extra)) != NULL )
diff --git a/xen/common/page_alloc.c b/xen/common/page_alloc.c
index 42b9aaae1c..0877e275e5 100644
--- a/xen/common/page_alloc.c
+++ b/xen/common/page_alloc.c
@@ -610,8 +610,8 @@ static unsigned long init_node_heap(int node, unsigned long mfn,
     {
         if ( arch_mfns_in_directmap(mfn + nr - needed, needed) )
         {
-            _heap[node] = mfn_to_virt(mfn + nr - needed);
-            avail[node] = mfn_to_virt(mfn + nr - 1) +
+            _heap[node] = mfn_to_directmap_virt(mfn + nr - needed);
+            avail[node] = mfn_to_directmap_virt(mfn + nr - 1) +
                           PAGE_SIZE - sizeof(**avail) * NR_ZONES;
         }
         else
@@ -630,8 +630,8 @@ static unsigned long init_node_heap(int node, unsigned long mfn,
     {
         if ( arch_mfns_in_directmap(mfn, needed) )
         {
-            _heap[node] = mfn_to_virt(mfn);
-            avail[node] = mfn_to_virt(mfn + needed - 1) +
+            _heap[node] = mfn_to_directmap_virt(mfn);
+            avail[node] = mfn_to_directmap_virt(mfn + needed - 1) +
                           PAGE_SIZE - sizeof(**avail) * NR_ZONES;
         }
         else
diff --git a/xen/common/trace.c b/xen/common/trace.c
index 4e7b080e61..955509a0d8 100644
--- a/xen/common/trace.c
+++ b/xen/common/trace.c
@@ -229,7 +229,7 @@ static int alloc_trace_bufs(unsigned int pages)
         offset = t_info->mfn_offset[cpu];
 
         /* Initialize the buffer metadata */
-        per_cpu(t_bufs, cpu) = buf = mfn_to_virt(t_info_mfn_list[offset]);
+        per_cpu(t_bufs, cpu) = buf = mfn_to_directmap_virt(t_info_mfn_list[offset]);
         buf->cons = buf->prod = 0;
 
         printk(XENLOG_INFO "xentrace: p%d mfn %x offset %u\n",
@@ -268,7 +268,7 @@ out_dealloc:
             if ( !mfn )
                 break;
             ASSERT(!(mfn_to_page(_mfn(mfn))->count_info & PGC_allocated));
-            free_xenheap_pages(mfn_to_virt(mfn), 0);
+            free_xenheap_pages(mfn_to_directmap_virt(mfn), 0);
         }
     }
     free_xenheap_pages(t_info, get_order_from_pages(t_info_pages));
@@ -529,7 +529,7 @@ static unsigned char *next_record(const struct t_buf *buf, uint32_t *next,
     per_cpu_mfn_offset = t_info->mfn_offset[smp_processor_id()];
     mfn_list = (uint32_t *)t_info;
     mfn = mfn_list[per_cpu_mfn_offset + per_cpu_mfn_nr];
-    this_page = mfn_to_virt(mfn);
+    this_page = (unsigned char *)mfn_to_directmap_virt(mfn);
     if (per_cpu_mfn_nr + 1 >= opt_tbuf_size)
     {
         /* reached end of buffer? */
@@ -538,7 +538,7 @@ static unsigned char *next_record(const struct t_buf *buf, uint32_t *next,
     else
     {
         mfn = mfn_list[per_cpu_mfn_offset + per_cpu_mfn_nr + 1];
-        *next_page = mfn_to_virt(mfn);
+        *next_page = mfn_to_directmap_virt(mfn);
     }
     return this_page;
 }
-- 
2.40.1



From xen-devel-bounces@lists.xenproject.org Tue Jan 16 19:02:16 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 16 Jan 2024 19:02:16 +0000
Received: from list by lists.xenproject.org with outflank-mailman.668000.1039812 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPohU-0003Te-BQ; Tue, 16 Jan 2024 19:02:16 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 668000.1039812; Tue, 16 Jan 2024 19:02:16 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPohU-0003TV-8j; Tue, 16 Jan 2024 19:02:16 +0000
Received: by outflank-mailman (input) for mailman id 668000;
 Tue, 16 Jan 2024 19:02:14 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=wmx9=I2=amazon.co.uk=prvs=738631f0b=eliasely@srs-se1.protection.inumbo.net>)
 id 1rPoY5-0002UD-BT
 for xen-devel@lists.xenproject.org; Tue, 16 Jan 2024 18:52:33 +0000
Received: from smtp-fw-80008.amazon.com (smtp-fw-80008.amazon.com
 [99.78.197.219]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 6783d480-b4a0-11ee-98f1-6d05b1d4d9a1;
 Tue, 16 Jan 2024 19:52:32 +0100 (CET)
Received: from pdx4-co-svc-p1-lb2-vlan3.amazon.com (HELO
 email-inbound-relay-iad-1d-m6i4x-f05d30a1.us-east-1.amazon.com)
 ([10.25.36.214]) by smtp-border-fw-80008.pdx80.corp.amazon.com with
 ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 16 Jan 2024 18:52:30 +0000
Received: from smtpout.prod.us-east-1.prod.farcaster.email.amazon.dev
 (iad7-ws-svc-p70-lb3-vlan3.iad.amazon.com [10.32.235.38])
 by email-inbound-relay-iad-1d-m6i4x-f05d30a1.us-east-1.amazon.com (Postfix)
 with ESMTPS id 3959A80927; Tue, 16 Jan 2024 18:52:27 +0000 (UTC)
Received: from EX19MTAUEA001.ant.amazon.com [10.0.44.209:59904]
 by smtpin.naws.us-east-1.prod.farcaster.email.amazon.dev [10.0.28.244:2525]
 with esmtp (Farcaster)
 id de6553b2-b322-482f-9b1a-3ff98ed881c5; Tue, 16 Jan 2024 18:52:26 +0000 (UTC)
Received: from EX19D008UEC004.ant.amazon.com (10.252.135.170) by
 EX19MTAUEA001.ant.amazon.com (10.252.134.203) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1118.40; Tue, 16 Jan 2024 18:52:23 +0000
Received: from EX19MTAUWB001.ant.amazon.com (10.250.64.248) by
 EX19D008UEC004.ant.amazon.com (10.252.135.170) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1118.40; Tue, 16 Jan 2024 18:52:22 +0000
Received: from dev-dsk-eliasely-1a-fd74790f.eu-west-1.amazon.com
 (10.253.91.118) by mail-relay.amazon.com (10.250.64.254) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1118.40 via Frontend Transport; Tue, 16 Jan 2024 18:52:21 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 6783d480-b4a0-11ee-98f1-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
  d=amazon.com; i=@amazon.com; q=dns/txt; s=amazon201209;
  t=1705431152; x=1736967152;
  h=from:to:cc:subject:date:message-id:in-reply-to:
   references:mime-version:content-transfer-encoding;
  bh=aYNk7nmnUy0AklxdrRg4GNXCK3HA+7wbY/AdUPNJirw=;
  b=mglLoY1/7gW3Gjo3mzrNlMSC42EqmQoRhbVNgQ+w1n0U0s56xeJ9iQGo
   zDGZWtEwHv+GTcpAnEnhn5S/w7+p1zYEzMVF/LXSm9HwI1PDqz5XByezl
   YrYrwZ2qI5Jgk3qtJ2IYmQ1BagxLXC8+LFKFxQ2xK+1BCujbliSERjDzx
   M=;
X-IronPort-AV: E=Sophos;i="6.05,200,1701129600"; 
   d="scan'208";a="58742957"
X-Farcaster-Flow-ID: de6553b2-b322-482f-9b1a-3ff98ed881c5
From: Elias El Yandouzi <eliasely@amazon.com>
To: <xen-devel@lists.xenproject.org>
CC: <julien@xen.org>, <pdurrant@amazon.com>, <dwmw@amazon.com>, Julien Grall
	<jgrall@amazon.com>, Stefano Stabellini <sstabellini@kernel.org>, "Bertrand
 Marquis" <bertrand.marquis@arm.com>, Michal Orzel <michal.orzel@amd.com>,
	Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>, Elias El Yandouzi
	<eliasely@amazon.com>
Subject: [PATCH v2] xen/arm32: mm: Rename 'first' to 'root' in init_secondary_pagetables()
Date: Tue, 16 Jan 2024 18:50:53 +0000
Message-ID: <20240116185056.15000-25-eliasely@amazon.com>
X-Mailer: git-send-email 2.40.1
In-Reply-To: <20240116185056.15000-1-eliasely@amazon.com>
References: <20240116185056.15000-1-eliasely@amazon.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
Precedence: Bulk

From: Julien Grall <jgrall@amazon.com>

The arm32 version of init_secondary_pagetables() will soon be re-used
for arm64 as well where the root table starts at level 0 rather than level 1.

So rename 'first' to 'root'.

Signed-off-by: Julien Grall <jgrall@amazon.com>
Signed-off-by: Elias El Yandouzi <eliasely@amazon.com>

----

    Changelog in v2:
        * Rebase
        * Fix typo

diff --git a/xen/arch/arm/mmu/smpboot.c b/xen/arch/arm/mmu/smpboot.c
index b6fc0aae07..fb5df667ba 100644
--- a/xen/arch/arm/mmu/smpboot.c
+++ b/xen/arch/arm/mmu/smpboot.c
@@ -84,32 +84,30 @@ int prepare_secondary_mm(int cpu)
 #else
 int prepare_secondary_mm(int cpu)
 {
-    lpae_t *first;
+    lpae_t *root = alloc_xenheap_page();
 
-    first = alloc_xenheap_page(); /* root == first level on 32-bit 3-level trie */
-
-    if ( !first )
+    if ( !root )
     {
-        printk("CPU%u: Unable to allocate the first page-table\n", cpu);
+        printk("CPU%u: Unable to allocate the root page-table\n", cpu);
         return -ENOMEM;
     }
 
     /* Initialise root pagetable from root of boot tables */
-    memcpy(first, per_cpu(xen_pgtable, 0), PAGE_SIZE);
-    per_cpu(xen_pgtable, cpu) = first;
+    memcpy(root, per_cpu(xen_pgtable, 0), PAGE_SIZE);
+    per_cpu(xen_pgtable, cpu) = root;
 
     if ( !init_domheap_mappings(cpu) )
     {
         printk("CPU%u: Unable to prepare the domheap page-tables\n", cpu);
         per_cpu(xen_pgtable, cpu) = NULL;
-        free_xenheap_page(first);
+        free_xenheap_page(root);
         return -ENOMEM;
     }
 
     clear_boot_pagetables();
 
     /* Set init_ttbr for this CPU coming up */
-    init_ttbr = __pa(first);
+    init_ttbr = __pa(root);
     clean_dcache(init_ttbr);
 
     return 0;
-- 
2.40.1



From xen-devel-bounces@lists.xenproject.org Tue Jan 16 19:03:39 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 16 Jan 2024 19:03:39 +0000
Received: from list by lists.xenproject.org with outflank-mailman.668012.1039832 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPoio-0004qa-4q; Tue, 16 Jan 2024 19:03:38 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 668012.1039832; Tue, 16 Jan 2024 19:03:38 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPoio-0004qT-1B; Tue, 16 Jan 2024 19:03:38 +0000
Received: by outflank-mailman (input) for mailman id 668012;
 Tue, 16 Jan 2024 19:03:36 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=wmx9=I2=amazon.co.uk=prvs=738631f0b=eliasely@srs-se1.protection.inumbo.net>)
 id 1rPoXn-0002UD-6h
 for xen-devel@lists.xenproject.org; Tue, 16 Jan 2024 18:52:15 +0000
Received: from smtp-fw-9106.amazon.com (smtp-fw-9106.amazon.com
 [207.171.188.206]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 5c1c6e28-b4a0-11ee-98f1-6d05b1d4d9a1;
 Tue, 16 Jan 2024 19:52:14 +0100 (CET)
Received: from pdx4-co-svc-p1-lb2-vlan2.amazon.com (HELO
 email-inbound-relay-iad-1e-m6i4x-6e7a78d7.us-east-1.amazon.com)
 ([10.25.36.210]) by smtp-border-fw-9106.sea19.amazon.com with
 ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 16 Jan 2024 18:52:07 +0000
Received: from smtpout.prod.us-east-1.prod.farcaster.email.amazon.dev
 (iad7-ws-svc-p70-lb3-vlan2.iad.amazon.com [10.32.235.34])
 by email-inbound-relay-iad-1e-m6i4x-6e7a78d7.us-east-1.amazon.com (Postfix)
 with ESMTPS id B87308032A; Tue, 16 Jan 2024 18:52:05 +0000 (UTC)
Received: from EX19MTAUEB001.ant.amazon.com [10.0.44.209:15676]
 by smtpin.naws.us-east-1.prod.farcaster.email.amazon.dev [10.0.15.248:2525]
 with esmtp (Farcaster)
 id 004d37e9-5f05-4ed2-ae37-06ecad8d809b; Tue, 16 Jan 2024 18:52:05 +0000 (UTC)
Received: from EX19D008UEA004.ant.amazon.com (10.252.134.191) by
 EX19MTAUEB001.ant.amazon.com (10.252.135.108) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1118.40; Tue, 16 Jan 2024 18:51:54 +0000
Received: from EX19MTAUWB001.ant.amazon.com (10.250.64.248) by
 EX19D008UEA004.ant.amazon.com (10.252.134.191) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1118.40; Tue, 16 Jan 2024 18:51:54 +0000
Received: from dev-dsk-eliasely-1a-fd74790f.eu-west-1.amazon.com
 (10.253.91.118) by mail-relay.amazon.com (10.250.64.254) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1118.40 via Frontend Transport; Tue, 16 Jan 2024 18:51:52 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 5c1c6e28-b4a0-11ee-98f1-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
  d=amazon.com; i=@amazon.com; q=dns/txt; s=amazon201209;
  t=1705431135; x=1736967135;
  h=from:to:cc:subject:date:message-id:in-reply-to:
   references:mime-version:content-transfer-encoding;
  bh=Dpcwsrxvbe9T9hoTCd3fMKYWwbTAEp7kfzrhfuwZSAw=;
  b=jtdTepk8Iwb8C2RRPTwANR7MFUKUf0Et/OwVFaZYs0jVKeoQaiSaqRNu
   JRJ77NzZukBKrEf7qRn3ywp4i1s8tbK1+uAxjfM39x5TIEcHyo5JJfzjl
   ZqW70wrwGYMsa2wO/8kdjMbgWj5Fps/UKXU71rF+tCtEANLQa9GUHSV2z
   4=;
X-IronPort-AV: E=Sophos;i="6.05,200,1701129600"; 
   d="scan'208";a="697573972"
X-Farcaster-Flow-ID: 004d37e9-5f05-4ed2-ae37-06ecad8d809b
From: Elias El Yandouzi <eliasely@amazon.com>
To: <xen-devel@lists.xenproject.org>
CC: <julien@xen.org>, <pdurrant@amazon.com>, <dwmw@amazon.com>, Wei Liu
	<wei.liu2@citrix.com>, Jan Beulich <jbeulich@suse.com>, Andrew Cooper
	<andrew.cooper3@citrix.com>, =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?=
	<roger.pau@citrix.com>, Wei Liu <wl@xen.org>, Wei Wang <wawei@amazon.de>,
	Hongyan Xia <hongyxia@amazon.com>, Julien Grall <jgrall@amazon.com>
Subject: [PATCH v2] x86: Lift mapcache variable to the arch level
Date: Tue, 16 Jan 2024 18:50:40 +0000
Message-ID: <20240116185056.15000-12-eliasely@amazon.com>
X-Mailer: git-send-email 2.40.1
In-Reply-To: <20240116185056.15000-1-eliasely@amazon.com>
References: <20240116185056.15000-1-eliasely@amazon.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain

From: Wei Liu <wei.liu2@citrix.com>

It is going to be needed by HVM and idle domain as well, because without
the direct map, both need a mapcache to map pages.

This only lifts the mapcache variable up. Whether we populate the
mapcache for a domain is unchanged in this patch.

Signed-off-by: Wei Liu <wei.liu2@citrix.com>
Signed-off-by: Wei Wang <wawei@amazon.de>
Signed-off-by: Hongyan Xia <hongyxia@amazon.com>
Signed-off-by: Julien Grall <jgrall@amazon.com>

diff --git a/xen/arch/x86/domain.c b/xen/arch/x86/domain.c
index 8a31d18f69..8ef3f7746f 100644
--- a/xen/arch/x86/domain.c
+++ b/xen/arch/x86/domain.c
@@ -843,6 +843,8 @@ int arch_domain_create(struct domain *d,
 
     psr_domain_init(d);
 
+    mapcache_domain_init(d);
+
     if ( is_hvm_domain(d) )
     {
         if ( (rc = hvm_domain_initialise(d, config)) != 0 )
@@ -850,8 +852,6 @@ int arch_domain_create(struct domain *d,
     }
     else if ( is_pv_domain(d) )
     {
-        mapcache_domain_init(d);
-
         if ( (rc = pv_domain_initialise(d)) != 0 )
             goto fail;
     }
diff --git a/xen/arch/x86/domain_page.c b/xen/arch/x86/domain_page.c
index eac5e3304f..55e337aaf7 100644
--- a/xen/arch/x86/domain_page.c
+++ b/xen/arch/x86/domain_page.c
@@ -82,11 +82,11 @@ void *map_domain_page(mfn_t mfn)
 #endif
 
     v = mapcache_current_vcpu();
-    if ( !v || !is_pv_vcpu(v) )
+    if ( !v )
         return mfn_to_virt(mfn_x(mfn));
 
-    dcache = &v->domain->arch.pv.mapcache;
-    vcache = &v->arch.pv.mapcache;
+    dcache = &v->domain->arch.mapcache;
+    vcache = &v->arch.mapcache;
     if ( !dcache->inuse )
         return mfn_to_virt(mfn_x(mfn));
 
@@ -187,14 +187,14 @@ void unmap_domain_page(const void *ptr)
     ASSERT(va >= MAPCACHE_VIRT_START && va < MAPCACHE_VIRT_END);
 
     v = mapcache_current_vcpu();
-    ASSERT(v && is_pv_vcpu(v));
+    ASSERT(v);
 
-    dcache = &v->domain->arch.pv.mapcache;
+    dcache = &v->domain->arch.mapcache;
     ASSERT(dcache->inuse);
 
     idx = PFN_DOWN(va - MAPCACHE_VIRT_START);
     mfn = l1e_get_pfn(MAPCACHE_L1ENT(idx));
-    hashent = &v->arch.pv.mapcache.hash[MAPHASH_HASHFN(mfn)];
+    hashent = &v->arch.mapcache.hash[MAPHASH_HASHFN(mfn)];
 
     local_irq_save(flags);
 
@@ -233,11 +233,9 @@ void unmap_domain_page(const void *ptr)
 
 int mapcache_domain_init(struct domain *d)
 {
-    struct mapcache_domain *dcache = &d->arch.pv.mapcache;
+    struct mapcache_domain *dcache = &d->arch.mapcache;
     unsigned int bitmap_pages;
 
-    ASSERT(is_pv_domain(d));
-
 #ifdef NDEBUG
     if ( !mem_hotplug && max_page <= PFN_DOWN(__pa(HYPERVISOR_VIRT_END - 1)) )
         return 0;
@@ -261,12 +259,12 @@ int mapcache_domain_init(struct domain *d)
 int mapcache_vcpu_init(struct vcpu *v)
 {
     struct domain *d = v->domain;
-    struct mapcache_domain *dcache = &d->arch.pv.mapcache;
+    struct mapcache_domain *dcache = &d->arch.mapcache;
     unsigned long i;
     unsigned int ents = d->max_vcpus * MAPCACHE_VCPU_ENTRIES;
     unsigned int nr = PFN_UP(BITS_TO_LONGS(ents) * sizeof(long));
 
-    if ( !is_pv_vcpu(v) || !dcache->inuse )
+    if ( !dcache->inuse )
         return 0;
 
     if ( ents > dcache->entries )
@@ -293,7 +291,7 @@ int mapcache_vcpu_init(struct vcpu *v)
     BUILD_BUG_ON(MAPHASHENT_NOTINUSE < MAPCACHE_ENTRIES);
     for ( i = 0; i < MAPHASH_ENTRIES; i++ )
     {
-        struct vcpu_maphash_entry *hashent = &v->arch.pv.mapcache.hash[i];
+        struct vcpu_maphash_entry *hashent = &v->arch.mapcache.hash[i];
 
         hashent->mfn = ~0UL; /* never valid to map */
         hashent->idx = MAPHASHENT_NOTINUSE;
diff --git a/xen/arch/x86/include/asm/domain.h b/xen/arch/x86/include/asm/domain.h
index 4d97c68028..85b890b2cb 100644
--- a/xen/arch/x86/include/asm/domain.h
+++ b/xen/arch/x86/include/asm/domain.h
@@ -286,9 +286,6 @@ struct pv_domain
     /* Mitigate L1TF with shadow/crashing? */
     bool check_l1tf;
 
-    /* map_domain_page() mapping cache. */
-    struct mapcache_domain mapcache;
-
     struct cpuidmasks *cpuidmasks;
 };
 
@@ -327,6 +324,9 @@ struct arch_domain
 
     uint8_t spec_ctrl_flags; /* See SCF_DOM_MASK */
 
+    /* map_domain_page() mapping cache. */
+    struct mapcache_domain mapcache;
+
     union {
         struct pv_domain pv;
         struct hvm_domain hvm;
@@ -517,9 +517,6 @@ struct arch_domain
 
 struct pv_vcpu
 {
-    /* map_domain_page() mapping cache. */
-    struct mapcache_vcpu mapcache;
-
     unsigned int vgc_flags;
 
     struct trap_info *trap_ctxt;
@@ -619,6 +616,9 @@ struct arch_vcpu
 #define async_exception_state(t) async_exception_state[(t)-1]
     uint8_t async_exception_mask;
 
+    /* map_domain_page() mapping cache. */
+    struct mapcache_vcpu mapcache;
+
     /* Virtual Machine Extensions */
     union {
         struct pv_vcpu pv;
-- 
2.40.1



From xen-devel-bounces@lists.xenproject.org Tue Jan 16 19:05:27 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 16 Jan 2024 19:05:27 +0000
Received: from list by lists.xenproject.org with outflank-mailman.668016.1039841 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPokV-0005pv-Ei; Tue, 16 Jan 2024 19:05:23 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 668016.1039841; Tue, 16 Jan 2024 19:05:23 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPokV-0005po-C4; Tue, 16 Jan 2024 19:05:23 +0000
Received: by outflank-mailman (input) for mailman id 668016;
 Tue, 16 Jan 2024 19:05:22 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=wmx9=I2=amazon.co.uk=prvs=738631f0b=eliasely@srs-se1.protection.inumbo.net>)
 id 1rPoXz-0002UD-NT
 for xen-devel@lists.xenproject.org; Tue, 16 Jan 2024 18:52:27 +0000
Received: from smtp-fw-80008.amazon.com (smtp-fw-80008.amazon.com
 [99.78.197.219]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 63f1f21c-b4a0-11ee-98f1-6d05b1d4d9a1;
 Tue, 16 Jan 2024 19:52:26 +0100 (CET)
Received: from pdx4-co-svc-p1-lb2-vlan3.amazon.com (HELO
 email-inbound-relay-iad-1a-m6i4x-edda28d4.us-east-1.amazon.com)
 ([10.25.36.214]) by smtp-border-fw-80008.pdx80.corp.amazon.com with
 ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 16 Jan 2024 18:52:23 +0000
Received: from smtpout.prod.us-east-1.prod.farcaster.email.amazon.dev
 (iad7-ws-svc-p70-lb3-vlan3.iad.amazon.com [10.32.235.38])
 by email-inbound-relay-iad-1a-m6i4x-edda28d4.us-east-1.amazon.com (Postfix)
 with ESMTPS id AEAD680457; Tue, 16 Jan 2024 18:52:21 +0000 (UTC)
Received: from EX19MTAUEB001.ant.amazon.com [10.0.44.209:52410]
 by smtpin.naws.us-east-1.prod.farcaster.email.amazon.dev [10.0.53.69:2525]
 with esmtp (Farcaster)
 id cabcd5e2-9941-496c-9a9e-f1315eb8d9b1; Tue, 16 Jan 2024 18:52:21 +0000 (UTC)
Received: from EX19D008UEA004.ant.amazon.com (10.252.134.191) by
 EX19MTAUEB001.ant.amazon.com (10.252.135.108) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1118.40; Tue, 16 Jan 2024 18:52:21 +0000
Received: from EX19MTAUWB001.ant.amazon.com (10.250.64.248) by
 EX19D008UEA004.ant.amazon.com (10.252.134.191) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1118.40; Tue, 16 Jan 2024 18:52:20 +0000
Received: from dev-dsk-eliasely-1a-fd74790f.eu-west-1.amazon.com
 (10.253.91.118) by mail-relay.amazon.com (10.250.64.254) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1118.40 via Frontend Transport; Tue, 16 Jan 2024 18:52:19 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 63f1f21c-b4a0-11ee-98f1-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
  d=amazon.com; i=@amazon.com; q=dns/txt; s=amazon201209;
  t=1705431146; x=1736967146;
  h=from:to:cc:subject:date:message-id:in-reply-to:
   references:mime-version:content-transfer-encoding;
  bh=+rU3KYKkwvDL5SMUdui7+O6LLhWUw4C+QdJzoyKqE18=;
  b=WKwY3cC7UX248mfjBHzxVF9NgPl/pTVuEwX4Vmb/x+cqZo19RRG0QE0c
   JKNlAT+mGRM614X8/+KRSBHsnepAorBzuJkp3mMA3pd2n5s07dM3lcIQg
   mJN5nLZbLaC7R6XIX1++oTd8HIyVYAo0hkjlzw3s4sU9w9sHpayHrLjWE
   o=;
X-IronPort-AV: E=Sophos;i="6.05,200,1701129600"; 
   d="scan'208";a="58742938"
X-Farcaster-Flow-ID: cabcd5e2-9941-496c-9a9e-f1315eb8d9b1
From: Elias El Yandouzi <eliasely@amazon.com>
To: <xen-devel@lists.xenproject.org>
CC: <julien@xen.org>, <pdurrant@amazon.com>, <dwmw@amazon.com>, "Elias El
 Yandouzi" <eliasely@amazon.com>, Jan Beulich <jbeulich@suse.com>, "Andrew
 Cooper" <andrew.cooper3@citrix.com>, =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?=
	<roger.pau@citrix.com>, Wei Liu <wl@xen.org>
Subject: [PATCH v2] Rename maddr_to_virt() calls
Date: Tue, 16 Jan 2024 18:50:52 +0000
Message-ID: <20240116185056.15000-24-eliasely@amazon.com>
X-Mailer: git-send-email 2.40.1
In-Reply-To: <20240116185056.15000-1-eliasely@amazon.com>
References: <20240116185056.15000-1-eliasely@amazon.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
Precedence: Bulk

Until directmap gets completely removed, we'd still need to
keep some calls to mmaddr_to_virt() for xenheap pages or when the
directmap is enabled.

Rename the macro to maddr_to_directmap_virt() to flag them and
prevent further use of maddr_to_virt().

Signed-off-by: Elias El Yandouzi <eliasely@amazon.com>

diff --git a/xen/arch/x86/dmi_scan.c b/xen/arch/x86/dmi_scan.c
index 81f80c053a..ac016f3a04 100644
--- a/xen/arch/x86/dmi_scan.c
+++ b/xen/arch/x86/dmi_scan.c
@@ -277,7 +277,7 @@ const char *__init dmi_get_table(paddr_t *base, u32 *len)
 			return "SMBIOS";
 		}
 	} else {
-		char __iomem *p = maddr_to_virt(0xF0000), *q;
+		char __iomem *p = maddr_to_directmap_virt(0xF0000), *q;
 		union {
 			struct dmi_eps dmi;
 			struct smbios3_eps smbios3;
@@ -364,7 +364,7 @@ static int __init dmi_iterate(void (*decode)(const struct dmi_header *))
 	dmi.size = 0;
 	smbios3.length = 0;
 
-	p = maddr_to_virt(0xF0000);
+	p = maddr_to_directmap_virt(0xF0000);
 	for (q = p; q < p + 0x10000; q += 16) {
 		if (!dmi.size) {
 			memcpy_fromio(&dmi, q, sizeof(dmi));
diff --git a/xen/arch/x86/include/asm/mach-default/bios_ebda.h b/xen/arch/x86/include/asm/mach-default/bios_ebda.h
index 42de6b2a5b..8cfe53d1f2 100644
--- a/xen/arch/x86/include/asm/mach-default/bios_ebda.h
+++ b/xen/arch/x86/include/asm/mach-default/bios_ebda.h
@@ -7,7 +7,7 @@
  */
 static inline unsigned int get_bios_ebda(void)
 {
-	unsigned int address = *(unsigned short *)maddr_to_virt(0x40E);
+	unsigned int address = *(unsigned short *)maddr_to_directmap_virt(0x40E);
 	address <<= 4;
 	return address;	/* 0 means none */
 }
diff --git a/xen/arch/x86/include/asm/page.h b/xen/arch/x86/include/asm/page.h
index c6891b52d4..bf7bf08ba4 100644
--- a/xen/arch/x86/include/asm/page.h
+++ b/xen/arch/x86/include/asm/page.h
@@ -240,11 +240,11 @@ void copy_page_sse2(void *to, const void *from);
 
 /* Convert between Xen-heap virtual addresses and machine addresses. */
 #define __pa(x)             (virt_to_maddr(x))
-#define __va(x)             (maddr_to_virt(x))
+#define __va(x)             (maddr_to_directmap_virt(x))
 
 /* Convert between Xen-heap virtual addresses and machine frame numbers. */
 #define __virt_to_mfn(va)   (virt_to_maddr(va) >> PAGE_SHIFT)
-#define __mfn_to_virt(mfn)  (maddr_to_virt((paddr_t)(mfn) << PAGE_SHIFT))
+#define __mfn_to_virt(mfn)  (maddr_to_directmap_virt((paddr_t)(mfn) << PAGE_SHIFT))
 
 /* Convert between machine frame numbers and page-info structures. */
 #define mfn_to_page(mfn)    (frame_table + mfn_to_pdx(mfn))
@@ -270,7 +270,7 @@ void copy_page_sse2(void *to, const void *from);
 #define virt_to_mfn(va)     __virt_to_mfn(va)
 #define mfn_to_directmap_virt(mfn)    __mfn_to_virt(mfn)
 #define virt_to_maddr(va)   __virt_to_maddr((unsigned long)(va))
-#define maddr_to_virt(ma)   __maddr_to_virt((unsigned long)(ma))
+#define maddr_to_directmap_virt(ma)   __maddr_to_directmap_virt((unsigned long)(ma))
 #define maddr_to_page(ma)   __maddr_to_page(ma)
 #define page_to_maddr(pg)   __page_to_maddr(pg)
 #define virt_to_page(va)    __virt_to_page(va)
diff --git a/xen/arch/x86/include/asm/x86_64/page.h b/xen/arch/x86/include/asm/x86_64/page.h
index f49e10475f..b9e47da46e 100644
--- a/xen/arch/x86/include/asm/x86_64/page.h
+++ b/xen/arch/x86/include/asm/x86_64/page.h
@@ -46,7 +46,7 @@ static inline unsigned long __virt_to_maddr(unsigned long va)
     return xen_phys_start + va - XEN_VIRT_START;
 }
 
-static inline void *__maddr_to_virt(unsigned long ma)
+static inline void *__maddr_to_directmap_virt(unsigned long ma)
 {
     /* Offset in the direct map, accounting for pdx compression */
     unsigned long va_offset = maddr_to_directmapoff(ma);
diff --git a/xen/arch/x86/mpparse.c b/xen/arch/x86/mpparse.c
index d8ccab2449..69181b0abe 100644
--- a/xen/arch/x86/mpparse.c
+++ b/xen/arch/x86/mpparse.c
@@ -664,7 +664,7 @@ void __init get_smp_config (void)
 
 static int __init smp_scan_config (unsigned long base, unsigned long length)
 {
-	unsigned int *bp = maddr_to_virt(base);
+	unsigned int *bp = maddr_to_directmap_virt(base);
 	struct intel_mp_floating *mpf;
 
 	Dprintk("Scan SMP from %p for %ld bytes.\n", bp,length);
diff --git a/xen/common/efi/boot.c b/xen/common/efi/boot.c
index 39aed5845d..1b02e2b6d5 100644
--- a/xen/common/efi/boot.c
+++ b/xen/common/efi/boot.c
@@ -1764,7 +1764,7 @@ void __init efi_init_memory(void)
                 if ( map_pages_to_xen((unsigned long)mfn_to_directmap_virt(smfn),
                                     _mfn(smfn), emfn - smfn, prot) == 0 )
                     desc->VirtualStart =
-                        (unsigned long)maddr_to_virt(desc->PhysicalStart);
+                        (unsigned long)maddr_to_directmap_virt(desc->PhysicalStart);
                 else
                     printk(XENLOG_ERR "Could not map MFNs %#lx-%#lx\n",
                         smfn, emfn - 1);
-- 
2.40.1



From xen-devel-bounces@lists.xenproject.org Tue Jan 16 19:06:00 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 16 Jan 2024 19:06:00 +0000
Received: from list by lists.xenproject.org with outflank-mailman.668018.1039852 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPol6-0006bf-N6; Tue, 16 Jan 2024 19:06:00 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 668018.1039852; Tue, 16 Jan 2024 19:06:00 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPol6-0006bY-K2; Tue, 16 Jan 2024 19:06:00 +0000
Received: by outflank-mailman (input) for mailman id 668018;
 Tue, 16 Jan 2024 19:05:59 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=wmx9=I2=amazon.co.uk=prvs=738631f0b=eliasely@srs-se1.protection.inumbo.net>)
 id 1rPoXy-0002UD-NF
 for xen-devel@lists.xenproject.org; Tue, 16 Jan 2024 18:52:26 +0000
Received: from smtp-fw-80007.amazon.com (smtp-fw-80007.amazon.com
 [99.78.197.218]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 6294a509-b4a0-11ee-98f1-6d05b1d4d9a1;
 Tue, 16 Jan 2024 19:52:25 +0100 (CET)
Received: from pdx4-co-svc-p1-lb2-vlan2.amazon.com (HELO
 email-inbound-relay-iad-1a-m6i4x-9fe6ad2f.us-east-1.amazon.com)
 ([10.25.36.210]) by smtp-border-fw-80007.pdx80.corp.amazon.com with
 ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 16 Jan 2024 18:52:23 +0000
Received: from smtpout.prod.us-east-1.prod.farcaster.email.amazon.dev
 (iad7-ws-svc-p70-lb3-vlan3.iad.amazon.com [10.32.235.38])
 by email-inbound-relay-iad-1a-m6i4x-9fe6ad2f.us-east-1.amazon.com (Postfix)
 with ESMTPS id 63A89899F5; Tue, 16 Jan 2024 18:52:20 +0000 (UTC)
Received: from EX19MTAUEA001.ant.amazon.com [10.0.44.209:26324]
 by smtpin.naws.us-east-1.prod.farcaster.email.amazon.dev [10.0.41.129:2525]
 with esmtp (Farcaster)
 id 017ffc13-78d7-4ea7-a4ca-46863278c9c5; Tue, 16 Jan 2024 18:52:20 +0000 (UTC)
Received: from EX19D008UEA001.ant.amazon.com (10.252.134.62) by
 EX19MTAUEA001.ant.amazon.com (10.252.134.203) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1118.40; Tue, 16 Jan 2024 18:52:10 +0000
Received: from EX19MTAUWB001.ant.amazon.com (10.250.64.248) by
 EX19D008UEA001.ant.amazon.com (10.252.134.62) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1118.40; Tue, 16 Jan 2024 18:52:09 +0000
Received: from dev-dsk-eliasely-1a-fd74790f.eu-west-1.amazon.com
 (10.253.91.118) by mail-relay.amazon.com (10.250.64.254) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1118.40 via Frontend Transport; Tue, 16 Jan 2024 18:52:07 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 6294a509-b4a0-11ee-98f1-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
  d=amazon.com; i=@amazon.com; q=dns/txt; s=amazon201209;
  t=1705431145; x=1736967145;
  h=from:to:cc:subject:date:message-id:in-reply-to:
   references:mime-version:content-transfer-encoding;
  bh=SgoUYRGfBhQWiY7NendWHvruacHBLERYGlNvfzPucEo=;
  b=XmVXyfFFxVS+opJwfrERXHHZmpWpI4Hr6aHiC8U6OhHdBKZVfgI8YZVE
   GC1qPCHNdWBPLjFTUmZ8tudg1/7rkvewV4gaLp52t9rcn9KWl67appRNV
   Eh4LQM+G6LXQ3643ntf6M/JC34dYddr74Z1BUXkwepqkfuQMTgnZGt/A5
   k=;
X-IronPort-AV: E=Sophos;i="6.05,200,1701129600"; 
   d="scan'208";a="267182286"
X-Farcaster-Flow-ID: 017ffc13-78d7-4ea7-a4ca-46863278c9c5
From: Elias El Yandouzi <eliasely@amazon.com>
To: <xen-devel@lists.xenproject.org>
CC: <julien@xen.org>, <pdurrant@amazon.com>, <dwmw@amazon.com>, Hongyan Xia
	<hongyxia@amazon.com>, Andrew Cooper <andrew.cooper3@citrix.com>, "George
 Dunlap" <george.dunlap@citrix.com>, Jan Beulich <jbeulich@suse.com>, "Stefano
 Stabellini" <sstabellini@kernel.org>, Wei Liu <wl@xen.org>, Julien Grall
	<jgrall@amazon.com>, Elias El Yandouzi <eliasely@amazon.com>
Subject: [PATCH v2] xen/page_alloc: Add a path for xenheap when there is no direct map
Date: Tue, 16 Jan 2024 18:50:47 +0000
Message-ID: <20240116185056.15000-19-eliasely@amazon.com>
X-Mailer: git-send-email 2.40.1
In-Reply-To: <20240116185056.15000-1-eliasely@amazon.com>
References: <20240116185056.15000-1-eliasely@amazon.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain

From: Hongyan Xia <hongyxia@amazon.com>

When there is not an always-mapped direct map, xenheap allocations need
to be mapped and unmapped on-demand.

Signed-off-by: Hongyan Xia <hongyxia@amazon.com>
Signed-off-by: Julien Grall <jgrall@amazon.com>
Signed-off-by: Elias El Yandouzi <eliasely@amazon.com>

----

    I have left the call to map_pages_to_xen() and destroy_xen_mappings()
    in the split heap for now. I am not entirely convinced this is necessary
    because in that setup only the xenheap would be always mapped and
    this doesn't contain any guest memory (aside the grant-table).
    So map/unmapping for every allocation seems unnecessary.

    Changes in v2:
        * Fix remaining wrong indentation in alloc_xenheap_pages()

    Changes since Hongyan's version:
        * Rebase
        * Fix indentation in alloc_xenheap_pages()
        * Fix build for arm32

diff --git a/xen/common/page_alloc.c b/xen/common/page_alloc.c
index a3746cfbcf..52934ec5c1 100644
--- a/xen/common/page_alloc.c
+++ b/xen/common/page_alloc.c
@@ -2237,6 +2237,7 @@ void init_xenheap_pages(paddr_t ps, paddr_t pe)
 void *alloc_xenheap_pages(unsigned int order, unsigned int memflags)
 {
     struct page_info *pg;
+    void *ret;
 
     ASSERT_ALLOC_CONTEXT();
 
@@ -2245,17 +2246,36 @@ void *alloc_xenheap_pages(unsigned int order, unsigned int memflags)
     if ( unlikely(pg == NULL) )
         return NULL;
 
+    ret = page_to_virt(pg);
+
+    if ( !has_directmap() &&
+         map_pages_to_xen((unsigned long)ret, page_to_mfn(pg), 1UL << order,
+                          PAGE_HYPERVISOR) )
+    {
+        /* Failed to map xenheap pages. */
+        free_heap_pages(pg, order, false);
+        return NULL;
+    }
+
     return page_to_virt(pg);
 }
 
 
 void free_xenheap_pages(void *v, unsigned int order)
 {
+    unsigned long va = (unsigned long)v & PAGE_MASK;
+
     ASSERT_ALLOC_CONTEXT();
 
     if ( v == NULL )
         return;
 
+    if ( !has_directmap() &&
+         destroy_xen_mappings(va, va + (1UL << (order + PAGE_SHIFT))) )
+        dprintk(XENLOG_WARNING,
+                "Error while destroying xenheap mappings at %p, order %u\n",
+                v, order);
+
     free_heap_pages(virt_to_page(v), order, false);
 }
 
@@ -2279,6 +2299,7 @@ void *alloc_xenheap_pages(unsigned int order, unsigned int memflags)
 {
     struct page_info *pg;
     unsigned int i;
+    void *ret;
 
     ASSERT_ALLOC_CONTEXT();
 
@@ -2291,16 +2312,28 @@ void *alloc_xenheap_pages(unsigned int order, unsigned int memflags)
     if ( unlikely(pg == NULL) )
         return NULL;
 
+    ret = page_to_virt(pg);
+
+    if ( !has_directmap() &&
+         map_pages_to_xen((unsigned long)ret, page_to_mfn(pg), 1UL << order,
+                          PAGE_HYPERVISOR) )
+    {
+        /* Failed to map xenheap pages. */
+        free_domheap_pages(pg, order);
+        return NULL;
+    }
+
     for ( i = 0; i < (1u << order); i++ )
         pg[i].count_info |= PGC_xen_heap;
 
-    return page_to_virt(pg);
+    return ret;
 }
 
 void free_xenheap_pages(void *v, unsigned int order)
 {
     struct page_info *pg;
     unsigned int i;
+    unsigned long va = (unsigned long)v & PAGE_MASK;
 
     ASSERT_ALLOC_CONTEXT();
 
@@ -2312,6 +2345,12 @@ void free_xenheap_pages(void *v, unsigned int order)
     for ( i = 0; i < (1u << order); i++ )
         pg[i].count_info &= ~PGC_xen_heap;
 
+    if ( !has_directmap() &&
+         destroy_xen_mappings(va, va + (1UL << (order + PAGE_SHIFT))) )
+        dprintk(XENLOG_WARNING,
+                "Error while destroying xenheap mappings at %p, order %u\n",
+                v, order);
+
     free_heap_pages(pg, order, true);
 }
 
-- 
2.40.1



From xen-devel-bounces@lists.xenproject.org Tue Jan 16 19:06:01 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 16 Jan 2024 19:06:01 +0000
Received: from list by lists.xenproject.org with outflank-mailman.668019.1039857 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPol6-0006fF-WB; Tue, 16 Jan 2024 19:06:01 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 668019.1039857; Tue, 16 Jan 2024 19:06:00 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPol6-0006eO-RI; Tue, 16 Jan 2024 19:06:00 +0000
Received: by outflank-mailman (input) for mailman id 668019;
 Tue, 16 Jan 2024 19:05:59 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=wmx9=I2=amazon.co.uk=prvs=738631f0b=eliasely@srs-se1.protection.inumbo.net>)
 id 1rPoXx-0002UD-Ug
 for xen-devel@lists.xenproject.org; Tue, 16 Jan 2024 18:52:25 +0000
Received: from smtp-fw-80008.amazon.com (smtp-fw-80008.amazon.com
 [99.78.197.219]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 627ddc1f-b4a0-11ee-98f1-6d05b1d4d9a1;
 Tue, 16 Jan 2024 19:52:25 +0100 (CET)
Received: from pdx4-co-svc-p1-lb2-vlan3.amazon.com (HELO
 email-inbound-relay-iad-1a-m6i4x-bbc6e425.us-east-1.amazon.com)
 ([10.25.36.214]) by smtp-border-fw-80008.pdx80.corp.amazon.com with
 ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 16 Jan 2024 18:52:22 +0000
Received: from smtpout.prod.us-east-1.prod.farcaster.email.amazon.dev
 (iad7-ws-svc-p70-lb3-vlan3.iad.amazon.com [10.32.235.38])
 by email-inbound-relay-iad-1a-m6i4x-bbc6e425.us-east-1.amazon.com (Postfix)
 with ESMTPS id 3DD0D807A3; Tue, 16 Jan 2024 18:52:20 +0000 (UTC)
Received: from EX19MTAUEC001.ant.amazon.com [10.0.44.209:4913]
 by smtpin.naws.us-east-1.prod.farcaster.email.amazon.dev [10.0.15.248:2525]
 with esmtp (Farcaster)
 id de871c36-9ec9-4ec7-b295-f240a8062615; Tue, 16 Jan 2024 18:52:19 +0000 (UTC)
Received: from EX19D008UEA004.ant.amazon.com (10.252.134.191) by
 EX19MTAUEC001.ant.amazon.com (10.252.135.222) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1118.40; Tue, 16 Jan 2024 18:52:14 +0000
Received: from EX19MTAUWB001.ant.amazon.com (10.250.64.248) by
 EX19D008UEA004.ant.amazon.com (10.252.134.191) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1118.40; Tue, 16 Jan 2024 18:52:14 +0000
Received: from dev-dsk-eliasely-1a-fd74790f.eu-west-1.amazon.com
 (10.253.91.118) by mail-relay.amazon.com (10.250.64.254) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1118.40 via Frontend Transport; Tue, 16 Jan 2024 18:52:12 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 627ddc1f-b4a0-11ee-98f1-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
  d=amazon.com; i=@amazon.com; q=dns/txt; s=amazon201209;
  t=1705431145; x=1736967145;
  h=from:to:cc:subject:date:message-id:in-reply-to:
   references:mime-version:content-transfer-encoding;
  bh=BQwz5u8QWnu4kJOr/giiJYPgo6aRgBqNBhniW2zo2FE=;
  b=YnGdkP68oU7GJgEKFaNf9M2PKn2jARFRFUtMEsE/EnoNrrF2c7ynHdYu
   O2ZU1Qasr/RXagzDM2zgNciApWsOPRrOkyoUzXPP623TL2zQ1bUq7W/T8
   XFPAstHRAIREJmT5wN+el6VeY0jpgMw5RtOwqVQFUDAuB78wF7V/Ycxgb
   Q=;
X-IronPort-AV: E=Sophos;i="6.05,200,1701129600"; 
   d="scan'208";a="58742934"
X-Farcaster-Flow-ID: de871c36-9ec9-4ec7-b295-f240a8062615
From: Elias El Yandouzi <eliasely@amazon.com>
To: <xen-devel@lists.xenproject.org>
CC: <julien@xen.org>, <pdurrant@amazon.com>, <dwmw@amazon.com>, Hongyan Xia
	<hongyxia@amazon.com>, Andrew Cooper <andrew.cooper3@citrix.com>, "George
 Dunlap" <george.dunlap@citrix.com>, Jan Beulich <jbeulich@suse.com>, "Stefano
 Stabellini" <sstabellini@kernel.org>, Wei Liu <wl@xen.org>, Julien Grall
	<jgrall@amazon.com>, Elias El Yandouzi <eliasely@amazon.com>
Subject: [PATCH v2] x86/setup: vmap heap nodes when they are outside the direct map
Date: Tue, 16 Jan 2024 18:50:49 +0000
Message-ID: <20240116185056.15000-21-eliasely@amazon.com>
X-Mailer: git-send-email 2.40.1
In-Reply-To: <20240116185056.15000-1-eliasely@amazon.com>
References: <20240116185056.15000-1-eliasely@amazon.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
Precedence: Bulk

From: Hongyan Xia <hongyxia@amazon.com>

When we do not have a direct map, archs_mfn_in_direct_map() will always
return false, thus init_node_heap() will allocate xenheap pages from an
existing node for the metadata of a new node. This means that the
metadata of a new node is in a different node, slowing down heap
allocation.

Since we now have early vmap, vmap the metadata locally in the new node.

Signed-off-by: Hongyan Xia <hongyxia@amazon.com>
Signed-off-by: Julien Grall <jgrall@amazon.com>
Signed-off-by: Elias El Yandouzi <eliasely@amazon.com>

----

    Changes in v2:
        * vmap_contig_pages() was renamed to vmap_contig()
        * Fix indentation and coding style

    Changes from Hongyan's version:
        * arch_mfn_in_direct_map() was renamed to
          arch_mfns_in_direct_map()
        * Use vmap_contig_pages() rather than __vmap(...).
        * Add missing include (xen/vmap.h) so it compiles on Arm

diff --git a/xen/common/page_alloc.c b/xen/common/page_alloc.c
index 52934ec5c1..42b9aaae1c 100644
--- a/xen/common/page_alloc.c
+++ b/xen/common/page_alloc.c
@@ -136,6 +136,7 @@
 #include <xen/sched.h>
 #include <xen/softirq.h>
 #include <xen/spinlock.h>
+#include <xen/vmap.h>
 
 #include <asm/flushtlb.h>
 #include <asm/numa.h>
@@ -604,22 +605,44 @@ static unsigned long init_node_heap(int node, unsigned long mfn,
         needed = 0;
     }
     else if ( *use_tail && nr >= needed &&
-              arch_mfns_in_directmap(mfn + nr - needed, needed) &&
               (!xenheap_bits ||
-               !((mfn + nr - 1) >> (xenheap_bits - PAGE_SHIFT))) )
+              !((mfn + nr - 1) >> (xenheap_bits - PAGE_SHIFT))) )
     {
-        _heap[node] = mfn_to_virt(mfn + nr - needed);
-        avail[node] = mfn_to_virt(mfn + nr - 1) +
-                      PAGE_SIZE - sizeof(**avail) * NR_ZONES;
+        if ( arch_mfns_in_directmap(mfn + nr - needed, needed) )
+        {
+            _heap[node] = mfn_to_virt(mfn + nr - needed);
+            avail[node] = mfn_to_virt(mfn + nr - 1) +
+                          PAGE_SIZE - sizeof(**avail) * NR_ZONES;
+        }
+        else
+        {
+            mfn_t needed_start = _mfn(mfn + nr - needed);
+
+            _heap[node] = vmap_contig(needed_start, needed);
+            BUG_ON(!_heap[node]);
+            avail[node] = (void *)(_heap[node]) + (needed << PAGE_SHIFT) -
+                          sizeof(**avail) * NR_ZONES;
+        }
     }
     else if ( nr >= needed &&
-              arch_mfns_in_directmap(mfn, needed) &&
               (!xenheap_bits ||
-               !((mfn + needed - 1) >> (xenheap_bits - PAGE_SHIFT))) )
+              !((mfn + needed - 1) >> (xenheap_bits - PAGE_SHIFT))) )
     {
-        _heap[node] = mfn_to_virt(mfn);
-        avail[node] = mfn_to_virt(mfn + needed - 1) +
-                      PAGE_SIZE - sizeof(**avail) * NR_ZONES;
+        if ( arch_mfns_in_directmap(mfn, needed) )
+        {
+            _heap[node] = mfn_to_virt(mfn);
+            avail[node] = mfn_to_virt(mfn + needed - 1) +
+                          PAGE_SIZE - sizeof(**avail) * NR_ZONES;
+        }
+        else
+        {
+            mfn_t needed_start = _mfn(mfn);
+
+            _heap[node] = vmap_contig(needed_start, needed);
+            BUG_ON(!_heap[node]);
+            avail[node] = (void *)(_heap[node]) + (needed << PAGE_SHIFT) -
+                          sizeof(**avail) * NR_ZONES;
+        }
         *use_tail = false;
     }
     else if ( get_order_from_bytes(sizeof(**_heap)) ==
-- 
2.40.1



From xen-devel-bounces@lists.xenproject.org Tue Jan 16 19:07:09 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 16 Jan 2024 19:07:09 +0000
Received: from list by lists.xenproject.org with outflank-mailman.668027.1039872 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPomB-0007xt-DX; Tue, 16 Jan 2024 19:07:07 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 668027.1039872; Tue, 16 Jan 2024 19:07:07 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPomB-0007xk-AG; Tue, 16 Jan 2024 19:07:07 +0000
Received: by outflank-mailman (input) for mailman id 668027;
 Tue, 16 Jan 2024 19:07:06 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=wmx9=I2=amazon.co.uk=prvs=738631f0b=eliasely@srs-se1.protection.inumbo.net>)
 id 1rPoY9-0002UD-93
 for xen-devel@lists.xenproject.org; Tue, 16 Jan 2024 18:52:37 +0000
Received: from smtp-fw-80008.amazon.com (smtp-fw-80008.amazon.com
 [99.78.197.219]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 69ce5dde-b4a0-11ee-98f1-6d05b1d4d9a1;
 Tue, 16 Jan 2024 19:52:36 +0100 (CET)
Received: from pdx4-co-svc-p1-lb2-vlan3.amazon.com (HELO
 email-inbound-relay-iad-1a-m6i4x-47cc8a4c.us-east-1.amazon.com)
 ([10.25.36.214]) by smtp-border-fw-80008.pdx80.corp.amazon.com with
 ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 16 Jan 2024 18:52:33 +0000
Received: from smtpout.prod.us-east-1.prod.farcaster.email.amazon.dev
 (iad7-ws-svc-p70-lb3-vlan2.iad.amazon.com [10.32.235.34])
 by email-inbound-relay-iad-1a-m6i4x-47cc8a4c.us-east-1.amazon.com (Postfix)
 with ESMTPS id 6F4AB1617D2; Tue, 16 Jan 2024 18:52:30 +0000 (UTC)
Received: from EX19MTAUEA002.ant.amazon.com [10.0.29.78:60545]
 by smtpin.naws.us-east-1.prod.farcaster.email.amazon.dev [10.0.19.196:2525]
 with esmtp (Farcaster)
 id 22f39cde-31e3-4ae5-85d7-d6aeaa59c7ad; Tue, 16 Jan 2024 18:52:30 +0000 (UTC)
Received: from EX19D008UEA001.ant.amazon.com (10.252.134.62) by
 EX19MTAUEA002.ant.amazon.com (10.252.134.9) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1118.40; Tue, 16 Jan 2024 18:52:29 +0000
Received: from EX19MTAUWB001.ant.amazon.com (10.250.64.248) by
 EX19D008UEA001.ant.amazon.com (10.252.134.62) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1118.40; Tue, 16 Jan 2024 18:52:29 +0000
Received: from dev-dsk-eliasely-1a-fd74790f.eu-west-1.amazon.com
 (10.253.91.118) by mail-relay.amazon.com (10.250.64.254) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1118.40 via Frontend Transport; Tue, 16 Jan 2024 18:52:27 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 69ce5dde-b4a0-11ee-98f1-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
  d=amazon.com; i=@amazon.com; q=dns/txt; s=amazon201209;
  t=1705431156; x=1736967156;
  h=from:to:cc:subject:date:message-id:in-reply-to:
   references:mime-version:content-transfer-encoding;
  bh=bXzdRNb+zZSWrMCWDYUPYL1ZiOjiL92dtef2XmbIpMo=;
  b=EzgS0wEKHM7aaCfLocmT8zbvEAm7v1cEkkGMPQcknqpr5PBfOKGcqaXE
   XQdCTWfcgjkDVtC8xAkr3AjZ0FAeW7k2CVHkGhI1VqnfsNFJrGnzownqu
   Z3RGe9hk6l+l0FnoGGH3SKGXvZNjqaWHTQJgUsk+fewaOsLYzn/BYz0iK
   M=;
X-IronPort-AV: E=Sophos;i="6.05,200,1701129600"; 
   d="scan'208";a="58742966"
X-Farcaster-Flow-ID: 22f39cde-31e3-4ae5-85d7-d6aeaa59c7ad
From: Elias El Yandouzi <eliasely@amazon.com>
To: <xen-devel@lists.xenproject.org>
CC: <julien@xen.org>, <pdurrant@amazon.com>, <dwmw@amazon.com>, Julien Grall
	<jgrall@amazon.com>, Andrew Cooper <andrew.cooper3@citrix.com>, George Dunlap
	<george.dunlap@citrix.com>, Jan Beulich <jbeulich@suse.com>, "Stefano
 Stabellini" <sstabellini@kernel.org>, Wei Liu <wl@xen.org>, Bertrand Marquis
	<bertrand.marquis@arm.com>, Michal Orzel <michal.orzel@amd.com>, "Volodymyr
 Babchuk" <Volodymyr_Babchuk@epam.com>, Elias El Yandouzi
	<eliasely@amazon.com>
Subject: [PATCH v2] xen/arm64: Allow the admin to enable/disable the directmap
Date: Tue, 16 Jan 2024 18:50:56 +0000
Message-ID: <20240116185056.15000-28-eliasely@amazon.com>
X-Mailer: git-send-email 2.40.1
In-Reply-To: <20240116185056.15000-1-eliasely@amazon.com>
References: <20240116185056.15000-1-eliasely@amazon.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
Precedence: Bulk

From: Julien Grall <jgrall@amazon.com>

Implement the same command line option as x86 to enable/disable the
directmap. By default this is kept enabled.

Also modify setup_directmap_mappings() to populate the L0 entries
related to the directmap area.

Signed-off-by: Julien Grall <jgrall@amazon.com>
Signed-off-by: Elias El Yandouzi <eliasely@amazon.com>

----

    Changes in v2:
        * Rely on the Kconfig option to enable Secret Hiding on Arm64
        * Use generic helper instead of arch_has_directmap()

diff --git a/docs/misc/xen-command-line.pandoc b/docs/misc/xen-command-line.pandoc
index 63c946f482..df90b1c4c9 100644
--- a/docs/misc/xen-command-line.pandoc
+++ b/docs/misc/xen-command-line.pandoc
@@ -799,7 +799,7 @@ that enabling this option cannot guarantee anything beyond what underlying
 hardware guarantees (with, where available and known to Xen, respective
 tweaks applied).
 
-### directmap (x86)
+### directmap (arm64, x86)
 > `= <boolean>`
 
 > Default: `true`
diff --git a/xen/arch/arm/Kconfig b/xen/arch/arm/Kconfig
index 278243f0d6..7a19826233 100644
--- a/xen/arch/arm/Kconfig
+++ b/xen/arch/arm/Kconfig
@@ -7,6 +7,7 @@ config ARM_64
 	depends on !ARM_32
 	select 64BIT
 	select HAS_FAST_MULTIPLY
+	select HAS_SECRET_HIDING
 
 config ARM
 	def_bool y
diff --git a/xen/arch/arm/arm64/mmu/mm.c b/xen/arch/arm/arm64/mmu/mm.c
index f4a81aa705..22e1e5b9f4 100644
--- a/xen/arch/arm/arm64/mmu/mm.c
+++ b/xen/arch/arm/arm64/mmu/mm.c
@@ -157,16 +157,27 @@ void __init switch_ttbr(uint64_t ttbr)
     update_identity_mapping(false);
 }
 
-/* Map the region in the directmap area. */
+/*
+ * This either populate a valid fdirect map, or allocates empty L1 tables
+ * and creates the L0 entries for the given region in the direct map
+ * depending on has_directmap().
+ *
+ * When directmap=no, we still need to populate empty L1 tables in the
+ * directmap region. The reason is that the root page-table (i.e. L0)
+ * is per-CPU and secondary CPUs will initialize their root page-table
+ * based on the pCPU0 one. So L0 entries will be shared if they are
+ * pre-populated. We also rely on the fact that L1 tables are never
+ * freed.
+ */
 static void __init setup_directmap_mappings(unsigned long base_mfn,
                                             unsigned long nr_mfns)
 {
+    unsigned long mfn_gb = base_mfn & ~((FIRST_SIZE >> PAGE_SHIFT) - 1);
     int rc;
 
     /* First call sets the directmap physical and virtual offset. */
     if ( mfn_eq(directmap_mfn_start, INVALID_MFN) )
     {
-        unsigned long mfn_gb = base_mfn & ~((FIRST_SIZE >> PAGE_SHIFT) - 1);
 
         directmap_mfn_start = _mfn(base_mfn);
         directmap_base_pdx = mfn_to_pdx(_mfn(base_mfn));
@@ -187,6 +198,24 @@ static void __init setup_directmap_mappings(unsigned long base_mfn,
         panic("cannot add directmap mapping at %lx below heap start %lx\n",
               base_mfn, mfn_x(directmap_mfn_start));
 
+    if ( !has_directmap() )
+    {
+        vaddr_t vaddr = (vaddr_t)__mfn_to_virt(base_mfn);
+        lpae_t *root = this_cpu(xen_pgtable);
+        unsigned int i, slot;
+
+        slot = first_table_offset(vaddr);
+        nr_mfns += base_mfn - mfn_gb;
+        for ( i = 0; i < nr_mfns; i += BIT(XEN_PT_LEVEL_ORDER(0), UL), slot++ )
+        {
+            lpae_t *entry = &root[slot];
+
+            if ( !lpae_is_valid(*entry) && !create_xen_table(entry) )
+                panic("Unable to populate zeroeth slot %u\n", slot);
+        }
+        return;
+    }
+
     rc = map_pages_to_xen((vaddr_t)__mfn_to_virt(base_mfn),
                           _mfn(base_mfn), nr_mfns,
                           PAGE_HYPERVISOR_RW | _PAGE_BLOCK);
diff --git a/xen/arch/arm/include/asm/arm64/mm.h b/xen/arch/arm/include/asm/arm64/mm.h
index e0bd23a6ed..5888f29159 100644
--- a/xen/arch/arm/include/asm/arm64/mm.h
+++ b/xen/arch/arm/include/asm/arm64/mm.h
@@ -3,13 +3,10 @@
 
 extern DEFINE_PAGE_TABLE(xen_pgtable);
 
-/*
- * On ARM64, all the RAM is currently direct mapped in Xen.
- * Hence return always true.
- */
+/* On Arm64, the user can chose whether all the RAM is directmap. */
 static inline bool arch_mfns_in_directmap(unsigned long mfn, unsigned long nr)
 {
-    return true;
+    return has_directmap();
 }
 
 void arch_setup_page_tables(void);
diff --git a/xen/arch/arm/mm.c b/xen/arch/arm/mm.c
index b15a18a494..7fb75c5c3e 100644
--- a/xen/arch/arm/mm.c
+++ b/xen/arch/arm/mm.c
@@ -12,6 +12,7 @@
 #include <xen/grant_table.h>
 #include <xen/guest_access.h>
 #include <xen/mm.h>
+#include <xen/param.h>
 
 #include <xsm/xsm.h>
 
diff --git a/xen/arch/arm/setup.c b/xen/arch/arm/setup.c
index 3dec365c57..2bd060d321 100644
--- a/xen/arch/arm/setup.c
+++ b/xen/arch/arm/setup.c
@@ -748,6 +748,7 @@ void asmlinkage __init start_xen(unsigned long boot_phys_offset,
     cmdline_parse(cmdline);
 
     setup_mm();
+    printk("Booting with directmap %s\n", has_directmap() ? "on" : "off");
 
     vm_init();
 
-- 
2.40.1



From xen-devel-bounces@lists.xenproject.org Tue Jan 16 19:08:17 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 16 Jan 2024 19:08:17 +0000
Received: from list by lists.xenproject.org with outflank-mailman.668030.1039882 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPonH-0000Jb-NY; Tue, 16 Jan 2024 19:08:15 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 668030.1039882; Tue, 16 Jan 2024 19:08:15 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPonH-0000JU-Jb; Tue, 16 Jan 2024 19:08:15 +0000
Received: by outflank-mailman (input) for mailman id 668030;
 Tue, 16 Jan 2024 19:08:13 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=wmx9=I2=amazon.co.uk=prvs=738631f0b=eliasely@srs-se1.protection.inumbo.net>)
 id 1rPoXl-0002UD-53
 for xen-devel@lists.xenproject.org; Tue, 16 Jan 2024 18:52:13 +0000
Received: from smtp-fw-52005.amazon.com (smtp-fw-52005.amazon.com
 [52.119.213.156]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 5ad9fea8-b4a0-11ee-98f1-6d05b1d4d9a1;
 Tue, 16 Jan 2024 19:52:11 +0100 (CET)
Received: from iad12-co-svc-p1-lb1-vlan3.amazon.com (HELO
 email-inbound-relay-pdx-2a-m6i4x-1cca8d67.us-west-2.amazon.com) ([10.43.8.6])
 by smtp-border-fw-52005.iad7.amazon.com with
 ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 16 Jan 2024 18:52:08 +0000
Received: from smtpout.prod.us-east-1.prod.farcaster.email.amazon.dev
 (pdx2-ws-svc-p26-lb5-vlan3.pdx.amazon.com [10.39.38.70])
 by email-inbound-relay-pdx-2a-m6i4x-1cca8d67.us-west-2.amazon.com (Postfix)
 with ESMTPS id 4764D80E1C; Tue, 16 Jan 2024 18:52:07 +0000 (UTC)
Received: from EX19MTAUEB001.ant.amazon.com [10.0.44.209:15676]
 by smtpin.naws.us-east-1.prod.farcaster.email.amazon.dev [10.0.15.248:2525]
 with esmtp (Farcaster)
 id 2b428ad9-19ac-49b7-8226-125e1f8e03f0; Tue, 16 Jan 2024 18:52:06 +0000 (UTC)
Received: from EX19D008UEA001.ant.amazon.com (10.252.134.62) by
 EX19MTAUEB001.ant.amazon.com (10.252.135.108) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1118.40; Tue, 16 Jan 2024 18:51:56 +0000
Received: from EX19MTAUWB001.ant.amazon.com (10.250.64.248) by
 EX19D008UEA001.ant.amazon.com (10.252.134.62) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1118.40; Tue, 16 Jan 2024 18:51:56 +0000
Received: from dev-dsk-eliasely-1a-fd74790f.eu-west-1.amazon.com
 (10.253.91.118) by mail-relay.amazon.com (10.250.64.254) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1118.40 via Frontend Transport; Tue, 16 Jan 2024 18:51:54 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 5ad9fea8-b4a0-11ee-98f1-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
  d=amazon.com; i=@amazon.com; q=dns/txt; s=amazon201209;
  t=1705431132; x=1736967132;
  h=from:to:cc:subject:date:message-id:in-reply-to:
   references:mime-version:content-transfer-encoding;
  bh=sWVxwHwgKXZxnYvHw7QOCApWITjaKrfn/x6fPGCt35k=;
  b=WqU4X38TULWbRoI6rpsRX5dtgvECEk5hTgFWQQVYaJLx2EUZ1wRm3lZ1
   g+B4OFvZxifpJ0Kfc55WCntgKyJR9CGlSPn6QvetY4J6NToDRza6gxdT2
   Yt7BZEYb8UW24uzI6K01cILWsM69+dn/bBSUVA6gMI1h0cwHeBQ3Uz+C0
   o=;
X-IronPort-AV: E=Sophos;i="6.05,200,1701129600"; 
   d="scan'208";a="627976400"
X-Farcaster-Flow-ID: 2b428ad9-19ac-49b7-8226-125e1f8e03f0
From: Elias El Yandouzi <eliasely@amazon.com>
To: <xen-devel@lists.xenproject.org>
CC: <julien@xen.org>, <pdurrant@amazon.com>, <dwmw@amazon.com>, Hongyan Xia
	<hongyxia@amazon.com>, Jan Beulich <jbeulich@suse.com>, Andrew Cooper
	<andrew.cooper3@citrix.com>, =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?=
	<roger.pau@citrix.com>, Wei Liu <wl@xen.org>, Wei Wang <wawei@amazon.de>,
	Julien Grall <jgrall@amazon.com>, Elias El Yandouzi <eliasely@amazon.com>
Subject: [PATCH v2] x86/mapcache: Initialise the mapcache for the idle domain
Date: Tue, 16 Jan 2024 18:50:41 +0000
Message-ID: <20240116185056.15000-13-eliasely@amazon.com>
X-Mailer: git-send-email 2.40.1
In-Reply-To: <20240116185056.15000-1-eliasely@amazon.com>
References: <20240116185056.15000-1-eliasely@amazon.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
Precedence: Bulk

From: Hongyan Xia <hongyxia@amazon.com>

In order to use the mapcache in the idle domain, we also have to
populate its page tables in the PERDOMAIN region, and we need to move
mapcache_domain_init() earlier in arch_domain_create().

Note, commit 'x86: lift mapcache variable to the arch level' has
initialised the mapcache for HVM domains. With this patch, PV, HVM,
idle domains now all initialise the mapcache.

Signed-off-by: Wei Wang <wawei@amazon.de>
Signed-off-by: Hongyan Xia <hongyxia@amazon.com>
Signed-off-by: Julien Grall <jgrall@amazon.com>
Signed-off-by: Elias El Yandouzi <eliasely@amazon.com>

----

	Changes in V2:
          * Free resources if mapcache initialisation fails
          * Remove `is_idle_domain()` check from `create_perdomain_mappings()`

diff --git a/xen/arch/x86/domain.c b/xen/arch/x86/domain.c
index 8ef3f7746f..d4c125bc14 100644
--- a/xen/arch/x86/domain.c
+++ b/xen/arch/x86/domain.c
@@ -750,9 +750,16 @@ int arch_domain_create(struct domain *d,
 
     spin_lock_init(&d->arch.e820_lock);
 
+    if ( (rc = mapcache_domain_init(d)) != 0)
+    {
+        free_perdomain_mappings(d);
+        return rc;
+    }
+
     /* Minimal initialisation for the idle domain. */
     if ( unlikely(is_idle_domain(d)) )
     {
+        struct page_info *pg = d->arch.perdomain_l3_pg;
         static const struct arch_csw idle_csw = {
             .from = paravirt_ctxt_switch_from,
             .to   = paravirt_ctxt_switch_to,
@@ -763,6 +770,9 @@ int arch_domain_create(struct domain *d,
 
         d->arch.cpu_policy = ZERO_BLOCK_PTR; /* Catch stray misuses. */
 
+        idle_pg_table[l4_table_offset(PERDOMAIN_VIRT_START)] =
+            l4e_from_page(pg, __PAGE_HYPERVISOR_RW);
+
         return 0;
     }
 
@@ -843,8 +853,6 @@ int arch_domain_create(struct domain *d,
 
     psr_domain_init(d);
 
-    mapcache_domain_init(d);
-
     if ( is_hvm_domain(d) )
     {
         if ( (rc = hvm_domain_initialise(d, config)) != 0 )
-- 
2.40.1



From xen-devel-bounces@lists.xenproject.org Tue Jan 16 19:08:39 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 16 Jan 2024 19:08:39 +0000
Received: from list by lists.xenproject.org with outflank-mailman.668034.1039892 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPone-0000uQ-UZ; Tue, 16 Jan 2024 19:08:38 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 668034.1039892; Tue, 16 Jan 2024 19:08:38 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPone-0000uH-Qw; Tue, 16 Jan 2024 19:08:38 +0000
Received: by outflank-mailman (input) for mailman id 668034;
 Tue, 16 Jan 2024 19:08:37 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=wmx9=I2=amazon.co.uk=prvs=738631f0b=eliasely@srs-se1.protection.inumbo.net>)
 id 1rPoY6-0003xp-DS
 for xen-devel@lists.xenproject.org; Tue, 16 Jan 2024 18:52:34 +0000
Received: from smtp-fw-9102.amazon.com (smtp-fw-9102.amazon.com
 [207.171.184.29]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 6677bad2-b4a0-11ee-9b0f-b553b5be7939;
 Tue, 16 Jan 2024 19:52:32 +0100 (CET)
Received: from pdx4-co-svc-p1-lb2-vlan3.amazon.com (HELO
 email-inbound-relay-pdx-2c-m6i4x-5eae960a.us-west-2.amazon.com)
 ([10.25.36.214]) by smtp-border-fw-9102.sea19.amazon.com with
 ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 16 Jan 2024 18:52:30 +0000
Received: from smtpout.prod.us-east-1.prod.farcaster.email.amazon.dev
 (pdx2-ws-svc-p26-lb5-vlan2.pdx.amazon.com [10.39.38.66])
 by email-inbound-relay-pdx-2c-m6i4x-5eae960a.us-west-2.amazon.com (Postfix)
 with ESMTPS id 8FD7840E66; Tue, 16 Jan 2024 18:52:28 +0000 (UTC)
Received: from EX19MTAUEB001.ant.amazon.com [10.0.44.209:51134]
 by smtpin.naws.us-east-1.prod.farcaster.email.amazon.dev [10.0.95.118:2525]
 with esmtp (Farcaster)
 id 2563113d-fce9-40c4-960f-6ad2c8bd5a50; Tue, 16 Jan 2024 18:52:27 +0000 (UTC)
Received: from EX19D008UEA001.ant.amazon.com (10.252.134.62) by
 EX19MTAUEB001.ant.amazon.com (10.252.135.108) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1118.40; Tue, 16 Jan 2024 18:52:27 +0000
Received: from EX19MTAUWB001.ant.amazon.com (10.250.64.248) by
 EX19D008UEA001.ant.amazon.com (10.252.134.62) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1118.40; Tue, 16 Jan 2024 18:52:26 +0000
Received: from dev-dsk-eliasely-1a-fd74790f.eu-west-1.amazon.com
 (10.253.91.118) by mail-relay.amazon.com (10.250.64.254) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1118.40 via Frontend Transport; Tue, 16 Jan 2024 18:52:25 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 6677bad2-b4a0-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
  d=amazon.com; i=@amazon.com; q=dns/txt; s=amazon201209;
  t=1705431153; x=1736967153;
  h=from:to:cc:subject:date:message-id:in-reply-to:
   references:mime-version:content-transfer-encoding;
  bh=6yOB72LIvzh25UA84mj42X06HmCmvwf5nDXcH1vuudI=;
  b=grrY+B6sgb7yaTRgSLvkCPfPOe60ak2w7hBC5ufxojCABWgPqrTSbD+F
   RK37bnP3sizFr30HEYmS5Wiba8ovH+6XFtpq0PdXRHgx94zvnMLAEM/gb
   mf1hgAxx4DogATjYp4nwKviIwotAS5O7Ueewxutp/msQ2STnQouZVp7Qh
   w=;
X-IronPort-AV: E=Sophos;i="6.05,200,1701129600"; 
   d="scan'208";a="390202627"
X-Farcaster-Flow-ID: 2563113d-fce9-40c4-960f-6ad2c8bd5a50
From: Elias El Yandouzi <eliasely@amazon.com>
To: <xen-devel@lists.xenproject.org>
CC: <julien@xen.org>, <pdurrant@amazon.com>, <dwmw@amazon.com>, Julien Grall
	<jgrall@amazon.com>, Stefano Stabellini <sstabellini@kernel.org>, "Bertrand
 Marquis" <bertrand.marquis@arm.com>, Michal Orzel <michal.orzel@amd.com>,
	Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>, Elias El Yandouzi
	<eliasely@amazon.com>
Subject: [PATCH v2] xen/arm64: Implement a mapcache for arm64
Date: Tue, 16 Jan 2024 18:50:55 +0000
Message-ID: <20240116185056.15000-27-eliasely@amazon.com>
X-Mailer: git-send-email 2.40.1
In-Reply-To: <20240116185056.15000-1-eliasely@amazon.com>
References: <20240116185056.15000-1-eliasely@amazon.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
Precedence: Bulk

From: Julien Grall <jgrall@amazon.com>

At the moment, on arm64, map_domain_page() is implemented using
virt_to_mfn(). Therefore it is relying on the directmap.

In a follow-up patch, we will allow the admin to remove the directmap.
Therefore we want to implement a mapcache.

Thanksfully there is already one for arm32. So select ARCH_ARM_DOMAIN_PAGE
and add the necessary boiler plate to support 64-bit:
    - The page-table start at level 0, so we need to allocate the level
      1 page-table
    - map_domain_page() should check if the page is in the directmap. If
      yes, then use virt_to_mfn() to limit the performance impact
      when the directmap is still enabled (this will be selectable
      on the command line).

Take the opportunity to replace first_table_offset(...) with offsets[...].

Note that, so far, arch_mfns_in_directmap() always return true on
arm64. So the mapcache is not yet used. This will change in a
follow-up patch.

Signed-off-by: Julien Grall <jgrall@amazon.com>
Signed-off-by: Elias El Yandouzi <eliasely@amazon.com>

----

    There are a few TODOs:
        - It is becoming more critical to fix the mapcache
          implementation (this is not compliant with the Arm Arm)
        - Evaluate the performance

diff --git a/xen/arch/arm/Kconfig b/xen/arch/arm/Kconfig
index 50e9bfae1a..278243f0d6 100644
--- a/xen/arch/arm/Kconfig
+++ b/xen/arch/arm/Kconfig
@@ -1,7 +1,6 @@
 config ARM_32
 	def_bool y
 	depends on "$(ARCH)" = "arm32"
-	select ARCH_MAP_DOMAIN_PAGE
 
 config ARM_64
 	def_bool y
@@ -12,6 +11,7 @@ config ARM_64
 config ARM
 	def_bool y
 	select HAS_ALTERNATIVE
+	select ARCH_MAP_DOMAIN_PAGE
 	select HAS_DEVICE_TREE
 	select HAS_PASSTHROUGH
 	select HAS_UBSAN
diff --git a/xen/arch/arm/arm64/mmu/mm.c b/xen/arch/arm/arm64/mmu/mm.c
index 4f339efb7b..f4a81aa705 100644
--- a/xen/arch/arm/arm64/mmu/mm.c
+++ b/xen/arch/arm/arm64/mmu/mm.c
@@ -4,6 +4,7 @@
 #include <xen/mm.h>
 #include <xen/pfn.h>
 
+#include <asm/domain_page.h>
 #include <asm/setup.h>
 #include <asm/static-memory.h>
 
@@ -236,6 +237,14 @@ void __init setup_mm(void)
     setup_frametable_mappings(ram_start, ram_end);
     max_page = PFN_DOWN(ram_end);
 
+    /*
+     * The allocators may need to use map_domain_page() (such as for
+     * scrubbing pages). So we need to prepare the domheap area first.
+     */
+    if ( !init_domheap_mappings(smp_processor_id()) )
+        panic("CPU%u: Unable to prepare the domheap page-tables\n",
+              smp_processor_id());
+
     init_staticmem_pages();
 }
 
diff --git a/xen/arch/arm/domain_page.c b/xen/arch/arm/domain_page.c
index ac2a6d0332..0f6ba48892 100644
--- a/xen/arch/arm/domain_page.c
+++ b/xen/arch/arm/domain_page.c
@@ -1,4 +1,5 @@
 /* SPDX-License-Identifier: GPL-2.0-or-later */
+#include <xen/domain_page.h>
 #include <xen/mm.h>
 #include <xen/pmap.h>
 #include <xen/vmap.h>
@@ -8,6 +9,8 @@
 /* Override macros from asm/page.h to make them work with mfn_t */
 #undef virt_to_mfn
 #define virt_to_mfn(va) _mfn(__virt_to_mfn(va))
+#undef mfn_to_virt
+#define mfn_to_virt(va) __mfn_to_virt(mfn_x(mfn))
 
 /* cpu0's domheap page tables */
 static DEFINE_PAGE_TABLES(cpu0_dommap, DOMHEAP_SECOND_PAGES);
@@ -31,13 +34,30 @@ bool init_domheap_mappings(unsigned int cpu)
 {
     unsigned int order = get_order_from_pages(DOMHEAP_SECOND_PAGES);
     lpae_t *root = per_cpu(xen_pgtable, cpu);
+    lpae_t *first;
     unsigned int i, first_idx;
     lpae_t *domheap;
     mfn_t mfn;
 
+    /* Convenience aliases */
+    DECLARE_OFFSETS(offsets, DOMHEAP_VIRT_START);
+
     ASSERT(root);
     ASSERT(!per_cpu(xen_dommap, cpu));
 
+    /*
+     * On Arm64, the root is at level 0. Therefore we need an extra step
+     * to allocate the first level page-table.
+     */
+#ifdef CONFIG_ARM_64
+    if ( create_xen_table(&root[offsets[0]]) )
+        return false;
+
+    first = xen_map_table(lpae_get_mfn(root[offsets[0]]));
+#else
+    first = root;
+#endif
+
     /*
      * The domheap for cpu0 is initialized before the heap is initialized.
      * So we need to use pre-allocated pages.
@@ -58,16 +78,20 @@ bool init_domheap_mappings(unsigned int cpu)
      * domheap mapping pages.
      */
     mfn = virt_to_mfn(domheap);
-    first_idx = first_table_offset(DOMHEAP_VIRT_START);
+    first_idx = offsets[1];
     for ( i = 0; i < DOMHEAP_SECOND_PAGES; i++ )
     {
         lpae_t pte = mfn_to_xen_entry(mfn_add(mfn, i), MT_NORMAL);
         pte.pt.table = 1;
-        write_pte(&root[first_idx + i], pte);
+        write_pte(&first[first_idx + i], pte);
     }
 
     per_cpu(xen_dommap, cpu) = domheap;
 
+#ifdef CONFIG_ARM_64
+    xen_unmap_table(first);
+#endif
+
     return true;
 }
 
@@ -91,6 +115,10 @@ void *map_domain_page(mfn_t mfn)
     lpae_t pte;
     int i, slot;
 
+    /* Bypass the mapcache if the page is in the directmap */
+    if ( arch_mfns_in_directmap(mfn_x(mfn), 1) )
+        return mfn_to_virt(mfn);
+
     local_irq_save(flags);
 
     /* The map is laid out as an open-addressed hash table where each
@@ -153,13 +181,25 @@ void *map_domain_page(mfn_t mfn)
 /* Release a mapping taken with map_domain_page() */
 void unmap_domain_page(const void *ptr)
 {
+    unsigned long va = (unsigned long)ptr;
     unsigned long flags;
     lpae_t *map = this_cpu(xen_dommap);
-    int slot = ((unsigned long)ptr - DOMHEAP_VIRT_START) >> SECOND_SHIFT;
+    unsigned int slot;
+
+    /* Below we assume that the domheap area doesn't start at 0 */
+    BUILD_BUG_ON(DOMHEAP_VIRT_START == 0);
 
-    if ( !ptr )
+    /*
+     * map_domain_page() may not have mapped anything if the address
+     * is part of the directmap. So ignore anything outside of the
+     * domheap.
+     */
+    if ( (va < DOMHEAP_VIRT_START) ||
+         ((va - DOMHEAP_VIRT_START) >= DOMHEAP_VIRT_SIZE) )
         return;
 
+    slot = (va - DOMHEAP_VIRT_START) >> SECOND_SHIFT;
+
     local_irq_save(flags);
 
     ASSERT(slot >= 0 && slot < DOMHEAP_ENTRIES);
diff --git a/xen/arch/arm/include/asm/mm.h b/xen/arch/arm/include/asm/mm.h
index a76578a16f..c48e51d827 100644
--- a/xen/arch/arm/include/asm/mm.h
+++ b/xen/arch/arm/include/asm/mm.h
@@ -432,6 +432,11 @@ static inline void page_set_xenheap_gfn(struct page_info *p, gfn_t gfn)
     } while ( (y = cmpxchg(&p->u.inuse.type_info, x, nx)) != x );
 }
 
+/* Helpers to allocate, map and unmap a Xen page-table */
+int create_xen_table(lpae_t *entry);
+lpae_t *xen_map_table(mfn_t mfn);
+void xen_unmap_table(const lpae_t *table);
+
 #endif /*  __ARCH_ARM_MM__ */
 /*
  * Local variables:
diff --git a/xen/arch/arm/include/asm/mmu/layout.h b/xen/arch/arm/include/asm/mmu/layout.h
index a3b546465b..c549420e8b 100644
--- a/xen/arch/arm/include/asm/mmu/layout.h
+++ b/xen/arch/arm/include/asm/mmu/layout.h
@@ -35,9 +35,13 @@
  *
  *  32G -  64G   Frametable: 56 bytes per page for 2TB of RAM
  *
- * 0x00000a8000000000 - 0x00007fffffffffff (512GB+117TB, L0 slots [21..255])
+ * 0x00000a8000000000 - 0x00007f7fffffffff (117TB, L0 slots [21..254])
  *  Unused
  *
+ * 0x00007f8000000000 - 0x00007fffffffffff (512GB, L0 slot [255])
+ *  (Relative offsets)
+ *  0  -    2G    Domheap: on-demand-mapped
+ *
  * 0x0000800000000000 - 0x000084ffffffffff (5TB, L0 slots [256..265])
  *  1:1 mapping of RAM
  *
@@ -130,6 +134,13 @@
 #define FRAMETABLE_SIZE        GB(32)
 #define FRAMETABLE_NR          (FRAMETABLE_SIZE / sizeof(*frame_table))
 
+#define DOMHEAP_VIRT_START     SLOT0(255)
+#define DOMHEAP_VIRT_SIZE      GB(2)
+
+#define DOMHEAP_ENTRIES        1024 /* 1024 2MB mapping slots */
+/* Number of domheap pagetable pages required at the second level (2MB mappings) */
+#define DOMHEAP_SECOND_PAGES (DOMHEAP_VIRT_SIZE >> FIRST_SHIFT)
+
 #define DIRECTMAP_VIRT_START   SLOT0(256)
 #define DIRECTMAP_SIZE         (SLOT0_ENTRY_SIZE * (266 - 256))
 #define DIRECTMAP_VIRT_END     (DIRECTMAP_VIRT_START + DIRECTMAP_SIZE - 1)
diff --git a/xen/arch/arm/mmu/pt.c b/xen/arch/arm/mmu/pt.c
index e772ab4e66..f26b1412be 100644
--- a/xen/arch/arm/mmu/pt.c
+++ b/xen/arch/arm/mmu/pt.c
@@ -32,7 +32,7 @@ mm_printk(const char *fmt, ...) {}
 #define HYP_PT_ROOT_LEVEL 1
 #endif
 
-static lpae_t *xen_map_table(mfn_t mfn)
+lpae_t *xen_map_table(mfn_t mfn)
 {
     /*
      * During early boot, map_domain_page() may be unusable. Use the
@@ -44,7 +44,7 @@ static lpae_t *xen_map_table(mfn_t mfn)
     return map_domain_page(mfn);
 }
 
-static void xen_unmap_table(const lpae_t *table)
+void xen_unmap_table(const lpae_t *table)
 {
     /*
      * During early boot, xen_map_table() will not use map_domain_page()
@@ -227,7 +227,7 @@ void *ioremap(paddr_t pa, size_t len)
     return ioremap_attr(pa, len, PAGE_HYPERVISOR_NOCACHE);
 }
 
-static int create_xen_table(lpae_t *entry)
+int create_xen_table(lpae_t *entry)
 {
     mfn_t mfn;
     void *p;
-- 
2.40.1



From xen-devel-bounces@lists.xenproject.org Tue Jan 16 19:08:39 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 16 Jan 2024 19:08:39 +0000
Received: from list by lists.xenproject.org with outflank-mailman.668035.1039898 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPonf-0000xj-9E; Tue, 16 Jan 2024 19:08:39 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 668035.1039898; Tue, 16 Jan 2024 19:08:39 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPonf-0000wr-2L; Tue, 16 Jan 2024 19:08:39 +0000
Received: by outflank-mailman (input) for mailman id 668035;
 Tue, 16 Jan 2024 19:08:37 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=wmx9=I2=amazon.co.uk=prvs=738631f0b=eliasely@srs-se1.protection.inumbo.net>)
 id 1rPoY1-0002UD-Ou
 for xen-devel@lists.xenproject.org; Tue, 16 Jan 2024 18:52:29 +0000
Received: from smtp-fw-80009.amazon.com (smtp-fw-80009.amazon.com
 [99.78.197.220]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 6486fdbc-b4a0-11ee-98f1-6d05b1d4d9a1;
 Tue, 16 Jan 2024 19:52:28 +0100 (CET)
Received: from pdx4-co-svc-p1-lb2-vlan2.amazon.com (HELO
 email-inbound-relay-pdx-2a-m6i4x-1197e3af.us-west-2.amazon.com)
 ([10.25.36.210]) by smtp-border-fw-80009.pdx80.corp.amazon.com with
 ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 16 Jan 2024 18:52:26 +0000
Received: from smtpout.prod.us-east-1.prod.farcaster.email.amazon.dev
 (pdx2-ws-svc-p26-lb5-vlan2.pdx.amazon.com [10.39.38.66])
 by email-inbound-relay-pdx-2a-m6i4x-1197e3af.us-west-2.amazon.com (Postfix)
 with ESMTPS id 117E51000D8; Tue, 16 Jan 2024 18:52:26 +0000 (UTC)
Received: from EX19MTAUEB002.ant.amazon.com [10.0.44.209:63933]
 by smtpin.naws.us-east-1.prod.farcaster.email.amazon.dev [10.0.3.20:2525] with
 esmtp (Farcaster)
 id cfe1bab4-7948-4ffa-8d0e-cec429382164; Tue, 16 Jan 2024 18:52:25 +0000 (UTC)
Received: from EX19D008UEA001.ant.amazon.com (10.252.134.62) by
 EX19MTAUEB002.ant.amazon.com (10.252.135.47) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1118.40; Tue, 16 Jan 2024 18:52:25 +0000
Received: from EX19MTAUWB001.ant.amazon.com (10.250.64.248) by
 EX19D008UEA001.ant.amazon.com (10.252.134.62) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1118.40; Tue, 16 Jan 2024 18:52:24 +0000
Received: from dev-dsk-eliasely-1a-fd74790f.eu-west-1.amazon.com
 (10.253.91.118) by mail-relay.amazon.com (10.250.64.254) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1118.40 via Frontend Transport; Tue, 16 Jan 2024 18:52:23 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 6486fdbc-b4a0-11ee-98f1-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
  d=amazon.com; i=@amazon.com; q=dns/txt; s=amazon201209;
  t=1705431148; x=1736967148;
  h=from:to:cc:subject:date:message-id:in-reply-to:
   references:mime-version:content-transfer-encoding;
  bh=HBVAS715RpCNC8CvMLRfobjdzDnsKgjKWFL+xKdoEXs=;
  b=IMiLBBO2HxsR0jYQ3ORzskVquLf1vNOKUDXIsS4WtpGiZODZnR57FJlp
   YV8Bphh/Z7GWXE8yc589qn9CGZTY+t7WADok1hjrXWTDKyEOs6jjtkNJq
   0l6HJikl/sMK1Wz1i7KQOMv/64+78rHJJxilJUf+tKVZno2oNABVvrtsC
   Q=;
X-IronPort-AV: E=Sophos;i="6.05,200,1701129600"; 
   d="scan'208";a="58692070"
X-Farcaster-Flow-ID: cfe1bab4-7948-4ffa-8d0e-cec429382164
From: Elias El Yandouzi <eliasely@amazon.com>
To: <xen-devel@lists.xenproject.org>
CC: <julien@xen.org>, <pdurrant@amazon.com>, <dwmw@amazon.com>, Julien Grall
	<jgrall@amazon.com>, Stefano Stabellini <sstabellini@kernel.org>, "Bertrand
 Marquis" <bertrand.marquis@arm.com>, Michal Orzel <michal.orzel@amd.com>,
	Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>, Elias El Yandouzi
	<eliasely@amazon.com>
Subject: [PATCH v2] xen/arm64: mm: Use per-pCPU page-tables
Date: Tue, 16 Jan 2024 18:50:54 +0000
Message-ID: <20240116185056.15000-26-eliasely@amazon.com>
X-Mailer: git-send-email 2.40.1
In-Reply-To: <20240116185056.15000-1-eliasely@amazon.com>
References: <20240116185056.15000-1-eliasely@amazon.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
Precedence: Bulk

From: Julien Grall <jgrall@amazon.com>

At the moment, on Arm64, every pCPU is sharing the same page-tables.

In a follow-up patch, we will allow the possibility to remove the
direct map and therefore it will be necessary to have a mapcache.

While we have plenty of spare virtual address space to reserve part
for each pCPU, it means that temporary mappings (e.g. guest memory)
could be accessible by every pCPU.

In order to increase our security posture, it would be better if
those mappings are only accessible by the pCPU doing the temporary
mapping.

In addition to that, a per-pCPU page-tables opens the way to have
per-domain mapping area.

Arm32 is already using per-pCPU page-tables so most of the code
can be re-used. Arm64 doesn't yet have support for the mapcache,
so a stub is provided (moved to its own header asm/domain_page.h).

Take the opportunity to fix a typo in a comment that is modified.

Signed-off-by: Julien Grall <jgrall@amazon.com>
Signed-off-by: Elias El Yandouzi <eliasely@amazon.com>

----

    Changelog since v1:
        * Rebase
        * Fix typoes

diff --git a/xen/arch/arm/arm64/mmu/mm.c b/xen/arch/arm/arm64/mmu/mm.c
index d2651c9486..4f339efb7b 100644
--- a/xen/arch/arm/arm64/mmu/mm.c
+++ b/xen/arch/arm/arm64/mmu/mm.c
@@ -75,6 +75,7 @@ static void __init prepare_runtime_identity_mapping(void)
     paddr_t id_addr = virt_to_maddr(_start);
     lpae_t pte;
     DECLARE_OFFSETS(id_offsets, id_addr);
+    lpae_t *root = this_cpu(xen_pgtable);
 
     if ( id_offsets[0] >= IDENTITY_MAPPING_AREA_NR_L0 )
         panic("Cannot handle ID mapping above %uTB\n",
@@ -85,7 +86,7 @@ static void __init prepare_runtime_identity_mapping(void)
     pte.pt.table = 1;
     pte.pt.xn = 0;
 
-    write_pte(&xen_pgtable[id_offsets[0]], pte);
+    write_pte(&root[id_offsets[0]], pte);
 
     /* Link second ID table */
     pte = pte_of_xenaddr((vaddr_t)xen_second_id);
diff --git a/xen/arch/arm/domain_page.c b/xen/arch/arm/domain_page.c
index 3a43601623..ac2a6d0332 100644
--- a/xen/arch/arm/domain_page.c
+++ b/xen/arch/arm/domain_page.c
@@ -3,6 +3,8 @@
 #include <xen/pmap.h>
 #include <xen/vmap.h>
 
+#include <asm/domain_page.h>
+
 /* Override macros from asm/page.h to make them work with mfn_t */
 #undef virt_to_mfn
 #define virt_to_mfn(va) _mfn(__virt_to_mfn(va))
diff --git a/xen/arch/arm/include/asm/arm32/mm.h b/xen/arch/arm/include/asm/arm32/mm.h
index 856f2dbec4..87a315db01 100644
--- a/xen/arch/arm/include/asm/arm32/mm.h
+++ b/xen/arch/arm/include/asm/arm32/mm.h
@@ -1,12 +1,6 @@
 #ifndef __ARM_ARM32_MM_H__
 #define __ARM_ARM32_MM_H__
 
-#include <xen/percpu.h>
-
-#include <asm/lpae.h>
-
-DECLARE_PER_CPU(lpae_t *, xen_pgtable);
-
 /*
  * Only a limited amount of RAM, called xenheap, is always mapped on ARM32.
  * For convenience always return false.
@@ -16,8 +10,6 @@ static inline bool arch_mfns_in_directmap(unsigned long mfn, unsigned long nr)
     return false;
 }
 
-bool init_domheap_mappings(unsigned int cpu);
-
 static inline void arch_setup_page_tables(void)
 {
 }
diff --git a/xen/arch/arm/include/asm/domain_page.h b/xen/arch/arm/include/asm/domain_page.h
new file mode 100644
index 0000000000..e9f52685e2
--- /dev/null
+++ b/xen/arch/arm/include/asm/domain_page.h
@@ -0,0 +1,13 @@
+#ifndef __ASM_ARM_DOMAIN_PAGE_H__
+#define __ASM_ARM_DOMAIN_PAGE_H__
+
+#ifdef CONFIG_ARCH_MAP_DOMAIN_PAGE
+bool init_domheap_mappings(unsigned int cpu);
+#else
+static inline bool init_domheap_mappings(unsigned int cpu)
+{
+    return true;
+}
+#endif
+
+#endif /* __ASM_ARM_DOMAIN_PAGE_H__ */
diff --git a/xen/arch/arm/include/asm/mm.h b/xen/arch/arm/include/asm/mm.h
index 9a94d7eaf7..a76578a16f 100644
--- a/xen/arch/arm/include/asm/mm.h
+++ b/xen/arch/arm/include/asm/mm.h
@@ -2,6 +2,9 @@
 #define __ARCH_ARM_MM__
 
 #include <xen/kernel.h>
+#include <xen/percpu.h>
+
+#include <asm/lpae.h>
 #include <asm/page.h>
 #include <public/xen.h>
 #include <xen/pdx.h>
diff --git a/xen/arch/arm/include/asm/mmu/mm.h b/xen/arch/arm/include/asm/mmu/mm.h
index c5e03a66bf..c03c3a51e4 100644
--- a/xen/arch/arm/include/asm/mmu/mm.h
+++ b/xen/arch/arm/include/asm/mmu/mm.h
@@ -2,6 +2,8 @@
 #ifndef __ARM_MMU_MM_H__
 #define __ARM_MMU_MM_H__
 
+DECLARE_PER_CPU(lpae_t *, xen_pgtable);
+
 /* Non-boot CPUs use this to find the correct pagetables. */
 extern uint64_t init_ttbr;
 
diff --git a/xen/arch/arm/mmu/pt.c b/xen/arch/arm/mmu/pt.c
index a7755728ae..e772ab4e66 100644
--- a/xen/arch/arm/mmu/pt.c
+++ b/xen/arch/arm/mmu/pt.c
@@ -606,9 +606,9 @@ static int xen_pt_update(unsigned long virt,
     unsigned long left = nr_mfns;
 
     /*
-     * For arm32, page-tables are different on each CPUs. Yet, they share
-     * some common mappings. It is assumed that only common mappings
-     * will be modified with this function.
+     * Page-tables are different on each CPU. Yet, they share some common
+     * mappings. It is assumed that only common mappings will be modified
+     * with this function.
      *
      * XXX: Add a check.
      */
diff --git a/xen/arch/arm/mmu/setup.c b/xen/arch/arm/mmu/setup.c
index 57f1b46499..8c81e26da3 100644
--- a/xen/arch/arm/mmu/setup.c
+++ b/xen/arch/arm/mmu/setup.c
@@ -26,17 +26,15 @@
  * PCPUs.
  */
 
-#ifdef CONFIG_ARM_64
-DEFINE_PAGE_TABLE(xen_pgtable);
-static DEFINE_PAGE_TABLE(xen_first);
-#define THIS_CPU_PGTABLE xen_pgtable
-#else
 /* Per-CPU pagetable pages */
 /* xen_pgtable == root of the trie (zeroeth level on 64-bit, first on 32-bit) */
 DEFINE_PER_CPU(lpae_t *, xen_pgtable);
 #define THIS_CPU_PGTABLE this_cpu(xen_pgtable)
 /* Root of the trie for cpu0, other CPU's PTs are dynamically allocated */
 static DEFINE_PAGE_TABLE(cpu0_pgtable);
+
+#ifdef CONFIG_ARM_64
+static DEFINE_PAGE_TABLE(xen_first);
 #endif
 
 /* Common pagetable leaves */
@@ -228,19 +226,22 @@ void __init setup_pagetables(unsigned long boot_phys_offset)
     lpae_t pte, *p;
     int i;
 
+    p = cpu0_pgtable;
+
     phys_offset = boot_phys_offset;
 
+    /* arch_setup_page_tables() may need to access the root page-tables. */
+    per_cpu(xen_pgtable, 0) = cpu0_pgtable;
+
     arch_setup_page_tables();
 
 #ifdef CONFIG_ARM_64
     pte = pte_of_xenaddr((uintptr_t)xen_first);
     pte.pt.table = 1;
     pte.pt.xn = 0;
-    xen_pgtable[zeroeth_table_offset(XEN_VIRT_START)] = pte;
+    p[zeroeth_table_offset(XEN_VIRT_START)] = pte;
 
-    p = (void *) xen_first;
-#else
-    p = (void *) cpu0_pgtable;
+    p = xen_first;
 #endif
 
     /* Map xen second level page-table */
@@ -283,19 +284,11 @@ void __init setup_pagetables(unsigned long boot_phys_offset)
     pte.pt.table = 1;
     xen_second[second_table_offset(FIXMAP_ADDR(0))] = pte;
 
-#ifdef CONFIG_ARM_64
-    ttbr = (uintptr_t) xen_pgtable + phys_offset;
-#else
     ttbr = (uintptr_t) cpu0_pgtable + phys_offset;
-#endif
 
     switch_ttbr(ttbr);
 
     xen_pt_enforce_wnx();
-
-#ifdef CONFIG_ARM_32
-    per_cpu(xen_pgtable, 0) = cpu0_pgtable;
-#endif
 }
 
 void *__init arch_vmap_virt_end(void)
diff --git a/xen/arch/arm/mmu/smpboot.c b/xen/arch/arm/mmu/smpboot.c
index fb5df667ba..fdd9b9c580 100644
--- a/xen/arch/arm/mmu/smpboot.c
+++ b/xen/arch/arm/mmu/smpboot.c
@@ -7,6 +7,7 @@
 
 #include <xen/domain_page.h>
 
+#include <asm/domain_page.h>
 #include <asm/setup.h>
 
 /*
@@ -68,20 +69,6 @@ static void clear_boot_pagetables(void)
     clear_table(boot_third);
 }
 
-#ifdef CONFIG_ARM_64
-int prepare_secondary_mm(int cpu)
-{
-    clear_boot_pagetables();
-
-    /*
-     * Set init_ttbr for this CPU coming up. All CPUs share a single setof
-     * pagetables, but rewrite it each time for consistency with 32 bit.
-     */
-    init_ttbr = virt_to_maddr(xen_pgtable);
-    clean_dcache(init_ttbr);
-    return 0;
-}
-#else
 int prepare_secondary_mm(int cpu)
 {
     lpae_t *root = alloc_xenheap_page();
@@ -112,7 +99,6 @@ int prepare_secondary_mm(int cpu)
 
     return 0;
 }
-#endif
 
 /*
  * Local variables:
diff --git a/xen/arch/arm/setup.c b/xen/arch/arm/setup.c
index 7e28f62d09..3dec365c57 100644
--- a/xen/arch/arm/setup.c
+++ b/xen/arch/arm/setup.c
@@ -42,6 +42,7 @@
 #include <asm/gic.h>
 #include <asm/cpuerrata.h>
 #include <asm/cpufeature.h>
+#include <asm/domain_page.h>
 #include <asm/platform.h>
 #include <asm/procinfo.h>
 #include <asm/setup.h>
-- 
2.40.1



From xen-devel-bounces@lists.xenproject.org Tue Jan 16 19:08:45 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 16 Jan 2024 19:08:45 +0000
Received: from list by lists.xenproject.org with outflank-mailman.668036.1039912 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPonl-0001Xw-KA; Tue, 16 Jan 2024 19:08:45 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 668036.1039912; Tue, 16 Jan 2024 19:08:45 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPonl-0001Xp-Gp; Tue, 16 Jan 2024 19:08:45 +0000
Received: by outflank-mailman (input) for mailman id 668036;
 Tue, 16 Jan 2024 19:08:44 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=wmx9=I2=amazon.co.uk=prvs=738631f0b=eliasely@srs-se1.protection.inumbo.net>)
 id 1rPoXv-0002UD-Mb
 for xen-devel@lists.xenproject.org; Tue, 16 Jan 2024 18:52:23 +0000
Received: from smtp-fw-52004.amazon.com (smtp-fw-52004.amazon.com
 [52.119.213.154]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 6127d838-b4a0-11ee-98f1-6d05b1d4d9a1;
 Tue, 16 Jan 2024 19:52:22 +0100 (CET)
Received: from iad12-co-svc-p1-lb1-vlan2.amazon.com (HELO
 email-inbound-relay-pdx-2a-m6i4x-d47337e0.us-west-2.amazon.com) ([10.43.8.2])
 by smtp-border-fw-52004.iad7.amazon.com with
 ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 16 Jan 2024 18:52:20 +0000
Received: from smtpout.prod.us-east-1.prod.farcaster.email.amazon.dev
 (pdx2-ws-svc-p26-lb5-vlan3.pdx.amazon.com [10.39.38.70])
 by email-inbound-relay-pdx-2a-m6i4x-d47337e0.us-west-2.amazon.com (Postfix)
 with ESMTPS id BEA5160B82; Tue, 16 Jan 2024 18:52:18 +0000 (UTC)
Received: from EX19MTAUEB002.ant.amazon.com [10.0.44.209:11277]
 by smtpin.naws.us-east-1.prod.farcaster.email.amazon.dev [10.0.41.129:2525]
 with esmtp (Farcaster)
 id 0f1eb0ec-6a7f-4103-a81e-21febc958291; Tue, 16 Jan 2024 18:52:17 +0000 (UTC)
Received: from EX19D008UEA004.ant.amazon.com (10.252.134.191) by
 EX19MTAUEB002.ant.amazon.com (10.252.135.47) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1118.40; Tue, 16 Jan 2024 18:52:16 +0000
Received: from EX19MTAUWB001.ant.amazon.com (10.250.64.248) by
 EX19D008UEA004.ant.amazon.com (10.252.134.191) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1118.40; Tue, 16 Jan 2024 18:52:16 +0000
Received: from dev-dsk-eliasely-1a-fd74790f.eu-west-1.amazon.com
 (10.253.91.118) by mail-relay.amazon.com (10.250.64.254) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1118.40 via Frontend Transport; Tue, 16 Jan 2024 18:52:14 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 6127d838-b4a0-11ee-98f1-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
  d=amazon.com; i=@amazon.com; q=dns/txt; s=amazon201209;
  t=1705431142; x=1736967142;
  h=from:to:cc:subject:date:message-id:in-reply-to:
   references:mime-version:content-transfer-encoding;
  bh=RNtWDehKcdKd51zP4omQpNRTUkQx1O6KgQ+LUko8Hd0=;
  b=ZMNcmy6vt4QoLkqwWiUmDifSacuqbQlnspkwVzGFNrBF/mLt8kM9ilvc
   KG33e24yQpYK/yGaXEo+tou7m6w4V2VlTrW/dnn4qja8JQs7eiQWUqZSL
   SFOvyJiNqMleHHBGpP6pRqeVrCSS+t6PNdiuQmJ/H4dy2s9Z3OdbMEiCK
   4=;
X-IronPort-AV: E=Sophos;i="6.05,200,1701129600"; 
   d="scan'208";a="178391989"
X-Farcaster-Flow-ID: 0f1eb0ec-6a7f-4103-a81e-21febc958291
From: Elias El Yandouzi <eliasely@amazon.com>
To: <xen-devel@lists.xenproject.org>
CC: <julien@xen.org>, <pdurrant@amazon.com>, <dwmw@amazon.com>, Hongyan Xia
	<hongyxia@amazon.com>, Jan Beulich <jbeulich@suse.com>, Andrew Cooper
	<andrew.cooper3@citrix.com>, =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?=
	<roger.pau@citrix.com>, Wei Liu <wl@xen.org>, Julien Grall
	<jgrall@amazon.com>, Elias El Yandouzi <eliasely@amazon.com>
Subject: [PATCH v2] x86/setup: Do not create valid mappings when directmap=no
Date: Tue, 16 Jan 2024 18:50:50 +0000
Message-ID: <20240116185056.15000-22-eliasely@amazon.com>
X-Mailer: git-send-email 2.40.1
In-Reply-To: <20240116185056.15000-1-eliasely@amazon.com>
References: <20240116185056.15000-1-eliasely@amazon.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
Precedence: Bulk

From: Hongyan Xia <hongyxia@amazon.com>

Create empty mappings in the second e820 pass. Also, destroy existing
direct map mappings created in the first pass.

To make xenheap pages visible in guests, it is necessary to create empty
L3 tables in the direct map even when directmap=no, since guest cr3s
copy idle domain's L4 entries, which means they will share mappings in
the direct map if we pre-populate idle domain's L4 entries and L3
tables. A helper is introduced for this.

Also, after the direct map is actually gone, we need to stop updating
the direct map in update_xen_mappings().

Signed-off-by: Hongyan Xia <hongyxia@amazon.com>
Signed-off-by: Julien Grall <jgrall@amazon.com>
Signed-off-by: Elias El Yandouzi <eliasely@amazon.com>

diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
index 3b698c8c41..84c496ac4a 100644
--- a/xen/arch/x86/setup.c
+++ b/xen/arch/x86/setup.c
@@ -976,6 +976,57 @@ static struct domain *__init create_dom0(const module_t *image,
 /* How much of the directmap is prebuilt at compile time. */
 #define PREBUILT_MAP_LIMIT (1 << L2_PAGETABLE_SHIFT)
 
+/*
+ * This either populates a valid direct map, or allocates empty L3 tables and
+ * creates the L4 entries for virtual address between [start, end) in the
+ * direct map depending on has_directmap();
+ *
+ * When directmap=no, we still need to populate empty L3 tables in the
+ * direct map region. The reason is that on-demand xenheap mappings are
+ * created in the idle domain's page table but must be seen by
+ * everyone. Since all domains share the direct map L4 entries, they
+ * will share xenheap mappings if we pre-populate the L4 entries and L3
+ * tables in the direct map region for all RAM. We also rely on the fact
+ * that L3 tables are never freed.
+ */
+static void __init populate_directmap(uint64_t pstart, uint64_t pend,
+                                      unsigned int flags)
+{
+    unsigned long vstart = (unsigned long)__va(pstart);
+    unsigned long vend = (unsigned long)__va(pend);
+
+    if ( pstart >= pend )
+        return;
+
+    BUG_ON(vstart < DIRECTMAP_VIRT_START);
+    BUG_ON(vend > DIRECTMAP_VIRT_END);
+
+    if ( has_directmap() )
+        /* Populate valid direct map. */
+        BUG_ON(map_pages_to_xen(vstart, maddr_to_mfn(pstart),
+                                PFN_DOWN(pend - pstart), flags));
+    else
+    {
+        /* Create empty L3 tables. */
+        unsigned long vaddr = vstart & ~((1UL << L4_PAGETABLE_SHIFT) - 1);
+
+        for ( ; vaddr < vend; vaddr += (1UL << L4_PAGETABLE_SHIFT) )
+        {
+            l4_pgentry_t *pl4e = &idle_pg_table[l4_table_offset(vaddr)];
+
+            if ( !(l4e_get_flags(*pl4e) & _PAGE_PRESENT) )
+            {
+                mfn_t mfn = alloc_boot_pages(1, 1);
+                void *v = map_domain_page(mfn);
+
+                clear_page(v);
+                UNMAP_DOMAIN_PAGE(v);
+                l4e_write(pl4e, l4e_from_mfn(mfn, __PAGE_HYPERVISOR));
+            }
+        }
+    }
+}
+
 void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
 {
     const char *memmap_type = NULL, *loader, *cmdline = "";
@@ -1596,8 +1647,17 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
         map_e = min_t(uint64_t, e,
                       ARRAY_SIZE(l2_directmap) << L2_PAGETABLE_SHIFT);
 
-        /* Pass mapped memory to allocator /before/ creating new mappings. */
+        /*
+         * Pass mapped memory to allocator /before/ creating new mappings.
+         * The direct map for the bottom 4GiB has been populated in the first
+         * e820 pass. In the second pass, we make sure those existing mappings
+         * are destroyed when directmap=no.
+         */
         init_boot_pages(s, min(map_s, e));
+        if ( !has_directmap() )
+            destroy_xen_mappings((unsigned long)__va(s),
+                                 (unsigned long)__va(min(map_s, e)));
+
         s = map_s;
         if ( s < map_e )
         {
@@ -1605,6 +1665,9 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
             map_s = (s + mask) & ~mask;
             map_e &= ~mask;
             init_boot_pages(map_s, map_e);
+            if ( !has_directmap() )
+                destroy_xen_mappings((unsigned long)__va(map_s),
+                                     (unsigned long)__va(map_e));
         }
 
         if ( map_s > map_e )
@@ -1618,8 +1681,7 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
 
             if ( map_e < end )
             {
-                map_pages_to_xen((unsigned long)__va(map_e), maddr_to_mfn(map_e),
-                                 PFN_DOWN(end - map_e), PAGE_HYPERVISOR);
+                populate_directmap(map_e, end, PAGE_HYPERVISOR);
                 init_boot_pages(map_e, end);
                 map_e = end;
             }
@@ -1628,13 +1690,11 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
         {
             /* This range must not be passed to the boot allocator and
              * must also not be mapped with _PAGE_GLOBAL. */
-            map_pages_to_xen((unsigned long)__va(map_e), maddr_to_mfn(map_e),
-                             PFN_DOWN(e - map_e), __PAGE_HYPERVISOR_RW);
+            populate_directmap(map_e, e, __PAGE_HYPERVISOR_RW);
         }
         if ( s < map_s )
         {
-            map_pages_to_xen((unsigned long)__va(s), maddr_to_mfn(s),
-                             PFN_DOWN(map_s - s), PAGE_HYPERVISOR);
+            populate_directmap(s, map_s, PAGE_HYPERVISOR);
             init_boot_pages(s, map_s);
         }
     }
-- 
2.40.1



From xen-devel-bounces@lists.xenproject.org Tue Jan 16 19:13:08 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 16 Jan 2024 19:13:08 +0000
Received: from list by lists.xenproject.org with outflank-mailman.668060.1039931 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPorw-0004qx-BA; Tue, 16 Jan 2024 19:13:04 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 668060.1039931; Tue, 16 Jan 2024 19:13:04 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPorw-0004qq-7m; Tue, 16 Jan 2024 19:13:04 +0000
Received: by outflank-mailman (input) for mailman id 668060;
 Tue, 16 Jan 2024 19:13:02 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=wmx9=I2=amazon.co.uk=prvs=738631f0b=eliasely@srs-se1.protection.inumbo.net>)
 id 1rPoXu-0002UD-Ne
 for xen-devel@lists.xenproject.org; Tue, 16 Jan 2024 18:52:22 +0000
Received: from smtp-fw-6001.amazon.com (smtp-fw-6001.amazon.com [52.95.48.154])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 6111cb44-b4a0-11ee-98f1-6d05b1d4d9a1;
 Tue, 16 Jan 2024 19:52:22 +0100 (CET)
Received: from iad12-co-svc-p1-lb1-vlan2.amazon.com (HELO
 email-inbound-relay-iad-1a-m6i4x-617e30c2.us-east-1.amazon.com) ([10.43.8.2])
 by smtp-border-fw-6001.iad6.amazon.com with
 ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 16 Jan 2024 18:52:21 +0000
Received: from smtpout.prod.us-east-1.prod.farcaster.email.amazon.dev
 (iad7-ws-svc-p70-lb3-vlan2.iad.amazon.com [10.32.235.34])
 by email-inbound-relay-iad-1a-m6i4x-617e30c2.us-east-1.amazon.com (Postfix)
 with ESMTPS id 9AAA1693DD; Tue, 16 Jan 2024 18:52:18 +0000 (UTC)
Received: from EX19MTAUEB001.ant.amazon.com [10.0.44.209:29814]
 by smtpin.naws.us-east-1.prod.farcaster.email.amazon.dev [10.0.57.22:2525]
 with esmtp (Farcaster)
 id 180acf2c-dc78-4ccd-a737-249d135ec91b; Tue, 16 Jan 2024 18:52:18 +0000 (UTC)
Received: from EX19D008UEC004.ant.amazon.com (10.252.135.170) by
 EX19MTAUEB001.ant.amazon.com (10.252.135.108) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1118.40; Tue, 16 Jan 2024 18:52:12 +0000
Received: from EX19MTAUWB001.ant.amazon.com (10.250.64.248) by
 EX19D008UEC004.ant.amazon.com (10.252.135.170) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1118.40; Tue, 16 Jan 2024 18:52:11 +0000
Received: from dev-dsk-eliasely-1a-fd74790f.eu-west-1.amazon.com
 (10.253.91.118) by mail-relay.amazon.com (10.250.64.254) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1118.40 via Frontend Transport; Tue, 16 Jan 2024 18:52:10 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 6111cb44-b4a0-11ee-98f1-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
  d=amazon.com; i=@amazon.com; q=dns/txt; s=amazon201209;
  t=1705431143; x=1736967143;
  h=from:to:cc:subject:date:message-id:in-reply-to:
   references:mime-version:content-transfer-encoding;
  bh=fVoEyNUTrAzw7YTY+W9724IaRNR5eJ6bcUYtN3Z0rYg=;
  b=YeUeEJfJDbGgM+/EUyvvDZftEyBzIAtb31AgL7NYA9PeOwa5P0Bup5Dz
   GiVitK+4jGMofgply68Lb5F3J9N44MrkOg/WLJwRHUpYO7QjCQ7WSJMzS
   k/qQC+zls5EW9FOm6Tl1FUOZsCrGxnL2aRsziHfI2berWCibhSC/khddG
   Q=;
X-IronPort-AV: E=Sophos;i="6.05,200,1701129600"; 
   d="scan'208";a="382569755"
X-Farcaster-Flow-ID: 180acf2c-dc78-4ccd-a737-249d135ec91b
From: Elias El Yandouzi <eliasely@amazon.com>
To: <xen-devel@lists.xenproject.org>
CC: <julien@xen.org>, <pdurrant@amazon.com>, <dwmw@amazon.com>, Hongyan Xia
	<hongyxia@amazon.com>, Jan Beulich <jbeulich@suse.com>, Andrew Cooper
	<andrew.cooper3@citrix.com>, =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?=
	<roger.pau@citrix.com>, Wei Liu <wl@xen.org>, Julien Grall
	<jgrall@amazon.com>, Elias El Yandouzi <eliasely@amazon.com>
Subject: [PATCH v2] x86/setup: Leave early boot slightly earlier
Date: Tue, 16 Jan 2024 18:50:48 +0000
Message-ID: <20240116185056.15000-20-eliasely@amazon.com>
X-Mailer: git-send-email 2.40.1
In-Reply-To: <20240116185056.15000-1-eliasely@amazon.com>
References: <20240116185056.15000-1-eliasely@amazon.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
Precedence: Bulk

From: Hongyan Xia <hongyxia@amazon.com>

When we do not have a direct map, memory for metadata of heap nodes in
init_node_heap() is allocated from xenheap, which needs to be mapped and
unmapped on demand. However, we cannot just take memory from the boot
allocator to create the PTEs while we are passing memory to the heap
allocator.

To solve this race, we leave early boot slightly sooner so that Xen PTE
pages are allocated from the heap instead of the boot allocator. We can
do this because the metadata for the 1st node is statically allocated,
and by the time we need memory to create mappings for the 2nd node, we
already have enough memory in the heap allocator in the 1st node.

Signed-off-by: Hongyan Xia <hongyxia@amazon.com>
Signed-off-by: Julien Grall <jgrall@amazon.com>
Signed-off-by: Elias El Yandouzi <eliasely@amazon.com>

diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
index b813ea75b5..3b698c8c41 100644
--- a/xen/arch/x86/setup.c
+++ b/xen/arch/x86/setup.c
@@ -1746,6 +1746,22 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
 
     numa_initmem_init(0, raw_max_page);
 
+    /*
+     * When we do not have a direct map, memory for metadata of heap nodes in
+     * init_node_heap() is allocated from xenheap, which needs to be mapped and
+     * unmapped on demand. However, we cannot just take memory from the boot
+     * allocator to create the PTEs while we are passing memory to the heap
+     * allocator during end_boot_allocator().
+     *
+     * To solve this race, we need to leave early boot before
+     * end_boot_allocator() so that Xen PTE pages are allocated from the heap
+     * instead of the boot allocator. We can do this because the metadata for
+     * the 1st node is statically allocated, and by the time we need memory to
+     * create mappings for the 2nd node, we already have enough memory in the
+     * heap allocator in the 1st node.
+     */
+    system_state = SYS_STATE_boot;
+
     if ( max_page - 1 > virt_to_mfn(HYPERVISOR_VIRT_END - 1) )
     {
         unsigned long lo = virt_to_mfn(HYPERVISOR_VIRT_END - 1);
@@ -1777,8 +1793,6 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
     else
         end_boot_allocator();
 
-    system_state = SYS_STATE_boot;
-
     bsp_stack = cpu_alloc_stack(0);
     if ( !bsp_stack )
         panic("No memory for BSP stack\n");
-- 
2.40.1



From xen-devel-bounces@lists.xenproject.org Tue Jan 16 19:13:08 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 16 Jan 2024 19:13:08 +0000
Received: from list by lists.xenproject.org with outflank-mailman.668059.1039921 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPorv-0004cm-3t; Tue, 16 Jan 2024 19:13:03 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 668059.1039921; Tue, 16 Jan 2024 19:13:03 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPorv-0004cf-1K; Tue, 16 Jan 2024 19:13:03 +0000
Received: by outflank-mailman (input) for mailman id 668059;
 Tue, 16 Jan 2024 19:13:02 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=wmx9=I2=amazon.co.uk=prvs=738631f0b=eliasely@srs-se1.protection.inumbo.net>)
 id 1rPoXw-0002UD-Mq
 for xen-devel@lists.xenproject.org; Tue, 16 Jan 2024 18:52:24 +0000
Received: from smtp-fw-52005.amazon.com (smtp-fw-52005.amazon.com
 [52.119.213.156]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 619d8625-b4a0-11ee-98f1-6d05b1d4d9a1;
 Tue, 16 Jan 2024 19:52:23 +0100 (CET)
Received: from iad12-co-svc-p1-lb1-vlan3.amazon.com (HELO
 email-inbound-relay-iad-1e-m6i4x-0aba4706.us-east-1.amazon.com) ([10.43.8.6])
 by smtp-border-fw-52005.iad7.amazon.com with
 ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 16 Jan 2024 18:52:22 +0000
Received: from smtpout.prod.us-east-1.prod.farcaster.email.amazon.dev
 (iad7-ws-svc-p70-lb3-vlan2.iad.amazon.com [10.32.235.34])
 by email-inbound-relay-iad-1e-m6i4x-0aba4706.us-east-1.amazon.com (Postfix)
 with ESMTPS id 2FE4FA0ED5; Tue, 16 Jan 2024 18:52:20 +0000 (UTC)
Received: from EX19MTAUEC002.ant.amazon.com [10.0.29.78:41078]
 by smtpin.naws.us-east-1.prod.farcaster.email.amazon.dev [10.0.19.196:2525]
 with esmtp (Farcaster)
 id 76654dc6-3e90-4ae2-a28f-2f4b7d2b4bbf; Tue, 16 Jan 2024 18:52:19 +0000 (UTC)
Received: from EX19D008UEA004.ant.amazon.com (10.252.134.191) by
 EX19MTAUEC002.ant.amazon.com (10.252.135.253) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1118.40; Tue, 16 Jan 2024 18:52:07 +0000
Received: from EX19MTAUWB001.ant.amazon.com (10.250.64.248) by
 EX19D008UEA004.ant.amazon.com (10.252.134.191) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1118.40; Tue, 16 Jan 2024 18:52:07 +0000
Received: from dev-dsk-eliasely-1a-fd74790f.eu-west-1.amazon.com
 (10.253.91.118) by mail-relay.amazon.com (10.250.64.254) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1118.40 via Frontend Transport; Tue, 16 Jan 2024 18:52:05 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 619d8625-b4a0-11ee-98f1-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
  d=amazon.com; i=@amazon.com; q=dns/txt; s=amazon201209;
  t=1705431143; x=1736967143;
  h=from:to:cc:subject:date:message-id:in-reply-to:
   references:mime-version:content-transfer-encoding;
  bh=Xc4KQdAGUonE6oCgkT6a8PPvVb9mrXzRPtcULUVgVPo=;
  b=PgSCQ0OsKbWQS+54CYTZMP3P2VF/uOczeTcfGaEIUGBDyv/+U1yo9KrD
   aYESblQplT+NvViFKsIfj45y234oN9eMdLPv8bciLdDIN5NPeIxwGIB+l
   izKs+ajdBVEqeI3q+IseB8zMRT8wccMyRk1z7zMZxPckDn0UXIOaWelqQ
   s=;
X-IronPort-AV: E=Sophos;i="6.05,200,1701129600"; 
   d="scan'208";a="627976436"
X-Farcaster-Flow-ID: 76654dc6-3e90-4ae2-a28f-2f4b7d2b4bbf
From: Elias El Yandouzi <eliasely@amazon.com>
To: <xen-devel@lists.xenproject.org>
CC: <julien@xen.org>, <pdurrant@amazon.com>, <dwmw@amazon.com>, Hongyan Xia
	<hongyxia@amazon.com>, Jan Beulich <jbeulich@suse.com>, Andrew Cooper
	<andrew.cooper3@citrix.com>, =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?=
	<roger.pau@citrix.com>, Wei Liu <wl@xen.org>, Julien Grall
	<jgrall@amazon.com>
Subject: [PATCH v2] x86/domain_page: Remove the fast paths when mfn is not in the directmap
Date: Tue, 16 Jan 2024 18:50:46 +0000
Message-ID: <20240116185056.15000-18-eliasely@amazon.com>
X-Mailer: git-send-email 2.40.1
In-Reply-To: <20240116185056.15000-1-eliasely@amazon.com>
References: <20240116185056.15000-1-eliasely@amazon.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
Precedence: Bulk

From: Hongyan Xia <hongyxia@amazon.com>

When mfn is not in direct map, never use mfn_to_virt for any mappings.

We replace mfn_x(mfn) <= PFN_DOWN(__pa(HYPERVISOR_VIRT_END - 1)) with
arch_mfns_in_direct_map(mfn, 1) because these two are equivalent. The
extra comparison in arch_mfns_in_direct_map() looks different but because
DIRECTMAP_VIRT_END is always higher, it does not make any difference.

Lastly, domain_page_map_to_mfn() needs to gain to a special case for
the PMAP.

Signed-off-by: Hongyan Xia <hongyxia@amazon.com>
Signed-off-by: Julien Grall <jgrall@amazon.com>

----

    Changes since Hongyan's version:
        * arch_mfn_in_direct_map() was renamed to arch_mfns_in_directmap()
        * add a special case for the PMAP in domain_page_map_to_mfn()

diff --git a/xen/arch/x86/domain_page.c b/xen/arch/x86/domain_page.c
index 55e337aaf7..89caefc8a2 100644
--- a/xen/arch/x86/domain_page.c
+++ b/xen/arch/x86/domain_page.c
@@ -14,8 +14,10 @@
 #include <xen/sched.h>
 #include <xen/vmap.h>
 #include <asm/current.h>
+#include <asm/fixmap.h>
 #include <asm/flushtlb.h>
 #include <asm/hardirq.h>
+#include <asm/pmap.h>
 #include <asm/setup.h>
 
 static DEFINE_PER_CPU(struct vcpu *, override);
@@ -35,10 +37,11 @@ static inline struct vcpu *mapcache_current_vcpu(void)
     /*
      * When using efi runtime page tables, we have the equivalent of the idle
      * domain's page tables but current may point at another domain's VCPU.
-     * Return NULL as though current is not properly set up yet.
+     * Return the idle domains's vcpu on that core because the efi per-domain
+     * region (where the mapcache is) is in-sync with the idle domain.
      */
     if ( efi_rs_using_pgtables() )
-        return NULL;
+        return idle_vcpu[smp_processor_id()];
 
     /*
      * If guest_table is NULL, and we are running a paravirtualised guest,
@@ -77,18 +80,24 @@ void *map_domain_page(mfn_t mfn)
     struct vcpu_maphash_entry *hashent;
 
 #ifdef NDEBUG
-    if ( mfn_x(mfn) <= PFN_DOWN(__pa(HYPERVISOR_VIRT_END - 1)) )
+    if ( arch_mfns_in_directmap(mfn_x(mfn), 1) )
         return mfn_to_virt(mfn_x(mfn));
 #endif
 
     v = mapcache_current_vcpu();
-    if ( !v )
-        return mfn_to_virt(mfn_x(mfn));
+    if ( !v || !v->domain->arch.mapcache.inuse )
+    {
+        if ( arch_mfns_in_directmap(mfn_x(mfn), 1) )
+            return mfn_to_virt(mfn_x(mfn));
+        else
+        {
+            BUG_ON(system_state >= SYS_STATE_smp_boot);
+            return pmap_map(mfn);
+        }
+    }
 
     dcache = &v->domain->arch.mapcache;
     vcache = &v->arch.mapcache;
-    if ( !dcache->inuse )
-        return mfn_to_virt(mfn_x(mfn));
 
     perfc_incr(map_domain_page_count);
 
@@ -184,6 +193,12 @@ void unmap_domain_page(const void *ptr)
     if ( !va || va >= DIRECTMAP_VIRT_START )
         return;
 
+    if ( va >= FIXADDR_START && va < FIXADDR_TOP )
+    {
+        pmap_unmap((void *)ptr);
+        return;
+    }
+
     ASSERT(va >= MAPCACHE_VIRT_START && va < MAPCACHE_VIRT_END);
 
     v = mapcache_current_vcpu();
@@ -237,7 +252,7 @@ int mapcache_domain_init(struct domain *d)
     unsigned int bitmap_pages;
 
 #ifdef NDEBUG
-    if ( !mem_hotplug && max_page <= PFN_DOWN(__pa(HYPERVISOR_VIRT_END - 1)) )
+    if ( !mem_hotplug && arch_mfn_in_directmap(0, max_page) )
         return 0;
 #endif
 
@@ -308,7 +323,7 @@ void *map_domain_page_global(mfn_t mfn)
             local_irq_is_enabled()));
 
 #ifdef NDEBUG
-    if ( mfn_x(mfn) <= PFN_DOWN(__pa(HYPERVISOR_VIRT_END - 1)) )
+    if ( arch_mfn_in_directmap(mfn_x(mfn, 1)) )
         return mfn_to_virt(mfn_x(mfn));
 #endif
 
@@ -335,6 +350,23 @@ mfn_t domain_page_map_to_mfn(const void *ptr)
     if ( va >= DIRECTMAP_VIRT_START )
         return _mfn(virt_to_mfn(ptr));
 
+    /*
+     * The fixmap is stealing the top-end of the VMAP. So the check for
+     * the PMAP *must* happen first.
+     *
+     * Also, the fixmap translate a slot to an address backwards. The
+     * logic will rely on it to avoid any complexity. So check at
+     * compile time this will always hold.
+    */
+    BUILD_BUG_ON(fix_to_virt(FIX_PMAP_BEGIN) < fix_to_virt(FIX_PMAP_END));
+
+    if ( ((unsigned long)fix_to_virt(FIX_PMAP_END) <= va) &&
+         ((va & PAGE_MASK) <= (unsigned long)fix_to_virt(FIX_PMAP_BEGIN)) )
+    {
+        BUG_ON(system_state >= SYS_STATE_smp_boot);
+        return l1e_get_mfn(l1_fixmap[l1_table_offset(va)]);
+    }
+
     if ( va >= VMAP_VIRT_START && va < VMAP_VIRT_END )
         return vmap_to_mfn(va);
 
-- 
2.40.1



From xen-devel-bounces@lists.xenproject.org Tue Jan 16 19:23:07 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 16 Jan 2024 19:23:07 +0000
Received: from list by lists.xenproject.org with outflank-mailman.668072.1039941 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPp1Z-0000yV-7l; Tue, 16 Jan 2024 19:23:01 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 668072.1039941; Tue, 16 Jan 2024 19:23:01 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPp1Z-0000yO-4n; Tue, 16 Jan 2024 19:23:01 +0000
Received: by outflank-mailman (input) for mailman id 668072;
 Tue, 16 Jan 2024 19:22:59 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=wmx9=I2=amazon.co.uk=prvs=738631f0b=eliasely@srs-se1.protection.inumbo.net>)
 id 1rPp1X-0000wu-Cs
 for xen-devel@lists.xenproject.org; Tue, 16 Jan 2024 19:22:59 +0000
Received: from smtp-fw-2101.amazon.com (smtp-fw-2101.amazon.com [72.21.196.25])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id a664b36f-b4a4-11ee-9b0f-b553b5be7939;
 Tue, 16 Jan 2024 20:22:56 +0100 (CET)
Received: from iad12-co-svc-p1-lb1-vlan3.amazon.com (HELO
 email-inbound-relay-pdx-2a-m6i4x-d47337e0.us-west-2.amazon.com) ([10.43.8.6])
 by smtp-border-fw-2101.iad2.amazon.com with
 ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 16 Jan 2024 19:22:53 +0000
Received: from smtpout.prod.us-west-2.prod.farcaster.email.amazon.dev
 (pdx2-ws-svc-p26-lb5-vlan3.pdx.amazon.com [10.39.38.70])
 by email-inbound-relay-pdx-2a-m6i4x-d47337e0.us-west-2.amazon.com (Postfix)
 with ESMTPS id 60E0E60B82; Tue, 16 Jan 2024 19:22:50 +0000 (UTC)
Received: from EX19MTAEUA002.ant.amazon.com [10.0.10.100:15760]
 by smtpin.naws.eu-west-1.prod.farcaster.email.amazon.dev [10.0.15.33:2525]
 with esmtp (Farcaster)
 id c3dc06f3-32e8-49d9-b4bd-df4f54ca3cfa; Tue, 16 Jan 2024 19:22:49 +0000 (UTC)
Received: from EX19D018EUA002.ant.amazon.com (10.252.50.146) by
 EX19MTAEUA002.ant.amazon.com (10.252.50.126) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1118.40; Tue, 16 Jan 2024 19:22:49 +0000
Received: from [192.168.5.225] (10.106.82.9) by EX19D018EUA002.ant.amazon.com
 (10.252.50.146) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1118.40; Tue, 16 Jan
 2024 19:22:44 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: a664b36f-b4a4-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
  d=amazon.com; i=@amazon.com; q=dns/txt; s=amazon201209;
  t=1705432977; x=1736968977;
  h=message-id:date:mime-version:from:subject:to:cc:
   references:in-reply-to:content-transfer-encoding;
  bh=AuLzXeX36TLgXV2GPuxrvRIfMSWCpkV7NcB/bbiERDQ=;
  b=Vk/W3JsKNmZwZxdcOaB+MgQiVHEclDuHKZOh9dRvda8Rczs6V+rfyO+P
   /LR5Adg0OBuZWMACm3n1GrpGC9p1ItwD9oRzb2V8axaLapGNvelYmIyNM
   pyulsEiCMg0u6TyKZBJUMe6rFHvOlEGqtuk60y/yceCemdDvKBYDrK9o4
   U=;
X-IronPort-AV: E=Sophos;i="6.05,200,1701129600"; 
   d="scan'208";a="374794319"
X-Farcaster-Flow-ID: c3dc06f3-32e8-49d9-b4bd-df4f54ca3cfa
Message-ID: <0175ab53-171a-4d40-a52d-ae07c4edb297@amazon.com>
Date: Tue, 16 Jan 2024 19:22:40 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
From: Elias El Yandouzi <eliasely@amazon.com>
Subject: Re: [PATCH v2] Remove the directmap
To: <xen-devel@lists.xenproject.org>
CC: <julien@xen.org>, <pdurrant@amazon.com>, <dwmw@amazon.com>, Andrew Cooper
	<andrew.cooper3@citrix.com>, George Dunlap <george.dunlap@citrix.com>, "Jan
 Beulich" <jbeulich@suse.com>, Stefano Stabellini <sstabellini@kernel.org>,
	"Wei Liu" <wl@xen.org>, Bertrand Marquis <bertrand.marquis@arm.com>, Michal
 Orzel <michal.orzel@amd.com>, Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
	=?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>, Lukasz Hawrylko
	<lukasz@hawrylko.pl>, "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	=?UTF-8?Q?Mateusz_M=C3=B3wka?= <mateusz.mowka@intel.com>
References: <20240116185056.15000-1-eliasely@amazon.com>
Content-Language: en-US
In-Reply-To: <20240116185056.15000-1-eliasely@amazon.com>
Content-Type: text/plain; charset="UTF-8"; format=flowed
Content-Transfer-Encoding: 7bit
X-Originating-IP: [10.106.82.9]
X-ClientProxiedBy: EX19D035UWB001.ant.amazon.com (10.13.138.33) To
 EX19D018EUA002.ant.amazon.com (10.252.50.146)
Precedence: Bulk

Hi,

Newbie mistake, I didn't number the patches, I'll resend the series.

Sorry for the noise.

On 16/01/2024 18:50, Elias El Yandouzi wrote:
> Hi all,
> 
> A few years ago, Wei Liu implemented a PoC to remove the directmap
> from Xen. The last version was sent by Hongyan Xia [1].
> 
> I will start with thanking both Wei and Hongyan for the initial work
> to upstream the feature. A lot of patches already went in and this is
> the last few patches missing to effectively enable the feature.
> 
> === What is the directmap? ===
> 
> At the moment, on both arm64 and x86, most of the RAM is mapped
> in Xen address space. This means that domain memory is easily
> accessible in Xen.
> 
> === Why do we want to remove the directmap? ===
> 
> (Summarizing my understanding of the previous discussion)
> 
> Speculation attacks (like Spectre SP1) rely on loading piece of memory
> in the cache. If the region is not mapped then it can't be loaded.
> 
> So removing reducing the amount of memory mapped in Xen will also
> reduce the surface attack.
> 
> === What's the performance impact? ===
> 
> As the guest memory is not always mapped, then the cost of mapping
> will increase. I haven't done the numbers with this new version, but
> some measurement were provided in the previous version for x86.
> 
> === Improvement possible ===
> 
> The known area to improve on x86 are:
>     * Mapcache: There was a patch sent by Hongyan:
>       https://lore.kernel.org/xen-devel/4058e92ce21627731c49b588a95809dc0affd83a.1581015491.git.hongyxia@amazon.com/
>     * EPT: At the moment an guest page-tabel walk requires about 20 map/unmap.
>       This will have an very high impact on the performance. We need to decide
>       whether keep the EPT always mapped is a problem
> 
> The original series didn't have support for Arm64. But as there were
> some interest, I have provided a PoC.
> 
> There are more extra work for Arm64:
>     * The mapcache is quite simple. We would investigate the performance
>     * The mapcache should be made compliant to the Arm Arm (this is now
>       more critical).
>     * We will likely have the same problem as for the EPT.
>     * We have no support for merging table to a superpage, neither
>       free empty page-tables. (See more below)
> 
> === Implementation ===
> 
> The subject is probably a misnomer. The directmap is still present but
> the RAM is not mapped by default. Instead, the region will still be used
> to map pages allocate via alloc_xenheap_pages().
> 
> The advantage is the solution is simple (so IHMO good enough for been
> merged as a tech preview). The disadvantage is the page allocator is not
> trying to keep all the xenheap pages together. So we may end up to have
> an increase of page table usage.
> 
> In the longer term, we should consider to remove the direct map
> completely and switch to vmap(). The main problem with this approach
> is it is frequent to use mfn_to_virt() in the code. So we would need
> to cache the mapping (maybe in the struct page_info).
> 
> === Why arm32 is not covered? ===
> 
> On Arm32, the domheap and xenheap is always separated. So by design
> the guest memory is not mapped by default.
> 
> At this stage, it seems unnecessary to have to map/unmap xenheap pages
> every time they are allocated.
> 
> === Why not using a separate domheap and xenheap? ===
> 
> While a separate xenheap/domheap reduce the page-table usage (all
> xenheap pages are contiguous and could be always mapped), it is also
> currently less scalable because the split is fixed at boot time (XXX:
> Can this be dynamic?).
> 
> === Future of secret-free hypervisor ===
> 
> There are some information in an e-mail from Andrew a few years ago:
> 
> https://lore.kernel.org/xen-devel/e3219697-0759-39fc-2486-715cdec1ca9e@citrix.com/
> 
> Cheers,
> 
> [1] https://lore.kernel.org/xen-devel/cover.1588278317.git.hongyxia@amazon.com/
> 
> *** BLURB HERE ***
> 
> Elias El Yandouzi (3):
>    xen/x86: Add build assertion for fixmap entries
>    Rename mfn_to_virt() calls
>    Rename maddr_to_virt() calls
> 
> Hongyan Xia (13):
>    acpi: vmap pages in acpi_os_alloc_memory
>    xen/numa: vmap the pages for memnodemap
>    x86/srat: vmap the pages for acpi_slit
>    x86: Map/unmap pages in restore_all_guests
>    x86/pv: Rewrite how building PV dom0 handles domheap mappings
>    x86/pv: Map L4 page table for shim domain
>    x86/mapcache: Initialise the mapcache for the idle domain
>    x86: Add a boot option to enable and disable the direct map
>    x86/domain_page: Remove the fast paths when mfn is not in the
>      directmap
>    xen/page_alloc: Add a path for xenheap when there is no direct map
>    x86/setup: Leave early boot slightly earlier
>    x86/setup: vmap heap nodes when they are outside the direct map
>    x86/setup: Do not create valid mappings when directmap=no
> 
> Julien Grall (8):
>    xen/vmap: Check the page has been mapped in vm_init_type()
>    xen/vmap: Introduce vmap_size() and use it
>    xen/arm: fixmap: Rename the fixmap slots to follow the x86 convention
>    xen/x86: Add support for the PMAP
>    xen/arm32: mm: Rename 'first' to 'root' in init_secondary_pagetables()
>    xen/arm64: mm: Use per-pCPU page-tables
>    xen/arm64: Implement a mapcache for arm64
>    xen/arm64: Allow the admin to enable/disable the directmap
> 
> Wei Liu (3):
>    x86/setup: Move vm_init() before acpi calls
>    x86/pv: Domheap pages should be mapped while relocating initrd
>    x86: Lift mapcache variable to the arch level
> 
>   docs/misc/xen-command-line.pandoc             |  12 ++
>   xen/arch/arm/Kconfig                          |   3 +-
>   xen/arch/arm/acpi/lib.c                       |  18 +--
>   xen/arch/arm/arm64/mmu/mm.c                   |  45 +++++-
>   xen/arch/arm/domain_page.c                    |  50 ++++++-
>   xen/arch/arm/include/asm/arm32/mm.h           |   8 --
>   xen/arch/arm/include/asm/arm64/mm.h           |   7 +-
>   xen/arch/arm/include/asm/domain_page.h        |  13 ++
>   xen/arch/arm/include/asm/early_printk.h       |   2 +-
>   xen/arch/arm/include/asm/fixmap.h             |  16 +--
>   xen/arch/arm/include/asm/mm.h                 |   9 ++
>   xen/arch/arm/include/asm/mmu/layout.h         |  13 +-
>   xen/arch/arm/include/asm/mmu/mm.h             |   2 +
>   xen/arch/arm/mm.c                             |   1 +
>   xen/arch/arm/mmu/pt.c                         |  12 +-
>   xen/arch/arm/mmu/setup.c                      |  33 ++---
>   xen/arch/arm/mmu/smpboot.c                    |  32 ++---
>   xen/arch/arm/setup.c                          |   6 +-
>   xen/arch/x86/Kconfig                          |   2 +
>   xen/arch/x86/dmi_scan.c                       |   4 +-
>   xen/arch/x86/domain.c                         |  12 +-
>   xen/arch/x86/domain_page.c                    |  74 +++++++---
>   xen/arch/x86/hvm/dom0_build.c                 |   4 +-
>   xen/arch/x86/include/asm/config.h             |  12 +-
>   xen/arch/x86/include/asm/domain.h             |  13 +-
>   xen/arch/x86/include/asm/fixmap.h             |   9 ++
>   .../x86/include/asm/mach-default/bios_ebda.h  |   2 +-
>   xen/arch/x86/include/asm/mm.h                 |  10 +-
>   xen/arch/x86/include/asm/page.h               |   8 +-
>   xen/arch/x86/include/asm/pmap.h               |  25 ++++
>   xen/arch/x86/include/asm/x86_64/page.h        |   2 +-
>   xen/arch/x86/mm.c                             |  18 ++-
>   xen/arch/x86/mpparse.c                        |   2 +-
>   xen/arch/x86/pv/dom0_build.c                  |  73 +++++++---
>   xen/arch/x86/pv/domain.c                      |  34 +++++
>   xen/arch/x86/setup.c                          | 129 +++++++++++++++---
>   xen/arch/x86/srat.c                           |   4 +-
>   xen/arch/x86/tboot.c                          |   2 +-
>   xen/arch/x86/x86_64/asm-offsets.c             |   1 +
>   xen/arch/x86/x86_64/entry.S                   |   8 ++
>   xen/arch/x86/x86_64/mm.c                      |  26 ++--
>   xen/common/Kconfig                            |  17 +++
>   xen/common/efi/boot.c                         |  23 ++--
>   xen/common/numa.c                             |   9 +-
>   xen/common/page_alloc.c                       |  89 ++++++++++--
>   xen/common/pmap.c                             |   8 +-
>   xen/common/trace.c                            |   8 +-
>   xen/common/vmap.c                             |  62 ++++++---
>   xen/drivers/acpi/osl.c                        |  14 +-
>   xen/include/xen/mm.h                          |   7 +
>   xen/include/xen/vmap.h                        |   4 +
>   51 files changed, 753 insertions(+), 244 deletions(-)
>   create mode 100644 xen/arch/arm/include/asm/domain_page.h
>   create mode 100644 xen/arch/x86/include/asm/pmap.h
> 

-- 
Elias


From xen-devel-bounces@lists.xenproject.org Tue Jan 16 19:26:26 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 16 Jan 2024 19:26:26 +0000
Received: from list by lists.xenproject.org with outflank-mailman.668077.1039952 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPp4q-0002iZ-Qn; Tue, 16 Jan 2024 19:26:24 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 668077.1039952; Tue, 16 Jan 2024 19:26:24 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPp4q-0002iS-MW; Tue, 16 Jan 2024 19:26:24 +0000
Received: by outflank-mailman (input) for mailman id 668077;
 Tue, 16 Jan 2024 19:26:23 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=wmx9=I2=amazon.co.uk=prvs=738631f0b=eliasely@srs-se1.protection.inumbo.net>)
 id 1rPp4p-0002iI-Ry
 for xen-devel@lists.xenproject.org; Tue, 16 Jan 2024 19:26:23 +0000
Received: from smtp-fw-80009.amazon.com (smtp-fw-80009.amazon.com
 [99.78.197.220]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 1ff0e01a-b4a5-11ee-9b0f-b553b5be7939;
 Tue, 16 Jan 2024 20:26:21 +0100 (CET)
Received: from pdx4-co-svc-p1-lb2-vlan2.amazon.com (HELO
 email-inbound-relay-pdx-2c-m6i4x-b1c0e1d0.us-west-2.amazon.com)
 ([10.25.36.210]) by smtp-border-fw-80009.pdx80.corp.amazon.com with
 ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 16 Jan 2024 19:26:17 +0000
Received: from smtpout.prod.us-east-1.prod.farcaster.email.amazon.dev
 (pdx2-ws-svc-p26-lb5-vlan3.pdx.amazon.com [10.39.38.70])
 by email-inbound-relay-pdx-2c-m6i4x-b1c0e1d0.us-west-2.amazon.com (Postfix)
 with ESMTPS id B2565800AA; Tue, 16 Jan 2024 19:26:16 +0000 (UTC)
Received: from EX19MTAUEB001.ant.amazon.com [10.0.44.209:62203]
 by smtpin.naws.us-east-1.prod.farcaster.email.amazon.dev [10.0.28.244:2525]
 with esmtp (Farcaster)
 id 8c1457d3-2081-4124-9d27-5ac477025126; Tue, 16 Jan 2024 19:26:16 +0000 (UTC)
Received: from EX19D008UEC004.ant.amazon.com (10.252.135.170) by
 EX19MTAUEB001.ant.amazon.com (10.252.135.108) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1118.40; Tue, 16 Jan 2024 19:26:16 +0000
Received: from EX19MTAUEB001.ant.amazon.com (10.252.135.35) by
 EX19D008UEC004.ant.amazon.com (10.252.135.170) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1118.40; Tue, 16 Jan 2024 19:26:15 +0000
Received: from dev-dsk-eliasely-1a-fd74790f.eu-west-1.amazon.com
 (10.253.91.118) by mail-relay.amazon.com (10.252.135.35) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1118.40 via Frontend Transport; Tue, 16 Jan 2024 19:26:14 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 1ff0e01a-b4a5-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
  d=amazon.com; i=@amazon.com; q=dns/txt; s=amazon201209;
  t=1705433181; x=1736969181;
  h=from:to:cc:subject:date:message-id:mime-version:
   content-transfer-encoding;
  bh=xKWNH6kJRXsg48ZEc5dzphr9is8CTmsp5C95JI51wQI=;
  b=PZqe3dSlUhDvvROxMfvRlgqGrBTyOfKdgydtFeaTsXW2IB2/mkxrhL24
   daL5q5FQqm+RxaTEcUJhIoC6oPEk7Q0RknPDagnY61vQwFd3u6krS6GLs
   JF9tsnYGwvYzqgmVWJMFsjA5UgTDVhgy8nHTWIDEEK5QJl44qpIDCstWc
   0=;
X-IronPort-AV: E=Sophos;i="6.05,200,1701129600"; 
   d="scan'208";a="58701446"
X-Farcaster-Flow-ID: 8c1457d3-2081-4124-9d27-5ac477025126
From: Elias El Yandouzi <eliasely@amazon.com>
To: <xen-devel@lists.xenproject.org>
CC: <julien@xen.org>, <pdurrant@amazon.com>, <dwmw@amazon.com>, "Elias El
 Yandouzi" <eliasely@amazon.com>, Andrew Cooper <andrew.cooper3@citrix.com>,
	George Dunlap <george.dunlap@citrix.com>, Jan Beulich <jbeulich@suse.com>,
	Stefano Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>, "Bertrand
 Marquis" <bertrand.marquis@arm.com>, Michal Orzel <michal.orzel@amd.com>,
	Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>, Lukasz Hawrylko
	<lukasz@hawrylko.pl>, "Daniel P. Smith" <dpsmith@apertussolutions.com>,
	=?UTF-8?q?Mateusz=20M=C3=B3wka?= <mateusz.mowka@intel.com>
Subject: [PATCH v2 (resend) 00/27] Remove the directmap
Date: Tue, 16 Jan 2024 19:25:44 +0000
Message-ID: <20240116192611.41112-1-eliasely@amazon.com>
X-Mailer: git-send-email 2.40.1
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
Precedence: Bulk

Hi all,

A few years ago, Wei Liu implemented a PoC to remove the directmap
from Xen. The last version was sent by Hongyan Xia [1].

I will start with thanking both Wei and Hongyan for the initial work
to upstream the feature. A lot of patches already went in and this is
the last few patches missing to effectively enable the feature.

=== What is the directmap? ===

At the moment, on both arm64 and x86, most of the RAM is mapped
in Xen address space. This means that domain memory is easily
accessible in Xen.

=== Why do we want to remove the directmap? ===

(Summarizing my understanding of the previous discussion)

Speculation attacks (like Spectre SP1) rely on loading piece of memory
in the cache. If the region is not mapped then it can't be loaded.

So removing reducing the amount of memory mapped in Xen will also
reduce the surface attack.

=== What's the performance impact? ===

As the guest memory is not always mapped, then the cost of mapping
will increase. I haven't done the numbers with this new version, but
some measurement were provided in the previous version for x86.

=== Improvement possible ===

The known area to improve on x86 are:
   * Mapcache: There was a patch sent by Hongyan:
     https://lore.kernel.org/xen-devel/4058e92ce21627731c49b588a95809dc0affd83a.1581015491.git.hongyxia@amazon.com/
   * EPT: At the moment an guest page-tabel walk requires about 20 map/unmap.
     This will have an very high impact on the performance. We need to decide
     whether keep the EPT always mapped is a problem

The original series didn't have support for Arm64. But as there were
some interest, I have provided a PoC.

There are more extra work for Arm64:
   * The mapcache is quite simple. We would investigate the performance
   * The mapcache should be made compliant to the Arm Arm (this is now
     more critical).
   * We will likely have the same problem as for the EPT.
   * We have no support for merging table to a superpage, neither
     free empty page-tables. (See more below)

=== Implementation ===

The subject is probably a misnomer. The directmap is still present but
the RAM is not mapped by default. Instead, the region will still be used
to map pages allocate via alloc_xenheap_pages().

The advantage is the solution is simple (so IHMO good enough for been
merged as a tech preview). The disadvantage is the page allocator is not
trying to keep all the xenheap pages together. So we may end up to have
an increase of page table usage.

In the longer term, we should consider to remove the direct map
completely and switch to vmap(). The main problem with this approach
is it is frequent to use mfn_to_virt() in the code. So we would need
to cache the mapping (maybe in the struct page_info).

=== Why arm32 is not covered? ===

On Arm32, the domheap and xenheap is always separated. So by design
the guest memory is not mapped by default.

At this stage, it seems unnecessary to have to map/unmap xenheap pages
every time they are allocated.

=== Why not using a separate domheap and xenheap? ===

While a separate xenheap/domheap reduce the page-table usage (all
xenheap pages are contiguous and could be always mapped), it is also
currently less scalable because the split is fixed at boot time (XXX:
Can this be dynamic?).

=== Future of secret-free hypervisor ===

There are some information in an e-mail from Andrew a few years ago:

https://lore.kernel.org/xen-devel/e3219697-0759-39fc-2486-715cdec1ca9e@citrix.com/

Cheers,

[1] https://lore.kernel.org/xen-devel/cover.1588278317.git.hongyxia@amazon.com/

*** BLURB HERE ***

Elias El Yandouzi (3):
  xen/x86: Add build assertion for fixmap entries
  Rename mfn_to_virt() calls
  Rename maddr_to_virt() calls

Hongyan Xia (13):
  acpi: vmap pages in acpi_os_alloc_memory
  xen/numa: vmap the pages for memnodemap
  x86/srat: vmap the pages for acpi_slit
  x86: Map/unmap pages in restore_all_guests
  x86/pv: Rewrite how building PV dom0 handles domheap mappings
  x86/pv: Map L4 page table for shim domain
  x86/mapcache: Initialise the mapcache for the idle domain
  x86: Add a boot option to enable and disable the direct map
  x86/domain_page: Remove the fast paths when mfn is not in the
    directmap
  xen/page_alloc: Add a path for xenheap when there is no direct map
  x86/setup: Leave early boot slightly earlier
  x86/setup: vmap heap nodes when they are outside the direct map
  x86/setup: Do not create valid mappings when directmap=no

Julien Grall (8):
  xen/vmap: Check the page has been mapped in vm_init_type()
  xen/vmap: Introduce vmap_size() and use it
  xen/arm: fixmap: Rename the fixmap slots to follow the x86 convention
  xen/x86: Add support for the PMAP
  xen/arm32: mm: Rename 'first' to 'root' in init_secondary_pagetables()
  xen/arm64: mm: Use per-pCPU page-tables
  xen/arm64: Implement a mapcache for arm64
  xen/arm64: Allow the admin to enable/disable the directmap

Wei Liu (3):
  x86/setup: Move vm_init() before acpi calls
  x86/pv: Domheap pages should be mapped while relocating initrd
  x86: Lift mapcache variable to the arch level

 docs/misc/xen-command-line.pandoc             |  12 ++
 xen/arch/arm/Kconfig                          |   3 +-
 xen/arch/arm/acpi/lib.c                       |  18 +--
 xen/arch/arm/arm64/mmu/mm.c                   |  45 +++++-
 xen/arch/arm/domain_page.c                    |  50 ++++++-
 xen/arch/arm/include/asm/arm32/mm.h           |   8 --
 xen/arch/arm/include/asm/arm64/mm.h           |   7 +-
 xen/arch/arm/include/asm/domain_page.h        |  13 ++
 xen/arch/arm/include/asm/early_printk.h       |   2 +-
 xen/arch/arm/include/asm/fixmap.h             |  16 +--
 xen/arch/arm/include/asm/mm.h                 |   9 ++
 xen/arch/arm/include/asm/mmu/layout.h         |  13 +-
 xen/arch/arm/include/asm/mmu/mm.h             |   2 +
 xen/arch/arm/mm.c                             |   1 +
 xen/arch/arm/mmu/pt.c                         |  12 +-
 xen/arch/arm/mmu/setup.c                      |  33 ++---
 xen/arch/arm/mmu/smpboot.c                    |  32 ++---
 xen/arch/arm/setup.c                          |   6 +-
 xen/arch/x86/Kconfig                          |   2 +
 xen/arch/x86/dmi_scan.c                       |   4 +-
 xen/arch/x86/domain.c                         |  12 +-
 xen/arch/x86/domain_page.c                    |  74 +++++++---
 xen/arch/x86/hvm/dom0_build.c                 |   4 +-
 xen/arch/x86/include/asm/config.h             |  12 +-
 xen/arch/x86/include/asm/domain.h             |  13 +-
 xen/arch/x86/include/asm/fixmap.h             |   9 ++
 .../x86/include/asm/mach-default/bios_ebda.h  |   2 +-
 xen/arch/x86/include/asm/mm.h                 |  10 +-
 xen/arch/x86/include/asm/page.h               |   8 +-
 xen/arch/x86/include/asm/pmap.h               |  25 ++++
 xen/arch/x86/include/asm/x86_64/page.h        |   2 +-
 xen/arch/x86/mm.c                             |  18 ++-
 xen/arch/x86/mpparse.c                        |   2 +-
 xen/arch/x86/pv/dom0_build.c                  |  73 +++++++---
 xen/arch/x86/pv/domain.c                      |  34 +++++
 xen/arch/x86/setup.c                          | 129 +++++++++++++++---
 xen/arch/x86/srat.c                           |   4 +-
 xen/arch/x86/tboot.c                          |   2 +-
 xen/arch/x86/x86_64/asm-offsets.c             |   1 +
 xen/arch/x86/x86_64/entry.S                   |   8 ++
 xen/arch/x86/x86_64/mm.c                      |  26 ++--
 xen/common/Kconfig                            |  17 +++
 xen/common/efi/boot.c                         |  23 ++--
 xen/common/numa.c                             |   9 +-
 xen/common/page_alloc.c                       |  89 ++++++++++--
 xen/common/pmap.c                             |   8 +-
 xen/common/trace.c                            |   8 +-
 xen/common/vmap.c                             |  62 ++++++---
 xen/drivers/acpi/osl.c                        |  14 +-
 xen/include/xen/mm.h                          |   7 +
 xen/include/xen/vmap.h                        |   4 +
 51 files changed, 753 insertions(+), 244 deletions(-)
 create mode 100644 xen/arch/arm/include/asm/domain_page.h
 create mode 100644 xen/arch/x86/include/asm/pmap.h

-- 
2.40.1



From xen-devel-bounces@lists.xenproject.org Tue Jan 16 19:26:26 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 16 Jan 2024 19:26:26 +0000
Received: from list by lists.xenproject.org with outflank-mailman.668078.1039961 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPp4s-0002wl-0a; Tue, 16 Jan 2024 19:26:26 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 668078.1039961; Tue, 16 Jan 2024 19:26:25 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPp4r-0002we-UB; Tue, 16 Jan 2024 19:26:25 +0000
Received: by outflank-mailman (input) for mailman id 668078;
 Tue, 16 Jan 2024 19:26:24 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=wmx9=I2=amazon.co.uk=prvs=738631f0b=eliasely@srs-se1.protection.inumbo.net>)
 id 1rPp4q-0002iI-JR
 for xen-devel@lists.xenproject.org; Tue, 16 Jan 2024 19:26:24 +0000
Received: from smtp-fw-52005.amazon.com (smtp-fw-52005.amazon.com
 [52.119.213.156]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 21666e67-b4a5-11ee-9b0f-b553b5be7939;
 Tue, 16 Jan 2024 20:26:22 +0100 (CET)
Received: from iad12-co-svc-p1-lb1-vlan3.amazon.com (HELO
 email-inbound-relay-iad-1d-m6i4x-d8e96288.us-east-1.amazon.com) ([10.43.8.6])
 by smtp-border-fw-52005.iad7.amazon.com with
 ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 16 Jan 2024 19:26:20 +0000
Received: from smtpout.prod.us-east-1.prod.farcaster.email.amazon.dev
 (iad7-ws-svc-p70-lb3-vlan3.iad.amazon.com [10.32.235.38])
 by email-inbound-relay-iad-1d-m6i4x-d8e96288.us-east-1.amazon.com (Postfix)
 with ESMTPS id 08B1E84687; Tue, 16 Jan 2024 19:26:17 +0000 (UTC)
Received: from EX19MTAUEB002.ant.amazon.com [10.0.29.78:41703]
 by smtpin.naws.us-east-1.prod.farcaster.email.amazon.dev [10.0.89.133:2525]
 with esmtp (Farcaster)
 id 956fd52c-0e3e-43ce-a756-0aa56b33185c; Tue, 16 Jan 2024 19:26:17 +0000 (UTC)
Received: from EX19D008UEA004.ant.amazon.com (10.252.134.191) by
 EX19MTAUEB002.ant.amazon.com (10.252.135.47) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1118.40; Tue, 16 Jan 2024 19:26:17 +0000
Received: from EX19MTAUEB001.ant.amazon.com (10.252.135.35) by
 EX19D008UEA004.ant.amazon.com (10.252.134.191) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1118.40; Tue, 16 Jan 2024 19:26:16 +0000
Received: from dev-dsk-eliasely-1a-fd74790f.eu-west-1.amazon.com
 (10.253.91.118) by mail-relay.amazon.com (10.252.135.35) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1118.40 via Frontend Transport; Tue, 16 Jan 2024 19:26:16 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 21666e67-b4a5-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
  d=amazon.com; i=@amazon.com; q=dns/txt; s=amazon201209;
  t=1705433182; x=1736969182;
  h=from:to:cc:subject:date:message-id:in-reply-to:
   references:mime-version:content-transfer-encoding;
  bh=v62iLnCTpjjwMqV4HyxrM90zKMQWzF/DsYPcQzLLs10=;
  b=jgwGGUet6Z1gmXBzynETUo1sj3rpTgLqPL6WiqGQl5FLYQycKyGmsNUx
   JYBWXZB7qeEvJdAgKZR1VvNtGroZRWn1ggFipPsx2C4MMctZLsH5Nk6KX
   hinESYAxo+CarT28x20CgoIDBcVd0PuR+NDogtg8uY9qFkol2CSVl3TmF
   U=;
X-IronPort-AV: E=Sophos;i="6.05,200,1701129600"; 
   d="scan'208";a="627983541"
X-Farcaster-Flow-ID: 956fd52c-0e3e-43ce-a756-0aa56b33185c
From: Elias El Yandouzi <eliasely@amazon.com>
To: <xen-devel@lists.xenproject.org>
CC: <julien@xen.org>, <pdurrant@amazon.com>, <dwmw@amazon.com>, Julien Grall
	<jgrall@amazon.com>, Andrew Cooper <andrew.cooper3@citrix.com>, George Dunlap
	<george.dunlap@citrix.com>, Jan Beulich <jbeulich@suse.com>, "Stefano
 Stabellini" <sstabellini@kernel.org>, Wei Liu <wl@xen.org>, Elias El Yandouzi
	<eliasely@amazon.com>
Subject: [PATCH v2 (resend) 01/27] xen/vmap: Check the page has been mapped in vm_init_type()
Date: Tue, 16 Jan 2024 19:25:45 +0000
Message-ID: <20240116192611.41112-2-eliasely@amazon.com>
X-Mailer: git-send-email 2.40.1
In-Reply-To: <20240116192611.41112-1-eliasely@amazon.com>
References: <20240116192611.41112-1-eliasely@amazon.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
Precedence: Bulk

From: Julien Grall <jgrall@amazon.com>

The function map_pages_to_xen() could fail if it can't allocate the
underlying page tables or (at least on Arm) if the area was already
mapped.

The first error is caught by clear_page() because it would fault.
However, the second error while very unlikely is not caught at all.

As this is boot code, use BUG_ON() to check if map_pages_to_xen() has
succeeded.

Signed-off-by: Julien Grall <jgrall@amazon.com>
Signed-off-by: Elias El Yandouzi <eliasely@amazon.com>

----

    Changes in v2:
        - New patch

diff --git a/xen/common/vmap.c b/xen/common/vmap.c
index 330e2ba897..830f64c5ef 100644
--- a/xen/common/vmap.c
+++ b/xen/common/vmap.c
@@ -35,8 +35,11 @@ void __init vm_init_type(enum vmap_region type, void *start, void *end)
     for ( i = 0, va = (unsigned long)vm_bitmap(type); i < nr; ++i, va += PAGE_SIZE )
     {
         struct page_info *pg = alloc_domheap_page(NULL, 0);
+        int rc;
+
+        rc = map_pages_to_xen(va, page_to_mfn(pg), 1, PAGE_HYPERVISOR);
+        BUG_ON(rc);
 
-        map_pages_to_xen(va, page_to_mfn(pg), 1, PAGE_HYPERVISOR);
         clear_page((void *)va);
     }
     bitmap_fill(vm_bitmap(type), vm_low[type]);
-- 
2.40.1



From xen-devel-bounces@lists.xenproject.org Tue Jan 16 19:26:28 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 16 Jan 2024 19:26:28 +0000
Received: from list by lists.xenproject.org with outflank-mailman.668079.1039972 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPp4u-0003Fa-8f; Tue, 16 Jan 2024 19:26:28 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 668079.1039972; Tue, 16 Jan 2024 19:26:28 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPp4u-0003F8-4m; Tue, 16 Jan 2024 19:26:28 +0000
Received: by outflank-mailman (input) for mailman id 668079;
 Tue, 16 Jan 2024 19:26:26 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=wmx9=I2=amazon.co.uk=prvs=738631f0b=eliasely@srs-se1.protection.inumbo.net>)
 id 1rPp4s-0002iI-Kv
 for xen-devel@lists.xenproject.org; Tue, 16 Jan 2024 19:26:26 +0000
Received: from smtp-fw-52005.amazon.com (smtp-fw-52005.amazon.com
 [52.119.213.156]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 2306d3fa-b4a5-11ee-9b0f-b553b5be7939;
 Tue, 16 Jan 2024 20:26:24 +0100 (CET)
Received: from iad12-co-svc-p1-lb1-vlan3.amazon.com (HELO
 email-inbound-relay-iad-1e-m6i4x-6e7a78d7.us-east-1.amazon.com) ([10.43.8.6])
 by smtp-border-fw-52005.iad7.amazon.com with
 ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 16 Jan 2024 19:26:23 +0000
Received: from smtpout.prod.us-east-1.prod.farcaster.email.amazon.dev
 (iad7-ws-svc-p70-lb3-vlan2.iad.amazon.com [10.32.235.34])
 by email-inbound-relay-iad-1e-m6i4x-6e7a78d7.us-east-1.amazon.com (Postfix)
 with ESMTPS id DA21380750; Tue, 16 Jan 2024 19:26:19 +0000 (UTC)
Received: from EX19MTAUEB001.ant.amazon.com [10.0.44.209:34232]
 by smtpin.naws.us-east-1.prod.farcaster.email.amazon.dev [10.0.41.129:2525]
 with esmtp (Farcaster)
 id e3eca962-163c-4e87-9189-8e1da0e3c898; Tue, 16 Jan 2024 19:26:19 +0000 (UTC)
Received: from EX19D008UEA004.ant.amazon.com (10.252.134.191) by
 EX19MTAUEB001.ant.amazon.com (10.252.135.108) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1118.40; Tue, 16 Jan 2024 19:26:18 +0000
Received: from EX19MTAUEB001.ant.amazon.com (10.252.135.35) by
 EX19D008UEA004.ant.amazon.com (10.252.134.191) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1118.40; Tue, 16 Jan 2024 19:26:18 +0000
Received: from dev-dsk-eliasely-1a-fd74790f.eu-west-1.amazon.com
 (10.253.91.118) by mail-relay.amazon.com (10.252.135.35) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1118.40 via Frontend Transport; Tue, 16 Jan 2024 19:26:17 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 2306d3fa-b4a5-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
  d=amazon.com; i=@amazon.com; q=dns/txt; s=amazon201209;
  t=1705433184; x=1736969184;
  h=from:to:cc:subject:date:message-id:in-reply-to:
   references:mime-version:content-transfer-encoding;
  bh=3bfMq1Uef4k7zIlKxhavHHhyVuwSclhXcQaPCDrDa7g=;
  b=U2mekgigfQlp97fKeRfKjC/qPWGbEmz4IGoFfdKDtubzcHxaSflsjfG6
   5K9mtCaBhSLR2/z2mDnHYJviq35/vO6zXD/dG+xk5D1gVQ541cin8ZtXq
   C7JPbYCs2Goos6ShROhNsfC3ru6OGglQ9UGhV25OUGAySGg5sPfE/BDZU
   Q=;
X-IronPort-AV: E=Sophos;i="6.05,200,1701129600"; 
   d="scan'208";a="627983547"
X-Farcaster-Flow-ID: e3eca962-163c-4e87-9189-8e1da0e3c898
From: Elias El Yandouzi <eliasely@amazon.com>
To: <xen-devel@lists.xenproject.org>
CC: <julien@xen.org>, <pdurrant@amazon.com>, <dwmw@amazon.com>, Wei Liu
	<wei.liu2@citrix.com>, Stefano Stabellini <sstabellini@kernel.org>, "Bertrand
 Marquis" <bertrand.marquis@arm.com>, Michal Orzel <michal.orzel@amd.com>,
	Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>, Andrew Cooper
	<andrew.cooper3@citrix.com>, George Dunlap <george.dunlap@citrix.com>, "Jan
 Beulich" <jbeulich@suse.com>, Wei Liu <wl@xen.org>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>, David Woodhouse
	<dwmw2@amazon.com>, Hongyan Xia <hongyxia@amazon.com>, Julien Grall
	<jgrall@amazon.com>, Elias El Yandouzi <eliasely@amazon.com>
Subject: [PATCH v2 (resend) 02/27] x86/setup: Move vm_init() before acpi calls
Date: Tue, 16 Jan 2024 19:25:46 +0000
Message-ID: <20240116192611.41112-3-eliasely@amazon.com>
X-Mailer: git-send-email 2.40.1
In-Reply-To: <20240116192611.41112-1-eliasely@amazon.com>
References: <20240116192611.41112-1-eliasely@amazon.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
Precedence: Bulk

From: Wei Liu <wei.liu2@citrix.com>

After the direct map removal, pages from the boot allocator are not
going to be mapped in the direct map. Although we have map_domain_page,
they are ephemeral and are less helpful for mappings that are more than a
page, so we want a mechanism to globally map a range of pages, which is
what vmap is for. Therefore, we bring vm_init into early boot stage.

To allow vmap to be initialised and used in early boot, we need to
modify vmap to receive pages from the boot allocator during early boot
stage.

Signed-off-by: Wei Liu <wei.liu2@citrix.com>
Signed-off-by: David Woodhouse <dwmw2@amazon.com>
Signed-off-by: Hongyan Xia <hongyxia@amazon.com>
Signed-off-by: Julien Grall <jgrall@amazon.com>
Signed-off-by: Elias El Yandouzi <eliasely@amazon.com>

----

    Changes in v2:
        - The return of map_pages_to_xen() is now checked in a separate
          patch
        - Clarify the commit message
        - Group the new boolean with the others

diff --git a/xen/arch/arm/setup.c b/xen/arch/arm/setup.c
index 59dd9bb25a..7e28f62d09 100644
--- a/xen/arch/arm/setup.c
+++ b/xen/arch/arm/setup.c
@@ -748,6 +748,8 @@ void asmlinkage __init start_xen(unsigned long boot_phys_offset,
 
     setup_mm();
 
+    vm_init();
+
     /* Parse the ACPI tables for possible boot-time configuration */
     acpi_boot_table_init();
 
@@ -759,8 +761,6 @@ void asmlinkage __init start_xen(unsigned long boot_phys_offset,
      */
     system_state = SYS_STATE_boot;
 
-    vm_init();
-
     if ( acpi_disabled )
     {
         printk("Booting using Device Tree\n");
diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
index 897b7e9208..4d0c90b7a0 100644
--- a/xen/arch/x86/setup.c
+++ b/xen/arch/x86/setup.c
@@ -989,6 +989,7 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
     int i, j, e820_warn = 0, bytes = 0;
     unsigned long eb_start, eb_end;
     bool acpi_boot_table_init_done = false, relocated = false;
+    bool vm_init_done = false;
     int ret;
     struct ns16550_defaults ns16550 = {
         .data_bits = 8,
@@ -1531,12 +1532,23 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
             continue;
 
         if ( !acpi_boot_table_init_done &&
-             s >= (1ULL << 32) &&
-             !acpi_boot_table_init() )
+             s >= (1ULL << 32) )
         {
-            acpi_boot_table_init_done = true;
-            srat_parse_regions(s);
-            setup_max_pdx(raw_max_page);
+            /*
+             * We only initialise vmap and acpi after going through the bottom
+             * 4GiB, so that we have enough pages in the boot allocator.
+             */
+            if ( !vm_init_done )
+            {
+                vm_init();
+                vm_init_done = true;
+            }
+            if ( !acpi_boot_table_init() )
+            {
+                acpi_boot_table_init_done = true;
+                srat_parse_regions(s);
+                setup_max_pdx(raw_max_page);
+            }
         }
 
         if ( pfn_to_pdx((e - 1) >> PAGE_SHIFT) >= max_pdx )
@@ -1722,6 +1734,9 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
 
     init_frametable();
 
+    if ( !vm_init_done )
+        vm_init();
+
     if ( !acpi_boot_table_init_done )
         acpi_boot_table_init();
 
@@ -1761,12 +1776,6 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
         end_boot_allocator();
 
     system_state = SYS_STATE_boot;
-    /*
-     * No calls involving ACPI code should go between the setting of
-     * SYS_STATE_boot and vm_init() (or else acpi_os_{,un}map_memory()
-     * will break).
-     */
-    vm_init();
 
     bsp_stack = cpu_alloc_stack(0);
     if ( !bsp_stack )
diff --git a/xen/common/vmap.c b/xen/common/vmap.c
index 830f64c5ef..fc5c70da4d 100644
--- a/xen/common/vmap.c
+++ b/xen/common/vmap.c
@@ -34,10 +34,19 @@ void __init vm_init_type(enum vmap_region type, void *start, void *end)
 
     for ( i = 0, va = (unsigned long)vm_bitmap(type); i < nr; ++i, va += PAGE_SIZE )
     {
-        struct page_info *pg = alloc_domheap_page(NULL, 0);
+        mfn_t mfn;
         int rc;
 
-        rc = map_pages_to_xen(va, page_to_mfn(pg), 1, PAGE_HYPERVISOR);
+        if ( system_state == SYS_STATE_early_boot )
+            mfn = alloc_boot_pages(1, 1);
+        else
+        {
+            struct page_info *pg = alloc_domheap_page(NULL, 0);
+
+            BUG_ON(!pg);
+            mfn = page_to_mfn(pg);
+        }
+        rc = map_pages_to_xen(va, mfn, 1, PAGE_HYPERVISOR);
         BUG_ON(rc);
 
         clear_page((void *)va);
@@ -65,7 +74,7 @@ static void *vm_alloc(unsigned int nr, unsigned int align,
     spin_lock(&vm_lock);
     for ( ; ; )
     {
-        struct page_info *pg;
+        mfn_t mfn;
 
         ASSERT(vm_low[t] == vm_top[t] || !test_bit(vm_low[t], vm_bitmap(t)));
         for ( start = vm_low[t]; start < vm_top[t]; )
@@ -100,9 +109,16 @@ static void *vm_alloc(unsigned int nr, unsigned int align,
         if ( vm_top[t] >= vm_end[t] )
             return NULL;
 
-        pg = alloc_domheap_page(NULL, 0);
-        if ( !pg )
-            return NULL;
+        if ( system_state == SYS_STATE_early_boot )
+            mfn = alloc_boot_pages(1, 1);
+        else
+        {
+            struct page_info *pg = alloc_domheap_page(NULL, 0);
+
+            if ( !pg )
+                return NULL;
+            mfn = page_to_mfn(pg);
+        }
 
         spin_lock(&vm_lock);
 
@@ -110,7 +126,7 @@ static void *vm_alloc(unsigned int nr, unsigned int align,
         {
             unsigned long va = (unsigned long)vm_bitmap(t) + vm_top[t] / 8;
 
-            if ( !map_pages_to_xen(va, page_to_mfn(pg), 1, PAGE_HYPERVISOR) )
+            if ( !map_pages_to_xen(va, mfn, 1, PAGE_HYPERVISOR) )
             {
                 clear_page((void *)va);
                 vm_top[t] += PAGE_SIZE * 8;
@@ -120,7 +136,10 @@ static void *vm_alloc(unsigned int nr, unsigned int align,
             }
         }
 
-        free_domheap_page(pg);
+        if ( system_state == SYS_STATE_early_boot )
+            init_boot_pages(mfn_to_maddr(mfn), mfn_to_maddr(mfn) + PAGE_SIZE);
+        else
+            free_domheap_page(mfn_to_page(mfn));
 
         if ( start >= vm_top[t] )
         {
-- 
2.40.1



From xen-devel-bounces@lists.xenproject.org Tue Jan 16 19:26:33 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 16 Jan 2024 19:26:33 +0000
Received: from list by lists.xenproject.org with outflank-mailman.668080.1039982 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPp4z-0003bE-Gw; Tue, 16 Jan 2024 19:26:33 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 668080.1039982; Tue, 16 Jan 2024 19:26:33 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPp4z-0003at-Ch; Tue, 16 Jan 2024 19:26:33 +0000
Received: by outflank-mailman (input) for mailman id 668080;
 Tue, 16 Jan 2024 19:26:32 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=wmx9=I2=amazon.co.uk=prvs=738631f0b=eliasely@srs-se1.protection.inumbo.net>)
 id 1rPp4y-0003Xv-2o
 for xen-devel@lists.xenproject.org; Tue, 16 Jan 2024 19:26:32 +0000
Received: from smtp-fw-52004.amazon.com (smtp-fw-52004.amazon.com
 [52.119.213.154]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 26299e47-b4a5-11ee-98f1-6d05b1d4d9a1;
 Tue, 16 Jan 2024 20:26:30 +0100 (CET)
Received: from iad12-co-svc-p1-lb1-vlan2.amazon.com (HELO
 email-inbound-relay-pdx-2b-m6i4x-7fa2de02.us-west-2.amazon.com) ([10.43.8.2])
 by smtp-border-fw-52004.iad7.amazon.com with
 ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 16 Jan 2024 19:26:28 +0000
Received: from smtpout.prod.us-east-1.prod.farcaster.email.amazon.dev
 (pdx2-ws-svc-p26-lb5-vlan2.pdx.amazon.com [10.39.38.66])
 by email-inbound-relay-pdx-2b-m6i4x-7fa2de02.us-west-2.amazon.com (Postfix)
 with ESMTPS id EBE47410A5; Tue, 16 Jan 2024 19:26:26 +0000 (UTC)
Received: from EX19MTAUEA001.ant.amazon.com [10.0.29.78:2602]
 by smtpin.naws.us-east-1.prod.farcaster.email.amazon.dev [10.0.57.22:2525]
 with esmtp (Farcaster)
 id e792b96e-ad88-4b4f-ac4b-041a01b78128; Tue, 16 Jan 2024 19:26:26 +0000 (UTC)
Received: from EX19D008UEA004.ant.amazon.com (10.252.134.191) by
 EX19MTAUEA001.ant.amazon.com (10.252.134.203) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1118.40; Tue, 16 Jan 2024 19:26:24 +0000
Received: from EX19MTAUEB001.ant.amazon.com (10.252.135.35) by
 EX19D008UEA004.ant.amazon.com (10.252.134.191) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1118.40; Tue, 16 Jan 2024 19:26:24 +0000
Received: from dev-dsk-eliasely-1a-fd74790f.eu-west-1.amazon.com
 (10.253.91.118) by mail-relay.amazon.com (10.252.135.35) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1118.40 via Frontend Transport; Tue, 16 Jan 2024 19:26:23 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 26299e47-b4a5-11ee-98f1-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
  d=amazon.com; i=@amazon.com; q=dns/txt; s=amazon201209;
  t=1705433191; x=1736969191;
  h=from:to:cc:subject:date:message-id:in-reply-to:
   references:mime-version:content-transfer-encoding;
  bh=RlZPoKBPtPftpmhS8npiHVFZDFdnG1+rb/ajeW5MDFo=;
  b=D9OVH2+o8lgOUCuFIlqUB2ZmF5cKOn+zgZgdQvM5AWJvm/t+q+4Kthkv
   o6c+voUgcCF3gX+vLaq25om9RCZLSDATRdqN6v3QgaCxpreAuaK1Xj3un
   hk9oMxehNH1e3iQwNmX45rlEq4QaDR3L4/mUjMe/6bG5vzsBA4GUl5mO+
   Q=;
X-IronPort-AV: E=Sophos;i="6.05,200,1701129600"; 
   d="scan'208";a="178399454"
X-Farcaster-Flow-ID: e792b96e-ad88-4b4f-ac4b-041a01b78128
From: Elias El Yandouzi <eliasely@amazon.com>
To: <xen-devel@lists.xenproject.org>
CC: <julien@xen.org>, <pdurrant@amazon.com>, <dwmw@amazon.com>, Hongyan Xia
	<hongyxia@amazon.com>, Jan Beulich <jbeulich@suse.com>, Andrew Cooper
	<andrew.cooper3@citrix.com>, =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?=
	<roger.pau@citrix.com>, Wei Liu <wl@xen.org>, Julien Grall
	<jgrall@amazon.com>, Elias El Yandouzi <eliasely@amazon.com>
Subject: [PATCH v2 (resend) 07/27] x86: Map/unmap pages in restore_all_guests
Date: Tue, 16 Jan 2024 19:25:51 +0000
Message-ID: <20240116192611.41112-8-eliasely@amazon.com>
X-Mailer: git-send-email 2.40.1
In-Reply-To: <20240116192611.41112-1-eliasely@amazon.com>
References: <20240116192611.41112-1-eliasely@amazon.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
Precedence: Bulk

From: Hongyan Xia <hongyxia@amazon.com>

Before, it assumed the pv cr3 could be accessed via a direct map. This
is no longer true.

Note that we do not map and unmap root_pgt for now since it is still a
xenheap page.

Signed-off-by: Hongyan Xia <hongyxia@amazon.com>
Signed-off-by: Julien Grall <jgrall@amazon.com>
Signed-off-by: Elias El Yandouzi <eliasely@amazon.com>

----

    Changes in V2:
        * Rework the shadow perdomain mapping solution in the follow-up patches

    Changes since Hongyan's version:
        * Remove the final dot in the commit title

diff --git a/xen/arch/x86/include/asm/config.h b/xen/arch/x86/include/asm/config.h
index bbced338be..7cf1f33dc0 100644
--- a/xen/arch/x86/include/asm/config.h
+++ b/xen/arch/x86/include/asm/config.h
@@ -202,7 +202,7 @@ extern unsigned char boot_edid_info[128];
 /* Slot 260: per-domain mappings (including map cache). */
 #define PERDOMAIN_VIRT_START    (PML4_ADDR(260))
 #define PERDOMAIN_SLOT_MBYTES   (PML4_ENTRY_BYTES >> (20 + PAGETABLE_ORDER))
-#define PERDOMAIN_SLOTS         3
+#define PERDOMAIN_SLOTS         4
 #define PERDOMAIN_VIRT_SLOT(s)  (PERDOMAIN_VIRT_START + (s) * \
                                  (PERDOMAIN_SLOT_MBYTES << 20))
 /* Slot 4: mirror of per-domain mappings (for compat xlat area accesses). */
@@ -316,6 +316,16 @@ extern unsigned long xen_phys_start;
 #define ARG_XLAT_START(v)        \
     (ARG_XLAT_VIRT_START + ((v)->vcpu_id << ARG_XLAT_VA_SHIFT))
 
+/* root_pt shadow mapping area. The fourth per-domain-mapping sub-area */
+#define SHADOW_ROOT_PT_VIRT_START   PERDOMAIN_VIRT_SLOT(3)
+#define SHADOW_ROOT_PT_ENTRIES      MAX_VIRT_CPUS
+#define SHADOW_ROOT_PT_VIRT_END     (SHADOW_ROOT_PT_VIRT_START +    \
+                                     (SHADOW_ROOT_PT_ENTRIES * PAGE_SIZE))
+
+/* The address of a particular VCPU's ROOT_PT */
+#define SHADOW_ROOT_PT_VCPU_VIRT_START(v) \
+    (SHADOW_ROOT_PT_VIRT_START + ((v)->vcpu_id * PAGE_SIZE))
+
 #define ELFSIZE 64
 
 #define ARCH_CRASH_SAVE_VMCOREINFO
diff --git a/xen/arch/x86/include/asm/domain.h b/xen/arch/x86/include/asm/domain.h
index 622d22bef2..4d97c68028 100644
--- a/xen/arch/x86/include/asm/domain.h
+++ b/xen/arch/x86/include/asm/domain.h
@@ -273,6 +273,7 @@ struct time_scale {
 struct pv_domain
 {
     l1_pgentry_t **gdt_ldt_l1tab;
+    l1_pgentry_t **shadow_root_pt_l1tab;
 
     atomic_t nr_l4_pages;
 
diff --git a/xen/arch/x86/mm.c b/xen/arch/x86/mm.c
index b56e0d8065..a72c32d87c 100644
--- a/xen/arch/x86/mm.c
+++ b/xen/arch/x86/mm.c
@@ -505,6 +505,13 @@ void share_xen_page_with_guest(struct page_info *page, struct domain *d,
     spin_unlock(&d->page_alloc_lock);
 }
 
+#define shadow_root_pt_idx(v) \
+    ((v)->vcpu_id >> PAGETABLE_ORDER)
+
+#define pv_shadow_root_pt_pte(v) \
+    ((v)->domain->arch.pv.shadow_root_pt_l1tab[shadow_root_pt_idx(v)] + \
+     ((v)->vcpu_id & (L1_PAGETABLE_ENTRIES - 1)))
+
 void make_cr3(struct vcpu *v, mfn_t mfn)
 {
     struct domain *d = v->domain;
@@ -524,6 +531,13 @@ void write_ptbase(struct vcpu *v)
 
     if ( is_pv_vcpu(v) && v->domain->arch.pv.xpti )
     {
+        mfn_t guest_root_pt = _mfn(v->arch.cr3 >> PAGE_SHIFT);
+        l1_pgentry_t *pte = pv_shadow_root_pt_pte(v);
+
+        ASSERT(v == current);
+
+        l1e_write(pte, l1e_from_mfn(guest_root_pt, __PAGE_HYPERVISOR_RW));
+
         cpu_info->root_pgt_changed = true;
         cpu_info->pv_cr3 = __pa(this_cpu(root_pgt));
         if ( new_cr4 & X86_CR4_PCIDE )
diff --git a/xen/arch/x86/pv/domain.c b/xen/arch/x86/pv/domain.c
index 2a445bb17b..fef9ae2352 100644
--- a/xen/arch/x86/pv/domain.c
+++ b/xen/arch/x86/pv/domain.c
@@ -288,6 +288,19 @@ static void pv_destroy_gdt_ldt_l1tab(struct vcpu *v)
                               1U << GDT_LDT_VCPU_SHIFT);
 }
 
+static int pv_create_shadow_root_pt_l1tab(struct vcpu *v)
+{
+    return create_perdomain_mapping(v->domain, SHADOW_ROOT_PT_VCPU_VIRT_START(v),
+                                    1, v->domain->arch.pv.shadow_root_pt_l1tab,
+                                    NULL);
+}
+
+static void pv_destroy_shadow_root_pt_l1tab(struct vcpu *v)
+
+{
+    destroy_perdomain_mapping(v->domain, SHADOW_ROOT_PT_VCPU_VIRT_START(v), 1);
+}
+
 void pv_vcpu_destroy(struct vcpu *v)
 {
     if ( is_pv_32bit_vcpu(v) )
@@ -297,6 +310,7 @@ void pv_vcpu_destroy(struct vcpu *v)
     }
 
     pv_destroy_gdt_ldt_l1tab(v);
+    pv_destroy_shadow_root_pt_l1tab(v);
     XFREE(v->arch.pv.trap_ctxt);
 }
 
@@ -311,6 +325,13 @@ int pv_vcpu_initialise(struct vcpu *v)
     if ( rc )
         return rc;
 
+    if ( v->domain->arch.pv.xpti )
+    {
+        rc = pv_create_shadow_root_pt_l1tab(v);
+        if ( rc )
+            goto done;
+    }
+
     BUILD_BUG_ON(X86_NR_VECTORS * sizeof(*v->arch.pv.trap_ctxt) >
                  PAGE_SIZE);
     v->arch.pv.trap_ctxt = xzalloc_array(struct trap_info, X86_NR_VECTORS);
@@ -346,10 +367,12 @@ void pv_domain_destroy(struct domain *d)
 
     destroy_perdomain_mapping(d, GDT_LDT_VIRT_START,
                               GDT_LDT_MBYTES << (20 - PAGE_SHIFT));
+    destroy_perdomain_mapping(d, SHADOW_ROOT_PT_VIRT_START, SHADOW_ROOT_PT_ENTRIES);
 
     XFREE(d->arch.pv.cpuidmasks);
 
     FREE_XENHEAP_PAGE(d->arch.pv.gdt_ldt_l1tab);
+    FREE_XENHEAP_PAGE(d->arch.pv.shadow_root_pt_l1tab);
 }
 
 void noreturn cf_check continue_pv_domain(void);
@@ -371,6 +394,12 @@ int pv_domain_initialise(struct domain *d)
         goto fail;
     clear_page(d->arch.pv.gdt_ldt_l1tab);
 
+    d->arch.pv.shadow_root_pt_l1tab =
+        alloc_xenheap_pages(0, MEMF_node(domain_to_node(d)));
+    if ( !d->arch.pv.shadow_root_pt_l1tab )
+        goto fail;
+    clear_page(d->arch.pv.shadow_root_pt_l1tab);
+
     if ( levelling_caps & ~LCAP_faulting &&
          (d->arch.pv.cpuidmasks = xmemdup(&cpuidmask_defaults)) == NULL )
         goto fail;
@@ -381,6 +410,11 @@ int pv_domain_initialise(struct domain *d)
     if ( rc )
         goto fail;
 
+    rc = create_perdomain_mapping(d, SHADOW_ROOT_PT_VIRT_START,
+                                  SHADOW_ROOT_PT_ENTRIES, NULL, NULL);
+    if ( rc )
+        goto fail;
+
     d->arch.ctxt_switch = &pv_csw;
 
     d->arch.pv.xpti = is_hardware_domain(d) ? opt_xpti_hwdom : opt_xpti_domu;
diff --git a/xen/arch/x86/x86_64/asm-offsets.c b/xen/arch/x86/x86_64/asm-offsets.c
index 57b73a4e62..23f9cca1a2 100644
--- a/xen/arch/x86/x86_64/asm-offsets.c
+++ b/xen/arch/x86/x86_64/asm-offsets.c
@@ -51,6 +51,7 @@ void __dummy__(void)
     OFFSET(UREGS_kernel_sizeof, struct cpu_user_regs, es);
     BLANK();
 
+    OFFSET(VCPU_id, struct vcpu, vcpu_id);
     OFFSET(VCPU_processor, struct vcpu, processor);
     OFFSET(VCPU_domain, struct vcpu, domain);
     OFFSET(VCPU_vcpu_info, struct vcpu, vcpu_info_area.map);
diff --git a/xen/arch/x86/x86_64/entry.S b/xen/arch/x86/x86_64/entry.S
index c25b14dde6..a216c5ca7a 100644
--- a/xen/arch/x86/x86_64/entry.S
+++ b/xen/arch/x86/x86_64/entry.S
@@ -165,7 +165,15 @@ restore_all_guest:
         and   %rsi, %rdi
         and   %r9, %rsi
         add   %rcx, %rdi
+
+        /*
+         * The address in the vCPU cr3 is always mapped in the shadow
+         * root_pt virt area.
+         */
+        imul $PAGE_SIZE, VCPU_id(%rbx), %esi
+        movabs $SHADOW_ROOT_PT_VIRT_START, %rcx
         add   %rcx, %rsi
+
         mov   $ROOT_PAGETABLE_FIRST_XEN_SLOT, %ecx
         mov   root_table_offset(SH_LINEAR_PT_VIRT_START)*8(%rsi), %r8
         mov   %r8, root_table_offset(SH_LINEAR_PT_VIRT_START)*8(%rdi)
-- 
2.40.1



From xen-devel-bounces@lists.xenproject.org Tue Jan 16 19:26:35 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 16 Jan 2024 19:26:35 +0000
Received: from list by lists.xenproject.org with outflank-mailman.668081.1039992 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPp50-0003sY-Um; Tue, 16 Jan 2024 19:26:34 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 668081.1039992; Tue, 16 Jan 2024 19:26:34 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPp50-0003sR-Ql; Tue, 16 Jan 2024 19:26:34 +0000
Received: by outflank-mailman (input) for mailman id 668081;
 Tue, 16 Jan 2024 19:26:33 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=wmx9=I2=amazon.co.uk=prvs=738631f0b=eliasely@srs-se1.protection.inumbo.net>)
 id 1rPp4z-0003Xv-LJ
 for xen-devel@lists.xenproject.org; Tue, 16 Jan 2024 19:26:33 +0000
Received: from smtp-fw-80006.amazon.com (smtp-fw-80006.amazon.com
 [99.78.197.217]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 26e12f07-b4a5-11ee-98f1-6d05b1d4d9a1;
 Tue, 16 Jan 2024 20:26:32 +0100 (CET)
Received: from pdx4-co-svc-p1-lb2-vlan3.amazon.com (HELO
 email-inbound-relay-pdx-2a-m6i4x-3ef535ca.us-west-2.amazon.com)
 ([10.25.36.214]) by smtp-border-fw-80006.pdx80.corp.amazon.com with
 ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 16 Jan 2024 19:26:29 +0000
Received: from smtpout.prod.us-east-1.prod.farcaster.email.amazon.dev
 (pdx2-ws-svc-p26-lb5-vlan2.pdx.amazon.com [10.39.38.66])
 by email-inbound-relay-pdx-2a-m6i4x-3ef535ca.us-west-2.amazon.com (Postfix)
 with ESMTPS id 624BD609EA; Tue, 16 Jan 2024 19:26:26 +0000 (UTC)
Received: from EX19MTAUEB001.ant.amazon.com [10.0.44.209:34536]
 by smtpin.naws.us-east-1.prod.farcaster.email.amazon.dev [10.0.3.20:2525] with
 esmtp (Farcaster)
 id 5204e9b5-4ffe-4f9b-a668-3a37bda75b90; Tue, 16 Jan 2024 19:26:25 +0000 (UTC)
Received: from EX19D008UEA003.ant.amazon.com (10.252.134.116) by
 EX19MTAUEB001.ant.amazon.com (10.252.135.108) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1118.40; Tue, 16 Jan 2024 19:26:22 +0000
Received: from EX19MTAUEB001.ant.amazon.com (10.252.135.35) by
 EX19D008UEA003.ant.amazon.com (10.252.134.116) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1118.40; Tue, 16 Jan 2024 19:26:22 +0000
Received: from dev-dsk-eliasely-1a-fd74790f.eu-west-1.amazon.com
 (10.253.91.118) by mail-relay.amazon.com (10.252.135.35) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1118.40 via Frontend Transport; Tue, 16 Jan 2024 19:26:21 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 26e12f07-b4a5-11ee-98f1-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
  d=amazon.com; i=@amazon.com; q=dns/txt; s=amazon201209;
  t=1705433193; x=1736969193;
  h=from:to:cc:subject:date:message-id:in-reply-to:
   references:mime-version:content-transfer-encoding;
  bh=FgFciMpLuDVe/Ws8Mo0D+wl9Af+6on00mUDD4ztD+mE=;
  b=a0gy08PIcgQAWR60qQaCwATt2HxbGCqrIxwZOio+y+p9WUUoo1K398Pq
   TB8nsB2y+Fju4iUQNXj9/Nz3cEJtxXSIvYZn8CinyHguiN33sFletCKFB
   MGWUAaq2cYUXtPjnG+UprRSepf0g/GLoWS8V7uTDnFaHekPL5572KWhup
   4=;
X-IronPort-AV: E=Sophos;i="6.05,200,1701129600"; 
   d="scan'208";a="266414239"
X-Farcaster-Flow-ID: 5204e9b5-4ffe-4f9b-a668-3a37bda75b90
From: Elias El Yandouzi <eliasely@amazon.com>
To: <xen-devel@lists.xenproject.org>
CC: <julien@xen.org>, <pdurrant@amazon.com>, <dwmw@amazon.com>, Hongyan Xia
	<hongyxia@amazon.com>, Andrew Cooper <andrew.cooper3@citrix.com>, "George
 Dunlap" <george.dunlap@citrix.com>, Jan Beulich <jbeulich@suse.com>, "Stefano
 Stabellini" <sstabellini@kernel.org>, Wei Liu <wl@xen.org>, Julien Grall
	<jgrall@amazon.com>, Elias El Yandouzi <eliasely@amazon.com>
Subject: [PATCH v2 (resend) 05/27] xen/numa: vmap the pages for memnodemap
Date: Tue, 16 Jan 2024 19:25:49 +0000
Message-ID: <20240116192611.41112-6-eliasely@amazon.com>
X-Mailer: git-send-email 2.40.1
In-Reply-To: <20240116192611.41112-1-eliasely@amazon.com>
References: <20240116192611.41112-1-eliasely@amazon.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
Precedence: Bulk

From: Hongyan Xia <hongyxia@amazon.com>

This avoids the assumption that there is a direct map and boot pages
fall inside the direct map.

Clean up the variables so that mfn actually stores a type-safe mfn.

Signed-off-by: Hongyan Xia <hongyxia@amazon.com>
Signed-off-by: Julien Grall <jgrall@amazon.com>
Signed-off-by: Elias El Yandouzi <eliasely@amazon.com>

----

    See the discussion in the next patch about using panic().

    Changes in v2:
        * vmap_contig_pages() was renamed to vmap_contig()
        * Replace the BUG_ON() with a panic()

    Changes compare to Hongyan's version:
        * The function modified was moved to common code. So rebase it
        * vmap_boot_pages() was renamed to vmap_contig_pages()

diff --git a/xen/common/numa.c b/xen/common/numa.c
index f454c4d894..ef13ec2255 100644
--- a/xen/common/numa.c
+++ b/xen/common/numa.c
@@ -424,13 +424,14 @@ static int __init populate_memnodemap(const struct node *nodes,
 static int __init allocate_cachealigned_memnodemap(void)
 {
     unsigned long size = PFN_UP(memnodemapsize * sizeof(*memnodemap));
-    unsigned long mfn = mfn_x(alloc_boot_pages(size, 1));
+    mfn_t mfn = alloc_boot_pages(size, 1);
 
-    memnodemap = mfn_to_virt(mfn);
-    mfn <<= PAGE_SHIFT;
+    memnodemap = vmap_contig(mfn, size);
+    if ( !memnodemap )
+        panic("Unable to map the ACPI SLIT. Retry with numa=off");
     size <<= PAGE_SHIFT;
     printk(KERN_DEBUG "NUMA: Allocated memnodemap from %lx - %lx\n",
-           mfn, mfn + size);
+           mfn_to_maddr(mfn), mfn_to_maddr(mfn) + size);
     memnodemapsize = size / sizeof(*memnodemap);
 
     return 0;
-- 
2.40.1



From xen-devel-bounces@lists.xenproject.org Tue Jan 16 19:26:35 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 16 Jan 2024 19:26:35 +0000
Received: from list by lists.xenproject.org with outflank-mailman.668082.1039997 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPp51-0003w6-9E; Tue, 16 Jan 2024 19:26:35 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 668082.1039997; Tue, 16 Jan 2024 19:26:35 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPp51-0003vB-3K; Tue, 16 Jan 2024 19:26:35 +0000
Received: by outflank-mailman (input) for mailman id 668082;
 Tue, 16 Jan 2024 19:26:34 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=wmx9=I2=amazon.co.uk=prvs=738631f0b=eliasely@srs-se1.protection.inumbo.net>)
 id 1rPp50-0003Xv-B2
 for xen-devel@lists.xenproject.org; Tue, 16 Jan 2024 19:26:34 +0000
Received: from smtp-fw-52005.amazon.com (smtp-fw-52005.amazon.com
 [52.119.213.156]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 27f17ebe-b4a5-11ee-98f1-6d05b1d4d9a1;
 Tue, 16 Jan 2024 20:26:33 +0100 (CET)
Received: from iad12-co-svc-p1-lb1-vlan3.amazon.com (HELO
 email-inbound-relay-iad-1a-m6i4x-edda28d4.us-east-1.amazon.com) ([10.43.8.6])
 by smtp-border-fw-52005.iad7.amazon.com with
 ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 16 Jan 2024 19:26:32 +0000
Received: from smtpout.prod.us-east-1.prod.farcaster.email.amazon.dev
 (iad7-ws-svc-p70-lb3-vlan3.iad.amazon.com [10.32.235.38])
 by email-inbound-relay-iad-1a-m6i4x-edda28d4.us-east-1.amazon.com (Postfix)
 with ESMTPS id E945E8054B; Tue, 16 Jan 2024 19:26:30 +0000 (UTC)
Received: from EX19MTAUEC002.ant.amazon.com [10.0.0.204:41793]
 by smtpin.naws.us-east-1.prod.farcaster.email.amazon.dev [10.0.95.118:2525]
 with esmtp (Farcaster)
 id 0048df5a-a8a5-4bf0-b47e-14349dd2b900; Tue, 16 Jan 2024 19:26:30 +0000 (UTC)
Received: from EX19D008UEA004.ant.amazon.com (10.252.134.191) by
 EX19MTAUEC002.ant.amazon.com (10.252.135.253) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1118.40; Tue, 16 Jan 2024 19:26:28 +0000
Received: from EX19MTAUEB001.ant.amazon.com (10.252.135.35) by
 EX19D008UEA004.ant.amazon.com (10.252.134.191) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1118.40; Tue, 16 Jan 2024 19:26:28 +0000
Received: from dev-dsk-eliasely-1a-fd74790f.eu-west-1.amazon.com
 (10.253.91.118) by mail-relay.amazon.com (10.252.135.35) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1118.40 via Frontend Transport; Tue, 16 Jan 2024 19:26:27 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 27f17ebe-b4a5-11ee-98f1-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
  d=amazon.com; i=@amazon.com; q=dns/txt; s=amazon201209;
  t=1705433193; x=1736969193;
  h=from:to:cc:subject:date:message-id:in-reply-to:
   references:mime-version:content-transfer-encoding;
  bh=fLyAFvpkS62mZ58f/yx9ju+/jVeXxTTvsO8RqlfEYZw=;
  b=O3Ir0SQYYqAaDqPjAZqr0BkVPlOZ7kl8wt79mIBfXuxBwmnYALJO7DFt
   JUz4AkNkoCpYcnDNDXPxh0FtSPIkVn9B2gc3LzfjLYo5Y6Haj1fxQhph6
   xadChpELoWUpo1JVJFwGZHmpzu+6hwdv0BOJCGAASWdGhI7dUrKRuY850
   E=;
X-IronPort-AV: E=Sophos;i="6.05,200,1701129600"; 
   d="scan'208";a="627983561"
X-Farcaster-Flow-ID: 0048df5a-a8a5-4bf0-b47e-14349dd2b900
From: Elias El Yandouzi <eliasely@amazon.com>
To: <xen-devel@lists.xenproject.org>
CC: <julien@xen.org>, <pdurrant@amazon.com>, <dwmw@amazon.com>, Hongyan Xia
	<hongyxia@amazon.com>, Jan Beulich <jbeulich@suse.com>, Andrew Cooper
	<andrew.cooper3@citrix.com>, =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?=
	<roger.pau@citrix.com>, Wei Liu <wl@xen.org>, Elias El Yandouzi
	<eliasely@amazon.com>
Subject: [PATCH v2 (resend) 10/27] x86/pv: Map L4 page table for shim domain
Date: Tue, 16 Jan 2024 19:25:54 +0000
Message-ID: <20240116192611.41112-11-eliasely@amazon.com>
X-Mailer: git-send-email 2.40.1
In-Reply-To: <20240116192611.41112-1-eliasely@amazon.com>
References: <20240116192611.41112-1-eliasely@amazon.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
Precedence: Bulk

From: Hongyan Xia <hongyxia@amazon.com>

The root page table is allocated from the domheap and isn't
mapped by default. Map it on demand to build pv shim domain.

Signed-off-by: Hongyan Xia <hongyxia@amazon.com>
Signed-off-by: Elias El Yandouzi <eliasely@amazon.com>

----

    Changes in v2:
        * New patch

diff --git a/xen/arch/x86/pv/dom0_build.c b/xen/arch/x86/pv/dom0_build.c
index dc5e9fe117..fc51c7d362 100644
--- a/xen/arch/x86/pv/dom0_build.c
+++ b/xen/arch/x86/pv/dom0_build.c
@@ -991,8 +991,12 @@ do {                                                    \
      * !CONFIG_VIDEO case so the logic here can be simplified.
      */
     if ( pv_shim )
+    {
+        l4start = map_domain_page(l4start_mfn);
         pv_shim_setup_dom(d, l4start, v_start, vxenstore_start, vconsole_start,
                           vphysmap_start, si);
+        UNMAP_DOMAIN_PAGE(l4start);
+    }
 
 #ifdef CONFIG_COMPAT
     if ( compat )
-- 
2.40.1



From xen-devel-bounces@lists.xenproject.org Tue Jan 16 19:26:36 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 16 Jan 2024 19:26:36 +0000
Received: from list by lists.xenproject.org with outflank-mailman.668083.1040011 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPp52-0004LT-NU; Tue, 16 Jan 2024 19:26:36 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 668083.1040011; Tue, 16 Jan 2024 19:26:36 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPp52-0004Jp-Hm; Tue, 16 Jan 2024 19:26:36 +0000
Received: by outflank-mailman (input) for mailman id 668083;
 Tue, 16 Jan 2024 19:26:35 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=wmx9=I2=amazon.co.uk=prvs=738631f0b=eliasely@srs-se1.protection.inumbo.net>)
 id 1rPp51-0003Xv-5F
 for xen-devel@lists.xenproject.org; Tue, 16 Jan 2024 19:26:35 +0000
Received: from smtp-fw-33001.amazon.com (smtp-fw-33001.amazon.com
 [207.171.190.10]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 27fc177c-b4a5-11ee-98f1-6d05b1d4d9a1;
 Tue, 16 Jan 2024 20:26:34 +0100 (CET)
Received: from iad12-co-svc-p1-lb1-vlan3.amazon.com (HELO
 email-inbound-relay-pdx-2b-m6i4x-cadc3fbd.us-west-2.amazon.com) ([10.43.8.6])
 by smtp-border-fw-33001.sea14.amazon.com with
 ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 16 Jan 2024 19:26:26 +0000
Received: from smtpout.prod.us-east-1.prod.farcaster.email.amazon.dev
 (pdx2-ws-svc-p26-lb5-vlan2.pdx.amazon.com [10.39.38.66])
 by email-inbound-relay-pdx-2b-m6i4x-cadc3fbd.us-west-2.amazon.com (Postfix)
 with ESMTPS id 653E0A0786; Tue, 16 Jan 2024 19:26:24 +0000 (UTC)
Received: from EX19MTAUEA002.ant.amazon.com [10.0.29.78:3848]
 by smtpin.naws.us-east-1.prod.farcaster.email.amazon.dev [10.0.41.129:2525]
 with esmtp (Farcaster)
 id f2469a8a-a9e5-458c-a299-f2be24413d76; Tue, 16 Jan 2024 19:26:24 +0000 (UTC)
Received: from EX19D008UEC004.ant.amazon.com (10.252.135.170) by
 EX19MTAUEA002.ant.amazon.com (10.252.134.9) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1118.40; Tue, 16 Jan 2024 19:26:23 +0000
Received: from EX19MTAUEB001.ant.amazon.com (10.252.135.35) by
 EX19D008UEC004.ant.amazon.com (10.252.135.170) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1118.40; Tue, 16 Jan 2024 19:26:23 +0000
Received: from dev-dsk-eliasely-1a-fd74790f.eu-west-1.amazon.com
 (10.253.91.118) by mail-relay.amazon.com (10.252.135.35) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1118.40 via Frontend Transport; Tue, 16 Jan 2024 19:26:22 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 27fc177c-b4a5-11ee-98f1-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
  d=amazon.com; i=@amazon.com; q=dns/txt; s=amazon201209;
  t=1705433194; x=1736969194;
  h=from:to:cc:subject:date:message-id:in-reply-to:
   references:mime-version:content-transfer-encoding;
  bh=0fmTmB+LBqRWLY5/DwT7016ODIBBvVRLjSKMws6FDOA=;
  b=POp82GfUbDdUSIH5x3gb2EEWALVUXCAbRcRJ21UT8KwWbs66r/fBF79L
   Er7/o2IFFOtE5fd8AI2ariNHKcMZqXAFuJOLJmkk/8Q8+ukwbX+wpk9Ge
   qcGqCyEaC1pza9GXQK29j7Xrx/ew6dzeotO6kIIYvbp0Nm5abX4OrVkzU
   0=;
X-IronPort-AV: E=Sophos;i="6.05,200,1701129600"; 
   d="scan'208";a="321879755"
X-Farcaster-Flow-ID: f2469a8a-a9e5-458c-a299-f2be24413d76
From: Elias El Yandouzi <eliasely@amazon.com>
To: <xen-devel@lists.xenproject.org>
CC: <julien@xen.org>, <pdurrant@amazon.com>, <dwmw@amazon.com>, Hongyan Xia
	<hongyxia@amazon.com>, Jan Beulich <jbeulich@suse.com>, Andrew Cooper
	<andrew.cooper3@citrix.com>, =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?=
	<roger.pau@citrix.com>, Wei Liu <wl@xen.org>, Julien Grall
	<jgrall@amazon.com>, Elias El Yandouzi <eliasely@amazon.com>
Subject: [PATCH v2 (resend) 06/27] x86/srat: vmap the pages for acpi_slit
Date: Tue, 16 Jan 2024 19:25:50 +0000
Message-ID: <20240116192611.41112-7-eliasely@amazon.com>
X-Mailer: git-send-email 2.40.1
In-Reply-To: <20240116192611.41112-1-eliasely@amazon.com>
References: <20240116192611.41112-1-eliasely@amazon.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
Precedence: Bulk

From: Hongyan Xia <hongyxia@amazon.com>

This avoids the assumption that boot pages are in the direct map.

Signed-off-by: Hongyan Xia <hongyxia@amazon.com>
Signed-off-by: Julien Grall <jgrall@amazon.com>
Signed-off-by: Elias El Yandouzi <eliasely@amazon.com>

----

    There was a discussion with Jan regarding early failure vs
    disable NUMA. I am strongly in favor of the latter because
    it is more obvious that something went wrong.

    From my understanding, Jan seems to be in favor of turning off NUMA
    and then continue to boot. But then implied that a panic() would be
    fine.

    So I went with the panic() version. I am happy to rework it to another
    approach if there is a consensus.

    Changes in v2:
        * vmap_contig_pages() was renamed to vmap_contig()
        * Use a panic() rather than BUG_ON()

    Changes since Hongyan's version:
        * vmap_boot_pages() was renamed to vmap_contig_pages()

diff --git a/xen/arch/x86/srat.c b/xen/arch/x86/srat.c
index 3f70338e6e..688f410287 100644
--- a/xen/arch/x86/srat.c
+++ b/xen/arch/x86/srat.c
@@ -135,7 +135,9 @@ void __init acpi_numa_slit_init(struct acpi_table_slit *slit)
 		return;
 	}
 	mfn = alloc_boot_pages(PFN_UP(slit->header.length), 1);
-	acpi_slit = mfn_to_virt(mfn_x(mfn));
+	acpi_slit = vmap_contig(mfn, PFN_UP(slit->header.length));
+	if ( !acpi_slit )
+		panic("Unable to map the ACPI SLIT. Retry with numa=off");
 	memcpy(acpi_slit, slit, slit->header.length);
 }
 
-- 
2.40.1



From xen-devel-bounces@lists.xenproject.org Tue Jan 16 19:26:37 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 16 Jan 2024 19:26:37 +0000
Received: from list by lists.xenproject.org with outflank-mailman.668084.1040017 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPp53-0004QK-77; Tue, 16 Jan 2024 19:26:37 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 668084.1040017; Tue, 16 Jan 2024 19:26:37 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPp52-0004OT-UE; Tue, 16 Jan 2024 19:26:36 +0000
Received: by outflank-mailman (input) for mailman id 668084;
 Tue, 16 Jan 2024 19:26:35 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=wmx9=I2=amazon.co.uk=prvs=738631f0b=eliasely@srs-se1.protection.inumbo.net>)
 id 1rPp51-0002iI-BF
 for xen-devel@lists.xenproject.org; Tue, 16 Jan 2024 19:26:35 +0000
Received: from smtp-fw-9106.amazon.com (smtp-fw-9106.amazon.com
 [207.171.188.206]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 277952f4-b4a5-11ee-9b0f-b553b5be7939;
 Tue, 16 Jan 2024 20:26:33 +0100 (CET)
Received: from pdx4-co-svc-p1-lb2-vlan2.amazon.com (HELO
 email-inbound-relay-iad-1a-m6i4x-b5bd57cf.us-east-1.amazon.com)
 ([10.25.36.210]) by smtp-border-fw-9106.sea19.amazon.com with
 ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 16 Jan 2024 19:26:25 +0000
Received: from smtpout.prod.us-east-1.prod.farcaster.email.amazon.dev
 (iad7-ws-svc-p70-lb3-vlan3.iad.amazon.com [10.32.235.38])
 by email-inbound-relay-iad-1a-m6i4x-b5bd57cf.us-east-1.amazon.com (Postfix)
 with ESMTPS id 2AEEA4A030; Tue, 16 Jan 2024 19:26:22 +0000 (UTC)
Received: from EX19MTAUEA002.ant.amazon.com [10.0.29.78:58155]
 by smtpin.naws.us-east-1.prod.farcaster.email.amazon.dev [10.0.28.244:2525]
 with esmtp (Farcaster)
 id fbe8e0d8-d681-4c49-bf24-a619c28870a6; Tue, 16 Jan 2024 19:26:21 +0000 (UTC)
Received: from EX19D008UEA004.ant.amazon.com (10.252.134.191) by
 EX19MTAUEA002.ant.amazon.com (10.252.134.9) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1118.40; Tue, 16 Jan 2024 19:26:20 +0000
Received: from EX19MTAUEB001.ant.amazon.com (10.252.135.35) by
 EX19D008UEA004.ant.amazon.com (10.252.134.191) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1118.40; Tue, 16 Jan 2024 19:26:19 +0000
Received: from dev-dsk-eliasely-1a-fd74790f.eu-west-1.amazon.com
 (10.253.91.118) by mail-relay.amazon.com (10.252.135.35) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1118.40 via Frontend Transport; Tue, 16 Jan 2024 19:26:18 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 277952f4-b4a5-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
  d=amazon.com; i=@amazon.com; q=dns/txt; s=amazon201209;
  t=1705433193; x=1736969193;
  h=from:to:cc:subject:date:message-id:in-reply-to:
   references:mime-version:content-transfer-encoding;
  bh=8FsCSW5o3cFuUs+oU0aAarf/rBoTpzODox4faRm0p08=;
  b=J/V+Yegr1PjiC7Loro6hTCvK6l4wKK4yIqNBCNTT7uq6rBaoYIuOhcta
   NXmR23Xt5bw+DKtYQQx3B1OXy9ck1aUnSeY0cczTpWUvqbX7gbQv2tGeH
   eKQO7FrCRCZvOWHgwH0K9/xYnmgl1d7XENvk4T91kpTrvzMRrKfKKg57E
   s=;
X-IronPort-AV: E=Sophos;i="6.05,200,1701129600"; 
   d="scan'208";a="697582403"
X-Farcaster-Flow-ID: fbe8e0d8-d681-4c49-bf24-a619c28870a6
From: Elias El Yandouzi <eliasely@amazon.com>
To: <xen-devel@lists.xenproject.org>
CC: <julien@xen.org>, <pdurrant@amazon.com>, <dwmw@amazon.com>, Julien Grall
	<jgrall@amazon.com>, Andrew Cooper <andrew.cooper3@citrix.com>, George Dunlap
	<george.dunlap@citrix.com>, Jan Beulich <jbeulich@suse.com>, "Stefano
 Stabellini" <sstabellini@kernel.org>, Wei Liu <wl@xen.org>, Elias El Yandouzi
	<eliasely@amazon.com>
Subject: [PATCH v2 (resend) 03/27] xen/vmap: Introduce vmap_size() and use it
Date: Tue, 16 Jan 2024 19:25:47 +0000
Message-ID: <20240116192611.41112-4-eliasely@amazon.com>
X-Mailer: git-send-email 2.40.1
In-Reply-To: <20240116192611.41112-1-eliasely@amazon.com>
References: <20240116192611.41112-1-eliasely@amazon.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
Precedence: Bulk

From: Julien Grall <jgrall@amazon.com>

vunmap() and vfree() currently duplicate the (small) logic to find the
size of an vmap area. In a follow-up patch, we will want to introduce
another one (this time externally).

So introduce a new helper vmap_size() that will return the number of
pages in the area starting at the given address. Take the opportunity
to replace the open-coded version.

Note that vfree() was storing the type of the area in a local variable.
But this seems to have never been used (even when it was introduced).

Signed-off-by: Julien Grall <jgrall@amazon.com>
Signed-off-by: Elias El Yandouzi <eliasely@amazon.com>

----

    Changes in v2:
        * Patch added

diff --git a/xen/common/vmap.c b/xen/common/vmap.c
index fc5c70da4d..171271fae3 100644
--- a/xen/common/vmap.c
+++ b/xen/common/vmap.c
@@ -245,14 +245,21 @@ void *vmap(const mfn_t *mfn, unsigned int nr)
     return __vmap(mfn, 1, nr, 1, PAGE_HYPERVISOR, VMAP_DEFAULT);
 }
 
-void vunmap(const void *va)
+unsigned int vmap_size(const void *va)
 {
-    unsigned long addr = (unsigned long)va;
     unsigned int pages = vm_size(va, VMAP_DEFAULT);
 
     if ( !pages )
         pages = vm_size(va, VMAP_XEN);
 
+    return pages;
+}
+
+void vunmap(const void *va)
+{
+    unsigned long addr = (unsigned long)va;
+    unsigned pages = vmap_size(va);
+
 #ifndef _PAGE_NONE
     destroy_xen_mappings(addr, addr + PAGE_SIZE * pages);
 #else /* Avoid tearing down intermediate page tables. */
@@ -328,17 +335,11 @@ void vfree(void *va)
     unsigned int i, pages;
     struct page_info *pg;
     PAGE_LIST_HEAD(pg_list);
-    enum vmap_region type = VMAP_DEFAULT;
 
     if ( !va )
         return;
 
-    pages = vm_size(va, type);
-    if ( !pages )
-    {
-        type = VMAP_XEN;
-        pages = vm_size(va, type);
-    }
+    pages = vmap_size(va);
     ASSERT(pages);
 
     for ( i = 0; i < pages; i++ )
diff --git a/xen/include/xen/vmap.h b/xen/include/xen/vmap.h
index 2b7369e062..24c85de490 100644
--- a/xen/include/xen/vmap.h
+++ b/xen/include/xen/vmap.h
@@ -25,6 +25,9 @@ void vfree(void *va);
 
 void __iomem *ioremap(paddr_t pa, size_t len);
 
+/* Return the number of pages in the mapping starting at address 'va' */
+unsigned int vmap_size(const void *va);
+
 static inline void iounmap(void __iomem *va)
 {
     unsigned long addr = (unsigned long)(void __force *)va;
-- 
2.40.1



From xen-devel-bounces@lists.xenproject.org Tue Jan 16 19:26:38 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 16 Jan 2024 19:26:38 +0000
Received: from list by lists.xenproject.org with outflank-mailman.668086.1040029 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPp54-0004sG-Ka; Tue, 16 Jan 2024 19:26:38 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 668086.1040029; Tue, 16 Jan 2024 19:26:38 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPp54-0004qW-CS; Tue, 16 Jan 2024 19:26:38 +0000
Received: by outflank-mailman (input) for mailman id 668086;
 Tue, 16 Jan 2024 19:26:36 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=wmx9=I2=amazon.co.uk=prvs=738631f0b=eliasely@srs-se1.protection.inumbo.net>)
 id 1rPp52-0003Xv-Pk
 for xen-devel@lists.xenproject.org; Tue, 16 Jan 2024 19:26:36 +0000
Received: from smtp-fw-80007.amazon.com (smtp-fw-80007.amazon.com
 [99.78.197.218]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 27577966-b4a5-11ee-98f1-6d05b1d4d9a1;
 Tue, 16 Jan 2024 20:26:34 +0100 (CET)
Received: from pdx4-co-svc-p1-lb2-vlan2.amazon.com (HELO
 email-inbound-relay-iad-1a-m6i4x-96feee09.us-east-1.amazon.com)
 ([10.25.36.210]) by smtp-border-fw-80007.pdx80.corp.amazon.com with
 ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 16 Jan 2024 19:26:29 +0000
Received: from smtpout.prod.us-east-1.prod.farcaster.email.amazon.dev
 (iad7-ws-svc-p70-lb3-vlan2.iad.amazon.com [10.32.235.34])
 by email-inbound-relay-iad-1a-m6i4x-96feee09.us-east-1.amazon.com (Postfix)
 with ESMTPS id 87DC94AC9A; Tue, 16 Jan 2024 19:26:24 +0000 (UTC)
Received: from EX19MTAUEB002.ant.amazon.com [10.0.29.78:45401]
 by smtpin.naws.us-east-1.prod.farcaster.email.amazon.dev [10.0.89.133:2525]
 with esmtp (Farcaster)
 id d55e2cef-2007-41b2-bf89-6108138fb5eb; Tue, 16 Jan 2024 19:26:24 +0000 (UTC)
Received: from EX19D008UEA003.ant.amazon.com (10.252.134.116) by
 EX19MTAUEB002.ant.amazon.com (10.252.135.47) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1118.40; Tue, 16 Jan 2024 19:26:21 +0000
Received: from EX19MTAUEB001.ant.amazon.com (10.252.135.35) by
 EX19D008UEA003.ant.amazon.com (10.252.134.116) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1118.40; Tue, 16 Jan 2024 19:26:21 +0000
Received: from dev-dsk-eliasely-1a-fd74790f.eu-west-1.amazon.com
 (10.253.91.118) by mail-relay.amazon.com (10.252.135.35) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1118.40 via Frontend Transport; Tue, 16 Jan 2024 19:26:20 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 27577966-b4a5-11ee-98f1-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
  d=amazon.com; i=@amazon.com; q=dns/txt; s=amazon201209;
  t=1705433195; x=1736969195;
  h=from:to:cc:subject:date:message-id:in-reply-to:
   references:mime-version:content-transfer-encoding;
  bh=OfEYXQrUMYXPAWM79GmQhfyI8aqQMCL5v2pGd2UmDoQ=;
  b=mvOpX/TXdj8oavfa8ECbnQDh7OTbLI8rQZ6s+NH4M0rXJM9ftnaqBZhf
   ECzpwxxmbcdwJqGLaLCLO9ZglXT2dBvE09QcpFu6+d+UryDYfZ8E0teEx
   V1CFfYpaKtV/qDTWpfzqVVY9CN3eOY0enQhBvE5BXF8XyaMskQbrwagl5
   g=;
X-IronPort-AV: E=Sophos;i="6.05,200,1701129600"; 
   d="scan'208";a="267191231"
X-Farcaster-Flow-ID: d55e2cef-2007-41b2-bf89-6108138fb5eb
From: Elias El Yandouzi <eliasely@amazon.com>
To: <xen-devel@lists.xenproject.org>
CC: <julien@xen.org>, <pdurrant@amazon.com>, <dwmw@amazon.com>, Hongyan Xia
	<hongyxia@amazon.com>, Andrew Cooper <andrew.cooper3@citrix.com>, "George
 Dunlap" <george.dunlap@citrix.com>, Jan Beulich <jbeulich@suse.com>, "Stefano
 Stabellini" <sstabellini@kernel.org>, Wei Liu <wl@xen.org>, Julien Grall
	<jgrall@amazon.com>, Elias El Yandouzi <eliasely@amazon.com>
Subject: [PATCH v2 (resend) 04/27] acpi: vmap pages in acpi_os_alloc_memory
Date: Tue, 16 Jan 2024 19:25:48 +0000
Message-ID: <20240116192611.41112-5-eliasely@amazon.com>
X-Mailer: git-send-email 2.40.1
In-Reply-To: <20240116192611.41112-1-eliasely@amazon.com>
References: <20240116192611.41112-1-eliasely@amazon.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
Precedence: Bulk

From: Hongyan Xia <hongyxia@amazon.com>

Also, introduce a wrapper around vmap that maps a contiguous range for
boot allocations. Unfortunately, the new helper cannot be a static inline
because the dependencies are a mess. We would need to re-include
asm/page.h (was removed in aa4b9d1ee653 "include: don't use asm/page.h
from common headers") and it doesn't look to be enough anymore
because bits from asm/cpufeature.h is used in the definition of PAGE_NX.

Lastly, with the move to vmap(), it is now easier to find the size
of the mapping. So pass the whole area to init_boot_pages() rather than
just the first page.

Signed-off-by: Hongyan Xia <hongyxia@amazon.com>
Signed-off-by: Julien Grall <jgrall@amazon.com>
Signed-off-by: Elias El Yandouzi <eliasely@amazon.com>

----

    Changes in v2:
        * Rename vmap_contig_pages() to vmap_contig()
        * Rename nr_pages to nr to be consistent with vmap() parameters
        * Pass the whole region to init_boot_pages()

    Changes since Hongyan's version:
        * Rename vmap_boot_pages() to vmap_contig_pages()
        * Move the new helper in vmap.c to avoid compilation issue
        * Don't use __pa() to translate the virtual address

diff --git a/xen/common/vmap.c b/xen/common/vmap.c
index 171271fae3..966a7e763f 100644
--- a/xen/common/vmap.c
+++ b/xen/common/vmap.c
@@ -245,6 +245,11 @@ void *vmap(const mfn_t *mfn, unsigned int nr)
     return __vmap(mfn, 1, nr, 1, PAGE_HYPERVISOR, VMAP_DEFAULT);
 }
 
+void *vmap_contig(mfn_t mfn, unsigned int nr)
+{
+    return __vmap(&mfn, nr, 1, 1, PAGE_HYPERVISOR, VMAP_DEFAULT);
+}
+
 unsigned int vmap_size(const void *va)
 {
     unsigned int pages = vm_size(va, VMAP_DEFAULT);
diff --git a/xen/drivers/acpi/osl.c b/xen/drivers/acpi/osl.c
index 389505f786..ab80d6b2a9 100644
--- a/xen/drivers/acpi/osl.c
+++ b/xen/drivers/acpi/osl.c
@@ -221,7 +221,11 @@ void *__init acpi_os_alloc_memory(size_t sz)
 	void *ptr;
 
 	if (system_state == SYS_STATE_early_boot)
-		return mfn_to_virt(mfn_x(alloc_boot_pages(PFN_UP(sz), 1)));
+	{
+		mfn_t mfn = alloc_boot_pages(PFN_UP(sz), 1);
+
+		return vmap_contig(mfn, PFN_UP(sz));
+	}
 
 	ptr = xmalloc_bytes(sz);
 	ASSERT(!ptr || is_xmalloc_memory(ptr));
@@ -246,5 +250,11 @@ void __init acpi_os_free_memory(void *ptr)
 	if (is_xmalloc_memory(ptr))
 		xfree(ptr);
 	else if (ptr && system_state == SYS_STATE_early_boot)
-		init_boot_pages(__pa(ptr), __pa(ptr) + PAGE_SIZE);
+	{
+		paddr_t addr = mfn_to_maddr(vmap_to_mfn(ptr));
+		unsigned int nr = vmap_size(ptr);
+
+		vunmap(ptr);
+		init_boot_pages(addr, addr + nr * PAGE_SIZE);
+	}
 }
diff --git a/xen/include/xen/vmap.h b/xen/include/xen/vmap.h
index 24c85de490..0c16baa85f 100644
--- a/xen/include/xen/vmap.h
+++ b/xen/include/xen/vmap.h
@@ -15,6 +15,7 @@ void vm_init_type(enum vmap_region type, void *start, void *end);
 void *__vmap(const mfn_t *mfn, unsigned int granularity, unsigned int nr,
              unsigned int align, unsigned int flags, enum vmap_region type);
 void *vmap(const mfn_t *mfn, unsigned int nr);
+void *vmap_contig(mfn_t mfn, unsigned int nr);
 void vunmap(const void *va);
 
 void *vmalloc(size_t size);
-- 
2.40.1



From xen-devel-bounces@lists.xenproject.org Tue Jan 16 19:26:40 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 16 Jan 2024 19:26:40 +0000
Received: from list by lists.xenproject.org with outflank-mailman.668087.1040040 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPp56-0005Gp-Bj; Tue, 16 Jan 2024 19:26:40 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 668087.1040040; Tue, 16 Jan 2024 19:26:40 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPp56-0005Fp-0O; Tue, 16 Jan 2024 19:26:40 +0000
Received: by outflank-mailman (input) for mailman id 668087;
 Tue, 16 Jan 2024 19:26:37 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=wmx9=I2=amazon.co.uk=prvs=738631f0b=eliasely@srs-se1.protection.inumbo.net>)
 id 1rPp53-0003Xv-Py
 for xen-devel@lists.xenproject.org; Tue, 16 Jan 2024 19:26:37 +0000
Received: from smtp-fw-80006.amazon.com (smtp-fw-80006.amazon.com
 [99.78.197.217]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 29504aca-b4a5-11ee-98f1-6d05b1d4d9a1;
 Tue, 16 Jan 2024 20:26:35 +0100 (CET)
Received: from pdx4-co-svc-p1-lb2-vlan3.amazon.com (HELO
 email-inbound-relay-iad-1d-m6i4x-d8e96288.us-east-1.amazon.com)
 ([10.25.36.214]) by smtp-border-fw-80006.pdx80.corp.amazon.com with
 ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 16 Jan 2024 19:26:34 +0000
Received: from smtpout.prod.us-east-1.prod.farcaster.email.amazon.dev
 (iad7-ws-svc-p70-lb3-vlan3.iad.amazon.com [10.32.235.38])
 by email-inbound-relay-iad-1d-m6i4x-d8e96288.us-east-1.amazon.com (Postfix)
 with ESMTPS id 0B9FF84687; Tue, 16 Jan 2024 19:26:32 +0000 (UTC)
Received: from EX19MTAUEA001.ant.amazon.com [10.0.29.78:62111]
 by smtpin.naws.us-east-1.prod.farcaster.email.amazon.dev [10.0.3.20:2525] with
 esmtp (Farcaster)
 id 846161f4-2e4f-42ab-89d6-60167c58a568; Tue, 16 Jan 2024 19:26:31 +0000 (UTC)
Received: from EX19D008UEA003.ant.amazon.com (10.252.134.116) by
 EX19MTAUEA001.ant.amazon.com (10.252.134.203) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1118.40; Tue, 16 Jan 2024 19:26:27 +0000
Received: from EX19MTAUEB001.ant.amazon.com (10.252.135.35) by
 EX19D008UEA003.ant.amazon.com (10.252.134.116) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1118.40; Tue, 16 Jan 2024 19:26:26 +0000
Received: from dev-dsk-eliasely-1a-fd74790f.eu-west-1.amazon.com
 (10.253.91.118) by mail-relay.amazon.com (10.252.135.35) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1118.40 via Frontend Transport; Tue, 16 Jan 2024 19:26:26 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 29504aca-b4a5-11ee-98f1-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
  d=amazon.com; i=@amazon.com; q=dns/txt; s=amazon201209;
  t=1705433196; x=1736969196;
  h=from:to:cc:subject:date:message-id:in-reply-to:
   references:mime-version:content-transfer-encoding;
  bh=DFq2dA1Yv5iX6XPtrbHhlSvMP8eVQGNEuxktAlGi9eU=;
  b=dMwbuIaji5I2hq6UW4g9jr9Y71QHDR4pjajcOe7nHtWjOFy+1+LQuIe/
   TkZ1dXIBmxjcWuL9HLHPW5PreWekHUNVbqiJsnd7FYta6U7nrowdYg+zP
   Rf33//GMW6ojHtHHLOG08zpoZjUkqP/R60fbfQTpWf9ECsbiaaFQiwXnJ
   E=;
X-IronPort-AV: E=Sophos;i="6.05,200,1701129600"; 
   d="scan'208";a="266414258"
X-Farcaster-Flow-ID: 846161f4-2e4f-42ab-89d6-60167c58a568
From: Elias El Yandouzi <eliasely@amazon.com>
To: <xen-devel@lists.xenproject.org>
CC: <julien@xen.org>, <pdurrant@amazon.com>, <dwmw@amazon.com>, Hongyan Xia
	<hongyxia@amazon.com>, Jan Beulich <jbeulich@suse.com>, Andrew Cooper
	<andrew.cooper3@citrix.com>, =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?=
	<roger.pau@citrix.com>, Wei Liu <wl@xen.org>, Julien Grall
	<jgrall@amazon.com>, Elias El Yandouzi <eliasely@amazon.com>
Subject: [PATCH v2 (resend) 09/27] x86/pv: Rewrite how building PV dom0 handles domheap mappings
Date: Tue, 16 Jan 2024 19:25:53 +0000
Message-ID: <20240116192611.41112-10-eliasely@amazon.com>
X-Mailer: git-send-email 2.40.1
In-Reply-To: <20240116192611.41112-1-eliasely@amazon.com>
References: <20240116192611.41112-1-eliasely@amazon.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
Precedence: Bulk

From: Hongyan Xia <hongyxia@amazon.com>

Building a PV dom0 is allocating from the domheap but uses it like the
xenheap. Use the pages as they should be.

Signed-off-by: Hongyan Xia <hongyxia@amazon.com>
Signed-off-by: Julien Grall <jgrall@amazon.com>
Signed-off-by: Elias El Yandouzi <eliasely@amazon.com>

----

    Changes in V2:
        * Clarify the commit message
        * Break the patch in two parts

    Changes since Hongyan's version:
        * Rebase
        * Remove spurious newline

diff --git a/xen/arch/x86/pv/dom0_build.c b/xen/arch/x86/pv/dom0_build.c
index 5659814e0c..dc5e9fe117 100644
--- a/xen/arch/x86/pv/dom0_build.c
+++ b/xen/arch/x86/pv/dom0_build.c
@@ -382,6 +382,10 @@ int __init dom0_construct_pv(struct domain *d,
     l3_pgentry_t *l3tab = NULL, *l3start = NULL;
     l2_pgentry_t *l2tab = NULL, *l2start = NULL;
     l1_pgentry_t *l1tab = NULL, *l1start = NULL;
+    mfn_t l4start_mfn = INVALID_MFN;
+    mfn_t l3start_mfn = INVALID_MFN;
+    mfn_t l2start_mfn = INVALID_MFN;
+    mfn_t l1start_mfn = INVALID_MFN;
 
     /*
      * This fully describes the memory layout of the initial domain. All
@@ -708,22 +712,32 @@ int __init dom0_construct_pv(struct domain *d,
         v->arch.pv.event_callback_cs    = FLAT_COMPAT_KERNEL_CS;
     }
 
+#define UNMAP_MAP_AND_ADVANCE(mfn_var, virt_var, maddr) \
+do {                                                    \
+    unmap_domain_page(virt_var);                        \
+    mfn_var = maddr_to_mfn(maddr);                      \
+    maddr += PAGE_SIZE;                                 \
+    virt_var = map_domain_page(mfn_var);                \
+} while ( false )
+
     if ( !compat )
     {
         maddr_to_page(mpt_alloc)->u.inuse.type_info = PGT_l4_page_table;
-        l4start = l4tab = __va(mpt_alloc); mpt_alloc += PAGE_SIZE;
+        UNMAP_MAP_AND_ADVANCE(l4start_mfn, l4start, mpt_alloc);
+        l4tab = l4start;
         clear_page(l4tab);
-        init_xen_l4_slots(l4tab, _mfn(virt_to_mfn(l4start)),
-                          d, INVALID_MFN, true);
-        v->arch.guest_table = pagetable_from_paddr(__pa(l4start));
+        init_xen_l4_slots(l4tab, l4start_mfn, d, INVALID_MFN, true);
+        v->arch.guest_table = pagetable_from_mfn(l4start_mfn);
     }
     else
     {
         /* Monitor table already created by switch_compat(). */
-        l4start = l4tab = __va(pagetable_get_paddr(v->arch.guest_table));
+        l4start_mfn = pagetable_get_mfn(v->arch.guest_table);
+        l4start = l4tab = map_domain_page(l4start_mfn);
         /* See public/xen.h on why the following is needed. */
         maddr_to_page(mpt_alloc)->u.inuse.type_info = PGT_l3_page_table;
         l3start = __va(mpt_alloc); mpt_alloc += PAGE_SIZE;
+        UNMAP_MAP_AND_ADVANCE(l3start_mfn, l3start, mpt_alloc);
     }
 
     l4tab += l4_table_offset(v_start);
@@ -733,14 +747,16 @@ int __init dom0_construct_pv(struct domain *d,
         if ( !((unsigned long)l1tab & (PAGE_SIZE-1)) )
         {
             maddr_to_page(mpt_alloc)->u.inuse.type_info = PGT_l1_page_table;
-            l1start = l1tab = __va(mpt_alloc); mpt_alloc += PAGE_SIZE;
+            UNMAP_MAP_AND_ADVANCE(l1start_mfn, l1start, mpt_alloc);
+            l1tab = l1start;
             clear_page(l1tab);
             if ( count == 0 )
                 l1tab += l1_table_offset(v_start);
             if ( !((unsigned long)l2tab & (PAGE_SIZE-1)) )
             {
                 maddr_to_page(mpt_alloc)->u.inuse.type_info = PGT_l2_page_table;
-                l2start = l2tab = __va(mpt_alloc); mpt_alloc += PAGE_SIZE;
+                UNMAP_MAP_AND_ADVANCE(l2start_mfn, l2start, mpt_alloc);
+                l2tab = l2start;
                 clear_page(l2tab);
                 if ( count == 0 )
                     l2tab += l2_table_offset(v_start);
@@ -750,19 +766,19 @@ int __init dom0_construct_pv(struct domain *d,
                     {
                         maddr_to_page(mpt_alloc)->u.inuse.type_info =
                             PGT_l3_page_table;
-                        l3start = __va(mpt_alloc); mpt_alloc += PAGE_SIZE;
+                        UNMAP_MAP_AND_ADVANCE(l3start_mfn, l3start, mpt_alloc);
                     }
                     l3tab = l3start;
                     clear_page(l3tab);
                     if ( count == 0 )
                         l3tab += l3_table_offset(v_start);
-                    *l4tab = l4e_from_paddr(__pa(l3start), L4_PROT);
+                    *l4tab = l4e_from_mfn(l3start_mfn, L4_PROT);
                     l4tab++;
                 }
-                *l3tab = l3e_from_paddr(__pa(l2start), L3_PROT);
+                *l3tab = l3e_from_mfn(l2start_mfn, L3_PROT);
                 l3tab++;
             }
-            *l2tab = l2e_from_paddr(__pa(l1start), L2_PROT);
+            *l2tab = l2e_from_mfn(l1start_mfn, L2_PROT);
             l2tab++;
         }
         if ( count < initrd_pfn || count >= initrd_pfn + PFN_UP(initrd_len) )
@@ -781,30 +797,34 @@ int __init dom0_construct_pv(struct domain *d,
 
     if ( compat )
     {
-        l2_pgentry_t *l2t;
-
         /* Ensure the first four L3 entries are all populated. */
         for ( i = 0, l3tab = l3start; i < 4; ++i, ++l3tab )
         {
             if ( !l3e_get_intpte(*l3tab) )
             {
                 maddr_to_page(mpt_alloc)->u.inuse.type_info = PGT_l2_page_table;
-                l2tab = __va(mpt_alloc); mpt_alloc += PAGE_SIZE;
-                clear_page(l2tab);
-                *l3tab = l3e_from_paddr(__pa(l2tab), L3_PROT);
+                UNMAP_MAP_AND_ADVANCE(l2start_mfn, l2start, mpt_alloc);
+                clear_page(l2start);
+                *l3tab = l3e_from_mfn(l2start_mfn, L3_PROT);
             }
             if ( i == 3 )
                 l3e_get_page(*l3tab)->u.inuse.type_info |= PGT_pae_xen_l2;
         }
 
-        l2t = map_l2t_from_l3e(l3start[3]);
-        init_xen_pae_l2_slots(l2t, d);
-        unmap_domain_page(l2t);
+        init_xen_pae_l2_slots(l2start, d);
     }
 
+#undef UNMAP_MAP_AND_ADVANCE
+
+    UNMAP_DOMAIN_PAGE(l1start);
+    UNMAP_DOMAIN_PAGE(l2start);
+    UNMAP_DOMAIN_PAGE(l3start);
+
     /* Pages that are part of page tables must be read only. */
     mark_pv_pt_pages_rdonly(d, l4start, vpt_start, nr_pt_pages, &flush_flags);
 
+    UNMAP_DOMAIN_PAGE(l4start);
+
     /* Mask all upcalls... */
     for ( i = 0; i < XEN_LEGACY_MAX_VCPUS; i++ )
         shared_info(d, vcpu_info[i].evtchn_upcall_mask) = 1;
-- 
2.40.1



From xen-devel-bounces@lists.xenproject.org Tue Jan 16 19:26:41 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 16 Jan 2024 19:26:41 +0000
Received: from list by lists.xenproject.org with outflank-mailman.668088.1040046 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPp57-0005No-3f; Tue, 16 Jan 2024 19:26:41 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 668088.1040046; Tue, 16 Jan 2024 19:26:41 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPp56-0005MW-Nv; Tue, 16 Jan 2024 19:26:40 +0000
Received: by outflank-mailman (input) for mailman id 668088;
 Tue, 16 Jan 2024 19:26:38 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=wmx9=I2=amazon.co.uk=prvs=738631f0b=eliasely@srs-se1.protection.inumbo.net>)
 id 1rPp54-0002iI-7M
 for xen-devel@lists.xenproject.org; Tue, 16 Jan 2024 19:26:38 +0000
Received: from smtp-fw-80009.amazon.com (smtp-fw-80009.amazon.com
 [99.78.197.220]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 291ce992-b4a5-11ee-9b0f-b553b5be7939;
 Tue, 16 Jan 2024 20:26:36 +0100 (CET)
Received: from pdx4-co-svc-p1-lb2-vlan2.amazon.com (HELO
 email-inbound-relay-pdx-2b-m6i4x-cadc3fbd.us-west-2.amazon.com)
 ([10.25.36.210]) by smtp-border-fw-80009.pdx80.corp.amazon.com with
 ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 16 Jan 2024 19:26:34 +0000
Received: from smtpout.prod.us-east-1.prod.farcaster.email.amazon.dev
 (pdx2-ws-svc-p26-lb5-vlan2.pdx.amazon.com [10.39.38.66])
 by email-inbound-relay-pdx-2b-m6i4x-cadc3fbd.us-west-2.amazon.com (Postfix)
 with ESMTPS id DA6CEA0786; Tue, 16 Jan 2024 19:26:33 +0000 (UTC)
Received: from EX19MTAUEC001.ant.amazon.com [10.0.0.204:53301]
 by smtpin.naws.us-east-1.prod.farcaster.email.amazon.dev [10.0.15.248:2525]
 with esmtp (Farcaster)
 id c4ea0858-a181-498a-b9e5-5a7364e4b9d8; Tue, 16 Jan 2024 19:26:33 +0000 (UTC)
Received: from EX19D008UEA004.ant.amazon.com (10.252.134.191) by
 EX19MTAUEC001.ant.amazon.com (10.252.135.222) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1118.40; Tue, 16 Jan 2024 19:26:29 +0000
Received: from EX19MTAUEB001.ant.amazon.com (10.252.135.35) by
 EX19D008UEA004.ant.amazon.com (10.252.134.191) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1118.40; Tue, 16 Jan 2024 19:26:29 +0000
Received: from dev-dsk-eliasely-1a-fd74790f.eu-west-1.amazon.com
 (10.253.91.118) by mail-relay.amazon.com (10.252.135.35) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1118.40 via Frontend Transport; Tue, 16 Jan 2024 19:26:28 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 291ce992-b4a5-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
  d=amazon.com; i=@amazon.com; q=dns/txt; s=amazon201209;
  t=1705433196; x=1736969196;
  h=from:to:cc:subject:date:message-id:in-reply-to:
   references:mime-version:content-transfer-encoding;
  bh=Dpcwsrxvbe9T9hoTCd3fMKYWwbTAEp7kfzrhfuwZSAw=;
  b=HrUtGVMS8rkpFHNHM+OEnP8idThelxNKdXx+SpQg9rpAwjr5YOVFJ/H0
   cfyUx36ZyaqUwEO2CqONPOWNiaplyzg+EiopIy8ruHuskOVo9wA3K+ACP
   zypbvy5+jTrjiScFRupNH+HATWavRsFl3iYAm8GVWxAlH+qcr0FtCps8o
   0=;
X-IronPort-AV: E=Sophos;i="6.05,200,1701129600"; 
   d="scan'208";a="58701489"
X-Farcaster-Flow-ID: c4ea0858-a181-498a-b9e5-5a7364e4b9d8
From: Elias El Yandouzi <eliasely@amazon.com>
To: <xen-devel@lists.xenproject.org>
CC: <julien@xen.org>, <pdurrant@amazon.com>, <dwmw@amazon.com>, Wei Liu
	<wei.liu2@citrix.com>, Jan Beulich <jbeulich@suse.com>, Andrew Cooper
	<andrew.cooper3@citrix.com>, =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?=
	<roger.pau@citrix.com>, Wei Liu <wl@xen.org>, Wei Wang <wawei@amazon.de>,
	Hongyan Xia <hongyxia@amazon.com>, Julien Grall <jgrall@amazon.com>
Subject: [PATCH v2 (resend) 11/27] x86: Lift mapcache variable to the arch level
Date: Tue, 16 Jan 2024 19:25:55 +0000
Message-ID: <20240116192611.41112-12-eliasely@amazon.com>
X-Mailer: git-send-email 2.40.1
In-Reply-To: <20240116192611.41112-1-eliasely@amazon.com>
References: <20240116192611.41112-1-eliasely@amazon.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
Precedence: Bulk

From: Wei Liu <wei.liu2@citrix.com>

It is going to be needed by HVM and idle domain as well, because without
the direct map, both need a mapcache to map pages.

This only lifts the mapcache variable up. Whether we populate the
mapcache for a domain is unchanged in this patch.

Signed-off-by: Wei Liu <wei.liu2@citrix.com>
Signed-off-by: Wei Wang <wawei@amazon.de>
Signed-off-by: Hongyan Xia <hongyxia@amazon.com>
Signed-off-by: Julien Grall <jgrall@amazon.com>

diff --git a/xen/arch/x86/domain.c b/xen/arch/x86/domain.c
index 8a31d18f69..8ef3f7746f 100644
--- a/xen/arch/x86/domain.c
+++ b/xen/arch/x86/domain.c
@@ -843,6 +843,8 @@ int arch_domain_create(struct domain *d,
 
     psr_domain_init(d);
 
+    mapcache_domain_init(d);
+
     if ( is_hvm_domain(d) )
     {
         if ( (rc = hvm_domain_initialise(d, config)) != 0 )
@@ -850,8 +852,6 @@ int arch_domain_create(struct domain *d,
     }
     else if ( is_pv_domain(d) )
     {
-        mapcache_domain_init(d);
-
         if ( (rc = pv_domain_initialise(d)) != 0 )
             goto fail;
     }
diff --git a/xen/arch/x86/domain_page.c b/xen/arch/x86/domain_page.c
index eac5e3304f..55e337aaf7 100644
--- a/xen/arch/x86/domain_page.c
+++ b/xen/arch/x86/domain_page.c
@@ -82,11 +82,11 @@ void *map_domain_page(mfn_t mfn)
 #endif
 
     v = mapcache_current_vcpu();
-    if ( !v || !is_pv_vcpu(v) )
+    if ( !v )
         return mfn_to_virt(mfn_x(mfn));
 
-    dcache = &v->domain->arch.pv.mapcache;
-    vcache = &v->arch.pv.mapcache;
+    dcache = &v->domain->arch.mapcache;
+    vcache = &v->arch.mapcache;
     if ( !dcache->inuse )
         return mfn_to_virt(mfn_x(mfn));
 
@@ -187,14 +187,14 @@ void unmap_domain_page(const void *ptr)
     ASSERT(va >= MAPCACHE_VIRT_START && va < MAPCACHE_VIRT_END);
 
     v = mapcache_current_vcpu();
-    ASSERT(v && is_pv_vcpu(v));
+    ASSERT(v);
 
-    dcache = &v->domain->arch.pv.mapcache;
+    dcache = &v->domain->arch.mapcache;
     ASSERT(dcache->inuse);
 
     idx = PFN_DOWN(va - MAPCACHE_VIRT_START);
     mfn = l1e_get_pfn(MAPCACHE_L1ENT(idx));
-    hashent = &v->arch.pv.mapcache.hash[MAPHASH_HASHFN(mfn)];
+    hashent = &v->arch.mapcache.hash[MAPHASH_HASHFN(mfn)];
 
     local_irq_save(flags);
 
@@ -233,11 +233,9 @@ void unmap_domain_page(const void *ptr)
 
 int mapcache_domain_init(struct domain *d)
 {
-    struct mapcache_domain *dcache = &d->arch.pv.mapcache;
+    struct mapcache_domain *dcache = &d->arch.mapcache;
     unsigned int bitmap_pages;
 
-    ASSERT(is_pv_domain(d));
-
 #ifdef NDEBUG
     if ( !mem_hotplug && max_page <= PFN_DOWN(__pa(HYPERVISOR_VIRT_END - 1)) )
         return 0;
@@ -261,12 +259,12 @@ int mapcache_domain_init(struct domain *d)
 int mapcache_vcpu_init(struct vcpu *v)
 {
     struct domain *d = v->domain;
-    struct mapcache_domain *dcache = &d->arch.pv.mapcache;
+    struct mapcache_domain *dcache = &d->arch.mapcache;
     unsigned long i;
     unsigned int ents = d->max_vcpus * MAPCACHE_VCPU_ENTRIES;
     unsigned int nr = PFN_UP(BITS_TO_LONGS(ents) * sizeof(long));
 
-    if ( !is_pv_vcpu(v) || !dcache->inuse )
+    if ( !dcache->inuse )
         return 0;
 
     if ( ents > dcache->entries )
@@ -293,7 +291,7 @@ int mapcache_vcpu_init(struct vcpu *v)
     BUILD_BUG_ON(MAPHASHENT_NOTINUSE < MAPCACHE_ENTRIES);
     for ( i = 0; i < MAPHASH_ENTRIES; i++ )
     {
-        struct vcpu_maphash_entry *hashent = &v->arch.pv.mapcache.hash[i];
+        struct vcpu_maphash_entry *hashent = &v->arch.mapcache.hash[i];
 
         hashent->mfn = ~0UL; /* never valid to map */
         hashent->idx = MAPHASHENT_NOTINUSE;
diff --git a/xen/arch/x86/include/asm/domain.h b/xen/arch/x86/include/asm/domain.h
index 4d97c68028..85b890b2cb 100644
--- a/xen/arch/x86/include/asm/domain.h
+++ b/xen/arch/x86/include/asm/domain.h
@@ -286,9 +286,6 @@ struct pv_domain
     /* Mitigate L1TF with shadow/crashing? */
     bool check_l1tf;
 
-    /* map_domain_page() mapping cache. */
-    struct mapcache_domain mapcache;
-
     struct cpuidmasks *cpuidmasks;
 };
 
@@ -327,6 +324,9 @@ struct arch_domain
 
     uint8_t spec_ctrl_flags; /* See SCF_DOM_MASK */
 
+    /* map_domain_page() mapping cache. */
+    struct mapcache_domain mapcache;
+
     union {
         struct pv_domain pv;
         struct hvm_domain hvm;
@@ -517,9 +517,6 @@ struct arch_domain
 
 struct pv_vcpu
 {
-    /* map_domain_page() mapping cache. */
-    struct mapcache_vcpu mapcache;
-
     unsigned int vgc_flags;
 
     struct trap_info *trap_ctxt;
@@ -619,6 +616,9 @@ struct arch_vcpu
 #define async_exception_state(t) async_exception_state[(t)-1]
     uint8_t async_exception_mask;
 
+    /* map_domain_page() mapping cache. */
+    struct mapcache_vcpu mapcache;
+
     /* Virtual Machine Extensions */
     union {
         struct pv_vcpu pv;
-- 
2.40.1



From xen-devel-bounces@lists.xenproject.org Tue Jan 16 19:26:42 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 16 Jan 2024 19:26:42 +0000
Received: from list by lists.xenproject.org with outflank-mailman.668089.1040054 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPp58-0005WS-2b; Tue, 16 Jan 2024 19:26:42 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 668089.1040054; Tue, 16 Jan 2024 19:26:41 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPp57-0005VB-FP; Tue, 16 Jan 2024 19:26:41 +0000
Received: by outflank-mailman (input) for mailman id 668089;
 Tue, 16 Jan 2024 19:26:38 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=wmx9=I2=amazon.co.uk=prvs=738631f0b=eliasely@srs-se1.protection.inumbo.net>)
 id 1rPp54-0003Xv-Q0
 for xen-devel@lists.xenproject.org; Tue, 16 Jan 2024 19:26:38 +0000
Received: from smtp-fw-80007.amazon.com (smtp-fw-80007.amazon.com
 [99.78.197.218]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 29e101c5-b4a5-11ee-98f1-6d05b1d4d9a1;
 Tue, 16 Jan 2024 20:26:36 +0100 (CET)
Received: from pdx4-co-svc-p1-lb2-vlan2.amazon.com (HELO
 email-inbound-relay-pdx-1box-2bm6-32cf6363.us-west-2.amazon.com)
 ([10.25.36.210]) by smtp-border-fw-80007.pdx80.corp.amazon.com with
 ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 16 Jan 2024 19:26:29 +0000
Received: from smtpout.prod.us-east-1.prod.farcaster.email.amazon.dev
 (pdx2-ws-svc-p26-lb5-vlan2.pdx.amazon.com [10.39.38.66])
 by email-inbound-relay-pdx-1box-2bm6-32cf6363.us-west-2.amazon.com (Postfix)
 with ESMTPS id 7F1A189830; Tue, 16 Jan 2024 19:26:27 +0000 (UTC)
Received: from EX19MTAUEA002.ant.amazon.com [10.0.29.78:2178]
 by smtpin.naws.us-east-1.prod.farcaster.email.amazon.dev [10.0.41.129:2525]
 with esmtp (Farcaster)
 id 237a9be2-b0f0-4c18-9e6f-15d1094f032e; Tue, 16 Jan 2024 19:26:27 +0000 (UTC)
Received: from EX19D008UEA003.ant.amazon.com (10.252.134.116) by
 EX19MTAUEA002.ant.amazon.com (10.252.134.9) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1118.40; Tue, 16 Jan 2024 19:26:26 +0000
Received: from EX19MTAUEB001.ant.amazon.com (10.252.135.35) by
 EX19D008UEA003.ant.amazon.com (10.252.134.116) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1118.40; Tue, 16 Jan 2024 19:26:25 +0000
Received: from dev-dsk-eliasely-1a-fd74790f.eu-west-1.amazon.com
 (10.253.91.118) by mail-relay.amazon.com (10.252.135.35) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1118.40 via Frontend Transport; Tue, 16 Jan 2024 19:26:24 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 29e101c5-b4a5-11ee-98f1-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
  d=amazon.com; i=@amazon.com; q=dns/txt; s=amazon201209;
  t=1705433197; x=1736969197;
  h=from:to:cc:subject:date:message-id:in-reply-to:
   references:mime-version:content-transfer-encoding;
  bh=HW3epajLPcDlyqLezVIUXLccUhl0qCm2Of6jKKbyr0s=;
  b=oT63VgqdP8RB9MV/v+qQj7NhNnEVPfwzkA1YBpQ9atnYMlRRsfEsK8Br
   Y0yjX4KoB5hsiVZLX37SKWQ5b/gDbfBFlmNuqhwMS1xV1zJq+Q6U3FD8T
   jNBdgMIoSj/FNi9IDuV1iHOqdcVpgT6L5i97032MbEJibJXlGzcOpmM2n
   8=;
X-IronPort-AV: E=Sophos;i="6.05,200,1701129600"; 
   d="scan'208";a="267191230"
X-Farcaster-Flow-ID: 237a9be2-b0f0-4c18-9e6f-15d1094f032e
From: Elias El Yandouzi <eliasely@amazon.com>
To: <xen-devel@lists.xenproject.org>
CC: <julien@xen.org>, <pdurrant@amazon.com>, <dwmw@amazon.com>, Wei Liu
	<wei.liu2@citrix.com>, Jan Beulich <jbeulich@suse.com>, Andrew Cooper
	<andrew.cooper3@citrix.com>, =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?=
	<roger.pau@citrix.com>, Wei Liu <wl@xen.org>, Wei Wang <wawei@amazon.de>,
	Julien Grall <jgrall@amazon.com>, Elias El Yandouzi <eliasely@amazon.com>
Subject: [PATCH v2 (resend) 08/27] x86/pv: Domheap pages should be mapped while relocating initrd
Date: Tue, 16 Jan 2024 19:25:52 +0000
Message-ID: <20240116192611.41112-9-eliasely@amazon.com>
X-Mailer: git-send-email 2.40.1
In-Reply-To: <20240116192611.41112-1-eliasely@amazon.com>
References: <20240116192611.41112-1-eliasely@amazon.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
Precedence: Bulk

From: Wei Liu <wei.liu2@citrix.com>

Xen shouldn't use domheap page as if they were xenheap pages. Map and
unmap pages accordingly.

Signed-off-by: Wei Liu <wei.liu2@citrix.com>
Signed-off-by: Wei Wang <wawei@amazon.de>
Signed-off-by: Julien Grall <jgrall@amazon.com>
Signed-off-by: Elias El Yandouzi <eliasely@amazon.com>

----

    Changes in V2:
        * Get rid of mfn_to_virt
        * Don't open code copy_domain_page()

    Changes since Hongyan's version:
        * Add missing newline after the variable declaration

diff --git a/xen/arch/x86/pv/dom0_build.c b/xen/arch/x86/pv/dom0_build.c
index 5bbed3a36a..5659814e0c 100644
--- a/xen/arch/x86/pv/dom0_build.c
+++ b/xen/arch/x86/pv/dom0_build.c
@@ -615,18 +615,25 @@ int __init dom0_construct_pv(struct domain *d,
         if ( d->arch.physaddr_bitsize &&
              ((mfn + count - 1) >> (d->arch.physaddr_bitsize - PAGE_SHIFT)) )
         {
+            unsigned long nr_pages;
+
             order = get_order_from_pages(count);
             page = alloc_domheap_pages(d, order, MEMF_no_scrub);
             if ( !page )
                 panic("Not enough RAM for domain 0 initrd\n");
+
+            nr_pages = 1UL << order;
             for ( count = -count; order--; )
                 if ( count & (1UL << order) )
                 {
                     free_domheap_pages(page, order);
                     page += 1UL << order;
+                    nr_pages -= 1UL << order;
                 }
-            memcpy(page_to_virt(page), mfn_to_virt(initrd->mod_start),
-                   initrd_len);
+
+            for ( i = 0; i < nr_pages; i++ )
+                copy_domain_page(page_to_mfn(page + i), _mfn(initrd_mfn + i));
+
             mpt_alloc = (paddr_t)initrd->mod_start << PAGE_SHIFT;
             init_domheap_pages(mpt_alloc,
                                mpt_alloc + PAGE_ALIGN(initrd_len));
-- 
2.40.1



From xen-devel-bounces@lists.xenproject.org Tue Jan 16 19:26:43 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 16 Jan 2024 19:26:43 +0000
Received: from list by lists.xenproject.org with outflank-mailman.668091.1040059 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPp58-0005ji-Qj; Tue, 16 Jan 2024 19:26:42 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 668091.1040059; Tue, 16 Jan 2024 19:26:42 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPp58-0005fZ-9g; Tue, 16 Jan 2024 19:26:42 +0000
Received: by outflank-mailman (input) for mailman id 668091;
 Tue, 16 Jan 2024 19:26:40 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=wmx9=I2=amazon.co.uk=prvs=738631f0b=eliasely@srs-se1.protection.inumbo.net>)
 id 1rPp56-0002iI-F5
 for xen-devel@lists.xenproject.org; Tue, 16 Jan 2024 19:26:40 +0000
Received: from smtp-fw-80009.amazon.com (smtp-fw-80009.amazon.com
 [99.78.197.220]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 2b30fbf2-b4a5-11ee-9b0f-b553b5be7939;
 Tue, 16 Jan 2024 20:26:38 +0100 (CET)
Received: from pdx4-co-svc-p1-lb2-vlan2.amazon.com (HELO
 email-inbound-relay-iad-1d-m6i4x-d8e96288.us-east-1.amazon.com)
 ([10.25.36.210]) by smtp-border-fw-80009.pdx80.corp.amazon.com with
 ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 16 Jan 2024 19:26:36 +0000
Received: from smtpout.prod.us-east-1.prod.farcaster.email.amazon.dev
 (iad7-ws-svc-p70-lb3-vlan3.iad.amazon.com [10.32.235.38])
 by email-inbound-relay-iad-1d-m6i4x-d8e96288.us-east-1.amazon.com (Postfix)
 with ESMTPS id A011584E30; Tue, 16 Jan 2024 19:26:34 +0000 (UTC)
Received: from EX19MTAUEA001.ant.amazon.com [10.0.29.78:62111]
 by smtpin.naws.us-east-1.prod.farcaster.email.amazon.dev [10.0.3.20:2525] with
 esmtp (Farcaster)
 id 526f3352-96b2-47dc-b68e-3f4b8bfe2e83; Tue, 16 Jan 2024 19:26:34 +0000 (UTC)
Received: from EX19D008UEC004.ant.amazon.com (10.252.135.170) by
 EX19MTAUEA001.ant.amazon.com (10.252.134.203) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1118.40; Tue, 16 Jan 2024 19:26:30 +0000
Received: from EX19MTAUEB001.ant.amazon.com (10.252.135.35) by
 EX19D008UEC004.ant.amazon.com (10.252.135.170) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1118.40; Tue, 16 Jan 2024 19:26:30 +0000
Received: from dev-dsk-eliasely-1a-fd74790f.eu-west-1.amazon.com
 (10.253.91.118) by mail-relay.amazon.com (10.252.135.35) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1118.40 via Frontend Transport; Tue, 16 Jan 2024 19:26:29 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 2b30fbf2-b4a5-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
  d=amazon.com; i=@amazon.com; q=dns/txt; s=amazon201209;
  t=1705433198; x=1736969198;
  h=from:to:cc:subject:date:message-id:in-reply-to:
   references:mime-version:content-transfer-encoding;
  bh=sWVxwHwgKXZxnYvHw7QOCApWITjaKrfn/x6fPGCt35k=;
  b=QdA1Y0FEmSd7CJBzyGz7QvuahXbB+fbPso/yE90GReTaTIXe3Ky2cMlI
   DW/Rrvm9HBo8MmeZMnJHeTej8adbIycZEdK7J+RANC50cRLnwCr+z7gXj
   4LDPzreTMdKbWDyhkz3bNbMkdacgWamMuVeXrztcPvpBcR8EQ4x3irTpP
   g=;
X-IronPort-AV: E=Sophos;i="6.05,200,1701129600"; 
   d="scan'208";a="58701500"
X-Farcaster-Flow-ID: 526f3352-96b2-47dc-b68e-3f4b8bfe2e83
From: Elias El Yandouzi <eliasely@amazon.com>
To: <xen-devel@lists.xenproject.org>
CC: <julien@xen.org>, <pdurrant@amazon.com>, <dwmw@amazon.com>, Hongyan Xia
	<hongyxia@amazon.com>, Jan Beulich <jbeulich@suse.com>, Andrew Cooper
	<andrew.cooper3@citrix.com>, =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?=
	<roger.pau@citrix.com>, Wei Liu <wl@xen.org>, Wei Wang <wawei@amazon.de>,
	Julien Grall <jgrall@amazon.com>, Elias El Yandouzi <eliasely@amazon.com>
Subject: [PATCH v2 (resend) 12/27] x86/mapcache: Initialise the mapcache for the idle domain
Date: Tue, 16 Jan 2024 19:25:56 +0000
Message-ID: <20240116192611.41112-13-eliasely@amazon.com>
X-Mailer: git-send-email 2.40.1
In-Reply-To: <20240116192611.41112-1-eliasely@amazon.com>
References: <20240116192611.41112-1-eliasely@amazon.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
Precedence: Bulk

From: Hongyan Xia <hongyxia@amazon.com>

In order to use the mapcache in the idle domain, we also have to
populate its page tables in the PERDOMAIN region, and we need to move
mapcache_domain_init() earlier in arch_domain_create().

Note, commit 'x86: lift mapcache variable to the arch level' has
initialised the mapcache for HVM domains. With this patch, PV, HVM,
idle domains now all initialise the mapcache.

Signed-off-by: Wei Wang <wawei@amazon.de>
Signed-off-by: Hongyan Xia <hongyxia@amazon.com>
Signed-off-by: Julien Grall <jgrall@amazon.com>
Signed-off-by: Elias El Yandouzi <eliasely@amazon.com>

----

	Changes in V2:
          * Free resources if mapcache initialisation fails
          * Remove `is_idle_domain()` check from `create_perdomain_mappings()`

diff --git a/xen/arch/x86/domain.c b/xen/arch/x86/domain.c
index 8ef3f7746f..d4c125bc14 100644
--- a/xen/arch/x86/domain.c
+++ b/xen/arch/x86/domain.c
@@ -750,9 +750,16 @@ int arch_domain_create(struct domain *d,
 
     spin_lock_init(&d->arch.e820_lock);
 
+    if ( (rc = mapcache_domain_init(d)) != 0)
+    {
+        free_perdomain_mappings(d);
+        return rc;
+    }
+
     /* Minimal initialisation for the idle domain. */
     if ( unlikely(is_idle_domain(d)) )
     {
+        struct page_info *pg = d->arch.perdomain_l3_pg;
         static const struct arch_csw idle_csw = {
             .from = paravirt_ctxt_switch_from,
             .to   = paravirt_ctxt_switch_to,
@@ -763,6 +770,9 @@ int arch_domain_create(struct domain *d,
 
         d->arch.cpu_policy = ZERO_BLOCK_PTR; /* Catch stray misuses. */
 
+        idle_pg_table[l4_table_offset(PERDOMAIN_VIRT_START)] =
+            l4e_from_page(pg, __PAGE_HYPERVISOR_RW);
+
         return 0;
     }
 
@@ -843,8 +853,6 @@ int arch_domain_create(struct domain *d,
 
     psr_domain_init(d);
 
-    mapcache_domain_init(d);
-
     if ( is_hvm_domain(d) )
     {
         if ( (rc = hvm_domain_initialise(d, config)) != 0 )
-- 
2.40.1



From xen-devel-bounces@lists.xenproject.org Tue Jan 16 19:26:44 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 16 Jan 2024 19:26:44 +0000
Received: from list by lists.xenproject.org with outflank-mailman.668092.1040067 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPp59-00062j-WA; Tue, 16 Jan 2024 19:26:44 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 668092.1040067; Tue, 16 Jan 2024 19:26:43 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPp59-0005yS-Fa; Tue, 16 Jan 2024 19:26:43 +0000
Received: by outflank-mailman (input) for mailman id 668092;
 Tue, 16 Jan 2024 19:26:41 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=wmx9=I2=amazon.co.uk=prvs=738631f0b=eliasely@srs-se1.protection.inumbo.net>)
 id 1rPp56-0003Xv-Qe
 for xen-devel@lists.xenproject.org; Tue, 16 Jan 2024 19:26:40 +0000
Received: from smtp-fw-80007.amazon.com (smtp-fw-80007.amazon.com
 [99.78.197.218]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 2b05fc8a-b4a5-11ee-98f1-6d05b1d4d9a1;
 Tue, 16 Jan 2024 20:26:38 +0100 (CET)
Received: from pdx4-co-svc-p1-lb2-vlan2.amazon.com (HELO
 email-inbound-relay-pdx-2c-m6i4x-fa5fe5fb.us-west-2.amazon.com)
 ([10.25.36.210]) by smtp-border-fw-80007.pdx80.corp.amazon.com with
 ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 16 Jan 2024 19:26:38 +0000
Received: from smtpout.prod.us-east-1.prod.farcaster.email.amazon.dev
 (pdx2-ws-svc-p26-lb5-vlan3.pdx.amazon.com [10.39.38.70])
 by email-inbound-relay-pdx-2c-m6i4x-fa5fe5fb.us-west-2.amazon.com (Postfix)
 with ESMTPS id BDF6140DC0; Tue, 16 Jan 2024 19:26:36 +0000 (UTC)
Received: from EX19MTAUEC002.ant.amazon.com [10.0.0.204:34893]
 by smtpin.naws.us-east-1.prod.farcaster.email.amazon.dev [10.0.19.196:2525]
 with esmtp (Farcaster)
 id 13706365-8a25-4c84-8180-7fdab47f7c13; Tue, 16 Jan 2024 19:26:35 +0000 (UTC)
Received: from EX19D008UEC004.ant.amazon.com (10.252.135.170) by
 EX19MTAUEC002.ant.amazon.com (10.252.135.253) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1118.40; Tue, 16 Jan 2024 19:26:34 +0000
Received: from EX19MTAUEB001.ant.amazon.com (10.252.135.35) by
 EX19D008UEC004.ant.amazon.com (10.252.135.170) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1118.40; Tue, 16 Jan 2024 19:26:34 +0000
Received: from dev-dsk-eliasely-1a-fd74790f.eu-west-1.amazon.com
 (10.253.91.118) by mail-relay.amazon.com (10.252.135.35) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1118.40 via Frontend Transport; Tue, 16 Jan 2024 19:26:33 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 2b05fc8a-b4a5-11ee-98f1-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
  d=amazon.com; i=@amazon.com; q=dns/txt; s=amazon201209;
  t=1705433199; x=1736969199;
  h=from:to:cc:subject:date:message-id:in-reply-to:
   references:mime-version:content-transfer-encoding;
  bh=L0+DUWALuf12F9Qa/oNJ9iBOAHkUE/QEE53X66ACQhM=;
  b=B0sMpPqNeXJbPpLR0hh0R0YAsdvihp9gAjVjyIfhQ4s3PoNCFVhd79sY
   MmCfXoQ8QVkTkK9Va9bUY8MCfKPv5oiO5oZ864YG8/ja9S13Fu5/YNcr5
   d5Bb03CTUYX3mxX+D5Mrwi+7XMI/bZcQCFpEUpM/6Ce7bjuPqBKF6WwmJ
   Y=;
X-IronPort-AV: E=Sophos;i="6.05,200,1701129600"; 
   d="scan'208";a="267191265"
X-Farcaster-Flow-ID: 13706365-8a25-4c84-8180-7fdab47f7c13
From: Elias El Yandouzi <eliasely@amazon.com>
To: <xen-devel@lists.xenproject.org>
CC: <julien@xen.org>, <pdurrant@amazon.com>, <dwmw@amazon.com>, Julien Grall
	<jgrall@amazon.com>, Jan Beulich <jbeulich@suse.com>, Andrew Cooper
	<andrew.cooper3@citrix.com>, =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?=
	<roger.pau@citrix.com>, Wei Liu <wl@xen.org>, Elias El Yandouzi
	<eliasely@amazon.com>
Subject: [PATCH v2 (resend) 15/27] xen/x86: Add support for the PMAP
Date: Tue, 16 Jan 2024 19:25:59 +0000
Message-ID: <20240116192611.41112-16-eliasely@amazon.com>
X-Mailer: git-send-email 2.40.1
In-Reply-To: <20240116192611.41112-1-eliasely@amazon.com>
References: <20240116192611.41112-1-eliasely@amazon.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
Precedence: Bulk

From: Julien Grall <jgrall@amazon.com>

PMAP will be used in a follow-up patch to bootstrap map domain
page infrastructure -- we need some way to map pages to setup the
mapcache without a direct map.

The functions pmap_{map, unmap} open code {set, clear}_fixmap to break
the loop.

Signed-off-by: Julien Grall <jgrall@amazon.com>
Signed-off-by: Elias El Yandouzi <eliasely@amazon.com>

----

    The PMAP infrastructure was upstream separately for Arm since
    Hongyan sent the secret-free hypervisor series. So this is a new
    patch to plumb the feature on x86.

    Changes in v2:
        * Declare PMAP entries earlier in fixed_addresses
        * Reword the commit message

diff --git a/xen/arch/x86/Kconfig b/xen/arch/x86/Kconfig
index 350f41b832..16b2a32469 100644
--- a/xen/arch/x86/Kconfig
+++ b/xen/arch/x86/Kconfig
@@ -25,6 +25,7 @@ config X86
 	select HAS_PASSTHROUGH
 	select HAS_PCI
 	select HAS_PCI_MSI
+	select HAS_PMAP
 	select HAS_SCHED_GRANULARITY
 	select HAS_UBSAN
 	select HAS_VPCI if HVM
diff --git a/xen/arch/x86/include/asm/fixmap.h b/xen/arch/x86/include/asm/fixmap.h
index 516ec3fa6c..a7ac365fc6 100644
--- a/xen/arch/x86/include/asm/fixmap.h
+++ b/xen/arch/x86/include/asm/fixmap.h
@@ -21,6 +21,8 @@
 
 #include <xen/acpi.h>
 #include <xen/pfn.h>
+#include <xen/pmap.h>
+
 #include <asm/apicdef.h>
 #include <asm/msi.h>
 #include <acpi/apei.h>
@@ -53,6 +55,8 @@ enum fixed_addresses {
     FIX_PV_CONSOLE,
     FIX_XEN_SHARED_INFO,
 #endif /* CONFIG_XEN_GUEST */
+    FIX_PMAP_BEGIN,
+    FIX_PMAP_END = FIX_PMAP_BEGIN + NUM_FIX_PMAP,
     /* Everything else should go further down. */
     FIX_APIC_BASE,
     FIX_IO_APIC_BASE_0,
diff --git a/xen/arch/x86/include/asm/pmap.h b/xen/arch/x86/include/asm/pmap.h
new file mode 100644
index 0000000000..62746e191d
--- /dev/null
+++ b/xen/arch/x86/include/asm/pmap.h
@@ -0,0 +1,25 @@
+#ifndef __ASM_PMAP_H__
+#define __ASM_PMAP_H__
+
+#include <asm/fixmap.h>
+
+static inline void arch_pmap_map(unsigned int slot, mfn_t mfn)
+{
+    unsigned long linear = (unsigned long)fix_to_virt(slot);
+    l1_pgentry_t *pl1e = &l1_fixmap[l1_table_offset(linear)];
+
+    ASSERT(!(l1e_get_flags(*pl1e) & _PAGE_PRESENT));
+
+    l1e_write_atomic(pl1e, l1e_from_mfn(mfn, PAGE_HYPERVISOR));
+}
+
+static inline void arch_pmap_unmap(unsigned int slot)
+{
+    unsigned long linear = (unsigned long)fix_to_virt(slot);
+    l1_pgentry_t *pl1e = &l1_fixmap[l1_table_offset(linear)];
+
+    l1e_write_atomic(pl1e, l1e_empty());
+    flush_tlb_one_local(linear);
+}
+
+#endif /* __ASM_PMAP_H__ */
-- 
2.40.1



From xen-devel-bounces@lists.xenproject.org Tue Jan 16 19:26:46 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 16 Jan 2024 19:26:46 +0000
Received: from list by lists.xenproject.org with outflank-mailman.668093.1040081 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPp5C-0006YI-2i; Tue, 16 Jan 2024 19:26:46 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 668093.1040081; Tue, 16 Jan 2024 19:26:46 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPp5B-0006Us-Ep; Tue, 16 Jan 2024 19:26:45 +0000
Received: by outflank-mailman (input) for mailman id 668093;
 Tue, 16 Jan 2024 19:26:43 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=wmx9=I2=amazon.co.uk=prvs=738631f0b=eliasely@srs-se1.protection.inumbo.net>)
 id 1rPp59-0002iI-0z
 for xen-devel@lists.xenproject.org; Tue, 16 Jan 2024 19:26:43 +0000
Received: from smtp-fw-52005.amazon.com (smtp-fw-52005.amazon.com
 [52.119.213.156]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 2be1faf7-b4a5-11ee-9b0f-b553b5be7939;
 Tue, 16 Jan 2024 20:26:41 +0100 (CET)
Received: from iad12-co-svc-p1-lb1-vlan3.amazon.com (HELO
 email-inbound-relay-pdx-2b-m6i4x-cadc3fbd.us-west-2.amazon.com) ([10.43.8.6])
 by smtp-border-fw-52005.iad7.amazon.com with
 ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 16 Jan 2024 19:26:38 +0000
Received: from smtpout.prod.us-east-1.prod.farcaster.email.amazon.dev
 (pdx2-ws-svc-p26-lb5-vlan2.pdx.amazon.com [10.39.38.66])
 by email-inbound-relay-pdx-2b-m6i4x-cadc3fbd.us-west-2.amazon.com (Postfix)
 with ESMTPS id 13360A0786; Tue, 16 Jan 2024 19:26:37 +0000 (UTC)
Received: from EX19MTAUEB002.ant.amazon.com [10.0.29.78:48367]
 by smtpin.naws.us-east-1.prod.farcaster.email.amazon.dev [10.0.57.22:2525]
 with esmtp (Farcaster)
 id 08e95fd3-8a75-4499-8d5b-ff27ab3d0876; Tue, 16 Jan 2024 19:26:36 +0000 (UTC)
Received: from EX19D008UEA004.ant.amazon.com (10.252.134.191) by
 EX19MTAUEB002.ant.amazon.com (10.252.135.47) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1118.40; Tue, 16 Jan 2024 19:26:32 +0000
Received: from EX19MTAUEB001.ant.amazon.com (10.252.135.35) by
 EX19D008UEA004.ant.amazon.com (10.252.134.191) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1118.40; Tue, 16 Jan 2024 19:26:31 +0000
Received: from dev-dsk-eliasely-1a-fd74790f.eu-west-1.amazon.com
 (10.253.91.118) by mail-relay.amazon.com (10.252.135.35) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1118.40 via Frontend Transport; Tue, 16 Jan 2024 19:26:30 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 2be1faf7-b4a5-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
  d=amazon.com; i=@amazon.com; q=dns/txt; s=amazon201209;
  t=1705433201; x=1736969201;
  h=from:to:cc:subject:date:message-id:in-reply-to:
   references:mime-version:content-transfer-encoding;
  bh=OwpyHZJCgfsvXgrpfF3qQCU4NbQDoI500a3pBhrqpBY=;
  b=YW9zAB/xT40c292cFPUL3RVcuzLfs512VSeRxEnAAU+MaI6kVNzcZxCu
   JdW9zar6+ZBj8qxA4wKXAN97XJbrhLfdtzjQFWvoKWfMYRmMtdZaZtrGE
   BYCVhUeyDOP2dPCX/hwsFy4D31ws/abYltjAPrjmlX71rNUhSK7QZaANj
   Y=;
X-IronPort-AV: E=Sophos;i="6.05,200,1701129600"; 
   d="scan'208";a="627983576"
X-Farcaster-Flow-ID: 08e95fd3-8a75-4499-8d5b-ff27ab3d0876
From: Elias El Yandouzi <eliasely@amazon.com>
To: <xen-devel@lists.xenproject.org>
CC: <julien@xen.org>, <pdurrant@amazon.com>, <dwmw@amazon.com>, Hongyan Xia
	<hongyxia@amazon.com>, Andrew Cooper <andrew.cooper3@citrix.com>, "George
 Dunlap" <george.dunlap@citrix.com>, Jan Beulich <jbeulich@suse.com>, "Stefano
 Stabellini" <sstabellini@kernel.org>, Wei Liu <wl@xen.org>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>, Julien Grall
	<jgrall@amazon.com>
Subject: [PATCH v2 (resend) 13/27] x86: Add a boot option to enable and disable the direct map
Date: Tue, 16 Jan 2024 19:25:57 +0000
Message-ID: <20240116192611.41112-14-eliasely@amazon.com>
X-Mailer: git-send-email 2.40.1
In-Reply-To: <20240116192611.41112-1-eliasely@amazon.com>
References: <20240116192611.41112-1-eliasely@amazon.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
Precedence: Bulk

From: Hongyan Xia <hongyxia@amazon.com>

Also add a helper function to retrieve it. Change arch_mfns_in_direct_map
to check this option before returning.

This is added as a Kconfig option as well as a boot command line option.
While being generic, the Kconfig option is only usable for x86 at the moment.

Signed-off-by: Hongyan Xia <hongyxia@amazon.com>
Signed-off-by: Julien Grall <jgrall@amazon.com>

----

    Changes in V2:
        * Introduce a Kconfig option
        * Reword the commit message
        * Make opt_directmap and helper generic

    Changes since Hongyan's version:
        * Reword the commit message
        * opt_directmap is only modified during boot so mark it as
          __ro_after_init

diff --git a/docs/misc/xen-command-line.pandoc b/docs/misc/xen-command-line.pandoc
index 8e65f8bd18..63c946f482 100644
--- a/docs/misc/xen-command-line.pandoc
+++ b/docs/misc/xen-command-line.pandoc
@@ -799,6 +799,18 @@ that enabling this option cannot guarantee anything beyond what underlying
 hardware guarantees (with, where available and known to Xen, respective
 tweaks applied).
 
+### directmap (x86)
+> `= <boolean>`
+
+> Default: `true`
+
+Enable or disable the direct map region in Xen.
+
+By default, Xen creates the direct map region which maps physical memory
+in that region. Setting this to no will remove the direct map, blocking
+exploits that leak secrets via speculative memory access in the direct
+map.
+
 ### dma_bits
 > `= <integer>`
 
diff --git a/xen/arch/x86/Kconfig b/xen/arch/x86/Kconfig
index 1acdffc51c..350f41b832 100644
--- a/xen/arch/x86/Kconfig
+++ b/xen/arch/x86/Kconfig
@@ -29,6 +29,7 @@ config X86
 	select HAS_UBSAN
 	select HAS_VPCI if HVM
 	select NEEDS_LIBELF
+	select HAS_SECRET_HIDING
 
 config ARCH_DEFCONFIG
 	string
diff --git a/xen/arch/x86/include/asm/mm.h b/xen/arch/x86/include/asm/mm.h
index 7d26d9cd2f..4aae270a78 100644
--- a/xen/arch/x86/include/asm/mm.h
+++ b/xen/arch/x86/include/asm/mm.h
@@ -620,10 +620,18 @@ void write_32bit_pse_identmap(uint32_t *l2);
 /*
  * x86 maps part of physical memory via the directmap region.
  * Return whether the range of MFN falls in the directmap region.
+ *
+ * When boot command line sets directmap=no, we will not have a direct map at
+ * all so this will always return false.
  */
 static inline bool arch_mfns_in_directmap(unsigned long mfn, unsigned long nr)
 {
-    unsigned long eva = min(DIRECTMAP_VIRT_END, HYPERVISOR_VIRT_END);
+    unsigned long eva;
+
+    if ( !has_directmap() )
+        return false;
+
+    eva = min(DIRECTMAP_VIRT_END, HYPERVISOR_VIRT_END);
 
     return (mfn + nr) <= (virt_to_mfn(eva - 1) + 1);
 }
diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
index 4d0c90b7a0..b813ea75b5 100644
--- a/xen/arch/x86/setup.c
+++ b/xen/arch/x86/setup.c
@@ -1512,6 +1512,8 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
     if ( highmem_start )
         xenheap_max_mfn(PFN_DOWN(highmem_start - 1));
 
+    printk("Booting with directmap %s\n", has_directmap() ? "on" : "off");
+
     /*
      * Walk every RAM region and map it in its entirety (on x86/64, at least)
      * and notify it to the boot allocator.
diff --git a/xen/common/Kconfig b/xen/common/Kconfig
index 310ad4229c..9a24c89ac5 100644
--- a/xen/common/Kconfig
+++ b/xen/common/Kconfig
@@ -83,6 +83,23 @@ config HAS_UBSAN
 config MEM_ACCESS_ALWAYS_ON
 	bool
 
+config HAS_SECRET_HIDING
+	bool
+
+config SECRET_HIDING
+    bool "Secret hiding"
+    depends on HAS_SECRET_HIDING
+    ---help---
+    The directmap contains mapping for most of the RAM which makes domain
+    memory easily accessible. While making the performance better, it also makes
+    the hypervisor more vulnerable to speculation attacks.
+
+    Enabling this feature will allow the user to decide whether the memory
+    is always mapped at boot or mapped only on demand (see the command line
+    option "directmap").
+
+    If unsure, say N.
+
 config MEM_ACCESS
 	def_bool MEM_ACCESS_ALWAYS_ON
 	prompt "Memory Access and VM events" if !MEM_ACCESS_ALWAYS_ON
diff --git a/xen/common/page_alloc.c b/xen/common/page_alloc.c
index 740b6f0ff7..a3746cfbcf 100644
--- a/xen/common/page_alloc.c
+++ b/xen/common/page_alloc.c
@@ -173,6 +173,11 @@ paddr_t __ro_after_init mem_hotplug;
 static char __initdata opt_badpage[100] = "";
 string_param("badpage", opt_badpage);
 
+bool __ro_after_init opt_directmap = true;
+#ifdef CONFIG_HAS_SECRET_HIDING
+boolean_param("directmap", opt_directmap);
+#endif
+
 /*
  * no-bootscrub -> Free pages are not zeroed during boot.
  */
diff --git a/xen/include/xen/mm.h b/xen/include/xen/mm.h
index 3d9b2d05a5..f860e98ee4 100644
--- a/xen/include/xen/mm.h
+++ b/xen/include/xen/mm.h
@@ -165,6 +165,13 @@ extern unsigned long max_page;
 extern unsigned long total_pages;
 extern paddr_t mem_hotplug;
 
+extern bool opt_directmap;
+
+static inline bool has_directmap(void)
+{
+    return opt_directmap;
+}
+
 /*
  * Extra fault info types which are used to further describe
  * the source of an access violation.
-- 
2.40.1



From xen-devel-bounces@lists.xenproject.org Tue Jan 16 19:26:49 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 16 Jan 2024 19:26:49 +0000
Received: from list by lists.xenproject.org with outflank-mailman.668094.1040095 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPp5F-0007FI-4b; Tue, 16 Jan 2024 19:26:49 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 668094.1040095; Tue, 16 Jan 2024 19:26:48 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPp5E-0007CZ-I3; Tue, 16 Jan 2024 19:26:48 +0000
Received: by outflank-mailman (input) for mailman id 668094;
 Tue, 16 Jan 2024 19:26:46 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=wmx9=I2=amazon.co.uk=prvs=738631f0b=eliasely@srs-se1.protection.inumbo.net>)
 id 1rPp5C-0002iI-6d
 for xen-devel@lists.xenproject.org; Tue, 16 Jan 2024 19:26:46 +0000
Received: from smtp-fw-9102.amazon.com (smtp-fw-9102.amazon.com
 [207.171.184.29]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 2d8e4dfc-b4a5-11ee-9b0f-b553b5be7939;
 Tue, 16 Jan 2024 20:26:44 +0100 (CET)
Received: from pdx4-co-svc-p1-lb2-vlan3.amazon.com (HELO
 email-inbound-relay-pdx-2b-m6i4x-f253a3a3.us-west-2.amazon.com)
 ([10.25.36.214]) by smtp-border-fw-9102.sea19.amazon.com with
 ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 16 Jan 2024 19:26:35 +0000
Received: from smtpout.prod.us-east-1.prod.farcaster.email.amazon.dev
 (pdx2-ws-svc-p26-lb5-vlan2.pdx.amazon.com [10.39.38.66])
 by email-inbound-relay-pdx-2b-m6i4x-f253a3a3.us-west-2.amazon.com (Postfix)
 with ESMTPS id B30BC8A2C3; Tue, 16 Jan 2024 19:26:34 +0000 (UTC)
Received: from EX19MTAUEB001.ant.amazon.com [10.0.44.209:55964]
 by smtpin.naws.us-east-1.prod.farcaster.email.amazon.dev [10.0.15.248:2525]
 with esmtp (Farcaster)
 id f65ba36b-25b8-4d05-94e6-4f35e33c5e6c; Tue, 16 Jan 2024 19:26:34 +0000 (UTC)
Received: from EX19D008UEA004.ant.amazon.com (10.252.134.191) by
 EX19MTAUEB001.ant.amazon.com (10.252.135.108) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1118.40; Tue, 16 Jan 2024 19:26:33 +0000
Received: from EX19MTAUEB001.ant.amazon.com (10.252.135.35) by
 EX19D008UEA004.ant.amazon.com (10.252.134.191) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1118.40; Tue, 16 Jan 2024 19:26:33 +0000
Received: from dev-dsk-eliasely-1a-fd74790f.eu-west-1.amazon.com
 (10.253.91.118) by mail-relay.amazon.com (10.252.135.35) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1118.40 via Frontend Transport; Tue, 16 Jan 2024 19:26:32 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 2d8e4dfc-b4a5-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
  d=amazon.com; i=@amazon.com; q=dns/txt; s=amazon201209;
  t=1705433204; x=1736969204;
  h=from:to:cc:subject:date:message-id:in-reply-to:
   references:mime-version:content-transfer-encoding;
  bh=wuXlYkg7+aoOLvwI5g/1GuKiK7EGIYHkmtLupKWUrjI=;
  b=b2J504VdoICtkKKbRBdd/H22G7IwiUjt37SvIJBC/W1XQa0c2k8l++zp
   fiLEWcsDWqFtLxB8JNzN6qKgey+qMtxcvrUI1mOQqjud8WYdfcuXc/Foc
   44HcKRaQIXLTu4fEwK4G6Ne6dGodrXlfMR1N2K6z5xhyEcqTDCQr1vC+Q
   o=;
X-IronPort-AV: E=Sophos;i="6.05,200,1701129600"; 
   d="scan'208";a="390211249"
X-Farcaster-Flow-ID: f65ba36b-25b8-4d05-94e6-4f35e33c5e6c
From: Elias El Yandouzi <eliasely@amazon.com>
To: <xen-devel@lists.xenproject.org>
CC: <julien@xen.org>, <pdurrant@amazon.com>, <dwmw@amazon.com>, Julien Grall
	<jgrall@amazon.com>, Stefano Stabellini <sstabellini@kernel.org>, "Bertrand
 Marquis" <bertrand.marquis@arm.com>, Michal Orzel <michal.orzel@amd.com>,
	Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>, Andrew Cooper
	<andrew.cooper3@citrix.com>, George Dunlap <george.dunlap@citrix.com>, "Jan
 Beulich" <jbeulich@suse.com>, Wei Liu <wl@xen.org>, Elias El Yandouzi
	<eliasely@amazon.com>, Henry Wang <Henry.Wang@arm.com>
Subject: [PATCH v2 (resend) 14/27] xen/arm: fixmap: Rename the fixmap slots to follow the x86 convention
Date: Tue, 16 Jan 2024 19:25:58 +0000
Message-ID: <20240116192611.41112-15-eliasely@amazon.com>
X-Mailer: git-send-email 2.40.1
In-Reply-To: <20240116192611.41112-1-eliasely@amazon.com>
References: <20240116192611.41112-1-eliasely@amazon.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
Precedence: Bulk

From: Julien Grall <jgrall@amazon.com>

At the moment the fixmap slots are prefixed differently between arm and
x86.

Some of them (e.g. the PMAP slots) are used in common code. So it would
be better if they are named the same way to avoid having to create
aliases.

I have decided to use the x86 naming because they are less change. So
all the Arm fixmap slots will now be prefixed with FIX rather than
FIXMAP.

Signed-off-by: Julien Grall <jgrall@amazon.com>
Signed-off-by: Elias El Yandouzi <eliasely@amazon.com>

Reviewed-by: Henry Wang <Henry.Wang@arm.com>
Reviewed-by: Jan Beulich <jbeulich@suse.com>
Reviewed-by: Stefano Stabellini <sstabellini@kernel.org>

----

    Note that potentially more renaming that could be done to share
    more code in future. I have decided to not do that to avoid going
    down a rabbit hole.

diff --git a/xen/arch/arm/acpi/lib.c b/xen/arch/arm/acpi/lib.c
index 41d521f720..736cf09eca 100644
--- a/xen/arch/arm/acpi/lib.c
+++ b/xen/arch/arm/acpi/lib.c
@@ -40,10 +40,10 @@ char *__acpi_map_table(paddr_t phys, unsigned long size)
         return NULL;
 
     offset = phys & (PAGE_SIZE - 1);
-    base = FIXMAP_ADDR(FIXMAP_ACPI_BEGIN) + offset;
+    base = FIXMAP_ADDR(FIX_ACPI_BEGIN) + offset;
 
     /* Check the fixmap is big enough to map the region */
-    if ( (FIXMAP_ADDR(FIXMAP_ACPI_END) + PAGE_SIZE - base) < size )
+    if ( (FIXMAP_ADDR(FIX_ACPI_END) + PAGE_SIZE - base) < size )
         return NULL;
 
     /* With the fixmap, we can only map one region at the time */
@@ -54,7 +54,7 @@ char *__acpi_map_table(paddr_t phys, unsigned long size)
 
     size += offset;
     mfn = maddr_to_mfn(phys);
-    idx = FIXMAP_ACPI_BEGIN;
+    idx = FIX_ACPI_BEGIN;
 
     do {
         set_fixmap(idx, mfn, PAGE_HYPERVISOR);
@@ -72,8 +72,8 @@ bool __acpi_unmap_table(const void *ptr, unsigned long size)
     unsigned int idx;
 
     /* We are only handling fixmap address in the arch code */
-    if ( (vaddr < FIXMAP_ADDR(FIXMAP_ACPI_BEGIN)) ||
-         (vaddr >= (FIXMAP_ADDR(FIXMAP_ACPI_END) + PAGE_SIZE)) )
+    if ( (vaddr < FIXMAP_ADDR(FIX_ACPI_BEGIN)) ||
+         (vaddr >= (FIXMAP_ADDR(FIX_ACPI_END) + PAGE_SIZE)) )
         return false;
 
     /*
@@ -81,16 +81,16 @@ bool __acpi_unmap_table(const void *ptr, unsigned long size)
      * for the ACPI fixmap region. The caller is expected to free with
      * the same address.
      */
-    ASSERT((vaddr & PAGE_MASK) == FIXMAP_ADDR(FIXMAP_ACPI_BEGIN));
+    ASSERT((vaddr & PAGE_MASK) == FIXMAP_ADDR(FIX_ACPI_BEGIN));
 
     /* The region allocated fit in the ACPI fixmap region. */
-    ASSERT(size < (FIXMAP_ADDR(FIXMAP_ACPI_END) + PAGE_SIZE - vaddr));
+    ASSERT(size < (FIXMAP_ADDR(FIX_ACPI_END) + PAGE_SIZE - vaddr));
     ASSERT(fixmap_inuse);
 
     fixmap_inuse = false;
 
-    size += vaddr - FIXMAP_ADDR(FIXMAP_ACPI_BEGIN);
-    idx = FIXMAP_ACPI_BEGIN;
+    size += vaddr - FIXMAP_ADDR(FIX_ACPI_BEGIN);
+    idx = FIX_ACPI_BEGIN;
 
     do
     {
diff --git a/xen/arch/arm/include/asm/early_printk.h b/xen/arch/arm/include/asm/early_printk.h
index c1e84f8b00..f444e89a86 100644
--- a/xen/arch/arm/include/asm/early_printk.h
+++ b/xen/arch/arm/include/asm/early_printk.h
@@ -17,7 +17,7 @@
 
 /* need to add the uart address offset in page to the fixmap address */
 #define EARLY_UART_VIRTUAL_ADDRESS \
-    (FIXMAP_ADDR(FIXMAP_CONSOLE) + (CONFIG_EARLY_UART_BASE_ADDRESS & ~PAGE_MASK))
+    (FIXMAP_ADDR(FIX_CONSOLE) + (CONFIG_EARLY_UART_BASE_ADDRESS & ~PAGE_MASK))
 
 #define TEMPORARY_EARLY_UART_VIRTUAL_ADDRESS \
     (TEMPORARY_FIXMAP_ADDR(FIXMAP_CONSOLE) + (CONFIG_EARLY_UART_BASE_ADDRESS & ~PAGE_MASK))
diff --git a/xen/arch/arm/include/asm/fixmap.h b/xen/arch/arm/include/asm/fixmap.h
index 734eb9b1d4..a823456ecb 100644
--- a/xen/arch/arm/include/asm/fixmap.h
+++ b/xen/arch/arm/include/asm/fixmap.h
@@ -8,17 +8,17 @@
 #include <xen/pmap.h>
 
 /* Fixmap slots */
-#define FIXMAP_CONSOLE  0  /* The primary UART */
-#define FIXMAP_MISC     1  /* Ephemeral mappings of hardware */
-#define FIXMAP_ACPI_BEGIN  2  /* Start mappings of ACPI tables */
-#define FIXMAP_ACPI_END    (FIXMAP_ACPI_BEGIN + NUM_FIXMAP_ACPI_PAGES - 1)  /* End mappings of ACPI tables */
-#define FIXMAP_PMAP_BEGIN (FIXMAP_ACPI_END + 1) /* Start of PMAP */
-#define FIXMAP_PMAP_END (FIXMAP_PMAP_BEGIN + NUM_FIX_PMAP - 1) /* End of PMAP */
+#define FIX_CONSOLE  0  /* The primary UART */
+#define FIX_MISC     1  /* Ephemeral mappings of hardware */
+#define FIX_ACPI_BEGIN  2  /* Start mappings of ACPI tables */
+#define FIX_ACPI_END    (FIX_ACPI_BEGIN + NUM_FIXMAP_ACPI_PAGES - 1)  /* End mappings of ACPI tables */
+#define FIX_PMAP_BEGIN (FIX_ACPI_END + 1) /* Start of PMAP */
+#define FIX_PMAP_END (FIX_PMAP_BEGIN + NUM_FIX_PMAP - 1) /* End of PMAP */
 
-#define FIXMAP_LAST FIXMAP_PMAP_END
+#define FIX_LAST FIX_PMAP_END
 
 #define FIXADDR_START FIXMAP_ADDR(0)
-#define FIXADDR_TOP FIXMAP_ADDR(FIXMAP_LAST)
+#define FIXADDR_TOP FIXMAP_ADDR(FIX_LAST)
 
 #ifndef __ASSEMBLY__
 
diff --git a/xen/arch/arm/mmu/setup.c b/xen/arch/arm/mmu/setup.c
index 72725840b6..57f1b46499 100644
--- a/xen/arch/arm/mmu/setup.c
+++ b/xen/arch/arm/mmu/setup.c
@@ -351,7 +351,7 @@ void free_init_memory(void)
  */
 void __init copy_from_paddr(void *dst, paddr_t paddr, unsigned long len)
 {
-    void *src = (void *)FIXMAP_ADDR(FIXMAP_MISC);
+    void *src = (void *)FIXMAP_ADDR(FIX_MISC);
 
     while (len) {
         unsigned long l, s;
@@ -359,10 +359,10 @@ void __init copy_from_paddr(void *dst, paddr_t paddr, unsigned long len)
         s = paddr & (PAGE_SIZE - 1);
         l = min(PAGE_SIZE - s, len);
 
-        set_fixmap(FIXMAP_MISC, maddr_to_mfn(paddr), PAGE_HYPERVISOR_WC);
+        set_fixmap(FIX_MISC, maddr_to_mfn(paddr), PAGE_HYPERVISOR_WC);
         memcpy(dst, src + s, l);
         clean_dcache_va_range(dst, l);
-        clear_fixmap(FIXMAP_MISC);
+        clear_fixmap(FIX_MISC);
 
         paddr += l;
         dst += l;
diff --git a/xen/common/pmap.c b/xen/common/pmap.c
index 14517198aa..6e3ba9298d 100644
--- a/xen/common/pmap.c
+++ b/xen/common/pmap.c
@@ -32,8 +32,8 @@ void *__init pmap_map(mfn_t mfn)
 
     __set_bit(idx, inuse);
 
-    slot = idx + FIXMAP_PMAP_BEGIN;
-    ASSERT(slot >= FIXMAP_PMAP_BEGIN && slot <= FIXMAP_PMAP_END);
+    slot = idx + FIX_PMAP_BEGIN;
+    ASSERT(slot >= FIX_PMAP_BEGIN && slot <= FIX_PMAP_END);
 
     /*
      * We cannot use set_fixmap() here. We use PMAP when the domain map
@@ -53,10 +53,10 @@ void __init pmap_unmap(const void *p)
     unsigned int slot = virt_to_fix((unsigned long)p);
 
     ASSERT(system_state < SYS_STATE_smp_boot);
-    ASSERT(slot >= FIXMAP_PMAP_BEGIN && slot <= FIXMAP_PMAP_END);
+    ASSERT(slot >= FIX_PMAP_BEGIN && slot <= FIX_PMAP_END);
     ASSERT(!in_irq());
 
-    idx = slot - FIXMAP_PMAP_BEGIN;
+    idx = slot - FIX_PMAP_BEGIN;
 
     __clear_bit(idx, inuse);
     arch_pmap_unmap(slot);
-- 
2.40.1



From xen-devel-bounces@lists.xenproject.org Tue Jan 16 19:26:51 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 16 Jan 2024 19:26:51 +0000
Received: from list by lists.xenproject.org with outflank-mailman.668095.1040104 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPp5G-0007XK-JD; Tue, 16 Jan 2024 19:26:50 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 668095.1040104; Tue, 16 Jan 2024 19:26:50 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPp5F-0007Sx-TN; Tue, 16 Jan 2024 19:26:49 +0000
Received: by outflank-mailman (input) for mailman id 668095;
 Tue, 16 Jan 2024 19:26:47 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=wmx9=I2=amazon.co.uk=prvs=738631f0b=eliasely@srs-se1.protection.inumbo.net>)
 id 1rPp5D-0002iI-6a
 for xen-devel@lists.xenproject.org; Tue, 16 Jan 2024 19:26:47 +0000
Received: from smtp-fw-80009.amazon.com (smtp-fw-80009.amazon.com
 [99.78.197.220]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 2db9a4c6-b4a5-11ee-9b0f-b553b5be7939;
 Tue, 16 Jan 2024 20:26:44 +0100 (CET)
Received: from pdx4-co-svc-p1-lb2-vlan2.amazon.com (HELO
 email-inbound-relay-iad-1d-m6i4x-b404fda3.us-east-1.amazon.com)
 ([10.25.36.210]) by smtp-border-fw-80009.pdx80.corp.amazon.com with
 ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 16 Jan 2024 19:26:41 +0000
Received: from smtpout.prod.us-west-2.prod.farcaster.email.amazon.dev
 (iad7-ws-svc-p70-lb3-vlan3.iad.amazon.com [10.32.235.38])
 by email-inbound-relay-iad-1d-m6i4x-b404fda3.us-east-1.amazon.com (Postfix)
 with ESMTPS id 53F8C80D01; Tue, 16 Jan 2024 19:26:39 +0000 (UTC)
Received: from EX19MTAUEC002.ant.amazon.com [10.0.0.204:54615]
 by smtpin.naws.us-east-1.prod.farcaster.email.amazon.dev [10.0.28.244:2525]
 with esmtp (Farcaster)
 id 548f5f56-80ce-4b57-950b-08f6014ca5ff; Tue, 16 Jan 2024 19:26:38 +0000 (UTC)
Received: from EX19D008UEA003.ant.amazon.com (10.252.134.116) by
 EX19MTAUEC002.ant.amazon.com (10.252.135.253) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1118.40; Tue, 16 Jan 2024 19:26:36 +0000
Received: from EX19MTAUEB001.ant.amazon.com (10.252.135.35) by
 EX19D008UEA003.ant.amazon.com (10.252.134.116) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1118.40; Tue, 16 Jan 2024 19:26:36 +0000
Received: from dev-dsk-eliasely-1a-fd74790f.eu-west-1.amazon.com
 (10.253.91.118) by mail-relay.amazon.com (10.252.135.35) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1118.40 via Frontend Transport; Tue, 16 Jan 2024 19:26:35 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 2db9a4c6-b4a5-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
  d=amazon.com; i=@amazon.com; q=dns/txt; s=amazon201209;
  t=1705433204; x=1736969204;
  h=from:to:cc:subject:date:message-id:in-reply-to:
   references:mime-version:content-transfer-encoding;
  bh=Xc4KQdAGUonE6oCgkT6a8PPvVb9mrXzRPtcULUVgVPo=;
  b=gdHRPwxe/MFPBtj9mChqF4RtE14bnkvndE7sIwydhemFQ5H1sYbeA5s9
   kgy7kbDzKrLydayKb2KgpQlieoVzs8lXRbqfZAi90HQ5H35vJvEFLZRLF
   Omlrdj47I7gl4LiQwQDjxWuzw/r1wYJeFlFNsMZwlyJZmMlY+oKmlw0OM
   s=;
X-IronPort-AV: E=Sophos;i="6.05,200,1701129600"; 
   d="scan'208";a="58701544"
X-Farcaster-Flow-ID: 548f5f56-80ce-4b57-950b-08f6014ca5ff
From: Elias El Yandouzi <eliasely@amazon.com>
To: <xen-devel@lists.xenproject.org>
CC: <julien@xen.org>, <pdurrant@amazon.com>, <dwmw@amazon.com>, Hongyan Xia
	<hongyxia@amazon.com>, Jan Beulich <jbeulich@suse.com>, Andrew Cooper
	<andrew.cooper3@citrix.com>, =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?=
	<roger.pau@citrix.com>, Wei Liu <wl@xen.org>, Julien Grall
	<jgrall@amazon.com>
Subject: [PATCH v2 (resend) 17/27] x86/domain_page: Remove the fast paths when mfn is not in the directmap
Date: Tue, 16 Jan 2024 19:26:01 +0000
Message-ID: <20240116192611.41112-18-eliasely@amazon.com>
X-Mailer: git-send-email 2.40.1
In-Reply-To: <20240116192611.41112-1-eliasely@amazon.com>
References: <20240116192611.41112-1-eliasely@amazon.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
Precedence: Bulk

From: Hongyan Xia <hongyxia@amazon.com>

When mfn is not in direct map, never use mfn_to_virt for any mappings.

We replace mfn_x(mfn) <= PFN_DOWN(__pa(HYPERVISOR_VIRT_END - 1)) with
arch_mfns_in_direct_map(mfn, 1) because these two are equivalent. The
extra comparison in arch_mfns_in_direct_map() looks different but because
DIRECTMAP_VIRT_END is always higher, it does not make any difference.

Lastly, domain_page_map_to_mfn() needs to gain to a special case for
the PMAP.

Signed-off-by: Hongyan Xia <hongyxia@amazon.com>
Signed-off-by: Julien Grall <jgrall@amazon.com>

----

    Changes since Hongyan's version:
        * arch_mfn_in_direct_map() was renamed to arch_mfns_in_directmap()
        * add a special case for the PMAP in domain_page_map_to_mfn()

diff --git a/xen/arch/x86/domain_page.c b/xen/arch/x86/domain_page.c
index 55e337aaf7..89caefc8a2 100644
--- a/xen/arch/x86/domain_page.c
+++ b/xen/arch/x86/domain_page.c
@@ -14,8 +14,10 @@
 #include <xen/sched.h>
 #include <xen/vmap.h>
 #include <asm/current.h>
+#include <asm/fixmap.h>
 #include <asm/flushtlb.h>
 #include <asm/hardirq.h>
+#include <asm/pmap.h>
 #include <asm/setup.h>
 
 static DEFINE_PER_CPU(struct vcpu *, override);
@@ -35,10 +37,11 @@ static inline struct vcpu *mapcache_current_vcpu(void)
     /*
      * When using efi runtime page tables, we have the equivalent of the idle
      * domain's page tables but current may point at another domain's VCPU.
-     * Return NULL as though current is not properly set up yet.
+     * Return the idle domains's vcpu on that core because the efi per-domain
+     * region (where the mapcache is) is in-sync with the idle domain.
      */
     if ( efi_rs_using_pgtables() )
-        return NULL;
+        return idle_vcpu[smp_processor_id()];
 
     /*
      * If guest_table is NULL, and we are running a paravirtualised guest,
@@ -77,18 +80,24 @@ void *map_domain_page(mfn_t mfn)
     struct vcpu_maphash_entry *hashent;
 
 #ifdef NDEBUG
-    if ( mfn_x(mfn) <= PFN_DOWN(__pa(HYPERVISOR_VIRT_END - 1)) )
+    if ( arch_mfns_in_directmap(mfn_x(mfn), 1) )
         return mfn_to_virt(mfn_x(mfn));
 #endif
 
     v = mapcache_current_vcpu();
-    if ( !v )
-        return mfn_to_virt(mfn_x(mfn));
+    if ( !v || !v->domain->arch.mapcache.inuse )
+    {
+        if ( arch_mfns_in_directmap(mfn_x(mfn), 1) )
+            return mfn_to_virt(mfn_x(mfn));
+        else
+        {
+            BUG_ON(system_state >= SYS_STATE_smp_boot);
+            return pmap_map(mfn);
+        }
+    }
 
     dcache = &v->domain->arch.mapcache;
     vcache = &v->arch.mapcache;
-    if ( !dcache->inuse )
-        return mfn_to_virt(mfn_x(mfn));
 
     perfc_incr(map_domain_page_count);
 
@@ -184,6 +193,12 @@ void unmap_domain_page(const void *ptr)
     if ( !va || va >= DIRECTMAP_VIRT_START )
         return;
 
+    if ( va >= FIXADDR_START && va < FIXADDR_TOP )
+    {
+        pmap_unmap((void *)ptr);
+        return;
+    }
+
     ASSERT(va >= MAPCACHE_VIRT_START && va < MAPCACHE_VIRT_END);
 
     v = mapcache_current_vcpu();
@@ -237,7 +252,7 @@ int mapcache_domain_init(struct domain *d)
     unsigned int bitmap_pages;
 
 #ifdef NDEBUG
-    if ( !mem_hotplug && max_page <= PFN_DOWN(__pa(HYPERVISOR_VIRT_END - 1)) )
+    if ( !mem_hotplug && arch_mfn_in_directmap(0, max_page) )
         return 0;
 #endif
 
@@ -308,7 +323,7 @@ void *map_domain_page_global(mfn_t mfn)
             local_irq_is_enabled()));
 
 #ifdef NDEBUG
-    if ( mfn_x(mfn) <= PFN_DOWN(__pa(HYPERVISOR_VIRT_END - 1)) )
+    if ( arch_mfn_in_directmap(mfn_x(mfn, 1)) )
         return mfn_to_virt(mfn_x(mfn));
 #endif
 
@@ -335,6 +350,23 @@ mfn_t domain_page_map_to_mfn(const void *ptr)
     if ( va >= DIRECTMAP_VIRT_START )
         return _mfn(virt_to_mfn(ptr));
 
+    /*
+     * The fixmap is stealing the top-end of the VMAP. So the check for
+     * the PMAP *must* happen first.
+     *
+     * Also, the fixmap translate a slot to an address backwards. The
+     * logic will rely on it to avoid any complexity. So check at
+     * compile time this will always hold.
+    */
+    BUILD_BUG_ON(fix_to_virt(FIX_PMAP_BEGIN) < fix_to_virt(FIX_PMAP_END));
+
+    if ( ((unsigned long)fix_to_virt(FIX_PMAP_END) <= va) &&
+         ((va & PAGE_MASK) <= (unsigned long)fix_to_virt(FIX_PMAP_BEGIN)) )
+    {
+        BUG_ON(system_state >= SYS_STATE_smp_boot);
+        return l1e_get_mfn(l1_fixmap[l1_table_offset(va)]);
+    }
+
     if ( va >= VMAP_VIRT_START && va < VMAP_VIRT_END )
         return vmap_to_mfn(va);
 
-- 
2.40.1



From xen-devel-bounces@lists.xenproject.org Tue Jan 16 19:28:48 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 16 Jan 2024 19:28:48 +0000
Received: from list by lists.xenproject.org with outflank-mailman.668118.1040122 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPp72-0004bV-C9; Tue, 16 Jan 2024 19:28:40 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 668118.1040122; Tue, 16 Jan 2024 19:28:40 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPp72-0004bM-8i; Tue, 16 Jan 2024 19:28:40 +0000
Received: by outflank-mailman (input) for mailman id 668118;
 Tue, 16 Jan 2024 19:28:39 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=wmx9=I2=amazon.co.uk=prvs=738631f0b=eliasely@srs-se1.protection.inumbo.net>)
 id 1rPp5U-0003Xv-35
 for xen-devel@lists.xenproject.org; Tue, 16 Jan 2024 19:27:04 +0000
Received: from smtp-fw-52002.amazon.com (smtp-fw-52002.amazon.com
 [52.119.213.150]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 395d8250-b4a5-11ee-98f1-6d05b1d4d9a1;
 Tue, 16 Jan 2024 20:27:02 +0100 (CET)
Received: from iad12-co-svc-p1-lb1-vlan3.amazon.com (HELO
 email-inbound-relay-pdx-2c-m6i4x-d2040ec1.us-west-2.amazon.com) ([10.43.8.6])
 by smtp-border-fw-52002.iad7.amazon.com with
 ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 16 Jan 2024 19:27:01 +0000
Received: from smtpout.prod.us-east-1.prod.farcaster.email.amazon.dev
 (pdx2-ws-svc-p26-lb5-vlan2.pdx.amazon.com [10.39.38.66])
 by email-inbound-relay-pdx-2c-m6i4x-d2040ec1.us-west-2.amazon.com (Postfix)
 with ESMTPS id 90AE540D7F; Tue, 16 Jan 2024 19:26:59 +0000 (UTC)
Received: from EX19MTAUEB002.ant.amazon.com [10.0.29.78:14119]
 by smtpin.naws.us-east-1.prod.farcaster.email.amazon.dev [10.0.57.22:2525]
 with esmtp (Farcaster)
 id 193c356f-d5a1-4ec0-b9d7-e823c4fd556c; Tue, 16 Jan 2024 19:26:58 +0000 (UTC)
Received: from EX19D008UEA004.ant.amazon.com (10.252.134.191) by
 EX19MTAUEB002.ant.amazon.com (10.252.135.47) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1118.40; Tue, 16 Jan 2024 19:26:46 +0000
Received: from EX19MTAUEB001.ant.amazon.com (10.252.135.35) by
 EX19D008UEA004.ant.amazon.com (10.252.134.191) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1118.40; Tue, 16 Jan 2024 19:26:46 +0000
Received: from dev-dsk-eliasely-1a-fd74790f.eu-west-1.amazon.com
 (10.253.91.118) by mail-relay.amazon.com (10.252.135.35) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1118.40 via Frontend Transport; Tue, 16 Jan 2024 19:26:45 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 395d8250-b4a5-11ee-98f1-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
  d=amazon.com; i=@amazon.com; q=dns/txt; s=amazon201209;
  t=1705433223; x=1736969223;
  h=from:to:cc:subject:date:message-id:in-reply-to:
   references:mime-version:content-transfer-encoding;
  bh=HBVAS715RpCNC8CvMLRfobjdzDnsKgjKWFL+xKdoEXs=;
  b=i4udLAip7iPs8rJsBIgH6ZhDtid5EH+Du6YLwpmLgFbxxE2o99m3zaVJ
   tyOl4eewHaTALD5eTHySaeGJhSluultpsqmZ9WqKXwUfjhGQ3TRnktEOr
   GLdsZHiN0WIE6NU7U+eJE1c8h5T4eMQ+PfTKBXywe3jZx7N6c1Cf6B9pv
   k=;
X-IronPort-AV: E=Sophos;i="6.05,200,1701129600"; 
   d="scan'208";a="606818936"
X-Farcaster-Flow-ID: 193c356f-d5a1-4ec0-b9d7-e823c4fd556c
From: Elias El Yandouzi <eliasely@amazon.com>
To: <xen-devel@lists.xenproject.org>
CC: <julien@xen.org>, <pdurrant@amazon.com>, <dwmw@amazon.com>, Julien Grall
	<jgrall@amazon.com>, Stefano Stabellini <sstabellini@kernel.org>, "Bertrand
 Marquis" <bertrand.marquis@arm.com>, Michal Orzel <michal.orzel@amd.com>,
	Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>, Elias El Yandouzi
	<eliasely@amazon.com>
Subject: [PATCH v2 (resend) 25/27] xen/arm64: mm: Use per-pCPU page-tables
Date: Tue, 16 Jan 2024 19:26:09 +0000
Message-ID: <20240116192611.41112-26-eliasely@amazon.com>
X-Mailer: git-send-email 2.40.1
In-Reply-To: <20240116192611.41112-1-eliasely@amazon.com>
References: <20240116192611.41112-1-eliasely@amazon.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
Precedence: Bulk

From: Julien Grall <jgrall@amazon.com>

At the moment, on Arm64, every pCPU is sharing the same page-tables.

In a follow-up patch, we will allow the possibility to remove the
direct map and therefore it will be necessary to have a mapcache.

While we have plenty of spare virtual address space to reserve part
for each pCPU, it means that temporary mappings (e.g. guest memory)
could be accessible by every pCPU.

In order to increase our security posture, it would be better if
those mappings are only accessible by the pCPU doing the temporary
mapping.

In addition to that, a per-pCPU page-tables opens the way to have
per-domain mapping area.

Arm32 is already using per-pCPU page-tables so most of the code
can be re-used. Arm64 doesn't yet have support for the mapcache,
so a stub is provided (moved to its own header asm/domain_page.h).

Take the opportunity to fix a typo in a comment that is modified.

Signed-off-by: Julien Grall <jgrall@amazon.com>
Signed-off-by: Elias El Yandouzi <eliasely@amazon.com>

----

    Changelog since v1:
        * Rebase
        * Fix typoes

diff --git a/xen/arch/arm/arm64/mmu/mm.c b/xen/arch/arm/arm64/mmu/mm.c
index d2651c9486..4f339efb7b 100644
--- a/xen/arch/arm/arm64/mmu/mm.c
+++ b/xen/arch/arm/arm64/mmu/mm.c
@@ -75,6 +75,7 @@ static void __init prepare_runtime_identity_mapping(void)
     paddr_t id_addr = virt_to_maddr(_start);
     lpae_t pte;
     DECLARE_OFFSETS(id_offsets, id_addr);
+    lpae_t *root = this_cpu(xen_pgtable);
 
     if ( id_offsets[0] >= IDENTITY_MAPPING_AREA_NR_L0 )
         panic("Cannot handle ID mapping above %uTB\n",
@@ -85,7 +86,7 @@ static void __init prepare_runtime_identity_mapping(void)
     pte.pt.table = 1;
     pte.pt.xn = 0;
 
-    write_pte(&xen_pgtable[id_offsets[0]], pte);
+    write_pte(&root[id_offsets[0]], pte);
 
     /* Link second ID table */
     pte = pte_of_xenaddr((vaddr_t)xen_second_id);
diff --git a/xen/arch/arm/domain_page.c b/xen/arch/arm/domain_page.c
index 3a43601623..ac2a6d0332 100644
--- a/xen/arch/arm/domain_page.c
+++ b/xen/arch/arm/domain_page.c
@@ -3,6 +3,8 @@
 #include <xen/pmap.h>
 #include <xen/vmap.h>
 
+#include <asm/domain_page.h>
+
 /* Override macros from asm/page.h to make them work with mfn_t */
 #undef virt_to_mfn
 #define virt_to_mfn(va) _mfn(__virt_to_mfn(va))
diff --git a/xen/arch/arm/include/asm/arm32/mm.h b/xen/arch/arm/include/asm/arm32/mm.h
index 856f2dbec4..87a315db01 100644
--- a/xen/arch/arm/include/asm/arm32/mm.h
+++ b/xen/arch/arm/include/asm/arm32/mm.h
@@ -1,12 +1,6 @@
 #ifndef __ARM_ARM32_MM_H__
 #define __ARM_ARM32_MM_H__
 
-#include <xen/percpu.h>
-
-#include <asm/lpae.h>
-
-DECLARE_PER_CPU(lpae_t *, xen_pgtable);
-
 /*
  * Only a limited amount of RAM, called xenheap, is always mapped on ARM32.
  * For convenience always return false.
@@ -16,8 +10,6 @@ static inline bool arch_mfns_in_directmap(unsigned long mfn, unsigned long nr)
     return false;
 }
 
-bool init_domheap_mappings(unsigned int cpu);
-
 static inline void arch_setup_page_tables(void)
 {
 }
diff --git a/xen/arch/arm/include/asm/domain_page.h b/xen/arch/arm/include/asm/domain_page.h
new file mode 100644
index 0000000000..e9f52685e2
--- /dev/null
+++ b/xen/arch/arm/include/asm/domain_page.h
@@ -0,0 +1,13 @@
+#ifndef __ASM_ARM_DOMAIN_PAGE_H__
+#define __ASM_ARM_DOMAIN_PAGE_H__
+
+#ifdef CONFIG_ARCH_MAP_DOMAIN_PAGE
+bool init_domheap_mappings(unsigned int cpu);
+#else
+static inline bool init_domheap_mappings(unsigned int cpu)
+{
+    return true;
+}
+#endif
+
+#endif /* __ASM_ARM_DOMAIN_PAGE_H__ */
diff --git a/xen/arch/arm/include/asm/mm.h b/xen/arch/arm/include/asm/mm.h
index 9a94d7eaf7..a76578a16f 100644
--- a/xen/arch/arm/include/asm/mm.h
+++ b/xen/arch/arm/include/asm/mm.h
@@ -2,6 +2,9 @@
 #define __ARCH_ARM_MM__
 
 #include <xen/kernel.h>
+#include <xen/percpu.h>
+
+#include <asm/lpae.h>
 #include <asm/page.h>
 #include <public/xen.h>
 #include <xen/pdx.h>
diff --git a/xen/arch/arm/include/asm/mmu/mm.h b/xen/arch/arm/include/asm/mmu/mm.h
index c5e03a66bf..c03c3a51e4 100644
--- a/xen/arch/arm/include/asm/mmu/mm.h
+++ b/xen/arch/arm/include/asm/mmu/mm.h
@@ -2,6 +2,8 @@
 #ifndef __ARM_MMU_MM_H__
 #define __ARM_MMU_MM_H__
 
+DECLARE_PER_CPU(lpae_t *, xen_pgtable);
+
 /* Non-boot CPUs use this to find the correct pagetables. */
 extern uint64_t init_ttbr;
 
diff --git a/xen/arch/arm/mmu/pt.c b/xen/arch/arm/mmu/pt.c
index a7755728ae..e772ab4e66 100644
--- a/xen/arch/arm/mmu/pt.c
+++ b/xen/arch/arm/mmu/pt.c
@@ -606,9 +606,9 @@ static int xen_pt_update(unsigned long virt,
     unsigned long left = nr_mfns;
 
     /*
-     * For arm32, page-tables are different on each CPUs. Yet, they share
-     * some common mappings. It is assumed that only common mappings
-     * will be modified with this function.
+     * Page-tables are different on each CPU. Yet, they share some common
+     * mappings. It is assumed that only common mappings will be modified
+     * with this function.
      *
      * XXX: Add a check.
      */
diff --git a/xen/arch/arm/mmu/setup.c b/xen/arch/arm/mmu/setup.c
index 57f1b46499..8c81e26da3 100644
--- a/xen/arch/arm/mmu/setup.c
+++ b/xen/arch/arm/mmu/setup.c
@@ -26,17 +26,15 @@
  * PCPUs.
  */
 
-#ifdef CONFIG_ARM_64
-DEFINE_PAGE_TABLE(xen_pgtable);
-static DEFINE_PAGE_TABLE(xen_first);
-#define THIS_CPU_PGTABLE xen_pgtable
-#else
 /* Per-CPU pagetable pages */
 /* xen_pgtable == root of the trie (zeroeth level on 64-bit, first on 32-bit) */
 DEFINE_PER_CPU(lpae_t *, xen_pgtable);
 #define THIS_CPU_PGTABLE this_cpu(xen_pgtable)
 /* Root of the trie for cpu0, other CPU's PTs are dynamically allocated */
 static DEFINE_PAGE_TABLE(cpu0_pgtable);
+
+#ifdef CONFIG_ARM_64
+static DEFINE_PAGE_TABLE(xen_first);
 #endif
 
 /* Common pagetable leaves */
@@ -228,19 +226,22 @@ void __init setup_pagetables(unsigned long boot_phys_offset)
     lpae_t pte, *p;
     int i;
 
+    p = cpu0_pgtable;
+
     phys_offset = boot_phys_offset;
 
+    /* arch_setup_page_tables() may need to access the root page-tables. */
+    per_cpu(xen_pgtable, 0) = cpu0_pgtable;
+
     arch_setup_page_tables();
 
 #ifdef CONFIG_ARM_64
     pte = pte_of_xenaddr((uintptr_t)xen_first);
     pte.pt.table = 1;
     pte.pt.xn = 0;
-    xen_pgtable[zeroeth_table_offset(XEN_VIRT_START)] = pte;
+    p[zeroeth_table_offset(XEN_VIRT_START)] = pte;
 
-    p = (void *) xen_first;
-#else
-    p = (void *) cpu0_pgtable;
+    p = xen_first;
 #endif
 
     /* Map xen second level page-table */
@@ -283,19 +284,11 @@ void __init setup_pagetables(unsigned long boot_phys_offset)
     pte.pt.table = 1;
     xen_second[second_table_offset(FIXMAP_ADDR(0))] = pte;
 
-#ifdef CONFIG_ARM_64
-    ttbr = (uintptr_t) xen_pgtable + phys_offset;
-#else
     ttbr = (uintptr_t) cpu0_pgtable + phys_offset;
-#endif
 
     switch_ttbr(ttbr);
 
     xen_pt_enforce_wnx();
-
-#ifdef CONFIG_ARM_32
-    per_cpu(xen_pgtable, 0) = cpu0_pgtable;
-#endif
 }
 
 void *__init arch_vmap_virt_end(void)
diff --git a/xen/arch/arm/mmu/smpboot.c b/xen/arch/arm/mmu/smpboot.c
index fb5df667ba..fdd9b9c580 100644
--- a/xen/arch/arm/mmu/smpboot.c
+++ b/xen/arch/arm/mmu/smpboot.c
@@ -7,6 +7,7 @@
 
 #include <xen/domain_page.h>
 
+#include <asm/domain_page.h>
 #include <asm/setup.h>
 
 /*
@@ -68,20 +69,6 @@ static void clear_boot_pagetables(void)
     clear_table(boot_third);
 }
 
-#ifdef CONFIG_ARM_64
-int prepare_secondary_mm(int cpu)
-{
-    clear_boot_pagetables();
-
-    /*
-     * Set init_ttbr for this CPU coming up. All CPUs share a single setof
-     * pagetables, but rewrite it each time for consistency with 32 bit.
-     */
-    init_ttbr = virt_to_maddr(xen_pgtable);
-    clean_dcache(init_ttbr);
-    return 0;
-}
-#else
 int prepare_secondary_mm(int cpu)
 {
     lpae_t *root = alloc_xenheap_page();
@@ -112,7 +99,6 @@ int prepare_secondary_mm(int cpu)
 
     return 0;
 }
-#endif
 
 /*
  * Local variables:
diff --git a/xen/arch/arm/setup.c b/xen/arch/arm/setup.c
index 7e28f62d09..3dec365c57 100644
--- a/xen/arch/arm/setup.c
+++ b/xen/arch/arm/setup.c
@@ -42,6 +42,7 @@
 #include <asm/gic.h>
 #include <asm/cpuerrata.h>
 #include <asm/cpufeature.h>
+#include <asm/domain_page.h>
 #include <asm/platform.h>
 #include <asm/procinfo.h>
 #include <asm/setup.h>
-- 
2.40.1



From xen-devel-bounces@lists.xenproject.org Tue Jan 16 19:29:32 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 16 Jan 2024 19:29:32 +0000
Received: from list by lists.xenproject.org with outflank-mailman.668122.1040132 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPp7s-0005fU-MK; Tue, 16 Jan 2024 19:29:32 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 668122.1040132; Tue, 16 Jan 2024 19:29:32 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPp7s-0005fN-II; Tue, 16 Jan 2024 19:29:32 +0000
Received: by outflank-mailman (input) for mailman id 668122;
 Tue, 16 Jan 2024 19:29:31 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=wmx9=I2=amazon.co.uk=prvs=738631f0b=eliasely@srs-se1.protection.inumbo.net>)
 id 1rPp5a-0003Xv-1H
 for xen-devel@lists.xenproject.org; Tue, 16 Jan 2024 19:27:10 +0000
Received: from smtp-fw-52005.amazon.com (smtp-fw-52005.amazon.com
 [52.119.213.156]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 3ca3be4e-b4a5-11ee-98f1-6d05b1d4d9a1;
 Tue, 16 Jan 2024 20:27:08 +0100 (CET)
Received: from iad12-co-svc-p1-lb1-vlan3.amazon.com (HELO
 email-inbound-relay-pdx-2c-m6i4x-5eae960a.us-west-2.amazon.com) ([10.43.8.6])
 by smtp-border-fw-52005.iad7.amazon.com with
 ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 16 Jan 2024 19:27:06 +0000
Received: from smtpout.prod.us-east-1.prod.farcaster.email.amazon.dev
 (pdx2-ws-svc-p26-lb5-vlan2.pdx.amazon.com [10.39.38.66])
 by email-inbound-relay-pdx-2c-m6i4x-5eae960a.us-west-2.amazon.com (Postfix)
 with ESMTPS id C58DB40E7C; Tue, 16 Jan 2024 19:27:05 +0000 (UTC)
Received: from EX19MTAUEC002.ant.amazon.com [10.0.0.204:13937]
 by smtpin.naws.us-east-1.prod.farcaster.email.amazon.dev [10.0.28.244:2525]
 with esmtp (Farcaster)
 id f4cc082f-6bf2-4561-bb03-afd074cc6998; Tue, 16 Jan 2024 19:27:05 +0000 (UTC)
Received: from EX19D008UEC004.ant.amazon.com (10.252.135.170) by
 EX19MTAUEC002.ant.amazon.com (10.252.135.253) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1118.40; Tue, 16 Jan 2024 19:26:47 +0000
Received: from EX19MTAUEB001.ant.amazon.com (10.252.135.35) by
 EX19D008UEC004.ant.amazon.com (10.252.135.170) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1118.40; Tue, 16 Jan 2024 19:26:47 +0000
Received: from dev-dsk-eliasely-1a-fd74790f.eu-west-1.amazon.com
 (10.253.91.118) by mail-relay.amazon.com (10.252.135.35) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1118.40 via Frontend Transport; Tue, 16 Jan 2024 19:26:46 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 3ca3be4e-b4a5-11ee-98f1-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
  d=amazon.com; i=@amazon.com; q=dns/txt; s=amazon201209;
  t=1705433229; x=1736969229;
  h=from:to:cc:subject:date:message-id:in-reply-to:
   references:mime-version:content-transfer-encoding;
  bh=6yOB72LIvzh25UA84mj42X06HmCmvwf5nDXcH1vuudI=;
  b=ZI+I5rjO70K82kL7PhCaGam8F1N9zmmPhPtfdv6CBAzBpzHdUsB5TWAl
   O+uDDuKciCpu5c9ZE7H4vr/aYhIighqXW1v26kDbD2cTH0vEPWSG/sN/N
   qI7br2SsT++C6riMOuIHWVb8iqIHLHkpnlnIUzYRfSxw/fw/H0k8seJCe
   g=;
X-IronPort-AV: E=Sophos;i="6.05,200,1701129600"; 
   d="scan'208";a="627983742"
X-Farcaster-Flow-ID: f4cc082f-6bf2-4561-bb03-afd074cc6998
From: Elias El Yandouzi <eliasely@amazon.com>
To: <xen-devel@lists.xenproject.org>
CC: <julien@xen.org>, <pdurrant@amazon.com>, <dwmw@amazon.com>, Julien Grall
	<jgrall@amazon.com>, Stefano Stabellini <sstabellini@kernel.org>, "Bertrand
 Marquis" <bertrand.marquis@arm.com>, Michal Orzel <michal.orzel@amd.com>,
	Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>, Elias El Yandouzi
	<eliasely@amazon.com>
Subject: [PATCH v2 (resend) 26/27] xen/arm64: Implement a mapcache for arm64
Date: Tue, 16 Jan 2024 19:26:10 +0000
Message-ID: <20240116192611.41112-27-eliasely@amazon.com>
X-Mailer: git-send-email 2.40.1
In-Reply-To: <20240116192611.41112-1-eliasely@amazon.com>
References: <20240116192611.41112-1-eliasely@amazon.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
Precedence: Bulk

From: Julien Grall <jgrall@amazon.com>

At the moment, on arm64, map_domain_page() is implemented using
virt_to_mfn(). Therefore it is relying on the directmap.

In a follow-up patch, we will allow the admin to remove the directmap.
Therefore we want to implement a mapcache.

Thanksfully there is already one for arm32. So select ARCH_ARM_DOMAIN_PAGE
and add the necessary boiler plate to support 64-bit:
    - The page-table start at level 0, so we need to allocate the level
      1 page-table
    - map_domain_page() should check if the page is in the directmap. If
      yes, then use virt_to_mfn() to limit the performance impact
      when the directmap is still enabled (this will be selectable
      on the command line).

Take the opportunity to replace first_table_offset(...) with offsets[...].

Note that, so far, arch_mfns_in_directmap() always return true on
arm64. So the mapcache is not yet used. This will change in a
follow-up patch.

Signed-off-by: Julien Grall <jgrall@amazon.com>
Signed-off-by: Elias El Yandouzi <eliasely@amazon.com>

----

    There are a few TODOs:
        - It is becoming more critical to fix the mapcache
          implementation (this is not compliant with the Arm Arm)
        - Evaluate the performance

diff --git a/xen/arch/arm/Kconfig b/xen/arch/arm/Kconfig
index 50e9bfae1a..278243f0d6 100644
--- a/xen/arch/arm/Kconfig
+++ b/xen/arch/arm/Kconfig
@@ -1,7 +1,6 @@
 config ARM_32
 	def_bool y
 	depends on "$(ARCH)" = "arm32"
-	select ARCH_MAP_DOMAIN_PAGE
 
 config ARM_64
 	def_bool y
@@ -12,6 +11,7 @@ config ARM_64
 config ARM
 	def_bool y
 	select HAS_ALTERNATIVE
+	select ARCH_MAP_DOMAIN_PAGE
 	select HAS_DEVICE_TREE
 	select HAS_PASSTHROUGH
 	select HAS_UBSAN
diff --git a/xen/arch/arm/arm64/mmu/mm.c b/xen/arch/arm/arm64/mmu/mm.c
index 4f339efb7b..f4a81aa705 100644
--- a/xen/arch/arm/arm64/mmu/mm.c
+++ b/xen/arch/arm/arm64/mmu/mm.c
@@ -4,6 +4,7 @@
 #include <xen/mm.h>
 #include <xen/pfn.h>
 
+#include <asm/domain_page.h>
 #include <asm/setup.h>
 #include <asm/static-memory.h>
 
@@ -236,6 +237,14 @@ void __init setup_mm(void)
     setup_frametable_mappings(ram_start, ram_end);
     max_page = PFN_DOWN(ram_end);
 
+    /*
+     * The allocators may need to use map_domain_page() (such as for
+     * scrubbing pages). So we need to prepare the domheap area first.
+     */
+    if ( !init_domheap_mappings(smp_processor_id()) )
+        panic("CPU%u: Unable to prepare the domheap page-tables\n",
+              smp_processor_id());
+
     init_staticmem_pages();
 }
 
diff --git a/xen/arch/arm/domain_page.c b/xen/arch/arm/domain_page.c
index ac2a6d0332..0f6ba48892 100644
--- a/xen/arch/arm/domain_page.c
+++ b/xen/arch/arm/domain_page.c
@@ -1,4 +1,5 @@
 /* SPDX-License-Identifier: GPL-2.0-or-later */
+#include <xen/domain_page.h>
 #include <xen/mm.h>
 #include <xen/pmap.h>
 #include <xen/vmap.h>
@@ -8,6 +9,8 @@
 /* Override macros from asm/page.h to make them work with mfn_t */
 #undef virt_to_mfn
 #define virt_to_mfn(va) _mfn(__virt_to_mfn(va))
+#undef mfn_to_virt
+#define mfn_to_virt(va) __mfn_to_virt(mfn_x(mfn))
 
 /* cpu0's domheap page tables */
 static DEFINE_PAGE_TABLES(cpu0_dommap, DOMHEAP_SECOND_PAGES);
@@ -31,13 +34,30 @@ bool init_domheap_mappings(unsigned int cpu)
 {
     unsigned int order = get_order_from_pages(DOMHEAP_SECOND_PAGES);
     lpae_t *root = per_cpu(xen_pgtable, cpu);
+    lpae_t *first;
     unsigned int i, first_idx;
     lpae_t *domheap;
     mfn_t mfn;
 
+    /* Convenience aliases */
+    DECLARE_OFFSETS(offsets, DOMHEAP_VIRT_START);
+
     ASSERT(root);
     ASSERT(!per_cpu(xen_dommap, cpu));
 
+    /*
+     * On Arm64, the root is at level 0. Therefore we need an extra step
+     * to allocate the first level page-table.
+     */
+#ifdef CONFIG_ARM_64
+    if ( create_xen_table(&root[offsets[0]]) )
+        return false;
+
+    first = xen_map_table(lpae_get_mfn(root[offsets[0]]));
+#else
+    first = root;
+#endif
+
     /*
      * The domheap for cpu0 is initialized before the heap is initialized.
      * So we need to use pre-allocated pages.
@@ -58,16 +78,20 @@ bool init_domheap_mappings(unsigned int cpu)
      * domheap mapping pages.
      */
     mfn = virt_to_mfn(domheap);
-    first_idx = first_table_offset(DOMHEAP_VIRT_START);
+    first_idx = offsets[1];
     for ( i = 0; i < DOMHEAP_SECOND_PAGES; i++ )
     {
         lpae_t pte = mfn_to_xen_entry(mfn_add(mfn, i), MT_NORMAL);
         pte.pt.table = 1;
-        write_pte(&root[first_idx + i], pte);
+        write_pte(&first[first_idx + i], pte);
     }
 
     per_cpu(xen_dommap, cpu) = domheap;
 
+#ifdef CONFIG_ARM_64
+    xen_unmap_table(first);
+#endif
+
     return true;
 }
 
@@ -91,6 +115,10 @@ void *map_domain_page(mfn_t mfn)
     lpae_t pte;
     int i, slot;
 
+    /* Bypass the mapcache if the page is in the directmap */
+    if ( arch_mfns_in_directmap(mfn_x(mfn), 1) )
+        return mfn_to_virt(mfn);
+
     local_irq_save(flags);
 
     /* The map is laid out as an open-addressed hash table where each
@@ -153,13 +181,25 @@ void *map_domain_page(mfn_t mfn)
 /* Release a mapping taken with map_domain_page() */
 void unmap_domain_page(const void *ptr)
 {
+    unsigned long va = (unsigned long)ptr;
     unsigned long flags;
     lpae_t *map = this_cpu(xen_dommap);
-    int slot = ((unsigned long)ptr - DOMHEAP_VIRT_START) >> SECOND_SHIFT;
+    unsigned int slot;
+
+    /* Below we assume that the domheap area doesn't start at 0 */
+    BUILD_BUG_ON(DOMHEAP_VIRT_START == 0);
 
-    if ( !ptr )
+    /*
+     * map_domain_page() may not have mapped anything if the address
+     * is part of the directmap. So ignore anything outside of the
+     * domheap.
+     */
+    if ( (va < DOMHEAP_VIRT_START) ||
+         ((va - DOMHEAP_VIRT_START) >= DOMHEAP_VIRT_SIZE) )
         return;
 
+    slot = (va - DOMHEAP_VIRT_START) >> SECOND_SHIFT;
+
     local_irq_save(flags);
 
     ASSERT(slot >= 0 && slot < DOMHEAP_ENTRIES);
diff --git a/xen/arch/arm/include/asm/mm.h b/xen/arch/arm/include/asm/mm.h
index a76578a16f..c48e51d827 100644
--- a/xen/arch/arm/include/asm/mm.h
+++ b/xen/arch/arm/include/asm/mm.h
@@ -432,6 +432,11 @@ static inline void page_set_xenheap_gfn(struct page_info *p, gfn_t gfn)
     } while ( (y = cmpxchg(&p->u.inuse.type_info, x, nx)) != x );
 }
 
+/* Helpers to allocate, map and unmap a Xen page-table */
+int create_xen_table(lpae_t *entry);
+lpae_t *xen_map_table(mfn_t mfn);
+void xen_unmap_table(const lpae_t *table);
+
 #endif /*  __ARCH_ARM_MM__ */
 /*
  * Local variables:
diff --git a/xen/arch/arm/include/asm/mmu/layout.h b/xen/arch/arm/include/asm/mmu/layout.h
index a3b546465b..c549420e8b 100644
--- a/xen/arch/arm/include/asm/mmu/layout.h
+++ b/xen/arch/arm/include/asm/mmu/layout.h
@@ -35,9 +35,13 @@
  *
  *  32G -  64G   Frametable: 56 bytes per page for 2TB of RAM
  *
- * 0x00000a8000000000 - 0x00007fffffffffff (512GB+117TB, L0 slots [21..255])
+ * 0x00000a8000000000 - 0x00007f7fffffffff (117TB, L0 slots [21..254])
  *  Unused
  *
+ * 0x00007f8000000000 - 0x00007fffffffffff (512GB, L0 slot [255])
+ *  (Relative offsets)
+ *  0  -    2G    Domheap: on-demand-mapped
+ *
  * 0x0000800000000000 - 0x000084ffffffffff (5TB, L0 slots [256..265])
  *  1:1 mapping of RAM
  *
@@ -130,6 +134,13 @@
 #define FRAMETABLE_SIZE        GB(32)
 #define FRAMETABLE_NR          (FRAMETABLE_SIZE / sizeof(*frame_table))
 
+#define DOMHEAP_VIRT_START     SLOT0(255)
+#define DOMHEAP_VIRT_SIZE      GB(2)
+
+#define DOMHEAP_ENTRIES        1024 /* 1024 2MB mapping slots */
+/* Number of domheap pagetable pages required at the second level (2MB mappings) */
+#define DOMHEAP_SECOND_PAGES (DOMHEAP_VIRT_SIZE >> FIRST_SHIFT)
+
 #define DIRECTMAP_VIRT_START   SLOT0(256)
 #define DIRECTMAP_SIZE         (SLOT0_ENTRY_SIZE * (266 - 256))
 #define DIRECTMAP_VIRT_END     (DIRECTMAP_VIRT_START + DIRECTMAP_SIZE - 1)
diff --git a/xen/arch/arm/mmu/pt.c b/xen/arch/arm/mmu/pt.c
index e772ab4e66..f26b1412be 100644
--- a/xen/arch/arm/mmu/pt.c
+++ b/xen/arch/arm/mmu/pt.c
@@ -32,7 +32,7 @@ mm_printk(const char *fmt, ...) {}
 #define HYP_PT_ROOT_LEVEL 1
 #endif
 
-static lpae_t *xen_map_table(mfn_t mfn)
+lpae_t *xen_map_table(mfn_t mfn)
 {
     /*
      * During early boot, map_domain_page() may be unusable. Use the
@@ -44,7 +44,7 @@ static lpae_t *xen_map_table(mfn_t mfn)
     return map_domain_page(mfn);
 }
 
-static void xen_unmap_table(const lpae_t *table)
+void xen_unmap_table(const lpae_t *table)
 {
     /*
      * During early boot, xen_map_table() will not use map_domain_page()
@@ -227,7 +227,7 @@ void *ioremap(paddr_t pa, size_t len)
     return ioremap_attr(pa, len, PAGE_HYPERVISOR_NOCACHE);
 }
 
-static int create_xen_table(lpae_t *entry)
+int create_xen_table(lpae_t *entry)
 {
     mfn_t mfn;
     void *p;
-- 
2.40.1



From xen-devel-bounces@lists.xenproject.org Tue Jan 16 19:31:32 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 16 Jan 2024 19:31:32 +0000
Received: from list by lists.xenproject.org with outflank-mailman.668126.1040141 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPp9l-00089n-06; Tue, 16 Jan 2024 19:31:29 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 668126.1040141; Tue, 16 Jan 2024 19:31:28 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPp9k-00089g-Tn; Tue, 16 Jan 2024 19:31:28 +0000
Received: by outflank-mailman (input) for mailman id 668126;
 Tue, 16 Jan 2024 19:31:27 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=wmx9=I2=amazon.co.uk=prvs=738631f0b=eliasely@srs-se1.protection.inumbo.net>)
 id 1rPp5O-0003Xv-Ea
 for xen-devel@lists.xenproject.org; Tue, 16 Jan 2024 19:26:58 +0000
Received: from smtp-fw-52003.amazon.com (smtp-fw-52003.amazon.com
 [52.119.213.152]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 3514ea24-b4a5-11ee-98f1-6d05b1d4d9a1;
 Tue, 16 Jan 2024 20:26:55 +0100 (CET)
Received: from iad12-co-svc-p1-lb1-vlan3.amazon.com (HELO
 email-inbound-relay-iad-1e-m6i4x-a65ebc6e.us-east-1.amazon.com) ([10.43.8.6])
 by smtp-border-fw-52003.iad7.amazon.com with
 ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 16 Jan 2024 19:26:54 +0000
Received: from smtpout.prod.us-east-1.prod.farcaster.email.amazon.dev
 (iad7-ws-svc-p70-lb3-vlan3.iad.amazon.com [10.32.235.38])
 by email-inbound-relay-iad-1e-m6i4x-a65ebc6e.us-east-1.amazon.com (Postfix)
 with ESMTPS id 91C3168F61; Tue, 16 Jan 2024 19:26:51 +0000 (UTC)
Received: from EX19MTAUEC002.ant.amazon.com [10.0.0.204:14050]
 by smtpin.naws.us-east-1.prod.farcaster.email.amazon.dev [10.0.22.37:2525]
 with esmtp (Farcaster)
 id 4817dcb0-016b-443f-977f-5f3d3e04e4ed; Tue, 16 Jan 2024 19:26:51 +0000 (UTC)
Received: from EX19D008UEA004.ant.amazon.com (10.252.134.191) by
 EX19MTAUEC002.ant.amazon.com (10.252.135.253) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1118.40; Tue, 16 Jan 2024 19:26:39 +0000
Received: from EX19MTAUEB001.ant.amazon.com (10.252.135.35) by
 EX19D008UEA004.ant.amazon.com (10.252.134.191) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1118.40; Tue, 16 Jan 2024 19:26:38 +0000
Received: from dev-dsk-eliasely-1a-fd74790f.eu-west-1.amazon.com
 (10.253.91.118) by mail-relay.amazon.com (10.252.135.35) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1118.40 via Frontend Transport; Tue, 16 Jan 2024 19:26:37 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 3514ea24-b4a5-11ee-98f1-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
  d=amazon.com; i=@amazon.com; q=dns/txt; s=amazon201209;
  t=1705433216; x=1736969216;
  h=from:to:cc:subject:date:message-id:in-reply-to:
   references:mime-version:content-transfer-encoding;
  bh=fVoEyNUTrAzw7YTY+W9724IaRNR5eJ6bcUYtN3Z0rYg=;
  b=hgrTjuOHKKkuAlrGJx3I6tz25MmYtYc6w7ZhnI2uw3v/62eHOpZgPfSe
   faY1hUVMIpC9pBd1s83sXBN5CkNYZqgfCEIFItffiqCQJAG6zM/p+joLg
   8Avz4uKQQbRN9R/ghvCmQrGvmjUoCLmg8PXZz1XXe6Y4MvOGNl7Oi3Fqb
   w=;
X-IronPort-AV: E=Sophos;i="6.05,200,1701129600"; 
   d="scan'208";a="631577135"
X-Farcaster-Flow-ID: 4817dcb0-016b-443f-977f-5f3d3e04e4ed
From: Elias El Yandouzi <eliasely@amazon.com>
To: <xen-devel@lists.xenproject.org>
CC: <julien@xen.org>, <pdurrant@amazon.com>, <dwmw@amazon.com>, Hongyan Xia
	<hongyxia@amazon.com>, Jan Beulich <jbeulich@suse.com>, Andrew Cooper
	<andrew.cooper3@citrix.com>, =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?=
	<roger.pau@citrix.com>, Wei Liu <wl@xen.org>, Julien Grall
	<jgrall@amazon.com>, Elias El Yandouzi <eliasely@amazon.com>
Subject: [PATCH v2 (resend) 19/27] x86/setup: Leave early boot slightly earlier
Date: Tue, 16 Jan 2024 19:26:03 +0000
Message-ID: <20240116192611.41112-20-eliasely@amazon.com>
X-Mailer: git-send-email 2.40.1
In-Reply-To: <20240116192611.41112-1-eliasely@amazon.com>
References: <20240116192611.41112-1-eliasely@amazon.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
Precedence: Bulk

From: Hongyan Xia <hongyxia@amazon.com>

When we do not have a direct map, memory for metadata of heap nodes in
init_node_heap() is allocated from xenheap, which needs to be mapped and
unmapped on demand. However, we cannot just take memory from the boot
allocator to create the PTEs while we are passing memory to the heap
allocator.

To solve this race, we leave early boot slightly sooner so that Xen PTE
pages are allocated from the heap instead of the boot allocator. We can
do this because the metadata for the 1st node is statically allocated,
and by the time we need memory to create mappings for the 2nd node, we
already have enough memory in the heap allocator in the 1st node.

Signed-off-by: Hongyan Xia <hongyxia@amazon.com>
Signed-off-by: Julien Grall <jgrall@amazon.com>
Signed-off-by: Elias El Yandouzi <eliasely@amazon.com>

diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
index b813ea75b5..3b698c8c41 100644
--- a/xen/arch/x86/setup.c
+++ b/xen/arch/x86/setup.c
@@ -1746,6 +1746,22 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
 
     numa_initmem_init(0, raw_max_page);
 
+    /*
+     * When we do not have a direct map, memory for metadata of heap nodes in
+     * init_node_heap() is allocated from xenheap, which needs to be mapped and
+     * unmapped on demand. However, we cannot just take memory from the boot
+     * allocator to create the PTEs while we are passing memory to the heap
+     * allocator during end_boot_allocator().
+     *
+     * To solve this race, we need to leave early boot before
+     * end_boot_allocator() so that Xen PTE pages are allocated from the heap
+     * instead of the boot allocator. We can do this because the metadata for
+     * the 1st node is statically allocated, and by the time we need memory to
+     * create mappings for the 2nd node, we already have enough memory in the
+     * heap allocator in the 1st node.
+     */
+    system_state = SYS_STATE_boot;
+
     if ( max_page - 1 > virt_to_mfn(HYPERVISOR_VIRT_END - 1) )
     {
         unsigned long lo = virt_to_mfn(HYPERVISOR_VIRT_END - 1);
@@ -1777,8 +1793,6 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
     else
         end_boot_allocator();
 
-    system_state = SYS_STATE_boot;
-
     bsp_stack = cpu_alloc_stack(0);
     if ( !bsp_stack )
         panic("No memory for BSP stack\n");
-- 
2.40.1



From xen-devel-bounces@lists.xenproject.org Tue Jan 16 19:32:04 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 16 Jan 2024 19:32:04 +0000
Received: from list by lists.xenproject.org with outflank-mailman.668132.1040152 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPpAK-0000iI-CV; Tue, 16 Jan 2024 19:32:04 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 668132.1040152; Tue, 16 Jan 2024 19:32:04 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPpAK-0000iB-8m; Tue, 16 Jan 2024 19:32:04 +0000
Received: by outflank-mailman (input) for mailman id 668132;
 Tue, 16 Jan 2024 19:32:03 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=wmx9=I2=amazon.co.uk=prvs=738631f0b=eliasely@srs-se1.protection.inumbo.net>)
 id 1rPp5N-0002iI-L8
 for xen-devel@lists.xenproject.org; Tue, 16 Jan 2024 19:26:57 +0000
Received: from smtp-fw-9105.amazon.com (smtp-fw-9105.amazon.com
 [207.171.188.204]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 34c40057-b4a5-11ee-9b0f-b553b5be7939;
 Tue, 16 Jan 2024 20:26:55 +0100 (CET)
Received: from pdx4-co-svc-p1-lb2-vlan2.amazon.com (HELO
 email-inbound-relay-iad-1e-m6i4x-9694bb9e.us-east-1.amazon.com)
 ([10.25.36.210]) by smtp-border-fw-9105.sea19.amazon.com with
 ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 16 Jan 2024 19:26:47 +0000
Received: from smtpout.prod.us-east-1.prod.farcaster.email.amazon.dev
 (iad7-ws-svc-p70-lb3-vlan2.iad.amazon.com [10.32.235.34])
 by email-inbound-relay-iad-1e-m6i4x-9694bb9e.us-east-1.amazon.com (Postfix)
 with ESMTPS id 3AE97817C4; Tue, 16 Jan 2024 19:26:44 +0000 (UTC)
Received: from EX19MTAUEA001.ant.amazon.com [10.0.29.78:55866]
 by smtpin.naws.us-east-1.prod.farcaster.email.amazon.dev [10.0.95.118:2525]
 with esmtp (Farcaster)
 id d4d114b5-d0b8-4230-b48b-4345f756de61; Tue, 16 Jan 2024 19:26:43 +0000 (UTC)
Received: from EX19D008UEA004.ant.amazon.com (10.252.134.191) by
 EX19MTAUEA001.ant.amazon.com (10.252.134.203) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1118.40; Tue, 16 Jan 2024 19:26:37 +0000
Received: from EX19MTAUEB001.ant.amazon.com (10.252.135.35) by
 EX19D008UEA004.ant.amazon.com (10.252.134.191) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1118.40; Tue, 16 Jan 2024 19:26:37 +0000
Received: from dev-dsk-eliasely-1a-fd74790f.eu-west-1.amazon.com
 (10.253.91.118) by mail-relay.amazon.com (10.252.135.35) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1118.40 via Frontend Transport; Tue, 16 Jan 2024 19:26:36 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 34c40057-b4a5-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
  d=amazon.com; i=@amazon.com; q=dns/txt; s=amazon201209;
  t=1705433216; x=1736969216;
  h=from:to:cc:subject:date:message-id:in-reply-to:
   references:mime-version:content-transfer-encoding;
  bh=SgoUYRGfBhQWiY7NendWHvruacHBLERYGlNvfzPucEo=;
  b=NE0f8j1q31G3NHFXG8YOIGRi34LvMR3zHg1ry7fr6y5E21fT+Z9/vtDB
   DCTjvJ/237fEN5+lnk46KFpKp/+pYUCGR+3WE+5iIcWZgia7H9VBlm5qV
   Uc5tAcEWVxIKv3QbFF/12B1rfhi+Ti8yuaNtGu6fFC6bz2kjZvkGl8cTL
   8=;
X-IronPort-AV: E=Sophos;i="6.05,200,1701129600"; 
   d="scan'208";a="698190453"
X-Farcaster-Flow-ID: d4d114b5-d0b8-4230-b48b-4345f756de61
From: Elias El Yandouzi <eliasely@amazon.com>
To: <xen-devel@lists.xenproject.org>
CC: <julien@xen.org>, <pdurrant@amazon.com>, <dwmw@amazon.com>, Hongyan Xia
	<hongyxia@amazon.com>, Andrew Cooper <andrew.cooper3@citrix.com>, "George
 Dunlap" <george.dunlap@citrix.com>, Jan Beulich <jbeulich@suse.com>, "Stefano
 Stabellini" <sstabellini@kernel.org>, Wei Liu <wl@xen.org>, Julien Grall
	<jgrall@amazon.com>, Elias El Yandouzi <eliasely@amazon.com>
Subject: [PATCH v2 (resend) 18/27] xen/page_alloc: Add a path for xenheap when there is no direct map
Date: Tue, 16 Jan 2024 19:26:02 +0000
Message-ID: <20240116192611.41112-19-eliasely@amazon.com>
X-Mailer: git-send-email 2.40.1
In-Reply-To: <20240116192611.41112-1-eliasely@amazon.com>
References: <20240116192611.41112-1-eliasely@amazon.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
Precedence: Bulk

From: Hongyan Xia <hongyxia@amazon.com>

When there is not an always-mapped direct map, xenheap allocations need
to be mapped and unmapped on-demand.

Signed-off-by: Hongyan Xia <hongyxia@amazon.com>
Signed-off-by: Julien Grall <jgrall@amazon.com>
Signed-off-by: Elias El Yandouzi <eliasely@amazon.com>

----

    I have left the call to map_pages_to_xen() and destroy_xen_mappings()
    in the split heap for now. I am not entirely convinced this is necessary
    because in that setup only the xenheap would be always mapped and
    this doesn't contain any guest memory (aside the grant-table).
    So map/unmapping for every allocation seems unnecessary.

    Changes in v2:
        * Fix remaining wrong indentation in alloc_xenheap_pages()

    Changes since Hongyan's version:
        * Rebase
        * Fix indentation in alloc_xenheap_pages()
        * Fix build for arm32

diff --git a/xen/common/page_alloc.c b/xen/common/page_alloc.c
index a3746cfbcf..52934ec5c1 100644
--- a/xen/common/page_alloc.c
+++ b/xen/common/page_alloc.c
@@ -2237,6 +2237,7 @@ void init_xenheap_pages(paddr_t ps, paddr_t pe)
 void *alloc_xenheap_pages(unsigned int order, unsigned int memflags)
 {
     struct page_info *pg;
+    void *ret;
 
     ASSERT_ALLOC_CONTEXT();
 
@@ -2245,17 +2246,36 @@ void *alloc_xenheap_pages(unsigned int order, unsigned int memflags)
     if ( unlikely(pg == NULL) )
         return NULL;
 
+    ret = page_to_virt(pg);
+
+    if ( !has_directmap() &&
+         map_pages_to_xen((unsigned long)ret, page_to_mfn(pg), 1UL << order,
+                          PAGE_HYPERVISOR) )
+    {
+        /* Failed to map xenheap pages. */
+        free_heap_pages(pg, order, false);
+        return NULL;
+    }
+
     return page_to_virt(pg);
 }
 
 
 void free_xenheap_pages(void *v, unsigned int order)
 {
+    unsigned long va = (unsigned long)v & PAGE_MASK;
+
     ASSERT_ALLOC_CONTEXT();
 
     if ( v == NULL )
         return;
 
+    if ( !has_directmap() &&
+         destroy_xen_mappings(va, va + (1UL << (order + PAGE_SHIFT))) )
+        dprintk(XENLOG_WARNING,
+                "Error while destroying xenheap mappings at %p, order %u\n",
+                v, order);
+
     free_heap_pages(virt_to_page(v), order, false);
 }
 
@@ -2279,6 +2299,7 @@ void *alloc_xenheap_pages(unsigned int order, unsigned int memflags)
 {
     struct page_info *pg;
     unsigned int i;
+    void *ret;
 
     ASSERT_ALLOC_CONTEXT();
 
@@ -2291,16 +2312,28 @@ void *alloc_xenheap_pages(unsigned int order, unsigned int memflags)
     if ( unlikely(pg == NULL) )
         return NULL;
 
+    ret = page_to_virt(pg);
+
+    if ( !has_directmap() &&
+         map_pages_to_xen((unsigned long)ret, page_to_mfn(pg), 1UL << order,
+                          PAGE_HYPERVISOR) )
+    {
+        /* Failed to map xenheap pages. */
+        free_domheap_pages(pg, order);
+        return NULL;
+    }
+
     for ( i = 0; i < (1u << order); i++ )
         pg[i].count_info |= PGC_xen_heap;
 
-    return page_to_virt(pg);
+    return ret;
 }
 
 void free_xenheap_pages(void *v, unsigned int order)
 {
     struct page_info *pg;
     unsigned int i;
+    unsigned long va = (unsigned long)v & PAGE_MASK;
 
     ASSERT_ALLOC_CONTEXT();
 
@@ -2312,6 +2345,12 @@ void free_xenheap_pages(void *v, unsigned int order)
     for ( i = 0; i < (1u << order); i++ )
         pg[i].count_info &= ~PGC_xen_heap;
 
+    if ( !has_directmap() &&
+         destroy_xen_mappings(va, va + (1UL << (order + PAGE_SHIFT))) )
+        dprintk(XENLOG_WARNING,
+                "Error while destroying xenheap mappings at %p, order %u\n",
+                v, order);
+
     free_heap_pages(pg, order, true);
 }
 
-- 
2.40.1



From xen-devel-bounces@lists.xenproject.org Tue Jan 16 19:37:25 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 16 Jan 2024 19:37:25 +0000
Received: from list by lists.xenproject.org with outflank-mailman.668154.1040161 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPpFP-0003Rq-Tj; Tue, 16 Jan 2024 19:37:19 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 668154.1040161; Tue, 16 Jan 2024 19:37:19 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPpFP-0003Rj-RA; Tue, 16 Jan 2024 19:37:19 +0000
Received: by outflank-mailman (input) for mailman id 668154;
 Tue, 16 Jan 2024 19:37:19 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=wmx9=I2=amazon.co.uk=prvs=738631f0b=eliasely@srs-se1.protection.inumbo.net>)
 id 1rPp5Q-0003Xv-QT
 for xen-devel@lists.xenproject.org; Tue, 16 Jan 2024 19:27:00 +0000
Received: from smtp-fw-52003.amazon.com (smtp-fw-52003.amazon.com
 [52.119.213.152]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 380532c4-b4a5-11ee-98f1-6d05b1d4d9a1;
 Tue, 16 Jan 2024 20:26:59 +0100 (CET)
Received: from iad12-co-svc-p1-lb1-vlan3.amazon.com (HELO
 email-inbound-relay-iad-1a-m6i4x-86a02d5e.us-east-1.amazon.com) ([10.43.8.6])
 by smtp-border-fw-52003.iad7.amazon.com with
 ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 16 Jan 2024 19:27:00 +0000
Received: from smtpout.prod.us-east-1.prod.farcaster.email.amazon.dev
 (iad7-ws-svc-p70-lb3-vlan2.iad.amazon.com [10.32.235.34])
 by email-inbound-relay-iad-1a-m6i4x-86a02d5e.us-east-1.amazon.com (Postfix)
 with ESMTPS id 0E9E9EBF70; Tue, 16 Jan 2024 19:26:58 +0000 (UTC)
Received: from EX19MTAUEC001.ant.amazon.com [10.0.0.204:54926]
 by smtpin.naws.us-east-1.prod.farcaster.email.amazon.dev [10.0.28.244:2525]
 with esmtp (Farcaster)
 id c9b4c47f-4ba4-444e-bc53-5dc288ca9c0b; Tue, 16 Jan 2024 19:26:57 +0000 (UTC)
Received: from EX19D008UEA004.ant.amazon.com (10.252.134.191) by
 EX19MTAUEC001.ant.amazon.com (10.252.135.222) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1118.40; Tue, 16 Jan 2024 19:26:44 +0000
Received: from EX19MTAUEB001.ant.amazon.com (10.252.135.35) by
 EX19D008UEA004.ant.amazon.com (10.252.134.191) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1118.40; Tue, 16 Jan 2024 19:26:43 +0000
Received: from dev-dsk-eliasely-1a-fd74790f.eu-west-1.amazon.com
 (10.253.91.118) by mail-relay.amazon.com (10.252.135.35) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1118.40 via Frontend Transport; Tue, 16 Jan 2024 19:26:43 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 380532c4-b4a5-11ee-98f1-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
  d=amazon.com; i=@amazon.com; q=dns/txt; s=amazon201209;
  t=1705433220; x=1736969220;
  h=from:to:cc:subject:date:message-id:in-reply-to:
   references:mime-version:content-transfer-encoding;
  bh=+rU3KYKkwvDL5SMUdui7+O6LLhWUw4C+QdJzoyKqE18=;
  b=goK8Kc1iTePL4lNi8uSFVzn1nsvTTiMmWGb+2ZNGoV44KDLZJHgqMr0R
   TGEY215n8BNysCbVjBEspkDpnHQcPHDUpw5P5A2mk/ZAMfqXGcrBEhoc6
   Ilthsl8X7KYvvklSJnZ6z3EB6b62+K9u3gXqLN0EJeAPH/yHwtjR4T2Ih
   I=;
X-IronPort-AV: E=Sophos;i="6.05,200,1701129600"; 
   d="scan'208";a="631577165"
X-Farcaster-Flow-ID: c9b4c47f-4ba4-444e-bc53-5dc288ca9c0b
From: Elias El Yandouzi <eliasely@amazon.com>
To: <xen-devel@lists.xenproject.org>
CC: <julien@xen.org>, <pdurrant@amazon.com>, <dwmw@amazon.com>, "Elias El
 Yandouzi" <eliasely@amazon.com>, Jan Beulich <jbeulich@suse.com>, "Andrew
 Cooper" <andrew.cooper3@citrix.com>, =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?=
	<roger.pau@citrix.com>, Wei Liu <wl@xen.org>
Subject: [PATCH v2 (resend) 23/27] Rename maddr_to_virt() calls
Date: Tue, 16 Jan 2024 19:26:07 +0000
Message-ID: <20240116192611.41112-24-eliasely@amazon.com>
X-Mailer: git-send-email 2.40.1
In-Reply-To: <20240116192611.41112-1-eliasely@amazon.com>
References: <20240116192611.41112-1-eliasely@amazon.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
Precedence: Bulk

Until directmap gets completely removed, we'd still need to
keep some calls to mmaddr_to_virt() for xenheap pages or when the
directmap is enabled.

Rename the macro to maddr_to_directmap_virt() to flag them and
prevent further use of maddr_to_virt().

Signed-off-by: Elias El Yandouzi <eliasely@amazon.com>

diff --git a/xen/arch/x86/dmi_scan.c b/xen/arch/x86/dmi_scan.c
index 81f80c053a..ac016f3a04 100644
--- a/xen/arch/x86/dmi_scan.c
+++ b/xen/arch/x86/dmi_scan.c
@@ -277,7 +277,7 @@ const char *__init dmi_get_table(paddr_t *base, u32 *len)
 			return "SMBIOS";
 		}
 	} else {
-		char __iomem *p = maddr_to_virt(0xF0000), *q;
+		char __iomem *p = maddr_to_directmap_virt(0xF0000), *q;
 		union {
 			struct dmi_eps dmi;
 			struct smbios3_eps smbios3;
@@ -364,7 +364,7 @@ static int __init dmi_iterate(void (*decode)(const struct dmi_header *))
 	dmi.size = 0;
 	smbios3.length = 0;
 
-	p = maddr_to_virt(0xF0000);
+	p = maddr_to_directmap_virt(0xF0000);
 	for (q = p; q < p + 0x10000; q += 16) {
 		if (!dmi.size) {
 			memcpy_fromio(&dmi, q, sizeof(dmi));
diff --git a/xen/arch/x86/include/asm/mach-default/bios_ebda.h b/xen/arch/x86/include/asm/mach-default/bios_ebda.h
index 42de6b2a5b..8cfe53d1f2 100644
--- a/xen/arch/x86/include/asm/mach-default/bios_ebda.h
+++ b/xen/arch/x86/include/asm/mach-default/bios_ebda.h
@@ -7,7 +7,7 @@
  */
 static inline unsigned int get_bios_ebda(void)
 {
-	unsigned int address = *(unsigned short *)maddr_to_virt(0x40E);
+	unsigned int address = *(unsigned short *)maddr_to_directmap_virt(0x40E);
 	address <<= 4;
 	return address;	/* 0 means none */
 }
diff --git a/xen/arch/x86/include/asm/page.h b/xen/arch/x86/include/asm/page.h
index c6891b52d4..bf7bf08ba4 100644
--- a/xen/arch/x86/include/asm/page.h
+++ b/xen/arch/x86/include/asm/page.h
@@ -240,11 +240,11 @@ void copy_page_sse2(void *to, const void *from);
 
 /* Convert between Xen-heap virtual addresses and machine addresses. */
 #define __pa(x)             (virt_to_maddr(x))
-#define __va(x)             (maddr_to_virt(x))
+#define __va(x)             (maddr_to_directmap_virt(x))
 
 /* Convert between Xen-heap virtual addresses and machine frame numbers. */
 #define __virt_to_mfn(va)   (virt_to_maddr(va) >> PAGE_SHIFT)
-#define __mfn_to_virt(mfn)  (maddr_to_virt((paddr_t)(mfn) << PAGE_SHIFT))
+#define __mfn_to_virt(mfn)  (maddr_to_directmap_virt((paddr_t)(mfn) << PAGE_SHIFT))
 
 /* Convert between machine frame numbers and page-info structures. */
 #define mfn_to_page(mfn)    (frame_table + mfn_to_pdx(mfn))
@@ -270,7 +270,7 @@ void copy_page_sse2(void *to, const void *from);
 #define virt_to_mfn(va)     __virt_to_mfn(va)
 #define mfn_to_directmap_virt(mfn)    __mfn_to_virt(mfn)
 #define virt_to_maddr(va)   __virt_to_maddr((unsigned long)(va))
-#define maddr_to_virt(ma)   __maddr_to_virt((unsigned long)(ma))
+#define maddr_to_directmap_virt(ma)   __maddr_to_directmap_virt((unsigned long)(ma))
 #define maddr_to_page(ma)   __maddr_to_page(ma)
 #define page_to_maddr(pg)   __page_to_maddr(pg)
 #define virt_to_page(va)    __virt_to_page(va)
diff --git a/xen/arch/x86/include/asm/x86_64/page.h b/xen/arch/x86/include/asm/x86_64/page.h
index f49e10475f..b9e47da46e 100644
--- a/xen/arch/x86/include/asm/x86_64/page.h
+++ b/xen/arch/x86/include/asm/x86_64/page.h
@@ -46,7 +46,7 @@ static inline unsigned long __virt_to_maddr(unsigned long va)
     return xen_phys_start + va - XEN_VIRT_START;
 }
 
-static inline void *__maddr_to_virt(unsigned long ma)
+static inline void *__maddr_to_directmap_virt(unsigned long ma)
 {
     /* Offset in the direct map, accounting for pdx compression */
     unsigned long va_offset = maddr_to_directmapoff(ma);
diff --git a/xen/arch/x86/mpparse.c b/xen/arch/x86/mpparse.c
index d8ccab2449..69181b0abe 100644
--- a/xen/arch/x86/mpparse.c
+++ b/xen/arch/x86/mpparse.c
@@ -664,7 +664,7 @@ void __init get_smp_config (void)
 
 static int __init smp_scan_config (unsigned long base, unsigned long length)
 {
-	unsigned int *bp = maddr_to_virt(base);
+	unsigned int *bp = maddr_to_directmap_virt(base);
 	struct intel_mp_floating *mpf;
 
 	Dprintk("Scan SMP from %p for %ld bytes.\n", bp,length);
diff --git a/xen/common/efi/boot.c b/xen/common/efi/boot.c
index 39aed5845d..1b02e2b6d5 100644
--- a/xen/common/efi/boot.c
+++ b/xen/common/efi/boot.c
@@ -1764,7 +1764,7 @@ void __init efi_init_memory(void)
                 if ( map_pages_to_xen((unsigned long)mfn_to_directmap_virt(smfn),
                                     _mfn(smfn), emfn - smfn, prot) == 0 )
                     desc->VirtualStart =
-                        (unsigned long)maddr_to_virt(desc->PhysicalStart);
+                        (unsigned long)maddr_to_directmap_virt(desc->PhysicalStart);
                 else
                     printk(XENLOG_ERR "Could not map MFNs %#lx-%#lx\n",
                         smfn, emfn - 1);
-- 
2.40.1



From xen-devel-bounces@lists.xenproject.org Tue Jan 16 19:37:54 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 16 Jan 2024 19:37:54 +0000
Received: from list by lists.xenproject.org with outflank-mailman.668158.1040172 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPpFy-0004La-51; Tue, 16 Jan 2024 19:37:54 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 668158.1040172; Tue, 16 Jan 2024 19:37:54 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPpFy-0004LR-2D; Tue, 16 Jan 2024 19:37:54 +0000
Received: by outflank-mailman (input) for mailman id 668158;
 Tue, 16 Jan 2024 19:37:53 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=wmx9=I2=amazon.co.uk=prvs=738631f0b=eliasely@srs-se1.protection.inumbo.net>)
 id 1rPp5S-0003Xv-QV
 for xen-devel@lists.xenproject.org; Tue, 16 Jan 2024 19:27:02 +0000
Received: from smtp-fw-80009.amazon.com (smtp-fw-80009.amazon.com
 [99.78.197.220]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 384ebc32-b4a5-11ee-98f1-6d05b1d4d9a1;
 Tue, 16 Jan 2024 20:27:02 +0100 (CET)
Received: from pdx4-co-svc-p1-lb2-vlan2.amazon.com (HELO
 email-inbound-relay-pdx-2a-m6i4x-8a14c045.us-west-2.amazon.com)
 ([10.25.36.210]) by smtp-border-fw-80009.pdx80.corp.amazon.com with
 ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 16 Jan 2024 19:26:59 +0000
Received: from smtpout.prod.us-east-1.prod.farcaster.email.amazon.dev
 (pdx2-ws-svc-p26-lb5-vlan3.pdx.amazon.com [10.39.38.70])
 by email-inbound-relay-pdx-2a-m6i4x-8a14c045.us-west-2.amazon.com (Postfix)
 with ESMTPS id 61AFB8A88F; Tue, 16 Jan 2024 19:26:59 +0000 (UTC)
Received: from EX19MTAUEB001.ant.amazon.com [10.0.44.209:25181]
 by smtpin.naws.us-east-1.prod.farcaster.email.amazon.dev [10.0.28.244:2525]
 with esmtp (Farcaster)
 id d5980af4-5f49-4af7-90df-632bef320357; Tue, 16 Jan 2024 19:26:58 +0000 (UTC)
Received: from EX19D008UEA003.ant.amazon.com (10.252.134.116) by
 EX19MTAUEB001.ant.amazon.com (10.252.135.108) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1118.40; Tue, 16 Jan 2024 19:26:45 +0000
Received: from EX19MTAUEB001.ant.amazon.com (10.252.135.35) by
 EX19D008UEA003.ant.amazon.com (10.252.134.116) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1118.40; Tue, 16 Jan 2024 19:26:45 +0000
Received: from dev-dsk-eliasely-1a-fd74790f.eu-west-1.amazon.com
 (10.253.91.118) by mail-relay.amazon.com (10.252.135.35) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1118.40 via Frontend Transport; Tue, 16 Jan 2024 19:26:44 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 384ebc32-b4a5-11ee-98f1-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
  d=amazon.com; i=@amazon.com; q=dns/txt; s=amazon201209;
  t=1705433222; x=1736969222;
  h=from:to:cc:subject:date:message-id:in-reply-to:
   references:mime-version:content-transfer-encoding;
  bh=aYNk7nmnUy0AklxdrRg4GNXCK3HA+7wbY/AdUPNJirw=;
  b=uO7Ic/EPVcSsiLVodvkwfdiz05YSUI2JztFCr+KXgEKGJIiX+k4cCt/x
   qVO3JhGOuofIezBUuC4E7L9HPu1jGpgUpVh4sD/Xj0372qIxbra2jzoO/
   QwJF40J85wR4pca1stBYJUNlNbUrLiq8eVd6Wz/megYCFhQz2m/pYUIS2
   g=;
X-IronPort-AV: E=Sophos;i="6.05,200,1701129600"; 
   d="scan'208";a="58701687"
X-Farcaster-Flow-ID: d5980af4-5f49-4af7-90df-632bef320357
From: Elias El Yandouzi <eliasely@amazon.com>
To: <xen-devel@lists.xenproject.org>
CC: <julien@xen.org>, <pdurrant@amazon.com>, <dwmw@amazon.com>, Julien Grall
	<jgrall@amazon.com>, Stefano Stabellini <sstabellini@kernel.org>, "Bertrand
 Marquis" <bertrand.marquis@arm.com>, Michal Orzel <michal.orzel@amd.com>,
	Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>, Elias El Yandouzi
	<eliasely@amazon.com>
Subject: [PATCH v2 (resend) 24/27] xen/arm32: mm: Rename 'first' to 'root' in init_secondary_pagetables()
Date: Tue, 16 Jan 2024 19:26:08 +0000
Message-ID: <20240116192611.41112-25-eliasely@amazon.com>
X-Mailer: git-send-email 2.40.1
In-Reply-To: <20240116192611.41112-1-eliasely@amazon.com>
References: <20240116192611.41112-1-eliasely@amazon.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
Precedence: Bulk

From: Julien Grall <jgrall@amazon.com>

The arm32 version of init_secondary_pagetables() will soon be re-used
for arm64 as well where the root table starts at level 0 rather than level 1.

So rename 'first' to 'root'.

Signed-off-by: Julien Grall <jgrall@amazon.com>
Signed-off-by: Elias El Yandouzi <eliasely@amazon.com>

----

    Changelog in v2:
        * Rebase
        * Fix typo

diff --git a/xen/arch/arm/mmu/smpboot.c b/xen/arch/arm/mmu/smpboot.c
index b6fc0aae07..fb5df667ba 100644
--- a/xen/arch/arm/mmu/smpboot.c
+++ b/xen/arch/arm/mmu/smpboot.c
@@ -84,32 +84,30 @@ int prepare_secondary_mm(int cpu)
 #else
 int prepare_secondary_mm(int cpu)
 {
-    lpae_t *first;
+    lpae_t *root = alloc_xenheap_page();
 
-    first = alloc_xenheap_page(); /* root == first level on 32-bit 3-level trie */
-
-    if ( !first )
+    if ( !root )
     {
-        printk("CPU%u: Unable to allocate the first page-table\n", cpu);
+        printk("CPU%u: Unable to allocate the root page-table\n", cpu);
         return -ENOMEM;
     }
 
     /* Initialise root pagetable from root of boot tables */
-    memcpy(first, per_cpu(xen_pgtable, 0), PAGE_SIZE);
-    per_cpu(xen_pgtable, cpu) = first;
+    memcpy(root, per_cpu(xen_pgtable, 0), PAGE_SIZE);
+    per_cpu(xen_pgtable, cpu) = root;
 
     if ( !init_domheap_mappings(cpu) )
     {
         printk("CPU%u: Unable to prepare the domheap page-tables\n", cpu);
         per_cpu(xen_pgtable, cpu) = NULL;
-        free_xenheap_page(first);
+        free_xenheap_page(root);
         return -ENOMEM;
     }
 
     clear_boot_pagetables();
 
     /* Set init_ttbr for this CPU coming up */
-    init_ttbr = __pa(first);
+    init_ttbr = __pa(root);
     clean_dcache(init_ttbr);
 
     return 0;
-- 
2.40.1



From xen-devel-bounces@lists.xenproject.org Tue Jan 16 19:38:08 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 16 Jan 2024 19:38:08 +0000
Received: from list by lists.xenproject.org with outflank-mailman.668159.1040182 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPpGC-0004n0-DA; Tue, 16 Jan 2024 19:38:08 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 668159.1040182; Tue, 16 Jan 2024 19:38:08 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPpGC-0004mt-AA; Tue, 16 Jan 2024 19:38:08 +0000
Received: by outflank-mailman (input) for mailman id 668159;
 Tue, 16 Jan 2024 19:38:07 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=wmx9=I2=amazon.co.uk=prvs=738631f0b=eliasely@srs-se1.protection.inumbo.net>)
 id 1rPp5L-0002iI-Ef
 for xen-devel@lists.xenproject.org; Tue, 16 Jan 2024 19:26:55 +0000
Received: from smtp-fw-52002.amazon.com (smtp-fw-52002.amazon.com
 [52.119.213.150]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 33b40b5e-b4a5-11ee-9b0f-b553b5be7939;
 Tue, 16 Jan 2024 20:26:53 +0100 (CET)
Received: from iad12-co-svc-p1-lb1-vlan3.amazon.com (HELO
 email-inbound-relay-iad-1e-m6i4x-529f0975.us-east-1.amazon.com) ([10.43.8.6])
 by smtp-border-fw-52002.iad7.amazon.com with
 ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 16 Jan 2024 19:26:50 +0000
Received: from smtpout.prod.us-east-1.prod.farcaster.email.amazon.dev
 (iad7-ws-svc-p70-lb3-vlan3.iad.amazon.com [10.32.235.38])
 by email-inbound-relay-iad-1e-m6i4x-529f0975.us-east-1.amazon.com (Postfix)
 with ESMTPS id 21B894A22B; Tue, 16 Jan 2024 19:26:48 +0000 (UTC)
Received: from EX19MTAUEC001.ant.amazon.com [10.0.0.204:44999]
 by smtpin.naws.us-east-1.prod.farcaster.email.amazon.dev [10.0.41.129:2525]
 with esmtp (Farcaster)
 id f94b5ab5-a209-4e45-9547-2bc37d5f6f7e; Tue, 16 Jan 2024 19:26:47 +0000 (UTC)
Received: from EX19D008UEA003.ant.amazon.com (10.252.134.116) by
 EX19MTAUEC001.ant.amazon.com (10.252.135.222) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1118.40; Tue, 16 Jan 2024 19:26:40 +0000
Received: from EX19MTAUEB001.ant.amazon.com (10.252.135.35) by
 EX19D008UEA003.ant.amazon.com (10.252.134.116) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1118.40; Tue, 16 Jan 2024 19:26:40 +0000
Received: from dev-dsk-eliasely-1a-fd74790f.eu-west-1.amazon.com
 (10.253.91.118) by mail-relay.amazon.com (10.252.135.35) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1118.40 via Frontend Transport; Tue, 16 Jan 2024 19:26:39 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 33b40b5e-b4a5-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
  d=amazon.com; i=@amazon.com; q=dns/txt; s=amazon201209;
  t=1705433214; x=1736969214;
  h=from:to:cc:subject:date:message-id:in-reply-to:
   references:mime-version:content-transfer-encoding;
  bh=BQwz5u8QWnu4kJOr/giiJYPgo6aRgBqNBhniW2zo2FE=;
  b=fK+gXXWJaTzHux0OYq9rmRDioM0IKYym2t0Dt/pwnXEbvemyK/tfLBB6
   FhVkmJ+MAZNd/AUCQK7X+hqnCtxSeOkHk9633jPbPB36cdU8XWXrVxwzO
   N5vwbou3ekg324YZRmkZI+WgZunxdz/f4Lnjb74gd5fNd3whnVUFO9FE1
   s=;
X-IronPort-AV: E=Sophos;i="6.05,200,1701129600"; 
   d="scan'208";a="606818879"
X-Farcaster-Flow-ID: f94b5ab5-a209-4e45-9547-2bc37d5f6f7e
From: Elias El Yandouzi <eliasely@amazon.com>
To: <xen-devel@lists.xenproject.org>
CC: <julien@xen.org>, <pdurrant@amazon.com>, <dwmw@amazon.com>, Hongyan Xia
	<hongyxia@amazon.com>, Andrew Cooper <andrew.cooper3@citrix.com>, "George
 Dunlap" <george.dunlap@citrix.com>, Jan Beulich <jbeulich@suse.com>, "Stefano
 Stabellini" <sstabellini@kernel.org>, Wei Liu <wl@xen.org>, Julien Grall
	<jgrall@amazon.com>, Elias El Yandouzi <eliasely@amazon.com>
Subject: [PATCH v2 (resend) 20/27] x86/setup: vmap heap nodes when they are outside the direct map
Date: Tue, 16 Jan 2024 19:26:04 +0000
Message-ID: <20240116192611.41112-21-eliasely@amazon.com>
X-Mailer: git-send-email 2.40.1
In-Reply-To: <20240116192611.41112-1-eliasely@amazon.com>
References: <20240116192611.41112-1-eliasely@amazon.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
Precedence: Bulk

From: Hongyan Xia <hongyxia@amazon.com>

When we do not have a direct map, archs_mfn_in_direct_map() will always
return false, thus init_node_heap() will allocate xenheap pages from an
existing node for the metadata of a new node. This means that the
metadata of a new node is in a different node, slowing down heap
allocation.

Since we now have early vmap, vmap the metadata locally in the new node.

Signed-off-by: Hongyan Xia <hongyxia@amazon.com>
Signed-off-by: Julien Grall <jgrall@amazon.com>
Signed-off-by: Elias El Yandouzi <eliasely@amazon.com>

----

    Changes in v2:
        * vmap_contig_pages() was renamed to vmap_contig()
        * Fix indentation and coding style

    Changes from Hongyan's version:
        * arch_mfn_in_direct_map() was renamed to
          arch_mfns_in_direct_map()
        * Use vmap_contig_pages() rather than __vmap(...).
        * Add missing include (xen/vmap.h) so it compiles on Arm

diff --git a/xen/common/page_alloc.c b/xen/common/page_alloc.c
index 52934ec5c1..42b9aaae1c 100644
--- a/xen/common/page_alloc.c
+++ b/xen/common/page_alloc.c
@@ -136,6 +136,7 @@
 #include <xen/sched.h>
 #include <xen/softirq.h>
 #include <xen/spinlock.h>
+#include <xen/vmap.h>
 
 #include <asm/flushtlb.h>
 #include <asm/numa.h>
@@ -604,22 +605,44 @@ static unsigned long init_node_heap(int node, unsigned long mfn,
         needed = 0;
     }
     else if ( *use_tail && nr >= needed &&
-              arch_mfns_in_directmap(mfn + nr - needed, needed) &&
               (!xenheap_bits ||
-               !((mfn + nr - 1) >> (xenheap_bits - PAGE_SHIFT))) )
+              !((mfn + nr - 1) >> (xenheap_bits - PAGE_SHIFT))) )
     {
-        _heap[node] = mfn_to_virt(mfn + nr - needed);
-        avail[node] = mfn_to_virt(mfn + nr - 1) +
-                      PAGE_SIZE - sizeof(**avail) * NR_ZONES;
+        if ( arch_mfns_in_directmap(mfn + nr - needed, needed) )
+        {
+            _heap[node] = mfn_to_virt(mfn + nr - needed);
+            avail[node] = mfn_to_virt(mfn + nr - 1) +
+                          PAGE_SIZE - sizeof(**avail) * NR_ZONES;
+        }
+        else
+        {
+            mfn_t needed_start = _mfn(mfn + nr - needed);
+
+            _heap[node] = vmap_contig(needed_start, needed);
+            BUG_ON(!_heap[node]);
+            avail[node] = (void *)(_heap[node]) + (needed << PAGE_SHIFT) -
+                          sizeof(**avail) * NR_ZONES;
+        }
     }
     else if ( nr >= needed &&
-              arch_mfns_in_directmap(mfn, needed) &&
               (!xenheap_bits ||
-               !((mfn + needed - 1) >> (xenheap_bits - PAGE_SHIFT))) )
+              !((mfn + needed - 1) >> (xenheap_bits - PAGE_SHIFT))) )
     {
-        _heap[node] = mfn_to_virt(mfn);
-        avail[node] = mfn_to_virt(mfn + needed - 1) +
-                      PAGE_SIZE - sizeof(**avail) * NR_ZONES;
+        if ( arch_mfns_in_directmap(mfn, needed) )
+        {
+            _heap[node] = mfn_to_virt(mfn);
+            avail[node] = mfn_to_virt(mfn + needed - 1) +
+                          PAGE_SIZE - sizeof(**avail) * NR_ZONES;
+        }
+        else
+        {
+            mfn_t needed_start = _mfn(mfn);
+
+            _heap[node] = vmap_contig(needed_start, needed);
+            BUG_ON(!_heap[node]);
+            avail[node] = (void *)(_heap[node]) + (needed << PAGE_SHIFT) -
+                          sizeof(**avail) * NR_ZONES;
+        }
         *use_tail = false;
     }
     else if ( get_order_from_bytes(sizeof(**_heap)) ==
-- 
2.40.1



From xen-devel-bounces@lists.xenproject.org Tue Jan 16 19:40:01 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 16 Jan 2024 19:40:01 +0000
Received: from list by lists.xenproject.org with outflank-mailman.668171.1040191 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPpHz-0006hx-SH; Tue, 16 Jan 2024 19:39:59 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 668171.1040191; Tue, 16 Jan 2024 19:39:59 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPpHz-0006ho-PM; Tue, 16 Jan 2024 19:39:59 +0000
Received: by outflank-mailman (input) for mailman id 668171;
 Tue, 16 Jan 2024 19:39:58 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=wmx9=I2=amazon.co.uk=prvs=738631f0b=eliasely@srs-se1.protection.inumbo.net>)
 id 1rPp5X-0003Xv-Jh
 for xen-devel@lists.xenproject.org; Tue, 16 Jan 2024 19:27:07 +0000
Received: from smtp-fw-52004.amazon.com (smtp-fw-52004.amazon.com
 [52.119.213.154]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 3b08b66f-b4a5-11ee-98f1-6d05b1d4d9a1;
 Tue, 16 Jan 2024 20:27:06 +0100 (CET)
Received: from iad12-co-svc-p1-lb1-vlan2.amazon.com (HELO
 email-inbound-relay-iad-1d-m6i4x-25ac6bd5.us-east-1.amazon.com) ([10.43.8.2])
 by smtp-border-fw-52004.iad7.amazon.com with
 ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 16 Jan 2024 19:27:05 +0000
Received: from smtpout.prod.us-east-1.prod.farcaster.email.amazon.dev
 (iad7-ws-svc-p70-lb3-vlan2.iad.amazon.com [10.32.235.34])
 by email-inbound-relay-iad-1d-m6i4x-25ac6bd5.us-east-1.amazon.com (Postfix)
 with ESMTPS id 2875E49E4D; Tue, 16 Jan 2024 19:27:01 +0000 (UTC)
Received: from EX19MTAUEB002.ant.amazon.com [10.0.29.78:45873]
 by smtpin.naws.us-east-1.prod.farcaster.email.amazon.dev [10.0.95.118:2525]
 with esmtp (Farcaster)
 id 98f57ce2-9333-45bc-9ae3-0f84349af0f9; Tue, 16 Jan 2024 19:27:00 +0000 (UTC)
Received: from EX19D008UEC004.ant.amazon.com (10.252.135.170) by
 EX19MTAUEB002.ant.amazon.com (10.252.135.47) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1118.40; Tue, 16 Jan 2024 19:26:48 +0000
Received: from EX19MTAUEB001.ant.amazon.com (10.252.135.35) by
 EX19D008UEC004.ant.amazon.com (10.252.135.170) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1118.40; Tue, 16 Jan 2024 19:26:48 +0000
Received: from dev-dsk-eliasely-1a-fd74790f.eu-west-1.amazon.com
 (10.253.91.118) by mail-relay.amazon.com (10.252.135.35) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1118.40 via Frontend Transport; Tue, 16 Jan 2024 19:26:47 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 3b08b66f-b4a5-11ee-98f1-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
  d=amazon.com; i=@amazon.com; q=dns/txt; s=amazon201209;
  t=1705433227; x=1736969227;
  h=from:to:cc:subject:date:message-id:in-reply-to:
   references:mime-version:content-transfer-encoding;
  bh=bXzdRNb+zZSWrMCWDYUPYL1ZiOjiL92dtef2XmbIpMo=;
  b=Q8AvmtJf4ZsrgXTlelbv8j5FR3wVday9zQQ/PGbrpdid0DMyGTRSNuaJ
   zXd9J3hXeDYPKB7o5zfpZu/Bu6/IFhUSMSbPwutQbHKToqs9qCfgU2mC3
   rPwh6fDrxcRjT+hTCnbRodHB2IbSCkppQUgHc23AZd8nuPU6qBjvk68HV
   s=;
X-IronPort-AV: E=Sophos;i="6.05,200,1701129600"; 
   d="scan'208";a="178399576"
X-Farcaster-Flow-ID: 98f57ce2-9333-45bc-9ae3-0f84349af0f9
From: Elias El Yandouzi <eliasely@amazon.com>
To: <xen-devel@lists.xenproject.org>
CC: <julien@xen.org>, <pdurrant@amazon.com>, <dwmw@amazon.com>, Julien Grall
	<jgrall@amazon.com>, Andrew Cooper <andrew.cooper3@citrix.com>, George Dunlap
	<george.dunlap@citrix.com>, Jan Beulich <jbeulich@suse.com>, "Stefano
 Stabellini" <sstabellini@kernel.org>, Wei Liu <wl@xen.org>, Bertrand Marquis
	<bertrand.marquis@arm.com>, Michal Orzel <michal.orzel@amd.com>, "Volodymyr
 Babchuk" <Volodymyr_Babchuk@epam.com>, Elias El Yandouzi
	<eliasely@amazon.com>
Subject: [PATCH v2 (resend) 27/27] xen/arm64: Allow the admin to enable/disable the directmap
Date: Tue, 16 Jan 2024 19:26:11 +0000
Message-ID: <20240116192611.41112-28-eliasely@amazon.com>
X-Mailer: git-send-email 2.40.1
In-Reply-To: <20240116192611.41112-1-eliasely@amazon.com>
References: <20240116192611.41112-1-eliasely@amazon.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
Precedence: Bulk

From: Julien Grall <jgrall@amazon.com>

Implement the same command line option as x86 to enable/disable the
directmap. By default this is kept enabled.

Also modify setup_directmap_mappings() to populate the L0 entries
related to the directmap area.

Signed-off-by: Julien Grall <jgrall@amazon.com>
Signed-off-by: Elias El Yandouzi <eliasely@amazon.com>

----

    Changes in v2:
        * Rely on the Kconfig option to enable Secret Hiding on Arm64
        * Use generic helper instead of arch_has_directmap()

diff --git a/docs/misc/xen-command-line.pandoc b/docs/misc/xen-command-line.pandoc
index 63c946f482..df90b1c4c9 100644
--- a/docs/misc/xen-command-line.pandoc
+++ b/docs/misc/xen-command-line.pandoc
@@ -799,7 +799,7 @@ that enabling this option cannot guarantee anything beyond what underlying
 hardware guarantees (with, where available and known to Xen, respective
 tweaks applied).
 
-### directmap (x86)
+### directmap (arm64, x86)
 > `= <boolean>`
 
 > Default: `true`
diff --git a/xen/arch/arm/Kconfig b/xen/arch/arm/Kconfig
index 278243f0d6..7a19826233 100644
--- a/xen/arch/arm/Kconfig
+++ b/xen/arch/arm/Kconfig
@@ -7,6 +7,7 @@ config ARM_64
 	depends on !ARM_32
 	select 64BIT
 	select HAS_FAST_MULTIPLY
+	select HAS_SECRET_HIDING
 
 config ARM
 	def_bool y
diff --git a/xen/arch/arm/arm64/mmu/mm.c b/xen/arch/arm/arm64/mmu/mm.c
index f4a81aa705..22e1e5b9f4 100644
--- a/xen/arch/arm/arm64/mmu/mm.c
+++ b/xen/arch/arm/arm64/mmu/mm.c
@@ -157,16 +157,27 @@ void __init switch_ttbr(uint64_t ttbr)
     update_identity_mapping(false);
 }
 
-/* Map the region in the directmap area. */
+/*
+ * This either populate a valid fdirect map, or allocates empty L1 tables
+ * and creates the L0 entries for the given region in the direct map
+ * depending on has_directmap().
+ *
+ * When directmap=no, we still need to populate empty L1 tables in the
+ * directmap region. The reason is that the root page-table (i.e. L0)
+ * is per-CPU and secondary CPUs will initialize their root page-table
+ * based on the pCPU0 one. So L0 entries will be shared if they are
+ * pre-populated. We also rely on the fact that L1 tables are never
+ * freed.
+ */
 static void __init setup_directmap_mappings(unsigned long base_mfn,
                                             unsigned long nr_mfns)
 {
+    unsigned long mfn_gb = base_mfn & ~((FIRST_SIZE >> PAGE_SHIFT) - 1);
     int rc;
 
     /* First call sets the directmap physical and virtual offset. */
     if ( mfn_eq(directmap_mfn_start, INVALID_MFN) )
     {
-        unsigned long mfn_gb = base_mfn & ~((FIRST_SIZE >> PAGE_SHIFT) - 1);
 
         directmap_mfn_start = _mfn(base_mfn);
         directmap_base_pdx = mfn_to_pdx(_mfn(base_mfn));
@@ -187,6 +198,24 @@ static void __init setup_directmap_mappings(unsigned long base_mfn,
         panic("cannot add directmap mapping at %lx below heap start %lx\n",
               base_mfn, mfn_x(directmap_mfn_start));
 
+    if ( !has_directmap() )
+    {
+        vaddr_t vaddr = (vaddr_t)__mfn_to_virt(base_mfn);
+        lpae_t *root = this_cpu(xen_pgtable);
+        unsigned int i, slot;
+
+        slot = first_table_offset(vaddr);
+        nr_mfns += base_mfn - mfn_gb;
+        for ( i = 0; i < nr_mfns; i += BIT(XEN_PT_LEVEL_ORDER(0), UL), slot++ )
+        {
+            lpae_t *entry = &root[slot];
+
+            if ( !lpae_is_valid(*entry) && !create_xen_table(entry) )
+                panic("Unable to populate zeroeth slot %u\n", slot);
+        }
+        return;
+    }
+
     rc = map_pages_to_xen((vaddr_t)__mfn_to_virt(base_mfn),
                           _mfn(base_mfn), nr_mfns,
                           PAGE_HYPERVISOR_RW | _PAGE_BLOCK);
diff --git a/xen/arch/arm/include/asm/arm64/mm.h b/xen/arch/arm/include/asm/arm64/mm.h
index e0bd23a6ed..5888f29159 100644
--- a/xen/arch/arm/include/asm/arm64/mm.h
+++ b/xen/arch/arm/include/asm/arm64/mm.h
@@ -3,13 +3,10 @@
 
 extern DEFINE_PAGE_TABLE(xen_pgtable);
 
-/*
- * On ARM64, all the RAM is currently direct mapped in Xen.
- * Hence return always true.
- */
+/* On Arm64, the user can chose whether all the RAM is directmap. */
 static inline bool arch_mfns_in_directmap(unsigned long mfn, unsigned long nr)
 {
-    return true;
+    return has_directmap();
 }
 
 void arch_setup_page_tables(void);
diff --git a/xen/arch/arm/mm.c b/xen/arch/arm/mm.c
index b15a18a494..7fb75c5c3e 100644
--- a/xen/arch/arm/mm.c
+++ b/xen/arch/arm/mm.c
@@ -12,6 +12,7 @@
 #include <xen/grant_table.h>
 #include <xen/guest_access.h>
 #include <xen/mm.h>
+#include <xen/param.h>
 
 #include <xsm/xsm.h>
 
diff --git a/xen/arch/arm/setup.c b/xen/arch/arm/setup.c
index 3dec365c57..2bd060d321 100644
--- a/xen/arch/arm/setup.c
+++ b/xen/arch/arm/setup.c
@@ -748,6 +748,7 @@ void asmlinkage __init start_xen(unsigned long boot_phys_offset,
     cmdline_parse(cmdline);
 
     setup_mm();
+    printk("Booting with directmap %s\n", has_directmap() ? "on" : "off");
 
     vm_init();
 
-- 
2.40.1



From xen-devel-bounces@lists.xenproject.org Tue Jan 16 19:41:20 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 16 Jan 2024 19:41:20 +0000
Received: from list by lists.xenproject.org with outflank-mailman.668176.1040201 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPpJH-0000NO-5H; Tue, 16 Jan 2024 19:41:19 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 668176.1040201; Tue, 16 Jan 2024 19:41:19 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPpJH-0000NH-2b; Tue, 16 Jan 2024 19:41:19 +0000
Received: by outflank-mailman (input) for mailman id 668176;
 Tue, 16 Jan 2024 19:41:18 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=wmx9=I2=amazon.co.uk=prvs=738631f0b=eliasely@srs-se1.protection.inumbo.net>)
 id 1rPp5T-0002iI-0t
 for xen-devel@lists.xenproject.org; Tue, 16 Jan 2024 19:27:03 +0000
Received: from smtp-fw-2101.amazon.com (smtp-fw-2101.amazon.com [72.21.196.25])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 382ddb8c-b4a5-11ee-9b0f-b553b5be7939;
 Tue, 16 Jan 2024 20:27:00 +0100 (CET)
Received: from iad12-co-svc-p1-lb1-vlan3.amazon.com (HELO
 email-inbound-relay-pdx-2b-m6i4x-f323d91c.us-west-2.amazon.com) ([10.43.8.6])
 by smtp-border-fw-2101.iad2.amazon.com with
 ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 16 Jan 2024 19:26:59 +0000
Received: from smtpout.prod.us-east-1.prod.farcaster.email.amazon.dev
 (pdx2-ws-svc-p26-lb5-vlan2.pdx.amazon.com [10.39.38.66])
 by email-inbound-relay-pdx-2b-m6i4x-f323d91c.us-west-2.amazon.com (Postfix)
 with ESMTPS id 75F8140DEA; Tue, 16 Jan 2024 19:26:57 +0000 (UTC)
Received: from EX19MTAUEA001.ant.amazon.com [10.0.29.78:7345]
 by smtpin.naws.us-east-1.prod.farcaster.email.amazon.dev [10.0.41.129:2525]
 with esmtp (Farcaster)
 id 6c715488-8cb1-43cc-a661-2a495c363afb; Tue, 16 Jan 2024 19:26:57 +0000 (UTC)
Received: from EX19D008UEC004.ant.amazon.com (10.252.135.170) by
 EX19MTAUEA001.ant.amazon.com (10.252.134.203) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1118.40; Tue, 16 Jan 2024 19:26:43 +0000
Received: from EX19MTAUEB001.ant.amazon.com (10.252.135.35) by
 EX19D008UEC004.ant.amazon.com (10.252.135.170) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1118.40; Tue, 16 Jan 2024 19:26:42 +0000
Received: from dev-dsk-eliasely-1a-fd74790f.eu-west-1.amazon.com
 (10.253.91.118) by mail-relay.amazon.com (10.252.135.35) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1118.40 via Frontend Transport; Tue, 16 Jan 2024 19:26:41 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 382ddb8c-b4a5-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
  d=amazon.com; i=@amazon.com; q=dns/txt; s=amazon201209;
  t=1705433221; x=1736969221;
  h=from:to:cc:subject:date:message-id:in-reply-to:
   references:mime-version:content-transfer-encoding;
  bh=A4skyGZm0AGMkXurcV6O3b2jzlTiRDRc3CtNyj3qfuY=;
  b=b0l7EOKuemGQtPHPhenLM2kOi1hv8RxTLk6nGnGYhh/+ouDaxhz7/+0z
   ElarMr/yN1ywb3CdFsTq+Ti5NTeOh32wEaC8GdEu1TkB9KKq2oWGu00Jg
   +DqUlPWp8Lk1TrY/Q3QvXdP6bDA+Tf1OeMSI2Kbpgvwct2Fhc0RsKaN/Y
   0=;
X-IronPort-AV: E=Sophos;i="6.05,200,1701129600"; 
   d="scan'208";a="374795240"
X-Farcaster-Flow-ID: 6c715488-8cb1-43cc-a661-2a495c363afb
From: Elias El Yandouzi <eliasely@amazon.com>
To: <xen-devel@lists.xenproject.org>
CC: <julien@xen.org>, <pdurrant@amazon.com>, <dwmw@amazon.com>, "Elias El
 Yandouzi" <eliasely@amazon.com>, Stefano Stabellini <sstabellini@kernel.org>,
	Bertrand Marquis <bertrand.marquis@arm.com>, Michal Orzel
	<michal.orzel@amd.com>, Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>, George Dunlap
	<george.dunlap@citrix.com>, Jan Beulich <jbeulich@suse.com>, Wei Liu
	<wl@xen.org>, =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>,
	Lukasz Hawrylko <lukasz@hawrylko.pl>, "Daniel P. Smith"
	<dpsmith@apertussolutions.com>, =?UTF-8?q?Mateusz=20M=C3=B3wka?=
	<mateusz.mowka@intel.com>
Subject: [PATCH v2 (resend) 22/27] Rename mfn_to_virt() calls
Date: Tue, 16 Jan 2024 19:26:06 +0000
Message-ID: <20240116192611.41112-23-eliasely@amazon.com>
X-Mailer: git-send-email 2.40.1
In-Reply-To: <20240116192611.41112-1-eliasely@amazon.com>
References: <20240116192611.41112-1-eliasely@amazon.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
Precedence: Bulk

Until directmap gets completely removed, we'd still need to
keep some calls to mfn_to_virt() for xenheap pages or when the
directmap is enabled.

Rename the macro to mfn_to_directmap_virt() to flag them and
prevent further use of mfn_to_virt().

Signed-off-by: Elias El Yandouzi <eliasely@amazon.com>

diff --git a/xen/arch/arm/include/asm/mm.h b/xen/arch/arm/include/asm/mm.h
index cbcf3bf147..9a94d7eaf7 100644
--- a/xen/arch/arm/include/asm/mm.h
+++ b/xen/arch/arm/include/asm/mm.h
@@ -336,6 +336,7 @@ static inline uint64_t gvirt_to_maddr(vaddr_t va, paddr_t *pa,
  */
 #define virt_to_mfn(va)     __virt_to_mfn(va)
 #define mfn_to_virt(mfn)    __mfn_to_virt(mfn)
+#define mfn_to_directmap_virt(mfn) mfn_to_virt(mfn)
 
 /* Convert between Xen-heap virtual addresses and page-info structures. */
 static inline struct page_info *virt_to_page(const void *v)
diff --git a/xen/arch/x86/domain_page.c b/xen/arch/x86/domain_page.c
index 89caefc8a2..62d6fee0f4 100644
--- a/xen/arch/x86/domain_page.c
+++ b/xen/arch/x86/domain_page.c
@@ -81,14 +81,14 @@ void *map_domain_page(mfn_t mfn)
 
 #ifdef NDEBUG
     if ( arch_mfns_in_directmap(mfn_x(mfn), 1) )
-        return mfn_to_virt(mfn_x(mfn));
+        return mfn_to_directmap_virt(mfn_x(mfn));
 #endif
 
     v = mapcache_current_vcpu();
     if ( !v || !v->domain->arch.mapcache.inuse )
     {
         if ( arch_mfns_in_directmap(mfn_x(mfn), 1) )
-            return mfn_to_virt(mfn_x(mfn));
+            return mfn_to_directmap_virt(mfn_x(mfn));
         else
         {
             BUG_ON(system_state >= SYS_STATE_smp_boot);
@@ -324,7 +324,7 @@ void *map_domain_page_global(mfn_t mfn)
 
 #ifdef NDEBUG
     if ( arch_mfn_in_directmap(mfn_x(mfn, 1)) )
-        return mfn_to_virt(mfn_x(mfn));
+        return mfn_to_directmap_virt(mfn_x(mfn));
 #endif
 
     return vmap(&mfn, 1);
diff --git a/xen/arch/x86/hvm/dom0_build.c b/xen/arch/x86/hvm/dom0_build.c
index e59f6657d9..1b3ebae16f 100644
--- a/xen/arch/x86/hvm/dom0_build.c
+++ b/xen/arch/x86/hvm/dom0_build.c
@@ -439,7 +439,7 @@ static int __init pvh_populate_p2m(struct domain *d)
                                  d->arch.e820[i].addr + d->arch.e820[i].size);
             enum hvm_translation_result res =
                  hvm_copy_to_guest_phys(mfn_to_maddr(_mfn(addr)),
-                                        mfn_to_virt(addr),
+                                        mfn_to_directmap_virt(addr),
                                         end - d->arch.e820[i].addr,
                                         v);
 
@@ -613,7 +613,7 @@ static int __init pvh_load_kernel(struct domain *d, const module_t *image,
 
     if ( initrd != NULL )
     {
-        rc = hvm_copy_to_guest_phys(last_addr, mfn_to_virt(initrd->mod_start),
+        rc = hvm_copy_to_guest_phys(last_addr, mfn_to_directmap_virt(initrd->mod_start),
                                     initrd->mod_end, v);
         if ( rc )
         {
diff --git a/xen/arch/x86/include/asm/page.h b/xen/arch/x86/include/asm/page.h
index 350d1fb110..c6891b52d4 100644
--- a/xen/arch/x86/include/asm/page.h
+++ b/xen/arch/x86/include/asm/page.h
@@ -268,7 +268,7 @@ void copy_page_sse2(void *to, const void *from);
  */
 #define mfn_valid(mfn)      __mfn_valid(mfn_x(mfn))
 #define virt_to_mfn(va)     __virt_to_mfn(va)
-#define mfn_to_virt(mfn)    __mfn_to_virt(mfn)
+#define mfn_to_directmap_virt(mfn)    __mfn_to_virt(mfn)
 #define virt_to_maddr(va)   __virt_to_maddr((unsigned long)(va))
 #define maddr_to_virt(ma)   __maddr_to_virt((unsigned long)(ma))
 #define maddr_to_page(ma)   __maddr_to_page(ma)
diff --git a/xen/arch/x86/mm.c b/xen/arch/x86/mm.c
index a72c32d87c..9530c93b68 100644
--- a/xen/arch/x86/mm.c
+++ b/xen/arch/x86/mm.c
@@ -318,8 +318,8 @@ void __init arch_init_memory(void)
         iostart_pfn = max_t(unsigned long, pfn, 1UL << (20 - PAGE_SHIFT));
         ioend_pfn = min(rstart_pfn, 16UL << (20 - PAGE_SHIFT));
         if ( iostart_pfn < ioend_pfn )
-            destroy_xen_mappings((unsigned long)mfn_to_virt(iostart_pfn),
-                                 (unsigned long)mfn_to_virt(ioend_pfn));
+            destroy_xen_mappings((unsigned long)mfn_to_directmap_virt(iostart_pfn),
+                                 (unsigned long)mfn_to_directmap_virt(ioend_pfn));
 
         /* Mark as I/O up to next RAM region. */
         for ( ; pfn < rstart_pfn; pfn++ )
diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
index 84c496ac4a..de69b7935c 100644
--- a/xen/arch/x86/setup.c
+++ b/xen/arch/x86/setup.c
@@ -400,7 +400,7 @@ void *__init bootstrap_map(const module_t *mod)
     void *ret;
 
     if ( system_state != SYS_STATE_early_boot )
-        return mod ? mfn_to_virt(mod->mod_start) : NULL;
+        return mod ? mfn_to_directmap_virt(mod->mod_start) : NULL;
 
     if ( !mod )
     {
@@ -1703,7 +1703,7 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
     {
         set_pdx_range(mod[i].mod_start,
                       mod[i].mod_start + PFN_UP(mod[i].mod_end));
-        map_pages_to_xen((unsigned long)mfn_to_virt(mod[i].mod_start),
+        map_pages_to_xen((unsigned long)mfn_to_directmap_virt(mod[i].mod_start),
                          _mfn(mod[i].mod_start),
                          PFN_UP(mod[i].mod_end), PAGE_HYPERVISOR);
     }
diff --git a/xen/arch/x86/tboot.c b/xen/arch/x86/tboot.c
index 86c4c22cac..4368a64009 100644
--- a/xen/arch/x86/tboot.c
+++ b/xen/arch/x86/tboot.c
@@ -253,7 +253,7 @@ static void tboot_gen_xenheap_integrity(const uint8_t key[TB_KEY_SIZE],
             continue; /* skip tboot and its page tables */
 
         if ( is_page_in_use(page) && is_special_page(page) )
-            vmac_update(mfn_to_virt(mfn), PAGE_SIZE, &ctx);
+            vmac_update(mfn_to_directmap_virt(mfn), PAGE_SIZE, &ctx);
     }
     *mac = vmac(NULL, 0, nonce, NULL, &ctx);
 
diff --git a/xen/arch/x86/x86_64/mm.c b/xen/arch/x86/x86_64/mm.c
index b2a280fba3..1697760d82 100644
--- a/xen/arch/x86/x86_64/mm.c
+++ b/xen/arch/x86/x86_64/mm.c
@@ -1247,19 +1247,25 @@ int memory_add(unsigned long spfn, unsigned long epfn, unsigned int pxm)
     i = virt_to_mfn(HYPERVISOR_VIRT_END - 1) + 1;
     if ( spfn < i )
     {
-        ret = map_pages_to_xen((unsigned long)mfn_to_virt(spfn), _mfn(spfn),
-                               min(epfn, i) - spfn, PAGE_HYPERVISOR);
-        if ( ret )
-            goto destroy_directmap;
+        if ( arch_mfns_in_directmap(spfn, min(epfn, i) - spfn ) )
+        {
+            ret = map_pages_to_xen((unsigned long)mfn_to_directmap_virt(spfn), _mfn(spfn),
+                                min(epfn, i) - spfn, PAGE_HYPERVISOR);
+            if ( ret )
+                goto destroy_directmap;
+        }
     }
     if ( i < epfn )
     {
         if ( i < spfn )
             i = spfn;
-        ret = map_pages_to_xen((unsigned long)mfn_to_virt(i), _mfn(i),
-                               epfn - i, __PAGE_HYPERVISOR_RW);
-        if ( ret )
-            goto destroy_directmap;
+        if ( arch_mfns_in_directmap(spfn, epfn - i) )
+        {
+            ret = map_pages_to_xen((unsigned long)mfn_to_directmap_virt(i), _mfn(i),
+                                epfn - i, __PAGE_HYPERVISOR_RW);
+            if ( ret )
+                goto destroy_directmap;
+        }
     }
 
     old_node_start = node_start_pfn(node);
@@ -1348,8 +1354,8 @@ destroy_frametable:
     NODE_DATA(node)->node_start_pfn = old_node_start;
     NODE_DATA(node)->node_spanned_pages = old_node_span;
  destroy_directmap:
-    destroy_xen_mappings((unsigned long)mfn_to_virt(spfn),
-                         (unsigned long)mfn_to_virt(epfn));
+    destroy_xen_mappings((unsigned long)mfn_to_directmap_virt(spfn),
+                         (unsigned long)mfn_to_directmap_virt(epfn));
 
     return ret;
 }
diff --git a/xen/common/efi/boot.c b/xen/common/efi/boot.c
index efbec00af9..39aed5845d 100644
--- a/xen/common/efi/boot.c
+++ b/xen/common/efi/boot.c
@@ -1599,7 +1599,7 @@ static __init void copy_mapping(unsigned long mfn, unsigned long end,
     for ( ; mfn < end; mfn = next )
     {
         l4_pgentry_t l4e = efi_l4t[l4_table_offset(mfn << PAGE_SHIFT)];
-        unsigned long va = (unsigned long)mfn_to_virt(mfn);
+        unsigned long va = (unsigned long)mfn_to_directmap_virt(mfn);
 
         if ( !(mfn & ((1UL << (L4_PAGETABLE_SHIFT - PAGE_SHIFT)) - 1)) )
             UNMAP_DOMAIN_PAGE(l3dst);
@@ -1757,15 +1757,18 @@ void __init efi_init_memory(void)
         if ( pfn_to_pdx(emfn - 1) < (DIRECTMAP_SIZE >> PAGE_SHIFT) &&
              pdx_is_region_compressible(mem_base, mem_npages) )
         {
-            if ( (unsigned long)mfn_to_virt(emfn - 1) >= HYPERVISOR_VIRT_END )
-                prot &= ~_PAGE_GLOBAL;
-            if ( map_pages_to_xen((unsigned long)mfn_to_virt(smfn),
-                                  _mfn(smfn), emfn - smfn, prot) == 0 )
-                desc->VirtualStart =
-                    (unsigned long)maddr_to_virt(desc->PhysicalStart);
-            else
-                printk(XENLOG_ERR "Could not map MFNs %#lx-%#lx\n",
-                       smfn, emfn - 1);
+            if ( arch_mfns_in_directmap(smfn, emfn - smfn) )
+            {
+                if ( (unsigned long)mfn_to_directmap_virt(emfn - 1) >= HYPERVISOR_VIRT_END )
+                    prot &= ~_PAGE_GLOBAL;
+                if ( map_pages_to_xen((unsigned long)mfn_to_directmap_virt(smfn),
+                                    _mfn(smfn), emfn - smfn, prot) == 0 )
+                    desc->VirtualStart =
+                        (unsigned long)maddr_to_virt(desc->PhysicalStart);
+                else
+                    printk(XENLOG_ERR "Could not map MFNs %#lx-%#lx\n",
+                        smfn, emfn - 1);
+            }
         }
         else if ( !((desc->PhysicalStart + len - 1) >> (VADDR_BITS - 1)) &&
                   (extra = xmalloc(struct rt_extra)) != NULL )
diff --git a/xen/common/page_alloc.c b/xen/common/page_alloc.c
index 42b9aaae1c..0877e275e5 100644
--- a/xen/common/page_alloc.c
+++ b/xen/common/page_alloc.c
@@ -610,8 +610,8 @@ static unsigned long init_node_heap(int node, unsigned long mfn,
     {
         if ( arch_mfns_in_directmap(mfn + nr - needed, needed) )
         {
-            _heap[node] = mfn_to_virt(mfn + nr - needed);
-            avail[node] = mfn_to_virt(mfn + nr - 1) +
+            _heap[node] = mfn_to_directmap_virt(mfn + nr - needed);
+            avail[node] = mfn_to_directmap_virt(mfn + nr - 1) +
                           PAGE_SIZE - sizeof(**avail) * NR_ZONES;
         }
         else
@@ -630,8 +630,8 @@ static unsigned long init_node_heap(int node, unsigned long mfn,
     {
         if ( arch_mfns_in_directmap(mfn, needed) )
         {
-            _heap[node] = mfn_to_virt(mfn);
-            avail[node] = mfn_to_virt(mfn + needed - 1) +
+            _heap[node] = mfn_to_directmap_virt(mfn);
+            avail[node] = mfn_to_directmap_virt(mfn + needed - 1) +
                           PAGE_SIZE - sizeof(**avail) * NR_ZONES;
         }
         else
diff --git a/xen/common/trace.c b/xen/common/trace.c
index 4e7b080e61..955509a0d8 100644
--- a/xen/common/trace.c
+++ b/xen/common/trace.c
@@ -229,7 +229,7 @@ static int alloc_trace_bufs(unsigned int pages)
         offset = t_info->mfn_offset[cpu];
 
         /* Initialize the buffer metadata */
-        per_cpu(t_bufs, cpu) = buf = mfn_to_virt(t_info_mfn_list[offset]);
+        per_cpu(t_bufs, cpu) = buf = mfn_to_directmap_virt(t_info_mfn_list[offset]);
         buf->cons = buf->prod = 0;
 
         printk(XENLOG_INFO "xentrace: p%d mfn %x offset %u\n",
@@ -268,7 +268,7 @@ out_dealloc:
             if ( !mfn )
                 break;
             ASSERT(!(mfn_to_page(_mfn(mfn))->count_info & PGC_allocated));
-            free_xenheap_pages(mfn_to_virt(mfn), 0);
+            free_xenheap_pages(mfn_to_directmap_virt(mfn), 0);
         }
     }
     free_xenheap_pages(t_info, get_order_from_pages(t_info_pages));
@@ -529,7 +529,7 @@ static unsigned char *next_record(const struct t_buf *buf, uint32_t *next,
     per_cpu_mfn_offset = t_info->mfn_offset[smp_processor_id()];
     mfn_list = (uint32_t *)t_info;
     mfn = mfn_list[per_cpu_mfn_offset + per_cpu_mfn_nr];
-    this_page = mfn_to_virt(mfn);
+    this_page = (unsigned char *)mfn_to_directmap_virt(mfn);
     if (per_cpu_mfn_nr + 1 >= opt_tbuf_size)
     {
         /* reached end of buffer? */
@@ -538,7 +538,7 @@ static unsigned char *next_record(const struct t_buf *buf, uint32_t *next,
     else
     {
         mfn = mfn_list[per_cpu_mfn_offset + per_cpu_mfn_nr + 1];
-        *next_page = mfn_to_virt(mfn);
+        *next_page = mfn_to_directmap_virt(mfn);
     }
     return this_page;
 }
-- 
2.40.1



From xen-devel-bounces@lists.xenproject.org Tue Jan 16 19:41:54 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 16 Jan 2024 19:41:54 +0000
Received: from list by lists.xenproject.org with outflank-mailman.668179.1040212 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPpJp-0001CK-Ee; Tue, 16 Jan 2024 19:41:53 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 668179.1040212; Tue, 16 Jan 2024 19:41:53 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPpJp-0001CD-Bo; Tue, 16 Jan 2024 19:41:53 +0000
Received: by outflank-mailman (input) for mailman id 668179;
 Tue, 16 Jan 2024 19:41:52 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=wmx9=I2=amazon.co.uk=prvs=738631f0b=eliasely@srs-se1.protection.inumbo.net>)
 id 1rPp57-0003Xv-Qz
 for xen-devel@lists.xenproject.org; Tue, 16 Jan 2024 19:26:41 +0000
Received: from smtp-fw-52004.amazon.com (smtp-fw-52004.amazon.com
 [52.119.213.154]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 2bb49f52-b4a5-11ee-98f1-6d05b1d4d9a1;
 Tue, 16 Jan 2024 20:26:40 +0100 (CET)
Received: from iad12-co-svc-p1-lb1-vlan2.amazon.com (HELO
 email-inbound-relay-pdx-2c-m6i4x-8c5b1df3.us-west-2.amazon.com) ([10.43.8.2])
 by smtp-border-fw-52004.iad7.amazon.com with
 ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 16 Jan 2024 19:26:39 +0000
Received: from smtpout.prod.us-east-1.prod.farcaster.email.amazon.dev
 (pdx2-ws-svc-p26-lb5-vlan3.pdx.amazon.com [10.39.38.70])
 by email-inbound-relay-pdx-2c-m6i4x-8c5b1df3.us-west-2.amazon.com (Postfix)
 with ESMTPS id 348DA40DAA; Tue, 16 Jan 2024 19:26:37 +0000 (UTC)
Received: from EX19MTAUEC001.ant.amazon.com [10.0.0.204:53301]
 by smtpin.naws.us-east-1.prod.farcaster.email.amazon.dev [10.0.15.248:2525]
 with esmtp (Farcaster)
 id 5e670533-2f6c-4336-8d86-c15826d81933; Tue, 16 Jan 2024 19:26:36 +0000 (UTC)
Received: from EX19D008UEC004.ant.amazon.com (10.252.135.170) by
 EX19MTAUEC001.ant.amazon.com (10.252.135.222) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1118.40; Tue, 16 Jan 2024 19:26:35 +0000
Received: from EX19MTAUEB001.ant.amazon.com (10.252.135.35) by
 EX19D008UEC004.ant.amazon.com (10.252.135.170) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1118.40; Tue, 16 Jan 2024 19:26:35 +0000
Received: from dev-dsk-eliasely-1a-fd74790f.eu-west-1.amazon.com
 (10.253.91.118) by mail-relay.amazon.com (10.252.135.35) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1118.40 via Frontend Transport; Tue, 16 Jan 2024 19:26:34 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 2bb49f52-b4a5-11ee-98f1-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
  d=amazon.com; i=@amazon.com; q=dns/txt; s=amazon201209;
  t=1705433201; x=1736969201;
  h=from:to:cc:subject:date:message-id:in-reply-to:
   references:mime-version:content-transfer-encoding;
  bh=tb2fNfqN0eF/OdROl8BG6kceQk3KA1cAs0YAyUr8QAc=;
  b=N0qDNj7xJPr7zenQX6jYFU+05C3mdhtFfH8uasW1C5Q4MtCBvsJHUIAT
   ZLdTOwuR4XHI9tazy27fNwfT/nwePOV6pc75r8dZ+1TFzuo5qMoCnBK7h
   NLYT2GrFUZgLalHTVq5j/PfTikk63Qs2Dx9ee1nQRbGAMLArZycCtsNYs
   8=;
X-IronPort-AV: E=Sophos;i="6.05,200,1701129600"; 
   d="scan'208";a="178399480"
X-Farcaster-Flow-ID: 5e670533-2f6c-4336-8d86-c15826d81933
From: Elias El Yandouzi <eliasely@amazon.com>
To: <xen-devel@lists.xenproject.org>
CC: <julien@xen.org>, <pdurrant@amazon.com>, <dwmw@amazon.com>, "Elias El
 Yandouzi" <eliasely@amazon.com>, Jan Beulich <jbeulich@suse.com>, "Andrew
 Cooper" <andrew.cooper3@citrix.com>, =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?=
	<roger.pau@citrix.com>, Wei Liu <wl@xen.org>
Subject: [PATCH v2 (resend) 16/27] xen/x86: Add build assertion for fixmap entries
Date: Tue, 16 Jan 2024 19:26:00 +0000
Message-ID: <20240116192611.41112-17-eliasely@amazon.com>
X-Mailer: git-send-email 2.40.1
In-Reply-To: <20240116192611.41112-1-eliasely@amazon.com>
References: <20240116192611.41112-1-eliasely@amazon.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
Precedence: Bulk

The early fixed addresses must all fit into the static L1 table.
Introduce a build assertion to this end.

Signed-off-by: Elias El Yandouzi <eliasely@amazon.com>

----

     Changes in v2:
         * New patch

diff --git a/xen/arch/x86/include/asm/fixmap.h b/xen/arch/x86/include/asm/fixmap.h
index a7ac365fc6..904bee0480 100644
--- a/xen/arch/x86/include/asm/fixmap.h
+++ b/xen/arch/x86/include/asm/fixmap.h
@@ -77,6 +77,11 @@ enum fixed_addresses {
 #define FIXADDR_SIZE  (__end_of_fixed_addresses << PAGE_SHIFT)
 #define FIXADDR_START (FIXADDR_TOP - FIXADDR_SIZE)
 
+static inline void fixaddr_build_assertion(void)
+{
+    BUILD_BUG_ON(FIX_PMAP_END > L1_PAGETABLE_ENTRIES - 1);
+}
+
 extern void __set_fixmap(
     enum fixed_addresses idx, unsigned long mfn, unsigned long flags);
 
-- 
2.40.1



From xen-devel-bounces@lists.xenproject.org Tue Jan 16 19:51:13 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 16 Jan 2024 19:51:13 +0000
Received: from list by lists.xenproject.org with outflank-mailman.668197.1040222 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPpSl-0006hA-E4; Tue, 16 Jan 2024 19:51:07 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 668197.1040222; Tue, 16 Jan 2024 19:51:07 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPpSl-0006h3-An; Tue, 16 Jan 2024 19:51:07 +0000
Received: by outflank-mailman (input) for mailman id 668197;
 Tue, 16 Jan 2024 19:51:06 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=wmx9=I2=amazon.co.uk=prvs=738631f0b=eliasely@srs-se1.protection.inumbo.net>)
 id 1rPp5M-0002iI-Ep
 for xen-devel@lists.xenproject.org; Tue, 16 Jan 2024 19:26:56 +0000
Received: from smtp-fw-6001.amazon.com (smtp-fw-6001.amazon.com [52.95.48.154])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 343407ec-b4a5-11ee-9b0f-b553b5be7939;
 Tue, 16 Jan 2024 20:26:54 +0100 (CET)
Received: from iad12-co-svc-p1-lb1-vlan2.amazon.com (HELO
 email-inbound-relay-iad-1a-m6i4x-86a02d5e.us-east-1.amazon.com) ([10.43.8.2])
 by smtp-border-fw-6001.iad6.amazon.com with
 ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 16 Jan 2024 19:26:52 +0000
Received: from smtpout.prod.us-east-1.prod.farcaster.email.amazon.dev
 (iad7-ws-svc-p70-lb3-vlan2.iad.amazon.com [10.32.235.34])
 by email-inbound-relay-iad-1a-m6i4x-86a02d5e.us-east-1.amazon.com (Postfix)
 with ESMTPS id 2514BEBF70; Tue, 16 Jan 2024 19:26:50 +0000 (UTC)
Received: from EX19MTAUEA002.ant.amazon.com [10.0.29.78:44977]
 by smtpin.naws.us-east-1.prod.farcaster.email.amazon.dev [10.0.22.37:2525]
 with esmtp (Farcaster)
 id 558b48ad-83b8-4317-8bdc-7c0165ceb8c5; Tue, 16 Jan 2024 19:26:49 +0000 (UTC)
Received: from EX19D008UEC004.ant.amazon.com (10.252.135.170) by
 EX19MTAUEA002.ant.amazon.com (10.252.134.9) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1118.40; Tue, 16 Jan 2024 19:26:41 +0000
Received: from EX19MTAUEB001.ant.amazon.com (10.252.135.35) by
 EX19D008UEC004.ant.amazon.com (10.252.135.170) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1118.40; Tue, 16 Jan 2024 19:26:41 +0000
Received: from dev-dsk-eliasely-1a-fd74790f.eu-west-1.amazon.com
 (10.253.91.118) by mail-relay.amazon.com (10.252.135.35) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1118.40 via Frontend Transport; Tue, 16 Jan 2024 19:26:40 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 343407ec-b4a5-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
  d=amazon.com; i=@amazon.com; q=dns/txt; s=amazon201209;
  t=1705433214; x=1736969214;
  h=from:to:cc:subject:date:message-id:in-reply-to:
   references:mime-version:content-transfer-encoding;
  bh=RNtWDehKcdKd51zP4omQpNRTUkQx1O6KgQ+LUko8Hd0=;
  b=dpWXd4EDj23rdLixSqlvXmOCIybgK7gmZQCki4kyQz58l16ZkWZ0UbDB
   t1CW3DahZbdU7zpEOrju07TwRsUDxz5P+ZvdpCeygHc4pcJkSiTlG77hx
   3tQRBogz8mKntlVh2BnqVadmT95qieqtp7V9X6s+yu3kSH1Uw2NbxxO4B
   k=;
X-IronPort-AV: E=Sophos;i="6.05,200,1701129600"; 
   d="scan'208";a="382577346"
X-Farcaster-Flow-ID: 558b48ad-83b8-4317-8bdc-7c0165ceb8c5
From: Elias El Yandouzi <eliasely@amazon.com>
To: <xen-devel@lists.xenproject.org>
CC: <julien@xen.org>, <pdurrant@amazon.com>, <dwmw@amazon.com>, Hongyan Xia
	<hongyxia@amazon.com>, Jan Beulich <jbeulich@suse.com>, Andrew Cooper
	<andrew.cooper3@citrix.com>, =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?=
	<roger.pau@citrix.com>, Wei Liu <wl@xen.org>, Julien Grall
	<jgrall@amazon.com>, Elias El Yandouzi <eliasely@amazon.com>
Subject: [PATCH v2 (resend) 21/27] x86/setup: Do not create valid mappings when directmap=no
Date: Tue, 16 Jan 2024 19:26:05 +0000
Message-ID: <20240116192611.41112-22-eliasely@amazon.com>
X-Mailer: git-send-email 2.40.1
In-Reply-To: <20240116192611.41112-1-eliasely@amazon.com>
References: <20240116192611.41112-1-eliasely@amazon.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
Precedence: Bulk

From: Hongyan Xia <hongyxia@amazon.com>

Create empty mappings in the second e820 pass. Also, destroy existing
direct map mappings created in the first pass.

To make xenheap pages visible in guests, it is necessary to create empty
L3 tables in the direct map even when directmap=no, since guest cr3s
copy idle domain's L4 entries, which means they will share mappings in
the direct map if we pre-populate idle domain's L4 entries and L3
tables. A helper is introduced for this.

Also, after the direct map is actually gone, we need to stop updating
the direct map in update_xen_mappings().

Signed-off-by: Hongyan Xia <hongyxia@amazon.com>
Signed-off-by: Julien Grall <jgrall@amazon.com>
Signed-off-by: Elias El Yandouzi <eliasely@amazon.com>

diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
index 3b698c8c41..84c496ac4a 100644
--- a/xen/arch/x86/setup.c
+++ b/xen/arch/x86/setup.c
@@ -976,6 +976,57 @@ static struct domain *__init create_dom0(const module_t *image,
 /* How much of the directmap is prebuilt at compile time. */
 #define PREBUILT_MAP_LIMIT (1 << L2_PAGETABLE_SHIFT)
 
+/*
+ * This either populates a valid direct map, or allocates empty L3 tables and
+ * creates the L4 entries for virtual address between [start, end) in the
+ * direct map depending on has_directmap();
+ *
+ * When directmap=no, we still need to populate empty L3 tables in the
+ * direct map region. The reason is that on-demand xenheap mappings are
+ * created in the idle domain's page table but must be seen by
+ * everyone. Since all domains share the direct map L4 entries, they
+ * will share xenheap mappings if we pre-populate the L4 entries and L3
+ * tables in the direct map region for all RAM. We also rely on the fact
+ * that L3 tables are never freed.
+ */
+static void __init populate_directmap(uint64_t pstart, uint64_t pend,
+                                      unsigned int flags)
+{
+    unsigned long vstart = (unsigned long)__va(pstart);
+    unsigned long vend = (unsigned long)__va(pend);
+
+    if ( pstart >= pend )
+        return;
+
+    BUG_ON(vstart < DIRECTMAP_VIRT_START);
+    BUG_ON(vend > DIRECTMAP_VIRT_END);
+
+    if ( has_directmap() )
+        /* Populate valid direct map. */
+        BUG_ON(map_pages_to_xen(vstart, maddr_to_mfn(pstart),
+                                PFN_DOWN(pend - pstart), flags));
+    else
+    {
+        /* Create empty L3 tables. */
+        unsigned long vaddr = vstart & ~((1UL << L4_PAGETABLE_SHIFT) - 1);
+
+        for ( ; vaddr < vend; vaddr += (1UL << L4_PAGETABLE_SHIFT) )
+        {
+            l4_pgentry_t *pl4e = &idle_pg_table[l4_table_offset(vaddr)];
+
+            if ( !(l4e_get_flags(*pl4e) & _PAGE_PRESENT) )
+            {
+                mfn_t mfn = alloc_boot_pages(1, 1);
+                void *v = map_domain_page(mfn);
+
+                clear_page(v);
+                UNMAP_DOMAIN_PAGE(v);
+                l4e_write(pl4e, l4e_from_mfn(mfn, __PAGE_HYPERVISOR));
+            }
+        }
+    }
+}
+
 void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
 {
     const char *memmap_type = NULL, *loader, *cmdline = "";
@@ -1596,8 +1647,17 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
         map_e = min_t(uint64_t, e,
                       ARRAY_SIZE(l2_directmap) << L2_PAGETABLE_SHIFT);
 
-        /* Pass mapped memory to allocator /before/ creating new mappings. */
+        /*
+         * Pass mapped memory to allocator /before/ creating new mappings.
+         * The direct map for the bottom 4GiB has been populated in the first
+         * e820 pass. In the second pass, we make sure those existing mappings
+         * are destroyed when directmap=no.
+         */
         init_boot_pages(s, min(map_s, e));
+        if ( !has_directmap() )
+            destroy_xen_mappings((unsigned long)__va(s),
+                                 (unsigned long)__va(min(map_s, e)));
+
         s = map_s;
         if ( s < map_e )
         {
@@ -1605,6 +1665,9 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
             map_s = (s + mask) & ~mask;
             map_e &= ~mask;
             init_boot_pages(map_s, map_e);
+            if ( !has_directmap() )
+                destroy_xen_mappings((unsigned long)__va(map_s),
+                                     (unsigned long)__va(map_e));
         }
 
         if ( map_s > map_e )
@@ -1618,8 +1681,7 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
 
             if ( map_e < end )
             {
-                map_pages_to_xen((unsigned long)__va(map_e), maddr_to_mfn(map_e),
-                                 PFN_DOWN(end - map_e), PAGE_HYPERVISOR);
+                populate_directmap(map_e, end, PAGE_HYPERVISOR);
                 init_boot_pages(map_e, end);
                 map_e = end;
             }
@@ -1628,13 +1690,11 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
         {
             /* This range must not be passed to the boot allocator and
              * must also not be mapped with _PAGE_GLOBAL. */
-            map_pages_to_xen((unsigned long)__va(map_e), maddr_to_mfn(map_e),
-                             PFN_DOWN(e - map_e), __PAGE_HYPERVISOR_RW);
+            populate_directmap(map_e, e, __PAGE_HYPERVISOR_RW);
         }
         if ( s < map_s )
         {
-            map_pages_to_xen((unsigned long)__va(s), maddr_to_mfn(s),
-                             PFN_DOWN(map_s - s), PAGE_HYPERVISOR);
+            populate_directmap(s, map_s, PAGE_HYPERVISOR);
             init_boot_pages(s, map_s);
         }
     }
-- 
2.40.1



From xen-devel-bounces@lists.xenproject.org Tue Jan 16 23:32:44 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 16 Jan 2024 23:32:44 +0000
Received: from list by lists.xenproject.org with outflank-mailman.668207.1040232 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPsuw-0000oh-LP; Tue, 16 Jan 2024 23:32:26 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 668207.1040232; Tue, 16 Jan 2024 23:32:26 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPsuw-0000oa-Ho; Tue, 16 Jan 2024 23:32:26 +0000
Received: by outflank-mailman (input) for mailman id 668207;
 Tue, 16 Jan 2024 23:32:25 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rPsuv-0000oQ-85; Tue, 16 Jan 2024 23:32:25 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rPsuu-0005BY-Vz; Tue, 16 Jan 2024 23:32:25 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rPsuu-00059q-Ja; Tue, 16 Jan 2024 23:32:24 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rPsuu-00026L-J6; Tue, 16 Jan 2024 23:32:24 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=fWe+/093QoAaW3H5KM+hxbhGtepJZNm//DGlsWW7JPU=; b=byanbiB/Cml8hHn1n64TQDXJ3H
	+b4IqoYkzTLIs5QCO9G/iXq3DYATOizdon2VrbONEP2sA+THUX8mylfiV8jFl5jmbWOluUaWACfUD
	6HuOs1aJw41Pmxs4bYJvw3WNqceoyao/eyuB0V4EO5b8u5Rj3cPPVhkSKH16cTwUV4k4=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184368-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [linux-linus test] 184368: regressions - FAIL
X-Osstest-Failures:
    linux-linus:test-arm64-arm64-xl-credit1:debian-install:fail:regression
    linux-linus:test-arm64-arm64-xl-xsm:debian-install:fail:regression
    linux-linus:test-arm64-arm64-xl:debian-install:fail:regression
    linux-linus:test-arm64-arm64-xl-thunderx:debian-install:fail:regression
    linux-linus:test-arm64-arm64-xl-credit2:debian-install:fail:regression
    linux-linus:test-arm64-arm64-libvirt-xsm:debian-install:fail:regression
    linux-linus:test-amd64-amd64-xl:guest-start/debian.repeat:fail:heisenbug
    linux-linus:test-amd64-amd64-xl-qemuu-debianhvm-i386-xsm:debian-hvm-install:fail:heisenbug
    linux-linus:test-armhf-armhf-libvirt:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    linux-linus:test-amd64-amd64-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    linux-linus:test-amd64-amd64-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-raw:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-qcow2:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-qemuu-nested-amd:debian-hvm-install/l1/l2:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-xsm:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-arndale:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-arndale:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-multivcpu:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-multivcpu:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-rtds:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-rtds:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit1:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit1:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit2:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit2:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-libvirt-raw:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-vhd:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-vhd:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-vhd:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-vhd:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-qcow2:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-qcow2:migrate-support-check:fail:nonblocking
X-Osstest-Versions-This:
    linux=052d534373b7ed33712a63d5e17b2b6cdbce84fd
X-Osstest-Versions-That:
    linux=0dd3ee31125508cd67f7e7172247f05b7fd1753a
From: osstest service owner <osstest-admin@xenproject.org>
Date: Tue, 16 Jan 2024 23:32:24 +0000

flight 184368 linux-linus real [real]
http://logs.test-lab.xenproject.org/osstest/logs/184368/

Regressions :-(

Tests which did not succeed and are blocking,
including tests which could not be run:
 test-arm64-arm64-xl-credit1  12 debian-install           fail REGR. vs. 184270
 test-arm64-arm64-xl-xsm      12 debian-install           fail REGR. vs. 184270
 test-arm64-arm64-xl          12 debian-install           fail REGR. vs. 184270
 test-arm64-arm64-xl-thunderx 12 debian-install           fail REGR. vs. 184270
 test-arm64-arm64-xl-credit2  12 debian-install           fail REGR. vs. 184270
 test-arm64-arm64-libvirt-xsm 12 debian-install           fail REGR. vs. 184270

Tests which are failing intermittently (not blocking):
 test-amd64-amd64-xl 22 guest-start/debian.repeat fail in 184359 pass in 184368
 test-amd64-amd64-xl-qemuu-debianhvm-i386-xsm 12 debian-hvm-install fail pass in 184359

Tests which did not succeed, but are not blocking:
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 184270
 test-amd64-amd64-xl-qemut-win7-amd64 19 guest-stop            fail like 184270
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 184270
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 184270
 test-armhf-armhf-libvirt-raw 15 saverestore-support-check    fail  like 184270
 test-amd64-amd64-xl-qemut-ws16-amd64 19 guest-stop            fail like 184270
 test-armhf-armhf-libvirt-qcow2 15 saverestore-support-check   fail like 184270
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 184270
 test-amd64-amd64-libvirt     15 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-arndale  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-arndale  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-multivcpu 15 migrate-support-check        fail  never pass
 test-armhf-armhf-xl-multivcpu 16 saverestore-support-check    fail  never pass
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-armhf-armhf-libvirt     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-rtds     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-rtds     16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-credit1  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit1  16 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-raw 14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit2  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit2  16 saverestore-support-check    fail   never pass
 test-arm64-arm64-libvirt-raw 14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 15 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-vhd      14 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-vhd      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-raw 14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      15 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-qcow2 14 migrate-support-check        fail never pass
 test-armhf-armhf-xl          15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          16 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-qcow2 14 migrate-support-check        fail never pass

version targeted for testing:
 linux                052d534373b7ed33712a63d5e17b2b6cdbce84fd
baseline version:
 linux                0dd3ee31125508cd67f7e7172247f05b7fd1753a

Last test of basis   184270  2024-01-07 20:42:19 Z    9 days
Failing since        184283  2024-01-08 20:10:43 Z    8 days   14 attempts
Testing same since   184338  2024-01-13 05:40:28 Z    3 days    7 attempts

------------------------------------------------------------
1701 people touched revisions under test,
not listing them all

jobs:
 build-amd64-xsm                                              pass    
 build-arm64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64                                                  pass    
 build-arm64                                                  pass    
 build-armhf                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-arm64-libvirt                                          pass    
 build-armhf-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-pvops                                            pass    
 build-arm64-pvops                                            pass    
 build-armhf-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-amd64-amd64-xl                                          pass    
 test-amd64-coresched-amd64-xl                                pass    
 test-arm64-arm64-xl                                          fail    
 test-armhf-armhf-xl                                          pass    
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm           pass    
 test-amd64-amd64-xl-qemut-stubdom-debianhvm-amd64-xsm        pass    
 test-amd64-amd64-xl-qemut-debianhvm-i386-xsm                 pass    
 test-amd64-amd64-xl-qemuu-debianhvm-i386-xsm                 fail    
 test-amd64-amd64-libvirt-xsm                                 pass    
 test-arm64-arm64-libvirt-xsm                                 fail    
 test-amd64-amd64-xl-xsm                                      pass    
 test-arm64-arm64-xl-xsm                                      fail    
 test-amd64-amd64-qemuu-nested-amd                            fail    
 test-amd64-amd64-xl-pvhv2-amd                                pass    
 test-amd64-amd64-dom0pvh-xl-amd                              pass    
 test-amd64-amd64-xl-qemut-debianhvm-amd64                    pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64                    pass    
 test-amd64-amd64-freebsd11-amd64                             pass    
 test-amd64-amd64-freebsd12-amd64                             pass    
 test-amd64-amd64-xl-qemuu-ovmf-amd64                         pass    
 test-amd64-amd64-xl-qemut-win7-amd64                         fail    
 test-amd64-amd64-xl-qemuu-win7-amd64                         fail    
 test-amd64-amd64-xl-qemut-ws16-amd64                         fail    
 test-amd64-amd64-xl-qemuu-ws16-amd64                         fail    
 test-armhf-armhf-xl-arndale                                  pass    
 test-amd64-amd64-examine-bios                                pass    
 test-amd64-amd64-xl-credit1                                  pass    
 test-arm64-arm64-xl-credit1                                  fail    
 test-armhf-armhf-xl-credit1                                  pass    
 test-amd64-amd64-xl-credit2                                  pass    
 test-arm64-arm64-xl-credit2                                  fail    
 test-armhf-armhf-xl-credit2                                  pass    
 test-amd64-amd64-xl-qemuu-dmrestrict-amd64-dmrestrict        pass    
 test-amd64-amd64-examine                                     pass    
 test-arm64-arm64-examine                                     pass    
 test-armhf-armhf-examine                                     pass    
 test-amd64-amd64-qemuu-nested-intel                          pass    
 test-amd64-amd64-xl-pvhv2-intel                              pass    
 test-amd64-amd64-dom0pvh-xl-intel                            pass    
 test-amd64-amd64-libvirt                                     pass    
 test-armhf-armhf-libvirt                                     pass    
 test-amd64-amd64-xl-multivcpu                                pass    
 test-armhf-armhf-xl-multivcpu                                pass    
 test-amd64-amd64-pair                                        pass    
 test-amd64-amd64-libvirt-pair                                pass    
 test-amd64-amd64-xl-pvshim                                   pass    
 test-amd64-amd64-pygrub                                      pass    
 test-amd64-amd64-libvirt-qcow2                               pass    
 test-armhf-armhf-libvirt-qcow2                               pass    
 test-amd64-amd64-libvirt-raw                                 pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-armhf-armhf-libvirt-raw                                 pass    
 test-amd64-amd64-xl-rtds                                     pass    
 test-armhf-armhf-xl-rtds                                     pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64-shadow             pass    
 test-amd64-amd64-xl-shadow                                   pass    
 test-arm64-arm64-xl-thunderx                                 fail    
 test-amd64-amd64-examine-uefi                                pass    
 test-amd64-amd64-xl-vhd                                      pass    
 test-arm64-arm64-xl-vhd                                      pass    
 test-armhf-armhf-xl-vhd                                      pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Not pushing.

(No revision log; it would be 204832 lines long.)


From xen-devel-bounces@lists.xenproject.org Wed Jan 17 02:21:34 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 17 Jan 2024 02:21:34 +0000
Received: from list by lists.xenproject.org with outflank-mailman.668215.1040241 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPvYN-0005Iu-UM; Wed, 17 Jan 2024 02:21:19 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 668215.1040241; Wed, 17 Jan 2024 02:21:19 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPvYN-0005In-RK; Wed, 17 Jan 2024 02:21:19 +0000
Received: by outflank-mailman (input) for mailman id 668215;
 Wed, 17 Jan 2024 02:21:18 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rPvYM-0005Ib-S0; Wed, 17 Jan 2024 02:21:18 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rPvYM-0003b3-IV; Wed, 17 Jan 2024 02:21:18 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rPvYM-0003GV-5H; Wed, 17 Jan 2024 02:21:18 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rPvYM-0000A2-4Y; Wed, 17 Jan 2024 02:21:18 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=jlqWPuO5y0GM2SgUAq+Ur1T4uZ5AiPi0gV0s6QDet28=; b=mw7c1YFg1b+GWKp23rNHiesyZc
	1FrEXYdJQ78DpidDmIw+9K6EJdiFCpmZlBH+RPoCtsnRRKCHRjGOgHbCHfWUqM8ZBe69n6mNxisWE
	r6xbH3Bdr4sh8hzdc4olsjBVpBWHgFzmO9IGgtFTt8O8NwsMcfn2Lf5nhgGBcQdCXhEY=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184379-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [ovmf test] 184379: all pass - PUSHED
X-Osstest-Versions-This:
    ovmf=59f024c76ee57c2bec84794536302fc770cd6ec2
X-Osstest-Versions-That:
    ovmf=9971b99461e930008e3d35bc0a4a310b6afa57f6
From: osstest service owner <osstest-admin@xenproject.org>
Date: Wed, 17 Jan 2024 02:21:18 +0000

flight 184379 ovmf real [real]
http://logs.test-lab.xenproject.org/osstest/logs/184379/

Perfect :-)
All tests in this flight passed as required
version targeted for testing:
 ovmf                 59f024c76ee57c2bec84794536302fc770cd6ec2
baseline version:
 ovmf                 9971b99461e930008e3d35bc0a4a310b6afa57f6

Last test of basis   184371  2024-01-16 09:42:46 Z    0 days
Testing same since   184379  2024-01-16 23:44:09 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Gua Guo <gua.guo@intel.com>

jobs:
 build-amd64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-amd64-amd64-xl-qemuu-ovmf-amd64                         pass    
 test-amd64-i386-xl-qemuu-ovmf-amd64                          pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Pushing revision :

To xenbits.xen.org:/home/xen/git/osstest/ovmf.git
   9971b99461..59f024c76e  59f024c76ee57c2bec84794536302fc770cd6ec2 -> xen-tested-master


From xen-devel-bounces@lists.xenproject.org Wed Jan 17 03:01:46 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 17 Jan 2024 03:01:46 +0000
Received: from list by lists.xenproject.org with outflank-mailman.668223.1040252 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPwBP-0000Jp-Va; Wed, 17 Jan 2024 03:01:39 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 668223.1040252; Wed, 17 Jan 2024 03:01:39 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPwBP-0000Ji-SM; Wed, 17 Jan 2024 03:01:39 +0000
Received: by outflank-mailman (input) for mailman id 668223;
 Wed, 17 Jan 2024 03:01:37 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=9KYf=I3=amd.com=Stewart.Hildebrand@srs-se1.protection.inumbo.net>)
 id 1rPwBN-0000I4-Rr
 for xen-devel@lists.xenproject.org; Wed, 17 Jan 2024 03:01:37 +0000
Received: from NAM04-MW2-obe.outbound.protection.outlook.com
 (mail-mw2nam04on20615.outbound.protection.outlook.com
 [2a01:111:f400:7e8c::615])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id b7699f88-b4e4-11ee-9b0f-b553b5be7939;
 Wed, 17 Jan 2024 04:01:33 +0100 (CET)
Received: from DS7PR03CA0261.namprd03.prod.outlook.com (2603:10b6:5:3b3::26)
 by LV2PR12MB5726.namprd12.prod.outlook.com (2603:10b6:408:17e::9) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7202.23; Wed, 17 Jan
 2024 03:01:27 +0000
Received: from DS1PEPF00017097.namprd05.prod.outlook.com
 (2603:10b6:5:3b3:cafe::7f) by DS7PR03CA0261.outlook.office365.com
 (2603:10b6:5:3b3::26) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7181.28 via Frontend
 Transport; Wed, 17 Jan 2024 03:01:26 +0000
Received: from SATLEXMB03.amd.com (165.204.84.17) by
 DS1PEPF00017097.mail.protection.outlook.com (10.167.18.101) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.7202.16 via Frontend Transport; Wed, 17 Jan 2024 03:01:26 +0000
Received: from SATLEXMB08.amd.com (10.181.40.132) by SATLEXMB03.amd.com
 (10.181.40.144) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.34; Tue, 16 Jan
 2024 21:01:26 -0600
Received: from SATLEXMB04.amd.com (10.181.40.145) by SATLEXMB08.amd.com
 (10.181.40.132) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.32; Tue, 16 Jan
 2024 19:01:25 -0800
Received: from [172.23.114.18] (10.180.168.240) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server id 15.1.2507.34 via Frontend
 Transport; Tue, 16 Jan 2024 21:01:25 -0600
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: b7699f88-b4e4-11ee-9b0f-b553b5be7939
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=Qsc8TDzh7LFHkw9EsUQ5mQYXHCJlTesIqOYx62sedDL0cfTVkLM1O/3LoXnbhHa59kxgwRDyQGum1Isj0VK1GXzNLwBNUtVG2IovHuymXSwy2dVjSCQFe0JjNp9PFs9mB/HLIzA+m/CAvKXdjyoTxr9qkgxTFTbRs+T2wkqmAMWl63CRv6bRCcoP8+5AeXmRjHiKz/Na8+EkaPGaj0/i3MFCFriBVXsStlaCl36cjXjcGFYFjqswavATWvufSn+wCHlafV8iGEP/0hiiJRI7G4CKwZsIHz7Gkntee+C+rxAg7G4I2Oxhox6h0rZHqjocLOXPtF2b9k0UA7dkuv3RSw==
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=MNNHE6Ftb6vwaD5IemdXbcNRacTkAvCax9LPZskNdUU=;
 b=GrB6CciYu+EoMG4SykABHtb+k1injzeASqtRqi1ylIwIqFVwzE10Hphutgw0Vsh48sRgjlf648R8XnppMVPIpX+PXRqFOo81bV0+XCMBMJmaLa3xEli8HPU0rCbTV2vdTjnfWHi6PD8SEs4yhHkAqGOU9N4mqaMeN/v31X19+T/uxs0KQrcvj0w+OqLMm1VE9UM6uF7qzWA96+5c4ErcKLu7LrkGECiVHSAW1JSHP6bSiQA0E2B5K5g523pGBu8KZxgxvihbIrEIG+9DeTIiXO4LCFgL5+ASV4tL4QAqdrTzgmngvBzzUsRqH4egAJhK9GOHkMQqnYavUmT7BA1goQ==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=lists.xenproject.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)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=MNNHE6Ftb6vwaD5IemdXbcNRacTkAvCax9LPZskNdUU=;
 b=FDUdOFWQ/rHvCM4jDTqGXxI7WrjG3AX6069XZcfW5sDOBIflpUi8yp5bo1XB9FEWnLC1j0rwnRzJ3qO04UHyaosuNhsnTIDeRnaYMqSd7ExPGrAZaaPjFW9fY4JHpwEKzAg50KBcIXSI3HElzUYM3Msy4XhWqB1f1boVRRoBir0=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=SATLEXMB03.amd.com; pr=C
Message-ID: <05298b1e-118d-41ed-8b6d-45c69bb09ea9@amd.com>
Date: Tue, 16 Jan 2024 22:01:24 -0500
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v12.2 09/15] vpci/header: program p2m with guest BAR view
Content-Language: en-US
To: <xen-devel@lists.xenproject.org>
CC: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>,
	=?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>, "Daniel P. Smith"
	<dpsmith@apertussolutions.com>, Volodymyr Babchuk
	<volodymyr_babchuk@epam.com>
References: <20240109215145.430207-1-stewart.hildebrand@amd.com>
 <20240109215145.430207-10-stewart.hildebrand@amd.com>
 <20240115194406.45711-1-stewart.hildebrand@amd.com>
From: Stewart Hildebrand <stewart.hildebrand@amd.com>
In-Reply-To: <20240115194406.45711-1-stewart.hildebrand@amd.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 7bit
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: DS1PEPF00017097:EE_|LV2PR12MB5726:EE_
X-MS-Office365-Filtering-Correlation-Id: e4448138-4d03-4251-047f-08dc17089885
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam: BCL:0;
X-Microsoft-Antispam-Message-Info:
	3XiyRb1KbxpdvWYpV1P+ABB5YxFO2OuQdBrxJjYC4gxJBT11moKfil1f/B+Ww5l2JPVPC3nUqnYuAMYEs3Zl7qILOkdQE2WBO22k2/XASn3dW1x4Vwu7t7+C34pX+67qrbokBbQtJLZeqGcLpOFjwWZ3wf5Lx8UYPAtS9KoO419vXsAxLIkl1b08Ly/dHkwabaZnnlFfP/Cz7+ljzU5QzqR+wJ2+4/h6myBgQ9CHet97ZjI62ZJ0DpcIM9NmJ1YzBeK+kcTAACPsCRdN3gEOvJ/ACcdr84nVEYWDdurYi6h8griLRKuQPiclX/n58fC7ZS41sRnhW2/mTSnu5MViLOcQ5yiLpMvBf6IrFZ7pcAQef+9ojumj4S0y44ivr0vG7TVAvrKsjqPq+hf4IUgSLStuA8L0upYmXbSHuBNfFKymxLAtbayZPVVmv+y5+rl1OBnUE2Y1CZmf0zBsL0amdAAQUTkr9Um57/6IJXaqXjjQgvGBGIv4kXYoCvD3APyd5CTaYrcXDgl1fpguO3OyDRkqJAr/9z2kqWOPpS450IJsp0A69DIbg1pdC4i1k4/qpw8OaYwTEmDk0HkQCI0/+nymHJMtc/qbEVlJ17vS34aWhcc0pi9qvTSD0+bZCTfuQUM15X/muugy9MEzANhmZj/Q8r4Tfkbn526UzKp8nHHTq1wTqUuadoO+jBKSb9Am/9fGppKS8BlTEArcvFGrqP1ZvosFY9wPh9WgX3L9i0Ci5XIXUvTnrBmcDSA1+IqZ5x39bbkKzAHj4cJw7qXV8dwqnxmUti65PkDbQTMSDRDPs7Xb2hdPKYDApQR1jY8Oz8yJVuo8GZQWnhvi2yIKjw2l6o7lKGsIQiN7W3TjmI0=
X-Forefront-Antispam-Report:
	CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB03.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230031)(4636009)(39860400002)(376002)(396003)(136003)(346002)(230173577357003)(230922051799003)(230273577357003)(186009)(82310400011)(64100799003)(451199024)(1800799012)(46966006)(40470700004)(36840700001)(31686004)(40480700001)(40460700003)(426003)(336012)(26005)(53546011)(83380400001)(86362001)(31696002)(36756003)(82740400003)(81166007)(356005)(5660300002)(44832011)(8676002)(4326008)(2616005)(47076005)(36860700001)(54906003)(16576012)(6916009)(70586007)(70206006)(316002)(8936002)(41300700001)(2906002)(478600001)(36900700001)(43740500002);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Jan 2024 03:01:26.5018
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: e4448138-4d03-4251-047f-08dc17089885
X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB03.amd.com]
X-MS-Exchange-CrossTenant-AuthSource:
	DS1PEPF00017097.namprd05.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: LV2PR12MB5726

On 1/15/24 14:44, Stewart Hildebrand wrote:
> diff --git a/xen/drivers/vpci/header.c b/xen/drivers/vpci/header.c
> index feccd070ddd0..8483404c5e91 100644
> --- a/xen/drivers/vpci/header.c
> +++ b/xen/drivers/vpci/header.c
> @@ -41,13 +42,24 @@ static int cf_check map_range(
>      unsigned long s, unsigned long e, void *data, unsigned long *c)
>  {
>      const struct map_data *map = data;
> +    /* Start address of the BAR as seen by the guest. */
> +    unsigned long start_gfn = PFN_DOWN(map->bar->guest_addr);
> +    /* Physical start address of the BAR. */
> +    unsigned long start_mfn = PFN_DOWN(map->bar->addr);
>      int rc;
>  
>      for ( ; ; )
>      {
>          unsigned long size = e - s + 1;
> +        /*
> +         * Ranges to be mapped don't always start at the BAR start address, as
> +         * there can be holes or partially consumed ranges. Account for the
> +         * offset of the current address from the BAR start.
> +         */
> +        unsigned long map_mfn = start_mfn + s - start_gfn;
> +        unsigned long m_end = map_mfn + size - 1;
>  
> -        if ( !iomem_access_permitted(map->d, s, e) )
> +        if ( !iomem_access_permitted(map->d, map_mfn, m_end) )

Nit: since this check will now use map_mfn and m_end...

>          {
>              printk(XENLOG_G_WARNING
>                     "%pd denied access to MMIO range [%#lx, %#lx]\n",
>                     map->d, s, e);

... I'd like to also update the arguments passed to this print statement.


From xen-devel-bounces@lists.xenproject.org Wed Jan 17 03:03:19 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 17 Jan 2024 03:03:19 +0000
Received: from list by lists.xenproject.org with outflank-mailman.668228.1040263 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPwD0-0001UB-FB; Wed, 17 Jan 2024 03:03:18 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 668228.1040263; Wed, 17 Jan 2024 03:03:18 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPwD0-0001U4-AM; Wed, 17 Jan 2024 03:03:18 +0000
Received: by outflank-mailman (input) for mailman id 668228;
 Wed, 17 Jan 2024 03:03:17 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=9KYf=I3=amd.com=Stewart.Hildebrand@srs-se1.protection.inumbo.net>)
 id 1rPwCz-0001Tw-1D
 for xen-devel@lists.xenproject.org; Wed, 17 Jan 2024 03:03:17 +0000
Received: from NAM12-BN8-obe.outbound.protection.outlook.com
 (mail-bn8nam12on20600.outbound.protection.outlook.com
 [2a01:111:f403:2418::600])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id f4c8ea69-b4e4-11ee-9b0f-b553b5be7939;
 Wed, 17 Jan 2024 04:03:14 +0100 (CET)
Received: from PR1P264CA0119.FRAP264.PROD.OUTLOOK.COM (2603:10a6:102:2cd::13)
 by DM4PR12MB5817.namprd12.prod.outlook.com (2603:10b6:8:60::21) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7202.23; Wed, 17 Jan
 2024 03:03:08 +0000
Received: from SN1PEPF0002636D.namprd02.prod.outlook.com
 (2603:10a6:102:2cd:cafe::dd) by PR1P264CA0119.outlook.office365.com
 (2603:10a6:102:2cd::13) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7202.23 via Frontend
 Transport; Wed, 17 Jan 2024 03:03:07 +0000
Received: from SATLEXMB04.amd.com (165.204.84.17) by
 SN1PEPF0002636D.mail.protection.outlook.com (10.167.241.138) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.7202.16 via Frontend Transport; Wed, 17 Jan 2024 03:03:06 +0000
Received: from SATLEXMB04.amd.com (10.181.40.145) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.34; Tue, 16 Jan
 2024 21:03:04 -0600
Received: from [172.23.114.18] (10.180.168.240) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server id 15.1.2507.34 via Frontend
 Transport; Tue, 16 Jan 2024 21:03:04 -0600
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: f4c8ea69-b4e4-11ee-9b0f-b553b5be7939
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=QWEQAC4O313hRsMLHITeT6KAFNZqY8z5IJpsWZ5IMfrd+u3YmYXlOWpkB3CsiSz76q+eEK9H4w4ucX/YcaYnI94bWiGjmzMu31zdOuA8+cjhd/QQalWSEgoZphb36EyqfJ/vzYJM8t5tFd6E9GNItNRmRvf8R0MVN5foBw1peHQN46Tb7bPOCE4O2qMz+91G9Gbssy9uiomzxElYoBofzbBioy8huBBjAwUbwNsp2jjARZViw6KvIPWYrx5wovQZe/ZcnF0pISar8CNGigxuW0s2ObIeNS4KqIh7mdfZ8ZwkUGKIzuQKOR2yWlV9U2Yk4Fa50kkjS8NL9YCDaYKofA==
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=TgK3/fqvNtzRx5ymRjoZzYE9tpcScNMsBYu5BL/usIs=;
 b=EOAu8VX+mixokUFj6lLZOeNpltJssBjS3lBgzaHh2AfKkzHj0SKu50SWqOIL8TWRwYnV/TKJHTmbw5whRgg4Q8lZRINH7jVnbRfS+Be/7LKBQH7Rm+sIZO1k8ey/uduL/RyHdxGFkNV5bS8Wth8MZ542XpHO40V7gEPx6QVS5F7cnfOc19z+1SgAo1uaa0N7PrJ94fQeK37biQ8y94JLzGQoWZv0AgSes6WDyQuNfYovT5qGKYLSQUCUIXYDhY8+LrW1TVBi2O9dl+7Z7zADJEdd8PBGAXsLiOlObYP6P2LNDkhywp+nt1ohXXSnRZo6hxuYzdI6JKuuOIYNZqSSYA==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=lists.xenproject.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)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=TgK3/fqvNtzRx5ymRjoZzYE9tpcScNMsBYu5BL/usIs=;
 b=SjUPaif9K69StO2gB4HyqMW4PUNnu7yXDSZz/rtl6244oqQfR2THzgdM1Qikpk06BWTJbgo85yEhkrlt8VHzje+wn2tDrwmpa/vM/TbqtYqzxjxzB99ZF7uSmc8Ei/n7DZ1TG5kM86u+hqly1FyXYAtJOchmY3PLBCeoLE5QzQY=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C
Message-ID: <8259a7f9-3e90-449c-9ca2-cd5dd013dbcc@amd.com>
Date: Tue, 16 Jan 2024 22:03:04 -0500
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v12 14/15] xen/arm: vpci: permit access to guest vpci
 space
Content-Language: en-US
To: <xen-devel@lists.xenproject.org>
References: <20240109215145.430207-1-stewart.hildebrand@amd.com>
 <20240109215145.430207-15-stewart.hildebrand@amd.com>
From: Stewart Hildebrand <stewart.hildebrand@amd.com>
In-Reply-To: <20240109215145.430207-15-stewart.hildebrand@amd.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 7bit
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: SN1PEPF0002636D:EE_|DM4PR12MB5817:EE_
X-MS-Office365-Filtering-Correlation-Id: e568565b-7c9b-409e-7011-08dc1708d433
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam: BCL:0;
X-Microsoft-Antispam-Message-Info:
	nQKPQYPev0OyXAr/FZTtYUTGTYefVh3ooQll40EUZmrs+Ur+B6oq5LcJLlyxQlAN1G7ED6MUb7326J0/NgcOufgjhj6YFfu88kUgbI2LNHak+aVLHS686nynAssB84pn3gV8+2Mnj57FbbtJDIsSL4O1X2bNoRJWQRWpFl+Kf44KjDLVu9qj6JMIkzrF5fm599de1DXpePwSB9EXbRykEa2mohN0lr3h5IelYMoI7/ZxiQGxZ4YoKBps6bv6VJ87aNcHMXShyOnLdYkUm7SQ5pEqsPHqkxnSmXt3dBH/T0epDLEOO4sXfoUULO725qXeQ8SO5OHneDj6RSaZerCX+hoRcC1IzO5ZNrAghMJzljvTSWv0tVKHHkRr+ckaUPWlQWuCK7I4zACvNR38tQzsiy5lpdlxVRC1Nxhz6dhbc98YmFNBGzFW3nen650OaiWi2SyTvLY9vS0octvDNx1p4XYbO5UqXz0QLlQ1fZ6SzPtGqUTCsW1Lbzlr4UjgJ7a98H94nolJQdJc+eRX97MXmIhjHKPjx9R2clrM0XH5qEmwJBDNJ9mc3KYaKuqmwxy60O9mn7APqKT+qI4rabBpvX1+1ZWFapElj9lSLg8OMXl/I2aLNj4k3ePObrSohFMwTX7PJ9pzOMIpKYmS3gGeYoGOsSKZ3ytVIgflYGHOzpx2J4SEggSW2Bz662DxEVJecDxcTDuvsa6lQeoVkzOGRAuIQWRIK+n6iSV/S2781Z+SDqOO18GnkptHo+hel0C+NXCElyYcq/XAWNtrrxB9H7qajkC39GimHZrs0QKRiyFalWl0UrM38f/n8H0HCXCa
X-Forefront-Antispam-Report:
	CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230031)(4636009)(396003)(346002)(39860400002)(136003)(376002)(230922051799003)(1800799012)(64100799003)(186009)(82310400011)(451199024)(46966006)(40470700004)(36840700001)(31686004)(40480700001)(40460700003)(53546011)(47076005)(83380400001)(44832011)(6916009)(316002)(478600001)(70586007)(2616005)(70206006)(26005)(336012)(8676002)(8936002)(426003)(82740400003)(16576012)(81166007)(356005)(36860700001)(2906002)(5660300002)(41300700001)(36756003)(4744005)(86362001)(31696002)(43740500002)(36900700001);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Jan 2024 03:03:06.6460
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: e568565b-7c9b-409e-7011-08dc1708d433
X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com]
X-MS-Exchange-CrossTenant-AuthSource:
	SN1PEPF0002636D.namprd02.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM4PR12MB5817

On 1/9/24 16:51, Stewart Hildebrand wrote:
> Move iomem_caps initialization earlier (before arch_domain_create()).
> 
> Signed-off-by: Stewart Hildebrand <stewart.hildebrand@amd.com>

Since the iomem_access_permitted() check over in ("vpci/header: program p2m with guest BAR view") was changed to use MFNs (it used GFNs in an earlier rev) this whole patch should be dropped. The toolstack already does what this patch was trying to do with XEN_DOMCTL_iomem_permission.


From xen-devel-bounces@lists.xenproject.org Wed Jan 17 05:58:03 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 17 Jan 2024 05:58:03 +0000
Received: from list by lists.xenproject.org with outflank-mailman.668234.1040275 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPyvq-0005w8-FF; Wed, 17 Jan 2024 05:57:46 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 668234.1040275; Wed, 17 Jan 2024 05:57:46 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPyvq-0005w1-BR; Wed, 17 Jan 2024 05:57:46 +0000
Received: by outflank-mailman (input) for mailman id 668234;
 Wed, 17 Jan 2024 05:57:44 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rPyvo-0005qq-B2; Wed, 17 Jan 2024 05:57:44 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rPyvo-0007w8-9N; Wed, 17 Jan 2024 05:57:44 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rPyvn-0001K5-R3; Wed, 17 Jan 2024 05:57:43 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rPyvn-0006tj-QU; Wed, 17 Jan 2024 05:57:43 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=JosaXTW3wLzIBDWfJ6ZIuqqwBzAEx+3Fke1Fm58MNN8=; b=Tjg2CGeRlAY0rU6v6zPgK0LqkY
	XJn9uF27dHrxq7ZaXzG5VdmhXtBUIB2sytUhjIol+InCLkYZzbKg1ZLQdni+qioxXkkfGqI3GEWvg
	ABd8LOKEmbG1QJYj/JtF0CfLOHqBgwwBXHjum2kyvtw/rNwVR+4pRUMqE721jtaAj3Jw=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184370-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [linux-5.4 test] 184370: regressions - FAIL
X-Osstest-Failures:
    linux-5.4:build-amd64-pvops:kernel-build:fail:regression
    linux-5.4:test-amd64-coresched-amd64-xl:build-check(1):blocked:nonblocking
    linux-5.4:test-amd64-amd64-xl-xsm:build-check(1):blocked:nonblocking
    linux-5.4:test-amd64-amd64-xl-shadow:build-check(1):blocked:nonblocking
    linux-5.4:test-amd64-amd64-xl-rtds:build-check(1):blocked:nonblocking
    linux-5.4:test-amd64-amd64-xl-qemuu-ws16-amd64:build-check(1):blocked:nonblocking
    linux-5.4:test-amd64-amd64-xl-qemuu-win7-amd64:build-check(1):blocked:nonblocking
    linux-5.4:test-amd64-amd64-xl-qemuu-ovmf-amd64:build-check(1):blocked:nonblocking
    linux-5.4:test-amd64-amd64-xl-qemuu-dmrestrict-amd64-dmrestrict:build-check(1):blocked:nonblocking
    linux-5.4:test-amd64-amd64-xl-qemuu-debianhvm-i386-xsm:build-check(1):blocked:nonblocking
    linux-5.4:test-amd64-amd64-xl-qemuu-debianhvm-amd64-shadow:build-check(1):blocked:nonblocking
    linux-5.4:test-amd64-amd64-xl-qemuu-debianhvm-amd64:build-check(1):blocked:nonblocking
    linux-5.4:test-amd64-amd64-xl-qemut-ws16-amd64:build-check(1):blocked:nonblocking
    linux-5.4:test-amd64-amd64-xl-qemut-win7-amd64:build-check(1):blocked:nonblocking
    linux-5.4:test-amd64-amd64-xl-qemut-stubdom-debianhvm-amd64-xsm:build-check(1):blocked:nonblocking
    linux-5.4:test-amd64-amd64-xl-qemut-debianhvm-i386-xsm:build-check(1):blocked:nonblocking
    linux-5.4:test-amd64-amd64-xl-qemut-debianhvm-amd64:build-check(1):blocked:nonblocking
    linux-5.4:test-amd64-amd64-xl-qcow2:build-check(1):blocked:nonblocking
    linux-5.4:test-amd64-amd64-dom0pvh-xl-amd:build-check(1):blocked:nonblocking
    linux-5.4:test-amd64-amd64-xl-pvshim:build-check(1):blocked:nonblocking
    linux-5.4:test-amd64-amd64-dom0pvh-xl-intel:build-check(1):blocked:nonblocking
    linux-5.4:test-amd64-amd64-xl-pvhv2-intel:build-check(1):blocked:nonblocking
    linux-5.4:test-amd64-amd64-examine:build-check(1):blocked:nonblocking
    linux-5.4:test-amd64-amd64-examine-bios:build-check(1):blocked:nonblocking
    linux-5.4:test-amd64-amd64-examine-uefi:build-check(1):blocked:nonblocking
    linux-5.4:test-amd64-amd64-xl-pvhv2-amd:build-check(1):blocked:nonblocking
    linux-5.4:test-amd64-amd64-libvirt:build-check(1):blocked:nonblocking
    linux-5.4:test-amd64-amd64-libvirt-pair:build-check(1):blocked:nonblocking
    linux-5.4:test-amd64-amd64-xl-multivcpu:build-check(1):blocked:nonblocking
    linux-5.4:test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm:build-check(1):blocked:nonblocking
    linux-5.4:test-amd64-amd64-libvirt-vhd:build-check(1):blocked:nonblocking
    linux-5.4:test-amd64-amd64-xl-credit2:build-check(1):blocked:nonblocking
    linux-5.4:test-amd64-amd64-libvirt-xsm:build-check(1):blocked:nonblocking
    linux-5.4:test-amd64-amd64-pair:build-check(1):blocked:nonblocking
    linux-5.4:test-amd64-amd64-xl-credit1:build-check(1):blocked:nonblocking
    linux-5.4:test-amd64-amd64-pygrub:build-check(1):blocked:nonblocking
    linux-5.4:test-amd64-amd64-qemuu-freebsd11-amd64:build-check(1):blocked:nonblocking
    linux-5.4:test-amd64-amd64-xl:build-check(1):blocked:nonblocking
    linux-5.4:test-amd64-amd64-qemuu-freebsd12-amd64:build-check(1):blocked:nonblocking
    linux-5.4:test-amd64-amd64-qemuu-nested-amd:build-check(1):blocked:nonblocking
    linux-5.4:test-amd64-amd64-qemuu-nested-intel:build-check(1):blocked:nonblocking
    linux-5.4:test-armhf-armhf-xl-credit1:guest-start:fail:nonblocking
    linux-5.4:test-arm64-arm64-libvirt-raw:guest-start/debian.repeat:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-multivcpu:guest-start/debian.repeat:fail:nonblocking
    linux-5.4:test-armhf-armhf-libvirt:saverestore-support-check:fail:nonblocking
    linux-5.4:test-amd64-i386-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    linux-5.4:test-amd64-i386-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    linux-5.4:test-armhf-armhf-libvirt-qcow2:saverestore-support-check:fail:nonblocking
    linux-5.4:test-amd64-i386-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    linux-5.4:test-armhf-armhf-libvirt-raw:saverestore-support-check:fail:nonblocking
    linux-5.4:test-amd64-i386-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    linux-5.4:test-amd64-i386-xl-pvshim:guest-start:fail:nonblocking
    linux-5.4:test-amd64-i386-libvirt-xsm:migrate-support-check:fail:nonblocking
    linux-5.4:test-amd64-i386-libvirt:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-xsm:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-xsm:saverestore-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-libvirt-xsm:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl:saverestore-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-libvirt-xsm:saverestore-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-credit1:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-credit1:saverestore-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-credit2:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-credit2:saverestore-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-thunderx:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-thunderx:saverestore-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-multivcpu:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-multivcpu:saverestore-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-rtds:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-rtds:saverestore-support-check:fail:nonblocking
    linux-5.4:test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-arndale:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-arndale:saverestore-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl:saverestore-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-libvirt:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-credit2:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-credit2:saverestore-support-check:fail:nonblocking
    linux-5.4:test-amd64-i386-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-libvirt-raw:saverestore-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-vhd:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-vhd:saverestore-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-libvirt-qcow2:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-vhd:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-vhd:saverestore-support-check:fail:nonblocking
X-Osstest-Versions-This:
    linux=9153fc9664959aa6bb35915b2bbd8fbc4c762962
X-Osstest-Versions-That:
    linux=4410df70110ff5175bf7f7fdc3bae5c80f2c36d9
From: osstest service owner <osstest-admin@xenproject.org>
Date: Wed, 17 Jan 2024 05:57:43 +0000

flight 184370 linux-5.4 real [real]
http://logs.test-lab.xenproject.org/osstest/logs/184370/

Regressions :-(

Tests which did not succeed and are blocking,
including tests which could not be run:
 build-amd64-pvops             6 kernel-build             fail REGR. vs. 184339

Tests which did not succeed, but are not blocking:
 test-amd64-coresched-amd64-xl  1 build-check(1)               blocked  n/a
 test-amd64-amd64-xl-xsm       1 build-check(1)               blocked  n/a
 test-amd64-amd64-xl-shadow    1 build-check(1)               blocked  n/a
 test-amd64-amd64-xl-rtds      1 build-check(1)               blocked  n/a
 test-amd64-amd64-xl-qemuu-ws16-amd64  1 build-check(1)             blocked n/a
 test-amd64-amd64-xl-qemuu-win7-amd64  1 build-check(1)             blocked n/a
 test-amd64-amd64-xl-qemuu-ovmf-amd64  1 build-check(1)             blocked n/a
 test-amd64-amd64-xl-qemuu-dmrestrict-amd64-dmrestrict 1 build-check(1) blocked n/a
 test-amd64-amd64-xl-qemuu-debianhvm-i386-xsm  1 build-check(1)     blocked n/a
 test-amd64-amd64-xl-qemuu-debianhvm-amd64-shadow  1 build-check(1) blocked n/a
 test-amd64-amd64-xl-qemuu-debianhvm-amd64  1 build-check(1)        blocked n/a
 test-amd64-amd64-xl-qemut-ws16-amd64  1 build-check(1)             blocked n/a
 test-amd64-amd64-xl-qemut-win7-amd64  1 build-check(1)             blocked n/a
 test-amd64-amd64-xl-qemut-stubdom-debianhvm-amd64-xsm 1 build-check(1) blocked n/a
 test-amd64-amd64-xl-qemut-debianhvm-i386-xsm  1 build-check(1)     blocked n/a
 test-amd64-amd64-xl-qemut-debianhvm-amd64  1 build-check(1)        blocked n/a
 test-amd64-amd64-xl-qcow2     1 build-check(1)               blocked  n/a
 test-amd64-amd64-dom0pvh-xl-amd  1 build-check(1)               blocked  n/a
 test-amd64-amd64-xl-pvshim    1 build-check(1)               blocked  n/a
 test-amd64-amd64-dom0pvh-xl-intel  1 build-check(1)               blocked  n/a
 test-amd64-amd64-xl-pvhv2-intel  1 build-check(1)               blocked  n/a
 test-amd64-amd64-examine      1 build-check(1)               blocked  n/a
 test-amd64-amd64-examine-bios  1 build-check(1)               blocked  n/a
 test-amd64-amd64-examine-uefi  1 build-check(1)               blocked  n/a
 test-amd64-amd64-xl-pvhv2-amd  1 build-check(1)               blocked  n/a
 test-amd64-amd64-libvirt      1 build-check(1)               blocked  n/a
 test-amd64-amd64-libvirt-pair  1 build-check(1)               blocked  n/a
 test-amd64-amd64-xl-multivcpu  1 build-check(1)               blocked  n/a
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm 1 build-check(1) blocked n/a
 test-amd64-amd64-libvirt-vhd  1 build-check(1)               blocked  n/a
 test-amd64-amd64-xl-credit2   1 build-check(1)               blocked  n/a
 test-amd64-amd64-libvirt-xsm  1 build-check(1)               blocked  n/a
 test-amd64-amd64-pair         1 build-check(1)               blocked  n/a
 test-amd64-amd64-xl-credit1   1 build-check(1)               blocked  n/a
 test-amd64-amd64-pygrub       1 build-check(1)               blocked  n/a
 test-amd64-amd64-qemuu-freebsd11-amd64  1 build-check(1)           blocked n/a
 test-amd64-amd64-xl           1 build-check(1)               blocked  n/a
 test-amd64-amd64-qemuu-freebsd12-amd64  1 build-check(1)           blocked n/a
 test-amd64-amd64-qemuu-nested-amd  1 build-check(1)               blocked  n/a
 test-amd64-amd64-qemuu-nested-intel  1 build-check(1)              blocked n/a
 test-armhf-armhf-xl-credit1  14 guest-start                  fail  like 184327
 test-arm64-arm64-libvirt-raw 17 guest-start/debian.repeat    fail  like 184327
 test-armhf-armhf-xl-multivcpu 18 guest-start/debian.repeat    fail like 184334
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 184339
 test-amd64-i386-xl-qemut-win7-amd64 19 guest-stop             fail like 184339
 test-amd64-i386-xl-qemuu-win7-amd64 19 guest-stop             fail like 184339
 test-armhf-armhf-libvirt-qcow2 15 saverestore-support-check   fail like 184339
 test-amd64-i386-xl-qemut-ws16-amd64 19 guest-stop             fail like 184339
 test-armhf-armhf-libvirt-raw 15 saverestore-support-check    fail  like 184339
 test-amd64-i386-xl-qemuu-ws16-amd64 19 guest-stop             fail like 184339
 test-amd64-i386-xl-pvshim    14 guest-start                  fail   never pass
 test-amd64-i386-libvirt-xsm  15 migrate-support-check        fail   never pass
 test-amd64-i386-libvirt      15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-xsm      15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-xsm      16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl          15 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl          16 saverestore-support-check    fail   never pass
 test-arm64-arm64-libvirt-xsm 16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-credit1  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit1  16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-credit2  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit2  16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-thunderx 15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-thunderx 16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-multivcpu 15 migrate-support-check        fail  never pass
 test-armhf-armhf-xl-multivcpu 16 saverestore-support-check    fail  never pass
 test-armhf-armhf-xl-rtds     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-rtds     16 saverestore-support-check    fail   never pass
 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-armhf-armhf-xl-arndale  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-arndale  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl          15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          16 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit2  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit2  16 saverestore-support-check    fail   never pass
 test-amd64-i386-libvirt-raw  14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 15 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-vhd      14 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-vhd      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-qcow2 14 migrate-support-check        fail never pass
 test-armhf-armhf-libvirt-raw 14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      15 saverestore-support-check    fail   never pass

version targeted for testing:
 linux                9153fc9664959aa6bb35915b2bbd8fbc4c762962
baseline version:
 linux                4410df70110ff5175bf7f7fdc3bae5c80f2c36d9

Last test of basis   184339  2024-01-13 06:35:35 Z    3 days
Testing same since   184362  2024-01-15 17:43:08 Z    1 days    2 attempts

------------------------------------------------------------
People who touched revisions under test:
  Adrian Cinal <adriancinal1@gmail.com>
  Adrian Cinal <adriancinal@gmail.com>
  Aleksandr Loktionov <aleksandr.loktionov@intel.com>
  Amit Pundir <amit.pundir@linaro.org>
  Andrea Mayer <andrea.mayer@uniroma2.it>
  Andrew Morton <akpm@linux-foundation.org>
  Andrii Staikov <andrii.staikov@intel.com>
  Arnd Bergmann <arnd@arndb.de>
  Bartosz Pawlowski <bartosz.pawlowski@intel.com>
  Benjamin Bara <benjamin.bara@skidata.com>
  Bharathi Sreenivas <bharathi.sreenivas@intel.com>
  Bjorn Helgaas <bhelgaas@google.com>
  Chen Ni <nichen@iscas.ac.cn>
  Christophe JAILLET <christophe.jaillet@wanadoo.fr>
  David S. Miller <davem@davemloft.net>
  Ding Hui <dinghui@sangfor.com.cn>
  Dinghao Liu <dinghao.liu@zju.edu.cn>
  Doug Berger <opendmb@gmail.com>
  Douglas Anderson <dianders@chromium.org>
  Eric Dumazet <edumazet@google.com>
  Florian Fainelli <florian.fainelli@broadcom.com>
  Geert Uytterhoeven <geert+renesas@glider.be>
  Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  Hangyu Hua <hbh25y@gmail.com>
  Harshit Mogalapalli <harshit.m.mogalapalli@oracle.com>
  Jakub Kicinski <kuba@kernel.org>
  Jamal Hadi Salim <jhs@mojatatu.com>
  Jerome Brunet <jbrunet@baylibre.com>
  Jiajun Xie <jiajun.xie.sh@gmail.com>
  John Fastabend <john.fastabend@gmail.com>
  Jon Hunter <jonathanh@nvidia.com>
  Jon Maxwell <jmaxwell37@gmail.com>
  Jorge Ramirez-Ortiz <jorge@foundries.io>
  Kalle Valo <kvalo@codeaurora.org>
  Karen Ostrowska <karen.ostrowska@intel.com>
  Ke Xiao <xiaoke@sangfor.com.cn>
  Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
  Linux Kernel Functional Testing <lkft@linaro.org>
  Marc Dionne <marc.dionne@auristor.com>
  Marc Kleine-Budde <mkl@pengutronix.de>
  Mark Brown <broonie@kernel.org>
  Mateusz Palczewski <mateusz.palczewski@intel.com>
  Matthew Wilcox (Oracle) <willy@infradead.org>
  Michael Chan <michael.chan@broadcom.com>
  Michael Walle <mwalle@kernel.org>
  Oliver Hartkopp <socketcan@hartkopp.net>
  Pablo Neira Ayuso <pablo@netfilter.org>
  Phil Sutter <phil@nwl.cc>
  Pucha Himasekhar Reddy <himasekharx.reddy.pucha@intel.com> (A Contingent worker at Intel)
  Rafal Romanowski <rafal.romanowski@intel.com>
  Rakesh Pillai <pillair@codeaurora.org>
  Sasha Levin <sashal@kernel.org>
  Siddh Raman Pant <code@siddh.me>
  Stefan Wahren <wahrenst@gmx.net>
  Sudheer Mogilappagari <sudheer.mogilappagari@intel.com>
  Suraj Jitindar Singh <surajjs@amazon.com>
  Takashi Sakamoto <o-takashi@sakamocchi.jp>
  Thomas Lange <thomas@corelatus.se>
  Tony Nguyen <anthony.l.nguyen@intel.com>
  Tor Vic <torvic9@mailbox.org>
  Ulf Hansson <ulf.hansson@linaro.org>
  Vadim Fedorenko <vadfed@meta.com>
  Wenchao Chen <wenchao.chen@unisoc.com>
  Wolfram Sang <wsa@kernel.org>

jobs:
 build-amd64-xsm                                              pass    
 build-arm64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64                                                  pass    
 build-arm64                                                  pass    
 build-armhf                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-arm64-libvirt                                          pass    
 build-armhf-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-pvops                                            fail    
 build-arm64-pvops                                            pass    
 build-armhf-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-amd64-amd64-xl                                          blocked 
 test-amd64-coresched-amd64-xl                                blocked 
 test-arm64-arm64-xl                                          pass    
 test-armhf-armhf-xl                                          pass    
 test-amd64-i386-xl                                           pass    
 test-amd64-coresched-i386-xl                                 pass    
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm           blocked 
 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm            pass    
 test-amd64-amd64-xl-qemut-stubdom-debianhvm-amd64-xsm        blocked 
 test-amd64-i386-xl-qemut-stubdom-debianhvm-amd64-xsm         pass    
 test-amd64-amd64-xl-qemut-debianhvm-i386-xsm                 blocked 
 test-amd64-i386-xl-qemut-debianhvm-i386-xsm                  pass    
 test-amd64-amd64-xl-qemuu-debianhvm-i386-xsm                 blocked 
 test-amd64-i386-xl-qemuu-debianhvm-i386-xsm                  pass    
 test-amd64-amd64-libvirt-xsm                                 blocked 
 test-arm64-arm64-libvirt-xsm                                 pass    
 test-amd64-i386-libvirt-xsm                                  pass    
 test-amd64-amd64-xl-xsm                                      blocked 
 test-arm64-arm64-xl-xsm                                      pass    
 test-amd64-i386-xl-xsm                                       pass    
 test-amd64-amd64-qemuu-nested-amd                            blocked 
 test-amd64-amd64-xl-pvhv2-amd                                blocked 
 test-amd64-i386-qemut-rhel6hvm-amd                           pass    
 test-amd64-i386-qemuu-rhel6hvm-amd                           pass    
 test-amd64-amd64-dom0pvh-xl-amd                              blocked 
 test-amd64-amd64-xl-qemut-debianhvm-amd64                    blocked 
 test-amd64-i386-xl-qemut-debianhvm-amd64                     pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64                    blocked 
 test-amd64-i386-xl-qemuu-debianhvm-amd64                     pass    
 test-amd64-i386-freebsd10-amd64                              pass    
 test-amd64-amd64-qemuu-freebsd11-amd64                       blocked 
 test-amd64-amd64-qemuu-freebsd12-amd64                       blocked 
 test-amd64-amd64-xl-qemuu-ovmf-amd64                         blocked 
 test-amd64-i386-xl-qemuu-ovmf-amd64                          pass    
 test-amd64-amd64-xl-qemut-win7-amd64                         blocked 
 test-amd64-i386-xl-qemut-win7-amd64                          fail    
 test-amd64-amd64-xl-qemuu-win7-amd64                         blocked 
 test-amd64-i386-xl-qemuu-win7-amd64                          fail    
 test-amd64-amd64-xl-qemut-ws16-amd64                         blocked 
 test-amd64-i386-xl-qemut-ws16-amd64                          fail    
 test-amd64-amd64-xl-qemuu-ws16-amd64                         blocked 
 test-amd64-i386-xl-qemuu-ws16-amd64                          fail    
 test-armhf-armhf-xl-arndale                                  pass    
 test-amd64-amd64-examine-bios                                blocked 
 test-amd64-i386-examine-bios                                 pass    
 test-amd64-amd64-xl-credit1                                  blocked 
 test-arm64-arm64-xl-credit1                                  pass    
 test-armhf-armhf-xl-credit1                                  fail    
 test-amd64-amd64-xl-credit2                                  blocked 
 test-arm64-arm64-xl-credit2                                  pass    
 test-armhf-armhf-xl-credit2                                  pass    
 test-amd64-amd64-xl-qemuu-dmrestrict-amd64-dmrestrict        blocked 
 test-amd64-i386-xl-qemuu-dmrestrict-amd64-dmrestrict         pass    
 test-amd64-amd64-examine                                     blocked 
 test-arm64-arm64-examine                                     pass    
 test-armhf-armhf-examine                                     pass    
 test-amd64-i386-examine                                      pass    
 test-amd64-i386-freebsd10-i386                               pass    
 test-amd64-amd64-qemuu-nested-intel                          blocked 
 test-amd64-amd64-xl-pvhv2-intel                              blocked 
 test-amd64-i386-qemut-rhel6hvm-intel                         pass    
 test-amd64-i386-qemuu-rhel6hvm-intel                         pass    
 test-amd64-amd64-dom0pvh-xl-intel                            blocked 
 test-amd64-amd64-libvirt                                     blocked 
 test-armhf-armhf-libvirt                                     pass    
 test-amd64-i386-libvirt                                      pass    
 test-amd64-amd64-xl-multivcpu                                blocked 
 test-armhf-armhf-xl-multivcpu                                fail    
 test-amd64-amd64-pair                                        blocked 
 test-amd64-i386-pair                                         pass    
 test-amd64-amd64-libvirt-pair                                blocked 
 test-amd64-i386-libvirt-pair                                 pass    
 test-amd64-amd64-xl-pvshim                                   blocked 
 test-amd64-i386-xl-pvshim                                    fail    
 test-amd64-amd64-pygrub                                      blocked 
 test-armhf-armhf-libvirt-qcow2                               pass    
 test-amd64-amd64-xl-qcow2                                    blocked 
 test-arm64-arm64-libvirt-raw                                 fail    
 test-armhf-armhf-libvirt-raw                                 pass    
 test-amd64-i386-libvirt-raw                                  pass    
 test-amd64-amd64-xl-rtds                                     blocked 
 test-armhf-armhf-xl-rtds                                     pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64-shadow             blocked 
 test-amd64-i386-xl-qemuu-debianhvm-amd64-shadow              pass    
 test-amd64-amd64-xl-shadow                                   blocked 
 test-amd64-i386-xl-shadow                                    pass    
 test-arm64-arm64-xl-thunderx                                 pass    
 test-amd64-amd64-examine-uefi                                blocked 
 test-amd64-i386-examine-uefi                                 pass    
 test-amd64-amd64-libvirt-vhd                                 blocked 
 test-arm64-arm64-xl-vhd                                      pass    
 test-armhf-armhf-xl-vhd                                      pass    
 test-amd64-i386-xl-vhd                                       pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Not pushing.

(No revision log; it would be 1379 lines long.)


From xen-devel-bounces@lists.xenproject.org Wed Jan 17 06:12:52 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 17 Jan 2024 06:12:52 +0000
Received: from list by lists.xenproject.org with outflank-mailman.668242.1040285 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPzAM-0002p4-QV; Wed, 17 Jan 2024 06:12:46 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 668242.1040285; Wed, 17 Jan 2024 06:12:46 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rPzAM-0002ox-LX; Wed, 17 Jan 2024 06:12:46 +0000
Received: by outflank-mailman (input) for mailman id 668242;
 Wed, 17 Jan 2024 06:12:44 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=U1SL=I3=gmail.com=simonpatp@srs-se1.protection.inumbo.net>)
 id 1rPzAK-0002oo-OQ
 for xen-devel@lists.xenproject.org; Wed, 17 Jan 2024 06:12:44 +0000
Received: from mail-lj1-x22e.google.com (mail-lj1-x22e.google.com
 [2a00:1450:4864:20::22e])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 6c816309-b4ff-11ee-9b0f-b553b5be7939;
 Wed, 17 Jan 2024 07:12:42 +0100 (CET)
Received: by mail-lj1-x22e.google.com with SMTP id
 38308e7fff4ca-2cddf596321so16160161fa.0
 for <xen-devel@lists.xenproject.org>; Tue, 16 Jan 2024 22:12:42 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 6c816309-b4ff-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1705471962; x=1706076762; darn=lists.xenproject.org;
        h=cc:to:subject:message-id:date:from:in-reply-to:references
         :mime-version:from:to:cc:subject:date:message-id:reply-to;
        bh=+Wzitacmlpqu4h9AJBfhSPZE45fuDpcnpe1j8XVCyFo=;
        b=jgMeVN6AWpPtlIRaeBBNhoY5oWEAEt6nweu/ILWfd2o5/aHp7ds5y3a6bp3ncDQytH
         15kWJ8qKI7XXuRDhJ3XQSyz4cKkQTgRRx3mZCXfCZu+TRxM8YRwyOiTIQ2JJ3NV3smPT
         A4KoeJp5cJYycVEaE27GCQgMyDJsfrZ4CYK6eNhXAI9gUL3jLZ9e6h/bw5efHDZYhJCf
         ZcjAeILzYmPRo59UhuQ+8gB59tWmcPTYAuHMh8d0tT8mVJ/I/JMv/3tthiGM2qBmqzmW
         IU280zvA+WlgtOGCjlcDmtJYjmQoiIwAlqzcVyBbSq8Vtk/Popqzx0tEVMgkM04rrUqL
         lwSg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705471962; x=1706076762;
        h=cc:to:subject:message-id:date:from:in-reply-to:references
         :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id
         :reply-to;
        bh=+Wzitacmlpqu4h9AJBfhSPZE45fuDpcnpe1j8XVCyFo=;
        b=uNwuIPtfxxAySGz3M4DErzVaz2S51sWtXS4DEdWIPPuqi2pNCDmtnYcNMZQU4h42g6
         Oy65YNOBw1X8dK3D2gpEzd8aj+CrrOuEZxEcnd7oAca+8oIVcVKk1Zj7WOfX+iIF9b03
         gaq0S4DfVXhbYa0lbXqHc145Zmgk/FQMTTxD6tk16TSg7BeH7IHSKuk/9Ce86ffPQRv2
         l+PHxRwjnBTyha/wKRlcYRKpj9mBIFyFL7Pa4g+jwuwpDlpD1QcTpvnqzgIg++UNbuM2
         ALpQy5ST/Q//XncECq+QbIWecPjiaGcAOSD35mUP+SAIXeuzRzRuENy8CKrwxRRHBwC1
         tZyg==
X-Gm-Message-State: AOJu0Yzgg92itzRO4bw7isQUgKUlNhryNHWxx5K0WxoYDa47Eq+1PCsA
	sYM9ulo6S9Gq4zx1Uxwdr32mIxlZac3IhThiWQfdxFyJs38=
X-Google-Smtp-Source: AGHT+IE0IFA1zuHsS9YbZTjlRK5sFdelCEHC6XxLohH5nZ7WhM2kwdJUTom/+i5OeCk/FaNBVj6IF7oUPbbPSRo/3FM=
X-Received: by 2002:a2e:9b51:0:b0:2cc:ddb9:e458 with SMTP id
 o17-20020a2e9b51000000b002ccddb9e458mr3719336ljj.28.1705471961727; Tue, 16
 Jan 2024 22:12:41 -0800 (PST)
MIME-Version: 1.0
References: <CAOCpoWdOH=xGxiQSC1c5Ueb1THxAjH4WiZbCZq-QT+d_KAk3SA@mail.gmail.com>
 <1708c3d7-662a-44bc-b9b3-4ab9f8642d7b@suse.com> <dcaf9d8d-ad5a-4714-936b-79ed0e587f9d@suse.com>
 <CAOCpoWeowZPuQTeBp9nu8p8CDtE=u++wN_UqRoABZtB57D50Qw@mail.gmail.com> <ac742d12-ec91-4215-bb42-82a145924b4f@suse.com>
In-Reply-To: <ac742d12-ec91-4215-bb42-82a145924b4f@suse.com>
From: Patrick Plenefisch <simonpatp@gmail.com>
Date: Wed, 17 Jan 2024 01:12:30 -0500
Message-ID: <CAOCpoWfQmkhN3hms1xuotSUZzVzR99i9cNGGU2r=yD5PjysMiQ@mail.gmail.com>
Subject: Re: E820 memory allocation issue on Threadripper platforms
To: Jan Beulich <jbeulich@suse.com>
Cc: xen-devel@lists.xenproject.org, Juergen Gross <jgross@suse.com>
Content-Type: multipart/alternative; boundary="0000000000007407da060f1e2218"

--0000000000007407da060f1e2218
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

On Tue, Jan 16, 2024 at 4:33=E2=80=AFAM Jan Beulich <jbeulich@suse.com> wro=
te:

> On 16.01.2024 01:22, Patrick Plenefisch wrote:
> > I managed to set up serial access and saved the output with the request=
ed
> > flags as the attached logs
>
> Thanks. While you didn't ...
>
>
> ... fiddle with the Linux message,  ...
>

I last built the kernel over a decade ago, and so was hoping to not have to
look up how to do that again, but I can research how to go about that again
if it would help?


>
> ... as per
>
> (XEN)  Dom0 kernel: 64-bit, PAE, lsb, paddr 0x1000000 -> 0x4a00000
>
> there's an overlap with not exactly a hole, but with an
> EfiACPIMemoryNVS region:
>
> (XEN)  0000000100000-0000003159fff type=3D2 attr=3D000000000000000f
> (XEN)  000000315a000-0000003ffffff type=3D7 attr=3D000000000000000f
> (XEN)  0000004000000-0000004045fff type=3D10 attr=3D000000000000000f
> (XEN)  0000004046000-0000009afefff type=3D7 attr=3D000000000000000f
>
> (the 3rd of the 4 lines). Considering there's another region higher
> up:
>
> (XEN)  00000a747f000-00000a947efff type=3D10 attr=3D000000000000000f
>
> I'm inclined to say it is poor firmware (or, far less likely, boot
> loader) behavior to clobber a rather low and entirely arbitrary RAM
>

Bootloader is Grub 2.06 EFI platform as packaged by Debian 12



> range, rather than consolidating all such regions near the top of
> RAM below 4Gb. There are further such odd regions, btw:
>
> (XEN)  0000009aff000-0000009ffffff type=3D0 attr=3D000000000000000f
> ...
> (XEN)  000000b000000-000000b020fff type=3D0 attr=3D000000000000000f
>
> If the kernel image was sufficiently much larger, these could become
> a problem as well. Otoh if the kernel wasn't built with
> CONFIG_PHYSICAL_START=3D0x1000000, i.e. to start at 16Mb, but at, say,
> 2Mb, things should apparently work even with this unusual memory
> layout (until the kernel would grow enough to again run into that
> very region).
>

I'm currently talking to the vendor's support team and testing a beta BIOS
for unrelated reasons, is there something specific I should forward to
them, either as a question or as a request for a fix?

As someone who hasn't built a kernel in over a decade, should I figure out
how to do a kernel build with CONFIG_PHYSICAL_START=3D0x2000000 and report
back?


> It remains to be seen in how far it is reasonably possible to work
> around this in the kernel. While (sadly) still unsupported, in the
> meantime you may want to consider running Dom0 in PVH mode.
>

I tried this by adding dom0=3Dpvh, and instead got this boot error:

(XEN) xenoprof: Initialization failed. AMD processor family 25 is not
supported
(XEN) NX (Execute Disable) protection active
(XEN) Dom0 has maximum 1400 PIRQs
(XEN) *** Building a PVH Dom0 ***
(XEN) Failed to load kernel: -1
(XEN) Xen dom0 kernel broken ELF: <NULL>
(XEN) Failed to load Dom0 kernel
(XEN)
(XEN) ****************************************
(XEN) Panic on CPU 0:
(XEN) Could not construct domain 0
(XEN) ****************************************
(XEN)
(XEN) Reboot in five seconds...




>
> Jan
>

--0000000000007407da060f1e2218
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><div dir=3D"ltr"><br></div><br><div class=3D"gmail_quote">=
<div dir=3D"ltr" class=3D"gmail_attr">On Tue, Jan 16, 2024 at 4:33=E2=80=AF=
AM Jan Beulich &lt;<a href=3D"mailto:jbeulich@suse.com">jbeulich@suse.com</=
a>&gt; wrote:<br></div><blockquote class=3D"gmail_quote" style=3D"margin:0p=
x 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">On=
 16.01.2024 01:22, Patrick Plenefisch wrote:<br>
&gt; I managed to set up serial access and saved the output with the reques=
ted<br>
&gt; flags as the attached logs<br>
<br>
Thanks. While you didn&#39;t ...<br>
<br>
<br>
... fiddle with the Linux message,=C2=A0 ... <br></blockquote><div><br></di=
v><div>I last built the kernel over a decade ago, and so was hoping to not =
have to look up how to do that again, but I can research how to go about th=
at again if it would help?<br></div><div>=C2=A0<br></div><blockquote class=
=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rg=
b(204,204,204);padding-left:1ex">
<br>
... as per<br>
<br>
(XEN)=C2=A0 Dom0 kernel: 64-bit, PAE, lsb, paddr 0x1000000 -&gt; 0x4a00000<=
br>
<br>
there&#39;s an overlap with not exactly a hole, but with an<br>
EfiACPIMemoryNVS region:<br>
<br>
(XEN)=C2=A0 0000000100000-0000003159fff type=3D2 attr=3D000000000000000f<br=
>
(XEN)=C2=A0 000000315a000-0000003ffffff type=3D7 attr=3D000000000000000f<br=
>
(XEN)=C2=A0 0000004000000-0000004045fff type=3D10 attr=3D000000000000000f<b=
r>
(XEN)=C2=A0 0000004046000-0000009afefff type=3D7 attr=3D000000000000000f<br=
>
<br>
(the 3rd of the 4 lines). Considering there&#39;s another region higher<br>
up:<br>
<br>
(XEN)=C2=A0 00000a747f000-00000a947efff type=3D10 attr=3D000000000000000f<b=
r>
<br>
I&#39;m inclined to say it is poor firmware (or, far less likely, boot<br>
loader) behavior to clobber a rather low and entirely arbitrary RAM<br></bl=
ockquote><div>=C2=A0</div><div>Bootloader is Grub 2.06 EFI platform as pack=
aged by Debian 12<br></div><div><br></div><div>=C2=A0</div><blockquote clas=
s=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid r=
gb(204,204,204);padding-left:1ex">
range, rather than consolidating all such regions near the top of<br>
RAM below 4Gb. There are further such odd regions, btw:<br>
<br>
(XEN)=C2=A0 0000009aff000-0000009ffffff type=3D0 attr=3D000000000000000f<br=
>
...<br>
(XEN)=C2=A0 000000b000000-000000b020fff type=3D0 attr=3D000000000000000f<br=
>
<br>
If the kernel image was sufficiently much larger, these could become<br>
a problem as well. Otoh if the kernel wasn&#39;t built with<br>
CONFIG_PHYSICAL_START=3D0x1000000, i.e. to start at 16Mb, but at, say,<br>
2Mb, things should apparently work even with this unusual memory<br>
layout (until the kernel would grow enough to again run into that<br>
very region).<br></blockquote><div><br></div><div>I&#39;m currently talking=
 to the vendor&#39;s support team and testing a beta BIOS for unrelated rea=
sons, is there something specific I should forward to them, either as a que=
stion or as a request for a fix?</div><div><br></div><div>As someone who ha=
sn&#39;t built a kernel in over a decade, should I figure out how to do a k=
ernel build with CONFIG_PHYSICAL_START=3D0x2000000 and report back?<br></di=
v><div><br></div><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px =
0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<br>
It remains to be seen in how far it is reasonably possible to work<br>
around this in the kernel. While (sadly) still unsupported, in the<br>
meantime you may want to consider running Dom0 in PVH mode.<br></blockquote=
><div><br></div><div>I tried this by adding dom0=3Dpvh, and instead got thi=
s boot error:<br></div><div><br></div><div>(XEN) xenoprof: Initialization f=
ailed. AMD processor family 25 is not supported<br>(XEN) NX (Execute Disabl=
e) protection active<br>(XEN) Dom0 has maximum 1400 PIRQs<br>(XEN) *** Buil=
ding a PVH Dom0 ***<br>(XEN) Failed to load kernel: -1<br>(XEN) Xen dom0 ke=
rnel broken ELF: &lt;NULL&gt;<br>(XEN) Failed to load Dom0 kernel<br>(XEN) =
<br>(XEN) ****************************************<br>(XEN) Panic on CPU 0:=
<br>(XEN) Could not construct domain 0<br>(XEN) ***************************=
*************<br>(XEN) <br>(XEN) Reboot in five seconds...</div><div><br></=
div><div><br></div><div>=C2=A0</div><blockquote class=3D"gmail_quote" style=
=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding=
-left:1ex">
<br>
Jan<br>
</blockquote></div></div>

--0000000000007407da060f1e2218--


From xen-devel-bounces@lists.xenproject.org Wed Jan 17 08:30:33 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 17 Jan 2024 08:30:33 +0000
Received: from list by lists.xenproject.org with outflank-mailman.668267.1040304 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQ1JT-0002ek-68; Wed, 17 Jan 2024 08:30:19 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 668267.1040304; Wed, 17 Jan 2024 08:30:19 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQ1JT-0002ed-2D; Wed, 17 Jan 2024 08:30:19 +0000
Received: by outflank-mailman (input) for mailman id 668267;
 Wed, 17 Jan 2024 08:30:17 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=2QPC=I3=amd.com=Michal.Orzel@srs-se1.protection.inumbo.net>)
 id 1rQ1JR-0002eX-CG
 for xen-devel@lists.xenproject.org; Wed, 17 Jan 2024 08:30:17 +0000
Received: from NAM11-BN8-obe.outbound.protection.outlook.com
 (mail-bn8nam11on20600.outbound.protection.outlook.com
 [2a01:111:f400:7eae::600])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id a3940b96-b512-11ee-98f2-6d05b1d4d9a1;
 Wed, 17 Jan 2024 09:30:15 +0100 (CET)
Received: from CYXPR02CA0083.namprd02.prod.outlook.com (2603:10b6:930:ce::18)
 by BL3PR12MB6619.namprd12.prod.outlook.com (2603:10b6:208:38e::5)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7181.28; Wed, 17 Jan
 2024 08:30:11 +0000
Received: from CY4PEPF0000E9D8.namprd05.prod.outlook.com
 (2603:10b6:930:ce:cafe::6f) by CYXPR02CA0083.outlook.office365.com
 (2603:10b6:930:ce::18) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7202.23 via Frontend
 Transport; Wed, 17 Jan 2024 08:30:11 +0000
Received: from SATLEXMB03.amd.com (165.204.84.17) by
 CY4PEPF0000E9D8.mail.protection.outlook.com (10.167.241.83) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.7181.14 via Frontend Transport; Wed, 17 Jan 2024 08:30:10 +0000
Received: from SATLEXMB06.amd.com (10.181.40.147) by SATLEXMB03.amd.com
 (10.181.40.144) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.34; Wed, 17 Jan
 2024 02:30:09 -0600
Received: from SATLEXMB04.amd.com (10.181.40.145) by SATLEXMB06.amd.com
 (10.181.40.147) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.34; Wed, 17 Jan
 2024 02:30:09 -0600
Received: from [10.252.147.188] (10.180.168.240) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server id 15.1.2507.34 via Frontend
 Transport; Wed, 17 Jan 2024 02:30:07 -0600
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: a3940b96-b512-11ee-98f2-6d05b1d4d9a1
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=hlmC72qkb2iuP/wg7osjV15YcRlXDupfcWE81hRjeNTzS9MyHZjgDfEXNYGqBGhOG/d0oa35SWeVvAn4UNkHrSfAHyoFWkv7fCNOP7v9Cb8NyGxgeqy/T6zqAStVMlImmd9a6nZKyl/tpn1L/T24dqWbYSmu2K05nopazz1Uixb/nGkhetUcqqTU6Ao3MQNAFzydgx+CYllIrcJWQXX3NW9e3O7kknmx6HBygtoO/EjlcIYx9cbrnfA5CkZo7+d8Eujg0VAHtU030x8QpnF5JaRJibwwsJt8IlNk/kD7ZX0rGjhAEM4EvmFxKgAezTrYnxgczRH7c39BtWS/jsCn+Q==
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=zexvQ98nuwYij04/6SoRcy1xqGxy1CX19dR0GVD/N/Q=;
 b=drS8A1Xibqd3j+y4KqDdH5ewHptLmySzyThXXdsOCnjd52tShxI/nyMhCIGKWMYoiX3gT9TeKnvhOEotQAc2Xd8CxdDR7wX7gzRuxtq923+d/YPNfm3XmYgw1TT2qjlN7uCqHN7JlQlah3vqs9B8zt4jBP2x4xB6Qbs2FJ6EIWI8zXvsj4jRuiOTX/3f08kY9pHa5XOEia5of4tTF27GFG0z4sP4PtOYmSLWibGci3cvhDRfR5XC36DaaOnOAInZe0Iq6LbTNaYfw7FtIQydt4vZ8qHLvlOgHUs2uygkKqc6MXZ8/uCJvN9EA1T6vPthryRk+RnLoFERfeoRbmSJCw==
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)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=zexvQ98nuwYij04/6SoRcy1xqGxy1CX19dR0GVD/N/Q=;
 b=b8hI+GE5ECAZ4MLj+hg0o5bmj0Q4zEP81Cmfr1damy1sl1gYfvP86dNabMOb+7IZP3vTmYK77eGWKvlIMktwGehwYV6Q2m9KqNxESJYcV7Y2rKDPsHHwoImIh4zov/ZlmZsoY8fgdVZmEus4w/RJpkLnkcL7JUK/nj2n9VTjV7I=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=SATLEXMB03.amd.com; pr=C
Message-ID: <6b4bfccf-4455-40c0-b6bb-c5dd7c154ac3@amd.com>
Date: Wed, 17 Jan 2024 09:30:02 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v1 repost 1/4] arm/mmu: Move init_ttbr to a new section
 .data.idmap
To: Julien Grall <julien@xen.org>, <xen-devel@lists.xenproject.org>
CC: <carlo.nonato@minervasys.tech>, Julien Grall <jgrall@amazon.com>, "Stefano
 Stabellini" <sstabellini@kernel.org>, Bertrand Marquis
	<bertrand.marquis@arm.com>, Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>
References: <20240116143709.86584-1-julien@xen.org>
 <20240116143709.86584-2-julien@xen.org>
Content-Language: en-US
From: Michal Orzel <michal.orzel@amd.com>
In-Reply-To: <20240116143709.86584-2-julien@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 7bit
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CY4PEPF0000E9D8:EE_|BL3PR12MB6619:EE_
X-MS-Office365-Filtering-Correlation-Id: a4b2890b-3f76-4765-8e63-08dc17368523
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam: BCL:0;
X-Microsoft-Antispam-Message-Info:
	O79bypX5OQcRG6CYk75XCbbKft4LkI67l30zdtM/NCtblnHiK7Rx2m2XY1/UKBPFjRaR/gzMlW71kfkrZw6Qy/FCiZf627uu4xtnj2agTeVUnto60FN3CabRXD3zPua62fNBi3czjBNTgNMmWe4fJ4MxOaG8XTtOYE4YxjzfsCzoYZQxEk3b9txUafi/R2T1o40adfYwpNNbfsPquvbeBpIi3vf2vN/2JlLKstuuvVy/Ly+CNKQfW0lYUKDg/GwIn5IKRBpG2d1MgkU6DpF54n61wDGpaCQ5nuTeVSp5jCmaDh43+cHsszleqVblmBH+0Rng2kGscYeIBLPYM1m3o8BJi+eus0yNMNmKupFLqvlqJSeHf2tVZcOy6oFj7MJe+k2nhD0P3037mxsjAD4j3nX70BSPYAXxfkJvbnDRaisGvmjaXLZ8m3rvVV03QQKwWjFc0FSCfEd+tJK7n71Y1OvMHyy2DgUpopZzd7G3Bo65EYbk+Pl85NoIB1FgNFxlpdTLFQR20WqzbU6tXfydpdviJrLGnjmjTd0haHSjIcLyFCBurHI3+6vIzWzDQ4jwyL9BOEe3k4qVJXTh2BiUaThXpkWlpO0rTCv2Uype73gN0k9ARl7U6qPwEbuX3LfgJPpXThqekxG/l3A//fGchMGhbrBv7ml+phgF90Ts/IeoLBXhndSP8l+h3Oc1NZwCedzzGBrKzweeucgbTc3T3jmQlPGHOq0HzqkNxKgyR4wGONkird0BJD+5X/sVfpEumYg+/bnBoi0XWTiMjYdBeYmx2PTUKPYSwgOBL8jXU14ymm15FkxZJV2uLZyydfpiUj0Jwo7FW4cJCnii/Ih2eA==
X-Forefront-Antispam-Report:
	CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB03.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230031)(4636009)(346002)(136003)(39860400002)(396003)(376002)(230922051799003)(64100799003)(451199024)(82310400011)(1800799012)(186009)(36840700001)(46966006)(40470700004)(6666004)(83380400001)(426003)(36860700001)(82740400003)(47076005)(2906002)(41300700001)(31696002)(86362001)(36756003)(356005)(81166007)(53546011)(54906003)(70206006)(8936002)(70586007)(316002)(16576012)(478600001)(5660300002)(336012)(4326008)(2616005)(26005)(44832011)(8676002)(110136005)(40460700003)(31686004)(40480700001)(142923001)(36900700001)(43740500002);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Jan 2024 08:30:10.8046
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: a4b2890b-3f76-4765-8e63-08dc17368523
X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB03.amd.com]
X-MS-Exchange-CrossTenant-AuthSource:
	CY4PEPF0000E9D8.namprd05.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: BL3PR12MB6619

Hi Julien,

On 16/01/2024 15:37, Julien Grall wrote:
> 
> 
> From: Julien Grall <jgrall@amazon.com>
> 
> With the upcoming work to color Xen, the binary will not be anymore
> physically contiguous. This will be a problem during boot as the
> assembly code will need to work out where each piece of Xen reside.
> 
> An easy way to solve the issue is to have all code/data accessed
> by the secondary CPUs while the MMU is off within a single page.
> 
> Right now, init_ttbr is used by secondary CPUs to find there page-tables
> before the MMU is on. Yet it is currently in .data which is unlikely
> to be within the same page as the rest of the idmap.
> 
> Create a new section .data.idmap that will be used for variables
> accessed by the early boot code. The first one is init_ttbr.
> 
> The idmap is currently part of the text section and therefore will
> be mapped read-only executable. This means that we need to temporarily
> remap init_ttbr in order to update it.
> 
> Introduce a new function set_init_ttbr() for this purpose so the code
> is not duplicated between arm64 and arm32.
> 
> Signed-off-by: Julien Grall <jgrall@amazon.com>
Reviewed-by: Michal Orzel <michal.orzel@amd.com>

with ...

> ---
>  xen/arch/arm/mmu/smpboot.c | 34 +++++++++++++++++++++++++++++-----
>  xen/arch/arm/xen.lds.S     |  1 +
>  2 files changed, 30 insertions(+), 5 deletions(-)
> 
> diff --git a/xen/arch/arm/mmu/smpboot.c b/xen/arch/arm/mmu/smpboot.c
> index b6fc0aae07f1..f1cf9252710c 100644
> --- a/xen/arch/arm/mmu/smpboot.c
> +++ b/xen/arch/arm/mmu/smpboot.c
> @@ -9,6 +9,10 @@
> 
>  #include <asm/setup.h>
> 
> +/* Override macros from asm/page.h to make them work with mfn_t */
> +#undef virt_to_mfn
> +#define virt_to_mfn(va) _mfn(__virt_to_mfn(va))
> +
>  /*
>   * Static start-of-day pagetables that we use before the allocators
>   * are up. These are used by all CPUs during bringup before switching
> @@ -44,7 +48,7 @@ DEFINE_BOOT_PAGE_TABLE(boot_second);
>  DEFINE_BOOT_PAGE_TABLES(boot_third, XEN_NR_ENTRIES(2));
> 
>  /* Non-boot CPUs use this to find the correct pagetables. */
> -uint64_t init_ttbr;
> +uint64_t __section(".data.idmap") init_ttbr;
Do we need to keep the declaration in mmu/mm.h? This variable is only used in this file
and in assembly, so maybe better to drop declaration and use asmlinkage instead?

> 
>  /* Clear a translation table and clean & invalidate the cache */
>  static void clear_table(void *table)
> @@ -68,6 +72,27 @@ static void clear_boot_pagetables(void)
>      clear_table(boot_third);
>  }
> 
> +static void set_init_ttbr(lpae_t *root)
> +{
> +    /*
> +     * init_ttbr is part of the identity mapping which is read-only. So
> +     * We need to re-map the region so it can be updated
Would you mind fixing s/So We/So we/ and add a full stop after last sentence?

> +     */
> +    void *ptr = map_domain_page(virt_to_mfn(&init_ttbr));
> +
> +    ptr += PAGE_OFFSET(&init_ttbr);
> +
> +    *(uint64_t *)ptr = virt_to_maddr(root);
> +
> +    /*
> +     * init_ttbr will be accessed with the MMU off, so ensure the update
> +     * is visible by cleaning the cache.
> +     */
> +    clean_dcache(ptr);
> +
> +    unmap_domain_page(ptr);
> +}
> +
>  #ifdef CONFIG_ARM_64
>  int prepare_secondary_mm(int cpu)
>  {
> @@ -77,8 +102,8 @@ int prepare_secondary_mm(int cpu)
>       * Set init_ttbr for this CPU coming up. All CPUs share a single setof
>       * pagetables, but rewrite it each time for consistency with 32 bit.
>       */
> -    init_ttbr = virt_to_maddr(xen_pgtable);
> -    clean_dcache(init_ttbr);
> +    set_init_ttbr(xen_pgtable);
> +
>      return 0;
>  }
>  #else
> @@ -109,8 +134,7 @@ int prepare_secondary_mm(int cpu)
>      clear_boot_pagetables();
> 
>      /* Set init_ttbr for this CPU coming up */
> -    init_ttbr = __pa(first);
> -    clean_dcache(init_ttbr);
> +    set_init_ttbr(first);
> 
>      return 0;
>  }
> diff --git a/xen/arch/arm/xen.lds.S b/xen/arch/arm/xen.lds.S
> index 20598c6963ce..470c8f22084f 100644
> --- a/xen/arch/arm/xen.lds.S
> +++ b/xen/arch/arm/xen.lds.S
> @@ -36,6 +36,7 @@ SECTIONS
>         *(.text.header)
>         *(.text.idmap)
>         *(.rodata.idmap)
> +       *(.data.idmap)
>         _idmap_end = .;
> 
>         *(.text.cold)
> --
> 2.40.1
> 

~Michal


From xen-devel-bounces@lists.xenproject.org Wed Jan 17 08:45:07 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 17 Jan 2024 08:45:07 +0000
Received: from list by lists.xenproject.org with outflank-mailman.668271.1040314 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQ1Xj-00053L-DM; Wed, 17 Jan 2024 08:45:03 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 668271.1040314; Wed, 17 Jan 2024 08:45:03 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQ1Xj-00053E-AA; Wed, 17 Jan 2024 08:45:03 +0000
Received: by outflank-mailman (input) for mailman id 668271;
 Wed, 17 Jan 2024 08:45:01 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=2QPC=I3=amd.com=Michal.Orzel@srs-se1.protection.inumbo.net>)
 id 1rQ1Xh-000538-L1
 for xen-devel@lists.xenproject.org; Wed, 17 Jan 2024 08:45:01 +0000
Received: from NAM10-DM6-obe.outbound.protection.outlook.com
 (mail-dm6nam10on2062b.outbound.protection.outlook.com
 [2a01:111:f400:7e88::62b])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id b2b550e0-b514-11ee-98f2-6d05b1d4d9a1;
 Wed, 17 Jan 2024 09:44:59 +0100 (CET)
Received: from BL1PR13CA0308.namprd13.prod.outlook.com (2603:10b6:208:2c1::13)
 by DS7PR12MB6117.namprd12.prod.outlook.com (2603:10b6:8:9b::8) with
 Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.7181.26; Wed, 17 Jan 2024 08:44:56 +0000
Received: from MN1PEPF0000F0E1.namprd04.prod.outlook.com
 (2603:10b6:208:2c1:cafe::5d) by BL1PR13CA0308.outlook.office365.com
 (2603:10b6:208:2c1::13) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7202.17 via Frontend
 Transport; Wed, 17 Jan 2024 08:44:56 +0000
Received: from SATLEXMB03.amd.com (165.204.84.17) by
 MN1PEPF0000F0E1.mail.protection.outlook.com (10.167.242.39) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.7202.16 via Frontend Transport; Wed, 17 Jan 2024 08:44:55 +0000
Received: from SATLEXMB05.amd.com (10.181.40.146) by SATLEXMB03.amd.com
 (10.181.40.144) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.34; Wed, 17 Jan
 2024 02:44:54 -0600
Received: from SATLEXMB04.amd.com (10.181.40.145) by SATLEXMB05.amd.com
 (10.181.40.146) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.34; Wed, 17 Jan
 2024 02:44:54 -0600
Received: from [10.252.147.188] (10.180.168.240) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server id 15.1.2507.34 via Frontend
 Transport; Wed, 17 Jan 2024 02:44:53 -0600
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: b2b550e0-b514-11ee-98f2-6d05b1d4d9a1
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=AsA+Rn2UZ5mFgRfQ87eLyyIJC8j6VL7rJ3lnOwThJH6gIfTzoK3dVZZSoZ+73GyrREzrzAf69S8GL5Zik8gZs3JbJtfAJ+Bx0R3ghPJT4cEEuBlYhJC6+PkLkKWsC5CYh/u+aUwmFkVwG7Zx6+Y/gMkMUI7QMAKVILM0cj2ifWuUqqFh7bScQ0rMIRQVdxG26OuTK+bTuBNJpCHIEL+P39Dgxt0vnu+IvA5LclFQW2Ym3GmOiaXmmhDGX8f9tabyH/rMUWzvf22cLeiVW0e/FXftzMXvKNCQ7J3lP0ABNKgmduOuZqeJfLC7N2tLfgKkvFNaahGwNu7uMycswyxUvg==
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=EUbtqdvo3GpJwXmE7D5yDqsLhv3XYv2VeIIcbIDtvHE=;
 b=XvR/KYYVEgEVHNth1WqXtromoVtDY2XIaQUydfrg0dj+pci14fcFce+aQLcBwhuFoXPVouoN5fEkH9lL+/QeS2qoYBJIp13JAxE+h/2OlYiaIStABSclp10EuHilFd83zrnbuRiNNTGkx3tZ+nU78uKtde1Bm3JxMGzEhzgwjVU++ht1M9Dz7MCjqX0w0ewSgJw6M2lTJAHeBW82q71bqtMgzU2PG3BaZ3O9NuZtXnOU0ru5mTYdpr9bHLnEHNgi0XlmF0ycAstKaLNbolRkSv2ZXnAe4jF6Wo+L7LkNMZaESWdcvxZ54prJ0mrLNb/HXd+XtugpZphOtINssjOFIw==
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)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=EUbtqdvo3GpJwXmE7D5yDqsLhv3XYv2VeIIcbIDtvHE=;
 b=S/Di6sRSxljcjtHbckKKR+dV16ReW0Fengcmn3PlXfHscNu+ZA/Wzis3shIa1IGYIVR6YScU9JFLpejccf1jn93rKEGvuN+ux7PJPcwtB+QUxiTbuHwnUR9joGny0L0N5E8GL/GlgpxXaMV3FIHNhIFWUEqjLVXZee92wIzmer8=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=SATLEXMB03.amd.com; pr=C
Message-ID: <c603bf7d-e38c-4ee9-87a6-cd3c75c59fad@amd.com>
Date: Wed, 17 Jan 2024 09:44:52 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v1 repost 2/4] arm/smpboot: Move smp_up_cpu to a new
 section .data.idmap
Content-Language: en-US
To: Julien Grall <julien@xen.org>, <xen-devel@lists.xenproject.org>
CC: <carlo.nonato@minervasys.tech>, Julien Grall <jgrall@amazon.com>, "Stefano
 Stabellini" <sstabellini@kernel.org>, Bertrand Marquis
	<bertrand.marquis@arm.com>, Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>
References: <20240116143709.86584-1-julien@xen.org>
 <20240116143709.86584-3-julien@xen.org>
From: Michal Orzel <michal.orzel@amd.com>
In-Reply-To: <20240116143709.86584-3-julien@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 7bit
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: MN1PEPF0000F0E1:EE_|DS7PR12MB6117:EE_
X-MS-Office365-Filtering-Correlation-Id: 782958d3-d923-40a8-326e-08dc17389429
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam: BCL:0;
X-Microsoft-Antispam-Message-Info:
	Y44yAPvY45IqhMHYU9bgVQHYlNb/RWXRHFusSwcQ0rBP0xbjwI6ZX4+MpW8eFB0LhjNLtptJ1Dr74YJCPaB1ouKNtNlWD5IcTpaeWsauEuvuq2CPgA9Fo+n6JII4SFaMv4MZgU3+yeHeHUttApsaLjKSACuHKNAjLY6leex3i/WUXIqv0fLvc2WFhkXlXQleVJz5cvW0upamNPM9N3h3LgeFVoOt+GN2ty5Ggg4HsjfuAk1ulWwtW6dg3vaEFvol85az8FTxuc/mQChoZJz/f49oF70Npbs/WnS5j2nEn8OcwHMHihIQ2WOtZq8zR9bUK4QUlw1orTm5Una9TZx+JZPfQ9Pg0pdHTJ0SqdmVgZKomsskBKKI0uX2DfDJE9LxoOOoxDNuDuNRpirjz5fJCbQ1dlLEYJ+HVZMfHj1LZ+ivrK1wAkvcdL14dEUzYNcwioJ3QFAvqi+IunXByqzYBstTQFNgHXkCd0foFkiJIH7hfKwZzBZbkXjQXNrnJaFvjDmk2Z8r11Rznl7n/aE3fjAH6fVo457LEq7e33wxv2mWdEKL4jbsj/S/X1TUYctbVTnHiR8p7HuYNIg6CzBhuR1HPy0P2Nn97IM/maL9/h3mR+q3YaLU2nz4p+zY6OIylzU3Gd5MxeXzEKSasxv1/6C2Goeb9boihpbdMenomwWu5YwJtK0vyNGXTrZNagsIhcPQa6+BBpeAkRb6fh1wsFtOslXfpwqmAk9MgJP7BtPrnzdBEIQ85eqoo4M1QIdwXg0kRm0BOETGNSQLiD0/LbotmwTkZVs0paulsihiP/OIjIojL0T/jdCxnsjTeVuo8ir9C/8h42MkofdX/GertA==
X-Forefront-Antispam-Report:
	CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB03.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230031)(4636009)(346002)(376002)(136003)(39860400002)(396003)(230922051799003)(186009)(64100799003)(451199024)(82310400011)(1800799012)(36840700001)(40470700004)(46966006)(31686004)(40460700003)(40480700001)(83380400001)(47076005)(31696002)(86362001)(2616005)(36756003)(82740400003)(356005)(81166007)(36860700001)(8676002)(5660300002)(4326008)(70206006)(8936002)(336012)(426003)(26005)(53546011)(54906003)(44832011)(70586007)(316002)(110136005)(2906002)(41300700001)(478600001)(16576012)(142923001)(36900700001)(43740500002);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Jan 2024 08:44:55.0790
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 782958d3-d923-40a8-326e-08dc17389429
X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB03.amd.com]
X-MS-Exchange-CrossTenant-AuthSource:
	MN1PEPF0000F0E1.namprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS7PR12MB6117

Hi Julien,

On 16/01/2024 15:37, Julien Grall wrote:
> 
> 
> From: Julien Grall <jgrall@amazon.com>
> 
> With the upcoming work to color Xen, the binary will not be anymore
> physically contiguous. This will be a problem during boot as the
> assembly code will need to work out where each piece of Xen reside.
> 
> An easy way to solve the issue is to have all code/data accessed
> by the secondary CPUs while the MMU is off within a single page.
> 
> Right now, smp_up_cpu is used by secondary CPUs to wait there turn for
s/there/their ?

> booting before the MMU is on. Yet it is currently in .data which is
> unlikely to be within the same page as the rest of the idmap.
> 
> Move smp_up_cpu to the recently create section .data.idmap. The idmap is
s/create/created

> currently part of the text section and therefore will be mapped read-onl
s/onl/only

> executable. This means that we need to temporarily remap
> smp_up_cpu in order to update it.
> 
> Introduce a new function set_smp_up_cpu() for this purpose so the code
> is not duplicated between when opening and closing the gate.
> 
> Signed-off-by: Julien Grall <jgrall@amazon.com>
Reviewed-by: Michal Orzel <michal.orzel@amd.com>

> ---
>  xen/arch/arm/smpboot.c | 36 +++++++++++++++++++++++++++++++-----
>  1 file changed, 31 insertions(+), 5 deletions(-)
> 
> diff --git a/xen/arch/arm/smpboot.c b/xen/arch/arm/smpboot.c
> index 7110bc11fc05..8d508a1bb258 100644
> --- a/xen/arch/arm/smpboot.c
> +++ b/xen/arch/arm/smpboot.c
> @@ -29,6 +29,10 @@
>  #include <asm/psci.h>
>  #include <asm/acpi.h>
> 
> +/* Override macros from asm/page.h to make them work with mfn_t */
> +#undef virt_to_mfn
> +#define virt_to_mfn(va) _mfn(__virt_to_mfn(va))
> +
>  cpumask_t cpu_online_map;
>  cpumask_t cpu_present_map;
>  cpumask_t cpu_possible_map;
> @@ -56,7 +60,7 @@ struct init_info init_data =
>  };
> 
>  /* Shared state for coordinating CPU bringup */
> -unsigned long smp_up_cpu = MPIDR_INVALID;
> +unsigned long __section(".data.idmap") smp_up_cpu = MPIDR_INVALID;
>  /* Shared state for coordinating CPU teardown */
>  static bool cpu_is_dead;
> 
> @@ -429,6 +433,28 @@ void stop_cpu(void)
>          wfi();
>  }
> 
> +static void set_smp_up_cpu(unsigned long mpidr)
> +{
> +    /*
> +     * smp_up_cpu is part of the identity mapping which is read-only. So
> +     * We need to re-map the region so it can be updated.
> +     */
> +    void *ptr = map_domain_page(virt_to_mfn(&smp_up_cpu));
> +
> +    ptr += PAGE_OFFSET(&smp_up_cpu);
> +
> +    *(unsigned long *)ptr = mpidr;
> +
> +    /*
> +     * init_ttbr will be accessed with the MMU off, so ensure the update
smp_up_cpu instead of init_ttbr

> +     * is visible by cleaning the cache.
> +     */
> +    clean_dcache(ptr);
> +
> +    unmap_domain_page(ptr);
> +
> +}
> +
>  int __init cpu_up_send_sgi(int cpu)
>  {
>      /* We don't know the GIC ID of the CPU until it has woken up, so just
> @@ -460,8 +486,7 @@ int __cpu_up(unsigned int cpu)
>      init_data.cpuid = cpu;
> 
>      /* Open the gate for this CPU */
> -    smp_up_cpu = cpu_logical_map(cpu);
> -    clean_dcache(smp_up_cpu);
> +    set_smp_up_cpu(cpu_logical_map(cpu));
> 
>      rc = arch_cpu_up(cpu);
> 
> @@ -497,8 +522,9 @@ int __cpu_up(unsigned int cpu)
>       */
>      init_data.stack = NULL;
>      init_data.cpuid = ~0;
> -    smp_up_cpu = MPIDR_INVALID;
> -    clean_dcache(smp_up_cpu);
> +
> +    set_smp_up_cpu(MPIDR_INVALID);
> +
>      arch_cpu_up_finish();
> 
>      if ( !cpu_online(cpu) )
> --
> 2.40.1
> 

~Michal



From xen-devel-bounces@lists.xenproject.org Wed Jan 17 08:46:37 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 17 Jan 2024 08:46:37 +0000
Received: from list by lists.xenproject.org with outflank-mailman.668277.1040324 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQ1ZC-0005eI-Rv; Wed, 17 Jan 2024 08:46:34 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 668277.1040324; Wed, 17 Jan 2024 08:46:34 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQ1ZC-0005eB-ON; Wed, 17 Jan 2024 08:46:34 +0000
Received: by outflank-mailman (input) for mailman id 668277;
 Wed, 17 Jan 2024 08:46:33 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=yGoF=I3=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rQ1ZB-0005e5-Ji
 for xen-devel@lists.xenproject.org; Wed, 17 Jan 2024 08:46:33 +0000
Received: from mail-lj1-x22a.google.com (mail-lj1-x22a.google.com
 [2a00:1450:4864:20::22a])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id e91baa5c-b514-11ee-9b0f-b553b5be7939;
 Wed, 17 Jan 2024 09:46:31 +0100 (CET)
Received: by mail-lj1-x22a.google.com with SMTP id
 38308e7fff4ca-2ccae380df2so118541211fa.1
 for <xen-devel@lists.xenproject.org>; Wed, 17 Jan 2024 00:46:31 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 t29-20020a02b19d000000b0046ea3aea39csm299376jah.100.2024.01.17.00.46.29
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 17 Jan 2024 00:46:30 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: e91baa5c-b514-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1705481190; x=1706085990; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=4Np57fW2Bhi2x3xAxytZojcxeDVk9duFP9A0OVsVwUM=;
        b=Z2NMOy2w8m8ik0zTW7GbuJ0AAzANd/uBtm2RnePjyMuBYd6bDFYtVW7EejE7msnFRj
         lI2F1rKCQmga27OpT9oB5IMWiT8jGyvgi8Jp3qM16vJglhj/uEExftYH39aqDXw37BtL
         JqEEgOL8RXxrm/Nx8jn5ke4p1GPtWbZEZTNGQSEwgxYalobdPdxGniIhy9iz/fKwkQ4T
         1zUXJUBboQLVPvx4zYVHOqSs+1GU3A8UW4C5unUJmNNIex183c11WqXgNZOTkWRuIdhp
         snKTlmjhLiwzzu5kIFV9Z7wlurb2nFdutp2zawbPcE7WQ5ZlKKCz/9i3PkuCBjc7Akca
         DUdw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705481190; x=1706085990;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=4Np57fW2Bhi2x3xAxytZojcxeDVk9duFP9A0OVsVwUM=;
        b=RkAbAG+97bBaekhHN407n5BTsPRrbSdLgLAcC8Q8/fiQc1s/qQW3ftLPpiRRsWZmFP
         KsknvqrBOZP0YZCJBMX/a2QHOoRCwX4IlGTCOUJ6mDdLjgDfceIMOkSXYHwpC7hQA6Vv
         6BQZOseUiKEHX0OY08n6Vo3KnEjS3UdKF1nbv59OihLAX0oatiN88H0NZzrXVRV24RcA
         7CZ+9Y22kVIrN9Xg+Cy892ZvTNNKH2262mxNfgXvemPQIK29sMx5N2/Fg2f/ZLTXvpKW
         YMhp5dpjUohUQ8GBTL+oEVZheRot3d3QQcrfhzXBtYBpgx9EVOgJdajlo45/uKP4UM7Y
         2Xcg==
X-Gm-Message-State: AOJu0Yykmrme98mXuqaW8W0+v6kOp8D/mZqkzEvRbJ5OjF6fH/k9YsdX
	uAu3a2grCg2ZhEexTmyV2dpszqpac5Hp
X-Google-Smtp-Source: AGHT+IHpQMN83NTfg4ZuKM4YwxWRQa+ir+bQUSg+LiW6bzlDDYWofBueWJpni+zehcIic2TEXY40rA==
X-Received: by 2002:a2e:150f:0:b0:2cb:5b8a:7013 with SMTP id s15-20020a2e150f000000b002cb5b8a7013mr3748879ljd.75.1705481190566;
        Wed, 17 Jan 2024 00:46:30 -0800 (PST)
Message-ID: <fa23a590-5869-4e11-8998-1d03742c5919@suse.com>
Date: Wed, 17 Jan 2024 09:46:27 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: E820 memory allocation issue on Threadripper platforms
Content-Language: en-US
To: Patrick Plenefisch <simonpatp@gmail.com>
Cc: xen-devel@lists.xenproject.org, Juergen Gross <jgross@suse.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
References: <CAOCpoWdOH=xGxiQSC1c5Ueb1THxAjH4WiZbCZq-QT+d_KAk3SA@mail.gmail.com>
 <1708c3d7-662a-44bc-b9b3-4ab9f8642d7b@suse.com>
 <dcaf9d8d-ad5a-4714-936b-79ed0e587f9d@suse.com>
 <CAOCpoWeowZPuQTeBp9nu8p8CDtE=u++wN_UqRoABZtB57D50Qw@mail.gmail.com>
 <ac742d12-ec91-4215-bb42-82a145924b4f@suse.com>
 <CAOCpoWfQmkhN3hms1xuotSUZzVzR99i9cNGGU2r=yD5PjysMiQ@mail.gmail.com>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <CAOCpoWfQmkhN3hms1xuotSUZzVzR99i9cNGGU2r=yD5PjysMiQ@mail.gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 17.01.2024 07:12, Patrick Plenefisch wrote:
> On Tue, Jan 16, 2024 at 4:33 AM Jan Beulich <jbeulich@suse.com> wrote:
> 
>> On 16.01.2024 01:22, Patrick Plenefisch wrote:
>>> I managed to set up serial access and saved the output with the requested
>>> flags as the attached logs
>>
>> Thanks. While you didn't ...
>>
>>
>> ... fiddle with the Linux message,  ...
>>
> 
> I last built the kernel over a decade ago, and so was hoping to not have to
> look up how to do that again, but I can research how to go about that again
> if it would help?
> 
> 
>>
>> ... as per
>>
>> (XEN)  Dom0 kernel: 64-bit, PAE, lsb, paddr 0x1000000 -> 0x4a00000
>>
>> there's an overlap with not exactly a hole, but with an
>> EfiACPIMemoryNVS region:
>>
>> (XEN)  0000000100000-0000003159fff type=2 attr=000000000000000f
>> (XEN)  000000315a000-0000003ffffff type=7 attr=000000000000000f
>> (XEN)  0000004000000-0000004045fff type=10 attr=000000000000000f
>> (XEN)  0000004046000-0000009afefff type=7 attr=000000000000000f
>>
>> (the 3rd of the 4 lines). Considering there's another region higher
>> up:
>>
>> (XEN)  00000a747f000-00000a947efff type=10 attr=000000000000000f
>>
>> I'm inclined to say it is poor firmware (or, far less likely, boot
>> loader) behavior to clobber a rather low and entirely arbitrary RAM
>>
> 
> Bootloader is Grub 2.06 EFI platform as packaged by Debian 12
> 
> 
> 
>> range, rather than consolidating all such regions near the top of
>> RAM below 4Gb. There are further such odd regions, btw:
>>
>> (XEN)  0000009aff000-0000009ffffff type=0 attr=000000000000000f
>> ...
>> (XEN)  000000b000000-000000b020fff type=0 attr=000000000000000f
>>
>> If the kernel image was sufficiently much larger, these could become
>> a problem as well. Otoh if the kernel wasn't built with
>> CONFIG_PHYSICAL_START=0x1000000, i.e. to start at 16Mb, but at, say,
>> 2Mb, things should apparently work even with this unusual memory
>> layout (until the kernel would grow enough to again run into that
>> very region).
> 
> I'm currently talking to the vendor's support team and testing a beta BIOS
> for unrelated reasons, is there something specific I should forward to
> them, either as a question or as a request for a fix?

Well, first it would need figuring whether the "interesting" regions
are being put in place by firmware of the boot loader. If it's firmware
(pretty likely at least for the region you're having trouble with), you
may want to ask them to re-do where they place that specific data.

> As someone who hasn't built a kernel in over a decade, should I figure out
> how to do a kernel build with CONFIG_PHYSICAL_START=0x2000000 and report
> back?

That was largely a suggestion to perhaps allow you to gain some
workable setup. It would be of interest to us largely for completeness.

>> It remains to be seen in how far it is reasonably possible to work
>> around this in the kernel. While (sadly) still unsupported, in the
>> meantime you may want to consider running Dom0 in PVH mode.
>>
> 
> I tried this by adding dom0=pvh, and instead got this boot error:
> 
> (XEN) xenoprof: Initialization failed. AMD processor family 25 is not
> supported
> (XEN) NX (Execute Disable) protection active
> (XEN) Dom0 has maximum 1400 PIRQs
> (XEN) *** Building a PVH Dom0 ***
> (XEN) Failed to load kernel: -1
> (XEN) Xen dom0 kernel broken ELF: <NULL>
> (XEN) Failed to load Dom0 kernel
> (XEN)
> (XEN) ****************************************
> (XEN) Panic on CPU 0:
> (XEN) Could not construct domain 0
> (XEN) ****************************************
> (XEN)
> (XEN) Reboot in five seconds...

Hmm, that's sad. The more that the error messages aren't really
informative. You did check though that your kernel is PVH-capable?
(With a debug build of Xen, and with suitably high logging level,
various of the ELF properties would be logged. Such output may or
may not give further hints towards what's actually wrong. Albeit
you using 4.17 this would further require you to pull in commit
ea3dabfb80d7 ["x86/PVH: allow Dom0 ELF parsing to be verbose"].)

But wait - aren't you running into the same collision there with
that memory region? I think that explains the unhelpful output.
Whereas I assume the native kernel can deal with that as long as
it's built with CONFIG_RELOCATABLE=y. I don't think we want to
get into the business of interpreting the kernel's internal
representation of the relocations needed, so it's not really
clear to me what we might do in such a case. Perhaps the only way
is to signal to the kernel that it needs to apply relocations
itself (which in turn would require the kernel to signal to us
that it's capable of doing so). Cc-ing Roger in case he has any
neat idea.

Jan


From xen-devel-bounces@lists.xenproject.org Wed Jan 17 08:46:52 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 17 Jan 2024 08:46:52 +0000
Received: from list by lists.xenproject.org with outflank-mailman.668279.1040334 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQ1ZU-00060b-2s; Wed, 17 Jan 2024 08:46:52 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 668279.1040334; Wed, 17 Jan 2024 08:46:52 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQ1ZT-00060S-Vr; Wed, 17 Jan 2024 08:46:51 +0000
Received: by outflank-mailman (input) for mailman id 668279;
 Wed, 17 Jan 2024 08:46:51 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=nKNn=I3=cloud.com=roger.pau@srs-se1.protection.inumbo.net>)
 id 1rQ1ZT-0005dn-DC
 for xen-devel@lists.xenproject.org; Wed, 17 Jan 2024 08:46:51 +0000
Received: from mail-wm1-x335.google.com (mail-wm1-x335.google.com
 [2a00:1450:4864:20::335])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id f4cce620-b514-11ee-98f2-6d05b1d4d9a1;
 Wed, 17 Jan 2024 09:46:50 +0100 (CET)
Received: by mail-wm1-x335.google.com with SMTP id
 5b1f17b1804b1-40e88012233so6832655e9.0
 for <xen-devel@lists.xenproject.org>; Wed, 17 Jan 2024 00:46:50 -0800 (PST)
Received: from localhost ([213.195.127.68]) by smtp.gmail.com with ESMTPSA id
 s15-20020a5d510f000000b00336aa190139sm1131065wrt.5.2024.01.17.00.46.49
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 17 Jan 2024 00:46:50 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: f4cce620-b514-11ee-98f2-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1705481210; x=1706086010; darn=lists.xenproject.org;
        h=in-reply-to:content-transfer-encoding:content-disposition
         :mime-version:references:message-id:subject:cc:to:from:date:from:to
         :cc:subject:date:message-id:reply-to;
        bh=4795QVuBXQRA8W3EjLVdmXbAH84YHjJbA2oiYBRns/A=;
        b=VEwtrsZ/7MSubG2jU7hCXUYmIyzGEGb88Jd4CJMrXDLiNWRsDagYzDcEC5v3N64xu5
         6nGL+jHL+ml2jB5JlmzyanSIsWes0xoa/YtbrfVE+OTsbp+759UspcgQ2aqGq7BG4yH3
         jDPTHfPM/uFeF0arSZoWLy3bNrd0sJTGnMwrw=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705481210; x=1706086010;
        h=in-reply-to:content-transfer-encoding:content-disposition
         :mime-version:references:message-id:subject:cc:to:from:date
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=4795QVuBXQRA8W3EjLVdmXbAH84YHjJbA2oiYBRns/A=;
        b=klROV2PcbLtg1+/HdvvhEqtzpLjXPCo1S692ovvjcrQGCYGvSwlAJ+viE/wQTCb2Bk
         fIeR+GsOsSk8vlgNrUCPoRlDqPiaCsRa5tRL4qqbkv/jGvhXfzNHxAi2r4AYQ3gTXBrt
         7Wc7BvjIRxyqhL0fAxfW5hERkyXpvL3SVACaX7oPFMc7YipA/CjoKIyjc2P91tTR5Qt4
         6KI9/hMQYWnveW7WlG+Z1JgR18lB60fYd1/Jmg5rr4DceRKZ6//GfSZwCy+d0hXIxxF+
         76wzrUtR5Oxc7gEykMQjqjCyHEXomnO0Rc13h8BsBipIKsbmbbf+Us1Nya5if68NmPvl
         yP+A==
X-Gm-Message-State: AOJu0YxEl22qYaLTWlqFEoPogBSSe0hQNkQgmPTB3+1P2pxwMknlyrai
	t+5WTSVWC/heqyjPS9bmf/sr1zvnmsI2mA==
X-Google-Smtp-Source: AGHT+IEh9r4Wd1c+hdgjwLI7PgkPlu9EFWlQ5+kn/NWp5p9WCsUr4xghWVLNBM8N+BM+oG+dmQvTLg==
X-Received: by 2002:a05:600c:2482:b0:40e:4800:a0ee with SMTP id 2-20020a05600c248200b0040e4800a0eemr4513835wms.171.1705481210202;
        Wed, 17 Jan 2024 00:46:50 -0800 (PST)
Date: Wed, 17 Jan 2024 09:46:49 +0100
From: Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
To: Patrick Plenefisch <simonpatp@gmail.com>
Cc: Jan Beulich <jbeulich@suse.com>, xen-devel@lists.xenproject.org,
	Juergen Gross <jgross@suse.com>
Subject: Re: E820 memory allocation issue on Threadripper platforms
Message-ID: <ZaeT-ZqDYiE_BiWE@macbook>
References: <CAOCpoWdOH=xGxiQSC1c5Ueb1THxAjH4WiZbCZq-QT+d_KAk3SA@mail.gmail.com>
 <1708c3d7-662a-44bc-b9b3-4ab9f8642d7b@suse.com>
 <dcaf9d8d-ad5a-4714-936b-79ed0e587f9d@suse.com>
 <CAOCpoWeowZPuQTeBp9nu8p8CDtE=u++wN_UqRoABZtB57D50Qw@mail.gmail.com>
 <ac742d12-ec91-4215-bb42-82a145924b4f@suse.com>
 <CAOCpoWfQmkhN3hms1xuotSUZzVzR99i9cNGGU2r=yD5PjysMiQ@mail.gmail.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <CAOCpoWfQmkhN3hms1xuotSUZzVzR99i9cNGGU2r=yD5PjysMiQ@mail.gmail.com>

On Wed, Jan 17, 2024 at 01:12:30AM -0500, Patrick Plenefisch wrote:
> On Tue, Jan 16, 2024 at 4:33 AM Jan Beulich <jbeulich@suse.com> wrote:
> 
> > On 16.01.2024 01:22, Patrick Plenefisch wrote:
> > It remains to be seen in how far it is reasonably possible to work
> > around this in the kernel. While (sadly) still unsupported, in the
> > meantime you may want to consider running Dom0 in PVH mode.
> >
> 
> I tried this by adding dom0=pvh, and instead got this boot error:
> 
> (XEN) xenoprof: Initialization failed. AMD processor family 25 is not
> supported
> (XEN) NX (Execute Disable) protection active
> (XEN) Dom0 has maximum 1400 PIRQs
> (XEN) *** Building a PVH Dom0 ***
> (XEN) Failed to load kernel: -1
> (XEN) Xen dom0 kernel broken ELF: <NULL>
> (XEN) Failed to load Dom0 kernel
> (XEN)
> (XEN) ****************************************
> (XEN) Panic on CPU 0:
> (XEN) Could not construct domain 0
> (XEN) ****************************************
> (XEN)
> (XEN) Reboot in five seconds...

PVH dom0 also re-uses the host memory map in order to build the dom0
memory map, and will fail to load the kernel if the ELF program
headers physical addresses are not between RAM regions (or destination
guest physical addresses where hvm_copy_to_guest_phys() returns
failure).

Roger.


From xen-devel-bounces@lists.xenproject.org Wed Jan 17 08:53:34 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 17 Jan 2024 08:53:34 +0000
Received: from list by lists.xenproject.org with outflank-mailman.668283.1040344 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQ1fu-0000O6-Nk; Wed, 17 Jan 2024 08:53:30 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 668283.1040344; Wed, 17 Jan 2024 08:53:30 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQ1fu-0000Nz-L6; Wed, 17 Jan 2024 08:53:30 +0000
Received: by outflank-mailman (input) for mailman id 668283;
 Wed, 17 Jan 2024 08:53:29 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=yGoF=I3=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rQ1ft-0000Nt-8S
 for xen-devel@lists.xenproject.org; Wed, 17 Jan 2024 08:53:29 +0000
Received: from mail-wm1-x335.google.com (mail-wm1-x335.google.com
 [2a00:1450:4864:20::335])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id e1a4f434-b515-11ee-98f2-6d05b1d4d9a1;
 Wed, 17 Jan 2024 09:53:28 +0100 (CET)
Received: by mail-wm1-x335.google.com with SMTP id
 5b1f17b1804b1-40d6b4e2945so120510575e9.0
 for <xen-devel@lists.xenproject.org>; Wed, 17 Jan 2024 00:53:28 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 g21-20020a05600c311500b0040d30af488asm25621342wmo.40.2024.01.17.00.53.27
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 17 Jan 2024 00:53:27 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: e1a4f434-b515-11ee-98f2-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1705481607; x=1706086407; darn=lists.xenproject.org;
        h=content-transfer-encoding:autocrypt:subject:from:cc:to
         :content-language:user-agent:mime-version:date:message-id:from:to:cc
         :subject:date:message-id:reply-to;
        bh=0uJn2eh7MjoWn0LJErIUlXzhR/Fos7qV73ZOoCBsBgU=;
        b=YASAWTU0RbN7GaKNKtm4B1dlU2BUCHlwUlJaGaQ4yHuD9j6iJ1eWhaJXR7cxC/DCN/
         oC9f66rfWdk1hEz7GsqH4H4Lf7lgJRernX0v4Jkt8ps8MtNu9RSH05IwfEt4d/QIfyvq
         +nSFKS9mi5CJD4Qz8tM4ED3XtjEx+yAEoghNnH65GxtuZxfrR+YyhAnz6y/n1yA7e+5d
         SbKCBnpV9YgqaFgJScqIyz+Sv58VjGr8O0CcBicRHO31njfdljb9jP8wW860UCA2L4j2
         ZOuI95vaTyl8ut0/xwiqgj7564V1Hq+PPZ1yCclzANJeyuLjXtEjMRQzEwwZ3Kq/asYn
         tSlA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705481607; x=1706086407;
        h=content-transfer-encoding:autocrypt:subject:from:cc:to
         :content-language:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=0uJn2eh7MjoWn0LJErIUlXzhR/Fos7qV73ZOoCBsBgU=;
        b=nQdUAbX6LARPrVW8eeiG88V6zHgjIf2KR38aNQuv91Zq0UkZcyizwiYzsMCXW879hM
         twhDGkd6Whp/1EBctaR0PhG7GdF+RxKuZkRw60vfOQXeSr7to0z7JxRLO7rFIAtywX5x
         ZrqTdV34OY/gYszzyD2sntiD0EIfMfAgRYRNluW8dV3URNoPgHJh/JTdevUO6uS20+7a
         oeXPmpz319zrsbD3V+KaVd1wP2jTGSbIH+XUDVsIWuqVAb6zJihXkLuH4/R771eb8P9R
         yM4VgzSoIQ2N5W3UmI+EiDmxiItJn15DjwRm0eXtfbNveRp9K/m8Q9IDJYqE1n6nrg+6
         kAwg==
X-Gm-Message-State: AOJu0YxzPWtQ5+db6y4gqcHBINLT79gf78hKnDfN/lSMcs1uj3eINlpu
	qvFDO9haB5Z1K6pVIL4o6qIZ0ajoxBnc6lbq4eE5TunBXw==
X-Google-Smtp-Source: AGHT+IHWPrO8zv1AyrTR5DvLnGDFk/ctIrcJbeHK4pBHZ8GM4c2qtuOuRiSJJ00xYT/YfqTUMyNyEw==
X-Received: by 2002:a05:600c:4f90:b0:40e:3a07:41e with SMTP id n16-20020a05600c4f9000b0040e3a07041emr2766018wmq.162.1705481607626;
        Wed, 17 Jan 2024 00:53:27 -0800 (PST)
Message-ID: <fda7586f-a1d1-4500-a6c4-d0e010223ee2@suse.com>
Date: Wed, 17 Jan 2024 09:53:26 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Content-Language: en-US
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, Wei Liu <wl@xen.org>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
From: Jan Beulich <jbeulich@suse.com>
Subject: [PATCH] x86/PVH: Dom0 "broken ELF" reporting adjustments
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

elf_load_binary() isn't the primary source of brokenness being
indicated. Therefore make the respective log message there conditional
(much like PV has it), and add another instance when elf_xen_parse()
failed (again matching behavior in the PV case).

Signed-off-by: Jan Beulich <jbeulich@suse.com>

--- a/xen/arch/x86/hvm/dom0_build.c
+++ b/xen/arch/x86/hvm/dom0_build.c
@@ -570,6 +570,8 @@ static int __init pvh_load_kernel(struct
     if ( (rc = elf_xen_parse(&elf, &parms, true)) != 0 )
     {
         printk("Unable to parse kernel for ELFNOTES\n");
+        if ( elf_check_broken(&elf) )
+            printk("Xen dom0 kernel broken ELF: %s\n", elf_check_broken(&elf));
         return rc;
     }
 
@@ -588,7 +590,8 @@ static int __init pvh_load_kernel(struct
     if ( rc < 0 )
     {
         printk("Failed to load kernel: %d\n", rc);
-        printk("Xen dom0 kernel broken ELF: %s\n", elf_check_broken(&elf));
+        if ( elf_check_broken(&elf) )
+            printk("Xen dom0 kernel broken ELF: %s\n", elf_check_broken(&elf));
         return rc;
     }
 


From xen-devel-bounces@lists.xenproject.org Wed Jan 17 08:53:35 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 17 Jan 2024 08:53:35 +0000
Received: from list by lists.xenproject.org with outflank-mailman.668284.1040354 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQ1fy-0000da-VZ; Wed, 17 Jan 2024 08:53:34 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 668284.1040354; Wed, 17 Jan 2024 08:53:34 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQ1fy-0000dR-Sl; Wed, 17 Jan 2024 08:53:34 +0000
Received: by outflank-mailman (input) for mailman id 668284;
 Wed, 17 Jan 2024 08:53:33 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=2QPC=I3=amd.com=Michal.Orzel@srs-se1.protection.inumbo.net>)
 id 1rQ1fx-0000Nt-DP
 for xen-devel@lists.xenproject.org; Wed, 17 Jan 2024 08:53:33 +0000
Received: from NAM04-BN8-obe.outbound.protection.outlook.com
 (mail-bn8nam04on20600.outbound.protection.outlook.com
 [2a01:111:f403:2408::600])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id e3e15294-b515-11ee-98f2-6d05b1d4d9a1;
 Wed, 17 Jan 2024 09:53:32 +0100 (CET)
Received: from DS7PR03CA0323.namprd03.prod.outlook.com (2603:10b6:8:2b::12) by
 DS0PR12MB7897.namprd12.prod.outlook.com (2603:10b6:8:146::13) with
 Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.7181.21; Wed, 17 Jan 2024 08:53:29 +0000
Received: from DS1PEPF00017099.namprd05.prod.outlook.com
 (2603:10b6:8:2b:cafe::51) by DS7PR03CA0323.outlook.office365.com
 (2603:10b6:8:2b::12) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7202.23 via Frontend
 Transport; Wed, 17 Jan 2024 08:53:29 +0000
Received: from SATLEXMB04.amd.com (165.204.84.17) by
 DS1PEPF00017099.mail.protection.outlook.com (10.167.18.103) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.7202.16 via Frontend Transport; Wed, 17 Jan 2024 08:53:28 +0000
Received: from SATLEXMB04.amd.com (10.181.40.145) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.34; Wed, 17 Jan
 2024 02:53:28 -0600
Received: from [10.252.147.188] (10.180.168.240) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server id 15.1.2507.34 via Frontend
 Transport; Wed, 17 Jan 2024 02:53:26 -0600
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: e3e15294-b515-11ee-98f2-6d05b1d4d9a1
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=BmSzU8gc79pZlLtFpU5sYsKsYcnR3z/ZaxwCIq4MUCigYHNuAAswU0qnqzAxfyp3ffYG/kGbYW+cPOlK8McS4WlQC9flNWjZzFWvK3vKidj7VfVjwwJE0Q35DHEVDmKqLy5D2nu4q9ruyBqSJXM17cjg4DpTM6VPupWOpdmsoxUdRTdFoH4tlmtB66Hm2VVznEHoQuFcGhvhuBQvUGJhAqpj7IDHW27LoSvXNHNctg8XephhoOyHOcRg2rSSPIqAqjodellCMAKp9V9ldlEjGy1PO6V5KXzP1g0ODc5XyhQXLlRcRy1Q7AsoqNGtnD3ot6acWAqv5MatAYUnJbog4A==
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=GuKXlyvNJYO6qNaSaDORjBiWcPPhFaUhPVsI/G3B0mY=;
 b=LBvcqs0Tp5qLYA33iDi5t3imF6DJz5cMLSwjc/JUqXKfPGTU6pjcMS3t1GMonOf/z2OtcupuZCbygylmQ0QACEIvE+e3jEZ6vBjJ6vXla5ohh4jeDFlw7VmLoLF/+xkWyraI0LJ/xhGWvl7qekwTtowo3MD7iRwb9O33KGmRkwHIT75Z8+sA9MdzhOXrhcsG+6N28LDyvY3C48dFsD5hc7QaB7k0rnln8ax3AJjWPgqCZ23NyK3d3NqqDJagExbckCh4OJzXZYuPkLOr8MbHnQ3WVQG5LcA3+o7CnN2Qj3oGaVtTrfU9mrmiAqZUvh0qefNScAW9S0b+umAT0pNEgQ==
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)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=GuKXlyvNJYO6qNaSaDORjBiWcPPhFaUhPVsI/G3B0mY=;
 b=MJStk190iCSAQeLIwkXxKexnim2VCqeCqh1xFvdU+ZUjtiZ8f3Yyrs74jryqBwmV03KF3z8Cyk/1kEV6hQBkhEnUXGV3NkqHBu1Ex+0yqyPM7dGgPW2CqZuOLwKSC/LBvw46vx5+BE64bL7GemS3WAo4o7wB90DuUZxpK6iLCsQ=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C
Message-ID: <25e9e83b-10c4-463b-8850-2ca57ac76376@amd.com>
Date: Wed, 17 Jan 2024 09:53:26 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v1 repost 3/4] xen/arm64: head: Use PRINT_ID() for
 secondary CPU MMU-off boot code
Content-Language: en-US
To: Julien Grall <julien@xen.org>, <xen-devel@lists.xenproject.org>
CC: <carlo.nonato@minervasys.tech>, Julien Grall <jgrall@amazon.com>, Stefano
 Stabellini <sstabellini@kernel.org>, Bertrand Marquis
	<bertrand.marquis@arm.com>, Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>
References: <20240116143709.86584-1-julien@xen.org>
 <20240116143709.86584-4-julien@xen.org>
From: Michal Orzel <michal.orzel@amd.com>
In-Reply-To: <20240116143709.86584-4-julien@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 7bit
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: DS1PEPF00017099:EE_|DS0PR12MB7897:EE_
X-MS-Office365-Filtering-Correlation-Id: c4598987-5d93-44c6-74e7-08dc1739c679
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam: BCL:0;
X-Microsoft-Antispam-Message-Info:
	h76p8mW4XYojAnWDjkf3ZSKvKgqqnUwrHsFPnb5i/D1yifYm3U/mtZql/hb0aB5JmcLEuwdq1cxo7nOrAsqOyc5Kp+sxdn94ecnkrvZiR1zNyTz/hYGENazH2jCyu+JAjZu92vMKtZlxwPS7q+Gf8CKskav/aCBJAAoQBupHpGCVAj8WruUSZny5FkSyZNbPkZFf3vnoiI3uTKLxdYn07MUMWIr960UWx7P/TbXzcJqoFrFMdR4GsHWADWKgVJwMMO8Xxl4dLmr5RKT7YPos9mWsLsXgwstb7vdPrvNtliKeySsYihVwg/Dkrg+P77zvVJpENXEorNiDkZdzn+YDtQ4qu90XY5rcUzwJAartMdVvkWoHT/nRibB1mJnWhr7OkqzVLf0NzTGGFbpfD9F6zvckND7wolLehjufezQw98NTRC5fi5CNw/+ijx9MbN//imjpt8j1XexxNLwWCRoap++ki8yKxN+BAYlb3hIzdt+dHY+8oP+klLD5lRCD2GdvPFO3nlHlTN9QAWVsF6w3tKLfP0jVTLQjuethJANM+gug+cEopQtGQzZLgMUhU3AdPujkdFCofEINbr6zqNWmf/UsWMi+jSrzXWiOK+yc87O2bIMi1XhV1vvNBtBk7WPn4MD57EsKNfZgZvppGjxjVJV9swcdhlfkiv88OOuVLL3N31vF27OVFwGra83orrmpriAOPv2b/PPYxEWwvAO+yH5nnDFnO/6yku1T79KyPJ0EYU7bC+9azX8qrj9qqFGMfN6rLSt6SI5fk556zL98gXJbmAq/sg5nJP0Ch0oJEAArQF0Ad4gdgQzrjvE4ep9y
X-Forefront-Antispam-Report:
	CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230031)(4636009)(39860400002)(396003)(136003)(376002)(346002)(230922051799003)(1800799012)(451199024)(82310400011)(64100799003)(186009)(46966006)(36840700001)(40470700004)(31686004)(40480700001)(40460700003)(83380400001)(70586007)(41300700001)(36756003)(356005)(31696002)(86362001)(81166007)(82740400003)(70206006)(478600001)(47076005)(36860700001)(26005)(336012)(2616005)(426003)(44832011)(2906002)(8936002)(16576012)(53546011)(110136005)(4326008)(316002)(8676002)(5660300002)(54906003)(36900700001)(43740500002);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Jan 2024 08:53:28.9409
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: c4598987-5d93-44c6-74e7-08dc1739c679
X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com]
X-MS-Exchange-CrossTenant-AuthSource:
	DS1PEPF00017099.namprd05.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS0PR12MB7897



On 16/01/2024 15:37, Julien Grall wrote:
> 
> 
> From: Julien Grall <jgrall@amazon.com>
> 
> With the upcoming work to color Xen, the binary will not be anymore
> physically contiguous. This will be a problem during boot as the
> assembly code will need to work out where each piece of Xen reside.
> 
> An easy way to solve the issue is to have all code/data accessed
> by the secondary CPUs while the MMU is off within a single page.
> 
> Right now, most of the early printk messages are using PRINT() which
> will add the message in .rodata. This is unlikely to be within the
> same page as the rest of the idmap.
> 
> So replace all the PRINT() that can be reachable by the secondary
> CPU with MMU-off with PRINT_ID().
> 
> Signed-off-by: Julien Grall <jgrall@amazon.com>
Reviewed-by: Michal Orzel <michal.orzel@amd.com>

with some remarks below

> ---
>  xen/arch/arm/arm64/head.S               | 14 +++++++-------
>  xen/arch/arm/arm64/mmu/head.S           |  2 +-
>  xen/arch/arm/include/asm/arm64/macros.h |  9 ++++++---
>  3 files changed, 14 insertions(+), 11 deletions(-)
> 
> diff --git a/xen/arch/arm/arm64/head.S b/xen/arch/arm/arm64/head.S
> index cfc04c755400..fa8b00b6f1db 100644
> --- a/xen/arch/arm/arm64/head.S
> +++ b/xen/arch/arm/arm64/head.S
> @@ -289,9 +289,9 @@ GLOBAL(init_secondary)
> 
>  #ifdef CONFIG_EARLY_PRINTK
>          ldr   x23, =CONFIG_EARLY_UART_BASE_ADDRESS /* x23 := UART base address */
> -        PRINT("- CPU ")
> +        PRINT_ID("- CPU ")
>          print_reg x24
> -        PRINT(" booting -\r\n")
> +        PRINT_ID(" booting -\r\n")
>  #endif
>          bl    check_cpu_mode
>          bl    cpu_init
> @@ -314,10 +314,10 @@ ENDPROC(init_secondary)
>   * Clobbers x0 - x5
>   */
>  check_cpu_mode:
> -        PRINT("- Current EL ")
> +        PRINT_ID("- Current EL ")
>          mrs   x5, CurrentEL
>          print_reg x5
> -        PRINT(" -\r\n")
> +        PRINT_ID(" -\r\n")
> 
>          /* Are we in EL2 */
>          cmp   x5, #PSR_MODE_EL2t
> @@ -326,8 +326,8 @@ check_cpu_mode:
>          ret
>  1:
>          /* OK, we're boned. */
> -        PRINT("- Xen must be entered in NS EL2 mode -\r\n")
> -        PRINT("- Please update the bootloader -\r\n")
> +        PRINT_ID("- Xen must be entered in NS EL2 mode -\r\n")
> +        PRINT_ID("- Please update the bootloader -\r\n")
>          b fail
What about the PRINT in fail?

>  ENDPROC(check_cpu_mode)
> 
> @@ -361,7 +361,7 @@ ENDPROC(zero_bss)
>   * Clobbers x0 - x3
>   */
>  cpu_init:
> -        PRINT("- Initialize CPU -\r\n")
> +        PRINT_ID("- Initialize CPU -\r\n")
> 
>          /* Set up memory attribute type tables */
>          ldr   x0, =MAIRVAL
> diff --git a/xen/arch/arm/arm64/mmu/head.S b/xen/arch/arm/arm64/mmu/head.S
> index 92b62ae94ce5..fa40b696ddc8 100644
> --- a/xen/arch/arm/arm64/mmu/head.S
> +++ b/xen/arch/arm/arm64/mmu/head.S
> @@ -276,7 +276,7 @@ ENDPROC(create_page_tables)
>  enable_mmu:
>          mov   x4, x0
>          mov   x5, x1
> -        PRINT("- Turning on paging -\r\n")
> +        PRINT_ID("- Turning on paging -\r\n")
> 
>          /*
>           * The state of the TLBs is unknown before turning on the MMU.
> diff --git a/xen/arch/arm/include/asm/arm64/macros.h b/xen/arch/arm/include/asm/arm64/macros.h
> index 10e652041f57..6a0108f778a2 100644
> --- a/xen/arch/arm/include/asm/arm64/macros.h
> +++ b/xen/arch/arm/include/asm/arm64/macros.h
> @@ -39,9 +39,12 @@
>   * There are multiple flavors:
>   *  - PRINT_SECT(section, string): The @string will be located in @section
>   *  - PRINT(): The string will be located in .rodata.str.
> - *  - PRINT_ID(): When Xen is running on the Identity Mapping, it is
> - *    only possible to have a limited amount of Xen. This will create
> - *    the string in .rodata.idmap which will always be mapped.
> + *  - PRINT_ID(): This will create the string in .rodata.idmap which
> + *    will always be accessible. This is used when:
> + *      - Xen is running on the identity mapping because not all of Xen is mapped
> + *      - Running with the MMU-off on secondary boots as Xen may not be
s/boots/CPUs

> + *        physically contiguous in memory (e.g. in the case of cache
> + *        coloring).
>   *
>   * Clobbers x0 - x3
>   */
> --
> 2.40.1
> 

~Michal


From xen-devel-bounces@lists.xenproject.org Wed Jan 17 09:18:22 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 17 Jan 2024 09:18:22 +0000
Received: from list by lists.xenproject.org with outflank-mailman.668300.1040364 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQ23q-0007UM-SB; Wed, 17 Jan 2024 09:18:14 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 668300.1040364; Wed, 17 Jan 2024 09:18:14 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQ23q-0007UF-Or; Wed, 17 Jan 2024 09:18:14 +0000
Received: by outflank-mailman (input) for mailman id 668300;
 Wed, 17 Jan 2024 09:18:13 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=yGoF=I3=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rQ23p-0007U9-Bi
 for xen-devel@lists.xenproject.org; Wed, 17 Jan 2024 09:18:13 +0000
Received: from mail-wm1-x334.google.com (mail-wm1-x334.google.com
 [2a00:1450:4864:20::334])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 556ef412-b519-11ee-9b0f-b553b5be7939;
 Wed, 17 Jan 2024 10:18:10 +0100 (CET)
Received: by mail-wm1-x334.google.com with SMTP id
 5b1f17b1804b1-40e8d3b29f2so31075e9.1
 for <xen-devel@lists.xenproject.org>; Wed, 17 Jan 2024 01:18:10 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 fk4-20020a05600c0cc400b0040e7efb1ff2sm7552202wmb.37.2024.01.17.01.18.09
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 17 Jan 2024 01:18:09 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 556ef412-b519-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1705483090; x=1706087890; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:from:to:cc:subject:date:message-id:reply-to;
        bh=M8DyqexMij1sKwKdg5LgDvK53F3Eitit3+gAFfHBcek=;
        b=OMVN1yPOMWfRNikjq0icIAIJDoXnsjp2rqRIJbiG3kf/cE+T7ndBsl2iMQiTMfXbU+
         8O5pheHcnbp1FBLrmjcyMazAkO2HB8BuyDyvtvp8f0SyaN1KGG2xprDnvD+Jsv/9U5br
         dgs+KPjG1BTtVkHGCJZqhOGCdtWdqe6rEYB7osS5u7mE8/eM+7J1xu5LzsnDAUAYRjMv
         IEZPTEGoyH8Y08LgvRza+XTA6hZ5Oj6jpsWgiu0lgXJaB15P8F0CBkbhA4ZB9RXkOD7I
         caSJMSHHgGyQlgtM43ccRk3o2G+3sxmlSuTlUFpZzBaB1N1r4hWlhYsi5Je3qaXF/99z
         Xotw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705483090; x=1706087890;
        h=content-transfer-encoding:in-reply-to:autocrypt:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to;
        bh=M8DyqexMij1sKwKdg5LgDvK53F3Eitit3+gAFfHBcek=;
        b=OubMHDRoOk7xiYINdELrL2Kf3iX2ibmULKuNVk1PC9sVu+6hqzN1kqncywKQzvhgE/
         fp+0Uy4jzREMaXCqt/82Pjx0OOB2hivV9lS3Js6P6PVcly6GTX1WuFEeSGOl4fvuMA8+
         jzXfajfGkfUmi2oF9lDZWT3fuKHHGyN/Nf6pYMYvfMZAYzNnBI/RypsiooHFxgTKsjiQ
         yvTRrJCbiRcy0UdhvLkZHPnEmjJALuNu58/2/3tAcuIkG8y76EjgYwXmSp8F7e7HXiMR
         cE9FyyPepP/fALGmZwj+eMJWMnXFQUYjI5o4r1h2izi2Y2ggnOwRnMhiRe3ZZ4wzFmf0
         Elbg==
X-Gm-Message-State: AOJu0YyRIdcLJ0xmnM/EpXAfQQl26NYia5rGy+AdpfB/J3INIOjsYN68
	dCeRnngn1muQd0oGBs1D0GeY4vBAlWFV
X-Google-Smtp-Source: AGHT+IFF+Ki7pCzdu5FBIAaRrUZHVIAQWVw609Zt5d3lA/yJkk0wMRXKI6TeV6zeEiR9bEV99jrjew==
X-Received: by 2002:a05:600c:2611:b0:40e:4bb0:14b3 with SMTP id h17-20020a05600c261100b0040e4bb014b3mr3275986wma.191.1705483090296;
        Wed, 17 Jan 2024 01:18:10 -0800 (PST)
Message-ID: <244e13fe-a79f-41b3-9410-dae622cab3e9@suse.com>
Date: Wed, 17 Jan 2024 10:18:08 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] x86/PV: use altcall for I/O emulation quirk hook
To: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: Wei Liu <wl@xen.org>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger.pau@citrix.com>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
References: <5f7afa11-3216-4175-b05b-3ff78920fa00@suse.com>
 <3623ab9b-903e-4576-81b9-c6debe0f900c@citrix.com>
Content-Language: en-US
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <3623ab9b-903e-4576-81b9-c6debe0f900c@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 16.01.2024 18:31, Andrew Cooper wrote:
> On 16/01/2024 4:58 pm, Jan Beulich wrote:
>> This way we can arrange for ioemul_handle_proliant_quirk()'s ENDBR to
>> also be zapped. Utilize existing data rather than introducing another
>> otherwise unused static variable (array); eventually (if any new quirk
>> was in need of adding) we may want to use .callback and .driver_data
>> anyway.
>>
>> For the decision to be taken before the 2nd alternative patching pass,
>> the initcall needs to become a pre-SMP one.
>>
>> While touching this code, also arrange for it to not be built at all
>> when !PV - that way the respective ENDBR won't be there from the
>> beginning.
>>
>> Signed-off-by: Jan Beulich <jbeulich@suse.com>
>> ---
>> Obviously the file may want moving to pv/ then. I wasn't sure whether
>> to also fold doing so right into here.
> 
> For PVH dom0, we allow almost blanket IO port access.  We could do the
> same for PV dom0 by setting up a suitable TSS IO port bitmap.
> 
> That said, x86-S is soon to revoke the ability to do that, so maybe we
> just save ourselves the work...
> 
> 
> I'm confused about "rather than introducing another otherwise unused
> static variable (array)".  Why an array?

(Again) in anticipation of there being a need for another such quirk.
Imo that would have been only consistent with the use of a function
pointer. However, ...

> In this instance, you could use the same trick as the ctxt switch mask. 
> Whether we match DMI or not, it's safe to clobber the ENDBR.  We could
> also consider a __{read_mostly,ro_after_init}_cf_clobber sections.
> 
> 
> However, it's probably better still to have a `bool prolient_quirk` and
> a direct call.  No extra vendor hooks have been added since this was
> introduced in 2007, and I really don't foresee this changing in the near
> future.  Lets just simplify it and drop all the alternatives/clobbering
> games entirely.

... I've now done this. Will send a v2 soon.

Jan


From xen-devel-bounces@lists.xenproject.org Wed Jan 17 09:29:52 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 17 Jan 2024 09:29:52 +0000
Received: from list by lists.xenproject.org with outflank-mailman.668304.1040374 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQ2F0-0001jV-Sb; Wed, 17 Jan 2024 09:29:46 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 668304.1040374; Wed, 17 Jan 2024 09:29:46 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQ2F0-0001jO-Pr; Wed, 17 Jan 2024 09:29:46 +0000
Received: by outflank-mailman (input) for mailman id 668304;
 Wed, 17 Jan 2024 09:29:45 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=yGoF=I3=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rQ2Ez-0001jI-2W
 for xen-devel@lists.xenproject.org; Wed, 17 Jan 2024 09:29:45 +0000
Received: from mail-wr1-x436.google.com (mail-wr1-x436.google.com
 [2a00:1450:4864:20::436])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id f1d302ba-b51a-11ee-9b0f-b553b5be7939;
 Wed, 17 Jan 2024 10:29:42 +0100 (CET)
Received: by mail-wr1-x436.google.com with SMTP id
 ffacd0b85a97d-3368abe1093so8388664f8f.2
 for <xen-devel@lists.xenproject.org>; Wed, 17 Jan 2024 01:29:42 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 l14-20020adffe8e000000b00336755f15b0sm1196574wrr.68.2024.01.17.01.29.41
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 17 Jan 2024 01:29:41 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: f1d302ba-b51a-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1705483782; x=1706088582; darn=lists.xenproject.org;
        h=content-transfer-encoding:autocrypt:subject:from:cc:to
         :content-language:user-agent:mime-version:date:message-id:from:to:cc
         :subject:date:message-id:reply-to;
        bh=EgV5Q9KvqQ7PhZNunAtTlFJQbxXoBPUKSUdE+lKAOH0=;
        b=JUg9ofi/uUwzLsYNvZcBxGqc/dCXrmwW7TMm5xuU8Xn1tk+6Nwurj7RoP8aG40GvhE
         kJAbUVXC1jaA/zdcFt6oYSUYcFokfDwJGfkrO5AbIo3lWfKPN1sh11o9DMkTlbBgVx4B
         FdtHX18LlFj4Q5vlba+uyqgwsBpZQdlWumW6T8pIJPrnynjOU09PF4ypAL7nusXg2sQL
         AfXILoNoRdWleCaQ6uaqE3XssA+Y20oVX0lgrY4ZDo1X/l3/KWQpurjp1yk/m2lJFCNA
         rPVEPI2haWrVBJtPoxV2ttWN1Qmom5Oy+JRdQe4U1Q/V8PnsImWfNI0Ecyzyj7gRiZZO
         VNVw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705483782; x=1706088582;
        h=content-transfer-encoding:autocrypt:subject:from:cc:to
         :content-language:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=EgV5Q9KvqQ7PhZNunAtTlFJQbxXoBPUKSUdE+lKAOH0=;
        b=VP4D2/69M/KWVi3EfJ7DZXlJ1yl6JZK0HS8fLSXQ/85jPQF+XjpaUD1orP04/27fV0
         a0of2fpnvN++EW46BVjHo3WTDy60ns1c4VE2VwpU2tYHFtlF9TtmXA2EsUezKEKuMwdd
         yz8mt+zdnmvarZGT9ulDOkEMXJI6lhRRM08UIAhzBhzTabyW14hpYKDuR/FpagJu452n
         oKyAa3OP6zyA/XBrDoA8iILgFL45CbK9Mtr0dAS+OHZMQtDfD1OIUUNQv0+Fwc519JUr
         rtYbB30HvouNJJ9uRZSajezGJQNY+9QZTCBQulS2DA3rLjuBhQP7D6qFC9EsoCL0v3yT
         r0KA==
X-Gm-Message-State: AOJu0YwaITe3KsbBOSCJeukQEqCjO95gl4NMckVjcqa5C87PkfzGAAmC
	OMYOrzFuaWzzaXh7RWgVi61Nb6//lReIWWRn3CFMRnvOQQ==
X-Google-Smtp-Source: AGHT+IFhc0fO/fpLB47nIBBVLLrf8vEqOlxE4zEQMMrqFCKgQJgpoyi6prGhOHmiK0eN4PxIDJzoNA==
X-Received: by 2002:a5d:54c6:0:b0:337:6eac:2cad with SMTP id x6-20020a5d54c6000000b003376eac2cadmr5156252wrv.133.1705483782218;
        Wed, 17 Jan 2024 01:29:42 -0800 (PST)
Message-ID: <3b2842b2-a2fe-49e7-9ea3-4f55cbc95738@suse.com>
Date: Wed, 17 Jan 2024 10:29:40 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Content-Language: en-US
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 George Dunlap <george.dunlap@citrix.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
From: Jan Beulich <jbeulich@suse.com>
Subject: [PATCH] core-parking: use alternative_call()
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

This way we can arrange for core_parking_{performance,power}()'s ENDBR
to also be zapped.

For the decision to be taken before the 2nd alternative patching pass,
the initcall needs to become a pre-SMP one, though.

Signed-off-by: Jan Beulich <jbeulich@suse.com>

--- a/xen/common/core_parking.c
+++ b/xen/common/core_parking.c
@@ -30,10 +30,11 @@ static DEFINE_SPINLOCK(accounting_lock);
 static uint32_t cur_idle_nums;
 static unsigned int core_parking_cpunum[NR_CPUS] = {[0 ... NR_CPUS-1] = -1};
 
-static const struct cp_policy {
+struct cp_policy {
     char name[30];
     unsigned int (*next)(unsigned int event);
-} *__read_mostly core_parking_policy;
+};
+static struct cp_policy __ro_after_init core_parking_policy;
 
 static enum core_parking_controller {
     POWER_FIRST,
@@ -175,12 +176,13 @@ long cf_check core_parking_helper(void *
     unsigned int cpu;
     int ret = 0;
 
-    if ( !core_parking_policy )
+    if ( !core_parking_policy.next )
         return -EINVAL;
 
     while ( cur_idle_nums < idle_nums )
     {
-        cpu = core_parking_policy->next(CORE_PARKING_INCREMENT);
+        cpu = alternative_call(core_parking_policy.next,
+                               CORE_PARKING_INCREMENT);
         ret = cpu_down(cpu);
         if ( ret )
             return ret;
@@ -193,7 +195,8 @@ long cf_check core_parking_helper(void *
 
     while ( cur_idle_nums > idle_nums )
     {
-        cpu = core_parking_policy->next(CORE_PARKING_DECREMENT);
+        cpu = alternative_call(core_parking_policy.next,
+                               CORE_PARKING_DECREMENT);
         ret = cpu_up(cpu);
         if ( ret )
             return ret;
@@ -239,12 +242,12 @@ uint32_t get_cur_idle_nums(void)
     return cur_idle_nums;
 }
 
-static const struct cp_policy power_first = {
+static const struct cp_policy __initconst_cf_clobber power_first = {
     .name = "power",
     .next = core_parking_power,
 };
 
-static const struct cp_policy performance_first = {
+static const struct cp_policy __initconst_cf_clobber performance_first = {
     .name = "performance",
     .next = core_parking_performance,
 };
@@ -254,7 +257,7 @@ static int __init register_core_parking_
     if ( !policy || !policy->next )
         return -EINVAL;
 
-    core_parking_policy = policy;
+    core_parking_policy = *policy;
     return 0;
 }
 
@@ -269,4 +272,4 @@ static int __init cf_check core_parking_
 
     return ret;
 }
-__initcall(core_parking_init);
+presmp_initcall(core_parking_init);


From xen-devel-bounces@lists.xenproject.org Wed Jan 17 09:31:14 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 17 Jan 2024 09:31:14 +0000
Received: from list by lists.xenproject.org with outflank-mailman.668307.1040384 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQ2GH-0003FM-6L; Wed, 17 Jan 2024 09:31:05 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 668307.1040384; Wed, 17 Jan 2024 09:31:05 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQ2GH-0003FF-2b; Wed, 17 Jan 2024 09:31:05 +0000
Received: by outflank-mailman (input) for mailman id 668307;
 Wed, 17 Jan 2024 09:31:04 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=yGoF=I3=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rQ2GG-0003F8-OT
 for xen-devel@lists.xenproject.org; Wed, 17 Jan 2024 09:31:04 +0000
Received: from mail-wm1-x332.google.com (mail-wm1-x332.google.com
 [2a00:1450:4864:20::332])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 21cfe5ca-b51b-11ee-98f2-6d05b1d4d9a1;
 Wed, 17 Jan 2024 10:31:03 +0100 (CET)
Received: by mail-wm1-x332.google.com with SMTP id
 5b1f17b1804b1-40e779f030aso16926085e9.0
 for <xen-devel@lists.xenproject.org>; Wed, 17 Jan 2024 01:31:03 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 l14-20020adffe8e000000b00336755f15b0sm1196574wrr.68.2024.01.17.01.31.02
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 17 Jan 2024 01:31:02 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 21cfe5ca-b51b-11ee-98f2-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1705483863; x=1706088663; darn=lists.xenproject.org;
        h=content-transfer-encoding:autocrypt:subject:from:cc:to
         :content-language:user-agent:mime-version:date:message-id:from:to:cc
         :subject:date:message-id:reply-to;
        bh=r7d5yqvWynTJK0DON1Pp2j9n2EnKryr1JAOIGpNMoy8=;
        b=OhgixGAjdwAFevS8qmpVaPHhQaRV8mkRFo3RIMwuOg2QxPYb5uoRyDo98avg89dBvc
         er08VIdfJ+FJ02M0X43NWQ+JohTlI4Lza21TxR538FcSnEoA+kP8LrwMFwUAMBumF4gy
         r2/Z9Sy9u828Xk72B+8j1vvkXxKoHaSJEIGdmw1bs3H+gcQDSEyvbzR4YzcrPMFuCAGC
         8nZqx4SnMmiSR9rA+6b8KDJq0K2bvVNlS7XSHUJO14+/Lr2DXqaCYs6nxY0SYXXPMM0X
         hvMvVtTtmxeS05p/oRrVsuHh1Zrxw8yQbvmePAdra/A17Q22f8ios/U7/mlfpMVerWE0
         awdA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705483863; x=1706088663;
        h=content-transfer-encoding:autocrypt:subject:from:cc:to
         :content-language:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=r7d5yqvWynTJK0DON1Pp2j9n2EnKryr1JAOIGpNMoy8=;
        b=uiMiXKN/XI5kpQa1X88+AW5JeREyINJ2iNHcNXvT3zedOZq1jwa0id3VuGAVspMe0n
         wuAiFLLuV5rlxmEnq3QtcX3ifntidKCFDZ6jIkT6CkzL+KJe9KscbYWZm+v1VpA465t4
         Twwt+ty7G4fdCTFSRX8fwXxPGaMiJ4jAIH2aLBz9BB2L3ViyUuHWgmlK88X/Omoitlo/
         W9XSBHqEeR6GotvjzpbnlB0OhlB7GykQhRWNLfi3T1qP7Dk1KnkjopwrYnq+ttA93qx3
         yT1AbAQvAquhOfGGduxeAPj5PBpXTSkN25PB5ZP8EMyUguXIl3grrJHoiTdOdDDuQgxI
         YHnw==
X-Gm-Message-State: AOJu0YzQAzKSm/AJuPTxoH9yq+UBe/hkmTJvZ54Yg90CyJ124wbQ3qYJ
	pm9tldQFf0sE4Wu//4Ri809Ztm6MkSZBVpAm/0L+XLK+Cw==
X-Google-Smtp-Source: AGHT+IG3/dFyK74fsbs14901TkS6LYRk9/VQLopE0GCu3Ur11sM9D/QWqFUf+Hla+6rjnHNnCLA7ig==
X-Received: by 2002:a05:600c:26d6:b0:40e:52e6:ccc3 with SMTP id 22-20020a05600c26d600b0040e52e6ccc3mr287114wmv.48.1705483863003;
        Wed, 17 Jan 2024 01:31:03 -0800 (PST)
Message-ID: <65fb766e-ab5a-49ab-a904-01ee9711d42d@suse.com>
Date: Wed, 17 Jan 2024 10:31:02 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Content-Language: en-US
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, Wei Liu <wl@xen.org>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Paul Durrant <paul@xen.org>
From: Jan Beulich <jbeulich@suse.com>
Subject: [PATCH] x86/guest: finish conversion to altcall
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

While .setup() and .e820_fixup() don't need fiddling with for being run
only very early, both .ap_setup() and .resume() want converting too:
This way both pre-filled struct hypervisor_ops instances can become
__initconst_cf_clobber, thus allowing to eliminate up to 5 more ENDBR
(configuration dependent) during the 2nd phase of alternatives patching.

While fiddling with section annotations here, also move "ops" itself to
.data.ro_after_init.

Signed-off-by: Jan Beulich <jbeulich@suse.com>

--- a/xen/arch/x86/guest/hyperv/hyperv.c
+++ b/xen/arch/x86/guest/hyperv/hyperv.c
@@ -207,7 +207,7 @@ static int cf_check flush_tlb(
     return hyperv_flush_tlb(mask, va, flags);
 }
 
-static const struct hypervisor_ops __initconstrel ops = {
+static const struct hypervisor_ops __initconst_cf_clobber ops = {
     .name = "Hyper-V",
     .setup = setup,
     .ap_setup = ap_setup,
--- a/xen/arch/x86/guest/hypervisor.c
+++ b/xen/arch/x86/guest/hypervisor.c
@@ -13,7 +13,7 @@
 #include <asm/cache.h>
 #include <asm/guest.h>
 
-static struct hypervisor_ops __read_mostly ops;
+static struct hypervisor_ops __ro_after_init ops;
 
 const char *__init hypervisor_probe(void)
 {
@@ -49,7 +49,7 @@ void __init hypervisor_setup(void)
 int hypervisor_ap_setup(void)
 {
     if ( ops.ap_setup )
-        return ops.ap_setup();
+        return alternative_call(ops.ap_setup);
 
     return 0;
 }
@@ -57,7 +57,7 @@ int hypervisor_ap_setup(void)
 void hypervisor_resume(void)
 {
     if ( ops.resume )
-        ops.resume();
+        alternative_vcall(ops.resume);
 }
 
 void __init hypervisor_e820_fixup(void)
--- a/xen/arch/x86/guest/xen/xen.c
+++ b/xen/arch/x86/guest/xen/xen.c
@@ -318,7 +318,7 @@ static int cf_check flush_tlb(
     return xen_hypercall_hvm_op(HVMOP_flush_tlbs, NULL);
 }
 
-static const struct hypervisor_ops __initconstrel ops = {
+static const struct hypervisor_ops __initconst_cf_clobber ops = {
     .name = "Xen",
     .setup = setup,
     .ap_setup = ap_setup,


From xen-devel-bounces@lists.xenproject.org Wed Jan 17 09:32:07 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 17 Jan 2024 09:32:07 +0000
Received: from list by lists.xenproject.org with outflank-mailman.668310.1040394 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQ2HG-0003jG-FZ; Wed, 17 Jan 2024 09:32:06 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 668310.1040394; Wed, 17 Jan 2024 09:32:06 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQ2HG-0003j9-C5; Wed, 17 Jan 2024 09:32:06 +0000
Received: by outflank-mailman (input) for mailman id 668310;
 Wed, 17 Jan 2024 09:32:05 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=sm03=I3=gmail.com=oleksii.kurochko@srs-se1.protection.inumbo.net>)
 id 1rQ2HF-0003j3-F1
 for xen-devel@lists.xenproject.org; Wed, 17 Jan 2024 09:32:05 +0000
Received: from mail-ej1-x630.google.com (mail-ej1-x630.google.com
 [2a00:1450:4864:20::630])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 4617bf7d-b51b-11ee-98f2-6d05b1d4d9a1;
 Wed, 17 Jan 2024 10:32:04 +0100 (CET)
Received: by mail-ej1-x630.google.com with SMTP id
 a640c23a62f3a-a27733ae1dfso1242648366b.3
 for <xen-devel@lists.xenproject.org>; Wed, 17 Jan 2024 01:32:04 -0800 (PST)
Received: from [192.168.206.239] ([94.75.70.14])
 by smtp.gmail.com with ESMTPSA id
 k6-20020a170906128600b00a2b0b0fc80esm7513507ejb.193.2024.01.17.01.32.02
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 17 Jan 2024 01:32:03 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 4617bf7d-b51b-11ee-98f2-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1705483924; x=1706088724; darn=lists.xenproject.org;
        h=mime-version:user-agent:content-transfer-encoding:references
         :in-reply-to:date:cc:to:from:subject:message-id:from:to:cc:subject
         :date:message-id:reply-to;
        bh=/5DcSU7Y1vSJUQo+6aPVW3U6Viw4nzWrVTue6XGKaMw=;
        b=HrfrByMito2MUQS/fNvoxnQZ+oCgRfIV1e0OM8USpj6Pu6COCqq56b/GLOrUFV+n4U
         pF57eEo6JmeHcUyFF1iZ3vR77oRZro/xSCqUriotA19PlUgpBR2/dyVRIYUA1YLmaYAY
         fVJ40ad/jU36CJ1ASgjzQDEI0Ism7rGO2eu18vsYeyUrZn3LqZmNwhJl4AswQuzdbkSc
         bKzsKtHvDBHgzxcAgqGpWsp/zzXmh8QRutJDYqwuQgg9CbdFtpv7PQeR/MqJ3jGc8l+j
         fBLyRlQ2eHTgBLH2sfSdnwd5jA3n3gyVsnb3p5fCm0+hgWqiKip4eHPUX+Ln+khDqx/S
         zldw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705483924; x=1706088724;
        h=mime-version:user-agent:content-transfer-encoding:references
         :in-reply-to:date:cc:to:from:subject:message-id:x-gm-message-state
         :from:to:cc:subject:date:message-id:reply-to;
        bh=/5DcSU7Y1vSJUQo+6aPVW3U6Viw4nzWrVTue6XGKaMw=;
        b=lqnl9yzuU4GuiqCjPWl97L/8AP0jb6opqRIdbWpBDakpjqvmrojpSBW99L5RHxippq
         VHYzWMCEyRz/9mOixMa9ZLZj5yOxspq6kzplxbFt2qjr+qlikc0nXbQNrfHfj+UwVs1S
         blT21/gH+Tag+hibU2zZeOsLddyH/oWDgiXb3p9Bn4ccDBKvHy9XGWDzIsOCYn8xIguy
         vxLK+gsoVxeASQDY2+jZTKLcMuxJZkrD9VKJLq6Kn7/iVLXScAj6sbdWFmfhvCMGhdXK
         mefxNmN/p0cNMPaGTpxpIWAq7ZG8RD6ki4CW3Rf3QuCN8234FwK35vJcSucnxyloFlJH
         1odA==
X-Gm-Message-State: AOJu0Ywnm4awrb+UXHDOZbGC0fTziO33f2qOnShkBa1hLSPFBkg/PsbI
	15WryGciP6lnkp0VW/xwcdI=
X-Google-Smtp-Source: AGHT+IEXyT/7E61wbpgooW/TT+2j3nrNATAsgbEzvNZNuvKUVOBZK4d/7Q2uE4+tTSCSH0DDaQunvA==
X-Received: by 2002:a17:907:31c6:b0:a29:1419:f522 with SMTP id xf6-20020a17090731c600b00a291419f522mr2827794ejb.72.1705483923533;
        Wed, 17 Jan 2024 01:32:03 -0800 (PST)
Message-ID: <3e11cf09b1a9b98e3bd4a82e7f0bd2bcde2ed67d.camel@gmail.com>
Subject: Re: [PATCH v3 21/34] xen/riscv: introduce p2m.h
From: Oleksii <oleksii.kurochko@gmail.com>
To: Julien Grall <julien@xen.org>, Jan Beulich <jbeulich@suse.com>
Cc: Shawn Anastasio <sanastasio@raptorengineering.com>, Alistair Francis
	 <alistair.francis@wdc.com>, Bob Eshleman <bobbyeshleman@gmail.com>, Connor
	Davis <connojdavis@gmail.com>, xen-devel@lists.xenproject.org
Date: Wed, 17 Jan 2024 11:32:02 +0200
In-Reply-To: <402ece4f-a3bf-4eab-ac4c-ae36490ae114@xen.org>
References: <cover.1703255175.git.oleksii.kurochko@gmail.com>
	 <c3b1f24aea1ba01505697717b240c8d036abfee1.1703255175.git.oleksii.kurochko@gmail.com>
	 <abeafa19-7867-46b2-bc0e-b39eaa0f5036@xen.org>
	 <abef4701c3f2292e672679f1a18c826d699e1af2.camel@gmail.com>
	 <c1abf4ca-d69a-4a17-b23c-18f06b8fddda@suse.com>
	 <5bf15f83be5a1cf38bff58d996e74a6de6b044b5.camel@gmail.com>
	 <402ece4f-a3bf-4eab-ac4c-ae36490ae114@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
User-Agent: Evolution 3.50.2 (3.50.2-1.fc39) 
MIME-Version: 1.0

Hi Julien,

On Tue, 2024-01-16 at 17:12 +0000, Julien Grall wrote:
> Hi Oleksii,
>=20
> On 16/01/2024 09:44, Oleksii wrote:
> > On Mon, 2024-01-15 at 12:01 +0100, Jan Beulich wrote:
> > > On 15.01.2024 11:35, Oleksii wrote:
> > > > Hi Julien,
> > > >=20
> > > > On Fri, 2024-01-12 at 10:39 +0000, Julien Grall wrote:
> > > > > Hi Oleksii,
> > > > >=20
> > > > > On 22/12/2023 15:13, Oleksii Kurochko wrote:
> > > > > > Signed-off-by: Oleksii Kurochko
> > > > > > <oleksii.kurochko@gmail.com>
> > > > > > ---
> > > > > > Changes in V3:
> > > > > > =C2=A0=C2=A0 - add SPDX
> > > > > > =C2=A0=C2=A0 - drop unneeded for now p2m types.
> > > > > > =C2=A0=C2=A0 - return false in all functions implemented with B=
UG()
> > > > > > inside.
> > > > > > =C2=A0=C2=A0 - update the commit message
> > > > > > ---
> > > > > > Changes in V2:
> > > > > > =C2=A0=C2=A0 - Nothing changed. Only rebase.
> > > > > > ---
> > > > > > =C2=A0=C2=A0 xen/arch/ppc/include/asm/p2m.h=C2=A0=C2=A0 |=C2=A0=
=C2=A0 3 +-
> > > > > > =C2=A0=C2=A0 xen/arch/riscv/include/asm/p2m.h | 102
> > > > > > +++++++++++++++++++++++++++++++
> > > > > > =C2=A0=C2=A0 2 files changed, 103 insertions(+), 2 deletions(-)
> > > > > > =C2=A0=C2=A0 create mode 100644 xen/arch/riscv/include/asm/p2m.=
h
> > > > > >=20
> > > > > > diff --git a/xen/arch/ppc/include/asm/p2m.h
> > > > > > b/xen/arch/ppc/include/asm/p2m.h
> > > > > > index 25ba054668..3bc05b7c05 100644
> > > > > > --- a/xen/arch/ppc/include/asm/p2m.h
> > > > > > +++ b/xen/arch/ppc/include/asm/p2m.h
> > > > > > @@ -50,8 +50,7 @@ static inline void
> > > > > > memory_type_changed(struct
> > > > > > domain *d)
> > > > > > =C2=A0=C2=A0 static inline int
> > > > > > guest_physmap_mark_populate_on_demand(struct
> > > > > > domain *d, unsigned long gfn,
> > > > > > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=20
> > > > > > unsigned
> > > > > > int order)
> > > > > > =C2=A0=C2=A0 {
> > > > > > -=C2=A0=C2=A0=C2=A0 BUG_ON("unimplemented");
> > > > > > -=C2=A0=C2=A0=C2=A0 return 1;
> > > > > > +=C2=A0=C2=A0=C2=A0 return -EOPNOTSUPP;
> > > > > > =C2=A0=C2=A0 }
> > > > > > =C2=A0=C2=A0=20
> > > > > > =C2=A0=C2=A0 static inline int guest_physmap_add_entry(struct d=
omain
> > > > > > *d,
> > > > > > diff --git a/xen/arch/riscv/include/asm/p2m.h
> > > > > > b/xen/arch/riscv/include/asm/p2m.h
> > > > > > new file mode 100644
> > > > > > index 0000000000..d270ef6635
> > > > > > --- /dev/null
> > > > > > +++ b/xen/arch/riscv/include/asm/p2m.h
> > > > > > @@ -0,0 +1,102 @@
> > > > > > +/* SPDX-License-Identifier: GPL-2.0-only */
> > > > > > +#ifndef __ASM_RISCV_P2M_H__
> > > > > > +#define __ASM_RISCV_P2M_H__
> > > > > > +
> > > > > > +#include <asm/page-bits.h>
> > > > > > +
> > > > > > +#define paddr_bits PADDR_BITS
> > > > > > +
> > > > > > +/*
> > > > > > + * List of possible type for each page in the p2m entry.
> > > > > > + * The number of available bit per page in the pte for
> > > > > > this
> > > > > > purpose is 4 bits.
> > > > > > + * So it's possible to only have 16 fields. If we run out
> > > > > > of
> > > > > > value
> > > > > > in the
> > > > > > + * future, it's possible to use higher value for pseudo-
> > > > > > type
> > > > > > and
> > > > > > don't store
> > > > > > + * them in the p2m entry.
> > > > > > + */
> > > > >=20
> > > > > This looks like a verbatim copy from Arm. Did you actually
> > > > > check
> > > > > RISC-V
> > > > > has 4 bits available in the PTE to store this value?
> > > > Thanks for noticing that, in RISC-V it is available only 2 bits
> > > > (
> > > > bits
> > > > 8 and 9), so I'll update the comment:
> > > > 53=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 10 9=C2=A0=C2=A0=C2=A0 8 7 6 =
5 4 3 2 1 0
> > > > =C2=A0=C2=A0Physical Page Number=C2=A0=C2=A0=C2=A0=C2=A0 RSV=C2=A0 =
D A G U X W R V
> > >=20
> > > It's RSW (Reserved for Supervisor softWare use), not RSV, which
> > > is
> > > pretty
> > > important in this context.
> > Yes, you are right it is RSW. Thanks for the correction.
> >=20
> > >=20
> > > > It seems that I missed something in the Arm
> > > > code/architecture.As
> > > > far as I recall, in Arm, bits 5-8 are ignored by the MMU, and
> > > > they
> > > > are expected
> > > > to be used by the hypervisor for its purpose.
> > > > However, in the code, I notice that these bits are utilized for
> > > > storing
> > > > a reference counter.
> > >=20
> > > Why "however"? Hardware still is going to ignore these bits.
> > Sure, these bits are ignored by hardware. What I meant is that,
> > according to the code, these bits are used for storing a reference
> > counter, not p2m_type_t. I guess I am missing something...
>=20
> I can only guess where you saw the field used for reference counting.
> This was the domain map page infrastruture, right?
Yes, you are right.
>=20
> If so, this is for stage-1 page-table (aka hypervisor table) and not
> the=20
> stage-2 (e.g. P2M). For the latter, we would use the p2m_type_t.
I confused stage-1 & stage-2. Now everything fell into place. Thanks.

~ Oleksii


From xen-devel-bounces@lists.xenproject.org Wed Jan 17 09:32:59 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 17 Jan 2024 09:32:59 +0000
Received: from list by lists.xenproject.org with outflank-mailman.668314.1040404 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQ2I6-0004JS-Qr; Wed, 17 Jan 2024 09:32:58 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 668314.1040404; Wed, 17 Jan 2024 09:32:58 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQ2I6-0004JL-NT; Wed, 17 Jan 2024 09:32:58 +0000
Received: by outflank-mailman (input) for mailman id 668314;
 Wed, 17 Jan 2024 09:32:57 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=yGoF=I3=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rQ2I4-0004Iu-Ua
 for xen-devel@lists.xenproject.org; Wed, 17 Jan 2024 09:32:57 +0000
Received: from mail-wm1-x32f.google.com (mail-wm1-x32f.google.com
 [2a00:1450:4864:20::32f])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 648cb47f-b51b-11ee-98f2-6d05b1d4d9a1;
 Wed, 17 Jan 2024 10:32:55 +0100 (CET)
Received: by mail-wm1-x32f.google.com with SMTP id
 5b1f17b1804b1-40e60e135a7so50873605e9.0
 for <xen-devel@lists.xenproject.org>; Wed, 17 Jan 2024 01:32:55 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 fa6-20020a05600c518600b0040e861ad5d2sm3904323wmb.0.2024.01.17.01.32.54
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 17 Jan 2024 01:32:54 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 648cb47f-b51b-11ee-98f2-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1705483975; x=1706088775; darn=lists.xenproject.org;
        h=content-transfer-encoding:autocrypt:subject:from:cc:to
         :content-language:user-agent:mime-version:date:message-id:from:to:cc
         :subject:date:message-id:reply-to;
        bh=RtlXf3QLKiIdchH2atleU3qQRRjIu99YEXalKK/8Bak=;
        b=hClzWmlFJyIRGNRwjIkAlp9oDuD+3XDuziDV5+XEOI8hymncCbqpCHjKsN74jHgsbN
         gluvdDiKb3go0hzuV+df05uXVAWbmuj9Gs7wix5W2YevwEupua/zyQxfhyy4XNLWjV+2
         eyHUKWvkIKUM8bDIMZ2aesWF80DygnSrI4I8HLvjscmzbsbK2PUMPOzxTbqG4vuNR+5S
         aIGR9oDI7DUaEabeDYH3ZJ9mwRD3aIsTrwwzft3YWp9oqul3TZlVK6ts3hytaXNC5uX/
         plI7ZCP6QEWKhS0V0JnWcsrL3jBU8OSsCB1KdshLoIjPvpHJP59s7pmoBg5M5SzQeGQ4
         lZCg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705483975; x=1706088775;
        h=content-transfer-encoding:autocrypt:subject:from:cc:to
         :content-language:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=RtlXf3QLKiIdchH2atleU3qQRRjIu99YEXalKK/8Bak=;
        b=SHKL2o8IoYbHwwISl4CJ7tMhlYCh1Zy5oITuEGdBP25Qrpx7ABwXr4eYzDbFMElKcg
         sDg5e6ZS/W9VYjTPXUwQOmhn8V77vA6FnCzJkOOTr2PlayhIYoSbUbsPFfLcSha/Ov3o
         vG3rm2G/+NutkeO8PDWnZcaNf19e1AkYkiGrOJolx63jj61wE4/reQDZ3eDS9DGg8vpC
         rIm3qzT4V9UbOsfdxmsmznDLgCsJFo/UQboNBxdjz5/k08eQJExs8nK2oP2YyVymBLGo
         Sct/O4HXQIRyM90awRal7l5Ih5Ae4beWic2HicPsam39+8AyKSMperE082YbdZJhoC6v
         pckw==
X-Gm-Message-State: AOJu0Yy0NAlQRL9MigeAGEyB8waXawBI6IjukdK+nnND/yANlg6oHis3
	Z0wkVCqQXswtKUkM6YZklHCa5W0Wdni2KhOshcuTi5fB1g==
X-Google-Smtp-Source: AGHT+IHSc7ajaTsFLUTdTznqL3hsdsnxwzM2c6JfxGkaV4jJRdniRIXHdzOrsJ9rfWEg6s3tmawXaA==
X-Received: by 2002:a05:600c:198c:b0:40e:7734:ead4 with SMTP id t12-20020a05600c198c00b0040e7734ead4mr2824050wmq.123.1705483974871;
        Wed, 17 Jan 2024 01:32:54 -0800 (PST)
Message-ID: <f5c8e38c-66cb-4f21-b66b-056061e37383@suse.com>
Date: Wed, 17 Jan 2024 10:32:53 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Content-Language: en-US
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, Wei Liu <wl@xen.org>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
From: Jan Beulich <jbeulich@suse.com>
Subject: [PATCH] x86/MTRR: avoid several indirect calls
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

The use of (supposedly) vendor-specific hooks is a relic from the days
when Xen was still possible to build as 32-bit binary. There's no
expectation that a new need for such an abstraction would arise. Convert
mttr_if to a mere boolean and all prior calls through it to direct ones,
thus allowing to eliminate 6 ENDBR from .text.

Signed-off-by: Jan Beulich <jbeulich@suse.com>
---
Strictly speaking mtrr_if could go apparently away as well, for
effectively mirroring cpu_has_mtrr now (once mtrr_bp_init() has run).
Replacing the variable uses would be further code churn, though.

--- a/xen/arch/x86/cpu/mtrr/generic.c
+++ b/xen/arch/x86/cpu/mtrr/generic.c
@@ -287,7 +287,7 @@ static void set_fixed_range(int msr, boo
 	}
 }
 
-int cf_check generic_get_free_region(
+int mtrr_get_free_region(
     unsigned long base, unsigned long size, int replace_reg)
 /*  [SUMMARY] Get a free MTRR.
     <base> The starting (base) address of the region.
@@ -303,14 +303,14 @@ int cf_check generic_get_free_region(
 	if (replace_reg >= 0 && replace_reg < max)
 		return replace_reg;
 	for (i = 0; i < max; ++i) {
-		mtrr_if->get(i, &lbase, &lsize, &ltype);
+		mtrr_get(i, &lbase, &lsize, &ltype);
 		if (lsize == 0)
 			return i;
 	}
 	return -ENOSPC;
 }
 
-static void cf_check generic_get_mtrr(
+void mtrr_get(
     unsigned int reg, unsigned long *base, unsigned long *size, mtrr_type *type)
 {
 	uint64_t _mask, _base;
@@ -500,7 +500,7 @@ static void post_set(bool pge)
 	spin_unlock(&set_atomicity_lock);
 }
 
-static void cf_check generic_set_all(void)
+void mtrr_set_all(void)
 {
 	unsigned long mask, count;
 	unsigned long flags;
@@ -523,7 +523,7 @@ static void cf_check generic_set_all(voi
 	}
 }
 
-static void cf_check generic_set_mtrr(
+void mtrr_set(
     unsigned int reg, unsigned long base, unsigned long size, mtrr_type type)
 /*  [SUMMARY] Set variable MTRR register on the local CPU.
     <reg> The register to set.
@@ -567,7 +567,7 @@ static void cf_check generic_set_mtrr(
 	local_irq_restore(flags);
 }
 
-int cf_check generic_validate_add_page(
+int mtrr_validate_add_page(
     unsigned long base, unsigned long size, unsigned int type)
 {
 	unsigned long lbase, last;
@@ -586,21 +586,9 @@ int cf_check generic_validate_add_page(
 }
 
 
-static int cf_check generic_have_wrcomb(void)
+bool mtrr_have_wrcomb(void)
 {
 	unsigned long config;
 	rdmsrl(MSR_MTRRcap, config);
 	return (config & (1ULL << 10));
 }
-
-/* generic structure...
- */
-const struct mtrr_ops generic_mtrr_ops = {
-	.use_intel_if      = true,
-	.set_all	   = generic_set_all,
-	.get               = generic_get_mtrr,
-	.get_free_region   = generic_get_free_region,
-	.set               = generic_set_mtrr,
-	.validate_add_page = generic_validate_add_page,
-	.have_wrcomb       = generic_have_wrcomb,
-};
--- a/xen/arch/x86/cpu/mtrr/main.c
+++ b/xen/arch/x86/cpu/mtrr/main.c
@@ -57,7 +57,7 @@ static DEFINE_MUTEX(mtrr_mutex);
 u64 __read_mostly size_or_mask;
 u64 __read_mostly size_and_mask;
 
-const struct mtrr_ops *__read_mostly mtrr_if = NULL;
+static bool __ro_after_init mtrr_if;
 
 static void set_mtrr(unsigned int reg, unsigned long base,
 		     unsigned long size, mtrr_type type);
@@ -78,23 +78,12 @@ static const char *mtrr_attrib_to_str(in
 	return (x <= 6) ? mtrr_strings[x] : "?";
 }
 
-/*  Returns non-zero if we have the write-combining memory type  */
-static int have_wrcomb(void)
-{
-	return (mtrr_if->have_wrcomb ? mtrr_if->have_wrcomb() : 0);
-}
-
 /*  This function returns the number of variable MTRRs  */
 static void __init set_num_var_ranges(void)
 {
-	unsigned long config = 0;
+	unsigned long config;
 
-	if (use_intel()) {
-		rdmsrl(MSR_MTRRcap, config);
-	} else if (is_cpu(AMD))
-		config = 2;
-	else if (is_cpu(CENTAUR))
-		config = 8;
+	rdmsrl(MSR_MTRRcap, config);
 	num_var_ranges = MASK_EXTR(config, MTRRcap_VCNT);
 }
 
@@ -149,10 +138,10 @@ static void cf_check ipi_handler(void *i
 	if (data->smp_reg == ~0U) /* update all mtrr registers */
 		/* At the cpu hot-add time this will reinitialize mtrr 
  		 * registres on the existing cpus. It is ok.  */
-		mtrr_if->set_all();
+		mtrr_set_all();
 	else /* single mtrr register update */
-		mtrr_if->set(data->smp_reg, data->smp_base, 
-			     data->smp_size, data->smp_type);
+		mtrr_set(data->smp_reg, data->smp_base,
+			 data->smp_size, data->smp_type);
 
 	atomic_dec(&data->count);
 	while(atomic_read(&data->gate))
@@ -198,10 +187,9 @@ static inline int types_compatible(mtrr_
  * of CPUs. As each CPU disables interrupts, it'll decrement it once. We wait
  * until it hits 0 and proceed. We set the data.gate flag and reset data.count.
  * Meanwhile, they are waiting for that flag to be set. Once it's set, each 
- * CPU goes through the transition of updating MTRRs. The CPU vendors may each do it 
- * differently, so we call mtrr_if->set() callback and let them take care of it.
- * When they're done, they again decrement data->count and wait for data.gate to 
- * be reset. 
+ * CPU goes through the transition of updating MTRRs.
+ * When mtrr_set() is done, they again decrement data->count and wait for
+ * data.gate to be reset.
  * When we finish, we wait for data.count to hit 0 and toggle the data.gate flag.
  * Everyone then enables interrupts and we all continue on.
  *
@@ -251,9 +239,9 @@ static void set_mtrr(unsigned int reg, u
 	if (reg == ~0U)  /* update all mtrr registers */
 		/* at boot or resume time, this will reinitialize the mtrrs on 
 		 * the bp. It is ok. */
-		mtrr_if->set_all();
+		mtrr_set_all();
 	else /* update the single mtrr register */
-		mtrr_if->set(reg,base,size,type);
+		mtrr_set(reg, base, size, type);
 
 	/* wait for the others */
 	while (atomic_read(&data.count))
@@ -319,7 +307,7 @@ int mtrr_add_page(unsigned long base, un
 	if (!mtrr_if)
 		return -ENXIO;
 		
-	if ((error = mtrr_if->validate_add_page(base,size,type)))
+	if ((error = mtrr_validate_add_page(base, size, type)))
 		return error;
 
 	if (type >= MTRR_NUM_TYPES) {
@@ -328,7 +316,7 @@ int mtrr_add_page(unsigned long base, un
 	}
 
 	/*  If the type is WC, check that this processor supports it  */
-	if ((type == X86_MT_WC) && !have_wrcomb()) {
+	if ((type == X86_MT_WC) && mtrr_have_wrcomb()) {
 		printk(KERN_WARNING
 		       "mtrr: your processor doesn't support write-combining\n");
 		return -EOPNOTSUPP;
@@ -350,7 +338,7 @@ int mtrr_add_page(unsigned long base, un
 	/*  Search for existing MTRR  */
 	mutex_lock(&mtrr_mutex);
 	for (i = 0; i < num_var_ranges; ++i) {
-		mtrr_if->get(i, &lbase, &lsize, &ltype);
+		mtrr_get(i, &lbase, &lsize, &ltype);
 		if (!lsize || base > lbase + lsize - 1 || base + size - 1 < lbase)
 			continue;
 		/*  At this point we know there is some kind of overlap/enclosure  */
@@ -385,7 +373,7 @@ int mtrr_add_page(unsigned long base, un
 		goto out;
 	}
 	/*  Search for an empty MTRR  */
-	i = mtrr_if->get_free_region(base, size, replace);
+	i = mtrr_get_free_region(base, size, replace);
 	if (i >= 0) {
 		set_mtrr(i, base, size, type);
 		if (likely(replace < 0))
@@ -494,7 +482,7 @@ int mtrr_del_page(int reg, unsigned long
 	if (reg < 0) {
 		/*  Search for existing MTRR  */
 		for (i = 0; i < max; ++i) {
-			mtrr_if->get(i, &lbase, &lsize, &ltype);
+			mtrr_get(i, &lbase, &lsize, &ltype);
 			if (lbase == base && lsize == size) {
 				reg = i;
 				break;
@@ -510,7 +498,7 @@ int mtrr_del_page(int reg, unsigned long
 		printk(KERN_WARNING "mtrr: register: %d too big\n", reg);
 		goto out;
 	}
-	mtrr_if->get(reg, &lbase, &lsize, &ltype);
+	mtrr_get(reg, &lbase, &lsize, &ltype);
 	if (lsize < 1) {
 		printk(KERN_WARNING "mtrr: MTRR %d not used\n", reg);
 		goto out;
@@ -568,7 +556,7 @@ struct mtrr_value {
 void __init mtrr_bp_init(void)
 {
 	if (cpu_has_mtrr) {
-		mtrr_if = &generic_mtrr_ops;
+		mtrr_if = true;
 		size_or_mask = ~((1ULL << (paddr_bits - PAGE_SHIFT)) - 1);
 		size_and_mask = ~size_or_mask & 0xfffff00000ULL;
 	}
@@ -576,14 +564,13 @@ void __init mtrr_bp_init(void)
 	if (mtrr_if) {
 		set_num_var_ranges();
 		init_table();
-		if (use_intel())
-			get_mtrr_state();
+		get_mtrr_state();
 	}
 }
 
 void mtrr_ap_init(void)
 {
-	if (!mtrr_if || !use_intel() || hold_mtrr_updates_on_aps)
+	if (!mtrr_if || hold_mtrr_updates_on_aps)
 		return;
 	/*
 	 * Ideally we should hold mtrr_mutex here to avoid mtrr entries changed,
@@ -612,32 +599,25 @@ void mtrr_save_state(void)
 
 void mtrr_aps_sync_begin(void)
 {
-	if (!use_intel())
-		return;
 	hold_mtrr_updates_on_aps = 1;
 }
 
 void mtrr_aps_sync_end(void)
 {
-	if (!use_intel())
-		return;
 	set_mtrr(~0U, 0, 0, 0);
 	hold_mtrr_updates_on_aps = 0;
 }
 
 void mtrr_bp_restore(void)
 {
-	if (!use_intel())
-		return;
-	mtrr_if->set_all();
+	mtrr_set_all();
 }
 
 static int __init cf_check mtrr_init_finialize(void)
 {
 	if (!mtrr_if)
 		return 0;
-	if (use_intel())
-		mtrr_state_warn();
+	mtrr_state_warn();
 	return 0;
 }
 __initcall(mtrr_init_finialize);
--- a/xen/arch/x86/cpu/mtrr/mtrr.h
+++ b/xen/arch/x86/cpu/mtrr/mtrr.h
@@ -6,40 +6,21 @@
 #define MTRR_CHANGE_MASK_VARIABLE  0x02
 #define MTRR_CHANGE_MASK_DEFTYPE   0x04
 
-
-struct mtrr_ops {
-	u32	vendor;
-	bool	use_intel_if;
-//	void	(*init)(void);
-	void	(*set)(unsigned int reg, unsigned long base,
-		       unsigned long size, mtrr_type type);
-	void	(*set_all)(void);
-
-	void	(*get)(unsigned int reg, unsigned long *base,
-		       unsigned long *size, mtrr_type * type);
-	int	(*get_free_region)(unsigned long base, unsigned long size,
-				   int replace_reg);
-	int	(*validate_add_page)(unsigned long base, unsigned long size,
-				     unsigned int type);
-	int	(*have_wrcomb)(void);
-};
-
-int cf_check generic_get_free_region(
+void mtrr_get(
+    unsigned int reg, unsigned long *base, unsigned long *size,
+    mtrr_type *type);
+void mtrr_set(
+    unsigned int reg, unsigned long base, unsigned long size, mtrr_type type);
+void mtrr_set_all(void);
+int mtrr_get_free_region(
     unsigned long base, unsigned long size, int replace_reg);
-int cf_check generic_validate_add_page(
+int mtrr_validate_add_page(
     unsigned long base, unsigned long size, unsigned int type);
-
-extern const struct mtrr_ops generic_mtrr_ops;
+bool mtrr_have_wrcomb(void);
 
 void get_mtrr_state(void);
 
-extern void set_mtrr_ops(const struct mtrr_ops *);
-
 extern u64 size_or_mask, size_and_mask;
-extern const struct mtrr_ops *mtrr_if;
-
-#define is_cpu(vnd)	(mtrr_if && mtrr_if->vendor == X86_VENDOR_##vnd)
-#define use_intel()	(mtrr_if && mtrr_if->use_intel_if)
 
 extern unsigned int num_var_ranges;
 
--- a/xen/arch/x86/platform_hypercall.c
+++ b/xen/arch/x86/platform_hypercall.c
@@ -295,7 +295,7 @@ ret_t do_platform_op(
         ret = -EINVAL;
         if ( op->u.read_memtype.reg < num_var_ranges )
         {
-            mtrr_if->get(op->u.read_memtype.reg, &mfn, &nr_mfns, &type);
+            mtrr_get(op->u.read_memtype.reg, &mfn, &nr_mfns, &type);
             op->u.read_memtype.mfn     = mfn;
             op->u.read_memtype.nr_mfns = nr_mfns;
             op->u.read_memtype.type    = type;


From xen-devel-bounces@lists.xenproject.org Wed Jan 17 09:37:14 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 17 Jan 2024 09:37:14 +0000
Received: from list by lists.xenproject.org with outflank-mailman.668322.1040413 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQ2M6-0004yR-94; Wed, 17 Jan 2024 09:37:06 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 668322.1040413; Wed, 17 Jan 2024 09:37:06 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQ2M6-0004yK-6T; Wed, 17 Jan 2024 09:37:06 +0000
Received: by outflank-mailman (input) for mailman id 668322;
 Wed, 17 Jan 2024 09:37:04 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=yGoF=I3=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rQ2M4-0004wC-I1
 for xen-devel@lists.xenproject.org; Wed, 17 Jan 2024 09:37:04 +0000
Received: from mail-wm1-x32d.google.com (mail-wm1-x32d.google.com
 [2a00:1450:4864:20::32d])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id f825b2f6-b51b-11ee-9b0f-b553b5be7939;
 Wed, 17 Jan 2024 10:37:02 +0100 (CET)
Received: by mail-wm1-x32d.google.com with SMTP id
 5b1f17b1804b1-40e72a567eeso32556055e9.0
 for <xen-devel@lists.xenproject.org>; Wed, 17 Jan 2024 01:37:02 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 b16-20020adfe650000000b00337a81a0a89sm1207581wrn.114.2024.01.17.01.37.01
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 17 Jan 2024 01:37:02 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: f825b2f6-b51b-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1705484222; x=1706089022; darn=lists.xenproject.org;
        h=content-transfer-encoding:autocrypt:subject:from:cc:to
         :content-language:user-agent:mime-version:date:message-id:from:to:cc
         :subject:date:message-id:reply-to;
        bh=fFqWW5VsBqyLXFmEo7/4sxcjiyzuJkj0f+lb546UJ40=;
        b=cmAULrSxsu7/InZOz6U4EORF+C1dWk0LC207WcRKGXTZ8sOX6IbCGMbA5yXOLO3FPk
         xW9qbUq/Qlg75D1afSTI4hcRX8XztXyqCYh9TxSdJLXj3FrAE44kxB0avw1j53jJd+m6
         7j8sbbnqEXVqNdeIjcrxBsQWaKJt9dZzNmi21kTS/1B84MRBM87p8F97v4JDRjNMJ2yX
         2LKhE5JYzSNgDDneGqQU6QX8HDtwUnxzJo5gBsU9nPF2wmF4d3w1Wnui8uvEVAN24Xgs
         b8/mKQetsHJCaZauDzX7I+J2IneDntfRd1dQiVP4QgvRd16QQE5iB0NDR7TrfgVYNvQH
         H/WA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705484222; x=1706089022;
        h=content-transfer-encoding:autocrypt:subject:from:cc:to
         :content-language:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=fFqWW5VsBqyLXFmEo7/4sxcjiyzuJkj0f+lb546UJ40=;
        b=wq2nJs8Y7mCCyFbOxuNjAwsrRZn1ahxzAGpm0lsNxBFM4lmH3Jcn9SdaJlr6G3dtl7
         SFdKnJDXTYTN+4oaT3qWWY8EVnRtnQ/XYEfKGrliu5J97fqlNep6cZGOLbiVD1XO4J9a
         2s3pEMlmk6/J8+mxJXZmYaTopOV/GBIEEP6KnZUIXLSCfSiinG+eaY+/WHhAtXqjN7Fv
         02OK/p10lhEJnefS3RhYRsS7PSKNtp8jPrIoJwEzlxGKdcuze7jS2riFyBHj3ucunDlb
         f/BJQviMT4OvpsUMpS8+SkwPSLktWe0B+slUVaVD/uYlCEuLY/4OoCZ7aW0uFGuhy58E
         VFGw==
X-Gm-Message-State: AOJu0YzFw6T9COTMzjZYVkkog8xQ5X9qTHjUx9wbyk8UGf5jxNmn5+b/
	denYe09fcv0gK+MoWgY+LxqqX2KB38uqoZybklVMyiYtzg==
X-Google-Smtp-Source: AGHT+IHgyd8afn6XbClzUUL+fC+1zLdh2cUL+Iq7vApGCsszqBVEKKypKkSyFySw7QbV1uXIg58CFA==
X-Received: by 2002:a05:600c:1f86:b0:40b:5f03:b3b1 with SMTP id je6-20020a05600c1f8600b0040b5f03b3b1mr2784312wmb.211.1705484222341;
        Wed, 17 Jan 2024 01:37:02 -0800 (PST)
Message-ID: <28b46611-ff98-45cd-a2b0-ffe36b8f0ccf@suse.com>
Date: Wed, 17 Jan 2024 10:37:01 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Content-Language: en-US
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, Wei Liu <wl@xen.org>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
From: Jan Beulich <jbeulich@suse.com>
Subject: [PATCH v2] x86/PV: avoid indirect call for I/O emulation quirk hook
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

This way ioemul_handle_proliant_quirk() won't need ENDBR anymore.

While touching this code, also
- arrange for it to not be built at all when !PV,
- add "const" to the last function parameter and bring the definition
  in sync with the declaration (for Misra).

Signed-off-by: Jan Beulich <jbeulich@suse.com>
---
Obviously the file may want moving to pv/ then. I wasn't sure whether
to also fold doing so right into here.

Of course things could also be done the other way around: Have
ioemul_handle_quirk as function name and ioemul_handle_proliant_quirk
be the boolean.
---
v2: Don't use alternative_call(); drop indirect call altogether.

--- a/xen/arch/x86/Makefile
+++ b/xen/arch/x86/Makefile
@@ -45,7 +45,7 @@ obj-$(CONFIG_LIVEPATCH) += alternative.o
 obj-y += msi.o
 obj-y += msr.o
 obj-$(CONFIG_INDIRECT_THUNK) += indirect-thunk.o
-obj-y += ioport_emulate.o
+obj-$(CONFIG_PV) += ioport_emulate.o
 obj-y += irq.o
 obj-$(CONFIG_KEXEC) += machine_kexec.o
 obj-y += mm.o x86_64/mm.o
--- a/xen/arch/x86/include/asm/io.h
+++ b/xen/arch/x86/include/asm/io.h
@@ -47,10 +47,14 @@ __OUT(b,"b",char)
 __OUT(w,"w",short)
 __OUT(l,,int)
 
-/* Function pointer used to handle platform specific I/O port emulation. */
+/*
+ * Boolean indicator and function used to handle platform specific I/O port
+ * emulation.
+ */
 #define IOEMUL_QUIRK_STUB_BYTES 9
+extern bool ioemul_handle_quirk;
 struct cpu_user_regs;
-extern unsigned int (*ioemul_handle_quirk)(
-    uint8_t opcode, char *io_emul_stub, struct cpu_user_regs *regs);
+unsigned int ioemul_handle_proliant_quirk(
+    uint8_t opcode, char *io_emul_stub, const struct cpu_user_regs *regs);
 
 #endif
--- a/xen/arch/x86/ioport_emulate.c
+++ b/xen/arch/x86/ioport_emulate.c
@@ -8,11 +8,10 @@
 #include <xen/sched.h>
 #include <xen/dmi.h>
 
-unsigned int (*__read_mostly ioemul_handle_quirk)(
-    uint8_t opcode, char *io_emul_stub, struct cpu_user_regs *regs);
+bool __ro_after_init ioemul_handle_quirk;
 
-static unsigned int cf_check ioemul_handle_proliant_quirk(
-    u8 opcode, char *io_emul_stub, struct cpu_user_regs *regs)
+unsigned int ioemul_handle_proliant_quirk(
+    uint8_t opcode, char *io_emul_stub, const struct cpu_user_regs *regs)
 {
     static const char stub[] = {
         0x9c,       /*    pushf           */
@@ -95,7 +94,7 @@ static const struct dmi_system_id __init
 static int __init cf_check ioport_quirks_init(void)
 {
     if ( dmi_check_system(ioport_quirks_tbl) )
-        ioemul_handle_quirk = ioemul_handle_proliant_quirk;
+        ioemul_handle_quirk = true;
 
     return 0;
 }
--- a/xen/arch/x86/pv/emul-priv-op.c
+++ b/xen/arch/x86/pv/emul-priv-op.c
@@ -112,7 +112,7 @@ static io_emul_stub_t *io_emul_stub_setu
     /* Some platforms might need to quirk the stub for specific inputs. */
     if ( unlikely(ioemul_handle_quirk) )
     {
-        quirk_bytes = ioemul_handle_quirk(opcode, p, ctxt->ctxt.regs);
+        quirk_bytes = ioemul_handle_proliant_quirk(opcode, p, ctxt->ctxt.regs);
         p += quirk_bytes;
     }
 


From xen-devel-bounces@lists.xenproject.org Wed Jan 17 09:48:46 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 17 Jan 2024 09:48:46 +0000
Received: from list by lists.xenproject.org with outflank-mailman.668326.1040423 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQ2XI-0000WO-9j; Wed, 17 Jan 2024 09:48:40 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 668326.1040423; Wed, 17 Jan 2024 09:48:40 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQ2XI-0000WH-6q; Wed, 17 Jan 2024 09:48:40 +0000
Received: by outflank-mailman (input) for mailman id 668326;
 Wed, 17 Jan 2024 09:48:38 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=yGoF=I3=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rQ2XG-0000GL-4o
 for xen-devel@lists.xenproject.org; Wed, 17 Jan 2024 09:48:38 +0000
Received: from mail-wm1-x32c.google.com (mail-wm1-x32c.google.com
 [2a00:1450:4864:20::32c])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 9592069f-b51d-11ee-9b0f-b553b5be7939;
 Wed, 17 Jan 2024 10:48:36 +0100 (CET)
Received: by mail-wm1-x32c.google.com with SMTP id
 5b1f17b1804b1-40e8cf57d03so1021995e9.0
 for <xen-devel@lists.xenproject.org>; Wed, 17 Jan 2024 01:48:36 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 j17-20020a05600c1c1100b0040c46719966sm25793590wms.25.2024.01.17.01.48.35
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 17 Jan 2024 01:48:35 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 9592069f-b51d-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1705484916; x=1706089716; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:references:cc:to
         :from:content-language:subject:user-agent:mime-version:date
         :message-id:from:to:cc:subject:date:message-id:reply-to;
        bh=9AeZxYgcXWdukIKJMsfb62BEeokrAbqbADDujzYqQyI=;
        b=GOhChJ86cfaLoUvKPZIf5wT9ufH8Rs+nnGL/EgpvfiKEtC2DI3uwsM8IjLsQRAgvT0
         Dv4axNwthfab9NBg5zfdt/LXgVFHcOMfs/94/xYW2gnXvIf63ZmAMEqcIXRnOAuAxs3e
         h21slZ/Sh62YoWIChxMA77i7zGjRKi+ebIpZVw9afaOrpHPYfmRyGLEHsfjDee7PVT/Y
         KQpUJGExfBhNYz+wDXPC7AlOrktOPZG6qlxJyBL8VXsIEDAzsVQRtJris7YvcSUWn6Ol
         yMxlnQvQ1YWZmO+35ZmQR/CYCDS/5xOQXz5ky2Ef29NcDe7EnsmQl6VjB2VZ4pHFjwC/
         Z1hQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705484916; x=1706089716;
        h=content-transfer-encoding:in-reply-to:autocrypt:references:cc:to
         :from:content-language:subject:user-agent:mime-version:date
         :message-id:x-gm-message-state:from:to:cc:subject:date:message-id
         :reply-to;
        bh=9AeZxYgcXWdukIKJMsfb62BEeokrAbqbADDujzYqQyI=;
        b=wOggsNx4HLy3zWf0gn34v0wps34655N9ZhUH/AjrCc1pYu/md+H8jArpYmR6gci7vA
         TuYhS3C34MDhyX7YDCK6ANz4sm6bENChk5J4RtJeuf1uJXmhh4kgC+dDNhIq2BtIP4qE
         vNBL21d7dM9hndZVaH7gnz5VLBA9H+gMZLhAPv0xTYy94WWNYjI2rRjRbvX1ACkvDSuL
         UCQhXiPQV4UpyeLevutFpNdolbEYxLEBpU1pRZMvrPzHtbP9uLynpxZsPmVcY7eqIp/h
         ad6nGzbpOx9hNWcutxA7VPhISjSXCiLO9K69j/oGR/7zvXH0oKzeDfUNo8+lJxXIqq/7
         VZYw==
X-Gm-Message-State: AOJu0Yx0xJetK+zwvleFXSOqYTP4SLMxn8R/cptUzLaUyqexTzs57wu8
	+e538GbgYW13UIQE2pNyNQ4ZJ9b4rym2JA9VaVXPCF644A==
X-Google-Smtp-Source: AGHT+IGbRYDkdCjbUvpp75I9fKf0QqnPUL+QcCoPmUVweSN9jHDfQpIPKDchVl675kUNdxtfQDLaeg==
X-Received: by 2002:a05:600c:705:b0:40d:8ff4:ea02 with SMTP id i5-20020a05600c070500b0040d8ff4ea02mr5032784wmn.86.1705484915886;
        Wed, 17 Jan 2024 01:48:35 -0800 (PST)
Message-ID: <bab76b76-1f79-4fb2-9c56-2ce000b2055c@suse.com>
Date: Wed, 17 Jan 2024 10:48:34 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] cpufreq: finish genapic conversion to altcall
Content-Language: en-US
From: Jan Beulich <jbeulich@suse.com>
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 George Dunlap <george.dunlap@citrix.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
References: <7da816ba-f5bd-491c-a6a8-b750e3ff2222@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <7da816ba-f5bd-491c-a6a8-b750e3ff2222@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 15.01.2024 17:10, Jan Beulich wrote:
> Even functions used on infrequently executed paths want converting: This
> way all pre-filled struct cpufreq_driver instances can become
> __initconst_cf_clobber, thus allowing to eliminate another 15 ENDBR
> during the 2nd phase of alternatives patching.
> 
> For acpi-cpufreq's optionally populated .get hook make sure alternatives
> patching can actually see the pointer. See also the code comment.
> 
> Signed-off-by: Jan Beulich <jbeulich@suse.com>

Sadly it was only after pushing that I noticed the stray "genapic" in the
title here.

Jan


From xen-devel-bounces@lists.xenproject.org Wed Jan 17 09:58:13 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 17 Jan 2024 09:58:13 +0000
Received: from list by lists.xenproject.org with outflank-mailman.668332.1040434 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQ2gS-0003rN-Aw; Wed, 17 Jan 2024 09:58:08 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 668332.1040434; Wed, 17 Jan 2024 09:58:08 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQ2gS-0003rG-6R; Wed, 17 Jan 2024 09:58:08 +0000
Received: by outflank-mailman (input) for mailman id 668332;
 Wed, 17 Jan 2024 09:58:07 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rQ2gR-0003r6-15; Wed, 17 Jan 2024 09:58:07 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rQ2gQ-0004bx-Nx; Wed, 17 Jan 2024 09:58:06 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rQ2gQ-0004Sw-BI; Wed, 17 Jan 2024 09:58:06 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rQ2gQ-00011N-An; Wed, 17 Jan 2024 09:58:06 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=ldnnCBSyjh3cg8h1l3AlDVmrJa3JueTVWmeXfIsKvMc=; b=uFgjmbGLlhzRc/Aq70F86O8hNF
	GpVH5R1DS/hEwz1gAA/FZgNG7bMKHV8aECffn062dzAYv4m+rdAJ22EsJa0xBtL28jOooxgP+kE2p
	QEc+0ZnfC5AO7uXHFhN6jDQW8r9vKj+Gp2TqY0wttTa8kB+UepRg96Rrjtx2PCfU60bk=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184374-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [xen-unstable test] 184374: tolerable FAIL
X-Osstest-Failures:
    xen-unstable:test-amd64-amd64-xl-qemuu-win7-amd64:windows-install:fail:heisenbug
    xen-unstable:test-armhf-armhf-libvirt-qcow2:guest-start:fail:heisenbug
    xen-unstable:test-amd64-amd64-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-qcow2:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-qcow2:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-amd64-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-raw:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-amd64-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-amd64-qemuu-nested-amd:debian-hvm-install/l1/l2:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-i386-libvirt-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-libvirt:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-pvshim:guest-start:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-xsm:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-credit2:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-credit2:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-libvirt-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-libvirt-xsm:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-thunderx:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-thunderx:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-credit1:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-credit1:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit1:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit1:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-multivcpu:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-multivcpu:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit2:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit2:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-libvirt-raw:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-libvirt-raw:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-libvirt-raw:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt-vhd:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-vhd:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-vhd:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-raw:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-vhd:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-vhd:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-rtds:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-rtds:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-arndale:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-arndale:saverestore-support-check:fail:nonblocking
X-Osstest-Versions-This:
    xen=f3f6c500e2dbd23af77c207e2cf4b496fffa1b0d
X-Osstest-Versions-That:
    xen=f3f6c500e2dbd23af77c207e2cf4b496fffa1b0d
From: osstest service owner <osstest-admin@xenproject.org>
Date: Wed, 17 Jan 2024 09:58:06 +0000

flight 184374 xen-unstable real [real]
http://logs.test-lab.xenproject.org/osstest/logs/184374/

Failures :-/ but no regressions.

Tests which are failing intermittently (not blocking):
 test-amd64-amd64-xl-qemuu-win7-amd64 12 windows-install fail in 184365 pass in 184374
 test-armhf-armhf-libvirt-qcow2 13 guest-start              fail pass in 184365

Tests which did not succeed, but are not blocking:
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop      fail blocked in 184365
 test-armhf-armhf-libvirt-qcow2 15 saverestore-support-check fail in 184365 blocked in 184374
 test-armhf-armhf-libvirt-qcow2 14 migrate-support-check fail in 184365 never pass
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 184365
 test-amd64-amd64-xl-qemut-win7-amd64 19 guest-stop            fail like 184365
 test-amd64-i386-xl-qemuu-win7-amd64 19 guest-stop             fail like 184365
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 184365
 test-amd64-i386-xl-qemut-ws16-amd64 19 guest-stop             fail like 184365
 test-armhf-armhf-libvirt-raw 15 saverestore-support-check    fail  like 184365
 test-amd64-i386-xl-qemut-win7-amd64 19 guest-stop             fail like 184365
 test-amd64-amd64-xl-qemut-ws16-amd64 19 guest-stop            fail like 184365
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 184365
 test-amd64-i386-xl-qemuu-ws16-amd64 19 guest-stop             fail like 184365
 test-amd64-i386-libvirt-xsm  15 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-amd64-i386-libvirt      15 migrate-support-check        fail   never pass
 test-amd64-i386-xl-pvshim    14 guest-start                  fail   never pass
 test-arm64-arm64-xl          15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-xsm      15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl          16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-xsm      16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-credit2  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit2  16 saverestore-support-check    fail   never pass
 test-arm64-arm64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-xsm 16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-thunderx 15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-thunderx 16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-credit1  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit1  16 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt     15 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-armhf-armhf-xl-credit1  15 migrate-support-check        fail   never pass
 test-armhf-armhf-libvirt     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit1  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-multivcpu 15 migrate-support-check        fail  never pass
 test-armhf-armhf-xl-multivcpu 16 saverestore-support-check    fail  never pass
 test-armhf-armhf-xl          15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-credit2  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit2  16 saverestore-support-check    fail   never pass
 test-amd64-i386-libvirt-raw  14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 15 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-vhd 14 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-vhd      14 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-vhd      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-raw 14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-rtds     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-rtds     16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-arndale  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-arndale  16 saverestore-support-check    fail   never pass

version targeted for testing:
 xen                  f3f6c500e2dbd23af77c207e2cf4b496fffa1b0d
baseline version:
 xen                  f3f6c500e2dbd23af77c207e2cf4b496fffa1b0d

Last test of basis   184374  2024-01-16 14:58:43 Z    0 days
Testing same since                          (not found)         0 attempts

jobs:
 build-amd64-xsm                                              pass    
 build-arm64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64-xtf                                              pass    
 build-amd64                                                  pass    
 build-arm64                                                  pass    
 build-armhf                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-arm64-libvirt                                          pass    
 build-armhf-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-prev                                             pass    
 build-i386-prev                                              pass    
 build-amd64-pvops                                            pass    
 build-arm64-pvops                                            pass    
 build-armhf-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-xtf-amd64-amd64-1                                       pass    
 test-xtf-amd64-amd64-2                                       pass    
 test-xtf-amd64-amd64-3                                       pass    
 test-xtf-amd64-amd64-4                                       pass    
 test-xtf-amd64-amd64-5                                       pass    
 test-amd64-amd64-xl                                          pass    
 test-amd64-coresched-amd64-xl                                pass    
 test-arm64-arm64-xl                                          pass    
 test-armhf-armhf-xl                                          pass    
 test-amd64-i386-xl                                           pass    
 test-amd64-coresched-i386-xl                                 pass    
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm           pass    
 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm            pass    
 test-amd64-amd64-xl-qemut-stubdom-debianhvm-amd64-xsm        pass    
 test-amd64-i386-xl-qemut-stubdom-debianhvm-amd64-xsm         pass    
 test-amd64-amd64-xl-qemut-debianhvm-i386-xsm                 pass    
 test-amd64-i386-xl-qemut-debianhvm-i386-xsm                  pass    
 test-amd64-amd64-xl-qemuu-debianhvm-i386-xsm                 pass    
 test-amd64-i386-xl-qemuu-debianhvm-i386-xsm                  pass    
 test-amd64-amd64-libvirt-xsm                                 pass    
 test-arm64-arm64-libvirt-xsm                                 pass    
 test-amd64-i386-libvirt-xsm                                  pass    
 test-amd64-amd64-xl-xsm                                      pass    
 test-arm64-arm64-xl-xsm                                      pass    
 test-amd64-i386-xl-xsm                                       pass    
 test-amd64-amd64-qemuu-nested-amd                            fail    
 test-amd64-amd64-xl-pvhv2-amd                                pass    
 test-amd64-i386-qemut-rhel6hvm-amd                           pass    
 test-amd64-i386-qemuu-rhel6hvm-amd                           pass    
 test-amd64-amd64-dom0pvh-xl-amd                              pass    
 test-amd64-amd64-xl-qemut-debianhvm-amd64                    pass    
 test-amd64-i386-xl-qemut-debianhvm-amd64                     pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64                    pass    
 test-amd64-i386-xl-qemuu-debianhvm-amd64                     pass    
 test-amd64-i386-freebsd10-amd64                              pass    
 test-amd64-amd64-qemuu-freebsd11-amd64                       pass    
 test-amd64-amd64-qemuu-freebsd12-amd64                       pass    
 test-amd64-amd64-xl-qemuu-ovmf-amd64                         pass    
 test-amd64-i386-xl-qemuu-ovmf-amd64                          pass    
 test-amd64-amd64-xl-qemut-win7-amd64                         fail    
 test-amd64-i386-xl-qemut-win7-amd64                          fail    
 test-amd64-amd64-xl-qemuu-win7-amd64                         fail    
 test-amd64-i386-xl-qemuu-win7-amd64                          fail    
 test-amd64-amd64-xl-qemut-ws16-amd64                         fail    
 test-amd64-i386-xl-qemut-ws16-amd64                          fail    
 test-amd64-amd64-xl-qemuu-ws16-amd64                         fail    
 test-amd64-i386-xl-qemuu-ws16-amd64                          fail    
 test-armhf-armhf-xl-arndale                                  pass    
 test-amd64-amd64-examine-bios                                pass    
 test-amd64-i386-examine-bios                                 pass    
 test-amd64-amd64-xl-credit1                                  pass    
 test-arm64-arm64-xl-credit1                                  pass    
 test-armhf-armhf-xl-credit1                                  pass    
 test-amd64-amd64-xl-credit2                                  pass    
 test-arm64-arm64-xl-credit2                                  pass    
 test-armhf-armhf-xl-credit2                                  pass    
 test-amd64-amd64-xl-qemuu-dmrestrict-amd64-dmrestrict        pass    
 test-amd64-i386-xl-qemuu-dmrestrict-amd64-dmrestrict         pass    
 test-amd64-amd64-examine                                     pass    
 test-arm64-arm64-examine                                     pass    
 test-armhf-armhf-examine                                     pass    
 test-amd64-i386-examine                                      pass    
 test-amd64-i386-freebsd10-i386                               pass    
 test-amd64-amd64-qemuu-nested-intel                          pass    
 test-amd64-amd64-xl-pvhv2-intel                              pass    
 test-amd64-i386-qemut-rhel6hvm-intel                         pass    
 test-amd64-i386-qemuu-rhel6hvm-intel                         pass    
 test-amd64-amd64-dom0pvh-xl-intel                            pass    
 test-amd64-amd64-libvirt                                     pass    
 test-armhf-armhf-libvirt                                     pass    
 test-amd64-i386-libvirt                                      pass    
 test-amd64-amd64-livepatch                                   pass    
 test-amd64-i386-livepatch                                    pass    
 test-amd64-amd64-migrupgrade                                 pass    
 test-amd64-i386-migrupgrade                                  pass    
 test-amd64-amd64-xl-multivcpu                                pass    
 test-armhf-armhf-xl-multivcpu                                pass    
 test-amd64-amd64-pair                                        pass    
 test-amd64-i386-pair                                         pass    
 test-amd64-amd64-libvirt-pair                                pass    
 test-amd64-i386-libvirt-pair                                 pass    
 test-amd64-amd64-xl-pvshim                                   pass    
 test-amd64-i386-xl-pvshim                                    fail    
 test-amd64-amd64-pygrub                                      pass    
 test-armhf-armhf-libvirt-qcow2                               fail    
 test-amd64-amd64-xl-qcow2                                    pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-armhf-armhf-libvirt-raw                                 pass    
 test-amd64-i386-libvirt-raw                                  pass    
 test-amd64-amd64-xl-rtds                                     pass    
 test-armhf-armhf-xl-rtds                                     pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64-shadow             pass    
 test-amd64-i386-xl-qemuu-debianhvm-amd64-shadow              pass    
 test-amd64-amd64-xl-shadow                                   pass    
 test-amd64-i386-xl-shadow                                    pass    
 test-arm64-arm64-xl-thunderx                                 pass    
 test-amd64-amd64-examine-uefi                                pass    
 test-amd64-i386-examine-uefi                                 pass    
 test-amd64-amd64-libvirt-vhd                                 pass    
 test-arm64-arm64-xl-vhd                                      pass    
 test-armhf-armhf-xl-vhd                                      pass    
 test-amd64-i386-xl-vhd                                       pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Published tested tree is already up to date.



From xen-devel-bounces@lists.xenproject.org Wed Jan 17 09:58:50 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 17 Jan 2024 09:58:50 +0000
Received: from list by lists.xenproject.org with outflank-mailman.668336.1040443 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQ2h7-0004cE-J8; Wed, 17 Jan 2024 09:58:49 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 668336.1040443; Wed, 17 Jan 2024 09:58:49 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQ2h7-0004c7-GQ; Wed, 17 Jan 2024 09:58:49 +0000
Received: by outflank-mailman (input) for mailman id 668336;
 Wed, 17 Jan 2024 09:58:48 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=yGoF=I3=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rQ2h6-0004a2-81
 for xen-devel@lists.xenproject.org; Wed, 17 Jan 2024 09:58:48 +0000
Received: from mail-wm1-x334.google.com (mail-wm1-x334.google.com
 [2a00:1450:4864:20::334])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id ffdb0071-b51e-11ee-9b0f-b553b5be7939;
 Wed, 17 Jan 2024 10:58:44 +0100 (CET)
Received: by mail-wm1-x334.google.com with SMTP id
 5b1f17b1804b1-40e87d07c07so9496765e9.1
 for <xen-devel@lists.xenproject.org>; Wed, 17 Jan 2024 01:58:44 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 s8-20020a05600c45c800b0040e527602c8sm26023093wmo.9.2024.01.17.01.58.43
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 17 Jan 2024 01:58:43 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: ffdb0071-b51e-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1705485524; x=1706090324; darn=lists.xenproject.org;
        h=content-transfer-encoding:autocrypt:subject:from:cc:to
         :content-language:user-agent:mime-version:date:message-id:from:to:cc
         :subject:date:message-id:reply-to;
        bh=4f761DZeg1Eh81AG9dvXou5y/4nuLcPQyKQPSiIKw2E=;
        b=DzoMtu+N+VkHv/7eLvpTk5FlKv+MstSu4V9fGhxrmYHxLdOe61Bm6ICCmyOmJhmJVT
         PGig7M3jImVGq3bKiODN9f7afgMxda8jl3Gw3oN8PBN/dJIb9YgBW7PQWZVWOQaSU3Qz
         QugZcjJJZsbw0j0TfM+9p0RLfLBcTwaae0kJFxcXdc6bzCnyB2udybEdUKgLTdDdW3Gu
         G141hNRrtqvbm3KDpE5uLkvSzx5KBiIFyNwt7ssAETDcXlPD1Q6/MOQt9f4JxlcEzYUD
         4y/eUKPu+g3kosHPkOXEsgkR4BXpM4c7z5hII/v6cLtRo2JydqqYtpqDCPbzUqXML8uN
         0ZYQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705485524; x=1706090324;
        h=content-transfer-encoding:autocrypt:subject:from:cc:to
         :content-language:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=4f761DZeg1Eh81AG9dvXou5y/4nuLcPQyKQPSiIKw2E=;
        b=mV9hfi0IajLJYMgJNk2BtWCDqorqo5ZE7gcLTmkhfwSgGtN5wsTdiGCWWjwjMipUZb
         qL++9GTD9uYSXtvfhZuqr84ph0aq43Pj5pquCsWA5vqQls86kjnV5Y7JS7q7Rf13mjzA
         JxcB6xIIp/dxy3hrJKUoZ0id1LrnvJ1ZDJTkjZWT8H2R01PvfEU8vQL2sbCCQ3F5ocBm
         5uXJN9sGxbh8RRMZGxfSxZchkvqYPgBAVdPbKlLL0KOTjEzTJRE1a4LQWOXJegPONMPS
         OplLbRLLtucCIQXHQxsBcKoPSzPuMV2lAP0VZGhoAT+cdeJQew74CPSxvPY5v5bnxNmG
         OwBQ==
X-Gm-Message-State: AOJu0YwR5c3s/SMEuaebyDJ4aQ8cyNkKB00+sSkn2cBDeMv26Z6qTi1L
	HyFIdbLRsKsVk0/3ryw7GsfqCgQ8X4B3qCRfSA5jd1I73A==
X-Google-Smtp-Source: AGHT+IGrn10lsG+k+voGuiCrFQvYjGXWBegDcxMvn/4NefCMzaympzAQVnn5CmkziQcxEt1T8wztFA==
X-Received: by 2002:a05:600c:244:b0:40e:8d2f:bc74 with SMTP id 4-20020a05600c024400b0040e8d2fbc74mr54968wmj.89.1705485523722;
        Wed, 17 Jan 2024 01:58:43 -0800 (PST)
Message-ID: <0fb20fcf-1580-41c9-946b-7daf865f4b49@suse.com>
Date: Wed, 17 Jan 2024 10:58:42 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Content-Language: en-US
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, Wei Liu <wl@xen.org>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
From: Jan Beulich <jbeulich@suse.com>
Subject: [PATCH 0/2] x86/MCE: arrange for some ENDBR zapping
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

1: separate BSP-only initialization
2: switch some callback invocations to altcall

Jan


From xen-devel-bounces@lists.xenproject.org Wed Jan 17 09:59:53 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 17 Jan 2024 09:59:53 +0000
Received: from list by lists.xenproject.org with outflank-mailman.668340.1040454 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQ2i8-0005od-Vq; Wed, 17 Jan 2024 09:59:52 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 668340.1040454; Wed, 17 Jan 2024 09:59:52 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQ2i8-0005oW-Qj; Wed, 17 Jan 2024 09:59:52 +0000
Received: by outflank-mailman (input) for mailman id 668340;
 Wed, 17 Jan 2024 09:59:51 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=yGoF=I3=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rQ2i7-0005k0-N4
 for xen-devel@lists.xenproject.org; Wed, 17 Jan 2024 09:59:51 +0000
Received: from mail-wr1-x434.google.com (mail-wr1-x434.google.com
 [2a00:1450:4864:20::434])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 26d30a52-b51f-11ee-9b0f-b553b5be7939;
 Wed, 17 Jan 2024 10:59:49 +0100 (CET)
Received: by mail-wr1-x434.google.com with SMTP id
 ffacd0b85a97d-337c4c9cde2so163421f8f.0
 for <xen-devel@lists.xenproject.org>; Wed, 17 Jan 2024 01:59:49 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 s8-20020a05600c45c800b0040e527602c8sm26023093wmo.9.2024.01.17.01.59.48
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 17 Jan 2024 01:59:48 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 26d30a52-b51f-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1705485589; x=1706090389; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:references:cc:to
         :from:content-language:subject:user-agent:mime-version:date
         :message-id:from:to:cc:subject:date:message-id:reply-to;
        bh=qiGNHtn4gk5sauQXgXkDrfgn2lDRSN7qCMUleR6M6Co=;
        b=Kz9hA0v84pzPDQN80AmujbdB6JBAciuFoN9tnVRpwLrpdytZ+oXRIrtnyQ3HZ+zURA
         WbHslY8uXa6jCdKZ19zJxSotJHfSXrnpq9wZrTweKhMC/1N4AWxqQXh6/NkBl1SjN17C
         VPRBnv4tSH9a5SbU2HHCZ7QNNNZG59agXEnxOISFHJEOrStADu99BlYohqdf+K9am3Nq
         6m/sGLsadOBLG2MM7ZahSksW/JUeUGJnbUAdB3BqtN7SRRqUA1/IQT5m3oREEybxhcZr
         2Bx2cVehfNhTy/CfETWuFjdbEhn5CTC578e/GFCC6Lz4e7GpovjtydcGiI1dGOHBbSVO
         jZGA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705485589; x=1706090389;
        h=content-transfer-encoding:in-reply-to:autocrypt:references:cc:to
         :from:content-language:subject:user-agent:mime-version:date
         :message-id:x-gm-message-state:from:to:cc:subject:date:message-id
         :reply-to;
        bh=qiGNHtn4gk5sauQXgXkDrfgn2lDRSN7qCMUleR6M6Co=;
        b=iYqrap0KJFFPxTnKP9oTAAOCYrrqNlmT/oRCklyWKUgK+AA/3sv/UYIiYdFLuEtoDe
         YOe+wE8d9pPHLaedt7S472o7Ep6PW1DRMM3xP16+W+VrXPMjum0H5Y70kYLU+ufLL840
         pEbUFNEaH3FZ6J1YI86FggoyZstgB5kofGKSEzzWcj+RTlSW0IHr+lq30y2Sz8ZsHkMQ
         V6sCMlKo9BBm1tP/h6pZscCf7Ok2vQEsUIs3x2H6AguDe8lLv7K8o2bPTAL3pjOwLsji
         TTk8C+BS67P2JXZ3C8KVeAJRF42NpyGU0X2fMXetM6/JPWuRDQfOd7UTLYZREnqVOqNE
         mkWg==
X-Gm-Message-State: AOJu0YwY/2QR0/j+I5FWf4UDdY2rkqwq8dZiDQn7g9rc2o8PZ+dT49Pd
	GNaxA4dOr9mh0ZDqcahe1bPP0V/0J/80VnKWvBzXhk2h0g==
X-Google-Smtp-Source: AGHT+IHIM89XmiqD2KMRhG+kLnxqWNP3iPiiW2qbOY6f9q/P7uM4+EtVBHesFx4vIq4F30owEOOrxQ==
X-Received: by 2002:a05:600c:4fcb:b0:40e:88bb:5b0a with SMTP id o11-20020a05600c4fcb00b0040e88bb5b0amr338286wmq.111.1705485589117;
        Wed, 17 Jan 2024 01:59:49 -0800 (PST)
Message-ID: <40579c64-91be-4df2-9d65-f89d656ec4af@suse.com>
Date: Wed, 17 Jan 2024 10:59:48 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: [PATCH 1/2] x86/MCE: separate BSP-only initialization
Content-Language: en-US
From: Jan Beulich <jbeulich@suse.com>
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, Wei Liu <wl@xen.org>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
References: <0fb20fcf-1580-41c9-946b-7daf865f4b49@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <0fb20fcf-1580-41c9-946b-7daf865f4b49@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

Several function pointers are registered over and over again, when
setting them once on the BSP suffices. Arrange for this in the vendor
init functions and mark involved registration functions __init.

Signed-off-by: Jan Beulich <jbeulich@suse.com>

--- a/xen/arch/x86/cpu/mcheck/mcaction.c
+++ b/xen/arch/x86/cpu/mcheck/mcaction.c
@@ -29,7 +29,7 @@ mci_action_add_pageoffline(int bank, str
 
 mce_check_addr_t mc_check_addr = NULL;
 
-void mce_register_addrcheck(mce_check_addr_t cbfunc)
+void __init mce_register_addrcheck(mce_check_addr_t cbfunc)
 {
     mc_check_addr = cbfunc;
 }
--- a/xen/arch/x86/cpu/mcheck/mce.c
+++ b/xen/arch/x86/cpu/mcheck/mce.c
@@ -84,7 +84,7 @@ static void cf_check unexpected_machine_
 
 static x86_mce_vector_t _machine_check_vector = unexpected_machine_check;
 
-void x86_mce_vector_register(x86_mce_vector_t hdlr)
+void __init x86_mce_vector_register(x86_mce_vector_t hdlr)
 {
     _machine_check_vector = hdlr;
 }
@@ -107,7 +107,7 @@ void do_machine_check(const struct cpu_u
  */
 static x86_mce_callback_t mc_callback_bank_extended = NULL;
 
-void x86_mce_callback_register(x86_mce_callback_t cbfunc)
+void __init x86_mce_callback_register(x86_mce_callback_t cbfunc)
 {
     mc_callback_bank_extended = cbfunc;
 }
@@ -118,7 +118,7 @@ void x86_mce_callback_register(x86_mce_c
  */
 static mce_recoverable_t mc_recoverable_scan = NULL;
 
-void mce_recoverable_register(mce_recoverable_t cbfunc)
+void __init mce_recoverable_register(mce_recoverable_t cbfunc)
 {
     mc_recoverable_scan = cbfunc;
 }
@@ -181,7 +181,7 @@ static void mcabank_clear(int banknum)
  */
 static mce_need_clearbank_t mc_need_clearbank_scan = NULL;
 
-void mce_need_clearbank_register(mce_need_clearbank_t cbfunc)
+void __init mce_need_clearbank_register(mce_need_clearbank_t cbfunc)
 {
     mc_need_clearbank_scan = cbfunc;
 }
@@ -798,7 +798,7 @@ void mcheck_init(struct cpuinfo_x86 *c,
     {
     case X86_VENDOR_AMD:
     case X86_VENDOR_HYGON:
-        inited = amd_mcheck_init(c);
+        inited = amd_mcheck_init(c, bsp);
         break;
 
     case X86_VENDOR_INTEL:
@@ -1913,11 +1913,8 @@ static void cf_check mce_softirq(void)
  * will help to collect and log those MCE errors.
  * Round2: Do all MCE processing logic as normal.
  */
-void mce_handler_init(void)
+void __init mce_handler_init(void)
 {
-    if ( smp_processor_id() != 0 )
-        return;
-
     /* callback register, do we really need so many callback? */
     /* mce handler data initialization */
     spin_lock_init(&mce_logout_lock);
--- a/xen/arch/x86/cpu/mcheck/mce.h
+++ b/xen/arch/x86/cpu/mcheck/mce.h
@@ -43,7 +43,7 @@ extern uint8_t cmci_apic_vector;
 extern bool lmce_support;
 
 /* Init functions */
-enum mcheck_type amd_mcheck_init(const struct cpuinfo_x86 *c);
+enum mcheck_type amd_mcheck_init(const struct cpuinfo_x86 *c, bool bsp);
 enum mcheck_type intel_mcheck_init(struct cpuinfo_x86 *c, bool bsp);
 
 void amd_nonfatal_mcheck_init(struct cpuinfo_x86 *c);
--- a/xen/arch/x86/cpu/mcheck/mce_amd.c
+++ b/xen/arch/x86/cpu/mcheck/mce_amd.c
@@ -272,7 +272,7 @@ int vmce_amd_rdmsr(const struct vcpu *v,
 }
 
 enum mcheck_type
-amd_mcheck_init(const struct cpuinfo_x86 *c)
+amd_mcheck_init(const struct cpuinfo_x86 *c, bool bsp)
 {
     uint32_t i;
     enum mcequirk_amd_flags quirkflag = 0;
@@ -282,9 +282,12 @@ amd_mcheck_init(const struct cpuinfo_x86
 
     /* Assume that machine check support is available.
      * The minimum provided support is at least the K8. */
-    mce_handler_init();
-    x86_mce_vector_register(mcheck_cmn_handler);
-    mce_need_clearbank_register(amd_need_clearbank_scan);
+    if ( bsp )
+    {
+        mce_handler_init();
+        x86_mce_vector_register(mcheck_cmn_handler);
+        mce_need_clearbank_register(amd_need_clearbank_scan);
+    }
 
     for ( i = 0; i < this_cpu(nr_mce_banks); i++ )
     {
@@ -324,9 +327,12 @@ amd_mcheck_init(const struct cpuinfo_x86
             ppin_msr = MSR_AMD_PPIN;
     }
 
-    x86_mce_callback_register(amd_f10_handler);
-    mce_recoverable_register(mc_amd_recoverable_scan);
-    mce_register_addrcheck(mc_amd_addrcheck);
+    if ( bsp )
+    {
+        x86_mce_callback_register(amd_f10_handler);
+        mce_recoverable_register(mc_amd_recoverable_scan);
+        mce_register_addrcheck(mc_amd_addrcheck);
+    }
 
     return c->x86_vendor == X86_VENDOR_HYGON ?
             mcheck_hygon : mcheck_amd_famXX;
--- a/xen/arch/x86/cpu/mcheck/mce_intel.c
+++ b/xen/arch/x86/cpu/mcheck/mce_intel.c
@@ -820,7 +820,7 @@ static void intel_mce_post_reset(void)
     return;
 }
 
-static void intel_init_mce(void)
+static void intel_init_mce(bool bsp)
 {
     uint64_t msr_content;
     int i;
@@ -846,6 +846,9 @@ static void intel_init_mce(void)
     if ( firstbank ) /* if cmci enabled, firstbank = 0 */
         wrmsrl(MSR_IA32_MC0_STATUS, 0x0ULL);
 
+    if ( !bsp )
+        return;
+
     x86_mce_vector_register(mcheck_cmn_handler);
     mce_recoverable_register(intel_recoverable_scan);
     mce_need_clearbank_register(intel_need_clearbank_scan);
@@ -985,9 +988,10 @@ enum mcheck_type intel_mcheck_init(struc
 
     intel_init_mca(c);
 
-    mce_handler_init();
+    if ( bsp )
+        mce_handler_init();
 
-    intel_init_mce();
+    intel_init_mce(bsp);
 
     intel_init_cmci(c);
 



From xen-devel-bounces@lists.xenproject.org Wed Jan 17 10:00:16 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 17 Jan 2024 10:00:16 +0000
Received: from list by lists.xenproject.org with outflank-mailman.668343.1040464 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQ2iW-0007Np-9h; Wed, 17 Jan 2024 10:00:16 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 668343.1040464; Wed, 17 Jan 2024 10:00:16 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQ2iW-0007Ni-6C; Wed, 17 Jan 2024 10:00:16 +0000
Received: by outflank-mailman (input) for mailman id 668343;
 Wed, 17 Jan 2024 10:00:14 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=yGoF=I3=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rQ2iU-0007K4-L1
 for xen-devel@lists.xenproject.org; Wed, 17 Jan 2024 10:00:14 +0000
Received: from mail-wm1-x32e.google.com (mail-wm1-x32e.google.com
 [2a00:1450:4864:20::32e])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 34fb0fc7-b51f-11ee-98f2-6d05b1d4d9a1;
 Wed, 17 Jan 2024 11:00:13 +0100 (CET)
Received: by mail-wm1-x32e.google.com with SMTP id
 5b1f17b1804b1-40e8d3b29f2so416945e9.1
 for <xen-devel@lists.xenproject.org>; Wed, 17 Jan 2024 02:00:13 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 s8-20020a05600c45c800b0040e527602c8sm26023093wmo.9.2024.01.17.02.00.12
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 17 Jan 2024 02:00:12 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 34fb0fc7-b51f-11ee-98f2-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1705485613; x=1706090413; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:references:cc:to
         :from:content-language:subject:user-agent:mime-version:date
         :message-id:from:to:cc:subject:date:message-id:reply-to;
        bh=vREreRDX9LMqGtvWcecYgobHNabcN+0PAlDNZTRFwQA=;
        b=O5z3JSUz3y3YIK4/fg90ujp1wFLIpJhugNhUzXdp19FJ3GjRb3DbYD1sv1+sZ34a4g
         Xtg81fCN++7oP9LQG96R28BTX/+Ahy/IVkg4gJcBBgZ3/xq6neM/j7yY8YyA3xqgilny
         wuJiEbXulOptm/Ws+Dp4u+vNRxJp0g708Ux3RnGHm4oofebpOvfO95LzU9tl8Dq+sEDW
         KDLvQXms6yPiYjSNJ2oReFKIGak8dTuwiltjV/DBt65uE7052Ak9VtAIBpKeLhQuDlDC
         C5fvh3fKKdFByIGA9ir6VS6b5Qz3OkbF2ySJzB3qHvsU5Rc4UMbEQGfs8iXzajE0EnSx
         txEg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705485613; x=1706090413;
        h=content-transfer-encoding:in-reply-to:autocrypt:references:cc:to
         :from:content-language:subject:user-agent:mime-version:date
         :message-id:x-gm-message-state:from:to:cc:subject:date:message-id
         :reply-to;
        bh=vREreRDX9LMqGtvWcecYgobHNabcN+0PAlDNZTRFwQA=;
        b=U+OZrZpIbAr7I2eNMdBDPBTB08whbbjsQyfBOPGNkCxlCkMa8N2CxfHkeeT+yzXFdn
         7K2b71BNm136GCTKp8ESC2w376Dxwf8RbKe3S+Uqgz5VX/qQSA2jMNumQgFz0zIXKAbi
         79Lbsy3Lay5vZoXoSOaI+0LvT1tRyi/+8nfD640K9QlxClitjTi98oh7WheLeDh5Xn/p
         ILUd7WUSBH4JOT4NCsXQ2bAnzs0mdlC5GACwNnmds/Ng+FKjsmYR8AFtNOOLDtRM4krA
         UBLisPSG5E/Fup9mTh+DqopVEYWKVJC9A6r+9+Uu5xYx60KlVtvIyetp36RiyC27+9YN
         w7KA==
X-Gm-Message-State: AOJu0YwU8cl+/jYvAQ+hWz+5V02TcXIXn/OeEm9CAKKaR2AQMOKzl/33
	MgK7h891v3p3YUGpsKnbVGKDGp5yowtFwbhmzzGu/SNJNA==
X-Google-Smtp-Source: AGHT+IFyewiTkgrNoTGXpEpPW2+PgOCt7EPZlj0s/APz/lct0lSREN4/aCLougsFsQhhJN6Io6w1AQ==
X-Received: by 2002:a7b:c5cb:0:b0:40e:4921:5038 with SMTP id n11-20020a7bc5cb000000b0040e49215038mr3279439wmk.91.1705485612718;
        Wed, 17 Jan 2024 02:00:12 -0800 (PST)
Message-ID: <00444077-4a43-4069-bf57-ea7aa7e0dca4@suse.com>
Date: Wed, 17 Jan 2024 11:00:11 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: [PATCH 2/2] x86/MCE: switch some callback invocations to altcall
Content-Language: en-US
From: Jan Beulich <jbeulich@suse.com>
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, Wei Liu <wl@xen.org>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
References: <0fb20fcf-1580-41c9-946b-7daf865f4b49@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <0fb20fcf-1580-41c9-946b-7daf865f4b49@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

While not performance critical, these hook invocations still would
better be converted: This way all pre-filled (and newly introduced)
struct mce_callback instances can become __initconst_cf_clobber, thus
allowing to eliminate another 9 ENDBR during the 2nd phase of
alternatives patching.

While this means registering callbacks a little earlier, doing so is
perhaps even advantageous, for having pointers be non-NULL earlier on.
Only one set of callbacks would only ever be registered anyway, and
neither of the respective initialization function can (subsequently)
fail.

Signed-off-by: Jan Beulich <jbeulich@suse.com>
---
RFC: Of course there's concern about alternatives patching happening
     only after setting CR4.MCE, meaning that #MC could actually be
     raised while patching. If this is deemed unacceptable, a (not
     really nice) option may be to defer setting the bit until after the
     first alternatives patching pass.

Of course this could be split to convert every previously separate
function pointer individually. But I think it's better done all in one
go. (This change could of course also be folded with the prereq one.)

--- a/xen/arch/x86/cpu/mcheck/mcaction.c
+++ b/xen/arch/x86/cpu/mcheck/mcaction.c
@@ -27,13 +27,6 @@ mci_action_add_pageoffline(int bank, str
     return rec;
 }
 
-mce_check_addr_t mc_check_addr = NULL;
-
-void __init mce_register_addrcheck(mce_check_addr_t cbfunc)
-{
-    mc_check_addr = cbfunc;
-}
-
 void
 mc_memerr_dhandler(struct mca_binfo *binfo,
                    enum mce_result *result,
@@ -48,7 +41,8 @@ mc_memerr_dhandler(struct mca_binfo *bin
     int vmce_vcpuid;
     unsigned int mc_vcpuid;
 
-    if ( !mc_check_addr(bank->mc_status, bank->mc_misc, MC_ADDR_PHYSICAL) )
+    if ( !alternative_call(mce_callbacks.check_addr, bank->mc_status,
+                           bank->mc_misc, MC_ADDR_PHYSICAL) )
     {
         dprintk(XENLOG_WARNING,
                 "No physical address provided for memory error\n");
--- a/xen/arch/x86/cpu/mcheck/mcaction.h
+++ b/xen/arch/x86/cpu/mcheck/mcaction.h
@@ -12,9 +12,4 @@ mc_memerr_dhandler(struct mca_binfo *bin
 #define MC_ADDR_PHYSICAL  0
 #define MC_ADDR_VIRTUAL   1
 
-typedef bool (*mce_check_addr_t)(uint64_t status, uint64_t misc, int addr_type);
-extern void mce_register_addrcheck(mce_check_addr_t cbfunc);
-
-extern mce_check_addr_t mc_check_addr;
-
 #endif
--- a/xen/arch/x86/cpu/mcheck/mce.c
+++ b/xen/arch/x86/cpu/mcheck/mce.c
@@ -82,47 +82,21 @@ static void cf_check unexpected_machine_
     fatal_trap(regs, 1);
 }
 
-static x86_mce_vector_t _machine_check_vector = unexpected_machine_check;
-
-void __init x86_mce_vector_register(x86_mce_vector_t hdlr)
-{
-    _machine_check_vector = hdlr;
-}
+struct mce_callbacks __ro_after_init mce_callbacks = {
+    .handler = unexpected_machine_check,
+};
+static const typeof(mce_callbacks.handler) __initconst_cf_clobber __used
+    default_handler = unexpected_machine_check;
 
 /* Call the installed machine check handler for this CPU setup. */
 
 void do_machine_check(const struct cpu_user_regs *regs)
 {
     mce_enter();
-    _machine_check_vector(regs);
+    alternative_vcall(mce_callbacks.handler, regs);
     mce_exit();
 }
 
-/*
- * Init machine check callback handler
- * It is used to collect additional information provided by newer
- * CPU families/models without the need to duplicate the whole handler.
- * This avoids having many handlers doing almost nearly the same and each
- * with its own tweaks ands bugs.
- */
-static x86_mce_callback_t mc_callback_bank_extended = NULL;
-
-void __init x86_mce_callback_register(x86_mce_callback_t cbfunc)
-{
-    mc_callback_bank_extended = cbfunc;
-}
-
-/*
- * Machine check recoverable judgement callback handler
- * It is used to judge whether an UC error is recoverable by software
- */
-static mce_recoverable_t mc_recoverable_scan = NULL;
-
-void __init mce_recoverable_register(mce_recoverable_t cbfunc)
-{
-    mc_recoverable_scan = cbfunc;
-}
-
 struct mca_banks *mcabanks_alloc(unsigned int nr)
 {
     struct mca_banks *mb;
@@ -174,19 +148,6 @@ static void mcabank_clear(int banknum)
 }
 
 /*
- * Judging whether to Clear Machine Check error bank callback handler
- * According to Intel latest MCA OS Recovery Writer's Guide,
- * whether the error MCA bank needs to be cleared is decided by the mca_source
- * and MCi_status bit value.
- */
-static mce_need_clearbank_t mc_need_clearbank_scan = NULL;
-
-void __init mce_need_clearbank_register(mce_need_clearbank_t cbfunc)
-{
-    mc_need_clearbank_scan = cbfunc;
-}
-
-/*
  * mce_logout_lock should only be used in the trap handler,
  * while MCIP has not been cleared yet in the global status
  * register. Other use is not safe, since an MCE trap can
@@ -226,7 +187,8 @@ static void mca_init_bank(enum mca_sourc
 
     if ( (mib->mc_status & MCi_STATUS_MISCV) &&
          (mib->mc_status & MCi_STATUS_ADDRV) &&
-         (mc_check_addr(mib->mc_status, mib->mc_misc, MC_ADDR_PHYSICAL)) &&
+         alternative_call(mce_callbacks.check_addr, mib->mc_status,
+                          mib->mc_misc, MC_ADDR_PHYSICAL) &&
          (who == MCA_POLLER || who == MCA_CMCI_HANDLER) &&
          (mfn_valid(_mfn(paddr_to_pfn(mib->mc_addr)))) )
     {
@@ -326,7 +288,7 @@ mcheck_mca_logout(enum mca_source who, s
      * If no mc_recovery_scan callback handler registered,
      * this error is not recoverable
      */
-    recover = mc_recoverable_scan ? 1 : 0;
+    recover = mce_callbacks.recoverable_scan;
 
     for ( i = 0; i < this_cpu(nr_mce_banks); i++ )
     {
@@ -343,8 +305,9 @@ mcheck_mca_logout(enum mca_source who, s
          * decide whether to clear bank by MCi_STATUS bit value such as
          * OVER/UC/EN/PCC/S/AR
          */
-        if ( mc_need_clearbank_scan )
-            need_clear = mc_need_clearbank_scan(who, status);
+        if ( mce_callbacks.need_clearbank_scan )
+            need_clear = alternative_call(mce_callbacks.need_clearbank_scan,
+                                          who, status);
 
         /*
          * If this is the first bank with valid MCA DATA, then
@@ -380,12 +343,12 @@ mcheck_mca_logout(enum mca_source who, s
 
         if ( recover && uc )
             /* uc = true, recover = true, we need not panic. */
-            recover = mc_recoverable_scan(status);
+            recover = alternative_call(mce_callbacks.recoverable_scan, status);
 
         mca_init_bank(who, mci, i);
 
-        if ( mc_callback_bank_extended )
-            mc_callback_bank_extended(mci, i, status);
+        if ( mce_callbacks.info_collect )
+            alternative_vcall(mce_callbacks.info_collect, mci, i, status);
 
         /* By default, need_clear = true */
         if ( who != MCA_MCE_SCAN && need_clear )
@@ -1913,9 +1876,11 @@ static void cf_check mce_softirq(void)
  * will help to collect and log those MCE errors.
  * Round2: Do all MCE processing logic as normal.
  */
-void __init mce_handler_init(void)
+void __init mce_handler_init(const struct mce_callbacks *cb)
 {
     /* callback register, do we really need so many callback? */
+    mce_callbacks = *cb;
+
     /* mce handler data initialization */
     spin_lock_init(&mce_logout_lock);
     open_softirq(MACHINE_CHECK_SOFTIRQ, mce_softirq);
--- a/xen/arch/x86/cpu/mcheck/mce.h
+++ b/xen/arch/x86/cpu/mcheck/mce.h
@@ -63,20 +63,12 @@ void x86_mc_get_cpu_info(unsigned cpu, u
                          unsigned *ncores, unsigned *ncores_active,
                          unsigned *nthreads);
 
-/* Register a handler for machine check exceptions. */
-typedef void (*x86_mce_vector_t)(const struct cpu_user_regs *regs);
-extern void x86_mce_vector_register(x86_mce_vector_t hdlr);
-
 /*
  * Common generic MCE handler that implementations may nominate
  * via x86_mce_vector_register.
  */
 void cf_check mcheck_cmn_handler(const struct cpu_user_regs *regs);
 
-/* Register a handler for judging whether mce is recoverable. */
-typedef bool (*mce_recoverable_t)(uint64_t status);
-extern void mce_recoverable_register(mce_recoverable_t cbfunc);
-
 /* Read an MSR, checking for an interposed value first */
 extern struct intpose_ent *intpose_lookup(unsigned int cpu_nr, uint64_t msr,
     uint64_t *valp);
@@ -137,30 +129,6 @@ extern mctelem_cookie_t mcheck_mca_logou
                                           struct mca_summary *sp,
                                           struct mca_banks *clear_bank);
 
-/*
- * Register callbacks to be made during bank telemetry logout.
- * Those callbacks are only available to those machine check handlers
- * that call to the common mcheck_cmn_handler or who use the common
- * telemetry logout function mcheck_mca_logout in error polling.
- */
-
-/* Register a handler for judging whether the bank need to be cleared */
-typedef bool (*mce_need_clearbank_t)(enum mca_source who, u64 status);
-extern void mce_need_clearbank_register(mce_need_clearbank_t cbfunc);
-
-/*
- * Register a callback to collect additional information (typically non-
- * architectural) provided by newer CPU families/models without the need
- * to duplicate the whole handler resulting in various handlers each with
- * its own tweaks and bugs. The callback receives an struct mc_info pointer
- * which it can use with x86_mcinfo_reserve to add additional telemetry,
- * the current MCA bank number we are reading telemetry from, and the
- * MCi_STATUS value for that bank.
- */
-typedef struct mcinfo_extended *(*x86_mce_callback_t)
-    (struct mc_info *mi, uint16_t bank, uint64_t status);
-extern void x86_mce_callback_register(x86_mce_callback_t cbfunc);
-
 void *x86_mcinfo_reserve(struct mc_info *mi,
                          unsigned int size, unsigned int type);
 void x86_mcinfo_dump(struct mc_info *mi);
@@ -201,8 +169,44 @@ static inline int mce_bank_msr(const str
     return 0;
 }
 
-/* MC softirq */
-void mce_handler_init(void);
+struct mce_callbacks {
+    void (*handler)(const struct cpu_user_regs *regs);
+    bool (*check_addr)(uint64_t status, uint64_t misc, int addr_type);
+
+    /* Handler for judging whether mce is recoverable. */
+    bool (*recoverable_scan)(uint64_t status);
+
+    /*
+     * Callbacks to be made during bank telemetry logout.
+     * They are only available to those machine check handlers
+     * that call to the common mcheck_cmn_handler or who use the common
+     * telemetry logout function mcheck_mca_logout in error polling.
+     */
+
+    /*
+     * Judging whether to Clear Machine Check error bank callback handler.
+     * According to Intel latest MCA OS Recovery Writer's Guide, whether
+     * the error MCA bank needs to be cleared is decided by the mca_source
+     * and MCi_status bit value.
+     */
+    bool (*need_clearbank_scan)(enum mca_source who, u64 status);
+
+    /*
+     * Callback to collect additional information (typically non-
+     * architectural) provided by newer CPU families/models without the need
+     * to duplicate the whole handler resulting in various handlers each with
+     * its own tweaks and bugs. The callback receives an struct mc_info pointer
+     * which it can use with x86_mcinfo_reserve to add additional telemetry,
+     * the current MCA bank number we are reading telemetry from, and the
+     * MCi_STATUS value for that bank.
+     */
+    struct mcinfo_extended *(*info_collect)
+        (struct mc_info *mi, uint16_t bank, uint64_t status);
+};
+
+extern struct mce_callbacks mce_callbacks;
+
+void mce_handler_init(const struct mce_callbacks *cb);
 
 extern const struct mca_error_handler *mce_dhandlers;
 extern const struct mca_error_handler *mce_uhandlers;
--- a/xen/arch/x86/cpu/mcheck/mce_amd.c
+++ b/xen/arch/x86/cpu/mcheck/mce_amd.c
@@ -271,6 +271,19 @@ int vmce_amd_rdmsr(const struct vcpu *v,
     return 1;
 }
 
+static const struct mce_callbacks __initconst_cf_clobber k8_callbacks = {
+    .handler = mcheck_cmn_handler,
+    .need_clearbank_scan = amd_need_clearbank_scan,
+};
+
+static const struct mce_callbacks __initconst_cf_clobber k10_callbacks = {
+    .handler = mcheck_cmn_handler,
+    .check_addr = mc_amd_addrcheck,
+    .recoverable_scan = mc_amd_recoverable_scan,
+    .need_clearbank_scan = amd_need_clearbank_scan,
+    .info_collect = amd_f10_handler,
+};
+
 enum mcheck_type
 amd_mcheck_init(const struct cpuinfo_x86 *c, bool bsp)
 {
@@ -283,11 +296,7 @@ amd_mcheck_init(const struct cpuinfo_x86
     /* Assume that machine check support is available.
      * The minimum provided support is at least the K8. */
     if ( bsp )
-    {
-        mce_handler_init();
-        x86_mce_vector_register(mcheck_cmn_handler);
-        mce_need_clearbank_register(amd_need_clearbank_scan);
-    }
+        mce_handler_init(c->x86 == 0xf ? &k8_callbacks : &k10_callbacks);
 
     for ( i = 0; i < this_cpu(nr_mce_banks); i++ )
     {
@@ -327,13 +336,6 @@ amd_mcheck_init(const struct cpuinfo_x86
             ppin_msr = MSR_AMD_PPIN;
     }
 
-    if ( bsp )
-    {
-        x86_mce_callback_register(amd_f10_handler);
-        mce_recoverable_register(mc_amd_recoverable_scan);
-        mce_register_addrcheck(mc_amd_addrcheck);
-    }
-
     return c->x86_vendor == X86_VENDOR_HYGON ?
             mcheck_hygon : mcheck_amd_famXX;
 }
--- a/xen/arch/x86/cpu/mcheck/mce_intel.c
+++ b/xen/arch/x86/cpu/mcheck/mce_intel.c
@@ -849,11 +849,6 @@ static void intel_init_mce(bool bsp)
     if ( !bsp )
         return;
 
-    x86_mce_vector_register(mcheck_cmn_handler);
-    mce_recoverable_register(intel_recoverable_scan);
-    mce_need_clearbank_register(intel_need_clearbank_scan);
-    mce_register_addrcheck(intel_checkaddr);
-
     mce_dhandlers = intel_mce_dhandlers;
     mce_dhandler_num = ARRAY_SIZE(intel_mce_dhandlers);
     mce_uhandlers = intel_mce_uhandlers;
@@ -963,6 +958,13 @@ static int cf_check cpu_callback(
     return notifier_from_errno(rc);
 }
 
+static const struct mce_callbacks __initconst_cf_clobber intel_callbacks = {
+    .handler = mcheck_cmn_handler,
+    .check_addr = intel_checkaddr,
+    .recoverable_scan = intel_recoverable_scan,
+    .need_clearbank_scan = intel_need_clearbank_scan,
+};
+
 static struct notifier_block cpu_nfb = {
     .notifier_call = cpu_callback
 };
@@ -989,7 +991,7 @@ enum mcheck_type intel_mcheck_init(struc
     intel_init_mca(c);
 
     if ( bsp )
-        mce_handler_init();
+        mce_handler_init(&intel_callbacks);
 
     intel_init_mce(bsp);
 



From xen-devel-bounces@lists.xenproject.org Wed Jan 17 10:12:14 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 17 Jan 2024 10:12:14 +0000
Received: from list by lists.xenproject.org with outflank-mailman.668352.1040474 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQ2u1-0002JL-Ag; Wed, 17 Jan 2024 10:12:09 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 668352.1040474; Wed, 17 Jan 2024 10:12:09 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQ2u1-0002JE-6n; Wed, 17 Jan 2024 10:12:09 +0000
Received: by outflank-mailman (input) for mailman id 668352;
 Wed, 17 Jan 2024 10:12:08 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=bFEv=I3=linaro.org=jens.wiklander@srs-se1.protection.inumbo.net>)
 id 1rQ2tz-0002Hp-SR
 for xen-devel@lists.xenproject.org; Wed, 17 Jan 2024 10:12:08 +0000
Received: from mail-oo1-xc2c.google.com (mail-oo1-xc2c.google.com
 [2607:f8b0:4864:20::c2c])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id dce6c8ff-b520-11ee-98f2-6d05b1d4d9a1;
 Wed, 17 Jan 2024 11:12:06 +0100 (CET)
Received: by mail-oo1-xc2c.google.com with SMTP id
 006d021491bc7-598bcccca79so3007899eaf.2
 for <xen-devel@lists.xenproject.org>; Wed, 17 Jan 2024 02:12:06 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: dce6c8ff-b520-11ee-98f2-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=linaro.org; s=google; t=1705486324; x=1706091124; darn=lists.xenproject.org;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:from:to:cc:subject:date
         :message-id:reply-to;
        bh=Q/XXe5UvqHnIb0Jv0+n1QtDe02fY/UNY8xIANbHog4U=;
        b=t5kgZDQk+tXny4JM7IHDqoJc44avSMSSG/drnL7fvBHq/Jb55bVi20EwCplux46Wgk
         8CNnz2kNnV1QZ4RGe7ERhJno4XnU2x9tzWuU608uLa4hL+JZcKWLp7EWCXqB1zrJbx+k
         zXTiWtqSjI4mX90wd/eRdd4GyLxjvr2+eOBZhRSHnTUohvdQteGPceEzo/PTM5qS2f6o
         iVtYSZfZebJl5ZOyr4CbU5lo72VEmB0XbFeYCV0C8ol/smEIcrvlcs9nXz/q8DaVuSa6
         mm+aeyZONV8KOvQl9hjMOJ30nn+d84dZIl/RGD0brr9y5zX1QE4YV83wL5gov0p2U9Jf
         64ng==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705486324; x=1706091124;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to;
        bh=Q/XXe5UvqHnIb0Jv0+n1QtDe02fY/UNY8xIANbHog4U=;
        b=KnyHufigZ/HPFEd+pfcidkNHQuvphLZVnG2g5AX0w3tAQPkE4WSUIra1PgKdtd0g/R
         hnf6BmI8nl5A8evmbGNoXWgu7e8nXTnS4PhQmb3vwbcFRz6CrCRxJ3TCHEhwY3eqw/WY
         OhEmauH4WKzBM3tZBQRTdmzfMGdLOhsYETMyIdpFjG4xnS6c2v1Y0aoGMA5ON94eRuz4
         ZgSsCgMH5l9mqhsNOjTgZg3PTlXA2iocTDapizmLfNFKk4P+x5rpWoybHbQUZ1/chzmF
         t5l0DeiBGnWl7BG9JU99k2FvLVAoOY2Q3sggBIveUj39HI7qm6WEBr/863SUTHf7aju0
         ODOg==
X-Gm-Message-State: AOJu0YyWoXdka+6eG9GzDm64mS3Lb/aho8lEOJfOXbc3gx8g3CagHghs
	zFuH4r0iHzdFCqw2JmGxUoK4mvNfA11L3wkoHuJ3qYVCOOUhww==
X-Google-Smtp-Source: AGHT+IFXfM4d5TcJ1Fas7NQHo8nbvNHtZmEB/avCVYfyDXJt7zSc90gueU/QO5qfah7J4fqwkrLG19p6G+pbnL476IQ=
X-Received: by 2002:a4a:9d19:0:b0:598:6603:e4d with SMTP id
 w25-20020a4a9d19000000b0059866030e4dmr4750605ooj.18.1705486323820; Wed, 17
 Jan 2024 02:12:03 -0800 (PST)
MIME-Version: 1.0
References: <20231213112557.2393086-1-jens.wiklander@linaro.org> <766738F2-9DE5-4B75-8579-5D49DEA5BC1D@arm.com>
In-Reply-To: <766738F2-9DE5-4B75-8579-5D49DEA5BC1D@arm.com>
From: Jens Wiklander <jens.wiklander@linaro.org>
Date: Wed, 17 Jan 2024 11:11:52 +0100
Message-ID: <CAHUa44HFg_-zo71x3c_tdmpM4anTafpsnSyiU5EaEkgpW7V18w@mail.gmail.com>
Subject: Re: [XEN PATCH v2] xen/arm: ffa: reclaim shared memory on guest destroy
To: Bertrand Marquis <Bertrand.Marquis@arm.com>
Cc: Xen-devel <xen-devel@lists.xenproject.org>, 
	"patches@linaro.org" <patches@linaro.org>, Volodymyr Babchuk <volodymyr_babchuk@epam.com>, 
	Stefano Stabellini <sstabellini@kernel.org>, Julien Grall <julien@xen.org>, 
	Andrew Cooper <andrew.cooper3@citrix.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

Hi Bertrand,

On Mon, Jan 15, 2024 at 12:15=E2=80=AFPM Bertrand Marquis
<Bertrand.Marquis@arm.com> wrote:
>
> Hi Jens,
>
> Very sorry for the long delay.
>
> > On 13 Dec 2023, at 12:25, Jens Wiklander <jens.wiklander@linaro.org> wr=
ote:
> >
> > When an FF-A enabled guest is destroyed it may leave behind memory
> > shared with SPs. This memory must be reclaimed before it's reused or an
> > SP may make changes to memory used by a new unrelated guest. So when th=
e
> > domain is teared down add FF-A requests to reclaim all remaining shared
> > memory.
> >
> > SPs in the secure world are notified using VM_DESTROYED that a guest ha=
s
> > been destroyed. An SP is supposed to relinquish all shared memory to al=
low
> > reclaiming the memory. The relinquish operation may need to be delayed =
if
> > the shared memory is for instance part of a DMA operation.
> >
> > The domain reference counter is increased when the first FF-A shared
> > memory is registered and the counter is decreased again when the last
> > shared memory is reclaimed. If FF-A shared memory registrations remain
> > at the end of of ffa_domain_teardown() a timer is set to try to reclaim
> > the shared memory every second until the memory is reclaimed.
> >
> > Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>
> > ---
> > Hi,
> >
> > This is a follow-up to the RFC patch. In this patch, I take an explicit
> > reference on the domain when FF-A shared memory is registered. I've
> > discovered that it might not be strictly necessary until all the shared
> > pages are released with put_page() they also keep a reference to the
> > domain.
> >
> > I'm not entirely sure what is the status of the shared memory when the
> > domain has turned into a zombie. We still hold references on the shared
> > pages until put_page() is called on each. Is that enough to guarantee t=
hat
> > they will not be reused?
> >
> > Thanks,
> > Jens
> >
> > v2:
> > - Update commit message to match the new implementation
> > - Using a per domain bitfield to keep track of which SPs has been notif=
ied
> >  with VM_DESTROYED
> > - Holding a domain reference counter to keep the domain as a zombie dom=
ain
> >  while there still is shared memory registrations remaining to be recla=
imed
> > - Using a timer to retry reclaiming remaining shared memory registratio=
ns
> >
> > ---
> > xen/arch/arm/tee/ffa.c | 270 ++++++++++++++++++++++++++++++++++-------
> > 1 file changed, 224 insertions(+), 46 deletions(-)
> >
> > diff --git a/xen/arch/arm/tee/ffa.c b/xen/arch/arm/tee/ffa.c
> > index 183528d13388..22906a6e1cff 100644
> > --- a/xen/arch/arm/tee/ffa.c
> > +++ b/xen/arch/arm/tee/ffa.c
> > @@ -54,6 +54,7 @@
> > #include <xen/mm.h>
> > #include <xen/sched.h>
> > #include <xen/sizes.h>
> > +#include <xen/timer.h>
> > #include <xen/types.h>
> >
> > #include <asm/event.h>
> > @@ -384,11 +385,6 @@ struct ffa_ctx {
> >     unsigned int page_count;
> >     /* FF-A version used by the guest */
> >     uint32_t guest_vers;
> > -    /*
> > -     * Number of SPs that we have sent a VM created signal to, used in
> > -     * ffa_domain_teardown() to know which SPs need to be signalled.
> > -     */
> > -    uint16_t create_signal_count;
> >     bool rx_is_free;
> >     /* Used shared memory objects, struct ffa_shm_mem */
> >     struct list_head shm_list;
> > @@ -402,6 +398,15 @@ struct ffa_ctx {
> >     spinlock_t tx_lock;
> >     spinlock_t rx_lock;
> >     spinlock_t lock;
> > +    /* Used if domain can't be teared down immediately */
> > +    struct domain *teardown_d;
> > +    struct list_head teardown_list;
> > +    s_time_t teardown_expire;
> > +    /*
> > +     * Used for ffa_domain_teardown() to keep track of which SPs shoul=
d be
> > +     * notified that this guest is being destroyed.
> > +     */
> > +    unsigned long vm_destroy_bitmap[];
> > };
> >
> > struct ffa_shm_mem {
> > @@ -436,6 +441,12 @@ static void *ffa_tx __read_mostly;
> > static DEFINE_SPINLOCK(ffa_rx_buffer_lock);
> > static DEFINE_SPINLOCK(ffa_tx_buffer_lock);
> >
> > +
> > +/* Used if domain can't be teared down immediately */
>
> Please adapt the comment as this for all domains.
> Suggest: Used to track domains that could not be teared down immediately.

I'll update.

>
> > +static struct timer ffa_teardown_timer;
> > +static struct list_head ffa_teardown_head;
> > +static DEFINE_SPINLOCK(ffa_teardown_lock);
> > +
> > static bool ffa_get_version(uint32_t *vers)
> > {
> >     const struct arm_smccc_1_2_regs arg =3D {
> > @@ -850,7 +861,6 @@ static int32_t handle_partition_info_get(uint32_t w=
1, uint32_t w2, uint32_t w3,
> >             goto out_rx_release;
> >         }
> >
> > -
>
> You have several style changes like that in the patch.
> Those are not major so I am ok if you keep them in the patch but please
> mention in the commit messages that you do some code style fixes.

OK

>
> >         memcpy(ctx->rx, ffa_rx, sz);
> >     }
> >     ctx->rx_is_free =3D false;
> > @@ -989,53 +999,75 @@ static void put_shm_pages(struct ffa_shm_mem *shm=
)
> >     }
> > }
> >
> > -static bool inc_ctx_shm_count(struct ffa_ctx *ctx)
> > +static bool inc_ctx_shm_count(struct domain *d, struct ffa_ctx *ctx)
> > {
> >     bool ret =3D true;
> >
> >     spin_lock(&ctx->lock);
> > +
> > +    /*
> > +     * If this is the first shm added, increase the domain reference
> > +     * counter as we may need to domain around a bit longer to reclaim=
 the
>
> This sentence needs fixing (need to keep the domain..)

OK, I'll remove the word "may".

>
> > +     * shared memory in the teardown path.
> > +     */
> > +    if ( !ctx->shm_count )
> > +        get_knownalive_domain(d);
> > +
> >     if (ctx->shm_count >=3D FFA_MAX_SHM_COUNT)
> >         ret =3D false;
> >     else
> >         ctx->shm_count++;
> > +
> >     spin_unlock(&ctx->lock);
> >
> >     return ret;
> > }
> >
> > -static void dec_ctx_shm_count(struct ffa_ctx *ctx)
> > +static void dec_ctx_shm_count(struct domain *d, struct ffa_ctx *ctx)
> > {
> >     spin_lock(&ctx->lock);
> > +
> >     ASSERT(ctx->shm_count > 0);
> >     ctx->shm_count--;
> > +
> > +    /*
> > +     * If this was the last shm removed, let go of the domain referenc=
e we
> > +     * took in inc_ctx_shm_count() above.
> > +     */
> > +    if ( !ctx->shm_count )
> > +        put_domain(d);
> > +
> >     spin_unlock(&ctx->lock);
> > }
> >
> > -static struct ffa_shm_mem *alloc_ffa_shm_mem(struct ffa_ctx *ctx,
> > +static struct ffa_shm_mem *alloc_ffa_shm_mem(struct domain *d,
> >                                              unsigned int page_count)
> > {
> > +    struct ffa_ctx *ctx =3D d->arch.tee;
> >     struct ffa_shm_mem *shm;
> >
> >     if ( page_count >=3D FFA_MAX_SHM_PAGE_COUNT )
> >         return NULL;
> > -    if ( !inc_ctx_shm_count(ctx) )
> > +    if ( !inc_ctx_shm_count(d, ctx) )
> >         return NULL;
> >
> >     shm =3D xzalloc_flex_struct(struct ffa_shm_mem, pages, page_count);
> >     if ( shm )
> >         shm->page_count =3D page_count;
> >     else
> > -        dec_ctx_shm_count(ctx);
> > +        dec_ctx_shm_count(d, ctx);
> >
> >     return shm;
> > }
> >
> > -static void free_ffa_shm_mem(struct ffa_ctx *ctx, struct ffa_shm_mem *=
shm)
> > +static void free_ffa_shm_mem(struct domain *d, struct ffa_shm_mem *shm=
)
> > {
> > +    struct ffa_ctx *ctx =3D d->arch.tee;
> > +
> >     if ( !shm )
> >         return;
> >
> > -    dec_ctx_shm_count(ctx);
> > +    dec_ctx_shm_count(d, ctx);
> >     put_shm_pages(shm);
> >     xfree(shm);
> > }
> > @@ -1303,7 +1335,7 @@ static void handle_mem_share(struct cpu_user_regs=
 *regs)
> >         goto out_unlock;
> >     }
> >
> > -    shm =3D alloc_ffa_shm_mem(ctx, page_count);
> > +    shm =3D alloc_ffa_shm_mem(d, page_count);
> >     if ( !shm )
> >     {
> >         ret =3D FFA_RET_NO_MEMORY;
> > @@ -1347,7 +1379,7 @@ static void handle_mem_share(struct cpu_user_regs=
 *regs)
> >
> > out:
> >     if ( ret )
> > -        free_ffa_shm_mem(ctx, shm);
> > +        free_ffa_shm_mem(d, shm);
> > out_unlock:
> >     spin_unlock(&ctx->tx_lock);
> >
> > @@ -1398,7 +1430,7 @@ static int handle_mem_reclaim(uint64_t handle, ui=
nt32_t flags)
> >     }
> >     else
> >     {
> > -        free_ffa_shm_mem(ctx, shm);
> > +        free_ffa_shm_mem(d, shm);
> >     }
> >
> >     return ret;
> > @@ -1481,6 +1513,41 @@ static bool ffa_handle_call(struct cpu_user_regs=
 *regs)
> >     }
> > }
> >
> > +static bool is_in_subscr_list(const uint16_t *subscr, uint16_t start,
> > +                              uint16_t end, uint16_t sp_id)
> > +{
> > +    unsigned int n;
> > +
> > +    for ( n =3D start; n < end; n++ )
> > +    {
> > +        if ( subscr[n] =3D=3D sp_id )
> > +            return true;
> > +    }
> > +
> > +    return false;
> > +}
> > +
> > +static void vm_destroy_bitmap_init(struct ffa_ctx *ctx,
> > +                                   unsigned int create_signal_count)
> > +{
> > +    unsigned int n;
> > +
> > +    for ( n =3D 0; n < subscr_vm_destroyed_count; n++ )
> > +    {
> > +        /*
> > +         * Skip SPs subscribed to the VM created event that never was
> > +         * notified of the VM creation due to an error during
> > +         * ffa_domain_init().
> > +         */
> > +        if ( is_in_subscr_list(subscr_vm_created, create_signal_count,
> > +                               subscr_vm_created_count,
> > +                               subscr_vm_destroyed[n]) )
> > +            continue;
> > +
> > +        set_bit(n, ctx->vm_destroy_bitmap);
> > +    }
> > +}
> > +
> > static int ffa_domain_init(struct domain *d)
> > {
> >     struct ffa_ctx *ctx;
> > @@ -1496,11 +1563,14 @@ static int ffa_domain_init(struct domain *d)
> >     if ( d->domain_id >=3D UINT16_MAX)
> >         return -ERANGE;
> >
> > -    ctx =3D xzalloc(struct ffa_ctx);
> > +    ctx =3D xzalloc_flex_struct(struct ffa_ctx, vm_destroy_bitmap,
> > +                              BITS_TO_LONGS(subscr_vm_destroyed_count)=
);
> >     if ( !ctx )
> >         return -ENOMEM;
> >
> >     d->arch.tee =3D ctx;
> > +    ctx->teardown_d =3D d;
> > +    INIT_LIST_HEAD(&ctx->shm_list);
> >
> >     for ( n =3D 0; n < subscr_vm_created_count; n++ )
> >     {
> > @@ -1510,64 +1580,169 @@ static int ffa_domain_init(struct domain *d)
> >         {
> >             printk(XENLOG_ERR "ffa: Failed to report creation of vm_id =
%u to  %u: res %d\n",
> >                    get_vm_id(d), subscr_vm_created[n], res);
> > -            ctx->create_signal_count =3D n;
> > +            vm_destroy_bitmap_init(ctx, n);
>
> Here you could just break and ..
>
> >             return -EIO;
> >         }
> >     }
> > -    ctx->create_signal_count =3D subscr_vm_created_count;
> > -
> > -    INIT_LIST_HEAD(&ctx->shm_list);
> > +    vm_destroy_bitmap_init(ctx, subscr_vm_created_count);
>
> call with n and return -EIO if n !=3D vm_created_count.

OK

>
> >
> >     return 0;
> > }
> >
> > -static bool is_in_subscr_list(const uint16_t *subscr, uint16_t start,
> > -                              uint16_t end, uint16_t sp_id)
> > +static void send_vm_destroyed(struct domain *d)
> > {
> > +    struct ffa_ctx *ctx =3D d->arch.tee;
> >     unsigned int n;
> > +    int32_t res;
> >
> > -    for ( n =3D start; n < end; n++ )
> > +    for ( n =3D 0; n < subscr_vm_destroyed_count; n++ )
> >     {
> > -        if ( subscr[n] =3D=3D sp_id )
> > -            return true;
> > -    }
> > +        if ( !test_bit(n, ctx->vm_destroy_bitmap) )
> > +            continue;
> >
> > -    return false;
> > +        res =3D ffa_direct_req_send_vm(subscr_vm_destroyed[n], get_vm_=
id(d),
> > +                                     FFA_MSG_SEND_VM_DESTROYED);
> > +
> > +        if ( res )
> > +        {
> > +            printk(XENLOG_ERR "%pd: ffa: Failed to report destruction =
of vm_id %u to %u: res %d\n",
> > +                   d, get_vm_id(d), subscr_vm_destroyed[n], res);
> > +        }
> > +        else
> > +        {
> > +            clear_bit(n, ctx->vm_destroy_bitmap);
> > +        }
> > +    }
> > }
> >
> > -/* This function is supposed to undo what ffa_domain_init() has done *=
/
> > -static int ffa_domain_teardown(struct domain *d)
> > +static void reclaim_shms(struct domain *d)
> > {
> >     struct ffa_ctx *ctx =3D d->arch.tee;
> > -    unsigned int n;
> > +    struct ffa_shm_mem *shm, *tmp;
> >     int32_t res;
> >
> > +    list_for_each_entry_safe(shm, tmp, &ctx->shm_list, list)
> > +    {
> > +        register_t handle_hi;
> > +        register_t handle_lo;
> > +
> > +        uint64_to_regpair(&handle_hi, &handle_lo, shm->handle);
> > +        res =3D ffa_mem_reclaim(handle_lo, handle_hi, 0);
> > +        if ( res )
> > +        {
> > +            printk(XENLOG_G_INFO "%pd: ffa: Failed to reclaim handle %=
#lx : %d\n",
> > +                   d, shm->handle, res);
> > +        }
> > +        else
> > +        {
> > +            printk(XENLOG_G_DEBUG "%pd: ffa: Reclaimed handle %#lx\n",
> > +                   d, shm->handle);
> > +            list_del(&shm->list);
> > +            free_ffa_shm_mem(d, shm);
> > +        }
> > +    }
> > +}
> > +
> > +static bool ffa_domain_teardown_continue(struct ffa_ctx *ctx)
> > +{
> > +    send_vm_destroyed(ctx->teardown_d);
> > +    reclaim_shms(ctx->teardown_d);
> > +
> > +    if ( ctx->shm_count )
> > +    {
> > +        printk(XENLOG_G_INFO "%pd: ffa: Remaining unclaimed handles, r=
etrying\n", ctx->teardown_d);
> > +        return false;
> > +    }
> > +    else
> > +    {
> > +        return true;
> > +    }
> > +}
> > +
> > +static void ffa_teardown_timer_callback(void *arg)
> > +{
> > +    struct ffa_ctx *ctx;
> > +    bool do_free;
> > +
> > +    spin_lock(&ffa_teardown_lock);
> > +    ctx =3D list_first_entry_or_null(&ffa_teardown_head, struct ffa_ct=
x,
> > +                                   teardown_list);
> > +    spin_unlock(&ffa_teardown_lock);
> > +
> >     if ( !ctx )
> > -        return 0;
> > +    {
> > +        printk(XENLOG_G_ERR "%s: teardown list is empty\n", __func__);
> > +        return;
> > +    }
> >
> > -    for ( n =3D 0; n < subscr_vm_destroyed_count; n++ )
> > +    do_free =3D ffa_domain_teardown_continue(ctx);
> > +
> > +    spin_lock(&ffa_teardown_lock);
> > +    list_del(&ctx->teardown_list);
> > +    if ( !do_free )
> > +    {
> > +        ctx->teardown_expire =3D NOW() + SECONDS(1);
> > +        list_add_tail(&ctx->teardown_list, &ffa_teardown_head);
> > +    }
> > +    spin_unlock(&ffa_teardown_lock);
> > +
> > +    if ( do_free )
> >     {
> >         /*
> > -         * Skip SPs subscribed to the VM created event that never was
> > -         * notified of the VM creation due to an error during
> > -         * ffa_domain_init().
> > +         * domain_destroy() has likely been called (via put_domain() i=
n
> > +         * reclaim_shms()) by now, so we can't touch the domain
> > +         * structure anymore.
> >          */
> > -        if ( is_in_subscr_list(subscr_vm_created, ctx->create_signal_c=
ount,
> > -                               subscr_vm_created_count,
> > -                               subscr_vm_destroyed[n]) )
> > -            continue;
> > +        xfree(ctx);
> > +    }
> >
> > -        res =3D ffa_direct_req_send_vm(subscr_vm_destroyed[n], get_vm_=
id(d),
> > -                                     FFA_MSG_SEND_VM_DESTROYED);
> > +    spin_lock(&ffa_teardown_lock);
> > +    ctx =3D list_first_entry_or_null(&ffa_teardown_head, struct ffa_ct=
x,
> > +                                   teardown_list);
>
> Why not using list_empty here ?

Because we need the first ctx if there is any in the list. If there's
more than one, it's not the one we used above since that's last in the
list now.

>
> > +    spin_unlock(&ffa_teardown_lock);
> >
> > -        if ( res )
> > -            printk(XENLOG_ERR "ffa: Failed to report destruction of vm=
_id %u to  %u: res %d\n",
> > -                   get_vm_id(d), subscr_vm_destroyed[n], res);
> > -    }
> > +    if ( ctx )
> > +        set_timer(&ffa_teardown_timer, ctx->teardown_expire);
>
> I am a bit lost in the teardown_expire here.
>
> Why not just always set the timer to NOW() + SECONDS(1) ?

teardown_expire is assigned when ctx is added to the list. The
elements in the list is ordered with the one to expire the soonest
first. So two ctx'es in the list are not necessarily torn down with
one seconds delay between them, it depends on when they were added to
the list.

> Don't you have the risk of using an entry where the value was set previou=
sly and would now
> be in the past ?

Yes, there's a risk of that. Is that a problem? The reason I'm doing
it one at a time is to take as few CPU cycles at a time and at the
same time try to tear down after the expected delay.

>
> By the way could you create a proper define for the SECONDS(1) part so
> that one wanting to do this more or less frequently would just have to ch=
ange
> one define value instead ?

Sure, I'll fix.

>
> > +}
> > +
> > +static void ffa_queue_ctx_teardown(struct ffa_ctx *ctx)
> > +{
> > +    ctx->teardown_expire =3D  NOW() + SECONDS(1);
> > +
> > +    spin_lock(&ffa_teardown_lock);
> > +
> > +    /*
> > +     * The timer is already active if there are queued teardown entrie=
s.
> > +     */
> > +    if ( list_empty(&ffa_teardown_head) )
> > +        set_timer(&ffa_teardown_timer, ctx->teardown_expire);
> > +
> > +    list_add_tail(&ctx->teardown_list, &ffa_teardown_head);
> > +
> > +    spin_unlock(&ffa_teardown_lock);
> > +}
> > +
> > +/* This function is supposed to undo what ffa_domain_init() has done *=
/
> > +static int ffa_domain_teardown(struct domain *d)
> > +{
> > +    struct ffa_ctx *ctx =3D d->arch.tee;
> > +
> > +    if ( !ctx )
> > +        return 0;
> >
> >     if ( ctx->rx )
> >         rxtx_unmap(ctx);
> >
> > +    send_vm_destroyed(d);
> > +    reclaim_shms(d);
> > +
> > +    if ( ctx->shm_count )
> > +    {
> > +        printk(XENLOG_G_INFO "%pd: ffa: Remaining unclaimed handles, r=
etrying\n", d);
>
> This block of code is the same as ffa_domain_teardown_continue so you cou=
ld just call it and ..
>
> > +        ffa_queue_ctx_teardown(ctx);
>
> call this if it returns false.
>
> Overall i am a bit thinking that we could just have a generic function fo=
r one
> context doing:
> - try send vm_destroy
> - try reclaim shms
> - if succeed free tee
> - if not put the context at the end of the teardown list and refire the t=
imer if needed
>
> It feels that we have a bit of code duplication here that might be possib=
le to reduce a bit.
>

I'll try to reduce the code duplication.

Thanks,
Jens

>
> > +        return 0;
> > +    }
> > +
> >     XFREE(d->arch.tee);
> >
> >     return 0;
> > @@ -1733,6 +1908,9 @@ static bool ffa_probe(void)
> >     if ( !init_sps() )
> >         goto err_free_ffa_tx;
> >
> > +    INIT_LIST_HEAD(&ffa_teardown_head);
> > +    init_timer(&ffa_teardown_timer, ffa_teardown_timer_callback, NULL,=
 0);
> > +
> >     return true;
> >
> > err_free_ffa_tx:
> > --
> > 2.34.1
>
> Cheers
> Bertrand
>


From xen-devel-bounces@lists.xenproject.org Wed Jan 17 10:13:50 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 17 Jan 2024 10:13:50 +0000
Received: from list by lists.xenproject.org with outflank-mailman.668357.1040483 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQ2vc-0003It-OI; Wed, 17 Jan 2024 10:13:48 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 668357.1040483; Wed, 17 Jan 2024 10:13:48 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQ2vc-0003Im-Lo; Wed, 17 Jan 2024 10:13:48 +0000
Received: by outflank-mailman (input) for mailman id 668357;
 Wed, 17 Jan 2024 10:13:47 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=nKNn=I3=cloud.com=roger.pau@srs-se1.protection.inumbo.net>)
 id 1rQ2vb-0003Ig-F4
 for xen-devel@lists.xenproject.org; Wed, 17 Jan 2024 10:13:47 +0000
Received: from mail-wm1-x330.google.com (mail-wm1-x330.google.com
 [2a00:1450:4864:20::330])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 19918270-b521-11ee-98f2-6d05b1d4d9a1;
 Wed, 17 Jan 2024 11:13:46 +0100 (CET)
Received: by mail-wm1-x330.google.com with SMTP id
 5b1f17b1804b1-40e88012233so7560035e9.0
 for <xen-devel@lists.xenproject.org>; Wed, 17 Jan 2024 02:13:46 -0800 (PST)
Received: from localhost ([213.195.127.68]) by smtp.gmail.com with ESMTPSA id
 t6-20020a05600c198600b0040e48abec33sm25832806wmq.45.2024.01.17.02.13.45
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 17 Jan 2024 02:13:45 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 19918270-b521-11ee-98f2-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1705486426; x=1706091226; darn=lists.xenproject.org;
        h=in-reply-to:content-transfer-encoding:content-disposition
         :mime-version:references:message-id:subject:cc:to:from:date:from:to
         :cc:subject:date:message-id:reply-to;
        bh=cqODN6HsCQ4V/AYR2PUI1Wy+AgPS0bX/hXyt93QoHms=;
        b=aSkoqwcsvJ9xgTnMxhNpaeXpc+gxgeMisGyfH37YYAxq0NsiUFE947POgZBF5Dk+oJ
         McOv965cXS8iohaWqpZAuw/qrPbO6iwxMpEmnV3SQ6UHQPFEQAy5L5mBuPRqF7na32MB
         jnCurVrB1ehvj2Ptl5aH7TOo8EyuS6IX7ijh0=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705486426; x=1706091226;
        h=in-reply-to:content-transfer-encoding:content-disposition
         :mime-version:references:message-id:subject:cc:to:from:date
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=cqODN6HsCQ4V/AYR2PUI1Wy+AgPS0bX/hXyt93QoHms=;
        b=eTWjmAkXWyLNTDvT0AArBPKyLrO+4Tnjo3xyZJm84jrtf/Nn83UTDr8sdjZptql6hr
         agd/PYJkIy7joU6lGIxw0NWFFvRXEn7nh8KxXtIysC0nGbdruznn8gY1v9N6y7k83cYY
         hnC9DT06kRTnc1wE9cXEbWp/p5w3IwH37nSCUlr6kDnJ3eTwEKtznd0h2+Kff/1FqCtY
         Fz2cItJt0F++bpLG98x9DLpS71NPv46MI0oL5MTbPP9aYhpAS36noPL1LfKhoRUt5aDW
         MHVKWuEIcmCtkfRvWkpQ2+QBwwioRZLliv6H/U2m5uZZoXP5HCYX0B7qtr1zEK2O3hen
         IqAg==
X-Gm-Message-State: AOJu0YygAi8KE9dzhGsxlErN7C5yrRjXiCUn3t+s4VvYsTP8Es3Jbe+C
	s7G69Ct/IJSU5L1aLJfZZmUNC7I/2IQLXA==
X-Google-Smtp-Source: AGHT+IGzw0uQrRpmTV3pus5VVF4anOHA+Y8sKfTXz+SL+atzdgiHSvfKO0bbGI3w9r1kEGJyDgDGqA==
X-Received: by 2002:a05:600c:91c:b0:40e:45c0:ad66 with SMTP id m28-20020a05600c091c00b0040e45c0ad66mr5077856wmp.175.1705486425812;
        Wed, 17 Jan 2024 02:13:45 -0800 (PST)
Date: Wed, 17 Jan 2024 11:13:44 +0100
From: Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
To: Jan Beulich <jbeulich@suse.com>
Cc: Patrick Plenefisch <simonpatp@gmail.com>,
	xen-devel@lists.xenproject.org, Juergen Gross <jgross@suse.com>
Subject: Re: E820 memory allocation issue on Threadripper platforms
Message-ID: <ZaeoWBV8IEZap2mr@macbook>
References: <CAOCpoWdOH=xGxiQSC1c5Ueb1THxAjH4WiZbCZq-QT+d_KAk3SA@mail.gmail.com>
 <1708c3d7-662a-44bc-b9b3-4ab9f8642d7b@suse.com>
 <dcaf9d8d-ad5a-4714-936b-79ed0e587f9d@suse.com>
 <CAOCpoWeowZPuQTeBp9nu8p8CDtE=u++wN_UqRoABZtB57D50Qw@mail.gmail.com>
 <ac742d12-ec91-4215-bb42-82a145924b4f@suse.com>
 <CAOCpoWfQmkhN3hms1xuotSUZzVzR99i9cNGGU2r=yD5PjysMiQ@mail.gmail.com>
 <fa23a590-5869-4e11-8998-1d03742c5919@suse.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <fa23a590-5869-4e11-8998-1d03742c5919@suse.com>

On Wed, Jan 17, 2024 at 09:46:27AM +0100, Jan Beulich wrote:
> On 17.01.2024 07:12, Patrick Plenefisch wrote:
> > On Tue, Jan 16, 2024 at 4:33 AM Jan Beulich <jbeulich@suse.com> wrote:
> >> On 16.01.2024 01:22, Patrick Plenefisch wrote:
> >> It remains to be seen in how far it is reasonably possible to work
> >> around this in the kernel. While (sadly) still unsupported, in the
> >> meantime you may want to consider running Dom0 in PVH mode.
> >>
> > 
> > I tried this by adding dom0=pvh, and instead got this boot error:
> > 
> > (XEN) xenoprof: Initialization failed. AMD processor family 25 is not
> > supported
> > (XEN) NX (Execute Disable) protection active
> > (XEN) Dom0 has maximum 1400 PIRQs
> > (XEN) *** Building a PVH Dom0 ***
> > (XEN) Failed to load kernel: -1
> > (XEN) Xen dom0 kernel broken ELF: <NULL>
> > (XEN) Failed to load Dom0 kernel
> > (XEN)
> > (XEN) ****************************************
> > (XEN) Panic on CPU 0:
> > (XEN) Could not construct domain 0
> > (XEN) ****************************************
> > (XEN)
> > (XEN) Reboot in five seconds...
> 
> Hmm, that's sad. The more that the error messages aren't really
> informative. You did check though that your kernel is PVH-capable?
> (With a debug build of Xen, and with suitably high logging level,
> various of the ELF properties would be logged. Such output may or
> may not give further hints towards what's actually wrong. Albeit
> you using 4.17 this would further require you to pull in commit
> ea3dabfb80d7 ["x86/PVH: allow Dom0 ELF parsing to be verbose"].)
> 
> But wait - aren't you running into the same collision there with
> that memory region? I think that explains the unhelpful output.

I think so, elf_memcpy() in elf_load_image() is failing to load on the
given destination address.  Error messages should be more helpful
there.

> Whereas I assume the native kernel can deal with that as long as
> it's built with CONFIG_RELOCATABLE=y. I don't think we want to
> get into the business of interpreting the kernel's internal
> representation of the relocations needed, so it's not really
> clear to me what we might do in such a case. Perhaps the only way
> is to signal to the kernel that it needs to apply relocations
> itself (which in turn would require the kernel to signal to us
> that it's capable of doing so). Cc-ing Roger in case he has any
> neat idea.

Hm, no, not really.

We could do like multiboot2: the kernel provides us with some
placement data (min/max addresses, alignment), and Xen let's the
kernel deal with relocations itself.

Additionally we could support the kernel providing a section with the
relocations and apply them from Xen, but that's likely hm, complicated
at best, as I don't even know which kinds of relocations we would have
to support.

I'm not sure how Linux deals with this in the bare metal case, are
relocations done after decompressing and before jumping into the entry
point?

I would also need to check FreeBSD at least to have an idea of how
it's done there.

Thanks, Roger.


From xen-devel-bounces@lists.xenproject.org Wed Jan 17 10:25:13 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 17 Jan 2024 10:25:13 +0000
Received: from list by lists.xenproject.org with outflank-mailman.668362.1040493 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQ36Z-00079z-Oo; Wed, 17 Jan 2024 10:25:07 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 668362.1040493; Wed, 17 Jan 2024 10:25:07 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQ36Z-00079s-Lq; Wed, 17 Jan 2024 10:25:07 +0000
Received: by outflank-mailman (input) for mailman id 668362;
 Wed, 17 Jan 2024 10:25:06 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=nKNn=I3=cloud.com=roger.pau@srs-se1.protection.inumbo.net>)
 id 1rQ36Y-00079g-Na
 for xen-devel@lists.xenproject.org; Wed, 17 Jan 2024 10:25:06 +0000
Received: from mail-wr1-x432.google.com (mail-wr1-x432.google.com
 [2a00:1450:4864:20::432])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id ae65a50d-b522-11ee-98f2-6d05b1d4d9a1;
 Wed, 17 Jan 2024 11:25:05 +0100 (CET)
Received: by mail-wr1-x432.google.com with SMTP id
 ffacd0b85a97d-336c8ab0b20so9510439f8f.1
 for <xen-devel@lists.xenproject.org>; Wed, 17 Jan 2024 02:25:05 -0800 (PST)
Received: from localhost ([213.195.127.68]) by smtp.gmail.com with ESMTPSA id
 n5-20020adff085000000b00337b47ae539sm1326306wro.42.2024.01.17.02.25.04
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 17 Jan 2024 02:25:04 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: ae65a50d-b522-11ee-98f2-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1705487105; x=1706091905; darn=lists.xenproject.org;
        h=in-reply-to:content-disposition:mime-version:references:message-id
         :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to;
        bh=uG9FrMn8jAcHEgP71mtu/aFaa+6/OSS1qBkYLl6mAHU=;
        b=klA1e4YmyIY6FIxBNYXN0gW8TJsysFdABy/OOHDRk+5Oiv4f13SftzjFP8tSj6loXM
         L7F+Ny2CJQEpY8SV2ik55Nr/hnULeUl8fRTr+lXZsi0Hp2NPd2v8bRf6UL5qobCLrjn3
         FqAcDePIFFO4Msg0MAhPlmOgu8tAIfMlm7wng=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705487105; x=1706091905;
        h=in-reply-to:content-disposition:mime-version:references:message-id
         :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to;
        bh=uG9FrMn8jAcHEgP71mtu/aFaa+6/OSS1qBkYLl6mAHU=;
        b=c9GijOe9bA/dKF2cO7ab/QyHaCx2oqVJr6Zo3Qk6caD9yjDHcO+Og8o3/awRdvJmLl
         Qq5x6mP9j3eTCmDKRQkxaolglE3FW3gmtvzkRvPCh3Zgt0W/Tc550xGvwkZU8I3K2eci
         WUtvxXopUNSq9mtiCnBM04iOb4odqxGFLonIFXcHaHf2+bTy7b0yGsmm8QWMEZ6hfWEj
         F4VJgNFHWtZMq6V3ZjhhkJIsQsQDP++oH3oYQHrnTL/je1uwlvlum+0xawWiL/F5nFYT
         3pzSR56xWtCPbjzlArY9dWcrsYllSqIv/ZChuIW2Ugb0jG6rnDv1ibE6J1mHBUy78z77
         8ZyA==
X-Gm-Message-State: AOJu0Ywn36yItkELIULlVSzbqvbNAbYyXLVIIDaydF3MLQgAyqClwvlp
	s9UyH+yTNQSVIApnQp5AgEhY6JjzEBdsWQ==
X-Google-Smtp-Source: AGHT+IFcL3Yl3bsSniuzcelDmUMX88SoFJfTrqpzqidvJZEw2ruz2d3EC4Ps9b+Llu074DiQGPWxgQ==
X-Received: by 2002:a5d:4b8b:0:b0:337:2acd:6260 with SMTP id b11-20020a5d4b8b000000b003372acd6260mr5076205wrt.95.1705487105046;
        Wed, 17 Jan 2024 02:25:05 -0800 (PST)
Date: Wed, 17 Jan 2024 11:25:04 +0100
From: Roger Pau =?utf-8?B?TW9ubsOp?= <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>
Subject: Re: [PATCH] x86/PVH: Dom0 "broken ELF" reporting adjustments
Message-ID: <ZaerAAt1EnFAZpo3@macbook>
References: <fda7586f-a1d1-4500-a6c4-d0e010223ee2@suse.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
In-Reply-To: <fda7586f-a1d1-4500-a6c4-d0e010223ee2@suse.com>

On Wed, Jan 17, 2024 at 09:53:26AM +0100, Jan Beulich wrote:
> elf_load_binary() isn't the primary source of brokenness being
> indicated. Therefore make the respective log message there conditional
> (much like PV has it), and add another instance when elf_xen_parse()
> failed (again matching behavior in the PV case).
> 
> Signed-off-by: Jan Beulich <jbeulich@suse.com>
> 
> --- a/xen/arch/x86/hvm/dom0_build.c
> +++ b/xen/arch/x86/hvm/dom0_build.c
> @@ -570,6 +570,8 @@ static int __init pvh_load_kernel(struct
>      if ( (rc = elf_xen_parse(&elf, &parms, true)) != 0 )
>      {
>          printk("Unable to parse kernel for ELFNOTES\n");
> +        if ( elf_check_broken(&elf) )
> +            printk("Xen dom0 kernel broken ELF: %s\n", elf_check_broken(&elf));

I would rather use "%pd: kernel broken ELF: %s\n", in case this gets
used for loading more than dom0 in the dom0less case.  The 'Xen'
prefix is IMO useless here (I know it was here before).

Thanks, Roger.


From xen-devel-bounces@lists.xenproject.org Wed Jan 17 10:40:42 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 17 Jan 2024 10:40:42 +0000
Received: from list by lists.xenproject.org with outflank-mailman.668366.1040504 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQ3LP-0004ZM-08; Wed, 17 Jan 2024 10:40:27 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 668366.1040504; Wed, 17 Jan 2024 10:40:26 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQ3LO-0004ZF-TS; Wed, 17 Jan 2024 10:40:26 +0000
Received: by outflank-mailman (input) for mailman id 668366;
 Wed, 17 Jan 2024 10:40:26 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=yGoF=I3=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rQ3LO-0004Z9-3t
 for xen-devel@lists.xenproject.org; Wed, 17 Jan 2024 10:40:26 +0000
Received: from mail-lj1-x233.google.com (mail-lj1-x233.google.com
 [2a00:1450:4864:20::233])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id d2472f89-b524-11ee-98f2-6d05b1d4d9a1;
 Wed, 17 Jan 2024 11:40:24 +0100 (CET)
Received: by mail-lj1-x233.google.com with SMTP id
 38308e7fff4ca-2cddf596321so18518471fa.0
 for <xen-devel@lists.xenproject.org>; Wed, 17 Jan 2024 02:40:24 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 q11-20020a02c8cb000000b0046e50cca693sm343973jao.4.2024.01.17.02.40.22
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 17 Jan 2024 02:40:23 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: d2472f89-b524-11ee-98f2-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1705488024; x=1706092824; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=MF6y/tF24JXdoAFBG+DBL49jGWEbFq6auPY3ZL2jjec=;
        b=CTbAPuOuNHuDpyIxGCudaRhHbZWOShmlDv4IAjnmmQALmk1MAXIntoyvIh5Je5jtVK
         kDeDg6I+5B7/2POuJ+lTS+j+5Cc3uG2HzaqjOW6BpTUAhs/P0aZUdE6oFzhM0xljAat6
         6a0cyrSuzewgFvNfmV5QhT5QSenqRq4vMOvDgni9vOL7ETDRVNix4U84MsKS+kM8Tife
         C2BGPyrjRSMpZ7hnH43HZ+k2Je1koVPOQzPyVRGKkg5eUlTtJr5qg5aUR0ZIeerxlPaf
         n5poll480hOJ+7QRVy2UHdE8T+Z8Itdv/HsMpVsCOAeORyJLc8MeAEZOgAohnQ1eHlqh
         xFRw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705488024; x=1706092824;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=MF6y/tF24JXdoAFBG+DBL49jGWEbFq6auPY3ZL2jjec=;
        b=lthp87ZCFzbfxDAnNSD3dD/sIiJ7zzjHF7/iAdgel4AkjjHehWKpXIRxuVFSEHBQUD
         Oeoh/HecCs3tfR3iWVOxHI0urdtBrIrxnr0p2PdrXKP/VxvwwNbZOZ2XUgnNSixqhpE4
         mPEHntyWH3pFXeDA7CvyWPh4jFdxhwTNMA2sX9ZAtpeN8uH53+JKHnrS4GYbvvGsrDDK
         ahHP4vUkuZLNdadNfyLCqmyXthVhHuFpItYIJpEIFNDj9efCLK6qc9YwfgbfDgu5lh9E
         ppSw5ceCAsMWC3M5e83Mn76JalDWqAiDArvTQputtpj/yqWzSagw9tmdrVQYZYPqm1/Q
         M5Gg==
X-Gm-Message-State: AOJu0YxCJGbTYJrxwx8+L5QEdobIndmY4BE0ojxnhJbPHHcOQKsOp1HA
	AbIXwg1loUkEn1fODtWMN+JFAxyi4FEw
X-Google-Smtp-Source: AGHT+IFVENkTUqECNbBT/owJlNvyMbUq1QTIvSdtZ2JYlFvyxaVzPWNMYYx6Lfaldyy2g02mUVQf+g==
X-Received: by 2002:a05:651c:150c:b0:2cd:a873:473d with SMTP id e12-20020a05651c150c00b002cda873473dmr4867289ljf.0.1705488024063;
        Wed, 17 Jan 2024 02:40:24 -0800 (PST)
Message-ID: <15dcef46-aaa8-4f71-bd5c-355001dd9188@suse.com>
Date: Wed, 17 Jan 2024 11:40:20 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: E820 memory allocation issue on Threadripper platforms
Content-Language: en-US
To: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
Cc: Patrick Plenefisch <simonpatp@gmail.com>, xen-devel@lists.xenproject.org,
 Juergen Gross <jgross@suse.com>
References: <CAOCpoWdOH=xGxiQSC1c5Ueb1THxAjH4WiZbCZq-QT+d_KAk3SA@mail.gmail.com>
 <1708c3d7-662a-44bc-b9b3-4ab9f8642d7b@suse.com>
 <dcaf9d8d-ad5a-4714-936b-79ed0e587f9d@suse.com>
 <CAOCpoWeowZPuQTeBp9nu8p8CDtE=u++wN_UqRoABZtB57D50Qw@mail.gmail.com>
 <ac742d12-ec91-4215-bb42-82a145924b4f@suse.com>
 <CAOCpoWfQmkhN3hms1xuotSUZzVzR99i9cNGGU2r=yD5PjysMiQ@mail.gmail.com>
 <fa23a590-5869-4e11-8998-1d03742c5919@suse.com> <ZaeoWBV8IEZap2mr@macbook>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <ZaeoWBV8IEZap2mr@macbook>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 17.01.2024 11:13, Roger Pau Monné wrote:
> On Wed, Jan 17, 2024 at 09:46:27AM +0100, Jan Beulich wrote:
>> Whereas I assume the native kernel can deal with that as long as
>> it's built with CONFIG_RELOCATABLE=y. I don't think we want to
>> get into the business of interpreting the kernel's internal
>> representation of the relocations needed, so it's not really
>> clear to me what we might do in such a case. Perhaps the only way
>> is to signal to the kernel that it needs to apply relocations
>> itself (which in turn would require the kernel to signal to us
>> that it's capable of doing so). Cc-ing Roger in case he has any
>> neat idea.
> 
> Hm, no, not really.
> 
> We could do like multiboot2: the kernel provides us with some
> placement data (min/max addresses, alignment), and Xen let's the
> kernel deal with relocations itself.

Requiring the kernel's entry point to take a sufficiently different
flow then compared to how it's today, I expect.

> Additionally we could support the kernel providing a section with the
> relocations and apply them from Xen, but that's likely hm, complicated
> at best, as I don't even know which kinds of relocations we would have
> to support.

If the kernel was properly linked to a PIE, there'd generally be only
one kind of relocation (per arch) that ought to need dealing with -
for x86-64 that's R_X86_64_RELATIVE iirc. Hence why (I suppose) they
don't use ELF relocation structures (for being wastefully large), but
rather a more compact custom representation. Even without building PIE
(presumably in part not possible because of how per-CPU data needs
dealing with), they get away with handling just very few relocs (and
from looking at the reloc processing code I'm getting the impression
they mistreat R_X86_64_32 as being the same as R_X86_64_32S, when it
isn't; needing to get such quirks right is one more aspect of why I
think we should leave relocation handling to the kernel).

> I'm not sure how Linux deals with this in the bare metal case, are
> relocations done after decompressing and before jumping into the entry
> point?

That's how it was last time I looked, yes.

Jan

> I would also need to check FreeBSD at least to have an idea of how
> it's done there.
> 
> Thanks, Roger.



From xen-devel-bounces@lists.xenproject.org Wed Jan 17 10:40:43 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 17 Jan 2024 10:40:43 +0000
Received: from list by lists.xenproject.org with outflank-mailman.668367.1040514 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQ3Lf-00054N-8W; Wed, 17 Jan 2024 10:40:43 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 668367.1040514; Wed, 17 Jan 2024 10:40:43 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQ3Lf-00054F-4f; Wed, 17 Jan 2024 10:40:43 +0000
Received: by outflank-mailman (input) for mailman id 668367;
 Wed, 17 Jan 2024 10:40:41 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=X+bD=I3=web.de=Markus.Elfring@srs-se1.protection.inumbo.net>)
 id 1rQ3Ld-00052N-JP
 for xen-devel@lists.xenproject.org; Wed, 17 Jan 2024 10:40:41 +0000
Received: from mout.web.de (mout.web.de [212.227.15.3])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id dabb93dc-b524-11ee-9b0f-b553b5be7939;
 Wed, 17 Jan 2024 11:40:39 +0100 (CET)
Received: from [192.168.178.21] ([94.31.84.95]) by smtp.web.de (mrweb005
 [213.165.67.108]) with ESMTPSA (Nemesis) id 1MF2gW-1rNpMJ2Ney-00Fk11; Wed, 17
 Jan 2024 11:40:19 +0100
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: dabb93dc-b524-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=web.de; s=s29768273;
	t=1705488019; x=1706092819; i=markus.elfring@web.de;
	bh=vJqkCYXJxdgrKwi1w2Jjol0tYLSav4W0xcsFJVVuKzs=;
	h=X-UI-Sender-Class:Date:To:References:Subject:From:Cc:
	 In-Reply-To;
	b=gCJ4kmmzLFuW9q10d5VlkqRSXfsWhY1BOy4mZ1KZqwZSmsmcey/Wru0Ji7i6RCu+
	 5RjDMXuku7/D3SoymJH0hL90nQcJVq06x7EPvwHNQpYUzsFeyLFA1t7qJ2L011T0P
	 sttEf0pKEjfy+QlGzksncaZ5bM/qRhJ3ACU91tPjFONtt00/nrtZy4tlb/uWC6gnQ
	 QXTNai0u1aqCLL+4hM4zTmeblB8HEur3q+2xEFrahf3mIQ1PiVeCcQC+4rOiTVX47
	 3vjodOG6/c1AGm35XGR6Dmrqke/TMy053GHtw6K7Kff0+DDZyJuBRjvf/qktobjRV
	 T8UjpDuvPD+ByaVPlg==
X-UI-Sender-Class: 814a7b36-bfc1-4dae-8640-3722d8ec6cd6
Message-ID: <3e0c7008-417d-4549-ae0a-7f8d26522117@web.de>
Date: Wed, 17 Jan 2024 11:40:09 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
To: Kunwu Chan <chentao@kylinos.cn>, xen-devel@lists.xenproject.org,
 kernel-janitors@vger.kernel.org
References: <20240117090018.152031-1-chentao@kylinos.cn>
Subject: Re: [PATCH v2] x86/xen: Add some null pointer checking to smp.c
Content-Language: en-GB
From: Markus Elfring <Markus.Elfring@web.de>
Cc: LKML <linux-kernel@vger.kernel.org>, kernel test robot <lkp@intel.com>,
 Boris Ostrovsky <boris.ostrovsky@oracle.com>, Borislav Petkov
 <bp@alien8.de>, Dave Hansen <dave.hansen@linux.intel.com>,
 "H. Peter Anvin" <hpa@zytor.com>, Ingo Molnar <mingo@redhat.com>,
 =?UTF-8?B?SsO8cmdlbiBHcm/Dnw==?= <jgross@suse.com>,
 Thomas Gleixner <tglx@linutronix.de>, x86@kernel.org
In-Reply-To: <20240117090018.152031-1-chentao@kylinos.cn>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
X-Provags-ID: V03:K1:JaLRwvXgJjiefll0Tuwas9XKSthWswOnaJewGiQBlyjTcPN9V2f
 hcrT9hCDF4WMQbUTC8k8ldktcIrVPniJAn+SXNC0BsbmiJJp3ojo24Oib8U7MUU+sBdD0Yu
 9c2+NUGv0VOR/06RxZoAV6HYBZVNQWN89GhXqQ6KI3r7QMKbUFyIENEbq7fU76dv24P0270
 O6iv+fKAQp+KD0B1eJeiw==
X-Spam-Flag: NO
UI-OutboundReport: notjunk:1;M01:P0:YvfY7JRbdYE=;mP4N+bwOpR1xsAuYUabDW0+JE/C
 AE3sP6atgL4o5w8kpHZI1+fNDuODzzspTSsZR7Ts2xw+W8gyXyG1AU9oeO8z2bx51b+YDZxEc
 MbwFGMGq2pX3mvIDaFzbYKAXE/lHYKT/46vU02RCllriNMVeBdckIzK5GJnmy5BhwV9obgmBU
 uMnG0nxdznUdK5vArhi41S8rswOBBjA+p5BXIMTwuElcMviIZDzAgwaafC7M3oRl7yOEhXGTj
 kl387WORzaxMA5yuQk0SH089zXvB0kDj25tXAy50rOLWbGnPMeoU+UBwkwuMUrPR+fLAckcAQ
 5iezZjgPUvQOJrDOCGqLBm3U0KcSfDlOjBB/zGrIPGKsZ/USoc22ulDNOmT+q7G5NlWoHU2/S
 Q2jcDKj+XSwagdZr3XoaA+ntcEd90yizsoxwOHIdbnKxrYJ2gjeGocUOh1468GgeBXSIBNGB2
 Hc50BeWZWY+7fO7z7MBIYuWNPJTMhx/XS5uYn0x/8yLmq4WZFNc4mMRi4VkGrPHlpi42INqOj
 Iy+FP0U7hHYRqyu5biKL3OMOaiuhvlWKO5uTYiPRinKgQW9YZbbe12zJq4A6Pt+LM1EtpfBfm
 2r+23QPpCOME0xqwxvqai/69Nhxpxk9+MIVgx4qcnj+YfvhNimWMcfCBBO1s1EtwBmRVEUpgO
 SmQLEwYWfc2cV5bYz1T5thQLt2Noez5tEFErKazzhFyWhoi6R6jbgiAA7IXO3arCEQ9jxYMDF
 W5WS9MZKEiWQ99oQBTjVxcJ1AVBiX3Z+olPFFpLww+Dn/e2q74nF6G/dUQcFSKqFEdWHgJYOe
 ViGCTUON4npiWlzfq/oXAYoWsPa+0AnfUc7bevojJ/udgrqE89563O9spHpPWxCl8KHVFlm4Y
 wfzUoxVF2hfAH6Siuqg7QOkBgCXbJbZKUlgqEx5fjzd8GRqpuO4HdA0YWzg7NHcsdBMym5Xz4
 iEsT4g==

> kasprintf() returns a pointer to dynamically allocated memory
> which can be NULL upon failure. Ensure the allocation was successful
> by checking the pointer validity.
=E2=80=A6
> +++ b/arch/x86/xen/smp.c
> @@ -61,10 +61,14 @@ void xen_smp_intr_free(unsigned int cpu)
>
>  int xen_smp_intr_init(unsigned int cpu)
>  {
> -	int rc;
> +	int rc =3D 0;

I find the indication of a successful function execution sufficient by
the statement =E2=80=9Creturn 0;=E2=80=9D at the end.
How do you think about to omit such an extra variable initialisation?


>  	char *resched_name, *callfunc_name, *debug_name;
>
>  	resched_name =3D kasprintf(GFP_KERNEL, "resched%d", cpu);
> +	if (!resched_name) {
> +		rc =3D -ENOMEM;
> +		goto fail;
> +	}
>  	per_cpu(xen_resched_irq, cpu).name =3D resched_name;
>  	rc =3D bind_ipi_to_irqhandler(XEN_RESCHEDULE_VECTOR,
>  				    cpu,

You propose to apply the same error code in four if branches.
I suggest to avoid the specification of duplicate assignment statements
for this purpose.
How do you think about to use another label like =E2=80=9Ce_nomem=E2=80=9D=
?

Regards,
Markus


From xen-devel-bounces@lists.xenproject.org Wed Jan 17 10:43:02 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 17 Jan 2024 10:43:02 +0000
Received: from list by lists.xenproject.org with outflank-mailman.668372.1040524 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQ3Ns-0006Jq-Ku; Wed, 17 Jan 2024 10:43:00 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 668372.1040524; Wed, 17 Jan 2024 10:43:00 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQ3Ns-0006Jj-Gr; Wed, 17 Jan 2024 10:43:00 +0000
Received: by outflank-mailman (input) for mailman id 668372;
 Wed, 17 Jan 2024 10:42:59 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=yGoF=I3=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rQ3Nr-0006Jc-3g
 for xen-devel@lists.xenproject.org; Wed, 17 Jan 2024 10:42:59 +0000
Received: from mail-lj1-x22f.google.com (mail-lj1-x22f.google.com
 [2a00:1450:4864:20::22f])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 2d045206-b525-11ee-9b0f-b553b5be7939;
 Wed, 17 Jan 2024 11:42:56 +0100 (CET)
Received: by mail-lj1-x22f.google.com with SMTP id
 38308e7fff4ca-2ccae380df2so119866491fa.1
 for <xen-devel@lists.xenproject.org>; Wed, 17 Jan 2024 02:42:56 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 z15-20020a6bc90f000000b007bf05f618f3sm3548526iof.55.2024.01.17.02.42.55
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 17 Jan 2024 02:42:56 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 2d045206-b525-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1705488176; x=1706092976; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=5ZTquu/nci3a9YyU16W8yowwYX69uyLpF8pBSNkNIKQ=;
        b=gaGc1ALyYm82NSfzIRvewnXl+jecxIr4miJSfxKb7Y47jrvnAjdodbEeqAaeavyhkF
         vneIAyS4LAd8H4zrxz/yRpvjv/U3XQ5uQODydNzHn6uITyAzATcbUpk/ZgJAjXpwXyiX
         XQF87FaSQ8QUwQlMHVNtUaPmJz67vlSNNzv8uxWQBfwkppAMrq7QLtSNNmMG+LQm/h3H
         IFGMfdvZVlBemscKjQhbxDBfZxvoL4myM6twLHxHE7szMLIDv+Bok7UYRr1fXIYHs7N7
         uCNPEOO0WbADkDQfTCB9lK07Gx1Fl91+c92KBYK7WGgRQeysvRMioghcY7VLRCe93HyK
         /k3Q==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705488176; x=1706092976;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=5ZTquu/nci3a9YyU16W8yowwYX69uyLpF8pBSNkNIKQ=;
        b=OKo08M9ChglHTUDnjDNmrEqPWVmhHpdI58oy06gWUC1CyA89tVwsGLLiowvxZ2XbGQ
         4urqGBF5ImpiG9fhDO4iwiH4G52mghXe7or/tmY3Ln4A23wFb83lF336fs284bSHpDaV
         q/kpU+9jI5NAkG6nI4rNj5i59jY/CSfNxPQn59RmkPlRd/TgmzMcAgaOR7B9SRKB/3Iz
         JYJ0bvefDj9hs43AqdGGjWAQJz+3JUtXc8brhbUz97GxVA+iUSZfZ1vXaRpsI4bEAsI0
         yJXhEQVGxiBiqzHOf7GJsOAxOem7Dp36qYAgbEOYUdi5n96itBaoE/+GG7uaXo/4vMrJ
         dMMQ==
X-Gm-Message-State: AOJu0YyHAjxwvYQjO7KyRe/kGpM1whp6OkPpaYPV0zI/0DprkO/1/uxY
	I5rufMxsTW98F4C/VLLwFX6x9hw9MWux
X-Google-Smtp-Source: AGHT+IFBe11GNB/3WvfBRwJJyzPYHi1LUYnAeePno6uS8Us8ZIzYyUx0d4anjI1D4OvDnL+3BaaGNQ==
X-Received: by 2002:a2e:7e0a:0:b0:2cd:65f9:575e with SMTP id z10-20020a2e7e0a000000b002cd65f9575emr3637502ljc.107.1705488176530;
        Wed, 17 Jan 2024 02:42:56 -0800 (PST)
Message-ID: <de31c22f-6cb8-40dd-bb00-1e523fc3e9be@suse.com>
Date: Wed, 17 Jan 2024 11:42:53 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] x86/PVH: Dom0 "broken ELF" reporting adjustments
Content-Language: en-US
To: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
Cc: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>,
 Andrew Cooper <andrew.cooper3@citrix.com>, Wei Liu <wl@xen.org>
References: <fda7586f-a1d1-4500-a6c4-d0e010223ee2@suse.com>
 <ZaerAAt1EnFAZpo3@macbook>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <ZaerAAt1EnFAZpo3@macbook>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 17.01.2024 11:25, Roger Pau Monné wrote:
> On Wed, Jan 17, 2024 at 09:53:26AM +0100, Jan Beulich wrote:
>> elf_load_binary() isn't the primary source of brokenness being
>> indicated. Therefore make the respective log message there conditional
>> (much like PV has it), and add another instance when elf_xen_parse()
>> failed (again matching behavior in the PV case).
>>
>> Signed-off-by: Jan Beulich <jbeulich@suse.com>
>>
>> --- a/xen/arch/x86/hvm/dom0_build.c
>> +++ b/xen/arch/x86/hvm/dom0_build.c
>> @@ -570,6 +570,8 @@ static int __init pvh_load_kernel(struct
>>      if ( (rc = elf_xen_parse(&elf, &parms, true)) != 0 )
>>      {
>>          printk("Unable to parse kernel for ELFNOTES\n");
>> +        if ( elf_check_broken(&elf) )
>> +            printk("Xen dom0 kernel broken ELF: %s\n", elf_check_broken(&elf));
> 
> I would rather use "%pd: kernel broken ELF: %s\n", in case this gets
> used for loading more than dom0 in the dom0less case.  The 'Xen'
> prefix is IMO useless here (I know it was here before).

Can do. But if I do, I'd like to bring PV in sync with this as well,
right in the same patch. I hope you don't mind that.

Jan


From xen-devel-bounces@lists.xenproject.org Wed Jan 17 10:44:43 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 17 Jan 2024 10:44:43 +0000
Received: from list by lists.xenproject.org with outflank-mailman.668377.1040534 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQ3PW-0006ya-0j; Wed, 17 Jan 2024 10:44:42 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 668377.1040534; Wed, 17 Jan 2024 10:44:41 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQ3PV-0006yT-UC; Wed, 17 Jan 2024 10:44:41 +0000
Received: by outflank-mailman (input) for mailman id 668377;
 Wed, 17 Jan 2024 10:44:40 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=3JKZ=I3=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1rQ3PU-0006yN-SR
 for xen-devel@lists.xenproject.org; Wed, 17 Jan 2024 10:44:40 +0000
Received: from mail-wm1-x32a.google.com (mail-wm1-x32a.google.com
 [2a00:1450:4864:20::32a])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 6a6d6fe6-b525-11ee-98f2-6d05b1d4d9a1;
 Wed, 17 Jan 2024 11:44:40 +0100 (CET)
Received: by mail-wm1-x32a.google.com with SMTP id
 5b1f17b1804b1-40e8cc3b738so1620535e9.2
 for <xen-devel@lists.xenproject.org>; Wed, 17 Jan 2024 02:44:39 -0800 (PST)
Received: from [10.80.67.30] (default-46-102-197-194.interdsl.co.uk.
 [46.102.197.194]) by smtp.gmail.com with ESMTPSA id
 c11-20020a05600c0a4b00b0040d53588d94sm26032550wmq.46.2024.01.17.02.44.39
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 17 Jan 2024 02:44:39 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 6a6d6fe6-b525-11ee-98f2-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1705488279; x=1706093079; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=4861IsudPfMIVVV7aTNU17RkB4FwrCCK619tCXmEcUY=;
        b=f9KzKUKWzKXjqJhL88U3WJ2nVSBS5qRhh5Lf0/MQvg+/BYKjLPqTISA2637YA7iLO8
         ADVtAt1xwPMPCVhm3LbkGqd2KOvBoxCfpOQLa52row1+ceVL8xrGnIBJseJMQuf6tT0Q
         cuLoh4iMWd9OS6uotGEcgamb6BFAjLPKblMUo=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705488279; x=1706093079;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=4861IsudPfMIVVV7aTNU17RkB4FwrCCK619tCXmEcUY=;
        b=UZFKo9d6Hd1hGTuXg/PoRq4Eco9qlBDC5e9pHiEl05Tf8KAdgKu2W03/ILSwQOyoSx
         M2a/kyPvxO+CbOQS85PO0AckP4pmxMU3Uw2Gset2289lCCQArDCirdcMDWqNu+0J+6P6
         grgtANNwGZbiFDa/XqF/F07XyjH1Ls49CnRn2O6ZGxv4w6fZ9/mpxm0o0MeAVOQiqgeQ
         Ee1ia8o+Qohyrsqg4qProjSsEoz6+HTvWN25XLLx7S+xBe9m0vMTDAD3+ACm7V/EuSYR
         T/gEyLS0mABEnkOEJFJX+BERBIc4MzcH8J+p6FKYfzguiN14enXDUu2H/KOvTsYLOhad
         TwnQ==
X-Gm-Message-State: AOJu0Yzq+KUIjBMXimZl0e+Gh8+GxrZsRq1A/boDtuBZkH9laXvxRjwI
	f34pMhuwWbTbqmxdPqJJZ0aeISHgzkS4Xw==
X-Google-Smtp-Source: AGHT+IE2AEXg6gx5jTteMtMtHuG0lZ7XdLmM+RMBnLhcF8wvJkDadWUelT0kcqw8YlCY3SMkJLxGIA==
X-Received: by 2002:a05:600c:22cf:b0:40e:3a68:ac9b with SMTP id 15-20020a05600c22cf00b0040e3a68ac9bmr5014206wmg.186.1705488279309;
        Wed, 17 Jan 2024 02:44:39 -0800 (PST)
Message-ID: <7a6d5eab-dd30-44c5-a5b2-6fb34a01b746@citrix.com>
Date: Wed, 17 Jan 2024 10:44:38 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] x86/PVH: Dom0 "broken ELF" reporting adjustments
Content-Language: en-GB
To: Jan Beulich <jbeulich@suse.com>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger.pau@citrix.com>
Cc: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>,
 Wei Liu <wl@xen.org>
References: <fda7586f-a1d1-4500-a6c4-d0e010223ee2@suse.com>
 <ZaerAAt1EnFAZpo3@macbook> <de31c22f-6cb8-40dd-bb00-1e523fc3e9be@suse.com>
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 xsFNBFLhNn8BEADVhE+Hb8i0GV6mihnnr/uiQQdPF8kUoFzCOPXkf7jQ5sLYeJa0cQi6Penp
 VtiFYznTairnVsN5J+ujSTIb+OlMSJUWV4opS7WVNnxHbFTPYZVQ3erv7NKc2iVizCRZ2Kxn
 srM1oPXWRic8BIAdYOKOloF2300SL/bIpeD+x7h3w9B/qez7nOin5NzkxgFoaUeIal12pXSR
 Q354FKFoy6Vh96gc4VRqte3jw8mPuJQpfws+Pb+swvSf/i1q1+1I4jsRQQh2m6OTADHIqg2E
 ofTYAEh7R5HfPx0EXoEDMdRjOeKn8+vvkAwhviWXTHlG3R1QkbE5M/oywnZ83udJmi+lxjJ5
 YhQ5IzomvJ16H0Bq+TLyVLO/VRksp1VR9HxCzItLNCS8PdpYYz5TC204ViycobYU65WMpzWe
 LFAGn8jSS25XIpqv0Y9k87dLbctKKA14Ifw2kq5OIVu2FuX+3i446JOa2vpCI9GcjCzi3oHV
 e00bzYiHMIl0FICrNJU0Kjho8pdo0m2uxkn6SYEpogAy9pnatUlO+erL4LqFUO7GXSdBRbw5
 gNt25XTLdSFuZtMxkY3tq8MFss5QnjhehCVPEpE6y9ZjI4XB8ad1G4oBHVGK5LMsvg22PfMJ
 ISWFSHoF/B5+lHkCKWkFxZ0gZn33ju5n6/FOdEx4B8cMJt+cWwARAQABzSlBbmRyZXcgQ29v
 cGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPsLBegQTAQgAJAIbAwULCQgHAwUVCgkI
 CwUWAgMBAAIeAQIXgAUCWKD95wIZAQAKCRBlw/kGpdefoHbdD/9AIoR3k6fKl+RFiFpyAhvO
 59ttDFI7nIAnlYngev2XUR3acFElJATHSDO0ju+hqWqAb8kVijXLops0gOfqt3VPZq9cuHlh
 IMDquatGLzAadfFx2eQYIYT+FYuMoPZy/aTUazmJIDVxP7L383grjIkn+7tAv+qeDfE+txL4
 SAm1UHNvmdfgL2/lcmL3xRh7sub3nJilM93RWX1Pe5LBSDXO45uzCGEdst6uSlzYR/MEr+5Z
 JQQ32JV64zwvf/aKaagSQSQMYNX9JFgfZ3TKWC1KJQbX5ssoX/5hNLqxMcZV3TN7kU8I3kjK
 mPec9+1nECOjjJSO/h4P0sBZyIUGfguwzhEeGf4sMCuSEM4xjCnwiBwftR17sr0spYcOpqET
 ZGcAmyYcNjy6CYadNCnfR40vhhWuCfNCBzWnUW0lFoo12wb0YnzoOLjvfD6OL3JjIUJNOmJy
 RCsJ5IA/Iz33RhSVRmROu+TztwuThClw63g7+hoyewv7BemKyuU6FTVhjjW+XUWmS/FzknSi
 dAG+insr0746cTPpSkGl3KAXeWDGJzve7/SBBfyznWCMGaf8E2P1oOdIZRxHgWj0zNr1+ooF
 /PzgLPiCI4OMUttTlEKChgbUTQ+5o0P080JojqfXwbPAyumbaYcQNiH1/xYbJdOFSiBv9rpt
 TQTBLzDKXok86M7BTQRS4TZ/ARAAkgqudHsp+hd82UVkvgnlqZjzz2vyrYfz7bkPtXaGb9H4
 Rfo7mQsEQavEBdWWjbga6eMnDqtu+FC+qeTGYebToxEyp2lKDSoAsvt8w82tIlP/EbmRbDVn
 7bhjBlfRcFjVYw8uVDPptT0TV47vpoCVkTwcyb6OltJrvg/QzV9f07DJswuda1JH3/qvYu0p
 vjPnYvCq4NsqY2XSdAJ02HrdYPFtNyPEntu1n1KK+gJrstjtw7KsZ4ygXYrsm/oCBiVW/OgU
 g/XIlGErkrxe4vQvJyVwg6YH653YTX5hLLUEL1NS4TCo47RP+wi6y+TnuAL36UtK/uFyEuPy
 wwrDVcC4cIFhYSfsO0BumEI65yu7a8aHbGfq2lW251UcoU48Z27ZUUZd2Dr6O/n8poQHbaTd
 6bJJSjzGGHZVbRP9UQ3lkmkmc0+XCHmj5WhwNNYjgbbmML7y0fsJT5RgvefAIFfHBg7fTY/i
 kBEimoUsTEQz+N4hbKwo1hULfVxDJStE4sbPhjbsPCrlXf6W9CxSyQ0qmZ2bXsLQYRj2xqd1
 bpA+1o1j2N4/au1R/uSiUFjewJdT/LX1EklKDcQwpk06Af/N7VZtSfEJeRV04unbsKVXWZAk
 uAJyDDKN99ziC0Wz5kcPyVD1HNf8bgaqGDzrv3TfYjwqayRFcMf7xJaL9xXedMcAEQEAAcLB
 XwQYAQgACQUCUuE2fwIbDAAKCRBlw/kGpdefoG4XEACD1Qf/er8EA7g23HMxYWd3FXHThrVQ
 HgiGdk5Yh632vjOm9L4sd/GCEACVQKjsu98e8o3ysitFlznEns5EAAXEbITrgKWXDDUWGYxd
 pnjj2u+GkVdsOAGk0kxczX6s+VRBhpbBI2PWnOsRJgU2n10PZ3mZD4Xu9kU2IXYmuW+e5KCA
 vTArRUdCrAtIa1k01sPipPPw6dfxx2e5asy21YOytzxuWFfJTGnVxZZSCyLUO83sh6OZhJkk
 b9rxL9wPmpN/t2IPaEKoAc0FTQZS36wAMOXkBh24PQ9gaLJvfPKpNzGD8XWR5HHF0NLIJhgg
 4ZlEXQ2fVp3XrtocHqhu4UZR4koCijgB8sB7Tb0GCpwK+C4UePdFLfhKyRdSXuvY3AHJd4CP
 4JzW0Bzq/WXY3XMOzUTYApGQpnUpdOmuQSfpV9MQO+/jo7r6yPbxT7CwRS5dcQPzUiuHLK9i
 nvjREdh84qycnx0/6dDroYhp0DFv4udxuAvt1h4wGwTPRQZerSm4xaYegEFusyhbZrI0U9tJ
 B8WrhBLXDiYlyJT6zOV2yZFuW47VrLsjYnHwn27hmxTC/7tvG3euCklmkn9Sl9IAKFu29RSo
 d5bD8kMSCYsTqtTfT6W4A3qHGvIDta3ptLYpIAOD2sY3GYq2nf3Bbzx81wZK14JdDDHUX2Rs
 6+ahAA==
In-Reply-To: <de31c22f-6cb8-40dd-bb00-1e523fc3e9be@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 17/01/2024 10:42 am, Jan Beulich wrote:
> On 17.01.2024 11:25, Roger Pau Monné wrote:
>> On Wed, Jan 17, 2024 at 09:53:26AM +0100, Jan Beulich wrote:
>>> elf_load_binary() isn't the primary source of brokenness being
>>> indicated. Therefore make the respective log message there conditional
>>> (much like PV has it), and add another instance when elf_xen_parse()
>>> failed (again matching behavior in the PV case).
>>>
>>> Signed-off-by: Jan Beulich <jbeulich@suse.com>
>>>
>>> --- a/xen/arch/x86/hvm/dom0_build.c
>>> +++ b/xen/arch/x86/hvm/dom0_build.c
>>> @@ -570,6 +570,8 @@ static int __init pvh_load_kernel(struct
>>>      if ( (rc = elf_xen_parse(&elf, &parms, true)) != 0 )
>>>      {
>>>          printk("Unable to parse kernel for ELFNOTES\n");
>>> +        if ( elf_check_broken(&elf) )
>>> +            printk("Xen dom0 kernel broken ELF: %s\n", elf_check_broken(&elf));
>> I would rather use "%pd: kernel broken ELF: %s\n", in case this gets
>> used for loading more than dom0 in the dom0less case.  The 'Xen'
>> prefix is IMO useless here (I know it was here before).
> Can do. But if I do, I'd like to bring PV in sync with this as well,
> right in the same patch. I hope you don't mind that.

Sounds good to me.

~Andrew


From xen-devel-bounces@lists.xenproject.org Wed Jan 17 10:59:23 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 17 Jan 2024 10:59:23 +0000
Received: from list by lists.xenproject.org with outflank-mailman.668384.1040543 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQ3dc-000362-8F; Wed, 17 Jan 2024 10:59:16 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 668384.1040543; Wed, 17 Jan 2024 10:59:16 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQ3dc-00035v-5X; Wed, 17 Jan 2024 10:59:16 +0000
Received: by outflank-mailman (input) for mailman id 668384;
 Wed, 17 Jan 2024 10:59:15 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=3JKZ=I3=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1rQ3db-00035p-7C
 for xen-devel@lists.xenproject.org; Wed, 17 Jan 2024 10:59:15 +0000
Received: from mail-wr1-x42e.google.com (mail-wr1-x42e.google.com
 [2a00:1450:4864:20::42e])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 712218d3-b527-11ee-9b0f-b553b5be7939;
 Wed, 17 Jan 2024 11:59:12 +0100 (CET)
Received: by mail-wr1-x42e.google.com with SMTP id
 ffacd0b85a97d-336c9acec03so8970075f8f.2
 for <xen-devel@lists.xenproject.org>; Wed, 17 Jan 2024 02:59:10 -0800 (PST)
Received: from [10.80.67.30] (default-46-102-197-194.interdsl.co.uk.
 [46.102.197.194]) by smtp.gmail.com with ESMTPSA id
 k2-20020a5d4282000000b003378d89737fsm1386418wrq.46.2024.01.17.02.59.09
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 17 Jan 2024 02:59:09 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 712218d3-b527-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1705489150; x=1706093950; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=sJNKo96t28pm8M6GuZGMWyBOL89EgXmMwm+B3/vAZgM=;
        b=YrSP8fzS4zbAxVj6cIe4EseNOQWlREWXnLONB4OL98FcOzcTgNBBhO9BcRP5Z3hFk7
         ZhxnFEY88wncQt71eDtUiUA3V5i+ltsmiTg5zK6bnr3u0PCw5y8ycWcanCVk0syJ1FN8
         TLak+nTdO+1PAAAeBjiZSXRC2m8DYlvO2dt+8=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705489150; x=1706093950;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=sJNKo96t28pm8M6GuZGMWyBOL89EgXmMwm+B3/vAZgM=;
        b=L5//oNDHhVZ0VafrGdaHCdDzQjScEW+7ktOdSIdTwqtyFzMqr0cekZ9WXecLbB7Nr0
         KNwrvu/fYmEIOZpQLzvNad/wwd6QKhh7RhEeKLqNv+uTp8fh1UL5e7PpRHRKnu2VxAzs
         mCj1VuxGbEzbM15YVSNZc/hHCsQXlUrchcS3ZYcPtWMz9WttPCP47SQ3r5nAThzah6Ji
         HeFXZn2k75QJduD/vmt1IUgxjQQcTsaDeVO21H2uz8+0WxfHpRKiMYDymC5fEKjgInzg
         YrDt//Vb/F3+/RCdm/WAiQ8bCNcFXLUiRxrb48OLUNxQ4FJXRjW/BNsauLYW//CBgXc9
         97yA==
X-Gm-Message-State: AOJu0YzRPiVArhZPC6kpeVygEEmZuhYd1Gro/N9lVzemleAtlQ64IMR4
	tV7b6vWOhKKiudT6haSjJxvvp+nti2ctow==
X-Google-Smtp-Source: AGHT+IF/Bnxkhq5NljX88/KjhEIpkgoIDKMKR8gTILT8dxHWptJm8Qtcpen8bkEYkzI88nz9/qzGbQ==
X-Received: by 2002:adf:ef52:0:b0:337:bdcf:9d83 with SMTP id c18-20020adfef52000000b00337bdcf9d83mr1087485wrp.95.1705489149704;
        Wed, 17 Jan 2024 02:59:09 -0800 (PST)
Message-ID: <2d6ddc71-ffc7-47e5-addf-6a39ffcd7548@citrix.com>
Date: Wed, 17 Jan 2024 10:59:09 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2] x86/PV: avoid indirect call for I/O emulation quirk
 hook
Content-Language: en-GB
To: Jan Beulich <jbeulich@suse.com>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Wei Liu <wl@xen.org>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger.pau@citrix.com>
References: <28b46611-ff98-45cd-a2b0-ffe36b8f0ccf@suse.com>
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 xsFNBFLhNn8BEADVhE+Hb8i0GV6mihnnr/uiQQdPF8kUoFzCOPXkf7jQ5sLYeJa0cQi6Penp
 VtiFYznTairnVsN5J+ujSTIb+OlMSJUWV4opS7WVNnxHbFTPYZVQ3erv7NKc2iVizCRZ2Kxn
 srM1oPXWRic8BIAdYOKOloF2300SL/bIpeD+x7h3w9B/qez7nOin5NzkxgFoaUeIal12pXSR
 Q354FKFoy6Vh96gc4VRqte3jw8mPuJQpfws+Pb+swvSf/i1q1+1I4jsRQQh2m6OTADHIqg2E
 ofTYAEh7R5HfPx0EXoEDMdRjOeKn8+vvkAwhviWXTHlG3R1QkbE5M/oywnZ83udJmi+lxjJ5
 YhQ5IzomvJ16H0Bq+TLyVLO/VRksp1VR9HxCzItLNCS8PdpYYz5TC204ViycobYU65WMpzWe
 LFAGn8jSS25XIpqv0Y9k87dLbctKKA14Ifw2kq5OIVu2FuX+3i446JOa2vpCI9GcjCzi3oHV
 e00bzYiHMIl0FICrNJU0Kjho8pdo0m2uxkn6SYEpogAy9pnatUlO+erL4LqFUO7GXSdBRbw5
 gNt25XTLdSFuZtMxkY3tq8MFss5QnjhehCVPEpE6y9ZjI4XB8ad1G4oBHVGK5LMsvg22PfMJ
 ISWFSHoF/B5+lHkCKWkFxZ0gZn33ju5n6/FOdEx4B8cMJt+cWwARAQABzSlBbmRyZXcgQ29v
 cGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPsLBegQTAQgAJAIbAwULCQgHAwUVCgkI
 CwUWAgMBAAIeAQIXgAUCWKD95wIZAQAKCRBlw/kGpdefoHbdD/9AIoR3k6fKl+RFiFpyAhvO
 59ttDFI7nIAnlYngev2XUR3acFElJATHSDO0ju+hqWqAb8kVijXLops0gOfqt3VPZq9cuHlh
 IMDquatGLzAadfFx2eQYIYT+FYuMoPZy/aTUazmJIDVxP7L383grjIkn+7tAv+qeDfE+txL4
 SAm1UHNvmdfgL2/lcmL3xRh7sub3nJilM93RWX1Pe5LBSDXO45uzCGEdst6uSlzYR/MEr+5Z
 JQQ32JV64zwvf/aKaagSQSQMYNX9JFgfZ3TKWC1KJQbX5ssoX/5hNLqxMcZV3TN7kU8I3kjK
 mPec9+1nECOjjJSO/h4P0sBZyIUGfguwzhEeGf4sMCuSEM4xjCnwiBwftR17sr0spYcOpqET
 ZGcAmyYcNjy6CYadNCnfR40vhhWuCfNCBzWnUW0lFoo12wb0YnzoOLjvfD6OL3JjIUJNOmJy
 RCsJ5IA/Iz33RhSVRmROu+TztwuThClw63g7+hoyewv7BemKyuU6FTVhjjW+XUWmS/FzknSi
 dAG+insr0746cTPpSkGl3KAXeWDGJzve7/SBBfyznWCMGaf8E2P1oOdIZRxHgWj0zNr1+ooF
 /PzgLPiCI4OMUttTlEKChgbUTQ+5o0P080JojqfXwbPAyumbaYcQNiH1/xYbJdOFSiBv9rpt
 TQTBLzDKXok86M7BTQRS4TZ/ARAAkgqudHsp+hd82UVkvgnlqZjzz2vyrYfz7bkPtXaGb9H4
 Rfo7mQsEQavEBdWWjbga6eMnDqtu+FC+qeTGYebToxEyp2lKDSoAsvt8w82tIlP/EbmRbDVn
 7bhjBlfRcFjVYw8uVDPptT0TV47vpoCVkTwcyb6OltJrvg/QzV9f07DJswuda1JH3/qvYu0p
 vjPnYvCq4NsqY2XSdAJ02HrdYPFtNyPEntu1n1KK+gJrstjtw7KsZ4ygXYrsm/oCBiVW/OgU
 g/XIlGErkrxe4vQvJyVwg6YH653YTX5hLLUEL1NS4TCo47RP+wi6y+TnuAL36UtK/uFyEuPy
 wwrDVcC4cIFhYSfsO0BumEI65yu7a8aHbGfq2lW251UcoU48Z27ZUUZd2Dr6O/n8poQHbaTd
 6bJJSjzGGHZVbRP9UQ3lkmkmc0+XCHmj5WhwNNYjgbbmML7y0fsJT5RgvefAIFfHBg7fTY/i
 kBEimoUsTEQz+N4hbKwo1hULfVxDJStE4sbPhjbsPCrlXf6W9CxSyQ0qmZ2bXsLQYRj2xqd1
 bpA+1o1j2N4/au1R/uSiUFjewJdT/LX1EklKDcQwpk06Af/N7VZtSfEJeRV04unbsKVXWZAk
 uAJyDDKN99ziC0Wz5kcPyVD1HNf8bgaqGDzrv3TfYjwqayRFcMf7xJaL9xXedMcAEQEAAcLB
 XwQYAQgACQUCUuE2fwIbDAAKCRBlw/kGpdefoG4XEACD1Qf/er8EA7g23HMxYWd3FXHThrVQ
 HgiGdk5Yh632vjOm9L4sd/GCEACVQKjsu98e8o3ysitFlznEns5EAAXEbITrgKWXDDUWGYxd
 pnjj2u+GkVdsOAGk0kxczX6s+VRBhpbBI2PWnOsRJgU2n10PZ3mZD4Xu9kU2IXYmuW+e5KCA
 vTArRUdCrAtIa1k01sPipPPw6dfxx2e5asy21YOytzxuWFfJTGnVxZZSCyLUO83sh6OZhJkk
 b9rxL9wPmpN/t2IPaEKoAc0FTQZS36wAMOXkBh24PQ9gaLJvfPKpNzGD8XWR5HHF0NLIJhgg
 4ZlEXQ2fVp3XrtocHqhu4UZR4koCijgB8sB7Tb0GCpwK+C4UePdFLfhKyRdSXuvY3AHJd4CP
 4JzW0Bzq/WXY3XMOzUTYApGQpnUpdOmuQSfpV9MQO+/jo7r6yPbxT7CwRS5dcQPzUiuHLK9i
 nvjREdh84qycnx0/6dDroYhp0DFv4udxuAvt1h4wGwTPRQZerSm4xaYegEFusyhbZrI0U9tJ
 B8WrhBLXDiYlyJT6zOV2yZFuW47VrLsjYnHwn27hmxTC/7tvG3euCklmkn9Sl9IAKFu29RSo
 d5bD8kMSCYsTqtTfT6W4A3qHGvIDta3ptLYpIAOD2sY3GYq2nf3Bbzx81wZK14JdDDHUX2Rs
 6+ahAA==
In-Reply-To: <28b46611-ff98-45cd-a2b0-ffe36b8f0ccf@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 17/01/2024 9:37 am, Jan Beulich wrote:
> This way ioemul_handle_proliant_quirk() won't need ENDBR anymore.
>
> While touching this code, also
> - arrange for it to not be built at all when !PV,
> - add "const" to the last function parameter and bring the definition
>   in sync with the declaration (for Misra).
>
> Signed-off-by: Jan Beulich <jbeulich@suse.com>

Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>

> ---
> Obviously the file may want moving to pv/ then. I wasn't sure whether
> to also fold doing so right into here.

I'm sure we discussed this before, but I don't think we had a firm
conclusion.

IIRC there was a concern that we might need it for PVH dom0 too,
depending on the degree to which the CLI is actually necessary here.

The CLI is definitely not NMI safe, and whatever SMM logic we're
tickling here should be synchronous with the INB.  At a guess the CLI is
just to get the RPC all done without adverse delay, but there is a
distinct lack of useful information here.

~Andrew


From xen-devel-bounces@lists.xenproject.org Wed Jan 17 11:06:43 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 17 Jan 2024 11:06:43 +0000
Received: from list by lists.xenproject.org with outflank-mailman.668388.1040554 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQ3kl-0005oH-0s; Wed, 17 Jan 2024 11:06:39 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 668388.1040554; Wed, 17 Jan 2024 11:06:38 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQ3kk-0005oA-Ss; Wed, 17 Jan 2024 11:06:38 +0000
Received: by outflank-mailman (input) for mailman id 668388;
 Wed, 17 Jan 2024 11:06:37 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=bFEv=I3=linaro.org=jens.wiklander@srs-se1.protection.inumbo.net>)
 id 1rQ3kj-0005nd-Fw
 for xen-devel@lists.xenproject.org; Wed, 17 Jan 2024 11:06:37 +0000
Received: from mail-il1-x135.google.com (mail-il1-x135.google.com
 [2607:f8b0:4864:20::135])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 7ac5b594-b528-11ee-98f2-6d05b1d4d9a1;
 Wed, 17 Jan 2024 12:06:36 +0100 (CET)
Received: by mail-il1-x135.google.com with SMTP id
 e9e14a558f8ab-3606e11d9cbso52765945ab.0
 for <xen-devel@lists.xenproject.org>; Wed, 17 Jan 2024 03:06:36 -0800 (PST)
Received: from localhost.localdomain (h-217-31-164-171.A175.priv.bahnhof.se.
 [217.31.164.171]) by smtp.gmail.com with ESMTPSA id
 u1-20020a92d1c1000000b0036192ec5752sm608732ilg.70.2024.01.17.03.06.32
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 17 Jan 2024 03:06:34 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 7ac5b594-b528-11ee-98f2-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=linaro.org; s=google; t=1705489595; x=1706094395; darn=lists.xenproject.org;
        h=content-transfer-encoding:mime-version:message-id:date:subject:cc
         :to:from:from:to:cc:subject:date:message-id:reply-to;
        bh=lp2/sjObl8jdBo6LiHF2HIUI463phOr/yBZy0H6KbQU=;
        b=VZtjxnOr//fpROMdu+1hUYwcknO9gFtyfg6RaMzvrzl9KrgJrVz4oETBStS5E119Is
         ysSHStJ2qKMXZMPm4Qwo61huJhCKRCeV5cTeSZ1FFgutIwonTaBSNNVrOkMLte1e5Jrd
         1dlGYY+q5M/wnjAUIMGTjvA7Px1DMuzqZTOFmP6En4gUcMBLbJgDQVT1bZJbBd3q2+8o
         SFe5QBAcHsuVUTw365aNWxRlX3rw824wbHS7SRM1N3YJ+08Gq+iOMCRSXapREUfX2BOL
         t7JjjzByUMQNYX12xpBsUc4IZvrdoR/e0wViCG4hOdvQLHVe/JGScIoM7vrgYEspv95/
         IVjw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705489595; x=1706094395;
        h=content-transfer-encoding:mime-version:message-id:date:subject:cc
         :to:from:x-gm-message-state:from:to:cc:subject:date:message-id
         :reply-to;
        bh=lp2/sjObl8jdBo6LiHF2HIUI463phOr/yBZy0H6KbQU=;
        b=JsHH9gJINxQLxq2N2viuu9pdLPpSV7U/0ZaGFG2Xiobtu7QzMcPjUszusZp828bPC6
         0pUYejWk98XWvUcoVcERst01GssePBp5t5EVIW1s73lfFlufHom7dkS5jZWhWaYV9CVh
         7dsjEd9RI6pZu0rXWoLDerltAmzCc2fww/lrjEloT+cDjsH/eUlQGX1C+3aFbUsYIN+P
         4RHT5+Ts77rr8OX7mP3bWw+iy+BxUr9WI9kuw3HdXfFrMQDnE+Ux76EA0SHSDg2+SoLw
         PZR+tKQySBVM+wOQfLwWuuTUjeQLZfVE7qEwuTD5/s7TF9YyJHUIDAyGY+shtyELkjAR
         RjTg==
X-Gm-Message-State: AOJu0YzuajwQBJGsG44P4gmZQT/az1ZLid/Xa19gsALHA/Pz9/PCxVUL
	HmAtQDrwHP9MzP5ayxEHL+se+K+f/eewVoGiRRjV7YT2jsA=
X-Google-Smtp-Source: AGHT+IF7bbeHyTj1AkrLXf1k1/Dbkmi0koRF7ZZ14NYQx1xnX3DJYyeyn0JbQ+C7U0c2F1RWi4Otng==
X-Received: by 2002:a05:6e02:1a4d:b0:35f:eaab:ab1 with SMTP id u13-20020a056e021a4d00b0035feaab0ab1mr11780404ilv.15.1705489594779;
        Wed, 17 Jan 2024 03:06:34 -0800 (PST)
From: Jens Wiklander <jens.wiklander@linaro.org>
To: xen-devel@lists.xenproject.org
Cc: patches@linaro.org,
	Jens Wiklander <jens.wiklander@linaro.org>,
	Volodymyr Babchuk <volodymyr_babchuk@epam.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Julien Grall <julien@xen.org>,
	Bertrand Marquis <bertrand.marquis@arm.com>,
	Michal Orzel <michal.orzel@amd.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>
Subject: [XEN PATCH v3] xen/arm: ffa: reclaim shared memory on guest destroy
Date: Wed, 17 Jan 2024 12:06:18 +0100
Message-Id: <20240117110618.2183977-1-jens.wiklander@linaro.org>
X-Mailer: git-send-email 2.34.1
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

When an FF-A enabled guest is destroyed it may leave behind memory
shared with SPs. This memory must be reclaimed before it's reused or an
SP may make changes to memory used by a new unrelated guest. So when the
domain is teared down add FF-A requests to reclaim all remaining shared
memory.

SPs in the secure world are notified using VM_DESTROYED that a guest has
been destroyed. An SP is supposed to relinquish all shared memory to allow
reclaiming the memory. The relinquish operation may need to be delayed if
the shared memory is for instance part of a DMA operation.

The domain reference counter is increased when the first FF-A shared
memory is registered and the counter is decreased again when the last
shared memory is reclaimed. If FF-A shared memory registrations remain
at the end of of ffa_domain_teardown() a timer is set to try to reclaim
the shared memory every second until the memory is reclaimed.

A few minor style fixes with a removed empty line here and an added new
line there.

Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>
---

v3:
- Mentioning in the commit message that there are some style fixes
- Addressing review comments
- Refactor the ffa_domain_teardown() path to let
  ffa_domain_teardown_continue() do most of the work.

v2:
- Update commit message to match the new implementation
- Using a per domain bitfield to keep track of which SPs has been notified
  with VM_DESTROYED
- Holding a domain reference counter to keep the domain as a zombie domain
  while there still is shared memory registrations remaining to be reclaimed
- Using a timer to retry reclaiming remaining shared memory registrations
---
 xen/arch/arm/tee/ffa.c | 253 +++++++++++++++++++++++++++++++++--------
 1 file changed, 204 insertions(+), 49 deletions(-)

diff --git a/xen/arch/arm/tee/ffa.c b/xen/arch/arm/tee/ffa.c
index 0793c1c7585d..80ebbf4f01c6 100644
--- a/xen/arch/arm/tee/ffa.c
+++ b/xen/arch/arm/tee/ffa.c
@@ -54,6 +54,7 @@
 #include <xen/mm.h>
 #include <xen/sched.h>
 #include <xen/sizes.h>
+#include <xen/timer.h>
 #include <xen/types.h>
 
 #include <asm/event.h>
@@ -144,6 +145,12 @@
  */
 #define FFA_MAX_SHM_COUNT               32
 
+/*
+ * The time we wait until trying to tear down a domain again if it was
+ * blocked initially.
+ */
+#define FFA_CTX_TEARDOWN_DELAY          SECONDS(1)
+
 /* FF-A-1.1-REL0 section 10.9.2 Memory region handle, page 167 */
 #define FFA_HANDLE_HYP_FLAG             BIT(63, ULL)
 #define FFA_HANDLE_INVALID              0xffffffffffffffffULL
@@ -384,11 +391,6 @@ struct ffa_ctx {
     unsigned int page_count;
     /* FF-A version used by the guest */
     uint32_t guest_vers;
-    /*
-     * Number of SPs that we have sent a VM created signal to, used in
-     * ffa_domain_teardown() to know which SPs need to be signalled.
-     */
-    uint16_t create_signal_count;
     bool rx_is_free;
     /* Used shared memory objects, struct ffa_shm_mem */
     struct list_head shm_list;
@@ -402,6 +404,15 @@ struct ffa_ctx {
     spinlock_t tx_lock;
     spinlock_t rx_lock;
     spinlock_t lock;
+    /* Used if domain can't be torn down immediately */
+    struct domain *teardown_d;
+    struct list_head teardown_list;
+    s_time_t teardown_expire;
+    /*
+     * Used for ffa_domain_teardown() to keep track of which SPs should be
+     * notified that this guest is being destroyed.
+     */
+    unsigned long vm_destroy_bitmap[];
 };
 
 struct ffa_shm_mem {
@@ -436,6 +447,12 @@ static void *ffa_tx __read_mostly;
 static DEFINE_SPINLOCK(ffa_rx_buffer_lock);
 static DEFINE_SPINLOCK(ffa_tx_buffer_lock);
 
+
+/* Used to track domains that could not be torn down immediately. */
+static struct timer ffa_teardown_timer;
+static struct list_head ffa_teardown_head;
+static DEFINE_SPINLOCK(ffa_teardown_lock);
+
 static bool ffa_get_version(uint32_t *vers)
 {
     const struct arm_smccc_1_2_regs arg = {
@@ -853,7 +870,6 @@ static int32_t handle_partition_info_get(uint32_t w1, uint32_t w2, uint32_t w3,
             goto out_rx_release;
         }
 
-
         memcpy(ctx->rx, ffa_rx, sz);
     }
     ctx->rx_is_free = false;
@@ -992,53 +1008,75 @@ static void put_shm_pages(struct ffa_shm_mem *shm)
     }
 }
 
-static bool inc_ctx_shm_count(struct ffa_ctx *ctx)
+static bool inc_ctx_shm_count(struct domain *d, struct ffa_ctx *ctx)
 {
     bool ret = true;
 
     spin_lock(&ctx->lock);
+
+    /*
+     * If this is the first shm added, increase the domain reference
+     * counter as we need to keep domain around a bit longer to reclaim the
+     * shared memory in the teardown path.
+     */
+    if ( !ctx->shm_count )
+        get_knownalive_domain(d);
+
     if (ctx->shm_count >= FFA_MAX_SHM_COUNT)
         ret = false;
     else
         ctx->shm_count++;
+
     spin_unlock(&ctx->lock);
 
     return ret;
 }
 
-static void dec_ctx_shm_count(struct ffa_ctx *ctx)
+static void dec_ctx_shm_count(struct domain *d, struct ffa_ctx *ctx)
 {
     spin_lock(&ctx->lock);
+
     ASSERT(ctx->shm_count > 0);
     ctx->shm_count--;
+
+    /*
+     * If this was the last shm removed, let go of the domain reference we
+     * took in inc_ctx_shm_count() above.
+     */
+    if ( !ctx->shm_count )
+        put_domain(d);
+
     spin_unlock(&ctx->lock);
 }
 
-static struct ffa_shm_mem *alloc_ffa_shm_mem(struct ffa_ctx *ctx,
+static struct ffa_shm_mem *alloc_ffa_shm_mem(struct domain *d,
                                              unsigned int page_count)
 {
+    struct ffa_ctx *ctx = d->arch.tee;
     struct ffa_shm_mem *shm;
 
     if ( page_count >= FFA_MAX_SHM_PAGE_COUNT )
         return NULL;
-    if ( !inc_ctx_shm_count(ctx) )
+    if ( !inc_ctx_shm_count(d, ctx) )
         return NULL;
 
     shm = xzalloc_flex_struct(struct ffa_shm_mem, pages, page_count);
     if ( shm )
         shm->page_count = page_count;
     else
-        dec_ctx_shm_count(ctx);
+        dec_ctx_shm_count(d, ctx);
 
     return shm;
 }
 
-static void free_ffa_shm_mem(struct ffa_ctx *ctx, struct ffa_shm_mem *shm)
+static void free_ffa_shm_mem(struct domain *d, struct ffa_shm_mem *shm)
 {
+    struct ffa_ctx *ctx = d->arch.tee;
+
     if ( !shm )
         return;
 
-    dec_ctx_shm_count(ctx);
+    dec_ctx_shm_count(d, ctx);
     put_shm_pages(shm);
     xfree(shm);
 }
@@ -1306,7 +1344,7 @@ static void handle_mem_share(struct cpu_user_regs *regs)
         goto out_unlock;
     }
 
-    shm = alloc_ffa_shm_mem(ctx, page_count);
+    shm = alloc_ffa_shm_mem(d, page_count);
     if ( !shm )
     {
         ret = FFA_RET_NO_MEMORY;
@@ -1350,7 +1388,7 @@ static void handle_mem_share(struct cpu_user_regs *regs)
 
 out:
     if ( ret )
-        free_ffa_shm_mem(ctx, shm);
+        free_ffa_shm_mem(d, shm);
 out_unlock:
     spin_unlock(&ctx->tx_lock);
 
@@ -1401,7 +1439,7 @@ static int handle_mem_reclaim(uint64_t handle, uint32_t flags)
     }
     else
     {
-        free_ffa_shm_mem(ctx, shm);
+        free_ffa_shm_mem(d, shm);
     }
 
     return ret;
@@ -1486,6 +1524,41 @@ static bool ffa_handle_call(struct cpu_user_regs *regs)
     }
 }
 
+static bool is_in_subscr_list(const uint16_t *subscr, uint16_t start,
+                              uint16_t end, uint16_t sp_id)
+{
+    unsigned int n;
+
+    for ( n = start; n < end; n++ )
+    {
+        if ( subscr[n] == sp_id )
+            return true;
+    }
+
+    return false;
+}
+
+static void vm_destroy_bitmap_init(struct ffa_ctx *ctx,
+                                   unsigned int create_signal_count)
+{
+    unsigned int n;
+
+    for ( n = 0; n < subscr_vm_destroyed_count; n++ )
+    {
+        /*
+         * Skip SPs subscribed to the VM created event that never was
+         * notified of the VM creation due to an error during
+         * ffa_domain_init().
+         */
+        if ( is_in_subscr_list(subscr_vm_created, create_signal_count,
+                               subscr_vm_created_count,
+                               subscr_vm_destroyed[n]) )
+            continue;
+
+        set_bit(n, ctx->vm_destroy_bitmap);
+    }
+}
+
 static int ffa_domain_init(struct domain *d)
 {
     struct ffa_ctx *ctx;
@@ -1501,11 +1574,14 @@ static int ffa_domain_init(struct domain *d)
     if ( d->domain_id >= UINT16_MAX)
         return -ERANGE;
 
-    ctx = xzalloc(struct ffa_ctx);
+    ctx = xzalloc_flex_struct(struct ffa_ctx, vm_destroy_bitmap,
+                              BITS_TO_LONGS(subscr_vm_destroyed_count));
     if ( !ctx )
         return -ENOMEM;
 
     d->arch.tee = ctx;
+    ctx->teardown_d = d;
+    INIT_LIST_HEAD(&ctx->shm_list);
 
     for ( n = 0; n < subscr_vm_created_count; n++ )
     {
@@ -1515,65 +1591,141 @@ static int ffa_domain_init(struct domain *d)
         {
             printk(XENLOG_ERR "ffa: Failed to report creation of vm_id %u to  %u: res %d\n",
                    get_vm_id(d), subscr_vm_created[n], res);
-            ctx->create_signal_count = n;
-            return -EIO;
+            break;
         }
     }
-    ctx->create_signal_count = subscr_vm_created_count;
-
-    INIT_LIST_HEAD(&ctx->shm_list);
+    vm_destroy_bitmap_init(ctx, n);
+    if ( n != subscr_vm_created_count )
+        return -EIO;
 
     return 0;
 }
 
-static bool is_in_subscr_list(const uint16_t *subscr, uint16_t start,
-                              uint16_t end, uint16_t sp_id)
+static void send_vm_destroyed(struct domain *d)
 {
+    struct ffa_ctx *ctx = d->arch.tee;
     unsigned int n;
+    int32_t res;
 
-    for ( n = start; n < end; n++ )
+    for ( n = 0; n < subscr_vm_destroyed_count; n++ )
     {
-        if ( subscr[n] == sp_id )
-            return true;
-    }
+        if ( !test_bit(n, ctx->vm_destroy_bitmap) )
+            continue;
 
-    return false;
+        res = ffa_direct_req_send_vm(subscr_vm_destroyed[n], get_vm_id(d),
+                                     FFA_MSG_SEND_VM_DESTROYED);
+
+        if ( res )
+        {
+            printk(XENLOG_ERR "%pd: ffa: Failed to report destruction of vm_id %u to %u: res %d\n",
+                   d, get_vm_id(d), subscr_vm_destroyed[n], res);
+        }
+        else
+        {
+            clear_bit(n, ctx->vm_destroy_bitmap);
+        }
+    }
 }
 
-/* This function is supposed to undo what ffa_domain_init() has done */
-static int ffa_domain_teardown(struct domain *d)
+static void reclaim_shms(struct domain *d)
 {
     struct ffa_ctx *ctx = d->arch.tee;
-    unsigned int n;
+    struct ffa_shm_mem *shm, *tmp;
     int32_t res;
 
-    if ( !ctx )
-        return 0;
+    list_for_each_entry_safe(shm, tmp, &ctx->shm_list, list)
+    {
+        register_t handle_hi;
+        register_t handle_lo;
 
-    for ( n = 0; n < subscr_vm_destroyed_count; n++ )
+        uint64_to_regpair(&handle_hi, &handle_lo, shm->handle);
+        res = ffa_mem_reclaim(handle_lo, handle_hi, 0);
+        if ( res )
+        {
+            printk(XENLOG_G_INFO "%pd: ffa: Failed to reclaim handle %#lx : %d\n",
+                   d, shm->handle, res);
+        }
+        else
+        {
+            printk(XENLOG_G_DEBUG "%pd: ffa: Reclaimed handle %#lx\n",
+                   d, shm->handle);
+            list_del(&shm->list);
+            free_ffa_shm_mem(d, shm);
+        }
+    }
+}
+
+static void ffa_domain_teardown_continue(struct ffa_ctx *ctx, bool first_time)
+{
+    struct ffa_ctx *next_ctx = NULL;
+
+    send_vm_destroyed(ctx->teardown_d);
+    reclaim_shms(ctx->teardown_d);
+
+    if ( ctx->shm_count )
+    {
+        printk(XENLOG_G_INFO "%pd: ffa: Remaining unclaimed handles, retrying\n", ctx->teardown_d);
+
+        ctx->teardown_expire = NOW() + FFA_CTX_TEARDOWN_DELAY;
+
+        spin_lock(&ffa_teardown_lock);
+        list_add_tail(&ctx->teardown_list, &ffa_teardown_head);
+        /* Need to set a new timer for the next ctx in line */
+        next_ctx = list_first_entry(&ffa_teardown_head, struct ffa_ctx,
+                                    teardown_list);
+        spin_unlock(&ffa_teardown_lock);
+    }
+    else
     {
         /*
-         * Skip SPs subscribed to the VM created event that never was
-         * notified of the VM creation due to an error during
-         * ffa_domain_init().
+         * domain_destroy() might have been called (via put_domain() in
+         * reclaim_shms()), so we can't touch the domain structure anymore.
          */
-        if ( is_in_subscr_list(subscr_vm_created, ctx->create_signal_count,
-                               subscr_vm_created_count,
-                               subscr_vm_destroyed[n]) )
-            continue;
+        xfree(ctx);
 
-        res = ffa_direct_req_send_vm(subscr_vm_destroyed[n], get_vm_id(d),
-                                     FFA_MSG_SEND_VM_DESTROYED);
-
-        if ( res )
-            printk(XENLOG_ERR "ffa: Failed to report destruction of vm_id %u to  %u: res %d\n",
-                   get_vm_id(d), subscr_vm_destroyed[n], res);
+        /* Only check if there has been a change to the teardown queue */
+        if ( !first_time )
+        {
+            spin_lock(&ffa_teardown_lock);
+            next_ctx = list_first_entry_or_null(&ffa_teardown_head,
+                                                struct ffa_ctx, teardown_list);
+            spin_unlock(&ffa_teardown_lock);
+        }
     }
 
+    if ( next_ctx )
+        set_timer(&ffa_teardown_timer, next_ctx->teardown_expire);
+}
+
+static void ffa_teardown_timer_callback(void *arg)
+{
+    struct ffa_ctx *ctx;
+
+    spin_lock(&ffa_teardown_lock);
+    ctx = list_first_entry_or_null(&ffa_teardown_head, struct ffa_ctx,
+                                   teardown_list);
+    if ( ctx )
+        list_del(&ctx->teardown_list);
+    spin_unlock(&ffa_teardown_lock);
+
+    if ( ctx )
+        ffa_domain_teardown_continue(ctx, false /* !first_time */);
+    else
+        printk(XENLOG_G_ERR "%s: teardown list is empty\n", __func__);
+}
+
+/* This function is supposed to undo what ffa_domain_init() has done */
+static int ffa_domain_teardown(struct domain *d)
+{
+    struct ffa_ctx *ctx = d->arch.tee;
+
+    if ( !ctx )
+        return 0;
+
     if ( ctx->rx )
         rxtx_unmap(ctx);
 
-    XFREE(d->arch.tee);
+    ffa_domain_teardown_continue(ctx, true /* first_time */);
 
     return 0;
 }
@@ -1739,6 +1891,9 @@ static bool ffa_probe(void)
     if ( !init_sps() )
         goto err_free_ffa_tx;
 
+    INIT_LIST_HEAD(&ffa_teardown_head);
+    init_timer(&ffa_teardown_timer, ffa_teardown_timer_callback, NULL, 0);
+
     return true;
 
 err_free_ffa_tx:
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Wed Jan 17 11:13:53 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 17 Jan 2024 11:13:53 +0000
Received: from list by lists.xenproject.org with outflank-mailman.668395.1040569 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQ3ri-0001Pk-2R; Wed, 17 Jan 2024 11:13:50 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 668395.1040569; Wed, 17 Jan 2024 11:13:50 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQ3rh-0001P9-Ul; Wed, 17 Jan 2024 11:13:49 +0000
Received: by outflank-mailman (input) for mailman id 668395;
 Wed, 17 Jan 2024 11:13:48 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=sm03=I3=gmail.com=oleksii.kurochko@srs-se1.protection.inumbo.net>)
 id 1rQ3rg-0001NP-IQ
 for xen-devel@lists.xenproject.org; Wed, 17 Jan 2024 11:13:48 +0000
Received: from mail-ed1-x52c.google.com (mail-ed1-x52c.google.com
 [2a00:1450:4864:20::52c])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 7b39b22a-b529-11ee-9b0f-b553b5be7939;
 Wed, 17 Jan 2024 12:13:46 +0100 (CET)
Received: by mail-ed1-x52c.google.com with SMTP id
 4fb4d7f45d1cf-555e07761acso13200188a12.0
 for <xen-devel@lists.xenproject.org>; Wed, 17 Jan 2024 03:13:46 -0800 (PST)
Received: from [192.168.206.239] ([94.75.70.14])
 by smtp.gmail.com with ESMTPSA id
 cx6-20020a170907168600b00a2d5ef80043sm4876717ejd.129.2024.01.17.03.13.44
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 17 Jan 2024 03:13:45 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 7b39b22a-b529-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1705490026; x=1706094826; darn=lists.xenproject.org;
        h=mime-version:user-agent:content-transfer-encoding:references
         :in-reply-to:date:cc:to:from:subject:message-id:from:to:cc:subject
         :date:message-id:reply-to;
        bh=6Amlk1eEeQb7XbTJL9ZRY4OoMVIX3ScciVYH4NF5UAE=;
        b=Xa8o1dxusPBdS0e4o6iknX1Nwx3uHmhZVskZQbZB98MFgOIzTJDObBNUwmH0E70Yoo
         j3aQ5e2erJmcIZx+ZbdY0Bhusb+4sNIilKjTV/XFdymjPaNKlLWbrVbZLMm2sWrkDj/5
         liqxQi47AAHzciArIDhYX1dWFAUMx1MedZGfATx1y36Q0qJ5vxWwzl/Wz+isfRoOrlsc
         +npjeBurRFLLhc2VE2GFoRGUU0KbB6EEAk2rR7sDGlgCHevtBaXeXWrqw2DUrLTf9k/Q
         o5DSFayGoqKVnhD2KTBlaxclPprnr9mp0ejgSmSKOCEbOmhLPpxV/K3RqgmhhhNHQm4y
         XrJg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705490026; x=1706094826;
        h=mime-version:user-agent:content-transfer-encoding:references
         :in-reply-to:date:cc:to:from:subject:message-id:x-gm-message-state
         :from:to:cc:subject:date:message-id:reply-to;
        bh=6Amlk1eEeQb7XbTJL9ZRY4OoMVIX3ScciVYH4NF5UAE=;
        b=YkP5TbwJC+Z7yyhO/ETqCwa8C0tB9msHV+cS73+fUhgzHimiVvDam/mtK5Y9IND8JW
         DE/bP1KeR5klVq8KRwS373BcLMr9OsWxD/HWYRyf3CyKP3Cxd4bzKiogY6mFOwSrjzFi
         dltLmzrxkbRMRYnKfIlnvG0JLuBcB5dn7qC2/xwFgThntZN+nNfcEPuwEQof3XiLEUcZ
         ndYGd2hBN4ho1ieIztBqbyObDxZL2b4DBnPvK/VD3jd4lS8P9+T4svuYVbmJ9Ikj83Tw
         iY3egbdpReIX8OCMHLc+kUGVR2BpB9ncQiLOH/TvI8+w8xsxv3YtpYFQGVPq5uLzBCPp
         smDA==
X-Gm-Message-State: AOJu0YzOaB5kTkSUAOK9hJk/0HB+79LdG9yZPHC+vVav0PoyaF9CLA6e
	ToBkJpPlNRqOd5fOPhVMiIA=
X-Google-Smtp-Source: AGHT+IFuGqcyI66FEfotU1fFis5H3unJ4KlbG52F08yDbsODtXsl+n4yox9qwR6z5CAamWpHAeuEAQ==
X-Received: by 2002:a17:906:f18f:b0:a28:b79a:37a0 with SMTP id gs15-20020a170906f18f00b00a28b79a37a0mr3086970ejb.222.1705490025464;
        Wed, 17 Jan 2024 03:13:45 -0800 (PST)
Message-ID: <863b09f03d37e96d737ab6bda4cc8923f75550fd.camel@gmail.com>
Subject: Re: [PATCH v3 10/34] xen/riscv: introduce bitops.h
From: Oleksii <oleksii.kurochko@gmail.com>
To: Jan Beulich <jbeulich@suse.com>
Cc: Alistair Francis <alistair.francis@wdc.com>, Bob Eshleman
 <bobbyeshleman@gmail.com>, Connor Davis <connojdavis@gmail.com>, Andrew
 Cooper <andrew.cooper3@citrix.com>, George Dunlap
 <george.dunlap@citrix.com>,  Julien Grall <julien@xen.org>, Stefano
 Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>, 
 xen-devel@lists.xenproject.org
Date: Wed, 17 Jan 2024 13:13:44 +0200
In-Reply-To: <88df7ccd-8d14-4b00-900d-04cc87d9f230@suse.com>
References: <cover.1703255175.git.oleksii.kurochko@gmail.com>
	 <841d59c3950970f4937da200cf8f04aa39132e14.1703255175.git.oleksii.kurochko@gmail.com>
	 <23f1212a-66a8-47b0-904b-08b2ab54c72b@suse.com>
	 <17d9fe474e244a15aa5955e630d553a62b0080fd.camel@gmail.com>
	 <88df7ccd-8d14-4b00-900d-04cc87d9f230@suse.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
User-Agent: Evolution 3.50.2 (3.50.2-1.fc39) 
MIME-Version: 1.0

On Tue, 2024-01-16 at 14:24 +0100, Jan Beulich wrote:
> On 16.01.2024 14:06, Oleksii wrote:
> > On Mon, 2024-01-15 at 17:44 +0100, Jan Beulich wrote:
> > > On 22.12.2023 16:12, Oleksii Kurochko wrote:
> > > > +#define test_and_set_bit=C2=A0=C2=A0 __test_and_set_bit
> > > > +#define test_and_clear_bit __test_and_clear_bit
> > >=20
> > > I realize test-and-change have no present users, despite being
> > > made
> > > available by Arm and x86, but I think they would better be
> > > provided
> > > right away, rather than someone introducing a use then needing to
> > > fiddle with RISC-V (and apparently also PPC) code.
> > Sure, it makes sense. I'll add test-and-change too.
> >=20
> > > I'm also puzzled by this aliasing: Aren't there cheaper non-
> > > atomic
> > > insn forms that could be used for the double-underscore-prefixed
> > > variants?
> > It will be cheaper, but I assume that this API should be safe in
> > the
> > case of SMP where different CPUs can access the same variable or
> > similar cases with simultaneous access to the variable.
>=20
> Of course, that's what test_and_...() are for. __test_and_...() are
> for cases where there's no concurrency, when hence the cheaper forms
> can be used. Thus my asking about the aliasing done above.
Then it makes sense to update __test_and...() to use non-atomic insn.
I'll do that in the next patch version.

Thanks for explanation.

>=20
> > > > +#if BITS_PER_LONG =3D=3D 64
> > > > +=C2=A0=C2=A0=C2=A0 if ((word & 0xffffffff) =3D=3D 0) {
> > > > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 num +=3D 32;
> > > > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 word >>=3D 32;
> > > > +=C2=A0=C2=A0=C2=A0 }
> > >=20
> > > You're ending up with neither Xen nor Linux style this way. May I
> > > suggest to settle on either?
> >=20
> > Will it fine to rework header from Linux to Xen style? Does it make
> > sense?
> > I think this file can be reworked to Xen style as I don't expect
> > that
> > it will be changed since it will be merged.
>=20
> You may keep Linux style or fully switch to Xen style - which one is
> largely up to you. All I'm asking is to avoid introducing further
> mixed-style source files.
I'll be consistent in code style.

>=20
> > > > --- /dev/null
> > > > +++ b/xen/include/asm-generic/bitops/bitops-bits.h
> > > > @@ -0,0 +1,10 @@
> > > > +/* SPDX-License-Identifier: GPL-2.0 */
> > > > +#ifndef _ASM_GENERIC_BITOPS_BITS_H_
> > > > +#define _ASM_GENERIC_BITOPS_BITS_H_
> > > > +
> > > > +#define BITOP_BITS_PER_WORD=C2=A0=C2=A0=C2=A0=C2=A0 32
> > > > +#define BITOP_MASK(nr)=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0 (1UL << ((nr) %
> > > > BITOP_BITS_PER_WORD))
> > >=20
> > > Why 1UL and not just 1U, when bits per word is 32?
> > There is no specific reason, should 1U. ( I originally used
> > BITOPS_BITS_PER_LONG ) and with introduction of asm-generic bitops
> > decided to follow what other archs provide.
> >=20
> > Regarding to the second part of the question, I don't understand it
> > fully. Considering BITOP_BIT_PER_WORD definition for other archs (
> > ARM
> > and PPC ) it is expected that word is 32 bits.
>=20
> The 2nd part was explaining why I'm asking. It wasn't another
> question.
>=20
> > > > --- /dev/null
> > > > +++ b/xen/include/asm-generic/bitops/test-bit.h
> > > > @@ -0,0 +1,16 @@
> > > > +/* SPDX-License-Identifier: GPL-2.0 */
> > > > +#ifndef _ASM_GENERIC_BITOPS_TESTBIT_H_
> > > > +#define _ASM_GENERIC_BITOPS_TESTBIT_H_
> > > > +
> > > > +/**
> > > > + * test_bit - Determine whether a bit is set
> > > > + * @nr: bit number to test
> > > > + * @addr: Address to start counting from
> > > > + */
> > > > +static inline int test_bit(int nr, const volatile void *addr)
> > > > +{
> > > > +=C2=A0=C2=A0=C2=A0 const volatile unsigned int *p =3D addr;
> > >=20
> > > With BITOP_BITS_PER_WORD I think you really mean uint32_t here.
> > Isn't it the same: 'unsigned int' and 'uint32_t'?
>=20
> No, or else there wouldn't have been a need to introduce uint<N>_t
> (and
> others) in C99. It just so happens that right now all architectures
> Xen
> can be built for have sizeof(int) =3D=3D 4 and CHAR_BITS =3D=3D 8. In an
> arch-
> specific header I would see this as less of an issue, but in a
> generic
> header we'd better avoid encoding wrong assumptions. The one
> assumption
> we generally make is that sizeof(int) >=3D 4 and CHAR_BITS >=3D 8 (albeit
> I
> bet really in various places we assume CHAR_BITS =3D=3D 8).
In this case we have to switch to uint<N>_t.
Thanks for the explanation. I'll update this part of code in the next
patch version.

>=20
> > > Also you want to make sure asm-generic/bitops/bitops-bits.h is
> > > really in use here, or else an arch overriding / not using that
> > > header may end up screwed.
> > I am not really understand what do you mean. Could you please
> > explain a
> > little bit more.
>=20
> Whichever type you use here, it needs to be in sync with
> BITOP_BITS_PER_WORD. Hence you want to include the _local_ bitops-
> bits.h
> here, such that in case of an inconsistent override by an arch the
> compiler would complain about the two differring #define-s. (IOW an
> arch overriding BITOP_BITS_PER_WORD cannot re-use this header as-is.)
>=20
> The same may, btw, be true for others of the new headers you add -
> the
> same #include would therefore be needed there as well.
Now it clear to me.


It seems like BITOP_BITS_PER_WORD, BITOP_MASK, BITOP_WORD, and
BITS_PER_BYTE are defined in {arm, ppc, riscv}/include/asm/bitops.h.
I expected that any architecture planning to use asm-
generic/bitops/bitops-bits.h would include it at the beginning of
<arch>/include/asm/bitops.h, similar to what is done for RISC-V:
   #ifndef _ASM_RISCV_BITOPS_H
   #define _ASM_RISCV_BITOPS_H
  =20
   #include <asm/system.h>
  =20
   #include <asm-generic/bitops/bitops-bits.h>
   ...

But in this case, to allow architecture overrides macros, it is
necessary to update asm-generic/bitops/bitops-bits.h:
    #ifndef BITOP_BITS_PER_WORD
    #define BITOP_BITS_PER_WORD     32
    #endif
   ...
Therefore,  if an architecture needs to override something, it will add
#define ... before #include <asm-generic/bitops/bitops-bits.h>.

Does it make sense?

~ Oleksii




From xen-devel-bounces@lists.xenproject.org Wed Jan 17 11:13:53 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 17 Jan 2024 11:13:53 +0000
Received: from list by lists.xenproject.org with outflank-mailman.668394.1040564 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQ3rh-0001Ni-R5; Wed, 17 Jan 2024 11:13:49 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 668394.1040564; Wed, 17 Jan 2024 11:13:49 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQ3rh-0001Nb-OO; Wed, 17 Jan 2024 11:13:49 +0000
Received: by outflank-mailman (input) for mailman id 668394;
 Wed, 17 Jan 2024 11:13:47 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=nKNn=I3=cloud.com=roger.pau@srs-se1.protection.inumbo.net>)
 id 1rQ3rf-0001NP-U8
 for xen-devel@lists.xenproject.org; Wed, 17 Jan 2024 11:13:47 +0000
Received: from mail-wm1-x32d.google.com (mail-wm1-x32d.google.com
 [2a00:1450:4864:20::32d])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 7aee2cc7-b529-11ee-9b0f-b553b5be7939;
 Wed, 17 Jan 2024 12:13:45 +0100 (CET)
Received: by mail-wm1-x32d.google.com with SMTP id
 5b1f17b1804b1-40e87d07c07so10316305e9.1
 for <xen-devel@lists.xenproject.org>; Wed, 17 Jan 2024 03:13:45 -0800 (PST)
Received: from localhost ([213.195.127.68]) by smtp.gmail.com with ESMTPSA id
 q14-20020a05600c46ce00b0040e7306f655sm11852803wmo.22.2024.01.17.03.13.44
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 17 Jan 2024 03:13:44 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 7aee2cc7-b529-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1705490025; x=1706094825; darn=lists.xenproject.org;
        h=in-reply-to:content-transfer-encoding:content-disposition
         :mime-version:references:message-id:subject:cc:to:from:date:from:to
         :cc:subject:date:message-id:reply-to;
        bh=1zCmrZV7W9u4ZP4ToBoC/feR3qJ+1tDpDWxA05TrOMU=;
        b=Wt05RoRYUeFxldeXyHCAs9F2pmTme88e/R6n8Lq90lrjx5fLYhCfgxBuvSi0gbuZXc
         ek1MUHleGPNPrsAqPoTPHw88hThNNGS9YQ/Iy5WUWUBmfSoj9LdH4Hc+SSuAMCKw6TNe
         xadCDgcZwXUXOH7qRNG9Nb5/gsOSs1iev3EWQ=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705490025; x=1706094825;
        h=in-reply-to:content-transfer-encoding:content-disposition
         :mime-version:references:message-id:subject:cc:to:from:date
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=1zCmrZV7W9u4ZP4ToBoC/feR3qJ+1tDpDWxA05TrOMU=;
        b=kL0SSxIpCZ33RVKiYOx+CoIsOioBK1PzkZDFH13/6kNZBmI+VSHCdMBri8awhig8Q4
         0DlRRdg3Jbo24Q5JHbyEGqFk1DMH9Ex7gm3/Z6tmp+MfTKwqxNFXxYBM1E5R66J4VZjM
         m20Xe4kmxxRhANl/PyyTvDiNUNKN3e43M1eXRXD8SGm+NDCWKsE+AEzPygFhHU/gwso/
         QZyODGU9aYdaJJejo9vxKHJspky7LngDxhu8trfEhT4w0mCneKzJv34h8DjiLWknHvYs
         gLft8e2DcEkcSXi2uaiuhJJI6Q2Slb76lKQLEuCL0X0Y9nGySCPf0i+1Wgxjkybkb+dq
         Ysnw==
X-Gm-Message-State: AOJu0YzGM/+4aPQ8Z0H0CXESHjz2+vV5N3gRgFFiU9AZ3lDT/ME5AB4K
	o4+sJyBizA5FjU/PnI/57sJ6wTJRgPDFgg==
X-Google-Smtp-Source: AGHT+IEkXJPzDt5855uijbUXJsXQywEGzRzCN4nxMHei/ZinZgWjvSAPSEZsTjWF36W6VlbftB8unA==
X-Received: by 2002:a05:600c:4752:b0:40d:39bb:b8eb with SMTP id w18-20020a05600c475200b0040d39bbb8ebmr5407966wmo.118.1705490025139;
        Wed, 17 Jan 2024 03:13:45 -0800 (PST)
Date: Wed, 17 Jan 2024 12:13:44 +0100
From: Roger Pau =?utf-8?B?TW9ubsOp?= <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>
Subject: Re: [PATCH] x86/PVH: Dom0 "broken ELF" reporting adjustments
Message-ID: <Zae2aJu5PqX9ruPq@macbook>
References: <fda7586f-a1d1-4500-a6c4-d0e010223ee2@suse.com>
 <ZaerAAt1EnFAZpo3@macbook>
 <de31c22f-6cb8-40dd-bb00-1e523fc3e9be@suse.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <de31c22f-6cb8-40dd-bb00-1e523fc3e9be@suse.com>

On Wed, Jan 17, 2024 at 11:42:53AM +0100, Jan Beulich wrote:
> On 17.01.2024 11:25, Roger Pau Monné wrote:
> > On Wed, Jan 17, 2024 at 09:53:26AM +0100, Jan Beulich wrote:
> >> elf_load_binary() isn't the primary source of brokenness being
> >> indicated. Therefore make the respective log message there conditional
> >> (much like PV has it), and add another instance when elf_xen_parse()
> >> failed (again matching behavior in the PV case).
> >>
> >> Signed-off-by: Jan Beulich <jbeulich@suse.com>
> >>
> >> --- a/xen/arch/x86/hvm/dom0_build.c
> >> +++ b/xen/arch/x86/hvm/dom0_build.c
> >> @@ -570,6 +570,8 @@ static int __init pvh_load_kernel(struct
> >>      if ( (rc = elf_xen_parse(&elf, &parms, true)) != 0 )
> >>      {
> >>          printk("Unable to parse kernel for ELFNOTES\n");
> >> +        if ( elf_check_broken(&elf) )
> >> +            printk("Xen dom0 kernel broken ELF: %s\n", elf_check_broken(&elf));
> > 
> > I would rather use "%pd: kernel broken ELF: %s\n", in case this gets
> > used for loading more than dom0 in the dom0less case.  The 'Xen'
> > prefix is IMO useless here (I know it was here before).
> 
> Can do. But if I do, I'd like to bring PV in sync with this as well,
> right in the same patch. I hope you don't mind that.

Sure, please go ahead.

Thanks, Roger.


From xen-devel-bounces@lists.xenproject.org Wed Jan 17 11:17:49 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 17 Jan 2024 11:17:49 +0000
Received: from list by lists.xenproject.org with outflank-mailman.668402.1040584 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQ3vX-0002rv-JY; Wed, 17 Jan 2024 11:17:47 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 668402.1040584; Wed, 17 Jan 2024 11:17:47 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQ3vX-0002ro-Eu; Wed, 17 Jan 2024 11:17:47 +0000
Received: by outflank-mailman (input) for mailman id 668402;
 Wed, 17 Jan 2024 11:17:47 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=yGoF=I3=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rQ3vX-0002qU-02
 for xen-devel@lists.xenproject.org; Wed, 17 Jan 2024 11:17:47 +0000
Received: from mail-lj1-x22d.google.com (mail-lj1-x22d.google.com
 [2a00:1450:4864:20::22d])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 0a10f262-b52a-11ee-98f2-6d05b1d4d9a1;
 Wed, 17 Jan 2024 12:17:45 +0100 (CET)
Received: by mail-lj1-x22d.google.com with SMTP id
 38308e7fff4ca-2cca8eb0509so135498461fa.3
 for <xen-devel@lists.xenproject.org>; Wed, 17 Jan 2024 03:17:45 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 a23-20020a6b6c17000000b007bee386f29csm3193159ioh.20.2024.01.17.03.17.43
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 17 Jan 2024 03:17:44 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 0a10f262-b52a-11ee-98f2-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1705490265; x=1706095065; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=fj3RPdaeIbc6PRv+5XDFMUhH59x+TJHSW35AJ64jnMA=;
        b=bQS8n1ZCHb/V1cwo/5zHfbWsDVpftZ4WvJRXxr/PeEDZ76vYAgnfRl1SgDSJGNS6mO
         sfISHmNdGLC4iXzsl+dFAWR/QDbRGoNzlaOXQQppF0xyoE5iZ/F/G5UWoIHYhedvzbid
         B+1Iad5tNAvZKsfHSYOElQ9pbJBAC4lhS667TeQYpiHn5nBoyLP74cxdFBpt8lWxHMYQ
         26ABqA3KtmdlAEr7Qmrr1rW6g9iQ7ZadRGYA5F5bX8azi9s8BabsjiX/bf6FlOOh8kg5
         7RZ8xIR8ugUyBa2AOnlaoLq0AdYrWR4cIggEX1iMZxb7MViJwxxi7AcEIC5dQnYJTSnP
         zGAg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705490265; x=1706095065;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=fj3RPdaeIbc6PRv+5XDFMUhH59x+TJHSW35AJ64jnMA=;
        b=TdO0SBwUbmHu6UkL+e8r/tW3u0Wf3gmsUPRp26ERvlOIV4duFg2R+HJyrKBZUJfANB
         QkiWYSSTfcUPC0p1oWL/hFRQlX7QC7CPWoAqYW7M09mPXk+CqyUziF1m8sCRJnyMQmDl
         DiTuKjqHrf2/F3sJLKDLd2CLC7049A8JarppRxzjuEWQh6C+JlTAiopHeeBQDc8wJ5nw
         9+jBFG9R8I1vVNQAy0eE9vVzhdWVXkscll/5qlRycGkaqomvLuSf7ZzfWJIIR/fjRkIo
         LdbDgpnoF78l4gWrWPlBTy4N6smjgY5kEy5rxc33sv6ki3XSa2+a/iRZ1QnfYGPzQS8D
         /mSQ==
X-Gm-Message-State: AOJu0YzKK/PNnS7X5htQRcLVGgk66mp5/GSX3DLyEK00DIu4A77yeV3R
	/IirSbQzsO6RimIvv3WuA9chkDB1zNpH
X-Google-Smtp-Source: AGHT+IENQKVFLFP5rJkH5vcoCyEBvkqCDeioCgtJwW1vSxcm4MBX6X6L0YsItG7MpjTGN1FAjWVCmA==
X-Received: by 2002:a2e:9ec4:0:b0:2cd:241c:848d with SMTP id h4-20020a2e9ec4000000b002cd241c848dmr3585767ljk.103.1705490265230;
        Wed, 17 Jan 2024 03:17:45 -0800 (PST)
Message-ID: <2e10b170-5a75-4ae0-8d2f-c6c1ad9951a5@suse.com>
Date: Wed, 17 Jan 2024 12:17:41 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 10/34] xen/riscv: introduce bitops.h
Content-Language: en-US
To: Oleksii <oleksii.kurochko@gmail.com>
Cc: Alistair Francis <alistair.francis@wdc.com>,
 Bob Eshleman <bobbyeshleman@gmail.com>, Connor Davis
 <connojdavis@gmail.com>, Andrew Cooper <andrew.cooper3@citrix.com>,
 George Dunlap <george.dunlap@citrix.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>,
 xen-devel@lists.xenproject.org
References: <cover.1703255175.git.oleksii.kurochko@gmail.com>
 <841d59c3950970f4937da200cf8f04aa39132e14.1703255175.git.oleksii.kurochko@gmail.com>
 <23f1212a-66a8-47b0-904b-08b2ab54c72b@suse.com>
 <17d9fe474e244a15aa5955e630d553a62b0080fd.camel@gmail.com>
 <88df7ccd-8d14-4b00-900d-04cc87d9f230@suse.com>
 <863b09f03d37e96d737ab6bda4cc8923f75550fd.camel@gmail.com>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <863b09f03d37e96d737ab6bda4cc8923f75550fd.camel@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 17.01.2024 12:13, Oleksii wrote:
> On Tue, 2024-01-16 at 14:24 +0100, Jan Beulich wrote:
>> On 16.01.2024 14:06, Oleksii wrote:
>>> On Mon, 2024-01-15 at 17:44 +0100, Jan Beulich wrote:
>>>> On 22.12.2023 16:12, Oleksii Kurochko wrote:
>>>>> --- /dev/null
>>>>> +++ b/xen/include/asm-generic/bitops/test-bit.h
>>>>> @@ -0,0 +1,16 @@
>>>>> +/* SPDX-License-Identifier: GPL-2.0 */
>>>>> +#ifndef _ASM_GENERIC_BITOPS_TESTBIT_H_
>>>>> +#define _ASM_GENERIC_BITOPS_TESTBIT_H_
>>>>> +
>>>>> +/**
>>>>> + * test_bit - Determine whether a bit is set
>>>>> + * @nr: bit number to test
>>>>> + * @addr: Address to start counting from
>>>>> + */
>>>>> +static inline int test_bit(int nr, const volatile void *addr)
>>>>> +{
>>>>> +    const volatile unsigned int *p = addr;
>>>>
>>>> With BITOP_BITS_PER_WORD I think you really mean uint32_t here.
>>> Isn't it the same: 'unsigned int' and 'uint32_t'?
>>
>> No, or else there wouldn't have been a need to introduce uint<N>_t
>> (and
>> others) in C99. It just so happens that right now all architectures
>> Xen
>> can be built for have sizeof(int) == 4 and CHAR_BITS == 8. In an
>> arch-
>> specific header I would see this as less of an issue, but in a
>> generic
>> header we'd better avoid encoding wrong assumptions. The one
>> assumption
>> we generally make is that sizeof(int) >= 4 and CHAR_BITS >= 8 (albeit
>> I
>> bet really in various places we assume CHAR_BITS == 8).
> In this case we have to switch to uint<N>_t.
> Thanks for the explanation. I'll update this part of code in the next
> patch version.
> 
>>
>>>> Also you want to make sure asm-generic/bitops/bitops-bits.h is
>>>> really in use here, or else an arch overriding / not using that
>>>> header may end up screwed.
>>> I am not really understand what do you mean. Could you please
>>> explain a
>>> little bit more.
>>
>> Whichever type you use here, it needs to be in sync with
>> BITOP_BITS_PER_WORD. Hence you want to include the _local_ bitops-
>> bits.h
>> here, such that in case of an inconsistent override by an arch the
>> compiler would complain about the two differring #define-s. (IOW an
>> arch overriding BITOP_BITS_PER_WORD cannot re-use this header as-is.)
>>
>> The same may, btw, be true for others of the new headers you add -
>> the
>> same #include would therefore be needed there as well.
> Now it clear to me.
> 
> 
> It seems like BITOP_BITS_PER_WORD, BITOP_MASK, BITOP_WORD, and
> BITS_PER_BYTE are defined in {arm, ppc, riscv}/include/asm/bitops.h.
> I expected that any architecture planning to use asm-
> generic/bitops/bitops-bits.h would include it at the beginning of
> <arch>/include/asm/bitops.h, similar to what is done for RISC-V:
>    #ifndef _ASM_RISCV_BITOPS_H
>    #define _ASM_RISCV_BITOPS_H
>    
>    #include <asm/system.h>
>    
>    #include <asm-generic/bitops/bitops-bits.h>
>    ...
> 
> But in this case, to allow architecture overrides macros, it is
> necessary to update asm-generic/bitops/bitops-bits.h:
>     #ifndef BITOP_BITS_PER_WORD
>     #define BITOP_BITS_PER_WORD     32
>     #endif
>    ...
> Therefore,  if an architecture needs to override something, it will add
> #define ... before #include <asm-generic/bitops/bitops-bits.h>.
> 
> Does it make sense?

Sure. But then the arch also needs to provide a corresponding typedef
(and bitops-bits.h the fallback one), for use wherever you use any of
those #define-s.

Jan


From xen-devel-bounces@lists.xenproject.org Wed Jan 17 11:24:14 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 17 Jan 2024 11:24:14 +0000
Received: from list by lists.xenproject.org with outflank-mailman.668295.1040604 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQ41j-0006TI-Mc; Wed, 17 Jan 2024 11:24:11 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 668295.1040604; Wed, 17 Jan 2024 11:24:11 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQ41j-0006Qe-FU; Wed, 17 Jan 2024 11:24:11 +0000
Received: by outflank-mailman (input) for mailman id 668295;
 Wed, 17 Jan 2024 09:00:37 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=at/C=I3=kylinos.cn=chentao@srs-se1.protection.inumbo.net>)
 id 1rQ1mn-0003r9-1X
 for xen-devel@lists.xenproject.org; Wed, 17 Jan 2024 09:00:37 +0000
Received: from mailgw.kylinos.cn (mailgw.kylinos.cn [124.126.103.232])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id dd89ad63-b516-11ee-98f2-6d05b1d4d9a1;
 Wed, 17 Jan 2024 10:00:33 +0100 (CET)
Received: from mail.kylinos.cn [(39.156.73.10)] by mailgw
 (envelope-from <chentao@kylinos.cn>) (Generic MTA)
 with ESMTP id 819164830; Wed, 17 Jan 2024 17:00:25 +0800
Received: from mail.kylinos.cn (localhost [127.0.0.1])
 by mail.kylinos.cn (NSMail) with SMTP id D3324E000EB9;
 Wed, 17 Jan 2024 17:00:24 +0800 (CST)
Received: from kernel.. (unknown [172.20.15.234])
 by mail.kylinos.cn (NSMail) with ESMTPA id 67E86E000EB9;
 Wed, 17 Jan 2024 17:00:20 +0800 (CST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: dd89ad63-b516-11ee-98f2-6d05b1d4d9a1
X-UUID: ee76e0f9ed9346d98d9002f4e6f06742-20240117
X-CID-P-RULE: Release_Ham
X-CID-O-INFO: VERSION:1.1.35,REQID:60c887b3-2dea-43c2-9bf1-1657082d5671,IP:10,
	URL:0,TC:0,Content:-25,EDM:0,RT:0,SF:-3,FILE:0,BULK:0,RULE:Release_Ham,ACT
	ION:release,TS:-18
X-CID-INFO: VERSION:1.1.35,REQID:60c887b3-2dea-43c2-9bf1-1657082d5671,IP:10,UR
	L:0,TC:0,Content:-25,EDM:0,RT:0,SF:-3,FILE:0,BULK:0,RULE:Release_Ham,ACTIO
	N:release,TS:-18
X-CID-META: VersionHash:5d391d7,CLOUDID:16dc588e-e2c0-40b0-a8fe-7c7e47299109,B
	ulkID:2401171700272YDODMF1,BulkQuantity:0,Recheck:0,SF:19|44|101|66|38|24|
	100|17|102,TC:nil,Content:0,EDM:-3,IP:-2,URL:11|1,File:nil,Bulk:nil,QS:nil
	,BEC:nil,COL:0,OSI:0,OSA:0,AV:0,LES:1,SPR:NO,DKR:0,DKP:0,BRR:0,BRE:0
X-CID-BVR: 0
X-CID-BAS: 0,_,0,_
X-CID-FACTOR: TF_CID_SPAM_SNR,TF_CID_SPAM_FAS,TF_CID_SPAM_FSD,TF_CID_SPAM_FSI,
	TF_CID_SPAM_ULN
X-UUID: ee76e0f9ed9346d98d9002f4e6f06742-20240117
X-ns-mid: postfix-65A79728-755627552
From: Kunwu Chan <chentao@kylinos.cn>
To: jgross@suse.com,
	boris.ostrovsky@oracle.com,
	tglx@linutronix.de,
	mingo@redhat.com,
	bp@alien8.de,
	dave.hansen@linux.intel.com,
	x86@kernel.org,
	hpa@zytor.com
Cc: xen-devel@lists.xenproject.org,
	linux-kernel@vger.kernel.org,
	Kunwu Chan <chentao@kylinos.cn>,
	kernel test robot <lkp@intel.com>
Subject: [PATCH v2] x86/xen: Add some null pointer checking to smp.c
Date: Wed, 17 Jan 2024 17:00:18 +0800
Message-Id: <20240117090018.152031-1-chentao@kylinos.cn>
X-Mailer: git-send-email 2.39.2
MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable

kasprintf() returns a pointer to dynamically allocated memory
which can be NULL upon failure. Ensure the allocation was successful
by checking the pointer validity.

Signed-off-by: Kunwu Chan <chentao@kylinos.cn>
Reported-by: kernel test robot <lkp@intel.com>
Closes: https://lore.kernel.org/oe-kbuild-all/202401161119.iof6BQsf-lkp@i=
ntel.com/

---
v2: Initial rc and return errno in error paths
---
 arch/x86/xen/smp.c | 18 +++++++++++++++++-
 1 file changed, 17 insertions(+), 1 deletion(-)

diff --git a/arch/x86/xen/smp.c b/arch/x86/xen/smp.c
index 4b0d6fff88de..0ea4f1b2ab21 100644
--- a/arch/x86/xen/smp.c
+++ b/arch/x86/xen/smp.c
@@ -61,10 +61,14 @@ void xen_smp_intr_free(unsigned int cpu)
=20
 int xen_smp_intr_init(unsigned int cpu)
 {
-	int rc;
+	int rc =3D 0;
 	char *resched_name, *callfunc_name, *debug_name;
=20
 	resched_name =3D kasprintf(GFP_KERNEL, "resched%d", cpu);
+	if (!resched_name) {
+		rc =3D -ENOMEM;
+		goto fail;
+	}
 	per_cpu(xen_resched_irq, cpu).name =3D resched_name;
 	rc =3D bind_ipi_to_irqhandler(XEN_RESCHEDULE_VECTOR,
 				    cpu,
@@ -77,6 +81,10 @@ int xen_smp_intr_init(unsigned int cpu)
 	per_cpu(xen_resched_irq, cpu).irq =3D rc;
=20
 	callfunc_name =3D kasprintf(GFP_KERNEL, "callfunc%d", cpu);
+	if (!callfunc_name) {
+		rc =3D -ENOMEM;
+		goto fail;
+	}
 	per_cpu(xen_callfunc_irq, cpu).name =3D callfunc_name;
 	rc =3D bind_ipi_to_irqhandler(XEN_CALL_FUNCTION_VECTOR,
 				    cpu,
@@ -90,6 +98,10 @@ int xen_smp_intr_init(unsigned int cpu)
=20
 	if (!xen_fifo_events) {
 		debug_name =3D kasprintf(GFP_KERNEL, "debug%d", cpu);
+		if (!debug_name) {
+			rc =3D -ENOMEM;
+			goto fail;
+		}
 		per_cpu(xen_debug_irq, cpu).name =3D debug_name;
 		rc =3D bind_virq_to_irqhandler(VIRQ_DEBUG, cpu,
 					     xen_debug_interrupt,
@@ -101,6 +113,10 @@ int xen_smp_intr_init(unsigned int cpu)
 	}
=20
 	callfunc_name =3D kasprintf(GFP_KERNEL, "callfuncsingle%d", cpu);
+	if (!callfunc_name) {
+		rc =3D -ENOMEM;
+		goto fail;
+	}
 	per_cpu(xen_callfuncsingle_irq, cpu).name =3D callfunc_name;
 	rc =3D bind_ipi_to_irqhandler(XEN_CALL_FUNCTION_SINGLE_VECTOR,
 				    cpu,
--=20
2.39.2



From xen-devel-bounces@lists.xenproject.org Wed Jan 17 11:24:14 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 17 Jan 2024 11:24:14 +0000
Received: from list by lists.xenproject.org with outflank-mailman.668213.1040598 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQ41j-0006OJ-Cm; Wed, 17 Jan 2024 11:24:11 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 668213.1040598; Wed, 17 Jan 2024 11:24:11 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQ41j-0006Mt-9M; Wed, 17 Jan 2024 11:24:11 +0000
Received: by outflank-mailman (input) for mailman id 668213;
 Wed, 17 Jan 2024 02:15:51 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=Go+f=I3=amd.com=Mario.Limonciello@srs-se1.protection.inumbo.net>)
 id 1rPvT5-0008Gp-8d
 for xen-devel@lists.xenproject.org; Wed, 17 Jan 2024 02:15:51 +0000
Received: from NAM12-DM6-obe.outbound.protection.outlook.com
 (mail-dm6nam12on20601.outbound.protection.outlook.com
 [2a01:111:f403:2417::601])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 53ca3fbf-b4de-11ee-98f1-6d05b1d4d9a1;
 Wed, 17 Jan 2024 03:15:48 +0100 (CET)
Received: from MN0PR12MB6101.namprd12.prod.outlook.com (2603:10b6:208:3cb::10)
 by CY5PR12MB6132.namprd12.prod.outlook.com (2603:10b6:930:24::8) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7181.23; Wed, 17 Jan
 2024 02:15:45 +0000
Received: from MN0PR12MB6101.namprd12.prod.outlook.com
 ([fe80::ce8d:7121:cb06:91ba]) by MN0PR12MB6101.namprd12.prod.outlook.com
 ([fe80::ce8d:7121:cb06:91ba%4]) with mapi id 15.20.7181.029; Wed, 17 Jan 2024
 02:15:44 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 53ca3fbf-b4de-11ee-98f1-6d05b1d4d9a1
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=JesTN+TRmGKF5Yq9UL2pgs6A5/yec6Q3Ylh1kXaparPx0NucrQFNqSXIGeoDNaMU5pqA64O1GYMdEPdy/F3hHJz9UI8SVZ/nAnMacz/zPHac4RsRTFtAfnLfCpB+kNz481T2IeAp964YL5/5/RqcQq+J81tWGA6VA0keZgg8cXU63ovuWThbgrMuHLy50isDrHOrT3oNIy0nFdNbgEA0wU2B1dH5axTu8Zv1K6d/vfWGunj4ihdo7776IcrdH7EafBpQdKMIRrQ6MMRwm+qR3tiwGvkEbFZj43mi6mgAg8aHyIaVBrWyIqVjf8zJlSW+w8JH53woBhLL5QbRYWNVCA==
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=rsTljQCujIoxIj6coHRh8yy3EymOymYrxEmjuvWwg5I=;
 b=czUcJfiOV9tAQhbRS7MrhoBUlPls8mWvOQ1Zja1RhhbvD9/vV0c66Z/FrMfRmdG8aqKUiVEyetH2gRc6AGeC11JWPgnYOPl5UyTRo5yLvU/8rCNsOK9rUH6udqp3T6LN1L4WQXkfpVlB+BBKwZ5y29obZWlc3L1nfxCD4w+PGmOz+5tjOCM/vXchxKvUOXj6QQzLKAJG4B9YtghRRUdQLPyf4ilVEowwp/i0inQNA8TQHvbofxGr8/GtqWzAnRyNyssa8R3ca5D2yAS3xBHi9C9LXgQab20gfrbXZMTrEgASfgdfDVysQgZN9JKzqEjV9DOo8HnxV/+33RqhJjOZSg==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=amd.com; dmarc=pass action=none header.from=amd.com; dkim=pass
 header.d=amd.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=rsTljQCujIoxIj6coHRh8yy3EymOymYrxEmjuvWwg5I=;
 b=nMhG13j1Nxmw598d3l5QB3KWuLG8bLnyHYYsygZtMPqNd1GCD2Gr+cgMKERYLFBB96mLO4dn7A1v7n3jZowkHza00x0j38BlpZGkzW2xN9JeX1o+U+XI1bt0qLUjEsDHYJZwZwOCdswR4Zv0RclL8An92t1iJ4aFMhZGvgL6x7w=
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=amd.com;
Message-ID: <2859ad22-8714-4628-8142-fc77fc2072c3@amd.com>
Date: Tue, 16 Jan 2024 20:15:42 -0600
User-Agent: Mozilla Thunderbird
Subject: Re: [BUG]i2c_hid_acpi broken with 4.17.2 on Framework Laptop 13 AMD
To: Jan Beulich <jbeulich@suse.com>, =?UTF-8?Q?S=C3=A9bastien_Chaumat?=
 <euidzero@gmail.com>
Cc: xen-devel@lists.xenproject.org, Juergen Gross <jgross@suse.com>
References: <CAKm-Umas=5=JzooRzPHxUDigKpFK3Ze7cQcG8eR5kWgn-d_7fQ@mail.gmail.com>
 <CAKm-Umapq5LW9yhSOGk8TOg1iuvUogUDKbEXbUcE5T5-vVzW3w@mail.gmail.com>
 <CAKm-UmaUZ=rj-F3RvMoR7H3OvBHm1iy4PTRZAjyi=MQUVTuYVg@mail.gmail.com>
 <CAKm-Umat77MTh6=GEuH+bf1WRX+_B4-N5hY4xwADALfhj4QCPA@mail.gmail.com>
 <6ba9568a-ff8e-48ad-907f-74303e04d3a2@suse.com>
 <CAKm-UmZVoUhidEV15Xk+J_XN5a2GsBqMbXL9wqdFdoAFf_u5AA@mail.gmail.com>
 <bcbceba7-42ac-45be-80ab-e3dfe7741ec6@suse.com>
 <2eafe45b-fd97-472c-a173-459d6ff0b957@suse.com>
 <CAKm-Umbs2D7NHFE+NW2xKOu7-AZhFpH4uzE5QTuQusnGA_eNWA@mail.gmail.com>
 <f539144c-885a-461c-a506-bdb73e626a65@suse.com>
 <CAKm-UmY126AfdGhWcZ3s9vwN9+ksVRRFEhOu0ZFMoDvxrqOibw@mail.gmail.com>
 <CAKm-UmYt3iV8zOhSmtqMGhi_8T93c_nCbnefs4m3UC+3UABqeQ@mail.gmail.com>
 <CAKm-UmY-KXEAtBagikW4Jvp=SFXtmEg8P62pHfSo3Hr2s-0_-A@mail.gmail.com>
 <CAKm-UmYbMCfXc1Ny0=qfB+UaLSXV9oEHZiSgS=mwKMwmOFGVrQ@mail.gmail.com>
 <77c1c05d-a0a0-4292-9257-9b7fbebee0e3@suse.com>
Content-Language: en-US
From: Mario Limonciello <mario.limonciello@amd.com>
In-Reply-To: <77c1c05d-a0a0-4292-9257-9b7fbebee0e3@suse.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
X-ClientProxiedBy: SN7P220CA0007.NAMP220.PROD.OUTLOOK.COM
 (2603:10b6:806:123::12) To MN0PR12MB6101.namprd12.prod.outlook.com
 (2603:10b6:208:3cb::10)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: MN0PR12MB6101:EE_|CY5PR12MB6132:EE_
X-MS-Office365-Filtering-Correlation-Id: d1bdeeaa-be58-4966-9a53-08dc1702362f
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam: BCL:0;
X-Microsoft-Antispam-Message-Info:
	St1Rnv5mvvfxyVArx1bwdZp2L7NjFBsNXgCia2CbVMMoEHdKIqzX1Q4zSVwBFuA/l7ayouWvkugFDS3I00lSeWI6B8omO/r3fz1cmuXeCvHXdIJcDeWwPH97A+sodTfG/CyZlZXF4r9hYuTkkWoO3x+peLlwQaX/05sJ3MsasgsNbbXjBTvsRAzUkQQ+ci3FdvjVr64MmJ/JmVAly7NbGQdvBotW6vnXwiyQ/F1ivpVtd4c6GNqN0dVkOkE1hMEQPyJy0rWqvloHn1FlBYAG6ydpXYTUcyOA/NPP77mEp8ANT2K7k7zX6KaS6jVuxu2c6HyEucqYvTkjmGMeShXWjBVa+DC5aC+em36kG5NE/QN20/+nQPIiuqSaLEVq29s8OFYguU7T5Nrwf2AL+Bcwa2i6NN+cqWhjYaxlypJq9A8P/HJm5Rq8XLCDDumpKQUMg0Bf3wlm2pu3wG/VfK/cuMTZ5iXNLDoJ4uURF9wubizsOLFE7Vmc8wkLhvQvtSxYLk51GzpvjufjHz3iTCrf0ULLey7/DeYQ8HpEXRbYwMmwtQ/+O5bGaMCsqs64fJpd4vqiQilyxKgwz2mFKkFtS9W4Yl1awOTuGmxUyDBobpTg/aJnBfOP86ipPh2siFuM
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:MN0PR12MB6101.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230031)(39860400002)(396003)(136003)(366004)(376002)(346002)(230922051799003)(1800799012)(451199024)(64100799003)(186009)(38100700002)(44832011)(110136005)(4326008)(8676002)(86362001)(5660300002)(966005)(66946007)(6486002)(66556008)(8936002)(31696002)(66476007)(316002)(2906002)(6506007)(36756003)(53546011)(6512007)(83380400001)(26005)(478600001)(2616005)(66574015)(41300700001)(31686004)(45980500001)(43740500002);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?RlBzYTBSdHQrc3dka0xFT1Bjc3JaQWdWSHJvUEhFWE00eHRJKzYrSlJDMmtj?=
 =?utf-8?B?eG5pMUxoQ2dkUm5JcHVVTVJ0aXE5V2c4TGJ4WVBpc0ZsWGNTcmxGRGNueW04?=
 =?utf-8?B?WG5LRFZ6ZkxET3JGcW9TeHZaS1lMS0xOTWk5SlJzaitPZXJDVzBjV3NJdzFv?=
 =?utf-8?B?alNTR1VHZUgyUG01UGJEaWs4WnlMTjBqaEJxaitnZldpS2crVGtBK3dENEZR?=
 =?utf-8?B?Q21wcW54RE9RRm5GNnRxcnFFT0RHTVFmeHl0WUM5NkJyZ1VqRW5TcUNDcldV?=
 =?utf-8?B?UzZxVXN3eHZSbGxyYTVVcVRXdElOeU9udmlqN0loeVAwUzFRTnNBUWpJMDM4?=
 =?utf-8?B?RytNbVU5T1FVZGFGVXUrMHRnZmpGYmZCS3cyekNxcnBDNjFpZzZ2TkJXRXMy?=
 =?utf-8?B?MHN6Q2NQVGozcXFzQXVTUHQ3NHR6REtDMFpzMnpKNXd4S0VObE53V1NzTGhJ?=
 =?utf-8?B?VzgrUm5kWWc4NWh4UDhHT0o4dlRqV000UXpDTTNaMFJaUk43NFhkTFUyZU9w?=
 =?utf-8?B?UWwzdm1SN0c4RnBhMjA1TktJMUtZQUN2RnhVR2JNRXkzT0JHZkR6M3d4b2ZM?=
 =?utf-8?B?OWZvQ2FZcWxibjdZTktiaFlHdkZMY0RhbXlhSE9zWmNJNTl4Vzhmbk5lVXY2?=
 =?utf-8?B?b3d3dWZOeEZNcGgvck96d3A1OXMwdXpkZTBDZ1RLRzB0dkVOdVl3UkFXSDJJ?=
 =?utf-8?B?QXJST3ZKSnhveXM0YTVPalRxV25FSnBqc2VjUUV6dUdmaThrdTcwYitNVTEw?=
 =?utf-8?B?cUNwVCtrSnhTNFR2QWFrUjNxQ1dpTVEvRDIvUGx2dCtaSDR6MFdIRmxIMnBv?=
 =?utf-8?B?R2hhMlV4MzB4cTdXbjBrV0ZaZmhWblVjZ2xxUVhXdXJERzBEUmxnVVQrSFlY?=
 =?utf-8?B?U2lSQWxFYzlJak5md1NYLzJWQjhveEZ1QUxsNVcrOURlSVE2bGhGNUptSHB5?=
 =?utf-8?B?RDA0TnFUUjVnUmdjZy9qd2ZWY3h6SU5hVTF4MnlEeHh4SGFTaktkVVE4YlIy?=
 =?utf-8?B?Y1JIUml3N0xQbXJFdndOQXpoTCtwWE9sYlB2SDg5K2t6dkQ0eUJVL1lrMkVl?=
 =?utf-8?B?Yi9jbEZIcUV1UTFXbVV2MEpvNlp1UTIxZTIvVXYrTWFPQ3Zzcjk0TGM1bTVP?=
 =?utf-8?B?bHQxQlFJR2JWZ0UrbC9YTStTRG1qNmRRc0U5L3BMVllyZWQ4cTlwdDJIL0NZ?=
 =?utf-8?B?YndTa3UvYVVUd3dBQ3RHVWxQVk03a1RSaTBUUjFrOXpYTXBJMUJsaWtJU2Fy?=
 =?utf-8?B?Qm1sSzJHSlozNW1XVlVleTYvYzB2Nmk1T0V0dkc3NnpUT2E3a1ZiKzhaaDc0?=
 =?utf-8?B?WmNPLzJxN3p0UVlYY0tDN3B3cDAvVmhFOE1NcFN0SU4wUWErOUl6MW1yZklG?=
 =?utf-8?B?QlVTK1hQc3o5K1lXcm44WTZDWkpGSFp1bUV6enpuSlM0WlRVNUV2c2k4VnJU?=
 =?utf-8?B?ZmNpMGRWZHowZ2RDOTJoRk45R2orTmRIYm1nR1VhUUFjSTgvUFg1MHAwVmRB?=
 =?utf-8?B?SmFrNjg0NkMyS3Q2WEJqZ2U4dFdlaWJQbG8vaWQ3dXR5TmJ5bm1wNWl0MWc4?=
 =?utf-8?B?NlMraG1uQWoybUVROHBabUlsVnhMekp6bVRMSU1nY1pRS2hOazlXeHYzb01R?=
 =?utf-8?B?YjNZc0lBUWtoRjl5anBkN0VzdU9TYXI4OUJEK0ZRdEpXeW55WEE2OWQ5TEpr?=
 =?utf-8?B?aVJ1OE5JVFR4MXJ2SlNTdk9TdnVHZWlZQi9ZUG5MeFB4d25KSlVnZzA0WjBF?=
 =?utf-8?B?NEtkbXFBOUZNRm81cldhd0RWa1doTEZTWkduSWkzZjRxYUxBdDFsNXRYWVlM?=
 =?utf-8?B?SEZzYzZtc3RsQndjdlBOZXhwMHRZRURLOGp6cjlVYk5Mc0FuQmtlaTEwTXNC?=
 =?utf-8?B?MGFtVGZGWVRZUEdQMjJlNFU0am1zc2I2SVk3aWJlbEpyV3lNNCtON20yQkpu?=
 =?utf-8?B?N1VaMmR5aUtUVE9CMzUxa2U0eXNLNEFtOFVQekJGaEVISnZUaGFzODM3VEpZ?=
 =?utf-8?B?S0FhU2FNMEJnQzh4ckRKSG5mVXNHTkJvbmlvL2dOQkljZWVsdmdpWHBJcHJw?=
 =?utf-8?B?U0hlVS9EVzFMMU9PUkh6d0xQS1l4MTE5UHlNK01tOUdSWC9USlZYUmt2UXpv?=
 =?utf-8?Q?Yj+ms6M1u3GkjiPYrN5qOafox?=
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-Network-Message-Id: d1bdeeaa-be58-4966-9a53-08dc1702362f
X-MS-Exchange-CrossTenant-AuthSource: MN0PR12MB6101.namprd12.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Jan 2024 02:15:44.7915
 (UTC)
X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted
X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d
X-MS-Exchange-CrossTenant-MailboxType: HOSTED
X-MS-Exchange-CrossTenant-UserPrincipalName: VYHHUN5RimWGQrXS/xtdhlha826l+alhPMSz5nRDsYyXqpd3fI3+LUy6/gHub2A4dEWYh2PB5ziSlvdezsMfeg==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY5PR12MB6132

On 1/16/2024 10:18, Jan Beulich wrote:
> On 16.01.2024 16:52, Sébastien Chaumat wrote:
>> Le mar. 2 janv. 2024 à 21:23, Sébastien Chaumat <euidzero@gmail.com> a
>> écrit :
>>
>>>
>>>   output of gpioinfo
>>>>
>>>> kernel alone :
>>>>
>>>>          line   5: unnamed         input active-low consumer=interrupt
>>>>          line  84: unnamed         input active-low consumer=interrupt
>>>>
>>>> xen:
>>>>
>>>>          line   5: unnamed         input active-low
>>>>          line  84: unnamed         input active-low
>>>>
>>>> xen with skipping IRQ7 double init :
>>>>
>>>>          line   5: unnamed         input active-low consumer=interrupt
>>>>          line  84: unnamed         input active-low
>>>>
>>>>
>>>> So definitely progressing.
>>>>
>>>
>>> Checking /sys/kernel/irq/7
>>>
>>> kernel alone :
>>>   actions: pinctrl_amd
>>>   chip_name: IR-IO-APIC
>>>   hwirq: 7
>>>   name: fasteoi
>>>   per_cpu_count: 0,0,0,0,0,20,0,0,0,0,0,0,0,0,0,0
>>>   type: level
>>>   wakeup: enabled
>>>
>>> xen skipping IRQ7 double init :
>>>
>>> actions: pinctrl_amd
>>>   chip_name: xen-pirq
>>>   hwirq:
>>>   name: ioapic-level
>>>   per_cpu_count: 0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0
>>>   type: edge
>>>   wakeup: disabled
>>>
>>> So the skip of IRQ7 in pci_xen_initial_domain() sets the correct handler
>>>   (IIUC xen uses the ioapic-level and handles the eoi separately), but not
>>> the correct type (still edge).
>>> I guess this may explains the results above.
>>>
>>>
>>   Mario (in CC) patched the pinctrl_amd to flush pending interrupt before
>> starting the driver for the GPIO.
>>
>> This helped in  the sense of there's no more pending interrupt on IRQ7
>> (whatever the handler is, level or edge) but then the touchpad is not
>> detected by i2c-hid.
>>
>> Is there any work in progress related to the incorrect IRQ configuration ?
> 
> I'm not aware of any. As per my recollection it's still not entirely
> clear where in the kernel things go astray. And to be honest I don't
> feel comfortable trying to half-blindly address this, e.g. by trying
> to circumvent / defer the early setting up of the low 16 IRQs.
> 
> Jan

Shot in the dark - but could this be a problem where PCAT_COMPAT from 
the MADT is being ignored causing PIC not to be setup properly in the 
Xen case?

See https://lore.kernel.org/all/875y2u5s8g.ffs@tglx/ for some context.



From xen-devel-bounces@lists.xenproject.org Wed Jan 17 11:24:15 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 17 Jan 2024 11:24:15 +0000
Received: from list by lists.xenproject.org with outflank-mailman.667268.1040593 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQ41j-0006LA-5E; Wed, 17 Jan 2024 11:24:11 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 667268.1040593; Wed, 17 Jan 2024 11:24:11 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQ41j-0006L3-2e; Wed, 17 Jan 2024 11:24:11 +0000
Received: by outflank-mailman (input) for mailman id 667268;
 Mon, 15 Jan 2024 10:02:09 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=Udz1=IZ=kylinos.cn=chentao@srs-se1.protection.inumbo.net>)
 id 1rPJnF-00037O-BW
 for xen-devel@lists.xenproject.org; Mon, 15 Jan 2024 10:02:09 +0000
Received: from mailgw.kylinos.cn (mailgw.kylinos.cn [124.126.103.232])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 2113407c-b38d-11ee-98f1-6d05b1d4d9a1;
 Mon, 15 Jan 2024 11:02:05 +0100 (CET)
Received: from mail.kylinos.cn [(39.156.73.10)] by mailgw
 (envelope-from <chentao@kylinos.cn>) (Generic MTA)
 with ESMTP id 181003448; Mon, 15 Jan 2024 18:01:45 +0800
Received: from mail.kylinos.cn (localhost [127.0.0.1])
 by mail.kylinos.cn (NSMail) with SMTP id 4FC6BE000EB9;
 Mon, 15 Jan 2024 18:01:45 +0800 (CST)
Received: from kernel.. (unknown [172.20.15.234])
 by mail.kylinos.cn (NSMail) with ESMTPA id BD46DE000EB9;
 Mon, 15 Jan 2024 18:01:40 +0800 (CST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 2113407c-b38d-11ee-98f1-6d05b1d4d9a1
X-UUID: aa12db9f76434887ab78b70d05aa83c1-20240115
X-CID-P-RULE: Release_Ham
X-CID-O-INFO: VERSION:1.1.35,REQID:169b8540-1950-4393-b39b-1669d3541b89,IP:10,
	URL:0,TC:0,Content:-5,EDM:25,RT:0,SF:-5,FILE:0,BULK:0,RULE:Release_Ham,ACT
	ION:release,TS:25
X-CID-INFO: VERSION:1.1.35,REQID:169b8540-1950-4393-b39b-1669d3541b89,IP:10,UR
	L:0,TC:0,Content:-5,EDM:25,RT:0,SF:-5,FILE:0,BULK:0,RULE:Release_Ham,ACTIO
	N:release,TS:25
X-CID-META: VersionHash:5d391d7,CLOUDID:81fadc82-8d4f-477b-89d2-1e3bdbef96d1,B
	ulkID:240115180146O41PND0C,BulkQuantity:0,Recheck:0,SF:100|17|42|74|66|38|
	24|19|101|102,TC:nil,Content:0,EDM:5,IP:-2,URL:0,File:nil,Bulk:nil,QS:nil,
	BEC:nil,COL:0,OSI:0,OSA:0,AV:0,LES:1,SPR:NO,DKR:0,DKP:0,BRR:0,BRE:0
X-CID-BVR: 0
X-CID-BAS: 0,_,0,_
X-CID-FACTOR: TF_CID_SPAM_SNR,TF_CID_SPAM_FAS,TF_CID_SPAM_FSD,TF_CID_SPAM_FSI
X-UUID: aa12db9f76434887ab78b70d05aa83c1-20240115
X-ns-mid: postfix-65A50289-20367574
From: Kunwu Chan <chentao@kylinos.cn>
To: jgross@suse.com,
	boris.ostrovsky@oracle.com,
	tglx@linutronix.de,
	mingo@redhat.com,
	bp@alien8.de,
	dave.hansen@linux.intel.com,
	x86@kernel.org,
	hpa@zytor.com
Cc: xen-devel@lists.xenproject.org,
	linux-kernel@vger.kernel.org,
	Kunwu Chan <chentao@kylinos.cn>
Subject: [PATCH] x86/xen: Fix some null pointer dereference issues in smp.c
Date: Mon, 15 Jan 2024 18:01:38 +0800
Message-Id: <20240115100138.34340-1-chentao@kylinos.cn>
X-Mailer: git-send-email 2.39.2
MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable

kasprintf() returns a pointer to dynamically allocated memory
which can be NULL upon failure. Ensure the allocation was successful
by checking the pointer validity.

Signed-off-by: Kunwu Chan <chentao@kylinos.cn>
---
 arch/x86/xen/smp.c | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/arch/x86/xen/smp.c b/arch/x86/xen/smp.c
index 4b0d6fff88de..f27608ed80a0 100644
--- a/arch/x86/xen/smp.c
+++ b/arch/x86/xen/smp.c
@@ -65,6 +65,8 @@ int xen_smp_intr_init(unsigned int cpu)
 	char *resched_name, *callfunc_name, *debug_name;
=20
 	resched_name =3D kasprintf(GFP_KERNEL, "resched%d", cpu);
+	if (!resched_name)
+		goto fail;
 	per_cpu(xen_resched_irq, cpu).name =3D resched_name;
 	rc =3D bind_ipi_to_irqhandler(XEN_RESCHEDULE_VECTOR,
 				    cpu,
@@ -77,6 +79,8 @@ int xen_smp_intr_init(unsigned int cpu)
 	per_cpu(xen_resched_irq, cpu).irq =3D rc;
=20
 	callfunc_name =3D kasprintf(GFP_KERNEL, "callfunc%d", cpu);
+	if (!callfunc_name)
+		goto fail;
 	per_cpu(xen_callfunc_irq, cpu).name =3D callfunc_name;
 	rc =3D bind_ipi_to_irqhandler(XEN_CALL_FUNCTION_VECTOR,
 				    cpu,
@@ -90,6 +94,8 @@ int xen_smp_intr_init(unsigned int cpu)
=20
 	if (!xen_fifo_events) {
 		debug_name =3D kasprintf(GFP_KERNEL, "debug%d", cpu);
+		if (!debug_name)
+			goto fail;
 		per_cpu(xen_debug_irq, cpu).name =3D debug_name;
 		rc =3D bind_virq_to_irqhandler(VIRQ_DEBUG, cpu,
 					     xen_debug_interrupt,
@@ -101,6 +107,8 @@ int xen_smp_intr_init(unsigned int cpu)
 	}
=20
 	callfunc_name =3D kasprintf(GFP_KERNEL, "callfuncsingle%d", cpu);
+	if (!callfunc_name)
+		goto fail;
 	per_cpu(xen_callfuncsingle_irq, cpu).name =3D callfunc_name;
 	rc =3D bind_ipi_to_irqhandler(XEN_CALL_FUNCTION_SINGLE_VECTOR,
 				    cpu,
--=20
2.39.2



From xen-devel-bounces@lists.xenproject.org Wed Jan 17 11:30:59 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 17 Jan 2024 11:30:59 +0000
Received: from list by lists.xenproject.org with outflank-mailman.668420.1040630 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQ48E-0001tj-Lv; Wed, 17 Jan 2024 11:30:54 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 668420.1040630; Wed, 17 Jan 2024 11:30:54 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQ48E-0001tc-Ip; Wed, 17 Jan 2024 11:30:54 +0000
Received: by outflank-mailman (input) for mailman id 668420;
 Wed, 17 Jan 2024 11:30:53 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=sm03=I3=gmail.com=oleksii.kurochko@srs-se1.protection.inumbo.net>)
 id 1rQ48D-0001tV-H7
 for xen-devel@lists.xenproject.org; Wed, 17 Jan 2024 11:30:53 +0000
Received: from mail-ej1-x634.google.com (mail-ej1-x634.google.com
 [2a00:1450:4864:20::634])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id df1a5373-b52b-11ee-98f2-6d05b1d4d9a1;
 Wed, 17 Jan 2024 12:30:52 +0100 (CET)
Received: by mail-ej1-x634.google.com with SMTP id
 a640c23a62f3a-a2c67be31edso713487066b.0
 for <xen-devel@lists.xenproject.org>; Wed, 17 Jan 2024 03:30:52 -0800 (PST)
Received: from [192.168.206.239] ([94.75.70.14])
 by smtp.gmail.com with ESMTPSA id
 h10-20020a17090619ca00b00a2ed233c313sm627742ejd.168.2024.01.17.03.30.51
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 17 Jan 2024 03:30:51 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: df1a5373-b52b-11ee-98f2-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1705491052; x=1706095852; darn=lists.xenproject.org;
        h=mime-version:user-agent:content-transfer-encoding:references
         :in-reply-to:date:cc:to:from:subject:message-id:from:to:cc:subject
         :date:message-id:reply-to;
        bh=OtsF0IeGh4Hk0BZaPZxvwYKxwK3DtyrzBr/YC5XexRA=;
        b=bHXxuTN5xohHkJ+Ty1UlPyNQ9fhpWe/o4NmFClOQVyZzFViV3LJac2N1vTkVTJK57r
         jHIJ/WTeFjjAJThdq4sb8oe1LmMkt1Z+3wZ8rxb8SFBQ3b+Pk4pAfeRTWxSrzv40hlKg
         18TfOrFNGkB7qKUGIZuoFfP7MPZmqb9lMxPXJV5MXAZNlSH96YEl+GOKq6xGgdLa+tnO
         WxLu35fMC84xbd5jvOJc7OjJuGoqjSnRh4gXse9Ds2EXqV7dLGlf04fxeGF1ME4aUpBY
         OOsDwazG58Cs6u4izYeJQzdiFHNeVaFlF7cIoiuuMg1jhEiLBl+UjLonKkQdIZfgto/v
         MeEA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705491052; x=1706095852;
        h=mime-version:user-agent:content-transfer-encoding:references
         :in-reply-to:date:cc:to:from:subject:message-id:x-gm-message-state
         :from:to:cc:subject:date:message-id:reply-to;
        bh=OtsF0IeGh4Hk0BZaPZxvwYKxwK3DtyrzBr/YC5XexRA=;
        b=Kj+/9gW0ErhDBwzEiqKMYxxJMn0FGMMFYplFp8VFI6DXlDpUmQlEwnofjwejyX4+Rz
         m7vVNknPi58ngnq04IMhQLiwpj1t5eTddeM/EdxtJEPsbJXKNH/U5BPKi8kCpMzqO4OJ
         aiIPYLkT1UiSBvxYJ6cTeD31JQHXAxiNxSxsx+8jIqfYFWACtIaC4hLHvrQq0EdWcJTX
         OpzKGl+hXQW7orm1fmjrlh/aYw1l4vPF36zwoVvP9/Wj2BlOyD2AvIMow04XGJopCP5m
         gVeQu2ufBx60hmtPWBezvhPHTFx6nA2OLjghR2T0pcMnxjuF6uNFAdwg5sQ2Xl7f21Gf
         46XA==
X-Gm-Message-State: AOJu0YwehijmfBY6/t/oxo92OA6u4G3IdqJp0cs8CyncOs4m3Oabn1zZ
	vXm9w6yIHiVoanUbjSydI5Y=
X-Google-Smtp-Source: AGHT+IFFyH89UhC5S46Ir4c8ifZFnhuE01fGVy2fyk/m/ANY7pIMvnM81TnhWbqe1eXxJjavbI7swA==
X-Received: by 2002:a17:907:20d2:b0:a1c:9f65:a414 with SMTP id qq18-20020a17090720d200b00a1c9f65a414mr1914980ejb.152.1705491051874;
        Wed, 17 Jan 2024 03:30:51 -0800 (PST)
Message-ID: <a1efdd682dade974df414c15844160429ed6cd2a.camel@gmail.com>
Subject: Re: [PATCH v6 1/9] automation: ensure values in
 EXTRA_FIXED_RANDCONFIG are separated by new line
From: Oleksii <oleksii.kurochko@gmail.com>
To: Doug Goldstein <cardoe@cardoe.com>, Stefano Stabellini
	 <sstabellini@kernel.org>
Cc: xen-devel@lists.xenproject.org
Date: Wed, 17 Jan 2024 13:30:51 +0200
In-Reply-To: <9f75416adb77d03b639741e4548d041c78fd4227.1703072575.git.oleksii.kurochko@gmail.com>
References: <cover.1703072575.git.oleksii.kurochko@gmail.com>
	 <9f75416adb77d03b639741e4548d041c78fd4227.1703072575.git.oleksii.kurochko@gmail.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
User-Agent: Evolution 3.50.2 (3.50.2-1.fc39) 
MIME-Version: 1.0


Hello Doug abd Stefano,

Could you please take a look at this patch and the next one [1] of this
patch series?

Thanks in advance.

[1]https://lore.kernel.org/xen-devel/db2c3d36b25b686bf07ac23f8ee8c879e0e9e8=
1d.1703072575.git.oleksii.kurochko@gmail.com/

Best regards,
 Oleksii


On Wed, 2023-12-20 at 16:08 +0200, Oleksii Kurochko wrote:
> Kconfig tool expects each configuration to be on a new line.
>=20
> The current version of the build script puts all of
> ${EXTRA_FIXED_RANDCONFIG}
> in a single line and configs are seperated by spaces.
>=20
> As a result, only the first configuration in
> ${EXTRA_FIXED_RANDCONFIG} will
> be used.
>=20
> Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>
> ---
> Changes in V6:
> =C2=A0- The patch was introduced in this version of patch series.
> ---
> =C2=A0automation/scripts/build | 6 ++++--
> =C2=A01 file changed, 4 insertions(+), 2 deletions(-)
>=20
> diff --git a/automation/scripts/build b/automation/scripts/build
> index b3c71fb6fb..13b043923d 100755
> --- a/automation/scripts/build
> +++ b/automation/scripts/build
> @@ -14,7 +14,7 @@ if [[ "${RANDCONFIG}" =3D=3D "y" ]]; then
> =C2=A0
> =C2=A0=C2=A0=C2=A0=C2=A0 # Append job-specific fixed configuration
> =C2=A0=C2=A0=C2=A0=C2=A0 if [[ -n "${EXTRA_FIXED_RANDCONFIG}" ]]; then
> -=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 echo "${EXTRA_FIXED_RANDCONFI=
G}" >>
> xen/tools/kconfig/allrandom.config
> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 sed "s/ /\n/g" <<< "${EXTRA_F=
IXED_RANDCONFIG}" >
> xen/tools/kconfig/allrandom.config
> =C2=A0=C2=A0=C2=A0=C2=A0 fi
> =C2=A0
> =C2=A0=C2=A0=C2=A0=C2=A0 make -j$(nproc) -C xen
> KCONFIG_ALLCONFIG=3Dtools/kconfig/allrandom.config randconfig
> @@ -28,9 +28,11 @@ else
> =C2=A0=C2=A0=C2=A0=C2=A0 echo "CONFIG_DEBUG=3D${debug}" >> xen/.config
> =C2=A0
> =C2=A0=C2=A0=C2=A0=C2=A0 if [[ -n "${EXTRA_XEN_CONFIG}" ]]; then
> -=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 echo "${EXTRA_XEN_CONFIG}" >>=
 xen/.config
> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 sed "s/ /\n/g" <<< "${EXTRA_X=
EN_CONFIG}" >> xen/.config
> =C2=A0=C2=A0=C2=A0=C2=A0 fi
> =C2=A0
> +=C2=A0=C2=A0=C2=A0 cat xen/.config
> +
> =C2=A0=C2=A0=C2=A0=C2=A0 make -j$(nproc) -C xen olddefconfig
> =C2=A0fi
> =C2=A0



From xen-devel-bounces@lists.xenproject.org Wed Jan 17 11:38:08 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 17 Jan 2024 11:38:08 +0000
Received: from list by lists.xenproject.org with outflank-mailman.668426.1040640 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQ4F8-0003gV-F5; Wed, 17 Jan 2024 11:38:02 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 668426.1040640; Wed, 17 Jan 2024 11:38:02 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQ4F8-0003gO-Az; Wed, 17 Jan 2024 11:38:02 +0000
Received: by outflank-mailman (input) for mailman id 668426;
 Wed, 17 Jan 2024 11:38:01 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=sm03=I3=gmail.com=oleksii.kurochko@srs-se1.protection.inumbo.net>)
 id 1rQ4F7-0003gG-I0
 for xen-devel@lists.xenproject.org; Wed, 17 Jan 2024 11:38:01 +0000
Received: from mail-ej1-x633.google.com (mail-ej1-x633.google.com
 [2a00:1450:4864:20::633])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id de32ab31-b52c-11ee-98f2-6d05b1d4d9a1;
 Wed, 17 Jan 2024 12:38:00 +0100 (CET)
Received: by mail-ej1-x633.google.com with SMTP id
 a640c23a62f3a-a28a6cef709so1208735166b.1
 for <xen-devel@lists.xenproject.org>; Wed, 17 Jan 2024 03:38:00 -0800 (PST)
Received: from [192.168.206.239] ([94.75.70.14])
 by smtp.gmail.com with ESMTPSA id
 q21-20020a1709066b1500b00a2990007447sm7629125ejr.122.2024.01.17.03.37.59
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 17 Jan 2024 03:37:59 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: de32ab31-b52c-11ee-98f2-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1705491480; x=1706096280; darn=lists.xenproject.org;
        h=mime-version:user-agent:content-transfer-encoding:references
         :in-reply-to:date:cc:to:from:subject:message-id:from:to:cc:subject
         :date:message-id:reply-to;
        bh=sV2iKZBNMnJdQqcU6S7R1EQegPazY9oVOLXivMhlgVE=;
        b=Vh+V3p7mnweCyNly7TSLRGfU0d+7eJDrYrCY5IcjwLOZlvUQ0UuKqAwFcM0Wt0nuvD
         rJJkVEfmpTLWq3xuW2YLDcbczBMPSLUhO2Aw8+DlW7pnOZEF7neN4hXHmT7Vp23OLUSE
         u60BlJhPvFx24SMAwtU7nrM40MPxKTw+XFRR0Ef8WDATtgTJfnpU8Ba5l2QPgYQL5zF1
         Nfzk2ZK06bafu24azqZHwlbnseQHVGLiKGuIG7mSx+ti/ztKJg4FKw2W3ttBoopkvtG0
         uH51H68gxJavV3HC0S1Flht3oLGFrMOy6avDYBLOan5HQfZPRCtqQp6ttgnpAQLVAhHs
         Xrcw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705491480; x=1706096280;
        h=mime-version:user-agent:content-transfer-encoding:references
         :in-reply-to:date:cc:to:from:subject:message-id:x-gm-message-state
         :from:to:cc:subject:date:message-id:reply-to;
        bh=sV2iKZBNMnJdQqcU6S7R1EQegPazY9oVOLXivMhlgVE=;
        b=sOg87/5l0ZzCAM2TMg50CQv6l8guZ/3v18N1Gam3lNXWD2NyqkNmalYqFd7RHAGYJc
         Zt1gabHH0lkLa23gIbmfsLHp30SOkPfRW86M2rXEuPzCHLLC3G/C8968FQmCGW93SprW
         A5BH3a+QU23zFlcBrJ9BTp/2DLlc33tW6/DKWdZ4Dfzwg/F3YE2M3UxH/Up0v/QHowVl
         R45Jb7hrEv+IwoC2Mi8W0a9e/DEtRC2/MmDgwF1mZtWQPtVmK7q6tnDUXAXg04qbna3S
         cPsA/BxpLOiz0TCUcuMSOH1Y+fNzfJ1ij1RDfHofohtTYP7Te92CfLpDslixplfTzLyX
         g4BQ==
X-Gm-Message-State: AOJu0Yya56u1cWGA9qp9agljByYgtBIrgsDCoTO8SnrLSkM387KIy3cq
	rMOaiI8mTBETFvwuYZfszhY=
X-Google-Smtp-Source: AGHT+IHgdNewBkcOAThWunLNTlX+CXj+VPniTma/WzpWXSNwbY3uGFMkCiIM58QeuV7Y4sH3hUPRNA==
X-Received: by 2002:a17:906:2b46:b0:a2d:4899:f287 with SMTP id b6-20020a1709062b4600b00a2d4899f287mr3444690ejg.143.1705491479833;
        Wed, 17 Jan 2024 03:37:59 -0800 (PST)
Message-ID: <1b20fefd125598e2bb62d516495783650da75271.camel@gmail.com>
Subject: Re: [PATCH v3 10/34] xen/riscv: introduce bitops.h
From: Oleksii <oleksii.kurochko@gmail.com>
To: Jan Beulich <jbeulich@suse.com>
Cc: Alistair Francis <alistair.francis@wdc.com>, Bob Eshleman
 <bobbyeshleman@gmail.com>, Connor Davis <connojdavis@gmail.com>, Andrew
 Cooper <andrew.cooper3@citrix.com>, George Dunlap
 <george.dunlap@citrix.com>,  Julien Grall <julien@xen.org>, Stefano
 Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>, 
 xen-devel@lists.xenproject.org
Date: Wed, 17 Jan 2024 13:37:58 +0200
In-Reply-To: <2e10b170-5a75-4ae0-8d2f-c6c1ad9951a5@suse.com>
References: <cover.1703255175.git.oleksii.kurochko@gmail.com>
	 <841d59c3950970f4937da200cf8f04aa39132e14.1703255175.git.oleksii.kurochko@gmail.com>
	 <23f1212a-66a8-47b0-904b-08b2ab54c72b@suse.com>
	 <17d9fe474e244a15aa5955e630d553a62b0080fd.camel@gmail.com>
	 <88df7ccd-8d14-4b00-900d-04cc87d9f230@suse.com>
	 <863b09f03d37e96d737ab6bda4cc8923f75550fd.camel@gmail.com>
	 <2e10b170-5a75-4ae0-8d2f-c6c1ad9951a5@suse.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
User-Agent: Evolution 3.50.2 (3.50.2-1.fc39) 
MIME-Version: 1.0

> > >=20
> > > > > Also you want to make sure asm-generic/bitops/bitops-bits.h
> > > > > is
> > > > > really in use here, or else an arch overriding / not using
> > > > > that
> > > > > header may end up screwed.
> > > > I am not really understand what do you mean. Could you please
> > > > explain a
> > > > little bit more.
> > >=20
> > > Whichever type you use here, it needs to be in sync with
> > > BITOP_BITS_PER_WORD. Hence you want to include the _local_
> > > bitops-
> > > bits.h
> > > here, such that in case of an inconsistent override by an arch
> > > the
> > > compiler would complain about the two differring #define-s. (IOW
> > > an
> > > arch overriding BITOP_BITS_PER_WORD cannot re-use this header as-
> > > is.)
> > >=20
> > > The same may, btw, be true for others of the new headers you add
> > > -
> > > the
> > > same #include would therefore be needed there as well.
> > Now it clear to me.
> >=20
> >=20
> > It seems like BITOP_BITS_PER_WORD, BITOP_MASK, BITOP_WORD, and
> > BITS_PER_BYTE are defined in {arm, ppc,
> > riscv}/include/asm/bitops.h.
> > I expected that any architecture planning to use asm-
> > generic/bitops/bitops-bits.h would include it at the beginning of
> > <arch>/include/asm/bitops.h, similar to what is done for RISC-V:
> > =C2=A0=C2=A0 #ifndef _ASM_RISCV_BITOPS_H
> > =C2=A0=C2=A0 #define _ASM_RISCV_BITOPS_H
> > =C2=A0=C2=A0=20
> > =C2=A0=C2=A0 #include <asm/system.h>
> > =C2=A0=C2=A0=20
> > =C2=A0=C2=A0 #include <asm-generic/bitops/bitops-bits.h>
> > =C2=A0=C2=A0 ...
> >=20
> > But in this case, to allow architecture overrides macros, it is
> > necessary to update asm-generic/bitops/bitops-bits.h:
> > =C2=A0=C2=A0=C2=A0 #ifndef BITOP_BITS_PER_WORD
> > =C2=A0=C2=A0=C2=A0 #define BITOP_BITS_PER_WORD=C2=A0=C2=A0=C2=A0=C2=A0 =
32
> > =C2=A0=C2=A0=C2=A0 #endif
> > =C2=A0=C2=A0 ...
> > Therefore,=C2=A0 if an architecture needs to override something, it wil=
l
> > add
> > #define ... before #include <asm-generic/bitops/bitops-bits.h>.
> >=20
> > Does it make sense?
>=20
> Sure. But then the arch also needs to provide a corresponding typedef
> (and bitops-bits.h the fallback one), for use wherever you use any of
> those #define-s.
Which one typedef is needed to provide?
<asm-generic/bitops/bitops-bits.h> contains only macros.


~ Oleksii


From xen-devel-bounces@lists.xenproject.org Wed Jan 17 12:07:18 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 17 Jan 2024 12:07:18 +0000
Received: from list by lists.xenproject.org with outflank-mailman.668439.1040650 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQ4hG-0005aK-0l; Wed, 17 Jan 2024 12:07:06 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 668439.1040650; Wed, 17 Jan 2024 12:07:05 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQ4hF-0005aD-UK; Wed, 17 Jan 2024 12:07:05 +0000
Received: by outflank-mailman (input) for mailman id 668439;
 Wed, 17 Jan 2024 12:07:04 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=JJP7=I3=invisiblethingslab.com=marmarek@srs-se1.protection.inumbo.net>)
 id 1rQ4hE-0005a7-Kf
 for xen-devel@lists.xenproject.org; Wed, 17 Jan 2024 12:07:04 +0000
Received: from wout2-smtp.messagingengine.com (wout2-smtp.messagingengine.com
 [64.147.123.25]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id eb352b93-b530-11ee-98f2-6d05b1d4d9a1;
 Wed, 17 Jan 2024 13:07:02 +0100 (CET)
Received: from compute7.internal (compute7.nyi.internal [10.202.2.48])
 by mailout.west.internal (Postfix) with ESMTP id B8AF93200A74;
 Wed, 17 Jan 2024 07:06:58 -0500 (EST)
Received: from mailfrontend1 ([10.202.2.162])
 by compute7.internal (MEProxy); Wed, 17 Jan 2024 07:06:59 -0500
Received: by mail.messagingengine.com (Postfix) with ESMTPA; Wed,
 17 Jan 2024 07:06:57 -0500 (EST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: eb352b93-b530-11ee-98f2-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=
	invisiblethingslab.com; h=cc:cc:content-type:content-type:date
	:date:from:from:in-reply-to:in-reply-to:message-id:mime-version
	:references:reply-to:subject:subject:to:to; s=fm2; t=1705493218;
	 x=1705579618; bh=6dXwf2Emkr8hF/QTtxCS9RwUTBC/ZoEjXg/2ijDfCD8=; b=
	fgcc5c8XXyi+nuijytNdrh8R2ikQpa0QSShWZ+G761/miDosE62xaIqOrL47bwe6
	jFmBPulPjLvP/v0uPIkt2BkB93LgzUEqyX0f/rLi/CZyfIhiwUr+CDII/ZxA1Uh/
	ETo9WJDwfFAoRrhlHLWPG3rQ+Ftd3ySb3b7RgggEIczbSoScobLVch7GWj+IcfaL
	2ffw+DUzu5/PgqJBcmQzd5GIOb7x1Uj3C8wFmF15P/T1wE4nQKwsAHX/r7qR9rdW
	LPZdBV/DwJDuUXJJ1GkGamx+0CNGz6RpN1U/ul/evYrXYCbPKR9fZEAXEpZhM5YR
	eGFY8s1ur8ybzAMOiUaKjQ==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=
	messagingengine.com; h=cc:cc:content-type:content-type:date:date
	:feedback-id:feedback-id:from:from:in-reply-to:in-reply-to
	:message-id:mime-version:references:reply-to:subject:subject:to
	:to:x-me-proxy:x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s=
	fm3; t=1705493218; x=1705579618; bh=6dXwf2Emkr8hF/QTtxCS9RwUTBC/
	ZoEjXg/2ijDfCD8=; b=c+AA3prrMKoSkg0p4yU/gbUb/9zTwP/34QAUxYlDwFgg
	v4ktMEPvId3rQlnj/nxv7OZk13XDTdAP13n6W57hrOpkZpzPt866rYcIlda0H5Ut
	CzwpKlTU7v9/uT040YoFW3pr3hjpwsij3tQeFgu5B/ZTqmk78l9LL/8IWIljMu0o
	R8EVVdiLfb3Cicjlgz8AOAul9ACZqr1kDwBkUjnCkZP2lAgwvtvpv2O84FxJUUt3
	gj9m7hLfAOVkj4sMOFxIwJrbfDU6mlX6rcqIXZJb5cJp669ggsTWZM8uUldNFfcJ
	MKov0buRegSXjneuVte0BH9u6G/hbcHkd7Me1F+qnQ==
X-ME-Sender: <xms:4sKnZQvNOQr7piLT31PLI6ms57AYE2bijN5ErEKlEN7Ih2A3PxVzLw>
    <xme:4sKnZddL7iCqOGQVlnoShn3PEWJOOuUJTqVyqX_0Sv5ToMwsDt6VXEq9OpbDabQ2n
    Ac0V8Be63PAKg>
X-ME-Received: <xmr:4sKnZbzMLXGOdRKE-RN1RhTstshpDj0lMtAVXoDSAo3-iY-WmphhxPskafw-C9hnuTqqsTX3SM82VlyffKyfvgPpiJRFydJnZA>
X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvkedrvdejhedgfedtucetufdoteggodetrfdotf
    fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen
    uceurghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmne
    cujfgurhepfffhvfevuffkfhggtggujgesghdtreertddtjeenucfhrhhomhepofgrrhgv
    khcuofgrrhgtiiihkhhofihskhhiqdfikphrvggtkhhiuceomhgrrhhmrghrvghksehinh
    hvihhsihgslhgvthhhihhnghhslhgrsgdrtghomheqnecuggftrfgrthhtvghrnhepgfdu
    leetfeevhfefheeiteeliefhjefhleduveetteekveettddvgeeuteefjedunecuvehluh
    hsthgvrhfuihiivgeptdenucfrrghrrghmpehmrghilhhfrhhomhepmhgrrhhmrghrvghk
    sehinhhvihhsihgslhgvthhhihhnghhslhgrsgdrtghomh
X-ME-Proxy: <xmx:4sKnZTOApGBR8-7L6b-XLn5X4813RsIH-RGFqZdOsm1u8sG7M2Wung>
    <xmx:4sKnZQ8sgJYTH6YDcCZel2wJYtHZw7JQPYDaWRHjk8VtdVhfI5_1eg>
    <xmx:4sKnZbXY4lwpoQRxcuVpWc_N6HVU6I1t5IbSCmFtT5T7Q6tLkBLXcQ>
    <xmx:4sKnZek-ivAs70J9mPPNZ0qANE_tyqS5QRJqeOXpiTyjFfUP7t_2bA>
Feedback-ID: i1568416f:Fastmail
Date: Wed, 17 Jan 2024 13:06:53 +0100
From: Marek =?utf-8?Q?Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
To: Jan Beulich <jbeulich@suse.com>
Cc: Patrick Plenefisch <simonpatp@gmail.com>,
	xen-devel@lists.xenproject.org, Juergen Gross <jgross@suse.com>
Subject: Re: E820 memory allocation issue on Threadripper platforms
Message-ID: <ZafC3apB4rjFUOXP@mail-itl>
References: <CAOCpoWdOH=xGxiQSC1c5Ueb1THxAjH4WiZbCZq-QT+d_KAk3SA@mail.gmail.com>
 <1708c3d7-662a-44bc-b9b3-4ab9f8642d7b@suse.com>
 <dcaf9d8d-ad5a-4714-936b-79ed0e587f9d@suse.com>
 <CAOCpoWeowZPuQTeBp9nu8p8CDtE=u++wN_UqRoABZtB57D50Qw@mail.gmail.com>
 <ac742d12-ec91-4215-bb42-82a145924b4f@suse.com>
MIME-Version: 1.0
Content-Type: multipart/signed; micalg=pgp-sha256;
	protocol="application/pgp-signature"; boundary="tVSWNhlt71lf4w1l"
Content-Disposition: inline
In-Reply-To: <ac742d12-ec91-4215-bb42-82a145924b4f@suse.com>


--tVSWNhlt71lf4w1l
Content-Type: text/plain; protected-headers=v1; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable
Date: Wed, 17 Jan 2024 13:06:53 +0100
From: Marek =?utf-8?Q?Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
To: Jan Beulich <jbeulich@suse.com>
Cc: Patrick Plenefisch <simonpatp@gmail.com>,
	xen-devel@lists.xenproject.org, Juergen Gross <jgross@suse.com>
Subject: Re: E820 memory allocation issue on Threadripper platforms

On Tue, Jan 16, 2024 at 10:33:26AM +0100, Jan Beulich wrote:
> ... as per
>=20
> (XEN)  Dom0 kernel: 64-bit, PAE, lsb, paddr 0x1000000 -> 0x4a00000
>=20
> there's an overlap with not exactly a hole, but with an
> EfiACPIMemoryNVS region:
>=20
> (XEN)  0000000100000-0000003159fff type=3D2 attr=3D000000000000000f
> (XEN)  000000315a000-0000003ffffff type=3D7 attr=3D000000000000000f
> (XEN)  0000004000000-0000004045fff type=3D10 attr=3D000000000000000f
> (XEN)  0000004046000-0000009afefff type=3D7 attr=3D000000000000000f
>=20
> (the 3rd of the 4 lines). Considering there's another region higher
> up:
>=20
> (XEN)  00000a747f000-00000a947efff type=3D10 attr=3D000000000000000f
>=20
> I'm inclined to say it is poor firmware (or, far less likely, boot
> loader) behavior to clobber a rather low and entirely arbitrary RAM
> range, rather than consolidating all such regions near the top of
> RAM below 4Gb.

FWIW, we have two more similar reports, with different motherboards and
firmware versions, but the common factor is Threadripper CPU. It doesn't
exclude firmware issue (it can be an issue in some common template, like
edk2?), but makes it a bit less likely.

> There are further such odd regions, btw:
>=20
> (XEN)  0000009aff000-0000009ffffff type=3D0 attr=3D000000000000000f
> ...
> (XEN)  000000b000000-000000b020fff type=3D0 attr=3D000000000000000f
>=20
> If the kernel image was sufficiently much larger, these could become
> a problem as well. Otoh if the kernel wasn't built with
> CONFIG_PHYSICAL_START=3D0x1000000, i.e. to start at 16Mb, but at, say,
> 2Mb, things should apparently work even with this unusual memory
> layout (until the kernel would grow enough to again run into that
> very region).

Shouldn't CONFIG_RELOCATABLE=3Dy take care of this? At least in the case
of Qubes OS, it's enabled and the issue still happens.

--=20
Best Regards,
Marek Marczykowski-G=C3=B3recki
Invisible Things Lab

--tVSWNhlt71lf4w1l
Content-Type: application/pgp-signature; name="signature.asc"

-----BEGIN PGP SIGNATURE-----

iQEzBAEBCAAdFiEEhrpukzGPukRmQqkK24/THMrX1ywFAmWnwt0ACgkQ24/THMrX
1yytzAf/Sy1zcR4YlIQqTOtyOsBrGloA3BiD0vt0pkI6KyIU3/WPQ3gP/sR6JwfS
aagnqE9C92K8nO8JFRzmHY9ZO7kCZooTGbaJsj/L9a4m0nFNcV+Lr0Avm+Mi9Gzo
Mzh7NbrYY2iM7YR+XRyJnUNMgRmhm7Y8m1VbUdHnmGlnFWcoTpIJEl4YQfR7PuME
g0D/qXXXcLYrnQQeX+EhH3dEwocUd8aKp/8GLM6NFz4ZgqSnlvDi2Twtionp/pml
fE3EkE2PcPsKVkkvQElx6khYCte1jEsX8aftGoZlIcAMZStjcF1bVdnTqedOQDke
dYfPbeVz739QGWu8qS+5Le7979kZyg==
=2p1s
-----END PGP SIGNATURE-----

--tVSWNhlt71lf4w1l--


From xen-devel-bounces@lists.xenproject.org Wed Jan 17 12:10:50 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 17 Jan 2024 12:10:50 +0000
Received: from list by lists.xenproject.org with outflank-mailman.668444.1040659 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQ4kr-0008RN-G5; Wed, 17 Jan 2024 12:10:49 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 668444.1040659; Wed, 17 Jan 2024 12:10:49 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQ4kr-0008RG-DW; Wed, 17 Jan 2024 12:10:49 +0000
Received: by outflank-mailman (input) for mailman id 668444;
 Wed, 17 Jan 2024 12:10:48 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>) id 1rQ4kq-0008R6-7H
 for xen-devel@lists.xenproject.org; Wed, 17 Jan 2024 12:10:48 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rQ4kp-000756-J7; Wed, 17 Jan 2024 12:10:47 +0000
Received: from [15.248.2.31] (helo=[10.24.67.35])
 by xenbits.xenproject.org with esmtpsa
 (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rQ4kp-0000zK-AD; Wed, 17 Jan 2024 12:10:47 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
	s=20200302mail; h=Content-Transfer-Encoding:Content-Type:In-Reply-To:From:
	References:Cc:To:Subject:MIME-Version:Date:Message-ID;
	bh=qJVXl30sKPSmw01+z7oGpxut0lwh5RUu3gm61I287mE=; b=D87wIca1aA38ItJaHvE8GvR+h8
	LbOFe27xcp/Lrcn/LWfqqX0xROnWRImiRUFspB/RI5q9GaU+qlKq+yBdRuCFpPCAk5CHFdD8rq7Ap
	Q6Mu9DE1NsQordPHS97ADOqfQyePVeSBUBeGOXnj423TZtGM20DfqSEtgHTnu3quOUkk=;
Message-ID: <ea7b5499-5b15-4c03-8187-39a9456e6ea4@xen.org>
Date: Wed, 17 Jan 2024 12:10:44 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v1 repost 1/4] arm/mmu: Move init_ttbr to a new section
 .data.idmap
Content-Language: en-GB
To: Michal Orzel <michal.orzel@amd.com>, xen-devel@lists.xenproject.org
Cc: carlo.nonato@minervasys.tech, Julien Grall <jgrall@amazon.com>,
 Stefano Stabellini <sstabellini@kernel.org>,
 Bertrand Marquis <bertrand.marquis@arm.com>,
 Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>
References: <20240116143709.86584-1-julien@xen.org>
 <20240116143709.86584-2-julien@xen.org>
 <6b4bfccf-4455-40c0-b6bb-c5dd7c154ac3@amd.com>
From: Julien Grall <julien@xen.org>
In-Reply-To: <6b4bfccf-4455-40c0-b6bb-c5dd7c154ac3@amd.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit



On 17/01/2024 08:30, Michal Orzel wrote:
> Hi Julien,

Hi Michal,

> On 16/01/2024 15:37, Julien Grall wrote:
>>
>>
>> From: Julien Grall <jgrall@amazon.com>
>>
>> With the upcoming work to color Xen, the binary will not be anymore
>> physically contiguous. This will be a problem during boot as the
>> assembly code will need to work out where each piece of Xen reside.
>>
>> An easy way to solve the issue is to have all code/data accessed
>> by the secondary CPUs while the MMU is off within a single page.
>>
>> Right now, init_ttbr is used by secondary CPUs to find there page-tables
>> before the MMU is on. Yet it is currently in .data which is unlikely
>> to be within the same page as the rest of the idmap.
>>
>> Create a new section .data.idmap that will be used for variables
>> accessed by the early boot code. The first one is init_ttbr.
>>
>> The idmap is currently part of the text section and therefore will
>> be mapped read-only executable. This means that we need to temporarily
>> remap init_ttbr in order to update it.
>>
>> Introduce a new function set_init_ttbr() for this purpose so the code
>> is not duplicated between arm64 and arm32.
>>
>> Signed-off-by: Julien Grall <jgrall@amazon.com>
> Reviewed-by: Michal Orzel <michal.orzel@amd.com>
> 
> with ...
> 
>> ---
>>   xen/arch/arm/mmu/smpboot.c | 34 +++++++++++++++++++++++++++++-----
>>   xen/arch/arm/xen.lds.S     |  1 +
>>   2 files changed, 30 insertions(+), 5 deletions(-)
>>
>> diff --git a/xen/arch/arm/mmu/smpboot.c b/xen/arch/arm/mmu/smpboot.c
>> index b6fc0aae07f1..f1cf9252710c 100644
>> --- a/xen/arch/arm/mmu/smpboot.c
>> +++ b/xen/arch/arm/mmu/smpboot.c
>> @@ -9,6 +9,10 @@
>>
>>   #include <asm/setup.h>
>>
>> +/* Override macros from asm/page.h to make them work with mfn_t */
>> +#undef virt_to_mfn
>> +#define virt_to_mfn(va) _mfn(__virt_to_mfn(va))
>> +
>>   /*
>>    * Static start-of-day pagetables that we use before the allocators
>>    * are up. These are used by all CPUs during bringup before switching
>> @@ -44,7 +48,7 @@ DEFINE_BOOT_PAGE_TABLE(boot_second);
>>   DEFINE_BOOT_PAGE_TABLES(boot_third, XEN_NR_ENTRIES(2));
>>
>>   /* Non-boot CPUs use this to find the correct pagetables. */
>> -uint64_t init_ttbr;
>> +uint64_t __section(".data.idmap") init_ttbr;
> Do we need to keep the declaration in mmu/mm.h? This variable is only used in this file
> and in assembly, so maybe better to drop declaration and use asmlinkage instead?

I don't see the problem of keeping the declaration in mmu/mm.h. In any 
case, this seems to be unrelated to this patch.

> 
>>
>>   /* Clear a translation table and clean & invalidate the cache */
>>   static void clear_table(void *table)
>> @@ -68,6 +72,27 @@ static void clear_boot_pagetables(void)
>>       clear_table(boot_third);
>>   }
>>
>> +static void set_init_ttbr(lpae_t *root)
>> +{
>> +    /*
>> +     * init_ttbr is part of the identity mapping which is read-only. So
>> +     * We need to re-map the region so it can be updated
> Would you mind fixing s/So We/So we/ and add a full stop after last sentence?

I can do that.

Cheers,

-- 
Julien Grall


From xen-devel-bounces@lists.xenproject.org Wed Jan 17 12:54:58 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 17 Jan 2024 12:54:58 +0000
Received: from list by lists.xenproject.org with outflank-mailman.668451.1040669 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQ5RT-0002sR-M7; Wed, 17 Jan 2024 12:54:51 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 668451.1040669; Wed, 17 Jan 2024 12:54:51 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQ5RT-0002sK-JO; Wed, 17 Jan 2024 12:54:51 +0000
Received: by outflank-mailman (input) for mailman id 668451;
 Wed, 17 Jan 2024 12:54:51 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=nKNn=I3=cloud.com=roger.pau@srs-se1.protection.inumbo.net>)
 id 1rQ5RS-0002sE-WA
 for xen-devel@lists.xenproject.org; Wed, 17 Jan 2024 12:54:51 +0000
Received: from mail-wm1-x335.google.com (mail-wm1-x335.google.com
 [2a00:1450:4864:20::335])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 9943bc3e-b537-11ee-98f2-6d05b1d4d9a1;
 Wed, 17 Jan 2024 13:54:49 +0100 (CET)
Received: by mail-wm1-x335.google.com with SMTP id
 5b1f17b1804b1-40e60e137aaso60826255e9.0
 for <xen-devel@lists.xenproject.org>; Wed, 17 Jan 2024 04:54:49 -0800 (PST)
Received: from localhost ([213.195.127.68]) by smtp.gmail.com with ESMTPSA id
 jb13-20020a05600c54ed00b0040e418494absm21929628wmb.46.2024.01.17.04.54.48
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 17 Jan 2024 04:54:48 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 9943bc3e-b537-11ee-98f2-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1705496089; x=1706100889; darn=lists.xenproject.org;
        h=in-reply-to:content-transfer-encoding:content-disposition
         :mime-version:references:message-id:subject:cc:to:from:date:from:to
         :cc:subject:date:message-id:reply-to;
        bh=dXCFiU0YaL1AnK8tUu+koqeYBAV6Ng2H3kVkXKaw4+U=;
        b=lohJHMZkA/0exCnBbhTDmRZI9tsXzmjm4Gr2XSMBeoMmXLyuD/6/TPamxJL288xvsE
         Qg1rn6LhrUxo8ZZitS6rDmu7Wy0tbizOiTgJaqEy21rCtJ6qBLlv050E9HibrghQP2kB
         CJ1JbJYa7UgZbseIX7bBnahfwRftlKt67TTZU=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705496089; x=1706100889;
        h=in-reply-to:content-transfer-encoding:content-disposition
         :mime-version:references:message-id:subject:cc:to:from:date
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=dXCFiU0YaL1AnK8tUu+koqeYBAV6Ng2H3kVkXKaw4+U=;
        b=uCsoKEqK8AlfZa+oUkmEAnLv64nwmh/PEh3E0LKRpmn9LBqOu+T/LVcaokHq5zG5Yh
         oqzOMMgPGJ39XtC8eKFglh/czvC1ygXCX1NlhBmt8Ib/HbgWjOAH/ZPPSakT/U3wAIAq
         VOuQXz9vzaARmDO3JL9o8UpY40ZC5rVbXcTF+roHLMUPRWO6ORFt7J69+fT+rMLERDGU
         ZHZGZQ+izi6heqVVSDGe4Gvl9FWE964iNCNqDZ2Tj4o06q3vNDw9IS6TwUHYVH7aAjg2
         GChrFBS5ewwv2uJCnYkeWfL86Wlr8WMOvvjVEX1lho1BRyqscWkOgTOT1HgWxFcypD8Y
         c5MA==
X-Gm-Message-State: AOJu0YymhGwBOpf6iksOwtraxKqSFhYK/TGQbHaPoJdm72B66jhq84Zk
	VFTDoD+1FXC+Y9CZjShAfhqtvXSX4gldAg==
X-Google-Smtp-Source: AGHT+IHEUeT5dJOasaA7AvqgXg4MUZWWMdY8nnH7Sm/9aPRAYLA/igWvkyOJcaMnmMPKTXxklf4DTg==
X-Received: by 2002:a05:600c:a08:b0:40e:5303:6d22 with SMTP id z8-20020a05600c0a0800b0040e53036d22mr4708916wmp.96.1705496089061;
        Wed, 17 Jan 2024 04:54:49 -0800 (PST)
Date: Wed, 17 Jan 2024 13:54:48 +0100
From: Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
To: Jan Beulich <jbeulich@suse.com>
Cc: Patrick Plenefisch <simonpatp@gmail.com>,
	xen-devel@lists.xenproject.org, Juergen Gross <jgross@suse.com>
Subject: Re: E820 memory allocation issue on Threadripper platforms
Message-ID: <ZafOGEwms01OFaVJ@macbook>
References: <CAOCpoWdOH=xGxiQSC1c5Ueb1THxAjH4WiZbCZq-QT+d_KAk3SA@mail.gmail.com>
 <1708c3d7-662a-44bc-b9b3-4ab9f8642d7b@suse.com>
 <dcaf9d8d-ad5a-4714-936b-79ed0e587f9d@suse.com>
 <CAOCpoWeowZPuQTeBp9nu8p8CDtE=u++wN_UqRoABZtB57D50Qw@mail.gmail.com>
 <ac742d12-ec91-4215-bb42-82a145924b4f@suse.com>
 <CAOCpoWfQmkhN3hms1xuotSUZzVzR99i9cNGGU2r=yD5PjysMiQ@mail.gmail.com>
 <fa23a590-5869-4e11-8998-1d03742c5919@suse.com>
 <ZaeoWBV8IEZap2mr@macbook>
 <15dcef46-aaa8-4f71-bd5c-355001dd9188@suse.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <15dcef46-aaa8-4f71-bd5c-355001dd9188@suse.com>

On Wed, Jan 17, 2024 at 11:40:20AM +0100, Jan Beulich wrote:
> On 17.01.2024 11:13, Roger Pau Monné wrote:
> > On Wed, Jan 17, 2024 at 09:46:27AM +0100, Jan Beulich wrote:
> >> Whereas I assume the native kernel can deal with that as long as
> >> it's built with CONFIG_RELOCATABLE=y. I don't think we want to
> >> get into the business of interpreting the kernel's internal
> >> representation of the relocations needed, so it's not really
> >> clear to me what we might do in such a case. Perhaps the only way
> >> is to signal to the kernel that it needs to apply relocations
> >> itself (which in turn would require the kernel to signal to us
> >> that it's capable of doing so). Cc-ing Roger in case he has any
> >> neat idea.
> > 
> > Hm, no, not really.
> > 
> > We could do like multiboot2: the kernel provides us with some
> > placement data (min/max addresses, alignment), and Xen let's the
> > kernel deal with relocations itself.
> 
> Requiring the kernel's entry point to take a sufficiently different
> flow then compared to how it's today, I expect.

Indeed, I would expect that.

> > Additionally we could support the kernel providing a section with the
> > relocations and apply them from Xen, but that's likely hm, complicated
> > at best, as I don't even know which kinds of relocations we would have
> > to support.
> 
> If the kernel was properly linked to a PIE, there'd generally be only
> one kind of relocation (per arch) that ought to need dealing with -
> for x86-64 that's R_X86_64_RELATIVE iirc. Hence why (I suppose) they
> don't use ELF relocation structures (for being wastefully large), but
> rather a more compact custom representation. Even without building PIE
> (presumably in part not possible because of how per-CPU data needs
> dealing with), they get away with handling just very few relocs (and
> from looking at the reloc processing code I'm getting the impression
> they mistreat R_X86_64_32 as being the same as R_X86_64_32S, when it
> isn't; needing to get such quirks right is one more aspect of why I
> think we should leave relocation handling to the kernel).

Would have to look into more detail, but I think leaving any relocs
for the OS to perform would be my initial approach.

> > I'm not sure how Linux deals with this in the bare metal case, are
> > relocations done after decompressing and before jumping into the entry
> > point?
> 
> That's how it was last time I looked, yes.

I've created a gitlab ticket for it:

https://gitlab.com/xen-project/xen/-/issues/180

So that we don't forget, as I don't have time to work into this right
now, but I think it's important enough that we don't forget.

For PV it's a bit more unclear how we want to deal with it, as it's
IMO a specific Linux behavior that makes it fail to boot.

Roger.


From xen-devel-bounces@lists.xenproject.org Wed Jan 17 12:59:23 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 17 Jan 2024 12:59:23 +0000
Received: from list by lists.xenproject.org with outflank-mailman.668456.1040680 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQ5Vq-0004kj-6T; Wed, 17 Jan 2024 12:59:22 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 668456.1040680; Wed, 17 Jan 2024 12:59:22 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQ5Vq-0004kc-3O; Wed, 17 Jan 2024 12:59:22 +0000
Received: by outflank-mailman (input) for mailman id 668456;
 Wed, 17 Jan 2024 12:59:21 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=nKNn=I3=cloud.com=roger.pau@srs-se1.protection.inumbo.net>)
 id 1rQ5Vp-0004kW-4p
 for xen-devel@lists.xenproject.org; Wed, 17 Jan 2024 12:59:21 +0000
Received: from mail-wm1-x32a.google.com (mail-wm1-x32a.google.com
 [2a00:1450:4864:20::32a])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 3a9df651-b538-11ee-98f2-6d05b1d4d9a1;
 Wed, 17 Jan 2024 13:59:20 +0100 (CET)
Received: by mail-wm1-x32a.google.com with SMTP id
 5b1f17b1804b1-40e8cc3b738so2898755e9.2
 for <xen-devel@lists.xenproject.org>; Wed, 17 Jan 2024 04:59:20 -0800 (PST)
Received: from localhost ([213.195.127.68]) by smtp.gmail.com with ESMTPSA id
 e9-20020a05600c4e4900b0040e8c7b9411sm1179783wmq.19.2024.01.17.04.59.19
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 17 Jan 2024 04:59:19 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 3a9df651-b538-11ee-98f2-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1705496360; x=1706101160; darn=lists.xenproject.org;
        h=in-reply-to:content-transfer-encoding:content-disposition
         :mime-version:references:message-id:subject:cc:to:from:date:from:to
         :cc:subject:date:message-id:reply-to;
        bh=PTX1eUiRR4nspm5GZvpKIOvCezwaO1Tg0E+Cg+Y2+2E=;
        b=GjO5nVs5BqeQfkdR7sOReqWhzO54jpxwhQR2N+9eN3XaabKMq9Ur03Hh82GbGum1+v
         S6XYTCnRqbFMr2WptWeUJqekQ4OhBkkn/hqfpALneZQierPCUqdauLBpJ78p5486qv/L
         aNIjMZ8vAXIu+gF3//2uBWCw+v+3XMqWc70QI=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705496360; x=1706101160;
        h=in-reply-to:content-transfer-encoding:content-disposition
         :mime-version:references:message-id:subject:cc:to:from:date
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=PTX1eUiRR4nspm5GZvpKIOvCezwaO1Tg0E+Cg+Y2+2E=;
        b=XmVlapDGsbhL4k1/uUAGQbOsrvqrquqZ3u4YNMBfsZzeDgfXLlFzeuZvHCmWLUBcK4
         XGCgK6AjgTGlVtIV28WxmsVsqKf7md8eJXSSK3p46uJezOZNEKJfARLgsNOt2gdEOv3Q
         cNJ1R6Zb/wXs4ENtfgthThS+0MB/7lsHFZUEgcxZZkQlez+AWhqmzraIDbMVQ/EqtwiM
         vJ1IV2N7kYafIJ/lm2OQVj2KVX6cWKwhin6O13a6OY2oJPu7OBudN7vJh70S1W3nC0Jp
         k4DcRz+0e9zqd+rdzkXhMoGNZxLr6mI5w/OlXwAjM8Z/+0hSoMreDg36K/7mMa2P89tE
         PcdQ==
X-Gm-Message-State: AOJu0YyFLYZ31c1bZadlPQfbChUQcM1HEQNlrXRqCY4nkJ7Vii59mzaE
	ihyEnhl65A5B/E7kJKy5TcZSx1GIIXvtDA==
X-Google-Smtp-Source: AGHT+IHKV+dSIdDNOW01n9+iRO8tbH08k3OgdudI647JE0YVzuS48lfht/LjeCM2qk14JTp5fpuSVQ==
X-Received: by 2002:a05:600c:1f09:b0:40e:6182:43ca with SMTP id bd9-20020a05600c1f0900b0040e618243camr5464292wmb.127.1705496359737;
        Wed, 17 Jan 2024 04:59:19 -0800 (PST)
Date: Wed, 17 Jan 2024 13:59:18 +0100
From: Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
To: Marek =?utf-8?Q?Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
Cc: Jan Beulich <jbeulich@suse.com>,
	Patrick Plenefisch <simonpatp@gmail.com>,
	xen-devel@lists.xenproject.org, Juergen Gross <jgross@suse.com>
Subject: Re: E820 memory allocation issue on Threadripper platforms
Message-ID: <ZafPJvsIarRdy6BH@macbook>
References: <CAOCpoWdOH=xGxiQSC1c5Ueb1THxAjH4WiZbCZq-QT+d_KAk3SA@mail.gmail.com>
 <1708c3d7-662a-44bc-b9b3-4ab9f8642d7b@suse.com>
 <dcaf9d8d-ad5a-4714-936b-79ed0e587f9d@suse.com>
 <CAOCpoWeowZPuQTeBp9nu8p8CDtE=u++wN_UqRoABZtB57D50Qw@mail.gmail.com>
 <ac742d12-ec91-4215-bb42-82a145924b4f@suse.com>
 <ZafC3apB4rjFUOXP@mail-itl>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <ZafC3apB4rjFUOXP@mail-itl>

On Wed, Jan 17, 2024 at 01:06:53PM +0100, Marek Marczykowski-Górecki wrote:
> On Tue, Jan 16, 2024 at 10:33:26AM +0100, Jan Beulich wrote:
> > ... as per
> > 
> > (XEN)  Dom0 kernel: 64-bit, PAE, lsb, paddr 0x1000000 -> 0x4a00000
> > 
> > there's an overlap with not exactly a hole, but with an
> > EfiACPIMemoryNVS region:
> > 
> > (XEN)  0000000100000-0000003159fff type=2 attr=000000000000000f
> > (XEN)  000000315a000-0000003ffffff type=7 attr=000000000000000f
> > (XEN)  0000004000000-0000004045fff type=10 attr=000000000000000f
> > (XEN)  0000004046000-0000009afefff type=7 attr=000000000000000f
> > 
> > (the 3rd of the 4 lines). Considering there's another region higher
> > up:
> > 
> > (XEN)  00000a747f000-00000a947efff type=10 attr=000000000000000f
> > 
> > I'm inclined to say it is poor firmware (or, far less likely, boot
> > loader) behavior to clobber a rather low and entirely arbitrary RAM
> > range, rather than consolidating all such regions near the top of
> > RAM below 4Gb.
> 
> FWIW, we have two more similar reports, with different motherboards and
> firmware versions, but the common factor is Threadripper CPU. It doesn't
> exclude firmware issue (it can be an issue in some common template, like
> edk2?), but makes it a bit less likely.
> 
> > There are further such odd regions, btw:
> > 
> > (XEN)  0000009aff000-0000009ffffff type=0 attr=000000000000000f
> > ...
> > (XEN)  000000b000000-000000b020fff type=0 attr=000000000000000f
> > 
> > If the kernel image was sufficiently much larger, these could become
> > a problem as well. Otoh if the kernel wasn't built with
> > CONFIG_PHYSICAL_START=0x1000000, i.e. to start at 16Mb, but at, say,
> > 2Mb, things should apparently work even with this unusual memory
> > layout (until the kernel would grow enough to again run into that
> > very region).
> 
> Shouldn't CONFIG_RELOCATABLE=y take care of this?

No, because PV doesn't use the native entry point.

> At least in the case
> of Qubes OS, it's enabled and the issue still happens.

I think for PV it should be possible to workaround this in Linux
itself, maybe by changing the pfn -> mfn relations of the kernel
area?

Those overlaps are not real, as the loaded kernel is scattered across
mfns, and those certainly belong to RAM regions in the memory map.

For PVH it's going to require some changes in Xen itself.

Roger.


From xen-devel-bounces@lists.xenproject.org Wed Jan 17 13:04:10 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 17 Jan 2024 13:04:10 +0000
Received: from list by lists.xenproject.org with outflank-mailman.668460.1040690 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQ5aF-0006EW-N4; Wed, 17 Jan 2024 13:03:55 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 668460.1040690; Wed, 17 Jan 2024 13:03:55 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQ5aF-0006EP-KJ; Wed, 17 Jan 2024 13:03:55 +0000
Received: by outflank-mailman (input) for mailman id 668460;
 Wed, 17 Jan 2024 13:03:54 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=2QPC=I3=amd.com=Michal.Orzel@srs-se1.protection.inumbo.net>)
 id 1rQ5aE-0006EJ-9f
 for xen-devel@lists.xenproject.org; Wed, 17 Jan 2024 13:03:54 +0000
Received: from NAM10-DM6-obe.outbound.protection.outlook.com
 (mail-dm6nam10on2061a.outbound.protection.outlook.com
 [2a01:111:f400:7e88::61a])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id dd0cacc0-b538-11ee-98f2-6d05b1d4d9a1;
 Wed, 17 Jan 2024 14:03:52 +0100 (CET)
Received: from BL1PR13CA0274.namprd13.prod.outlook.com (2603:10b6:208:2bc::9)
 by MN2PR12MB4535.namprd12.prod.outlook.com (2603:10b6:208:267::20)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7181.26; Wed, 17 Jan
 2024 13:03:49 +0000
Received: from BL02EPF0001A108.namprd05.prod.outlook.com
 (2603:10b6:208:2bc:cafe::8f) by BL1PR13CA0274.outlook.office365.com
 (2603:10b6:208:2bc::9) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7202.23 via Frontend
 Transport; Wed, 17 Jan 2024 13:03:49 +0000
Received: from SATLEXMB04.amd.com (165.204.84.17) by
 BL02EPF0001A108.mail.protection.outlook.com (10.167.241.138) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.7202.16 via Frontend Transport; Wed, 17 Jan 2024 13:03:48 +0000
Received: from SATLEXMB03.amd.com (10.181.40.144) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.34; Wed, 17 Jan
 2024 07:03:48 -0600
Received: from [10.252.147.188] (10.180.168.240) by SATLEXMB03.amd.com
 (10.181.40.144) with Microsoft SMTP Server id 15.1.2507.34 via Frontend
 Transport; Wed, 17 Jan 2024 07:03:47 -0600
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: dd0cacc0-b538-11ee-98f2-6d05b1d4d9a1
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=QGLqsawdNXI5rdCyfCLtzFNkbjKZj3kBfcaERC6JbZ+P1a7lbj6sTQN/+d6qFxFzYlYhMd3roEC8VlQprtHWJhWtY5+0jcCm98wlwclTEoZrbBz08uzZJuElRbSTNHWB4Q5VjwxNJC9M8BPyeBwIpuR6GwYZ1AoewvDuwbE8Q6F5BT4Qp7ecmPf4bwhXAXUfeazhtBFJumDXNIi9g3hHamfZyDKB/OyIbGlfA9RRmrWQpErTcRpduUnaJOagc6B9S1+U59iB+nDvgEyKLuWKbAzAoIYvCBQob8HjUXmFikTFGa4suZ/eZvJB96lJr0jInyS/mWVOhleEnpq4Z7lHrg==
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=PvmzMgNPynODWXH71XdDoGarMfZmqo/9HFNbYaTXAz0=;
 b=j10y3IlSfrdLMccgzuHmx+UUNgko3Yt1glpvUN3vSCQQIRZjuOX9/d6kJGaKaqYEPvrbMXh9+wcuqVG5BHV+pce+88ix/zrB4WGgbVmoAdf779G+8UOfDnJFnUrE6Lh+d8cXQ1dlsfKNL/M7HkGeVVJ4nUse7H3rgBbcx9SgDOMTyVPXQVgj9QWuQmcr5jAENc3sK1Mw1GfmaO/lzndnI0Lq4tUJ3HkEOnQHLP56n6hqUNJeN5LZIwSR1IKNQ6rw1JjISDuhKQ8BeKJ5RgrS9ddMBVpf0vKskpPk2VcCM3q/yHjCvRAv0ZddyM8sF8hWYNRsgKwp0JEOIc1MwpQIZA==
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)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=PvmzMgNPynODWXH71XdDoGarMfZmqo/9HFNbYaTXAz0=;
 b=NdB1P8GkWUQpjOIgaSmZn6x8f6G32p57mKDJAxyb0eThHkcLd9zcEaK94Lw6jkUYnHQfh2YsYToPwY1JhMhAz/HEY/8YY1Xpbe8ukB3xBPDYk33zjAWZTtFl7cJzNWtAQVP4+sd+NYTY40oI4Au8iifb5zygtKS+fgzm6lSZJ+c=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C
Message-ID: <f91e3222-c72a-453e-9160-fdcc94211d82@amd.com>
Date: Wed, 17 Jan 2024 14:03:46 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v1 repost 1/4] arm/mmu: Move init_ttbr to a new section
 .data.idmap
Content-Language: en-US
To: Julien Grall <julien@xen.org>, <xen-devel@lists.xenproject.org>
CC: <carlo.nonato@minervasys.tech>, Julien Grall <jgrall@amazon.com>, Stefano
 Stabellini <sstabellini@kernel.org>, Bertrand Marquis
	<bertrand.marquis@arm.com>, Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>
References: <20240116143709.86584-1-julien@xen.org>
 <20240116143709.86584-2-julien@xen.org>
 <6b4bfccf-4455-40c0-b6bb-c5dd7c154ac3@amd.com>
 <ea7b5499-5b15-4c03-8187-39a9456e6ea4@xen.org>
From: Michal Orzel <michal.orzel@amd.com>
In-Reply-To: <ea7b5499-5b15-4c03-8187-39a9456e6ea4@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 7bit
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: BL02EPF0001A108:EE_|MN2PR12MB4535:EE_
X-MS-Office365-Filtering-Correlation-Id: 9da66c0d-e58d-4101-f706-08dc175cbf11
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam: BCL:0;
X-Microsoft-Antispam-Message-Info:
	WcJg7hJmNOmKMdkG2E+hAPmkoTlF7GsS+SGO9xY8TLvIuXXAp8Pe63vDOnCOoZt6+ul8xYCQRPjLk6cojEhcU/TGS2unCkIApBLn4QwdcPX72RIH4AM7d1fipnJ48QP3N6wmdzMAu0eWwqsVhg23Hf7ItU5RUzVPmjEROM8hSL1T+FIzXTClod5R2WQhfMXpuckBsqcyMb0sPwN25XcBEjpx+O5B3nMKCci/P2MafKhwqdx9gV5U6jUDLmWRE+otm5ZK/8UrrBPmhQprF2iaDzsdVwLfN75Ax5VozMK7JYs0VcKccTGg8yHn8tzcl/SrBAuqwQqdX7E1EBKmmMVw7sWvn+g4a3ipZRBS6Rb8r6MKLzXhBpNVHOOCNkq/4F+dHhMR0kEcYf7ypCbw/FiGIlDma3bivX57FJT+NfbXvkdNqWW+csIwLDLMmNm/P/VPqRlsvoMxddxcTHthnI7dWFxv/cvfqVv2pv/tdaau2QQe24bCeEGn3wRpmFnGDE41G3X44xo8BKFmfBVoaaaGyYucX399Yi6cQjV8tmH3z8fW/tthKrKL7D+q7VmIzm8OBhZm4N9/SM6WwqGd6OKeHEG5KF/+4ZC1Wkl7QQ5fcsVUrLLrDD3fGXgGWqrhcD6BVX7lde9RYP/P1jw1ziCQfOdO7FvGvDN9ppBURXxx8DifxjEmkbDbRrHCKBL+Uq5gNWu5g2OsPZ8ZlHMJPGek8Iobu7VRK1etfpMvGmyE1HbPKevob5kFOO+TljaBUPnZmuELlEq3MnBPLjKmDfNHCzmZyMRgmw3PsuII8QBWDfzLMrQ0fXF3tdHKFEQBx3t07MudAnYuwurj2vDFrTKCxg==
X-Forefront-Antispam-Report:
	CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230031)(4636009)(396003)(39860400002)(136003)(376002)(346002)(230922051799003)(451199024)(64100799003)(1800799012)(186009)(82310400011)(46966006)(36840700001)(40470700004)(40460700003)(31686004)(40480700001)(478600001)(426003)(336012)(53546011)(26005)(2616005)(86362001)(31696002)(81166007)(82740400003)(36756003)(356005)(44832011)(4326008)(36860700001)(2906002)(47076005)(41300700001)(83380400001)(5660300002)(70586007)(8676002)(70206006)(8936002)(110136005)(316002)(16576012)(54906003)(142923001)(36900700001)(43740500002);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Jan 2024 13:03:48.9354
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 9da66c0d-e58d-4101-f706-08dc175cbf11
X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com]
X-MS-Exchange-CrossTenant-AuthSource:
	BL02EPF0001A108.namprd05.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR12MB4535



On 17/01/2024 13:10, Julien Grall wrote:
> 
> 
> On 17/01/2024 08:30, Michal Orzel wrote:
>> Hi Julien,
> 
> Hi Michal,
> 
>> On 16/01/2024 15:37, Julien Grall wrote:
>>>
>>>
>>> From: Julien Grall <jgrall@amazon.com>
>>>
>>> With the upcoming work to color Xen, the binary will not be anymore
>>> physically contiguous. This will be a problem during boot as the
>>> assembly code will need to work out where each piece of Xen reside.
>>>
>>> An easy way to solve the issue is to have all code/data accessed
>>> by the secondary CPUs while the MMU is off within a single page.
>>>
>>> Right now, init_ttbr is used by secondary CPUs to find there page-tables
>>> before the MMU is on. Yet it is currently in .data which is unlikely
>>> to be within the same page as the rest of the idmap.
>>>
>>> Create a new section .data.idmap that will be used for variables
>>> accessed by the early boot code. The first one is init_ttbr.
>>>
>>> The idmap is currently part of the text section and therefore will
>>> be mapped read-only executable. This means that we need to temporarily
>>> remap init_ttbr in order to update it.
>>>
>>> Introduce a new function set_init_ttbr() for this purpose so the code
>>> is not duplicated between arm64 and arm32.
>>>
>>> Signed-off-by: Julien Grall <jgrall@amazon.com>
>> Reviewed-by: Michal Orzel <michal.orzel@amd.com>
>>
>> with ...
>>
>>> ---
>>>   xen/arch/arm/mmu/smpboot.c | 34 +++++++++++++++++++++++++++++-----
>>>   xen/arch/arm/xen.lds.S     |  1 +
>>>   2 files changed, 30 insertions(+), 5 deletions(-)
>>>
>>> diff --git a/xen/arch/arm/mmu/smpboot.c b/xen/arch/arm/mmu/smpboot.c
>>> index b6fc0aae07f1..f1cf9252710c 100644
>>> --- a/xen/arch/arm/mmu/smpboot.c
>>> +++ b/xen/arch/arm/mmu/smpboot.c
>>> @@ -9,6 +9,10 @@
>>>
>>>   #include <asm/setup.h>
>>>
>>> +/* Override macros from asm/page.h to make them work with mfn_t */
>>> +#undef virt_to_mfn
>>> +#define virt_to_mfn(va) _mfn(__virt_to_mfn(va))
>>> +
>>>   /*
>>>    * Static start-of-day pagetables that we use before the allocators
>>>    * are up. These are used by all CPUs during bringup before switching
>>> @@ -44,7 +48,7 @@ DEFINE_BOOT_PAGE_TABLE(boot_second);
>>>   DEFINE_BOOT_PAGE_TABLES(boot_third, XEN_NR_ENTRIES(2));
>>>
>>>   /* Non-boot CPUs use this to find the correct pagetables. */
>>> -uint64_t init_ttbr;
>>> +uint64_t __section(".data.idmap") init_ttbr;
>> Do we need to keep the declaration in mmu/mm.h? This variable is only used in this file
>> and in assembly, so maybe better to drop declaration and use asmlinkage instead?
> 
> I don't see the problem of keeping the declaration in mmu/mm.h. In any
> case, this seems to be unrelated to this patch.
This was just a question about the sense of a declaration that is not used/needed at all.
If you also thought so, it could be done in this patch given that it touches definition.
Since you don't, no problem whatsoever.

~Michal


From xen-devel-bounces@lists.xenproject.org Wed Jan 17 13:23:29 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 17 Jan 2024 13:23:29 +0000
Received: from list by lists.xenproject.org with outflank-mailman.668467.1040700 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQ5sv-0003GU-Cb; Wed, 17 Jan 2024 13:23:13 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 668467.1040700; Wed, 17 Jan 2024 13:23:13 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQ5sv-0003GN-9M; Wed, 17 Jan 2024 13:23:13 +0000
Received: by outflank-mailman (input) for mailman id 668467;
 Wed, 17 Jan 2024 13:23:11 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rQ5st-0003GB-7g; Wed, 17 Jan 2024 13:23:11 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rQ5ss-0008KX-Vs; Wed, 17 Jan 2024 13:23:10 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rQ5ss-0006WY-MK; Wed, 17 Jan 2024 13:23:10 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rQ5ss-0007Du-JP; Wed, 17 Jan 2024 13:23:10 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=rRgH0BMeENUtj4K8FOCPz8R5Euc5kKzr6plJ0KAgt04=; b=wgGuzGl2se0vRAsDb7ShdfwJCe
	C3RJ+DGVBwlNcuJb1w8nfovnIFTpCq/n251f5EQMGretg8omNMj+iBCJWEtvvXMq7XOBN4Q5IRmkO
	p/kjTVhfCRQ4XHbrVGV+yDeGxAjgzBA1MDkbawQ4QCamdjU75dOOKRcrBJc28L0sxipU=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184385-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [xen-unstable-smoke test] 184385: tolerable all pass - PUSHED
X-Osstest-Failures:
    xen-unstable-smoke:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    xen-unstable-smoke:test-arm64-arm64-xl-xsm:migrate-support-check:fail:nonblocking
    xen-unstable-smoke:test-arm64-arm64-xl-xsm:saverestore-support-check:fail:nonblocking
    xen-unstable-smoke:test-armhf-armhf-xl:migrate-support-check:fail:nonblocking
    xen-unstable-smoke:test-armhf-armhf-xl:saverestore-support-check:fail:nonblocking
X-Osstest-Versions-This:
    xen=730d2637a8e5b98dc8e4e366179b4cedc496b3ad
X-Osstest-Versions-That:
    xen=f3f6c500e2dbd23af77c207e2cf4b496fffa1b0d
From: osstest service owner <osstest-admin@xenproject.org>
Date: Wed, 17 Jan 2024 13:23:10 +0000

flight 184385 xen-unstable-smoke real [real]
http://logs.test-lab.xenproject.org/osstest/logs/184385/

Failures :-/ but no regressions.

Tests which did not succeed, but are not blocking:
 test-amd64-amd64-libvirt     15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-xsm      15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-xsm      16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl          15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          16 saverestore-support-check    fail   never pass

version targeted for testing:
 xen                  730d2637a8e5b98dc8e4e366179b4cedc496b3ad
baseline version:
 xen                  f3f6c500e2dbd23af77c207e2cf4b496fffa1b0d

Last test of basis   184363  2024-01-15 20:02:10 Z    1 days
Testing same since   184385  2024-01-17 10:02:19 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Andrew Cooper <andrew.cooper3@citrix.com>
  Jan Beulich <jbeulich@suse.com>
  Roger Pau Monné <roger.pau@citrix.com>

jobs:
 build-arm64-xsm                                              pass    
 build-amd64                                                  pass    
 build-armhf                                                  pass    
 build-amd64-libvirt                                          pass    
 test-armhf-armhf-xl                                          pass    
 test-arm64-arm64-xl-xsm                                      pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64                    pass    
 test-amd64-amd64-libvirt                                     pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Pushing revision :

To xenbits.xen.org:/home/xen/git/xen.git
   f3f6c500e2..730d2637a8  730d2637a8e5b98dc8e4e366179b4cedc496b3ad -> smoke


From xen-devel-bounces@lists.xenproject.org Wed Jan 17 13:40:43 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 17 Jan 2024 13:40:43 +0000
Received: from list by lists.xenproject.org with outflank-mailman.668473.1040710 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQ69m-0008Cq-OY; Wed, 17 Jan 2024 13:40:38 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 668473.1040710; Wed, 17 Jan 2024 13:40:38 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQ69m-0008Cj-M3; Wed, 17 Jan 2024 13:40:38 +0000
Received: by outflank-mailman (input) for mailman id 668473;
 Wed, 17 Jan 2024 13:40:37 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=yGoF=I3=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rQ69l-0008CW-Fh
 for xen-devel@lists.xenproject.org; Wed, 17 Jan 2024 13:40:37 +0000
Received: from mail-wm1-x336.google.com (mail-wm1-x336.google.com
 [2a00:1450:4864:20::336])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id fe608fc5-b53d-11ee-98f2-6d05b1d4d9a1;
 Wed, 17 Jan 2024 14:40:36 +0100 (CET)
Received: by mail-wm1-x336.google.com with SMTP id
 5b1f17b1804b1-40e7065b7bdso39403375e9.3
 for <xen-devel@lists.xenproject.org>; Wed, 17 Jan 2024 05:40:36 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 d6-20020adff846000000b0033725783839sm1696798wrq.110.2024.01.17.05.40.34
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 17 Jan 2024 05:40:35 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: fe608fc5-b53d-11ee-98f2-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1705498835; x=1706103635; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=G66dl/KqyndMo1mUlVWk9m/3TFebwmIfDaKJUoPv2D4=;
        b=XkNKlSvBCe1sO9Cdg5kBTh8UQLkkjLxpggAlkSLdjAdVrdM0JPOT6FjlTAk5H/IaCq
         IaCEPHbgtl1y+1RCn//qADw9aJP5UwCQslOScJ905MhUKWz3MLz8YtoVNHXP8UTzQ2n3
         lVusdoAQDgMShbxZEYQWVIh4k3tyAG4t6Hcy0SeF5IuPs8zFu6u4FfuI/KPtOEgB8d0K
         CV145m3HiZ/GHGoZSuPSs+hd5HM7W1ZKJxFWkbMEIIAXVfLJ8ZdILoZ5FlGlgo0rE8Uh
         SHAZCaR610Gh12VxYbHyDPviBtjhfaV/CX0s5FoDImgHtSvW0YMq4b8F63R1u2JIDXTZ
         lNnA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705498835; x=1706103635;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=G66dl/KqyndMo1mUlVWk9m/3TFebwmIfDaKJUoPv2D4=;
        b=KuSlS7FdSBUNJlEl6OtoTReekUTQKwHDTsc5/o0rNKSD7LT5cbAFGO0Quh40e00Rh+
         TAIJfIK+JzuG0wpBtpu6O61ueZzGWN0OL7YcDxD1K7+svYkgYW9tCOf2PWkRvugRpkhP
         sVFVkl+BTZcbMPHvrSmIIKNCEsCpQFWEb/cGKNEppjSqc8vITLFsvL61/7CobyF9E4ca
         +2yqXD2amZeShVlMc08nuVGALmhJwDwHMAOzdeFlACdm+OKbbC2jxpEF9kq9KahnAEbT
         hA333+3p0DCLkpadD+5ASoOCn88CZkHOhz3DvpTS6qysvtetsZKFZfWbSMarIf1StA7M
         gaKg==
X-Gm-Message-State: AOJu0YxhlAA/MpuDrwm+WDWpMhPjie+RA7VZALey/tlQ8/QVbx3fKcwd
	sWHzguGTMEy2YeZIyhsbmDf31Q8LRdwz
X-Google-Smtp-Source: AGHT+IHnIE97+jjPydDRhah2NKMpAvaHc/rckeUwz36BlXqrKmBCOWBK4fieCHd31ekqio/sNdUeDA==
X-Received: by 2002:a05:600c:4795:b0:40e:470a:d867 with SMTP id k21-20020a05600c479500b0040e470ad867mr3179135wmo.222.1705498835562;
        Wed, 17 Jan 2024 05:40:35 -0800 (PST)
Message-ID: <825e49e2-5270-4257-9c4f-c8f17c41267c@suse.com>
Date: Wed, 17 Jan 2024 14:40:33 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: E820 memory allocation issue on Threadripper platforms
Content-Language: en-US
To: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 =?UTF-8?Q?Marek_Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
Cc: Patrick Plenefisch <simonpatp@gmail.com>, xen-devel@lists.xenproject.org,
 Juergen Gross <jgross@suse.com>
References: <CAOCpoWdOH=xGxiQSC1c5Ueb1THxAjH4WiZbCZq-QT+d_KAk3SA@mail.gmail.com>
 <1708c3d7-662a-44bc-b9b3-4ab9f8642d7b@suse.com>
 <dcaf9d8d-ad5a-4714-936b-79ed0e587f9d@suse.com>
 <CAOCpoWeowZPuQTeBp9nu8p8CDtE=u++wN_UqRoABZtB57D50Qw@mail.gmail.com>
 <ac742d12-ec91-4215-bb42-82a145924b4f@suse.com> <ZafC3apB4rjFUOXP@mail-itl>
 <ZafPJvsIarRdy6BH@macbook>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <ZafPJvsIarRdy6BH@macbook>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 17.01.2024 13:59, Roger Pau Monné wrote:
> On Wed, Jan 17, 2024 at 01:06:53PM +0100, Marek Marczykowski-Górecki wrote:
>> On Tue, Jan 16, 2024 at 10:33:26AM +0100, Jan Beulich wrote:
>>> ... as per
>>>
>>> (XEN)  Dom0 kernel: 64-bit, PAE, lsb, paddr 0x1000000 -> 0x4a00000
>>>
>>> there's an overlap with not exactly a hole, but with an
>>> EfiACPIMemoryNVS region:
>>>
>>> (XEN)  0000000100000-0000003159fff type=2 attr=000000000000000f
>>> (XEN)  000000315a000-0000003ffffff type=7 attr=000000000000000f
>>> (XEN)  0000004000000-0000004045fff type=10 attr=000000000000000f
>>> (XEN)  0000004046000-0000009afefff type=7 attr=000000000000000f
>>>
>>> (the 3rd of the 4 lines). Considering there's another region higher
>>> up:
>>>
>>> (XEN)  00000a747f000-00000a947efff type=10 attr=000000000000000f
>>>
>>> I'm inclined to say it is poor firmware (or, far less likely, boot
>>> loader) behavior to clobber a rather low and entirely arbitrary RAM
>>> range, rather than consolidating all such regions near the top of
>>> RAM below 4Gb.
>>
>> FWIW, we have two more similar reports, with different motherboards and
>> firmware versions, but the common factor is Threadripper CPU. It doesn't
>> exclude firmware issue (it can be an issue in some common template, like
>> edk2?), but makes it a bit less likely.
>>
>>> There are further such odd regions, btw:
>>>
>>> (XEN)  0000009aff000-0000009ffffff type=0 attr=000000000000000f
>>> ...
>>> (XEN)  000000b000000-000000b020fff type=0 attr=000000000000000f
>>>
>>> If the kernel image was sufficiently much larger, these could become
>>> a problem as well. Otoh if the kernel wasn't built with
>>> CONFIG_PHYSICAL_START=0x1000000, i.e. to start at 16Mb, but at, say,
>>> 2Mb, things should apparently work even with this unusual memory
>>> layout (until the kernel would grow enough to again run into that
>>> very region).
>>
>> Shouldn't CONFIG_RELOCATABLE=y take care of this?
> 
> No, because PV doesn't use the native entry point.
> 
>> At least in the case
>> of Qubes OS, it's enabled and the issue still happens.
> 
> I think for PV it should be possible to workaround this in Linux
> itself, maybe by changing the pfn -> mfn relations of the kernel
> area?

Right, that's what I understand Jürgen is intending to look into once
he's back.

Jan

> Those overlaps are not real, as the loaded kernel is scattered across
> mfns, and those certainly belong to RAM regions in the memory map.
> 
> For PVH it's going to require some changes in Xen itself.
> 
> Roger.



From xen-devel-bounces@lists.xenproject.org Wed Jan 17 13:42:36 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 17 Jan 2024 13:42:36 +0000
Received: from list by lists.xenproject.org with outflank-mailman.668476.1040719 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQ6Bf-0000J0-33; Wed, 17 Jan 2024 13:42:35 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 668476.1040719; Wed, 17 Jan 2024 13:42:35 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQ6Bf-0000It-0Y; Wed, 17 Jan 2024 13:42:35 +0000
Received: by outflank-mailman (input) for mailman id 668476;
 Wed, 17 Jan 2024 13:42:34 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=yGoF=I3=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rQ6Be-0000In-IM
 for xen-devel@lists.xenproject.org; Wed, 17 Jan 2024 13:42:34 +0000
Received: from mail-wr1-x431.google.com (mail-wr1-x431.google.com
 [2a00:1450:4864:20::431])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 434dd71a-b53e-11ee-9b0f-b553b5be7939;
 Wed, 17 Jan 2024 14:42:31 +0100 (CET)
Received: by mail-wr1-x431.google.com with SMTP id
 ffacd0b85a97d-337c5bcf79fso283650f8f.2
 for <xen-devel@lists.xenproject.org>; Wed, 17 Jan 2024 05:42:31 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 n18-20020a05600c501200b0040e77ce8768sm10678109wmr.16.2024.01.17.05.42.30
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 17 Jan 2024 05:42:31 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 434dd71a-b53e-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1705498951; x=1706103751; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=DxbF+vzCDpdp6J+pw4BlS9ANgujZV7xOr5VIt/PUDYU=;
        b=YX61Za6F1oglIQllVMQIkFXJ5r2qtJBJDEoSLSiXs08ODuP43jzMnRLaY8YY+PxKGn
         f15VYhxOhEycL+3DnS5HWBM0CAUNRvIQrsEanKwnnnY53BBy+n+RO9uwii1nhTJ3zDeh
         JOP2P5ReUDgdpwDMvCwMAtVdDKuw9VxUYaQ1I/jTOCp/6v1607BSVKffidYrR7ZHG54t
         diGi/u+Dg+lmCws9gNXLQcfmBHFLA3YET6l39KY+n3nbxMBXtAoy0Svh6eFT62BePyTW
         nnsWMa4K+i+iI/e5TY23MBSGmFEZzUvG6IIkE0OkGltyiqbMddgTaqrR0iSB0nzR7oL1
         aUNQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705498951; x=1706103751;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=DxbF+vzCDpdp6J+pw4BlS9ANgujZV7xOr5VIt/PUDYU=;
        b=XObPXNVKQRHI2I4OTQraW4yTbb4EhuXAGQnLbpkeG+GWesIl4F8wMq026UfCsHU+AN
         u3v2BJXuPGaeOQc0WtiV/fjF5Fu/XCRo9tk+U37YT+pCZA6Kf696BKShPLVl5Kvry73j
         6XpsiEAdNP+e0dz/vl9tnrLBU1X1ZVyYpnqTJhWvNuXIua7mOOvBeIievR2rzzVD9r+y
         M5CKB0b0j4IN8vtUhoHyIqpKMht545ly2Ps1XeCLMBWFJnTRBMoAHl0zp+XTvZDCZjMS
         ffZMKQhmPLvwQjMYLV4Rdua+5KLpG0yVEN0EyYNnUR56eTBdJ2wyotlWKvQrY8yY96lW
         fF0Q==
X-Gm-Message-State: AOJu0YwJJXyzEBXiUIHprx0u6fb+xNiFVhDeK4pzj95fhE/6+1MFwRCT
	FSbGCpGD2sLZykFmK8lxy6vF+prQ2+va
X-Google-Smtp-Source: AGHT+IEhUjVp2QrYjG59Dp4SEUEFGhrcUwxBeZ+1czrqIiNCBhvpUYchHJXbYi0jsMlrW7TopkBVyg==
X-Received: by 2002:a05:600c:4583:b0:40e:4656:dc2b with SMTP id r3-20020a05600c458300b0040e4656dc2bmr4507412wmo.168.1705498951325;
        Wed, 17 Jan 2024 05:42:31 -0800 (PST)
Message-ID: <23955665-8bd8-4872-a1a5-e3a3711c9512@suse.com>
Date: Wed, 17 Jan 2024 14:42:29 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 10/34] xen/riscv: introduce bitops.h
Content-Language: en-US
To: Oleksii <oleksii.kurochko@gmail.com>
Cc: Alistair Francis <alistair.francis@wdc.com>,
 Bob Eshleman <bobbyeshleman@gmail.com>, Connor Davis
 <connojdavis@gmail.com>, Andrew Cooper <andrew.cooper3@citrix.com>,
 George Dunlap <george.dunlap@citrix.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>,
 xen-devel@lists.xenproject.org
References: <cover.1703255175.git.oleksii.kurochko@gmail.com>
 <841d59c3950970f4937da200cf8f04aa39132e14.1703255175.git.oleksii.kurochko@gmail.com>
 <23f1212a-66a8-47b0-904b-08b2ab54c72b@suse.com>
 <17d9fe474e244a15aa5955e630d553a62b0080fd.camel@gmail.com>
 <88df7ccd-8d14-4b00-900d-04cc87d9f230@suse.com>
 <863b09f03d37e96d737ab6bda4cc8923f75550fd.camel@gmail.com>
 <2e10b170-5a75-4ae0-8d2f-c6c1ad9951a5@suse.com>
 <1b20fefd125598e2bb62d516495783650da75271.camel@gmail.com>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <1b20fefd125598e2bb62d516495783650da75271.camel@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 17.01.2024 12:37, Oleksii wrote:
>>>>
>>>>>> Also you want to make sure asm-generic/bitops/bitops-bits.h
>>>>>> is
>>>>>> really in use here, or else an arch overriding / not using
>>>>>> that
>>>>>> header may end up screwed.
>>>>> I am not really understand what do you mean. Could you please
>>>>> explain a
>>>>> little bit more.
>>>>
>>>> Whichever type you use here, it needs to be in sync with
>>>> BITOP_BITS_PER_WORD. Hence you want to include the _local_
>>>> bitops-
>>>> bits.h
>>>> here, such that in case of an inconsistent override by an arch
>>>> the
>>>> compiler would complain about the two differring #define-s. (IOW
>>>> an
>>>> arch overriding BITOP_BITS_PER_WORD cannot re-use this header as-
>>>> is.)
>>>>
>>>> The same may, btw, be true for others of the new headers you add
>>>> -
>>>> the
>>>> same #include would therefore be needed there as well.
>>> Now it clear to me.
>>>
>>>
>>> It seems like BITOP_BITS_PER_WORD, BITOP_MASK, BITOP_WORD, and
>>> BITS_PER_BYTE are defined in {arm, ppc,
>>> riscv}/include/asm/bitops.h.
>>> I expected that any architecture planning to use asm-
>>> generic/bitops/bitops-bits.h would include it at the beginning of
>>> <arch>/include/asm/bitops.h, similar to what is done for RISC-V:
>>>    #ifndef _ASM_RISCV_BITOPS_H
>>>    #define _ASM_RISCV_BITOPS_H
>>>    
>>>    #include <asm/system.h>
>>>    
>>>    #include <asm-generic/bitops/bitops-bits.h>
>>>    ...
>>>
>>> But in this case, to allow architecture overrides macros, it is
>>> necessary to update asm-generic/bitops/bitops-bits.h:
>>>     #ifndef BITOP_BITS_PER_WORD
>>>     #define BITOP_BITS_PER_WORD     32
>>>     #endif
>>>    ...
>>> Therefore,  if an architecture needs to override something, it will
>>> add
>>> #define ... before #include <asm-generic/bitops/bitops-bits.h>.
>>>
>>> Does it make sense?
>>
>> Sure. But then the arch also needs to provide a corresponding typedef
>> (and bitops-bits.h the fallback one), for use wherever you use any of
>> those #define-s.
> Which one typedef is needed to provide?
> <asm-generic/bitops/bitops-bits.h> contains only macros.

A new one, to replace where right now you use "unsigned int" and I
initially said you need to use "uint32_t" instead. With what you said
earlier, uint32_t won't work there (anymore).

Jan


From xen-devel-bounces@lists.xenproject.org Wed Jan 17 14:04:40 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 17 Jan 2024 14:04:40 +0000
Received: from list by lists.xenproject.org with outflank-mailman.668481.1040729 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQ6Wr-0005Wy-RC; Wed, 17 Jan 2024 14:04:29 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 668481.1040729; Wed, 17 Jan 2024 14:04:29 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQ6Wr-0005Wr-Od; Wed, 17 Jan 2024 14:04:29 +0000
Received: by outflank-mailman (input) for mailman id 668481;
 Wed, 17 Jan 2024 14:04:28 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=3JKZ=I3=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1rQ6Wq-0005Wl-RP
 for xen-devel@lists.xenproject.org; Wed, 17 Jan 2024 14:04:28 +0000
Received: from mail-lj1-x229.google.com (mail-lj1-x229.google.com
 [2a00:1450:4864:20::229])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 51f46b48-b541-11ee-9b0f-b553b5be7939;
 Wed, 17 Jan 2024 15:04:24 +0100 (CET)
Received: by mail-lj1-x229.google.com with SMTP id
 38308e7fff4ca-2cd8b64a52dso68836461fa.2
 for <xen-devel@lists.xenproject.org>; Wed, 17 Jan 2024 06:04:24 -0800 (PST)
Received: from [10.80.67.30] (default-46-102-197-194.interdsl.co.uk.
 [46.102.197.194]) by smtp.gmail.com with ESMTPSA id
 n17-20020a0568080a1100b003bc144dc4f5sm1951829oij.1.2024.01.17.06.04.23
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 17 Jan 2024 06:04:23 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 51f46b48-b541-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1705500264; x=1706105064; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=2aemawLA3iCvzglpFZnEamU6EC3TRHK9yCISUSoUoBo=;
        b=A9uAIOZh5djxhdzduMbNFUhnUeDbDxpzRM62zx8NabBcxh+BEAcjKaWQsXXDcAYyln
         KCbKtRONKuKPX6cSTCfBn13+1+KHneY75GRs5kyq9HYt22PVlSGdEurBDG2gQIPyd8Sr
         xsAoC+N+yZmNOPU7K+TY93hKsYmMMEued+Bp4=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705500264; x=1706105064;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=2aemawLA3iCvzglpFZnEamU6EC3TRHK9yCISUSoUoBo=;
        b=P/GyHAIdz3de+HJUVaug3+EqdKHQ0zauwcn/89aQgrqhrKKX+rCkQMKZuX24MTCiPd
         /8t9Nf5UIYE1Bt8B1/slUl2+YaLHrhlEvzVEsIj3c4dd2LvjNoFa0mW9P+0MDygwrghE
         gujQqHW98cqCIMfwtRKgny0r5sgu/V7CkR53BNy62z8ZTa2T/1trVzcFdB9zLYP2V6Ux
         35Vu5+zDbt3VxnwqfgkXCI5gsaaw/H/DWw+njzDM9MXtcEnJezf59Vjafzv5hVPNlShU
         TuoQlKDqpxA3K58bxEywaAxfmZ0MfmTTOrTTEnYuStd8HSPqli+b7DOIvSirpXw8H4r/
         9tmw==
X-Gm-Message-State: AOJu0YwcoDtQ7yZJRSf+c3kf2wcbl1QkVbaUmQuZ93HPQDoSr1E3J+M5
	qclX2/GsXf87cgDAbu1NReGn1qPHoAVgqQ==
X-Google-Smtp-Source: AGHT+IFQsdMNxqv3jAZi0ECngE1NbS+4/X3M89Vy7vPOFe9a5K4RL25qVpXkQ7VmFexo308Z+nk/5A==
X-Received: by 2002:a2e:9094:0:b0:2cd:360:136b with SMTP id l20-20020a2e9094000000b002cd0360136bmr3983189ljg.91.1705500264279;
        Wed, 17 Jan 2024 06:04:24 -0800 (PST)
Message-ID: <6cc50e9d-ac06-4f1d-9d8b-dc233e0e658c@citrix.com>
Date: Wed, 17 Jan 2024 14:04:21 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] x86/MTRR: avoid several indirect calls
Content-Language: en-GB
To: Jan Beulich <jbeulich@suse.com>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Wei Liu <wl@xen.org>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger.pau@citrix.com>
References: <f5c8e38c-66cb-4f21-b66b-056061e37383@suse.com>
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 xsFNBFLhNn8BEADVhE+Hb8i0GV6mihnnr/uiQQdPF8kUoFzCOPXkf7jQ5sLYeJa0cQi6Penp
 VtiFYznTairnVsN5J+ujSTIb+OlMSJUWV4opS7WVNnxHbFTPYZVQ3erv7NKc2iVizCRZ2Kxn
 srM1oPXWRic8BIAdYOKOloF2300SL/bIpeD+x7h3w9B/qez7nOin5NzkxgFoaUeIal12pXSR
 Q354FKFoy6Vh96gc4VRqte3jw8mPuJQpfws+Pb+swvSf/i1q1+1I4jsRQQh2m6OTADHIqg2E
 ofTYAEh7R5HfPx0EXoEDMdRjOeKn8+vvkAwhviWXTHlG3R1QkbE5M/oywnZ83udJmi+lxjJ5
 YhQ5IzomvJ16H0Bq+TLyVLO/VRksp1VR9HxCzItLNCS8PdpYYz5TC204ViycobYU65WMpzWe
 LFAGn8jSS25XIpqv0Y9k87dLbctKKA14Ifw2kq5OIVu2FuX+3i446JOa2vpCI9GcjCzi3oHV
 e00bzYiHMIl0FICrNJU0Kjho8pdo0m2uxkn6SYEpogAy9pnatUlO+erL4LqFUO7GXSdBRbw5
 gNt25XTLdSFuZtMxkY3tq8MFss5QnjhehCVPEpE6y9ZjI4XB8ad1G4oBHVGK5LMsvg22PfMJ
 ISWFSHoF/B5+lHkCKWkFxZ0gZn33ju5n6/FOdEx4B8cMJt+cWwARAQABzSlBbmRyZXcgQ29v
 cGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPsLBegQTAQgAJAIbAwULCQgHAwUVCgkI
 CwUWAgMBAAIeAQIXgAUCWKD95wIZAQAKCRBlw/kGpdefoHbdD/9AIoR3k6fKl+RFiFpyAhvO
 59ttDFI7nIAnlYngev2XUR3acFElJATHSDO0ju+hqWqAb8kVijXLops0gOfqt3VPZq9cuHlh
 IMDquatGLzAadfFx2eQYIYT+FYuMoPZy/aTUazmJIDVxP7L383grjIkn+7tAv+qeDfE+txL4
 SAm1UHNvmdfgL2/lcmL3xRh7sub3nJilM93RWX1Pe5LBSDXO45uzCGEdst6uSlzYR/MEr+5Z
 JQQ32JV64zwvf/aKaagSQSQMYNX9JFgfZ3TKWC1KJQbX5ssoX/5hNLqxMcZV3TN7kU8I3kjK
 mPec9+1nECOjjJSO/h4P0sBZyIUGfguwzhEeGf4sMCuSEM4xjCnwiBwftR17sr0spYcOpqET
 ZGcAmyYcNjy6CYadNCnfR40vhhWuCfNCBzWnUW0lFoo12wb0YnzoOLjvfD6OL3JjIUJNOmJy
 RCsJ5IA/Iz33RhSVRmROu+TztwuThClw63g7+hoyewv7BemKyuU6FTVhjjW+XUWmS/FzknSi
 dAG+insr0746cTPpSkGl3KAXeWDGJzve7/SBBfyznWCMGaf8E2P1oOdIZRxHgWj0zNr1+ooF
 /PzgLPiCI4OMUttTlEKChgbUTQ+5o0P080JojqfXwbPAyumbaYcQNiH1/xYbJdOFSiBv9rpt
 TQTBLzDKXok86M7BTQRS4TZ/ARAAkgqudHsp+hd82UVkvgnlqZjzz2vyrYfz7bkPtXaGb9H4
 Rfo7mQsEQavEBdWWjbga6eMnDqtu+FC+qeTGYebToxEyp2lKDSoAsvt8w82tIlP/EbmRbDVn
 7bhjBlfRcFjVYw8uVDPptT0TV47vpoCVkTwcyb6OltJrvg/QzV9f07DJswuda1JH3/qvYu0p
 vjPnYvCq4NsqY2XSdAJ02HrdYPFtNyPEntu1n1KK+gJrstjtw7KsZ4ygXYrsm/oCBiVW/OgU
 g/XIlGErkrxe4vQvJyVwg6YH653YTX5hLLUEL1NS4TCo47RP+wi6y+TnuAL36UtK/uFyEuPy
 wwrDVcC4cIFhYSfsO0BumEI65yu7a8aHbGfq2lW251UcoU48Z27ZUUZd2Dr6O/n8poQHbaTd
 6bJJSjzGGHZVbRP9UQ3lkmkmc0+XCHmj5WhwNNYjgbbmML7y0fsJT5RgvefAIFfHBg7fTY/i
 kBEimoUsTEQz+N4hbKwo1hULfVxDJStE4sbPhjbsPCrlXf6W9CxSyQ0qmZ2bXsLQYRj2xqd1
 bpA+1o1j2N4/au1R/uSiUFjewJdT/LX1EklKDcQwpk06Af/N7VZtSfEJeRV04unbsKVXWZAk
 uAJyDDKN99ziC0Wz5kcPyVD1HNf8bgaqGDzrv3TfYjwqayRFcMf7xJaL9xXedMcAEQEAAcLB
 XwQYAQgACQUCUuE2fwIbDAAKCRBlw/kGpdefoG4XEACD1Qf/er8EA7g23HMxYWd3FXHThrVQ
 HgiGdk5Yh632vjOm9L4sd/GCEACVQKjsu98e8o3ysitFlznEns5EAAXEbITrgKWXDDUWGYxd
 pnjj2u+GkVdsOAGk0kxczX6s+VRBhpbBI2PWnOsRJgU2n10PZ3mZD4Xu9kU2IXYmuW+e5KCA
 vTArRUdCrAtIa1k01sPipPPw6dfxx2e5asy21YOytzxuWFfJTGnVxZZSCyLUO83sh6OZhJkk
 b9rxL9wPmpN/t2IPaEKoAc0FTQZS36wAMOXkBh24PQ9gaLJvfPKpNzGD8XWR5HHF0NLIJhgg
 4ZlEXQ2fVp3XrtocHqhu4UZR4koCijgB8sB7Tb0GCpwK+C4UePdFLfhKyRdSXuvY3AHJd4CP
 4JzW0Bzq/WXY3XMOzUTYApGQpnUpdOmuQSfpV9MQO+/jo7r6yPbxT7CwRS5dcQPzUiuHLK9i
 nvjREdh84qycnx0/6dDroYhp0DFv4udxuAvt1h4wGwTPRQZerSm4xaYegEFusyhbZrI0U9tJ
 B8WrhBLXDiYlyJT6zOV2yZFuW47VrLsjYnHwn27hmxTC/7tvG3euCklmkn9Sl9IAKFu29RSo
 d5bD8kMSCYsTqtTfT6W4A3qHGvIDta3ptLYpIAOD2sY3GYq2nf3Bbzx81wZK14JdDDHUX2Rs
 6+ahAA==
In-Reply-To: <f5c8e38c-66cb-4f21-b66b-056061e37383@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 17/01/2024 9:32 am, Jan Beulich wrote:
> The use of (supposedly) vendor-specific hooks is a relic from the days
> when Xen was still possible to build as 32-bit binary. There's no
> expectation that a new need for such an abstraction would arise. Convert
> mttr_if to a mere boolean and all prior calls through it to direct ones,
> thus allowing to eliminate 6 ENDBR from .text.
>
> Signed-off-by: Jan Beulich <jbeulich@suse.com>

Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>

> ---
> Strictly speaking mtrr_if could go apparently away as well, for
> effectively mirroring cpu_has_mtrr now (once mtrr_bp_init() has run).
> Replacing the variable uses would be further code churn, though.

There's loads more cleanup I'd like to do, but that doesn't invalidate
this as an improvement.

Bloat-o-meter reports:

    add/remove: 7/8 grow/shrink: 1/14 up/down: 1354/-1803 (-449)

for this change, which definitely welcome.  That said ...

> --- a/xen/arch/x86/cpu/mtrr/generic.c
> +++ b/xen/arch/x86/cpu/mtrr/generic.c
> @@ -586,21 +586,9 @@ int cf_check generic_validate_add_page(
>  }
>  
>  
> -static int cf_check generic_have_wrcomb(void)
> +bool mtrr_have_wrcomb(void)
>  {
>  	unsigned long config;
>  	rdmsrl(MSR_MTRRcap, config);
>  	return (config & (1ULL << 10));
>  }

... I do have half a mind to fix this as a followon.  We really don't
want to be re-reading the caps MSR for every call to mtrr_add_page().

~Andrew


From xen-devel-bounces@lists.xenproject.org Wed Jan 17 14:07:52 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 17 Jan 2024 14:07:52 +0000
Received: from list by lists.xenproject.org with outflank-mailman.668487.1040740 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQ6a7-0006Jk-E0; Wed, 17 Jan 2024 14:07:51 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 668487.1040740; Wed, 17 Jan 2024 14:07:51 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQ6a7-0006Jd-9P; Wed, 17 Jan 2024 14:07:51 +0000
Received: by outflank-mailman (input) for mailman id 668487;
 Wed, 17 Jan 2024 14:07:50 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rQ6a6-0006JR-GT; Wed, 17 Jan 2024 14:07:50 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rQ6a6-0000qF-BV; Wed, 17 Jan 2024 14:07:50 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rQ6a5-0000Zf-QF; Wed, 17 Jan 2024 14:07:49 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rQ6a5-0005ln-Pc; Wed, 17 Jan 2024 14:07:49 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=WOVXWyybDealMm4MyolkIZVrEYTFjhmXas7Gfjt+GRc=; b=vE7ikZTZcG6N2sys1mI1G3bLRx
	Ou+fJyggjGof/GaaZAOh7osgN8RP6iVrf5FdnIb520n9e9/WH+3SMfScj2yQLefznMbKu2mrRTS/b
	wj3q5yteL2ObXR1/z5cFLZ8uJ/VkwPl144Keds9cI/2eJM3RjD71KaBW+qw3uhkr1R7I=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184378-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [linux-linus test] 184378: regressions - FAIL
X-Osstest-Failures:
    linux-linus:test-arm64-arm64-xl-credit1:debian-install:fail:regression
    linux-linus:test-arm64-arm64-xl-xsm:debian-install:fail:regression
    linux-linus:test-arm64-arm64-xl:debian-install:fail:regression
    linux-linus:test-arm64-arm64-xl-thunderx:debian-install:fail:regression
    linux-linus:test-arm64-arm64-xl-credit2:debian-install:fail:regression
    linux-linus:test-arm64-arm64-libvirt-xsm:debian-install:fail:regression
    linux-linus:test-amd64-amd64-xl-qemuu-debianhvm-i386-xsm:debian-hvm-install:fail:heisenbug
    linux-linus:test-armhf-armhf-xl-arndale:xen-boot:fail:heisenbug
    linux-linus:test-armhf-armhf-xl-arndale:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-arndale:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    linux-linus:test-amd64-amd64-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    linux-linus:test-amd64-amd64-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-raw:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-qcow2:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-qemuu-nested-amd:debian-hvm-install/l1/l2:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-xsm:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-multivcpu:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-multivcpu:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-rtds:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-rtds:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit1:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit1:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit2:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit2:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-libvirt-raw:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-vhd:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-vhd:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-vhd:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-vhd:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-qcow2:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-qcow2:migrate-support-check:fail:nonblocking
X-Osstest-Versions-This:
    linux=052d534373b7ed33712a63d5e17b2b6cdbce84fd
X-Osstest-Versions-That:
    linux=0dd3ee31125508cd67f7e7172247f05b7fd1753a
From: osstest service owner <osstest-admin@xenproject.org>
Date: Wed, 17 Jan 2024 14:07:49 +0000

flight 184378 linux-linus real [real]
http://logs.test-lab.xenproject.org/osstest/logs/184378/

Regressions :-(

Tests which did not succeed and are blocking,
including tests which could not be run:
 test-arm64-arm64-xl-credit1  12 debian-install           fail REGR. vs. 184270
 test-arm64-arm64-xl-xsm      12 debian-install           fail REGR. vs. 184270
 test-arm64-arm64-xl          12 debian-install           fail REGR. vs. 184270
 test-arm64-arm64-xl-thunderx 12 debian-install           fail REGR. vs. 184270
 test-arm64-arm64-xl-credit2  12 debian-install           fail REGR. vs. 184270
 test-arm64-arm64-libvirt-xsm 12 debian-install           fail REGR. vs. 184270

Tests which are failing intermittently (not blocking):
 test-amd64-amd64-xl-qemuu-debianhvm-i386-xsm 12 debian-hvm-install fail in 184368 pass in 184378
 test-armhf-armhf-xl-arndale   8 xen-boot                   fail pass in 184368

Tests which did not succeed, but are not blocking:
 test-armhf-armhf-xl-arndale 15 migrate-support-check fail in 184368 never pass
 test-armhf-armhf-xl-arndale 16 saverestore-support-check fail in 184368 never pass
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 184270
 test-amd64-amd64-xl-qemut-win7-amd64 19 guest-stop            fail like 184270
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 184270
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 184270
 test-armhf-armhf-libvirt-raw 15 saverestore-support-check    fail  like 184270
 test-amd64-amd64-xl-qemut-ws16-amd64 19 guest-stop            fail like 184270
 test-armhf-armhf-libvirt-qcow2 15 saverestore-support-check   fail like 184270
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 184270
 test-amd64-amd64-libvirt     15 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-multivcpu 15 migrate-support-check        fail  never pass
 test-armhf-armhf-xl-multivcpu 16 saverestore-support-check    fail  never pass
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-armhf-armhf-libvirt     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-rtds     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-rtds     16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-credit1  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit1  16 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-raw 14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit2  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit2  16 saverestore-support-check    fail   never pass
 test-arm64-arm64-libvirt-raw 14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 15 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-vhd      14 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-vhd      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-raw 14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      15 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-qcow2 14 migrate-support-check        fail never pass
 test-armhf-armhf-xl          15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          16 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-qcow2 14 migrate-support-check        fail never pass

version targeted for testing:
 linux                052d534373b7ed33712a63d5e17b2b6cdbce84fd
baseline version:
 linux                0dd3ee31125508cd67f7e7172247f05b7fd1753a

Last test of basis   184270  2024-01-07 20:42:19 Z    9 days
Failing since        184283  2024-01-08 20:10:43 Z    8 days   15 attempts
Testing same since   184338  2024-01-13 05:40:28 Z    4 days    8 attempts

------------------------------------------------------------
1701 people touched revisions under test,
not listing them all

jobs:
 build-amd64-xsm                                              pass    
 build-arm64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64                                                  pass    
 build-arm64                                                  pass    
 build-armhf                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-arm64-libvirt                                          pass    
 build-armhf-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-pvops                                            pass    
 build-arm64-pvops                                            pass    
 build-armhf-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-amd64-amd64-xl                                          pass    
 test-amd64-coresched-amd64-xl                                pass    
 test-arm64-arm64-xl                                          fail    
 test-armhf-armhf-xl                                          pass    
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm           pass    
 test-amd64-amd64-xl-qemut-stubdom-debianhvm-amd64-xsm        pass    
 test-amd64-amd64-xl-qemut-debianhvm-i386-xsm                 pass    
 test-amd64-amd64-xl-qemuu-debianhvm-i386-xsm                 pass    
 test-amd64-amd64-libvirt-xsm                                 pass    
 test-arm64-arm64-libvirt-xsm                                 fail    
 test-amd64-amd64-xl-xsm                                      pass    
 test-arm64-arm64-xl-xsm                                      fail    
 test-amd64-amd64-qemuu-nested-amd                            fail    
 test-amd64-amd64-xl-pvhv2-amd                                pass    
 test-amd64-amd64-dom0pvh-xl-amd                              pass    
 test-amd64-amd64-xl-qemut-debianhvm-amd64                    pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64                    pass    
 test-amd64-amd64-freebsd11-amd64                             pass    
 test-amd64-amd64-freebsd12-amd64                             pass    
 test-amd64-amd64-xl-qemuu-ovmf-amd64                         pass    
 test-amd64-amd64-xl-qemut-win7-amd64                         fail    
 test-amd64-amd64-xl-qemuu-win7-amd64                         fail    
 test-amd64-amd64-xl-qemut-ws16-amd64                         fail    
 test-amd64-amd64-xl-qemuu-ws16-amd64                         fail    
 test-armhf-armhf-xl-arndale                                  fail    
 test-amd64-amd64-examine-bios                                pass    
 test-amd64-amd64-xl-credit1                                  pass    
 test-arm64-arm64-xl-credit1                                  fail    
 test-armhf-armhf-xl-credit1                                  pass    
 test-amd64-amd64-xl-credit2                                  pass    
 test-arm64-arm64-xl-credit2                                  fail    
 test-armhf-armhf-xl-credit2                                  pass    
 test-amd64-amd64-xl-qemuu-dmrestrict-amd64-dmrestrict        pass    
 test-amd64-amd64-examine                                     pass    
 test-arm64-arm64-examine                                     pass    
 test-armhf-armhf-examine                                     pass    
 test-amd64-amd64-qemuu-nested-intel                          pass    
 test-amd64-amd64-xl-pvhv2-intel                              pass    
 test-amd64-amd64-dom0pvh-xl-intel                            pass    
 test-amd64-amd64-libvirt                                     pass    
 test-armhf-armhf-libvirt                                     pass    
 test-amd64-amd64-xl-multivcpu                                pass    
 test-armhf-armhf-xl-multivcpu                                pass    
 test-amd64-amd64-pair                                        pass    
 test-amd64-amd64-libvirt-pair                                pass    
 test-amd64-amd64-xl-pvshim                                   pass    
 test-amd64-amd64-pygrub                                      pass    
 test-amd64-amd64-libvirt-qcow2                               pass    
 test-armhf-armhf-libvirt-qcow2                               pass    
 test-amd64-amd64-libvirt-raw                                 pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-armhf-armhf-libvirt-raw                                 pass    
 test-amd64-amd64-xl-rtds                                     pass    
 test-armhf-armhf-xl-rtds                                     pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64-shadow             pass    
 test-amd64-amd64-xl-shadow                                   pass    
 test-arm64-arm64-xl-thunderx                                 fail    
 test-amd64-amd64-examine-uefi                                pass    
 test-amd64-amd64-xl-vhd                                      pass    
 test-arm64-arm64-xl-vhd                                      pass    
 test-armhf-armhf-xl-vhd                                      pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Not pushing.

(No revision log; it would be 204832 lines long.)


From xen-devel-bounces@lists.xenproject.org Wed Jan 17 15:38:23 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 17 Jan 2024 15:38:23 +0000
Received: from list by lists.xenproject.org with outflank-mailman.668520.1040770 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQ7zX-0000Bw-5y; Wed, 17 Jan 2024 15:38:11 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 668520.1040770; Wed, 17 Jan 2024 15:38:11 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQ7zX-0000Bq-17; Wed, 17 Jan 2024 15:38:11 +0000
Received: by outflank-mailman (input) for mailman id 668520;
 Wed, 17 Jan 2024 15:38:09 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=zjLj=I3=cloud.com=anthony.perard@srs-se1.protection.inumbo.net>)
 id 1rQ7zV-0000BO-P6
 for xen-devel@lists.xenproject.org; Wed, 17 Jan 2024 15:38:09 +0000
Received: from mail-lf1-x12c.google.com (mail-lf1-x12c.google.com
 [2a00:1450:4864:20::12c])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 695cfbb2-b54e-11ee-9b0f-b553b5be7939;
 Wed, 17 Jan 2024 16:38:07 +0100 (CET)
Received: by mail-lf1-x12c.google.com with SMTP id
 2adb3069b0e04-50ec948ad31so11250730e87.2
 for <xen-devel@lists.xenproject.org>; Wed, 17 Jan 2024 07:38:07 -0800 (PST)
Received: from localhost.localdomain ([217.156.233.157])
 by smtp.gmail.com with ESMTPSA id
 x25-20020a1709064bd900b00a28f54aacf1sm7929097ejv.185.2024.01.17.07.38.06
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 17 Jan 2024 07:38:06 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 695cfbb2-b54e-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1705505887; x=1706110687; darn=lists.xenproject.org;
        h=content-transfer-encoding:mime-version:message-id:date:subject:cc
         :to:from:from:to:cc:subject:date:message-id:reply-to;
        bh=RFS/3qL+yKn0NP9eT18tNMMi6NeJM2kpDdrVktzGmHM=;
        b=uaZ3i/xH6rvMq7OTlsyNl5EAsvDU7VqlqE7EBByun9tfagSVtZq8iGVN2QBAL8DW2K
         hQF2qlcibjx7pINuasB6FKvleWqgcFNy3aqTmOq6E1bpPLG6ChoDhv3XUsxczFH+vkAy
         TtRbQI0vFDJVJKhVq71JYSeM3D5hfyaxi03GA=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705505887; x=1706110687;
        h=content-transfer-encoding:mime-version:message-id:date:subject:cc
         :to:from:x-gm-message-state:from:to:cc:subject:date:message-id
         :reply-to;
        bh=RFS/3qL+yKn0NP9eT18tNMMi6NeJM2kpDdrVktzGmHM=;
        b=D/IbTfc0i+0C7zH8U3tCvO5y92szcH85xQh6J/oWDOjCSonrUS3u0tuJk4QtKvPH9F
         bQpRPSAxcpCkY6eswJ4h/wMvkA7dzLOOuHf8+JF/ytao+zQN07GO+GPsgCtFD+jeS/o6
         gfg5/qQzb7iNzuTgpC1D/2hDrCNwYHaWv4PK5FMHspzEl00moHmzWKYcDG2R6w17NIke
         apJAVi0CUBc4mv/dJtZ2pctmpocQLs6CGqwLKxzhUOmc5I7Q5t8PHj5Gkp3J5l2VdCCB
         Q5GzBR1zkRFW+jeKhqHkWG/yEJjb/R7/1EXWbXoans+bk0HfUPMVl754WehZu8L+LXaR
         GIaw==
X-Gm-Message-State: AOJu0YzWTkO62axzM7FC1tC/Cteo/q1dvQ36+pDJTBb6Ep0Kq1Tg8ALm
	O+XaCyegnCrxQxqWjrIvV4u0czNOHQvhdQ==
X-Google-Smtp-Source: AGHT+IH7PyYb5jrwjPkiaxS+uIuZhoZ2bjMBmBmjY106nCfrwQcQSXaE6ucyPjLngHAA7bNitlrhnQ==
X-Received: by 2002:a05:6512:6c5:b0:50e:b265:be94 with SMTP id u5-20020a05651206c500b0050eb265be94mr5279023lff.118.1705505887092;
        Wed, 17 Jan 2024 07:38:07 -0800 (PST)
From: Anthony PERARD <anthony.perard@citrix.com>
To: minios-devel@lists.xenproject.org,
	xen-devel@lists.xenproject.org
Cc: Samuel Thibault <samuel.thibault@ens-lyon.org>,
	Juergen Gross <jgross@suse.com>,
	Anthony PERARD <anthony.perard@citrix.com>
Subject: [MINIOS PATCH] x86/mm: add EXPORT_SYMBOL() for `pt_base`
Date: Wed, 17 Jan 2024 15:37:45 +0000
Message-Id: <20240117153745.29515-1-anthony.perard@citrix.com>
X-Mailer: git-send-email 2.39.2
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Without this, building "ioemu-stubdom" fails on Debian Buster or
Bookworm, with:

/home/osstest/build.184372.build-amd64/xen/stubdom/mini-os-x86_64-ioemu/mini-os.o: in function `xenfb_pv_display_init':
ungetc.c:(.text+0x43533): undefined reference to `pt_base'

Signed-off-by: Anthony PERARD <anthony.perard@citrix.com>
---
 arch/x86/mm.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/arch/x86/mm.c b/arch/x86/mm.c
index 767a5f0..be1cf0c 100644
--- a/arch/x86/mm.c
+++ b/arch/x86/mm.c
@@ -57,6 +57,7 @@
 unsigned long *phys_to_machine_mapping;
 unsigned long mfn_zero;
 pgentry_t *pt_base;
+EXPORT_SYMBOL(pt_base);
 static unsigned long first_free_pfn;
 static unsigned long last_free_pfn;
 static unsigned long virt_kernel_area_end = VIRT_KERNEL_AREA;
-- 
Anthony PERARD



From xen-devel-bounces@lists.xenproject.org Wed Jan 17 15:53:34 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 17 Jan 2024 15:53:34 +0000
Received: from list by lists.xenproject.org with outflank-mailman.668529.1040783 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQ8EG-0004Bx-Ex; Wed, 17 Jan 2024 15:53:24 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 668529.1040783; Wed, 17 Jan 2024 15:53:24 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQ8EG-0004Bh-AA; Wed, 17 Jan 2024 15:53:24 +0000
Received: by outflank-mailman (input) for mailman id 668529;
 Wed, 17 Jan 2024 15:53:23 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=X6bF=I3=ens-lyon.org=samuel.thibault@bounce.ens-lyon.org>)
 id 1rQ8EF-0004BD-0S
 for xen-devel@lists.xenproject.org; Wed, 17 Jan 2024 15:53:23 +0000
Received: from sonata.ens-lyon.org (domu-toccata.ens-lyon.fr [140.77.166.138])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 89900669-b550-11ee-98f2-6d05b1d4d9a1;
 Wed, 17 Jan 2024 16:53:21 +0100 (CET)
Received: from localhost (localhost [127.0.0.1])
 by sonata.ens-lyon.org (Postfix) with ESMTP id 446ECA0117;
 Wed, 17 Jan 2024 16:53:20 +0100 (CET)
Received: from sonata.ens-lyon.org ([127.0.0.1])
 by localhost (sonata.ens-lyon.org [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id 2V8Nr7vA-AnU; Wed, 17 Jan 2024 16:53:20 +0100 (CET)
Received: from begin (nat-inria-interne-52-gw-01-bso.bordeaux.inria.fr
 [194.199.1.52])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange ECDHE (P-256) server-signature RSA-PSS (4096 bits) server-digest
 SHA256) (No client certificate requested)
 by sonata.ens-lyon.org (Postfix) with ESMTPSA id E72D0A0314;
 Wed, 17 Jan 2024 16:53:19 +0100 (CET)
Received: from samy by begin with local (Exim 4.97)
 (envelope-from <samuel.thibault@ens-lyon.org>)
 id 1rQ8EB-0000000A9hV-10on; Wed, 17 Jan 2024 16:53:19 +0100
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 89900669-b550-11ee-98f2-6d05b1d4d9a1
Date: Wed, 17 Jan 2024 16:53:19 +0100
From: Samuel Thibault <samuel.thibault@ens-lyon.org>
To: Anthony PERARD <anthony.perard@citrix.com>
Cc: minios-devel@lists.xenproject.org, xen-devel@lists.xenproject.org,
	Juergen Gross <jgross@suse.com>
Subject: Re: [MINIOS PATCH] x86/mm: add EXPORT_SYMBOL() for `pt_base`
Message-ID: <20240117155319.kyn4fm6jd3neo7d2@begin>
Mail-Followup-To: Samuel Thibault <samuel.thibault@ens-lyon.org>,
	Anthony PERARD <anthony.perard@citrix.com>,
	minios-devel@lists.xenproject.org, xen-devel@lists.xenproject.org,
	Juergen Gross <jgross@suse.com>
References: <20240117153745.29515-1-anthony.perard@citrix.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <20240117153745.29515-1-anthony.perard@citrix.com>
Organization: I am not organized
User-Agent: NeoMutt/20170609 (1.8.3)

Anthony PERARD, le mer. 17 janv. 2024 15:37:45 +0000, a ecrit:
> Without this, building "ioemu-stubdom" fails on Debian Buster or
> Bookworm, with:
> 
> /home/osstest/build.184372.build-amd64/xen/stubdom/mini-os-x86_64-ioemu/mini-os.o: in function `xenfb_pv_display_init':
> ungetc.c:(.text+0x43533): undefined reference to `pt_base'
> 
> Signed-off-by: Anthony PERARD <anthony.perard@citrix.com>

Reviewed-by: Samuel Thibault <samuel.thibault@ens-lyon.org>

> ---
>  arch/x86/mm.c | 1 +
>  1 file changed, 1 insertion(+)
> 
> diff --git a/arch/x86/mm.c b/arch/x86/mm.c
> index 767a5f0..be1cf0c 100644
> --- a/arch/x86/mm.c
> +++ b/arch/x86/mm.c
> @@ -57,6 +57,7 @@
>  unsigned long *phys_to_machine_mapping;
>  unsigned long mfn_zero;
>  pgentry_t *pt_base;
> +EXPORT_SYMBOL(pt_base);
>  static unsigned long first_free_pfn;
>  static unsigned long last_free_pfn;
>  static unsigned long virt_kernel_area_end = VIRT_KERNEL_AREA;
> -- 
> Anthony PERARD


From xen-devel-bounces@lists.xenproject.org Wed Jan 17 17:03:22 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 17 Jan 2024 17:03:22 +0000
Received: from list by lists.xenproject.org with outflank-mailman.668538.1040793 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQ9Jf-0000Ew-8z; Wed, 17 Jan 2024 17:03:03 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 668538.1040793; Wed, 17 Jan 2024 17:03:03 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQ9Jf-0000Ep-6U; Wed, 17 Jan 2024 17:03:03 +0000
Received: by outflank-mailman (input) for mailman id 668538;
 Wed, 17 Jan 2024 17:03:02 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=nKNn=I3=cloud.com=roger.pau@srs-se1.protection.inumbo.net>)
 id 1rQ9Je-0000Bp-4f
 for xen-devel@lists.xenproject.org; Wed, 17 Jan 2024 17:03:02 +0000
Received: from mail-wm1-x332.google.com (mail-wm1-x332.google.com
 [2a00:1450:4864:20::332])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 44c11bc6-b55a-11ee-98f2-6d05b1d4d9a1;
 Wed, 17 Jan 2024 18:03:00 +0100 (CET)
Received: by mail-wm1-x332.google.com with SMTP id
 5b1f17b1804b1-40e8cc3b738so5779165e9.2
 for <xen-devel@lists.xenproject.org>; Wed, 17 Jan 2024 09:03:00 -0800 (PST)
Received: from localhost ([213.195.127.68]) by smtp.gmail.com with ESMTPSA id
 i16-20020a5d55d0000000b00337c7423b95sm280136wrw.61.2024.01.17.09.02.58
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 17 Jan 2024 09:02:59 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 44c11bc6-b55a-11ee-98f2-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1705510979; x=1706115779; darn=lists.xenproject.org;
        h=in-reply-to:content-transfer-encoding:content-disposition
         :mime-version:references:message-id:subject:cc:to:from:date:from:to
         :cc:subject:date:message-id:reply-to;
        bh=zvp026MHz3JkS6+UT/ZQDhxHa937cgigcAz8wghcck0=;
        b=Lgb49DtKr9RKN8JmMfpT1CC9GOtXN6cpzjkjYqC0lsafKk5P9il9s+AcEKJtZGsQKE
         1Sp8ApUz+uugi7DEuKZSXN/c/TEtyVz464Pp1WbKLYApT09G5DT2btI5woA75EA8nBPz
         ACIwnYOw63cCb9gYrsrPqONS3Qg9gNx2nZQOI=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705510979; x=1706115779;
        h=in-reply-to:content-transfer-encoding:content-disposition
         :mime-version:references:message-id:subject:cc:to:from:date
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=zvp026MHz3JkS6+UT/ZQDhxHa937cgigcAz8wghcck0=;
        b=mdGde3i5XXEPAoaojf+0VeTfXexGpthRk1gf6YtzF0FGBvXl5Gg5L/1HCqOXL+ofbE
         KKIQDk+myny101kViYVrtUwW13LqBMX9pa8XKz2JUtlW3piL8lZkhSFkg/9HRpg+Ug03
         yF3djFTE8VRCgpIEEFryIr/PAiwfcLmsSWLSXzVosow8QooGlooYl0ONgw8phBhOQh64
         iLZsSJYG+F+6QpTe1sDP3n+GzRfxgzj/b5sHeI/jw0ps+BSCiZ9KPgQn8MLduPU/2zFw
         iWXKgp6kPScSVgmr0xs6GaqkZGuqhzZzPzdjp8cerSNW7j+N7Yoxta/NXmPHh4YG6E98
         U0SQ==
X-Gm-Message-State: AOJu0YxrEAK3yagdtG2ZoRsd7UJFfT4XZuS2bjFXBn/4W52vuSKUcMwu
	pUkv53DF/+2/6pBgPnRPjZ5qeuqjRgWpbw==
X-Google-Smtp-Source: AGHT+IGftehkKxIZ7xSzzAug4JJBDxAS3ii84iNehj++CNjxP/+3qQf7GcK16hPBCZRm/REfxNRfGg==
X-Received: by 2002:a05:600c:45ca:b0:40e:44af:8b1e with SMTP id s10-20020a05600c45ca00b0040e44af8b1emr5168435wmo.160.1705510979588;
        Wed, 17 Jan 2024 09:02:59 -0800 (PST)
Date: Wed, 17 Jan 2024 18:02:58 +0100
From: Roger Pau =?utf-8?B?TW9ubsOp?= <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>,
	Julien Grall <julien@xen.org>,
	Stefano Stabellini <sstabellini@kernel.org>,
	George Dunlap <george.dunlap@citrix.com>
Subject: Re: [PATCH v5 1/8] common: assembly entry point type/size annotations
Message-ID: <ZagIQkyR0SoScaAc@macbook>
References: <e4bf47ca-2ae6-1fd4-56a6-e4e777150b64@suse.com>
 <7a133ed9-9d13-4e2c-893a-00c083c8a35d@suse.com>
 <38de36da-0822-4452-9594-8d50a5a77335@suse.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <38de36da-0822-4452-9594-8d50a5a77335@suse.com>

On Mon, Jan 15, 2024 at 03:34:05PM +0100, Jan Beulich wrote:
> Recent gas versions generate minimalistic Dwarf debug info for items
> annotated as functions and having their sizes specified [1]. Furthermore
> generating live patches wants items properly annotated. "Borrow" Arm's
> END() and (remotely) derive other annotation infrastructure from
> Linux'es, for all architectures to use.
> 
> Signed-off-by: Jan Beulich <jbeulich@suse.com>

Reviewed-by: Roger Pau Monné <roger.pau@citrix.com>

> 
> [1] https://sourceware.org/git?p=binutils-gdb.git;a=commitdiff;h=591cc9fbbfd6d51131c0f1d4a92e7893edcc7a28
> ---
> v5: Drop CODE_ALIGN fallback. s/algn/align/g.
> v3: New, generalized from earlier x86-only version. LAST() (now
>     LASTARG()) moved to macros.h.
> ---
> TBD: {CODE,DATA}_ALIGN are byte granular, such that a value of 0 can be
>      specified (in case this has some special meaning on an arch;
>      conceivably it could mean to use some kind of arch default). We may
>      not strictly need that, and hence we could also make these power-
>      of-2 values (using .p2align).
> 
> Note that we can't use ALIGN() (in place of SYM_ALIGN()) as long as we
> still have ALIGN.

SYM_ALIGN seems fine for the purpose here.

> 
> Note further that FUNC()'s etc "align" parameter is intended to allow
> for only no or a single argument. If we wanted to also make the fill
> value customizable per call site, the constructs would need re-doing to
> some degree.
> 
> --- /dev/null
> +++ b/xen/include/xen/linkage.h
> @@ -0,0 +1,54 @@
> +#ifndef __LINKAGE_H__
> +#define __LINKAGE_H__
> +
> +#ifdef __ASSEMBLY__
> +
> +#include <xen/macros.h>
> +
> +/* CODE_ALIGN needs to be specified by every architecture. */
> +#ifndef CODE_FILL
> +# define CODE_FILL ~0
> +#endif
> +
> +#ifndef DATA_ALIGN
> +# define DATA_ALIGN 0
> +#endif
> +#ifndef DATA_FILL
> +# define DATA_FILL ~0

I find the fills a bit odd, compared to what we use now (nops for x86
IIRC).

Thanks, Roger.


From xen-devel-bounces@lists.xenproject.org Wed Jan 17 17:11:32 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 17 Jan 2024 17:11:32 +0000
Received: from list by lists.xenproject.org with outflank-mailman.668544.1040803 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQ9Ro-0002cd-5h; Wed, 17 Jan 2024 17:11:28 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 668544.1040803; Wed, 17 Jan 2024 17:11:28 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQ9Ro-0002cW-2X; Wed, 17 Jan 2024 17:11:28 +0000
Received: by outflank-mailman (input) for mailman id 668544;
 Wed, 17 Jan 2024 17:11:26 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=dRDO=I3=cloud.com=kelly.choi@srs-se1.protection.inumbo.net>)
 id 1rQ9Rm-0002cL-RW
 for xen-devel@lists.xenproject.org; Wed, 17 Jan 2024 17:11:26 +0000
Received: from mail-ej1-x630.google.com (mail-ej1-x630.google.com
 [2a00:1450:4864:20::630])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 71fd0e08-b55b-11ee-98f2-6d05b1d4d9a1;
 Wed, 17 Jan 2024 18:11:25 +0100 (CET)
Received: by mail-ej1-x630.google.com with SMTP id
 a640c23a62f3a-a2d7e2e7fe0so678332066b.1
 for <xen-devel@lists.xenproject.org>; Wed, 17 Jan 2024 09:11:25 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 71fd0e08-b55b-11ee-98f2-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1705511485; x=1706116285; darn=lists.xenproject.org;
        h=cc:to:subject:message-id:date:from:mime-version:from:to:cc:subject
         :date:message-id:reply-to;
        bh=nq+2887gg+xtjC3MkkUi5eTxPb1C4M1HFnUIAVlcTyM=;
        b=Wbw7hnEIVSob0LAtM889qHWn9bUi7Akrzt0tMsRY75dyvtdG+OxYL3pVcGBcjxXdZ6
         vDWXB/KoG/kN79XzqOaLdhMxWB9t3xXythiEddzzZHx88cSIZk1pOlzOtzgjv+m8PRxT
         fXs4jdsz2Vj3pc4Z70eBOGRlXN2mwewikSkuE=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705511485; x=1706116285;
        h=cc:to:subject:message-id:date:from:mime-version:x-gm-message-state
         :from:to:cc:subject:date:message-id:reply-to;
        bh=nq+2887gg+xtjC3MkkUi5eTxPb1C4M1HFnUIAVlcTyM=;
        b=hnPUw4siWH7ZdCyOMzsMJY6V5fwGUq0JuVzEgiHZNv5PmzACJuB4a6Xw59vy0S9AES
         kfuPZTCdJH3YUY4VcBBOiZ8MPTYf8mpww3Qzqcv5ImWrc6r1HfLYFlvtM8sNJ7sbryqk
         zAC7ernezYDa0ypzBDRL9ycezZM5OVIuiEISN32UgyJKAyYQ4ctGq2m8S1Jmaz6YsoEf
         83vj5SE4rZf6B9ydL+mD4VkO/N5bNfWES0EIVVzQE6GPw42bx4GNaPZOfJeaDwTzu6Zy
         6LKoTNi9j8Q5Gbat6pcXtelHdgN7NsSapWktl2gUr/M9ke/7Qcu+BRn+R2PViBSqi2J0
         06Fw==
X-Gm-Message-State: AOJu0Yw2v5j9ekLv/PwZVjNyzzmYINb0/vGdYTpeRja6fsDL99r/eHKn
	8MUlf4DzcALoldY4wAS10jHBspfv97KzSMNfGwKdiO8C0kVMEh4lnZyQf0xxcDI=
X-Google-Smtp-Source: AGHT+IErvU+F/0uGwKGzc7WHIdPXsMHg69ALK7qH6o8L7zcSzgy5kkL7NRz8jPASdxibxenmZ9jp1LLlu+bejQtlVP0=
X-Received: by 2002:a17:906:b389:b0:a2e:c311:c6fe with SMTP id
 uh9-20020a170906b38900b00a2ec311c6femr998127ejc.10.1705511484640; Wed, 17 Jan
 2024 09:11:24 -0800 (PST)
MIME-Version: 1.0
From: Kelly Choi <kelly.choi@cloud.com>
Date: Wed, 17 Jan 2024 17:10:48 +0000
Message-ID: <CAO-mL=yvVWjnOHSFSqcrknoXOqk-N3JY76qObQnzftrkmsq6xw@mail.gmail.com>
Subject: Community Process Group - Proposal
To: xen-devel@lists.xenproject.org, xen-announce@lists.xenproject.org
Cc: committers@xenproject.org, advisory-board@lists.xenproject.org
Content-Type: multipart/alternative; boundary="00000000000033e5d0060f2756a8"

--00000000000033e5d0060f2756a8
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

Hi everyone,

I've spent a bit of time talking to various individuals and the advisory
board about setting up a new Community Process Group.

A survey was recently conducted to identify how the community as a whole
feels about a certain situation. It was not intended to ban specific
wording or create a policy to do so, but more to give context that the
community has a wide range of ideas, and individuals may agree and disagree
a lot more frequently than we as individuals might think. It helps us
understand that as a community there are many situations where it is not
clear. As such, the results indicated a very even split among the
community, which indicates a larger problem as we may not always come to
agreement.

There is obvious frustration with how certain matters are handled, as some
members may want the project to move faster, whereas others like to take a
cautious approach. Given we are an open source project, differences in
opinion are likely to happen and what we don=E2=80=99t want to do is cause =
further
frustration.

*This is where I would like to propose the idea of a =E2=80=98Community Pro=
cess
Group=E2=80=99.*

A CPG can help as they will be able to advise members on similar issues
regarding community processes or appeals and decide on the best way
forward. To help with this process, I have consulted with various
individuals including some committers and conduct team members.

*What is a CPG=E2=80=99s purpose?*
In the first instance, we would expect an informal vote resolves most
disagreements. However, there will be certain circumstances where the
outcome is not always agreed on.

A CPG will be your second point of call, where you can escalate matters
quickly for a democratic solution.

Their purpose is to resolve process issues and informal vote appeals to
avoid matters going to a formal vote, but also act as a representative on
behalf of others in the community on future matters.

For example:

   - Naming conventions
   - Whether feedback requesting changes on a patch series is acceptable
   - How to move forward in case of non-actionable feedback to a patch
   series
   - How to move forward when a contributor or reviewer has not been
   responsive
   - Policy questions not related to the code of conduct

*What is their role and responsibility?*

The CPG has the authority to propose a resolution to situations where there
are disagreements, that don=E2=80=99t involve large technical decisions. Th=
eir
decision proposed should be accepted as final since members will have
discussed the best steps and come to a consensus vote.

The CPG does not aim to replace the committers' authority or the advisory
board but instead holds the authority to make decisions that are in the
best interest of the community in relation to processes. Committers still
hold the power should there be a formal escalation regarding technical
decisions, but this would be extremely rare. Advisory Board members hold
the final power regarding project and business-wide decisions.

*How are members selected?*
The CPG will be composed of 5 randomly selected members in total.
An odd number has been purposely selected to avoid an impasse during
decisions.

The criteria:
Individual members must be active contributors and are willing to help the
community succeed. As such they must be a part of the following groups:

   - Committers
   - Active Maintainers: maintainers with >=3D 20 reviews in the last 2
   releases
   - Active Contributors: contributors with >=3D 10 commits in the last 2
   releases

Future rotations of CPG members:
New members will be selected randomly for each new release to ensure
fairness.

*Expectations*
CPG members are expected to use their best judgement of what is best for
the community in terms of conflict resolution and process improvements.
They can propose an outcome that progresses the project forward.
The CPG is also expected to address wider concerns, feedback, and ideas
during a monthly meeting with all community members.

For example:

   - If someone is displaying repeated concerning behaviour that disrupts
   the community, members can ask the CPG for help on a solution. (This is
   different from a code of conduct violation which would be for serious
   offences only.)
   - Help drive discussions on how much we deviate from technical
   specifications

*Next steps*
Given this suggestion is a big change in what I hope is a positive
direction, we will require your feedback and a final formal vote on the
process, before it is implemented into the governance policies. The
specific wording can be decided after this proposal.

This will hopefully help us overcome some of the frustrations and issues we
have seen in the community from a difference in opinion as a collective
discussion will now be made. Should we need to, the process can be reviewed
to improve at later stages.

I welcome your feedback as a community on this proposal.

Many thanks,
Kelly Choi

Community Manager
Xen Project

--00000000000033e5d0060f2756a8
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><div>Hi everyone,</div><div><br></div><div>I&#39;ve spent =
a bit of time talking to various individuals and the advisory board about s=
etting up a new Community Process Group.=C2=A0</div><div><br></div><div>A s=
urvey was recently conducted to identify how the community as a whole feels=
 about a certain situation. It was not intended to ban specific wording or =
create a policy to do so, but more to give context that the community has a=
 wide range of ideas, and individuals may agree and disagree a lot more fre=
quently than we as individuals might think. It helps us understand that as =
a community there are many situations where it is not clear. As such, the r=
esults indicated a very even split among the community, which indicates a l=
arger problem as we may not always come to agreement.<br><br>There is obvio=
us frustration with how certain matters are handled, as some members may wa=
nt the project to move faster, whereas others like to take a cautious appro=
ach. Given we are an open source project, differences in opinion are likely=
 to happen and what we don=E2=80=99t want to do is cause further frustratio=
n.<br><br><b>This is where I would like to propose the idea of a =E2=80=98C=
ommunity Process Group=E2=80=99.</b><br><br>A=C2=A0<span>CPG</span>=C2=A0ca=
n help as they will be able to advise members on similar issues regarding c=
ommunity processes or appeals and decide on the best way forward. To help w=
ith this process, I have consulted with various individuals including some =
committers and conduct team members.<br><b><br>What is a=C2=A0<span>CPG</sp=
an>=E2=80=99s purpose?</b><br>In the first instance, we would expect an inf=
ormal vote resolves most disagreements. However, there will be certain circ=
umstances where the outcome is not always agreed on.<br><br>A=C2=A0<span>CP=
G</span>=C2=A0will be your second point of call, where you can escalate mat=
ters quickly for a democratic solution.<br><br>Their purpose is to resolve =
process issues and informal vote appeals to avoid matters going to a formal=
 vote, but also act as a representative on behalf of others in the communit=
y on future matters. =C2=A0<br><br>For example:<br><ul><li style=3D"margin-=
left:15px">Naming conventions</li><li style=3D"margin-left:15px">Whether fe=
edback requesting changes on a patch series is acceptable</li><li style=3D"=
margin-left:15px">How to move forward in case of non-actionable feedback to=
 a patch series</li><li style=3D"margin-left:15px">How to move forward when=
 a contributor or reviewer has not been responsive</li><li style=3D"margin-=
left:15px">Policy questions not related to the code of conduct</li></ul><b>=
What is their role and responsibility?</b><br><br>The=C2=A0<span>CPG</span>=
=C2=A0has the authority to propose a resolution to situations where there a=
re disagreements, that don=E2=80=99t involve large technical decisions. The=
ir decision proposed should be accepted as final since members will have di=
scussed the best steps and come to a consensus vote.<br><br>The=C2=A0<span>=
CPG</span>=C2=A0does not aim to replace the committers&#39; authority or th=
e advisory board but instead holds the authority to make decisions that are=
 in the best interest of the community in relation to processes. Committers=
 still hold the power should there be a formal escalation regarding technic=
al decisions, but this would be extremely rare. Advisory Board members hold=
 the final power regarding project and business-wide decisions.<br><br><b>H=
ow are members selected?</b><br>The=C2=A0<span>CPG</span>=C2=A0will be comp=
osed of 5 randomly selected members in total.<br>An odd number has been pur=
posely selected to avoid an impasse during decisions.<br><br>The criteria:<=
br>Individual members must be active contributors and are willing to help t=
he community succeed. As such they must be a part of the following groups:<=
br><ul><li style=3D"margin-left:15px">Committers</li><li style=3D"margin-le=
ft:15px">Active Maintainers: maintainers with &gt;=3D 20 reviews in the las=
t 2 releases</li><li style=3D"margin-left:15px">Active Contributors: contri=
butors with &gt;=3D 10 commits in the last 2 releases</li></ul>Future rotat=
ions of=C2=A0<span>CPG</span>=C2=A0members:<br>New members will be selected=
 randomly for each new release to ensure fairness.<br><br><b>Expectations</=
b><br><span>CPG</span>=C2=A0members are expected to use their best judgemen=
t of what is best for the community in terms of conflict resolution and pro=
cess improvements. They can propose an outcome that progresses the project =
forward.<br>The=C2=A0<span>CPG</span>=C2=A0is also expected to address wide=
r concerns, feedback, and ideas during a monthly meeting with all community=
 members.<br><br>For example:<br><ul><li style=3D"margin-left:15px">If some=
one is displaying repeated concerning behaviour that disrupts the community=
, members can ask the=C2=A0<span>CPG</span>=C2=A0for help on a solution. (T=
his is different from a code of conduct violation which would be for seriou=
s offences only.)</li><li style=3D"margin-left:15px">Help drive discussions=
 on how much we deviate from technical specifications</li></ul><b>Next step=
s</b><br>Given this suggestion is a big change in what I hope is a positive=
 direction, we will require your feedback and a final formal vote on the pr=
ocess, before it is implemented into the governance policies. The specific =
wording can be decided after this proposal.</div><div><br></div><div>This w=
ill hopefully help us overcome some of the frustrations and issues we have =
seen in the community from a difference in opinion as a collective discussi=
on will now be made. Should we need to, the process can be reviewed to impr=
ove at later stages.<br></div><div><br></div><div>I welcome your feedback a=
s a community on this proposal.=C2=A0<br><br></div><div><div dir=3D"ltr" cl=
ass=3D"gmail_signature" data-smartmail=3D"gmail_signature"><div dir=3D"ltr"=
><div>Many thanks,</div><div>Kelly Choi</div><div><br></div><div><div style=
=3D"color:rgb(136,136,136)">Community Manager</div><div style=3D"color:rgb(=
136,136,136)">Xen Project=C2=A0<br></div></div></div></div></div></div>

--00000000000033e5d0060f2756a8--


From xen-devel-bounces@lists.xenproject.org Wed Jan 17 17:38:40 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 17 Jan 2024 17:38:40 +0000
Received: from list by lists.xenproject.org with outflank-mailman.668553.1040827 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQ9s6-0007HZ-IL; Wed, 17 Jan 2024 17:38:38 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 668553.1040827; Wed, 17 Jan 2024 17:38:38 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQ9s6-0007HS-Fd; Wed, 17 Jan 2024 17:38:38 +0000
Received: by outflank-mailman (input) for mailman id 668553;
 Wed, 17 Jan 2024 17:38:37 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=YOw+=I3=minervasys.tech=carlo.nonato@srs-se1.protection.inumbo.net>)
 id 1rQ9s4-00072k-Ui
 for xen-devel@lists.xenproject.org; Wed, 17 Jan 2024 17:38:36 +0000
Received: from mail-ed1-x52e.google.com (mail-ed1-x52e.google.com
 [2a00:1450:4864:20::52e])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 3d5a2d50-b55f-11ee-9b0f-b553b5be7939;
 Wed, 17 Jan 2024 18:38:35 +0100 (CET)
Received: by mail-ed1-x52e.google.com with SMTP id
 4fb4d7f45d1cf-559533e2503so4009445a12.1
 for <xen-devel@lists.xenproject.org>; Wed, 17 Jan 2024 09:38:35 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 3d5a2d50-b55f-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=minervasys-tech.20230601.gappssmtp.com; s=20230601; t=1705513115; x=1706117915; darn=lists.xenproject.org;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:from:to:cc:subject:date
         :message-id:reply-to;
        bh=udhYuHO7LR5zOfxSbqI0nC0Yi4nXzJrXwmuJ9ptHxCQ=;
        b=YW4S4zUxwja6fPBrG5JGi19w938N3d9HsX87ZkydDOsadUctY0SkcqxRcPf9q8zbGQ
         G9+GZDYDtgBdY13z0y/LCSLOPPJrczz4JTYGKxRh/ZkTBi0PTWRlCUlRuduvNayOo1bm
         bBff+/ZpC97ttTuXkjuTeM6yDMR0MEEt0TNvKFFBURTHGMU2HU9rBReqKK7SFG3qfEG/
         dIPR7L3u5KI96l2VhNQRoaeY6dCHSQgIQDeVEzVUgsBmMoB82vUgcEcgz1GQHGzoPX1N
         lTVxqozzQfo53/Pk1w/jBo8qlYlwxN5ncl3lstBMeH4IEef9j2B3H+agY7DYMYlsWtij
         tRHA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705513115; x=1706117915;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to;
        bh=udhYuHO7LR5zOfxSbqI0nC0Yi4nXzJrXwmuJ9ptHxCQ=;
        b=q5Anf28MREROPNZibkzQkOtyg21MobHm2S8w+r/vGX5GCWvEZxi+F4RxbppRhSvkh/
         5WdNp7pxXjx9DE3b1dkdkeTDu1iU8Dak8PVJMtcA72G14pmQ8FmWG8fpjoTp8dim2M7/
         ON89efjHqa42BnG8lYYZDPwwJnheL0ZNepsv1k5CiAfUEjCjX0kDuWd2KRMEOrxwfsYW
         WNicAiZTz3c6BCqrQ9EAKit46XBFoP53BTQgZlnACpdLhIgqZGhX/yMnIgoWyiiGM6fj
         ZwQK6NmHr7uVsmsq5s8pF8kMBS9jlcaFJ1y67EWS2Z/wW8KwYTqlcCj5a/iefjO/H9R1
         FHoQ==
X-Gm-Message-State: AOJu0YzIVf3fgBYZTBcaAp76nK70yvy3AEUTvWv/RUFMZWJVXQ0036FA
	64cmUBTlDKaq0LOtaJ7V9P1SHRFBPsZtFpBB4T2S8edyAQDIeg==
X-Google-Smtp-Source: AGHT+IFnWDz2C6kGGZtUf+SfpFjLt+eQRu1C3jv3Mlswq2E8RJwtwNADUxzd4Tvn3YEswyoC6dsZm+3E2pa+O2ToI/4=
X-Received: by 2002:aa7:c35a:0:b0:54c:4837:9a99 with SMTP id
 j26-20020aa7c35a000000b0054c48379a99mr4686710edr.64.1705513114746; Wed, 17
 Jan 2024 09:38:34 -0800 (PST)
MIME-Version: 1.0
References: <20240116143709.86584-1-julien@xen.org> <20240116143709.86584-5-julien@xen.org>
In-Reply-To: <20240116143709.86584-5-julien@xen.org>
From: Carlo Nonato <carlo.nonato@minervasys.tech>
Date: Wed, 17 Jan 2024 18:38:24 +0100
Message-ID: <CAG+AhRUox+jMhUnbGo6tngxji8nOcncm+Nx_76UuhTKKPfae8g@mail.gmail.com>
Subject: Re: [PATCH v1 repost 4/4] [DO NOT COMMIT] xen/arm: Create a
 trampoline for secondary boot CPUs
To: Julien Grall <julien@xen.org>
Cc: xen-devel@lists.xenproject.org, Julien Grall <jgrall@amazon.com>, 
	Stefano Stabellini <sstabellini@kernel.org>, Bertrand Marquis <bertrand.marquis@arm.com>, 
	Michal Orzel <michal.orzel@amd.com>, Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

Hi Julien

On Tue, Jan 16, 2024 at 3:37=E2=80=AFPM Julien Grall <julien@xen.org> wrote=
:
>
> From: Julien Grall <jgrall@amazon.com>
>
> In order to confirm the early boot code is self-contained, allocate a
> separate trampoline region for secondary to boot from it.
>
> Signed-off-by: Julien Grall <jgrall@amazon.com>
> ---
>  xen/arch/arm/arm64/mmu/mm.c |  7 +++++++
>  xen/arch/arm/mmu/smpboot.c  |  4 +++-
>  xen/arch/arm/psci.c         |  5 ++++-
>  xen/arch/arm/smpboot.c      | 15 ++++++++++++++-
>  4 files changed, 28 insertions(+), 3 deletions(-)
>
> diff --git a/xen/arch/arm/arm64/mmu/mm.c b/xen/arch/arm/arm64/mmu/mm.c
> index d2651c948698..3c4988dc75d1 100644
> --- a/xen/arch/arm/arm64/mmu/mm.c
> +++ b/xen/arch/arm/arm64/mmu/mm.c
> @@ -110,11 +110,18 @@ void __init arch_setup_page_tables(void)
>      prepare_runtime_identity_mapping();
>  }
>
> +extern mfn_t trampoline_start;
> +
>  void update_identity_mapping(bool enable)
>  {
>      paddr_t id_addr =3D virt_to_maddr(_start);
>      int rc;
>
> +    if ( !mfn_eq(trampoline_start, INVALID_MFN) )
> +    {
> +        id_addr =3D mfn_to_maddr(trampoline_start);
> +    }
> +
>      if ( enable )
>          rc =3D map_pages_to_xen(id_addr, maddr_to_mfn(id_addr), 1,
>                                PAGE_HYPERVISOR_RX);
> diff --git a/xen/arch/arm/mmu/smpboot.c b/xen/arch/arm/mmu/smpboot.c
> index f1cf9252710c..d768dfe065a5 100644
> --- a/xen/arch/arm/mmu/smpboot.c
> +++ b/xen/arch/arm/mmu/smpboot.c
> @@ -72,13 +72,15 @@ static void clear_boot_pagetables(void)
>      clear_table(boot_third);
>  }
>
> +extern mfn_t trampoline_start;
> +
>  static void set_init_ttbr(lpae_t *root)
>  {
>      /*
>       * init_ttbr is part of the identity mapping which is read-only. So
>       * We need to re-map the region so it can be updated
>       */
> -    void *ptr =3D map_domain_page(virt_to_mfn(&init_ttbr));
> +    void *ptr =3D map_domain_page(trampoline_start);
>
>      ptr +=3D PAGE_OFFSET(&init_ttbr);
>
> diff --git a/xen/arch/arm/psci.c b/xen/arch/arm/psci.c
> index 695d2fa1f1b5..a00574d559d6 100644
> --- a/xen/arch/arm/psci.c
> +++ b/xen/arch/arm/psci.c
> @@ -36,11 +36,14 @@ static uint32_t psci_cpu_on_nr;
>
>  #define PSCI_RET(res)   ((int32_t)(res).a0)
>
> +extern mfn_t trampoline_start;
> +
>  int call_psci_cpu_on(int cpu)
>  {
>      struct arm_smccc_res res;
>
> -    arm_smccc_smc(psci_cpu_on_nr, cpu_logical_map(cpu), __pa(init_second=
ary),
> +    arm_smccc_smc(psci_cpu_on_nr, cpu_logical_map(cpu),
> +                  mfn_to_maddr(trampoline_start) + PAGE_OFFSET(init_seco=
ndary),
>                    &res);
>
>      return PSCI_RET(res);
> diff --git a/xen/arch/arm/smpboot.c b/xen/arch/arm/smpboot.c
> index 8d508a1bb258..ef84b73ebd46 100644
> --- a/xen/arch/arm/smpboot.c
> +++ b/xen/arch/arm/smpboot.c
> @@ -293,10 +293,13 @@ unsigned int __init smp_get_max_cpus(void)
>      return cpus;
>  }
>
> +mfn_t trampoline_start =3D INVALID_MFN_INITIALIZER;
> +
>  void __init
>  smp_prepare_cpus(void)
>  {
>      int rc;
> +    void *trampoline;
>
>      cpumask_copy(&cpu_present_map, &cpu_possible_map);
>
> @@ -304,6 +307,16 @@ smp_prepare_cpus(void)
>      if ( rc )
>          panic("Unable to allocate CPU sibling/core maps\n");
>
> +    /* Create a trampoline to confirm early boot code is self-contained =
*/
> +    trampoline =3D alloc_xenheap_page();
> +    BUG_ON(!trampoline);
> +
> +    memcpy(trampoline, _start, PAGE_SIZE);
> +    clean_dcache_va_range(trampoline, PAGE_SIZE);
> +    invalidate_icache();
> +
> +    printk("Trampoline 0x%lx\n", virt_to_maddr(trampoline));

Here PRIx64 is needed for arm32.

> +    trampoline_start =3D virt_to_mfn(trampoline);
>  }
>
>  /* Boot the current CPU */
> @@ -439,7 +452,7 @@ static void set_smp_up_cpu(unsigned long mpidr)
>       * smp_up_cpu is part of the identity mapping which is read-only. So
>       * We need to re-map the region so it can be updated.
>       */
> -    void *ptr =3D map_domain_page(virt_to_mfn(&smp_up_cpu));
> +    void *ptr =3D map_domain_page(trampoline_start);
>
>      ptr +=3D PAGE_OFFSET(&smp_up_cpu);
>
> --
> 2.40.1
>

Thanks.


From xen-devel-bounces@lists.xenproject.org Wed Jan 17 17:38:40 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 17 Jan 2024 17:38:40 +0000
Received: from list by lists.xenproject.org with outflank-mailman.668552.1040816 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQ9s2-00072x-CT; Wed, 17 Jan 2024 17:38:34 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 668552.1040816; Wed, 17 Jan 2024 17:38:34 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQ9s2-00072q-8k; Wed, 17 Jan 2024 17:38:34 +0000
Received: by outflank-mailman (input) for mailman id 668552;
 Wed, 17 Jan 2024 17:38:33 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=YOw+=I3=minervasys.tech=carlo.nonato@srs-se1.protection.inumbo.net>)
 id 1rQ9s0-00072k-UR
 for xen-devel@lists.xenproject.org; Wed, 17 Jan 2024 17:38:33 +0000
Received: from mail-lj1-x229.google.com (mail-lj1-x229.google.com
 [2a00:1450:4864:20::229])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 3a71545b-b55f-11ee-9b0f-b553b5be7939;
 Wed, 17 Jan 2024 18:38:30 +0100 (CET)
Received: by mail-lj1-x229.google.com with SMTP id
 38308e7fff4ca-2cda523725bso46571211fa.3
 for <xen-devel@lists.xenproject.org>; Wed, 17 Jan 2024 09:38:30 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 3a71545b-b55f-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=minervasys-tech.20230601.gappssmtp.com; s=20230601; t=1705513110; x=1706117910; darn=lists.xenproject.org;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:from:to:cc:subject:date
         :message-id:reply-to;
        bh=mqbnsBP4t7UwdmQ/R8kSFwC+93jy86+5vICURmTzK6c=;
        b=Ndyh4OOU5zyfePyfM7A9p4r+iYhctN2dDkMdnVvKA1JGIfxNnH0+BihjPyb32ybpl5
         hZj7b8kqQ8GCR5DcBB+x5pU3sF+dPDpH2yEX8vwrMCkgBa5X5jBHoUVCG05DhsS9bEBq
         aznPKLcA4iDd5U69plcon6PASy/OCdR8khDMOR1S3CvdWkSMZUT6ZkHPjGZqNJHm5RMY
         TtdNybGJLaDy8q2hTI6NVsDccvvZ0XUa5eT6YkGEOO74P+iYFGydb+elrhVh3e4ejpyU
         vozwj7YTTTGZ+AK89OzHrOnQW5wO95wuhR+ckj5zR+hW988rPE6T7A8x8hYO9KCVXrlw
         fQ5w==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705513110; x=1706117910;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to;
        bh=mqbnsBP4t7UwdmQ/R8kSFwC+93jy86+5vICURmTzK6c=;
        b=vE5032Wj+VoejUTawQlVfn4KPS4a2WlecaF5HGY1Y/i4zYKEaCCu2RgW6lSbwPPWH/
         EguNzIt0+CmtivJ6IOXUI0J77HXeJt/PF7e7BOkmZ+gd2NNRL+D5GsbckC6NHHEKhiSo
         ZE2kKt7uU9QvfGyM8DC9/LAYmcDctJmlWHChm+BgPtmIOe5c/D41xpRMropSVKoZXB9y
         YhNHl8y4obDzEw9if44GpFVKW8EGQHgzeoAX4rwfcgyOdeiLg6p5LqwK3wQO6WKRVk+C
         Sx2WAonrc0I+sap1ASL+lJYutK4k6gypqlS92KtAFC2svjqjm+bGaK3FWIrbG6qS6IH1
         tBUg==
X-Gm-Message-State: AOJu0YyUu57SDS15tGgE2ease8tyBsaDijv5NuI68wDjSslYrygEMmJU
	9MtyTQkipyzw73E2aOwAE9q1e+USs49BjrpIklyyeeh34pwJxQ==
X-Google-Smtp-Source: AGHT+IFNjxGgZ6cvXeh1KXP2G/ox7oU3awegzTSWBjIR2DnzV4wi7xBwSyrSSNSWtMcEbwm/YjYM+/TI/PbjsCw550A=
X-Received: by 2002:a2e:8749:0:b0:2cd:dfe:74ca with SMTP id
 q9-20020a2e8749000000b002cd0dfe74camr2536657ljj.19.1705513109745; Wed, 17 Jan
 2024 09:38:29 -0800 (PST)
MIME-Version: 1.0
References: <20240102095138.17933-1-carlo.nonato@minervasys.tech>
 <20240102095138.17933-14-carlo.nonato@minervasys.tech> <4553cc26-deb5-42ed-87b9-6cba2a5099eb@xen.org>
 <CAG+AhRXHfGJksqUrPXoHqNze+D654jJV0kVYBZaPLYwccdEz5Q@mail.gmail.com>
 <aa064f8f-d30e-4ac1-9239-daba5a806794@xen.org> <CAG+AhRXUPvKGu-y9qbVmhc0_ThCdxFvG=BYwCQMBH=mjo45qHw@mail.gmail.com>
 <985e1a2a-45eb-496c-8043-5f0c3c9f7766@xen.org> <CAG+AhRVKbM-n8ieg-CMbRG-4RgUXMSZL=ZER8EAWvGJgpEzUwA@mail.gmail.com>
 <ca2a64f8-ac0d-4b61-8f48-34478371bcbc@xen.org> <5b017673-3b51-4da2-86dd-ab1a62fbc1be@xen.org>
In-Reply-To: <5b017673-3b51-4da2-86dd-ab1a62fbc1be@xen.org>
From: Carlo Nonato <carlo.nonato@minervasys.tech>
Date: Wed, 17 Jan 2024 18:38:18 +0100
Message-ID: <CAG+AhRVQrB4DZLuRPBvEnn7kr3r0k=hp3bn2a_k-Aqi6GhOQhQ@mail.gmail.com>
Subject: Re: [PATCH v5 13/13] xen/arm: add cache coloring support for Xen
To: Julien Grall <julien@xen.org>
Cc: xen-devel@lists.xenproject.org, 
	Stefano Stabellini <sstabellini@kernel.org>, Bertrand Marquis <bertrand.marquis@arm.com>, 
	Michal Orzel <michal.orzel@amd.com>, Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>, 
	Marco Solieri <marco.solieri@minervasys.tech>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

Hi Julien,

On Tue, Jan 16, 2024 at 12:59=E2=80=AFPM Julien Grall <julien@xen.org> wrot=
e:
>
> Hi,
>
> On 15/01/2024 16:16, Julien Grall wrote:
> > On 15/01/2024 15:43, Carlo Nonato wrote:
> >> Hi Julien,
> >
> > Hi Carlo,
> >
> >> On Mon, Jan 15, 2024 at 12:18=E2=80=AFPM Julien Grall <julien@xen.org>=
 wrote:
> >>> On 15/01/2024 10:11, Carlo Nonato wrote:
> >>>> I understand what you're talking about, and it seems reasonable to
> >>>> get rid of
> >>>> xen_colored_temp[] and create_llc_coloring_mappings() since in the
> >>>> end they
> >>>> serve the purpose of mapping the physically colored space that is
> >>>> already
> >>>> mapped using xen_xenmap[] pagetables.
> >>>> What I don't understand is then how to copy/relocate Xen since I
> >>>> don't have a
> >>>> destination virtual space anymore to use in relocate_xen().
> >>>
> >>> You will need to link xen_xenmap[] in boot_second[...] as well. With
> >>> that, you will be able to access the new Xen through the temporary ar=
ea.
> >>
> >> Wouldn't it result in overwriting the current virtual space mapping?
> >> boot_second is the live page table and if I link xen_xenmap[] then
> >> XEN_VIRT_START would point to the new colored space which is still
> >> empty at
> >> this stage...
> >
> > If you link at XEN_VIRT_START then yes. But you could link at
> > BOOT_RELOC_VIRT_START like you already do today.
> >
> >>
> >>> [...]
> >>>
> >>>>> Note that this means the init_ttbr cannot be written directly. But =
you
> >>>>> can solve this problem by re-mapping the address.
> >>>>
> >>>> How to remap a single address?
> >>>
> >>> You should be able to use map_domain_page() to map the page where
> >>> init_ttbr is.
> >>>
> >>>> And if moving init_ttbr in the identity-mapped area means that it's
> >>>> no longer
> >>>> writable, so that I need to remap it, why moving it in that area in
> >>>> the first
> >>>> place. Again I think I'm missing something.
> >>>
> >>> The goal is to have everything used (code, data) before the MMU is
> >>> turned on residing in a single page. So secondary CPUs can directly j=
ump
> >>> to the colored Xen without any trouble.
> >>
> >> This is what confuses me. Why having everything on a single page makes
> >> secondary cpus able to jump directly to colored Xen? (also see below)
> >
> > Because the code running with the MMU off can access easily access
> > everything.
> >
> >>
> >>>>>>
> >>>>>> 3) To access the identity mapping area I would need some accessor
> >>>>>> that takes
> >>>>>> an address and returns it + phys_offset, or is there a better way
> >>>>>> to do it?
> >>>>>
> >>>>> I am not sure I understand what you mean. Can you clarify?
> >>>>
> >>>> In my idea, I would use the identity mapping to access the "old"
> >>>> variables,
> >>>> where "old" means non physically colored. init_ttbr is an example. W=
hen
> >>>> Xen it's copied on the new physical space, init_ttbr is copied with
> >>>> it and
> >>>> if the boot cpu modifies this variable, it's actually touching the
> >>>> colored
> >>>> one and not the old one. This means that secondary CPUs that still
> >>>> haven't
> >>>> jumped to the new space, won't be able to see the new value and will
> >>>> never
> >>>> go online.
> >>>> So to access this "old" init_ttbr variable I need it's identity
> >>>> address,
> >>>> which is its current virtual address + some physical offset. I was
> >>>> asking
> >>>> you if this is the right approach to use the identity mapping.
> >>>
> >>> Secondary CPUs would directly start on the colored Xen. So they will =
be
> >>> able to access the "new" init_ttbr & co.
> >>
> >> How can this be true? I mean, in call_psci_cpu_on() I can start those
> >> CPUs in
> >> the colored space, but they still use the boot_* pagetables
> >
> > Are you looking at the 64-bit or 32-bit code? For 64-bit, staging is no=
t
> > using boot_* pagetable anymore for secondary CPUs. Instead, they
> > directly jump to the runtime page-tables.
> >
> >> and there I can't
> >> easily link the new colored space, or, at least, I'm not succeding in
> >> doing
> >> that. What I tried at the moment is to link xen_xenmap in boot_second
> >> after
> >> switch_ttbr because of the problem I described above. But then seconda=
ry
> >> CPUs never go online...
> >
> > It would be helpful if you share some code.
> >
> >>
> >>> [...]
> >>>
> >>>>> ... as I wrote ealier your current approach seems to have a flaw.
> >>>>> As you
> >>>>> overwrite xen_bootmodule->{start, size}. setup_mm() will end up to =
add
> >>>>> the old Xen region to the boot allocator. This is before any second=
ary
> >>>>> CPUs are booted up.
> >>>>>
> >>>>> IOW, the allocator may provide some memory from the old Xen and
> >>>>> nothing
> >>>>> good will happen from that.
> >>>>>
> >>>>> The only way to solve it is to add another module. So the memory is
> >>>>> skipped by setup_mm(). However see below.
> >>>>>
> >>>>>>
> >>>>>> Yes that should be memory that in the end would not be needed so
> >>>>>> it must
> >>>>>> return to the boot-allocator (if that's what you mean). But how to=
 do
> >>>>>> that?
> >>>>>
> >>>>> You can't really discard the old temporary Xen. This may work today
> >>>>> because we don't support CPU hotplug or suspend/resume. But there w=
as
> >>>>> some series on the ML to enable it and I don't see any reason why
> >>>>> someone would not want to use the features with cache coloring.
> >>>>>
> >>>>> So the old temporary Xen would have to be kept around forever. This=
 is
> >>>>> up to 8MB of memory wasted.
> >>>>>
> >>>>> The right approach is to have the secondary CPU boot code
> >>>>> (including the
> >>>>> variables it is using) fitting in the same page (or possibly
> >>>>> multiple so
> >>>>> long this is small and physically contiguous). With that it doesn't
> >>>>> matter where is the trampoline, it could stay at the old place, but=
 we
> >>>>> would only waste a few pages rather than up 8MB as it is today.
> >>>>
> >>>> So what are you suggesting is to create a new section in the linker
> >>>> script
> >>>> for the trampoline code and data,
> >>>
> >>> We already have a section for that in place (see .idmap.*) which happ=
ens
> >>> to be at the beginning of Xen. Right now, the section is in text. Whi=
ch
> >>> is why it is read-only executable.
> >>>
> >>>> then in setup_mm() we would skip this
> >>>> memory?
> >>>
> >>> We should not need this. Secondary boot CPUs should boot direclty on =
the
> >>> colored Xen.
> >>>
> >>>> Am I following you correctly? Sorry those topics are a little out
> >>>> of my preparation as you probably already guessed.
> >>>
> >>> No worries. I am happy to go in as much details as necessary. I can a=
lso
> >>> attempt to write a patch if that helps. (unless someone else in the A=
rm
> >>> maintainers want to give a try).
> >>
> >> Yes this would help. Thanks.
> >
> > I will try to have a look this evening. If I can't, it may have to wait
> > a couple of weeks unless someone has time before hand.
>
> Series sent [1]. This is not fully complete for cache coloring. You will
> need to modify the identity functions to take into account that the
> identity map will be different.
>
> You will also want to check the new identity map area is still below
> (see the check in prepare_boot_identity_mapping()).
>
> Cheers,
>
> [1] https://lore.kernel.org/xen-devel/20240116115509.77545-1-julien@xen.o=
rg/

Thank you very much for your help. I succeeded in applying your patches and
reworking setup_pagetables() as we discussed previously. I dropped
xen_colored_temp[], the temporary mapping at the end of setup_pagetables()
and remove_llc_coloring_mappings().

Now, what to do with your patches? Will you push those before this series?

I still have a few other minor problems to face in other patches of my seri=
es,
but then I should be ready for v6.

> --
> Julien Grall

Thanks.


From xen-devel-bounces@lists.xenproject.org Wed Jan 17 20:13:57 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 17 Jan 2024 20:13:57 +0000
Received: from list by lists.xenproject.org with outflank-mailman.668562.1040837 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQCI7-0007jC-ML; Wed, 17 Jan 2024 20:13:39 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 668562.1040837; Wed, 17 Jan 2024 20:13:39 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQCI7-0007j5-IE; Wed, 17 Jan 2024 20:13:39 +0000
Received: by outflank-mailman (input) for mailman id 668562;
 Wed, 17 Jan 2024 20:13:38 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rQCI6-0007iv-BM; Wed, 17 Jan 2024 20:13:38 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rQCI5-0007sc-T9; Wed, 17 Jan 2024 20:13:37 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rQCI5-0005br-B3; Wed, 17 Jan 2024 20:13:37 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rQCI5-00016E-9V; Wed, 17 Jan 2024 20:13:37 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=iKvJxnCf4Icl9cx1opbpwSXERv18ZdOc+efse2dZqcU=; b=2CziVpv1uhRCu/FwuXw4F2EZyu
	ObAf6njHqOnH5hGCkt6mVfTvl/yKTapTYYFdurVFslfuSiYYMcScNsWTcXO6CMPXYu7FYKnRg04D1
	5xVwOSZEzsZG/ssBJAHzZS/OcQDKlwWPvB+Okh7+g4cdlg3x1cgxuOdyTNMPK+wU3hDk=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184381-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [linux-5.4 test] 184381: tolerable FAIL - PUSHED
X-Osstest-Failures:
    linux-5.4:test-arm64-arm64-libvirt-raw:guest-start/debian.repeat:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-vhd:guest-start:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-multivcpu:guest-start/debian.repeat:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl:guest-start/debian.repeat:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-credit2:guest-start/debian.repeat:fail:nonblocking
    linux-5.4:test-armhf-armhf-libvirt:saverestore-support-check:fail:nonblocking
    linux-5.4:test-amd64-amd64-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    linux-5.4:test-amd64-i386-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    linux-5.4:test-amd64-i386-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    linux-5.4:test-amd64-amd64-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    linux-5.4:test-amd64-amd64-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    linux-5.4:test-amd64-amd64-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    linux-5.4:test-armhf-armhf-libvirt-qcow2:saverestore-support-check:fail:nonblocking
    linux-5.4:test-amd64-i386-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    linux-5.4:test-armhf-armhf-libvirt-raw:saverestore-support-check:fail:nonblocking
    linux-5.4:test-amd64-i386-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    linux-5.4:test-amd64-amd64-qemuu-nested-amd:debian-hvm-install/l1/l2:fail:nonblocking
    linux-5.4:test-amd64-i386-xl-pvshim:guest-start:fail:nonblocking
    linux-5.4:test-amd64-amd64-libvirt-xsm:migrate-support-check:fail:nonblocking
    linux-5.4:test-amd64-i386-libvirt-xsm:migrate-support-check:fail:nonblocking
    linux-5.4:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    linux-5.4:test-amd64-i386-libvirt:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-xsm:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-xsm:saverestore-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-libvirt-xsm:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl:saverestore-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-libvirt-xsm:saverestore-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-credit1:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-credit1:saverestore-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-credit2:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-credit2:saverestore-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-thunderx:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-thunderx:saverestore-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-multivcpu:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-multivcpu:saverestore-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-rtds:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-rtds:saverestore-support-check:fail:nonblocking
    linux-5.4:test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    linux-5.4:test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-arndale:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-arndale:saverestore-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-credit1:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-credit1:saverestore-support-check:fail:nonblocking
    linux-5.4:test-amd64-amd64-libvirt-vhd:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl:saverestore-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-libvirt:migrate-support-check:fail:nonblocking
    linux-5.4:test-amd64-i386-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-libvirt-raw:saverestore-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-vhd:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-vhd:saverestore-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-libvirt-qcow2:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-credit2:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-credit2:saverestore-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-libvirt-raw:migrate-support-check:fail:nonblocking
X-Osstest-Versions-This:
    linux=9153fc9664959aa6bb35915b2bbd8fbc4c762962
X-Osstest-Versions-That:
    linux=4410df70110ff5175bf7f7fdc3bae5c80f2c36d9
From: osstest service owner <osstest-admin@xenproject.org>
Date: Wed, 17 Jan 2024 20:13:37 +0000

flight 184381 linux-5.4 real [real]
http://logs.test-lab.xenproject.org/osstest/logs/184381/

Failures :-/ but no regressions.

Tests which did not succeed, but are not blocking:
 test-arm64-arm64-libvirt-raw 17 guest-start/debian.repeat    fail  like 184327
 test-armhf-armhf-xl-vhd      13 guest-start                  fail  like 184327
 test-armhf-armhf-xl-multivcpu 18 guest-start/debian.repeat    fail like 184334
 test-armhf-armhf-xl          18 guest-start/debian.repeat    fail  like 184334
 test-armhf-armhf-xl-credit2  18 guest-start/debian.repeat    fail  like 184334
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 184339
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 184339
 test-amd64-i386-xl-qemut-win7-amd64 19 guest-stop             fail like 184339
 test-amd64-i386-xl-qemuu-win7-amd64 19 guest-stop             fail like 184339
 test-amd64-amd64-xl-qemut-win7-amd64 19 guest-stop            fail like 184339
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 184339
 test-amd64-amd64-xl-qemut-ws16-amd64 19 guest-stop            fail like 184339
 test-armhf-armhf-libvirt-qcow2 15 saverestore-support-check   fail like 184339
 test-amd64-i386-xl-qemut-ws16-amd64 19 guest-stop             fail like 184339
 test-armhf-armhf-libvirt-raw 15 saverestore-support-check    fail  like 184339
 test-amd64-i386-xl-qemuu-ws16-amd64 19 guest-stop             fail like 184339
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 184339
 test-amd64-i386-xl-pvshim    14 guest-start                  fail   never pass
 test-amd64-amd64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-amd64-i386-libvirt-xsm  15 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt     15 migrate-support-check        fail   never pass
 test-amd64-i386-libvirt      15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-xsm      15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-xsm      16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl          15 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl          16 saverestore-support-check    fail   never pass
 test-arm64-arm64-libvirt-xsm 16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-credit1  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit1  16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-credit2  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit2  16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-thunderx 15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-thunderx 16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-multivcpu 15 migrate-support-check        fail  never pass
 test-armhf-armhf-xl-multivcpu 16 saverestore-support-check    fail  never pass
 test-armhf-armhf-xl-rtds     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-rtds     16 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-armhf-armhf-xl-arndale  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-arndale  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-credit1  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit1  16 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-vhd 14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          16 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt     15 migrate-support-check        fail   never pass
 test-amd64-i386-libvirt-raw  14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 15 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-vhd      14 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-vhd      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-qcow2 14 migrate-support-check        fail never pass
 test-armhf-armhf-xl-credit2  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit2  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-raw 14 migrate-support-check        fail   never pass

version targeted for testing:
 linux                9153fc9664959aa6bb35915b2bbd8fbc4c762962
baseline version:
 linux                4410df70110ff5175bf7f7fdc3bae5c80f2c36d9

Last test of basis   184339  2024-01-13 06:35:35 Z    4 days
Testing same since   184362  2024-01-15 17:43:08 Z    2 days    3 attempts

------------------------------------------------------------
People who touched revisions under test:
  Adrian Cinal <adriancinal1@gmail.com>
  Adrian Cinal <adriancinal@gmail.com>
  Aleksandr Loktionov <aleksandr.loktionov@intel.com>
  Amit Pundir <amit.pundir@linaro.org>
  Andrea Mayer <andrea.mayer@uniroma2.it>
  Andrew Morton <akpm@linux-foundation.org>
  Andrii Staikov <andrii.staikov@intel.com>
  Arnd Bergmann <arnd@arndb.de>
  Bartosz Pawlowski <bartosz.pawlowski@intel.com>
  Benjamin Bara <benjamin.bara@skidata.com>
  Bharathi Sreenivas <bharathi.sreenivas@intel.com>
  Bjorn Helgaas <bhelgaas@google.com>
  Chen Ni <nichen@iscas.ac.cn>
  Christophe JAILLET <christophe.jaillet@wanadoo.fr>
  David S. Miller <davem@davemloft.net>
  Ding Hui <dinghui@sangfor.com.cn>
  Dinghao Liu <dinghao.liu@zju.edu.cn>
  Doug Berger <opendmb@gmail.com>
  Douglas Anderson <dianders@chromium.org>
  Eric Dumazet <edumazet@google.com>
  Florian Fainelli <florian.fainelli@broadcom.com>
  Geert Uytterhoeven <geert+renesas@glider.be>
  Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  Hangyu Hua <hbh25y@gmail.com>
  Harshit Mogalapalli <harshit.m.mogalapalli@oracle.com>
  Jakub Kicinski <kuba@kernel.org>
  Jamal Hadi Salim <jhs@mojatatu.com>
  Jerome Brunet <jbrunet@baylibre.com>
  Jiajun Xie <jiajun.xie.sh@gmail.com>
  John Fastabend <john.fastabend@gmail.com>
  Jon Hunter <jonathanh@nvidia.com>
  Jon Maxwell <jmaxwell37@gmail.com>
  Jorge Ramirez-Ortiz <jorge@foundries.io>
  Kalle Valo <kvalo@codeaurora.org>
  Karen Ostrowska <karen.ostrowska@intel.com>
  Ke Xiao <xiaoke@sangfor.com.cn>
  Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
  Linux Kernel Functional Testing <lkft@linaro.org>
  Marc Dionne <marc.dionne@auristor.com>
  Marc Kleine-Budde <mkl@pengutronix.de>
  Mark Brown <broonie@kernel.org>
  Mateusz Palczewski <mateusz.palczewski@intel.com>
  Matthew Wilcox (Oracle) <willy@infradead.org>
  Michael Chan <michael.chan@broadcom.com>
  Michael Walle <mwalle@kernel.org>
  Oliver Hartkopp <socketcan@hartkopp.net>
  Pablo Neira Ayuso <pablo@netfilter.org>
  Phil Sutter <phil@nwl.cc>
  Pucha Himasekhar Reddy <himasekharx.reddy.pucha@intel.com> (A Contingent worker at Intel)
  Rafal Romanowski <rafal.romanowski@intel.com>
  Rakesh Pillai <pillair@codeaurora.org>
  Sasha Levin <sashal@kernel.org>
  Siddh Raman Pant <code@siddh.me>
  Stefan Wahren <wahrenst@gmx.net>
  Sudheer Mogilappagari <sudheer.mogilappagari@intel.com>
  Suraj Jitindar Singh <surajjs@amazon.com>
  Takashi Sakamoto <o-takashi@sakamocchi.jp>
  Thomas Lange <thomas@corelatus.se>
  Tony Nguyen <anthony.l.nguyen@intel.com>
  Tor Vic <torvic9@mailbox.org>
  Ulf Hansson <ulf.hansson@linaro.org>
  Vadim Fedorenko <vadfed@meta.com>
  Wenchao Chen <wenchao.chen@unisoc.com>
  Wolfram Sang <wsa@kernel.org>

jobs:
 build-amd64-xsm                                              pass    
 build-arm64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64                                                  pass    
 build-arm64                                                  pass    
 build-armhf                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-arm64-libvirt                                          pass    
 build-armhf-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-pvops                                            pass    
 build-arm64-pvops                                            pass    
 build-armhf-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-amd64-amd64-xl                                          pass    
 test-amd64-coresched-amd64-xl                                pass    
 test-arm64-arm64-xl                                          pass    
 test-armhf-armhf-xl                                          fail    
 test-amd64-i386-xl                                           pass    
 test-amd64-coresched-i386-xl                                 pass    
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm           pass    
 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm            pass    
 test-amd64-amd64-xl-qemut-stubdom-debianhvm-amd64-xsm        pass    
 test-amd64-i386-xl-qemut-stubdom-debianhvm-amd64-xsm         pass    
 test-amd64-amd64-xl-qemut-debianhvm-i386-xsm                 pass    
 test-amd64-i386-xl-qemut-debianhvm-i386-xsm                  pass    
 test-amd64-amd64-xl-qemuu-debianhvm-i386-xsm                 pass    
 test-amd64-i386-xl-qemuu-debianhvm-i386-xsm                  pass    
 test-amd64-amd64-libvirt-xsm                                 pass    
 test-arm64-arm64-libvirt-xsm                                 pass    
 test-amd64-i386-libvirt-xsm                                  pass    
 test-amd64-amd64-xl-xsm                                      pass    
 test-arm64-arm64-xl-xsm                                      pass    
 test-amd64-i386-xl-xsm                                       pass    
 test-amd64-amd64-qemuu-nested-amd                            fail    
 test-amd64-amd64-xl-pvhv2-amd                                pass    
 test-amd64-i386-qemut-rhel6hvm-amd                           pass    
 test-amd64-i386-qemuu-rhel6hvm-amd                           pass    
 test-amd64-amd64-dom0pvh-xl-amd                              pass    
 test-amd64-amd64-xl-qemut-debianhvm-amd64                    pass    
 test-amd64-i386-xl-qemut-debianhvm-amd64                     pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64                    pass    
 test-amd64-i386-xl-qemuu-debianhvm-amd64                     pass    
 test-amd64-i386-freebsd10-amd64                              pass    
 test-amd64-amd64-qemuu-freebsd11-amd64                       pass    
 test-amd64-amd64-qemuu-freebsd12-amd64                       pass    
 test-amd64-amd64-xl-qemuu-ovmf-amd64                         pass    
 test-amd64-i386-xl-qemuu-ovmf-amd64                          pass    
 test-amd64-amd64-xl-qemut-win7-amd64                         fail    
 test-amd64-i386-xl-qemut-win7-amd64                          fail    
 test-amd64-amd64-xl-qemuu-win7-amd64                         fail    
 test-amd64-i386-xl-qemuu-win7-amd64                          fail    
 test-amd64-amd64-xl-qemut-ws16-amd64                         fail    
 test-amd64-i386-xl-qemut-ws16-amd64                          fail    
 test-amd64-amd64-xl-qemuu-ws16-amd64                         fail    
 test-amd64-i386-xl-qemuu-ws16-amd64                          fail    
 test-armhf-armhf-xl-arndale                                  pass    
 test-amd64-amd64-examine-bios                                pass    
 test-amd64-i386-examine-bios                                 pass    
 test-amd64-amd64-xl-credit1                                  pass    
 test-arm64-arm64-xl-credit1                                  pass    
 test-armhf-armhf-xl-credit1                                  pass    
 test-amd64-amd64-xl-credit2                                  pass    
 test-arm64-arm64-xl-credit2                                  pass    
 test-armhf-armhf-xl-credit2                                  fail    
 test-amd64-amd64-xl-qemuu-dmrestrict-amd64-dmrestrict        pass    
 test-amd64-i386-xl-qemuu-dmrestrict-amd64-dmrestrict         pass    
 test-amd64-amd64-examine                                     pass    
 test-arm64-arm64-examine                                     pass    
 test-armhf-armhf-examine                                     pass    
 test-amd64-i386-examine                                      pass    
 test-amd64-i386-freebsd10-i386                               pass    
 test-amd64-amd64-qemuu-nested-intel                          pass    
 test-amd64-amd64-xl-pvhv2-intel                              pass    
 test-amd64-i386-qemut-rhel6hvm-intel                         pass    
 test-amd64-i386-qemuu-rhel6hvm-intel                         pass    
 test-amd64-amd64-dom0pvh-xl-intel                            pass    
 test-amd64-amd64-libvirt                                     pass    
 test-armhf-armhf-libvirt                                     pass    
 test-amd64-i386-libvirt                                      pass    
 test-amd64-amd64-xl-multivcpu                                pass    
 test-armhf-armhf-xl-multivcpu                                fail    
 test-amd64-amd64-pair                                        pass    
 test-amd64-i386-pair                                         pass    
 test-amd64-amd64-libvirt-pair                                pass    
 test-amd64-i386-libvirt-pair                                 pass    
 test-amd64-amd64-xl-pvshim                                   pass    
 test-amd64-i386-xl-pvshim                                    fail    
 test-amd64-amd64-pygrub                                      pass    
 test-armhf-armhf-libvirt-qcow2                               pass    
 test-amd64-amd64-xl-qcow2                                    pass    
 test-arm64-arm64-libvirt-raw                                 fail    
 test-armhf-armhf-libvirt-raw                                 pass    
 test-amd64-i386-libvirt-raw                                  pass    
 test-amd64-amd64-xl-rtds                                     pass    
 test-armhf-armhf-xl-rtds                                     pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64-shadow             pass    
 test-amd64-i386-xl-qemuu-debianhvm-amd64-shadow              pass    
 test-amd64-amd64-xl-shadow                                   pass    
 test-amd64-i386-xl-shadow                                    pass    
 test-arm64-arm64-xl-thunderx                                 pass    
 test-amd64-amd64-examine-uefi                                pass    
 test-amd64-i386-examine-uefi                                 pass    
 test-amd64-amd64-libvirt-vhd                                 pass    
 test-arm64-arm64-xl-vhd                                      pass    
 test-armhf-armhf-xl-vhd                                      fail    
 test-amd64-i386-xl-vhd                                       pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Pushing revision :

hint: The 'hooks/update' hook was ignored because it's not set as executable.
hint: You can disable this warning with `git config advice.ignoredHook false`.
hint: The 'hooks/post-receive' hook was ignored because it's not set as executable.
hint: You can disable this warning with `git config advice.ignoredHook false`.
hint: The 'hooks/post-update' hook was ignored because it's not set as executable.
hint: You can disable this warning with `git config advice.ignoredHook false`.
To xenbits.xen.org:/home/xen/git/linux-pvops.git
   4410df70110ff..9153fc9664959  9153fc9664959aa6bb35915b2bbd8fbc4c762962 -> tested/linux-5.4


From xen-devel-bounces@lists.xenproject.org Wed Jan 17 21:47:15 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 17 Jan 2024 21:47:15 +0000
Received: from list by lists.xenproject.org with outflank-mailman.668569.1040849 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQDkQ-0003U2-3R; Wed, 17 Jan 2024 21:46:58 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 668569.1040849; Wed, 17 Jan 2024 21:46:58 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQDkQ-0003Tv-0j; Wed, 17 Jan 2024 21:46:58 +0000
Received: by outflank-mailman (input) for mailman id 668569;
 Wed, 17 Jan 2024 21:46:56 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=64a2=I3=kernel.org=pr-tracker-bot@srs-se1.protection.inumbo.net>)
 id 1rQDkO-0003Tp-EQ
 for xen-devel@lists.xenproject.org; Wed, 17 Jan 2024 21:46:56 +0000
Received: from sin.source.kernel.org (sin.source.kernel.org [145.40.73.55])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id ebdac8c9-b581-11ee-9b0f-b553b5be7939;
 Wed, 17 Jan 2024 22:46:52 +0100 (CET)
Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58])
 by sin.source.kernel.org (Postfix) with ESMTP id A1C0ECE1BF8;
 Wed, 17 Jan 2024 21:46:46 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPS id E1B6DC433C7;
 Wed, 17 Jan 2024 21:46:45 +0000 (UTC)
Received: from aws-us-west-2-korg-oddjob-1.ci.codeaurora.org
 (localhost.localdomain [127.0.0.1])
 by aws-us-west-2-korg-oddjob-1.ci.codeaurora.org (Postfix) with ESMTP id
 CAE14D8C978; Wed, 17 Jan 2024 21:46:45 +0000 (UTC)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: ebdac8c9-b581-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
	s=k20201202; t=1705528005;
	bh=JeVSfy1WcN0zA1TvZfy+lzPXJGr3Ws8eFBa8RciWznk=;
	h=Subject:From:In-Reply-To:References:Date:To:Cc:From;
	b=WUzUTHgi+rCsrJ66GGn5YRUwFF3+dH18VYSAUPqHbZifEkAH3GRA7HOZXc49+oozm
	 tmlR/VwOBcJSFy58BMKe21/IAk/thoOPBhXqoz77iSFlBMhYy7DMnqbdPaEl9TGmV7
	 WB3IvPot/PnUa/YRqOaIeVstui/iIEgV0hWSXcfSS+ioiS/sg8f9TrEQpo9m8FwA9h
	 T8J79nn2RD59T/PpL2pyY9frLDOp/4rnm9nagvk7tcog5cJBgsyAtUd4EwtGO9tueD
	 i1fYr1vRGwZbYmYAcUTGepWESq9b6eftd3gll/VoOoRUFp3iK1IgwIhOzC0vUAsbRN
	 6oqAAJL5t1a0w==
Subject: Re: [GIT PULL] xen: branch for v6.8-rc1
From: pr-tracker-bot@kernel.org
In-Reply-To: <20240111121943.3342-1-jgross@suse.com>
References: <20240111121943.3342-1-jgross@suse.com>
X-PR-Tracked-List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
X-PR-Tracked-Message-Id: <20240111121943.3342-1-jgross@suse.com>
X-PR-Tracked-Remote: git://git.kernel.org/pub/scm/linux/kernel/git/xen/tip.git for-linus-6.8-rc1-tag
X-PR-Tracked-Commit-Id: 2d2db7d40254d5fb53b11ebd703cd1ed0c5de7a1
X-PR-Merge-Tree: torvalds/linux.git
X-PR-Merge-Refname: refs/heads/master
X-PR-Merge-Commit-Id: 82fd5ee9d8a516d47a17e8c99c2712a3fd937014
Message-Id: <170552800582.31446.6268487683399554343.pr-tracker-bot@kernel.org>
Date: Wed, 17 Jan 2024 21:46:45 +0000
To: Juergen Gross <jgross@suse.com>
Cc: torvalds@linux-foundation.org, linux-kernel@vger.kernel.org, xen-devel@lists.xenproject.org, sstabellini@kernel.org

The pull request you sent on Thu, 11 Jan 2024 13:19:43 +0100:

> git://git.kernel.org/pub/scm/linux/kernel/git/xen/tip.git for-linus-6.8-rc1-tag

has been merged into torvalds/linux.git:
https://git.kernel.org/torvalds/c/82fd5ee9d8a516d47a17e8c99c2712a3fd937014

Thank you!

-- 
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/prtracker.html


From xen-devel-bounces@lists.xenproject.org Wed Jan 17 22:30:22 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 17 Jan 2024 22:30:22 +0000
Received: from list by lists.xenproject.org with outflank-mailman.668573.1040860 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQEQK-0002aJ-91; Wed, 17 Jan 2024 22:30:16 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 668573.1040860; Wed, 17 Jan 2024 22:30:16 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQEQK-0002aC-5w; Wed, 17 Jan 2024 22:30:16 +0000
Received: by outflank-mailman (input) for mailman id 668573;
 Wed, 17 Jan 2024 22:30:15 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=3JKZ=I3=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1rQEQJ-0002a3-7B
 for xen-devel@lists.xenproject.org; Wed, 17 Jan 2024 22:30:15 +0000
Received: from mail-wm1-x32e.google.com (mail-wm1-x32e.google.com
 [2a00:1450:4864:20::32e])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id fb342320-b587-11ee-98f2-6d05b1d4d9a1;
 Wed, 17 Jan 2024 23:30:14 +0100 (CET)
Received: by mail-wm1-x32e.google.com with SMTP id
 5b1f17b1804b1-40e8fec0968so464255e9.1
 for <xen-devel@lists.xenproject.org>; Wed, 17 Jan 2024 14:30:13 -0800 (PST)
Received: from [10.80.67.30] (default-46-102-197-194.interdsl.co.uk.
 [46.102.197.194]) by smtp.gmail.com with ESMTPSA id
 s20-20020a05600c45d400b0040e76a7c585sm4640764wmo.0.2024.01.17.14.30.12
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 17 Jan 2024 14:30:12 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: fb342320-b587-11ee-98f2-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1705530613; x=1706135413; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=bwTVl3Ab3YbZxpYvRmqSoAAFG7+LSTSgClSDhz2T+6I=;
        b=bfUuj9F3FKrj20UItAEGIn0ImbAfsfvjaRYw1tWRPIBYi1D6tpI3mURN5Hr6EYLSFW
         ObIMgIy0h0jIRl40OXSvdivt2spJq/Cr66mFrjw8bb9SWsF0oSzDBfSQa9TBhPGQSvXs
         jO1gP6vNwcleTPlVNAqgaI3IdRuZMPINUaBZE=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705530613; x=1706135413;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=bwTVl3Ab3YbZxpYvRmqSoAAFG7+LSTSgClSDhz2T+6I=;
        b=fPBwA5BTcTD2iOVQl+xcbeRMepYlLNB1TUab9SDBBLdxBZ9DZxaxZW2Q3kAFwA0gwc
         niWGHgjG0XlbdIY/QbrJgveU9i5h2XaxMDbDQye4locDh+3lM7+ysq7ESD5hFlyQZb2X
         rVbIPrbYfP+YIIu2TVZfZfTfY0P5czJqYNYylegbOMm7RT+NO3TxaqYMV3RvxAjLq2Xi
         xyQ65t2Vp2WWZdy3S5IpODcNiCYLVklR4qsntWZE4Bw5VTHu3ftD6iToyDTvjENmWy63
         rU29wfwvmuxay6Q09EJI8c82ZtqZ8UWn63dBzaCcrd8w2HKC4gstENKgOolduzyEhctf
         4KfQ==
X-Gm-Message-State: AOJu0YwW8wfuxT9kAYzeNEjHfun5lLs2BFAHazHmkBKqVm5cQ/fIzgHt
	berfNMk/jD56hs6UuZX5TUKM+nwvsjkluHY9vaLe2a2APResfQ==
X-Google-Smtp-Source: AGHT+IHbM06q2u8g/S/+CdiqmQja7QKT+klLGfv6hvk47pY9FyVZDrC0d441sQE5ScMipIto5jFZhw==
X-Received: by 2002:a05:600c:214c:b0:40e:509c:36ec with SMTP id v12-20020a05600c214c00b0040e509c36ecmr5051349wml.206.1705530613054;
        Wed, 17 Jan 2024 14:30:13 -0800 (PST)
Message-ID: <8f8b5e27-c41e-4dbe-a3f4-9e8f00b66505@citrix.com>
Date: Wed, 17 Jan 2024 22:30:12 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] x86/guest: finish conversion to altcall
Content-Language: en-GB
To: Jan Beulich <jbeulich@suse.com>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Wei Liu <wl@xen.org>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger.pau@citrix.com>, Paul Durrant <paul@xen.org>
References: <65fb766e-ab5a-49ab-a904-01ee9711d42d@suse.com>
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 xsFNBFLhNn8BEADVhE+Hb8i0GV6mihnnr/uiQQdPF8kUoFzCOPXkf7jQ5sLYeJa0cQi6Penp
 VtiFYznTairnVsN5J+ujSTIb+OlMSJUWV4opS7WVNnxHbFTPYZVQ3erv7NKc2iVizCRZ2Kxn
 srM1oPXWRic8BIAdYOKOloF2300SL/bIpeD+x7h3w9B/qez7nOin5NzkxgFoaUeIal12pXSR
 Q354FKFoy6Vh96gc4VRqte3jw8mPuJQpfws+Pb+swvSf/i1q1+1I4jsRQQh2m6OTADHIqg2E
 ofTYAEh7R5HfPx0EXoEDMdRjOeKn8+vvkAwhviWXTHlG3R1QkbE5M/oywnZ83udJmi+lxjJ5
 YhQ5IzomvJ16H0Bq+TLyVLO/VRksp1VR9HxCzItLNCS8PdpYYz5TC204ViycobYU65WMpzWe
 LFAGn8jSS25XIpqv0Y9k87dLbctKKA14Ifw2kq5OIVu2FuX+3i446JOa2vpCI9GcjCzi3oHV
 e00bzYiHMIl0FICrNJU0Kjho8pdo0m2uxkn6SYEpogAy9pnatUlO+erL4LqFUO7GXSdBRbw5
 gNt25XTLdSFuZtMxkY3tq8MFss5QnjhehCVPEpE6y9ZjI4XB8ad1G4oBHVGK5LMsvg22PfMJ
 ISWFSHoF/B5+lHkCKWkFxZ0gZn33ju5n6/FOdEx4B8cMJt+cWwARAQABzSlBbmRyZXcgQ29v
 cGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPsLBegQTAQgAJAIbAwULCQgHAwUVCgkI
 CwUWAgMBAAIeAQIXgAUCWKD95wIZAQAKCRBlw/kGpdefoHbdD/9AIoR3k6fKl+RFiFpyAhvO
 59ttDFI7nIAnlYngev2XUR3acFElJATHSDO0ju+hqWqAb8kVijXLops0gOfqt3VPZq9cuHlh
 IMDquatGLzAadfFx2eQYIYT+FYuMoPZy/aTUazmJIDVxP7L383grjIkn+7tAv+qeDfE+txL4
 SAm1UHNvmdfgL2/lcmL3xRh7sub3nJilM93RWX1Pe5LBSDXO45uzCGEdst6uSlzYR/MEr+5Z
 JQQ32JV64zwvf/aKaagSQSQMYNX9JFgfZ3TKWC1KJQbX5ssoX/5hNLqxMcZV3TN7kU8I3kjK
 mPec9+1nECOjjJSO/h4P0sBZyIUGfguwzhEeGf4sMCuSEM4xjCnwiBwftR17sr0spYcOpqET
 ZGcAmyYcNjy6CYadNCnfR40vhhWuCfNCBzWnUW0lFoo12wb0YnzoOLjvfD6OL3JjIUJNOmJy
 RCsJ5IA/Iz33RhSVRmROu+TztwuThClw63g7+hoyewv7BemKyuU6FTVhjjW+XUWmS/FzknSi
 dAG+insr0746cTPpSkGl3KAXeWDGJzve7/SBBfyznWCMGaf8E2P1oOdIZRxHgWj0zNr1+ooF
 /PzgLPiCI4OMUttTlEKChgbUTQ+5o0P080JojqfXwbPAyumbaYcQNiH1/xYbJdOFSiBv9rpt
 TQTBLzDKXok86M7BTQRS4TZ/ARAAkgqudHsp+hd82UVkvgnlqZjzz2vyrYfz7bkPtXaGb9H4
 Rfo7mQsEQavEBdWWjbga6eMnDqtu+FC+qeTGYebToxEyp2lKDSoAsvt8w82tIlP/EbmRbDVn
 7bhjBlfRcFjVYw8uVDPptT0TV47vpoCVkTwcyb6OltJrvg/QzV9f07DJswuda1JH3/qvYu0p
 vjPnYvCq4NsqY2XSdAJ02HrdYPFtNyPEntu1n1KK+gJrstjtw7KsZ4ygXYrsm/oCBiVW/OgU
 g/XIlGErkrxe4vQvJyVwg6YH653YTX5hLLUEL1NS4TCo47RP+wi6y+TnuAL36UtK/uFyEuPy
 wwrDVcC4cIFhYSfsO0BumEI65yu7a8aHbGfq2lW251UcoU48Z27ZUUZd2Dr6O/n8poQHbaTd
 6bJJSjzGGHZVbRP9UQ3lkmkmc0+XCHmj5WhwNNYjgbbmML7y0fsJT5RgvefAIFfHBg7fTY/i
 kBEimoUsTEQz+N4hbKwo1hULfVxDJStE4sbPhjbsPCrlXf6W9CxSyQ0qmZ2bXsLQYRj2xqd1
 bpA+1o1j2N4/au1R/uSiUFjewJdT/LX1EklKDcQwpk06Af/N7VZtSfEJeRV04unbsKVXWZAk
 uAJyDDKN99ziC0Wz5kcPyVD1HNf8bgaqGDzrv3TfYjwqayRFcMf7xJaL9xXedMcAEQEAAcLB
 XwQYAQgACQUCUuE2fwIbDAAKCRBlw/kGpdefoG4XEACD1Qf/er8EA7g23HMxYWd3FXHThrVQ
 HgiGdk5Yh632vjOm9L4sd/GCEACVQKjsu98e8o3ysitFlznEns5EAAXEbITrgKWXDDUWGYxd
 pnjj2u+GkVdsOAGk0kxczX6s+VRBhpbBI2PWnOsRJgU2n10PZ3mZD4Xu9kU2IXYmuW+e5KCA
 vTArRUdCrAtIa1k01sPipPPw6dfxx2e5asy21YOytzxuWFfJTGnVxZZSCyLUO83sh6OZhJkk
 b9rxL9wPmpN/t2IPaEKoAc0FTQZS36wAMOXkBh24PQ9gaLJvfPKpNzGD8XWR5HHF0NLIJhgg
 4ZlEXQ2fVp3XrtocHqhu4UZR4koCijgB8sB7Tb0GCpwK+C4UePdFLfhKyRdSXuvY3AHJd4CP
 4JzW0Bzq/WXY3XMOzUTYApGQpnUpdOmuQSfpV9MQO+/jo7r6yPbxT7CwRS5dcQPzUiuHLK9i
 nvjREdh84qycnx0/6dDroYhp0DFv4udxuAvt1h4wGwTPRQZerSm4xaYegEFusyhbZrI0U9tJ
 B8WrhBLXDiYlyJT6zOV2yZFuW47VrLsjYnHwn27hmxTC/7tvG3euCklmkn9Sl9IAKFu29RSo
 d5bD8kMSCYsTqtTfT6W4A3qHGvIDta3ptLYpIAOD2sY3GYq2nf3Bbzx81wZK14JdDDHUX2Rs
 6+ahAA==
In-Reply-To: <65fb766e-ab5a-49ab-a904-01ee9711d42d@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 17/01/2024 9:31 am, Jan Beulich wrote:
> While .setup() and .e820_fixup() don't need fiddling with for being run
> only very early, both .ap_setup() and .resume() want converting too:
> This way both pre-filled struct hypervisor_ops instances can become
> __initconst_cf_clobber, thus allowing to eliminate up to 5 more ENDBR
> (configuration dependent) during the 2nd phase of alternatives patching.
>
> While fiddling with section annotations here, also move "ops" itself to
> .data.ro_after_init.
>
> Signed-off-by: Jan Beulich <jbeulich@suse.com>

Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>


From xen-devel-bounces@lists.xenproject.org Wed Jan 17 22:31:08 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 17 Jan 2024 22:31:08 +0000
Received: from list by lists.xenproject.org with outflank-mailman.668577.1040869 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQERA-00036N-Mg; Wed, 17 Jan 2024 22:31:08 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 668577.1040869; Wed, 17 Jan 2024 22:31:08 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQERA-00036G-JW; Wed, 17 Jan 2024 22:31:08 +0000
Received: by outflank-mailman (input) for mailman id 668577;
 Wed, 17 Jan 2024 22:31:07 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=3JKZ=I3=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1rQER9-000368-7b
 for xen-devel@lists.xenproject.org; Wed, 17 Jan 2024 22:31:07 +0000
Received: from mail-wm1-x332.google.com (mail-wm1-x332.google.com
 [2a00:1450:4864:20::332])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 1a9bacfa-b588-11ee-98f2-6d05b1d4d9a1;
 Wed, 17 Jan 2024 23:31:06 +0100 (CET)
Received: by mail-wm1-x332.google.com with SMTP id
 5b1f17b1804b1-40e88bb6d2bso722295e9.1
 for <xen-devel@lists.xenproject.org>; Wed, 17 Jan 2024 14:31:06 -0800 (PST)
Received: from [10.80.67.30] (default-46-102-197-194.interdsl.co.uk.
 [46.102.197.194]) by smtp.gmail.com with ESMTPSA id
 s20-20020a05600c45d400b0040e76a7c585sm4640764wmo.0.2024.01.17.14.31.05
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 17 Jan 2024 14:31:05 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 1a9bacfa-b588-11ee-98f2-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1705530666; x=1706135466; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=zSizEFJcZg6N6rnzReqh6iaL9cCK2FzZYuLmwUW6SRU=;
        b=UIR+psFKpYkX4ClXPOct2ImQOs3auZn0kOQCgW2JXTQIJTC/3aDf6mm0KTfFVtjXkt
         J0jV65B59YCa3XQjaZZn2gnWBCcraZ0jNTB2O7OWf9f1rBUO15GyiEaYO/iXEuljDKdh
         lioNvZ0CzJTDMtE44YIoBj0xpI2yaT17rVfoc=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705530666; x=1706135466;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=zSizEFJcZg6N6rnzReqh6iaL9cCK2FzZYuLmwUW6SRU=;
        b=FCQKBSA3wABMdB6Rv9lquXpQ7pAEffmh9tzNZ0w5H5cFH1vTdbpgpW4JcFGXIn/0Q1
         a61B0dGZzIJblhJJhhAl86JBOI1VDiqtgM/srBT3frFlfJ8ERRk7tMfXf0hncw3fYiyD
         QOuwXJcGjlrLzCtSTkjb84gwOSBrcmMuoqJk7yUZ+euLPuS44ewkXswXXI4+zOpWqwF7
         juHmb06Ui5QzcwbeZ15YM/kEVuL8DBU+0X4N3Qsc72zR/2gqJp0F3rs3D4MAJeV6yj/f
         1ZwpIYXxh281aoDValCoesrttjKY0ETO0vh2BJCjwSLdJrk9N5iRasEo+3COniBlstPB
         yjMw==
X-Gm-Message-State: AOJu0YxMcLWXWxEd0MLRKXcxkroETntRoeVmr+LhsMkI67MHHyH5PSPJ
	dMMgKiw+4gkMCoNICfezNk6UHASD5v+HzA==
X-Google-Smtp-Source: AGHT+IHK70V28MCuJ68XIlrnRLbExR57HR6ndviY4fMPhpCfuQhzgxjDFj4uJ8SfDS19HPPcYDGtaw==
X-Received: by 2002:a05:600c:54d2:b0:40e:4ac0:8da with SMTP id iw18-20020a05600c54d200b0040e4ac008damr817759wmb.144.1705530665613;
        Wed, 17 Jan 2024 14:31:05 -0800 (PST)
Message-ID: <811d8bd7-0c42-4abd-99f2-bd038b1d26e8@citrix.com>
Date: Wed, 17 Jan 2024 22:31:05 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] core-parking: use alternative_call()
Content-Language: en-GB
To: Jan Beulich <jbeulich@suse.com>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: George Dunlap <george.dunlap@citrix.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
References: <3b2842b2-a2fe-49e7-9ea3-4f55cbc95738@suse.com>
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 xsFNBFLhNn8BEADVhE+Hb8i0GV6mihnnr/uiQQdPF8kUoFzCOPXkf7jQ5sLYeJa0cQi6Penp
 VtiFYznTairnVsN5J+ujSTIb+OlMSJUWV4opS7WVNnxHbFTPYZVQ3erv7NKc2iVizCRZ2Kxn
 srM1oPXWRic8BIAdYOKOloF2300SL/bIpeD+x7h3w9B/qez7nOin5NzkxgFoaUeIal12pXSR
 Q354FKFoy6Vh96gc4VRqte3jw8mPuJQpfws+Pb+swvSf/i1q1+1I4jsRQQh2m6OTADHIqg2E
 ofTYAEh7R5HfPx0EXoEDMdRjOeKn8+vvkAwhviWXTHlG3R1QkbE5M/oywnZ83udJmi+lxjJ5
 YhQ5IzomvJ16H0Bq+TLyVLO/VRksp1VR9HxCzItLNCS8PdpYYz5TC204ViycobYU65WMpzWe
 LFAGn8jSS25XIpqv0Y9k87dLbctKKA14Ifw2kq5OIVu2FuX+3i446JOa2vpCI9GcjCzi3oHV
 e00bzYiHMIl0FICrNJU0Kjho8pdo0m2uxkn6SYEpogAy9pnatUlO+erL4LqFUO7GXSdBRbw5
 gNt25XTLdSFuZtMxkY3tq8MFss5QnjhehCVPEpE6y9ZjI4XB8ad1G4oBHVGK5LMsvg22PfMJ
 ISWFSHoF/B5+lHkCKWkFxZ0gZn33ju5n6/FOdEx4B8cMJt+cWwARAQABzSlBbmRyZXcgQ29v
 cGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPsLBegQTAQgAJAIbAwULCQgHAwUVCgkI
 CwUWAgMBAAIeAQIXgAUCWKD95wIZAQAKCRBlw/kGpdefoHbdD/9AIoR3k6fKl+RFiFpyAhvO
 59ttDFI7nIAnlYngev2XUR3acFElJATHSDO0ju+hqWqAb8kVijXLops0gOfqt3VPZq9cuHlh
 IMDquatGLzAadfFx2eQYIYT+FYuMoPZy/aTUazmJIDVxP7L383grjIkn+7tAv+qeDfE+txL4
 SAm1UHNvmdfgL2/lcmL3xRh7sub3nJilM93RWX1Pe5LBSDXO45uzCGEdst6uSlzYR/MEr+5Z
 JQQ32JV64zwvf/aKaagSQSQMYNX9JFgfZ3TKWC1KJQbX5ssoX/5hNLqxMcZV3TN7kU8I3kjK
 mPec9+1nECOjjJSO/h4P0sBZyIUGfguwzhEeGf4sMCuSEM4xjCnwiBwftR17sr0spYcOpqET
 ZGcAmyYcNjy6CYadNCnfR40vhhWuCfNCBzWnUW0lFoo12wb0YnzoOLjvfD6OL3JjIUJNOmJy
 RCsJ5IA/Iz33RhSVRmROu+TztwuThClw63g7+hoyewv7BemKyuU6FTVhjjW+XUWmS/FzknSi
 dAG+insr0746cTPpSkGl3KAXeWDGJzve7/SBBfyznWCMGaf8E2P1oOdIZRxHgWj0zNr1+ooF
 /PzgLPiCI4OMUttTlEKChgbUTQ+5o0P080JojqfXwbPAyumbaYcQNiH1/xYbJdOFSiBv9rpt
 TQTBLzDKXok86M7BTQRS4TZ/ARAAkgqudHsp+hd82UVkvgnlqZjzz2vyrYfz7bkPtXaGb9H4
 Rfo7mQsEQavEBdWWjbga6eMnDqtu+FC+qeTGYebToxEyp2lKDSoAsvt8w82tIlP/EbmRbDVn
 7bhjBlfRcFjVYw8uVDPptT0TV47vpoCVkTwcyb6OltJrvg/QzV9f07DJswuda1JH3/qvYu0p
 vjPnYvCq4NsqY2XSdAJ02HrdYPFtNyPEntu1n1KK+gJrstjtw7KsZ4ygXYrsm/oCBiVW/OgU
 g/XIlGErkrxe4vQvJyVwg6YH653YTX5hLLUEL1NS4TCo47RP+wi6y+TnuAL36UtK/uFyEuPy
 wwrDVcC4cIFhYSfsO0BumEI65yu7a8aHbGfq2lW251UcoU48Z27ZUUZd2Dr6O/n8poQHbaTd
 6bJJSjzGGHZVbRP9UQ3lkmkmc0+XCHmj5WhwNNYjgbbmML7y0fsJT5RgvefAIFfHBg7fTY/i
 kBEimoUsTEQz+N4hbKwo1hULfVxDJStE4sbPhjbsPCrlXf6W9CxSyQ0qmZ2bXsLQYRj2xqd1
 bpA+1o1j2N4/au1R/uSiUFjewJdT/LX1EklKDcQwpk06Af/N7VZtSfEJeRV04unbsKVXWZAk
 uAJyDDKN99ziC0Wz5kcPyVD1HNf8bgaqGDzrv3TfYjwqayRFcMf7xJaL9xXedMcAEQEAAcLB
 XwQYAQgACQUCUuE2fwIbDAAKCRBlw/kGpdefoG4XEACD1Qf/er8EA7g23HMxYWd3FXHThrVQ
 HgiGdk5Yh632vjOm9L4sd/GCEACVQKjsu98e8o3ysitFlznEns5EAAXEbITrgKWXDDUWGYxd
 pnjj2u+GkVdsOAGk0kxczX6s+VRBhpbBI2PWnOsRJgU2n10PZ3mZD4Xu9kU2IXYmuW+e5KCA
 vTArRUdCrAtIa1k01sPipPPw6dfxx2e5asy21YOytzxuWFfJTGnVxZZSCyLUO83sh6OZhJkk
 b9rxL9wPmpN/t2IPaEKoAc0FTQZS36wAMOXkBh24PQ9gaLJvfPKpNzGD8XWR5HHF0NLIJhgg
 4ZlEXQ2fVp3XrtocHqhu4UZR4koCijgB8sB7Tb0GCpwK+C4UePdFLfhKyRdSXuvY3AHJd4CP
 4JzW0Bzq/WXY3XMOzUTYApGQpnUpdOmuQSfpV9MQO+/jo7r6yPbxT7CwRS5dcQPzUiuHLK9i
 nvjREdh84qycnx0/6dDroYhp0DFv4udxuAvt1h4wGwTPRQZerSm4xaYegEFusyhbZrI0U9tJ
 B8WrhBLXDiYlyJT6zOV2yZFuW47VrLsjYnHwn27hmxTC/7tvG3euCklmkn9Sl9IAKFu29RSo
 d5bD8kMSCYsTqtTfT6W4A3qHGvIDta3ptLYpIAOD2sY3GYq2nf3Bbzx81wZK14JdDDHUX2Rs
 6+ahAA==
In-Reply-To: <3b2842b2-a2fe-49e7-9ea3-4f55cbc95738@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 17/01/2024 9:29 am, Jan Beulich wrote:
> This way we can arrange for core_parking_{performance,power}()'s ENDBR
> to also be zapped.
>
> For the decision to be taken before the 2nd alternative patching pass,
> the initcall needs to become a pre-SMP one, though.
>
> Signed-off-by: Jan Beulich <jbeulich@suse.com>

Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>


From xen-devel-bounces@lists.xenproject.org Wed Jan 17 22:38:06 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 17 Jan 2024 22:38:06 +0000
Received: from list by lists.xenproject.org with outflank-mailman.668583.1040880 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQEXq-0003xD-Em; Wed, 17 Jan 2024 22:38:02 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 668583.1040880; Wed, 17 Jan 2024 22:38:02 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQEXq-0003x6-9v; Wed, 17 Jan 2024 22:38:02 +0000
Received: by outflank-mailman (input) for mailman id 668583;
 Wed, 17 Jan 2024 22:38:02 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=3JKZ=I3=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1rQEXp-0003x0-WA
 for xen-devel@lists.xenproject.org; Wed, 17 Jan 2024 22:38:01 +0000
Received: from mail-wm1-x32a.google.com (mail-wm1-x32a.google.com
 [2a00:1450:4864:20::32a])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 11cff288-b589-11ee-98f2-6d05b1d4d9a1;
 Wed, 17 Jan 2024 23:38:01 +0100 (CET)
Received: by mail-wm1-x32a.google.com with SMTP id
 5b1f17b1804b1-40e8ff22382so335825e9.1
 for <xen-devel@lists.xenproject.org>; Wed, 17 Jan 2024 14:38:01 -0800 (PST)
Received: from [10.80.67.30] (default-46-102-197-194.interdsl.co.uk.
 [46.102.197.194]) by smtp.gmail.com with ESMTPSA id
 z10-20020a05600c0a0a00b0040e4bcfd826sm24226109wmp.47.2024.01.17.14.38.00
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 17 Jan 2024 14:38:00 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 11cff288-b589-11ee-98f2-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1705531080; x=1706135880; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=m8pEVg34jAhHPf30zrjux/7EK3YJeh7BZAw49Q11zqI=;
        b=T0Cn8t4cGKdKNTwWTr4/TSZ4g5S9Bqvkf8NpwWmSLOmnBVRp3ny8NX3zjkq8tG6O3V
         GZsua0xJXIWlu8cg8Uf7NWN4vzxd2O/BDxBoIm42xf4PE3eUGrOqhEj6DyZvRMDpmhOK
         go2joYshHE9zP68D629CREy0BGeXrXcG4SazY=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705531080; x=1706135880;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=m8pEVg34jAhHPf30zrjux/7EK3YJeh7BZAw49Q11zqI=;
        b=ENp9OrbiI+s/BMfWxLVQKmsjZUNOj7+xJUR+Gqk1DqIay55FQ9v82jDESnFdSp/QPI
         oj4fPQn/GwatR38c+JiBEBxenPqYAZix8GrTmSEmdzUVM5sVR51ISVGrYTy6rswcv1Df
         suNtitsTJA1QfBKArdZfEkhOifJq9sKbpjLG8IUwKl+flWf2Nmc8Hbd2Xu3DQnE2vtb7
         1gpFrq7wZxQNRXdO2i79Lzu0ykzVA0hLCcPuqycFYnH2J28EoKiv+0vp+UpD8NFxN2Ls
         zMHPrNDZiykxN1afirq4f6UGALzgYfcGeIUU70cU9v5xTQYqC99Kmlb6HTnYjM201+0I
         g7Og==
X-Gm-Message-State: AOJu0YyfE9gsD1agP1QV6bYDs0oBAGWhTBfcDXktL596wV4Am+Hs3nLF
	HX8c5Iq6CyPyvfQdrHQful7QQu+n4ZfVTg==
X-Google-Smtp-Source: AGHT+IFdmXnUDD2IOeM3WV2KAiL1zlUsYWKvJuswA3Nzj0q+U78ffZ68JUgXnmmMMhTQ4BuauhnKZw==
X-Received: by 2002:a05:600c:2182:b0:40e:53f7:a254 with SMTP id e2-20020a05600c218200b0040e53f7a254mr5288682wme.73.1705531080508;
        Wed, 17 Jan 2024 14:38:00 -0800 (PST)
Message-ID: <8ab88630-3445-4b35-bdb4-c6223024c2ff@citrix.com>
Date: Wed, 17 Jan 2024 22:37:59 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 0/2] x86/MCE: arrange for some ENDBR zapping
Content-Language: en-GB
To: Jan Beulich <jbeulich@suse.com>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Wei Liu <wl@xen.org>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger.pau@citrix.com>
References: <0fb20fcf-1580-41c9-946b-7daf865f4b49@suse.com>
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 xsFNBFLhNn8BEADVhE+Hb8i0GV6mihnnr/uiQQdPF8kUoFzCOPXkf7jQ5sLYeJa0cQi6Penp
 VtiFYznTairnVsN5J+ujSTIb+OlMSJUWV4opS7WVNnxHbFTPYZVQ3erv7NKc2iVizCRZ2Kxn
 srM1oPXWRic8BIAdYOKOloF2300SL/bIpeD+x7h3w9B/qez7nOin5NzkxgFoaUeIal12pXSR
 Q354FKFoy6Vh96gc4VRqte3jw8mPuJQpfws+Pb+swvSf/i1q1+1I4jsRQQh2m6OTADHIqg2E
 ofTYAEh7R5HfPx0EXoEDMdRjOeKn8+vvkAwhviWXTHlG3R1QkbE5M/oywnZ83udJmi+lxjJ5
 YhQ5IzomvJ16H0Bq+TLyVLO/VRksp1VR9HxCzItLNCS8PdpYYz5TC204ViycobYU65WMpzWe
 LFAGn8jSS25XIpqv0Y9k87dLbctKKA14Ifw2kq5OIVu2FuX+3i446JOa2vpCI9GcjCzi3oHV
 e00bzYiHMIl0FICrNJU0Kjho8pdo0m2uxkn6SYEpogAy9pnatUlO+erL4LqFUO7GXSdBRbw5
 gNt25XTLdSFuZtMxkY3tq8MFss5QnjhehCVPEpE6y9ZjI4XB8ad1G4oBHVGK5LMsvg22PfMJ
 ISWFSHoF/B5+lHkCKWkFxZ0gZn33ju5n6/FOdEx4B8cMJt+cWwARAQABzSlBbmRyZXcgQ29v
 cGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPsLBegQTAQgAJAIbAwULCQgHAwUVCgkI
 CwUWAgMBAAIeAQIXgAUCWKD95wIZAQAKCRBlw/kGpdefoHbdD/9AIoR3k6fKl+RFiFpyAhvO
 59ttDFI7nIAnlYngev2XUR3acFElJATHSDO0ju+hqWqAb8kVijXLops0gOfqt3VPZq9cuHlh
 IMDquatGLzAadfFx2eQYIYT+FYuMoPZy/aTUazmJIDVxP7L383grjIkn+7tAv+qeDfE+txL4
 SAm1UHNvmdfgL2/lcmL3xRh7sub3nJilM93RWX1Pe5LBSDXO45uzCGEdst6uSlzYR/MEr+5Z
 JQQ32JV64zwvf/aKaagSQSQMYNX9JFgfZ3TKWC1KJQbX5ssoX/5hNLqxMcZV3TN7kU8I3kjK
 mPec9+1nECOjjJSO/h4P0sBZyIUGfguwzhEeGf4sMCuSEM4xjCnwiBwftR17sr0spYcOpqET
 ZGcAmyYcNjy6CYadNCnfR40vhhWuCfNCBzWnUW0lFoo12wb0YnzoOLjvfD6OL3JjIUJNOmJy
 RCsJ5IA/Iz33RhSVRmROu+TztwuThClw63g7+hoyewv7BemKyuU6FTVhjjW+XUWmS/FzknSi
 dAG+insr0746cTPpSkGl3KAXeWDGJzve7/SBBfyznWCMGaf8E2P1oOdIZRxHgWj0zNr1+ooF
 /PzgLPiCI4OMUttTlEKChgbUTQ+5o0P080JojqfXwbPAyumbaYcQNiH1/xYbJdOFSiBv9rpt
 TQTBLzDKXok86M7BTQRS4TZ/ARAAkgqudHsp+hd82UVkvgnlqZjzz2vyrYfz7bkPtXaGb9H4
 Rfo7mQsEQavEBdWWjbga6eMnDqtu+FC+qeTGYebToxEyp2lKDSoAsvt8w82tIlP/EbmRbDVn
 7bhjBlfRcFjVYw8uVDPptT0TV47vpoCVkTwcyb6OltJrvg/QzV9f07DJswuda1JH3/qvYu0p
 vjPnYvCq4NsqY2XSdAJ02HrdYPFtNyPEntu1n1KK+gJrstjtw7KsZ4ygXYrsm/oCBiVW/OgU
 g/XIlGErkrxe4vQvJyVwg6YH653YTX5hLLUEL1NS4TCo47RP+wi6y+TnuAL36UtK/uFyEuPy
 wwrDVcC4cIFhYSfsO0BumEI65yu7a8aHbGfq2lW251UcoU48Z27ZUUZd2Dr6O/n8poQHbaTd
 6bJJSjzGGHZVbRP9UQ3lkmkmc0+XCHmj5WhwNNYjgbbmML7y0fsJT5RgvefAIFfHBg7fTY/i
 kBEimoUsTEQz+N4hbKwo1hULfVxDJStE4sbPhjbsPCrlXf6W9CxSyQ0qmZ2bXsLQYRj2xqd1
 bpA+1o1j2N4/au1R/uSiUFjewJdT/LX1EklKDcQwpk06Af/N7VZtSfEJeRV04unbsKVXWZAk
 uAJyDDKN99ziC0Wz5kcPyVD1HNf8bgaqGDzrv3TfYjwqayRFcMf7xJaL9xXedMcAEQEAAcLB
 XwQYAQgACQUCUuE2fwIbDAAKCRBlw/kGpdefoG4XEACD1Qf/er8EA7g23HMxYWd3FXHThrVQ
 HgiGdk5Yh632vjOm9L4sd/GCEACVQKjsu98e8o3ysitFlznEns5EAAXEbITrgKWXDDUWGYxd
 pnjj2u+GkVdsOAGk0kxczX6s+VRBhpbBI2PWnOsRJgU2n10PZ3mZD4Xu9kU2IXYmuW+e5KCA
 vTArRUdCrAtIa1k01sPipPPw6dfxx2e5asy21YOytzxuWFfJTGnVxZZSCyLUO83sh6OZhJkk
 b9rxL9wPmpN/t2IPaEKoAc0FTQZS36wAMOXkBh24PQ9gaLJvfPKpNzGD8XWR5HHF0NLIJhgg
 4ZlEXQ2fVp3XrtocHqhu4UZR4koCijgB8sB7Tb0GCpwK+C4UePdFLfhKyRdSXuvY3AHJd4CP
 4JzW0Bzq/WXY3XMOzUTYApGQpnUpdOmuQSfpV9MQO+/jo7r6yPbxT7CwRS5dcQPzUiuHLK9i
 nvjREdh84qycnx0/6dDroYhp0DFv4udxuAvt1h4wGwTPRQZerSm4xaYegEFusyhbZrI0U9tJ
 B8WrhBLXDiYlyJT6zOV2yZFuW47VrLsjYnHwn27hmxTC/7tvG3euCklmkn9Sl9IAKFu29RSo
 d5bD8kMSCYsTqtTfT6W4A3qHGvIDta3ptLYpIAOD2sY3GYq2nf3Bbzx81wZK14JdDDHUX2Rs
 6+ahAA==
In-Reply-To: <0fb20fcf-1580-41c9-946b-7daf865f4b49@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 17/01/2024 9:58 am, Jan Beulich wrote:
> 1: separate BSP-only initialization
> 2: switch some callback invocations to altcall

Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>


From xen-devel-bounces@lists.xenproject.org Thu Jan 18 00:24:07 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 18 Jan 2024 00:24:07 +0000
Received: from list by lists.xenproject.org with outflank-mailman.668587.1040890 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQGCF-0005Xg-L3; Thu, 18 Jan 2024 00:23:51 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 668587.1040890; Thu, 18 Jan 2024 00:23:51 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQGCF-0005XZ-HW; Thu, 18 Jan 2024 00:23:51 +0000
Received: by outflank-mailman (input) for mailman id 668587;
 Thu, 18 Jan 2024 00:23:50 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=HmWB=I4=kernel.org=sstabellini@srs-se1.protection.inumbo.net>)
 id 1rQGCE-0005XS-3Q
 for xen-devel@lists.xenproject.org; Thu, 18 Jan 2024 00:23:50 +0000
Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id d8575085-b597-11ee-98f2-6d05b1d4d9a1;
 Thu, 18 Jan 2024 01:23:47 +0100 (CET)
Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58])
 by dfw.source.kernel.org (Postfix) with ESMTP id 8725D611BD;
 Thu, 18 Jan 2024 00:23:46 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 08071C433F1;
 Thu, 18 Jan 2024 00:23:44 +0000 (UTC)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: d8575085-b597-11ee-98f2-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
	s=k20201202; t=1705537426;
	bh=oMN7iGxlui6PGKt8UYEPiXmJ4zyg6QjhOVJ5duxrvDY=;
	h=Date:From:To:cc:Subject:In-Reply-To:References:From;
	b=LYrdEMlAZOtgfU5QjdsqwbFkdpU551TznZvB7h9X9m0HGyxLwsnVQLk3ffHtQSQH5
	 VbiDmk5x8euLTrykkdFvYIAt+dz+hf6UDuy2GeKcHQaCvIFj681jTJK7u9qZbVzzpl
	 Er9Lx8zO6TWxhpdTn6hkGBFdIS7UeLThpTrD37ItKHcQ2LWbqt7fTHgFFiK7ZbrXpX
	 /oifcnZdbVZlAM9wUUNsYGaT9o9ulB7VwNU71n7QFtT4PhZZ251RYwaywvNMe8/6AL
	 xUl5k02wJVG7EHmWfNR2tsE7XaUyh3F8amM05bSo2F3Kgj7C1AWyBrxLQbx75YmzB+
	 DfiJPriSLzYxg==
Date: Wed, 17 Jan 2024 16:23:40 -0800 (PST)
From: Stefano Stabellini <sstabellini@kernel.org>
X-X-Sender: sstabellini@ubuntu-linux-20-04-desktop
To: Michal Orzel <michal.orzel@amd.com>
cc: Carlo Nonato <carlo.nonato@minervasys.tech>, 
    xen-devel@lists.xenproject.org, Luca Miccio <lucmiccio@gmail.com>, 
    Stefano Stabellini <sstabellini@kernel.org>, Julien Grall <julien@xen.org>, 
    Bertrand Marquis <bertrand.marquis@arm.com>, 
    Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>, 
    Marco Solieri <marco.solieri@minervasys.tech>
Subject: Re: [PATCH v4 03/11] xen/arm: add Dom0 cache coloring support
In-Reply-To: <a7a06a26-ae79-402c-96a4-a1ebfe8b5862@amd.com>
Message-ID: <alpine.DEB.2.22.394.2401171617320.2287888@ubuntu-linux-20-04-desktop>
References: <20230123154735.74832-1-carlo.nonato@minervasys.tech> <20230123154735.74832-4-carlo.nonato@minervasys.tech> <a7a06a26-ae79-402c-96a4-a1ebfe8b5862@amd.com>
User-Agent: Alpine 2.22 (DEB 394 2020-01-19)
MIME-Version: 1.0
Content-Type: text/plain; charset=US-ASCII

On Fri, 12 Jan 2024, Michal Orzel wrote:
> Hi Carlo,
> 
> On 23/01/2023 16:47, Carlo Nonato wrote:
> > 
> > 
> > From: Luca Miccio <lucmiccio@gmail.com>
> > 
> > This commit allows the user to set the cache coloring configuration for
> > Dom0 via a command line parameter.
> > Since cache coloring and static memory are incompatible, direct mapping
> > Dom0 isn't possible when coloring is enabled.
> > 
> > Here is also introduced a common configuration syntax for cache colors.
> > 
> > Signed-off-by: Luca Miccio <lucmiccio@gmail.com>
> > Signed-off-by: Marco Solieri <marco.solieri@minervasys.tech>
> > Signed-off-by: Carlo Nonato <carlo.nonato@minervasys.tech>
> > ---
> > v4:
> > - dom0 colors are dynamically allocated as for any other domain
> >   (colors are duplicated in dom0_colors and in the new array, but logic
> >   is simpler)
> > ---
> >  docs/misc/arm/cache-coloring.rst        | 32 ++++++++++++++++++++++---
> >  xen/arch/arm/domain_build.c             | 17 +++++++++++--
> >  xen/arch/arm/include/asm/llc_coloring.h |  4 ++++
> >  xen/arch/arm/llc_coloring.c             | 14 +++++++++++
> >  4 files changed, 62 insertions(+), 5 deletions(-)
> > 
> > diff --git a/docs/misc/arm/cache-coloring.rst b/docs/misc/arm/cache-coloring.rst
> > index 0244d2f606..c2e0e87426 100644
> > --- a/docs/misc/arm/cache-coloring.rst
> > +++ b/docs/misc/arm/cache-coloring.rst
> > @@ -83,12 +83,38 @@ manually set the way size it's left for the user to overcome failing situations
> >  or for debugging/testing purposes. See `Coloring parameters and domain
> >  configurations`_ section for more information on that.
> > 
> > +Colors selection format
> > +***********************
> > +
> > +Regardless of the memory pool that has to be colored (Xen, Dom0/DomUs),
> > +the color selection can be expressed using the same syntax. In particular a
> > +comma-separated list of colors or ranges of colors is used.
> > +Ranges are hyphen-separated intervals (such as `0-4`) and are inclusive on both
> > +sides.
> > +
> > +Note that:
> > + - no spaces are allowed between values.
> > + - no overlapping ranges or duplicated colors are allowed.
> > + - values must be written in ascending order.
> > +
> > +Examples:
> > +
> > ++---------------------+-----------------------------------+
> > +|**Configuration**    |**Actual selection**               |
> > ++---------------------+-----------------------------------+
> > +|  1-2,5-8            | [1, 2, 5, 6, 7, 8]                |
> > ++---------------------+-----------------------------------+
> > +|  4-8,10,11,12       | [4, 5, 6, 7, 8, 10, 11, 12]       |
> > ++---------------------+-----------------------------------+
> > +|  0                  | [0]                               |
> > ++---------------------+-----------------------------------+
> > +
> >  Coloring parameters and domain configurations
> >  *********************************************
> > 
> > -LLC way size (as previously discussed) can be set using the appropriate command
> > -line parameter. See the relevant documentation in
> > -"docs/misc/xen-command-line.pandoc".
> > +LLC way size (as previously discussed) and Dom0 colors can be set using the
> > +appropriate command line parameters. See the relevant documentation
> > +in "docs/misc/xen-command-line.pandoc".
> > 
> >  **Note:** If no color configuration is provided for a domain, the default one,
> >  which corresponds to all available colors, is used instead.
> > diff --git a/xen/arch/arm/domain_build.c b/xen/arch/arm/domain_build.c
> > index f35f4d2456..093d4ad6f6 100644
> > --- a/xen/arch/arm/domain_build.c
> > +++ b/xen/arch/arm/domain_build.c
> > @@ -2,6 +2,7 @@
> >  #include <xen/init.h>
> >  #include <xen/compile.h>
> >  #include <xen/lib.h>
> > +#include <xen/llc_coloring.h>
> >  #include <xen/mm.h>
> >  #include <xen/param.h>
> >  #include <xen/domain_page.h>
> > @@ -4014,7 +4015,10 @@ static int __init construct_dom0(struct domain *d)
> >      /* type must be set before allocate_memory */
> >      d->arch.type = kinfo.type;
> >  #endif
> > -    allocate_memory_11(d, &kinfo);
> > +    if ( is_domain_llc_colored(d) )
> > +        allocate_memory(d, &kinfo);
> While doing some checks, I realized that the issue from previous series is still present.
> Given that dom0 is hwdom, how are you going to prevent conflicts between allocated RAM and HW resources
> that are to be mapped to dom0?

Are you referring to the address ranges picked for RAM region and how to
make sure they don't conflict with something else (e.g. the MMIO region
of a device)?

I thought that for dom0 we were reusing the same address layout of the
host, so device MMIO would be mapped 1:1, memory would not be mapped 1:1
(due to cache coloring) but it would be mapped to the same guest address
ranges corresponding to RAM addresses on the host. Is it not the case in
this version of the patch series?


From xen-devel-bounces@lists.xenproject.org Thu Jan 18 01:36:41 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 18 Jan 2024 01:36:41 +0000
Received: from list by lists.xenproject.org with outflank-mailman.668591.1040900 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQHKT-0001dD-Ne; Thu, 18 Jan 2024 01:36:25 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 668591.1040900; Thu, 18 Jan 2024 01:36:25 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQHKT-0001d6-KX; Thu, 18 Jan 2024 01:36:25 +0000
Received: by outflank-mailman (input) for mailman id 668591;
 Thu, 18 Jan 2024 01:36:24 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=cCV5=I4=raptorengineering.com=sanastasio@srs-se1.protection.inumbo.net>)
 id 1rQHKS-0001d0-F6
 for xen-devel@lists.xenproject.org; Thu, 18 Jan 2024 01:36:24 +0000
Received: from raptorengineering.com (mail.raptorengineering.com
 [23.155.224.40]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id fa258bfd-b5a1-11ee-9b0f-b553b5be7939;
 Thu, 18 Jan 2024 02:36:20 +0100 (CET)
Received: from localhost (localhost [127.0.0.1])
 by mail.rptsys.com (Postfix) with ESMTP id 0B4CA82855B4;
 Wed, 17 Jan 2024 19:36:18 -0600 (CST)
Received: from mail.rptsys.com ([127.0.0.1])
 by localhost (vali.starlink.edu [127.0.0.1]) (amavisd-new, port 10032)
 with ESMTP id fmX8emFQppfv; Wed, 17 Jan 2024 19:36:15 -0600 (CST)
Received: from localhost (localhost [127.0.0.1])
 by mail.rptsys.com (Postfix) with ESMTP id 805C6828673C;
 Wed, 17 Jan 2024 19:36:15 -0600 (CST)
Received: from mail.rptsys.com ([127.0.0.1])
 by localhost (vali.starlink.edu [127.0.0.1]) (amavisd-new, port 10026)
 with ESMTP id I0jRgqgVtSQK; Wed, 17 Jan 2024 19:36:15 -0600 (CST)
Received: from [10.11.0.2] (5.edge.rptsys.com [23.155.224.38])
 by mail.rptsys.com (Postfix) with ESMTPSA id 1E23D82855B4;
 Wed, 17 Jan 2024 19:36:15 -0600 (CST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: fa258bfd-b5a1-11ee-9b0f-b553b5be7939
DKIM-Filter: OpenDKIM Filter v2.10.3 mail.rptsys.com 805C6828673C
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
	d=raptorengineering.com; s=B8E824E6-0BE2-11E6-931D-288C65937AAD;
	t=1705541775; bh=5mMoC6yhXF4FzkCxiwacYGagt/Ay54t/lBye6Jbgy30=;
	h=Message-ID:Date:MIME-Version:To:From;
	b=A903x0++P235fBGi3nV2YC+jMl+or4fkZNG9rGAf7uY5r2GccCM3Sejs4NHzQkAvg
	 AccRItLySep+QtYiaVDJSYjzmVfBJnCqwhAkDm0BahmaRh1wIjWT3GtYa5f+8jL4fc
	 98Q1UoP6AYMTwkIJ+ECWMjjFjnYG+mTFp7/lmCCU=
X-Virus-Scanned: amavisd-new at rptsys.com
Message-ID: <7ef844df-3337-40ac-8d31-adabd3c3a3d7@raptorengineering.com>
Date: Wed, 17 Jan 2024 19:36:14 -0600
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2 5/7] xen/ppc: Enable bootfdt and boot allocator
To: Julien Grall <julien@xen.org>, xen-devel@lists.xenproject.org
Cc: Timothy Pearson <tpearson@raptorengineering.com>,
 Jan Beulich <jbeulich@suse.com>
References: <cover.1702607884.git.sanastasio@raptorengineering.com>
 <aa67a0dacab0e3f39dabeb30e31732d617cadde1.1702607884.git.sanastasio@raptorengineering.com>
 <0b9c3c86-2fa2-47f1-aa7f-4d833ff86430@xen.org>
Content-Language: en-US
From: Shawn Anastasio <sanastasio@raptorengineering.com>
In-Reply-To: <0b9c3c86-2fa2-47f1-aa7f-4d833ff86430@xen.org>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

Hi Julien,

On 12/20/23 7:49 AM, Julien Grall wrote:
> Hi,
> 
> On 15/12/2023 02:44, Shawn Anastasio wrote:
>> diff --git a/xen/common/device-tree/bootfdt.c
>> b/xen/common/device-tree/bootfdt.c
>> index 796ac01c18..7ddfcc7e2a 100644
>> --- a/xen/common/device-tree/bootfdt.c
>> +++ b/xen/common/device-tree/bootfdt.c
>> @@ -543,12 +543,33 @@ size_t __init boot_fdt_info(const void *fdt,
>> paddr_t paddr)
>>       if ( ret < 0 )
>>           panic("No valid device tree\n");
>>   -    add_boot_module(BOOTMOD_FDT, paddr, fdt_totalsize(fdt), false);
>> -
>>       ret = device_tree_for_each_node((void *)fdt, 0, early_scan_node,
>> NULL);
>>       if ( ret )
>>           panic("Early FDT parsing failed (%d)\n", ret);
>>   +    /*
>> +     * Add module for the FDT itself after the device tree has been
>> parsed. This
>> +     * is required on ppc64le where the device tree passed to Xen may
>> have been
>> +     * allocated by skiboot, in which case it will exist within a
>> reserved
>> +     * region and this call will fail. This is fine, however, since
>> either way
>> +     * the allocator will know not to step on the device tree.
>> +     */
>> +    add_boot_module(BOOTMOD_FDT, paddr, fdt_totalsize(fdt), false);
> 
> The consequence is BOOTMOD_FDT will not be added. AFAICT, Arm doesn't
> try to access BOOTMOD_FDT, but I think it would be worth to print message.
>

A message will already be printed by `meminfo_overlap_check` in setup.c
when this condition is hit, like this:

(XEN) Region: [0x0000003076e9b0, 0x00000030775215) overlapping with
bank[3]: [0x00000030600000, 0x00000031000000)

If you'd like me to add another more descriptive message here to let the
user know that BOOTMOD_FDT wasn't added I could do that, though.

>> +
>> +    /*
>> +     * Xen relocates itself at the ppc64 entrypoint, so we need to
>> manually mark
>> +     * the kernel module.
>> +     */
>> +    if ( IS_ENABLED(CONFIG_PPC64) ) {
>> +        paddr_t xen_start, xen_end;
>> +
>> +        xen_start = __pa(_start);
>> +        xen_end = PAGE_ALIGN(__pa(_end));
>> +        if ( !add_boot_module(BOOTMOD_XEN, xen_start, xen_end, false) )
>> +            panic("Xen overlaps reserved memory! %016lx - %016lx\n",
>> xen_start,
>> +                xen_end);
>> +    }
> 
> Can you explain why this is added here rather than in the caller of
> boot_fdt_info()? Either before or after?
> 
> If after, I guess it is because of early_print_info(). In which case, I
> would suggest to move off early_print_info() to caller on each
> architecture.
>

Right, it can't be after due to the early_print_info() call, but doing
it before actually works fine. Thank you for pointing that out -- I'll
change this in the next revision.

> Cheers,
>

Thanks,
Shawn


From xen-devel-bounces@lists.xenproject.org Thu Jan 18 01:37:51 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 18 Jan 2024 01:37:51 +0000
Received: from list by lists.xenproject.org with outflank-mailman.668593.1040910 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQHLq-0002Ri-2D; Thu, 18 Jan 2024 01:37:50 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 668593.1040910; Thu, 18 Jan 2024 01:37:50 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQHLp-0002Rb-V7; Thu, 18 Jan 2024 01:37:49 +0000
Received: by outflank-mailman (input) for mailman id 668593;
 Thu, 18 Jan 2024 01:37:48 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=cCV5=I4=raptorengineering.com=sanastasio@srs-se1.protection.inumbo.net>)
 id 1rQHLo-0002RM-L9
 for xen-devel@lists.xenproject.org; Thu, 18 Jan 2024 01:37:48 +0000
Received: from raptorengineering.com (mail.raptorengineering.com
 [23.155.224.40]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 2e436043-b5a2-11ee-98f2-6d05b1d4d9a1;
 Thu, 18 Jan 2024 02:37:46 +0100 (CET)
Received: from localhost (localhost [127.0.0.1])
 by mail.rptsys.com (Postfix) with ESMTP id C60A082855B4;
 Wed, 17 Jan 2024 19:37:45 -0600 (CST)
Received: from mail.rptsys.com ([127.0.0.1])
 by localhost (vali.starlink.edu [127.0.0.1]) (amavisd-new, port 10032)
 with ESMTP id ujT5PvYBVMjx; Wed, 17 Jan 2024 19:37:45 -0600 (CST)
Received: from localhost (localhost [127.0.0.1])
 by mail.rptsys.com (Postfix) with ESMTP id 3A980828563D;
 Wed, 17 Jan 2024 19:37:45 -0600 (CST)
Received: from mail.rptsys.com ([127.0.0.1])
 by localhost (vali.starlink.edu [127.0.0.1]) (amavisd-new, port 10026)
 with ESMTP id 5NAssk0TXYAt; Wed, 17 Jan 2024 19:37:45 -0600 (CST)
Received: from [10.11.0.2] (5.edge.rptsys.com [23.155.224.38])
 by mail.rptsys.com (Postfix) with ESMTPSA id C414D82855B4;
 Wed, 17 Jan 2024 19:37:44 -0600 (CST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 2e436043-b5a2-11ee-98f2-6d05b1d4d9a1
DKIM-Filter: OpenDKIM Filter v2.10.3 mail.rptsys.com 3A980828563D
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
	d=raptorengineering.com; s=B8E824E6-0BE2-11E6-931D-288C65937AAD;
	t=1705541865; bh=jTq2tsyCJHfP7v1jfSSaEx7F6HeAvpiOPz6e13Bhljw=;
	h=Message-ID:Date:MIME-Version:To:From;
	b=e4riNZDHZELvuL2O+cpm6505FUrdLu3dzwIGDsEMPWA5p/hd3A0x/4cCqX3dNuRoW
	 QA1Rx53hVSw9w/2tUrU7eyX7brc/Um81dyIKV9t6xOdu70z4Y7Ri208RmPG/PIF2jB
	 AbmIuYlBeYxkwjellVL5clyDcQDF/NL/4Apg1dzA=
X-Virus-Scanned: amavisd-new at rptsys.com
Message-ID: <f8367cf9-d85f-4a0a-ae86-4472c0d23167@raptorengineering.com>
Date: Wed, 17 Jan 2024 19:37:44 -0600
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2 6/7] xen/ppc: mm-radix: Replace debug printing code
 with printk
Content-Language: en-US
To: Jan Beulich <jbeulich@suse.com>
Cc: Timothy Pearson <tpearson@raptorengineering.com>,
 xen-devel@lists.xenproject.org
References: <cover.1702607884.git.sanastasio@raptorengineering.com>
 <a45e841068ef66cc8c1d836a2452910fd3effd50.1702607884.git.sanastasio@raptorengineering.com>
 <002559fc-e57c-48e2-b99d-db352c2fdf60@suse.com>
From: Shawn Anastasio <sanastasio@raptorengineering.com>
In-Reply-To: <002559fc-e57c-48e2-b99d-db352c2fdf60@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

Hi Jan,

On 12/20/23 5:48 AM, Jan Beulich wrote:
> On 15.12.2023 03:44, Shawn Anastasio wrote:
>> Now that we have common code building, there's no need to keep the old
>> itoa64+debug print function in mm-radix.c
>>
>> Signed-off-by: Shawn Anastasio <sanastasio@raptorengineering.com>
> 
> Looks okay, just one question:
> 
>> --- a/xen/arch/ppc/mm-radix.c
>> +++ b/xen/arch/ppc/mm-radix.c
>> @@ -15,6 +15,12 @@
>>  
>>  void enable_mmu(void);
>>  
>> +#ifdef NDEBUG
>> +#define radix_dprintk(...)
>> +#else
>> +#define radix_dprintk(msg, ...) printk(XENLOG_DEBUG msg, ## __VA_ARGS__)
>> +#endif
> 
> Do you really mean NDEBUG here, and not CONFIG_DEBUG? NDEBUG is generally
> supposed to only control ASSERT() behavior.
>

Thanks for pointing this out. CONFIG_DEBUG does indeed seem to be a
better fit here. Will change in v3.

> Jan

Thanks,
Shawn


From xen-devel-bounces@lists.xenproject.org Thu Jan 18 01:50:11 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 18 Jan 2024 01:50:11 +0000
Received: from list by lists.xenproject.org with outflank-mailman.668601.1040920 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQHXg-0005Nm-7z; Thu, 18 Jan 2024 01:50:04 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 668601.1040920; Thu, 18 Jan 2024 01:50:04 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQHXg-0005NC-4c; Thu, 18 Jan 2024 01:50:04 +0000
Received: by outflank-mailman (input) for mailman id 668601;
 Thu, 18 Jan 2024 01:50:02 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rQHXe-0004yp-5j; Thu, 18 Jan 2024 01:50:02 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rQHXd-0008Ac-Px; Thu, 18 Jan 2024 01:50:01 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rQHXd-0003Gz-7w; Thu, 18 Jan 2024 01:50:01 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rQHXd-00077G-7R; Thu, 18 Jan 2024 01:50:01 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=sfm3LaYzJVSlZQgdEDzC/6CYEfph1jV65j3X62kiOOA=; b=sWDpEWnTaKUeKi8iT2Mo1aD+uv
	qCjhuLsxMUgZwr842IMlawMhKvbAL0TAIq5OrRT5/rzN0ocBShixZ/VtiUa6TjG/DGZpQKTzYXGch
	/AEpOUfZLc/vRnqPFGkAn/LTHkIp9DeiTsLGsA4foIHymgV0umsIS+1L7qdFnjdCBo4c=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184384-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [xen-unstable test] 184384: tolerable FAIL
X-Osstest-Failures:
    xen-unstable:test-armhf-armhf-libvirt-qcow2:guest-start:fail:heisenbug
    xen-unstable:test-amd64-amd64-xl-xsm:guest-localmigrate/x10:fail:heisenbug
    xen-unstable:test-amd64-amd64-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-qcow2:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-xl-qemuu-win7-amd64:windows-install:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-amd64-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-raw:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-amd64-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-amd64-qemuu-nested-amd:debian-hvm-install/l1/l2:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-i386-libvirt-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-libvirt:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-pvshim:guest-start:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-xsm:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-credit2:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-credit2:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-libvirt-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-libvirt-xsm:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-thunderx:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-thunderx:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-credit1:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-credit1:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-multivcpu:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-multivcpu:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit2:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit2:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-libvirt-raw:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-libvirt-raw:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-libvirt-raw:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt-vhd:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-vhd:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-vhd:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-raw:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-vhd:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-vhd:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit1:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit1:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-rtds:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-rtds:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-arndale:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-arndale:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-qcow2:migrate-support-check:fail:nonblocking
X-Osstest-Versions-This:
    xen=f3f6c500e2dbd23af77c207e2cf4b496fffa1b0d
X-Osstest-Versions-That:
    xen=f3f6c500e2dbd23af77c207e2cf4b496fffa1b0d
From: osstest service owner <osstest-admin@xenproject.org>
Date: Thu, 18 Jan 2024 01:50:01 +0000

flight 184384 xen-unstable real [real]
http://logs.test-lab.xenproject.org/osstest/logs/184384/

Failures :-/ but no regressions.

Tests which are failing intermittently (not blocking):
 test-armhf-armhf-libvirt-qcow2 13 guest-start    fail in 184374 pass in 184384
 test-amd64-amd64-xl-xsm      20 guest-localmigrate/x10     fail pass in 184374

Tests which did not succeed, but are not blocking:
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop fail in 184374 blocked in 184384
 test-armhf-armhf-libvirt-qcow2 15 saverestore-support-check   fail like 184365
 test-amd64-amd64-xl-qemuu-win7-amd64 12 windows-install       fail like 184365
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 184374
 test-amd64-amd64-xl-qemut-win7-amd64 19 guest-stop            fail like 184374
 test-amd64-i386-xl-qemuu-win7-amd64 19 guest-stop             fail like 184374
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 184374
 test-amd64-i386-xl-qemut-ws16-amd64 19 guest-stop             fail like 184374
 test-armhf-armhf-libvirt-raw 15 saverestore-support-check    fail  like 184374
 test-amd64-i386-xl-qemut-win7-amd64 19 guest-stop             fail like 184374
 test-amd64-amd64-xl-qemut-ws16-amd64 19 guest-stop            fail like 184374
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 184374
 test-amd64-i386-xl-qemuu-ws16-amd64 19 guest-stop             fail like 184374
 test-amd64-i386-libvirt-xsm  15 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-amd64-i386-libvirt      15 migrate-support-check        fail   never pass
 test-amd64-i386-xl-pvshim    14 guest-start                  fail   never pass
 test-arm64-arm64-xl          15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-xsm      15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl          16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-xsm      16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-credit2  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit2  16 saverestore-support-check    fail   never pass
 test-arm64-arm64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-xsm 16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-thunderx 15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-thunderx 16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-credit1  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit1  16 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt     15 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-armhf-armhf-libvirt     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-multivcpu 15 migrate-support-check        fail  never pass
 test-armhf-armhf-xl-multivcpu 16 saverestore-support-check    fail  never pass
 test-armhf-armhf-xl-credit2  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit2  16 saverestore-support-check    fail   never pass
 test-amd64-i386-libvirt-raw  14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 15 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-vhd 14 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-vhd      14 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-vhd      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-raw 14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl          15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-credit1  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit1  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-rtds     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-rtds     16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-arndale  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-arndale  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-qcow2 14 migrate-support-check        fail never pass

version targeted for testing:
 xen                  f3f6c500e2dbd23af77c207e2cf4b496fffa1b0d
baseline version:
 xen                  f3f6c500e2dbd23af77c207e2cf4b496fffa1b0d

Last test of basis   184384  2024-01-17 10:01:49 Z    0 days
Testing same since                          (not found)         0 attempts

jobs:
 build-amd64-xsm                                              pass    
 build-arm64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64-xtf                                              pass    
 build-amd64                                                  pass    
 build-arm64                                                  pass    
 build-armhf                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-arm64-libvirt                                          pass    
 build-armhf-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-prev                                             pass    
 build-i386-prev                                              pass    
 build-amd64-pvops                                            pass    
 build-arm64-pvops                                            pass    
 build-armhf-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-xtf-amd64-amd64-1                                       pass    
 test-xtf-amd64-amd64-2                                       pass    
 test-xtf-amd64-amd64-3                                       pass    
 test-xtf-amd64-amd64-4                                       pass    
 test-xtf-amd64-amd64-5                                       pass    
 test-amd64-amd64-xl                                          pass    
 test-amd64-coresched-amd64-xl                                pass    
 test-arm64-arm64-xl                                          pass    
 test-armhf-armhf-xl                                          pass    
 test-amd64-i386-xl                                           pass    
 test-amd64-coresched-i386-xl                                 pass    
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm           pass    
 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm            pass    
 test-amd64-amd64-xl-qemut-stubdom-debianhvm-amd64-xsm        pass    
 test-amd64-i386-xl-qemut-stubdom-debianhvm-amd64-xsm         pass    
 test-amd64-amd64-xl-qemut-debianhvm-i386-xsm                 pass    
 test-amd64-i386-xl-qemut-debianhvm-i386-xsm                  pass    
 test-amd64-amd64-xl-qemuu-debianhvm-i386-xsm                 pass    
 test-amd64-i386-xl-qemuu-debianhvm-i386-xsm                  pass    
 test-amd64-amd64-libvirt-xsm                                 pass    
 test-arm64-arm64-libvirt-xsm                                 pass    
 test-amd64-i386-libvirt-xsm                                  pass    
 test-amd64-amd64-xl-xsm                                      fail    
 test-arm64-arm64-xl-xsm                                      pass    
 test-amd64-i386-xl-xsm                                       pass    
 test-amd64-amd64-qemuu-nested-amd                            fail    
 test-amd64-amd64-xl-pvhv2-amd                                pass    
 test-amd64-i386-qemut-rhel6hvm-amd                           pass    
 test-amd64-i386-qemuu-rhel6hvm-amd                           pass    
 test-amd64-amd64-dom0pvh-xl-amd                              pass    
 test-amd64-amd64-xl-qemut-debianhvm-amd64                    pass    
 test-amd64-i386-xl-qemut-debianhvm-amd64                     pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64                    pass    
 test-amd64-i386-xl-qemuu-debianhvm-amd64                     pass    
 test-amd64-i386-freebsd10-amd64                              pass    
 test-amd64-amd64-qemuu-freebsd11-amd64                       pass    
 test-amd64-amd64-qemuu-freebsd12-amd64                       pass    
 test-amd64-amd64-xl-qemuu-ovmf-amd64                         pass    
 test-amd64-i386-xl-qemuu-ovmf-amd64                          pass    
 test-amd64-amd64-xl-qemut-win7-amd64                         fail    
 test-amd64-i386-xl-qemut-win7-amd64                          fail    
 test-amd64-amd64-xl-qemuu-win7-amd64                         fail    
 test-amd64-i386-xl-qemuu-win7-amd64                          fail    
 test-amd64-amd64-xl-qemut-ws16-amd64                         fail    
 test-amd64-i386-xl-qemut-ws16-amd64                          fail    
 test-amd64-amd64-xl-qemuu-ws16-amd64                         fail    
 test-amd64-i386-xl-qemuu-ws16-amd64                          fail    
 test-armhf-armhf-xl-arndale                                  pass    
 test-amd64-amd64-examine-bios                                pass    
 test-amd64-i386-examine-bios                                 pass    
 test-amd64-amd64-xl-credit1                                  pass    
 test-arm64-arm64-xl-credit1                                  pass    
 test-armhf-armhf-xl-credit1                                  pass    
 test-amd64-amd64-xl-credit2                                  pass    
 test-arm64-arm64-xl-credit2                                  pass    
 test-armhf-armhf-xl-credit2                                  pass    
 test-amd64-amd64-xl-qemuu-dmrestrict-amd64-dmrestrict        pass    
 test-amd64-i386-xl-qemuu-dmrestrict-amd64-dmrestrict         pass    
 test-amd64-amd64-examine                                     pass    
 test-arm64-arm64-examine                                     pass    
 test-armhf-armhf-examine                                     pass    
 test-amd64-i386-examine                                      pass    
 test-amd64-i386-freebsd10-i386                               pass    
 test-amd64-amd64-qemuu-nested-intel                          pass    
 test-amd64-amd64-xl-pvhv2-intel                              pass    
 test-amd64-i386-qemut-rhel6hvm-intel                         pass    
 test-amd64-i386-qemuu-rhel6hvm-intel                         pass    
 test-amd64-amd64-dom0pvh-xl-intel                            pass    
 test-amd64-amd64-libvirt                                     pass    
 test-armhf-armhf-libvirt                                     pass    
 test-amd64-i386-libvirt                                      pass    
 test-amd64-amd64-livepatch                                   pass    
 test-amd64-i386-livepatch                                    pass    
 test-amd64-amd64-migrupgrade                                 pass    
 test-amd64-i386-migrupgrade                                  pass    
 test-amd64-amd64-xl-multivcpu                                pass    
 test-armhf-armhf-xl-multivcpu                                pass    
 test-amd64-amd64-pair                                        pass    
 test-amd64-i386-pair                                         pass    
 test-amd64-amd64-libvirt-pair                                pass    
 test-amd64-i386-libvirt-pair                                 pass    
 test-amd64-amd64-xl-pvshim                                   pass    
 test-amd64-i386-xl-pvshim                                    fail    
 test-amd64-amd64-pygrub                                      pass    
 test-armhf-armhf-libvirt-qcow2                               pass    
 test-amd64-amd64-xl-qcow2                                    pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-armhf-armhf-libvirt-raw                                 pass    
 test-amd64-i386-libvirt-raw                                  pass    
 test-amd64-amd64-xl-rtds                                     pass    
 test-armhf-armhf-xl-rtds                                     pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64-shadow             pass    
 test-amd64-i386-xl-qemuu-debianhvm-amd64-shadow              pass    
 test-amd64-amd64-xl-shadow                                   pass    
 test-amd64-i386-xl-shadow                                    pass    
 test-arm64-arm64-xl-thunderx                                 pass    
 test-amd64-amd64-examine-uefi                                pass    
 test-amd64-i386-examine-uefi                                 pass    
 test-amd64-amd64-libvirt-vhd                                 pass    
 test-arm64-arm64-xl-vhd                                      pass    
 test-armhf-armhf-xl-vhd                                      pass    
 test-amd64-i386-xl-vhd                                       pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Published tested tree is already up to date.



From xen-devel-bounces@lists.xenproject.org Thu Jan 18 06:24:36 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 18 Jan 2024 06:24:36 +0000
Received: from list by lists.xenproject.org with outflank-mailman.668610.1040930 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQLp4-00036U-Tp; Thu, 18 Jan 2024 06:24:18 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 668610.1040930; Thu, 18 Jan 2024 06:24:18 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQLp4-00036N-QQ; Thu, 18 Jan 2024 06:24:18 +0000
Received: by outflank-mailman (input) for mailman id 668610;
 Thu, 18 Jan 2024 06:24:18 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=fErA=I4=gmail.com=simonpatp@srs-se1.protection.inumbo.net>)
 id 1rQLp3-00036H-H3
 for xen-devel@lists.xenproject.org; Thu, 18 Jan 2024 06:24:18 +0000
Received: from mail-lj1-x235.google.com (mail-lj1-x235.google.com
 [2a00:1450:4864:20::235])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 2fffeb43-b5ca-11ee-9b0f-b553b5be7939;
 Thu, 18 Jan 2024 07:24:09 +0100 (CET)
Received: by mail-lj1-x235.google.com with SMTP id
 38308e7fff4ca-2cd0f4797aaso125974471fa.0
 for <xen-devel@lists.xenproject.org>; Wed, 17 Jan 2024 22:24:08 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 2fffeb43-b5ca-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1705559048; x=1706163848; darn=lists.xenproject.org;
        h=cc:to:subject:message-id:date:from:in-reply-to:references
         :mime-version:from:to:cc:subject:date:message-id:reply-to;
        bh=vDDN6Gh677LVDfoDkgWmda0kGq8sAqMus/6ep2DSMDc=;
        b=ZbB9MXRKr9h6J2/iu0d4X3HSzAs3q31S/zgZLYtewcDwmgCp2HWnndn07X5cIV8b9V
         jdsUj5brSlQWB1eIL999ziM8o1lapezLLDWW0pH/0lyoBeU/g9HrI38EFIkC0NDQn3LP
         uDyPMdL7KXxhLVek8Z05KlSJEgCJ1e2r8wKsONyS4NL71KNtGxN1y1CD3YGqLTCS/vCG
         sPuP7AOmJq87S6Auxtjj7c97ceqBdcBIXm9m86UU8HffFvTuL4CwgXvHr483tlSOhYdv
         zfaPsJ4RKi3TvuauNMofdf9iENL8wcSpvdyPHLJ5u6gTX2ugoFKgXBFYwcdxbTaHgXsv
         ImDQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705559048; x=1706163848;
        h=cc:to:subject:message-id:date:from:in-reply-to:references
         :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id
         :reply-to;
        bh=vDDN6Gh677LVDfoDkgWmda0kGq8sAqMus/6ep2DSMDc=;
        b=kyaSy/E23Gji79d0C1/jzJ0SkDTMgTKuEJQF/XuKurYhRU+O76bYy+4/9ZwLY3RuSl
         SEK1oRaM3Rrcky1PKhhOlaSqz8vKhnRvSrM4+zA/qUMwIB5wxYaSfCFt2hhBxQ4QMgmk
         j1xuQgBUB5Zbu9L1WqDYGhlGhpqw2IKtDDgJDSiz2ti4d9MTH0Q9U5MJw2aG/4tiOmfC
         FcNzptFh57qFLzsUnpGMbrRZpr4oZE7VgXtWSYCu+CyKQI7BfgMzQ0RcCZXw5W9AEuyK
         jfegoZ8qPyddhmSBj0+10wkUUnPs7TG9xDTNssupjxXbwkyx41tAhDsmu1LCEuCSR1nf
         +9vw==
X-Gm-Message-State: AOJu0YxsmsvLkasd+SREpCwV38i6VtMAF4WykKNLBp7xzZpSj5pVyCKo
	HYOX/pESO5jnCyqrvl1xpbL0Lrio4KXnw9dck5c7RnGX+V1ssQsDhg/jXSPg+RSpxuw+7n2n4tq
	+bVIf+HbwvNW0gMTetPoESC3t8M2edAdS9hY=
X-Google-Smtp-Source: AGHT+IEk0dd6coDwVL/oHZLMKLuNabvna6rcMS0sNqIBYOdmg0JUOt15WQAlKQyejSJRM/LjwAMiuncUQ8qsOS0cy4I=
X-Received: by 2002:a2e:a550:0:b0:2cd:f33a:2984 with SMTP id
 e16-20020a2ea550000000b002cdf33a2984mr290832ljn.9.1705559048056; Wed, 17 Jan
 2024 22:24:08 -0800 (PST)
MIME-Version: 1.0
References: <CAOCpoWdOH=xGxiQSC1c5Ueb1THxAjH4WiZbCZq-QT+d_KAk3SA@mail.gmail.com>
 <1708c3d7-662a-44bc-b9b3-4ab9f8642d7b@suse.com> <dcaf9d8d-ad5a-4714-936b-79ed0e587f9d@suse.com>
 <CAOCpoWeowZPuQTeBp9nu8p8CDtE=u++wN_UqRoABZtB57D50Qw@mail.gmail.com>
 <ac742d12-ec91-4215-bb42-82a145924b4f@suse.com> <CAOCpoWfQmkhN3hms1xuotSUZzVzR99i9cNGGU2r=yD5PjysMiQ@mail.gmail.com>
 <fa23a590-5869-4e11-8998-1d03742c5919@suse.com>
In-Reply-To: <fa23a590-5869-4e11-8998-1d03742c5919@suse.com>
From: Patrick Plenefisch <simonpatp@gmail.com>
Date: Thu, 18 Jan 2024 01:23:56 -0500
Message-ID: <CAOCpoWf4CMkCWx8uR2NbFrZrKSS78wj1-hFsAUqsjCfsmqooVA@mail.gmail.com>
Subject: Re: E820 memory allocation issue on Threadripper platforms
To: Jan Beulich <jbeulich@suse.com>
Cc: xen-devel@lists.xenproject.org, Juergen Gross <jgross@suse.com>, 
	=?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
Content-Type: multipart/mixed; boundary="0000000000003412b4060f3269fc"

--0000000000003412b4060f3269fc
Content-Type: multipart/alternative; boundary="0000000000003412b1060f3269fa"

--0000000000003412b1060f3269fa
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

On Wed, Jan 17, 2024 at 3:46=E2=80=AFAM Jan Beulich <jbeulich@suse.com> wro=
te:

> On 17.01.2024 07:12, Patrick Plenefisch wrote:
> > On Tue, Jan 16, 2024 at 4:33=E2=80=AFAM Jan Beulich <jbeulich@suse.com>=
 wrote:
> >
> >> On 16.01.2024 01:22, Patrick Plenefisch wrote:
> >>> I managed to set up serial access and saved the output with the
> requested
> >>> flags as the attached logs
> >>
> >> Thanks. While you didn't ...
> >>
> >>
> >> ... fiddle with the Linux message,  ...
> >>
> >
> > I last built the kernel over a decade ago, and so was hoping to not hav=
e
> to
> > look up how to do that again, but I can research how to go about that
> again
> > if it would help?
> >
>

The nice thing about threadripper is the fast kernel build times. I have
added that patch to the kernel and confirmed:

about to get started...
Xen hypervisor allocated kernel memory conflicts with E820 map: 0x1000000 -
0x4400000
(XEN) Hardware Dom0 halted: halting machine




> >
> > I'm currently talking to the vendor's support team and testing a beta
> BIOS
> > for unrelated reasons, is there something specific I should forward to
> > them, either as a question or as a request for a fix?
>
> Well, first it would need figuring whether the "interesting" regions
> are being put in place by firmware of the boot loader. If it's firmware
> (pretty likely at least for the region you're having trouble with), you
> may want to ask them to re-do where they place that specific data.
>

This section changes boot-to-boot and grub vs EFI direct load, but my
untrained eyes don't see an obvoius pattern. I've attached several logs.
Name format:

xen-XENVERSION_LOADER_KERNELNAME_TYPE.log

where XENVERSION is 4.17 (packaged in debian 12) or 4.18 (I built from
source) or 4.18p (I applied the patch you mention below and built from
source)

where LOADER is grub for grub2 (from debian 12) or UEFI (direct boot via
efibootmgr-configured UEFI entry)

where KERNELNAME is either empty (PVH failure), or linuxpatch (linux with
the patch requested above), or linuxoffset (with PHYSICAL_START=3D2MiB), or
linux6 (debian 12 kernel)

where TYPE is either pvh or pv

For the two logs that actually boooted (linuxoffset), I truncated them
during pcie initialization, but they did go all the way to give me a login
screen



>
> > As someone who hasn't built a kernel in over a decade, should I figure
> out
> > how to do a kernel build with CONFIG_PHYSICAL_START=3D0x2000000 and rep=
ort
> > back?
>
> That was largely a suggestion to perhaps allow you to gain some
> workable setup. It would be of interest to us largely for completeness.
>

Typo aside, setting the boot to 2MiB works! It works better for PV, while
PVH has some graphics card issues, namely that I have to interact over
serial and dmesg has some concerning radeon errors


>
>
> Hmm, that's sad. The more that the error messages aren't really
> informative. You did check though that your kernel is PVH-capable?
> (With a debug build of Xen, and with suitably high logging level,
> various of the ELF properties would be logged. Such output may or
> may not give further hints towards what's actually wrong.




> Albeit
> you using 4.17 this would further require you to pull in commit
> ea3dabfb80d7 ["x86/PVH: allow Dom0 ELF parsing to be verbose"].)
>

This was applied in "4.18p" logs (above)


>
> But wait - aren't you running into the same collision there with
> that memory region? I think that explains the unhelpful output.
> Whereas I assume the native kernel can deal with that as long as
> it's built with CONFIG_RELOCATABLE=3Dy. I don't think we want to
> get into the business of interpreting the kernel's internal
> representation of the relocations needed, so it's not really
> clear to me what we might do in such a case. Perhaps the only way
> is to signal to the kernel that it needs to apply relocations
> itself (which in turn would require the kernel to signal to us
> that it's capable of doing so). Cc-ing Roger in case he has any
> neat idea.
>

Yes, PVH, PV, and Relocatable are all enabled in the debian kernel I was
using, and then basing my kernel config on.

Said kernel, with its config file can be found at
https://packages.debian.org/bookworm/linux-image-6.1.0-17-amd64


>
> Jan
>

--0000000000003412b1060f3269fa
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><div dir=3D"ltr"><br></div><br><div class=3D"gmail_quote">=
<div dir=3D"ltr" class=3D"gmail_attr">On Wed, Jan 17, 2024 at 3:46=E2=80=AF=
AM Jan Beulich &lt;<a href=3D"mailto:jbeulich@suse.com" target=3D"_blank">j=
beulich@suse.com</a>&gt; wrote:<br></div><blockquote class=3D"gmail_quote" =
style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);pa=
dding-left:1ex">On 17.01.2024 07:12, Patrick Plenefisch wrote:<br>
&gt; On Tue, Jan 16, 2024 at 4:33=E2=80=AFAM Jan Beulich &lt;<a href=3D"mai=
lto:jbeulich@suse.com" target=3D"_blank">jbeulich@suse.com</a>&gt; wrote:<b=
r>
&gt; <br>
&gt;&gt; On 16.01.2024 01:22, Patrick Plenefisch wrote:<br>
&gt;&gt;&gt; I managed to set up serial access and saved the output with th=
e requested<br>
&gt;&gt;&gt; flags as the attached logs<br>
&gt;&gt;<br>
&gt;&gt; Thanks. While you didn&#39;t ...<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; ... fiddle with the Linux message,=C2=A0 ...<br>
&gt;&gt;<br>
&gt; <br>
&gt; I last built the kernel over a decade ago, and so was hoping to not ha=
ve to<br>
&gt; look up how to do that again, but I can research how to go about that =
again<br>
&gt; if it would help?<br>
&gt; <br></blockquote><div><br></div><div>The nice thing about threadripper=
 is the fast kernel build times. I have added that patch to the kernel and =
confirmed:</div><div><br>about to get started...<br>Xen hypervisor allocate=
d kernel memory conflicts with E820 map: 0x1000000 - 0x4400000<br>(XEN) Har=
dware Dom0 halted: halting machine</div><div><br></div><div><br></div><div>=
=C2=A0<br></div><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0=
px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
&gt; <br>
&gt; I&#39;m currently talking to the vendor&#39;s support team and testing=
 a beta BIOS<br>
&gt; for unrelated reasons, is there something specific I should forward to=
<br>
&gt; them, either as a question or as a request for a fix?<br>
<br>
Well, first it would need figuring whether the &quot;interesting&quot; regi=
ons<br>
are being put in place by firmware of the boot loader. If it&#39;s firmware=
<br>
(pretty likely at least for the region you&#39;re having trouble with), you=
<br>
may want to ask them to re-do where they place that specific data.<br></blo=
ckquote><div><br></div><div>This section changes boot-to-boot and grub vs E=
FI direct load, but my untrained eyes don&#39;t see an obvoius pattern. I&#=
39;ve attached several logs. Name format:</div><div><br></div><div>xen-XENV=
ERSION_LOADER_KERNELNAME_TYPE.log</div><div><br></div><div>where XENVERSION=
 is 4.17 (packaged in debian 12) or 4.18 (I built from source) or 4.18p (I =
applied the patch you mention below and built from source)</div><div><br></=
div><div>where LOADER is grub for grub2 (from debian 12) or UEFI (direct bo=
ot via efibootmgr-configured UEFI entry)</div><div><br></div><div>where KER=
NELNAME is either empty (PVH failure), or linuxpatch (linux with the patch =
requested above), or linuxoffset (with PHYSICAL_START=3D2MiB), or linux6 (d=
ebian 12 kernel)</div><div><br></div><div>where TYPE is either pvh or pv</d=
iv><div><br></div><div>For the two logs that actually boooted (linuxoffset)=
, I truncated them during pcie initialization, but they did go all the way =
to give me a login screen<br></div><div><br></div><div>=C2=A0</div><blockqu=
ote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px=
 solid rgb(204,204,204);padding-left:1ex">
<br>
&gt; As someone who hasn&#39;t built a kernel in over a decade, should I fi=
gure out<br>
&gt; how to do a kernel build with CONFIG_PHYSICAL_START=3D0x2000000 and re=
port<br>
&gt; back?<br>
<br>
That was largely a suggestion to perhaps allow you to gain some<br>
workable setup. It would be of interest to us largely for completeness.<br>=
</blockquote><div><br></div><div>Typo aside, setting the boot to 2MiB works=
! It works better for PV, while PVH has some graphics card issues, namely t=
hat I have to interact over serial and dmesg has some concerning radeon err=
ors<br></div><div>=C2=A0</div><blockquote class=3D"gmail_quote" style=3D"ma=
rgin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:=
1ex">
<br>
<br>
Hmm, that&#39;s sad. The more that the error messages aren&#39;t really<br>
informative. You did check though that your kernel is PVH-capable?<br>
(With a debug build of Xen, and with suitably high logging level,<br>
various of the ELF properties would be logged. Such output may or<br>
may not give further hints towards what&#39;s actually wrong. </blockquote>=
<div><br></div><div>=C2=A0</div><blockquote class=3D"gmail_quote" style=3D"=
margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-lef=
t:1ex">Albeit<br>
you using 4.17 this would further require you to pull in commit<br>
ea3dabfb80d7 [&quot;x86/PVH: allow Dom0 ELF parsing to be verbose&quot;].)<=
br></blockquote><div><br></div><div>This was applied in &quot;4.18p&quot; l=
ogs (above)<br></div><div>=C2=A0</div><blockquote class=3D"gmail_quote" sty=
le=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);paddi=
ng-left:1ex">
<br>
But wait - aren&#39;t you running into the same collision there with<br>
that memory region? I think that explains the unhelpful output.<br>
Whereas I assume the native kernel can deal with that as long as<br>
it&#39;s built with CONFIG_RELOCATABLE=3Dy. I don&#39;t think we want to<br=
>
get into the business of interpreting the kernel&#39;s internal<br>
representation of the relocations needed, so it&#39;s not really<br>
clear to me what we might do in such a case. Perhaps the only way<br>
is to signal to the kernel that it needs to apply relocations<br>
itself (which in turn would require the kernel to signal to us<br>
that it&#39;s capable of doing so). Cc-ing Roger in case he has any<br>
neat idea.<br></blockquote><div><br></div><div>Yes, PVH, PV, and Relocatabl=
e are all enabled in the debian kernel I was using, and then basing my kern=
el config on.</div><div><br></div><div>Said kernel, with its config file ca=
n be found at <a href=3D"https://packages.debian.org/bookworm/linux-image-6=
.1.0-17-amd64">https://packages.debian.org/bookworm/linux-image-6.1.0-17-am=
d64</a></div><div>=C2=A0</div><blockquote class=3D"gmail_quote" style=3D"ma=
rgin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:=
1ex">
<br>
Jan<br>
</blockquote></div></div>

--0000000000003412b1060f3269fa--
--0000000000003412b4060f3269fc
Content-Type: text/x-log; charset="US-ASCII"; name="xen-4.18p_grub_linux6_pvh.log"
Content-Disposition: attachment; filename="xen-4.18p_grub_linux6_pvh.log"
Content-Transfer-Encoding: base64
Content-ID: <f_lritskl80>
X-Attachment-Id: f_lritskl80

KFhFTikgWGVuIHZlcnNpb24gNC4xOC4wIChwYXRyaWNrQCkgKGdjYyAoRGViaWFuIDEwLjIuMS02
KSAxMC4yLjEgMjAyMTAxMTApIGRlYnVnPW4gV2VkIEphbiAxNyAxODozMTo1MyBFU1QgMjAyNAoo
WEVOKSBMYXRlc3QgQ2hhbmdlU2V0OiAKKFhFTikgYnVpbGQtaWQ6IGU2OGU4Mjg0NzU1MGU0MGEy
NWVlYTY2ZWE4YTJlMWQ4NjUzODVhMWQKKFhFTikgQ29uc29sZSBvdXRwdXQgaXMgc3luY2hyb25v
dXMuCihYRU4pIEJvb3Rsb2FkZXI6IEdSVUIgMi4wNi0xMytkZWIxMnUxCihYRU4pIENvbW1hbmQg
bGluZTogcGxhY2Vob2xkZXIgZG9tMF9tZW09OEcsbWF4OjhHIGxvZ2x2bD1hbGwgZTgyMC12ZXJi
b3NlPXRydWUgY29uc29sZV90b19yaW5nIHN5bmNfY29uc29sZSBndWVzdF9sb2dsdmw9YWxsIGNv
bTE9MTE1MjAwLDhuMSBjb25zb2xlPWNvbTEsdmdhIG5vLXJlYWwtbW9kZSBlZGQ9b2ZmIGRvbTA9
cHZoCihYRU4pIFhlbiBpbWFnZSBsb2FkIGJhc2UgYWRkcmVzczogMHg5ZjYwMDAwMAooWEVOKSBW
aWRlbyBpbmZvcm1hdGlvbjoKKFhFTikgIFZHQSBpcyBncmFwaGljcyBtb2RlIDI1NjB4MTQ0MCwg
MzIgYnBwCihYRU4pICBWQkUvRERDIG1ldGhvZHM6IG5vbmU7IEVESUQgdHJhbnNmZXIgdGltZTog
MCBzZWNvbmRzCihYRU4pIERpc2MgaW5mb3JtYXRpb246CihYRU4pICBGb3VuZCAwIE1CUiBzaWdu
YXR1cmVzCihYRU4pICBGb3VuZCA2IEVERCBpbmZvcm1hdGlvbiBzdHJ1Y3R1cmVzCihYRU4pIENQ
VSBWZW5kb3I6IEFNRCwgRmFtaWx5IDI1ICgweDE5KSwgTW9kZWwgMjQgKDB4MTgpLCBTdGVwcGlu
ZyAxIChyYXcgMDBhMTBmODEpCihYRU4pIEVuYWJsaW5nIFN1cGVydmlzb3IgU2hhZG93IFN0YWNr
cwooWEVOKSBJbml0aWFsIEVGSSBSQU0gbWFwOgooWEVOKSAgWzAwMDAwMDAwMDAwMDAwMDAsIDAw
MDAwMDAwMDAwOWZmZmZdICh1c2FibGUpCihYRU4pICBbMDAwMDAwMDAwMDEwMDAwMCwgMDAwMDAw
MDAwM2ZmZmZmZl0gKHVzYWJsZSkKKFhFTikgIFswMDAwMDAwMDA0MDAwMDAwLCAwMDAwMDAwMDA0
MDQ1ZmZmXSAoQUNQSSBOVlMpCihYRU4pICBbMDAwMDAwMDAwNDA0NjAwMCwgMDAwMDAwMDAwOWFm
ZWZmZl0gKHVzYWJsZSkKKFhFTikgIFswMDAwMDAwMDA5YWZmMDAwLCAwMDAwMDAwMDA5ZmZmZmZm
XSAocmVzZXJ2ZWQpCihYRU4pICBbMDAwMDAwMDAwYTAwMDAwMCwgMDAwMDAwMDAwYWZmZmZmZl0g
KHVzYWJsZSkKKFhFTikgIFswMDAwMDAwMDBiMDAwMDAwLCAwMDAwMDAwMDBiMDIwZmZmXSAocmVz
ZXJ2ZWQpCihYRU4pICBbMDAwMDAwMDAwYjAyMTAwMCwgMDAwMDAwMDBhMDRlOGZmZl0gKHVzYWJs
ZSkKKFhFTikgIFswMDAwMDAwMGEwNGU5MDAwLCAwMDAwMDAwMGE2NGU4ZmZmXSAocmVzZXJ2ZWQp
CihYRU4pICBbMDAwMDAwMDBhNjRlOTAwMCwgMDAwMDAwMDBhNzQ3ZWZmZl0gKEFDUEkgZGF0YSkK
KFhFTikgIFswMDAwMDAwMGE3NDdmMDAwLCAwMDAwMDAwMGE5NDdlZmZmXSAoQUNQSSBOVlMpCihY
RU4pICBbMDAwMDAwMDBhOTQ3ZjAwMCwgMDAwMDAwMDBhZGRmZWZmZl0gKHJlc2VydmVkKQooWEVO
KSAgWzAwMDAwMDAwYWRkZmYwMDAsIDAwMDAwMDAwYWZmZmFmZmZdICh1c2FibGUpCihYRU4pICBb
MDAwMDAwMDBhZmZmYjAwMCwgMDAwMDAwMDBhZmZmZmZmZl0gKHJlc2VydmVkKQooWEVOKSAgWzAw
MDAwMDAxMDAwMDAwMDAsIDAwMDAwMDQwM2RiYmZmZmZdICh1c2FibGUpCihYRU4pICBbMDAwMDAw
MDAwMDBhMDAwMCwgMDAwMDAwMDAwMDBmZmZmZl0gKHJlc2VydmVkKQooWEVOKSAgWzAwMDAwMDAw
YjAwMDAwMDAsIDAwMDAwMDAwYmZmZmZmZmZdIChyZXNlcnZlZCkKKFhFTikgIFswMDAwMDAwMGRm
MjAwMDAwLCAwMDAwMDAwMGRmMmZmZmZmXSAocmVzZXJ2ZWQpCihYRU4pICBbMDAwMDAwMDBlMDAw
MDAwMCwgMDAwMDAwMDBlZmZmZmZmZl0gKHJlc2VydmVkKQooWEVOKSAgWzAwMDAwMDAwZmVhMDAw
MDAsIDAwMDAwMDAwZmVhZmZmZmZdIChyZXNlcnZlZCkKKFhFTikgIFswMDAwMDAwMGZlYzAwMDAw
LCAwMDAwMDAwMGZlYzAwZmZmXSAocmVzZXJ2ZWQpCihYRU4pICBbMDAwMDAwMDBmZWMxMDAwMCwg
MDAwMDAwMDBmZWMxMGZmZl0gKHJlc2VydmVkKQooWEVOKSAgWzAwMDAwMDAwZmVjMzAwMDAsIDAw
MDAwMDAwZmVjMzBmZmZdIChyZXNlcnZlZCkKKFhFTikgIFswMDAwMDAwMGZlZDAwMDAwLCAwMDAw
MDAwMGZlZDAwZmZmXSAocmVzZXJ2ZWQpCihYRU4pICBbMDAwMDAwMDBmZWQ0MDAwMCwgMDAwMDAw
MDBmZWQ0NGZmZl0gKHJlc2VydmVkKQooWEVOKSAgWzAwMDAwMDAwZmVkODAwMDAsIDAwMDAwMDAw
ZmVkOGZmZmZdIChyZXNlcnZlZCkKKFhFTikgIFswMDAwMDAwMGZmMDAwMDAwLCAwMDAwMDAwMGZm
ZmZmZmZmXSAocmVzZXJ2ZWQpCihYRU4pICBbMDAwMDAwNDAzZGJjMDAwMCwgMDAwMDAwNDAzZmZm
ZmZmZl0gKHJlc2VydmVkKQooWEVOKSBFRkkgUkFNIG1hcDoKKFhFTikgIFswMDAwMDAwMDAwMDAw
MDAwLCAwMDAwMDAwMDAwMDlmZmZmXSAodXNhYmxlKQooWEVOKSAgWzAwMDAwMDAwMDAwYTAwMDAs
IDAwMDAwMDAwMDAwZmZmZmZdIChyZXNlcnZlZCkKKFhFTikgIFswMDAwMDAwMDAwMTAwMDAwLCAw
MDAwMDAwMDAzZmZmZmZmXSAodXNhYmxlKQooWEVOKSAgWzAwMDAwMDAwMDQwMDAwMDAsIDAwMDAw
MDAwMDQwNDVmZmZdIChBQ1BJIE5WUykKKFhFTikgIFswMDAwMDAwMDA0MDQ2MDAwLCAwMDAwMDAw
MDA5YWZlZmZmXSAodXNhYmxlKQooWEVOKSAgWzAwMDAwMDAwMDlhZmYwMDAsIDAwMDAwMDAwMDlm
ZmZmZmZdIChyZXNlcnZlZCkKKFhFTikgIFswMDAwMDAwMDBhMDAwMDAwLCAwMDAwMDAwMDBhZmZm
ZmZmXSAodXNhYmxlKQooWEVOKSAgWzAwMDAwMDAwMGIwMDAwMDAsIDAwMDAwMDAwMGIwMjBmZmZd
IChyZXNlcnZlZCkKKFhFTikgIFswMDAwMDAwMDBiMDIxMDAwLCAwMDAwMDAwMGEwNGU4ZmZmXSAo
dXNhYmxlKQooWEVOKSAgWzAwMDAwMDAwYTA0ZTkwMDAsIDAwMDAwMDAwYTY0ZThmZmZdIChyZXNl
cnZlZCkKKFhFTikgIFswMDAwMDAwMGE2NGU5MDAwLCAwMDAwMDAwMGE3NDdlZmZmXSAoQUNQSSBk
YXRhKQooWEVOKSAgWzAwMDAwMDAwYTc0N2YwMDAsIDAwMDAwMDAwYTk0N2VmZmZdIChBQ1BJIE5W
UykKKFhFTikgIFswMDAwMDAwMGE5NDdmMDAwLCAwMDAwMDAwMGFkZGZlZmZmXSAocmVzZXJ2ZWQp
CihYRU4pICBbMDAwMDAwMDBhZGRmZjAwMCwgMDAwMDAwMDBhZmZmYWZmZl0gKHVzYWJsZSkKKFhF
TikgIFswMDAwMDAwMGFmZmZiMDAwLCAwMDAwMDAwMGJmZmZmZmZmXSAocmVzZXJ2ZWQpCihYRU4p
ICBbMDAwMDAwMDBkZjIwMDAwMCwgMDAwMDAwMDBkZjJmZmZmZl0gKHJlc2VydmVkKQooWEVOKSAg
WzAwMDAwMDAwZTAwMDAwMDAsIDAwMDAwMDAwZWZmZmZmZmZdIChyZXNlcnZlZCkKKFhFTikgIFsw
MDAwMDAwMGZlYTAwMDAwLCAwMDAwMDAwMGZlYWZmZmZmXSAocmVzZXJ2ZWQpCihYRU4pICBbMDAw
MDAwMDBmZWMwMDAwMCwgMDAwMDAwMDBmZWMwMGZmZl0gKHJlc2VydmVkKQooWEVOKSAgWzAwMDAw
MDAwZmVjMTAwMDAsIDAwMDAwMDAwZmVjMTBmZmZdIChyZXNlcnZlZCkKKFhFTikgIFswMDAwMDAw
MGZlYzMwMDAwLCAwMDAwMDAwMGZlYzMwZmZmXSAocmVzZXJ2ZWQpCihYRU4pICBbMDAwMDAwMDBm
ZWQwMDAwMCwgMDAwMDAwMDBmZWQwMGZmZl0gKHJlc2VydmVkKQooWEVOKSAgWzAwMDAwMDAwZmVk
NDAwMDAsIDAwMDAwMDAwZmVkNDRmZmZdIChyZXNlcnZlZCkKKFhFTikgIFswMDAwMDAwMGZlZDgw
MDAwLCAwMDAwMDAwMGZlZDhmZmZmXSAocmVzZXJ2ZWQpCihYRU4pICBbMDAwMDAwMDBmZjAwMDAw
MCwgMDAwMDAwMDBmZmZmZmZmZl0gKHJlc2VydmVkKQooWEVOKSAgWzAwMDAwMDAxMDAwMDAwMDAs
IDAwMDAwMDQwM2RiYmZmZmZdICh1c2FibGUpCihYRU4pICBbMDAwMDAwNDAzZGJjMDAwMCwgMDAw
MDAwNDAzZmZmZmZmZl0gKHJlc2VydmVkKQooWEVOKSBBQ1BJOiBSU0RQIEE5NDYzMDE0LCAwMDI0
IChyMiBBTUQgICApCihYRU4pIEFDUEk6IFhTRFQgQTk0NjI3MjgsIDAxMUMgKHIxIEFNRCAgICAg
IEEgTSBJICAgICAgICAgMSBBTUkgICAxMDAwMDEzKQooWEVOKSBBQ1BJOiBGQUNQIEE3NDdDMDAw
LCAwMTE0IChyNiBBTUQgICAgICBBIE0gSSAgICAgICAgIDEgQU1JICAgICAxMDAxMykKKFhFTikg
QUNQSTogRFNEVCBBNzQ2RTAwMCwgRDJGNiAocjIgQU1EICAgICAgQSBNIEkgICAgICAgICAxIElO
VEwgMjAyMzAzMzEpCihYRU4pIEFDUEk6IEZBQ1MgQTk0NUEwMDAsIDAwNDAKKFhFTikgQUNQSTog
U1NEVCBBNzQ3RTAwMCwgMDlDQyAocjIgICAgQU1EIEJPVUxERVJHICAgICAgICAyIE1TRlQgIDQw
MDAwMDApCihYRU4pIEFDUEk6IFNTRFQgQTc0N0QwMDAsIDAwNjcgKHIyICAgIEFNRCAgIENQTURT
TSAgICAgICAgMSBJTlRMIDIwMjMwMzMxKQooWEVOKSBBQ1BJOiBGSURUIEE3NDZEMDAwLCAwMDlD
IChyMSAgICBBTUQgICAgQSBNIEkgICAgICAgIDEgQU1JICAgICAxMDAxMykKKFhFTikgQUNQSTog
TUNGRyBBNzQ2QzAwMCwgMDAzQyAocjEgICAgQU1EICAgIEEgTSBJICAgICAgICAxIE1TRlQgICAg
MTAwMTMpCihYRU4pIEFDUEk6IFNTRFQgQTc0NkIwMDAsIDA1QzUgKHIyICAgIEFNRCAgQ1BVU1NE
VCAgICAgICAgMSBBTUkgICAgICAgICAxKQooWEVOKSBBQ1BJOiBIUEVUIEE3NDZBMDAwLCAwMDM4
IChyMSAgICBBTUQgICAgQSBNIEkgICAgICAgIDEgQU1JICAgICAgICAgNSkKKFhFTikgQUNQSTog
U1NEVCBBNzQ2ODAwMCwgMUI1MyAocjIgICAgQU1EICAgQ1BNUkFTICAgICAgICAxIElOVEwgMjAy
MzAzMzEpCihYRU4pIEFDUEk6IEJFUlQgQTc0NjcwMDAsIDAwMzAgKHIxIEFNRCAgICBBTUQgQkVS
VCAgICAgICAgMSBBTUQgICAgICAgICAxKQooWEVOKSBBQ1BJOiBGUERUIEE3NDY1MDAwLCAwMDQ0
IChyMSBBTUQgICAgICBBIE0gSSAgIDEwNzIwMDkgQU1JICAgMTAwMDAxMykKKFhFTikgQUNQSTog
U1NEVCBBNzQ2MjAwMCwgMjQ0OCAocjIgICAgQU1EIEdQUF9QTUVfICAgICAgICAxIElOVEwgMjAy
MzAzMzEpCihYRU4pIEFDUEk6IFNTRFQgQTc0NUYwMDAsIDI0NDggKHIyICAgIEFNRCBHUFBfUE1F
XyAgICAgICAgMSBJTlRMIDIwMjMwMzMxKQooWEVOKSBBQ1BJOiBTU0RUIEE3NDVDMDAwLCAyNDQ4
IChyMiAgICBBTUQgR1BQX1BNRV8gICAgICAgIDEgSU5UTCAyMDIzMDMzMSkKKFhFTikgQUNQSTog
U1NEVCBBNzQ1OTAwMCwgMjQ0OCAocjIgICAgQU1EIEdQUF9QTUVfICAgICAgICAxIElOVEwgMjAy
MzAzMzEpCihYRU4pIEFDUEk6IFZGQ1QgQTc0NEEwMDAsIEU2ODQgKHIxIEFNRCAgICAgIEEgTSBJ
ICAgICAgICAgMSAgQU1EIDMxNTA0RjQ3KQooWEVOKSBBQ1BJOiBTU0RUIEE3NDNFMDAwLCBBNDBF
IChyMiAgICBBTUQgIEFNRCBDUFUgICAgICAgIDEgQU1EICAgICAgICAgMSkKKFhFTikgQUNQSTog
SE1BVCBBNzQzRDAwMCwgMDBBNCAocjIgICAgQU1EIEFtZFRhYmxlICAgICAgICAxIEFNRCAgICAg
ICAgIDEpCihYRU4pIEFDUEk6IFdQQlQgQTY4NEUwMDAsIDAwMzYgKHIxICAgIEFNRCAgICBBIE0g
SSAgICAgICAgMSBNU0ZUICAgIDEwMDEzKQooWEVOKSBBQ1BJOiBCR1JUIEE3NDQ5MDAwLCAwMDM4
IChyMSBBTUQgICAgICBBIE0gSSAgICAgICAgIDEgQU1JICAgICAxMDAxMykKKFhFTikgQUNQSTog
SVZSUyBBNjg0RDAwMCwgMDFFOCAocjIgIEFNRCAgIEFtZFRhYmxlICAgICAgICAxIEFNRCAgICAg
ICAgIDEpCihYRU4pIEFDUEk6IFNTRFQgQTY4NEMwMDAsIDA2RDQgKHIyICAgIEFNRCAgQ1BNV0xS
QyAgICAgICAgMSBJTlRMIDIwMjMwMzMxKQooWEVOKSBBQ1BJOiBTU0RUIEE2ODQyMDAwLCA5ODJG
IChyMiAgICBBTUQgICBDUE1DTU4gICAgICAgIDEgSU5UTCAyMDIzMDMzMSkKKFhFTikgQUNQSTog
V1NNVCBBNjg0MTAwMCwgMDAyOCAocjEgQU1EICAgICAgQSBNIEkgICAgICAgICAxIEFNSSAgICAg
MTAwMTMpCihYRU4pIEFDUEk6IEFQSUMgQTY4M0YwMDAsIDEwODggKHI2IEFNRCAgICAgIEEgTSBJ
ICAgICAgICAgMSBBTUkgICAgIDEwMDEzKQooWEVOKSBBQ1BJOiBTU0RUIEE2ODNDMDAwLCAyMzg3
IChyMiAgICBBTUQgQU9EICAgICAgICAgICAgIDEgSU5UTCAyMDIzMDMzMSkKKFhFTikgQUNQSTog
U1NEVCBBNjgzQjAwMCwgMDUwMCAocjIgICAgQU1EIE1FTVRPT0wwICAgICAgICAyIElOVEwgMjAy
MzAzMzEpCihYRU4pIEFDUEk6IFNTRFQgQTY4M0EwMDAsIDA5NkEgKHIyICAgIEFNRCBDUE1NU09T
QyAgICAgICAgMSBJTlRMIDIwMjMwMzMxKQooWEVOKSBBQ1BJOiBTU0RUIEE2ODM5MDAwLCAwQjcy
IChyMiAgICBBTUQgQ1BNQUNQVjYgICAgICAgIDEgSU5UTCAyMDIzMDMzMSkKKFhFTikgQUNQSTog
U1NEVCBBNjgzODAwMCwgMDQ0RSAocjIgICAgQU1EIEFtZFRhYmxlICAgICAgICAxIElOVEwgMjAy
MzAzMzEpCihYRU4pIEFDUEk6IEVSU1QgQTY4MzcwMDAsIDAyMzAgKHIxICBBTUlFUiBBTUkuRVJT
VCAgICAgICAgMCBBTUkuICAgICAgICAwKQooWEVOKSBBQ1BJOiBIRVNUIEE2ODA2MDAwLCAzMEEx
NCAocjEgQU1EICAgIEFNRCBIRVNUICAgICAgICAxIEFNRCAgICAgICAgIDEpCihYRU4pIFN5c3Rl
bSBSQU06IDI2MTYyOE1CICgyNjc5MDc5NTZrQikKKFhFTikgTm8gTlVNQSBjb25maWd1cmF0aW9u
IGZvdW5kCihYRU4pIEZha2luZyBhIG5vZGUgYXQgMDAwMDAwMDAwMDAwMDAwMC0wMDAwMDA0MDNk
YmMwMDAwCihYRU4pIERvbWFpbiBoZWFwIGluaXRpYWxpc2VkCihYRU4pIHZlc2FmYjogZnJhbWVi
dWZmZXIgYXQgMHgwMDAwMDRkODAwMDAwMDAwLCBtYXBwZWQgdG8gMHhmZmZmODJjMDAwMjAxMDAw
LCB1c2luZyAxNDQwMGssIHRvdGFsIDE0NDAwawooWEVOKSB2ZXNhZmI6IG1vZGUgaXMgMjU2MHgx
NDQweDMyLCBsaW5lbGVuZ3RoPTEwMjQwLCBmb250IDh4MTYKKFhFTikgdmVzYWZiOiBUcnVlY29s
b3I6IHNpemU9ODo4Ojg6OCwgc2hpZnQ9MjQ6MTY6ODowCihYRU4pIFNNQklPUyAzLjYgcHJlc2Vu
dC4KKFhFTikgeDJBUElDIG1vZGUgaXMgYWxyZWFkeSBlbmFibGVkIGJ5IEJJT1MuCihYRU4pIFVz
aW5nIEFQSUMgZHJpdmVyIHgyYXBpY19jbHVzdGVyCihYRU4pIEFDUEk6IFBNLVRpbWVyIElPIFBv
cnQ6IDB4ODA4ICgzMiBiaXRzKQooWEVOKSBBQ1BJOiB2NSBTTEVFUCBJTkZPOiBjb250cm9sWzA6
MF0sIHN0YXR1c1swOjBdCihYRU4pIEFDUEk6IFNMRUVQIElORk86IHBtMXhfY250WzE6ODA0LDE6
MF0sIHBtMXhfZXZ0WzE6ODAwLDE6MF0KKFhFTikgQUNQSTogMzIvNjRYIEZBQ1MgYWRkcmVzcyBt
aXNtYXRjaCBpbiBGQURUIC0gYTk0NWEwMDAvMDAwMDAwMDAwMDAwMDAwMCwgdXNpbmcgMzIKKFhF
TikgQUNQSTogICAgICAgICAgICAgd2FrZXVwX3ZlY1thOTQ1YTAwY10sIHZlY19zaXplWzIwXQoo
WEVOKSBBQ1BJOiBMb2NhbCBBUElDIGFkZHJlc3MgMHhmZWUwMDAwMAooWEVOKSBBQ1BJOiBJT0FQ
SUMgKGlkWzB4ODBdIGFkZHJlc3NbMHhmZWMwMDAwMF0gZ3NpX2Jhc2VbMF0pCihYRU4pIElPQVBJ
Q1swXTogYXBpY19pZCAxMjgsIHZlcnNpb24gMzMsIGFkZHJlc3MgMHhmZWMwMDAwMCwgR1NJIDAt
MjMKKFhFTikgQUNQSTogSU9BUElDIChpZFsweDgxXSBhZGRyZXNzWzB4ZGYxODAwMDBdIGdzaV9i
YXNlWzEyMF0pCihYRU4pIElPQVBJQ1sxXTogYXBpY19pZCAxMjksIHZlcnNpb24gMzMsIGFkZHJl
c3MgMHhkZjE4MDAwMCwgR1NJIDEyMC0xNTEKKFhFTikgQUNQSTogSU9BUElDIChpZFsweDgyXSBh
ZGRyZXNzWzB4ZDMxODAwMDBdIGdzaV9iYXNlWzg4XSkKKFhFTikgSU9BUElDWzJdOiBhcGljX2lk
IDEzMCwgdmVyc2lvbiAzMywgYWRkcmVzcyAweGQzMTgwMDAwLCBHU0kgODgtMTE5CihYRU4pIEFD
UEk6IElPQVBJQyAoaWRbMHg4M10gYWRkcmVzc1sweGY3MTgwMDAwXSBnc2lfYmFzZVsyNF0pCihY
RU4pIElPQVBJQ1szXTogYXBpY19pZCAxMzEsIHZlcnNpb24gMzMsIGFkZHJlc3MgMHhmNzE4MDAw
MCwgR1NJIDI0LTU1CihYRU4pIEFDUEk6IElPQVBJQyAoaWRbMHg4NF0gYWRkcmVzc1sweGM5MTgw
MDAwXSBnc2lfYmFzZVs1Nl0pCihYRU4pIElPQVBJQ1s0XTogYXBpY19pZCAxMzIsIHZlcnNpb24g
MzMsIGFkZHJlc3MgMHhjOTE4MDAwMCwgR1NJIDU2LTg3CihYRU4pIEFDUEk6IElOVF9TUkNfT1ZS
IChidXMgMCBidXNfaXJxIDAgZ2xvYmFsX2lycSAyIGRmbCBkZmwpCihYRU4pIEFDUEk6IElOVF9T
UkNfT1ZSIChidXMgMCBidXNfaXJxIDkgZ2xvYmFsX2lycSA5IGxvdyBsZXZlbCkKKFhFTikgQUNQ
STogSVJRMCB1c2VkIGJ5IG92ZXJyaWRlLgooWEVOKSBBQ1BJOiBJUlEyIHVzZWQgYnkgb3ZlcnJp
ZGUuCihYRU4pIEFDUEk6IElSUTkgdXNlZCBieSBvdmVycmlkZS4KKFhFTikgQUNQSTogSFBFVCBp
ZDogMHgxMDIyODIwMSBiYXNlOiAweGZlZDAwMDAwCihYRU4pIFBDSTogTUNGRyBjb25maWd1cmF0
aW9uIDA6IGJhc2UgZTAwMDAwMDAgc2VnbWVudCAwMDAwIGJ1c2VzIDAwIC0gZmYKKFhFTikgUENJ
OiBNQ0ZHIGFyZWEgYXQgZTAwMDAwMDAgcmVzZXJ2ZWQgaW4gRTgyMAooWEVOKSBQQ0k6IFVzaW5n
IE1DRkcgZm9yIHNlZ21lbnQgMDAwMCBidXMgMDAtZmYKKFhFTikgWGVuIEVSU1Qgc3VwcG9ydCBp
cyBpbml0aWFsaXplZC4KKFhFTikgSEVTVDogVGFibGUgcGFyc2luZyBoYXMgYmVlbiBpbml0aWFs
aXplZAooWEVOKSBBQ1BJOiBCR1JUOiBpbnZhbGlkYXRpbmcgdjEgaW1hZ2UgYXQgMHg5YjBkMDAx
OAooWEVOKSBVc2luZyBBQ1BJIChNQURUKSBmb3IgU01QIGNvbmZpZ3VyYXRpb24gaW5mb3JtYXRp
b24KKFhFTikgU01QOiBBbGxvd2luZyA0OCBDUFVzICgwIGhvdHBsdWcgQ1BVcykKKFhFTikgSVJR
IGxpbWl0czogMTUyIEdTSSwgOTgzMiBNU0kvTVNJLVgKKFhFTikgQU1ELVZpOiBJT01NVSBFeHRl
bmRlZCBGZWF0dXJlczoKKFhFTikgLSBQZXJpcGhlcmFsIFBhZ2UgU2VydmljZSBSZXF1ZXN0CihY
RU4pIC0geDJBUElDCihYRU4pIC0gTlggYml0CihYRU4pIC0gR3Vlc3QgQVBJQyBQaHlzaWNhbCBQ
cm9jZXNzb3IgSW50ZXJydXB0CihYRU4pIC0gSW52YWxpZGF0ZSBBbGwgQ29tbWFuZAooWEVOKSAt
IEd1ZXN0IEFQSUMKKFhFTikgLSBQZXJmb3JtYW5jZSBDb3VudGVycwooWEVOKSAtIEhvc3QgQWRk
cmVzcyBUcmFuc2xhdGlvbiBTaXplOiAweDIKKFhFTikgLSBHdWVzdCBBZGRyZXNzIFRyYW5zbGF0
aW9uIFNpemU6IDB4MQooWEVOKSAtIEd1ZXN0IENSMyBSb290IFRhYmxlIExldmVsOiAweDEKKFhF
TikgLSBNYXhpbXVtIFBBU0lEOiAweGYKKFhFTikgLSBTTUkgRmlsdGVyIFJlZ2lzdGVyOiAweDEK
KFhFTikgLSBTTUkgRmlsdGVyIFJlZ2lzdGVyIENvdW50OiAweDIKKFhFTikgLSBHdWVzdCBWaXJ0
dWFsIEFQSUMgTW9kZXM6IDB4MQooWEVOKSAtIER1YWwgUFBSIExvZzogMHgyCihYRU4pIC0gRHVh
bCBFdmVudCBMb2c6IDB4MgooWEVOKSAtIFNlY3VyZSBBVFMKKFhFTikgLSBVc2VyIC8gU3VwZXJ2
aXNvciBQYWdlIFByb3RlY3Rpb24KKFhFTikgLSBEZXZpY2UgVGFibGUgU2VnbWVudGF0aW9uOiAw
CihYRU4pIC0gUFBSIExvZyBPdmVyZmxvdyBFYXJseSBXYXJuaW5nCihYRU4pIC0gUFBSIEF1dG9t
YXRpYyBSZXNwb25zZQooWEVOKSAtIE1lbW9yeSBBY2Nlc3MgUm91dGluZyBhbmQgQ29udHJvbDog
MAooWEVOKSAtIEJsb2NrIFN0b3BNYXJrIE1lc3NhZ2UKKFhFTikgLSBQZXJmb3JtYW5jZSBPcHRp
bWl6YXRpb24KKFhFTikgLSBNU0kgQ2FwYWJpbGl0eSBNTUlPIEFjY2VzcwooWEVOKSAtIEd1ZXN0
IEkvTyBQcm90ZWN0aW9uCihYRU4pIC0gSG9zdCBBY2Nlc3MKKFhFTikgLSBFbmhhbmNlZCBQUFIg
SGFuZGxpbmcKKFhFTikgLSBBdHRyaWJ1dGUgRm9yd2FyZAooWEVOKSAtIEhvc3QgRGlydHkKKFhF
TikgLSBWaXJ0dWFsaXplZCBJT01NVQooWEVOKSAtIFZNR3VhcmQgSS9PIFN1cHBvcnQKKFhFTikg
LSBWTSBUYWJsZSBTaXplOiAweDIKKFhFTikgLSBHdWVzdCBBY2Nlc3MgQml0IFVwZGF0ZSBEaXNh
YmxlCihYRU4pIEFNRC1WaTogRGlzYWJsZWQgSEFQIG1lbW9yeSBtYXAgc2hhcmluZyB3aXRoIElP
TU1VCihYRU4pIEFNRC1WaTogSU9NTVUgMCBFbmFibGVkLgooWEVOKSBBTUQtVmk6IElPTU1VIDEg
RW5hYmxlZC4KKFhFTikgQU1ELVZpOiBJT01NVSAyIEVuYWJsZWQuCihYRU4pIEFNRC1WaTogSU9N
TVUgMyBFbmFibGVkLgooWEVOKSBDUFUwOiAxNTAwIC4uLiA0MjAwIE1IegooWEVOKSB4c3RhdGU6
IHNpemU6IDB4OTg4IGFuZCBzdGF0ZXM6IDB4MmU3CihYRU4pIENQVTA6IEFNRCBGYW0xOWggbWFj
aGluZSBjaGVjayByZXBvcnRpbmcgZW5hYmxlZAooWEVOKSBTcGVjdWxhdGl2ZSBtaXRpZ2F0aW9u
IGZhY2lsaXRpZXM6CihYRU4pICAgSGFyZHdhcmUgaGludHM6IFNUSUJQX0FMV0FZUyBJQlJTX0ZB
U1QgSUJSU19TQU1FX01PREUgQlRDX05PIElCUEJfUkVUCihYRU4pICAgSGFyZHdhcmUgZmVhdHVy
ZXM6IElCUEIgSUJSUyBTVElCUCBTU0JEIFBTRkQgTDFEX0ZMVVNICihYRU4pICAgQ29tcGlsZWQt
aW4gc3VwcG9ydDogSU5ESVJFQ1RfVEhVTksgU0hBRE9XX1BBR0lORwooWEVOKSAgIFhlbiBzZXR0
aW5nczogQlRJLVRodW5rIEpNUCwgU1BFQ19DVFJMOiBJQlJTKyBTVElCUCsgU1NCRC0gUFNGRC0s
IE90aGVyOiBCUkFOQ0hfSEFSREVOCihYRU4pICAgU3VwcG9ydCBmb3IgSFZNIFZNczogTVNSX1NQ
RUNfQ1RSTCBNU1JfVklSVF9TUEVDX0NUUkwgUlNCIElCUEItZW50cnkKKFhFTikgICBTdXBwb3J0
IGZvciBQViBWTXM6IElCUEItZW50cnkKKFhFTikgICBYUFRJICg2NC1iaXQgUFYgb25seSk6IERv
bTAgZGlzYWJsZWQsIERvbVUgZGlzYWJsZWQgKHdpdGggUENJRCkKKFhFTikgICBQViBMMVRGIHNo
YWRvd2luZzogRG9tMCBkaXNhYmxlZCwgRG9tVSBkaXNhYmxlZAooWEVOKSBVc2luZyBzY2hlZHVs
ZXI6IFNNUCBDcmVkaXQgU2NoZWR1bGVyIHJldjIgKGNyZWRpdDIpCihYRU4pIEluaXRpYWxpemlu
ZyBDcmVkaXQyIHNjaGVkdWxlcgooWEVOKSAgbG9hZF9wcmVjaXNpb25fc2hpZnQ6IDE4CihYRU4p
ICBsb2FkX3dpbmRvd19zaGlmdDogMzAKKFhFTikgIHVuZGVybG9hZF9iYWxhbmNlX3RvbGVyYW5j
ZTogMAooWEVOKSAgb3ZlcmxvYWRfYmFsYW5jZV90b2xlcmFuY2U6IC0zCihYRU4pICBydW5xdWV1
ZXMgYXJyYW5nZW1lbnQ6IHNvY2tldAooWEVOKSAgY2FwIGVuZm9yY2VtZW50IGdyYW51bGFyaXR5
OiAxMG1zCihYRU4pIGxvYWQgdHJhY2tpbmcgd2luZG93IGxlbmd0aCAxMDczNzQxODI0IG5zCihY
RU4pIFBsYXRmb3JtIHRpbWVyIGlzIDE0LjMxOE1IeiBIUEVUCihYRU4pIERldGVjdGVkIDQxOTku
ODg4IE1IeiBwcm9jZXNzb3IuCihYRU4pIEZyZWVkIDEwMjBrQiB1bnVzZWQgQlNTIG1lbW9yeQoo
WEVOKSBFRkkgbWVtb3J5IG1hcDoKKFhFTikgIDAwMDAwMDAwMDAwMDAtMDAwMDAwMDAwM2ZmZiB0
eXBlPTIgYXR0cj0wMDAwMDAwMDAwMDAwMDBmCihYRU4pICAwMDAwMDAwMDA0MDAwLTAwMDAwMDAw
OGVmZmYgdHlwZT03IGF0dHI9MDAwMDAwMDAwMDAwMDAwZgooWEVOKSAgMDAwMDAwMDA4ZjAwMC0w
MDAwMDAwMDllZmZmIHR5cGU9MiBhdHRyPTAwMDAwMDAwMDAwMDAwMGYKKFhFTikgIDAwMDAwMDAw
OWYwMDAtMDAwMDAwMDA5ZmZmZiB0eXBlPTQgYXR0cj0wMDAwMDAwMDAwMDAwMDBmCihYRU4pICAw
MDAwMDAwMTAwMDAwLTAwMDAwMDMxNTlmZmYgdHlwZT0yIGF0dHI9MDAwMDAwMDAwMDAwMDAwZgoo
WEVOKSAgMDAwMDAwMzE1YTAwMC0wMDAwMDAzZmZmZmZmIHR5cGU9NyBhdHRyPTAwMDAwMDAwMDAw
MDAwMGYKKFhFTikgIDAwMDAwMDQwMDAwMDAtMDAwMDAwNDA0NWZmZiB0eXBlPTEwIGF0dHI9MDAw
MDAwMDAwMDAwMDAwZgooWEVOKSAgMDAwMDAwNDA0NjAwMC0wMDAwMDA5YWZlZmZmIHR5cGU9NyBh
dHRyPTAwMDAwMDAwMDAwMDAwMGYKKFhFTikgIDAwMDAwMDlhZmYwMDAtMDAwMDAwOWZmZmZmZiB0
eXBlPTAgYXR0cj0wMDAwMDAwMDAwMDAwMDBmCihYRU4pICAwMDAwMDBhMDAwMDAwLTAwMDAwMGEy
ZmZmZmYgdHlwZT00IGF0dHI9MDAwMDAwMDAwMDAwMDAwZgooWEVOKSAgMDAwMDAwYTMwMDAwMC0w
MDAwMDBhZmZmZmZmIHR5cGU9NyBhdHRyPTAwMDAwMDAwMDAwMDAwMGYKKFhFTikgIDAwMDAwMGIw
MDAwMDAtMDAwMDAwYjAyMGZmZiB0eXBlPTAgYXR0cj0wMDAwMDAwMDAwMDAwMDBmCihYRU4pICAw
MDAwMDBiMDIxMDAwLTAwMDAwNmY4NjlmZmYgdHlwZT03IGF0dHI9MDAwMDAwMDAwMDAwMDAwZgoo
WEVOKSAgMDAwMDA2Zjg2YTAwMC0wMDAwMDk1M2VhZmZmIHR5cGU9MSBhdHRyPTAwMDAwMDAwMDAw
MDAwMGYKKFhFTikgIDAwMDAwOTUzZWIwMDAtMDAwMDA5NTNmNGZmZiB0eXBlPTQgYXR0cj0wMDAw
MDAwMDAwMDAwMDBmCihYRU4pICAwMDAwMDk1M2Y1MDAwLTAwMDAwOTUzZmVmZmYgdHlwZT03IGF0
dHI9MDAwMDAwMDAwMDAwMDAwZgooWEVOKSAgMDAwMDA5NTNmZjAwMC0wMDAwMDk1NDA4ZmZmIHR5
cGU9NCBhdHRyPTAwMDAwMDAwMDAwMDAwMGYKKFhFTikgIDAwMDAwOTU0MDkwMDAtMDAwMDA5NTQy
NmZmZiB0eXBlPTcgYXR0cj0wMDAwMDAwMDAwMDAwMDBmCihYRU4pICAwMDAwMDk1NDI3MDAwLTAw
MDAwOTU4MjhmZmYgdHlwZT0xIGF0dHI9MDAwMDAwMDAwMDAwMDAwZgooWEVOKSAgMDAwMDA5NTgy
OTAwMC0wMDAwMDk1YzMzZmZmIHR5cGU9MiBhdHRyPTAwMDAwMDAwMDAwMDAwMGYKKFhFTikgIDAw
MDAwOTVjMzQwMDAtMDAwMDA5NWMzOWZmZiB0eXBlPTcgYXR0cj0wMDAwMDAwMDAwMDAwMDBmCihY
RU4pICAwMDAwMDk1YzNhMDAwLTAwMDAwOTVkMGNmZmYgdHlwZT0xIGF0dHI9MDAwMDAwMDAwMDAw
MDAwZgooWEVOKSAgMDAwMDA5NWQwZDAwMC0wMDAwMDk3NGU4ZmZmIHR5cGU9NCBhdHRyPTAwMDAw
MDAwMDAwMDAwMGYKKFhFTikgIDAwMDAwOTc0ZTkwMDAtMDAwMDA5NzRlYWZmZiB0eXBlPTcgYXR0
cj0wMDAwMDAwMDAwMDAwMDBmCihYRU4pICAwMDAwMDk3NGViMDAwLTAwMDAwOTc0ZjJmZmYgdHlw
ZT00IGF0dHI9MDAwMDAwMDAwMDAwMDAwZgooWEVOKSAgMDAwMDA5NzRmMzAwMC0wMDAwMDk3NTE1
ZmZmIHR5cGU9NyBhdHRyPTAwMDAwMDAwMDAwMDAwMGYKKFhFTikgIDAwMDAwOTc1MTYwMDAtMDAw
MDA5NzUyY2ZmZiB0eXBlPTQgYXR0cj0wMDAwMDAwMDAwMDAwMDBmCihYRU4pICAwMDAwMDk3NTJk
MDAwLTAwMDAwOTc1MmZmZmYgdHlwZT03IGF0dHI9MDAwMDAwMDAwMDAwMDAwZgooWEVOKSAgMDAw
MDA5NzUzMDAwMC0wMDAwMDk3NTUxZmZmIHR5cGU9NCBhdHRyPTAwMDAwMDAwMDAwMDAwMGYKKFhF
TikgIDAwMDAwOTc1NTIwMDAtMDAwMDA5NzVkMWZmZiB0eXBlPTcgYXR0cj0wMDAwMDAwMDAwMDAw
MDBmCihYRU4pICAwMDAwMDk3NWQyMDAwLTAwMDAwOTc2NWNmZmYgdHlwZT00IGF0dHI9MDAwMDAw
MDAwMDAwMDAwZgooWEVOKSAgMDAwMDA5NzY1ZDAwMC0wMDAwMDk3NjYyZmZmIHR5cGU9NyBhdHRy
PTAwMDAwMDAwMDAwMDAwMGYKKFhFTikgIDAwMDAwOTc2NjMwMDAtMDAwMDA5NzZhYmZmZiB0eXBl
PTQgYXR0cj0wMDAwMDAwMDAwMDAwMDBmCihYRU4pICAwMDAwMDk3NmFjMDAwLTAwMDAwOTdlOWNm
ZmYgdHlwZT03IGF0dHI9MDAwMDAwMDAwMDAwMDAwZgooWEVOKSAgMDAwMDA5N2U5ZDAwMC0wMDAw
MDk3ZTllZmZmIHR5cGU9NCBhdHRyPTAwMDAwMDAwMDAwMDAwMGYKKFhFTikgIDAwMDAwOTdlOWYw
MDAtMDAwMDA5N2Y5MWZmZiB0eXBlPTcgYXR0cj0wMDAwMDAwMDAwMDAwMDBmCihYRU4pICAwMDAw
MDk3ZjkyMDAwLTAwMDAwOWU0ZThmZmYgdHlwZT00IGF0dHI9MDAwMDAwMDAwMDAwMDAwZgooWEVO
KSAgMDAwMDA5ZTRlOTAwMC0wMDAwMDlmN2ZmZmZmIHR5cGU9NyBhdHRyPTAwMDAwMDAwMDAwMDAw
MGYKKFhFTikgIDAwMDAwOWY4MDAwMDAtMDAwMDA5ZmJiMWZmZiB0eXBlPTIgYXR0cj0wMDAwMDAw
MDAwMDAwMDBmCihYRU4pICAwMDAwMDlmYmIyMDAwLTAwMDAwOWZkNzZmZmYgdHlwZT03IGF0dHI9
MDAwMDAwMDAwMDAwMDAwZgooWEVOKSAgMDAwMDA5ZmQ3NzAwMC0wMDAwMGEwNGU4ZmZmIHR5cGU9
MyBhdHRyPTAwMDAwMDAwMDAwMDAwMGYKKFhFTikgIDAwMDAwYTA0ZTkwMDAtMDAwMDBhNjRlOGZm
ZiB0eXBlPTAgYXR0cj0wMDAwMDAwMDAwMDAwMDBmCihYRU4pICAwMDAwMGE2NGU5MDAwLTAwMDAw
YTc0N2VmZmYgdHlwZT05IGF0dHI9MDAwMDAwMDAwMDAwMDAwZgooWEVOKSAgMDAwMDBhNzQ3ZjAw
MC0wMDAwMGE5NDdlZmZmIHR5cGU9MTAgYXR0cj0wMDAwMDAwMDAwMDAwMDBmCihYRU4pICAwMDAw
MGE5NDdmMDAwLTAwMDAwYWRjN2VmZmYgdHlwZT02IGF0dHI9ODAwMDAwMDAwMDAwMDAwZgooWEVO
KSAgMDAwMDBhZGM3ZjAwMC0wMDAwMGFkZGZlZmZmIHR5cGU9NSBhdHRyPTgwMDAwMDAwMDAwMDAw
MGYKKFhFTikgIDAwMDAwYWRkZmYwMDAtMDAwMDBhZGZmZmZmZiB0eXBlPTQgYXR0cj0wMDAwMDAw
MDAwMDAwMDBmCihYRU4pICAwMDAwMGFlMDAwMDAwLTAwMDAwYWUxM2FmZmYgdHlwZT03IGF0dHI9
MDAwMDAwMDAwMDAwMDAwZgooWEVOKSAgMDAwMDBhZTEzYjAwMC0wMDAwMGFlMjNhZmZmIHR5cGU9
NCBhdHRyPTAwMDAwMDAwMDAwMDAwMGYKKFhFTikgIDAwMDAwYWUyM2IwMDAtMDAwMDBhZTI1YmZm
ZiB0eXBlPTMgYXR0cj0wMDAwMDAwMDAwMDAwMDBmCihYRU4pICAwMDAwMGFlMjVjMDAwLTAwMDAw
YWY3NjVmZmYgdHlwZT00IGF0dHI9MDAwMDAwMDAwMDAwMDAwZgooWEVOKSAgMDAwMDBhZjc2NjAw
MC0wMDAwMGFmNzgyZmZmIHR5cGU9MyBhdHRyPTAwMDAwMDAwMDAwMDAwMGYKKFhFTikgIDAwMDAw
YWY3ODMwMDAtMDAwMDBhZjc5YmZmZiB0eXBlPTQgYXR0cj0wMDAwMDAwMDAwMDAwMDBmCihYRU4p
ICAwMDAwMGFmNzljMDAwLTAwMDAwYWY3OWZmZmYgdHlwZT0zIGF0dHI9MDAwMDAwMDAwMDAwMDAw
ZgooWEVOKSAgMDAwMDBhZjdhMDAwMC0wMDAwMGFmN2IzZmZmIHR5cGU9NCBhdHRyPTAwMDAwMDAw
MDAwMDAwMGYKKFhFTikgIDAwMDAwYWY3YjQwMDAtMDAwMDBhZjdkY2ZmZiB0eXBlPTMgYXR0cj0w
MDAwMDAwMDAwMDAwMDBmCihYRU4pICAwMDAwMGFmN2RkMDAwLTAwMDAwYWZmZjNmZmYgdHlwZT00
IGF0dHI9MDAwMDAwMDAwMDAwMDAwZgooWEVOKSAgMDAwMDBhZmZmNDAwMC0wMDAwMGFmZmZhZmZm
IHR5cGU9MyBhdHRyPTAwMDAwMDAwMDAwMDAwMGYKKFhFTikgIDAwMDAwYWZmZmIwMDAtMDAwMDBh
ZmZmZmZmZiB0eXBlPTYgYXR0cj04MDAwMDAwMDAwMDAwMDBmCihYRU4pICAwMDAwMTAwMDAwMDAw
LTAwMDQwM2RiYmZmZmYgdHlwZT03IGF0dHI9MDAwMDAwMDAwMDAwMDAwZgooWEVOKSAgMDAwMDAw
MDBhMDAwMC0wMDAwMDAwMGZmZmZmIHR5cGU9MCBhdHRyPTAwMDAwMDAwMDAwMDAwMGYKKFhFTikg
IDAwMDAwYjAwMDAwMDAtMDAwMDBiZmZmZmZmZiB0eXBlPTAgYXR0cj0wMDAwMDAwMDAwMDAwMDBm
CihYRU4pICAwMDAwMGRmMjAwMDAwLTAwMDAwZGYyZmZmZmYgdHlwZT0xMSBhdHRyPTgwMDAwMDAw
MDAwMDAwMDEKKFhFTikgIDAwMDAwZTAwMDAwMDAtMDAwMDBlZmZmZmZmZiB0eXBlPTExIGF0dHI9
ODAwMDAwMDAwMDAwMTAwZAooWEVOKSAgMDAwMDBmZWEwMDAwMC0wMDAwMGZlYWZmZmZmIHR5cGU9
MTEgYXR0cj04MDAwMDAwMDAwMDAwMDAxCihYRU4pICAwMDAwMGZlYzAwMDAwLTAwMDAwZmVjMDBm
ZmYgdHlwZT0xMSBhdHRyPTgwMDAwMDAwMDAwMDAwMDEKKFhFTikgIDAwMDAwZmVjMTAwMDAtMDAw
MDBmZWMxMGZmZiB0eXBlPTExIGF0dHI9ODAwMDAwMDAwMDAwMDAwMQooWEVOKSAgMDAwMDBmZWMz
MDAwMC0wMDAwMGZlYzMwZmZmIHR5cGU9MTEgYXR0cj04MDAwMDAwMDAwMDAwMDAxCihYRU4pICAw
MDAwMGZlZDAwMDAwLTAwMDAwZmVkMDBmZmYgdHlwZT0xMSBhdHRyPTgwMDAwMDAwMDAwMDAwMDEK
KFhFTikgIDAwMDAwZmVkNDAwMDAtMDAwMDBmZWQ0NGZmZiB0eXBlPTExIGF0dHI9ODAwMDAwMDAw
MDAwMDAwMQooWEVOKSAgMDAwMDBmZWQ4MDAwMC0wMDAwMGZlZDhmZmZmIHR5cGU9MTEgYXR0cj04
MDAwMDAwMDAwMDAwMDAxCihYRU4pICAwMDAwMGZmMDAwMDAwLTAwMDAwZmZmZmZmZmYgdHlwZT0x
MSBhdHRyPTgwMDAwMDAwMDAwMDAwMDEKKFhFTikgIDAwMDQwM2RiYzAwMDAtMDAwNDAzZmZmZmZm
ZiB0eXBlPTAgYXR0cj0wMDAwMDAwMDAwMDAwMDBmCihYRU4pIGFsdCB0YWJsZSBmZmZmODJkMDQw
NDViZDk4IC0+IGZmZmY4MmQwNDA0NjdiNzgKKFhFTikgSS9PIHZpcnR1YWxpc2F0aW9uIGVuYWJs
ZWQKKFhFTikgIC0gRG9tMCBtb2RlOiBSZWxheGVkCihYRU4pIEludGVycnVwdCByZW1hcHBpbmcg
ZW5hYmxlZAooWEVOKSBucl9zb2NrZXRzOiAxCihYRU4pIEVuYWJsZWQgZGlyZWN0ZWQgRU9JIHdp
dGggaW9hcGljX2Fja19vbGQgb24hCihYRU4pIEVuYWJsaW5nIEFQSUMgbW9kZTogIENsdXN0ZXJl
ZC4gIFVzaW5nIDUgSS9PIEFQSUNzCihYRU4pIEVOQUJMSU5HIElPLUFQSUMgSVJRcwooWEVOKSAg
LT4gVXNpbmcgb2xkIEFDSyBtZXRob2QKKFhFTikgLi5USU1FUjogdmVjdG9yPTB4RjAgYXBpYzE9
MCBwaW4xPTIgYXBpYzI9LTEgcGluMj0tMQooWEVOKSBEZWZhdWx0aW5nIHRvIGFsdGVybmF0aXZl
IGtleSBoYW5kbGluZzsgc2VuZCAnQScgdG8gc3dpdGNoIHRvIG5vcm1hbCBtb2RlLgooWEVOKSBB
bGxvY2F0ZWQgY29uc29sZSByaW5nIG9mIDUxMiBLaUIuCihYRU4pIG13YWl0LWlkbGU6IGRvZXMg
bm90IHJ1biBvbiBmYW1pbHkgMjUgbW9kZWwgMjQKKFhFTikgSFZNOiBBU0lEcyBlbmFibGVkLgoo
WEVOKSBTVk06IFN1cHBvcnRlZCBhZHZhbmNlZCBmZWF0dXJlczoKKFhFTikgIC0gTmVzdGVkIFBh
Z2UgVGFibGVzIChOUFQpCihYRU4pICAtIExhc3QgQnJhbmNoIFJlY29yZCAoTEJSKSBWaXJ0dWFs
aXNhdGlvbgooWEVOKSAgLSBOZXh0LVJJUCBTYXZlZCBvbiAjVk1FWElUCihYRU4pICAtIFZNQ0Ig
Q2xlYW4gQml0cwooWEVOKSAgLSBEZWNvZGVBc3Npc3RzCihYRU4pICAtIFZpcnR1YWwgVk1MT0FE
L1ZNU0FWRQooWEVOKSAgLSBWaXJ0dWFsIEdJRgooWEVOKSAgLSBQYXVzZS1JbnRlcmNlcHQgRmls
dGVyCihYRU4pICAtIFBhdXNlLUludGVyY2VwdCBGaWx0ZXIgVGhyZXNob2xkCihYRU4pICAtIFRT
QyBSYXRlIE1TUgooWEVOKSAgLSBOUFQgU3VwZXJ2aXNvciBTaGFkb3cgU3RhY2sKKFhFTikgIC0g
TVNSX1NQRUNfQ1RSTCB2aXJ0dWFsaXNhdGlvbgooWEVOKSBIVk06IFNWTSBlbmFibGVkCihYRU4p
IEhWTTogSGFyZHdhcmUgQXNzaXN0ZWQgUGFnaW5nIChIQVApIGRldGVjdGVkCihYRU4pIEhWTTog
SEFQIHBhZ2Ugc2l6ZXM6IDRrQiwgMk1CLCAxR0IKKFhFTikgYWx0IHRhYmxlIGZmZmY4MmQwNDA0
NWJkOTggLT4gZmZmZjgyZDA0MDQ2N2I3OAooWEVOKSBCcm91Z2h0IHVwIDQ4IENQVXMKKFhFTikg
U2NoZWR1bGluZyBncmFudWxhcml0eTogY3B1LCAxIENQVSBwZXIgc2NoZWQtcmVzb3VyY2UKKFhF
TikgSW5pdGlhbGl6aW5nIENyZWRpdDIgc2NoZWR1bGVyCihYRU4pICBsb2FkX3ByZWNpc2lvbl9z
aGlmdDogMTgKKFhFTikgIGxvYWRfd2luZG93X3NoaWZ0OiAzMAooWEVOKSAgdW5kZXJsb2FkX2Jh
bGFuY2VfdG9sZXJhbmNlOiAwCihYRU4pICBvdmVybG9hZF9iYWxhbmNlX3RvbGVyYW5jZTogLTMK
KFhFTikgIHJ1bnF1ZXVlcyBhcnJhbmdlbWVudDogc29ja2V0CihYRU4pICBjYXAgZW5mb3JjZW1l
bnQgZ3JhbnVsYXJpdHk6IDEwbXMKKFhFTikgbG9hZCB0cmFja2luZyB3aW5kb3cgbGVuZ3RoIDEw
NzM3NDE4MjQgbnMKKFhFTikgQWRkaW5nIGNwdSAwIHRvIHJ1bnF1ZXVlIDAKKFhFTikgIEZpcnN0
IGNwdSBvbiBydW5xdWV1ZSwgYWN0aXZhdGluZwooWEVOKSBBZGRpbmcgY3B1IDEgdG8gcnVucXVl
dWUgMAooWEVOKSBBZGRpbmcgY3B1IDIgdG8gcnVucXVldWUgMAooWEVOKSBBZGRpbmcgY3B1IDMg
dG8gcnVucXVldWUgMAooWEVOKSBBZGRpbmcgY3B1IDQgdG8gcnVucXVldWUgMAooWEVOKSBBZGRp
bmcgY3B1IDUgdG8gcnVucXVldWUgMAooWEVOKSBBZGRpbmcgY3B1IDYgdG8gcnVucXVldWUgMAoo
WEVOKSBBZGRpbmcgY3B1IDcgdG8gcnVucXVldWUgMAooWEVOKSBBZGRpbmcgY3B1IDggdG8gcnVu
cXVldWUgMAooWEVOKSBBZGRpbmcgY3B1IDkgdG8gcnVucXVldWUgMAooWEVOKSBBZGRpbmcgY3B1
IDEwIHRvIHJ1bnF1ZXVlIDAKKFhFTikgQWRkaW5nIGNwdSAxMSB0byBydW5xdWV1ZSAwCihYRU4p
IEFkZGluZyBjcHUgMTIgdG8gcnVucXVldWUgMAooWEVOKSBBZGRpbmcgY3B1IDEzIHRvIHJ1bnF1
ZXVlIDAKKFhFTikgQWRkaW5nIGNwdSAxNCB0byBydW5xdWV1ZSAwCihYRU4pIEFkZGluZyBjcHUg
MTUgdG8gcnVucXVldWUgMAooWEVOKSBBZGRpbmcgY3B1IDE2IHRvIHJ1bnF1ZXVlIDEKKFhFTikg
IEZpcnN0IGNwdSBvbiBydW5xdWV1ZSwgYWN0aXZhdGluZwooWEVOKSBBZGRpbmcgY3B1IDE3IHRv
IHJ1bnF1ZXVlIDEKKFhFTikgQWRkaW5nIGNwdSAxOCB0byBydW5xdWV1ZSAxCihYRU4pIEFkZGlu
ZyBjcHUgMTkgdG8gcnVucXVldWUgMQooWEVOKSBBZGRpbmcgY3B1IDIwIHRvIHJ1bnF1ZXVlIDEK
KFhFTikgQWRkaW5nIGNwdSAyMSB0byBydW5xdWV1ZSAxCihYRU4pIEFkZGluZyBjcHUgMjIgdG8g
cnVucXVldWUgMQooWEVOKSBBZGRpbmcgY3B1IDIzIHRvIHJ1bnF1ZXVlIDEKKFhFTikgQWRkaW5n
IGNwdSAyNCB0byBydW5xdWV1ZSAxCihYRU4pIEFkZGluZyBjcHUgMjUgdG8gcnVucXVldWUgMQoo
WEVOKSBBZGRpbmcgY3B1IDI2IHRvIHJ1bnF1ZXVlIDEKKFhFTikgQWRkaW5nIGNwdSAyNyB0byBy
dW5xdWV1ZSAxCihYRU4pIEFkZGluZyBjcHUgMjggdG8gcnVucXVldWUgMQooWEVOKSBBZGRpbmcg
Y3B1IDI5IHRvIHJ1bnF1ZXVlIDEKKFhFTikgQWRkaW5nIGNwdSAzMCB0byBydW5xdWV1ZSAxCihY
RU4pIEFkZGluZyBjcHUgMzEgdG8gcnVucXVldWUgMQooWEVOKSBBZGRpbmcgY3B1IDMyIHRvIHJ1
bnF1ZXVlIDIKKFhFTikgIEZpcnN0IGNwdSBvbiBydW5xdWV1ZSwgYWN0aXZhdGluZwooWEVOKSBB
ZGRpbmcgY3B1IDMzIHRvIHJ1bnF1ZXVlIDIKKFhFTikgQWRkaW5nIGNwdSAzNCB0byBydW5xdWV1
ZSAyCihYRU4pIEFkZGluZyBjcHUgMzUgdG8gcnVucXVldWUgMgooWEVOKSBBZGRpbmcgY3B1IDM2
IHRvIHJ1bnF1ZXVlIDIKKFhFTikgQWRkaW5nIGNwdSAzNyB0byBydW5xdWV1ZSAyCihYRU4pIEFk
ZGluZyBjcHUgMzggdG8gcnVucXVldWUgMgooWEVOKSBBZGRpbmcgY3B1IDM5IHRvIHJ1bnF1ZXVl
IDIKKFhFTikgQWRkaW5nIGNwdSA0MCB0byBydW5xdWV1ZSAyCihYRU4pIEFkZGluZyBjcHUgNDEg
dG8gcnVucXVldWUgMgooWEVOKSBBZGRpbmcgY3B1IDQyIHRvIHJ1bnF1ZXVlIDIKKFhFTikgQWRk
aW5nIGNwdSA0MyB0byBydW5xdWV1ZSAyCihYRU4pIEFkZGluZyBjcHUgNDQgdG8gcnVucXVldWUg
MgooWEVOKSBBZGRpbmcgY3B1IDQ1IHRvIHJ1bnF1ZXVlIDIKKFhFTikgQWRkaW5nIGNwdSA0NiB0
byBydW5xdWV1ZSAyCihYRU4pIEFkZGluZyBjcHUgNDcgdG8gcnVucXVldWUgMgooWEVOKSBtY2hl
Y2tfcG9sbDogTWFjaGluZSBjaGVjayBwb2xsaW5nIHRpbWVyIHN0YXJ0ZWQuCihYRU4pIE5YIChF
eGVjdXRlIERpc2FibGUpIHByb3RlY3Rpb24gYWN0aXZlCihYRU4pIERvbTAgaGFzIG1heGltdW0g
MTQwMCBQSVJRcwooWEVOKSAqKiogQnVpbGRpbmcgYSBQVkggRG9tMCAqKioKKFhFTikgRUxGOiBw
aGRyOiBwYWRkcj0weDEwMDAwMDAgbWVtc3o9MHgxOGQ1Yjk4CihYRU4pIEVMRjogcGhkcjogcGFk
ZHI9MHgyYTAwMDAwIG1lbXN6PTB4NjNhMDAwCihYRU4pIEVMRjogcGhkcjogcGFkZHI9MHgzMDNh
MDAwIG1lbXN6PTB4MzQwMDAKKFhFTikgRUxGOiBwaGRyOiBwYWRkcj0weDMwNmUwMDAgbWVtc3o9
MHgxOTkyMDAwCihYRU4pIEVMRjogbWVtb3J5OiAweDEwMDAwMDAgLT4gMHg0YTAwMDAwCihYRU4p
IEVMRjogbm90ZTogR1VFU1RfT1MgPSAibGludXgiCihYRU4pIEVMRjogbm90ZTogR1VFU1RfVkVS
U0lPTiA9ICIyLjYiCihYRU4pIEVMRjogbm90ZTogWEVOX1ZFUlNJT04gPSAieGVuLTMuMCIKKFhF
TikgRUxGOiBub3RlOiBWSVJUX0JBU0UgPSAweGZmZmZmZmZmODAwMDAwMDAKKFhFTikgRUxGOiBu
b3RlOiBJTklUX1AyTSA9IDB4ODAwMDAwMDAwMAooWEVOKSBFTEY6IG5vdGU6IEVOVFJZID0gMHhm
ZmZmZmZmZjgzMDZlMWMwCihYRU4pIEVMRjogbm90ZTogSFlQRVJDQUxMX1BBR0UgPSAweGZmZmZm
ZmZmODFhMWYwMDAKKFhFTikgRUxGOiBub3RlOiBGRUFUVVJFUyA9ICIhd3JpdGFibGVfcGFnZV90
YWJsZXN8cGFlX3BnZGlyX2Fib3ZlXzRnYiIKKFhFTikgRUxGOiBub3RlOiBTVVBQT1JURURfRkVB
VFVSRVMgPSAweDg4MDEKKFhFTikgRUxGOiBub3RlOiBQQUVfTU9ERSA9ICJ5ZXMiCihYRU4pIEVM
Rjogbm90ZTogTE9BREVSID0gImdlbmVyaWMiCihYRU4pIEVMRjogbm90ZTogTDFfTUZOX1ZBTElE
ID0gMAooWEVOKSBFTEY6IG5vdGU6IFNVU1BFTkRfQ0FOQ0VMID0gMHgxCihYRU4pIEVMRjogbm90
ZTogTU9EX1NUQVJUX1BGTiA9IDB4MQooWEVOKSBFTEY6IG5vdGU6IEhWX1NUQVJUX0xPVyA9IDB4
ZmZmZjgwMDAwMDAwMDAwMAooWEVOKSBFTEY6IG5vdGU6IFBBRERSX09GRlNFVCA9IDAKKFhFTikg
RUxGOiBub3RlOiBQSFlTMzJfRU5UUlkgPSAweDEwMDA4NDAKKFhFTikgRUxGOiBGb3VuZCBQVkgg
aW1hZ2UKKFhFTikgRUxGOiBhZGRyZXNzZXM6CihYRU4pICAgICB2aXJ0X2Jhc2UgICAgICAgID0g
MHgwCihYRU4pICAgICBlbGZfcGFkZHJfb2Zmc2V0ID0gMHgwCihYRU4pICAgICB2aXJ0X29mZnNl
dCAgICAgID0gMHgwCihYRU4pICAgICB2aXJ0X2tzdGFydCAgICAgID0gMHgxMDAwMDAwCihYRU4p
ICAgICB2aXJ0X2tlbmQgICAgICAgID0gMHg0YTAwMDAwCihYRU4pICAgICB2aXJ0X2VudHJ5ICAg
ICAgID0gMHgxMDAwODQwCihYRU4pICAgICBwMm1fYmFzZSAgICAgICAgID0gMHg4MDAwMDAwMDAw
CihYRU4pIEVMRjogcGhkciAwIGF0IDB4MTAwMDAwMCAtPiAweDI4ZDViOTgKKFhFTikgRUxGOiBw
aGRyIDEgYXQgMHgyYTAwMDAwIC0+IDB4MzAzYTAwMAooWEVOKSBFTEY6IHBoZHIgMiBhdCAweDMw
M2EwMDAgLT4gMHgzMDZlMDAwCihYRU4pIEVMRjogcGhkciAzIGF0IDB4MzA2ZTAwMCAtPiAweDRh
MDAwMDAKKFhFTikgRmFpbGVkIHRvIGxvYWQga2VybmVsOiAtMQooWEVOKSBGYWlsZWQgdG8gbG9h
ZCBEb20wIGtlcm5lbAooWEVOKSAKKFhFTikgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKgooWEVOKSBQYW5pYyBvbiBDUFUgMDoKKFhFTikgQ291bGQgbm90IGNvbnN0cnVj
dCBkb21haW4gMAooWEVOKSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
CihYRU4pIAooWEVOKSBSZWJvb3QgaW4gZml2ZSBzZWNvbmRzLi4uCg==
--0000000000003412b4060f3269fc
Content-Type: text/x-log; charset="US-ASCII"; name="xen-4.18p_grub_linuxoffset_pvh.log"
Content-Disposition: attachment; 
	filename="xen-4.18p_grub_linuxoffset_pvh.log"
Content-Transfer-Encoding: base64
Content-ID: <f_lritsklk2>
X-Attachment-Id: f_lritsklk2

KFhFTikgWGVuIHZlcnNpb24gNC4xOC4wIChwYXRyaWNrQCkgKGdjYyAoRGViaWFuIDEwLjIuMS02
KSAxMC4yLjEgMjAyMTAxMTApIGRlYnVnPW4gV2VkIEphbiAxNyAxODozMTo1MyBFU1QgMjAyNAoo
WEVOKSBMYXRlc3QgQ2hhbmdlU2V0OiAKKFhFTikgYnVpbGQtaWQ6IGU2OGU4Mjg0NzU1MGU0MGEy
NWVlYTY2ZWE4YTJlMWQ4NjUzODVhMWQKKFhFTikgQ29uc29sZSBvdXRwdXQgaXMgc3luY2hyb25v
dXMuCihYRU4pIEJvb3Rsb2FkZXI6IEdSVUIgMi4wNi0xMytkZWIxMnUxCihYRU4pIENvbW1hbmQg
bGluZTogcGxhY2Vob2xkZXIgZG9tMF9tZW09OEcsbWF4OjhHIGxvZ2x2bD1hbGwgZTgyMC12ZXJi
b3NlPXRydWUgY29uc29sZV90b19yaW5nIHN5bmNfY29uc29sZSBndWVzdF9sb2dsdmw9YWxsIGNv
bTE9MTE1MjAwLDhuMSBjb25zb2xlPWNvbTEsdmdhIG5vLXJlYWwtbW9kZSBlZGQ9b2ZmIGRvbTA9
cHZoCihYRU4pIFhlbiBpbWFnZSBsb2FkIGJhc2UgYWRkcmVzczogMHg5ZjYwMDAwMAooWEVOKSBW
aWRlbyBpbmZvcm1hdGlvbjoKKFhFTikgIFZHQSBpcyBncmFwaGljcyBtb2RlIDI1NjB4MTQ0MCwg
MzIgYnBwCihYRU4pICBWQkUvRERDIG1ldGhvZHM6IG5vbmU7IEVESUQgdHJhbnNmZXIgdGltZTog
MCBzZWNvbmRzCihYRU4pIERpc2MgaW5mb3JtYXRpb246CihYRU4pICBGb3VuZCAwIE1CUiBzaWdu
YXR1cmVzCihYRU4pICBGb3VuZCA2IEVERCBpbmZvcm1hdGlvbiBzdHJ1Y3R1cmVzCihYRU4pIENQ
VSBWZW5kb3I6IEFNRCwgRmFtaWx5IDI1ICgweDE5KSwgTW9kZWwgMjQgKDB4MTgpLCBTdGVwcGlu
ZyAxIChyYXcgMDBhMTBmODEpCihYRU4pIEVuYWJsaW5nIFN1cGVydmlzb3IgU2hhZG93IFN0YWNr
cwooWEVOKSBJbml0aWFsIEVGSSBSQU0gbWFwOgooWEVOKSAgWzAwMDAwMDAwMDAwMDAwMDAsIDAw
MDAwMDAwMDAwOWZmZmZdICh1c2FibGUpCihYRU4pICBbMDAwMDAwMDAwMDEwMDAwMCwgMDAwMDAw
MDAwM2ZmZmZmZl0gKHVzYWJsZSkKKFhFTikgIFswMDAwMDAwMDA0MDAwMDAwLCAwMDAwMDAwMDA0
MDQ1ZmZmXSAoQUNQSSBOVlMpCihYRU4pICBbMDAwMDAwMDAwNDA0NjAwMCwgMDAwMDAwMDAwOWFm
ZWZmZl0gKHVzYWJsZSkKKFhFTikgIFswMDAwMDAwMDA5YWZmMDAwLCAwMDAwMDAwMDA5ZmZmZmZm
XSAocmVzZXJ2ZWQpCihYRU4pICBbMDAwMDAwMDAwYTAwMDAwMCwgMDAwMDAwMDAwYWZmZmZmZl0g
KHVzYWJsZSkKKFhFTikgIFswMDAwMDAwMDBiMDAwMDAwLCAwMDAwMDAwMDBiMDIwZmZmXSAocmVz
ZXJ2ZWQpCihYRU4pICBbMDAwMDAwMDAwYjAyMTAwMCwgMDAwMDAwMDBhMDRlOGZmZl0gKHVzYWJs
ZSkKKFhFTikgIFswMDAwMDAwMGEwNGU5MDAwLCAwMDAwMDAwMGE2NGU4ZmZmXSAocmVzZXJ2ZWQp
CihYRU4pICBbMDAwMDAwMDBhNjRlOTAwMCwgMDAwMDAwMDBhNzQ3ZWZmZl0gKEFDUEkgZGF0YSkK
KFhFTikgIFswMDAwMDAwMGE3NDdmMDAwLCAwMDAwMDAwMGE5NDdlZmZmXSAoQUNQSSBOVlMpCihY
RU4pICBbMDAwMDAwMDBhOTQ3ZjAwMCwgMDAwMDAwMDBhZGRmZWZmZl0gKHJlc2VydmVkKQooWEVO
KSAgWzAwMDAwMDAwYWRkZmYwMDAsIDAwMDAwMDAwYWZmZmFmZmZdICh1c2FibGUpCihYRU4pICBb
MDAwMDAwMDBhZmZmYjAwMCwgMDAwMDAwMDBhZmZmZmZmZl0gKHJlc2VydmVkKQooWEVOKSAgWzAw
MDAwMDAxMDAwMDAwMDAsIDAwMDAwMDQwM2RiYmZmZmZdICh1c2FibGUpCihYRU4pICBbMDAwMDAw
MDAwMDBhMDAwMCwgMDAwMDAwMDAwMDBmZmZmZl0gKHJlc2VydmVkKQooWEVOKSAgWzAwMDAwMDAw
YjAwMDAwMDAsIDAwMDAwMDAwYmZmZmZmZmZdIChyZXNlcnZlZCkKKFhFTikgIFswMDAwMDAwMGRm
MjAwMDAwLCAwMDAwMDAwMGRmMmZmZmZmXSAocmVzZXJ2ZWQpCihYRU4pICBbMDAwMDAwMDBlMDAw
MDAwMCwgMDAwMDAwMDBlZmZmZmZmZl0gKHJlc2VydmVkKQooWEVOKSAgWzAwMDAwMDAwZmVhMDAw
MDAsIDAwMDAwMDAwZmVhZmZmZmZdIChyZXNlcnZlZCkKKFhFTikgIFswMDAwMDAwMGZlYzAwMDAw
LCAwMDAwMDAwMGZlYzAwZmZmXSAocmVzZXJ2ZWQpCihYRU4pICBbMDAwMDAwMDBmZWMxMDAwMCwg
MDAwMDAwMDBmZWMxMGZmZl0gKHJlc2VydmVkKQooWEVOKSAgWzAwMDAwMDAwZmVjMzAwMDAsIDAw
MDAwMDAwZmVjMzBmZmZdIChyZXNlcnZlZCkKKFhFTikgIFswMDAwMDAwMGZlZDAwMDAwLCAwMDAw
MDAwMGZlZDAwZmZmXSAocmVzZXJ2ZWQpCihYRU4pICBbMDAwMDAwMDBmZWQ0MDAwMCwgMDAwMDAw
MDBmZWQ0NGZmZl0gKHJlc2VydmVkKQooWEVOKSAgWzAwMDAwMDAwZmVkODAwMDAsIDAwMDAwMDAw
ZmVkOGZmZmZdIChyZXNlcnZlZCkKKFhFTikgIFswMDAwMDAwMGZmMDAwMDAwLCAwMDAwMDAwMGZm
ZmZmZmZmXSAocmVzZXJ2ZWQpCihYRU4pICBbMDAwMDAwNDAzZGJjMDAwMCwgMDAwMDAwNDAzZmZm
ZmZmZl0gKHJlc2VydmVkKQooWEVOKSBFRkkgUkFNIG1hcDoKKFhFTikgIFswMDAwMDAwMDAwMDAw
MDAwLCAwMDAwMDAwMDAwMDlmZmZmXSAodXNhYmxlKQooWEVOKSAgWzAwMDAwMDAwMDAwYTAwMDAs
IDAwMDAwMDAwMDAwZmZmZmZdIChyZXNlcnZlZCkKKFhFTikgIFswMDAwMDAwMDAwMTAwMDAwLCAw
MDAwMDAwMDAzZmZmZmZmXSAodXNhYmxlKQooWEVOKSAgWzAwMDAwMDAwMDQwMDAwMDAsIDAwMDAw
MDAwMDQwNDVmZmZdIChBQ1BJIE5WUykKKFhFTikgIFswMDAwMDAwMDA0MDQ2MDAwLCAwMDAwMDAw
MDA5YWZlZmZmXSAodXNhYmxlKQooWEVOKSAgWzAwMDAwMDAwMDlhZmYwMDAsIDAwMDAwMDAwMDlm
ZmZmZmZdIChyZXNlcnZlZCkKKFhFTikgIFswMDAwMDAwMDBhMDAwMDAwLCAwMDAwMDAwMDBhZmZm
ZmZmXSAodXNhYmxlKQooWEVOKSAgWzAwMDAwMDAwMGIwMDAwMDAsIDAwMDAwMDAwMGIwMjBmZmZd
IChyZXNlcnZlZCkKKFhFTikgIFswMDAwMDAwMDBiMDIxMDAwLCAwMDAwMDAwMGEwNGU4ZmZmXSAo
dXNhYmxlKQooWEVOKSAgWzAwMDAwMDAwYTA0ZTkwMDAsIDAwMDAwMDAwYTY0ZThmZmZdIChyZXNl
cnZlZCkKKFhFTikgIFswMDAwMDAwMGE2NGU5MDAwLCAwMDAwMDAwMGE3NDdlZmZmXSAoQUNQSSBk
YXRhKQooWEVOKSAgWzAwMDAwMDAwYTc0N2YwMDAsIDAwMDAwMDAwYTk0N2VmZmZdIChBQ1BJIE5W
UykKKFhFTikgIFswMDAwMDAwMGE5NDdmMDAwLCAwMDAwMDAwMGFkZGZlZmZmXSAocmVzZXJ2ZWQp
CihYRU4pICBbMDAwMDAwMDBhZGRmZjAwMCwgMDAwMDAwMDBhZmZmYWZmZl0gKHVzYWJsZSkKKFhF
TikgIFswMDAwMDAwMGFmZmZiMDAwLCAwMDAwMDAwMGJmZmZmZmZmXSAocmVzZXJ2ZWQpCihYRU4p
ICBbMDAwMDAwMDBkZjIwMDAwMCwgMDAwMDAwMDBkZjJmZmZmZl0gKHJlc2VydmVkKQooWEVOKSAg
WzAwMDAwMDAwZTAwMDAwMDAsIDAwMDAwMDAwZWZmZmZmZmZdIChyZXNlcnZlZCkKKFhFTikgIFsw
MDAwMDAwMGZlYTAwMDAwLCAwMDAwMDAwMGZlYWZmZmZmXSAocmVzZXJ2ZWQpCihYRU4pICBbMDAw
MDAwMDBmZWMwMDAwMCwgMDAwMDAwMDBmZWMwMGZmZl0gKHJlc2VydmVkKQooWEVOKSAgWzAwMDAw
MDAwZmVjMTAwMDAsIDAwMDAwMDAwZmVjMTBmZmZdIChyZXNlcnZlZCkKKFhFTikgIFswMDAwMDAw
MGZlYzMwMDAwLCAwMDAwMDAwMGZlYzMwZmZmXSAocmVzZXJ2ZWQpCihYRU4pICBbMDAwMDAwMDBm
ZWQwMDAwMCwgMDAwMDAwMDBmZWQwMGZmZl0gKHJlc2VydmVkKQooWEVOKSAgWzAwMDAwMDAwZmVk
NDAwMDAsIDAwMDAwMDAwZmVkNDRmZmZdIChyZXNlcnZlZCkKKFhFTikgIFswMDAwMDAwMGZlZDgw
MDAwLCAwMDAwMDAwMGZlZDhmZmZmXSAocmVzZXJ2ZWQpCihYRU4pICBbMDAwMDAwMDBmZjAwMDAw
MCwgMDAwMDAwMDBmZmZmZmZmZl0gKHJlc2VydmVkKQooWEVOKSAgWzAwMDAwMDAxMDAwMDAwMDAs
IDAwMDAwMDQwM2RiYmZmZmZdICh1c2FibGUpCihYRU4pICBbMDAwMDAwNDAzZGJjMDAwMCwgMDAw
MDAwNDAzZmZmZmZmZl0gKHJlc2VydmVkKQooWEVOKSBBQ1BJOiBSU0RQIEE5NDYzMDE0LCAwMDI0
IChyMiBBTUQgICApCihYRU4pIEFDUEk6IFhTRFQgQTk0NjI3MjgsIDAxMUMgKHIxIEFNRCAgICAg
IEEgTSBJICAgICAgICAgMSBBTUkgICAxMDAwMDEzKQooWEVOKSBBQ1BJOiBGQUNQIEE3NDdDMDAw
LCAwMTE0IChyNiBBTUQgICAgICBBIE0gSSAgICAgICAgIDEgQU1JICAgICAxMDAxMykKKFhFTikg
QUNQSTogRFNEVCBBNzQ2RTAwMCwgRDJGNiAocjIgQU1EICAgICAgQSBNIEkgICAgICAgICAxIElO
VEwgMjAyMzAzMzEpCihYRU4pIEFDUEk6IEZBQ1MgQTk0NUEwMDAsIDAwNDAKKFhFTikgQUNQSTog
U1NEVCBBNzQ3RTAwMCwgMDlDQyAocjIgICAgQU1EIEJPVUxERVJHICAgICAgICAyIE1TRlQgIDQw
MDAwMDApCihYRU4pIEFDUEk6IFNTRFQgQTc0N0QwMDAsIDAwNjcgKHIyICAgIEFNRCAgIENQTURT
TSAgICAgICAgMSBJTlRMIDIwMjMwMzMxKQooWEVOKSBBQ1BJOiBGSURUIEE3NDZEMDAwLCAwMDlD
IChyMSAgICBBTUQgICAgQSBNIEkgICAgICAgIDEgQU1JICAgICAxMDAxMykKKFhFTikgQUNQSTog
TUNGRyBBNzQ2QzAwMCwgMDAzQyAocjEgICAgQU1EICAgIEEgTSBJICAgICAgICAxIE1TRlQgICAg
MTAwMTMpCihYRU4pIEFDUEk6IFNTRFQgQTc0NkIwMDAsIDA1QzUgKHIyICAgIEFNRCAgQ1BVU1NE
VCAgICAgICAgMSBBTUkgICAgICAgICAxKQooWEVOKSBBQ1BJOiBIUEVUIEE3NDZBMDAwLCAwMDM4
IChyMSAgICBBTUQgICAgQSBNIEkgICAgICAgIDEgQU1JICAgICAgICAgNSkKKFhFTikgQUNQSTog
U1NEVCBBNzQ2ODAwMCwgMUI1MyAocjIgICAgQU1EICAgQ1BNUkFTICAgICAgICAxIElOVEwgMjAy
MzAzMzEpCihYRU4pIEFDUEk6IEJFUlQgQTc0NjcwMDAsIDAwMzAgKHIxIEFNRCAgICBBTUQgQkVS
VCAgICAgICAgMSBBTUQgICAgICAgICAxKQooWEVOKSBBQ1BJOiBGUERUIEE3NDY1MDAwLCAwMDQ0
IChyMSBBTUQgICAgICBBIE0gSSAgIDEwNzIwMDkgQU1JICAgMTAwMDAxMykKKFhFTikgQUNQSTog
U1NEVCBBNzQ2MjAwMCwgMjQ0OCAocjIgICAgQU1EIEdQUF9QTUVfICAgICAgICAxIElOVEwgMjAy
MzAzMzEpCihYRU4pIEFDUEk6IFNTRFQgQTc0NUYwMDAsIDI0NDggKHIyICAgIEFNRCBHUFBfUE1F
XyAgICAgICAgMSBJTlRMIDIwMjMwMzMxKQooWEVOKSBBQ1BJOiBTU0RUIEE3NDVDMDAwLCAyNDQ4
IChyMiAgICBBTUQgR1BQX1BNRV8gICAgICAgIDEgSU5UTCAyMDIzMDMzMSkKKFhFTikgQUNQSTog
U1NEVCBBNzQ1OTAwMCwgMjQ0OCAocjIgICAgQU1EIEdQUF9QTUVfICAgICAgICAxIElOVEwgMjAy
MzAzMzEpCihYRU4pIEFDUEk6IFZGQ1QgQTc0NEEwMDAsIEU2ODQgKHIxIEFNRCAgICAgIEEgTSBJ
ICAgICAgICAgMSAgQU1EIDMxNTA0RjQ3KQooWEVOKSBBQ1BJOiBTU0RUIEE3NDNFMDAwLCBBNDBF
IChyMiAgICBBTUQgIEFNRCBDUFUgICAgICAgIDEgQU1EICAgICAgICAgMSkKKFhFTikgQUNQSTog
SE1BVCBBNzQzRDAwMCwgMDBBNCAocjIgICAgQU1EIEFtZFRhYmxlICAgICAgICAxIEFNRCAgICAg
ICAgIDEpCihYRU4pIEFDUEk6IFdQQlQgQTY4NEUwMDAsIDAwMzYgKHIxICAgIEFNRCAgICBBIE0g
SSAgICAgICAgMSBNU0ZUICAgIDEwMDEzKQooWEVOKSBBQ1BJOiBJVlJTIEE2ODREMDAwLCAwMUU4
IChyMiAgQU1EICAgQW1kVGFibGUgICAgICAgIDEgQU1EICAgICAgICAgMSkKKFhFTikgQUNQSTog
U1NEVCBBNjg0QzAwMCwgMDZENCAocjIgICAgQU1EICBDUE1XTFJDICAgICAgICAxIElOVEwgMjAy
MzAzMzEpCihYRU4pIEFDUEk6IFNTRFQgQTY4NDIwMDAsIDk4MkYgKHIyICAgIEFNRCAgIENQTUNN
TiAgICAgICAgMSBJTlRMIDIwMjMwMzMxKQooWEVOKSBBQ1BJOiBBUElDIEE2ODNGMDAwLCAxMDg4
IChyNiBBTUQgICAgICBBIE0gSSAgICAgICAgIDEgQU1JICAgICAxMDAxMykKKFhFTikgQUNQSTog
U1NEVCBBNjgzQzAwMCwgMjM4NyAocjIgICAgQU1EIEFPRCAgICAgICAgICAgICAxIElOVEwgMjAy
MzAzMzEpCihYRU4pIEFDUEk6IFNTRFQgQTY4M0IwMDAsIDA1MDAgKHIyICAgIEFNRCBNRU1UT09M
MCAgICAgICAgMiBJTlRMIDIwMjMwMzMxKQooWEVOKSBBQ1BJOiBTU0RUIEE2ODNBMDAwLCAwOTZB
IChyMiAgICBBTUQgQ1BNTVNPU0MgICAgICAgIDEgSU5UTCAyMDIzMDMzMSkKKFhFTikgQUNQSTog
U1NEVCBBNjgzOTAwMCwgMEI3MiAocjIgICAgQU1EIENQTUFDUFY2ICAgICAgICAxIElOVEwgMjAy
MzAzMzEpCihYRU4pIEFDUEk6IFNTRFQgQTY4MzgwMDAsIDA0NEUgKHIyICAgIEFNRCBBbWRUYWJs
ZSAgICAgICAgMSBJTlRMIDIwMjMwMzMxKQooWEVOKSBBQ1BJOiBFUlNUIEE2ODM3MDAwLCAwMjMw
IChyMSAgQU1JRVIgQU1JLkVSU1QgICAgICAgIDAgQU1JLiAgICAgICAgMCkKKFhFTikgQUNQSTog
SEVTVCBBNjgwNjAwMCwgMzBBMTQgKHIxIEFNRCAgICBBTUQgSEVTVCAgICAgICAgMSBBTUQgICAg
ICAgICAxKQooWEVOKSBBQ1BJOiBCR1JUIEE3NDY2MDAwLCAwMDM4IChyMSBBTUQgICAgICBBIE0g
SSAgICAgICAgIDEgQU1JICAgICAxMDAxMykKKFhFTikgQUNQSTogV1NNVCBBNzQ0OTAwMCwgMDAy
OCAocjEgQU1EICAgICAgQSBNIEkgICAgICAgICAxIEFNSSAgICAgMTAwMTMpCihYRU4pIFN5c3Rl
bSBSQU06IDI2MTYyOE1CICgyNjc5MDc5NTZrQikKKFhFTikgTm8gTlVNQSBjb25maWd1cmF0aW9u
IGZvdW5kCihYRU4pIEZha2luZyBhIG5vZGUgYXQgMDAwMDAwMDAwMDAwMDAwMC0wMDAwMDA0MDNk
YmMwMDAwCihYRU4pIERvbWFpbiBoZWFwIGluaXRpYWxpc2VkCihYRU4pIHZlc2FmYjogZnJhbWVi
dWZmZXIgYXQgMHgwMDAwMDRkODAwMDAwMDAwLCBtYXBwZWQgdG8gMHhmZmZmODJjMDAwMjAxMDAw
LCB1c2luZyAxNDQwMGssIHRvdGFsIDE0NDAwawooWEVOKSB2ZXNhZmI6IG1vZGUgaXMgMjU2MHgx
NDQweDMyLCBsaW5lbGVuZ3RoPTEwMjQwLCBmb250IDh4MTYKKFhFTikgdmVzYWZiOiBUcnVlY29s
b3I6IHNpemU9ODo4Ojg6OCwgc2hpZnQ9MjQ6MTY6ODowCihYRU4pIFNNQklPUyAzLjYgcHJlc2Vu
dC4KKFhFTikgeDJBUElDIG1vZGUgaXMgYWxyZWFkeSBlbmFibGVkIGJ5IEJJT1MuCihYRU4pIFVz
aW5nIEFQSUMgZHJpdmVyIHgyYXBpY19jbHVzdGVyCihYRU4pIEFDUEk6IFBNLVRpbWVyIElPIFBv
cnQ6IDB4ODA4ICgzMiBiaXRzKQooWEVOKSBBQ1BJOiB2NSBTTEVFUCBJTkZPOiBjb250cm9sWzA6
MF0sIHN0YXR1c1swOjBdCihYRU4pIEFDUEk6IFNMRUVQIElORk86IHBtMXhfY250WzE6ODA0LDE6
MF0sIHBtMXhfZXZ0WzE6ODAwLDE6MF0KKFhFTikgQUNQSTogMzIvNjRYIEZBQ1MgYWRkcmVzcyBt
aXNtYXRjaCBpbiBGQURUIC0gYTk0NWEwMDAvMDAwMDAwMDAwMDAwMDAwMCwgdXNpbmcgMzIKKFhF
TikgQUNQSTogICAgICAgICAgICAgd2FrZXVwX3ZlY1thOTQ1YTAwY10sIHZlY19zaXplWzIwXQoo
WEVOKSBBQ1BJOiBMb2NhbCBBUElDIGFkZHJlc3MgMHhmZWUwMDAwMAooWEVOKSBBQ1BJOiBJT0FQ
SUMgKGlkWzB4ODBdIGFkZHJlc3NbMHhmZWMwMDAwMF0gZ3NpX2Jhc2VbMF0pCihYRU4pIElPQVBJ
Q1swXTogYXBpY19pZCAxMjgsIHZlcnNpb24gMzMsIGFkZHJlc3MgMHhmZWMwMDAwMCwgR1NJIDAt
MjMKKFhFTikgQUNQSTogSU9BUElDIChpZFsweDgxXSBhZGRyZXNzWzB4ZGYxODAwMDBdIGdzaV9i
YXNlWzEyMF0pCihYRU4pIElPQVBJQ1sxXTogYXBpY19pZCAxMjksIHZlcnNpb24gMzMsIGFkZHJl
c3MgMHhkZjE4MDAwMCwgR1NJIDEyMC0xNTEKKFhFTikgQUNQSTogSU9BUElDIChpZFsweDgyXSBh
ZGRyZXNzWzB4ZDMxODAwMDBdIGdzaV9iYXNlWzg4XSkKKFhFTikgSU9BUElDWzJdOiBhcGljX2lk
IDEzMCwgdmVyc2lvbiAzMywgYWRkcmVzcyAweGQzMTgwMDAwLCBHU0kgODgtMTE5CihYRU4pIEFD
UEk6IElPQVBJQyAoaWRbMHg4M10gYWRkcmVzc1sweGY3MTgwMDAwXSBnc2lfYmFzZVsyNF0pCihY
RU4pIElPQVBJQ1szXTogYXBpY19pZCAxMzEsIHZlcnNpb24gMzMsIGFkZHJlc3MgMHhmNzE4MDAw
MCwgR1NJIDI0LTU1CihYRU4pIEFDUEk6IElPQVBJQyAoaWRbMHg4NF0gYWRkcmVzc1sweGM5MTgw
MDAwXSBnc2lfYmFzZVs1Nl0pCihYRU4pIElPQVBJQ1s0XTogYXBpY19pZCAxMzIsIHZlcnNpb24g
MzMsIGFkZHJlc3MgMHhjOTE4MDAwMCwgR1NJIDU2LTg3CihYRU4pIEFDUEk6IElOVF9TUkNfT1ZS
IChidXMgMCBidXNfaXJxIDAgZ2xvYmFsX2lycSAyIGRmbCBkZmwpCihYRU4pIEFDUEk6IElOVF9T
UkNfT1ZSIChidXMgMCBidXNfaXJxIDkgZ2xvYmFsX2lycSA5IGxvdyBsZXZlbCkKKFhFTikgQUNQ
STogSVJRMCB1c2VkIGJ5IG92ZXJyaWRlLgooWEVOKSBBQ1BJOiBJUlEyIHVzZWQgYnkgb3ZlcnJp
ZGUuCihYRU4pIEFDUEk6IElSUTkgdXNlZCBieSBvdmVycmlkZS4KKFhFTikgQUNQSTogSFBFVCBp
ZDogMHgxMDIyODIwMSBiYXNlOiAweGZlZDAwMDAwCihYRU4pIFBDSTogTUNGRyBjb25maWd1cmF0
aW9uIDA6IGJhc2UgZTAwMDAwMDAgc2VnbWVudCAwMDAwIGJ1c2VzIDAwIC0gZmYKKFhFTikgUENJ
OiBNQ0ZHIGFyZWEgYXQgZTAwMDAwMDAgcmVzZXJ2ZWQgaW4gRTgyMAooWEVOKSBQQ0k6IFVzaW5n
IE1DRkcgZm9yIHNlZ21lbnQgMDAwMCBidXMgMDAtZmYKKFhFTikgWGVuIEVSU1Qgc3VwcG9ydCBp
cyBpbml0aWFsaXplZC4KKFhFTikgSEVTVDogVGFibGUgcGFyc2luZyBoYXMgYmVlbiBpbml0aWFs
aXplZAooWEVOKSBBQ1BJOiBCR1JUOiBpbnZhbGlkYXRpbmcgdjEgaW1hZ2UgYXQgMHg5YjBkMDAx
OAooWEVOKSBVc2luZyBBQ1BJIChNQURUKSBmb3IgU01QIGNvbmZpZ3VyYXRpb24gaW5mb3JtYXRp
b24KKFhFTikgU01QOiBBbGxvd2luZyA0OCBDUFVzICgwIGhvdHBsdWcgQ1BVcykKKFhFTikgSVJR
IGxpbWl0czogMTUyIEdTSSwgOTgzMiBNU0kvTVNJLVgKKFhFTikgQU1ELVZpOiBJT01NVSBFeHRl
bmRlZCBGZWF0dXJlczoKKFhFTikgLSBQZXJpcGhlcmFsIFBhZ2UgU2VydmljZSBSZXF1ZXN0CihY
RU4pIC0geDJBUElDCihYRU4pIC0gTlggYml0CihYRU4pIC0gR3Vlc3QgQVBJQyBQaHlzaWNhbCBQ
cm9jZXNzb3IgSW50ZXJydXB0CihYRU4pIC0gSW52YWxpZGF0ZSBBbGwgQ29tbWFuZAooWEVOKSAt
IEd1ZXN0IEFQSUMKKFhFTikgLSBQZXJmb3JtYW5jZSBDb3VudGVycwooWEVOKSAtIEhvc3QgQWRk
cmVzcyBUcmFuc2xhdGlvbiBTaXplOiAweDIKKFhFTikgLSBHdWVzdCBBZGRyZXNzIFRyYW5zbGF0
aW9uIFNpemU6IDB4MQooWEVOKSAtIEd1ZXN0IENSMyBSb290IFRhYmxlIExldmVsOiAweDEKKFhF
TikgLSBNYXhpbXVtIFBBU0lEOiAweGYKKFhFTikgLSBTTUkgRmlsdGVyIFJlZ2lzdGVyOiAweDEK
KFhFTikgLSBTTUkgRmlsdGVyIFJlZ2lzdGVyIENvdW50OiAweDIKKFhFTikgLSBHdWVzdCBWaXJ0
dWFsIEFQSUMgTW9kZXM6IDB4MQooWEVOKSAtIER1YWwgUFBSIExvZzogMHgyCihYRU4pIC0gRHVh
bCBFdmVudCBMb2c6IDB4MgooWEVOKSAtIFNlY3VyZSBBVFMKKFhFTikgLSBVc2VyIC8gU3VwZXJ2
aXNvciBQYWdlIFByb3RlY3Rpb24KKFhFTikgLSBEZXZpY2UgVGFibGUgU2VnbWVudGF0aW9uOiAw
CihYRU4pIC0gUFBSIExvZyBPdmVyZmxvdyBFYXJseSBXYXJuaW5nCihYRU4pIC0gUFBSIEF1dG9t
YXRpYyBSZXNwb25zZQooWEVOKSAtIE1lbW9yeSBBY2Nlc3MgUm91dGluZyBhbmQgQ29udHJvbDog
MAooWEVOKSAtIEJsb2NrIFN0b3BNYXJrIE1lc3NhZ2UKKFhFTikgLSBQZXJmb3JtYW5jZSBPcHRp
bWl6YXRpb24KKFhFTikgLSBNU0kgQ2FwYWJpbGl0eSBNTUlPIEFjY2VzcwooWEVOKSAtIEd1ZXN0
IEkvTyBQcm90ZWN0aW9uCihYRU4pIC0gSG9zdCBBY2Nlc3MKKFhFTikgLSBFbmhhbmNlZCBQUFIg
SGFuZGxpbmcKKFhFTikgLSBBdHRyaWJ1dGUgRm9yd2FyZAooWEVOKSAtIEhvc3QgRGlydHkKKFhF
TikgLSBWaXJ0dWFsaXplZCBJT01NVQooWEVOKSAtIFZNR3VhcmQgSS9PIFN1cHBvcnQKKFhFTikg
LSBWTSBUYWJsZSBTaXplOiAweDIKKFhFTikgLSBHdWVzdCBBY2Nlc3MgQml0IFVwZGF0ZSBEaXNh
YmxlCihYRU4pIEFNRC1WaTogRGlzYWJsZWQgSEFQIG1lbW9yeSBtYXAgc2hhcmluZyB3aXRoIElP
TU1VCihYRU4pIEFNRC1WaTogSU9NTVUgMCBFbmFibGVkLgooWEVOKSBBTUQtVmk6IElPTU1VIDEg
RW5hYmxlZC4KKFhFTikgQU1ELVZpOiBJT01NVSAyIEVuYWJsZWQuCihYRU4pIEFNRC1WaTogSU9N
TVUgMyBFbmFibGVkLgooWEVOKSBDUFUwOiAxNTAwIC4uLiA0MjAwIE1IegooWEVOKSB4c3RhdGU6
IHNpemU6IDB4OTg4IGFuZCBzdGF0ZXM6IDB4MmU3CihYRU4pIENQVTA6IEFNRCBGYW0xOWggbWFj
aGluZSBjaGVjayByZXBvcnRpbmcgZW5hYmxlZAooWEVOKSBTcGVjdWxhdGl2ZSBtaXRpZ2F0aW9u
IGZhY2lsaXRpZXM6CihYRU4pICAgSGFyZHdhcmUgaGludHM6IFNUSUJQX0FMV0FZUyBJQlJTX0ZB
U1QgSUJSU19TQU1FX01PREUgQlRDX05PIElCUEJfUkVUCihYRU4pICAgSGFyZHdhcmUgZmVhdHVy
ZXM6IElCUEIgSUJSUyBTVElCUCBTU0JEIFBTRkQgTDFEX0ZMVVNICihYRU4pICAgQ29tcGlsZWQt
aW4gc3VwcG9ydDogSU5ESVJFQ1RfVEhVTksgU0hBRE9XX1BBR0lORwooWEVOKSAgIFhlbiBzZXR0
aW5nczogQlRJLVRodW5rIEpNUCwgU1BFQ19DVFJMOiBJQlJTKyBTVElCUCsgU1NCRC0gUFNGRC0s
IE90aGVyOiBCUkFOQ0hfSEFSREVOCihYRU4pICAgU3VwcG9ydCBmb3IgSFZNIFZNczogTVNSX1NQ
RUNfQ1RSTCBNU1JfVklSVF9TUEVDX0NUUkwgUlNCIElCUEItZW50cnkKKFhFTikgICBTdXBwb3J0
IGZvciBQViBWTXM6IElCUEItZW50cnkKKFhFTikgICBYUFRJICg2NC1iaXQgUFYgb25seSk6IERv
bTAgZGlzYWJsZWQsIERvbVUgZGlzYWJsZWQgKHdpdGggUENJRCkKKFhFTikgICBQViBMMVRGIHNo
YWRvd2luZzogRG9tMCBkaXNhYmxlZCwgRG9tVSBkaXNhYmxlZAooWEVOKSBVc2luZyBzY2hlZHVs
ZXI6IFNNUCBDcmVkaXQgU2NoZWR1bGVyIHJldjIgKGNyZWRpdDIpCihYRU4pIEluaXRpYWxpemlu
ZyBDcmVkaXQyIHNjaGVkdWxlcgooWEVOKSAgbG9hZF9wcmVjaXNpb25fc2hpZnQ6IDE4CihYRU4p
ICBsb2FkX3dpbmRvd19zaGlmdDogMzAKKFhFTikgIHVuZGVybG9hZF9iYWxhbmNlX3RvbGVyYW5j
ZTogMAooWEVOKSAgb3ZlcmxvYWRfYmFsYW5jZV90b2xlcmFuY2U6IC0zCihYRU4pICBydW5xdWV1
ZXMgYXJyYW5nZW1lbnQ6IHNvY2tldAooWEVOKSAgY2FwIGVuZm9yY2VtZW50IGdyYW51bGFyaXR5
OiAxMG1zCihYRU4pIGxvYWQgdHJhY2tpbmcgd2luZG93IGxlbmd0aCAxMDczNzQxODI0IG5zCihY
RU4pIFBsYXRmb3JtIHRpbWVyIGlzIDE0LjMxOE1IeiBIUEVUCihYRU4pIERldGVjdGVkIDQxOTku
ODcwIE1IeiBwcm9jZXNzb3IuCihYRU4pIEZyZWVkIDEwMTZrQiB1bnVzZWQgQlNTIG1lbW9yeQoo
WEVOKSBFRkkgbWVtb3J5IG1hcDoKKFhFTikgIDAwMDAwMDAwMDAwMDAtMDAwMDAwMDAwM2ZmZiB0
eXBlPTIgYXR0cj0wMDAwMDAwMDAwMDAwMDBmCihYRU4pICAwMDAwMDAwMDA0MDAwLTAwMDAwMDAw
OGVmZmYgdHlwZT03IGF0dHI9MDAwMDAwMDAwMDAwMDAwZgooWEVOKSAgMDAwMDAwMDA4ZjAwMC0w
MDAwMDAwMDllZmZmIHR5cGU9MiBhdHRyPTAwMDAwMDAwMDAwMDAwMGYKKFhFTikgIDAwMDAwMDAw
OWYwMDAtMDAwMDAwMDA5ZmZmZiB0eXBlPTQgYXR0cj0wMDAwMDAwMDAwMDAwMDBmCihYRU4pICAw
MDAwMDAwMTAwMDAwLTAwMDAwMDJlMWJmZmYgdHlwZT0yIGF0dHI9MDAwMDAwMDAwMDAwMDAwZgoo
WEVOKSAgMDAwMDAwMmUxYzAwMC0wMDAwMDAzZmZmZmZmIHR5cGU9NyBhdHRyPTAwMDAwMDAwMDAw
MDAwMGYKKFhFTikgIDAwMDAwMDQwMDAwMDAtMDAwMDAwNDA0NWZmZiB0eXBlPTEwIGF0dHI9MDAw
MDAwMDAwMDAwMDAwZgooWEVOKSAgMDAwMDAwNDA0NjAwMC0wMDAwMDA5YWZlZmZmIHR5cGU9NyBh
dHRyPTAwMDAwMDAwMDAwMDAwMGYKKFhFTikgIDAwMDAwMDlhZmYwMDAtMDAwMDAwOWZmZmZmZiB0
eXBlPTAgYXR0cj0wMDAwMDAwMDAwMDAwMDBmCihYRU4pICAwMDAwMDBhMDAwMDAwLTAwMDAwMGEy
ZmZmZmYgdHlwZT00IGF0dHI9MDAwMDAwMDAwMDAwMDAwZgooWEVOKSAgMDAwMDAwYTMwMDAwMC0w
MDAwMDBhZmZmZmZmIHR5cGU9NyBhdHRyPTAwMDAwMDAwMDAwMDAwMGYKKFhFTikgIDAwMDAwMGIw
MDAwMDAtMDAwMDAwYjAyMGZmZiB0eXBlPTAgYXR0cj0wMDAwMDAwMDAwMDAwMDBmCihYRU4pICAw
MDAwMDBiMDIxMDAwLTAwMDAwNmY4N2VmZmYgdHlwZT03IGF0dHI9MDAwMDAwMDAwMDAwMDAwZgoo
WEVOKSAgMDAwMDA2Zjg3ZjAwMC0wMDAwMDk1M2VhZmZmIHR5cGU9MSBhdHRyPTAwMDAwMDAwMDAw
MDAwMGYKKFhFTikgIDAwMDAwOTUzZWIwMDAtMDAwMDA5NTNmNGZmZiB0eXBlPTQgYXR0cj0wMDAw
MDAwMDAwMDAwMDBmCihYRU4pICAwMDAwMDk1M2Y1MDAwLTAwMDAwOTUzZmVmZmYgdHlwZT03IGF0
dHI9MDAwMDAwMDAwMDAwMDAwZgooWEVOKSAgMDAwMDA5NTNmZjAwMC0wMDAwMDk1NDA4ZmZmIHR5
cGU9NCBhdHRyPTAwMDAwMDAwMDAwMDAwMGYKKFhFTikgIDAwMDAwOTU0MDkwMDAtMDAwMDA5NTRh
NmZmZiB0eXBlPTcgYXR0cj0wMDAwMDAwMDAwMDAwMDBmCihYRU4pICAwMDAwMDk1NGE3MDAwLTAw
MDAwOTU4YThmZmYgdHlwZT0xIGF0dHI9MDAwMDAwMDAwMDAwMDAwZgooWEVOKSAgMDAwMDA5NThh
OTAwMC0wMDAwMDk1Y2IzZmZmIHR5cGU9MiBhdHRyPTAwMDAwMDAwMDAwMDAwMGYKKFhFTikgIDAw
MDAwOTVjYjQwMDAtMDAwMDA5NWNiOWZmZiB0eXBlPTcgYXR0cj0wMDAwMDAwMDAwMDAwMDBmCihY
RU4pICAwMDAwMDk1Y2JhMDAwLTAwMDAwOTVkOGNmZmYgdHlwZT0xIGF0dHI9MDAwMDAwMDAwMDAw
MDAwZgooWEVOKSAgMDAwMDA5NWQ4ZDAwMC0wMDAwMDk3NWYyZmZmIHR5cGU9NCBhdHRyPTAwMDAw
MDAwMDAwMDAwMGYKKFhFTikgIDAwMDAwOTc1ZjMwMDAtMDAwMDA5NzVmOWZmZiB0eXBlPTcgYXR0
cj0wMDAwMDAwMDAwMDAwMDBmCihYRU4pICAwMDAwMDk3NWZhMDAwLTAwMDAwOTc1ZmFmZmYgdHlw
ZT00IGF0dHI9MDAwMDAwMDAwMDAwMDAwZgooWEVOKSAgMDAwMDA5NzVmYjAwMC0wMDAwMDk3NWZk
ZmZmIHR5cGU9NyBhdHRyPTAwMDAwMDAwMDAwMDAwMGYKKFhFTikgIDAwMDAwOTc1ZmUwMDAtMDAw
MDA5NzYwOGZmZiB0eXBlPTQgYXR0cj0wMDAwMDAwMDAwMDAwMDBmCihYRU4pICAwMDAwMDk3NjA5
MDAwLTAwMDAwOTc2MDlmZmYgdHlwZT03IGF0dHI9MDAwMDAwMDAwMDAwMDAwZgooWEVOKSAgMDAw
MDA5NzYwYTAwMC0wMDAwMDk3NjBhZmZmIHR5cGU9NCBhdHRyPTAwMDAwMDAwMDAwMDAwMGYKKFhF
TikgIDAwMDAwOTc2MGIwMDAtMDAwMDA5NzYxMmZmZiB0eXBlPTcgYXR0cj0wMDAwMDAwMDAwMDAw
MDBmCihYRU4pICAwMDAwMDk3NjEzMDAwLTAwMDAwOTc2MThmZmYgdHlwZT00IGF0dHI9MDAwMDAw
MDAwMDAwMDAwZgooWEVOKSAgMDAwMDA5NzYxOTAwMC0wMDAwMDk3NjFlZmZmIHR5cGU9NyBhdHRy
PTAwMDAwMDAwMDAwMDAwMGYKKFhFTikgIDAwMDAwOTc2MWYwMDAtMDAwMDA5NzYzNWZmZiB0eXBl
PTQgYXR0cj0wMDAwMDAwMDAwMDAwMDBmCihYRU4pICAwMDAwMDk3NjM2MDAwLTAwMDAwOTc2Mzhm
ZmYgdHlwZT03IGF0dHI9MDAwMDAwMDAwMDAwMDAwZgooWEVOKSAgMDAwMDA5NzYzOTAwMC0wMDAw
MDk3NjNlZmZmIHR5cGU9NCBhdHRyPTAwMDAwMDAwMDAwMDAwMGYKKFhFTikgIDAwMDAwOTc2M2Yw
MDAtMDAwMDA5NzY0MGZmZiB0eXBlPTcgYXR0cj0wMDAwMDAwMDAwMDAwMDBmCihYRU4pICAwMDAw
MDk3NjQxMDAwLTAwMDAwOTc2NWNmZmYgdHlwZT00IGF0dHI9MDAwMDAwMDAwMDAwMDAwZgooWEVO
KSAgMDAwMDA5NzY1ZDAwMC0wMDAwMDk3NjYyZmZmIHR5cGU9NyBhdHRyPTAwMDAwMDAwMDAwMDAw
MGYKKFhFTikgIDAwMDAwOTc2NjMwMDAtMDAwMDA5NzZhYmZmZiB0eXBlPTQgYXR0cj0wMDAwMDAw
MDAwMDAwMDBmCihYRU4pICAwMDAwMDk3NmFjMDAwLTAwMDAwOTc2YjdmZmYgdHlwZT03IGF0dHI9
MDAwMDAwMDAwMDAwMDAwZgooWEVOKSAgMDAwMDA5NzZiODAwMC0wMDAwMDk3NmMxZmZmIHR5cGU9
NCBhdHRyPTAwMDAwMDAwMDAwMDAwMGYKKFhFTikgIDAwMDAwOTc2YzIwMDAtMDAwMDA5N2U5Y2Zm
ZiB0eXBlPTcgYXR0cj0wMDAwMDAwMDAwMDAwMDBmCihYRU4pICAwMDAwMDk3ZTlkMDAwLTAwMDAw
OTdlOWVmZmYgdHlwZT00IGF0dHI9MDAwMDAwMDAwMDAwMDAwZgooWEVOKSAgMDAwMDA5N2U5ZjAw
MC0wMDAwMDk3ZWEyZmZmIHR5cGU9NyBhdHRyPTAwMDAwMDAwMDAwMDAwMGYKKFhFTikgIDAwMDAw
OTdlYTMwMDAtMDAwMDA5N2VhM2ZmZiB0eXBlPTQgYXR0cj0wMDAwMDAwMDAwMDAwMDBmCihYRU4p
ICAwMDAwMDk3ZWE0MDAwLTAwMDAwOTdlYzlmZmYgdHlwZT03IGF0dHI9MDAwMDAwMDAwMDAwMDAw
ZgooWEVOKSAgMDAwMDA5N2VjYTAwMC0wMDAwMDk3ZWNmZmZmIHR5cGU9NCBhdHRyPTAwMDAwMDAw
MDAwMDAwMGYKKFhFTikgIDAwMDAwOTdlZDAwMDAtMDAwMDA5N2VkMmZmZiB0eXBlPTcgYXR0cj0w
MDAwMDAwMDAwMDAwMDBmCihYRU4pICAwMDAwMDk3ZWQzMDAwLTAwMDAwOTdlZTRmZmYgdHlwZT00
IGF0dHI9MDAwMDAwMDAwMDAwMDAwZgooWEVOKSAgMDAwMDA5N2VlNTAwMC0wMDAwMDk3ZjY5ZmZm
IHR5cGU9NyBhdHRyPTAwMDAwMDAwMDAwMDAwMGYKKFhFTikgIDAwMDAwOTdmNmEwMDAtMDAwMDA5
YjFkY2ZmZiB0eXBlPTQgYXR0cj0wMDAwMDAwMDAwMDAwMDBmCihYRU4pICAwMDAwMDliMWRkMDAw
LTAwMDAwOWIxZGRmZmYgdHlwZT03IGF0dHI9MDAwMDAwMDAwMDAwMDAwZgooWEVOKSAgMDAwMDA5
YjFkZTAwMC0wMDAwMDllNGU4ZmZmIHR5cGU9NCBhdHRyPTAwMDAwMDAwMDAwMDAwMGYKKFhFTikg
IDAwMDAwOWU0ZTkwMDAtMDAwMDA5ZjdmZmZmZiB0eXBlPTcgYXR0cj0wMDAwMDAwMDAwMDAwMDBm
CihYRU4pICAwMDAwMDlmODAwMDAwLTAwMDAwOWZiYjFmZmYgdHlwZT0yIGF0dHI9MDAwMDAwMDAw
MDAwMDAwZgooWEVOKSAgMDAwMDA5ZmJiMjAwMC0wMDAwMDlmZDc2ZmZmIHR5cGU9NyBhdHRyPTAw
MDAwMDAwMDAwMDAwMGYKKFhFTikgIDAwMDAwOWZkNzcwMDAtMDAwMDBhMDRlOGZmZiB0eXBlPTMg
YXR0cj0wMDAwMDAwMDAwMDAwMDBmCihYRU4pICAwMDAwMGEwNGU5MDAwLTAwMDAwYTY0ZThmZmYg
dHlwZT0wIGF0dHI9MDAwMDAwMDAwMDAwMDAwZgooWEVOKSAgMDAwMDBhNjRlOTAwMC0wMDAwMGE3
NDdlZmZmIHR5cGU9OSBhdHRyPTAwMDAwMDAwMDAwMDAwMGYKKFhFTikgIDAwMDAwYTc0N2YwMDAt
MDAwMDBhOTQ3ZWZmZiB0eXBlPTEwIGF0dHI9MDAwMDAwMDAwMDAwMDAwZgooWEVOKSAgMDAwMDBh
OTQ3ZjAwMC0wMDAwMGFkYzdlZmZmIHR5cGU9NiBhdHRyPTgwMDAwMDAwMDAwMDAwMGYKKFhFTikg
IDAwMDAwYWRjN2YwMDAtMDAwMDBhZGRmZWZmZiB0eXBlPTUgYXR0cj04MDAwMDAwMDAwMDAwMDBm
CihYRU4pICAwMDAwMGFkZGZmMDAwLTAwMDAwYWRmZmZmZmYgdHlwZT00IGF0dHI9MDAwMDAwMDAw
MDAwMDAwZgooWEVOKSAgMDAwMDBhZTAwMDAwMC0wMDAwMGFlMTNhZmZmIHR5cGU9NyBhdHRyPTAw
MDAwMDAwMDAwMDAwMGYKKFhFTikgIDAwMDAwYWUxM2IwMDAtMDAwMDBhZTIzYWZmZiB0eXBlPTQg
YXR0cj0wMDAwMDAwMDAwMDAwMDBmCihYRU4pICAwMDAwMGFlMjNiMDAwLTAwMDAwYWUyNWJmZmYg
dHlwZT0zIGF0dHI9MDAwMDAwMDAwMDAwMDAwZgooWEVOKSAgMDAwMDBhZTI1YzAwMC0wMDAwMGFm
NzY1ZmZmIHR5cGU9NCBhdHRyPTAwMDAwMDAwMDAwMDAwMGYKKFhFTikgIDAwMDAwYWY3NjYwMDAt
MDAwMDBhZjc4MmZmZiB0eXBlPTMgYXR0cj0wMDAwMDAwMDAwMDAwMDBmCihYRU4pICAwMDAwMGFm
NzgzMDAwLTAwMDAwYWY3OWJmZmYgdHlwZT00IGF0dHI9MDAwMDAwMDAwMDAwMDAwZgooWEVOKSAg
MDAwMDBhZjc5YzAwMC0wMDAwMGFmNzlmZmZmIHR5cGU9MyBhdHRyPTAwMDAwMDAwMDAwMDAwMGYK
KFhFTikgIDAwMDAwYWY3YTAwMDAtMDAwMDBhZjdiM2ZmZiB0eXBlPTQgYXR0cj0wMDAwMDAwMDAw
MDAwMDBmCihYRU4pICAwMDAwMGFmN2I0MDAwLTAwMDAwYWY3ZGNmZmYgdHlwZT0zIGF0dHI9MDAw
MDAwMDAwMDAwMDAwZgooWEVOKSAgMDAwMDBhZjdkZDAwMC0wMDAwMGFmZmYzZmZmIHR5cGU9NCBh
dHRyPTAwMDAwMDAwMDAwMDAwMGYKKFhFTikgIDAwMDAwYWZmZjQwMDAtMDAwMDBhZmZmYWZmZiB0
eXBlPTMgYXR0cj0wMDAwMDAwMDAwMDAwMDBmCihYRU4pICAwMDAwMGFmZmZiMDAwLTAwMDAwYWZm
ZmZmZmYgdHlwZT02IGF0dHI9ODAwMDAwMDAwMDAwMDAwZgooWEVOKSAgMDAwMDEwMDAwMDAwMC0w
MDA0MDNkYmJmZmZmIHR5cGU9NyBhdHRyPTAwMDAwMDAwMDAwMDAwMGYKKFhFTikgIDAwMDAwMDAw
YTAwMDAtMDAwMDAwMDBmZmZmZiB0eXBlPTAgYXR0cj0wMDAwMDAwMDAwMDAwMDBmCihYRU4pICAw
MDAwMGIwMDAwMDAwLTAwMDAwYmZmZmZmZmYgdHlwZT0wIGF0dHI9MDAwMDAwMDAwMDAwMDAwZgoo
WEVOKSAgMDAwMDBkZjIwMDAwMC0wMDAwMGRmMmZmZmZmIHR5cGU9MTEgYXR0cj04MDAwMDAwMDAw
MDAwMDAxCihYRU4pICAwMDAwMGUwMDAwMDAwLTAwMDAwZWZmZmZmZmYgdHlwZT0xMSBhdHRyPTgw
MDAwMDAwMDAwMDEwMGQKKFhFTikgIDAwMDAwZmVhMDAwMDAtMDAwMDBmZWFmZmZmZiB0eXBlPTEx
IGF0dHI9ODAwMDAwMDAwMDAwMDAwMQooWEVOKSAgMDAwMDBmZWMwMDAwMC0wMDAwMGZlYzAwZmZm
IHR5cGU9MTEgYXR0cj04MDAwMDAwMDAwMDAwMDAxCihYRU4pICAwMDAwMGZlYzEwMDAwLTAwMDAw
ZmVjMTBmZmYgdHlwZT0xMSBhdHRyPTgwMDAwMDAwMDAwMDAwMDEKKFhFTikgIDAwMDAwZmVjMzAw
MDAtMDAwMDBmZWMzMGZmZiB0eXBlPTExIGF0dHI9ODAwMDAwMDAwMDAwMDAwMQooWEVOKSAgMDAw
MDBmZWQwMDAwMC0wMDAwMGZlZDAwZmZmIHR5cGU9MTEgYXR0cj04MDAwMDAwMDAwMDAwMDAxCihY
RU4pICAwMDAwMGZlZDQwMDAwLTAwMDAwZmVkNDRmZmYgdHlwZT0xMSBhdHRyPTgwMDAwMDAwMDAw
MDAwMDEKKFhFTikgIDAwMDAwZmVkODAwMDAtMDAwMDBmZWQ4ZmZmZiB0eXBlPTExIGF0dHI9ODAw
MDAwMDAwMDAwMDAwMQooWEVOKSAgMDAwMDBmZjAwMDAwMC0wMDAwMGZmZmZmZmZmIHR5cGU9MTEg
YXR0cj04MDAwMDAwMDAwMDAwMDAxCihYRU4pICAwMDA0MDNkYmMwMDAwLTAwMDQwM2ZmZmZmZmYg
dHlwZT0wIGF0dHI9MDAwMDAwMDAwMDAwMDAwZgooWEVOKSBhbHQgdGFibGUgZmZmZjgyZDA0MDQ1
YmQ5OCAtPiBmZmZmODJkMDQwNDY3Yjc4CihYRU4pIEkvTyB2aXJ0dWFsaXNhdGlvbiBlbmFibGVk
CihYRU4pICAtIERvbTAgbW9kZTogUmVsYXhlZAooWEVOKSBJbnRlcnJ1cHQgcmVtYXBwaW5nIGVu
YWJsZWQKKFhFTikgbnJfc29ja2V0czogMQooWEVOKSBFbmFibGVkIGRpcmVjdGVkIEVPSSB3aXRo
IGlvYXBpY19hY2tfb2xkIG9uIQooWEVOKSBFbmFibGluZyBBUElDIG1vZGU6ICBDbHVzdGVyZWQu
ICBVc2luZyA1IEkvTyBBUElDcwooWEVOKSBFTkFCTElORyBJTy1BUElDIElSUXMKKFhFTikgIC0+
IFVzaW5nIG9sZCBBQ0sgbWV0aG9kCihYRU4pIC4uVElNRVI6IHZlY3Rvcj0weEYwIGFwaWMxPTAg
cGluMT0yIGFwaWMyPS0xIHBpbjI9LTEKKFhFTikgRGVmYXVsdGluZyB0byBhbHRlcm5hdGl2ZSBr
ZXkgaGFuZGxpbmc7IHNlbmQgJ0EnIHRvIHN3aXRjaCB0byBub3JtYWwgbW9kZS4KKFhFTikgQWxs
b2NhdGVkIGNvbnNvbGUgcmluZyBvZiA1MTIgS2lCLgooWEVOKSBtd2FpdC1pZGxlOiBkb2VzIG5v
dCBydW4gb24gZmFtaWx5IDI1IG1vZGVsIDI0CihYRU4pIEhWTTogQVNJRHMgZW5hYmxlZC4KKFhF
TikgU1ZNOiBTdXBwb3J0ZWQgYWR2YW5jZWQgZmVhdHVyZXM6CihYRU4pICAtIE5lc3RlZCBQYWdl
IFRhYmxlcyAoTlBUKQooWEVOKSAgLSBMYXN0IEJyYW5jaCBSZWNvcmQgKExCUikgVmlydHVhbGlz
YXRpb24KKFhFTikgIC0gTmV4dC1SSVAgU2F2ZWQgb24gI1ZNRVhJVAooWEVOKSAgLSBWTUNCIENs
ZWFuIEJpdHMKKFhFTikgIC0gRGVjb2RlQXNzaXN0cwooWEVOKSAgLSBWaXJ0dWFsIFZNTE9BRC9W
TVNBVkUKKFhFTikgIC0gVmlydHVhbCBHSUYKKFhFTikgIC0gUGF1c2UtSW50ZXJjZXB0IEZpbHRl
cgooWEVOKSAgLSBQYXVzZS1JbnRlcmNlcHQgRmlsdGVyIFRocmVzaG9sZAooWEVOKSAgLSBUU0Mg
UmF0ZSBNU1IKKFhFTikgIC0gTlBUIFN1cGVydmlzb3IgU2hhZG93IFN0YWNrCihYRU4pICAtIE1T
Ul9TUEVDX0NUUkwgdmlydHVhbGlzYXRpb24KKFhFTikgSFZNOiBTVk0gZW5hYmxlZAooWEVOKSBI
Vk06IEhhcmR3YXJlIEFzc2lzdGVkIFBhZ2luZyAoSEFQKSBkZXRlY3RlZAooWEVOKSBIVk06IEhB
UCBwYWdlIHNpemVzOiA0a0IsIDJNQiwgMUdCCihYRU4pIGFsdCB0YWJsZSBmZmZmODJkMDQwNDVi
ZDk4IC0+IGZmZmY4MmQwNDA0NjdiNzgKKFhFTikgQnJvdWdodCB1cCA0OCBDUFVzCihYRU4pIFNj
aGVkdWxpbmcgZ3JhbnVsYXJpdHk6IGNwdSwgMSBDUFUgcGVyIHNjaGVkLXJlc291cmNlCihYRU4p
IEluaXRpYWxpemluZyBDcmVkaXQyIHNjaGVkdWxlcgooWEVOKSAgbG9hZF9wcmVjaXNpb25fc2hp
ZnQ6IDE4CihYRU4pICBsb2FkX3dpbmRvd19zaGlmdDogMzAKKFhFTikgIHVuZGVybG9hZF9iYWxh
bmNlX3RvbGVyYW5jZTogMAooWEVOKSAgb3ZlcmxvYWRfYmFsYW5jZV90b2xlcmFuY2U6IC0zCihY
RU4pICBydW5xdWV1ZXMgYXJyYW5nZW1lbnQ6IHNvY2tldAooWEVOKSAgY2FwIGVuZm9yY2VtZW50
IGdyYW51bGFyaXR5OiAxMG1zCihYRU4pIGxvYWQgdHJhY2tpbmcgd2luZG93IGxlbmd0aCAxMDcz
NzQxODI0IG5zCihYRU4pIEFkZGluZyBjcHUgMCB0byBydW5xdWV1ZSAwCihYRU4pICBGaXJzdCBj
cHUgb24gcnVucXVldWUsIGFjdGl2YXRpbmcKKFhFTikgQWRkaW5nIGNwdSAxIHRvIHJ1bnF1ZXVl
IDAKKFhFTikgQWRkaW5nIGNwdSAyIHRvIHJ1bnF1ZXVlIDAKKFhFTikgQWRkaW5nIGNwdSAzIHRv
IHJ1bnF1ZXVlIDAKKFhFTikgQWRkaW5nIGNwdSA0IHRvIHJ1bnF1ZXVlIDAKKFhFTikgQWRkaW5n
IGNwdSA1IHRvIHJ1bnF1ZXVlIDAKKFhFTikgQWRkaW5nIGNwdSA2IHRvIHJ1bnF1ZXVlIDAKKFhF
TikgQWRkaW5nIGNwdSA3IHRvIHJ1bnF1ZXVlIDAKKFhFTikgQWRkaW5nIGNwdSA4IHRvIHJ1bnF1
ZXVlIDAKKFhFTikgQWRkaW5nIGNwdSA5IHRvIHJ1bnF1ZXVlIDAKKFhFTikgQWRkaW5nIGNwdSAx
MCB0byBydW5xdWV1ZSAwCihYRU4pIEFkZGluZyBjcHUgMTEgdG8gcnVucXVldWUgMAooWEVOKSBB
ZGRpbmcgY3B1IDEyIHRvIHJ1bnF1ZXVlIDAKKFhFTikgQWRkaW5nIGNwdSAxMyB0byBydW5xdWV1
ZSAwCihYRU4pIEFkZGluZyBjcHUgMTQgdG8gcnVucXVldWUgMAooWEVOKSBBZGRpbmcgY3B1IDE1
IHRvIHJ1bnF1ZXVlIDAKKFhFTikgQWRkaW5nIGNwdSAxNiB0byBydW5xdWV1ZSAxCihYRU4pICBG
aXJzdCBjcHUgb24gcnVucXVldWUsIGFjdGl2YXRpbmcKKFhFTikgQWRkaW5nIGNwdSAxNyB0byBy
dW5xdWV1ZSAxCihYRU4pIEFkZGluZyBjcHUgMTggdG8gcnVucXVldWUgMQooWEVOKSBBZGRpbmcg
Y3B1IDE5IHRvIHJ1bnF1ZXVlIDEKKFhFTikgQWRkaW5nIGNwdSAyMCB0byBydW5xdWV1ZSAxCihY
RU4pIEFkZGluZyBjcHUgMjEgdG8gcnVucXVldWUgMQooWEVOKSBBZGRpbmcgY3B1IDIyIHRvIHJ1
bnF1ZXVlIDEKKFhFTikgQWRkaW5nIGNwdSAyMyB0byBydW5xdWV1ZSAxCihYRU4pIEFkZGluZyBj
cHUgMjQgdG8gcnVucXVldWUgMQooWEVOKSBBZGRpbmcgY3B1IDI1IHRvIHJ1bnF1ZXVlIDEKKFhF
TikgQWRkaW5nIGNwdSAyNiB0byBydW5xdWV1ZSAxCihYRU4pIEFkZGluZyBjcHUgMjcgdG8gcnVu
cXVldWUgMQooWEVOKSBBZGRpbmcgY3B1IDI4IHRvIHJ1bnF1ZXVlIDEKKFhFTikgQWRkaW5nIGNw
dSAyOSB0byBydW5xdWV1ZSAxCihYRU4pIEFkZGluZyBjcHUgMzAgdG8gcnVucXVldWUgMQooWEVO
KSBBZGRpbmcgY3B1IDMxIHRvIHJ1bnF1ZXVlIDEKKFhFTikgQWRkaW5nIGNwdSAzMiB0byBydW5x
dWV1ZSAyCihYRU4pICBGaXJzdCBjcHUgb24gcnVucXVldWUsIGFjdGl2YXRpbmcKKFhFTikgQWRk
aW5nIGNwdSAzMyB0byBydW5xdWV1ZSAyCihYRU4pIEFkZGluZyBjcHUgMzQgdG8gcnVucXVldWUg
MgooWEVOKSBBZGRpbmcgY3B1IDM1IHRvIHJ1bnF1ZXVlIDIKKFhFTikgQWRkaW5nIGNwdSAzNiB0
byBydW5xdWV1ZSAyCihYRU4pIEFkZGluZyBjcHUgMzcgdG8gcnVucXVldWUgMgooWEVOKSBBZGRp
bmcgY3B1IDM4IHRvIHJ1bnF1ZXVlIDIKKFhFTikgQWRkaW5nIGNwdSAzOSB0byBydW5xdWV1ZSAy
CihYRU4pIEFkZGluZyBjcHUgNDAgdG8gcnVucXVldWUgMgooWEVOKSBBZGRpbmcgY3B1IDQxIHRv
IHJ1bnF1ZXVlIDIKKFhFTikgQWRkaW5nIGNwdSA0MiB0byBydW5xdWV1ZSAyCihYRU4pIEFkZGlu
ZyBjcHUgNDMgdG8gcnVucXVldWUgMgooWEVOKSBBZGRpbmcgY3B1IDQ0IHRvIHJ1bnF1ZXVlIDIK
KFhFTikgQWRkaW5nIGNwdSA0NSB0byBydW5xdWV1ZSAyCihYRU4pIEFkZGluZyBjcHUgNDYgdG8g
cnVucXVldWUgMgooWEVOKSBBZGRpbmcgY3B1IDQ3IHRvIHJ1bnF1ZXVlIDIKKFhFTikgbWNoZWNr
X3BvbGw6IE1hY2hpbmUgY2hlY2sgcG9sbGluZyB0aW1lciBzdGFydGVkLgooWEVOKSBOWCAoRXhl
Y3V0ZSBEaXNhYmxlKSBwcm90ZWN0aW9uIGFjdGl2ZQooWEVOKSBEb20wIGhhcyBtYXhpbXVtIDE0
MDAgUElSUXMKKFhFTikgKioqIEJ1aWxkaW5nIGEgUFZIIERvbTAgKioqCihYRU4pIEVMRjogcGhk
cjogcGFkZHI9MHgyMDAwMDAgbWVtc3o9MHgxOGQ2MmI4CihYRU4pIEVMRjogcGhkcjogcGFkZHI9
MHgxYzAwMDAwIG1lbXN6PTB4NjNhMDAwCihYRU4pIEVMRjogcGhkcjogcGFkZHI9MHgyMjNhMDAw
IG1lbXN6PTB4MzQwMDAKKFhFTikgRUxGOiBwaGRyOiBwYWRkcj0weDIyNmUwMDAgbWVtc3o9MHgx
OTkyMDAwCihYRU4pIEVMRjogbWVtb3J5OiAweDIwMDAwMCAtPiAweDNjMDAwMDAKKFhFTikgRUxG
OiBub3RlOiBHVUVTVF9PUyA9ICJsaW51eCIKKFhFTikgRUxGOiBub3RlOiBHVUVTVF9WRVJTSU9O
ID0gIjIuNiIKKFhFTikgRUxGOiBub3RlOiBYRU5fVkVSU0lPTiA9ICJ4ZW4tMy4wIgooWEVOKSBF
TEY6IG5vdGU6IFZJUlRfQkFTRSA9IDB4ZmZmZmZmZmY4MDAwMDAwMAooWEVOKSBFTEY6IG5vdGU6
IElOSVRfUDJNID0gMHg4MDAwMDAwMDAwCihYRU4pIEVMRjogbm90ZTogRU5UUlkgPSAweGZmZmZm
ZmZmODIyNmUxYzAKKFhFTikgRUxGOiBub3RlOiBIWVBFUkNBTExfUEFHRSA9IDB4ZmZmZmZmZmY4
MGMxZjAwMAooWEVOKSBFTEY6IG5vdGU6IEZFQVRVUkVTID0gIiF3cml0YWJsZV9wYWdlX3RhYmxl
c3xwYWVfcGdkaXJfYWJvdmVfNGdiIgooWEVOKSBFTEY6IG5vdGU6IFNVUFBPUlRFRF9GRUFUVVJF
UyA9IDB4ODgwMQooWEVOKSBFTEY6IG5vdGU6IFBBRV9NT0RFID0gInllcyIKKFhFTikgRUxGOiBu
b3RlOiBMT0FERVIgPSAiZ2VuZXJpYyIKKFhFTikgRUxGOiBub3RlOiBMMV9NRk5fVkFMSUQgPSAw
CihYRU4pIEVMRjogbm90ZTogU1VTUEVORF9DQU5DRUwgPSAweDEKKFhFTikgRUxGOiBub3RlOiBN
T0RfU1RBUlRfUEZOID0gMHgxCihYRU4pIEVMRjogbm90ZTogSFZfU1RBUlRfTE9XID0gMHhmZmZm
ODAwMDAwMDAwMDAwCihYRU4pIEVMRjogbm90ZTogUEFERFJfT0ZGU0VUID0gMAooWEVOKSBFTEY6
IG5vdGU6IFBIWVMzMl9FTlRSWSA9IDB4MjAwODQwCihYRU4pIEVMRjogRm91bmQgUFZIIGltYWdl
CihYRU4pIEVMRjogYWRkcmVzc2VzOgooWEVOKSAgICAgdmlydF9iYXNlICAgICAgICA9IDB4MAoo
WEVOKSAgICAgZWxmX3BhZGRyX29mZnNldCA9IDB4MAooWEVOKSAgICAgdmlydF9vZmZzZXQgICAg
ICA9IDB4MAooWEVOKSAgICAgdmlydF9rc3RhcnQgICAgICA9IDB4MjAwMDAwCihYRU4pICAgICB2
aXJ0X2tlbmQgICAgICAgID0gMHgzYzAwMDAwCihYRU4pICAgICB2aXJ0X2VudHJ5ICAgICAgID0g
MHgyMDA4NDAKKFhFTikgICAgIHAybV9iYXNlICAgICAgICAgPSAweDgwMDAwMDAwMDAKKFhFTikg
RUxGOiBwaGRyIDAgYXQgMHgyMDAwMDAgLT4gMHgxYWQ2MmI4CihYRU4pIEVMRjogcGhkciAxIGF0
IDB4MWMwMDAwMCAtPiAweDIyM2EwMDAKKFhFTikgRUxGOiBwaGRyIDIgYXQgMHgyMjNhMDAwIC0+
IDB4MjI2ZTAwMAooWEVOKSBFTEY6IHBoZHIgMyBhdCAweDIyNmUwMDAgLT4gMHgzYzAwMDAwCihY
RU4pIFdBUk5JTkc6IFBWSCBpcyBhbiBleHBlcmltZW50YWwgbW9kZSB3aXRoIGxpbWl0ZWQgZnVu
Y3Rpb25hbGl0eQooWEVOKSBJbml0aWFsIGxvdyBtZW1vcnkgdmlycSB0aHJlc2hvbGQgc2V0IGF0
IDB4NDAwMCBwYWdlcy4KKFhFTikgU2NydWJiaW5nIEZyZWUgUkFNIGluIGJhY2tncm91bmQKKFhF
TikgU3RkLiBMb2dsZXZlbDogQWxsCihYRU4pIEd1ZXN0IExvZ2xldmVsOiBBbGwKKFhFTikgKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCihYRU4pIFdB
Uk5JTkc6IENPTlNPTEUgT1VUUFVUIElTIFNZTkNIUk9OT1VTCihYRU4pIFRoaXMgb3B0aW9uIGlz
IGludGVuZGVkIHRvIGFpZCBkZWJ1Z2dpbmcgb2YgWGVuIGJ5IGVuc3VyaW5nCihYRU4pIHRoYXQg
YWxsIG91dHB1dCBpcyBzeW5jaHJvbm91c2x5IGRlbGl2ZXJlZCBvbiB0aGUgc2VyaWFsIGxpbmUu
CihYRU4pIEhvd2V2ZXIgaXQgY2FuIGludHJvZHVjZSBTSUdOSUZJQ0FOVCBsYXRlbmNpZXMgYW5k
IGFmZmVjdAooWEVOKSB0aW1la2VlcGluZy4gSXQgaXMgTk9UIHJlY29tbWVuZGVkIGZvciBwcm9k
dWN0aW9uIHVzZSEKKFhFTikgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqCihYRU4pIDMuLi4gMi4uLiAxLi4uIAooWEVOKSBYZW4gaXMgcmVsaW5xdWlz
aGluZyBWR0EgY29uc29sZS4KKFhFTikgKioqIFNlcmlhbCBpbnB1dCB0byBET00wICh0eXBlICdD
VFJMLWEnIHRocmVlIHRpbWVzIHRvIHN3aXRjaCBpbnB1dCkKKFhFTikgRnJlZWQgNjYwa0IgaW5p
dCBtZW1vcnkKUG9raW5nIEtBU0xSIHVzaW5nIFJEUkFORCBSRFRTQy4uLgooWEVOKSBkMHYwOiB1
cGNhbGwgdmVjdG9yIGYzCihYRU4pIGQwdjE6IHVwY2FsbCB2ZWN0b3IgZjMKKFhFTikgZDB2Mjog
dXBjYWxsIHZlY3RvciBmMwooWEVOKSBkMHYzOiB1cGNhbGwgdmVjdG9yIGYzCihYRU4pIGQwdjQ6
IHVwY2FsbCB2ZWN0b3IgZjMKKFhFTikgZDB2NTogdXBjYWxsIHZlY3RvciBmMwooWEVOKSBkMHY2
OiB1cGNhbGwgdmVjdG9yIGYzCihYRU4pIGQwdjc6IHVwY2FsbCB2ZWN0b3IgZjMKKFhFTikgZDB2
ODogdXBjYWxsIHZlY3RvciBmMwooWEVOKSBkMHY5OiB1cGNhbGwgdmVjdG9yIGYzCihYRU4pIGQw
djEwOiB1cGNhbGwgdmVjdG9yIGYzCihYRU4pIGQwdjExOiB1cGNhbGwgdmVjdG9yIGYzCihYRU4p
IGQwdjEyOiB1cGNhbGwgdmVjdG9yIGYzCihYRU4pIGQwdjEzOiB1cGNhbGwgdmVjdG9yIGYzCihY
RU4pIGQwdjE0OiB1cGNhbGwgdmVjdG9yIGYzCihYRU4pIGQwdjE1OiB1cGNhbGwgdmVjdG9yIGYz
CihYRU4pIGQwdjE2OiB1cGNhbGwgdmVjdG9yIGYzCihYRU4pIGQwdjE3OiB1cGNhbGwgdmVjdG9y
IGYzCihYRU4pIGQwdjE4OiB1cGNhbGwgdmVjdG9yIGYzCihYRU4pIGQwdjE5OiB1cGNhbGwgdmVj
dG9yIGYzCihYRU4pIGQwdjIwOiB1cGNhbGwgdmVjdG9yIGYzCihYRU4pIGQwdjIxOiB1cGNhbGwg
dmVjdG9yIGYzCihYRU4pIGQwdjIyOiB1cGNhbGwgdmVjdG9yIGYzCihYRU4pIGQwdjIzOiB1cGNh
bGwgdmVjdG9yIGYzCihYRU4pIGQwdjI0OiB1cGNhbGwgdmVjdG9yIGYzCihYRU4pIGQwdjI1OiB1
cGNhbGwgdmVjdG9yIGYzCihYRU4pIGQwdjI2OiB1cGNhbGwgdmVjdG9yIGYzCihYRU4pIGQwdjI3
OiB1cGNhbGwgdmVjdG9yIGYzCihYRU4pIGQwdjI4OiB1cGNhbGwgdmVjdG9yIGYzCihYRU4pIGQw
djI5OiB1cGNhbGwgdmVjdG9yIGYzCihYRU4pIGQwdjMwOiB1cGNhbGwgdmVjdG9yIGYzCihYRU4p
IGQwdjMxOiB1cGNhbGwgdmVjdG9yIGYzCihYRU4pIGQwdjMyOiB1cGNhbGwgdmVjdG9yIGYzCihY
RU4pIGQwdjMzOiB1cGNhbGwgdmVjdG9yIGYzCihYRU4pIGQwdjM0OiB1cGNhbGwgdmVjdG9yIGYz
CihYRU4pIGQwdjM1OiB1cGNhbGwgdmVjdG9yIGYzCihYRU4pIGQwdjM2OiB1cGNhbGwgdmVjdG9y
IGYzCihYRU4pIGQwdjM3OiB1cGNhbGwgdmVjdG9yIGYzCihYRU4pIGQwdjM4OiB1cGNhbGwgdmVj
dG9yIGYzCihYRU4pIGQwdjM5OiB1cGNhbGwgdmVjdG9yIGYzCihYRU4pIGQwdjQwOiB1cGNhbGwg
dmVjdG9yIGYzCihYRU4pIGQwdjQxOiB1cGNhbGwgdmVjdG9yIGYzCihYRU4pIGQwdjQyOiB1cGNh
bGwgdmVjdG9yIGYzCihYRU4pIGQwdjQzOiB1cGNhbGwgdmVjdG9yIGYzCihYRU4pIGQwdjQ0OiB1
cGNhbGwgdmVjdG9yIGYzCihYRU4pIGQwdjQ1OiB1cGNhbGwgdmVjdG9yIGYzCihYRU4pIGQwdjQ2
OiB1cGNhbGwgdmVjdG9yIGYzCihYRU4pIGQwdjQ3OiB1cGNhbGwgdmVjdG9yIGYzCihYRU4pIFBD
SSBhZGQgZGV2aWNlIDAwMDA6YzA6MDAuMAooWEVOKSBQQ0kgYWRkIGRldmljZSAwMDAwOmMwOjAw
LjIKKFhFTikgUENJIGFkZCBkZXZpY2UgMDAwMDpjMDowMC4zCihYRU4pIFBDSSBhZGQgZGV2aWNl
IDAwMDA6YzA6MDEuMAooWEVOKSBQQ0kgYWRkIGRldmljZSAwMDAwOmMwOjAyLjAK
--0000000000003412b4060f3269fc
Content-Type: text/x-log; charset="US-ASCII"; name="xen-4.18_UEFI_pvh.log"
Content-Disposition: attachment; filename="xen-4.18_UEFI_pvh.log"
Content-Transfer-Encoding: base64
Content-ID: <f_lritsklp4>
X-Attachment-Id: f_lritsklp4

KFhFTikgWGVuIHZlcnNpb24gNC4xOC4wIChwYXRyaWNrQCkgKGdjYyAoRGViaWFuIDEwLjIuMS02
KSAxMC4yLjEgMjAyMTAxMTApIGRlYnVnPW4gV2VkIEphbiAxNyAxNzoyMzowMiBFU1QgMjAyNAoo
WEVOKSBMYXRlc3QgQ2hhbmdlU2V0OiAKKFhFTikgYnVpbGQtaWQ6IDg2ZTFhNmMyYmFjOTgwMjE3
ZDc2NDM1ZjY2MjA5MDI0CihYRU4pIENvbnNvbGUgb3V0cHV0IGlzIHN5bmNocm9ub3VzLgooWEVO
KSBCb290bG9hZGVyOiBFRkkKKFhFTikgQ29tbWFuZCBsaW5lOiBkb20wX21lbT04RyxtYXg6OEcg
bG9nbHZsPWFsbCBlODIwLXZlcmJvc2U9dHJ1ZSBjb25zb2xlX3RvX3Jpbmcgc3luY19jb25zb2xl
IGd1ZXN0X2xvZ2x2bD1hbGwgY29tMT0xMTUyMDAsOG4xIGNvbnNvbGU9Y29tMSx2Z2EgZG9tMD1w
dmgKKFhFTikgWGVuIGltYWdlIGxvYWQgYmFzZSBhZGRyZXNzOiAweDkwYTAwMDAwCihYRU4pIFZp
ZGVvIGluZm9ybWF0aW9uOgooWEVOKSAgVkdBIGlzIGdyYXBoaWNzIG1vZGUgMjU2MHgxNDQwLCAz
MiBicHAKKFhFTikgIFZCRS9EREMgbWV0aG9kczogbm9uZTsgRURJRCB0cmFuc2ZlciB0aW1lOiAw
IHNlY29uZHMKKFhFTikgRGlzYyBpbmZvcm1hdGlvbjoKKFhFTikgIEZvdW5kIDAgTUJSIHNpZ25h
dHVyZXMKKFhFTikgIEZvdW5kIDYgRUREIGluZm9ybWF0aW9uIHN0cnVjdHVyZXMKKFhFTikgQ1BV
IFZlbmRvcjogQU1ELCBGYW1pbHkgMjUgKDB4MTkpLCBNb2RlbCAyNCAoMHgxOCksIFN0ZXBwaW5n
IDEgKHJhdyAwMGExMGY4MSkKKFhFTikgRW5hYmxpbmcgU3VwZXJ2aXNvciBTaGFkb3cgU3RhY2tz
CihYRU4pIEluaXRpYWwgRUZJIFJBTSBtYXA6CihYRU4pICBbMDAwMDAwMDAwMDAwMDAwMCwgMDAw
MDAwMDAwMDA5ZmZmZl0gKHVzYWJsZSkKKFhFTikgIFswMDAwMDAwMDAwMTAwMDAwLCAwMDAwMDAw
MDAzZmZmZmZmXSAodXNhYmxlKQooWEVOKSAgWzAwMDAwMDAwMDQwMDAwMDAsIDAwMDAwMDAwMDQw
NDVmZmZdIChBQ1BJIE5WUykKKFhFTikgIFswMDAwMDAwMDA0MDQ2MDAwLCAwMDAwMDAwMDA5YWZl
ZmZmXSAodXNhYmxlKQooWEVOKSAgWzAwMDAwMDAwMDlhZmYwMDAsIDAwMDAwMDAwMDlmZmZmZmZd
IChyZXNlcnZlZCkKKFhFTikgIFswMDAwMDAwMDBhMDAwMDAwLCAwMDAwMDAwMDBhZmZmZmZmXSAo
dXNhYmxlKQooWEVOKSAgWzAwMDAwMDAwMGIwMDAwMDAsIDAwMDAwMDAwMGIwMjBmZmZdIChyZXNl
cnZlZCkKKFhFTikgIFswMDAwMDAwMDBiMDIxMDAwLCAwMDAwMDAwMGEwNGU4ZmZmXSAodXNhYmxl
KQooWEVOKSAgWzAwMDAwMDAwYTA0ZTkwMDAsIDAwMDAwMDAwYTY0ZThmZmZdIChyZXNlcnZlZCkK
KFhFTikgIFswMDAwMDAwMGE2NGU5MDAwLCAwMDAwMDAwMGE3NDdlZmZmXSAoQUNQSSBkYXRhKQoo
WEVOKSAgWzAwMDAwMDAwYTc0N2YwMDAsIDAwMDAwMDAwYTk0N2VmZmZdIChBQ1BJIE5WUykKKFhF
TikgIFswMDAwMDAwMGE5NDdmMDAwLCAwMDAwMDAwMGFkZGZlZmZmXSAocmVzZXJ2ZWQpCihYRU4p
ICBbMDAwMDAwMDBhZGRmZjAwMCwgMDAwMDAwMDBhZmZmYWZmZl0gKHVzYWJsZSkKKFhFTikgIFsw
MDAwMDAwMGFmZmZiMDAwLCAwMDAwMDAwMGFmZmZmZmZmXSAocmVzZXJ2ZWQpCihYRU4pICBbMDAw
MDAwMDEwMDAwMDAwMCwgMDAwMDAwNDAzZGJiZmZmZl0gKHVzYWJsZSkKKFhFTikgIFswMDAwMDAw
MDAwMGEwMDAwLCAwMDAwMDAwMDAwMGZmZmZmXSAocmVzZXJ2ZWQpCihYRU4pICBbMDAwMDAwMDBi
MDAwMDAwMCwgMDAwMDAwMDBiZmZmZmZmZl0gKHJlc2VydmVkKQooWEVOKSAgWzAwMDAwMDAwZGYy
MDAwMDAsIDAwMDAwMDAwZGYyZmZmZmZdIChyZXNlcnZlZCkKKFhFTikgIFswMDAwMDAwMGUwMDAw
MDAwLCAwMDAwMDAwMGVmZmZmZmZmXSAocmVzZXJ2ZWQpCihYRU4pICBbMDAwMDAwMDBmZWEwMDAw
MCwgMDAwMDAwMDBmZWFmZmZmZl0gKHJlc2VydmVkKQooWEVOKSAgWzAwMDAwMDAwZmVjMDAwMDAs
IDAwMDAwMDAwZmVjMDBmZmZdIChyZXNlcnZlZCkKKFhFTikgIFswMDAwMDAwMGZlYzEwMDAwLCAw
MDAwMDAwMGZlYzEwZmZmXSAocmVzZXJ2ZWQpCihYRU4pICBbMDAwMDAwMDBmZWMzMDAwMCwgMDAw
MDAwMDBmZWMzMGZmZl0gKHJlc2VydmVkKQooWEVOKSAgWzAwMDAwMDAwZmVkMDAwMDAsIDAwMDAw
MDAwZmVkMDBmZmZdIChyZXNlcnZlZCkKKFhFTikgIFswMDAwMDAwMGZlZDQwMDAwLCAwMDAwMDAw
MGZlZDQ0ZmZmXSAocmVzZXJ2ZWQpCihYRU4pICBbMDAwMDAwMDBmZWQ4MDAwMCwgMDAwMDAwMDBm
ZWQ4ZmZmZl0gKHJlc2VydmVkKQooWEVOKSAgWzAwMDAwMDAwZmYwMDAwMDAsIDAwMDAwMDAwZmZm
ZmZmZmZdIChyZXNlcnZlZCkKKFhFTikgIFswMDAwMDA0MDNkYmMwMDAwLCAwMDAwMDA0MDNmZmZm
ZmZmXSAocmVzZXJ2ZWQpCihYRU4pIEVGSSBSQU0gbWFwOgooWEVOKSAgWzAwMDAwMDAwMDAwMDAw
MDAsIDAwMDAwMDAwMDAwOWZmZmZdICh1c2FibGUpCihYRU4pICBbMDAwMDAwMDAwMDBhMDAwMCwg
MDAwMDAwMDAwMDBmZmZmZl0gKHJlc2VydmVkKQooWEVOKSAgWzAwMDAwMDAwMDAxMDAwMDAsIDAw
MDAwMDAwMDNmZmZmZmZdICh1c2FibGUpCihYRU4pICBbMDAwMDAwMDAwNDAwMDAwMCwgMDAwMDAw
MDAwNDA0NWZmZl0gKEFDUEkgTlZTKQooWEVOKSAgWzAwMDAwMDAwMDQwNDYwMDAsIDAwMDAwMDAw
MDlhZmVmZmZdICh1c2FibGUpCihYRU4pICBbMDAwMDAwMDAwOWFmZjAwMCwgMDAwMDAwMDAwOWZm
ZmZmZl0gKHJlc2VydmVkKQooWEVOKSAgWzAwMDAwMDAwMGEwMDAwMDAsIDAwMDAwMDAwMGFmZmZm
ZmZdICh1c2FibGUpCihYRU4pICBbMDAwMDAwMDAwYjAwMDAwMCwgMDAwMDAwMDAwYjAyMGZmZl0g
KHJlc2VydmVkKQooWEVOKSAgWzAwMDAwMDAwMGIwMjEwMDAsIDAwMDAwMDAwYTA0ZThmZmZdICh1
c2FibGUpCihYRU4pICBbMDAwMDAwMDBhMDRlOTAwMCwgMDAwMDAwMDBhNjRlOGZmZl0gKHJlc2Vy
dmVkKQooWEVOKSAgWzAwMDAwMDAwYTY0ZTkwMDAsIDAwMDAwMDAwYTc0N2VmZmZdIChBQ1BJIGRh
dGEpCihYRU4pICBbMDAwMDAwMDBhNzQ3ZjAwMCwgMDAwMDAwMDBhOTQ3ZWZmZl0gKEFDUEkgTlZT
KQooWEVOKSAgWzAwMDAwMDAwYTk0N2YwMDAsIDAwMDAwMDAwYWRkZmVmZmZdIChyZXNlcnZlZCkK
KFhFTikgIFswMDAwMDAwMGFkZGZmMDAwLCAwMDAwMDAwMGFmZmZhZmZmXSAodXNhYmxlKQooWEVO
KSAgWzAwMDAwMDAwYWZmZmIwMDAsIDAwMDAwMDAwYmZmZmZmZmZdIChyZXNlcnZlZCkKKFhFTikg
IFswMDAwMDAwMGRmMjAwMDAwLCAwMDAwMDAwMGRmMmZmZmZmXSAocmVzZXJ2ZWQpCihYRU4pICBb
MDAwMDAwMDBlMDAwMDAwMCwgMDAwMDAwMDBlZmZmZmZmZl0gKHJlc2VydmVkKQooWEVOKSAgWzAw
MDAwMDAwZmVhMDAwMDAsIDAwMDAwMDAwZmVhZmZmZmZdIChyZXNlcnZlZCkKKFhFTikgIFswMDAw
MDAwMGZlYzAwMDAwLCAwMDAwMDAwMGZlYzAwZmZmXSAocmVzZXJ2ZWQpCihYRU4pICBbMDAwMDAw
MDBmZWMxMDAwMCwgMDAwMDAwMDBmZWMxMGZmZl0gKHJlc2VydmVkKQooWEVOKSAgWzAwMDAwMDAw
ZmVjMzAwMDAsIDAwMDAwMDAwZmVjMzBmZmZdIChyZXNlcnZlZCkKKFhFTikgIFswMDAwMDAwMGZl
ZDAwMDAwLCAwMDAwMDAwMGZlZDAwZmZmXSAocmVzZXJ2ZWQpCihYRU4pICBbMDAwMDAwMDBmZWQ0
MDAwMCwgMDAwMDAwMDBmZWQ0NGZmZl0gKHJlc2VydmVkKQooWEVOKSAgWzAwMDAwMDAwZmVkODAw
MDAsIDAwMDAwMDAwZmVkOGZmZmZdIChyZXNlcnZlZCkKKFhFTikgIFswMDAwMDAwMGZmMDAwMDAw
LCAwMDAwMDAwMGZmZmZmZmZmXSAocmVzZXJ2ZWQpCihYRU4pICBbMDAwMDAwMDEwMDAwMDAwMCwg
MDAwMDAwNDAzZGJiZmZmZl0gKHVzYWJsZSkKKFhFTikgIFswMDAwMDA0MDNkYmMwMDAwLCAwMDAw
MDA0MDNmZmZmZmZmXSAocmVzZXJ2ZWQpCihYRU4pIEFDUEk6IFJTRFAgQTk0NjMwMTQsIDAwMjQg
KHIyIEFNRCAgICkKKFhFTikgQUNQSTogWFNEVCBBOTQ2MjcyOCwgMDExQyAocjEgQU1EICAgICAg
QSBNIEkgICAgICAgICAxIEFNSSAgIDEwMDAwMTMpCihYRU4pIEFDUEk6IEZBQ1AgQTc0N0MwMDAs
IDAxMTQgKHI2IEFNRCAgICAgIEEgTSBJICAgICAgICAgMSBBTUkgICAgIDEwMDEzKQooWEVOKSBB
Q1BJOiBEU0RUIEE3NDZFMDAwLCBEMkY2IChyMiBBTUQgICAgICBBIE0gSSAgICAgICAgIDEgSU5U
TCAyMDIzMDMzMSkKKFhFTikgQUNQSTogRkFDUyBBOTQ1QTAwMCwgMDA0MAooWEVOKSBBQ1BJOiBT
U0RUIEE3NDdFMDAwLCAwOUNDIChyMiAgICBBTUQgQk9VTERFUkcgICAgICAgIDIgTVNGVCAgNDAw
MDAwMCkKKFhFTikgQUNQSTogU1NEVCBBNzQ3RDAwMCwgMDA2NyAocjIgICAgQU1EICAgQ1BNRFNN
ICAgICAgICAxIElOVEwgMjAyMzAzMzEpCihYRU4pIEFDUEk6IEZJRFQgQTc0NkQwMDAsIDAwOUMg
KHIxICAgIEFNRCAgICBBIE0gSSAgICAgICAgMSBBTUkgICAgIDEwMDEzKQooWEVOKSBBQ1BJOiBN
Q0ZHIEE3NDZDMDAwLCAwMDNDIChyMSAgICBBTUQgICAgQSBNIEkgICAgICAgIDEgTVNGVCAgICAx
MDAxMykKKFhFTikgQUNQSTogU1NEVCBBNzQ2QjAwMCwgMDVDNSAocjIgICAgQU1EICBDUFVTU0RU
ICAgICAgICAxIEFNSSAgICAgICAgIDEpCihYRU4pIEFDUEk6IEhQRVQgQTc0NkEwMDAsIDAwMzgg
KHIxICAgIEFNRCAgICBBIE0gSSAgICAgICAgMSBBTUkgICAgICAgICA1KQooWEVOKSBBQ1BJOiBT
U0RUIEE3NDY4MDAwLCAxQjUzIChyMiAgICBBTUQgICBDUE1SQVMgICAgICAgIDEgSU5UTCAyMDIz
MDMzMSkKKFhFTikgQUNQSTogQkVSVCBBNzQ2NzAwMCwgMDAzMCAocjEgQU1EICAgIEFNRCBCRVJU
ICAgICAgICAxIEFNRCAgICAgICAgIDEpCihYRU4pIEFDUEk6IEZQRFQgQTc0NjUwMDAsIDAwNDQg
KHIxIEFNRCAgICAgIEEgTSBJICAgMTA3MjAwOSBBTUkgICAxMDAwMDEzKQooWEVOKSBBQ1BJOiBT
U0RUIEE3NDYyMDAwLCAyNDQ4IChyMiAgICBBTUQgR1BQX1BNRV8gICAgICAgIDEgSU5UTCAyMDIz
MDMzMSkKKFhFTikgQUNQSTogU1NEVCBBNzQ1RjAwMCwgMjQ0OCAocjIgICAgQU1EIEdQUF9QTUVf
ICAgICAgICAxIElOVEwgMjAyMzAzMzEpCihYRU4pIEFDUEk6IFNTRFQgQTc0NUMwMDAsIDI0NDgg
KHIyICAgIEFNRCBHUFBfUE1FXyAgICAgICAgMSBJTlRMIDIwMjMwMzMxKQooWEVOKSBBQ1BJOiBT
U0RUIEE3NDU5MDAwLCAyNDQ4IChyMiAgICBBTUQgR1BQX1BNRV8gICAgICAgIDEgSU5UTCAyMDIz
MDMzMSkKKFhFTikgQUNQSTogVkZDVCBBNzQ0QTAwMCwgRTY4NCAocjEgQU1EICAgICAgQSBNIEkg
ICAgICAgICAxICBBTUQgMzE1MDRGNDcpCihYRU4pIEFDUEk6IFNTRFQgQTc0M0UwMDAsIEE0MEUg
KHIyICAgIEFNRCAgQU1EIENQVSAgICAgICAgMSBBTUQgICAgICAgICAxKQooWEVOKSBBQ1BJOiBI
TUFUIEE3NDNEMDAwLCAwMEE0IChyMiAgICBBTUQgQW1kVGFibGUgICAgICAgIDEgQU1EICAgICAg
ICAgMSkKKFhFTikgQUNQSTogV1BCVCBBNjg0RTAwMCwgMDAzNiAocjEgICAgQU1EICAgIEEgTSBJ
ICAgICAgICAxIE1TRlQgICAgMTAwMTMpCihYRU4pIEFDUEk6IElWUlMgQTY4NEQwMDAsIDAxRTgg
KHIyICBBTUQgICBBbWRUYWJsZSAgICAgICAgMSBBTUQgICAgICAgICAxKQooWEVOKSBBQ1BJOiBT
U0RUIEE2ODRDMDAwLCAwNkQ0IChyMiAgICBBTUQgIENQTVdMUkMgICAgICAgIDEgSU5UTCAyMDIz
MDMzMSkKKFhFTikgQUNQSTogU1NEVCBBNjg0MjAwMCwgOTgyRiAocjIgICAgQU1EICAgQ1BNQ01O
ICAgICAgICAxIElOVEwgMjAyMzAzMzEpCihYRU4pIEFDUEk6IEFQSUMgQTY4M0YwMDAsIDEwODgg
KHI2IEFNRCAgICAgIEEgTSBJICAgICAgICAgMSBBTUkgICAgIDEwMDEzKQooWEVOKSBBQ1BJOiBT
U0RUIEE2ODNDMDAwLCAyMzg3IChyMiAgICBBTUQgQU9EICAgICAgICAgICAgIDEgSU5UTCAyMDIz
MDMzMSkKKFhFTikgQUNQSTogU1NEVCBBNjgzQjAwMCwgMDUwMCAocjIgICAgQU1EIE1FTVRPT0ww
ICAgICAgICAyIElOVEwgMjAyMzAzMzEpCihYRU4pIEFDUEk6IFNTRFQgQTY4M0EwMDAsIDA5NkEg
KHIyICAgIEFNRCBDUE1NU09TQyAgICAgICAgMSBJTlRMIDIwMjMwMzMxKQooWEVOKSBBQ1BJOiBT
U0RUIEE2ODM5MDAwLCAwQjcyIChyMiAgICBBTUQgQ1BNQUNQVjYgICAgICAgIDEgSU5UTCAyMDIz
MDMzMSkKKFhFTikgQUNQSTogU1NEVCBBNjgzODAwMCwgMDQ0RSAocjIgICAgQU1EIEFtZFRhYmxl
ICAgICAgICAxIElOVEwgMjAyMzAzMzEpCihYRU4pIEFDUEk6IEVSU1QgQTY4MzcwMDAsIDAyMzAg
KHIxICBBTUlFUiBBTUkuRVJTVCAgICAgICAgMCBBTUkuICAgICAgICAwKQooWEVOKSBBQ1BJOiBI
RVNUIEE2ODA2MDAwLCAzMEExNCAocjEgQU1EICAgIEFNRCBIRVNUICAgICAgICAxIEFNRCAgICAg
ICAgIDEpCihYRU4pIEFDUEk6IFdTTVQgQTc0NjYwMDAsIDAwMjggKHIxIEFNRCAgICAgIEEgTSBJ
ICAgICAgICAgMSBBTUkgICAgIDEwMDEzKQooWEVOKSBBQ1BJOiBCR1JUIEE3NDQ5MDAwLCAwMDM4
IChyMSBBTUQgICAgICBBIE0gSSAgICAgICAgIDEgQU1JICAgICAxMDAxMykKKFhFTikgU3lzdGVt
IFJBTTogMjYxNjI4TUIgKDI2NzkwNzk1NmtCKQooWEVOKSBObyBOVU1BIGNvbmZpZ3VyYXRpb24g
Zm91bmQKKFhFTikgRmFraW5nIGEgbm9kZSBhdCAwMDAwMDAwMDAwMDAwMDAwLTAwMDAwMDQwM2Ri
YzAwMDAKKFhFTikgRG9tYWluIGhlYXAgaW5pdGlhbGlzZWQKKFhFTikgdmVzYWZiOiBmcmFtZWJ1
ZmZlciBhdCAweDAwMDAwNGQ4MDAwMDAwMDAsIG1hcHBlZCB0byAweGZmZmY4MmMwMDAyMDEwMDAs
IHVzaW5nIDE0NDAwaywgdG90YWwgMTQ0MDBrCihYRU4pIHZlc2FmYjogbW9kZSBpcyAyNTYweDE0
NDB4MzIsIGxpbmVsZW5ndGg9MTAyNDAsIGZvbnQgOHgxNgooWEVOKSB2ZXNhZmI6IFRydWVjb2xv
cjogc2l6ZT04Ojg6ODo4LCBzaGlmdD0yNDoxNjo4OjAKKFhFTikgU01CSU9TIDMuNiBwcmVzZW50
LgooWEVOKSB4MkFQSUMgbW9kZSBpcyBhbHJlYWR5IGVuYWJsZWQgYnkgQklPUy4KKFhFTikgVXNp
bmcgQVBJQyBkcml2ZXIgeDJhcGljX2NsdXN0ZXIKKFhFTikgQUNQSTogUE0tVGltZXIgSU8gUG9y
dDogMHg4MDggKDMyIGJpdHMpCihYRU4pIEFDUEk6IHY1IFNMRUVQIElORk86IGNvbnRyb2xbMDow
XSwgc3RhdHVzWzA6MF0KKFhFTikgQUNQSTogU0xFRVAgSU5GTzogcG0xeF9jbnRbMTo4MDQsMTow
XSwgcG0xeF9ldnRbMTo4MDAsMTowXQooWEVOKSBBQ1BJOiAzMi82NFggRkFDUyBhZGRyZXNzIG1p
c21hdGNoIGluIEZBRFQgLSBhOTQ1YTAwMC8wMDAwMDAwMDAwMDAwMDAwLCB1c2luZyAzMgooWEVO
KSBBQ1BJOiAgICAgICAgICAgICB3YWtldXBfdmVjW2E5NDVhMDBjXSwgdmVjX3NpemVbMjBdCihY
RU4pIEFDUEk6IExvY2FsIEFQSUMgYWRkcmVzcyAweGZlZTAwMDAwCihYRU4pIEFDUEk6IElPQVBJ
QyAoaWRbMHg4MF0gYWRkcmVzc1sweGZlYzAwMDAwXSBnc2lfYmFzZVswXSkKKFhFTikgSU9BUElD
WzBdOiBhcGljX2lkIDEyOCwgdmVyc2lvbiAzMywgYWRkcmVzcyAweGZlYzAwMDAwLCBHU0kgMC0y
MwooWEVOKSBBQ1BJOiBJT0FQSUMgKGlkWzB4ODFdIGFkZHJlc3NbMHhkZjE4MDAwMF0gZ3NpX2Jh
c2VbMTIwXSkKKFhFTikgSU9BUElDWzFdOiBhcGljX2lkIDEyOSwgdmVyc2lvbiAzMywgYWRkcmVz
cyAweGRmMTgwMDAwLCBHU0kgMTIwLTE1MQooWEVOKSBBQ1BJOiBJT0FQSUMgKGlkWzB4ODJdIGFk
ZHJlc3NbMHhkMzE4MDAwMF0gZ3NpX2Jhc2VbODhdKQooWEVOKSBJT0FQSUNbMl06IGFwaWNfaWQg
MTMwLCB2ZXJzaW9uIDMzLCBhZGRyZXNzIDB4ZDMxODAwMDAsIEdTSSA4OC0xMTkKKFhFTikgQUNQ
STogSU9BUElDIChpZFsweDgzXSBhZGRyZXNzWzB4ZjcxODAwMDBdIGdzaV9iYXNlWzI0XSkKKFhF
TikgSU9BUElDWzNdOiBhcGljX2lkIDEzMSwgdmVyc2lvbiAzMywgYWRkcmVzcyAweGY3MTgwMDAw
LCBHU0kgMjQtNTUKKFhFTikgQUNQSTogSU9BUElDIChpZFsweDg0XSBhZGRyZXNzWzB4YzkxODAw
MDBdIGdzaV9iYXNlWzU2XSkKKFhFTikgSU9BUElDWzRdOiBhcGljX2lkIDEzMiwgdmVyc2lvbiAz
MywgYWRkcmVzcyAweGM5MTgwMDAwLCBHU0kgNTYtODcKKFhFTikgQUNQSTogSU5UX1NSQ19PVlIg
KGJ1cyAwIGJ1c19pcnEgMCBnbG9iYWxfaXJxIDIgZGZsIGRmbCkKKFhFTikgQUNQSTogSU5UX1NS
Q19PVlIgKGJ1cyAwIGJ1c19pcnEgOSBnbG9iYWxfaXJxIDkgbG93IGxldmVsKQooWEVOKSBBQ1BJ
OiBJUlEwIHVzZWQgYnkgb3ZlcnJpZGUuCihYRU4pIEFDUEk6IElSUTIgdXNlZCBieSBvdmVycmlk
ZS4KKFhFTikgQUNQSTogSVJROSB1c2VkIGJ5IG92ZXJyaWRlLgooWEVOKSBBQ1BJOiBIUEVUIGlk
OiAweDEwMjI4MjAxIGJhc2U6IDB4ZmVkMDAwMDAKKFhFTikgUENJOiBNQ0ZHIGNvbmZpZ3VyYXRp
b24gMDogYmFzZSBlMDAwMDAwMCBzZWdtZW50IDAwMDAgYnVzZXMgMDAgLSBmZgooWEVOKSBQQ0k6
IE1DRkcgYXJlYSBhdCBlMDAwMDAwMCByZXNlcnZlZCBpbiBFODIwCihYRU4pIFBDSTogVXNpbmcg
TUNGRyBmb3Igc2VnbWVudCAwMDAwIGJ1cyAwMC1mZgooWEVOKSBYZW4gRVJTVCBzdXBwb3J0IGlz
IGluaXRpYWxpemVkLgooWEVOKSBIRVNUOiBUYWJsZSBwYXJzaW5nIGhhcyBiZWVuIGluaXRpYWxp
emVkCihYRU4pIEFDUEk6IEJHUlQ6IGludmFsaWRhdGluZyB2MSBpbWFnZSBhdCAweDliMGQwMDE4
CihYRU4pIFVzaW5nIEFDUEkgKE1BRFQpIGZvciBTTVAgY29uZmlndXJhdGlvbiBpbmZvcm1hdGlv
bgooWEVOKSBTTVA6IEFsbG93aW5nIDQ4IENQVXMgKDAgaG90cGx1ZyBDUFVzKQooWEVOKSBJUlEg
bGltaXRzOiAxNTIgR1NJLCA5ODMyIE1TSS9NU0ktWAooWEVOKSBBTUQtVmk6IElPTU1VIEV4dGVu
ZGVkIEZlYXR1cmVzOgooWEVOKSAtIFBlcmlwaGVyYWwgUGFnZSBTZXJ2aWNlIFJlcXVlc3QKKFhF
TikgLSB4MkFQSUMKKFhFTikgLSBOWCBiaXQKKFhFTikgLSBHdWVzdCBBUElDIFBoeXNpY2FsIFBy
b2Nlc3NvciBJbnRlcnJ1cHQKKFhFTikgLSBJbnZhbGlkYXRlIEFsbCBDb21tYW5kCihYRU4pIC0g
R3Vlc3QgQVBJQwooWEVOKSAtIFBlcmZvcm1hbmNlIENvdW50ZXJzCihYRU4pIC0gSG9zdCBBZGRy
ZXNzIFRyYW5zbGF0aW9uIFNpemU6IDB4MgooWEVOKSAtIEd1ZXN0IEFkZHJlc3MgVHJhbnNsYXRp
b24gU2l6ZTogMHgxCihYRU4pIC0gR3Vlc3QgQ1IzIFJvb3QgVGFibGUgTGV2ZWw6IDB4MQooWEVO
KSAtIE1heGltdW0gUEFTSUQ6IDB4ZgooWEVOKSAtIFNNSSBGaWx0ZXIgUmVnaXN0ZXI6IDB4MQoo
WEVOKSAtIFNNSSBGaWx0ZXIgUmVnaXN0ZXIgQ291bnQ6IDB4MgooWEVOKSAtIEd1ZXN0IFZpcnR1
YWwgQVBJQyBNb2RlczogMHgxCihYRU4pIC0gRHVhbCBQUFIgTG9nOiAweDIKKFhFTikgLSBEdWFs
IEV2ZW50IExvZzogMHgyCihYRU4pIC0gU2VjdXJlIEFUUwooWEVOKSAtIFVzZXIgLyBTdXBlcnZp
c29yIFBhZ2UgUHJvdGVjdGlvbgooWEVOKSAtIERldmljZSBUYWJsZSBTZWdtZW50YXRpb246IDAK
KFhFTikgLSBQUFIgTG9nIE92ZXJmbG93IEVhcmx5IFdhcm5pbmcKKFhFTikgLSBQUFIgQXV0b21h
dGljIFJlc3BvbnNlCihYRU4pIC0gTWVtb3J5IEFjY2VzcyBSb3V0aW5nIGFuZCBDb250cm9sOiAw
CihYRU4pIC0gQmxvY2sgU3RvcE1hcmsgTWVzc2FnZQooWEVOKSAtIFBlcmZvcm1hbmNlIE9wdGlt
aXphdGlvbgooWEVOKSAtIE1TSSBDYXBhYmlsaXR5IE1NSU8gQWNjZXNzCihYRU4pIC0gR3Vlc3Qg
SS9PIFByb3RlY3Rpb24KKFhFTikgLSBIb3N0IEFjY2VzcwooWEVOKSAtIEVuaGFuY2VkIFBQUiBI
YW5kbGluZwooWEVOKSAtIEF0dHJpYnV0ZSBGb3J3YXJkCihYRU4pIC0gSG9zdCBEaXJ0eQooWEVO
KSAtIFZpcnR1YWxpemVkIElPTU1VCihYRU4pIC0gVk1HdWFyZCBJL08gU3VwcG9ydAooWEVOKSAt
IFZNIFRhYmxlIFNpemU6IDB4MgooWEVOKSAtIEd1ZXN0IEFjY2VzcyBCaXQgVXBkYXRlIERpc2Fi
bGUKKFhFTikgQU1ELVZpOiBEaXNhYmxlZCBIQVAgbWVtb3J5IG1hcCBzaGFyaW5nIHdpdGggSU9N
TVUKKFhFTikgQU1ELVZpOiBJT01NVSAwIEVuYWJsZWQuCihYRU4pIEFNRC1WaTogSU9NTVUgMSBF
bmFibGVkLgooWEVOKSBBTUQtVmk6IElPTU1VIDIgRW5hYmxlZC4KKFhFTikgQU1ELVZpOiBJT01N
VSAzIEVuYWJsZWQuCihYRU4pIENQVTA6IDE1MDAgLi4uIDQyMDAgTUh6CihYRU4pIHhzdGF0ZTog
c2l6ZTogMHg5ODggYW5kIHN0YXRlczogMHgyZTcKKFhFTikgQ1BVMDogQU1EIEZhbTE5aCBtYWNo
aW5lIGNoZWNrIHJlcG9ydGluZyBlbmFibGVkCihYRU4pIFNwZWN1bGF0aXZlIG1pdGlnYXRpb24g
ZmFjaWxpdGllczoKKFhFTikgICBIYXJkd2FyZSBoaW50czogU1RJQlBfQUxXQVlTIElCUlNfRkFT
VCBJQlJTX1NBTUVfTU9ERSBCVENfTk8gSUJQQl9SRVQKKFhFTikgICBIYXJkd2FyZSBmZWF0dXJl
czogSUJQQiBJQlJTIFNUSUJQIFNTQkQgUFNGRCBMMURfRkxVU0gKKFhFTikgICBDb21waWxlZC1p
biBzdXBwb3J0OiBJTkRJUkVDVF9USFVOSyBTSEFET1dfUEFHSU5HCihYRU4pICAgWGVuIHNldHRp
bmdzOiBCVEktVGh1bmsgSk1QLCBTUEVDX0NUUkw6IElCUlMrIFNUSUJQKyBTU0JELSBQU0ZELSwg
T3RoZXI6IEJSQU5DSF9IQVJERU4KKFhFTikgICBTdXBwb3J0IGZvciBIVk0gVk1zOiBNU1JfU1BF
Q19DVFJMIE1TUl9WSVJUX1NQRUNfQ1RSTCBSU0IgSUJQQi1lbnRyeQooWEVOKSAgIFN1cHBvcnQg
Zm9yIFBWIFZNczogSUJQQi1lbnRyeQooWEVOKSAgIFhQVEkgKDY0LWJpdCBQViBvbmx5KTogRG9t
MCBkaXNhYmxlZCwgRG9tVSBkaXNhYmxlZCAod2l0aCBQQ0lEKQooWEVOKSAgIFBWIEwxVEYgc2hh
ZG93aW5nOiBEb20wIGRpc2FibGVkLCBEb21VIGRpc2FibGVkCihYRU4pIFVzaW5nIHNjaGVkdWxl
cjogU01QIENyZWRpdCBTY2hlZHVsZXIgcmV2MiAoY3JlZGl0MikKKFhFTikgSW5pdGlhbGl6aW5n
IENyZWRpdDIgc2NoZWR1bGVyCihYRU4pICBsb2FkX3ByZWNpc2lvbl9zaGlmdDogMTgKKFhFTikg
IGxvYWRfd2luZG93X3NoaWZ0OiAzMAooWEVOKSAgdW5kZXJsb2FkX2JhbGFuY2VfdG9sZXJhbmNl
OiAwCihYRU4pICBvdmVybG9hZF9iYWxhbmNlX3RvbGVyYW5jZTogLTMKKFhFTikgIHJ1bnF1ZXVl
cyBhcnJhbmdlbWVudDogc29ja2V0CihYRU4pICBjYXAgZW5mb3JjZW1lbnQgZ3JhbnVsYXJpdHk6
IDEwbXMKKFhFTikgbG9hZCB0cmFja2luZyB3aW5kb3cgbGVuZ3RoIDEwNzM3NDE4MjQgbnMKKFhF
TikgUGxhdGZvcm0gdGltZXIgaXMgMTQuMzE4TUh6IEhQRVQKKFhFTikgRGV0ZWN0ZWQgNDE5OS44
NzAgTUh6IHByb2Nlc3Nvci4KKFhFTikgRUZJIG1lbW9yeSBtYXA6CihYRU4pICAwMDAwMDAwMDAw
MDAwLTAwMDAwMDAwOWNmZmYgdHlwZT03IGF0dHI9MDAwMDAwMDAwMDAwMDAwZgooWEVOKSAgMDAw
MDAwMDA5ZDAwMC0wMDAwMDAwMDllZmZmIHR5cGU9MiBhdHRyPTAwMDAwMDAwMDAwMDAwMGYKKFhF
TikgIDAwMDAwMDAwOWYwMDAtMDAwMDAwMDA5ZmZmZiB0eXBlPTQgYXR0cj0wMDAwMDAwMDAwMDAw
MDBmCihYRU4pICAwMDAwMDAwMTAwMDAwLTAwMDAwMDNmZmZmZmYgdHlwZT03IGF0dHI9MDAwMDAw
MDAwMDAwMDAwZgooWEVOKSAgMDAwMDAwNDAwMDAwMC0wMDAwMDA0MDQ1ZmZmIHR5cGU9MTAgYXR0
cj0wMDAwMDAwMDAwMDAwMDBmCihYRU4pICAwMDAwMDA0MDQ2MDAwLTAwMDAwMDlhZmVmZmYgdHlw
ZT03IGF0dHI9MDAwMDAwMDAwMDAwMDAwZgooWEVOKSAgMDAwMDAwOWFmZjAwMC0wMDAwMDA5ZmZm
ZmZmIHR5cGU9MCBhdHRyPTAwMDAwMDAwMDAwMDAwMGYKKFhFTikgIDAwMDAwMGEwMDAwMDAtMDAw
MDAwYTJmZmZmZiB0eXBlPTQgYXR0cj0wMDAwMDAwMDAwMDAwMDBmCihYRU4pICAwMDAwMDBhMzAw
MDAwLTAwMDAwMGFmZmZmZmYgdHlwZT03IGF0dHI9MDAwMDAwMDAwMDAwMDAwZgooWEVOKSAgMDAw
MDAwYjAwMDAwMC0wMDAwMDBiMDIwZmZmIHR5cGU9MCBhdHRyPTAwMDAwMDAwMDAwMDAwMGYKKFhF
TikgIDAwMDAwMGIwMjEwMDAtMDAwMDA4ZGNlM2ZmZiB0eXBlPTcgYXR0cj0wMDAwMDAwMDAwMDAw
MDBmCihYRU4pICAwMDAwMDhkY2U0MDAwLTAwMDAwOTA5ZmZmZmYgdHlwZT0yIGF0dHI9MDAwMDAw
MDAwMDAwMDAwZgooWEVOKSAgMDAwMDA5MGEwMDAwMC0wMDAwMDkxOWZmZmZmIHR5cGU9MSBhdHRy
PTAwMDAwMDAwMDAwMDAwMGYKKFhFTikgIDAwMDAwOTFhMDAwMDAtMDAwMDA5MWViY2ZmZiB0eXBl
PTcgYXR0cj0wMDAwMDAwMDAwMDAwMDBmCihYRU4pICAwMDAwMDkxZWJkMDAwLTAwMDAwOTFmYmZm
ZmYgdHlwZT0xIGF0dHI9MDAwMDAwMDAwMDAwMDAwZgooWEVOKSAgMDAwMDA5MWZjMDAwMC0wMDAw
MDkyMGMyZmZmIHR5cGU9NyBhdHRyPTAwMDAwMDAwMDAwMDAwMGYKKFhFTikgIDAwMDAwOTIwYzMw
MDAtMDAwMDA5MjEwY2ZmZiB0eXBlPTQgYXR0cj0wMDAwMDAwMDAwMDAwMDBmCihYRU4pICAwMDAw
MDkyMTBkMDAwLTAwMDAwOTIxMGRmZmYgdHlwZT03IGF0dHI9MDAwMDAwMDAwMDAwMDAwZgooWEVO
KSAgMDAwMDA5MjEwZTAwMC0wMDAwMDkyMTQzZmZmIHR5cGU9NCBhdHRyPTAwMDAwMDAwMDAwMDAw
MGYKKFhFTikgIDAwMDAwOTIxNDQwMDAtMDAwMDA5MjE5YmZmZiB0eXBlPTcgYXR0cj0wMDAwMDAw
MDAwMDAwMDBmCihYRU4pICAwMDAwMDkyMTljMDAwLTAwMDAwOTIyNDRmZmYgdHlwZT00IGF0dHI9
MDAwMDAwMDAwMDAwMDAwZgooWEVOKSAgMDAwMDA5MjI0NTAwMC0wMDAwMDkyMjQ1ZmZmIHR5cGU9
NyBhdHRyPTAwMDAwMDAwMDAwMDAwMGYKKFhFTikgIDAwMDAwOTIyNDYwMDAtMDAwMDA5MjJmY2Zm
ZiB0eXBlPTQgYXR0cj0wMDAwMDAwMDAwMDAwMDBmCihYRU4pICAwMDAwMDkyMmZkMDAwLTAwMDAw
OTIyZmRmZmYgdHlwZT03IGF0dHI9MDAwMDAwMDAwMDAwMDAwZgooWEVOKSAgMDAwMDA5MjJmZTAw
MC0wMDAwMDkyMzAxZmZmIHR5cGU9NCBhdHRyPTAwMDAwMDAwMDAwMDAwMGYKKFhFTikgIDAwMDAw
OTIzMDIwMDAtMDAwMDA5MjMxYmZmZiB0eXBlPTcgYXR0cj0wMDAwMDAwMDAwMDAwMDBmCihYRU4p
ICAwMDAwMDkyMzFjMDAwLTAwMDAwOTIzMzJmZmYgdHlwZT00IGF0dHI9MDAwMDAwMDAwMDAwMDAw
ZgooWEVOKSAgMDAwMDA5MjMzMzAwMC0wMDAwMDkyM2MxZmZmIHR5cGU9NyBhdHRyPTAwMDAwMDAw
MDAwMDAwMGYKKFhFTikgIDAwMDAwOTIzYzIwMDAtMDAwMDA5MjNlZGZmZiB0eXBlPTQgYXR0cj0w
MDAwMDAwMDAwMDAwMDBmCihYRU4pICAwMDAwMDkyM2VlMDAwLTAwMDAwOTI0MDdmZmYgdHlwZT03
IGF0dHI9MDAwMDAwMDAwMDAwMDAwZgooWEVOKSAgMDAwMDA5MjQwODAwMC0wMDAwMDk1NjhhZmZm
IHR5cGU9NCBhdHRyPTAwMDAwMDAwMDAwMDAwMGYKKFhFTikgIDAwMDAwOTU2OGIwMDAtMDAwMDA5
NTc2NGZmZiB0eXBlPTcgYXR0cj0wMDAwMDAwMDAwMDAwMDBmCihYRU4pICAwMDAwMDk1NzY1MDAw
LTAwMDAwOTU4YTNmZmYgdHlwZT00IGF0dHI9MDAwMDAwMDAwMDAwMDAwZgooWEVOKSAgMDAwMDA5
NThhNDAwMC0wMDAwMDk1OGE0ZmZmIHR5cGU9MiBhdHRyPTAwMDAwMDAwMDAwMDAwMGYKKFhFTikg
IDAwMDAwOTU4YTUwMDAtMDAwMDA5NThlYmZmZiB0eXBlPTQgYXR0cj0wMDAwMDAwMDAwMDAwMDBm
CihYRU4pICAwMDAwMDk1OGVjMDAwLTAwMDAwOTU5MDRmZmYgdHlwZT03IGF0dHI9MDAwMDAwMDAw
MDAwMDAwZgooWEVOKSAgMDAwMDA5NTkwNTAwMC0wMDAwMDk1OTMzZmZmIHR5cGU9NCBhdHRyPTAw
MDAwMDAwMDAwMDAwMGYKKFhFTikgIDAwMDAwOTU5MzQwMDAtMDAwMDA5NTk0MGZmZiB0eXBlPTcg
YXR0cj0wMDAwMDAwMDAwMDAwMDBmCihYRU4pICAwMDAwMDk1OTQxMDAwLTAwMDAwOTU5NGRmZmYg
dHlwZT00IGF0dHI9MDAwMDAwMDAwMDAwMDAwZgooWEVOKSAgMDAwMDA5NTk0ZTAwMC0wMDAwMDk1
OTUxZmZmIHR5cGU9NyBhdHRyPTAwMDAwMDAwMDAwMDAwMGYKKFhFTikgIDAwMDAwOTU5NTIwMDAt
MDAwMDA5NTk4OGZmZiB0eXBlPTQgYXR0cj0wMDAwMDAwMDAwMDAwMDBmCihYRU4pICAwMDAwMDk1
OTg5MDAwLTAwMDAwOTU5ODlmZmYgdHlwZT03IGF0dHI9MDAwMDAwMDAwMDAwMDAwZgooWEVOKSAg
MDAwMDA5NTk4YTAwMC0wMDAwMDllNGU4ZmZmIHR5cGU9NCBhdHRyPTAwMDAwMDAwMDAwMDAwMGYK
KFhFTikgIDAwMDAwOWU0ZTkwMDAtMDAwMDA5ZmQ3NmZmZiB0eXBlPTcgYXR0cj0wMDAwMDAwMDAw
MDAwMDBmCihYRU4pICAwMDAwMDlmZDc3MDAwLTAwMDAwYTA0ZThmZmYgdHlwZT0zIGF0dHI9MDAw
MDAwMDAwMDAwMDAwZgooWEVOKSAgMDAwMDBhMDRlOTAwMC0wMDAwMGE2NGU4ZmZmIHR5cGU9MCBh
dHRyPTAwMDAwMDAwMDAwMDAwMGYKKFhFTikgIDAwMDAwYTY0ZTkwMDAtMDAwMDBhNzQ3ZWZmZiB0
eXBlPTkgYXR0cj0wMDAwMDAwMDAwMDAwMDBmCihYRU4pICAwMDAwMGE3NDdmMDAwLTAwMDAwYTk0
N2VmZmYgdHlwZT0xMCBhdHRyPTAwMDAwMDAwMDAwMDAwMGYKKFhFTikgIDAwMDAwYTk0N2YwMDAt
MDAwMDBhZGM3ZWZmZiB0eXBlPTYgYXR0cj04MDAwMDAwMDAwMDAwMDBmCihYRU4pICAwMDAwMGFk
YzdmMDAwLTAwMDAwYWRkZmVmZmYgdHlwZT01IGF0dHI9ODAwMDAwMDAwMDAwMDAwZgooWEVOKSAg
MDAwMDBhZGRmZjAwMC0wMDAwMGFkZmZmZmZmIHR5cGU9NCBhdHRyPTAwMDAwMDAwMDAwMDAwMGYK
KFhFTikgIDAwMDAwYWUwMDAwMDAtMDAwMDBhZTEzYWZmZiB0eXBlPTcgYXR0cj0wMDAwMDAwMDAw
MDAwMDBmCihYRU4pICAwMDAwMGFlMTNiMDAwLTAwMDAwYWUyM2FmZmYgdHlwZT00IGF0dHI9MDAw
MDAwMDAwMDAwMDAwZgooWEVOKSAgMDAwMDBhZTIzYjAwMC0wMDAwMGFlMjViZmZmIHR5cGU9MyBh
dHRyPTAwMDAwMDAwMDAwMDAwMGYKKFhFTikgIDAwMDAwYWUyNWMwMDAtMDAwMDBhZjc2NWZmZiB0
eXBlPTQgYXR0cj0wMDAwMDAwMDAwMDAwMDBmCihYRU4pICAwMDAwMGFmNzY2MDAwLTAwMDAwYWY3
ODJmZmYgdHlwZT0zIGF0dHI9MDAwMDAwMDAwMDAwMDAwZgooWEVOKSAgMDAwMDBhZjc4MzAwMC0w
MDAwMGFmNzliZmZmIHR5cGU9NCBhdHRyPTAwMDAwMDAwMDAwMDAwMGYKKFhFTikgIDAwMDAwYWY3
OWMwMDAtMDAwMDBhZjc5ZmZmZiB0eXBlPTMgYXR0cj0wMDAwMDAwMDAwMDAwMDBmCihYRU4pICAw
MDAwMGFmN2EwMDAwLTAwMDAwYWY3YjNmZmYgdHlwZT00IGF0dHI9MDAwMDAwMDAwMDAwMDAwZgoo
WEVOKSAgMDAwMDBhZjdiNDAwMC0wMDAwMGFmN2RjZmZmIHR5cGU9MyBhdHRyPTAwMDAwMDAwMDAw
MDAwMGYKKFhFTikgIDAwMDAwYWY3ZGQwMDAtMDAwMDBhZmZmM2ZmZiB0eXBlPTQgYXR0cj0wMDAw
MDAwMDAwMDAwMDBmCihYRU4pICAwMDAwMGFmZmY0MDAwLTAwMDAwYWZmZmFmZmYgdHlwZT0zIGF0
dHI9MDAwMDAwMDAwMDAwMDAwZgooWEVOKSAgMDAwMDBhZmZmYjAwMC0wMDAwMGFmZmZmZmZmIHR5
cGU9NiBhdHRyPTgwMDAwMDAwMDAwMDAwMGYKKFhFTikgIDAwMDAxMDAwMDAwMDAtMDAwNDAzZGJi
ZmZmZiB0eXBlPTcgYXR0cj0wMDAwMDAwMDAwMDAwMDBmCihYRU4pICAwMDAwMDAwMGEwMDAwLTAw
MDAwMDAwZmZmZmYgdHlwZT0wIGF0dHI9MDAwMDAwMDAwMDAwMDAwZgooWEVOKSAgMDAwMDBiMDAw
MDAwMC0wMDAwMGJmZmZmZmZmIHR5cGU9MCBhdHRyPTAwMDAwMDAwMDAwMDAwMGYKKFhFTikgIDAw
MDAwZGYyMDAwMDAtMDAwMDBkZjJmZmZmZiB0eXBlPTExIGF0dHI9ODAwMDAwMDAwMDAwMDAwMQoo
WEVOKSAgMDAwMDBlMDAwMDAwMC0wMDAwMGVmZmZmZmZmIHR5cGU9MTEgYXR0cj04MDAwMDAwMDAw
MDAxMDBkCihYRU4pICAwMDAwMGZlYTAwMDAwLTAwMDAwZmVhZmZmZmYgdHlwZT0xMSBhdHRyPTgw
MDAwMDAwMDAwMDAwMDEKKFhFTikgIDAwMDAwZmVjMDAwMDAtMDAwMDBmZWMwMGZmZiB0eXBlPTEx
IGF0dHI9ODAwMDAwMDAwMDAwMDAwMQooWEVOKSAgMDAwMDBmZWMxMDAwMC0wMDAwMGZlYzEwZmZm
IHR5cGU9MTEgYXR0cj04MDAwMDAwMDAwMDAwMDAxCihYRU4pICAwMDAwMGZlYzMwMDAwLTAwMDAw
ZmVjMzBmZmYgdHlwZT0xMSBhdHRyPTgwMDAwMDAwMDAwMDAwMDEKKFhFTikgIDAwMDAwZmVkMDAw
MDAtMDAwMDBmZWQwMGZmZiB0eXBlPTExIGF0dHI9ODAwMDAwMDAwMDAwMDAwMQooWEVOKSAgMDAw
MDBmZWQ0MDAwMC0wMDAwMGZlZDQ0ZmZmIHR5cGU9MTEgYXR0cj04MDAwMDAwMDAwMDAwMDAxCihY
RU4pICAwMDAwMGZlZDgwMDAwLTAwMDAwZmVkOGZmZmYgdHlwZT0xMSBhdHRyPTgwMDAwMDAwMDAw
MDAwMDEKKFhFTikgIDAwMDAwZmYwMDAwMDAtMDAwMDBmZmZmZmZmZiB0eXBlPTExIGF0dHI9ODAw
MDAwMDAwMDAwMDAwMQooWEVOKSAgMDAwNDAzZGJjMDAwMC0wMDA0MDNmZmZmZmZmIHR5cGU9MCBh
dHRyPTAwMDAwMDAwMDAwMDAwMGYKKFhFTikgYWx0IHRhYmxlIGZmZmY4MmQwNDA2OTNkOTggLT4g
ZmZmZjgyZDA0MDY5ZmI3OAooWEVOKSBJL08gdmlydHVhbGlzYXRpb24gZW5hYmxlZAooWEVOKSAg
LSBEb20wIG1vZGU6IFJlbGF4ZWQKKFhFTikgSW50ZXJydXB0IHJlbWFwcGluZyBlbmFibGVkCihY
RU4pIG5yX3NvY2tldHM6IDEKKFhFTikgRW5hYmxlZCBkaXJlY3RlZCBFT0kgd2l0aCBpb2FwaWNf
YWNrX29sZCBvbiEKKFhFTikgRW5hYmxpbmcgQVBJQyBtb2RlOiAgQ2x1c3RlcmVkLiAgVXNpbmcg
NSBJL08gQVBJQ3MKKFhFTikgRU5BQkxJTkcgSU8tQVBJQyBJUlFzCihYRU4pICAtPiBVc2luZyBv
bGQgQUNLIG1ldGhvZAooWEVOKSAuLlRJTUVSOiB2ZWN0b3I9MHhGMCBhcGljMT0wIHBpbjE9MiBh
cGljMj0tMSBwaW4yPS0xCihYRU4pIERlZmF1bHRpbmcgdG8gYWx0ZXJuYXRpdmUga2V5IGhhbmRs
aW5nOyBzZW5kICdBJyB0byBzd2l0Y2ggdG8gbm9ybWFsIG1vZGUuCihYRU4pIEFsbG9jYXRlZCBj
b25zb2xlIHJpbmcgb2YgNTEyIEtpQi4KKFhFTikgbXdhaXQtaWRsZTogZG9lcyBub3QgcnVuIG9u
IGZhbWlseSAyNSBtb2RlbCAyNAooWEVOKSBIVk06IEFTSURzIGVuYWJsZWQuCihYRU4pIFNWTTog
U3VwcG9ydGVkIGFkdmFuY2VkIGZlYXR1cmVzOgooWEVOKSAgLSBOZXN0ZWQgUGFnZSBUYWJsZXMg
KE5QVCkKKFhFTikgIC0gTGFzdCBCcmFuY2ggUmVjb3JkIChMQlIpIFZpcnR1YWxpc2F0aW9uCihY
RU4pICAtIE5leHQtUklQIFNhdmVkIG9uICNWTUVYSVQKKFhFTikgIC0gVk1DQiBDbGVhbiBCaXRz
CihYRU4pICAtIERlY29kZUFzc2lzdHMKKFhFTikgIC0gVmlydHVhbCBWTUxPQUQvVk1TQVZFCihY
RU4pICAtIFZpcnR1YWwgR0lGCihYRU4pICAtIFBhdXNlLUludGVyY2VwdCBGaWx0ZXIKKFhFTikg
IC0gUGF1c2UtSW50ZXJjZXB0IEZpbHRlciBUaHJlc2hvbGQKKFhFTikgIC0gVFNDIFJhdGUgTVNS
CihYRU4pICAtIE5QVCBTdXBlcnZpc29yIFNoYWRvdyBTdGFjawooWEVOKSAgLSBNU1JfU1BFQ19D
VFJMIHZpcnR1YWxpc2F0aW9uCihYRU4pIEhWTTogU1ZNIGVuYWJsZWQKKFhFTikgSFZNOiBIYXJk
d2FyZSBBc3Npc3RlZCBQYWdpbmcgKEhBUCkgZGV0ZWN0ZWQKKFhFTikgSFZNOiBIQVAgcGFnZSBz
aXplczogNGtCLCAyTUIsIDFHQgooWEVOKSBhbHQgdGFibGUgZmZmZjgyZDA0MDY5M2Q5OCAtPiBm
ZmZmODJkMDQwNjlmYjc4CihYRU4pIEJyb3VnaHQgdXAgNDggQ1BVcwooWEVOKSBTY2hlZHVsaW5n
IGdyYW51bGFyaXR5OiBjcHUsIDEgQ1BVIHBlciBzY2hlZC1yZXNvdXJjZQooWEVOKSBJbml0aWFs
aXppbmcgQ3JlZGl0MiBzY2hlZHVsZXIKKFhFTikgIGxvYWRfcHJlY2lzaW9uX3NoaWZ0OiAxOAoo
WEVOKSAgbG9hZF93aW5kb3dfc2hpZnQ6IDMwCihYRU4pICB1bmRlcmxvYWRfYmFsYW5jZV90b2xl
cmFuY2U6IDAKKFhFTikgIG92ZXJsb2FkX2JhbGFuY2VfdG9sZXJhbmNlOiAtMwooWEVOKSAgcnVu
cXVldWVzIGFycmFuZ2VtZW50OiBzb2NrZXQKKFhFTikgIGNhcCBlbmZvcmNlbWVudCBncmFudWxh
cml0eTogMTBtcwooWEVOKSBsb2FkIHRyYWNraW5nIHdpbmRvdyBsZW5ndGggMTA3Mzc0MTgyNCBu
cwooWEVOKSBBZGRpbmcgY3B1IDAgdG8gcnVucXVldWUgMAooWEVOKSAgRmlyc3QgY3B1IG9uIHJ1
bnF1ZXVlLCBhY3RpdmF0aW5nCihYRU4pIEFkZGluZyBjcHUgMSB0byBydW5xdWV1ZSAwCihYRU4p
IEFkZGluZyBjcHUgMiB0byBydW5xdWV1ZSAwCihYRU4pIEFkZGluZyBjcHUgMyB0byBydW5xdWV1
ZSAwCihYRU4pIEFkZGluZyBjcHUgNCB0byBydW5xdWV1ZSAwCihYRU4pIEFkZGluZyBjcHUgNSB0
byBydW5xdWV1ZSAwCihYRU4pIEFkZGluZyBjcHUgNiB0byBydW5xdWV1ZSAwCihYRU4pIEFkZGlu
ZyBjcHUgNyB0byBydW5xdWV1ZSAwCihYRU4pIEFkZGluZyBjcHUgOCB0byBydW5xdWV1ZSAwCihY
RU4pIEFkZGluZyBjcHUgOSB0byBydW5xdWV1ZSAwCihYRU4pIEFkZGluZyBjcHUgMTAgdG8gcnVu
cXVldWUgMAooWEVOKSBBZGRpbmcgY3B1IDExIHRvIHJ1bnF1ZXVlIDAKKFhFTikgQWRkaW5nIGNw
dSAxMiB0byBydW5xdWV1ZSAwCihYRU4pIEFkZGluZyBjcHUgMTMgdG8gcnVucXVldWUgMAooWEVO
KSBBZGRpbmcgY3B1IDE0IHRvIHJ1bnF1ZXVlIDAKKFhFTikgQWRkaW5nIGNwdSAxNSB0byBydW5x
dWV1ZSAwCihYRU4pIEFkZGluZyBjcHUgMTYgdG8gcnVucXVldWUgMQooWEVOKSAgRmlyc3QgY3B1
IG9uIHJ1bnF1ZXVlLCBhY3RpdmF0aW5nCihYRU4pIEFkZGluZyBjcHUgMTcgdG8gcnVucXVldWUg
MQooWEVOKSBBZGRpbmcgY3B1IDE4IHRvIHJ1bnF1ZXVlIDEKKFhFTikgQWRkaW5nIGNwdSAxOSB0
byBydW5xdWV1ZSAxCihYRU4pIEFkZGluZyBjcHUgMjAgdG8gcnVucXVldWUgMQooWEVOKSBBZGRp
bmcgY3B1IDIxIHRvIHJ1bnF1ZXVlIDEKKFhFTikgQWRkaW5nIGNwdSAyMiB0byBydW5xdWV1ZSAx
CihYRU4pIEFkZGluZyBjcHUgMjMgdG8gcnVucXVldWUgMQooWEVOKSBBZGRpbmcgY3B1IDI0IHRv
IHJ1bnF1ZXVlIDEKKFhFTikgQWRkaW5nIGNwdSAyNSB0byBydW5xdWV1ZSAxCihYRU4pIEFkZGlu
ZyBjcHUgMjYgdG8gcnVucXVldWUgMQooWEVOKSBBZGRpbmcgY3B1IDI3IHRvIHJ1bnF1ZXVlIDEK
KFhFTikgQWRkaW5nIGNwdSAyOCB0byBydW5xdWV1ZSAxCihYRU4pIEFkZGluZyBjcHUgMjkgdG8g
cnVucXVldWUgMQooWEVOKSBBZGRpbmcgY3B1IDMwIHRvIHJ1bnF1ZXVlIDEKKFhFTikgQWRkaW5n
IGNwdSAzMSB0byBydW5xdWV1ZSAxCihYRU4pIEFkZGluZyBjcHUgMzIgdG8gcnVucXVldWUgMgoo
WEVOKSAgRmlyc3QgY3B1IG9uIHJ1bnF1ZXVlLCBhY3RpdmF0aW5nCihYRU4pIEFkZGluZyBjcHUg
MzMgdG8gcnVucXVldWUgMgooWEVOKSBBZGRpbmcgY3B1IDM0IHRvIHJ1bnF1ZXVlIDIKKFhFTikg
QWRkaW5nIGNwdSAzNSB0byBydW5xdWV1ZSAyCihYRU4pIEFkZGluZyBjcHUgMzYgdG8gcnVucXVl
dWUgMgooWEVOKSBBZGRpbmcgY3B1IDM3IHRvIHJ1bnF1ZXVlIDIKKFhFTikgQWRkaW5nIGNwdSAz
OCB0byBydW5xdWV1ZSAyCihYRU4pIEFkZGluZyBjcHUgMzkgdG8gcnVucXVldWUgMgooWEVOKSBB
ZGRpbmcgY3B1IDQwIHRvIHJ1bnF1ZXVlIDIKKFhFTikgQWRkaW5nIGNwdSA0MSB0byBydW5xdWV1
ZSAyCihYRU4pIEFkZGluZyBjcHUgNDIgdG8gcnVucXVldWUgMgooWEVOKSBBZGRpbmcgY3B1IDQz
IHRvIHJ1bnF1ZXVlIDIKKFhFTikgQWRkaW5nIGNwdSA0NCB0byBydW5xdWV1ZSAyCihYRU4pIEFk
ZGluZyBjcHUgNDUgdG8gcnVucXVldWUgMgooWEVOKSBBZGRpbmcgY3B1IDQ2IHRvIHJ1bnF1ZXVl
IDIKKFhFTikgQWRkaW5nIGNwdSA0NyB0byBydW5xdWV1ZSAyCihYRU4pIG1jaGVja19wb2xsOiBN
YWNoaW5lIGNoZWNrIHBvbGxpbmcgdGltZXIgc3RhcnRlZC4KKFhFTikgTlggKEV4ZWN1dGUgRGlz
YWJsZSkgcHJvdGVjdGlvbiBhY3RpdmUKKFhFTikgRG9tMCBoYXMgbWF4aW11bSAxNDAwIFBJUlFz
CihYRU4pICoqKiBCdWlsZGluZyBhIFBWSCBEb20wICoqKgooWEVOKSBGYWlsZWQgdG8gbG9hZCBr
ZXJuZWw6IC0xCihYRU4pIFhlbiBkb20wIGtlcm5lbCBicm9rZW4gRUxGOiA8TlVMTD4KKFhFTikg
RmFpbGVkIHRvIGxvYWQgRG9tMCBrZXJuZWwKKFhFTikgCihYRU4pICoqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioKKFhFTikgUGFuaWMgb24gQ1BVIDA6CihYRU4pIENvdWxk
IG5vdCBjb25zdHJ1Y3QgZG9tYWluIDAKKFhFTikgKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKgooWEVOKSAKKFhFTikgUmVib290IGluIGZpdmUgc2Vjb25kcy4uLgoK
--0000000000003412b4060f3269fc
Content-Type: text/x-log; charset="US-ASCII"; name="xen-4.17_UEFI_linux6_pv.log"
Content-Disposition: attachment; filename="xen-4.17_UEFI_linux6_pv.log"
Content-Transfer-Encoding: base64
Content-ID: <f_lritsklm3>
X-Attachment-Id: f_lritsklm3

KFhFTikgWGVuIHZlcnNpb24gNC4xNy4zLXByZSAoRGViaWFuIDQuMTcuMis3Ni1nZTFmOWNiMTZl
Mi0xfmRlYjEydTEpIChwa2cteGVuLWRldmVsQGxpc3RzLmFsaW90aC5kZWJpYW4ub3JnKSAoeDg2
XzY0LWxpbnV4LWdudS1nY2MgKERlYmlhbiAxMi4yLjAtMTQpIDEyLjIuMCkgZGVidWc9biBTYXQg
RGVjICAyIDE2OjU4OjA4IFVUQyAyMDIzCihYRU4pIGJ1aWxkLWlkOiA1ZjBhZTkxZWI2YmQwOWNk
NjM2ZThiNzNjNmU2OWZlZQooWEVOKSBDb25zb2xlIG91dHB1dCBpcyBzeW5jaHJvbm91cy4KKFhF
TikgQm9vdGxvYWRlcjogRUZJCihYRU4pIENvbW1hbmQgbGluZTogZG9tMF9tZW09OEcsbWF4OjhH
IGxvZ2x2bD1hbGwgZTgyMC12ZXJib3NlPXRydWUgY29uc29sZV90b19yaW5nIHN5bmNfY29uc29s
ZSBndWVzdF9sb2dsdmw9YWxsIGNvbTE9MTE1MjAwLDhuMSBjb25zb2xlPWNvbTEsdmdhIGRvbTA9
cHYKKFhFTikgWGVuIGltYWdlIGxvYWQgYmFzZSBhZGRyZXNzOiAweDkwYTAwMDAwCihYRU4pIFZp
ZGVvIGluZm9ybWF0aW9uOgooWEVOKSAgVkdBIGlzIGdyYXBoaWNzIG1vZGUgMjU2MHgxNDQwLCAz
MiBicHAKKFhFTikgIFZCRS9EREMgbWV0aG9kczogbm9uZTsgRURJRCB0cmFuc2ZlciB0aW1lOiAw
IHNlY29uZHMKKFhFTikgRGlzYyBpbmZvcm1hdGlvbjoKKFhFTikgIEZvdW5kIDAgTUJSIHNpZ25h
dHVyZXMKKFhFTikgIEZvdW5kIDYgRUREIGluZm9ybWF0aW9uIHN0cnVjdHVyZXMKKFhFTikgQ1BV
IFZlbmRvcjogQU1ELCBGYW1pbHkgMjUgKDB4MTkpLCBNb2RlbCAyNCAoMHgxOCksIFN0ZXBwaW5n
IDEgKHJhdyAwMGExMGY4MSkKKFhFTikgRW5hYmxpbmcgU3VwZXJ2aXNvciBTaGFkb3cgU3RhY2tz
CihYRU4pIEluaXRpYWwgRUZJIFJBTSBtYXA6CihYRU4pICBbMDAwMDAwMDAwMDAwMDAwMCwgMDAw
MDAwMDAwMDA5ZmZmZl0gKHVzYWJsZSkKKFhFTikgIFswMDAwMDAwMDAwMTAwMDAwLCAwMDAwMDAw
MDAzZmZmZmZmXSAodXNhYmxlKQooWEVOKSAgWzAwMDAwMDAwMDQwMDAwMDAsIDAwMDAwMDAwMDQw
NDVmZmZdIChBQ1BJIE5WUykKKFhFTikgIFswMDAwMDAwMDA0MDQ2MDAwLCAwMDAwMDAwMDA5YWZl
ZmZmXSAodXNhYmxlKQooWEVOKSAgWzAwMDAwMDAwMDlhZmYwMDAsIDAwMDAwMDAwMDlmZmZmZmZd
IChyZXNlcnZlZCkKKFhFTikgIFswMDAwMDAwMDBhMDAwMDAwLCAwMDAwMDAwMDBhZmZmZmZmXSAo
dXNhYmxlKQooWEVOKSAgWzAwMDAwMDAwMGIwMDAwMDAsIDAwMDAwMDAwMGIwMjBmZmZdIChyZXNl
cnZlZCkKKFhFTikgIFswMDAwMDAwMDBiMDIxMDAwLCAwMDAwMDAwMGEwNGU4ZmZmXSAodXNhYmxl
KQooWEVOKSAgWzAwMDAwMDAwYTA0ZTkwMDAsIDAwMDAwMDAwYTY0ZThmZmZdIChyZXNlcnZlZCkK
KFhFTikgIFswMDAwMDAwMGE2NGU5MDAwLCAwMDAwMDAwMGE3NDdlZmZmXSAoQUNQSSBkYXRhKQoo
WEVOKSAgWzAwMDAwMDAwYTc0N2YwMDAsIDAwMDAwMDAwYTk0N2VmZmZdIChBQ1BJIE5WUykKKFhF
TikgIFswMDAwMDAwMGE5NDdmMDAwLCAwMDAwMDAwMGFkZGZlZmZmXSAocmVzZXJ2ZWQpCihYRU4p
ICBbMDAwMDAwMDBhZGRmZjAwMCwgMDAwMDAwMDBhZmZmYWZmZl0gKHVzYWJsZSkKKFhFTikgIFsw
MDAwMDAwMGFmZmZiMDAwLCAwMDAwMDAwMGFmZmZmZmZmXSAocmVzZXJ2ZWQpCihYRU4pICBbMDAw
MDAwMDEwMDAwMDAwMCwgMDAwMDAwNDAzZGJiZmZmZl0gKHVzYWJsZSkKKFhFTikgIFswMDAwMDAw
MDAwMGEwMDAwLCAwMDAwMDAwMDAwMGZmZmZmXSAocmVzZXJ2ZWQpCihYRU4pICBbMDAwMDAwMDBi
MDAwMDAwMCwgMDAwMDAwMDBiZmZmZmZmZl0gKHJlc2VydmVkKQooWEVOKSAgWzAwMDAwMDAwZGYy
MDAwMDAsIDAwMDAwMDAwZGYyZmZmZmZdIChyZXNlcnZlZCkKKFhFTikgIFswMDAwMDAwMGUwMDAw
MDAwLCAwMDAwMDAwMGVmZmZmZmZmXSAocmVzZXJ2ZWQpCihYRU4pICBbMDAwMDAwMDBmZWEwMDAw
MCwgMDAwMDAwMDBmZWFmZmZmZl0gKHJlc2VydmVkKQooWEVOKSAgWzAwMDAwMDAwZmVjMDAwMDAs
IDAwMDAwMDAwZmVjMDBmZmZdIChyZXNlcnZlZCkKKFhFTikgIFswMDAwMDAwMGZlYzEwMDAwLCAw
MDAwMDAwMGZlYzEwZmZmXSAocmVzZXJ2ZWQpCihYRU4pICBbMDAwMDAwMDBmZWMzMDAwMCwgMDAw
MDAwMDBmZWMzMGZmZl0gKHJlc2VydmVkKQooWEVOKSAgWzAwMDAwMDAwZmVkMDAwMDAsIDAwMDAw
MDAwZmVkMDBmZmZdIChyZXNlcnZlZCkKKFhFTikgIFswMDAwMDAwMGZlZDQwMDAwLCAwMDAwMDAw
MGZlZDQ0ZmZmXSAocmVzZXJ2ZWQpCihYRU4pICBbMDAwMDAwMDBmZWQ4MDAwMCwgMDAwMDAwMDBm
ZWQ4ZmZmZl0gKHJlc2VydmVkKQooWEVOKSAgWzAwMDAwMDAwZmYwMDAwMDAsIDAwMDAwMDAwZmZm
ZmZmZmZdIChyZXNlcnZlZCkKKFhFTikgIFswMDAwMDA0MDNkYmMwMDAwLCAwMDAwMDA0MDNmZmZm
ZmZmXSAocmVzZXJ2ZWQpCihYRU4pIEVGSSBSQU0gbWFwOgooWEVOKSAgWzAwMDAwMDAwMDAwMDAw
MDAsIDAwMDAwMDAwMDAwOWZmZmZdICh1c2FibGUpCihYRU4pICBbMDAwMDAwMDAwMDBhMDAwMCwg
MDAwMDAwMDAwMDBmZmZmZl0gKHJlc2VydmVkKQooWEVOKSAgWzAwMDAwMDAwMDAxMDAwMDAsIDAw
MDAwMDAwMDNmZmZmZmZdICh1c2FibGUpCihYRU4pICBbMDAwMDAwMDAwNDAwMDAwMCwgMDAwMDAw
MDAwNDA0NWZmZl0gKEFDUEkgTlZTKQooWEVOKSAgWzAwMDAwMDAwMDQwNDYwMDAsIDAwMDAwMDAw
MDlhZmVmZmZdICh1c2FibGUpCihYRU4pICBbMDAwMDAwMDAwOWFmZjAwMCwgMDAwMDAwMDAwOWZm
ZmZmZl0gKHJlc2VydmVkKQooWEVOKSAgWzAwMDAwMDAwMGEwMDAwMDAsIDAwMDAwMDAwMGFmZmZm
ZmZdICh1c2FibGUpCihYRU4pICBbMDAwMDAwMDAwYjAwMDAwMCwgMDAwMDAwMDAwYjAyMGZmZl0g
KHJlc2VydmVkKQooWEVOKSAgWzAwMDAwMDAwMGIwMjEwMDAsIDAwMDAwMDAwYTA0ZThmZmZdICh1
c2FibGUpCihYRU4pICBbMDAwMDAwMDBhMDRlOTAwMCwgMDAwMDAwMDBhNjRlOGZmZl0gKHJlc2Vy
dmVkKQooWEVOKSAgWzAwMDAwMDAwYTY0ZTkwMDAsIDAwMDAwMDAwYTc0N2VmZmZdIChBQ1BJIGRh
dGEpCihYRU4pICBbMDAwMDAwMDBhNzQ3ZjAwMCwgMDAwMDAwMDBhOTQ3ZWZmZl0gKEFDUEkgTlZT
KQooWEVOKSAgWzAwMDAwMDAwYTk0N2YwMDAsIDAwMDAwMDAwYWRkZmVmZmZdIChyZXNlcnZlZCkK
KFhFTikgIFswMDAwMDAwMGFkZGZmMDAwLCAwMDAwMDAwMGFmZmZhZmZmXSAodXNhYmxlKQooWEVO
KSAgWzAwMDAwMDAwYWZmZmIwMDAsIDAwMDAwMDAwYmZmZmZmZmZdIChyZXNlcnZlZCkKKFhFTikg
IFswMDAwMDAwMGRmMjAwMDAwLCAwMDAwMDAwMGRmMmZmZmZmXSAocmVzZXJ2ZWQpCihYRU4pICBb
MDAwMDAwMDBlMDAwMDAwMCwgMDAwMDAwMDBlZmZmZmZmZl0gKHJlc2VydmVkKQooWEVOKSAgWzAw
MDAwMDAwZmVhMDAwMDAsIDAwMDAwMDAwZmVhZmZmZmZdIChyZXNlcnZlZCkKKFhFTikgIFswMDAw
MDAwMGZlYzAwMDAwLCAwMDAwMDAwMGZlYzAwZmZmXSAocmVzZXJ2ZWQpCihYRU4pICBbMDAwMDAw
MDBmZWMxMDAwMCwgMDAwMDAwMDBmZWMxMGZmZl0gKHJlc2VydmVkKQooWEVOKSAgWzAwMDAwMDAw
ZmVjMzAwMDAsIDAwMDAwMDAwZmVjMzBmZmZdIChyZXNlcnZlZCkKKFhFTikgIFswMDAwMDAwMGZl
ZDAwMDAwLCAwMDAwMDAwMGZlZDAwZmZmXSAocmVzZXJ2ZWQpCihYRU4pICBbMDAwMDAwMDBmZWQ0
MDAwMCwgMDAwMDAwMDBmZWQ0NGZmZl0gKHJlc2VydmVkKQooWEVOKSAgWzAwMDAwMDAwZmVkODAw
MDAsIDAwMDAwMDAwZmVkOGZmZmZdIChyZXNlcnZlZCkKKFhFTikgIFswMDAwMDAwMGZmMDAwMDAw
LCAwMDAwMDAwMGZmZmZmZmZmXSAocmVzZXJ2ZWQpCihYRU4pICBbMDAwMDAwMDEwMDAwMDAwMCwg
MDAwMDAwNDAzZGJiZmZmZl0gKHVzYWJsZSkKKFhFTikgIFswMDAwMDA0MDNkYmMwMDAwLCAwMDAw
MDA0MDNmZmZmZmZmXSAocmVzZXJ2ZWQpCihYRU4pIEFDUEk6IFJTRFAgQTk0NjMwMTQsIDAwMjQg
KHIyIEFNRCAgICkKKFhFTikgQUNQSTogWFNEVCBBOTQ2MjcyOCwgMDExQyAocjEgQU1EICAgICAg
QSBNIEkgICAgICAgICAxIEFNSSAgIDEwMDAwMTMpCihYRU4pIEFDUEk6IEZBQ1AgQTc0N0MwMDAs
IDAxMTQgKHI2IEFNRCAgICAgIEEgTSBJICAgICAgICAgMSBBTUkgICAgIDEwMDEzKQooWEVOKSBB
Q1BJOiBEU0RUIEE3NDZFMDAwLCBEMkY2IChyMiBBTUQgICAgICBBIE0gSSAgICAgICAgIDEgSU5U
TCAyMDIzMDMzMSkKKFhFTikgQUNQSTogRkFDUyBBOTQ1QTAwMCwgMDA0MAooWEVOKSBBQ1BJOiBT
U0RUIEE3NDdFMDAwLCAwOUNDIChyMiAgICBBTUQgQk9VTERFUkcgICAgICAgIDIgTVNGVCAgNDAw
MDAwMCkKKFhFTikgQUNQSTogU1NEVCBBNzQ3RDAwMCwgMDA2NyAocjIgICAgQU1EICAgQ1BNRFNN
ICAgICAgICAxIElOVEwgMjAyMzAzMzEpCihYRU4pIEFDUEk6IEZJRFQgQTc0NkQwMDAsIDAwOUMg
KHIxICAgIEFNRCAgICBBIE0gSSAgICAgICAgMSBBTUkgICAgIDEwMDEzKQooWEVOKSBBQ1BJOiBN
Q0ZHIEE3NDZDMDAwLCAwMDNDIChyMSAgICBBTUQgICAgQSBNIEkgICAgICAgIDEgTVNGVCAgICAx
MDAxMykKKFhFTikgQUNQSTogU1NEVCBBNzQ2QjAwMCwgMDVDNSAocjIgICAgQU1EICBDUFVTU0RU
ICAgICAgICAxIEFNSSAgICAgICAgIDEpCihYRU4pIEFDUEk6IEhQRVQgQTc0NkEwMDAsIDAwMzgg
KHIxICAgIEFNRCAgICBBIE0gSSAgICAgICAgMSBBTUkgICAgICAgICA1KQooWEVOKSBBQ1BJOiBT
U0RUIEE3NDY4MDAwLCAxQjUzIChyMiAgICBBTUQgICBDUE1SQVMgICAgICAgIDEgSU5UTCAyMDIz
MDMzMSkKKFhFTikgQUNQSTogQkVSVCBBNzQ2NzAwMCwgMDAzMCAocjEgQU1EICAgIEFNRCBCRVJU
ICAgICAgICAxIEFNRCAgICAgICAgIDEpCihYRU4pIEFDUEk6IEZQRFQgQTc0NjUwMDAsIDAwNDQg
KHIxIEFNRCAgICAgIEEgTSBJICAgMTA3MjAwOSBBTUkgICAxMDAwMDEzKQooWEVOKSBBQ1BJOiBT
U0RUIEE3NDYyMDAwLCAyNDQ4IChyMiAgICBBTUQgR1BQX1BNRV8gICAgICAgIDEgSU5UTCAyMDIz
MDMzMSkKKFhFTikgQUNQSTogU1NEVCBBNzQ1RjAwMCwgMjQ0OCAocjIgICAgQU1EIEdQUF9QTUVf
ICAgICAgICAxIElOVEwgMjAyMzAzMzEpCihYRU4pIEFDUEk6IFNTRFQgQTc0NUMwMDAsIDI0NDgg
KHIyICAgIEFNRCBHUFBfUE1FXyAgICAgICAgMSBJTlRMIDIwMjMwMzMxKQooWEVOKSBBQ1BJOiBT
U0RUIEE3NDU5MDAwLCAyNDQ4IChyMiAgICBBTUQgR1BQX1BNRV8gICAgICAgIDEgSU5UTCAyMDIz
MDMzMSkKKFhFTikgQUNQSTogVkZDVCBBNzQ0QTAwMCwgRTY4NCAocjEgQU1EICAgICAgQSBNIEkg
ICAgICAgICAxICBBTUQgMzE1MDRGNDcpCihYRU4pIEFDUEk6IFNTRFQgQTc0M0UwMDAsIEE0MEUg
KHIyICAgIEFNRCAgQU1EIENQVSAgICAgICAgMSBBTUQgICAgICAgICAxKQooWEVOKSBBQ1BJOiBI
TUFUIEE3NDNEMDAwLCAwMEE0IChyMiAgICBBTUQgQW1kVGFibGUgICAgICAgIDEgQU1EICAgICAg
ICAgMSkKKFhFTikgQUNQSTogV1BCVCBBNjg0RTAwMCwgMDAzNiAocjEgICAgQU1EICAgIEEgTSBJ
ICAgICAgICAxIE1TRlQgICAgMTAwMTMpCihYRU4pIEFDUEk6IElWUlMgQTY4NEQwMDAsIDAxRTgg
KHIyICBBTUQgICBBbWRUYWJsZSAgICAgICAgMSBBTUQgICAgICAgICAxKQooWEVOKSBBQ1BJOiBT
U0RUIEE2ODRDMDAwLCAwNkQ0IChyMiAgICBBTUQgIENQTVdMUkMgICAgICAgIDEgSU5UTCAyMDIz
MDMzMSkKKFhFTikgQUNQSTogU1NEVCBBNjg0MjAwMCwgOTgyRiAocjIgICAgQU1EICAgQ1BNQ01O
ICAgICAgICAxIElOVEwgMjAyMzAzMzEpCihYRU4pIEFDUEk6IEFQSUMgQTY4M0YwMDAsIDEwODgg
KHI2IEFNRCAgICAgIEEgTSBJICAgICAgICAgMSBBTUkgICAgIDEwMDEzKQooWEVOKSBBQ1BJOiBT
U0RUIEE2ODNDMDAwLCAyMzg3IChyMiAgICBBTUQgQU9EICAgICAgICAgICAgIDEgSU5UTCAyMDIz
MDMzMSkKKFhFTikgQUNQSTogU1NEVCBBNjgzQjAwMCwgMDUwMCAocjIgICAgQU1EIE1FTVRPT0ww
ICAgICAgICAyIElOVEwgMjAyMzAzMzEpCihYRU4pIEFDUEk6IFNTRFQgQTY4M0EwMDAsIDA5NkEg
KHIyICAgIEFNRCBDUE1NU09TQyAgICAgICAgMSBJTlRMIDIwMjMwMzMxKQooWEVOKSBBQ1BJOiBT
U0RUIEE2ODM5MDAwLCAwQjcyIChyMiAgICBBTUQgQ1BNQUNQVjYgICAgICAgIDEgSU5UTCAyMDIz
MDMzMSkKKFhFTikgQUNQSTogU1NEVCBBNjgzODAwMCwgMDQ0RSAocjIgICAgQU1EIEFtZFRhYmxl
ICAgICAgICAxIElOVEwgMjAyMzAzMzEpCihYRU4pIEFDUEk6IEVSU1QgQTY4MzcwMDAsIDAyMzAg
KHIxICBBTUlFUiBBTUkuRVJTVCAgICAgICAgMCBBTUkuICAgICAgICAwKQooWEVOKSBBQ1BJOiBI
RVNUIEE2ODA2MDAwLCAzMEExNCAocjEgQU1EICAgIEFNRCBIRVNUICAgICAgICAxIEFNRCAgICAg
ICAgIDEpCihYRU4pIEFDUEk6IFdTTVQgQTc0NjYwMDAsIDAwMjggKHIxIEFNRCAgICAgIEEgTSBJ
ICAgICAgICAgMSBBTUkgICAgIDEwMDEzKQooWEVOKSBBQ1BJOiBCR1JUIEE3NDQ5MDAwLCAwMDM4
IChyMSBBTUQgICAgICBBIE0gSSAgICAgICAgIDEgQU1JICAgICAxMDAxMykKKFhFTikgU3lzdGVt
IFJBTTogMjYxNjI4TUIgKDI2NzkwNzk1NmtCKQooWEVOKSBObyBOVU1BIGNvbmZpZ3VyYXRpb24g
Zm91bmQKKFhFTikgRmFraW5nIGEgbm9kZSBhdCAwMDAwMDAwMDAwMDAwMDAwLTAwMDAwMDQwM2Ri
YzAwMDAKKFhFTikgRG9tYWluIGhlYXAgaW5pdGlhbGlzZWQKKFhFTikgdmVzYWZiOiBmcmFtZWJ1
ZmZlciBhdCAweDAwMDAwNGQ4MDAwMDAwMDAsIG1hcHBlZCB0byAweGZmZmY4MmMwMDAyMDEwMDAs
IHVzaW5nIDE0NDAwaywgdG90YWwgMTQ0MDBrCihYRU4pIHZlc2FmYjogbW9kZSBpcyAyNTYweDE0
NDB4MzIsIGxpbmVsZW5ndGg9MTAyNDAsIGZvbnQgOHgxNgooWEVOKSB2ZXNhZmI6IFRydWVjb2xv
cjogc2l6ZT04Ojg6ODo4LCBzaGlmdD0yNDoxNjo4OjAKKFhFTikgU01CSU9TIDMuNiBwcmVzZW50
LgooWEVOKSB4MkFQSUMgbW9kZSBpcyBhbHJlYWR5IGVuYWJsZWQgYnkgQklPUy4KKFhFTikgVXNp
bmcgQVBJQyBkcml2ZXIgeDJhcGljX2NsdXN0ZXIKKFhFTikgQUNQSTogUE0tVGltZXIgSU8gUG9y
dDogMHg4MDggKDMyIGJpdHMpCihYRU4pIEFDUEk6IHY1IFNMRUVQIElORk86IGNvbnRyb2xbMDow
XSwgc3RhdHVzWzA6MF0KKFhFTikgQUNQSTogU0xFRVAgSU5GTzogcG0xeF9jbnRbMTo4MDQsMTow
XSwgcG0xeF9ldnRbMTo4MDAsMTowXQooWEVOKSBBQ1BJOiAzMi82NFggRkFDUyBhZGRyZXNzIG1p
c21hdGNoIGluIEZBRFQgLSBhOTQ1YTAwMC8wMDAwMDAwMDAwMDAwMDAwLCB1c2luZyAzMgooWEVO
KSBBQ1BJOiAgICAgICAgICAgICB3YWtldXBfdmVjW2E5NDVhMDBjXSwgdmVjX3NpemVbMjBdCihY
RU4pIEFDUEk6IExvY2FsIEFQSUMgYWRkcmVzcyAweGZlZTAwMDAwCihYRU4pIEFDUEk6IElPQVBJ
QyAoaWRbMHg4MF0gYWRkcmVzc1sweGZlYzAwMDAwXSBnc2lfYmFzZVswXSkKKFhFTikgSU9BUElD
WzBdOiBhcGljX2lkIDEyOCwgdmVyc2lvbiAzMywgYWRkcmVzcyAweGZlYzAwMDAwLCBHU0kgMC0y
MwooWEVOKSBBQ1BJOiBJT0FQSUMgKGlkWzB4ODFdIGFkZHJlc3NbMHhkZjE4MDAwMF0gZ3NpX2Jh
c2VbMTIwXSkKKFhFTikgSU9BUElDWzFdOiBhcGljX2lkIDEyOSwgdmVyc2lvbiAzMywgYWRkcmVz
cyAweGRmMTgwMDAwLCBHU0kgMTIwLTE1MQooWEVOKSBBQ1BJOiBJT0FQSUMgKGlkWzB4ODJdIGFk
ZHJlc3NbMHhkMzE4MDAwMF0gZ3NpX2Jhc2VbODhdKQooWEVOKSBJT0FQSUNbMl06IGFwaWNfaWQg
MTMwLCB2ZXJzaW9uIDMzLCBhZGRyZXNzIDB4ZDMxODAwMDAsIEdTSSA4OC0xMTkKKFhFTikgQUNQ
STogSU9BUElDIChpZFsweDgzXSBhZGRyZXNzWzB4ZjcxODAwMDBdIGdzaV9iYXNlWzI0XSkKKFhF
TikgSU9BUElDWzNdOiBhcGljX2lkIDEzMSwgdmVyc2lvbiAzMywgYWRkcmVzcyAweGY3MTgwMDAw
LCBHU0kgMjQtNTUKKFhFTikgQUNQSTogSU9BUElDIChpZFsweDg0XSBhZGRyZXNzWzB4YzkxODAw
MDBdIGdzaV9iYXNlWzU2XSkKKFhFTikgSU9BUElDWzRdOiBhcGljX2lkIDEzMiwgdmVyc2lvbiAz
MywgYWRkcmVzcyAweGM5MTgwMDAwLCBHU0kgNTYtODcKKFhFTikgQUNQSTogSU5UX1NSQ19PVlIg
KGJ1cyAwIGJ1c19pcnEgMCBnbG9iYWxfaXJxIDIgZGZsIGRmbCkKKFhFTikgQUNQSTogSU5UX1NS
Q19PVlIgKGJ1cyAwIGJ1c19pcnEgOSBnbG9iYWxfaXJxIDkgbG93IGxldmVsKQooWEVOKSBBQ1BJ
OiBJUlEwIHVzZWQgYnkgb3ZlcnJpZGUuCihYRU4pIEFDUEk6IElSUTIgdXNlZCBieSBvdmVycmlk
ZS4KKFhFTikgQUNQSTogSVJROSB1c2VkIGJ5IG92ZXJyaWRlLgooWEVOKSBBQ1BJOiBIUEVUIGlk
OiAweDEwMjI4MjAxIGJhc2U6IDB4ZmVkMDAwMDAKKFhFTikgUENJOiBNQ0ZHIGNvbmZpZ3VyYXRp
b24gMDogYmFzZSBlMDAwMDAwMCBzZWdtZW50IDAwMDAgYnVzZXMgMDAgLSBmZgooWEVOKSBQQ0k6
IE1DRkcgYXJlYSBhdCBlMDAwMDAwMCByZXNlcnZlZCBpbiBFODIwCihYRU4pIFBDSTogVXNpbmcg
TUNGRyBmb3Igc2VnbWVudCAwMDAwIGJ1cyAwMC1mZgooWEVOKSBYZW4gRVJTVCBzdXBwb3J0IGlz
IGluaXRpYWxpemVkLgooWEVOKSBIRVNUOiBUYWJsZSBwYXJzaW5nIGhhcyBiZWVuIGluaXRpYWxp
emVkCihYRU4pIEFDUEk6IEJHUlQ6IGludmFsaWRhdGluZyB2MSBpbWFnZSBhdCAweDliMGQwMDE4
CihYRU4pIFVzaW5nIEFDUEkgKE1BRFQpIGZvciBTTVAgY29uZmlndXJhdGlvbiBpbmZvcm1hdGlv
bgooWEVOKSBTTVA6IEFsbG93aW5nIDQ4IENQVXMgKDAgaG90cGx1ZyBDUFVzKQooWEVOKSBJUlEg
bGltaXRzOiAxNTIgR1NJLCA5ODMyIE1TSS9NU0ktWAooWEVOKSBBTUQtVmk6IElPTU1VIEV4dGVu
ZGVkIEZlYXR1cmVzOgooWEVOKSAtIFBlcmlwaGVyYWwgUGFnZSBTZXJ2aWNlIFJlcXVlc3QKKFhF
TikgLSB4MkFQSUMKKFhFTikgLSBOWCBiaXQKKFhFTikgLSBHdWVzdCBBUElDIFBoeXNpY2FsIFBy
b2Nlc3NvciBJbnRlcnJ1cHQKKFhFTikgLSBJbnZhbGlkYXRlIEFsbCBDb21tYW5kCihYRU4pIC0g
R3Vlc3QgQVBJQwooWEVOKSAtIFBlcmZvcm1hbmNlIENvdW50ZXJzCihYRU4pIC0gSG9zdCBBZGRy
ZXNzIFRyYW5zbGF0aW9uIFNpemU6IDB4MgooWEVOKSAtIEd1ZXN0IEFkZHJlc3MgVHJhbnNsYXRp
b24gU2l6ZTogMHgxCihYRU4pIC0gR3Vlc3QgQ1IzIFJvb3QgVGFibGUgTGV2ZWw6IDB4MQooWEVO
KSAtIE1heGltdW0gUEFTSUQ6IDB4ZgooWEVOKSAtIFNNSSBGaWx0ZXIgUmVnaXN0ZXI6IDB4MQoo
WEVOKSAtIFNNSSBGaWx0ZXIgUmVnaXN0ZXIgQ291bnQ6IDB4MgooWEVOKSAtIEd1ZXN0IFZpcnR1
YWwgQVBJQyBNb2RlczogMHgxCihYRU4pIC0gRHVhbCBQUFIgTG9nOiAweDIKKFhFTikgLSBEdWFs
IEV2ZW50IExvZzogMHgyCihYRU4pIC0gU2VjdXJlIEFUUwooWEVOKSAtIFVzZXIgLyBTdXBlcnZp
c29yIFBhZ2UgUHJvdGVjdGlvbgooWEVOKSAtIERldmljZSBUYWJsZSBTZWdtZW50YXRpb246IDAK
KFhFTikgLSBQUFIgTG9nIE92ZXJmbG93IEVhcmx5IFdhcm5pbmcKKFhFTikgLSBQUFIgQXV0b21h
dGljIFJlc3BvbnNlCihYRU4pIC0gTWVtb3J5IEFjY2VzcyBSb3V0aW5nIGFuZCBDb250cm9sOiAw
CihYRU4pIC0gQmxvY2sgU3RvcE1hcmsgTWVzc2FnZQooWEVOKSAtIFBlcmZvcm1hbmNlIE9wdGlt
aXphdGlvbgooWEVOKSAtIE1TSSBDYXBhYmlsaXR5IE1NSU8gQWNjZXNzCihYRU4pIC0gR3Vlc3Qg
SS9PIFByb3RlY3Rpb24KKFhFTikgLSBIb3N0IEFjY2VzcwooWEVOKSAtIEVuaGFuY2VkIFBQUiBI
YW5kbGluZwooWEVOKSAtIEF0dHJpYnV0ZSBGb3J3YXJkCihYRU4pIC0gSG9zdCBEaXJ0eQooWEVO
KSAtIFZpcnR1YWxpemVkIElPTU1VCihYRU4pIC0gVk1HdWFyZCBJL08gU3VwcG9ydAooWEVOKSAt
IFZNIFRhYmxlIFNpemU6IDB4MgooWEVOKSAtIEd1ZXN0IEFjY2VzcyBCaXQgVXBkYXRlIERpc2Fi
bGUKKFhFTikgQU1ELVZpOiBEaXNhYmxlZCBIQVAgbWVtb3J5IG1hcCBzaGFyaW5nIHdpdGggSU9N
TVUKKFhFTikgQU1ELVZpOiBJT01NVSAwIEVuYWJsZWQuCihYRU4pIEFNRC1WaTogSU9NTVUgMSBF
bmFibGVkLgooWEVOKSBBTUQtVmk6IElPTU1VIDIgRW5hYmxlZC4KKFhFTikgQU1ELVZpOiBJT01N
VSAzIEVuYWJsZWQuCihYRU4pIENQVTA6IDE1MDAgLi4uIDQyMDAgTUh6CihYRU4pIHhzdGF0ZTog
c2l6ZTogMHg5ODggYW5kIHN0YXRlczogMHgyZTcKKFhFTikgQ1BVMDogQU1EIEZhbTE5aCBtYWNo
aW5lIGNoZWNrIHJlcG9ydGluZyBlbmFibGVkCihYRU4pIFNwZWN1bGF0aXZlIG1pdGlnYXRpb24g
ZmFjaWxpdGllczoKKFhFTikgICBIYXJkd2FyZSBoaW50czogU1RJQlBfQUxXQVlTIElCUlNfRkFT
VCBJQlJTX1NBTUVfTU9ERSBCVENfTk8gSUJQQl9SRVQKKFhFTikgICBIYXJkd2FyZSBmZWF0dXJl
czogSUJQQiBJQlJTIFNUSUJQIFNTQkQgUFNGRCBMMURfRkxVU0gKKFhFTikgICBDb21waWxlZC1p
biBzdXBwb3J0OiBJTkRJUkVDVF9USFVOSyBTSEFET1dfUEFHSU5HCihYRU4pICAgWGVuIHNldHRp
bmdzOiBCVEktVGh1bmsgSk1QLCBTUEVDX0NUUkw6IElCUlMrIFNUSUJQKyBTU0JELSBQU0ZELSwg
T3RoZXI6IEJSQU5DSF9IQVJERU4KKFhFTikgICBTdXBwb3J0IGZvciBIVk0gVk1zOiBNU1JfU1BF
Q19DVFJMIE1TUl9WSVJUX1NQRUNfQ1RSTCBSU0IgSUJQQi1lbnRyeQooWEVOKSAgIFN1cHBvcnQg
Zm9yIFBWIFZNczogSUJQQi1lbnRyeQooWEVOKSAgIFhQVEkgKDY0LWJpdCBQViBvbmx5KTogRG9t
MCBkaXNhYmxlZCwgRG9tVSBkaXNhYmxlZCAod2l0aCBQQ0lEKQooWEVOKSAgIFBWIEwxVEYgc2hh
ZG93aW5nOiBEb20wIGRpc2FibGVkLCBEb21VIGRpc2FibGVkCihYRU4pIFVzaW5nIHNjaGVkdWxl
cjogU01QIENyZWRpdCBTY2hlZHVsZXIgcmV2MiAoY3JlZGl0MikKKFhFTikgSW5pdGlhbGl6aW5n
IENyZWRpdDIgc2NoZWR1bGVyCihYRU4pICBsb2FkX3ByZWNpc2lvbl9zaGlmdDogMTgKKFhFTikg
IGxvYWRfd2luZG93X3NoaWZ0OiAzMAooWEVOKSAgdW5kZXJsb2FkX2JhbGFuY2VfdG9sZXJhbmNl
OiAwCihYRU4pICBvdmVybG9hZF9iYWxhbmNlX3RvbGVyYW5jZTogLTMKKFhFTikgIHJ1bnF1ZXVl
cyBhcnJhbmdlbWVudDogc29ja2V0CihYRU4pICBjYXAgZW5mb3JjZW1lbnQgZ3JhbnVsYXJpdHk6
IDEwbXMKKFhFTikgbG9hZCB0cmFja2luZyB3aW5kb3cgbGVuZ3RoIDEwNzM3NDE4MjQgbnMKKFhF
TikgUGxhdGZvcm0gdGltZXIgaXMgMTQuMzE4TUh6IEhQRVQKKFhFTikgRGV0ZWN0ZWQgNDE5OS44
ODMgTUh6IHByb2Nlc3Nvci4KKFhFTikgRUZJIG1lbW9yeSBtYXA6CihYRU4pICAwMDAwMDAwMDAw
MDAwLTAwMDAwMDAwOWNmZmYgdHlwZT03IGF0dHI9MDAwMDAwMDAwMDAwMDAwZgooWEVOKSAgMDAw
MDAwMDA5ZDAwMC0wMDAwMDAwMDllZmZmIHR5cGU9MiBhdHRyPTAwMDAwMDAwMDAwMDAwMGYKKFhF
TikgIDAwMDAwMDAwOWYwMDAtMDAwMDAwMDA5ZmZmZiB0eXBlPTQgYXR0cj0wMDAwMDAwMDAwMDAw
MDBmCihYRU4pICAwMDAwMDAwMTAwMDAwLTAwMDAwMDNmZmZmZmYgdHlwZT03IGF0dHI9MDAwMDAw
MDAwMDAwMDAwZgooWEVOKSAgMDAwMDAwNDAwMDAwMC0wMDAwMDA0MDQ1ZmZmIHR5cGU9MTAgYXR0
cj0wMDAwMDAwMDAwMDAwMDBmCihYRU4pICAwMDAwMDA0MDQ2MDAwLTAwMDAwMDlhZmVmZmYgdHlw
ZT03IGF0dHI9MDAwMDAwMDAwMDAwMDAwZgooWEVOKSAgMDAwMDAwOWFmZjAwMC0wMDAwMDA5ZmZm
ZmZmIHR5cGU9MCBhdHRyPTAwMDAwMDAwMDAwMDAwMGYKKFhFTikgIDAwMDAwMGEwMDAwMDAtMDAw
MDAwYTJmZmZmZiB0eXBlPTQgYXR0cj0wMDAwMDAwMDAwMDAwMDBmCihYRU4pICAwMDAwMDBhMzAw
MDAwLTAwMDAwMGFmZmZmZmYgdHlwZT03IGF0dHI9MDAwMDAwMDAwMDAwMDAwZgooWEVOKSAgMDAw
MDAwYjAwMDAwMC0wMDAwMDBiMDIwZmZmIHR5cGU9MCBhdHRyPTAwMDAwMDAwMDAwMDAwMGYKKFhF
TikgIDAwMDAwMGIwMjEwMDAtMDAwMDA4ZGNlM2ZmZiB0eXBlPTcgYXR0cj0wMDAwMDAwMDAwMDAw
MDBmCihYRU4pICAwMDAwMDhkY2U0MDAwLTAwMDAwOTA5ZmZmZmYgdHlwZT0yIGF0dHI9MDAwMDAw
MDAwMDAwMDAwZgooWEVOKSAgMDAwMDA5MGEwMDAwMC0wMDAwMDkxOWZmZmZmIHR5cGU9MSBhdHRy
PTAwMDAwMDAwMDAwMDAwMGYKKFhFTikgIDAwMDAwOTFhMDAwMDAtMDAwMDA5MWViY2ZmZiB0eXBl
PTcgYXR0cj0wMDAwMDAwMDAwMDAwMDBmCihYRU4pICAwMDAwMDkxZWJkMDAwLTAwMDAwOTFmYmZm
ZmYgdHlwZT0xIGF0dHI9MDAwMDAwMDAwMDAwMDAwZgooWEVOKSAgMDAwMDA5MWZjMDAwMC0wMDAw
MDkyMGMyZmZmIHR5cGU9NyBhdHRyPTAwMDAwMDAwMDAwMDAwMGYKKFhFTikgIDAwMDAwOTIwYzMw
MDAtMDAwMDA5MjEwY2ZmZiB0eXBlPTQgYXR0cj0wMDAwMDAwMDAwMDAwMDBmCihYRU4pICAwMDAw
MDkyMTBkMDAwLTAwMDAwOTIxMGRmZmYgdHlwZT03IGF0dHI9MDAwMDAwMDAwMDAwMDAwZgooWEVO
KSAgMDAwMDA5MjEwZTAwMC0wMDAwMDkyMTQzZmZmIHR5cGU9NCBhdHRyPTAwMDAwMDAwMDAwMDAw
MGYKKFhFTikgIDAwMDAwOTIxNDQwMDAtMDAwMDA5MjE5YmZmZiB0eXBlPTcgYXR0cj0wMDAwMDAw
MDAwMDAwMDBmCihYRU4pICAwMDAwMDkyMTljMDAwLTAwMDAwOTIyNDRmZmYgdHlwZT00IGF0dHI9
MDAwMDAwMDAwMDAwMDAwZgooWEVOKSAgMDAwMDA5MjI0NTAwMC0wMDAwMDkyMjQ1ZmZmIHR5cGU9
NyBhdHRyPTAwMDAwMDAwMDAwMDAwMGYKKFhFTikgIDAwMDAwOTIyNDYwMDAtMDAwMDA5MjMwNGZm
ZiB0eXBlPTQgYXR0cj0wMDAwMDAwMDAwMDAwMDBmCihYRU4pICAwMDAwMDkyMzA1MDAwLTAwMDAw
OTIzMDZmZmYgdHlwZT03IGF0dHI9MDAwMDAwMDAwMDAwMDAwZgooWEVOKSAgMDAwMDA5MjMwNzAw
MC0wMDAwMDkyMzA3ZmZmIHR5cGU9NCBhdHRyPTAwMDAwMDAwMDAwMDAwMGYKKFhFTikgIDAwMDAw
OTIzMDgwMDAtMDAwMDA5MjMxYmZmZiB0eXBlPTcgYXR0cj0wMDAwMDAwMDAwMDAwMDBmCihYRU4p
ICAwMDAwMDkyMzFjMDAwLTAwMDAwOTIzMmRmZmYgdHlwZT00IGF0dHI9MDAwMDAwMDAwMDAwMDAw
ZgooWEVOKSAgMDAwMDA5MjMyZTAwMC0wMDAwMDkyM2MyZmZmIHR5cGU9NyBhdHRyPTAwMDAwMDAw
MDAwMDAwMGYKKFhFTikgIDAwMDAwOTIzYzMwMDAtMDAwMDA5MjNlZGZmZiB0eXBlPTQgYXR0cj0w
MDAwMDAwMDAwMDAwMDBmCihYRU4pICAwMDAwMDkyM2VlMDAwLTAwMDAwOTI0MGJmZmYgdHlwZT03
IGF0dHI9MDAwMDAwMDAwMDAwMDAwZgooWEVOKSAgMDAwMDA5MjQwYzAwMC0wMDAwMDkyNDBjZmZm
IHR5cGU9MiBhdHRyPTAwMDAwMDAwMDAwMDAwMGYKKFhFTikgIDAwMDAwOTI0MGQwMDAtMDAwMDA5
NTY3M2ZmZiB0eXBlPTQgYXR0cj0wMDAwMDAwMDAwMDAwMDBmCihYRU4pICAwMDAwMDk1Njc0MDAw
LTAwMDAwOTU3NmRmZmYgdHlwZT03IGF0dHI9MDAwMDAwMDAwMDAwMDAwZgooWEVOKSAgMDAwMDA5
NTc2ZTAwMC0wMDAwMDk1OGQ0ZmZmIHR5cGU9NCBhdHRyPTAwMDAwMDAwMDAwMDAwMGYKKFhFTikg
IDAwMDAwOTU4ZDUwMDAtMDAwMDA5NThlZGZmZiB0eXBlPTcgYXR0cj0wMDAwMDAwMDAwMDAwMDBm
CihYRU4pICAwMDAwMDk1OGVlMDAwLTAwMDAwOTU5MWNmZmYgdHlwZT00IGF0dHI9MDAwMDAwMDAw
MDAwMDAwZgooWEVOKSAgMDAwMDA5NTkxZDAwMC0wMDAwMDk1OTI5ZmZmIHR5cGU9NyBhdHRyPTAw
MDAwMDAwMDAwMDAwMGYKKFhFTikgIDAwMDAwOTU5MmEwMDAtMDAwMDA5NTkzOWZmZiB0eXBlPTQg
YXR0cj0wMDAwMDAwMDAwMDAwMDBmCihYRU4pICAwMDAwMDk1OTNhMDAwLTAwMDAwOTU5M2RmZmYg
dHlwZT03IGF0dHI9MDAwMDAwMDAwMDAwMDAwZgooWEVOKSAgMDAwMDA5NTkzZTAwMC0wMDAwMDk2
NzRkZmZmIHR5cGU9NCBhdHRyPTAwMDAwMDAwMDAwMDAwMGYKKFhFTikgIDAwMDAwOTY3NGUwMDAt
MDAwMDA5Njc0ZmZmZiB0eXBlPTcgYXR0cj0wMDAwMDAwMDAwMDAwMDBmCihYRU4pICAwMDAwMDk2
NzUwMDAwLTAwMDAwOWU0ZThmZmYgdHlwZT00IGF0dHI9MDAwMDAwMDAwMDAwMDAwZgooWEVOKSAg
MDAwMDA5ZTRlOTAwMC0wMDAwMDlmZDc2ZmZmIHR5cGU9NyBhdHRyPTAwMDAwMDAwMDAwMDAwMGYK
KFhFTikgIDAwMDAwOWZkNzcwMDAtMDAwMDBhMDRlOGZmZiB0eXBlPTMgYXR0cj0wMDAwMDAwMDAw
MDAwMDBmCihYRU4pICAwMDAwMGEwNGU5MDAwLTAwMDAwYTY0ZThmZmYgdHlwZT0wIGF0dHI9MDAw
MDAwMDAwMDAwMDAwZgooWEVOKSAgMDAwMDBhNjRlOTAwMC0wMDAwMGE3NDdlZmZmIHR5cGU9OSBh
dHRyPTAwMDAwMDAwMDAwMDAwMGYKKFhFTikgIDAwMDAwYTc0N2YwMDAtMDAwMDBhOTQ3ZWZmZiB0
eXBlPTEwIGF0dHI9MDAwMDAwMDAwMDAwMDAwZgooWEVOKSAgMDAwMDBhOTQ3ZjAwMC0wMDAwMGFk
YzdlZmZmIHR5cGU9NiBhdHRyPTgwMDAwMDAwMDAwMDAwMGYKKFhFTikgIDAwMDAwYWRjN2YwMDAt
MDAwMDBhZGRmZWZmZiB0eXBlPTUgYXR0cj04MDAwMDAwMDAwMDAwMDBmCihYRU4pICAwMDAwMGFk
ZGZmMDAwLTAwMDAwYWRmZmZmZmYgdHlwZT00IGF0dHI9MDAwMDAwMDAwMDAwMDAwZgooWEVOKSAg
MDAwMDBhZTAwMDAwMC0wMDAwMGFlMTNhZmZmIHR5cGU9NyBhdHRyPTAwMDAwMDAwMDAwMDAwMGYK
KFhFTikgIDAwMDAwYWUxM2IwMDAtMDAwMDBhZTIzYWZmZiB0eXBlPTQgYXR0cj0wMDAwMDAwMDAw
MDAwMDBmCihYRU4pICAwMDAwMGFlMjNiMDAwLTAwMDAwYWUyNWJmZmYgdHlwZT0zIGF0dHI9MDAw
MDAwMDAwMDAwMDAwZgooWEVOKSAgMDAwMDBhZTI1YzAwMC0wMDAwMGFmNzY1ZmZmIHR5cGU9NCBh
dHRyPTAwMDAwMDAwMDAwMDAwMGYKKFhFTikgIDAwMDAwYWY3NjYwMDAtMDAwMDBhZjc4MmZmZiB0
eXBlPTMgYXR0cj0wMDAwMDAwMDAwMDAwMDBmCihYRU4pICAwMDAwMGFmNzgzMDAwLTAwMDAwYWY3
OWJmZmYgdHlwZT00IGF0dHI9MDAwMDAwMDAwMDAwMDAwZgooWEVOKSAgMDAwMDBhZjc5YzAwMC0w
MDAwMGFmNzlmZmZmIHR5cGU9MyBhdHRyPTAwMDAwMDAwMDAwMDAwMGYKKFhFTikgIDAwMDAwYWY3
YTAwMDAtMDAwMDBhZjdiM2ZmZiB0eXBlPTQgYXR0cj0wMDAwMDAwMDAwMDAwMDBmCihYRU4pICAw
MDAwMGFmN2I0MDAwLTAwMDAwYWY3ZGNmZmYgdHlwZT0zIGF0dHI9MDAwMDAwMDAwMDAwMDAwZgoo
WEVOKSAgMDAwMDBhZjdkZDAwMC0wMDAwMGFmZmYzZmZmIHR5cGU9NCBhdHRyPTAwMDAwMDAwMDAw
MDAwMGYKKFhFTikgIDAwMDAwYWZmZjQwMDAtMDAwMDBhZmZmYWZmZiB0eXBlPTMgYXR0cj0wMDAw
MDAwMDAwMDAwMDBmCihYRU4pICAwMDAwMGFmZmZiMDAwLTAwMDAwYWZmZmZmZmYgdHlwZT02IGF0
dHI9ODAwMDAwMDAwMDAwMDAwZgooWEVOKSAgMDAwMDEwMDAwMDAwMC0wMDA0MDNkYmJmZmZmIHR5
cGU9NyBhdHRyPTAwMDAwMDAwMDAwMDAwMGYKKFhFTikgIDAwMDAwMDAwYTAwMDAtMDAwMDAwMDBm
ZmZmZiB0eXBlPTAgYXR0cj0wMDAwMDAwMDAwMDAwMDBmCihYRU4pICAwMDAwMGIwMDAwMDAwLTAw
MDAwYmZmZmZmZmYgdHlwZT0wIGF0dHI9MDAwMDAwMDAwMDAwMDAwZgooWEVOKSAgMDAwMDBkZjIw
MDAwMC0wMDAwMGRmMmZmZmZmIHR5cGU9MTEgYXR0cj04MDAwMDAwMDAwMDAwMDAxCihYRU4pICAw
MDAwMGUwMDAwMDAwLTAwMDAwZWZmZmZmZmYgdHlwZT0xMSBhdHRyPTgwMDAwMDAwMDAwMDEwMGQK
KFhFTikgIDAwMDAwZmVhMDAwMDAtMDAwMDBmZWFmZmZmZiB0eXBlPTExIGF0dHI9ODAwMDAwMDAw
MDAwMDAwMQooWEVOKSAgMDAwMDBmZWMwMDAwMC0wMDAwMGZlYzAwZmZmIHR5cGU9MTEgYXR0cj04
MDAwMDAwMDAwMDAwMDAxCihYRU4pICAwMDAwMGZlYzEwMDAwLTAwMDAwZmVjMTBmZmYgdHlwZT0x
MSBhdHRyPTgwMDAwMDAwMDAwMDAwMDEKKFhFTikgIDAwMDAwZmVjMzAwMDAtMDAwMDBmZWMzMGZm
ZiB0eXBlPTExIGF0dHI9ODAwMDAwMDAwMDAwMDAwMQooWEVOKSAgMDAwMDBmZWQwMDAwMC0wMDAw
MGZlZDAwZmZmIHR5cGU9MTEgYXR0cj04MDAwMDAwMDAwMDAwMDAxCihYRU4pICAwMDAwMGZlZDQw
MDAwLTAwMDAwZmVkNDRmZmYgdHlwZT0xMSBhdHRyPTgwMDAwMDAwMDAwMDAwMDEKKFhFTikgIDAw
MDAwZmVkODAwMDAtMDAwMDBmZWQ4ZmZmZiB0eXBlPTExIGF0dHI9ODAwMDAwMDAwMDAwMDAwMQoo
WEVOKSAgMDAwMDBmZjAwMDAwMC0wMDAwMGZmZmZmZmZmIHR5cGU9MTEgYXR0cj04MDAwMDAwMDAw
MDAwMDAxCihYRU4pICAwMDA0MDNkYmMwMDAwLTAwMDQwM2ZmZmZmZmYgdHlwZT0wIGF0dHI9MDAw
MDAwMDAwMDAwMDAwZgooWEVOKSBhbHQgdGFibGUgZmZmZjgyZDA0MDY5MzFkMCAtPiBmZmZmODJk
MDQwNjlmMWZjCihYRU4pIEkvTyB2aXJ0dWFsaXNhdGlvbiBlbmFibGVkCihYRU4pICAtIERvbTAg
bW9kZTogUmVsYXhlZAooWEVOKSBJbnRlcnJ1cHQgcmVtYXBwaW5nIGVuYWJsZWQKKFhFTikgbnJf
c29ja2V0czogMQooWEVOKSBFbmFibGVkIGRpcmVjdGVkIEVPSSB3aXRoIGlvYXBpY19hY2tfb2xk
IG9uIQooWEVOKSBFbmFibGluZyBBUElDIG1vZGU6ICBDbHVzdGVyZWQuICBVc2luZyA1IEkvTyBB
UElDcwooWEVOKSBFTkFCTElORyBJTy1BUElDIElSUXMKKFhFTikgIC0+IFVzaW5nIG9sZCBBQ0sg
bWV0aG9kCihYRU4pIC4uVElNRVI6IHZlY3Rvcj0weEYwIGFwaWMxPTAgcGluMT0yIGFwaWMyPS0x
IHBpbjI9LTEKKFhFTikgRGVmYXVsdGluZyB0byBhbHRlcm5hdGl2ZSBrZXkgaGFuZGxpbmc7IHNl
bmQgJ0EnIHRvIHN3aXRjaCB0byBub3JtYWwgbW9kZS4KKFhFTikgQWxsb2NhdGVkIGNvbnNvbGUg
cmluZyBvZiA1MTIgS2lCLgooWEVOKSBtd2FpdC1pZGxlOiBkb2VzIG5vdCBydW4gb24gZmFtaWx5
IDI1IG1vZGVsIDI0CihYRU4pIEhWTTogQVNJRHMgZW5hYmxlZC4KKFhFTikgU1ZNOiBTdXBwb3J0
ZWQgYWR2YW5jZWQgZmVhdHVyZXM6CihYRU4pICAtIE5lc3RlZCBQYWdlIFRhYmxlcyAoTlBUKQoo
WEVOKSAgLSBMYXN0IEJyYW5jaCBSZWNvcmQgKExCUikgVmlydHVhbGlzYXRpb24KKFhFTikgIC0g
TmV4dC1SSVAgU2F2ZWQgb24gI1ZNRVhJVAooWEVOKSAgLSBWTUNCIENsZWFuIEJpdHMKKFhFTikg
IC0gRGVjb2RlQXNzaXN0cwooWEVOKSAgLSBWaXJ0dWFsIFZNTE9BRC9WTVNBVkUKKFhFTikgIC0g
VmlydHVhbCBHSUYKKFhFTikgIC0gUGF1c2UtSW50ZXJjZXB0IEZpbHRlcgooWEVOKSAgLSBQYXVz
ZS1JbnRlcmNlcHQgRmlsdGVyIFRocmVzaG9sZAooWEVOKSAgLSBUU0MgUmF0ZSBNU1IKKFhFTikg
IC0gTlBUIFN1cGVydmlzb3IgU2hhZG93IFN0YWNrCihYRU4pICAtIE1TUl9TUEVDX0NUUkwgdmly
dHVhbGlzYXRpb24KKFhFTikgSFZNOiBTVk0gZW5hYmxlZAooWEVOKSBIVk06IEhhcmR3YXJlIEFz
c2lzdGVkIFBhZ2luZyAoSEFQKSBkZXRlY3RlZAooWEVOKSBIVk06IEhBUCBwYWdlIHNpemVzOiA0
a0IsIDJNQiwgMUdCCihYRU4pIGFsdCB0YWJsZSBmZmZmODJkMDQwNjkzMWQwIC0+IGZmZmY4MmQw
NDA2OWYxZmMKKFhFTikgQnJvdWdodCB1cCA0OCBDUFVzCihYRU4pIFNjaGVkdWxpbmcgZ3JhbnVs
YXJpdHk6IGNwdSwgMSBDUFUgcGVyIHNjaGVkLXJlc291cmNlCihYRU4pIEluaXRpYWxpemluZyBD
cmVkaXQyIHNjaGVkdWxlcgooWEVOKSAgbG9hZF9wcmVjaXNpb25fc2hpZnQ6IDE4CihYRU4pICBs
b2FkX3dpbmRvd19zaGlmdDogMzAKKFhFTikgIHVuZGVybG9hZF9iYWxhbmNlX3RvbGVyYW5jZTog
MAooWEVOKSAgb3ZlcmxvYWRfYmFsYW5jZV90b2xlcmFuY2U6IC0zCihYRU4pICBydW5xdWV1ZXMg
YXJyYW5nZW1lbnQ6IHNvY2tldAooWEVOKSAgY2FwIGVuZm9yY2VtZW50IGdyYW51bGFyaXR5OiAx
MG1zCihYRU4pIGxvYWQgdHJhY2tpbmcgd2luZG93IGxlbmd0aCAxMDczNzQxODI0IG5zCihYRU4p
IEFkZGluZyBjcHUgMCB0byBydW5xdWV1ZSAwCihYRU4pICBGaXJzdCBjcHUgb24gcnVucXVldWUs
IGFjdGl2YXRpbmcKKFhFTikgQWRkaW5nIGNwdSAxIHRvIHJ1bnF1ZXVlIDAKKFhFTikgQWRkaW5n
IGNwdSAyIHRvIHJ1bnF1ZXVlIDAKKFhFTikgQWRkaW5nIGNwdSAzIHRvIHJ1bnF1ZXVlIDAKKFhF
TikgQWRkaW5nIGNwdSA0IHRvIHJ1bnF1ZXVlIDAKKFhFTikgQWRkaW5nIGNwdSA1IHRvIHJ1bnF1
ZXVlIDAKKFhFTikgQWRkaW5nIGNwdSA2IHRvIHJ1bnF1ZXVlIDAKKFhFTikgQWRkaW5nIGNwdSA3
IHRvIHJ1bnF1ZXVlIDAKKFhFTikgQWRkaW5nIGNwdSA4IHRvIHJ1bnF1ZXVlIDAKKFhFTikgQWRk
aW5nIGNwdSA5IHRvIHJ1bnF1ZXVlIDAKKFhFTikgQWRkaW5nIGNwdSAxMCB0byBydW5xdWV1ZSAw
CihYRU4pIEFkZGluZyBjcHUgMTEgdG8gcnVucXVldWUgMAooWEVOKSBBZGRpbmcgY3B1IDEyIHRv
IHJ1bnF1ZXVlIDAKKFhFTikgQWRkaW5nIGNwdSAxMyB0byBydW5xdWV1ZSAwCihYRU4pIEFkZGlu
ZyBjcHUgMTQgdG8gcnVucXVldWUgMAooWEVOKSBBZGRpbmcgY3B1IDE1IHRvIHJ1bnF1ZXVlIDAK
KFhFTikgQWRkaW5nIGNwdSAxNiB0byBydW5xdWV1ZSAxCihYRU4pICBGaXJzdCBjcHUgb24gcnVu
cXVldWUsIGFjdGl2YXRpbmcKKFhFTikgQWRkaW5nIGNwdSAxNyB0byBydW5xdWV1ZSAxCihYRU4p
IEFkZGluZyBjcHUgMTggdG8gcnVucXVldWUgMQooWEVOKSBBZGRpbmcgY3B1IDE5IHRvIHJ1bnF1
ZXVlIDEKKFhFTikgQWRkaW5nIGNwdSAyMCB0byBydW5xdWV1ZSAxCihYRU4pIEFkZGluZyBjcHUg
MjEgdG8gcnVucXVldWUgMQooWEVOKSBBZGRpbmcgY3B1IDIyIHRvIHJ1bnF1ZXVlIDEKKFhFTikg
QWRkaW5nIGNwdSAyMyB0byBydW5xdWV1ZSAxCihYRU4pIEFkZGluZyBjcHUgMjQgdG8gcnVucXVl
dWUgMQooWEVOKSBBZGRpbmcgY3B1IDI1IHRvIHJ1bnF1ZXVlIDEKKFhFTikgQWRkaW5nIGNwdSAy
NiB0byBydW5xdWV1ZSAxCihYRU4pIEFkZGluZyBjcHUgMjcgdG8gcnVucXVldWUgMQooWEVOKSBB
ZGRpbmcgY3B1IDI4IHRvIHJ1bnF1ZXVlIDEKKFhFTikgQWRkaW5nIGNwdSAyOSB0byBydW5xdWV1
ZSAxCihYRU4pIEFkZGluZyBjcHUgMzAgdG8gcnVucXVldWUgMQooWEVOKSBBZGRpbmcgY3B1IDMx
IHRvIHJ1bnF1ZXVlIDEKKFhFTikgQWRkaW5nIGNwdSAzMiB0byBydW5xdWV1ZSAyCihYRU4pICBG
aXJzdCBjcHUgb24gcnVucXVldWUsIGFjdGl2YXRpbmcKKFhFTikgQWRkaW5nIGNwdSAzMyB0byBy
dW5xdWV1ZSAyCihYRU4pIEFkZGluZyBjcHUgMzQgdG8gcnVucXVldWUgMgooWEVOKSBBZGRpbmcg
Y3B1IDM1IHRvIHJ1bnF1ZXVlIDIKKFhFTikgQWRkaW5nIGNwdSAzNiB0byBydW5xdWV1ZSAyCihY
RU4pIEFkZGluZyBjcHUgMzcgdG8gcnVucXVldWUgMgooWEVOKSBBZGRpbmcgY3B1IDM4IHRvIHJ1
bnF1ZXVlIDIKKFhFTikgQWRkaW5nIGNwdSAzOSB0byBydW5xdWV1ZSAyCihYRU4pIEFkZGluZyBj
cHUgNDAgdG8gcnVucXVldWUgMgooWEVOKSBBZGRpbmcgY3B1IDQxIHRvIHJ1bnF1ZXVlIDIKKFhF
TikgQWRkaW5nIGNwdSA0MiB0byBydW5xdWV1ZSAyCihYRU4pIEFkZGluZyBjcHUgNDMgdG8gcnVu
cXVldWUgMgooWEVOKSBBZGRpbmcgY3B1IDQ0IHRvIHJ1bnF1ZXVlIDIKKFhFTikgQWRkaW5nIGNw
dSA0NSB0byBydW5xdWV1ZSAyCihYRU4pIEFkZGluZyBjcHUgNDYgdG8gcnVucXVldWUgMgooWEVO
KSBBZGRpbmcgY3B1IDQ3IHRvIHJ1bnF1ZXVlIDIKKFhFTikgbWNoZWNrX3BvbGw6IE1hY2hpbmUg
Y2hlY2sgcG9sbGluZyB0aW1lciBzdGFydGVkLgooWEVOKSB4ZW5vcHJvZjogSW5pdGlhbGl6YXRp
b24gZmFpbGVkLiBBTUQgcHJvY2Vzc29yIGZhbWlseSAyNSBpcyBub3Qgc3VwcG9ydGVkCihYRU4p
IE5YIChFeGVjdXRlIERpc2FibGUpIHByb3RlY3Rpb24gYWN0aXZlCihYRU4pIERvbTAgaGFzIG1h
eGltdW0gMTQwMCBQSVJRcwooWEVOKSAqKiogQnVpbGRpbmcgYSBQViBEb20wICoqKgooWEVOKSAg
WGVuICBrZXJuZWw6IDY0LWJpdCwgbHNiCihYRU4pICBEb20wIGtlcm5lbDogNjQtYml0LCBQQUUs
IGxzYiwgcGFkZHIgMHgyMDAwMDAwIC0+IDB4NWEwMDAwMAooWEVOKSBQSFlTSUNBTCBNRU1PUlkg
QVJSQU5HRU1FTlQ6CihYRU4pICBEb20wIGFsbG9jLjogICAwMDAwMDAzZmM4MDAwMDAwLT4wMDAw
MDAzZmQwMDAwMDAwICgyMDU0ODI1IHBhZ2VzIHRvIGJlIGFsbG9jYXRlZCkKKFhFTikgIEluaXQu
IHJhbWRpc2s6IDAwMDAwMDQwM2I0YTkwMDAtPjAwMDAwMDQwM2Q5ZmYyMGUKKFhFTikgVklSVFVB
TCBNRU1PUlkgQVJSQU5HRU1FTlQ6CihYRU4pICBMb2FkZWQga2VybmVsOiBmZmZmZmZmZjgyMDAw
MDAwLT5mZmZmZmZmZjg1YTAwMDAwCihYRU4pICBQaHlzLU1hY2ggbWFwOiAwMDAwMDA4MDAwMDAw
MDAwLT4wMDAwMDA4MDAxMDAwMDAwCihYRU4pICBTdGFydCBpbmZvOiAgICBmZmZmZmZmZjg1YTAw
MDAwLT5mZmZmZmZmZjg1YTAwNGI4CihYRU4pICBQYWdlIHRhYmxlczogICBmZmZmZmZmZjg1YTAx
MDAwLT5mZmZmZmZmZjg1YTMyMDAwCihYRU4pICBCb290IHN0YWNrOiAgICBmZmZmZmZmZjg1YTMy
MDAwLT5mZmZmZmZmZjg1YTMzMDAwCihYRU4pICBUT1RBTDogICAgICAgICBmZmZmZmZmZjgwMDAw
MDAwLT5mZmZmZmZmZjg1YzAwMDAwCihYRU4pICBFTlRSWSBBRERSRVNTOiBmZmZmZmZmZjg0MDZl
MWMwCihYRU4pIERvbTAgaGFzIG1heGltdW0gNDggVkNQVXMKKFhFTikgSW5pdGlhbCBsb3cgbWVt
b3J5IHZpcnEgdGhyZXNob2xkIHNldCBhdCAweDQwMDAgcGFnZXMuCihYRU4pIFNjcnViYmluZyBG
cmVlIFJBTSBpbiBiYWNrZ3JvdW5kCihYRU4pIFN0ZC4gTG9nbGV2ZWw6IEFsbAooWEVOKSBHdWVz
dCBMb2dsZXZlbDogQWxsCihYRU4pICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKgooWEVOKSBXQVJOSU5HOiBDT05TT0xFIE9VVFBVVCBJUyBTWU5DSFJP
Tk9VUwooWEVOKSBUaGlzIG9wdGlvbiBpcyBpbnRlbmRlZCB0byBhaWQgZGVidWdnaW5nIG9mIFhl
biBieSBlbnN1cmluZwooWEVOKSB0aGF0IGFsbCBvdXRwdXQgaXMgc3luY2hyb25vdXNseSBkZWxp
dmVyZWQgb24gdGhlIHNlcmlhbCBsaW5lLgooWEVOKSBIb3dldmVyIGl0IGNhbiBpbnRyb2R1Y2Ug
U0lHTklGSUNBTlQgbGF0ZW5jaWVzIGFuZCBhZmZlY3QKKFhFTikgdGltZWtlZXBpbmcuIEl0IGlz
IE5PVCByZWNvbW1lbmRlZCBmb3IgcHJvZHVjdGlvbiB1c2UhCihYRU4pICoqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgooWEVOKSAzLi4uIDIuLi4gMS4u
LiAKKFhFTikgWGVuIGlzIHJlbGlucXVpc2hpbmcgVkdBIGNvbnNvbGUuCihYRU4pICoqKiBTZXJp
YWwgaW5wdXQgdG8gRE9NMCAodHlwZSAnQ1RSTC1hJyB0aHJlZSB0aW1lcyB0byBzd2l0Y2ggaW5w
dXQpCihYRU4pIEZyZWVkIDIwNDhrQiBpbml0IG1lbW9yeQptYXBwaW5nIGtlcm5lbCBpbnRvIHBo
eXNpY2FsIG1lbW9yeQphYm91dCB0byBnZXQgc3RhcnRlZC4uLgpYZW4gaHlwZXJ2aXNvciBhbGxv
Y2F0ZWQga2VybmVsIG1lbW9yeSBjb25mbGljdHMgd2l0aCBFODIwIG1hcAooWEVOKSBIYXJkd2Fy
ZSBEb20wIGhhbHRlZDogaGFsdGluZyBtYWNoaW5lCg==
--0000000000003412b4060f3269fc
Content-Type: text/x-log; charset="US-ASCII"; name="xen-4.17_grub_linuxoffset_pv.log"
Content-Disposition: attachment; filename="xen-4.17_grub_linuxoffset_pv.log"
Content-Transfer-Encoding: base64
Content-ID: <f_lritsklh1>
X-Attachment-Id: f_lritsklh1

KFhFTikgWGVuIHZlcnNpb24gNC4xNy4zLXByZSAoRGViaWFuIDQuMTcuMis3Ni1nZTFmOWNiMTZl
Mi0xfmRlYjEydTEpIChwa2cteGVuLWRldmVsQGxpc3RzLmFsaW90aC5kZWJpYW4ub3JnKSAoeDg2
XzY0LWxpbnV4LWdudS1nY2MgKERlYmlhbiAxMi4yLjAtMTQpIDEyLjIuMCkgZGVidWc9biBTYXQg
RGVjICAyIDE2OjU4OjA4IFVUQyAyMDIzCihYRU4pIGJ1aWxkLWlkOiAxOTMyOWNiN2VlZjZjNTFi
YjIxMDQzOTU3OWE3NWMzN2Q0MWJhZTY2CihYRU4pIENvbnNvbGUgb3V0cHV0IGlzIHN5bmNocm9u
b3VzLgooWEVOKSBCb290bG9hZGVyOiBHUlVCIDIuMDYtMTMrZGViMTJ1MQooWEVOKSBDb21tYW5k
IGxpbmU6IHBsYWNlaG9sZGVyIGRvbTBfbWVtPThHLG1heDo4RyBsb2dsdmw9YWxsIGU4MjAtdmVy
Ym9zZT10cnVlIGNvbnNvbGVfdG9fcmluZyBzeW5jX2NvbnNvbGUgZ3Vlc3RfbG9nbHZsPWFsbCBj
b20xPTExNTIwMCw4bjEgY29uc29sZT1jb20xLHZnYSBuby1yZWFsLW1vZGUgZWRkPW9mZgooWEVO
KSBYZW4gaW1hZ2UgbG9hZCBiYXNlIGFkZHJlc3M6IDB4OWY2MDAwMDAKKFhFTikgVmlkZW8gaW5m
b3JtYXRpb246CihYRU4pICBWR0EgaXMgZ3JhcGhpY3MgbW9kZSAyNTYweDE0NDAsIDMyIGJwcAoo
WEVOKSAgVkJFL0REQyBtZXRob2RzOiBub25lOyBFRElEIHRyYW5zZmVyIHRpbWU6IDAgc2Vjb25k
cwooWEVOKSBEaXNjIGluZm9ybWF0aW9uOgooWEVOKSAgRm91bmQgMCBNQlIgc2lnbmF0dXJlcwoo
WEVOKSAgRm91bmQgNiBFREQgaW5mb3JtYXRpb24gc3RydWN0dXJlcwooWEVOKSBDUFUgVmVuZG9y
OiBBTUQsIEZhbWlseSAyNSAoMHgxOSksIE1vZGVsIDI0ICgweDE4KSwgU3RlcHBpbmcgMSAocmF3
IDAwYTEwZjgxKQooWEVOKSBFbmFibGluZyBTdXBlcnZpc29yIFNoYWRvdyBTdGFja3MKKFhFTikg
SW5pdGlhbCBFRkkgUkFNIG1hcDoKKFhFTikgIFswMDAwMDAwMDAwMDAwMDAwLCAwMDAwMDAwMDAw
MDlmZmZmXSAodXNhYmxlKQooWEVOKSAgWzAwMDAwMDAwMDAxMDAwMDAsIDAwMDAwMDAwMDNmZmZm
ZmZdICh1c2FibGUpCihYRU4pICBbMDAwMDAwMDAwNDAwMDAwMCwgMDAwMDAwMDAwNDA0NWZmZl0g
KEFDUEkgTlZTKQooWEVOKSAgWzAwMDAwMDAwMDQwNDYwMDAsIDAwMDAwMDAwMDlhZmVmZmZdICh1
c2FibGUpCihYRU4pICBbMDAwMDAwMDAwOWFmZjAwMCwgMDAwMDAwMDAwOWZmZmZmZl0gKHJlc2Vy
dmVkKQooWEVOKSAgWzAwMDAwMDAwMGEwMDAwMDAsIDAwMDAwMDAwMGFmZmZmZmZdICh1c2FibGUp
CihYRU4pICBbMDAwMDAwMDAwYjAwMDAwMCwgMDAwMDAwMDAwYjAyMGZmZl0gKHJlc2VydmVkKQoo
WEVOKSAgWzAwMDAwMDAwMGIwMjEwMDAsIDAwMDAwMDAwYTA0ZThmZmZdICh1c2FibGUpCihYRU4p
ICBbMDAwMDAwMDBhMDRlOTAwMCwgMDAwMDAwMDBhNjRlOGZmZl0gKHJlc2VydmVkKQooWEVOKSAg
WzAwMDAwMDAwYTY0ZTkwMDAsIDAwMDAwMDAwYTc0N2VmZmZdIChBQ1BJIGRhdGEpCihYRU4pICBb
MDAwMDAwMDBhNzQ3ZjAwMCwgMDAwMDAwMDBhOTQ3ZWZmZl0gKEFDUEkgTlZTKQooWEVOKSAgWzAw
MDAwMDAwYTk0N2YwMDAsIDAwMDAwMDAwYWRkZmVmZmZdIChyZXNlcnZlZCkKKFhFTikgIFswMDAw
MDAwMGFkZGZmMDAwLCAwMDAwMDAwMGFmZmZhZmZmXSAodXNhYmxlKQooWEVOKSAgWzAwMDAwMDAw
YWZmZmIwMDAsIDAwMDAwMDAwYWZmZmZmZmZdIChyZXNlcnZlZCkKKFhFTikgIFswMDAwMDAwMTAw
MDAwMDAwLCAwMDAwMDA0MDNkYmJmZmZmXSAodXNhYmxlKQooWEVOKSAgWzAwMDAwMDAwMDAwYTAw
MDAsIDAwMDAwMDAwMDAwZmZmZmZdIChyZXNlcnZlZCkKKFhFTikgIFswMDAwMDAwMGIwMDAwMDAw
LCAwMDAwMDAwMGJmZmZmZmZmXSAocmVzZXJ2ZWQpCihYRU4pICBbMDAwMDAwMDBkZjIwMDAwMCwg
MDAwMDAwMDBkZjJmZmZmZl0gKHJlc2VydmVkKQooWEVOKSAgWzAwMDAwMDAwZTAwMDAwMDAsIDAw
MDAwMDAwZWZmZmZmZmZdIChyZXNlcnZlZCkKKFhFTikgIFswMDAwMDAwMGZlYTAwMDAwLCAwMDAw
MDAwMGZlYWZmZmZmXSAocmVzZXJ2ZWQpCihYRU4pICBbMDAwMDAwMDBmZWMwMDAwMCwgMDAwMDAw
MDBmZWMwMGZmZl0gKHJlc2VydmVkKQooWEVOKSAgWzAwMDAwMDAwZmVjMTAwMDAsIDAwMDAwMDAw
ZmVjMTBmZmZdIChyZXNlcnZlZCkKKFhFTikgIFswMDAwMDAwMGZlYzMwMDAwLCAwMDAwMDAwMGZl
YzMwZmZmXSAocmVzZXJ2ZWQpCihYRU4pICBbMDAwMDAwMDBmZWQwMDAwMCwgMDAwMDAwMDBmZWQw
MGZmZl0gKHJlc2VydmVkKQooWEVOKSAgWzAwMDAwMDAwZmVkNDAwMDAsIDAwMDAwMDAwZmVkNDRm
ZmZdIChyZXNlcnZlZCkKKFhFTikgIFswMDAwMDAwMGZlZDgwMDAwLCAwMDAwMDAwMGZlZDhmZmZm
XSAocmVzZXJ2ZWQpCihYRU4pICBbMDAwMDAwMDBmZjAwMDAwMCwgMDAwMDAwMDBmZmZmZmZmZl0g
KHJlc2VydmVkKQooWEVOKSAgWzAwMDAwMDQwM2RiYzAwMDAsIDAwMDAwMDQwM2ZmZmZmZmZdIChy
ZXNlcnZlZCkKKFhFTikgRUZJIFJBTSBtYXA6CihYRU4pICBbMDAwMDAwMDAwMDAwMDAwMCwgMDAw
MDAwMDAwMDA5ZmZmZl0gKHVzYWJsZSkKKFhFTikgIFswMDAwMDAwMDAwMGEwMDAwLCAwMDAwMDAw
MDAwMGZmZmZmXSAocmVzZXJ2ZWQpCihYRU4pICBbMDAwMDAwMDAwMDEwMDAwMCwgMDAwMDAwMDAw
M2ZmZmZmZl0gKHVzYWJsZSkKKFhFTikgIFswMDAwMDAwMDA0MDAwMDAwLCAwMDAwMDAwMDA0MDQ1
ZmZmXSAoQUNQSSBOVlMpCihYRU4pICBbMDAwMDAwMDAwNDA0NjAwMCwgMDAwMDAwMDAwOWFmZWZm
Zl0gKHVzYWJsZSkKKFhFTikgIFswMDAwMDAwMDA5YWZmMDAwLCAwMDAwMDAwMDA5ZmZmZmZmXSAo
cmVzZXJ2ZWQpCihYRU4pICBbMDAwMDAwMDAwYTAwMDAwMCwgMDAwMDAwMDAwYWZmZmZmZl0gKHVz
YWJsZSkKKFhFTikgIFswMDAwMDAwMDBiMDAwMDAwLCAwMDAwMDAwMDBiMDIwZmZmXSAocmVzZXJ2
ZWQpCihYRU4pICBbMDAwMDAwMDAwYjAyMTAwMCwgMDAwMDAwMDBhMDRlOGZmZl0gKHVzYWJsZSkK
KFhFTikgIFswMDAwMDAwMGEwNGU5MDAwLCAwMDAwMDAwMGE2NGU4ZmZmXSAocmVzZXJ2ZWQpCihY
RU4pICBbMDAwMDAwMDBhNjRlOTAwMCwgMDAwMDAwMDBhNzQ3ZWZmZl0gKEFDUEkgZGF0YSkKKFhF
TikgIFswMDAwMDAwMGE3NDdmMDAwLCAwMDAwMDAwMGE5NDdlZmZmXSAoQUNQSSBOVlMpCihYRU4p
ICBbMDAwMDAwMDBhOTQ3ZjAwMCwgMDAwMDAwMDBhZGRmZWZmZl0gKHJlc2VydmVkKQooWEVOKSAg
WzAwMDAwMDAwYWRkZmYwMDAsIDAwMDAwMDAwYWZmZmFmZmZdICh1c2FibGUpCihYRU4pICBbMDAw
MDAwMDBhZmZmYjAwMCwgMDAwMDAwMDBiZmZmZmZmZl0gKHJlc2VydmVkKQooWEVOKSAgWzAwMDAw
MDAwZGYyMDAwMDAsIDAwMDAwMDAwZGYyZmZmZmZdIChyZXNlcnZlZCkKKFhFTikgIFswMDAwMDAw
MGUwMDAwMDAwLCAwMDAwMDAwMGVmZmZmZmZmXSAocmVzZXJ2ZWQpCihYRU4pICBbMDAwMDAwMDBm
ZWEwMDAwMCwgMDAwMDAwMDBmZWFmZmZmZl0gKHJlc2VydmVkKQooWEVOKSAgWzAwMDAwMDAwZmVj
MDAwMDAsIDAwMDAwMDAwZmVjMDBmZmZdIChyZXNlcnZlZCkKKFhFTikgIFswMDAwMDAwMGZlYzEw
MDAwLCAwMDAwMDAwMGZlYzEwZmZmXSAocmVzZXJ2ZWQpCihYRU4pICBbMDAwMDAwMDBmZWMzMDAw
MCwgMDAwMDAwMDBmZWMzMGZmZl0gKHJlc2VydmVkKQooWEVOKSAgWzAwMDAwMDAwZmVkMDAwMDAs
IDAwMDAwMDAwZmVkMDBmZmZdIChyZXNlcnZlZCkKKFhFTikgIFswMDAwMDAwMGZlZDQwMDAwLCAw
MDAwMDAwMGZlZDQ0ZmZmXSAocmVzZXJ2ZWQpCihYRU4pICBbMDAwMDAwMDBmZWQ4MDAwMCwgMDAw
MDAwMDBmZWQ4ZmZmZl0gKHJlc2VydmVkKQooWEVOKSAgWzAwMDAwMDAwZmYwMDAwMDAsIDAwMDAw
MDAwZmZmZmZmZmZdIChyZXNlcnZlZCkKKFhFTikgIFswMDAwMDAwMTAwMDAwMDAwLCAwMDAwMDA0
MDNkYmJmZmZmXSAodXNhYmxlKQooWEVOKSAgWzAwMDAwMDQwM2RiYzAwMDAsIDAwMDAwMDQwM2Zm
ZmZmZmZdIChyZXNlcnZlZCkKKFhFTikgQUNQSTogUlNEUCBBOTQ2MzAxNCwgMDAyNCAocjIgQU1E
ICAgKQooWEVOKSBBQ1BJOiBYU0RUIEE5NDYyNzI4LCAwMTFDIChyMSBBTUQgICAgICBBIE0gSSAg
ICAgICAgIDEgQU1JICAgMTAwMDAxMykKKFhFTikgQUNQSTogRkFDUCBBNzQ3QzAwMCwgMDExNCAo
cjYgQU1EICAgICAgQSBNIEkgICAgICAgICAxIEFNSSAgICAgMTAwMTMpCihYRU4pIEFDUEk6IERT
RFQgQTc0NkUwMDAsIEQyRjYgKHIyIEFNRCAgICAgIEEgTSBJICAgICAgICAgMSBJTlRMIDIwMjMw
MzMxKQooWEVOKSBBQ1BJOiBGQUNTIEE5NDVBMDAwLCAwMDQwCihYRU4pIEFDUEk6IFNTRFQgQTc0
N0UwMDAsIDA5Q0MgKHIyICAgIEFNRCBCT1VMREVSRyAgICAgICAgMiBNU0ZUICA0MDAwMDAwKQoo
WEVOKSBBQ1BJOiBTU0RUIEE3NDdEMDAwLCAwMDY3IChyMiAgICBBTUQgICBDUE1EU00gICAgICAg
IDEgSU5UTCAyMDIzMDMzMSkKKFhFTikgQUNQSTogRklEVCBBNzQ2RDAwMCwgMDA5QyAocjEgICAg
QU1EICAgIEEgTSBJICAgICAgICAxIEFNSSAgICAgMTAwMTMpCihYRU4pIEFDUEk6IE1DRkcgQTc0
NkMwMDAsIDAwM0MgKHIxICAgIEFNRCAgICBBIE0gSSAgICAgICAgMSBNU0ZUICAgIDEwMDEzKQoo
WEVOKSBBQ1BJOiBTU0RUIEE3NDZCMDAwLCAwNUM1IChyMiAgICBBTUQgIENQVVNTRFQgICAgICAg
IDEgQU1JICAgICAgICAgMSkKKFhFTikgQUNQSTogSFBFVCBBNzQ2QTAwMCwgMDAzOCAocjEgICAg
QU1EICAgIEEgTSBJICAgICAgICAxIEFNSSAgICAgICAgIDUpCihYRU4pIEFDUEk6IFNTRFQgQTc0
NjgwMDAsIDFCNTMgKHIyICAgIEFNRCAgIENQTVJBUyAgICAgICAgMSBJTlRMIDIwMjMwMzMxKQoo
WEVOKSBBQ1BJOiBCRVJUIEE3NDY3MDAwLCAwMDMwIChyMSBBTUQgICAgQU1EIEJFUlQgICAgICAg
IDEgQU1EICAgICAgICAgMSkKKFhFTikgQUNQSTogRlBEVCBBNzQ2NTAwMCwgMDA0NCAocjEgQU1E
ICAgICAgQSBNIEkgICAxMDcyMDA5IEFNSSAgIDEwMDAwMTMpCihYRU4pIEFDUEk6IFNTRFQgQTc0
NjIwMDAsIDI0NDggKHIyICAgIEFNRCBHUFBfUE1FXyAgICAgICAgMSBJTlRMIDIwMjMwMzMxKQoo
WEVOKSBBQ1BJOiBTU0RUIEE3NDVGMDAwLCAyNDQ4IChyMiAgICBBTUQgR1BQX1BNRV8gICAgICAg
IDEgSU5UTCAyMDIzMDMzMSkKKFhFTikgQUNQSTogU1NEVCBBNzQ1QzAwMCwgMjQ0OCAocjIgICAg
QU1EIEdQUF9QTUVfICAgICAgICAxIElOVEwgMjAyMzAzMzEpCihYRU4pIEFDUEk6IFNTRFQgQTc0
NTkwMDAsIDI0NDggKHIyICAgIEFNRCBHUFBfUE1FXyAgICAgICAgMSBJTlRMIDIwMjMwMzMxKQoo
WEVOKSBBQ1BJOiBWRkNUIEE3NDRBMDAwLCBFNjg0IChyMSBBTUQgICAgICBBIE0gSSAgICAgICAg
IDEgIEFNRCAzMTUwNEY0NykKKFhFTikgQUNQSTogU1NEVCBBNzQzRTAwMCwgQTQwRSAocjIgICAg
QU1EICBBTUQgQ1BVICAgICAgICAxIEFNRCAgICAgICAgIDEpCihYRU4pIEFDUEk6IEhNQVQgQTc0
M0QwMDAsIDAwQTQgKHIyICAgIEFNRCBBbWRUYWJsZSAgICAgICAgMSBBTUQgICAgICAgICAxKQoo
WEVOKSBBQ1BJOiBXUEJUIEE2ODRFMDAwLCAwMDM2IChyMSAgICBBTUQgICAgQSBNIEkgICAgICAg
IDEgTVNGVCAgICAxMDAxMykKKFhFTikgQUNQSTogQkdSVCBBNzQ0OTAwMCwgMDAzOCAocjEgQU1E
ICAgICAgQSBNIEkgICAgICAgICAxIEFNSSAgICAgMTAwMTMpCihYRU4pIEFDUEk6IElWUlMgQTY4
NEQwMDAsIDAxRTggKHIyICBBTUQgICBBbWRUYWJsZSAgICAgICAgMSBBTUQgICAgICAgICAxKQoo
WEVOKSBBQ1BJOiBTU0RUIEE2ODRDMDAwLCAwNkQ0IChyMiAgICBBTUQgIENQTVdMUkMgICAgICAg
IDEgSU5UTCAyMDIzMDMzMSkKKFhFTikgQUNQSTogU1NEVCBBNjg0MjAwMCwgOTgyRiAocjIgICAg
QU1EICAgQ1BNQ01OICAgICAgICAxIElOVEwgMjAyMzAzMzEpCihYRU4pIEFDUEk6IFdTTVQgQTY4
NDEwMDAsIDAwMjggKHIxIEFNRCAgICAgIEEgTSBJICAgICAgICAgMSBBTUkgICAgIDEwMDEzKQoo
WEVOKSBBQ1BJOiBBUElDIEE2ODNGMDAwLCAxMDg4IChyNiBBTUQgICAgICBBIE0gSSAgICAgICAg
IDEgQU1JICAgICAxMDAxMykKKFhFTikgQUNQSTogU1NEVCBBNjgzQzAwMCwgMjM4NyAocjIgICAg
QU1EIEFPRCAgICAgICAgICAgICAxIElOVEwgMjAyMzAzMzEpCihYRU4pIEFDUEk6IFNTRFQgQTY4
M0IwMDAsIDA1MDAgKHIyICAgIEFNRCBNRU1UT09MMCAgICAgICAgMiBJTlRMIDIwMjMwMzMxKQoo
WEVOKSBBQ1BJOiBTU0RUIEE2ODNBMDAwLCAwOTZBIChyMiAgICBBTUQgQ1BNTVNPU0MgICAgICAg
IDEgSU5UTCAyMDIzMDMzMSkKKFhFTikgQUNQSTogU1NEVCBBNjgzOTAwMCwgMEI3MiAocjIgICAg
QU1EIENQTUFDUFY2ICAgICAgICAxIElOVEwgMjAyMzAzMzEpCihYRU4pIEFDUEk6IFNTRFQgQTY4
MzgwMDAsIDA0NEUgKHIyICAgIEFNRCBBbWRUYWJsZSAgICAgICAgMSBJTlRMIDIwMjMwMzMxKQoo
WEVOKSBBQ1BJOiBFUlNUIEE2ODM3MDAwLCAwMjMwIChyMSAgQU1JRVIgQU1JLkVSU1QgICAgICAg
IDAgQU1JLiAgICAgICAgMCkKKFhFTikgQUNQSTogSEVTVCBBNjgwNjAwMCwgMzBBMTQgKHIxIEFN
RCAgICBBTUQgSEVTVCAgICAgICAgMSBBTUQgICAgICAgICAxKQooWEVOKSBTeXN0ZW0gUkFNOiAy
NjE2MjhNQiAoMjY3OTA3OTU2a0IpCihYRU4pIE5vIE5VTUEgY29uZmlndXJhdGlvbiBmb3VuZAoo
WEVOKSBGYWtpbmcgYSBub2RlIGF0IDAwMDAwMDAwMDAwMDAwMDAtMDAwMDAwNDAzZGJjMDAwMAoo
WEVOKSBEb21haW4gaGVhcCBpbml0aWFsaXNlZAooWEVOKSB2ZXNhZmI6IGZyYW1lYnVmZmVyIGF0
IDB4MDAwMDA0ZDgwMDAwMDAwMCwgbWFwcGVkIHRvIDB4ZmZmZjgyYzAwMDIwMTAwMCwgdXNpbmcg
MTQ0MDBrLCB0b3RhbCAxNDQwMGsKKFhFTikgdmVzYWZiOiBtb2RlIGlzIDI1NjB4MTQ0MHgzMiwg
bGluZWxlbmd0aD0xMDI0MCwgZm9udCA4eDE2CihYRU4pIHZlc2FmYjogVHJ1ZWNvbG9yOiBzaXpl
PTg6ODo4OjgsIHNoaWZ0PTI0OjE2Ojg6MAooWEVOKSBTTUJJT1MgMy42IHByZXNlbnQuCihYRU4p
IHgyQVBJQyBtb2RlIGlzIGFscmVhZHkgZW5hYmxlZCBieSBCSU9TLgooWEVOKSBVc2luZyBBUElD
IGRyaXZlciB4MmFwaWNfY2x1c3RlcgooWEVOKSBBQ1BJOiBQTS1UaW1lciBJTyBQb3J0OiAweDgw
OCAoMzIgYml0cykKKFhFTikgQUNQSTogdjUgU0xFRVAgSU5GTzogY29udHJvbFswOjBdLCBzdGF0
dXNbMDowXQooWEVOKSBBQ1BJOiBTTEVFUCBJTkZPOiBwbTF4X2NudFsxOjgwNCwxOjBdLCBwbTF4
X2V2dFsxOjgwMCwxOjBdCihYRU4pIEFDUEk6IDMyLzY0WCBGQUNTIGFkZHJlc3MgbWlzbWF0Y2gg
aW4gRkFEVCAtIGE5NDVhMDAwLzAwMDAwMDAwMDAwMDAwMDAsIHVzaW5nIDMyCihYRU4pIEFDUEk6
ICAgICAgICAgICAgIHdha2V1cF92ZWNbYTk0NWEwMGNdLCB2ZWNfc2l6ZVsyMF0KKFhFTikgQUNQ
STogTG9jYWwgQVBJQyBhZGRyZXNzIDB4ZmVlMDAwMDAKKFhFTikgQUNQSTogSU9BUElDIChpZFsw
eDgwXSBhZGRyZXNzWzB4ZmVjMDAwMDBdIGdzaV9iYXNlWzBdKQooWEVOKSBJT0FQSUNbMF06IGFw
aWNfaWQgMTI4LCB2ZXJzaW9uIDMzLCBhZGRyZXNzIDB4ZmVjMDAwMDAsIEdTSSAwLTIzCihYRU4p
IEFDUEk6IElPQVBJQyAoaWRbMHg4MV0gYWRkcmVzc1sweGRmMTgwMDAwXSBnc2lfYmFzZVsxMjBd
KQooWEVOKSBJT0FQSUNbMV06IGFwaWNfaWQgMTI5LCB2ZXJzaW9uIDMzLCBhZGRyZXNzIDB4ZGYx
ODAwMDAsIEdTSSAxMjAtMTUxCihYRU4pIEFDUEk6IElPQVBJQyAoaWRbMHg4Ml0gYWRkcmVzc1sw
eGQzMTgwMDAwXSBnc2lfYmFzZVs4OF0pCihYRU4pIElPQVBJQ1syXTogYXBpY19pZCAxMzAsIHZl
cnNpb24gMzMsIGFkZHJlc3MgMHhkMzE4MDAwMCwgR1NJIDg4LTExOQooWEVOKSBBQ1BJOiBJT0FQ
SUMgKGlkWzB4ODNdIGFkZHJlc3NbMHhmNzE4MDAwMF0gZ3NpX2Jhc2VbMjRdKQooWEVOKSBJT0FQ
SUNbM106IGFwaWNfaWQgMTMxLCB2ZXJzaW9uIDMzLCBhZGRyZXNzIDB4ZjcxODAwMDAsIEdTSSAy
NC01NQooWEVOKSBBQ1BJOiBJT0FQSUMgKGlkWzB4ODRdIGFkZHJlc3NbMHhjOTE4MDAwMF0gZ3Np
X2Jhc2VbNTZdKQooWEVOKSBJT0FQSUNbNF06IGFwaWNfaWQgMTMyLCB2ZXJzaW9uIDMzLCBhZGRy
ZXNzIDB4YzkxODAwMDAsIEdTSSA1Ni04NwooWEVOKSBBQ1BJOiBJTlRfU1JDX09WUiAoYnVzIDAg
YnVzX2lycSAwIGdsb2JhbF9pcnEgMiBkZmwgZGZsKQooWEVOKSBBQ1BJOiBJTlRfU1JDX09WUiAo
YnVzIDAgYnVzX2lycSA5IGdsb2JhbF9pcnEgOSBsb3cgbGV2ZWwpCihYRU4pIEFDUEk6IElSUTAg
dXNlZCBieSBvdmVycmlkZS4KKFhFTikgQUNQSTogSVJRMiB1c2VkIGJ5IG92ZXJyaWRlLgooWEVO
KSBBQ1BJOiBJUlE5IHVzZWQgYnkgb3ZlcnJpZGUuCihYRU4pIEFDUEk6IEhQRVQgaWQ6IDB4MTAy
MjgyMDEgYmFzZTogMHhmZWQwMDAwMAooWEVOKSBQQ0k6IE1DRkcgY29uZmlndXJhdGlvbiAwOiBi
YXNlIGUwMDAwMDAwIHNlZ21lbnQgMDAwMCBidXNlcyAwMCAtIGZmCihYRU4pIFBDSTogTUNGRyBh
cmVhIGF0IGUwMDAwMDAwIHJlc2VydmVkIGluIEU4MjAKKFhFTikgUENJOiBVc2luZyBNQ0ZHIGZv
ciBzZWdtZW50IDAwMDAgYnVzIDAwLWZmCihYRU4pIFhlbiBFUlNUIHN1cHBvcnQgaXMgaW5pdGlh
bGl6ZWQuCihYRU4pIEhFU1Q6IFRhYmxlIHBhcnNpbmcgaGFzIGJlZW4gaW5pdGlhbGl6ZWQKKFhF
TikgQUNQSTogQkdSVDogaW52YWxpZGF0aW5nIHYxIGltYWdlIGF0IDB4OWIwZDAwMTgKKFhFTikg
VXNpbmcgQUNQSSAoTUFEVCkgZm9yIFNNUCBjb25maWd1cmF0aW9uIGluZm9ybWF0aW9uCihYRU4p
IFNNUDogQWxsb3dpbmcgNDggQ1BVcyAoMCBob3RwbHVnIENQVXMpCihYRU4pIElSUSBsaW1pdHM6
IDE1MiBHU0ksIDk4MzIgTVNJL01TSS1YCihYRU4pIEFNRC1WaTogSU9NTVUgRXh0ZW5kZWQgRmVh
dHVyZXM6CihYRU4pIC0gUGVyaXBoZXJhbCBQYWdlIFNlcnZpY2UgUmVxdWVzdAooWEVOKSAtIHgy
QVBJQwooWEVOKSAtIE5YIGJpdAooWEVOKSAtIEd1ZXN0IEFQSUMgUGh5c2ljYWwgUHJvY2Vzc29y
IEludGVycnVwdAooWEVOKSAtIEludmFsaWRhdGUgQWxsIENvbW1hbmQKKFhFTikgLSBHdWVzdCBB
UElDCihYRU4pIC0gUGVyZm9ybWFuY2UgQ291bnRlcnMKKFhFTikgLSBIb3N0IEFkZHJlc3MgVHJh
bnNsYXRpb24gU2l6ZTogMHgyCihYRU4pIC0gR3Vlc3QgQWRkcmVzcyBUcmFuc2xhdGlvbiBTaXpl
OiAweDEKKFhFTikgLSBHdWVzdCBDUjMgUm9vdCBUYWJsZSBMZXZlbDogMHgxCihYRU4pIC0gTWF4
aW11bSBQQVNJRDogMHhmCihYRU4pIC0gU01JIEZpbHRlciBSZWdpc3RlcjogMHgxCihYRU4pIC0g
U01JIEZpbHRlciBSZWdpc3RlciBDb3VudDogMHgyCihYRU4pIC0gR3Vlc3QgVmlydHVhbCBBUElD
IE1vZGVzOiAweDEKKFhFTikgLSBEdWFsIFBQUiBMb2c6IDB4MgooWEVOKSAtIER1YWwgRXZlbnQg
TG9nOiAweDIKKFhFTikgLSBTZWN1cmUgQVRTCihYRU4pIC0gVXNlciAvIFN1cGVydmlzb3IgUGFn
ZSBQcm90ZWN0aW9uCihYRU4pIC0gRGV2aWNlIFRhYmxlIFNlZ21lbnRhdGlvbjogMAooWEVOKSAt
IFBQUiBMb2cgT3ZlcmZsb3cgRWFybHkgV2FybmluZwooWEVOKSAtIFBQUiBBdXRvbWF0aWMgUmVz
cG9uc2UKKFhFTikgLSBNZW1vcnkgQWNjZXNzIFJvdXRpbmcgYW5kIENvbnRyb2w6IDAKKFhFTikg
LSBCbG9jayBTdG9wTWFyayBNZXNzYWdlCihYRU4pIC0gUGVyZm9ybWFuY2UgT3B0aW1pemF0aW9u
CihYRU4pIC0gTVNJIENhcGFiaWxpdHkgTU1JTyBBY2Nlc3MKKFhFTikgLSBHdWVzdCBJL08gUHJv
dGVjdGlvbgooWEVOKSAtIEhvc3QgQWNjZXNzCihYRU4pIC0gRW5oYW5jZWQgUFBSIEhhbmRsaW5n
CihYRU4pIC0gQXR0cmlidXRlIEZvcndhcmQKKFhFTikgLSBIb3N0IERpcnR5CihYRU4pIC0gVmly
dHVhbGl6ZWQgSU9NTVUKKFhFTikgLSBWTUd1YXJkIEkvTyBTdXBwb3J0CihYRU4pIC0gVk0gVGFi
bGUgU2l6ZTogMHgyCihYRU4pIC0gR3Vlc3QgQWNjZXNzIEJpdCBVcGRhdGUgRGlzYWJsZQooWEVO
KSBBTUQtVmk6IERpc2FibGVkIEhBUCBtZW1vcnkgbWFwIHNoYXJpbmcgd2l0aCBJT01NVQooWEVO
KSBBTUQtVmk6IElPTU1VIDAgRW5hYmxlZC4KKFhFTikgQU1ELVZpOiBJT01NVSAxIEVuYWJsZWQu
CihYRU4pIEFNRC1WaTogSU9NTVUgMiBFbmFibGVkLgooWEVOKSBBTUQtVmk6IElPTU1VIDMgRW5h
YmxlZC4KKFhFTikgQ1BVMDogMTUwMCAuLi4gNDIwMCBNSHoKKFhFTikgeHN0YXRlOiBzaXplOiAw
eDk4OCBhbmQgc3RhdGVzOiAweDJlNwooWEVOKSBDUFUwOiBBTUQgRmFtMTloIG1hY2hpbmUgY2hl
Y2sgcmVwb3J0aW5nIGVuYWJsZWQKKFhFTikgU3BlY3VsYXRpdmUgbWl0aWdhdGlvbiBmYWNpbGl0
aWVzOgooWEVOKSAgIEhhcmR3YXJlIGhpbnRzOiBTVElCUF9BTFdBWVMgSUJSU19GQVNUIElCUlNf
U0FNRV9NT0RFIEJUQ19OTyBJQlBCX1JFVAooWEVOKSAgIEhhcmR3YXJlIGZlYXR1cmVzOiBJQlBC
IElCUlMgU1RJQlAgU1NCRCBQU0ZEIEwxRF9GTFVTSAooWEVOKSAgIENvbXBpbGVkLWluIHN1cHBv
cnQ6IElORElSRUNUX1RIVU5LIFNIQURPV19QQUdJTkcKKFhFTikgICBYZW4gc2V0dGluZ3M6IEJU
SS1UaHVuayBKTVAsIFNQRUNfQ1RSTDogSUJSUysgU1RJQlArIFNTQkQtIFBTRkQtLCBPdGhlcjog
QlJBTkNIX0hBUkRFTgooWEVOKSAgIFN1cHBvcnQgZm9yIEhWTSBWTXM6IE1TUl9TUEVDX0NUUkwg
TVNSX1ZJUlRfU1BFQ19DVFJMIFJTQiBJQlBCLWVudHJ5CihYRU4pICAgU3VwcG9ydCBmb3IgUFYg
Vk1zOiBJQlBCLWVudHJ5CihYRU4pICAgWFBUSSAoNjQtYml0IFBWIG9ubHkpOiBEb20wIGRpc2Fi
bGVkLCBEb21VIGRpc2FibGVkICh3aXRoIFBDSUQpCihYRU4pICAgUFYgTDFURiBzaGFkb3dpbmc6
IERvbTAgZGlzYWJsZWQsIERvbVUgZGlzYWJsZWQKKFhFTikgVXNpbmcgc2NoZWR1bGVyOiBTTVAg
Q3JlZGl0IFNjaGVkdWxlciByZXYyIChjcmVkaXQyKQooWEVOKSBJbml0aWFsaXppbmcgQ3JlZGl0
MiBzY2hlZHVsZXIKKFhFTikgIGxvYWRfcHJlY2lzaW9uX3NoaWZ0OiAxOAooWEVOKSAgbG9hZF93
aW5kb3dfc2hpZnQ6IDMwCihYRU4pICB1bmRlcmxvYWRfYmFsYW5jZV90b2xlcmFuY2U6IDAKKFhF
TikgIG92ZXJsb2FkX2JhbGFuY2VfdG9sZXJhbmNlOiAtMwooWEVOKSAgcnVucXVldWVzIGFycmFu
Z2VtZW50OiBzb2NrZXQKKFhFTikgIGNhcCBlbmZvcmNlbWVudCBncmFudWxhcml0eTogMTBtcwoo
WEVOKSBsb2FkIHRyYWNraW5nIHdpbmRvdyBsZW5ndGggMTA3Mzc0MTgyNCBucwooWEVOKSBQbGF0
Zm9ybSB0aW1lciBpcyAxNC4zMThNSHogSFBFVAooWEVOKSBEZXRlY3RlZCA0MTk5Ljg1NiBNSHog
cHJvY2Vzc29yLgooWEVOKSBGcmVlZCAxMDIwa0IgdW51c2VkIEJTUyBtZW1vcnkKKFhFTikgRUZJ
IG1lbW9yeSBtYXA6CihYRU4pICAwMDAwMDAwMDAwMDAwLTAwMDAwMDAwMDNmZmYgdHlwZT0yIGF0
dHI9MDAwMDAwMDAwMDAwMDAwZgooWEVOKSAgMDAwMDAwMDAwNDAwMC0wMDAwMDAwMDhlZmZmIHR5
cGU9NyBhdHRyPTAwMDAwMDAwMDAwMDAwMGYKKFhFTikgIDAwMDAwMDAwOGYwMDAtMDAwMDAwMDA5
ZWZmZiB0eXBlPTIgYXR0cj0wMDAwMDAwMDAwMDAwMDBmCihYRU4pICAwMDAwMDAwMDlmMDAwLTAw
MDAwMDAwOWZmZmYgdHlwZT00IGF0dHI9MDAwMDAwMDAwMDAwMDAwZgooWEVOKSAgMDAwMDAwMDEw
MDAwMC0wMDAwMDAyZTFiZmZmIHR5cGU9MiBhdHRyPTAwMDAwMDAwMDAwMDAwMGYKKFhFTikgIDAw
MDAwMDJlMWMwMDAtMDAwMDAwM2ZmZmZmZiB0eXBlPTcgYXR0cj0wMDAwMDAwMDAwMDAwMDBmCihY
RU4pICAwMDAwMDA0MDAwMDAwLTAwMDAwMDQwNDVmZmYgdHlwZT0xMCBhdHRyPTAwMDAwMDAwMDAw
MDAwMGYKKFhFTikgIDAwMDAwMDQwNDYwMDAtMDAwMDAwOWFmZWZmZiB0eXBlPTcgYXR0cj0wMDAw
MDAwMDAwMDAwMDBmCihYRU4pICAwMDAwMDA5YWZmMDAwLTAwMDAwMDlmZmZmZmYgdHlwZT0wIGF0
dHI9MDAwMDAwMDAwMDAwMDAwZgooWEVOKSAgMDAwMDAwYTAwMDAwMC0wMDAwMDBhMmZmZmZmIHR5
cGU9NCBhdHRyPTAwMDAwMDAwMDAwMDAwMGYKKFhFTikgIDAwMDAwMGEzMDAwMDAtMDAwMDAwYWZm
ZmZmZiB0eXBlPTcgYXR0cj0wMDAwMDAwMDAwMDAwMDBmCihYRU4pICAwMDAwMDBiMDAwMDAwLTAw
MDAwMGIwMjBmZmYgdHlwZT0wIGF0dHI9MDAwMDAwMDAwMDAwMDAwZgooWEVOKSAgMDAwMDAwYjAy
MTAwMC0wMDAwMDZmODY4ZmZmIHR5cGU9NyBhdHRyPTAwMDAwMDAwMDAwMDAwMGYKKFhFTikgIDAw
MDAwNmY4NjkwMDAtMDAwMDA5NTNlYWZmZiB0eXBlPTEgYXR0cj0wMDAwMDAwMDAwMDAwMDBmCihY
RU4pICAwMDAwMDk1M2ViMDAwLTAwMDAwOTUzZjRmZmYgdHlwZT00IGF0dHI9MDAwMDAwMDAwMDAw
MDAwZgooWEVOKSAgMDAwMDA5NTNmNTAwMC0wMDAwMDk1M2ZlZmZmIHR5cGU9NyBhdHRyPTAwMDAw
MDAwMDAwMDAwMGYKKFhFTikgIDAwMDAwOTUzZmYwMDAtMDAwMDA5NTQwOGZmZiB0eXBlPTQgYXR0
cj0wMDAwMDAwMDAwMDAwMDBmCihYRU4pICAwMDAwMDk1NDA5MDAwLTAwMDAwOTU0MjZmZmYgdHlw
ZT03IGF0dHI9MDAwMDAwMDAwMDAwMDAwZgooWEVOKSAgMDAwMDA5NTQyNzAwMC0wMDAwMDk1ODI4
ZmZmIHR5cGU9MSBhdHRyPTAwMDAwMDAwMDAwMDAwMGYKKFhFTikgIDAwMDAwOTU4MjkwMDAtMDAw
MDA5NWMzM2ZmZiB0eXBlPTIgYXR0cj0wMDAwMDAwMDAwMDAwMDBmCihYRU4pICAwMDAwMDk1YzM0
MDAwLTAwMDAwOTVjMzlmZmYgdHlwZT03IGF0dHI9MDAwMDAwMDAwMDAwMDAwZgooWEVOKSAgMDAw
MDA5NWMzYTAwMC0wMDAwMDk1ZDBjZmZmIHR5cGU9MSBhdHRyPTAwMDAwMDAwMDAwMDAwMGYKKFhF
TikgIDAwMDAwOTVkMGQwMDAtMDAwMDA5NzRlOGZmZiB0eXBlPTQgYXR0cj0wMDAwMDAwMDAwMDAw
MDBmCihYRU4pICAwMDAwMDk3NGU5MDAwLTAwMDAwOTc0ZWJmZmYgdHlwZT03IGF0dHI9MDAwMDAw
MDAwMDAwMDAwZgooWEVOKSAgMDAwMDA5NzRlYzAwMC0wMDAwMDk3NGYyZmZmIHR5cGU9NCBhdHRy
PTAwMDAwMDAwMDAwMDAwMGYKKFhFTikgIDAwMDAwOTc0ZjMwMDAtMDAwMDA5NzUxNWZmZiB0eXBl
PTcgYXR0cj0wMDAwMDAwMDAwMDAwMDBmCihYRU4pICAwMDAwMDk3NTE2MDAwLTAwMDAwOTc1MmNm
ZmYgdHlwZT00IGF0dHI9MDAwMDAwMDAwMDAwMDAwZgooWEVOKSAgMDAwMDA5NzUyZDAwMC0wMDAw
MDk3NTJmZmZmIHR5cGU9NyBhdHRyPTAwMDAwMDAwMDAwMDAwMGYKKFhFTikgIDAwMDAwOTc1MzAw
MDAtMDAwMDA5NzU1MWZmZiB0eXBlPTQgYXR0cj0wMDAwMDAwMDAwMDAwMDBmCihYRU4pICAwMDAw
MDk3NTUyMDAwLTAwMDAwOTc1ZDFmZmYgdHlwZT03IGF0dHI9MDAwMDAwMDAwMDAwMDAwZgooWEVO
KSAgMDAwMDA5NzVkMjAwMC0wMDAwMDk3NjVjZmZmIHR5cGU9NCBhdHRyPTAwMDAwMDAwMDAwMDAw
MGYKKFhFTikgIDAwMDAwOTc2NWQwMDAtMDAwMDA5NzY2MmZmZiB0eXBlPTcgYXR0cj0wMDAwMDAw
MDAwMDAwMDBmCihYRU4pICAwMDAwMDk3NjYzMDAwLTAwMDAwOTc2YWJmZmYgdHlwZT00IGF0dHI9
MDAwMDAwMDAwMDAwMDAwZgooWEVOKSAgMDAwMDA5NzZhYzAwMC0wMDAwMDk3ZTlkZmZmIHR5cGU9
NyBhdHRyPTAwMDAwMDAwMDAwMDAwMGYKKFhFTikgIDAwMDAwOTdlOWUwMDAtMDAwMDA5N2U5ZmZm
ZiB0eXBlPTQgYXR0cj0wMDAwMDAwMDAwMDAwMDBmCihYRU4pICAwMDAwMDk3ZWEwMDAwLTAwMDAw
OTdmNmVmZmYgdHlwZT03IGF0dHI9MDAwMDAwMDAwMDAwMDAwZgooWEVOKSAgMDAwMDA5N2Y2ZjAw
MC0wMDAwMDliMWRiZmZmIHR5cGU9NCBhdHRyPTAwMDAwMDAwMDAwMDAwMGYKKFhFTikgIDAwMDAw
OWIxZGMwMDAtMDAwMDA5YjFkZWZmZiB0eXBlPTcgYXR0cj0wMDAwMDAwMDAwMDAwMDBmCihYRU4p
ICAwMDAwMDliMWRmMDAwLTAwMDAwOWU0ZThmZmYgdHlwZT00IGF0dHI9MDAwMDAwMDAwMDAwMDAw
ZgooWEVOKSAgMDAwMDA5ZTRlOTAwMC0wMDAwMDlmN2ZmZmZmIHR5cGU9NyBhdHRyPTAwMDAwMDAw
MDAwMDAwMGYKKFhFTikgIDAwMDAwOWY4MDAwMDAtMDAwMDA5ZmJiM2ZmZiB0eXBlPTIgYXR0cj0w
MDAwMDAwMDAwMDAwMDBmCihYRU4pICAwMDAwMDlmYmI0MDAwLTAwMDAwOWZkNzZmZmYgdHlwZT03
IGF0dHI9MDAwMDAwMDAwMDAwMDAwZgooWEVOKSAgMDAwMDA5ZmQ3NzAwMC0wMDAwMGEwNGU4ZmZm
IHR5cGU9MyBhdHRyPTAwMDAwMDAwMDAwMDAwMGYKKFhFTikgIDAwMDAwYTA0ZTkwMDAtMDAwMDBh
NjRlOGZmZiB0eXBlPTAgYXR0cj0wMDAwMDAwMDAwMDAwMDBmCihYRU4pICAwMDAwMGE2NGU5MDAw
LTAwMDAwYTc0N2VmZmYgdHlwZT05IGF0dHI9MDAwMDAwMDAwMDAwMDAwZgooWEVOKSAgMDAwMDBh
NzQ3ZjAwMC0wMDAwMGE5NDdlZmZmIHR5cGU9MTAgYXR0cj0wMDAwMDAwMDAwMDAwMDBmCihYRU4p
ICAwMDAwMGE5NDdmMDAwLTAwMDAwYWRjN2VmZmYgdHlwZT02IGF0dHI9ODAwMDAwMDAwMDAwMDAw
ZgooWEVOKSAgMDAwMDBhZGM3ZjAwMC0wMDAwMGFkZGZlZmZmIHR5cGU9NSBhdHRyPTgwMDAwMDAw
MDAwMDAwMGYKKFhFTikgIDAwMDAwYWRkZmYwMDAtMDAwMDBhZGZmZmZmZiB0eXBlPTQgYXR0cj0w
MDAwMDAwMDAwMDAwMDBmCihYRU4pICAwMDAwMGFlMDAwMDAwLTAwMDAwYWUxM2FmZmYgdHlwZT03
IGF0dHI9MDAwMDAwMDAwMDAwMDAwZgooWEVOKSAgMDAwMDBhZTEzYjAwMC0wMDAwMGFlMjNhZmZm
IHR5cGU9NCBhdHRyPTAwMDAwMDAwMDAwMDAwMGYKKFhFTikgIDAwMDAwYWUyM2IwMDAtMDAwMDBh
ZTI1YmZmZiB0eXBlPTMgYXR0cj0wMDAwMDAwMDAwMDAwMDBmCihYRU4pICAwMDAwMGFlMjVjMDAw
LTAwMDAwYWY3NjVmZmYgdHlwZT00IGF0dHI9MDAwMDAwMDAwMDAwMDAwZgooWEVOKSAgMDAwMDBh
Zjc2NjAwMC0wMDAwMGFmNzgyZmZmIHR5cGU9MyBhdHRyPTAwMDAwMDAwMDAwMDAwMGYKKFhFTikg
IDAwMDAwYWY3ODMwMDAtMDAwMDBhZjc5YmZmZiB0eXBlPTQgYXR0cj0wMDAwMDAwMDAwMDAwMDBm
CihYRU4pICAwMDAwMGFmNzljMDAwLTAwMDAwYWY3OWZmZmYgdHlwZT0zIGF0dHI9MDAwMDAwMDAw
MDAwMDAwZgooWEVOKSAgMDAwMDBhZjdhMDAwMC0wMDAwMGFmN2IzZmZmIHR5cGU9NCBhdHRyPTAw
MDAwMDAwMDAwMDAwMGYKKFhFTikgIDAwMDAwYWY3YjQwMDAtMDAwMDBhZjdkY2ZmZiB0eXBlPTMg
YXR0cj0wMDAwMDAwMDAwMDAwMDBmCihYRU4pICAwMDAwMGFmN2RkMDAwLTAwMDAwYWZmZjNmZmYg
dHlwZT00IGF0dHI9MDAwMDAwMDAwMDAwMDAwZgooWEVOKSAgMDAwMDBhZmZmNDAwMC0wMDAwMGFm
ZmZhZmZmIHR5cGU9MyBhdHRyPTAwMDAwMDAwMDAwMDAwMGYKKFhFTikgIDAwMDAwYWZmZmIwMDAt
MDAwMDBhZmZmZmZmZiB0eXBlPTYgYXR0cj04MDAwMDAwMDAwMDAwMDBmCihYRU4pICAwMDAwMTAw
MDAwMDAwLTAwMDQwM2RiYmZmZmYgdHlwZT03IGF0dHI9MDAwMDAwMDAwMDAwMDAwZgooWEVOKSAg
MDAwMDAwMDBhMDAwMC0wMDAwMDAwMGZmZmZmIHR5cGU9MCBhdHRyPTAwMDAwMDAwMDAwMDAwMGYK
KFhFTikgIDAwMDAwYjAwMDAwMDAtMDAwMDBiZmZmZmZmZiB0eXBlPTAgYXR0cj0wMDAwMDAwMDAw
MDAwMDBmCihYRU4pICAwMDAwMGRmMjAwMDAwLTAwMDAwZGYyZmZmZmYgdHlwZT0xMSBhdHRyPTgw
MDAwMDAwMDAwMDAwMDEKKFhFTikgIDAwMDAwZTAwMDAwMDAtMDAwMDBlZmZmZmZmZiB0eXBlPTEx
IGF0dHI9ODAwMDAwMDAwMDAwMTAwZAooWEVOKSAgMDAwMDBmZWEwMDAwMC0wMDAwMGZlYWZmZmZm
IHR5cGU9MTEgYXR0cj04MDAwMDAwMDAwMDAwMDAxCihYRU4pICAwMDAwMGZlYzAwMDAwLTAwMDAw
ZmVjMDBmZmYgdHlwZT0xMSBhdHRyPTgwMDAwMDAwMDAwMDAwMDEKKFhFTikgIDAwMDAwZmVjMTAw
MDAtMDAwMDBmZWMxMGZmZiB0eXBlPTExIGF0dHI9ODAwMDAwMDAwMDAwMDAwMQooWEVOKSAgMDAw
MDBmZWMzMDAwMC0wMDAwMGZlYzMwZmZmIHR5cGU9MTEgYXR0cj04MDAwMDAwMDAwMDAwMDAxCihY
RU4pICAwMDAwMGZlZDAwMDAwLTAwMDAwZmVkMDBmZmYgdHlwZT0xMSBhdHRyPTgwMDAwMDAwMDAw
MDAwMDEKKFhFTikgIDAwMDAwZmVkNDAwMDAtMDAwMDBmZWQ0NGZmZiB0eXBlPTExIGF0dHI9ODAw
MDAwMDAwMDAwMDAwMQooWEVOKSAgMDAwMDBmZWQ4MDAwMC0wMDAwMGZlZDhmZmZmIHR5cGU9MTEg
YXR0cj04MDAwMDAwMDAwMDAwMDAxCihYRU4pICAwMDAwMGZmMDAwMDAwLTAwMDAwZmZmZmZmZmYg
dHlwZT0xMSBhdHRyPTgwMDAwMDAwMDAwMDAwMDEKKFhFTikgIDAwMDQwM2RiYzAwMDAtMDAwNDAz
ZmZmZmZmZiB0eXBlPTAgYXR0cj0wMDAwMDAwMDAwMDAwMDBmCihYRU4pIGFsdCB0YWJsZSBmZmZm
ODJkMDQwNDViMWQwIC0+IGZmZmY4MmQwNDA0NjcxZmMKKFhFTikgSS9PIHZpcnR1YWxpc2F0aW9u
IGVuYWJsZWQKKFhFTikgIC0gRG9tMCBtb2RlOiBSZWxheGVkCihYRU4pIEludGVycnVwdCByZW1h
cHBpbmcgZW5hYmxlZAooWEVOKSBucl9zb2NrZXRzOiAxCihYRU4pIEVuYWJsZWQgZGlyZWN0ZWQg
RU9JIHdpdGggaW9hcGljX2Fja19vbGQgb24hCihYRU4pIEVuYWJsaW5nIEFQSUMgbW9kZTogIENs
dXN0ZXJlZC4gIFVzaW5nIDUgSS9PIEFQSUNzCihYRU4pIEVOQUJMSU5HIElPLUFQSUMgSVJRcwoo
WEVOKSAgLT4gVXNpbmcgb2xkIEFDSyBtZXRob2QKKFhFTikgLi5USU1FUjogdmVjdG9yPTB4RjAg
YXBpYzE9MCBwaW4xPTIgYXBpYzI9LTEgcGluMj0tMQooWEVOKSBEZWZhdWx0aW5nIHRvIGFsdGVy
bmF0aXZlIGtleSBoYW5kbGluZzsgc2VuZCAnQScgdG8gc3dpdGNoIHRvIG5vcm1hbCBtb2RlLgoo
WEVOKSBBbGxvY2F0ZWQgY29uc29sZSByaW5nIG9mIDUxMiBLaUIuCihYRU4pIG13YWl0LWlkbGU6
IGRvZXMgbm90IHJ1biBvbiBmYW1pbHkgMjUgbW9kZWwgMjQKKFhFTikgSFZNOiBBU0lEcyBlbmFi
bGVkLgooWEVOKSBTVk06IFN1cHBvcnRlZCBhZHZhbmNlZCBmZWF0dXJlczoKKFhFTikgIC0gTmVz
dGVkIFBhZ2UgVGFibGVzIChOUFQpCihYRU4pICAtIExhc3QgQnJhbmNoIFJlY29yZCAoTEJSKSBW
aXJ0dWFsaXNhdGlvbgooWEVOKSAgLSBOZXh0LVJJUCBTYXZlZCBvbiAjVk1FWElUCihYRU4pICAt
IFZNQ0IgQ2xlYW4gQml0cwooWEVOKSAgLSBEZWNvZGVBc3Npc3RzCihYRU4pICAtIFZpcnR1YWwg
Vk1MT0FEL1ZNU0FWRQooWEVOKSAgLSBWaXJ0dWFsIEdJRgooWEVOKSAgLSBQYXVzZS1JbnRlcmNl
cHQgRmlsdGVyCihYRU4pICAtIFBhdXNlLUludGVyY2VwdCBGaWx0ZXIgVGhyZXNob2xkCihYRU4p
ICAtIFRTQyBSYXRlIE1TUgooWEVOKSAgLSBOUFQgU3VwZXJ2aXNvciBTaGFkb3cgU3RhY2sKKFhF
TikgIC0gTVNSX1NQRUNfQ1RSTCB2aXJ0dWFsaXNhdGlvbgooWEVOKSBIVk06IFNWTSBlbmFibGVk
CihYRU4pIEhWTTogSGFyZHdhcmUgQXNzaXN0ZWQgUGFnaW5nIChIQVApIGRldGVjdGVkCihYRU4p
IEhWTTogSEFQIHBhZ2Ugc2l6ZXM6IDRrQiwgMk1CLCAxR0IKKFhFTikgYWx0IHRhYmxlIGZmZmY4
MmQwNDA0NWIxZDAgLT4gZmZmZjgyZDA0MDQ2NzFmYwooWEVOKSBCcm91Z2h0IHVwIDQ4IENQVXMK
KFhFTikgU2NoZWR1bGluZyBncmFudWxhcml0eTogY3B1LCAxIENQVSBwZXIgc2NoZWQtcmVzb3Vy
Y2UKKFhFTikgSW5pdGlhbGl6aW5nIENyZWRpdDIgc2NoZWR1bGVyCihYRU4pICBsb2FkX3ByZWNp
c2lvbl9zaGlmdDogMTgKKFhFTikgIGxvYWRfd2luZG93X3NoaWZ0OiAzMAooWEVOKSAgdW5kZXJs
b2FkX2JhbGFuY2VfdG9sZXJhbmNlOiAwCihYRU4pICBvdmVybG9hZF9iYWxhbmNlX3RvbGVyYW5j
ZTogLTMKKFhFTikgIHJ1bnF1ZXVlcyBhcnJhbmdlbWVudDogc29ja2V0CihYRU4pICBjYXAgZW5m
b3JjZW1lbnQgZ3JhbnVsYXJpdHk6IDEwbXMKKFhFTikgbG9hZCB0cmFja2luZyB3aW5kb3cgbGVu
Z3RoIDEwNzM3NDE4MjQgbnMKKFhFTikgQWRkaW5nIGNwdSAwIHRvIHJ1bnF1ZXVlIDAKKFhFTikg
IEZpcnN0IGNwdSBvbiBydW5xdWV1ZSwgYWN0aXZhdGluZwooWEVOKSBBZGRpbmcgY3B1IDEgdG8g
cnVucXVldWUgMAooWEVOKSBBZGRpbmcgY3B1IDIgdG8gcnVucXVldWUgMAooWEVOKSBBZGRpbmcg
Y3B1IDMgdG8gcnVucXVldWUgMAooWEVOKSBBZGRpbmcgY3B1IDQgdG8gcnVucXVldWUgMAooWEVO
KSBBZGRpbmcgY3B1IDUgdG8gcnVucXVldWUgMAooWEVOKSBBZGRpbmcgY3B1IDYgdG8gcnVucXVl
dWUgMAooWEVOKSBBZGRpbmcgY3B1IDcgdG8gcnVucXVldWUgMAooWEVOKSBBZGRpbmcgY3B1IDgg
dG8gcnVucXVldWUgMAooWEVOKSBBZGRpbmcgY3B1IDkgdG8gcnVucXVldWUgMAooWEVOKSBBZGRp
bmcgY3B1IDEwIHRvIHJ1bnF1ZXVlIDAKKFhFTikgQWRkaW5nIGNwdSAxMSB0byBydW5xdWV1ZSAw
CihYRU4pIEFkZGluZyBjcHUgMTIgdG8gcnVucXVldWUgMAooWEVOKSBBZGRpbmcgY3B1IDEzIHRv
IHJ1bnF1ZXVlIDAKKFhFTikgQWRkaW5nIGNwdSAxNCB0byBydW5xdWV1ZSAwCihYRU4pIEFkZGlu
ZyBjcHUgMTUgdG8gcnVucXVldWUgMAooWEVOKSBBZGRpbmcgY3B1IDE2IHRvIHJ1bnF1ZXVlIDEK
KFhFTikgIEZpcnN0IGNwdSBvbiBydW5xdWV1ZSwgYWN0aXZhdGluZwooWEVOKSBBZGRpbmcgY3B1
IDE3IHRvIHJ1bnF1ZXVlIDEKKFhFTikgQWRkaW5nIGNwdSAxOCB0byBydW5xdWV1ZSAxCihYRU4p
IEFkZGluZyBjcHUgMTkgdG8gcnVucXVldWUgMQooWEVOKSBBZGRpbmcgY3B1IDIwIHRvIHJ1bnF1
ZXVlIDEKKFhFTikgQWRkaW5nIGNwdSAyMSB0byBydW5xdWV1ZSAxCihYRU4pIEFkZGluZyBjcHUg
MjIgdG8gcnVucXVldWUgMQooWEVOKSBBZGRpbmcgY3B1IDIzIHRvIHJ1bnF1ZXVlIDEKKFhFTikg
QWRkaW5nIGNwdSAyNCB0byBydW5xdWV1ZSAxCihYRU4pIEFkZGluZyBjcHUgMjUgdG8gcnVucXVl
dWUgMQooWEVOKSBBZGRpbmcgY3B1IDI2IHRvIHJ1bnF1ZXVlIDEKKFhFTikgQWRkaW5nIGNwdSAy
NyB0byBydW5xdWV1ZSAxCihYRU4pIEFkZGluZyBjcHUgMjggdG8gcnVucXVldWUgMQooWEVOKSBB
ZGRpbmcgY3B1IDI5IHRvIHJ1bnF1ZXVlIDEKKFhFTikgQWRkaW5nIGNwdSAzMCB0byBydW5xdWV1
ZSAxCihYRU4pIEFkZGluZyBjcHUgMzEgdG8gcnVucXVldWUgMQooWEVOKSBBZGRpbmcgY3B1IDMy
IHRvIHJ1bnF1ZXVlIDIKKFhFTikgIEZpcnN0IGNwdSBvbiBydW5xdWV1ZSwgYWN0aXZhdGluZwoo
WEVOKSBBZGRpbmcgY3B1IDMzIHRvIHJ1bnF1ZXVlIDIKKFhFTikgQWRkaW5nIGNwdSAzNCB0byBy
dW5xdWV1ZSAyCihYRU4pIEFkZGluZyBjcHUgMzUgdG8gcnVucXVldWUgMgooWEVOKSBBZGRpbmcg
Y3B1IDM2IHRvIHJ1bnF1ZXVlIDIKKFhFTikgQWRkaW5nIGNwdSAzNyB0byBydW5xdWV1ZSAyCihY
RU4pIEFkZGluZyBjcHUgMzggdG8gcnVucXVldWUgMgooWEVOKSBBZGRpbmcgY3B1IDM5IHRvIHJ1
bnF1ZXVlIDIKKFhFTikgQWRkaW5nIGNwdSA0MCB0byBydW5xdWV1ZSAyCihYRU4pIEFkZGluZyBj
cHUgNDEgdG8gcnVucXVldWUgMgooWEVOKSBBZGRpbmcgY3B1IDQyIHRvIHJ1bnF1ZXVlIDIKKFhF
TikgQWRkaW5nIGNwdSA0MyB0byBydW5xdWV1ZSAyCihYRU4pIEFkZGluZyBjcHUgNDQgdG8gcnVu
cXVldWUgMgooWEVOKSBBZGRpbmcgY3B1IDQ1IHRvIHJ1bnF1ZXVlIDIKKFhFTikgQWRkaW5nIGNw
dSA0NiB0byBydW5xdWV1ZSAyCihYRU4pIEFkZGluZyBjcHUgNDcgdG8gcnVucXVldWUgMgooWEVO
KSBtY2hlY2tfcG9sbDogTWFjaGluZSBjaGVjayBwb2xsaW5nIHRpbWVyIHN0YXJ0ZWQuCihYRU4p
IHhlbm9wcm9mOiBJbml0aWFsaXphdGlvbiBmYWlsZWQuIEFNRCBwcm9jZXNzb3IgZmFtaWx5IDI1
IGlzIG5vdCBzdXBwb3J0ZWQKKFhFTikgTlggKEV4ZWN1dGUgRGlzYWJsZSkgcHJvdGVjdGlvbiBh
Y3RpdmUKKFhFTikgRG9tMCBoYXMgbWF4aW11bSAxNDAwIFBJUlFzCihYRU4pICoqKiBCdWlsZGlu
ZyBhIFBWIERvbTAgKioqCihYRU4pICBYZW4gIGtlcm5lbDogNjQtYml0LCBsc2IKKFhFTikgIERv
bTAga2VybmVsOiA2NC1iaXQsIFBBRSwgbHNiLCBwYWRkciAweDIwMDAwMCAtPiAweDNjMDAwMDAK
KFhFTikgUEhZU0lDQUwgTUVNT1JZIEFSUkFOR0VNRU5UOgooWEVOKSAgRG9tMCBhbGxvYy46ICAg
MDAwMDAwM2ZkMDAwMDAwMC0+MDAwMDAwM2ZkNDAwMDAwMCAoMjA3MTIwOSBwYWdlcyB0byBiZSBh
bGxvY2F0ZWQpCihYRU4pICBJbml0LiByYW1kaXNrOiAwMDAwMDA0MDNiNGE5MDAwLT4wMDAwMDA0
MDNkOWZmMjBlCihYRU4pIFZJUlRVQUwgTUVNT1JZIEFSUkFOR0VNRU5UOgooWEVOKSAgTG9hZGVk
IGtlcm5lbDogZmZmZmZmZmY4MDIwMDAwMC0+ZmZmZmZmZmY4M2MwMDAwMAooWEVOKSAgUGh5cy1N
YWNoIG1hcDogMDAwMDAwODAwMDAwMDAwMC0+MDAwMDAwODAwMTAwMDAwMAooWEVOKSAgU3RhcnQg
aW5mbzogICAgZmZmZmZmZmY4M2MwMDAwMC0+ZmZmZmZmZmY4M2MwMDRiOAooWEVOKSAgUGFnZSB0
YWJsZXM6ICAgZmZmZmZmZmY4M2MwMTAwMC0+ZmZmZmZmZmY4M2MyNDAwMAooWEVOKSAgQm9vdCBz
dGFjazogICAgZmZmZmZmZmY4M2MyNDAwMC0+ZmZmZmZmZmY4M2MyNTAwMAooWEVOKSAgVE9UQUw6
ICAgICAgICAgZmZmZmZmZmY4MDAwMDAwMC0+ZmZmZmZmZmY4NDAwMDAwMAooWEVOKSAgRU5UUlkg
QUREUkVTUzogZmZmZmZmZmY4MjI2ZTFjMAooWEVOKSBEb20wIGhhcyBtYXhpbXVtIDQ4IFZDUFVz
CihYRU4pIEluaXRpYWwgbG93IG1lbW9yeSB2aXJxIHRocmVzaG9sZCBzZXQgYXQgMHg0MDAwIHBh
Z2VzLgooWEVOKSBTY3J1YmJpbmcgRnJlZSBSQU0gaW4gYmFja2dyb3VuZAooWEVOKSBTdGQuIExv
Z2xldmVsOiBBbGwKKFhFTikgR3Vlc3QgTG9nbGV2ZWw6IEFsbAooWEVOKSAqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKFhFTikgV0FSTklORzogQ09O
U09MRSBPVVRQVVQgSVMgU1lOQ0hST05PVVMKKFhFTikgVGhpcyBvcHRpb24gaXMgaW50ZW5kZWQg
dG8gYWlkIGRlYnVnZ2luZyBvZiBYZW4gYnkgZW5zdXJpbmcKKFhFTikgdGhhdCBhbGwgb3V0cHV0
IGlzIHN5bmNocm9ub3VzbHkgZGVsaXZlcmVkIG9uIHRoZSBzZXJpYWwgbGluZS4KKFhFTikgSG93
ZXZlciBpdCBjYW4gaW50cm9kdWNlIFNJR05JRklDQU5UIGxhdGVuY2llcyBhbmQgYWZmZWN0CihY
RU4pIHRpbWVrZWVwaW5nLiBJdCBpcyBOT1QgcmVjb21tZW5kZWQgZm9yIHByb2R1Y3Rpb24gdXNl
IQooWEVOKSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioKKFhFTikgMy4uLiAyLi4uIDEuLi4gCihYRU4pIFhlbiBpcyByZWxpbnF1aXNoaW5nIFZHQSBj
b25zb2xlLgooWEVOKSAqKiogU2VyaWFsIGlucHV0IHRvIERPTTAgKHR5cGUgJ0NUUkwtYScgdGhy
ZWUgdGltZXMgdG8gc3dpdGNoIGlucHV0KQooWEVOKSBGcmVlZCA2NDRrQiBpbml0IG1lbW9yeQpt
YXBwaW5nIGtlcm5lbCBpbnRvIHBoeXNpY2FsIG1lbW9yeQphYm91dCB0byBnZXQgc3RhcnRlZC4u
LgpQb2tpbmcgS0FTTFIgdXNpbmcgUkRSQU5EIFJEVFNDLi4uCihYRU4pIFBDSSBhZGQgZGV2aWNl
IDAwMDA6YzA6MDAuMAooWEVOKSBQQ0kgYWRkIGRldmljZSAwMDAwOmMwOjAwLjIKKFhFTikgUENJ
IGFkZCBkZXZpY2UgMDAwMDpjMDowMC4zCg==
--0000000000003412b4060f3269fc
Content-Type: text/x-log; charset="US-ASCII"; name="xen-4.17_UEFI_pvh.log"
Content-Disposition: attachment; filename="xen-4.17_UEFI_pvh.log"
Content-Transfer-Encoding: base64
Content-ID: <f_lritsklu6>
X-Attachment-Id: f_lritsklu6

KFhFTikgWGVuIHZlcnNpb24gNC4xNy4zLXByZSAoRGViaWFuIDQuMTcuMis3Ni1nZTFmOWNiMTZl
Mi0xfmRlYjEydTEpIChwa2cteGVuLWRldmVsQGxpc3RzLmFsaW90aC5kZWJpYW4ub3JnKSAoeDg2
XzY0LWxpbnV4LWdudS1nY2MgKERlYmlhbiAxMi4yLjAtMTQpIDEyLjIuMCkgZGVidWc9biBTYXQg
RGVjICAyIDE2OjU4OjA4IFVUQyAyMDIzDQooWEVOKSBidWlsZC1pZDogNWYwYWU5MWViNmJkMDlj
ZDYzNmU4YjczYzZlNjlmZWUNCihYRU4pIENvbnNvbGUgb3V0cHV0IGlzIHN5bmNocm9ub3VzLg0K
KFhFTikgQm9vdGxvYWRlcjogRUZJDQooWEVOKSBDb21tYW5kIGxpbmU6IGRvbTBfbWVtPThHLG1h
eDo4RyBsb2dsdmw9YWxsIGU4MjAtdmVyYm9zZT10cnVlIGNvbnNvbGVfdG9fcmluZyBzeW5jX2Nv
bnNvbGUgZ3Vlc3RfbG9nbHZsPWFsbCBjb20xPTExNTIwMCw4bjEgY29uc29sZT1jb20xLHZnYSBk
b20wPXB2aA0KKFhFTikgWGVuIGltYWdlIGxvYWQgYmFzZSBhZGRyZXNzOiAweDk0MjAwMDAwDQoo
WEVOKSBWaWRlbyBpbmZvcm1hdGlvbjoNCihYRU4pICBWR0EgaXMgZ3JhcGhpY3MgbW9kZSA4MDB4
NjAwLCAzMiBicHANCihYRU4pICBWQkUvRERDIG1ldGhvZHM6IG5vbmU7IEVESUQgdHJhbnNmZXIg
dGltZTogMCBzZWNvbmRzDQooWEVOKSBEaXNjIGluZm9ybWF0aW9uOg0KKFhFTikgIEZvdW5kIDAg
TUJSIHNpZ25hdHVyZXMNCihYRU4pICBGb3VuZCA2IEVERCBpbmZvcm1hdGlvbiBzdHJ1Y3R1cmVz
DQooWEVOKSBDUFUgVmVuZG9yOiBBTUQsIEZhbWlseSAyNSAoMHgxOSksIE1vZGVsIDI0ICgweDE4
KSwgU3RlcHBpbmcgMSAocmF3IDAwYTEwZjgxKQ0KKFhFTikgRW5hYmxpbmcgU3VwZXJ2aXNvciBT
aGFkb3cgU3RhY2tzDQooWEVOKSBJbml0aWFsIEVGSSBSQU0gbWFwOg0KKFhFTikgIFswMDAwMDAw
MDAwMDAwMDAwLCAwMDAwMDAwMDAwMDlmZmZmXSAodXNhYmxlKQ0KKFhFTikgIFswMDAwMDAwMDAw
MTAwMDAwLCAwMDAwMDAwMDAzZmZmZmZmXSAodXNhYmxlKQ0KKFhFTikgIFswMDAwMDAwMDA0MDAw
MDAwLCAwMDAwMDAwMDA0MDQ1ZmZmXSAoQUNQSSBOVlMpDQooWEVOKSAgWzAwMDAwMDAwMDQwNDYw
MDAsIDAwMDAwMDAwMDlhZmVmZmZdICh1c2FibGUpDQooWEVOKSAgWzAwMDAwMDAwMDlhZmYwMDAs
IDAwMDAwMDAwMDlmZmZmZmZdIChyZXNlcnZlZCkNCihYRU4pICBbMDAwMDAwMDAwYTAwMDAwMCwg
MDAwMDAwMDAwYWZmZmZmZl0gKHVzYWJsZSkNCihYRU4pICBbMDAwMDAwMDAwYjAwMDAwMCwgMDAw
MDAwMDAwYjAyMGZmZl0gKHJlc2VydmVkKQ0KKFhFTikgIFswMDAwMDAwMDBiMDIxMDAwLCAwMDAw
MDAwMGEwNGU4ZmZmXSAodXNhYmxlKQ0KKFhFTikgIFswMDAwMDAwMGEwNGU5MDAwLCAwMDAwMDAw
MGE2NGU4ZmZmXSAocmVzZXJ2ZWQpDQooWEVOKSAgWzAwMDAwMDAwYTY0ZTkwMDAsIDAwMDAwMDAw
YTc0N2VmZmZdIChBQ1BJIGRhdGEpDQooWEVOKSAgWzAwMDAwMDAwYTc0N2YwMDAsIDAwMDAwMDAw
YTk0N2VmZmZdIChBQ1BJIE5WUykNCihYRU4pICBbMDAwMDAwMDBhOTQ3ZjAwMCwgMDAwMDAwMDBh
ZGRmZWZmZl0gKHJlc2VydmVkKQ0KKFhFTikgIFswMDAwMDAwMGFkZGZmMDAwLCAwMDAwMDAwMGFm
ZmZhZmZmXSAodXNhYmxlKQ0KKFhFTikgIFswMDAwMDAwMGFmZmZiMDAwLCAwMDAwMDAwMGFmZmZm
ZmZmXSAocmVzZXJ2ZWQpDQooWEVOKSAgWzAwMDAwMDAxMDAwMDAwMDAsIDAwMDAwMDQwM2RiYmZm
ZmZdICh1c2FibGUpDQooWEVOKSAgWzAwMDAwMDAwMDAwYTAwMDAsIDAwMDAwMDAwMDAwZmZmZmZd
IChyZXNlcnZlZCkNCihYRU4pICBbMDAwMDAwMDBiMDAwMDAwMCwgMDAwMDAwMDBiZmZmZmZmZl0g
KHJlc2VydmVkKQ0KKFhFTikgIFswMDAwMDAwMGRmMjAwMDAwLCAwMDAwMDAwMGRmMmZmZmZmXSAo
cmVzZXJ2ZWQpDQooWEVOKSAgWzAwMDAwMDAwZTAwMDAwMDAsIDAwMDAwMDAwZWZmZmZmZmZdIChy
ZXNlcnZlZCkNCihYRU4pICBbMDAwMDAwMDBmZWEwMDAwMCwgMDAwMDAwMDBmZWFmZmZmZl0gKHJl
c2VydmVkKQ0KKFhFTikgIFswMDAwMDAwMGZlYzAwMDAwLCAwMDAwMDAwMGZlYzAwZmZmXSAocmVz
ZXJ2ZWQpDQooWEVOKSAgWzAwMDAwMDAwZmVjMTAwMDAsIDAwMDAwMDAwZmVjMTBmZmZdIChyZXNl
cnZlZCkNCihYRU4pICBbMDAwMDAwMDBmZWMzMDAwMCwgMDAwMDAwMDBmZWMzMGZmZl0gKHJlc2Vy
dmVkKQ0KKFhFTikgIFswMDAwMDAwMGZlZDAwMDAwLCAwMDAwMDAwMGZlZDAwZmZmXSAocmVzZXJ2
ZWQpDQooWEVOKSAgWzAwMDAwMDAwZmVkNDAwMDAsIDAwMDAwMDAwZmVkNDRmZmZdIChyZXNlcnZl
ZCkNCihYRU4pICBbMDAwMDAwMDBmZWQ4MDAwMCwgMDAwMDAwMDBmZWQ4ZmZmZl0gKHJlc2VydmVk
KQ0KKFhFTikgIFswMDAwMDAwMGZmMDAwMDAwLCAwMDAwMDAwMGZmZmZmZmZmXSAocmVzZXJ2ZWQp
DQooWEVOKSAgWzAwMDAwMDQwM2RiYzAwMDAsIDAwMDAwMDQwM2ZmZmZmZmZdIChyZXNlcnZlZCkN
CihYRU4pIEVGSSBSQU0gbWFwOg0KKFhFTikgIFswMDAwMDAwMDAwMDAwMDAwLCAwMDAwMDAwMDAw
MDlmZmZmXSAodXNhYmxlKQ0KKFhFTikgIFswMDAwMDAwMDAwMGEwMDAwLCAwMDAwMDAwMDAwMGZm
ZmZmXSAocmVzZXJ2ZWQpDQooWEVOKSAgWzAwMDAwMDAwMDAxMDAwMDAsIDAwMDAwMDAwMDNmZmZm
ZmZdICh1c2FibGUpDQooWEVOKSAgWzAwMDAwMDAwMDQwMDAwMDAsIDAwMDAwMDAwMDQwNDVmZmZd
IChBQ1BJIE5WUykNCihYRU4pICBbMDAwMDAwMDAwNDA0NjAwMCwgMDAwMDAwMDAwOWFmZWZmZl0g
KHVzYWJsZSkNCihYRU4pICBbMDAwMDAwMDAwOWFmZjAwMCwgMDAwMDAwMDAwOWZmZmZmZl0gKHJl
c2VydmVkKQ0KKFhFTikgIFswMDAwMDAwMDBhMDAwMDAwLCAwMDAwMDAwMDBhZmZmZmZmXSAodXNh
YmxlKQ0KKFhFTikgIFswMDAwMDAwMDBiMDAwMDAwLCAwMDAwMDAwMDBiMDIwZmZmXSAocmVzZXJ2
ZWQpDQooWEVOKSAgWzAwMDAwMDAwMGIwMjEwMDAsIDAwMDAwMDAwYTA0ZThmZmZdICh1c2FibGUp
DQooWEVOKSAgWzAwMDAwMDAwYTA0ZTkwMDAsIDAwMDAwMDAwYTY0ZThmZmZdIChyZXNlcnZlZCkN
CihYRU4pICBbMDAwMDAwMDBhNjRlOTAwMCwgMDAwMDAwMDBhNzQ3ZWZmZl0gKEFDUEkgZGF0YSkN
CihYRU4pICBbMDAwMDAwMDBhNzQ3ZjAwMCwgMDAwMDAwMDBhOTQ3ZWZmZl0gKEFDUEkgTlZTKQ0K
KFhFTikgIFswMDAwMDAwMGE5NDdmMDAwLCAwMDAwMDAwMGFkZGZlZmZmXSAocmVzZXJ2ZWQpDQoo
WEVOKSAgWzAwMDAwMDAwYWRkZmYwMDAsIDAwMDAwMDAwYWZmZmFmZmZdICh1c2FibGUpDQooWEVO
KSAgWzAwMDAwMDAwYWZmZmIwMDAsIDAwMDAwMDAwYmZmZmZmZmZdIChyZXNlcnZlZCkNCihYRU4p
ICBbMDAwMDAwMDBkZjIwMDAwMCwgMDAwMDAwMDBkZjJmZmZmZl0gKHJlc2VydmVkKQ0KKFhFTikg
IFswMDAwMDAwMGUwMDAwMDAwLCAwMDAwMDAwMGVmZmZmZmZmXSAocmVzZXJ2ZWQpDQooWEVOKSAg
WzAwMDAwMDAwZmVhMDAwMDAsIDAwMDAwMDAwZmVhZmZmZmZdIChyZXNlcnZlZCkNCihYRU4pICBb
MDAwMDAwMDBmZWMwMDAwMCwgMDAwMDAwMDBmZWMwMGZmZl0gKHJlc2VydmVkKQ0KKFhFTikgIFsw
MDAwMDAwMGZlYzEwMDAwLCAwMDAwMDAwMGZlYzEwZmZmXSAocmVzZXJ2ZWQpDQooWEVOKSAgWzAw
MDAwMDAwZmVjMzAwMDAsIDAwMDAwMDAwZmVjMzBmZmZdIChyZXNlcnZlZCkNCihYRU4pICBbMDAw
MDAwMDBmZWQwMDAwMCwgMDAwMDAwMDBmZWQwMGZmZl0gKHJlc2VydmVkKQ0KKFhFTikgIFswMDAw
MDAwMGZlZDQwMDAwLCAwMDAwMDAwMGZlZDQ0ZmZmXSAocmVzZXJ2ZWQpDQooWEVOKSAgWzAwMDAw
MDAwZmVkODAwMDAsIDAwMDAwMDAwZmVkOGZmZmZdIChyZXNlcnZlZCkNCihYRU4pICBbMDAwMDAw
MDBmZjAwMDAwMCwgMDAwMDAwMDBmZmZmZmZmZl0gKHJlc2VydmVkKQ0KKFhFTikgIFswMDAwMDAw
MTAwMDAwMDAwLCAwMDAwMDA0MDNkYmJmZmZmXSAodXNhYmxlKQ0KKFhFTikgIFswMDAwMDA0MDNk
YmMwMDAwLCAwMDAwMDA0MDNmZmZmZmZmXSAocmVzZXJ2ZWQpDQooWEVOKSBBQ1BJOiBSU0RQIEE5
NDYzMDE0LCAwMDI0IChyMiBBTUQgICApDQooWEVOKSBBQ1BJOiBYU0RUIEE5NDYyNzI4LCAwMTFD
IChyMSBBTUQgICAgICBBIE0gSSAgICAgICAgIDEgQU1JICAgMTAwMDAxMykNCihYRU4pIEFDUEk6
IEZBQ1AgQTc0N0MwMDAsIDAxMTQgKHI2IEFNRCAgICAgIEEgTSBJICAgICAgICAgMSBBTUkgICAg
IDEwMDEzKQ0KKFhFTikgQUNQSTogRFNEVCBBNzQ2RTAwMCwgRDJGNiAocjIgQU1EICAgICAgQSBN
IEkgICAgICAgICAxIElOVEwgMjAyMzAzMzEpDQooWEVOKSBBQ1BJOiBGQUNTIEE5NDVBMDAwLCAw
MDQwDQooWEVOKSBBQ1BJOiBTU0RUIEE3NDdFMDAwLCAwOUNDIChyMiAgICBBTUQgQk9VTERFUkcg
ICAgICAgIDIgTVNGVCAgNDAwMDAwMCkNCihYRU4pIEFDUEk6IFNTRFQgQTc0N0QwMDAsIDAwNjcg
KHIyICAgIEFNRCAgIENQTURTTSAgICAgICAgMSBJTlRMIDIwMjMwMzMxKQ0KKFhFTikgQUNQSTog
RklEVCBBNzQ2RDAwMCwgMDA5QyAocjEgICAgQU1EICAgIEEgTSBJICAgICAgICAxIEFNSSAgICAg
MTAwMTMpDQooWEVOKSBBQ1BJOiBNQ0ZHIEE3NDZDMDAwLCAwMDNDIChyMSAgICBBTUQgICAgQSBN
IEkgICAgICAgIDEgTVNGVCAgICAxMDAxMykNCihYRU4pIEFDUEk6IFNTRFQgQTc0NkIwMDAsIDA1
QzUgKHIyICAgIEFNRCAgQ1BVU1NEVCAgICAgICAgMSBBTUkgICAgICAgICAxKQ0KKFhFTikgQUNQ
STogSFBFVCBBNzQ2QTAwMCwgMDAzOCAocjEgICAgQU1EICAgIEEgTSBJICAgICAgICAxIEFNSSAg
ICAgICAgIDUpDQooWEVOKSBBQ1BJOiBTU0RUIEE3NDY4MDAwLCAxQjUzIChyMiAgICBBTUQgICBD
UE1SQVMgICAgICAgIDEgSU5UTCAyMDIzMDMzMSkNCihYRU4pIEFDUEk6IEJFUlQgQTc0NjcwMDAs
IDAwMzAgKHIxIEFNRCAgICBBTUQgQkVSVCAgICAgICAgMSBBTUQgICAgICAgICAxKQ0KKFhFTikg
QUNQSTogRlBEVCBBNzQ2NTAwMCwgMDA0NCAocjEgQU1EICAgICAgQSBNIEkgICAxMDcyMDA5IEFN
SSAgIDEwMDAwMTMpDQooWEVOKSBBQ1BJOiBTU0RUIEE3NDYyMDAwLCAyNDQ4IChyMiAgICBBTUQg
R1BQX1BNRV8gICAgICAgIDEgSU5UTCAyMDIzMDMzMSkNCihYRU4pIEFDUEk6IFNTRFQgQTc0NUYw
MDAsIDI0NDggKHIyICAgIEFNRCBHUFBfUE1FXyAgICAgICAgMSBJTlRMIDIwMjMwMzMxKQ0KKFhF
TikgQUNQSTogU1NEVCBBNzQ1QzAwMCwgMjQ0OCAocjIgICAgQU1EIEdQUF9QTUVfICAgICAgICAx
IElOVEwgMjAyMzAzMzEpDQooWEVOKSBBQ1BJOiBTU0RUIEE3NDU5MDAwLCAyNDQ4IChyMiAgICBB
TUQgR1BQX1BNRV8gICAgICAgIDEgSU5UTCAyMDIzMDMzMSkNCihYRU4pIEFDUEk6IFZGQ1QgQTc0
NEEwMDAsIEU2ODQgKHIxIEFNRCAgICAgIEEgTSBJICAgICAgICAgMSAgQU1EIDMxNTA0RjQ3KQ0K
KFhFTikgQUNQSTogU1NEVCBBNzQzRTAwMCwgQTQwRSAocjIgICAgQU1EICBBTUQgQ1BVICAgICAg
ICAxIEFNRCAgICAgICAgIDEpDQooWEVOKSBBQ1BJOiBITUFUIEE3NDNEMDAwLCAwMEE0IChyMiAg
ICBBTUQgQW1kVGFibGUgICAgICAgIDEgQU1EICAgICAgICAgMSkNCihYRU4pIEFDUEk6IFdQQlQg
QTY4NEUwMDAsIDAwMzYgKHIxICAgIEFNRCAgICBBIE0gSSAgICAgICAgMSBNU0ZUICAgIDEwMDEz
KQ0KKFhFTikgQUNQSTogQkdSVCBBNzQ0OTAwMCwgMDAzOCAocjEgQU1EICAgICAgQSBNIEkgICAg
ICAgICAxIEFNSSAgICAgMTAwMTMpDQooWEVOKSBBQ1BJOiBJVlJTIEE2ODREMDAwLCAwMUU4IChy
MiAgQU1EICAgQW1kVGFibGUgICAgICAgIDEgQU1EICAgICAgICAgMSkNCihYRU4pIEFDUEk6IFNT
RFQgQTY4NEMwMDAsIDA2RDQgKHIyICAgIEFNRCAgQ1BNV0xSQyAgICAgICAgMSBJTlRMIDIwMjMw
MzMxKQ0KKFhFTikgQUNQSTogU1NEVCBBNjg0MjAwMCwgOTgyRiAocjIgICAgQU1EICAgQ1BNQ01O
ICAgICAgICAxIElOVEwgMjAyMzAzMzEpDQooWEVOKSBBQ1BJOiBXU01UIEE2ODQxMDAwLCAwMDI4
IChyMSBBTUQgICAgICBBIE0gSSAgICAgICAgIDEgQU1JICAgICAxMDAxMykNCihYRU4pIEFDUEk6
IEFQSUMgQTY4M0YwMDAsIDEwODggKHI2IEFNRCAgICAgIEEgTSBJICAgICAgICAgMSBBTUkgICAg
IDEwMDEzKQ0KKFhFTikgQUNQSTogU1NEVCBBNjgzQzAwMCwgMjM4NyAocjIgICAgQU1EIEFPRCAg
ICAgICAgICAgICAxIElOVEwgMjAyMzAzMzEpDQooWEVOKSBBQ1BJOiBTU0RUIEE2ODNCMDAwLCAw
NTAwIChyMiAgICBBTUQgTUVNVE9PTDAgICAgICAgIDIgSU5UTCAyMDIzMDMzMSkNCihYRU4pIEFD
UEk6IFNTRFQgQTY4M0EwMDAsIDA5NkEgKHIyICAgIEFNRCBDUE1NU09TQyAgICAgICAgMSBJTlRM
IDIwMjMwMzMxKQ0KKFhFTikgQUNQSTogU1NEVCBBNjgzOTAwMCwgMEI3MiAocjIgICAgQU1EIENQ
TUFDUFY2ICAgICAgICAxIElOVEwgMjAyMzAzMzEpDQooWEVOKSBBQ1BJOiBTU0RUIEE2ODM4MDAw
LCAwNDRFIChyMiAgICBBTUQgQW1kVGFibGUgICAgICAgIDEgSU5UTCAyMDIzMDMzMSkNCihYRU4p
IEFDUEk6IEVSU1QgQTY4MzcwMDAsIDAyMzAgKHIxICBBTUlFUiBBTUkuRVJTVCAgICAgICAgMCBB
TUkuICAgICAgICAwKQ0KKFhFTikgQUNQSTogSEVTVCBBNjgwNjAwMCwgMzBBMTQgKHIxIEFNRCAg
ICBBTUQgSEVTVCAgICAgICAgMSBBTUQgICAgICAgICAxKQ0KKFhFTikgU3lzdGVtIFJBTTogMjYx
NjI4TUIgKDI2NzkwNzk1NmtCKQ0KKFhFTikgTm8gTlVNQSBjb25maWd1cmF0aW9uIGZvdW5kDQoo
WEVOKSBGYWtpbmcgYSBub2RlIGF0IDAwMDAwMDAwMDAwMDAwMDAtMDAwMDAwNDAzZGJjMDAwMA0K
KFhFTikgRG9tYWluIGhlYXAgaW5pdGlhbGlzZWQNCihYRU4pIHZlc2FmYjogZnJhbWVidWZmZXIg
YXQgMHgwMDAwMDRkODAwMDAwMDAwLCBtYXBwZWQgdG8gMHhmZmZmODJjMDAwMjAxMDAwLCB1c2lu
ZyAxOTg0aywgdG90YWwgMTk4NGsNCihYRU4pIHZlc2FmYjogbW9kZSBpcyA4MDB4NjAweDMyLCBs
aW5lbGVuZ3RoPTMzMjgsIGZvbnQgOHg4DQooWEVOKSB2ZXNhZmI6IFRydWVjb2xvcjogc2l6ZT04
Ojg6ODo4LCBzaGlmdD0yNDoxNjo4OjANCihYRU4pIFNNQklPUyAzLjYgcHJlc2VudC4NCihYRU4p
IHgyQVBJQyBtb2RlIGlzIGFscmVhZHkgZW5hYmxlZCBieSBCSU9TLg0KKFhFTikgVXNpbmcgQVBJ
QyBkcml2ZXIgeDJhcGljX2NsdXN0ZXINCihYRU4pIEFDUEk6IFBNLVRpbWVyIElPIFBvcnQ6IDB4
ODA4ICgzMiBiaXRzKQ0KKFhFTikgQUNQSTogdjUgU0xFRVAgSU5GTzogY29udHJvbFswOjBdLCBz
dGF0dXNbMDowXQ0KKFhFTikgQUNQSTogU0xFRVAgSU5GTzogcG0xeF9jbnRbMTo4MDQsMTowXSwg
cG0xeF9ldnRbMTo4MDAsMTowXQ0KKFhFTikgQUNQSTogMzIvNjRYIEZBQ1MgYWRkcmVzcyBtaXNt
YXRjaCBpbiBGQURUIC0gYTk0NWEwMDAvMDAwMDAwMDAwMDAwMDAwMCwgdXNpbmcgMzINCihYRU4p
IEFDUEk6ICAgICAgICAgICAgIHdha2V1cF92ZWNbYTk0NWEwMGNdLCB2ZWNfc2l6ZVsyMF0NCihY
RU4pIEFDUEk6IExvY2FsIEFQSUMgYWRkcmVzcyAweGZlZTAwMDAwDQooWEVOKSBBQ1BJOiBJT0FQ
SUMgKGlkWzB4ODBdIGFkZHJlc3NbMHhmZWMwMDAwMF0gZ3NpX2Jhc2VbMF0pDQooWEVOKSBJT0FQ
SUNbMF06IGFwaWNfaWQgMTI4LCB2ZXJzaW9uIDMzLCBhZGRyZXNzIDB4ZmVjMDAwMDAsIEdTSSAw
LTIzDQooWEVOKSBBQ1BJOiBJT0FQSUMgKGlkWzB4ODFdIGFkZHJlc3NbMHhkZjE4MDAwMF0gZ3Np
X2Jhc2VbMTIwXSkNCihYRU4pIElPQVBJQ1sxXTogYXBpY19pZCAxMjksIHZlcnNpb24gMzMsIGFk
ZHJlc3MgMHhkZjE4MDAwMCwgR1NJIDEyMC0xNTENCihYRU4pIEFDUEk6IElPQVBJQyAoaWRbMHg4
Ml0gYWRkcmVzc1sweGQzMTgwMDAwXSBnc2lfYmFzZVs4OF0pDQooWEVOKSBJT0FQSUNbMl06IGFw
aWNfaWQgMTMwLCB2ZXJzaW9uIDMzLCBhZGRyZXNzIDB4ZDMxODAwMDAsIEdTSSA4OC0xMTkNCihY
RU4pIEFDUEk6IElPQVBJQyAoaWRbMHg4M10gYWRkcmVzc1sweGY3MTgwMDAwXSBnc2lfYmFzZVsy
NF0pDQooWEVOKSBJT0FQSUNbM106IGFwaWNfaWQgMTMxLCB2ZXJzaW9uIDMzLCBhZGRyZXNzIDB4
ZjcxODAwMDAsIEdTSSAyNC01NQ0KKFhFTikgQUNQSTogSU9BUElDIChpZFsweDg0XSBhZGRyZXNz
WzB4YzkxODAwMDBdIGdzaV9iYXNlWzU2XSkNCihYRU4pIElPQVBJQ1s0XTogYXBpY19pZCAxMzIs
IHZlcnNpb24gMzMsIGFkZHJlc3MgMHhjOTE4MDAwMCwgR1NJIDU2LTg3DQooWEVOKSBBQ1BJOiBJ
TlRfU1JDX09WUiAoYnVzIDAgYnVzX2lycSAwIGdsb2JhbF9pcnEgMiBkZmwgZGZsKQ0KKFhFTikg
QUNQSTogSU5UX1NSQ19PVlIgKGJ1cyAwIGJ1c19pcnEgOSBnbG9iYWxfaXJxIDkgbG93IGxldmVs
KQ0KKFhFTikgQUNQSTogSVJRMCB1c2VkIGJ5IG92ZXJyaWRlLg0KKFhFTikgQUNQSTogSVJRMiB1
c2VkIGJ5IG92ZXJyaWRlLg0KKFhFTikgQUNQSTogSVJROSB1c2VkIGJ5IG92ZXJyaWRlLg0KKFhF
TikgQUNQSTogSFBFVCBpZDogMHgxMDIyODIwMSBiYXNlOiAweGZlZDAwMDAwDQooWEVOKSBQQ0k6
IE1DRkcgY29uZmlndXJhdGlvbiAwOiBiYXNlIGUwMDAwMDAwIHNlZ21lbnQgMDAwMCBidXNlcyAw
MCAtIGZmDQooWEVOKSBQQ0k6IE1DRkcgYXJlYSBhdCBlMDAwMDAwMCByZXNlcnZlZCBpbiBFODIw
DQooWEVOKSBQQ0k6IFVzaW5nIE1DRkcgZm9yIHNlZ21lbnQgMDAwMCBidXMgMDAtZmYNCihYRU4p
IFhlbiBFUlNUIHN1cHBvcnQgaXMgaW5pdGlhbGl6ZWQuDQooWEVOKSBIRVNUOiBUYWJsZSBwYXJz
aW5nIGhhcyBiZWVuIGluaXRpYWxpemVkDQooWEVOKSBBQ1BJOiBCR1JUOiBpbnZhbGlkYXRpbmcg
djEgaW1hZ2UgYXQgMHg5YjBkMDAxOA0KKFhFTikgVXNpbmcgQUNQSSAoTUFEVCkgZm9yIFNNUCBj
b25maWd1cmF0aW9uIGluZm9ybWF0aW9uDQooWEVOKSBTTVA6IEFsbG93aW5nIDQ4IENQVXMgKDAg
aG90cGx1ZyBDUFVzKQ0KKFhFTikgSVJRIGxpbWl0czogMTUyIEdTSSwgOTgzMiBNU0kvTVNJLVgN
CihYRU4pIEFNRC1WaTogSU9NTVUgRXh0ZW5kZWQgRmVhdHVyZXM6DQooWEVOKSAtIFBlcmlwaGVy
YWwgUGFnZSBTZXJ2aWNlIFJlcXVlc3QNCihYRU4pIC0geDJBUElDDQooWEVOKSAtIE5YIGJpdA0K
KFhFTikgLSBHdWVzdCBBUElDIFBoeXNpY2FsIFByb2Nlc3NvciBJbnRlcnJ1cHQNCihYRU4pIC0g
SW52YWxpZGF0ZSBBbGwgQ29tbWFuZA0KKFhFTikgLSBHdWVzdCBBUElDDQooWEVOKSAtIFBlcmZv
cm1hbmNlIENvdW50ZXJzDQooWEVOKSAtIEhvc3QgQWRkcmVzcyBUcmFuc2xhdGlvbiBTaXplOiAw
eDINCihYRU4pIC0gR3Vlc3QgQWRkcmVzcyBUcmFuc2xhdGlvbiBTaXplOiAweDENCihYRU4pIC0g
R3Vlc3QgQ1IzIFJvb3QgVGFibGUgTGV2ZWw6IDB4MQ0KKFhFTikgLSBNYXhpbXVtIFBBU0lEOiAw
eGYNCihYRU4pIC0gU01JIEZpbHRlciBSZWdpc3RlcjogMHgxDQooWEVOKSAtIFNNSSBGaWx0ZXIg
UmVnaXN0ZXIgQ291bnQ6IDB4Mg0KKFhFTikgLSBHdWVzdCBWaXJ0dWFsIEFQSUMgTW9kZXM6IDB4
MQ0KKFhFTikgLSBEdWFsIFBQUiBMb2c6IDB4Mg0KKFhFTikgLSBEdWFsIEV2ZW50IExvZzogMHgy
DQooWEVOKSAtIFNlY3VyZSBBVFMNCihYRU4pIC0gVXNlciAvIFN1cGVydmlzb3IgUGFnZSBQcm90
ZWN0aW9uDQooWEVOKSAtIERldmljZSBUYWJsZSBTZWdtZW50YXRpb246IDANCihYRU4pIC0gUFBS
IExvZyBPdmVyZmxvdyBFYXJseSBXYXJuaW5nDQooWEVOKSAtIFBQUiBBdXRvbWF0aWMgUmVzcG9u
c2UNCihYRU4pIC0gTWVtb3J5IEFjY2VzcyBSb3V0aW5nIGFuZCBDb250cm9sOiAwDQooWEVOKSAt
IEJsb2NrIFN0b3BNYXJrIE1lc3NhZ2UNCihYRU4pIC0gUGVyZm9ybWFuY2UgT3B0aW1pemF0aW9u
DQooWEVOKSAtIE1TSSBDYXBhYmlsaXR5IE1NSU8gQWNjZXNzDQooWEVOKSAtIEd1ZXN0IEkvTyBQ
cm90ZWN0aW9uDQooWEVOKSAtIEhvc3QgQWNjZXNzDQooWEVOKSAtIEVuaGFuY2VkIFBQUiBIYW5k
bGluZw0KKFhFTikgLSBBdHRyaWJ1dGUgRm9yd2FyZA0KKFhFTikgLSBIb3N0IERpcnR5DQooWEVO
KSAtIFZpcnR1YWxpemVkIElPTU1VDQooWEVOKSAtIFZNR3VhcmQgSS9PIFN1cHBvcnQNCihYRU4p
IC0gVk0gVGFibGUgU2l6ZTogMHgyDQooWEVOKSAtIEd1ZXN0IEFjY2VzcyBCaXQgVXBkYXRlIERp
c2FibGUNCihYRU4pIEFNRC1WaTogRGlzYWJsZWQgSEFQIG1lbW9yeSBtYXAgc2hhcmluZyB3aXRo
IElPTU1VDQooWEVOKSBBTUQtVmk6IElPTU1VIDAgRW5hYmxlZC4NCihYRU4pIEFNRC1WaTogSU9N
TVUgMSBFbmFibGVkLg0KKFhFTikgQU1ELVZpOiBJT01NVSAyIEVuYWJsZWQuDQooWEVOKSBBTUQt
Vmk6IElPTU1VIDMgRW5hYmxlZC4NCihYRU4pIENQVTA6IDE1MDAgLi4uIDQyMDAgTUh6DQooWEVO
KSB4c3RhdGU6IHNpemU6IDB4OTg4IGFuZCBzdGF0ZXM6IDB4MmU3DQooWEVOKSBDUFUwOiBBTUQg
RmFtMTloIG1hY2hpbmUgY2hlY2sgcmVwb3J0aW5nIGVuYWJsZWQNCihYRU4pIFNwZWN1bGF0aXZl
IG1pdGlnYXRpb24gZmFjaWxpdGllczoNCihYRU4pICAgSGFyZHdhcmUgaGludHM6IFNUSUJQX0FM
V0FZUyBJQlJTX0ZBU1QgSUJSU19TQU1FX01PREUgQlRDX05PIElCUEJfUkVUDQooWEVOKSAgIEhh
cmR3YXJlIGZlYXR1cmVzOiBJQlBCIElCUlMgU1RJQlAgU1NCRCBQU0ZEIEwxRF9GTFVTSA0KKFhF
TikgICBDb21waWxlZC1pbiBzdXBwb3J0OiBJTkRJUkVDVF9USFVOSyBTSEFET1dfUEFHSU5HDQoo
WEVOKSAgIFhlbiBzZXR0aW5nczogQlRJLVRodW5rIEpNUCwgU1BFQ19DVFJMOiBJQlJTKyBTVElC
UCsgU1NCRC0gUFNGRC0sIE90aGVyOiBCUkFOQ0hfSEFSREVODQooWEVOKSAgIFN1cHBvcnQgZm9y
IEhWTSBWTXM6IE1TUl9TUEVDX0NUUkwgTVNSX1ZJUlRfU1BFQ19DVFJMIFJTQiBJQlBCLWVudHJ5
DQooWEVOKSAgIFN1cHBvcnQgZm9yIFBWIFZNczogSUJQQi1lbnRyeQ0KKFhFTikgICBYUFRJICg2
NC1iaXQgUFYgb25seSk6IERvbTAgZGlzYWJsZWQsIERvbVUgZGlzYWJsZWQgKHdpdGggUENJRCkN
CihYRU4pICAgUFYgTDFURiBzaGFkb3dpbmc6IERvbTAgZGlzYWJsZWQsIERvbVUgZGlzYWJsZWQN
CihYRU4pIFVzaW5nIHNjaGVkdWxlcjogU01QIENyZWRpdCBTY2hlZHVsZXIgcmV2MiAoY3JlZGl0
MikNCihYRU4pIEluaXRpYWxpemluZyBDcmVkaXQyIHNjaGVkdWxlcg0KKFhFTikgIGxvYWRfcHJl
Y2lzaW9uX3NoaWZ0OiAxOA0KKFhFTikgIGxvYWRfd2luZG93X3NoaWZ0OiAzMA0KKFhFTikgIHVu
ZGVybG9hZF9iYWxhbmNlX3RvbGVyYW5jZTogMA0KKFhFTikgIG92ZXJsb2FkX2JhbGFuY2VfdG9s
ZXJhbmNlOiAtMw0KKFhFTikgIHJ1bnF1ZXVlcyBhcnJhbmdlbWVudDogc29ja2V0DQooWEVOKSAg
Y2FwIGVuZm9yY2VtZW50IGdyYW51bGFyaXR5OiAxMG1zDQooWEVOKSBsb2FkIHRyYWNraW5nIHdp
bmRvdyBsZW5ndGggMTA3Mzc0MTgyNCBucw0KKFhFTikgUGxhdGZvcm0gdGltZXIgaXMgMTQuMzE4
TUh6IEhQRVQNCihYRU4pIERldGVjdGVkIDQxOTkuOTYzIE1IeiBwcm9jZXNzb3IuDQooWEVOKSBF
RkkgbWVtb3J5IG1hcDoNCihYRU4pICAwMDAwMDAwMDAwMDAwLTAwMDAwMDAwOWNmZmYgdHlwZT03
IGF0dHI9MDAwMDAwMDAwMDAwMDAwZg0KKFhFTikgIDAwMDAwMDAwOWQwMDAtMDAwMDAwMDA5ZWZm
ZiB0eXBlPTIgYXR0cj0wMDAwMDAwMDAwMDAwMDBmDQooWEVOKSAgMDAwMDAwMDA5ZjAwMC0wMDAw
MDAwMDlmZmZmIHR5cGU9NCBhdHRyPTAwMDAwMDAwMDAwMDAwMGYNCihYRU4pICAwMDAwMDAwMTAw
MDAwLTAwMDAwMDNmZmZmZmYgdHlwZT03IGF0dHI9MDAwMDAwMDAwMDAwMDAwZg0KKFhFTikgIDAw
MDAwMDQwMDAwMDAtMDAwMDAwNDA0NWZmZiB0eXBlPTEwIGF0dHI9MDAwMDAwMDAwMDAwMDAwZg0K
KFhFTikgIDAwMDAwMDQwNDYwMDAtMDAwMDAwOWFmZWZmZiB0eXBlPTcgYXR0cj0wMDAwMDAwMDAw
MDAwMDBmDQooWEVOKSAgMDAwMDAwOWFmZjAwMC0wMDAwMDA5ZmZmZmZmIHR5cGU9MCBhdHRyPTAw
MDAwMDAwMDAwMDAwMGYNCihYRU4pICAwMDAwMDBhMDAwMDAwLTAwMDAwMGEyZmZmZmYgdHlwZT00
IGF0dHI9MDAwMDAwMDAwMDAwMDAwZg0KKFhFTikgIDAwMDAwMGEzMDAwMDAtMDAwMDAwYWZmZmZm
ZiB0eXBlPTcgYXR0cj0wMDAwMDAwMDAwMDAwMDBmDQooWEVOKSAgMDAwMDAwYjAwMDAwMC0wMDAw
MDBiMDIwZmZmIHR5cGU9MCBhdHRyPTAwMDAwMDAwMDAwMDAwMGYNCihYRU4pICAwMDAwMDBiMDIx
MDAwLTAwMDAwOTFjYThmZmYgdHlwZT03IGF0dHI9MDAwMDAwMDAwMDAwMDAwZg0KKFhFTikgIDAw
MDAwOTFjYTkwMDAtMDAwMDA5NDFmZmZmZiB0eXBlPTIgYXR0cj0wMDAwMDAwMDAwMDAwMDBmDQoo
WEVOKSAgMDAwMDA5NDIwMDAwMC0wMDAwMDk1MWZmZmZmIHR5cGU9MSBhdHRyPTAwMDAwMDAwMDAw
MDAwMGYNCihYRU4pICAwMDAwMDk1MjAwMDAwLTAwMDAwOTUzZWFmZmYgdHlwZT03IGF0dHI9MDAw
MDAwMDAwMDAwMDAwZg0KKFhFTikgIDAwMDAwOTUzZWIwMDAtMDAwMDA5NTNmNGZmZiB0eXBlPTQg
YXR0cj0wMDAwMDAwMDAwMDAwMDBmDQooWEVOKSAgMDAwMDA5NTNmNTAwMC0wMDAwMDk1M2ZlZmZm
IHR5cGU9NyBhdHRyPTAwMDAwMDAwMDAwMDAwMGYNCihYRU4pICAwMDAwMDk1M2ZmMDAwLTAwMDAw
OTU0MDhmZmYgdHlwZT00IGF0dHI9MDAwMDAwMDAwMDAwMDAwZg0KKFhFTikgIDAwMDAwOTU0MDkw
MDAtMDAwMDA5NTU0NWZmZiB0eXBlPTcgYXR0cj0wMDAwMDAwMDAwMDAwMDBmDQooWEVOKSAgMDAw
MDA5NTU0NjAwMC0wMDAwMDk1ZDBhZmZmIHR5cGU9MiBhdHRyPTAwMDAwMDAwMDAwMDAwMGYNCihY
RU4pICAwMDAwMDk1ZDBiMDAwLTAwMDAwOTVkMGNmZmYgdHlwZT03IGF0dHI9MDAwMDAwMDAwMDAw
MDAwZg0KKFhFTikgIDAwMDAwOTVkMGQwMDAtMDAwMDA5NzRmMmZmZiB0eXBlPTQgYXR0cj0wMDAw
MDAwMDAwMDAwMDBmDQooWEVOKSAgMDAwMDA5NzRmMzAwMC0wMDAwMDk3NTA0ZmZmIHR5cGU9NyBh
dHRyPTAwMDAwMDAwMDAwMDAwMGYNCihYRU4pICAwMDAwMDk3NTA1MDAwLTAwMDAwOTc1MDVmZmYg
dHlwZT00IGF0dHI9MDAwMDAwMDAwMDAwMDAwZg0KKFhFTikgIDAwMDAwOTc1MDYwMDAtMDAwMDA5
NzUxNWZmZiB0eXBlPTcgYXR0cj0wMDAwMDAwMDAwMDAwMDBmDQooWEVOKSAgMDAwMDA5NzUxNjAw
MC0wMDAwMDk3NTJjZmZmIHR5cGU9NCBhdHRyPTAwMDAwMDAwMDAwMDAwMGYNCihYRU4pICAwMDAw
MDk3NTJkMDAwLTAwMDAwOTc1MmZmZmYgdHlwZT03IGF0dHI9MDAwMDAwMDAwMDAwMDAwZg0KKFhF
TikgIDAwMDAwOTc1MzAwMDAtMDAwMDA5NzU1MWZmZiB0eXBlPTQgYXR0cj0wMDAwMDAwMDAwMDAw
MDBmDQooWEVOKSAgMDAwMDA5NzU1MjAwMC0wMDAwMDk3NWQxZmZmIHR5cGU9NyBhdHRyPTAwMDAw
MDAwMDAwMDAwMGYNCihYRU4pICAwMDAwMDk3NWQyMDAwLTAwMDAwOTc2NWJmZmYgdHlwZT00IGF0
dHI9MDAwMDAwMDAwMDAwMDAwZg0KKFhFTikgIDAwMDAwOTc2NWMwMDAtMDAwMDA5NzY2MmZmZiB0
eXBlPTcgYXR0cj0wMDAwMDAwMDAwMDAwMDBmDQooWEVOKSAgMDAwMDA5NzY2MzAwMC0wMDAwMDk3
NmFiZmZmIHR5cGU9NCBhdHRyPTAwMDAwMDAwMDAwMDAwMGYNCihYRU4pICAwMDAwMDk3NmFjMDAw
LTAwMDAwOTdlOWNmZmYgdHlwZT03IGF0dHI9MDAwMDAwMDAwMDAwMDAwZg0KKFhFTikgIDAwMDAw
OTdlOWQwMDAtMDAwMDA5N2U5ZWZmZiB0eXBlPTQgYXR0cj0wMDAwMDAwMDAwMDAwMDBmDQooWEVO
KSAgMDAwMDA5N2U5ZjAwMC0wMDAwMDk3ZjZkZmZmIHR5cGU9NyBhdHRyPTAwMDAwMDAwMDAwMDAw
MGYNCihYRU4pICAwMDAwMDk3ZjZlMDAwLTAwMDAwOWIxZGJmZmYgdHlwZT00IGF0dHI9MDAwMDAw
MDAwMDAwMDAwZg0KKFhFTikgIDAwMDAwOWIxZGMwMDAtMDAwMDA5YjFkZWZmZiB0eXBlPTcgYXR0
cj0wMDAwMDAwMDAwMDAwMDBmDQooWEVOKSAgMDAwMDA5YjFkZjAwMC0wMDAwMDllNGU4ZmZmIHR5
cGU9NCBhdHRyPTAwMDAwMDAwMDAwMDAwMGYNCihYRU4pICAwMDAwMDllNGU5MDAwLTAwMDAwOWZk
NzZmZmYgdHlwZT03IGF0dHI9MDAwMDAwMDAwMDAwMDAwZg0KKFhFTikgIDAwMDAwOWZkNzcwMDAt
MDAwMDBhMDRlOGZmZiB0eXBlPTMgYXR0cj0wMDAwMDAwMDAwMDAwMDBmDQooWEVOKSAgMDAwMDBh
MDRlOTAwMC0wMDAwMGE2NGU4ZmZmIHR5cGU9MCBhdHRyPTAwMDAwMDAwMDAwMDAwMGYNCihYRU4p
ICAwMDAwMGE2NGU5MDAwLTAwMDAwYTc0N2VmZmYgdHlwZT05IGF0dHI9MDAwMDAwMDAwMDAwMDAw
Zg0KKFhFTikgIDAwMDAwYTc0N2YwMDAtMDAwMDBhOTQ3ZWZmZiB0eXBlPTEwIGF0dHI9MDAwMDAw
MDAwMDAwMDAwZg0KKFhFTikgIDAwMDAwYTk0N2YwMDAtMDAwMDBhZGM3ZWZmZiB0eXBlPTYgYXR0
cj04MDAwMDAwMDAwMDAwMDBmDQooWEVOKSAgMDAwMDBhZGM3ZjAwMC0wMDAwMGFkZGZlZmZmIHR5
cGU9NSBhdHRyPTgwMDAwMDAwMDAwMDAwMGYNCihYRU4pICAwMDAwMGFkZGZmMDAwLTAwMDAwYWRm
ZmZmZmYgdHlwZT00IGF0dHI9MDAwMDAwMDAwMDAwMDAwZg0KKFhFTikgIDAwMDAwYWUwMDAwMDAt
MDAwMDBhZTEzYWZmZiB0eXBlPTcgYXR0cj0wMDAwMDAwMDAwMDAwMDBmDQooWEVOKSAgMDAwMDBh
ZTEzYjAwMC0wMDAwMGFlMjNhZmZmIHR5cGU9NCBhdHRyPTAwMDAwMDAwMDAwMDAwMGYNCihYRU4p
ICAwMDAwMGFlMjNiMDAwLTAwMDAwYWUyNWJmZmYgdHlwZT0zIGF0dHI9MDAwMDAwMDAwMDAwMDAw
Zg0KKFhFTikgIDAwMDAwYWUyNWMwMDAtMDAwMDBhZjc2NWZmZiB0eXBlPTQgYXR0cj0wMDAwMDAw
MDAwMDAwMDBmDQooWEVOKSAgMDAwMDBhZjc2NjAwMC0wMDAwMGFmNzgyZmZmIHR5cGU9MyBhdHRy
PTAwMDAwMDAwMDAwMDAwMGYNCihYRU4pICAwMDAwMGFmNzgzMDAwLTAwMDAwYWY3OWJmZmYgdHlw
ZT00IGF0dHI9MDAwMDAwMDAwMDAwMDAwZg0KKFhFTikgIDAwMDAwYWY3OWMwMDAtMDAwMDBhZjc5
ZmZmZiB0eXBlPTMgYXR0cj0wMDAwMDAwMDAwMDAwMDBmDQooWEVOKSAgMDAwMDBhZjdhMDAwMC0w
MDAwMGFmN2IzZmZmIHR5cGU9NCBhdHRyPTAwMDAwMDAwMDAwMDAwMGYNCihYRU4pICAwMDAwMGFm
N2I0MDAwLTAwMDAwYWY3ZGNmZmYgdHlwZT0zIGF0dHI9MDAwMDAwMDAwMDAwMDAwZg0KKFhFTikg
IDAwMDAwYWY3ZGQwMDAtMDAwMDBhZmZmM2ZmZiB0eXBlPTQgYXR0cj0wMDAwMDAwMDAwMDAwMDBm
DQooWEVOKSAgMDAwMDBhZmZmNDAwMC0wMDAwMGFmZmZhZmZmIHR5cGU9MyBhdHRyPTAwMDAwMDAw
MDAwMDAwMGYNCihYRU4pICAwMDAwMGFmZmZiMDAwLTAwMDAwYWZmZmZmZmYgdHlwZT02IGF0dHI9
ODAwMDAwMDAwMDAwMDAwZg0KKFhFTikgIDAwMDAxMDAwMDAwMDAtMDAwNDAzZGJiZmZmZiB0eXBl
PTcgYXR0cj0wMDAwMDAwMDAwMDAwMDBmDQooWEVOKSAgMDAwMDAwMDBhMDAwMC0wMDAwMDAwMGZm
ZmZmIHR5cGU9MCBhdHRyPTAwMDAwMDAwMDAwMDAwMGYNCihYRU4pICAwMDAwMGIwMDAwMDAwLTAw
MDAwYmZmZmZmZmYgdHlwZT0wIGF0dHI9MDAwMDAwMDAwMDAwMDAwZg0KKFhFTikgIDAwMDAwZGYy
MDAwMDAtMDAwMDBkZjJmZmZmZiB0eXBlPTExIGF0dHI9ODAwMDAwMDAwMDAwMDAwMQ0KKFhFTikg
IDAwMDAwZTAwMDAwMDAtMDAwMDBlZmZmZmZmZiB0eXBlPTExIGF0dHI9ODAwMDAwMDAwMDAwMTAw
ZA0KKFhFTikgIDAwMDAwZmVhMDAwMDAtMDAwMDBmZWFmZmZmZiB0eXBlPTExIGF0dHI9ODAwMDAw
MDAwMDAwMDAwMQ0KKFhFTikgIDAwMDAwZmVjMDAwMDAtMDAwMDBmZWMwMGZmZiB0eXBlPTExIGF0
dHI9ODAwMDAwMDAwMDAwMDAwMQ0KKFhFTikgIDAwMDAwZmVjMTAwMDAtMDAwMDBmZWMxMGZmZiB0
eXBlPTExIGF0dHI9ODAwMDAwMDAwMDAwMDAwMQ0KKFhFTikgIDAwMDAwZmVjMzAwMDAtMDAwMDBm
ZWMzMGZmZiB0eXBlPTExIGF0dHI9ODAwMDAwMDAwMDAwMDAwMQ0KKFhFTikgIDAwMDAwZmVkMDAw
MDAtMDAwMDBmZWQwMGZmZiB0eXBlPTExIGF0dHI9ODAwMDAwMDAwMDAwMDAwMQ0KKFhFTikgIDAw
MDAwZmVkNDAwMDAtMDAwMDBmZWQ0NGZmZiB0eXBlPTExIGF0dHI9ODAwMDAwMDAwMDAwMDAwMQ0K
KFhFTikgIDAwMDAwZmVkODAwMDAtMDAwMDBmZWQ4ZmZmZiB0eXBlPTExIGF0dHI9ODAwMDAwMDAw
MDAwMDAwMQ0KKFhFTikgIDAwMDAwZmYwMDAwMDAtMDAwMDBmZmZmZmZmZiB0eXBlPTExIGF0dHI9
ODAwMDAwMDAwMDAwMDAwMQ0KKFhFTikgIDAwMDQwM2RiYzAwMDAtMDAwNDAzZmZmZmZmZiB0eXBl
PTAgYXR0cj0wMDAwMDAwMDAwMDAwMDBmDQooWEVOKSBhbHQgdGFibGUgZmZmZjgyZDA0MDY5MzFk
MCAtPiBmZmZmODJkMDQwNjlmMWZjDQooWEVOKSBJL08gdmlydHVhbGlzYXRpb24gZW5hYmxlZA0K
KFhFTikgIC0gRG9tMCBtb2RlOiBSZWxheGVkDQooWEVOKSBJbnRlcnJ1cHQgcmVtYXBwaW5nIGVu
YWJsZWQNCihYRU4pIG5yX3NvY2tldHM6IDENCihYRU4pIEVuYWJsZWQgZGlyZWN0ZWQgRU9JIHdp
dGggaW9hcGljX2Fja19vbGQgb24hDQooWEVOKSBFbmFibGluZyBBUElDIG1vZGU6ICBDbHVzdGVy
ZWQuICBVc2luZyA1IEkvTyBBUElDcw0KKFhFTikgRU5BQkxJTkcgSU8tQVBJQyBJUlFzDQooWEVO
KSAgLT4gVXNpbmcgb2xkIEFDSyBtZXRob2QNCihYRU4pIC4uVElNRVI6IHZlY3Rvcj0weEYwIGFw
aWMxPTAgcGluMT0yIGFwaWMyPS0xIHBpbjI9LTENCihYRU4pIERlZmF1bHRpbmcgdG8gYWx0ZXJu
YXRpdmUga2V5IGhhbmRsaW5nOyBzZW5kICdBJyB0byBzd2l0Y2ggdG8gbm9ybWFsIG1vZGUuDQoo
WEVOKSBBbGxvY2F0ZWQgY29uc29sZSByaW5nIG9mIDUxMiBLaUIuDQooWEVOKSBtd2FpdC1pZGxl
OiBkb2VzIG5vdCBydW4gb24gZmFtaWx5IDI1IG1vZGVsIDI0DQooWEVOKSBIVk06IEFTSURzIGVu
YWJsZWQuDQooWEVOKSBTVk06IFN1cHBvcnRlZCBhZHZhbmNlZCBmZWF0dXJlczoNCihYRU4pICAt
IE5lc3RlZCBQYWdlIFRhYmxlcyAoTlBUKQ0KKFhFTikgIC0gTGFzdCBCcmFuY2ggUmVjb3JkIChM
QlIpIFZpcnR1YWxpc2F0aW9uDQooWEVOKSAgLSBOZXh0LVJJUCBTYXZlZCBvbiAjVk1FWElUDQoo
WEVOKSAgLSBWTUNCIENsZWFuIEJpdHMNCihYRU4pICAtIERlY29kZUFzc2lzdHMNCihYRU4pICAt
IFZpcnR1YWwgVk1MT0FEL1ZNU0FWRQ0KKFhFTikgIC0gVmlydHVhbCBHSUYNCihYRU4pICAtIFBh
dXNlLUludGVyY2VwdCBGaWx0ZXINCihYRU4pICAtIFBhdXNlLUludGVyY2VwdCBGaWx0ZXIgVGhy
ZXNob2xkDQooWEVOKSAgLSBUU0MgUmF0ZSBNU1INCihYRU4pICAtIE5QVCBTdXBlcnZpc29yIFNo
YWRvdyBTdGFjaw0KKFhFTikgIC0gTVNSX1NQRUNfQ1RSTCB2aXJ0dWFsaXNhdGlvbg0KKFhFTikg
SFZNOiBTVk0gZW5hYmxlZA0KKFhFTikgSFZNOiBIYXJkd2FyZSBBc3Npc3RlZCBQYWdpbmcgKEhB
UCkgZGV0ZWN0ZWQNCihYRU4pIEhWTTogSEFQIHBhZ2Ugc2l6ZXM6IDRrQiwgMk1CLCAxR0INCihY
RU4pIGFsdCB0YWJsZSBmZmZmODJkMDQwNjkzMWQwIC0+IGZmZmY4MmQwNDA2OWYxZmMNCihYRU4p
IEJyb3VnaHQgdXAgNDggQ1BVcw0KKFhFTikgU2NoZWR1bGluZyBncmFudWxhcml0eTogY3B1LCAx
IENQVSBwZXIgc2NoZWQtcmVzb3VyY2UNCihYRU4pIEluaXRpYWxpemluZyBDcmVkaXQyIHNjaGVk
dWxlcg0KKFhFTikgIGxvYWRfcHJlY2lzaW9uX3NoaWZ0OiAxOA0KKFhFTikgIGxvYWRfd2luZG93
X3NoaWZ0OiAzMA0KKFhFTikgIHVuZGVybG9hZF9iYWxhbmNlX3RvbGVyYW5jZTogMA0KKFhFTikg
IG92ZXJsb2FkX2JhbGFuY2VfdG9sZXJhbmNlOiAtMw0KKFhFTikgIHJ1bnF1ZXVlcyBhcnJhbmdl
bWVudDogc29ja2V0DQooWEVOKSAgY2FwIGVuZm9yY2VtZW50IGdyYW51bGFyaXR5OiAxMG1zDQoo
WEVOKSBsb2FkIHRyYWNraW5nIHdpbmRvdyBsZW5ndGggMTA3Mzc0MTgyNCBucw0KKFhFTikgQWRk
aW5nIGNwdSAwIHRvIHJ1bnF1ZXVlIDANCihYRU4pICBGaXJzdCBjcHUgb24gcnVucXVldWUsIGFj
dGl2YXRpbmcNCihYRU4pIEFkZGluZyBjcHUgMSB0byBydW5xdWV1ZSAwDQooWEVOKSBBZGRpbmcg
Y3B1IDIgdG8gcnVucXVldWUgMA0KKFhFTikgQWRkaW5nIGNwdSAzIHRvIHJ1bnF1ZXVlIDANCihY
RU4pIEFkZGluZyBjcHUgNCB0byBydW5xdWV1ZSAwDQooWEVOKSBBZGRpbmcgY3B1IDUgdG8gcnVu
cXVldWUgMA0KKFhFTikgQWRkaW5nIGNwdSA2IHRvIHJ1bnF1ZXVlIDANCihYRU4pIEFkZGluZyBj
cHUgNyB0byBydW5xdWV1ZSAwDQooWEVOKSBBZGRpbmcgY3B1IDggdG8gcnVucXVldWUgMA0KKFhF
TikgQWRkaW5nIGNwdSA5IHRvIHJ1bnF1ZXVlIDANCihYRU4pIEFkZGluZyBjcHUgMTAgdG8gcnVu
cXVldWUgMA0KKFhFTikgQWRkaW5nIGNwdSAxMSB0byBydW5xdWV1ZSAwDQooWEVOKSBBZGRpbmcg
Y3B1IDEyIHRvIHJ1bnF1ZXVlIDANCihYRU4pIEFkZGluZyBjcHUgMTMgdG8gcnVucXVldWUgMA0K
KFhFTikgQWRkaW5nIGNwdSAxNCB0byBydW5xdWV1ZSAwDQooWEVOKSBBZGRpbmcgY3B1IDE1IHRv
IHJ1bnF1ZXVlIDANCihYRU4pIEFkZGluZyBjcHUgMTYgdG8gcnVucXVldWUgMQ0KKFhFTikgIEZp
cnN0IGNwdSBvbiBydW5xdWV1ZSwgYWN0aXZhdGluZw0KKFhFTikgQWRkaW5nIGNwdSAxNyB0byBy
dW5xdWV1ZSAxDQooWEVOKSBBZGRpbmcgY3B1IDE4IHRvIHJ1bnF1ZXVlIDENCihYRU4pIEFkZGlu
ZyBjcHUgMTkgdG8gcnVucXVldWUgMQ0KKFhFTikgQWRkaW5nIGNwdSAyMCB0byBydW5xdWV1ZSAx
DQooWEVOKSBBZGRpbmcgY3B1IDIxIHRvIHJ1bnF1ZXVlIDENCihYRU4pIEFkZGluZyBjcHUgMjIg
dG8gcnVucXVldWUgMQ0KKFhFTikgQWRkaW5nIGNwdSAyMyB0byBydW5xdWV1ZSAxDQooWEVOKSBB
ZGRpbmcgY3B1IDI0IHRvIHJ1bnF1ZXVlIDENCihYRU4pIEFkZGluZyBjcHUgMjUgdG8gcnVucXVl
dWUgMQ0KKFhFTikgQWRkaW5nIGNwdSAyNiB0byBydW5xdWV1ZSAxDQooWEVOKSBBZGRpbmcgY3B1
IDI3IHRvIHJ1bnF1ZXVlIDENCihYRU4pIEFkZGluZyBjcHUgMjggdG8gcnVucXVldWUgMQ0KKFhF
TikgQWRkaW5nIGNwdSAyOSB0byBydW5xdWV1ZSAxDQooWEVOKSBBZGRpbmcgY3B1IDMwIHRvIHJ1
bnF1ZXVlIDENCihYRU4pIEFkZGluZyBjcHUgMzEgdG8gcnVucXVldWUgMQ0KKFhFTikgQWRkaW5n
IGNwdSAzMiB0byBydW5xdWV1ZSAyDQooWEVOKSAgRmlyc3QgY3B1IG9uIHJ1bnF1ZXVlLCBhY3Rp
dmF0aW5nDQooWEVOKSBBZGRpbmcgY3B1IDMzIHRvIHJ1bnF1ZXVlIDINCihYRU4pIEFkZGluZyBj
cHUgMzQgdG8gcnVucXVldWUgMg0KKFhFTikgQWRkaW5nIGNwdSAzNSB0byBydW5xdWV1ZSAyDQoo
WEVOKSBBZGRpbmcgY3B1IDM2IHRvIHJ1bnF1ZXVlIDINCihYRU4pIEFkZGluZyBjcHUgMzcgdG8g
cnVucXVldWUgMg0KKFhFTikgQWRkaW5nIGNwdSAzOCB0byBydW5xdWV1ZSAyDQooWEVOKSBBZGRp
bmcgY3B1IDM5IHRvIHJ1bnF1ZXVlIDINCihYRU4pIEFkZGluZyBjcHUgNDAgdG8gcnVucXVldWUg
Mg0KKFhFTikgQWRkaW5nIGNwdSA0MSB0byBydW5xdWV1ZSAyDQooWEVOKSBBZGRpbmcgY3B1IDQy
IHRvIHJ1bnF1ZXVlIDINCihYRU4pIEFkZGluZyBjcHUgNDMgdG8gcnVucXVldWUgMg0KKFhFTikg
QWRkaW5nIGNwdSA0NCB0byBydW5xdWV1ZSAyDQooWEVOKSBBZGRpbmcgY3B1IDQ1IHRvIHJ1bnF1
ZXVlIDINCihYRU4pIEFkZGluZyBjcHUgNDYgdG8gcnVucXVldWUgMg0KKFhFTikgQWRkaW5nIGNw
dSA0NyB0byBydW5xdWV1ZSAyDQooWEVOKSBtY2hlY2tfcG9sbDogTWFjaGluZSBjaGVjayBwb2xs
aW5nIHRpbWVyIHN0YXJ0ZWQuDQooWEVOKSB4ZW5vcHJvZjogSW5pdGlhbGl6YXRpb24gZmFpbGVk
LiBBTUQgcHJvY2Vzc29yIGZhbWlseSAyNSBpcyBub3Qgc3VwcG9ydGVkDQooWEVOKSBOWCAoRXhl
Y3V0ZSBEaXNhYmxlKSBwcm90ZWN0aW9uIGFjdGl2ZQ0KKFhFTikgRG9tMCBoYXMgbWF4aW11bSAx
NDAwIFBJUlFzDQooWEVOKSAqKiogQnVpbGRpbmcgYSBQVkggRG9tMCAqKioNCihYRU4pIEZhaWxl
ZCB0byBsb2FkIGtlcm5lbDogLTENCihYRU4pIFhlbiBkb20wIGtlcm5lbCBicm9rZW4gRUxGOiA8
TlVMTD4NCihYRU4pIEZhaWxlZCB0byBsb2FkIERvbTAga2VybmVsDQooWEVOKSANCihYRU4pICoq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCihYRU4pIFBhbmljIG9uIENQ
VSAwOg0KKFhFTikgQ291bGQgbm90IGNvbnN0cnVjdCBkb21haW4gMA0KKFhFTikgKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKFhFTikgDQooWEVOKSBSZWJvb3QgaW4g
Zml2ZSBzZWNvbmRzLi4uDQo=
--0000000000003412b4060f3269fc
Content-Type: text/x-log; charset="US-ASCII"; name="xen-4.18p_grub_linuxpatch_pv.log"
Content-Disposition: attachment; filename="xen-4.18p_grub_linuxpatch_pv.log"
Content-Transfer-Encoding: base64
Content-ID: <f_lritsklw7>
X-Attachment-Id: f_lritsklw7

KFhFTikgWGVuIHZlcnNpb24gNC4xOC4wIChwYXRyaWNrQCkgKGdjYyAoRGViaWFuIDEwLjIuMS02
KSAxMC4yLjEgMjAyMTAxMTApIGRlYnVnPW4gV2VkIEphbiAxNyAxODozMTo1MyBFU1QgMjAyNAoo
WEVOKSBMYXRlc3QgQ2hhbmdlU2V0OiAKKFhFTikgYnVpbGQtaWQ6IGU2OGU4Mjg0NzU1MGU0MGEy
NWVlYTY2ZWE4YTJlMWQ4NjUzODVhMWQKKFhFTikgQ29uc29sZSBvdXRwdXQgaXMgc3luY2hyb25v
dXMuCihYRU4pIEJvb3Rsb2FkZXI6IEdSVUIgMi4wNi0xMytkZWIxMnUxCihYRU4pIENvbW1hbmQg
bGluZTogcGxhY2Vob2xkZXIgZG9tMF9tZW09OEcsbWF4OjhHIGxvZ2x2bD1hbGwgZTgyMC12ZXJi
b3NlPXRydWUgY29uc29sZV90b19yaW5nIHN5bmNfY29uc29sZSBndWVzdF9sb2dsdmw9YWxsIGNv
bTE9MTE1MjAwLDhuMSBjb25zb2xlPWNvbTEsdmdhIG5vLXJlYWwtbW9kZSBlZGQ9b2ZmCihYRU4p
IFhlbiBpbWFnZSBsb2FkIGJhc2UgYWRkcmVzczogMHg5ZjYwMDAwMAooWEVOKSBWaWRlbyBpbmZv
cm1hdGlvbjoKKFhFTikgIFZHQSBpcyBncmFwaGljcyBtb2RlIDI1NjB4MTQ0MCwgMzIgYnBwCihY
RU4pICBWQkUvRERDIG1ldGhvZHM6IG5vbmU7IEVESUQgdHJhbnNmZXIgdGltZTogMCBzZWNvbmRz
CihYRU4pIERpc2MgaW5mb3JtYXRpb246CihYRU4pICBGb3VuZCAwIE1CUiBzaWduYXR1cmVzCihY
RU4pICBGb3VuZCA2IEVERCBpbmZvcm1hdGlvbiBzdHJ1Y3R1cmVzCihYRU4pIENQVSBWZW5kb3I6
IEFNRCwgRmFtaWx5IDI1ICgweDE5KSwgTW9kZWwgMjQgKDB4MTgpLCBTdGVwcGluZyAxIChyYXcg
MDBhMTBmODEpCihYRU4pIEVuYWJsaW5nIFN1cGVydmlzb3IgU2hhZG93IFN0YWNrcwooWEVOKSBJ
bml0aWFsIEVGSSBSQU0gbWFwOgooWEVOKSAgWzAwMDAwMDAwMDAwMDAwMDAsIDAwMDAwMDAwMDAw
OWZmZmZdICh1c2FibGUpCihYRU4pICBbMDAwMDAwMDAwMDEwMDAwMCwgMDAwMDAwMDAwM2ZmZmZm
Zl0gKHVzYWJsZSkKKFhFTikgIFswMDAwMDAwMDA0MDAwMDAwLCAwMDAwMDAwMDA0MDQ1ZmZmXSAo
QUNQSSBOVlMpCihYRU4pICBbMDAwMDAwMDAwNDA0NjAwMCwgMDAwMDAwMDAwOWFmZWZmZl0gKHVz
YWJsZSkKKFhFTikgIFswMDAwMDAwMDA5YWZmMDAwLCAwMDAwMDAwMDA5ZmZmZmZmXSAocmVzZXJ2
ZWQpCihYRU4pICBbMDAwMDAwMDAwYTAwMDAwMCwgMDAwMDAwMDAwYWZmZmZmZl0gKHVzYWJsZSkK
KFhFTikgIFswMDAwMDAwMDBiMDAwMDAwLCAwMDAwMDAwMDBiMDIwZmZmXSAocmVzZXJ2ZWQpCihY
RU4pICBbMDAwMDAwMDAwYjAyMTAwMCwgMDAwMDAwMDBhMDRlOGZmZl0gKHVzYWJsZSkKKFhFTikg
IFswMDAwMDAwMGEwNGU5MDAwLCAwMDAwMDAwMGE2NGU4ZmZmXSAocmVzZXJ2ZWQpCihYRU4pICBb
MDAwMDAwMDBhNjRlOTAwMCwgMDAwMDAwMDBhNzQ3ZWZmZl0gKEFDUEkgZGF0YSkKKFhFTikgIFsw
MDAwMDAwMGE3NDdmMDAwLCAwMDAwMDAwMGE5NDdlZmZmXSAoQUNQSSBOVlMpCihYRU4pICBbMDAw
MDAwMDBhOTQ3ZjAwMCwgMDAwMDAwMDBhZGRmZWZmZl0gKHJlc2VydmVkKQooWEVOKSAgWzAwMDAw
MDAwYWRkZmYwMDAsIDAwMDAwMDAwYWZmZmFmZmZdICh1c2FibGUpCihYRU4pICBbMDAwMDAwMDBh
ZmZmYjAwMCwgMDAwMDAwMDBhZmZmZmZmZl0gKHJlc2VydmVkKQooWEVOKSAgWzAwMDAwMDAxMDAw
MDAwMDAsIDAwMDAwMDQwM2RiYmZmZmZdICh1c2FibGUpCihYRU4pICBbMDAwMDAwMDAwMDBhMDAw
MCwgMDAwMDAwMDAwMDBmZmZmZl0gKHJlc2VydmVkKQooWEVOKSAgWzAwMDAwMDAwYjAwMDAwMDAs
IDAwMDAwMDAwYmZmZmZmZmZdIChyZXNlcnZlZCkKKFhFTikgIFswMDAwMDAwMGRmMjAwMDAwLCAw
MDAwMDAwMGRmMmZmZmZmXSAocmVzZXJ2ZWQpCihYRU4pICBbMDAwMDAwMDBlMDAwMDAwMCwgMDAw
MDAwMDBlZmZmZmZmZl0gKHJlc2VydmVkKQooWEVOKSAgWzAwMDAwMDAwZmVhMDAwMDAsIDAwMDAw
MDAwZmVhZmZmZmZdIChyZXNlcnZlZCkKKFhFTikgIFswMDAwMDAwMGZlYzAwMDAwLCAwMDAwMDAw
MGZlYzAwZmZmXSAocmVzZXJ2ZWQpCihYRU4pICBbMDAwMDAwMDBmZWMxMDAwMCwgMDAwMDAwMDBm
ZWMxMGZmZl0gKHJlc2VydmVkKQooWEVOKSAgWzAwMDAwMDAwZmVjMzAwMDAsIDAwMDAwMDAwZmVj
MzBmZmZdIChyZXNlcnZlZCkKKFhFTikgIFswMDAwMDAwMGZlZDAwMDAwLCAwMDAwMDAwMGZlZDAw
ZmZmXSAocmVzZXJ2ZWQpCihYRU4pICBbMDAwMDAwMDBmZWQ0MDAwMCwgMDAwMDAwMDBmZWQ0NGZm
Zl0gKHJlc2VydmVkKQooWEVOKSAgWzAwMDAwMDAwZmVkODAwMDAsIDAwMDAwMDAwZmVkOGZmZmZd
IChyZXNlcnZlZCkKKFhFTikgIFswMDAwMDAwMGZmMDAwMDAwLCAwMDAwMDAwMGZmZmZmZmZmXSAo
cmVzZXJ2ZWQpCihYRU4pICBbMDAwMDAwNDAzZGJjMDAwMCwgMDAwMDAwNDAzZmZmZmZmZl0gKHJl
c2VydmVkKQooWEVOKSBFRkkgUkFNIG1hcDoKKFhFTikgIFswMDAwMDAwMDAwMDAwMDAwLCAwMDAw
MDAwMDAwMDlmZmZmXSAodXNhYmxlKQooWEVOKSAgWzAwMDAwMDAwMDAwYTAwMDAsIDAwMDAwMDAw
MDAwZmZmZmZdIChyZXNlcnZlZCkKKFhFTikgIFswMDAwMDAwMDAwMTAwMDAwLCAwMDAwMDAwMDAz
ZmZmZmZmXSAodXNhYmxlKQooWEVOKSAgWzAwMDAwMDAwMDQwMDAwMDAsIDAwMDAwMDAwMDQwNDVm
ZmZdIChBQ1BJIE5WUykKKFhFTikgIFswMDAwMDAwMDA0MDQ2MDAwLCAwMDAwMDAwMDA5YWZlZmZm
XSAodXNhYmxlKQooWEVOKSAgWzAwMDAwMDAwMDlhZmYwMDAsIDAwMDAwMDAwMDlmZmZmZmZdIChy
ZXNlcnZlZCkKKFhFTikgIFswMDAwMDAwMDBhMDAwMDAwLCAwMDAwMDAwMDBhZmZmZmZmXSAodXNh
YmxlKQooWEVOKSAgWzAwMDAwMDAwMGIwMDAwMDAsIDAwMDAwMDAwMGIwMjBmZmZdIChyZXNlcnZl
ZCkKKFhFTikgIFswMDAwMDAwMDBiMDIxMDAwLCAwMDAwMDAwMGEwNGU4ZmZmXSAodXNhYmxlKQoo
WEVOKSAgWzAwMDAwMDAwYTA0ZTkwMDAsIDAwMDAwMDAwYTY0ZThmZmZdIChyZXNlcnZlZCkKKFhF
TikgIFswMDAwMDAwMGE2NGU5MDAwLCAwMDAwMDAwMGE3NDdlZmZmXSAoQUNQSSBkYXRhKQooWEVO
KSAgWzAwMDAwMDAwYTc0N2YwMDAsIDAwMDAwMDAwYTk0N2VmZmZdIChBQ1BJIE5WUykKKFhFTikg
IFswMDAwMDAwMGE5NDdmMDAwLCAwMDAwMDAwMGFkZGZlZmZmXSAocmVzZXJ2ZWQpCihYRU4pICBb
MDAwMDAwMDBhZGRmZjAwMCwgMDAwMDAwMDBhZmZmYWZmZl0gKHVzYWJsZSkKKFhFTikgIFswMDAw
MDAwMGFmZmZiMDAwLCAwMDAwMDAwMGJmZmZmZmZmXSAocmVzZXJ2ZWQpCihYRU4pICBbMDAwMDAw
MDBkZjIwMDAwMCwgMDAwMDAwMDBkZjJmZmZmZl0gKHJlc2VydmVkKQooWEVOKSAgWzAwMDAwMDAw
ZTAwMDAwMDAsIDAwMDAwMDAwZWZmZmZmZmZdIChyZXNlcnZlZCkKKFhFTikgIFswMDAwMDAwMGZl
YTAwMDAwLCAwMDAwMDAwMGZlYWZmZmZmXSAocmVzZXJ2ZWQpCihYRU4pICBbMDAwMDAwMDBmZWMw
MDAwMCwgMDAwMDAwMDBmZWMwMGZmZl0gKHJlc2VydmVkKQooWEVOKSAgWzAwMDAwMDAwZmVjMTAw
MDAsIDAwMDAwMDAwZmVjMTBmZmZdIChyZXNlcnZlZCkKKFhFTikgIFswMDAwMDAwMGZlYzMwMDAw
LCAwMDAwMDAwMGZlYzMwZmZmXSAocmVzZXJ2ZWQpCihYRU4pICBbMDAwMDAwMDBmZWQwMDAwMCwg
MDAwMDAwMDBmZWQwMGZmZl0gKHJlc2VydmVkKQooWEVOKSAgWzAwMDAwMDAwZmVkNDAwMDAsIDAw
MDAwMDAwZmVkNDRmZmZdIChyZXNlcnZlZCkKKFhFTikgIFswMDAwMDAwMGZlZDgwMDAwLCAwMDAw
MDAwMGZlZDhmZmZmXSAocmVzZXJ2ZWQpCihYRU4pICBbMDAwMDAwMDBmZjAwMDAwMCwgMDAwMDAw
MDBmZmZmZmZmZl0gKHJlc2VydmVkKQooWEVOKSAgWzAwMDAwMDAxMDAwMDAwMDAsIDAwMDAwMDQw
M2RiYmZmZmZdICh1c2FibGUpCihYRU4pICBbMDAwMDAwNDAzZGJjMDAwMCwgMDAwMDAwNDAzZmZm
ZmZmZl0gKHJlc2VydmVkKQooWEVOKSBBQ1BJOiBSU0RQIEE5NDYzMDE0LCAwMDI0IChyMiBBTUQg
ICApCihYRU4pIEFDUEk6IFhTRFQgQTk0NjI3MjgsIDAxMUMgKHIxIEFNRCAgICAgIEEgTSBJICAg
ICAgICAgMSBBTUkgICAxMDAwMDEzKQooWEVOKSBBQ1BJOiBGQUNQIEE3NDdDMDAwLCAwMTE0IChy
NiBBTUQgICAgICBBIE0gSSAgICAgICAgIDEgQU1JICAgICAxMDAxMykKKFhFTikgQUNQSTogRFNE
VCBBNzQ2RTAwMCwgRDJGNiAocjIgQU1EICAgICAgQSBNIEkgICAgICAgICAxIElOVEwgMjAyMzAz
MzEpCihYRU4pIEFDUEk6IEZBQ1MgQTk0NUEwMDAsIDAwNDAKKFhFTikgQUNQSTogU1NEVCBBNzQ3
RTAwMCwgMDlDQyAocjIgICAgQU1EIEJPVUxERVJHICAgICAgICAyIE1TRlQgIDQwMDAwMDApCihY
RU4pIEFDUEk6IFNTRFQgQTc0N0QwMDAsIDAwNjcgKHIyICAgIEFNRCAgIENQTURTTSAgICAgICAg
MSBJTlRMIDIwMjMwMzMxKQooWEVOKSBBQ1BJOiBGSURUIEE3NDZEMDAwLCAwMDlDIChyMSAgICBB
TUQgICAgQSBNIEkgICAgICAgIDEgQU1JICAgICAxMDAxMykKKFhFTikgQUNQSTogTUNGRyBBNzQ2
QzAwMCwgMDAzQyAocjEgICAgQU1EICAgIEEgTSBJICAgICAgICAxIE1TRlQgICAgMTAwMTMpCihY
RU4pIEFDUEk6IFNTRFQgQTc0NkIwMDAsIDA1QzUgKHIyICAgIEFNRCAgQ1BVU1NEVCAgICAgICAg
MSBBTUkgICAgICAgICAxKQooWEVOKSBBQ1BJOiBIUEVUIEE3NDZBMDAwLCAwMDM4IChyMSAgICBB
TUQgICAgQSBNIEkgICAgICAgIDEgQU1JICAgICAgICAgNSkKKFhFTikgQUNQSTogU1NEVCBBNzQ2
ODAwMCwgMUI1MyAocjIgICAgQU1EICAgQ1BNUkFTICAgICAgICAxIElOVEwgMjAyMzAzMzEpCihY
RU4pIEFDUEk6IEJFUlQgQTc0NjcwMDAsIDAwMzAgKHIxIEFNRCAgICBBTUQgQkVSVCAgICAgICAg
MSBBTUQgICAgICAgICAxKQooWEVOKSBBQ1BJOiBGUERUIEE3NDY1MDAwLCAwMDQ0IChyMSBBTUQg
ICAgICBBIE0gSSAgIDEwNzIwMDkgQU1JICAgMTAwMDAxMykKKFhFTikgQUNQSTogU1NEVCBBNzQ2
MjAwMCwgMjQ0OCAocjIgICAgQU1EIEdQUF9QTUVfICAgICAgICAxIElOVEwgMjAyMzAzMzEpCihY
RU4pIEFDUEk6IFNTRFQgQTc0NUYwMDAsIDI0NDggKHIyICAgIEFNRCBHUFBfUE1FXyAgICAgICAg
MSBJTlRMIDIwMjMwMzMxKQooWEVOKSBBQ1BJOiBTU0RUIEE3NDVDMDAwLCAyNDQ4IChyMiAgICBB
TUQgR1BQX1BNRV8gICAgICAgIDEgSU5UTCAyMDIzMDMzMSkKKFhFTikgQUNQSTogU1NEVCBBNzQ1
OTAwMCwgMjQ0OCAocjIgICAgQU1EIEdQUF9QTUVfICAgICAgICAxIElOVEwgMjAyMzAzMzEpCihY
RU4pIEFDUEk6IFZGQ1QgQTc0NEEwMDAsIEU2ODQgKHIxIEFNRCAgICAgIEEgTSBJICAgICAgICAg
MSAgQU1EIDMxNTA0RjQ3KQooWEVOKSBBQ1BJOiBTU0RUIEE3NDNFMDAwLCBBNDBFIChyMiAgICBB
TUQgIEFNRCBDUFUgICAgICAgIDEgQU1EICAgICAgICAgMSkKKFhFTikgQUNQSTogSE1BVCBBNzQz
RDAwMCwgMDBBNCAocjIgICAgQU1EIEFtZFRhYmxlICAgICAgICAxIEFNRCAgICAgICAgIDEpCihY
RU4pIEFDUEk6IFdQQlQgQTY4NEUwMDAsIDAwMzYgKHIxICAgIEFNRCAgICBBIE0gSSAgICAgICAg
MSBNU0ZUICAgIDEwMDEzKQooWEVOKSBBQ1BJOiBCR1JUIEE3NDQ5MDAwLCAwMDM4IChyMSBBTUQg
ICAgICBBIE0gSSAgICAgICAgIDEgQU1JICAgICAxMDAxMykKKFhFTikgQUNQSTogSVZSUyBBNjg0
RDAwMCwgMDFFOCAocjIgIEFNRCAgIEFtZFRhYmxlICAgICAgICAxIEFNRCAgICAgICAgIDEpCihY
RU4pIEFDUEk6IFNTRFQgQTY4NEMwMDAsIDA2RDQgKHIyICAgIEFNRCAgQ1BNV0xSQyAgICAgICAg
MSBJTlRMIDIwMjMwMzMxKQooWEVOKSBBQ1BJOiBTU0RUIEE2ODQyMDAwLCA5ODJGIChyMiAgICBB
TUQgICBDUE1DTU4gICAgICAgIDEgSU5UTCAyMDIzMDMzMSkKKFhFTikgQUNQSTogV1NNVCBBNjg0
MTAwMCwgMDAyOCAocjEgQU1EICAgICAgQSBNIEkgICAgICAgICAxIEFNSSAgICAgMTAwMTMpCihY
RU4pIEFDUEk6IEFQSUMgQTY4M0YwMDAsIDEwODggKHI2IEFNRCAgICAgIEEgTSBJICAgICAgICAg
MSBBTUkgICAgIDEwMDEzKQooWEVOKSBBQ1BJOiBTU0RUIEE2ODNDMDAwLCAyMzg3IChyMiAgICBB
TUQgQU9EICAgICAgICAgICAgIDEgSU5UTCAyMDIzMDMzMSkKKFhFTikgQUNQSTogU1NEVCBBNjgz
QjAwMCwgMDUwMCAocjIgICAgQU1EIE1FTVRPT0wwICAgICAgICAyIElOVEwgMjAyMzAzMzEpCihY
RU4pIEFDUEk6IFNTRFQgQTY4M0EwMDAsIDA5NkEgKHIyICAgIEFNRCBDUE1NU09TQyAgICAgICAg
MSBJTlRMIDIwMjMwMzMxKQooWEVOKSBBQ1BJOiBTU0RUIEE2ODM5MDAwLCAwQjcyIChyMiAgICBB
TUQgQ1BNQUNQVjYgICAgICAgIDEgSU5UTCAyMDIzMDMzMSkKKFhFTikgQUNQSTogU1NEVCBBNjgz
ODAwMCwgMDQ0RSAocjIgICAgQU1EIEFtZFRhYmxlICAgICAgICAxIElOVEwgMjAyMzAzMzEpCihY
RU4pIEFDUEk6IEVSU1QgQTY4MzcwMDAsIDAyMzAgKHIxICBBTUlFUiBBTUkuRVJTVCAgICAgICAg
MCBBTUkuICAgICAgICAwKQooWEVOKSBBQ1BJOiBIRVNUIEE2ODA2MDAwLCAzMEExNCAocjEgQU1E
ICAgIEFNRCBIRVNUICAgICAgICAxIEFNRCAgICAgICAgIDEpCihYRU4pIFN5c3RlbSBSQU06IDI2
MTYyOE1CICgyNjc5MDc5NTZrQikKKFhFTikgTm8gTlVNQSBjb25maWd1cmF0aW9uIGZvdW5kCihY
RU4pIEZha2luZyBhIG5vZGUgYXQgMDAwMDAwMDAwMDAwMDAwMC0wMDAwMDA0MDNkYmMwMDAwCihY
RU4pIERvbWFpbiBoZWFwIGluaXRpYWxpc2VkCihYRU4pIHZlc2FmYjogZnJhbWVidWZmZXIgYXQg
MHgwMDAwMDRkODAwMDAwMDAwLCBtYXBwZWQgdG8gMHhmZmZmODJjMDAwMjAxMDAwLCB1c2luZyAx
NDQwMGssIHRvdGFsIDE0NDAwawooWEVOKSB2ZXNhZmI6IG1vZGUgaXMgMjU2MHgxNDQweDMyLCBs
aW5lbGVuZ3RoPTEwMjQwLCBmb250IDh4MTYKKFhFTikgdmVzYWZiOiBUcnVlY29sb3I6IHNpemU9
ODo4Ojg6OCwgc2hpZnQ9MjQ6MTY6ODowCihYRU4pIFNNQklPUyAzLjYgcHJlc2VudC4KKFhFTikg
eDJBUElDIG1vZGUgaXMgYWxyZWFkeSBlbmFibGVkIGJ5IEJJT1MuCihYRU4pIFVzaW5nIEFQSUMg
ZHJpdmVyIHgyYXBpY19jbHVzdGVyCihYRU4pIEFDUEk6IFBNLVRpbWVyIElPIFBvcnQ6IDB4ODA4
ICgzMiBiaXRzKQooWEVOKSBBQ1BJOiB2NSBTTEVFUCBJTkZPOiBjb250cm9sWzA6MF0sIHN0YXR1
c1swOjBdCihYRU4pIEFDUEk6IFNMRUVQIElORk86IHBtMXhfY250WzE6ODA0LDE6MF0sIHBtMXhf
ZXZ0WzE6ODAwLDE6MF0KKFhFTikgQUNQSTogMzIvNjRYIEZBQ1MgYWRkcmVzcyBtaXNtYXRjaCBp
biBGQURUIC0gYTk0NWEwMDAvMDAwMDAwMDAwMDAwMDAwMCwgdXNpbmcgMzIKKFhFTikgQUNQSTog
ICAgICAgICAgICAgd2FrZXVwX3ZlY1thOTQ1YTAwY10sIHZlY19zaXplWzIwXQooWEVOKSBBQ1BJ
OiBMb2NhbCBBUElDIGFkZHJlc3MgMHhmZWUwMDAwMAooWEVOKSBBQ1BJOiBJT0FQSUMgKGlkWzB4
ODBdIGFkZHJlc3NbMHhmZWMwMDAwMF0gZ3NpX2Jhc2VbMF0pCihYRU4pIElPQVBJQ1swXTogYXBp
Y19pZCAxMjgsIHZlcnNpb24gMzMsIGFkZHJlc3MgMHhmZWMwMDAwMCwgR1NJIDAtMjMKKFhFTikg
QUNQSTogSU9BUElDIChpZFsweDgxXSBhZGRyZXNzWzB4ZGYxODAwMDBdIGdzaV9iYXNlWzEyMF0p
CihYRU4pIElPQVBJQ1sxXTogYXBpY19pZCAxMjksIHZlcnNpb24gMzMsIGFkZHJlc3MgMHhkZjE4
MDAwMCwgR1NJIDEyMC0xNTEKKFhFTikgQUNQSTogSU9BUElDIChpZFsweDgyXSBhZGRyZXNzWzB4
ZDMxODAwMDBdIGdzaV9iYXNlWzg4XSkKKFhFTikgSU9BUElDWzJdOiBhcGljX2lkIDEzMCwgdmVy
c2lvbiAzMywgYWRkcmVzcyAweGQzMTgwMDAwLCBHU0kgODgtMTE5CihYRU4pIEFDUEk6IElPQVBJ
QyAoaWRbMHg4M10gYWRkcmVzc1sweGY3MTgwMDAwXSBnc2lfYmFzZVsyNF0pCihYRU4pIElPQVBJ
Q1szXTogYXBpY19pZCAxMzEsIHZlcnNpb24gMzMsIGFkZHJlc3MgMHhmNzE4MDAwMCwgR1NJIDI0
LTU1CihYRU4pIEFDUEk6IElPQVBJQyAoaWRbMHg4NF0gYWRkcmVzc1sweGM5MTgwMDAwXSBnc2lf
YmFzZVs1Nl0pCihYRU4pIElPQVBJQ1s0XTogYXBpY19pZCAxMzIsIHZlcnNpb24gMzMsIGFkZHJl
c3MgMHhjOTE4MDAwMCwgR1NJIDU2LTg3CihYRU4pIEFDUEk6IElOVF9TUkNfT1ZSIChidXMgMCBi
dXNfaXJxIDAgZ2xvYmFsX2lycSAyIGRmbCBkZmwpCihYRU4pIEFDUEk6IElOVF9TUkNfT1ZSIChi
dXMgMCBidXNfaXJxIDkgZ2xvYmFsX2lycSA5IGxvdyBsZXZlbCkKKFhFTikgQUNQSTogSVJRMCB1
c2VkIGJ5IG92ZXJyaWRlLgooWEVOKSBBQ1BJOiBJUlEyIHVzZWQgYnkgb3ZlcnJpZGUuCihYRU4p
IEFDUEk6IElSUTkgdXNlZCBieSBvdmVycmlkZS4KKFhFTikgQUNQSTogSFBFVCBpZDogMHgxMDIy
ODIwMSBiYXNlOiAweGZlZDAwMDAwCihYRU4pIFBDSTogTUNGRyBjb25maWd1cmF0aW9uIDA6IGJh
c2UgZTAwMDAwMDAgc2VnbWVudCAwMDAwIGJ1c2VzIDAwIC0gZmYKKFhFTikgUENJOiBNQ0ZHIGFy
ZWEgYXQgZTAwMDAwMDAgcmVzZXJ2ZWQgaW4gRTgyMAooWEVOKSBQQ0k6IFVzaW5nIE1DRkcgZm9y
IHNlZ21lbnQgMDAwMCBidXMgMDAtZmYKKFhFTikgWGVuIEVSU1Qgc3VwcG9ydCBpcyBpbml0aWFs
aXplZC4KKFhFTikgSEVTVDogVGFibGUgcGFyc2luZyBoYXMgYmVlbiBpbml0aWFsaXplZAooWEVO
KSBBQ1BJOiBCR1JUOiBpbnZhbGlkYXRpbmcgdjEgaW1hZ2UgYXQgMHg5YjBkMDAxOAooWEVOKSBV
c2luZyBBQ1BJIChNQURUKSBmb3IgU01QIGNvbmZpZ3VyYXRpb24gaW5mb3JtYXRpb24KKFhFTikg
U01QOiBBbGxvd2luZyA0OCBDUFVzICgwIGhvdHBsdWcgQ1BVcykKKFhFTikgSVJRIGxpbWl0czog
MTUyIEdTSSwgOTgzMiBNU0kvTVNJLVgKKFhFTikgQU1ELVZpOiBJT01NVSBFeHRlbmRlZCBGZWF0
dXJlczoKKFhFTikgLSBQZXJpcGhlcmFsIFBhZ2UgU2VydmljZSBSZXF1ZXN0CihYRU4pIC0geDJB
UElDCihYRU4pIC0gTlggYml0CihYRU4pIC0gR3Vlc3QgQVBJQyBQaHlzaWNhbCBQcm9jZXNzb3Ig
SW50ZXJydXB0CihYRU4pIC0gSW52YWxpZGF0ZSBBbGwgQ29tbWFuZAooWEVOKSAtIEd1ZXN0IEFQ
SUMKKFhFTikgLSBQZXJmb3JtYW5jZSBDb3VudGVycwooWEVOKSAtIEhvc3QgQWRkcmVzcyBUcmFu
c2xhdGlvbiBTaXplOiAweDIKKFhFTikgLSBHdWVzdCBBZGRyZXNzIFRyYW5zbGF0aW9uIFNpemU6
IDB4MQooWEVOKSAtIEd1ZXN0IENSMyBSb290IFRhYmxlIExldmVsOiAweDEKKFhFTikgLSBNYXhp
bXVtIFBBU0lEOiAweGYKKFhFTikgLSBTTUkgRmlsdGVyIFJlZ2lzdGVyOiAweDEKKFhFTikgLSBT
TUkgRmlsdGVyIFJlZ2lzdGVyIENvdW50OiAweDIKKFhFTikgLSBHdWVzdCBWaXJ0dWFsIEFQSUMg
TW9kZXM6IDB4MQooWEVOKSAtIER1YWwgUFBSIExvZzogMHgyCihYRU4pIC0gRHVhbCBFdmVudCBM
b2c6IDB4MgooWEVOKSAtIFNlY3VyZSBBVFMKKFhFTikgLSBVc2VyIC8gU3VwZXJ2aXNvciBQYWdl
IFByb3RlY3Rpb24KKFhFTikgLSBEZXZpY2UgVGFibGUgU2VnbWVudGF0aW9uOiAwCihYRU4pIC0g
UFBSIExvZyBPdmVyZmxvdyBFYXJseSBXYXJuaW5nCihYRU4pIC0gUFBSIEF1dG9tYXRpYyBSZXNw
b25zZQooWEVOKSAtIE1lbW9yeSBBY2Nlc3MgUm91dGluZyBhbmQgQ29udHJvbDogMAooWEVOKSAt
IEJsb2NrIFN0b3BNYXJrIE1lc3NhZ2UKKFhFTikgLSBQZXJmb3JtYW5jZSBPcHRpbWl6YXRpb24K
KFhFTikgLSBNU0kgQ2FwYWJpbGl0eSBNTUlPIEFjY2VzcwooWEVOKSAtIEd1ZXN0IEkvTyBQcm90
ZWN0aW9uCihYRU4pIC0gSG9zdCBBY2Nlc3MKKFhFTikgLSBFbmhhbmNlZCBQUFIgSGFuZGxpbmcK
KFhFTikgLSBBdHRyaWJ1dGUgRm9yd2FyZAooWEVOKSAtIEhvc3QgRGlydHkKKFhFTikgLSBWaXJ0
dWFsaXplZCBJT01NVQooWEVOKSAtIFZNR3VhcmQgSS9PIFN1cHBvcnQKKFhFTikgLSBWTSBUYWJs
ZSBTaXplOiAweDIKKFhFTikgLSBHdWVzdCBBY2Nlc3MgQml0IFVwZGF0ZSBEaXNhYmxlCihYRU4p
IEFNRC1WaTogRGlzYWJsZWQgSEFQIG1lbW9yeSBtYXAgc2hhcmluZyB3aXRoIElPTU1VCihYRU4p
IEFNRC1WaTogSU9NTVUgMCBFbmFibGVkLgooWEVOKSBBTUQtVmk6IElPTU1VIDEgRW5hYmxlZC4K
KFhFTikgQU1ELVZpOiBJT01NVSAyIEVuYWJsZWQuCihYRU4pIEFNRC1WaTogSU9NTVUgMyBFbmFi
bGVkLgooWEVOKSBDUFUwOiAxNTAwIC4uLiA0MjAwIE1IegooWEVOKSB4c3RhdGU6IHNpemU6IDB4
OTg4IGFuZCBzdGF0ZXM6IDB4MmU3CihYRU4pIENQVTA6IEFNRCBGYW0xOWggbWFjaGluZSBjaGVj
ayByZXBvcnRpbmcgZW5hYmxlZAooWEVOKSBTcGVjdWxhdGl2ZSBtaXRpZ2F0aW9uIGZhY2lsaXRp
ZXM6CihYRU4pICAgSGFyZHdhcmUgaGludHM6IFNUSUJQX0FMV0FZUyBJQlJTX0ZBU1QgSUJSU19T
QU1FX01PREUgQlRDX05PIElCUEJfUkVUCihYRU4pICAgSGFyZHdhcmUgZmVhdHVyZXM6IElCUEIg
SUJSUyBTVElCUCBTU0JEIFBTRkQgTDFEX0ZMVVNICihYRU4pICAgQ29tcGlsZWQtaW4gc3VwcG9y
dDogSU5ESVJFQ1RfVEhVTksgU0hBRE9XX1BBR0lORwooWEVOKSAgIFhlbiBzZXR0aW5nczogQlRJ
LVRodW5rIEpNUCwgU1BFQ19DVFJMOiBJQlJTKyBTVElCUCsgU1NCRC0gUFNGRC0sIE90aGVyOiBC
UkFOQ0hfSEFSREVOCihYRU4pICAgU3VwcG9ydCBmb3IgSFZNIFZNczogTVNSX1NQRUNfQ1RSTCBN
U1JfVklSVF9TUEVDX0NUUkwgUlNCIElCUEItZW50cnkKKFhFTikgICBTdXBwb3J0IGZvciBQViBW
TXM6IElCUEItZW50cnkKKFhFTikgICBYUFRJICg2NC1iaXQgUFYgb25seSk6IERvbTAgZGlzYWJs
ZWQsIERvbVUgZGlzYWJsZWQgKHdpdGggUENJRCkKKFhFTikgICBQViBMMVRGIHNoYWRvd2luZzog
RG9tMCBkaXNhYmxlZCwgRG9tVSBkaXNhYmxlZAooWEVOKSBVc2luZyBzY2hlZHVsZXI6IFNNUCBD
cmVkaXQgU2NoZWR1bGVyIHJldjIgKGNyZWRpdDIpCihYRU4pIEluaXRpYWxpemluZyBDcmVkaXQy
IHNjaGVkdWxlcgooWEVOKSAgbG9hZF9wcmVjaXNpb25fc2hpZnQ6IDE4CihYRU4pICBsb2FkX3dp
bmRvd19zaGlmdDogMzAKKFhFTikgIHVuZGVybG9hZF9iYWxhbmNlX3RvbGVyYW5jZTogMAooWEVO
KSAgb3ZlcmxvYWRfYmFsYW5jZV90b2xlcmFuY2U6IC0zCihYRU4pICBydW5xdWV1ZXMgYXJyYW5n
ZW1lbnQ6IHNvY2tldAooWEVOKSAgY2FwIGVuZm9yY2VtZW50IGdyYW51bGFyaXR5OiAxMG1zCihY
RU4pIGxvYWQgdHJhY2tpbmcgd2luZG93IGxlbmd0aCAxMDczNzQxODI0IG5zCihYRU4pIFBsYXRm
b3JtIHRpbWVyIGlzIDE0LjMxOE1IeiBIUEVUCihYRU4pIERldGVjdGVkIDQxOTkuOTAwIE1IeiBw
cm9jZXNzb3IuCihYRU4pIEZyZWVkIDEwMjBrQiB1bnVzZWQgQlNTIG1lbW9yeQooWEVOKSBFRkkg
bWVtb3J5IG1hcDoKKFhFTikgIDAwMDAwMDAwMDAwMDAtMDAwMDAwMDAwM2ZmZiB0eXBlPTIgYXR0
cj0wMDAwMDAwMDAwMDAwMDBmCihYRU4pICAwMDAwMDAwMDA0MDAwLTAwMDAwMDAwOGVmZmYgdHlw
ZT03IGF0dHI9MDAwMDAwMDAwMDAwMDAwZgooWEVOKSAgMDAwMDAwMDA4ZjAwMC0wMDAwMDAwMDll
ZmZmIHR5cGU9MiBhdHRyPTAwMDAwMDAwMDAwMDAwMGYKKFhFTikgIDAwMDAwMDAwOWYwMDAtMDAw
MDAwMDA5ZmZmZiB0eXBlPTQgYXR0cj0wMDAwMDAwMDAwMDAwMDBmCihYRU4pICAwMDAwMDAwMTAw
MDAwLTAwMDAwMDJlMWJmZmYgdHlwZT0yIGF0dHI9MDAwMDAwMDAwMDAwMDAwZgooWEVOKSAgMDAw
MDAwMmUxYzAwMC0wMDAwMDAzZmZmZmZmIHR5cGU9NyBhdHRyPTAwMDAwMDAwMDAwMDAwMGYKKFhF
TikgIDAwMDAwMDQwMDAwMDAtMDAwMDAwNDA0NWZmZiB0eXBlPTEwIGF0dHI9MDAwMDAwMDAwMDAw
MDAwZgooWEVOKSAgMDAwMDAwNDA0NjAwMC0wMDAwMDA5YWZlZmZmIHR5cGU9NyBhdHRyPTAwMDAw
MDAwMDAwMDAwMGYKKFhFTikgIDAwMDAwMDlhZmYwMDAtMDAwMDAwOWZmZmZmZiB0eXBlPTAgYXR0
cj0wMDAwMDAwMDAwMDAwMDBmCihYRU4pICAwMDAwMDBhMDAwMDAwLTAwMDAwMGEyZmZmZmYgdHlw
ZT00IGF0dHI9MDAwMDAwMDAwMDAwMDAwZgooWEVOKSAgMDAwMDAwYTMwMDAwMC0wMDAwMDBhZmZm
ZmZmIHR5cGU9NyBhdHRyPTAwMDAwMDAwMDAwMDAwMGYKKFhFTikgIDAwMDAwMGIwMDAwMDAtMDAw
MDAwYjAyMGZmZiB0eXBlPTAgYXR0cj0wMDAwMDAwMDAwMDAwMDBmCihYRU4pICAwMDAwMDBiMDIx
MDAwLTAwMDAwNmY4NjlmZmYgdHlwZT03IGF0dHI9MDAwMDAwMDAwMDAwMDAwZgooWEVOKSAgMDAw
MDA2Zjg2YTAwMC0wMDAwMDk1M2VhZmZmIHR5cGU9MSBhdHRyPTAwMDAwMDAwMDAwMDAwMGYKKFhF
TikgIDAwMDAwOTUzZWIwMDAtMDAwMDA5NTNmNGZmZiB0eXBlPTQgYXR0cj0wMDAwMDAwMDAwMDAw
MDBmCihYRU4pICAwMDAwMDk1M2Y1MDAwLTAwMDAwOTUzZmVmZmYgdHlwZT03IGF0dHI9MDAwMDAw
MDAwMDAwMDAwZgooWEVOKSAgMDAwMDA5NTNmZjAwMC0wMDAwMDk1NDA4ZmZmIHR5cGU9NCBhdHRy
PTAwMDAwMDAwMDAwMDAwMGYKKFhFTikgIDAwMDAwOTU0MDkwMDAtMDAwMDA5NTQyNmZmZiB0eXBl
PTcgYXR0cj0wMDAwMDAwMDAwMDAwMDBmCihYRU4pICAwMDAwMDk1NDI3MDAwLTAwMDAwOTU4Mjhm
ZmYgdHlwZT0xIGF0dHI9MDAwMDAwMDAwMDAwMDAwZgooWEVOKSAgMDAwMDA5NTgyOTAwMC0wMDAw
MDk1YzMzZmZmIHR5cGU9MiBhdHRyPTAwMDAwMDAwMDAwMDAwMGYKKFhFTikgIDAwMDAwOTVjMzQw
MDAtMDAwMDA5NWMzOWZmZiB0eXBlPTcgYXR0cj0wMDAwMDAwMDAwMDAwMDBmCihYRU4pICAwMDAw
MDk1YzNhMDAwLTAwMDAwOTVkMGNmZmYgdHlwZT0xIGF0dHI9MDAwMDAwMDAwMDAwMDAwZgooWEVO
KSAgMDAwMDA5NWQwZDAwMC0wMDAwMDk3NGU4ZmZmIHR5cGU9NCBhdHRyPTAwMDAwMDAwMDAwMDAw
MGYKKFhFTikgIDAwMDAwOTc0ZTkwMDAtMDAwMDA5NzRlOWZmZiB0eXBlPTcgYXR0cj0wMDAwMDAw
MDAwMDAwMDBmCihYRU4pICAwMDAwMDk3NGVhMDAwLTAwMDAwOTc0ZjJmZmYgdHlwZT00IGF0dHI9
MDAwMDAwMDAwMDAwMDAwZgooWEVOKSAgMDAwMDA5NzRmMzAwMC0wMDAwMDk3NTE1ZmZmIHR5cGU9
NyBhdHRyPTAwMDAwMDAwMDAwMDAwMGYKKFhFTikgIDAwMDAwOTc1MTYwMDAtMDAwMDA5NzUyY2Zm
ZiB0eXBlPTQgYXR0cj0wMDAwMDAwMDAwMDAwMDBmCihYRU4pICAwMDAwMDk3NTJkMDAwLTAwMDAw
OTc1MmZmZmYgdHlwZT03IGF0dHI9MDAwMDAwMDAwMDAwMDAwZgooWEVOKSAgMDAwMDA5NzUzMDAw
MC0wMDAwMDk3NTUxZmZmIHR5cGU9NCBhdHRyPTAwMDAwMDAwMDAwMDAwMGYKKFhFTikgIDAwMDAw
OTc1NTIwMDAtMDAwMDA5NzVkMWZmZiB0eXBlPTcgYXR0cj0wMDAwMDAwMDAwMDAwMDBmCihYRU4p
ICAwMDAwMDk3NWQyMDAwLTAwMDAwOTc2NWJmZmYgdHlwZT00IGF0dHI9MDAwMDAwMDAwMDAwMDAw
ZgooWEVOKSAgMDAwMDA5NzY1YzAwMC0wMDAwMDk3NjYyZmZmIHR5cGU9NyBhdHRyPTAwMDAwMDAw
MDAwMDAwMGYKKFhFTikgIDAwMDAwOTc2NjMwMDAtMDAwMDA5NzZhYmZmZiB0eXBlPTQgYXR0cj0w
MDAwMDAwMDAwMDAwMDBmCihYRU4pICAwMDAwMDk3NmFjMDAwLTAwMDAwOTdlOWNmZmYgdHlwZT03
IGF0dHI9MDAwMDAwMDAwMDAwMDAwZgooWEVOKSAgMDAwMDA5N2U5ZDAwMC0wMDAwMDk3ZTllZmZm
IHR5cGU9NCBhdHRyPTAwMDAwMDAwMDAwMDAwMGYKKFhFTikgIDAwMDAwOTdlOWYwMDAtMDAwMDA5
N2Y5MWZmZiB0eXBlPTcgYXR0cj0wMDAwMDAwMDAwMDAwMDBmCihYRU4pICAwMDAwMDk3ZjkyMDAw
LTAwMDAwOWU0ZThmZmYgdHlwZT00IGF0dHI9MDAwMDAwMDAwMDAwMDAwZgooWEVOKSAgMDAwMDA5
ZTRlOTAwMC0wMDAwMDlmN2ZmZmZmIHR5cGU9NyBhdHRyPTAwMDAwMDAwMDAwMDAwMGYKKFhFTikg
IDAwMDAwOWY4MDAwMDAtMDAwMDA5ZmJiMWZmZiB0eXBlPTIgYXR0cj0wMDAwMDAwMDAwMDAwMDBm
CihYRU4pICAwMDAwMDlmYmIyMDAwLTAwMDAwOWZkNzZmZmYgdHlwZT03IGF0dHI9MDAwMDAwMDAw
MDAwMDAwZgooWEVOKSAgMDAwMDA5ZmQ3NzAwMC0wMDAwMGEwNGU4ZmZmIHR5cGU9MyBhdHRyPTAw
MDAwMDAwMDAwMDAwMGYKKFhFTikgIDAwMDAwYTA0ZTkwMDAtMDAwMDBhNjRlOGZmZiB0eXBlPTAg
YXR0cj0wMDAwMDAwMDAwMDAwMDBmCihYRU4pICAwMDAwMGE2NGU5MDAwLTAwMDAwYTc0N2VmZmYg
dHlwZT05IGF0dHI9MDAwMDAwMDAwMDAwMDAwZgooWEVOKSAgMDAwMDBhNzQ3ZjAwMC0wMDAwMGE5
NDdlZmZmIHR5cGU9MTAgYXR0cj0wMDAwMDAwMDAwMDAwMDBmCihYRU4pICAwMDAwMGE5NDdmMDAw
LTAwMDAwYWRjN2VmZmYgdHlwZT02IGF0dHI9ODAwMDAwMDAwMDAwMDAwZgooWEVOKSAgMDAwMDBh
ZGM3ZjAwMC0wMDAwMGFkZGZlZmZmIHR5cGU9NSBhdHRyPTgwMDAwMDAwMDAwMDAwMGYKKFhFTikg
IDAwMDAwYWRkZmYwMDAtMDAwMDBhZGZmZmZmZiB0eXBlPTQgYXR0cj0wMDAwMDAwMDAwMDAwMDBm
CihYRU4pICAwMDAwMGFlMDAwMDAwLTAwMDAwYWUxM2FmZmYgdHlwZT03IGF0dHI9MDAwMDAwMDAw
MDAwMDAwZgooWEVOKSAgMDAwMDBhZTEzYjAwMC0wMDAwMGFlMjNhZmZmIHR5cGU9NCBhdHRyPTAw
MDAwMDAwMDAwMDAwMGYKKFhFTikgIDAwMDAwYWUyM2IwMDAtMDAwMDBhZTI1YmZmZiB0eXBlPTMg
YXR0cj0wMDAwMDAwMDAwMDAwMDBmCihYRU4pICAwMDAwMGFlMjVjMDAwLTAwMDAwYWY3NjVmZmYg
dHlwZT00IGF0dHI9MDAwMDAwMDAwMDAwMDAwZgooWEVOKSAgMDAwMDBhZjc2NjAwMC0wMDAwMGFm
NzgyZmZmIHR5cGU9MyBhdHRyPTAwMDAwMDAwMDAwMDAwMGYKKFhFTikgIDAwMDAwYWY3ODMwMDAt
MDAwMDBhZjc5YmZmZiB0eXBlPTQgYXR0cj0wMDAwMDAwMDAwMDAwMDBmCihYRU4pICAwMDAwMGFm
NzljMDAwLTAwMDAwYWY3OWZmZmYgdHlwZT0zIGF0dHI9MDAwMDAwMDAwMDAwMDAwZgooWEVOKSAg
MDAwMDBhZjdhMDAwMC0wMDAwMGFmN2IzZmZmIHR5cGU9NCBhdHRyPTAwMDAwMDAwMDAwMDAwMGYK
KFhFTikgIDAwMDAwYWY3YjQwMDAtMDAwMDBhZjdkY2ZmZiB0eXBlPTMgYXR0cj0wMDAwMDAwMDAw
MDAwMDBmCihYRU4pICAwMDAwMGFmN2RkMDAwLTAwMDAwYWZmZjNmZmYgdHlwZT00IGF0dHI9MDAw
MDAwMDAwMDAwMDAwZgooWEVOKSAgMDAwMDBhZmZmNDAwMC0wMDAwMGFmZmZhZmZmIHR5cGU9MyBh
dHRyPTAwMDAwMDAwMDAwMDAwMGYKKFhFTikgIDAwMDAwYWZmZmIwMDAtMDAwMDBhZmZmZmZmZiB0
eXBlPTYgYXR0cj04MDAwMDAwMDAwMDAwMDBmCihYRU4pICAwMDAwMTAwMDAwMDAwLTAwMDQwM2Ri
YmZmZmYgdHlwZT03IGF0dHI9MDAwMDAwMDAwMDAwMDAwZgooWEVOKSAgMDAwMDAwMDBhMDAwMC0w
MDAwMDAwMGZmZmZmIHR5cGU9MCBhdHRyPTAwMDAwMDAwMDAwMDAwMGYKKFhFTikgIDAwMDAwYjAw
MDAwMDAtMDAwMDBiZmZmZmZmZiB0eXBlPTAgYXR0cj0wMDAwMDAwMDAwMDAwMDBmCihYRU4pICAw
MDAwMGRmMjAwMDAwLTAwMDAwZGYyZmZmZmYgdHlwZT0xMSBhdHRyPTgwMDAwMDAwMDAwMDAwMDEK
KFhFTikgIDAwMDAwZTAwMDAwMDAtMDAwMDBlZmZmZmZmZiB0eXBlPTExIGF0dHI9ODAwMDAwMDAw
MDAwMTAwZAooWEVOKSAgMDAwMDBmZWEwMDAwMC0wMDAwMGZlYWZmZmZmIHR5cGU9MTEgYXR0cj04
MDAwMDAwMDAwMDAwMDAxCihYRU4pICAwMDAwMGZlYzAwMDAwLTAwMDAwZmVjMDBmZmYgdHlwZT0x
MSBhdHRyPTgwMDAwMDAwMDAwMDAwMDEKKFhFTikgIDAwMDAwZmVjMTAwMDAtMDAwMDBmZWMxMGZm
ZiB0eXBlPTExIGF0dHI9ODAwMDAwMDAwMDAwMDAwMQooWEVOKSAgMDAwMDBmZWMzMDAwMC0wMDAw
MGZlYzMwZmZmIHR5cGU9MTEgYXR0cj04MDAwMDAwMDAwMDAwMDAxCihYRU4pICAwMDAwMGZlZDAw
MDAwLTAwMDAwZmVkMDBmZmYgdHlwZT0xMSBhdHRyPTgwMDAwMDAwMDAwMDAwMDEKKFhFTikgIDAw
MDAwZmVkNDAwMDAtMDAwMDBmZWQ0NGZmZiB0eXBlPTExIGF0dHI9ODAwMDAwMDAwMDAwMDAwMQoo
WEVOKSAgMDAwMDBmZWQ4MDAwMC0wMDAwMGZlZDhmZmZmIHR5cGU9MTEgYXR0cj04MDAwMDAwMDAw
MDAwMDAxCihYRU4pICAwMDAwMGZmMDAwMDAwLTAwMDAwZmZmZmZmZmYgdHlwZT0xMSBhdHRyPTgw
MDAwMDAwMDAwMDAwMDEKKFhFTikgIDAwMDQwM2RiYzAwMDAtMDAwNDAzZmZmZmZmZiB0eXBlPTAg
YXR0cj0wMDAwMDAwMDAwMDAwMDBmCihYRU4pIGFsdCB0YWJsZSBmZmZmODJkMDQwNDViZDk4IC0+
IGZmZmY4MmQwNDA0NjdiNzgKKFhFTikgSS9PIHZpcnR1YWxpc2F0aW9uIGVuYWJsZWQKKFhFTikg
IC0gRG9tMCBtb2RlOiBSZWxheGVkCihYRU4pIEludGVycnVwdCByZW1hcHBpbmcgZW5hYmxlZAoo
WEVOKSBucl9zb2NrZXRzOiAxCihYRU4pIEVuYWJsZWQgZGlyZWN0ZWQgRU9JIHdpdGggaW9hcGlj
X2Fja19vbGQgb24hCihYRU4pIEVuYWJsaW5nIEFQSUMgbW9kZTogIENsdXN0ZXJlZC4gIFVzaW5n
IDUgSS9PIEFQSUNzCihYRU4pIEVOQUJMSU5HIElPLUFQSUMgSVJRcwooWEVOKSAgLT4gVXNpbmcg
b2xkIEFDSyBtZXRob2QKKFhFTikgLi5USU1FUjogdmVjdG9yPTB4RjAgYXBpYzE9MCBwaW4xPTIg
YXBpYzI9LTEgcGluMj0tMQooWEVOKSBEZWZhdWx0aW5nIHRvIGFsdGVybmF0aXZlIGtleSBoYW5k
bGluZzsgc2VuZCAnQScgdG8gc3dpdGNoIHRvIG5vcm1hbCBtb2RlLgooWEVOKSBBbGxvY2F0ZWQg
Y29uc29sZSByaW5nIG9mIDUxMiBLaUIuCihYRU4pIG13YWl0LWlkbGU6IGRvZXMgbm90IHJ1biBv
biBmYW1pbHkgMjUgbW9kZWwgMjQKKFhFTikgSFZNOiBBU0lEcyBlbmFibGVkLgooWEVOKSBTVk06
IFN1cHBvcnRlZCBhZHZhbmNlZCBmZWF0dXJlczoKKFhFTikgIC0gTmVzdGVkIFBhZ2UgVGFibGVz
IChOUFQpCihYRU4pICAtIExhc3QgQnJhbmNoIFJlY29yZCAoTEJSKSBWaXJ0dWFsaXNhdGlvbgoo
WEVOKSAgLSBOZXh0LVJJUCBTYXZlZCBvbiAjVk1FWElUCihYRU4pICAtIFZNQ0IgQ2xlYW4gQml0
cwooWEVOKSAgLSBEZWNvZGVBc3Npc3RzCihYRU4pICAtIFZpcnR1YWwgVk1MT0FEL1ZNU0FWRQoo
WEVOKSAgLSBWaXJ0dWFsIEdJRgooWEVOKSAgLSBQYXVzZS1JbnRlcmNlcHQgRmlsdGVyCihYRU4p
ICAtIFBhdXNlLUludGVyY2VwdCBGaWx0ZXIgVGhyZXNob2xkCihYRU4pICAtIFRTQyBSYXRlIE1T
UgooWEVOKSAgLSBOUFQgU3VwZXJ2aXNvciBTaGFkb3cgU3RhY2sKKFhFTikgIC0gTVNSX1NQRUNf
Q1RSTCB2aXJ0dWFsaXNhdGlvbgooWEVOKSBIVk06IFNWTSBlbmFibGVkCihYRU4pIEhWTTogSGFy
ZHdhcmUgQXNzaXN0ZWQgUGFnaW5nIChIQVApIGRldGVjdGVkCihYRU4pIEhWTTogSEFQIHBhZ2Ug
c2l6ZXM6IDRrQiwgMk1CLCAxR0IKKFhFTikgYWx0IHRhYmxlIGZmZmY4MmQwNDA0NWJkOTggLT4g
ZmZmZjgyZDA0MDQ2N2I3OAooWEVOKSBCcm91Z2h0IHVwIDQ4IENQVXMKKFhFTikgU2NoZWR1bGlu
ZyBncmFudWxhcml0eTogY3B1LCAxIENQVSBwZXIgc2NoZWQtcmVzb3VyY2UKKFhFTikgSW5pdGlh
bGl6aW5nIENyZWRpdDIgc2NoZWR1bGVyCihYRU4pICBsb2FkX3ByZWNpc2lvbl9zaGlmdDogMTgK
KFhFTikgIGxvYWRfd2luZG93X3NoaWZ0OiAzMAooWEVOKSAgdW5kZXJsb2FkX2JhbGFuY2VfdG9s
ZXJhbmNlOiAwCihYRU4pICBvdmVybG9hZF9iYWxhbmNlX3RvbGVyYW5jZTogLTMKKFhFTikgIHJ1
bnF1ZXVlcyBhcnJhbmdlbWVudDogc29ja2V0CihYRU4pICBjYXAgZW5mb3JjZW1lbnQgZ3JhbnVs
YXJpdHk6IDEwbXMKKFhFTikgbG9hZCB0cmFja2luZyB3aW5kb3cgbGVuZ3RoIDEwNzM3NDE4MjQg
bnMKKFhFTikgQWRkaW5nIGNwdSAwIHRvIHJ1bnF1ZXVlIDAKKFhFTikgIEZpcnN0IGNwdSBvbiBy
dW5xdWV1ZSwgYWN0aXZhdGluZwooWEVOKSBBZGRpbmcgY3B1IDEgdG8gcnVucXVldWUgMAooWEVO
KSBBZGRpbmcgY3B1IDIgdG8gcnVucXVldWUgMAooWEVOKSBBZGRpbmcgY3B1IDMgdG8gcnVucXVl
dWUgMAooWEVOKSBBZGRpbmcgY3B1IDQgdG8gcnVucXVldWUgMAooWEVOKSBBZGRpbmcgY3B1IDUg
dG8gcnVucXVldWUgMAooWEVOKSBBZGRpbmcgY3B1IDYgdG8gcnVucXVldWUgMAooWEVOKSBBZGRp
bmcgY3B1IDcgdG8gcnVucXVldWUgMAooWEVOKSBBZGRpbmcgY3B1IDggdG8gcnVucXVldWUgMAoo
WEVOKSBBZGRpbmcgY3B1IDkgdG8gcnVucXVldWUgMAooWEVOKSBBZGRpbmcgY3B1IDEwIHRvIHJ1
bnF1ZXVlIDAKKFhFTikgQWRkaW5nIGNwdSAxMSB0byBydW5xdWV1ZSAwCihYRU4pIEFkZGluZyBj
cHUgMTIgdG8gcnVucXVldWUgMAooWEVOKSBBZGRpbmcgY3B1IDEzIHRvIHJ1bnF1ZXVlIDAKKFhF
TikgQWRkaW5nIGNwdSAxNCB0byBydW5xdWV1ZSAwCihYRU4pIEFkZGluZyBjcHUgMTUgdG8gcnVu
cXVldWUgMAooWEVOKSBBZGRpbmcgY3B1IDE2IHRvIHJ1bnF1ZXVlIDEKKFhFTikgIEZpcnN0IGNw
dSBvbiBydW5xdWV1ZSwgYWN0aXZhdGluZwooWEVOKSBBZGRpbmcgY3B1IDE3IHRvIHJ1bnF1ZXVl
IDEKKFhFTikgQWRkaW5nIGNwdSAxOCB0byBydW5xdWV1ZSAxCihYRU4pIEFkZGluZyBjcHUgMTkg
dG8gcnVucXVldWUgMQooWEVOKSBBZGRpbmcgY3B1IDIwIHRvIHJ1bnF1ZXVlIDEKKFhFTikgQWRk
aW5nIGNwdSAyMSB0byBydW5xdWV1ZSAxCihYRU4pIEFkZGluZyBjcHUgMjIgdG8gcnVucXVldWUg
MQooWEVOKSBBZGRpbmcgY3B1IDIzIHRvIHJ1bnF1ZXVlIDEKKFhFTikgQWRkaW5nIGNwdSAyNCB0
byBydW5xdWV1ZSAxCihYRU4pIEFkZGluZyBjcHUgMjUgdG8gcnVucXVldWUgMQooWEVOKSBBZGRp
bmcgY3B1IDI2IHRvIHJ1bnF1ZXVlIDEKKFhFTikgQWRkaW5nIGNwdSAyNyB0byBydW5xdWV1ZSAx
CihYRU4pIEFkZGluZyBjcHUgMjggdG8gcnVucXVldWUgMQooWEVOKSBBZGRpbmcgY3B1IDI5IHRv
IHJ1bnF1ZXVlIDEKKFhFTikgQWRkaW5nIGNwdSAzMCB0byBydW5xdWV1ZSAxCihYRU4pIEFkZGlu
ZyBjcHUgMzEgdG8gcnVucXVldWUgMQooWEVOKSBBZGRpbmcgY3B1IDMyIHRvIHJ1bnF1ZXVlIDIK
KFhFTikgIEZpcnN0IGNwdSBvbiBydW5xdWV1ZSwgYWN0aXZhdGluZwooWEVOKSBBZGRpbmcgY3B1
IDMzIHRvIHJ1bnF1ZXVlIDIKKFhFTikgQWRkaW5nIGNwdSAzNCB0byBydW5xdWV1ZSAyCihYRU4p
IEFkZGluZyBjcHUgMzUgdG8gcnVucXVldWUgMgooWEVOKSBBZGRpbmcgY3B1IDM2IHRvIHJ1bnF1
ZXVlIDIKKFhFTikgQWRkaW5nIGNwdSAzNyB0byBydW5xdWV1ZSAyCihYRU4pIEFkZGluZyBjcHUg
MzggdG8gcnVucXVldWUgMgooWEVOKSBBZGRpbmcgY3B1IDM5IHRvIHJ1bnF1ZXVlIDIKKFhFTikg
QWRkaW5nIGNwdSA0MCB0byBydW5xdWV1ZSAyCihYRU4pIEFkZGluZyBjcHUgNDEgdG8gcnVucXVl
dWUgMgooWEVOKSBBZGRpbmcgY3B1IDQyIHRvIHJ1bnF1ZXVlIDIKKFhFTikgQWRkaW5nIGNwdSA0
MyB0byBydW5xdWV1ZSAyCihYRU4pIEFkZGluZyBjcHUgNDQgdG8gcnVucXVldWUgMgooWEVOKSBB
ZGRpbmcgY3B1IDQ1IHRvIHJ1bnF1ZXVlIDIKKFhFTikgQWRkaW5nIGNwdSA0NiB0byBydW5xdWV1
ZSAyCihYRU4pIEFkZGluZyBjcHUgNDcgdG8gcnVucXVldWUgMgooWEVOKSBtY2hlY2tfcG9sbDog
TWFjaGluZSBjaGVjayBwb2xsaW5nIHRpbWVyIHN0YXJ0ZWQuCihYRU4pIE5YIChFeGVjdXRlIERp
c2FibGUpIHByb3RlY3Rpb24gYWN0aXZlCihYRU4pIERvbTAgaGFzIG1heGltdW0gMTQwMCBQSVJR
cwooWEVOKSAqKiogQnVpbGRpbmcgYSBQViBEb20wICoqKgooWEVOKSAgWGVuICBrZXJuZWw6IDY0
LWJpdCwgbHNiCihYRU4pICBEb20wIGtlcm5lbDogNjQtYml0LCBsc2IsIHBhZGRyIDB4MTAwMDAw
MCAtPiAweDRhMDAwMDAKKFhFTikgUEhZU0lDQUwgTUVNT1JZIEFSUkFOR0VNRU5UOgooWEVOKSAg
RG9tMCBhbGxvYy46ICAgMDAwMDAwM2ZjODAwMDAwMC0+MDAwMDAwM2ZkMDAwMDAwMCAoMjA1NDgy
NSBwYWdlcyB0byBiZSBhbGxvY2F0ZWQpCihYRU4pICBJbml0LiByYW1kaXNrOiAwMDAwMDA0MDNi
NGE5MDAwLT4wMDAwMDA0MDNkOWZmMjBlCihYRU4pIFZJUlRVQUwgTUVNT1JZIEFSUkFOR0VNRU5U
OgooWEVOKSAgTG9hZGVkIGtlcm5lbDogZmZmZmZmZmY4MTAwMDAwMC0+ZmZmZmZmZmY4NGEwMDAw
MAooWEVOKSAgUGh5cy1NYWNoIG1hcDogMDAwMDAwODAwMDAwMDAwMC0+MDAwMDAwODAwMTAwMDAw
MAooWEVOKSAgU3RhcnQgaW5mbzogICAgZmZmZmZmZmY4NGEwMDAwMC0+ZmZmZmZmZmY4NGEwMDRi
OAooWEVOKSAgUGFnZSB0YWJsZXM6ICAgZmZmZmZmZmY4NGEwMTAwMC0+ZmZmZmZmZmY4NGEyYTAw
MAooWEVOKSAgQm9vdCBzdGFjazogICAgZmZmZmZmZmY4NGEyYTAwMC0+ZmZmZmZmZmY4NGEyYjAw
MAooWEVOKSAgVE9UQUw6ICAgICAgICAgZmZmZmZmZmY4MDAwMDAwMC0+ZmZmZmZmZmY4NGMwMDAw
MAooWEVOKSAgRU5UUlkgQUREUkVTUzogZmZmZmZmZmY4MzA2ZTFjMAooWEVOKSBEb20wIGhhcyBt
YXhpbXVtIDQ4IFZDUFVzCihYRU4pIEluaXRpYWwgbG93IG1lbW9yeSB2aXJxIHRocmVzaG9sZCBz
ZXQgYXQgMHg0MDAwIHBhZ2VzLgooWEVOKSBTY3J1YmJpbmcgRnJlZSBSQU0gaW4gYmFja2dyb3Vu
ZAooWEVOKSBTdGQuIExvZ2xldmVsOiBBbGwKKFhFTikgR3Vlc3QgTG9nbGV2ZWw6IEFsbAooWEVO
KSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKFhF
TikgV0FSTklORzogQ09OU09MRSBPVVRQVVQgSVMgU1lOQ0hST05PVVMKKFhFTikgVGhpcyBvcHRp
b24gaXMgaW50ZW5kZWQgdG8gYWlkIGRlYnVnZ2luZyBvZiBYZW4gYnkgZW5zdXJpbmcKKFhFTikg
dGhhdCBhbGwgb3V0cHV0IGlzIHN5bmNocm9ub3VzbHkgZGVsaXZlcmVkIG9uIHRoZSBzZXJpYWwg
bGluZS4KKFhFTikgSG93ZXZlciBpdCBjYW4gaW50cm9kdWNlIFNJR05JRklDQU5UIGxhdGVuY2ll
cyBhbmQgYWZmZWN0CihYRU4pIHRpbWVrZWVwaW5nLiBJdCBpcyBOT1QgcmVjb21tZW5kZWQgZm9y
IHByb2R1Y3Rpb24gdXNlIQooWEVOKSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioKKFhFTikgMy4uLiAyLi4uIDEuLi4gCihYRU4pIFhlbiBpcyByZWxp
bnF1aXNoaW5nIFZHQSBjb25zb2xlLgooWEVOKSAqKiogU2VyaWFsIGlucHV0IHRvIERPTTAgKHR5
cGUgJ0NUUkwtYScgdGhyZWUgdGltZXMgdG8gc3dpdGNoIGlucHV0KQooWEVOKSBGcmVlZCA2NjBr
QiBpbml0IG1lbW9yeQptYXBwaW5nIGtlcm5lbCBpbnRvIHBoeXNpY2FsIG1lbW9yeQphYm91dCB0
byBnZXQgc3RhcnRlZC4uLgpYZW4gaHlwZXJ2aXNvciBhbGxvY2F0ZWQga2VybmVsIG1lbW9yeSBj
b25mbGljdHMgd2l0aCBFODIwIG1hcApYZW4gaHlwZXJ2aXNvciBhbGxvY2F0ZWQga2VybmVsIG1l
bW9yeSBjb25mbGljdHMgd2l0aCBFODIwIG1hcDogMHgxMDAwMDAwIC0gMHg0NDAwMDAwCihYRU4p
IEhhcmR3YXJlIERvbTAgaGFsdGVkOiBoYWx0aW5nIG1hY2hpbmUK
--0000000000003412b4060f3269fc
Content-Type: text/x-log; charset="US-ASCII"; name="xen-4.17_grub_linux6_pv.log"
Content-Disposition: attachment; filename="xen-4.17_grub_linux6_pv.log"
Content-Transfer-Encoding: base64
Content-ID: <f_lritskls5>
X-Attachment-Id: f_lritskls5

KFhFTikgWGVuIHZlcnNpb24gNC4xNy4zLXByZSAoRGViaWFuIDQuMTcuMis3Ni1nZTFmOWNiMTZl
Mi0xfmRlYjEydTEpIChwa2cteGVuLWRldmVsQGxpc3RzLmFsaW90aC5kZWJpYW4ub3JnKSAoeDg2
XzY0LWxpbnV4LWdudS1nY2MgKERlYmlhbiAxMi4yLjAtMTQpIDEyLjIuMCkgZGVidWc9biBTYXQg
RGVjICAyIDE2OjU4OjA4IFVUQyAyMDIzCihYRU4pIGJ1aWxkLWlkOiAxOTMyOWNiN2VlZjZjNTFi
YjIxMDQzOTU3OWE3NWMzN2Q0MWJhZTY2CihYRU4pIENvbnNvbGUgb3V0cHV0IGlzIHN5bmNocm9u
b3VzLgooWEVOKSBCb290bG9hZGVyOiBHUlVCIDIuMDYtMTMrZGViMTJ1MQooWEVOKSBDb21tYW5k
IGxpbmU6IHBsYWNlaG9sZGVyIGRvbTBfbWVtPThHLG1heDo4RyBsb2dsdmw9YWxsIGU4MjAtdmVy
Ym9zZT10cnVlIGNvbnNvbGVfdG9fcmluZyBzeW5jX2NvbnNvbGUgZ3Vlc3RfbG9nbHZsPWFsbCBj
b20xPTExNTIwMCw4bjEgY29uc29sZT1jb20xLHZnYSBuby1yZWFsLW1vZGUgZWRkPW9mZgooWEVO
KSBYZW4gaW1hZ2UgbG9hZCBiYXNlIGFkZHJlc3M6IDB4OWY2MDAwMDAKKFhFTikgVmlkZW8gaW5m
b3JtYXRpb246CihYRU4pICBWR0EgaXMgZ3JhcGhpY3MgbW9kZSAyNTYweDE0NDAsIDMyIGJwcAoo
WEVOKSAgVkJFL0REQyBtZXRob2RzOiBub25lOyBFRElEIHRyYW5zZmVyIHRpbWU6IDAgc2Vjb25k
cwooWEVOKSBEaXNjIGluZm9ybWF0aW9uOgooWEVOKSAgRm91bmQgMCBNQlIgc2lnbmF0dXJlcwoo
WEVOKSAgRm91bmQgNiBFREQgaW5mb3JtYXRpb24gc3RydWN0dXJlcwooWEVOKSBDUFUgVmVuZG9y
OiBBTUQsIEZhbWlseSAyNSAoMHgxOSksIE1vZGVsIDI0ICgweDE4KSwgU3RlcHBpbmcgMSAocmF3
IDAwYTEwZjgxKQooWEVOKSBFbmFibGluZyBTdXBlcnZpc29yIFNoYWRvdyBTdGFja3MKKFhFTikg
SW5pdGlhbCBFRkkgUkFNIG1hcDoKKFhFTikgIFswMDAwMDAwMDAwMDAwMDAwLCAwMDAwMDAwMDAw
MDlmZmZmXSAodXNhYmxlKQooWEVOKSAgWzAwMDAwMDAwMDAxMDAwMDAsIDAwMDAwMDAwMDNmZmZm
ZmZdICh1c2FibGUpCihYRU4pICBbMDAwMDAwMDAwNDAwMDAwMCwgMDAwMDAwMDAwNDA0NWZmZl0g
KEFDUEkgTlZTKQooWEVOKSAgWzAwMDAwMDAwMDQwNDYwMDAsIDAwMDAwMDAwMDlhZmVmZmZdICh1
c2FibGUpCihYRU4pICBbMDAwMDAwMDAwOWFmZjAwMCwgMDAwMDAwMDAwOWZmZmZmZl0gKHJlc2Vy
dmVkKQooWEVOKSAgWzAwMDAwMDAwMGEwMDAwMDAsIDAwMDAwMDAwMGFmZmZmZmZdICh1c2FibGUp
CihYRU4pICBbMDAwMDAwMDAwYjAwMDAwMCwgMDAwMDAwMDAwYjAyMGZmZl0gKHJlc2VydmVkKQoo
WEVOKSAgWzAwMDAwMDAwMGIwMjEwMDAsIDAwMDAwMDAwYTA0ZThmZmZdICh1c2FibGUpCihYRU4p
ICBbMDAwMDAwMDBhMDRlOTAwMCwgMDAwMDAwMDBhNjRlOGZmZl0gKHJlc2VydmVkKQooWEVOKSAg
WzAwMDAwMDAwYTY0ZTkwMDAsIDAwMDAwMDAwYTc0N2VmZmZdIChBQ1BJIGRhdGEpCihYRU4pICBb
MDAwMDAwMDBhNzQ3ZjAwMCwgMDAwMDAwMDBhOTQ3ZWZmZl0gKEFDUEkgTlZTKQooWEVOKSAgWzAw
MDAwMDAwYTk0N2YwMDAsIDAwMDAwMDAwYWRkZmVmZmZdIChyZXNlcnZlZCkKKFhFTikgIFswMDAw
MDAwMGFkZGZmMDAwLCAwMDAwMDAwMGFmZmZhZmZmXSAodXNhYmxlKQooWEVOKSAgWzAwMDAwMDAw
YWZmZmIwMDAsIDAwMDAwMDAwYWZmZmZmZmZdIChyZXNlcnZlZCkKKFhFTikgIFswMDAwMDAwMTAw
MDAwMDAwLCAwMDAwMDA0MDNkYmJmZmZmXSAodXNhYmxlKQooWEVOKSAgWzAwMDAwMDAwMDAwYTAw
MDAsIDAwMDAwMDAwMDAwZmZmZmZdIChyZXNlcnZlZCkKKFhFTikgIFswMDAwMDAwMGIwMDAwMDAw
LCAwMDAwMDAwMGJmZmZmZmZmXSAocmVzZXJ2ZWQpCihYRU4pICBbMDAwMDAwMDBkZjIwMDAwMCwg
MDAwMDAwMDBkZjJmZmZmZl0gKHJlc2VydmVkKQooWEVOKSAgWzAwMDAwMDAwZTAwMDAwMDAsIDAw
MDAwMDAwZWZmZmZmZmZdIChyZXNlcnZlZCkKKFhFTikgIFswMDAwMDAwMGZlYTAwMDAwLCAwMDAw
MDAwMGZlYWZmZmZmXSAocmVzZXJ2ZWQpCihYRU4pICBbMDAwMDAwMDBmZWMwMDAwMCwgMDAwMDAw
MDBmZWMwMGZmZl0gKHJlc2VydmVkKQooWEVOKSAgWzAwMDAwMDAwZmVjMTAwMDAsIDAwMDAwMDAw
ZmVjMTBmZmZdIChyZXNlcnZlZCkKKFhFTikgIFswMDAwMDAwMGZlYzMwMDAwLCAwMDAwMDAwMGZl
YzMwZmZmXSAocmVzZXJ2ZWQpCihYRU4pICBbMDAwMDAwMDBmZWQwMDAwMCwgMDAwMDAwMDBmZWQw
MGZmZl0gKHJlc2VydmVkKQooWEVOKSAgWzAwMDAwMDAwZmVkNDAwMDAsIDAwMDAwMDAwZmVkNDRm
ZmZdIChyZXNlcnZlZCkKKFhFTikgIFswMDAwMDAwMGZlZDgwMDAwLCAwMDAwMDAwMGZlZDhmZmZm
XSAocmVzZXJ2ZWQpCihYRU4pICBbMDAwMDAwMDBmZjAwMDAwMCwgMDAwMDAwMDBmZmZmZmZmZl0g
KHJlc2VydmVkKQooWEVOKSAgWzAwMDAwMDQwM2RiYzAwMDAsIDAwMDAwMDQwM2ZmZmZmZmZdIChy
ZXNlcnZlZCkKKFhFTikgRUZJIFJBTSBtYXA6CihYRU4pICBbMDAwMDAwMDAwMDAwMDAwMCwgMDAw
MDAwMDAwMDA5ZmZmZl0gKHVzYWJsZSkKKFhFTikgIFswMDAwMDAwMDAwMGEwMDAwLCAwMDAwMDAw
MDAwMGZmZmZmXSAocmVzZXJ2ZWQpCihYRU4pICBbMDAwMDAwMDAwMDEwMDAwMCwgMDAwMDAwMDAw
M2ZmZmZmZl0gKHVzYWJsZSkKKFhFTikgIFswMDAwMDAwMDA0MDAwMDAwLCAwMDAwMDAwMDA0MDQ1
ZmZmXSAoQUNQSSBOVlMpCihYRU4pICBbMDAwMDAwMDAwNDA0NjAwMCwgMDAwMDAwMDAwOWFmZWZm
Zl0gKHVzYWJsZSkKKFhFTikgIFswMDAwMDAwMDA5YWZmMDAwLCAwMDAwMDAwMDA5ZmZmZmZmXSAo
cmVzZXJ2ZWQpCihYRU4pICBbMDAwMDAwMDAwYTAwMDAwMCwgMDAwMDAwMDAwYWZmZmZmZl0gKHVz
YWJsZSkKKFhFTikgIFswMDAwMDAwMDBiMDAwMDAwLCAwMDAwMDAwMDBiMDIwZmZmXSAocmVzZXJ2
ZWQpCihYRU4pICBbMDAwMDAwMDAwYjAyMTAwMCwgMDAwMDAwMDBhMDRlOGZmZl0gKHVzYWJsZSkK
KFhFTikgIFswMDAwMDAwMGEwNGU5MDAwLCAwMDAwMDAwMGE2NGU4ZmZmXSAocmVzZXJ2ZWQpCihY
RU4pICBbMDAwMDAwMDBhNjRlOTAwMCwgMDAwMDAwMDBhNzQ3ZWZmZl0gKEFDUEkgZGF0YSkKKFhF
TikgIFswMDAwMDAwMGE3NDdmMDAwLCAwMDAwMDAwMGE5NDdlZmZmXSAoQUNQSSBOVlMpCihYRU4p
ICBbMDAwMDAwMDBhOTQ3ZjAwMCwgMDAwMDAwMDBhZGRmZWZmZl0gKHJlc2VydmVkKQooWEVOKSAg
WzAwMDAwMDAwYWRkZmYwMDAsIDAwMDAwMDAwYWZmZmFmZmZdICh1c2FibGUpCihYRU4pICBbMDAw
MDAwMDBhZmZmYjAwMCwgMDAwMDAwMDBiZmZmZmZmZl0gKHJlc2VydmVkKQooWEVOKSAgWzAwMDAw
MDAwZGYyMDAwMDAsIDAwMDAwMDAwZGYyZmZmZmZdIChyZXNlcnZlZCkKKFhFTikgIFswMDAwMDAw
MGUwMDAwMDAwLCAwMDAwMDAwMGVmZmZmZmZmXSAocmVzZXJ2ZWQpCihYRU4pICBbMDAwMDAwMDBm
ZWEwMDAwMCwgMDAwMDAwMDBmZWFmZmZmZl0gKHJlc2VydmVkKQooWEVOKSAgWzAwMDAwMDAwZmVj
MDAwMDAsIDAwMDAwMDAwZmVjMDBmZmZdIChyZXNlcnZlZCkKKFhFTikgIFswMDAwMDAwMGZlYzEw
MDAwLCAwMDAwMDAwMGZlYzEwZmZmXSAocmVzZXJ2ZWQpCihYRU4pICBbMDAwMDAwMDBmZWMzMDAw
MCwgMDAwMDAwMDBmZWMzMGZmZl0gKHJlc2VydmVkKQooWEVOKSAgWzAwMDAwMDAwZmVkMDAwMDAs
IDAwMDAwMDAwZmVkMDBmZmZdIChyZXNlcnZlZCkKKFhFTikgIFswMDAwMDAwMGZlZDQwMDAwLCAw
MDAwMDAwMGZlZDQ0ZmZmXSAocmVzZXJ2ZWQpCihYRU4pICBbMDAwMDAwMDBmZWQ4MDAwMCwgMDAw
MDAwMDBmZWQ4ZmZmZl0gKHJlc2VydmVkKQooWEVOKSAgWzAwMDAwMDAwZmYwMDAwMDAsIDAwMDAw
MDAwZmZmZmZmZmZdIChyZXNlcnZlZCkKKFhFTikgIFswMDAwMDAwMTAwMDAwMDAwLCAwMDAwMDA0
MDNkYmJmZmZmXSAodXNhYmxlKQooWEVOKSAgWzAwMDAwMDQwM2RiYzAwMDAsIDAwMDAwMDQwM2Zm
ZmZmZmZdIChyZXNlcnZlZCkKKFhFTikgQUNQSTogUlNEUCBBOTQ2MzAxNCwgMDAyNCAocjIgQU1E
ICAgKQooWEVOKSBBQ1BJOiBYU0RUIEE5NDYyNzI4LCAwMTFDIChyMSBBTUQgICAgICBBIE0gSSAg
ICAgICAgIDEgQU1JICAgMTAwMDAxMykKKFhFTikgQUNQSTogRkFDUCBBNzQ3QzAwMCwgMDExNCAo
cjYgQU1EICAgICAgQSBNIEkgICAgICAgICAxIEFNSSAgICAgMTAwMTMpCihYRU4pIEFDUEk6IERT
RFQgQTc0NkUwMDAsIEQyRjYgKHIyIEFNRCAgICAgIEEgTSBJICAgICAgICAgMSBJTlRMIDIwMjMw
MzMxKQooWEVOKSBBQ1BJOiBGQUNTIEE5NDVBMDAwLCAwMDQwCihYRU4pIEFDUEk6IFNTRFQgQTc0
N0UwMDAsIDA5Q0MgKHIyICAgIEFNRCBCT1VMREVSRyAgICAgICAgMiBNU0ZUICA0MDAwMDAwKQoo
WEVOKSBBQ1BJOiBTU0RUIEE3NDdEMDAwLCAwMDY3IChyMiAgICBBTUQgICBDUE1EU00gICAgICAg
IDEgSU5UTCAyMDIzMDMzMSkKKFhFTikgQUNQSTogRklEVCBBNzQ2RDAwMCwgMDA5QyAocjEgICAg
QU1EICAgIEEgTSBJICAgICAgICAxIEFNSSAgICAgMTAwMTMpCihYRU4pIEFDUEk6IE1DRkcgQTc0
NkMwMDAsIDAwM0MgKHIxICAgIEFNRCAgICBBIE0gSSAgICAgICAgMSBNU0ZUICAgIDEwMDEzKQoo
WEVOKSBBQ1BJOiBTU0RUIEE3NDZCMDAwLCAwNUM1IChyMiAgICBBTUQgIENQVVNTRFQgICAgICAg
IDEgQU1JICAgICAgICAgMSkKKFhFTikgQUNQSTogSFBFVCBBNzQ2QTAwMCwgMDAzOCAocjEgICAg
QU1EICAgIEEgTSBJICAgICAgICAxIEFNSSAgICAgICAgIDUpCihYRU4pIEFDUEk6IFNTRFQgQTc0
NjgwMDAsIDFCNTMgKHIyICAgIEFNRCAgIENQTVJBUyAgICAgICAgMSBJTlRMIDIwMjMwMzMxKQoo
WEVOKSBBQ1BJOiBCRVJUIEE3NDY3MDAwLCAwMDMwIChyMSBBTUQgICAgQU1EIEJFUlQgICAgICAg
IDEgQU1EICAgICAgICAgMSkKKFhFTikgQUNQSTogRlBEVCBBNzQ2NTAwMCwgMDA0NCAocjEgQU1E
ICAgICAgQSBNIEkgICAxMDcyMDA5IEFNSSAgIDEwMDAwMTMpCihYRU4pIEFDUEk6IFNTRFQgQTc0
NjIwMDAsIDI0NDggKHIyICAgIEFNRCBHUFBfUE1FXyAgICAgICAgMSBJTlRMIDIwMjMwMzMxKQoo
WEVOKSBBQ1BJOiBTU0RUIEE3NDVGMDAwLCAyNDQ4IChyMiAgICBBTUQgR1BQX1BNRV8gICAgICAg
IDEgSU5UTCAyMDIzMDMzMSkKKFhFTikgQUNQSTogU1NEVCBBNzQ1QzAwMCwgMjQ0OCAocjIgICAg
QU1EIEdQUF9QTUVfICAgICAgICAxIElOVEwgMjAyMzAzMzEpCihYRU4pIEFDUEk6IFNTRFQgQTc0
NTkwMDAsIDI0NDggKHIyICAgIEFNRCBHUFBfUE1FXyAgICAgICAgMSBJTlRMIDIwMjMwMzMxKQoo
WEVOKSBBQ1BJOiBWRkNUIEE3NDRBMDAwLCBFNjg0IChyMSBBTUQgICAgICBBIE0gSSAgICAgICAg
IDEgIEFNRCAzMTUwNEY0NykKKFhFTikgQUNQSTogU1NEVCBBNzQzRTAwMCwgQTQwRSAocjIgICAg
QU1EICBBTUQgQ1BVICAgICAgICAxIEFNRCAgICAgICAgIDEpCihYRU4pIEFDUEk6IEhNQVQgQTc0
M0QwMDAsIDAwQTQgKHIyICAgIEFNRCBBbWRUYWJsZSAgICAgICAgMSBBTUQgICAgICAgICAxKQoo
WEVOKSBBQ1BJOiBXUEJUIEE2ODRFMDAwLCAwMDM2IChyMSAgICBBTUQgICAgQSBNIEkgICAgICAg
IDEgTVNGVCAgICAxMDAxMykKKFhFTikgQUNQSTogQkdSVCBBNzQ0OTAwMCwgMDAzOCAocjEgQU1E
ICAgICAgQSBNIEkgICAgICAgICAxIEFNSSAgICAgMTAwMTMpCihYRU4pIEFDUEk6IElWUlMgQTY4
NEQwMDAsIDAxRTggKHIyICBBTUQgICBBbWRUYWJsZSAgICAgICAgMSBBTUQgICAgICAgICAxKQoo
WEVOKSBBQ1BJOiBTU0RUIEE2ODRDMDAwLCAwNkQ0IChyMiAgICBBTUQgIENQTVdMUkMgICAgICAg
IDEgSU5UTCAyMDIzMDMzMSkKKFhFTikgQUNQSTogU1NEVCBBNjg0MjAwMCwgOTgyRiAocjIgICAg
QU1EICAgQ1BNQ01OICAgICAgICAxIElOVEwgMjAyMzAzMzEpCihYRU4pIEFDUEk6IFdTTVQgQTY4
NDEwMDAsIDAwMjggKHIxIEFNRCAgICAgIEEgTSBJICAgICAgICAgMSBBTUkgICAgIDEwMDEzKQoo
WEVOKSBBQ1BJOiBBUElDIEE2ODNGMDAwLCAxMDg4IChyNiBBTUQgICAgICBBIE0gSSAgICAgICAg
IDEgQU1JICAgICAxMDAxMykKKFhFTikgQUNQSTogU1NEVCBBNjgzQzAwMCwgMjM4NyAocjIgICAg
QU1EIEFPRCAgICAgICAgICAgICAxIElOVEwgMjAyMzAzMzEpCihYRU4pIEFDUEk6IFNTRFQgQTY4
M0IwMDAsIDA1MDAgKHIyICAgIEFNRCBNRU1UT09MMCAgICAgICAgMiBJTlRMIDIwMjMwMzMxKQoo
WEVOKSBBQ1BJOiBTU0RUIEE2ODNBMDAwLCAwOTZBIChyMiAgICBBTUQgQ1BNTVNPU0MgICAgICAg
IDEgSU5UTCAyMDIzMDMzMSkKKFhFTikgQUNQSTogU1NEVCBBNjgzOTAwMCwgMEI3MiAocjIgICAg
QU1EIENQTUFDUFY2ICAgICAgICAxIElOVEwgMjAyMzAzMzEpCihYRU4pIEFDUEk6IFNTRFQgQTY4
MzgwMDAsIDA0NEUgKHIyICAgIEFNRCBBbWRUYWJsZSAgICAgICAgMSBJTlRMIDIwMjMwMzMxKQoo
WEVOKSBBQ1BJOiBFUlNUIEE2ODM3MDAwLCAwMjMwIChyMSAgQU1JRVIgQU1JLkVSU1QgICAgICAg
IDAgQU1JLiAgICAgICAgMCkKKFhFTikgQUNQSTogSEVTVCBBNjgwNjAwMCwgMzBBMTQgKHIxIEFN
RCAgICBBTUQgSEVTVCAgICAgICAgMSBBTUQgICAgICAgICAxKQooWEVOKSBTeXN0ZW0gUkFNOiAy
NjE2MjhNQiAoMjY3OTA3OTU2a0IpCihYRU4pIE5vIE5VTUEgY29uZmlndXJhdGlvbiBmb3VuZAoo
WEVOKSBGYWtpbmcgYSBub2RlIGF0IDAwMDAwMDAwMDAwMDAwMDAtMDAwMDAwNDAzZGJjMDAwMAoo
WEVOKSBEb21haW4gaGVhcCBpbml0aWFsaXNlZAooWEVOKSB2ZXNhZmI6IGZyYW1lYnVmZmVyIGF0
IDB4MDAwMDA0ZDgwMDAwMDAwMCwgbWFwcGVkIHRvIDB4ZmZmZjgyYzAwMDIwMTAwMCwgdXNpbmcg
MTQ0MDBrLCB0b3RhbCAxNDQwMGsKKFhFTikgdmVzYWZiOiBtb2RlIGlzIDI1NjB4MTQ0MHgzMiwg
bGluZWxlbmd0aD0xMDI0MCwgZm9udCA4eDE2CihYRU4pIHZlc2FmYjogVHJ1ZWNvbG9yOiBzaXpl
PTg6ODo4OjgsIHNoaWZ0PTI0OjE2Ojg6MAooWEVOKSBTTUJJT1MgMy42IHByZXNlbnQuCihYRU4p
IHgyQVBJQyBtb2RlIGlzIGFscmVhZHkgZW5hYmxlZCBieSBCSU9TLgooWEVOKSBVc2luZyBBUElD
IGRyaXZlciB4MmFwaWNfY2x1c3RlcgooWEVOKSBBQ1BJOiBQTS1UaW1lciBJTyBQb3J0OiAweDgw
OCAoMzIgYml0cykKKFhFTikgQUNQSTogdjUgU0xFRVAgSU5GTzogY29udHJvbFswOjBdLCBzdGF0
dXNbMDowXQooWEVOKSBBQ1BJOiBTTEVFUCBJTkZPOiBwbTF4X2NudFsxOjgwNCwxOjBdLCBwbTF4
X2V2dFsxOjgwMCwxOjBdCihYRU4pIEFDUEk6IDMyLzY0WCBGQUNTIGFkZHJlc3MgbWlzbWF0Y2gg
aW4gRkFEVCAtIGE5NDVhMDAwLzAwMDAwMDAwMDAwMDAwMDAsIHVzaW5nIDMyCihYRU4pIEFDUEk6
ICAgICAgICAgICAgIHdha2V1cF92ZWNbYTk0NWEwMGNdLCB2ZWNfc2l6ZVsyMF0KKFhFTikgQUNQ
STogTG9jYWwgQVBJQyBhZGRyZXNzIDB4ZmVlMDAwMDAKKFhFTikgQUNQSTogSU9BUElDIChpZFsw
eDgwXSBhZGRyZXNzWzB4ZmVjMDAwMDBdIGdzaV9iYXNlWzBdKQooWEVOKSBJT0FQSUNbMF06IGFw
aWNfaWQgMTI4LCB2ZXJzaW9uIDMzLCBhZGRyZXNzIDB4ZmVjMDAwMDAsIEdTSSAwLTIzCihYRU4p
IEFDUEk6IElPQVBJQyAoaWRbMHg4MV0gYWRkcmVzc1sweGRmMTgwMDAwXSBnc2lfYmFzZVsxMjBd
KQooWEVOKSBJT0FQSUNbMV06IGFwaWNfaWQgMTI5LCB2ZXJzaW9uIDMzLCBhZGRyZXNzIDB4ZGYx
ODAwMDAsIEdTSSAxMjAtMTUxCihYRU4pIEFDUEk6IElPQVBJQyAoaWRbMHg4Ml0gYWRkcmVzc1sw
eGQzMTgwMDAwXSBnc2lfYmFzZVs4OF0pCihYRU4pIElPQVBJQ1syXTogYXBpY19pZCAxMzAsIHZl
cnNpb24gMzMsIGFkZHJlc3MgMHhkMzE4MDAwMCwgR1NJIDg4LTExOQooWEVOKSBBQ1BJOiBJT0FQ
SUMgKGlkWzB4ODNdIGFkZHJlc3NbMHhmNzE4MDAwMF0gZ3NpX2Jhc2VbMjRdKQooWEVOKSBJT0FQ
SUNbM106IGFwaWNfaWQgMTMxLCB2ZXJzaW9uIDMzLCBhZGRyZXNzIDB4ZjcxODAwMDAsIEdTSSAy
NC01NQooWEVOKSBBQ1BJOiBJT0FQSUMgKGlkWzB4ODRdIGFkZHJlc3NbMHhjOTE4MDAwMF0gZ3Np
X2Jhc2VbNTZdKQooWEVOKSBJT0FQSUNbNF06IGFwaWNfaWQgMTMyLCB2ZXJzaW9uIDMzLCBhZGRy
ZXNzIDB4YzkxODAwMDAsIEdTSSA1Ni04NwooWEVOKSBBQ1BJOiBJTlRfU1JDX09WUiAoYnVzIDAg
YnVzX2lycSAwIGdsb2JhbF9pcnEgMiBkZmwgZGZsKQooWEVOKSBBQ1BJOiBJTlRfU1JDX09WUiAo
YnVzIDAgYnVzX2lycSA5IGdsb2JhbF9pcnEgOSBsb3cgbGV2ZWwpCihYRU4pIEFDUEk6IElSUTAg
dXNlZCBieSBvdmVycmlkZS4KKFhFTikgQUNQSTogSVJRMiB1c2VkIGJ5IG92ZXJyaWRlLgooWEVO
KSBBQ1BJOiBJUlE5IHVzZWQgYnkgb3ZlcnJpZGUuCihYRU4pIEFDUEk6IEhQRVQgaWQ6IDB4MTAy
MjgyMDEgYmFzZTogMHhmZWQwMDAwMAooWEVOKSBQQ0k6IE1DRkcgY29uZmlndXJhdGlvbiAwOiBi
YXNlIGUwMDAwMDAwIHNlZ21lbnQgMDAwMCBidXNlcyAwMCAtIGZmCihYRU4pIFBDSTogTUNGRyBh
cmVhIGF0IGUwMDAwMDAwIHJlc2VydmVkIGluIEU4MjAKKFhFTikgUENJOiBVc2luZyBNQ0ZHIGZv
ciBzZWdtZW50IDAwMDAgYnVzIDAwLWZmCihYRU4pIFhlbiBFUlNUIHN1cHBvcnQgaXMgaW5pdGlh
bGl6ZWQuCihYRU4pIEhFU1Q6IFRhYmxlIHBhcnNpbmcgaGFzIGJlZW4gaW5pdGlhbGl6ZWQKKFhF
TikgQUNQSTogQkdSVDogaW52YWxpZGF0aW5nIHYxIGltYWdlIGF0IDB4OWIwZDAwMTgKKFhFTikg
VXNpbmcgQUNQSSAoTUFEVCkgZm9yIFNNUCBjb25maWd1cmF0aW9uIGluZm9ybWF0aW9uCihYRU4p
IFNNUDogQWxsb3dpbmcgNDggQ1BVcyAoMCBob3RwbHVnIENQVXMpCihYRU4pIElSUSBsaW1pdHM6
IDE1MiBHU0ksIDk4MzIgTVNJL01TSS1YCihYRU4pIEFNRC1WaTogSU9NTVUgRXh0ZW5kZWQgRmVh
dHVyZXM6CihYRU4pIC0gUGVyaXBoZXJhbCBQYWdlIFNlcnZpY2UgUmVxdWVzdAooWEVOKSAtIHgy
QVBJQwooWEVOKSAtIE5YIGJpdAooWEVOKSAtIEd1ZXN0IEFQSUMgUGh5c2ljYWwgUHJvY2Vzc29y
IEludGVycnVwdAooWEVOKSAtIEludmFsaWRhdGUgQWxsIENvbW1hbmQKKFhFTikgLSBHdWVzdCBB
UElDCihYRU4pIC0gUGVyZm9ybWFuY2UgQ291bnRlcnMKKFhFTikgLSBIb3N0IEFkZHJlc3MgVHJh
bnNsYXRpb24gU2l6ZTogMHgyCihYRU4pIC0gR3Vlc3QgQWRkcmVzcyBUcmFuc2xhdGlvbiBTaXpl
OiAweDEKKFhFTikgLSBHdWVzdCBDUjMgUm9vdCBUYWJsZSBMZXZlbDogMHgxCihYRU4pIC0gTWF4
aW11bSBQQVNJRDogMHhmCihYRU4pIC0gU01JIEZpbHRlciBSZWdpc3RlcjogMHgxCihYRU4pIC0g
U01JIEZpbHRlciBSZWdpc3RlciBDb3VudDogMHgyCihYRU4pIC0gR3Vlc3QgVmlydHVhbCBBUElD
IE1vZGVzOiAweDEKKFhFTikgLSBEdWFsIFBQUiBMb2c6IDB4MgooWEVOKSAtIER1YWwgRXZlbnQg
TG9nOiAweDIKKFhFTikgLSBTZWN1cmUgQVRTCihYRU4pIC0gVXNlciAvIFN1cGVydmlzb3IgUGFn
ZSBQcm90ZWN0aW9uCihYRU4pIC0gRGV2aWNlIFRhYmxlIFNlZ21lbnRhdGlvbjogMAooWEVOKSAt
IFBQUiBMb2cgT3ZlcmZsb3cgRWFybHkgV2FybmluZwooWEVOKSAtIFBQUiBBdXRvbWF0aWMgUmVz
cG9uc2UKKFhFTikgLSBNZW1vcnkgQWNjZXNzIFJvdXRpbmcgYW5kIENvbnRyb2w6IDAKKFhFTikg
LSBCbG9jayBTdG9wTWFyayBNZXNzYWdlCihYRU4pIC0gUGVyZm9ybWFuY2UgT3B0aW1pemF0aW9u
CihYRU4pIC0gTVNJIENhcGFiaWxpdHkgTU1JTyBBY2Nlc3MKKFhFTikgLSBHdWVzdCBJL08gUHJv
dGVjdGlvbgooWEVOKSAtIEhvc3QgQWNjZXNzCihYRU4pIC0gRW5oYW5jZWQgUFBSIEhhbmRsaW5n
CihYRU4pIC0gQXR0cmlidXRlIEZvcndhcmQKKFhFTikgLSBIb3N0IERpcnR5CihYRU4pIC0gVmly
dHVhbGl6ZWQgSU9NTVUKKFhFTikgLSBWTUd1YXJkIEkvTyBTdXBwb3J0CihYRU4pIC0gVk0gVGFi
bGUgU2l6ZTogMHgyCihYRU4pIC0gR3Vlc3QgQWNjZXNzIEJpdCBVcGRhdGUgRGlzYWJsZQooWEVO
KSBBTUQtVmk6IERpc2FibGVkIEhBUCBtZW1vcnkgbWFwIHNoYXJpbmcgd2l0aCBJT01NVQooWEVO
KSBBTUQtVmk6IElPTU1VIDAgRW5hYmxlZC4KKFhFTikgQU1ELVZpOiBJT01NVSAxIEVuYWJsZWQu
CihYRU4pIEFNRC1WaTogSU9NTVUgMiBFbmFibGVkLgooWEVOKSBBTUQtVmk6IElPTU1VIDMgRW5h
YmxlZC4KKFhFTikgQ1BVMDogMTUwMCAuLi4gNDIwMCBNSHoKKFhFTikgeHN0YXRlOiBzaXplOiAw
eDk4OCBhbmQgc3RhdGVzOiAweDJlNwooWEVOKSBDUFUwOiBBTUQgRmFtMTloIG1hY2hpbmUgY2hl
Y2sgcmVwb3J0aW5nIGVuYWJsZWQKKFhFTikgU3BlY3VsYXRpdmUgbWl0aWdhdGlvbiBmYWNpbGl0
aWVzOgooWEVOKSAgIEhhcmR3YXJlIGhpbnRzOiBTVElCUF9BTFdBWVMgSUJSU19GQVNUIElCUlNf
U0FNRV9NT0RFIEJUQ19OTyBJQlBCX1JFVAooWEVOKSAgIEhhcmR3YXJlIGZlYXR1cmVzOiBJQlBC
IElCUlMgU1RJQlAgU1NCRCBQU0ZEIEwxRF9GTFVTSAooWEVOKSAgIENvbXBpbGVkLWluIHN1cHBv
cnQ6IElORElSRUNUX1RIVU5LIFNIQURPV19QQUdJTkcKKFhFTikgICBYZW4gc2V0dGluZ3M6IEJU
SS1UaHVuayBKTVAsIFNQRUNfQ1RSTDogSUJSUysgU1RJQlArIFNTQkQtIFBTRkQtLCBPdGhlcjog
QlJBTkNIX0hBUkRFTgooWEVOKSAgIFN1cHBvcnQgZm9yIEhWTSBWTXM6IE1TUl9TUEVDX0NUUkwg
TVNSX1ZJUlRfU1BFQ19DVFJMIFJTQiBJQlBCLWVudHJ5CihYRU4pICAgU3VwcG9ydCBmb3IgUFYg
Vk1zOiBJQlBCLWVudHJ5CihYRU4pICAgWFBUSSAoNjQtYml0IFBWIG9ubHkpOiBEb20wIGRpc2Fi
bGVkLCBEb21VIGRpc2FibGVkICh3aXRoIFBDSUQpCihYRU4pICAgUFYgTDFURiBzaGFkb3dpbmc6
IERvbTAgZGlzYWJsZWQsIERvbVUgZGlzYWJsZWQKKFhFTikgVXNpbmcgc2NoZWR1bGVyOiBTTVAg
Q3JlZGl0IFNjaGVkdWxlciByZXYyIChjcmVkaXQyKQooWEVOKSBJbml0aWFsaXppbmcgQ3JlZGl0
MiBzY2hlZHVsZXIKKFhFTikgIGxvYWRfcHJlY2lzaW9uX3NoaWZ0OiAxOAooWEVOKSAgbG9hZF93
aW5kb3dfc2hpZnQ6IDMwCihYRU4pICB1bmRlcmxvYWRfYmFsYW5jZV90b2xlcmFuY2U6IDAKKFhF
TikgIG92ZXJsb2FkX2JhbGFuY2VfdG9sZXJhbmNlOiAtMwooWEVOKSAgcnVucXVldWVzIGFycmFu
Z2VtZW50OiBzb2NrZXQKKFhFTikgIGNhcCBlbmZvcmNlbWVudCBncmFudWxhcml0eTogMTBtcwoo
WEVOKSBsb2FkIHRyYWNraW5nIHdpbmRvdyBsZW5ndGggMTA3Mzc0MTgyNCBucwooWEVOKSBQbGF0
Zm9ybSB0aW1lciBpcyAxNC4zMThNSHogSFBFVAooWEVOKSBEZXRlY3RlZCA0MTk5LjkyNSBNSHog
cHJvY2Vzc29yLgooWEVOKSBGcmVlZCAxMDIwa0IgdW51c2VkIEJTUyBtZW1vcnkKKFhFTikgRUZJ
IG1lbW9yeSBtYXA6CihYRU4pICAwMDAwMDAwMDAwMDAwLTAwMDAwMDAwMDNmZmYgdHlwZT0yIGF0
dHI9MDAwMDAwMDAwMDAwMDAwZgooWEVOKSAgMDAwMDAwMDAwNDAwMC0wMDAwMDAwMDhlZmZmIHR5
cGU9NyBhdHRyPTAwMDAwMDAwMDAwMDAwMGYKKFhFTikgIDAwMDAwMDAwOGYwMDAtMDAwMDAwMDA5
ZWZmZiB0eXBlPTIgYXR0cj0wMDAwMDAwMDAwMDAwMDBmCihYRU4pICAwMDAwMDAwMDlmMDAwLTAw
MDAwMDAwOWZmZmYgdHlwZT00IGF0dHI9MDAwMDAwMDAwMDAwMDAwZgooWEVOKSAgMDAwMDAwMDEw
MDAwMC0wMDAwMDAyZTFiZmZmIHR5cGU9MiBhdHRyPTAwMDAwMDAwMDAwMDAwMGYKKFhFTikgIDAw
MDAwMDJlMWMwMDAtMDAwMDAwM2ZmZmZmZiB0eXBlPTcgYXR0cj0wMDAwMDAwMDAwMDAwMDBmCihY
RU4pICAwMDAwMDA0MDAwMDAwLTAwMDAwMDQwNDVmZmYgdHlwZT0xMCBhdHRyPTAwMDAwMDAwMDAw
MDAwMGYKKFhFTikgIDAwMDAwMDQwNDYwMDAtMDAwMDAwOWFmZWZmZiB0eXBlPTcgYXR0cj0wMDAw
MDAwMDAwMDAwMDBmCihYRU4pICAwMDAwMDA5YWZmMDAwLTAwMDAwMDlmZmZmZmYgdHlwZT0wIGF0
dHI9MDAwMDAwMDAwMDAwMDAwZgooWEVOKSAgMDAwMDAwYTAwMDAwMC0wMDAwMDBhMmZmZmZmIHR5
cGU9NCBhdHRyPTAwMDAwMDAwMDAwMDAwMGYKKFhFTikgIDAwMDAwMGEzMDAwMDAtMDAwMDAwYWZm
ZmZmZiB0eXBlPTcgYXR0cj0wMDAwMDAwMDAwMDAwMDBmCihYRU4pICAwMDAwMDBiMDAwMDAwLTAw
MDAwMGIwMjBmZmYgdHlwZT0wIGF0dHI9MDAwMDAwMDAwMDAwMDAwZgooWEVOKSAgMDAwMDAwYjAy
MTAwMC0wMDAwMDZmOGEzZmZmIHR5cGU9NyBhdHRyPTAwMDAwMDAwMDAwMDAwMGYKKFhFTikgIDAw
MDAwNmY4YTQwMDAtMDAwMDA5NTQyM2ZmZiB0eXBlPTEgYXR0cj0wMDAwMDAwMDAwMDAwMDBmCihY
RU4pICAwMDAwMDk1NDI0MDAwLTAwMDAwOTU0MmRmZmYgdHlwZT00IGF0dHI9MDAwMDAwMDAwMDAw
MDAwZgooWEVOKSAgMDAwMDA5NTQyZTAwMC0wMDAwMDk1NDM3ZmZmIHR5cGU9NyBhdHRyPTAwMDAw
MDAwMDAwMDAwMGYKKFhFTikgIDAwMDAwOTU0MzgwMDAtMDAwMDA5NTQ0MWZmZiB0eXBlPTQgYXR0
cj0wMDAwMDAwMDAwMDAwMDBmCihYRU4pICAwMDAwMDk1NDQyMDAwLTAwMDAwOTU5MjZmZmYgdHlw
ZT03IGF0dHI9MDAwMDAwMDAwMDAwMDAwZgooWEVOKSAgMDAwMDA5NTkyNzAwMC0wMDAwMDk1ZDI4
ZmZmIHR5cGU9MSBhdHRyPTAwMDAwMDAwMDAwMDAwMGYKKFhFTikgIDAwMDAwOTVkMjkwMDAtMDAw
MDA5NjEzM2ZmZiB0eXBlPTIgYXR0cj0wMDAwMDAwMDAwMDAwMDBmCihYRU4pICAwMDAwMDk2MTM0
MDAwLTAwMDAwOTYxMzlmZmYgdHlwZT03IGF0dHI9MDAwMDAwMDAwMDAwMDAwZgooWEVOKSAgMDAw
MDA5NjEzYTAwMC0wMDAwMDk2MjBjZmZmIHR5cGU9MSBhdHRyPTAwMDAwMDAwMDAwMDAwMGYKKFhF
TikgIDAwMDAwOTYyMGQwMDAtMDAwMDA5NzlmM2ZmZiB0eXBlPTQgYXR0cj0wMDAwMDAwMDAwMDAw
MDBmCihYRU4pICAwMDAwMDk3OWY0MDAwLTAwMDAwOTc5ZjZmZmYgdHlwZT03IGF0dHI9MDAwMDAw
MDAwMDAwMDAwZgooWEVOKSAgMDAwMDA5NzlmNzAwMC0wMDAwMDk3OWY3ZmZmIHR5cGU9NCBhdHRy
PTAwMDAwMDAwMDAwMDAwMGYKKFhFTikgIDAwMDAwOTc5ZjgwMDAtMDAwMDA5NzlmZmZmZiB0eXBl
PTcgYXR0cj0wMDAwMDAwMDAwMDAwMDBmCihYRU4pICAwMDAwMDk3YTAwMDAwLTAwMDAwOTdhMDZm
ZmYgdHlwZT00IGF0dHI9MDAwMDAwMDAwMDAwMDAwZgooWEVOKSAgMDAwMDA5N2EwNzAwMC0wMDAw
MDk3YjFkZmZmIHR5cGU9NyBhdHRyPTAwMDAwMDAwMDAwMDAwMGYKKFhFTikgIDAwMDAwOTdiMWUw
MDAtMDAwMDA5N2IzM2ZmZiB0eXBlPTQgYXR0cj0wMDAwMDAwMDAwMDAwMDBmCihYRU4pICAwMDAw
MDk3YjM0MDAwLTAwMDAwOTdiMzZmZmYgdHlwZT03IGF0dHI9MDAwMDAwMDAwMDAwMDAwZgooWEVO
KSAgMDAwMDA5N2IzNzAwMC0wMDAwMDk3YjU5ZmZmIHR5cGU9NCBhdHRyPTAwMDAwMDAwMDAwMDAw
MGYKKFhFTikgIDAwMDAwOTdiNWEwMDAtMDAwMDA5N2JkOWZmZiB0eXBlPTcgYXR0cj0wMDAwMDAw
MDAwMDAwMDBmCihYRU4pICAwMDAwMDk3YmRhMDAwLTAwMDAwOTdjNjNmZmYgdHlwZT00IGF0dHI9
MDAwMDAwMDAwMDAwMDAwZgooWEVOKSAgMDAwMDA5N2M2NDAwMC0wMDAwMDk3YzY5ZmZmIHR5cGU9
NyBhdHRyPTAwMDAwMDAwMDAwMDAwMGYKKFhFTikgIDAwMDAwOTdjNmEwMDAtMDAwMDA5N2NiOGZm
ZiB0eXBlPTQgYXR0cj0wMDAwMDAwMDAwMDAwMDBmCihYRU4pICAwMDAwMDk3Y2I5MDAwLTAwMDAw
OTdlYThmZmYgdHlwZT03IGF0dHI9MDAwMDAwMDAwMDAwMDAwZgooWEVOKSAgMDAwMDA5N2VhOTAw
MC0wMDAwMDk3ZWFhZmZmIHR5cGU9NCBhdHRyPTAwMDAwMDAwMDAwMDAwMGYKKFhFTikgIDAwMDAw
OTdlYWIwMDAtMDAwMDA5N2Y3OWZmZiB0eXBlPTcgYXR0cj0wMDAwMDAwMDAwMDAwMDBmCihYRU4p
ICAwMDAwMDk3ZjdhMDAwLTAwMDAwOWIxZGJmZmYgdHlwZT00IGF0dHI9MDAwMDAwMDAwMDAwMDAw
ZgooWEVOKSAgMDAwMDA5YjFkYzAwMC0wMDAwMDliMWRlZmZmIHR5cGU9NyBhdHRyPTAwMDAwMDAw
MDAwMDAwMGYKKFhFTikgIDAwMDAwOWIxZGYwMDAtMDAwMDA5ZTRlOGZmZiB0eXBlPTQgYXR0cj0w
MDAwMDAwMDAwMDAwMDBmCihYRU4pICAwMDAwMDllNGU5MDAwLTAwMDAwOWY3ZmZmZmYgdHlwZT03
IGF0dHI9MDAwMDAwMDAwMDAwMDAwZgooWEVOKSAgMDAwMDA5ZjgwMDAwMC0wMDAwMDlmYmIzZmZm
IHR5cGU9MiBhdHRyPTAwMDAwMDAwMDAwMDAwMGYKKFhFTikgIDAwMDAwOWZiYjQwMDAtMDAwMDA5
ZmQ3NmZmZiB0eXBlPTcgYXR0cj0wMDAwMDAwMDAwMDAwMDBmCihYRU4pICAwMDAwMDlmZDc3MDAw
LTAwMDAwYTA0ZThmZmYgdHlwZT0zIGF0dHI9MDAwMDAwMDAwMDAwMDAwZgooWEVOKSAgMDAwMDBh
MDRlOTAwMC0wMDAwMGE2NGU4ZmZmIHR5cGU9MCBhdHRyPTAwMDAwMDAwMDAwMDAwMGYKKFhFTikg
IDAwMDAwYTY0ZTkwMDAtMDAwMDBhNzQ3ZWZmZiB0eXBlPTkgYXR0cj0wMDAwMDAwMDAwMDAwMDBm
CihYRU4pICAwMDAwMGE3NDdmMDAwLTAwMDAwYTk0N2VmZmYgdHlwZT0xMCBhdHRyPTAwMDAwMDAw
MDAwMDAwMGYKKFhFTikgIDAwMDAwYTk0N2YwMDAtMDAwMDBhZGM3ZWZmZiB0eXBlPTYgYXR0cj04
MDAwMDAwMDAwMDAwMDBmCihYRU4pICAwMDAwMGFkYzdmMDAwLTAwMDAwYWRkZmVmZmYgdHlwZT01
IGF0dHI9ODAwMDAwMDAwMDAwMDAwZgooWEVOKSAgMDAwMDBhZGRmZjAwMC0wMDAwMGFkZmZmZmZm
IHR5cGU9NCBhdHRyPTAwMDAwMDAwMDAwMDAwMGYKKFhFTikgIDAwMDAwYWUwMDAwMDAtMDAwMDBh
ZTEzYWZmZiB0eXBlPTcgYXR0cj0wMDAwMDAwMDAwMDAwMDBmCihYRU4pICAwMDAwMGFlMTNiMDAw
LTAwMDAwYWUyM2FmZmYgdHlwZT00IGF0dHI9MDAwMDAwMDAwMDAwMDAwZgooWEVOKSAgMDAwMDBh
ZTIzYjAwMC0wMDAwMGFlMjViZmZmIHR5cGU9MyBhdHRyPTAwMDAwMDAwMDAwMDAwMGYKKFhFTikg
IDAwMDAwYWUyNWMwMDAtMDAwMDBhZjc2NWZmZiB0eXBlPTQgYXR0cj0wMDAwMDAwMDAwMDAwMDBm
CihYRU4pICAwMDAwMGFmNzY2MDAwLTAwMDAwYWY3ODJmZmYgdHlwZT0zIGF0dHI9MDAwMDAwMDAw
MDAwMDAwZgooWEVOKSAgMDAwMDBhZjc4MzAwMC0wMDAwMGFmNzliZmZmIHR5cGU9NCBhdHRyPTAw
MDAwMDAwMDAwMDAwMGYKKFhFTikgIDAwMDAwYWY3OWMwMDAtMDAwMDBhZjc5ZmZmZiB0eXBlPTMg
YXR0cj0wMDAwMDAwMDAwMDAwMDBmCihYRU4pICAwMDAwMGFmN2EwMDAwLTAwMDAwYWY3YjNmZmYg
dHlwZT00IGF0dHI9MDAwMDAwMDAwMDAwMDAwZgooWEVOKSAgMDAwMDBhZjdiNDAwMC0wMDAwMGFm
N2RjZmZmIHR5cGU9MyBhdHRyPTAwMDAwMDAwMDAwMDAwMGYKKFhFTikgIDAwMDAwYWY3ZGQwMDAt
MDAwMDBhZmZmM2ZmZiB0eXBlPTQgYXR0cj0wMDAwMDAwMDAwMDAwMDBmCihYRU4pICAwMDAwMGFm
ZmY0MDAwLTAwMDAwYWZmZmFmZmYgdHlwZT0zIGF0dHI9MDAwMDAwMDAwMDAwMDAwZgooWEVOKSAg
MDAwMDBhZmZmYjAwMC0wMDAwMGFmZmZmZmZmIHR5cGU9NiBhdHRyPTgwMDAwMDAwMDAwMDAwMGYK
KFhFTikgIDAwMDAxMDAwMDAwMDAtMDAwNDAzZGJiZmZmZiB0eXBlPTcgYXR0cj0wMDAwMDAwMDAw
MDAwMDBmCihYRU4pICAwMDAwMDAwMGEwMDAwLTAwMDAwMDAwZmZmZmYgdHlwZT0wIGF0dHI9MDAw
MDAwMDAwMDAwMDAwZgooWEVOKSAgMDAwMDBiMDAwMDAwMC0wMDAwMGJmZmZmZmZmIHR5cGU9MCBh
dHRyPTAwMDAwMDAwMDAwMDAwMGYKKFhFTikgIDAwMDAwZGYyMDAwMDAtMDAwMDBkZjJmZmZmZiB0
eXBlPTExIGF0dHI9ODAwMDAwMDAwMDAwMDAwMQooWEVOKSAgMDAwMDBlMDAwMDAwMC0wMDAwMGVm
ZmZmZmZmIHR5cGU9MTEgYXR0cj04MDAwMDAwMDAwMDAxMDBkCihYRU4pICAwMDAwMGZlYTAwMDAw
LTAwMDAwZmVhZmZmZmYgdHlwZT0xMSBhdHRyPTgwMDAwMDAwMDAwMDAwMDEKKFhFTikgIDAwMDAw
ZmVjMDAwMDAtMDAwMDBmZWMwMGZmZiB0eXBlPTExIGF0dHI9ODAwMDAwMDAwMDAwMDAwMQooWEVO
KSAgMDAwMDBmZWMxMDAwMC0wMDAwMGZlYzEwZmZmIHR5cGU9MTEgYXR0cj04MDAwMDAwMDAwMDAw
MDAxCihYRU4pICAwMDAwMGZlYzMwMDAwLTAwMDAwZmVjMzBmZmYgdHlwZT0xMSBhdHRyPTgwMDAw
MDAwMDAwMDAwMDEKKFhFTikgIDAwMDAwZmVkMDAwMDAtMDAwMDBmZWQwMGZmZiB0eXBlPTExIGF0
dHI9ODAwMDAwMDAwMDAwMDAwMQooWEVOKSAgMDAwMDBmZWQ0MDAwMC0wMDAwMGZlZDQ0ZmZmIHR5
cGU9MTEgYXR0cj04MDAwMDAwMDAwMDAwMDAxCihYRU4pICAwMDAwMGZlZDgwMDAwLTAwMDAwZmVk
OGZmZmYgdHlwZT0xMSBhdHRyPTgwMDAwMDAwMDAwMDAwMDEKKFhFTikgIDAwMDAwZmYwMDAwMDAt
MDAwMDBmZmZmZmZmZiB0eXBlPTExIGF0dHI9ODAwMDAwMDAwMDAwMDAwMQooWEVOKSAgMDAwNDAz
ZGJjMDAwMC0wMDA0MDNmZmZmZmZmIHR5cGU9MCBhdHRyPTAwMDAwMDAwMDAwMDAwMGYKKFhFTikg
YWx0IHRhYmxlIGZmZmY4MmQwNDA0NWIxZDAgLT4gZmZmZjgyZDA0MDQ2NzFmYwooWEVOKSBJL08g
dmlydHVhbGlzYXRpb24gZW5hYmxlZAooWEVOKSAgLSBEb20wIG1vZGU6IFJlbGF4ZWQKKFhFTikg
SW50ZXJydXB0IHJlbWFwcGluZyBlbmFibGVkCihYRU4pIG5yX3NvY2tldHM6IDEKKFhFTikgRW5h
YmxlZCBkaXJlY3RlZCBFT0kgd2l0aCBpb2FwaWNfYWNrX29sZCBvbiEKKFhFTikgRW5hYmxpbmcg
QVBJQyBtb2RlOiAgQ2x1c3RlcmVkLiAgVXNpbmcgNSBJL08gQVBJQ3MKKFhFTikgRU5BQkxJTkcg
SU8tQVBJQyBJUlFzCihYRU4pICAtPiBVc2luZyBvbGQgQUNLIG1ldGhvZAooWEVOKSAuLlRJTUVS
OiB2ZWN0b3I9MHhGMCBhcGljMT0wIHBpbjE9MiBhcGljMj0tMSBwaW4yPS0xCihYRU4pIERlZmF1
bHRpbmcgdG8gYWx0ZXJuYXRpdmUga2V5IGhhbmRsaW5nOyBzZW5kICdBJyB0byBzd2l0Y2ggdG8g
bm9ybWFsIG1vZGUuCihYRU4pIEFsbG9jYXRlZCBjb25zb2xlIHJpbmcgb2YgNTEyIEtpQi4KKFhF
TikgbXdhaXQtaWRsZTogZG9lcyBub3QgcnVuIG9uIGZhbWlseSAyNSBtb2RlbCAyNAooWEVOKSBI
Vk06IEFTSURzIGVuYWJsZWQuCihYRU4pIFNWTTogU3VwcG9ydGVkIGFkdmFuY2VkIGZlYXR1cmVz
OgooWEVOKSAgLSBOZXN0ZWQgUGFnZSBUYWJsZXMgKE5QVCkKKFhFTikgIC0gTGFzdCBCcmFuY2gg
UmVjb3JkIChMQlIpIFZpcnR1YWxpc2F0aW9uCihYRU4pICAtIE5leHQtUklQIFNhdmVkIG9uICNW
TUVYSVQKKFhFTikgIC0gVk1DQiBDbGVhbiBCaXRzCihYRU4pICAtIERlY29kZUFzc2lzdHMKKFhF
TikgIC0gVmlydHVhbCBWTUxPQUQvVk1TQVZFCihYRU4pICAtIFZpcnR1YWwgR0lGCihYRU4pICAt
IFBhdXNlLUludGVyY2VwdCBGaWx0ZXIKKFhFTikgIC0gUGF1c2UtSW50ZXJjZXB0IEZpbHRlciBU
aHJlc2hvbGQKKFhFTikgIC0gVFNDIFJhdGUgTVNSCihYRU4pICAtIE5QVCBTdXBlcnZpc29yIFNo
YWRvdyBTdGFjawooWEVOKSAgLSBNU1JfU1BFQ19DVFJMIHZpcnR1YWxpc2F0aW9uCihYRU4pIEhW
TTogU1ZNIGVuYWJsZWQKKFhFTikgSFZNOiBIYXJkd2FyZSBBc3Npc3RlZCBQYWdpbmcgKEhBUCkg
ZGV0ZWN0ZWQKKFhFTikgSFZNOiBIQVAgcGFnZSBzaXplczogNGtCLCAyTUIsIDFHQgooWEVOKSBh
bHQgdGFibGUgZmZmZjgyZDA0MDQ1YjFkMCAtPiBmZmZmODJkMDQwNDY3MWZjCihYRU4pIEJyb3Vn
aHQgdXAgNDggQ1BVcwooWEVOKSBTY2hlZHVsaW5nIGdyYW51bGFyaXR5OiBjcHUsIDEgQ1BVIHBl
ciBzY2hlZC1yZXNvdXJjZQooWEVOKSBJbml0aWFsaXppbmcgQ3JlZGl0MiBzY2hlZHVsZXIKKFhF
TikgIGxvYWRfcHJlY2lzaW9uX3NoaWZ0OiAxOAooWEVOKSAgbG9hZF93aW5kb3dfc2hpZnQ6IDMw
CihYRU4pICB1bmRlcmxvYWRfYmFsYW5jZV90b2xlcmFuY2U6IDAKKFhFTikgIG92ZXJsb2FkX2Jh
bGFuY2VfdG9sZXJhbmNlOiAtMwooWEVOKSAgcnVucXVldWVzIGFycmFuZ2VtZW50OiBzb2NrZXQK
KFhFTikgIGNhcCBlbmZvcmNlbWVudCBncmFudWxhcml0eTogMTBtcwooWEVOKSBsb2FkIHRyYWNr
aW5nIHdpbmRvdyBsZW5ndGggMTA3Mzc0MTgyNCBucwooWEVOKSBBZGRpbmcgY3B1IDAgdG8gcnVu
cXVldWUgMAooWEVOKSAgRmlyc3QgY3B1IG9uIHJ1bnF1ZXVlLCBhY3RpdmF0aW5nCihYRU4pIEFk
ZGluZyBjcHUgMSB0byBydW5xdWV1ZSAwCihYRU4pIEFkZGluZyBjcHUgMiB0byBydW5xdWV1ZSAw
CihYRU4pIEFkZGluZyBjcHUgMyB0byBydW5xdWV1ZSAwCihYRU4pIEFkZGluZyBjcHUgNCB0byBy
dW5xdWV1ZSAwCihYRU4pIEFkZGluZyBjcHUgNSB0byBydW5xdWV1ZSAwCihYRU4pIEFkZGluZyBj
cHUgNiB0byBydW5xdWV1ZSAwCihYRU4pIEFkZGluZyBjcHUgNyB0byBydW5xdWV1ZSAwCihYRU4p
IEFkZGluZyBjcHUgOCB0byBydW5xdWV1ZSAwCihYRU4pIEFkZGluZyBjcHUgOSB0byBydW5xdWV1
ZSAwCihYRU4pIEFkZGluZyBjcHUgMTAgdG8gcnVucXVldWUgMAooWEVOKSBBZGRpbmcgY3B1IDEx
IHRvIHJ1bnF1ZXVlIDAKKFhFTikgQWRkaW5nIGNwdSAxMiB0byBydW5xdWV1ZSAwCihYRU4pIEFk
ZGluZyBjcHUgMTMgdG8gcnVucXVldWUgMAooWEVOKSBBZGRpbmcgY3B1IDE0IHRvIHJ1bnF1ZXVl
IDAKKFhFTikgQWRkaW5nIGNwdSAxNSB0byBydW5xdWV1ZSAwCihYRU4pIEFkZGluZyBjcHUgMTYg
dG8gcnVucXVldWUgMQooWEVOKSAgRmlyc3QgY3B1IG9uIHJ1bnF1ZXVlLCBhY3RpdmF0aW5nCihY
RU4pIEFkZGluZyBjcHUgMTcgdG8gcnVucXVldWUgMQooWEVOKSBBZGRpbmcgY3B1IDE4IHRvIHJ1
bnF1ZXVlIDEKKFhFTikgQWRkaW5nIGNwdSAxOSB0byBydW5xdWV1ZSAxCihYRU4pIEFkZGluZyBj
cHUgMjAgdG8gcnVucXVldWUgMQooWEVOKSBBZGRpbmcgY3B1IDIxIHRvIHJ1bnF1ZXVlIDEKKFhF
TikgQWRkaW5nIGNwdSAyMiB0byBydW5xdWV1ZSAxCihYRU4pIEFkZGluZyBjcHUgMjMgdG8gcnVu
cXVldWUgMQooWEVOKSBBZGRpbmcgY3B1IDI0IHRvIHJ1bnF1ZXVlIDEKKFhFTikgQWRkaW5nIGNw
dSAyNSB0byBydW5xdWV1ZSAxCihYRU4pIEFkZGluZyBjcHUgMjYgdG8gcnVucXVldWUgMQooWEVO
KSBBZGRpbmcgY3B1IDI3IHRvIHJ1bnF1ZXVlIDEKKFhFTikgQWRkaW5nIGNwdSAyOCB0byBydW5x
dWV1ZSAxCihYRU4pIEFkZGluZyBjcHUgMjkgdG8gcnVucXVldWUgMQooWEVOKSBBZGRpbmcgY3B1
IDMwIHRvIHJ1bnF1ZXVlIDEKKFhFTikgQWRkaW5nIGNwdSAzMSB0byBydW5xdWV1ZSAxCihYRU4p
IEFkZGluZyBjcHUgMzIgdG8gcnVucXVldWUgMgooWEVOKSAgRmlyc3QgY3B1IG9uIHJ1bnF1ZXVl
LCBhY3RpdmF0aW5nCihYRU4pIEFkZGluZyBjcHUgMzMgdG8gcnVucXVldWUgMgooWEVOKSBBZGRp
bmcgY3B1IDM0IHRvIHJ1bnF1ZXVlIDIKKFhFTikgQWRkaW5nIGNwdSAzNSB0byBydW5xdWV1ZSAy
CihYRU4pIEFkZGluZyBjcHUgMzYgdG8gcnVucXVldWUgMgooWEVOKSBBZGRpbmcgY3B1IDM3IHRv
IHJ1bnF1ZXVlIDIKKFhFTikgQWRkaW5nIGNwdSAzOCB0byBydW5xdWV1ZSAyCihYRU4pIEFkZGlu
ZyBjcHUgMzkgdG8gcnVucXVldWUgMgooWEVOKSBBZGRpbmcgY3B1IDQwIHRvIHJ1bnF1ZXVlIDIK
KFhFTikgQWRkaW5nIGNwdSA0MSB0byBydW5xdWV1ZSAyCihYRU4pIEFkZGluZyBjcHUgNDIgdG8g
cnVucXVldWUgMgooWEVOKSBBZGRpbmcgY3B1IDQzIHRvIHJ1bnF1ZXVlIDIKKFhFTikgQWRkaW5n
IGNwdSA0NCB0byBydW5xdWV1ZSAyCihYRU4pIEFkZGluZyBjcHUgNDUgdG8gcnVucXVldWUgMgoo
WEVOKSBBZGRpbmcgY3B1IDQ2IHRvIHJ1bnF1ZXVlIDIKKFhFTikgQWRkaW5nIGNwdSA0NyB0byBy
dW5xdWV1ZSAyCihYRU4pIG1jaGVja19wb2xsOiBNYWNoaW5lIGNoZWNrIHBvbGxpbmcgdGltZXIg
c3RhcnRlZC4KKFhFTikgeGVub3Byb2Y6IEluaXRpYWxpemF0aW9uIGZhaWxlZC4gQU1EIHByb2Nl
c3NvciBmYW1pbHkgMjUgaXMgbm90IHN1cHBvcnRlZAooWEVOKSBOWCAoRXhlY3V0ZSBEaXNhYmxl
KSBwcm90ZWN0aW9uIGFjdGl2ZQooWEVOKSBEb20wIGhhcyBtYXhpbXVtIDE0MDAgUElSUXMKKFhF
TikgKioqIEJ1aWxkaW5nIGEgUFYgRG9tMCAqKioKKFhFTikgIFhlbiAga2VybmVsOiA2NC1iaXQs
IGxzYgooWEVOKSAgRG9tMCBrZXJuZWw6IDY0LWJpdCwgUEFFLCBsc2IsIHBhZGRyIDB4MjAwMDAw
MCAtPiAweDVhMDAwMDAKKFhFTikgUEhZU0lDQUwgTUVNT1JZIEFSUkFOR0VNRU5UOgooWEVOKSAg
RG9tMCBhbGxvYy46ICAgMDAwMDAwM2ZjODAwMDAwMC0+MDAwMDAwM2ZkMDAwMDAwMCAoMjA1NDgy
NSBwYWdlcyB0byBiZSBhbGxvY2F0ZWQpCihYRU4pICBJbml0LiByYW1kaXNrOiAwMDAwMDA0MDNi
NGE5MDAwLT4wMDAwMDA0MDNkOWZmMjBlCihYRU4pIFZJUlRVQUwgTUVNT1JZIEFSUkFOR0VNRU5U
OgooWEVOKSAgTG9hZGVkIGtlcm5lbDogZmZmZmZmZmY4MjAwMDAwMC0+ZmZmZmZmZmY4NWEwMDAw
MAooWEVOKSAgUGh5cy1NYWNoIG1hcDogMDAwMDAwODAwMDAwMDAwMC0+MDAwMDAwODAwMTAwMDAw
MAooWEVOKSAgU3RhcnQgaW5mbzogICAgZmZmZmZmZmY4NWEwMDAwMC0+ZmZmZmZmZmY4NWEwMDRi
OAooWEVOKSAgUGFnZSB0YWJsZXM6ICAgZmZmZmZmZmY4NWEwMTAwMC0+ZmZmZmZmZmY4NWEzMjAw
MAooWEVOKSAgQm9vdCBzdGFjazogICAgZmZmZmZmZmY4NWEzMjAwMC0+ZmZmZmZmZmY4NWEzMzAw
MAooWEVOKSAgVE9UQUw6ICAgICAgICAgZmZmZmZmZmY4MDAwMDAwMC0+ZmZmZmZmZmY4NWMwMDAw
MAooWEVOKSAgRU5UUlkgQUREUkVTUzogZmZmZmZmZmY4NDA2ZTFjMAooWEVOKSBEb20wIGhhcyBt
YXhpbXVtIDQ4IFZDUFVzCihYRU4pIEluaXRpYWwgbG93IG1lbW9yeSB2aXJxIHRocmVzaG9sZCBz
ZXQgYXQgMHg0MDAwIHBhZ2VzLgooWEVOKSBTY3J1YmJpbmcgRnJlZSBSQU0gaW4gYmFja2dyb3Vu
ZAooWEVOKSBTdGQuIExvZ2xldmVsOiBBbGwKKFhFTikgR3Vlc3QgTG9nbGV2ZWw6IEFsbAooWEVO
KSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKFhF
TikgV0FSTklORzogQ09OU09MRSBPVVRQVVQgSVMgU1lOQ0hST05PVVMKKFhFTikgVGhpcyBvcHRp
b24gaXMgaW50ZW5kZWQgdG8gYWlkIGRlYnVnZ2luZyBvZiBYZW4gYnkgZW5zdXJpbmcKKFhFTikg
dGhhdCBhbGwgb3V0cHV0IGlzIHN5bmNocm9ub3VzbHkgZGVsaXZlcmVkIG9uIHRoZSBzZXJpYWwg
bGluZS4KKFhFTikgSG93ZXZlciBpdCBjYW4gaW50cm9kdWNlIFNJR05JRklDQU5UIGxhdGVuY2ll
cyBhbmQgYWZmZWN0CihYRU4pIHRpbWVrZWVwaW5nLiBJdCBpcyBOT1QgcmVjb21tZW5kZWQgZm9y
IHByb2R1Y3Rpb24gdXNlIQooWEVOKSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioKKFhFTikgMy4uLiAyLi4uIDEuLi4gCihYRU4pIFhlbiBpcyByZWxp
bnF1aXNoaW5nIFZHQSBjb25zb2xlLgooWEVOKSAqKiogU2VyaWFsIGlucHV0IHRvIERPTTAgKHR5
cGUgJ0NUUkwtYScgdGhyZWUgdGltZXMgdG8gc3dpdGNoIGlucHV0KQooWEVOKSBGcmVlZCA2NDRr
QiBpbml0IG1lbW9yeQptYXBwaW5nIGtlcm5lbCBpbnRvIHBoeXNpY2FsIG1lbW9yeQphYm91dCB0
byBnZXQgc3RhcnRlZC4uLgpYZW4gaHlwZXJ2aXNvciBhbGxvY2F0ZWQga2VybmVsIG1lbW9yeSBj
b25mbGljdHMgd2l0aCBFODIwIG1hcAooWEVOKSBIYXJkd2FyZSBEb20wIGhhbHRlZDogaGFsdGlu
ZyBtYWNoaW5lCgo=
--0000000000003412b4060f3269fc--


From xen-devel-bounces@lists.xenproject.org Thu Jan 18 06:59:30 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 18 Jan 2024 06:59:30 +0000
Received: from list by lists.xenproject.org with outflank-mailman.668616.1040940 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQMN2-0008AP-Pq; Thu, 18 Jan 2024 06:59:24 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 668616.1040940; Thu, 18 Jan 2024 06:59:24 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQMN2-0008AI-N9; Thu, 18 Jan 2024 06:59:24 +0000
Received: by outflank-mailman (input) for mailman id 668616;
 Thu, 18 Jan 2024 06:59:23 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rQMN1-0008A8-J5; Thu, 18 Jan 2024 06:59:23 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rQMN1-0006Bj-86; Thu, 18 Jan 2024 06:59:23 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rQMN0-0000wP-Qq; Thu, 18 Jan 2024 06:59:22 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rQMN0-00008e-QJ; Thu, 18 Jan 2024 06:59:22 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=BkWGPVicDX8DaJOaOFay6cBht+wmrxNKRU24j1zEpug=; b=aouGMbNGeVm4Nw/9vVGho/df5O
	QSX8xYLCmAWVgl86pWsVyPc2uo5r1Bnae3KEe/6HJk9ac/Oowfx2X85kuw/Iut344t0L7p9XHp8/G
	OnJmsZziPEei+8Wdfyqd+CJNVk8Nh2cNI/v2KeODfJoOBxnWY/vD24Vh8ry92tlOwg1A=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184386-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [linux-linus test] 184386: regressions - FAIL
X-Osstest-Failures:
    linux-linus:test-arm64-arm64-xl-credit1:debian-install:fail:regression
    linux-linus:test-arm64-arm64-xl-xsm:debian-install:fail:regression
    linux-linus:test-arm64-arm64-xl:debian-install:fail:regression
    linux-linus:test-arm64-arm64-xl-thunderx:debian-install:fail:regression
    linux-linus:test-arm64-arm64-xl-credit2:debian-install:fail:regression
    linux-linus:test-arm64-arm64-libvirt-xsm:debian-install:fail:regression
    linux-linus:test-armhf-armhf-xl-arndale:xen-boot:fail:heisenbug
    linux-linus:test-amd64-amd64-xl:guest-start/debian.repeat:fail:heisenbug
    linux-linus:test-armhf-armhf-libvirt-qcow2:xen-boot:fail:heisenbug
    linux-linus:test-armhf-armhf-libvirt-qcow2:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-qcow2:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    linux-linus:test-amd64-amd64-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    linux-linus:test-amd64-amd64-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-raw:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    linux-linus:test-amd64-amd64-qemuu-nested-amd:debian-hvm-install/l1/l2:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-xsm:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-arndale:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-arndale:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-multivcpu:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-multivcpu:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-rtds:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-rtds:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit1:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit1:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit2:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit2:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-libvirt-raw:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-vhd:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-vhd:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-vhd:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-vhd:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-qcow2:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl:saverestore-support-check:fail:nonblocking
X-Osstest-Versions-This:
    linux=052d534373b7ed33712a63d5e17b2b6cdbce84fd
X-Osstest-Versions-That:
    linux=0dd3ee31125508cd67f7e7172247f05b7fd1753a
From: osstest service owner <osstest-admin@xenproject.org>
Date: Thu, 18 Jan 2024 06:59:22 +0000

flight 184386 linux-linus real [real]
http://logs.test-lab.xenproject.org/osstest/logs/184386/

Regressions :-(

Tests which did not succeed and are blocking,
including tests which could not be run:
 test-arm64-arm64-xl-credit1  12 debian-install           fail REGR. vs. 184270
 test-arm64-arm64-xl-xsm      12 debian-install           fail REGR. vs. 184270
 test-arm64-arm64-xl          12 debian-install           fail REGR. vs. 184270
 test-arm64-arm64-xl-thunderx 12 debian-install           fail REGR. vs. 184270
 test-arm64-arm64-xl-credit2  12 debian-install           fail REGR. vs. 184270
 test-arm64-arm64-libvirt-xsm 12 debian-install           fail REGR. vs. 184270

Tests which are failing intermittently (not blocking):
 test-armhf-armhf-xl-arndale   8 xen-boot         fail in 184378 pass in 184386
 test-amd64-amd64-xl          22 guest-start/debian.repeat  fail pass in 184378
 test-armhf-armhf-libvirt-qcow2  8 xen-boot                 fail pass in 184378

Tests which did not succeed, but are not blocking:
 test-armhf-armhf-libvirt-qcow2 15 saverestore-support-check fail in 184378 like 184270
 test-armhf-armhf-libvirt-qcow2 14 migrate-support-check fail in 184378 never pass
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 184270
 test-amd64-amd64-xl-qemut-win7-amd64 19 guest-stop            fail like 184270
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 184270
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 184270
 test-armhf-armhf-libvirt-raw 15 saverestore-support-check    fail  like 184270
 test-amd64-amd64-xl-qemut-ws16-amd64 19 guest-stop            fail like 184270
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 184270
 test-amd64-amd64-libvirt     15 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-arndale  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-arndale  16 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-armhf-armhf-libvirt     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-multivcpu 15 migrate-support-check        fail  never pass
 test-armhf-armhf-xl-multivcpu 16 saverestore-support-check    fail  never pass
 test-armhf-armhf-xl-rtds     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-rtds     16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-credit1  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit1  16 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-raw 14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit2  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit2  16 saverestore-support-check    fail   never pass
 test-arm64-arm64-libvirt-raw 14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 15 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-vhd      14 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-vhd      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-raw 14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      15 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-qcow2 14 migrate-support-check        fail never pass
 test-armhf-armhf-xl          15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          16 saverestore-support-check    fail   never pass

version targeted for testing:
 linux                052d534373b7ed33712a63d5e17b2b6cdbce84fd
baseline version:
 linux                0dd3ee31125508cd67f7e7172247f05b7fd1753a

Last test of basis   184270  2024-01-07 20:42:19 Z   10 days
Failing since        184283  2024-01-08 20:10:43 Z    9 days   16 attempts
Testing same since   184338  2024-01-13 05:40:28 Z    5 days    9 attempts

------------------------------------------------------------
1701 people touched revisions under test,
not listing them all

jobs:
 build-amd64-xsm                                              pass    
 build-arm64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64                                                  pass    
 build-arm64                                                  pass    
 build-armhf                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-arm64-libvirt                                          pass    
 build-armhf-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-pvops                                            pass    
 build-arm64-pvops                                            pass    
 build-armhf-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-amd64-amd64-xl                                          fail    
 test-amd64-coresched-amd64-xl                                pass    
 test-arm64-arm64-xl                                          fail    
 test-armhf-armhf-xl                                          pass    
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm           pass    
 test-amd64-amd64-xl-qemut-stubdom-debianhvm-amd64-xsm        pass    
 test-amd64-amd64-xl-qemut-debianhvm-i386-xsm                 pass    
 test-amd64-amd64-xl-qemuu-debianhvm-i386-xsm                 pass    
 test-amd64-amd64-libvirt-xsm                                 pass    
 test-arm64-arm64-libvirt-xsm                                 fail    
 test-amd64-amd64-xl-xsm                                      pass    
 test-arm64-arm64-xl-xsm                                      fail    
 test-amd64-amd64-qemuu-nested-amd                            fail    
 test-amd64-amd64-xl-pvhv2-amd                                pass    
 test-amd64-amd64-dom0pvh-xl-amd                              pass    
 test-amd64-amd64-xl-qemut-debianhvm-amd64                    pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64                    pass    
 test-amd64-amd64-freebsd11-amd64                             pass    
 test-amd64-amd64-freebsd12-amd64                             pass    
 test-amd64-amd64-xl-qemuu-ovmf-amd64                         pass    
 test-amd64-amd64-xl-qemut-win7-amd64                         fail    
 test-amd64-amd64-xl-qemuu-win7-amd64                         fail    
 test-amd64-amd64-xl-qemut-ws16-amd64                         fail    
 test-amd64-amd64-xl-qemuu-ws16-amd64                         fail    
 test-armhf-armhf-xl-arndale                                  pass    
 test-amd64-amd64-examine-bios                                pass    
 test-amd64-amd64-xl-credit1                                  pass    
 test-arm64-arm64-xl-credit1                                  fail    
 test-armhf-armhf-xl-credit1                                  pass    
 test-amd64-amd64-xl-credit2                                  pass    
 test-arm64-arm64-xl-credit2                                  fail    
 test-armhf-armhf-xl-credit2                                  pass    
 test-amd64-amd64-xl-qemuu-dmrestrict-amd64-dmrestrict        pass    
 test-amd64-amd64-examine                                     pass    
 test-arm64-arm64-examine                                     pass    
 test-armhf-armhf-examine                                     pass    
 test-amd64-amd64-qemuu-nested-intel                          pass    
 test-amd64-amd64-xl-pvhv2-intel                              pass    
 test-amd64-amd64-dom0pvh-xl-intel                            pass    
 test-amd64-amd64-libvirt                                     pass    
 test-armhf-armhf-libvirt                                     pass    
 test-amd64-amd64-xl-multivcpu                                pass    
 test-armhf-armhf-xl-multivcpu                                pass    
 test-amd64-amd64-pair                                        pass    
 test-amd64-amd64-libvirt-pair                                pass    
 test-amd64-amd64-xl-pvshim                                   pass    
 test-amd64-amd64-pygrub                                      pass    
 test-amd64-amd64-libvirt-qcow2                               pass    
 test-armhf-armhf-libvirt-qcow2                               fail    
 test-amd64-amd64-libvirt-raw                                 pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-armhf-armhf-libvirt-raw                                 pass    
 test-amd64-amd64-xl-rtds                                     pass    
 test-armhf-armhf-xl-rtds                                     pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64-shadow             pass    
 test-amd64-amd64-xl-shadow                                   pass    
 test-arm64-arm64-xl-thunderx                                 fail    
 test-amd64-amd64-examine-uefi                                pass    
 test-amd64-amd64-xl-vhd                                      pass    
 test-arm64-arm64-xl-vhd                                      pass    
 test-armhf-armhf-xl-vhd                                      pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Not pushing.

(No revision log; it would be 204832 lines long.)


From xen-devel-bounces@lists.xenproject.org Thu Jan 18 07:41:28 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 18 Jan 2024 07:41:28 +0000
Received: from list by lists.xenproject.org with outflank-mailman.668622.1040950 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQN1V-0006Qe-Sf; Thu, 18 Jan 2024 07:41:13 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 668622.1040950; Thu, 18 Jan 2024 07:41:13 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQN1V-0006QX-Ph; Thu, 18 Jan 2024 07:41:13 +0000
Received: by outflank-mailman (input) for mailman id 668622;
 Thu, 18 Jan 2024 07:41:12 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=fkFQ=I4=amd.com=Michal.Orzel@srs-se1.protection.inumbo.net>)
 id 1rQN1U-0006QR-4l
 for xen-devel@lists.xenproject.org; Thu, 18 Jan 2024 07:41:12 +0000
Received: from NAM11-BN8-obe.outbound.protection.outlook.com
 (mail-bn8nam11on20601.outbound.protection.outlook.com
 [2a01:111:f400:7eae::601])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id ee948da6-b5d4-11ee-9b0f-b553b5be7939;
 Thu, 18 Jan 2024 08:41:04 +0100 (CET)
Received: from SJ0PR13CA0036.namprd13.prod.outlook.com (2603:10b6:a03:2c2::11)
 by CH0PR12MB5076.namprd12.prod.outlook.com (2603:10b6:610:e3::17)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7202.24; Thu, 18 Jan
 2024 07:40:58 +0000
Received: from MWH0EPF000989E6.namprd02.prod.outlook.com
 (2603:10b6:a03:2c2:cafe::8d) by SJ0PR13CA0036.outlook.office365.com
 (2603:10b6:a03:2c2::11) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7202.23 via Frontend
 Transport; Thu, 18 Jan 2024 07:40:58 +0000
Received: from SATLEXMB03.amd.com (165.204.84.17) by
 MWH0EPF000989E6.mail.protection.outlook.com (10.167.241.133) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.7202.16 via Frontend Transport; Thu, 18 Jan 2024 07:40:58 +0000
Received: from SATLEXMB08.amd.com (10.181.40.132) by SATLEXMB03.amd.com
 (10.181.40.144) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.34; Thu, 18 Jan
 2024 01:40:57 -0600
Received: from SATLEXMB04.amd.com (10.181.40.145) by SATLEXMB08.amd.com
 (10.181.40.132) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.32; Wed, 17 Jan
 2024 23:40:57 -0800
Received: from [10.252.147.188] (10.180.168.240) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server id 15.1.2507.34 via Frontend
 Transport; Thu, 18 Jan 2024 01:40:55 -0600
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: ee948da6-b5d4-11ee-9b0f-b553b5be7939
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=Mbq1xcK1FH10NHn/zTmvKMOAVvpCj+ZOXRm1l/pwWT06ZxB5wdnVOEb21vuR/TdXf9NcrouOe24LAhkU2iblsuxgmx6nbZCOhXBVvEHAJL6j1W5APw331Lh0IYfHKdFjxqr+Ea2UYAHDvfM80ItbxTh+tN5lI8tsOKhk1tcRDSt3e4qeVMiTmQhIOaVr2r2uWMrgtUa2xKR7x8xqKwlk5ZAS4DGtYb850/DAoIQ3xv4uPUhac5xrOEkMmkR3tUDakNjwhS147yr1I8dfaKsQhHp7lQwkx+44qecpm6KZ+6kp/nBokRH+z7N9o2vpW9GWZ7/mIoCyMRlW10BBS0LMXA==
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=PYOBW9RGvqeA5gUZTpF8Oe0snUioi8NAqH30tz8926k=;
 b=KxS7fpZGsLaGAqHz5BNUQsyluw6m7K7Tjr4uj7veKvETkZvH/UoRaYiDOdKmh3G5oM/0jqGrzGg24aLqX46qHU1QyeghgBBdrfVLfRgQCLaqKxe1jHuk7/dcd+Ekprisq85dFb+2DdV1pYcRik0N9jqPiHaW02QDCrpW5QGy9ZZekL01tuGp+/cxBKv5dru1OehGNxdc6eukLWszUxEgsb+KjsqGmAlOxMVxv/WL6Uv++tED8SFCWrgidJpBePYar0sGrgRJlw4C/cSjgwI8jdhEtdtzmJyUls62hsfBT8bi+xZVVyj60Fvy2IgRiKTRRriudC3AyGKFYtmSCzwi1g==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=kernel.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)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=PYOBW9RGvqeA5gUZTpF8Oe0snUioi8NAqH30tz8926k=;
 b=44J8FxnMD41sNHRv6AjoGzwGaG+lWerY0ZJ3FcgDzn+BSNauEzGivXof/DfGJ+k0JlOKPKeNgtR7tq2i5XhVoMRUZfpgGG7dCaEwevt4USIvaVn2NajnvpsK91VvtspRXlnAeC9a0ddiWvX4NrFTHe4gu33QawTL7pmyd9iP55w=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=SATLEXMB03.amd.com; pr=C
Message-ID: <1c23b4b7-8f34-4282-acd3-9bc7e4c09c4c@amd.com>
Date: Thu, 18 Jan 2024 08:40:45 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v4 03/11] xen/arm: add Dom0 cache coloring support
To: Stefano Stabellini <sstabellini@kernel.org>
CC: Carlo Nonato <carlo.nonato@minervasys.tech>,
	<xen-devel@lists.xenproject.org>, Luca Miccio <lucmiccio@gmail.com>, "Julien
 Grall" <julien@xen.org>, Bertrand Marquis <bertrand.marquis@arm.com>,
	Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>, Marco Solieri
	<marco.solieri@minervasys.tech>
References: <20230123154735.74832-1-carlo.nonato@minervasys.tech>
 <20230123154735.74832-4-carlo.nonato@minervasys.tech>
 <a7a06a26-ae79-402c-96a4-a1ebfe8b5862@amd.com>
 <alpine.DEB.2.22.394.2401171617320.2287888@ubuntu-linux-20-04-desktop>
Content-Language: en-US
From: Michal Orzel <michal.orzel@amd.com>
In-Reply-To: <alpine.DEB.2.22.394.2401171617320.2287888@ubuntu-linux-20-04-desktop>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 7bit
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: MWH0EPF000989E6:EE_|CH0PR12MB5076:EE_
X-MS-Office365-Filtering-Correlation-Id: 8a20e9b7-a8e8-4665-0e3e-08dc17f8cfac
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam: BCL:0;
X-Microsoft-Antispam-Message-Info:
	sF3EucSuMyIrvfCAacE0zq9sZWGooGCLBxlq4f4/a9fheRyetk40kILckZAiNCGGOkqL4fXEU9cgkN41SKIrgYVpR2/DcpwCHk8pzJbpluIkKpeL0CZI42w7yyPwy18mIUfJtFctbciJAqSeyyufjvRy1EeD5lqltFW7+bLCcveVJ5fU0CGsZ2IbkAbB4b3Dv67u8FhM5hS0Vu//LsN4UJfxf9XSU0WIyLx5+m/Tizu6YSgqmwYbLWD2ubGSTjLtzX3P/D/Rq3drmH6e9/cL8mxAg/aIkBSdt2PPxWwV8xsLQpL3EH+c9z3p4h1S8DHa8ZusbXSYZJsq6D4IZ20BQ9OwjlWp7wYZOQV9BAP1J+kl6hiqtqzuV4wZwPpTQlqJ0nBrP6TzB5DiG1i8dKUCB62Xjkk3+i1vGFgOXRmiyJ7CAIyuM6R4ZQXWT0BSwtm6lom5twKfI0NiwiRzFq19iImBTX5e5Uk00JYBsL8+HQIZnnf4S7vjOv6P74nUW1+ShXDpInJxDz76nF/OpHXYyLLSfLfZ0Bc2X4h3uRTlEl0GduDy4NvUC2c5iND2EhrLliYj5YUInhhg5hodUUN0txY8bHWNKwJiqqdeb3vdYyZWxYNlV//Ae0yKbCuMFjLv9Y4Ls/Xa6HK98O9eRsDUOMvNaBvDotZ9yTaUGAWmYDf7H/ree7CdO/Lzxd/vXoIkBzzlDMowgR8/3sbOViVs9tpzAzdd83XEqaidwG9OY4ci3B5vrLcPs/8lXD0N+AFHHlrWFyo1gPR2ZRYTRRs3gnZgpwlNS+M2JKLgVK3GKdr+H9Trsgd7ttjualFRzhhV
X-Forefront-Antispam-Report:
	CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB03.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230031)(4636009)(39860400002)(396003)(376002)(346002)(136003)(230922051799003)(186009)(451199024)(64100799003)(82310400011)(1800799012)(40470700004)(46966006)(36840700001)(31686004)(40460700003)(40480700001)(83380400001)(426003)(336012)(8936002)(8676002)(4326008)(5660300002)(47076005)(6916009)(53546011)(316002)(6666004)(54906003)(70206006)(70586007)(16576012)(478600001)(44832011)(26005)(2616005)(81166007)(356005)(82740400003)(2906002)(36756003)(41300700001)(86362001)(31696002)(36860700001)(36900700001)(43740500002);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 Jan 2024 07:40:58.1849
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 8a20e9b7-a8e8-4665-0e3e-08dc17f8cfac
X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB03.amd.com]
X-MS-Exchange-CrossTenant-AuthSource:
	MWH0EPF000989E6.namprd02.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH0PR12MB5076



On 18/01/2024 01:23, Stefano Stabellini wrote:
> 
> 
> On Fri, 12 Jan 2024, Michal Orzel wrote:
>> Hi Carlo,
>>
>> On 23/01/2023 16:47, Carlo Nonato wrote:
>>>
>>>
>>> From: Luca Miccio <lucmiccio@gmail.com>
>>>
>>> This commit allows the user to set the cache coloring configuration for
>>> Dom0 via a command line parameter.
>>> Since cache coloring and static memory are incompatible, direct mapping
>>> Dom0 isn't possible when coloring is enabled.
>>>
>>> Here is also introduced a common configuration syntax for cache colors.
>>>
>>> Signed-off-by: Luca Miccio <lucmiccio@gmail.com>
>>> Signed-off-by: Marco Solieri <marco.solieri@minervasys.tech>
>>> Signed-off-by: Carlo Nonato <carlo.nonato@minervasys.tech>
>>> ---
>>> v4:
>>> - dom0 colors are dynamically allocated as for any other domain
>>>   (colors are duplicated in dom0_colors and in the new array, but logic
>>>   is simpler)
>>> ---
>>>  docs/misc/arm/cache-coloring.rst        | 32 ++++++++++++++++++++++---
>>>  xen/arch/arm/domain_build.c             | 17 +++++++++++--
>>>  xen/arch/arm/include/asm/llc_coloring.h |  4 ++++
>>>  xen/arch/arm/llc_coloring.c             | 14 +++++++++++
>>>  4 files changed, 62 insertions(+), 5 deletions(-)
>>>
>>> diff --git a/docs/misc/arm/cache-coloring.rst b/docs/misc/arm/cache-coloring.rst
>>> index 0244d2f606..c2e0e87426 100644
>>> --- a/docs/misc/arm/cache-coloring.rst
>>> +++ b/docs/misc/arm/cache-coloring.rst
>>> @@ -83,12 +83,38 @@ manually set the way size it's left for the user to overcome failing situations
>>>  or for debugging/testing purposes. See `Coloring parameters and domain
>>>  configurations`_ section for more information on that.
>>>
>>> +Colors selection format
>>> +***********************
>>> +
>>> +Regardless of the memory pool that has to be colored (Xen, Dom0/DomUs),
>>> +the color selection can be expressed using the same syntax. In particular a
>>> +comma-separated list of colors or ranges of colors is used.
>>> +Ranges are hyphen-separated intervals (such as `0-4`) and are inclusive on both
>>> +sides.
>>> +
>>> +Note that:
>>> + - no spaces are allowed between values.
>>> + - no overlapping ranges or duplicated colors are allowed.
>>> + - values must be written in ascending order.
>>> +
>>> +Examples:
>>> +
>>> ++---------------------+-----------------------------------+
>>> +|**Configuration**    |**Actual selection**               |
>>> ++---------------------+-----------------------------------+
>>> +|  1-2,5-8            | [1, 2, 5, 6, 7, 8]                |
>>> ++---------------------+-----------------------------------+
>>> +|  4-8,10,11,12       | [4, 5, 6, 7, 8, 10, 11, 12]       |
>>> ++---------------------+-----------------------------------+
>>> +|  0                  | [0]                               |
>>> ++---------------------+-----------------------------------+
>>> +
>>>  Coloring parameters and domain configurations
>>>  *********************************************
>>>
>>> -LLC way size (as previously discussed) can be set using the appropriate command
>>> -line parameter. See the relevant documentation in
>>> -"docs/misc/xen-command-line.pandoc".
>>> +LLC way size (as previously discussed) and Dom0 colors can be set using the
>>> +appropriate command line parameters. See the relevant documentation
>>> +in "docs/misc/xen-command-line.pandoc".
>>>
>>>  **Note:** If no color configuration is provided for a domain, the default one,
>>>  which corresponds to all available colors, is used instead.
>>> diff --git a/xen/arch/arm/domain_build.c b/xen/arch/arm/domain_build.c
>>> index f35f4d2456..093d4ad6f6 100644
>>> --- a/xen/arch/arm/domain_build.c
>>> +++ b/xen/arch/arm/domain_build.c
>>> @@ -2,6 +2,7 @@
>>>  #include <xen/init.h>
>>>  #include <xen/compile.h>
>>>  #include <xen/lib.h>
>>> +#include <xen/llc_coloring.h>
>>>  #include <xen/mm.h>
>>>  #include <xen/param.h>
>>>  #include <xen/domain_page.h>
>>> @@ -4014,7 +4015,10 @@ static int __init construct_dom0(struct domain *d)
>>>      /* type must be set before allocate_memory */
>>>      d->arch.type = kinfo.type;
>>>  #endif
>>> -    allocate_memory_11(d, &kinfo);
>>> +    if ( is_domain_llc_colored(d) )
>>> +        allocate_memory(d, &kinfo);
>> While doing some checks, I realized that the issue from previous series is still present.
>> Given that dom0 is hwdom, how are you going to prevent conflicts between allocated RAM and HW resources
>> that are to be mapped to dom0?
> 
> Are you referring to the address ranges picked for RAM region and how to
> make sure they don't conflict with something else (e.g. the MMIO region
> of a device)?
> 
> I thought that for dom0 we were reusing the same address layout of the
> host, so device MMIO would be mapped 1:1, memory would not be mapped 1:1
> (due to cache coloring) but it would be mapped to the same guest address
> ranges corresponding to RAM addresses on the host. Is it not the case in
> this version of the patch series?
It is not the case (see [PATCH v5 03/13] xen/arm: add Dom0 cache coloring support).
Hwdom would get assigned the normal Xen guest memory map. Instead we should map memory
to host RAM to prevent conflicts with MMIO and reserved memory (e.g. calling find_unallocated_memory
in hwdom case to retrieve host RAM excluding rsvm).

~Michal


From xen-devel-bounces@lists.xenproject.org Thu Jan 18 08:27:13 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 18 Jan 2024 08:27:13 +0000
Received: from list by lists.xenproject.org with outflank-mailman.668634.1040960 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQNjt-0004YA-Lw; Thu, 18 Jan 2024 08:27:05 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 668634.1040960; Thu, 18 Jan 2024 08:27:05 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQNjt-0004Y3-JC; Thu, 18 Jan 2024 08:27:05 +0000
Received: by outflank-mailman (input) for mailman id 668634;
 Thu, 18 Jan 2024 08:27:03 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=aSQR=I4=cloud.com=roger.pau@srs-se1.protection.inumbo.net>)
 id 1rQNjr-0004Xx-Gb
 for xen-devel@lists.xenproject.org; Thu, 18 Jan 2024 08:27:03 +0000
Received: from mail-wr1-x432.google.com (mail-wr1-x432.google.com
 [2a00:1450:4864:20::432])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 5aeb044b-b5db-11ee-98f2-6d05b1d4d9a1;
 Thu, 18 Jan 2024 09:27:02 +0100 (CET)
Received: by mail-wr1-x432.google.com with SMTP id
 ffacd0b85a97d-337be1326e3so2337829f8f.2
 for <xen-devel@lists.xenproject.org>; Thu, 18 Jan 2024 00:27:02 -0800 (PST)
Received: from localhost ([213.195.127.68]) by smtp.gmail.com with ESMTPSA id
 i16-20020a5d55d0000000b00337c7423b95sm1651752wrw.61.2024.01.18.00.27.01
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 18 Jan 2024 00:27:01 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 5aeb044b-b5db-11ee-98f2-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1705566422; x=1706171222; darn=lists.xenproject.org;
        h=in-reply-to:content-transfer-encoding:content-disposition
         :mime-version:references:message-id:subject:cc:to:from:date:from:to
         :cc:subject:date:message-id:reply-to;
        bh=0gMk9Qli1uHFdRyVBRU4olTHzO9Mwb9pnIxJftD4iqA=;
        b=eUDbVXzS5iLf0v3cKxkerPH1vJJVp8utLSHXF0s9C5VZrb6pKUdZXYdu/1obMHGbtF
         XtriF3vpJFFOjt40eGvwoFXBxuQWEL8Nbxk9TKn2rGva6qxX0K1K4C2oTZbIV63EuMg0
         +8ZWzBZ6z73r+LDxNlp16oTDXX3wVjtAeA5cw=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705566422; x=1706171222;
        h=in-reply-to:content-transfer-encoding:content-disposition
         :mime-version:references:message-id:subject:cc:to:from:date
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=0gMk9Qli1uHFdRyVBRU4olTHzO9Mwb9pnIxJftD4iqA=;
        b=OExDBxA4LDUrtVEVTRXGLqRdNKL0nUfx5T/Ng53ACAundMFbdQSeObBxKfgw0aJKFK
         R0EH7IDYysOQMcyv3iAitpo1ASJmFLo/v2MLoL22higjL9S+Pp4e9lcpLh3jkCeDpZ/5
         ZJrzI+U6w8ZGUjS3R00HUMM0q7qSP0AvXKMttHSDGJ4hfEC4z0H1LEflYKZ3TDjKPiG5
         f4mJojqeHEEupnX79Ud1gGaEHnORhgKoX+jspTvNjEbg5g0C2RjSQoT/FVDlMrlxu3PC
         9TaUlEqYQx1v797OEk+/AIC06h8vQ2OIPvRPyfMHTb7loVENgJKTMJ2iwMFl0D2GD9Za
         XZNA==
X-Gm-Message-State: AOJu0Yz4gRNv8mGRJ7nUQTigD9/hdYCsdwHCp4eGaESW/EcgtZf2HWzK
	yfrMR+hZvkIC1UCpqzIrriRqlbMleiB6ooGhBknNUMBXLzg/q7Q+33oySoz/nyI=
X-Google-Smtp-Source: AGHT+IGrW0m7/9rEu2gDX5+IClkIgV7ilta0TEsI0ARp4BpVNToIz+pvkZB/hWX1iNsPjXMOaDCrjg==
X-Received: by 2002:adf:e946:0:b0:337:6e32:1811 with SMTP id m6-20020adfe946000000b003376e321811mr281788wrn.75.1705566421942;
        Thu, 18 Jan 2024 00:27:01 -0800 (PST)
Date: Thu, 18 Jan 2024 09:27:00 +0100
From: Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
To: Patrick Plenefisch <simonpatp@gmail.com>
Cc: Jan Beulich <jbeulich@suse.com>, xen-devel@lists.xenproject.org,
	Juergen Gross <jgross@suse.com>
Subject: Re: E820 memory allocation issue on Threadripper platforms
Message-ID: <Zajg1O7Z52VTBq31@macbook>
References: <CAOCpoWdOH=xGxiQSC1c5Ueb1THxAjH4WiZbCZq-QT+d_KAk3SA@mail.gmail.com>
 <1708c3d7-662a-44bc-b9b3-4ab9f8642d7b@suse.com>
 <dcaf9d8d-ad5a-4714-936b-79ed0e587f9d@suse.com>
 <CAOCpoWeowZPuQTeBp9nu8p8CDtE=u++wN_UqRoABZtB57D50Qw@mail.gmail.com>
 <ac742d12-ec91-4215-bb42-82a145924b4f@suse.com>
 <CAOCpoWfQmkhN3hms1xuotSUZzVzR99i9cNGGU2r=yD5PjysMiQ@mail.gmail.com>
 <fa23a590-5869-4e11-8998-1d03742c5919@suse.com>
 <CAOCpoWf4CMkCWx8uR2NbFrZrKSS78wj1-hFsAUqsjCfsmqooVA@mail.gmail.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <CAOCpoWf4CMkCWx8uR2NbFrZrKSS78wj1-hFsAUqsjCfsmqooVA@mail.gmail.com>

On Thu, Jan 18, 2024 at 01:23:56AM -0500, Patrick Plenefisch wrote:
> On Wed, Jan 17, 2024 at 3:46 AM Jan Beulich <jbeulich@suse.com> wrote:
> 
> > On 17.01.2024 07:12, Patrick Plenefisch wrote:
> > > On Tue, Jan 16, 2024 at 4:33 AM Jan Beulich <jbeulich@suse.com> wrote:
> > >
> > >> On 16.01.2024 01:22, Patrick Plenefisch wrote:
> For the two logs that actually boooted (linuxoffset), I truncated them
> during pcie initialization, but they did go all the way to give me a login
> screen

I'm not seeing any Linux output on the provided logs, they just seem
to contain Xen output ...

> >
> > > As someone who hasn't built a kernel in over a decade, should I figure
> > out
> > > how to do a kernel build with CONFIG_PHYSICAL_START=0x2000000 and report
> > > back?
> >
> > That was largely a suggestion to perhaps allow you to gain some
> > workable setup. It would be of interest to us largely for completeness.
> >
> 
> Typo aside, setting the boot to 2MiB works! It works better for PV, while
> PVH has some graphics card issues, namely that I have to interact over
> serial and dmesg has some concerning radeon errors

... and so the radeon error mentioned here seem to be missing.  IIRC
for radeon cards to work on PVH dom0 you will need an hypervisor with
the following commit:

https://xenbits.xen.org/gitweb/?p=xen.git;a=commit;h=f69c5991595c92756860d038346569464c1b9ea1

(included in 4.18)

There where also some changes not long ago in order to propagate the
video console information from Xen into dom0, those are also included
in 4.18, but I don't recall in which Linux version they landed.

Anyway, would be good if you can provide the full Xen + Linux logs
when the radeon issue happens.

Regards, Roger.


From xen-devel-bounces@lists.xenproject.org Thu Jan 18 08:34:32 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 18 Jan 2024 08:34:32 +0000
Received: from list by lists.xenproject.org with outflank-mailman.668640.1040970 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQNr2-0006ZH-Hz; Thu, 18 Jan 2024 08:34:28 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 668640.1040970; Thu, 18 Jan 2024 08:34:28 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQNr2-0006ZA-Ei; Thu, 18 Jan 2024 08:34:28 +0000
Received: by outflank-mailman (input) for mailman id 668640;
 Thu, 18 Jan 2024 08:34:27 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=fErA=I4=gmail.com=simonpatp@srs-se1.protection.inumbo.net>)
 id 1rQNr1-0006Z2-12
 for xen-devel@lists.xenproject.org; Thu, 18 Jan 2024 08:34:27 +0000
Received: from mail-lj1-x229.google.com (mail-lj1-x229.google.com
 [2a00:1450:4864:20::229])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 6364b6ab-b5dc-11ee-98f2-6d05b1d4d9a1;
 Thu, 18 Jan 2024 09:34:26 +0100 (CET)
Received: by mail-lj1-x229.google.com with SMTP id
 38308e7fff4ca-2cd8b661cb8so72887481fa.0
 for <xen-devel@lists.xenproject.org>; Thu, 18 Jan 2024 00:34:26 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 6364b6ab-b5dc-11ee-98f2-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1705566865; x=1706171665; darn=lists.xenproject.org;
        h=cc:to:subject:message-id:date:from:in-reply-to:references
         :mime-version:from:to:cc:subject:date:message-id:reply-to;
        bh=X0P/v9GSeqllySukQpyKAbHnNpPpvlL6m8f2U2bhNA8=;
        b=bJwCGuYT+YzbV48e4OURAw0D7bDDDaBRU4HP8KkB0vLf4/vM6zzw0PIy4F1+ssEZy/
         DvKvDl6WlY7pSCvOTGLBQ2Ibnim4Q2k1J4ivBzKBj7TrbMI1Ho6lplMymi1S3zUF1YlQ
         KKWhhfG2QrYgbK0c3pASrMtqWaCVU5Gf3x/VmlZXErzl0opfzjr+whRYBalr9ftaBS41
         JJQO4eZIajLgT3cVcCUDtdbmaO9af7clq6x1N1RfELBpEo0g6Vniaau/lzPSjd4k51Zn
         WgADhs1StStUm+pN26WDc18qGSaVRwa+fg78m60KBN5CPKQ6UNy2TSMq8C5hGCq/ABVE
         b+Rg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705566865; x=1706171665;
        h=cc:to:subject:message-id:date:from:in-reply-to:references
         :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id
         :reply-to;
        bh=X0P/v9GSeqllySukQpyKAbHnNpPpvlL6m8f2U2bhNA8=;
        b=alLi8pchgdLSvQTvcPLZ8EfHgjNaV/WJDcDyhYZc74TfsWJhz++zYIuEwZwpKNb7ts
         Bniiv3CDOGOPtU5vxB1yA0SenCCIU9ukXt8v04Ti30M+Mt4gFR1gCZWLsXb9QQDdjY+J
         uoIdVgljJCPHQGvloqX/Ksbt8VqYgcmQV690PUG6VU/QmZiyEiluDCbXMU16ukwT7xon
         yAnsA9ORYEF7HjgYBPnDhtDWnnQefmwIAFa6G2zERaDwnLleecomZD3kI1MAlVOn1b5q
         pk/cQt/6Y+6nbAgwSmZLn0eN1Su6n5HlUdHegXVshRraG4ak9HFHkdZAcUntkjBwOsXh
         QA9Q==
X-Gm-Message-State: AOJu0YxUkkVdtBxlNl96oqc7yX9oTu4fsyDfFdVg3QfFy8GTVNy1rbmg
	om6aZ3PQXxLCNG5bbNSzY4f6QweOzGQ16CmDYLkBff/KlsKxwHMMXTNx+wSGS9v8eUzRTubZ7u1
	CH7tdsARBACJmLC9vE2LgpCp7qww=
X-Google-Smtp-Source: AGHT+IHnyhkMXu+Nqa1SYcgYtrB3YVcHIB3el58KAlKF0v1gbPQAuSlyE99tyH0pN0VAep/xY29v3J8P4EcHhFhRr80=
X-Received: by 2002:a2e:3e18:0:b0:2cb:2d0f:6c5a with SMTP id
 l24-20020a2e3e18000000b002cb2d0f6c5amr172800lja.41.1705566865269; Thu, 18 Jan
 2024 00:34:25 -0800 (PST)
MIME-Version: 1.0
References: <CAOCpoWdOH=xGxiQSC1c5Ueb1THxAjH4WiZbCZq-QT+d_KAk3SA@mail.gmail.com>
 <1708c3d7-662a-44bc-b9b3-4ab9f8642d7b@suse.com> <dcaf9d8d-ad5a-4714-936b-79ed0e587f9d@suse.com>
 <CAOCpoWeowZPuQTeBp9nu8p8CDtE=u++wN_UqRoABZtB57D50Qw@mail.gmail.com>
 <ac742d12-ec91-4215-bb42-82a145924b4f@suse.com> <CAOCpoWfQmkhN3hms1xuotSUZzVzR99i9cNGGU2r=yD5PjysMiQ@mail.gmail.com>
 <fa23a590-5869-4e11-8998-1d03742c5919@suse.com> <CAOCpoWf4CMkCWx8uR2NbFrZrKSS78wj1-hFsAUqsjCfsmqooVA@mail.gmail.com>
 <Zajg1O7Z52VTBq31@macbook>
In-Reply-To: <Zajg1O7Z52VTBq31@macbook>
From: Patrick Plenefisch <simonpatp@gmail.com>
Date: Thu, 18 Jan 2024 03:34:13 -0500
Message-ID: <CAOCpoWeO9h7b_CjJb9jtKaEUVv_=XDSVkr55QSg3ArFc4n8G2w@mail.gmail.com>
Subject: Re: E820 memory allocation issue on Threadripper platforms
To: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
Cc: Jan Beulich <jbeulich@suse.com>, xen-devel@lists.xenproject.org, 
	Juergen Gross <jgross@suse.com>
Content-Type: multipart/alternative; boundary="000000000000252a24060f343b24"

--000000000000252a24060f343b24
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

On Thu, Jan 18, 2024 at 3:27=E2=80=AFAM Roger Pau Monn=C3=A9 <roger.pau@cit=
rix.com>
wrote:

> On Thu, Jan 18, 2024 at 01:23:56AM -0500, Patrick Plenefisch wrote:
> > On Wed, Jan 17, 2024 at 3:46=E2=80=AFAM Jan Beulich <jbeulich@suse.com>=
 wrote:
> >
> > > On 17.01.2024 07:12, Patrick Plenefisch wrote:
> > > > On Tue, Jan 16, 2024 at 4:33=E2=80=AFAM Jan Beulich <jbeulich@suse.=
com>
> wrote:
> > > >
> > > >> On 16.01.2024 01:22, Patrick Plenefisch wrote:
> > For the two logs that actually boooted (linuxoffset), I truncated them
> > during pcie initialization, but they did go all the way to give me a
> login
> > screen
>
> I'm not seeing any Linux output on the provided logs, they just seem
> to contain Xen output ...
>
> > >
> > > > As someone who hasn't built a kernel in over a decade, should I
> figure
> > > out
> > > > how to do a kernel build with CONFIG_PHYSICAL_START=3D0x2000000 and
> report
> > > > back?
> > >
> > > That was largely a suggestion to perhaps allow you to gain some
> > > workable setup. It would be of interest to us largely for completenes=
s.
> > >
> >
> > Typo aside, setting the boot to 2MiB works! It works better for PV, whi=
le
> > PVH has some graphics card issues, namely that I have to interact over
> > serial and dmesg has some concerning radeon errors
>
> ... and so the radeon error mentioned here seem to be missing.  IIRC
> for radeon cards to work on PVH dom0 you will need an hypervisor with
> the following commit:
>
>
> https://xenbits.xen.org/gitweb/?p=3Dxen.git;a=3Dcommit;h=3Df69c5991595c92=
756860d038346569464c1b9ea1
>
> (included in 4.18)
>

hmm.. that would mean I was running with them as I used 4.18 for that run


>
> There where also some changes not long ago in order to propagate the
> video console information from Xen into dom0, those are also included
> in 4.18, but I don't recall in which Linux version they landed.
>
> Anyway, would be good if you can provide the full Xen + Linux logs
> when the radeon issue happens.
>

Luckily linux logs are mercifully short. Append this to
xen-4.18p_grub_linuxoffset_pvh.log:

[    0.778770] i2c_designware AMDI0010:00: Unknown Synopsys component type:
0xffffffff
[    0.914664] amd_gpio AMDI0030:00: error -EINVAL: IRQ index 0 not found
[    0.930112] xen_mcelog: Failed to get CPU numbers
[    8.324907] ccp 0000:06:00.5: pcim_iomap_regions failed (-16)
[    8.338604] sp5100-tco sp5100-tco: Watchdog hardware is disabled
[    8.909366] [drm:radeon_get_bios [radeon]] *ERROR* ACPI VFCT table
present but broken (too short #2)

Debian GNU/Linux 12 testos hvc0

[   11.891845] amdgpu 0000:01:00.0: [drm:amdgpu_ib_ring_tests [amdgpu]]
*ERROR* IB test failed on uvd (-110).
[   12.915854] amdgpu 0000:01:00.0: [drm:amdgpu_ib_ring_tests [amdgpu]]
*ERROR* IB test failed on uvd_enc0 (-110).
[   13.939868] amdgpu 0000:01:00.0: [drm:amdgpu_ib_ring_tests [amdgpu]]
*ERROR* IB test failed on uvd_enc1 (-110).
[   15.059840] amdgpu 0000:01:00.0: [drm:amdgpu_ib_ring_tests [amdgpu]]
*ERROR* IB test failed on vce0 (-110).






>
> Regards, Roger.
>

--000000000000252a24060f343b24
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><div dir=3D"ltr"><br></div><br><div class=3D"gmail_quote">=
<div dir=3D"ltr" class=3D"gmail_attr">On Thu, Jan 18, 2024 at 3:27=E2=80=AF=
AM Roger Pau Monn=C3=A9 &lt;<a href=3D"mailto:roger.pau@citrix.com">roger.p=
au@citrix.com</a>&gt; wrote:<br></div><blockquote class=3D"gmail_quote" sty=
le=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);paddi=
ng-left:1ex">On Thu, Jan 18, 2024 at 01:23:56AM -0500, Patrick Plenefisch w=
rote:<br>
&gt; On Wed, Jan 17, 2024 at 3:46=E2=80=AFAM Jan Beulich &lt;<a href=3D"mai=
lto:jbeulich@suse.com" target=3D"_blank">jbeulich@suse.com</a>&gt; wrote:<b=
r>
&gt; <br>
&gt; &gt; On 17.01.2024 07:12, Patrick Plenefisch wrote:<br>
&gt; &gt; &gt; On Tue, Jan 16, 2024 at 4:33=E2=80=AFAM Jan Beulich &lt;<a h=
ref=3D"mailto:jbeulich@suse.com" target=3D"_blank">jbeulich@suse.com</a>&gt=
; wrote:<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt;&gt; On 16.01.2024 01:22, Patrick Plenefisch wrote:<br>
&gt; For the two logs that actually boooted (linuxoffset), I truncated them=
<br>
&gt; during pcie initialization, but they did go all the way to give me a l=
ogin<br>
&gt; screen<br>
<br>
I&#39;m not seeing any Linux output on the provided logs, they just seem<br=
>
to contain Xen output ...<br>
<br>
&gt; &gt;<br>
&gt; &gt; &gt; As someone who hasn&#39;t built a kernel in over a decade, s=
hould I figure<br>
&gt; &gt; out<br>
&gt; &gt; &gt; how to do a kernel build with CONFIG_PHYSICAL_START=3D0x2000=
000 and report<br>
&gt; &gt; &gt; back?<br>
&gt; &gt;<br>
&gt; &gt; That was largely a suggestion to perhaps allow you to gain some<b=
r>
&gt; &gt; workable setup. It would be of interest to us largely for complet=
eness.<br>
&gt; &gt;<br>
&gt; <br>
&gt; Typo aside, setting the boot to 2MiB works! It works better for PV, wh=
ile<br>
&gt; PVH has some graphics card issues, namely that I have to interact over=
<br>
&gt; serial and dmesg has some concerning radeon errors<br>
<br>
... and so the radeon error mentioned here seem to be missing.=C2=A0 IIRC<b=
r>
for radeon cards to work on PVH dom0 you will need an hypervisor with<br>
the following commit:<br>
<br>
<a href=3D"https://xenbits.xen.org/gitweb/?p=3Dxen.git;a=3Dcommit;h=3Df69c5=
991595c92756860d038346569464c1b9ea1" rel=3D"noreferrer" target=3D"_blank">h=
ttps://xenbits.xen.org/gitweb/?p=3Dxen.git;a=3Dcommit;h=3Df69c5991595c92756=
860d038346569464c1b9ea1</a><br>
<br>
(included in 4.18)<br></blockquote><div><br></div><div>hmm.. that would mea=
n I was running with them as I used 4.18 for that run</div><div>=C2=A0<br><=
/div><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;bo=
rder-left:1px solid rgb(204,204,204);padding-left:1ex">
<br>
There where also some changes not long ago in order to propagate the<br>
video console information from Xen into dom0, those are also included<br>
in 4.18, but I don&#39;t recall in which Linux version they landed.<br>
<br>
Anyway, would be good if you can provide the full Xen + Linux logs<br>
when the radeon issue happens.<br></blockquote><div><br></div><div>Luckily =
linux logs are mercifully short. Append this to xen-4.18p_grub_linuxoffset_=
pvh.log:</div><div><br></div><div>[ =C2=A0 =C2=A00.778770] i2c_designware A=
MDI0010:00: Unknown Synopsys component type: 0xffffffff<br>[ =C2=A0 =C2=A00=
.914664] amd_gpio AMDI0030:00: error -EINVAL: IRQ index 0 not found<br>[ =
=C2=A0 =C2=A00.930112] xen_mcelog: Failed to get CPU numbers<br>[ =C2=A0 =
=C2=A08.324907] ccp 0000:06:00.5: pcim_iomap_regions failed (-16)<br>[ =C2=
=A0 =C2=A08.338604] sp5100-tco sp5100-tco: Watchdog hardware is disabled<br=
>[ =C2=A0 =C2=A08.909366] [drm:radeon_get_bios [radeon]] *ERROR* ACPI VFCT =
table present but broken (too short #2)<br><br>Debian GNU/Linux 12 testos h=
vc0<br><br>[ =C2=A0 11.891845] amdgpu 0000:01:00.0: [drm:amdgpu_ib_ring_tes=
ts [amdgpu]] *ERROR* IB test failed on uvd (-110).<br>[ =C2=A0 12.915854] a=
mdgpu 0000:01:00.0: [drm:amdgpu_ib_ring_tests [amdgpu]] *ERROR* IB test fai=
led on uvd_enc0 (-110).<br>[ =C2=A0 13.939868] amdgpu 0000:01:00.0: [drm:am=
dgpu_ib_ring_tests [amdgpu]] *ERROR* IB test failed on uvd_enc1 (-110).<br>=
[ =C2=A0 15.059840] amdgpu 0000:01:00.0: [drm:amdgpu_ib_ring_tests [amdgpu]=
] *ERROR* IB test failed on vce0 (-110).</div><div><br></div><div><br></div=
><div><br></div><div><br></div><div>=C2=A0</div><blockquote class=3D"gmail_=
quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,=
204);padding-left:1ex">
<br>
Regards, Roger.<br>
</blockquote></div></div>

--000000000000252a24060f343b24--


From xen-devel-bounces@lists.xenproject.org Thu Jan 18 09:01:29 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 18 Jan 2024 09:01:29 +0000
Received: from list by lists.xenproject.org with outflank-mailman.668644.1040980 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQOGv-0003Sk-Jd; Thu, 18 Jan 2024 09:01:13 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 668644.1040980; Thu, 18 Jan 2024 09:01:13 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQOGv-0003Sd-GU; Thu, 18 Jan 2024 09:01:13 +0000
Received: by outflank-mailman (input) for mailman id 668644;
 Thu, 18 Jan 2024 09:01:12 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=2mYN=I4=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rQOGu-0003SX-Me
 for xen-devel@lists.xenproject.org; Thu, 18 Jan 2024 09:01:12 +0000
Received: from mail-wr1-x42d.google.com (mail-wr1-x42d.google.com
 [2a00:1450:4864:20::42d])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 1d796d60-b5e0-11ee-9b0f-b553b5be7939;
 Thu, 18 Jan 2024 10:01:06 +0100 (CET)
Received: by mail-wr1-x42d.google.com with SMTP id
 ffacd0b85a97d-3376d424a79so9700678f8f.1
 for <xen-devel@lists.xenproject.org>; Thu, 18 Jan 2024 01:01:06 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 p1-20020adfe601000000b00337bf461385sm3515093wrm.26.2024.01.18.01.01.05
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 18 Jan 2024 01:01:05 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 1d796d60-b5e0-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1705568466; x=1706173266; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:from:to:cc:subject:date:message-id:reply-to;
        bh=9s+boU+UZs5oxFTNgdFyx+4K66mSOkw+r4d4h929r00=;
        b=Kr1NZlzD8aQJd7w5lAzMZoh7wrDmgQmuv1VyxyBIwIagGMlbpCNJfC2vaq8ddBpfw8
         27cUzkEYuFrixh5JOHRolw3367kND8deRnTiJEuahbxI+qjNBMf93UWAN0sCfflmAvv4
         DxBoTrYXV/DGW2njw9WgM3xl+orQCFeDo/OUMTzgufiO+MH9al8NA7RGArOJuOgBlOK9
         wAZTSMLJQDy2nme1ruQhSHM/zbO6AdPXbNIHVEIemZQQQlDphOqxSZS82Vnz6zmsFFer
         cJrfrt/K3ZbEgVufZYeFcQ+VaJr8w/ZwJvR4iqIiF/mifxyG0dSknrjzmzB/W++IHXUg
         OfVA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705568466; x=1706173266;
        h=content-transfer-encoding:in-reply-to:autocrypt:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to;
        bh=9s+boU+UZs5oxFTNgdFyx+4K66mSOkw+r4d4h929r00=;
        b=rtKEd7Ud/D1WeX8f33T6QE9XYY0QNu8k4G211X2F16R12K4Rq+4K8nt1Mv2jNAo+zI
         dugpU7E/OEAEMIdRo5QUN9QB9Nl1HblXdtJJqpjDTFaVoSxAI7Hb53ul04gm3uUvLmOx
         xw0DIbRUVWoyeu+a0AGOuj3ZSlIXjuxZe20uHVh31dG2xkCd9/igDic/ccwUTeX7YZVW
         i6SXp/QaNqiwdwPRwJ9ReHaceqP0+B7aZ6RG/+yzymFmsBUhxzqAzZNYuHKBb/sqvgy1
         2dzvo/ZGNcisCsfD/MZGPYAjPFvjAha+oYQLHhv7cTLw/20h72OHXG68DZDiXlgvJfyM
         3pFg==
X-Gm-Message-State: AOJu0Yx9egibkn8xRfYtnlw24YLJ9eBmzBRfKkxKLqfLYfD+GbCb7sFy
	7CRvPeC6P2YptZXwKPMzIdWY6poxSIBGWGZ4d52k4MBmcUqf7+Xxt3YxJh+RJw==
X-Google-Smtp-Source: AGHT+IGEzTq8x1ivCqzOEzjd+oXcV2FZURSBIOtZLouypfI+FLCuKDCPCCya3Gb7r/LC8B6KGfE7xQ==
X-Received: by 2002:adf:fa8a:0:b0:337:c80f:6e19 with SMTP id h10-20020adffa8a000000b00337c80f6e19mr249259wrr.69.1705568466221;
        Thu, 18 Jan 2024 01:01:06 -0800 (PST)
Message-ID: <69bd7fa5-4237-4b11-b56f-2f2176972e62@suse.com>
Date: Thu, 18 Jan 2024 10:01:04 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: E820 memory allocation issue on Threadripper platforms
To: Patrick Plenefisch <simonpatp@gmail.com>
Cc: xen-devel@lists.xenproject.org, Juergen Gross <jgross@suse.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
References: <CAOCpoWdOH=xGxiQSC1c5Ueb1THxAjH4WiZbCZq-QT+d_KAk3SA@mail.gmail.com>
 <1708c3d7-662a-44bc-b9b3-4ab9f8642d7b@suse.com>
 <dcaf9d8d-ad5a-4714-936b-79ed0e587f9d@suse.com>
 <CAOCpoWeowZPuQTeBp9nu8p8CDtE=u++wN_UqRoABZtB57D50Qw@mail.gmail.com>
 <ac742d12-ec91-4215-bb42-82a145924b4f@suse.com>
 <CAOCpoWfQmkhN3hms1xuotSUZzVzR99i9cNGGU2r=yD5PjysMiQ@mail.gmail.com>
 <fa23a590-5869-4e11-8998-1d03742c5919@suse.com>
 <CAOCpoWf4CMkCWx8uR2NbFrZrKSS78wj1-hFsAUqsjCfsmqooVA@mail.gmail.com>
Content-Language: en-US
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <CAOCpoWf4CMkCWx8uR2NbFrZrKSS78wj1-hFsAUqsjCfsmqooVA@mail.gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 18.01.2024 07:23, Patrick Plenefisch wrote:
> On Wed, Jan 17, 2024 at 3:46 AM Jan Beulich <jbeulich@suse.com> wrote:
>> On 17.01.2024 07:12, Patrick Plenefisch wrote:
>>> I'm currently talking to the vendor's support team and testing a beta
>> BIOS
>>> for unrelated reasons, is there something specific I should forward to
>>> them, either as a question or as a request for a fix?
>>
>> Well, first it would need figuring whether the "interesting" regions
>> are being put in place by firmware of the boot loader. If it's firmware
>> (pretty likely at least for the region you're having trouble with), you
>> may want to ask them to re-do where they place that specific data.
> 
> This section changes boot-to-boot and grub vs EFI direct load, but my
> untrained eyes don't see an obvoius pattern. I've attached several logs.
> Name format:
> 
> xen-XENVERSION_LOADER_KERNELNAME_TYPE.log
> 
> where XENVERSION is 4.17 (packaged in debian 12) or 4.18 (I built from
> source) or 4.18p (I applied the patch you mention below and built from
> source)
> 
> where LOADER is grub for grub2 (from debian 12) or UEFI (direct boot via
> efibootmgr-configured UEFI entry)
> 
> where KERNELNAME is either empty (PVH failure), or linuxpatch (linux with
> the patch requested above), or linuxoffset (with PHYSICAL_START=2MiB), or
> linux6 (debian 12 kernel)
> 
> where TYPE is either pvh or pv
> 
> For the two logs that actually boooted (linuxoffset), I truncated them
> during pcie initialization, but they did go all the way to give me a login
> screen

The LOADER=UEFI logs confirm it's firmware (in the widest sense, as it could
also be a UEFI driver) which puts in place these unhelpful regions.

Jan


From xen-devel-bounces@lists.xenproject.org Thu Jan 18 09:21:12 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 18 Jan 2024 09:21:12 +0000
Received: from list by lists.xenproject.org with outflank-mailman.668649.1040990 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQOaA-00076o-53; Thu, 18 Jan 2024 09:21:06 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 668649.1040990; Thu, 18 Jan 2024 09:21:06 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQOaA-00076h-2S; Thu, 18 Jan 2024 09:21:06 +0000
Received: by outflank-mailman (input) for mailman id 668649;
 Thu, 18 Jan 2024 09:21:05 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>) id 1rQOa8-00074P-U5
 for xen-devel@lists.xenproject.org; Thu, 18 Jan 2024 09:21:04 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rQOa8-000198-D1; Thu, 18 Jan 2024 09:21:04 +0000
Received: from gw1.octic.net ([88.97.20.152] helo=[10.0.1.240])
 by xenbits.xenproject.org with esmtpsa
 (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rQOa8-0006Vb-81; Thu, 18 Jan 2024 09:21:04 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
	s=20200302mail; h=Content-Transfer-Encoding:Content-Type:In-Reply-To:From:
	References:Cc:To:Subject:MIME-Version:Date:Message-ID;
	bh=GaLa3CzZpXpw3/z1OpelPIXDOdlfc8xqucQxj7oIYP0=; b=0YCtO3nzHp/AoeGm8qiBhtrt0L
	qEpnttuQrg4h5oBK7LcUwuAGQW2HelIp6T35k36EnQNzs48jEhf+lweyiVQFm7YxnrgyUizpjgMW2
	b0hd2vKnTM69V516Ben+8SyYz4gx/tzVTq9Xpbee9v2wpxQgnPDJbOXac9QhwfeAVU+c=;
Message-ID: <54c7f4e1-ef94-491d-ad83-8c205b28ccd1@xen.org>
Date: Thu, 18 Jan 2024 09:21:02 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2 5/7] xen/ppc: Enable bootfdt and boot allocator
Content-Language: en-GB
To: Shawn Anastasio <sanastasio@raptorengineering.com>,
 xen-devel@lists.xenproject.org
Cc: Timothy Pearson <tpearson@raptorengineering.com>,
 Jan Beulich <jbeulich@suse.com>
References: <cover.1702607884.git.sanastasio@raptorengineering.com>
 <aa67a0dacab0e3f39dabeb30e31732d617cadde1.1702607884.git.sanastasio@raptorengineering.com>
 <0b9c3c86-2fa2-47f1-aa7f-4d833ff86430@xen.org>
 <7ef844df-3337-40ac-8d31-adabd3c3a3d7@raptorengineering.com>
From: Julien Grall <julien@xen.org>
In-Reply-To: <7ef844df-3337-40ac-8d31-adabd3c3a3d7@raptorengineering.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

Hi Shawn,

On 18/01/2024 01:36, Shawn Anastasio wrote:
> Hi Julien,
> 
> On 12/20/23 7:49 AM, Julien Grall wrote:
>> Hi,
>>
>> On 15/12/2023 02:44, Shawn Anastasio wrote:
>>> diff --git a/xen/common/device-tree/bootfdt.c
>>> b/xen/common/device-tree/bootfdt.c
>>> index 796ac01c18..7ddfcc7e2a 100644
>>> --- a/xen/common/device-tree/bootfdt.c
>>> +++ b/xen/common/device-tree/bootfdt.c
>>> @@ -543,12 +543,33 @@ size_t __init boot_fdt_info(const void *fdt,
>>> paddr_t paddr)
>>>        if ( ret < 0 )
>>>            panic("No valid device tree\n");
>>>    -    add_boot_module(BOOTMOD_FDT, paddr, fdt_totalsize(fdt), false);
>>> -
>>>        ret = device_tree_for_each_node((void *)fdt, 0, early_scan_node,
>>> NULL);
>>>        if ( ret )
>>>            panic("Early FDT parsing failed (%d)\n", ret);
>>>    +    /*
>>> +     * Add module for the FDT itself after the device tree has been
>>> parsed. This
>>> +     * is required on ppc64le where the device tree passed to Xen may
>>> have been
>>> +     * allocated by skiboot, in which case it will exist within a
>>> reserved
>>> +     * region and this call will fail. This is fine, however, since
>>> either way
>>> +     * the allocator will know not to step on the device tree.
>>> +     */
>>> +    add_boot_module(BOOTMOD_FDT, paddr, fdt_totalsize(fdt), false);
>>
>> The consequence is BOOTMOD_FDT will not be added. AFAICT, Arm doesn't
>> try to access BOOTMOD_FDT, but I think it would be worth to print message.
>>
> 
> A message will already be printed by `meminfo_overlap_check` in setup.c
> when this condition is hit, like this:
> 
> (XEN) Region: [0x0000003076e9b0, 0x00000030775215) overlapping with
> bank[3]: [0x00000030600000, 0x00000031000000)

This is somewhat non-descriptive. IOW it doesn't tell me that the 
overlap was with the FDT. But I guess this can be improved (this is not 
a request for you to send another patch).

Cheers,

-- 
Julien Grall


From xen-devel-bounces@lists.xenproject.org Thu Jan 18 09:22:47 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 18 Jan 2024 09:22:47 +0000
Received: from list by lists.xenproject.org with outflank-mailman.668653.1041000 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQObm-0007ey-Fd; Thu, 18 Jan 2024 09:22:46 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 668653.1041000; Thu, 18 Jan 2024 09:22:46 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQObm-0007er-CJ; Thu, 18 Jan 2024 09:22:46 +0000
Received: by outflank-mailman (input) for mailman id 668653;
 Thu, 18 Jan 2024 09:22:45 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>) id 1rQObl-0007eg-5r
 for xen-devel@lists.xenproject.org; Thu, 18 Jan 2024 09:22:45 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rQObk-0001Ac-Nz; Thu, 18 Jan 2024 09:22:44 +0000
Received: from gw1.octic.net ([88.97.20.152] helo=[10.0.1.240])
 by xenbits.xenproject.org with esmtpsa
 (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rQObk-0006Vb-GY; Thu, 18 Jan 2024 09:22:44 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
	s=20200302mail; h=Content-Transfer-Encoding:Content-Type:In-Reply-To:From:
	References:Cc:To:Subject:MIME-Version:Date:Message-ID;
	bh=9O59O8rlJG5UDUVfAWUvXXBN6TRsXQMGYCiCUJtBND0=; b=aRmXHBdWYF4asn8CRK8YFeNlVo
	bFsnGAjh3xH3tBFWDK66lk4sOanVeoJZn8VTBCz6+3Xd0xIbyGZU8mRghOOCLEZpxhzg6ZWQJFi42
	XzboeXHCNC7UKaepskLn9DoEOXfCDbHtsRwqCEVxebPLR8efKp9DvRwij46qG09Kub1c=;
Message-ID: <1a49b6e0-c399-4d34-bedf-92c14261a141@xen.org>
Date: Thu, 18 Jan 2024 09:22:43 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v1 repost 2/4] arm/smpboot: Move smp_up_cpu to a new
 section .data.idmap
Content-Language: en-GB
To: Michal Orzel <michal.orzel@amd.com>, xen-devel@lists.xenproject.org
Cc: carlo.nonato@minervasys.tech, Julien Grall <jgrall@amazon.com>,
 Stefano Stabellini <sstabellini@kernel.org>,
 Bertrand Marquis <bertrand.marquis@arm.com>,
 Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>
References: <20240116143709.86584-1-julien@xen.org>
 <20240116143709.86584-3-julien@xen.org>
 <c603bf7d-e38c-4ee9-87a6-cd3c75c59fad@amd.com>
From: Julien Grall <julien@xen.org>
In-Reply-To: <c603bf7d-e38c-4ee9-87a6-cd3c75c59fad@amd.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit



On 17/01/2024 08:44, Michal Orzel wrote:
> Hi Julien,

Hi Michal,

> 
> On 16/01/2024 15:37, Julien Grall wrote:
>>
>>
>> From: Julien Grall <jgrall@amazon.com>
>>
>> With the upcoming work to color Xen, the binary will not be anymore
>> physically contiguous. This will be a problem during boot as the
>> assembly code will need to work out where each piece of Xen reside.
>>
>> An easy way to solve the issue is to have all code/data accessed
>> by the secondary CPUs while the MMU is off within a single page.
>>
>> Right now, smp_up_cpu is used by secondary CPUs to wait there turn for
> s/there/their ?

Yes. I will fix it on commit.

> 
>> booting before the MMU is on. Yet it is currently in .data which is
>> unlikely to be within the same page as the rest of the idmap.
>>
>> Move smp_up_cpu to the recently create section .data.idmap. The idmap is
> s/create/created
> 
>> currently part of the text section and therefore will be mapped read-onl
> s/onl/only
> 
>> executable. This means that we need to temporarily remap
>> smp_up_cpu in order to update it.
>>
>> Introduce a new function set_smp_up_cpu() for this purpose so the code
>> is not duplicated between when opening and closing the gate.
>>
>> Signed-off-by: Julien Grall <jgrall@amazon.com>
> Reviewed-by: Michal Orzel <michal.orzel@amd.com>
> 
>> ---
>>   xen/arch/arm/smpboot.c | 36 +++++++++++++++++++++++++++++++-----
>>   1 file changed, 31 insertions(+), 5 deletions(-)
>>
>> diff --git a/xen/arch/arm/smpboot.c b/xen/arch/arm/smpboot.c
>> index 7110bc11fc05..8d508a1bb258 100644
>> --- a/xen/arch/arm/smpboot.c
>> +++ b/xen/arch/arm/smpboot.c
>> @@ -29,6 +29,10 @@
>>   #include <asm/psci.h>
>>   #include <asm/acpi.h>
>>
>> +/* Override macros from asm/page.h to make them work with mfn_t */
>> +#undef virt_to_mfn
>> +#define virt_to_mfn(va) _mfn(__virt_to_mfn(va))
>> +
>>   cpumask_t cpu_online_map;
>>   cpumask_t cpu_present_map;
>>   cpumask_t cpu_possible_map;
>> @@ -56,7 +60,7 @@ struct init_info init_data =
>>   };
>>
>>   /* Shared state for coordinating CPU bringup */
>> -unsigned long smp_up_cpu = MPIDR_INVALID;
>> +unsigned long __section(".data.idmap") smp_up_cpu = MPIDR_INVALID;
>>   /* Shared state for coordinating CPU teardown */
>>   static bool cpu_is_dead;
>>
>> @@ -429,6 +433,28 @@ void stop_cpu(void)
>>           wfi();
>>   }
>>
>> +static void set_smp_up_cpu(unsigned long mpidr)
>> +{
>> +    /*
>> +     * smp_up_cpu is part of the identity mapping which is read-only. So
>> +     * We need to re-map the region so it can be updated.
>> +     */
>> +    void *ptr = map_domain_page(virt_to_mfn(&smp_up_cpu));
>> +
>> +    ptr += PAGE_OFFSET(&smp_up_cpu);
>> +
>> +    *(unsigned long *)ptr = mpidr;
>> +
>> +    /*
>> +     * init_ttbr will be accessed with the MMU off, so ensure the update
> smp_up_cpu instead of init_ttbr

Doh. I just copied/pasted the code from init_ttbr. I will update it.

BTW, I thought about trying to consolidate the code between 
set_init_ttbr() and set_smp_up_cpu() but it didn't seem to be worth it.

Cheers,

-- 
Julien Grall


From xen-devel-bounces@lists.xenproject.org Thu Jan 18 09:23:46 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 18 Jan 2024 09:23:46 +0000
Received: from list by lists.xenproject.org with outflank-mailman.668658.1041010 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQOcj-0008GC-Qx; Thu, 18 Jan 2024 09:23:45 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 668658.1041010; Thu, 18 Jan 2024 09:23:45 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQOcj-0008G5-OL; Thu, 18 Jan 2024 09:23:45 +0000
Received: by outflank-mailman (input) for mailman id 668658;
 Thu, 18 Jan 2024 09:23:44 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>) id 1rQOci-0008Fu-MD
 for xen-devel@lists.xenproject.org; Thu, 18 Jan 2024 09:23:44 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rQOci-0001DT-9e; Thu, 18 Jan 2024 09:23:44 +0000
Received: from gw1.octic.net ([88.97.20.152] helo=[10.0.1.240])
 by xenbits.xenproject.org with esmtpsa
 (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rQOci-0006Vb-3t; Thu, 18 Jan 2024 09:23:44 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
	s=20200302mail; h=Content-Transfer-Encoding:Content-Type:In-Reply-To:From:
	References:Cc:To:Subject:MIME-Version:Date:Message-ID;
	bh=eECqgVN/n0Uf+9zk71LebvCf4ByImf8hScvBWK0/VZY=; b=Pc249tbfjQlfJow3q5t8/qFs1g
	CvFLztzlM+lU2hP5ybwqlrysYXOqKpspBiwfCMrVkhBO9gOiEsAG144pu6hIvsLpzPAGO1TrAgbve
	oboshTijq9enFVJOgpQP+/ueMvoHT39gyyFJp6KeTClgA/NYtT6PK8EcRrUkiOH6sUEo=;
Message-ID: <c3713641-7292-420a-8454-4945e68fded7@xen.org>
Date: Thu, 18 Jan 2024 09:23:43 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v1 repost 3/4] xen/arm64: head: Use PRINT_ID() for
 secondary CPU MMU-off boot code
Content-Language: en-GB
To: Michal Orzel <michal.orzel@amd.com>, xen-devel@lists.xenproject.org
Cc: carlo.nonato@minervasys.tech, Julien Grall <jgrall@amazon.com>,
 Stefano Stabellini <sstabellini@kernel.org>,
 Bertrand Marquis <bertrand.marquis@arm.com>,
 Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>
References: <20240116143709.86584-1-julien@xen.org>
 <20240116143709.86584-4-julien@xen.org>
 <25e9e83b-10c4-463b-8850-2ca57ac76376@amd.com>
From: Julien Grall <julien@xen.org>
In-Reply-To: <25e9e83b-10c4-463b-8850-2ca57ac76376@amd.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

Hi Michal,

On 17/01/2024 08:53, Michal Orzel wrote:
> 
> 
> On 16/01/2024 15:37, Julien Grall wrote:
>>
>>
>> From: Julien Grall <jgrall@amazon.com>
>>
>> With the upcoming work to color Xen, the binary will not be anymore
>> physically contiguous. This will be a problem during boot as the
>> assembly code will need to work out where each piece of Xen reside.
>>
>> An easy way to solve the issue is to have all code/data accessed
>> by the secondary CPUs while the MMU is off within a single page.
>>
>> Right now, most of the early printk messages are using PRINT() which
>> will add the message in .rodata. This is unlikely to be within the
>> same page as the rest of the idmap.
>>
>> So replace all the PRINT() that can be reachable by the secondary
>> CPU with MMU-off with PRINT_ID().
>>
>> Signed-off-by: Julien Grall <jgrall@amazon.com>
> Reviewed-by: Michal Orzel <michal.orzel@amd.com>
> 
> with some remarks below
> 
>> ---
>>   xen/arch/arm/arm64/head.S               | 14 +++++++-------
>>   xen/arch/arm/arm64/mmu/head.S           |  2 +-
>>   xen/arch/arm/include/asm/arm64/macros.h |  9 ++++++---
>>   3 files changed, 14 insertions(+), 11 deletions(-)
>>
>> diff --git a/xen/arch/arm/arm64/head.S b/xen/arch/arm/arm64/head.S
>> index cfc04c755400..fa8b00b6f1db 100644
>> --- a/xen/arch/arm/arm64/head.S
>> +++ b/xen/arch/arm/arm64/head.S
>> @@ -289,9 +289,9 @@ GLOBAL(init_secondary)
>>
>>   #ifdef CONFIG_EARLY_PRINTK
>>           ldr   x23, =CONFIG_EARLY_UART_BASE_ADDRESS /* x23 := UART base address */
>> -        PRINT("- CPU ")
>> +        PRINT_ID("- CPU ")
>>           print_reg x24
>> -        PRINT(" booting -\r\n")
>> +        PRINT_ID(" booting -\r\n")
>>   #endif
>>           bl    check_cpu_mode
>>           bl    cpu_init
>> @@ -314,10 +314,10 @@ ENDPROC(init_secondary)
>>    * Clobbers x0 - x5
>>    */
>>   check_cpu_mode:
>> -        PRINT("- Current EL ")
>> +        PRINT_ID("- Current EL ")
>>           mrs   x5, CurrentEL
>>           print_reg x5
>> -        PRINT(" -\r\n")
>> +        PRINT_ID(" -\r\n")
>>
>>           /* Are we in EL2 */
>>           cmp   x5, #PSR_MODE_EL2t
>> @@ -326,8 +326,8 @@ check_cpu_mode:
>>           ret
>>   1:
>>           /* OK, we're boned. */
>> -        PRINT("- Xen must be entered in NS EL2 mode -\r\n")
>> -        PRINT("- Please update the bootloader -\r\n")
>> +        PRINT_ID("- Xen must be entered in NS EL2 mode -\r\n")
>> +        PRINT_ID("- Please update the bootloader -\r\n")
>>           b fail
> What about the PRINT in fail?

It should be modified. I will update it on commit.

> 
>>   ENDPROC(check_cpu_mode)
>>
>> @@ -361,7 +361,7 @@ ENDPROC(zero_bss)
>>    * Clobbers x0 - x3
>>    */
>>   cpu_init:
>> -        PRINT("- Initialize CPU -\r\n")
>> +        PRINT_ID("- Initialize CPU -\r\n")
>>
>>           /* Set up memory attribute type tables */
>>           ldr   x0, =MAIRVAL
>> diff --git a/xen/arch/arm/arm64/mmu/head.S b/xen/arch/arm/arm64/mmu/head.S
>> index 92b62ae94ce5..fa40b696ddc8 100644
>> --- a/xen/arch/arm/arm64/mmu/head.S
>> +++ b/xen/arch/arm/arm64/mmu/head.S
>> @@ -276,7 +276,7 @@ ENDPROC(create_page_tables)
>>   enable_mmu:
>>           mov   x4, x0
>>           mov   x5, x1
>> -        PRINT("- Turning on paging -\r\n")
>> +        PRINT_ID("- Turning on paging -\r\n")
>>
>>           /*
>>            * The state of the TLBs is unknown before turning on the MMU.
>> diff --git a/xen/arch/arm/include/asm/arm64/macros.h b/xen/arch/arm/include/asm/arm64/macros.h
>> index 10e652041f57..6a0108f778a2 100644
>> --- a/xen/arch/arm/include/asm/arm64/macros.h
>> +++ b/xen/arch/arm/include/asm/arm64/macros.h
>> @@ -39,9 +39,12 @@
>>    * There are multiple flavors:
>>    *  - PRINT_SECT(section, string): The @string will be located in @section
>>    *  - PRINT(): The string will be located in .rodata.str.
>> - *  - PRINT_ID(): When Xen is running on the Identity Mapping, it is
>> - *    only possible to have a limited amount of Xen. This will create
>> - *    the string in .rodata.idmap which will always be mapped.
>> + *  - PRINT_ID(): This will create the string in .rodata.idmap which
>> + *    will always be accessible. This is used when:
>> + *      - Xen is running on the identity mapping because not all of Xen is mapped
>> + *      - Running with the MMU-off on secondary boots as Xen may not be
> s/boots/CPUs

I will fix it.

> 
>> + *        physically contiguous in memory (e.g. in the case of cache
>> + *        coloring).
>>    *
>>    * Clobbers x0 - x3
>>    */
>> --
>> 2.40.1
>>
> 
> ~Michal

Cheers,

-- 
Julien Grall


From xen-devel-bounces@lists.xenproject.org Thu Jan 18 09:26:03 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 18 Jan 2024 09:26:03 +0000
Received: from list by lists.xenproject.org with outflank-mailman.668661.1041020 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQOev-0000Pr-6m; Thu, 18 Jan 2024 09:26:01 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 668661.1041020; Thu, 18 Jan 2024 09:26:01 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQOev-0000Pk-3q; Thu, 18 Jan 2024 09:26:01 +0000
Received: by outflank-mailman (input) for mailman id 668661;
 Thu, 18 Jan 2024 09:26:00 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>) id 1rQOeu-0000Pe-IP
 for xen-devel@lists.xenproject.org; Thu, 18 Jan 2024 09:26:00 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rQOeu-0001FV-25; Thu, 18 Jan 2024 09:26:00 +0000
Received: from gw1.octic.net ([88.97.20.152] helo=[10.0.1.240])
 by xenbits.xenproject.org with esmtpsa
 (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rQOet-0006mE-Qg; Thu, 18 Jan 2024 09:26:00 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
	s=20200302mail; h=Content-Transfer-Encoding:Content-Type:In-Reply-To:From:
	References:Cc:To:Subject:MIME-Version:Date:Message-ID;
	bh=7jRhZL+nFGQRQhiYbzcIn7cFTmT6aPDUKwaaT/CK0pQ=; b=PvdhXvgd3nuJaMc3r42/KX+H0y
	7TZ6wa8ANVNxeFF0MZMv0VRTI2hxFJDVsmG8T733uZ4ZayTVYFK6qomfjhN/5Lshl6ayhnc/QwVvP
	dg36NQ7S8tdNA1n78lcAD1n0VZElcBA75vNMSiaehIm3z7CuH6YfhZPZ0tMlgRKP0GuU=;
Message-ID: <7f831d0e-ca74-4992-9e40-dfbf556ec1c1@xen.org>
Date: Thu, 18 Jan 2024 09:25:57 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v1 repost 4/4] [DO NOT COMMIT] xen/arm: Create a
 trampoline for secondary boot CPUs
Content-Language: en-GB
To: Carlo Nonato <carlo.nonato@minervasys.tech>
Cc: xen-devel@lists.xenproject.org, Julien Grall <jgrall@amazon.com>,
 Stefano Stabellini <sstabellini@kernel.org>,
 Bertrand Marquis <bertrand.marquis@arm.com>,
 Michal Orzel <michal.orzel@amd.com>,
 Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>
References: <20240116143709.86584-1-julien@xen.org>
 <20240116143709.86584-5-julien@xen.org>
 <CAG+AhRUox+jMhUnbGo6tngxji8nOcncm+Nx_76UuhTKKPfae8g@mail.gmail.com>
From: Julien Grall <julien@xen.org>
In-Reply-To: <CAG+AhRUox+jMhUnbGo6tngxji8nOcncm+Nx_76UuhTKKPfae8g@mail.gmail.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit



On 17/01/2024 17:38, Carlo Nonato wrote:
> Hi Julien

Hi Carlo,

> On Tue, Jan 16, 2024 at 3:37 PM Julien Grall <julien@xen.org> wrote:
>>
>> From: Julien Grall <jgrall@amazon.com>
>>
>> In order to confirm the early boot code is self-contained, allocate a
>> separate trampoline region for secondary to boot from it.


[...]

>> @@ -304,6 +307,16 @@ smp_prepare_cpus(void)
>>       if ( rc )
>>           panic("Unable to allocate CPU sibling/core maps\n");
>>
>> +    /* Create a trampoline to confirm early boot code is self-contained */
>> +    trampoline = alloc_xenheap_page();
>> +    BUG_ON(!trampoline);
>> +
>> +    memcpy(trampoline, _start, PAGE_SIZE);
>> +    clean_dcache_va_range(trampoline, PAGE_SIZE);
>> +    invalidate_icache();
>> +
>> +    printk("Trampoline 0x%lx\n", virt_to_maddr(trampoline));
> 
> Here PRIx64 is needed for arm32.

Just for clarification, none of this patch is meant to work on Arm32. In 
fact, this would break secondary CPUs bring up.

This is why I tagged with DO NOT COMMIT. It was only included to show I 
tested this code on arm32.

Cheers,

-- 
Julien Grall


From xen-devel-bounces@lists.xenproject.org Thu Jan 18 09:29:13 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 18 Jan 2024 09:29:13 +0000
Received: from list by lists.xenproject.org with outflank-mailman.668664.1041029 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQOhx-00020a-JH; Thu, 18 Jan 2024 09:29:09 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 668664.1041029; Thu, 18 Jan 2024 09:29:09 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQOhx-00020T-Gh; Thu, 18 Jan 2024 09:29:09 +0000
Received: by outflank-mailman (input) for mailman id 668664;
 Thu, 18 Jan 2024 09:29:08 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>) id 1rQOhw-00020N-1q
 for xen-devel@lists.xenproject.org; Thu, 18 Jan 2024 09:29:08 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rQOhv-0001K6-DU; Thu, 18 Jan 2024 09:29:07 +0000
Received: from gw1.octic.net ([88.97.20.152] helo=[10.0.1.240])
 by xenbits.xenproject.org with esmtpsa
 (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rQOhv-0006q8-7j; Thu, 18 Jan 2024 09:29:07 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
	s=20200302mail; h=Content-Transfer-Encoding:Content-Type:In-Reply-To:From:
	References:Cc:To:Subject:MIME-Version:Date:Message-ID;
	bh=nXXfGlfj7oqC4R87039N8AgS6/vwZJqFfCM9wG0obn4=; b=vADbWllGiqUwhk2Vr3YBnU8JDn
	IUqDTJk/AfoOPFcEDtvXtg4MSaes5a7NDGJCy+If+Icm/1LPy7HDs/B65CDMLo4Duip+T/Ip0MCOB
	EO4yWskzyEPVXvje5aaxO7rY/BsC6UuEKZJU9jCfQhk0k91GxYzgc2cm6XtS19jKFgu0=;
Message-ID: <275ea736-faff-4a6c-8388-1503cf0b8df9@xen.org>
Date: Thu, 18 Jan 2024 09:29:05 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v5 13/13] xen/arm: add cache coloring support for Xen
Content-Language: en-GB
To: Carlo Nonato <carlo.nonato@minervasys.tech>
Cc: xen-devel@lists.xenproject.org,
 Stefano Stabellini <sstabellini@kernel.org>,
 Bertrand Marquis <bertrand.marquis@arm.com>,
 Michal Orzel <michal.orzel@amd.com>,
 Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
 Marco Solieri <marco.solieri@minervasys.tech>
References: <20240102095138.17933-1-carlo.nonato@minervasys.tech>
 <20240102095138.17933-14-carlo.nonato@minervasys.tech>
 <4553cc26-deb5-42ed-87b9-6cba2a5099eb@xen.org>
 <CAG+AhRXHfGJksqUrPXoHqNze+D654jJV0kVYBZaPLYwccdEz5Q@mail.gmail.com>
 <aa064f8f-d30e-4ac1-9239-daba5a806794@xen.org>
 <CAG+AhRXUPvKGu-y9qbVmhc0_ThCdxFvG=BYwCQMBH=mjo45qHw@mail.gmail.com>
 <985e1a2a-45eb-496c-8043-5f0c3c9f7766@xen.org>
 <CAG+AhRVKbM-n8ieg-CMbRG-4RgUXMSZL=ZER8EAWvGJgpEzUwA@mail.gmail.com>
 <ca2a64f8-ac0d-4b61-8f48-34478371bcbc@xen.org>
 <5b017673-3b51-4da2-86dd-ab1a62fbc1be@xen.org>
 <CAG+AhRVQrB4DZLuRPBvEnn7kr3r0k=hp3bn2a_k-Aqi6GhOQhQ@mail.gmail.com>
From: Julien Grall <julien@xen.org>
In-Reply-To: <CAG+AhRVQrB4DZLuRPBvEnn7kr3r0k=hp3bn2a_k-Aqi6GhOQhQ@mail.gmail.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit

Hi Carlo,

On 17/01/2024 17:38, Carlo Nonato wrote:
> On Tue, Jan 16, 2024 at 12:59 PM Julien Grall <julien@xen.org> wrote:
>>
>> Hi,
>>
>> On 15/01/2024 16:16, Julien Grall wrote:
>>> On 15/01/2024 15:43, Carlo Nonato wrote:
>>>> Hi Julien,
>>>
>>> Hi Carlo,
>>>
>>>> On Mon, Jan 15, 2024 at 12:18 PM Julien Grall <julien@xen.org> wrote:
>>>>> On 15/01/2024 10:11, Carlo Nonato wrote:
>>>>>> I understand what you're talking about, and it seems reasonable to
>>>>>> get rid of
>>>>>> xen_colored_temp[] and create_llc_coloring_mappings() since in the
>>>>>> end they
>>>>>> serve the purpose of mapping the physically colored space that is
>>>>>> already
>>>>>> mapped using xen_xenmap[] pagetables.
>>>>>> What I don't understand is then how to copy/relocate Xen since I
>>>>>> don't have a
>>>>>> destination virtual space anymore to use in relocate_xen().
>>>>>
>>>>> You will need to link xen_xenmap[] in boot_second[...] as well. With
>>>>> that, you will be able to access the new Xen through the temporary area.
>>>>
>>>> Wouldn't it result in overwriting the current virtual space mapping?
>>>> boot_second is the live page table and if I link xen_xenmap[] then
>>>> XEN_VIRT_START would point to the new colored space which is still
>>>> empty at
>>>> this stage...
>>>
>>> If you link at XEN_VIRT_START then yes. But you could link at
>>> BOOT_RELOC_VIRT_START like you already do today.
>>>
>>>>
>>>>> [...]
>>>>>
>>>>>>> Note that this means the init_ttbr cannot be written directly. But you
>>>>>>> can solve this problem by re-mapping the address.
>>>>>>
>>>>>> How to remap a single address?
>>>>>
>>>>> You should be able to use map_domain_page() to map the page where
>>>>> init_ttbr is.
>>>>>
>>>>>> And if moving init_ttbr in the identity-mapped area means that it's
>>>>>> no longer
>>>>>> writable, so that I need to remap it, why moving it in that area in
>>>>>> the first
>>>>>> place. Again I think I'm missing something.
>>>>>
>>>>> The goal is to have everything used (code, data) before the MMU is
>>>>> turned on residing in a single page. So secondary CPUs can directly jump
>>>>> to the colored Xen without any trouble.
>>>>
>>>> This is what confuses me. Why having everything on a single page makes
>>>> secondary cpus able to jump directly to colored Xen? (also see below)
>>>
>>> Because the code running with the MMU off can access easily access
>>> everything.
>>>
>>>>
>>>>>>>>
>>>>>>>> 3) To access the identity mapping area I would need some accessor
>>>>>>>> that takes
>>>>>>>> an address and returns it + phys_offset, or is there a better way
>>>>>>>> to do it?
>>>>>>>
>>>>>>> I am not sure I understand what you mean. Can you clarify?
>>>>>>
>>>>>> In my idea, I would use the identity mapping to access the "old"
>>>>>> variables,
>>>>>> where "old" means non physically colored. init_ttbr is an example. When
>>>>>> Xen it's copied on the new physical space, init_ttbr is copied with
>>>>>> it and
>>>>>> if the boot cpu modifies this variable, it's actually touching the
>>>>>> colored
>>>>>> one and not the old one. This means that secondary CPUs that still
>>>>>> haven't
>>>>>> jumped to the new space, won't be able to see the new value and will
>>>>>> never
>>>>>> go online.
>>>>>> So to access this "old" init_ttbr variable I need it's identity
>>>>>> address,
>>>>>> which is its current virtual address + some physical offset. I was
>>>>>> asking
>>>>>> you if this is the right approach to use the identity mapping.
>>>>>
>>>>> Secondary CPUs would directly start on the colored Xen. So they will be
>>>>> able to access the "new" init_ttbr & co.
>>>>
>>>> How can this be true? I mean, in call_psci_cpu_on() I can start those
>>>> CPUs in
>>>> the colored space, but they still use the boot_* pagetables
>>>
>>> Are you looking at the 64-bit or 32-bit code? For 64-bit, staging is not
>>> using boot_* pagetable anymore for secondary CPUs. Instead, they
>>> directly jump to the runtime page-tables.
>>>
>>>> and there I can't
>>>> easily link the new colored space, or, at least, I'm not succeding in
>>>> doing
>>>> that. What I tried at the moment is to link xen_xenmap in boot_second
>>>> after
>>>> switch_ttbr because of the problem I described above. But then secondary
>>>> CPUs never go online...
>>>
>>> It would be helpful if you share some code.
>>>
>>>>
>>>>> [...]
>>>>>
>>>>>>> ... as I wrote ealier your current approach seems to have a flaw.
>>>>>>> As you
>>>>>>> overwrite xen_bootmodule->{start, size}. setup_mm() will end up to add
>>>>>>> the old Xen region to the boot allocator. This is before any secondary
>>>>>>> CPUs are booted up.
>>>>>>>
>>>>>>> IOW, the allocator may provide some memory from the old Xen and
>>>>>>> nothing
>>>>>>> good will happen from that.
>>>>>>>
>>>>>>> The only way to solve it is to add another module. So the memory is
>>>>>>> skipped by setup_mm(). However see below.
>>>>>>>
>>>>>>>>
>>>>>>>> Yes that should be memory that in the end would not be needed so
>>>>>>>> it must
>>>>>>>> return to the boot-allocator (if that's what you mean). But how to do
>>>>>>>> that?
>>>>>>>
>>>>>>> You can't really discard the old temporary Xen. This may work today
>>>>>>> because we don't support CPU hotplug or suspend/resume. But there was
>>>>>>> some series on the ML to enable it and I don't see any reason why
>>>>>>> someone would not want to use the features with cache coloring.
>>>>>>>
>>>>>>> So the old temporary Xen would have to be kept around forever. This is
>>>>>>> up to 8MB of memory wasted.
>>>>>>>
>>>>>>> The right approach is to have the secondary CPU boot code
>>>>>>> (including the
>>>>>>> variables it is using) fitting in the same page (or possibly
>>>>>>> multiple so
>>>>>>> long this is small and physically contiguous). With that it doesn't
>>>>>>> matter where is the trampoline, it could stay at the old place, but we
>>>>>>> would only waste a few pages rather than up 8MB as it is today.
>>>>>>
>>>>>> So what are you suggesting is to create a new section in the linker
>>>>>> script
>>>>>> for the trampoline code and data,
>>>>>
>>>>> We already have a section for that in place (see .idmap.*) which happens
>>>>> to be at the beginning of Xen. Right now, the section is in text. Which
>>>>> is why it is read-only executable.
>>>>>
>>>>>> then in setup_mm() we would skip this
>>>>>> memory?
>>>>>
>>>>> We should not need this. Secondary boot CPUs should boot direclty on the
>>>>> colored Xen.
>>>>>
>>>>>> Am I following you correctly? Sorry those topics are a little out
>>>>>> of my preparation as you probably already guessed.
>>>>>
>>>>> No worries. I am happy to go in as much details as necessary. I can also
>>>>> attempt to write a patch if that helps. (unless someone else in the Arm
>>>>> maintainers want to give a try).
>>>>
>>>> Yes this would help. Thanks.
>>>
>>> I will try to have a look this evening. If I can't, it may have to wait
>>> a couple of weeks unless someone has time before hand.
>>
>> Series sent [1]. This is not fully complete for cache coloring. You will
>> need to modify the identity functions to take into account that the
>> identity map will be different.
>>
>> You will also want to check the new identity map area is still below
>> (see the check in prepare_boot_identity_mapping()).
>>
>> Cheers,
>>
>> [1] https://lore.kernel.org/xen-devel/20240116115509.77545-1-julien@xen.org/
> 
> Thank you very much for your help. I succeeded in applying your patches and
> reworking setup_pagetables() as we discussed previously. I dropped
> xen_colored_temp[], the temporary mapping at the end of setup_pagetables()
> and remove_llc_coloring_mappings().
> 
> Now, what to do with your patches? Will you push those before this series?

Michal reviewed the patches. I still want to give an opportunity for the 
other Arm maintainers to reply, so I plan to commit the patches early 
next week. You can then rebase your code on top.

If your v6 is ready earlier, you could apply the first 3 patches of the 
series (patch #4 is just for testing) and send your work. If you plan to 
do that, then please mention it in the cover letter (better if you can 
even provide a branch with everything applied).

Cheers,

-- 
Julien Grall


From xen-devel-bounces@lists.xenproject.org Thu Jan 18 09:43:58 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 18 Jan 2024 09:43:58 +0000
Received: from list by lists.xenproject.org with outflank-mailman.668672.1041041 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQOwC-0005XN-SV; Thu, 18 Jan 2024 09:43:52 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 668672.1041041; Thu, 18 Jan 2024 09:43:52 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQOwC-0005XG-Nk; Thu, 18 Jan 2024 09:43:52 +0000
Received: by outflank-mailman (input) for mailman id 668672;
 Thu, 18 Jan 2024 09:43:51 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=sFDf=I4=gmail.com=oleksii.kurochko@srs-se1.protection.inumbo.net>)
 id 1rQOwB-0005XA-DX
 for xen-devel@lists.xenproject.org; Thu, 18 Jan 2024 09:43:51 +0000
Received: from mail-lj1-x235.google.com (mail-lj1-x235.google.com
 [2a00:1450:4864:20::235])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 14d52879-b5e6-11ee-9b0f-b553b5be7939;
 Thu, 18 Jan 2024 10:43:49 +0100 (CET)
Received: by mail-lj1-x235.google.com with SMTP id
 38308e7fff4ca-2cd2f472665so127782791fa.2
 for <xen-devel@lists.xenproject.org>; Thu, 18 Jan 2024 01:43:49 -0800 (PST)
Received: from [192.168.206.239] ([94.75.70.14])
 by smtp.gmail.com with ESMTPSA id
 s17-20020a2eb8d1000000b002cccbb7ca38sm2162963ljp.2.2024.01.18.01.43.46
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 18 Jan 2024 01:43:48 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 14d52879-b5e6-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1705571029; x=1706175829; darn=lists.xenproject.org;
        h=mime-version:user-agent:content-transfer-encoding:references
         :in-reply-to:date:cc:to:from:subject:message-id:from:to:cc:subject
         :date:message-id:reply-to;
        bh=5k74dhetbsOQhnnb8hZ++JwGAouX+7xHDEJphkDkr5I=;
        b=TpKIqtfQvACZknGHWY0LlM5jtjCnO4QCx434Z9u8zvkVwvQ5TyVjsPL/qy+16N32pO
         ruDrBBn3Z16ol6yjPtERp3jak4dt8s+Q5qavaL82cSFCssaKJow97KVKbMgUuGGYquBX
         ulQQtS8BXURYDhFUwG5iy8ZpWKdmfUUsSHTs4eoj2JsnTaaZ/Wjah/G1MCts5j5izzO1
         uqCkHc9lkwV/x3Pcr3stHBRH0XXBY7UO8G9xMC+QRVtAt5qIH78gguo9GM2PM3V/Ss25
         sEqPvxDL7MoflSnfJd3tHHed1fpyRFctmuf6gmasbRvi3yn59gIC7jU559Ti6SJyuuQ0
         e5BA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705571029; x=1706175829;
        h=mime-version:user-agent:content-transfer-encoding:references
         :in-reply-to:date:cc:to:from:subject:message-id:x-gm-message-state
         :from:to:cc:subject:date:message-id:reply-to;
        bh=5k74dhetbsOQhnnb8hZ++JwGAouX+7xHDEJphkDkr5I=;
        b=bK/wwnJMiJDh0/aAY+xlYzjjBjVgPANR7SQh895HFJIlnNj80jpQSGpXYdqVU1zghI
         X2gcMod6CAMYl7jUKoRQlwAeHfKlBeoMG0pSDh780VlGxkmdHS3i6hBto8N6EPsst9/b
         euQmGOaJY6drGXX87PPmWA9HNxkiin1BaL554pWEDv+GQbxlZZVjRSc1DgYjFciscQ1M
         4mAULgCXSRhS1PG0g4to6EaBhXTsQOWCh/+BxA3ouTwltSfoxnPbZ/MUSF8Eoh3Gj6Wt
         nq20bgLZBBUAlOjQYWC0MUdy40QGo2fxxAn//Cc0yQnYd/sUcXRBvfYhr9uSQk5IlOWl
         gWEA==
X-Gm-Message-State: AOJu0YxnfIpPuo0VcihxbJKOxZqhw3lZhIlsJ6wMk/7hXf2CWMSAS+iS
	0zlXqaIa4fM3N6g9H+pkR8sUMJ7lU8evVwzxJQC7+HT0g0lAIvTp
X-Google-Smtp-Source: AGHT+IHlBe5oP/7QjfhotJHoTd71T2jdki+jHkWaNzLxpdFYnn7z30wmcTk6Pke5OejKlHkcG1+ZIA==
X-Received: by 2002:a2e:7e0d:0:b0:2cd:2329:24b3 with SMTP id z13-20020a2e7e0d000000b002cd232924b3mr297516ljc.64.1705571028445;
        Thu, 18 Jan 2024 01:43:48 -0800 (PST)
Message-ID: <1c0eb1cdef1fac7695c4fc416128e2bb81cf13aa.camel@gmail.com>
Subject: Re: [PATCH v3 10/34] xen/riscv: introduce bitops.h
From: Oleksii <oleksii.kurochko@gmail.com>
To: Jan Beulich <jbeulich@suse.com>
Cc: Alistair Francis <alistair.francis@wdc.com>, Bob Eshleman
 <bobbyeshleman@gmail.com>, Connor Davis <connojdavis@gmail.com>, Andrew
 Cooper <andrew.cooper3@citrix.com>, George Dunlap
 <george.dunlap@citrix.com>,  Julien Grall <julien@xen.org>, Stefano
 Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>, 
 xen-devel@lists.xenproject.org
Date: Thu, 18 Jan 2024 11:43:40 +0200
In-Reply-To: <23955665-8bd8-4872-a1a5-e3a3711c9512@suse.com>
References: <cover.1703255175.git.oleksii.kurochko@gmail.com>
	 <841d59c3950970f4937da200cf8f04aa39132e14.1703255175.git.oleksii.kurochko@gmail.com>
	 <23f1212a-66a8-47b0-904b-08b2ab54c72b@suse.com>
	 <17d9fe474e244a15aa5955e630d553a62b0080fd.camel@gmail.com>
	 <88df7ccd-8d14-4b00-900d-04cc87d9f230@suse.com>
	 <863b09f03d37e96d737ab6bda4cc8923f75550fd.camel@gmail.com>
	 <2e10b170-5a75-4ae0-8d2f-c6c1ad9951a5@suse.com>
	 <1b20fefd125598e2bb62d516495783650da75271.camel@gmail.com>
	 <23955665-8bd8-4872-a1a5-e3a3711c9512@suse.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
User-Agent: Evolution 3.50.2 (3.50.2-1.fc39) 
MIME-Version: 1.0

On Wed, 2024-01-17 at 14:42 +0100, Jan Beulich wrote:
> On 17.01.2024 12:37, Oleksii wrote:
> > > > >=20
> > > > > > > Also you want to make sure asm-generic/bitops/bitops-
> > > > > > > bits.h
> > > > > > > is
> > > > > > > really in use here, or else an arch overriding / not
> > > > > > > using
> > > > > > > that
> > > > > > > header may end up screwed.
> > > > > > I am not really understand what do you mean. Could you
> > > > > > please
> > > > > > explain a
> > > > > > little bit more.
> > > > >=20
> > > > > Whichever type you use here, it needs to be in sync with
> > > > > BITOP_BITS_PER_WORD. Hence you want to include the _local_
> > > > > bitops-
> > > > > bits.h
> > > > > here, such that in case of an inconsistent override by an
> > > > > arch
> > > > > the
> > > > > compiler would complain about the two differring #define-s.
> > > > > (IOW
> > > > > an
> > > > > arch overriding BITOP_BITS_PER_WORD cannot re-use this header
> > > > > as-
> > > > > is.)
> > > > >=20
> > > > > The same may, btw, be true for others of the new headers you
> > > > > add
> > > > > -
> > > > > the
> > > > > same #include would therefore be needed there as well.
> > > > Now it clear to me.
> > > >=20
> > > >=20
> > > > It seems like BITOP_BITS_PER_WORD, BITOP_MASK, BITOP_WORD, and
> > > > BITS_PER_BYTE are defined in {arm, ppc,
> > > > riscv}/include/asm/bitops.h.
> > > > I expected that any architecture planning to use asm-
> > > > generic/bitops/bitops-bits.h would include it at the beginning
> > > > of
> > > > <arch>/include/asm/bitops.h, similar to what is done for RISC-
> > > > V:
> > > > =C2=A0=C2=A0 #ifndef _ASM_RISCV_BITOPS_H
> > > > =C2=A0=C2=A0 #define _ASM_RISCV_BITOPS_H
> > > > =C2=A0=C2=A0=20
> > > > =C2=A0=C2=A0 #include <asm/system.h>
> > > > =C2=A0=C2=A0=20
> > > > =C2=A0=C2=A0 #include <asm-generic/bitops/bitops-bits.h>
> > > > =C2=A0=C2=A0 ...
> > > >=20
> > > > But in this case, to allow architecture overrides macros, it is
> > > > necessary to update asm-generic/bitops/bitops-bits.h:
> > > > =C2=A0=C2=A0=C2=A0 #ifndef BITOP_BITS_PER_WORD
> > > > =C2=A0=C2=A0=C2=A0 #define BITOP_BITS_PER_WORD=C2=A0=C2=A0=C2=A0=C2=
=A0 32
> > > > =C2=A0=C2=A0=C2=A0 #endif
> > > > =C2=A0=C2=A0 ...
> > > > Therefore,=C2=A0 if an architecture needs to override something, it
> > > > will
> > > > add
> > > > #define ... before #include <asm-generic/bitops/bitops-bits.h>.
> > > >=20
> > > > Does it make sense?
> > >=20
> > > Sure. But then the arch also needs to provide a corresponding
> > > typedef
> > > (and bitops-bits.h the fallback one), for use wherever you use
> > > any of
> > > those #define-s.
> > Which one typedef is needed to provide?
> > <asm-generic/bitops/bitops-bits.h> contains only macros.
>=20
> A new one, to replace where right now you use "unsigned int" and I
> initially said you need to use "uint32_t" instead. With what you said
> earlier, uint32_t won't work there (anymore).
Wouldn't it be enough just to "#include <xen/types.h>" in headers where
"uint32_t" is used?

~ Olkesii



From xen-devel-bounces@lists.xenproject.org Thu Jan 18 09:46:33 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 18 Jan 2024 09:46:33 +0000
Received: from list by lists.xenproject.org with outflank-mailman.668675.1041050 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQOym-00064i-58; Thu, 18 Jan 2024 09:46:32 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 668675.1041050; Thu, 18 Jan 2024 09:46:32 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQOym-00064b-2S; Thu, 18 Jan 2024 09:46:32 +0000
Received: by outflank-mailman (input) for mailman id 668675;
 Thu, 18 Jan 2024 09:46:30 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=aSQR=I4=cloud.com=roger.pau@srs-se1.protection.inumbo.net>)
 id 1rQOyk-00064K-MJ
 for xen-devel@lists.xenproject.org; Thu, 18 Jan 2024 09:46:30 +0000
Received: from mail-wm1-x32c.google.com (mail-wm1-x32c.google.com
 [2a00:1450:4864:20::32c])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 73733ba8-b5e6-11ee-9b0f-b553b5be7939;
 Thu, 18 Jan 2024 10:46:28 +0100 (CET)
Received: by mail-wm1-x32c.google.com with SMTP id
 5b1f17b1804b1-40e884de7b9so22034965e9.0
 for <xen-devel@lists.xenproject.org>; Thu, 18 Jan 2024 01:46:28 -0800 (PST)
Received: from localhost ([213.195.127.68]) by smtp.gmail.com with ESMTPSA id
 h5-20020a05600c314500b0040d7c3d5454sm29140637wmo.3.2024.01.18.01.46.27
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 18 Jan 2024 01:46:27 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 73733ba8-b5e6-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1705571187; x=1706175987; darn=lists.xenproject.org;
        h=in-reply-to:content-transfer-encoding:content-disposition
         :mime-version:references:message-id:subject:cc:to:from:date:from:to
         :cc:subject:date:message-id:reply-to;
        bh=puXrBilTDxI72zyZpuBuK2Rq18fv0jBsHWewbnPjzm8=;
        b=UmJiiyMygesK0GqUUxexDD+r+czkU162Z2L4DawmAzQFkepQb244qnikRmD3K4tiks
         5vdYhP4ernmMnbVkS36FwESZdsx5v4twm2tzJVWZeSwt1LXuIQdRX2+eZHqePvAQINb9
         F6iu/5j/uTL5oMCMNwKJzOxavAwaaWlk0yaAU=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705571187; x=1706175987;
        h=in-reply-to:content-transfer-encoding:content-disposition
         :mime-version:references:message-id:subject:cc:to:from:date
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=puXrBilTDxI72zyZpuBuK2Rq18fv0jBsHWewbnPjzm8=;
        b=f3qd7TdkIeCD04MFhT5HCClIhpPRgc2ql/0TVkutUFhTqEtJ/TsfTzoon818XJVcQi
         SHFOg4NLplPXnpGl1vn23Cli0/WhfKeXT2LDfRG9Qmk2F3Q7fpBKBNfQRClFNeaZ7mkJ
         AGc4qjPz/QUpJxiaIGohmet52If1u+DQvpbDI1MX3CPpv0UjEWNLtZrzya3tknsMOoFd
         b0K1tafmxkfqkfh/a2Rcsvu1g4sGABwCLO5nG3DuOk/BHJiAkMrxNJv4oMNMz20ycsco
         QDve9o0L0ewcXXuIJSQjwCstgr5Rt0qt/BYGvzQgd5RIv6xflZCc+mPjLmm4vDSDu8hF
         YKDg==
X-Gm-Message-State: AOJu0Yw7nDEZtb5iqfJoZqpFFsEp01uwlGZ0ODjr9Kz2l+AyfbroF7sO
	fCVfzf42G6ueqLMG/YpE984l4ZorT69N04ilTFFueZm8ohU/8UFErmaba9jo8Ng=
X-Google-Smtp-Source: AGHT+IFB4LFK+fiGnFD6ThrA28W0ppTfvyF32ebfjTtE5jptnHJ2JDQX9ydtKBuItXC65BHdGsFLKw==
X-Received: by 2002:a05:600c:18a3:b0:40e:671e:5406 with SMTP id x35-20020a05600c18a300b0040e671e5406mr359355wmp.80.1705571187460;
        Thu, 18 Jan 2024 01:46:27 -0800 (PST)
Date: Thu, 18 Jan 2024 10:46:26 +0100
From: Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
To: Patrick Plenefisch <simonpatp@gmail.com>
Cc: Jan Beulich <jbeulich@suse.com>, xen-devel@lists.xenproject.org,
	Juergen Gross <jgross@suse.com>
Subject: Re: E820 memory allocation issue on Threadripper platforms
Message-ID: <ZajzcpArQYQhdj3T@macbook>
References: <CAOCpoWdOH=xGxiQSC1c5Ueb1THxAjH4WiZbCZq-QT+d_KAk3SA@mail.gmail.com>
 <1708c3d7-662a-44bc-b9b3-4ab9f8642d7b@suse.com>
 <dcaf9d8d-ad5a-4714-936b-79ed0e587f9d@suse.com>
 <CAOCpoWeowZPuQTeBp9nu8p8CDtE=u++wN_UqRoABZtB57D50Qw@mail.gmail.com>
 <ac742d12-ec91-4215-bb42-82a145924b4f@suse.com>
 <CAOCpoWfQmkhN3hms1xuotSUZzVzR99i9cNGGU2r=yD5PjysMiQ@mail.gmail.com>
 <fa23a590-5869-4e11-8998-1d03742c5919@suse.com>
 <CAOCpoWf4CMkCWx8uR2NbFrZrKSS78wj1-hFsAUqsjCfsmqooVA@mail.gmail.com>
 <Zajg1O7Z52VTBq31@macbook>
 <CAOCpoWeO9h7b_CjJb9jtKaEUVv_=XDSVkr55QSg3ArFc4n8G2w@mail.gmail.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <CAOCpoWeO9h7b_CjJb9jtKaEUVv_=XDSVkr55QSg3ArFc4n8G2w@mail.gmail.com>

On Thu, Jan 18, 2024 at 03:34:13AM -0500, Patrick Plenefisch wrote:
> On Thu, Jan 18, 2024 at 3:27 AM Roger Pau Monné <roger.pau@citrix.com>
> wrote:
> 
> > On Thu, Jan 18, 2024 at 01:23:56AM -0500, Patrick Plenefisch wrote:
> > > On Wed, Jan 17, 2024 at 3:46 AM Jan Beulich <jbeulich@suse.com> wrote:
> > >
> > > > On 17.01.2024 07:12, Patrick Plenefisch wrote:
> > > > > On Tue, Jan 16, 2024 at 4:33 AM Jan Beulich <jbeulich@suse.com>
> > wrote:
> > > > >
> > > > >> On 16.01.2024 01:22, Patrick Plenefisch wrote:
> > > For the two logs that actually boooted (linuxoffset), I truncated them
> > > during pcie initialization, but they did go all the way to give me a
> > login
> > > screen
> >
> > I'm not seeing any Linux output on the provided logs, they just seem
> > to contain Xen output ...
> >
> > > >
> > > > > As someone who hasn't built a kernel in over a decade, should I
> > figure
> > > > out
> > > > > how to do a kernel build with CONFIG_PHYSICAL_START=0x2000000 and
> > report
> > > > > back?
> > > >
> > > > That was largely a suggestion to perhaps allow you to gain some
> > > > workable setup. It would be of interest to us largely for completeness.
> > > >
> > >
> > > Typo aside, setting the boot to 2MiB works! It works better for PV, while
> > > PVH has some graphics card issues, namely that I have to interact over
> > > serial and dmesg has some concerning radeon errors
> >
> > ... and so the radeon error mentioned here seem to be missing.  IIRC
> > for radeon cards to work on PVH dom0 you will need an hypervisor with
> > the following commit:
> >
> >
> > https://xenbits.xen.org/gitweb/?p=xen.git;a=commit;h=f69c5991595c92756860d038346569464c1b9ea1
> >
> > (included in 4.18)
> >
> 
> hmm.. that would mean I was running with them as I used 4.18 for that run
> 
> 
> >
> > There where also some changes not long ago in order to propagate the
> > video console information from Xen into dom0, those are also included
> > in 4.18, but I don't recall in which Linux version they landed.
> >
> > Anyway, would be good if you can provide the full Xen + Linux logs
> > when the radeon issue happens.
> >
> 
> Luckily linux logs are mercifully short. Append this to
> xen-4.18p_grub_linuxoffset_pvh.log:
> 
> [    0.778770] i2c_designware AMDI0010:00: Unknown Synopsys component type:
> 0xffffffff
> [    0.914664] amd_gpio AMDI0030:00: error -EINVAL: IRQ index 0 not found
> [    0.930112] xen_mcelog: Failed to get CPU numbers
> [    8.324907] ccp 0000:06:00.5: pcim_iomap_regions failed (-16)
> [    8.338604] sp5100-tco sp5100-tco: Watchdog hardware is disabled
> [    8.909366] [drm:radeon_get_bios [radeon]] *ERROR* ACPI VFCT table
> present but broken (too short #2)

Hm, interesting.  I will have to add more debug in order to check
what's going on here, seems like the table is corrupted somehow.

Would you be able to build a new version of Xen if I provide you with
an extra debug patch?

Thanks, Roger.


From xen-devel-bounces@lists.xenproject.org Thu Jan 18 10:09:32 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 18 Jan 2024 10:09:32 +0000
Received: from list by lists.xenproject.org with outflank-mailman.668704.1041073 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQPKl-00045o-CD; Thu, 18 Jan 2024 10:09:15 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 668704.1041073; Thu, 18 Jan 2024 10:09:15 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQPKl-00045D-7d; Thu, 18 Jan 2024 10:09:15 +0000
Received: by outflank-mailman (input) for mailman id 668704;
 Thu, 18 Jan 2024 10:09:13 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=zNYg=I4=bounce.vates.tech=bounce-md_30504962.65a8f8c5.v1-fdd8f09f3bf04854a93c7196612d499d@srs-se1.protection.inumbo.net>)
 id 1rQPKj-00043Y-S0
 for xen-devel@lists.xenproject.org; Thu, 18 Jan 2024 10:09:13 +0000
Received: from mail134-4.atl141.mandrillapp.com
 (mail134-4.atl141.mandrillapp.com [198.2.134.4])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 9f50964d-b5e9-11ee-9b0f-b553b5be7939;
 Thu, 18 Jan 2024 11:09:10 +0100 (CET)
Received: from pmta10.mandrill.prod.atl01.rsglab.com (localhost [127.0.0.1])
 by mail134-4.atl141.mandrillapp.com (Mailchimp) with ESMTP id 4TFz453Tv7zlfh2m
 for <xen-devel@lists.xenproject.org>; Thu, 18 Jan 2024 10:09:09 +0000 (GMT)
Received: from [37.26.189.201] by mandrillapp.com id
 fdd8f09f3bf04854a93c7196612d499d; Thu, 18 Jan 2024 10:09:09 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 9f50964d-b5e9-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mandrillapp.com;
	s=mte1; t=1705572549; x=1705833049;
	bh=9DqOhX66T0rS9aDzA0D5OwFpLLziyvIN8XjJAxNL3lM=;
	h=From:Subject:Message-Id:To:References:Cc:In-Reply-To:Feedback-ID:
	 Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date:
	 Subject:From;
	b=srzx9lUq3LcXAUl2K3STq3EvnerNA7iYtV5qYUSF2IX5sdbkqcxCPDwQ+feVbBm9V
	 +Tx8++j7HyAcPr5uqYKihpy1OJjs0UeiDSwkJEuWqGruQvndYubaOgPQWUDMKPELPv
	 SWIe4Pa8UHZiGGws3j5u/7JHrmB3v6Nl2WESKVwfC2CdllD09OIlJTOgokhuICZKyb
	 wnHz8Zh+uoW6MbMM1YMk02YTjGEMxXO1zEPlyJIlElkWhwt49FsKUGyQtnpEa6bpMy
	 cAbDmzd8F/6p5FLmHmiqeFXU7dQtkreatLsW/0sN1G8pnpzJ6/Izmif33zkXcjRVKI
	 0vdqFzAhNjzMA==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech; s=mte1;
	t=1705572549; x=1705833049; i=yann.dirson@vates.tech;
	bh=9DqOhX66T0rS9aDzA0D5OwFpLLziyvIN8XjJAxNL3lM=;
	h=From:Subject:Message-Id:To:References:Cc:In-Reply-To:Feedback-ID:
	 Date:MIME-Version:Content-Type:Content-Transfer-Encoding:CC:Date:
	 Subject:From;
	b=yGfKtBx3fylFGiG7rufz9uQK4vzUglgzgfolxEokL6VvSIndaW58XbB208/R4i0+7
	 h2C/CfUawTHMPgjPy98p2MFd7WM0ST45ElcaF4a4cRXcX0Z1lp6kXHDHcHUZ5mknk0
	 csQ3oLK5lW6SDEERGm47Yc/QfblChSQx6Hy5ngpEITcgzhRizNdqVZYSQUHuzC1AuL
	 LmJZz9y9waiA2b5rKedbUCMBnpYVI8A1Gz2hZcT/ntM2E79oGIix18ORyAIsqcLOih
	 xtspto0UJZzWLjxNcCbADAYyhDBbpBSu4cX7kN5rsn4mEN2lya7uF1ppdFe3fztDFw
	 AjurZe8ZaSXEA==
From: Yann Dirson <yann.dirson@vates.tech>
Subject: =?utf-8?Q?Re:=20Community=20Process=20Group=20-=20Proposal?=
X-Bm-Disclaimer: Yes
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1705572548246
Message-Id: <509c9419-650a-4a7c-83e4-7a5204c53645@vates.tech>
To: xen-devel@lists.xenproject.org
References: <CAO-mL=yvVWjnOHSFSqcrknoXOqk-N3JY76qObQnzftrkmsq6xw@mail.gmail.com>
Cc: Kelly Choi <kelly.choi@cloud.com>, committers@xenproject.org, advisory-board@lists.xenproject.org
In-Reply-To: <CAO-mL=yvVWjnOHSFSqcrknoXOqk-N3JY76qObQnzftrkmsq6xw@mail.gmail.com>
X-Native-Encoded: 1
X-Report-Abuse: =?UTF-8?Q?Please=20forward=20a=20copy=20of=20this=20message,=20including=20all=20headers,=20to=20abuse@mandrill.com.=20You=20can=20also=20report=20abuse=20here:=20https://mandrillapp.com/contact/abuse=3Fid=3D30504962.fdd8f09f3bf04854a93c7196612d499d?=
X-Mandrill-User: md_30504962
Feedback-ID: 30504962:30504962.20240118:md
Date: Thu, 18 Jan 2024 10:09:09 +0000
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable

Hi all,

On 1/17/24 18:10, Kelly Choi wrote:
> Hi everyone,
> 
> I've spent a bit of time talking to various individuals and the advisory 
> board about setting up a new Community Process Group.
> 
> A survey was recently conducted to identify how the community as a whole 
> feels about a certain situation. It was not intended to ban specific 
> wording or create a policy to do so, but more to give context that the 
> community has a wide range of ideas, and individuals may agree and 
> disagree a lot more frequently than we as individuals might think. It 
> helps us understand that as a community there are many situations where 
> it is not clear. As such, the results indicated a very even split among 
> the community, which indicates a larger problem as we may not always 
> come to agreement.
> 
> There is obvious frustration with how certain matters are handled, as 
> some members may want the project to move faster, whereas others like to 
> take a cautious approach. Given we are an open source project, 
> differences in opinion are likely to happen and what we don=E2=80=99t wan=
t to do 
> is cause further frustration.
> 
> *This is where I would like to propose the idea of a =E2=80=98Community P=
rocess 
> Group=E2=80=99.*

That made me look for a list of official roles in the project, which I
found at [0].  How up-to-date is this list?  The Release Manager role is
mentioned there but not described, the Community Manager role is not
mentioned at all, and the only link to get project leadership info [1]
redirects to unrelated information.

[0] https://xenproject.org/developers/governance/#roles-local
[1] https://xenproject.org/developers/teams/hypervisor

I feel it would be necessary to have a clear view on the current
situation, before adding more structures.

> 
> A CPG=C2=A0can help as they will be able to advise members on similar iss=
ues 
> regarding community processes or appeals and decide on the best way 
> forward. To help with this process, I have consulted with various 
> individuals including some committers and conduct team members.
> *
> What is a CPG=E2=80=99s purpose?*
> In the first instance, we would expect an informal vote resolves most 
> disagreements. However, there will be certain circumstances where the 
> outcome is not always agreed on.
> 
> A CPG=C2=A0will be your second point of call, where you can escalate matt=
ers 
> quickly for a democratic solution.
> 
> Their purpose is to resolve process issues and informal vote appeals to 
> avoid matters going to a formal vote, but also act as a representative 
> on behalf of others in the community on future matters.
> 
> For example:
> 
>   * Naming conventions
>   * Whether feedback requesting changes on a patch series is acceptable
>   * How to move forward in case of non-actionable feedback to a patch ser=
ies
>   * How to move forward when a contributor or reviewer has not been
>     responsive
>   * Policy questions not related to the code of conduct
> 
> *What is their role and responsibility?*
> 
> The CPG=C2=A0has the authority to propose a resolution to situations wher=
e 
> there are disagreements, that don=E2=80=99t involve large technical decis=
ions. 
> Their decision proposed should be accepted as final since members will 
> have discussed the best steps and come to a consensus vote.
> 
> The CPG=C2=A0does not aim to replace the committers' authority or the 
> advisory board but instead holds the authority to make decisions that 
> are in the best interest of the community in relation to processes. 
> Committers still hold the power should there be a formal escalation 
> regarding technical decisions, but this would be extremely rare. 
> Advisory Board members hold the final power regarding project and 
> business-wide decisions.
> 
> *How are members selected?*
> The CPG=C2=A0will be composed of 5 randomly selected members in total.
> An odd number has been purposely selected to avoid an impasse during 
> decisions.

Do you have any specific idea of how "randomly selected" would work?
I mean, having a die rolled behind closed doors is not going to help
building trust.  Now there are rather-simple algorithms for Distributed
Dice Rolling, like [2], but there would be a few practical details to
make explicit.

[2] 
https://stackoverflow.com/questions/224058/distributed-random-number-genera=
tion

> 
> The criteria:
> Individual members must be active contributors and are willing to help 
> the community succeed. As such they must be a part of the following group=
s:
> 
>   * Committers
>   * Active Maintainers: maintainers with >=3D 20 reviews in the last 2
>     releases
>   * Active Contributors: contributors with >=3D 10 commits in the last 2
>     releases
> 
> Future rotations of CPG=C2=A0members:
> New members will be selected randomly for each new release to ensure 
> fairness.
> 
> *Expectations*
> CPG=C2=A0members are expected to use their best judgement of what is best=
 for 
> the community in terms of conflict resolution and process improvements. 
> They can propose an outcome that progresses the project forward.
> The CPG=C2=A0is also expected to address wider concerns, feedback, and id=
eas 
> during a monthly meeting with all community members.
> 
> For example:
> 
>   * If someone is displaying repeated concerning behaviour that disrupts
>     the community, members can ask the CPG=C2=A0for help on a solution. (=
This
>     is different from a code of conduct violation which would be for
>     serious offences only.)
>   * Help drive discussions on how much we deviate from technical
>     specifications
> 
> *Next steps*
> Given this suggestion is a big change in what I hope is a positive 
> direction, we will require your feedback and a final formal vote on the 
> process, before it is implemented into the governance policies. The 
> specific wording can be decided after this proposal.
> 
> This will hopefully help us overcome some of the frustrations and issues 
> we have seen in the community from a difference in opinion as a 
> collective discussion will now be made. Should we need to, the process 
> can be reviewed to improve at later stages.
> 
> I welcome your feedback as a community on this proposal.
> 
> Many thanks,
> Kelly Choi
> 
> Community Manager
> Xen Project


Yann Dirson | Vates Platform Developer

XCP-ng & Xen Orchestra - Vates solutions

web: https://vates.tech



From xen-devel-bounces@lists.xenproject.org Thu Jan 18 11:01:49 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 18 Jan 2024 11:01:49 +0000
Received: from list by lists.xenproject.org with outflank-mailman.668709.1041082 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQQ9X-0007m2-3Q; Thu, 18 Jan 2024 11:01:43 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 668709.1041082; Thu, 18 Jan 2024 11:01:43 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQQ9X-0007lv-0u; Thu, 18 Jan 2024 11:01:43 +0000
Received: by outflank-mailman (input) for mailman id 668709;
 Thu, 18 Jan 2024 11:01:41 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=2mYN=I4=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rQQ9V-0007lp-7V
 for xen-devel@lists.xenproject.org; Thu, 18 Jan 2024 11:01:41 +0000
Received: from mail-wm1-x334.google.com (mail-wm1-x334.google.com
 [2a00:1450:4864:20::334])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id f32c8f3d-b5f0-11ee-9b0f-b553b5be7939;
 Thu, 18 Jan 2024 12:01:38 +0100 (CET)
Received: by mail-wm1-x334.google.com with SMTP id
 5b1f17b1804b1-40e958cd226so1679475e9.2
 for <xen-devel@lists.xenproject.org>; Thu, 18 Jan 2024 03:01:37 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 r20-20020a05600c35d400b0040d8eca092esm29427703wmq.47.2024.01.18.03.01.36
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 18 Jan 2024 03:01:36 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: f32c8f3d-b5f0-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1705575697; x=1706180497; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=3aSOBUaPPqVrLGsojPFcIPswEoadIjsvclB90sACfsc=;
        b=EM39+TlQ7Uk4fWrcdxB4XmW0DMuivM4zSHdsES4bmUS5fcgMi4wlMl46T4b0Ca8MLE
         AaDJBfKxNGo8FAAeg1oUT7QvD9kYR5o0gHOTNiQvWRbF6y2QO+gGTwRmAHl0Shra2iF/
         fzhGbyDltBaIFIUX7FqxxpjXK58f36ZWW1Wn8upLpYGVn9Ry6WSPDrTp0zRIoQmdKh/8
         M490cR7Ef/keMRw4oH4tnRkbTBeUcPD9Qd0GXuG9WK8KYmkYDU45GGMteteYKEnP+Z6D
         mIrt4sDlNqS3gkbeYh4YsZcN1XljWRFwuuMhtD5rEURbdkAfNfUIFPHq0i9Ty4bI+rAn
         UCAA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705575697; x=1706180497;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=3aSOBUaPPqVrLGsojPFcIPswEoadIjsvclB90sACfsc=;
        b=dJtX0krNRQuQZ88Us8f8egFJHtwbzc5uA5D1ntRhBE0udfwUqDt8GcsiGHAxt3/Qy/
         d/rhTOOw9rrjihJZTq1i0PDLn1M8BOIPUu8PebZx77+Puo926L+ftqwH0dCPDWcyRmuN
         uosQpsvqb0mgWKynVVIfFihxnM0uDJtOJ+e7STGp0rAbCGBMqOjRs1Tw+yHqqszgiRtI
         OrcPJ0HS3Vno8VznFM3awrxD6OYSU9uy28y7LyGR5eDPJKi5QpqNGew88YoaMw92lMIR
         U7eskDQB4XylX2EarVoHyd/o/YxguTWLLZZl/3G20x5mqjiCOK7N68aUlmmX77JGWFPT
         nn+Q==
X-Gm-Message-State: AOJu0YxpjFGJaVLoI4qpsOdIFyPsFuZFVVdJQGjti/IUINEEHxV5Rr9U
	FozdTR3ujw12X15RNDTm6E+I/TuRfaIim/0TIkS/pZ20apPQbxRsyBbBm3al1Q==
X-Google-Smtp-Source: AGHT+IELjaaeX7ODtYVkFi9tHM5kaH+xHcKJO6WXCLno4sbcAOiEm1RCbETsuRjt6sF0QAqROYE3Rg==
X-Received: by 2002:a05:600c:2984:b0:40e:596a:985b with SMTP id r4-20020a05600c298400b0040e596a985bmr399591wmd.160.1705575696770;
        Thu, 18 Jan 2024 03:01:36 -0800 (PST)
Message-ID: <ac43d7a3-f662-4985-9aaf-4cad1c517f35@suse.com>
Date: Thu, 18 Jan 2024 12:01:35 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 10/34] xen/riscv: introduce bitops.h
Content-Language: en-US
To: Oleksii <oleksii.kurochko@gmail.com>
Cc: Alistair Francis <alistair.francis@wdc.com>,
 Bob Eshleman <bobbyeshleman@gmail.com>, Connor Davis
 <connojdavis@gmail.com>, Andrew Cooper <andrew.cooper3@citrix.com>,
 George Dunlap <george.dunlap@citrix.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>,
 xen-devel@lists.xenproject.org
References: <cover.1703255175.git.oleksii.kurochko@gmail.com>
 <841d59c3950970f4937da200cf8f04aa39132e14.1703255175.git.oleksii.kurochko@gmail.com>
 <23f1212a-66a8-47b0-904b-08b2ab54c72b@suse.com>
 <17d9fe474e244a15aa5955e630d553a62b0080fd.camel@gmail.com>
 <88df7ccd-8d14-4b00-900d-04cc87d9f230@suse.com>
 <863b09f03d37e96d737ab6bda4cc8923f75550fd.camel@gmail.com>
 <2e10b170-5a75-4ae0-8d2f-c6c1ad9951a5@suse.com>
 <1b20fefd125598e2bb62d516495783650da75271.camel@gmail.com>
 <23955665-8bd8-4872-a1a5-e3a3711c9512@suse.com>
 <1c0eb1cdef1fac7695c4fc416128e2bb81cf13aa.camel@gmail.com>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <1c0eb1cdef1fac7695c4fc416128e2bb81cf13aa.camel@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 18.01.2024 10:43, Oleksii wrote:
> On Wed, 2024-01-17 at 14:42 +0100, Jan Beulich wrote:
>> On 17.01.2024 12:37, Oleksii wrote:
>>>>>>
>>>>>>>> Also you want to make sure asm-generic/bitops/bitops-
>>>>>>>> bits.h
>>>>>>>> is
>>>>>>>> really in use here, or else an arch overriding / not
>>>>>>>> using
>>>>>>>> that
>>>>>>>> header may end up screwed.
>>>>>>> I am not really understand what do you mean. Could you
>>>>>>> please
>>>>>>> explain a
>>>>>>> little bit more.
>>>>>>
>>>>>> Whichever type you use here, it needs to be in sync with
>>>>>> BITOP_BITS_PER_WORD. Hence you want to include the _local_
>>>>>> bitops-
>>>>>> bits.h
>>>>>> here, such that in case of an inconsistent override by an
>>>>>> arch
>>>>>> the
>>>>>> compiler would complain about the two differring #define-s.
>>>>>> (IOW
>>>>>> an
>>>>>> arch overriding BITOP_BITS_PER_WORD cannot re-use this header
>>>>>> as-
>>>>>> is.)
>>>>>>
>>>>>> The same may, btw, be true for others of the new headers you
>>>>>> add
>>>>>> -
>>>>>> the
>>>>>> same #include would therefore be needed there as well.
>>>>> Now it clear to me.
>>>>>
>>>>>
>>>>> It seems like BITOP_BITS_PER_WORD, BITOP_MASK, BITOP_WORD, and
>>>>> BITS_PER_BYTE are defined in {arm, ppc,
>>>>> riscv}/include/asm/bitops.h.
>>>>> I expected that any architecture planning to use asm-
>>>>> generic/bitops/bitops-bits.h would include it at the beginning
>>>>> of
>>>>> <arch>/include/asm/bitops.h, similar to what is done for RISC-
>>>>> V:
>>>>>    #ifndef _ASM_RISCV_BITOPS_H
>>>>>    #define _ASM_RISCV_BITOPS_H
>>>>>    
>>>>>    #include <asm/system.h>
>>>>>    
>>>>>    #include <asm-generic/bitops/bitops-bits.h>
>>>>>    ...
>>>>>
>>>>> But in this case, to allow architecture overrides macros, it is
>>>>> necessary to update asm-generic/bitops/bitops-bits.h:
>>>>>     #ifndef BITOP_BITS_PER_WORD
>>>>>     #define BITOP_BITS_PER_WORD     32
>>>>>     #endif
>>>>>    ...
>>>>> Therefore,  if an architecture needs to override something, it
>>>>> will
>>>>> add
>>>>> #define ... before #include <asm-generic/bitops/bitops-bits.h>.
>>>>>
>>>>> Does it make sense?
>>>>
>>>> Sure. But then the arch also needs to provide a corresponding
>>>> typedef
>>>> (and bitops-bits.h the fallback one), for use wherever you use
>>>> any of
>>>> those #define-s.
>>> Which one typedef is needed to provide?
>>> <asm-generic/bitops/bitops-bits.h> contains only macros.
>>
>> A new one, to replace where right now you use "unsigned int" and I
>> initially said you need to use "uint32_t" instead. With what you said
>> earlier, uint32_t won't work there (anymore).
> Wouldn't it be enough just to "#include <xen/types.h>" in headers where
> "uint32_t" is used?

No, my point wasn't to make uint32_t available. We need a _separate_
typedef which matches the #define-s. Otherwise, if an arch defines
BITOP_BITS_PER_WORD to, say, 64, this generic code would do the wrong
thing.

Jan


From xen-devel-bounces@lists.xenproject.org Thu Jan 18 11:03:15 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 18 Jan 2024 11:03:15 +0000
Received: from list by lists.xenproject.org with outflank-mailman.668712.1041093 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQQAz-0008Hj-DN; Thu, 18 Jan 2024 11:03:13 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 668712.1041093; Thu, 18 Jan 2024 11:03:13 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQQAz-0008Hc-Ak; Thu, 18 Jan 2024 11:03:13 +0000
Received: by outflank-mailman (input) for mailman id 668712;
 Thu, 18 Jan 2024 11:03:12 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=2mYN=I4=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rQQAy-0008HS-0S
 for xen-devel@lists.xenproject.org; Thu, 18 Jan 2024 11:03:12 +0000
Received: from mail-wm1-x330.google.com (mail-wm1-x330.google.com
 [2a00:1450:4864:20::330])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 2acaeead-b5f1-11ee-98f2-6d05b1d4d9a1;
 Thu, 18 Jan 2024 12:03:10 +0100 (CET)
Received: by mail-wm1-x330.google.com with SMTP id
 5b1f17b1804b1-40e775695c6so34569615e9.3
 for <xen-devel@lists.xenproject.org>; Thu, 18 Jan 2024 03:03:10 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 r20-20020a05600c35d400b0040d8eca092esm29427703wmq.47.2024.01.18.03.03.09
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 18 Jan 2024 03:03:09 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 2acaeead-b5f1-11ee-98f2-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1705575790; x=1706180590; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=Gpp6kPELiW382nvJzMf/yJnYrHcRJyqBYUwBSZPXJyE=;
        b=V/ycx/2an6jDR8zI1HQE15vWU9hsCp8j87XQZ/OPAOfIL3aiR74psyBawNnElqyajj
         kDetT/qj5DmhlUU1nIB9QyRL4H2NapvOmThvW/KJfniBmrQ604eU9Z62mA+aJElog//3
         cjdDHgLCVeruiPLP1MkJ5Ti0oNg9OdU7iM3Of7sLRDwEB2pCIwInbT59pI4fpvkYtGYw
         ykxIjW4TJs5n2lHxMmZ6oByaIvqcDqcOo1fJn5qKKurgMFbIIvdlyYXVAzfu4sscdKeg
         4wFSnX7iZtyXBYZVQsAv7db5OE7C5krcJKb8i/e+lbAuPdRs4jf2GMw3Qxx98dyO9wNr
         my7Q==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705575790; x=1706180590;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=Gpp6kPELiW382nvJzMf/yJnYrHcRJyqBYUwBSZPXJyE=;
        b=xQiiwEkoYBTkCVsxURxZM66cEzVbCQ4EIO7LAZonUFG+nQCUNSvpWpDEALdsfY1zJu
         jdaG24ejDKSvsRrBKvql23491wkSiIyrhK9lGDN7r8vH5N+dclah+lFcfEPj8iMAKALY
         CWp7YmhT9piF4w8Mc0LU5meQYzTRGB77c5bprGcM6H7yXY3Ej4i0wH+7Gv8s1CNVKlOf
         0qxVdAGL0RcmcPzUChM/abZvIl8iAOB1ejRywRBRAXU7T3skGt7wF36mp3MuHi6Oxt+h
         tpySKAjXG3l2QKRBwnd9nNlSarAnNnMyUUNahbEKSgkEoBJPlTB9wpv1BN8EJUQe7zA+
         orZg==
X-Gm-Message-State: AOJu0YwW4a0+6ynedTCLa1O3uz9TNfxlsj8n16RrWCRh+KmV/f7fn0d3
	9ILlRfz3Hn59BcpYxAyXr7h6ex5qdDMQvpnYaq6QJqWlw1M4fkPInFc6vBzxSg==
X-Google-Smtp-Source: AGHT+IHs/DFcCtimizrkdFiFwB8G7tno7dMf8UBxvbSlg1aK7WYDMCTEbrYZCIG3VBa7MMUxdBr5wg==
X-Received: by 2002:a05:600c:295:b0:40e:6cf9:506e with SMTP id 21-20020a05600c029500b0040e6cf9506emr456602wmk.96.1705575790130;
        Thu, 18 Jan 2024 03:03:10 -0800 (PST)
Message-ID: <f6e13ad0-5401-41f7-9f3b-ef8f1bf9c1df@suse.com>
Date: Thu, 18 Jan 2024 12:03:09 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 10/34] xen/riscv: introduce bitops.h
Content-Language: en-US
To: Oleksii Kurochko <oleksii.kurochko@gmail.com>
Cc: Alistair Francis <alistair.francis@wdc.com>,
 Bob Eshleman <bobbyeshleman@gmail.com>, Connor Davis
 <connojdavis@gmail.com>, Andrew Cooper <andrew.cooper3@citrix.com>,
 George Dunlap <george.dunlap@citrix.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>,
 xen-devel@lists.xenproject.org
References: <cover.1703255175.git.oleksii.kurochko@gmail.com>
 <841d59c3950970f4937da200cf8f04aa39132e14.1703255175.git.oleksii.kurochko@gmail.com>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <841d59c3950970f4937da200cf8f04aa39132e14.1703255175.git.oleksii.kurochko@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 22.12.2023 16:12, Oleksii Kurochko wrote:
> --- /dev/null
> +++ b/xen/include/asm-generic/bitops/bitops-bits.h
> @@ -0,0 +1,10 @@
> +/* SPDX-License-Identifier: GPL-2.0 */
> +#ifndef _ASM_GENERIC_BITOPS_BITS_H_
> +#define _ASM_GENERIC_BITOPS_BITS_H_
> +
> +#define BITOP_BITS_PER_WORD     32
> +#define BITOP_MASK(nr)          (1UL << ((nr) % BITOP_BITS_PER_WORD))
> +#define BITOP_WORD(nr)          ((nr) / BITOP_BITS_PER_WORD)
> +#define BITS_PER_BYTE           8

Btw, I can't spot a use of BITS_PER_BYTE. Why do you add it? And if
it really needed adding, it surely wouldn't belong here.

Jan


From xen-devel-bounces@lists.xenproject.org Thu Jan 18 11:04:10 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 18 Jan 2024 11:04:10 +0000
Received: from list by lists.xenproject.org with outflank-mailman.668715.1041103 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQQBu-0000Ni-Li; Thu, 18 Jan 2024 11:04:10 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 668715.1041103; Thu, 18 Jan 2024 11:04:10 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQQBu-0000Nb-JB; Thu, 18 Jan 2024 11:04:10 +0000
Received: by outflank-mailman (input) for mailman id 668715;
 Thu, 18 Jan 2024 11:04:08 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=bYS5=I4=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1rQQBs-0000JP-RM
 for xen-devel@lists.xenproject.org; Thu, 18 Jan 2024 11:04:08 +0000
Received: from mail-wm1-x32b.google.com (mail-wm1-x32b.google.com
 [2a00:1450:4864:20::32b])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 4c647d38-b5f1-11ee-9b0f-b553b5be7939;
 Thu, 18 Jan 2024 12:04:07 +0100 (CET)
Received: by mail-wm1-x32b.google.com with SMTP id
 5b1f17b1804b1-40e86a9fbd9so24247265e9.1
 for <xen-devel@lists.xenproject.org>; Thu, 18 Jan 2024 03:04:07 -0800 (PST)
Received: from [10.80.67.30] (default-46-102-197-194.interdsl.co.uk.
 [46.102.197.194]) by smtp.gmail.com with ESMTPSA id
 ay39-20020a05600c1e2700b0040e92521b24sm1402425wmb.30.2024.01.18.03.04.05
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 18 Jan 2024 03:04:06 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 4c647d38-b5f1-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1705575846; x=1706180646; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=Y6UAEzkL/E2Z/k9IIwpRMEXPj2HqhFXpJLGjKeyieYE=;
        b=nohq1jJLScFP0dHFPbKbSbLOwr+GNiwwvLrkKoZmKpw9ABJgqO1LFXKW2kb0H2yXAu
         5ojEemzvfOmYJtvDeIWcT7u1M7tqeNwxIOfDDUtJp9o+PHznOoI5rqqVlpTMJlrOJWqi
         7LlsO0qq+xIXh0DZBRy9PAxIzIg3QeMfFsEzs=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705575846; x=1706180646;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=Y6UAEzkL/E2Z/k9IIwpRMEXPj2HqhFXpJLGjKeyieYE=;
        b=UoRd4x1bbAQ8YouCWQEp6aR7Wf6VyJMIzAz9X32fry8R+Is6CJr/hw5RfbbQzmGNZf
         XnYdlGvNPfmmwIib0zhN6AI/+pjZjBCFEn3EpaJSE8YJUqn8EK+zGjVk1f83ofBQYdY5
         3813QLi1ziVpWToKTWvU/d8G8EqIDaDCfDzwRiMfcQlajM1CwLlAfKjU8i9mFzkL99CD
         NEfkoTTDzl7nx4aUEHo+zeKjvhexmRXLT+4NGSE0wVdpj43wH8qbKa8L5jmjwZInfwGL
         UEOr81aUq4GKKTec6jI15NI3y+qE4LTFa0kkyFYo5PQQO7MF0/T5z1Hlwr5wWxxkht4r
         V3pg==
X-Gm-Message-State: AOJu0YxGwQ2jF+jIlLgjk094uZYgY0bOCj5tvc73Wh7Ma7DMhpXSPfUt
	JtVc36jIstTe/60np1yTXC+U7h1RgPYILXEopNm7f7vkkGDDu0uXJZFPXowM0X4=
X-Google-Smtp-Source: AGHT+IF83d5/JWaml7yU6UMNU/Dz9Xjmux3fVvBV/xVchRyUR8jnHp46wY0tls1hVhN/f47wZx+xew==
X-Received: by 2002:a05:600c:6556:b0:40e:485b:3ae7 with SMTP id dn22-20020a05600c655600b0040e485b3ae7mr342255wmb.27.1705575846371;
        Thu, 18 Jan 2024 03:04:06 -0800 (PST)
Message-ID: <9ea43cac-e1f2-4585-b1e0-a64ac6952df9@citrix.com>
Date: Thu, 18 Jan 2024 11:04:05 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2] x86/PV: avoid indirect call for I/O emulation quirk
 hook
Content-Language: en-GB
To: Jan Beulich <jbeulich@suse.com>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Wei Liu <wl@xen.org>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger.pau@citrix.com>
References: <28b46611-ff98-45cd-a2b0-ffe36b8f0ccf@suse.com>
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 xsFNBFLhNn8BEADVhE+Hb8i0GV6mihnnr/uiQQdPF8kUoFzCOPXkf7jQ5sLYeJa0cQi6Penp
 VtiFYznTairnVsN5J+ujSTIb+OlMSJUWV4opS7WVNnxHbFTPYZVQ3erv7NKc2iVizCRZ2Kxn
 srM1oPXWRic8BIAdYOKOloF2300SL/bIpeD+x7h3w9B/qez7nOin5NzkxgFoaUeIal12pXSR
 Q354FKFoy6Vh96gc4VRqte3jw8mPuJQpfws+Pb+swvSf/i1q1+1I4jsRQQh2m6OTADHIqg2E
 ofTYAEh7R5HfPx0EXoEDMdRjOeKn8+vvkAwhviWXTHlG3R1QkbE5M/oywnZ83udJmi+lxjJ5
 YhQ5IzomvJ16H0Bq+TLyVLO/VRksp1VR9HxCzItLNCS8PdpYYz5TC204ViycobYU65WMpzWe
 LFAGn8jSS25XIpqv0Y9k87dLbctKKA14Ifw2kq5OIVu2FuX+3i446JOa2vpCI9GcjCzi3oHV
 e00bzYiHMIl0FICrNJU0Kjho8pdo0m2uxkn6SYEpogAy9pnatUlO+erL4LqFUO7GXSdBRbw5
 gNt25XTLdSFuZtMxkY3tq8MFss5QnjhehCVPEpE6y9ZjI4XB8ad1G4oBHVGK5LMsvg22PfMJ
 ISWFSHoF/B5+lHkCKWkFxZ0gZn33ju5n6/FOdEx4B8cMJt+cWwARAQABzSlBbmRyZXcgQ29v
 cGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPsLBegQTAQgAJAIbAwULCQgHAwUVCgkI
 CwUWAgMBAAIeAQIXgAUCWKD95wIZAQAKCRBlw/kGpdefoHbdD/9AIoR3k6fKl+RFiFpyAhvO
 59ttDFI7nIAnlYngev2XUR3acFElJATHSDO0ju+hqWqAb8kVijXLops0gOfqt3VPZq9cuHlh
 IMDquatGLzAadfFx2eQYIYT+FYuMoPZy/aTUazmJIDVxP7L383grjIkn+7tAv+qeDfE+txL4
 SAm1UHNvmdfgL2/lcmL3xRh7sub3nJilM93RWX1Pe5LBSDXO45uzCGEdst6uSlzYR/MEr+5Z
 JQQ32JV64zwvf/aKaagSQSQMYNX9JFgfZ3TKWC1KJQbX5ssoX/5hNLqxMcZV3TN7kU8I3kjK
 mPec9+1nECOjjJSO/h4P0sBZyIUGfguwzhEeGf4sMCuSEM4xjCnwiBwftR17sr0spYcOpqET
 ZGcAmyYcNjy6CYadNCnfR40vhhWuCfNCBzWnUW0lFoo12wb0YnzoOLjvfD6OL3JjIUJNOmJy
 RCsJ5IA/Iz33RhSVRmROu+TztwuThClw63g7+hoyewv7BemKyuU6FTVhjjW+XUWmS/FzknSi
 dAG+insr0746cTPpSkGl3KAXeWDGJzve7/SBBfyznWCMGaf8E2P1oOdIZRxHgWj0zNr1+ooF
 /PzgLPiCI4OMUttTlEKChgbUTQ+5o0P080JojqfXwbPAyumbaYcQNiH1/xYbJdOFSiBv9rpt
 TQTBLzDKXok86M7BTQRS4TZ/ARAAkgqudHsp+hd82UVkvgnlqZjzz2vyrYfz7bkPtXaGb9H4
 Rfo7mQsEQavEBdWWjbga6eMnDqtu+FC+qeTGYebToxEyp2lKDSoAsvt8w82tIlP/EbmRbDVn
 7bhjBlfRcFjVYw8uVDPptT0TV47vpoCVkTwcyb6OltJrvg/QzV9f07DJswuda1JH3/qvYu0p
 vjPnYvCq4NsqY2XSdAJ02HrdYPFtNyPEntu1n1KK+gJrstjtw7KsZ4ygXYrsm/oCBiVW/OgU
 g/XIlGErkrxe4vQvJyVwg6YH653YTX5hLLUEL1NS4TCo47RP+wi6y+TnuAL36UtK/uFyEuPy
 wwrDVcC4cIFhYSfsO0BumEI65yu7a8aHbGfq2lW251UcoU48Z27ZUUZd2Dr6O/n8poQHbaTd
 6bJJSjzGGHZVbRP9UQ3lkmkmc0+XCHmj5WhwNNYjgbbmML7y0fsJT5RgvefAIFfHBg7fTY/i
 kBEimoUsTEQz+N4hbKwo1hULfVxDJStE4sbPhjbsPCrlXf6W9CxSyQ0qmZ2bXsLQYRj2xqd1
 bpA+1o1j2N4/au1R/uSiUFjewJdT/LX1EklKDcQwpk06Af/N7VZtSfEJeRV04unbsKVXWZAk
 uAJyDDKN99ziC0Wz5kcPyVD1HNf8bgaqGDzrv3TfYjwqayRFcMf7xJaL9xXedMcAEQEAAcLB
 XwQYAQgACQUCUuE2fwIbDAAKCRBlw/kGpdefoG4XEACD1Qf/er8EA7g23HMxYWd3FXHThrVQ
 HgiGdk5Yh632vjOm9L4sd/GCEACVQKjsu98e8o3ysitFlznEns5EAAXEbITrgKWXDDUWGYxd
 pnjj2u+GkVdsOAGk0kxczX6s+VRBhpbBI2PWnOsRJgU2n10PZ3mZD4Xu9kU2IXYmuW+e5KCA
 vTArRUdCrAtIa1k01sPipPPw6dfxx2e5asy21YOytzxuWFfJTGnVxZZSCyLUO83sh6OZhJkk
 b9rxL9wPmpN/t2IPaEKoAc0FTQZS36wAMOXkBh24PQ9gaLJvfPKpNzGD8XWR5HHF0NLIJhgg
 4ZlEXQ2fVp3XrtocHqhu4UZR4koCijgB8sB7Tb0GCpwK+C4UePdFLfhKyRdSXuvY3AHJd4CP
 4JzW0Bzq/WXY3XMOzUTYApGQpnUpdOmuQSfpV9MQO+/jo7r6yPbxT7CwRS5dcQPzUiuHLK9i
 nvjREdh84qycnx0/6dDroYhp0DFv4udxuAvt1h4wGwTPRQZerSm4xaYegEFusyhbZrI0U9tJ
 B8WrhBLXDiYlyJT6zOV2yZFuW47VrLsjYnHwn27hmxTC/7tvG3euCklmkn9Sl9IAKFu29RSo
 d5bD8kMSCYsTqtTfT6W4A3qHGvIDta3ptLYpIAOD2sY3GYq2nf3Bbzx81wZK14JdDDHUX2Rs
 6+ahAA==
In-Reply-To: <28b46611-ff98-45cd-a2b0-ffe36b8f0ccf@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 17/01/2024 9:37 am, Jan Beulich wrote:
> --- a/xen/arch/x86/ioport_emulate.c
> +++ b/xen/arch/x86/ioport_emulate.c
> @@ -8,11 +8,10 @@
>  #include <xen/sched.h>
>  #include <xen/dmi.h>
>  
> -unsigned int (*__read_mostly ioemul_handle_quirk)(
> -    uint8_t opcode, char *io_emul_stub, struct cpu_user_regs *regs);
> +bool __ro_after_init ioemul_handle_quirk;
>  
> -static unsigned int cf_check ioemul_handle_proliant_quirk(
> -    u8 opcode, char *io_emul_stub, struct cpu_user_regs *regs)
> +unsigned int ioemul_handle_proliant_quirk(
> +    uint8_t opcode, char *io_emul_stub, const struct cpu_user_regs *regs)
>  {
>      static const char stub[] = {
>          0x9c,       /*    pushf           */

Something occurred to me.

diff --git a/xen/arch/x86/ioport_emulate.c b/xen/arch/x86/ioport_emulate.c
index 23cba842b22e..70f94febe255 100644
--- a/xen/arch/x86/ioport_emulate.c
+++ b/xen/arch/x86/ioport_emulate.c
@@ -13,7 +13,7 @@ bool __ro_after_init ioemul_handle_quirk;
 unsigned int ioemul_handle_proliant_quirk(
     uint8_t opcode, char *io_emul_stub, const struct cpu_user_regs *regs)
 {
-    static const char stub[] = {
+    const char stub[] = {
         0x9c,       /*    pushf           */
         0xfa,       /*    cli             */
         0xee,       /*    out %al, %dx    */

is an improvement, confirmed by bloat-o-meter:

add/remove: 0/1 grow/shrink: 1/0 up/down: 1/-9 (-8)
Function                                     old     new   delta
ioemul_handle_proliant_quirk                  58      59      +1
stub                                           9       -      -9

The reason is that we've got a 9 byte object that's decomposed into two
rip-relative accesses.  i.e. we've got more pointer than data in this case.

But this adjustment seems to tickle a GCC bug.  With that change in
place, GCC emits:

<ioemul_handle_proliant_quirk>:
       48 83 ec 10             sub    $0x10,%rsp
       ...
       48 83 c4 10             add    $0x10,%rsp
       c3                      retq

i.e. we get a stack frame (space at least, no initialisation) despite
the object having been converted entirely to instruction immediates.

Or in other words, there's a further 12 byte saving available when GCC
can be persuaded to not even emit the stack frame.

What is even more weird is that I see this GCC-10, and a build of gcc
master from last week, but not when I try to reproduce in
https://godbolt.org/z/PnachbznW so there's probably some other setting
used by Xen which tickles this bug.

~Andrew


From xen-devel-bounces@lists.xenproject.org Thu Jan 18 11:10:00 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 18 Jan 2024 11:10:00 +0000
Received: from list by lists.xenproject.org with outflank-mailman.668721.1041113 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQQHM-000295-Es; Thu, 18 Jan 2024 11:09:48 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 668721.1041113; Thu, 18 Jan 2024 11:09:48 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQQHM-00028y-B2; Thu, 18 Jan 2024 11:09:48 +0000
Received: by outflank-mailman (input) for mailman id 668721;
 Thu, 18 Jan 2024 11:09:46 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=2mYN=I4=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rQQHK-00028s-Uf
 for xen-devel@lists.xenproject.org; Thu, 18 Jan 2024 11:09:46 +0000
Received: from mail-wr1-x42a.google.com (mail-wr1-x42a.google.com
 [2a00:1450:4864:20::42a])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 165aa1f2-b5f2-11ee-98f2-6d05b1d4d9a1;
 Thu, 18 Jan 2024 12:09:45 +0100 (CET)
Received: by mail-wr1-x42a.google.com with SMTP id
 ffacd0b85a97d-337c4f0f9daso1219178f8f.2
 for <xen-devel@lists.xenproject.org>; Thu, 18 Jan 2024 03:09:45 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 p1-20020adfe601000000b00337bf461385sm3779221wrm.26.2024.01.18.03.09.44
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 18 Jan 2024 03:09:45 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 165aa1f2-b5f2-11ee-98f2-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1705576185; x=1706180985; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=t24q2dGv8D4mt+0CWbsTggaWqxqHdc3rGp3CpBewU0Q=;
        b=BLz22xV1mITGJzPsRW86cCzwU0rIJucYc0vmbu44TPVvtjWSCdXhqQNLqrR3uOLgs6
         cnaa3kTy1K6XwFKCS83iqsPue7Jocr1GEJKmPyLm0tTg/kb5neIbTPNWVZ8nMNOGUqMM
         tL3x1DN2wqApOPLMniwQHQgTbi4wm8EX1kN6kb1Y83PTneYf7X5JXhey8GtuQJ8S9040
         Fsm5ZGbyaM6Ndmm4NcbC6Do7yxEmO1c1o6//JlOCZZym6AZcJmQqML6KwnOYCSn6YGve
         txIKBS9bBUz5cJMLYWU354R/oTUDud/PjYAKfEKRLIESrDp1HeotSYzbtL1Mb+3Gehez
         XQBw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705576185; x=1706180985;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=t24q2dGv8D4mt+0CWbsTggaWqxqHdc3rGp3CpBewU0Q=;
        b=HGJZxc7M3JLRT2ZcuBPQ/rz8RvGHnf0OWd9ZaWSHYwz7DLSsaVKdDlgQWy97mLIzAb
         qIP58/tgHr/8qa/wMHApBfbUZXFZrAgHChS74jlI4g7w4HyqoQyupTTXUmFfhLoYDwQB
         bLXgF7Qfl/CUL0KXReAA+BWa2FyxjgcMBwyydPTurFFnwR5hIWUuoNkXUppY4SPSn5O+
         fEuOtB961ZTflci4/WfzrqHiqIS+i6huVFzIANcfxpqKVy5+/hOMTvk/K7jz8SJKS6Xa
         ns9g7cwFhJNWKPakKv5KFTybKZe+ODzN51Otqqz32xGTzi9xMCE65R0Jwd4l2SFOZ/aI
         cv3A==
X-Gm-Message-State: AOJu0YxMTCOFIZ3+r5NhZjhfGCSisvrIQtsooOnkYGwVo5nt5WUXLcNo
	ZdwpAXPU5iw03jkN9lZrlyiPD8/BWrSEx4cVmUbChctFselLVtbTM70+kMatykt18tOFEDJwMKo
	=
X-Google-Smtp-Source: AGHT+IEH27CKN613KjSl8Jj3UeqWVxCKNep/FZRab8RyL/q2OkyqPWsW8HyU/FwARD96M9eKHw336A==
X-Received: by 2002:adf:edca:0:b0:337:c61c:71b8 with SMTP id v10-20020adfedca000000b00337c61c71b8mr398865wro.7.1705576185281;
        Thu, 18 Jan 2024 03:09:45 -0800 (PST)
Message-ID: <b62bd658-6c84-40af-9518-57d88857479b@suse.com>
Date: Thu, 18 Jan 2024 12:09:43 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2] x86/PV: avoid indirect call for I/O emulation quirk
 hook
Content-Language: en-US
To: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: Wei Liu <wl@xen.org>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger.pau@citrix.com>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
References: <28b46611-ff98-45cd-a2b0-ffe36b8f0ccf@suse.com>
 <9ea43cac-e1f2-4585-b1e0-a64ac6952df9@citrix.com>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <9ea43cac-e1f2-4585-b1e0-a64ac6952df9@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 18.01.2024 12:04, Andrew Cooper wrote:
> On 17/01/2024 9:37 am, Jan Beulich wrote:
>> --- a/xen/arch/x86/ioport_emulate.c
>> +++ b/xen/arch/x86/ioport_emulate.c
>> @@ -8,11 +8,10 @@
>>  #include <xen/sched.h>
>>  #include <xen/dmi.h>
>>  
>> -unsigned int (*__read_mostly ioemul_handle_quirk)(
>> -    uint8_t opcode, char *io_emul_stub, struct cpu_user_regs *regs);
>> +bool __ro_after_init ioemul_handle_quirk;
>>  
>> -static unsigned int cf_check ioemul_handle_proliant_quirk(
>> -    u8 opcode, char *io_emul_stub, struct cpu_user_regs *regs)
>> +unsigned int ioemul_handle_proliant_quirk(
>> +    uint8_t opcode, char *io_emul_stub, const struct cpu_user_regs *regs)
>>  {
>>      static const char stub[] = {
>>          0x9c,       /*    pushf           */
> 
> Something occurred to me.
> 
> diff --git a/xen/arch/x86/ioport_emulate.c b/xen/arch/x86/ioport_emulate.c
> index 23cba842b22e..70f94febe255 100644
> --- a/xen/arch/x86/ioport_emulate.c
> +++ b/xen/arch/x86/ioport_emulate.c
> @@ -13,7 +13,7 @@ bool __ro_after_init ioemul_handle_quirk;
>  unsigned int ioemul_handle_proliant_quirk(
>      uint8_t opcode, char *io_emul_stub, const struct cpu_user_regs *regs)
>  {
> -    static const char stub[] = {
> +    const char stub[] = {
>          0x9c,       /*    pushf           */
>          0xfa,       /*    cli             */
>          0xee,       /*    out %al, %dx    */
> 
> is an improvement, confirmed by bloat-o-meter:
> 
> add/remove: 0/1 grow/shrink: 1/0 up/down: 1/-9 (-8)
> Function                                     old     new   delta
> ioemul_handle_proliant_quirk                  58      59      +1
> stub                                           9       -      -9
> 
> The reason is that we've got a 9 byte object that's decomposed into two
> rip-relative accesses.  i.e. we've got more pointer than data in this case.

I wouldn't mind this as a separate change, but I don't see how it would
fit right here.

> But this adjustment seems to tickle a GCC bug.  With that change in
> place, GCC emits:
> 
> <ioemul_handle_proliant_quirk>:
>        48 83 ec 10             sub    $0x10,%rsp
>        ...
>        48 83 c4 10             add    $0x10,%rsp
>        c3                      retq
> 
> i.e. we get a stack frame (space at least, no initialisation) despite
> the object having been converted entirely to instruction immediates.
> 
> Or in other words, there's a further 12 byte saving available when GCC
> can be persuaded to not even emit the stack frame.
> 
> What is even more weird is that I see this GCC-10, and a build of gcc
> master from last week, but not when I try to reproduce in
> https://godbolt.org/z/PnachbznW so there's probably some other setting
> used by Xen which tickles this bug.

Yeah, I've observed such pointless frame allocation elsewhere as well,
so far without being able what exactly triggers it.

Jan


From xen-devel-bounces@lists.xenproject.org Thu Jan 18 11:12:02 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 18 Jan 2024 11:12:02 +0000
Received: from list by lists.xenproject.org with outflank-mailman.668726.1041122 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQQJS-0003XW-PV; Thu, 18 Jan 2024 11:11:58 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 668726.1041122; Thu, 18 Jan 2024 11:11:58 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQQJS-0003XP-Mz; Thu, 18 Jan 2024 11:11:58 +0000
Received: by outflank-mailman (input) for mailman id 668726;
 Thu, 18 Jan 2024 11:11:57 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=bYS5=I4=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1rQQJR-0003XJ-7n
 for xen-devel@lists.xenproject.org; Thu, 18 Jan 2024 11:11:57 +0000
Received: from mail-wr1-x435.google.com (mail-wr1-x435.google.com
 [2a00:1450:4864:20::435])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 64151252-b5f2-11ee-98f2-6d05b1d4d9a1;
 Thu, 18 Jan 2024 12:11:56 +0100 (CET)
Received: by mail-wr1-x435.google.com with SMTP id
 ffacd0b85a97d-337c4f0f9daso1220877f8f.2
 for <xen-devel@lists.xenproject.org>; Thu, 18 Jan 2024 03:11:56 -0800 (PST)
Received: from [10.80.67.30] (default-46-102-197-194.interdsl.co.uk.
 [46.102.197.194]) by smtp.gmail.com with ESMTPSA id
 r6-20020a5d4986000000b00337c6819af6sm2493618wrq.51.2024.01.18.03.11.55
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 18 Jan 2024 03:11:55 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 64151252-b5f2-11ee-98f2-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1705576316; x=1706181116; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=OFdxeABCVXiS+gOfeqbPbtAo2kXFzO1rv5WslpzpwB0=;
        b=ThztL7GlVgHOMekRy5kNE6LDNCbw4FBVaVr1F7S9Pfl9Jt2JzAN0g3VRKIq433gazh
         B2YPZhueWExJz2VIYmxYKjy4s6KhDKafiGa6jn+Cseg7XFP116Or+Em1WerFc/i5ePIE
         J4DSgUDSJslBcZRFows+k0ag2dzQGiPEF+Zc8=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705576316; x=1706181116;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=OFdxeABCVXiS+gOfeqbPbtAo2kXFzO1rv5WslpzpwB0=;
        b=NRCfKzBTylkIWqzsRszfQxmWYkdj3Ml6+kz2bqtTqktOILe8xOqahVQdduT0VYQZ6D
         e19T2Fu6cAWDrdXLG0IN8haGei4X/5a09RmeD/newFeajMgy2N/UUweM0qbxqQpl6L4G
         tkIJxyq86eFaplBgRjbbcGZWveqh7LIoIVu6nthojNz4yRQ1X93kEo6wE0KVeizeMwTI
         1HL2m9/etNcjXiShZd/jxOVXsqnrYkrC1PgBB61CUAAA8ebYIobgsoTRY4QuSW+TyJiC
         /Qa+ofZ/nU60tDcYQpn53wdtnjo/eTcRz0pauEdxpIxfLpn7i5+J0gP7Dej+VCLeWPeG
         i25A==
X-Gm-Message-State: AOJu0YxQtbhxJvQ1Rsm8tWk9nm6fKSdBQ4Y29YtQg3e6eWu4NmSefyrj
	Bh5dXZnegqMTYS8EGSDSjhxCiWxHUDOIocQjM5Nv5U7s9F4bhgGQY+uN7yp+N1U=
X-Google-Smtp-Source: AGHT+IGucdEnnhLRUu4bJ8nNiQ5Z5NihmXaZWs2LV5Oy42f++r+DndM7ya7PWHImxlCwz91RaMdSKw==
X-Received: by 2002:a5d:5392:0:b0:337:8fd0:e612 with SMTP id d18-20020a5d5392000000b003378fd0e612mr374302wrv.68.1705576315692;
        Thu, 18 Jan 2024 03:11:55 -0800 (PST)
Message-ID: <14ad2b63-f455-4a5d-bba2-a73b88f188ce@citrix.com>
Date: Thu, 18 Jan 2024 11:11:55 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2] x86/PV: avoid indirect call for I/O emulation quirk
 hook
Content-Language: en-GB
To: Jan Beulich <jbeulich@suse.com>
Cc: Wei Liu <wl@xen.org>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger.pau@citrix.com>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
References: <28b46611-ff98-45cd-a2b0-ffe36b8f0ccf@suse.com>
 <9ea43cac-e1f2-4585-b1e0-a64ac6952df9@citrix.com>
 <b62bd658-6c84-40af-9518-57d88857479b@suse.com>
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 xsFNBFLhNn8BEADVhE+Hb8i0GV6mihnnr/uiQQdPF8kUoFzCOPXkf7jQ5sLYeJa0cQi6Penp
 VtiFYznTairnVsN5J+ujSTIb+OlMSJUWV4opS7WVNnxHbFTPYZVQ3erv7NKc2iVizCRZ2Kxn
 srM1oPXWRic8BIAdYOKOloF2300SL/bIpeD+x7h3w9B/qez7nOin5NzkxgFoaUeIal12pXSR
 Q354FKFoy6Vh96gc4VRqte3jw8mPuJQpfws+Pb+swvSf/i1q1+1I4jsRQQh2m6OTADHIqg2E
 ofTYAEh7R5HfPx0EXoEDMdRjOeKn8+vvkAwhviWXTHlG3R1QkbE5M/oywnZ83udJmi+lxjJ5
 YhQ5IzomvJ16H0Bq+TLyVLO/VRksp1VR9HxCzItLNCS8PdpYYz5TC204ViycobYU65WMpzWe
 LFAGn8jSS25XIpqv0Y9k87dLbctKKA14Ifw2kq5OIVu2FuX+3i446JOa2vpCI9GcjCzi3oHV
 e00bzYiHMIl0FICrNJU0Kjho8pdo0m2uxkn6SYEpogAy9pnatUlO+erL4LqFUO7GXSdBRbw5
 gNt25XTLdSFuZtMxkY3tq8MFss5QnjhehCVPEpE6y9ZjI4XB8ad1G4oBHVGK5LMsvg22PfMJ
 ISWFSHoF/B5+lHkCKWkFxZ0gZn33ju5n6/FOdEx4B8cMJt+cWwARAQABzSlBbmRyZXcgQ29v
 cGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPsLBegQTAQgAJAIbAwULCQgHAwUVCgkI
 CwUWAgMBAAIeAQIXgAUCWKD95wIZAQAKCRBlw/kGpdefoHbdD/9AIoR3k6fKl+RFiFpyAhvO
 59ttDFI7nIAnlYngev2XUR3acFElJATHSDO0ju+hqWqAb8kVijXLops0gOfqt3VPZq9cuHlh
 IMDquatGLzAadfFx2eQYIYT+FYuMoPZy/aTUazmJIDVxP7L383grjIkn+7tAv+qeDfE+txL4
 SAm1UHNvmdfgL2/lcmL3xRh7sub3nJilM93RWX1Pe5LBSDXO45uzCGEdst6uSlzYR/MEr+5Z
 JQQ32JV64zwvf/aKaagSQSQMYNX9JFgfZ3TKWC1KJQbX5ssoX/5hNLqxMcZV3TN7kU8I3kjK
 mPec9+1nECOjjJSO/h4P0sBZyIUGfguwzhEeGf4sMCuSEM4xjCnwiBwftR17sr0spYcOpqET
 ZGcAmyYcNjy6CYadNCnfR40vhhWuCfNCBzWnUW0lFoo12wb0YnzoOLjvfD6OL3JjIUJNOmJy
 RCsJ5IA/Iz33RhSVRmROu+TztwuThClw63g7+hoyewv7BemKyuU6FTVhjjW+XUWmS/FzknSi
 dAG+insr0746cTPpSkGl3KAXeWDGJzve7/SBBfyznWCMGaf8E2P1oOdIZRxHgWj0zNr1+ooF
 /PzgLPiCI4OMUttTlEKChgbUTQ+5o0P080JojqfXwbPAyumbaYcQNiH1/xYbJdOFSiBv9rpt
 TQTBLzDKXok86M7BTQRS4TZ/ARAAkgqudHsp+hd82UVkvgnlqZjzz2vyrYfz7bkPtXaGb9H4
 Rfo7mQsEQavEBdWWjbga6eMnDqtu+FC+qeTGYebToxEyp2lKDSoAsvt8w82tIlP/EbmRbDVn
 7bhjBlfRcFjVYw8uVDPptT0TV47vpoCVkTwcyb6OltJrvg/QzV9f07DJswuda1JH3/qvYu0p
 vjPnYvCq4NsqY2XSdAJ02HrdYPFtNyPEntu1n1KK+gJrstjtw7KsZ4ygXYrsm/oCBiVW/OgU
 g/XIlGErkrxe4vQvJyVwg6YH653YTX5hLLUEL1NS4TCo47RP+wi6y+TnuAL36UtK/uFyEuPy
 wwrDVcC4cIFhYSfsO0BumEI65yu7a8aHbGfq2lW251UcoU48Z27ZUUZd2Dr6O/n8poQHbaTd
 6bJJSjzGGHZVbRP9UQ3lkmkmc0+XCHmj5WhwNNYjgbbmML7y0fsJT5RgvefAIFfHBg7fTY/i
 kBEimoUsTEQz+N4hbKwo1hULfVxDJStE4sbPhjbsPCrlXf6W9CxSyQ0qmZ2bXsLQYRj2xqd1
 bpA+1o1j2N4/au1R/uSiUFjewJdT/LX1EklKDcQwpk06Af/N7VZtSfEJeRV04unbsKVXWZAk
 uAJyDDKN99ziC0Wz5kcPyVD1HNf8bgaqGDzrv3TfYjwqayRFcMf7xJaL9xXedMcAEQEAAcLB
 XwQYAQgACQUCUuE2fwIbDAAKCRBlw/kGpdefoG4XEACD1Qf/er8EA7g23HMxYWd3FXHThrVQ
 HgiGdk5Yh632vjOm9L4sd/GCEACVQKjsu98e8o3ysitFlznEns5EAAXEbITrgKWXDDUWGYxd
 pnjj2u+GkVdsOAGk0kxczX6s+VRBhpbBI2PWnOsRJgU2n10PZ3mZD4Xu9kU2IXYmuW+e5KCA
 vTArRUdCrAtIa1k01sPipPPw6dfxx2e5asy21YOytzxuWFfJTGnVxZZSCyLUO83sh6OZhJkk
 b9rxL9wPmpN/t2IPaEKoAc0FTQZS36wAMOXkBh24PQ9gaLJvfPKpNzGD8XWR5HHF0NLIJhgg
 4ZlEXQ2fVp3XrtocHqhu4UZR4koCijgB8sB7Tb0GCpwK+C4UePdFLfhKyRdSXuvY3AHJd4CP
 4JzW0Bzq/WXY3XMOzUTYApGQpnUpdOmuQSfpV9MQO+/jo7r6yPbxT7CwRS5dcQPzUiuHLK9i
 nvjREdh84qycnx0/6dDroYhp0DFv4udxuAvt1h4wGwTPRQZerSm4xaYegEFusyhbZrI0U9tJ
 B8WrhBLXDiYlyJT6zOV2yZFuW47VrLsjYnHwn27hmxTC/7tvG3euCklmkn9Sl9IAKFu29RSo
 d5bD8kMSCYsTqtTfT6W4A3qHGvIDta3ptLYpIAOD2sY3GYq2nf3Bbzx81wZK14JdDDHUX2Rs
 6+ahAA==
In-Reply-To: <b62bd658-6c84-40af-9518-57d88857479b@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 18/01/2024 11:09 am, Jan Beulich wrote:
> On 18.01.2024 12:04, Andrew Cooper wrote:
>> On 17/01/2024 9:37 am, Jan Beulich wrote:
>>> --- a/xen/arch/x86/ioport_emulate.c
>>> +++ b/xen/arch/x86/ioport_emulate.c
>>> @@ -8,11 +8,10 @@
>>>  #include <xen/sched.h>
>>>  #include <xen/dmi.h>
>>>  
>>> -unsigned int (*__read_mostly ioemul_handle_quirk)(
>>> -    uint8_t opcode, char *io_emul_stub, struct cpu_user_regs *regs);
>>> +bool __ro_after_init ioemul_handle_quirk;
>>>  
>>> -static unsigned int cf_check ioemul_handle_proliant_quirk(
>>> -    u8 opcode, char *io_emul_stub, struct cpu_user_regs *regs)
>>> +unsigned int ioemul_handle_proliant_quirk(
>>> +    uint8_t opcode, char *io_emul_stub, const struct cpu_user_regs *regs)
>>>  {
>>>      static const char stub[] = {
>>>          0x9c,       /*    pushf           */
>> Something occurred to me.
>>
>> diff --git a/xen/arch/x86/ioport_emulate.c b/xen/arch/x86/ioport_emulate.c
>> index 23cba842b22e..70f94febe255 100644
>> --- a/xen/arch/x86/ioport_emulate.c
>> +++ b/xen/arch/x86/ioport_emulate.c
>> @@ -13,7 +13,7 @@ bool __ro_after_init ioemul_handle_quirk;
>>  unsigned int ioemul_handle_proliant_quirk(
>>      uint8_t opcode, char *io_emul_stub, const struct cpu_user_regs *regs)
>>  {
>> -    static const char stub[] = {
>> +    const char stub[] = {
>>          0x9c,       /*    pushf           */
>>          0xfa,       /*    cli             */
>>          0xee,       /*    out %al, %dx    */
>>
>> is an improvement, confirmed by bloat-o-meter:
>>
>> add/remove: 0/1 grow/shrink: 1/0 up/down: 1/-9 (-8)
>> Function                                     old     new   delta
>> ioemul_handle_proliant_quirk                  58      59      +1
>> stub                                           9       -      -9
>>
>> The reason is that we've got a 9 byte object that's decomposed into two
>> rip-relative accesses.  i.e. we've got more pointer than data in this case.
> I wouldn't mind this as a separate change, but I don't see how it would
> fit right here.

I'm not suggesting changing this patch.  I just linked here because I
noticed it because of this patch.

We've got similar patterns elsewhere, so I was intending to do a patch
covering all of them.

>
>> But this adjustment seems to tickle a GCC bug.  With that change in
>> place, GCC emits:
>>
>> <ioemul_handle_proliant_quirk>:
>>        48 83 ec 10             sub    $0x10,%rsp
>>        ...
>>        48 83 c4 10             add    $0x10,%rsp
>>        c3                      retq
>>
>> i.e. we get a stack frame (space at least, no initialisation) despite
>> the object having been converted entirely to instruction immediates.
>>
>> Or in other words, there's a further 12 byte saving available when GCC
>> can be persuaded to not even emit the stack frame.
>>
>> What is even more weird is that I see this GCC-10, and a build of gcc
>> master from last week, but not when I try to reproduce in
>> https://godbolt.org/z/PnachbznW so there's probably some other setting
>> used by Xen which tickles this bug.
> Yeah, I've observed such pointless frame allocation elsewhere as well,
> so far without being able what exactly triggers it.

Ok - more experimentation required, I guess.

~Andrew


From xen-devel-bounces@lists.xenproject.org Thu Jan 18 12:07:11 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 18 Jan 2024 12:07:11 +0000
Received: from list by lists.xenproject.org with outflank-mailman.668743.1041133 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQRAm-0005uI-13; Thu, 18 Jan 2024 12:07:04 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 668743.1041133; Thu, 18 Jan 2024 12:07:03 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQRAl-0005uB-Sz; Thu, 18 Jan 2024 12:07:03 +0000
Received: by outflank-mailman (input) for mailman id 668743;
 Thu, 18 Jan 2024 12:07:02 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=fkFQ=I4=amd.com=Michal.Orzel@srs-se1.protection.inumbo.net>)
 id 1rQRAk-0005u5-Ln
 for xen-devel@lists.xenproject.org; Thu, 18 Jan 2024 12:07:02 +0000
Received: from NAM10-BN7-obe.outbound.protection.outlook.com
 (mail-bn7nam10on20600.outbound.protection.outlook.com
 [2a01:111:f403:2009::600])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 13d50504-b5fa-11ee-9b0f-b553b5be7939;
 Thu, 18 Jan 2024 13:06:58 +0100 (CET)
Received: from BYAPR06CA0036.namprd06.prod.outlook.com (2603:10b6:a03:d4::49)
 by CH3PR12MB8548.namprd12.prod.outlook.com (2603:10b6:610:165::12)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7202.24; Thu, 18 Jan
 2024 12:06:53 +0000
Received: from SJ5PEPF000001CD.namprd05.prod.outlook.com
 (2603:10b6:a03:d4:cafe::c9) by BYAPR06CA0036.outlook.office365.com
 (2603:10b6:a03:d4::49) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7202.24 via Frontend
 Transport; Thu, 18 Jan 2024 12:06:52 +0000
Received: from SATLEXMB04.amd.com (165.204.84.17) by
 SJ5PEPF000001CD.mail.protection.outlook.com (10.167.242.42) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.7202.16 via Frontend Transport; Thu, 18 Jan 2024 12:06:52 +0000
Received: from SATLEXMB04.amd.com (10.181.40.145) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.34; Thu, 18 Jan
 2024 06:06:51 -0600
Received: from XIR-MICHALO-L1.xilinx.com (10.180.168.240) by
 SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server id 15.1.2507.34
 via Frontend Transport; Thu, 18 Jan 2024 06:06:49 -0600
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 13d50504-b5fa-11ee-9b0f-b553b5be7939
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=RpWNW6QVqTuud5b1jU3EeLBffx5X44O/JVXcqglWVKNEyAUrH+cmgY96X8WoFarMrKQ1l0m4OGu9oneuBZI4J9ISGy3BBz1pij0Ir/OfcQN6ikQnRddgXHBy8NEBlBJDG8MF+ZcFU7gEn8GEQBnxc9yHT0EaTmUxP8+2wcCCenA8FIm1F5gPswYbg+S5mUKkZdyHQtI4TiuheTeKXQXpyZywEGJbeDUDQZOqoIuqST00GRDFERDKXidJZAniH2B580MNWswcn+UFtdOfrVXUkUWLGX5Rebt0nRe4Cbxs5jwtwkO8vLtK9rU0GseXMlPbGdiA0T1uRZv86WZiu/WoYQ==
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=V+kg6+IJHxqILiPqgSli5P1UDg1reVgTH5m++TngXLs=;
 b=ZF54wH2w5vy1kkzD0Ww88HLYajMWd2TAZXRdktA6GFdqUnnSLNlfqQPo2U4PldrUq9zNt0P2vfOZ0SkdAfKMsNfRMQBTKlDtzxW9Xx3eWKai5BK2HOWM0nxashHSk/KSopPcpYpF+/cTf4to20KBJR6jXTXzUVDO1RPPgXiXxpNdc+IFyMBSaXFItbbqy0LiqkGszAhI2JM5Lucyf6YlIb5vHUDGmDY8an1zA2/H/J/R83Zs32ExkyosMRGoH/5ReWpYK1Q+9vkzhAlUJUj0c3v7Y+nHe1RT0/I6gZX/+qDOVxQa8OY0WPZCtOE6QJiethVgPqvs2GNcu4+vJe5bQQ==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=lists.xenproject.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)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=V+kg6+IJHxqILiPqgSli5P1UDg1reVgTH5m++TngXLs=;
 b=YR2c9NVqJN+LmTfsMebBghi1YHjUMd/Q3mmEqBMVDIVerByz+IoAmFkjZGKBuxBhuepRfqao7355FEQDrTJuvBbC685qG+7JIm+52/GJgGeFOK49Ss7gNl44u6wpM+L0nVtv8a2zdHNoOLbwlckA3kuic9oKolvHrb3S4zQNtrY=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C
From: Michal Orzel <michal.orzel@amd.com>
To: <xen-devel@lists.xenproject.org>
CC: Michal Orzel <michal.orzel@amd.com>, Andrew Cooper
	<andrew.cooper3@citrix.com>, George Dunlap <george.dunlap@citrix.com>, "Jan
 Beulich" <jbeulich@suse.com>, Julien Grall <julien@xen.org>, "Stefano
 Stabellini" <sstabellini@kernel.org>, Wei Liu <wl@xen.org>, Javi Merino
	<javi.merino@cloud.com>
Subject: [PATCH] coverage: filter out lib{fdt,elf}-temp.o
Date: Thu, 18 Jan 2024 13:06:41 +0100
Message-ID: <20240118120641.24824-1-michal.orzel@amd.com>
X-Mailer: git-send-email 2.25.1
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: SJ5PEPF000001CD:EE_|CH3PR12MB8548:EE_
X-MS-Office365-Filtering-Correlation-Id: b8b1c237-1059-4f2c-f5e7-08dc181df4ee
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam: BCL:0;
X-Microsoft-Antispam-Message-Info:
	DBAwF0J7tnOueh0Zi7T3QuiRkv3iaDnhaC993VJ8bGNsfGlpBR6ZBZzTX+5ZIuUcaR8/OOXOU5DJKEkotDYnDYVfaO2u7uSr3WXbOuBmk0RA0VlWrJS8y/YK/vmBpzitFo9ox4+TOcQgepeW+n80SAcxQ1B7jTd7i+l+CQFPjpEDSe0XPjSs1u6YeImR98gKGm6AtJ+AI9baC8hI3AZ/UoRX/JWX+k8C3gZB8yQEemiZmQYn7sbhPf4BsRQlYwkF7pmCyRjGvdX1e2sBAvXPjr2H97hhNyJGAY7gbhWkJ7B8xAdm3QQQgCuZBXDFIww6lbq8LzTU/b8whdmdUXj5dUZqJ+pHiyZqSso4daDKol3hLH9+2nC4+2Brh1LxLNR/Ft+hu+4Vyyouz9eEA74LN/D/pTLvqTvGoOtC9ouLPYZv1uZzuQZbg1Ylz2LjwqkNhZIJch8ltB3Ew1anhn0s2p4MNJeAu+1PpouxF8N5ukYR+TskxN9TMplVEf99v3IM+5b/iANvDVpFdpWsmOg99lLOUCmoCKeZWSrDBKwGk4DWCe62HHJ3zkHYrp08kkwzq4CWH/I+02E0F4N76cJMh741vi7rSBfmlBHC9a1uHE/KeDdh3pA2FQp4Ap1GTO2g64FNbBmmW0m5Puj1tm5LuP5WIBUjrDTKJVM1Gku7MXo8eNw5WTTdFt9jsnn4eSLb93AFXnS9lkM8FUjkaunP5Y3OM6X3XmcSVvv/sDhhfrVKCraswMkI9LUcM+TOfjU2q14JXG0+e4+fUmDHgQtesg==
X-Forefront-Antispam-Report:
	CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230031)(4636009)(376002)(39860400002)(396003)(136003)(346002)(230922051799003)(64100799003)(82310400011)(1800799012)(186009)(451199024)(36840700001)(40470700004)(46966006)(36860700001)(47076005)(4326008)(8936002)(8676002)(81166007)(36756003)(356005)(41300700001)(2906002)(86362001)(82740400003)(44832011)(5660300002)(26005)(40480700001)(40460700003)(1076003)(426003)(336012)(478600001)(6666004)(83380400001)(2616005)(54906003)(316002)(6916009)(70206006)(70586007)(36900700001);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 Jan 2024 12:06:52.0937
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: b8b1c237-1059-4f2c-f5e7-08dc181df4ee
X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com]
X-MS-Exchange-CrossTenant-AuthSource:
	SJ5PEPF000001CD.namprd05.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH3PR12MB8548

At the moment, trying to run xencov read/reset (calling SYSCTL_coverage_op
under the hood) results in a crash. This is due to an attempt to
access code in the .init.* sections (libfdt for Arm and libelf for x86)
that are stripped after boot. Normally, the build system compiles any
*.init.o file without COV_FLAGS. However, these two libraries are
handled differently as sections will be renamed to init after linking.

This worked until e321576f4047 ("xen/build: start using if_changed")
that added lib{fdt,elf}-temp.o to extra-y. Any file listed there without
*.init.o suffix will be part of non-init-objects for which COV_FLAGS
will be appended. In such case, the solution is to add a file to nocov-y.

Also, for libfdt, append to nocov-y only if CONFIG_OVERLAY_DTB is not
set. Otherwise, there is no section renaming and we should be able to
run the coverage.

Fixes: e321576f4047 ("xen/build: start using if_changed")
Signed-off-by: Michal Orzel <michal.orzel@amd.com>
---
 xen/common/libelf/Makefile | 2 +-
 xen/common/libfdt/Makefile | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/xen/common/libelf/Makefile b/xen/common/libelf/Makefile
index 8a4522e4e141..f618f70d5c8e 100644
--- a/xen/common/libelf/Makefile
+++ b/xen/common/libelf/Makefile
@@ -1,5 +1,5 @@
 obj-bin-y := libelf.o
-nocov-y += libelf.o
+nocov-y += libelf.o libelf-temp.o
 libelf-objs := libelf-tools.o libelf-loader.o libelf-dominfo.o
 
 SECTIONS := text data $(SPECIAL_DATA_SECTIONS)
diff --git a/xen/common/libfdt/Makefile b/xen/common/libfdt/Makefile
index d50487aa6e32..fb0d8a48eee2 100644
--- a/xen/common/libfdt/Makefile
+++ b/xen/common/libfdt/Makefile
@@ -5,10 +5,10 @@ SECTIONS := text data $(SPECIAL_DATA_SECTIONS)
 # For CONFIG_OVERLAY_DTB, libfdt functionalities will be needed during runtime.
 ifneq ($(CONFIG_OVERLAY_DTB),y)
 OBJCOPYFLAGS := $(foreach s,$(SECTIONS),--rename-section .$(s)=.init.$(s))
+nocov-y += libfdt.o libfdt-temp.o
 endif
 
 obj-y += libfdt.o
-nocov-y += libfdt.o
 
 CFLAGS-y += -I$(srctree)/include/xen/libfdt/
 
-- 
2.25.1



From xen-devel-bounces@lists.xenproject.org Thu Jan 18 12:41:45 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 18 Jan 2024 12:41:45 +0000
Received: from list by lists.xenproject.org with outflank-mailman.668747.1041144 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQRi6-0005DK-EK; Thu, 18 Jan 2024 12:41:30 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 668747.1041144; Thu, 18 Jan 2024 12:41:30 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQRi6-0005DD-A0; Thu, 18 Jan 2024 12:41:30 +0000
Received: by outflank-mailman (input) for mailman id 668747;
 Thu, 18 Jan 2024 12:41:29 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=aSQR=I4=cloud.com=roger.pau@srs-se1.protection.inumbo.net>)
 id 1rQRi5-0005D7-Ly
 for xen-devel@lists.xenproject.org; Thu, 18 Jan 2024 12:41:29 +0000
Received: from mail-wm1-x330.google.com (mail-wm1-x330.google.com
 [2a00:1450:4864:20::330])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id e5780322-b5fe-11ee-9b0f-b553b5be7939;
 Thu, 18 Jan 2024 13:41:27 +0100 (CET)
Received: by mail-wm1-x330.google.com with SMTP id
 5b1f17b1804b1-40e958cd226so2641075e9.2
 for <xen-devel@lists.xenproject.org>; Thu, 18 Jan 2024 04:41:27 -0800 (PST)
Received: from localhost ([213.195.127.68]) by smtp.gmail.com with ESMTPSA id
 n18-20020a05600c501200b0040e77ce8768sm13785273wmr.16.2024.01.18.04.41.26
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 18 Jan 2024 04:41:26 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: e5780322-b5fe-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1705581687; x=1706186487; darn=lists.xenproject.org;
        h=in-reply-to:content-transfer-encoding:content-disposition
         :mime-version:references:message-id:subject:cc:to:from:date:from:to
         :cc:subject:date:message-id:reply-to;
        bh=NyKHm4vEseI6bXE39i2WxjW1JGBWAtM9iUpd8Fe1nu4=;
        b=q1M5+0u1XDI7GMqm6SXpJg7ZLMSR7c6klpASS7R7G9xHZGfug1gCjHgANBbXCl9JIJ
         Ri8s88/oFW+nGIHlBEmYXRvAvkO6W6kfPnQiVTdaNGYEP5ZU3cGOXShgj53tOgsAkb0x
         /8ngMVGoTRqYNJgA1byq1GwFD/rWCup/li+9I=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705581687; x=1706186487;
        h=in-reply-to:content-transfer-encoding:content-disposition
         :mime-version:references:message-id:subject:cc:to:from:date
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=NyKHm4vEseI6bXE39i2WxjW1JGBWAtM9iUpd8Fe1nu4=;
        b=aUxSEpV5wo/B+wOT+XTcPAs4FIC33yE5SQ4JE5HXaH9mMHllVeX/2UBzsQDeRNA3VS
         lKeNB7HUqKf5I5moKbLjUxSVm3OU4ek29DhhO0hsCQk1vY7juXfUl1cT7c2T6TDQu0PM
         Vd9mTz7xxVTUewEtHXjepctssDeoKWxN6CH546Z3jcs9UjckTg5xZXAgAY2z2xPXUDzy
         oObYeknkSRm6F0eEMqOsJymg/W74uNf1vPTILM6f+x7BGMQ9ZesUKPRJNw6+a2za6zeA
         do0mzlc8EVe1F70ghgOnh4UJ4oZLF7YbA5Gq9KIC/5hpjOMk8u30u9hfZsjuqjnd35J0
         RB7Q==
X-Gm-Message-State: AOJu0Yw3Wi/K5SP5FsYHVfDOYvRfn4AYNV+K+Tu7nHAFy6FEpjlEqAR2
	agRp2Su192KXiKWIDYGbBc/atrBWC/nG8lpgSUIbSSfkc9QsyvREcsc1QT2zyeM=
X-Google-Smtp-Source: AGHT+IEjrh3srcXY/MuTik7prrgf7Fjpi/UGfUlatgBw4/imkMl5uXjqpWLCMyklnbT+QPlgELktRQ==
X-Received: by 2002:a05:600c:6b13:b0:40e:5313:e822 with SMTP id jn19-20020a05600c6b1300b0040e5313e822mr472684wmb.174.1705581686726;
        Thu, 18 Jan 2024 04:41:26 -0800 (PST)
Date: Thu, 18 Jan 2024 13:41:25 +0100
From: Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
To: Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
Cc: Patrick Plenefisch <simonpatp@gmail.com>,
	Jan Beulich <jbeulich@suse.com>, xen-devel@lists.xenproject.org,
	Juergen Gross <jgross@suse.com>, Huang Rui <ray.huang@amd.com>,
	Jiqian Chen <Jiqian.Chen@amd.com>
Subject: ACPI VFCT table too short on PVH dom0 (was: Re: E820 memory
 allocation issue on Threadripper platforms)
Message-ID: <ZakcdfS3UwEb0oh2@macbook>
References: <1708c3d7-662a-44bc-b9b3-4ab9f8642d7b@suse.com>
 <dcaf9d8d-ad5a-4714-936b-79ed0e587f9d@suse.com>
 <CAOCpoWeowZPuQTeBp9nu8p8CDtE=u++wN_UqRoABZtB57D50Qw@mail.gmail.com>
 <ac742d12-ec91-4215-bb42-82a145924b4f@suse.com>
 <CAOCpoWfQmkhN3hms1xuotSUZzVzR99i9cNGGU2r=yD5PjysMiQ@mail.gmail.com>
 <fa23a590-5869-4e11-8998-1d03742c5919@suse.com>
 <CAOCpoWf4CMkCWx8uR2NbFrZrKSS78wj1-hFsAUqsjCfsmqooVA@mail.gmail.com>
 <Zajg1O7Z52VTBq31@macbook>
 <CAOCpoWeO9h7b_CjJb9jtKaEUVv_=XDSVkr55QSg3ArFc4n8G2w@mail.gmail.com>
 <ZajzcpArQYQhdj3T@macbook>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <ZajzcpArQYQhdj3T@macbook>

On Thu, Jan 18, 2024 at 10:46:26AM +0100, Roger Pau Monné wrote:
> On Thu, Jan 18, 2024 at 03:34:13AM -0500, Patrick Plenefisch wrote:
> > On Thu, Jan 18, 2024 at 3:27 AM Roger Pau Monné <roger.pau@citrix.com>
> > wrote:
> > 
> > > On Thu, Jan 18, 2024 at 01:23:56AM -0500, Patrick Plenefisch wrote:
> > > > On Wed, Jan 17, 2024 at 3:46 AM Jan Beulich <jbeulich@suse.com> wrote:
> > > >
> > > > > On 17.01.2024 07:12, Patrick Plenefisch wrote:
> > > > > > On Tue, Jan 16, 2024 at 4:33 AM Jan Beulich <jbeulich@suse.com>
> > > wrote:
> > > > > >
> > > > > >> On 16.01.2024 01:22, Patrick Plenefisch wrote:
> > > > For the two logs that actually boooted (linuxoffset), I truncated them
> > > > during pcie initialization, but they did go all the way to give me a
> > > login
> > > > screen
> > >
> > > I'm not seeing any Linux output on the provided logs, they just seem
> > > to contain Xen output ...
> > >
> > > > >
> > > > > > As someone who hasn't built a kernel in over a decade, should I
> > > figure
> > > > > out
> > > > > > how to do a kernel build with CONFIG_PHYSICAL_START=0x2000000 and
> > > report
> > > > > > back?
> > > > >
> > > > > That was largely a suggestion to perhaps allow you to gain some
> > > > > workable setup. It would be of interest to us largely for completeness.
> > > > >
> > > >
> > > > Typo aside, setting the boot to 2MiB works! It works better for PV, while
> > > > PVH has some graphics card issues, namely that I have to interact over
> > > > serial and dmesg has some concerning radeon errors
> > >
> > > ... and so the radeon error mentioned here seem to be missing.  IIRC
> > > for radeon cards to work on PVH dom0 you will need an hypervisor with
> > > the following commit:
> > >
> > >
> > > https://xenbits.xen.org/gitweb/?p=xen.git;a=commit;h=f69c5991595c92756860d038346569464c1b9ea1
> > >
> > > (included in 4.18)
> > >
> > 
> > hmm.. that would mean I was running with them as I used 4.18 for that run
> > 
> > 
> > >
> > > There where also some changes not long ago in order to propagate the
> > > video console information from Xen into dom0, those are also included
> > > in 4.18, but I don't recall in which Linux version they landed.
> > >
> > > Anyway, would be good if you can provide the full Xen + Linux logs
> > > when the radeon issue happens.
> > >
> > 
> > Luckily linux logs are mercifully short. Append this to
> > xen-4.18p_grub_linuxoffset_pvh.log:
> > 
> > [    0.778770] i2c_designware AMDI0010:00: Unknown Synopsys component type:
> > 0xffffffff
> > [    0.914664] amd_gpio AMDI0030:00: error -EINVAL: IRQ index 0 not found
> > [    0.930112] xen_mcelog: Failed to get CPU numbers
> > [    8.324907] ccp 0000:06:00.5: pcim_iomap_regions failed (-16)
> > [    8.338604] sp5100-tco sp5100-tco: Watchdog hardware is disabled
> > [    8.909366] [drm:radeon_get_bios [radeon]] *ERROR* ACPI VFCT table
> > present but broken (too short #2)
> 
> Hm, interesting.  I will have to add more debug in order to check
> what's going on here, seems like the table is corrupted somehow.

>From that environment (PVH dom0) can you see if you can dump the
contents of the VFCT table?  I don't have a system with that table, so
not sure if this will work (because iasl is unlikely to know how to
decode it):

# acpidump -n VFCT -o table.dump
# acpixtract -a table.dump
# iasl -d vfct.dat
# cat vfct.dsl

Would be good if you can compare the output from what you get on a PV
dom0 or when running native Linux.

I'm also adding some AMD folks, as IIRC they did some fixes to Linux
in order to get some AMD graphics cards running on a PVH dom0, maybe
they can provide some additional input.

Thanks, Roger.


From xen-devel-bounces@lists.xenproject.org Thu Jan 18 13:12:44 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 18 Jan 2024 13:12:44 +0000
Received: from list by lists.xenproject.org with outflank-mailman.668752.1041153 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQSC2-00026p-P0; Thu, 18 Jan 2024 13:12:26 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 668752.1041153; Thu, 18 Jan 2024 13:12:26 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQSC2-00026i-Ld; Thu, 18 Jan 2024 13:12:26 +0000
Received: by outflank-mailman (input) for mailman id 668752;
 Thu, 18 Jan 2024 13:12:25 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=2mYN=I4=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rQSC1-00026c-8b
 for xen-devel@lists.xenproject.org; Thu, 18 Jan 2024 13:12:25 +0000
Received: from mail-wr1-x434.google.com (mail-wr1-x434.google.com
 [2a00:1450:4864:20::434])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 38002fcd-b603-11ee-98f2-6d05b1d4d9a1;
 Thu, 18 Jan 2024 14:12:23 +0100 (CET)
Received: by mail-wr1-x434.google.com with SMTP id
 ffacd0b85a97d-337d32cd9c1so423703f8f.2
 for <xen-devel@lists.xenproject.org>; Thu, 18 Jan 2024 05:12:23 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 v9-20020a5d4b09000000b00337bfaa944bsm4024568wrq.54.2024.01.18.05.12.22
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 18 Jan 2024 05:12:22 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 38002fcd-b603-11ee-98f2-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1705583543; x=1706188343; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=GjHSWSmk0B0uNRGjYK9RCGnwBndVB5QFk7WtD3lqen0=;
        b=KP8cbfSi29KH5NwdIWatNgQ+Tbxue6XIoj+d/OmRc6k/aet7m3xa/rzFIyhZjYyFtf
         Nbwr6/gMWhVrtdaQuWEtpCCkOsVV13MW9gsjCMJXwG5udZXzOJSObsWmiPvBdUwsOD2f
         SiNRt7vFaV+g6SGPI0lBdcqWlJklkcBi8O3Pgi6rWUOD7+qlGd5m02GzhddlU8sAadWw
         C2Zp7c0TwHDGvq7F2x72Q+0Plr69NbaWrUR6pWH29yl4C7Q90c7Fhlb/vHDC3GZl/zHK
         QOEho+NrD+oHH+wW/hYk78HQmSD3NVyFsy+j+JJwZIaLq1byKyIWIikq9/QLJ6lAcn3C
         Ozmg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705583543; x=1706188343;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=GjHSWSmk0B0uNRGjYK9RCGnwBndVB5QFk7WtD3lqen0=;
        b=vgtffJ2vRPpF5H6pTySsabRyXivFHAOWeI2T2rsfcQmqVYjDlbDy1XO2s3YB5oqyJH
         3rP27itw/NXZBd1BLMjISRci2748hFGxKy1F71GHScRIuMcudzW9SvjSDUXC9WUYxijg
         lN8stHskABwOwHHrXanc5utK55VbUsqX/0jZxpDpICAGOB+T60Iv1+uL2q6oQ9LxO3f+
         hTm6jTSrwR8/YlMm9gS1a6OmgreDT3ufhIt3rcB89QkXYwEa1aIP3hO3gYFtMPSrncJS
         xLnYPNxOvsn44JKdB/aZBeubjdTtJRC5apoWtlr5ZD2J61RG4dQJjD9w119/OW2LCXrH
         Edxg==
X-Gm-Message-State: AOJu0YwpLYfSK4tORZGHHPtit1mvfRPB9xmfDxVQ5p6NISCBB5Cp+6+Y
	+4jLooFJoeNNMjL70qtJHtDjrLiUCupdtAjdVPA/wOorgKBG5mxmlTbknB2nhA==
X-Google-Smtp-Source: AGHT+IGn+jGkfS4AK5R/YKe3bcAcPj9tinbQFxwC4Tml0Fo59uPxzmaY5O0KNg0gW6xTOwKHxiBGfg==
X-Received: by 2002:a5d:5147:0:b0:337:c55f:66d5 with SMTP id u7-20020a5d5147000000b00337c55f66d5mr442679wrt.87.1705583543202;
        Thu, 18 Jan 2024 05:12:23 -0800 (PST)
Message-ID: <8057ae41-43b5-4469-b691-4e7f16b8dd4d@suse.com>
Date: Thu, 18 Jan 2024 14:12:21 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] coverage: filter out lib{fdt,elf}-temp.o
Content-Language: en-US
To: Michal Orzel <michal.orzel@amd.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 George Dunlap <george.dunlap@citrix.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>,
 Javi Merino <javi.merino@cloud.com>, xen-devel@lists.xenproject.org
References: <20240118120641.24824-1-michal.orzel@amd.com>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <20240118120641.24824-1-michal.orzel@amd.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 18.01.2024 13:06, Michal Orzel wrote:
> At the moment, trying to run xencov read/reset (calling SYSCTL_coverage_op
> under the hood) results in a crash. This is due to an attempt to
> access code in the .init.* sections (libfdt for Arm and libelf for x86)
> that are stripped after boot. Normally, the build system compiles any
> *.init.o file without COV_FLAGS. However, these two libraries are
> handled differently as sections will be renamed to init after linking.
> 
> This worked until e321576f4047 ("xen/build: start using if_changed")
> that added lib{fdt,elf}-temp.o to extra-y. Any file listed there without
> *.init.o suffix will be part of non-init-objects for which COV_FLAGS
> will be appended.

While this is true, aiui COV_FLAGS would be empty for anything listed
in nocov-y and all of the prerequisites of those objects (iirc target-
specific variable settings propagate to prerequisites). Therefore ...

> In such case, the solution is to add a file to nocov-y.

... libelf.o / libfdt.o already being listed there ought to suffice.
Alternatively listing only libelf-temp.o / libfdt-temp.o ought to
suffice as well.

Since you apparently observed things not working, I must be missing
something.

Jan


From xen-devel-bounces@lists.xenproject.org Thu Jan 18 13:43:21 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 18 Jan 2024 13:43:21 +0000
Received: from list by lists.xenproject.org with outflank-mailman.668756.1041163 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQSfZ-0007wW-Up; Thu, 18 Jan 2024 13:42:57 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 668756.1041163; Thu, 18 Jan 2024 13:42:57 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQSfZ-0007wP-RN; Thu, 18 Jan 2024 13:42:57 +0000
Received: by outflank-mailman (input) for mailman id 668756;
 Thu, 18 Jan 2024 13:42:56 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=bYS5=I4=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1rQSfY-0007wJ-El
 for xen-devel@lists.xenproject.org; Thu, 18 Jan 2024 13:42:56 +0000
Received: from mail-wm1-x32c.google.com (mail-wm1-x32c.google.com
 [2a00:1450:4864:20::32c])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 7ad64dc2-b607-11ee-9b0f-b553b5be7939;
 Thu, 18 Jan 2024 14:42:53 +0100 (CET)
Received: by mail-wm1-x32c.google.com with SMTP id
 5b1f17b1804b1-40e8d3b32eeso14754035e9.1
 for <xen-devel@lists.xenproject.org>; Thu, 18 Jan 2024 05:42:53 -0800 (PST)
Received: from [10.80.67.30] (default-46-102-197-194.interdsl.co.uk.
 [46.102.197.194]) by smtp.gmail.com with ESMTPSA id
 ay39-20020a05600c1e2700b0040e92521b24sm1857946wmb.30.2024.01.18.05.42.52
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 18 Jan 2024 05:42:53 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 7ad64dc2-b607-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1705585373; x=1706190173; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=3ZaiCVBtnocRL75ohOQsDLYqVZUERIZS0hZjZfRrlro=;
        b=v8tTxpxC8rOLHZoGeWt8pxjdXnHI5q1bbP98O67URN4/8RsoqYrPWKbLaGCL0tv1aA
         0odQqVnSwWSg5/9MEiU0ehFT0QJ6rDOQWVIC6PT0niobEB5dZEDZlQW/RAa7VxtneYUG
         T/vpG0qX69+T0cACWv++fdHCxfq57Xo6qSzno=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705585373; x=1706190173;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=3ZaiCVBtnocRL75ohOQsDLYqVZUERIZS0hZjZfRrlro=;
        b=RuI9kWLT0dTgP8sYD/20LK3b9Z1883FXTWwplkrprQQbAEZrdYUXdgyj+JpFNWhkLi
         tFCBmHiINc7CsZ3nNHKl9A5tg9pq826c5fnsmYTms35aYqP81k5vx/Jhu1l8fHw2ZlBZ
         HqRZx6kTXXik9GjSJbQd618pFnlp8UaXKzkOq074UUelYu/CS1ygimCCXI1CeLfHH3y4
         FJYJnOOFu18yq4EdnE8zzoReKk+joEzLPlH+0WmAJIED7UzLxIPQbjeXPGJPgez+SUPD
         xb5cH9IlrFk7tQkeEMq+pRDSFC9/2dA9q+D0C/gTUEvjasiOZkSpZOvPiA81gKdHVUGX
         Chkg==
X-Gm-Message-State: AOJu0YywOdtp1FbrPTXKKJ8LcIhnoch/+VlNcpHvdAn8YG2+ZiTphCNY
	FaKGCa4Va0TnFLgK0dyAduoTrSvZO8v7oORe93WLIxxDqJYSS9vMDbok3gBrktQ=
X-Google-Smtp-Source: AGHT+IFtYJruI5V28zc5ybi5NPiItcgo22Scq76b4vpfgYUUgvbbGBDaT8jx7y+Eh2yJdyxDUc7SUQ==
X-Received: by 2002:a7b:c8da:0:b0:40e:54f1:5d39 with SMTP id f26-20020a7bc8da000000b0040e54f15d39mr517205wml.117.1705585373269;
        Thu, 18 Jan 2024 05:42:53 -0800 (PST)
Message-ID: <05537bed-8041-42f5-8747-9a078d42d068@citrix.com>
Date: Thu, 18 Jan 2024 13:42:52 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] coverage: filter out lib{fdt,elf}-temp.o
Content-Language: en-GB
To: Michal Orzel <michal.orzel@amd.com>, xen-devel@lists.xenproject.org
Cc: George Dunlap <george.dunlap@citrix.com>, Jan Beulich
 <jbeulich@suse.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>,
 Javi Merino <javi.merino@cloud.com>
References: <20240118120641.24824-1-michal.orzel@amd.com>
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 xsFNBFLhNn8BEADVhE+Hb8i0GV6mihnnr/uiQQdPF8kUoFzCOPXkf7jQ5sLYeJa0cQi6Penp
 VtiFYznTairnVsN5J+ujSTIb+OlMSJUWV4opS7WVNnxHbFTPYZVQ3erv7NKc2iVizCRZ2Kxn
 srM1oPXWRic8BIAdYOKOloF2300SL/bIpeD+x7h3w9B/qez7nOin5NzkxgFoaUeIal12pXSR
 Q354FKFoy6Vh96gc4VRqte3jw8mPuJQpfws+Pb+swvSf/i1q1+1I4jsRQQh2m6OTADHIqg2E
 ofTYAEh7R5HfPx0EXoEDMdRjOeKn8+vvkAwhviWXTHlG3R1QkbE5M/oywnZ83udJmi+lxjJ5
 YhQ5IzomvJ16H0Bq+TLyVLO/VRksp1VR9HxCzItLNCS8PdpYYz5TC204ViycobYU65WMpzWe
 LFAGn8jSS25XIpqv0Y9k87dLbctKKA14Ifw2kq5OIVu2FuX+3i446JOa2vpCI9GcjCzi3oHV
 e00bzYiHMIl0FICrNJU0Kjho8pdo0m2uxkn6SYEpogAy9pnatUlO+erL4LqFUO7GXSdBRbw5
 gNt25XTLdSFuZtMxkY3tq8MFss5QnjhehCVPEpE6y9ZjI4XB8ad1G4oBHVGK5LMsvg22PfMJ
 ISWFSHoF/B5+lHkCKWkFxZ0gZn33ju5n6/FOdEx4B8cMJt+cWwARAQABzSlBbmRyZXcgQ29v
 cGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPsLBegQTAQgAJAIbAwULCQgHAwUVCgkI
 CwUWAgMBAAIeAQIXgAUCWKD95wIZAQAKCRBlw/kGpdefoHbdD/9AIoR3k6fKl+RFiFpyAhvO
 59ttDFI7nIAnlYngev2XUR3acFElJATHSDO0ju+hqWqAb8kVijXLops0gOfqt3VPZq9cuHlh
 IMDquatGLzAadfFx2eQYIYT+FYuMoPZy/aTUazmJIDVxP7L383grjIkn+7tAv+qeDfE+txL4
 SAm1UHNvmdfgL2/lcmL3xRh7sub3nJilM93RWX1Pe5LBSDXO45uzCGEdst6uSlzYR/MEr+5Z
 JQQ32JV64zwvf/aKaagSQSQMYNX9JFgfZ3TKWC1KJQbX5ssoX/5hNLqxMcZV3TN7kU8I3kjK
 mPec9+1nECOjjJSO/h4P0sBZyIUGfguwzhEeGf4sMCuSEM4xjCnwiBwftR17sr0spYcOpqET
 ZGcAmyYcNjy6CYadNCnfR40vhhWuCfNCBzWnUW0lFoo12wb0YnzoOLjvfD6OL3JjIUJNOmJy
 RCsJ5IA/Iz33RhSVRmROu+TztwuThClw63g7+hoyewv7BemKyuU6FTVhjjW+XUWmS/FzknSi
 dAG+insr0746cTPpSkGl3KAXeWDGJzve7/SBBfyznWCMGaf8E2P1oOdIZRxHgWj0zNr1+ooF
 /PzgLPiCI4OMUttTlEKChgbUTQ+5o0P080JojqfXwbPAyumbaYcQNiH1/xYbJdOFSiBv9rpt
 TQTBLzDKXok86M7BTQRS4TZ/ARAAkgqudHsp+hd82UVkvgnlqZjzz2vyrYfz7bkPtXaGb9H4
 Rfo7mQsEQavEBdWWjbga6eMnDqtu+FC+qeTGYebToxEyp2lKDSoAsvt8w82tIlP/EbmRbDVn
 7bhjBlfRcFjVYw8uVDPptT0TV47vpoCVkTwcyb6OltJrvg/QzV9f07DJswuda1JH3/qvYu0p
 vjPnYvCq4NsqY2XSdAJ02HrdYPFtNyPEntu1n1KK+gJrstjtw7KsZ4ygXYrsm/oCBiVW/OgU
 g/XIlGErkrxe4vQvJyVwg6YH653YTX5hLLUEL1NS4TCo47RP+wi6y+TnuAL36UtK/uFyEuPy
 wwrDVcC4cIFhYSfsO0BumEI65yu7a8aHbGfq2lW251UcoU48Z27ZUUZd2Dr6O/n8poQHbaTd
 6bJJSjzGGHZVbRP9UQ3lkmkmc0+XCHmj5WhwNNYjgbbmML7y0fsJT5RgvefAIFfHBg7fTY/i
 kBEimoUsTEQz+N4hbKwo1hULfVxDJStE4sbPhjbsPCrlXf6W9CxSyQ0qmZ2bXsLQYRj2xqd1
 bpA+1o1j2N4/au1R/uSiUFjewJdT/LX1EklKDcQwpk06Af/N7VZtSfEJeRV04unbsKVXWZAk
 uAJyDDKN99ziC0Wz5kcPyVD1HNf8bgaqGDzrv3TfYjwqayRFcMf7xJaL9xXedMcAEQEAAcLB
 XwQYAQgACQUCUuE2fwIbDAAKCRBlw/kGpdefoG4XEACD1Qf/er8EA7g23HMxYWd3FXHThrVQ
 HgiGdk5Yh632vjOm9L4sd/GCEACVQKjsu98e8o3ysitFlznEns5EAAXEbITrgKWXDDUWGYxd
 pnjj2u+GkVdsOAGk0kxczX6s+VRBhpbBI2PWnOsRJgU2n10PZ3mZD4Xu9kU2IXYmuW+e5KCA
 vTArRUdCrAtIa1k01sPipPPw6dfxx2e5asy21YOytzxuWFfJTGnVxZZSCyLUO83sh6OZhJkk
 b9rxL9wPmpN/t2IPaEKoAc0FTQZS36wAMOXkBh24PQ9gaLJvfPKpNzGD8XWR5HHF0NLIJhgg
 4ZlEXQ2fVp3XrtocHqhu4UZR4koCijgB8sB7Tb0GCpwK+C4UePdFLfhKyRdSXuvY3AHJd4CP
 4JzW0Bzq/WXY3XMOzUTYApGQpnUpdOmuQSfpV9MQO+/jo7r6yPbxT7CwRS5dcQPzUiuHLK9i
 nvjREdh84qycnx0/6dDroYhp0DFv4udxuAvt1h4wGwTPRQZerSm4xaYegEFusyhbZrI0U9tJ
 B8WrhBLXDiYlyJT6zOV2yZFuW47VrLsjYnHwn27hmxTC/7tvG3euCklmkn9Sl9IAKFu29RSo
 d5bD8kMSCYsTqtTfT6W4A3qHGvIDta3ptLYpIAOD2sY3GYq2nf3Bbzx81wZK14JdDDHUX2Rs
 6+ahAA==
In-Reply-To: <20240118120641.24824-1-michal.orzel@amd.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 18/01/2024 12:06 pm, Michal Orzel wrote:
> At the moment, trying to run xencov read/reset (calling SYSCTL_coverage_op
> under the hood) results in a crash. This is due to an attempt to
> access code in the .init.* sections

Minor point, but for coverage it's only data.  It's the per-basic-block
counters.

~Andrew


From xen-devel-bounces@lists.xenproject.org Thu Jan 18 13:49:12 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 18 Jan 2024 13:49:12 +0000
Received: from list by lists.xenproject.org with outflank-mailman.668761.1041172 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQSlX-0000rJ-Kh; Thu, 18 Jan 2024 13:49:07 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 668761.1041172; Thu, 18 Jan 2024 13:49:07 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQSlX-0000rC-Hp; Thu, 18 Jan 2024 13:49:07 +0000
Received: by outflank-mailman (input) for mailman id 668761;
 Thu, 18 Jan 2024 13:49:06 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=YzO2=I4=cloud.com=kelly.choi@srs-se1.protection.inumbo.net>)
 id 1rQSlW-0000r6-BF
 for xen-devel@lists.xenproject.org; Thu, 18 Jan 2024 13:49:06 +0000
Received: from mail-ej1-x629.google.com (mail-ej1-x629.google.com
 [2a00:1450:4864:20::629])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 3b723893-b608-11ee-98f2-6d05b1d4d9a1;
 Thu, 18 Jan 2024 14:48:17 +0100 (CET)
Received: by mail-ej1-x629.google.com with SMTP id
 a640c23a62f3a-a28a997f3dfso921490566b.0
 for <xen-devel@lists.xenproject.org>; Thu, 18 Jan 2024 05:48:16 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 3b723893-b608-11ee-98f2-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1705585696; x=1706190496; darn=lists.xenproject.org;
        h=to:subject:message-id:date:from:in-reply-to:references:mime-version
         :from:to:cc:subject:date:message-id:reply-to;
        bh=j1WRU52iOvdInzP8A1XSNb/3ngHFP6I+/lXdWUhFpDk=;
        b=YwTZdQdT0XBxbQErhdr7BugN1VrJBT539Gp3amCdn8DheKbWFe/A+Mz1CL5pzdwmOS
         kmB2KTi/ADDAloGv+Ywmf1EQMCkUJblVlBB3x+c+ppxVR9GPs7wGsm5A+eEEuY751/3Z
         AFJUolClVtgkjtVx883ndAoYbv9PXagLlmjPk=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705585696; x=1706190496;
        h=to:subject:message-id:date:from:in-reply-to:references:mime-version
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=j1WRU52iOvdInzP8A1XSNb/3ngHFP6I+/lXdWUhFpDk=;
        b=OLN9WuKHeCBhpM2HqSbFRdUURspUBVmO6FWsiLf/6y9iaW0JPMLSQIz3UL1erlzCCV
         Z6dJxsLE9/LoD3VtG4hz8QbxOD5ptlWofbxNDdXwuhlv2VmGywhgKMk65A8ROSDi7r3V
         Kjhl3zqaG5+5xhPUNBu7CHncsHyxuED9fsyj0GASxn4NetjFxXlMTiqEwdLwIthglC7I
         5wxHULhKx2mx0Xm++aZgtkA7HWWSp18prQQbcH6Wo/gQ0Usht6DrDi/Oo3CWEiXfSa3w
         FSa3I4Q+P8kEBm8cFTupHVzd+kCwjPPjg0OqgwPG2NR61y1ffnsVksPXUWwsG6kwbcai
         gXeg==
X-Gm-Message-State: AOJu0YyRCAqjBmUTDRPLE2hCt/j3TWbf20BVF/V2HafjCnHQJukihDHe
	w/vL2N0ZtA5Io0meK6rpTdT7XBVqSK+kkeGp/00RLbw7HPoTqiwzK+UYJgxb8GMZPM6ZbsK6FmQ
	x4SQnaX3fVm9FD3AKaznL3IJvM+BsegEb0A3pNc70ES602Rxs38WlEw==
X-Google-Smtp-Source: AGHT+IGkPKJeU/66fLkO0fR1xotYBFG+WW2Xt4eqWnxTkqwbta37GNXd5ON2bfw+z6qdY8Nwxg6X9ATBw44dLdcw3Fw=
X-Received: by 2002:a17:906:1392:b0:a28:b35d:f240 with SMTP id
 f18-20020a170906139200b00a28b35df240mr599202ejc.10.1705585696086; Thu, 18 Jan
 2024 05:48:16 -0800 (PST)
MIME-Version: 1.0
References: <CAO-mL=zSuaajjj7Ynxfvf9YhV5sR+M=njdxzCXYA9Pty1kw4Gg@mail.gmail.com>
In-Reply-To: <CAO-mL=zSuaajjj7Ynxfvf9YhV5sR+M=njdxzCXYA9Pty1kw4Gg@mail.gmail.com>
From: Kelly Choi <kelly.choi@cloud.com>
Date: Thu, 18 Jan 2024 13:47:40 +0000
Message-ID: <CAO-mL=zVn4ewTK=b7zFR+uuf5hbuZPxYd4XB=ebx8+SACjQ=Ww@mail.gmail.com>
Subject: REMINDER: Community Call today @ 1600 UTC, 18th Jan 2024
To: xen-devel@lists.xenproject.org
Content-Type: multipart/alternative; boundary="0000000000008cb5c5060f389d05"

--0000000000008cb5c5060f389d05
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

Hi all,

A reminder that we have our community call today.
Please find details below on how to join.

Many thanks,
Kelly Choi

Community Manager
Xen Project


---------- Forwarded message ---------
From: Kelly Choi <kelly.choi@cloud.com>
Date: Wed, Jan 3, 2024 at 2:22=E2=80=AFPM
Subject: [ANNOUNCE] Call for agenda items for Community Call @ 1600 UTC,
18th Jan 2024
To: <xen-devel@lists.xenproject.org>


Hi all,

Please add your proposed agenda and name next to any items in this *link
here* <https://cryptpad.fr/pad/#/2/pad/edit/FoIa1svj6GD4rYr-H2DtEn9c/>

If any action items have been resolved, please remove them from the sheet.

*CALL LINK: https://meet.jit.si/XenProjectCommunityCall
<https://www.google.com/url?q=3Dhttps://meet.jit.si/XenProjectCommunityCall=
&sa=3DD&source=3Dcalendar&ust=3D1699196661201312&usg=3DAOvVaw1FcogEsMjFSd1P=
mi7V0cBc>*

*DATE: Postponing till 18th January 2024 to allow everyone on PTO to join *

*TIME: 1600 UTC (4 pm UK time)*
Note the following administrative conventions for the call:

* To allow time to switch between meetings, we plan on starting the
agenda at 16:05 UTC sharp.  Aim to join by 16:03 UTC if possible to allocat=
e
time to sort out technical difficulties.

* If you want to be CC'ed please add or remove yourself from the
sign-up-sheet at
https://cryptpad.fr/pad/#/2/pad/edit/D9vGzihPxxAOe6RFPz0sRCf+/

=3D=3D Dial-in Information =3D=3D
## Meeting time
16:00 - 17:00 British time
Further International meeting times:
https://www.timeanddate.com/worldclock/meetingdetails.html?year=3D2024&mont=
h=3D1&day=3D18&hour=3D16&min=3D0&sec=3D0&p1=3D1234&p2=3D37&p3=3D224&p4=3D17=
9

## Dial in details
https://meet.jit.si/static/dialInInfo.html?room=3DXenProjectCommunityCall

Many thanks,
Kelly Choi

Community Manager
Xen Project

--0000000000008cb5c5060f389d05
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr">Hi all,<div><br></div><div>A reminder that we have our com=
munity call today.</div><div>Please find details below on how to join.</div=
><div><br clear=3D"all"><div><div dir=3D"ltr" class=3D"gmail_signature" dat=
a-smartmail=3D"gmail_signature"><div dir=3D"ltr"><div>Many thanks,</div><di=
v>Kelly Choi</div><div><br></div><div><div style=3D"color:rgb(136,136,136)"=
>Community Manager</div><div style=3D"color:rgb(136,136,136)">Xen Project=
=C2=A0<br></div></div></div></div></div><br><br><div class=3D"gmail_quote">=
<div dir=3D"ltr" class=3D"gmail_attr">---------- Forwarded message --------=
-<br>From: <strong class=3D"gmail_sendername" dir=3D"auto">Kelly Choi</stro=
ng> <span dir=3D"auto">&lt;<a href=3D"mailto:kelly.choi@cloud.com">kelly.ch=
oi@cloud.com</a>&gt;</span><br>Date: Wed, Jan 3, 2024 at 2:22=E2=80=AFPM<br=
>Subject: [ANNOUNCE] Call for agenda items for Community Call @ 1600 UTC, 1=
8th Jan 2024<br>To:  &lt;<a href=3D"mailto:xen-devel@lists.xenproject.org">=
xen-devel@lists.xenproject.org</a>&gt;<br></div><br><br><div dir=3D"ltr">Hi=
 all,<br><p>Please add your proposed agenda and name next to any items in t=
his=C2=A0<a href=3D"https://cryptpad.fr/pad/#/2/pad/edit/FoIa1svj6GD4rYr-H2=
DtEn9c/" target=3D"_blank"><b>link here</b></a>=C2=A0</p><p>If any action i=
tems have been resolved, please remove them from the sheet.=C2=A0</p><p><b>=
<span>CALL</span>=C2=A0LINK:=C2=A0<a href=3D"https://www.google.com/url?q=
=3Dhttps://meet.jit.si/XenProjectCommunityCall&amp;sa=3DD&amp;source=3Dcale=
ndar&amp;ust=3D1699196661201312&amp;usg=3DAOvVaw1FcogEsMjFSd1Pmi7V0cBc" tar=
get=3D"_blank">https://meet.jit.si/XenProjectCommunityCall</a></b></p><p><b=
>DATE: Postponing till 18th January 2024 to allow everyone on PTO to join=
=C2=A0</b></p><p><b>TIME: 1600 UTC (4 pm UK time)</b></p>Note the following=
 administrative conventions for the=C2=A0<span>call</span>:<div><br>* To al=
low time to switch between meetings, we plan on starting the<br>agenda at 1=
6:05 UTC sharp.=C2=A0 Aim to join by 16:03 UTC if possible to allocate<br>t=
ime to sort out technical difficulties.<br><br>* If you want to be CC&#39;e=
d please add or remove yourself from the<br>sign-up-sheet at=C2=A0<a href=
=3D"https://cryptpad.fr/pad/#/2/pad/edit/D9vGzihPxxAOe6RFPz0sRCf+/" rel=3D"=
noreferrer" target=3D"_blank">https://cryptpad.fr/pad/#/2/pad/edit/D9vGzihP=
xxAOe6RFPz0sRCf+/</a><br><br>=3D=3D=C2=A0<span>Dial</span>-in Information =
=3D=3D<br>## Meeting time<br>16:00 - 17:00 British time<br>Further Internat=
ional meeting times:<br><a href=3D"https://www.timeanddate.com/worldclock/m=
eetingdetails.html?year=3D2024&amp;month=3D1&amp;day=3D18&amp;hour=3D16&amp=
;min=3D0&amp;sec=3D0&amp;p1=3D1234&amp;p2=3D37&amp;p3=3D224&amp;p4=3D179" t=
arget=3D"_blank">https://www.timeanddate.com/worldclock/meetingdetails.html=
?year=3D2024&amp;month=3D1&amp;day=3D18&amp;hour=3D16&amp;min=3D0&amp;sec=
=3D0&amp;p1=3D1234&amp;p2=3D37&amp;p3=3D224&amp;p4=3D179</a><br><br>##=C2=
=A0<span>Dial</span>=C2=A0in details<br><a href=3D"https://meet.jit.si/stat=
ic/dialInInfo.html?room=3DXenProjectCommunityCall" rel=3D"noreferrer" targe=
t=3D"_blank">https://meet.jit.si/static/dialInInfo.html?room=3DXenProjectCo=
mmunityCall</a><div></div><br><div><div dir=3D"ltr" class=3D"gmail_signatur=
e" data-smartmail=3D"gmail_signature"><div dir=3D"ltr"><div>Many thanks,</d=
iv><div>Kelly Choi</div><div><br></div><div><div style=3D"color:rgb(136,136=
,136)">Community Manager</div><div style=3D"color:rgb(136,136,136)">Xen Pro=
ject=C2=A0<br></div></div></div></div></div></div></div>
</div></div></div>

--0000000000008cb5c5060f389d05--


From xen-devel-bounces@lists.xenproject.org Thu Jan 18 14:06:40 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 18 Jan 2024 14:06:40 +0000
Received: from list by lists.xenproject.org with outflank-mailman.668768.1041185 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQT2R-0004AW-4q; Thu, 18 Jan 2024 14:06:35 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 668768.1041185; Thu, 18 Jan 2024 14:06:35 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQT2R-0004AP-2I; Thu, 18 Jan 2024 14:06:35 +0000
Received: by outflank-mailman (input) for mailman id 668768;
 Thu, 18 Jan 2024 14:06:33 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>) id 1rQT2P-0004AJ-PM
 for xen-devel@lists.xenproject.org; Thu, 18 Jan 2024 14:06:33 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rQT2O-0006L7-S3; Thu, 18 Jan 2024 14:06:32 +0000
Received: from gw1.octic.net ([88.97.20.152] helo=[10.0.1.240])
 by xenbits.xenproject.org with esmtpsa
 (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rQT2O-000216-Mm; Thu, 18 Jan 2024 14:06:32 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
	s=20200302mail; h=Content-Transfer-Encoding:Content-Type:In-Reply-To:From:
	References:Cc:To:Subject:MIME-Version:Date:Message-ID;
	bh=4FU1svIlywXHLE8iOGpk/EirDNgiGDS7XZJ2gmcHdso=; b=Ak3aT7ITIggO/9v45xNbDkBKRv
	w8sAfrKRgdynY0cqiup+cV4Cz8nXc3P0xmpu56WbT0iMahTeRzhKJS2WOs9HxKhPmY9aRou1LUVTv
	0HmUIDsoxEv6hSyvs7qxV4q/hKcug+Zr2NdOpZMXZUVoU8Dy1XwAtjucMuqRPqNyrnH4=;
Message-ID: <3fd4bafd-75f8-4352-bee2-1fa6dc64a9d5@xen.org>
Date: Thu, 18 Jan 2024 14:06:31 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 1/8] keyhandler: don't pass cpu_user_regs around
Content-Language: en-GB
To: Jan Beulich <jbeulich@suse.com>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 George Dunlap <george.dunlap@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>
References: <1ab231ec-5e3c-4662-8530-2213bc52bb7c@suse.com>
 <dd1c24ec-4054-43e1-b0c9-6c2044b84046@suse.com>
From: Julien Grall <julien@xen.org>
In-Reply-To: <dd1c24ec-4054-43e1-b0c9-6c2044b84046@suse.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

Hi Jan,

On 11/01/2024 07:31, Jan Beulich wrote:
> There are exactly two handlers which care about the registers. Have
> handle_keypress() make the pointer available via a per-CPU variable,
> thus eliminating the need to pass it to all IRQ key handlers, making
> sure that a console-invoked key's handling can still nest inside a
> sysctl-invoked one's.
> 
> Signed-off-by: Jan Beulich <jbeulich@suse.com>

Reviewed-by: Julien Grall <jgrall@amazon.com>

Cheers,

-- 
Julien Grall


From xen-devel-bounces@lists.xenproject.org Thu Jan 18 14:15:12 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 18 Jan 2024 14:15:12 +0000
Received: from list by lists.xenproject.org with outflank-mailman.668771.1041195 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQTAf-0005zg-To; Thu, 18 Jan 2024 14:15:05 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 668771.1041195; Thu, 18 Jan 2024 14:15:05 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQTAf-0005zZ-RL; Thu, 18 Jan 2024 14:15:05 +0000
Received: by outflank-mailman (input) for mailman id 668771;
 Thu, 18 Jan 2024 14:15:04 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>) id 1rQTAe-0005zS-3e
 for xen-devel@lists.xenproject.org; Thu, 18 Jan 2024 14:15:04 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rQTAd-0006Uf-7X; Thu, 18 Jan 2024 14:15:03 +0000
Received: from gw1.octic.net ([88.97.20.152] helo=[10.0.1.240])
 by xenbits.xenproject.org with esmtpsa
 (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rQTAc-0002Tj-VB; Thu, 18 Jan 2024 14:15:03 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
	s=20200302mail; h=Content-Transfer-Encoding:Content-Type:In-Reply-To:From:
	References:Cc:To:Subject:MIME-Version:Date:Message-ID;
	bh=P3BMLaiEes4gycl8hhVDaw6ZbaC598FK70h+O1Dt0mg=; b=maO5XqufwIaodL5XctCApA1fNb
	yeiPRJ19qO5aMmtinWd255kHtMWIpTSubWMyt7GXqq9+uvacfw6tdew5ptfeWi4VKTzQqVcDAiov0
	3VPHzZU69uNsPUWds3cNoO16lDs2HIJBNL0zxSLAS/HQ42idhrJjGDM8nrTC+wxgKLwE=;
Message-ID: <3e3d8c70-146e-446e-8e54-a640b8c7c9e1@xen.org>
Date: Thu, 18 Jan 2024 14:15:01 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 2/8] IRQ: generalize [gs]et_irq_regs()
Content-Language: en-GB
To: Jan Beulich <jbeulich@suse.com>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 George Dunlap <george.dunlap@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Bertrand Marquis <bertrand.marquis@arm.com>,
 Michal Orzel <michal.orzel@amd.com>
References: <1ab231ec-5e3c-4662-8530-2213bc52bb7c@suse.com>
 <4c6d11b0-32dd-4ce3-a157-a848b6fc3154@suse.com>
From: Julien Grall <julien@xen.org>
In-Reply-To: <4c6d11b0-32dd-4ce3-a157-a848b6fc3154@suse.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

Hi Jan,

On 11/01/2024 07:32, Jan Beulich wrote:
> Move functions (and their data) to common code, and invoke the functions
> on Arm as well. This is in preparation of dropping the register
> parameters from handler functions.
> 
> Signed-off-by: Jan Beulich <jbeulich@suse.com>

Reviewed-by: Julien Grall <jgrall@amazon.com>

> ---
> To limit visibility of the per-CPU data item, we may want to consider
> making the functions out-of-line ones (in common/irq.c).
> 
> --- a/xen/arch/arm/irq.c
> +++ b/xen/arch/arm/irq.c
> @@ -221,6 +221,7 @@ void do_IRQ(struct cpu_user_regs *regs,
>   {
>       struct irq_desc *desc = irq_to_desc(irq);
>       struct irqaction *action;
> +    struct cpu_user_regs *old_regs = set_irq_regs(regs);
>   
>       perfc_incr(irqs);
>   
> @@ -288,6 +289,7 @@ out:
>   out_no_end:
>       spin_unlock(&desc->lock);
>       irq_exit();
> +    set_irq_regs(old_regs);
>   }

[...]

> +/*
> + * Per-cpu interrupted context register state - the top-most interrupt frame
> + * on the stack.
> + */
> +DECLARE_PER_CPU(struct cpu_user_regs *, irq_regs);
> +
> +static inline struct cpu_user_regs *get_irq_regs(void)
> +{
> +	return this_cpu(irq_regs);
> +}
> +
> +static inline struct cpu_user_regs *set_irq_regs(struct cpu_user_regs *new_regs)
> +{
> +	struct cpu_user_regs *old_regs, **pp_regs = &this_cpu(irq_regs);
> +
> +	old_regs = *pp_regs;
> +	*pp_regs = new_regs;

NIT: As you move the code, can you add a newline before the return?

> +	return old_regs;
> +}
> +
>   struct domain;
>   struct vcpu;

Cheers,

-- 
Julien Grall


From xen-devel-bounces@lists.xenproject.org Thu Jan 18 14:17:40 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 18 Jan 2024 14:17:40 +0000
Received: from list by lists.xenproject.org with outflank-mailman.668776.1041206 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQTD8-0006rs-CB; Thu, 18 Jan 2024 14:17:38 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 668776.1041206; Thu, 18 Jan 2024 14:17:38 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQTD8-0006rl-8s; Thu, 18 Jan 2024 14:17:38 +0000
Received: by outflank-mailman (input) for mailman id 668776;
 Thu, 18 Jan 2024 14:17:36 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rQTD6-0006rb-S8; Thu, 18 Jan 2024 14:17:36 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rQTD6-0006WQ-PD; Thu, 18 Jan 2024 14:17:36 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rQTD6-0000IJ-76; Thu, 18 Jan 2024 14:17:36 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rQTD6-00048X-6n; Thu, 18 Jan 2024 14:17:36 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=I8qHVA/J9vmnKm39KYM7Stx06aeY4tYbVHR5LP7YOWA=; b=NLjfkNNwJKVDRZCYr1QhmvHB5U
	VHOxzKsNHExLw/780bG7CSvxu/9Fmj/2bxTL1sc0sKrm72pNnA3tos8/gxMldNrVSZehXJBvODq16
	WB0Sfg+ywdPuEeAg57y+sXK8aWFZRfUMGHOecNFJS023+j1hN09g88yark6XrktxzRQg=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184388-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [xen-unstable test] 184388: tolerable FAIL - PUSHED
X-Osstest-Failures:
    xen-unstable:test-armhf-armhf-libvirt-raw:guest-start:fail:heisenbug
    xen-unstable:test-armhf-armhf-libvirt-raw:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-raw:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-amd64-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-amd64-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-qcow2:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-qemuu-nested-amd:debian-hvm-install/l1/l2:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-amd64-xl-qemuu-win7-amd64:windows-install:fail:nonblocking
    xen-unstable:test-amd64-i386-libvirt-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-libvirt:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-pvshim:guest-start:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-xsm:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-credit2:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-credit2:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-libvirt-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-libvirt-xsm:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-thunderx:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-thunderx:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-credit1:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-credit1:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-multivcpu:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-multivcpu:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit2:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit2:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-libvirt-raw:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-libvirt-raw:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-libvirt-raw:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt-vhd:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-vhd:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-vhd:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-vhd:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-vhd:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit1:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit1:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-rtds:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-rtds:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-arndale:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-arndale:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-qcow2:migrate-support-check:fail:nonblocking
X-Osstest-Versions-This:
    xen=730d2637a8e5b98dc8e4e366179b4cedc496b3ad
X-Osstest-Versions-That:
    xen=f3f6c500e2dbd23af77c207e2cf4b496fffa1b0d
From: osstest service owner <osstest-admin@xenproject.org>
Date: Thu, 18 Jan 2024 14:17:36 +0000

flight 184388 xen-unstable real [real]
flight 184391 xen-unstable real-retest [real]
http://logs.test-lab.xenproject.org/osstest/logs/184388/
http://logs.test-lab.xenproject.org/osstest/logs/184391/

Failures :-/ but no regressions.

Tests which are failing intermittently (not blocking):
 test-armhf-armhf-libvirt-raw 13 guest-start         fail pass in 184391-retest

Tests which did not succeed, but are not blocking:
 test-armhf-armhf-libvirt-raw 15 saverestore-support-check fail in 184391 like 184384
 test-armhf-armhf-libvirt-raw 14 migrate-support-check fail in 184391 never pass
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 184384
 test-amd64-amd64-xl-qemut-win7-amd64 19 guest-stop            fail like 184384
 test-amd64-i386-xl-qemuu-win7-amd64 19 guest-stop             fail like 184384
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 184384
 test-amd64-i386-xl-qemut-ws16-amd64 19 guest-stop             fail like 184384
 test-amd64-i386-xl-qemut-win7-amd64 19 guest-stop             fail like 184384
 test-amd64-amd64-xl-qemut-ws16-amd64 19 guest-stop            fail like 184384
 test-armhf-armhf-libvirt-qcow2 15 saverestore-support-check   fail like 184384
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 184384
 test-amd64-i386-xl-qemuu-ws16-amd64 19 guest-stop             fail like 184384
 test-amd64-amd64-xl-qemuu-win7-amd64 12 windows-install       fail like 184384
 test-amd64-i386-libvirt-xsm  15 migrate-support-check        fail   never pass
 test-amd64-i386-libvirt      15 migrate-support-check        fail   never pass
 test-amd64-i386-xl-pvshim    14 guest-start                  fail   never pass
 test-amd64-amd64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl          15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-xsm      15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl          16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-xsm      16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-credit2  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit2  16 saverestore-support-check    fail   never pass
 test-arm64-arm64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-xsm 16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-thunderx 15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-thunderx 16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-credit1  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit1  16 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt     15 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-armhf-armhf-libvirt     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-multivcpu 15 migrate-support-check        fail  never pass
 test-armhf-armhf-xl-multivcpu 16 saverestore-support-check    fail  never pass
 test-armhf-armhf-xl-credit2  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit2  16 saverestore-support-check    fail   never pass
 test-amd64-i386-libvirt-raw  14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 15 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-vhd 14 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-vhd      14 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-vhd      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-vhd      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl          15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-credit1  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit1  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-rtds     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-rtds     16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-arndale  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-arndale  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-qcow2 14 migrate-support-check        fail never pass

version targeted for testing:
 xen                  730d2637a8e5b98dc8e4e366179b4cedc496b3ad
baseline version:
 xen                  f3f6c500e2dbd23af77c207e2cf4b496fffa1b0d

Last test of basis   184384  2024-01-17 10:01:49 Z    1 days
Testing same since   184388  2024-01-18 01:55:55 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Andrew Cooper <andrew.cooper3@citrix.com>
  Jan Beulich <jbeulich@suse.com>
  Roger Pau Monné <roger.pau@citrix.com>

jobs:
 build-amd64-xsm                                              pass    
 build-arm64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64-xtf                                              pass    
 build-amd64                                                  pass    
 build-arm64                                                  pass    
 build-armhf                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-arm64-libvirt                                          pass    
 build-armhf-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-prev                                             pass    
 build-i386-prev                                              pass    
 build-amd64-pvops                                            pass    
 build-arm64-pvops                                            pass    
 build-armhf-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-xtf-amd64-amd64-1                                       pass    
 test-xtf-amd64-amd64-2                                       pass    
 test-xtf-amd64-amd64-3                                       pass    
 test-xtf-amd64-amd64-4                                       pass    
 test-xtf-amd64-amd64-5                                       pass    
 test-amd64-amd64-xl                                          pass    
 test-amd64-coresched-amd64-xl                                pass    
 test-arm64-arm64-xl                                          pass    
 test-armhf-armhf-xl                                          pass    
 test-amd64-i386-xl                                           pass    
 test-amd64-coresched-i386-xl                                 pass    
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm           pass    
 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm            pass    
 test-amd64-amd64-xl-qemut-stubdom-debianhvm-amd64-xsm        pass    
 test-amd64-i386-xl-qemut-stubdom-debianhvm-amd64-xsm         pass    
 test-amd64-amd64-xl-qemut-debianhvm-i386-xsm                 pass    
 test-amd64-i386-xl-qemut-debianhvm-i386-xsm                  pass    
 test-amd64-amd64-xl-qemuu-debianhvm-i386-xsm                 pass    
 test-amd64-i386-xl-qemuu-debianhvm-i386-xsm                  pass    
 test-amd64-amd64-libvirt-xsm                                 pass    
 test-arm64-arm64-libvirt-xsm                                 pass    
 test-amd64-i386-libvirt-xsm                                  pass    
 test-amd64-amd64-xl-xsm                                      pass    
 test-arm64-arm64-xl-xsm                                      pass    
 test-amd64-i386-xl-xsm                                       pass    
 test-amd64-amd64-qemuu-nested-amd                            fail    
 test-amd64-amd64-xl-pvhv2-amd                                pass    
 test-amd64-i386-qemut-rhel6hvm-amd                           pass    
 test-amd64-i386-qemuu-rhel6hvm-amd                           pass    
 test-amd64-amd64-dom0pvh-xl-amd                              pass    
 test-amd64-amd64-xl-qemut-debianhvm-amd64                    pass    
 test-amd64-i386-xl-qemut-debianhvm-amd64                     pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64                    pass    
 test-amd64-i386-xl-qemuu-debianhvm-amd64                     pass    
 test-amd64-i386-freebsd10-amd64                              pass    
 test-amd64-amd64-qemuu-freebsd11-amd64                       pass    
 test-amd64-amd64-qemuu-freebsd12-amd64                       pass    
 test-amd64-amd64-xl-qemuu-ovmf-amd64                         pass    
 test-amd64-i386-xl-qemuu-ovmf-amd64                          pass    
 test-amd64-amd64-xl-qemut-win7-amd64                         fail    
 test-amd64-i386-xl-qemut-win7-amd64                          fail    
 test-amd64-amd64-xl-qemuu-win7-amd64                         fail    
 test-amd64-i386-xl-qemuu-win7-amd64                          fail    
 test-amd64-amd64-xl-qemut-ws16-amd64                         fail    
 test-amd64-i386-xl-qemut-ws16-amd64                          fail    
 test-amd64-amd64-xl-qemuu-ws16-amd64                         fail    
 test-amd64-i386-xl-qemuu-ws16-amd64                          fail    
 test-armhf-armhf-xl-arndale                                  pass    
 test-amd64-amd64-examine-bios                                pass    
 test-amd64-i386-examine-bios                                 pass    
 test-amd64-amd64-xl-credit1                                  pass    
 test-arm64-arm64-xl-credit1                                  pass    
 test-armhf-armhf-xl-credit1                                  pass    
 test-amd64-amd64-xl-credit2                                  pass    
 test-arm64-arm64-xl-credit2                                  pass    
 test-armhf-armhf-xl-credit2                                  pass    
 test-amd64-amd64-xl-qemuu-dmrestrict-amd64-dmrestrict        pass    
 test-amd64-i386-xl-qemuu-dmrestrict-amd64-dmrestrict         pass    
 test-amd64-amd64-examine                                     pass    
 test-arm64-arm64-examine                                     pass    
 test-armhf-armhf-examine                                     pass    
 test-amd64-i386-examine                                      pass    
 test-amd64-i386-freebsd10-i386                               pass    
 test-amd64-amd64-qemuu-nested-intel                          pass    
 test-amd64-amd64-xl-pvhv2-intel                              pass    
 test-amd64-i386-qemut-rhel6hvm-intel                         pass    
 test-amd64-i386-qemuu-rhel6hvm-intel                         pass    
 test-amd64-amd64-dom0pvh-xl-intel                            pass    
 test-amd64-amd64-libvirt                                     pass    
 test-armhf-armhf-libvirt                                     pass    
 test-amd64-i386-libvirt                                      pass    
 test-amd64-amd64-livepatch                                   pass    
 test-amd64-i386-livepatch                                    pass    
 test-amd64-amd64-migrupgrade                                 pass    
 test-amd64-i386-migrupgrade                                  pass    
 test-amd64-amd64-xl-multivcpu                                pass    
 test-armhf-armhf-xl-multivcpu                                pass    
 test-amd64-amd64-pair                                        pass    
 test-amd64-i386-pair                                         pass    
 test-amd64-amd64-libvirt-pair                                pass    
 test-amd64-i386-libvirt-pair                                 pass    
 test-amd64-amd64-xl-pvshim                                   pass    
 test-amd64-i386-xl-pvshim                                    fail    
 test-amd64-amd64-pygrub                                      pass    
 test-armhf-armhf-libvirt-qcow2                               pass    
 test-amd64-amd64-xl-qcow2                                    pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-armhf-armhf-libvirt-raw                                 fail    
 test-amd64-i386-libvirt-raw                                  pass    
 test-amd64-amd64-xl-rtds                                     pass    
 test-armhf-armhf-xl-rtds                                     pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64-shadow             pass    
 test-amd64-i386-xl-qemuu-debianhvm-amd64-shadow              pass    
 test-amd64-amd64-xl-shadow                                   pass    
 test-amd64-i386-xl-shadow                                    pass    
 test-arm64-arm64-xl-thunderx                                 pass    
 test-amd64-amd64-examine-uefi                                pass    
 test-amd64-i386-examine-uefi                                 pass    
 test-amd64-amd64-libvirt-vhd                                 pass    
 test-arm64-arm64-xl-vhd                                      pass    
 test-armhf-armhf-xl-vhd                                      pass    
 test-amd64-i386-xl-vhd                                       pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Pushing revision :

To xenbits.xen.org:/home/xen/git/xen.git
   f3f6c500e2..730d2637a8  730d2637a8e5b98dc8e4e366179b4cedc496b3ad -> master


From xen-devel-bounces@lists.xenproject.org Thu Jan 18 14:18:01 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 18 Jan 2024 14:18:01 +0000
Received: from list by lists.xenproject.org with outflank-mailman.668780.1041215 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQTDV-0007Tn-NW; Thu, 18 Jan 2024 14:18:01 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 668780.1041215; Thu, 18 Jan 2024 14:18:01 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQTDV-0007Tc-L2; Thu, 18 Jan 2024 14:18:01 +0000
Received: by outflank-mailman (input) for mailman id 668780;
 Thu, 18 Jan 2024 14:18:00 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>) id 1rQTDT-0007SM-Us
 for xen-devel@lists.xenproject.org; Thu, 18 Jan 2024 14:17:59 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rQTDT-0006YJ-0J; Thu, 18 Jan 2024 14:17:59 +0000
Received: from gw1.octic.net ([88.97.20.152] helo=[10.0.1.240])
 by xenbits.xenproject.org with esmtpsa
 (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rQTDS-0002WB-Pa; Thu, 18 Jan 2024 14:17:58 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
	s=20200302mail; h=Content-Transfer-Encoding:Content-Type:In-Reply-To:From:
	References:Cc:To:Subject:MIME-Version:Date:Message-ID;
	bh=/sPuEXwnxBJNDk/+GhqmPYJO3OpUikcu8DbyywlhBWU=; b=nUpZ4+rX8D1fMs77Gq0NdQ1mQM
	PPlw5Lp94lT8ZRSBJ9nGKT2DTSSvNuOk9C/7v7VGv3jpBRipQYjPhw0x/mW9j0/RVZsYggtgQGnpn
	xZs+7JNuRokccoBSFCFzMKx3l4gJSwDrswcBhpJBXfNS1S+u1p7rIZuvS6VorDCRlDPY=;
Message-ID: <36628428-3284-47c4-8471-21218c63df07@xen.org>
Date: Thu, 18 Jan 2024 14:17:56 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 6/8] IRQ: drop register parameter from handler functions
Content-Language: en-GB
To: Jan Beulich <jbeulich@suse.com>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 George Dunlap <george.dunlap@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Bertrand Marquis <bertrand.marquis@arm.com>,
 Michal Orzel <michal.orzel@amd.com>, Kevin Tian <kevin.tian@intel.com>
References: <1ab231ec-5e3c-4662-8530-2213bc52bb7c@suse.com>
 <c6926627-aeb6-40dd-a85a-1be0b324bf49@suse.com>
From: Julien Grall <julien@xen.org>
In-Reply-To: <c6926627-aeb6-40dd-a85a-1be0b324bf49@suse.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

Hi Jan,

On 11/01/2024 07:35, Jan Beulich wrote:
> It's simply not needed anymore. Note how Linux made this change many
> years ago already, in 2.6.19 (late 2006, see [1]).
> 
> Signed-off-by: Jan Beulich <jbeulich@suse.com>

This patch will need to be adjusted to compile on Arm. If you 
incorporate the changes from Michal (see the reply to the cover letter), 
then:

Acked-by: Julien Grall <jgrall@amazon.com>

> 
> [1] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit?id=7d12e780e003f93433d49ce78cfedf4b4c52adc5

NIT: I was under the impresion the tags would usually last in a commit. 
So this would go before [1].

Cheers,

-- 
Julien Grall


From xen-devel-bounces@lists.xenproject.org Thu Jan 18 14:27:47 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 18 Jan 2024 14:27:47 +0000
Received: from list by lists.xenproject.org with outflank-mailman.668793.1041242 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQTMr-0001rQ-MO; Thu, 18 Jan 2024 14:27:41 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 668793.1041242; Thu, 18 Jan 2024 14:27:41 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQTMr-0001rD-IP; Thu, 18 Jan 2024 14:27:41 +0000
Received: by outflank-mailman (input) for mailman id 668793;
 Thu, 18 Jan 2024 14:27:40 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=e3ci=I4=minervasys.tech=carlo.nonato@srs-se1.protection.inumbo.net>)
 id 1rQTMq-0001pz-5h
 for xen-devel@lists.xenproject.org; Thu, 18 Jan 2024 14:27:40 +0000
Received: from mail-ed1-x52a.google.com (mail-ed1-x52a.google.com
 [2a00:1450:4864:20::52a])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id ba92a309-b60d-11ee-9b0f-b553b5be7939;
 Thu, 18 Jan 2024 15:27:37 +0100 (CET)
Received: by mail-ed1-x52a.google.com with SMTP id
 4fb4d7f45d1cf-55a035669d5so904240a12.2
 for <xen-devel@lists.xenproject.org>; Thu, 18 Jan 2024 06:27:37 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: ba92a309-b60d-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=minervasys-tech.20230601.gappssmtp.com; s=20230601; t=1705588057; x=1706192857; darn=lists.xenproject.org;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:from:to:cc:subject:date
         :message-id:reply-to;
        bh=/ATOEwHQaRR2PkYYqvStDGMDYP60Rfc3JolItsE76LQ=;
        b=L2rOXzlrnu5CB/KEQeqp4clqDJMyycPLDMWeFdV+0TpP7pGf+7OT5Je1kdyKQ0cX5j
         Ydc5aLC7Q1MdTtJfqLDLPq+gKCVZBqntZvcgB+tMzGuDawBRxZclWnT30HKZxK4RaAQd
         0KK2Jbz2akjc8p9D0Oh0BgCGA6nsdnqlC+d6UoGPGNVoCRNHf5+CylnDXgNPsgpeuJcQ
         uUlKKNyvESOpU34NmOFlxmE5XxdqiWKcLN07nsBKDk/ctBCbHjwTIq4YgJXcRk0jYU+C
         ZO2QEhIR3ob5zhtTOgvGOM8CutIB8LSqQOWTB9E7u927NydXhnZS0AyRO8vnuXqYpxNi
         TTgQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705588057; x=1706192857;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to;
        bh=/ATOEwHQaRR2PkYYqvStDGMDYP60Rfc3JolItsE76LQ=;
        b=t86VBiDwHDET51NWNZE2x6plW4jy/kmdKNB10w+nxlnXOnCoGTMr7Ku0tyj0s8FHfT
         MRBG2cooYRFcuwe+fN8t8/oJYxbQFkUO1zxREw0UK3Jrb3TstBS3JXK2lVCufSZiScy3
         nhBgkTZQiS6TL6oEsBnzn4viFU1n52/z3EMmwAv6zkuHQidgQAe+mu4vTCgVI+bghi4Q
         hReMp2T+zHfEj8GvwW6XfuphS5AxGNIe0/s9GNTuHoiBWQEoliqZM0KdMbk5OBvGS7VT
         cBdzbu/aRh68WsMJ32ZEGU+AC8f4TNJ8nQmzQUFhYLmllKlqdlUiK3IjpeIpqx70qoTV
         tDzw==
X-Gm-Message-State: AOJu0YyegaETyJLwv7isP+D1g2UPjvK+2H5CSlRVf2xpekxejYR9sJcY
	7TLX0O5yb5rcJybLiOxHI+Oy1MPGY9Wy6hssBNQkIFDvcKrpIjliTblTfGkqi6oeXC03x7PwzrO
	VrBWKG9wl4oa4/khHHJdmFO0PsKt6PNTF5YDKVQ==
X-Google-Smtp-Source: AGHT+IH5rADIiODtX1T9cNFKFjTNZBXG1wvHIhFopsvz0sTCJga4NXok6BE2xgqTLVMCv2j0xazwXaXi1UNjAs8aPWI=
X-Received: by 2002:aa7:c989:0:b0:55a:92f:8320 with SMTP id
 c9-20020aa7c989000000b0055a092f8320mr564035edt.4.1705588057295; Thu, 18 Jan
 2024 06:27:37 -0800 (PST)
MIME-Version: 1.0
References: <20240102095138.17933-1-carlo.nonato@minervasys.tech>
 <20240102095138.17933-10-carlo.nonato@minervasys.tech> <7fbe9526-60cf-4844-8b48-58ab69ec1b29@suse.com>
 <101c638c-03ee-471b-a6c8-9c2c10772001@suse.com>
In-Reply-To: <101c638c-03ee-471b-a6c8-9c2c10772001@suse.com>
From: Carlo Nonato <carlo.nonato@minervasys.tech>
Date: Thu, 18 Jan 2024 15:27:26 +0100
Message-ID: <CAG+AhRXctKrh8UcLsygA8aoiVkc8HaOqG-gNOwtmJyjebhDU2A@mail.gmail.com>
Subject: Re: [PATCH v5 09/13] xen: add cache coloring allocator for domains
To: Jan Beulich <jbeulich@suse.com>
Cc: Stefano Stabellini <sstabellini@kernel.org>, Julien Grall <julien@xen.org>, 
	Bertrand Marquis <bertrand.marquis@arm.com>, Michal Orzel <michal.orzel@amd.com>, 
	Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>, Andrew Cooper <andrew.cooper3@citrix.com>, 
	George Dunlap <george.dunlap@citrix.com>, Wei Liu <wl@xen.org>, 
	Marco Solieri <marco.solieri@minervasys.tech>, xen-devel@lists.xenproject.org
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

Hi Jan,

On Tue, Jan 9, 2024 at 11:33=E2=80=AFAM Jan Beulich <jbeulich@suse.com> wro=
te:
>
> On 09.01.2024 11:28, Jan Beulich wrote:
> > On 02.01.2024 10:51, Carlo Nonato wrote:
> >> v5:
> >> - Carlo Nonato as the new author
> >> - the colored allocator balances color usage for each domain and it se=
arches
> >>   linearly only in the number of colors (FIXME removed)
> >
> > While this addresses earlier concerns, meanwhile NUMA work has also
> > been progressing. What's the plan of interaction of coloring with it?
>
> Thinking of interactions - what about static memory? Is coloring incompat=
ible
> with that? If so, should the two features be excluded to both be used at =
the
> same time?

This was done in one of the earlier revisions. Then it was dropped because
we thought that it would have been better to have a binary that supported b=
oth
static memory and coloring. The only checks are done at runtime.

> Jan

Thanks.


From xen-devel-bounces@lists.xenproject.org Thu Jan 18 14:41:00 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 18 Jan 2024 14:41:00 +0000
Received: from list by lists.xenproject.org with outflank-mailman.668799.1041251 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQTZf-0005HO-O6; Thu, 18 Jan 2024 14:40:55 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 668799.1041251; Thu, 18 Jan 2024 14:40:55 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQTZf-0005HH-LY; Thu, 18 Jan 2024 14:40:55 +0000
Received: by outflank-mailman (input) for mailman id 668799;
 Thu, 18 Jan 2024 14:40:54 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=fkFQ=I4=amd.com=Michal.Orzel@srs-se1.protection.inumbo.net>)
 id 1rQTZe-0005HB-F6
 for xen-devel@lists.xenproject.org; Thu, 18 Jan 2024 14:40:54 +0000
Received: from NAM11-CO1-obe.outbound.protection.outlook.com
 (mail-co1nam11on20601.outbound.protection.outlook.com
 [2a01:111:f403:2416::601])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 93426be5-b60f-11ee-9b0f-b553b5be7939;
 Thu, 18 Jan 2024 15:40:51 +0100 (CET)
Received: from SJ0PR13CA0120.namprd13.prod.outlook.com (2603:10b6:a03:2c5::35)
 by MW6PR12MB7072.namprd12.prod.outlook.com (2603:10b6:303:238::13)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7202.24; Thu, 18 Jan
 2024 14:40:47 +0000
Received: from DS1PEPF00017098.namprd05.prod.outlook.com
 (2603:10b6:a03:2c5:cafe::db) by SJ0PR13CA0120.outlook.office365.com
 (2603:10b6:a03:2c5::35) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7228.8 via Frontend
 Transport; Thu, 18 Jan 2024 14:40:47 +0000
Received: from SATLEXMB04.amd.com (165.204.84.17) by
 DS1PEPF00017098.mail.protection.outlook.com (10.167.18.102) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.7202.16 via Frontend Transport; Thu, 18 Jan 2024 14:40:47 +0000
Received: from SATLEXMB03.amd.com (10.181.40.144) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.34; Thu, 18 Jan
 2024 08:40:45 -0600
Received: from [10.252.147.188] (10.180.168.240) by SATLEXMB03.amd.com
 (10.181.40.144) with Microsoft SMTP Server id 15.1.2507.34 via Frontend
 Transport; Thu, 18 Jan 2024 08:40:44 -0600
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 93426be5-b60f-11ee-9b0f-b553b5be7939
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=IzXmB6W6YtAlwrFJnQ5LzcyhFLjeNnEUTqHaHrnHH2ByPgkUUpYGnfWk3fW84J+8PjmYg1BBL+iFqUIg2pHbQdA7I9aQZzUou1X3t6Wt5HKK6JN6Z5+AjIpzZho2ZwX7raudmpZBk58O7IdXgPMWfJTC0uOQdeURc3Znxy664R2Ijoh0pK5IpXviqbIK+BHlD+mdXwxZFpM0t02G+TUNRlUfth1v+Rzyt05bPNgfmNF8dp1jqR3FrLc//59cAyl7hY8CMudye6J6pXNEY8+UA0B4e9kuyoeP99W6OlgYjeCy92L0t+b30eH3Nq3nXokTBdDq6WywwKCfKL36lL4CJQ==
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=xIR727PwCrXm63AcgfLEjxquDttB1v/yS0/QIU8wo/s=;
 b=JvWa7N1Dly0qax2fx70JPleURxjQj3tq3ips6yyRHbgAF9i3qGVTANpeDiX/HcKAbicgbZrFjd5jujfK/1zWzsfUjwFdfti89oRgdiqjxGUV2atMqNrbdT/8KduG48GeQoJ2fXVX6W3KljNa4iFpzCPHFaHucz8FEv6HFmTCpsWh0UvglK1czIG6f71u2T94U8EcM0q6vrEosCBVP+/y04nTgh/67irhH2ynGAVGaM4ZpBymhjpjghwbAD73sNf4DN1A64VAKFd4iN0bht9Nfvo8/WonG/Qjh5TLoEuAAWcEpah0ilVoXkaYC+LS7jF5q+Cb0whVpw/FqTUVJWMD9A==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=suse.com 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)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=xIR727PwCrXm63AcgfLEjxquDttB1v/yS0/QIU8wo/s=;
 b=eJAUAhZpdXplNdIW22bM0HsT/TP+h/MQYagoD4sQlaA5lsUQrONNhWt3sYOSwvn10zKbMQvqT0Txy4RPzGfTpgTnznPBM8UoLx/j9DTsgvYKw2Ej3JeGf6AjJwEU+syaxiFcXAtaT4f10hyTCyrbGHzFNMSqJFwJ6b5A4Qmzr6I=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C
Message-ID: <e471e7b4-6558-43bb-8fbd-e067943779e4@amd.com>
Date: Thu, 18 Jan 2024 15:40:39 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] coverage: filter out lib{fdt,elf}-temp.o
Content-Language: en-US
To: Jan Beulich <jbeulich@suse.com>
CC: Andrew Cooper <andrew.cooper3@citrix.com>, George Dunlap
	<george.dunlap@citrix.com>, Julien Grall <julien@xen.org>, Stefano Stabellini
	<sstabellini@kernel.org>, Wei Liu <wl@xen.org>, Javi Merino
	<javi.merino@cloud.com>, <xen-devel@lists.xenproject.org>
References: <20240118120641.24824-1-michal.orzel@amd.com>
 <8057ae41-43b5-4469-b691-4e7f16b8dd4d@suse.com>
From: Michal Orzel <michal.orzel@amd.com>
In-Reply-To: <8057ae41-43b5-4469-b691-4e7f16b8dd4d@suse.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 7bit
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: DS1PEPF00017098:EE_|MW6PR12MB7072:EE_
X-MS-Office365-Filtering-Correlation-Id: 7ee81e88-734e-4141-a976-08dc18337565
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam: BCL:0;
X-Microsoft-Antispam-Message-Info:
	Yj0IQcL+lRF4HI+1N7VQ9/prCrJArQx6mWux+4Vki0BoXDQibyg8IEFEdNLTlxdVoEXbVGH9Hfer9VGpP/EQmiNPqIpQbkzOk0TMOwNkQdnQGJUpt1PFsCqQraVd2Gz0x1d0VQuuPqSEbIXhHWfC+2RPPMji7ZS/K8sHYeC67OYHR0lf9gibS/TX/MwzADst01BCsjorqlE/Ltmb2UTSqFbauFsTyAaHaIELpmiVX4qHaPgDB2gdqocg1sZSojyjwsg84zStjIoscSemmOCy/tpahNbDAHrgE3kEUYd3hQmD2IAre9rpc/6XempvHHPNA7GozSbzi9lN1IOJGJR0pgZT+cycTY5vtF24qqzk5DqOxghsol9qEhVaK6eHu4nZNOQNCkvPpr0bLImW0vUAGQSAxUMUvuRBLy1wYHPLJhKs5cgcP/QRs7fuPyubpLgFWE5HSeFMAKyyW1+TMYjA7VmN5ov3R6Xzwcdx3KPfu/ATpxe4uRaV3al57QP8ABWR30j9asKTmrVDvd23nZmujpB71mvgmESx0SMCKkwUJqsLjzf4FUB21q27jnq+hdUIHRhxXl6HjfUr0fwmwrftwhAjYHkZuBMtVt6gLgQ7JP23w4V4s2lTIacUEnXNfHUXIgz+to+5aHLyoJjjmHC+oNlSzwNzUm1VYMA0efwpJbPxJ0MgRZxT5ibsj7+gm1RCzdf253lWQKvXyOUjSgF70axuErWiCyvfOh1C90Qf/EtyOYRL3rvRZq/fWqUWMaQrJ4/f4PUhM5pZdW6hrJkAZkdtYl5jBF8Vt018kGMoviBZdH1YJuiRPUQKHpR2QKp2
X-Forefront-Antispam-Report:
	CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230031)(4636009)(136003)(376002)(396003)(346002)(39860400002)(230922051799003)(186009)(451199024)(64100799003)(1800799012)(82310400011)(46966006)(40470700004)(36840700001)(70586007)(54906003)(70206006)(36756003)(6916009)(16576012)(31696002)(316002)(478600001)(82740400003)(4326008)(8676002)(8936002)(81166007)(5660300002)(2906002)(356005)(41300700001)(44832011)(26005)(426003)(336012)(2616005)(40460700003)(40480700001)(83380400001)(53546011)(36860700001)(6666004)(47076005)(31686004)(86362001)(36900700001)(43740500002);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 Jan 2024 14:40:47.1138
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 7ee81e88-734e-4141-a976-08dc18337565
X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com]
X-MS-Exchange-CrossTenant-AuthSource:
	DS1PEPF00017098.namprd05.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW6PR12MB7072

Hi Jan,

On 18/01/2024 14:12, Jan Beulich wrote:
> 
> 
> On 18.01.2024 13:06, Michal Orzel wrote:
>> At the moment, trying to run xencov read/reset (calling SYSCTL_coverage_op
>> under the hood) results in a crash. This is due to an attempt to
>> access code in the .init.* sections (libfdt for Arm and libelf for x86)
>> that are stripped after boot. Normally, the build system compiles any
>> *.init.o file without COV_FLAGS. However, these two libraries are
>> handled differently as sections will be renamed to init after linking.
>>
>> This worked until e321576f4047 ("xen/build: start using if_changed")
>> that added lib{fdt,elf}-temp.o to extra-y. Any file listed there without
>> *.init.o suffix will be part of non-init-objects for which COV_FLAGS
>> will be appended.
> 
> While this is true, aiui COV_FLAGS would be empty for anything listed
> in nocov-y and all of the prerequisites of those objects (iirc target-
> specific variable settings propagate to prerequisites). Therefore ...
I'm not sure about this propagation.

> 
>> In such case, the solution is to add a file to nocov-y.
> 
> ... libelf.o / libfdt.o already being listed there ought to suffice.
> Alternatively listing only libelf-temp.o / libfdt-temp.o ought to
> suffice as well.
> 
> Since you apparently observed things not working, I must be missing
> something.
As I wrote on Matrix, I'm not a build system expert so it might be that the issue
is due to something else. I managed to find a commit after which building the libfdt/libelf
with coverage enabled resulted in .gcno files being present. This commit added libfdt-temp.o
(same as libfdt.o but without sections renaming) to extra-y, hence my fix.

~Michal


From xen-devel-bounces@lists.xenproject.org Thu Jan 18 14:53:14 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 18 Jan 2024 14:53:14 +0000
Received: from list by lists.xenproject.org with outflank-mailman.668806.1041263 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQTlL-0008R6-RL; Thu, 18 Jan 2024 14:52:59 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 668806.1041263; Thu, 18 Jan 2024 14:52:59 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQTlL-0008Qz-Mi; Thu, 18 Jan 2024 14:52:59 +0000
Received: by outflank-mailman (input) for mailman id 668806;
 Thu, 18 Jan 2024 14:52:58 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=aSQR=I4=cloud.com=roger.pau@srs-se1.protection.inumbo.net>)
 id 1rQTlK-0008PG-Sv
 for xen-devel@lists.xenproject.org; Thu, 18 Jan 2024 14:52:58 +0000
Received: from mail-wm1-x32d.google.com (mail-wm1-x32d.google.com
 [2a00:1450:4864:20::32d])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 43c43954-b611-11ee-9b0f-b553b5be7939;
 Thu, 18 Jan 2024 15:52:56 +0100 (CET)
Received: by mail-wm1-x32d.google.com with SMTP id
 5b1f17b1804b1-40e8ddebc71so10892545e9.2
 for <xen-devel@lists.xenproject.org>; Thu, 18 Jan 2024 06:52:56 -0800 (PST)
Received: from localhost ([213.195.127.68]) by smtp.gmail.com with ESMTPSA id
 a17-20020a05600c349100b0040e95e81e48sm927221wmq.14.2024.01.18.06.52.55
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 18 Jan 2024 06:52:55 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 43c43954-b611-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1705589576; x=1706194376; darn=lists.xenproject.org;
        h=in-reply-to:content-disposition:mime-version:references:message-id
         :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to;
        bh=VQQxwmLUjSGgvDZ2qLnWoQvdTd95faRl+5ilr40g8+Q=;
        b=MGi8PsYO9DNPqWl3HEm85aFiAydf2PNsXEON9clkYbGtDdgwSw0CsZY6tRsEfNEjKl
         WNW5/80KfTwcGB6Xp3bUXNyJfCklRghBV1UFtfk0UuXp37O1JBXPwW6fJ75AICvO9F1r
         G4t30WdzJhsNnfc/q4s6Fw405ZDxbmNXhnkko=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705589576; x=1706194376;
        h=in-reply-to:content-disposition:mime-version:references:message-id
         :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to;
        bh=VQQxwmLUjSGgvDZ2qLnWoQvdTd95faRl+5ilr40g8+Q=;
        b=pfkrlC+kFZpR0yBk23aAsGuCaTqxyjDyNsj9GL1ytwEGZ8QfmV3DtK9W6mqqP+YaAp
         SdhzcSsIDKZbdHpe2L5gShzGCjTuZrfBGI15ikEiS8/8oJ/IXclSL4YXrMPL0P806nUp
         7l9POTtFKLA51Odsj2CQY8PYJjcLWSz53SJcUHpD006WwOLbd4MMahvON+z91UmC58JC
         SIGjEGhmWVUDbLt+7xv11MAHN1yO0JO7M0GFj+CyXQFho8HbfVfo3Rsrl9int2sDLnw1
         BQ8dSlRuLkO3u2RxX8eGS7ytm8ruLQ8aqV23yvVaX7pT4kvhBEniT4B/Ew6qXvm2rcym
         1s8A==
X-Gm-Message-State: AOJu0YypVQZRSgLXWRk9LlEl6RT8XVuYr4IS1Y+sD2wWeokCx8hNS1Gv
	B7fOTXpGn/5yTQl4283/SZSzAwyM+9Ep3JLWzZV71WwxUT/k3GDbISg2FLn+dQo=
X-Google-Smtp-Source: AGHT+IEq5L5Df3ZCRyvyigKA42Yvak45Tt+41r+LgQZMtJu2zrv010GP5ASs4uYBwK14rFD192e92w==
X-Received: by 2002:a7b:cd0a:0:b0:40e:4a46:b82a with SMTP id f10-20020a7bcd0a000000b0040e4a46b82amr650188wmj.113.1705589575696;
        Thu, 18 Jan 2024 06:52:55 -0800 (PST)
Date: Thu, 18 Jan 2024 15:52:54 +0100
From: Roger Pau =?utf-8?B?TW9ubsOp?= <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>,
	Julien Grall <julien@xen.org>,
	Stefano Stabellini <sstabellini@kernel.org>,
	George Dunlap <george.dunlap@citrix.com>
Subject: Re: [PATCH v5 1/8] common: assembly entry point type/size annotations
Message-ID: <Zak7Rmbj_izBvcC4@macbook>
References: <e4bf47ca-2ae6-1fd4-56a6-e4e777150b64@suse.com>
 <7a133ed9-9d13-4e2c-893a-00c083c8a35d@suse.com>
 <38de36da-0822-4452-9594-8d50a5a77335@suse.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
In-Reply-To: <38de36da-0822-4452-9594-8d50a5a77335@suse.com>

On Mon, Jan 15, 2024 at 03:34:05PM +0100, Jan Beulich wrote:
> Recent gas versions generate minimalistic Dwarf debug info for items
> annotated as functions and having their sizes specified [1]. Furthermore
> generating live patches wants items properly annotated. "Borrow" Arm's
> END() and (remotely) derive other annotation infrastructure from
> Linux'es, for all architectures to use.
> 
> Signed-off-by: Jan Beulich <jbeulich@suse.com>
> 
> [1] https://sourceware.org/git?p=binutils-gdb.git;a=commitdiff;h=591cc9fbbfd6d51131c0f1d4a92e7893edcc7a28
> ---
> v5: Drop CODE_ALIGN fallback. s/algn/align/g.
> v3: New, generalized from earlier x86-only version. LAST() (now
>     LASTARG()) moved to macros.h.
> ---
> TBD: {CODE,DATA}_ALIGN are byte granular, such that a value of 0 can be
>      specified (in case this has some special meaning on an arch;
>      conceivably it could mean to use some kind of arch default). We may
>      not strictly need that, and hence we could also make these power-
>      of-2 values (using .p2align).
> 
> Note that we can't use ALIGN() (in place of SYM_ALIGN()) as long as we
> still have ALIGN.
> 
> Note further that FUNC()'s etc "align" parameter is intended to allow
> for only no or a single argument. If we wanted to also make the fill
> value customizable per call site, the constructs would need re-doing to
> some degree.
> 
> --- /dev/null
> +++ b/xen/include/xen/linkage.h
> @@ -0,0 +1,54 @@
> +#ifndef __LINKAGE_H__
> +#define __LINKAGE_H__
> +
> +#ifdef __ASSEMBLY__
> +
> +#include <xen/macros.h>
> +
> +/* CODE_ALIGN needs to be specified by every architecture. */
> +#ifndef CODE_FILL
> +# define CODE_FILL ~0
> +#endif
> +
> +#ifndef DATA_ALIGN
> +# define DATA_ALIGN 0
> +#endif
> +#ifndef DATA_FILL
> +# define DATA_FILL ~0
> +#endif
> +
> +#define SYM_ALIGN(align...) .balign align
> +
> +#define SYM_L_GLOBAL(name) .globl name
> +#define SYM_L_WEAK(name)   .weak name
> +#define SYM_L_LOCAL(name)  /* nothing */
> +
> +#define SYM_T_FUNC         STT_FUNC
> +#define SYM_T_DATA         STT_OBJECT
> +#define SYM_T_NONE         STT_NOTYPE
> +
> +#define SYM(name, typ, linkage, align...)         \
> +        .type name, SYM_T_ ## typ;                \
> +        SYM_L_ ## linkage(name);                  \
> +        SYM_ALIGN(align);                         \
> +        name:
> +
> +#define END(name) .size name, . - name
> +
> +#define FUNC(name, align...) \
> +        SYM(name, FUNC, GLOBAL, LASTARG(CODE_ALIGN, ## align), CODE_FILL)
> +#define LABEL(name, align...) \
> +        SYM(name, NONE, GLOBAL, LASTARG(CODE_ALIGN, ## align), CODE_FILL)
> +#define DATA(name, align...) \
> +        SYM(name, DATA, GLOBAL, LASTARG(DATA_ALIGN, ## align), DATA_FILL)
> +
> +#define FUNC_LOCAL(name, align...) \
> +        SYM(name, FUNC, LOCAL, LASTARG(CODE_ALIGN, ## align), CODE_FILL)
> +#define LABEL_LOCAL(name, align...) \
> +        SYM(name, NONE, LOCAL, LASTARG(CODE_ALIGN, ## align), CODE_FILL)

One thing that I've noticed while reviewing further patches, the usage
of CODE_ALIGN and CODE_FILL in LABEL_LOCAL() means that CODE_FILL must
always be a nop, or else the assembler will put garbage while padding
the symbol, and hence the preceding code will no longer fallthrough
into the label?

Looking further, LABEL_LOCAL() is always used when there's no
fallthrough, but it's IMO not obvious from the description here.

Thanks, Roger.


From xen-devel-bounces@lists.xenproject.org Thu Jan 18 15:27:51 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 18 Jan 2024 15:27:51 +0000
Received: from list by lists.xenproject.org with outflank-mailman.668810.1041272 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQUIx-0006ps-C1; Thu, 18 Jan 2024 15:27:43 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 668810.1041272; Thu, 18 Jan 2024 15:27:43 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQUIx-0006pl-9K; Thu, 18 Jan 2024 15:27:43 +0000
Received: by outflank-mailman (input) for mailman id 668810;
 Thu, 18 Jan 2024 15:27:41 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rQUIv-0006pb-Ox; Thu, 18 Jan 2024 15:27:41 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rQUIv-0007hi-EU; Thu, 18 Jan 2024 15:27:41 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rQUIu-0001sa-St; Thu, 18 Jan 2024 15:27:41 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rQUIu-0001Wv-SM; Thu, 18 Jan 2024 15:27:40 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=ayzyzjc34ziudbYmcEZIV3o4/62R1C4kOH4a+8J7OmE=; b=5QzNWL6S6jjU+8I7WPNpCE3suc
	mJTvGgRpst6XzlCTMbmYniqPGfNBFy+fhmrGgVqddbbfowYa9Y+kMkypSLkod/1Unfsaqq3woGVh1
	eEzrT6s8z3zRh/HKcRNMheb6cHIwSvLmScMFrMMtJqkVOiKvWWi8dGFtnVi7nqlyRzEo=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184389-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [libvirt test] 184389: tolerable all pass - PUSHED
X-Osstest-Failures:
    libvirt:test-armhf-armhf-libvirt:saverestore-support-check:fail:nonblocking
    libvirt:test-armhf-armhf-libvirt-qcow2:saverestore-support-check:fail:nonblocking
    libvirt:test-armhf-armhf-libvirt-raw:saverestore-support-check:fail:nonblocking
    libvirt:test-amd64-amd64-libvirt-xsm:migrate-support-check:fail:nonblocking
    libvirt:test-amd64-i386-libvirt-xsm:migrate-support-check:fail:nonblocking
    libvirt:test-amd64-i386-libvirt:migrate-support-check:fail:nonblocking
    libvirt:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    libvirt:test-arm64-arm64-libvirt:migrate-support-check:fail:nonblocking
    libvirt:test-arm64-arm64-libvirt:saverestore-support-check:fail:nonblocking
    libvirt:test-arm64-arm64-libvirt-xsm:migrate-support-check:fail:nonblocking
    libvirt:test-arm64-arm64-libvirt-xsm:saverestore-support-check:fail:nonblocking
    libvirt:test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    libvirt:test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    libvirt:test-armhf-armhf-libvirt:migrate-support-check:fail:nonblocking
    libvirt:test-amd64-i386-libvirt-raw:migrate-support-check:fail:nonblocking
    libvirt:test-arm64-arm64-libvirt-qcow2:migrate-support-check:fail:nonblocking
    libvirt:test-arm64-arm64-libvirt-qcow2:saverestore-support-check:fail:nonblocking
    libvirt:test-arm64-arm64-libvirt-raw:migrate-support-check:fail:nonblocking
    libvirt:test-arm64-arm64-libvirt-raw:saverestore-support-check:fail:nonblocking
    libvirt:test-amd64-amd64-libvirt-vhd:migrate-support-check:fail:nonblocking
    libvirt:test-armhf-armhf-libvirt-qcow2:migrate-support-check:fail:nonblocking
    libvirt:test-armhf-armhf-libvirt-raw:migrate-support-check:fail:nonblocking
X-Osstest-Versions-This:
    libvirt=5df470f47d02e39a5c6a80e78f54d8ddf98d80af
X-Osstest-Versions-That:
    libvirt=3a45455558d74b2cb351c74cab472ac654f54708
From: osstest service owner <osstest-admin@xenproject.org>
Date: Thu, 18 Jan 2024 15:27:40 +0000

flight 184389 libvirt real [real]
http://logs.test-lab.xenproject.org/osstest/logs/184389/

Failures :-/ but no regressions.

Tests which did not succeed, but are not blocking:
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 184367
 test-armhf-armhf-libvirt-qcow2 15 saverestore-support-check   fail like 184367
 test-armhf-armhf-libvirt-raw 15 saverestore-support-check    fail  like 184367
 test-amd64-amd64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-amd64-i386-libvirt-xsm  15 migrate-support-check        fail   never pass
 test-amd64-i386-libvirt      15 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt     15 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt     15 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt     16 saverestore-support-check    fail   never pass
 test-arm64-arm64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-xsm 16 saverestore-support-check    fail   never pass
 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-armhf-armhf-libvirt     15 migrate-support-check        fail   never pass
 test-amd64-i386-libvirt-raw  14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-qcow2 14 migrate-support-check        fail never pass
 test-arm64-arm64-libvirt-qcow2 15 saverestore-support-check    fail never pass
 test-arm64-arm64-libvirt-raw 14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 15 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-vhd 14 migrate-support-check        fail   never pass
 test-armhf-armhf-libvirt-qcow2 14 migrate-support-check        fail never pass
 test-armhf-armhf-libvirt-raw 14 migrate-support-check        fail   never pass

version targeted for testing:
 libvirt              5df470f47d02e39a5c6a80e78f54d8ddf98d80af
baseline version:
 libvirt              3a45455558d74b2cb351c74cab472ac654f54708

Last test of basis   184367  2024-01-16 04:20:44 Z    2 days
Testing same since   184389  2024-01-18 04:20:45 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Andrea Bolognani <abologna@redhat.com>
  Peter Krempa <pkrempa@redhat.com>

jobs:
 build-amd64-xsm                                              pass    
 build-arm64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64                                                  pass    
 build-arm64                                                  pass    
 build-armhf                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-arm64-libvirt                                          pass    
 build-armhf-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-pvops                                            pass    
 build-arm64-pvops                                            pass    
 build-armhf-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm           pass    
 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm            pass    
 test-amd64-amd64-libvirt-xsm                                 pass    
 test-arm64-arm64-libvirt-xsm                                 pass    
 test-amd64-i386-libvirt-xsm                                  pass    
 test-amd64-amd64-libvirt                                     pass    
 test-arm64-arm64-libvirt                                     pass    
 test-armhf-armhf-libvirt                                     pass    
 test-amd64-i386-libvirt                                      pass    
 test-amd64-amd64-libvirt-pair                                pass    
 test-amd64-i386-libvirt-pair                                 pass    
 test-arm64-arm64-libvirt-qcow2                               pass    
 test-armhf-armhf-libvirt-qcow2                               pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-armhf-armhf-libvirt-raw                                 pass    
 test-amd64-i386-libvirt-raw                                  pass    
 test-amd64-amd64-libvirt-vhd                                 pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Pushing revision :

To xenbits.xen.org:/home/xen/git/libvirt.git
   3a45455558..5df470f47d  5df470f47d02e39a5c6a80e78f54d8ddf98d80af -> xen-tested-master


From xen-devel-bounces@lists.xenproject.org Thu Jan 18 15:37:55 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 18 Jan 2024 15:37:55 +0000
Received: from list by lists.xenproject.org with outflank-mailman.668818.1041282 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQUSk-0000sT-DH; Thu, 18 Jan 2024 15:37:50 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 668818.1041282; Thu, 18 Jan 2024 15:37:50 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQUSk-0000sM-AF; Thu, 18 Jan 2024 15:37:50 +0000
Received: by outflank-mailman (input) for mailman id 668818;
 Thu, 18 Jan 2024 15:37:48 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=2mYN=I4=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rQUSi-0000sG-Nv
 for xen-devel@lists.xenproject.org; Thu, 18 Jan 2024 15:37:48 +0000
Received: from mail-lj1-x234.google.com (mail-lj1-x234.google.com
 [2a00:1450:4864:20::234])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 87cee331-b617-11ee-98f2-6d05b1d4d9a1;
 Thu, 18 Jan 2024 16:37:47 +0100 (CET)
Received: by mail-lj1-x234.google.com with SMTP id
 38308e7fff4ca-2ccbc328744so151462671fa.3
 for <xen-devel@lists.xenproject.org>; Thu, 18 Jan 2024 07:37:47 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 r8-20020adfe688000000b00337d97338b0sm5496wrm.76.2024.01.18.07.37.46
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 18 Jan 2024 07:37:46 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 87cee331-b617-11ee-98f2-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1705592267; x=1706197067; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=DTW5sXakIJMa0RuB6XoQWXBxkpXsm0IFjq3raAFZ4tM=;
        b=adI+tn19umaS71EQQelNxc04tkNx1LtBij0g5Ak6Mi2HwBkhDYqBxeOearn7IfSEFi
         CID5DGCa+1xgOcC28C8H3ihB8SbmZc+9i03+UrUBYzE+Qm7ULFABj7VmKfQSokHQ3kPJ
         aUYQIYS19YlostyuGWtiiJiJ4Ld9u5EH4LNR0AHiRK+uibHmT781BdedHs60Vrx64g94
         sCZSUAl0Exve4VFTb04YRbLmYuU9iluLEEs3jmzOivu4mLzHfGs/03pE5wbx7Tz1qIt4
         T3uOXcyjvRNLrxp51mxAL5e2IWmQJXHjYbAYDDrmuN75QEQD/k0c+8eZb2NCSRpgDDPX
         9BSQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705592267; x=1706197067;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=DTW5sXakIJMa0RuB6XoQWXBxkpXsm0IFjq3raAFZ4tM=;
        b=NI55pSYLCVxsd/Uh46spKRr6zURYIyBXgpA8vM6ToEc+h2Z4Bw7okiygeCFwCkWrqV
         QaDVEXVlMBEh+EVA50B1F6uurGdqYnJLyhqSDyEngb7SiHRQL31Xv7crY2anTWgMQrjG
         +ZvIoESJzF8I2HBBvaPIRE2C3RFg3JGsarrBnGaI/GWqSsjWIKJwbZ3utaMJ9fiQNtrO
         MQ3zQ+X8rFIVfgWT8QnseMAnOd1Ax5RgDNxim/FnQ1o9F1QKOX/kkizPUlZyK7+2FEQp
         r6xHliC672J5stS42TFZZroh0XROKJNI0sre5FpjnLLJj3hmfnASdLzXKg8Isol3fVVn
         8r2Q==
X-Gm-Message-State: AOJu0Yzt319mA3WzATz+DIrLe7DfB0SQ/czTo7X1FJJHxTu7YNDRphwQ
	CqzOwAd7UhjJvzV+1eztO4NvLz+SdGlFBG80E2246oucOCapFv5aVocbvGe3Vg==
X-Google-Smtp-Source: AGHT+IH/3Tvi8RZ/zhxcApDziiGnyrWryD9w+gTBgYPE6VzbNtM3NP5lRuqHonCO3CZvNHAWAyvzFg==
X-Received: by 2002:a2e:9d99:0:b0:2cc:a72c:9d with SMTP id c25-20020a2e9d99000000b002cca72c009dmr589491ljj.37.1705592267000;
        Thu, 18 Jan 2024 07:37:47 -0800 (PST)
Message-ID: <80e721ad-f8bb-4c10-bfd9-18c518aca1a9@suse.com>
Date: Thu, 18 Jan 2024 16:37:45 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] coverage: filter out lib{fdt,elf}-temp.o
Content-Language: en-US
To: Michal Orzel <michal.orzel@amd.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 George Dunlap <george.dunlap@citrix.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>,
 Javi Merino <javi.merino@cloud.com>, xen-devel@lists.xenproject.org,
 Anthony Perard <anthony.perard@citrix.com>
References: <20240118120641.24824-1-michal.orzel@amd.com>
 <8057ae41-43b5-4469-b691-4e7f16b8dd4d@suse.com>
 <e471e7b4-6558-43bb-8fbd-e067943779e4@amd.com>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <e471e7b4-6558-43bb-8fbd-e067943779e4@amd.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 18.01.2024 15:40, Michal Orzel wrote:
> On 18/01/2024 14:12, Jan Beulich wrote:
>> On 18.01.2024 13:06, Michal Orzel wrote:
>>> At the moment, trying to run xencov read/reset (calling SYSCTL_coverage_op
>>> under the hood) results in a crash. This is due to an attempt to
>>> access code in the .init.* sections (libfdt for Arm and libelf for x86)
>>> that are stripped after boot. Normally, the build system compiles any
>>> *.init.o file without COV_FLAGS. However, these two libraries are
>>> handled differently as sections will be renamed to init after linking.
>>>
>>> This worked until e321576f4047 ("xen/build: start using if_changed")
>>> that added lib{fdt,elf}-temp.o to extra-y. Any file listed there without
>>> *.init.o suffix will be part of non-init-objects for which COV_FLAGS
>>> will be appended.
>>
>> While this is true, aiui COV_FLAGS would be empty for anything listed
>> in nocov-y and all of the prerequisites of those objects (iirc target-
>> specific variable settings propagate to prerequisites). Therefore ...
> I'm not sure about this propagation.
> 
>>
>>> In such case, the solution is to add a file to nocov-y.
>>
>> ... libelf.o / libfdt.o already being listed there ought to suffice.
>> Alternatively listing only libelf-temp.o / libfdt-temp.o ought to
>> suffice as well.
>>
>> Since you apparently observed things not working, I must be missing
>> something.
> As I wrote on Matrix, I'm not a build system expert so it might be that the issue
> is due to something else. I managed to find a commit after which building the libfdt/libelf
> with coverage enabled resulted in .gcno files being present. This commit added libfdt-temp.o
> (same as libfdt.o but without sections renaming) to extra-y, hence my fix.

You should probably have Cc-ed Anthony on the submission. Doing so now,
so at least he's aware (and may then also look at the patch).

Jan


From xen-devel-bounces@lists.xenproject.org Thu Jan 18 15:39:30 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 18 Jan 2024 15:39:30 +0000
Received: from list by lists.xenproject.org with outflank-mailman.668821.1041292 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQUUL-00022d-Mo; Thu, 18 Jan 2024 15:39:29 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 668821.1041292; Thu, 18 Jan 2024 15:39:29 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQUUL-00022W-K5; Thu, 18 Jan 2024 15:39:29 +0000
Received: by outflank-mailman (input) for mailman id 668821;
 Thu, 18 Jan 2024 15:39:28 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=2mYN=I4=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rQUUK-00022Q-Il
 for xen-devel@lists.xenproject.org; Thu, 18 Jan 2024 15:39:28 +0000
Received: from mail-wm1-x32c.google.com (mail-wm1-x32c.google.com
 [2a00:1450:4864:20::32c])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id c32fe30e-b617-11ee-98f2-6d05b1d4d9a1;
 Thu, 18 Jan 2024 16:39:27 +0100 (CET)
Received: by mail-wm1-x32c.google.com with SMTP id
 5b1f17b1804b1-40e8f710d44so11446805e9.3
 for <xen-devel@lists.xenproject.org>; Thu, 18 Jan 2024 07:39:27 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 r8-20020adfe688000000b00337d97338b0sm5496wrm.76.2024.01.18.07.39.26
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 18 Jan 2024 07:39:26 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: c32fe30e-b617-11ee-98f2-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1705592366; x=1706197166; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=0Bz1mb0Rxr3lhQdlQDcQzHRf2aTaQ9Nmj/7OW08xzSM=;
        b=NS1hhpwvA1Op32aZ66cX3fH+DBiLyEtkB7/+OKIHezZzkzY0xpA4Q8rUh+zBsXFB6s
         pqdm9HSC2xipQfWFJay55/RnG9FnSXF+JVX9N87mJtA7x+nesIcVmRIFiQvV+xNN0Gkx
         3yZv/YErEj9jZMwfeVokubP+KwWvmwjbYYGg1H+i3/z30j6n7IlBi8KtMacuyIp9wzu6
         IX/j56LJDpJeCbu6ZERCCsGAKGddt5phej+QIzmotDLIFSf68oZwWhsK3zdZrcXWb+4o
         ESh8xYOqTMc7QQMj/5Va2bN8tK8CREzg1nP0rxJIGZMIPWvyesxBFMMY/zfgXYS4hFd3
         jDJw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705592366; x=1706197166;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=0Bz1mb0Rxr3lhQdlQDcQzHRf2aTaQ9Nmj/7OW08xzSM=;
        b=tr3+qZejgCdB94JEIX7tVT5ey7/wdqya/TGZiJqmdg7Wu9JdsHXcyBdTuqHBc1vux6
         YqYhkgOmy39j82vC82wGzT9rGUl0bhQ8Wiafg1YiiNdz50bCuEzAmNDgcM22gxoZlXVr
         IPN3IOGJBwNvZ0Ih45X7n3iesHSa+9CRAH4YUSsmd1v6mRAGxEgSPlLxuy6N8gPz08BJ
         97xLa/qE8z21Kb/pj3Ks05w3VpWuEyflFjSHKOX6ua3fFHkK+ZRFTfHYOGBqqZsZAhp9
         9G9jD+T4nvvwfXME/MZPKsIk0d+Yv1/lCNDtHeDbd7P6pSwFnyQVAhKmj5qedq9cRhQr
         rydw==
X-Gm-Message-State: AOJu0YwQOpozhJwY7elmiggN8V3uI+sjTHR6W+aDtAbGBjl3a3voFyzT
	W7USvgisnq6B1J4bb1rvhf/EKUBNku082FUzRGeRlWnYPdCBdufBPfwGF1xwEg==
X-Google-Smtp-Source: AGHT+IGJkDa1lhZFvnmFcmKXF0E48bnuJC8a6vhHNMR+gMmxN9iJ+ce2BXll4adBSggezxubaDVaMg==
X-Received: by 2002:a7b:c5c6:0:b0:40e:4afe:12eb with SMTP id n6-20020a7bc5c6000000b0040e4afe12ebmr586348wmk.188.1705592366486;
        Thu, 18 Jan 2024 07:39:26 -0800 (PST)
Message-ID: <28f1adeb-849a-4c76-8aa1-438c49ecb4bf@suse.com>
Date: Thu, 18 Jan 2024 16:39:25 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 1/8] keyhandler: don't pass cpu_user_regs around
Content-Language: en-US
To: Julien Grall <julien@xen.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 George Dunlap <george.dunlap@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
References: <1ab231ec-5e3c-4662-8530-2213bc52bb7c@suse.com>
 <dd1c24ec-4054-43e1-b0c9-6c2044b84046@suse.com>
 <3fd4bafd-75f8-4352-bee2-1fa6dc64a9d5@xen.org>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <3fd4bafd-75f8-4352-bee2-1fa6dc64a9d5@xen.org>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 18.01.2024 15:06, Julien Grall wrote:
> On 11/01/2024 07:31, Jan Beulich wrote:
>> There are exactly two handlers which care about the registers. Have
>> handle_keypress() make the pointer available via a per-CPU variable,
>> thus eliminating the need to pass it to all IRQ key handlers, making
>> sure that a console-invoked key's handling can still nest inside a
>> sysctl-invoked one's.
>>
>> Signed-off-by: Jan Beulich <jbeulich@suse.com>
> 
> Reviewed-by: Julien Grall <jgrall@amazon.com>

Thanks. I had to drop this patch though in v2, doing things differently
to address a comment/request from Andrew.

Jan


From xen-devel-bounces@lists.xenproject.org Thu Jan 18 15:44:59 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 18 Jan 2024 15:44:59 +0000
Received: from list by lists.xenproject.org with outflank-mailman.668826.1041301 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQUZY-0003YG-8F; Thu, 18 Jan 2024 15:44:52 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 668826.1041301; Thu, 18 Jan 2024 15:44:52 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQUZY-0003Y9-5m; Thu, 18 Jan 2024 15:44:52 +0000
Received: by outflank-mailman (input) for mailman id 668826;
 Thu, 18 Jan 2024 15:44:50 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=2mYN=I4=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rQUZW-0003Y3-7x
 for xen-devel@lists.xenproject.org; Thu, 18 Jan 2024 15:44:50 +0000
Received: from mail-wm1-x32d.google.com (mail-wm1-x32d.google.com
 [2a00:1450:4864:20::32d])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 8287a86b-b618-11ee-9b0f-b553b5be7939;
 Thu, 18 Jan 2024 16:44:48 +0100 (CET)
Received: by mail-wm1-x32d.google.com with SMTP id
 5b1f17b1804b1-40e959b1867so4777185e9.1
 for <xen-devel@lists.xenproject.org>; Thu, 18 Jan 2024 07:44:48 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 n15-20020a05600c3b8f00b0040d5a5c523csm30290745wms.1.2024.01.18.07.44.46
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 18 Jan 2024 07:44:47 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 8287a86b-b618-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1705592687; x=1706197487; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=3hmdyKvYvqOXcRa7lXD0L2aIv9nRsMOheDmBP9XqpTg=;
        b=CthHrAJP7Vj+TMDVagHO5yudHF9EMdn0/omTXigppmIT0/3POjipm2AErIj1Cu4XUl
         kam6kWQs5w0QKqT6kO1wyj/19vut7m0RTdwzhmWuaNKUMPCvByU7eela5/oikM1R1lHk
         1MP8C8YzGB/vsAfs9znk46/Cl5r5UInaN57mqlDt/1IfatrXfJxn1iuJ+kGVIaNhtbAk
         94V1x64q94BDwZxQhGb5Z7nrlq0i1yk+oAFPlyRGsoFDgEyI5Jl0rrwrZNR7u0MLBh49
         6jHgkbwVRR8Iz4lFARL3sTg5zpCZ8uxpjvCJ0YqMiEDlD+BJc8MnWM6kbWvUg3KXXr/x
         +jAA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705592687; x=1706197487;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=3hmdyKvYvqOXcRa7lXD0L2aIv9nRsMOheDmBP9XqpTg=;
        b=aJlin08w/c6nGp9pJk1XaEXv72IqxIRXSvwZXab9L8zTiDUz/YLlTk1boHjs53gptj
         NBwcweHWVK6bhU+3wCm6YZXv0uPoR1UimVi8bMhNbUr57Dwive3OV2h6OwVzgcHaVH/9
         QMS+khTZK9egRjcysRP2Vcc8bPf7crOaopUhVQCGjwYJuj5M++iKfYRbYCGWXbIBEfte
         8XdOLxsHbATIQnKOyQZ+dC6Fs+XHSDukuj0efjFUURlICXZHPng9vfUAY2ZsA9zrCSTi
         8voXBZvLIACqf1tjBWg/hsMCXNcKI1IlkhdEoqvkWLUf5tNWBC0Y/8JAwF/zB/KTnYr9
         8cvA==
X-Gm-Message-State: AOJu0YwHLaYDgkDxRcwQtMdUzfadZQUiDAWo8Kn5wgOFaJaM418Jo1rI
	x6LwsyYv6Us7i7eJpovHWEt5T85Cd7P/YdNu/RWSxjj8O8YHbD3is8KqnAvJ0w==
X-Google-Smtp-Source: AGHT+IGJItYcMgnGqiwFjmuowqIbvOg/pR2n7kr3oLbs2hn53vQU4IMHR6QWIFc2hrqjOcsShX8vZQ==
X-Received: by 2002:a7b:c8ce:0:b0:40e:956b:7447 with SMTP id f14-20020a7bc8ce000000b0040e956b7447mr378247wml.131.1705592687581;
        Thu, 18 Jan 2024 07:44:47 -0800 (PST)
Message-ID: <442a2d6c-24bd-48bb-a73b-47fdc88ba8f6@suse.com>
Date: Thu, 18 Jan 2024 16:44:45 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 6/8] IRQ: drop register parameter from handler functions
Content-Language: en-US
To: Julien Grall <julien@xen.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 George Dunlap <george.dunlap@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Bertrand Marquis <bertrand.marquis@arm.com>,
 Michal Orzel <michal.orzel@amd.com>, Kevin Tian <kevin.tian@intel.com>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
References: <1ab231ec-5e3c-4662-8530-2213bc52bb7c@suse.com>
 <c6926627-aeb6-40dd-a85a-1be0b324bf49@suse.com>
 <36628428-3284-47c4-8471-21218c63df07@xen.org>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <36628428-3284-47c4-8471-21218c63df07@xen.org>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 18.01.2024 15:17, Julien Grall wrote:
> On 11/01/2024 07:35, Jan Beulich wrote:
>> It's simply not needed anymore. Note how Linux made this change many
>> years ago already, in 2.6.19 (late 2006, see [1]).
>>
>> Signed-off-by: Jan Beulich <jbeulich@suse.com>
> 
> This patch will need to be adjusted to compile on Arm. If you 
> incorporate the changes from Michal (see the reply to the cover letter), 
> then:
> 
> Acked-by: Julien Grall <jgrall@amazon.com>

Thanks.

>> [1] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit?id=7d12e780e003f93433d49ce78cfedf4b4c52adc5
> 
> NIT: I was under the impresion the tags would usually last in a commit. 
> So this would go before [1].

Well, I'm not sure. Personally I think footnotes better are last. If you
indeed dislike this arrangement, and since I dislike

"It's simply not needed anymore. Note how Linux made this change many
 years ago already, in 2.6.19 (late 2006, see [1]).

 [1] https://git.kernel.org/torvalds/c/7d12e780e003f93433d49ce78cfedf4b4c52adc5"

best I could think of would then be to go without footnote:

"It's simply not needed anymore. Note how Linux made this change many
 years ago already, in 2.6.19 (late 2006, see
 https://git.kernel.org/torvalds/c/7d12e780e003f93433d49ce78cfedf4b4c52adc5").

Thoughts?

Jan


From xen-devel-bounces@lists.xenproject.org Thu Jan 18 15:49:05 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 18 Jan 2024 15:49:05 +0000
Received: from list by lists.xenproject.org with outflank-mailman.668830.1041312 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQUda-0004JZ-P0; Thu, 18 Jan 2024 15:49:02 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 668830.1041312; Thu, 18 Jan 2024 15:49:02 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQUda-0004JS-MB; Thu, 18 Jan 2024 15:49:02 +0000
Received: by outflank-mailman (input) for mailman id 668830;
 Thu, 18 Jan 2024 15:49:02 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=2mYN=I4=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rQUda-0004JM-34
 for xen-devel@lists.xenproject.org; Thu, 18 Jan 2024 15:49:02 +0000
Received: from mail-wm1-x330.google.com (mail-wm1-x330.google.com
 [2a00:1450:4864:20::330])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 18850251-b619-11ee-9b0f-b553b5be7939;
 Thu, 18 Jan 2024 16:48:59 +0100 (CET)
Received: by mail-wm1-x330.google.com with SMTP id
 5b1f17b1804b1-40e5afc18f5so80937845e9.3
 for <xen-devel@lists.xenproject.org>; Thu, 18 Jan 2024 07:48:59 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 fc11-20020a05600c524b00b0040e86fbd772sm7418234wmb.38.2024.01.18.07.48.58
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 18 Jan 2024 07:48:59 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 18850251-b619-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1705592939; x=1706197739; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=CUfHsBZg1o5efKphDQQGpo9k5ziKDu078UEQb2CoKYQ=;
        b=MsYW4hNkOfcXGNNIe5B+KvikuXpbWe2YVm4ORLf1x6O1qJNdz9yarfkIzW3UgfNRVY
         bMARZiEuIEM9IPxY9MxVD0YoUYPeKgnCwVZTecUP/jgiUIkjVeiKUXspsJy3cbui5/o/
         sqVsR43n4PXl5P5T/7UWp+MUgaXUorgAbBn8tVCV2Zhftbbzf8dKnpIE96RZ8d81WF5G
         j+r5e/eMH4qHMiT/8CO4eZ53i678XNiGuKjRhu5CrOTmNwxNlJeUDev9NTGQ+Myjepaz
         Ts+r68tZCQSC+XI36b4ccGrhetK7g3Q0mwg+XjycCS2vZ6BUKw8cEeLipLEJz3ItVQu7
         zLLQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705592939; x=1706197739;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=CUfHsBZg1o5efKphDQQGpo9k5ziKDu078UEQb2CoKYQ=;
        b=V2NSZ+PH16fQoump1CMCMCMkRlkq7w6nCGSn7eUqpAz3FxobUsIF9KwuAIlRCTlbjJ
         7AGLhCWwwTz9CiHERJ13Kv5f/bHXOC9lFbzDEBbUb/lIWRS9TvWiWhjy/BXDCx0PQ28Q
         4rPjomsYRsimuMgXa5X252XJrB18hGWZUpbKMQ1/TCa66a8sDBY9FLRZQFJHI/lSrrIW
         H83m/kPTS1IxGIGYcXFsSaKVMF6dvQyMoJzIAlbHcdFoyAs2WRteb/CwsOdGo7jIN/FG
         wHtpuu7RjI01lg0X9nHeeeLnrhvMP8alLOQ/NGcPZTZALOgsdQMTUk1vuCZoIlU7r9hn
         RuhA==
X-Gm-Message-State: AOJu0Ywduqb0UTvTbUSLdqiYAaFDLbZvQqR66x07/2PxAlxr/XBer8BB
	XdNpYhIibh+DRKkPhFiRAXC0zMw99md04/Z9WxgqZtaoof63EcpDJ2lHQv4WEpKRnR5S19ZY0kE
	=
X-Google-Smtp-Source: AGHT+IEGvcWPMzGZUvG9tlQDIwNF0ZwvutE/ao+X34c548aMxmq519eNRUXg3IgfXLvecnwYCOgLXQ==
X-Received: by 2002:a05:600c:ada:b0:40e:6357:5ff9 with SMTP id c26-20020a05600c0ada00b0040e63575ff9mr609164wmr.183.1705592939332;
        Thu, 18 Jan 2024 07:48:59 -0800 (PST)
Message-ID: <6ad6a2be-473a-4ec2-ae97-a9d777e83a0b@suse.com>
Date: Thu, 18 Jan 2024 16:48:57 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v5 1/8] common: assembly entry point type/size annotations
Content-Language: en-US
To: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
Cc: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>,
 Andrew Cooper <andrew.cooper3@citrix.com>, Wei Liu <wl@xen.org>,
 Julien Grall <julien@xen.org>, Stefano Stabellini <sstabellini@kernel.org>,
 George Dunlap <george.dunlap@citrix.com>
References: <e4bf47ca-2ae6-1fd4-56a6-e4e777150b64@suse.com>
 <7a133ed9-9d13-4e2c-893a-00c083c8a35d@suse.com>
 <38de36da-0822-4452-9594-8d50a5a77335@suse.com> <ZagIQkyR0SoScaAc@macbook>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <ZagIQkyR0SoScaAc@macbook>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 17.01.2024 18:02, Roger Pau Monné wrote:
> On Mon, Jan 15, 2024 at 03:34:05PM +0100, Jan Beulich wrote:
>> Recent gas versions generate minimalistic Dwarf debug info for items
>> annotated as functions and having their sizes specified [1]. Furthermore
>> generating live patches wants items properly annotated. "Borrow" Arm's
>> END() and (remotely) derive other annotation infrastructure from
>> Linux'es, for all architectures to use.
>>
>> Signed-off-by: Jan Beulich <jbeulich@suse.com>
> 
> Reviewed-by: Roger Pau Monné <roger.pau@citrix.com>

Thanks.

>> --- /dev/null
>> +++ b/xen/include/xen/linkage.h
>> @@ -0,0 +1,54 @@
>> +#ifndef __LINKAGE_H__
>> +#define __LINKAGE_H__
>> +
>> +#ifdef __ASSEMBLY__
>> +
>> +#include <xen/macros.h>
>> +
>> +/* CODE_ALIGN needs to be specified by every architecture. */
>> +#ifndef CODE_FILL
>> +# define CODE_FILL ~0
>> +#endif
>> +
>> +#ifndef DATA_ALIGN
>> +# define DATA_ALIGN 0
>> +#endif
>> +#ifndef DATA_FILL
>> +# define DATA_FILL ~0
> 
> I find the fills a bit odd, compared to what we use now (nops for x86
> IIRC).

Well, these are generic defaults. X86 then overrides CODE_FILL for it
to remain NOP. ~0 is the best I can think of as an arch-agnostic default,
considering the half dozen architectures I know at least a little.

Jan


From xen-devel-bounces@lists.xenproject.org Thu Jan 18 16:00:25 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 18 Jan 2024 16:00:25 +0000
Received: from list by lists.xenproject.org with outflank-mailman.668835.1041322 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQUoP-0008US-L1; Thu, 18 Jan 2024 16:00:13 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 668835.1041322; Thu, 18 Jan 2024 16:00:13 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQUoP-0008UL-IQ; Thu, 18 Jan 2024 16:00:13 +0000
Received: by outflank-mailman (input) for mailman id 668835;
 Thu, 18 Jan 2024 16:00:12 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=2mYN=I4=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rQUoO-0008UF-G8
 for xen-devel@lists.xenproject.org; Thu, 18 Jan 2024 16:00:12 +0000
Received: from mail-ej1-x633.google.com (mail-ej1-x633.google.com
 [2a00:1450:4864:20::633])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id a88daccf-b61a-11ee-98f2-6d05b1d4d9a1;
 Thu, 18 Jan 2024 17:00:11 +0100 (CET)
Received: by mail-ej1-x633.google.com with SMTP id
 a640c23a62f3a-a2e0be86878so172219666b.1
 for <xen-devel@lists.xenproject.org>; Thu, 18 Jan 2024 08:00:10 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 gu12-20020a0566382e0c00b0046df4450843sm1025984jab.50.2024.01.18.08.00.08
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 18 Jan 2024 08:00:10 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: a88daccf-b61a-11ee-98f2-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1705593610; x=1706198410; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=Imm3giTj2XYmflJYbY88fLmhBZY/5fcDZEEkEQe2smU=;
        b=OBd4arrcfIQcE7s0X1QYX5iolY6AJsONajkOSRL8ea4F0LFxuF45EnXiTMa1V19OvM
         i1LsOuUqN7ymuooyip1F58PM8WXAEFXecd9juDUSn/Qvl5MwPoMHCZFUVQ5iCLCep1qU
         BKAPGcCEcmw4lISx0CL67yzdrNpvifXioGgnqL7IGsqp0xM9PNqUsz6xMELPzi7+kycV
         gIFtScR/LQRSKBbeSaL7MUwI2AMosdjc+SbIfYjj+yezsncDCJtD1Cm1MyWiDmJKf+1B
         SltQRyWKTgfeoyVVJNfSpgeHzrSP8TiRiz6L0bMpjyggs5hMtHUaOjLkPe6Q1uB5gOsU
         CWiA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705593610; x=1706198410;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=Imm3giTj2XYmflJYbY88fLmhBZY/5fcDZEEkEQe2smU=;
        b=iMVd7YpfpfRLFDqDrIvpI+I4qU6+TfyfqkE0faOH/mT1l+ahgLKxkXIb7Pfg9wbNa6
         8Wp8peidf3IF62dotmYHMYM3qvCu0Nrhmp5jSSJx096NspHZzpxcj/+rTmylMvMjqM4P
         sCEMtloFM+W9KqwXNaEY+X16VZghkrvrStRgTpbr6U66nWarN5OamFikSttw5VyARm/8
         dZDb+edL8ndZgn1cbNtYDY+r63oZjT6ZPcW9FOe9lRtFh6wHRESDK0RAs2oiQrCffgYs
         7XyxF2SACXaUW78a0DVO2DZAmvuS2lEZ0G/ngDr7fhBMXHmtR6SKGuZ6caF8so6bs2vZ
         GMVQ==
X-Gm-Message-State: AOJu0YxETkX8R/YyYWmcFCAplFewGj/a5C6iex4OkocKx7HwRk9JicmR
	OH5vGu2vBl0vg4OenARZpv6jUUkbuSeinnXBgdO097NkW0473n4tkddCRP7I3g==
X-Google-Smtp-Source: AGHT+IH5tFTvnv+6oxGBHPNjtGoJKFZ31/qcz4LPMx1aNFXIlrq0cqODpCFiE5Y1yR3i5tphxqW7uw==
X-Received: by 2002:a17:906:906:b0:a2e:e5b:d3fc with SMTP id i6-20020a170906090600b00a2e0e5bd3fcmr2986293ejd.19.1705593610477;
        Thu, 18 Jan 2024 08:00:10 -0800 (PST)
Message-ID: <7ca08488-acc5-4846-86dd-b81b6e4fe3fc@suse.com>
Date: Thu, 18 Jan 2024 17:00:06 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v5 1/8] common: assembly entry point type/size annotations
Content-Language: en-US
To: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
Cc: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>,
 Andrew Cooper <andrew.cooper3@citrix.com>, Wei Liu <wl@xen.org>,
 Julien Grall <julien@xen.org>, Stefano Stabellini <sstabellini@kernel.org>,
 George Dunlap <george.dunlap@citrix.com>
References: <e4bf47ca-2ae6-1fd4-56a6-e4e777150b64@suse.com>
 <7a133ed9-9d13-4e2c-893a-00c083c8a35d@suse.com>
 <38de36da-0822-4452-9594-8d50a5a77335@suse.com> <Zak7Rmbj_izBvcC4@macbook>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <Zak7Rmbj_izBvcC4@macbook>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 18.01.2024 15:52, Roger Pau Monné wrote:
> On Mon, Jan 15, 2024 at 03:34:05PM +0100, Jan Beulich wrote:
>> Recent gas versions generate minimalistic Dwarf debug info for items
>> annotated as functions and having their sizes specified [1]. Furthermore
>> generating live patches wants items properly annotated. "Borrow" Arm's
>> END() and (remotely) derive other annotation infrastructure from
>> Linux'es, for all architectures to use.
>>
>> Signed-off-by: Jan Beulich <jbeulich@suse.com>
>>
>> [1] https://sourceware.org/git?p=binutils-gdb.git;a=commitdiff;h=591cc9fbbfd6d51131c0f1d4a92e7893edcc7a28
>> ---
>> v5: Drop CODE_ALIGN fallback. s/algn/align/g.
>> v3: New, generalized from earlier x86-only version. LAST() (now
>>     LASTARG()) moved to macros.h.
>> ---
>> TBD: {CODE,DATA}_ALIGN are byte granular, such that a value of 0 can be
>>      specified (in case this has some special meaning on an arch;
>>      conceivably it could mean to use some kind of arch default). We may
>>      not strictly need that, and hence we could also make these power-
>>      of-2 values (using .p2align).
>>
>> Note that we can't use ALIGN() (in place of SYM_ALIGN()) as long as we
>> still have ALIGN.
>>
>> Note further that FUNC()'s etc "align" parameter is intended to allow
>> for only no or a single argument. If we wanted to also make the fill
>> value customizable per call site, the constructs would need re-doing to
>> some degree.
>>
>> --- /dev/null
>> +++ b/xen/include/xen/linkage.h
>> @@ -0,0 +1,54 @@
>> +#ifndef __LINKAGE_H__
>> +#define __LINKAGE_H__
>> +
>> +#ifdef __ASSEMBLY__
>> +
>> +#include <xen/macros.h>
>> +
>> +/* CODE_ALIGN needs to be specified by every architecture. */
>> +#ifndef CODE_FILL
>> +# define CODE_FILL ~0
>> +#endif
>> +
>> +#ifndef DATA_ALIGN
>> +# define DATA_ALIGN 0
>> +#endif
>> +#ifndef DATA_FILL
>> +# define DATA_FILL ~0
>> +#endif
>> +
>> +#define SYM_ALIGN(align...) .balign align
>> +
>> +#define SYM_L_GLOBAL(name) .globl name
>> +#define SYM_L_WEAK(name)   .weak name
>> +#define SYM_L_LOCAL(name)  /* nothing */
>> +
>> +#define SYM_T_FUNC         STT_FUNC
>> +#define SYM_T_DATA         STT_OBJECT
>> +#define SYM_T_NONE         STT_NOTYPE
>> +
>> +#define SYM(name, typ, linkage, align...)         \
>> +        .type name, SYM_T_ ## typ;                \
>> +        SYM_L_ ## linkage(name);                  \
>> +        SYM_ALIGN(align);                         \
>> +        name:
>> +
>> +#define END(name) .size name, . - name
>> +
>> +#define FUNC(name, align...) \
>> +        SYM(name, FUNC, GLOBAL, LASTARG(CODE_ALIGN, ## align), CODE_FILL)
>> +#define LABEL(name, align...) \
>> +        SYM(name, NONE, GLOBAL, LASTARG(CODE_ALIGN, ## align), CODE_FILL)
>> +#define DATA(name, align...) \
>> +        SYM(name, DATA, GLOBAL, LASTARG(DATA_ALIGN, ## align), DATA_FILL)
>> +
>> +#define FUNC_LOCAL(name, align...) \
>> +        SYM(name, FUNC, LOCAL, LASTARG(CODE_ALIGN, ## align), CODE_FILL)
>> +#define LABEL_LOCAL(name, align...) \
>> +        SYM(name, NONE, LOCAL, LASTARG(CODE_ALIGN, ## align), CODE_FILL)
> 
> One thing that I've noticed while reviewing further patches, the usage
> of CODE_ALIGN and CODE_FILL in LABEL_LOCAL() means that CODE_FILL must
> always be a nop, or else the assembler will put garbage while padding
> the symbol, and hence the preceding code will no longer fallthrough
> into the label?

Well, except when an arch has no such cases, it'll need to override
CODE_FILL. Hence why for now Arm and PPC architectures get away without
such an override. It may well be that at least Arm will need to gain
one as soon as the first case of falling through is converted to this
new model. See also the RISC-V change, where it becomes permissible for
CODE_FILL to expand to nothing (thus using assembler built-in defaults).

> Looking further, LABEL_LOCAL() is always used when there's no
> fallthrough, but it's IMO not obvious from the description here.

Not sure what adjustment to the description you are thinking of. What's
used where isn't dictated by this patch / framework.

Jan


From xen-devel-bounces@lists.xenproject.org Thu Jan 18 16:04:08 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 18 Jan 2024 16:04:08 +0000
Received: from list by lists.xenproject.org with outflank-mailman.668841.1041332 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQUsB-0000wM-9p; Thu, 18 Jan 2024 16:04:07 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 668841.1041332; Thu, 18 Jan 2024 16:04:07 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQUsB-0000wD-6P; Thu, 18 Jan 2024 16:04:07 +0000
Received: by outflank-mailman (input) for mailman id 668841;
 Thu, 18 Jan 2024 16:04:05 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=fErA=I4=gmail.com=simonpatp@srs-se1.protection.inumbo.net>)
 id 1rQUs9-0000w5-OR
 for xen-devel@lists.xenproject.org; Thu, 18 Jan 2024 16:04:05 +0000
Received: from mail-lj1-x231.google.com (mail-lj1-x231.google.com
 [2a00:1450:4864:20::231])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 338f1b1d-b61b-11ee-98f2-6d05b1d4d9a1;
 Thu, 18 Jan 2024 17:04:04 +0100 (CET)
Received: by mail-lj1-x231.google.com with SMTP id
 38308e7fff4ca-2cceb5f0918so131364221fa.2
 for <xen-devel@lists.xenproject.org>; Thu, 18 Jan 2024 08:04:04 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 338f1b1d-b61b-11ee-98f2-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1705593843; x=1706198643; darn=lists.xenproject.org;
        h=cc:to:subject:message-id:date:from:in-reply-to:references
         :mime-version:from:to:cc:subject:date:message-id:reply-to;
        bh=TKtKOWW1ww90uIePsRdVa5LNuR/oS4oGJ0D+giWI9AU=;
        b=T8L7RAisdNZbmv5+9JGG5iOwlhRq4qQQm/+5sGxO1xj5wcjfi7mBdVteoPhFuu4/gu
         JF3KgFZiWMEXTHdUIgjsQ2NExl2It9XniG+ILZy+GCAcaS9S7y1PFVURhJBtDdbaowvs
         SKQx1xoL9aNJkO+b6hAsFwL/il0FKELelOClqOvzCfiWU3ORzXD9xBoPbSOgNsbxkpDL
         igR08NPfe2ubBcHLyGmWKjeyYH0SrQTWW4FtPd5a4JEj9Okm9nVJ9NKnceBi8nRcK6Gy
         42QMWftACs2RYAexs389WETsedSSe8HJkfDjxs1Ti6uZ9z/GNa7gcLAckT7fWjPWSd91
         BB9A==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705593843; x=1706198643;
        h=cc:to:subject:message-id:date:from:in-reply-to:references
         :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id
         :reply-to;
        bh=TKtKOWW1ww90uIePsRdVa5LNuR/oS4oGJ0D+giWI9AU=;
        b=r+kqjM9kSD7HxFSCn6kr60+KtFmVsQf0iV2nmQUy98x1KkfQTM5BvDZN7KqS/oiYjV
         V11N38IwHDVkzbrFmVBgKesiivEDn70Nn1j6auKJNVglf7oYGaUqwPq9RayYKkrJGf4T
         KWEDBlqcZEt2qqzF4g6FnnEtrSv9Qumj0RDAllOViU5WwhrlcJINooQEtVGzPKyheKEI
         yNxr2GKz9DeKWyVDnqeuM/Ckle77F9hgXjMYm1jSppWlkb4A4OgNTgSQxgBa6zQVqrkF
         Kmnpatbb9Bv0jIvg7VmrjUnPnRJJQQskYjTw2YXeqGPR13jKuVNqR1TJPviswmo++AcP
         9JKA==
X-Gm-Message-State: AOJu0Yy8OtgUr8sVCh43io0g7pVP/Jts8NeGaYUX0BptF8Qn7vQ6OreH
	kwCtB02BCXmZDNM0NsFAe54QSW2Vt2JNNXblOcs8BxO+aDMiU4d+BD6LoE4Y2LPl9GMEHEAShER
	9dwuWf32BV3fFNivycblrPqAvKFc=
X-Google-Smtp-Source: AGHT+IHo4aD34Bivhv/cWMi1W1hGYTP7pQaj/qkbwZHfFramqRKnm74WFj7MpDhbUi30XIUMEatg/quapaOhg2VVGQo=
X-Received: by 2002:a2e:9c47:0:b0:2cc:d864:124e with SMTP id
 t7-20020a2e9c47000000b002ccd864124emr371952ljj.18.1705593843302; Thu, 18 Jan
 2024 08:04:03 -0800 (PST)
MIME-Version: 1.0
References: <CAOCpoWdOH=xGxiQSC1c5Ueb1THxAjH4WiZbCZq-QT+d_KAk3SA@mail.gmail.com>
 <1708c3d7-662a-44bc-b9b3-4ab9f8642d7b@suse.com> <dcaf9d8d-ad5a-4714-936b-79ed0e587f9d@suse.com>
 <CAOCpoWeowZPuQTeBp9nu8p8CDtE=u++wN_UqRoABZtB57D50Qw@mail.gmail.com>
 <ac742d12-ec91-4215-bb42-82a145924b4f@suse.com> <CAOCpoWfQmkhN3hms1xuotSUZzVzR99i9cNGGU2r=yD5PjysMiQ@mail.gmail.com>
 <fa23a590-5869-4e11-8998-1d03742c5919@suse.com> <CAOCpoWf4CMkCWx8uR2NbFrZrKSS78wj1-hFsAUqsjCfsmqooVA@mail.gmail.com>
 <Zajg1O7Z52VTBq31@macbook> <CAOCpoWeO9h7b_CjJb9jtKaEUVv_=XDSVkr55QSg3ArFc4n8G2w@mail.gmail.com>
 <ZajzcpArQYQhdj3T@macbook>
In-Reply-To: <ZajzcpArQYQhdj3T@macbook>
From: Patrick Plenefisch <simonpatp@gmail.com>
Date: Thu, 18 Jan 2024 11:03:51 -0500
Message-ID: <CAOCpoWdx=h-RDZ0j6tthaiGeZo_4GidLsic4Js1G-F+kswzuoQ@mail.gmail.com>
Subject: Re: E820 memory allocation issue on Threadripper platforms
To: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
Cc: Jan Beulich <jbeulich@suse.com>, xen-devel@lists.xenproject.org, 
	Juergen Gross <jgross@suse.com>
Content-Type: multipart/alternative; boundary="000000000000294764060f3a837a"

--000000000000294764060f3a837a
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

On Thu, Jan 18, 2024 at 4:46=E2=80=AFAM Roger Pau Monn=C3=A9 <roger.pau@cit=
rix.com>
wrote:

> >
> > Luckily linux logs are mercifully short. Append this to
> > xen-4.18p_grub_linuxoffset_pvh.log:
> >
> > [    0.778770] i2c_designware AMDI0010:00: Unknown Synopsys component
> type:
> > 0xffffffff
> > [    0.914664] amd_gpio AMDI0030:00: error -EINVAL: IRQ index 0 not fou=
nd
> > [    0.930112] xen_mcelog: Failed to get CPU numbers
> > [    8.324907] ccp 0000:06:00.5: pcim_iomap_regions failed (-16)
> > [    8.338604] sp5100-tco sp5100-tco: Watchdog hardware is disabled
> > [    8.909366] [drm:radeon_get_bios [radeon]] *ERROR* ACPI VFCT table
> > present but broken (too short #2)
>
> Hm, interesting.  I will have to add more debug in order to check
> what's going on here, seems like the table is corrupted somehow.
>
> Would you be able to build a new version of Xen if I provide you with
> an extra debug patch?
>

Yes, I now have a build env setup for testing xen and the linux kernel.


>
> Thanks, Roger.
>

--000000000000294764060f3a837a
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><div dir=3D"ltr"><br></div><br><div class=3D"gmail_quote">=
<div dir=3D"ltr" class=3D"gmail_attr">On Thu, Jan 18, 2024 at 4:46=E2=80=AF=
AM Roger Pau Monn=C3=A9 &lt;<a href=3D"mailto:roger.pau@citrix.com">roger.p=
au@citrix.com</a>&gt; wrote:</div><blockquote class=3D"gmail_quote" style=
=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding=
-left:1ex">
&gt; <br>
&gt; Luckily linux logs are mercifully short. Append this to<br>
&gt; xen-4.18p_grub_linuxoffset_pvh.log:<br>
&gt; <br>
&gt; [=C2=A0 =C2=A0 0.778770] i2c_designware AMDI0010:00: Unknown Synopsys =
component type:<br>
&gt; 0xffffffff<br>
&gt; [=C2=A0 =C2=A0 0.914664] amd_gpio AMDI0030:00: error -EINVAL: IRQ inde=
x 0 not found<br>
&gt; [=C2=A0 =C2=A0 0.930112] xen_mcelog: Failed to get CPU numbers<br>
&gt; [=C2=A0 =C2=A0 8.324907] ccp 0000:06:00.5: pcim_iomap_regions failed (=
-16)<br>
&gt; [=C2=A0 =C2=A0 8.338604] sp5100-tco sp5100-tco: Watchdog hardware is d=
isabled<br>
&gt; [=C2=A0 =C2=A0 8.909366] [drm:radeon_get_bios [radeon]] *ERROR* ACPI V=
FCT table<br>
&gt; present but broken (too short #2)<br>
<br>
Hm, interesting.=C2=A0 I will have to add more debug in order to check<br>
what&#39;s going on here, seems like the table is corrupted somehow.<br>
<br>
Would you be able to build a new version of Xen if I provide you with<br>
an extra debug patch?<br></blockquote><div><br></div><div>Yes, I now have a=
 build env setup for testing xen and the linux kernel.</div><div>=C2=A0<br>=
</div><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;b=
order-left:1px solid rgb(204,204,204);padding-left:1ex">
<br>
Thanks, Roger.<br>
</blockquote></div></div>

--000000000000294764060f3a837a--


From xen-devel-bounces@lists.xenproject.org Thu Jan 18 17:38:23 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 18 Jan 2024 17:38:23 +0000
Received: from list by lists.xenproject.org with outflank-mailman.668852.1041347 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQWL7-0002QS-TA; Thu, 18 Jan 2024 17:38:05 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 668852.1041347; Thu, 18 Jan 2024 17:38:05 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQWL7-0002QL-Pu; Thu, 18 Jan 2024 17:38:05 +0000
Received: by outflank-mailman (input) for mailman id 668852;
 Thu, 18 Jan 2024 17:38:03 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=YsoE=I4=cloud.com=anthony.perard@srs-se1.protection.inumbo.net>)
 id 1rQWL5-0002QF-TO
 for xen-devel@lists.xenproject.org; Thu, 18 Jan 2024 17:38:03 +0000
Received: from mail-wm1-x335.google.com (mail-wm1-x335.google.com
 [2a00:1450:4864:20::335])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 526ea0d2-b628-11ee-9b0f-b553b5be7939;
 Thu, 18 Jan 2024 18:37:59 +0100 (CET)
Received: by mail-wm1-x335.google.com with SMTP id
 5b1f17b1804b1-40e959b1867so5918885e9.1
 for <xen-devel@lists.xenproject.org>; Thu, 18 Jan 2024 09:37:59 -0800 (PST)
Received: from perard.uk.xensource.com (default-46-102-197-194.interdsl.co.uk.
 [46.102.197.194]) by smtp.gmail.com with ESMTPSA id
 p9-20020a05600c1d8900b0040e95632357sm1768493wms.26.2024.01.18.09.37.58
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 18 Jan 2024 09:37:58 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 526ea0d2-b628-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1705599479; x=1706204279; darn=lists.xenproject.org;
        h=in-reply-to:content-disposition:mime-version:references:message-id
         :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to;
        bh=Odkw6lBmhr0HNRPsHIor/laqkbwOgrGwsu5YxKAVXMI=;
        b=t6Yzjt3M9nS4AGkN2/OIdXGO1MjU5CCt4OiSPVr3vIQJZp6YaXQ/2C4n2WL6NoTr2v
         ipR49fMHOHChoRvJ2t6tlCtGZ87UghUyYrcuYisFSma2/xkeEWbGUaofONqTiOJEi/Tm
         uD+Yq+MSfhqk9BCk+0gyTFXFzTn9Xb407jYNo=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705599479; x=1706204279;
        h=in-reply-to:content-disposition:mime-version:references:message-id
         :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to;
        bh=Odkw6lBmhr0HNRPsHIor/laqkbwOgrGwsu5YxKAVXMI=;
        b=MzbHsakW68aINxBdPqKVmGl7Pjvab1azUX1c6Fs7KaMDqwMtlLIirSGMEDdGHx+K0j
         O+f2ptleMABjk/i93AxkUCLIfxGs934Rw7Y/6bj0aZjW8bMQmdTqiWkhoQ9iKkvm4jSQ
         JpdvVd0bq51xjkYy2/P0VNjz/GvbFq/ns0gqMADT+IEjCqvJbUIfdK6E9Wh7utxNyyt9
         dIZp4oOw81S5lD9OomrXJYOry4JTN1FdwZPeHPa6O6/Iz3y2yDhd9fcZ+86cuQTdjtVp
         iZfQ7ty8OcO4rorsSBvcYaDs9dhALej9UnQ+gjglakkKGbnJciWJTjBQtObM7/wPRcaG
         UGKA==
X-Gm-Message-State: AOJu0Yww0/JEeopgo+9BTSUVk+a8G6akANUWZvQ1yompjqaCf/wewLhy
	cgpEx4i1p3IfQkPkYtHwhRwglCA/t1baExKNwyxMq7+tv6hU6g1wjebTtn9cqbk=
X-Google-Smtp-Source: AGHT+IGVU8q4FcjPAiTchxnTCtSZdh1D0y4So0T2vM0KKNX+VpDFugRPqOLvIFUeEoYJobPw+ayQqQ==
X-Received: by 2002:a05:600c:3ca1:b0:40e:532d:50c4 with SMTP id bg33-20020a05600c3ca100b0040e532d50c4mr723641wmb.130.1705599478933;
        Thu, 18 Jan 2024 09:37:58 -0800 (PST)
Date: Thu, 18 Jan 2024 17:37:58 +0000
From: Anthony PERARD <anthony.perard@citrix.com>
To: Jan Beulich <jbeulich@suse.com>
Cc: Michal Orzel <michal.orzel@amd.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	George Dunlap <george.dunlap@citrix.com>,
	Julien Grall <julien@xen.org>,
	Stefano Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>,
	Javi Merino <javi.merino@cloud.com>, xen-devel@lists.xenproject.org
Subject: Re: [PATCH] coverage: filter out lib{fdt,elf}-temp.o
Message-ID: <e399890c-0299-4ec5-884e-0637ae6cb5b0@perard>
References: <20240118120641.24824-1-michal.orzel@amd.com>
 <8057ae41-43b5-4469-b691-4e7f16b8dd4d@suse.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <8057ae41-43b5-4469-b691-4e7f16b8dd4d@suse.com>

On Thu, Jan 18, 2024 at 02:12:21PM +0100, Jan Beulich wrote:
> On 18.01.2024 13:06, Michal Orzel wrote:
> > At the moment, trying to run xencov read/reset (calling SYSCTL_coverage_op
> > under the hood) results in a crash. This is due to an attempt to
> > access code in the .init.* sections (libfdt for Arm and libelf for x86)
> > that are stripped after boot. Normally, the build system compiles any
> > *.init.o file without COV_FLAGS. However, these two libraries are
> > handled differently as sections will be renamed to init after linking.
> > 
> > This worked until e321576f4047 ("xen/build: start using if_changed")
> > that added lib{fdt,elf}-temp.o to extra-y. Any file listed there without
> > *.init.o suffix will be part of non-init-objects for which COV_FLAGS
> > will be appended.
> 
> While this is true, aiui COV_FLAGS would be empty for anything listed
> in nocov-y and all of the prerequisites of those objects (iirc target-
> specific variable settings propagate to prerequisites). Therefore ...
> 
> > In such case, the solution is to add a file to nocov-y.
> 
> ... libelf.o / libfdt.o already being listed there ought to suffice.
> Alternatively listing only libelf-temp.o / libfdt-temp.o ought to
> suffice as well.
> 
> Since you apparently observed things not working, I must be missing
> something.

Yes, $(extra-y) is like $(obj-y), but objects there will not be added
"built_in.o". So, make is likely building "libelf-temp.o" and deps
because it's in $(extra-y) rather than because it's a prerequisite of
"libelf.o". We could ask make to process prerequisite in a reverse
order, and suddenly, the command line to make all "libelf-*.o" is
different: `make --shuffle=reverse V=2`.

So, adding extra object to $(nocov-y) is a workaround, but I think a
better fix would be to add those objects to $(targets) instead of
$(extra-y). I think I've made a mistake by using $(extra-y) instead of
$(targets) in that original commit.

Cheers,

-- 
Anthony PERARD


From xen-devel-bounces@lists.xenproject.org Thu Jan 18 17:45:22 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 18 Jan 2024 17:45:22 +0000
Received: from list by lists.xenproject.org with outflank-mailman.668856.1041357 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQWS5-0004Qj-KR; Thu, 18 Jan 2024 17:45:17 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 668856.1041357; Thu, 18 Jan 2024 17:45:17 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQWS5-0004Qc-Gk; Thu, 18 Jan 2024 17:45:17 +0000
Received: by outflank-mailman (input) for mailman id 668856;
 Thu, 18 Jan 2024 17:45:16 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=aSQR=I4=cloud.com=roger.pau@srs-se1.protection.inumbo.net>)
 id 1rQWS4-0004QW-LU
 for xen-devel@lists.xenproject.org; Thu, 18 Jan 2024 17:45:16 +0000
Received: from mail-lf1-x129.google.com (mail-lf1-x129.google.com
 [2a00:1450:4864:20::129])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 55d6bcce-b629-11ee-9b0f-b553b5be7939;
 Thu, 18 Jan 2024 18:45:14 +0100 (CET)
Received: by mail-lf1-x129.google.com with SMTP id
 2adb3069b0e04-50e7c6f0487so14787348e87.3
 for <xen-devel@lists.xenproject.org>; Thu, 18 Jan 2024 09:45:14 -0800 (PST)
Received: from localhost ([213.195.127.68]) by smtp.gmail.com with ESMTPSA id
 z14-20020a056512308e00b0050e7a098a75sm697744lfd.196.2024.01.18.09.45.13
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 18 Jan 2024 09:45:13 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 55d6bcce-b629-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1705599914; x=1706204714; darn=lists.xenproject.org;
        h=in-reply-to:content-disposition:mime-version:references:message-id
         :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to;
        bh=uoplj4kww1X2iLvkowq3S1qsS0kXO7lu97uiKW8Uo2U=;
        b=Vif9QeAaPyNfTplKLPoXEKFtnqXYowrAlJ1gzvKWMbksT77sT5dLqqlysgV/mZBymL
         A3gB82Z5Fb1fD4Sf5EctDnPcnxe7J5f+UNG72hCqBDw6jFLAblV7lqXKzlFLA4eRBakq
         znEZy1O/JXOYrJ590jT2QwR3F8XnUaiCZLsJ8=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705599914; x=1706204714;
        h=in-reply-to:content-disposition:mime-version:references:message-id
         :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to;
        bh=uoplj4kww1X2iLvkowq3S1qsS0kXO7lu97uiKW8Uo2U=;
        b=sEePWyuzzbh4TWsc9ldltSFG5NN6/rhsMG6P9wxnBqNhTfpdgJHOJgygIZ3CXN/f6v
         UEm1i39w3gwHPX8gCSrmJbyyft1X4Dow4IQcqOIkgkg0plGTn7wWIUDAS4ASC9I4Agt8
         yNwiwXI0kGAJaQhL3lxF5WtZOGBkspxxrsY9q6mA7c3KajwPXC0+VBAWSYQHyTCndY+v
         R3fxZwN2LH1K4LMuF5Qu7O0oMGziVFmLfcRGtBKkPGApb36QeGHG2PHjkZV4xxiRnSOC
         WDCe0DtAiODhlPcmkh/p3h4/XUu1NY13CGlIeOJtPyqpL2aKUu7nAeY637MDmXgAji4A
         CIRw==
X-Gm-Message-State: AOJu0YwX5xM6i9RFN0LQzmUeDo1L/BYMbRVhEot08A7HcTYKc8h6Pglf
	+Ggd30qQmwj506jgpuLfcOIWTom4odiey9+njQVKDqMJVGjMrhOG+V7oCUKC3pI=
X-Google-Smtp-Source: AGHT+IEEcXES/ve95R86h8Cp9wiDlVW2JBa8y18aw/PTAKj2jMbp1QfeIvdL/4iB8Q0t25BRkng3QA==
X-Received: by 2002:a05:6512:2381:b0:50e:7e15:a934 with SMTP id c1-20020a056512238100b0050e7e15a934mr1555lfv.20.1705599914018;
        Thu, 18 Jan 2024 09:45:14 -0800 (PST)
Date: Thu, 18 Jan 2024 18:45:12 +0100
From: Roger Pau =?utf-8?B?TW9ubsOp?= <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>
Subject: Re: [PATCH v5 2/8] x86: annotate entry points with type and size
Message-ID: <ZaljqHduUIvsdbqm@macbook>
References: <e4bf47ca-2ae6-1fd4-56a6-e4e777150b64@suse.com>
 <7a133ed9-9d13-4e2c-893a-00c083c8a35d@suse.com>
 <9096ad1a-5d86-4dd1-a7c3-6ad2f7e5a623@suse.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
In-Reply-To: <9096ad1a-5d86-4dd1-a7c3-6ad2f7e5a623@suse.com>

On Mon, Jan 15, 2024 at 03:34:56PM +0100, Jan Beulich wrote:
> @@ -625,7 +627,7 @@ ENTRY(dom_crash_sync_extable)
>  
>  /* No special register assumptions. */
>  #ifdef CONFIG_PV
> -ENTRY(continue_pv_domain)
> +FUNC(continue_pv_domain)
>          ENDBR64
>          call  check_wakeup_from_wait
>  ret_from_intr:
> @@ -640,26 +642,28 @@ ret_from_intr:
>  #else
>          jmp   test_all_events
>  #endif
> +END(continue_pv_domain)
>  #else
> -ret_from_intr:
> +FUNC_LOCAL(ret_from_intr, 0)

Why does this need to have an alignment of 0? There's no fallthrough
of previous code AFAICT.

>          ASSERT_CONTEXT_IS_XEN
>          jmp   restore_all_xen
> +END(ret_from_intr)
>  #endif
>  
>          .section .init.text, "ax", @progbits
> -ENTRY(early_page_fault)
> +FUNC(early_page_fault)
>          ENDBR64
>          movl  $X86_EXC_PF, 4(%rsp)
>          SAVE_ALL
>          movq  %rsp, %rdi
>          call  do_early_page_fault
>          jmp   restore_all_xen
> +END(early_page_fault)
>  
>          .section .text.entry, "ax", @progbits
>  
> -        ALIGN
>  /* %r12=ist_exit */
> -restore_all_xen:
> +FUNC_LOCAL(restore_all_xen)
>  
>  #ifdef CONFIG_DEBUG
>          mov   %rsp, %rdi
> @@ -683,8 +687,9 @@ UNLIKELY_END(exit_cr3)
>  
>          RESTORE_ALL adj=8
>          iretq
> +END(restore_all_xen)
>  
> -ENTRY(common_interrupt)
> +FUNC(common_interrupt)
>          ALTERNATIVE "", clac, X86_FEATURE_XEN_SMAP
>          SAVE_ALL
>  
> @@ -713,12 +718,14 @@ ENTRY(common_interrupt)
>          mov   %r15, STACK_CPUINFO_FIELD(xen_cr3)(%r14)
>          mov   %bl, STACK_CPUINFO_FIELD(use_pv_cr3)(%r14)
>          jmp ret_from_intr
> +END(common_interrupt)
>  
> -ENTRY(entry_PF)
> +FUNC(entry_PF)
>          ENDBR64
>          movl  $X86_EXC_PF, 4(%rsp)
> +END(entry_PF)
>  /* No special register assumptions. */
> -GLOBAL(handle_exception)
> +FUNC(handle_exception, 0)

Given patch 8/8 that enables support for placing FUNC() into separate
sections, the fallthrough arrangement here with entry_PF is no longer
guaranteed, as the linker could re-order the sections and thus
entry_PF could fallthrough into another text section?

IOW: entry_PF needs a "jmp handle_exception", and then
handle_exception itself can be padded as required by the default
alignment?

>          ALTERNATIVE "", clac, X86_FEATURE_XEN_SMAP
>          SAVE_ALL
>  
> @@ -886,92 +893,108 @@ FATAL_exception_with_ints_disabled:
>          xorl  %esi,%esi
>          movq  %rsp,%rdi
>          tailcall fatal_trap
> +END(handle_exception)
>  
> -ENTRY(entry_DE)
> +FUNC(entry_DE)
>          ENDBR64
>          pushq $0
>          movl  $X86_EXC_DE, 4(%rsp)
>          jmp   handle_exception
> +END(entry_DE)
>  
> -ENTRY(entry_MF)
> +FUNC(entry_MF)
>          ENDBR64
>          pushq $0
>          movl  $X86_EXC_MF, 4(%rsp)
>          jmp   handle_exception
> +END(entry_MF)
>  
> -ENTRY(entry_XM)
> +FUNC(entry_XM)
>          ENDBR64
>          pushq $0
>          movl  $X86_EXC_XM, 4(%rsp)
>          jmp   handle_exception
> +END(entry_XM)
>  
> -ENTRY(entry_NM)
> +FUNC(entry_NM)
>          ENDBR64
>          pushq $0
>          movl  $X86_EXC_NM, 4(%rsp)
>          jmp   handle_exception
> +END(entry_NM)
>  
> -ENTRY(entry_DB)
> +FUNC(entry_DB)
>          ENDBR64
>          pushq $0
>          movl  $X86_EXC_DB, 4(%rsp)
>          jmp   handle_ist_exception
> +END(entry_DB)
>  
> -ENTRY(entry_BP)
> +FUNC(entry_BP)
>          ENDBR64
>          pushq $0
>          movl  $X86_EXC_BP, 4(%rsp)
>          jmp   handle_exception
> +END(entry_BP)
>  
> -ENTRY(entry_OF)
> +FUNC(entry_OF)
>          ENDBR64
>          pushq $0
>          movl  $X86_EXC_OF, 4(%rsp)
>          jmp   handle_exception
> +END(entry_OF)
>  
> -ENTRY(entry_BR)
> +FUNC(entry_BR)
>          ENDBR64
>          pushq $0
>          movl  $X86_EXC_BR, 4(%rsp)
>          jmp   handle_exception
> +END(entry_BR)
>  
> -ENTRY(entry_UD)
> +FUNC(entry_UD)
>          ENDBR64
>          pushq $0
>          movl  $X86_EXC_UD, 4(%rsp)
>          jmp   handle_exception
> +END(entry_UD)
>  
> -ENTRY(entry_TS)
> +FUNC(entry_TS)
>          ENDBR64
>          movl  $X86_EXC_TS, 4(%rsp)
>          jmp   handle_exception
> +END(entry_TS)
>  
> -ENTRY(entry_NP)
> +FUNC(entry_NP)
>          ENDBR64
>          movl  $X86_EXC_NP, 4(%rsp)
>          jmp   handle_exception
> +END(entry_NP)
>  
> -ENTRY(entry_SS)
> +FUNC(entry_SS)
>          ENDBR64
>          movl  $X86_EXC_SS, 4(%rsp)
>          jmp   handle_exception
> +END(entry_SS)
>  
> -ENTRY(entry_GP)
> +FUNC(entry_GP)
>          ENDBR64
>          movl  $X86_EXC_GP, 4(%rsp)
>          jmp   handle_exception
> +END(entry_GP)
>  
> -ENTRY(entry_AC)
> +FUNC(entry_AC)
>          ENDBR64
>          movl  $X86_EXC_AC, 4(%rsp)
>          jmp   handle_exception
> +END(entry_AC)
>  
> -ENTRY(entry_CP)
> +FUNC(entry_CP)
>          ENDBR64
>          movl  $X86_EXC_CP, 4(%rsp)
>          jmp   handle_exception
> +END(entry_CP)
>  
> -ENTRY(entry_DF)
> +FUNC(entry_DF)
>          ENDBR64
>          movl  $X86_EXC_DF, 4(%rsp)
>          /* Set AC to reduce chance of further SMAP faults */
> @@ -994,8 +1017,9 @@ ENTRY(entry_DF)
>  
>          movq  %rsp,%rdi
>          tailcall do_double_fault
> +END(entry_DF)
>  
> -ENTRY(entry_NMI)
> +FUNC(entry_NMI)
>          ENDBR64
>          pushq $0
>          movl  $X86_EXC_NMI, 4(%rsp)
> @@ -1126,21 +1150,24 @@ handle_ist_exception:
>          ASSERT_CONTEXT_IS_XEN
>          jmp   restore_all_xen
>  #endif
> +END(entry_NMI)
>  
> -ENTRY(entry_MC)
> +FUNC(entry_MC)
>          ENDBR64
>          pushq $0
>          movl  $X86_EXC_MC, 4(%rsp)
>          jmp   handle_ist_exception
> +END(entry_MC)
>  
>  /* No op trap handler.  Required for kexec crash path. */
> -GLOBAL(trap_nop)
> +FUNC(trap_nop, 0)

Could this use the default alignment?

>          ENDBR64
>          iretq
> +END(trap_nop)
>  
>  /* Table of automatically generated entry points.  One per vector. */
>          .pushsection .init.rodata, "a", @progbits
> -GLOBAL(autogen_entrypoints)
> +DATA(autogen_entrypoints, 8)
>          /* pop into the .init.rodata section and record an entry point. */
>          .macro entrypoint ent
>          .pushsection .init.rodata, "a", @progbits
> @@ -1149,7 +1176,7 @@ GLOBAL(autogen_entrypoints)
>          .endm
>  
>          .popsection
> -autogen_stubs: /* Automatically generated stubs. */
> +FUNC_LOCAL(autogen_stubs, 0) /* Automatically generated stubs. */

Won't it be good to align the stubs?  As that's possible to make them
faster?

Thanks, Roger.


From xen-devel-bounces@lists.xenproject.org Thu Jan 18 20:10:53 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 18 Jan 2024 20:10:53 +0000
Received: from list by lists.xenproject.org with outflank-mailman.668861.1041367 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQYig-0002t7-2M; Thu, 18 Jan 2024 20:10:34 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 668861.1041367; Thu, 18 Jan 2024 20:10:34 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQYif-0002t0-UI; Thu, 18 Jan 2024 20:10:33 +0000
Received: by outflank-mailman (input) for mailman id 668861;
 Thu, 18 Jan 2024 20:10:32 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rQYie-0002sp-GF; Thu, 18 Jan 2024 20:10:32 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rQYie-0005Sx-1D; Thu, 18 Jan 2024 20:10:32 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rQYid-0008Ky-Kt; Thu, 18 Jan 2024 20:10:31 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rQYid-00060M-KU; Thu, 18 Jan 2024 20:10:31 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=Xtye/MRPGtPiSybwUuMMRxSSZSHvlOQA21QykZQif4o=; b=3p0KS2kaSAWsn/yNuUhZHPp8OR
	Dg5xnAhenDe5ElvUmv84kJQW8Va5YgR8qInKHXkArJLelGvlfC5sMDeHtOLzaz0ILkkQ6KSSKvGX4
	Ly0kikHYsWw1ebF4Hmn0G8sFamEjG8m+rFtr3gyOJak3JgLYU+9S8mKp5Tv00BIAxQfc=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184390-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [linux-linus test] 184390: regressions - FAIL
X-Osstest-Failures:
    linux-linus:test-amd64-amd64-dom0pvh-xl-amd:guest-start/debian.repeat:fail:regression
    linux-linus:build-i386:xen-build:fail:regression
    linux-linus:build-i386-libvirt:build-check(1):blocked:nonblocking
    linux-linus:test-armhf-armhf-libvirt:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    linux-linus:test-amd64-amd64-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    linux-linus:test-amd64-amd64-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-raw:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-qcow2:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-qemuu-nested-amd:debian-hvm-install/l1/l2:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-xsm:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-xsm:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-xsm:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-credit1:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-credit1:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-thunderx:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-thunderx:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-libvirt-xsm:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-credit2:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-libvirt-xsm:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-credit2:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-arndale:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-arndale:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-multivcpu:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-multivcpu:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-rtds:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-rtds:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit1:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit1:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-libvirt-raw:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-vhd:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-vhd:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-vhd:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-vhd:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-qcow2:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit2:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit2:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-qcow2:migrate-support-check:fail:nonblocking
X-Osstest-Versions-This:
    linux=296455ade1fdcf5f8f8c033201633b60946c589a
X-Osstest-Versions-That:
    linux=0dd3ee31125508cd67f7e7172247f05b7fd1753a
From: osstest service owner <osstest-admin@xenproject.org>
Date: Thu, 18 Jan 2024 20:10:31 +0000

flight 184390 linux-linus real [real]
http://logs.test-lab.xenproject.org/osstest/logs/184390/

Regressions :-(

Tests which did not succeed and are blocking,
including tests which could not be run:
 test-amd64-amd64-dom0pvh-xl-amd 22 guest-start/debian.repeat fail REGR. vs. 184270
 build-i386                    6 xen-build                fail REGR. vs. 184270

Tests which did not succeed, but are not blocking:
 build-i386-libvirt            1 build-check(1)               blocked  n/a
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 184270
 test-amd64-amd64-xl-qemut-win7-amd64 19 guest-stop            fail like 184270
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 184270
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 184270
 test-armhf-armhf-libvirt-raw 15 saverestore-support-check    fail  like 184270
 test-amd64-amd64-xl-qemut-ws16-amd64 19 guest-stop            fail like 184270
 test-armhf-armhf-libvirt-qcow2 15 saverestore-support-check   fail like 184270
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 184270
 test-amd64-amd64-libvirt     15 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-xsm      15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-xsm      16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-credit1  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit1  16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl          15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl          16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-thunderx 15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-thunderx 16 saverestore-support-check    fail   never pass
 test-arm64-arm64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit2  15 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-xsm 16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-credit2  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-arndale  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-arndale  16 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-armhf-armhf-libvirt     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-multivcpu 15 migrate-support-check        fail  never pass
 test-armhf-armhf-xl-multivcpu 16 saverestore-support-check    fail  never pass
 test-armhf-armhf-xl-rtds     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-rtds     16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-credit1  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit1  16 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-raw 14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 15 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-vhd      14 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-vhd      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-raw 14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      15 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-qcow2 14 migrate-support-check        fail never pass
 test-armhf-armhf-xl          15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-credit2  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit2  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-qcow2 14 migrate-support-check        fail never pass

version targeted for testing:
 linux                296455ade1fdcf5f8f8c033201633b60946c589a
baseline version:
 linux                0dd3ee31125508cd67f7e7172247f05b7fd1753a

Last test of basis   184270  2024-01-07 20:42:19 Z   10 days
Failing since        184283  2024-01-08 20:10:43 Z    9 days   17 attempts
Testing same since   184390  2024-01-18 07:05:28 Z    0 days    1 attempts

------------------------------------------------------------
1874 people touched revisions under test,
not listing them all

jobs:
 build-amd64-xsm                                              pass    
 build-arm64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64                                                  pass    
 build-arm64                                                  pass    
 build-armhf                                                  pass    
 build-i386                                                   fail    
 build-amd64-libvirt                                          pass    
 build-arm64-libvirt                                          pass    
 build-armhf-libvirt                                          pass    
 build-i386-libvirt                                           blocked 
 build-amd64-pvops                                            pass    
 build-arm64-pvops                                            pass    
 build-armhf-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-amd64-amd64-xl                                          pass    
 test-amd64-coresched-amd64-xl                                pass    
 test-arm64-arm64-xl                                          pass    
 test-armhf-armhf-xl                                          pass    
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm           pass    
 test-amd64-amd64-xl-qemut-stubdom-debianhvm-amd64-xsm        pass    
 test-amd64-amd64-xl-qemut-debianhvm-i386-xsm                 pass    
 test-amd64-amd64-xl-qemuu-debianhvm-i386-xsm                 pass    
 test-amd64-amd64-libvirt-xsm                                 pass    
 test-arm64-arm64-libvirt-xsm                                 pass    
 test-amd64-amd64-xl-xsm                                      pass    
 test-arm64-arm64-xl-xsm                                      pass    
 test-amd64-amd64-qemuu-nested-amd                            fail    
 test-amd64-amd64-xl-pvhv2-amd                                pass    
 test-amd64-amd64-dom0pvh-xl-amd                              fail    
 test-amd64-amd64-xl-qemut-debianhvm-amd64                    pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64                    pass    
 test-amd64-amd64-freebsd11-amd64                             pass    
 test-amd64-amd64-freebsd12-amd64                             pass    
 test-amd64-amd64-xl-qemuu-ovmf-amd64                         pass    
 test-amd64-amd64-xl-qemut-win7-amd64                         fail    
 test-amd64-amd64-xl-qemuu-win7-amd64                         fail    
 test-amd64-amd64-xl-qemut-ws16-amd64                         fail    
 test-amd64-amd64-xl-qemuu-ws16-amd64                         fail    
 test-armhf-armhf-xl-arndale                                  pass    
 test-amd64-amd64-examine-bios                                pass    
 test-amd64-amd64-xl-credit1                                  pass    
 test-arm64-arm64-xl-credit1                                  pass    
 test-armhf-armhf-xl-credit1                                  pass    
 test-amd64-amd64-xl-credit2                                  pass    
 test-arm64-arm64-xl-credit2                                  pass    
 test-armhf-armhf-xl-credit2                                  pass    
 test-amd64-amd64-xl-qemuu-dmrestrict-amd64-dmrestrict        pass    
 test-amd64-amd64-examine                                     pass    
 test-arm64-arm64-examine                                     pass    
 test-armhf-armhf-examine                                     pass    
 test-amd64-amd64-qemuu-nested-intel                          pass    
 test-amd64-amd64-xl-pvhv2-intel                              pass    
 test-amd64-amd64-dom0pvh-xl-intel                            pass    
 test-amd64-amd64-libvirt                                     pass    
 test-armhf-armhf-libvirt                                     pass    
 test-amd64-amd64-xl-multivcpu                                pass    
 test-armhf-armhf-xl-multivcpu                                pass    
 test-amd64-amd64-pair                                        pass    
 test-amd64-amd64-libvirt-pair                                pass    
 test-amd64-amd64-xl-pvshim                                   pass    
 test-amd64-amd64-pygrub                                      pass    
 test-amd64-amd64-libvirt-qcow2                               pass    
 test-armhf-armhf-libvirt-qcow2                               pass    
 test-amd64-amd64-libvirt-raw                                 pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-armhf-armhf-libvirt-raw                                 pass    
 test-amd64-amd64-xl-rtds                                     pass    
 test-armhf-armhf-xl-rtds                                     pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64-shadow             pass    
 test-amd64-amd64-xl-shadow                                   pass    
 test-arm64-arm64-xl-thunderx                                 pass    
 test-amd64-amd64-examine-uefi                                pass    
 test-amd64-amd64-xl-vhd                                      pass    
 test-arm64-arm64-xl-vhd                                      pass    
 test-armhf-armhf-xl-vhd                                      pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Not pushing.

(No revision log; it would be 229361 lines long.)


From xen-devel-bounces@lists.xenproject.org Thu Jan 18 21:26:28 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 18 Jan 2024 21:26:28 +0000
Received: from list by lists.xenproject.org with outflank-mailman.668869.1041377 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQZts-00048x-JV; Thu, 18 Jan 2024 21:26:12 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 668869.1041377; Thu, 18 Jan 2024 21:26:12 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQZts-00048q-GY; Thu, 18 Jan 2024 21:26:12 +0000
Received: by outflank-mailman (input) for mailman id 668869;
 Thu, 18 Jan 2024 21:26:11 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rQZtr-00048g-0b; Thu, 18 Jan 2024 21:26:11 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rQZtq-0006oN-RG; Thu, 18 Jan 2024 21:26:10 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rQZtq-0001hg-IL; Thu, 18 Jan 2024 21:26:10 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rQZtq-0007t5-Hp; Thu, 18 Jan 2024 21:26:10 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=sqYJzcwmpzYpfeAAF/dggHkpeTk7cSgv6fe+v1HhXwQ=; b=s8WEA4UQgF3iZYu7KoeFl4y1xx
	MCIVpSja507rUJIVAvVnM4QveQPb7hAQH6+W73o6lwkL2/DFnCGRYaFerMEcNg3Gf9hQwldAz3Y7w
	1kIGyZrVFaVeeJUcAQFGAFLwR76e3m147CAPAwIpsxghbQ97EoSGdnZTHoEvaI4Om4Yc=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184395-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [ovmf test] 184395: all pass - PUSHED
X-Osstest-Versions-This:
    ovmf=264636d8e6983e0f6dc6be2fca9d84ec81315954
X-Osstest-Versions-That:
    ovmf=59f024c76ee57c2bec84794536302fc770cd6ec2
From: osstest service owner <osstest-admin@xenproject.org>
Date: Thu, 18 Jan 2024 21:26:10 +0000

flight 184395 ovmf real [real]
http://logs.test-lab.xenproject.org/osstest/logs/184395/

Perfect :-)
All tests in this flight passed as required
version targeted for testing:
 ovmf                 264636d8e6983e0f6dc6be2fca9d84ec81315954
baseline version:
 ovmf                 59f024c76ee57c2bec84794536302fc770cd6ec2

Last test of basis   184379  2024-01-16 23:44:09 Z    1 days
Testing same since   184395  2024-01-18 19:44:20 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Doug Flick <dougflick@microsoft.com>
  Doug Flick [MSFT] <doug.edk2@gmail.com>
  Gerd Hoffmann <kraxel@redhat.com>

jobs:
 build-amd64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-amd64-amd64-xl-qemuu-ovmf-amd64                         pass    
 test-amd64-i386-xl-qemuu-ovmf-amd64                          pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Pushing revision :

To xenbits.xen.org:/home/xen/git/osstest/ovmf.git
   59f024c76e..264636d8e6  264636d8e6983e0f6dc6be2fca9d84ec81315954 -> xen-tested-master


From xen-devel-bounces@lists.xenproject.org Fri Jan 19 01:27:14 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 19 Jan 2024 01:27:14 +0000
Received: from list by lists.xenproject.org with outflank-mailman.668887.1041392 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQder-00030H-Nq; Fri, 19 Jan 2024 01:26:57 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 668887.1041392; Fri, 19 Jan 2024 01:26:57 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQder-00030A-Kl; Fri, 19 Jan 2024 01:26:57 +0000
Received: by outflank-mailman (input) for mailman id 668887;
 Fri, 19 Jan 2024 01:26:57 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rQder-000300-At; Fri, 19 Jan 2024 01:26:57 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rQder-0005S2-0L; Fri, 19 Jan 2024 01:26:57 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rQdeq-0002ZK-G7; Fri, 19 Jan 2024 01:26:56 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rQdeq-0002DV-Fi; Fri, 19 Jan 2024 01:26:56 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=FcF6TBG1aW8Hk3iGMfHBu1XRHSTIBN9xa4MHXBy0PRo=; b=KOX5gkGt0mtm08w+i0qFYpINg6
	LlqliENYhqcbxh4Gm/4wi4ZySeaRkKpn7V/paHfuxai1rBzTa7O9N6RD6vfP4JuOqTxzIvdAsTFWJ
	F+Cl11TriYQcDDpGrlmckC7QyhzPgC2nFLoWEtetgxm2km1ag+1zMFD1tvCzFsGps0u4=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184397-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [xen-unstable-smoke test] 184397: tolerable all pass - PUSHED
X-Osstest-Failures:
    xen-unstable-smoke:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    xen-unstable-smoke:test-arm64-arm64-xl-xsm:migrate-support-check:fail:nonblocking
    xen-unstable-smoke:test-arm64-arm64-xl-xsm:saverestore-support-check:fail:nonblocking
    xen-unstable-smoke:test-armhf-armhf-xl:migrate-support-check:fail:nonblocking
    xen-unstable-smoke:test-armhf-armhf-xl:saverestore-support-check:fail:nonblocking
X-Osstest-Versions-This:
    xen=c30021be302aa2a644ef5544097fb8bb763ec140
X-Osstest-Versions-That:
    xen=730d2637a8e5b98dc8e4e366179b4cedc496b3ad
From: osstest service owner <osstest-admin@xenproject.org>
Date: Fri, 19 Jan 2024 01:26:56 +0000

flight 184397 xen-unstable-smoke real [real]
http://logs.test-lab.xenproject.org/osstest/logs/184397/

Failures :-/ but no regressions.

Tests which did not succeed, but are not blocking:
 test-amd64-amd64-libvirt     15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-xsm      15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-xsm      16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl          15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          16 saverestore-support-check    fail   never pass

version targeted for testing:
 xen                  c30021be302aa2a644ef5544097fb8bb763ec140
baseline version:
 xen                  730d2637a8e5b98dc8e4e366179b4cedc496b3ad

Last test of basis   184385  2024-01-17 10:02:19 Z    1 days
Testing same since   184397  2024-01-18 22:02:10 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Andrew Cooper <andrew.cooper3@citrix.com>

jobs:
 build-arm64-xsm                                              pass    
 build-amd64                                                  pass    
 build-armhf                                                  pass    
 build-amd64-libvirt                                          pass    
 test-armhf-armhf-xl                                          pass    
 test-arm64-arm64-xl-xsm                                      pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64                    pass    
 test-amd64-amd64-libvirt                                     pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Pushing revision :

To xenbits.xen.org:/home/xen/git/xen.git
   730d2637a8..c30021be30  c30021be302aa2a644ef5544097fb8bb763ec140 -> smoke


From xen-devel-bounces@lists.xenproject.org Fri Jan 19 05:51:36 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 19 Jan 2024 05:51:36 +0000
Received: from list by lists.xenproject.org with outflank-mailman.668913.1041401 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQhmg-0002qx-Ds; Fri, 19 Jan 2024 05:51:18 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 668913.1041401; Fri, 19 Jan 2024 05:51:18 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQhmg-0002qq-BL; Fri, 19 Jan 2024 05:51:18 +0000
Received: by outflank-mailman (input) for mailman id 668913;
 Fri, 19 Jan 2024 05:51:17 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rQhmf-0002qg-5x; Fri, 19 Jan 2024 05:51:17 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rQhmf-0002YS-07; Fri, 19 Jan 2024 05:51:17 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rQhme-0006hg-Ln; Fri, 19 Jan 2024 05:51:16 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rQhme-00087c-Jx; Fri, 19 Jan 2024 05:51:16 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=kDkfx2G+SG6WAZ6yXCPBjAUubLfpFjN941t2eLhDz4g=; b=hBAFNLmiAMZpCz6EqMUDo4z/l8
	13CnznmNTDKiVGJt5GNdBO+gsKdVk4hQYZQy+ZvFgAKkp5hD4eWpRf25NOk1wYH3cxKCsxpOB6NdC
	ygIjMsNja6cks58gf9LHgzAoLd9rBpe/+G8Y8VuEQVMG2qIPTEEzDiP7nIkaNDPZO8go=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184396-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [linux-linus test] 184396: tolerable FAIL - PUSHED
X-Osstest-Failures:
    linux-linus:test-armhf-armhf-libvirt:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    linux-linus:test-amd64-amd64-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    linux-linus:test-amd64-amd64-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-raw:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-qcow2:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-qemuu-nested-amd:debian-hvm-install/l1/l2:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-xsm:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-xsm:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-credit1:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-xsm:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-credit1:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-thunderx:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-thunderx:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-libvirt-xsm:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-credit2:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-libvirt-xsm:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-credit2:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-arndale:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-arndale:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-multivcpu:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-multivcpu:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-rtds:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-rtds:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit1:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit1:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-libvirt-raw:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-vhd:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-vhd:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-vhd:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-vhd:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-qcow2:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit2:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit2:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-qcow2:migrate-support-check:fail:nonblocking
X-Osstest-Versions-This:
    linux=b0d326da462e20285236e11e4cbc32085de9f363
X-Osstest-Versions-That:
    linux=0dd3ee31125508cd67f7e7172247f05b7fd1753a
From: osstest service owner <osstest-admin@xenproject.org>
Date: Fri, 19 Jan 2024 05:51:16 +0000

flight 184396 linux-linus real [real]
http://logs.test-lab.xenproject.org/osstest/logs/184396/

Failures :-/ but no regressions.

Tests which did not succeed, but are not blocking:
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 184270
 test-amd64-amd64-xl-qemut-win7-amd64 19 guest-stop            fail like 184270
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 184270
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 184270
 test-armhf-armhf-libvirt-raw 15 saverestore-support-check    fail  like 184270
 test-amd64-amd64-xl-qemut-ws16-amd64 19 guest-stop            fail like 184270
 test-armhf-armhf-libvirt-qcow2 15 saverestore-support-check   fail like 184270
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 184270
 test-amd64-amd64-libvirt     15 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-xsm      15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit1  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-xsm      16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-credit1  16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl          15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl          16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-thunderx 15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-thunderx 16 saverestore-support-check    fail   never pass
 test-arm64-arm64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit2  15 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-xsm 16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-credit2  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-arndale  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-arndale  16 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-armhf-armhf-libvirt     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-multivcpu 15 migrate-support-check        fail  never pass
 test-armhf-armhf-xl-multivcpu 16 saverestore-support-check    fail  never pass
 test-armhf-armhf-xl-rtds     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-rtds     16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-credit1  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit1  16 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-raw 14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 15 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-vhd      14 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-vhd      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-raw 14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      15 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-qcow2 14 migrate-support-check        fail never pass
 test-armhf-armhf-xl          15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-credit2  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit2  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-qcow2 14 migrate-support-check        fail never pass

version targeted for testing:
 linux                b0d326da462e20285236e11e4cbc32085de9f363
baseline version:
 linux                0dd3ee31125508cd67f7e7172247f05b7fd1753a

Last test of basis   184270  2024-01-07 20:42:19 Z   11 days
Failing since        184283  2024-01-08 20:10:43 Z   10 days   18 attempts
Testing same since   184396  2024-01-18 20:42:11 Z    0 days    1 attempts

------------------------------------------------------------
1946 people touched revisions under test,
not listing them all

jobs:
 build-amd64-xsm                                              pass    
 build-arm64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64                                                  pass    
 build-arm64                                                  pass    
 build-armhf                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-arm64-libvirt                                          pass    
 build-armhf-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-pvops                                            pass    
 build-arm64-pvops                                            pass    
 build-armhf-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-amd64-amd64-xl                                          pass    
 test-amd64-coresched-amd64-xl                                pass    
 test-arm64-arm64-xl                                          pass    
 test-armhf-armhf-xl                                          pass    
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm           pass    
 test-amd64-amd64-xl-qemut-stubdom-debianhvm-amd64-xsm        pass    
 test-amd64-amd64-xl-qemut-debianhvm-i386-xsm                 pass    
 test-amd64-amd64-xl-qemuu-debianhvm-i386-xsm                 pass    
 test-amd64-amd64-libvirt-xsm                                 pass    
 test-arm64-arm64-libvirt-xsm                                 pass    
 test-amd64-amd64-xl-xsm                                      pass    
 test-arm64-arm64-xl-xsm                                      pass    
 test-amd64-amd64-qemuu-nested-amd                            fail    
 test-amd64-amd64-xl-pvhv2-amd                                pass    
 test-amd64-amd64-dom0pvh-xl-amd                              pass    
 test-amd64-amd64-xl-qemut-debianhvm-amd64                    pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64                    pass    
 test-amd64-amd64-freebsd11-amd64                             pass    
 test-amd64-amd64-freebsd12-amd64                             pass    
 test-amd64-amd64-xl-qemuu-ovmf-amd64                         pass    
 test-amd64-amd64-xl-qemut-win7-amd64                         fail    
 test-amd64-amd64-xl-qemuu-win7-amd64                         fail    
 test-amd64-amd64-xl-qemut-ws16-amd64                         fail    
 test-amd64-amd64-xl-qemuu-ws16-amd64                         fail    
 test-armhf-armhf-xl-arndale                                  pass    
 test-amd64-amd64-examine-bios                                pass    
 test-amd64-amd64-xl-credit1                                  pass    
 test-arm64-arm64-xl-credit1                                  pass    
 test-armhf-armhf-xl-credit1                                  pass    
 test-amd64-amd64-xl-credit2                                  pass    
 test-arm64-arm64-xl-credit2                                  pass    
 test-armhf-armhf-xl-credit2                                  pass    
 test-amd64-amd64-xl-qemuu-dmrestrict-amd64-dmrestrict        pass    
 test-amd64-amd64-examine                                     pass    
 test-arm64-arm64-examine                                     pass    
 test-armhf-armhf-examine                                     pass    
 test-amd64-amd64-qemuu-nested-intel                          pass    
 test-amd64-amd64-xl-pvhv2-intel                              pass    
 test-amd64-amd64-dom0pvh-xl-intel                            pass    
 test-amd64-amd64-libvirt                                     pass    
 test-armhf-armhf-libvirt                                     pass    
 test-amd64-amd64-xl-multivcpu                                pass    
 test-armhf-armhf-xl-multivcpu                                pass    
 test-amd64-amd64-pair                                        pass    
 test-amd64-amd64-libvirt-pair                                pass    
 test-amd64-amd64-xl-pvshim                                   pass    
 test-amd64-amd64-pygrub                                      pass    
 test-amd64-amd64-libvirt-qcow2                               pass    
 test-armhf-armhf-libvirt-qcow2                               pass    
 test-amd64-amd64-libvirt-raw                                 pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-armhf-armhf-libvirt-raw                                 pass    
 test-amd64-amd64-xl-rtds                                     pass    
 test-armhf-armhf-xl-rtds                                     pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64-shadow             pass    
 test-amd64-amd64-xl-shadow                                   pass    
 test-arm64-arm64-xl-thunderx                                 pass    
 test-amd64-amd64-examine-uefi                                pass    
 test-amd64-amd64-xl-vhd                                      pass    
 test-arm64-arm64-xl-vhd                                      pass    
 test-armhf-armhf-xl-vhd                                      pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Pushing revision :

hint: The 'hooks/update' hook was ignored because it's not set as executable.
hint: You can disable this warning with `git config advice.ignoredHook false`.
hint: The 'hooks/post-receive' hook was ignored because it's not set as executable.
hint: You can disable this warning with `git config advice.ignoredHook false`.
hint: The 'hooks/post-update' hook was ignored because it's not set as executable.
hint: You can disable this warning with `git config advice.ignoredHook false`.
To xenbits.xen.org:/home/xen/git/linux-pvops.git
   0dd3ee3112550..b0d326da462e2  b0d326da462e20285236e11e4cbc32085de9f363 -> tested/linux-linus


From xen-devel-bounces@lists.xenproject.org Fri Jan 19 05:51:56 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 19 Jan 2024 05:51:56 +0000
Received: from list by lists.xenproject.org with outflank-mailman.668917.1041413 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQhnH-0003IE-PH; Fri, 19 Jan 2024 05:51:55 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 668917.1041413; Fri, 19 Jan 2024 05:51:55 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQhnH-0003I7-KK; Fri, 19 Jan 2024 05:51:55 +0000
Received: by outflank-mailman (input) for mailman id 668917;
 Fri, 19 Jan 2024 05:51:54 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rQhnG-0003Hv-IM; Fri, 19 Jan 2024 05:51:54 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rQhnG-0002Yd-HX; Fri, 19 Jan 2024 05:51:54 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rQhnG-0006lD-48; Fri, 19 Jan 2024 05:51:54 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rQhnG-0000NQ-3f; Fri, 19 Jan 2024 05:51:54 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=ocycCRqGb+WjYCRZNEd19NI9AlwPoq0lBnqxDD+43xU=; b=EkBQywJmsGAYB7xWHIzFCYlhJD
	BuXpumCUCVtCNTEATPOBcbDVE+e4rOJTn1kxYawCIhB24ZCk+ueDVA+CTvkTUp3wUm+XS8wiPmTm+
	4BrSxKr2a0ANDN2w2cPoomn7axNEEjC8/Axga9pz3dzgFi5VPL0J0dVLhBVbZ8WuYjPc=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184399-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [xen-unstable-smoke test] 184399: tolerable all pass - PUSHED
X-Osstest-Failures:
    xen-unstable-smoke:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    xen-unstable-smoke:test-arm64-arm64-xl-xsm:migrate-support-check:fail:nonblocking
    xen-unstable-smoke:test-arm64-arm64-xl-xsm:saverestore-support-check:fail:nonblocking
    xen-unstable-smoke:test-armhf-armhf-xl:migrate-support-check:fail:nonblocking
    xen-unstable-smoke:test-armhf-armhf-xl:saverestore-support-check:fail:nonblocking
X-Osstest-Versions-This:
    xen=b25607e528f6ce7851e907ed59ad5ff583aa1840
X-Osstest-Versions-That:
    xen=c30021be302aa2a644ef5544097fb8bb763ec140
From: osstest service owner <osstest-admin@xenproject.org>
Date: Fri, 19 Jan 2024 05:51:54 +0000

flight 184399 xen-unstable-smoke real [real]
http://logs.test-lab.xenproject.org/osstest/logs/184399/

Failures :-/ but no regressions.

Tests which did not succeed, but are not blocking:
 test-amd64-amd64-libvirt     15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-xsm      15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-xsm      16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl          15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          16 saverestore-support-check    fail   never pass

version targeted for testing:
 xen                  b25607e528f6ce7851e907ed59ad5ff583aa1840
baseline version:
 xen                  c30021be302aa2a644ef5544097fb8bb763ec140

Last test of basis   184397  2024-01-18 22:02:10 Z    0 days
Testing same since   184399  2024-01-19 02:00:25 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Andrew Cooper <andrew.cooper3@citrix.com>
  Jan Beulich <jbeulich@suse.com>

jobs:
 build-arm64-xsm                                              pass    
 build-amd64                                                  pass    
 build-armhf                                                  pass    
 build-amd64-libvirt                                          pass    
 test-armhf-armhf-xl                                          pass    
 test-arm64-arm64-xl-xsm                                      pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64                    pass    
 test-amd64-amd64-libvirt                                     pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Pushing revision :

To xenbits.xen.org:/home/xen/git/xen.git
   c30021be30..b25607e528  b25607e528f6ce7851e907ed59ad5ff583aa1840 -> smoke


From xen-devel-bounces@lists.xenproject.org Fri Jan 19 06:05:21 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 19 Jan 2024 06:05:21 +0000
Received: from list by lists.xenproject.org with outflank-mailman.668927.1041421 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQi0C-0005Hw-Vf; Fri, 19 Jan 2024 06:05:16 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 668927.1041421; Fri, 19 Jan 2024 06:05:16 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQi0C-0005Hp-SW; Fri, 19 Jan 2024 06:05:16 +0000
Received: by outflank-mailman (input) for mailman id 668927;
 Fri, 19 Jan 2024 06:05:16 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rQi0B-0005Hc-UW; Fri, 19 Jan 2024 06:05:15 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rQi0B-0002tW-7Z; Fri, 19 Jan 2024 06:05:15 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rQi0A-0007n3-Q6; Fri, 19 Jan 2024 06:05:14 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rQi0A-0000fh-PY; Fri, 19 Jan 2024 06:05:14 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=qPOXygakeayf4h0nFZXSCPdg5rnyU/byoY5tEWbiaWY=; b=vriLTIrn+g3rkEWa7v2dlzEzc4
	7N8gVilaEidoj+PiG6wNMQyfPSYh0ejZ70uUMYNfQ6AoRq5NQsnl+LDpehXTvjO06UdZ7aKh7Iar6
	r5bsuf98m/Ij7xoSk76kYU7fNZENIQYZSp2Gs5kKSY+FGNM8inqm4THTFMZpUKmgUsS8=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184400-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [ovmf test] 184400: all pass - PUSHED
X-Osstest-Versions-This:
    ovmf=9d3fe85fcc8ff386ee0814a4dad03bbf7dc54594
X-Osstest-Versions-That:
    ovmf=264636d8e6983e0f6dc6be2fca9d84ec81315954
From: osstest service owner <osstest-admin@xenproject.org>
Date: Fri, 19 Jan 2024 06:05:14 +0000

flight 184400 ovmf real [real]
http://logs.test-lab.xenproject.org/osstest/logs/184400/

Perfect :-)
All tests in this flight passed as required
version targeted for testing:
 ovmf                 9d3fe85fcc8ff386ee0814a4dad03bbf7dc54594
baseline version:
 ovmf                 264636d8e6983e0f6dc6be2fca9d84ec81315954

Last test of basis   184395  2024-01-18 19:44:20 Z    0 days
Testing same since   184400  2024-01-19 03:43:25 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Ashish Singhal <ashishsingha@nvidia.com>
  Michael D Kinney <michael.d.kinney@intel.com>

jobs:
 build-amd64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-amd64-amd64-xl-qemuu-ovmf-amd64                         pass    
 test-amd64-i386-xl-qemuu-ovmf-amd64                          pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Pushing revision :

To xenbits.xen.org:/home/xen/git/osstest/ovmf.git
   264636d8e6..9d3fe85fcc  9d3fe85fcc8ff386ee0814a4dad03bbf7dc54594 -> xen-tested-master


From xen-devel-bounces@lists.xenproject.org Fri Jan 19 08:07:06 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 19 Jan 2024 08:07:06 +0000
Received: from list by lists.xenproject.org with outflank-mailman.668945.1041432 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQjts-0003ym-0K; Fri, 19 Jan 2024 08:06:52 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 668945.1041432; Fri, 19 Jan 2024 08:06:51 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQjtr-0003yf-Sm; Fri, 19 Jan 2024 08:06:51 +0000
Received: by outflank-mailman (input) for mailman id 668945;
 Fri, 19 Jan 2024 08:06:50 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=hPDw=I5=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rQjtq-0003yZ-NU
 for xen-devel@lists.xenproject.org; Fri, 19 Jan 2024 08:06:50 +0000
Received: from mail-wr1-x434.google.com (mail-wr1-x434.google.com
 [2a00:1450:4864:20::434])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id b15fe7b3-b6a1-11ee-9b0f-b553b5be7939;
 Fri, 19 Jan 2024 09:06:47 +0100 (CET)
Received: by mail-wr1-x434.google.com with SMTP id
 ffacd0b85a97d-33921b8988fso183960f8f.3
 for <xen-devel@lists.xenproject.org>; Fri, 19 Jan 2024 00:06:47 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 h4-20020a5d5044000000b0033609b71825sm5832356wrt.35.2024.01.19.00.06.46
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Fri, 19 Jan 2024 00:06:47 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: b15fe7b3-b6a1-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1705651607; x=1706256407; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=4GG3oevxlfpUsmrJF2OU1t02w4JQySSba6JkTX8CcDs=;
        b=AH6HJqvoWPTBQ7WN+4FFtG4UYRg4FqiaRDRzAOk7YMA+5WCnu7p+4zTZ0sbu3fQ851
         4mfCCfkJ+zCxUlmdhQL6DTjbBP1y/Kxjnytq2VKT02IMNhKpRNn5LUgBSAeMVKUj/y5l
         1PbyEYg5Sv1ismxT6yNwMrlG4P1edLq75wp9n3VUH+RzxYz2KV0j3aEC9Bdrqh3cSMF8
         pVzW9mi7Lso5CipzEy0mpS/JMnKqE3rHUN4nca3ZkpMzFN2tV6UZVGniBB6qIp/JWVPO
         3i4sqETxW+E02CnXPolImWoZa/HC4Pyz8x/Yoi0iuI+S77atbSPwPJrnlcWUWZj20yfs
         MkYg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705651607; x=1706256407;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=4GG3oevxlfpUsmrJF2OU1t02w4JQySSba6JkTX8CcDs=;
        b=FS5ezk5YnAfpgIXtsSOpiuDu/NFQ9q8po1R+kg2LRIKEoqRFIojiXzja77HG9G+4YT
         4HWVP8JWWQPGCE3X2e20RfSjjD5+lDS9LJcPHTE1VKJKmyXgw8+qh623M16eyC/M0a1I
         CCYkdJHXXSZT/v3TjslVeO2XRTbmXEDfj30/lqTDTv0t319RZCSA139BZKYCOZNTZxsy
         cBrr+6mGSM1O8mYWYQ287cC0YSeXU+bOda59jivKrNJu61ZGp0126GKl0GSHr4djC9v7
         rLjld03zkBJGoTRdQFFTZgBliWhCEFZ5KSDXbDxU7TUSMwoRgjXtMKxMUrVp/SVBNLeT
         INBw==
X-Gm-Message-State: AOJu0YyHt9S3j50k7wvK9J6zcedZhimlboOLIxlcT24mL3uCqhU9ddCS
	m/Aaz9GAuTlocI8SqLA6MPd32F8z6dfCfoesN2xFX0VpWUKnL0NwsBCO+w3trw==
X-Google-Smtp-Source: AGHT+IFXvnE5QHk1aXl1+q0hBTGOwmtvZFRb3341bjufUFymElr7Ik6BklE6bxtxPCRGgDgJNh06UQ==
X-Received: by 2002:a05:6000:1086:b0:337:c872:7153 with SMTP id y6-20020a056000108600b00337c8727153mr1135624wrw.46.1705651607320;
        Fri, 19 Jan 2024 00:06:47 -0800 (PST)
Message-ID: <ceb07b66-8263-41b7-8c79-3cad89fc9400@suse.com>
Date: Fri, 19 Jan 2024 09:06:45 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v5 2/8] x86: annotate entry points with type and size
Content-Language: en-US
To: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.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>
References: <e4bf47ca-2ae6-1fd4-56a6-e4e777150b64@suse.com>
 <7a133ed9-9d13-4e2c-893a-00c083c8a35d@suse.com>
 <9096ad1a-5d86-4dd1-a7c3-6ad2f7e5a623@suse.com> <ZaljqHduUIvsdbqm@macbook>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <ZaljqHduUIvsdbqm@macbook>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 18.01.2024 18:45, Roger Pau Monné wrote:
> On Mon, Jan 15, 2024 at 03:34:56PM +0100, Jan Beulich wrote:
>> @@ -625,7 +627,7 @@ ENTRY(dom_crash_sync_extable)
>>  
>>  /* No special register assumptions. */
>>  #ifdef CONFIG_PV
>> -ENTRY(continue_pv_domain)
>> +FUNC(continue_pv_domain)
>>          ENDBR64
>>          call  check_wakeup_from_wait
>>  ret_from_intr:
>> @@ -640,26 +642,28 @@ ret_from_intr:
>>  #else
>>          jmp   test_all_events
>>  #endif
>> +END(continue_pv_domain)
>>  #else
>> -ret_from_intr:
>> +FUNC_LOCAL(ret_from_intr, 0)
> 
> Why does this need to have an alignment of 0? There's no fallthrough
> of previous code AFAICT.

It doesn't have to, but see the description for where I thought it would
make sense to newly introduce alignment; I simply didn't want to go too
far with such changes leading to generated code being altered. This (and
the other cases below) weren't in that group. Without ...

>>          ASSERT_CONTEXT_IS_XEN

... this I would be strongly inclined to switch ...

>>          jmp   restore_all_xen

... to

#define ret_from_intr restore_all_xen

anyway. And perhaps we ought to change the "#else" above to
"#elif !defined(NDEBUG)", at which point I'd say alignment isn't required
here at all.

>> @@ -713,12 +718,14 @@ ENTRY(common_interrupt)
>>          mov   %r15, STACK_CPUINFO_FIELD(xen_cr3)(%r14)
>>          mov   %bl, STACK_CPUINFO_FIELD(use_pv_cr3)(%r14)
>>          jmp ret_from_intr
>> +END(common_interrupt)
>>  
>> -ENTRY(entry_PF)
>> +FUNC(entry_PF)
>>          ENDBR64
>>          movl  $X86_EXC_PF, 4(%rsp)
>> +END(entry_PF)
>>  /* No special register assumptions. */
>> -GLOBAL(handle_exception)
>> +FUNC(handle_exception, 0)
> 
> Given patch 8/8 that enables support for placing FUNC() into separate
> sections, the fallthrough arrangement here with entry_PF is no longer
> guaranteed, as the linker could re-order the sections and thus
> entry_PF could fallthrough into another text section?
> 
> IOW: entry_PF needs a "jmp handle_exception", and then
> handle_exception itself can be padded as required by the default
> alignment?

Oh, yes, very much so. Thanks for noticing. I'll do that in the later
patch, though.

>> @@ -1149,7 +1176,7 @@ GLOBAL(autogen_entrypoints)
>>          .endm
>>  
>>          .popsection
>> -autogen_stubs: /* Automatically generated stubs. */
>> +FUNC_LOCAL(autogen_stubs, 0) /* Automatically generated stubs. */
> 
> Won't it be good to align the stubs?  As that's possible to make them
> faster?

Well. If I used default alignment here, it would be the 1st stub only
which gains alignment. I'd view that as simply inconsistent. You'll
find there already is an ALIGN inside the .rept below. That covers
only certain cases, but intentionally so, I believe: it's only entry
points which shouldn't be reached anyway which get no alignment. So
yes, in this case I clearly think there wants to explicitly be no
alignment here.

Jan


From xen-devel-bounces@lists.xenproject.org Fri Jan 19 08:43:56 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 19 Jan 2024 08:43:56 +0000
Received: from list by lists.xenproject.org with outflank-mailman.668950.1041442 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQkTd-00017N-Ko; Fri, 19 Jan 2024 08:43:49 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 668950.1041442; Fri, 19 Jan 2024 08:43:49 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQkTd-00017G-Gv; Fri, 19 Jan 2024 08:43:49 +0000
Received: by outflank-mailman (input) for mailman id 668950;
 Fri, 19 Jan 2024 08:43:48 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=RylD=I5=amd.com=Michal.Orzel@srs-se1.protection.inumbo.net>)
 id 1rQkTc-000179-6G
 for xen-devel@lists.xenproject.org; Fri, 19 Jan 2024 08:43:48 +0000
Received: from NAM11-DM6-obe.outbound.protection.outlook.com
 (mail-dm6nam11on2060f.outbound.protection.outlook.com
 [2a01:111:f400:7eaa::60f])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id db2b1078-b6a6-11ee-9b0f-b553b5be7939;
 Fri, 19 Jan 2024 09:43:45 +0100 (CET)
Received: from MW4PR04CA0163.namprd04.prod.outlook.com (2603:10b6:303:85::18)
 by DS0PR12MB7630.namprd12.prod.outlook.com (2603:10b6:8:11d::6) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7202.23; Fri, 19 Jan
 2024 08:43:40 +0000
Received: from CO1PEPF000044F6.namprd21.prod.outlook.com
 (2603:10b6:303:85:cafe::e0) by MW4PR04CA0163.outlook.office365.com
 (2603:10b6:303:85::18) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7202.24 via Frontend
 Transport; Fri, 19 Jan 2024 08:43:40 +0000
Received: from SATLEXMB04.amd.com (165.204.84.17) by
 CO1PEPF000044F6.mail.protection.outlook.com (10.167.241.196) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.7228.0 via Frontend Transport; Fri, 19 Jan 2024 08:43:40 +0000
Received: from SATLEXMB08.amd.com (10.181.40.132) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.34; Fri, 19 Jan
 2024 02:43:38 -0600
Received: from SATLEXMB03.amd.com (10.181.40.144) by SATLEXMB08.amd.com
 (10.181.40.132) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.32; Fri, 19 Jan
 2024 00:43:32 -0800
Received: from [10.252.147.188] (10.180.168.240) by SATLEXMB03.amd.com
 (10.181.40.144) with Microsoft SMTP Server id 15.1.2507.34 via Frontend
 Transport; Fri, 19 Jan 2024 02:43:30 -0600
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: db2b1078-b6a6-11ee-9b0f-b553b5be7939
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=b2d6ycoKxapZGzWoYcThF7KPn8eH/KHhbvJibVJzngMSPvP1FkHrFMPQ6eY9jPIk5FXD/dgUiJYnOTYM0x/vjlwfa/QsFYcUGdLsrP+nCmF9uKAAJagQcHuDMLG+53PSKSw6/PsHGvV+qG+HA5HHj75XTuqoW5F4PSGi6Rjc4AK8wAjY07tyZ1KtRwTkZTO6qpELTHOfmFTFRZ/icfhgkDJIMj8xnPKa0pjRVH+y3FD/X8xiZkRShRRq6Jh4/NnjNJDw3Td2kVHC3YVKxm/WElPTk8n8buSvCW8MtBftEB9f5CNSruyMuR2CsFmhLj4e8S55lLPfAZpyBGI768QtmQ==
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=Rngjgy9wFR31B6/tllA2FHw6Ko9u/eMHQO3ycEUY5Go=;
 b=m3UUdV6q6N3TOgymPgDqE4obqk3Wc8sTMQwPrSDshyVRwqHSGCMLlhhGZBPB8CamdlvX9S8WsGgOShHm4jm1Tf5Ki0Urdwai7HvsYLAfyfGwitdkrAA3nMbazx96sqRf0CVzA0G7QRC14g+F9NIOtMp0//Kjxxeam7i/oqcr5okOauEuOkH69LjmvU9mTbpYsvkcnIxuL3zPK9G9IlAlcAwPskQaN2JSL/SN20NR2+5Tlill4OTXHXYKeFXYq7inrauW82q6QcfEEMwNnsxnVVX3kltKBHumRuU8reS0hjIR77jAeusDo1zjW31pV83y+0kJjaQVTKvezilHI4bwdA==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=citrix.com 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)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=Rngjgy9wFR31B6/tllA2FHw6Ko9u/eMHQO3ycEUY5Go=;
 b=c2KBUA1irX2kTzri80zs0xNvxurBOk4auxYnar/wQy/+loWQ3gPs+dwe3At6wqVJgbc4ruN0N4Etb3VlmgQpuixS+VcUyy5pdMk/b7ieHUEK2IF1c4Vu2UwjF/C6HBGYZanFLEoVL6nhj5XFGsM7OxD20Ixo4oALLLOBuI1UgUI=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C
Message-ID: <9d552e6d-eb5d-4ccf-a35d-a359df7c4478@amd.com>
Date: Fri, 19 Jan 2024 09:43:30 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] coverage: filter out lib{fdt,elf}-temp.o
To: Anthony PERARD <anthony.perard@citrix.com>, Jan Beulich
	<jbeulich@suse.com>
CC: Andrew Cooper <andrew.cooper3@citrix.com>, George Dunlap
	<george.dunlap@citrix.com>, Julien Grall <julien@xen.org>, Stefano Stabellini
	<sstabellini@kernel.org>, Wei Liu <wl@xen.org>, Javi Merino
	<javi.merino@cloud.com>, <xen-devel@lists.xenproject.org>
References: <20240118120641.24824-1-michal.orzel@amd.com>
 <8057ae41-43b5-4469-b691-4e7f16b8dd4d@suse.com>
 <e399890c-0299-4ec5-884e-0637ae6cb5b0@perard>
Content-Language: en-US
From: Michal Orzel <michal.orzel@amd.com>
In-Reply-To: <e399890c-0299-4ec5-884e-0637ae6cb5b0@perard>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 7bit
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CO1PEPF000044F6:EE_|DS0PR12MB7630:EE_
X-MS-Office365-Filtering-Correlation-Id: 762944da-d6aa-460b-0430-08dc18cabc4e
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam: BCL:0;
X-Microsoft-Antispam-Message-Info:
	WwdeSRfd7Uq27XslPfjbTHXXz+ljlL1mQxa4ffBjy5j6J3jf2qQAckNH5IW//8eBG74FJTCBHG2zQgxFyEwibcyb0P5JEMeE+gd0M2MdNpInhThPqcZ+/4r5BYBSXtLG4rdrlp2z0qiHcKU6Nr5X4rvbmqrb7HAJM6wgkpwqJjG2hV+OLuF/bvL7m8bWPXaNF73TM2hNHbUxy9OIzZFrM97HCOF8DQb3gcWI7t4LzOel6e+VkLOICSz1McFI6085hrlEupqjs/FIaiOvPqGVWRFW8ssIgWfH7rv8wVADTFTJUBLk7rsBloE8Be+nYF5yP1D31RxS6+LsGiNqV7wTbft8xeWfeyJ5C1upsjT2kDRIulJRmRpIbWQc9mrbeSHqztTVriJ5GoGRTHHiFEesAkjUizrwn6lFwUvFE5rbfCY3yvqH5N7cPsP8TMQfbLpwfi2SmPqfZ1bAIPYi6kn4JkR9H2JrgVty/ehM7lhrNEsbzOWjyCerlGIyBoyCluTbPzTFyMvKS8Y+PHl1to/U7IF3sxWdhxDVCoUxG1PLeSm0ifhlOVRtb0/T+96aLxFy4MHlIqGxwUrbPNDSCEvWX24mOyJAe38uCH+fXD//RQTL6RUPo+JteJGoreAj84DMAEgKYpBHdQZ2u7Yd/Atc5InbiPIgAcw1hEGGVhGjZRLvEa9uVsjr1+CSjuV0IKZsF4nKXcCl0kBrI9r9EUsLcbLALrjHr9thd1r0u07LXiutgNmEdGChXHey9CfunqdQno4IFQLRkx4aArzOW4TCa+TPNohBhB3aLmPw8EvVIHxcT9wEea77oL/k+hyNRzbH
X-Forefront-Antispam-Report:
	CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230031)(4636009)(396003)(376002)(39860400002)(136003)(346002)(230922051799003)(186009)(82310400011)(451199024)(1800799012)(64100799003)(46966006)(36840700001)(40470700004)(426003)(53546011)(2616005)(26005)(336012)(36860700001)(5660300002)(47076005)(44832011)(83380400001)(4326008)(2906002)(70206006)(70586007)(110136005)(16576012)(54906003)(8676002)(316002)(478600001)(41300700001)(8936002)(31696002)(36756003)(81166007)(86362001)(82740400003)(356005)(31686004)(40460700003)(40480700001)(43740500002)(36900700001);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 19 Jan 2024 08:43:40.0051
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 762944da-d6aa-460b-0430-08dc18cabc4e
X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com]
X-MS-Exchange-CrossTenant-AuthSource:
	CO1PEPF000044F6.namprd21.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS0PR12MB7630

Hi Anthony,

On 18/01/2024 18:37, Anthony PERARD wrote:
> 
> 
> On Thu, Jan 18, 2024 at 02:12:21PM +0100, Jan Beulich wrote:
>> On 18.01.2024 13:06, Michal Orzel wrote:
>>> At the moment, trying to run xencov read/reset (calling SYSCTL_coverage_op
>>> under the hood) results in a crash. This is due to an attempt to
>>> access code in the .init.* sections (libfdt for Arm and libelf for x86)
>>> that are stripped after boot. Normally, the build system compiles any
>>> *.init.o file without COV_FLAGS. However, these two libraries are
>>> handled differently as sections will be renamed to init after linking.
>>>
>>> This worked until e321576f4047 ("xen/build: start using if_changed")
>>> that added lib{fdt,elf}-temp.o to extra-y. Any file listed there without
>>> *.init.o suffix will be part of non-init-objects for which COV_FLAGS
>>> will be appended.
>>
>> While this is true, aiui COV_FLAGS would be empty for anything listed
>> in nocov-y and all of the prerequisites of those objects (iirc target-
>> specific variable settings propagate to prerequisites). Therefore ...
>>
>>> In such case, the solution is to add a file to nocov-y.
>>
>> ... libelf.o / libfdt.o already being listed there ought to suffice.
>> Alternatively listing only libelf-temp.o / libfdt-temp.o ought to
>> suffice as well.
>>
>> Since you apparently observed things not working, I must be missing
>> something.
> 
> Yes, $(extra-y) is like $(obj-y), but objects there will not be added
> "built_in.o". So, make is likely building "libelf-temp.o" and deps
> because it's in $(extra-y) rather than because it's a prerequisite of
> "libelf.o". We could ask make to process prerequisite in a reverse
> order, and suddenly, the command line to make all "libelf-*.o" is
> different: `make --shuffle=reverse V=2`.
That's helpful.

> 
> So, adding extra object to $(nocov-y) is a workaround, but I think a
> better fix would be to add those objects to $(targets) instead of
> $(extra-y). I think I've made a mistake by using $(extra-y) instead of
> $(targets) in that original commit.
I can confirm that by moving lib{fdt,elf}-temp.o and deps to targets, the issue is gone as well.

Is my understanding correct that by switching from extra-y to targets we are preventing these objects to
appear in non-init-objects (and thus having COV_FLAGS appended) while retaining the proper if_changed behavior?

According to docs/misc/xen-makefiles/makefiles.rst:
Any target that utilises if_changed must be listed in $(targets),
otherwise the command line check will fail, and the target will
always be built.

~Michal


From xen-devel-bounces@lists.xenproject.org Fri Jan 19 09:09:40 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 19 Jan 2024 09:09:40 +0000
Received: from list by lists.xenproject.org with outflank-mailman.668955.1041457 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQksQ-0004xI-LA; Fri, 19 Jan 2024 09:09:26 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 668955.1041457; Fri, 19 Jan 2024 09:09:26 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQksQ-0004xB-Gd; Fri, 19 Jan 2024 09:09:26 +0000
Received: by outflank-mailman (input) for mailman id 668955;
 Fri, 19 Jan 2024 09:09:25 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=ePSo=I5=gmail.com=oleksii.kurochko@srs-se1.protection.inumbo.net>)
 id 1rQksP-0004x5-9i
 for xen-devel@lists.xenproject.org; Fri, 19 Jan 2024 09:09:25 +0000
Received: from mail-ej1-x62d.google.com (mail-ej1-x62d.google.com
 [2a00:1450:4864:20::62d])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 6f36a037-b6aa-11ee-98f2-6d05b1d4d9a1;
 Fri, 19 Jan 2024 10:09:22 +0100 (CET)
Received: by mail-ej1-x62d.google.com with SMTP id
 a640c23a62f3a-a2c67be31edso56638066b.0
 for <xen-devel@lists.xenproject.org>; Fri, 19 Jan 2024 01:09:22 -0800 (PST)
Received: from [192.168.206.239] ([94.75.70.14])
 by smtp.gmail.com with ESMTPSA id
 t19-20020a1709067c1300b00a2cab4514a2sm9093683ejo.133.2024.01.19.01.09.20
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Fri, 19 Jan 2024 01:09:21 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 6f36a037-b6aa-11ee-98f2-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1705655362; x=1706260162; darn=lists.xenproject.org;
        h=mime-version:user-agent:content-transfer-encoding:references
         :in-reply-to:date:cc:to:from:subject:message-id:from:to:cc:subject
         :date:message-id:reply-to;
        bh=+JJsLHoIl8mlHdH347Mok17X/+70YdlTflrK2qO0fk0=;
        b=UpTkPXotOWpXJ1KHxvng2sffVvyqe/+lgKOaQJ0Hk3Ll1xOyoUf/JYgskh//Iab/bw
         weBNCHP8TIT7VQmzlBC0Up453qDmaQaQtAo8xFLekcA9Y1f/bBI3lnn7R4OrOezH1KY7
         Yu3JBUwkxSO363bf82sET0aU5N3DCEzFNZxI+FvAMqLtWcWoEyH3u7lyTYKFORVBisGl
         JjXUXbxgjnqRIe2PVz0ZaAi/XIwpG+Rq6ijqVEe0vymSmoGvx8dmX3hGBhD5KZ8BZysJ
         jBrkSte54KPMYvivbKVKncgff6BCWCccv0TJVYJ2DARnn4XAeNHbFn2SHODyQshK0bt+
         8jMA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705655362; x=1706260162;
        h=mime-version:user-agent:content-transfer-encoding:references
         :in-reply-to:date:cc:to:from:subject:message-id:x-gm-message-state
         :from:to:cc:subject:date:message-id:reply-to;
        bh=+JJsLHoIl8mlHdH347Mok17X/+70YdlTflrK2qO0fk0=;
        b=E/H+U6ASPr60ghwY8wKFfkWKueMzQJLjDs/GEahcbTwRyCc7mgwtiz9O55lUmSC1i1
         f3pnOkKpmneehSed/eiH8TMVn8AZUdHoabN8Yz8foxV7nxIbwB7jGR5x65Lr4Ax9j398
         7lCs2Z/au9SyaB0genYx1yqiYZDY+cBRMdDFC2V/n/nLERtCh2U7f1sYdys4MLHaJXFI
         6yHJyZlIPPVamlOmWSXkmJxm7wQnrlr2T6akVh7YlDcgK/5WF7HfMHH5eiJO6yX+S6jC
         hb8a78zQ675vft9qnoJGKrAtvri/S3AFt3+Qa4jHMCCivp+sYOwFph1sYlpsI4umViDG
         u0gg==
X-Gm-Message-State: AOJu0Yz5wnoghI57TWZo7h5yLafSlopJKkPK4JXI3925lhu3lHAmS8Zq
	OqsdVgzbP97fZW/RGMxnf7mC7xUUwuFTNId+dYnNtA+ib7WNUg1u
X-Google-Smtp-Source: AGHT+IELOTJr1od9LcuVE8MwggaGoyxdG61oxms+ltrhrUZTONaiHG/1mJifXB68miUthTXLK7xp/Q==
X-Received: by 2002:a17:906:f113:b0:a2c:fe9e:25f6 with SMTP id gv19-20020a170906f11300b00a2cfe9e25f6mr669664ejb.272.1705655361513;
        Fri, 19 Jan 2024 01:09:21 -0800 (PST)
Message-ID: <af71f5ce0ac6af9a2d87a31a154ba051a0841e3a.camel@gmail.com>
Subject: Re: [PATCH v3 10/34] xen/riscv: introduce bitops.h
From: Oleksii <oleksii.kurochko@gmail.com>
To: Jan Beulich <jbeulich@suse.com>
Cc: Alistair Francis <alistair.francis@wdc.com>, Bob Eshleman
 <bobbyeshleman@gmail.com>, Connor Davis <connojdavis@gmail.com>, Andrew
 Cooper <andrew.cooper3@citrix.com>, George Dunlap
 <george.dunlap@citrix.com>,  Julien Grall <julien@xen.org>, Stefano
 Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>, 
 xen-devel@lists.xenproject.org
Date: Fri, 19 Jan 2024 11:09:20 +0200
In-Reply-To: <f6e13ad0-5401-41f7-9f3b-ef8f1bf9c1df@suse.com>
References: <cover.1703255175.git.oleksii.kurochko@gmail.com>
	 <841d59c3950970f4937da200cf8f04aa39132e14.1703255175.git.oleksii.kurochko@gmail.com>
	 <f6e13ad0-5401-41f7-9f3b-ef8f1bf9c1df@suse.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
User-Agent: Evolution 3.50.2 (3.50.2-1.fc39) 
MIME-Version: 1.0

On Thu, 2024-01-18 at 12:03 +0100, Jan Beulich wrote:
> On 22.12.2023 16:12, Oleksii Kurochko wrote:
> > --- /dev/null
> > +++ b/xen/include/asm-generic/bitops/bitops-bits.h
> > @@ -0,0 +1,10 @@
> > +/* SPDX-License-Identifier: GPL-2.0 */
> > +#ifndef _ASM_GENERIC_BITOPS_BITS_H_
> > +#define _ASM_GENERIC_BITOPS_BITS_H_
> > +
> > +#define BITOP_BITS_PER_WORD=C2=A0=C2=A0=C2=A0=C2=A0 32
> > +#define BITOP_MASK(nr)=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0 (1UL << ((nr) %
> > BITOP_BITS_PER_WORD))
> > +#define BITOP_WORD(nr)=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0 ((nr) / BITOP_BITS_PER_WORD)
> > +#define BITS_PER_BYTE=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0 8
>=20
> Btw, I can't spot a use of BITS_PER_BYTE. Why do you add it? And if
> it really needed adding, it surely wouldn't belong here.
It is used in common/bitmap.c and ns16550.c, and inside some arch code,
but it is not used by RISC-V right now.

Would it be better to define it in config.h?

~ Oleksii


From xen-devel-bounces@lists.xenproject.org Fri Jan 19 09:15:00 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 19 Jan 2024 09:15:00 +0000
Received: from list by lists.xenproject.org with outflank-mailman.668958.1041466 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQkxk-0006PL-5V; Fri, 19 Jan 2024 09:14:56 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 668958.1041466; Fri, 19 Jan 2024 09:14:56 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQkxk-0006PE-2l; Fri, 19 Jan 2024 09:14:56 +0000
Received: by outflank-mailman (input) for mailman id 668958;
 Fri, 19 Jan 2024 09:14:54 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=hPDw=I5=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rQkxi-0006P6-Tq
 for xen-devel@lists.xenproject.org; Fri, 19 Jan 2024 09:14:54 +0000
Received: from mail-wm1-x334.google.com (mail-wm1-x334.google.com
 [2a00:1450:4864:20::334])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 34292d3b-b6ab-11ee-9b0f-b553b5be7939;
 Fri, 19 Jan 2024 10:14:52 +0100 (CET)
Received: by mail-wm1-x334.google.com with SMTP id
 5b1f17b1804b1-40e9fd483e2so1372025e9.0
 for <xen-devel@lists.xenproject.org>; Fri, 19 Jan 2024 01:14:52 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 j7-20020a05600c190700b0040e52cac976sm31834034wmq.29.2024.01.19.01.14.51
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Fri, 19 Jan 2024 01:14:51 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 34292d3b-b6ab-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1705655692; x=1706260492; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=rFsQ0akVQdH3W5JdVz3aqW5/NI9U1738dvXdj+LE/HM=;
        b=a0Y8rsZ7Lu0jqLBlvDw8EXeoQGx9Fch+dMbmjpdVYBm7h6YYm86yAVpGAWq3C8uYGI
         u3ved57+CwGpKsKZF2F19LH0N+wM5iJ3heWYhUBd2Ewm9ZlxvyI+9n8D7zPd0Y5llTlc
         vDlP4B85nS9K4ksJrqWjPCVzmPIdrVY5aySRjfnLk5yv0HGKqL9RmAHuvYshjfCRnUPO
         S2N0i5hJzEziZdRvob+aRpsptqI1oFS0BK8dKv34Sg8UQ7Y2GYunE6nH6ONE8mNRxP54
         BtDIeOR7p/O2L2gDZyOkIgoU6al+/E8slnQhxTwVt1lTd460lxeOe3OPoXuGvIEwifv1
         mE9w==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705655692; x=1706260492;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=rFsQ0akVQdH3W5JdVz3aqW5/NI9U1738dvXdj+LE/HM=;
        b=qWObTvBE+iCn7Ojs/WfIjiI9xQscJAnGYiLyEgHyjzX9Cvda5o1CzyioEwZwvEjc5W
         RMYxXJoEoisehK4jd7LxAD8KZ/qaV1KpU8tczZDeeq7mY96O+J65lORKL1UQU0uvh2MO
         QKvHE3EX6mE+5cRuyM7tIlbCMVcpwD5Io/n9maJb2+9dKCBMIS3GC6iS0r9IG5xRHIg/
         g6FjrHtDaNXt+MJIuK+74pMq0IlvJ7/BerpFsd4EAUhcuyPYUT6LAoDm/9/3b2ZOZvwT
         jkY/RodZ61eprxWkCnM1+DWNye4dW8maHDJQTeH5eb7gXdxCukVOb+DUp/s0gSvRIfwX
         q0Xw==
X-Gm-Message-State: AOJu0Yy23V5J+zanVGs2nAL2hAUTK8Z34Xw5em5J4LGq8LKgX6DYjz3d
	3MOEdeXoSQLpGKmkg9mvSGvaG/UH4k9uVSVL288GUkzpxCrzipNb/NwqG3VO3g==
X-Google-Smtp-Source: AGHT+IG2g1DiXb8BoSc51qum0P0/k7uBCnZcTmmcipRKg/h1E4w41V6eejnk/uDiqhoF92Ih5U6wqQ==
X-Received: by 2002:a7b:ce0f:0:b0:40e:95eb:863a with SMTP id m15-20020a7bce0f000000b0040e95eb863amr905373wmc.75.1705655692219;
        Fri, 19 Jan 2024 01:14:52 -0800 (PST)
Message-ID: <df4ffb88-616e-45c3-8b9d-eaea8a4fed3a@suse.com>
Date: Fri, 19 Jan 2024 10:14:50 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 10/34] xen/riscv: introduce bitops.h
Content-Language: en-US
To: Oleksii <oleksii.kurochko@gmail.com>
Cc: Alistair Francis <alistair.francis@wdc.com>,
 Bob Eshleman <bobbyeshleman@gmail.com>, Connor Davis
 <connojdavis@gmail.com>, Andrew Cooper <andrew.cooper3@citrix.com>,
 George Dunlap <george.dunlap@citrix.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>,
 xen-devel@lists.xenproject.org
References: <cover.1703255175.git.oleksii.kurochko@gmail.com>
 <841d59c3950970f4937da200cf8f04aa39132e14.1703255175.git.oleksii.kurochko@gmail.com>
 <f6e13ad0-5401-41f7-9f3b-ef8f1bf9c1df@suse.com>
 <af71f5ce0ac6af9a2d87a31a154ba051a0841e3a.camel@gmail.com>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <af71f5ce0ac6af9a2d87a31a154ba051a0841e3a.camel@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 19.01.2024 10:09, Oleksii wrote:
> On Thu, 2024-01-18 at 12:03 +0100, Jan Beulich wrote:
>> On 22.12.2023 16:12, Oleksii Kurochko wrote:
>>> --- /dev/null
>>> +++ b/xen/include/asm-generic/bitops/bitops-bits.h
>>> @@ -0,0 +1,10 @@
>>> +/* SPDX-License-Identifier: GPL-2.0 */
>>> +#ifndef _ASM_GENERIC_BITOPS_BITS_H_
>>> +#define _ASM_GENERIC_BITOPS_BITS_H_
>>> +
>>> +#define BITOP_BITS_PER_WORD     32
>>> +#define BITOP_MASK(nr)          (1UL << ((nr) %
>>> BITOP_BITS_PER_WORD))
>>> +#define BITOP_WORD(nr)          ((nr) / BITOP_BITS_PER_WORD)
>>> +#define BITS_PER_BYTE           8
>>
>> Btw, I can't spot a use of BITS_PER_BYTE. Why do you add it? And if
>> it really needed adding, it surely wouldn't belong here.
> It is used in common/bitmap.c and ns16550.c, and inside some arch code,
> but it is not used by RISC-V right now.
> 
> Would it be better to define it in config.h?

Yes, perhaps. Imo this shouldn't have a "generic" fallback; every arch
should explicitly state this (along with e.g. BITS_PER_LONG).

Jan


From xen-devel-bounces@lists.xenproject.org Fri Jan 19 09:16:53 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 19 Jan 2024 09:16:53 +0000
Received: from list by lists.xenproject.org with outflank-mailman.668965.1041475 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQkzc-00070h-KK; Fri, 19 Jan 2024 09:16:52 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 668965.1041475; Fri, 19 Jan 2024 09:16:52 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQkzc-00070a-Ha; Fri, 19 Jan 2024 09:16:52 +0000
Received: by outflank-mailman (input) for mailman id 668965;
 Fri, 19 Jan 2024 09:16:50 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=ePSo=I5=gmail.com=oleksii.kurochko@srs-se1.protection.inumbo.net>)
 id 1rQkza-0006zW-SW
 for xen-devel@lists.xenproject.org; Fri, 19 Jan 2024 09:16:50 +0000
Received: from mail-lf1-x12f.google.com (mail-lf1-x12f.google.com
 [2a00:1450:4864:20::12f])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 79a026f6-b6ab-11ee-9b0f-b553b5be7939;
 Fri, 19 Jan 2024 10:16:49 +0100 (CET)
Received: by mail-lf1-x12f.google.com with SMTP id
 2adb3069b0e04-50e7e55c0f6so683866e87.0
 for <xen-devel@lists.xenproject.org>; Fri, 19 Jan 2024 01:16:49 -0800 (PST)
Received: from [192.168.206.239] ([94.75.70.14])
 by smtp.gmail.com with ESMTPSA id
 g22-20020a056512119600b0050e7a97ae32sm903075lfr.78.2024.01.19.01.16.47
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Fri, 19 Jan 2024 01:16:48 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 79a026f6-b6ab-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1705655809; x=1706260609; darn=lists.xenproject.org;
        h=mime-version:user-agent:content-transfer-encoding:references
         :in-reply-to:date:cc:to:from:subject:message-id:from:to:cc:subject
         :date:message-id:reply-to;
        bh=eyoZO+bmF/YBvavD8DvX/SVdsTD2uXFDUFXYDReg7co=;
        b=dCgbGGpwHbJfJguiHVbM91OQdJ1D8VS0nV2P2htbfrFeiz6OXif4hYf4RxvOozcPc1
         4AQy7aNEoVR4EXfx04aie3EQMFl6jYB36NkpCxodNUDvsfTMw8dBoIYFJgyIQrAeFjEK
         g3Ae28I4PaxUx9sAKFFHE4f4mIyRYfNdy7WeCACc3FgwQ9GijFoIhARusp9CYluOaa1k
         FQRt5ZSH88N1zsSdZet9NVzQteWjQNK3ivPBQJ7dtIb7JJUhH+BjzTt51jfZMzWApY4I
         xKfS1AhwRE4cWNg5Kiooz4BB3Xp6CRz8WmXI80PsvunkHiJo1DjvGnVUE7gSVLB8+qCi
         MvlQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705655809; x=1706260609;
        h=mime-version:user-agent:content-transfer-encoding:references
         :in-reply-to:date:cc:to:from:subject:message-id:x-gm-message-state
         :from:to:cc:subject:date:message-id:reply-to;
        bh=eyoZO+bmF/YBvavD8DvX/SVdsTD2uXFDUFXYDReg7co=;
        b=XfXNeTVcNNeXa245/GUQ6KaX6YjplEqL6nDExMzjYNrntpApQBX7rj15evhgJTjKeU
         qepD2kaBehfG0S5kNNvhVjRd2EXyP7XS+zklR0OEaR+rryB6B1hTm2ubwm2MACVaXFIl
         S7xS2bXH9RsHnLs2ZR8xspzvNZGC7l0oAELwm4DcwN3JZ9FjxUBYQTMG0DEpddfomjuU
         AoV4CN8aZ0nGKhaY4veQXFIyBUbbPzTZoMjTxkOsEYcJzm6Upzva0cCUzUm/20fXFHD3
         eyNcoCNW1eFZxF/wek7J4X3tUcNQrXHZZf017I+WF2BFpzDT5/y2k5dqxJ7btLK+8h/T
         kUxg==
X-Gm-Message-State: AOJu0YwAIU5fa5gu/SkT/L6xepJSFSVmGGcXgEOSgGmTvz7I08+Xzerp
	AiOh4uwyVoparoeeg6nEat8s14lFmWskpNuCIwX2G+XYoD/hr7RH
X-Google-Smtp-Source: AGHT+IGpiw524WYe1ebF4McY3svRwsWP+vURiltjJbnyttM98Ucu0F/I4mtv/zUKDNb2qsEKV3Sqhg==
X-Received: by 2002:ac2:52b6:0:b0:50e:7f8b:ec51 with SMTP id r22-20020ac252b6000000b0050e7f8bec51mr229384lfm.210.1705655808372;
        Fri, 19 Jan 2024 01:16:48 -0800 (PST)
Message-ID: <ba1dbfbdd84811b09593425664f02a0cfe9430c3.camel@gmail.com>
Subject: Re: [PATCH v3 10/34] xen/riscv: introduce bitops.h
From: Oleksii <oleksii.kurochko@gmail.com>
To: Jan Beulich <jbeulich@suse.com>
Cc: Alistair Francis <alistair.francis@wdc.com>, Bob Eshleman
 <bobbyeshleman@gmail.com>, Connor Davis <connojdavis@gmail.com>, Andrew
 Cooper <andrew.cooper3@citrix.com>, George Dunlap
 <george.dunlap@citrix.com>,  Julien Grall <julien@xen.org>, Stefano
 Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>, 
 xen-devel@lists.xenproject.org
Date: Fri, 19 Jan 2024 11:16:46 +0200
In-Reply-To: <ac43d7a3-f662-4985-9aaf-4cad1c517f35@suse.com>
References: <cover.1703255175.git.oleksii.kurochko@gmail.com>
	 <841d59c3950970f4937da200cf8f04aa39132e14.1703255175.git.oleksii.kurochko@gmail.com>
	 <23f1212a-66a8-47b0-904b-08b2ab54c72b@suse.com>
	 <17d9fe474e244a15aa5955e630d553a62b0080fd.camel@gmail.com>
	 <88df7ccd-8d14-4b00-900d-04cc87d9f230@suse.com>
	 <863b09f03d37e96d737ab6bda4cc8923f75550fd.camel@gmail.com>
	 <2e10b170-5a75-4ae0-8d2f-c6c1ad9951a5@suse.com>
	 <1b20fefd125598e2bb62d516495783650da75271.camel@gmail.com>
	 <23955665-8bd8-4872-a1a5-e3a3711c9512@suse.com>
	 <1c0eb1cdef1fac7695c4fc416128e2bb81cf13aa.camel@gmail.com>
	 <ac43d7a3-f662-4985-9aaf-4cad1c517f35@suse.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
User-Agent: Evolution 3.50.2 (3.50.2-1.fc39) 
MIME-Version: 1.0

On Thu, 2024-01-18 at 12:01 +0100, Jan Beulich wrote:
> On 18.01.2024 10:43, Oleksii wrote:
> > On Wed, 2024-01-17 at 14:42 +0100, Jan Beulich wrote:
> > > On 17.01.2024 12:37, Oleksii wrote:
> > > > > > >=20
> > > > > > > > > Also you want to make sure asm-generic/bitops/bitops-
> > > > > > > > > bits.h
> > > > > > > > > is
> > > > > > > > > really in use here, or else an arch overriding / not
> > > > > > > > > using
> > > > > > > > > that
> > > > > > > > > header may end up screwed.
> > > > > > > > I am not really understand what do you mean. Could you
> > > > > > > > please
> > > > > > > > explain a
> > > > > > > > little bit more.
> > > > > > >=20
> > > > > > > Whichever type you use here, it needs to be in sync with
> > > > > > > BITOP_BITS_PER_WORD. Hence you want to include the
> > > > > > > _local_
> > > > > > > bitops-
> > > > > > > bits.h
> > > > > > > here, such that in case of an inconsistent override by an
> > > > > > > arch
> > > > > > > the
> > > > > > > compiler would complain about the two differring #define-
> > > > > > > s.
> > > > > > > (IOW
> > > > > > > an
> > > > > > > arch overriding BITOP_BITS_PER_WORD cannot re-use this
> > > > > > > header
> > > > > > > as-
> > > > > > > is.)
> > > > > > >=20
> > > > > > > The same may, btw, be true for others of the new headers
> > > > > > > you
> > > > > > > add
> > > > > > > -
> > > > > > > the
> > > > > > > same #include would therefore be needed there as well.
> > > > > > Now it clear to me.
> > > > > >=20
> > > > > >=20
> > > > > > It seems like BITOP_BITS_PER_WORD, BITOP_MASK, BITOP_WORD,
> > > > > > and
> > > > > > BITS_PER_BYTE are defined in {arm, ppc,
> > > > > > riscv}/include/asm/bitops.h.
> > > > > > I expected that any architecture planning to use asm-
> > > > > > generic/bitops/bitops-bits.h would include it at the
> > > > > > beginning
> > > > > > of
> > > > > > <arch>/include/asm/bitops.h, similar to what is done for
> > > > > > RISC-
> > > > > > V:
> > > > > > =C2=A0=C2=A0 #ifndef _ASM_RISCV_BITOPS_H
> > > > > > =C2=A0=C2=A0 #define _ASM_RISCV_BITOPS_H
> > > > > > =C2=A0=C2=A0=20
> > > > > > =C2=A0=C2=A0 #include <asm/system.h>
> > > > > > =C2=A0=C2=A0=20
> > > > > > =C2=A0=C2=A0 #include <asm-generic/bitops/bitops-bits.h>
> > > > > > =C2=A0=C2=A0 ...
> > > > > >=20
> > > > > > But in this case, to allow architecture overrides macros,
> > > > > > it is
> > > > > > necessary to update asm-generic/bitops/bitops-bits.h:
> > > > > > =C2=A0=C2=A0=C2=A0 #ifndef BITOP_BITS_PER_WORD
> > > > > > =C2=A0=C2=A0=C2=A0 #define BITOP_BITS_PER_WORD=C2=A0=C2=A0=C2=
=A0=C2=A0 32
> > > > > > =C2=A0=C2=A0=C2=A0 #endif
> > > > > > =C2=A0=C2=A0 ...
> > > > > > Therefore,=C2=A0 if an architecture needs to override something=
,
> > > > > > it
> > > > > > will
> > > > > > add
> > > > > > #define ... before #include <asm-generic/bitops/bitops-
> > > > > > bits.h>.
> > > > > >=20
> > > > > > Does it make sense?
> > > > >=20
> > > > > Sure. But then the arch also needs to provide a corresponding
> > > > > typedef
> > > > > (and bitops-bits.h the fallback one), for use wherever you
> > > > > use
> > > > > any of
> > > > > those #define-s.
> > > > Which one typedef is needed to provide?
> > > > <asm-generic/bitops/bitops-bits.h> contains only macros.
> > >=20
> > > A new one, to replace where right now you use "unsigned int" and
> > > I
> > > initially said you need to use "uint32_t" instead. With what you
> > > said
> > > earlier, uint32_t won't work there (anymore).
> > Wouldn't it be enough just to "#include <xen/types.h>" in headers
> > where
> > "uint32_t" is used?
>=20
> No, my point wasn't to make uint32_t available. We need a _separate_
> typedef which matches the #define-s. Otherwise, if an arch defines
> BITOP_BITS_PER_WORD to, say, 64, this generic code would do the wrong
> thing.
Oh, yeah this is true.

We have to introduce in bitops-bits.h:
   typedef uint_32t bitops_type;=20

And then use it in function such as test_bit:
   static inline int test_bit(int nr, const volatile void *addr)
   {
       const volatile bitops_type *p =3D addr;
       return 1 & (p[BITOP_WORD(nr)] >> (nr & (BITOP_BITS_PER_WORD -
   1)));
   }

Thanks for clarification.

~ Oleksii


From xen-devel-bounces@lists.xenproject.org Fri Jan 19 09:20:47 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 19 Jan 2024 09:20:47 +0000
Received: from list by lists.xenproject.org with outflank-mailman.668968.1041486 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQl3L-0000hr-3U; Fri, 19 Jan 2024 09:20:43 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 668968.1041486; Fri, 19 Jan 2024 09:20:43 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQl3L-0000hk-0t; Fri, 19 Jan 2024 09:20:43 +0000
Received: by outflank-mailman (input) for mailman id 668968;
 Fri, 19 Jan 2024 09:20:41 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=hPDw=I5=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rQl3J-0000he-Be
 for xen-devel@lists.xenproject.org; Fri, 19 Jan 2024 09:20:41 +0000
Received: from mail-wr1-x42e.google.com (mail-wr1-x42e.google.com
 [2a00:1450:4864:20::42e])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 027f3551-b6ac-11ee-9b0f-b553b5be7939;
 Fri, 19 Jan 2024 10:20:38 +0100 (CET)
Received: by mail-wr1-x42e.google.com with SMTP id
 ffacd0b85a97d-337c40fde20so481241f8f.0
 for <xen-devel@lists.xenproject.org>; Fri, 19 Jan 2024 01:20:39 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 e21-20020adfa455000000b003392295997dsm487715wra.25.2024.01.19.01.20.38
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Fri, 19 Jan 2024 01:20:38 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 027f3551-b6ac-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1705656038; x=1706260838; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=nhEVdlJbyndKpfYMYn4F9QW3tAxSPbKD7BkMILGT9gM=;
        b=DU20XAtD8E0iukYMvEdimp5/DoymRJm8kwYArmlsOo88KmCioZMUQSxegJDwpdWdtO
         76HRlqGER6/rIyDjpwYShL3+CTqJztitjrzu3BGOBzrPOlLuO+0bcSSbqA4akx5RMLPC
         SVVK4D6TQDtqZfUmR1jQgZp1pQl0RvgNSkuiyw0J46aaaZTLwC318hqW5rGh90vPpSw+
         tR7inXAdUEdZuugVyQgQ8U14krxAtLudmduHpbeAQusxeqWal5gOK00DLth79sH8grqU
         VXAQrACglsityFLm93gl0V21IcN6V8Fw/xJZfiIgm/+++Hw5rj5owLhqQGapg8lpqyYg
         nHHg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705656038; x=1706260838;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=nhEVdlJbyndKpfYMYn4F9QW3tAxSPbKD7BkMILGT9gM=;
        b=AFCIyYuIJz3wPB+U2TNOzk1AxTeTVXFgUVRLpdhLy2gDcbrGsLpdj6RtVKOqC1/9k6
         GVLaTDSlLcdUtFqq5K7QSZ+SU9F3fio9iAqbukFnYHBg1laDsfkof7Nw36jbyKplXg/C
         twEe+ormAdFj8pQ3LC4IbAciP+OFFKpnGguez6xdBjYHXB9JyBCIfSX5FPEaKB5XAjYE
         Mz52tuiKx70Rgs1i9w0TYJ1w+VRAMY9gwZVTYVvvj95nVfmc3utk8USTx7gTNjcRTk16
         fde1JHrrKHeJ8W8U3C7++Qs1vMhKYAuHkNYUEvni+sT+qL0idQgsBAwkmP0seEb2SMo4
         +OnQ==
X-Gm-Message-State: AOJu0Yx8bFUV+VrQGB+vlPzlxpC+wTZUCz0NHQxy2VESg5K8b+qqYH/I
	nR3t12Qewd9SaySxA4WNUFlyViDDNk7Gb3YRct7DQBzAGkKHfhV8v5Bx8pZAlg==
X-Google-Smtp-Source: AGHT+IEQdoa0BEI89ro+YF5qJCTxqTTlp0+Snsrn5FNY43UZFUJ2WS+SjSv8xgYxiVj8vdg2jh1K0Q==
X-Received: by 2002:a5d:618c:0:b0:337:62c6:cd1c with SMTP id j12-20020a5d618c000000b0033762c6cd1cmr1244382wru.80.1705656038630;
        Fri, 19 Jan 2024 01:20:38 -0800 (PST)
Message-ID: <3f76742c-7f58-49d8-9ea4-c376bca71bf7@suse.com>
Date: Fri, 19 Jan 2024 10:20:36 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 10/34] xen/riscv: introduce bitops.h
Content-Language: en-US
To: Oleksii <oleksii.kurochko@gmail.com>
Cc: Alistair Francis <alistair.francis@wdc.com>,
 Bob Eshleman <bobbyeshleman@gmail.com>, Connor Davis
 <connojdavis@gmail.com>, Andrew Cooper <andrew.cooper3@citrix.com>,
 George Dunlap <george.dunlap@citrix.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>,
 xen-devel@lists.xenproject.org
References: <cover.1703255175.git.oleksii.kurochko@gmail.com>
 <841d59c3950970f4937da200cf8f04aa39132e14.1703255175.git.oleksii.kurochko@gmail.com>
 <23f1212a-66a8-47b0-904b-08b2ab54c72b@suse.com>
 <17d9fe474e244a15aa5955e630d553a62b0080fd.camel@gmail.com>
 <88df7ccd-8d14-4b00-900d-04cc87d9f230@suse.com>
 <863b09f03d37e96d737ab6bda4cc8923f75550fd.camel@gmail.com>
 <2e10b170-5a75-4ae0-8d2f-c6c1ad9951a5@suse.com>
 <1b20fefd125598e2bb62d516495783650da75271.camel@gmail.com>
 <23955665-8bd8-4872-a1a5-e3a3711c9512@suse.com>
 <1c0eb1cdef1fac7695c4fc416128e2bb81cf13aa.camel@gmail.com>
 <ac43d7a3-f662-4985-9aaf-4cad1c517f35@suse.com>
 <ba1dbfbdd84811b09593425664f02a0cfe9430c3.camel@gmail.com>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <ba1dbfbdd84811b09593425664f02a0cfe9430c3.camel@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 19.01.2024 10:16, Oleksii wrote:
> On Thu, 2024-01-18 at 12:01 +0100, Jan Beulich wrote:
>> On 18.01.2024 10:43, Oleksii wrote:
>>> On Wed, 2024-01-17 at 14:42 +0100, Jan Beulich wrote:
>>>> On 17.01.2024 12:37, Oleksii wrote:
>>>>>>>>
>>>>>>>>>> Also you want to make sure asm-generic/bitops/bitops-
>>>>>>>>>> bits.h
>>>>>>>>>> is
>>>>>>>>>> really in use here, or else an arch overriding / not
>>>>>>>>>> using
>>>>>>>>>> that
>>>>>>>>>> header may end up screwed.
>>>>>>>>> I am not really understand what do you mean. Could you
>>>>>>>>> please
>>>>>>>>> explain a
>>>>>>>>> little bit more.
>>>>>>>>
>>>>>>>> Whichever type you use here, it needs to be in sync with
>>>>>>>> BITOP_BITS_PER_WORD. Hence you want to include the
>>>>>>>> _local_
>>>>>>>> bitops-
>>>>>>>> bits.h
>>>>>>>> here, such that in case of an inconsistent override by an
>>>>>>>> arch
>>>>>>>> the
>>>>>>>> compiler would complain about the two differring #define-
>>>>>>>> s.
>>>>>>>> (IOW
>>>>>>>> an
>>>>>>>> arch overriding BITOP_BITS_PER_WORD cannot re-use this
>>>>>>>> header
>>>>>>>> as-
>>>>>>>> is.)
>>>>>>>>
>>>>>>>> The same may, btw, be true for others of the new headers
>>>>>>>> you
>>>>>>>> add
>>>>>>>> -
>>>>>>>> the
>>>>>>>> same #include would therefore be needed there as well.
>>>>>>> Now it clear to me.
>>>>>>>
>>>>>>>
>>>>>>> It seems like BITOP_BITS_PER_WORD, BITOP_MASK, BITOP_WORD,
>>>>>>> and
>>>>>>> BITS_PER_BYTE are defined in {arm, ppc,
>>>>>>> riscv}/include/asm/bitops.h.
>>>>>>> I expected that any architecture planning to use asm-
>>>>>>> generic/bitops/bitops-bits.h would include it at the
>>>>>>> beginning
>>>>>>> of
>>>>>>> <arch>/include/asm/bitops.h, similar to what is done for
>>>>>>> RISC-
>>>>>>> V:
>>>>>>>    #ifndef _ASM_RISCV_BITOPS_H
>>>>>>>    #define _ASM_RISCV_BITOPS_H
>>>>>>>    
>>>>>>>    #include <asm/system.h>
>>>>>>>    
>>>>>>>    #include <asm-generic/bitops/bitops-bits.h>
>>>>>>>    ...
>>>>>>>
>>>>>>> But in this case, to allow architecture overrides macros,
>>>>>>> it is
>>>>>>> necessary to update asm-generic/bitops/bitops-bits.h:
>>>>>>>     #ifndef BITOP_BITS_PER_WORD
>>>>>>>     #define BITOP_BITS_PER_WORD     32
>>>>>>>     #endif
>>>>>>>    ...
>>>>>>> Therefore,  if an architecture needs to override something,
>>>>>>> it
>>>>>>> will
>>>>>>> add
>>>>>>> #define ... before #include <asm-generic/bitops/bitops-
>>>>>>> bits.h>.
>>>>>>>
>>>>>>> Does it make sense?
>>>>>>
>>>>>> Sure. But then the arch also needs to provide a corresponding
>>>>>> typedef
>>>>>> (and bitops-bits.h the fallback one), for use wherever you
>>>>>> use
>>>>>> any of
>>>>>> those #define-s.
>>>>> Which one typedef is needed to provide?
>>>>> <asm-generic/bitops/bitops-bits.h> contains only macros.
>>>>
>>>> A new one, to replace where right now you use "unsigned int" and
>>>> I
>>>> initially said you need to use "uint32_t" instead. With what you
>>>> said
>>>> earlier, uint32_t won't work there (anymore).
>>> Wouldn't it be enough just to "#include <xen/types.h>" in headers
>>> where
>>> "uint32_t" is used?
>>
>> No, my point wasn't to make uint32_t available. We need a _separate_
>> typedef which matches the #define-s. Otherwise, if an arch defines
>> BITOP_BITS_PER_WORD to, say, 64, this generic code would do the wrong
>> thing.
> Oh, yeah this is true.
> 
> We have to introduce in bitops-bits.h:
>    typedef uint_32t bitops_type; 

Perhaps e.g.

typedef uint32_t bitops_uint_t;

though.

Jan

> And then use it in function such as test_bit:
>    static inline int test_bit(int nr, const volatile void *addr)
>    {
>        const volatile bitops_type *p = addr;
>        return 1 & (p[BITOP_WORD(nr)] >> (nr & (BITOP_BITS_PER_WORD -
>    1)));
>    }
> 
> Thanks for clarification.
> 
> ~ Oleksii



From xen-devel-bounces@lists.xenproject.org Fri Jan 19 09:30:32 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 19 Jan 2024 09:30:32 +0000
Received: from list by lists.xenproject.org with outflank-mailman.668975.1041496 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQlCl-00031M-1p; Fri, 19 Jan 2024 09:30:27 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 668975.1041496; Fri, 19 Jan 2024 09:30:27 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQlCk-00031F-VA; Fri, 19 Jan 2024 09:30:26 +0000
Received: by outflank-mailman (input) for mailman id 668975;
 Fri, 19 Jan 2024 09:30:26 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=ePSo=I5=gmail.com=oleksii.kurochko@srs-se1.protection.inumbo.net>)
 id 1rQlCk-000319-1h
 for xen-devel@lists.xenproject.org; Fri, 19 Jan 2024 09:30:26 +0000
Received: from mail-lf1-x133.google.com (mail-lf1-x133.google.com
 [2a00:1450:4864:20::133])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 60024adb-b6ad-11ee-98f2-6d05b1d4d9a1;
 Fri, 19 Jan 2024 10:30:25 +0100 (CET)
Received: by mail-lf1-x133.google.com with SMTP id
 2adb3069b0e04-50eabfac2b7so622994e87.0
 for <xen-devel@lists.xenproject.org>; Fri, 19 Jan 2024 01:30:25 -0800 (PST)
Received: from [192.168.206.239] ([94.75.70.14])
 by smtp.gmail.com with ESMTPSA id
 t5-20020ac25485000000b0050e92afc7eesm915065lfk.246.2024.01.19.01.30.23
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Fri, 19 Jan 2024 01:30:24 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 60024adb-b6ad-11ee-98f2-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1705656625; x=1706261425; darn=lists.xenproject.org;
        h=mime-version:user-agent:content-transfer-encoding:references
         :in-reply-to:date:cc:to:from:subject:message-id:from:to:cc:subject
         :date:message-id:reply-to;
        bh=whMmvVsZRjKXtBq12DpDZ3kUkRjm4TRrZ6XwRf4gtS8=;
        b=LHWTOjhkTULknXJpNdBTl8e6tKDFAYI6pnCUlw44/SnPTR9g0/ItPZNm0d657aWr8q
         Xr/kd9j+nQDMnNrA/vN7Ag9l0bddW7s8uvbU6I6Co8UUnXXRm87rYZ2GhFhtNsSAlupN
         sXlibW/D5HLSgsfl3egyBP+8+SKEVnnC1chr6G8shIpeRX1DJ2syjId0pX8ZLV/e2Act
         CaPcXOqNicgUV9J2L4XaMCUfSmPCOpB9HAHwyW2UKqP1sZHEHXPDzAPVq2G/jhgxCLjT
         HtD47GCE5mamv4xDzScSQ7zvxaLQ/AzhNKlzfP5EZ5nOmfENee1SiBtPbmHJJj8rTIR9
         /LDg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705656625; x=1706261425;
        h=mime-version:user-agent:content-transfer-encoding:references
         :in-reply-to:date:cc:to:from:subject:message-id:x-gm-message-state
         :from:to:cc:subject:date:message-id:reply-to;
        bh=whMmvVsZRjKXtBq12DpDZ3kUkRjm4TRrZ6XwRf4gtS8=;
        b=GzZxdxbbUX/9hf5ko86koxreSB6IXxGnWzxzHgA6CLTu+2Y/IeNyFuC90xyqfnzwsF
         xWdwo2xxmut3UTIaCiySAlXQPtB9iAA4SEfSEMuGcMOVC1nU78xHrcrTyjUGKk4tAkPD
         N6viR34rZf/hX/0H/m9mK+sRgc0DuyjXzT6/J4glY4awRUlU0Bp1RRdXRNjm8uS9dtNR
         m0GG7P0Vr4YTxfwL8TGxQPBYCNrDQplMESy2i8g4rfDrLQM0y3Qlp6wPIr4yfCr0ci6J
         7/s7pIH7f5HVIWp0+5UGRwgoxHHUGA8L0Vq6yp7OUq5+11pdL4iz07btfeqgBtPT8WgB
         MlDQ==
X-Gm-Message-State: AOJu0YxnBcoLkI32mHf4o6cglvJMvHeTAJ3VlwPhgAA2PV6590plbz++
	GVH+cm7fOqFUU/eaYiDjVV7B3modKmUxsSaJxUWK2r34rKuJemwA
X-Google-Smtp-Source: AGHT+IE7/dCRggUHTJEeVaqzK3NFg1UBHUkJy68WS3SvXsAvC40RAm4B1oM+HTw63ngMw1lsWgURUA==
X-Received: by 2002:a05:6512:1307:b0:50e:d3dc:2245 with SMTP id x7-20020a056512130700b0050ed3dc2245mr580954lfu.58.1705656624486;
        Fri, 19 Jan 2024 01:30:24 -0800 (PST)
Message-ID: <2f7dc0e9213736bfac6944ff0b7d75a7b66bf7e8.camel@gmail.com>
Subject: Re: [PATCH v3 10/34] xen/riscv: introduce bitops.h
From: Oleksii <oleksii.kurochko@gmail.com>
To: Jan Beulich <jbeulich@suse.com>
Cc: Alistair Francis <alistair.francis@wdc.com>, Bob Eshleman
 <bobbyeshleman@gmail.com>, Connor Davis <connojdavis@gmail.com>, Andrew
 Cooper <andrew.cooper3@citrix.com>, George Dunlap
 <george.dunlap@citrix.com>,  Julien Grall <julien@xen.org>, Stefano
 Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>, 
 xen-devel@lists.xenproject.org
Date: Fri, 19 Jan 2024 11:30:23 +0200
In-Reply-To: <df4ffb88-616e-45c3-8b9d-eaea8a4fed3a@suse.com>
References: <cover.1703255175.git.oleksii.kurochko@gmail.com>
	 <841d59c3950970f4937da200cf8f04aa39132e14.1703255175.git.oleksii.kurochko@gmail.com>
	 <f6e13ad0-5401-41f7-9f3b-ef8f1bf9c1df@suse.com>
	 <af71f5ce0ac6af9a2d87a31a154ba051a0841e3a.camel@gmail.com>
	 <df4ffb88-616e-45c3-8b9d-eaea8a4fed3a@suse.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
User-Agent: Evolution 3.50.2 (3.50.2-1.fc39) 
MIME-Version: 1.0

On Fri, 2024-01-19 at 10:14 +0100, Jan Beulich wrote:
> On 19.01.2024 10:09, Oleksii wrote:
> > On Thu, 2024-01-18 at 12:03 +0100, Jan Beulich wrote:
> > > On 22.12.2023 16:12, Oleksii Kurochko wrote:
> > > > --- /dev/null
> > > > +++ b/xen/include/asm-generic/bitops/bitops-bits.h
> > > > @@ -0,0 +1,10 @@
> > > > +/* SPDX-License-Identifier: GPL-2.0 */
> > > > +#ifndef _ASM_GENERIC_BITOPS_BITS_H_
> > > > +#define _ASM_GENERIC_BITOPS_BITS_H_
> > > > +
> > > > +#define BITOP_BITS_PER_WORD=C2=A0=C2=A0=C2=A0=C2=A0 32
> > > > +#define BITOP_MASK(nr)=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0 (1UL << ((nr) %
> > > > BITOP_BITS_PER_WORD))
> > > > +#define BITOP_WORD(nr)=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0 ((nr) / BITOP_BITS_PER_WORD)
> > > > +#define BITS_PER_BYTE=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0 8
> > >=20
> > > Btw, I can't spot a use of BITS_PER_BYTE. Why do you add it? And
> > > if
> > > it really needed adding, it surely wouldn't belong here.
> > It is used in common/bitmap.c and ns16550.c, and inside some arch
> > code,
> > but it is not used by RISC-V right now.
> >=20
> > Would it be better to define it in config.h?
>=20
> Yes, perhaps. Imo this shouldn't have a "generic" fallback; every
> arch
> should explicitly state this (along with e.g. BITS_PER_LONG).
Got it. Thanks.

~ Oleksii


From xen-devel-bounces@lists.xenproject.org Fri Jan 19 09:31:04 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 19 Jan 2024 09:31:04 +0000
Received: from list by lists.xenproject.org with outflank-mailman.668977.1041505 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQlDK-0003Us-9n; Fri, 19 Jan 2024 09:31:02 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 668977.1041505; Fri, 19 Jan 2024 09:31:02 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQlDK-0003Ul-79; Fri, 19 Jan 2024 09:31:02 +0000
Received: by outflank-mailman (input) for mailman id 668977;
 Fri, 19 Jan 2024 09:31:01 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rQlDJ-0003UZ-KK; Fri, 19 Jan 2024 09:31:01 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rQlDJ-0006vO-DD; Fri, 19 Jan 2024 09:31:01 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rQlDJ-0008CC-1P; Fri, 19 Jan 2024 09:31:01 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rQlDJ-0004zJ-0K; Fri, 19 Jan 2024 09:31:01 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=317uUWC4o1lRjcHKpQmjwVkQJbzk8keDqx+MXQWjJHg=; b=yprR/1Z3XyvoARJXejZEYCKVIe
	MFwGlkokvgT7Iw8COvKSfOz9R1C/e7BopWJMtXq5vh9LEUZPSxh7ciae8epEDR+qvJRQaKAoRA32K
	JfPN4TwlCq0h1X6VnJUST8zknL/vAEQb6KwI08ED4VWC08pkeIUS2GSoo7SQo/fGfHSA=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184403-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [ovmf test] 184403: all pass - PUSHED
X-Osstest-Versions-This:
    ovmf=0223bdd4e40975c427616761fb13c9454461b64d
X-Osstest-Versions-That:
    ovmf=9d3fe85fcc8ff386ee0814a4dad03bbf7dc54594
From: osstest service owner <osstest-admin@xenproject.org>
Date: Fri, 19 Jan 2024 09:31:01 +0000

flight 184403 ovmf real [real]
http://logs.test-lab.xenproject.org/osstest/logs/184403/

Perfect :-)
All tests in this flight passed as required
version targeted for testing:
 ovmf                 0223bdd4e40975c427616761fb13c9454461b64d
baseline version:
 ovmf                 9d3fe85fcc8ff386ee0814a4dad03bbf7dc54594

Last test of basis   184400  2024-01-19 03:43:25 Z    0 days
Testing same since   184403  2024-01-19 07:11:05 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Yi Li <yi1.li@intel.com>

jobs:
 build-amd64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-amd64-amd64-xl-qemuu-ovmf-amd64                         pass    
 test-amd64-i386-xl-qemuu-ovmf-amd64                          pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Pushing revision :

To xenbits.xen.org:/home/xen/git/osstest/ovmf.git
   9d3fe85fcc..0223bdd4e4  0223bdd4e40975c427616761fb13c9454461b64d -> xen-tested-master


From xen-devel-bounces@lists.xenproject.org Fri Jan 19 09:48:44 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 19 Jan 2024 09:48:44 +0000
Received: from list by lists.xenproject.org with outflank-mailman.668986.1041516 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQlUN-0006e3-Mp; Fri, 19 Jan 2024 09:48:39 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 668986.1041516; Fri, 19 Jan 2024 09:48:39 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQlUN-0006dw-Jp; Fri, 19 Jan 2024 09:48:39 +0000
Received: by outflank-mailman (input) for mailman id 668986;
 Fri, 19 Jan 2024 09:48:39 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=xVsr=I5=cloud.com=roger.pau@srs-se1.protection.inumbo.net>)
 id 1rQlUN-0006dq-1s
 for xen-devel@lists.xenproject.org; Fri, 19 Jan 2024 09:48:39 +0000
Received: from mail-wm1-x32b.google.com (mail-wm1-x32b.google.com
 [2a00:1450:4864:20::32b])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id eb4c146b-b6af-11ee-98f2-6d05b1d4d9a1;
 Fri, 19 Jan 2024 10:48:38 +0100 (CET)
Received: by mail-wm1-x32b.google.com with SMTP id
 5b1f17b1804b1-40e5afc18f5so6040685e9.3
 for <xen-devel@lists.xenproject.org>; Fri, 19 Jan 2024 01:48:38 -0800 (PST)
Received: from localhost ([213.195.127.68]) by smtp.gmail.com with ESMTPSA id
 fa6-20020a05600c518600b0040e861ad5d2sm10481840wmb.0.2024.01.19.01.48.37
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Fri, 19 Jan 2024 01:48:37 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: eb4c146b-b6af-11ee-98f2-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1705657717; x=1706262517; darn=lists.xenproject.org;
        h=in-reply-to:content-transfer-encoding:content-disposition
         :mime-version:references:message-id:subject:cc:to:from:date:from:to
         :cc:subject:date:message-id:reply-to;
        bh=QNnSUEiMlS8Eerz2RMRLh5be7V6JC8Av+Vu/QaxqC70=;
        b=suHw2xXxWeMwWIP7disZnMz6Lwn28dwrknOr+83u8hxJoq1hnOrUrqlBwNXX34I9BL
         mCoQHqn3ZrLWW9V0EVX6IuJb2ovJrLPM2++uwBKZZXeFlnmrS4fcEyv20+yCZ7zxehUl
         9u6PBomBROYXUYcg877Z85uK3a6QY28SoskiQ=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705657717; x=1706262517;
        h=in-reply-to:content-transfer-encoding:content-disposition
         :mime-version:references:message-id:subject:cc:to:from:date
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=QNnSUEiMlS8Eerz2RMRLh5be7V6JC8Av+Vu/QaxqC70=;
        b=hM8w8IpG6zF9UEW2TR40D3IhcFp8219oR2frlH4Td3lqGmXTyqaYIdBATBbdhH6AT/
         LV51DT9N/HkErXqTSuyffLJPiqJTUMoU2ZWjsPw7Ri1115eja6emdWVAluDydc4+s5hN
         AFCdgaw7FMZ8lEJRtVd4PMnYwvY+Fb/BTTbK6DiZKXfKjBFKtODTX7QNpisy0R60AoOk
         uQ8/Pj++ud7VONU0EIwQRPrFNmAbVYWkyf/1uJI32TMPZ/d0E4VsWtpX1is3Z3eLWwWX
         QwFyQz+iVIuxNdYMnRc9mtqs2FDzkjoIwXyt3m8jm/iO2mWZtyT2+jMpcI01E0kBJqu7
         BBeg==
X-Gm-Message-State: AOJu0YwD7ssqq3CXZ6kvPlk771eqLyVqFZCJz21+E8A/luiOHhKn1ACg
	qdkqB0h8DuPtdRQ5XlODEHiDVqxZKMAvn6K1UjkfQRF5sYzRYFgvDjO0Yq9T2nE=
X-Google-Smtp-Source: AGHT+IHRk8RSKb0srSSMZIhup1QVlzScUGurvVyKXMzB0ZdUKFdhBcqNzECh29/q3w2UxmjjhgfQOw==
X-Received: by 2002:a05:600c:22c2:b0:40e:485c:aabf with SMTP id 2-20020a05600c22c200b0040e485caabfmr1272476wmg.130.1705657717390;
        Fri, 19 Jan 2024 01:48:37 -0800 (PST)
Date: Fri, 19 Jan 2024 10:48:36 +0100
From: Roger Pau =?utf-8?B?TW9ubsOp?= <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>
Subject: Re: [PATCH v5 2/8] x86: annotate entry points with type and size
Message-ID: <ZapFdAcpTcOALgOo@macbook>
References: <e4bf47ca-2ae6-1fd4-56a6-e4e777150b64@suse.com>
 <7a133ed9-9d13-4e2c-893a-00c083c8a35d@suse.com>
 <9096ad1a-5d86-4dd1-a7c3-6ad2f7e5a623@suse.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <9096ad1a-5d86-4dd1-a7c3-6ad2f7e5a623@suse.com>

On Mon, Jan 15, 2024 at 03:34:56PM +0100, Jan Beulich wrote:
> Use the generic framework in xen/linkage.h.
> 
> For switch_to_kernel() and restore_all_guest() so far implicit alignment
> (from being first in their respective sections) is being made explicit
> (as in: using FUNC() without 2nd argument). Whereas for
> {,compat}create_bounce_frame() and autogen_entrypoints[] alignment is
> newly arranged for.
> 
> Except for the added/adjusted alignment padding (including their
> knock-on effects) no change in generated code/data. Note that the basis
> for support of weak definitions is added despite them not having any use
> right now.
> 
> Note that ASM_INT() is switched to DATA(), not DATA_LOCAL(), as the only
> use site wants the symbol global anyway.
> 
> Signed-off-by: Jan Beulich <jbeulich@suse.com>

Reviewed-by: Roger Pau Monné <roger.pau@citrix.com>

Thanks, Roger.


From xen-devel-bounces@lists.xenproject.org Fri Jan 19 09:53:49 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 19 Jan 2024 09:53:49 +0000
Received: from list by lists.xenproject.org with outflank-mailman.668993.1041526 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQlZJ-0008MK-Cv; Fri, 19 Jan 2024 09:53:45 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 668993.1041526; Fri, 19 Jan 2024 09:53:45 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQlZJ-0008MD-AH; Fri, 19 Jan 2024 09:53:45 +0000
Received: by outflank-mailman (input) for mailman id 668993;
 Fri, 19 Jan 2024 09:53:44 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rQlZI-0008M0-Hi; Fri, 19 Jan 2024 09:53:44 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rQlZI-0007KL-1r; Fri, 19 Jan 2024 09:53:44 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rQlZH-0000rH-G2; Fri, 19 Jan 2024 09:53:43 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rQlZH-0004VB-FZ; Fri, 19 Jan 2024 09:53:43 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=6u2eVDhmiT1ddSt1d/Z4l5exYzpRtSx8g6JfcIvg9ws=; b=MSeqZcRuQBkhUJTt72AbYhsKdf
	pYgaWRbH3IttCk6B837Hl7R+wrQegbSlC5aJySHbUbhAhWe8RHqqWaGfVt7YF7NXk/8zSFLfTgJkA
	0/pupp2bJlbD0Kxm/RLSUnxwDgDTLGxwMOhGgFa06HzMmsw0pT9sFLn7S2v0uENS3ox4=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184398-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [xen-unstable test] 184398: tolerable FAIL - PUSHED
X-Osstest-Failures:
    xen-unstable:test-armhf-armhf-libvirt-raw:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-amd64-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-amd64-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-qcow2:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-qemuu-nested-amd:debian-hvm-install/l1/l2:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-i386-libvirt-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-libvirt:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-pvshim:guest-start:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-xsm:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-credit2:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-credit2:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-libvirt-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-libvirt-xsm:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-thunderx:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-thunderx:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-credit1:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-credit1:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-multivcpu:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-multivcpu:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit2:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit2:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-libvirt-raw:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-libvirt-raw:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-libvirt-raw:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt-vhd:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-vhd:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-vhd:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-raw:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-vhd:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-vhd:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit1:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit1:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-rtds:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-rtds:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-arndale:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-arndale:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-qcow2:migrate-support-check:fail:nonblocking
X-Osstest-Versions-This:
    xen=c30021be302aa2a644ef5544097fb8bb763ec140
X-Osstest-Versions-That:
    xen=730d2637a8e5b98dc8e4e366179b4cedc496b3ad
From: osstest service owner <osstest-admin@xenproject.org>
Date: Fri, 19 Jan 2024 09:53:43 +0000

flight 184398 xen-unstable real [real]
http://logs.test-lab.xenproject.org/osstest/logs/184398/

Failures :-/ but no regressions.

Tests which did not succeed, but are not blocking:
 test-armhf-armhf-libvirt-raw 15 saverestore-support-check fail blocked in 184388
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop      fail blocked in 184388
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 184388
 test-amd64-amd64-xl-qemut-win7-amd64 19 guest-stop            fail like 184388
 test-amd64-i386-xl-qemuu-win7-amd64 19 guest-stop             fail like 184388
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 184388
 test-amd64-i386-xl-qemut-ws16-amd64 19 guest-stop             fail like 184388
 test-amd64-i386-xl-qemut-win7-amd64 19 guest-stop             fail like 184388
 test-amd64-amd64-xl-qemut-ws16-amd64 19 guest-stop            fail like 184388
 test-armhf-armhf-libvirt-qcow2 15 saverestore-support-check   fail like 184388
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 184388
 test-amd64-i386-xl-qemuu-ws16-amd64 19 guest-stop             fail like 184388
 test-amd64-i386-libvirt-xsm  15 migrate-support-check        fail   never pass
 test-amd64-i386-libvirt      15 migrate-support-check        fail   never pass
 test-amd64-i386-xl-pvshim    14 guest-start                  fail   never pass
 test-amd64-amd64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl          15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-xsm      15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl          16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-xsm      16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-credit2  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit2  16 saverestore-support-check    fail   never pass
 test-arm64-arm64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-xsm 16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-thunderx 15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-thunderx 16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-credit1  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit1  16 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt     15 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-armhf-armhf-libvirt     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-multivcpu 15 migrate-support-check        fail  never pass
 test-armhf-armhf-xl-multivcpu 16 saverestore-support-check    fail  never pass
 test-armhf-armhf-xl-credit2  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit2  16 saverestore-support-check    fail   never pass
 test-amd64-i386-libvirt-raw  14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 15 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-vhd 14 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-vhd      14 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-vhd      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-raw 14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl          15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-credit1  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit1  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-rtds     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-rtds     16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-arndale  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-arndale  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-qcow2 14 migrate-support-check        fail never pass

version targeted for testing:
 xen                  c30021be302aa2a644ef5544097fb8bb763ec140
baseline version:
 xen                  730d2637a8e5b98dc8e4e366179b4cedc496b3ad

Last test of basis   184388  2024-01-18 01:55:55 Z    1 days
Testing same since   184398  2024-01-19 01:37:36 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Andrew Cooper <andrew.cooper3@citrix.com>

jobs:
 build-amd64-xsm                                              pass    
 build-arm64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64-xtf                                              pass    
 build-amd64                                                  pass    
 build-arm64                                                  pass    
 build-armhf                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-arm64-libvirt                                          pass    
 build-armhf-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-prev                                             pass    
 build-i386-prev                                              pass    
 build-amd64-pvops                                            pass    
 build-arm64-pvops                                            pass    
 build-armhf-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-xtf-amd64-amd64-1                                       pass    
 test-xtf-amd64-amd64-2                                       pass    
 test-xtf-amd64-amd64-3                                       pass    
 test-xtf-amd64-amd64-4                                       pass    
 test-xtf-amd64-amd64-5                                       pass    
 test-amd64-amd64-xl                                          pass    
 test-amd64-coresched-amd64-xl                                pass    
 test-arm64-arm64-xl                                          pass    
 test-armhf-armhf-xl                                          pass    
 test-amd64-i386-xl                                           pass    
 test-amd64-coresched-i386-xl                                 pass    
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm           pass    
 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm            pass    
 test-amd64-amd64-xl-qemut-stubdom-debianhvm-amd64-xsm        pass    
 test-amd64-i386-xl-qemut-stubdom-debianhvm-amd64-xsm         pass    
 test-amd64-amd64-xl-qemut-debianhvm-i386-xsm                 pass    
 test-amd64-i386-xl-qemut-debianhvm-i386-xsm                  pass    
 test-amd64-amd64-xl-qemuu-debianhvm-i386-xsm                 pass    
 test-amd64-i386-xl-qemuu-debianhvm-i386-xsm                  pass    
 test-amd64-amd64-libvirt-xsm                                 pass    
 test-arm64-arm64-libvirt-xsm                                 pass    
 test-amd64-i386-libvirt-xsm                                  pass    
 test-amd64-amd64-xl-xsm                                      pass    
 test-arm64-arm64-xl-xsm                                      pass    
 test-amd64-i386-xl-xsm                                       pass    
 test-amd64-amd64-qemuu-nested-amd                            fail    
 test-amd64-amd64-xl-pvhv2-amd                                pass    
 test-amd64-i386-qemut-rhel6hvm-amd                           pass    
 test-amd64-i386-qemuu-rhel6hvm-amd                           pass    
 test-amd64-amd64-dom0pvh-xl-amd                              pass    
 test-amd64-amd64-xl-qemut-debianhvm-amd64                    pass    
 test-amd64-i386-xl-qemut-debianhvm-amd64                     pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64                    pass    
 test-amd64-i386-xl-qemuu-debianhvm-amd64                     pass    
 test-amd64-i386-freebsd10-amd64                              pass    
 test-amd64-amd64-qemuu-freebsd11-amd64                       pass    
 test-amd64-amd64-qemuu-freebsd12-amd64                       pass    
 test-amd64-amd64-xl-qemuu-ovmf-amd64                         pass    
 test-amd64-i386-xl-qemuu-ovmf-amd64                          pass    
 test-amd64-amd64-xl-qemut-win7-amd64                         fail    
 test-amd64-i386-xl-qemut-win7-amd64                          fail    
 test-amd64-amd64-xl-qemuu-win7-amd64                         fail    
 test-amd64-i386-xl-qemuu-win7-amd64                          fail    
 test-amd64-amd64-xl-qemut-ws16-amd64                         fail    
 test-amd64-i386-xl-qemut-ws16-amd64                          fail    
 test-amd64-amd64-xl-qemuu-ws16-amd64                         fail    
 test-amd64-i386-xl-qemuu-ws16-amd64                          fail    
 test-armhf-armhf-xl-arndale                                  pass    
 test-amd64-amd64-examine-bios                                pass    
 test-amd64-i386-examine-bios                                 pass    
 test-amd64-amd64-xl-credit1                                  pass    
 test-arm64-arm64-xl-credit1                                  pass    
 test-armhf-armhf-xl-credit1                                  pass    
 test-amd64-amd64-xl-credit2                                  pass    
 test-arm64-arm64-xl-credit2                                  pass    
 test-armhf-armhf-xl-credit2                                  pass    
 test-amd64-amd64-xl-qemuu-dmrestrict-amd64-dmrestrict        pass    
 test-amd64-i386-xl-qemuu-dmrestrict-amd64-dmrestrict         pass    
 test-amd64-amd64-examine                                     pass    
 test-arm64-arm64-examine                                     pass    
 test-armhf-armhf-examine                                     pass    
 test-amd64-i386-examine                                      pass    
 test-amd64-i386-freebsd10-i386                               pass    
 test-amd64-amd64-qemuu-nested-intel                          pass    
 test-amd64-amd64-xl-pvhv2-intel                              pass    
 test-amd64-i386-qemut-rhel6hvm-intel                         pass    
 test-amd64-i386-qemuu-rhel6hvm-intel                         pass    
 test-amd64-amd64-dom0pvh-xl-intel                            pass    
 test-amd64-amd64-libvirt                                     pass    
 test-armhf-armhf-libvirt                                     pass    
 test-amd64-i386-libvirt                                      pass    
 test-amd64-amd64-livepatch                                   pass    
 test-amd64-i386-livepatch                                    pass    
 test-amd64-amd64-migrupgrade                                 pass    
 test-amd64-i386-migrupgrade                                  pass    
 test-amd64-amd64-xl-multivcpu                                pass    
 test-armhf-armhf-xl-multivcpu                                pass    
 test-amd64-amd64-pair                                        pass    
 test-amd64-i386-pair                                         pass    
 test-amd64-amd64-libvirt-pair                                pass    
 test-amd64-i386-libvirt-pair                                 pass    
 test-amd64-amd64-xl-pvshim                                   pass    
 test-amd64-i386-xl-pvshim                                    fail    
 test-amd64-amd64-pygrub                                      pass    
 test-armhf-armhf-libvirt-qcow2                               pass    
 test-amd64-amd64-xl-qcow2                                    pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-armhf-armhf-libvirt-raw                                 pass    
 test-amd64-i386-libvirt-raw                                  pass    
 test-amd64-amd64-xl-rtds                                     pass    
 test-armhf-armhf-xl-rtds                                     pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64-shadow             pass    
 test-amd64-i386-xl-qemuu-debianhvm-amd64-shadow              pass    
 test-amd64-amd64-xl-shadow                                   pass    
 test-amd64-i386-xl-shadow                                    pass    
 test-arm64-arm64-xl-thunderx                                 pass    
 test-amd64-amd64-examine-uefi                                pass    
 test-amd64-i386-examine-uefi                                 pass    
 test-amd64-amd64-libvirt-vhd                                 pass    
 test-arm64-arm64-xl-vhd                                      pass    
 test-armhf-armhf-xl-vhd                                      pass    
 test-amd64-i386-xl-vhd                                       pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Pushing revision :

To xenbits.xen.org:/home/xen/git/xen.git
   730d2637a8..c30021be30  c30021be302aa2a644ef5544097fb8bb763ec140 -> master


From xen-devel-bounces@lists.xenproject.org Fri Jan 19 09:55:00 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 19 Jan 2024 09:55:00 +0000
Received: from list by lists.xenproject.org with outflank-mailman.668998.1041535 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQlaV-0000Rl-Nl; Fri, 19 Jan 2024 09:54:59 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 668998.1041535; Fri, 19 Jan 2024 09:54:59 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQlaV-0000Re-Kp; Fri, 19 Jan 2024 09:54:59 +0000
Received: by outflank-mailman (input) for mailman id 668998;
 Fri, 19 Jan 2024 09:54:58 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=g64t=I5=amd.com=Ray.Huang@srs-se1.protection.inumbo.net>)
 id 1rQlaU-0000RW-5z
 for xen-devel@lists.xenproject.org; Fri, 19 Jan 2024 09:54:58 +0000
Received: from NAM04-BN8-obe.outbound.protection.outlook.com
 (mail-bn8nam04on20601.outbound.protection.outlook.com
 [2a01:111:f403:2408::601])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id cc7a4c24-b6b0-11ee-98f2-6d05b1d4d9a1;
 Fri, 19 Jan 2024 10:54:56 +0100 (CET)
Received: from SJ2PR12MB8690.namprd12.prod.outlook.com (2603:10b6:a03:540::10)
 by PH7PR12MB6636.namprd12.prod.outlook.com (2603:10b6:510:212::13)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7202.24; Fri, 19 Jan
 2024 09:54:50 +0000
Received: from SJ2PR12MB8690.namprd12.prod.outlook.com
 ([fe80::9b8e:816d:20b9:9845]) by SJ2PR12MB8690.namprd12.prod.outlook.com
 ([fe80::9b8e:816d:20b9:9845%5]) with mapi id 15.20.7202.024; Fri, 19 Jan 2024
 09:54:50 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: cc7a4c24-b6b0-11ee-98f2-6d05b1d4d9a1
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=LgnLm8NRMHLvBaqL0r7h/mkft+I5iyY65v/jZZHqWymHaitCUsDFXbEK0K7KAVx487W/PemeQnVg+JbgP7jNjGUPF6P2+kxhhkxKRJFOXHJ7CyHU7QHBZNWDnUv4gpAKM22ebI3OxKScCJ4DEh8zygz0NcAcux/KIVO6QePtcgG1aFFuhTygvEIWSlMYZ9jgjHNKBooAbN7eUWCfp9z0tAUFMQpTb0OqQYkT2qgAjYsnZasZFKlN52ls585LLDD/XzcCj10jNpU0VWwbnt8LC85k2kkjR86Yf7nx3DEbEdWGz1zjGG2eCIT3pTbi5Sd2fBLVDsKcaqFeYV/VSYt8vQ==
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=FfYZBIRYDsek3oo3J1UeIqyTfQfsbwCYKillH0oExJI=;
 b=TKbKrxxeDVconIrmHIjfdZrpgSorHpd8a7SNlnj++NN5Wk3dhQFI3jL51y9GylRAC2N58Flu/sJejoAjRLfaEt/X9MG26/bjI+o5wGNNwN3ColNlQ929n3u3f54cyebSxd+3AoTmxaV+m4eHL02+LKP/QSyFEldYyUzQ2zWhUWXdRSb5KPKzMWXFlURLwDZTiglVVpHk25/Y0CnLkD0Qgf1QxpTMwvue8klqfNXs/WRDvKv/3NcKaGLtN4UwppTY8g9sJiAh0VTNzpc+L5q4m6iPI6p/v6hlOMgYxpyvtgV8ffLLYRFXi8tYV/0NvHResB4RvhcoRgWC75iETGRseg==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=amd.com; dmarc=pass action=none header.from=amd.com; dkim=pass
 header.d=amd.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=FfYZBIRYDsek3oo3J1UeIqyTfQfsbwCYKillH0oExJI=;
 b=kGf+PywKwW3GI7nSsCMgxm6ZH7xT2/xHYgGeLpsGNfCWsH99ywcN79mWJ5bh1fxrP5cmoGNFXe+0PTTqXMYGSvzeAH21kveist/vgeU9AhUTpDSmhin/bvKkLbyKoexR0tADOFf70qE38iHvA7RkAeuYp7w/+eWszyTrexj3yDc=
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=amd.com;
Date: Fri, 19 Jan 2024 17:54:31 +0800
From: Huang Rui <ray.huang@amd.com>
To: Patrick Plenefisch <simonpatp@gmail.com>
Cc: Roger Pau =?iso-8859-1?Q?Monn=E9?= <roger.pau@citrix.com>,
	Jan Beulich <jbeulich@suse.com>,
	"xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>,
	Juergen Gross <jgross@suse.com>,
	"Chen, Jiqian" <Jiqian.Chen@amd.com>,
	Alex Deucher <alexander.deucher@amd.com>
Subject: Re: ACPI VFCT table too short on PVH dom0 (was: Re: E820 memory
 allocation issue on Threadripper platforms)
Message-ID: <ZapG1weSIJWOkT8m@amd.com>
References: <CAOCpoWeowZPuQTeBp9nu8p8CDtE=u++wN_UqRoABZtB57D50Qw@mail.gmail.com>
 <ac742d12-ec91-4215-bb42-82a145924b4f@suse.com>
 <CAOCpoWfQmkhN3hms1xuotSUZzVzR99i9cNGGU2r=yD5PjysMiQ@mail.gmail.com>
 <fa23a590-5869-4e11-8998-1d03742c5919@suse.com>
 <CAOCpoWf4CMkCWx8uR2NbFrZrKSS78wj1-hFsAUqsjCfsmqooVA@mail.gmail.com>
 <Zajg1O7Z52VTBq31@macbook>
 <CAOCpoWeO9h7b_CjJb9jtKaEUVv_=XDSVkr55QSg3ArFc4n8G2w@mail.gmail.com>
 <ZajzcpArQYQhdj3T@macbook>
 <ZakcdfS3UwEb0oh2@macbook>
 <CAOCpoWdL3YnpitZxEoFgdvtZ6juy8oykYj6fX_tv4QLvj2Fv0g@mail.gmail.com>
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <CAOCpoWdL3YnpitZxEoFgdvtZ6juy8oykYj6fX_tv4QLvj2Fv0g@mail.gmail.com>
X-ClientProxiedBy: SG2PR02CA0051.apcprd02.prod.outlook.com
 (2603:1096:4:54::15) To SJ2PR12MB8690.namprd12.prod.outlook.com
 (2603:10b6:a03:540::10)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: SJ2PR12MB8690:EE_|PH7PR12MB6636:EE_
X-MS-Office365-Filtering-Correlation-Id: 6cb03616-a8c7-41cb-7387-08dc18d4ad9d
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam: BCL:0;
X-Microsoft-Antispam-Message-Info:
	t4VZjNqZpmHan3hbvf7GKvqHcxfoT7cJ51DKwe2ovGD1K5dynRnO0WvYeX6xe2GIpkAwYlLgu8esPUJidHEJyweQvluyqREG0SSEVaLoQVfHTcYB1YCeueoiX+m0E0IES2zLGH/L3lTdCPgVO4IMqATla2Ft+lgXH4riPh4Od4oOTeAsjqRPJ92/KQ+SlIWzuLEwoJVA4gXwl4JbTF9ezG8yGwLUN9fsIqdifBoTP9+vVaQJnHEzuEih+j071u9I5uPjh19T2sUv6Lq45nhATPYQp60eYUbNYcM5vA6WxcTtM1qhO1urk9SwkhwGEd8UuzrM2K34GgZII0bQ3fdDHZ1/SH7WGH4C0/HAMqbEVqhyWzJ3bY9c/pKnjBwZ7qRVbrgu2yjDE/Tv2RjoqKxQZ9A6csHAYRoB/R+Xq0ZPmNYHEVEwZLAF3d9VsEWlygxdM/ZSEzh2jMf77JFvZwljLQgYIeZXBZkE5FdpjRxk4k7tNw0v7IVG0vtEZnE+Nz4HfmdjfcWDi7guOLRhnbguFcitJPCqVRELqEaDqQ4dR7zkBJvg+D4RsePVEiqYUFMxSM0xXrA58RWBDzieoKKcY4hzdUUjIH+T/xay9gqEFapGRnu4meU92C/UUd3EjDbKYyp4ikORBHXv2dsIC3C/ag==
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SJ2PR12MB8690.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230031)(396003)(136003)(346002)(39860400002)(376002)(366004)(230922051799003)(230273577357003)(230173577357003)(1800799012)(186009)(64100799003)(451199024)(8936002)(66476007)(86362001)(66556008)(54906003)(66946007)(6916009)(36756003)(5660300002)(2906002)(316002)(966005)(6486002)(6506007)(4326008)(8676002)(53546011)(38100700002)(41300700001)(83380400001)(2616005)(26005)(6512007)(6666004)(478600001);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?eVNBZ1Q2T1dZc0lJQU1UdThJRUZmRDFQL1JmekNHRTdNdnZHdisxUU9wRzc1?=
 =?utf-8?B?eGpQMGw3SjNPT2NTbTFzV1dGOFBKYUtpdHhKTTM2bHJqUjlXOFNYL1JQTVpu?=
 =?utf-8?B?TnZDVmxsZStQVDFZV2tJanlnREtLRWU1N1hnYTJMTXlYZkVSdHJ3aVNHM0lY?=
 =?utf-8?B?UlpjYVhJRjlzVkF6bzJZekVDamt3SlRSTGs5OFBkcjlQUUExTitvN3JiWFlv?=
 =?utf-8?B?N0k5VVdmdmdUQzhIWjJlSDE5V1NtNkFYQy8rckxSMjc0Rmk3OFN2em11NG9P?=
 =?utf-8?B?NU8wOS9tWDIvUDJObDBoMThFNGZJQTVjU2ppSnByZG01RmhkTWVMaVo0ZWk1?=
 =?utf-8?B?ZjJqNWtQaFdnWFdKL3pMTG94cXFCZXQ3REN5eTJabGFidEVkQjROTEJVVmt5?=
 =?utf-8?B?UHVMMjVzV3RRNG4rNm5ZWlhhd0J4NDh6OVVvRzF3alpxeHhFd2pNZGFZUk5z?=
 =?utf-8?B?VU9oQ1h5bEh2S3p3SWtxbGlRemQzekhwQWwza0JyeG8yS3lpeDFqWmVzQUd6?=
 =?utf-8?B?SmZmSndpYUdJaFcvdUxPWm1rMEw0SHZrL2sydHpLUkVOTkZtRnVsbmQxc04v?=
 =?utf-8?B?SnlPaWtQdnNCN2NGV1UvS0tRV2xuY2R3QnhLakNGVjRRelZ4VnJlVk9jclZ6?=
 =?utf-8?B?S2syTzZ6eVNib2lycnpaZXR6eVEybGpSemdkRXlPZUdnRFJzbW9UNG1uN3Yy?=
 =?utf-8?B?UW10alZlYmNGTHY5VDVFS0NGZGtvV24rVXRJQjZtSlBLWlJHdGRQTGpXTCti?=
 =?utf-8?B?d010MHdqeGdkR0JralRuNzQwdHBkRjZxeUg1OHhUM0xXL0lrV0JWV2pPNzdj?=
 =?utf-8?B?RzFvZ0xUUEkxSlBEZzdOYVlhMGhYd21qSHB5aHNoa1lya0laM0hRVlVHSTRN?=
 =?utf-8?B?NTEzY0w2dzhaWVBFdUxJdHFMZng0N2g0QmlpU1JrcXA4YndZZGp3czlaTURK?=
 =?utf-8?B?allwYlJsRjBSRTJOQWVVZ1pyUFN2aXFKb2dOY3lJMkpTNG1rZXM4V0xPam9Z?=
 =?utf-8?B?TWhsZ1ovY1NTT1BuUEZZTExJMnNwUnBjbnNENXA3V2NSc21pcUhIdVl1ajZC?=
 =?utf-8?B?K2RUeG5tZXJyYTFPdE96UkgyMVBOcXp3dnZQaGtJM1ZnY1JkeDVRM2xaTytV?=
 =?utf-8?B?WVZmNlFSbkpDYktuWXhXZ3lvdFU0c3hRbzU2azhwMWtzdDdnZ2d6NWNvV0FN?=
 =?utf-8?B?Z1duTmxLTVlHeGg5TU5yekxheHZURnl6VEF0a0dTZitoRWlWTCtSVDBYQk1D?=
 =?utf-8?B?Q1duc2tZTThkOWtnZy9HNjdOOUpDRVlUeVVJUjlxWUJMd2ZwMVBHeDJ1UlNI?=
 =?utf-8?B?RTQ4S2w1OEN3amNlU3lKU1BnN1NqaUY3WXZGeG01Y3FjN0pOdFVxUjNzcFFH?=
 =?utf-8?B?VGhyTFhHSnlaOXpQVUZSYURrOUhicjV2SzUrdmo2cGpFNllDRUhzUmFyMWF3?=
 =?utf-8?B?ZnE3RVFPRGV5U2V2eklheFpmYlVoRXRvdlZZZzNZTXg1UjgxTklsQU5FaWxl?=
 =?utf-8?B?K08ycjRtWGV0QW5DdnRLU0pnalBibUg5eGFtTUlobXVORVl0dytIV1JxS1NM?=
 =?utf-8?B?YjRCbzNqclNKWjlFZHdMcWlvazd4cWczTUNMNERjNWVVWElYSHhKRmhaVWVH?=
 =?utf-8?B?eWM4ZFFtY1lJRHlHUzFSeUYvckZGM1RETm0yZVBEMUROS0ZiTkIxTVNSWURX?=
 =?utf-8?B?UTgrRlpQUWx4VWlPOGtwK1M1NSt2NFZSU0dOZ1Z2SW10WnZpenFLOXlVc1A5?=
 =?utf-8?B?elM0ZWtIZnJSbWRrQitvWTBKcVBmQnArMHFIa0VvdW1WY0Y5YmJOM3AxMUxQ?=
 =?utf-8?B?azRwMjFmTWZqYXkyNHFJSmFWbnBVYWxORjRIeGM5MXVmYUdrcExTMmFyV0pI?=
 =?utf-8?B?OVdJRk1UTlcrMWp0VnNpTVRScmFtSzViQ0tqOTg0QUljaXNKVStZTHVEcU53?=
 =?utf-8?B?TU5XQjVhdU1HczQwRmVqUmdHL3pEVWcwaVBmQkhWMTNISDZIb21OekxBaFdX?=
 =?utf-8?B?SzAwQzdGZitUYTI0bG50V21xYSsyTUtQaTF1blBISUxmZmQ4RndUNXNUUWo1?=
 =?utf-8?B?OElTNGNsTGo5YVZ3VUJkbzVPU25Ma0dwRWowOUQ2bkkwd1JFNytCRTd4TXdu?=
 =?utf-8?Q?gb4anaLb16eeSUUvkdsiDw76h?=
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 6cb03616-a8c7-41cb-7387-08dc18d4ad9d
X-MS-Exchange-CrossTenant-AuthSource: SJ2PR12MB8690.namprd12.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 19 Jan 2024 09:54:50.5999
 (UTC)
X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted
X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d
X-MS-Exchange-CrossTenant-MailboxType: HOSTED
X-MS-Exchange-CrossTenant-UserPrincipalName: i4gQiJkelNW5203vzOEPjfles3IIfff1hJ3k7k1O9iyRig1S+w259y4X0COpedMWmp+4Mgqjh+EFdiha4LZPhg==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR12MB6636

On Fri, Jan 19, 2024 at 03:44:35PM +0800, Patrick Plenefisch wrote:
>    On Thu, Jan 18, 2024 at 7:41 AM Roger Pau Monné
>    <[1]roger.pau@citrix.com> wrote:
> 
>      From that environment (PVH dom0) can you see if you can dump the
>      contents of the VFCT table?  I don't have a system with that table,
>      so
>      not sure if this will work (because iasl is unlikely to know how to
>      decode it):
>      # acpidump -n VFCT -o table.dump
>      # acpixtract -a table.dump
>      # iasl -d vfct.dat
>      # cat vfct.dsl
>      Would be good if you can compare the output from what you get on a
>      PV
>      dom0 or when running native Linux.
>      I'm also adding some AMD folks, as IIRC they did some fixes to Linux
>      in order to get some AMD graphics cards running on a PVH dom0, maybe
>      they can provide some additional input.
> 
>    Well, this is pretty weird. I'll go into more details because it may be
>    relevant. I had been working with ASRock support ever since I got my
>    brand new motherboard because I couldn't see the BIOS/UEFI screens. I
>    could boot up, and once native linux took control amdgpu got the
>    screens/gpu working fine. I finally managed to be able to see the
>    UEFI/BIOS setup screens by patching my VBIOS: I extracted the VBIOS
>    image of a cheap R5 430 OEM, ran GOPupd to update the VBIOS UEFI
>    component (GOP) from version 1.60 to 1.67. That allowed the UEFI to
>    actually initialize and use a screen. However, I later realized that
>    only 1 monitor was lighting up in the bios: my monitor plugged into the
>    Radeon RX 480 that was still on VBIOS GOP 1.60. It appears the GOP was
>    initializing the RX 480 too, despite not being flashed with the latest
>    itself. I am working on an email to asrock support about that. Once I
>    get into linux (native or PV), both monitors light up as expected.
>    Also, If I boot linux PVH from grub, they also work. Those usage
>    scenarios have acpidump output as identical. Booting linux PVH directly
>    from UEFI (no grub), the monitors go to sleep on the RX 480, and amdgpu
>    errors out about VFCT, but the R5 430 OEM does still have output.
>    Interestingly, there is a different screen mode booting UEFI+PVH, the
>    characters are basically squares, with more vertical lines than
>    "default", maybe close to native screen resolution, but horizontally
>    it's still "default". Booting from grub gives everything in the
>    "default" resolution.
>    So what is in the VFCT Table? VFCT contains the non-GOP VIOS image of

Thanks Roger to involve us. The VFCT table is to expose video BIOS image by
AMD GPUs. You can see details here:

https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/gpu/drm/amd/include/atombios.h

Did you apply this patch?

https://lore.kernel.org/xen-devel/20230312075455.450187-2-ray.huang@amd.com/

Thanks,
Ray

>    my Radeon RX 480 GPU. You can compare it to the VBIOS hosted at
>    [2]https://www.techpowerup.com/vgabios/185789/msi-rx480-4096-160720
>    (Compare the end at E667 in the VFCT table to E5ff in that vbios link).
>    I find this extra suspicious due to the above.
>    Now for the extra horrible things:
>    UEFI-booted PVH Linux doesn't support keyboard getty input, and at
>    least some of the USB devices are not in lsusb. It also decided to
>    vanish one of my HDD's. The `reboot` command hangs. The Power button
>    doesn't do anything. There are several stack traces in dmesg. But
>    Alt-SysRq-B does reboot! Luckily I could ssh in and capture the ACPI
>    tables. They are much smaller, and VFCT is empty.  Booting back to one
>    of the working scenarios (direct linux, Grub PV, Grub PVH, UEFI PV),
>    all of this is normal.
>    I've attached:
>    xenboot.log which is the serial log of xen+linux booting in UEFI PVH
>    (kernel is debian's config, but patched to start at 2MiB)
>    dmesg.txt which is the linux dmesg that contains some nice stack traces
>    (kernel is debian's config, but patched to start at 2MiB)
>    efipvh-tables.dump is ALL acpi tables from UEFI+PVH mode (acpidump -o
>    efipvh-tables.dump)
>    working-tables.dump is ALL acpi tables from the other modes (acpidump
>    -o working-tables.dump)
>    efipvh-vfct.dump is attached in spirit, as it is 0 bytes long (acpidump
>    -n VFCT -o efipvh-vfct.dump)
>    I ran iasl, but it just said **** Unknown ACPI table signature [VFCT]
>    and spat out the raw data table, nothing interesting
>    Something I can try, but have been nervous to try due to GOPupd
>    warnings is to also flash the 1.67 GOP to the VBIOS on the RX 480. The
>    R5 430 OEM had no such warnings.
>    Patrick
> 
> References
> 
>    1. mailto:roger.pau@citrix.com
>    2. https://www.techpowerup.com/vgabios/185789/msi-rx480-4096-160720



From xen-devel-bounces@lists.xenproject.org Fri Jan 19 10:36:43 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 19 Jan 2024 10:36:43 +0000
Received: from list by lists.xenproject.org with outflank-mailman.669013.1041566 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQmEY-0000eG-7T; Fri, 19 Jan 2024 10:36:22 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 669013.1041566; Fri, 19 Jan 2024 10:36:22 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQmEY-0000e9-4m; Fri, 19 Jan 2024 10:36:22 +0000
Received: by outflank-mailman (input) for mailman id 669013;
 Fri, 19 Jan 2024 10:36:20 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=xVsr=I5=cloud.com=roger.pau@srs-se1.protection.inumbo.net>)
 id 1rQmEW-0000e3-FX
 for xen-devel@lists.xenproject.org; Fri, 19 Jan 2024 10:36:20 +0000
Received: from mail-wm1-x332.google.com (mail-wm1-x332.google.com
 [2a00:1450:4864:20::332])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 93a7b922-b6b6-11ee-9b0f-b553b5be7939;
 Fri, 19 Jan 2024 11:36:17 +0100 (CET)
Received: by mail-wm1-x332.google.com with SMTP id
 5b1f17b1804b1-40e76626170so6616025e9.2
 for <xen-devel@lists.xenproject.org>; Fri, 19 Jan 2024 02:36:17 -0800 (PST)
Received: from localhost ([213.195.127.68]) by smtp.gmail.com with ESMTPSA id
 l13-20020a05600c4f0d00b0040e85f86515sm10727027wmq.29.2024.01.19.02.36.16
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Fri, 19 Jan 2024 02:36:16 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 93a7b922-b6b6-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1705660577; x=1706265377; darn=lists.xenproject.org;
        h=in-reply-to:content-disposition:mime-version:references:message-id
         :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to;
        bh=OkNX3C0TN12r0U7CcA8mLbZGSp6Wpbhw+LSO24J1Tbk=;
        b=U0mBJnaWSnzasXjaDkIwK+j8cLKq4YKoge65b271dp8w6XdD3th9Zpb3+IaFLP8rpO
         sWHz8ojej/OvIy3E6nKwQ/EWZgBnlIiCVRy3slmlUjRLAOwj5DezmbD1LWC5sxFlsZpV
         KaZ+97tqSwBuJ7fw4pMT+Q124pBQubI/Jq94k=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705660577; x=1706265377;
        h=in-reply-to:content-disposition:mime-version:references:message-id
         :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to;
        bh=OkNX3C0TN12r0U7CcA8mLbZGSp6Wpbhw+LSO24J1Tbk=;
        b=Yru1k6V4WWEd5vazsUWXdLwNv3v6vstcVRFNiW1tC8Po9EiqHWb4cRS1Ti+Q9VSA5s
         1wu15XhMfPYpE4A6sshK77YSK4nRWpn2JkmPDM5LyFYbDXgBcFDyWQKDcBB49U7szHuR
         DASPmH3emQtvsdVFutO8YyHgISDgcXvCnjewZOnhXmFbZ0eMSuYMcTk6l1qdsxlEaL4z
         uoRK+D8mmIiXkJy6j2yz22gNzpUB/j2JXiM4rbroJyMnY+9JfTCiWw/WhZ1MHeEEDSsr
         4GhYs+9f/928G6eFY5uLgUi8veaKHJ+fCqV2kf/effOlbYir0u0K0xez4VXkvzIUcBMY
         m76A==
X-Gm-Message-State: AOJu0YzM8ieYwGecqrP2H8rq5eLsosGqd4DfEY/nku/ojrhLyOE0j6tz
	h7QY+7Uh9UIZXr6JotYfbN2cIEB46u5fBEfiNIHSVLAHOeS1RqVzuwlfuujw6EY=
X-Google-Smtp-Source: AGHT+IHieupscha/52bP/1KWofRnJbrxxx2DMH8Hpf4xRUKOLgiS8i2iXzfCGviobgUowdu6XMhg3A==
X-Received: by 2002:a05:600c:2198:b0:40e:8789:a449 with SMTP id e24-20020a05600c219800b0040e8789a449mr1274330wme.121.1705660577174;
        Fri, 19 Jan 2024 02:36:17 -0800 (PST)
Date: Fri, 19 Jan 2024 11:36:16 +0100
From: Roger Pau =?utf-8?B?TW9ubsOp?= <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>,
	Julien Grall <julien@xen.org>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Volodymyr Babchuk <volodymyr_babchuk@epam.com>,
	Bertrand Marquis <bertrand.marquis@arm.com>,
	Bobby Eshleman <bobbyeshleman@gmail.com>,
	Alistair Francis <alistair.francis@wdc.com>,
	Connor Davis <connojdavis@gmail.com>,
	George Dunlap <george.dunlap@citrix.com>,
	Shawn Anastasio <sanastasio@raptorengineering.com>,
	Michal Orzel <michal.orzel@amd.com>
Subject: Re: [PATCH v5 8/8] common: honor CONFIG_CC_SPLIT_SECTIONS also for
 assembly functions
Message-ID: <ZapQoLSOKew5W-Tt@macbook>
References: <e4bf47ca-2ae6-1fd4-56a6-e4e777150b64@suse.com>
 <7a133ed9-9d13-4e2c-893a-00c083c8a35d@suse.com>
 <5df1d87d-8e54-4e15-b1fb-46b274cb66ef@suse.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
In-Reply-To: <5df1d87d-8e54-4e15-b1fb-46b274cb66ef@suse.com>

On Mon, Jan 15, 2024 at 03:40:19PM +0100, Jan Beulich wrote:
> Leverage the new infrastructure in xen/linkage.h to also switch to per-
> function sections (when configured), deriving the specific name from the
> "base" section in use at the time FUNC() is invoked.
> 
> Signed-off-by: Jan Beulich <jbeulich@suse.com>
> ---
> TBD: Since we use .subsection in UNLIKELY_START(), a perhaps not really
>      wanted side effect of this change is that respective out-of-line
>      code now moves much closer to its original (invoking) code.

Hm, I'm afraid I don't have much useful suggestions here.

> TBD: Of course something with the same overall effect, but less
>      impactful might do in Config.mk. E.g. $(filter-out -D%,$(3))
>      instead of $(firstword (3)).

I don't have a strong opinion re those two options  My preference
however (see below for reasoning) would be to put this detection in
Kconfig.

> TBD: On top of Roger's respective patch (for livepatch), also respect
>      CONFIG_FUNCTION_ALIGNMENT.

I think you can drop that, as the series is blocked.

> Note that we'd need to split DATA() in order to separate r/w and r/o
> contributions. Further splitting might be needed to also support more
> advanced attributes (e.g. merge), hence why this isn't done right here.
> Sadly while a new section's name can be derived from the presently in
> use, its attributes cannot be. Perhaps the only thing we can do is give
> DATA() a 2nd mandatory parameter. Then again I guess most data
> definitions could be moved to C anyway.
> ---
> v5: Re-base over changes earlier in the series.
> v4: Re-base.
> v2: Make detection properly fail on old gas (by adjusting
>     cc-option-add-closure).
> 
> --- a/Config.mk
> +++ b/Config.mk
> @@ -102,7 +102,7 @@ cc-option = $(shell if $(1) $(2:-Wno-%=-
>  # Usage: $(call cc-option-add CFLAGS,CC,-march=winchip-c6)
>  cc-option-add = $(eval $(call cc-option-add-closure,$(1),$(2),$(3)))
>  define cc-option-add-closure
> -    ifneq ($$(call cc-option,$$($(2)),$(3),n),n)
> +    ifneq ($$(call cc-option,$$($(2)),$(firstword $(3)),n),n)
>          $(1) += $(3)
>      endif
>  endef
> --- a/xen/Makefile
> +++ b/xen/Makefile
> @@ -409,6 +409,9 @@ AFLAGS += -D__ASSEMBLY__
>  
>  $(call cc-option-add,AFLAGS,CC,-Wa$$(comma)--noexecstack)
>  
> +# Check to see whether the assmbler supports the --sectname-subst option.
> +$(call cc-option-add,AFLAGS,CC,-Wa$$(comma)--sectname-subst -DHAVE_AS_SECTNAME_SUBST)

I guess you already know what I'm going to comment on.  I think this
would be clearer if it was a Kconfig option.  For once because I think
we should gate livapatch support on the option being available, and
secondly it would avoid having to pass the extra -D around.

I think it's relevant to have a consistent set of build tool options
requirements for livepatch support, so that when enabled the support
is consistent across builds.  With this approach livepatch could be
enabled in Kconfig, but depending on the tools support the resulting
binary might or might not support live patching of assembly code.
Such behavior is IMO unhelpful from a user PoV, and can lead to
surprises down the road.

Thanks, Roger.


From xen-devel-bounces@lists.xenproject.org Fri Jan 19 10:41:42 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 19 Jan 2024 10:41:42 +0000
Received: from list by lists.xenproject.org with outflank-mailman.669016.1041576 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQmJf-0002zu-Qv; Fri, 19 Jan 2024 10:41:39 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 669016.1041576; Fri, 19 Jan 2024 10:41:39 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQmJf-0002zn-Ny; Fri, 19 Jan 2024 10:41:39 +0000
Received: by outflank-mailman (input) for mailman id 669016;
 Fri, 19 Jan 2024 10:41:39 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=ZhYs=I5=web.de=Markus.Elfring@srs-se1.protection.inumbo.net>)
 id 1rQmJf-0002zh-AE
 for xen-devel@lists.xenproject.org; Fri, 19 Jan 2024 10:41:39 +0000
Received: from mout.web.de (mout.web.de [217.72.192.78])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 51ee27b3-b6b7-11ee-9b0f-b553b5be7939;
 Fri, 19 Jan 2024 11:41:36 +0100 (CET)
Received: from [192.168.178.21] ([94.31.91.95]) by smtp.web.de (mrweb105
 [213.165.67.124]) with ESMTPSA (Nemesis) id 1MXGK4-1rcI6C0CUA-00Z3qK; Fri, 19
 Jan 2024 11:40:54 +0100
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 51ee27b3-b6b7-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=web.de; s=s29768273;
	t=1705660854; x=1706265654; i=markus.elfring@web.de;
	bh=cO3V1vzVt/XdQPd4h52EbfomnaIJyRP7lYScOtdsYfA=;
	h=X-UI-Sender-Class:Date:Subject:To:Cc:References:From:
	 In-Reply-To;
	b=aUMfllpXhQp96ch+72qMDLSmcLyDdYTI95M+i9y/KrwZRGGMot0eTY+0rwXCxNP1
	 sdtxYWf+w/xQEMObBPPZEGZ2Bxs0PACvQhN9EjN2YBb5Znd733txOgj7sZL/YpnkD
	 vaIebkxOArHMSUG70Yz4IYTZWfVvSgEX6deyqWAcJ2IrarpPQyGXepDZvUbwXrvzn
	 ZI15Q2evZc1Cc25/KsDRbED7Fjw6NMuzXi8CTg8S0ep7lLH+DgSK9a4Z3nmBLRa6W
	 7eMHYqrbVE4wFqXuEypmjD7JKIxRDBwgD2pOOO4vqL9AR5brc2F6nnyPPNDz6NMhV
	 LpQ1qPF6+/MEXWj4pg==
X-UI-Sender-Class: 814a7b36-bfc1-4dae-8640-3722d8ec6cd6
Message-ID: <91af4a8c-d2e2-416f-b02e-5d69553c5998@web.de>
Date: Fri, 19 Jan 2024 11:40:48 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3] x86/xen: Add some null pointer checking to smp.c
Content-Language: en-GB
To: Kunwu Chan <chentao@kylinos.cn>, xen-devel@lists.xenproject.org,
 kernel-janitors@vger.kernel.org, Boris Ostrovsky
 <boris.ostrovsky@oracle.com>, Borislav Petkov <bp@alien8.de>,
 Dave Hansen <dave.hansen@linux.intel.com>, "H. Peter Anvin" <hpa@zytor.com>,
 Ingo Molnar <mingo@redhat.com>, =?UTF-8?B?SsO8cmdlbiBHcm/Dnw==?=
 <jgross@suse.com>, Thomas Gleixner <tglx@linutronix.de>, x86@kernel.org
Cc: kernel test robot <lkp@intel.com>, LKML <linux-kernel@vger.kernel.org>
References: <20240119094948.275390-1-chentao@kylinos.cn>
From: Markus Elfring <Markus.Elfring@web.de>
In-Reply-To: <20240119094948.275390-1-chentao@kylinos.cn>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
X-Provags-ID: V03:K1:ghWwRZ/xa5RiEzFG9SbB0YwItzwhscPRgB036myKdl26mgHPgKw
 VQbfwMEIvEYjgoBwMzGbrC86u73mQWUAltu6JjfaeKhE0StOY0nu7+cgBg/EHNLAO0/X+BM
 EBxxa3DUjgyyfYOV5m3vCuXn9YLNj9tZuWEYayV5ptyDsZtJkANo7xydQln4MmP7NONjqa4
 EUy/959xDksIDzQKmvvUA==
X-Spam-Flag: NO
UI-OutboundReport: notjunk:1;M01:P0:Jdxt2uu7/7Y=;HuDpAVrdHwPdL9vQoUbqKiGrS40
 jrr9+Shr1pVnJD5Of/QXY9RNn0QLS8cUxdkrkEY3hPpLtU4ONu5yTqk4gf0qoqVTuGJnOD1Sn
 4UrF12BONo5rcPNaYyf5k0IW3lMsXl5nF472p1Jtx1Go5zQ8wxkQHDivMIkKwGG2AWoMX61ZU
 Hi4/FpxLFYz/LiUddzOcuuxVbJiBPGiaonoQF43MXTxrNGoKyQZ7xsGD3X4KTDkUorVbhbSwZ
 sXHkWnKRV+yASAqYr2MNrkdkuIrgCUTG8vs0YqBg1T+nivDDbNM7kt67VU8jgqMmGR3S+oITw
 q3J23UQ7mfv84Xmg0Q2kWQfRbTDcl7VIbhnpBCsug4ijQ6BcJcxT6r77xDu/Gp19LaRutvHWq
 ikMASjzuT7OfjYcHxu0yiz3NQK20GUuaE4ehx8Ka/Pk0uihwglrabOKlYTwTeEqP9tn+SGyY6
 Iu/nz7+UgqBi2yurZd2IxhwOZ+BezJKN25qru5qAzKFwxuhOdUyCunv7h3r8teyCJ+t2WLjc6
 GAbxLzJ97GbfWnuP423Zs8y/UjUP75u+nPGqSNd5Gpf3fV3/ezW04pzkB3Q7PZYMZtWHB85C2
 HIlKfL63hLkXUDWriYv4ejxh2C4YQPKfxsEXRZDF0wFEsC98DVews10fJgSqVfyOIcyLTApZj
 3I8uM37B4H+d5Gerjo+2NgOB0h5sSMUhhs5syKmsoEgYRKZsVa0/Aj69GIawSRHt9uxDtDWlR
 R2okc37C8jVAGB6hu0wheHhb/K1G8n7ct3UDPNeBm1F/Yua2vuhBObIWg9vSt6OXXWf5nBNaG
 dpEBLuKRz4narT4kDT5Bwag9mpo6h9E2tybPq5PIodGIqJYy5QV7t297S77lifFtdLwEYnr5U
 Ww7jgUT4o5p/aTeMKxVvbdVh+CL/k3q5PrpQ0Bpd58eTxWYJUwx3KS3VhhpciBGDK15c6dp1V
 HIfFig==

> kasprintf() returns a pointer to dynamically allocated memory
> which can be NULL upon failure. Ensure the allocation was successful
> by checking the pointer validity.
=E2=80=A6
> ---
> Changes in v3:
>     - Remove rc initialization
>     - Simply error paths by adding a new label 'fail_mem'
=E2=80=A6

I became curious if you would like to simplify further source code places.


> +++ b/arch/x86/xen/smp.c
> @@ -65,6 +65,8 @@ int xen_smp_intr_init(unsigned int cpu)
>  	char *resched_name, *callfunc_name, *debug_name;
>
>  	resched_name =3D kasprintf(GFP_KERNEL, "resched%d", cpu);
> +	if (!resched_name)
> +		goto fail_mem;

Would you like to add a blank line after such a statement?


>  	per_cpu(xen_resched_irq, cpu).name =3D resched_name;
=E2=80=A6

Please compare with your subsequent suggestion.

=E2=80=A6
> @@ -101,6 +108,9 @@ int xen_smp_intr_init(unsigned int cpu)
>  	}
>
>  	callfunc_name =3D kasprintf(GFP_KERNEL, "callfuncsingle%d", cpu);
> +	if (!callfunc_name)
> +		goto fail_mem;
> +
>  	per_cpu(xen_callfuncsingle_irq, cpu).name =3D callfunc_name;
=E2=80=A6

Regards,
Markus


From xen-devel-bounces@lists.xenproject.org Fri Jan 19 11:06:19 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 19 Jan 2024 11:06:19 +0000
Received: from list by lists.xenproject.org with outflank-mailman.669021.1041585 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQmhR-0007KJ-KM; Fri, 19 Jan 2024 11:06:13 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 669021.1041585; Fri, 19 Jan 2024 11:06:13 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQmhR-0007KC-Hg; Fri, 19 Jan 2024 11:06:13 +0000
Received: by outflank-mailman (input) for mailman id 669021;
 Fri, 19 Jan 2024 11:06:12 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=xVsr=I5=cloud.com=roger.pau@srs-se1.protection.inumbo.net>)
 id 1rQmhQ-0007K6-Jy
 for xen-devel@lists.xenproject.org; Fri, 19 Jan 2024 11:06:12 +0000
Received: from mail-wr1-x42c.google.com (mail-wr1-x42c.google.com
 [2a00:1450:4864:20::42c])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id c0738f34-b6ba-11ee-98f2-6d05b1d4d9a1;
 Fri, 19 Jan 2024 12:06:10 +0100 (CET)
Received: by mail-wr1-x42c.google.com with SMTP id
 ffacd0b85a97d-3366e78d872so499431f8f.3
 for <xen-devel@lists.xenproject.org>; Fri, 19 Jan 2024 03:06:10 -0800 (PST)
Received: from localhost ([213.195.127.68]) by smtp.gmail.com with ESMTPSA id
 n18-20020a05600c3b9200b0040e4ca7fcb4sm28740097wms.37.2024.01.19.03.06.09
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Fri, 19 Jan 2024 03:06:09 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: c0738f34-b6ba-11ee-98f2-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1705662370; x=1706267170; darn=lists.xenproject.org;
        h=in-reply-to:content-transfer-encoding:content-disposition
         :mime-version:references:message-id:subject:cc:to:from:date:from:to
         :cc:subject:date:message-id:reply-to;
        bh=f/ByIWspcTEYCndPX0u0csu2bSHExraCM0dlcJkiZtE=;
        b=DEjxhL3yjqN4bzNFtbhXuLSTACjk7yl/0gJ2v548ruRZJjggDbtrTwKZn44Fqp7W+s
         j5kzX6cIsKtd05NMCcccHaj9z5xysT6QMYC1Y/oU+lV+bgxD6r29qG6UjDwd08DI7zfS
         RX02BnJDnhVgeNocDMPlDW7Ur/Fhc9C0HpSJs=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705662370; x=1706267170;
        h=in-reply-to:content-transfer-encoding:content-disposition
         :mime-version:references:message-id:subject:cc:to:from:date
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=f/ByIWspcTEYCndPX0u0csu2bSHExraCM0dlcJkiZtE=;
        b=Jf1l+A47C5n5DFBHZelbQCrin1tATigy1thlQst6STB2F1ftt2t4y9Cdcmql1PxP/T
         7oT392ZxD9kPVWrYo4R3aNnrFZ0kDP4G1dxlfiDY8ckO+RlAW0rv60T5vgccwGTo9+tu
         opIaHgVOT60ZMgBvdVdTH2I1hPQjnWJeT20/Fc2SpVXRDhMjRFD114Jsxf1nt5sRoOTs
         mZ/+J4L3F0XTrYnU16m0ArUdR1XhsZN236wXJjMzc3a60VLOw9TpHyTm3U53CqU1PbjN
         G3y9tNaMoou++4YjBSGvcGz4ApM4JtpmNVdfTicVD4UXH9MEdkYdxPJmHIUXbH3g6m/t
         Pitg==
X-Gm-Message-State: AOJu0Yy4QYnVUWpGZaeGA7x4uQ6KAWMxIj6Pi/Zvt6QU9WYeHMVdNzWL
	8wO2hRZ9RNDz65TR+PUraZtuqaZghWhW1l6LBSJmwL9MO84jQfdBIIFp/MJuvkQ=
X-Google-Smtp-Source: AGHT+IHGNAL6Hc+VUCOo9kYIsjCr1shDgvpRi4jA6S28IToCftcgAz+oYwgS/kpa2ZPCAsG+DGV3WQ==
X-Received: by 2002:a05:600c:54f0:b0:40e:8457:be8 with SMTP id jb16-20020a05600c54f000b0040e84570be8mr624810wmb.63.1705662369844;
        Fri, 19 Jan 2024 03:06:09 -0800 (PST)
Date: Fri, 19 Jan 2024 12:06:08 +0100
From: Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
To: Patrick Plenefisch <simonpatp@gmail.com>
Cc: Jan Beulich <jbeulich@suse.com>, xen-devel@lists.xenproject.org,
	Juergen Gross <jgross@suse.com>, Huang Rui <ray.huang@amd.com>,
	Jiqian Chen <Jiqian.Chen@amd.com>
Subject: Re: ACPI VFCT table too short on PVH dom0 (was: Re: E820 memory
 allocation issue on Threadripper platforms)
Message-ID: <ZapXoOKdhWgJFxbF@macbook>
References: <CAOCpoWeowZPuQTeBp9nu8p8CDtE=u++wN_UqRoABZtB57D50Qw@mail.gmail.com>
 <ac742d12-ec91-4215-bb42-82a145924b4f@suse.com>
 <CAOCpoWfQmkhN3hms1xuotSUZzVzR99i9cNGGU2r=yD5PjysMiQ@mail.gmail.com>
 <fa23a590-5869-4e11-8998-1d03742c5919@suse.com>
 <CAOCpoWf4CMkCWx8uR2NbFrZrKSS78wj1-hFsAUqsjCfsmqooVA@mail.gmail.com>
 <Zajg1O7Z52VTBq31@macbook>
 <CAOCpoWeO9h7b_CjJb9jtKaEUVv_=XDSVkr55QSg3ArFc4n8G2w@mail.gmail.com>
 <ZajzcpArQYQhdj3T@macbook>
 <ZakcdfS3UwEb0oh2@macbook>
 <CAOCpoWdL3YnpitZxEoFgdvtZ6juy8oykYj6fX_tv4QLvj2Fv0g@mail.gmail.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <CAOCpoWdL3YnpitZxEoFgdvtZ6juy8oykYj6fX_tv4QLvj2Fv0g@mail.gmail.com>

On Fri, Jan 19, 2024 at 02:44:35AM -0500, Patrick Plenefisch wrote:
> On Thu, Jan 18, 2024 at 7:41 AM Roger Pau Monné <roger.pau@citrix.com>
> wrote:
> 
> >
> > From that environment (PVH dom0) can you see if you can dump the
> > contents of the VFCT table?  I don't have a system with that table, so
> > not sure if this will work (because iasl is unlikely to know how to
> > decode it):
> >
> > # acpidump -n VFCT -o table.dump
> > # acpixtract -a table.dump
> > # iasl -d vfct.dat
> > # cat vfct.dsl
> >
> > Would be good if you can compare the output from what you get on a PV
> > dom0 or when running native Linux.
> >
> > I'm also adding some AMD folks, as IIRC they did some fixes to Linux
> > in order to get some AMD graphics cards running on a PVH dom0, maybe
> > they can provide some additional input.
> >
> >
> Well, this is pretty weird. I'll go into more details because it may be
> relevant.

Wow, you have certainly gone out of the beaten path here.

> I had been working with ASRock support ever since I got my brand
> new motherboard because I couldn't see the BIOS/UEFI screens. I could boot
> up, and once native linux took control amdgpu got the screens/gpu working
> fine. I finally managed to be able to see the UEFI/BIOS setup screens by
> patching my VBIOS: I extracted the VBIOS image of a cheap R5 430 OEM, ran
> GOPupd to update the VBIOS UEFI component (GOP) from version 1.60 to 1.67.
> That allowed the UEFI to actually initialize and use a screen. However, I
> later realized that only 1 monitor was lighting up in the bios: my monitor
> plugged into the Radeon RX 480 that was still on VBIOS GOP 1.60. It appears
> the GOP was initializing the RX 480 too, despite not being flashed with the
> latest itself. I am working on an email to asrock support about that. Once
> I get into linux (native or PV), both monitors light up as expected. Also,
> If I boot linux PVH from grub, they also work.

OK, that's good, so that would be UEFI -> grub -> Xen -> Linux PVH?

> Those usage scenarios have
> acpidump output as identical. Booting linux PVH directly from UEFI (no
> grub), the monitors go to sleep on the RX 480, and amdgpu errors out about
> VFCT, but the R5 430 OEM does still have output. Interestingly, there is a
> different screen mode booting UEFI+PVH, the characters are basically
> squares, with more vertical lines than "default", maybe close to native
> screen resolution, but horizontally it's still "default". Booting from grub
> gives everything in the "default" resolution.

Hm, maybe we are not passing the correct video information to Linux
dom0 when booted from UEFI.  I'm afraid I don't have such setup
myself, so it's going to be hard to test.

To clarify, the output from Xen is fine, is the video output from
Linux dom0 in PVH mode that's corrupt?

> 
> So what is in the VFCT Table? VFCT contains the non-GOP VIOS image of my
> Radeon RX 480 GPU. You can compare it to the VBIOS hosted at
> https://www.techpowerup.com/vgabios/185789/msi-rx480-4096-160720 (Compare
> the end at E667 in the VFCT table to E5ff in that vbios link). I find this
> extra suspicious due to the above.
> 
> Now for the extra horrible things:
> 
> UEFI-booted PVH Linux doesn't support keyboard getty input, and at least
> some of the USB devices are not in lsusb. It also decided to vanish one of
> my HDD's. The `reboot` command hangs. The Power button doesn't do anything.

Yes, it does seem Lunux has issues reserving some BARs:

[    6.520615] ahci 0000:07:00.1: version 3.0
[    6.520701] ahci 0000:07:00.1: BAR 5: can't reserve [mem 0xf0e00000-0xf0e007ff]
...
[   17.130099] ccp 0000:06:00.5: enabling device (0000 -> 0002)
[   17.137025] ccp 0000:06:00.5: BAR 2: can't reserve [mem 0xf0b00000-0xf0bfffff]
[   17.145210] ccp 0000:06:00.5: pcim_iomap_regions failed (-16)
[   17.151868] ccp 0000:06:00.5: initialization failed
[   17.157615] ccp: probe of 0000:06:00.5 failed with error -16
...
[   17.993532] snd_hda_intel 0000:01:00.1: enabling device (0000 -> 0002)
[   18.001207] snd_hda_intel 0000:01:00.1: Force to non-snoop mode
[   18.007997] snd_hda_intel 0000:01:00.1: BAR 0: can't reserve [mem 0xf0f60000-0xf0f63fff 64bit]
[   18.018053] snd_hda_intel 0000:06:00.7: enabling device (0000 -> 0002)
[   18.025723] snd_hda_intel 0000:06:00.7: BAR 0: can't reserve [mem 0xf0d00000-0xf0d07fff]
[   18.033679] snd_hda_intel 0000:41:00.1: enabling device (0000 -> 0002)
[   18.043165] snd_hda_intel 0000:41:00.1: Force to non-snoop mode

I bet this because Xen balloon driver has started picking up those
regions in order to map foreign pages.

> There are several stack traces in dmesg. But Alt-SysRq-B does reboot!
> Luckily I could ssh in and capture the ACPI tables. They are much smaller,
> and VFCT is empty.  Booting back to one of the working scenarios (direct
> linux, Grub PV, Grub PVH, UEFI PV), all of this is normal.
> 
> I've attached:
> 
> xenboot.log which is the serial log of xen+linux booting in UEFI PVH
> (kernel is debian's config, but patched to start at 2MiB)
> dmesg.txt which is the linux dmesg that contains some nice stack traces
> (kernel is debian's config, but patched to start at 2MiB)
> efipvh-tables.dump is ALL acpi tables from UEFI+PVH mode (acpidump -o
> efipvh-tables.dump)
> working-tables.dump is ALL acpi tables from the other modes (acpidump -o
> working-tables.dump)
> efipvh-vfct.dump is attached in spirit, as it is 0 bytes long (acpidump -n
> VFCT -o efipvh-vfct.dump)
> 
> I ran iasl, but it just said **** Unknown ACPI table signature [VFCT] and
> spat out the raw data table, nothing interesting
> 
> Something I can try, but have been nervous to try due to GOPupd warnings is
> to also flash the 1.67 GOP to the VBIOS on the RX 480. The R5 430 OEM had
> no such warnings.
> 
> Patrick

> [    0.000000] Linux version 6.1.69 (root@pollux) (gcc (Debian 12.2.0-14) 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #10 SMP PREEMPT_DYNAMIC Wed Jan 17 23:44:31 EST 2024
> [    0.000000] Command line: root=UUID=922b10f2-a826-47fb-ab38-836f9b397ff7 ro rootflags=subvol=@rootfs  earlyprintk=xen console=hvc0
> [    0.000000] [Firmware Bug]: TSC doesn't count with P0 frequency!
> [    0.000000] BIOS-provided physical RAM map:
> [    0.000000] BIOS-e820: [mem 0x0000000000000000-0x000000000009ffff] usable
> [    0.000000] BIOS-e820: [mem 0x00000000000a0000-0x00000000000fffff] reserved
> [    0.000000] BIOS-e820: [mem 0x0000000000100000-0x0000000003ffffff] usable
> [    0.000000] BIOS-e820: [mem 0x0000000004000000-0x0000000004045fff] ACPI NVS
> [    0.000000] BIOS-e820: [mem 0x0000000004046000-0x0000000009afefff] usable
> [    0.000000] BIOS-e820: [mem 0x0000000009aff000-0x0000000009ffffff] reserved
> [    0.000000] BIOS-e820: [mem 0x000000000a000000-0x000000000affffff] usable
> [    0.000000] BIOS-e820: [mem 0x000000000b000000-0x000000000b020fff] reserved
> [    0.000000] BIOS-e820: [mem 0x000000000b021000-0x00000000a04e8fff] usable
> [    0.000000] BIOS-e820: [mem 0x00000000a04e9000-0x00000000a64e8fff] reserved
> [    0.000000] BIOS-e820: [mem 0x00000000a64e9000-0x00000000a747efff] ACPI data
> [    0.000000] BIOS-e820: [mem 0x00000000a747f000-0x00000000a947efff] ACPI NVS
> [    0.000000] BIOS-e820: [mem 0x00000000a947f000-0x00000000addfefff] reserved
> [    0.000000] BIOS-e820: [mem 0x00000000addff000-0x00000000afffab9b] usable
> [    0.000000] BIOS-e820: [mem 0x00000000afffab9c-0x00000000afffaf17] ACPI data
> [    0.000000] BIOS-e820: [mem 0x00000000afffb000-0x00000000bfffffff] reserved
> [    0.000000] BIOS-e820: [mem 0x00000000df200000-0x00000000df2fffff] reserved
> [    0.000000] BIOS-e820: [mem 0x00000000e0000000-0x00000000efffffff] reserved
> [    0.000000] BIOS-e820: [mem 0x00000000fea00000-0x00000000feafffff] reserved
> [    0.000000] BIOS-e820: [mem 0x00000000fec00000-0x00000000fec00fff] reserved
> [    0.000000] BIOS-e820: [mem 0x00000000fec10000-0x00000000fec10fff] reserved
> [    0.000000] BIOS-e820: [mem 0x00000000fec30000-0x00000000fec30fff] reserved
> [    0.000000] BIOS-e820: [mem 0x00000000fed00000-0x00000000fed00fff] reserved
> [    0.000000] BIOS-e820: [mem 0x00000000fed40000-0x00000000fed44fff] reserved
> [    0.000000] BIOS-e820: [mem 0x00000000fed80000-0x00000000fed8ffff] reserved
> [    0.000000] BIOS-e820: [mem 0x00000000ff000000-0x00000000ffffffff] reserved
> [    0.000000] BIOS-e820: [mem 0x0000000100000000-0x000000025dee2fff] usable
> [    0.000000] BIOS-e820: [mem 0x000000025dee3000-0x000000403dbbffff] unusable
> [    0.000000] BIOS-e820: [mem 0x000000403dbc0000-0x000000403fffffff] reserved
> [    0.000000] printk: bootconsole [xenboot0] enabled
> [    0.000000] NX (Execute Disable) protection: active
> [    0.000000] efi: EFI v2.90 by American Megatrends
> [    0.000000] efi: ACPI=0xa9463000 ACPI 2.0=0xa9463014 SMBIOS=0xad9f4000 SMBIOS 3.0=0xad9f3000 MEMATTR=0x99e26698 ESRT=0xa7466018 
> [    0.000000] secureboot: Secure boot disabled
> [    0.000000] SMBIOS 3.6.0 present.
> [    0.000000] DMI: To Be Filled By O.E.M. TRX50 WS/TRX50 WS, BIOS 7.08 01/16/2024
> [    0.000000] Hypervisor detected: Xen HVM
> [    0.000000] Xen version 4.17.
> [    0.000003] HVMOP_pagetable_dying not supported
> [    0.043916] tsc: Fast TSC calibration failed
> [    0.048843] tsc: Detected 4199.960 MHz processor
> [    0.054365] e820: update [mem 0x00000000-0x00000fff] usable ==> reserved
> [    0.054368] e820: remove [mem 0x000a0000-0x000fffff] usable
> [    0.054375] last_pfn = 0x25dee3 max_arch_pfn = 0x400000000
> [    0.062033] x86/PAT: Configuration [0-7]: WB  WC  UC- UC  WB  WP  UC- WT  
> [    0.070417] CPU MTRRs all blank - virtualized system.
> [    0.076209] last_pfn = 0xafffa max_arch_pfn = 0x400000000
> [    0.085594] Using GB pages for direct mapping
> [    0.091184] RAMDISK: [mem 0x04046000-0x068cdfff]
> [    0.096533] ACPI: Early table checksum verification disabled
> [    0.103248] ACPI: RSDP 0x00000000AFFFAB9C 000024 (v02 AMD   )
> [    0.109716] ACPI: XSDT 0x00000000AFFFABC0 0000C4 (v01 AMD    A M I    00000001 AMI  01000013)
> [    0.119663] ACPI: APIC 0x00000000AFFFAC84 00037C (v04 AMD    A M I    00000001 AMI  00010013)
> [    0.129538] ACPI: FACP 0x00000000A747C000 000114 (v06 AMD    A M I    00000001 AMI  00010013)
> [    0.139250] ACPI: DSDT 0x00000000A746E000 00D2F6 (v02 AMD    A M I    00000001 INTL 20230331)
> [    0.148717] ACPI: FACS 0x00000000A945A000 000040
> [    0.153805] ACPI: SSDT 0x00000000A747E000 0009CC (v02 AMD    BOULDERG 00000002 MSFT 04000000)
> [    0.163309] ACPI: SSDT 0x00000000A747D000 000067 (v02 AMD    CPMDSM   00000001 INTL 20230331)
> [    0.172813] ACPI: MCFG 0x00000000A746C000 00003C (v01 AMD    A M I    00000001 MSFT 00010013)
> [    0.182351] ACPI: SSDT 0x00000000A746B000 0005C5 (v02 AMD    CPUSSDT  00000001 AMI  00000001)
> [    0.191806] ACPI: SSDT 0x00000000A7468000 001B53 (v02 AMD    CPMRAS   00000001 INTL 20230331)
> [    0.201308] ACPI: FPDT 0x00000000A7465000 000044 (v01 AMD    A M I    01072009 AMI  01000013)
> [    0.210819] ACPI: SSDT 0x00000000A7462000 002448 (v02 AMD    GPP_PME_ 00000001 INTL 20230331)
> [    0.220343] ACPI: SSDT 0x00000000A745F000 002448 (v02 AMD    GPP_PME_ 00000001 INTL 20230331)
> [    0.229884] ACPI: SSDT 0x00000000A745C000 002448 (v02 AMD    GPP_PME_ 00000001 INTL 20230331)
> [    0.239351] ACPI: SSDT 0x00000000A7459000 002448 (v02 AMD    GPP_PME_ 00000001 INTL 20230331)
> [    0.248780] ACPI: SSDT 0x00000000A743E000 00A40E (v02 AMD    AMD CPU  00000001 AMD  00000001)
> [    0.258288] ACPI: SSDT 0x00000000A684C000 0006D4 (v02 AMD    CPMWLRC  00000001 INTL 20230331)
> [    0.267815] ACPI: SSDT 0x00000000A6842000 00982F (v02 AMD    CPMCMN   00000001 INTL 20230331)
> [    0.277339] ACPI: SSDT 0x00000000A683C000 002387 (v02 AMD    AOD      00000001 INTL 20230331)
> [    0.286840] ACPI: SSDT 0x00000000A683B000 000500 (v02 AMD    MEMTOOL0 00000002 INTL 20230331)
> [    0.296283] ACPI: SSDT 0x00000000A683A000 00096A (v02 AMD    CPMMSOSC 00000001 INTL 20230331)
> [    0.305841] ACPI: SSDT 0x00000000A6839000 000B72 (v02 AMD    CPMACPV6 00000001 INTL 20230331)
> [    0.315288] ACPI: SSDT 0x00000000A6838000 00044E (v02 AMD    AmdTable 00000001 INTL 20230331)
> [    0.324802] ACPI: Reserving APIC table memory at [mem 0xafffac84-0xafffafff]
> [    0.332592] ACPI: Reserving FACP table memory at [mem 0xa747c000-0xa747c113]
> [    0.340419] ACPI: Reserving DSDT table memory at [mem 0xa746e000-0xa747b2f5]
> [    0.348189] ACPI: Reserving FACS table memory at [mem 0xa945a000-0xa945a03f]
> [    0.356058] ACPI: Reserving SSDT table memory at [mem 0xa747e000-0xa747e9cb]
> [    0.363906] ACPI: Reserving SSDT table memory at [mem 0xa747d000-0xa747d066]
> [    0.371757] ACPI: Reserving MCFG table memory at [mem 0xa746c000-0xa746c03b]
> [    0.379576] ACPI: Reserving SSDT table memory at [mem 0xa746b000-0xa746b5c4]
> [    0.387437] ACPI: Reserving SSDT table memory at [mem 0xa7468000-0xa7469b52]
> [    0.395337] ACPI: Reserving FPDT table memory at [mem 0xa7465000-0xa7465043]
> [    0.403153] ACPI: Reserving SSDT table memory at [mem 0xa7462000-0xa7464447]
> [    0.410989] ACPI: Reserving SSDT table memory at [mem 0xa745f000-0xa7461447]
> [    0.418802] ACPI: Reserving SSDT table memory at [mem 0xa745c000-0xa745e447]
> [    0.426642] ACPI: Reserving SSDT table memory at [mem 0xa7459000-0xa745b447]
> [    0.434529] ACPI: Reserving SSDT table memory at [mem 0xa743e000-0xa744840d]
> [    0.442393] ACPI: Reserving SSDT table memory at [mem 0xa684c000-0xa684c6d3]
> [    0.450203] ACPI: Reserving SSDT table memory at [mem 0xa6842000-0xa684b82e]
> [    0.458038] ACPI: Reserving SSDT table memory at [mem 0xa683c000-0xa683e386]
> [    0.465853] ACPI: Reserving SSDT table memory at [mem 0xa683b000-0xa683b4ff]
> [    0.473805] ACPI: Reserving SSDT table memory at [mem 0xa683a000-0xa683a969]
> [    0.481626] ACPI: Reserving SSDT table memory at [mem 0xa6839000-0xa6839b71]
> [    0.489475] ACPI: Reserving SSDT table memory at [mem 0xa6838000-0xa683844d]

Weird, there's no VFCT listed here.

Thanks, Roger.


From xen-devel-bounces@lists.xenproject.org Fri Jan 19 13:25:13 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 19 Jan 2024 13:25:13 +0000
Received: from list by lists.xenproject.org with outflank-mailman.669036.1041609 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQork-0005VX-PJ; Fri, 19 Jan 2024 13:25:00 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 669036.1041609; Fri, 19 Jan 2024 13:25:00 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQork-0005VQ-Lm; Fri, 19 Jan 2024 13:25:00 +0000
Received: by outflank-mailman (input) for mailman id 669036;
 Fri, 19 Jan 2024 13:24:59 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=NYCc=I5=linaro.org=manos.pitsidianakis@srs-se1.protection.inumbo.net>)
 id 1rQorj-0005H3-BM
 for xen-devel@lists.xenproject.org; Fri, 19 Jan 2024 13:24:59 +0000
Received: from mail-ed1-x52c.google.com (mail-ed1-x52c.google.com
 [2a00:1450:4864:20::52c])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 23bb88e9-b6ce-11ee-9b0f-b553b5be7939;
 Fri, 19 Jan 2024 14:24:57 +0100 (CET)
Received: by mail-ed1-x52c.google.com with SMTP id
 4fb4d7f45d1cf-55976b32185so672547a12.3
 for <xen-devel@lists.xenproject.org>; Fri, 19 Jan 2024 05:24:57 -0800 (PST)
Received: from localhost.localdomain (adsl-138.37.6.1.tellas.gr. [37.6.1.138])
 by smtp.gmail.com with ESMTPSA id
 b11-20020aa7dc0b000000b00558fc426affsm8568310edu.88.2024.01.19.05.24.55
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Fri, 19 Jan 2024 05:24:56 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 23bb88e9-b6ce-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=linaro.org; s=google; t=1705670697; x=1706275497; darn=lists.xenproject.org;
        h=content-transfer-encoding:mime-version:references:in-reply-to
         :message-id:date:subject:cc:to:from:from:to:cc:subject:date
         :message-id:reply-to;
        bh=KXo1YLt845Pt2zK9FJiS5jPZDy9N656n9fSj/iWqSqs=;
        b=IvyWRhdstx2Nw7NMEOkEgXAm3hQJ0a6cyYB2okP/ExZ3VreZG6v79rkCT5GwMAUzkd
         w3K4s3SIxPQziHoWQwZ4WYR6a+bAq5ExLQ4WZSd5qRz188rloy9PDlInZIP+fppIkpcV
         lN961rkgj/0u6r7i00yXfNE4padzit7ipbUYKykyw2Cv7obqXnG0O+enFnrCPurVrnj2
         JvGWgBmfEsp+IqDKbBvLDaeeaic7YdLBEG5zOHFUKiCGUPO8cPmgFe0mtL9P2o6dkn9n
         JWal+YLTDt4iRMqwI6AewvR8z936aFnHisjUqMk/YrNSguZfnzuXDmBHTLyBneg1iwwj
         rx0Q==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705670697; x=1706275497;
        h=content-transfer-encoding:mime-version:references:in-reply-to
         :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to;
        bh=KXo1YLt845Pt2zK9FJiS5jPZDy9N656n9fSj/iWqSqs=;
        b=FTalCEN2CcAjjP3DM++OxLCjtHAjfctgNaF6MjaKMhkQyNnBBLOtYEn1l4Lv3Chq8V
         2fkd4hELwyUlx2SuNRWN2BSMWSbY4piZUFHjHNyAuulj+DZRBLfstzcwI9fr+2vWkNJP
         0ikEaqLZBpo9l4xbwwZ+8aCjyLsrxt0pI4lv6IoJV86mPcSymv+kbRT5rRBM3TEWEd+U
         NijBZ2paP1RE4hdy+EZM6j0+IRM+2vwxWNnMkrZfNqNIcvwYh4R2dMmm37TPMS7V1k4P
         MQFVUdVuPYHh8JlGFjHkpIYnGpShis0oeCa2itS/Mkq7hIK4pYL6tFsJQbglgkdzkP9r
         nKrA==
X-Gm-Message-State: AOJu0YyTY6rdw2Y5udalKhVNF+LUBwdXMcfE4uw9nniU+72jtlN4bKJw
	fBh0dYEj1jCeh2/YJcU5vwzp1AKrBFVsCotOU/DIdolzQOUyP7T2BTF6XwVDeZs=
X-Google-Smtp-Source: AGHT+IFTVbdPtqN7cjbpfHaxqzZHMxlRVkhGFF5UfzIzuqlBikjo68VvlfFRSXx9twRMCr+ktIJFhw==
X-Received: by 2002:a50:a41a:0:b0:559:2e6:bb18 with SMTP id u26-20020a50a41a000000b0055902e6bb18mr1729994edb.62.1705670697158;
        Fri, 19 Jan 2024 05:24:57 -0800 (PST)
From: Manos Pitsidianakis <manos.pitsidianakis@linaro.org>
To: qemu-devel@nongnu.org
Cc: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= <philmd@linaro.org>,
	qemu-arm@nongnu.org,
	Paolo Bonzini <pbonzini@redhat.com>,
	=?UTF-8?q?Alex=20Benn=C3=A9e?= <alex.bennee@linaro.org>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Anthony Perard <anthony.perard@citrix.com>,
	Paul Durrant <paul@xen.org>,
	xen-devel@lists.xenproject.org
Subject: [PATCH v2 4/5] hw/xen/xen-hvm-common.c: convert DPRINTF to tracepoints
Date: Fri, 19 Jan 2024 15:24:46 +0200
Message-Id: <651ad62da159524e33edb5741fff4030797c864d.1705670342.git.manos.pitsidianakis@linaro.org>
X-Mailer: git-send-email 2.39.2
In-Reply-To: <cover.1705670342.git.manos.pitsidianakis@linaro.org>
References: <cover.1705670342.git.manos.pitsidianakis@linaro.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF8
Content-Transfer-Encoding: 8bit

Tracing DPRINTFs to stderr might not be desired. A developer that relies
on tracepoints should be able to opt-in to each tracepoint and rely on
QEMU's log redirection, instead of stderr by default.

This commit converts DPRINTFs in this file that are used for tracing
into tracepoints.

Signed-off-by: Manos Pitsidianakis <manos.pitsidianakis@linaro.org>
---
 hw/xen/trace-events     | 10 +++++++++-
 hw/xen/xen-hvm-common.c | 35 ++++++++++++++++++-----------------
 2 files changed, 27 insertions(+), 18 deletions(-)

diff --git a/hw/xen/trace-events b/hw/xen/trace-events
index 1b748dba09..dd5b5a7f35 100644
--- a/hw/xen/trace-events
+++ b/hw/xen/trace-events
@@ -42,7 +42,7 @@ xs_node_vscanf(char *path, char *value) "%s %s"
 xs_node_watch(char *path) "%s"
 xs_node_unwatch(char *path) "%s"
 
-# xen-hvm.c
+# xen-hvm-common.c
 xen_ram_alloc(unsigned long ram_addr, unsigned long size) "requested: 0x%lx, size 0x%lx"
 xen_client_set_memory(uint64_t start_addr, unsigned long size, bool log_dirty) "0x%"PRIx64" size 0x%lx, log_dirty %i"
 handle_ioreq(void *req, uint32_t type, uint32_t dir, uint32_t df, uint32_t data_is_ptr, uint64_t addr, uint64_t data, uint32_t count, uint32_t size) "I/O=%p type=%d dir=%d df=%d ptr=%d port=0x%"PRIx64" data=0x%"PRIx64" count=%d size=%d"
@@ -55,6 +55,14 @@ cpu_ioreq_move(void *req, uint32_t dir, uint32_t df, uint32_t data_is_ptr, uint6
 xen_map_resource_ioreq(uint32_t id, void *addr) "id: %u addr: %p"
 cpu_ioreq_config_read(void *req, uint32_t sbdf, uint32_t reg, uint32_t size, uint32_t data) "I/O=%p sbdf=0x%x reg=%u size=%u data=0x%x"
 cpu_ioreq_config_write(void *req, uint32_t sbdf, uint32_t reg, uint32_t size, uint32_t data) "I/O=%p sbdf=0x%x reg=%u size=%u data=0x%x"
+cpu_get_ioreq_from_shared_memory_req_not_ready(int state, int data_is_ptr, uint64_t addr, uint64_t data, uint32_t count, uint32_t size) "I/O request not ready: 0x%x, ptr: 0x%x, port: 0x%"PRIx64", data: 0x%"PRIx64", count: %u, size: %u"
+xen_main_loop_prepare_init_cpu(int id, void *cpu) "cpu_by_vcpu_id[%d]=%p"
+xen_map_ioreq_server_shared_page(long unsigned int ioreq_pfn) "shared page at pfn 0x%lx"
+xen_map_ioreq_server_buffered_io_page(long unsigned int ioreq_pfn) "buffered io page at pfn 0x%lx"
+xen_map_ioreq_server_buffered_io_evtchn(int bufioreq_evtchn) "buffered io evtchn is 0x%x"
+destroy_hvm_domain_cannot_acquire_handle(void) "Cannot acquire xenctrl handle"
+destroy_hvm_domain_failed_action(const char *action, int sts, char *errno_s) "xc_domain_shutdown failed to issue %s, sts %d, %s"
+destroy_hvm_domain_action(int xen_domid, const char *action) "Issued domain %d %s"
 
 # xen-mapcache.c
 xen_map_cache(uint64_t phys_addr) "want 0x%"PRIx64
diff --git a/hw/xen/xen-hvm-common.c b/hw/xen/xen-hvm-common.c
index 47e6cb1db3..05a29c6f11 100644
--- a/hw/xen/xen-hvm-common.c
+++ b/hw/xen/xen-hvm-common.c
@@ -169,11 +169,12 @@ static ioreq_t *cpu_get_ioreq_from_shared_memory(XenIOState *state, int vcpu)
     ioreq_t *req = xen_vcpu_ioreq(state->shared_page, vcpu);
 
     if (req->state != STATE_IOREQ_READY) {
-        DPRINTF("I/O request not ready: "
-                "%x, ptr: %x, port: %"PRIx64", "
-                "data: %"PRIx64", count: %u, size: %u\n",
-                req->state, req->data_is_ptr, req->addr,
-                req->data, req->count, req->size);
+        trace_cpu_get_ioreq_from_shared_memory_req_not_ready(req->state,
+                                                             req->data_is_ptr,
+                                                             req->addr,
+                                                             req->data,
+                                                             req->count,
+                                                             req->size);
         return NULL;
     }
 
@@ -601,10 +602,9 @@ static void xen_main_loop_prepare(XenIOState *state)
     if (evtchn_fd != -1) {
         CPUState *cpu_state;
 
-        DPRINTF("%s: Init cpu_by_vcpu_id\n", __func__);
         CPU_FOREACH(cpu_state) {
-            DPRINTF("%s: cpu_by_vcpu_id[%d]=%p\n",
-                    __func__, cpu_state->cpu_index, cpu_state);
+            trace_xen_main_loop_prepare_init_cpu(cpu_state->cpu_index,
+                                                 cpu_state);
             state->cpu_by_vcpu_id[cpu_state->cpu_index] = cpu_state;
         }
         qemu_set_fd_handler(evtchn_fd, cpu_handle_ioreq, NULL, state);
@@ -681,7 +681,7 @@ static int xen_map_ioreq_server(XenIOState *state)
     }
 
     if (state->shared_page == NULL) {
-        DPRINTF("shared page at pfn %lx\n", ioreq_pfn);
+        trace_xen_map_ioreq_server_shared_page(ioreq_pfn);
 
         state->shared_page = xenforeignmemory_map(xen_fmem, xen_domid,
                                                   PROT_READ | PROT_WRITE,
@@ -693,7 +693,7 @@ static int xen_map_ioreq_server(XenIOState *state)
     }
 
     if (state->buffered_io_page == NULL) {
-        DPRINTF("buffered io page at pfn %lx\n", bufioreq_pfn);
+        trace_xen_map_ioreq_server_buffered_io_page(bufioreq_pfn);
 
         state->buffered_io_page = xenforeignmemory_map(xen_fmem, xen_domid,
                                                        PROT_READ | PROT_WRITE,
@@ -709,7 +709,7 @@ static int xen_map_ioreq_server(XenIOState *state)
         return -1;
     }
 
-    DPRINTF("buffered io evtchn is %x\n", bufioreq_evtchn);
+    trace_xen_map_ioreq_server_buffered_io_evtchn(bufioreq_evtchn);
 
     state->bufioreq_remote_port = bufioreq_evtchn;
 
@@ -737,16 +737,17 @@ void destroy_hvm_domain(bool reboot)
 
     xc_handle = xc_interface_open(0, 0, 0);
     if (xc_handle == NULL) {
-        fprintf(stderr, "Cannot acquire xenctrl handle\n");
+        trace_destroy_hvm_domain_cannot_acquire_handle();
     } else {
         sts = xc_domain_shutdown(xc_handle, xen_domid, reason);
         if (sts != 0) {
-            fprintf(stderr, "xc_domain_shutdown failed to issue %s, "
-                    "sts %d, %s\n", reboot ? "reboot" : "poweroff",
-                    sts, strerror(errno));
+            trace_destroy_hvm_domain_failed_action(
+                reboot ? "reboot" : "poweroff", sts, strerror(errno)
+            );
         } else {
-            fprintf(stderr, "Issued domain %d %s\n", xen_domid,
-                    reboot ? "reboot" : "poweroff");
+            trace_destroy_hvm_domain_action(
+                xen_domid, reboot ? "reboot" : "poweroff"
+            );
         }
         xc_interface_close(xc_handle);
     }
-- 
γαῖα πυρί μιχθήτω



From xen-devel-bounces@lists.xenproject.org Fri Jan 19 13:25:13 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 19 Jan 2024 13:25:13 +0000
Received: from list by lists.xenproject.org with outflank-mailman.669037.1041619 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQorn-0005k2-0I; Fri, 19 Jan 2024 13:25:03 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 669037.1041619; Fri, 19 Jan 2024 13:25:02 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQorm-0005jv-T3; Fri, 19 Jan 2024 13:25:02 +0000
Received: by outflank-mailman (input) for mailman id 669037;
 Fri, 19 Jan 2024 13:25:01 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=NYCc=I5=linaro.org=manos.pitsidianakis@srs-se1.protection.inumbo.net>)
 id 1rQork-0005H3-W0
 for xen-devel@lists.xenproject.org; Fri, 19 Jan 2024 13:25:00 +0000
Received: from mail-ed1-x530.google.com (mail-ed1-x530.google.com
 [2a00:1450:4864:20::530])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 24bdcc89-b6ce-11ee-9b0f-b553b5be7939;
 Fri, 19 Jan 2024 14:24:59 +0100 (CET)
Received: by mail-ed1-x530.google.com with SMTP id
 4fb4d7f45d1cf-55a43f9a6c1so759207a12.1
 for <xen-devel@lists.xenproject.org>; Fri, 19 Jan 2024 05:24:59 -0800 (PST)
Received: from localhost.localdomain (adsl-138.37.6.1.tellas.gr. [37.6.1.138])
 by smtp.gmail.com with ESMTPSA id
 b11-20020aa7dc0b000000b00558fc426affsm8568310edu.88.2024.01.19.05.24.57
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Fri, 19 Jan 2024 05:24:58 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 24bdcc89-b6ce-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=linaro.org; s=google; t=1705670699; x=1706275499; darn=lists.xenproject.org;
        h=content-transfer-encoding:mime-version:references:in-reply-to
         :message-id:date:subject:cc:to:from:from:to:cc:subject:date
         :message-id:reply-to;
        bh=YfuQXxmvX9JAP4TN/xfu2dZ/IwBEFTowVO1pKbfDK8M=;
        b=AudWNYIX0EFJ4nKLpl/fYnsBq54ikKaLIxlSjWPmwsVENckm7gjMJ7dH61FnH+oLSc
         FY5BUaxeFfjog+UKg2X8pt1UBFPStmBEI4zHJZ/86GQUqo2Rq3c6vmWufca3T0NNhooD
         lUuaHIs5KnBXZOoy+zJ01tGLpCNLHbeQ6I4aYjlJOQ/ec9A1UoouK07UEgZFzmlOYreU
         9fX3CqtreFzu9kAB0piwK8dn6ySGl4leT9tJcDOlJf76V/nt0cRWYEVL1yBaeQw/2MCX
         HZiy0DcYf5Vc3at46wU7xbHrCEo0r777ngXVrLKboeM+nVziGOOVvgGfkIvFZizrN9gl
         zl7w==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705670699; x=1706275499;
        h=content-transfer-encoding:mime-version:references:in-reply-to
         :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to;
        bh=YfuQXxmvX9JAP4TN/xfu2dZ/IwBEFTowVO1pKbfDK8M=;
        b=TKjM0QCX+CmxGVnf8i/qjW0smo5dupacDCDAR9VY4aoOAhMkt2qJu2F73PKWLEjIiA
         rRmi74ESXuUqFAG6z+4M+PO1T/2esoAqNlI7YGAyyfTZAKC94pZmra6hdqaqN/bnBvXY
         zQcQQaeIZB+4Zq3JRpnHW0Kg2WMTeUuGPToYA2/NIbcOfdHz3VzHzZYN/z7vgbxyL5rY
         JcuEq3JJhQI33u8yavPpei6zNu8t+DdQ276AT8maSFUjGEQhWPE+plUZS2fRdTTQ18H+
         zxl0DJpaWXWN6/a6k5RswmWmdsmCv3B0aL9lW/ZFKffmn4RBQBIMKAB3sCv/B+qpazUn
         Nrnw==
X-Gm-Message-State: AOJu0YwZ+zI6lq05RrN2qDohQfSi/6/jkETeO0uDRX1QmS44X432qwhd
	2tW1hWAyKAStMTc/kZo6HGHSwdlVDg3+uMqJdQclkDml+XShtqdUP+/mjTDZoWHuo2lufCQUACv
	RDjc=
X-Google-Smtp-Source: AGHT+IGSoNv5INVnSqko5OrH7zTf+jb7pBx9jX4flwfLWo+bpMWVQxBgd75egqiSm83wZgZZW9SGQA==
X-Received: by 2002:a05:6402:c16:b0:55a:6086:7e1e with SMTP id co22-20020a0564020c1600b0055a60867e1emr457236edb.75.1705670698789;
        Fri, 19 Jan 2024 05:24:58 -0800 (PST)
From: Manos Pitsidianakis <manos.pitsidianakis@linaro.org>
To: qemu-devel@nongnu.org
Cc: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= <philmd@linaro.org>,
	qemu-arm@nongnu.org,
	Paolo Bonzini <pbonzini@redhat.com>,
	=?UTF-8?q?Alex=20Benn=C3=A9e?= <alex.bennee@linaro.org>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Anthony Perard <anthony.perard@citrix.com>,
	Paul Durrant <paul@xen.org>,
	xen-devel@lists.xenproject.org
Subject: [PATCH v2 5/5] hw/xen: convert stderr prints to error/warn reports
Date: Fri, 19 Jan 2024 15:24:47 +0200
Message-Id: <bf5504369023dc115f0d7a756c4c5254fa9cd10d.1705670342.git.manos.pitsidianakis@linaro.org>
X-Mailer: git-send-email 2.39.2
In-Reply-To: <cover.1705670342.git.manos.pitsidianakis@linaro.org>
References: <cover.1705670342.git.manos.pitsidianakis@linaro.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF8
Content-Transfer-Encoding: 8bit

According to the QEMU Coding Style document:

> Do not use printf(), fprintf() or monitor_printf(). Instead, use
> error_report() or error_vreport() from error-report.h. This ensures the
> error is reported in the right place (current monitor or stderr), and in
> a uniform format.
> Use error_printf() & friends to print additional information.

This commit changes fprintfs that report warnings and errors to the
appropriate report functions.

Signed-off-by: Manos Pitsidianakis <manos.pitsidianakis@linaro.org>
---
 hw/xen/xen-hvm-common.c | 12 ++++++------
 hw/xen/xen-mapcache.c   |  5 ++---
 2 files changed, 8 insertions(+), 9 deletions(-)

diff --git a/hw/xen/xen-hvm-common.c b/hw/xen/xen-hvm-common.c
index 05a29c6f11..baa1adb9f2 100644
--- a/hw/xen/xen-hvm-common.c
+++ b/hw/xen/xen-hvm-common.c
@@ -20,8 +20,8 @@ void xen_ram_alloc(ram_addr_t ram_addr, ram_addr_t size, MemoryRegion *mr,
 
     if (runstate_check(RUN_STATE_INMIGRATE)) {
         /* RAM already populated in Xen */
-        fprintf(stderr, "%s: do not alloc "RAM_ADDR_FMT
-                " bytes of ram at "RAM_ADDR_FMT" when runstate is INMIGRATE\n",
+        warn_report("%s: do not alloc "RAM_ADDR_FMT
+                " bytes of ram at "RAM_ADDR_FMT" when runstate is INMIGRATE",
                 __func__, size, ram_addr);
         return;
     }
@@ -552,9 +552,9 @@ static void cpu_handle_ioreq(void *opaque)
         req->data = copy.data;
 
         if (req->state != STATE_IOREQ_INPROCESS) {
-            fprintf(stderr, "Badness in I/O request ... not in service?!: "
+            warn_report("Badness in I/O request ... not in service?!: "
                     "%x, ptr: %x, port: %"PRIx64", "
-                    "data: %"PRIx64", count: %u, size: %u, type: %u\n",
+                    "data: %"PRIx64", count: %u, size: %u, type: %u",
                     req->state, req->data_is_ptr, req->addr,
                     req->data, req->count, req->size, req->type);
             destroy_hvm_domain(false);
@@ -758,9 +758,9 @@ void xen_shutdown_fatal_error(const char *fmt, ...)
     va_list ap;
 
     va_start(ap, fmt);
-    vfprintf(stderr, fmt, ap);
+    error_vreport(fmt, ap);
     va_end(ap);
-    fprintf(stderr, "Will destroy the domain.\n");
+    error_report("Will destroy the domain.");
     /* destroy the domain */
     qemu_system_shutdown_request(SHUTDOWN_CAUSE_HOST_ERROR);
 }
diff --git a/hw/xen/xen-mapcache.c b/hw/xen/xen-mapcache.c
index 336c212376..4f956d048e 100644
--- a/hw/xen/xen-mapcache.c
+++ b/hw/xen/xen-mapcache.c
@@ -347,9 +347,8 @@ tryagain:
         MapCacheRev *reventry = g_new0(MapCacheRev, 1);
         entry->lock++;
         if (entry->lock == 0) {
-            fprintf(stderr,
-                    "mapcache entry lock overflow: "HWADDR_FMT_plx" -> %p\n",
-                    entry->paddr_index, entry->vaddr_base);
+            error_report("mapcache entry lock overflow: "HWADDR_FMT_plx" -> %p",
+                         entry->paddr_index, entry->vaddr_base);
             abort();
         }
         reventry->dma = dma;
-- 
γαῖα πυρί μιχθήτω



From xen-devel-bounces@lists.xenproject.org Fri Jan 19 13:25:13 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 19 Jan 2024 13:25:13 +0000
Received: from list by lists.xenproject.org with outflank-mailman.669035.1041599 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQorj-0005HM-IK; Fri, 19 Jan 2024 13:24:59 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 669035.1041599; Fri, 19 Jan 2024 13:24:59 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQorj-0005HF-Eu; Fri, 19 Jan 2024 13:24:59 +0000
Received: by outflank-mailman (input) for mailman id 669035;
 Fri, 19 Jan 2024 13:24:58 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=NYCc=I5=linaro.org=manos.pitsidianakis@srs-se1.protection.inumbo.net>)
 id 1rQori-0005H3-8Z
 for xen-devel@lists.xenproject.org; Fri, 19 Jan 2024 13:24:58 +0000
Received: from mail-lj1-x22d.google.com (mail-lj1-x22d.google.com
 [2a00:1450:4864:20::22d])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 22c726c0-b6ce-11ee-9b0f-b553b5be7939;
 Fri, 19 Jan 2024 14:24:55 +0100 (CET)
Received: by mail-lj1-x22d.google.com with SMTP id
 38308e7fff4ca-2cd0d05838fso9843551fa.1
 for <xen-devel@lists.xenproject.org>; Fri, 19 Jan 2024 05:24:55 -0800 (PST)
Received: from localhost.localdomain (adsl-138.37.6.1.tellas.gr. [37.6.1.138])
 by smtp.gmail.com with ESMTPSA id
 b11-20020aa7dc0b000000b00558fc426affsm8568310edu.88.2024.01.19.05.24.53
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Fri, 19 Jan 2024 05:24:55 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 22c726c0-b6ce-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=linaro.org; s=google; t=1705670695; x=1706275495; darn=lists.xenproject.org;
        h=content-transfer-encoding:mime-version:references:in-reply-to
         :message-id:date:subject:cc:to:from:from:to:cc:subject:date
         :message-id:reply-to;
        bh=oTGa3/BzlzS0hEzKw7dcC9l7LHJA830QpWxPRNzttIo=;
        b=Hihtt50MmPkOkMXa6+qC329UF1cQiG1LLrHtd8uzM+22/aDtYV9TEfUV5Xz5c9NE07
         mATl9bRLbGHu9FQMUXvC1+CrHWjK098EV5hOrc7JxdmN8NkQIo7F0zVD9XDYB/y9dqNw
         O3htMAaRTTN1J030A2p17OKA0SgEFmq2EmRF6vrTNiH4uCK7eWSjhqb9QV8GRlnaRSQd
         YW/LjV/jiJnwOpPPqBb5L6hHwO+Hz1GhU45FzhthJAbS4qYJGatSv4c2+40/wDqLm1fo
         hbAsJ5q0+Jh0MqHNjTL12umUXtUtJF8ZEhMT8qzqjiZS//F9d6LoMrMhRbbj4T6LM3tL
         d0mQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705670695; x=1706275495;
        h=content-transfer-encoding:mime-version:references:in-reply-to
         :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to;
        bh=oTGa3/BzlzS0hEzKw7dcC9l7LHJA830QpWxPRNzttIo=;
        b=NsaicQp3oTvUPfdCjH07b9NgdZ29s35hrbBtYMigU2RH0sgsQyxIxVa5257yYJhBb3
         979T7Cu9lglu5troPS8tX6ONMYUlYKmXCsmF1vjiRrR7vS3fHAppKoS9yhiy6JyYlrK2
         /qOGwCEGTApSU0BUZstqXUjiIum8jSmttYGTDNjgymPZiFO7P7d1GL/wBhtAHCwlAzH6
         1vP+mtxJuGOCfYfG1/DRcPuTF/reMcpn93tIJ0Yp1UJ9RIVWEzWZ1Xh3e3vXAsLW3hKp
         onL5HF2YMHVRLLdbfOTpbwfwBcFrq7nira9fV/IqI3iW79RBLAe0VaSCHabR21/5sozG
         4Ktw==
X-Gm-Message-State: AOJu0YzXjtjmgObQPu6koem+nTQ8Q1VyXhjcCvDBnX95+uVHQMy7NjW8
	jBH4NEvs59Jdbxwd8WCmHtOKI6xKkpBWUqgP+Jotw7pR6mdPVbY/USwze49IgRc=
X-Google-Smtp-Source: AGHT+IG9I+j9LM471ccGVtYsEUWl1UfRThaE1vuqUryfI5wGDHH2Am9SAFPIvurxpbUcLK8NO6cNXg==
X-Received: by 2002:a05:6512:3e29:b0:50e:e2e2:b69b with SMTP id i41-20020a0565123e2900b0050ee2e2b69bmr838216lfv.4.1705670695453;
        Fri, 19 Jan 2024 05:24:55 -0800 (PST)
From: Manos Pitsidianakis <manos.pitsidianakis@linaro.org>
To: qemu-devel@nongnu.org
Cc: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= <philmd@linaro.org>,
	qemu-arm@nongnu.org,
	Paolo Bonzini <pbonzini@redhat.com>,
	=?UTF-8?q?Alex=20Benn=C3=A9e?= <alex.bennee@linaro.org>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Anthony Perard <anthony.perard@citrix.com>,
	Paul Durrant <paul@xen.org>,
	xen-devel@lists.xenproject.org
Subject: [PATCH v2 3/5] hw/xen/xen-mapcache.c: convert DPRINTF to tracepoints
Date: Fri, 19 Jan 2024 15:24:45 +0200
Message-Id: <d5493e864f41ea1fe35fc96e91c7679ceb9ab60f.1705670342.git.manos.pitsidianakis@linaro.org>
X-Mailer: git-send-email 2.39.2
In-Reply-To: <cover.1705670342.git.manos.pitsidianakis@linaro.org>
References: <cover.1705670342.git.manos.pitsidianakis@linaro.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF8
Content-Transfer-Encoding: 8bit

Tracing DPRINTFs to stderr might not be desired. A developer that relies
on tracepoints should be able to opt-in to each tracepoint and rely on
QEMU's log redirection, instead of stderr by default.

This commit converts DPRINTFs in this file that are used for tracing
into tracepoints.

Signed-off-by: Manos Pitsidianakis <manos.pitsidianakis@linaro.org>
---
 hw/xen/trace-events   | 11 +++++++++
 hw/xen/xen-mapcache.c | 54 +++++++++++++++++++------------------------
 2 files changed, 35 insertions(+), 30 deletions(-)

diff --git a/hw/xen/trace-events b/hw/xen/trace-events
index 67a6c41926..1b748dba09 100644
--- a/hw/xen/trace-events
+++ b/hw/xen/trace-events
@@ -60,3 +60,14 @@ cpu_ioreq_config_write(void *req, uint32_t sbdf, uint32_t reg, uint32_t size, ui
 xen_map_cache(uint64_t phys_addr) "want 0x%"PRIx64
 xen_remap_bucket(uint64_t index) "index 0x%"PRIx64
 xen_map_cache_return(void* ptr) "%p"
+xen_map_cache_init(uint64_t nr_buckets, uint64_t size) "nr_buckets = 0x%lx size %lu"
+xen_replace_cache_entry_dummy(uint64_t old_phys_addr, uint64_t new_phys_addr) "Replacing a dummy mapcache entry for 0x%"PRIx64" with 0x%"PRIx64
+xen_invalidate_map_cache_entry_unlocked_not_found(void *p) "could not find %p"
+xen_invalidate_map_cache_entry_unlocked_found(uint64_t addr, void *p) "   0x%"PRIx64" -> %p is present"
+xen_invalidate_map_cache_entry_unlocked_miss(void *buffer) "Trying to unmap address %p that is not in the mapcache"
+xen_replace_cache_entry_unlocked_could_not_update_entry(uint64_t old_phys_addr) "Unable to update a mapcache entry for 0x%"PRIx64
+xen_ram_addr_from_mapcache_not_found(void *p) "could not find %p"
+xen_ram_addr_from_mapcache_found(uint64_t addr, void *p) "   0x%"PRIx64" -> %p is present"
+xen_ram_addr_from_mapcache_not_in_cache(void *p) "Trying to find address %p that is not in the mapcache"
+xen_replace_cache_entry_unlocked(uint64_t old_phys_addr) "Trying to update an entry for 0x%"PRIx64" that is not in the mapcache"
+xen_invalidate_map_cache(uint64_t paddr_index, void *vaddr_req) "Locked DMA mapping while invalidating mapcache 0x%"PRIx64" -> %p is present"
diff --git a/hw/xen/xen-mapcache.c b/hw/xen/xen-mapcache.c
index f7d974677d..336c212376 100644
--- a/hw/xen/xen-mapcache.c
+++ b/hw/xen/xen-mapcache.c
@@ -22,16 +22,6 @@
 #include "trace.h"
 
 
-//#define MAPCACHE_DEBUG
-
-#ifdef MAPCACHE_DEBUG
-#  define DPRINTF(fmt, ...) do { \
-    fprintf(stderr, "xen_mapcache: " fmt, ## __VA_ARGS__); \
-} while (0)
-#else
-#  define DPRINTF(fmt, ...) do { } while (0)
-#endif
-
 #if HOST_LONG_BITS == 32
 #  define MCACHE_BUCKET_SHIFT 16
 #  define MCACHE_MAX_SIZE     (1UL<<31) /* 2GB Cap */
@@ -145,8 +135,7 @@ void xen_map_cache_init(phys_offset_to_gaddr_t f, void *opaque)
 
     size = mapcache->nr_buckets * sizeof (MapCacheEntry);
     size = (size + XC_PAGE_SIZE - 1) & ~(XC_PAGE_SIZE - 1);
-    DPRINTF("%s, nr_buckets = %lx size %lu\n", __func__,
-            mapcache->nr_buckets, size);
+    trace_xen_map_cache_init(mapcache->nr_buckets, size);
     mapcache->entry = g_malloc0(size);
 }
 
@@ -286,7 +275,9 @@ tryagain:
         test_bits(address_offset >> XC_PAGE_SHIFT,
                   test_bit_size >> XC_PAGE_SHIFT,
                   mapcache->last_entry->valid_mapping)) {
-        trace_xen_map_cache_return(mapcache->last_entry->vaddr_base + address_offset);
+        trace_xen_map_cache_return(
+            mapcache->last_entry->vaddr_base + address_offset
+        );
         return mapcache->last_entry->vaddr_base + address_offset;
     }
 
@@ -368,7 +359,9 @@ tryagain:
         QTAILQ_INSERT_HEAD(&mapcache->locked_entries, reventry, next);
     }
 
-    trace_xen_map_cache_return(mapcache->last_entry->vaddr_base + address_offset);
+    trace_xen_map_cache_return(
+        mapcache->last_entry->vaddr_base + address_offset
+    );
     return mapcache->last_entry->vaddr_base + address_offset;
 }
 
@@ -402,10 +395,10 @@ ram_addr_t xen_ram_addr_from_mapcache(void *ptr)
         }
     }
     if (!found) {
-        fprintf(stderr, "%s, could not find %p\n", __func__, ptr);
+        trace_xen_ram_addr_from_mapcache_not_found(ptr);
         QTAILQ_FOREACH(reventry, &mapcache->locked_entries, next) {
-            DPRINTF("   "HWADDR_FMT_plx" -> %p is present\n", reventry->paddr_index,
-                    reventry->vaddr_req);
+            trace_xen_ram_addr_from_mapcache_found(reventry->paddr_index,
+                                                   reventry->vaddr_req);
         }
         abort();
         return 0;
@@ -416,7 +409,7 @@ ram_addr_t xen_ram_addr_from_mapcache(void *ptr)
         entry = entry->next;
     }
     if (!entry) {
-        DPRINTF("Trying to find address %p that is not in the mapcache!\n", ptr);
+        trace_xen_ram_addr_from_mapcache_not_in_cache(ptr);
         raddr = 0;
     } else {
         raddr = (reventry->paddr_index << MCACHE_BUCKET_SHIFT) +
@@ -443,9 +436,12 @@ static void xen_invalidate_map_cache_entry_unlocked(uint8_t *buffer)
         }
     }
     if (!found) {
-        DPRINTF("%s, could not find %p\n", __func__, buffer);
+        trace_xen_invalidate_map_cache_entry_unlocked_not_found(buffer);
         QTAILQ_FOREACH(reventry, &mapcache->locked_entries, next) {
-            DPRINTF("   "HWADDR_FMT_plx" -> %p is present\n", reventry->paddr_index, reventry->vaddr_req);
+            trace_xen_invalidate_map_cache_entry_unlocked_found(
+                reventry->paddr_index,
+                reventry->vaddr_req
+            );
         }
         return;
     }
@@ -463,7 +459,7 @@ static void xen_invalidate_map_cache_entry_unlocked(uint8_t *buffer)
         entry = entry->next;
     }
     if (!entry) {
-        DPRINTF("Trying to unmap address %p that is not in the mapcache!\n", buffer);
+        trace_xen_invalidate_map_cache_entry_unlocked_miss(buffer);
         return;
     }
     entry->lock--;
@@ -502,9 +498,8 @@ void xen_invalidate_map_cache(void)
         if (!reventry->dma) {
             continue;
         }
-        fprintf(stderr, "Locked DMA mapping while invalidating mapcache!"
-                " "HWADDR_FMT_plx" -> %p is present\n",
-                reventry->paddr_index, reventry->vaddr_req);
+        trace_xen_invalidate_map_cache(reventry->paddr_index,
+                                       reventry->vaddr_req);
     }
 
     for (i = 0; i < mapcache->nr_buckets; i++) {
@@ -562,24 +557,23 @@ static uint8_t *xen_replace_cache_entry_unlocked(hwaddr old_phys_addr,
         entry = entry->next;
     }
     if (!entry) {
-        DPRINTF("Trying to update an entry for "HWADDR_FMT_plx \
-                "that is not in the mapcache!\n", old_phys_addr);
+        trace_xen_replace_cache_entry_unlocked(old_phys_addr);
         return NULL;
     }
 
     address_index  = new_phys_addr >> MCACHE_BUCKET_SHIFT;
     address_offset = new_phys_addr & (MCACHE_BUCKET_SIZE - 1);
 
-    fprintf(stderr, "Replacing a dummy mapcache entry for "HWADDR_FMT_plx \
-            " with "HWADDR_FMT_plx"\n", old_phys_addr, new_phys_addr);
+    trace_xen_replace_cache_entry_dummy(old_phys_addr, new_phys_addr);
 
     xen_remap_bucket(entry, entry->vaddr_base,
                      cache_size, address_index, false);
     if (!test_bits(address_offset >> XC_PAGE_SHIFT,
                 test_bit_size >> XC_PAGE_SHIFT,
                 entry->valid_mapping)) {
-        DPRINTF("Unable to update a mapcache entry for "HWADDR_FMT_plx"!\n",
-                old_phys_addr);
+        trace_xen_replace_cache_entry_unlocked_could_not_update_entry(
+            old_phys_addr
+        );
         return NULL;
     }
 
-- 
γαῖα πυρί μιχθήτω



From xen-devel-bounces@lists.xenproject.org Fri Jan 19 13:40:30 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 19 Jan 2024 13:40:30 +0000
Received: from list by lists.xenproject.org with outflank-mailman.669049.1041628 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQp6d-0001JW-EA; Fri, 19 Jan 2024 13:40:23 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 669049.1041628; Fri, 19 Jan 2024 13:40:23 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQp6d-0001JP-BW; Fri, 19 Jan 2024 13:40:23 +0000
Received: by outflank-mailman (input) for mailman id 669049;
 Fri, 19 Jan 2024 13:40:22 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=TJ2q=I5=invisiblethingslab.com=marmarek@srs-se1.protection.inumbo.net>)
 id 1rQp6b-0001JH-VN
 for xen-devel@lists.xenproject.org; Fri, 19 Jan 2024 13:40:22 +0000
Received: from wout2-smtp.messagingengine.com (wout2-smtp.messagingengine.com
 [64.147.123.25]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 47f43681-b6d0-11ee-9b0f-b553b5be7939;
 Fri, 19 Jan 2024 14:40:18 +0100 (CET)
Received: from compute4.internal (compute4.nyi.internal [10.202.2.44])
 by mailout.west.internal (Postfix) with ESMTP id 6B4CE3200ADB;
 Fri, 19 Jan 2024 08:40:15 -0500 (EST)
Received: from mailfrontend1 ([10.202.2.162])
 by compute4.internal (MEProxy); Fri, 19 Jan 2024 08:40:15 -0500
Received: by mail.messagingengine.com (Postfix) with ESMTPA; Fri,
 19 Jan 2024 08:40:13 -0500 (EST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 47f43681-b6d0-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=
	invisiblethingslab.com; h=cc:cc:content-type:content-type:date
	:date:from:from:in-reply-to:in-reply-to:message-id:mime-version
	:references:reply-to:subject:subject:to:to; s=fm2; t=1705671614;
	 x=1705758014; bh=bKRJytPaVVHYQd0BqnQ8SWnr+G8qm+sktgYsg/SsISc=; b=
	L9myp6wPsFtgA67yt9QrwoEsSG7aJ4RFIXsCpPN3GZ6eouZDjAdFZQTOQje7l4+k
	tijKoNsq39rRAk3acfMdsQp9B4UdxxnkS81sNTgtDB7W6hp4L2ENuTcirGvyr8fu
	wMywREfv7GSyiJX5LOyKtc65uRn+acuobrxxkSgMI47s/lej075pwzbC624Mpn13
	WYRjQCyDEj8SvMWB9hYAHSTNqx9oaQQFYZCAWAUHcdiP+OBVjmZYg8mb52QM0HNX
	7GYI9Iv445hSmee5lMRrAG+nKAxLFEe0F2Ru3ZDL2O0TL+qNuKKXeyPzcFfGJhzu
	7uvdGGW+gYHemFjCQpDJ6w==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=
	messagingengine.com; h=cc:cc:content-type:content-type:date:date
	:feedback-id:feedback-id:from:from:in-reply-to:in-reply-to
	:message-id:mime-version:references:reply-to:subject:subject:to
	:to:x-me-proxy:x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s=
	fm3; t=1705671614; x=1705758014; bh=bKRJytPaVVHYQd0BqnQ8SWnr+G8q
	m+sktgYsg/SsISc=; b=JQEdRDy/wLrEQjNGMe/Kyis7jMiPmlKTALlF/PIHz6YH
	DVBPbuh9vj8FcdYrG2V0jlSYZC8UrPEEfqUFLa9eTJFxdFWBO/mY4jQxpSWWF2eN
	+y2vaB/YWeNrZRZDkjLblsMe3msXHaSqxwZrIdqGxQWbId/rZ0fYOBT+ecLPmYiY
	os9QGqSB1CCURhVwW6UPb6P6fBD4zqt0G5y05WjvT9vsqgI/xcTq0rR+VcE1ixZz
	ypFYk7yHIiU15oq+eZep1ALlI5vEfV5WRnPoFuTcDPR0uQIkrM3xTwne46MBlT6P
	XS4gakUskhItiBun49wJRc1F3hwMDnjrj6LiTo/6VA==
X-ME-Sender: <xms:vnuqZX3zQpjlf90DDa-hsO4o-sZfT-Bzsff6J_b4Q3Kkc7xuDf-_-w>
    <xme:vnuqZWEWdiDUJlZbFj3j30-RndBoFiYrxfqso3WrflEgSzhQu6eboV78qV_XfkitR
    tLFKJhH0dxTpg>
X-ME-Received: <xmr:vnuqZX4FL6H3N__K_xiCe1rD9gwUNTvq29_eI5log4WOTuhaI24l0ML8Zx3KwNjriJ89zNdTbZeYXtQcvTlOIps1CQGVRkzl2A>
X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvkedrvdektddgheegucetufdoteggodetrfdotf
    fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen
    uceurghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmne
    cujfgurhepfffhvfevuffkfhggtggujgesghdtreertddtjeenucfhrhhomhepofgrrhgv
    khcuofgrrhgtiiihkhhofihskhhiqdfikphrvggtkhhiuceomhgrrhhmrghrvghksehinh
    hvihhsihgslhgvthhhihhnghhslhgrsgdrtghomheqnecuggftrfgrthhtvghrnhepgfdu
    leetfeevhfefheeiteeliefhjefhleduveetteekveettddvgeeuteefjedunecuvehluh
    hsthgvrhfuihiivgeptdenucfrrghrrghmpehmrghilhhfrhhomhepmhgrrhhmrghrvghk
    sehinhhvihhsihgslhgvthhhihhnghhslhgrsgdrtghomh
X-ME-Proxy: <xmx:vnuqZc32_3h_xzaUZ6O9K_7vjNK8Df1UbpgA-orgnYdzpLHmLxATCA>
    <xmx:vnuqZaEH-APuY53zdd5p6827XnxyuYjznHWHg63UeD5VPltU3NQm0g>
    <xmx:vnuqZd-ByK6I8pogvHwVngT623zcDxGtCbaboKBZc3RDjJ1MzLnoSQ>
    <xmx:vnuqZfQHxmX7YrEAIULPnAwqPtC9c6dnI-Kjlg6znDcqgMqqbSVW7A>
Feedback-ID: i1568416f:Fastmail
Date: Fri, 19 Jan 2024 14:40:06 +0100
From: Marek =?utf-8?Q?Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
To: Jan Beulich <jbeulich@suse.com>, Juergen Gross <jgross@suse.com>,
	Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
Cc: Patrick Plenefisch <simonpatp@gmail.com>,
	xen-devel@lists.xenproject.org
Subject: Re: E820 memory allocation issue on Threadripper platforms
Message-ID: <Zap7uX3k0kfoMOoF@mail-itl>
References: <CAOCpoWdOH=xGxiQSC1c5Ueb1THxAjH4WiZbCZq-QT+d_KAk3SA@mail.gmail.com>
 <1708c3d7-662a-44bc-b9b3-4ab9f8642d7b@suse.com>
 <dcaf9d8d-ad5a-4714-936b-79ed0e587f9d@suse.com>
 <CAOCpoWeowZPuQTeBp9nu8p8CDtE=u++wN_UqRoABZtB57D50Qw@mail.gmail.com>
 <ac742d12-ec91-4215-bb42-82a145924b4f@suse.com>
 <CAOCpoWfQmkhN3hms1xuotSUZzVzR99i9cNGGU2r=yD5PjysMiQ@mail.gmail.com>
 <fa23a590-5869-4e11-8998-1d03742c5919@suse.com>
 <CAOCpoWf4CMkCWx8uR2NbFrZrKSS78wj1-hFsAUqsjCfsmqooVA@mail.gmail.com>
MIME-Version: 1.0
Content-Type: multipart/signed; micalg=pgp-sha256;
	protocol="application/pgp-signature"; boundary="PNmSiVhT5vUfc3R7"
Content-Disposition: inline
In-Reply-To: <CAOCpoWf4CMkCWx8uR2NbFrZrKSS78wj1-hFsAUqsjCfsmqooVA@mail.gmail.com>


--PNmSiVhT5vUfc3R7
Content-Type: text/plain; protected-headers=v1; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable
Date: Fri, 19 Jan 2024 14:40:06 +0100
From: Marek =?utf-8?Q?Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
To: Jan Beulich <jbeulich@suse.com>, Juergen Gross <jgross@suse.com>,
	Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
Cc: Patrick Plenefisch <simonpatp@gmail.com>,
	xen-devel@lists.xenproject.org
Subject: Re: E820 memory allocation issue on Threadripper platforms

On Thu, Jan 18, 2024 at 01:23:56AM -0500, Patrick Plenefisch wrote:
> On Wed, Jan 17, 2024 at 3:46=E2=80=AFAM Jan Beulich <jbeulich@suse.com> w=
rote:
> > On 17.01.2024 07:12, Patrick Plenefisch wrote:
> > > As someone who hasn't built a kernel in over a decade, should I figure
> > out
> > > how to do a kernel build with CONFIG_PHYSICAL_START=3D0x2000000 and r=
eport
> > > back?
> >
> > That was largely a suggestion to perhaps allow you to gain some
> > workable setup. It would be of interest to us largely for completeness.
> >
>=20
> Typo aside, setting the boot to 2MiB works! It works better for PV

Are there any downsides of running kernel with
CONFIG_PHYSICAL_START=3D0x200000? I can confirm it fixes the issue on
another affected system, and if there aren't any practical downsides,
I'm tempted to change it the default kernel in Qubes OS.

--=20
Best Regards,
Marek Marczykowski-G=C3=B3recki
Invisible Things Lab

--PNmSiVhT5vUfc3R7
Content-Type: application/pgp-signature; name="signature.asc"

-----BEGIN PGP SIGNATURE-----

iQEzBAEBCAAdFiEEhrpukzGPukRmQqkK24/THMrX1ywFAmWqe7kACgkQ24/THMrX
1yxXwgf9FLeYuLDgT9jy6Me0tB/M2egM1T6lUv7HgLq87Al0Q8hshcL1VnGyWDmF
phHifLuvxLEPk8F6A1ir0fNW63Qxryx3cu0KNcMOlrAg32jJl+JbB0qzKsZWLfUE
N85fDlEccDHZX4aArGe39Qn65ipu9aG6+SCird1OKSec5Aae230joMxUp8JgR/PB
/G1vcf/ujnZLCtuvD6xJWloPnT9s6XbyT6CheDZnNj7Yg9NjvK60e+Pncs9XeaHD
TkqIlrzOrbqAc1cCYkmekkGWAOfN59Xcuiiic7AehTUngBgAZWEU/u78RDiQYNMD
/BljlE7vUkDwIwiUGpb5xK/3TLuFrw==
=t1m9
-----END PGP SIGNATURE-----

--PNmSiVhT5vUfc3R7--


From xen-devel-bounces@lists.xenproject.org Fri Jan 19 13:42:37 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 19 Jan 2024 13:42:37 +0000
Received: from list by lists.xenproject.org with outflank-mailman.669052.1041640 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQp8l-0001rg-T1; Fri, 19 Jan 2024 13:42:35 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 669052.1041640; Fri, 19 Jan 2024 13:42:35 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQp8l-0001qW-ND; Fri, 19 Jan 2024 13:42:35 +0000
Received: by outflank-mailman (input) for mailman id 669052;
 Fri, 19 Jan 2024 13:42:34 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=xVsr=I5=cloud.com=roger.pau@srs-se1.protection.inumbo.net>)
 id 1rQp8k-0001q9-QN
 for xen-devel@lists.xenproject.org; Fri, 19 Jan 2024 13:42:34 +0000
Received: from mail-wm1-x329.google.com (mail-wm1-x329.google.com
 [2a00:1450:4864:20::329])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 98b8a200-b6d0-11ee-9b0f-b553b5be7939;
 Fri, 19 Jan 2024 14:42:32 +0100 (CET)
Received: by mail-wm1-x329.google.com with SMTP id
 5b1f17b1804b1-40e913e3f03so8918945e9.3
 for <xen-devel@lists.xenproject.org>; Fri, 19 Jan 2024 05:42:32 -0800 (PST)
Received: from localhost ([213.195.127.68]) by smtp.gmail.com with ESMTPSA id
 v4-20020a05600c470400b0040e5945307esm29308109wmo.40.2024.01.19.05.42.31
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Fri, 19 Jan 2024 05:42:32 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 98b8a200-b6d0-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1705671752; x=1706276552; darn=lists.xenproject.org;
        h=in-reply-to:content-transfer-encoding:content-disposition
         :mime-version:references:message-id:subject:cc:to:from:date:from:to
         :cc:subject:date:message-id:reply-to;
        bh=hs7dwlUBPz9cZp16YJ/Cd9oFx062tW1i5m/v8g2rnFM=;
        b=fJjFGZ6K8Wt/BFyb/PIZCGfYablduF4mNzT9zBqn37/2aeGh+ZxRTIHhTiEqR6N3+a
         Fw7MH3ismZ5q2UEQJN6nPLkohbv7pgHp6v0SPbIuq7JGSrpNiQsX33ekY+uR+TdYlIe8
         s0sVL96B96/oaAdPlETfLmTEPL10ZH14pvSKA=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705671752; x=1706276552;
        h=in-reply-to:content-transfer-encoding:content-disposition
         :mime-version:references:message-id:subject:cc:to:from:date
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=hs7dwlUBPz9cZp16YJ/Cd9oFx062tW1i5m/v8g2rnFM=;
        b=ZFSvUsPwM5poc00Ef6v3zZ9yVARx2hk5q0r6mVZxAEXfjFD0Enr862oGUojejhcUSZ
         BoLQCYE0kWfRH37gUmsEoIRKrasQFhbYLC0vOVPDKqc3ld9NIgJppHNoMqfnvUqfMWs+
         rzx+eRF3RvHeDK+QiJVI/4saYyUix8lKSB9gEIIS+mXASKt207O5LVG9EdZlqCkvsffs
         BVOHD1sbygs9JMcSdCsWvnwzFSi6RYmudT7AdmJL14kgwQ20ZVea60zTXSKX4ubTMRKL
         dY6q2dJI7GQDXynwkzmxblOH7E6Ao2CSG3GEl3Zjt/ElYABKgP5wcpGGFxgDiPisiXtJ
         k00Q==
X-Gm-Message-State: AOJu0Yy7wAn9TpSCOXxzgP/YSlFXVRNPGnS7+ynX6ewHWnO63E5D+AyC
	edkv6ysoF8GZCAvt2JEr25Y7xZj+WFP3vhq03JoQD04fOWMrHK+uxJeIWK97V9U=
X-Google-Smtp-Source: AGHT+IHKwgO+RxZjEi4/Xwu1G8MFLxP2Ix4AouNushWf1EGo33bHUigAGOLN5XJvlgMeu3P9aWyrWA==
X-Received: by 2002:a1c:4b11:0:b0:40e:4133:44da with SMTP id y17-20020a1c4b11000000b0040e413344damr1688353wma.26.1705671752239;
        Fri, 19 Jan 2024 05:42:32 -0800 (PST)
Date: Fri, 19 Jan 2024 14:42:31 +0100
From: Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
To: Stewart Hildebrand <stewart.hildebrand@amd.com>
Cc: xen-devel@lists.xenproject.org,
	Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>,
	Jan Beulich <jbeulich@suse.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>, Wei Liu <wl@xen.org>,
	George Dunlap <george.dunlap@citrix.com>,
	Julien Grall <julien@xen.org>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Jun Nakajima <jun.nakajima@intel.com>,
	Kevin Tian <kevin.tian@intel.com>, Paul Durrant <paul@xen.org>,
	Volodymyr Babchuk <volodymyr_babchuk@epam.com>
Subject: Re: [PATCH v12.2 01/15] vpci: use per-domain PCI lock to protect
 vpci structure
Message-ID: <Zap8R5Q0wTPQ3lOP@macbook>
References: <20240109215145.430207-1-stewart.hildebrand@amd.com>
 <20240109215145.430207-2-stewart.hildebrand@amd.com>
 <20240115194309.45683-1-stewart.hildebrand@amd.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <20240115194309.45683-1-stewart.hildebrand@amd.com>

On Mon, Jan 15, 2024 at 02:43:08PM -0500, Stewart Hildebrand wrote:
> From: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>
> 
> Use the per-domain PCI read/write lock to protect the presence of the
> pci device vpci field. This lock can be used (and in a few cases is used
> right away) so that vpci removal can be performed while holding the lock
> in write mode. Previously such removal could race with vpci_read for
> example.
> 
> When taking both d->pci_lock and pdev->vpci->lock, they should be
> taken in this exact order: d->pci_lock then pdev->vpci->lock to avoid
> possible deadlock situations.
> 
> 1. Per-domain's pci_lock is used to protect pdev->vpci structure
> from being removed.
> 
> 2. Writing the command register and ROM BAR register may trigger
> modify_bars to run, which in turn may access multiple pdevs while
> checking for the existing BAR's overlap. The overlapping check, if
> done under the read lock, requires vpci->lock to be acquired on both
> devices being compared, which may produce a deadlock. It is not
> possible to upgrade read lock to write lock in such a case. So, in
> order to prevent the deadlock, use d->pci_lock in write mode instead.
> 
> All other code, which doesn't lead to pdev->vpci destruction and does
> not access multiple pdevs at the same time, can still use a
> combination of the read lock and pdev->vpci->lock.
> 
> 3. Drop const qualifier where the new rwlock is used and this is
> appropriate.
> 
> 4. Do not call process_pending_softirqs with any locks held. For that
> unlock prior the call and re-acquire the locks after. After
> re-acquiring the lock there is no need to check if pdev->vpci exists:
>  - in apply_map because of the context it is called (no race condition
>    possible)
>  - for MSI/MSI-X debug code because it is called at the end of
>    pdev->vpci access and no further access to pdev->vpci is made
> 
> 5. Use d->pci_lock around for_each_pdev and pci_get_pdev_by_domain
> while accessing pdevs in vpci code.
> 
> Suggested-by: Roger Pau Monné <roger.pau@citrix.com>
> Suggested-by: Jan Beulich <jbeulich@suse.com>
> Signed-off-by: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>
> Signed-off-by: Volodymyr Babchuk <volodymyr_babchuk@epam.com>
> Signed-off-by: Stewart Hildebrand <stewart.hildebrand@amd.com>

Reviewed-by: Roger Pau Monné <roger.pau@citrix.com>

Thanks, Roger.


From xen-devel-bounces@lists.xenproject.org Fri Jan 19 13:43:40 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 19 Jan 2024 13:43:40 +0000
Received: from list by lists.xenproject.org with outflank-mailman.669056.1041648 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQp9e-0002bj-2w; Fri, 19 Jan 2024 13:43:30 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 669056.1041648; Fri, 19 Jan 2024 13:43:30 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQp9d-0002bc-WB; Fri, 19 Jan 2024 13:43:29 +0000
Received: by outflank-mailman (input) for mailman id 669056;
 Fri, 19 Jan 2024 13:43:28 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=xVsr=I5=cloud.com=roger.pau@srs-se1.protection.inumbo.net>)
 id 1rQp9c-0002bU-TG
 for xen-devel@lists.xenproject.org; Fri, 19 Jan 2024 13:43:28 +0000
Received: from mail-wr1-x42c.google.com (mail-wr1-x42c.google.com
 [2a00:1450:4864:20::42c])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id b903264b-b6d0-11ee-9b0f-b553b5be7939;
 Fri, 19 Jan 2024 14:43:27 +0100 (CET)
Received: by mail-wr1-x42c.google.com with SMTP id
 ffacd0b85a97d-3387ef9fc62so675219f8f.2
 for <xen-devel@lists.xenproject.org>; Fri, 19 Jan 2024 05:43:27 -0800 (PST)
Received: from localhost ([213.195.127.68]) by smtp.gmail.com with ESMTPSA id
 q9-20020adff789000000b00337d6aa3912sm3107801wrp.10.2024.01.19.05.43.26
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Fri, 19 Jan 2024 05:43:26 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: b903264b-b6d0-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1705671806; x=1706276606; darn=lists.xenproject.org;
        h=in-reply-to:content-disposition:mime-version:references:message-id
         :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to;
        bh=cHVXDrHsrue1kpxD3c+cDLtoqNC4QjTpLB8mCj2VBAQ=;
        b=QrthPVgWFkzpmhuM6aTY4fgOWcQ/tlPplq7mam8PNtYtMHULJs7n4MCo/8IkMtCm2m
         n0C1Z4WrGyyurZhWdLwXNrPgNhyr/5AwU+SQQ0fUFxJYXmHsh0KaIztWnT95i/TvFmFE
         NeTTVuPdVNF7lfgY+cBQuZkUw8F5yNlAfiQic=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705671806; x=1706276606;
        h=in-reply-to:content-disposition:mime-version:references:message-id
         :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to;
        bh=cHVXDrHsrue1kpxD3c+cDLtoqNC4QjTpLB8mCj2VBAQ=;
        b=P/KQeJZ0vp+8bLe4hJLwPIg5+PETGsAHM/DNfaRsPtY1BOywvAu8gYX2Cgi7RulUl3
         8LGxsiWeuZ0MbiadRv2ob7SdlaJ0tGkBNhPwQmHAspd0UhteYBXhk79XodKsCDifI6uO
         ZraDdVt1tcfR3hHEfeairG9/9vIRuxc10teymh7z5fh+CwOOv2IAfhBbmTfK+LtsB8jN
         I7Q28awVDDeaZCmipUNNcBnNsb6vQDxSJ+kkaS7G+JkgOLKqm0bTmZKqDiR/U2+xTwqN
         dKW9dUB2wzrDEgVOaw/c1QLbX3fCcxmblGxazQIhTKCjINKiepTzzpXPtuDRNPkE7WOt
         mO4A==
X-Gm-Message-State: AOJu0YwMMedKpBh53kphOvQuphmnyDdLsxLC52dIpi7vn6mes1bodea3
	VzuYK8Au2+5ckCuX3AFByuHmL+OhbsYgrSXw7W8bGs9PTmE48HplACio33Q7g/k=
X-Google-Smtp-Source: AGHT+IGmqfutxua1VXCg4x0Vi1g6ObFbzX8v00gLWTRPwJ9xyeHagFZGjZMOl/orTylT9ia3b+95LA==
X-Received: by 2002:a5d:5187:0:b0:337:c0cb:38cd with SMTP id k7-20020a5d5187000000b00337c0cb38cdmr1461038wrv.71.1705671806509;
        Fri, 19 Jan 2024 05:43:26 -0800 (PST)
Date: Fri, 19 Jan 2024 14:43:25 +0100
From: Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
To: Stewart Hildebrand <stewart.hildebrand@amd.com>
Cc: xen-devel@lists.xenproject.org,
	Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>,
	"Daniel P. Smith" <dpsmith@apertussolutions.com>,
	Volodymyr Babchuk <volodymyr_babchuk@epam.com>
Subject: Re: [PATCH v12.2 09/15] vpci/header: program p2m with guest BAR view
Message-ID: <Zap8fUPGTa0P5reU@macbook>
References: <20240109215145.430207-1-stewart.hildebrand@amd.com>
 <20240109215145.430207-10-stewart.hildebrand@amd.com>
 <20240115194406.45711-1-stewart.hildebrand@amd.com>
 <05298b1e-118d-41ed-8b6d-45c69bb09ea9@amd.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
In-Reply-To: <05298b1e-118d-41ed-8b6d-45c69bb09ea9@amd.com>

On Tue, Jan 16, 2024 at 10:01:24PM -0500, Stewart Hildebrand wrote:
> On 1/15/24 14:44, Stewart Hildebrand wrote:
> > diff --git a/xen/drivers/vpci/header.c b/xen/drivers/vpci/header.c
> > index feccd070ddd0..8483404c5e91 100644
> > --- a/xen/drivers/vpci/header.c
> > +++ b/xen/drivers/vpci/header.c
> > @@ -41,13 +42,24 @@ static int cf_check map_range(
> >      unsigned long s, unsigned long e, void *data, unsigned long *c)
> >  {
> >      const struct map_data *map = data;
> > +    /* Start address of the BAR as seen by the guest. */
> > +    unsigned long start_gfn = PFN_DOWN(map->bar->guest_addr);
> > +    /* Physical start address of the BAR. */
> > +    unsigned long start_mfn = PFN_DOWN(map->bar->addr);
> >      int rc;
> >  
> >      for ( ; ; )
> >      {
> >          unsigned long size = e - s + 1;
> > +        /*
> > +         * Ranges to be mapped don't always start at the BAR start address, as
> > +         * there can be holes or partially consumed ranges. Account for the
> > +         * offset of the current address from the BAR start.
> > +         */
> > +        unsigned long map_mfn = start_mfn + s - start_gfn;
> > +        unsigned long m_end = map_mfn + size - 1;
> >  
> > -        if ( !iomem_access_permitted(map->d, s, e) )
> > +        if ( !iomem_access_permitted(map->d, map_mfn, m_end) )
> 
> Nit: since this check will now use map_mfn and m_end...
> 
> >          {
> >              printk(XENLOG_G_WARNING
> >                     "%pd denied access to MMIO range [%#lx, %#lx]\n",
> >                     map->d, s, e);
> 
> ... I'd like to also update the arguments passed to this print statement.

Indeed.  You will need a new version.

Thanks, Roger.


From xen-devel-bounces@lists.xenproject.org Fri Jan 19 13:50:51 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 19 Jan 2024 13:50:51 +0000
Received: from list by lists.xenproject.org with outflank-mailman.669061.1041658 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQpGf-0005Ar-OY; Fri, 19 Jan 2024 13:50:45 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 669061.1041658; Fri, 19 Jan 2024 13:50:45 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQpGf-0005Ak-LF; Fri, 19 Jan 2024 13:50:45 +0000
Received: by outflank-mailman (input) for mailman id 669061;
 Fri, 19 Jan 2024 13:50:43 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=hPDw=I5=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rQpGd-0005Ae-T1
 for xen-devel@lists.xenproject.org; Fri, 19 Jan 2024 13:50:43 +0000
Received: from mail-lj1-x233.google.com (mail-lj1-x233.google.com
 [2a00:1450:4864:20::233])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id bcc7e43d-b6d1-11ee-98f2-6d05b1d4d9a1;
 Fri, 19 Jan 2024 14:50:42 +0100 (CET)
Received: by mail-lj1-x233.google.com with SMTP id
 38308e7fff4ca-2ce01779f1aso4981591fa.3
 for <xen-devel@lists.xenproject.org>; Fri, 19 Jan 2024 05:50:42 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 y63-20020a029545000000b0046e77bd393dsm1649965jah.144.2024.01.19.05.50.40
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Fri, 19 Jan 2024 05:50:41 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: bcc7e43d-b6d1-11ee-98f2-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1705672242; x=1706277042; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=zBxPh72R3cVWWjj4FvbacfKAiDZjQ8VqCNbpa6/rz1U=;
        b=APQ+jEUNKH1/N5dsYL+tLemJkOmDjjhFHKJ+hTo+yjFMbI2Ko+3B6d9VZnZhKmFAAv
         3vmuVgBsHLr9DvrInSqYW64yL7Nni5FGKq3NcGVMYrGllr5OYqki8DKDil5eQXQiE/t7
         5bzkaJpYJxOl5B0nPkg1OR8yqyGkEZXDyvkFjn5a948Qxj99k9qWvTJs41Denqv9QOFz
         /a4ndBHya52tukFyyeankZIZGA1AiTHRJDD5wfB2K2sePlojtCDjMHfRsWNByHNHJ0N/
         Uk36pJJ9L/5M96gkybwfea0G8R673W0h6e7ZFw3vJKs/8FfGkTjtZpdwEhaVQP+9D4qv
         3B8A==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705672242; x=1706277042;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=zBxPh72R3cVWWjj4FvbacfKAiDZjQ8VqCNbpa6/rz1U=;
        b=OdRiiOUtu4G/s75Vae5djhTLG4IWiQ7QzDkOSa+NsxfbgoFLnURUbUISEnIk5JSe5+
         Ho9iRwsc9cM3vbWQwqktmsUFe/B3YEWsgfopL7HlYBSQFq0Iwyk1j/ijueksnx7rvgVp
         NZNYa4YAp3d6HvlpSwNcoKcvJmKanCJGodrpwGya7ZlAHd9xIEHh794t7+W/zL2m9bPr
         KTgsHwatHw9y62OAwHCsyTC6Fp7soxhdHU6+G+S9ofWfhkC1JYrv8lmDg/vhhFUJYg1i
         zqL61GD0IK6mF9OfPihfvRgMFZoBSk5Fw5laDkSUuvawvvdK5Op4zxkYzkkuHODDmzv3
         0yXQ==
X-Gm-Message-State: AOJu0YytIk3OqhILrMvqwc7adz2efmIOxubRjLp1uopXOIvyvdeG5NJw
	r+Jfzj7gNaXvIDOYY3CjgvJuJUgr9D/h3zJJRMfBlcrqiyElhM3rt1ajZXWPTQ==
X-Google-Smtp-Source: AGHT+IFeaP/vMWVSEFqJAySV6j2sDaDGkc5fmCon8hqAiygW+SHJ1Xpa61bK4sVTwtYaG/p/s18Lhw==
X-Received: by 2002:a2e:8754:0:b0:2cd:39ec:c31d with SMTP id q20-20020a2e8754000000b002cd39ecc31dmr1425681ljj.46.1705672242275;
        Fri, 19 Jan 2024 05:50:42 -0800 (PST)
Message-ID: <8e84f558-a4be-4410-a16a-230864f42a1a@suse.com>
Date: Fri, 19 Jan 2024 14:50:38 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: E820 memory allocation issue on Threadripper platforms
Content-Language: en-US
To: =?UTF-8?Q?Marek_Marczykowski-G=C3=B3recki?=
 <marmarek@invisiblethingslab.com>
Cc: Patrick Plenefisch <simonpatp@gmail.com>, xen-devel@lists.xenproject.org,
 Juergen Gross <jgross@suse.com>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger.pau@citrix.com>
References: <CAOCpoWdOH=xGxiQSC1c5Ueb1THxAjH4WiZbCZq-QT+d_KAk3SA@mail.gmail.com>
 <1708c3d7-662a-44bc-b9b3-4ab9f8642d7b@suse.com>
 <dcaf9d8d-ad5a-4714-936b-79ed0e587f9d@suse.com>
 <CAOCpoWeowZPuQTeBp9nu8p8CDtE=u++wN_UqRoABZtB57D50Qw@mail.gmail.com>
 <ac742d12-ec91-4215-bb42-82a145924b4f@suse.com>
 <CAOCpoWfQmkhN3hms1xuotSUZzVzR99i9cNGGU2r=yD5PjysMiQ@mail.gmail.com>
 <fa23a590-5869-4e11-8998-1d03742c5919@suse.com>
 <CAOCpoWf4CMkCWx8uR2NbFrZrKSS78wj1-hFsAUqsjCfsmqooVA@mail.gmail.com>
 <Zap7uX3k0kfoMOoF@mail-itl>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <Zap7uX3k0kfoMOoF@mail-itl>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 19.01.2024 14:40, Marek Marczykowski-Górecki wrote:
> On Thu, Jan 18, 2024 at 01:23:56AM -0500, Patrick Plenefisch wrote:
>> On Wed, Jan 17, 2024 at 3:46 AM Jan Beulich <jbeulich@suse.com> wrote:
>>> On 17.01.2024 07:12, Patrick Plenefisch wrote:
>>>> As someone who hasn't built a kernel in over a decade, should I figure
>>> out
>>>> how to do a kernel build with CONFIG_PHYSICAL_START=0x2000000 and report
>>>> back?
>>>
>>> That was largely a suggestion to perhaps allow you to gain some
>>> workable setup. It would be of interest to us largely for completeness.
>>>
>>
>> Typo aside, setting the boot to 2MiB works! It works better for PV
> 
> Are there any downsides of running kernel with
> CONFIG_PHYSICAL_START=0x200000? I can confirm it fixes the issue on
> another affected system, and if there aren't any practical downsides,
> I'm tempted to change it the default kernel in Qubes OS.

There must have been a reason to make the default 16Mb. You may want
to fish out the commit doing so ... In Qubes, though, I understand
you're always running with Xen underneath, so unless this same kernel
is also needed to run in HVM guests, some of whatever the reasons may
have been may go away.

Jan


From xen-devel-bounces@lists.xenproject.org Fri Jan 19 14:28:07 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 19 Jan 2024 14:28:07 +0000
Received: from list by lists.xenproject.org with outflank-mailman.669069.1041669 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQpqX-0003Mj-I5; Fri, 19 Jan 2024 14:27:49 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 669069.1041669; Fri, 19 Jan 2024 14:27:49 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQpqX-0003Mc-El; Fri, 19 Jan 2024 14:27:49 +0000
Received: by outflank-mailman (input) for mailman id 669069;
 Fri, 19 Jan 2024 14:27:48 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rQpqW-0003MS-66; Fri, 19 Jan 2024 14:27:48 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rQpqV-0004Vk-Uo; Fri, 19 Jan 2024 14:27:47 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rQpqV-0004Xv-GH; Fri, 19 Jan 2024 14:27:47 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rQpqV-0000J9-Fr; Fri, 19 Jan 2024 14:27:47 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=MGCYApRJbNINXrn41exLDW7+Y43VnlX/ga7gcd/u7Lc=; b=Iqjyl4e8pbG3ApnBrhD+56LbmL
	NKuc0vKzIoD5VyZHCswhGAQsyMc4in9u70IqLIb5gkDXbI48n1u4hsayB7SinEqgxvlplPNP1zxGB
	gxGUITXfxS8h+buA8KSDySDWJSlH6LIBMaHilE0F1GwsTMeZZCxmAPEbi6eFM+zx36Gk=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184401-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [libvirt test] 184401: tolerable all pass - PUSHED
X-Osstest-Failures:
    libvirt:test-armhf-armhf-libvirt:saverestore-support-check:fail:nonblocking
    libvirt:test-armhf-armhf-libvirt-qcow2:saverestore-support-check:fail:nonblocking
    libvirt:test-armhf-armhf-libvirt-raw:saverestore-support-check:fail:nonblocking
    libvirt:test-amd64-amd64-libvirt-xsm:migrate-support-check:fail:nonblocking
    libvirt:test-amd64-i386-libvirt-xsm:migrate-support-check:fail:nonblocking
    libvirt:test-amd64-i386-libvirt:migrate-support-check:fail:nonblocking
    libvirt:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    libvirt:test-arm64-arm64-libvirt:migrate-support-check:fail:nonblocking
    libvirt:test-arm64-arm64-libvirt:saverestore-support-check:fail:nonblocking
    libvirt:test-arm64-arm64-libvirt-xsm:migrate-support-check:fail:nonblocking
    libvirt:test-arm64-arm64-libvirt-xsm:saverestore-support-check:fail:nonblocking
    libvirt:test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    libvirt:test-armhf-armhf-libvirt:migrate-support-check:fail:nonblocking
    libvirt:test-amd64-i386-libvirt-raw:migrate-support-check:fail:nonblocking
    libvirt:test-arm64-arm64-libvirt-qcow2:migrate-support-check:fail:nonblocking
    libvirt:test-arm64-arm64-libvirt-qcow2:saverestore-support-check:fail:nonblocking
    libvirt:test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    libvirt:test-arm64-arm64-libvirt-raw:migrate-support-check:fail:nonblocking
    libvirt:test-arm64-arm64-libvirt-raw:saverestore-support-check:fail:nonblocking
    libvirt:test-amd64-amd64-libvirt-vhd:migrate-support-check:fail:nonblocking
    libvirt:test-armhf-armhf-libvirt-qcow2:migrate-support-check:fail:nonblocking
    libvirt:test-armhf-armhf-libvirt-raw:migrate-support-check:fail:nonblocking
X-Osstest-Versions-This:
    libvirt=8581ec7e68d5d656d7121cf77206b47dc6b261c4
X-Osstest-Versions-That:
    libvirt=5df470f47d02e39a5c6a80e78f54d8ddf98d80af
From: osstest service owner <osstest-admin@xenproject.org>
Date: Fri, 19 Jan 2024 14:27:47 +0000

flight 184401 libvirt real [real]
http://logs.test-lab.xenproject.org/osstest/logs/184401/

Failures :-/ but no regressions.

Tests which did not succeed, but are not blocking:
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 184389
 test-armhf-armhf-libvirt-qcow2 15 saverestore-support-check   fail like 184389
 test-armhf-armhf-libvirt-raw 15 saverestore-support-check    fail  like 184389
 test-amd64-amd64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-amd64-i386-libvirt-xsm  15 migrate-support-check        fail   never pass
 test-amd64-i386-libvirt      15 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt     15 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt     15 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt     16 saverestore-support-check    fail   never pass
 test-arm64-arm64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-xsm 16 saverestore-support-check    fail   never pass
 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-armhf-armhf-libvirt     15 migrate-support-check        fail   never pass
 test-amd64-i386-libvirt-raw  14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-qcow2 14 migrate-support-check        fail never pass
 test-arm64-arm64-libvirt-qcow2 15 saverestore-support-check    fail never pass
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-arm64-arm64-libvirt-raw 14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 15 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-vhd 14 migrate-support-check        fail   never pass
 test-armhf-armhf-libvirt-qcow2 14 migrate-support-check        fail never pass
 test-armhf-armhf-libvirt-raw 14 migrate-support-check        fail   never pass

version targeted for testing:
 libvirt              8581ec7e68d5d656d7121cf77206b47dc6b261c4
baseline version:
 libvirt              5df470f47d02e39a5c6a80e78f54d8ddf98d80af

Last test of basis   184389  2024-01-18 04:20:45 Z    1 days
Testing same since   184401  2024-01-19 04:18:53 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Ján Tomko <jtomko@redhat.com>

jobs:
 build-amd64-xsm                                              pass    
 build-arm64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64                                                  pass    
 build-arm64                                                  pass    
 build-armhf                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-arm64-libvirt                                          pass    
 build-armhf-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-pvops                                            pass    
 build-arm64-pvops                                            pass    
 build-armhf-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm           pass    
 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm            pass    
 test-amd64-amd64-libvirt-xsm                                 pass    
 test-arm64-arm64-libvirt-xsm                                 pass    
 test-amd64-i386-libvirt-xsm                                  pass    
 test-amd64-amd64-libvirt                                     pass    
 test-arm64-arm64-libvirt                                     pass    
 test-armhf-armhf-libvirt                                     pass    
 test-amd64-i386-libvirt                                      pass    
 test-amd64-amd64-libvirt-pair                                pass    
 test-amd64-i386-libvirt-pair                                 pass    
 test-arm64-arm64-libvirt-qcow2                               pass    
 test-armhf-armhf-libvirt-qcow2                               pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-armhf-armhf-libvirt-raw                                 pass    
 test-amd64-i386-libvirt-raw                                  pass    
 test-amd64-amd64-libvirt-vhd                                 pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Pushing revision :

To xenbits.xen.org:/home/xen/git/libvirt.git
   5df470f47d..8581ec7e68  8581ec7e68d5d656d7121cf77206b47dc6b261c4 -> xen-tested-master


From xen-devel-bounces@lists.xenproject.org Fri Jan 19 14:29:21 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 19 Jan 2024 14:29:21 +0000
Received: from list by lists.xenproject.org with outflank-mailman.669076.1041678 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQps0-0004Mg-03; Fri, 19 Jan 2024 14:29:20 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 669076.1041678; Fri, 19 Jan 2024 14:29:19 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQprz-0004MZ-TX; Fri, 19 Jan 2024 14:29:19 +0000
Received: by outflank-mailman (input) for mailman id 669076;
 Fri, 19 Jan 2024 14:29:18 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=pcJV=I5=amd.com=Stewart.Hildebrand@srs-se1.protection.inumbo.net>)
 id 1rQpry-0004MP-CQ
 for xen-devel@lists.xenproject.org; Fri, 19 Jan 2024 14:29:18 +0000
Received: from NAM04-BN8-obe.outbound.protection.outlook.com
 (mail-bn8nam04on20600.outbound.protection.outlook.com
 [2a01:111:f403:2408::600])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 1ed0b1ef-b6d7-11ee-9b0f-b553b5be7939;
 Fri, 19 Jan 2024 15:29:15 +0100 (CET)
Received: from DS7PR07CA0006.namprd07.prod.outlook.com (2603:10b6:5:3af::16)
 by DS0PR12MB9421.namprd12.prod.outlook.com (2603:10b6:8:1a1::20) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7202.26; Fri, 19 Jan
 2024 14:29:11 +0000
Received: from DS1PEPF00017095.namprd03.prod.outlook.com
 (2603:10b6:5:3af:cafe::e2) by DS7PR07CA0006.outlook.office365.com
 (2603:10b6:5:3af::16) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7202.26 via Frontend
 Transport; Fri, 19 Jan 2024 14:29:11 +0000
Received: from SATLEXMB04.amd.com (165.204.84.17) by
 DS1PEPF00017095.mail.protection.outlook.com (10.167.17.138) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.7202.16 via Frontend Transport; Fri, 19 Jan 2024 14:29:10 +0000
Received: from SATLEXMB04.amd.com (10.181.40.145) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.34; Fri, 19 Jan
 2024 08:29:04 -0600
Received: from ubuntu.mshome.net (10.180.168.240) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server id 15.1.2507.34 via Frontend
 Transport; Fri, 19 Jan 2024 08:29:03 -0600
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 1ed0b1ef-b6d7-11ee-9b0f-b553b5be7939
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=VtXSPLhKIEF30NbhvfwIZtVK80mgO0yNvvpg3bt0V4NMVozLzRYgrOdR40tI0nX95RvwKlYuxH3/0/D2ZVOxjQKuNv3AfQ69hFVdJSiQqFu0Pi/H6hHkRIcYOtvqiWO2/aswAQoIatrLgT4A7sLdU3uh8fi9V75Mmsk3bOMu/DnIzryzi8YBeiYvr8gmupbMypcidN2Z7dEBMSSeYSXuRGk+J7iVy/U/MkwD2VOILQhqENUtGyFNIG88ycoD4sN1eulGbVPg0Ll3QbbuOxfpWNtroO7bormgoOhtjxgxhhryuPq1NwXF+7uYntM+GCKPEh7NlBV4FJyzjchXjXkZxg==
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=T5c7FbiauZQRbwJWxO6xouPR92M80IKFNCtrbi9RHHA=;
 b=ZhELJoFm6U9p2Y5vpdAQEohhwyKSQQW0DTUreXOxl0Oa59/zcAAy8brWJBABRr9yKVyxCzVxbiE3foJIjt0FcD0D5P9XCgPhebmYHLyT5RZFF63i5W+GD2nVGQIMdJohgfDKwgxcXsTfxLXgaKixGXHRs42gZX87cR+K3K75zPyjTyvu0r7miX8ilH/6tZ18BKG9uj7XXk+prtkvCyhmQ9Qhh3yHh8duN60OYpPIp2umF+b+hr6J0yyWBgUzbkJussoamPH4N4t2QdluluZ8bELmo1hl2W/4knLh4XZ0Ot1tz7LuGvF08nB7XjOOI2aFrqPKL+CFDNAtB0tM8+RqoA==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=lists.xenproject.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)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=T5c7FbiauZQRbwJWxO6xouPR92M80IKFNCtrbi9RHHA=;
 b=dsM22jE8Qp3rW6opn87gWl44b1FkU6yeauMm9Xr9dq6kieFvhHQgc4/ctA9N6+fNIHtCV/p83rJ94PqWH6QP1Cm9HI6shM6qcUS+ExAO0S+0xR+q7qKR6Y35QTDiYC4qdaLwd4QKtbgu5yw5wOTSUZ8GvJtE2FlAzuhq6pJgcUc=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C
From: Stewart Hildebrand <stewart.hildebrand@amd.com>
To: <xen-devel@lists.xenproject.org>
CC: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>, "Daniel P.
 Smith" <dpsmith@apertussolutions.com>, Volodymyr Babchuk
	<volodymyr_babchuk@epam.com>, Stewart Hildebrand <stewart.hildebrand@amd.com>
Subject: [PATCH v12.3 09/15] vpci/header: program p2m with guest BAR view
Date: Fri, 19 Jan 2024 09:28:55 -0500
Message-ID: <20240119142856.358583-1-stewart.hildebrand@amd.com>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20240109215145.430207-10-stewart.hildebrand@amd.com>
References: <20240109215145.430207-1-stewart.hildebrand@amd.com> <20240109215145.430207-10-stewart.hildebrand@amd.com>
MIME-Version: 1.0
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: DS1PEPF00017095:EE_|DS0PR12MB9421:EE_
X-MS-Office365-Filtering-Correlation-Id: a3268228-e3f3-4dd8-7ee3-08dc18fb00c5
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam: BCL:0;
X-Microsoft-Antispam-Message-Info:
	1FBQoReOUHiZWltUBNchdgE57BArN6UwHMEIYXrw1JYYGeO7ogWIj7JOqx6APwLYLXmcrVu4cg1f+14Q5T2mIIeLqhgQPsVgELDuBhWG3oia7ABvrEwTxp0QvabBkAOts3sMkjnECvPyQZqNzHuy1xD545Q5YHNhH6CzxrppzHPVeniCKx0atAKIEbekVemjC94xqmkvTIN2BpkqUvhD1EaSDdH5his9Io9scwtIXGD1G9nerFPbICZZBgOjnbyvY0c9shO12eRrC9O3lO2XMXtqX4d6N2jPqcaK2+hCl4d0jIXRWrRAQ18LYS+yS4oaqVcRD4+DwTjjGhvtSbYQPiuzIrMavoxKb5f6E6VFlxvlYSrlXs6W3v7dmpaeYT0FdqHN6K9sF1TjBUvR9SuiX/FN1oVtFzz7EGDZ9hj8//nFMKmKVHpTvT5P/82aAXOUJdzQSuvi+xVuRWVLJtvCiDd/8+X6nX6BlYKTBD0Uae180hLjcA7LnW4QZ3cHf8Y8DQEUFHLaWv7bTqD4Am2gXmRFxWIn7nQVVfAF7dtbT4E8M7EjgGu5hVTkQhMgzPz/fXHcT20qyOB36FOUI11t2vvjkG+/lbkecZXQ6UvdQEo0Csxq1KBQNYua1EOX7oPIKlHliaxf6WXEibnSgwCR4oBgG33Ob6NOVRPbTZrYwLxi+btKbA3sPmr9Z4fsy2i8iMEwacrSESaN4k12US1fk1oWs0H2+GwO6CNDFl0YGp0EDSFUARMRvSSVWmfXcZJt8+/PUcsOGwswQldpUtS0GMmpUy2LCOLh/XiZHyfTuNJK0xDpU1NRm674iQPCMMpe
X-Forefront-Antispam-Report:
	CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230031)(4636009)(376002)(136003)(346002)(396003)(39860400002)(230173577357003)(230273577357003)(230922051799003)(64100799003)(82310400011)(186009)(1800799012)(451199024)(46966006)(40470700004)(36840700001)(40460700003)(40480700001)(6666004)(336012)(426003)(26005)(1076003)(2616005)(81166007)(86362001)(82740400003)(36756003)(356005)(41300700001)(44832011)(83380400001)(36860700001)(5660300002)(2906002)(30864003)(47076005)(8936002)(8676002)(4326008)(478600001)(70586007)(70206006)(316002)(54906003)(6916009)(36900700001);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 19 Jan 2024 14:29:10.7787
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: a3268228-e3f3-4dd8-7ee3-08dc18fb00c5
X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com]
X-MS-Exchange-CrossTenant-AuthSource:
	DS1PEPF00017095.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS0PR12MB9421

From: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>

Take into account guest's BAR view and program its p2m accordingly:
gfn is guest's view of the BAR and mfn is the physical BAR value.
This way hardware domain sees physical BAR values and guest sees
emulated ones.

Hardware domain continues getting the BARs identity mapped, while for
domUs the BARs are mapped at the requested guest address without
modifying the BAR address in the device PCI config space.

Signed-off-by: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>
Signed-off-by: Volodymyr Babchuk <volodymyr_babchuk@epam.com>
Signed-off-by: Stewart Hildebrand <stewart.hildebrand@amd.com>
Reviewed-by: Roger Pau Monné <roger.pau@citrix.com>
---
In v12.3:
- Update arguments passed to permission error prints in map_range()
In v12.2:
- Slightly tweak print format in modify_bars()
In v12.1:
- ASSERT(rangeset_is_empty()) in modify_bars()
- Fixup print format in modify_bars()
- Make comment single line in bar_write()
- Add Roger's R-b
In v12:
- Update guest_addr in rom_write()
- Use unsigned long for start_mfn and map_mfn to reduce mfn_x() calls
- Use existing vmsix_table_*() functions
- Change vmsix_table_base() to use .guest_addr
In v11:
- Add vmsix_guest_table_addr() and vmsix_guest_table_base() functions
  to access guest's view of the VMSIx tables.
- Use MFN (not GFN) to check access permissions
- Move page offset check to this patch
- Call rangeset_remove_range() with correct parameters
In v10:
- Moved GFN variable definition outside the loop in map_range()
- Updated printk error message in map_range()
- Now BAR address is always stored in bar->guest_addr, even for
  HW dom, this removes bunch of ugly is_hwdom() checks in modify_bars()
- vmsix_table_base() now uses .guest_addr instead of .addr
In v9:
- Extended the commit message
- Use bar->guest_addr in modify_bars
- Extended printk error message in map_range
- Moved map_data initialization so .bar can be initialized during declaration
Since v5:
- remove debug print in map_range callback
- remove "identity" from the debug print
Since v4:
- moved start_{gfn|mfn} calculation into map_range
- pass vpci_bar in the map_data instead of start_{gfn|mfn}
- s/guest_addr/guest_reg
Since v3:
- updated comment (Roger)
- removed gfn_add(map->start_gfn, rc); which is wrong
- use v->domain instead of v->vpci.pdev->domain
- removed odd e.g. in comment
- s/d%d/%pd in altered code
- use gdprintk for map/unmap logs
Since v2:
- improve readability for data.start_gfn and restructure ?: construct
Since v1:
 - s/MSI/MSI-X in comments
---
 xen/drivers/vpci/header.c | 84 ++++++++++++++++++++++++++++++---------
 xen/include/xen/vpci.h    |  3 +-
 2 files changed, 67 insertions(+), 20 deletions(-)

diff --git a/xen/drivers/vpci/header.c b/xen/drivers/vpci/header.c
index feccd070ddd0..61f0660a9b0a 100644
--- a/xen/drivers/vpci/header.c
+++ b/xen/drivers/vpci/header.c
@@ -34,6 +34,7 @@
 
 struct map_data {
     struct domain *d;
+    const struct vpci_bar *bar;
     bool map;
 };
 
@@ -41,26 +42,38 @@ static int cf_check map_range(
     unsigned long s, unsigned long e, void *data, unsigned long *c)
 {
     const struct map_data *map = data;
+    /* Start address of the BAR as seen by the guest. */
+    unsigned long start_gfn = PFN_DOWN(map->bar->guest_addr);
+    /* Physical start address of the BAR. */
+    unsigned long start_mfn = PFN_DOWN(map->bar->addr);
     int rc;
 
     for ( ; ; )
     {
         unsigned long size = e - s + 1;
+        /*
+         * Ranges to be mapped don't always start at the BAR start address, as
+         * there can be holes or partially consumed ranges. Account for the
+         * offset of the current address from the BAR start.
+         */
+        unsigned long map_mfn = start_mfn + s - start_gfn;
+        unsigned long m_end = map_mfn + size - 1;
 
-        if ( !iomem_access_permitted(map->d, s, e) )
+        if ( !iomem_access_permitted(map->d, map_mfn, m_end) )
         {
             printk(XENLOG_G_WARNING
                    "%pd denied access to MMIO range [%#lx, %#lx]\n",
-                   map->d, s, e);
+                   map->d, map_mfn, m_end);
             return -EPERM;
         }
 
-        rc = xsm_iomem_mapping(XSM_HOOK, map->d, s, e, map->map);
+        rc = xsm_iomem_mapping(XSM_HOOK, map->d, map_mfn, m_end,
+                               map->map);
         if ( rc )
         {
             printk(XENLOG_G_WARNING
                    "%pd XSM denied access to MMIO range [%#lx, %#lx]: %d\n",
-                   map->d, s, e, rc);
+                   map->d, map_mfn, m_end, rc);
             return rc;
         }
 
@@ -73,8 +86,8 @@ static int cf_check map_range(
          * - {un}map_mmio_regions doesn't support preemption.
          */
 
-        rc = map->map ? map_mmio_regions(map->d, _gfn(s), size, _mfn(s))
-                      : unmap_mmio_regions(map->d, _gfn(s), size, _mfn(s));
+        rc = map->map ? map_mmio_regions(map->d, _gfn(s), size, _mfn(map_mfn))
+                      : unmap_mmio_regions(map->d, _gfn(s), size, _mfn(map_mfn));
         if ( rc == 0 )
         {
             *c += size;
@@ -83,8 +96,9 @@ static int cf_check map_range(
         if ( rc < 0 )
         {
             printk(XENLOG_G_WARNING
-                   "Failed to identity %smap [%lx, %lx] for d%d: %d\n",
-                   map->map ? "" : "un", s, e, map->d->domain_id, rc);
+                   "Failed to %smap [%lx %lx] -> [%lx %lx] for %pd: %d\n",
+                   map->map ? "" : "un", s, e, map_mfn,
+                   map_mfn + size, map->d, rc);
             break;
         }
         ASSERT(rc < size);
@@ -163,10 +177,6 @@ static void modify_decoding(const struct pci_dev *pdev, uint16_t cmd,
 bool vpci_process_pending(struct vcpu *v)
 {
     struct pci_dev *pdev = v->vpci.pdev;
-    struct map_data data = {
-        .d = v->domain,
-        .map = v->vpci.cmd & PCI_COMMAND_MEMORY,
-    };
     struct vpci_header *header = NULL;
     unsigned int i;
 
@@ -186,6 +196,11 @@ bool vpci_process_pending(struct vcpu *v)
     for ( i = 0; i < ARRAY_SIZE(header->bars); i++ )
     {
         struct vpci_bar *bar = &header->bars[i];
+        struct map_data data = {
+            .d = v->domain,
+            .map = v->vpci.cmd & PCI_COMMAND_MEMORY,
+            .bar = bar,
+        };
         int rc;
 
         if ( rangeset_is_empty(bar->mem) )
@@ -236,7 +251,6 @@ bool vpci_process_pending(struct vcpu *v)
 static int __init apply_map(struct domain *d, const struct pci_dev *pdev,
                             uint16_t cmd)
 {
-    struct map_data data = { .d = d, .map = true };
     struct vpci_header *header = &pdev->vpci->header;
     int rc = 0;
     unsigned int i;
@@ -246,6 +260,7 @@ static int __init apply_map(struct domain *d, const struct pci_dev *pdev,
     for ( i = 0; i < ARRAY_SIZE(header->bars); i++ )
     {
         struct vpci_bar *bar = &header->bars[i];
+        struct map_data data = { .d = d, .map = true, .bar = bar };
 
         if ( rangeset_is_empty(bar->mem) )
             continue;
@@ -311,12 +326,16 @@ static int modify_bars(const struct pci_dev *pdev, uint16_t cmd, bool rom_only)
      * First fill the rangesets with the BAR of this device or with the ROM
      * BAR only, depending on whether the guest is toggling the memory decode
      * bit of the command register, or the enable bit of the ROM BAR register.
+     *
+     * For non-hardware domain we use guest physical addresses.
      */
     for ( i = 0; i < ARRAY_SIZE(header->bars); i++ )
     {
         struct vpci_bar *bar = &header->bars[i];
         unsigned long start = PFN_DOWN(bar->addr);
         unsigned long end = PFN_DOWN(bar->addr + bar->size - 1);
+        unsigned long start_guest = PFN_DOWN(bar->guest_addr);
+        unsigned long end_guest = PFN_DOWN(bar->guest_addr + bar->size - 1);
 
         if ( !bar->mem )
             continue;
@@ -336,11 +355,26 @@ static int modify_bars(const struct pci_dev *pdev, uint16_t cmd, bool rom_only)
             continue;
         }
 
-        rc = rangeset_add_range(bar->mem, start, end);
+        ASSERT(rangeset_is_empty(bar->mem));
+
+        /*
+         * Make sure that the guest set address has the same page offset
+         * as the physical address on the host or otherwise things won't work as
+         * expected.
+         */
+        if ( PAGE_OFFSET(bar->guest_addr) != PAGE_OFFSET(bar->addr) )
+        {
+            gprintk(XENLOG_G_WARNING,
+                    "%pp: can't map BAR%u - offset mismatch: %#lx vs %#lx\n",
+                    &pdev->sbdf, i, bar->guest_addr, bar->addr);
+            return -EINVAL;
+        }
+
+        rc = rangeset_add_range(bar->mem, start_guest, end_guest);
         if ( rc )
         {
             printk(XENLOG_G_WARNING "Failed to add [%lx, %lx]: %d\n",
-                   start, end, rc);
+                   start_guest, end_guest, rc);
             return rc;
         }
 
@@ -352,12 +386,12 @@ static int modify_bars(const struct pci_dev *pdev, uint16_t cmd, bool rom_only)
             if ( rangeset_is_empty(prev_bar->mem) )
                 continue;
 
-            rc = rangeset_remove_range(prev_bar->mem, start, end);
+            rc = rangeset_remove_range(prev_bar->mem, start_guest, end_guest);
             if ( rc )
             {
                 gprintk(XENLOG_WARNING,
                        "%pp: failed to remove overlapping range [%lx, %lx]: %d\n",
-                        &pdev->sbdf, start, end, rc);
+                        &pdev->sbdf, start_guest, end_guest, rc);
                 return rc;
             }
         }
@@ -425,8 +459,8 @@ static int modify_bars(const struct pci_dev *pdev, uint16_t cmd, bool rom_only)
             for ( i = 0; i < ARRAY_SIZE(tmp->vpci->header.bars); i++ )
             {
                 const struct vpci_bar *remote_bar = &tmp->vpci->header.bars[i];
-                unsigned long start = PFN_DOWN(remote_bar->addr);
-                unsigned long end = PFN_DOWN(remote_bar->addr +
+                unsigned long start = PFN_DOWN(remote_bar->guest_addr);
+                unsigned long end = PFN_DOWN(remote_bar->guest_addr +
                                              remote_bar->size - 1);
 
                 if ( !remote_bar->enabled )
@@ -513,6 +547,8 @@ static void cf_check bar_write(
     struct vpci_bar *bar = data;
     bool hi = false;
 
+    ASSERT(is_hardware_domain(pdev->domain));
+
     if ( bar->type == VPCI_BAR_MEM64_HI )
     {
         ASSERT(reg > PCI_BASE_ADDRESS_0);
@@ -543,6 +579,8 @@ static void cf_check bar_write(
      */
     bar->addr &= ~(0xffffffffULL << (hi ? 32 : 0));
     bar->addr |= (uint64_t)val << (hi ? 32 : 0);
+    /* Update guest address, so hardware domain BAR is identity mapped. */
+    bar->guest_addr = bar->addr;
 
     /* Make sure Xen writes back the same value for the BAR RO bits. */
     if ( !hi )
@@ -639,11 +677,14 @@ static void cf_check rom_write(
     }
 
     if ( !rom->enabled )
+    {
         /*
          * If the ROM BAR is not mapped update the address field so the
          * correct address is mapped into the p2m.
          */
         rom->addr = val & PCI_ROM_ADDRESS_MASK;
+        rom->guest_addr = rom->addr;
+    }
 
     if ( !header->bars_mapped || rom->enabled == new_enabled )
     {
@@ -667,7 +708,10 @@ static void cf_check rom_write(
         return;
 
     if ( !new_enabled )
+    {
         rom->addr = val & PCI_ROM_ADDRESS_MASK;
+        rom->guest_addr = rom->addr;
+    }
 }
 
 static int bar_add_rangeset(const struct pci_dev *pdev, struct vpci_bar *bar,
@@ -862,6 +906,7 @@ static int cf_check init_header(struct pci_dev *pdev)
         }
 
         bars[i].addr = addr;
+        bars[i].guest_addr = addr;
         bars[i].size = size;
         bars[i].prefetchable = val & PCI_BASE_ADDRESS_MEM_PREFETCH;
 
@@ -884,6 +929,7 @@ static int cf_check init_header(struct pci_dev *pdev)
         rom->type = VPCI_BAR_ROM;
         rom->size = size;
         rom->addr = addr;
+        rom->guest_addr = addr;
         header->rom_enabled = pci_conf_read32(pdev->sbdf, rom_reg) &
                               PCI_ROM_ADDRESS_ENABLE;
 
diff --git a/xen/include/xen/vpci.h b/xen/include/xen/vpci.h
index 817ee9ee7300..e89c571890b2 100644
--- a/xen/include/xen/vpci.h
+++ b/xen/include/xen/vpci.h
@@ -216,7 +216,8 @@ int vpci_msix_arch_print(const struct vpci_msix *msix);
  */
 static inline paddr_t vmsix_table_base(const struct vpci *vpci, unsigned int nr)
 {
-    return vpci->header.bars[vpci->msix->tables[nr] & PCI_MSIX_BIRMASK].addr;
+    return vpci->header.bars[vpci->msix->tables[nr] &
+                             PCI_MSIX_BIRMASK].guest_addr;
 }
 
 static inline paddr_t vmsix_table_addr(const struct vpci *vpci, unsigned int nr)
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Fri Jan 19 14:31:43 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 19 Jan 2024 14:31:43 +0000
Received: from list by lists.xenproject.org with outflank-mailman.669079.1041689 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQpuI-00068W-DD; Fri, 19 Jan 2024 14:31:42 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 669079.1041689; Fri, 19 Jan 2024 14:31:42 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQpuI-00068P-AM; Fri, 19 Jan 2024 14:31:42 +0000
Received: by outflank-mailman (input) for mailman id 669079;
 Fri, 19 Jan 2024 14:31:41 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=TJ2q=I5=invisiblethingslab.com=marmarek@srs-se1.protection.inumbo.net>)
 id 1rQpuH-00068J-DV
 for xen-devel@lists.xenproject.org; Fri, 19 Jan 2024 14:31:41 +0000
Received: from wout4-smtp.messagingengine.com (wout4-smtp.messagingengine.com
 [64.147.123.20]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 74625087-b6d7-11ee-9b0f-b553b5be7939;
 Fri, 19 Jan 2024 15:31:39 +0100 (CET)
Received: from compute5.internal (compute5.nyi.internal [10.202.2.45])
 by mailout.west.internal (Postfix) with ESMTP id 9DC3D3200A90;
 Fri, 19 Jan 2024 09:31:36 -0500 (EST)
Received: from mailfrontend2 ([10.202.2.163])
 by compute5.internal (MEProxy); Fri, 19 Jan 2024 09:31:37 -0500
Received: by mail.messagingengine.com (Postfix) with ESMTPA; Fri,
 19 Jan 2024 09:31:34 -0500 (EST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 74625087-b6d7-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=
	invisiblethingslab.com; h=cc:cc:content-type:content-type:date
	:date:from:from:in-reply-to:in-reply-to:message-id:mime-version
	:references:reply-to:subject:subject:to:to; s=fm2; t=1705674696;
	 x=1705761096; bh=HzQff4VOgNm4g3uxtYYHlNnWQahaduPuU5y/81EYHEA=; b=
	Qk1VFoHPHWqrvaW4YV1xsvlFPftxAesGfeY0zQG3SQGzb6/HPeZcqRPDdScC85oQ
	OhVwHKnH0iJn3nayruUZLpW2w2m3Ob7kV8gFB4cm1tS7Np7vAVXbG6CC8NPlwOLY
	YKBX9j4LGTaVGhnvZao1yOkG3bPY9w1OIP7A6/jWhK+QWXI2H5mbg9pnI22ro2VV
	YYLFcVabLkycZKP0wjVQz4erSkllm3LYMlFNo6MlLQN0LdomScUZez1DFOMgV8Bs
	BEaGC5BXvCfdH0sloFQg8gprOnptSvGkwpj8VM7LLmmL6l4qC4yuoRCFeeDM7xqO
	+GXqAMcNMqho/tGkgIjy4w==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=
	messagingengine.com; h=cc:cc:content-type:content-type:date:date
	:feedback-id:feedback-id:from:from:in-reply-to:in-reply-to
	:message-id:mime-version:references:reply-to:subject:subject:to
	:to:x-me-proxy:x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s=
	fm3; t=1705674696; x=1705761096; bh=HzQff4VOgNm4g3uxtYYHlNnWQaha
	duPuU5y/81EYHEA=; b=aTrlnqnGYxfzCasqQquKLeHzjeLDykX32VZfe6NQvC2o
	kepviPKORovtfAAtpn0cd2+znyu7plM0TvCLbhCw7QsnP5Mb1jfdwdFpuxaocNNj
	OvFuh+FFfdnjLeoLQXUGpNCyXjNrh+ZpLvn7G4Cj6kppNrK7Yeu+9U0LTbPoNTGb
	S+Igg2e9L6JoJ945taalUBpSpNto02hhDjQSSmyhuzyvWW6qH9qJm9yxCT3riI6r
	ZjC0IsfOeuf0Hv2hLEWNnWOOaPrTxQ4+kKz/AxnRWAQhWCzJYtMbahHt9/wI3PZn
	U7vR19NNvcKOq3J9UbClPS7ywlFKyhgIe4Djz7VGNQ==
X-ME-Sender: <xms:x4eqZcXsm7bmxUsTgpo_iTUgaKzkcb08AVpoCF-_sb_2vUlDjX0NPQ>
    <xme:x4eqZQnqrjraGn3pCuLgyo6Xl2Zd6IjG0We6zJQh-U_JU4_rS58S5XkfdDgwqvGXM
    Cgo_0ZkpsXIHQ>
X-ME-Received: <xmr:x4eqZQYUaqitTJ9OiRMT1Izw3fJbAnX91hsWUlmUQMW6AmeZX55FBi8Fr4RyjA002MXsPrsn7vsrsLXVGolHoTH-drCLTbeBmQ>
X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvkedrvdektddgieegucetufdoteggodetrfdotf
    fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen
    uceurghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmne
    cujfgurhepfffhvfevuffkfhggtggujgesghdtreertddtjeenucfhrhhomhepofgrrhgv
    khcuofgrrhgtiiihkhhofihskhhiqdfikphrvggtkhhiuceomhgrrhhmrghrvghksehinh
    hvihhsihgslhgvthhhihhnghhslhgrsgdrtghomheqnecuggftrfgrthhtvghrnhepieel
    uddvkeejueekhfffteegfeeiffefjeejvdeijedvgfejheetuddvkeffudeinecuffhomh
    grihhnpehkvghrnhgvlhdrohhrghenucevlhhushhtvghrufhiiigvpedtnecurfgrrhgr
    mhepmhgrihhlfhhrohhmpehmrghrmhgrrhgvkhesihhnvhhishhisghlvghthhhinhhgsh
    hlrggsrdgtohhm
X-ME-Proxy: <xmx:x4eqZbVWk_FA1jaHfV_tX9MFJboD1Lzvw_uWvVaolbbaYcBGnM1IDw>
    <xmx:x4eqZWlNwlwBenn9ggVyQRS85NEjyP2h3fVuPXwPCp-kOxPi9HesJQ>
    <xmx:x4eqZQfo-ft9-0CGiTHB8gf_vJkSnK-ZfKwUPeu2FS0QQnuWzto6Cw>
    <xmx:yIeqZbw-GMdtrz3q7e-e75ZbczDLAdcKKMxEBPOJOsOTmR1-cRTMuw>
Feedback-ID: i1568416f:Fastmail
Date: Fri, 19 Jan 2024 15:31:32 +0100
From: Marek =?utf-8?Q?Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
To: Jan Beulich <jbeulich@suse.com>
Cc: Patrick Plenefisch <simonpatp@gmail.com>,
	xen-devel@lists.xenproject.org, Juergen Gross <jgross@suse.com>,
	Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
Subject: Re: E820 memory allocation issue on Threadripper platforms
Message-ID: <ZaqHxOGCDGJ2SDTJ@mail-itl>
References: <CAOCpoWdOH=xGxiQSC1c5Ueb1THxAjH4WiZbCZq-QT+d_KAk3SA@mail.gmail.com>
 <1708c3d7-662a-44bc-b9b3-4ab9f8642d7b@suse.com>
 <dcaf9d8d-ad5a-4714-936b-79ed0e587f9d@suse.com>
 <CAOCpoWeowZPuQTeBp9nu8p8CDtE=u++wN_UqRoABZtB57D50Qw@mail.gmail.com>
 <ac742d12-ec91-4215-bb42-82a145924b4f@suse.com>
 <CAOCpoWfQmkhN3hms1xuotSUZzVzR99i9cNGGU2r=yD5PjysMiQ@mail.gmail.com>
 <fa23a590-5869-4e11-8998-1d03742c5919@suse.com>
 <CAOCpoWf4CMkCWx8uR2NbFrZrKSS78wj1-hFsAUqsjCfsmqooVA@mail.gmail.com>
 <Zap7uX3k0kfoMOoF@mail-itl>
 <8e84f558-a4be-4410-a16a-230864f42a1a@suse.com>
MIME-Version: 1.0
Content-Type: multipart/signed; micalg=pgp-sha256;
	protocol="application/pgp-signature"; boundary="qE89MEZuomnIOOaK"
Content-Disposition: inline
In-Reply-To: <8e84f558-a4be-4410-a16a-230864f42a1a@suse.com>


--qE89MEZuomnIOOaK
Content-Type: text/plain; protected-headers=v1; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable
Date: Fri, 19 Jan 2024 15:31:32 +0100
From: Marek =?utf-8?Q?Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
To: Jan Beulich <jbeulich@suse.com>
Cc: Patrick Plenefisch <simonpatp@gmail.com>,
	xen-devel@lists.xenproject.org, Juergen Gross <jgross@suse.com>,
	Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
Subject: Re: E820 memory allocation issue on Threadripper platforms

On Fri, Jan 19, 2024 at 02:50:38PM +0100, Jan Beulich wrote:
> On 19.01.2024 14:40, Marek Marczykowski-G=C3=B3recki wrote:
> > On Thu, Jan 18, 2024 at 01:23:56AM -0500, Patrick Plenefisch wrote:
> >> On Wed, Jan 17, 2024 at 3:46=E2=80=AFAM Jan Beulich <jbeulich@suse.com=
> wrote:
> >>> On 17.01.2024 07:12, Patrick Plenefisch wrote:
> >>>> As someone who hasn't built a kernel in over a decade, should I figu=
re
> >>> out
> >>>> how to do a kernel build with CONFIG_PHYSICAL_START=3D0x2000000 and =
report
> >>>> back?
> >>>
> >>> That was largely a suggestion to perhaps allow you to gain some
> >>> workable setup. It would be of interest to us largely for completenes=
s.
> >>>
> >>
> >> Typo aside, setting the boot to 2MiB works! It works better for PV
> >=20
> > Are there any downsides of running kernel with
> > CONFIG_PHYSICAL_START=3D0x200000? I can confirm it fixes the issue on
> > another affected system, and if there aren't any practical downsides,
> > I'm tempted to change it the default kernel in Qubes OS.
>=20
> There must have been a reason to make the default 16Mb. You may want
> to fish out the commit doing so ...=20

https://git.kernel.org/torvalds/c/ceefccc93932b920

    Default CONFIG_PHYSICAL_START and CONFIG_PHYSICAL_ALIGN each to 16 MB,
    so that both non-relocatable and relocatable kernels are loaded at
    16 MB by a non-relocating bootloader.  This is somewhat hacky, but it
    appears to be the only way to do this that does not break some some
    set of existing bootloaders.

    We want to avoid the bottom 16 MB because of large page breakup,
    memory holes, and ZONE_DMA.  Embedded systems may need to reduce this,
    or update their bootloaders to be aware of the new min_alignment field.

Large pages (in practice) do not apply to PV dom0, but other points
could in theory. That said, I checked few other systems and I don't see
any reserved regions there (there is large usable region at 0x100000,
other reserved regions are near the 4GB boundary).
This isn't very representative sample, though...

> In Qubes, though, I understand
> you're always running with Xen underneath, so unless this same kernel
> is also needed to run in HVM guests, some of whatever the reasons may
> have been may go away.

The same kernel is used for PVH/HVM guests too.

--=20
Best Regards,
Marek Marczykowski-G=C3=B3recki
Invisible Things Lab

--qE89MEZuomnIOOaK
Content-Type: application/pgp-signature; name="signature.asc"

-----BEGIN PGP SIGNATURE-----

iQEzBAEBCAAdFiEEhrpukzGPukRmQqkK24/THMrX1ywFAmWqh8QACgkQ24/THMrX
1yywvQf/aP4oCph4GZC2yNfBzcEju5ZfZ9ofMOhDg5t/byFZQ7ZBS3ZCUwPo+aYy
KDvnidfszWbZYK+UPF6QE/Cikf1l3fRKpcJ3rMPF29U2GK63oz33+NicDA0+Vx4/
pQuGwKVTqoENRdCWMs84Z8IXXhrkgGcAxpAt0qykiIJf6KUCrh9BwfRvgJKyNSPE
zAPOogtIeD36gCUmTXokLBi43qoiM4LF1kpxDYYoGrV+Lu7Ao7ywRMoxJkdTkUxD
PsKuzFD5evS1r6CEVxSkEtZcbqFqUIG51qy+8TpjBe+VnXogazr82FK5X6/fH/DE
aiydzH1dzRp5PvBnQ75M3gtUcFhXsA==
=OYO+
-----END PGP SIGNATURE-----

--qE89MEZuomnIOOaK--


From xen-devel-bounces@lists.xenproject.org Fri Jan 19 15:25:35 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 19 Jan 2024 15:25:35 +0000
Received: from list by lists.xenproject.org with outflank-mailman.669087.1041699 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQqkL-0008Sg-8E; Fri, 19 Jan 2024 15:25:29 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 669087.1041699; Fri, 19 Jan 2024 15:25:29 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQqkL-0008SZ-46; Fri, 19 Jan 2024 15:25:29 +0000
Received: by outflank-mailman (input) for mailman id 669087;
 Fri, 19 Jan 2024 15:25:28 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=T4r6=I5=cloud.com=anthony.perard@srs-se1.protection.inumbo.net>)
 id 1rQqkK-0008ST-A3
 for xen-devel@lists.xenproject.org; Fri, 19 Jan 2024 15:25:28 +0000
Received: from mail-wm1-x332.google.com (mail-wm1-x332.google.com
 [2a00:1450:4864:20::332])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id f75236ee-b6de-11ee-9b0f-b553b5be7939;
 Fri, 19 Jan 2024 16:25:24 +0100 (CET)
Received: by mail-wm1-x332.google.com with SMTP id
 5b1f17b1804b1-40e86a9fc4bso11000135e9.2
 for <xen-devel@lists.xenproject.org>; Fri, 19 Jan 2024 07:25:24 -0800 (PST)
Received: from perard.uk.xensource.com (default-46-102-197-194.interdsl.co.uk.
 [46.102.197.194]) by smtp.gmail.com with ESMTPSA id
 je6-20020a05600c1f8600b0040d8d11bf63sm29590142wmb.41.2024.01.19.07.25.23
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Fri, 19 Jan 2024 07:25:23 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: f75236ee-b6de-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1705677924; x=1706282724; darn=lists.xenproject.org;
        h=in-reply-to:content-disposition:mime-version:references:message-id
         :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to;
        bh=fVJXFXMkRp7aAw/JMBSv8qGqP0OKVxflwcH46R8G7q4=;
        b=plZvf8Ff7q5YyQUZhCc2sRbhTwVKXQQPXcErlqzYW4X/KjTcWqAOOjJN4MbHjfgpKH
         Q7JNON5KMrd6R1HpR6UesLamsYJLPZ879w4o1C8z/1PcfDJ4LF3iwhJk89jAl2QJXncR
         WAL2f+T8fFfbN9NMivHaZfld2AMf5wl81Iphk=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705677924; x=1706282724;
        h=in-reply-to:content-disposition:mime-version:references:message-id
         :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to;
        bh=fVJXFXMkRp7aAw/JMBSv8qGqP0OKVxflwcH46R8G7q4=;
        b=cv9NyCFbZXQRcJC5PincDdLS2tVvwTBw8Q+GnC4KbOc7tapLLhjcYL8drYJrcOoJEo
         xLnHIBzpf7RBmvSuPU0ryTyLtdD8sTKFxLzUXP46bB2uTgL7b1TIBHo/jMYYVZ3H8Yg1
         Rkqm0/XDPN64aZFkvMPMjgsHjRtynyRgcAPxYnyQaQ4BZ3rNwZbsx2RrkFBg0I6iRB9Y
         pUbqm8xY6qVE/gs4jC8g7RtZKWJ8wNFje64d0gbkCTpuKtrhCDV4kkY5P3deNWso/zE6
         fFjFg5YrDOcw5Awhgn5U/5q9LWHCjXigyh/ehSBw5cQqW840/ZmGqaEcJfNJtKsSmPUy
         TBNg==
X-Gm-Message-State: AOJu0YwiSY0F7yLdDk9EsiHX4ndsVd9Qy7uQ60WGMlmlNLNdJzZ/SDs8
	ku4eX3up3bNsXjNQOycSY8R8odmnYnkGkcxsEhzzq2+6B1ZNMIojaqdQ3euSLNU=
X-Google-Smtp-Source: AGHT+IGz5WRYHi0KnnS1ULtTbgaXLH8b/Omi4N8PJEAJgJuwmEIFv15m9lxQhplSrSmxkeJ6/gczTA==
X-Received: by 2002:a05:600c:4686:b0:40e:52d8:c0c8 with SMTP id p6-20020a05600c468600b0040e52d8c0c8mr1582271wmo.129.1705677923930;
        Fri, 19 Jan 2024 07:25:23 -0800 (PST)
Date: Fri, 19 Jan 2024 15:25:22 +0000
From: Anthony PERARD <anthony.perard@citrix.com>
To: Michal Orzel <michal.orzel@amd.com>
Cc: Jan Beulich <jbeulich@suse.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	George Dunlap <george.dunlap@citrix.com>,
	Julien Grall <julien@xen.org>,
	Stefano Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>,
	Javi Merino <javi.merino@cloud.com>, xen-devel@lists.xenproject.org
Subject: Re: [PATCH] coverage: filter out lib{fdt,elf}-temp.o
Message-ID: <0a1c749b-8169-43b5-9921-961096f8570d@perard>
References: <20240118120641.24824-1-michal.orzel@amd.com>
 <8057ae41-43b5-4469-b691-4e7f16b8dd4d@suse.com>
 <e399890c-0299-4ec5-884e-0637ae6cb5b0@perard>
 <9d552e6d-eb5d-4ccf-a35d-a359df7c4478@amd.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <9d552e6d-eb5d-4ccf-a35d-a359df7c4478@amd.com>

On Fri, Jan 19, 2024 at 09:43:30AM +0100, Michal Orzel wrote:
> Is my understanding correct that by switching from extra-y to targets we are preventing these objects to
> appear in non-init-objects (and thus having COV_FLAGS appended) while retaining the proper if_changed behavior?
> 
> According to docs/misc/xen-makefiles/makefiles.rst:
> Any target that utilises if_changed must be listed in $(targets),
> otherwise the command line check will fail, and the target will
> always be built.

Indeed, and $(extra-y) is added to $(targets) via
$(targets-for-builtin).

While switching from $(extra-y) to $(targets) prevents the objects from
been added to $(non-init-objets), it doesn't matter because "libelf.o"
is in that variable, so $(COV_FLAGS) is added to $(_c_flags) and its
value is used in all the prerequisites of "libelf.o" which includes
"libelf-temp.o" and for example "libelf-dominfo.o". So the only thing
preventing $(COV_FLAGS) from been added when building "libelf-tools.o"
for example is that we set `COV_FLAGS:=` for "libelf.o".

Cheers,

-- 
Anthony PERARD


From xen-devel-bounces@lists.xenproject.org Fri Jan 19 15:33:09 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 19 Jan 2024 15:33:09 +0000
Received: from list by lists.xenproject.org with outflank-mailman.669093.1041708 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQqrY-00021r-29; Fri, 19 Jan 2024 15:32:56 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 669093.1041708; Fri, 19 Jan 2024 15:32:56 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQqrX-00021k-Vf; Fri, 19 Jan 2024 15:32:55 +0000
Received: by outflank-mailman (input) for mailman id 669093;
 Fri, 19 Jan 2024 15:32:54 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=sEER=I5=amd.com=Alexander.Deucher@srs-se1.protection.inumbo.net>)
 id 1rQqrW-00020E-5N
 for xen-devel@lists.xenproject.org; Fri, 19 Jan 2024 15:32:54 +0000
Received: from NAM12-MW2-obe.outbound.protection.outlook.com
 (mail-mw2nam12on20601.outbound.protection.outlook.com
 [2a01:111:f403:200a::601])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 014c24f5-b6e0-11ee-98f2-6d05b1d4d9a1;
 Fri, 19 Jan 2024 16:32:52 +0100 (CET)
Received: from BL1PR12MB5144.namprd12.prod.outlook.com (2603:10b6:208:316::6)
 by CYYPR12MB8732.namprd12.prod.outlook.com (2603:10b6:930:c8::9) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7202.23; Fri, 19 Jan
 2024 15:32:47 +0000
Received: from BL1PR12MB5144.namprd12.prod.outlook.com
 ([fe80::a952:d50:fdc8:fc95]) by BL1PR12MB5144.namprd12.prod.outlook.com
 ([fe80::a952:d50:fdc8:fc95%7]) with mapi id 15.20.7202.026; Fri, 19 Jan 2024
 15:32:47 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 014c24f5-b6e0-11ee-98f2-6d05b1d4d9a1
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=iOIFn0yaO4gi00LF3nM//K6G3C8miP8XQCFu0NAZL7q6RixT+Q7FeKUrqDwAIQB6Y4RatJ7AVmlbn8/bBLJftg4DtNn+xm/xtnuzLaT1uJ4uoTuC1tHoXGgLw9unOfwzfRbs1n+TXR50/si7+1RQjy9rNRWz4tg/TKmvxC1LEe4be9lTFqWCoo2PasO9WdUJUchwCcU58S7Pgyczna7Bp7mDVNERMagfIVKQG9MOCU73FLOmYUwvgo8P/rhmlTL/Ajqf1ZejOtKDLc2jfApIfnUXWSgWcftxFKGoT+MYntfMJavKtbHmIF854pwOjUusCZWHVPEBROSXKOolJ11N1g==
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=yYbkQ6Yk9IU2wc6hyxafh/dmr2i/NE1KhKtje5XXkNo=;
 b=VziPHhx2/s3ETF1RBr5ROG61EtRW41ojOgUu2MbwDo5toH1aPcZJGhpJMZn2q+VtRRPPV9Jb4AWem22VYHQduchmdplPQtkvkCl6Vp/2Hpa0ccDIRqT6HY3AERbb/v4fXkKEMcibz4aTrx2BO5WkCjF+qKzwms34eDr+TBaNvwUr41ZCkwT2GR0YNEymLQ1/9yBvBDpp2E6neVyKljlqT2VaeyqAq7AxyEiSI7NdCVjjxr/97pGJlsyNnXe8yOHiLKB77VByqLxx20CdLps9sg8a9InptEfdat8dVxd4qgIHWzRugmeysxcGcVVwzIjlao3aoDTZQXUj3dvVsR6qMA==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=amd.com; dmarc=pass action=none header.from=amd.com; dkim=pass
 header.d=amd.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=yYbkQ6Yk9IU2wc6hyxafh/dmr2i/NE1KhKtje5XXkNo=;
 b=jaCfe++9uIO/TF11JR8NS202BePMsyaehEAzrdA4QV523AMIu+DYStPw2HtrNLFPhzZFdm5y3rLGeMyPgteDZH/licESkz0bpnOM/edbWtkAXi6XWWNQXJjXtoZijmmnSad++w0mNk81gkhtBcAtWBoAt8G1DgptpUidiuZCAjI=
From: "Deucher, Alexander" <Alexander.Deucher@amd.com>
To: "Huang, Ray" <Ray.Huang@amd.com>, Patrick Plenefisch <simonpatp@gmail.com>
CC: =?utf-8?B?Um9nZXIgUGF1IE1vbm7DqQ==?= <roger.pau@citrix.com>, Jan Beulich
	<jbeulich@suse.com>, "xen-devel@lists.xenproject.org"
	<xen-devel@lists.xenproject.org>, Juergen Gross <jgross@suse.com>, "Chen,
 Jiqian" <Jiqian.Chen@amd.com>
Subject: RE: ACPI VFCT table too short on PVH dom0 (was: Re: E820 memory
 allocation issue on Threadripper platforms)
Thread-Topic: ACPI VFCT table too short on PVH dom0 (was: Re: E820 memory
 allocation issue on Threadripper platforms)
Thread-Index: AQHaSr2NGOx+NLsdjUOezFAwCR0jIrDhQrdg
Date: Fri, 19 Jan 2024 15:32:46 +0000
Message-ID:
 <BL1PR12MB5144A6C412C9A9281A575AB6F7702@BL1PR12MB5144.namprd12.prod.outlook.com>
References:
 <CAOCpoWeowZPuQTeBp9nu8p8CDtE=u++wN_UqRoABZtB57D50Qw@mail.gmail.com>
 <ac742d12-ec91-4215-bb42-82a145924b4f@suse.com>
 <CAOCpoWfQmkhN3hms1xuotSUZzVzR99i9cNGGU2r=yD5PjysMiQ@mail.gmail.com>
 <fa23a590-5869-4e11-8998-1d03742c5919@suse.com>
 <CAOCpoWf4CMkCWx8uR2NbFrZrKSS78wj1-hFsAUqsjCfsmqooVA@mail.gmail.com>
 <Zajg1O7Z52VTBq31@macbook>
 <CAOCpoWeO9h7b_CjJb9jtKaEUVv_=XDSVkr55QSg3ArFc4n8G2w@mail.gmail.com>
 <ZajzcpArQYQhdj3T@macbook> <ZakcdfS3UwEb0oh2@macbook>
 <CAOCpoWdL3YnpitZxEoFgdvtZ6juy8oykYj6fX_tv4QLvj2Fv0g@mail.gmail.com>
 <ZapG1weSIJWOkT8m@amd.com>
In-Reply-To: <ZapG1weSIJWOkT8m@amd.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
msip_labels:
 MSIP_Label_d4243a53-6221-4f75-8154-e4b33a5707a1_ActionId=425e5122-542d-4577-94a5-809511e34fa7;MSIP_Label_d4243a53-6221-4f75-8154-e4b33a5707a1_ContentBits=0;MSIP_Label_d4243a53-6221-4f75-8154-e4b33a5707a1_Enabled=true;MSIP_Label_d4243a53-6221-4f75-8154-e4b33a5707a1_Method=Privileged;MSIP_Label_d4243a53-6221-4f75-8154-e4b33a5707a1_Name=Public-AIP
 2.0;MSIP_Label_d4243a53-6221-4f75-8154-e4b33a5707a1_SetDate=2024-01-19T15:28:11Z;MSIP_Label_d4243a53-6221-4f75-8154-e4b33a5707a1_SiteId=3dd8961f-e488-4e60-8e11-a82d994e183d;
authentication-results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=amd.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: BL1PR12MB5144:EE_|CYYPR12MB8732:EE_
x-ms-office365-filtering-correlation-id: 06653dac-c25c-47e9-e053-08dc1903e368
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam: BCL:0;
x-microsoft-antispam-message-info:
 LxnrtjZc1sgz6ct5gl5CglA59M6mmtmnLVTeBrIddhNvFwXabyYRr9swm9C5lEPQ+RIxO9ZnerLkqsJlpG1plvD2QyXJJfsB401+RPFEaoJGa07X/cstkjsHFsLLegu+CYhvjd0WxX3s/pdLFu7Zx+rD6iAICY3orFMSp/eEfBHiQTXsMsuHaqqmWl9YsANst3Jt9E1HUP13M+Y9VBHD15wtsRaGBhbKZi17Ykp1oUvmEX2mWtSf1ebro5+vdWvR3ytvhEwQ0lOJ3vxzeSZJq3Olm8R7+FcZ4Bz9BHFtweykqSzE61azxTKwRBTUhxCGakGabatL2mV+yNf5D+4GhSiJgYI+vfEB3KU1ebDa7DJMu3A6SVCQKgupplIOZxgE6xCZZ+xgixOOk42GB3+qL2nhlHnrxpKADzxMQ445OLjKQojaJBkiCdbKWdm38YUs1PnUJISsldoLoln+kEfUXXN3T95RuKHxPhVc080GtStkUiAgiR5X92W3AShsYPG9XzUgIBr8/MCED6uDBrzeLtxX6YPmkplBOHra4FCfMCebOLupm37tcHPMAoCIU3tsWAFJWEV8nU6IAVlllHofNfCQNaGrA76b8ScZoMqFBzeopt3yGJ9lweQCpepVJX72ev1vt9vvJofdNjo/79X/aZBdUEPr+mC0DJLvLHCL22MSGWn2Kn+j7RaQnL1PFWlc
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BL1PR12MB5144.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230031)(366004)(346002)(396003)(376002)(39860400002)(136003)(230173577357003)(230273577357003)(230922051799003)(451199024)(1800799012)(64100799003)(186009)(38070700009)(55016003)(316002)(6506007)(52536014)(26005)(53546011)(7696005)(83380400001)(64756008)(76116006)(966005)(9686003)(71200400001)(54906003)(8936002)(66476007)(66446008)(110136005)(8676002)(4326008)(66946007)(478600001)(66556008)(122000001)(41300700001)(33656002)(5660300002)(86362001)(38100700002)(2906002);DIR:OUT;SFP:1101;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?utf-8?B?NWxDbWcvbWhmRlNCcWxQT29xM0FLcUx0OWgvUlN1M3JKYUZoYjdCeE53T0NG?=
 =?utf-8?B?RzlzZCswMzdpT2RGK3pLMGhkczV5MkRMY0VDeVlGLzJBbWFVYmV1dGZ5eFNC?=
 =?utf-8?B?dEVPTHZPMnhFOGlidFI4b2p4eWdaemNGSGdSZlhzUU5HSUpkZWZBUEExL2pa?=
 =?utf-8?B?MlBHaER5MnB4eS9yZG9ob0FPcDlJdFZGdi9mYi91eXhBNWNJQ25xTlhSdklz?=
 =?utf-8?B?eHRKeVpmZnB3T256SHJjWnFsOEFiT2tNdzU3MEdnMS9uZTc2Q0dqQWkxNVdz?=
 =?utf-8?B?Z1pPS0c4RzkycXZZcllLdXcxYXlMM3NZak1PWS9GV2tNRG9VdjRpU3lwQ293?=
 =?utf-8?B?MjNpRTN2enZObno5ZHRBTEt6UHkxNmp6L0ZPQW83bkUwQ05CdCs1Ry9wR2VQ?=
 =?utf-8?B?aUk3ZFpaQlNJc3JkeEJoQW9TTGVUS0NWVGxYR2xsaHNJYzJZbDI0cUJNM2hn?=
 =?utf-8?B?MHVNeDlpMCtHRzBRYllESjFkSk1IVUo1VXVlQUc0dGlaVjJ0V21TRjFoV3BR?=
 =?utf-8?B?N1AxdG5iOUdBWndRNmVwRnVteldyZ0VlekxhYVdXU0ptdFlhbEFxeUlDcjNh?=
 =?utf-8?B?cVI5QXJXa0dleURCUlVzdjI0bUtHay9jUTA5dmFVYi92dm5SZ2ZEUERFY1Y1?=
 =?utf-8?B?T04wQ0VIaDVhN3VxaUZZNkFYcURRR2hZOXc1N1VEWVdjVThydklZalJ4MXlF?=
 =?utf-8?B?RGgrMFVSdEtxaGlrR0xtK253dzAvWlVqQndEUWhIci8xTnZxdVZRY2p1TGFp?=
 =?utf-8?B?YVc3Q3NUU1AzMi9Wa0FZb1ptQjd4RzE2R1kvMm1EUzVYMmpKN3UyNXNtL2pO?=
 =?utf-8?B?WTJFS1FLZFdjd3ZhMUlQOVk1QmlqbjJTTzRvcGpUTGk5YWcrekhhK0RtS2JH?=
 =?utf-8?B?LzBiSit6TDArdlNTZVBpb2dXanQybTU5TmUyRDArRTFCQ0RqS2ZNK1UzV3JL?=
 =?utf-8?B?alVNNEJQcnl4eVc5R2FkV3RROGNZdDZpZVg3c3NpRklnM2tmQndVYko1Q2Ru?=
 =?utf-8?B?UDhqYVMzNk9Kc3ZWVUVoUzBiVWgwZDRuNmZlRmtLaUhQUmhkM2hHaXQ5WS9t?=
 =?utf-8?B?dVhmRGNCZ3dOZ0hCS0RjVndNdUVFYllYNkt5dVhjQzNjMlBYQnZKY2FFbC82?=
 =?utf-8?B?RDdUSEI2dU95dzdHdXdhNi94aEtKcnJNLzZBNnJUL3lWZFl5K0xkaEM3WTM4?=
 =?utf-8?B?VSt6emlZcTA0Q2NrK0lhYmdkMitSMmVmb3BhMGlZa0ErcFUwMVpHQTUvMEgx?=
 =?utf-8?B?Mm1URS9qOVczLzF4SFVUTG9PSUpCUVlwOUZFV0lQZ3phTEF0bldQN2pIQTFW?=
 =?utf-8?B?SzVhdCtVM29vbXhVVmxNT0pLZ01XOVBEN3NOVDlnMm50NHFZeXAwUlRyTDdF?=
 =?utf-8?B?RGN0akd0ZTFRakFrUUtOVldKMmwwdTE0M2dpNCsvZVhLRTd6TnNqZjJOUEYy?=
 =?utf-8?B?aU03R3pLd0hQdFhWY2tLczRCN1ZrbmdBL3RsSDArY2JCQW51bTAzT3VndjFo?=
 =?utf-8?B?RkxkQ2hYcmZPNS9venU2VGRrUEJBVXVUeWtSOXhnVGRseWhaTFFON3ErM00x?=
 =?utf-8?B?cWdSUXBoZ3RVNGNjZTNsekc4UmFMVHpPdFNlelF2N2kwOUR0U2x3MVJLZVIw?=
 =?utf-8?B?K3RhZU8xMzZnUXNNU21WUitickFieGdRSnhORklTNThmMFg3NDhzS2RQcGJ3?=
 =?utf-8?B?ejRtMnV3emE5M0d2WWRmMXAzSWRyaUdNNnBqN2oxbEpIUnh3YmNKOHFBaWVC?=
 =?utf-8?B?ckNzVHhXYmlXZWVkM21sSUxDWG1OM2JqUlVyY3JzMjd5SjZYTnBJMk1FZkFS?=
 =?utf-8?B?NTNpam8veXBaODFvb011WHpCMkc5MUdWWEZoR0dZN0FXdnUwUHpUeW92SnZ5?=
 =?utf-8?B?ZnQzbXhqcnFGRkhSSjZzbWVMSFRNY21DWGtoM0dsc3VaaTF1eksrczZUV0xr?=
 =?utf-8?B?Q0lnWEFEMkhQMWpiVFJSSWlXaFZaTjI0eXVhWTRvMWpXSTNNK240alBtZDRv?=
 =?utf-8?B?ZFQ2aTBHUk1iVTRvL2dGSm83MkdNVXN0NGs1RXp6T3JZREhzYTYvVHh4bzg0?=
 =?utf-8?B?MEU0TmNRTGJqREV5a2NBdHlCbGNZS0h3NkxzdkpkcFMydm5XVlpJZFlIUGEr?=
 =?utf-8?Q?QFB8=3D?=
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: BL1PR12MB5144.namprd12.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 06653dac-c25c-47e9-e053-08dc1903e368
X-MS-Exchange-CrossTenant-originalarrivaltime: 19 Jan 2024 15:32:47.0148
 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 3dd8961f-e488-4e60-8e11-a82d994e183d
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: WCwgf1NEVZVGKS/OA4ErGHLNZ31D8aqFymNtivKm/IN3uetb51NQF52ic8DclDWWZwOQU1fLnzqaUju5N75yHg==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CYYPR12MB8732

W1B1YmxpY10NCg0KPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBIdWFuZywg
UmF5IDxSYXkuSHVhbmdAYW1kLmNvbT4NCj4gU2VudDogRnJpZGF5LCBKYW51YXJ5IDE5LCAyMDI0
IDQ6NTUgQU0NCj4gVG86IFBhdHJpY2sgUGxlbmVmaXNjaCA8c2ltb25wYXRwQGdtYWlsLmNvbT4N
Cj4gQ2M6IFJvZ2VyIFBhdSBNb25uw6kgPHJvZ2VyLnBhdUBjaXRyaXguY29tPjsgSmFuIEJldWxp
Y2gNCj4gPGpiZXVsaWNoQHN1c2UuY29tPjsgeGVuLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3Jn
OyBKdWVyZ2VuIEdyb3NzDQo+IDxqZ3Jvc3NAc3VzZS5jb20+OyBDaGVuLCBKaXFpYW4gPEppcWlh
bi5DaGVuQGFtZC5jb20+OyBEZXVjaGVyLA0KPiBBbGV4YW5kZXIgPEFsZXhhbmRlci5EZXVjaGVy
QGFtZC5jb20+DQo+IFN1YmplY3Q6IFJlOiBBQ1BJIFZGQ1QgdGFibGUgdG9vIHNob3J0IG9uIFBW
SCBkb20wICh3YXM6IFJlOiBFODIwIG1lbW9yeQ0KPiBhbGxvY2F0aW9uIGlzc3VlIG9uIFRocmVh
ZHJpcHBlciBwbGF0Zm9ybXMpDQo+DQo+IE9uIEZyaSwgSmFuIDE5LCAyMDI0IGF0IDAzOjQ0OjM1
UE0gKzA4MDAsIFBhdHJpY2sgUGxlbmVmaXNjaCB3cm90ZToNCj4gPiAgICBPbiBUaHUsIEphbiAx
OCwgMjAyNCBhdCA3OjQx4oCvQU0gUm9nZXIgUGF1IE1vbm7DqQ0KPiA+ICAgIDxbMV1yb2dlci5w
YXVAY2l0cml4LmNvbT4gd3JvdGU6DQo+ID4NCj4gPiAgICAgIEZyb20gdGhhdCBlbnZpcm9ubWVu
dCAoUFZIIGRvbTApIGNhbiB5b3Ugc2VlIGlmIHlvdSBjYW4gZHVtcCB0aGUNCj4gPiAgICAgIGNv
bnRlbnRzIG9mIHRoZSBWRkNUIHRhYmxlPyAgSSBkb24ndCBoYXZlIGEgc3lzdGVtIHdpdGggdGhh
dCB0YWJsZSwNCj4gPiAgICAgIHNvDQo+ID4gICAgICBub3Qgc3VyZSBpZiB0aGlzIHdpbGwgd29y
ayAoYmVjYXVzZSBpYXNsIGlzIHVubGlrZWx5IHRvIGtub3cgaG93IHRvDQo+ID4gICAgICBkZWNv
ZGUgaXQpOg0KPiA+ICAgICAgIyBhY3BpZHVtcCAtbiBWRkNUIC1vIHRhYmxlLmR1bXANCj4gPiAg
ICAgICMgYWNwaXh0cmFjdCAtYSB0YWJsZS5kdW1wDQo+ID4gICAgICAjIGlhc2wgLWQgdmZjdC5k
YXQNCj4gPiAgICAgICMgY2F0IHZmY3QuZHNsDQo+ID4gICAgICBXb3VsZCBiZSBnb29kIGlmIHlv
dSBjYW4gY29tcGFyZSB0aGUgb3V0cHV0IGZyb20gd2hhdCB5b3UgZ2V0IG9uIGENCj4gPiAgICAg
IFBWDQo+ID4gICAgICBkb20wIG9yIHdoZW4gcnVubmluZyBuYXRpdmUgTGludXguDQo+ID4gICAg
ICBJJ20gYWxzbyBhZGRpbmcgc29tZSBBTUQgZm9sa3MsIGFzIElJUkMgdGhleSBkaWQgc29tZSBm
aXhlcyB0byBMaW51eA0KPiA+ICAgICAgaW4gb3JkZXIgdG8gZ2V0IHNvbWUgQU1EIGdyYXBoaWNz
IGNhcmRzIHJ1bm5pbmcgb24gYSBQVkggZG9tMCwgbWF5YmUNCj4gPiAgICAgIHRoZXkgY2FuIHBy
b3ZpZGUgc29tZSBhZGRpdGlvbmFsIGlucHV0Lg0KPiA+DQo+ID4gICAgV2VsbCwgdGhpcyBpcyBw
cmV0dHkgd2VpcmQuIEknbGwgZ28gaW50byBtb3JlIGRldGFpbHMgYmVjYXVzZSBpdCBtYXkgYmUN
Cj4gPiAgICByZWxldmFudC4gSSBoYWQgYmVlbiB3b3JraW5nIHdpdGggQVNSb2NrIHN1cHBvcnQg
ZXZlciBzaW5jZSBJIGdvdCBteQ0KPiA+ICAgIGJyYW5kIG5ldyBtb3RoZXJib2FyZCBiZWNhdXNl
IEkgY291bGRuJ3Qgc2VlIHRoZSBCSU9TL1VFRkkgc2NyZWVucy4gSQ0KPiA+ICAgIGNvdWxkIGJv
b3QgdXAsIGFuZCBvbmNlIG5hdGl2ZSBsaW51eCB0b29rIGNvbnRyb2wgYW1kZ3B1IGdvdCB0aGUN
Cj4gPiAgICBzY3JlZW5zL2dwdSB3b3JraW5nIGZpbmUuIEkgZmluYWxseSBtYW5hZ2VkIHRvIGJl
IGFibGUgdG8gc2VlIHRoZQ0KPiA+ICAgIFVFRkkvQklPUyBzZXR1cCBzY3JlZW5zIGJ5IHBhdGNo
aW5nIG15IFZCSU9TOiBJIGV4dHJhY3RlZCB0aGUgVkJJT1MNCj4gPiAgICBpbWFnZSBvZiBhIGNo
ZWFwIFI1IDQzMCBPRU0sIHJhbiBHT1B1cGQgdG8gdXBkYXRlIHRoZSBWQklPUyBVRUZJDQo+ID4g
ICAgY29tcG9uZW50IChHT1ApIGZyb20gdmVyc2lvbiAxLjYwIHRvIDEuNjcuIFRoYXQgYWxsb3dl
ZCB0aGUgVUVGSSB0bw0KPiA+ICAgIGFjdHVhbGx5IGluaXRpYWxpemUgYW5kIHVzZSBhIHNjcmVl
bi4gSG93ZXZlciwgSSBsYXRlciByZWFsaXplZCB0aGF0DQo+ID4gICAgb25seSAxIG1vbml0b3Ig
d2FzIGxpZ2h0aW5nIHVwIGluIHRoZSBiaW9zOiBteSBtb25pdG9yIHBsdWdnZWQgaW50byB0aGUN
Cj4gPiAgICBSYWRlb24gUlggNDgwIHRoYXQgd2FzIHN0aWxsIG9uIFZCSU9TIEdPUCAxLjYwLiBJ
dCBhcHBlYXJzIHRoZSBHT1Agd2FzDQo+ID4gICAgaW5pdGlhbGl6aW5nIHRoZSBSWCA0ODAgdG9v
LCBkZXNwaXRlIG5vdCBiZWluZyBmbGFzaGVkIHdpdGggdGhlIGxhdGVzdA0KPiA+ICAgIGl0c2Vs
Zi4gSSBhbSB3b3JraW5nIG9uIGFuIGVtYWlsIHRvIGFzcm9jayBzdXBwb3J0IGFib3V0IHRoYXQu
IE9uY2UgSQ0KPiA+ICAgIGdldCBpbnRvIGxpbnV4IChuYXRpdmUgb3IgUFYpLCBib3RoIG1vbml0
b3JzIGxpZ2h0IHVwIGFzIGV4cGVjdGVkLg0KPiA+ICAgIEFsc28sIElmIEkgYm9vdCBsaW51eCBQ
VkggZnJvbSBncnViLCB0aGV5IGFsc28gd29yay4gVGhvc2UgdXNhZ2UNCj4gPiAgICBzY2VuYXJp
b3MgaGF2ZSBhY3BpZHVtcCBvdXRwdXQgYXMgaWRlbnRpY2FsLiBCb290aW5nIGxpbnV4IFBWSCBk
aXJlY3RseQ0KPiA+ICAgIGZyb20gVUVGSSAobm8gZ3J1YiksIHRoZSBtb25pdG9ycyBnbyB0byBz
bGVlcCBvbiB0aGUgUlggNDgwLCBhbmQgYW1kZ3B1DQo+ID4gICAgZXJyb3JzIG91dCBhYm91dCBW
RkNULCBidXQgdGhlIFI1IDQzMCBPRU0gZG9lcyBzdGlsbCBoYXZlIG91dHB1dC4NCj4gPiAgICBJ
bnRlcmVzdGluZ2x5LCB0aGVyZSBpcyBhIGRpZmZlcmVudCBzY3JlZW4gbW9kZSBib290aW5nIFVF
RkkrUFZILCB0aGUNCj4gPiAgICBjaGFyYWN0ZXJzIGFyZSBiYXNpY2FsbHkgc3F1YXJlcywgd2l0
aCBtb3JlIHZlcnRpY2FsIGxpbmVzIHRoYW4NCj4gPiAgICAiZGVmYXVsdCIsIG1heWJlIGNsb3Nl
IHRvIG5hdGl2ZSBzY3JlZW4gcmVzb2x1dGlvbiwgYnV0IGhvcml6b250YWxseQ0KPiA+ICAgIGl0
J3Mgc3RpbGwgImRlZmF1bHQiLiBCb290aW5nIGZyb20gZ3J1YiBnaXZlcyBldmVyeXRoaW5nIGlu
IHRoZQ0KPiA+ICAgICJkZWZhdWx0IiByZXNvbHV0aW9uLg0KPiA+ICAgIFNvIHdoYXQgaXMgaW4g
dGhlIFZGQ1QgVGFibGU/IFZGQ1QgY29udGFpbnMgdGhlIG5vbi1HT1AgVklPUyBpbWFnZQ0KPiA+
IG9mDQo+DQo+IFRoYW5rcyBSb2dlciB0byBpbnZvbHZlIHVzLiBUaGUgVkZDVCB0YWJsZSBpcyB0
byBleHBvc2UgdmlkZW8gQklPUyBpbWFnZSBieQ0KPiBBTUQgR1BVcy4gWW91IGNhbiBzZWUgZGV0
YWlscyBoZXJlOg0KPg0KPiBodHRwczovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vbGludXgva2Vy
bmVsL2dpdC90b3J2YWxkcy9saW51eC5naXQvdHJlZS9kcml2ZXJzDQo+IC9ncHUvZHJtL2FtZC9p
bmNsdWRlL2F0b21iaW9zLmgNCj4NCj4gRGlkIHlvdSBhcHBseSB0aGlzIHBhdGNoPw0KPg0KPiBo
dHRwczovL2xvcmUua2VybmVsLm9yZy94ZW4tZGV2ZWwvMjAyMzAzMTIwNzU0NTUuNDUwMTg3LTIt
DQo+IHJheS5odWFuZ0BhbWQuY29tLw0KPg0KDQpWRkNUIGlzIGdlbmVyYXRlZCBvbiB0aGUgZmx5
IGJ5IHRoZSBzeXN0ZW0gYmlvcyBhdCBib290LiAgVGhlIHN5c3RlbSBiaW9zIGZldGNoZXMgdGhl
IFBDSSByb20gaW1hZ2UgZnJvbSB0aGUgQU1EIGRpc3BsYXkgZGV2aWNlcyBhbmQgdXNlcyB0aGVt
IHRvIHBvcHVsYXRlIHRoZSBWRkNUIHRhYmxlLg0KDQpBbGV4DQoNCg0KPiBUaGFua3MsDQo+IFJh
eQ0KPg0KPiA+ICAgIG15IFJhZGVvbiBSWCA0ODAgR1BVLiBZb3UgY2FuIGNvbXBhcmUgaXQgdG8g
dGhlIFZCSU9TIGhvc3RlZCBhdA0KPiA+ICAgIFsyXWh0dHBzOi8vd3d3LnRlY2hwb3dlcnVwLmNv
bS92Z2FiaW9zLzE4NTc4OS9tc2ktcng0ODAtNDA5Ni0NCj4gMTYwNzIwDQo+ID4gICAgKENvbXBh
cmUgdGhlIGVuZCBhdCBFNjY3IGluIHRoZSBWRkNUIHRhYmxlIHRvIEU1ZmYgaW4gdGhhdCB2Ymlv
cyBsaW5rKS4NCj4gPiAgICBJIGZpbmQgdGhpcyBleHRyYSBzdXNwaWNpb3VzIGR1ZSB0byB0aGUg
YWJvdmUuDQo+ID4gICAgTm93IGZvciB0aGUgZXh0cmEgaG9ycmlibGUgdGhpbmdzOg0KPiA+ICAg
IFVFRkktYm9vdGVkIFBWSCBMaW51eCBkb2Vzbid0IHN1cHBvcnQga2V5Ym9hcmQgZ2V0dHkgaW5w
dXQsIGFuZCBhdA0KPiA+ICAgIGxlYXN0IHNvbWUgb2YgdGhlIFVTQiBkZXZpY2VzIGFyZSBub3Qg
aW4gbHN1c2IuIEl0IGFsc28gZGVjaWRlZCB0bw0KPiA+ICAgIHZhbmlzaCBvbmUgb2YgbXkgSERE
J3MuIFRoZSBgcmVib290YCBjb21tYW5kIGhhbmdzLiBUaGUgUG93ZXIgYnV0dG9uDQo+ID4gICAg
ZG9lc24ndCBkbyBhbnl0aGluZy4gVGhlcmUgYXJlIHNldmVyYWwgc3RhY2sgdHJhY2VzIGluIGRt
ZXNnLiBCdXQNCj4gPiAgICBBbHQtU3lzUnEtQiBkb2VzIHJlYm9vdCEgTHVja2lseSBJIGNvdWxk
IHNzaCBpbiBhbmQgY2FwdHVyZSB0aGUgQUNQSQ0KPiA+ICAgIHRhYmxlcy4gVGhleSBhcmUgbXVj
aCBzbWFsbGVyLCBhbmQgVkZDVCBpcyBlbXB0eS4gIEJvb3RpbmcgYmFjayB0byBvbmUNCj4gPiAg
ICBvZiB0aGUgd29ya2luZyBzY2VuYXJpb3MgKGRpcmVjdCBsaW51eCwgR3J1YiBQViwgR3J1YiBQ
VkgsIFVFRkkgUFYpLA0KPiA+ICAgIGFsbCBvZiB0aGlzIGlzIG5vcm1hbC4NCj4gPiAgICBJJ3Zl
IGF0dGFjaGVkOg0KPiA+ICAgIHhlbmJvb3QubG9nIHdoaWNoIGlzIHRoZSBzZXJpYWwgbG9nIG9m
IHhlbitsaW51eCBib290aW5nIGluIFVFRkkgUFZIDQo+ID4gICAgKGtlcm5lbCBpcyBkZWJpYW4n
cyBjb25maWcsIGJ1dCBwYXRjaGVkIHRvIHN0YXJ0IGF0IDJNaUIpDQo+ID4gICAgZG1lc2cudHh0
IHdoaWNoIGlzIHRoZSBsaW51eCBkbWVzZyB0aGF0IGNvbnRhaW5zIHNvbWUgbmljZSBzdGFjayB0
cmFjZXMNCj4gPiAgICAoa2VybmVsIGlzIGRlYmlhbidzIGNvbmZpZywgYnV0IHBhdGNoZWQgdG8g
c3RhcnQgYXQgMk1pQikNCj4gPiAgICBlZmlwdmgtdGFibGVzLmR1bXAgaXMgQUxMIGFjcGkgdGFi
bGVzIGZyb20gVUVGSStQVkggbW9kZSAoYWNwaWR1bXAgLW8NCj4gPiAgICBlZmlwdmgtdGFibGVz
LmR1bXApDQo+ID4gICAgd29ya2luZy10YWJsZXMuZHVtcCBpcyBBTEwgYWNwaSB0YWJsZXMgZnJv
bSB0aGUgb3RoZXIgbW9kZXMgKGFjcGlkdW1wDQo+ID4gICAgLW8gd29ya2luZy10YWJsZXMuZHVt
cCkNCj4gPiAgICBlZmlwdmgtdmZjdC5kdW1wIGlzIGF0dGFjaGVkIGluIHNwaXJpdCwgYXMgaXQg
aXMgMCBieXRlcyBsb25nIChhY3BpZHVtcA0KPiA+ICAgIC1uIFZGQ1QgLW8gZWZpcHZoLXZmY3Qu
ZHVtcCkNCj4gPiAgICBJIHJhbiBpYXNsLCBidXQgaXQganVzdCBzYWlkICoqKiogVW5rbm93biBB
Q1BJIHRhYmxlIHNpZ25hdHVyZSBbVkZDVF0NCj4gPiAgICBhbmQgc3BhdCBvdXQgdGhlIHJhdyBk
YXRhIHRhYmxlLCBub3RoaW5nIGludGVyZXN0aW5nDQo+ID4gICAgU29tZXRoaW5nIEkgY2FuIHRy
eSwgYnV0IGhhdmUgYmVlbiBuZXJ2b3VzIHRvIHRyeSBkdWUgdG8gR09QdXBkDQo+ID4gICAgd2Fy
bmluZ3MgaXMgdG8gYWxzbyBmbGFzaCB0aGUgMS42NyBHT1AgdG8gdGhlIFZCSU9TIG9uIHRoZSBS
WCA0ODAuIFRoZQ0KPiA+ICAgIFI1IDQzMCBPRU0gaGFkIG5vIHN1Y2ggd2FybmluZ3MuDQo+ID4g
ICAgUGF0cmljaw0KPiA+DQo+ID4gUmVmZXJlbmNlcw0KPiA+DQo+ID4gICAgMS4gbWFpbHRvOnJv
Z2VyLnBhdUBjaXRyaXguY29tDQo+ID4gICAgMi4gaHR0cHM6Ly93d3cudGVjaHBvd2VydXAuY29t
L3ZnYWJpb3MvMTg1Nzg5L21zaS1yeDQ4MC00MDk2LQ0KPiAxNjA3MjANCg0K


From xen-devel-bounces@lists.xenproject.org Fri Jan 19 15:52:06 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 19 Jan 2024 15:52:06 +0000
Received: from list by lists.xenproject.org with outflank-mailman.669101.1041719 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQrA0-0006u7-KC; Fri, 19 Jan 2024 15:52:00 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 669101.1041719; Fri, 19 Jan 2024 15:52:00 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQrA0-0006u0-GU; Fri, 19 Jan 2024 15:52:00 +0000
Received: by outflank-mailman (input) for mailman id 669101;
 Fri, 19 Jan 2024 15:51:59 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=t7y8=I5=gmail.com=firemeteor.guo@srs-se1.protection.inumbo.net>)
 id 1rQr9z-0006tu-Cm
 for xen-devel@lists.xenproject.org; Fri, 19 Jan 2024 15:51:59 +0000
Received: from mail-oo1-f46.google.com (mail-oo1-f46.google.com
 [209.85.161.46]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id acd3a3d9-b6e2-11ee-98f2-6d05b1d4d9a1;
 Fri, 19 Jan 2024 16:51:58 +0100 (CET)
Received: by mail-oo1-f46.google.com with SMTP id
 006d021491bc7-58e256505f7so424443eaf.3
 for <xen-devel@lists.xenproject.org>; Fri, 19 Jan 2024 07:51:58 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: acd3a3d9-b6e2-11ee-98f2-6d05b1d4d9a1
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705679517; x=1706284317;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to;
        bh=pm28q3TZ7lhHecJgTwi+Q6z2jRKdFYN2qkBEe1yZM3c=;
        b=AKJw/DW8Q/0gvs8YsIsvxQYM7DGQeIQni4aqFlI6WBV2hggUpg7srOsPzcAFYCV/pM
         w8WchMK6ON7tbuP2NcSFit2ZCTjMPk9eqmGmDrKve89KtuNREW4kMKqR6CeqLfm9sMXL
         waNi6Kn3bAW5ZT4GLjrWw854IE7frc6Na7N/e5SdkNSASXOJUsPoOb2S38R7SGAfBHQC
         zyu58doi18kyKiLBcKOlep1/CR5o/DhKYBqkrG6auW34HlG+tajxF1AKU5KkoRGFG5Ta
         bn3p6AZR5UY3+muxgEjQlC8oFUsFGkptMrvrbpl8XUCdZD6RT0P4tg8V5z7HVIpWl0ty
         Rbsw==
X-Gm-Message-State: AOJu0YwlkfqHh1KDZzWQxR0/pbEjuGsC/Y1ugH27htHGYN+6TyZyRx3Q
	E4ioxZd4TtNH8+s5CtvaHdr16bfSCDyUjTlj1x4SOE+SFueUOhU0fXRMjpYlKuqLwy1IrIuaOID
	YB0d5+KAMXdCEac+dtwU9qSNyyiHKYjaU
X-Google-Smtp-Source: AGHT+IGOk5ESY163S3DnNHuFubZY8eO9yL9Ac3aC7HXnxaDG4leZUWEE8gGgqLhNtBX6PEc76/aH9EwQMp+5oPA8ns0=
X-Received: by 2002:a05:6359:2ea3:b0:176:1227:873f with SMTP id
 rp35-20020a0563592ea300b001761227873fmr2750024rwb.50.1705679516755; Fri, 19
 Jan 2024 07:51:56 -0800 (PST)
MIME-Version: 1.0
References: <YdQgf2+E467kuTxK@Air-de-Roger> <CAKhsbWbrvF6M-SAocACO5NvBaitUQ9mB5Qx+fMGtn_yVu0ZvEA@mail.gmail.com>
 <YdWsPWqALWBRGtqW@Air-de-Roger> <CAKhsbWbvjEcA220TTHGB3PPbfLmdS_MuK5Mn3Xvrr+JL=dHK7w@mail.gmail.com>
 <YdxIbLYRYh4hvVGj@Air-de-Roger> <CAKhsbWYHhveuwTjaiSGKCqf41nSHZKdt7W_y0qp-x09Pce22SA@mail.gmail.com>
 <735adbe4-238b-bb7b-ba91-eb53759223aa@onlineschubla.de> <Y2OwzjfUnCFf2EDU@Air-de-Roger>
 <CAKhsbWZM3y7D=vQzng3GndQOzhx5RcDHWFVXdJZhCt-qz5CtwQ@mail.gmail.com>
 <DCF59D19-59C2-43E9-9F25-7F64FFF691F7@appli.se> <ZZ1P4lSL_jPztGJ3@macbook>
In-Reply-To: <ZZ1P4lSL_jPztGJ3@macbook>
From: "G.R." <firemeteor@users.sourceforge.net>
Date: Fri, 19 Jan 2024 23:51:45 +0800
Message-ID: <CAKhsbWZBYGmTjf_L99U=Az7ijLS2zqGOv90zfBCVtVRbL80oUQ@mail.gmail.com>
Subject: Re: Possible bug? DOM-U network stopped working after fatal error
 reported in DOM0
To: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
Cc: Niklas Hallqvist <niklas@appli.se>, Paul Leiber <paul@onlineschubla.de>, 
	xen-devel@lists.xenproject.org
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

On Tue, Jan 9, 2024 at 11:28=E2=80=AFPM Roger Pau Monn=C3=A9 <roger.pau@cit=
rix.com> wrote:
>
> On Tue, Jan 09, 2024 at 12:13:04PM +0100, Niklas Hallqvist wrote:
> > > On 14 Dec 2022, at 07:16, G.R. <firemeteor@users.sourceforge.net> wro=
te:
...
> > > Hi Roger,
> > > Just another query of the latest status. It'll be great if you can
> > > share a link to the upstream commit.
> > > I'm thinking of asking for a back-port of your fix to the FreeNAS
> > > community, assuming it will take a long time to roll out otherwise.
> > >
> > > Thanks,
> > > G.R.
> > >
> > >>
> > >> Thanks, Roger.
> > >
> > >
> >
> > Hi everyone!
> >
> > So did anything ever happen on this?  I find myself in the same situati=
on with TrueNAS core 13, and can=E2=80=99t see any signs of changes in the =
FreeBSD 13 branches.
>
> Hello,
>
> I don't think the change is suitable to backport, it's IMO too
> intrusive and risky.  It was committed late 2022, and it's in 14.0:
>
...
> TrueNAS/OOPNsense might consider picking it up themselves.
>
> Thanks, Roger.

Just FYI: I was able to locate that commit in 14.0 tree and
cherry-picked it into TrueNas 13.
I did it last November and the build has been running stably without
issue since.
The fix was fairly standalone and didn't cause any trouble during the
cherry-picking so it could be reasonable to raise a request in the
TrueNAS forum.

Thanks,
G.R.


From xen-devel-bounces@lists.xenproject.org Fri Jan 19 16:38:02 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 19 Jan 2024 16:38:02 +0000
Received: from list by lists.xenproject.org with outflank-mailman.669105.1041730 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQrsJ-0006pz-2d; Fri, 19 Jan 2024 16:37:47 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 669105.1041730; Fri, 19 Jan 2024 16:37:47 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQrsI-0006ps-US; Fri, 19 Jan 2024 16:37:46 +0000
Received: by outflank-mailman (input) for mailman id 669105;
 Fri, 19 Jan 2024 16:37:45 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=Jo6V=I5=cloud.com=kelly.choi@srs-se1.protection.inumbo.net>)
 id 1rQrsH-0006pj-4A
 for xen-devel@lists.xenproject.org; Fri, 19 Jan 2024 16:37:45 +0000
Received: from mail-ed1-x530.google.com (mail-ed1-x530.google.com
 [2a00:1450:4864:20::530])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 10268793-b6e9-11ee-9b0f-b553b5be7939;
 Fri, 19 Jan 2024 17:37:41 +0100 (CET)
Received: by mail-ed1-x530.google.com with SMTP id
 4fb4d7f45d1cf-55817a12ad8so1193891a12.2
 for <xen-devel@lists.xenproject.org>; Fri, 19 Jan 2024 08:37:41 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 10268793-b6e9-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1705682260; x=1706287060; darn=lists.xenproject.org;
        h=cc:to:subject:message-id:date:from:in-reply-to:references
         :mime-version:from:to:cc:subject:date:message-id:reply-to;
        bh=Dtt1XAW+DZfm925wcYuRAbgJ+P2Ik8LAxBkmFV2iZFI=;
        b=RmE45aU1xbkxqrF6IQRRCLBKmXiL0YUKLO7Y++kc84j28gH0XqkwbjeRpYGoVgLkNh
         B8JORCuITOm5o3U0iwhttvPFXKXm9jOLVxyBikwLWnfqSagiCmukVXcTpVL0DLBiw5mB
         2RjtX5yBtxFc0AInrRJ4HWqiOcg9bhtGJ5M3I=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705682260; x=1706287060;
        h=cc:to:subject:message-id:date:from:in-reply-to:references
         :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id
         :reply-to;
        bh=Dtt1XAW+DZfm925wcYuRAbgJ+P2Ik8LAxBkmFV2iZFI=;
        b=BaSJDsMs/Zxf6+AiL7T61le/8/sT1dILwBG64ZdnwnxwKJUnND43bBs6bELOmediM0
         JVtSD2CHisV497gFy9X5TuwomVyhveL/sF6O2PVv3LgIeZGqHv5qrQVZ6kmKIFMH7wfq
         +WDGScjAwIQF3vqnkftcKxyqSJRRnnBWSVZ5CKyN7dKFRFaYagNupHeeQKZEMrXCCSsp
         bmjC82KdX4PtPOPPoQ47EfwWhy10Xw41VGZfl6wPexoTyir6G+p3hi4clNh/1IZl1neF
         5X4UBA18ra4usI9/tS5OpVLf2dbe7NYL5HE5aax8UKmuvfTClt6GSqMUj7vNzx6damho
         KTiA==
X-Gm-Message-State: AOJu0YxdoipR88bQWaaAQBUAMz3YqsTMZpB1cDoPKRVxPzOjbPUFbFVG
	ME8aBv05WsuoRFbwNhLYyTP88hjw7v3ss3qw0vwstbbRMZlrvSu0myBeaM1zotLS5ztL8g9JnJs
	9KDMd0CAItaCBQZIKP45OrLyW5YB1vFdMz4AOKw1riWB07Z+BvV98M/1B
X-Google-Smtp-Source: AGHT+IF49d6hzdACgpDXFFhGV48xsUKLL1Wuel2uzgDSb90grb0F1ng4m7vTrlOqn8k97A5mOxxgzGeYJUoIF2rHbo0=
X-Received: by 2002:a17:906:34d1:b0:a28:e3b6:a199 with SMTP id
 h17-20020a17090634d100b00a28e3b6a199mr22590ejb.38.1705682260427; Fri, 19 Jan
 2024 08:37:40 -0800 (PST)
MIME-Version: 1.0
References: <CAO-mL=yvVWjnOHSFSqcrknoXOqk-N3JY76qObQnzftrkmsq6xw@mail.gmail.com>
 <509c9419-650a-4a7c-83e4-7a5204c53645@vates.tech>
In-Reply-To: <509c9419-650a-4a7c-83e4-7a5204c53645@vates.tech>
From: Kelly Choi <kelly.choi@cloud.com>
Date: Fri, 19 Jan 2024 16:37:04 +0000
Message-ID: <CAO-mL=zL2gknk5OE0NBcQjoq8sE=2c=Zs+9KhzKMxKcwtx4wpA@mail.gmail.com>
Subject: Re: Community Process Group - Proposal
To: Yann Dirson <yann.dirson@vates.tech>
Cc: xen-devel@lists.xenproject.org, committers@xenproject.org
Content-Type: multipart/alternative; boundary="0000000000003b9bbf060f4f1951"

--0000000000003b9bbf060f4f1951
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

Hi Yann,

See my reply below

On Thu, Jan 18, 2024 at 10:09=E2=80=AFAM Yann Dirson <yann.dirson@vates.tec=
h> wrote:

> Hi all,
>
> On 1/17/24 18:10, Kelly Choi wrote:
> > Hi everyone,
> >
> > I've spent a bit of time talking to various individuals and the advisor=
y
> > board about setting up a new Community Process Group.
> >
> > A survey was recently conducted to identify how the community as a whol=
e
> > feels about a certain situation. It was not intended to ban specific
> > wording or create a policy to do so, but more to give context that the
> > community has a wide range of ideas, and individuals may agree and
> > disagree a lot more frequently than we as individuals might think. It
> > helps us understand that as a community there are many situations where
> > it is not clear. As such, the results indicated a very even split among
> > the community, which indicates a larger problem as we may not always
> > come to agreement.
> >
> > There is obvious frustration with how certain matters are handled, as
> > some members may want the project to move faster, whereas others like t=
o
> > take a cautious approach. Given we are an open source project,
> > differences in opinion are likely to happen and what we don=E2=80=99t w=
ant to do
> > is cause further frustration.
> >
> > *This is where I would like to propose the idea of a =E2=80=98Community=
 Process
> > Group=E2=80=99.*
>
> That made me look for a list of official roles in the project, which I
> found at [0].  How up-to-date is this list?  The Release Manager role is
> mentioned there but not described, the Community Manager role is not
> mentioned at all, and the only link to get project leadership info [1]
> redirects to unrelated information.
>
> [0] https://xenproject.org/developers/governance/#roles-local
> [1] https://xenproject.org/developers/teams/hypervisor
>
> I feel it would be necessary to have a clear view on the current
> situation, before adding more structures.
>

Aspects of the information on the website are outdated and do require
reviewing as part of a wider governance update.
However, the majority of the information such as the roles of committers is
still accurate. In this specific instance, the CPG would act fairly similar
to a project lead in terms of progressing the project forward. Rather than
it being one person, it will be a collective group of elected members. From
my understanding, we haven't had a project lead for a very long time within
the project and this was before the governance was formalized. If the
community is happy, we can replace the project lead role with the CPG.

For clarification, this is the current governance policy in relation to the
project lead/leadership team:
*"Sub-projects and teams hosted on Xenproject.org are not democracies but
meritocracies. In situations where there is disagreement on issues related
to the day-to-day running of the project, the project leadership team is
expected to act as referee and make a decision on behalf of the community.
Projects leadership teams can choose to delegate entire classes of conflict
resolution issues to community members and/or the project lead (e.g. the
project can choose to delegate refereeing on committer disagreements to the
project lead; or it could choose a specific committer to always act as
referee amongst a group of committers). Any such delegation needs to be
approved as normal and has to be documented.*



*Should a project leadership team become dysfunctional or paralysed, the
project leadership team or project lead should work with the community
manager or advisory board to find a way forward.In situations where the
entire Xen Project community becomes paralysed the impacted project
leadership teams or project leads should work with the community manager or
advisory board to find a way forward.*

I will take your feedback on board to add descriptions to the release
manager role and propose this to the mailing list.
You will find the description of the community manager role on the page
under 'Xen Project wide roles'.


>
> >
> > A CPG can help as they will be able to advise members on similar issues
> > regarding community processes or appeals and decide on the best way
> > forward. To help with this process, I have consulted with various
> > individuals including some committers and conduct team members.
> > *
> > What is a CPG=E2=80=99s purpose?*
> > In the first instance, we would expect an informal vote resolves most
> > disagreements. However, there will be certain circumstances where the
> > outcome is not always agreed on.
> >
> > A CPG will be your second point of call, where you can escalate matters
> > quickly for a democratic solution.
> >
> > Their purpose is to resolve process issues and informal vote appeals to
> > avoid matters going to a formal vote, but also act as a representative
> > on behalf of others in the community on future matters.
> >
> > For example:
> >
> >   * Naming conventions
> >   * Whether feedback requesting changes on a patch series is acceptable
> >   * How to move forward in case of non-actionable feedback to a patch
> series
> >   * How to move forward when a contributor or reviewer has not been
> >     responsive
> >   * Policy questions not related to the code of conduct
> >
> > *What is their role and responsibility?*
> >
> > The CPG has the authority to propose a resolution to situations where
> > there are disagreements, that don=E2=80=99t involve large technical dec=
isions.
> > Their decision proposed should be accepted as final since members will
> > have discussed the best steps and come to a consensus vote.
> >
> > The CPG does not aim to replace the committers' authority or the
> > advisory board but instead holds the authority to make decisions that
> > are in the best interest of the community in relation to processes.
> > Committers still hold the power should there be a formal escalation
> > regarding technical decisions, but this would be extremely rare.
> > Advisory Board members hold the final power regarding project and
> > business-wide decisions.
> >
> > *How are members selected?*
> > The CPG will be composed of 5 randomly selected members in total.
> > An odd number has been purposely selected to avoid an impasse during
> > decisions.
>
> Do you have any specific idea of how "randomly selected" would work?
> I mean, having a die rolled behind closed doors is not going to help
> building trust.  Now there are rather-simple algorithms for Distributed
> Dice Rolling, like [2], but there would be a few practical details to
> make explicit.
>
> [2]
>
> https://stackoverflow.com/questions/224058/distributed-random-number-gene=
ration
>
>
I'd propose using a live random name selector on the community call, to
ensure transparency.
We would, of course, have the full names of people who fit the criteria
below before we can do this.

>
> > The criteria:
> > Individual members must be active contributors and are willing to help
> > the community succeed. As such they must be a part of the following
> groups:
> >
> >   * Committers
> >   * Active Maintainers: maintainers with >=3D 20 reviews in the last 2
> >     releases
> >   * Active Contributors: contributors with >=3D 10 commits in the last =
2
> >     releases
> >
> > Future rotations of CPG members:
> > New members will be selected randomly for each new release to ensure
> > fairness.
> >
> > *Expectations*
> > CPG members are expected to use their best judgement of what is best fo=
r
> > the community in terms of conflict resolution and process improvements.
> > They can propose an outcome that progresses the project forward.
> > The CPG is also expected to address wider concerns, feedback, and ideas
> > during a monthly meeting with all community members.
> >
> > For example:
> >
> >   * If someone is displaying repeated concerning behaviour that disrupt=
s
> >     the community, members can ask the CPG for help on a solution. (Thi=
s
> >     is different from a code of conduct violation which would be for
> >     serious offences only.)
> >   * Help drive discussions on how much we deviate from technical
> >     specifications
> >
> > *Next steps*
> > Given this suggestion is a big change in what I hope is a positive
> > direction, we will require your feedback and a final formal vote on the
> > process, before it is implemented into the governance policies. The
> > specific wording can be decided after this proposal.
> >
> > This will hopefully help us overcome some of the frustrations and issue=
s
> > we have seen in the community from a difference in opinion as a
> > collective discussion will now be made. Should we need to, the process
> > can be reviewed to improve at later stages.
> >
> > I welcome your feedback as a community on this proposal.
> >
> > Many thanks,
> > Kelly Choi
> >
> > Community Manager
> > Xen Project
>
>
> Yann Dirson | Vates Platform Developer
>
> XCP-ng & Xen Orchestra - Vates solutions
>
> web: https://vates.tech
>
>

--0000000000003b9bbf060f4f1951
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><div dir=3D"ltr">Hi Yann,</div><div dir=3D"ltr"><br></div>=
<div dir=3D"ltr">See my reply below<br clear=3D"all"><div><div dir=3D"ltr" =
class=3D"gmail_signature"><div dir=3D"ltr"><div><br></div></div></div></div=
></div><div class=3D"gmail_quote"><div dir=3D"ltr" class=3D"gmail_attr">On =
Thu, Jan 18, 2024 at 10:09=E2=80=AFAM Yann Dirson &lt;yann.dirson@vates.tec=
h&gt; wrote:<br></div><blockquote class=3D"gmail_quote" style=3D"margin:0px=
 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Hi =
all,<br>
<br>
On 1/17/24 18:10, Kelly Choi wrote:<br>
&gt; Hi everyone,<br>
&gt; <br>
&gt; I&#39;ve spent a bit of time talking to various individuals and the ad=
visory <br>
&gt; board about setting up a new Community Process Group.<br>
&gt; <br>
&gt; A survey was recently conducted to identify how the community as a who=
le <br>
&gt; feels about a certain situation. It was not intended to ban specific <=
br>
&gt; wording or create a policy to do so, but more to give context that the=
 <br>
&gt; community has a wide range of ideas, and individuals may agree and <br=
>
&gt; disagree a lot more frequently than we as individuals might think. It =
<br>
&gt; helps us understand that as a community there are many situations wher=
e <br>
&gt; it is not clear. As such, the results indicated a very even split amon=
g <br>
&gt; the community, which indicates a larger problem as we may not always <=
br>
&gt; come to agreement.<br>
&gt; <br>
&gt; There is obvious frustration with how certain matters are handled, as =
<br>
&gt; some members may want the project to move faster, whereas others like =
to <br>
&gt; take a cautious approach. Given we are an open source project, <br>
&gt; differences in opinion are likely to happen and what we don=E2=80=99t =
want to do <br>
&gt; is cause further frustration.<br>
&gt; <br>
&gt; *This is where I would like to propose the idea of a =E2=80=98Communit=
y Process <br>
&gt; Group=E2=80=99.*<br>
<br>
That made me look for a list of official roles in the project, which I<br>
found at [0].=C2=A0 How up-to-date is this list?=C2=A0 The Release Manager =
role is<br>
mentioned there but not described, the Community Manager role is not<br>
mentioned at all, and the only link to get project leadership info [1]<br>
redirects to unrelated information.<br>
<br>
[0] <a href=3D"https://xenproject.org/developers/governance/#roles-local" r=
el=3D"noreferrer" target=3D"_blank">https://xenproject.org/developers/gover=
nance/#roles-local</a><br>
[1] <a href=3D"https://xenproject.org/developers/teams/hypervisor" rel=3D"n=
oreferrer" target=3D"_blank">https://xenproject.org/developers/teams/hyperv=
isor</a><br>
<br>
I feel it would be necessary to have a clear view on the current<br>
situation, before adding more structures.<br></blockquote><div><br></div><d=
iv>Aspects of the information on the website are outdated and do require re=
viewing as part of a wider governance update.=C2=A0</div><div>However, the =
majority of the information such as the roles of committers is still accura=
te. In this specific instance, the CPG would act fairly similar to a projec=
t lead in terms of progressing the project forward. Rather than it being on=
e person, it will be a collective group of elected members. From my underst=
anding, we haven&#39;t had a project lead for a very long time within the p=
roject and this was before the=C2=A0governance was formalized. If the commu=
nity is happy, we can replace the project lead role with the CPG.=C2=A0</di=
v><div><br></div><div>For clarification, this is the=C2=A0current governanc=
e policy in relation to the project lead/leadership team:</div><div><i>&quo=
t;Sub-projects and teams hosted on Xenproject.org are not democracies but m=
eritocracies. In situations where there is disagreement on issues related t=
o the day-to-day running of the project, the project leadership team is exp=
ected to act as referee and make a decision on behalf of the community. Pro=
jects leadership teams can choose to delegate entire classes of conflict re=
solution issues to community members and/or the project lead (e.g. the proj=
ect can choose to delegate refereeing on committer disagreements to the pro=
ject lead; or it could choose a specific committer to always act as referee=
 amongst a group of committers). Any such delegation needs to be approved a=
s normal and has to be documented.</i></div><i><br>Should a project leaders=
hip team become dysfunctional or paralysed, the project leadership team or =
project lead should work with the community manager or advisory board to fi=
nd a way forward.<br><br>In situations where the entire Xen Project communi=
ty becomes paralysed the impacted project leadership teams or project leads=
 should work with the community manager or advisory board to find a way for=
ward.</i></div><div class=3D"gmail_quote"><i><br></i><div>I will take your =
feedback on board to add descriptions to the release manager role and propo=
se this to the mailing list.=C2=A0</div><div>You will find the description =
of the community manager role on the page under &#39;Xen Project wide roles=
&#39;.=C2=A0</div><div>=C2=A0</div><blockquote class=3D"gmail_quote" style=
=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding=
-left:1ex">
<br>
&gt; <br>
&gt; A CPG=C2=A0can help as they will be able to advise members on similar =
issues <br>
&gt; regarding community processes or appeals and decide on the best way <b=
r>
&gt; forward. To help with this process, I have consulted with various <br>
&gt; individuals including some committers and conduct team members.<br>
&gt; *<br>
&gt; What is a CPG=E2=80=99s purpose?*<br>
&gt; In the first instance, we would expect an informal vote resolves most =
<br>
&gt; disagreements. However, there will be certain circumstances where the =
<br>
&gt; outcome is not always agreed on.<br>
&gt; <br>
&gt; A CPG=C2=A0will be your second point of call, where you can escalate m=
atters <br>
&gt; quickly for a democratic solution.<br>
&gt; <br>
&gt; Their purpose is to resolve process issues and informal vote appeals t=
o <br>
&gt; avoid matters going to a formal vote, but also act as a representative=
 <br>
&gt; on behalf of others in the community on future matters.<br>
&gt; <br>
&gt; For example:<br>
&gt; <br>
&gt;=C2=A0 =C2=A0* Naming conventions<br>
&gt;=C2=A0 =C2=A0* Whether feedback requesting changes on a patch series is=
 acceptable<br>
&gt;=C2=A0 =C2=A0* How to move forward in case of non-actionable feedback t=
o a patch series<br>
&gt;=C2=A0 =C2=A0* How to move forward when a contributor or reviewer has n=
ot been<br>
&gt;=C2=A0 =C2=A0 =C2=A0responsive<br>
&gt;=C2=A0 =C2=A0* Policy questions not related to the code of conduct<br>
&gt; <br>
&gt; *What is their role and responsibility?*<br>
&gt; <br>
&gt; The CPG=C2=A0has the authority to propose a resolution to situations w=
here <br>
&gt; there are disagreements, that don=E2=80=99t involve large technical de=
cisions. <br>
&gt; Their decision proposed should be accepted as final since members will=
 <br>
&gt; have discussed the best steps and come to a consensus vote.<br>
&gt; <br>
&gt; The CPG=C2=A0does not aim to replace the committers&#39; authority or =
the <br>
&gt; advisory board but instead holds the authority to make decisions that =
<br>
&gt; are in the best interest of the community in relation to processes. <b=
r>
&gt; Committers still hold the power should there be a formal escalation <b=
r>
&gt; regarding technical decisions, but this would be extremely rare. <br>
&gt; Advisory Board members hold the final power regarding project and <br>
&gt; business-wide decisions.<br>
&gt; <br>
&gt; *How are members selected?*<br>
&gt; The CPG=C2=A0will be composed of 5 randomly selected members in total.=
<br>
&gt; An odd number has been purposely selected to avoid an impasse during <=
br>
&gt; decisions.<br>
<br>
Do you have any specific idea of how &quot;randomly selected&quot; would wo=
rk?<br>
I mean, having a die rolled behind closed doors is not going to help<br>
building trust.=C2=A0 Now there are rather-simple algorithms for Distribute=
d<br>
Dice Rolling, like [2], but there would be a few practical details to<br>
make explicit.<br>
<br>
[2] <br>
<a href=3D"https://stackoverflow.com/questions/224058/distributed-random-nu=
mber-generation" rel=3D"noreferrer" target=3D"_blank">https://stackoverflow=
.com/questions/224058/distributed-random-number-generation</a><br>
<br></blockquote><div>=C2=A0</div><div>I&#39;d propose using a live random =
name selector on the community call, to ensure transparency.=C2=A0=C2=A0</d=
iv><div>We would, of course, have the full names of people who fit the crit=
eria below before we can do this.=C2=A0</div><div><br></div><blockquote cla=
ss=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid =
rgb(204,204,204);padding-left:1ex">
&gt; <br>
&gt; The criteria:<br>
&gt; Individual members must be active contributors and are willing to help=
 <br>
&gt; the community succeed. As such they must be a part of the following gr=
oups:<br>
&gt; <br>
&gt;=C2=A0 =C2=A0* Committers<br>
&gt;=C2=A0 =C2=A0* Active Maintainers: maintainers with &gt;=3D 20 reviews =
in the last 2<br>
&gt;=C2=A0 =C2=A0 =C2=A0releases<br>
&gt;=C2=A0 =C2=A0* Active Contributors: contributors with &gt;=3D 10 commit=
s in the last 2<br>
&gt;=C2=A0 =C2=A0 =C2=A0releases<br>
&gt; <br>
&gt; Future rotations of CPG=C2=A0members:<br>
&gt; New members will be selected randomly for each new release to ensure <=
br>
&gt; fairness.<br>
&gt; <br>
&gt; *Expectations*<br>
&gt; CPG=C2=A0members are expected to use their best judgement of what is b=
est for <br>
&gt; the community in terms of conflict resolution and process improvements=
. <br>
&gt; They can propose an outcome that progresses the project forward.<br>
&gt; The CPG=C2=A0is also expected to address wider concerns, feedback, and=
 ideas <br>
&gt; during a monthly meeting with all community members.<br>
&gt; <br>
&gt; For example:<br>
&gt; <br>
&gt;=C2=A0 =C2=A0* If someone is displaying repeated concerning behaviour t=
hat disrupts<br>
&gt;=C2=A0 =C2=A0 =C2=A0the community, members can ask the CPG=C2=A0for hel=
p on a solution. (This<br>
&gt;=C2=A0 =C2=A0 =C2=A0is different from a code of conduct violation which=
 would be for<br>
&gt;=C2=A0 =C2=A0 =C2=A0serious offences only.)<br>
&gt;=C2=A0 =C2=A0* Help drive discussions on how much we deviate from techn=
ical<br>
&gt;=C2=A0 =C2=A0 =C2=A0specifications<br>
&gt; <br>
&gt; *Next steps*<br>
&gt; Given this suggestion is a big change in what I hope is a positive <br=
>
&gt; direction, we will require your feedback and a final formal vote on th=
e <br>
&gt; process, before it is implemented into the governance policies. The <b=
r>
&gt; specific wording can be decided after this proposal.<br>
&gt; <br>
&gt; This will hopefully help us overcome some of the frustrations and issu=
es <br>
&gt; we have seen in the community from a difference in opinion as a <br>
&gt; collective discussion will now be made. Should we need to, the process=
 <br>
&gt; can be reviewed to improve at later stages.<br>
&gt; <br>
&gt; I welcome your feedback as a community on this proposal.<br>
&gt; <br>
&gt; Many thanks,<br>
&gt; Kelly Choi<br>
&gt; <br>
&gt; Community Manager<br>
&gt; Xen Project<br>
<br>
<br>
Yann Dirson | Vates Platform Developer<br>
<br>
XCP-ng &amp; Xen Orchestra - Vates solutions<br>
<br>
web: <a href=3D"https://vates.tech" rel=3D"noreferrer" target=3D"_blank">ht=
tps://vates.tech</a><br>
<br>
</blockquote></div></div>

--0000000000003b9bbf060f4f1951--


From xen-devel-bounces@lists.xenproject.org Fri Jan 19 17:04:39 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 19 Jan 2024 17:04:39 +0000
Received: from list by lists.xenproject.org with outflank-mailman.669114.1041739 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQsID-0003yW-4T; Fri, 19 Jan 2024 17:04:33 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 669114.1041739; Fri, 19 Jan 2024 17:04:33 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQsID-0003yP-1O; Fri, 19 Jan 2024 17:04:33 +0000
Received: by outflank-mailman (input) for mailman id 669114;
 Fri, 19 Jan 2024 17:04:32 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=B1jB=I5=linaro.org=philmd@srs-se1.protection.inumbo.net>)
 id 1rQsIC-0003yJ-Gs
 for xen-devel@lists.xenproject.org; Fri, 19 Jan 2024 17:04:32 +0000
Received: from mail-wr1-x429.google.com (mail-wr1-x429.google.com
 [2a00:1450:4864:20::429])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id d012a064-b6ec-11ee-98f2-6d05b1d4d9a1;
 Fri, 19 Jan 2024 18:04:31 +0100 (CET)
Received: by mail-wr1-x429.google.com with SMTP id
 ffacd0b85a97d-337d58942c9so964365f8f.0
 for <xen-devel@lists.xenproject.org>; Fri, 19 Jan 2024 09:04:31 -0800 (PST)
Received: from [192.168.1.67] ([78.196.4.158])
 by smtp.gmail.com with ESMTPSA id
 o9-20020adfe809000000b00337bf81e06bsm6914635wrm.48.2024.01.19.09.04.29
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Fri, 19 Jan 2024 09:04:30 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: d012a064-b6ec-11ee-98f2-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=linaro.org; s=google; t=1705683871; x=1706288671; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:from:references:cc:to
         :content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=Qc2Peb2JtOjy+B1gVthMdZe/szYQ6eQYqtZctt3o1nc=;
        b=tTWv+xfwfZ16ZUYt2N+sMu17QR1eaEgER9YRD59nXJsxYyqZksT9U8fXDQ/YNh5f8A
         MXT9QTvsAAEyWkfrmP2Z4giHy1pBOHIgZD3AWah6Egl01Mvan2l2UIipbQaAXEbhMB4Q
         d4nN9EemVf4REkLjgCYny0XcVPvCKH9ZrOu24RmDAYYag9zycvKQ9Kya+DJUFMrmEK8I
         fxzkykB6+SkMTLoKikbP6TQu+zWby96DsI/VZBel83bBlqKuGJls7cQ0LUxioOyzisvZ
         BdArHC+A9M3k4Z35eOm3xB7Jq1TCN/c8Y/bxm/b3Fw43qAPrAMvsU0ZKC97v/7f/SVKE
         8axw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705683871; x=1706288671;
        h=content-transfer-encoding:in-reply-to:from:references:cc:to
         :content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=Qc2Peb2JtOjy+B1gVthMdZe/szYQ6eQYqtZctt3o1nc=;
        b=hIjV77D6Ajez3CMoR9j9fXZpsA6IoFfC9+4QTJTT0wz5LayNO/12YQ7vKdULWTsQ7e
         koNxc6Aw8nQq6N5lbkMhB5KY//lL0VoTTyG+QaWmL7Ig7KqHWdd6hSKqmiUpLpgsfvKu
         atFwAUesukyqNY45bBQxFYfIFX1y05qF9Vi4sKa8qyx9Ev1RfTZlVrKauMQgPZDU+97/
         aVoHAm89OFQElrZZXN81ZceIJvsLyfAOCWeQvx/XknvxyChmUbqHXIQGJlU3sBF+QSy+
         ulBWzUHXfPc6TNzaAadLdjpOxNfmt9+M7FhjyO48hzwXkeOSvfhmoJdxYLZHelftkE6u
         /w0g==
X-Gm-Message-State: AOJu0YwEXi9dYlqF+yoDenVLER95x7VzRe3nDlfQ4sF4ICU2FdEpIrGR
	DEECCL8Wylxngm/cTlT45tB0Crk258P9A+u/pb9/Q3A2i1iy96W/QdRUHI3ERg0=
X-Google-Smtp-Source: AGHT+IEDul5qUywMEJN+jSpZ6HXwnoasyUWK6xBsr0YM5aaNwbaNPCRkpy+8DrtQEvcE2bjVbOg8uw==
X-Received: by 2002:a5d:654d:0:b0:337:a7fb:90d6 with SMTP id z13-20020a5d654d000000b00337a7fb90d6mr5721wrv.79.1705683871090;
        Fri, 19 Jan 2024 09:04:31 -0800 (PST)
Message-ID: <e25f2ede-1264-4c74-bc10-df7d9f874d47@linaro.org>
Date: Fri, 19 Jan 2024 18:04:28 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2 5/5] hw/xen: convert stderr prints to error/warn
 reports
Content-Language: en-US
To: Manos Pitsidianakis <manos.pitsidianakis@linaro.org>,
 qemu-devel@nongnu.org
Cc: qemu-arm@nongnu.org, Paolo Bonzini <pbonzini@redhat.com>,
 =?UTF-8?Q?Alex_Benn=C3=A9e?= <alex.bennee@linaro.org>,
 Stefano Stabellini <sstabellini@kernel.org>,
 Anthony Perard <anthony.perard@citrix.com>, Paul Durrant <paul@xen.org>,
 xen-devel@lists.xenproject.org
References: <cover.1705670342.git.manos.pitsidianakis@linaro.org>
 <bf5504369023dc115f0d7a756c4c5254fa9cd10d.1705670342.git.manos.pitsidianakis@linaro.org>
From: =?UTF-8?Q?Philippe_Mathieu-Daud=C3=A9?= <philmd@linaro.org>
In-Reply-To: <bf5504369023dc115f0d7a756c4c5254fa9cd10d.1705670342.git.manos.pitsidianakis@linaro.org>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit

On 19/1/24 14:24, Manos Pitsidianakis wrote:
> According to the QEMU Coding Style document:
> 
>> Do not use printf(), fprintf() or monitor_printf(). Instead, use
>> error_report() or error_vreport() from error-report.h. This ensures the
>> error is reported in the right place (current monitor or stderr), and in
>> a uniform format.
>> Use error_printf() & friends to print additional information.
> 
> This commit changes fprintfs that report warnings and errors to the
> appropriate report functions.
> 
> Signed-off-by: Manos Pitsidianakis <manos.pitsidianakis@linaro.org>
> ---
>   hw/xen/xen-hvm-common.c | 12 ++++++------
>   hw/xen/xen-mapcache.c   |  5 ++---
>   2 files changed, 8 insertions(+), 9 deletions(-)

Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>



From xen-devel-bounces@lists.xenproject.org Fri Jan 19 17:28:30 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 19 Jan 2024 17:28:30 +0000
Received: from list by lists.xenproject.org with outflank-mailman.669118.1041749 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQsfI-00088h-VH; Fri, 19 Jan 2024 17:28:24 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 669118.1041749; Fri, 19 Jan 2024 17:28:24 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQsfI-00088a-SJ; Fri, 19 Jan 2024 17:28:24 +0000
Received: by outflank-mailman (input) for mailman id 669118;
 Fri, 19 Jan 2024 17:28:24 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=ePSo=I5=gmail.com=oleksii.kurochko@srs-se1.protection.inumbo.net>)
 id 1rQsfI-00088U-5Y
 for xen-devel@lists.xenproject.org; Fri, 19 Jan 2024 17:28:24 +0000
Received: from mail-ed1-x52c.google.com (mail-ed1-x52c.google.com
 [2a00:1450:4864:20::52c])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 25631ecd-b6f0-11ee-98f2-6d05b1d4d9a1;
 Fri, 19 Jan 2024 18:28:23 +0100 (CET)
Received: by mail-ed1-x52c.google.com with SMTP id
 4fb4d7f45d1cf-55a035669d5so1286456a12.2
 for <xen-devel@lists.xenproject.org>; Fri, 19 Jan 2024 09:28:23 -0800 (PST)
Received: from [192.168.206.239] ([94.75.70.14])
 by smtp.gmail.com with ESMTPSA id
 i24-20020aa7c718000000b0055a414021absm1668420edq.32.2024.01.19.09.28.22
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Fri, 19 Jan 2024 09:28:22 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 25631ecd-b6f0-11ee-98f2-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1705685303; x=1706290103; darn=lists.xenproject.org;
        h=mime-version:user-agent:content-transfer-encoding:references
         :in-reply-to:date:cc:to:from:subject:message-id:from:to:cc:subject
         :date:message-id:reply-to;
        bh=m9qwSdcMbCLPL+YyNdetw0pXkkS/yDvUKfYSCu8HI40=;
        b=Qm+6hWG7qi4W561cbosWjg3cDnd/yl13+VWFdxRe68o20yG6gs+FO1CFxktl4qlyez
         R2grDNhfpY3T6p5hNVC8tRLvGhHZ0Hbhq4irB3sjROSr9ECUjMnq4RbqDPAAww1wFr9p
         iHLJTDLyq21Kr+HO0w5roIXb7lv9j1iFpn09Mb+5Y9LzCyUvTBGjgl3PYRuYrFZAsBaa
         x5cT1ORG42xgopXrEjpAVhlsQBL5xlhHLOVqVfNX/vjTPVJ4/iV/y1MLlsfFIfdLfPAX
         pcTTea+CEwj3tETYNrHSWcOMlvY+zFGq9gSmuIrqAkBaVdwmerAldGbFGHfm4Pu/N1Kn
         WlfA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705685303; x=1706290103;
        h=mime-version:user-agent:content-transfer-encoding:references
         :in-reply-to:date:cc:to:from:subject:message-id:x-gm-message-state
         :from:to:cc:subject:date:message-id:reply-to;
        bh=m9qwSdcMbCLPL+YyNdetw0pXkkS/yDvUKfYSCu8HI40=;
        b=NxSzltkjf49C1++dPNee9P6Eqa6dUdoXbef4RDW1Vx6KQlJUq8yPP4uMbj+O5ryT2O
         avbsYCVlP/uZBQ7kp7Fldwq1k0IPuVxYGdgvOMxyd1ljrWRtz7VH1SEtiwHSbQlYKBDm
         JjiH2ww3YrMxzP+/N+cwSmoEq2O4Mb9TUgRjIurnjBiwibdMkbyF+maaoF89GASePTlt
         bYL2fpxwVcPe/LMc5KnycK94T+oo/qXud/gkPSN3+oS10ygz0Pj06gSn5NZuBG6I5YC6
         xHqr1Q5K7EuFNY3l1xWc4zwTSkJCgGQSTgukCyvm7rwm/mtASa/R1gqtTj18k0PKYsbc
         sA/A==
X-Gm-Message-State: AOJu0Yy+9uaeKcLIERYifDmrYggoThbyM3+mYSRk/RyAxzAFEBkiGFen
	KkkXKQUmRDvulnMfMMvdXMxWWdUY3Fc8u8ya97PDjjL6Gxp0uKf1qVUaiY9q
X-Google-Smtp-Source: AGHT+IEAWSQkgouh4ZCPp8oxQ061qlo9ISiJASAVSxcLIxrM8o+jL+z+NcIeO9BgzJP+eZBiF3ABwg==
X-Received: by 2002:a05:6402:1750:b0:55a:4895:b0ec with SMTP id v16-20020a056402175000b0055a4895b0ecmr45200edx.48.1705685302528;
        Fri, 19 Jan 2024 09:28:22 -0800 (PST)
Message-ID: <363e1543a2777577b31c635495da11d09e139013.camel@gmail.com>
Subject: Re: Xen 4.19 release management plan
From: Oleksii <oleksii.kurochko@gmail.com>
To: Jan Beulich <jbeulich@suse.com>
Cc: xen-devel@lists.xenproject.org
Date: Fri, 19 Jan 2024 19:28:21 +0200
In-Reply-To: <5e74a501-2824-42af-804b-47b515aa9bcf@suse.com>
References: <08a2f9bdd7ba1f9e1e8e67fdb48420ee89223b01.camel@gmail.com>
	 <5e74a501-2824-42af-804b-47b515aa9bcf@suse.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
User-Agent: Evolution 3.50.2 (3.50.2-1.fc39) 
MIME-Version: 1.0

On Tue, 2024-01-16 at 17:48 +0100, Jan Beulich wrote:
> (reducing Cc list)
>=20
> On 16.01.2024 17:32, Oleksii wrote:
> > Please reply with items you would like to see in 4.19 so that
> > people
> > know what is happening and prioritize accordingly.
> > You're welcome to provide a description and use cases of the
> > feature
> > you're working on.
>=20
> The "annotate entry points with type and size" series including as
> many
> as possible follow-ups on the x86 and Arm side, ideally bringing both
> architectures fully in shape for the new model.
>=20
> On x86,
> - among smaller scope ISA extension work we probably want to make
> =C2=A0 sure AVX10.1 is going to be usable by guests (patches already
> posted),
> - "x86: memcpy() / memset() (non-)ERMS flavors plus fallout"
>=20
> There's likely more, but let's go with this for now.
Thanks for sharing your items.

I would suggest that we also pay attention to the following:
 * NUMA: no need for asm/numa.h when !NUMA
 * move __read_mostly to xen/cache.h

At least, I am really interested in them as they are dependencies for
RISC-V patches.


Best regards,
 Oleksii


From xen-devel-bounces@lists.xenproject.org Fri Jan 19 18:22:18 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 19 Jan 2024 18:22:18 +0000
Received: from list by lists.xenproject.org with outflank-mailman.669122.1041759 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQtVA-0001ZT-OC; Fri, 19 Jan 2024 18:22:00 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 669122.1041759; Fri, 19 Jan 2024 18:22:00 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQtVA-0001ZM-LL; Fri, 19 Jan 2024 18:22:00 +0000
Received: by outflank-mailman (input) for mailman id 669122;
 Fri, 19 Jan 2024 18:21:59 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rQtV9-0001ZC-NL; Fri, 19 Jan 2024 18:21:59 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rQtV9-0000kk-EA; Fri, 19 Jan 2024 18:21:59 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rQtV9-00046D-0A; Fri, 19 Jan 2024 18:21:59 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rQtV8-0006f5-Vs; Fri, 19 Jan 2024 18:21:58 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=kzJjbRcN8Ra8lYvidli7ynm5sQ3U8QEhga4MPsQTu3A=; b=WiQhw5qX1juit8F3RZglcap/UH
	DwLMfY28osb+SYzBCplhM+TRE3qnvm4Ak5K69ymXCwKagn7g8gwA9cKw6rr0Zi8OErlKPgoNRLXJ6
	UpHkmDGta//oruVHnrcZAOYHhj04aoSdw39vmYHKAbInf8UfMmxodc9/VZvreDV+5630=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184402-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [linux-linus test] 184402: tolerable FAIL - PUSHED
X-Osstest-Failures:
    linux-linus:test-armhf-armhf-libvirt:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    linux-linus:test-amd64-amd64-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    linux-linus:test-amd64-amd64-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-raw:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-qcow2:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-qemuu-nested-amd:debian-hvm-install/l1/l2:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-xsm:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-xsm:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-credit1:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-xsm:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-credit1:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-thunderx:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-thunderx:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-libvirt-xsm:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-credit2:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-libvirt-xsm:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-credit2:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-arndale:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-arndale:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-multivcpu:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-multivcpu:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-rtds:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-rtds:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit1:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit1:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-libvirt-raw:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-vhd:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-vhd:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-vhd:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-vhd:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-qcow2:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit2:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit2:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-qcow2:migrate-support-check:fail:nonblocking
X-Osstest-Versions-This:
    linux=9d1694dc91ce7b80bc96d6d8eaf1a1eca668d847
X-Osstest-Versions-That:
    linux=b0d326da462e20285236e11e4cbc32085de9f363
From: osstest service owner <osstest-admin@xenproject.org>
Date: Fri, 19 Jan 2024 18:21:58 +0000

flight 184402 linux-linus real [real]
http://logs.test-lab.xenproject.org/osstest/logs/184402/

Failures :-/ but no regressions.

Tests which did not succeed, but are not blocking:
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 184396
 test-amd64-amd64-xl-qemut-win7-amd64 19 guest-stop            fail like 184396
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 184396
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 184396
 test-armhf-armhf-libvirt-raw 15 saverestore-support-check    fail  like 184396
 test-amd64-amd64-xl-qemut-ws16-amd64 19 guest-stop            fail like 184396
 test-armhf-armhf-libvirt-qcow2 15 saverestore-support-check   fail like 184396
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 184396
 test-amd64-amd64-libvirt     15 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-xsm      15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit1  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-xsm      16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-credit1  16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl          15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl          16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-thunderx 15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-thunderx 16 saverestore-support-check    fail   never pass
 test-arm64-arm64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit2  15 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-xsm 16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-credit2  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-arndale  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-arndale  16 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-armhf-armhf-libvirt     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-multivcpu 15 migrate-support-check        fail  never pass
 test-armhf-armhf-xl-multivcpu 16 saverestore-support-check    fail  never pass
 test-armhf-armhf-xl-rtds     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-rtds     16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-credit1  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit1  16 saverestore-support-check    fail   never pass
 test-arm64-arm64-libvirt-raw 14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 15 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-raw 14 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-vhd      14 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-vhd      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-raw 14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      15 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-qcow2 14 migrate-support-check        fail never pass
 test-armhf-armhf-xl          15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-credit2  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit2  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-qcow2 14 migrate-support-check        fail never pass

version targeted for testing:
 linux                9d1694dc91ce7b80bc96d6d8eaf1a1eca668d847
baseline version:
 linux                b0d326da462e20285236e11e4cbc32085de9f363

Last test of basis   184396  2024-01-18 20:42:11 Z    0 days
Testing same since   184402  2024-01-19 05:57:15 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Abel Vesa <abel.vesa@linaro.org>
  Akinobu Mita <akinobu.mita@gmail.com>
  Alain Volmat <alain.volmat@foss.st.com>
  Alejandro Jimenez <alejandro.j.jimenez@oracle.com>
  Alex Bee <knaerzche@gmail.com>
  Alex Deucher <alexander.deucher@amd.com>
  Alex Williamson <alex.williamson@redhat.com>
  Alexander Gordeev <agordeev@linux.ibm.com>
  Alexander Stein <alexander.stein@ew.tq-group.com>
  Alexandra Winter <wintera@linux.ibm.com>
  Alexandre Belloni <alexandre.belloni@bootlin.com>
  Alexandre Ghiti <alexghiti@rivosinc.com>
  Alexei Starovoitov <ast@kernel.org>
  Alison Schofield <alison.schofield@intel.com>
  Amit Cohen <amcohen@nvidia.com>
  Andi Shyti <andi.shyti@kernel.org>
  Andreas Kemnade <andreas@kemnade.info>
  Andrew Halaney <ahalaney@redhat.com> # sa8775p-ride
  Andrii Nakryiko <andrii@kernel.org>
  Andy Shevchenko <andriy.shevchenko@linux.intel.com>
  Andy Yan <andy.yan@rock-chips.com>
  Anshul Dalal <anshulusr@gmail.com>
  Antoniu Miclaus <antoniu.miclaus@analog.com>
  Ard Biesheuvel <ardb@kernel.org>
  Arnd Bergmann <arnd@arndb.de>
  Arpana Arland <arpanax.arland@intel.com> (A Contingent worker at Intel)
  Arınç ÜNAL <arinc.unal@arinc9.com>
  Ashish Mhetre <amhetre@nvidia.com>
  Bard Liao <yung-chuan.liao@linux.intel.com>
  Bart Van Assche <bvanassche@acm.org>
  Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
  Benjamin Poirier <benjamin.poirier@gmail.com>
  Benjamin Poirier <bpoirier@nvidia.com>
  Biju Das <biju.das.jz@bp.renesas.com>
  Bjorn Helgaas <bhelgaas@google.com>
  Boris Brezillon <boris.brezillon@collabora.com>
  Breno Leitao <leitao@debian.org>
  Brett Creeley <brett.creeley@amd.com>
  Can Guo <quic_cang@quicinc.com>
  Changyuan Lyu <changyuanl@google.com>
  Chintan Vankar <c-vankar@ti.com>
  Christian Borntraeger <borntraeger@linux.ibm.com>
  Christian Heusel <christian@heusel.eu>
  Christian Loehle <christian.loehle@arm.com>
  Christoph Hellwig <hch@lst.de>
  Christophe JAILLET <christophe.jaillet@wanadoo.fr>
  Christophe Leroy <christophe.leroy@csgroup.eu>
  Chunfeng Yun <chunfeng.yun@mediatek.com>
  Claudiu Beznea <claudiu.beznea.uj@bp.renesas.com>
  Colin Ian King <colin.i.king@gmail.com>
  Conor Dooley <conor.dooley@microchip.com>
  Damien Le Moal <dlemoal@kernel.org>
  Dan Carpenter <dan.carpenter@linaro.org>
  Dan Williams <dan.j.williams@intel.com>
  Daniel Borkmann <daniel@iogearbox.net>
  Daniel Wagner <dwagner@suse.de>
  Danny Lin <danny@kdrag0n.dev>
  Dave Hansen <dave.hansen@linux.intel.com>
  Dave Jiang <dave.jiang@intel.com>
  David Howells <dhowells@redhat.com>
  David Rientjes <rientjes@google.com>
  David S. Miller <davem@davemloft.net>
  David Stevens <stevensd@chromium.org>
  Davidlohr Bueso <dave@stgolabs.net>
  Dennis Zhou <dennis@kernel.org>
  Derek Chickles <dchickles@marvell.com>
  Dhruva Gole <d-gole@ti.com>
  Dmitrii Bundin <dmitrii.bundin.a@gmail.com>
  Dmitry Antipov <dmantipov@yandex.ru>
  Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
  Dmitry Safonov <dima@arista.com>
  Dmitry Torokhov <dmitry.torokhov@gmail.com>
  Dmytro Maluka <dmaluka@chromium.org>
  Dragos Tatulea <dtatulea@nvidia.com>
  Eric Dumazet <edumazet@google.com>
  Erick Archer <erick.archer@gmx.com>
  Esteban Blanc <eblanc@baylibre.com>
  Eugenio Pérez <eperezma@redhat.com>
  Fedor Pchelkin <pchelkin@ispras.ru>
  Feng Liu <feliu@nvidia.com>
  Flavio Suligoi <f.suligoi@asem.it>
  Gao Xiang <hsiangkao@linux.alibaba.com>
  Geert Uytterhoeven <geert@linux-m68k.org>
  Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  Guenter Roeck <linux@roeck-us.net>
  Guixin Liu <kanie@linux.alibaba.com>
  Halil Pasic <pasic@linux.ibm.com>
  Hangbin Liu <liuhangbin@gmail.com>
  Hannes Reinecke <hare@suse.de>
  Hans de Goede <hdegoede@redhat.com>
  Hans Hu <hanshu-oc@zhaoxin.com>
  Hans Verkuil <hverkuil-cisco@xs4all.nl>
  Hao Sun <sunhao.th@gmail.com>
  Harry Wentland <harry.wentland@amd.com>
  Harshit Mogalapalli <harshit.m.mogalapalli@oracle.com>
  Hector Martin <marcan@marcan.st>
  Heiko Carstens <hca@linux.ibm.com>
  Heiko Stuebner <heiko@sntech.de>
  Heiner Kallweit <hkallweit1@gmail.com>
  Helge Deller <deller@gmx.de>
  Hermes Zhang <chenhuiz@axis.com>
  Horatiu Vultur <horatiu.vultur@microchip.com>
  Huang Ying <ying.huang@intel.com>
  Huang, Ying <ying.huang@intel.com>
  Ido Schimmel <idosch@nvidia.com>
  Ira Weiny <ira.weiny@intel.com>
  Isaac J. Manjarres <isaacmanjarres@google.com>
  Jacky Huang <ychuang3@nuvoton.com>
  Jakub Kicinski <kuba@kernel.org>
  Jamal Hadi Salim <jhs@mojatatu.com>
  Jani Nikula <jani.nikula@intel.com>
  Jason Gunthorpe <jgg@nvidia.com>
  Jason Wang <jasowang@redhat.com>
  Jean Delvare <jdelvare@suse.de>
  Jeff LaBundy <jeff@labundy.com>
  Jens Axboe <axboe@kernel.dk>
  Jernej Skrabec <jernej.skrabec@gmail.com>
  Jim Cromie <jim.cromie@gmail.com> # for SCX
  Jim Harris <jim.harris@samsung.com>
  Jim.Lin <jim.chihjung.lin@gmail.com>
  Jim.Lin <jim.lin@siliconmotion.com>
  Jiri Pirko <jiri@nvidia.com>
  Jiri Valek - 2N <jiriv@axis.com>
  Jo Van Bulck <jo.vanbulck@cs.kuleuven.be>
  Jochen Friedrich <jochen@scram.de>
  Joerg Roedel <jroedel@suse.de>
  Johan Hovold <johan+linaro@kernel.org>
  John Crispin <john@phrozen.org>
  John Fastabend <john.fastabend@gmail.com>
  John Moon <quic_johmoo@quicinc.com>
  Jorge Sanjuan Garcia <jorge.sanjuangarcia@duagon.com>
  Julian Anastasov <ja@ssi.bg>
  Kai Huang <kai.huang@intel.com>
  Kees Cook <keescook@chromium.org>
  Keith Busch <kbusch@kernel.org>
  Kemeng Shi <shikemeng@huaweicloud.com>
  Konrad Dybcio <konrad.dybcio@linaro.org>
  Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
  Kunwu Chan <chentao@kylinos.cn>
  Laurentiu Tudor <laurentiu.tudor@nxp.com>
  Lee Jones <lee@kernel.org>
  Leonardo Bras <leobras@redhat.com>
  Li RongQing <lirongqing@baidu.com>
  Lin Ma <linma@zju.edu.cn>
  Linus Torvalds <torvalds@linux-foundation.org>
  Linus Walleij <linus.walleij@linaro.org>
  Longfang Liu <liulongfang@huawei.com>
  Lu Baolu <baolu.lu@linux.intel.com>
  Luca Weiss <luca@z3ntu.xyz>
  Ludvig Pärsson <ludvig.parsson@axis.com>
  Lukas Wunner <lukas@wunner.de>
  Marc Kleine-Budde <mkl@pengutronix.de>
  Marcin Wojtas <marcin.s.wojtas@gmail.com>
  Marcus Folkesson <marcus.folkesson@gmail.com>
  Marek Szyprowski <m.szyprowski@samsung.com>
  Mario Limonciello <mario.limonciello@amd.com>
  Mark Brown <broonie@kernel.org>
  Markus Schneider-Pargmann <msp@baylibre.com>
  Martin KaFai Lau <martin.lau@kernel.org>
  Masahiro Yamada <masahiroy@kernel.org>
  Masami Hiramatsu (Google) <mhiramat@kernel.org>
  Mateusz Jończyk <mat.jonczyk@o2.pl>
  Matthew Wilcox (Oracle) <willy@infradead.org>
  Maurizio Lombardi <mlombard@redhat.com>
  Max Gurtovoy <mgurtovoy@nvidia.com>
  Mete Durlu <meted@linux.ibm.com>
  Mia Lin <mimi05633@gmail.com>
  Michael S. Tsirkin <mst@redhat.com>
  Michael Walle <mwalle@kernel.org>
  Michal Simek <michal.simek@amd.com>
  Mickaël Salaün <mic@digikod.net>
  Mike Christie <michael.christie@oracle.com>
  Mike Rapoport (IBM) <rppt@kernel.org>
  Ming Lei <ming.lei@redhat.com>
  Muhammad Usama Anjum <usama.anjum@collabora.com>
  Nathan Chancellor <nathan@kernel.org>
  Nathan Lynch <nathanl@linux.ibm.com>
  Naveen Mamindlapalli <naveenm@marvell.com>
  Naveen N Rao <naveen@kernel.org>
  Neil Armstrong <neil.armstrong@linaro.org>
  Neil Armstrong <neil.armstrong@linaro.org> # on SM8550-QRD
  Nicky Chorley <ndchorley@gmail.com>
  Nicolas Dichtel <nicolas.dichtel@6wind.com>
  Nicolin Chen <nicolinc@nvidia.com>
  Nikita Yushchenko <nikita.yoush@cogentembedded.com>
  Nikita Zhandarovich <n.zhandarovich@fintech.ru>
  Niklas Schnelle <schnelle@linux.ibm.com>
  Nithin Dabilpuram <ndabilpuram@marvell.com>
  Oliver Graute <oliver.graute@kococonnector.com>
  Pablo Neira Ayuso <pablo@netfilter.org>
  Pali Rohár <pali@kernel.org>
  Paolo Abeni <pabeni@redhat.com>
  Pasha Tatashin <pasha.tatashin@soleen.com>
  Paul Menzel <pmenzel@molgen.mpg.de>
  Pavel Begunkov <asml.silence@gmail.com>
  Pavel Tikhomirov <ptikhomirov@virtuozzo.com>
  Petr Machata <petrm@nvidia.com>
  Petr Vorel <petr.vorel@gmail.com>
  Petr Vorel <pvorel@suse.cz>
  Philipp Zabel <p.zabel@pengutronix.de>
  Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
  Qiang Ma <maqianga@uniontech.com>
  Rafael J. Wysocki <rafael.j.wysocki@intel.com>
  Rajendra Nayak <quic_rjendra@quicinc.com>
  Randy Dunlap <rdunlap@infradead.org>
  Rob Clark <robdclark@chromium.org>
  Rob Herring <robh@kernel.org>
  Robin Murphy <robin.murphy@arm.com>
  Rohit Agarwal <quic_rohiagar@quicinc.com>
  Roland Hieber <rhi@pengutronix.de>
  Romain Gantois <romain.gantois@bootlin.com>
  Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
  Sam Ravnborg <sam@ravnborg.org>
  Sanjuán García, Jorge <Jorge.SanjuanGarcia@duagon.com>
  Sean Young <sean@mess.org>
  Sergey Senozhatsky <senozhatsky@chromium.org>
  Shameer Kolothum <shameerali.kolothum.thodi@huawei.com>
  Shannon Nelson <shannon.nelson@amd.com>
  Shin'ichiro Kawasaki <shinichiro.kawasaki@wdc.com>
  Shiyang Ruan <ruansy.fnst@fujitsu.com>
  Shuah Khan <skhan@linuxfoundation.org>
  Sibi Sankar <quic_sibis@quicinc.com>
  Simon Horman <horms@kernel.org>
  Smita-Koralahalli <Smita.KoralahalliChannabasappa@amd.com>
  Sneh Shah <quic_snehshah@quicinc.com>
  Song Liu <song@kernel.org>
  Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
  Stefan Eichenberger <eichest@gmail.com>
  Steven Rostedt (Google) <rostedt@goodmis.org>
  Su Hui <suhui@nfschina.com>
  Suravee Suthikulpanit <suravee.suthikulpanit@amd.com>
  Sven Peter <sven@svenpeter.dev>
  Taehee Yoo <ap420073@gmail.com>
  Theodore Ts'o <tytso@mit.edu>
  Thierry Reding <treding@nvidia.com>
  Thomas Petazzoni <thomas.petazzoni@bootlin.com>
  Thomas Richard <thomas.richard@bootlin.com>
  Thomas Richter <tmricht@linux.ibm.com>
  Thomas Zimmermann <tzimmermann@suse.de>
  Thorsten Winkler <twinkler@linux.ibm.com>
  Tim Lunn <tim@feathertop.org>
  Tina Zhang <tina.zhang@intel.com>
  Tony Krowiak <akrowiak@linux.ibm.com>
  Tony Lindgren <tony@atomide.com>
  Tony Nguyen <anthony.l.nguyen@intel.com>
  Tzvetomir Stoyanov (VMware) <tz.stoyanov@gmail.com>
  Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
  Valentin Caron <valentin.caron@foss.st.com>
  Vasant Hegde <vasant.hegde@amd.com>
  Victor Nogueira <victor@mojatatu.com>
  Vijendar Mukunda <Vijendar.Mukunda@amd.com>
  Vincent Mailhol <mailhol.vincent@wanadoo.fr>
  Vinod Koul <vkoul@kernel.org>
  Vladimir Lypak <vladimir.lypak@gmail.com>
  Vladimir Oltean <vladimir.oltean@nxp.com>
  Wang Jinchao <wangjinchao@xfusion.com>
  Wenjia Zhang <wenjia@linux.ibm.com>
  Wenkai Lin <linwenkai6@hisilicon.com>
  Will Deacon <will@kernel.org>
  William Butler <wab@google.com>
  Wolfram Sang <wsa+renesas@sang-engineering.com>
  Wolfram Sang <wsa@kernel.org>
  Xuan Zhuo <xuanzhuo@linux.alibaba.com>
  ye xingchen <ye.xingchen@zte.com.cn>
  Yi Liu <yi.l.liu@intel.com>
  Yishai Hadas <yishaih@nvidia.com>
  Yonghong Song <yonghong.song@linux.dev>
  Yu Kuai <yukuai3@huawei.com>
  Yuntao Wang <ytcoode@gmail.com>
  Zhangfei Gao <zhangfei.gao@linaro.org>
  ZhangPeng <zhangpeng362@huawei.com>
  Zhao Mengmeng <zhaomengmeng@kylinos.cn>
  Zhu Yanjun <yanjun.zhu@linux.dev>
  Íñigo Huguet <ihuguet@redhat.com>

jobs:
 build-amd64-xsm                                              pass    
 build-arm64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64                                                  pass    
 build-arm64                                                  pass    
 build-armhf                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-arm64-libvirt                                          pass    
 build-armhf-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-pvops                                            pass    
 build-arm64-pvops                                            pass    
 build-armhf-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-amd64-amd64-xl                                          pass    
 test-amd64-coresched-amd64-xl                                pass    
 test-arm64-arm64-xl                                          pass    
 test-armhf-armhf-xl                                          pass    
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm           pass    
 test-amd64-amd64-xl-qemut-stubdom-debianhvm-amd64-xsm        pass    
 test-amd64-amd64-xl-qemut-debianhvm-i386-xsm                 pass    
 test-amd64-amd64-xl-qemuu-debianhvm-i386-xsm                 pass    
 test-amd64-amd64-libvirt-xsm                                 pass    
 test-arm64-arm64-libvirt-xsm                                 pass    
 test-amd64-amd64-xl-xsm                                      pass    
 test-arm64-arm64-xl-xsm                                      pass    
 test-amd64-amd64-qemuu-nested-amd                            fail    
 test-amd64-amd64-xl-pvhv2-amd                                pass    
 test-amd64-amd64-dom0pvh-xl-amd                              pass    
 test-amd64-amd64-xl-qemut-debianhvm-amd64                    pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64                    pass    
 test-amd64-amd64-freebsd11-amd64                             pass    
 test-amd64-amd64-freebsd12-amd64                             pass    
 test-amd64-amd64-xl-qemuu-ovmf-amd64                         pass    
 test-amd64-amd64-xl-qemut-win7-amd64                         fail    
 test-amd64-amd64-xl-qemuu-win7-amd64                         fail    
 test-amd64-amd64-xl-qemut-ws16-amd64                         fail    
 test-amd64-amd64-xl-qemuu-ws16-amd64                         fail    
 test-armhf-armhf-xl-arndale                                  pass    
 test-amd64-amd64-examine-bios                                pass    
 test-amd64-amd64-xl-credit1                                  pass    
 test-arm64-arm64-xl-credit1                                  pass    
 test-armhf-armhf-xl-credit1                                  pass    
 test-amd64-amd64-xl-credit2                                  pass    
 test-arm64-arm64-xl-credit2                                  pass    
 test-armhf-armhf-xl-credit2                                  pass    
 test-amd64-amd64-xl-qemuu-dmrestrict-amd64-dmrestrict        pass    
 test-amd64-amd64-examine                                     pass    
 test-arm64-arm64-examine                                     pass    
 test-armhf-armhf-examine                                     pass    
 test-amd64-amd64-qemuu-nested-intel                          pass    
 test-amd64-amd64-xl-pvhv2-intel                              pass    
 test-amd64-amd64-dom0pvh-xl-intel                            pass    
 test-amd64-amd64-libvirt                                     pass    
 test-armhf-armhf-libvirt                                     pass    
 test-amd64-amd64-xl-multivcpu                                pass    
 test-armhf-armhf-xl-multivcpu                                pass    
 test-amd64-amd64-pair                                        pass    
 test-amd64-amd64-libvirt-pair                                pass    
 test-amd64-amd64-xl-pvshim                                   pass    
 test-amd64-amd64-pygrub                                      pass    
 test-amd64-amd64-libvirt-qcow2                               pass    
 test-armhf-armhf-libvirt-qcow2                               pass    
 test-amd64-amd64-libvirt-raw                                 pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-armhf-armhf-libvirt-raw                                 pass    
 test-amd64-amd64-xl-rtds                                     pass    
 test-armhf-armhf-xl-rtds                                     pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64-shadow             pass    
 test-amd64-amd64-xl-shadow                                   pass    
 test-arm64-arm64-xl-thunderx                                 pass    
 test-amd64-amd64-examine-uefi                                pass    
 test-amd64-amd64-xl-vhd                                      pass    
 test-arm64-arm64-xl-vhd                                      pass    
 test-armhf-armhf-xl-vhd                                      pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Pushing revision :

hint: The 'hooks/update' hook was ignored because it's not set as executable.
hint: You can disable this warning with `git config advice.ignoredHook false`.
hint: The 'hooks/post-receive' hook was ignored because it's not set as executable.
hint: You can disable this warning with `git config advice.ignoredHook false`.
hint: The 'hooks/post-update' hook was ignored because it's not set as executable.
hint: You can disable this warning with `git config advice.ignoredHook false`.
To xenbits.xen.org:/home/xen/git/linux-pvops.git
   b0d326da462e..9d1694dc91ce  9d1694dc91ce7b80bc96d6d8eaf1a1eca668d847 -> tested/linux-linus


From xen-devel-bounces@lists.xenproject.org Fri Jan 19 20:32:57 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 19 Jan 2024 20:32:57 +0000
Received: from list by lists.xenproject.org with outflank-mailman.669132.1041770 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQvXe-0004a7-8A; Fri, 19 Jan 2024 20:32:42 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 669132.1041770; Fri, 19 Jan 2024 20:32:42 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rQvXe-0004a0-3a; Fri, 19 Jan 2024 20:32:42 +0000
Received: by outflank-mailman (input) for mailman id 669132;
 Fri, 19 Jan 2024 20:32:40 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=WhZC=I5=m5p.com=ehem@srs-se1.protection.inumbo.net>)
 id 1rQvXc-0004Zu-FV
 for xen-devel@lists.xenproject.org; Fri, 19 Jan 2024 20:32:40 +0000
Received: from mailhost.m5p.com (mailhost.m5p.com [74.104.188.4])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id e1b2c593-b709-11ee-98f2-6d05b1d4d9a1;
 Fri, 19 Jan 2024 21:32:37 +0100 (CET)
Received: from m5p.com (mailhost.m5p.com [IPv6:2001:470:1f07:15ff:0:0:0:f7])
 by mailhost.m5p.com (8.17.1/8.15.2) with ESMTPS id 40JKWP8c045722
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NO);
 Fri, 19 Jan 2024 15:32:31 -0500 (EST) (envelope-from ehem@m5p.com)
Received: (from ehem@localhost)
 by m5p.com (8.17.1/8.15.2/Submit) id 40JKWP37045721;
 Fri, 19 Jan 2024 12:32:25 -0800 (PST) (envelope-from ehem)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: e1b2c593-b709-11ee-98f2-6d05b1d4d9a1
Date: Fri, 19 Jan 2024 12:32:25 -0800
From: Elliott Mitchell <ehem+xen@m5p.com>
To: Paul Leiber <paul@onlineschubla.de>
Cc: xen-devel@lists.xenproject.org, George Dunlap <george.dunlap@citrix.com>,
        Dario Faggioli <dfaggioli@suse.com>, Jan Beulich <jbeulich@suse.com>
Subject: Re: Xen 4.18rc/ARM64 on Raspberry Pi 4B: Traffic in DomU crashing
 Dom0 when using VLANs
Message-ID: <ZarcWQ6Ugwowy050@mattapan.m5p.com>
References: <838ff75f-1352-4d3c-9bc1-c7a57c828231@onlineschubla.de>
 <4cddfd89-f195-4a50-a14d-b86121414e56@onlineschubla.de>
 <f8f39239-ea95-4fc7-9abe-6ca005eb02d2@onlineschubla.de>
MIME-Version: 1.0
Content-Type: text/plain; charset=iso-8859-1
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <f8f39239-ea95-4fc7-9abe-6ca005eb02d2@onlineschubla.de>
X-Spam-Status: No, score=0.0 required=10.0 tests=KHOP_HELO_FCRDNS
	autolearn=unavailable autolearn_force=no version=4.0.0
X-Spam-Checker-Version: SpamAssassin 4.0.0 (2022-12-14) on mattapan.m5p.com

On Sun, Jan 14, 2024 at 10:54:24PM +0100, Paul Leiber wrote:
> 
> Am 22.10.2023 um 07:42 schrieb Paul Leiber:
> > Am 13.10.2023 um 20:56 schrieb Paul Leiber:
> >> Hi Xen developers list,
> >>
> >> TL;DR:
> >> ------
> >>
> >> Causing certain web server traffic on a secondary VLAN on Raspberry Pi 
> >> under vanilla Debian/UEFI in combination with Xen leads to complete 
> >> system reboot (watchdog triggering for Dom0). Other strange things are 
> >> happening.
> >>
> >> Description:
> >> ----------
> >>
> >> I recently set up Xen (self compiled, Version 4.18-rc) on a Raspberry 
> >> Pi 4B (on vanilla Debian Bookworm, UEFI boot mode). Until some time 
> >> ago, everything worked well with Dom0, one DomU and one bridge.
> >>
> >> Then I wanted to actually make use of the virtualization and started 
> >> to set up a second Debian Bookworm DomU (using xen-create-image) for 
> >> monitoring my systems with zabbix (a webserver based system monitoring 
> >> solution). The bridge used for this setup was the device bridging the 
> >> hardware NIC. I installed zabbix, set it up, and everything went well, 
> >> I could access the web interface without any problem.
> >>
> >> Then I set up VLANs (initally using VLAN numbers 1 and 2) to separate 
> >> network traffic between the DomUs. I made the existing device bridge 
> >> VLAN 1 (bridge 1) and created a secondary device for bridging VLAN 2 
> >> (bridge 2). Using only bridge 1 / VLAN 1 everything works well, I can 
> >> access the zabbix web interface without any noticeable issue. After 
> >> switching the zabbix DomU to VLAN 2 / bridge 2, everything seemingly 
> >> keeps on working well, I can ping different devices in my network from 
> >> the zabbix DomU and vice versa, I can ssh into the machine.
> >>
> >> However, as soon as I remotely access the zabbix web interface, the 
> >> complete system (DomUs and Dom0) becomes unresponsive and reboots 
> >> after some time (usually seconds, sometimes 1-2 minutes). The reboot 
> >> is reliably reproducable.
> >>
> >> I didn't see any error message in any log (zabbix, DomU syslog, Dom0 
> >> syslog) except for the following lines immediately before the system 
> >> reboots on the Xen serial console:
> >>
> >> (XEN) Watchdog timer fired for domain 0
> >> (XEN) Hardware Dom0 shutdown: watchdog rebooting machine
> >>
> >> As soon as I change the bridge to bridge 1 (with or without VLAN 
> >> setup), the web interface is accessible again after booting the zabbix 
> >> DomU, no reboots.
> >>
> >> So I assume that causing specific traffic on the virtual NIC when 
> >> using a VLAN setup with more than one VLAN under Xen makes the Dom0 
> >> system hard crash. Of course, there might be other causes that I'm not 
> >> aware of, but to me, this seems to be the most likely explanation 
> >> right now.
> >>
> >> What I tried:
> >> -------------
> >>
> >> 1. I changed the VLAN numbers. First to 101, 102, 103 etc. This was 
> >> when I noticed another strange thing: VLANs with numbers >99 simply 
> >> don't work on my Raspberry Pi under Debian, with or without Xen. VLAN 
> >> 99 works, VLAN 100 (or everything else >99 that I tried) doesn't work. 
> >> If I choose a number >99, the VLAN is not configured, "ip a" doesn't 
> >> list it. Other Debian systems on x64 architecture don't show this 
> >> behavior, there, it was no problem to set up VLANs > 99. Therefore, 
> >> I've changed the VLANs to 10, 20, 30 etc., which worked. But it didn't 
> >> solve the initial problem of the crashing Dom0 and DomUs.
> >>
> >> 2. Different bridge options, without noticable effect:
> >> bridge_stp off # dont use STP (spanning tree proto)
> >> bridge_waitport 0 # dont wait for port to be available
> >> bridge_fd 0 # no forward delay
> >>
> >> 3. Removing IPv6: No noticable effect.
> >>
> >> 4. Network traffic analysis: Now, here it becomes _really_ strange. I 
> >> started tcpdumps on Dom0, and depending on on which interface/bridge 
> >> traffic was logged, the problem went away, meaning, the DomU was 
> >> running smoothly for hours, even when accessing the zabbix web 
> >> interface. Stopping the log makes the system crash (as above, after 
> >> seconds up to 1-2 minutes) reproducably if I access the zabbix web 
> >> interface.
> >>
> >> Logging enabcm6e4ei0 (NIC): no crashes
> >> Logging enabcm6e4ei0.10 (VLAN 10): instant crash
> >> Logging enabcm6e4ei0.20 (VLAN 20): no crashes
> >> Logging xenbr0 (on VLAN 10): instant crash
> >> Logging xenbr1 (on VLAN 20): no crashes
> >>
> >> I am clinging to the thought that there must be a rational explanation 
> >> for why logging the traffic on certain interfaces/bridges should avoid 
> >> the crash of the complete system, while logging other 
> >> interfaces/bridges doesn't. I myself can't think of one.
> >>
> >> I checked the dumps of enabcm6e4ei0.10 and xenbr0 (where the system 
> >> crashes) with wireshark, nothing sticks out to me (but I am really no 
> >> expert in analyzing network traffic). Dumps can be provided.
> >>
> >> 5. Watchdog: I tried to dig deeper into the cause for the watchdog 
> >> triggering. However, I didn't find any useful documentation on the web 
> >> on how the watchdog works or how to enable logging.
> >>
> >> 6. Eliminating Xen as cause: I booted the Debian system (which in Xen 
> >> setup would be Dom0) without Xen and set it up to use the VLAN 20 
> >> bridge (the same that leads to a reboot when using it in the DomU) as 
> >> primary network interface. Everything seemed to be working, I could 
> >> download large files from the internet without any problem. Setting up 
> >> Zabbix on the base Debian system showed that the same setup (VLANs 10 
> >> and 20, bridges 1 and 2, using bridge 2 as interface for Zabbix) 
> >> without Xen is working reliably, no reboots. This points to some Xen 
> >> related component being the root cause, I think.
> >>
> >> 7. Eliminating Apache as root cause: Reloading the Apache starting 
> >> page hosted on DomU several times per second didn't lead to a reboot.
> >>
> >> 8. Recompiling Xen: Independent of which Xen master branch version I 
> >> was using (all 4.18), the behavior was the same. I didn't get Xen 
> >> working on ARM64/UEFI in version 4.17.
> >>
> >> Current situation:(XEN) d3v0 Unhandled SMC/HVC: 0x84000050
> (XEN) d3v0 Unhandled SMC/HVC: 0x8600ff01
> (XEN) d3v0: vGICD: unhandled word write 0x000000ffffffff to ICACTIVER0
> (XEN) common/grant_table.c:1909:d3v0 Expanding d3 grant table from 1 to 
> 2 frames
> (XEN) common/grant_table.c:1909:d3v0 Expanding d3 grant table from 2 to 
> 3 frames
> (XEN) common/grant_table.c:1909:d3v0 Expanding d3 grant table from 3 to 
> 4 frames
> >> ------------------
> >>
> >> I am out of ideas what to do next. Everything that was recommended to 
> >> me on xen-users didn't lead to significant insight or solve the problem.
> >>
> >> I'd appreciate any hints how to troubleshoot this and/or how to 
> >> proceed otherwise.
> > 
> > O.k., let's try to break that issue down.
> > 
> > Firstly, how can I get more information on why the Xen watchdog 
> > triggers? Is there documentation? Are there any logs? I couldn't find 
> > anything useful with my search skills.
> > 
> 
> After some delay, I have picked up the Raspberry Pi again, built Xen 
> 4.19-unstable, with the same result: Reboot of the complete system after 
> the Dom0 watchdog triggering when accessing the Zabbix content on a 
> webserver on DomU.
> 
> I still would like to find out what's going wrong here, but I have no 
> idea what to do. I'd appreciate any hint.
> 
> Not knowing if it helps, I added Xen logs from boot until Dom0 
> crash/reboot below.
> 
> Loading Xen xen ...
> Loading Linux 6.1.0-17-arm64 ...
> Loading initial ramdisk ...
> Using modules provided by bootloader in FDT
> Xen 4.19-unstable (c/s Fri Jan 12 11:54:31 2024 +0000 
> git:1ec3fe1f66-dirty) EFI
> loader
>   Xen 4.19-unstable
> (XEN) Xen version 4.19-unstable (root@lan.onlineschubla.de) (gcc (Debian 
> 12.2.0- 
>  
>  
>                             14) 12.2.0) debug=y Sun Jan 14 21:46:34 CET 2024
> (XEN) Latest ChangeSet: Fri Jan 12 11:54:31 2024 +0000 git:1ec3fe1f66-dirty
> (XEN) build-id: babb03cb6107fc46f7d8969142ccd6772a1133c3
> (XEN) Console output is synchronous.
> (XEN) Processor: 00000000410fd083: "ARM Limited", variant: 0x0, part 
> 0xd08,rev 0 
>  
>  
>                                 x3
> (XEN) 64-bit Execution:
> (XEN)   Processor Features: 0000000000002222 0000000000000000
> (XEN)     Exception Levels: EL3:64+32 EL2:64+32 EL1:64+32 EL0:64+32
> (XEN)     Extensions: FloatingPoint AdvancedSIMD
> (XEN)   Debug Features: 0000000010305106 0000000000000000
> (XEN)   Auxiliary Features: 0000000000000000 0000000000000000
> (XEN)   Memory Model Features: 0000000000001124 0000000000000000
> (XEN)   ISA Features:  0000000000010000 0000000000000000
> (XEN) 32-bit Execution:
> (XEN)   Processor Features: 0000000000000131:0000000000011011
> (XEN)     Instruction Sets: AArch32 A32 Thumb Thumb-2 Jazelle
> (XEN)     Extensions: GenericTimer Security
> (XEN)   Debug Features: 0000000003010066
> (XEN)   Auxiliary Features: 0000000000000000
> (XEN)   Memory Model Features: 0000000010201105 0000000040000000
> (XEN)                          0000000001260000 0000000002102211
> (XEN)   ISA Features: 0000000002101110 0000000013112111 0000000021232042
> (XEN)                 0000000001112131 0000000000011142 0000000000010001
> (XEN) Using SMC Calling Convention v1.2
> (XEN) Using PSCI v1.1
> (XEN) ACPI: GICC (acpi_id[0x0000] address[0xff842000] MPIDR[0x0] enabled)
> (XEN) ACPI: GICC (acpi_id[0x0001] address[0xff842000] MPIDR[0x1] enabled)
> (XEN) ACPI: GICC (acpi_id[0x0002] address[0xff842000] MPIDR[0x2] enabled)
> (XEN) ACPI: GICC (acpi_id[0x0003] address[0xff842000] MPIDR[0x3] enabled)
> (XEN) 4 CPUs enabled, 4 CPUs total
> (XEN) SMP: Allowing 4 CPUs
> (XEN) enabled workaround for: ARM erratum 1319537
> (XEN) Generic Timer IRQ: phys=30 hyp=26 virt=27 Freq: 54000 KHz
> (XEN) GICv2 initialization:
> (XEN)         gic_dist_addr=00000000ff841000
> (XEN)         gic_cpu_addr=00000000ff842000
> (XEN)         gic_hyp_addr=00000000ff844000
> (XEN)         gic_vcpu_addr=00000000ff846000
> (XEN)         gic_maintenance_irq=25
> (XEN) GICv2: 256 lines, 4 cpus, secure (IID 0200143b).
> (XEN) XSM Framework v1.0.1 initialized
> (XEN) Initialising XSM SILO mode
> (XEN) Using scheduler: SMP Credit Scheduler rev2 (credit2)
> (XEN) Initializing Credit2 scheduler
> (XEN)  load_precision_shift: 18
> (XEN)  load_window_shift: 30
> (XEN)  underload_balance_tolerance: 0
> (XEN)  overload_balance_tolerance: -3
> (XEN)  runqueues arrangement: socket
> (XEN)  cap enforcement granularity: 10ms
> (XEN) load tracking window length 1073741824 ns
> (XEN) Allocated console ring of 32 KiB.
> (XEN) CPU0: Guest atomics will try 16 times before pausing the domain
> (XEN) Bringing up CPU1
> (XEN) CPU1: Guest atomics will try 16 times before pausing the domain
> (XEN) CPU 1 booted.
> (XEN) Bringing up CPU2
> (XEN) CPU2: Guest atomics will try 13 times before pausing the domain
> (XEN) CPU 2 booted.
> (XEN) Bringing up CPU3
> (XEN) CPU3: Guest atomics will try 16 times before pausing the domain
> (XEN) Brought up 4 CPUs
> (XEN) CPU 3 booted.
> (XEN) I/O virtualisation disabled
> (XEN) P2M: 44-bit IPA with 44-bit PA and 8-bit VMID
> (XEN) P2M: 4 levels with order-0 root, VTCR 0x0000000080043594
> (XEN) Scheduling granularity: cpu, 1 CPU per sched-resource
> (XEN) Initializing Credit2 scheduler
> (XEN)  load_precision_shift: 18
> (XEN)  load_window_shift: 30
> (XEN)  underload_balance_tolerance: 0
> (XEN)  overload_balance_tolerance: -3
> (XEN)  runqueues arrangement: socket
> (XEN)  cap enforcement granularity: 10ms
> (XEN) load tracking window length 1073741824 ns
> (XEN) Adding cpu 0 to runqueue 0
> (XEN)  First cpu on runqueue, activating
> (XEN) Adding cpu 1 to runqueue 0
> (XEN) Adding cpu 2 to runqueue 0
> (XEN) Adding cpu 3 to runqueue 0
> (XEN) alternatives: Patching with alt table 00000a00002ee0b0 -> 
> 00000a00002ef250
> (XEN) CPU2 will call ARM_SMCCC_ARCH_WORKAROUND_1 on exception entry
> (XEN) CPU1 will call ARM_SMCCC_ARCH_WORKAROUND_1 on exception entry
> (XEN) CPU3 will call ARM_SMCCC_ARCH_WORKAROUND_1 on exception entry
> (XEN) CPU0 will call ARM_SMCCC_ARCH_WORKAROUND_1 on exception entry
> (XEN) *** LOADING DOMAIN 0 ***
> (XEN) Loading d0 kernel from boot module @ 0000000030ef7000
> (XEN) Loading ramdisk from boot module @ 000000002ee6d000
> (XEN) Allocating 1:1 mappings totalling 1024MB for dom0:
> (XEN) BANK[0] 0x00000040000000-0x00000080000000 (1024MB)
> (XEN) Grant table range: 0x0000002eceb000-0x0000002ed2b000
> (XEN) Allocating PPI 16 for event channel interrupt
> (XEN) Loading zImage from 0000000030ef7000 to 
> 0000000040000000-0000000041f1c7c0
> (XEN) Loading d0 initrd from 000000002ee6d000 to 
> 0x0000000048200000-0x000000004a 
>  
>  
>                                                     288c22
> (XEN) Loading d0 DTB to 0x0000000048000000-0x00000000480002c3
> (XEN) Initial low memory virq threshold set at 0x4000 pages.
> (XEN) Scrubbing Free RAM in background
> (XEN) Std. Loglevel: All
> (XEN) Guest Loglevel: All
> (XEN) ***************************************************
> (XEN) WARNING: CONSOLE OUTPUT IS SYNCHRONOUS
> (XEN) This option is intended to aid debugging of Xen by ensuring
> (XEN) that all output is synchronously delivered on the serial line.
> (XEN) However it can introduce SIGNIFICANT latencies and affect
> (XEN) timekeeping. It is NOT recommended for production use!
> (XEN) ***************************************************
> (XEN) 3... 2... 1...
> (XEN) *** Serial input to DOM0 (type 'CTRL-a' three times to switch input)
> (XEN) Freed 376kB init memory.
> (XEN) d0v0 Unhandled SMC/HVC: 0x84000050
> (XEN) d0v0 Unhandled SMC/HVC: 0x8600ff01
> (XEN) d0v0: vGICD: unhandled word write 0x000000ffffffff to ICACTIVER4
> (XEN) d0v0: vGICD: unhandled word write 0x000000ffffffff to ICACTIVER8
> (XEN) d0v0: vGICD: unhandled word write 0x000000ffffffff to ICACTIVER12
> (XEN) d0v0: vGICD: unhandled word write 0x000000ffffffff to ICACTIVER16
> (XEN) d0v0: vGICD: unhandled word write 0x000000ffffffff to ICACTIVER20
> (XEN) d0v0: vGICD: unhandled word write 0x000000ffffffff to ICACTIVER24
> (XEN) d0v0: vGICD: unhandled word write 0x000000ffffffff to ICACTIVER28
> (XEN) d0v0: vGICD: unhandled word write 0x000000ffffffff to ICACTIVER0
> (XEN) d0v1: vGICD: unhandled word write 0x000000ffffffff to ICACTIVER0
> (XEN) d0v2: vGICD: unhandled word write 0x000000ffffffff to ICACTIVER0
> (XEN) d0v3: vGICD: unhandled word write 0x000000ffffffff to ICACTIVER0
> (XEN) d1v0 Unhandled SMC/HVC: 0x84000050
> (XEN) d1v0 Unhandled SMC/HVC: 0x8600ff01
> (XEN) d1v0: vGICD: unhandled word write 0x000000ffffffff to ICACTIVER0
> (XEN) common/grant_table.c:1909:d1v0 Expanding d1 grant table from 1 to 
> 2 frames
> (XEN) gnttab_mark_dirty not implemented yet
> (XEN) d2v0 Unhandled SMC/HVC: 0x84000050
> (XEN) d2v0 Unhandled SMC/HVC: 0x8600ff01
> (XEN) d2v0: vGICD: unhandled word write 0x000000ffffffff to ICACTIVER0
> (XEN) common/grant_table.c:1909:d2v0 Expanding d2 grant table from 1 to 
> 2 frames
> (XEN) common/grant_table.c:1909:d2v0 Expanding d2 grant table from 2 to 
> 3 frames
> (XEN) common/grant_table.c:1909:d2v0 Expanding d2 grant table from 3 to 
> 4 frames
> (XEN) Watchdog timer fired for domain 0
> (XEN) Hardware Dom0 shutdown: watchdog rebooting machine

I'm unsure whose attention to draw to this report.

This might be a scheduler issue since the watchdog timer is triggering.

This might be an ACPI issue as ACPI is in use here.

This might be an ARM Linux kernel issue.

In the end this is someone running into trouble with Xen on an ARM
device.  Yet despite bringing up the issue hasn't gotten any help...


-- 
(\___(\___(\______          --=> 8-) EHM <=--          ______/)___/)___/)
 \BS (    |         ehem+sigmsg@m5p.com  PGP 87145445         |    )   /
  \_CS\   |  _____  -O #include <stddisclaimer.h> O-   _____  |   /  _/
8A19\___\_|_/58D2 7E3D DDF4 7BA6 <-PGP-> 41D1 B375 37D0 8714\_|_/___/5445




From xen-devel-bounces@lists.xenproject.org Sat Jan 20 02:02:16 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 20 Jan 2024 02:02:16 +0000
Received: from list by lists.xenproject.org with outflank-mailman.669171.1041799 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rR0gM-0002Gj-LA; Sat, 20 Jan 2024 02:02:02 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 669171.1041799; Sat, 20 Jan 2024 02:02:02 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rR0gM-0002Gc-IC; Sat, 20 Jan 2024 02:02:02 +0000
Received: by outflank-mailman (input) for mailman id 669171;
 Sat, 20 Jan 2024 02:02:01 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rR0gL-0002D0-5c; Sat, 20 Jan 2024 02:02:01 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rR0gL-0003Wl-2j; Sat, 20 Jan 2024 02:02:01 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rR0gK-0001bu-Ft; Sat, 20 Jan 2024 02:02:00 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rR0gK-000729-Du; Sat, 20 Jan 2024 02:02:00 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=oTopit0H0FCwuGK7imNa9UXL43U1AK9rSCkFyHnuXb0=; b=JmqKYhDtUNK7qA+QgMCSv4uqbc
	QsM2SHIL/ZAnK5KAeURhzitXgcs/y506QuTlEdizmt5VtRgwlLCaH0Kqm+//kkh0H3pOzBqQDmSK7
	2AIJ2dyCcCJYQqkxh5XX8TuiQ6y2wa+I9rxKAjeB53IaqWPwEJeq+viHj2I1ZUKHySDM=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184404-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [xen-unstable test] 184404: tolerable FAIL - PUSHED
X-Osstest-Failures:
    xen-unstable:test-armhf-armhf-xl-vhd:host-ping-check-native:fail:heisenbug
    xen-unstable:test-armhf-armhf-libvirt-qcow2:guest-start/debian.repeat:fail:heisenbug
    xen-unstable:test-armhf-armhf-xl-vhd:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-vhd:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-amd64-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-raw:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-amd64-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-qcow2:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-qemuu-nested-amd:debian-hvm-install/l1/l2:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-amd64-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-i386-libvirt-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-libvirt:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-pvshim:guest-start:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-xsm:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-credit2:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-credit2:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-libvirt-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-libvirt-xsm:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-thunderx:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-thunderx:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-credit1:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-credit1:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-multivcpu:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-multivcpu:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit2:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit2:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-libvirt-raw:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-libvirt-raw:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-libvirt-raw:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt-vhd:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-vhd:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-vhd:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-raw:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit1:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit1:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-rtds:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-rtds:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-arndale:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-arndale:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-qcow2:migrate-support-check:fail:nonblocking
X-Osstest-Versions-This:
    xen=b25607e528f6ce7851e907ed59ad5ff583aa1840
X-Osstest-Versions-That:
    xen=c30021be302aa2a644ef5544097fb8bb763ec140
From: osstest service owner <osstest-admin@xenproject.org>
Date: Sat, 20 Jan 2024 02:02:00 +0000

flight 184404 xen-unstable real [real]
flight 184406 xen-unstable real-retest [real]
http://logs.test-lab.xenproject.org/osstest/logs/184404/
http://logs.test-lab.xenproject.org/osstest/logs/184406/

Failures :-/ but no regressions.

Tests which are failing intermittently (not blocking):
 test-armhf-armhf-xl-vhd    6 host-ping-check-native fail pass in 184406-retest
 test-armhf-armhf-libvirt-qcow2 17 guest-start/debian.repeat fail pass in 184406-retest

Tests which did not succeed, but are not blocking:
 test-armhf-armhf-xl-vhd     14 migrate-support-check fail in 184406 never pass
 test-armhf-armhf-xl-vhd 15 saverestore-support-check fail in 184406 never pass
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 184398
 test-amd64-amd64-xl-qemut-win7-amd64 19 guest-stop            fail like 184398
 test-amd64-i386-xl-qemuu-win7-amd64 19 guest-stop             fail like 184398
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 184398
 test-amd64-i386-xl-qemut-ws16-amd64 19 guest-stop             fail like 184398
 test-armhf-armhf-libvirt-raw 15 saverestore-support-check    fail  like 184398
 test-amd64-i386-xl-qemut-win7-amd64 19 guest-stop             fail like 184398
 test-amd64-amd64-xl-qemut-ws16-amd64 19 guest-stop            fail like 184398
 test-armhf-armhf-libvirt-qcow2 15 saverestore-support-check   fail like 184398
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 184398
 test-amd64-i386-xl-qemuu-ws16-amd64 19 guest-stop             fail like 184398
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 184398
 test-amd64-i386-libvirt-xsm  15 migrate-support-check        fail   never pass
 test-amd64-i386-libvirt      15 migrate-support-check        fail   never pass
 test-amd64-i386-xl-pvshim    14 guest-start                  fail   never pass
 test-amd64-amd64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl          15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-xsm      15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl          16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-xsm      16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-credit2  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit2  16 saverestore-support-check    fail   never pass
 test-arm64-arm64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-xsm 16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-thunderx 15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-thunderx 16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-credit1  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit1  16 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt     15 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-armhf-armhf-libvirt     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-multivcpu 15 migrate-support-check        fail  never pass
 test-armhf-armhf-xl-multivcpu 16 saverestore-support-check    fail  never pass
 test-armhf-armhf-xl-credit2  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit2  16 saverestore-support-check    fail   never pass
 test-amd64-i386-libvirt-raw  14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 15 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-vhd 14 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-vhd      14 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-vhd      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-raw 14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-credit1  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit1  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-rtds     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-rtds     16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-arndale  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-arndale  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-qcow2 14 migrate-support-check        fail never pass

version targeted for testing:
 xen                  b25607e528f6ce7851e907ed59ad5ff583aa1840
baseline version:
 xen                  c30021be302aa2a644ef5544097fb8bb763ec140

Last test of basis   184398  2024-01-19 01:37:36 Z    1 days
Testing same since   184404  2024-01-19 09:57:50 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Andrew Cooper <andrew.cooper3@citrix.com>
  Jan Beulich <jbeulich@suse.com>

jobs:
 build-amd64-xsm                                              pass    
 build-arm64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64-xtf                                              pass    
 build-amd64                                                  pass    
 build-arm64                                                  pass    
 build-armhf                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-arm64-libvirt                                          pass    
 build-armhf-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-prev                                             pass    
 build-i386-prev                                              pass    
 build-amd64-pvops                                            pass    
 build-arm64-pvops                                            pass    
 build-armhf-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-xtf-amd64-amd64-1                                       pass    
 test-xtf-amd64-amd64-2                                       pass    
 test-xtf-amd64-amd64-3                                       pass    
 test-xtf-amd64-amd64-4                                       pass    
 test-xtf-amd64-amd64-5                                       pass    
 test-amd64-amd64-xl                                          pass    
 test-amd64-coresched-amd64-xl                                pass    
 test-arm64-arm64-xl                                          pass    
 test-armhf-armhf-xl                                          pass    
 test-amd64-i386-xl                                           pass    
 test-amd64-coresched-i386-xl                                 pass    
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm           pass    
 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm            pass    
 test-amd64-amd64-xl-qemut-stubdom-debianhvm-amd64-xsm        pass    
 test-amd64-i386-xl-qemut-stubdom-debianhvm-amd64-xsm         pass    
 test-amd64-amd64-xl-qemut-debianhvm-i386-xsm                 pass    
 test-amd64-i386-xl-qemut-debianhvm-i386-xsm                  pass    
 test-amd64-amd64-xl-qemuu-debianhvm-i386-xsm                 pass    
 test-amd64-i386-xl-qemuu-debianhvm-i386-xsm                  pass    
 test-amd64-amd64-libvirt-xsm                                 pass    
 test-arm64-arm64-libvirt-xsm                                 pass    
 test-amd64-i386-libvirt-xsm                                  pass    
 test-amd64-amd64-xl-xsm                                      pass    
 test-arm64-arm64-xl-xsm                                      pass    
 test-amd64-i386-xl-xsm                                       pass    
 test-amd64-amd64-qemuu-nested-amd                            fail    
 test-amd64-amd64-xl-pvhv2-amd                                pass    
 test-amd64-i386-qemut-rhel6hvm-amd                           pass    
 test-amd64-i386-qemuu-rhel6hvm-amd                           pass    
 test-amd64-amd64-dom0pvh-xl-amd                              pass    
 test-amd64-amd64-xl-qemut-debianhvm-amd64                    pass    
 test-amd64-i386-xl-qemut-debianhvm-amd64                     pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64                    pass    
 test-amd64-i386-xl-qemuu-debianhvm-amd64                     pass    
 test-amd64-i386-freebsd10-amd64                              pass    
 test-amd64-amd64-qemuu-freebsd11-amd64                       pass    
 test-amd64-amd64-qemuu-freebsd12-amd64                       pass    
 test-amd64-amd64-xl-qemuu-ovmf-amd64                         pass    
 test-amd64-i386-xl-qemuu-ovmf-amd64                          pass    
 test-amd64-amd64-xl-qemut-win7-amd64                         fail    
 test-amd64-i386-xl-qemut-win7-amd64                          fail    
 test-amd64-amd64-xl-qemuu-win7-amd64                         fail    
 test-amd64-i386-xl-qemuu-win7-amd64                          fail    
 test-amd64-amd64-xl-qemut-ws16-amd64                         fail    
 test-amd64-i386-xl-qemut-ws16-amd64                          fail    
 test-amd64-amd64-xl-qemuu-ws16-amd64                         fail    
 test-amd64-i386-xl-qemuu-ws16-amd64                          fail    
 test-armhf-armhf-xl-arndale                                  pass    
 test-amd64-amd64-examine-bios                                pass    
 test-amd64-i386-examine-bios                                 pass    
 test-amd64-amd64-xl-credit1                                  pass    
 test-arm64-arm64-xl-credit1                                  pass    
 test-armhf-armhf-xl-credit1                                  pass    
 test-amd64-amd64-xl-credit2                                  pass    
 test-arm64-arm64-xl-credit2                                  pass    
 test-armhf-armhf-xl-credit2                                  pass    
 test-amd64-amd64-xl-qemuu-dmrestrict-amd64-dmrestrict        pass    
 test-amd64-i386-xl-qemuu-dmrestrict-amd64-dmrestrict         pass    
 test-amd64-amd64-examine                                     pass    
 test-arm64-arm64-examine                                     pass    
 test-armhf-armhf-examine                                     pass    
 test-amd64-i386-examine                                      pass    
 test-amd64-i386-freebsd10-i386                               pass    
 test-amd64-amd64-qemuu-nested-intel                          pass    
 test-amd64-amd64-xl-pvhv2-intel                              pass    
 test-amd64-i386-qemut-rhel6hvm-intel                         pass    
 test-amd64-i386-qemuu-rhel6hvm-intel                         pass    
 test-amd64-amd64-dom0pvh-xl-intel                            pass    
 test-amd64-amd64-libvirt                                     pass    
 test-armhf-armhf-libvirt                                     pass    
 test-amd64-i386-libvirt                                      pass    
 test-amd64-amd64-livepatch                                   pass    
 test-amd64-i386-livepatch                                    pass    
 test-amd64-amd64-migrupgrade                                 pass    
 test-amd64-i386-migrupgrade                                  pass    
 test-amd64-amd64-xl-multivcpu                                pass    
 test-armhf-armhf-xl-multivcpu                                pass    
 test-amd64-amd64-pair                                        pass    
 test-amd64-i386-pair                                         pass    
 test-amd64-amd64-libvirt-pair                                pass    
 test-amd64-i386-libvirt-pair                                 pass    
 test-amd64-amd64-xl-pvshim                                   pass    
 test-amd64-i386-xl-pvshim                                    fail    
 test-amd64-amd64-pygrub                                      pass    
 test-armhf-armhf-libvirt-qcow2                               fail    
 test-amd64-amd64-xl-qcow2                                    pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-armhf-armhf-libvirt-raw                                 pass    
 test-amd64-i386-libvirt-raw                                  pass    
 test-amd64-amd64-xl-rtds                                     pass    
 test-armhf-armhf-xl-rtds                                     pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64-shadow             pass    
 test-amd64-i386-xl-qemuu-debianhvm-amd64-shadow              pass    
 test-amd64-amd64-xl-shadow                                   pass    
 test-amd64-i386-xl-shadow                                    pass    
 test-arm64-arm64-xl-thunderx                                 pass    
 test-amd64-amd64-examine-uefi                                pass    
 test-amd64-i386-examine-uefi                                 pass    
 test-amd64-amd64-libvirt-vhd                                 pass    
 test-arm64-arm64-xl-vhd                                      pass    
 test-armhf-armhf-xl-vhd                                      fail    
 test-amd64-i386-xl-vhd                                       pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Pushing revision :

To xenbits.xen.org:/home/xen/git/xen.git
   c30021be30..b25607e528  b25607e528f6ce7851e907ed59ad5ff583aa1840 -> master


From xen-devel-bounces@lists.xenproject.org Sat Jan 20 04:24:15 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 20 Jan 2024 04:24:15 +0000
Received: from list by lists.xenproject.org with outflank-mailman.669314.1041809 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rR2tg-0002I3-Kw; Sat, 20 Jan 2024 04:23:56 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 669314.1041809; Sat, 20 Jan 2024 04:23:56 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rR2tg-0002Hw-Gl; Sat, 20 Jan 2024 04:23:56 +0000
Received: by outflank-mailman (input) for mailman id 669314;
 Sat, 20 Jan 2024 04:23:55 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rR2tf-0002Hk-Ei; Sat, 20 Jan 2024 04:23:55 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rR2tf-0006Mv-52; Sat, 20 Jan 2024 04:23:55 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rR2te-0006qo-J9; Sat, 20 Jan 2024 04:23:54 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rR2te-0005qr-Id; Sat, 20 Jan 2024 04:23:54 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=NZJZdXi6PsMyD/6XO3jdHrsDUGJRXNnl6OGH3UWNqs8=; b=kieOi1qAMas8BZ9UDK0JxEPDM5
	8U2DX1HozWwSplziaZPb016iC9JIqFCkuZJKVNgJyx2Xk/Ff1D9y8baQHp5vWmxnIR+dzWW/uqUeo
	Gj0XwXWy21kmsqkW0EdV0scOlntZj3mvuLclZ9uKDHc02iJY53vBTxpwK2L4Em1pcFBw=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184405-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [linux-linus test] 184405: tolerable FAIL - PUSHED
X-Osstest-Failures:
    linux-linus:test-armhf-armhf-libvirt:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    linux-linus:test-amd64-amd64-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    linux-linus:test-amd64-amd64-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-raw:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-qcow2:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-qemuu-nested-amd:debian-hvm-install/l1/l2:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-xsm:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-thunderx:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-thunderx:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-xsm:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-xsm:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-credit1:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-credit1:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-libvirt-xsm:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-libvirt-xsm:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-credit2:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-credit2:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-arndale:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-arndale:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-multivcpu:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-multivcpu:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-rtds:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-rtds:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit1:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit1:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-libvirt-raw:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-vhd:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-vhd:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-vhd:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-vhd:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-qcow2:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit2:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit2:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-qcow2:migrate-support-check:fail:nonblocking
X-Osstest-Versions-This:
    linux=556e2d17cae620d549c5474b1ece053430cd50bc
X-Osstest-Versions-That:
    linux=9d1694dc91ce7b80bc96d6d8eaf1a1eca668d847
From: osstest service owner <osstest-admin@xenproject.org>
Date: Sat, 20 Jan 2024 04:23:54 +0000

flight 184405 linux-linus real [real]
http://logs.test-lab.xenproject.org/osstest/logs/184405/

Failures :-/ but no regressions.

Tests which did not succeed, but are not blocking:
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 184402
 test-amd64-amd64-xl-qemut-win7-amd64 19 guest-stop            fail like 184402
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 184402
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 184402
 test-armhf-armhf-libvirt-raw 15 saverestore-support-check    fail  like 184402
 test-amd64-amd64-xl-qemut-ws16-amd64 19 guest-stop            fail like 184402
 test-armhf-armhf-libvirt-qcow2 15 saverestore-support-check   fail like 184402
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 184402
 test-amd64-amd64-libvirt     15 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-thunderx 15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-thunderx 16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-xsm      15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-xsm      16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-credit1  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit1  16 saverestore-support-check    fail   never pass
 test-arm64-arm64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl          15 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-xsm 16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl          16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-credit2  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit2  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-arndale  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-arndale  16 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-armhf-armhf-libvirt     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-multivcpu 15 migrate-support-check        fail  never pass
 test-armhf-armhf-xl-multivcpu 16 saverestore-support-check    fail  never pass
 test-armhf-armhf-xl-rtds     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-rtds     16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-credit1  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit1  16 saverestore-support-check    fail   never pass
 test-arm64-arm64-libvirt-raw 14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 15 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-raw 14 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-vhd      14 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-vhd      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-raw 14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      15 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-qcow2 14 migrate-support-check        fail never pass
 test-armhf-armhf-xl          15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-credit2  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit2  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-qcow2 14 migrate-support-check        fail never pass

version targeted for testing:
 linux                556e2d17cae620d549c5474b1ece053430cd50bc
baseline version:
 linux                9d1694dc91ce7b80bc96d6d8eaf1a1eca668d847

Last test of basis   184402  2024-01-19 05:57:15 Z    0 days
Testing same since   184405  2024-01-19 18:44:05 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  "Darrick J. Wong" <djwong@kernel.org>
  Al Viro <viro@zeniv.linux.org.uk>
  Chandan Babu R <chandanbabu@kernel.org>
  Christian Brauner <brauner@kernel.org>
  Darrick J. Wong <djwong@kernel.org>
  David Howells <dhowells@redhat.com>
  Dominique Martinet <asmadeus@codewreck.org>
  Eric Biggers <ebiggers@google.com>
  Ilya Dryomov <idryomov@gmail.com>
  Jia Zhu <zhujia.zj@bytedance.com>
  Linus Torvalds <torvalds@linux-foundation.org>
  Marc Dionne <marc.dionne@auristor.com>
  Namjae Jeon <linkinjeon@kernel.org>
  Steve French <stfrench@microsoft.com>
  Venky Shankar <vshankar@redhat.com>
  Wenchao Hao <haowenchao2@huawei.com>
  Xiubo Li <xiubli@redhat.com>
  Yiqun Leng <yqleng@linux.alibaba.com>

jobs:
 build-amd64-xsm                                              pass    
 build-arm64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64                                                  pass    
 build-arm64                                                  pass    
 build-armhf                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-arm64-libvirt                                          pass    
 build-armhf-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-pvops                                            pass    
 build-arm64-pvops                                            pass    
 build-armhf-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-amd64-amd64-xl                                          pass    
 test-amd64-coresched-amd64-xl                                pass    
 test-arm64-arm64-xl                                          pass    
 test-armhf-armhf-xl                                          pass    
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm           pass    
 test-amd64-amd64-xl-qemut-stubdom-debianhvm-amd64-xsm        pass    
 test-amd64-amd64-xl-qemut-debianhvm-i386-xsm                 pass    
 test-amd64-amd64-xl-qemuu-debianhvm-i386-xsm                 pass    
 test-amd64-amd64-libvirt-xsm                                 pass    
 test-arm64-arm64-libvirt-xsm                                 pass    
 test-amd64-amd64-xl-xsm                                      pass    
 test-arm64-arm64-xl-xsm                                      pass    
 test-amd64-amd64-qemuu-nested-amd                            fail    
 test-amd64-amd64-xl-pvhv2-amd                                pass    
 test-amd64-amd64-dom0pvh-xl-amd                              pass    
 test-amd64-amd64-xl-qemut-debianhvm-amd64                    pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64                    pass    
 test-amd64-amd64-freebsd11-amd64                             pass    
 test-amd64-amd64-freebsd12-amd64                             pass    
 test-amd64-amd64-xl-qemuu-ovmf-amd64                         pass    
 test-amd64-amd64-xl-qemut-win7-amd64                         fail    
 test-amd64-amd64-xl-qemuu-win7-amd64                         fail    
 test-amd64-amd64-xl-qemut-ws16-amd64                         fail    
 test-amd64-amd64-xl-qemuu-ws16-amd64                         fail    
 test-armhf-armhf-xl-arndale                                  pass    
 test-amd64-amd64-examine-bios                                pass    
 test-amd64-amd64-xl-credit1                                  pass    
 test-arm64-arm64-xl-credit1                                  pass    
 test-armhf-armhf-xl-credit1                                  pass    
 test-amd64-amd64-xl-credit2                                  pass    
 test-arm64-arm64-xl-credit2                                  pass    
 test-armhf-armhf-xl-credit2                                  pass    
 test-amd64-amd64-xl-qemuu-dmrestrict-amd64-dmrestrict        pass    
 test-amd64-amd64-examine                                     pass    
 test-arm64-arm64-examine                                     pass    
 test-armhf-armhf-examine                                     pass    
 test-amd64-amd64-qemuu-nested-intel                          pass    
 test-amd64-amd64-xl-pvhv2-intel                              pass    
 test-amd64-amd64-dom0pvh-xl-intel                            pass    
 test-amd64-amd64-libvirt                                     pass    
 test-armhf-armhf-libvirt                                     pass    
 test-amd64-amd64-xl-multivcpu                                pass    
 test-armhf-armhf-xl-multivcpu                                pass    
 test-amd64-amd64-pair                                        pass    
 test-amd64-amd64-libvirt-pair                                pass    
 test-amd64-amd64-xl-pvshim                                   pass    
 test-amd64-amd64-pygrub                                      pass    
 test-amd64-amd64-libvirt-qcow2                               pass    
 test-armhf-armhf-libvirt-qcow2                               pass    
 test-amd64-amd64-libvirt-raw                                 pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-armhf-armhf-libvirt-raw                                 pass    
 test-amd64-amd64-xl-rtds                                     pass    
 test-armhf-armhf-xl-rtds                                     pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64-shadow             pass    
 test-amd64-amd64-xl-shadow                                   pass    
 test-arm64-arm64-xl-thunderx                                 pass    
 test-amd64-amd64-examine-uefi                                pass    
 test-amd64-amd64-xl-vhd                                      pass    
 test-arm64-arm64-xl-vhd                                      pass    
 test-armhf-armhf-xl-vhd                                      pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Pushing revision :

hint: The 'hooks/update' hook was ignored because it's not set as executable.
hint: You can disable this warning with `git config advice.ignoredHook false`.
hint: The 'hooks/post-receive' hook was ignored because it's not set as executable.
hint: You can disable this warning with `git config advice.ignoredHook false`.
hint: The 'hooks/post-update' hook was ignored because it's not set as executable.
hint: You can disable this warning with `git config advice.ignoredHook false`.
To xenbits.xen.org:/home/xen/git/linux-pvops.git
   9d1694dc91ce..556e2d17cae6  556e2d17cae620d549c5474b1ece053430cd50bc -> tested/linux-linus


From xen-devel-bounces@lists.xenproject.org Sat Jan 20 06:25:16 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 20 Jan 2024 06:25:16 +0000
Received: from list by lists.xenproject.org with outflank-mailman.669324.1041819 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rR4mu-0001gV-4N; Sat, 20 Jan 2024 06:25:04 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 669324.1041819; Sat, 20 Jan 2024 06:25:04 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rR4mu-0001gO-0p; Sat, 20 Jan 2024 06:25:04 +0000
Received: by outflank-mailman (input) for mailman id 669324;
 Sat, 20 Jan 2024 06:25:03 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rR4ms-0001gE-W5; Sat, 20 Jan 2024 06:25:03 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rR4ms-0000Zx-L5; Sat, 20 Jan 2024 06:25:02 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rR4ms-00050q-3U; Sat, 20 Jan 2024 06:25:02 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rR4ms-00053q-35; Sat, 20 Jan 2024 06:25:02 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=Ji2g8t64+X+p4xuBZb4wp401rrTEdJ0jVrH8Qv66+6c=; b=4xlfhIhSO4MjWp9by8V6GhdqPl
	QXL4ChPQ2ztk8AMsPL9TRfNx5Nrwf+08dGP00/3pyF2MuTP464TEnAr/K9w8HrCKOZiGqj7hRI7Je
	jYmN7cBM5ikhdY+k3MobDEp74/jx1mRnNfXVZfYna/1DfOB5eDIpvTXFAQq+AGlC5gLk=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184408-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [ovmf test] 184408: all pass - PUSHED
X-Osstest-Versions-This:
    ovmf=5d016fe0a061647ed29562c9f161e454b0f7f9dd
X-Osstest-Versions-That:
    ovmf=0223bdd4e40975c427616761fb13c9454461b64d
From: osstest service owner <osstest-admin@xenproject.org>
Date: Sat, 20 Jan 2024 06:25:02 +0000

flight 184408 ovmf real [real]
http://logs.test-lab.xenproject.org/osstest/logs/184408/

Perfect :-)
All tests in this flight passed as required
version targeted for testing:
 ovmf                 5d016fe0a061647ed29562c9f161e454b0f7f9dd
baseline version:
 ovmf                 0223bdd4e40975c427616761fb13c9454461b64d

Last test of basis   184403  2024-01-19 07:11:05 Z    0 days
Testing same since   184408  2024-01-20 03:43:02 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Pierre Gondois <pierre.gondois@arm.com>

jobs:
 build-amd64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-amd64-amd64-xl-qemuu-ovmf-amd64                         pass    
 test-amd64-i386-xl-qemuu-ovmf-amd64                          pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Pushing revision :

To xenbits.xen.org:/home/xen/git/osstest/ovmf.git
   0223bdd4e4..5d016fe0a0  5d016fe0a061647ed29562c9f161e454b0f7f9dd -> xen-tested-master


From xen-devel-bounces@lists.xenproject.org Sat Jan 20 09:56:13 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 20 Jan 2024 09:56:13 +0000
Received: from list by lists.xenproject.org with outflank-mailman.669348.1041829 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rR851-00035Q-54; Sat, 20 Jan 2024 09:55:59 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 669348.1041829; Sat, 20 Jan 2024 09:55:59 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rR851-00035J-2L; Sat, 20 Jan 2024 09:55:59 +0000
Received: by outflank-mailman (input) for mailman id 669348;
 Sat, 20 Jan 2024 09:55:57 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rR84z-000359-0f; Sat, 20 Jan 2024 09:55:57 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rR84y-0005Ms-PL; Sat, 20 Jan 2024 09:55:56 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rR84y-0007Eq-F5; Sat, 20 Jan 2024 09:55:56 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rR84y-0004lp-Ed; Sat, 20 Jan 2024 09:55:56 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=GBgdb2ObIOZOtdq9Wyt/rj6OBEpZWbmtdteNqd6eV3s=; b=w4EeYVN/JVYZus6b/wbVmpRPi9
	3eyofDLGtaOkwd1OOMM0jyyp8/UXYxvLxCFi+E/mFcakgIxdnf8bP5STOTJcAgID+tEAsN+XYFoxV
	+H9x8SNWOJ7FYLgsdTd6J/a9V1GJ5k06DpqJhzzJosw0mbrE2Y/FiEsCu9uHxZyeTmTs=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184411-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [ovmf test] 184411: all pass - PUSHED
X-Osstest-Versions-This:
    ovmf=da228b29bdf5d52c029166b51538c9f1d76c88da
X-Osstest-Versions-That:
    ovmf=5d016fe0a061647ed29562c9f161e454b0f7f9dd
From: osstest service owner <osstest-admin@xenproject.org>
Date: Sat, 20 Jan 2024 09:55:56 +0000

flight 184411 ovmf real [real]
http://logs.test-lab.xenproject.org/osstest/logs/184411/

Perfect :-)
All tests in this flight passed as required
version targeted for testing:
 ovmf                 da228b29bdf5d52c029166b51538c9f1d76c88da
baseline version:
 ovmf                 5d016fe0a061647ed29562c9f161e454b0f7f9dd

Last test of basis   184408  2024-01-20 03:43:02 Z    0 days
Testing same since   184411  2024-01-20 06:43:05 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Zhiquan Li <zhiquan1.li@intel.com>

jobs:
 build-amd64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-amd64-amd64-xl-qemuu-ovmf-amd64                         pass    
 test-amd64-i386-xl-qemuu-ovmf-amd64                          pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Pushing revision :

To xenbits.xen.org:/home/xen/git/osstest/ovmf.git
   5d016fe0a0..da228b29bd  da228b29bdf5d52c029166b51538c9f1d76c88da -> xen-tested-master


From xen-devel-bounces@lists.xenproject.org Sat Jan 20 10:52:52 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 20 Jan 2024 10:52:52 +0000
Received: from list by lists.xenproject.org with outflank-mailman.669358.1041839 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rR8xv-0002w5-CM; Sat, 20 Jan 2024 10:52:43 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 669358.1041839; Sat, 20 Jan 2024 10:52:43 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rR8xv-0002vy-8T; Sat, 20 Jan 2024 10:52:43 +0000
Received: by outflank-mailman (input) for mailman id 669358;
 Sat, 20 Jan 2024 10:52:41 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rR8xt-0002vo-KG; Sat, 20 Jan 2024 10:52:41 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rR8xt-0006Ul-Ga; Sat, 20 Jan 2024 10:52:41 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rR8xt-0000VI-4x; Sat, 20 Jan 2024 10:52:41 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rR8xt-0007OG-4Q; Sat, 20 Jan 2024 10:52:41 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=zCeTcgDixJg/eQMDbN6QbZpUL7blbNGzWNRPYQV3WEs=; b=C53LiMFh6vqAOmrnYR23ZQIGKd
	kifVu6CSjjLyPE/uuitZ5nzRA5NNb9kAB68j/uu5t2j/Tqv1BEb/sn9iEBGqwthzTp1HBzZt9tuLi
	lGLoEBr0FRwzF+ZGA95YI17+DyWbJ7E4DxXZr8JSuCMc1Fg8C83x3H3t/d+WIhqJFRDE=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184407-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [xen-unstable test] 184407: tolerable FAIL
X-Osstest-Failures:
    xen-unstable:test-armhf-armhf-libvirt:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-amd64-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-raw:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-amd64-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-qcow2:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-qemuu-nested-amd:debian-hvm-install/l1/l2:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-amd64-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-i386-libvirt-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-libvirt:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-pvshim:guest-start:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-xsm:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-credit2:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-credit2:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-libvirt-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-libvirt-xsm:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-thunderx:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-thunderx:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-credit1:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-credit1:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-multivcpu:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-multivcpu:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit2:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit2:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-libvirt-raw:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-libvirt-raw:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-libvirt-raw:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt-vhd:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-vhd:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-vhd:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-raw:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-vhd:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-vhd:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit1:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit1:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-rtds:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-rtds:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-arndale:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-arndale:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-qcow2:migrate-support-check:fail:nonblocking
X-Osstest-Versions-This:
    xen=b25607e528f6ce7851e907ed59ad5ff583aa1840
X-Osstest-Versions-That:
    xen=b25607e528f6ce7851e907ed59ad5ff583aa1840
From: osstest service owner <osstest-admin@xenproject.org>
Date: Sat, 20 Jan 2024 10:52:41 +0000

flight 184407 xen-unstable real [real]
http://logs.test-lab.xenproject.org/osstest/logs/184407/

Failures :-/ but no regressions.

Tests which did not succeed, but are not blocking:
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 184404
 test-amd64-amd64-xl-qemut-win7-amd64 19 guest-stop            fail like 184404
 test-amd64-i386-xl-qemuu-win7-amd64 19 guest-stop             fail like 184404
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 184404
 test-amd64-i386-xl-qemut-ws16-amd64 19 guest-stop             fail like 184404
 test-armhf-armhf-libvirt-raw 15 saverestore-support-check    fail  like 184404
 test-amd64-i386-xl-qemut-win7-amd64 19 guest-stop             fail like 184404
 test-amd64-amd64-xl-qemut-ws16-amd64 19 guest-stop            fail like 184404
 test-armhf-armhf-libvirt-qcow2 15 saverestore-support-check   fail like 184404
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 184404
 test-amd64-i386-xl-qemuu-ws16-amd64 19 guest-stop             fail like 184404
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 184404
 test-amd64-i386-libvirt-xsm  15 migrate-support-check        fail   never pass
 test-amd64-i386-libvirt      15 migrate-support-check        fail   never pass
 test-amd64-i386-xl-pvshim    14 guest-start                  fail   never pass
 test-amd64-amd64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl          15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-xsm      15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl          16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-xsm      16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-credit2  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit2  16 saverestore-support-check    fail   never pass
 test-arm64-arm64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-xsm 16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-thunderx 15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-thunderx 16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-credit1  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit1  16 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt     15 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-armhf-armhf-libvirt     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-multivcpu 15 migrate-support-check        fail  never pass
 test-armhf-armhf-xl-multivcpu 16 saverestore-support-check    fail  never pass
 test-armhf-armhf-xl-credit2  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit2  16 saverestore-support-check    fail   never pass
 test-amd64-i386-libvirt-raw  14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 15 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-vhd 14 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-vhd      14 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-vhd      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-raw 14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl          15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-credit1  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit1  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-rtds     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-rtds     16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-arndale  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-arndale  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-qcow2 14 migrate-support-check        fail never pass

version targeted for testing:
 xen                  b25607e528f6ce7851e907ed59ad5ff583aa1840
baseline version:
 xen                  b25607e528f6ce7851e907ed59ad5ff583aa1840

Last test of basis   184407  2024-01-20 02:06:04 Z    0 days
Testing same since                          (not found)         0 attempts

jobs:
 build-amd64-xsm                                              pass    
 build-arm64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64-xtf                                              pass    
 build-amd64                                                  pass    
 build-arm64                                                  pass    
 build-armhf                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-arm64-libvirt                                          pass    
 build-armhf-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-prev                                             pass    
 build-i386-prev                                              pass    
 build-amd64-pvops                                            pass    
 build-arm64-pvops                                            pass    
 build-armhf-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-xtf-amd64-amd64-1                                       pass    
 test-xtf-amd64-amd64-2                                       pass    
 test-xtf-amd64-amd64-3                                       pass    
 test-xtf-amd64-amd64-4                                       pass    
 test-xtf-amd64-amd64-5                                       pass    
 test-amd64-amd64-xl                                          pass    
 test-amd64-coresched-amd64-xl                                pass    
 test-arm64-arm64-xl                                          pass    
 test-armhf-armhf-xl                                          pass    
 test-amd64-i386-xl                                           pass    
 test-amd64-coresched-i386-xl                                 pass    
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm           pass    
 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm            pass    
 test-amd64-amd64-xl-qemut-stubdom-debianhvm-amd64-xsm        pass    
 test-amd64-i386-xl-qemut-stubdom-debianhvm-amd64-xsm         pass    
 test-amd64-amd64-xl-qemut-debianhvm-i386-xsm                 pass    
 test-amd64-i386-xl-qemut-debianhvm-i386-xsm                  pass    
 test-amd64-amd64-xl-qemuu-debianhvm-i386-xsm                 pass    
 test-amd64-i386-xl-qemuu-debianhvm-i386-xsm                  pass    
 test-amd64-amd64-libvirt-xsm                                 pass    
 test-arm64-arm64-libvirt-xsm                                 pass    
 test-amd64-i386-libvirt-xsm                                  pass    
 test-amd64-amd64-xl-xsm                                      pass    
 test-arm64-arm64-xl-xsm                                      pass    
 test-amd64-i386-xl-xsm                                       pass    
 test-amd64-amd64-qemuu-nested-amd                            fail    
 test-amd64-amd64-xl-pvhv2-amd                                pass    
 test-amd64-i386-qemut-rhel6hvm-amd                           pass    
 test-amd64-i386-qemuu-rhel6hvm-amd                           pass    
 test-amd64-amd64-dom0pvh-xl-amd                              pass    
 test-amd64-amd64-xl-qemut-debianhvm-amd64                    pass    
 test-amd64-i386-xl-qemut-debianhvm-amd64                     pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64                    pass    
 test-amd64-i386-xl-qemuu-debianhvm-amd64                     pass    
 test-amd64-i386-freebsd10-amd64                              pass    
 test-amd64-amd64-qemuu-freebsd11-amd64                       pass    
 test-amd64-amd64-qemuu-freebsd12-amd64                       pass    
 test-amd64-amd64-xl-qemuu-ovmf-amd64                         pass    
 test-amd64-i386-xl-qemuu-ovmf-amd64                          pass    
 test-amd64-amd64-xl-qemut-win7-amd64                         fail    
 test-amd64-i386-xl-qemut-win7-amd64                          fail    
 test-amd64-amd64-xl-qemuu-win7-amd64                         fail    
 test-amd64-i386-xl-qemuu-win7-amd64                          fail    
 test-amd64-amd64-xl-qemut-ws16-amd64                         fail    
 test-amd64-i386-xl-qemut-ws16-amd64                          fail    
 test-amd64-amd64-xl-qemuu-ws16-amd64                         fail    
 test-amd64-i386-xl-qemuu-ws16-amd64                          fail    
 test-armhf-armhf-xl-arndale                                  pass    
 test-amd64-amd64-examine-bios                                pass    
 test-amd64-i386-examine-bios                                 pass    
 test-amd64-amd64-xl-credit1                                  pass    
 test-arm64-arm64-xl-credit1                                  pass    
 test-armhf-armhf-xl-credit1                                  pass    
 test-amd64-amd64-xl-credit2                                  pass    
 test-arm64-arm64-xl-credit2                                  pass    
 test-armhf-armhf-xl-credit2                                  pass    
 test-amd64-amd64-xl-qemuu-dmrestrict-amd64-dmrestrict        pass    
 test-amd64-i386-xl-qemuu-dmrestrict-amd64-dmrestrict         pass    
 test-amd64-amd64-examine                                     pass    
 test-arm64-arm64-examine                                     pass    
 test-armhf-armhf-examine                                     pass    
 test-amd64-i386-examine                                      pass    
 test-amd64-i386-freebsd10-i386                               pass    
 test-amd64-amd64-qemuu-nested-intel                          pass    
 test-amd64-amd64-xl-pvhv2-intel                              pass    
 test-amd64-i386-qemut-rhel6hvm-intel                         pass    
 test-amd64-i386-qemuu-rhel6hvm-intel                         pass    
 test-amd64-amd64-dom0pvh-xl-intel                            pass    
 test-amd64-amd64-libvirt                                     pass    
 test-armhf-armhf-libvirt                                     pass    
 test-amd64-i386-libvirt                                      pass    
 test-amd64-amd64-livepatch                                   pass    
 test-amd64-i386-livepatch                                    pass    
 test-amd64-amd64-migrupgrade                                 pass    
 test-amd64-i386-migrupgrade                                  pass    
 test-amd64-amd64-xl-multivcpu                                pass    
 test-armhf-armhf-xl-multivcpu                                pass    
 test-amd64-amd64-pair                                        pass    
 test-amd64-i386-pair                                         pass    
 test-amd64-amd64-libvirt-pair                                pass    
 test-amd64-i386-libvirt-pair                                 pass    
 test-amd64-amd64-xl-pvshim                                   pass    
 test-amd64-i386-xl-pvshim                                    fail    
 test-amd64-amd64-pygrub                                      pass    
 test-armhf-armhf-libvirt-qcow2                               pass    
 test-amd64-amd64-xl-qcow2                                    pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-armhf-armhf-libvirt-raw                                 pass    
 test-amd64-i386-libvirt-raw                                  pass    
 test-amd64-amd64-xl-rtds                                     pass    
 test-armhf-armhf-xl-rtds                                     pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64-shadow             pass    
 test-amd64-i386-xl-qemuu-debianhvm-amd64-shadow              pass    
 test-amd64-amd64-xl-shadow                                   pass    
 test-amd64-i386-xl-shadow                                    pass    
 test-arm64-arm64-xl-thunderx                                 pass    
 test-amd64-amd64-examine-uefi                                pass    
 test-amd64-i386-examine-uefi                                 pass    
 test-amd64-amd64-libvirt-vhd                                 pass    
 test-arm64-arm64-xl-vhd                                      pass    
 test-armhf-armhf-xl-vhd                                      pass    
 test-amd64-i386-xl-vhd                                       pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Published tested tree is already up to date.



From xen-devel-bounces@lists.xenproject.org Sat Jan 20 12:43:47 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 20 Jan 2024 12:43:47 +0000
Received: from list by lists.xenproject.org with outflank-mailman.669382.1041849 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rRAhA-0000B6-Hx; Sat, 20 Jan 2024 12:43:32 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 669382.1041849; Sat, 20 Jan 2024 12:43:32 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rRAhA-0000Az-Ev; Sat, 20 Jan 2024 12:43:32 +0000
Received: by outflank-mailman (input) for mailman id 669382;
 Sat, 20 Jan 2024 12:43:30 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rRAh8-0000Am-BE; Sat, 20 Jan 2024 12:43:30 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rRAh8-00009p-3r; Sat, 20 Jan 2024 12:43:30 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rRAh7-0003FK-JD; Sat, 20 Jan 2024 12:43:29 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rRAh7-0001CJ-Iq; Sat, 20 Jan 2024 12:43:29 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=+jkdI6Cy+Kbj1KDzdPBux+xmoacbnHL11YySHxfbOrI=; b=CpGDd+wlZU9zFgo83YeSnO3VjU
	Kwpd+buzOsekxTqnFHZewnm6sJP//gHbSLWjGjI8c5lgmcNvA2VDZhU+EqII82rgnLVeF86WmZWsA
	M7LcbI54FhX8PVGtYOzDrd9nLl9lqLNsLw/MyAb5CusYzdSYRAgEVIWFLHO/sbHIVXAU=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184409-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [libvirt test] 184409: tolerable all pass - PUSHED
X-Osstest-Failures:
    libvirt:test-armhf-armhf-libvirt:saverestore-support-check:fail:nonblocking
    libvirt:test-armhf-armhf-libvirt-qcow2:saverestore-support-check:fail:nonblocking
    libvirt:test-armhf-armhf-libvirt-raw:saverestore-support-check:fail:nonblocking
    libvirt:test-amd64-amd64-libvirt-xsm:migrate-support-check:fail:nonblocking
    libvirt:test-amd64-i386-libvirt-xsm:migrate-support-check:fail:nonblocking
    libvirt:test-amd64-i386-libvirt:migrate-support-check:fail:nonblocking
    libvirt:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    libvirt:test-arm64-arm64-libvirt:migrate-support-check:fail:nonblocking
    libvirt:test-arm64-arm64-libvirt:saverestore-support-check:fail:nonblocking
    libvirt:test-arm64-arm64-libvirt-xsm:migrate-support-check:fail:nonblocking
    libvirt:test-arm64-arm64-libvirt-xsm:saverestore-support-check:fail:nonblocking
    libvirt:test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    libvirt:test-armhf-armhf-libvirt:migrate-support-check:fail:nonblocking
    libvirt:test-amd64-i386-libvirt-raw:migrate-support-check:fail:nonblocking
    libvirt:test-arm64-arm64-libvirt-qcow2:migrate-support-check:fail:nonblocking
    libvirt:test-arm64-arm64-libvirt-qcow2:saverestore-support-check:fail:nonblocking
    libvirt:test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    libvirt:test-arm64-arm64-libvirt-raw:migrate-support-check:fail:nonblocking
    libvirt:test-arm64-arm64-libvirt-raw:saverestore-support-check:fail:nonblocking
    libvirt:test-amd64-amd64-libvirt-vhd:migrate-support-check:fail:nonblocking
    libvirt:test-armhf-armhf-libvirt-qcow2:migrate-support-check:fail:nonblocking
    libvirt:test-armhf-armhf-libvirt-raw:migrate-support-check:fail:nonblocking
X-Osstest-Versions-This:
    libvirt=1785eb8dc93be6a027b97678d4b73afd3806ba0f
X-Osstest-Versions-That:
    libvirt=8581ec7e68d5d656d7121cf77206b47dc6b261c4
From: osstest service owner <osstest-admin@xenproject.org>
Date: Sat, 20 Jan 2024 12:43:29 +0000

flight 184409 libvirt real [real]
http://logs.test-lab.xenproject.org/osstest/logs/184409/

Failures :-/ but no regressions.

Tests which did not succeed, but are not blocking:
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 184401
 test-armhf-armhf-libvirt-qcow2 15 saverestore-support-check   fail like 184401
 test-armhf-armhf-libvirt-raw 15 saverestore-support-check    fail  like 184401
 test-amd64-amd64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-amd64-i386-libvirt-xsm  15 migrate-support-check        fail   never pass
 test-amd64-i386-libvirt      15 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt     15 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt     15 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt     16 saverestore-support-check    fail   never pass
 test-arm64-arm64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-xsm 16 saverestore-support-check    fail   never pass
 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-armhf-armhf-libvirt     15 migrate-support-check        fail   never pass
 test-amd64-i386-libvirt-raw  14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-qcow2 14 migrate-support-check        fail never pass
 test-arm64-arm64-libvirt-qcow2 15 saverestore-support-check    fail never pass
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-arm64-arm64-libvirt-raw 14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 15 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-vhd 14 migrate-support-check        fail   never pass
 test-armhf-armhf-libvirt-qcow2 14 migrate-support-check        fail never pass
 test-armhf-armhf-libvirt-raw 14 migrate-support-check        fail   never pass

version targeted for testing:
 libvirt              1785eb8dc93be6a027b97678d4b73afd3806ba0f
baseline version:
 libvirt              8581ec7e68d5d656d7121cf77206b47dc6b261c4

Last test of basis   184401  2024-01-19 04:18:53 Z    1 days
Testing same since   184409  2024-01-20 04:18:56 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Peter Krempa <pkrempa@redhat.com>

jobs:
 build-amd64-xsm                                              pass    
 build-arm64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64                                                  pass    
 build-arm64                                                  pass    
 build-armhf                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-arm64-libvirt                                          pass    
 build-armhf-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-pvops                                            pass    
 build-arm64-pvops                                            pass    
 build-armhf-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm           pass    
 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm            pass    
 test-amd64-amd64-libvirt-xsm                                 pass    
 test-arm64-arm64-libvirt-xsm                                 pass    
 test-amd64-i386-libvirt-xsm                                  pass    
 test-amd64-amd64-libvirt                                     pass    
 test-arm64-arm64-libvirt                                     pass    
 test-armhf-armhf-libvirt                                     pass    
 test-amd64-i386-libvirt                                      pass    
 test-amd64-amd64-libvirt-pair                                pass    
 test-amd64-i386-libvirt-pair                                 pass    
 test-arm64-arm64-libvirt-qcow2                               pass    
 test-armhf-armhf-libvirt-qcow2                               pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-armhf-armhf-libvirt-raw                                 pass    
 test-amd64-i386-libvirt-raw                                  pass    
 test-amd64-amd64-libvirt-vhd                                 pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Pushing revision :

To xenbits.xen.org:/home/xen/git/libvirt.git
   8581ec7e68..1785eb8dc9  1785eb8dc93be6a027b97678d4b73afd3806ba0f -> xen-tested-master


From xen-devel-bounces@lists.xenproject.org Sat Jan 20 12:44:46 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 20 Jan 2024 12:44:46 +0000
Received: from list by lists.xenproject.org with outflank-mailman.668933.1041859 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rRAiL-0000fS-N2; Sat, 20 Jan 2024 12:44:45 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 668933.1041859; Sat, 20 Jan 2024 12:44:45 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rRAiL-0000fL-1k; Sat, 20 Jan 2024 12:44:45 +0000
Received: by outflank-mailman (input) for mailman id 668933;
 Fri, 19 Jan 2024 07:44:52 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=0/Na=I5=gmail.com=simonpatp@srs-se1.protection.inumbo.net>)
 id 1rQjYY-0000y0-0Z
 for xen-devel@lists.xenproject.org; Fri, 19 Jan 2024 07:44:52 +0000
Received: from mail-lj1-x232.google.com (mail-lj1-x232.google.com
 [2a00:1450:4864:20::232])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 9e970576-b69e-11ee-98f2-6d05b1d4d9a1;
 Fri, 19 Jan 2024 08:44:47 +0100 (CET)
Received: by mail-lj1-x232.google.com with SMTP id
 38308e7fff4ca-2cd853c159eso5983831fa.2
 for <xen-devel@lists.xenproject.org>; Thu, 18 Jan 2024 23:44:47 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 9e970576-b69e-11ee-98f2-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1705650287; x=1706255087; darn=lists.xenproject.org;
        h=cc:to:subject:message-id:date:from:in-reply-to:references
         :mime-version:from:to:cc:subject:date:message-id:reply-to;
        bh=IMO/vepYdclXHld9sTDnszyAFRsWC1DP7U6Sr3ZN71A=;
        b=K4VfWK6zKsSVPP/+tF8wTNf08JQ5Wr2UWIXB07guECFnIq3P5bmFtQn19noLTyHo5g
         PvqFjlAs004lvemRlmT+xC9fSKwxo5UwgP8C1+Ts5EPaOAc7Wo974H/Ua1bskJGh91dw
         Q4acBmgFWaSdWhqMUUGkylObrLqbtLKg2O7AjBSivbEbzs4+HJHIox/GhpCR0BImzPWf
         F1UhXrOhaFd+J8cG8FcAc3srQTRujBK6NvIoIMAR5dnK2QMdaMMI00jJGqZxbkKCNS60
         +zdDxhnRbrWaIfNiNRHWTGnHesOx/KT4aa8UsXeB2v4BTIQN3tZi1eibZviM2TYUWzta
         i/TA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705650287; x=1706255087;
        h=cc:to:subject:message-id:date:from:in-reply-to:references
         :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id
         :reply-to;
        bh=IMO/vepYdclXHld9sTDnszyAFRsWC1DP7U6Sr3ZN71A=;
        b=AwP/RT51XJWCrizVK4SZjsRtTy1qdun+afSCualioVQjVFhgpEGlTl0LG4vkoGadja
         XG3xITTxYW1Abt+6AkOAFlgkTNT323UyB5wDKKVgm/vd6qNq/IZwwYzlSz3aGAZyZpU/
         XzD6Fozwi9o3GWEUhDptiEpZR5ZCcirPTGquPeYO4jCkhHSvoxoVrrrV+r1jVEzTlh6r
         /xJ4a80IIb9pJDrn/KDD1Vy3GFoTW2Dqfxa6hhg4pm1nFpC6R3UzVeZyMz8GDqOsyi/a
         8D8l/u6FQGgYPWwh5iyv0SqBQ/06cMOgdidggJR/Iu5+yDbGG+LKu4OxhFJV9uRK1Kzp
         f4vA==
X-Gm-Message-State: AOJu0YzTtaLUZsHaS/kwKKFFOlS59m/zqNCh39tJj1yuTZfVFQgFp+a8
	Nvph+VKlWtNmwg79CDljz4W4i3NPn2GNdV/Xl60id+wHjsbmgV4hM0RPJBfXJCzRYJ9AzuLWSof
	/K5OlMpsSLTHMqp9S0vju3zuC/VU=
X-Google-Smtp-Source: AGHT+IGqZkBd6weSSAGWUrkZnVryzKnYXf5vQxuoEjksSY98L7sX8MQCstcefDth591PeGu1Iv2d9uUT5pcuI45lG7c=
X-Received: by 2002:a2e:b00a:0:b0:2cc:8735:5532 with SMTP id
 y10-20020a2eb00a000000b002cc87355532mr1129443ljk.59.1705650286430; Thu, 18
 Jan 2024 23:44:46 -0800 (PST)
MIME-Version: 1.0
References: <1708c3d7-662a-44bc-b9b3-4ab9f8642d7b@suse.com>
 <dcaf9d8d-ad5a-4714-936b-79ed0e587f9d@suse.com> <CAOCpoWeowZPuQTeBp9nu8p8CDtE=u++wN_UqRoABZtB57D50Qw@mail.gmail.com>
 <ac742d12-ec91-4215-bb42-82a145924b4f@suse.com> <CAOCpoWfQmkhN3hms1xuotSUZzVzR99i9cNGGU2r=yD5PjysMiQ@mail.gmail.com>
 <fa23a590-5869-4e11-8998-1d03742c5919@suse.com> <CAOCpoWf4CMkCWx8uR2NbFrZrKSS78wj1-hFsAUqsjCfsmqooVA@mail.gmail.com>
 <Zajg1O7Z52VTBq31@macbook> <CAOCpoWeO9h7b_CjJb9jtKaEUVv_=XDSVkr55QSg3ArFc4n8G2w@mail.gmail.com>
 <ZajzcpArQYQhdj3T@macbook> <ZakcdfS3UwEb0oh2@macbook>
In-Reply-To: <ZakcdfS3UwEb0oh2@macbook>
From: Patrick Plenefisch <simonpatp@gmail.com>
Date: Fri, 19 Jan 2024 02:44:35 -0500
Message-ID: <CAOCpoWdL3YnpitZxEoFgdvtZ6juy8oykYj6fX_tv4QLvj2Fv0g@mail.gmail.com>
Subject: Re: ACPI VFCT table too short on PVH dom0 (was: Re: E820 memory
 allocation issue on Threadripper platforms)
To: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
Cc: Jan Beulich <jbeulich@suse.com>, xen-devel@lists.xenproject.org, 
	Juergen Gross <jgross@suse.com>, Huang Rui <ray.huang@amd.com>, Jiqian Chen <Jiqian.Chen@amd.com>
Content-Type: multipart/mixed; boundary="0000000000006f57f0060f47a720"

--0000000000006f57f0060f47a720
Content-Type: multipart/alternative; boundary="0000000000006f57ee060f47a71e"

--0000000000006f57ee060f47a71e
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

On Thu, Jan 18, 2024 at 7:41=E2=80=AFAM Roger Pau Monn=C3=A9 <roger.pau@cit=
rix.com>
wrote:

>
> From that environment (PVH dom0) can you see if you can dump the
> contents of the VFCT table?  I don't have a system with that table, so
> not sure if this will work (because iasl is unlikely to know how to
> decode it):
>
> # acpidump -n VFCT -o table.dump
> # acpixtract -a table.dump
> # iasl -d vfct.dat
> # cat vfct.dsl
>
> Would be good if you can compare the output from what you get on a PV
> dom0 or when running native Linux.
>
> I'm also adding some AMD folks, as IIRC they did some fixes to Linux
> in order to get some AMD graphics cards running on a PVH dom0, maybe
> they can provide some additional input.
>
>
Well, this is pretty weird. I'll go into more details because it may be
relevant. I had been working with ASRock support ever since I got my brand
new motherboard because I couldn't see the BIOS/UEFI screens. I could boot
up, and once native linux took control amdgpu got the screens/gpu working
fine. I finally managed to be able to see the UEFI/BIOS setup screens by
patching my VBIOS: I extracted the VBIOS image of a cheap R5 430 OEM, ran
GOPupd to update the VBIOS UEFI component (GOP) from version 1.60 to 1.67.
That allowed the UEFI to actually initialize and use a screen. However, I
later realized that only 1 monitor was lighting up in the bios: my monitor
plugged into the Radeon RX 480 that was still on VBIOS GOP 1.60. It appears
the GOP was initializing the RX 480 too, despite not being flashed with the
latest itself. I am working on an email to asrock support about that. Once
I get into linux (native or PV), both monitors light up as expected. Also,
If I boot linux PVH from grub, they also work. Those usage scenarios have
acpidump output as identical. Booting linux PVH directly from UEFI (no
grub), the monitors go to sleep on the RX 480, and amdgpu errors out about
VFCT, but the R5 430 OEM does still have output. Interestingly, there is a
different screen mode booting UEFI+PVH, the characters are basically
squares, with more vertical lines than "default", maybe close to native
screen resolution, but horizontally it's still "default". Booting from grub
gives everything in the "default" resolution.

So what is in the VFCT Table? VFCT contains the non-GOP VIOS image of my
Radeon RX 480 GPU. You can compare it to the VBIOS hosted at
https://www.techpowerup.com/vgabios/185789/msi-rx480-4096-160720 (Compare
the end at E667 in the VFCT table to E5ff in that vbios link). I find this
extra suspicious due to the above.

Now for the extra horrible things:

UEFI-booted PVH Linux doesn't support keyboard getty input, and at least
some of the USB devices are not in lsusb. It also decided to vanish one of
my HDD's. The `reboot` command hangs. The Power button doesn't do anything.
There are several stack traces in dmesg. But Alt-SysRq-B does reboot!
Luckily I could ssh in and capture the ACPI tables. They are much smaller,
and VFCT is empty.  Booting back to one of the working scenarios (direct
linux, Grub PV, Grub PVH, UEFI PV), all of this is normal.

I've attached:

xenboot.log which is the serial log of xen+linux booting in UEFI PVH
(kernel is debian's config, but patched to start at 2MiB)
dmesg.txt which is the linux dmesg that contains some nice stack traces
(kernel is debian's config, but patched to start at 2MiB)
efipvh-tables.dump is ALL acpi tables from UEFI+PVH mode (acpidump -o
efipvh-tables.dump)
working-tables.dump is ALL acpi tables from the other modes (acpidump -o
working-tables.dump)
efipvh-vfct.dump is attached in spirit, as it is 0 bytes long (acpidump -n
VFCT -o efipvh-vfct.dump)

I ran iasl, but it just said **** Unknown ACPI table signature [VFCT] and
spat out the raw data table, nothing interesting

Something I can try, but have been nervous to try due to GOPupd warnings is
to also flash the 1.67 GOP to the VBIOS on the RX 480. The R5 430 OEM had
no such warnings.

Patrick

--0000000000006f57ee060f47a71e
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><div class=3D"gmail_quote"><div dir=3D"ltr" class=3D"gmail=
_attr">On Thu, Jan 18, 2024 at 7:41=E2=80=AFAM Roger Pau Monn=C3=A9 &lt;<a =
href=3D"mailto:roger.pau@citrix.com">roger.pau@citrix.com</a>&gt; wrote:<br=
></div><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;=
border-left:1px solid rgb(204,204,204);padding-left:1ex"><br>
>From that environment (PVH dom0) can you see if you can dump the<br>
contents of the VFCT table?=C2=A0 I don&#39;t have a system with that table=
, so<br>
not sure if this will work (because iasl is unlikely to know how to<br>
decode it):<br>
<br>
# acpidump -n VFCT -o table.dump<br>
# acpixtract -a table.dump<br>
#=C2=A0iasl -d vfct.dat<br>
#=C2=A0cat vfct.dsl<br>
<br>
Would be good if you can compare the output from what you get on a PV<br>
dom0 or when running native Linux.<br>
<br>
I&#39;m also adding some AMD folks, as IIRC they did some fixes to Linux<br=
>
in order to get some AMD graphics cards running on a PVH dom0, maybe<br>
they can provide some additional input.<br>
<br></blockquote><div><br></div><div><div dir=3D"ltr">Well, this is pretty =
weird. I&#39;ll go into more details because it may be relevant. I had been=
 working with ASRock support ever since I got my brand new motherboard beca=
use I couldn&#39;t see the BIOS/UEFI screens. I could boot up, and once nat=
ive linux took control amdgpu got the screens/gpu working fine. I finally m=
anaged to be able to see the UEFI/BIOS setup screens by patching my VBIOS: =
I extracted the VBIOS image of a cheap R5 430 OEM, ran GOPupd to update the=
 VBIOS UEFI component (GOP) from version 1.60 to 1.67. That allowed the UEF=
I to actually initialize and use a screen. However, I later realized that o=
nly 1 monitor was lighting up in the bios: my monitor plugged into the Rade=
on RX 480 that was still on VBIOS GOP 1.60. It appears the GOP was initiali=
zing the RX 480 too, despite not being flashed with the latest itself. I am=
 working on an email to asrock support about that. Once I get into linux (n=
ative or PV), both monitors light up as expected. Also, If I boot linux PVH=
 from grub, they also work. Those usage scenarios have acpidump output as i=
dentical. Booting linux PVH directly from UEFI (no grub), the monitors go t=
o sleep on the RX 480, and amdgpu errors out about VFCT, but the R5 430 OEM=
 does still have output. Interestingly, there is a different screen mode bo=
oting UEFI+PVH, the characters are basically squares, with more vertical li=
nes than &quot;default&quot;, maybe close to native screen resolution, but =
horizontally it&#39;s still &quot;default&quot;. Booting from grub gives ev=
erything in the &quot;default&quot; resolution.<br><br>So what is in the VF=
CT Table? VFCT contains the non-GOP VIOS image of my Radeon RX 480 GPU. You=
 can compare it to the VBIOS hosted at <a href=3D"https://www.techpowerup.c=
om/vgabios/185789/msi-rx480-4096-160720">https://www.techpowerup.com/vgabio=
s/185789/msi-rx480-4096-160720</a> (Compare the end at E667 in the VFCT tab=
le to E5ff in that vbios link). I find this extra suspicious due to the abo=
ve. <br><br>Now for the extra horrible things:<br><br>UEFI-booted PVH Linux=
 doesn&#39;t support keyboard getty input, and at least some of the USB dev=
ices are not in lsusb. It also decided to vanish one of my HDD&#39;s. The `=
reboot` command hangs. The Power button doesn&#39;t do anything. There are =
several stack traces in dmesg. But Alt-SysRq-B does reboot! Luckily I could=
 ssh in and capture the ACPI tables. They are much smaller, and VFCT is emp=
ty.=C2=A0 Booting back to one of the working scenarios (direct linux, Grub =
PV, Grub PVH, UEFI PV), all of this is normal.<br><br>I&#39;ve attached:<br=
><br>xenboot.log which is the serial log of xen+linux booting in UEFI PVH (=
kernel is debian&#39;s config, but patched to start at 2MiB)<br>dmesg.txt w=
hich is the linux dmesg that contains some nice stack traces (kernel is deb=
ian&#39;s config, but patched to start at 2MiB)<br>efipvh-tables.dump is AL=
L acpi tables from UEFI+PVH mode (acpidump -o efipvh-tables.dump)<br>workin=
g-tables.dump is ALL acpi tables from the other modes (acpidump -o working-=
tables.dump)<br>efipvh-vfct.dump is attached in spirit, as it is 0 bytes lo=
ng (acpidump -n VFCT -o efipvh-vfct.dump)<br><br>I ran iasl, but it just sa=
id **** Unknown ACPI table signature [VFCT] and spat out the raw data table=
, nothing interesting</div><div dir=3D"ltr"><br></div><div>Something I can =
try, but have been nervous to try due to GOPupd warnings is to also flash t=
he 1.67 GOP to the VBIOS on the RX 480. The R5 430 OEM had no such warnings=
.</div><div><br></div><div>Patrick<br></div>=C2=A0</div></div></div>

--0000000000006f57ee060f47a71e--
--0000000000006f57f0060f47a720
Content-Type: text/plain; charset="US-ASCII"; name="dmesg.txt"
Content-Disposition: attachment; filename="dmesg.txt"
Content-Transfer-Encoding: base64
Content-ID: <f_lrkc3l9j0>
X-Attachment-Id: f_lrkc3l9j0

WyAgICAwLjAwMDAwMF0gTGludXggdmVyc2lvbiA2LjEuNjkgKHJvb3RAcG9sbHV4KSAoZ2NjIChE
ZWJpYW4gMTIuMi4wLTE0KSAxMi4yLjAsIEdOVSBsZCAoR05VIEJpbnV0aWxzIGZvciBEZWJpYW4p
IDIuNDApICMxMCBTTVAgUFJFRU1QVF9EWU5BTUlDIFdlZCBKYW4gMTcgMjM6NDQ6MzEgRVNUIDIw
MjQKWyAgICAwLjAwMDAwMF0gQ29tbWFuZCBsaW5lOiByb290PVVVSUQ9OTIyYjEwZjItYTgyNi00
N2ZiLWFiMzgtODM2ZjliMzk3ZmY3IHJvIHJvb3RmbGFncz1zdWJ2b2w9QHJvb3RmcyAgZWFybHlw
cmludGs9eGVuIGNvbnNvbGU9aHZjMApbICAgIDAuMDAwMDAwXSBbRmlybXdhcmUgQnVnXTogVFND
IGRvZXNuJ3QgY291bnQgd2l0aCBQMCBmcmVxdWVuY3khClsgICAgMC4wMDAwMDBdIEJJT1MtcHJv
dmlkZWQgcGh5c2ljYWwgUkFNIG1hcDoKWyAgICAwLjAwMDAwMF0gQklPUy1lODIwOiBbbWVtIDB4
MDAwMDAwMDAwMDAwMDAwMC0weDAwMDAwMDAwMDAwOWZmZmZdIHVzYWJsZQpbICAgIDAuMDAwMDAw
XSBCSU9TLWU4MjA6IFttZW0gMHgwMDAwMDAwMDAwMGEwMDAwLTB4MDAwMDAwMDAwMDBmZmZmZl0g
cmVzZXJ2ZWQKWyAgICAwLjAwMDAwMF0gQklPUy1lODIwOiBbbWVtIDB4MDAwMDAwMDAwMDEwMDAw
MC0weDAwMDAwMDAwMDNmZmZmZmZdIHVzYWJsZQpbICAgIDAuMDAwMDAwXSBCSU9TLWU4MjA6IFtt
ZW0gMHgwMDAwMDAwMDA0MDAwMDAwLTB4MDAwMDAwMDAwNDA0NWZmZl0gQUNQSSBOVlMKWyAgICAw
LjAwMDAwMF0gQklPUy1lODIwOiBbbWVtIDB4MDAwMDAwMDAwNDA0NjAwMC0weDAwMDAwMDAwMDlh
ZmVmZmZdIHVzYWJsZQpbICAgIDAuMDAwMDAwXSBCSU9TLWU4MjA6IFttZW0gMHgwMDAwMDAwMDA5
YWZmMDAwLTB4MDAwMDAwMDAwOWZmZmZmZl0gcmVzZXJ2ZWQKWyAgICAwLjAwMDAwMF0gQklPUy1l
ODIwOiBbbWVtIDB4MDAwMDAwMDAwYTAwMDAwMC0weDAwMDAwMDAwMGFmZmZmZmZdIHVzYWJsZQpb
ICAgIDAuMDAwMDAwXSBCSU9TLWU4MjA6IFttZW0gMHgwMDAwMDAwMDBiMDAwMDAwLTB4MDAwMDAw
MDAwYjAyMGZmZl0gcmVzZXJ2ZWQKWyAgICAwLjAwMDAwMF0gQklPUy1lODIwOiBbbWVtIDB4MDAw
MDAwMDAwYjAyMTAwMC0weDAwMDAwMDAwYTA0ZThmZmZdIHVzYWJsZQpbICAgIDAuMDAwMDAwXSBC
SU9TLWU4MjA6IFttZW0gMHgwMDAwMDAwMGEwNGU5MDAwLTB4MDAwMDAwMDBhNjRlOGZmZl0gcmVz
ZXJ2ZWQKWyAgICAwLjAwMDAwMF0gQklPUy1lODIwOiBbbWVtIDB4MDAwMDAwMDBhNjRlOTAwMC0w
eDAwMDAwMDAwYTc0N2VmZmZdIEFDUEkgZGF0YQpbICAgIDAuMDAwMDAwXSBCSU9TLWU4MjA6IFtt
ZW0gMHgwMDAwMDAwMGE3NDdmMDAwLTB4MDAwMDAwMDBhOTQ3ZWZmZl0gQUNQSSBOVlMKWyAgICAw
LjAwMDAwMF0gQklPUy1lODIwOiBbbWVtIDB4MDAwMDAwMDBhOTQ3ZjAwMC0weDAwMDAwMDAwYWRk
ZmVmZmZdIHJlc2VydmVkClsgICAgMC4wMDAwMDBdIEJJT1MtZTgyMDogW21lbSAweDAwMDAwMDAw
YWRkZmYwMDAtMHgwMDAwMDAwMGFmZmZhYjliXSB1c2FibGUKWyAgICAwLjAwMDAwMF0gQklPUy1l
ODIwOiBbbWVtIDB4MDAwMDAwMDBhZmZmYWI5Yy0weDAwMDAwMDAwYWZmZmFmMTddIEFDUEkgZGF0
YQpbICAgIDAuMDAwMDAwXSBCSU9TLWU4MjA6IFttZW0gMHgwMDAwMDAwMGFmZmZiMDAwLTB4MDAw
MDAwMDBiZmZmZmZmZl0gcmVzZXJ2ZWQKWyAgICAwLjAwMDAwMF0gQklPUy1lODIwOiBbbWVtIDB4
MDAwMDAwMDBkZjIwMDAwMC0weDAwMDAwMDAwZGYyZmZmZmZdIHJlc2VydmVkClsgICAgMC4wMDAw
MDBdIEJJT1MtZTgyMDogW21lbSAweDAwMDAwMDAwZTAwMDAwMDAtMHgwMDAwMDAwMGVmZmZmZmZm
XSByZXNlcnZlZApbICAgIDAuMDAwMDAwXSBCSU9TLWU4MjA6IFttZW0gMHgwMDAwMDAwMGZlYTAw
MDAwLTB4MDAwMDAwMDBmZWFmZmZmZl0gcmVzZXJ2ZWQKWyAgICAwLjAwMDAwMF0gQklPUy1lODIw
OiBbbWVtIDB4MDAwMDAwMDBmZWMwMDAwMC0weDAwMDAwMDAwZmVjMDBmZmZdIHJlc2VydmVkClsg
ICAgMC4wMDAwMDBdIEJJT1MtZTgyMDogW21lbSAweDAwMDAwMDAwZmVjMTAwMDAtMHgwMDAwMDAw
MGZlYzEwZmZmXSByZXNlcnZlZApbICAgIDAuMDAwMDAwXSBCSU9TLWU4MjA6IFttZW0gMHgwMDAw
MDAwMGZlYzMwMDAwLTB4MDAwMDAwMDBmZWMzMGZmZl0gcmVzZXJ2ZWQKWyAgICAwLjAwMDAwMF0g
QklPUy1lODIwOiBbbWVtIDB4MDAwMDAwMDBmZWQwMDAwMC0weDAwMDAwMDAwZmVkMDBmZmZdIHJl
c2VydmVkClsgICAgMC4wMDAwMDBdIEJJT1MtZTgyMDogW21lbSAweDAwMDAwMDAwZmVkNDAwMDAt
MHgwMDAwMDAwMGZlZDQ0ZmZmXSByZXNlcnZlZApbICAgIDAuMDAwMDAwXSBCSU9TLWU4MjA6IFtt
ZW0gMHgwMDAwMDAwMGZlZDgwMDAwLTB4MDAwMDAwMDBmZWQ4ZmZmZl0gcmVzZXJ2ZWQKWyAgICAw
LjAwMDAwMF0gQklPUy1lODIwOiBbbWVtIDB4MDAwMDAwMDBmZjAwMDAwMC0weDAwMDAwMDAwZmZm
ZmZmZmZdIHJlc2VydmVkClsgICAgMC4wMDAwMDBdIEJJT1MtZTgyMDogW21lbSAweDAwMDAwMDAx
MDAwMDAwMDAtMHgwMDAwMDAwMjVkZWUyZmZmXSB1c2FibGUKWyAgICAwLjAwMDAwMF0gQklPUy1l
ODIwOiBbbWVtIDB4MDAwMDAwMDI1ZGVlMzAwMC0weDAwMDAwMDQwM2RiYmZmZmZdIHVudXNhYmxl
ClsgICAgMC4wMDAwMDBdIEJJT1MtZTgyMDogW21lbSAweDAwMDAwMDQwM2RiYzAwMDAtMHgwMDAw
MDA0MDNmZmZmZmZmXSByZXNlcnZlZApbICAgIDAuMDAwMDAwXSBwcmludGs6IGJvb3Rjb25zb2xl
IFt4ZW5ib290MF0gZW5hYmxlZApbICAgIDAuMDAwMDAwXSBOWCAoRXhlY3V0ZSBEaXNhYmxlKSBw
cm90ZWN0aW9uOiBhY3RpdmUKWyAgICAwLjAwMDAwMF0gZWZpOiBFRkkgdjIuOTAgYnkgQW1lcmlj
YW4gTWVnYXRyZW5kcwpbICAgIDAuMDAwMDAwXSBlZmk6IEFDUEk9MHhhOTQ2MzAwMCBBQ1BJIDIu
MD0weGE5NDYzMDE0IFNNQklPUz0weGFkOWY0MDAwIFNNQklPUyAzLjA9MHhhZDlmMzAwMCBNRU1B
VFRSPTB4OTllMjY2OTggRVNSVD0weGE3NDY2MDE4IApbICAgIDAuMDAwMDAwXSBzZWN1cmVib290
OiBTZWN1cmUgYm9vdCBkaXNhYmxlZApbICAgIDAuMDAwMDAwXSBTTUJJT1MgMy42LjAgcHJlc2Vu
dC4KWyAgICAwLjAwMDAwMF0gRE1JOiBUbyBCZSBGaWxsZWQgQnkgTy5FLk0uIFRSWDUwIFdTL1RS
WDUwIFdTLCBCSU9TIDcuMDggMDEvMTYvMjAyNApbICAgIDAuMDAwMDAwXSBIeXBlcnZpc29yIGRl
dGVjdGVkOiBYZW4gSFZNClsgICAgMC4wMDAwMDBdIFhlbiB2ZXJzaW9uIDQuMTcuClsgICAgMC4w
MDAwMDNdIEhWTU9QX3BhZ2V0YWJsZV9keWluZyBub3Qgc3VwcG9ydGVkClsgICAgMC4wNDM5MTZd
IHRzYzogRmFzdCBUU0MgY2FsaWJyYXRpb24gZmFpbGVkClsgICAgMC4wNDg4NDNdIHRzYzogRGV0
ZWN0ZWQgNDE5OS45NjAgTUh6IHByb2Nlc3NvcgpbICAgIDAuMDU0MzY1XSBlODIwOiB1cGRhdGUg
W21lbSAweDAwMDAwMDAwLTB4MDAwMDBmZmZdIHVzYWJsZSA9PT4gcmVzZXJ2ZWQKWyAgICAwLjA1
NDM2OF0gZTgyMDogcmVtb3ZlIFttZW0gMHgwMDBhMDAwMC0weDAwMGZmZmZmXSB1c2FibGUKWyAg
ICAwLjA1NDM3NV0gbGFzdF9wZm4gPSAweDI1ZGVlMyBtYXhfYXJjaF9wZm4gPSAweDQwMDAwMDAw
MApbICAgIDAuMDYyMDMzXSB4ODYvUEFUOiBDb25maWd1cmF0aW9uIFswLTddOiBXQiAgV0MgIFVD
LSBVQyAgV0IgIFdQICBVQy0gV1QgIApbICAgIDAuMDcwNDE3XSBDUFUgTVRSUnMgYWxsIGJsYW5r
IC0gdmlydHVhbGl6ZWQgc3lzdGVtLgpbICAgIDAuMDc2MjA5XSBsYXN0X3BmbiA9IDB4YWZmZmEg
bWF4X2FyY2hfcGZuID0gMHg0MDAwMDAwMDAKWyAgICAwLjA4NTU5NF0gVXNpbmcgR0IgcGFnZXMg
Zm9yIGRpcmVjdCBtYXBwaW5nClsgICAgMC4wOTExODRdIFJBTURJU0s6IFttZW0gMHgwNDA0NjAw
MC0weDA2OGNkZmZmXQpbICAgIDAuMDk2NTMzXSBBQ1BJOiBFYXJseSB0YWJsZSBjaGVja3N1bSB2
ZXJpZmljYXRpb24gZGlzYWJsZWQKWyAgICAwLjEwMzI0OF0gQUNQSTogUlNEUCAweDAwMDAwMDAw
QUZGRkFCOUMgMDAwMDI0ICh2MDIgQU1EICAgKQpbICAgIDAuMTA5NzE2XSBBQ1BJOiBYU0RUIDB4
MDAwMDAwMDBBRkZGQUJDMCAwMDAwQzQgKHYwMSBBTUQgICAgQSBNIEkgICAgMDAwMDAwMDEgQU1J
ICAwMTAwMDAxMykKWyAgICAwLjExOTY2M10gQUNQSTogQVBJQyAweDAwMDAwMDAwQUZGRkFDODQg
MDAwMzdDICh2MDQgQU1EICAgIEEgTSBJICAgIDAwMDAwMDAxIEFNSSAgMDAwMTAwMTMpClsgICAg
MC4xMjk1MzhdIEFDUEk6IEZBQ1AgMHgwMDAwMDAwMEE3NDdDMDAwIDAwMDExNCAodjA2IEFNRCAg
ICBBIE0gSSAgICAwMDAwMDAwMSBBTUkgIDAwMDEwMDEzKQpbICAgIDAuMTM5MjUwXSBBQ1BJOiBE
U0RUIDB4MDAwMDAwMDBBNzQ2RTAwMCAwMEQyRjYgKHYwMiBBTUQgICAgQSBNIEkgICAgMDAwMDAw
MDEgSU5UTCAyMDIzMDMzMSkKWyAgICAwLjE0ODcxN10gQUNQSTogRkFDUyAweDAwMDAwMDAwQTk0
NUEwMDAgMDAwMDQwClsgICAgMC4xNTM4MDVdIEFDUEk6IFNTRFQgMHgwMDAwMDAwMEE3NDdFMDAw
IDAwMDlDQyAodjAyIEFNRCAgICBCT1VMREVSRyAwMDAwMDAwMiBNU0ZUIDA0MDAwMDAwKQpbICAg
IDAuMTYzMzA5XSBBQ1BJOiBTU0RUIDB4MDAwMDAwMDBBNzQ3RDAwMCAwMDAwNjcgKHYwMiBBTUQg
ICAgQ1BNRFNNICAgMDAwMDAwMDEgSU5UTCAyMDIzMDMzMSkKWyAgICAwLjE3MjgxM10gQUNQSTog
TUNGRyAweDAwMDAwMDAwQTc0NkMwMDAgMDAwMDNDICh2MDEgQU1EICAgIEEgTSBJICAgIDAwMDAw
MDAxIE1TRlQgMDAwMTAwMTMpClsgICAgMC4xODIzNTFdIEFDUEk6IFNTRFQgMHgwMDAwMDAwMEE3
NDZCMDAwIDAwMDVDNSAodjAyIEFNRCAgICBDUFVTU0RUICAwMDAwMDAwMSBBTUkgIDAwMDAwMDAx
KQpbICAgIDAuMTkxODA2XSBBQ1BJOiBTU0RUIDB4MDAwMDAwMDBBNzQ2ODAwMCAwMDFCNTMgKHYw
MiBBTUQgICAgQ1BNUkFTICAgMDAwMDAwMDEgSU5UTCAyMDIzMDMzMSkKWyAgICAwLjIwMTMwOF0g
QUNQSTogRlBEVCAweDAwMDAwMDAwQTc0NjUwMDAgMDAwMDQ0ICh2MDEgQU1EICAgIEEgTSBJICAg
IDAxMDcyMDA5IEFNSSAgMDEwMDAwMTMpClsgICAgMC4yMTA4MTldIEFDUEk6IFNTRFQgMHgwMDAw
MDAwMEE3NDYyMDAwIDAwMjQ0OCAodjAyIEFNRCAgICBHUFBfUE1FXyAwMDAwMDAwMSBJTlRMIDIw
MjMwMzMxKQpbICAgIDAuMjIwMzQzXSBBQ1BJOiBTU0RUIDB4MDAwMDAwMDBBNzQ1RjAwMCAwMDI0
NDggKHYwMiBBTUQgICAgR1BQX1BNRV8gMDAwMDAwMDEgSU5UTCAyMDIzMDMzMSkKWyAgICAwLjIy
OTg4NF0gQUNQSTogU1NEVCAweDAwMDAwMDAwQTc0NUMwMDAgMDAyNDQ4ICh2MDIgQU1EICAgIEdQ
UF9QTUVfIDAwMDAwMDAxIElOVEwgMjAyMzAzMzEpClsgICAgMC4yMzkzNTFdIEFDUEk6IFNTRFQg
MHgwMDAwMDAwMEE3NDU5MDAwIDAwMjQ0OCAodjAyIEFNRCAgICBHUFBfUE1FXyAwMDAwMDAwMSBJ
TlRMIDIwMjMwMzMxKQpbICAgIDAuMjQ4NzgwXSBBQ1BJOiBTU0RUIDB4MDAwMDAwMDBBNzQzRTAw
MCAwMEE0MEUgKHYwMiBBTUQgICAgQU1EIENQVSAgMDAwMDAwMDEgQU1EICAwMDAwMDAwMSkKWyAg
ICAwLjI1ODI4OF0gQUNQSTogU1NEVCAweDAwMDAwMDAwQTY4NEMwMDAgMDAwNkQ0ICh2MDIgQU1E
ICAgIENQTVdMUkMgIDAwMDAwMDAxIElOVEwgMjAyMzAzMzEpClsgICAgMC4yNjc4MTVdIEFDUEk6
IFNTRFQgMHgwMDAwMDAwMEE2ODQyMDAwIDAwOTgyRiAodjAyIEFNRCAgICBDUE1DTU4gICAwMDAw
MDAwMSBJTlRMIDIwMjMwMzMxKQpbICAgIDAuMjc3MzM5XSBBQ1BJOiBTU0RUIDB4MDAwMDAwMDBB
NjgzQzAwMCAwMDIzODcgKHYwMiBBTUQgICAgQU9EICAgICAgMDAwMDAwMDEgSU5UTCAyMDIzMDMz
MSkKWyAgICAwLjI4Njg0MF0gQUNQSTogU1NEVCAweDAwMDAwMDAwQTY4M0IwMDAgMDAwNTAwICh2
MDIgQU1EICAgIE1FTVRPT0wwIDAwMDAwMDAyIElOVEwgMjAyMzAzMzEpClsgICAgMC4yOTYyODNd
IEFDUEk6IFNTRFQgMHgwMDAwMDAwMEE2ODNBMDAwIDAwMDk2QSAodjAyIEFNRCAgICBDUE1NU09T
QyAwMDAwMDAwMSBJTlRMIDIwMjMwMzMxKQpbICAgIDAuMzA1ODQxXSBBQ1BJOiBTU0RUIDB4MDAw
MDAwMDBBNjgzOTAwMCAwMDBCNzIgKHYwMiBBTUQgICAgQ1BNQUNQVjYgMDAwMDAwMDEgSU5UTCAy
MDIzMDMzMSkKWyAgICAwLjMxNTI4OF0gQUNQSTogU1NEVCAweDAwMDAwMDAwQTY4MzgwMDAgMDAw
NDRFICh2MDIgQU1EICAgIEFtZFRhYmxlIDAwMDAwMDAxIElOVEwgMjAyMzAzMzEpClsgICAgMC4z
MjQ4MDJdIEFDUEk6IFJlc2VydmluZyBBUElDIHRhYmxlIG1lbW9yeSBhdCBbbWVtIDB4YWZmZmFj
ODQtMHhhZmZmYWZmZl0KWyAgICAwLjMzMjU5Ml0gQUNQSTogUmVzZXJ2aW5nIEZBQ1AgdGFibGUg
bWVtb3J5IGF0IFttZW0gMHhhNzQ3YzAwMC0weGE3NDdjMTEzXQpbICAgIDAuMzQwNDE5XSBBQ1BJ
OiBSZXNlcnZpbmcgRFNEVCB0YWJsZSBtZW1vcnkgYXQgW21lbSAweGE3NDZlMDAwLTB4YTc0N2Iy
ZjVdClsgICAgMC4zNDgxODldIEFDUEk6IFJlc2VydmluZyBGQUNTIHRhYmxlIG1lbW9yeSBhdCBb
bWVtIDB4YTk0NWEwMDAtMHhhOTQ1YTAzZl0KWyAgICAwLjM1NjA1OF0gQUNQSTogUmVzZXJ2aW5n
IFNTRFQgdGFibGUgbWVtb3J5IGF0IFttZW0gMHhhNzQ3ZTAwMC0weGE3NDdlOWNiXQpbICAgIDAu
MzYzOTA2XSBBQ1BJOiBSZXNlcnZpbmcgU1NEVCB0YWJsZSBtZW1vcnkgYXQgW21lbSAweGE3NDdk
MDAwLTB4YTc0N2QwNjZdClsgICAgMC4zNzE3NTddIEFDUEk6IFJlc2VydmluZyBNQ0ZHIHRhYmxl
IG1lbW9yeSBhdCBbbWVtIDB4YTc0NmMwMDAtMHhhNzQ2YzAzYl0KWyAgICAwLjM3OTU3Nl0gQUNQ
STogUmVzZXJ2aW5nIFNTRFQgdGFibGUgbWVtb3J5IGF0IFttZW0gMHhhNzQ2YjAwMC0weGE3NDZi
NWM0XQpbICAgIDAuMzg3NDM3XSBBQ1BJOiBSZXNlcnZpbmcgU1NEVCB0YWJsZSBtZW1vcnkgYXQg
W21lbSAweGE3NDY4MDAwLTB4YTc0NjliNTJdClsgICAgMC4zOTUzMzddIEFDUEk6IFJlc2Vydmlu
ZyBGUERUIHRhYmxlIG1lbW9yeSBhdCBbbWVtIDB4YTc0NjUwMDAtMHhhNzQ2NTA0M10KWyAgICAw
LjQwMzE1M10gQUNQSTogUmVzZXJ2aW5nIFNTRFQgdGFibGUgbWVtb3J5IGF0IFttZW0gMHhhNzQ2
MjAwMC0weGE3NDY0NDQ3XQpbICAgIDAuNDEwOTg5XSBBQ1BJOiBSZXNlcnZpbmcgU1NEVCB0YWJs
ZSBtZW1vcnkgYXQgW21lbSAweGE3NDVmMDAwLTB4YTc0NjE0NDddClsgICAgMC40MTg4MDJdIEFD
UEk6IFJlc2VydmluZyBTU0RUIHRhYmxlIG1lbW9yeSBhdCBbbWVtIDB4YTc0NWMwMDAtMHhhNzQ1
ZTQ0N10KWyAgICAwLjQyNjY0Ml0gQUNQSTogUmVzZXJ2aW5nIFNTRFQgdGFibGUgbWVtb3J5IGF0
IFttZW0gMHhhNzQ1OTAwMC0weGE3NDViNDQ3XQpbICAgIDAuNDM0NTI5XSBBQ1BJOiBSZXNlcnZp
bmcgU1NEVCB0YWJsZSBtZW1vcnkgYXQgW21lbSAweGE3NDNlMDAwLTB4YTc0NDg0MGRdClsgICAg
MC40NDIzOTNdIEFDUEk6IFJlc2VydmluZyBTU0RUIHRhYmxlIG1lbW9yeSBhdCBbbWVtIDB4YTY4
NGMwMDAtMHhhNjg0YzZkM10KWyAgICAwLjQ1MDIwM10gQUNQSTogUmVzZXJ2aW5nIFNTRFQgdGFi
bGUgbWVtb3J5IGF0IFttZW0gMHhhNjg0MjAwMC0weGE2ODRiODJlXQpbICAgIDAuNDU4MDM4XSBB
Q1BJOiBSZXNlcnZpbmcgU1NEVCB0YWJsZSBtZW1vcnkgYXQgW21lbSAweGE2ODNjMDAwLTB4YTY4
M2UzODZdClsgICAgMC40NjU4NTNdIEFDUEk6IFJlc2VydmluZyBTU0RUIHRhYmxlIG1lbW9yeSBh
dCBbbWVtIDB4YTY4M2IwMDAtMHhhNjgzYjRmZl0KWyAgICAwLjQ3MzgwNV0gQUNQSTogUmVzZXJ2
aW5nIFNTRFQgdGFibGUgbWVtb3J5IGF0IFttZW0gMHhhNjgzYTAwMC0weGE2ODNhOTY5XQpbICAg
IDAuNDgxNjI2XSBBQ1BJOiBSZXNlcnZpbmcgU1NEVCB0YWJsZSBtZW1vcnkgYXQgW21lbSAweGE2
ODM5MDAwLTB4YTY4MzliNzFdClsgICAgMC40ODk0NzVdIEFDUEk6IFJlc2VydmluZyBTU0RUIHRh
YmxlIG1lbW9yeSBhdCBbbWVtIDB4YTY4MzgwMDAtMHhhNjgzODQ0ZF0KWyAgICAwLjQ5NzQxNl0g
Tm8gTlVNQSBjb25maWd1cmF0aW9uIGZvdW5kClsgICAgMC41MDE2MjNdIEZha2luZyBhIG5vZGUg
YXQgW21lbSAweDAwMDAwMDAwMDAwMDAwMDAtMHgwMDAwMDAwMjVkZWUyZmZmXQpbICAgIDAuNTA5
MDYwXSBOT0RFX0RBVEEoMCkgYWxsb2NhdGVkIFttZW0gMHgyNWRlYjgwMDAtMHgyNWRlZTJmZmZd
ClsgICAgMC41MTU4NzVdIFpvbmUgcmFuZ2VzOgpbICAgIDAuNTE4Njc0XSAgIERNQSAgICAgIFtt
ZW0gMHgwMDAwMDAwMDAwMDAxMDAwLTB4MDAwMDAwMDAwMGZmZmZmZl0KWyAgICAwLjUyNTgxN10g
ICBETUEzMiAgICBbbWVtIDB4MDAwMDAwMDAwMTAwMDAwMC0weDAwMDAwMDAwZmZmZmZmZmZdClsg
ICAgMC41MzMwMDJdICAgTm9ybWFsICAgW21lbSAweDAwMDAwMDAxMDAwMDAwMDAtMHgwMDAwMDAw
MjVkZWUyZmZmXQpbICAgIDAuNTQwMDYyXSAgIERldmljZSAgIGVtcHR5ClsgICAgMC41NDMzMzZd
IE1vdmFibGUgem9uZSBzdGFydCBmb3IgZWFjaCBub2RlClsgICAgMC41NDgzMjJdIEVhcmx5IG1l
bW9yeSBub2RlIHJhbmdlcwpbICAgIDAuNTUyNTUyXSAgIG5vZGUgICAwOiBbbWVtIDB4MDAwMDAw
MDAwMDAwMTAwMC0weDAwMDAwMDAwMDAwOWZmZmZdClsgICAgMC41NTk5NDJdICAgbm9kZSAgIDA6
IFttZW0gMHgwMDAwMDAwMDAwMTAwMDAwLTB4MDAwMDAwMDAwM2ZmZmZmZl0KWyAgICAwLjU2NzE4
MF0gICBub2RlICAgMDogW21lbSAweDAwMDAwMDAwMDQwNDYwMDAtMHgwMDAwMDAwMDA5YWZlZmZm
XQpbICAgIDAuNTc0MjA1XSAgIG5vZGUgICAwOiBbbWVtIDB4MDAwMDAwMDAwYTAwMDAwMC0weDAw
MDAwMDAwMGFmZmZmZmZdClsgICAgMC41ODE1ODBdICAgbm9kZSAgIDA6IFttZW0gMHgwMDAwMDAw
MDBiMDIxMDAwLTB4MDAwMDAwMDBhMDRlOGZmZl0KWyAgICAwLjU4ODkwNV0gICBub2RlICAgMDog
W21lbSAweDAwMDAwMDAwYWRkZmYwMDAtMHgwMDAwMDAwMGFmZmY5ZmZmXQpbICAgIDAuNTk2MjQ3
XSAgIG5vZGUgICAwOiBbbWVtIDB4MDAwMDAwMDEwMDAwMDAwMC0weDAwMDAwMDAyNWRlZTJmZmZd
ClsgICAgMC42MDM1ODldIEluaXRtZW0gc2V0dXAgbm9kZSAwIFttZW0gMHgwMDAwMDAwMDAwMDAx
MDAwLTB4MDAwMDAwMDI1ZGVlMmZmZl0KWyAgICAwLjYxMTY4N10gT24gbm9kZSAwLCB6b25lIERN
QTogMSBwYWdlcyBpbiB1bmF2YWlsYWJsZSByYW5nZXMKWyAgICAwLjYxMTcwNF0gT24gbm9kZSAw
LCB6b25lIERNQTogOTYgcGFnZXMgaW4gdW5hdmFpbGFibGUgcmFuZ2VzClsgICAgMC42MTg2NzJd
IE9uIG5vZGUgMCwgem9uZSBETUEzMjogNzAgcGFnZXMgaW4gdW5hdmFpbGFibGUgcmFuZ2VzClsg
ICAgMC42MjU0ODldIE9uIG5vZGUgMCwgem9uZSBETUEzMjogMTI4MSBwYWdlcyBpbiB1bmF2YWls
YWJsZSByYW5nZXMKWyAgICAwLjYzNTAyM10gT24gbm9kZSAwLCB6b25lIERNQTMyOiAzMyBwYWdl
cyBpbiB1bmF2YWlsYWJsZSByYW5nZXMKWyAgICAwLjY0MjQ3NF0gT24gbm9kZSAwLCB6b25lIERN
QTMyOiA1NTU3NCBwYWdlcyBpbiB1bmF2YWlsYWJsZSByYW5nZXMKWyAgICAwLjY0OTQ1OV0gT24g
bm9kZSAwLCB6b25lIE5vcm1hbDogNiBwYWdlcyBpbiB1bmF2YWlsYWJsZSByYW5nZXMKWyAgICAw
LjY1Njg1N10gT24gbm9kZSAwLCB6b25lIE5vcm1hbDogODQ3NyBwYWdlcyBpbiB1bmF2YWlsYWJs
ZSByYW5nZXMKWyAgICAwLjY2NDUzNl0gQUNQSTogUE0tVGltZXIgSU8gUG9ydDogMHg4MDgKWyAg
ICAwLjY3NjMxOV0gSU9BUElDWzBdOiBhcGljX2lkIDEyOCwgdmVyc2lvbiAxNywgYWRkcmVzcyAw
eGZlYzAwMDAwLCBHU0kgMC0yMwpbICAgIDAuNjg0NjA0XSBJT0FQSUNbMV06IGFwaWNfaWQgMTI5
LCB2ZXJzaW9uIDE3LCBhZGRyZXNzIDB4ZGYxODAwMDAsIEdTSSAxMjAtMTUxClsgICAgMC42OTI3
OTddIElPQVBJQ1syXTogYXBpY19pZCAxMzAsIHZlcnNpb24gMTcsIGFkZHJlc3MgMHhkMzE4MDAw
MCwgR1NJIDg4LTExOQpbICAgIDAuNzAxMjk3XSBJT0FQSUNbM106IGFwaWNfaWQgMTMxLCB2ZXJz
aW9uIDE3LCBhZGRyZXNzIDB4ZjcxODAwMDAsIEdTSSAyNC01NQpbICAgIDAuNzA5NDYwXSBJT0FQ
SUNbNF06IGFwaWNfaWQgMTMyLCB2ZXJzaW9uIDE3LCBhZGRyZXNzIDB4YzkxODAwMDAsIEdTSSA1
Ni04NwpbICAgIDAuNzE3NzY1XSBBQ1BJOiBJTlRfU1JDX09WUiAoYnVzIDAgYnVzX2lycSAwIGds
b2JhbF9pcnEgMiBkZmwgZGZsKQpbICAgIDAuNzI0OTIwXSBBQ1BJOiBJTlRfU1JDX09WUiAoYnVz
IDAgYnVzX2lycSA5IGdsb2JhbF9pcnEgOSBsb3cgbGV2ZWwpClsgICAgMC43MzI1NzldIEFDUEk6
IFVzaW5nIEFDUEkgKE1BRFQpIGZvciBTTVAgY29uZmlndXJhdGlvbiBpbmZvcm1hdGlvbgpbICAg
IDAuNzM5OTE4XSBzbXBib290OiBBbGxvd2luZyA0OCBDUFVzLCAwIGhvdHBsdWcgQ1BVcwpbICAg
IDAuNzQ1NjMzXSBQTTogaGliZXJuYXRpb246IFJlZ2lzdGVyZWQgbm9zYXZlIG1lbW9yeTogW21l
bSAweDAwMDAwMDAwLTB4MDAwMDBmZmZdClsgICAgMC43NTQ1MDRdIFBNOiBoaWJlcm5hdGlvbjog
UmVnaXN0ZXJlZCBub3NhdmUgbWVtb3J5OiBbbWVtIDB4MDAwYTAwMDAtMHgwMDBmZmZmZl0KWyAg
ICAwLjc2MzA3OV0gUE06IGhpYmVybmF0aW9uOiBSZWdpc3RlcmVkIG5vc2F2ZSBtZW1vcnk6IFtt
ZW0gMHgwNDAwMDAwMC0weDA0MDQ1ZmZmXQpbICAgIDAuNzcxNjkxXSBQTTogaGliZXJuYXRpb246
IFJlZ2lzdGVyZWQgbm9zYXZlIG1lbW9yeTogW21lbSAweDA5YWZmMDAwLTB4MDlmZmZmZmZdClsg
ICAgMC43ODAyNDVdIFBNOiBoaWJlcm5hdGlvbjogUmVnaXN0ZXJlZCBub3NhdmUgbWVtb3J5OiBb
bWVtIDB4MGIwMDAwMDAtMHgwYjAyMGZmZl0KWyAgICAwLjc4ODY0NF0gUE06IGhpYmVybmF0aW9u
OiBSZWdpc3RlcmVkIG5vc2F2ZSBtZW1vcnk6IFttZW0gMHhhMDRlOTAwMC0weGE2NGU4ZmZmXQpb
ICAgIDAuNzk3NjQ0XSBQTTogaGliZXJuYXRpb246IFJlZ2lzdGVyZWQgbm9zYXZlIG1lbW9yeTog
W21lbSAweGE2NGU5MDAwLTB4YTc0N2VmZmZdClsgICAgMC44MDY1ODNdIFBNOiBoaWJlcm5hdGlv
bjogUmVnaXN0ZXJlZCBub3NhdmUgbWVtb3J5OiBbbWVtIDB4YTc0N2YwMDAtMHhhOTQ3ZWZmZl0K
WyAgICAwLjgxNTQyOF0gUE06IGhpYmVybmF0aW9uOiBSZWdpc3RlcmVkIG5vc2F2ZSBtZW1vcnk6
IFttZW0gMHhhOTQ3ZjAwMC0weGFkZGZlZmZmXQpbICAgIDAuODI0MzM0XSBQTTogaGliZXJuYXRp
b246IFJlZ2lzdGVyZWQgbm9zYXZlIG1lbW9yeTogW21lbSAweGFmZmZhMDAwLTB4YWZmZmFmZmZd
ClsgICAgMC44MzMyOTBdIFBNOiBoaWJlcm5hdGlvbjogUmVnaXN0ZXJlZCBub3NhdmUgbWVtb3J5
OiBbbWVtIDB4YWZmZmEwMDAtMHhhZmZmYWZmZl0KWyAgICAwLjg0MjMwN10gUE06IGhpYmVybmF0
aW9uOiBSZWdpc3RlcmVkIG5vc2F2ZSBtZW1vcnk6IFttZW0gMHhhZmZmYjAwMC0weGJmZmZmZmZm
XQpbICAgIDAuODUxMzUxXSBQTTogaGliZXJuYXRpb246IFJlZ2lzdGVyZWQgbm9zYXZlIG1lbW9y
eTogW21lbSAweGMwMDAwMDAwLTB4ZGYxZmZmZmZdClsgICAgMC44NjAzNjBdIFBNOiBoaWJlcm5h
dGlvbjogUmVnaXN0ZXJlZCBub3NhdmUgbWVtb3J5OiBbbWVtIDB4ZGYyMDAwMDAtMHhkZjJmZmZm
Zl0KWyAgICAwLjg2OTM4Ml0gUE06IGhpYmVybmF0aW9uOiBSZWdpc3RlcmVkIG5vc2F2ZSBtZW1v
cnk6IFttZW0gMHhkZjMwMDAwMC0weGRmZmZmZmZmXQpbICAgIDAuODc4MDE5XSBQTTogaGliZXJu
YXRpb246IFJlZ2lzdGVyZWQgbm9zYXZlIG1lbW9yeTogW21lbSAweGUwMDAwMDAwLTB4ZWZmZmZm
ZmZdClsgICAgMC44ODY4MjVdIFBNOiBoaWJlcm5hdGlvbjogUmVnaXN0ZXJlZCBub3NhdmUgbWVt
b3J5OiBbbWVtIDB4ZjAwMDAwMDAtMHhmZTlmZmZmZl0KWyAgICAwLjg5NTc5MF0gUE06IGhpYmVy
bmF0aW9uOiBSZWdpc3RlcmVkIG5vc2F2ZSBtZW1vcnk6IFttZW0gMHhmZWEwMDAwMC0weGZlYWZm
ZmZmXQpbICAgIDAuOTA0NzMwXSBQTTogaGliZXJuYXRpb246IFJlZ2lzdGVyZWQgbm9zYXZlIG1l
bW9yeTogW21lbSAweGZlYjAwMDAwLTB4ZmViZmZmZmZdClsgICAgMC45MTMzODldIFBNOiBoaWJl
cm5hdGlvbjogUmVnaXN0ZXJlZCBub3NhdmUgbWVtb3J5OiBbbWVtIDB4ZmVjMDAwMDAtMHhmZWMw
MGZmZl0KWyAgICAwLjkyMjA1NF0gUE06IGhpYmVybmF0aW9uOiBSZWdpc3RlcmVkIG5vc2F2ZSBt
ZW1vcnk6IFttZW0gMHhmZWMwMTAwMC0weGZlYzBmZmZmXQpbICAgIDAuOTMxMDk5XSBQTTogaGli
ZXJuYXRpb246IFJlZ2lzdGVyZWQgbm9zYXZlIG1lbW9yeTogW21lbSAweGZlYzEwMDAwLTB4ZmVj
MTBmZmZdClsgICAgMC45Mzk3NDRdIFBNOiBoaWJlcm5hdGlvbjogUmVnaXN0ZXJlZCBub3NhdmUg
bWVtb3J5OiBbbWVtIDB4ZmVjMTEwMDAtMHhmZWMyZmZmZl0KWyAgICAwLjk0ODcyN10gUE06IGhp
YmVybmF0aW9uOiBSZWdpc3RlcmVkIG5vc2F2ZSBtZW1vcnk6IFttZW0gMHhmZWMzMDAwMC0weGZl
YzMwZmZmXQpbICAgIDAuOTU3NTU5XSBQTTogaGliZXJuYXRpb246IFJlZ2lzdGVyZWQgbm9zYXZl
IG1lbW9yeTogW21lbSAweGZlYzMxMDAwLTB4ZmVjZmZmZmZdClsgICAgMC45NjYyNTJdIFBNOiBo
aWJlcm5hdGlvbjogUmVnaXN0ZXJlZCBub3NhdmUgbWVtb3J5OiBbbWVtIDB4ZmVkMDAwMDAtMHhm
ZWQwMGZmZl0KWyAgICAwLjk3NTI0M10gUE06IGhpYmVybmF0aW9uOiBSZWdpc3RlcmVkIG5vc2F2
ZSBtZW1vcnk6IFttZW0gMHhmZWQwMTAwMC0weGZlZDNmZmZmXQpbICAgIDAuOTgzODI2XSBQTTog
aGliZXJuYXRpb246IFJlZ2lzdGVyZWQgbm9zYXZlIG1lbW9yeTogW21lbSAweGZlZDQwMDAwLTB4
ZmVkNDRmZmZdClsgICAgMC45OTI4NzFdIFBNOiBoaWJlcm5hdGlvbjogUmVnaXN0ZXJlZCBub3Nh
dmUgbWVtb3J5OiBbbWVtIDB4ZmVkNDUwMDAtMHhmZWQ3ZmZmZl0KWyAgICAxLjAwMTg2NF0gUE06
IGhpYmVybmF0aW9uOiBSZWdpc3RlcmVkIG5vc2F2ZSBtZW1vcnk6IFttZW0gMHhmZWQ4MDAwMC0w
eGZlZDhmZmZmXQpbICAgIDEuMDEwNDQwXSBQTTogaGliZXJuYXRpb246IFJlZ2lzdGVyZWQgbm9z
YXZlIG1lbW9yeTogW21lbSAweGZlZDkwMDAwLTB4ZmVmZmZmZmZdClsgICAgMS4wMTkzNDBdIFBN
OiBoaWJlcm5hdGlvbjogUmVnaXN0ZXJlZCBub3NhdmUgbWVtb3J5OiBbbWVtIDB4ZmYwMDAwMDAt
MHhmZmZmZmZmZl0KWyAgICAxLjAyODExNV0gW21lbSAweGMwMDAwMDAwLTB4ZGYxZmZmZmZdIGF2
YWlsYWJsZSBmb3IgUENJIGRldmljZXMKWyAgICAxLjAzNTEzMF0gQm9vdGluZyBrZXJuZWwgb24g
WGVuIFBWSApbICAgIDEuMDM5Mjg4XSBYZW4gdmVyc2lvbjogNC4xNy4zLXByZQpbICAgIDEuMDQz
Mzk2XSBjbG9ja3NvdXJjZTogcmVmaW5lZC1qaWZmaWVzOiBtYXNrOiAweGZmZmZmZmZmIG1heF9j
eWNsZXM6IDB4ZmZmZmZmZmYsIG1heF9pZGxlX25zOiA3NjQ1NTE5NjAwMjExNTY4IG5zClsgICAg
MS4wNTgyMTddIHNldHVwX3BlcmNwdTogTlJfQ1BVUzo4MTkyIG5yX2NwdW1hc2tfYml0czo0OCBu
cl9jcHVfaWRzOjQ4IG5yX25vZGVfaWRzOjEKWyAgICAxLjA2NzgwMF0gcGVyY3B1OiBFbWJlZGRl
ZCA2MSBwYWdlcy9jcHUgczIxMjk5MiByODE5MiBkMjg2NzIgdTI2MjE0NApbICAgIDEuMDc1NDIw
XSBwY3B1LWFsbG9jOiBzMjEyOTkyIHI4MTkyIGQyODY3MiB1MjYyMTQ0IGFsbG9jPTEqMjA5NzE1
MgpbICAgIDEuMDc1NDIyXSBwY3B1LWFsbG9jOiBbMF0gMDAgMDEgMDIgMDMgMDQgMDUgMDYgMDcg
WzBdIDA4IDA5IDEwIDExIDEyIDEzIDE0IDE1IApbICAgIDEuMDc1NDI3XSBwY3B1LWFsbG9jOiBb
MF0gMTYgMTcgMTggMTkgMjAgMjEgMjIgMjMgWzBdIDI0IDI1IDI2IDI3IDI4IDI5IDMwIDMxIApb
ICAgIDEuMDc1NDMyXSBwY3B1LWFsbG9jOiBbMF0gMzIgMzMgMzQgMzUgMzYgMzcgMzggMzkgWzBd
IDQwIDQxIDQyIDQzIDQ0IDQ1IDQ2IDQ3IApbICAgIDEuMDc1NDYxXSB4ZW46IFBWIHNwaW5sb2Nr
cyBlbmFibGVkClsgICAgMS4wNzU0NjNdIFBWIHFzcGlubG9jayBoYXNoIHRhYmxlIGVudHJpZXM6
IDI1NiAob3JkZXI6IDAsIDQwOTYgYnl0ZXMsIGxpbmVhcikKWyAgICAxLjA4NDE0MF0gRmFsbGJh
Y2sgb3JkZXIgZm9yIE5vZGUgMDogMCAKWyAgICAxLjA4NDE0M10gQnVpbHQgMSB6b25lbGlzdHMs
IG1vYmlsaXR5IGdyb3VwaW5nIG9uLiAgVG90YWwgcGFnZXM6IDIwNjA2MzcKWyAgICAxLjA5NzA2
M10gUG9saWN5IHpvbmU6IE5vcm1hbApbICAgIDEuMTAwODA1XSBLZXJuZWwgY29tbWFuZCBsaW5l
OiByb290PVVVSUQ9OTIyYjEwZjItYTgyNi00N2ZiLWFiMzgtODM2ZjliMzk3ZmY3IHJvIHJvb3Rm
bGFncz1zdWJ2b2w9QHJvb3RmcyAgZWFybHlwcmludGs9eGVuIGNvbnNvbGU9aHZjMApbICAgIDEu
MTE1NDg5XSByYW5kb206IGNybmcgaW5pdCBkb25lClsgICAgMS4xMTkyNzddIHByaW50azogbG9n
X2J1Zl9sZW4gaW5kaXZpZHVhbCBtYXggY3B1IGNvbnRyaWJ1dGlvbjogNDA5NiBieXRlcwpbICAg
IDEuMTI3NDUxXSBwcmludGs6IGxvZ19idWZfbGVuIHRvdGFsIGNwdV9leHRyYSBjb250cmlidXRp
b25zOiAxOTI1MTIgYnl0ZXMKWyAgICAxLjEzNTU4MF0gcHJpbnRrOiBsb2dfYnVmX2xlbiBtaW4g
c2l6ZTogMTMxMDcyIGJ5dGVzClsgICAgMS4xNDE2NjhdIHByaW50azogbG9nX2J1Zl9sZW46IDUy
NDI4OCBieXRlcwpbICAgIDEuMTQ2NzQyXSBwcmludGs6IGVhcmx5IGxvZyBidWYgZnJlZTogMTE3
NTA0KDg5JSkKWyAgICAxLjE1Mjc3N10gRGVudHJ5IGNhY2hlIGhhc2ggdGFibGUgZW50cmllczog
MTA0ODU3NiAob3JkZXI6IDExLCA4Mzg4NjA4IGJ5dGVzLCBsaW5lYXIpClsgICAgMS4xNjE5OTRd
IElub2RlLWNhY2hlIGhhc2ggdGFibGUgZW50cmllczogNTI0Mjg4IChvcmRlcjogMTAsIDQxOTQz
MDQgYnl0ZXMsIGxpbmVhcikKWyAgICAxLjE3MDgzNF0gbWVtIGF1dG8taW5pdDogc3RhY2s6YWxs
KHplcm8pLCBoZWFwIGFsbG9jOm9uLCBoZWFwIGZyZWU6b2ZmClsgICAgMS4xNzg3MzddIHNvZnR3
YXJlIElPIFRMQjogYXJlYSBudW0gNjQuClsgICAgMS4xOTAxMzldIE1lbW9yeTogMjYyNTE2NEsv
ODM4ODYwMEsgYXZhaWxhYmxlICgxNDM0Mksga2VybmVsIGNvZGUsIDIzMzFLIHJ3ZGF0YSwgOTA1
Mksgcm9kYXRhLCAyNzkySyBpbml0LCAxNzQxNksgYnNzLCAzMjM1MDhLIHJlc2VydmVkLCAwSyBj
bWEtcmVzZXJ2ZWQpClsgICAgMS4yMDYyNjFdIFNMVUI6IEhXYWxpZ249NjQsIE9yZGVyPTAtMywg
TWluT2JqZWN0cz0wLCBDUFVzPTQ4LCBOb2Rlcz0xClsgICAgMS4yMTc1NDFdIGZ0cmFjZTogYWxs
b2NhdGluZyA0MDE1OSBlbnRyaWVzIGluIDE1NyBwYWdlcwpbICAgIDEuMjMwMDU1XSBmdHJhY2U6
IGFsbG9jYXRlZCAxNTcgcGFnZXMgd2l0aCA1IGdyb3VwcwpbICAgIDEuMjM2MzM4XSBEeW5hbWlj
IFByZWVtcHQ6IHZvbHVudGFyeQpbICAgIDEuMjQwNDY2XSByY3U6IFByZWVtcHRpYmxlIGhpZXJh
cmNoaWNhbCBSQ1UgaW1wbGVtZW50YXRpb24uClsgICAgMS4yNDcwNDZdIHJjdTogCVJDVSByZXN0
cmljdGluZyBDUFVzIGZyb20gTlJfQ1BVUz04MTkyIHRvIG5yX2NwdV9pZHM9NDguClsgICAgMS4y
NTUwNDFdIAlUcmFtcG9saW5lIHZhcmlhbnQgb2YgVGFza3MgUkNVIGVuYWJsZWQuClsgICAgMS4y
NjA5MDNdIAlSdWRlIHZhcmlhbnQgb2YgVGFza3MgUkNVIGVuYWJsZWQuClsgICAgMS4yNjYzMTBd
IAlUcmFjaW5nIHZhcmlhbnQgb2YgVGFza3MgUkNVIGVuYWJsZWQuClsgICAgMS4yNzE5MzFdIHJj
dTogUkNVIGNhbGN1bGF0ZWQgdmFsdWUgb2Ygc2NoZWR1bGVyLWVubGlzdG1lbnQgZGVsYXkgaXMg
MjUgamlmZmllcy4KWyAgICAxLjI4MDcyNF0gcmN1OiBBZGp1c3RpbmcgZ2VvbWV0cnkgZm9yIHJj
dV9mYW5vdXRfbGVhZj0xNiwgbnJfY3B1X2lkcz00OApbICAgIDEuMjkwOTc4XSBVc2luZyBOVUxM
IGxlZ2FjeSBQSUMKWyAgICAxLjI5NDgwMV0gTlJfSVJRUzogNTI0NTQ0LCBucl9pcnFzOiAyOTg0
LCBwcmVhbGxvY2F0ZWQgaXJxczogMApbICAgIDEuMzAxOTcwXSB4ZW46ZXZlbnRzOiBVc2luZyBG
SUZPLWJhc2VkIEFCSQpbICAgIDEuMzA5OTUzXSB4ZW46ZXZlbnRzOiBYZW4gSFZNIGNhbGxiYWNr
IHZlY3RvciBmb3IgZXZlbnQgZGVsaXZlcnkgaXMgZW5hYmxlZApbICAgIDEuMzE4Mzg2XSByY3U6
IHNyY3VfaW5pdDogU2V0dGluZyBzcmN1X3N0cnVjdCBzaXplcyBiYXNlZCBvbiBjb250ZW50aW9u
LgpbICAgIDEuMzI2NDI1XSBDb25zb2xlOiBjb2xvdXIgZHVtbXkgZGV2aWNlIDgweDI1ClsgICAg
MS4zMzE1ODBdIHByaW50azogY29uc29sZSBbdHR5MF0gZW5hYmxlZApbICAgIDEuMzM2MzgyXSBw
cmludGs6IGNvbnNvbGUgW2h2YzBdIGVuYWJsZWQKWyAgICAxLjM0NTg0MF0gcHJpbnRrOiBib290
Y29uc29sZSBbeGVuYm9vdDBdIGRpc2FibGVkClsgICAgMS4zNTc0NTldIEFDUEk6IENvcmUgcmV2
aXNpb24gMjAyMjAzMzEKWyAgICAxLjM4ODMzOV0gRmFpbGVkIHRvIHJlZ2lzdGVyIGxlZ2FjeSB0
aW1lciBpbnRlcnJ1cHQKWyAgICAxLjM5NDM4NF0gQVBJQzogU3dpdGNoIHRvIHN5bW1ldHJpYyBJ
L08gbW9kZSBzZXR1cApbICAgIDEuNDAxMjY2XSB4MmFwaWMgZW5hYmxlZApbICAgIDEuNDA1NDk1
XSBTd2l0Y2hlZCBBUElDIHJvdXRpbmcgdG8gcGh5c2ljYWwgeDJhcGljLgpbICAgIDEuNDExNTEw
XSBjbG9ja3NvdXJjZTogdHNjLWVhcmx5OiBtYXNrOiAweGZmZmZmZmZmZmZmZmZmZmYgbWF4X2N5
Y2xlczogMHgzYzhhM2JiZTQ0MCwgbWF4X2lkbGVfbnM6IDQ0MDc5NTI5ODE4NyBucwpbICAgIDEu
NDIzODAzXSBDYWxpYnJhdGluZyBkZWxheSBsb29wIChza2lwcGVkKSwgdmFsdWUgY2FsY3VsYXRl
ZCB1c2luZyB0aW1lciBmcmVxdWVuY3kuLiA4Mzk5LjkyIEJvZ29NSVBTIChscGo9MTY3OTk4NDAp
ClsgICAgMS40Mjc3OThdIHg4Ni9jcHU6IFVzZXIgTW9kZSBJbnN0cnVjdGlvbiBQcmV2ZW50aW9u
IChVTUlQKSBhY3RpdmF0ZWQKWyAgICAxLjQyNzc5OF0gTGFzdCBsZXZlbCBpVExCIGVudHJpZXM6
IDRLQiA1MTIsIDJNQiA1MTIsIDRNQiAyNTYKWyAgICAxLjQyNzc5OF0gTGFzdCBsZXZlbCBkVExC
IGVudHJpZXM6IDRLQiAzMDcyLCAyTUIgMzA3MiwgNE1CIDE1MzYsIDFHQiAwClsgICAgMS40Mjc3
OThdIFNwZWN0cmUgVjEgOiBNaXRpZ2F0aW9uOiB1c2VyY29weS9zd2FwZ3MgYmFycmllcnMgYW5k
IF9fdXNlciBwb2ludGVyIHNhbml0aXphdGlvbgpbICAgIDEuNDI3Nzk4XSBTcGVjdHJlIFYyIDog
TWl0aWdhdGlvbjogUmV0cG9saW5lcwpbICAgIDEuNDI3Nzk4XSBTcGVjdHJlIFYyIDogU3BlY3Ry
ZSB2MiAvIFNwZWN0cmVSU0IgbWl0aWdhdGlvbjogRmlsbGluZyBSU0Igb24gY29udGV4dCBzd2l0
Y2gKWyAgICAxLjQyNzc5OF0gU3BlY3RyZSBWMiA6IFNwZWN0cmUgdjIgLyBTcGVjdHJlUlNCIDog
RmlsbGluZyBSU0Igb24gVk1FWElUClsgICAgMS40Mjc3OThdIFNwZWN0cmUgVjIgOiBFbmFibGlu
ZyBSZXN0cmljdGVkIFNwZWN1bGF0aW9uIGZvciBmaXJtd2FyZSBjYWxscwpbICAgIDEuNDI3Nzk4
XSBTcGVjdHJlIFYyIDogbWl0aWdhdGlvbjogRW5hYmxpbmcgY29uZGl0aW9uYWwgSW5kaXJlY3Qg
QnJhbmNoIFByZWRpY3Rpb24gQmFycmllcgpbICAgIDEuNDI3Nzk4XSBTcGVjdWxhdGl2ZSBTdG9y
ZSBCeXBhc3M6IE1pdGlnYXRpb246IFNwZWN1bGF0aXZlIFN0b3JlIEJ5cGFzcyBkaXNhYmxlZCB2
aWEgcHJjdGwKWyAgICAxLjQyNzc5OF0gU3BlY3VsYXRpdmUgUmV0dXJuIFN0YWNrIE92ZXJmbG93
OiBNaXRpZ2F0aW9uOiBzYWZlIFJFVApbICAgIDEuNDI3Nzk4XSB4ODYvZnB1OiBTdXBwb3J0aW5n
IFhTQVZFIGZlYXR1cmUgMHgwMDE6ICd4ODcgZmxvYXRpbmcgcG9pbnQgcmVnaXN0ZXJzJwpbICAg
IDEuNDI3Nzk4XSB4ODYvZnB1OiBTdXBwb3J0aW5nIFhTQVZFIGZlYXR1cmUgMHgwMDI6ICdTU0Ug
cmVnaXN0ZXJzJwpbICAgIDEuNDI3Nzk4XSB4ODYvZnB1OiBTdXBwb3J0aW5nIFhTQVZFIGZlYXR1
cmUgMHgwMDQ6ICdBVlggcmVnaXN0ZXJzJwpbICAgIDEuNDI3Nzk4XSB4ODYvZnB1OiBTdXBwb3J0
aW5nIFhTQVZFIGZlYXR1cmUgMHgwMjA6ICdBVlgtNTEyIG9wbWFzaycKWyAgICAxLjQyNzc5OF0g
eDg2L2ZwdTogU3VwcG9ydGluZyBYU0FWRSBmZWF0dXJlIDB4MDQwOiAnQVZYLTUxMiBIaTI1NicK
WyAgICAxLjQyNzc5OF0geDg2L2ZwdTogU3VwcG9ydGluZyBYU0FWRSBmZWF0dXJlIDB4MDgwOiAn
QVZYLTUxMiBaTU1fSGkyNTYnClsgICAgMS40Mjc3OThdIHg4Ni9mcHU6IFN1cHBvcnRpbmcgWFNB
VkUgZmVhdHVyZSAweDIwMDogJ1Byb3RlY3Rpb24gS2V5cyBVc2VyIHJlZ2lzdGVycycKWyAgICAx
LjQyNzc5OF0geDg2L2ZwdTogeHN0YXRlX29mZnNldFsyXTogIDU3NiwgeHN0YXRlX3NpemVzWzJd
OiAgMjU2ClsgICAgMS40Mjc3OThdIHg4Ni9mcHU6IHhzdGF0ZV9vZmZzZXRbNV06ICA4MzIsIHhz
dGF0ZV9zaXplc1s1XTogICA2NApbICAgIDEuNDI3Nzk4XSB4ODYvZnB1OiB4c3RhdGVfb2Zmc2V0
WzZdOiAgODk2LCB4c3RhdGVfc2l6ZXNbNl06ICA1MTIKWyAgICAxLjQyNzc5OF0geDg2L2ZwdTog
eHN0YXRlX29mZnNldFs3XTogMTQwOCwgeHN0YXRlX3NpemVzWzddOiAxMDI0ClsgICAgMS40Mjc3
OThdIHg4Ni9mcHU6IHhzdGF0ZV9vZmZzZXRbOV06IDI0MzIsIHhzdGF0ZV9zaXplc1s5XTogICAg
OApbICAgIDEuNDI3Nzk4XSB4ODYvZnB1OiBFbmFibGVkIHhzdGF0ZSBmZWF0dXJlcyAweDJlNywg
Y29udGV4dCBzaXplIGlzIDI0NDAgYnl0ZXMsIHVzaW5nICdjb21wYWN0ZWQnIGZvcm1hdC4KWyAg
ICAxLjQyNzc5OF0gRnJlZWluZyBTTVAgYWx0ZXJuYXRpdmVzIG1lbW9yeTogMzZLClsgICAgMS40
Mjc3OThdIHBpZF9tYXg6IGRlZmF1bHQ6IDQ5MTUyIG1pbmltdW06IDM4NApbICAgIDEuNDI3Nzk4
XSBMU006IFNlY3VyaXR5IEZyYW1ld29yayBpbml0aWFsaXppbmcKWyAgICAxLjQyNzc5OF0gbGFu
ZGxvY2s6IFVwIGFuZCBydW5uaW5nLgpbICAgIDEuNDI3Nzk4XSBZYW1hOiBkaXNhYmxlZCBieSBk
ZWZhdWx0OyBlbmFibGUgd2l0aCBzeXNjdGwga2VybmVsLnlhbWEuKgpbICAgIDEuNDI3Nzk4XSBB
cHBBcm1vcjogQXBwQXJtb3IgaW5pdGlhbGl6ZWQKWyAgICAxLjQyNzc5OF0gVE9NT1lPIExpbnV4
IGluaXRpYWxpemVkClsgICAgMS40Mjc3OThdIExTTSBzdXBwb3J0IGZvciBlQlBGIGFjdGl2ZQpb
ICAgIDEuNDI3Nzk4XSBNb3VudC1jYWNoZSBoYXNoIHRhYmxlIGVudHJpZXM6IDE2Mzg0IChvcmRl
cjogNSwgMTMxMDcyIGJ5dGVzLCBsaW5lYXIpClsgICAgMS40Mjc3OThdIE1vdW50cG9pbnQtY2Fj
aGUgaGFzaCB0YWJsZSBlbnRyaWVzOiAxNjM4NCAob3JkZXI6IDUsIDEzMTA3MiBieXRlcywgbGlu
ZWFyKQpbICAgIDEuNDI3Nzk4XSBjbG9ja3NvdXJjZTogeGVuOiBtYXNrOiAweGZmZmZmZmZmZmZm
ZmZmZmYgbWF4X2N5Y2xlczogMHgxY2Q0MmU0ZGZmYiwgbWF4X2lkbGVfbnM6IDg4MTU5MDU5MTQ4
MyBucwpbICAgIDEuNDI3Nzk4XSBYZW46IHVzaW5nIHZjcHVvcCB0aW1lciBpbnRlcmZhY2UKWyAg
ICAxLjQyNzc5OF0gaW5zdGFsbGluZyBYZW4gdGltZXIgZm9yIENQVSAwClsgICAgMS40Mjc3OThd
IHNtcGJvb3Q6IENQVTA6IEFNRCBSeXplbiBUaHJlYWRyaXBwZXIgNzk2MFggMjQtQ29yZXMgKGZh
bWlseTogMHgxOSwgbW9kZWw6IDB4MTgsIHN0ZXBwaW5nOiAweDEpClsgICAgMS40Mjc4MTVdIGNw
dSAwIHNwaW5sb2NrIGV2ZW50IGlycSAyOApbICAgIDEuNDMxODU0XSBjYmxpc3RfaW5pdF9nZW5l
cmljOiBTZXR0aW5nIGFkanVzdGFibGUgbnVtYmVyIG9mIGNhbGxiYWNrIHF1ZXVlcy4KWyAgICAx
LjQzNTgwMV0gY2JsaXN0X2luaXRfZ2VuZXJpYzogU2V0dGluZyBzaGlmdCB0byA2IGFuZCBsaW0g
dG8gMS4KWyAgICAxLjQzOTgwOF0gY2JsaXN0X2luaXRfZ2VuZXJpYzogU2V0dGluZyBhZGp1c3Rh
YmxlIG51bWJlciBvZiBjYWxsYmFjayBxdWV1ZXMuClsgICAgMS40NDM4MDBdIGNibGlzdF9pbml0
X2dlbmVyaWM6IFNldHRpbmcgc2hpZnQgdG8gNiBhbmQgbGltIHRvIDEuClsgICAgMS40NDc4MDdd
IGNibGlzdF9pbml0X2dlbmVyaWM6IFNldHRpbmcgYWRqdXN0YWJsZSBudW1iZXIgb2YgY2FsbGJh
Y2sgcXVldWVzLgpbICAgIDEuNDUxODAxXSBjYmxpc3RfaW5pdF9nZW5lcmljOiBTZXR0aW5nIHNo
aWZ0IHRvIDYgYW5kIGxpbSB0byAxLgpbICAgIDEuNDU1ODA3XSBQZXJmb3JtYW5jZSBFdmVudHM6
IFBNVSBub3QgYXZhaWxhYmxlIGR1ZSB0byB2aXJ0dWFsaXphdGlvbiwgdXNpbmcgc29mdHdhcmUg
ZXZlbnRzIG9ubHkuClsgICAgMS40NTk4MDddIHNpZ25hbDogbWF4IHNpZ2ZyYW1lIHNpemU6IDMz
NzYKWyAgICAxLjQ2MzgwN10gcmN1OiBIaWVyYXJjaGljYWwgU1JDVSBpbXBsZW1lbnRhdGlvbi4K
WyAgICAxLjQ2NzgwMF0gcmN1OiAJTWF4IHBoYXNlIG5vLWRlbGF5IGluc3RhbmNlcyBpcyAxMDAw
LgpbICAgIDEuNDcxOTE0XSBOTUkgd2F0Y2hkb2c6IFBlcmYgTk1JIHdhdGNoZG9nIHBlcm1hbmVu
dGx5IGRpc2FibGVkClsgICAgMS40NzU5NzRdIHNtcDogQnJpbmdpbmcgdXAgc2Vjb25kYXJ5IENQ
VXMgLi4uClsgICAgMS40ODI4NTBdIGluc3RhbGxpbmcgWGVuIHRpbWVyIGZvciBDUFUgMQpbICAg
IDEuNDgzODI2XSB4ODY6IEJvb3RpbmcgU01QIGNvbmZpZ3VyYXRpb246ClsgICAgMS40ODc4MDFd
IC4uLi4gbm9kZSAgIzAsIENQVXM6ICAgICAgICAjMQpbICAgIDEuNDkxNDk3XSBjcHUgMSBzcGlu
bG9jayBldmVudCBpcnEgMzMKWyAgICAxLjUwMjg3NF0gaW5zdGFsbGluZyBYZW4gdGltZXIgZm9y
IENQVSAyClsgICAgMS41MDM4NDNdICAgIzIKWyAgICAxLjUwNjM0N10gY3B1IDIgc3BpbmxvY2sg
ZXZlbnQgaXJxIDM4ClsgICAgMS41MTU4MDJdIGluc3RhbGxpbmcgWGVuIHRpbWVyIGZvciBDUFUg
MwpbICAgIDEuNTE5ODQ0XSAgICMzClsgICAgMS41MjIzMjddIGNwdSAzIHNwaW5sb2NrIGV2ZW50
IGlycSA0MwpbICAgIDEuNTMxODAyXSBpbnN0YWxsaW5nIFhlbiB0aW1lciBmb3IgQ1BVIDQKWyAg
ICAxLjUzNTgzOV0gICAjNApbICAgIDEuNTM4MjgyXSBjcHUgNCBzcGlubG9jayBldmVudCBpcnEg
NDgKWyAgICAxLjU0NzgwMV0gaW5zdGFsbGluZyBYZW4gdGltZXIgZm9yIENQVSA1ClsgICAgMS41
NTE4MzJdICAgIzUKWyAgICAxLjU1NDI5NF0gY3B1IDUgc3BpbmxvY2sgZXZlbnQgaXJxIDUzClsg
ICAgMS41NjI2ODNdIGluc3RhbGxpbmcgWGVuIHRpbWVyIGZvciBDUFUgNgpbICAgIDEuNTYzODMz
XSAgICM2ClsgICAgMS41NjYyMTRdIGNwdSA2IHNwaW5sb2NrIGV2ZW50IGlycSA1OApbICAgIDEu
NTc1ODAyXSBpbnN0YWxsaW5nIFhlbiB0aW1lciBmb3IgQ1BVIDcKWyAgICAxLjU3OTg0M10gICAj
NwpbICAgIDEuNTgyMjQ5XSBjcHUgNyBzcGlubG9jayBldmVudCBpcnEgNjMKWyAgICAxLjU5MTgw
Ml0gaW5zdGFsbGluZyBYZW4gdGltZXIgZm9yIENQVSA4ClsgICAgMS41OTU4NDldICAgIzgKWyAg
ICAxLjU5ODIyN10gY3B1IDggc3BpbmxvY2sgZXZlbnQgaXJxIDY4ClsgICAgMS42MDY3MzBdIGlu
c3RhbGxpbmcgWGVuIHRpbWVyIGZvciBDUFUgOQpbICAgIDEuNjA3ODQyXSAgICM5ClsgICAgMS42
MTAyOTNdIGNwdSA5IHNwaW5sb2NrIGV2ZW50IGlycSA3MwpbICAgIDEuNjE5ODAyXSBpbnN0YWxs
aW5nIFhlbiB0aW1lciBmb3IgQ1BVIDEwClsgICAgMS42MjM4NDJdICAjMTAKWyAgICAxLjYyNjI5
Nl0gY3B1IDEwIHNwaW5sb2NrIGV2ZW50IGlycSA3OApbICAgIDEuNjM1ODAxXSBpbnN0YWxsaW5n
IFhlbiB0aW1lciBmb3IgQ1BVIDExClsgICAgMS42Mzk4MzddICAjMTEKWyAgICAxLjY0MjIxNl0g
Y3B1IDExIHNwaW5sb2NrIGV2ZW50IGlycSA4MwpbICAgIDEuNjUxODAyXSBpbnN0YWxsaW5nIFhl
biB0aW1lciBmb3IgQ1BVIDEyClsgICAgMS42NTU4NDddICAjMTIKWyAgICAxLjY1ODIyNl0gY3B1
IDEyIHNwaW5sb2NrIGV2ZW50IGlycSA4OApbICAgIDEuNjY3ODAyXSBpbnN0YWxsaW5nIFhlbiB0
aW1lciBmb3IgQ1BVIDEzClsgICAgMS42NzE4NDNdICAjMTMKWyAgICAxLjY3NDI4M10gY3B1IDEz
IHNwaW5sb2NrIGV2ZW50IGlycSA5MwpbICAgIDEuNjgzODAyXSBpbnN0YWxsaW5nIFhlbiB0aW1l
ciBmb3IgQ1BVIDE0ClsgICAgMS42ODc4NDddICAjMTQKWyAgICAxLjY5MDIwNl0gY3B1IDE0IHNw
aW5sb2NrIGV2ZW50IGlycSA5OApbICAgIDEuNjk5ODAyXSBpbnN0YWxsaW5nIFhlbiB0aW1lciBm
b3IgQ1BVIDE1ClsgICAgMS43MDM4NDRdICAjMTUKWyAgICAxLjcwNjI4MF0gY3B1IDE1IHNwaW5s
b2NrIGV2ZW50IGlycSAxMDMKWyAgICAxLjcxNTgwMl0gaW5zdGFsbGluZyBYZW4gdGltZXIgZm9y
IENQVSAxNgpbICAgIDEuNzE5ODQ0XSAgIzE2ClsgICAgMS43MjIzMTRdIGNwdSAxNiBzcGlubG9j
ayBldmVudCBpcnEgMTA4ClsgICAgMS43MzE4MDJdIGluc3RhbGxpbmcgWGVuIHRpbWVyIGZvciBD
UFUgMTcKWyAgICAxLjczNTgzOF0gICMxNwpbICAgIDEuNzM4MjAyXSBjcHUgMTcgc3BpbmxvY2sg
ZXZlbnQgaXJxIDExMwpbICAgIDEuNzQ3ODAyXSBpbnN0YWxsaW5nIFhlbiB0aW1lciBmb3IgQ1BV
IDE4ClsgICAgMS43NTE4NDNdICAjMTgKWyAgICAxLjc1NDI5MF0gY3B1IDE4IHNwaW5sb2NrIGV2
ZW50IGlycSAxMTgKWyAgICAxLjc2MzgwMl0gaW5zdGFsbGluZyBYZW4gdGltZXIgZm9yIENQVSAx
OQpbICAgIDEuNzY3ODQ3XSAgIzE5ClsgICAgMS43NzAyOTBdIGNwdSAxOSBzcGlubG9jayBldmVu
dCBpcnEgMTIzClsgICAgMS43Nzk4MDFdIGluc3RhbGxpbmcgWGVuIHRpbWVyIGZvciBDUFUgMjAK
WyAgICAxLjc4MzgzOV0gICMyMApbICAgIDEuNzg2MjE0XSBjcHUgMjAgc3BpbmxvY2sgZXZlbnQg
aXJxIDEyOApbICAgIDEuNzk1ODAyXSBpbnN0YWxsaW5nIFhlbiB0aW1lciBmb3IgQ1BVIDIxClsg
ICAgMS43OTk4NDldICAjMjEKWyAgICAxLjgwMjMwOF0gY3B1IDIxIHNwaW5sb2NrIGV2ZW50IGly
cSAxMzMKWyAgICAxLjgxMTgwMl0gaW5zdGFsbGluZyBYZW4gdGltZXIgZm9yIENQVSAyMgpbICAg
IDEuODE1ODQ3XSAgIzIyClsgICAgMS44MTgyNTBdIGNwdSAyMiBzcGlubG9jayBldmVudCBpcnEg
MTM4ClsgICAgMS44Mjc4MDJdIGluc3RhbGxpbmcgWGVuIHRpbWVyIGZvciBDUFUgMjMKWyAgICAx
LjgzMTg0NV0gICMyMwpbICAgIDEuODM0MjA2XSBjcHUgMjMgc3BpbmxvY2sgZXZlbnQgaXJxIDE0
MwpbICAgIDEuODQzODAyXSBpbnN0YWxsaW5nIFhlbiB0aW1lciBmb3IgQ1BVIDI0ClsgICAgMS44
NDc4NDhdICAjMjQKWyAgICAxLjg1MDMyN10gY3B1IDI0IHNwaW5sb2NrIGV2ZW50IGlycSAxNDgK
WyAgICAxLjg1OTgwMV0gaW5zdGFsbGluZyBYZW4gdGltZXIgZm9yIENQVSAyNQpbICAgIDEuODYz
ODUxXSAgIzI1ClsgICAgMS44NjYzMDNdIGNwdSAyNSBzcGlubG9jayBldmVudCBpcnEgMTUzClsg
ICAgMS44NzU4MDFdIGluc3RhbGxpbmcgWGVuIHRpbWVyIGZvciBDUFUgMjYKWyAgICAxLjg3OTg0
NF0gICMyNgpbICAgIDEuODgyMjQ0XSBjcHUgMjYgc3BpbmxvY2sgZXZlbnQgaXJxIDE1OApbICAg
IDEuODkxODAxXSBpbnN0YWxsaW5nIFhlbiB0aW1lciBmb3IgQ1BVIDI3ClsgICAgMS44OTU4NTBd
ICAjMjcKWyAgICAxLjg5ODI5NF0gY3B1IDI3IHNwaW5sb2NrIGV2ZW50IGlycSAxNjMKWyAgICAx
LjkwNzgwMl0gaW5zdGFsbGluZyBYZW4gdGltZXIgZm9yIENQVSAyOApbICAgIDEuOTExODQ3XSAg
IzI4ClsgICAgMS45MTQzMTddIGNwdSAyOCBzcGlubG9jayBldmVudCBpcnEgMTY4ClsgICAgMS45
MjM4MDJdIGluc3RhbGxpbmcgWGVuIHRpbWVyIGZvciBDUFUgMjkKWyAgICAxLjkyNzg0OV0gICMy
OQpbICAgIDEuOTMwMjMwXSBjcHUgMjkgc3BpbmxvY2sgZXZlbnQgaXJxIDE3MwpbICAgIDEuOTM5
ODAyXSBpbnN0YWxsaW5nIFhlbiB0aW1lciBmb3IgQ1BVIDMwClsgICAgMS45NDM4NDldICAjMzAK
WyAgICAxLjk0NjMwNV0gY3B1IDMwIHNwaW5sb2NrIGV2ZW50IGlycSAxNzgKWyAgICAxLjk1NTgw
MV0gaW5zdGFsbGluZyBYZW4gdGltZXIgZm9yIENQVSAzMQpbICAgIDEuOTU5ODQ4XSAgIzMxClsg
ICAgMS45NjIzMDVdIGNwdSAzMSBzcGlubG9jayBldmVudCBpcnEgMTgzClsgICAgMS45NzE4MDJd
IGluc3RhbGxpbmcgWGVuIHRpbWVyIGZvciBDUFUgMzIKWyAgICAxLjk3NTg0OF0gICMzMgpbICAg
IDIuMDU5ODU2XSBjcHUgMzIgc3BpbmxvY2sgZXZlbnQgaXJxIDE4OApbICAgIDIuMDY3ODAxXSBp
bnN0YWxsaW5nIFhlbiB0aW1lciBmb3IgQ1BVIDMzClsgICAgMi4wNzE4NDZdICAjMzMKWyAgICAy
LjA3NDg4Ml0gY3B1IDMzIHNwaW5sb2NrIGV2ZW50IGlycSAxOTMKWyAgICAyLjA4MzgwMl0gaW5z
dGFsbGluZyBYZW4gdGltZXIgZm9yIENQVSAzNApbICAgIDIuMDg3ODM5XSAgIzM0ClsgICAgMi4w
OTAxNjddIGNwdSAzNCBzcGlubG9jayBldmVudCBpcnEgMTk4ClsgICAgMi4wOTk4MDJdIGluc3Rh
bGxpbmcgWGVuIHRpbWVyIGZvciBDUFUgMzUKWyAgICAyLjEwMzg0MV0gICMzNQpbICAgIDIuMTA2
MjM4XSBjcHUgMzUgc3BpbmxvY2sgZXZlbnQgaXJxIDIwMwpbICAgIDIuMTE1ODAyXSBpbnN0YWxs
aW5nIFhlbiB0aW1lciBmb3IgQ1BVIDM2ClsgICAgMi4xMTk4NTFdICAjMzYKWyAgICAyLjEyMjMy
Ml0gY3B1IDM2IHNwaW5sb2NrIGV2ZW50IGlycSAyMDgKWyAgICAyLjEzMTgwMl0gaW5zdGFsbGlu
ZyBYZW4gdGltZXIgZm9yIENQVSAzNwpbICAgIDIuMTM1ODUxXSAgIzM3ClsgICAgMi4xMzgyMjVd
IGNwdSAzNyBzcGlubG9jayBldmVudCBpcnEgMjEzClsgICAgMi4xNDc4MDJdIGluc3RhbGxpbmcg
WGVuIHRpbWVyIGZvciBDUFUgMzgKWyAgICAyLjE1MTg1NF0gICMzOApbICAgIDIuMTU0MjQ3XSBj
cHUgMzggc3BpbmxvY2sgZXZlbnQgaXJxIDIxOApbICAgIDIuMTYzODAyXSBpbnN0YWxsaW5nIFhl
biB0aW1lciBmb3IgQ1BVIDM5ClsgICAgMi4xNjc4NTJdICAjMzkKWyAgICAyLjE3MDMyMF0gY3B1
IDM5IHNwaW5sb2NrIGV2ZW50IGlycSAyMjMKWyAgICAyLjE3OTgwMV0gaW5zdGFsbGluZyBYZW4g
dGltZXIgZm9yIENQVSA0MApbICAgIDIuMTgzODQ0XSAgIzQwClsgICAgMi4xODYzMjRdIGNwdSA0
MCBzcGlubG9jayBldmVudCBpcnEgMjI4ClsgICAgMi4xOTU4MDFdIGluc3RhbGxpbmcgWGVuIHRp
bWVyIGZvciBDUFUgNDEKWyAgICAyLjE5OTg1MF0gICM0MQpbICAgIDIuMjAyMjkwXSBjcHUgNDEg
c3BpbmxvY2sgZXZlbnQgaXJxIDIzMwpbICAgIDIuMjExODAxXSBpbnN0YWxsaW5nIFhlbiB0aW1l
ciBmb3IgQ1BVIDQyClsgICAgMi4yMTU4NDldICAjNDIKWyAgICAyLjIxODI3Nl0gY3B1IDQyIHNw
aW5sb2NrIGV2ZW50IGlycSAyMzgKWyAgICAyLjIyNzgwMV0gaW5zdGFsbGluZyBYZW4gdGltZXIg
Zm9yIENQVSA0MwpbICAgIDIuMjMxODU1XSAgIzQzClsgICAgMi4yMzQyNTVdIGNwdSA0MyBzcGlu
bG9jayBldmVudCBpcnEgMjQzClsgICAgMi4yNDM4MDFdIGluc3RhbGxpbmcgWGVuIHRpbWVyIGZv
ciBDUFUgNDQKWyAgICAyLjI0Nzg1NF0gICM0NApbICAgIDIuMjUwMjg3XSBjcHUgNDQgc3Bpbmxv
Y2sgZXZlbnQgaXJxIDI0OApbICAgIDIuMjU5ODAxXSBpbnN0YWxsaW5nIFhlbiB0aW1lciBmb3Ig
Q1BVIDQ1ClsgICAgMi4yNjM4NDhdICAjNDUKWyAgICAyLjI2NjIxNF0gY3B1IDQ1IHNwaW5sb2Nr
IGV2ZW50IGlycSAyNTMKWyAgICAyLjI3NTgwMV0gaW5zdGFsbGluZyBYZW4gdGltZXIgZm9yIENQ
VSA0NgpbICAgIDIuMjc5ODUzXSAgIzQ2ClsgICAgMi4yODIzNDZdIGNwdSA0NiBzcGlubG9jayBl
dmVudCBpcnEgMjU4ClsgICAgMi4yOTE4MDFdIGluc3RhbGxpbmcgWGVuIHRpbWVyIGZvciBDUFUg
NDcKWyAgICAyLjI5NTg1Ml0gICM0NwpbICAgIDIuMjk4MzI2XSBjcHUgNDcgc3BpbmxvY2sgZXZl
bnQgaXJxIDI2MwpbICAgIDIuMzA0MTk4XSBzbXA6IEJyb3VnaHQgdXAgMSBub2RlLCA0OCBDUFVz
ClsgICAgMi4zMDc4MDRdIHNtcGJvb3Q6IE1heCBsb2dpY2FsIHBhY2thZ2VzOiAyClsgICAgMi4z
MTE4MDNdIHNtcGJvb3Q6IFRvdGFsIG9mIDQ4IHByb2Nlc3NvcnMgYWN0aXZhdGVkICg0MDMzMTAu
NDAgQm9nb01JUFMpClsgICAgMi4zMjE0NjldIG5vZGUgMCBkZWZlcnJlZCBwYWdlcyBpbml0aWFs
aXNlZCBpbiAwbXMKWyAgICAyLjMyODMxN10gZGV2dG1wZnM6IGluaXRpYWxpemVkClsgICAgMi4z
MzE4NDddIHg4Ni9tbTogTWVtb3J5IGJsb2NrIHNpemU6IDEyOE1CClsgICAgMi4zMzY2NjBdIGNs
aXBwZWQgW21lbSAweDA5YWZmMDAwLTB4MDlmZmZmZmZdIHRvIFttZW0gMHgwYTAwMDAwMC0weDA5
ZmZmZmZmXSBmb3IgZTgyMCBlbnRyeSBbbWVtIDB4MDlhZmYwMDAtMHgwOWZmZmZmZl0KWyAgICAy
LjMzOTgwM10gY2xpcHBlZCBbbWVtIDB4MGIwMDAwMDAtMHgwYjAyMGZmZl0gdG8gW21lbSAweDBi
MDIxMDAwLTB4MGIwMjBmZmZdIGZvciBlODIwIGVudHJ5IFttZW0gMHgwYjAwMDAwMC0weDBiMDIw
ZmZmXQpbICAgIDIuMzQzODAzXSBjbGlwcGVkIFttZW0gMHhhMDRlOTAwMC0weGE2NGU4ZmZmXSB0
byBbbWVtIDB4YTY0ZTkwMDAtMHhhNjRlOGZmZl0gZm9yIGU4MjAgZW50cnkgW21lbSAweGEwNGU5
MDAwLTB4YTY0ZThmZmZdClsgICAgMi4zNDc4MDNdIGNsaXBwZWQgW21lbSAweGE5NDdmMDAwLTB4
YWRkZmVmZmZdIHRvIFttZW0gMHhhZGRmZjAwMC0weGFkZGZlZmZmXSBmb3IgZTgyMCBlbnRyeSBb
bWVtIDB4YTk0N2YwMDAtMHhhZGRmZWZmZl0KWyAgICAyLjM1MTgwM10gY2xpcHBlZCBbbWVtIDB4
YWZmZmFmMTgtMHhmZmRmZmZmZl0gdG8gW21lbSAweGMwMDAwMDAwLTB4ZmZkZmZmZmZdIGZvciBl
ODIwIGVudHJ5IFttZW0gMHhhZmZmYjAwMC0weGJmZmZmZmZmXQpbICAgIDIuMzU1ODAzXSBjbGlw
cGVkIFttZW0gMHhjMDAwMDAwMC0weGZmZGZmZmZmXSB0byBbbWVtIDB4ZGYzMDAwMDAtMHhmZmRm
ZmZmZl0gZm9yIGU4MjAgZW50cnkgW21lbSAweGRmMjAwMDAwLTB4ZGYyZmZmZmZdClsgICAgMi4z
NTk4MDJdIGNsaXBwZWQgW21lbSAweGRmMzAwMDAwLTB4ZmZkZmZmZmZdIHRvIFttZW0gMHhmMDAw
MDAwMC0weGZmZGZmZmZmXSBmb3IgZTgyMCBlbnRyeSBbbWVtIDB4ZTAwMDAwMDAtMHhlZmZmZmZm
Zl0KWyAgICAyLjM2MzgwM10gY2xpcHBlZCBbbWVtIDB4ZjAwMDAwMDAtMHhmZmRmZmZmZl0gdG8g
W21lbSAweGYwMDAwMDAwLTB4ZmU5ZmZmZmZdIGZvciBlODIwIGVudHJ5IFttZW0gMHhmZWEwMDAw
MC0weGZlYWZmZmZmXQpbICAgIDIuMzY4MTE3XSBtZW1tYXBfaW5pdF96b25lX2RldmljZSBpbml0
aWFsaXNlZCAzMjc2OCBwYWdlcyBpbiAwbXMKWyAgICAyLjM3MTgzN10gQUNQSTogUE06IFJlZ2lz
dGVyaW5nIEFDUEkgTlZTIHJlZ2lvbiBbbWVtIDB4MDQwMDAwMDAtMHgwNDA0NWZmZl0gKDI4Njcy
MCBieXRlcykKWyAgICAyLjM3NTgwOV0gQUNQSTogUE06IFJlZ2lzdGVyaW5nIEFDUEkgTlZTIHJl
Z2lvbiBbbWVtIDB4YTc0N2YwMDAtMHhhOTQ3ZWZmZl0gKDMzNTU0NDMyIGJ5dGVzKQpbICAgIDIu
MzgwMTIwXSBjbG9ja3NvdXJjZTogamlmZmllczogbWFzazogMHhmZmZmZmZmZiBtYXhfY3ljbGVz
OiAweGZmZmZmZmZmLCBtYXhfaWRsZV9uczogNzY0NTA0MTc4NTEwMDAwMCBucwpbICAgIDIuMzgz
ODM2XSBmdXRleCBoYXNoIHRhYmxlIGVudHJpZXM6IDE2Mzg0IChvcmRlcjogOCwgMTA0ODU3NiBi
eXRlcywgbGluZWFyKQpbICAgIDIuMzg3ODY5XSBwaW5jdHJsIGNvcmU6IGluaXRpYWxpemVkIHBp
bmN0cmwgc3Vic3lzdGVtClsgICAgMi4zOTMwOThdIE5FVDogUmVnaXN0ZXJlZCBQRl9ORVRMSU5L
L1BGX1JPVVRFIHByb3RvY29sIGZhbWlseQpbICAgIDIuMzk1ODE4XSB4ZW46Z3JhbnRfdGFibGU6
IEdyYW50IHRhYmxlcyB1c2luZyB2ZXJzaW9uIDEgbGF5b3V0ClsgICAgMi4zOTk4MzFdIEdyYW50
IHRhYmxlIGluaXRpYWxpemVkClsgICAgMi40MDQyODBdIERNQTogcHJlYWxsb2NhdGVkIDEwMjQg
S2lCIEdGUF9LRVJORUwgcG9vbCBmb3IgYXRvbWljIGFsbG9jYXRpb25zClsgICAgMi40MDc4MzFd
IERNQTogcHJlYWxsb2NhdGVkIDEwMjQgS2lCIEdGUF9LRVJORUx8R0ZQX0RNQSBwb29sIGZvciBh
dG9taWMgYWxsb2NhdGlvbnMKWyAgICAyLjQxMTgzMV0gRE1BOiBwcmVhbGxvY2F0ZWQgMTAyNCBL
aUIgR0ZQX0tFUk5FTHxHRlBfRE1BMzIgcG9vbCBmb3IgYXRvbWljIGFsbG9jYXRpb25zClsgICAg
Mi40MTU4MDddIGF1ZGl0OiBpbml0aWFsaXppbmcgbmV0bGluayBzdWJzeXMgKGRpc2FibGVkKQpb
ICAgIDIuNDE5ODI4XSBhdWRpdDogdHlwZT0yMDAwIGF1ZGl0KDE3MDU2NDYzMTguNTMxOjEpOiBz
dGF0ZT1pbml0aWFsaXplZCBhdWRpdF9lbmFibGVkPTAgcmVzPTEKWyAgICAyLjQxOTg3MV0gdGhl
cm1hbF9zeXM6IFJlZ2lzdGVyZWQgdGhlcm1hbCBnb3Zlcm5vciAnZmFpcl9zaGFyZScKWyAgICAy
LjQyMzgxMF0gdGhlcm1hbF9zeXM6IFJlZ2lzdGVyZWQgdGhlcm1hbCBnb3Zlcm5vciAnYmFuZ19i
YW5nJwpbICAgIDIuNDI3ODAyXSB0aGVybWFsX3N5czogUmVnaXN0ZXJlZCB0aGVybWFsIGdvdmVy
bm9yICdzdGVwX3dpc2UnClsgICAgMi40MzE4MDFdIHRoZXJtYWxfc3lzOiBSZWdpc3RlcmVkIHRo
ZXJtYWwgZ292ZXJub3IgJ3VzZXJfc3BhY2UnClsgICAgMi40MzU4MDJdIHRoZXJtYWxfc3lzOiBS
ZWdpc3RlcmVkIHRoZXJtYWwgZ292ZXJub3IgJ3Bvd2VyX2FsbG9jYXRvcicKWyAgICAyLjQzOTgy
NV0gY3B1aWRsZTogdXNpbmcgZ292ZXJub3IgbGFkZGVyClsgICAgMi40NTE4MTldIGNwdWlkbGU6
IHVzaW5nIGdvdmVybm9yIG1lbnUKWyAgICAyLjQ1NTg1M10gYWNwaXBocDogQUNQSSBIb3QgUGx1
ZyBQQ0kgQ29udHJvbGxlciBEcml2ZXIgdmVyc2lvbjogMC41ClsgICAgMi40NjAxODVdIFBDSTog
TU1DT05GSUcgZm9yIGRvbWFpbiAwMDAwIFtidXMgMDAtZmZdIGF0IFttZW0gMHhlMDAwMDAwMC0w
eGVmZmZmZmZmXSAoYmFzZSAweGUwMDAwMDAwKQpbICAgIDIuNDYzODA1XSBQQ0k6IE1NQ09ORklH
IGF0IFttZW0gMHhlMDAwMDAwMC0weGVmZmZmZmZmXSByZXNlcnZlZCBpbiBFODIwClsgICAgMi40
Njc4MjJdIFBDSTogVXNpbmcgY29uZmlndXJhdGlvbiB0eXBlIDEgZm9yIGJhc2UgYWNjZXNzClsg
ICAgMi40NzMwNTRdIGtwcm9iZXM6IGtwcm9iZSBqdW1wLW9wdGltaXphdGlvbiBpcyBlbmFibGVk
LiBBbGwga3Byb2JlcyBhcmUgb3B0aW1pemVkIGlmIHBvc3NpYmxlLgpbICAgIDIuNDc1ODI1XSBI
dWdlVExCOiByZWdpc3RlcmVkIDEuMDAgR2lCIHBhZ2Ugc2l6ZSwgcHJlLWFsbG9jYXRlZCAwIHBh
Z2VzClsgICAgMi40Nzk4MDJdIEh1Z2VUTEI6IDE2MzgwIEtpQiB2bWVtbWFwIGNhbiBiZSBmcmVl
ZCBmb3IgYSAxLjAwIEdpQiBwYWdlClsgICAgMi40ODM4MDRdIEh1Z2VUTEI6IHJlZ2lzdGVyZWQg
Mi4wMCBNaUIgcGFnZSBzaXplLCBwcmUtYWxsb2NhdGVkIDAgcGFnZXMKWyAgICAyLjQ4NzgwMl0g
SHVnZVRMQjogMjggS2lCIHZtZW1tYXAgY2FuIGJlIGZyZWVkIGZvciBhIDIuMDAgTWlCIHBhZ2UK
WyAgICAyLjQ5MTg2N10gQUNQSTogQWRkZWQgX09TSShNb2R1bGUgRGV2aWNlKQpbICAgIDIuNDk1
ODA3XSBBQ1BJOiBBZGRlZCBfT1NJKFByb2Nlc3NvciBEZXZpY2UpClsgICAgMi40OTk4MDRdIEFD
UEk6IEFkZGVkIF9PU0koMy4wIF9TQ1AgRXh0ZW5zaW9ucykKWyAgICAyLjUwMzgwMl0gQUNQSTog
QWRkZWQgX09TSShQcm9jZXNzb3IgQWdncmVnYXRvciBEZXZpY2UpClsgICAgMi41MzQzNDddIEFD
UEk6IDE3IEFDUEkgQU1MIHRhYmxlcyBzdWNjZXNzZnVsbHkgYWNxdWlyZWQgYW5kIGxvYWRlZApb
ICAgIDIuNTM4NzgwXSBBQ1BJOiBJbnRlcnByZXRlciBlbmFibGVkClsgICAgMi41Mzk4MTldIEFD
UEk6IFBNOiAoc3VwcG9ydHMgUzAgUzMgUzQgUzUpClsgICAgMi41NDM4MDNdIEFDUEk6IFVzaW5n
IElPQVBJQyBmb3IgaW50ZXJydXB0IHJvdXRpbmcKWyAgICAyLjU0ODEyNF0gUENJOiBVc2luZyBo
b3N0IGJyaWRnZSB3aW5kb3dzIGZyb20gQUNQSTsgaWYgbmVjZXNzYXJ5LCB1c2UgInBjaT1ub2Ny
cyIgYW5kIHJlcG9ydCBhIGJ1ZwpbICAgIDIuNTUxODAzXSBQQ0k6IElnbm9yaW5nIEU4MjAgcmVz
ZXJ2YXRpb25zIGZvciBob3N0IGJyaWRnZSB3aW5kb3dzClsgICAgMi41NTYxNjRdIEFDUEk6IEVu
YWJsZWQgNCBHUEVzIGluIGJsb2NrIDAwIHRvIDFGClsgICAgMi41Nzc0MzFdIEFDUEk6IFBNOiBQ
b3dlciBSZXNvdXJjZSBbUFJXTF0KWyAgICAyLjU3OTgxOV0gQUNQSTogUE06IFBvd2VyIFJlc291
cmNlIFtQUldCXQpbICAgIDIuNTg0Mzg0XSBBQ1BJOiBQQ0kgUm9vdCBCcmlkZ2UgW1BDSTNdIChk
b21haW4gMDAwMCBbYnVzIGMwLWZmXSkKWyAgICAyLjU4NzgwNV0gYWNwaSBQTlAwQTA4OjAwOiBf
T1NDOiBPUyBzdXBwb3J0cyBbRXh0ZW5kZWRDb25maWcgQVNQTSBDbG9ja1BNIFNlZ21lbnRzIE1T
SSBIUFgtVHlwZTNdClsgICAgMi41OTE5MzBdIGFjcGkgUE5QMEEwODowMDogX09TQzogcGxhdGZv
cm0gZG9lcyBub3Qgc3VwcG9ydCBbQUVSIExUUl0KWyAgICAyLjU5NjAyNV0gYWNwaSBQTlAwQTA4
OjAwOiBfT1NDOiBPUyBub3cgY29udHJvbHMgW1BDSWVIb3RwbHVnIFNIUENIb3RwbHVnIFBNRSBQ
Q0llQ2FwYWJpbGl0eV0KWyAgICAyLjYwMDExNF0gUENJIGhvc3QgYnJpZGdlIHRvIGJ1cyAwMDAw
OmMwClsgICAgMi42MDM4MDJdIHBjaV9idXMgMDAwMDpjMDogcm9vdCBidXMgcmVzb3VyY2UgW2lv
ICAweGEwMDAtMHhmZmZmIHdpbmRvd10KWyAgICAyLjYwNzgwMl0gcGNpX2J1cyAwMDAwOmMwOiBy
b290IGJ1cyByZXNvdXJjZSBbbWVtIDB4ZDQwMDAwMDAtMHhkNWZmZmZmZiB3aW5kb3ddClsgICAg
Mi42MTE4MDJdIHBjaV9idXMgMDAwMDpjMDogcm9vdCBidXMgcmVzb3VyY2UgW21lbSAweDEwMDIw
NDAwMDAwLTB4MTU5YjMzZmZmZmYgd2luZG93XQpbICAgIDIuNjE1ODAzXSBwY2lfYnVzIDAwMDA6
YzA6IHJvb3QgYnVzIHJlc291cmNlIFtidXMgYzAtZmZdClsgICAgMi42MTk4MjddIHBjaSAwMDAw
OmMwOjAwLjA6IFsxMDIyOjE0YTRdIHR5cGUgMDAgY2xhc3MgMHgwNjAwMDAKWyAgICAyLjYyNzUz
Nl0gcGNpIDAwMDA6YzA6MDAuMjogWzEwMjI6MTQ5ZV0gdHlwZSAwMCBjbGFzcyAweDA4MDYwMApb
ICAgIDIuNjMxMzc1XSBwY2kgMDAwMDpjMDowMC4zOiBbMTAyMjoxNGE2XSB0eXBlIDAwIGNsYXNz
IDB4MDgwNzAwClsgICAgMi42MzE4ODBdIHBjaSAwMDAwOmMwOjAwLjM6IGVuYWJsaW5nIEV4dGVu
ZGVkIFRhZ3MKWyAgICAyLjYzOTU3M10gcGNpIDAwMDA6YzA6MDEuMDogWzEwMjI6MTQ5Zl0gdHlw
ZSAwMCBjbGFzcyAweDA2MDAwMApbICAgIDIuNjQzNDM3XSBwY2kgMDAwMDpjMDowMi4wOiBbMTAy
MjoxNDlmXSB0eXBlIDAwIGNsYXNzIDB4MDYwMDAwClsgICAgMi42NDczNzldIHBjaSAwMDAwOmMw
OjAzLjA6IFsxMDIyOjE0OWZdIHR5cGUgMDAgY2xhc3MgMHgwNjAwMDAKWyAgICAyLjY1MTQzMF0g
cGNpIDAwMDA6YzA6MDQuMDogWzEwMjI6MTQ5Zl0gdHlwZSAwMCBjbGFzcyAweDA2MDAwMApbICAg
IDIuNjU1NDAzXSBwY2kgMDAwMDpjMDowNS4wOiBbMTAyMjoxNDlmXSB0eXBlIDAwIGNsYXNzIDB4
MDYwMDAwClsgICAgMi42NTk0MDldIHBjaSAwMDAwOmMwOjA3LjA6IFsxMDIyOjE0OWZdIHR5cGUg
MDAgY2xhc3MgMHgwNjAwMDAKWyAgICAyLjY2MzM0NF0gcGNpIDAwMDA6YzA6MDcuMTogWzEwMjI6
MTRhN10gdHlwZSAwMSBjbGFzcyAweDA2MDQwMApbICAgIDIuNjYzODc5XSBwY2kgMDAwMDpjMDow
Ny4xOiBlbmFibGluZyBFeHRlbmRlZCBUYWdzClsgICAgMi42Njc5MjZdIHBjaSAwMDAwOmMwOjA3
LjE6IFBNRSMgc3VwcG9ydGVkIGZyb20gRDAgRDNob3QgRDNjb2xkClsgICAgMi42NzU2NzddIHBj
aSAwMDAwOmMxOjAwLjA6IFsxMDIyOjE0YWNdIHR5cGUgMDAgY2xhc3MgMHgxMzAwMDAKWyAgICAy
LjY3NTg2N10gcGNpIDAwMDA6YzE6MDAuMDogZW5hYmxpbmcgRXh0ZW5kZWQgVGFncwpbICAgIDIu
NjgzNTc4XSBwY2kgMDAwMDpjMTowMC40OiBbMTAyMjoxNGM5XSB0eXBlIDAwIGNsYXNzIDB4MGMw
MzMwClsgICAgMi42ODYyNDhdIHBjaSAwMDAwOmMxOjAwLjQ6IHJlZyAweDEwOiBbbWVtIDB4ZDVm
MDAwMDAtMHhkNWZmZmZmZiA2NGJpdF0KWyAgICAyLjY5ODMzOF0gcGNpIDAwMDA6YzE6MDAuNDog
ZW5hYmxpbmcgRXh0ZW5kZWQgVGFncwpbICAgIDIuNjk5ODg5XSBwY2kgMDAwMDpjMTowMC40OiBQ
TUUjIHN1cHBvcnRlZCBmcm9tIEQwIEQzaG90IEQzY29sZApbICAgIDIuNzA3MzkxXSBwY2kgMDAw
MDpjMDowNy4xOiBQQ0kgYnJpZGdlIHRvIFtidXMgYzFdClsgICAgMi43MDc4MDldIHBjaSAwMDAw
OmMwOjA3LjE6ICAgYnJpZGdlIHdpbmRvdyBbbWVtIDB4ZDVmMDAwMDAtMHhkNWZmZmZmZl0KWyAg
ICAyLjcxMjM0MF0gQUNQSTogUENJIFJvb3QgQnJpZGdlIFtQQ0kyXSAoZG9tYWluIDAwMDAgW2J1
cyA4MC1iZl0pClsgICAgMi43MTU4MDNdIGFjcGkgUE5QMEEwODowMTogX09TQzogT1Mgc3VwcG9y
dHMgW0V4dGVuZGVkQ29uZmlnIEFTUE0gQ2xvY2tQTSBTZWdtZW50cyBNU0kgSFBYLVR5cGUzXQpb
ICAgIDIuNzE5OTMyXSBhY3BpIFBOUDBBMDg6MDE6IF9PU0M6IHBsYXRmb3JtIGRvZXMgbm90IHN1
cHBvcnQgW0FFUiBMVFJdClsgICAgMi43MjM5OTddIGFjcGkgUE5QMEEwODowMTogX09TQzogT1Mg
bm93IGNvbnRyb2xzIFtQQ0llSG90cGx1ZyBTSFBDSG90cGx1ZyBQTUUgUENJZUNhcGFiaWxpdHld
ClsgICAgMi43MjgwNzRdIFBDSSBob3N0IGJyaWRnZSB0byBidXMgMDAwMDo4MApbICAgIDIuNzMx
ODAxXSBwY2lfYnVzIDAwMDA6ODA6IHJvb3QgYnVzIHJlc291cmNlIFtpbyAgMHg3MDAwLTB4OWZm
ZiB3aW5kb3ddClsgICAgMi43MzU4MDBdIHBjaV9idXMgMDAwMDo4MDogcm9vdCBidXMgcmVzb3Vy
Y2UgW21lbSAweGNhMDAwMDAwLTB4Y2FmZmZmZmYgd2luZG93XQpbICAgIDIuNzM5ODAxXSBwY2lf
YnVzIDAwMDA6ODA6IHJvb3QgYnVzIHJlc291cmNlIFttZW0gMHgyYzAyMDQwMDAwMC0weDMxOWIz
M2ZmZmZmIHdpbmRvd10KWyAgICAyLjc0MzgwMV0gcGNpX2J1cyAwMDAwOjgwOiByb290IGJ1cyBy
ZXNvdXJjZSBbYnVzIDgwLWJmXQpbICAgIDIuNzQ3ODE4XSBwY2kgMDAwMDo4MDowMC4wOiBbMTAy
MjoxNGE0XSB0eXBlIDAwIGNsYXNzIDB4MDYwMDAwClsgICAgMi43NTU0MTBdIHBjaSAwMDAwOjgw
OjAwLjI6IFsxMDIyOjE0OWVdIHR5cGUgMDAgY2xhc3MgMHgwODA2MDAKWyAgICAyLjc1OTQ1NF0g
cGNpIDAwMDA6ODA6MDAuMzogWzEwMjI6MTRhNl0gdHlwZSAwMCBjbGFzcyAweDA4MDcwMApbICAg
IDIuNzU5ODYzXSBwY2kgMDAwMDo4MDowMC4zOiBlbmFibGluZyBFeHRlbmRlZCBUYWdzClsgICAg
Mi43Njc1MzZdIHBjaSAwMDAwOjgwOjAxLjA6IFsxMDIyOjE0OWZdIHR5cGUgMDAgY2xhc3MgMHgw
NjAwMDAKWyAgICAyLjc3MTQyNF0gcGNpIDAwMDA6ODA6MDEuMjogWzEwMjI6MTRhYl0gdHlwZSAw
MSBjbGFzcyAweDA2MDQwMApbICAgIDIuNzcyMDMwXSBwY2kgMDAwMDo4MDowMS4yOiBQTUUjIHN1
cHBvcnRlZCBmcm9tIEQwIEQzaG90IEQzY29sZApbICAgIDIuNzc5NzI1XSBwY2kgMDAwMDo4MDow
MS4zOiBbMTAyMjoxNGFiXSB0eXBlIDAxIGNsYXNzIDB4MDYwNDAwClsgICAgMi43Nzk4NjVdIHBj
aSAwMDAwOjgwOjAxLjM6IGVuYWJsaW5nIEV4dGVuZGVkIFRhZ3MKWyAgICAyLjc4Mzk2M10gcGNp
IDAwMDA6ODA6MDEuMzogUE1FIyBzdXBwb3J0ZWQgZnJvbSBEMCBEM2hvdCBEM2NvbGQKWyAgICAy
Ljc5MTcyM10gcGNpIDAwMDA6ODA6MDIuMDogWzEwMjI6MTQ5Zl0gdHlwZSAwMCBjbGFzcyAweDA2
MDAwMApbICAgIDIuNzk1NDQwXSBwY2kgMDAwMDo4MDowMy4wOiBbMTAyMjoxNDlmXSB0eXBlIDAw
IGNsYXNzIDB4MDYwMDAwClsgICAgMi43OTkzNzddIHBjaSAwMDAwOjgwOjAzLjE6IFsxMDIyOjE0
YTVdIHR5cGUgMDEgY2xhc3MgMHgwNjA0MDAKWyAgICAyLjgwMDAwNF0gcGNpIDAwMDA6ODA6MDMu
MTogUE1FIyBzdXBwb3J0ZWQgZnJvbSBEMCBEM2hvdCBEM2NvbGQKWyAgICAyLjgwNzU4OF0gcGNp
IDAwMDA6ODA6MDMuMjogWzEwMjI6MTRhNV0gdHlwZSAwMSBjbGFzcyAweDA2MDQwMApbICAgIDIu
ODA3ODYxXSBwY2kgMDAwMDo4MDowMy4yOiBlbmFibGluZyBFeHRlbmRlZCBUYWdzClsgICAgMi44
MTE5NDVdIHBjaSAwMDAwOjgwOjAzLjI6IFBNRSMgc3VwcG9ydGVkIGZyb20gRDAgRDNob3QgRDNj
b2xkClsgICAgMi44MTk1NjZdIHBjaSAwMDAwOjgwOjA0LjA6IFsxMDIyOjE0OWZdIHR5cGUgMDAg
Y2xhc3MgMHgwNjAwMDAKWyAgICAyLjgyMzM1Ml0gcGNpIDAwMDA6ODA6MDUuMDogWzEwMjI6MTQ5
Zl0gdHlwZSAwMCBjbGFzcyAweDA2MDAwMApbICAgIDIuODI3NDQ4XSBwY2kgMDAwMDo4MDowNy4w
OiBbMTAyMjoxNDlmXSB0eXBlIDAwIGNsYXNzIDB4MDYwMDAwClsgICAgMi44MzEyNzFdIHBjaSAw
MDAwOjgwOjA3LjE6IFsxMDIyOjE0YTddIHR5cGUgMDEgY2xhc3MgMHgwNjA0MDAKWyAgICAyLjgz
MTg1N10gcGNpIDAwMDA6ODA6MDcuMTogZW5hYmxpbmcgRXh0ZW5kZWQgVGFncwpbICAgIDIuODM1
ODk1XSBwY2kgMDAwMDo4MDowNy4xOiBQTUUjIHN1cHBvcnRlZCBmcm9tIEQwIEQzaG90IEQzY29s
ZApbICAgIDIuODQzNTUyXSBwY2kgMDAwMDo4MTowMC4wOiBbMTQ0ZDphODBjXSB0eXBlIDAwIGNs
YXNzIDB4MDEwODAyClsgICAgMi44NDM4NjBdIHBjaSAwMDAwOjgxOjAwLjA6IHJlZyAweDEwOiBb
bWVtIDB4Y2FmMDAwMDAtMHhjYWYwM2ZmZiA2NGJpdF0KWyAgICAyLjg1MTgxMF0gcGNpIDAwMDA6
ODA6MDEuMjogUENJIGJyaWRnZSB0byBbYnVzIDgxXQpbICAgIDIuODU1ODExXSBwY2kgMDAwMDo4
MDowMS4yOiAgIGJyaWRnZSB3aW5kb3cgW21lbSAweGNhZjAwMDAwLTB4Y2FmZmZmZmZdClsgICAg
Mi44NTk4OThdIHBjaSAwMDAwOjgyOjAwLjA6IFsxYjczOjExMDBdIHR5cGUgMDAgY2xhc3MgMHgw
YzAzMzAKWyAgICAyLjg2Mzk4N10gcGNpIDAwMDA6ODI6MDAuMDogcmVnIDB4MTA6IFttZW0gMHhj
YWUwMDAwMC0weGNhZTBmZmZmIDY0Yml0XQpbICAgIDIuODY3OTc4XSBwY2kgMDAwMDo4MjowMC4w
OiByZWcgMHgxODogW21lbSAweGNhZTExMDAwLTB4Y2FlMTFmZmYgNjRiaXRdClsgICAgMi44NzE5
NzhdIHBjaSAwMDAwOjgyOjAwLjA6IHJlZyAweDIwOiBbbWVtIDB4Y2FlMTAwMDAtMHhjYWUxMGZm
ZiA2NGJpdF0KWyAgICAyLjg3NjA0OV0gcGNpIDAwMDA6ODI6MDAuMDogc3VwcG9ydHMgRDEKWyAg
ICAyLjg3OTgwMV0gcGNpIDAwMDA6ODI6MDAuMDogUE1FIyBzdXBwb3J0ZWQgZnJvbSBEMCBEMSBE
M2hvdApbICAgIDIuODg3MzMxXSBwY2kgMDAwMDo4MDowMS4zOiBQQ0kgYnJpZGdlIHRvIFtidXMg
ODJdClsgICAgMi44ODc4MDhdIHBjaSAwMDAwOjgwOjAxLjM6ICAgYnJpZGdlIHdpbmRvdyBbbWVt
IDB4Y2FlMDAwMDAtMHhjYWVmZmZmZl0KWyAgICAyLjg5MTg5N10gcGNpIDAwMDA6ODM6MDAuMDog
WzFiMjE6MzI0Ml0gdHlwZSAwMCBjbGFzcyAweDBjMDMzMApbICAgIDIuODk1OTY4XSBwY2kgMDAw
MDo4MzowMC4wOiByZWcgMHgxMDogW21lbSAweGNhZDAwMDAwLTB4Y2FkMDdmZmYgNjRiaXRdClsg
ICAgMi45MDA1ODZdIHBjaSAwMDAwOjgzOjAwLjA6IFBNRSMgc3VwcG9ydGVkIGZyb20gRDAgRDNo
b3QgRDNjb2xkClsgICAgMi45MDc1NzJdIHBjaSAwMDAwOjgwOjAzLjE6IFBDSSBicmlkZ2UgdG8g
W2J1cyA4M10KWyAgICAyLjkwNzgwOV0gcGNpIDAwMDA6ODA6MDMuMTogICBicmlkZ2Ugd2luZG93
IFttZW0gMHhjYWQwMDAwMC0weGNhZGZmZmZmXQpbICAgIDIuOTExOTA4XSBwY2kgMDAwMDo4NDow
MC4wOiBbMWIyMToxMTgyXSB0eXBlIDAxIGNsYXNzIDB4MDYwNDAwClsgICAgMi45MTU4NzddIHBj
aSAwMDAwOjg0OjAwLjA6IGVuYWJsaW5nIEV4dGVuZGVkIFRhZ3MKWyAgICAyLjkxOTg5N10gcGNp
IDAwMDA6ODQ6MDAuMDogUE1FIyBzdXBwb3J0ZWQgZnJvbSBEMCBEM2hvdCBEM2NvbGQKWyAgICAy
LjkyNzQ4OF0gcGNpIDAwMDA6ODA6MDMuMjogUENJIGJyaWRnZSB0byBbYnVzIDg0LTg3XQpbICAg
IDIuOTI3ODA2XSBwY2kgMDAwMDo4MDowMy4yOiAgIGJyaWRnZSB3aW5kb3cgW2lvICAweDgwMDAt
MHg5ZmZmXQpbICAgIDIuOTMxODAzXSBwY2kgMDAwMDo4MDowMy4yOiAgIGJyaWRnZSB3aW5kb3cg
W21lbSAweGNhYjAwMDAwLTB4Y2FjZmZmZmZdClsgICAgMi45MzU4MDZdIHBjaSAwMDAwOjgwOjAz
LjI6ICAgYnJpZGdlIHdpbmRvdyBbbWVtIDB4MzE5YjMyMDAwMDAtMHgzMTliMzNmZmZmZiA2NGJp
dCBwcmVmXQpbICAgIDIuOTM5ODY5XSBwY2kgMDAwMDo4NTowMy4wOiBbMWIyMToxMTgyXSB0eXBl
IDAxIGNsYXNzIDB4MDYwNDAwClsgICAgMi45NDM4ODBdIHBjaSAwMDAwOjg1OjAzLjA6IGVuYWJs
aW5nIEV4dGVuZGVkIFRhZ3MKWyAgICAyLjk0Nzg5MF0gcGNpIDAwMDA6ODU6MDMuMDogUE1FIyBz
dXBwb3J0ZWQgZnJvbSBEMCBEM2hvdCBEM2NvbGQKWyAgICAyLjk1NTQ1Nl0gcGNpIDAwMDA6ODU6
MDcuMDogWzFiMjE6MTE4Ml0gdHlwZSAwMSBjbGFzcyAweDA2MDQwMApbICAgIDIuOTU1ODc5XSBw
Y2kgMDAwMDo4NTowNy4wOiBlbmFibGluZyBFeHRlbmRlZCBUYWdzClsgICAgMi45NTk4ODldIHBj
aSAwMDAwOjg1OjA3LjA6IFBNRSMgc3VwcG9ydGVkIGZyb20gRDAgRDNob3QgRDNjb2xkClsgICAg
Mi45Njc1MDBdIHBjaSAwMDAwOjg0OjAwLjA6IFBDSSBicmlkZ2UgdG8gW2J1cyA4NS04N10KWyAg
ICAyLjk2NzgwOF0gcGNpIDAwMDA6ODQ6MDAuMDogICBicmlkZ2Ugd2luZG93IFtpbyAgMHg4MDAw
LTB4OWZmZl0KWyAgICAyLjk3MTgwNF0gcGNpIDAwMDA6ODQ6MDAuMDogICBicmlkZ2Ugd2luZG93
IFttZW0gMHhjYWIwMDAwMC0weGNhY2ZmZmZmXQpbICAgIDIuOTc1ODA3XSBwY2kgMDAwMDo4NDow
MC4wOiAgIGJyaWRnZSB3aW5kb3cgW21lbSAweDMxOWIzMjAwMDAwLTB4MzE5YjMzZmZmZmYgNjRi
aXQgcHJlZl0KWyAgICAyLjk3OTg3NV0gcGNpIDAwMDA6ODY6MDAuMDogWzEwZWM6ODE2OF0gdHlw
ZSAwMCBjbGFzcyAweDAyMDAwMApbICAgIDIuOTgzODI3XSBwY2kgMDAwMDo4NjowMC4wOiByZWcg
MHgxMDogW2lvICAweDkwMDAtMHg5MGZmXQpbICAgIDIuOTg3ODM0XSBwY2kgMDAwMDo4NjowMC4w
OiByZWcgMHgxODogW21lbSAweGNhYzAwMDAwLTB4Y2FjMDBmZmYgNjRiaXRdClsgICAgMi45OTE4
MjJdIHBjaSAwMDAwOjg2OjAwLjA6IHJlZyAweDIwOiBbbWVtIDB4MzE5YjMzMDAwMDAtMHgzMTli
MzMwM2ZmZiA2NGJpdCBwcmVmXQpbICAgIDIuOTk1OTY2XSBwY2kgMDAwMDo4NjowMC4wOiBzdXBw
b3J0cyBEMSBEMgpbICAgIDIuOTk5ODAxXSBwY2kgMDAwMDo4NjowMC4wOiBQTUUjIHN1cHBvcnRl
ZCBmcm9tIEQwIEQxIEQyIEQzaG90IEQzY29sZApbICAgIDMuMDA3NTQwXSBwY2kgMDAwMDo4NTow
My4wOiBQQ0kgYnJpZGdlIHRvIFtidXMgODZdClsgICAgMy4wMDc4MDddIHBjaSAwMDAwOjg1OjAz
LjA6ICAgYnJpZGdlIHdpbmRvdyBbaW8gIDB4OTAwMC0weDlmZmZdClsgICAgMy4wMTE4MDRdIHBj
aSAwMDAwOjg1OjAzLjA6ICAgYnJpZGdlIHdpbmRvdyBbbWVtIDB4Y2FjMDAwMDAtMHhjYWNmZmZm
Zl0KWyAgICAzLjAxNTgwOF0gcGNpIDAwMDA6ODU6MDMuMDogICBicmlkZ2Ugd2luZG93IFttZW0g
MHgzMTliMzMwMDAwMC0weDMxOWIzM2ZmZmZmIDY0Yml0IHByZWZdClsgICAgMy4wMTk4NzZdIHBj
aSAwMDAwOjg3OjAwLjA6IFsxMGVjOjgxNjhdIHR5cGUgMDAgY2xhc3MgMHgwMjAwMDAKWyAgICAz
LjAyMzgyN10gcGNpIDAwMDA6ODc6MDAuMDogcmVnIDB4MTA6IFtpbyAgMHg4MDAwLTB4ODBmZl0K
WyAgICAzLjAyNzgzNF0gcGNpIDAwMDA6ODc6MDAuMDogcmVnIDB4MTg6IFttZW0gMHhjYWIwMDAw
MC0weGNhYjAwZmZmIDY0Yml0XQpbICAgIDMuMDMxODIzXSBwY2kgMDAwMDo4NzowMC4wOiByZWcg
MHgyMDogW21lbSAweDMxOWIzMjAwMDAwLTB4MzE5YjMyMDNmZmYgNjRiaXQgcHJlZl0KWyAgICAz
LjAzNTk3NF0gcGNpIDAwMDA6ODc6MDAuMDogc3VwcG9ydHMgRDEgRDIKWyAgICAzLjAzOTgwMF0g
cGNpIDAwMDA6ODc6MDAuMDogUE1FIyBzdXBwb3J0ZWQgZnJvbSBEMCBEMSBEMiBEM2hvdCBEM2Nv
bGQKWyAgICAzLjA0NzUxMl0gcGNpIDAwMDA6ODU6MDcuMDogUENJIGJyaWRnZSB0byBbYnVzIDg3
XQpbICAgIDMuMDQ3ODA3XSBwY2kgMDAwMDo4NTowNy4wOiAgIGJyaWRnZSB3aW5kb3cgW2lvICAw
eDgwMDAtMHg4ZmZmXQpbICAgIDMuMDUxODA1XSBwY2kgMDAwMDo4NTowNy4wOiAgIGJyaWRnZSB3
aW5kb3cgW21lbSAweGNhYjAwMDAwLTB4Y2FiZmZmZmZdClsgICAgMy4wNTU4MDhdIHBjaSAwMDAw
Ojg1OjA3LjA6ICAgYnJpZGdlIHdpbmRvdyBbbWVtIDB4MzE5YjMyMDAwMDAtMHgzMTliMzJmZmZm
ZiA2NGJpdCBwcmVmXQpbICAgIDMuMDU5OTEzXSBwY2kgMDAwMDo4ODowMC4wOiBbMTAyMjoxNGFj
XSB0eXBlIDAwIGNsYXNzIDB4MTMwMDAwClsgICAgMy4wNjM4NTRdIHBjaSAwMDAwOjg4OjAwLjA6
IGVuYWJsaW5nIEV4dGVuZGVkIFRhZ3MKWyAgICAzLjA3MTUzOF0gcGNpIDAwMDA6ODA6MDcuMTog
UENJIGJyaWRnZSB0byBbYnVzIDg4XQpbICAgIDMuMDcyMjMwXSBBQ1BJOiBQQ0kgUm9vdCBCcmlk
Z2UgW1BDSTBdIChkb21haW4gMDAwMCBbYnVzIDAwLTNmXSkKWyAgICAzLjA3NTgwM10gYWNwaSBQ
TlAwQTA4OjAyOiBfT1NDOiBPUyBzdXBwb3J0cyBbRXh0ZW5kZWRDb25maWcgQVNQTSBDbG9ja1BN
IFNlZ21lbnRzIE1TSSBIUFgtVHlwZTNdClsgICAgMy4wNzk5MDldIGFjcGkgUE5QMEEwODowMjog
X09TQzogcGxhdGZvcm0gZG9lcyBub3Qgc3VwcG9ydCBbQUVSIExUUl0KWyAgICAzLjA4NDAwM10g
YWNwaSBQTlAwQTA4OjAyOiBfT1NDOiBPUyBub3cgY29udHJvbHMgW1BDSWVIb3RwbHVnIFNIUENI
b3RwbHVnIFBNRSBQQ0llQ2FwYWJpbGl0eV0KWyAgICAzLjA4ODIwM10gUENJIGhvc3QgYnJpZGdl
IHRvIGJ1cyAwMDAwOjAwClsgICAgMy4wOTE4MDFdIHBjaV9idXMgMDAwMDowMDogcm9vdCBidXMg
cmVzb3VyY2UgW2lvICAweDAwMDAtMHgwMmU3IHdpbmRvd10KWyAgICAzLjA5NTgwMl0gcGNpX2J1
cyAwMDAwOjAwOiByb290IGJ1cyByZXNvdXJjZSBbaW8gIDB4MDMwMC0weDAzYWYgd2luZG93XQpb
ICAgIDMuMDk5ODAxXSBwY2lfYnVzIDAwMDA6MDA6IHJvb3QgYnVzIHJlc291cmNlIFtpbyAgMHgw
NDAwLTB4MGNmNyB3aW5kb3ddClsgICAgMy4xMDM4MDFdIHBjaV9idXMgMDAwMDowMDogcm9vdCBi
dXMgcmVzb3VyY2UgW2lvICAweDAzYjAtMHgwM2RmIHdpbmRvd10KWyAgICAzLjEwNzgwMV0gcGNp
X2J1cyAwMDAwOjAwOiByb290IGJ1cyByZXNvdXJjZSBbaW8gIDB4MTAwMC0weDNmZmYgd2luZG93
XQpbICAgIDMuMTExODAxXSBwY2lfYnVzIDAwMDA6MDA6IHJvb3QgYnVzIHJlc291cmNlIFttZW0g
MHgwMDBhMDAwMC0weDAwMGRmZmZmIHdpbmRvd10KWyAgICAzLjExNTgwMV0gcGNpX2J1cyAwMDAw
OjAwOiByb290IGJ1cyByZXNvdXJjZSBbbWVtIDB4ZjAwMDAwMDAtMHhmMGZmZmZmZiB3aW5kb3dd
ClsgICAgMy4xMTk4MDFdIHBjaV9idXMgMDAwMDowMDogcm9vdCBidXMgcmVzb3VyY2UgW21lbSAw
eDQ4MDIwNDAwMDAwLTB4NGQ5YjMzZmZmZmYgd2luZG93XQpbICAgIDMuMTIzODAwXSBwY2lfYnVz
IDAwMDA6MDA6IHJvb3QgYnVzIHJlc291cmNlIFtidXMgMDAtM2ZdClsgICAgMy4xMjc4MjBdIHBj
aSAwMDAwOjAwOjAwLjA6IFsxMDIyOjE0YTRdIHR5cGUgMDAgY2xhc3MgMHgwNjAwMDAKWyAgICAz
LjEzNTQ3OV0gcGNpIDAwMDA6MDA6MDAuMjogWzEwMjI6MTQ5ZV0gdHlwZSAwMCBjbGFzcyAweDA4
MDYwMApbICAgIDMuMTM5MjQ5XSBwY2kgMDAwMDowMDowMC4zOiBbMTAyMjoxNGE2XSB0eXBlIDAw
IGNsYXNzIDB4MDgwNzAwClsgICAgMy4xMzk4NzBdIHBjaSAwMDAwOjAwOjAwLjM6IGVuYWJsaW5n
IEV4dGVuZGVkIFRhZ3MKWyAgICAzLjE0NzQwMl0gcGNpIDAwMDA6MDA6MDEuMDogWzEwMjI6MTQ5
Zl0gdHlwZSAwMCBjbGFzcyAweDA2MDAwMApbICAgIDMuMTUxNDIxXSBwY2kgMDAwMDowMDowMS4x
OiBbMTAyMjoxNGFiXSB0eXBlIDAxIGNsYXNzIDB4MDYwNDAwClsgICAgMy4xNTIwNDZdIHBjaSAw
MDAwOjAwOjAxLjE6IFBNRSMgc3VwcG9ydGVkIGZyb20gRDAgRDNob3QgRDNjb2xkClsgICAgMy4x
NTk2NzhdIHBjaSAwMDAwOjAwOjAyLjA6IFsxMDIyOjE0OWZdIHR5cGUgMDAgY2xhc3MgMHgwNjAw
MDAKWyAgICAzLjE2MzQ3N10gcGNpIDAwMDA6MDA6MDMuMDogWzEwMjI6MTQ5Zl0gdHlwZSAwMCBj
bGFzcyAweDA2MDAwMApbICAgIDMuMTY3MjI4XSBwY2kgMDAwMDowMDowNC4wOiBbMTAyMjoxNDlm
XSB0eXBlIDAwIGNsYXNzIDB4MDYwMDAwClsgICAgMy4xNzE0NzBdIHBjaSAwMDAwOjAwOjA1LjA6
IFsxMDIyOjE0OWZdIHR5cGUgMDAgY2xhc3MgMHgwNjAwMDAKWyAgICAzLjE3NTI5Nl0gcGNpIDAw
MDA6MDA6MDUuMTogWzEwMjI6MTRhYV0gdHlwZSAwMSBjbGFzcyAweDA2MDQwMApbICAgIDMuMTc1
OTA3XSBwY2kgMDAwMDowMDowNS4xOiBlbmFibGluZyBFeHRlbmRlZCBUYWdzClsgICAgMy4xODAw
MDNdIHBjaSAwMDAwOjAwOjA1LjE6IFBNRSMgc3VwcG9ydGVkIGZyb20gRDAgRDNob3QgRDNjb2xk
ClsgICAgMy4xODc2NTFdIHBjaSAwMDAwOjAwOjA1LjI6IFsxMDIyOjE0YWFdIHR5cGUgMDEgY2xh
c3MgMHgwNjA0MDAKWyAgICAzLjE4NzkwNl0gcGNpIDAwMDA6MDA6MDUuMjogZW5hYmxpbmcgRXh0
ZW5kZWQgVGFncwpbICAgIDMuMTkxOTk5XSBwY2kgMDAwMDowMDowNS4yOiBQTUUjIHN1cHBvcnRl
ZCBmcm9tIEQwIEQzaG90IEQzY29sZApbICAgIDMuMTk5NzQ2XSBwY2kgMDAwMDowMDowNS4zOiBb
MTAyMjoxNGFhXSB0eXBlIDAxIGNsYXNzIDB4MDYwNDAwClsgICAgMy4xOTk5MDRdIHBjaSAwMDAw
OjAwOjA1LjM6IGVuYWJsaW5nIEV4dGVuZGVkIFRhZ3MKWyAgICAzLjIwMzk5N10gcGNpIDAwMDA6
MDA6MDUuMzogUE1FIyBzdXBwb3J0ZWQgZnJvbSBEMCBEM2hvdCBEM2NvbGQKWyAgICAzLjIxMTU0
NV0gcGNpIDAwMDA6MDA6MDUuNDogWzEwMjI6MTRhYV0gdHlwZSAwMSBjbGFzcyAweDA2MDQwMApb
ICAgIDMuMjExOTAxXSBwY2kgMDAwMDowMDowNS40OiBlbmFibGluZyBFeHRlbmRlZCBUYWdzClsg
ICAgMy4yMTU5OThdIHBjaSAwMDAwOjAwOjA1LjQ6IFBNRSMgc3VwcG9ydGVkIGZyb20gRDAgRDNo
b3QgRDNjb2xkClsgICAgMy4yMjM2NzRdIHBjaSAwMDAwOjAwOjA3LjA6IFsxMDIyOjE0OWZdIHR5
cGUgMDAgY2xhc3MgMHgwNjAwMDAKWyAgICAzLjIyNzMwMV0gcGNpIDAwMDA6MDA6MDcuMTogWzEw
MjI6MTRhN10gdHlwZSAwMSBjbGFzcyAweDA2MDQwMApbICAgIDMuMjI3ODYxXSBwY2kgMDAwMDow
MDowNy4xOiBlbmFibGluZyBFeHRlbmRlZCBUYWdzClsgICAgMy4yMzE5MDddIHBjaSAwMDAwOjAw
OjA3LjE6IFBNRSMgc3VwcG9ydGVkIGZyb20gRDAgRDNob3QgRDNjb2xkClsgICAgMy4yMzk1NzJd
IHBjaSAwMDAwOjAwOjA3LjI6IFsxMDIyOjE0YTddIHR5cGUgMDEgY2xhc3MgMHgwNjA0MDAKWyAg
ICAzLjIzOTg2MV0gcGNpIDAwMDA6MDA6MDcuMjogZW5hYmxpbmcgRXh0ZW5kZWQgVGFncwpbICAg
IDMuMjQzOTA2XSBwY2kgMDAwMDowMDowNy4yOiBQTUUjIHN1cHBvcnRlZCBmcm9tIEQwIEQzaG90
IEQzY29sZApbICAgIDMuMjUxNDk0XSBwY2kgMDAwMDowMDoxNC4wOiBbMTAyMjo3OTBiXSB0eXBl
IDAwIGNsYXNzIDB4MGMwNTAwClsgICAgMy4yNTUzMDddIHBjaSAwMDAwOjAwOjE0LjM6IFsxMDIy
Ojc5MGVdIHR5cGUgMDAgY2xhc3MgMHgwNjAxMDAKWyAgICAzLjI1OTM2Ml0gcGNpIDAwMDA6MDA6
MTguMDogWzEwMjI6MTRhZF0gdHlwZSAwMCBjbGFzcyAweDA2MDAwMApbICAgIDMuMjYzMzk3XSBw
Y2kgMDAwMDowMDoxOC4xOiBbMTAyMjoxNGFlXSB0eXBlIDAwIGNsYXNzIDB4MDYwMDAwClsgICAg
My4yNjczMjVdIHBjaSAwMDAwOjAwOjE4LjI6IFsxMDIyOjE0YWZdIHR5cGUgMDAgY2xhc3MgMHgw
NjAwMDAKWyAgICAzLjI3MTMxMV0gcGNpIDAwMDA6MDA6MTguMzogWzEwMjI6MTRiMF0gdHlwZSAw
MCBjbGFzcyAweDA2MDAwMApbICAgIDMuMjc1MzkzXSBwY2kgMDAwMDowMDoxOC40OiBbMTAyMjox
NGIxXSB0eXBlIDAwIGNsYXNzIDB4MDYwMDAwClsgICAgMy4yNzkyMzldIHBjaSAwMDAwOjAwOjE4
LjU6IFsxMDIyOjE0YjJdIHR5cGUgMDAgY2xhc3MgMHgwNjAwMDAKWyAgICAzLjI4MzQyMF0gcGNp
IDAwMDA6MDA6MTguNjogWzEwMjI6MTRiM10gdHlwZSAwMCBjbGFzcyAweDA2MDAwMApbICAgIDMu
Mjg3NDU1XSBwY2kgMDAwMDowMDoxOC43OiBbMTAyMjoxNGI0XSB0eXBlIDAwIGNsYXNzIDB4MDYw
MDAwClsgICAgMy4yOTEzODVdIHBjaSAwMDAwOjAxOjAwLjA6IFsxMDAyOjY3ZGZdIHR5cGUgMDAg
Y2xhc3MgMHgwMzAwMDAKWyAgICAzLjI5NzYzN10gcGNpIDAwMDA6MDE6MDAuMDogcmVnIDB4MTA6
IFttZW0gMHg0ZDgwMDAwMDAwMC0weDRkOGZmZmZmZmZmIDY0Yml0IHByZWZdClsgICAgMy4zMDY0
NjJdIHBjaSAwMDAwOjAxOjAwLjA6IHJlZyAweDE4OiBbbWVtIDB4NGQ5MDAwMDAwMDAtMHg0ZDkw
MDFmZmZmZiA2NGJpdCBwcmVmXQpbICAgIDMuMzEzMzU3XSBwY2kgMDAwMDowMTowMC4wOiByZWcg
MHgyMDogW2lvICAweDMwMDAtMHgzMGZmXQpbICAgIDMuMzIxODUxXSBwY2kgMDAwMDowMTowMC4w
OiByZWcgMHgyNDogW21lbSAweGYwZjAwMDAwLTB4ZjBmM2ZmZmZdClsgICAgMy4zMjk2MTJdIHBj
aSAwMDAwOjAxOjAwLjA6IHJlZyAweDMwOiBbbWVtIDB4ZjBmNDAwMDAtMHhmMGY1ZmZmZiBwcmVm
XQpbICAgIDMuMzMxOTk5XSBwY2kgMDAwMDowMTowMC4wOiBzdXBwb3J0cyBEMSBEMgpbICAgIDMu
MzM1ODAxXSBwY2kgMDAwMDowMTowMC4wOiBQTUUjIHN1cHBvcnRlZCBmcm9tIEQxIEQyIEQzaG90
IEQzY29sZApbICAgIDMuMzQzNDc1XSBwY2kgMDAwMDowMTowMC4xOiBbMTAwMjphYWYwXSB0eXBl
IDAwIGNsYXNzIDB4MDQwMzAwClsgICAgMy4zNDM4MjVdIHBjaSAwMDAwOjAxOjAwLjE6IHJlZyAw
eDEwOiBbbWVtIDB4ZjBmNjAwMDAtMHhmMGY2M2ZmZiA2NGJpdF0KWyAgICAzLjM0Nzk0NV0gcGNp
IDAwMDA6MDE6MDAuMTogc3VwcG9ydHMgRDEgRDIKWyAgICAzLjM1NTU2Nl0gcGNpIDAwMDA6MDA6
MDEuMTogUENJIGJyaWRnZSB0byBbYnVzIDAxXQpbICAgIDMuMzU1ODA3XSBwY2kgMDAwMDowMDow
MS4xOiAgIGJyaWRnZSB3aW5kb3cgW2lvICAweDMwMDAtMHgzZmZmXQpbICAgIDMuMzU5ODAzXSBw
Y2kgMDAwMDowMDowMS4xOiAgIGJyaWRnZSB3aW5kb3cgW21lbSAweGYwZjAwMDAwLTB4ZjBmZmZm
ZmZdClsgICAgMy4zNjM4MDZdIHBjaSAwMDAwOjAwOjAxLjE6ICAgYnJpZGdlIHdpbmRvdyBbbWVt
IDB4NGQ4MDAwMDAwMDAtMHg0ZDkwMDFmZmZmZiA2NGJpdCBwcmVmXQpbICAgIDMuMzY3OTE0XSBw
Y2kgMDAwMDowMDowNS4xOiBQQ0kgYnJpZGdlIHRvIFtidXMgMDJdClsgICAgMy4zNzE5MzFdIHBj
aSAwMDAwOjAwOjA1LjI6IFBDSSBicmlkZ2UgdG8gW2J1cyAwM10KWyAgICAzLjM3NTkzMF0gcGNp
IDAwMDA6MDA6MDUuMzogUENJIGJyaWRnZSB0byBbYnVzIDA0XQpbICAgIDMuMzc5OTMxXSBwY2kg
MDAwMDowMDowNS40OiBQQ0kgYnJpZGdlIHRvIFtidXMgMDVdClsgICAgMy4zODM5MzNdIHBjaSAw
MDAwOjA2OjAwLjA6IFsxMDIyOjE0YWNdIHR5cGUgMDAgY2xhc3MgMHgxMzAwMDAKWyAgICAzLjM4
Nzg1N10gcGNpIDAwMDA6MDY6MDAuMDogZW5hYmxpbmcgRXh0ZW5kZWQgVGFncwpbICAgIDMuMzk1
NTIwXSBwY2kgMDAwMDowNjowMC40OiBbMTAyMjoxNGM5XSB0eXBlIDAwIGNsYXNzIDB4MGMwMzMw
ClsgICAgMy4zOTgxMjVdIHBjaSAwMDAwOjA2OjAwLjQ6IHJlZyAweDEwOiBbbWVtIDB4ZjBjMDAw
MDAtMHhmMGNmZmZmZiA2NGJpdF0KWyAgICAzLjQxMDEzM10gcGNpIDAwMDA6MDY6MDAuNDogZW5h
YmxpbmcgRXh0ZW5kZWQgVGFncwpbICAgIDMuNDExODcyXSBwY2kgMDAwMDowNjowMC40OiBQTUUj
IHN1cHBvcnRlZCBmcm9tIEQwIEQzaG90IEQzY29sZApbICAgIDMuNDE5NDcxXSBwY2kgMDAwMDow
NjowMC41OiBbMTAyMjoxNGNhXSB0eXBlIDAwIGNsYXNzIDB4MTA4MDAwClsgICAgMy40MTk4Mjdd
IHBjaSAwMDAwOjA2OjAwLjU6IHJlZyAweDE4OiBbbWVtIDB4ZjBiMDAwMDAtMHhmMGJmZmZmZl0K
WyAgICAzLjQyMzgxOV0gcGNpIDAwMDA6MDY6MDAuNTogcmVnIDB4MjQ6IFttZW0gMHhmMGQwODAw
MC0weGYwZDA5ZmZmXQpbICAgIDMuNDI3ODE1XSBwY2kgMDAwMDowNjowMC41OiBlbmFibGluZyBF
eHRlbmRlZCBUYWdzClsgICAgMy40MzUzODJdIHBjaSAwMDAwOjA2OjAwLjc6IFsxMDIyOjE0Y2Nd
IHR5cGUgMDAgY2xhc3MgMHgwNDAzMDAKWyAgICAzLjQzNTgxNV0gcGNpIDAwMDA6MDY6MDAuNzog
cmVnIDB4MTA6IFttZW0gMHhmMGQwMDAwMC0weGYwZDA3ZmZmXQpbICAgIDMuNDM5ODUyXSBwY2kg
MDAwMDowNjowMC43OiBlbmFibGluZyBFeHRlbmRlZCBUYWdzClsgICAgMy40NDM4NzFdIHBjaSAw
MDAwOjA2OjAwLjc6IFBNRSMgc3VwcG9ydGVkIGZyb20gRDAgRDNob3QgRDNjb2xkClsgICAgMy40
NTE0MjJdIHBjaSAwMDAwOjAwOjA3LjE6IFBDSSBicmlkZ2UgdG8gW2J1cyAwNl0KWyAgICAzLjQ1
MTgxMF0gcGNpIDAwMDA6MDA6MDcuMTogICBicmlkZ2Ugd2luZG93IFttZW0gMHhmMGIwMDAwMC0w
eGYwZGZmZmZmXQpbICAgIDMuNDU1OTAwXSBwY2kgMDAwMDowNzowMC4wOiBbMTAyMjoxNGFjXSB0
eXBlIDAwIGNsYXNzIDB4MTMwMDAwClsgICAgMy40NTk4NTZdIHBjaSAwMDAwOjA3OjAwLjA6IGVu
YWJsaW5nIEV4dGVuZGVkIFRhZ3MKWyAgICAzLjQ2NzUwOF0gcGNpIDAwMDA6MDc6MDAuMTogWzEw
MjI6NzkwMV0gdHlwZSAwMCBjbGFzcyAweDAxMDYwMQpbICAgIDMuNDY3OTQ1XSBwY2kgMDAwMDow
NzowMC4xOiByZWcgMHgyNDogW21lbSAweGYwZTAwMDAwLTB4ZjBlMDA3ZmZdClsgICAgMy40NzE4
MzRdIHBjaSAwMDAwOjA3OjAwLjE6IGVuYWJsaW5nIEV4dGVuZGVkIFRhZ3MKWyAgICAzLjQ3NTg2
NV0gcGNpIDAwMDA6MDc6MDAuMTogUE1FIyBzdXBwb3J0ZWQgZnJvbSBEM2hvdCBEM2NvbGQKWyAg
ICAzLjQ4MzMzNV0gcGNpIDAwMDA6MDA6MDcuMjogUENJIGJyaWRnZSB0byBbYnVzIDA3XQpbICAg
IDMuNDgzODA5XSBwY2kgMDAwMDowMDowNy4yOiAgIGJyaWRnZSB3aW5kb3cgW21lbSAweGYwZTAw
MDAwLTB4ZjBlZmZmZmZdClsgICAgMy40ODg4MDRdIEFDUEk6IFBDSSBSb290IEJyaWRnZSBbUENJ
MV0gKGRvbWFpbiAwMDAwIFtidXMgNDAtN2ZdKQpbICAgIDMuNDkxODAyXSBhY3BpIFBOUDBBMDg6
MDM6IF9PU0M6IE9TIHN1cHBvcnRzIFtFeHRlbmRlZENvbmZpZyBBU1BNIENsb2NrUE0gU2VnbWVu
dHMgTVNJIEhQWC1UeXBlM10KWyAgICAzLjQ5NTkwM10gYWNwaSBQTlAwQTA4OjAzOiBfT1NDOiBw
bGF0Zm9ybSBkb2VzIG5vdCBzdXBwb3J0IFtBRVIgTFRSXQpbICAgIDMuNDk5OTg3XSBhY3BpIFBO
UDBBMDg6MDM6IF9PU0M6IE9TIG5vdyBjb250cm9scyBbUENJZUhvdHBsdWcgU0hQQ0hvdHBsdWcg
UE1FIFBDSWVDYXBhYmlsaXR5XQpbICAgIDMuNTA0MDY3XSBQQ0kgaG9zdCBicmlkZ2UgdG8gYnVz
IDAwMDA6NDAKWyAgICAzLjUwNzgwMV0gcGNpX2J1cyAwMDAwOjQwOiByb290IGJ1cyByZXNvdXJj
ZSBbaW8gIDB4NDAwMC0weDZmZmYgd2luZG93XQpbICAgIDMuNTExODAxXSBwY2lfYnVzIDAwMDA6
NDA6IHJvb3QgYnVzIHJlc291cmNlIFttZW0gMHhjMDAwMDAwMC0weGMwZmZmZmZmIHdpbmRvd10K
WyAgICAzLjUxNTgwMV0gcGNpX2J1cyAwMDAwOjQwOiByb290IGJ1cyByZXNvdXJjZSBbbWVtIDB4
NjQwMjA0MDAwMDAtMHg2OTliMzNmZmZmZiB3aW5kb3ddClsgICAgMy41MTk4MDFdIHBjaV9idXMg
MDAwMDo0MDogcm9vdCBidXMgcmVzb3VyY2UgW2J1cyA0MC03Zl0KWyAgICAzLjUyMzgyMV0gcGNp
IDAwMDA6NDA6MDAuMDogWzEwMjI6MTRhNF0gdHlwZSAwMCBjbGFzcyAweDA2MDAwMApbICAgIDMu
NTMxNDUyXSBwY2kgMDAwMDo0MDowMC4yOiBbMTAyMjoxNDllXSB0eXBlIDAwIGNsYXNzIDB4MDgw
NjAwClsgICAgMy41MzU0MjhdIHBjaSAwMDAwOjQwOjAwLjM6IFsxMDIyOjE0YTZdIHR5cGUgMDAg
Y2xhc3MgMHgwODA3MDAKWyAgICAzLjUzNTg2Nl0gcGNpIDAwMDA6NDA6MDAuMzogZW5hYmxpbmcg
RXh0ZW5kZWQgVGFncwpbICAgIDMuNTQzMzk5XSBwY2kgMDAwMDo0MDowMS4wOiBbMTAyMjoxNDlm
XSB0eXBlIDAwIGNsYXNzIDB4MDYwMDAwClsgICAgMy41NDc0NDldIHBjaSAwMDAwOjQwOjAxLjE6
IFsxMDIyOjE0YWJdIHR5cGUgMDEgY2xhc3MgMHgwNjA0MDAKWyAgICAzLjU0ODAzOV0gcGNpIDAw
MDA6NDA6MDEuMTogUE1FIyBzdXBwb3J0ZWQgZnJvbSBEMCBEM2hvdCBEM2NvbGQKWyAgICAzLjU1
NTYyMl0gcGNpIDAwMDA6NDA6MDIuMDogWzEwMjI6MTQ5Zl0gdHlwZSAwMCBjbGFzcyAweDA2MDAw
MApbICAgIDMuNTU5MzYzXSBwY2kgMDAwMDo0MDowMy4wOiBbMTAyMjoxNDlmXSB0eXBlIDAwIGNs
YXNzIDB4MDYwMDAwClsgICAgMy41NjM0NjhdIHBjaSAwMDAwOjQwOjAzLjE6IFsxMDIyOjE0YTVd
IHR5cGUgMDEgY2xhc3MgMHgwNjA0MDAKWyAgICAzLjU2NDAxMF0gcGNpIDAwMDA6NDA6MDMuMTog
UE1FIyBzdXBwb3J0ZWQgZnJvbSBEMCBEM2hvdCBEM2NvbGQKWyAgICAzLjU3MTU5NF0gcGNpIDAw
MDA6NDA6MDMuMjogWzEwMjI6MTRhNV0gdHlwZSAwMSBjbGFzcyAweDA2MDQwMApbICAgIDMuNTcx
ODY1XSBwY2kgMDAwMDo0MDowMy4yOiBlbmFibGluZyBFeHRlbmRlZCBUYWdzClsgICAgMy41NzU5
NTVdIHBjaSAwMDAwOjQwOjAzLjI6IFBNRSMgc3VwcG9ydGVkIGZyb20gRDAgRDNob3QgRDNjb2xk
ClsgICAgMy41ODM2NTRdIHBjaSAwMDAwOjQwOjAzLjM6IFsxMDIyOjE0YTVdIHR5cGUgMDEgY2xh
c3MgMHgwNjA0MDAKWyAgICAzLjU4Mzg2NV0gcGNpIDAwMDA6NDA6MDMuMzogZW5hYmxpbmcgRXh0
ZW5kZWQgVGFncwpbICAgIDMuNTg3OTQ4XSBwY2kgMDAwMDo0MDowMy4zOiBQTUUjIHN1cHBvcnRl
ZCBmcm9tIEQwIEQzaG90IEQzY29sZApbICAgIDMuNTk1NjI5XSBwY2kgMDAwMDo0MDowNC4wOiBb
MTAyMjoxNDlmXSB0eXBlIDAwIGNsYXNzIDB4MDYwMDAwClsgICAgMy41OTkzNzddIHBjaSAwMDAw
OjQwOjA1LjA6IFsxMDIyOjE0OWZdIHR5cGUgMDAgY2xhc3MgMHgwNjAwMDAKWyAgICAzLjYwMzI4
M10gcGNpIDAwMDA6NDA6MDcuMDogWzEwMjI6MTQ5Zl0gdHlwZSAwMCBjbGFzcyAweDA2MDAwMApb
ICAgIDMuNjA3Mzg3XSBwY2kgMDAwMDo0MDowNy4xOiBbMTAyMjoxNGE3XSB0eXBlIDAxIGNsYXNz
IDB4MDYwNDAwClsgICAgMy42MDc4NThdIHBjaSAwMDAwOjQwOjA3LjE6IGVuYWJsaW5nIEV4dGVu
ZGVkIFRhZ3MKWyAgICAzLjYxMTg5N10gcGNpIDAwMDA6NDA6MDcuMTogUE1FIyBzdXBwb3J0ZWQg
ZnJvbSBEMCBEM2hvdCBEM2NvbGQKWyAgICAzLjYxOTY0MV0gcGNpIDAwMDA6NDE6MDAuMDogWzEw
MDI6NjYxMV0gdHlwZSAwMCBjbGFzcyAweDAzMDAwMApbICAgIDMuNjE5ODIyXSBwY2kgMDAwMDo0
MTowMC4wOiByZWcgMHgxMDogW21lbSAweDY5OTQwMDAwMDAwLTB4Njk5N2ZmZmZmZmYgNjRiaXQg
cHJlZl0KWyAgICAzLjYyMzgxNF0gcGNpIDAwMDA6NDE6MDAuMDogcmVnIDB4MTg6IFttZW0gMHhj
MGMwMDAwMC0weGMwYzNmZmZmIDY0Yml0XQpbICAgIDMuNjI3ODA3XSBwY2kgMDAwMDo0MTowMC4w
OiByZWcgMHgyMDogW2lvICAweDYwMDAtMHg2MGZmXQpbICAgIDMuNjMxODE1XSBwY2kgMDAwMDo0
MTowMC4wOiByZWcgMHgzMDogW21lbSAweGMwYzQwMDAwLTB4YzBjNWZmZmYgcHJlZl0KWyAgICAz
LjYzNTkwOV0gcGNpIDAwMDA6NDE6MDAuMDogc3VwcG9ydHMgRDEgRDIKWyAgICAzLjYzOTgwMV0g
cGNpIDAwMDA6NDE6MDAuMDogUE1FIyBzdXBwb3J0ZWQgZnJvbSBEMSBEMiBEM2hvdApbICAgIDMu
NjQ3NDY2XSBwY2kgMDAwMDo0MTowMC4xOiBbMTAwMjphYWIwXSB0eXBlIDAwIGNsYXNzIDB4MDQw
MzAwClsgICAgMy42NDc4MjJdIHBjaSAwMDAwOjQxOjAwLjE6IHJlZyAweDEwOiBbbWVtIDB4YzBj
NjAwMDAtMHhjMGM2M2ZmZiA2NGJpdF0KWyAgICAzLjY1MTkxNF0gcGNpIDAwMDA6NDE6MDAuMTog
c3VwcG9ydHMgRDEgRDIKWyAgICAzLjY1OTQ4Ml0gcGNpIDAwMDA6NDA6MDEuMTogUENJIGJyaWRn
ZSB0byBbYnVzIDQxXQpbICAgIDMuNjU5ODA2XSBwY2kgMDAwMDo0MDowMS4xOiAgIGJyaWRnZSB3
aW5kb3cgW2lvICAweDYwMDAtMHg2ZmZmXQpbICAgIDMuNjYzODAzXSBwY2kgMDAwMDo0MDowMS4x
OiAgIGJyaWRnZSB3aW5kb3cgW21lbSAweGMwYzAwMDAwLTB4YzBjZmZmZmZdClsgICAgMy42Njc4
MDddIHBjaSAwMDAwOjQwOjAxLjE6ICAgYnJpZGdlIHdpbmRvdyBbbWVtIDB4Njk5NDAwMDAwMDAt
MHg2OTk3ZmZmZmZmZiA2NGJpdCBwcmVmXQpbICAgIDMuNjcxODk1XSBwY2kgMDAwMDo0MjowMC4w
OiBbMWQ2YTowNGMwXSB0eXBlIDAwIGNsYXNzIDB4MDIwMDAwClsgICAgMy42NzU4MjJdIHBjaSAw
MDAwOjQyOjAwLjA6IHJlZyAweDEwOiBbbWVtIDB4YzA0MDAwMDAtMHhjMDQ3ZmZmZiA2NGJpdF0K
WyAgICAzLjY3OTgxNF0gcGNpIDAwMDA6NDI6MDAuMDogcmVnIDB4MTg6IFttZW0gMHhjMDRhMDAw
MC0weGMwNGEwZmZmIDY0Yml0XQpbICAgIDMuNjgzODE0XSBwY2kgMDAwMDo0MjowMC4wOiByZWcg
MHgyMDogW21lbSAweGMwMDAwMDAwLTB4YzAzZmZmZmYgNjRiaXRdClsgICAgMy42ODc4MDhdIHBj
aSAwMDAwOjQyOjAwLjA6IHJlZyAweDMwOiBbbWVtIDB4YzA0ODAwMDAtMHhjMDQ5ZmZmZiBwcmVm
XQpbICAgIDMuNjkxOTUxXSBwY2kgMDAwMDo0MjowMC4wOiBzdXBwb3J0cyBEMSBEMgpbICAgIDMu
Njk1ODAwXSBwY2kgMDAwMDo0MjowMC4wOiBQTUUjIHN1cHBvcnRlZCBmcm9tIEQwIEQxIEQzaG90
IEQzY29sZApbICAgIDMuNzAzNjQyXSBwY2kgMDAwMDo0MDowMy4xOiBQQ0kgYnJpZGdlIHRvIFti
dXMgNDJdClsgICAgMy43MDM4MDldIHBjaSAwMDAwOjQwOjAzLjE6ICAgYnJpZGdlIHdpbmRvdyBb
bWVtIDB4YzAwMDAwMDAtMHhjMDRmZmZmZl0KWyAgICAzLjcwNzkwNV0gcGNpIDAwMDA6NDM6MDAu
MDogWzE0NGQ6YTgwOF0gdHlwZSAwMCBjbGFzcyAweDAxMDgwMgpbICAgIDMuNzExOTIzXSBwY2kg
MDAwMDo0MzowMC4wOiByZWcgMHgxMDogW21lbSAweGMwYjAwMDAwLTB4YzBiMDNmZmYgNjRiaXRd
ClsgICAgMy43MTk4NjJdIHBjaSAwMDAwOjQwOjAzLjI6IFBDSSBicmlkZ2UgdG8gW2J1cyA0M10K
WyAgICAzLjcyMzgxMF0gcGNpIDAwMDA6NDA6MDMuMjogICBicmlkZ2Ugd2luZG93IFttZW0gMHhj
MGIwMDAwMC0weGMwYmZmZmZmXQpbICAgIDMuNzI3OTA2XSBwY2kgMDAwMDo0NDowMC4wOiBbMTAy
Mjo0M2Y0XSB0eXBlIDAxIGNsYXNzIDB4MDYwNDAwClsgICAgMy43MzE4NzVdIHBjaSAwMDAwOjQ0
OjAwLjA6IGVuYWJsaW5nIEV4dGVuZGVkIFRhZ3MKWyAgICAzLjczNTkxOF0gcGNpIDAwMDA6NDQ6
MDAuMDogUE1FIyBzdXBwb3J0ZWQgZnJvbSBEMCBEM2hvdCBEM2NvbGQKWyAgICAzLjc0MzY3Ml0g
cGNpIDAwMDA6NDA6MDMuMzogUENJIGJyaWRnZSB0byBbYnVzIDQ0LTRhXQpbICAgIDMuNzQzODA3
XSBwY2kgMDAwMDo0MDowMy4zOiAgIGJyaWRnZSB3aW5kb3cgW2lvICAweDUwMDAtMHg1ZmZmXQpb
ICAgIDMuNzQ3ODAzXSBwY2kgMDAwMDo0MDowMy4zOiAgIGJyaWRnZSB3aW5kb3cgW21lbSAweGMw
NjAwMDAwLTB4YzBhZmZmZmZdClsgICAgMy43NTE4MDZdIHBjaSAwMDAwOjQwOjAzLjM6ICAgYnJp
ZGdlIHdpbmRvdyBbbWVtIDB4Njk5ODAwMDAwMDAtMHg2OTk4MDBmZmZmZiA2NGJpdCBwcmVmXQpb
ICAgIDMuNzU1ODkzXSBwY2kgMDAwMDo0NTowMC4wOiBbMTAyMjo0M2Y1XSB0eXBlIDAxIGNsYXNz
IDB4MDYwNDAwClsgICAgMy43NTk4NzZdIHBjaSAwMDAwOjQ1OjAwLjA6IGVuYWJsaW5nIEV4dGVu
ZGVkIFRhZ3MKWyAgICAzLjc2MzkxOF0gcGNpIDAwMDA6NDU6MDAuMDogUE1FIyBzdXBwb3J0ZWQg
ZnJvbSBEMCBEM2hvdCBEM2NvbGQKWyAgICAzLjc3MTUyNV0gcGNpIDAwMDA6NDU6MDIuMDogWzEw
MjI6NDNmNV0gdHlwZSAwMSBjbGFzcyAweDA2MDQwMApbICAgIDMuNzcxODc1XSBwY2kgMDAwMDo0
NTowMi4wOiBlbmFibGluZyBFeHRlbmRlZCBUYWdzClsgICAgMy43NzU5MTVdIHBjaSAwMDAwOjQ1
OjAyLjA6IFBNRSMgc3VwcG9ydGVkIGZyb20gRDAgRDNob3QgRDNjb2xkClsgICAgMy43ODM0MDhd
IHBjaSAwMDAwOjQ1OjA4LjA6IFsxMDIyOjQzZjVdIHR5cGUgMDEgY2xhc3MgMHgwNjA0MDAKWyAg
ICAzLjc4Mzg3NF0gcGNpIDAwMDA6NDU6MDguMDogZW5hYmxpbmcgRXh0ZW5kZWQgVGFncwpbICAg
IDMuNzg3OTE0XSBwY2kgMDAwMDo0NTowOC4wOiBQTUUjIHN1cHBvcnRlZCBmcm9tIEQwIEQzaG90
IEQzY29sZApbICAgIDMuNzk1NDQ0XSBwY2kgMDAwMDo0NTowYy4wOiBbMTAyMjo0M2Y1XSB0eXBl
IDAxIGNsYXNzIDB4MDYwNDAwClsgICAgMy43OTU4NzRdIHBjaSAwMDAwOjQ1OjBjLjA6IGVuYWJs
aW5nIEV4dGVuZGVkIFRhZ3MKWyAgICAzLjc5OTg3MF0gcGNpIDAwMDA6NDU6MGMuMDogUE1FIyBz
dXBwb3J0ZWQgZnJvbSBEMCBEM2hvdCBEM2NvbGQKWyAgICAzLjgwNzI5OV0gcGNpIDAwMDA6NDU6
MGQuMDogWzEwMjI6NDNmNV0gdHlwZSAwMSBjbGFzcyAweDA2MDQwMApbICAgIDMuODA3ODc0XSBw
Y2kgMDAwMDo0NTowZC4wOiBlbmFibGluZyBFeHRlbmRlZCBUYWdzClsgICAgMy44MTE4NzBdIHBj
aSAwMDAwOjQ1OjBkLjA6IFBNRSMgc3VwcG9ydGVkIGZyb20gRDAgRDNob3QgRDNjb2xkClsgICAg
My44MTkzNzFdIHBjaSAwMDAwOjQ0OjAwLjA6IFBDSSBicmlkZ2UgdG8gW2J1cyA0NS00YV0KWyAg
ICAzLjgxOTgwN10gcGNpIDAwMDA6NDQ6MDAuMDogICBicmlkZ2Ugd2luZG93IFtpbyAgMHg1MDAw
LTB4NWZmZl0KWyAgICAzLjgyMzgwNF0gcGNpIDAwMDA6NDQ6MDAuMDogICBicmlkZ2Ugd2luZG93
IFttZW0gMHhjMDYwMDAwMC0weGMwYWZmZmZmXQpbICAgIDMuODI3ODA3XSBwY2kgMDAwMDo0NDow
MC4wOiAgIGJyaWRnZSB3aW5kb3cgW21lbSAweDY5OTgwMDAwMDAwLTB4Njk5ODAwZmZmZmYgNjRi
aXQgcHJlZl0KWyAgICAzLjgzMTkyMl0gcGNpIDAwMDA6NDY6MDAuMDogWzE0YzM6MDYxNl0gdHlw
ZSAwMCBjbGFzcyAweDAyODAwMApbICAgIDMuODM1ODg3XSBwY2kgMDAwMDo0NjowMC4wOiByZWcg
MHgxMDogW21lbSAweDY5OTgwMDAwMDAwLTB4Njk5ODAwZmZmZmYgNjRiaXQgcHJlZl0KWyAgICAz
LjgzOTg3MF0gcGNpIDAwMDA6NDY6MDAuMDogcmVnIDB4MTg6IFttZW0gMHhjMGEwMDAwMC0weGMw
YTA3ZmZmIDY0Yml0XQpbICAgIDMuODQzOTAzXSBwY2kgMDAwMDo0NjowMC4wOiBlbmFibGluZyBF
eHRlbmRlZCBUYWdzClsgICAgMy44NDgwMDRdIHBjaSAwMDAwOjQ2OjAwLjA6IFBNRSMgc3VwcG9y
dGVkIGZyb20gRDAgRDNob3QgRDNjb2xkClsgICAgMy44NTU3NDJdIHBjaSAwMDAwOjQ1OjAwLjA6
IFBDSSBicmlkZ2UgdG8gW2J1cyA0Nl0KWyAgICAzLjg1NTgxMF0gcGNpIDAwMDA6NDU6MDAuMDog
ICBicmlkZ2Ugd2luZG93IFttZW0gMHhjMGEwMDAwMC0weGMwYWZmZmZmXQpbICAgIDMuODU5ODA3
XSBwY2kgMDAwMDo0NTowMC4wOiAgIGJyaWRnZSB3aW5kb3cgW21lbSAweDY5OTgwMDAwMDAwLTB4
Njk5ODAwZmZmZmYgNjRiaXQgcHJlZl0KWyAgICAzLjg2Mzg3M10gcGNpIDAwMDA6NDc6MDAuMDog
WzEwZWM6ODEyNV0gdHlwZSAwMCBjbGFzcyAweDAyMDAwMApbICAgIDMuODY3ODI2XSBwY2kgMDAw
MDo0NzowMC4wOiByZWcgMHgxMDogW2lvICAweDUwMDAtMHg1MGZmXQpbICAgIDMuODcxODM0XSBw
Y2kgMDAwMDo0NzowMC4wOiByZWcgMHgxODogW21lbSAweGMwOTAwMDAwLTB4YzA5MGZmZmYgNjRi
aXRdClsgICAgMy44NzU4MjJdIHBjaSAwMDAwOjQ3OjAwLjA6IHJlZyAweDIwOiBbbWVtIDB4YzA5
MTAwMDAtMHhjMDkxM2ZmZiA2NGJpdF0KWyAgICAzLjg4MDAwMF0gcGNpIDAwMDA6NDc6MDAuMDog
c3VwcG9ydHMgRDEgRDIKWyAgICAzLjg4MzgwMV0gcGNpIDAwMDA6NDc6MDAuMDogUE1FIyBzdXBw
b3J0ZWQgZnJvbSBEMCBEMSBEMiBEM2hvdCBEM2NvbGQKWyAgICAzLjg5MTcxN10gcGNpIDAwMDA6
NDU6MDIuMDogUENJIGJyaWRnZSB0byBbYnVzIDQ3XQpbICAgIDMuODkxODA3XSBwY2kgMDAwMDo0
NTowMi4wOiAgIGJyaWRnZSB3aW5kb3cgW2lvICAweDUwMDAtMHg1ZmZmXQpbICAgIDMuODk1ODA0
XSBwY2kgMDAwMDo0NTowMi4wOiAgIGJyaWRnZSB3aW5kb3cgW21lbSAweGMwOTAwMDAwLTB4YzA5
ZmZmZmZdClsgICAgMy44OTk5MjFdIHBjaSAwMDAwOjQ4OjAwLjA6IFsxNDRkOmE4MGNdIHR5cGUg
MDAgY2xhc3MgMHgwMTA4MDIKWyAgICAzLjkwMzkwNl0gcGNpIDAwMDA6NDg6MDAuMDogcmVnIDB4
MTA6IFttZW0gMHhjMDgwMDAwMC0weGMwODAzZmZmIDY0Yml0XQpbICAgIDMuOTA4MjYyXSBwY2kg
MDAwMDo0ODowMC4wOiBlbmFibGluZyBFeHRlbmRlZCBUYWdzClsgICAgMy45MTU4NTddIHBjaSAw
MDAwOjQ1OjA4LjA6IFBDSSBicmlkZ2UgdG8gW2J1cyA0OF0KWyAgICAzLjkxOTgxMl0gcGNpIDAw
MDA6NDU6MDguMDogICBicmlkZ2Ugd2luZG93IFttZW0gMHhjMDgwMDAwMC0weGMwOGZmZmZmXQpb
ICAgIDMuOTIzODkyXSBwY2kgMDAwMDo0OTowMC4wOiBbMTAyMjo0M2Y3XSB0eXBlIDAwIGNsYXNz
IDB4MGMwMzMwClsgICAgMy45Mjc5MDFdIHBjaSAwMDAwOjQ5OjAwLjA6IHJlZyAweDEwOiBbbWVt
IDB4YzA3MDAwMDAtMHhjMDcwN2ZmZiA2NGJpdF0KWyAgICAzLjkzMjE4OV0gcGNpIDAwMDA6NDk6
MDAuMDogZW5hYmxpbmcgRXh0ZW5kZWQgVGFncwpbICAgIDMuOTM1ODgyXSBwY2kgMDAwMDo0OTow
MC4wOiBQTUUjIHN1cHBvcnRlZCBmcm9tIEQwIEQzaG90IEQzY29sZApbICAgIDMuOTQzNTQ4XSBw
Y2kgMDAwMDo0NTowYy4wOiBQQ0kgYnJpZGdlIHRvIFtidXMgNDldClsgICAgMy45NDM4MDddIHBj
aSAwMDAwOjQ1OjBjLjA6ICAgYnJpZGdlIHdpbmRvdyBbbWVtIDB4YzA3MDAwMDAtMHhjMDdmZmZm
Zl0KWyAgICAzLjk0Nzg3N10gcGNpIDAwMDA6NGE6MDAuMDogWzEwMjI6NDNmNl0gdHlwZSAwMCBj
bGFzcyAweDAxMDYwMQpbICAgIDMuOTUxOTUzXSBwY2kgMDAwMDo0YTowMC4wOiByZWcgMHgyNDog
W21lbSAweGMwNjgwMDAwLTB4YzA2ODAzZmZdClsgICAgMy45NTU4MjhdIHBjaSAwMDAwOjRhOjAw
LjA6IHJlZyAweDMwOiBbbWVtIDB4YzA2MDAwMDAtMHhjMDY3ZmZmZiBwcmVmXQpbICAgIDMuOTU5
ODEwXSBwY2kgMDAwMDo0YTowMC4wOiBlbmFibGluZyBFeHRlbmRlZCBUYWdzClsgICAgMy45NjM4
NjRdIHBjaSAwMDAwOjRhOjAwLjA6IFBNRSMgc3VwcG9ydGVkIGZyb20gRDAgRDNob3QgRDNjb2xk
ClsgICAgMy45NzE0MDddIHBjaSAwMDAwOjQ1OjBkLjA6IFBDSSBicmlkZ2UgdG8gW2J1cyA0YV0K
WyAgICAzLjk3MTgwN10gcGNpIDAwMDA6NDU6MGQuMDogICBicmlkZ2Ugd2luZG93IFttZW0gMHhj
MDYwMDAwMC0weGMwNmZmZmZmXQpbICAgIDMuOTc1OTM1XSBwY2kgMDAwMDo0YjowMC4wOiBbMTAy
MjoxNGFjXSB0eXBlIDAwIGNsYXNzIDB4MTMwMDAwClsgICAgMy45Nzk4NTRdIHBjaSAwMDAwOjRi
OjAwLjA6IGVuYWJsaW5nIEV4dGVuZGVkIFRhZ3MKWyAgICAzLjk4NzM5M10gcGNpIDAwMDA6NDA6
MDcuMTogUENJIGJyaWRnZSB0byBbYnVzIDRiXQpbICAgIDMuOTg4MTA4XSBBQ1BJOiBQQ0k6IElu
dGVycnVwdCBsaW5rIExOS0EgY29uZmlndXJlZCBmb3IgSVJRIDAKWyAgICAzLjk5MTg0MV0gQUNQ
STogUENJOiBJbnRlcnJ1cHQgbGluayBMTktCIGNvbmZpZ3VyZWQgZm9yIElSUSAwClsgICAgMy45
OTU4MzRdIEFDUEk6IFBDSTogSW50ZXJydXB0IGxpbmsgTE5LQyBjb25maWd1cmVkIGZvciBJUlEg
MApbICAgIDMuOTk5ODQzXSBBQ1BJOiBQQ0k6IEludGVycnVwdCBsaW5rIExOS0QgY29uZmlndXJl
ZCBmb3IgSVJRIDAKWyAgICA0LjAwMzg0Ml0gQUNQSTogUENJOiBJbnRlcnJ1cHQgbGluayBMTktF
IGNvbmZpZ3VyZWQgZm9yIElSUSAwClsgICAgNC4wMDc4MzJdIEFDUEk6IFBDSTogSW50ZXJydXB0
IGxpbmsgTE5LRiBjb25maWd1cmVkIGZvciBJUlEgMApbICAgIDQuMDExODMzXSBBQ1BJOiBQQ0k6
IEludGVycnVwdCBsaW5rIExOS0cgY29uZmlndXJlZCBmb3IgSVJRIDAKWyAgICA0LjAxNTgzM10g
QUNQSTogUENJOiBJbnRlcnJ1cHQgbGluayBMTktIIGNvbmZpZ3VyZWQgZm9yIElSUSAwClsgICAg
NC4wMjEyOTldIHhlbjpiYWxsb29uOiBJbml0aWFsaXNpbmcgYmFsbG9vbiBkcml2ZXIKWyAgICA0
LjAyMzg1MF0gaW9tbXU6IERlZmF1bHQgZG9tYWluIHR5cGU6IFRyYW5zbGF0ZWQgClsgICAgNC4w
Mjc4MDJdIGlvbW11OiBETUEgZG9tYWluIFRMQiBpbnZhbGlkYXRpb24gcG9saWN5OiBsYXp5IG1v
ZGUgClsgICAgNC4wMzQ2MDldIGkyY19kZXNpZ253YXJlIEFNREkwMDEwOjAwOiBVbmtub3duIFN5
bm9wc3lzIGNvbXBvbmVudCB0eXBlOiAweGZmZmZmZmZmClsgICAgNC4wMzU4MjldIHBwc19jb3Jl
OiBMaW51eFBQUyBBUEkgdmVyLiAxIHJlZ2lzdGVyZWQKWyAgICA0LjAzOTgwNV0gcHBzX2NvcmU6
IFNvZnR3YXJlIHZlci4gNS4zLjYgLSBDb3B5cmlnaHQgMjAwNS0yMDA3IFJvZG9sZm8gR2lvbWV0
dGkgPGdpb21ldHRpQGxpbnV4Lml0PgpbICAgIDQuMDQzODA1XSBQVFAgY2xvY2sgc3VwcG9ydCBy
ZWdpc3RlcmVkClsgICAgNC4wNDc4MDZdIEVEQUMgTUM6IFZlcjogMy4wLjAKWyAgICA0LjA1MTgy
MV0gUmVnaXN0ZXJlZCBlZml2YXJzIG9wZXJhdGlvbnMKWyAgICA0LjA1NTg5Nl0gTmV0TGFiZWw6
IEluaXRpYWxpemluZwpbICAgIDQuMDU5ODAxXSBOZXRMYWJlbDogIGRvbWFpbiBoYXNoIHNpemUg
PSAxMjgKWyAgICA0LjA2MzgwMV0gTmV0TGFiZWw6ICBwcm90b2NvbHMgPSBVTkxBQkVMRUQgQ0lQ
U092NCBDQUxJUFNPClsgICAgNC4wNjc4MDZdIE5ldExhYmVsOiAgdW5sYWJlbGVkIHRyYWZmaWMg
YWxsb3dlZCBieSBkZWZhdWx0ClsgICAgNC4wNzE4MDJdIFBDSTogVXNpbmcgQUNQSSBmb3IgSVJR
IHJvdXRpbmcKWyAgICA0LjA4NDc2MV0gUENJOiBwY2lfY2FjaGVfbGluZV9zaXplIHNldCB0byA2
NCBieXRlcwpbICAgIDQuMDg1MTQ0XSBlODIwOiByZXNlcnZlIFJBTSBidWZmZXIgW21lbSAweDA5
YWZmMDAwLTB4MGJmZmZmZmZdClsgICAgNC4wODUxNDVdIGU4MjA6IHJlc2VydmUgUkFNIGJ1ZmZl
ciBbbWVtIDB4MGIwMDAwMDAtMHgwYmZmZmZmZl0KWyAgICA0LjA4NTE0Nl0gZTgyMDogcmVzZXJ2
ZSBSQU0gYnVmZmVyIFttZW0gMHhhMDRlOTAwMC0weGEzZmZmZmZmXQpbICAgIDQuMDg1MTQ2XSBl
ODIwOiByZXNlcnZlIFJBTSBidWZmZXIgW21lbSAweGFmZmZhYjljLTB4YWZmZmZmZmZdClsgICAg
NC4wODUxNDddIGU4MjA6IHJlc2VydmUgUkFNIGJ1ZmZlciBbbWVtIDB4MjVkZWUzMDAwLTB4MjVm
ZmZmZmZmXQpbICAgIDQuMDg1MTU5XSBwY2kgMDAwMDowMTowMC4wOiB2Z2FhcmI6IHNldHRpbmcg
YXMgYm9vdCBWR0EgZGV2aWNlClsgICAgNC4wODc3OThdIHBjaSAwMDAwOjAxOjAwLjA6IHZnYWFy
YjogYnJpZGdlIGNvbnRyb2wgcG9zc2libGUKWyAgICA0LjA4Nzc5OF0gcGNpIDAwMDA6MDE6MDAu
MDogdmdhYXJiOiBWR0EgZGV2aWNlIGFkZGVkOiBkZWNvZGVzPWlvK21lbSxvd25zPW5vbmUsbG9j
a3M9bm9uZQpbICAgIDQuMDg3ODA1XSBwY2kgMDAwMDo0MTowMC4wOiB2Z2FhcmI6IGJyaWRnZSBj
b250cm9sIHBvc3NpYmxlClsgICAgNC4wOTE3OThdIHBjaSAwMDAwOjQxOjAwLjA6IHZnYWFyYjog
VkdBIGRldmljZSBhZGRlZDogZGVjb2Rlcz1pbyttZW0sb3ducz1ub25lLGxvY2tzPW5vbmUKWyAg
ICA0LjA5MTgwMV0gdmdhYXJiOiBsb2FkZWQKWyAgICA0LjA5NTE5M10gY2xvY2tzb3VyY2U6IFN3
aXRjaGVkIHRvIGNsb2Nrc291cmNlIHRzYy1lYXJseQpbICAgIDQuMDk5MDc1XSBWRlM6IERpc2sg
cXVvdGFzIGRxdW90XzYuNi4wClsgICAgNC4xMDM2MjZdIFZGUzogRHF1b3QtY2FjaGUgaGFzaCB0
YWJsZSBlbnRyaWVzOiA1MTIgKG9yZGVyIDAsIDQwOTYgYnl0ZXMpClsgICAgNC4xMTE2NDVdIEFw
cEFybW9yOiBBcHBBcm1vciBGaWxlc3lzdGVtIEVuYWJsZWQKWyAgICA0LjExNzE2NV0gcG5wOiBQ
blAgQUNQSSBpbml0ClsgICAgNC4xMjExOThdIHVuY2hlY2tlZCBNU1IgYWNjZXNzIGVycm9yOiBS
RE1TUiBmcm9tIDB4YzAwMTAwNTggYXQgcklQOiAweGZmZmZmZmZmODAyNzc2MTMgKG5hdGl2ZV9y
ZWFkX21zcisweDMvMHgzMCkKWyAgICA0LjEzMzM1MF0gQ2FsbCBUcmFjZToKWyAgICA0LjEzNjE4
NF0gIDxUQVNLPgpbICAgIDQuMTM4NzI5XSAgPyBleF9oYW5kbGVyX21zci5jb2xkKzB4NWIvMHg2
YQpbICAgIDQuMTQzNjY2XSAgPyBmaXh1cF9leGNlcHRpb24rMHg4MS8weDMwMApbICAgIDQuMTQ4
MjEzXSAgPyBleGNfZ2VuZXJhbF9wcm90ZWN0aW9uKzB4MTNjLzB4NGEwClsgICAgNC4xNTM1NjNd
ICA/IGFzbV9leGNfZ2VuZXJhbF9wcm90ZWN0aW9uKzB4MjIvMHgzMApbICAgIDQuMTU5MDYwXSAg
PyBuYXRpdmVfcmVhZF9tc3IrMHgzLzB4MzAKWyAgICA0LjE2MzM5NV0gIGFtZF9nZXRfbW1jb25m
aWdfcmFuZ2UrMHgyYi8weDgwClsgICAgNC4xNjgyODldICBxdWlya19hbWRfbW1jb25maWdfYXJl
YSsweDM2LzB4YjAKWyAgICA0LjE3MzI5OV0gIHBucF9maXh1cF9kZXZpY2UrMHgzOS8weDUwClsg
ICAgNC4xNzc2NThdICBfX3BucF9hZGRfZGV2aWNlKzB4MWUvMHgxYjAKWyAgICA0LjE4MjMyOF0g
IHBucF9hZGRfZGV2aWNlKzB4NTAvMHgxMjAKWyAgICA0LjE4NjcyOF0gIHBucGFjcGlfYWRkX2Rl
dmljZV9oYW5kbGVyKzB4MWZhLzB4MjI4ClsgICAgNC4xOTIyNjhdICBhY3BpX25zX2dldF9kZXZp
Y2VfY2FsbGJhY2srMHgxMWUvMHgxZDAKWyAgICA0LjE5Nzg2M10gID8gX3Jhd19zcGluX3VubG9j
a19pcnFyZXN0b3JlKzB4YS8weDQwClsgICAgNC4yMDMzNjRdICA/IGRvd25fdGltZW91dCsweDNh
LzB4NjAKWyAgICA0LjIwNzUyNF0gIGFjcGlfbnNfd2Fsa19uYW1lc3BhY2UrMHgxZDAvMHgyNjAK
WyAgICA0LjIxMjY4MV0gID8gX3Jhd19zcGluX3VubG9ja19pcnFyZXN0b3JlKzB4YS8weDQwClsg
ICAgNC4yMTgyMjhdICA/IGFjcGlfZ2V0X2RldmljZXMrMHhjMC8weGMwClsgICAgNC4yMjI3Mzdd
ICBhY3BpX2dldF9kZXZpY2VzKzB4YTQvMHhjMApbICAgIDQuMjI3MTU1XSAgPyBwbnBhY3BpX3Nl
dHVwKzB4MzMvMHgzMwpbICAgIDQuMjMxMzk2XSAgPyBpc3BucGlkYWNwaSsweDkxLzB4OTEKWyAg
ICA0LjIzNTQzNl0gIHBucGFjcGlfaW5pdCsweDRiLzB4NmUKWyAgICA0LjIzOTQyMV0gIGRvX29u
ZV9pbml0Y2FsbCsweDU5LzB4MjIwClsgICAgNC4yNDM4MTJdICBrZXJuZWxfaW5pdF9mcmVlYWJs
ZSsweDIyMS8weDI4NgpbICAgIDQuMjQ4ODk2XSAgPyByZXN0X2luaXQrMHhkMC8weGQwClsgICAg
NC4yNTMwMTNdICBrZXJuZWxfaW5pdCsweDE2LzB4MTMwClsgICAgNC4yNTcyMjRdICByZXRfZnJv
bV9mb3JrKzB4MjIvMHgzMApbICAgIDQuMjYxNTQ3XSAgPC9UQVNLPgpbICAgIDQuMjY0MTAwXSBz
eXN0ZW0gMDA6MDA6IFttZW0gMHhlMDAwMDAwMC0weGVmZmZmZmZmXSBoYXMgYmVlbiByZXNlcnZl
ZApbICAgIDQuMjcyNTUzXSBzeXN0ZW0gMDA6MDI6IFtpbyAgMHgwMjkwLTB4MDI5Zl0gaGFzIGJl
ZW4gcmVzZXJ2ZWQKWyAgICA0LjI3OTM1Ml0gc3lzdGVtIDAwOjAyOiBbaW8gIDB4MDJhMC0weDAy
YWZdIGhhcyBiZWVuIHJlc2VydmVkClsgICAgNC4yODYzNzVdIHN5c3RlbSAwMDowMjogW2lvICAw
eDAyOTAtMHgwMjlmXSBoYXMgYmVlbiByZXNlcnZlZApbICAgIDQuMjkzMzg1XSBzeXN0ZW0gMDA6
MDI6IFtpbyAgMHgwMmEwLTB4MDJhZl0gaGFzIGJlZW4gcmVzZXJ2ZWQKWyAgICA0LjMwMDM2MV0g
cG5wIDAwOjAzOiBbZG1hIDAgZGlzYWJsZWRdClsgICAgNC4zMDA1ODBdIHN5c3RlbSAwMDowNDog
W2lvICAweDA0ZDAtMHgwNGQxXSBoYXMgYmVlbiByZXNlcnZlZApbICAgIDQuMzA3NjQ5XSBzeXN0
ZW0gMDA6MDQ6IFtpbyAgMHgwNDBiXSBoYXMgYmVlbiByZXNlcnZlZApbICAgIDQuMzEzOTk0XSBz
eXN0ZW0gMDA6MDQ6IFtpbyAgMHgwNGQ2XSBoYXMgYmVlbiByZXNlcnZlZApbICAgIDQuMzIwMzUw
XSBzeXN0ZW0gMDA6MDQ6IFtpbyAgMHgwYzAwLTB4MGMwMV0gaGFzIGJlZW4gcmVzZXJ2ZWQKWyAg
ICA0LjMyNzAzNF0gc3lzdGVtIDAwOjA0OiBbaW8gIDB4MGMxNF0gaGFzIGJlZW4gcmVzZXJ2ZWQK
WyAgICA0LjMzMzA0Ml0gc3lzdGVtIDAwOjA0OiBbaW8gIDB4MGM1MC0weDBjNTFdIGhhcyBiZWVu
IHJlc2VydmVkClsgICAgNC4zMzk2NzRdIHN5c3RlbSAwMDowNDogW2lvICAweDBjNTJdIGhhcyBi
ZWVuIHJlc2VydmVkClsgICAgNC4zNDU3NjNdIHN5c3RlbSAwMDowNDogW2lvICAweDBjNmNdIGhh
cyBiZWVuIHJlc2VydmVkClsgICAgNC4zNTE3ODJdIHN5c3RlbSAwMDowNDogW2lvICAweDBjNmZd
IGhhcyBiZWVuIHJlc2VydmVkClsgICAgNC4zNTc3NzBdIHN5c3RlbSAwMDowNDogW2lvICAweDBj
ZDgtMHgwY2RmXSBoYXMgYmVlbiByZXNlcnZlZApbICAgIDQuMzY0NDY2XSBzeXN0ZW0gMDA6MDQ6
IFtpbyAgMHgwODAwLTB4MDg5Zl0gaGFzIGJlZW4gcmVzZXJ2ZWQKWyAgICA0LjM3MTIxOV0gc3lz
dGVtIDAwOjA0OiBbaW8gIDB4MGIwMC0weDBiMGZdIGhhcyBiZWVuIHJlc2VydmVkClsgICAgNC4z
Nzc5MTNdIHN5c3RlbSAwMDowNDogW2lvICAweDBiMjAtMHgwYjNmXSBoYXMgYmVlbiByZXNlcnZl
ZApbICAgIDQuMzg0Njg0XSBzeXN0ZW0gMDA6MDQ6IFtpbyAgMHgwOTAwLTB4MDkwZl0gaGFzIGJl
ZW4gcmVzZXJ2ZWQKWyAgICA0LjM5MTY1NV0gc3lzdGVtIDAwOjA0OiBbaW8gIDB4MDkxMC0weDA5
MWZdIGhhcyBiZWVuIHJlc2VydmVkClsgICAgNC4zOTg3MjNdIHN5c3RlbSAwMDowNDogW21lbSAw
eGZlYzAwMDAwLTB4ZmVjMDBmZmZdIGNvdWxkIG5vdCBiZSByZXNlcnZlZApbICAgIDQuNDA3MDc4
XSBzeXN0ZW0gMDA6MDQ6IFttZW0gMHhmZWRjMDAwMC0weGZlZGMwZmZmXSBoYXMgYmVlbiByZXNl
cnZlZApbICAgIDQuNDE0OTUxXSBzeXN0ZW0gMDA6MDQ6IFttZW0gMHhmZWUwMDAwMC0weGZlZTAw
ZmZmXSBoYXMgYmVlbiByZXNlcnZlZApbICAgIDQuNDIyNzgyXSBzeXN0ZW0gMDA6MDQ6IFttZW0g
MHhmZWQ4MDAwMC0weGZlZDhmZmZmXSBjb3VsZCBub3QgYmUgcmVzZXJ2ZWQKWyAgICA0LjQzMTEy
OF0gc3lzdGVtIDAwOjA0OiBbbWVtIDB4ZmVjMTAwMDAtMHhmZWMxMGZmZl0gaGFzIGJlZW4gcmVz
ZXJ2ZWQKWyAgICA0LjQzODY5M10gc3lzdGVtIDAwOjA0OiBbbWVtIDB4ZmYwMDAwMDAtMHhmZmZm
ZmZmZl0gaGFzIGJlZW4gcmVzZXJ2ZWQKWyAgICA0LjQ0NzU2M10gcG5wOiBQblAgQUNQSTogZm91
bmQgNiBkZXZpY2VzClsgICAgNC40NTgyMzFdIFBNLVRpbWVyIGZhaWxlZCBjb25zaXN0ZW5jeSBj
aGVjayAgKDB4ZmZmZmZmKSAtIGFib3J0aW5nLgpbICAgIDQuNDY1ODgyXSBORVQ6IFJlZ2lzdGVy
ZWQgUEZfSU5FVCBwcm90b2NvbCBmYW1pbHkKWyAgICA0LjQ3MTY0OV0gSVAgaWRlbnRzIGhhc2gg
dGFibGUgZW50cmllczogMTMxMDcyIChvcmRlcjogOCwgMTA0ODU3NiBieXRlcywgbGluZWFyKQpb
ICAgIDQuNDgxMTk0XSB0Y3BfbGlzdGVuX3BvcnRhZGRyX2hhc2ggaGFzaCB0YWJsZSBlbnRyaWVz
OiA0MDk2IChvcmRlcjogNCwgNjU1MzYgYnl0ZXMsIGxpbmVhcikKWyAgICA0LjQ5MTA0Ml0gVGFi
bGUtcGVydHVyYiBoYXNoIHRhYmxlIGVudHJpZXM6IDY1NTM2IChvcmRlcjogNiwgMjYyMTQ0IGJ5
dGVzLCBsaW5lYXIpClsgICAgNC41MDAzNzNdIFRDUCBlc3RhYmxpc2hlZCBoYXNoIHRhYmxlIGVu
dHJpZXM6IDY1NTM2IChvcmRlcjogNywgNTI0Mjg4IGJ5dGVzLCBsaW5lYXIpClsgICAgNC41MDk5
MjZdIFRDUCBiaW5kIGhhc2ggdGFibGUgZW50cmllczogNjU1MzYgKG9yZGVyOiA5LCAyMDk3MTUy
IGJ5dGVzLCBsaW5lYXIpClsgICAgNC41MTg2NTRdIFRDUDogSGFzaCB0YWJsZXMgY29uZmlndXJl
ZCAoZXN0YWJsaXNoZWQgNjU1MzYgYmluZCA2NTUzNikKWyAgICA0LjUyNjUzMV0gTVBUQ1AgdG9r
ZW4gaGFzaCB0YWJsZSBlbnRyaWVzOiA4MTkyIChvcmRlcjogNSwgMTk2NjA4IGJ5dGVzLCBsaW5l
YXIpClsgICAgNC41MzU0MzhdIFVEUCBoYXNoIHRhYmxlIGVudHJpZXM6IDQwOTYgKG9yZGVyOiA1
LCAxMzEwNzIgYnl0ZXMsIGxpbmVhcikKWyAgICA0LjU0MzU2NF0gVURQLUxpdGUgaGFzaCB0YWJs
ZSBlbnRyaWVzOiA0MDk2IChvcmRlcjogNSwgMTMxMDcyIGJ5dGVzLCBsaW5lYXIpClsgICAgNC41
NTIyMjhdIE5FVDogUmVnaXN0ZXJlZCBQRl9VTklYL1BGX0xPQ0FMIHByb3RvY29sIGZhbWlseQpb
ICAgIDQuNTU5MDQ4XSBORVQ6IFJlZ2lzdGVyZWQgUEZfWERQIHByb3RvY29sIGZhbWlseQpbICAg
IDQuNTY0NzI0XSBwY2kgMDAwMDpjMDowNy4xOiBQQ0kgYnJpZGdlIHRvIFtidXMgYzFdClsgICAg
NC41NzA1NzVdIHBjaSAwMDAwOmMwOjA3LjE6ICAgYnJpZGdlIHdpbmRvdyBbbWVtIDB4ZDVmMDAw
MDAtMHhkNWZmZmZmZl0KWyAgICA0LjU3ODQ5OV0gcGNpX2J1cyAwMDAwOmMwOiByZXNvdXJjZSA0
IFtpbyAgMHhhMDAwLTB4ZmZmZiB3aW5kb3ddClsgICAgNC41ODU2NzhdIHBjaV9idXMgMDAwMDpj
MDogcmVzb3VyY2UgNSBbbWVtIDB4ZDQwMDAwMDAtMHhkNWZmZmZmZiB3aW5kb3ddClsgICAgNC41
OTM4NjddIHBjaV9idXMgMDAwMDpjMDogcmVzb3VyY2UgNiBbbWVtIDB4MTAwMjA0MDAwMDAtMHgx
NTliMzNmZmZmZiB3aW5kb3ddClsgICAgNC42MDI0MDldIHBjaV9idXMgMDAwMDpjMTogcmVzb3Vy
Y2UgMSBbbWVtIDB4ZDVmMDAwMDAtMHhkNWZmZmZmZl0KWyAgICA0LjYxMDAyMF0gcGNpIDAwMDA6
ODA6MDEuMjogUENJIGJyaWRnZSB0byBbYnVzIDgxXQpbICAgIDQuNjE2MDIzXSBwY2kgMDAwMDo4
MDowMS4yOiAgIGJyaWRnZSB3aW5kb3cgW21lbSAweGNhZjAwMDAwLTB4Y2FmZmZmZmZdClsgICAg
NC42MjQxMjldIHBjaSAwMDAwOjgwOjAxLjM6IFBDSSBicmlkZ2UgdG8gW2J1cyA4Ml0KWyAgICA0
LjYzMDEyNV0gcGNpIDAwMDA6ODA6MDEuMzogICBicmlkZ2Ugd2luZG93IFttZW0gMHhjYWUwMDAw
MC0weGNhZWZmZmZmXQpbICAgIDQuNjM4MTAxXSBwY2kgMDAwMDo4MDowMy4xOiBQQ0kgYnJpZGdl
IHRvIFtidXMgODNdClsgICAgNC42NDM5NDFdIHBjaSAwMDAwOjgwOjAzLjE6ICAgYnJpZGdlIHdp
bmRvdyBbbWVtIDB4Y2FkMDAwMDAtMHhjYWRmZmZmZl0KWyAgICA0LjY1MjE2OF0gcGNpIDAwMDA6
ODU6MDMuMDogUENJIGJyaWRnZSB0byBbYnVzIDg2XQpbICAgIDQuNjU4MTcxXSBwY2kgMDAwMDo4
NTowMy4wOiAgIGJyaWRnZSB3aW5kb3cgW2lvICAweDkwMDAtMHg5ZmZmXQpbICAgIDQuNjY1MzIw
XSBwY2kgMDAwMDo4NTowMy4wOiAgIGJyaWRnZSB3aW5kb3cgW21lbSAweGNhYzAwMDAwLTB4Y2Fj
ZmZmZmZdClsgICAgNC42NzI5NzddIHBjaSAwMDAwOjg1OjAzLjA6ICAgYnJpZGdlIHdpbmRvdyBb
bWVtIDB4MzE5YjMzMDAwMDAtMHgzMTliMzNmZmZmZiA2NGJpdCBwcmVmXQpbICAgIDQuNjgyOTI3
XSBwY2kgMDAwMDo4NTowNy4wOiBQQ0kgYnJpZGdlIHRvIFtidXMgODddClsgICAgNC42ODg5MzFd
IHBjaSAwMDAwOjg1OjA3LjA6ICAgYnJpZGdlIHdpbmRvdyBbaW8gIDB4ODAwMC0weDhmZmZdClsg
ICAgNC42OTYxMDhdIHBjaSAwMDAwOjg1OjA3LjA6ICAgYnJpZGdlIHdpbmRvdyBbbWVtIDB4Y2Fi
MDAwMDAtMHhjYWJmZmZmZl0KWyAgICA0LjcwNDE3OV0gcGNpIDAwMDA6ODU6MDcuMDogICBicmlk
Z2Ugd2luZG93IFttZW0gMHgzMTliMzIwMDAwMC0weDMxOWIzMmZmZmZmIDY0Yml0IHByZWZdClsg
ICAgNC43MTM5NTNdIHBjaSAwMDAwOjg0OjAwLjA6IFBDSSBicmlkZ2UgdG8gW2J1cyA4NS04N10K
WyAgICA0LjcyMDA5NV0gcGNpIDAwMDA6ODQ6MDAuMDogICBicmlkZ2Ugd2luZG93IFtpbyAgMHg4
MDAwLTB4OWZmZl0KWyAgICA0LjcyNzMwMF0gcGNpIDAwMDA6ODQ6MDAuMDogICBicmlkZ2Ugd2lu
ZG93IFttZW0gMHhjYWIwMDAwMC0weGNhY2ZmZmZmXQpbICAgIDQuNzM1NDUxXSBwY2kgMDAwMDo4
NDowMC4wOiAgIGJyaWRnZSB3aW5kb3cgW21lbSAweDMxOWIzMjAwMDAwLTB4MzE5YjMzZmZmZmYg
NjRiaXQgcHJlZl0KWyAgICA0Ljc0NTE2NF0gcGNpIDAwMDA6ODA6MDMuMjogUENJIGJyaWRnZSB0
byBbYnVzIDg0LTg3XQpbICAgIDQuNzUxNDM2XSBwY2kgMDAwMDo4MDowMy4yOiAgIGJyaWRnZSB3
aW5kb3cgW2lvICAweDgwMDAtMHg5ZmZmXQpbICAgIDQuNzU4Nzg3XSBwY2kgMDAwMDo4MDowMy4y
OiAgIGJyaWRnZSB3aW5kb3cgW21lbSAweGNhYjAwMDAwLTB4Y2FjZmZmZmZdClsgICAgNC43NjY4
NjBdIHBjaSAwMDAwOjgwOjAzLjI6ICAgYnJpZGdlIHdpbmRvdyBbbWVtIDB4MzE5YjMyMDAwMDAt
MHgzMTliMzNmZmZmZiA2NGJpdCBwcmVmXQpbICAgIDQuNzc2NTgwXSBwY2kgMDAwMDo4MDowNy4x
OiBQQ0kgYnJpZGdlIHRvIFtidXMgODhdClsgICAgNC43ODI1MzFdIHBjaV9idXMgMDAwMDo4MDog
cmVzb3VyY2UgNCBbaW8gIDB4NzAwMC0weDlmZmYgd2luZG93XQpbICAgIDQuNzg5NjgzXSBwY2lf
YnVzIDAwMDA6ODA6IHJlc291cmNlIDUgW21lbSAweGNhMDAwMDAwLTB4Y2FmZmZmZmYgd2luZG93
XQpbICAgIDQuNzk3OTM5XSBwY2lfYnVzIDAwMDA6ODA6IHJlc291cmNlIDYgW21lbSAweDJjMDIw
NDAwMDAwLTB4MzE5YjMzZmZmZmYgd2luZG93XQpbICAgIDQuODA2ODQ0XSBwY2lfYnVzIDAwMDA6
ODE6IHJlc291cmNlIDEgW21lbSAweGNhZjAwMDAwLTB4Y2FmZmZmZmZdClsgICAgNC44MTQyNTFd
IHBjaV9idXMgMDAwMDo4MjogcmVzb3VyY2UgMSBbbWVtIDB4Y2FlMDAwMDAtMHhjYWVmZmZmZl0K
WyAgICA0LjgyMTQ3Nl0gcGNpX2J1cyAwMDAwOjgzOiByZXNvdXJjZSAxIFttZW0gMHhjYWQwMDAw
MC0weGNhZGZmZmZmXQpbICAgIDQuODI4ODQ3XSBwY2lfYnVzIDAwMDA6ODQ6IHJlc291cmNlIDAg
W2lvICAweDgwMDAtMHg5ZmZmXQpbICAgIDQuODM1MzUyXSBwY2lfYnVzIDAwMDA6ODQ6IHJlc291
cmNlIDEgW21lbSAweGNhYjAwMDAwLTB4Y2FjZmZmZmZdClsgICAgNC44NDI4MDJdIHBjaV9idXMg
MDAwMDo4NDogcmVzb3VyY2UgMiBbbWVtIDB4MzE5YjMyMDAwMDAtMHgzMTliMzNmZmZmZiA2NGJp
dCBwcmVmXQpbICAgIDQuODUxOTI1XSBwY2lfYnVzIDAwMDA6ODU6IHJlc291cmNlIDAgW2lvICAw
eDgwMDAtMHg5ZmZmXQpbICAgIDQuODU4NTA3XSBwY2lfYnVzIDAwMDA6ODU6IHJlc291cmNlIDEg
W21lbSAweGNhYjAwMDAwLTB4Y2FjZmZmZmZdClsgICAgNC44NjU5OTFdIHBjaV9idXMgMDAwMDo4
NTogcmVzb3VyY2UgMiBbbWVtIDB4MzE5YjMyMDAwMDAtMHgzMTliMzNmZmZmZiA2NGJpdCBwcmVm
XQpbICAgIDQuODc1MjA5XSBwY2lfYnVzIDAwMDA6ODY6IHJlc291cmNlIDAgW2lvICAweDkwMDAt
MHg5ZmZmXQpbICAgIDQuODgxODQwXSBwY2lfYnVzIDAwMDA6ODY6IHJlc291cmNlIDEgW21lbSAw
eGNhYzAwMDAwLTB4Y2FjZmZmZmZdClsgICAgNC44ODkyMzddIHBjaV9idXMgMDAwMDo4NjogcmVz
b3VyY2UgMiBbbWVtIDB4MzE5YjMzMDAwMDAtMHgzMTliMzNmZmZmZiA2NGJpdCBwcmVmXQpbICAg
IDQuODk4MzA4XSBwY2lfYnVzIDAwMDA6ODc6IHJlc291cmNlIDAgW2lvICAweDgwMDAtMHg4ZmZm
XQpbICAgIDQuOTA0ODY5XSBwY2lfYnVzIDAwMDA6ODc6IHJlc291cmNlIDEgW21lbSAweGNhYjAw
MDAwLTB4Y2FiZmZmZmZdClsgICAgNC45MTIzMjhdIHBjaV9idXMgMDAwMDo4NzogcmVzb3VyY2Ug
MiBbbWVtIDB4MzE5YjMyMDAwMDAtMHgzMTliMzJmZmZmZiA2NGJpdCBwcmVmXQpbICAgIDQuOTIx
NDg0XSBwY2kgMDAwMDowMDowMS4xOiBQQ0kgYnJpZGdlIHRvIFtidXMgMDFdClsgICAgNC45Mjcx
NThdIHBjaSAwMDAwOjAwOjAxLjE6ICAgYnJpZGdlIHdpbmRvdyBbaW8gIDB4MzAwMC0weDNmZmZd
ClsgICAgNC45MzQwMzldIHBjaSAwMDAwOjAwOjAxLjE6ICAgYnJpZGdlIHdpbmRvdyBbbWVtIDB4
ZjBmMDAwMDAtMHhmMGZmZmZmZl0KWyAgICA0Ljk0MTk5M10gcGNpIDAwMDA6MDA6MDEuMTogICBi
cmlkZ2Ugd2luZG93IFttZW0gMHg0ZDgwMDAwMDAwMC0weDRkOTAwMWZmZmZmIDY0Yml0IHByZWZd
ClsgICAgNC45NTE4MjVdIHBjaSAwMDAwOjAwOjA1LjE6IFBDSSBicmlkZ2UgdG8gW2J1cyAwMl0K
WyAgICA0Ljk1NzgzMl0gcGNpIDAwMDA6MDA6MDUuMjogUENJIGJyaWRnZSB0byBbYnVzIDAzXQpb
ICAgIDQuOTYzNzgwXSBwY2kgMDAwMDowMDowNS4zOiBQQ0kgYnJpZGdlIHRvIFtidXMgMDRdClsg
ICAgNC45Njk1MTRdIHBjaSAwMDAwOjAwOjA1LjQ6IFBDSSBicmlkZ2UgdG8gW2J1cyAwNV0KWyAg
ICA0Ljk3NTQ5MV0gcGNpIDAwMDA6MDA6MDcuMTogUENJIGJyaWRnZSB0byBbYnVzIDA2XQpbICAg
IDQuOTgxMzkyXSBwY2kgMDAwMDowMDowNy4xOiAgIGJyaWRnZSB3aW5kb3cgW21lbSAweGYwYjAw
MDAwLTB4ZjBkZmZmZmZdClsgICAgNC45ODk0OTNdIHBjaSAwMDAwOjAwOjA3LjI6IFBDSSBicmlk
Z2UgdG8gW2J1cyAwN10KWyAgICA0Ljk5NTQzM10gcGNpIDAwMDA6MDA6MDcuMjogICBicmlkZ2Ug
d2luZG93IFttZW0gMHhmMGUwMDAwMC0weGYwZWZmZmZmXQpbICAgIDUuMDAzNTAyXSBwY2lfYnVz
IDAwMDA6MDA6IHJlc291cmNlIDQgW2lvICAweDAwMDAtMHgwMmU3IHdpbmRvd10KWyAgICA1LjAx
MDgwMV0gcGNpX2J1cyAwMDAwOjAwOiByZXNvdXJjZSA1IFtpbyAgMHgwMzAwLTB4MDNhZiB3aW5k
b3ddClsgICAgNS4wMTc5OTVdIHBjaV9idXMgMDAwMDowMDogcmVzb3VyY2UgNiBbaW8gIDB4MDQw
MC0weDBjZjcgd2luZG93XQpbICAgIDUuMDI1NDExXSBwY2lfYnVzIDAwMDA6MDA6IHJlc291cmNl
IDcgW2lvICAweDAzYjAtMHgwM2RmIHdpbmRvd10KWyAgICA1LjAzMjg5NV0gcGNpX2J1cyAwMDAw
OjAwOiByZXNvdXJjZSA4IFtpbyAgMHgxMDAwLTB4M2ZmZiB3aW5kb3ddClsgICAgNS4wMzk5Mjld
IHBjaV9idXMgMDAwMDowMDogcmVzb3VyY2UgOSBbbWVtIDB4MDAwYTAwMDAtMHgwMDBkZmZmZiB3
aW5kb3ddClsgICAgNS4wNDgyNDddIHBjaV9idXMgMDAwMDowMDogcmVzb3VyY2UgMTAgW21lbSAw
eGYwMDAwMDAwLTB4ZjBmZmZmZmYgd2luZG93XQpbICAgIDUuMDU2MjEwXSBwY2lfYnVzIDAwMDA6
MDA6IHJlc291cmNlIDExIFttZW0gMHg0ODAyMDQwMDAwMC0weDRkOWIzM2ZmZmZmIHdpbmRvd10K
WyAgICA1LjA2NDk3MF0gcGNpX2J1cyAwMDAwOjAxOiByZXNvdXJjZSAwIFtpbyAgMHgzMDAwLTB4
M2ZmZl0KWyAgICA1LjA3MTYwOV0gcGNpX2J1cyAwMDAwOjAxOiByZXNvdXJjZSAxIFttZW0gMHhm
MGYwMDAwMC0weGYwZmZmZmZmXQpbICAgIDUuMDc4ODUwXSBwY2lfYnVzIDAwMDA6MDE6IHJlc291
cmNlIDIgW21lbSAweDRkODAwMDAwMDAwLTB4NGQ5MDAxZmZmZmYgNjRiaXQgcHJlZl0KWyAgICA1
LjA4ODEwNF0gcGNpX2J1cyAwMDAwOjA2OiByZXNvdXJjZSAxIFttZW0gMHhmMGIwMDAwMC0weGYw
ZGZmZmZmXQpbICAgIDUuMDk1MjIzXSBwY2lfYnVzIDAwMDA6MDc6IHJlc291cmNlIDEgW21lbSAw
eGYwZTAwMDAwLTB4ZjBlZmZmZmZdClsgICAgNS4xMDIzMzZdIHBjaSAwMDAwOjQwOjAxLjE6IFBD
SSBicmlkZ2UgdG8gW2J1cyA0MV0KWyAgICA1LjEwODMxNF0gcGNpIDAwMDA6NDA6MDEuMTogICBi
cmlkZ2Ugd2luZG93IFtpbyAgMHg2MDAwLTB4NmZmZl0KWyAgICA1LjExNTY0NV0gcGNpIDAwMDA6
NDA6MDEuMTogICBicmlkZ2Ugd2luZG93IFttZW0gMHhjMGMwMDAwMC0weGMwY2ZmZmZmXQpbICAg
IDUuMTIzNzE2XSBwY2kgMDAwMDo0MDowMS4xOiAgIGJyaWRnZSB3aW5kb3cgW21lbSAweDY5OTQw
MDAwMDAwLTB4Njk5N2ZmZmZmZmYgNjRiaXQgcHJlZl0KWyAgICA1LjEzMzQyM10gcGNpIDAwMDA6
NDA6MDMuMTogUENJIGJyaWRnZSB0byBbYnVzIDQyXQpbICAgIDUuMTM5Mzc5XSBwY2kgMDAwMDo0
MDowMy4xOiAgIGJyaWRnZSB3aW5kb3cgW21lbSAweGMwMDAwMDAwLTB4YzA0ZmZmZmZdClsgICAg
NS4xNDczMjhdIHBjaSAwMDAwOjQwOjAzLjI6IFBDSSBicmlkZ2UgdG8gW2J1cyA0M10KWyAgICA1
LjE1MzEyN10gcGNpIDAwMDA6NDA6MDMuMjogICBicmlkZ2Ugd2luZG93IFttZW0gMHhjMGIwMDAw
MC0weGMwYmZmZmZmXQpbICAgIDUuMTYxMTE2XSBwY2kgMDAwMDo0NTowMC4wOiBQQ0kgYnJpZGdl
IHRvIFtidXMgNDZdClsgICAgNS4xNjcxMDldIHBjaSAwMDAwOjQ1OjAwLjA6ICAgYnJpZGdlIHdp
bmRvdyBbbWVtIDB4YzBhMDAwMDAtMHhjMGFmZmZmZl0KWyAgICA1LjE3NTEyMF0gcGNpIDAwMDA6
NDU6MDAuMDogICBicmlkZ2Ugd2luZG93IFttZW0gMHg2OTk4MDAwMDAwMC0weDY5OTgwMGZmZmZm
IDY0Yml0IHByZWZdClsgICAgNS4xODUwMzddIHBjaSAwMDAwOjQ1OjAyLjA6IFBDSSBicmlkZ2Ug
dG8gW2J1cyA0N10KWyAgICA1LjE5MDk1OF0gcGNpIDAwMDA6NDU6MDIuMDogICBicmlkZ2Ugd2lu
ZG93IFtpbyAgMHg1MDAwLTB4NWZmZl0KWyAgICA1LjE5ODMxMF0gcGNpIDAwMDA6NDU6MDIuMDog
ICBicmlkZ2Ugd2luZG93IFttZW0gMHhjMDkwMDAwMC0weGMwOWZmZmZmXQpbICAgIDUuMjA2Mzc1
XSBwY2kgMDAwMDo0NTowOC4wOiBQQ0kgYnJpZGdlIHRvIFtidXMgNDhdClsgICAgNS4yMTIyMjNd
IHBjaSAwMDAwOjQ1OjA4LjA6ICAgYnJpZGdlIHdpbmRvdyBbbWVtIDB4YzA4MDAwMDAtMHhjMDhm
ZmZmZl0KWyAgICA1LjIyMDM5Nl0gcGNpIDAwMDA6NDU6MGMuMDogUENJIGJyaWRnZSB0byBbYnVz
IDQ5XQpbICAgIDUuMjI2MjgyXSBwY2kgMDAwMDo0NTowYy4wOiAgIGJyaWRnZSB3aW5kb3cgW21l
bSAweGMwNzAwMDAwLTB4YzA3ZmZmZmZdClsgICAgNS4yMzQyNTZdIHBjaSAwMDAwOjQ1OjBkLjA6
IFBDSSBicmlkZ2UgdG8gW2J1cyA0YV0KWyAgICA1LjI0MDE0Ml0gcGNpIDAwMDA6NDU6MGQuMDog
ICBicmlkZ2Ugd2luZG93IFttZW0gMHhjMDYwMDAwMC0weGMwNmZmZmZmXQpbICAgIDUuMjQ4MjI4
XSBwY2kgMDAwMDo0NDowMC4wOiBQQ0kgYnJpZGdlIHRvIFtidXMgNDUtNGFdClsgICAgNS4yNTQ1
MjNdIHBjaSAwMDAwOjQ0OjAwLjA6ICAgYnJpZGdlIHdpbmRvdyBbaW8gIDB4NTAwMC0weDVmZmZd
ClsgICAgNS4yNjE1MDRdIHBjaSAwMDAwOjQ0OjAwLjA6ICAgYnJpZGdlIHdpbmRvdyBbbWVtIDB4
YzA2MDAwMDAtMHhjMGFmZmZmZl0KWyAgICA1LjI2OTU1MV0gcGNpIDAwMDA6NDQ6MDAuMDogICBi
cmlkZ2Ugd2luZG93IFttZW0gMHg2OTk4MDAwMDAwMC0weDY5OTgwMGZmZmZmIDY0Yml0IHByZWZd
ClsgICAgNS4yNzkyODNdIHBjaSAwMDAwOjQwOjAzLjM6IFBDSSBicmlkZ2UgdG8gW2J1cyA0NC00
YV0KWyAgICA1LjI4NTU4M10gcGNpIDAwMDA6NDA6MDMuMzogICBicmlkZ2Ugd2luZG93IFtpbyAg
MHg1MDAwLTB4NWZmZl0KWyAgICA1LjI5MjcxMl0gcGNpIDAwMDA6NDA6MDMuMzogICBicmlkZ2Ug
d2luZG93IFttZW0gMHhjMDYwMDAwMC0weGMwYWZmZmZmXQpbICAgIDUuMzAwODE5XSBwY2kgMDAw
MDo0MDowMy4zOiAgIGJyaWRnZSB3aW5kb3cgW21lbSAweDY5OTgwMDAwMDAwLTB4Njk5ODAwZmZm
ZmYgNjRiaXQgcHJlZl0KWyAgICA1LjMxMDExOF0gcGNpIDAwMDA6NDA6MDcuMTogUENJIGJyaWRn
ZSB0byBbYnVzIDRiXQpbICAgIDUuMzE2MDY1XSBwY2lfYnVzIDAwMDA6NDA6IHJlc291cmNlIDQg
W2lvICAweDQwMDAtMHg2ZmZmIHdpbmRvd10KWyAgICA1LjMyMzM5OV0gcGNpX2J1cyAwMDAwOjQw
OiByZXNvdXJjZSA1IFttZW0gMHhjMDAwMDAwMC0weGMwZmZmZmZmIHdpbmRvd10KWyAgICA1LjMz
MTYwNV0gcGNpX2J1cyAwMDAwOjQwOiByZXNvdXJjZSA2IFttZW0gMHg2NDAyMDQwMDAwMC0weDY5
OWIzM2ZmZmZmIHdpbmRvd10KWyAgICA1LjM0MDMyNl0gcGNpX2J1cyAwMDAwOjQxOiByZXNvdXJj
ZSAwIFtpbyAgMHg2MDAwLTB4NmZmZl0KWyAgICA1LjM0NjYwMl0gcGNpX2J1cyAwMDAwOjQxOiBy
ZXNvdXJjZSAxIFttZW0gMHhjMGMwMDAwMC0weGMwY2ZmZmZmXQpbICAgIDUuMzUzNjU3XSBwY2lf
YnVzIDAwMDA6NDE6IHJlc291cmNlIDIgW21lbSAweDY5OTQwMDAwMDAwLTB4Njk5N2ZmZmZmZmYg
NjRiaXQgcHJlZl0KWyAgICA1LjM2MjY1Nl0gcGNpX2J1cyAwMDAwOjQyOiByZXNvdXJjZSAxIFtt
ZW0gMHhjMDAwMDAwMC0weGMwNGZmZmZmXQpbICAgIDUuMzcwMDcwXSBwY2lfYnVzIDAwMDA6NDM6
IHJlc291cmNlIDEgW21lbSAweGMwYjAwMDAwLTB4YzBiZmZmZmZdClsgICAgNS4zNzc0MTldIHBj
aV9idXMgMDAwMDo0NDogcmVzb3VyY2UgMCBbaW8gIDB4NTAwMC0weDVmZmZdClsgICAgNS4zODM5
MDJdIHBjaV9idXMgMDAwMDo0NDogcmVzb3VyY2UgMSBbbWVtIDB4YzA2MDAwMDAtMHhjMGFmZmZm
Zl0KWyAgICA1LjM5MDkzOF0gcGNpX2J1cyAwMDAwOjQ0OiByZXNvdXJjZSAyIFttZW0gMHg2OTk4
MDAwMDAwMC0weDY5OTgwMGZmZmZmIDY0Yml0IHByZWZdClsgICAgNS4zOTk2NDBdIHBjaV9idXMg
MDAwMDo0NTogcmVzb3VyY2UgMCBbaW8gIDB4NTAwMC0weDVmZmZdClsgICAgNS40MDU5MzNdIHBj
aV9idXMgMDAwMDo0NTogcmVzb3VyY2UgMSBbbWVtIDB4YzA2MDAwMDAtMHhjMGFmZmZmZl0KWyAg
ICA1LjQxMzA0N10gcGNpX2J1cyAwMDAwOjQ1OiByZXNvdXJjZSAyIFttZW0gMHg2OTk4MDAwMDAw
MC0weDY5OTgwMGZmZmZmIDY0Yml0IHByZWZdClsgICAgNS40MjIzNjBdIHBjaV9idXMgMDAwMDo0
NjogcmVzb3VyY2UgMSBbbWVtIDB4YzBhMDAwMDAtMHhjMGFmZmZmZl0KWyAgICA1LjQyOTg1M10g
cGNpX2J1cyAwMDAwOjQ2OiByZXNvdXJjZSAyIFttZW0gMHg2OTk4MDAwMDAwMC0weDY5OTgwMGZm
ZmZmIDY0Yml0IHByZWZdClsgICAgNS40MzkwNTFdIHBjaV9idXMgMDAwMDo0NzogcmVzb3VyY2Ug
MCBbaW8gIDB4NTAwMC0weDVmZmZdClsgICAgNS40NDUzMzFdIHBjaV9idXMgMDAwMDo0NzogcmVz
b3VyY2UgMSBbbWVtIDB4YzA5MDAwMDAtMHhjMDlmZmZmZl0KWyAgICA1LjQ1MjY0M10gcGNpX2J1
cyAwMDAwOjQ4OiByZXNvdXJjZSAxIFttZW0gMHhjMDgwMDAwMC0weGMwOGZmZmZmXQpbICAgIDUu
NDU5NzcxXSBwY2lfYnVzIDAwMDA6NDk6IHJlc291cmNlIDEgW21lbSAweGMwNzAwMDAwLTB4YzA3
ZmZmZmZdClsgICAgNS40NjcyMjFdIHBjaV9idXMgMDAwMDo0YTogcmVzb3VyY2UgMSBbbWVtIDB4
YzA2MDAwMDAtMHhjMDZmZmZmZl0KWyAgICA1LjQ3NTA2OF0gcGNpIDAwMDA6MDE6MDAuMTogRDAg
cG93ZXIgc3RhdGUgZGVwZW5kcyBvbiAwMDAwOjAxOjAwLjAKWyAgICA1LjQ4MjQyMF0gcGNpIDAw
MDA6NDE6MDAuMTogRDAgcG93ZXIgc3RhdGUgZGVwZW5kcyBvbiAwMDAwOjQxOjAwLjAKWyAgICA1
LjQ4OTc1MF0gUENJOiBDTFMgNjQgYnl0ZXMsIGRlZmF1bHQgNjQKWyAgICA1LjQ5NDMwNV0gUENJ
LURNQTogVXNpbmcgc29mdHdhcmUgYm91bmNlIGJ1ZmZlcmluZyBmb3IgSU8gKFNXSU9UTEIpClsg
ICAgNS40OTQzNDddIFRyeWluZyB0byB1bnBhY2sgcm9vdGZzIGltYWdlIGFzIGluaXRyYW1mcy4u
LgpbICAgIDUuNTAxNjI4XSBzb2Z0d2FyZSBJTyBUTEI6IG1hcHBlZCBbbWVtIDB4MDAwMDAwMDA5
YzRlOTAwMC0weDAwMDAwMDAwYTA0ZTkwMDBdICg2NE1CKQpbICAgIDUuNTAxNjUwXSBjbG9ja3Nv
dXJjZTogdHNjOiBtYXNrOiAweGZmZmZmZmZmZmZmZmZmZmYgbWF4X2N5Y2xlczogMHgzYzhhM2Ji
ZTQ0MCwgbWF4X2lkbGVfbnM6IDQ0MDc5NTI5ODE4NyBucwpbICAgIDUuNTI4Mzc4XSBjbG9ja3Nv
dXJjZTogU3dpdGNoZWQgdG8gY2xvY2tzb3VyY2UgdHNjClsgICAgNS41MzUxMTddIEluaXRpYWxp
c2Ugc3lzdGVtIHRydXN0ZWQga2V5cmluZ3MKWyAgICA1LjU0MDA2OV0gS2V5IHR5cGUgYmxhY2ts
aXN0IHJlZ2lzdGVyZWQKWyAgICA1LjU0NDcxOF0gd29ya2luZ3NldDogdGltZXN0YW1wX2JpdHM9
MzYgbWF4X29yZGVyPTIxIGJ1Y2tldF9vcmRlcj0wClsgICAgNS41NTI2MjJdIHpidWQ6IGxvYWRl
ZApbICAgIDUuNTU2NTU2XSBpbnRlZ3JpdHk6IFBsYXRmb3JtIEtleXJpbmcgaW5pdGlhbGl6ZWQK
WyAgICA1LjU2MjAyMl0gaW50ZWdyaXR5OiBNYWNoaW5lIGtleXJpbmcgaW5pdGlhbGl6ZWQKWyAg
ICA1LjU2NzQ2OV0gS2V5IHR5cGUgYXN5bW1ldHJpYyByZWdpc3RlcmVkClsgICAgNS41NzIxMDdd
IEFzeW1tZXRyaWMga2V5IHBhcnNlciAneDUwOScgcmVnaXN0ZXJlZApbICAgIDUuNjIyNDA2XSBG
cmVlaW5nIGluaXRyZCBtZW1vcnk6IDQxNTA0SwpbICAgIDUuNjMxODQwXSBhbGc6IHNlbGYtdGVz
dHMgZm9yIENUUi1LREYgKGhtYWMoc2hhMjU2KSkgcGFzc2VkClsgICAgNS42MzgyODhdIEJsb2Nr
IGxheWVyIFNDU0kgZ2VuZXJpYyAoYnNnKSBkcml2ZXIgdmVyc2lvbiAwLjQgbG9hZGVkIChtYWpv
ciAyNDgpClsgICAgNS42NDY2NDZdIGlvIHNjaGVkdWxlciBtcS1kZWFkbGluZSByZWdpc3RlcmVk
ClsgICAgNS42NTQwMThdIGFtZF9ncGlvIEFNREkwMDMwOjAwOiBlcnJvciAtRUlOVkFMOiBJUlEg
aW5kZXggMCBub3QgZm91bmQKWyAgICA1LjY2MTQ3MV0gYW1kX2dwaW86IHByb2JlIG9mIEFNREkw
MDMwOjAwIGZhaWxlZCB3aXRoIGVycm9yIC0yMgpbICAgIDUuNjY4NDY3XSBwY2llcG9ydCAwMDAw
OmMwOjAwLjM6IFBNRTogU2lnbmFsaW5nIHdpdGggSVJRIDI3MApbICAgIDUuNjc1MTUxXSBwY2ll
cG9ydCAwMDAwOmMwOjA3LjE6IFBNRTogU2lnbmFsaW5nIHdpdGggSVJRIDI3MQpbICAgIDUuNjgx
OTI1XSBwY2llcG9ydCAwMDAwOjgwOjAwLjM6IFBNRTogU2lnbmFsaW5nIHdpdGggSVJRIDI3Mwpb
ICAgIDUuNjg4NzczXSBwY2llcG9ydCAwMDAwOjgwOjAxLjI6IFBNRTogU2lnbmFsaW5nIHdpdGgg
SVJRIDI3NApbICAgIDUuNjk1NTQ2XSBwY2llcG9ydCAwMDAwOjgwOjAxLjM6IFBNRTogU2lnbmFs
aW5nIHdpdGggSVJRIDI3NQpbICAgIDUuNzAyMjkwXSBwY2llcG9ydCAwMDAwOjgwOjAzLjE6IFBN
RTogU2lnbmFsaW5nIHdpdGggSVJRIDI3NgpbICAgIDUuNzA5MDQ1XSBwY2llcG9ydCAwMDAwOjgw
OjAzLjI6IFBNRTogU2lnbmFsaW5nIHdpdGggSVJRIDI3NwpbICAgIDUuNzE1ODg0XSBwY2llcG9y
dCAwMDAwOjgwOjA3LjE6IFBNRTogU2lnbmFsaW5nIHdpdGggSVJRIDI3OQpbICAgIDUuNzIzMTU4
XSBwY2llcG9ydCAwMDAwOjAwOjAwLjM6IFBNRTogU2lnbmFsaW5nIHdpdGggSVJRIDI4NApbICAg
IDUuNzMwMDAxXSBwY2llcG9ydCAwMDAwOjAwOjAxLjE6IFBNRTogU2lnbmFsaW5nIHdpdGggSVJR
IDI4NQpbICAgIDUuNzM2OTAyXSBwY2llcG9ydCAwMDAwOjAwOjA1LjE6IFBNRTogU2lnbmFsaW5n
IHdpdGggSVJRIDI4NgpbICAgIDUuNzQzODQzXSBwY2llcG9ydCAwMDAwOjAwOjA1LjI6IFBNRTog
U2lnbmFsaW5nIHdpdGggSVJRIDI4NwpbICAgIDUuNzUwNjgxXSBwY2llcG9ydCAwMDAwOjAwOjA1
LjM6IFBNRTogU2lnbmFsaW5nIHdpdGggSVJRIDI4OApbICAgIDUuNzU3NTg3XSBwY2llcG9ydCAw
MDAwOjAwOjA1LjQ6IFBNRTogU2lnbmFsaW5nIHdpdGggSVJRIDI4OQpbICAgIDUuNzY0Mzc5XSBw
Y2llcG9ydCAwMDAwOjAwOjA3LjE6IFBNRTogU2lnbmFsaW5nIHdpdGggSVJRIDI5MApbICAgIDUu
NzcxMDc1XSBwY2llcG9ydCAwMDAwOjAwOjA3LjI6IFBNRTogU2lnbmFsaW5nIHdpdGggSVJRIDI5
MQpbICAgIDUuNzc3ODczXSBwY2llcG9ydCAwMDAwOjQwOjAwLjM6IFBNRTogU2lnbmFsaW5nIHdp
dGggSVJRIDI5MwpbICAgIDUuNzg0NTY5XSBwY2llcG9ydCAwMDAwOjQwOjAxLjE6IFBNRTogU2ln
bmFsaW5nIHdpdGggSVJRIDI5NApbICAgIDUuNzkxNDIwXSBwY2llcG9ydCAwMDAwOjQwOjAzLjE6
IFBNRTogU2lnbmFsaW5nIHdpdGggSVJRIDI5NQpbICAgIDUuNzk4MTg0XSBwY2llcG9ydCAwMDAw
OjQwOjAzLjI6IFBNRTogU2lnbmFsaW5nIHdpdGggSVJRIDI5NgpbICAgIDUuODA0OTE5XSBwY2ll
cG9ydCAwMDAwOjQwOjAzLjM6IFBNRTogU2lnbmFsaW5nIHdpdGggSVJRIDI5NwpbICAgIDUuODEx
Njk4XSBwY2llcG9ydCAwMDAwOjQwOjA3LjE6IFBNRTogU2lnbmFsaW5nIHdpdGggSVJRIDI5OQpb
ICAgIDUuODE5MjU4XSBzaHBjaHA6IFN0YW5kYXJkIEhvdCBQbHVnIFBDSSBDb250cm9sbGVyIERy
aXZlciB2ZXJzaW9uOiAwLjQKWyAgICA1LjgyODA5MV0geGVuX21jZWxvZzogRmFpbGVkIHRvIGdl
dCBDUFUgbnVtYmVycwpbICAgIDUuODMzODA3XSBTZXJpYWw6IDgyNTAvMTY1NTAgZHJpdmVyLCA0
IHBvcnRzLCBJUlEgc2hhcmluZyBlbmFibGVkClsgICAgNS44NDM1MTBdIHNlcmlhbDgyNTA6IHR0
eVMxIGF0IEkvTyAweDJmOCAoaXJxID0gMywgYmFzZV9iYXVkID0gMTE1MjAwKSBpcyBhIDE2NTUw
QQpbICAgIDUuODUyMzg5XSBocGV0X2FjcGlfYWRkOiBubyBhZGRyZXNzIG9yIGlycXMgaW4gX0NS
UwpbICAgIDUuODU4MDY1XSBMaW51eCBhZ3BnYXJ0IGludGVyZmFjZSB2MC4xMDMKWyAgICA1Ljg2
MzU5OF0gQU1ELVZpOiBBTUQgSU9NTVV2MiBmdW5jdGlvbmFsaXR5IG5vdCBhdmFpbGFibGUgb24g
dGhpcyBzeXN0ZW0gLSBUaGlzIGlzIG5vdCBhIGJ1Zy4KWyAgICA1Ljg3NzIwMF0gaTgwNDI6IFBO
UDogTm8gUFMvMiBjb250cm9sbGVyIGZvdW5kLgpbICAgIDUuODgyNTYyXSBtb3VzZWRldjogUFMv
MiBtb3VzZSBkZXZpY2UgY29tbW9uIGZvciBhbGwgbWljZQpbICAgIDUuODg5MzIwXSBydGNfY21v
cyAwMDowMTogUlRDIGNhbiB3YWtlIGZyb20gUzQKWyAgICA1Ljg5NDU1MV0gcnRjX2Ntb3MgMDA6
MDE6IHJlZ2lzdGVyZWQgYXMgcnRjMApbICAgIDUuODk5NTI4XSBydGNfY21vcyAwMDowMTogc2V0
dGluZyBzeXN0ZW0gY2xvY2sgdG8gMjAyNC0wMS0xOVQwNjozODo0NCBVVEMgKDE3MDU2NDYzMjQp
ClsgICAgNS45MDg2MjldIHJ0Y19jbW9zIDAwOjAxOiBubyBhbGFybXMsIHkzaywgMTE0IGJ5dGVz
IG52cmFtClsgICAgNS45MTY2NjNdIGxlZHRyaWctY3B1OiByZWdpc3RlcmVkIHRvIGluZGljYXRl
IGFjdGl2aXR5IG9uIENQVXMKWyAgICA1LjkyODY3MF0gTkVUOiBSZWdpc3RlcmVkIFBGX0lORVQ2
IHByb3RvY29sIGZhbWlseQpbICAgIDUuOTM3NzM4XSBTZWdtZW50IFJvdXRpbmcgd2l0aCBJUHY2
ClsgICAgNS45NDE3OThdIEluLXNpdHUgT0FNIChJT0FNKSB3aXRoIElQdjYKWyAgICA1Ljk0NjI1
MF0gbWlwNjogTW9iaWxlIElQdjYKWyAgICA1Ljk0OTY2NV0gTkVUOiBSZWdpc3RlcmVkIFBGX1BB
Q0tFVCBwcm90b2NvbCBmYW1pbHkKWyAgICA1Ljk1NTUyMl0gbXBsc19nc286IE1QTFMgR1NPIHN1
cHBvcnQKWyAgICA1Ljk2MjQ4Ml0gSVBJIHNob3J0aGFuZCBicm9hZGNhc3Q6IGVuYWJsZWQKWyAg
ICA1Ljk2NzMwOF0gc2NoZWRfY2xvY2s6IE1hcmtpbmcgc3RhYmxlICg1ODY5ODgwMTc2LCA5NzQw
Mzc2OCktPig4MjU2MzYzMTAyLCAtMjI4OTA3OTE1OCkKWyAgICA1Ljk3NzQyOV0gcmVnaXN0ZXJl
ZCB0YXNrc3RhdHMgdmVyc2lvbiAxClsgICAgNS45ODIwMDJdIExvYWRpbmcgY29tcGlsZWQtaW4g
WC41MDkgY2VydGlmaWNhdGVzClsgICAgNS45OTcwNTNdIExvYWRlZCBYLjUwOSBjZXJ0ICdCdWls
ZCB0aW1lIGF1dG9nZW5lcmF0ZWQga2VybmVsIGtleTogOGQyZTg5MWRiMmYzZDEyYmM4MWY2NmY2
MzdkZTJmZDEzZGVjNzE3MCcKWyAgICA2LjAwOTU4M10genN3YXA6IGxvYWRlZCB1c2luZyBwb29s
IGx6by96YnVkClsgICAgNi4wMTUwNjhdIEtleSB0eXBlIC5mc2NyeXB0IHJlZ2lzdGVyZWQKWyAg
ICA2LjAxOTUwMV0gS2V5IHR5cGUgZnNjcnlwdC1wcm92aXNpb25pbmcgcmVnaXN0ZXJlZApbICAg
IDYuMDI3OTYzXSBLZXkgdHlwZSBlbmNyeXB0ZWQgcmVnaXN0ZXJlZApbICAgIDYuMDMyNDg0XSBB
cHBBcm1vcjogQXBwQXJtb3Igc2hhMSBwb2xpY3kgaGFzaGluZyBlbmFibGVkClsgICAgNi4wMzg4
NThdIGltYTogTm8gVFBNIGNoaXAgZm91bmQsIGFjdGl2YXRpbmcgVFBNLWJ5cGFzcyEKWyAgICA2
LjA0NTAyMF0gaW1hOiBBbGxvY2F0ZWQgaGFzaCBhbGdvcml0aG06IHNoYTI1NgpbICAgIDYuMDUw
NDQzXSBpbWE6IE5vIGFyY2hpdGVjdHVyZSBwb2xpY2llcyBmb3VuZApbICAgIDYuMDU1NzAxXSBl
dm06IEluaXRpYWxpc2luZyBFVk0gZXh0ZW5kZWQgYXR0cmlidXRlczoKWyAgICA2LjA2MTY5MV0g
ZXZtOiBzZWN1cml0eS5zZWxpbnV4ClsgICAgNi4wNjU1NTldIGV2bTogc2VjdXJpdHkuU01BQ0s2
NCAoZGlzYWJsZWQpClsgICAgNi4wNzA1NDJdIGV2bTogc2VjdXJpdHkuU01BQ0s2NEVYRUMgKGRp
c2FibGVkKQpbICAgIDYuMDc1ODI5XSBldm06IHNlY3VyaXR5LlNNQUNLNjRUUkFOU01VVEUgKGRp
c2FibGVkKQpbICAgIDYuMDgxNTMyXSBldm06IHNlY3VyaXR5LlNNQUNLNjRNTUFQIChkaXNhYmxl
ZCkKWyAgICA2LjA4Njc0NV0gZXZtOiBzZWN1cml0eS5hcHBhcm1vcgpbICAgIDYuMDkwNzExXSBl
dm06IHNlY3VyaXR5LmltYQpbICAgIDYuMDk0MDg2XSBldm06IHNlY3VyaXR5LmNhcGFiaWxpdHkK
WyAgICA2LjA5ODI3Nl0gZXZtOiBITUFDIGF0dHJzOiAweDEKWyAgICA2LjE0ODA1NF0gRnJlZWlu
ZyB1bnVzZWQgZGVjcnlwdGVkIG1lbW9yeTogMjAzNksKWyAgICA2LjE1NDExMV0gRnJlZWluZyB1
bnVzZWQga2VybmVsIGltYWdlIChpbml0bWVtKSBtZW1vcnk6IDI3OTJLClsgICAgNi4xODk0ODld
IFdyaXRlIHByb3RlY3RpbmcgdGhlIGtlcm5lbCByZWFkLW9ubHkgZGF0YTogMjY2MjRrClsgICAg
Ni4xOTcxMjFdIEZyZWVpbmcgdW51c2VkIGtlcm5lbCBpbWFnZSAodGV4dC9yb2RhdGEgZ2FwKSBt
ZW1vcnk6IDIwNDBLClsgICAgNi4yMDUxMTFdIEZyZWVpbmcgdW51c2VkIGtlcm5lbCBpbWFnZSAo
cm9kYXRhL2RhdGEgZ2FwKSBtZW1vcnk6IDExODhLClsgICAgNi4yMzI0MzBdIHg4Ni9tbTogQ2hl
Y2tlZCBXK1ggbWFwcGluZ3M6IHBhc3NlZCwgbm8gVytYIHBhZ2VzIGZvdW5kLgpbICAgIDYuMjM5
Nzk5XSBSdW4gL2luaXQgYXMgaW5pdCBwcm9jZXNzClsgICAgNi4yNDM5NjldICAgd2l0aCBhcmd1
bWVudHM6ClsgICAgNi4yNDM5NzBdICAgICAvaW5pdApbICAgIDYuMjQzOTcwXSAgIHdpdGggZW52
aXJvbm1lbnQ6ClsgICAgNi4yNDM5NzFdICAgICBIT01FPS8KWyAgICA2LjI0Mzk3MV0gICAgIFRF
Uk09bGludXgKWyAgICA2LjMyMTM2Nl0gZ3Bpb19nZW5lcmljOiBtb2R1bGUgdmVyaWZpY2F0aW9u
IGZhaWxlZDogc2lnbmF0dXJlIGFuZC9vciByZXF1aXJlZCBrZXkgbWlzc2luZyAtIHRhaW50aW5n
IGtlcm5lbApbICAgIDYuMzQxNjMyXSBNQUNzZWMgSUVFRSA4MDIuMUFFClsgICAgNi4zNDE4MDVd
IHBpaXg0X3NtYnVzIDAwMDA6MDA6MTQuMDogU01CdXMgSG9zdCBDb250cm9sbGVyIGF0IDB4YjAw
LCByZXZpc2lvbiAwClsgICAgNi4zNTM5MzZdIHBpaXg0X3NtYnVzIDAwMDA6MDA6MTQuMDogVXNp
bmcgcmVnaXN0ZXIgMHgwMiBmb3IgU01CdXMgcG9ydCBzZWxlY3Rpb24KWyAgICA2LjM2Mjc1MF0g
cGlpeDRfc21idXMgMDAwMDowMDoxNC4wOiBBdXhpbGlhcnkgU01CdXMgSG9zdCBDb250cm9sbGVy
IGF0IDB4YjIwClsgICAgNi4zNzQ2MTVdIFNDU0kgc3Vic3lzdGVtIGluaXRpYWxpemVkClsgICAg
Ni4zODI3ODVdIEFDUEk6IGJ1cyB0eXBlIFVTQiByZWdpc3RlcmVkClsgICAgNi4zODc0OThdIHVz
YmNvcmU6IHJlZ2lzdGVyZWQgbmV3IGludGVyZmFjZSBkcml2ZXIgdXNiZnMKWyAgICA2LjM5Mzkx
Ml0gdXNiY29yZTogcmVnaXN0ZXJlZCBuZXcgaW50ZXJmYWNlIGRyaXZlciBodWIKWyAgICA2LjQw
MDI0MV0gdXNiY29yZTogcmVnaXN0ZXJlZCBuZXcgZGV2aWNlIGRyaXZlciB1c2IKWyAgICA2LjQx
MDA2OV0gYXRsYW50aWMgMDAwMDo0MjowMC4wOiBlbmFibGluZyBkZXZpY2UgKDAwMDAgLT4gMDAw
MikKWyAgICA2LjQ0Mzc2Nl0gbGliYXRhIHZlcnNpb24gMy4wMCBsb2FkZWQuClsgICAgNi40NjEw
MDVdIGF0bGFudGljOiBEZXRlY3QgQVRMMkZXIDEwMzAwMjIKWyAgICA2LjQ4NzA4OV0gcjgxNjkg
MDAwMDo4NjowMC4wOiBlbmFibGluZyBkZXZpY2UgKDAwMDAgLT4gMDAwMykKWyAgICA2LjQ5NDg0
Nl0geGhjaV9oY2QgMDAwMDpjMTowMC40OiB4SENJIEhvc3QgQ29udHJvbGxlcgpbICAgIDYuNTAx
MDQ4XSB4aGNpX2hjZCAwMDAwOmMxOjAwLjQ6IG5ldyBVU0IgYnVzIHJlZ2lzdGVyZWQsIGFzc2ln
bmVkIGJ1cyBudW1iZXIgMQpbICAgIDYuNTEwMDcyXSB4aGNpX2hjZCAwMDAwOmMxOjAwLjQ6IGhj
YyBwYXJhbXMgMHgwMTE4ZmZjNSBoY2kgdmVyc2lvbiAweDEyMCBxdWlya3MgMHgwMDAwMDAwMjAw
MDAwNDEwClsgICAgNi41MjA2MTVdIGFoY2kgMDAwMDowNzowMC4xOiB2ZXJzaW9uIDMuMApbICAg
IDYuNTIwNzAxXSBhaGNpIDAwMDA6MDc6MDAuMTogQkFSIDU6IGNhbid0IHJlc2VydmUgW21lbSAw
eGYwZTAwMDAwLTB4ZjBlMDA3ZmZdClsgICAgNi41MjExNDRdIHhoY2lfaGNkIDAwMDA6YzE6MDAu
NDogeEhDSSBIb3N0IENvbnRyb2xsZXIKWyAgICA2LjUyOTIwNF0gYWhjaTogcHJvYmUgb2YgMDAw
MDowNzowMC4xIGZhaWxlZCB3aXRoIGVycm9yIC0xNgpbICAgIDYuNTM1NDA5XSB4aGNpX2hjZCAw
MDAwOmMxOjAwLjQ6IG5ldyBVU0IgYnVzIHJlZ2lzdGVyZWQsIGFzc2lnbmVkIGJ1cyBudW1iZXIg
MgpbICAgIDYuNTQyMjYyXSBhaGNpIDAwMDA6NGE6MDAuMDogU1NTIGZsYWcgc2V0LCBwYXJhbGxl
bCBidXMgc2NhbiBkaXNhYmxlZApbICAgIDYuNTUwNzQ2XSB4aGNpX2hjZCAwMDAwOmMxOjAwLjQ6
IEhvc3Qgc3VwcG9ydHMgVVNCIDMuMSBFbmhhbmNlZCBTdXBlclNwZWVkClsgICAgNi41NTg1NDVd
IGFoY2kgMDAwMDo0YTowMC4wOiBBSENJIDAwMDEuMDMwMSAzMiBzbG90cyA2IHBvcnRzIDYgR2Jw
cyAweGYgaW1wbCBTQVRBIG1vZGUKWyAgICA2LjU2Njc3MV0gdXNiIHVzYjE6IE5ldyBVU0IgZGV2
aWNlIGZvdW5kLCBpZFZlbmRvcj0xZDZiLCBpZFByb2R1Y3Q9MDAwMiwgYmNkRGV2aWNlPSA2LjAx
ClsgICAgNi41NzU4MjNdIGFoY2kgMDAwMDo0YTowMC4wOiBmbGFnczogNjRiaXQgbmNxIHNudGYg
c3RhZyBwbSBsZWQgY2xvIG9ubHkgcG1wIHBpbyBzbHVtIHBhcnQgc3hzIGRlc28gc2FkbSBzZHMg
YXBzdCAKWyAgICA2LjU4NTY1OF0gdXNiIHVzYjE6IE5ldyBVU0IgZGV2aWNlIHN0cmluZ3M6IE1m
cj0zLCBQcm9kdWN0PTIsIFNlcmlhbE51bWJlcj0xClsgICAgNi41OTgzMzJdIHNjc2kgaG9zdDA6
IGFoY2kKWyAgICA2LjYwNjUzOV0gdXNiIHVzYjE6IFByb2R1Y3Q6IHhIQ0kgSG9zdCBDb250cm9s
bGVyClsgICAgNi42MDY1NDBdIHVzYiB1c2IxOiBNYW51ZmFjdHVyZXI6IExpbnV4IDYuMS42OSB4
aGNpLWhjZApbICAgIDYuNjA2NTQwXSB1c2IgdXNiMTogU2VyaWFsTnVtYmVyOiAwMDAwOmMxOjAw
LjQKWyAgICA2LjYwNjYzOF0gaHViIDEtMDoxLjA6IFVTQiBodWIgZm91bmQKWyAgICA2LjYxMDIy
N10gc2NzaSBob3N0MTogYWhjaQpbICAgIDYuNjE1ODU0XSBodWIgMS0wOjEuMDogMiBwb3J0cyBk
ZXRlY3RlZApbICAgIDYuNjIyMzYzXSBzY3NpIGhvc3QyOiBhaGNpClsgICAgNi42Mjc3MTZdIHVz
YiB1c2IyOiBXZSBkb24ndCBrbm93IHRoZSBhbGdvcml0aG1zIGZvciBMUE0gZm9yIHRoaXMgaG9z
dCwgZGlzYWJsaW5nIExQTS4KWyAgICA2LjYzMjIzMl0gc2NzaSBob3N0MzogYWhjaQpbICAgIDYu
NjM1MzE5XSB1c2IgdXNiMjogTmV3IFVTQiBkZXZpY2UgZm91bmQsIGlkVmVuZG9yPTFkNmIsIGlk
UHJvZHVjdD0wMDAzLCBiY2REZXZpY2U9IDYuMDEKWyAgICA2LjY0MDA2NV0gc2NzaSBob3N0NDog
YWhjaQpbICAgIDYuNjQzMjEyXSB1c2IgdXNiMjogTmV3IFVTQiBkZXZpY2Ugc3RyaW5nczogTWZy
PTMsIFByb2R1Y3Q9MiwgU2VyaWFsTnVtYmVyPTEKWyAgICA2LjY0MzIxNF0gdXNiIHVzYjI6IFBy
b2R1Y3Q6IHhIQ0kgSG9zdCBDb250cm9sbGVyClsgICAgNi42NDMyMTRdIHVzYiB1c2IyOiBNYW51
ZmFjdHVyZXI6IExpbnV4IDYuMS42OSB4aGNpLWhjZApbICAgIDYuNjQzMjE0XSB1c2IgdXNiMjog
U2VyaWFsTnVtYmVyOiAwMDAwOmMxOjAwLjQKWyAgICA2LjY0MzMwMl0gaHViIDItMDoxLjA6IFVT
QiBodWIgZm91bmQKWyAgICA2LjY1Mjg0OV0gc2NzaSBob3N0NTogYWhjaQpbICAgIDYuNjU2MTg0
XSBodWIgMi0wOjEuMDogMiBwb3J0cyBkZXRlY3RlZApbICAgIDYuNjY1NDYyXSBhdGExOiBTQVRB
IG1heCBVRE1BLzEzMyBhYmFyIG0xMDI0QDB4YzA2ODAwMDAgcG9ydCAweGMwNjgwMTAwIGlycSAz
MjgKWyAgICA2LjY2ODk3OV0geGhjaV9oY2QgMDAwMDo4MjowMC4wOiB4SENJIEhvc3QgQ29udHJv
bGxlcgpbICAgIDYuNjc3NTA0XSBhdGEyOiBTQVRBIG1heCBVRE1BLzEzMyBhYmFyIG0xMDI0QDB4
YzA2ODAwMDAgcG9ydCAweGMwNjgwMTgwIGlycSAzMjgKWyAgICA2LjY4MzMxMF0geGhjaV9oY2Qg
MDAwMDo4MjowMC4wOiBuZXcgVVNCIGJ1cyByZWdpc3RlcmVkLCBhc3NpZ25lZCBidXMgbnVtYmVy
IDMKWyAgICA2LjY4OTczNF0gYXRhMzogU0FUQSBtYXggVURNQS8xMzMgYWJhciBtMTAyNEAweGMw
NjgwMDAwIHBvcnQgMHhjMDY4MDIwMCBpcnEgMzI4ClsgICAgNi42OTUyMDhdIHhoY2lfaGNkIDAw
MDA6ODI6MDAuMDogaGNjIHBhcmFtcyAweDIwMDA3MWUxIGhjaSB2ZXJzaW9uIDB4MTAwIHF1aXJr
cyAweDAwMDAwMDAwMDAwMDA0MTAKWyAgICA2LjY5OTU5OF0gYXRhNDogU0FUQSBtYXggVURNQS8x
MzMgYWJhciBtMTAyNEAweGMwNjgwMDAwIHBvcnQgMHhjMDY4MDI4MCBpcnEgMzI4ClsgICAgNi43
MDM1NjRdIHhoY2lfaGNkIDAwMDA6ODI6MDAuMDogeEhDSSBIb3N0IENvbnRyb2xsZXIKWyAgICA2
LjcwNzc0M10gYXRhNTogRFVNTVkKWyAgICA2LjcxNjY5N10geGhjaV9oY2QgMDAwMDo4MjowMC4w
OiBuZXcgVVNCIGJ1cyByZWdpc3RlcmVkLCBhc3NpZ25lZCBidXMgbnVtYmVyIDQKWyAgICA2Ljcy
MjU5OV0gYXRhNjogRFVNTVkKWyAgICA2LjcyNTQ3OF0gYXRsYW50aWMgMDAwMDo0MjowMC4wIGVu
cDY2czA6IHJlbmFtZWQgZnJvbSBldGgwClsgICAgNi43MzExMzFdIHhoY2lfaGNkIDAwMDA6ODI6
MDAuMDogSG9zdCBzdXBwb3J0cyBVU0IgMy4wIFN1cGVyU3BlZWQKWyAgICA2LjgwMTY4OV0gdXNi
IHVzYjM6IE5ldyBVU0IgZGV2aWNlIGZvdW5kLCBpZFZlbmRvcj0xZDZiLCBpZFByb2R1Y3Q9MDAw
MiwgYmNkRGV2aWNlPSA2LjAxClsgICAgNi44MTA5NzldIHVzYiB1c2IzOiBOZXcgVVNCIGRldmlj
ZSBzdHJpbmdzOiBNZnI9MywgUHJvZHVjdD0yLCBTZXJpYWxOdW1iZXI9MQpbICAgIDYuODE5Mjkx
XSB1c2IgdXNiMzogUHJvZHVjdDogeEhDSSBIb3N0IENvbnRyb2xsZXIKWyAgICA2LjgyNDkxMl0g
dXNiIHVzYjM6IE1hbnVmYWN0dXJlcjogTGludXggNi4xLjY5IHhoY2ktaGNkClsgICAgNi44MzEw
MTJdIHVzYiB1c2IzOiBTZXJpYWxOdW1iZXI6IDAwMDA6ODI6MDAuMApbICAgIDYuODM2NDg4XSBo
dWIgMy0wOjEuMDogVVNCIGh1YiBmb3VuZApbICAgIDYuODQwNzc0XSBodWIgMy0wOjEuMDogNCBw
b3J0cyBkZXRlY3RlZApbICAgIDYuODQ1NTEwXSB1c2IgdXNiNDogV2UgZG9uJ3Qga25vdyB0aGUg
YWxnb3JpdGhtcyBmb3IgTFBNIGZvciB0aGlzIGhvc3QsIGRpc2FibGluZyBMUE0uClsgICAgNi44
NTQ2MjldIHVzYiB1c2I0OiBOZXcgVVNCIGRldmljZSBmb3VuZCwgaWRWZW5kb3I9MWQ2YiwgaWRQ
cm9kdWN0PTAwMDMsIGJjZERldmljZT0gNi4wMQpbICAgIDYuODYzOTUyXSB1c2IgdXNiNDogTmV3
IFVTQiBkZXZpY2Ugc3RyaW5nczogTWZyPTMsIFByb2R1Y3Q9MiwgU2VyaWFsTnVtYmVyPTEKWyAg
ICA2Ljg3MjEzM10gdXNiIHVzYjQ6IFByb2R1Y3Q6IHhIQ0kgSG9zdCBDb250cm9sbGVyClsgICAg
Ni44Nzc3MjldIHVzYiB1c2I0OiBNYW51ZmFjdHVyZXI6IExpbnV4IDYuMS42OSB4aGNpLWhjZApb
ICAgIDYuODgzODU3XSB1c2IgdXNiNDogU2VyaWFsTnVtYmVyOiAwMDAwOjgyOjAwLjAKWyAgICA2
Ljg4OTM2Nl0gaHViIDQtMDoxLjA6IFVTQiBodWIgZm91bmQKWyAgICA2Ljg5MzY0Ml0gaHViIDQt
MDoxLjA6IDQgcG9ydHMgZGV0ZWN0ZWQKWyAgICA2Ljg5ODM0NF0geGhjaV9oY2QgMDAwMDo4Mzow
MC4wOiB4SENJIEhvc3QgQ29udHJvbGxlcgpbICAgIDYuOTA0MzE0XSB4aGNpX2hjZCAwMDAwOjgz
OjAwLjA6IG5ldyBVU0IgYnVzIHJlZ2lzdGVyZWQsIGFzc2lnbmVkIGJ1cyBudW1iZXIgNQpbICAg
IDYuOTIxNzY0XSByODE2OSAwMDAwOjg2OjAwLjAgZXRoMDogUlRMODE2OGV2bC84MTExZXZsLCAw
MDoxMzozYjoxMjo3MTphMCwgWElEIDJjOSwgSVJRIDMxNwpbICAgIDYuOTMxNjE4XSByODE2OSAw
MDAwOjg2OjAwLjAgZXRoMDoganVtYm8gZmVhdHVyZXMgW2ZyYW1lczogOTE5NCBieXRlcywgdHgg
Y2hlY2tzdW1taW5nOiBrb10KWyAgICA2Ljk0MTM2OF0gcjgxNjkgMDAwMDo4NzowMC4wOiBlbmFi
bGluZyBkZXZpY2UgKDAwMDAgLT4gMDAwMykKWyAgICA2Ljk1MTM4Nl0gcjgxNjkgMDAwMDo4Nzow
MC4wIGV0aDE6IFJUTDgxNjhldmwvODExMWV2bCwgMDA6MTM6M2I6MTI6NzE6YTEsIFhJRCAyYzks
IElSUSAzMzkKWyAgICA2Ljk2MTAyM10gcjgxNjkgMDAwMDo4NzowMC4wIGV0aDE6IGp1bWJvIGZl
YXR1cmVzIFtmcmFtZXM6IDkxOTQgYnl0ZXMsIHR4IGNoZWNrc3VtbWluZzoga29dClsgICAgNi45
Njg0NDFdIHhoY2lfaGNkIDAwMDA6ODM6MDAuMDogaGNjIHBhcmFtcyAweDAyMDBlZjgwIGhjaSB2
ZXJzaW9uIDB4MTEwIHF1aXJrcyAweDAwMDAwMDAwMDA4MDAwMTAKWyAgICA2Ljk3MDk2Ml0gcjgx
NjkgMDAwMDo0NzowMC4wOiBlbmFibGluZyBkZXZpY2UgKDAwMDAgLT4gMDAwMykKWyAgICA2Ljk4
MTk0MF0geGhjaV9oY2QgMDAwMDo4MzowMC4wOiB4SENJIEhvc3QgQ29udHJvbGxlcgpbICAgIDYu
OTk0MDMwXSB4aGNpX2hjZCAwMDAwOjgzOjAwLjA6IG5ldyBVU0IgYnVzIHJlZ2lzdGVyZWQsIGFz
c2lnbmVkIGJ1cyBudW1iZXIgNgpbICAgIDcuMDAyNDQ0XSB4aGNpX2hjZCAwMDAwOjgzOjAwLjA6
IEhvc3Qgc3VwcG9ydHMgVVNCIDMuMiBFbmhhbmNlZCBTdXBlclNwZWVkClsgICAgNy4wMDMyMjld
IHI4MTY5IDAwMDA6NDc6MDAuMCBldGgyOiBSVEw4MTI1QiwgOWM6NmI6MDA6M2Q6MTE6OTksIFhJ
RCA2NDEsIElSUSAzNDgKWyAgICA3LjAxMDQ2Nl0gdXNiIHVzYjU6IE5ldyBVU0IgZGV2aWNlIGZv
dW5kLCBpZFZlbmRvcj0xZDZiLCBpZFByb2R1Y3Q9MDAwMiwgYmNkRGV2aWNlPSA2LjAxClsgICAg
Ny4wMTkzNTddIHI4MTY5IDAwMDA6NDc6MDAuMCBldGgyOiBqdW1ibyBmZWF0dXJlcyBbZnJhbWVz
OiA5MTk0IGJ5dGVzLCB0eCBjaGVja3N1bW1pbmc6IGtvXQpbICAgIDcuMDM4MzkzXSB1c2IgdXNi
NTogTmV3IFVTQiBkZXZpY2Ugc3RyaW5nczogTWZyPTMsIFByb2R1Y3Q9MiwgU2VyaWFsTnVtYmVy
PTEKWyAgICA3LjA0NjY5MV0gdXNiIHVzYjU6IFByb2R1Y3Q6IHhIQ0kgSG9zdCBDb250cm9sbGVy
ClsgICAgNy4wNTIyOTNdIHVzYiB1c2I1OiBNYW51ZmFjdHVyZXI6IExpbnV4IDYuMS42OSB4aGNp
LWhjZApbICAgIDcuMDU4MzczXSB1c2IgdXNiNTogU2VyaWFsTnVtYmVyOiAwMDAwOjgzOjAwLjAK
WyAgICA3LjA2Mzc1MV0gaHViIDUtMDoxLjA6IFVTQiBodWIgZm91bmQKWyAgICA3LjA2Nzk5OV0g
aHViIDUtMDoxLjA6IDEgcG9ydCBkZXRlY3RlZApbICAgIDcuMDcyNjIwXSB1c2IgdXNiNjogV2Ug
ZG9uJ3Qga25vdyB0aGUgYWxnb3JpdGhtcyBmb3IgTFBNIGZvciB0aGlzIGhvc3QsIGRpc2FibGlu
ZyBMUE0uClsgICAgNy4wODE3MTJdIHVzYiB1c2I2OiBOZXcgVVNCIGRldmljZSBmb3VuZCwgaWRW
ZW5kb3I9MWQ2YiwgaWRQcm9kdWN0PTAwMDMsIGJjZERldmljZT0gNi4wMQpbICAgIDcuMDkxMTI5
XSB1c2IgdXNiNjogTmV3IFVTQiBkZXZpY2Ugc3RyaW5nczogTWZyPTMsIFByb2R1Y3Q9MiwgU2Vy
aWFsTnVtYmVyPTEKWyAgICA3LjA5OTM5NF0gdXNiIHVzYjY6IFByb2R1Y3Q6IHhIQ0kgSG9zdCBD
b250cm9sbGVyClsgICAgNy4xMDQ5NTldIHVzYiB1c2I2OiBNYW51ZmFjdHVyZXI6IExpbnV4IDYu
MS42OSB4aGNpLWhjZApbICAgIDcuMTExMDY3XSB1c2IgdXNiNjogU2VyaWFsTnVtYmVyOiAwMDAw
OjgzOjAwLjAKWyAgICA3LjExNjUwNF0gaHViIDYtMDoxLjA6IFVTQiBodWIgZm91bmQKWyAgICA3
LjEyMDY3NV0gaHViIDYtMDoxLjA6IDEgcG9ydCBkZXRlY3RlZApbICAgIDcuMTI1MjMwXSB4aGNp
X2hjZCAwMDAwOjA2OjAwLjQ6IGluaXQgMDAwMDowNjowMC40IGZhaWwsIC0xNgpbICAgIDcuMTMx
Nzc4XSB1c2IgMy0yOiBuZXcgaGlnaC1zcGVlZCBVU0IgZGV2aWNlIG51bWJlciAyIHVzaW5nIHho
Y2lfaGNkClsgICAgNy4xMzc0MzddIHhoY2lfaGNkOiBwcm9iZSBvZiAwMDAwOjA2OjAwLjQgZmFp
bGVkIHdpdGggZXJyb3IgLTE2ClsgICAgNy4xNDYxNjZdIHhoY2lfaGNkIDAwMDA6NDk6MDAuMDog
eEhDSSBIb3N0IENvbnRyb2xsZXIKWyAgICA3LjE1MTk5Nl0geGhjaV9oY2QgMDAwMDo0OTowMC4w
OiBuZXcgVVNCIGJ1cyByZWdpc3RlcmVkLCBhc3NpZ25lZCBidXMgbnVtYmVyIDcKWyAgICA3LjE5
NzQ1OF0gYXRhMTogU0FUQSBsaW5rIHVwIDYuMCBHYnBzIChTU3RhdHVzIDEzMyBTQ29udHJvbCAz
MDApClsgICAgNy4yMDU1NDldIGF0YTEuMDA6IEFUQS05OiBTVDMwMDBETTAwOC0yRE0xNjYsIEND
MjYsIG1heCBVRE1BLzEzMwpbICAgIDcuMjEzMDU2XSBhdGExLjAwOiA1ODYwNTMzMTY4IHNlY3Rv
cnMsIG11bHRpIDE2OiBMQkE0OCBOQ1EgKGRlcHRoIDMyKSwgQUEKWyAgICA3LjIxNjM5MV0geGhj
aV9oY2QgMDAwMDo0OTowMC4wOiBoY2MgcGFyYW1zIDB4MDIwMGVmODEgaGNpIHZlcnNpb24gMHgx
MTAgcXVpcmtzIDB4MDAwMDAwMDAwMDAwMDQxMApbICAgIDcuMjIyMjEyXSBhdGExLjAwOiBjb25m
aWd1cmVkIGZvciBVRE1BLzEzMwpbICAgIDcuMjMyMDUxXSB4aGNpX2hjZCAwMDAwOjQ5OjAwLjA6
IHhIQ0kgSG9zdCBDb250cm9sbGVyClsgICAgNy4yMzY0NjJdIHNjc2kgMDowOjA6MDogRGlyZWN0
LUFjY2VzcyAgICAgQVRBICAgICAgU1QzMDAwRE0wMDgtMkRNMSBDQzI2IFBROiAwIEFOU0k6IDUK
WyAgICA3LjI0MjIzN10geGhjaV9oY2QgMDAwMDo0OTowMC4wOiBuZXcgVVNCIGJ1cyByZWdpc3Rl
cmVkLCBhc3NpZ25lZCBidXMgbnVtYmVyIDgKWyAgICA3LjI0MjIzOF0geGhjaV9oY2QgMDAwMDo0
OTowMC4wOiBIb3N0IHN1cHBvcnRzIFVTQiAzLjEgRW5oYW5jZWQgU3VwZXJTcGVlZApbICAgIDcu
MjQyMjcwXSB1c2IgdXNiNzogTmV3IFVTQiBkZXZpY2UgZm91bmQsIGlkVmVuZG9yPTFkNmIsIGlk
UHJvZHVjdD0wMDAyLCBiY2REZXZpY2U9IDYuMDEKWyAgICA3LjI3NzE5MF0gdXNiIHVzYjc6IE5l
dyBVU0IgZGV2aWNlIHN0cmluZ3M6IE1mcj0zLCBQcm9kdWN0PTIsIFNlcmlhbE51bWJlcj0xClsg
ICAgNy4yODU1NjldIHVzYiB1c2I3OiBQcm9kdWN0OiB4SENJIEhvc3QgQ29udHJvbGxlcgpbICAg
IDcuMjkxMTkxXSB1c2IgdXNiNzogTWFudWZhY3R1cmVyOiBMaW51eCA2LjEuNjkgeGhjaS1oY2QK
WyAgICA3LjI5MzI1MF0gdXNiIDMtMjogTmV3IFVTQiBkZXZpY2UgZm91bmQsIGlkVmVuZG9yPTIx
MDksIGlkUHJvZHVjdD0yODIyLCBiY2REZXZpY2U9IDcuMzQKWyAgICA3LjI5NzMzOF0gdXNiIHVz
Yjc6IFNlcmlhbE51bWJlcjogMDAwMDo0OTowMC4wClsgICAgNy4yOTc0NTFdIGh1YiA3LTA6MS4w
OiBVU0IgaHViIGZvdW5kClsgICAgNy4zMDY2MTddIHVzYiAzLTI6IE5ldyBVU0IgZGV2aWNlIHN0
cmluZ3M6IE1mcj0xLCBQcm9kdWN0PTIsIFNlcmlhbE51bWJlcj0zClsgICAgNy4zMTE5MTRdIGh1
YiA3LTA6MS4wOiAxMiBwb3J0cyBkZXRlY3RlZApbICAgIDcuMzE2MjEzXSB1c2IgMy0yOiBQcm9k
dWN0OiBVU0IyLjAgSHViICAgICAgICAgICAgIApbICAgIDcuMzI5OTEzXSB1c2IgdXNiODogV2Ug
ZG9uJ3Qga25vdyB0aGUgYWxnb3JpdGhtcyBmb3IgTFBNIGZvciB0aGlzIGhvc3QsIGRpc2FibGlu
ZyBMUE0uClsgICAgNy4zMzQ3MzVdIHVzYiAzLTI6IE1hbnVmYWN0dXJlcjogVklBIExhYnMsIElu
Yy4gICAgICAgICAKWyAgICA3LjM0Mzc5NF0gdXNiIHVzYjg6IE5ldyBVU0IgZGV2aWNlIGZvdW5k
LCBpZFZlbmRvcj0xZDZiLCBpZFByb2R1Y3Q9MDAwMywgYmNkRGV2aWNlPSA2LjAxClsgICAgNy4z
NTAwNzBdIHVzYiAzLTI6IFNlcmlhbE51bWJlcjogMDAwMDAwMDAxClsgICAgNy4zNTk0OThdIHVz
YiB1c2I4OiBOZXcgVVNCIGRldmljZSBzdHJpbmdzOiBNZnI9MywgUHJvZHVjdD0yLCBTZXJpYWxO
dW1iZXI9MQpbICAgIDcuMzY1MjE5XSBodWIgMy0yOjEuMDogVVNCIGh1YiBmb3VuZApbICAgIDcu
MzcyNTI2XSB1c2IgdXNiODogUHJvZHVjdDogeEhDSSBIb3N0IENvbnRyb2xsZXIKWyAgICA3LjM3
NzA0M10gaHViIDMtMjoxLjA6IDQgcG9ydHMgZGV0ZWN0ZWQKWyAgICA3LjM4MjI5N10gdXNiIHVz
Yjg6IE1hbnVmYWN0dXJlcjogTGludXggNi4xLjY5IHhoY2ktaGNkClsgICAgNy4zODIyOTddIHVz
YiB1c2I4OiBTZXJpYWxOdW1iZXI6IDAwMDA6NDk6MDAuMApbICAgIDcuMzgyNDIxXSBodWIgOC0w
OjEuMDogVVNCIGh1YiBmb3VuZApbICAgIDcuNDAyNjAzXSBodWIgOC0wOjEuMDogNiBwb3J0cyBk
ZXRlY3RlZApbICAgIDcuNDA5NDQxXSB1c2I6IHBvcnQgcG93ZXIgbWFuYWdlbWVudCBtYXkgYmUg
dW5yZWxpYWJsZQpbICAgIDcuNDQ5MTUzXSB1c2IgNC0yOiBuZXcgU3VwZXJTcGVlZCBVU0IgZGV2
aWNlIG51bWJlciAyIHVzaW5nIHhoY2lfaGNkClsgICAgNy42ODE0MzFdIHVzYiA3LTU6IG5ldyBo
aWdoLXNwZWVkIFVTQiBkZXZpY2UgbnVtYmVyIDIgdXNpbmcgeGhjaV9oY2QKWyAgICA3LjcyNTQ0
M10gYXRhMjogU0FUQSBsaW5rIHVwIDYuMCBHYnBzIChTU3RhdHVzIDEzMyBTQ29udHJvbCAzMDAp
ClsgICAgNy43MzM0MzBdIGF0YTIuMDA6IEFUQS04OiBTVDE1MDBETDAwMy05VlQxNkwsIENDMzIs
IG1heCBVRE1BLzEzMwpbICAgIDcuNzQwNzk5XSBhdGEyLjAwOiAyOTMwMjc3MTY4IHNlY3RvcnMs
IG11bHRpIDE2OiBMQkE0OCBOQ1EgKGRlcHRoIDMyKQpbICAgIDcuNzQ5MTc1XSBhdGEyLjAwOiBj
b25maWd1cmVkIGZvciBVRE1BLzEzMwpbICAgIDcuNzU0Mzg0XSBzY3NpIDE6MDowOjA6IERpcmVj
dC1BY2Nlc3MgICAgIEFUQSAgICAgIFNUMTUwMERMMDAzLTlWVDEgQ0MzMiBQUTogMCBBTlNJOiA1
ClsgICAgNy44NTM5NzVdIHVzYiA0LTI6IE5ldyBVU0IgZGV2aWNlIGZvdW5kLCBpZFZlbmRvcj0y
MTA5LCBpZFByb2R1Y3Q9MDgyMiwgYmNkRGV2aWNlPSA3LjM0ClsgICAgNy44NjMyMDBdIHVzYiA0
LTI6IE5ldyBVU0IgZGV2aWNlIHN0cmluZ3M6IE1mcj0xLCBQcm9kdWN0PTIsIFNlcmlhbE51bWJl
cj0zClsgICAgNy44NzEzNzNdIHVzYiA0LTI6IFByb2R1Y3Q6IFVTQjMuMSBIdWIgICAgICAgICAg
ICAgClsgICAgNy44NzcxMTBdIHVzYiA0LTI6IE1hbnVmYWN0dXJlcjogVklBIExhYnMsIEluYy4g
ICAgICAgICAKWyAgICA3Ljg4MzM0OV0gdXNiIDQtMjogU2VyaWFsTnVtYmVyOiAwMDAwMDAwMDEK
WyAgICA3Ljg4ODgzOF0gaHViIDQtMjoxLjA6IFVTQiBodWIgZm91bmQKWyAgICA3Ljg5MzMyM10g
aHViIDQtMjoxLjA6IDQgcG9ydHMgZGV0ZWN0ZWQKWyAgICA3LjkyNTc5NV0gdXNiIDctNTogTmV3
IFVTQiBkZXZpY2UgZm91bmQsIGlkVmVuZG9yPTA0NTEsIGlkUHJvZHVjdD04MDQzLCBiY2REZXZp
Y2U9IDEuMDAKWyAgICA3LjkzNDk0NF0gdXNiIDctNTogTmV3IFVTQiBkZXZpY2Ugc3RyaW5nczog
TWZyPTAsIFByb2R1Y3Q9MCwgU2VyaWFsTnVtYmVyPTEKWyAgICA3Ljk0MzEyN10gdXNiIDctNTog
U2VyaWFsTnVtYmVyOiAxODA1MDA3OUJGQjkKWyAgICA3Ljk1NTk3Nl0gaHViIDctNToxLjA6IFVT
QiBodWIgZm91bmQKWyAgICA3Ljk2Mjc4NV0gaHViIDctNToxLjA6IDQgcG9ydHMgZGV0ZWN0ZWQK
WyAgICA4LjA0MjA5NF0gdXNiIDgtNTogbmV3IFN1cGVyU3BlZWQgVVNCIGRldmljZSBudW1iZXIg
MiB1c2luZyB4aGNpX2hjZApbICAgIDguMDcxMDM0XSB1c2IgOC01OiBOZXcgVVNCIGRldmljZSBm
b3VuZCwgaWRWZW5kb3I9MDQ1MSwgaWRQcm9kdWN0PTgwNDEsIGJjZERldmljZT0gMS4wMApbICAg
IDguMDgwMTM3XSB1c2IgOC01OiBOZXcgVVNCIGRldmljZSBzdHJpbmdzOiBNZnI9MCwgUHJvZHVj
dD0wLCBTZXJpYWxOdW1iZXI9MApbICAgIDguMDk1NjAxXSBodWIgOC01OjEuMDogVVNCIGh1YiBm
b3VuZApbICAgIDguMDk5ODU0XSBodWIgOC01OjEuMDogNCBwb3J0cyBkZXRlY3RlZApbICAgIDgu
MTI1NTE3XSB1c2IgNC0zOiBuZXcgU3VwZXJTcGVlZCBVU0IgZGV2aWNlIG51bWJlciAzIHVzaW5n
IHhoY2lfaGNkClsgICAgOC4xNTA0NjldIHVzYiA0LTM6IE5ldyBVU0IgZGV2aWNlIGZvdW5kLCBp
ZFZlbmRvcj0xMDU4LCBpZFByb2R1Y3Q9MDgyMCwgYmNkRGV2aWNlPTEwLjEyClsgICAgOC4xNTk1
OTddIHVzYiA0LTM6IE5ldyBVU0IgZGV2aWNlIHN0cmluZ3M6IE1mcj0xLCBQcm9kdWN0PTIsIFNl
cmlhbE51bWJlcj01ClsgICAgOC4xNjc2OTldIHVzYiA0LTM6IFByb2R1Y3Q6IE15IFBhc3Nwb3J0
IDA4MjAKWyAgICA4LjE3Mjc1OV0gdXNiIDQtMzogTWFudWZhY3R1cmVyOiBXZXN0ZXJuIERpZ2l0
YWwKWyAgICA4LjE3ODE4N10gdXNiIDQtMzogU2VyaWFsTnVtYmVyOiA1NzU4NTMzMTQ1NDMzNDRB
MzI1NDM1NDMKWyAgICA4LjIzNzQ1MF0gYXRhMzogU0FUQSBsaW5rIHVwIDYuMCBHYnBzIChTU3Rh
dHVzIDEzMyBTQ29udHJvbCAzMDApClsgICAgOC4yNDUyNjZdIGF0YTMuMDA6IEFUQS05OiBTVDMw
MDBETTAwOC0yRE0xNjYsIENDMjYsIG1heCBVRE1BLzEzMwpbICAgIDguMjUyNjAxXSBhdGEzLjAw
OiA1ODYwNTMzMTY4IHNlY3RvcnMsIG11bHRpIDE2OiBMQkE0OCBOQ1EgKGRlcHRoIDMyKSwgQUEK
WyAgICA4LjI2MTgwOF0gYXRhMy4wMDogY29uZmlndXJlZCBmb3IgVURNQS8xMzMKWyAgICA4LjI2
NTQyMF0gdXNiIDctNzogbmV3IGhpZ2gtc3BlZWQgVVNCIGRldmljZSBudW1iZXIgMyB1c2luZyB4
aGNpX2hjZApbICAgIDguMjY2OTk4XSBzY3NpIDI6MDowOjA6IERpcmVjdC1BY2Nlc3MgICAgIEFU
QSAgICAgIFNUMzAwMERNMDA4LTJETTEgQ0MyNiBQUTogMCBBTlNJOiA1ClsgICAgOC4zMDk0OTVd
IHVzYiA0LTQ6IG5ldyBTdXBlclNwZWVkIFVTQiBkZXZpY2UgbnVtYmVyIDQgdXNpbmcgeGhjaV9o
Y2QKWyAgICA4LjMzNDMwNF0gdXNiIDQtNDogTmV3IFVTQiBkZXZpY2UgZm91bmQsIGlkVmVuZG9y
PTBiYzIsIGlkUHJvZHVjdD1hYzI1LCBiY2REZXZpY2U9IDEuMDAKWyAgICA4LjM0MzM3N10gdXNi
IDQtNDogTmV3IFVTQiBkZXZpY2Ugc3RyaW5nczogTWZyPTIsIFByb2R1Y3Q9MywgU2VyaWFsTnVt
YmVyPTEKWyAgICA4LjM1MTU4MF0gdXNiIDQtNDogUHJvZHVjdDogQlVQIFBvcnRhYmxlClsgICAg
OC4zNTYxOTNdIHVzYiA0LTQ6IE1hbnVmYWN0dXJlcjogU2VhZ2F0ZQpbICAgIDguMzYwOTE0XSB1
c2IgNC00OiBTZXJpYWxOdW1iZXI6IDAwMDAwMDAwTkFCOUs0R00KWyAgICA4LjQ2MTQ0NV0gdXNi
IDMtMi4yOiBuZXcgbG93LXNwZWVkIFVTQiBkZXZpY2UgbnVtYmVyIDMgdXNpbmcgeGhjaV9oY2QK
WyAgICA4LjUwNjgwM10gdXNiIDctNzogTmV3IFVTQiBkZXZpY2UgZm91bmQsIGlkVmVuZG9yPTA2
N2IsIGlkUHJvZHVjdD0yNTg2LCBiY2REZXZpY2U9IDAuMDAKWyAgICA4LjUxNjA1N10gdXNiIDct
NzogTmV3IFVTQiBkZXZpY2Ugc3RyaW5nczogTWZyPTEsIFByb2R1Y3Q9MywgU2VyaWFsTnVtYmVy
PTAKWyAgICA4LjUyNDEyMF0gdXNiIDctNzogUHJvZHVjdDogVVNCIDIuMCBIdWIgICAgICAgICAg
ICAKWyAgICA4LjUyOTg2N10gdXNiIDctNzogTWFudWZhY3R1cmVyOiBVU0IgRGV2aWNlICAKWyAg
ICA4LjU0Mzk3Nl0gaHViIDctNzoxLjA6IFVTQiBodWIgZm91bmQKWyAgICA4LjU1MDc5NV0gaHVi
IDctNzoxLjA6IDQgcG9ydHMgZGV0ZWN0ZWQKWyAgICA4LjYyMjAzNV0gdXNiIDMtMi4yOiBOZXcg
VVNCIGRldmljZSBmb3VuZCwgaWRWZW5kb3I9MWJjZiwgaWRQcm9kdWN0PTAwMDUsIGJjZERldmlj
ZT0gMC4xNApbICAgIDguNjMxMzYwXSB1c2IgMy0yLjI6IE5ldyBVU0IgZGV2aWNlIHN0cmluZ3M6
IE1mcj0wLCBQcm9kdWN0PTIsIFNlcmlhbE51bWJlcj0wClsgICAgOC42Mzk2MjldIHVzYiAzLTIu
MjogUHJvZHVjdDogVVNCIE9wdGljYWwgTW91c2UKWyAgICA4Ljc1NzQ1MV0gYXRhNDogU0FUQSBs
aW5rIHVwIDYuMCBHYnBzIChTU3RhdHVzIDEzMyBTQ29udHJvbCAzMDApClsgICAgOC43NjE0MjFd
IHVzYiA3LTg6IG5ldyBoaWdoLXNwZWVkIFVTQiBkZXZpY2UgbnVtYmVyIDQgdXNpbmcgeGhjaV9o
Y2QKWyAgICA4Ljc3NTg5NF0gYXRhNC4wMDogQVRBLTg6IE9DWi1WRVJURVgzIE1JLCAyLjI1LCBt
YXggVURNQS8xMzMKWyAgICA4Ljc3NzQxOV0gdXNiIDMtMi4zOiBuZXcgZnVsbC1zcGVlZCBVU0Ig
ZGV2aWNlIG51bWJlciA0IHVzaW5nIHhoY2lfaGNkClsgICAgOC43ODI2NDZdIGF0YTQuMDA6IDQ2
ODg2MjEyOCBzZWN0b3JzLCBtdWx0aSAxNjogTEJBNDggTkNRIChkZXB0aCAzMiksIEFBClsgICAg
OC44MDYyOTZdIGF0YTQuMDA6IGNvbmZpZ3VyZWQgZm9yIFVETUEvMTMzClsgICAgOC44MTE2MDRd
IHNjc2kgMzowOjA6MDogRGlyZWN0LUFjY2VzcyAgICAgQVRBICAgICAgT0NaLVZFUlRFWDMgTUkg
ICAyLjI1IFBROiAwIEFOU0k6IDUKWyAgICA4LjgyMzk4M10gbnZtZSBudm1lMDogcGNpIGZ1bmN0
aW9uIDAwMDA6ODE6MDAuMApbICAgIDguODI5NjM4XSBudm1lIG52bWUxOiBwY2kgZnVuY3Rpb24g
MDAwMDo0MzowMC4wClsgICAgOC44MzM4NjBdIG52bWUgbnZtZTA6IFNodXRkb3duIHRpbWVvdXQg
c2V0IHRvIDEwIHNlY29uZHMKWyAgICA4LjgzNTA2Ml0gbnZtZSBudm1lMjogcGNpIGZ1bmN0aW9u
IDAwMDA6NDg6MDAuMApbICAgIDguODQxNTkzXSBzZCAxOjA6MDowOiBbc2RhXSAyOTMwMjc3MTY4
IDUxMi1ieXRlIGxvZ2ljYWwgYmxvY2tzOiAoMS41MCBUQi8xLjM2IFRpQikKWyAgICA4Ljg0MTY0
NF0gc2QgMzowOjA6MDogW3NkYl0gNDY4ODYyMTI4IDUxMi1ieXRlIGxvZ2ljYWwgYmxvY2tzOiAo
MjQwIEdCLzIyNCBHaUIpClsgICAgOC44NDE2NjZdIHNkIDA6MDowOjA6IFtzZGRdIDU4NjA1MzMx
NjggNTEyLWJ5dGUgbG9naWNhbCBibG9ja3M6ICgzLjAwIFRCLzIuNzMgVGlCKQpbICAgIDguODQx
NjcxXSBzZCAwOjA6MDowOiBbc2RkXSA0MDk2LWJ5dGUgcGh5c2ljYWwgYmxvY2tzClsgICAgOC44
NDE2NzJdIHNkIDM6MDowOjA6IFtzZGJdIFdyaXRlIFByb3RlY3QgaXMgb2ZmClsgICAgOC44NDE2
NzVdIHNkIDM6MDowOjA6IFtzZGJdIE1vZGUgU2Vuc2U6IDAwIDNhIDAwIDAwClsgICAgOC44NDE2
ODBdIHNkIDA6MDowOjA6IFtzZGRdIFdyaXRlIFByb3RlY3QgaXMgb2ZmClsgICAgOC44NDE2ODFd
IHNkIDI6MDowOjA6IFtzZGNdIDU4NjA1MzMxNjggNTEyLWJ5dGUgbG9naWNhbCBibG9ja3M6ICgz
LjAwIFRCLzIuNzMgVGlCKQpbICAgIDguODQxNjgxXSBzZCAwOjA6MDowOiBbc2RkXSBNb2RlIFNl
bnNlOiAwMCAzYSAwMCAwMApbICAgIDguODQxNjg0XSBzZCAyOjA6MDowOiBbc2RjXSA0MDk2LWJ5
dGUgcGh5c2ljYWwgYmxvY2tzClsgICAgOC44NDE2OTddIHNkIDA6MDowOjA6IFtzZGRdIFdyaXRl
IGNhY2hlOiBlbmFibGVkLCByZWFkIGNhY2hlOiBlbmFibGVkLCBkb2Vzbid0IHN1cHBvcnQgRFBP
IG9yIEZVQQpbICAgIDguODQxNzExXSBzZCAyOjA6MDowOiBbc2RjXSBXcml0ZSBQcm90ZWN0IGlz
IG9mZgpbICAgIDguODQxNzEzXSBzZCAyOjA6MDowOiBbc2RjXSBNb2RlIFNlbnNlOiAwMCAzYSAw
MCAwMApbICAgIDguODQxNzE1XSBzZCAwOjA6MDowOiBbc2RkXSBQcmVmZXJyZWQgbWluaW11bSBJ
L08gc2l6ZSA0MDk2IGJ5dGVzClsgICAgOC44NDE3MjBdIHNkIDM6MDowOjA6IFtzZGJdIFdyaXRl
IGNhY2hlOiBlbmFibGVkLCByZWFkIGNhY2hlOiBlbmFibGVkLCBkb2Vzbid0IHN1cHBvcnQgRFBP
IG9yIEZVQQpbICAgIDguODQxNzgzXSBzZCAyOjA6MDowOiBbc2RjXSBXcml0ZSBjYWNoZTogZW5h
YmxlZCwgcmVhZCBjYWNoZTogZW5hYmxlZCwgZG9lc24ndCBzdXBwb3J0IERQTyBvciBGVUEKWyAg
ICA4Ljg0MTc5OF0gc2QgMzowOjA6MDogW3NkYl0gUHJlZmVycmVkIG1pbmltdW0gSS9PIHNpemUg
NTEyIGJ5dGVzClsgICAgOC44NDE4NDZdIHNkIDI6MDowOjA6IFtzZGNdIFByZWZlcnJlZCBtaW5p
bXVtIEkvTyBzaXplIDQwOTYgYnl0ZXMKWyAgICA4Ljg0MjI5M10gbnZtZSBudm1lMTogbWlzc2lu
ZyBvciBpbnZhbGlkIFNVQk5RTiBmaWVsZC4KWyAgICA4Ljg0MjMwNV0gbnZtZSBudm1lMTogU2h1
dGRvd24gdGltZW91dCBzZXQgdG8gOCBzZWNvbmRzClsgICAgOC44NDMzMDJdICBzZGI6IHNkYjEK
WyAgICA4Ljg0MzM3NV0gc2QgMzowOjA6MDogW3NkYl0gQXR0YWNoZWQgU0NTSSBkaXNrClsgICAg
OC44NTIzNTRdIG52bWUgbnZtZTI6IFNodXRkb3duIHRpbWVvdXQgc2V0IHRvIDEwIHNlY29uZHMK
WyAgICA4Ljg1MjQ0Ml0gbnZtZSBudm1lMDogMTYvMC8wIGRlZmF1bHQvcmVhZC9wb2xsIHF1ZXVl
cwpbICAgIDguODU0NTE1XSAgbnZtZTBuMTogcDEgcDIKWyAgICA4Ljg1NTc2Nl0gc2QgMTowOjA6
MDogW3NkYV0gV3JpdGUgUHJvdGVjdCBpcyBvZmYKWyAgICA4Ljg2OTE2NF0gbnZtZSBudm1lMjog
MTYvMC8wIGRlZmF1bHQvcmVhZC9wb2xsIHF1ZXVlcwpbICAgIDguODczNzU1XSBzZCAxOjA6MDow
OiBbc2RhXSBNb2RlIFNlbnNlOiAwMCAzYSAwMCAwMApbICAgIDguODc1NjAzXSBudm1lIG52bWUx
OiAzMi8wLzAgZGVmYXVsdC9yZWFkL3BvbGwgcXVldWVzClsgICAgOC44Nzk1NDddICBudm1lMW4x
OiBwMSBwMiBwMwpbICAgIDguODgxOTg0XSAgbnZtZTJuMTogcDEgcDIKWyAgICA4Ljg4NTQ5OV0g
c2QgMTowOjA6MDogW3NkYV0gV3JpdGUgY2FjaGU6IGVuYWJsZWQsIHJlYWQgY2FjaGU6IGVuYWJs
ZWQsIGRvZXNuJ3Qgc3VwcG9ydCBEUE8gb3IgRlVBClsgICAgOC44OTE2ODBdICBzZGM6IHNkYzEg
c2RjMiBzZGMzClsgICAgOC44OTk5ODldIHNkIDE6MDowOjA6IFtzZGFdIFByZWZlcnJlZCBtaW5p
bXVtIEkvTyBzaXplIDUxMiBieXRlcwpbICAgIDguOTA2MjgwXSBzZCAyOjA6MDowOiBbc2RjXSBB
dHRhY2hlZCBTQ1NJIGRpc2sKWyAgICA4LjkyNDkzN10gIHNkZDogc2RkMSBzZGQyIHNkZDMKWyAg
ICA4Ljk0MDExNV0gdXNiLXN0b3JhZ2UgNC0zOjEuMDogVVNCIE1hc3MgU3RvcmFnZSBkZXZpY2Ug
ZGV0ZWN0ZWQKWyAgICA4Ljk0MTk5NV0gdXNiIDMtMi4zOiBOZXcgVVNCIGRldmljZSBmb3VuZCwg
aWRWZW5kb3I9MWE3YywgaWRQcm9kdWN0PTAxOTIsIGJjZERldmljZT0gMS4xMwpbICAgIDguOTQx
OTk3XSB1c2IgMy0yLjM6IE5ldyBVU0IgZGV2aWNlIHN0cmluZ3M6IE1mcj0xLCBQcm9kdWN0PTYs
IFNlcmlhbE51bWJlcj0wClsgICAgOC45NDE5OTldIHVzYiAzLTIuMzogUHJvZHVjdDogRXZvbHVl
bnQgVmVydGljYWxNb3VzZSA0IExlZnQKWyAgICA4Ljk0MTk5OV0gdXNiIDMtMi4zOiBNYW51ZmFj
dHVyZXI6IEtpbmdzaXMgUGVyaXBoZXJhbHMKWyAgICA4Ljk1MDg0OF0gc2QgMDowOjA6MDogW3Nk
ZF0gQXR0YWNoZWQgU0NTSSBkaXNrClsgICAgOC45NTI4MDhdICBzZGE6IHNkYTEgc2RhMiBzZGEz
ClsgICAgOC45NTI5MDFdIHNkIDE6MDowOjA6IFtzZGFdIEF0dGFjaGVkIFNDU0kgZGlzawpbICAg
IDguOTU4MTAwXSBzY3NpIGhvc3Q2OiB1c2Itc3RvcmFnZSA0LTM6MS4wClsgICAgOC45Nzc1NjZd
IHI4MTY5IDAwMDA6ODY6MDAuMCBlbnAxMzRzMDogcmVuYW1lZCBmcm9tIGV0aDAKWyAgICA4Ljk3
Nzg1Ml0gdXNiY29yZTogcmVnaXN0ZXJlZCBuZXcgaW50ZXJmYWNlIGRyaXZlciB1c2Itc3RvcmFn
ZQpbICAgIDguOTkyNjUwXSBoaWQ6IHJhdyBISUQgZXZlbnRzIGRyaXZlciAoQykgSmlyaSBLb3Np
bmEKWyAgICA5LjAxNDc3OF0gdXNiIDctODogTmV3IFVTQiBkZXZpY2UgZm91bmQsIGlkVmVuZG9y
PTA2N2IsIGlkUHJvZHVjdD0yNTg2LCBiY2REZXZpY2U9IDAuMDAKWyAgICA5LjA0OTY1OF0gc2Nz
aSBob3N0NzogdWFzClsgICAgOS4wNTI3ODhdIHVzYiA3LTg6IE5ldyBVU0IgZGV2aWNlIHN0cmlu
Z3M6IE1mcj0xLCBQcm9kdWN0PTMsIFNlcmlhbE51bWJlcj0wClsgICAgOS4wNTY2NTRdIHVzYmNv
cmU6IHJlZ2lzdGVyZWQgbmV3IGludGVyZmFjZSBkcml2ZXIgdWFzClsgICAgOS4wNTcwMjVdIHNj
c2kgNzowOjA6MDogRGlyZWN0LUFjY2VzcyAgICAgU2VhZ2F0ZSAgQlVQIFBvcnRhYmxlICAgICAw
MDA0IFBROiAwIEFOU0k6IDYKWyAgICA5LjA1ODE3Nl0gc2QgNzowOjA6MDogW3NkZV0gNzgxNDAz
NzE2NyA1MTItYnl0ZSBsb2dpY2FsIGJsb2NrczogKDQuMDAgVEIvMy42NCBUaUIpClsgICAgOS4w
NTgxNzddIHNkIDc6MDowOjA6IFtzZGVdIDQwOTYtYnl0ZSBwaHlzaWNhbCBibG9ja3MKWyAgICA5
LjA1ODI1NV0gc2QgNzowOjA6MDogW3NkZV0gV3JpdGUgUHJvdGVjdCBpcyBvZmYKWyAgICA5LjA1
ODI1Nl0gc2QgNzowOjA6MDogW3NkZV0gTW9kZSBTZW5zZTogNGYgMDAgMDAgMDAKWyAgICA5LjA1
ODQxNF0gc2QgNzowOjA6MDogW3NkZV0gV3JpdGUgY2FjaGU6IGVuYWJsZWQsIHJlYWQgY2FjaGU6
IGVuYWJsZWQsIGRvZXNuJ3Qgc3VwcG9ydCBEUE8gb3IgRlVBClsgICAgOS4wNTg1NzNdIHNkIDc6
MDowOjA6IFtzZGVdIFByZWZlcnJlZCBtaW5pbXVtIEkvTyBzaXplIDQwOTYgYnl0ZXMKWyAgICA5
LjA1ODU3NF0gc2QgNzowOjA6MDogW3NkZV0gT3B0aW1hbCB0cmFuc2ZlciBzaXplIDMzNTUzOTIw
IGJ5dGVzIG5vdCBhIG11bHRpcGxlIG9mIHByZWZlcnJlZCBtaW5pbXVtIGJsb2NrIHNpemUgKDQw
OTYgYnl0ZXMpClsgICAgOS4wNjM1NjNdIHVzYiA3LTg6IFByb2R1Y3Q6IFVTQiAyLjAgSHViICAg
ICAgICAgICAgClsgICAgOS4xMTc5MjldIHVzYmNvcmU6IHJlZ2lzdGVyZWQgbmV3IGludGVyZmFj
ZSBkcml2ZXIgdXNiaGlkClsgICAgOS4xMTk5NzldIHVzYiA3LTg6IE1hbnVmYWN0dXJlcjogVVNC
IERldmljZSAgClsgICAgOS4xMjY3NDNdIHVzYmhpZDogVVNCIEhJRCBjb3JlIGRyaXZlcgpbICAg
IDkuMTU1MDA3XSBodWIgNy04OjEuMDogVVNCIGh1YiBmb3VuZApbICAgIDkuMTY1NTE2XSByODE2
OSAwMDAwOjg3OjAwLjAgZW5wMTM1czA6IHJlbmFtZWQgZnJvbSBldGgxClsgICAgOS4xNzA3Nzhd
IGh1YiA3LTg6MS4wOiA0IHBvcnRzIGRldGVjdGVkClsgICAgOS4zMDgwMTFdIGRldmljZS1tYXBw
ZXI6IGNvcmU6IENPTkZJR19JTUFfRElTQUJMRV9IVEFCTEUgaXMgZGlzYWJsZWQuIER1cGxpY2F0
ZSBJTUEgbWVhc3VyZW1lbnRzIHdpbGwgbm90IGJlIHJlY29yZGVkIGluIHRoZSBJTUEgbG9nLgpb
ICAgIDkuMzA5NDUzXSByODE2OSAwMDAwOjQ3OjAwLjAgZW5wNzFzMDogcmVuYW1lZCBmcm9tIGV0
aDIKWyAgICA5LjMxMzQ1MV0gdXNiIDctNy4xOiBuZXcgZnVsbC1zcGVlZCBVU0IgZGV2aWNlIG51
bWJlciA1IHVzaW5nIHhoY2lfaGNkClsgICAgOS4zMjIyODhdIGRldmljZS1tYXBwZXI6IHVldmVu
dDogdmVyc2lvbiAxLjAuMwpbICAgIDkuMzQxNTk5XSBkZXZpY2UtbWFwcGVyOiBpb2N0bDogNC40
Ny4wLWlvY3RsICgyMDIyLTA3LTI4KSBpbml0aWFsaXNlZDogZG0tZGV2ZWxAcmVkaGF0LmNvbQpb
ICAgIDkuMzU0OTk5XSAgc2RlOiBzZGUzIHNkZTkKWyAgICA5LjM1ODQwM10gc2QgNzowOjA6MDog
W3NkZV0gQXR0YWNoZWQgU0NTSSBkaXNrClsgICAgOS4zNjYwMDVdIGlucHV0OiBVU0IgT3B0aWNh
bCBNb3VzZSBhcyAvZGV2aWNlcy9wY2kwMDAwOjgwLzAwMDA6ODA6MDEuMy8wMDAwOjgyOjAwLjAv
dXNiMy8zLTIvMy0yLjIvMy0yLjI6MS4wLzAwMDM6MUJDRjowMDA1LjAwMDEvaW5wdXQvaW5wdXQw
ClsgICAgOS4zODA3MzldIGhpZC1nZW5lcmljIDAwMDM6MUJDRjowMDA1LjAwMDE6IGlucHV0LGhp
ZHJhdzA6IFVTQiBISUQgdjEuMTAgTW91c2UgW1VTQiBPcHRpY2FsIE1vdXNlXSBvbiB1c2ItMDAw
MDo4MjowMC4wLTIuMi9pbnB1dDAKWyAgICA5LjM5NDIwNl0gaW5wdXQ6IEtpbmdzaXMgUGVyaXBo
ZXJhbHMgRXZvbHVlbnQgVmVydGljYWxNb3VzZSA0IExlZnQgYXMgL2RldmljZXMvcGNpMDAwMDo4
MC8wMDAwOjgwOjAxLjMvMDAwMDo4MjowMC4wL3VzYjMvMy0yLzMtMi4zLzMtMi4zOjEuMC8wMDAz
OjFBN0M6MDE5Mi4wMDAyL2lucHV0L2lucHV0MQpbICAgIDkuNDEyMzgxXSBoaWQtZ2VuZXJpYyAw
MDAzOjFBN0M6MDE5Mi4wMDAyOiBpbnB1dCxoaWRyYXcxOiBVU0IgSElEIHYxLjExIE1vdXNlIFtL
aW5nc2lzIFBlcmlwaGVyYWxzIEV2b2x1ZW50IFZlcnRpY2FsTW91c2UgNCBMZWZ0XSBvbiB1c2It
MDAwMDo4MjowMC4wLTIuMy9pbnB1dDAKWyAgICA5LjQ5NzQ5MF0gcmFpZDY6IGF2eDUxMng0IGdl
bigpIDYzODYwIE1CL3MKWyAgICA5LjU2OTQ0OV0gcmFpZDY6IGF2eDUxMngyIGdlbigpIDY2MDM4
IE1CL3MKWyAgICA5LjYzNjgwMF0gdXNiIDctNy4xOiBOZXcgVVNCIGRldmljZSBmb3VuZCwgaWRW
ZW5kb3I9MDUxZCwgaWRQcm9kdWN0PTAwMDIsIGJjZERldmljZT0gMC45MApbICAgIDkuNjQxNTE5
XSByYWlkNjogYXZ4NTEyeDEgZ2VuKCkgNjUyMTcgTUIvcwpbICAgIDkuNjQ2MDg5XSB1c2IgNy03
LjE6IE5ldyBVU0IgZGV2aWNlIHN0cmluZ3M6IE1mcj0xLCBQcm9kdWN0PTIsIFNlcmlhbE51bWJl
cj0zClsgICAgOS42NTkxNTFdIHVzYiA3LTcuMTogUHJvZHVjdDogQmFjay1VUFMgWFMgMTAwME0g
Rlc6OTQ1LmQ5IC5EIFVTQiBGVzpkOSAgICAgClsgICAgOS42NjcxNzZdIHVzYiA3LTcuMTogTWFu
dWZhY3R1cmVyOiBBbWVyaWNhbiBQb3dlciBDb252ZXJzaW9uClsgICAgOS42NzM3MzNdIHVzYiA3
LTcuMTogU2VyaWFsTnVtYmVyOiAzQjE4MzFYMjY1MTMgIApbICAgIDkuNzE3NDIwXSByYWlkNjog
YXZ4Mng0ICAgZ2VuKCkgNjUzOTUgTUIvcwpbICAgIDkuNzM3NTA1XSB1c2IgNy05OiBuZXcgZnVs
bC1zcGVlZCBVU0IgZGV2aWNlIG51bWJlciA2IHVzaW5nIHhoY2lfaGNkClsgICAgOS43NDUyMTdd
IGhpZC1nZW5lcmljIDAwMDM6MDUxRDowMDAyLjAwMDM6IGhpZGRldjAsaGlkcmF3MjogVVNCIEhJ
RCB2MS4wMCBEZXZpY2UgW0FtZXJpY2FuIFBvd2VyIENvbnZlcnNpb24gQmFjay1VUFMgWFMgMTAw
ME0gRlc6OTQ1LmQ5IC5EIFVTQiBGVzpkOSAgICAgXSBvbiB1c2ItMDAwMDo0OTowMC4wLTcuMS9p
bnB1dDAKWyAgICA5Ljc4OTQ5Ml0gcmFpZDY6IGF2eDJ4MiAgIGdlbigpIDY1Mjk0IE1CL3MKWyAg
ICA5Ljg2MTQyMV0gcmFpZDY6IGF2eDJ4MSAgIGdlbigpIDU1OTkxIE1CL3MKWyAgICA5Ljg2NjMz
Nl0gcmFpZDY6IHVzaW5nIGFsZ29yaXRobSBhdng1MTJ4MiBnZW4oKSA2NjAzOCBNQi9zClsgICAg
OS45Mzc0NjVdIHJhaWQ2OiAuLi4uIHhvcigpIDQzMzc3IE1CL3MsIHJtdyBlbmFibGVkClsgICAg
OS45NDMxODldIHJhaWQ2OiB1c2luZyBhdng1MTJ4MiByZWNvdmVyeSBhbGdvcml0aG0KWyAgICA5
Ljk1MTA2MV0geG9yOiBhdXRvbWF0aWNhbGx5IHVzaW5nIGJlc3QgY2hlY2tzdW1taW5nIGZ1bmN0
aW9uICAgYXZ4ICAgICAgIApbICAgIDkuOTc1MDM4XSBhc3luY190eDogYXBpIGluaXRpYWxpemVk
IChhc3luYykKWyAgICA5Ljk5MzcwOV0gZGV2aWNlLW1hcHBlcjogcmFpZDogTG9hZGluZyB0YXJn
ZXQgdmVyc2lvbiAxLjE1LjEKWyAgIDEwLjAwMTg5N10gc2NzaSA2OjA6MDowOiBEaXJlY3QtQWNj
ZXNzICAgICBXRCAgICAgICBNeSBQYXNzcG9ydCAwODIwIDEwMTIgUFE6IDAgQU5TSTogNgpbICAg
MTAuMDExOTI5XSBzY3NpIDY6MDowOjE6IEVuY2xvc3VyZSAgICAgICAgIFdEICAgICAgIFNFUyBE
ZXZpY2UgICAgICAgMTAxMiBQUTogMCBBTlNJOiA2ClsgICAxMC4wMjM3ODFdIHNkIDY6MDowOjA6
IFtzZGZdIDM5MDY5NjM0NTYgNTEyLWJ5dGUgbG9naWNhbCBibG9ja3M6ICgyLjAwIFRCLzEuODIg
VGlCKQpbICAgMTAuMDMzMzAyXSBzZCA2OjA6MDowOiBbc2RmXSBXcml0ZSBQcm90ZWN0IGlzIG9m
ZgpbICAgMTAuMDM4Nzk5XSBzZCA2OjA6MDowOiBbc2RmXSBNb2RlIFNlbnNlOiA0NyAwMCAxMCAw
OApbICAgMTAuMDM5MjM3XSBzZCA2OjA6MDowOiBbc2RmXSBObyBDYWNoaW5nIG1vZGUgcGFnZSBm
b3VuZApbICAgMTAuMDQ1NDE0XSBzZCA2OjA6MDowOiBbc2RmXSBBc3N1bWluZyBkcml2ZSBjYWNo
ZTogd3JpdGUgdGhyb3VnaApbICAgMTAuMDU2OTgyXSAgc2RmOiBzZGYxIHNkZjIgc2RmMwpbICAg
MTAuMDYwOTU3XSBzZCA2OjA6MDowOiBbc2RmXSBBdHRhY2hlZCBTQ1NJIGRpc2sKWyAgIDEwLjA3
ODU4MV0gdXNiIDctOTogTmV3IFVTQiBkZXZpY2UgZm91bmQsIGlkVmVuZG9yPTI2Y2UsIGlkUHJv
ZHVjdD0wMWEyLCBiY2REZXZpY2U9IDAuMDAKWyAgIDEwLjA4MTIxNl0gc2NzaSA2OjA6MDoxOiBX
cm9uZyBkaWFnbm9zdGljIHBhZ2U7IGFza2VkIGZvciAxIGdvdCA4ClsgICAxMC4wODgyMzJdIHVz
YiA3LTk6IE5ldyBVU0IgZGV2aWNlIHN0cmluZ3M6IE1mcj0xLCBQcm9kdWN0PTIsIFNlcmlhbE51
bWJlcj0zClsgICAxMC4wOTUzNjldIHNjc2kgNjowOjA6MTogRmFpbGVkIHRvIGdldCBkaWFnbm9z
dGljIHBhZ2UgMHgxClsgICAxMC4wOTUzNzBdIHNjc2kgNjowOjA6MTogRmFpbGVkIHRvIGJpbmQg
ZW5jbG9zdXJlIC0xOQpbICAgMTAuMDk1Mzg4XSBzZXMgNjowOjA6MTogQXR0YWNoZWQgRW5jbG9z
dXJlIGRldmljZQpbICAgMTAuMTIxNDA1XSB1c2IgNy05OiBQcm9kdWN0OiBMRUQgQ29udHJvbGxl
cgpbICAgMTAuMTI2MjgwXSB1c2IgNy05OiBNYW51ZmFjdHVyZXI6IEFTUm9jawpbICAgMTAuMTMw
ODE2XSB1c2IgNy05OiBTZXJpYWxOdW1iZXI6IEEwMjAxOTEwMDkwMApbICAgMTAuMTM2MTc5XSB1
c2IgNy04LjE6IG5ldyBmdWxsLXNwZWVkIFVTQiBkZXZpY2UgbnVtYmVyIDcgdXNpbmcgeGhjaV9o
Y2QKWyAgIDEwLjE0ODAxN10gbWQvcmFpZDE6bWRYOiBhY3RpdmUgd2l0aCAyIG91dCBvZiAyIG1p
cnJvcnMKWyAgIDEwLjIwMTQxOF0gaW5wdXQ6IEFTUm9jayBMRUQgQ29udHJvbGxlciBhcyAvZGV2
aWNlcy9wY2kwMDAwOjQwLzAwMDA6NDA6MDMuMy8wMDAwOjQ0OjAwLjAvMDAwMDo0NTowYy4wLzAw
MDA6NDk6MDAuMC91c2I3LzctOS83LTk6MS4wLzAwMDM6MjZDRTowMUEyLjAwMDQvaW5wdXQvaW5w
dXQyClsgICAxMC4yNDA1MTddIG1kL3JhaWQxOm1kWDogYWN0aXZlIHdpdGggMiBvdXQgb2YgMiBt
aXJyb3JzClsgICAxMC4yNzc1NzhdIGhpZC1nZW5lcmljIDAwMDM6MjZDRTowMUEyLjAwMDQ6IGlu
cHV0LGhpZHJhdzM6IFVTQiBISUQgdjEuMTAgRGV2aWNlIFtBU1JvY2sgTEVEIENvbnRyb2xsZXJd
IG9uIHVzYi0wMDAwOjQ5OjAwLjAtOS9pbnB1dDAKWyAgIDEwLjQ0NzgxNF0gdXNiIDctOC4xOiBO
ZXcgVVNCIGRldmljZSBmb3VuZCwgaWRWZW5kb3I9YjU4YywgaWRQcm9kdWN0PTllODQsIGJjZERl
dmljZT0gMS4wMApbICAgMTAuNDU3NjUyXSB1c2IgNy04LjE6IE5ldyBVU0IgZGV2aWNlIHN0cmlu
Z3M6IE1mcj0xLCBQcm9kdWN0PTIsIFNlcmlhbE51bWJlcj0zClsgICAxMC40NjYxOTNdIHVzYiA3
LTguMTogUHJvZHVjdDogWWV0aSBTdGVyZW8gTWljcm9waG9uZQpbICAgMTAuNDcyMTkzXSB1c2Ig
Ny04LjE6IE1hbnVmYWN0dXJlcjogQmx1ZSBNaWNyb3Bob25lcwpbICAgMTAuNDc4MzIzXSB1c2Ig
Ny04LjE6IFNlcmlhbE51bWJlcjogUkVWOApbICAgMTAuNTI1MDAzXSBpbnB1dDogQmx1ZSBNaWNy
b3Bob25lcyBZZXRpIFN0ZXJlbyBNaWNyb3Bob25lIENvbnN1bWVyIENvbnRyb2wgYXMgL2Rldmlj
ZXMvcGNpMDAwMDo0MC8wMDAwOjQwOjAzLjMvMDAwMDo0NDowMC4wLzAwMDA6NDU6MGMuMC8wMDAw
OjQ5OjAwLjAvdXNiNy83LTgvNy04LjEvNy04LjE6MS4zLzAwMDM6QjU4Qzo5RTg0LjAwMDUvaW5w
dXQvaW5wdXQzClsgICAxMC42MDU0NDhdIHVzYiA3LTcuMzogbmV3IGhpZ2gtc3BlZWQgVVNCIGRl
dmljZSBudW1iZXIgOCB1c2luZyB4aGNpX2hjZApbICAgMTAuNjEzNDMyXSBoaWQtZ2VuZXJpYyAw
MDAzOkI1OEM6OUU4NC4wMDA1OiBpbnB1dCxoaWRkZXYxLGhpZHJhdzQ6IFVTQiBISUQgdjEuMDAg
RGV2aWNlIFtCbHVlIE1pY3JvcGhvbmVzIFlldGkgU3RlcmVvIE1pY3JvcGhvbmVdIG9uIHVzYi0w
MDAwOjQ5OjAwLjAtOC4xL2lucHV0MwpbICAgMTAuNzg2ODE3XSB1c2IgNy03LjM6IE5ldyBVU0Ig
ZGV2aWNlIGZvdW5kLCBpZFZlbmRvcj0wNDVlLCBpZFByb2R1Y3Q9MDc1ZCwgYmNkRGV2aWNlPSAx
LjA3ClsgICAxMC43OTY2NTddIHVzYiA3LTcuMzogTmV3IFVTQiBkZXZpY2Ugc3RyaW5nczogTWZy
PTEsIFByb2R1Y3Q9MiwgU2VyaWFsTnVtYmVyPTAKWyAgIDEwLjgwNTI0N10gdXNiIDctNy4zOiBQ
cm9kdWN0OiBNaWNyb3NvZnTCriBMaWZlQ2FtIENpbmVtYShUTSkKWyAgIDEwLjgxMjE4Nl0gdXNi
IDctNy4zOiBNYW51ZmFjdHVyZXI6IE1pY3Jvc29mdApbICAgMTAuOTQ1NDM0XSB1c2IgNy0xMDog
bmV3IGhpZ2gtc3BlZWQgVVNCIGRldmljZSBudW1iZXIgOSB1c2luZyB4aGNpX2hjZApbICAgMTEu
MTk4ODMzXSB1c2IgNy0xMDogTmV3IFVTQiBkZXZpY2UgZm91bmQsIGlkVmVuZG9yPTBlOGQsIGlk
UHJvZHVjdD0wNjE2LCBiY2REZXZpY2U9IDEuMDAKWyAgIDExLjIwODUyN10gdXNiIDctMTA6IE5l
dyBVU0IgZGV2aWNlIHN0cmluZ3M6IE1mcj01LCBQcm9kdWN0PTYsIFNlcmlhbE51bWJlcj03Clsg
ICAxMS4yMTcyNDBdIHVzYiA3LTEwOiBQcm9kdWN0OiBXaXJlbGVzc19EZXZpY2UKWyAgIDExLjIy
MjQzNV0gdXNiIDctMTA6IE1hbnVmYWN0dXJlcjogTWVkaWFUZWsgSW5jLgpbICAgMTEuMjI3ODQ4
XSB1c2IgNy0xMDogU2VyaWFsTnVtYmVyOiAwMDAwMDAwMDAKWyAgIDExLjI5MzQ0NF0gdXNiIDct
OC4yOiBuZXcgZnVsbC1zcGVlZCBVU0IgZGV2aWNlIG51bWJlciAxMCB1c2luZyB4aGNpX2hjZApb
ICAgMTEuNjUzODMxXSB1c2IgNy04LjI6IE5ldyBVU0IgZGV2aWNlIGZvdW5kLCBpZFZlbmRvcj0w
NDZkLCBpZFByb2R1Y3Q9YzUyYiwgYmNkRGV2aWNlPTEyLjA1ClsgICAxMS42NjM1NTldIHVzYiA3
LTguMjogTmV3IFVTQiBkZXZpY2Ugc3RyaW5nczogTWZyPTEsIFByb2R1Y3Q9MiwgU2VyaWFsTnVt
YmVyPTAKWyAgIDExLjY3MjI0MV0gdXNiIDctOC4yOiBQcm9kdWN0OiBVU0IgUmVjZWl2ZXIKWyAg
IDExLjY3NzM5Nl0gdXNiIDctOC4yOiBNYW51ZmFjdHVyZXI6IExvZ2l0ZWNoClsgICAxMS42OTc0
MTddIHVzYiA3LTEyOiBuZXcgaGlnaC1zcGVlZCBVU0IgZGV2aWNlIG51bWJlciAxMSB1c2luZyB4
aGNpX2hjZApbICAgMTEuNzUzMDM4XSBpbnB1dDogTG9naXRlY2ggVVNCIFJlY2VpdmVyIGFzIC9k
ZXZpY2VzL3BjaTAwMDA6NDAvMDAwMDo0MDowMy4zLzAwMDA6NDQ6MDAuMC8wMDAwOjQ1OjBjLjAv
MDAwMDo0OTowMC4wL3VzYjcvNy04LzctOC4yLzctOC4yOjEuMC8wMDAzOjA0NkQ6QzUyQi4wMDA2
L2lucHV0L2lucHV0NQpbICAgMTEuODI5NjE0XSBoaWQtZ2VuZXJpYyAwMDAzOjA0NkQ6QzUyQi4w
MDA2OiBpbnB1dCxoaWRyYXc1OiBVU0IgSElEIHYxLjExIEtleWJvYXJkIFtMb2dpdGVjaCBVU0Ig
UmVjZWl2ZXJdIG9uIHVzYi0wMDAwOjQ5OjAwLjAtOC4yL2lucHV0MApbICAgMTEuODkwMDcyXSBp
bnB1dDogTG9naXRlY2ggVVNCIFJlY2VpdmVyIE1vdXNlIGFzIC9kZXZpY2VzL3BjaTAwMDA6NDAv
MDAwMDo0MDowMy4zLzAwMDA6NDQ6MDAuMC8wMDAwOjQ1OjBjLjAvMDAwMDo0OTowMC4wL3VzYjcv
Ny04LzctOC4yLzctOC4yOjEuMS8wMDAzOjA0NkQ6QzUyQi4wMDA3L2lucHV0L2lucHV0NgpbICAg
MTEuOTA5MDE0XSBpbnB1dDogTG9naXRlY2ggVVNCIFJlY2VpdmVyIENvbnN1bWVyIENvbnRyb2wg
YXMgL2RldmljZXMvcGNpMDAwMDo0MC8wMDAwOjQwOjAzLjMvMDAwMDo0NDowMC4wLzAwMDA6NDU6
MGMuMC8wMDAwOjQ5OjAwLjAvdXNiNy83LTgvNy04LjIvNy04LjI6MS4xLzAwMDM6MDQ2RDpDNTJC
LjAwMDcvaW5wdXQvaW5wdXQ3ClsgICAxMS45NzM4NDFdIHVzYiA3LTEyOiBOZXcgVVNCIGRldmlj
ZSBmb3VuZCwgaWRWZW5kb3I9MTNmZSwgaWRQcm9kdWN0PTFmMjMsIGJjZERldmljZT0gMS4xMApb
ICAgMTEuOTgzNTAxXSB1c2IgNy0xMjogTmV3IFVTQiBkZXZpY2Ugc3RyaW5nczogTWZyPTEsIFBy
b2R1Y3Q9MiwgU2VyaWFsTnVtYmVyPTMKWyAgIDExLjk5MjEwMV0gdXNiIDctMTI6IFByb2R1Y3Q6
IFNUT1JFIE4gR08KWyAgIDExLjk5NjkzNV0gdXNiIDctMTI6IE1hbnVmYWN0dXJlcjogVmVyYmF0
aW0KWyAgIDEyLjAwMjAzNl0gdXNiIDctMTI6IFNlcmlhbE51bWJlcjogMDc4OTBDODkwRjQ5Clsg
ICAxMi4wMDcyNDldIGlucHV0OiBMb2dpdGVjaCBVU0IgUmVjZWl2ZXIgU3lzdGVtIENvbnRyb2wg
YXMgL2RldmljZXMvcGNpMDAwMDo0MC8wMDAwOjQwOjAzLjMvMDAwMDo0NDowMC4wLzAwMDA6NDU6
MGMuMC8wMDAwOjQ5OjAwLjAvdXNiNy83LTgvNy04LjIvNy04LjI6MS4xLzAwMDM6MDQ2RDpDNTJC
LjAwMDcvaW5wdXQvaW5wdXQ4ClsgICAxMi4wMjczNzZdIGhpZC1nZW5lcmljIDAwMDM6MDQ2RDpD
NTJCLjAwMDc6IGlucHV0LGhpZGRldjIsaGlkcmF3NjogVVNCIEhJRCB2MS4xMSBNb3VzZSBbTG9n
aXRlY2ggVVNCIFJlY2VpdmVyXSBvbiB1c2ItMDAwMDo0OTowMC4wLTguMi9pbnB1dDEKWyAgIDEy
LjA2MDAzOV0gdXNiLXN0b3JhZ2UgNy0xMjoxLjA6IFVTQiBNYXNzIFN0b3JhZ2UgZGV2aWNlIGRl
dGVjdGVkClsgICAxMi4wNjc0MThdIHNjc2kgaG9zdDg6IHVzYi1zdG9yYWdlIDctMTI6MS4wClsg
ICAxMi4wODYxNzFdIGhpZC1nZW5lcmljIDAwMDM6MDQ2RDpDNTJCLjAwMDg6IGhpZGRldjMsaGlk
cmF3NzogVVNCIEhJRCB2MS4xMSBEZXZpY2UgW0xvZ2l0ZWNoIFVTQiBSZWNlaXZlcl0gb24gdXNi
LTAwMDA6NDk6MDAuMC04LjIvaW5wdXQyClsgICAxMi4xODU0MzVdIHVzYiA3LTguMzogbmV3IGZ1
bGwtc3BlZWQgVVNCIGRldmljZSBudW1iZXIgMTIgdXNpbmcgeGhjaV9oY2QKWyAgIDEyLjUxMjg0
Ml0gdXNiIDctOC4zOiBOZXcgVVNCIGRldmljZSBmb3VuZCwgaWRWZW5kb3I9MTA1MCwgaWRQcm9k
dWN0PTA0MDcsIGJjZERldmljZT0gNC4zNwpbICAgMTIuNTIyNzM5XSB1c2IgNy04LjM6IE5ldyBV
U0IgZGV2aWNlIHN0cmluZ3M6IE1mcj0xLCBQcm9kdWN0PTIsIFNlcmlhbE51bWJlcj0wClsgICAx
Mi41MzE0MTZdIHVzYiA3LTguMzogUHJvZHVjdDogWXViaWtleSA0IE9UUCtVMkYrQ0NJRApbICAg
MTIuNTM3Mzg3XSB1c2IgNy04LjM6IE1hbnVmYWN0dXJlcjogWXViaWNvClsgICAxMi42MDExMzld
IGlucHV0OiBZdWJpY28gWXViaWtleSA0IE9UUCtVMkYrQ0NJRCBhcyAvZGV2aWNlcy9wY2kwMDAw
OjQwLzAwMDA6NDA6MDMuMy8wMDAwOjQ0OjAwLjAvMDAwMDo0NTowYy4wLzAwMDA6NDk6MDAuMC91
c2I3LzctOC83LTguMy83LTguMzoxLjAvMDAwMzoxMDUwOjA0MDcuMDAwOS9pbnB1dC9pbnB1dDEw
ClsgICAxMi42Nzc2MTVdIGhpZC1nZW5lcmljIDAwMDM6MTA1MDowNDA3LjAwMDk6IGlucHV0LGhp
ZHJhdzg6IFVTQiBISUQgdjEuMTAgS2V5Ym9hcmQgW1l1YmljbyBZdWJpa2V5IDQgT1RQK1UyRitD
Q0lEXSBvbiB1c2ItMDAwMDo0OTowMC4wLTguMy9pbnB1dDAKWyAgIDEyLjY5MzM1OF0gaGlkLWdl
bmVyaWMgMDAwMzoxMDUwOjA0MDcuMDAwQTogaGlkZGV2NCxoaWRyYXc5OiBVU0IgSElEIHYxLjEw
IERldmljZSBbWXViaWNvIFl1YmlrZXkgNCBPVFArVTJGK0NDSURdIG9uIHVzYi0wMDAwOjQ5OjAw
LjAtOC4zL2lucHV0MQpbICAgMTIuNzg1NDQzXSB1c2IgNy04LjQ6IG5ldyBsb3ctc3BlZWQgVVNC
IGRldmljZSBudW1iZXIgMTMgdXNpbmcgeGhjaV9oY2QKWyAgIDEyLjk3ODk0MF0gdXNiIDctOC40
OiBOZXcgVVNCIGRldmljZSBmb3VuZCwgaWRWZW5kb3I9MGIzOSwgaWRQcm9kdWN0PTAwMDEsIGJj
ZERldmljZT0gMy4xMApbICAgMTIuOTg4Njg0XSB1c2IgNy04LjQ6IE5ldyBVU0IgZGV2aWNlIHN0
cmluZ3M6IE1mcj0xLCBQcm9kdWN0PTIsIFNlcmlhbE51bWJlcj0wClsgICAxMi45OTc1MDldIHVz
YiA3LTguNDogUHJvZHVjdDogVVNCIHRvIFBTMiBBZGFwdG9yICBWMy4xMApbICAgMTMuMDAzODU4
XSB1c2IgNy04LjQ6IE1hbnVmYWN0dXJlcjogQ29tcG9zaXRlIFVTQiBQUzIgQ29udmVydGVyClsg
ICAxMy4wMzg3MzRdIGlucHV0OiBDb21wb3NpdGUgVVNCIFBTMiBDb252ZXJ0ZXIgVVNCIHRvIFBT
MiBBZGFwdG9yICBWMy4xMCBhcyAvZGV2aWNlcy9wY2kwMDAwOjQwLzAwMDA6NDA6MDMuMy8wMDAw
OjQ0OjAwLjAvMDAwMDo0NTowYy4wLzAwMDA6NDk6MDAuMC91c2I3LzctOC83LTguNC83LTguNDox
LjAvMDAwMzowQjM5OjAwMDEuMDAwQi9pbnB1dC9pbnB1dDExClsgICAxMy4wNzc4MjNdIHNjc2kg
ODowOjA6MDogRGlyZWN0LUFjY2VzcyAgICAgVmVyYmF0aW0gU1RPUkUgTiBHTyAgICAgICA1LjAw
IFBROiAwIEFOU0k6IDAgQ0NTClsgICAxMy4wODgwMjddIHNkIDg6MDowOjA6IFtzZGddIDMxMzE4
MDE2IDUxMi1ieXRlIGxvZ2ljYWwgYmxvY2tzOiAoMTYuMCBHQi8xNC45IEdpQikKWyAgIDEzLjA5
NzA5OF0gc2QgODowOjA6MDogW3NkZ10gV3JpdGUgUHJvdGVjdCBpcyBvZmYKWyAgIDEzLjEwMjc0
NV0gc2QgODowOjA6MDogW3NkZ10gTW9kZSBTZW5zZTogMjMgMDAgMDAgMDAKWyAgIDEzLjEwMjg5
NF0gc2QgODowOjA6MDogW3NkZ10gTm8gQ2FjaGluZyBtb2RlIHBhZ2UgZm91bmQKWyAgIDEzLjEw
OTExNl0gc2QgODowOjA6MDogW3NkZ10gQXNzdW1pbmcgZHJpdmUgY2FjaGU6IHdyaXRlIHRocm91
Z2gKWyAgIDEzLjExNzU1NF0gaGlkLWdlbmVyaWMgMDAwMzowQjM5OjAwMDEuMDAwQjogaW5wdXQs
aGlkcmF3MTA6IFVTQiBISUQgdjEuMTAgS2V5Ym9hcmQgW0NvbXBvc2l0ZSBVU0IgUFMyIENvbnZl
cnRlciBVU0IgdG8gUFMyIEFkYXB0b3IgIFYzLjEwXSBvbiB1c2ItMDAwMDo0OTowMC4wLTguNC9p
bnB1dDAKWyAgIDEzLjExNzkwOV0gIHNkZzogc2RnMSBzZGcyClsgICAxMy4xMzg4NzNdIHNkIDg6
MDowOjA6IFtzZGddIEF0dGFjaGVkIFNDU0kgcmVtb3ZhYmxlIGRpc2sKWyAgIDEzLjEzOTA0NV0g
aW5wdXQ6IENvbXBvc2l0ZSBVU0IgUFMyIENvbnZlcnRlciBVU0IgdG8gUFMyIEFkYXB0b3IgIFYz
LjEwIE1vdXNlIGFzIC9kZXZpY2VzL3BjaTAwMDA6NDAvMDAwMDo0MDowMy4zLzAwMDA6NDQ6MDAu
MC8wMDAwOjQ1OjBjLjAvMDAwMDo0OTowMC4wL3VzYjcvNy04LzctOC40LzctOC40OjEuMS8wMDAz
OjBCMzk6MDAwMS4wMDBDL2lucHV0L2lucHV0MTIKWyAgIDEzLjE2NzQ0NF0gaW5wdXQ6IENvbXBv
c2l0ZSBVU0IgUFMyIENvbnZlcnRlciBVU0IgdG8gUFMyIEFkYXB0b3IgIFYzLjEwIFN5c3RlbSBD
b250cm9sIGFzIC9kZXZpY2VzL3BjaTAwMDA6NDAvMDAwMDo0MDowMy4zLzAwMDA6NDQ6MDAuMC8w
MDAwOjQ1OjBjLjAvMDAwMDo0OTowMC4wL3VzYjcvNy04LzctOC40LzctOC40OjEuMS8wMDAzOjBC
Mzk6MDAwMS4wMDBDL2lucHV0L2lucHV0MTMKWyAgIDEzLjI0OTQ4OV0gaW5wdXQ6IENvbXBvc2l0
ZSBVU0IgUFMyIENvbnZlcnRlciBVU0IgdG8gUFMyIEFkYXB0b3IgIFYzLjEwIENvbnN1bWVyIENv
bnRyb2wgYXMgL2RldmljZXMvcGNpMDAwMDo0MC8wMDAwOjQwOjAzLjMvMDAwMDo0NDowMC4wLzAw
MDA6NDU6MGMuMC8wMDAwOjQ5OjAwLjAvdXNiNy83LTgvNy04LjQvNy04LjQ6MS4xLzAwMDM6MEIz
OTowMDAxLjAwMEMvaW5wdXQvaW5wdXQxNApbICAgMTMuMjcyNTAwXSBoaWQtZ2VuZXJpYyAwMDAz
OjBCMzk6MDAwMS4wMDBDOiBpbnB1dCxoaWRyYXcxMTogVVNCIEhJRCB2MS4xMCBNb3VzZSBbQ29t
cG9zaXRlIFVTQiBQUzIgQ29udmVydGVyIFVTQiB0byBQUzIgQWRhcHRvciAgVjMuMTBdIG9uIHVz
Yi0wMDAwOjQ5OjAwLjAtOC40L2lucHV0MQpbICAgMTMuNDgyMDYxXSBsb2dpdGVjaC1kanJlY2Vp
dmVyIDAwMDM6MDQ2RDpDNTJCLjAwMDg6IGhpZGRldjIsaGlkcmF3NTogVVNCIEhJRCB2MS4xMSBE
ZXZpY2UgW0xvZ2l0ZWNoIFVTQiBSZWNlaXZlcl0gb24gdXNiLTAwMDA6NDk6MDAuMC04LjIvaW5w
dXQyClsgICAxMy42MTU1MzBdIGlucHV0OiBMb2dpdGVjaCBXaXJlbGVzcyBEZXZpY2UgUElEOjQw
MTEgS2V5Ym9hcmQgYXMgL2RldmljZXMvcGNpMDAwMDo0MC8wMDAwOjQwOjAzLjMvMDAwMDo0NDow
MC4wLzAwMDA6NDU6MGMuMC8wMDAwOjQ5OjAwLjAvdXNiNy83LTgvNy04LjIvNy04LjI6MS4yLzAw
MDM6MDQ2RDpDNTJCLjAwMDgvMDAwMzowNDZEOjQwMTEuMDAwRC9pbnB1dC9pbnB1dDE1ClsgICAx
My42MzczMDBdIGlucHV0OiBMb2dpdGVjaCBXaXJlbGVzcyBEZXZpY2UgUElEOjQwMTEgTW91c2Ug
YXMgL2RldmljZXMvcGNpMDAwMDo0MC8wMDAwOjQwOjAzLjMvMDAwMDo0NDowMC4wLzAwMDA6NDU6
MGMuMC8wMDAwOjQ5OjAwLjAvdXNiNy83LTgvNy04LjIvNy04LjI6MS4yLzAwMDM6MDQ2RDpDNTJC
LjAwMDgvMDAwMzowNDZEOjQwMTEuMDAwRC9pbnB1dC9pbnB1dDE2ClsgICAxMy42NTg5MTRdIGhp
ZC1nZW5lcmljIDAwMDM6MDQ2RDo0MDExLjAwMEQ6IGlucHV0LGhpZHJhdzY6IFVTQiBISUQgdjEu
MTEgS2V5Ym9hcmQgW0xvZ2l0ZWNoIFdpcmVsZXNzIERldmljZSBQSUQ6NDAxMV0gb24gdXNiLTAw
MDA6NDk6MDAuMC04LjIvaW5wdXQyOjEKWyAgIDEzLjY3NDE3M10gaW5wdXQ6IExvZ2l0ZWNoIFdp
cmVsZXNzIERldmljZSBQSUQ6NDAyNCBLZXlib2FyZCBhcyAvZGV2aWNlcy9wY2kwMDAwOjQwLzAw
MDA6NDA6MDMuMy8wMDAwOjQ0OjAwLjAvMDAwMDo0NTowYy4wLzAwMDA6NDk6MDAuMC91c2I3Lzct
OC83LTguMi83LTguMjoxLjIvMDAwMzowNDZEOkM1MkIuMDAwOC8wMDAzOjA0NkQ6NDAyNC4wMDBF
L2lucHV0L2lucHV0MjAKWyAgIDEzLjY5NTk3Nl0gaW5wdXQ6IExvZ2l0ZWNoIFdpcmVsZXNzIERl
dmljZSBQSUQ6NDAyNCBNb3VzZSBhcyAvZGV2aWNlcy9wY2kwMDAwOjQwLzAwMDA6NDA6MDMuMy8w
MDAwOjQ0OjAwLjAvMDAwMDo0NTowYy4wLzAwMDA6NDk6MDAuMC91c2I3LzctOC83LTguMi83LTgu
MjoxLjIvMDAwMzowNDZEOkM1MkIuMDAwOC8wMDAzOjA0NkQ6NDAyNC4wMDBFL2lucHV0L2lucHV0
MjEKWyAgIDEzLjcxNzI4NV0gaGlkLWdlbmVyaWMgMDAwMzowNDZEOjQwMjQuMDAwRTogaW5wdXQs
aGlkcmF3NzogVVNCIEhJRCB2MS4xMSBLZXlib2FyZCBbTG9naXRlY2ggV2lyZWxlc3MgRGV2aWNl
IFBJRDo0MDI0XSBvbiB1c2ItMDAwMDo0OTowMC4wLTguMi9pbnB1dDI6MgpbICAgMTMuNzM5Mzcz
XSBpbnB1dDogTG9naXRlY2ggSzQwMCBQbHVzIGFzIC9kZXZpY2VzL3BjaTAwMDA6NDAvMDAwMDo0
MDowMy4zLzAwMDA6NDQ6MDAuMC8wMDAwOjQ1OjBjLjAvMDAwMDo0OTowMC4wL3VzYjcvNy04Lzct
OC4yLzctOC4yOjEuMi8wMDAzOjA0NkQ6QzUyQi4wMDA4LzAwMDM6MDQ2RDo0MDRELjAwMEYvaW5w
dXQvaW5wdXQyNQpbICAgMTMuNzU4NjUyXSBsb2dpdGVjaC1oaWRwcC1kZXZpY2UgMDAwMzowNDZE
OjQwNEQuMDAwRjogaW5wdXQsaGlkcmF3MTI6IFVTQiBISUQgdjEuMTEgS2V5Ym9hcmQgW0xvZ2l0
ZWNoIEs0MDAgUGx1c10gb24gdXNiLTAwMDA6NDk6MDAuMC04LjIvaW5wdXQyOjMKWyAgIDEzLjkx
NTMyNF0gbG9naXRlY2gtaGlkcHAtZGV2aWNlIDAwMDM6MDQ2RDo0MDExLjAwMEQ6IGhpZHJhdzY6
IFVTQiBISUQgdjEuMTEgS2V5Ym9hcmQgW0xvZ2l0ZWNoIFdpcmVsZXNzIFRvdWNoXSBvbiB1c2It
MDAwMDo0OTowMC4wLTguMi9pbnB1dDI6MQpbICAgMTQuMDgzMzgyXSBpbnB1dDogTG9naXRlY2gg
SzQwMCBhcyAvZGV2aWNlcy9wY2kwMDAwOjQwLzAwMDA6NDA6MDMuMy8wMDAwOjQ0OjAwLjAvMDAw
MDo0NTowYy4wLzAwMDA6NDk6MDAuMC91c2I3LzctOC83LTguMi83LTguMjoxLjIvMDAwMzowNDZE
OkM1MkIuMDAwOC8wMDAzOjA0NkQ6NDAyNC4wMDBFL2lucHV0L2lucHV0MjYKWyAgIDE0LjEwMjI1
NF0gbG9naXRlY2gtaGlkcHAtZGV2aWNlIDAwMDM6MDQ2RDo0MDI0LjAwMEU6IGlucHV0LGhpZHJh
dzc6IFVTQiBISUQgdjEuMTEgS2V5Ym9hcmQgW0xvZ2l0ZWNoIEs0MDBdIG9uIHVzYi0wMDAwOjQ5
OjAwLjAtOC4yL2lucHV0MjoyClsgICAxNC4zNDY0OTddIEJ0cmZzIGxvYWRlZCwgY3JjMzJjPWNy
YzMyYy1pbnRlbCwgem9uZWQ9eWVzLCBmc3Zlcml0eT15ZXMKWyAgIDE1LjExMzY3M10gQlRSRlM6
IGRldmljZSBsYWJlbCBCdXR0ZXJSb290IGRldmlkIDIgdHJhbnNpZCAxNTcgL2Rldi9tYXBwZXIv
dGVzdG9zLXBvbGx1eFJvb3QyIHNjYW5uZWQgYnkgYnRyZnMgKDc0OCkKWyAgIDE1LjEyNTgyOV0g
QlRSRlM6IGRldmljZSBsYWJlbCBCdXR0ZXJSb290IGRldmlkIDEgdHJhbnNpZCAxNTcgL2Rldi9t
YXBwZXIvdGVzdG9zLXBvbGx1eFJvb3Qgc2Nhbm5lZCBieSBidHJmcyAoNzQ4KQpbICAgMTUuMTM3
ODA0XSBCVFJGUzogZGV2aWNlIGxhYmVsIEJ1dHRlckJhbGwgZGV2aWQgMSB0cmFuc2lkIDc0NTQx
MDIgL2Rldi9zZGIxIHNjYW5uZWQgYnkgYnRyZnMgKDc0OCkKWyAgIDE1LjE0ODA2MV0gQlRSRlM6
IGRldmljZSBsYWJlbCBMb3dTZWMgZGV2aWQgMiB0cmFuc2lkIDExOTk3IC9kZXYvbWFwcGVyL3Rl
c3Rvcy1maW5hbmNlMiBzY2FubmVkIGJ5IGJ0cmZzICg3NDgpClsgICAxNS4xNTk0MzFdIEJUUkZT
OiBkZXZpY2UgbGFiZWwgTG93U2VjIGRldmlkIDEgdHJhbnNpZCAxMTk5NyAvZGV2L21hcHBlci90
ZXN0b3MtZmluYW5jZSBzY2FubmVkIGJ5IGJ0cmZzICg3NDgpClsgICAxNS4xNzEwODZdIEJUUkZT
OiBkZXZpY2UgbGFiZWwgSGVwdE1pZ2YgZGV2aWQgMSB0cmFuc2lkIDIyNzc2NiAvZGV2L3NkZjMg
c2Nhbm5lZCBieSBidHJmcyAoNzQ4KQpbICAgMTUuMTgwOTcwXSBCVFJGUzogZGV2aWNlIGxhYmVs
IHRlc3Rvc1Jvb3QgZGV2aWQgMSB0cmFuc2lkIDEzMDAgL2Rldi9tYXBwZXIvdGVzdG9zLXRlc3Rv
c1Jvb3Qgc2Nhbm5lZCBieSBidHJmcyAoNzQ4KQpbICAgMTUuMTkzMjg5XSBCVFJGUzogZGV2aWNl
IGxhYmVsIHRlc3Rvc1Jvb3QgZGV2aWQgMiB0cmFuc2lkIDEzMDAgL2Rldi9tYXBwZXIvdGVzdG9z
LXRlc3Rvc1Jvb3QyIHNjYW5uZWQgYnkgYnRyZnMgKDc0OCkKWyAgIDE1LjI1MzU1M10gQlRSRlMg
aW5mbyAoZGV2aWNlIGRtLTApOiBmaXJzdCBtb3VudCBvZiBmaWxlc3lzdGVtIDkyMmIxMGYyLWE4
MjYtNDdmYi1hYjM4LTgzNmY5YjM5N2ZmNwpbICAgMTUuMjY0MjY1XSBCVFJGUyBpbmZvIChkZXZp
Y2UgZG0tMCk6IHVzaW5nIGNyYzMyYyAoY3JjMzJjLWludGVsKSBjaGVja3N1bSBhbGdvcml0aG0K
WyAgIDE1LjI3MzMyM10gQlRSRlMgaW5mbyAoZGV2aWNlIGRtLTApOiB1c2luZyBmcmVlIHNwYWNl
IHRyZWUKWyAgIDE1LjI4MjUzN10gQlRSRlMgaW5mbyAoZGV2aWNlIGRtLTApOiBlbmFibGluZyBz
c2Qgb3B0aW1pemF0aW9ucwpbICAgMTUuMzIwMzI0XSBOb3QgYWN0aXZhdGluZyBNYW5kYXRvcnkg
QWNjZXNzIENvbnRyb2wgYXMgL3NiaW4vdG9tb3lvLWluaXQgZG9lcyBub3QgZXhpc3QuClsgICAx
NS4zNjEyMjBdIHN5c3RlbWRbMV06IEluc2VydGVkIG1vZHVsZSAnYXV0b2ZzNCcKWyAgIDE1LjM4
MTMwMl0gc3lzdGVtZFsxXTogc3lzdGVtZCAyNTIuMTktMX5kZWIxMnUxIHJ1bm5pbmcgaW4gc3lz
dGVtIG1vZGUgKCtQQU0gK0FVRElUICtTRUxJTlVYICtBUFBBUk1PUiArSU1BICtTTUFDSyArU0VD
Q09NUCArR0NSWVBUIC1HTlVUTFMgK09QRU5TU0wgK0FDTCArQkxLSUQgK0NVUkwgK0VMRlVUSUxT
ICtGSURPMiArSUROMiAtSUROICtJUFRDICtLTU9EICtMSUJDUllQVFNFVFVQICtMSUJGRElTSyAr
UENSRTIgLVBXUVVBTElUWSArUDExS0lUICtRUkVOQ09ERSArVFBNMiArQlpJUDIgK0xaNCArWFog
K1pMSUIgK1pTVEQgLUJQRl9GUkFNRVdPUksgLVhLQkNPTU1PTiArVVRNUCArU1lTVklOSVQgZGVm
YXVsdC1oaWVyYXJjaHk9dW5pZmllZCkKWyAgIDE1LjQxODc1MF0gc3lzdGVtZFsxXTogRGV0ZWN0
ZWQgdmlydHVhbGl6YXRpb24geGVuLgpbICAgMTUuNDI0NTc5XSBzeXN0ZW1kWzFdOiBEZXRlY3Rl
ZCBhcmNoaXRlY3R1cmUgeDg2LTY0LgpbICAgMTUuNDM3MTQwXSBzeXN0ZW1kWzFdOiBIb3N0bmFt
ZSBzZXQgdG8gPHRlc3Rvcz4uClsgICAxNS41MTQyODBdIHN5c3RlbWRbMV06IFF1ZXVlZCBzdGFy
dCBqb2IgZm9yIGRlZmF1bHQgdGFyZ2V0IGdyYXBoaWNhbC50YXJnZXQuClsgICAxNS41NDY0MzJd
IHN5c3RlbWRbMV06IENyZWF0ZWQgc2xpY2Ugc3lzdGVtLWdldHR5LnNsaWNlIC0gU2xpY2UgL3N5
c3RlbS9nZXR0eS4KWyAgIDE1LjU2NDE1OF0gc3lzdGVtZFsxXTogQ3JlYXRlZCBzbGljZSBzeXN0
ZW0tbW9kcHJvYmUuc2xpY2UgLSBTbGljZSAvc3lzdGVtL21vZHByb2JlLgpbICAgMTUuNTgzMjIx
XSBzeXN0ZW1kWzFdOiBDcmVhdGVkIHNsaWNlIHN5c3RlbS1zZXJpYWxceDJkZ2V0dHkuc2xpY2Ug
LSBTbGljZSAvc3lzdGVtL3NlcmlhbC1nZXR0eS4KWyAgIDE1LjYwMzE1OV0gc3lzdGVtZFsxXTog
Q3JlYXRlZCBzbGljZSBzeXN0ZW0tc3lzdGVtZFx4MmRmc2NrLnNsaWNlIC0gU2xpY2UgL3N5c3Rl
bS9zeXN0ZW1kLWZzY2suClsgICAxNS42MjMxMDddIHN5c3RlbWRbMV06IENyZWF0ZWQgc2xpY2Ug
dXNlci5zbGljZSAtIFVzZXIgYW5kIFNlc3Npb24gU2xpY2UuClsgICAxNS42NDAxMTldIHN5c3Rl
bWRbMV06IFN0YXJ0ZWQgc3lzdGVtZC1hc2stcGFzc3dvcmQtY29uc29sZS5wYXRoIC0gRGlzcGF0
Y2ggUGFzc3dvcmQgUmVxdWVzdHMgdG8gQ29uc29sZSBEaXJlY3RvcnkgV2F0Y2guClsgICAxNS42
NjI3MTJdIHN5c3RlbWRbMV06IFN0YXJ0ZWQgc3lzdGVtZC1hc2stcGFzc3dvcmQtd2FsbC5wYXRo
IC0gRm9yd2FyZCBQYXNzd29yZCBSZXF1ZXN0cyB0byBXYWxsIERpcmVjdG9yeSBXYXRjaC4KWyAg
IDE1LjY4NDY0M10gc3lzdGVtZFsxXTogU2V0IHVwIGF1dG9tb3VudCBwcm9jLXN5cy1mcy1iaW5m
bXRfbWlzYy5hdXRvbW91bnQgLSBBcmJpdHJhcnkgRXhlY3V0YWJsZSBGaWxlIEZvcm1hdHMgRmls
ZSBTeXN0ZW0gQXV0b21vdW50IFBvaW50LgpbICAgMTUuNzA4OTYzXSBzeXN0ZW1kWzFdOiBSZWFj
aGVkIHRhcmdldCBjcnlwdHNldHVwLnRhcmdldCAtIExvY2FsIEVuY3J5cHRlZCBWb2x1bWVzLgpb
ICAgMTUuNzI3NzY0XSBzeXN0ZW1kWzFdOiBSZWFjaGVkIHRhcmdldCBpbnRlZ3JpdHlzZXR1cC50
YXJnZXQgLSBMb2NhbCBJbnRlZ3JpdHkgUHJvdGVjdGVkIFZvbHVtZXMuClsgICAxNS43NDc4OTdd
IHN5c3RlbWRbMV06IFJlYWNoZWQgdGFyZ2V0IHBhdGhzLnRhcmdldCAtIFBhdGggVW5pdHMuClsg
ICAxNS43NjI3ODhdIHN5c3RlbWRbMV06IFJlYWNoZWQgdGFyZ2V0IHJlbW90ZS1mcy50YXJnZXQg
LSBSZW1vdGUgRmlsZSBTeXN0ZW1zLgpbICAgMTUuNzgwODI1XSBzeXN0ZW1kWzFdOiBSZWFjaGVk
IHRhcmdldCBzbGljZXMudGFyZ2V0IC0gU2xpY2UgVW5pdHMuClsgICAxNS43OTU4NjFdIHN5c3Rl
bWRbMV06IFJlYWNoZWQgdGFyZ2V0IHN3YXAudGFyZ2V0IC0gU3dhcHMuClsgICAxNS44MDk2OTJd
IHN5c3RlbWRbMV06IFJlYWNoZWQgdGFyZ2V0IHZlcml0eXNldHVwLnRhcmdldCAtIExvY2FsIFZl
cml0eSBQcm90ZWN0ZWQgVm9sdW1lcy4KWyAgIDE1LjgyOTQ3MF0gc3lzdGVtZFsxXTogTGlzdGVu
aW5nIG9uIGRtLWV2ZW50LnNvY2tldCAtIERldmljZS1tYXBwZXIgZXZlbnQgZGFlbW9uIEZJRk9z
LgpbICAgMTUuODQ4NjQ5XSBzeXN0ZW1kWzFdOiBMaXN0ZW5pbmcgb24gbHZtMi1sdm1wb2xsZC5z
b2NrZXQgLSBMVk0yIHBvbGwgZGFlbW9uIHNvY2tldC4KWyAgIDE1Ljg2NzU4N10gc3lzdGVtZFsx
XTogTGlzdGVuaW5nIG9uIHN5c3RlbWQtZnNja2Quc29ja2V0IC0gZnNjayB0byBmc2NrZCBjb21t
dW5pY2F0aW9uIFNvY2tldC4KWyAgIDE1Ljg4Nzg1M10gc3lzdGVtZFsxXTogTGlzdGVuaW5nIG9u
IHN5c3RlbWQtaW5pdGN0bC5zb2NrZXQgLSBpbml0Y3RsIENvbXBhdGliaWxpdHkgTmFtZWQgUGlw
ZS4KWyAgIDE1LjkwODAzMl0gc3lzdGVtZFsxXTogTGlzdGVuaW5nIG9uIHN5c3RlbWQtam91cm5h
bGQtYXVkaXQuc29ja2V0IC0gSm91cm5hbCBBdWRpdCBTb2NrZXQuClsgICAxNS45Mjc0OTFdIHN5
c3RlbWRbMV06IExpc3RlbmluZyBvbiBzeXN0ZW1kLWpvdXJuYWxkLWRldi1sb2cuc29ja2V0IC0g
Sm91cm5hbCBTb2NrZXQgKC9kZXYvbG9nKS4KWyAgIDE1Ljk0NzYxMl0gc3lzdGVtZFsxXTogTGlz
dGVuaW5nIG9uIHN5c3RlbWQtam91cm5hbGQuc29ja2V0IC0gSm91cm5hbCBTb2NrZXQuClsgICAx
NS45NjUyMjJdIHN5c3RlbWRbMV06IExpc3RlbmluZyBvbiBzeXN0ZW1kLXVkZXZkLWNvbnRyb2wu
c29ja2V0IC0gdWRldiBDb250cm9sIFNvY2tldC4KWyAgIDE1Ljk4NDI5Ml0gc3lzdGVtZFsxXTog
TGlzdGVuaW5nIG9uIHN5c3RlbWQtdWRldmQta2VybmVsLnNvY2tldCAtIHVkZXYgS2VybmVsIFNv
Y2tldC4KWyAgIDE2LjAyMTU1M10gc3lzdGVtZFsxXTogTW91bnRpbmcgZGV2LWh1Z2VwYWdlcy5t
b3VudCAtIEh1Z2UgUGFnZXMgRmlsZSBTeXN0ZW0uLi4KWyAgIDE2LjAzODkxMF0gc3lzdGVtZFsx
XTogTW91bnRpbmcgZGV2LW1xdWV1ZS5tb3VudCAtIFBPU0lYIE1lc3NhZ2UgUXVldWUgRmlsZSBT
eXN0ZW0uLi4KWyAgIDE2LjA1NzEwNV0gc3lzdGVtZFsxXTogTW91bnRpbmcgc3lzLWtlcm5lbC1k
ZWJ1Zy5tb3VudCAtIEtlcm5lbCBEZWJ1ZyBGaWxlIFN5c3RlbS4uLgpbICAgMTYuMDc1MDA5XSBz
eXN0ZW1kWzFdOiBNb3VudGluZyBzeXMta2VybmVsLXRyYWNpbmcubW91bnQgLSBLZXJuZWwgVHJh
Y2UgRmlsZSBTeXN0ZW0uLi4KWyAgIDE2LjA5MjQ4Ml0gc3lzdGVtZFsxXTogRmluaXNoZWQgYmxr
LWF2YWlsYWJpbGl0eS5zZXJ2aWNlIC0gQXZhaWxhYmlsaXR5IG9mIGJsb2NrIGRldmljZXMuClsg
ICAxNi4xMTIyODBdIHN5c3RlbWRbMV06IFN0YXJ0aW5nIGtleWJvYXJkLXNldHVwLnNlcnZpY2Ug
LSBTZXQgdGhlIGNvbnNvbGUga2V5Ym9hcmQgbGF5b3V0Li4uClsgICAxNi4xMzEwNTddIHN5c3Rl
bWRbMV06IFN0YXJ0aW5nIGttb2Qtc3RhdGljLW5vZGVzLnNlcnZpY2UgLSBDcmVhdGUgTGlzdCBv
ZiBTdGF0aWMgRGV2aWNlIE5vZGVzLi4uClsgICAxNi4xNTA0NjldIHN5c3RlbWRbMV06IFN0YXJ0
aW5nIGx2bTItbW9uaXRvci5zZXJ2aWNlIC0gTW9uaXRvcmluZyBvZiBMVk0yIG1pcnJvcnMsIHNu
YXBzaG90cyBldGMuIHVzaW5nIGRtZXZlbnRkIG9yIHByb2dyZXNzIHBvbGxpbmcuLi4KWyAgIDE2
LjE3Mzc1M10gc3lzdGVtZFsxXTogU3RhcnRpbmcgbW9kcHJvYmVAY29uZmlnZnMuc2VydmljZSAt
IExvYWQgS2VybmVsIE1vZHVsZSBjb25maWdmcy4uLgpbICAgMTYuMTkyMjgxXSBzeXN0ZW1kWzFd
OiBTdGFydGluZyBtb2Rwcm9iZUBkbV9tb2Quc2VydmljZSAtIExvYWQgS2VybmVsIE1vZHVsZSBk
bV9tb2QuLi4KWyAgIDE2LjIxMDY0MF0gc3lzdGVtZFsxXTogU3RhcnRpbmcgbW9kcHJvYmVAZHJt
LnNlcnZpY2UgLSBMb2FkIEtlcm5lbCBNb2R1bGUgZHJtLi4uClsgICAxNi4yMjc5ODVdIHN5c3Rl
bWRbMV06IFN0YXJ0aW5nIG1vZHByb2JlQGVmaV9wc3RvcmUuc2VydmljZSAtIExvYWQgS2VybmVs
IE1vZHVsZSBlZmlfcHN0b3JlLi4uClsgICAxNi4yNDY5ODFdIHN5c3RlbWRbMV06IFN0YXJ0aW5n
IG1vZHByb2JlQGZ1c2Uuc2VydmljZSAtIExvYWQgS2VybmVsIE1vZHVsZSBmdXNlLi4uClsgICAx
Ni4yNjQ4NTldIHN5c3RlbWRbMV06IFN0YXJ0aW5nIG1vZHByb2JlQGxvb3Auc2VydmljZSAtIExv
YWQgS2VybmVsIE1vZHVsZSBsb29wLi4uClsgICAxNi4yODc2MjNdIHBzdG9yZTogVXNpbmcgY3Jh
c2ggZHVtcCBjb21wcmVzc2lvbjogZGVmbGF0ZQpbICAgMTYuMjg3NzkyXSBBQ1BJOiBidXMgdHlw
ZSBkcm1fY29ubmVjdG9yIHJlZ2lzdGVyZWQKWyAgIDE2LjI5NTE1OF0gcHN0b3JlOiBSZWdpc3Rl
cmVkIGVmaSBhcyBwZXJzaXN0ZW50IHN0b3JlIGJhY2tlbmQKWyAgIDE2LjMwOTI2NV0gbG9vcDog
bW9kdWxlIGxvYWRlZApbICAgMTYuMzE5MTM1XSBmdXNlOiBpbml0IChBUEkgdmVyc2lvbiA3LjM3
KQpbICAgMTYuMzE5NjAzXSBzeXN0ZW1kWzFdOiBTdGFydGluZyBzeXN0ZW1kLWpvdXJuYWxkLnNl
cnZpY2UgLSBKb3VybmFsIFNlcnZpY2UuLi4KWyAgIDE2LjM0MTIyNV0gc3lzdGVtZFsxXTogU3Rh
cnRpbmcgc3lzdGVtZC1tb2R1bGVzLWxvYWQuc2VydmljZSAtIExvYWQgS2VybmVsIE1vZHVsZXMu
Li4KWyAgIDE2LjM1OTU4M10gc3lzdGVtZFsxXTogU3RhcnRpbmcgc3lzdGVtZC1yZW1vdW50LWZz
LnNlcnZpY2UgLSBSZW1vdW50IFJvb3QgYW5kIEtlcm5lbCBGaWxlIFN5c3RlbXMuLi4KWyAgIDE2
LjM3OTUxMl0gc3lzdGVtZFsxXTogU3RhcnRpbmcgc3lzdGVtZC11ZGV2LXRyaWdnZXIuc2Vydmlj
ZSAtIENvbGRwbHVnIEFsbCB1ZGV2IERldmljZXMuLi4KWyAgIDE2LjM5ODg0MV0gc3lzdGVtZFsx
XTogU3RhcnRlZCBzeXN0ZW1kLWpvdXJuYWxkLnNlcnZpY2UgLSBKb3VybmFsIFNlcnZpY2UuClsg
ICAxNi42MjEzMzNdIHN5c3RlbWQtam91cm5hbGRbODM3XTogUmVjZWl2ZWQgY2xpZW50IHJlcXVl
c3QgdG8gZmx1c2ggcnVudGltZSBqb3VybmFsLgpbICAgMTYuODUyNzE4XSBCVFJGUyBpbmZvOiBk
ZXZpZCAyIGRldmljZSBwYXRoIC9kZXYvbWFwcGVyL3Rlc3Rvcy10ZXN0b3NSb290MiBjaGFuZ2Vk
IHRvIC9kZXYvZG0tMSBzY2FubmVkIGJ5ICh1ZGV2LXdvcmtlcikgKDg3NykKWyAgIDE2Ljg2OTcz
N10gQlRSRlMgaW5mbzogZGV2aWQgMSBkZXZpY2UgcGF0aCAvZGV2L21hcHBlci90ZXN0b3MtdGVz
dG9zUm9vdCBjaGFuZ2VkIHRvIC9kZXYvZG0tMCBzY2FubmVkIGJ5ICh1ZGV2LXdvcmtlcikgKDg3
OSkKWyAgIDE2Ljg4NzM4M10gQlRSRlMgaW5mbzogZGV2aWQgMSBkZXZpY2UgcGF0aCAvZGV2L2Rt
LTAgY2hhbmdlZCB0byAvZGV2L21hcHBlci90ZXN0b3MtdGVzdG9zUm9vdCBzY2FubmVkIGJ5ICh1
ZGV2LXdvcmtlcikgKDg3OSkKWyAgIDE2LjkwMDc2Ml0gQlRSRlMgaW5mbzogZGV2aWQgMiBkZXZp
Y2UgcGF0aCAvZGV2L2RtLTEgY2hhbmdlZCB0byAvZGV2L21hcHBlci90ZXN0b3MtdGVzdG9zUm9v
dDIgc2Nhbm5lZCBieSAodWRldi13b3JrZXIpICg4NzcpClsgICAxNi45MzQ4MTldIGlucHV0OiBQ
b3dlciBCdXR0b24gYXMgL2RldmljZXMvTE5YU1lTVE06MDAvTE5YU1lCVVM6MDAvUE5QMEMwQzow
MC9pbnB1dC9pbnB1dDI3ClsgICAxNi45NDQ3NDVdIEFDUEk6IGJ1dHRvbjogUG93ZXIgQnV0dG9u
IFtQV1JCXQpbICAgMTYuOTQ0NzgxXSBpbnB1dDogUG93ZXIgQnV0dG9uIGFzIC9kZXZpY2VzL0xO
WFNZU1RNOjAwL0xOWFBXUkJOOjAwL2lucHV0L2lucHV0MjgKWyAgIDE2Ljk2NjU2OF0gQUNQSTog
YnV0dG9uOiBQb3dlciBCdXR0b24gW1BXUkZdClsgICAxNi45ODkyMzBdIHNkIDA6MDowOjA6IEF0
dGFjaGVkIHNjc2kgZ2VuZXJpYyBzZzAgdHlwZSAwClsgICAxNy4wMDQ2NzFdIHNkIDE6MDowOjA6
IEF0dGFjaGVkIHNjc2kgZ2VuZXJpYyBzZzEgdHlwZSAwClsgICAxNy4wMjA1MzZdIHNkIDI6MDow
OjA6IEF0dGFjaGVkIHNjc2kgZ2VuZXJpYyBzZzIgdHlwZSAwClsgICAxNy4wMzIzMDldIHNkIDM6
MDowOjA6IEF0dGFjaGVkIHNjc2kgZ2VuZXJpYyBzZzMgdHlwZSAwClsgICAxNy4wNTI1MzFdIHNk
IDc6MDowOjA6IEF0dGFjaGVkIHNjc2kgZ2VuZXJpYyBzZzQgdHlwZSAwClsgICAxNy4wNjM1MzBd
IHNkIDY6MDowOjA6IEF0dGFjaGVkIHNjc2kgZ2VuZXJpYyBzZzUgdHlwZSAwClsgICAxNy4wNjk2
NDhdIHNlcyA2OjA6MDoxOiBBdHRhY2hlZCBzY3NpIGdlbmVyaWMgc2c2IHR5cGUgMTMKWyAgIDE3
LjA3NTg5MV0gc2QgODowOjA6MDogQXR0YWNoZWQgc2NzaSBnZW5lcmljIHNnNyB0eXBlIDAKWyAg
IDE3LjEzMDA5OV0gY2NwIDAwMDA6MDY6MDAuNTogZW5hYmxpbmcgZGV2aWNlICgwMDAwIC0+IDAw
MDIpClsgICAxNy4xMzcwMjVdIGNjcCAwMDAwOjA2OjAwLjU6IEJBUiAyOiBjYW4ndCByZXNlcnZl
IFttZW0gMHhmMGIwMDAwMC0weGYwYmZmZmZmXQpbICAgMTcuMTQ1MjEwXSBjY3AgMDAwMDowNjow
MC41OiBwY2ltX2lvbWFwX3JlZ2lvbnMgZmFpbGVkICgtMTYpClsgICAxNy4xNTE4NjhdIGNjcCAw
MDAwOjA2OjAwLjU6IGluaXRpYWxpemF0aW9uIGZhaWxlZApbICAgMTcuMTU3NjE1XSBjY3A6IHBy
b2JlIG9mIDAwMDA6MDY6MDAuNSBmYWlsZWQgd2l0aCBlcnJvciAtMTYKWyAgIDE3LjIxNjI1M10g
Y3J5cHRkOiBtYXhfY3B1X3FsZW4gc2V0IHRvIDEwMDAKWyAgIDE3LjIyMzA2NV0gaW5wdXQ6IFBD
IFNwZWFrZXIgYXMgL2RldmljZXMvcGxhdGZvcm0vcGNzcGtyL2lucHV0L2lucHV0MjkKWyAgIDE3
LjIzNjIyMF0gc3A1MTAwX3RjbzogU1A1MTAwL1NCODAwIFRDTyBXYXRjaERvZyBUaW1lciBEcml2
ZXIKWyAgIDE3LjI0MjgzNV0gc3A1MTAwLXRjbyBzcDUxMDAtdGNvOiBVc2luZyAweGZlYjAwMDAw
IGZvciB3YXRjaGRvZyBNTUlPIGFkZHJlc3MKWyAgIDE3LjI1MDg5OF0gc3A1MTAwLXRjbyBzcDUx
MDAtdGNvOiBXYXRjaGRvZyBoYXJkd2FyZSBpcyBkaXNhYmxlZApbICAgMTcuMjYwNDkzXSBtYzog
TGludXggbWVkaWEgaW50ZXJmYWNlOiB2MC4xMApbICAgMTcuNTA1MDMyXSBjZmc4MDIxMTogTG9h
ZGluZyBjb21waWxlZC1pbiBYLjUwOSBjZXJ0aWZpY2F0ZXMgZm9yIHJlZ3VsYXRvcnkgZGF0YWJh
c2UKWyAgIDE3LjUxMzkyNV0gY2ZnODAyMTE6IExvYWRlZCBYLjUwOSBjZXJ0ICdiZW5oQGRlYmlh
bi5vcmc6IDU3N2UwMjFjYjk4MGUwZTgyMDgyMWJhN2I1NGI0OTYxYjhiNGZhZGYnClsgICAxNy41
MjQ1OTNdIGNmZzgwMjExOiBMb2FkZWQgWC41MDkgY2VydCAncm9tYWluLnBlcmllckBnbWFpbC5j
b206IDNhYmJjNmVjMTQ2ZTA5ZDFiNjAxNmFiOWQ2Y2Y3MWRkMjMzZjAzMjgnClsgICAxNy41MzU4
MTJdIGNmZzgwMjExOiBMb2FkZWQgWC41MDkgY2VydCAnc2ZvcnNoZWU6IDAwYjI4ZGRmNDdhZWY5
Y2VhNycKWyAgIDE3LjU0MzkyNV0gcGxhdGZvcm0gcmVndWxhdG9yeS4wOiBmaXJtd2FyZTogZGly
ZWN0LWxvYWRpbmcgZmlybXdhcmUgcmVndWxhdG9yeS5kYgpbICAgMTcuNTUyNDQwXSBwbGF0Zm9y
bSByZWd1bGF0b3J5LjA6IGZpcm13YXJlOiBkaXJlY3QtbG9hZGluZyBmaXJtd2FyZSByZWd1bGF0
b3J5LmRiLnA3cwpbICAgMTcuNTY0OTQ4XSBhbGc6IE5vIHRlc3QgZm9yIGZpcHMoYW5zaV9jcHJu
ZykgKGZpcHNfYW5zaV9jcHJuZykKWyAgIDE3LjY4OTA1N10gQVZYMiB2ZXJzaW9uIG9mIGdjbV9l
bmMvZGVjIGVuZ2FnZWQuClsgICAxNy42OTY5MTldIHZpZGVvZGV2OiBMaW51eCB2aWRlbyBjYXB0
dXJlIGludGVyZmFjZTogdjIuMDAKWyAgIDE3LjcwMzQxN10gQUVTIENUUiBtb2RlIGJ5OCBvcHRp
bWl6YXRpb24gZW5hYmxlZApbICAgMTcuNzEzNzc5XSBFWFQ0LWZzIChudm1lMW4xcDMpOiBtb3Vu
dGVkIGZpbGVzeXN0ZW0gd2l0aCBvcmRlcmVkIGRhdGEgbW9kZS4gUXVvdGEgbW9kZTogbm9uZS4K
WyAgIDE3Ljk5MzUzMl0gc25kX2hkYV9pbnRlbCAwMDAwOjAxOjAwLjE6IGVuYWJsaW5nIGRldmlj
ZSAoMDAwMCAtPiAwMDAyKQpbICAgMTguMDAxMjA3XSBzbmRfaGRhX2ludGVsIDAwMDA6MDE6MDAu
MTogRm9yY2UgdG8gbm9uLXNub29wIG1vZGUKWyAgIDE4LjAwNzk5N10gc25kX2hkYV9pbnRlbCAw
MDAwOjAxOjAwLjE6IEJBUiAwOiBjYW4ndCByZXNlcnZlIFttZW0gMHhmMGY2MDAwMC0weGYwZjYz
ZmZmIDY0Yml0XQpbICAgMTguMDE4MDUzXSBzbmRfaGRhX2ludGVsIDAwMDA6MDY6MDAuNzogZW5h
YmxpbmcgZGV2aWNlICgwMDAwIC0+IDAwMDIpClsgICAxOC4wMjU3MjNdIHNuZF9oZGFfaW50ZWwg
MDAwMDowNjowMC43OiBCQVIgMDogY2FuJ3QgcmVzZXJ2ZSBbbWVtIDB4ZjBkMDAwMDAtMHhmMGQw
N2ZmZl0KWyAgIDE4LjAzMzY3OV0gc25kX2hkYV9pbnRlbCAwMDAwOjQxOjAwLjE6IGVuYWJsaW5n
IGRldmljZSAoMDAwMCAtPiAwMDAyKQpbICAgMTguMDQzMTY1XSBzbmRfaGRhX2ludGVsIDAwMDA6
NDE6MDAuMTogRm9yY2UgdG8gbm9uLXNub29wIG1vZGUKWyAgIDE4LjA1NTI4Nl0gQlRSRlMgaW5m
bzogZGV2aWQgMSBkZXZpY2UgcGF0aCAvZGV2L21hcHBlci90ZXN0b3MtdGVzdG9zUm9vdCBjaGFu
Z2VkIHRvIC9kZXYvZG0tMCBzY2FubmVkIGJ5ICh1ZGV2LXdvcmtlcikgKDg2OSkKWyAgIDE4LjA2
ODcyMV0gQlRSRlMgaW5mbzogZGV2aWQgMiBkZXZpY2UgcGF0aCAvZGV2L21hcHBlci90ZXN0b3Mt
dGVzdG9zUm9vdDIgY2hhbmdlZCB0byAvZGV2L2RtLTEgc2Nhbm5lZCBieSAodWRldi13b3JrZXIp
ICg4NzApClsgICAxOC4wODI1NjBdIEJUUkZTIGluZm86IGRldmlkIDEgZGV2aWNlIHBhdGggL2Rl
di9kbS0wIGNoYW5nZWQgdG8gL2Rldi9tYXBwZXIvdGVzdG9zLXRlc3Rvc1Jvb3Qgc2Nhbm5lZCBi
eSAodWRldi13b3JrZXIpICg4NjkpClsgICAxOC4wOTYwNzVdIEJUUkZTIGluZm86IGRldmlkIDIg
ZGV2aWNlIHBhdGggL2Rldi9kbS0xIGNoYW5nZWQgdG8gL2Rldi9tYXBwZXIvdGVzdG9zLXRlc3Rv
c1Jvb3QyIHNjYW5uZWQgYnkgKHVkZXYtd29ya2VyKSAoODcwKQpbICAgMTguMTIwNTY0XSBpbnB1
dDogSERBIEFUSSBIRE1JIEhETUkvRFAscGNtPTMgYXMgL2RldmljZXMvcGNpMDAwMDo0MC8wMDAw
OjQwOjAxLjEvMDAwMDo0MTowMC4xL3NvdW5kL2NhcmQzL2lucHV0MzAKWyAgIDE4LjE0MTI2Ml0g
aW5wdXQ6IEhEQSBBVEkgSERNSSBIRE1JL0RQLHBjbT03IGFzIC9kZXZpY2VzL3BjaTAwMDA6NDAv
MDAwMDo0MDowMS4xLzAwMDA6NDE6MDAuMS9zb3VuZC9jYXJkMy9pbnB1dDMxClsgICAxOC4xNDI4
OTFdIGF1ZGl0OiB0eXBlPTE0MDAgYXVkaXQoMTcwNTY0NjMzNi43Mzk6Mik6IGFwcGFybW9yPSJT
VEFUVVMiIG9wZXJhdGlvbj0icHJvZmlsZV9sb2FkIiBwcm9maWxlPSJ1bmNvbmZpbmVkIiBuYW1l
PSJsc2JfcmVsZWFzZSIgcGlkPTExOTkgY29tbT0iYXBwYXJtb3JfcGFyc2VyIgpbICAgMTguMTYx
NDgyXSB1c2Jjb3JlOiByZWdpc3RlcmVkIG5ldyBpbnRlcmZhY2UgZHJpdmVyIHNuZC11c2ItYXVk
aW8KWyAgIDE4LjE2MjE2NV0gdXNiIDctNy4zOiBGb3VuZCBVVkMgMS4wMCBkZXZpY2UgTWljcm9z
b2Z0wq4gTGlmZUNhbSBDaW5lbWEoVE0pICgwNDVlOjA3NWQpClsgICAxOC4xNjgzMjddIGlucHV0
OiBNaWNyb3NvZnTCriBMaWZlQ2FtIENpbmVtYShUTSk6IGFzIC9kZXZpY2VzL3BjaTAwMDA6NDAv
MDAwMDo0MDowMy4zLzAwMDA6NDQ6MDAuMC8wMDAwOjQ1OjBjLjAvMDAwMDo0OTowMC4wL3VzYjcv
Ny03LzctNy4zLzctNy4zOjEuMC9pbnB1dC9pbnB1dDMyClsgICAxOC4xNjg0MjNdIHVzYmNvcmU6
IHJlZ2lzdGVyZWQgbmV3IGludGVyZmFjZSBkcml2ZXIgdXZjdmlkZW8KWyAgIDE4LjE3ODMwMF0g
YXVkaXQ6IHR5cGU9MTQwMCBhdWRpdCgxNzA1NjQ2MzM2LjczOTozKTogYXBwYXJtb3I9IlNUQVRV
UyIgb3BlcmF0aW9uPSJwcm9maWxlX2xvYWQiIHByb2ZpbGU9InVuY29uZmluZWQiIG5hbWU9Im52
aWRpYV9tb2Rwcm9iZSIgcGlkPTEyMDAgY29tbT0iYXBwYXJtb3JfcGFyc2VyIgpbICAgMTguMjM2
MzAzXSBhdWRpdDogdHlwZT0xNDAwIGF1ZGl0KDE3MDU2NDYzMzYuNzM5OjQpOiBhcHBhcm1vcj0i
U1RBVFVTIiBvcGVyYXRpb249InByb2ZpbGVfbG9hZCIgcHJvZmlsZT0idW5jb25maW5lZCIgbmFt
ZT0ibnZpZGlhX21vZHByb2JlLy9rbW9kIiBwaWQ9MTIwMCBjb21tPSJhcHBhcm1vcl9wYXJzZXIi
ClsgICAxOC4yMzYzMDVdIGF1ZGl0OiB0eXBlPTE0MDAgYXVkaXQoMTcwNTY0NjMzNi43Mzk6NSk6
IGFwcGFybW9yPSJTVEFUVVMiIG9wZXJhdGlvbj0icHJvZmlsZV9sb2FkIiBwcm9maWxlPSJ1bmNv
bmZpbmVkIiBuYW1lPSIvdXNyL2Jpbi9tYW4iIHBpZD0xMjAyIGNvbW09ImFwcGFybW9yX3BhcnNl
ciIKWyAgIDE4LjIzNjMwN10gYXVkaXQ6IHR5cGU9MTQwMCBhdWRpdCgxNzA1NjQ2MzM2LjczOTo2
KTogYXBwYXJtb3I9IlNUQVRVUyIgb3BlcmF0aW9uPSJwcm9maWxlX2xvYWQiIHByb2ZpbGU9InVu
Y29uZmluZWQiIG5hbWU9Im1hbl9maWx0ZXIiIHBpZD0xMjAyIGNvbW09ImFwcGFybW9yX3BhcnNl
ciIKWyAgIDE4LjIzNjMwOF0gYXVkaXQ6IHR5cGU9MTQwMCBhdWRpdCgxNzA1NjQ2MzM2LjczOTo3
KTogYXBwYXJtb3I9IlNUQVRVUyIgb3BlcmF0aW9uPSJwcm9maWxlX2xvYWQiIHByb2ZpbGU9InVu
Y29uZmluZWQiIG5hbWU9Im1hbl9ncm9mZiIgcGlkPTEyMDIgY29tbT0iYXBwYXJtb3JfcGFyc2Vy
IgpbICAgMTguMjM2MzA5XSBhdWRpdDogdHlwZT0xNDAwIGF1ZGl0KDE3MDU2NDYzMzYuNzQzOjgp
OiBhcHBhcm1vcj0iU1RBVFVTIiBvcGVyYXRpb249InByb2ZpbGVfbG9hZCIgcHJvZmlsZT0idW5j
b25maW5lZCIgbmFtZT0iL3Vzci9saWIvTmV0d29ya01hbmFnZXIvbm0tZGhjcC1jbGllbnQuYWN0
aW9uIiBwaWQ9MTIwMSBjb21tPSJhcHBhcm1vcl9wYXJzZXIiClsgICAxOC4yMzYzMTFdIGF1ZGl0
OiB0eXBlPTE0MDAgYXVkaXQoMTcwNTY0NjMzNi43NDM6OSk6IGFwcGFybW9yPSJTVEFUVVMiIG9w
ZXJhdGlvbj0icHJvZmlsZV9sb2FkIiBwcm9maWxlPSJ1bmNvbmZpbmVkIiBuYW1lPSIvdXNyL2xp
Yi9OZXR3b3JrTWFuYWdlci9ubS1kaGNwLWhlbHBlciIgcGlkPTEyMDEgY29tbT0iYXBwYXJtb3Jf
cGFyc2VyIgpbICAgMTguMjM2MzEyXSBhdWRpdDogdHlwZT0xNDAwIGF1ZGl0KDE3MDU2NDYzMzYu
NzQzOjEwKTogYXBwYXJtb3I9IlNUQVRVUyIgb3BlcmF0aW9uPSJwcm9maWxlX2xvYWQiIHByb2Zp
bGU9InVuY29uZmluZWQiIG5hbWU9Ii91c3IvbGliL2Nvbm5tYW4vc2NyaXB0cy9kaGNsaWVudC1z
Y3JpcHQiIHBpZD0xMjAxIGNvbW09ImFwcGFybW9yX3BhcnNlciIKWyAgIDE4LjIzNjMxM10gYXVk
aXQ6IHR5cGU9MTQwMCBhdWRpdCgxNzA1NjQ2MzM2Ljc0MzoxMSk6IGFwcGFybW9yPSJTVEFUVVMi
IG9wZXJhdGlvbj0icHJvZmlsZV9sb2FkIiBwcm9maWxlPSJ1bmNvbmZpbmVkIiBuYW1lPSIveyx1
c3IvfXNiaW4vZGhjbGllbnQiIHBpZD0xMjAxIGNvbW09ImFwcGFybW9yX3BhcnNlciIKWyAgIDE4
LjQ1MDg5M10gW2RybV0gcmFkZW9uIGtlcm5lbCBtb2Rlc2V0dGluZyBlbmFibGVkLgpbICAgMTgu
NDU2OTk0XSByYWRlb24gMDAwMDo0MTowMC4wOiBlbmFibGluZyBkZXZpY2UgKDAwMDAgLT4gMDAw
MykKWyAgIDE4LjQ3MzExNF0gW2RybV0gaW5pdGlhbGl6aW5nIGtlcm5lbCBtb2Rlc2V0dGluZyAo
T0xBTkQgMHgxMDAyOjB4NjYxMSAweDEwMjg6MHgxMDAxIDB4ODcpLgpbICAgMTguNDgyNDQ4XSBy
ODE2OSAwMDAwOjg2OjAwLjA6IGZpcm13YXJlOiBkaXJlY3QtbG9hZGluZyBmaXJtd2FyZSBydGxf
bmljL3J0bDgxNjhlLTMuZncKWyAgIDE4LjUwMTA4OV0gUlRMODIxMUUgR2lnYWJpdCBFdGhlcm5l
dCByODE2OS0wLTg2MDA6MDA6IGF0dGFjaGVkIFBIWSBkcml2ZXIgKG1paV9idXM6cGh5X2FkZHI9
cjgxNjktMC04NjAwOjAwLCBpcnE9TUFDKQpbICAgMTguNTMwNDI5XSBCbHVldG9vdGg6IENvcmUg
dmVyIDIuMjIKWyAgIDE4LjUzMDQyOV0gbXQ3OTIxZSAwMDAwOjQ2OjAwLjA6IGVuYWJsaW5nIGRl
dmljZSAoMDAwMCAtPiAwMDAyKQpbICAgMTguNTMwNDUzXSBORVQ6IFJlZ2lzdGVyZWQgUEZfQkxV
RVRPT1RIIHByb3RvY29sIGZhbWlseQpbICAgMTguNTQ3NTQ4XSBCbHVldG9vdGg6IEhDSSBkZXZp
Y2UgYW5kIGNvbm5lY3Rpb24gbWFuYWdlciBpbml0aWFsaXplZApbICAgMTguNTQ3NTUyXSBCbHVl
dG9vdGg6IEhDSSBzb2NrZXQgbGF5ZXIgaW5pdGlhbGl6ZWQKWyAgIDE4LjU0NzU1M10gQmx1ZXRv
b3RoOiBMMkNBUCBzb2NrZXQgbGF5ZXIgaW5pdGlhbGl6ZWQKWyAgIDE4LjU0NzU1Nl0gQmx1ZXRv
b3RoOiBTQ08gc29ja2V0IGxheWVyIGluaXRpYWxpemVkClsgICAxOC41NTM1MjZdIG10NzkyMWUg
MDAwMDo0NjowMC4wOiBBU0lDIHJldmlzaW9uOiA3OTIyMDAxMApbICAgMTguNjY5MzE1XSBtdDc5
MjFlIDAwMDA6NDY6MDAuMDogZmlybXdhcmU6IGRpcmVjdC1sb2FkaW5nIGZpcm13YXJlIG1lZGlh
dGVrL1dJRklfTVQ3OTIyX3BhdGNoX21jdV8xXzFfaGRyLmJpbgpbICAgMTguNjgxMDEyXSBtdDc5
MjFlIDAwMDA6NDY6MDAuMDogSFcvU1cgVmVyc2lvbjogMHg4YTEwOGExMCwgQnVpbGQgVGltZTog
MjAyMjEyMjcxMjMxNTRhCgpbICAgMTguNzA2ODg0XSBtdDc5MjFlIDAwMDA6NDY6MDAuMDogZmly
bXdhcmU6IGRpcmVjdC1sb2FkaW5nIGZpcm13YXJlIG1lZGlhdGVrL1dJRklfUkFNX0NPREVfTVQ3
OTIyXzEuYmluClsgICAxOC43MTc3MjVdIG10NzkyMWUgMDAwMDo0NjowMC4wOiBXTSBGaXJtd2Fy
ZSBWZXJzaW9uOiBfX19fMDAwMDAwLCBCdWlsZCBUaW1lOiAyMDIyMTIyNzEyMzI0MwpbICAgMTgu
NzI5ODY2XSBBVE9NIEJJT1M6IEM4NjkwMQpbICAgMTguNzMzMzY0XSBbZHJtXSBHUFUgbm90IHBv
c3RlZC4gcG9zdGluZyBub3cuLi4KWyAgIDE4Ljc0NTMxMl0gW2RybV0gQ2hhbmdpbmcgZGVmYXVs
dCBkaXNwY2xrIGZyb20gNDgwTWh6IHRvIDYwME1oegpbICAgMTguNzU3NTA3XSByYWRlb24gMDAw
MDo0MTowMC4wOiBWUkFNOiAxMDI0TSAweDAwMDAwMDAwMDAwMDAwMDAgLSAweDAwMDAwMDAwM0ZG
RkZGRkYgKDEwMjRNIHVzZWQpClsgICAxOC43Njc3NzZdIHJhZGVvbiAwMDAwOjQxOjAwLjA6IEdU
VDogMjA0OE0gMHgwMDAwMDAwMDQwMDAwMDAwIC0gMHgwMDAwMDAwMEJGRkZGRkZGClsgICAxOC43
Njc3ODddIFtkcm1dIERldGVjdGVkIFZSQU0gUkFNPTEwMjRNLCBCQVI9MTAyNE0KWyAgIDE4Ljc2
Nzc4OF0gW2RybV0gUkFNIHdpZHRoIDY0Yml0cyBERFIKWyAgIDE4Ljc2NzgxMV0gW2RybV0gcmFk
ZW9uOiAxMDI0TSBvZiBWUkFNIG1lbW9yeSByZWFkeQpbICAgMTguNzY3ODEyXSBbZHJtXSByYWRl
b246IDIwNDhNIG9mIEdUVCBtZW1vcnkgcmVhZHkuClsgICAxOC43Njc4MThdIFtkcm1dIExvYWRp
bmcgb2xhbmQgTWljcm9jb2RlClsgICAxOC43Njg1MTJdIHJhZGVvbiAwMDAwOjQxOjAwLjA6IGZp
cm13YXJlOiBkaXJlY3QtbG9hZGluZyBmaXJtd2FyZSByYWRlb24vb2xhbmRfcGZwLmJpbgpbICAg
MTguNzc0MjE0XSBtdDc5MjFlIDAwMDA6NDY6MDAuMDogZmlybXdhcmU6IGRpcmVjdC1sb2FkaW5n
IGZpcm13YXJlIG1lZGlhdGVrL1dJRklfUkFNX0NPREVfTVQ3OTIyXzEuYmluClsgICAxOC44MzMz
MjRdIHJhZGVvbiAwMDAwOjQxOjAwLjA6IGZpcm13YXJlOiBkaXJlY3QtbG9hZGluZyBmaXJtd2Fy
ZSByYWRlb24vb2xhbmRfbWUuYmluClsgICAxOC44MzU1NTldIHI4MTY5IDAwMDA6ODY6MDAuMCBl
bnAxMzRzMDogTGluayBpcyBEb3duClsgICAxOC44NDI5NTldIHJhZGVvbiAwMDAwOjQxOjAwLjA6
IGZpcm13YXJlOiBkaXJlY3QtbG9hZGluZyBmaXJtd2FyZSByYWRlb24vb2xhbmRfY2UuYmluClsg
ICAxOC44NTU1MTJdIFJUTDgyMTFFIEdpZ2FiaXQgRXRoZXJuZXQgcjgxNjktMC04NzAwOjAwOiBh
dHRhY2hlZCBQSFkgZHJpdmVyIChtaWlfYnVzOnBoeV9hZGRyPXI4MTY5LTAtODcwMDowMCwgaXJx
PU1BQykKWyAgIDE4Ljg1ODEzMV0gcmFkZW9uIDAwMDA6NDE6MDAuMDogZmlybXdhcmU6IGRpcmVj
dC1sb2FkaW5nIGZpcm13YXJlIHJhZGVvbi9vbGFuZF9ybGMuYmluClsgICAxOC44ODAzNzldIHJh
ZGVvbiAwMDAwOjQxOjAwLjA6IGZpcm13YXJlOiBkaXJlY3QtbG9hZGluZyBmaXJtd2FyZSByYWRl
b24vb2xhbmRfbWMuYmluClsgICAxOC44ODk5OTBdIHJhZGVvbiAwMDAwOjQxOjAwLjA6IGZpcm13
YXJlOiBkaXJlY3QtbG9hZGluZyBmaXJtd2FyZSByYWRlb24vb2xhbmRfc21jLmJpbgpbICAgMTgu
ODk5MzgwXSBbZHJtXSBJbnRlcm5hbCB0aGVybWFsIGNvbnRyb2xsZXIgd2l0aCBmYW4gY29udHJv
bApbICAgMTguOTEwOTY5XSBbZHJtXSByYWRlb246IGRwbSBpbml0aWFsaXplZApbICAgMTguOTE2
MDYyXSByYWRlb24gMDAwMDo0MTowMC4wOiBmaXJtd2FyZTogZGlyZWN0LWxvYWRpbmcgZmlybXdh
cmUgcmFkZW9uL1RBSElUSV91dmQuYmluClsgICAxOC45MjUzOTldIFtkcm1dIEdBUlQ6IG51bSBj
cHUgcGFnZXMgNTI0Mjg4LCBudW0gZ3B1IHBhZ2VzIDUyNDI4OApbICAgMTguOTM3OTgwXSBbZHJt
XSBQQ0lFIEdBUlQgb2YgMjA0OE0gZW5hYmxlZCAodGFibGUgYXQgMHgwMDAwMDAwMDAwMTY1MDAw
KS4KWyAgIDE4Ljk0NjI3Ml0gcmFkZW9uIDAwMDA6NDE6MDAuMDogV0IgZW5hYmxlZApbICAgMTgu
OTUxMjQ5XSByYWRlb24gMDAwMDo0MTowMC4wOiBmZW5jZSBkcml2ZXIgb24gcmluZyAwIHVzZSBn
cHUgYWRkciAweDAwMDAwMDAwNDAwMDBjMDAKWyAgIDE4Ljk2MDQyNV0gcmFkZW9uIDAwMDA6NDE6
MDAuMDogZmVuY2UgZHJpdmVyIG9uIHJpbmcgMSB1c2UgZ3B1IGFkZHIgMHgwMDAwMDAwMDQwMDAw
YzA0ClsgICAxOC45Njk3OTFdIHJhZGVvbiAwMDAwOjQxOjAwLjA6IGZlbmNlIGRyaXZlciBvbiBy
aW5nIDIgdXNlIGdwdSBhZGRyIDB4MDAwMDAwMDA0MDAwMGMwOApbICAgMTguOTc5MDM3XSByYWRl
b24gMDAwMDo0MTowMC4wOiBmZW5jZSBkcml2ZXIgb24gcmluZyAzIHVzZSBncHUgYWRkciAweDAw
MDAwMDAwNDAwMDBjMGMKWyAgIDE4Ljk4ODQ3Nl0gcmFkZW9uIDAwMDA6NDE6MDAuMDogZmVuY2Ug
ZHJpdmVyIG9uIHJpbmcgNCB1c2UgZ3B1IGFkZHIgMHgwMDAwMDAwMDQwMDAwYzEwClsgICAxOC45
OTgxNjFdIHJhZGVvbiAwMDAwOjQxOjAwLjA6IGZlbmNlIGRyaXZlciBvbiByaW5nIDUgdXNlIGdw
dSBhZGRyIDB4MDAwMDAwMDAwMDA3NWExOApbICAgMTkuMDA3NDk2XSByYWRlb24gMDAwMDo0MTow
MC4wOiByYWRlb246IE1TSSBsaW1pdGVkIHRvIDMyLWJpdApbICAgMTkuMDE0NDU5XSByYWRlb24g
MDAwMDo0MTowMC4wOiByYWRlb246IHVzaW5nIE1TSS4KWyAgIDE5LjAyMDMwMF0gW2RybV0gcmFk
ZW9uOiBpcnEgaW5pdGlhbGl6ZWQuClsgICAxOS4xODI1MjJdIFtkcm1dIHJpbmcgdGVzdCBvbiAw
IHN1Y2NlZWRlZCBpbiAxIHVzZWNzClsgICAxOS4xODg0MjNdIFtkcm1dIHJpbmcgdGVzdCBvbiAx
IHN1Y2NlZWRlZCBpbiAxIHVzZWNzClsgICAxOS4xOTQzNDRdIFtkcm1dIHJpbmcgdGVzdCBvbiAy
IHN1Y2NlZWRlZCBpbiAxIHVzZWNzClsgICAxOS4yMDA0MTRdIFtkcm1dIHJpbmcgdGVzdCBvbiAz
IHN1Y2NlZWRlZCBpbiAzIHVzZWNzClsgICAxOS4yMDY0NjFdIFtkcm1dIHJpbmcgdGVzdCBvbiA0
IHN1Y2NlZWRlZCBpbiAzIHVzZWNzClsgICAxOS4zODE2NTddIHI4MTY5IDAwMDA6ODc6MDAuMCBl
bnAxMzVzMDogTGluayBpcyBEb3duClsgICAxOS4zODg0ODddIFtkcm1dIHJpbmcgdGVzdCBvbiA1
IHN1Y2NlZWRlZCBpbiAyIHVzZWNzClsgICAxOS4zOTQyOTVdIFtkcm1dIFVWRCBpbml0aWFsaXpl
ZCBzdWNjZXNzZnVsbHkuClsgICAxOS4zOTk2NDVdIFtkcm1dIGliIHRlc3Qgb24gcmluZyAwIHN1
Y2NlZWRlZCBpbiAwIHVzZWNzClsgICAxOS40MDU4MzFdIFtkcm1dIGliIHRlc3Qgb24gcmluZyAx
IHN1Y2NlZWRlZCBpbiAwIHVzZWNzClsgICAxOS40MTE5OTVdIFtkcm1dIGliIHRlc3Qgb24gcmlu
ZyAyIHN1Y2NlZWRlZCBpbiAwIHVzZWNzClsgICAxOS40MTg0MjBdIFtkcm1dIGliIHRlc3Qgb24g
cmluZyAzIHN1Y2NlZWRlZCBpbiAwIHVzZWNzClsgICAxOS40MjQ0OTNdIFtkcm1dIGliIHRlc3Qg
b24gcmluZyA0IHN1Y2NlZWRlZCBpbiAwIHVzZWNzClsgICAxOS40NjczODFdIHVzYmNvcmU6IHJl
Z2lzdGVyZWQgbmV3IGludGVyZmFjZSBkcml2ZXIgYnR1c2IKWyAgIDE5LjQ2ODE3M10gW2RybV0g
YW1kZ3B1IGtlcm5lbCBtb2Rlc2V0dGluZyBlbmFibGVkLgpbICAgMTkuNDc2NDcxXSBibHVldG9v
dGggaGNpMDogZmlybXdhcmU6IGRpcmVjdC1sb2FkaW5nIGZpcm13YXJlIG1lZGlhdGVrL0JUX1JB
TV9DT0RFX01UNzkyMl8xXzFfaGRyLmJpbgpbICAgMTkuNDc5NTkwXSBhbWRncHU6IENSQVQgdGFi
bGUgbm90IGZvdW5kClsgICAxOS40OTQ5MDldIGFtZGdwdTogVmlydHVhbCBDUkFUIHRhYmxlIGNy
ZWF0ZWQgZm9yIENQVQpbICAgMTkuNDk0OTE3XSBhbWRncHU6IFRvcG9sb2d5OiBBZGQgQ1BVIG5v
ZGUKWyAgIDE5LjQ5NTMxNV0gYW1kZ3B1IDAwMDA6MDE6MDAuMDogZW5hYmxpbmcgZGV2aWNlICgw
MDA2IC0+IDAwMDcpClsgICAxOS41MjI3OTZdIFtkcm1dIGluaXRpYWxpemluZyBrZXJuZWwgbW9k
ZXNldHRpbmcgKFBPTEFSSVMxMCAweDEwMDI6MHg2N0RGIDB4MTQ2MjoweDM0MTMgMHhDNykuClsg
ICAxOS41NDIzNTFdIFtkcm1dIHJlZ2lzdGVyIG1taW8gYmFzZTogMHhGMEYwMDAwMApbICAgMTku
NTU2ODM2XSBbZHJtXSByZWdpc3RlciBtbWlvIHNpemU6IDI2MjE0NApbICAgMTkuNTU2OTI2XSBb
ZHJtXSBhZGQgaXAgYmxvY2sgbnVtYmVyIDAgPHZpX2NvbW1vbj4KWyAgIDE5LjU3NTIzNV0gW2Ry
bV0gYWRkIGlwIGJsb2NrIG51bWJlciAxIDxnbWNfdjhfMD4KWyAgIDE5LjU3NTIzNl0gW2RybV0g
YWRkIGlwIGJsb2NrIG51bWJlciAyIDx0b25nYV9paD4KWyAgIDE5LjU3NTIzN10gW2RybV0gYWRk
IGlwIGJsb2NrIG51bWJlciAzIDxnZnhfdjhfMD4KWyAgIDE5LjU3NTIzN10gW2RybV0gYWRkIGlw
IGJsb2NrIG51bWJlciA0IDxzZG1hX3YzXzA+ClsgICAxOS41NzUyMzhdIFtkcm1dIGFkZCBpcCBi
bG9jayBudW1iZXIgNSA8cG93ZXJwbGF5PgpbICAgMTkuNTc1MjM4XSBbZHJtXSBhZGQgaXAgYmxv
Y2sgbnVtYmVyIDYgPGRtPgpbICAgMTkuNTc1MjM5XSBbZHJtXSBhZGQgaXAgYmxvY2sgbnVtYmVy
IDcgPHV2ZF92Nl8wPgpbICAgMTkuNTc1MjM5XSBbZHJtXSBhZGQgaXAgYmxvY2sgbnVtYmVyIDgg
PHZjZV92M18wPgpbICAgMTkuNjQ0OTQ3XSBCbHVldG9vdGg6IGhjaTA6IERldmljZSBzZXR1cCBp
biAxNzMzNTAgdXNlY3MKWyAgIDE5LjY1Mzk4OV0gQmx1ZXRvb3RoOiBoY2kwOiBIQ0kgRW5oYW5j
ZWQgU2V0dXAgU3luY2hyb25vdXMgQ29ubmVjdGlvbiBjb21tYW5kIGlzIGFkdmVydGlzZWQsIGJ1
dCBub3Qgc3VwcG9ydGVkLgpbICAgMTkuOTI4NTUwXSBhbWRncHUgMDAwMDowMTowMC4wOiBhbWRn
cHU6IEZldGNoZWQgVkJJT1MgZnJvbSBST00gQkFSClsgICAxOS45MzU5MDRdIGFtZGdwdTogQVRP
TSBCSU9TOiAxMTMtVjM0MTExLUYxClsgICAxOS45NDgzOTNdIFtkcm1dIFVWRCBpcyBlbmFibGVk
IGluIFZNIG1vZGUKWyAgIDE5Ljk1MzI2NF0gW2RybV0gVVZEIEVOQyBpcyBlbmFibGVkIGluIFZN
IG1vZGUKWyAgIDE5Ljk1MzI2N10gW2RybV0gVkNFIGVuYWJsZWQgaW4gVk0gbW9kZQpbICAgMTku
OTUzMjY4XSBhbWRncHUgMDAwMDowMTowMC4wOiBhbWRncHU6IFRydXN0ZWQgTWVtb3J5IFpvbmUg
KFRNWikgZmVhdHVyZSBub3Qgc3VwcG9ydGVkClsgICAxOS45NTMzMTBdIFtkcm1dIHZtIHNpemUg
aXMgNjQgR0IsIDIgbGV2ZWxzLCBibG9jayBzaXplIGlzIDEwLWJpdCwgZnJhZ21lbnQgc2l6ZSBp
cyA5LWJpdApbICAgMTkuOTkxMzcwXSBhbWRncHUgMDAwMDowMTowMC4wOiBmaXJtd2FyZTogZGly
ZWN0LWxvYWRpbmcgZmlybXdhcmUgYW1kZ3B1L3BvbGFyaXMxMF9tYy5iaW4KWyAgIDE5Ljk5NzU1
OV0gbXQ3OTIxZSAwMDAwOjQ2OjAwLjAgd2xwNzBzMDogcmVuYW1lZCBmcm9tIHdsYW4wClsgICAy
MC4wMDk1MTldIGFtZGdwdSAwMDAwOjAxOjAwLjA6IGFtZGdwdTogVlJBTTogNDA5Nk0gMHgwMDAw
MDBGNDAwMDAwMDAwIC0gMHgwMDAwMDBGNEZGRkZGRkZGICg0MDk2TSB1c2VkKQpbICAgMjAuMDI3
MzEzXSBhbWRncHUgMDAwMDowMTowMC4wOiBhbWRncHU6IEdBUlQ6IDI1Nk0gMHgwMDAwMDBGRjAw
MDAwMDAwIC0gMHgwMDAwMDBGRjBGRkZGRkZGClsgICAyMC4wMjczMjBdIFtkcm1dIERldGVjdGVk
IFZSQU0gUkFNPTQwOTZNLCBCQVI9NDA5Nk0KWyAgIDIwLjAyNzMyMV0gW2RybV0gUkFNIHdpZHRo
IDI1NmJpdHMgR0REUjUKWyAgIDIwLjAyNzM0MF0gW2RybV0gYW1kZ3B1OiA0MDk2TSBvZiBWUkFN
IG1lbW9yeSByZWFkeQpbICAgMjAuMDYyMDMxXSBbZHJtXSBhbWRncHU6IDM5NjJNIG9mIEdUVCBt
ZW1vcnkgcmVhZHkuClsgICAyMC4wNjc5MThdIFtkcm1dIEdBUlQ6IG51bSBjcHUgcGFnZXMgNjU1
MzYsIG51bSBncHUgcGFnZXMgNjU1MzYKWyAgIDIwLjA3NTQ1MF0geGVuOnhlbl9ldnRjaG46IEV2
ZW50LWNoYW5uZWwgZGV2aWNlIGluc3RhbGxlZApbICAgMjAuMDc2MjQ1XSBbZHJtXSBQQ0lFIEdB
UlQgb2YgMjU2TSBlbmFibGVkICh0YWJsZSBhdCAweDAwMDAwMEY0MDAzODAwMDApLgpbICAgMjAu
MDgxNTQxXSBbZHJtXSBpYiB0ZXN0IG9uIHJpbmcgNSBzdWNjZWVkZWQKWyAgIDIwLjA4MTg3M10g
W2RybV0gUmFkZW9uIERpc3BsYXkgQ29ubmVjdG9ycwpbICAgMjAuMDkwNDA3XSBhbWRncHUgMDAw
MDowMTowMC4wOiBmaXJtd2FyZTogZGlyZWN0LWxvYWRpbmcgZmlybXdhcmUgYW1kZ3B1L3BvbGFy
aXMxMF9wZnBfMi5iaW4KWyAgIDIwLjA5NDk2OV0gW2RybV0gQ29ubmVjdG9yIDA6ClsgICAyMC4w
OTQ5NzBdIFtkcm1dICAgRFAtMQpbICAgMjAuMDk0OTcwXSBbZHJtXSAgIEhQRDEKWyAgIDIwLjA5
NDk3MF0gW2RybV0gICBEREM6IDB4NjU0MCAweDY1NDAgMHg2NTQ0IDB4NjU0NCAweDY1NDggMHg2
NTQ4IDB4NjU0YyAweDY1NGMKWyAgIDIwLjA5NDk3MV0gW2RybV0gICBFbmNvZGVyczoKWyAgIDIw
LjA5NDk3MV0gW2RybV0gICAgIERGUDE6IElOVEVSTkFMX1VOSVBIWQpbICAgMjAuMDk0OTcyXSBb
ZHJtXSBDb25uZWN0b3IgMToKWyAgIDIwLjA5NDk3Ml0gW2RybV0gICBWR0EtMQpbICAgMjAuMDk0
OTcyXSBbZHJtXSAgIEREQzogMHg2NTMwIDB4NjUzMCAweDY1MzQgMHg2NTM0IDB4NjUzOCAweDY1
MzggMHg2NTNjIDB4NjUzYwpbICAgMjAuMDk0OTcyXSBbZHJtXSAgIEVuY29kZXJzOgpbICAgMjAu
MDk0OTczXSBbZHJtXSAgICAgQ1JUMTogSU5URVJOQUxfS0xEU0NQX0RBQzEKWyAgIDIwLjE2MTI4
N10gYW1kZ3B1IDAwMDA6MDE6MDAuMDogZmlybXdhcmU6IGRpcmVjdC1sb2FkaW5nIGZpcm13YXJl
IGFtZGdwdS9wb2xhcmlzMTBfbWVfMi5iaW4KWyAgIDIwLjE3MTQyNV0gYW1kZ3B1IDAwMDA6MDE6
MDAuMDogZmlybXdhcmU6IGRpcmVjdC1sb2FkaW5nIGZpcm13YXJlIGFtZGdwdS9wb2xhcmlzMTBf
Y2VfMi5iaW4KWyAgIDIwLjE3ODMyNl0gW2RybV0gZmIgbWFwcGFibGUgYXQgMHg2OTk0MDU3MTAw
MApbICAgMjAuMTgxNDA3XSBbZHJtXSBDaGFpbmVkIElCIHN1cHBvcnQgZW5hYmxlZCEKWyAgIDIw
LjE4NjYyN10gW2RybV0gdnJhbSBhcHBlciBhdCAweDY5OTQwMDAwMDAwClsgICAyMC4xODY2Mjhd
IFtkcm1dIHNpemUgOTQzNzE4NApbICAgMjAuMTg2NjI5XSBbZHJtXSBmYiBkZXB0aCBpcyAyNApb
ICAgMjAuMTg2NjI5XSBbZHJtXSAgICBwaXRjaCBpcyA4MTkyClsgICAyMC4yMDg3NjZdIGFtZGdw
dSAwMDAwOjAxOjAwLjA6IGZpcm13YXJlOiBkaXJlY3QtbG9hZGluZyBmaXJtd2FyZSBhbWRncHUv
cG9sYXJpczEwX3JsYy5iaW4KWyAgIDIwLjIwOTI3NF0gYW1kZ3B1IDAwMDA6MDE6MDAuMDogZmly
bXdhcmU6IGRpcmVjdC1sb2FkaW5nIGZpcm13YXJlIGFtZGdwdS9wb2xhcmlzMTBfbWVjXzIuYmlu
ClsgICAyMC4yMDk2MTddIGFtZGdwdSAwMDAwOjAxOjAwLjA6IGZpcm13YXJlOiBkaXJlY3QtbG9h
ZGluZyBmaXJtd2FyZSBhbWRncHUvcG9sYXJpczEwX21lYzJfMi5iaW4KWyAgIDIwLjIwOTc4Ml0g
TkVUOiBSZWdpc3RlcmVkIFBGX1FJUENSVFIgcHJvdG9jb2wgZmFtaWx5ClsgICAyMC4yMTAxNDld
IGFtZGdwdSAwMDAwOjAxOjAwLjA6IGZpcm13YXJlOiBkaXJlY3QtbG9hZGluZyBmaXJtd2FyZSBh
bWRncHUvcG9sYXJpczEwX3NkbWEuYmluClsgICAyMC4yMTAyOThdIGFtZGdwdSAwMDAwOjAxOjAw
LjA6IGZpcm13YXJlOiBkaXJlY3QtbG9hZGluZyBmaXJtd2FyZSBhbWRncHUvcG9sYXJpczEwX3Nk
bWExLmJpbgpbICAgMjAuMjEwMzE0XSBhbWRncHU6IGh3bWdyX3N3X2luaXQgc211IGJhY2tlZCBp
cyBwb2xhcmlzMTBfc211ClsgICAyMC4yMTA3MjJdIGFtZGdwdSAwMDAwOjAxOjAwLjA6IGZpcm13
YXJlOiBkaXJlY3QtbG9hZGluZyBmaXJtd2FyZSBhbWRncHUvcG9sYXJpczEwX3V2ZC5iaW4KWyAg
IDIwLjIxMDcyNV0gW2RybV0gRm91bmQgVVZEIGZpcm13YXJlIFZlcnNpb246IDEuMTMwIEZhbWls
eSBJRDogMTYKWyAgIDIwLjIxMTQ0Ml0gYW1kZ3B1IDAwMDA6MDE6MDAuMDogZmlybXdhcmU6IGRp
cmVjdC1sb2FkaW5nIGZpcm13YXJlIGFtZGdwdS9wb2xhcmlzMTBfdmNlLmJpbgpbICAgMjAuMjEx
NDQ0XSBbZHJtXSBGb3VuZCBWQ0UgZmlybXdhcmUgVmVyc2lvbjogNTMuMjYgQmluYXJ5IElEOiAz
ClsgICAyMC4yMTE5NDNdIGFtZGdwdSAwMDAwOjAxOjAwLjA6IGZpcm13YXJlOiBkaXJlY3QtbG9h
ZGluZyBmaXJtd2FyZSBhbWRncHUvcG9sYXJpczEwX3NtYy5iaW4KWyAgIDIwLjIxMzIyM10geGVu
X2FjcGlfcHJvY2Vzc29yOiBVcGxvYWRpbmcgWGVuIHByb2Nlc3NvciBQTSBpbmZvClsgICAyMC4y
NTUzOTNdIENvbnNvbGU6IHN3aXRjaGluZyB0byBjb2xvdXIgZnJhbWUgYnVmZmVyIGRldmljZSAy
NTZ4NzIKWyAgIDIwLjI3NDYzN10gW2RybV0gRGlzcGxheSBDb3JlIGluaXRpYWxpemVkIHdpdGgg
djMuMi4yMDchClsgICAyMC4yNzc0MTFdIHJhZGVvbiAwMDAwOjQxOjAwLjA6IFtkcm1dIGZiMDog
cmFkZW9uZHJtZmIgZnJhbWUgYnVmZmVyIGRldmljZQpbICAgMjAuNDIzMjY5XSBbZHJtXSBJbml0
aWFsaXplZCByYWRlb24gMi41MC4wIDIwMDgwNTI4IGZvciAwMDAwOjQxOjAwLjAgb24gbWlub3Ig
MApbICAgMjAuNTc2MTU1XSBbZHJtXSBVVkQgYW5kIFVWRCBFTkMgaW5pdGlhbGl6ZWQgc3VjY2Vz
c2Z1bGx5LgpbICAgMjAuNjgyMDg3XSBbZHJtXSBWQ0UgaW5pdGlhbGl6ZWQgc3VjY2Vzc2Z1bGx5
LgpbICAgMjAuNjkwNzY2XSBrZmQga2ZkOiBhbWRncHU6IEFsbG9jYXRlZCAzOTY5MDU2IGJ5dGVz
IG9uIGdhcnQKWyAgIDIwLjY5NzgwM10gYW1kZ3B1OiBzZG1hX2JpdG1hcDogZgpbICAgMjAuNzAx
Nzg1XSBhbWRncHU6IFNSQVQgdGFibGUgbm90IGZvdW5kClsgICAyMC43MDYzOTBdIGFtZGdwdTog
VmlydHVhbCBDUkFUIHRhYmxlIGNyZWF0ZWQgZm9yIEdQVQpbICAgMjAuNzEyNTM1XSBhbWRncHU6
IFRvcG9sb2d5OiBBZGQgZEdQVSBub2RlIFsweDY3ZGY6MHgxMDAyXQpbICAgMjAuNzE5MDUyXSBr
ZmQga2ZkOiBhbWRncHU6IGFkZGVkIGRldmljZSAxMDAyOjY3ZGYKWyAgIDIwLjcyNDg0NV0gYW1k
Z3B1IDAwMDA6MDE6MDAuMDogYW1kZ3B1OiBTRSA0LCBTSCBwZXIgU0UgMSwgQ1UgcGVyIFNIIDks
IGFjdGl2ZV9jdV9udW1iZXIgMzYKWyAgIDIwLjc0ODk3MV0gYW1kZ3B1IDAwMDA6MDE6MDAuMDog
YW1kZ3B1OiBVc2luZyBCQUNPIGZvciBydW50aW1lIHBtClsgICAyMC43NTY2OTJdIFtkcm1dIElu
aXRpYWxpemVkIGFtZGdwdSAzLjQ5LjAgMjAxNTAxMDEgZm9yIDAwMDA6MDE6MDAuMCBvbiBtaW5v
ciAxClsgICAyMS4yOTc0NDNdIFtkcm1dIEZlbmNlIGZhbGxiYWNrIHRpbWVyIGV4cGlyZWQgb24g
cmluZyB1dmQKWyAgIDIxLjcxMzQ2Ml0gYW1kZ3B1IDAwMDA6MDE6MDAuMDogYW1kZ3B1OiAKICAg
ICAgICAgICAgICAgbGFzdCBtZXNzYWdlIHdhcyBmYWlsZWQgcmV0IGlzIDY1NTM1ClsgICAyMS44
NDE2MzRdIHI4MTY5IDAwMDA6ODY6MDAuMCBlbnAxMzRzMDogTGluayBpcyBVcCAtIDFHYnBzL0Z1
bGwgLSBmbG93IGNvbnRyb2wgb2ZmClsgICAyMS44NTAyODBdIElQdjY6IEFERFJDT05GKE5FVERF
Vl9DSEFOR0UpOiBlbnAxMzRzMDogbGluayBiZWNvbWVzIHJlYWR5ClsgICAyMi4xNjA0NzJdIHI4
MTY5IDAwMDA6ODc6MDAuMCBlbnAxMzVzMDogTGluayBpcyBVcCAtIDFHYnBzL0Z1bGwgLSBmbG93
IGNvbnRyb2wgcngvdHgKWyAgIDIyLjE2OTI4OF0gSVB2NjogQUREUkNPTkYoTkVUREVWX0NIQU5H
RSk6IGVucDEzNXMwOiBsaW5rIGJlY29tZXMgcmVhZHkKWyAgIDIyLjMyMTQ1Nl0gYW1kZ3B1IDAw
MDA6MDE6MDAuMDogW2RybTphbWRncHVfaWJfcmluZ190ZXN0cyBbYW1kZ3B1XV0gKkVSUk9SKiBJ
QiB0ZXN0IGZhaWxlZCBvbiB1dmQgKC0xMTApLgpbICAgMjMuMzQ1NTM5XSBhbWRncHUgMDAwMDow
MTowMC4wOiBbZHJtOmFtZGdwdV9pYl9yaW5nX3Rlc3RzIFthbWRncHVdXSAqRVJST1IqIElCIHRl
c3QgZmFpbGVkIG9uIHV2ZF9lbmMwICgtMTEwKS4KWyAgIDI0LjM2OTQ1M10gYW1kZ3B1IDAwMDA6
MDE6MDAuMDogW2RybTphbWRncHVfaWJfcmluZ190ZXN0cyBbYW1kZ3B1XV0gKkVSUk9SKiBJQiB0
ZXN0IGZhaWxlZCBvbiB1dmRfZW5jMSAoLTExMCkuClsgICAyNC40ODA0MTVdIGFtZGdwdSAwMDAw
OjAxOjAwLjA6IGFtZGdwdTogCiAgICAgICAgICAgICAgIGxhc3QgbWVzc2FnZSB3YXMgZmFpbGVk
IHJldCBpcyA2NTUzNQpbICAgMjUuNTIxNDQ1XSBhbWRncHUgMDAwMDowMTowMC4wOiBbZHJtOmFt
ZGdwdV9pYl9yaW5nX3Rlc3RzIFthbWRncHVdXSAqRVJST1IqIElCIHRlc3QgZmFpbGVkIG9uIHZj
ZTAgKC0xMTApLgpbICAgMjUuNTMyNjk0XSBbZHJtOnByb2Nlc3Nfb25lX3dvcmtdICpFUlJPUiog
aWIgcmluZyB0ZXN0IGZhaWxlZCAoLTExMCkuClsgICAyNS41ODI5MzhdIGZiY29uOiBhbWRncHVk
cm1mYiAoZmIxKSBpcyBwcmltYXJ5IGRldmljZQpbICAgMjUuNTgyOTQyXSBmYmNvbjogUmVtYXBw
aW5nIHByaW1hcnkgZGV2aWNlLCBmYjEsIHRvIHR0eSAxLTYzClsgICAyNS41ODQwOTNdIGFtZGdw
dSAwMDAwOjAxOjAwLjA6IGFtZGdwdTogCiAgICAgICAgICAgICAgIGxhc3QgbWVzc2FnZSB3YXMg
ZmFpbGVkIHJldCBpcyA2NTUzNQpbICAgMjUuNTg0MTAwXSBhbWRncHUgMDAwMDowMTowMC4wOiBh
bWRncHU6IAogICAgICAgICAgICAgICBsYXN0IG1lc3NhZ2Ugd2FzIGZhaWxlZCByZXQgaXMgNjU1
MzUKWyAgIDI1LjU4NDEwNV0gYW1kZ3B1IDAwMDA6MDE6MDAuMDogYW1kZ3B1OiAKICAgICAgICAg
ICAgICAgbGFzdCBtZXNzYWdlIHdhcyBmYWlsZWQgcmV0IGlzIDY1NTM1ClsgICAyNS41ODQxMDhd
IGFtZGdwdSAwMDAwOjAxOjAwLjA6IGFtZGdwdTogCiAgICAgICAgICAgICAgIGxhc3QgbWVzc2Fn
ZSB3YXMgZmFpbGVkIHJldCBpcyA2NTUzNQpbICAgMjUuNTg0MTEyXSBhbWRncHUgMDAwMDowMTow
MC4wOiBhbWRncHU6IAogICAgICAgICAgICAgICBsYXN0IG1lc3NhZ2Ugd2FzIGZhaWxlZCByZXQg
aXMgNjU1MzUKWyAgIDI1LjU4NDExNl0gYW1kZ3B1IDAwMDA6MDE6MDAuMDogYW1kZ3B1OiAKICAg
ICAgICAgICAgICAgbGFzdCBtZXNzYWdlIHdhcyBmYWlsZWQgcmV0IGlzIDY1NTM1ClsgICAyNS41
ODQxMjBdIGFtZGdwdSAwMDAwOjAxOjAwLjA6IGFtZGdwdTogCiAgICAgICAgICAgICAgIGxhc3Qg
bWVzc2FnZSB3YXMgZmFpbGVkIHJldCBpcyA2NTUzNQpbICAgMjUuNTg0MTk4XSAtLS0tLS0tLS0t
LS1bIGN1dCBoZXJlIF0tLS0tLS0tLS0tLS0KWyAgIDI1LjU4NDE5OV0gV0FSTklORzogQ1BVOiAz
NyBQSUQ6IDk0OSBhdCBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS8uLi9kaXNwbGF5L2RjL2Ns
a19tZ3IvZGNlMTAwL2RjZV9jbGtfbWdyLmM6MTM5IGRjZV9nZXRfZHBfcmVmX2ZyZXFfa2h6KzB4
MTA0LzB4MTIwIFthbWRncHVdClsgICAyNS41ODQ2NjFdIE1vZHVsZXMgbGlua2VkIGluOiB4ZW5f
YWNwaV9wcm9jZXNzb3IoRSkgeGVuX2dudGRldihFKSBxcnRyKEUpIHhlbl9ldnRjaG4oRSkgeGVu
ZnMoRSkgeGVuX3ByaXZjbWQoRSkgYnR1c2IoRSkgYnRydGwoRSkgYnRiY20oRSkgYnRpbnRlbChF
KSBidG10ayhFKSBpbnRlbF9yYXBsX21zcihFKSBhbWRncHUoRSspIGJpbmZtdF9taXNjKEUpIG10
NzkyMWUoRSkgaW50ZWxfcmFwbF9jb21tb24oRSkgYmx1ZXRvb3RoKEUpIGdwdV9zY2hlZChFKSBt
dDc5MjFfY29tbW9uKEUpIHNuZF9oZGFfY29kZWNfaGRtaShFKSByYWRlb24oRSkgbmxzX2FzY2lp
KEUpIG10NzZfY29ubmFjX2xpYihFKSBkcm1fYnVkZHkoRSkgbmxzX2NwNDM3KEUpIHV2Y3ZpZGVv
KEUpIGdoYXNoX2NsbXVsbmlfaW50ZWwoRSkgdmlkZW8oRSkgaml0dGVyZW50cm9weV9ybmcoRSkg
bXQ3NihFKSBzbmRfaGRhX2ludGVsKEUpIHZmYXQoRSkgZmF0KEUpIHZpZGVvYnVmMl92bWFsbG9j
KEUpIHNuZF9pbnRlbF9kc3BjZmcoRSkgc2hhMjU2X3Nzc2UzKEUpIHNuZF91c2JfYXVkaW8oRSkg
c2hhNTEyX3Nzc2UzKEUpIHNuZF9pbnRlbF9zZHdfYWNwaShFKSB2aWRlb2J1ZjJfbWVtb3BzKEUp
IHNoYTUxMl9nZW5lcmljKEUpIGRybV9kaXNwbGF5X2hlbHBlcihFKSB2aWRlb2J1ZjJfdjRsMihF
KSBtYWM4MDIxMShFKSBzaGExX3Nzc2UzKEUpIHNuZF91c2JtaWRpX2xpYihFKSBjdHIoRSkgc25k
X2hkYV9jb2RlYyhFKSBjZWMoRSkgdmlkZW9idWYyX2NvbW1vbihFKSBkcmJnKEUpIGxpYmFyYzQo
RSkgc25kX3Jhd21pZGkoRSkgYW5zaV9jcHJuZyhFKSB2aWRlb2RldihFKSBzbmRfc2VxX2Rldmlj
ZShFKSByY19jb3JlKEUpIHNuZF9oZGFfY29yZShFKSBhZXNuaV9pbnRlbChFKSBlY2RoX2dlbmVy
aWMoRSkgZXh0NChFKSBjZmc4MDIxMShFKSBkcm1fdHRtX2hlbHBlcihFKSBzbmRfaHdkZXAoRSkg
ZWNjKEUpIGNyeXB0b19zaW1kKEUpIHNwNTEwMF90Y28oRSkgc25kX3BjbShFKQpbICAgMjUuNTg0
NzEwXSAgd21pX2Jtb2YoRSkgbWJjYWNoZShFKSBjcnlwdGQoRSkgY3JjMTYoRSkgbWMoRSkgcGNz
cGtyKEUpIHNuZF90aW1lcihFKSB0dG0oRSkgcmZraWxsKEUpIHNuZChFKSBkcm1fa21zX2hlbHBl
cihFKSBrMTB0ZW1wKEUpIGNjcChFKSB3YXRjaGRvZyhFKSBpMmNfYWxnb19iaXQoRSkgc291bmRj
b3JlKEUpIGpiZDIoRSkgYnV0dG9uKEUpIGV2ZGV2KEUpIGpveWRldihFKSBzZyhFKSBtc3IoRSkg
ZnVzZShFKSBsb29wKEUpIGVmaV9wc3RvcmUoRSkgZHJtKEUpIGNvbmZpZ2ZzKEUpIGVmaXZhcmZz
KEUpIGlwX3RhYmxlcyhFKSB4X3RhYmxlcyhFKSBhdXRvZnM0KEUpIGJ0cmZzKEUpIGJsYWtlMmJf
Z2VuZXJpYyhFKSB6c3RkX2NvbXByZXNzKEUpIGRtX2NhY2hlKEUpIGRtX2Jpb19wcmlzb24oRSkg
ZG1fcGVyc2lzdGVudF9kYXRhKEUpIGhpZF9sb2dpdGVjaF9oaWRwcChFKSBoaWRfbG9naXRlY2hf
ZGooRSkgcmFpZDEoRSkgc2VzKEUpIGRtX2ludGVncml0eShFKSBlbmNsb3N1cmUoRSkgc2NzaV90
cmFuc3BvcnRfc2FzKEUpIGRtX2J1ZmlvKEUpIGRtX3JhaWQoRSkgcmFpZDQ1NihFKSBhc3luY19y
YWlkNl9yZWNvdihFKSBhc3luY19tZW1jcHkoRSkgYXN5bmNfcHEoRSkgYXN5bmNfeG9yKEUpIGFz
eW5jX3R4KEUpIG1kX21vZChFKSB4b3IoRSkgcmFpZDZfcHEoRSkgbGliY3JjMzJjKEUpIGNyYzMy
Y19nZW5lcmljKEUpIGhpZF9nZW5lcmljKEUpIGRtX21vZChFKSB1c2JoaWQoRSkgdWFzKEUpIGhp
ZChFKSB1c2Jfc3RvcmFnZShFKSBzZF9tb2QoRSkgbnZtZShFKSBudm1lX2NvcmUoRSkgdDEwX3Bp
KEUpIGFoY2koRSkgY3JjNjRfcm9ja3NvZnQoRSkgeGhjaV9wY2koRSkgbGliYWhjaShFKSBjcmM2
NChFKSByODE2OShFKSB4aGNpX2hjZChFKSBjcmNfdDEwZGlmKEUpIHJlYWx0ZWsoRSkgbGliYXRh
KEUpIGF0bGFudGljKEUpIGNyY3QxMGRpZl9nZW5lcmljKEUpIG1kaW9fZGV2cmVzKEUpIHVzYmNv
cmUoRSkgZ3Bpb19hbWRwdChFKQpbICAgMjUuNTg0NzY1XSAgY3JjMzJfcGNsbXVsKEUpIHNjc2lf
bW9kKEUpIGNyY3QxMGRpZl9wY2xtdWwoRSkgY3JjMzJjX2ludGVsKEUpIGxpYnBoeShFKSBjcmN0
MTBkaWZfY29tbW9uKEUpIG1hY3NlYyhFKSBzY3NpX2NvbW1vbihFKSBpMmNfcGlpeDQoRSkgdXNi
X2NvbW1vbihFKSB3bWkoRSkgZ3Bpb19nZW5lcmljKEUpClsgICAyNS41ODQ3NzRdIENQVTogMzcg
UElEOiA5NDkgQ29tbTogKHVkZXYtd29ya2VyKSBUYWludGVkOiBHICAgICAgICAgICAgRSAgICAg
IDYuMS42OSAjMTAgClsgICAyNS41ODQ3NzhdIEhhcmR3YXJlIG5hbWU6IFRvIEJlIEZpbGxlZCBC
eSBPLkUuTS4gVFJYNTAgV1MvVFJYNTAgV1MsIEJJT1MgNy4wOCAwMS8xNi8yMDI0ClsgICAyNS41
ODQ3ODBdIFJJUDogMDAxMDpkY2VfZ2V0X2RwX3JlZl9mcmVxX2toeisweDEwNC8weDEyMCBbYW1k
Z3B1XQpbICAgMjUuNTg1MTIxXSBDb2RlOiBmZSBmZiBmZiA0OCA4YiA1NCAyNCAwOCA2NSA0OCAy
YiAxNCAyNSAyOCAwMCAwMCAwMCA3NSAyYyA0OCA4MyBjNCAxMCA1YiBlOSA4OSBmNCBmMyBiZSBi
OSAwMCAwMiAwMCAwMCBlYiBiNyA4ZCA0YyAwOSBjMCBlYiBiMSA8MGY+IDBiIGU5IDU2IGZmIGZm
IGZmIDY5IGM5IDA4IDAxIDAwIDAwIDgxIGU5IGY4IDgwIDAwIDAwIGViIDljIGU4ClsgICAyNS41
ODUxMjRdIFJTUDogMDAxODpmZmZmYzkwMDAwZTlmMjQwIEVGTEFHUzogMDAwMTAyMDIKWyAgIDI1
LjU4NTEyN10gUkFYOiAwMDAwMDAwMDAwMDAwMDA3IFJCWDogZmZmZjg4ODEwNDVjMWUwMCBSQ1g6
IDAwMDAwMDAwMDAwMDAwMDAKWyAgIDI1LjU4NTEyOF0gUkRYOiAwMDAwMDAwMDAwMDAwMDAwIFJT
STogMDAwMDAwMDAwMDAwNjdkZiBSREk6IGZmZmY4ODgxMDZhYTAwMDAKWyAgIDI1LjU4NTEzMF0g
UkJQOiBmZmZmODg4MTUwMjQwMWU4IFIwODogZmZmZmM5MDAwMGU5ZjI0NCBSMDk6IDAwMDAwMDAw
ZmZmZmZmZmYKWyAgIDI1LjU4NTEzMV0gUjEwOiAwMDAwMDAwMDAwMDBiNmI5IFIxMTogMDAwMDAw
MDAwMDAwMDAwMCBSMTI6IGZmZmY4ODgxNTAyNDAwMDAKWyAgIDI1LjU4NTEzMl0gUjEzOiBmZmZm
ODg4MTAzYjYwMDAwIFIxNDogMDAwMDAwMDAwMDAwMDAwMCBSMTU6IGZmZmY4ODgxMDNiNjAwMDAK
WyAgIDI1LjU4NTEzN10gRlM6ICAwMDAwN2Y3YzQ2OTkzOGMwKDAwMDApIEdTOmZmZmY4ODgyNTU3
NDAwMDAoMDAwMCkga25sR1M6MDAwMDAwMDAwMDAwMDAwMApbICAgMjUuNTg1MTM5XSBDUzogIDAw
MTAgRFM6IDAwMDAgRVM6IDAwMDAgQ1IwOiAwMDAwMDAwMDgwMDUwMDMzClsgICAyNS41ODUxNDBd
IENSMjogMDAwMDU2MGMyYjM2NTg3OCBDUjM6IDAwMDAwMDAxMGJjMzYwMDYgQ1I0OiAwMDAwMDAw
MDAwNzcwZWUwClsgICAyNS41ODUxNDVdIFBLUlU6IDU1NTU1NTU0ClsgICAyNS41ODUxNDZdIENh
bGwgVHJhY2U6ClsgICAyNS41ODUxNTBdICA8VEFTSz4KWyAgIDI1LjU4NTE1Ml0gID8gX193YXJu
KzB4N2QvMHhjMApbICAgMjUuNTg1MTU3XSAgPyBkY2VfZ2V0X2RwX3JlZl9mcmVxX2toeisweDEw
NC8weDEyMCBbYW1kZ3B1XQpbICAgMjUuNTg1NDY1XSAgPyByZXBvcnRfYnVnKzB4ZTIvMHgxNTAK
WyAgIDI1LjU4NTQ3Ml0gID8gaGFuZGxlX2J1ZysweDQxLzB4NzAKWyAgIDI1LjU4NTQ3OF0gID8g
ZXhjX2ludmFsaWRfb3ArMHgxMy8weDYwClsgICAyNS41ODU0ODFdICA/IGFzbV9leGNfaW52YWxp
ZF9vcCsweDE2LzB4MjAKWyAgIDI1LjU4NTQ4N10gID8gZGNlX2dldF9kcF9yZWZfZnJlcV9raHor
MHgxMDQvMHgxMjAgW2FtZGdwdV0KWyAgIDI1LjU4NTczMl0gIGJ1aWxkX2F1ZGlvX291dHB1dCsw
eGJlLzB4MTIwIFthbWRncHVdClsgICAyNS41ODYwNTRdICBkY2UxMTBfc2V0dXBfYXVkaW9fZHRv
KzB4MjAyLzB4MjgwIFthbWRncHVdClsgICAyNS41ODYzMDFdICA/IGFtZGdwdV9hdG9tX2V4ZWN1
dGVfdGFibGUrMHg1OC8weDcwIFthbWRncHVdClsgICAyNS41ODY2MDBdICBkY2UxMTBfYXBwbHlf
Y3R4X3RvX2h3KzB4MWFjLzB4NzIwIFthbWRncHVdClsgICAyNS41ODY4NjddICA/IF9yYXdfc3Bp
bl91bmxvY2tfaXJxcmVzdG9yZSsweGEvMHg0MApbICAgMjUuNTg2ODcxXSAgPyBfX2ZyZWVfcGFn
ZXNfb2srMHgyOTgvMHg1MDAKWyAgIDI1LjU4Njg3Nl0gIGRjX2NvbW1pdF9zdGF0ZV9ub19jaGVj
aysweDM5Ny8weGNkMCBbYW1kZ3B1XQpbICAgMjUuNTg3MTI5XSAgZGNfY29tbWl0X3N0YXRlKzB4
MTA3LzB4MTIwIFthbWRncHVdClsgICAyNS41ODczNjNdICBhbWRncHVfZG1fYXRvbWljX2NvbW1p
dF90YWlsKzB4NjMwLzB4Mzc5MCBbYW1kZ3B1XQpbICAgMjUuNTg3NjcxXSAgPyBmcmVlX3VucmVm
X3BhZ2VfY29tbWl0KzB4N2MvMHgxNzAKWyAgIDI1LjU4NzY3NV0gID8gX3Jhd19zcGluX3VubG9j
aysweGEvMHgzMApbICAgMjUuNTg3Njc5XSAgPyBmcmVlX3VucmVmX3BhZ2UrMHgxNWYvMHgxZDAK
WyAgIDI1LjU4NzY4M10gID8gdXBkYXRlX2xvYWRfYXZnKzB4N2UvMHg3ODAKWyAgIDI1LjU4NzY4
OV0gID8gcHNpX2dyb3VwX2NoYW5nZSsweDE0NS8weDM2MApbICAgMjUuNTg3NjkyXSAgPyBwc2lf
dGFza19zd2l0Y2grMHhkMi8weDIzMApbICAgMjUuNTg3Njk2XSAgPyBfcmF3X3NwaW5fdW5sb2Nr
KzB4YS8weDMwClsgICAyNS41ODc2OTldICA/IGZpbmlzaF90YXNrX3N3aXRjaC5pc3JhLjArMHg5
MC8weDJkMApbICAgMjUuNTg3NzAzXSAgPyBfX3NjaGVkdWxlKzB4MzU1LzB4OWUwClsgICAyNS41
ODc3MDVdICA/IHNjaGVkdWxlKzB4NWEvMHhkMApbICAgMjUuNTg3NzA3XSAgPyBzY2hlZHVsZV90
aW1lb3V0KzB4MTE4LzB4MTUwClsgICAyNS41ODc3MTFdICA/IF9yYXdfc3Bpbl91bmxvY2tfaXJx
cmVzdG9yZSsweGEvMHg0MApbICAgMjUuNTg3NzE0XSAgPyBkbWFfZmVuY2VfZGVmYXVsdF93YWl0
KzB4OGYvMHgyNjAKWyAgIDI1LjU4NzcyMl0gIGNvbW1pdF90YWlsKzB4OTQvMHgxMzAgW2RybV9r
bXNfaGVscGVyXQpbICAgMjUuNTg3NzQ1XSAgZHJtX2F0b21pY19oZWxwZXJfY29tbWl0KzB4MTEy
LzB4MTQwIFtkcm1fa21zX2hlbHBlcl0KWyAgIDI1LjU4Nzc2NF0gIGRybV9hdG9taWNfY29tbWl0
KzB4OTYvMHhjMCBbZHJtXQpbICAgMjUuNTg3ODA5XSAgPyBkcm1fcGxhbmVfZ2V0X2RhbWFnZV9j
bGlwcy5jb2xkKzB4MWMvMHgxYyBbZHJtXQpbICAgMjUuNTg3ODUxXSAgZHJtX2NsaWVudF9tb2Rl
c2V0X2NvbW1pdF9hdG9taWMrMHgyMDYvMHgyNTAgW2RybV0KWyAgIDI1LjU4Nzg5M10gIGRybV9j
bGllbnRfbW9kZXNldF9jb21taXRfbG9ja2VkKzB4NTYvMHgxNjAgW2RybV0KWyAgIDI1LjU4Nzky
OV0gIGRybV9jbGllbnRfbW9kZXNldF9jb21taXQrMHgyMS8weDQwIFtkcm1dClsgICAyNS41ODc5
NjRdICBkcm1fZmJfaGVscGVyX3NldF9wYXIrMHg5ZS8weGUwIFtkcm1fa21zX2hlbHBlcl0KWyAg
IDI1LjU4Nzk4NF0gIHNldF9jb24yZmJfbWFwKzB4MThmLzB4M2YwClsgICAyNS41ODc5ODldICBm
YmNvbl9mYl9yZWdpc3RlcmVkKzB4OWIvMHgxNDAKWyAgIDI1LjU4Nzk5Ml0gIHJlZ2lzdGVyX2Zy
YW1lYnVmZmVyKzB4MWM5LzB4MzAwClsgICAyNS41ODc5OThdICBfX2RybV9mYl9oZWxwZXJfaW5p
dGlhbF9jb25maWdfYW5kX3VubG9jaysweDM4OC8weDUxMCBbZHJtX2ttc19oZWxwZXJdClsgICAy
NS41ODgwMThdICBkcm1fZmJkZXZfY2xpZW50X2hvdHBsdWcrMHgxODYvMHgyMjAgW2RybV9rbXNf
aGVscGVyXQpbICAgMjUuNTg4MDM2XSAgZHJtX2NsaWVudF9yZWdpc3RlcisweDc1LzB4YjAgW2Ry
bV0KWyAgIDI1LjU4ODA3NF0gIGFtZGdwdV9wY2lfcHJvYmUrMHgzZGIvMHg0MDAgW2FtZGdwdV0K
WyAgIDI1LjU4ODM2MF0gIGxvY2FsX3BjaV9wcm9iZSsweDQxLzB4ODAKWyAgIDI1LjU4ODM2Nl0g
IHBjaV9kZXZpY2VfcHJvYmUrMHhjMy8weDI0MApbICAgMjUuNTg4MzcxXSAgcmVhbGx5X3Byb2Jl
KzB4ZGUvMHgzODAKWyAgIDI1LjU4ODM3Nl0gID8gcG1fcnVudGltZV9iYXJyaWVyKzB4NTAvMHg5
MApbICAgMjUuNTg4MzgwXSAgX19kcml2ZXJfcHJvYmVfZGV2aWNlKzB4NzgvMHgxMjAKWyAgIDI1
LjU4ODM4NF0gIGRyaXZlcl9wcm9iZV9kZXZpY2UrMHgxZi8weDkwClsgICAyNS41ODgzODddICBf
X2RyaXZlcl9hdHRhY2grMHhjZS8weDFjMApbICAgMjUuNTg4MzkxXSAgPyBfX2RldmljZV9hdHRh
Y2hfZHJpdmVyKzB4MTEwLzB4MTEwClsgICAyNS41ODgzOTRdICBidXNfZm9yX2VhY2hfZGV2KzB4
ODcvMHhkMApbICAgMjUuNTg4Mzk4XSAgYnVzX2FkZF9kcml2ZXIrMHgxYWUvMHgyMDAKWyAgIDI1
LjU4ODQwMV0gIGRyaXZlcl9yZWdpc3RlcisweDg5LzB4ZTAKWyAgIDI1LjU4ODQwNV0gID8gMHhm
ZmZmZmZmZmMyNmFhMDAwClsgICAyNS41ODg0MDddICBkb19vbmVfaW5pdGNhbGwrMHg1OS8weDIy
MApbICAgMjUuNTg4NDEzXSAgZG9faW5pdF9tb2R1bGUrMHg0YS8weDFmMApbICAgMjUuNTg4NDE4
XSAgX19kb19zeXNfZmluaXRfbW9kdWxlKzB4YWMvMHgxMjAKWyAgIDI1LjU4ODQyNF0gIGRvX3N5
c2NhbGxfNjQrMHg1Yi8weGMwClsgICAyNS41ODg0MjldICA/IHN5c2NhbGxfZXhpdF90b191c2Vy
X21vZGUrMHgyNy8weDQwClsgICAyNS41ODg0MzJdICA/IGRvX3N5c2NhbGxfNjQrMHg2Ny8weGMw
ClsgICAyNS41ODg0MzVdICA/IHN5c2NhbGxfZXhpdF90b191c2VyX21vZGUrMHgyNy8weDQwClsg
ICAyNS41ODg0MzhdICA/IGRvX3N5c2NhbGxfNjQrMHg2Ny8weGMwClsgICAyNS41ODg0NDFdICA/
IGV4aXRfdG9fdXNlcl9tb2RlX3ByZXBhcmUrMHg0MC8weDFlMApbICAgMjUuNTg4NDQ1XSAgPyBz
eXNjYWxsX2V4aXRfdG9fdXNlcl9tb2RlKzB4MjcvMHg0MApbICAgMjUuNTg4NDQ3XSAgPyBkb19z
eXNjYWxsXzY0KzB4NjcvMHhjMApbICAgMjUuNTg4NDUxXSAgZW50cnlfU1lTQ0FMTF82NF9hZnRl
cl9od2ZyYW1lKzB4NjQvMHhjZQpbICAgMjUuNTg4NDU1XSBSSVA6IDAwMzM6MHg3ZjdjNDZjMWU1
NTkKWyAgIDI1LjU4ODQ1OF0gQ29kZTogMDggODkgZTggNWIgNWQgYzMgNjYgMmUgMGYgMWYgODQg
MDAgMDAgMDAgMDAgMDAgOTAgNDggODkgZjggNDggODkgZjcgNDggODkgZDYgNDggODkgY2EgNGQg
ODkgYzIgNGQgODkgYzggNGMgOGIgNGMgMjQgMDggMGYgMDUgPDQ4PiAzZCAwMSBmMCBmZiBmZiA3
MyAwMSBjMyA0OCA4YiAwZCA3NyAwOCAwZCAwMCBmNyBkOCA2NCA4OSAwMSA0OApbICAgMjUuNTg4
NDYwXSBSU1A6IDAwMmI6MDAwMDdmZmYzYWYyZDYwOCBFRkxBR1M6IDAwMDAwMjQ2IE9SSUdfUkFY
OiAwMDAwMDAwMDAwMDAwMTM5ClsgICAyNS41ODg0NjNdIFJBWDogZmZmZmZmZmZmZmZmZmZkYSBS
Qlg6IDAwMDA1NjBjMmIzNGI0ZTAgUkNYOiAwMDAwN2Y3YzQ2YzFlNTU5ClsgICAyNS41ODg0NjRd
IFJEWDogMDAwMDAwMDAwMDAwMDAwMCBSU0k6IDAwMDA3ZjdjNDZkYjFlZmQgUkRJOiAwMDAwMDAw
MDAwMDAwMDE3ClsgICAyNS41ODg0NjZdIFJCUDogMDAwMDdmN2M0NmRiMWVmZCBSMDg6IDAwMDAw
MDAwMDAwMDAwMDAgUjA5OiAwMDAwNTYwYzJiMjUzMzcwClsgICAyNS41ODg0NjddIFIxMDogMDAw
MDAwMDAwMDAwMDAxNyBSMTE6IDAwMDAwMDAwMDAwMDAyNDYgUjEyOiAwMDAwMDAwMDAwMDIwMDAw
ClsgICAyNS41ODg0NjldIFIxMzogMDAwMDAwMDAwMDAwMDAwMCBSMTQ6IDAwMDA1NjBjMmIzMTI0
ZDAgUjE1OiAwMDAwNTYwYzJhOGM2ZWMxClsgICAyNS41ODg0NzJdICA8L1RBU0s+ClsgICAyNS41
ODg0NzNdIC0tLVsgZW5kIHRyYWNlIDAwMDAwMDAwMDAwMDAwMDAgXS0tLQpbICAgMjUuNTg4NTk2
XSBhbWRncHUgMDAwMDowMTowMC4wOiBhbWRncHU6IAogICAgICAgICAgICAgICBsYXN0IG1lc3Nh
Z2Ugd2FzIGZhaWxlZCByZXQgaXMgNjU1MzUKWyAgIDI1LjU4ODYwMV0gYW1kZ3B1IDAwMDA6MDE6
MDAuMDogYW1kZ3B1OiAKICAgICAgICAgICAgICAgbGFzdCBtZXNzYWdlIHdhcyBmYWlsZWQgcmV0
IGlzIDY1NTM1ClsgICAyNS41ODg2MDVdIGFtZGdwdSAwMDAwOjAxOjAwLjA6IGFtZGdwdTogCiAg
ICAgICAgICAgICAgIGxhc3QgbWVzc2FnZSB3YXMgZmFpbGVkIHJldCBpcyA2NTUzNQpbICAgMjUu
NTg4NjA5XSBhbWRncHUgMDAwMDowMTowMC4wOiBhbWRncHU6IAogICAgICAgICAgICAgICBsYXN0
IG1lc3NhZ2Ugd2FzIGZhaWxlZCByZXQgaXMgNjU1MzUKWyAgIDI1LjU4ODYxM10gYW1kZ3B1IDAw
MDA6MDE6MDAuMDogYW1kZ3B1OiAKICAgICAgICAgICAgICAgbGFzdCBtZXNzYWdlIHdhcyBmYWls
ZWQgcmV0IGlzIDY1NTM1ClsgICAyNS41ODg2MTddIGFtZGdwdSAwMDAwOjAxOjAwLjA6IGFtZGdw
dTogCiAgICAgICAgICAgICAgIGxhc3QgbWVzc2FnZSB3YXMgZmFpbGVkIHJldCBpcyA2NTUzNQpb
ICAgMjUuNTg4NjIxXSBhbWRncHUgMDAwMDowMTowMC4wOiBhbWRncHU6IAogICAgICAgICAgICAg
ICBsYXN0IG1lc3NhZ2Ugd2FzIGZhaWxlZCByZXQgaXMgNjU1MzUKWyAgIDI2LjQxNTA0Ml0gW2Ry
bV0gcGVyZm9ybV9saW5rX3RyYWluaW5nX3dpdGhfcmV0cmllczogTGluaygwKSB0cmFpbmluZyBh
dHRlbXB0IDEgb2YgNCBmYWlsZWQgQCByYXRlKDEwKSB4IGxhbmUoNCkgOiBmYWlsIHJlYXNvbjoo
MSkKWyAgIDQ2LjQzNzQxMl0gW2RybTphdG9tX29wX2p1bXAgW2FtZGdwdV1dICpFUlJPUiogYXRv
bWJpb3Mgc3R1Y2sgaW4gbG9vcCBmb3IgbW9yZSB0aGFuIDIwc2VjcyBhYm9ydGluZwpbICAgNDYu
NDM3NTMxXSBbZHJtOmFtZGdwdV9hdG9tX2V4ZWN1dGVfdGFibGVfbG9ja2VkIFthbWRncHVdXSAq
RVJST1IqIGF0b21iaW9zIHN0dWNrIGV4ZWN1dGluZyBENzA2IChsZW4gODI0LCBXUyAwLCBQUyAw
KSBAIDB4RDg4NgpbICAgNDYuNDM3NjE3XSBbZHJtOmFtZGdwdV9hdG9tX2V4ZWN1dGVfdGFibGVf
bG9ja2VkIFthbWRncHVdXSAqRVJST1IqIGF0b21iaW9zIHN0dWNrIGV4ZWN1dGluZyBENUMwIChs
ZW4gMzI2LCBXUyAwLCBQUyAwKSBAIDB4RDZCMApbICAgNDYuNDM3Njk2XSBbZHJtOmRjZTExMF9s
aW5rX2VuY29kZXJfZGlzYWJsZV9vdXRwdXQgW2FtZGdwdV1dICpFUlJPUiogZGNlMTEwX2xpbmtf
ZW5jb2Rlcl9kaXNhYmxlX291dHB1dDogRmFpbGVkIHRvIGV4ZWN1dGUgVkJJT1MgY29tbWFuZCB0
YWJsZSEKWyAgIDQ3LjMxNjQxOV0gW2RybV0gcGVyZm9ybV9saW5rX3RyYWluaW5nX3dpdGhfcmV0
cmllczogTGluaygwKSB0cmFpbmluZyBhdHRlbXB0IDIgb2YgNCBmYWlsZWQgQCByYXRlKDEwKSB4
IGxhbmUoNCkgOiBmYWlsIHJlYXNvbjooMSkKWyAgIDY3LjcwODYyNF0gW2RybTphdG9tX29wX2p1
bXAgW2FtZGdwdV1dICpFUlJPUiogYXRvbWJpb3Mgc3R1Y2sgaW4gbG9vcCBmb3IgbW9yZSB0aGFu
IDIwc2VjcyBhYm9ydGluZwpbICAgNjcuNzA4NzQyXSBbZHJtOmFtZGdwdV9hdG9tX2V4ZWN1dGVf
dGFibGVfbG9ja2VkIFthbWRncHVdXSAqRVJST1IqIGF0b21iaW9zIHN0dWNrIGV4ZWN1dGluZyBE
NzA2IChsZW4gODI0LCBXUyAwLCBQUyAwKSBAIDB4RDg4NgpbICAgNjcuNzA4ODI4XSBbZHJtOmFt
ZGdwdV9hdG9tX2V4ZWN1dGVfdGFibGVfbG9ja2VkIFthbWRncHVdXSAqRVJST1IqIGF0b21iaW9z
IHN0dWNrIGV4ZWN1dGluZyBENUMwIChsZW4gMzI2LCBXUyAwLCBQUyAwKSBAIDB4RDZCMApbICAg
NjcuNzA4OTA4XSBbZHJtOmRjZTExMF9saW5rX2VuY29kZXJfZGlzYWJsZV9vdXRwdXQgW2FtZGdw
dV1dICpFUlJPUiogZGNlMTEwX2xpbmtfZW5jb2Rlcl9kaXNhYmxlX291dHB1dDogRmFpbGVkIHRv
IGV4ZWN1dGUgVkJJT1MgY29tbWFuZCB0YWJsZSEKWyAgIDY4LjY0MTEyMV0gW2RybV0gcGVyZm9y
bV9saW5rX3RyYWluaW5nX3dpdGhfcmV0cmllczogTGluaygwKSB0cmFpbmluZyBhdHRlbXB0IDMg
b2YgNCBmYWlsZWQgQCByYXRlKDEwKSB4IGxhbmUoNCkgOiBmYWlsIHJlYXNvbjooMSkKWyAgIDg3
LjIzODY1OF0gQnVmZmVyIEkvTyBlcnJvciBvbiBkZXYgZG0tMzUsIGxvZ2ljYWwgYmxvY2sgNzg2
NDMxNjcsIGFzeW5jIHBhZ2UgcmVhZApbICAgODguNjg4OTYzXSBbZHJtOmF0b21fb3BfanVtcCBb
YW1kZ3B1XV0gKkVSUk9SKiBhdG9tYmlvcyBzdHVjayBpbiBsb29wIGZvciBtb3JlIHRoYW4gMjBz
ZWNzIGFib3J0aW5nClsgICA4OC42ODkwNzZdIFtkcm06YW1kZ3B1X2F0b21fZXhlY3V0ZV90YWJs
ZV9sb2NrZWQgW2FtZGdwdV1dICpFUlJPUiogYXRvbWJpb3Mgc3R1Y2sgZXhlY3V0aW5nIEQ3MDYg
KGxlbiA4MjQsIFdTIDAsIFBTIDApIEAgMHhEODg2ClsgICA4OC42ODkxNjFdIFtkcm06YW1kZ3B1
X2F0b21fZXhlY3V0ZV90YWJsZV9sb2NrZWQgW2FtZGdwdV1dICpFUlJPUiogYXRvbWJpb3Mgc3R1
Y2sgZXhlY3V0aW5nIEQ1QzAgKGxlbiAzMjYsIFdTIDAsIFBTIDApIEAgMHhENkIwClsgICA4OC42
ODkyNDBdIFtkcm06ZGNlMTEwX2xpbmtfZW5jb2Rlcl9kaXNhYmxlX291dHB1dCBbYW1kZ3B1XV0g
KkVSUk9SKiBkY2UxMTBfbGlua19lbmNvZGVyX2Rpc2FibGVfb3V0cHV0OiBGYWlsZWQgdG8gZXhl
Y3V0ZSBWQklPUyBjb21tYW5kIHRhYmxlIQpbICAgODkuNjY4NTIxXSBbZHJtXSBlbmFibGluZyBs
aW5rIDAgZmFpbGVkOiAxNQpbICAgODkuNjg5MTE5XSBhbWRncHUgMDAwMDowMTowMC4wOiBhbWRn
cHU6IAogICAgICAgICAgICAgICBsYXN0IG1lc3NhZ2Ugd2FzIGZhaWxlZCByZXQgaXMgNjU1MzUK
WyAgIDg5LjY4OTEyOF0gYW1kZ3B1IDAwMDA6MDE6MDAuMDogYW1kZ3B1OiAKICAgICAgICAgICAg
ICAgbGFzdCBtZXNzYWdlIHdhcyBmYWlsZWQgcmV0IGlzIDY1NTM1ClsgICA4OS42ODkxMzRdIGFt
ZGdwdSAwMDAwOjAxOjAwLjA6IGFtZGdwdTogCiAgICAgICAgICAgICAgIGxhc3QgbWVzc2FnZSB3
YXMgZmFpbGVkIHJldCBpcyA2NTUzNQpbICAgODkuNjg5MTQwXSBhbWRncHUgMDAwMDowMTowMC4w
OiBhbWRncHU6IAogICAgICAgICAgICAgICBsYXN0IG1lc3NhZ2Ugd2FzIGZhaWxlZCByZXQgaXMg
NjU1MzUKWyAgIDg5LjY4OTE0Nl0gYW1kZ3B1IDAwMDA6MDE6MDAuMDogYW1kZ3B1OiAKICAgICAg
ICAgICAgICAgbGFzdCBtZXNzYWdlIHdhcyBmYWlsZWQgcmV0IGlzIDY1NTM1ClsgICA4OS42ODkx
NTJdIGFtZGdwdSAwMDAwOjAxOjAwLjA6IGFtZGdwdTogCiAgICAgICAgICAgICAgIGxhc3QgbWVz
c2FnZSB3YXMgZmFpbGVkIHJldCBpcyA2NTUzNQpbICAgODkuNjg5MTU4XSBhbWRncHUgMDAwMDow
MTowMC4wOiBhbWRncHU6IAogICAgICAgICAgICAgICBsYXN0IG1lc3NhZ2Ugd2FzIGZhaWxlZCBy
ZXQgaXMgNjU1MzUKWyAgIDkwLjUxOTMzOF0gW2RybV0gcGVyZm9ybV9saW5rX3RyYWluaW5nX3dp
dGhfcmV0cmllczogTGluaygxKSB0cmFpbmluZyBhdHRlbXB0IDEgb2YgNCBmYWlsZWQgQCByYXRl
KDEwKSB4IGxhbmUoNCkgOiBmYWlsIHJlYXNvbjooMSkKWyAgMTEwLjUzNzI0MV0gW2RybTphdG9t
X29wX2p1bXAgW2FtZGdwdV1dICpFUlJPUiogYXRvbWJpb3Mgc3R1Y2sgaW4gbG9vcCBmb3IgbW9y
ZSB0aGFuIDIwc2VjcyBhYm9ydGluZwpbICAxMTAuNTM3MzYwXSBbZHJtOmFtZGdwdV9hdG9tX2V4
ZWN1dGVfdGFibGVfbG9ja2VkIFthbWRncHVdXSAqRVJST1IqIGF0b21iaW9zIHN0dWNrIGV4ZWN1
dGluZyBENzA2IChsZW4gODI0LCBXUyAwLCBQUyAwKSBAIDB4RDg4NgpbICAxMTAuNTM3NDQ2XSBb
ZHJtOmFtZGdwdV9hdG9tX2V4ZWN1dGVfdGFibGVfbG9ja2VkIFthbWRncHVdXSAqRVJST1IqIGF0
b21iaW9zIHN0dWNrIGV4ZWN1dGluZyBENUMwIChsZW4gMzI2LCBXUyAwLCBQUyAwKSBAIDB4RDZC
MApbICAxMTAuNTM3NTI2XSBbZHJtOmRjZTExMF9saW5rX2VuY29kZXJfZGlzYWJsZV9vdXRwdXQg
W2FtZGdwdV1dICpFUlJPUiogZGNlMTEwX2xpbmtfZW5jb2Rlcl9kaXNhYmxlX291dHB1dDogRmFp
bGVkIHRvIGV4ZWN1dGUgVkJJT1MgY29tbWFuZCB0YWJsZSEKWyAgMTExLjQxNjUzOV0gW2RybV0g
cGVyZm9ybV9saW5rX3RyYWluaW5nX3dpdGhfcmV0cmllczogTGluaygxKSB0cmFpbmluZyBhdHRl
bXB0IDIgb2YgNCBmYWlsZWQgQCByYXRlKDEwKSB4IGxhbmUoNCkgOiBmYWlsIHJlYXNvbjooMSkK
WyAgMTE3LjY0MDkwOF0gQnVmZmVyIEkvTyBlcnJvciBvbiBkZXYgZG0tMzUsIGxvZ2ljYWwgYmxv
Y2sgNzg2NDMxNjcsIGFzeW5jIHBhZ2UgcmVhZApbICAxMTcuNjQxMDYxXSBCdWZmZXIgSS9PIGVy
cm9yIG9uIGRldiBkbS0zNSwgbG9naWNhbCBibG9jayAxNiwgYXN5bmMgcGFnZSByZWFkClsgIDEz
MS40MzU2NTRdIFtkcm06YXRvbV9vcF9qdW1wIFthbWRncHVdXSAqRVJST1IqIGF0b21iaW9zIHN0
dWNrIGluIGxvb3AgZm9yIG1vcmUgdGhhbiAyMHNlY3MgYWJvcnRpbmcKWyAgMTMxLjQzNTc2N10g
W2RybTphbWRncHVfYXRvbV9leGVjdXRlX3RhYmxlX2xvY2tlZCBbYW1kZ3B1XV0gKkVSUk9SKiBh
dG9tYmlvcyBzdHVjayBleGVjdXRpbmcgRDcwNiAobGVuIDgyNCwgV1MgMCwgUFMgMCkgQCAweEQ4
ODYKWyAgMTMxLjQzNTg1MV0gW2RybTphbWRncHVfYXRvbV9leGVjdXRlX3RhYmxlX2xvY2tlZCBb
YW1kZ3B1XV0gKkVSUk9SKiBhdG9tYmlvcyBzdHVjayBleGVjdXRpbmcgRDVDMCAobGVuIDMyNiwg
V1MgMCwgUFMgMCkgQCAweEQ2QjAKWyAgMTMxLjQzNTkzMF0gW2RybTpkY2UxMTBfbGlua19lbmNv
ZGVyX2Rpc2FibGVfb3V0cHV0IFthbWRncHVdXSAqRVJST1IqIGRjZTExMF9saW5rX2VuY29kZXJf
ZGlzYWJsZV9vdXRwdXQ6IEZhaWxlZCB0byBleGVjdXRlIFZCSU9TIGNvbW1hbmQgdGFibGUhClsg
IDEzMi4zNjcyMTBdIFtkcm1dIHBlcmZvcm1fbGlua190cmFpbmluZ193aXRoX3JldHJpZXM6IExp
bmsoMSkgdHJhaW5pbmcgYXR0ZW1wdCAzIG9mIDQgZmFpbGVkIEAgcmF0ZSgxMCkgeCBsYW5lKDQp
IDogZmFpbCByZWFzb246KDEpClsgIDE1Mi4zOTA0NDFdIFtkcm06YXRvbV9vcF9qdW1wIFthbWRn
cHVdXSAqRVJST1IqIGF0b21iaW9zIHN0dWNrIGluIGxvb3AgZm9yIG1vcmUgdGhhbiAyMHNlY3Mg
YWJvcnRpbmcKWyAgMTUyLjM5MDU1MV0gW2RybTphbWRncHVfYXRvbV9leGVjdXRlX3RhYmxlX2xv
Y2tlZCBbYW1kZ3B1XV0gKkVSUk9SKiBhdG9tYmlvcyBzdHVjayBleGVjdXRpbmcgRDcwNiAobGVu
IDgyNCwgV1MgMCwgUFMgMCkgQCAweEQ4ODYKWyAgMTUyLjM5MDYzNV0gW2RybTphbWRncHVfYXRv
bV9leGVjdXRlX3RhYmxlX2xvY2tlZCBbYW1kZ3B1XV0gKkVSUk9SKiBhdG9tYmlvcyBzdHVjayBl
eGVjdXRpbmcgRDVDMCAobGVuIDMyNiwgV1MgMCwgUFMgMCkgQCAweEQ2QjAKWyAgMTUyLjM5MDcx
NF0gW2RybTpkY2UxMTBfbGlua19lbmNvZGVyX2Rpc2FibGVfb3V0cHV0IFthbWRncHVdXSAqRVJS
T1IqIGRjZTExMF9saW5rX2VuY29kZXJfZGlzYWJsZV9vdXRwdXQ6IEZhaWxlZCB0byBleGVjdXRl
IFZCSU9TIGNvbW1hbmQgdGFibGUhClsgIDE1My4zNjk5MDVdIFtkcm1dIGVuYWJsaW5nIGxpbmsg
MSBmYWlsZWQ6IDE1ClsgIDE1My4zOTAzNDhdIFtkcm06d2FpdF9mb3JfcmVzZXRfdHJpZ2dlcl90
b19vY2N1ci5jb25zdHByb3AuMC5pc3JhLjAgW2FtZGdwdV1dICpFUlJPUiogVEcgY291bnRlciBp
cyBub3QgbW92aW5nIQpbICAxNTMuMzkwNzg5XSBbZHJtOmRjZTExMF9lbmFibGVfdGltaW5nX3N5
bmNocm9uaXphdGlvbiBbYW1kZ3B1XV0gKkVSUk9SKiBHU0w6IFRpbWVvdXQgb24gcmVzZXQgdHJp
Z2dlciEKWyAgMTUzLjU4MTYzN10gLS0tLS0tLS0tLS0tWyBjdXQgaGVyZSBdLS0tLS0tLS0tLS0t
ClsgIDE1My41ODE2MzldIFdBUk5JTkc6IENQVTogMzggUElEOiA5NDkgYXQgZHJpdmVycy9ncHUv
ZHJtL2FtZC9hbWRncHUvLi4vZGlzcGxheS9kYy9jb3JlL2RjLmM6MTI1MiBkY19jb21taXRfc3Rh
dGVfbm9fY2hlY2srMHhjMjUvMHhjZDAgW2FtZGdwdV0KWyAgMTUzLjU4MTczNV0gTW9kdWxlcyBs
aW5rZWQgaW46IHJhaWQwKEUpIHhlbl9hY3BpX3Byb2Nlc3NvcihFKSB4ZW5fZ250ZGV2KEUpIHFy
dHIoRSkgeGVuX2V2dGNobihFKSB4ZW5mcyhFKSB4ZW5fcHJpdmNtZChFKSBidHVzYihFKSBidHJ0
bChFKSBidGJjbShFKSBidGludGVsKEUpIGJ0bXRrKEUpIGludGVsX3JhcGxfbXNyKEUpIGFtZGdw
dShFKykgYmluZm10X21pc2MoRSkgbXQ3OTIxZShFKSBpbnRlbF9yYXBsX2NvbW1vbihFKSBibHVl
dG9vdGgoRSkgZ3B1X3NjaGVkKEUpIG10NzkyMV9jb21tb24oRSkgc25kX2hkYV9jb2RlY19oZG1p
KEUpIHJhZGVvbihFKSBubHNfYXNjaWkoRSkgbXQ3Nl9jb25uYWNfbGliKEUpIGRybV9idWRkeShF
KSBubHNfY3A0MzcoRSkgdXZjdmlkZW8oRSkgZ2hhc2hfY2xtdWxuaV9pbnRlbChFKSB2aWRlbyhF
KSBqaXR0ZXJlbnRyb3B5X3JuZyhFKSBtdDc2KEUpIHNuZF9oZGFfaW50ZWwoRSkgdmZhdChFKSBm
YXQoRSkgdmlkZW9idWYyX3ZtYWxsb2MoRSkgc25kX2ludGVsX2RzcGNmZyhFKSBzaGEyNTZfc3Nz
ZTMoRSkgc25kX3VzYl9hdWRpbyhFKSBzaGE1MTJfc3NzZTMoRSkgc25kX2ludGVsX3Nkd19hY3Bp
KEUpIHZpZGVvYnVmMl9tZW1vcHMoRSkgc2hhNTEyX2dlbmVyaWMoRSkgZHJtX2Rpc3BsYXlfaGVs
cGVyKEUpIHZpZGVvYnVmMl92NGwyKEUpIG1hYzgwMjExKEUpIHNoYTFfc3NzZTMoRSkgc25kX3Vz
Ym1pZGlfbGliKEUpIGN0cihFKSBzbmRfaGRhX2NvZGVjKEUpIGNlYyhFKSB2aWRlb2J1ZjJfY29t
bW9uKEUpIGRyYmcoRSkgbGliYXJjNChFKSBzbmRfcmF3bWlkaShFKSBhbnNpX2Nwcm5nKEUpIHZp
ZGVvZGV2KEUpIHNuZF9zZXFfZGV2aWNlKEUpIHJjX2NvcmUoRSkgc25kX2hkYV9jb3JlKEUpIGFl
c25pX2ludGVsKEUpIGVjZGhfZ2VuZXJpYyhFKSBleHQ0KEUpIGNmZzgwMjExKEUpIGRybV90dG1f
aGVscGVyKEUpIHNuZF9od2RlcChFKSBlY2MoRSkgY3J5cHRvX3NpbWQoRSkgc3A1MTAwX3RjbyhF
KQpbICAxNTMuNTgxNzU5XSAgc25kX3BjbShFKSB3bWlfYm1vZihFKSBtYmNhY2hlKEUpIGNyeXB0
ZChFKSBjcmMxNihFKSBtYyhFKSBwY3Nwa3IoRSkgc25kX3RpbWVyKEUpIHR0bShFKSByZmtpbGwo
RSkgc25kKEUpIGRybV9rbXNfaGVscGVyKEUpIGsxMHRlbXAoRSkgY2NwKEUpIHdhdGNoZG9nKEUp
IGkyY19hbGdvX2JpdChFKSBzb3VuZGNvcmUoRSkgamJkMihFKSBidXR0b24oRSkgZXZkZXYoRSkg
am95ZGV2KEUpIHNnKEUpIG1zcihFKSBmdXNlKEUpIGxvb3AoRSkgZWZpX3BzdG9yZShFKSBkcm0o
RSkgY29uZmlnZnMoRSkgZWZpdmFyZnMoRSkgaXBfdGFibGVzKEUpIHhfdGFibGVzKEUpIGF1dG9m
czQoRSkgYnRyZnMoRSkgYmxha2UyYl9nZW5lcmljKEUpIHpzdGRfY29tcHJlc3MoRSkgZG1fY2Fj
aGUoRSkgZG1fYmlvX3ByaXNvbihFKSBkbV9wZXJzaXN0ZW50X2RhdGEoRSkgaGlkX2xvZ2l0ZWNo
X2hpZHBwKEUpIGhpZF9sb2dpdGVjaF9kaihFKSByYWlkMShFKSBzZXMoRSkgZG1faW50ZWdyaXR5
KEUpIGVuY2xvc3VyZShFKSBzY3NpX3RyYW5zcG9ydF9zYXMoRSkgZG1fYnVmaW8oRSkgZG1fcmFp
ZChFKSByYWlkNDU2KEUpIGFzeW5jX3JhaWQ2X3JlY292KEUpIGFzeW5jX21lbWNweShFKSBhc3lu
Y19wcShFKSBhc3luY194b3IoRSkgYXN5bmNfdHgoRSkgbWRfbW9kKEUpIHhvcihFKSByYWlkNl9w
cShFKSBsaWJjcmMzMmMoRSkgY3JjMzJjX2dlbmVyaWMoRSkgaGlkX2dlbmVyaWMoRSkgZG1fbW9k
KEUpIHVzYmhpZChFKSB1YXMoRSkgaGlkKEUpIHVzYl9zdG9yYWdlKEUpIHNkX21vZChFKSBudm1l
KEUpIG52bWVfY29yZShFKSB0MTBfcGkoRSkgYWhjaShFKSBjcmM2NF9yb2Nrc29mdChFKSB4aGNp
X3BjaShFKSBsaWJhaGNpKEUpIGNyYzY0KEUpIHI4MTY5KEUpIHhoY2lfaGNkKEUpIGNyY190MTBk
aWYoRSkgcmVhbHRlayhFKSBsaWJhdGEoRSkgYXRsYW50aWMoRSkgY3JjdDEwZGlmX2dlbmVyaWMo
RSkgbWRpb19kZXZyZXMoRSkgdXNiY29yZShFKQpbICAxNTMuNTgxNzg1XSAgZ3Bpb19hbWRwdChF
KSBjcmMzMl9wY2xtdWwoRSkgc2NzaV9tb2QoRSkgY3JjdDEwZGlmX3BjbG11bChFKSBjcmMzMmNf
aW50ZWwoRSkgbGlicGh5KEUpIGNyY3QxMGRpZl9jb21tb24oRSkgbWFjc2VjKEUpIHNjc2lfY29t
bW9uKEUpIGkyY19waWl4NChFKSB1c2JfY29tbW9uKEUpIHdtaShFKSBncGlvX2dlbmVyaWMoRSkK
WyAgMTUzLjU4MTc5MF0gQ1BVOiAzOCBQSUQ6IDk0OSBDb21tOiAodWRldi13b3JrZXIpIFRhaW50
ZWQ6IEcgICAgICAgIFcgICBFICAgICAgNi4xLjY5ICMxMCAKWyAgMTUzLjU4MTc5Ml0gSGFyZHdh
cmUgbmFtZTogVG8gQmUgRmlsbGVkIEJ5IE8uRS5NLiBUUlg1MCBXUy9UUlg1MCBXUywgQklPUyA3
LjA4IDAxLzE2LzIwMjQKWyAgMTUzLjU4MTc5Ml0gUklQOiAwMDEwOmRjX2NvbW1pdF9zdGF0ZV9u
b19jaGVjaysweGMyNS8weGNkMCBbYW1kZ3B1XQpbICAxNTMuNTgxODY4XSBDb2RlOiBkOSA1NiBi
ZSBlOSBiMiBmNiBmZiBmZiA0YyA4OSBlNyBlOCA0NSBmMyAwMCAwMCA0YyA4OSBlNyBlOCBmZCA1
MyAyZSBiZSBlOSAzOSBmZiBmZiBmZiA4MCBiOCA4MCAwMyAwMCAwMCAwMCAwZiA4NCBmNiBmZCBm
ZiBmZiA8MGY+IDBiIGU5IGVmIGZkIGZmIGZmIDY1IDhiIDA1IGVkIGQ5IGU1IDNkIDg5IGMwIDQ4
IDBmIGEzIDA1IGEzIGUzClsgIDE1My41ODE4NjhdIFJTUDogMDAxODpmZmZmYzkwMDAwZTlmM2U4
IEVGTEFHUzogMDAwMTAyMDIKWyAgMTUzLjU4MTg2OV0gUkFYOiBmZmZmODg4MTNiZTQ0ODAwIFJC
WDogZmZmZjg4ODE1MDI0MDAwMCBSQ1g6IDAwMDAwMDAwMDAwMDAwMjYKWyAgMTUzLjU4MTg3MF0g
UkRYOiAwMDAwMDAwMDAwMDAxMGU2IFJTSTogMDAwMDAwMDAwMDAwMDAyNiBSREk6IDAwMDAwMDll
YmRmOWZjNTgKWyAgMTUzLjU4MTg3MF0gUkJQOiBmZmZmODg4MTAzYjYwMDAwIFIwODogMDAwMDAw
MDAwMDAwMDAyNiBSMDk6IDAwMDAwMDAwMDAwMDEwNGEKWyAgMTUzLjU4MTg3MV0gUjEwOiAwMDAw
MDAwMDAwMDAwMDAwIFIxMTogMDAwMDAwMDAwMDAwMDAwMCBSMTI6IGZmZmY4ODgxNTAyNDAxZTgK
WyAgMTUzLjU4MTg3MV0gUjEzOiAwMDAwMDAwMDAwMDAwMDAwIFIxNDogMDAwMDAwMDAwMDAwMDAw
MSBSMTU6IGZmZmY4ODgxNTAyNDM2MDgKWyAgMTUzLjU4MTg3M10gRlM6ICAwMDAwN2Y3YzQ2OTkz
OGMwKDAwMDApIEdTOmZmZmY4ODgyNTU3ODAwMDAoMDAwMCkga25sR1M6MDAwMDAwMDAwMDAwMDAw
MApbICAxNTMuNTgxODc0XSBDUzogIDAwMTAgRFM6IDAwMDAgRVM6IDAwMDAgQ1IwOiAwMDAwMDAw
MDgwMDUwMDMzClsgIDE1My41ODE4NzVdIENSMjogMDAwMDdmYzlkY2NkMDcwMCBDUjM6IDAwMDAw
MDAxMGJjMzYwMDQgQ1I0OiAwMDAwMDAwMDAwNzcwZWUwClsgIDE1My41ODE4NzZdIFBLUlU6IDU1
NTU1NTU0ClsgIDE1My41ODE4NzddIENhbGwgVHJhY2U6ClsgIDE1My41ODE4NzldICA8VEFTSz4K
WyAgMTUzLjU4MTg4MV0gID8gX193YXJuKzB4N2QvMHhjMApbICAxNTMuNTgxODg0XSAgPyBkY19j
b21taXRfc3RhdGVfbm9fY2hlY2srMHhjMjUvMHhjZDAgW2FtZGdwdV0KWyAgMTUzLjU4MTk1OF0g
ID8gcmVwb3J0X2J1ZysweGUyLzB4MTUwClsgIDE1My41ODE5NjFdICA/IGhhbmRsZV9idWcrMHg0
MS8weDcwClsgIDE1My41ODE5NjNdICA/IGV4Y19pbnZhbGlkX29wKzB4MTMvMHg2MApbICAxNTMu
NTgxOTY0XSAgPyBhc21fZXhjX2ludmFsaWRfb3ArMHgxNi8weDIwClsgIDE1My41ODE5NjddICA/
IGRjX2NvbW1pdF9zdGF0ZV9ub19jaGVjaysweGMyNS8weGNkMCBbYW1kZ3B1XQpbICAxNTMuNTgy
MDM5XSAgPyBkY19jb21taXRfc3RhdGVfbm9fY2hlY2srMHg5ZWEvMHhjZDAgW2FtZGdwdV0KWyAg
MTUzLjU4MjExMV0gIGRjX2NvbW1pdF9zdGF0ZSsweDEwNy8weDEyMCBbYW1kZ3B1XQpbICAxNTMu
NTgyMTg0XSAgYW1kZ3B1X2RtX2F0b21pY19jb21taXRfdGFpbCsweDYzMC8weDM3OTAgW2FtZGdw
dV0KWyAgMTUzLjU4MjI4NF0gID8gZnJlZV91bnJlZl9wYWdlX2NvbW1pdCsweDdjLzB4MTcwClsg
IDE1My41ODIyODddICA/IF9yYXdfc3Bpbl91bmxvY2srMHhhLzB4MzAKWyAgMTUzLjU4MjI4OF0g
ID8gZnJlZV91bnJlZl9wYWdlKzB4MTVmLzB4MWQwClsgIDE1My41ODIyODldICA/IHVwZGF0ZV9s
b2FkX2F2ZysweDdlLzB4NzgwClsgIDE1My41ODIyOTJdICA/IHBzaV9ncm91cF9jaGFuZ2UrMHgx
NDUvMHgzNjAKWyAgMTUzLjU4MjI5M10gID8gcHNpX3Rhc2tfc3dpdGNoKzB4ZDIvMHgyMzAKWyAg
MTUzLjU4MjI5NF0gID8gX3Jhd19zcGluX3VubG9jaysweGEvMHgzMApbICAxNTMuNTgyMjk1XSAg
PyBmaW5pc2hfdGFza19zd2l0Y2guaXNyYS4wKzB4OTAvMHgyZDAKWyAgMTUzLjU4MjI5N10gID8g
X19zY2hlZHVsZSsweDM1NS8weDllMApbICAxNTMuNTgyMjk3XSAgPyBzY2hlZHVsZSsweDVhLzB4
ZDAKWyAgMTUzLjU4MjI5OF0gID8gc2NoZWR1bGVfdGltZW91dCsweDExOC8weDE1MApbICAxNTMu
NTgyMjk5XSAgPyBfcmF3X3NwaW5fdW5sb2NrX2lycXJlc3RvcmUrMHhhLzB4NDAKWyAgMTUzLjU4
MjMwMF0gID8gZG1hX2ZlbmNlX2RlZmF1bHRfd2FpdCsweDhmLzB4MjYwClsgIDE1My41ODIzMDNd
ICBjb21taXRfdGFpbCsweDk0LzB4MTMwIFtkcm1fa21zX2hlbHBlcl0KWyAgMTUzLjU4MjMxMl0g
IGRybV9hdG9taWNfaGVscGVyX2NvbW1pdCsweDExMi8weDE0MCBbZHJtX2ttc19oZWxwZXJdClsg
IDE1My41ODIzMThdICBkcm1fYXRvbWljX2NvbW1pdCsweDk2LzB4YzAgW2RybV0KWyAgMTUzLjU4
MjMzM10gID8gZHJtX3BsYW5lX2dldF9kYW1hZ2VfY2xpcHMuY29sZCsweDFjLzB4MWMgW2RybV0K
WyAgMTUzLjU4MjM0Nl0gIGRybV9jbGllbnRfbW9kZXNldF9jb21taXRfYXRvbWljKzB4MjA2LzB4
MjUwIFtkcm1dClsgIDE1My41ODIzNzddICBkcm1fY2xpZW50X21vZGVzZXRfY29tbWl0X2xvY2tl
ZCsweDU2LzB4MTYwIFtkcm1dClsgIDE1My41ODIzODhdICBkcm1fY2xpZW50X21vZGVzZXRfY29t
bWl0KzB4MjEvMHg0MCBbZHJtXQpbICAxNTMuNTgyNDAwXSAgZHJtX2ZiX2hlbHBlcl9zZXRfcGFy
KzB4OWUvMHhlMCBbZHJtX2ttc19oZWxwZXJdClsgIDE1My41ODI0MDddICBzZXRfY29uMmZiX21h
cCsweDE4Zi8weDNmMApbICAxNTMuNTgyNDEwXSAgZmJjb25fZmJfcmVnaXN0ZXJlZCsweDliLzB4
MTQwClsgIDE1My41ODI0MTJdICByZWdpc3Rlcl9mcmFtZWJ1ZmZlcisweDFjOS8weDMwMApbICAx
NTMuNTgyNDE0XSAgX19kcm1fZmJfaGVscGVyX2luaXRpYWxfY29uZmlnX2FuZF91bmxvY2srMHgz
ODgvMHg1MTAgW2RybV9rbXNfaGVscGVyXQpbICAxNTMuNTgyNDIwXSAgZHJtX2ZiZGV2X2NsaWVu
dF9ob3RwbHVnKzB4MTg2LzB4MjIwIFtkcm1fa21zX2hlbHBlcl0KWyAgMTUzLjU4MjQyNl0gIGRy
bV9jbGllbnRfcmVnaXN0ZXIrMHg3NS8weGIwIFtkcm1dClsgIDE1My41ODI0MzhdICBhbWRncHVf
cGNpX3Byb2JlKzB4M2RiLzB4NDAwIFthbWRncHVdClsgIDE1My41ODI1MzBdICBsb2NhbF9wY2lf
cHJvYmUrMHg0MS8weDgwClsgIDE1My41ODI1MzJdICBwY2lfZGV2aWNlX3Byb2JlKzB4YzMvMHgy
NDAKWyAgMTUzLjU4MjUzNF0gIHJlYWxseV9wcm9iZSsweGRlLzB4MzgwClsgIDE1My41ODI1MzZd
ICA/IHBtX3J1bnRpbWVfYmFycmllcisweDUwLzB4OTAKWyAgMTUzLjU4MjUzOF0gIF9fZHJpdmVy
X3Byb2JlX2RldmljZSsweDc4LzB4MTIwClsgIDE1My41ODI1MzldICBkcml2ZXJfcHJvYmVfZGV2
aWNlKzB4MWYvMHg5MApbICAxNTMuNTgyNTQwXSAgX19kcml2ZXJfYXR0YWNoKzB4Y2UvMHgxYzAK
WyAgMTUzLjU4MjU0Ml0gID8gX19kZXZpY2VfYXR0YWNoX2RyaXZlcisweDExMC8weDExMApbICAx
NTMuNTgyNTQzXSAgYnVzX2Zvcl9lYWNoX2RldisweDg3LzB4ZDAKWyAgMTUzLjU4MjU0NF0gIGJ1
c19hZGRfZHJpdmVyKzB4MWFlLzB4MjAwClsgIDE1My41ODI1NDVdICBkcml2ZXJfcmVnaXN0ZXIr
MHg4OS8weGUwClsgIDE1My41ODI1NDddICA/IDB4ZmZmZmZmZmZjMjZhYTAwMApbICAxNTMuNTgy
NTQ3XSAgZG9fb25lX2luaXRjYWxsKzB4NTkvMHgyMjAKWyAgMTUzLjU4MjU1MF0gIGRvX2luaXRf
bW9kdWxlKzB4NGEvMHgxZjAKWyAgMTUzLjU4MjU1M10gIF9fZG9fc3lzX2Zpbml0X21vZHVsZSsw
eGFjLzB4MTIwClsgIDE1My41ODI1NTVdICBkb19zeXNjYWxsXzY0KzB4NWIvMHhjMApbICAxNTMu
NTgyNTU2XSAgPyBzeXNjYWxsX2V4aXRfdG9fdXNlcl9tb2RlKzB4MjcvMHg0MApbICAxNTMuNTgy
NTU4XSAgPyBkb19zeXNjYWxsXzY0KzB4NjcvMHhjMApbICAxNTMuNTgyNTU5XSAgPyBzeXNjYWxs
X2V4aXRfdG9fdXNlcl9tb2RlKzB4MjcvMHg0MApbICAxNTMuNTgyNTU5XSAgPyBkb19zeXNjYWxs
XzY0KzB4NjcvMHhjMApbICAxNTMuNTgyNTYwXSAgPyBleGl0X3RvX3VzZXJfbW9kZV9wcmVwYXJl
KzB4NDAvMHgxZTAKWyAgMTUzLjU4MjU2Ml0gID8gc3lzY2FsbF9leGl0X3RvX3VzZXJfbW9kZSsw
eDI3LzB4NDAKWyAgMTUzLjU4MjU2M10gID8gZG9fc3lzY2FsbF82NCsweDY3LzB4YzAKWyAgMTUz
LjU4MjU2NV0gIGVudHJ5X1NZU0NBTExfNjRfYWZ0ZXJfaHdmcmFtZSsweDY0LzB4Y2UKWyAgMTUz
LjU4MjU2Nl0gUklQOiAwMDMzOjB4N2Y3YzQ2YzFlNTU5ClsgIDE1My41ODI1NjddIENvZGU6IDA4
IDg5IGU4IDViIDVkIGMzIDY2IDJlIDBmIDFmIDg0IDAwIDAwIDAwIDAwIDAwIDkwIDQ4IDg5IGY4
IDQ4IDg5IGY3IDQ4IDg5IGQ2IDQ4IDg5IGNhIDRkIDg5IGMyIDRkIDg5IGM4IDRjIDhiIDRjIDI0
IDA4IDBmIDA1IDw0OD4gM2QgMDEgZjAgZmYgZmYgNzMgMDEgYzMgNDggOGIgMGQgNzcgMDggMGQg
MDAgZjcgZDggNjQgODkgMDEgNDgKWyAgMTUzLjU4MjU2OF0gUlNQOiAwMDJiOjAwMDA3ZmZmM2Fm
MmQ2MDggRUZMQUdTOiAwMDAwMDI0NiBPUklHX1JBWDogMDAwMDAwMDAwMDAwMDEzOQpbICAxNTMu
NTgyNTY5XSBSQVg6IGZmZmZmZmZmZmZmZmZmZGEgUkJYOiAwMDAwNTYwYzJiMzRiNGUwIFJDWDog
MDAwMDdmN2M0NmMxZTU1OQpbICAxNTMuNTgyNTcwXSBSRFg6IDAwMDAwMDAwMDAwMDAwMDAgUlNJ
OiAwMDAwN2Y3YzQ2ZGIxZWZkIFJESTogMDAwMDAwMDAwMDAwMDAxNwpbICAxNTMuNTgyNTcwXSBS
QlA6IDAwMDA3ZjdjNDZkYjFlZmQgUjA4OiAwMDAwMDAwMDAwMDAwMDAwIFIwOTogMDAwMDU2MGMy
YjI1MzM3MApbICAxNTMuNTgyNTcwXSBSMTA6IDAwMDAwMDAwMDAwMDAwMTcgUjExOiAwMDAwMDAw
MDAwMDAwMjQ2IFIxMjogMDAwMDAwMDAwMDAyMDAwMApbICAxNTMuNTgyNTcxXSBSMTM6IDAwMDAw
MDAwMDAwMDAwMDAgUjE0OiAwMDAwNTYwYzJiMzEyNGQwIFIxNTogMDAwMDU2MGMyYThjNmVjMQpb
ICAxNTMuNTgyNTcyXSAgPC9UQVNLPgpbICAxNTMuNTgyNTcyXSAtLS1bIGVuZCB0cmFjZSAwMDAw
MDAwMDAwMDAwMDAwIF0tLS0KWyAgMTUzLjc3MDg4M10gYW1kZ3B1IDAwMDA6MDE6MDAuMDogYW1k
Z3B1OiAKICAgICAgICAgICAgICAgbGFzdCBtZXNzYWdlIHdhcyBmYWlsZWQgcmV0IGlzIDY1NTM1
ClsgIDE1My43NzA4OTVdIGFtZGdwdSAwMDAwOjAxOjAwLjA6IGFtZGdwdTogCiAgICAgICAgICAg
ICAgIGxhc3QgbWVzc2FnZSB3YXMgZmFpbGVkIHJldCBpcyA2NTUzNQpbICAxNTMuNzcwOTAyXSBh
bWRncHUgMDAwMDowMTowMC4wOiBhbWRncHU6IAogICAgICAgICAgICAgICBsYXN0IG1lc3NhZ2Ug
d2FzIGZhaWxlZCByZXQgaXMgNjU1MzUKWyAgMTUzLjc3MDkwN10gYW1kZ3B1IDAwMDA6MDE6MDAu
MDogYW1kZ3B1OiAKICAgICAgICAgICAgICAgbGFzdCBtZXNzYWdlIHdhcyBmYWlsZWQgcmV0IGlz
IDY1NTM1ClsgIDE1My43NzA5MTNdIGFtZGdwdSAwMDAwOjAxOjAwLjA6IGFtZGdwdTogCiAgICAg
ICAgICAgICAgIGxhc3QgbWVzc2FnZSB3YXMgZmFpbGVkIHJldCBpcyA2NTUzNQpbICAxNTMuNzcw
OTIwXSBhbWRncHUgMDAwMDowMTowMC4wOiBhbWRncHU6IAogICAgICAgICAgICAgICBsYXN0IG1l
c3NhZ2Ugd2FzIGZhaWxlZCByZXQgaXMgNjU1MzUKWyAgMTUzLjc3MDkyNl0gYW1kZ3B1IDAwMDA6
MDE6MDAuMDogYW1kZ3B1OiAKICAgICAgICAgICAgICAgbGFzdCBtZXNzYWdlIHdhcyBmYWlsZWQg
cmV0IGlzIDY1NTM1Cg==
--0000000000006f57f0060f47a720
Content-Type: text/x-log; charset="US-ASCII"; name="xenboot.log"
Content-Disposition: attachment; filename="xenboot.log"
Content-Transfer-Encoding: base64
Content-ID: <f_lrkc3l9z1>
X-Attachment-Id: f_lrkc3l9z1

KFhFTikgWGVuIHZlcnNpb24gNC4xNy4zLXByZSAoRGViaWFuIDQuMTcuMis3Ni1nZTFmOWNiMTZl
Mi0xfmRlYjEydTEpIChwa2cteGVuLWRldmVsQGxpc3RzLmFsaW90aC5kZWJpYW4ub3JnKSAoeDg2
XzY0LWxpbnV4LWdudS1nY2MgKERlYmlhbiAxMi4yLjAtMTQpIDEyLjIuMCkgZGVidWc9biBTYXQg
RGVjICAyIDE2OjU4OjA4IFVUQyAyMDIzDShYRU4pIGJ1aWxkLWlkOiA1ZjBhZTkxZWI2YmQwOWNk
NjM2ZThiNzNjNmU2OWZlZQ0oWEVOKSBDb25zb2xlIG91dHB1dCBpcyBzeW5jaHJvbm91cy4NKFhF
TikgQm9vdGxvYWRlcjogRUZJDShYRU4pIENvbW1hbmQgbGluZTogZG9tMF9tZW09OEcsbWF4OjhH
IGxvZ2x2bD1hbGwgZTgyMC12ZXJib3NlPXRydWUgY29uc29sZV90b19yaW5nIHN5bmNfY29uc29s
ZSBndWVzdF9sb2dsdmw9YWxsIGNvbTE9MTE1MjAwLDhuMSBjb25zb2xlPWNvbTEsdmdhIGRvbTA9
cHZoDShYRU4pIFhlbiBpbWFnZSBsb2FkIGJhc2UgYWRkcmVzczogMHg5NGMwMDAwMA0oWEVOKSBW
aWRlbyBpbmZvcm1hdGlvbjoNKFhFTikgIFZHQSBpcyBncmFwaGljcyBtb2RlIDgwMHg2MDAsIDMy
IGJwcA0oWEVOKSAgVkJFL0REQyBtZXRob2RzOiBub25lOyBFRElEIHRyYW5zZmVyIHRpbWU6IDAg
c2Vjb25kcw0oWEVOKSBEaXNjIGluZm9ybWF0aW9uOg0oWEVOKSAgRm91bmQgMCBNQlIgc2lnbmF0
dXJlcw0oWEVOKSAgRm91bmQgNiBFREQgaW5mb3JtYXRpb24gc3RydWN0dXJlcw0oWEVOKSBDUFUg
VmVuZG9yOiBBTUQsIEZhbWlseSAyNSAoMHgxOSksIE1vZGVsIDI0ICgweDE4KSwgU3RlcHBpbmcg
MSAocmF3IDAwYTEwZjgxKQ0oWEVOKSBFbmFibGluZyBTdXBlcnZpc29yIFNoYWRvdyBTdGFja3MN
KFhFTikgSW5pdGlhbCBFRkkgUkFNIG1hcDoNKFhFTikgIFswMDAwMDAwMDAwMDAwMDAwLCAwMDAw
MDAwMDAwMDlmZmZmXSAodXNhYmxlKQ0oWEVOKSAgWzAwMDAwMDAwMDAxMDAwMDAsIDAwMDAwMDAw
MDNmZmZmZmZdICh1c2FibGUpDShYRU4pICBbMDAwMDAwMDAwNDAwMDAwMCwgMDAwMDAwMDAwNDA0
NWZmZl0gKEFDUEkgTlZTKQ0oWEVOKSAgWzAwMDAwMDAwMDQwNDYwMDAsIDAwMDAwMDAwMDlhZmVm
ZmZdICh1c2FibGUpDShYRU4pICBbMDAwMDAwMDAwOWFmZjAwMCwgMDAwMDAwMDAwOWZmZmZmZl0g
KHJlc2VydmVkKQ0oWEVOKSAgWzAwMDAwMDAwMGEwMDAwMDAsIDAwMDAwMDAwMGFmZmZmZmZdICh1
c2FibGUpDShYRU4pICBbMDAwMDAwMDAwYjAwMDAwMCwgMDAwMDAwMDAwYjAyMGZmZl0gKHJlc2Vy
dmVkKQ0oWEVOKSAgWzAwMDAwMDAwMGIwMjEwMDAsIDAwMDAwMDAwYTA0ZThmZmZdICh1c2FibGUp
DShYRU4pICBbMDAwMDAwMDBhMDRlOTAwMCwgMDAwMDAwMDBhNjRlOGZmZl0gKHJlc2VydmVkKQ0o
WEVOKSAgWzAwMDAwMDAwYTY0ZTkwMDAsIDAwMDAwMDAwYTc0N2VmZmZdIChBQ1BJIGRhdGEpDShY
RU4pICBbMDAwMDAwMDBhNzQ3ZjAwMCwgMDAwMDAwMDBhOTQ3ZWZmZl0gKEFDUEkgTlZTKQ0oWEVO
KSAgWzAwMDAwMDAwYTk0N2YwMDAsIDAwMDAwMDAwYWRkZmVmZmZdIChyZXNlcnZlZCkNKFhFTikg
IFswMDAwMDAwMGFkZGZmMDAwLCAwMDAwMDAwMGFmZmZhZmZmXSAodXNhYmxlKQ0oWEVOKSAgWzAw
MDAwMDAwYWZmZmIwMDAsIDAwMDAwMDAwYWZmZmZmZmZdIChyZXNlcnZlZCkNKFhFTikgIFswMDAw
MDAwMTAwMDAwMDAwLCAwMDAwMDA0MDNkYmJmZmZmXSAodXNhYmxlKQ0oWEVOKSAgWzAwMDAwMDAw
MDAwYTAwMDAsIDAwMDAwMDAwMDAwZmZmZmZdIChyZXNlcnZlZCkNKFhFTikgIFswMDAwMDAwMGIw
MDAwMDAwLCAwMDAwMDAwMGJmZmZmZmZmXSAocmVzZXJ2ZWQpDShYRU4pICBbMDAwMDAwMDBkZjIw
MDAwMCwgMDAwMDAwMDBkZjJmZmZmZl0gKHJlc2VydmVkKQ0oWEVOKSAgWzAwMDAwMDAwZTAwMDAw
MDAsIDAwMDAwMDAwZWZmZmZmZmZdIChyZXNlcnZlZCkNKFhFTikgIFswMDAwMDAwMGZlYTAwMDAw
LCAwMDAwMDAwMGZlYWZmZmZmXSAocmVzZXJ2ZWQpDShYRU4pICBbMDAwMDAwMDBmZWMwMDAwMCwg
MDAwMDAwMDBmZWMwMGZmZl0gKHJlc2VydmVkKQ0oWEVOKSAgWzAwMDAwMDAwZmVjMTAwMDAsIDAw
MDAwMDAwZmVjMTBmZmZdIChyZXNlcnZlZCkNKFhFTikgIFswMDAwMDAwMGZlYzMwMDAwLCAwMDAw
MDAwMGZlYzMwZmZmXSAocmVzZXJ2ZWQpDShYRU4pICBbMDAwMDAwMDBmZWQwMDAwMCwgMDAwMDAw
MDBmZWQwMGZmZl0gKHJlc2VydmVkKQ0oWEVOKSAgWzAwMDAwMDAwZmVkNDAwMDAsIDAwMDAwMDAw
ZmVkNDRmZmZdIChyZXNlcnZlZCkNKFhFTikgIFswMDAwMDAwMGZlZDgwMDAwLCAwMDAwMDAwMGZl
ZDhmZmZmXSAocmVzZXJ2ZWQpDShYRU4pICBbMDAwMDAwMDBmZjAwMDAwMCwgMDAwMDAwMDBmZmZm
ZmZmZl0gKHJlc2VydmVkKQ0oWEVOKSAgWzAwMDAwMDQwM2RiYzAwMDAsIDAwMDAwMDQwM2ZmZmZm
ZmZdIChyZXNlcnZlZCkNKFhFTikgRUZJIFJBTSBtYXA6DShYRU4pICBbMDAwMDAwMDAwMDAwMDAw
MCwgMDAwMDAwMDAwMDA5ZmZmZl0gKHVzYWJsZSkNKFhFTikgIFswMDAwMDAwMDAwMGEwMDAwLCAw
MDAwMDAwMDAwMGZmZmZmXSAocmVzZXJ2ZWQpDShYRU4pICBbMDAwMDAwMDAwMDEwMDAwMCwgMDAw
MDAwMDAwM2ZmZmZmZl0gKHVzYWJsZSkNKFhFTikgIFswMDAwMDAwMDA0MDAwMDAwLCAwMDAwMDAw
MDA0MDQ1ZmZmXSAoQUNQSSBOVlMpDShYRU4pICBbMDAwMDAwMDAwNDA0NjAwMCwgMDAwMDAwMDAw
OWFmZWZmZl0gKHVzYWJsZSkNKFhFTikgIFswMDAwMDAwMDA5YWZmMDAwLCAwMDAwMDAwMDA5ZmZm
ZmZmXSAocmVzZXJ2ZWQpDShYRU4pICBbMDAwMDAwMDAwYTAwMDAwMCwgMDAwMDAwMDAwYWZmZmZm
Zl0gKHVzYWJsZSkNKFhFTikgIFswMDAwMDAwMDBiMDAwMDAwLCAwMDAwMDAwMDBiMDIwZmZmXSAo
cmVzZXJ2ZWQpDShYRU4pICBbMDAwMDAwMDAwYjAyMTAwMCwgMDAwMDAwMDBhMDRlOGZmZl0gKHVz
YWJsZSkNKFhFTikgIFswMDAwMDAwMGEwNGU5MDAwLCAwMDAwMDAwMGE2NGU4ZmZmXSAocmVzZXJ2
ZWQpDShYRU4pICBbMDAwMDAwMDBhNjRlOTAwMCwgMDAwMDAwMDBhNzQ3ZWZmZl0gKEFDUEkgZGF0
YSkNKFhFTikgIFswMDAwMDAwMGE3NDdmMDAwLCAwMDAwMDAwMGE5NDdlZmZmXSAoQUNQSSBOVlMp
DShYRU4pICBbMDAwMDAwMDBhOTQ3ZjAwMCwgMDAwMDAwMDBhZGRmZWZmZl0gKHJlc2VydmVkKQ0o
WEVOKSAgWzAwMDAwMDAwYWRkZmYwMDAsIDAwMDAwMDAwYWZmZmFmZmZdICh1c2FibGUpDShYRU4p
ICBbMDAwMDAwMDBhZmZmYjAwMCwgMDAwMDAwMDBiZmZmZmZmZl0gKHJlc2VydmVkKQ0oWEVOKSAg
WzAwMDAwMDAwZGYyMDAwMDAsIDAwMDAwMDAwZGYyZmZmZmZdIChyZXNlcnZlZCkNKFhFTikgIFsw
MDAwMDAwMGUwMDAwMDAwLCAwMDAwMDAwMGVmZmZmZmZmXSAocmVzZXJ2ZWQpDShYRU4pICBbMDAw
MDAwMDBmZWEwMDAwMCwgMDAwMDAwMDBmZWFmZmZmZl0gKHJlc2VydmVkKQ0oWEVOKSAgWzAwMDAw
MDAwZmVjMDAwMDAsIDAwMDAwMDAwZmVjMDBmZmZdIChyZXNlcnZlZCkNKFhFTikgIFswMDAwMDAw
MGZlYzEwMDAwLCAwMDAwMDAwMGZlYzEwZmZmXSAocmVzZXJ2ZWQpDShYRU4pICBbMDAwMDAwMDBm
ZWMzMDAwMCwgMDAwMDAwMDBmZWMzMGZmZl0gKHJlc2VydmVkKQ0oWEVOKSAgWzAwMDAwMDAwZmVk
MDAwMDAsIDAwMDAwMDAwZmVkMDBmZmZdIChyZXNlcnZlZCkNKFhFTikgIFswMDAwMDAwMGZlZDQw
MDAwLCAwMDAwMDAwMGZlZDQ0ZmZmXSAocmVzZXJ2ZWQpDShYRU4pICBbMDAwMDAwMDBmZWQ4MDAw
MCwgMDAwMDAwMDBmZWQ4ZmZmZl0gKHJlc2VydmVkKQ0oWEVOKSAgWzAwMDAwMDAwZmYwMDAwMDAs
IDAwMDAwMDAwZmZmZmZmZmZdIChyZXNlcnZlZCkNKFhFTikgIFswMDAwMDAwMTAwMDAwMDAwLCAw
MDAwMDA0MDNkYmJmZmZmXSAodXNhYmxlKQ0oWEVOKSAgWzAwMDAwMDQwM2RiYzAwMDAsIDAwMDAw
MDQwM2ZmZmZmZmZdIChyZXNlcnZlZCkNKFhFTikgQUNQSTogUlNEUCBBOTQ2MzAxNCwgMDAyNCAo
cjIgQU1EICAgKQ0oWEVOKSBBQ1BJOiBYU0RUIEE5NDYyNzI4LCAwMTFDIChyMSBBTUQgICAgICBB
IE0gSSAgICAgICAgIDEgQU1JICAgMTAwMDAxMykNKFhFTikgQUNQSTogRkFDUCBBNzQ3QzAwMCwg
MDExNCAocjYgQU1EICAgICAgQSBNIEkgICAgICAgICAxIEFNSSAgICAgMTAwMTMpDShYRU4pIEFD
UEk6IERTRFQgQTc0NkUwMDAsIEQyRjYgKHIyIEFNRCAgICAgIEEgTSBJICAgICAgICAgMSBJTlRM
IDIwMjMwMzMxKQ0oWEVOKSBBQ1BJOiBGQUNTIEE5NDVBMDAwLCAwMDQwDShYRU4pIEFDUEk6IFNT
RFQgQTc0N0UwMDAsIDA5Q0MgKHIyICAgIEFNRCBCT1VMREVSRyAgICAgICAgMiBNU0ZUICA0MDAw
MDAwKQ0oWEVOKSBBQ1BJOiBTU0RUIEE3NDdEMDAwLCAwMDY3IChyMiAgICBBTUQgICBDUE1EU00g
ICAgICAgIDEgSU5UTCAyMDIzMDMzMSkNKFhFTikgQUNQSTogRklEVCBBNzQ2RDAwMCwgMDA5QyAo
cjEgICAgQU1EICAgIEEgTSBJICAgICAgICAxIEFNSSAgICAgMTAwMTMpDShYRU4pIEFDUEk6IE1D
RkcgQTc0NkMwMDAsIDAwM0MgKHIxICAgIEFNRCAgICBBIE0gSSAgICAgICAgMSBNU0ZUICAgIDEw
MDEzKQ0oWEVOKSBBQ1BJOiBTU0RUIEE3NDZCMDAwLCAwNUM1IChyMiAgICBBTUQgIENQVVNTRFQg
ICAgICAgIDEgQU1JICAgICAgICAgMSkNKFhFTikgQUNQSTogSFBFVCBBNzQ2QTAwMCwgMDAzOCAo
cjEgICAgQU1EICAgIEEgTSBJICAgICAgICAxIEFNSSAgICAgICAgIDUpDShYRU4pIEFDUEk6IFNT
RFQgQTc0NjgwMDAsIDFCNTMgKHIyICAgIEFNRCAgIENQTVJBUyAgICAgICAgMSBJTlRMIDIwMjMw
MzMxKQ0oWEVOKSBBQ1BJOiBCRVJUIEE3NDY3MDAwLCAwMDMwIChyMSBBTUQgICAgQU1EIEJFUlQg
ICAgICAgIDEgQU1EICAgICAgICAgMSkNKFhFTikgQUNQSTogRlBEVCBBNzQ2NTAwMCwgMDA0NCAo
cjEgQU1EICAgICAgQSBNIEkgICAxMDcyMDA5IEFNSSAgIDEwMDAwMTMpDShYRU4pIEFDUEk6IFNT
RFQgQTc0NjIwMDAsIDI0NDggKHIyICAgIEFNRCBHUFBfUE1FXyAgICAgICAgMSBJTlRMIDIwMjMw
MzMxKQ0oWEVOKSBBQ1BJOiBTU0RUIEE3NDVGMDAwLCAyNDQ4IChyMiAgICBBTUQgR1BQX1BNRV8g
ICAgICAgIDEgSU5UTCAyMDIzMDMzMSkNKFhFTikgQUNQSTogU1NEVCBBNzQ1QzAwMCwgMjQ0OCAo
cjIgICAgQU1EIEdQUF9QTUVfICAgICAgICAxIElOVEwgMjAyMzAzMzEpDShYRU4pIEFDUEk6IFNT
RFQgQTc0NTkwMDAsIDI0NDggKHIyICAgIEFNRCBHUFBfUE1FXyAgICAgICAgMSBJTlRMIDIwMjMw
MzMxKQ0oWEVOKSBBQ1BJOiBWRkNUIEE3NDRBMDAwLCBFNjg0IChyMSBBTUQgICAgICBBIE0gSSAg
ICAgICAgIDEgIEFNRCAzMTUwNEY0NykNKFhFTikgQUNQSTogQkdSVCBBNzQ0OTAwMCwgMDAzOCAo
cjEgQU1EICAgICAgQSBNIEkgICAgICAgICAxIEFNSSAgICAgMTAwMTMpDShYRU4pIEFDUEk6IFNT
RFQgQTc0M0UwMDAsIEE0MEUgKHIyICAgIEFNRCAgQU1EIENQVSAgICAgICAgMSBBTUQgICAgICAg
ICAxKQ0oWEVOKSBBQ1BJOiBITUFUIEE3NDNEMDAwLCAwMEE0IChyMiAgICBBTUQgQW1kVGFibGUg
ICAgICAgIDEgQU1EICAgICAgICAgMSkNKFhFTikgQUNQSTogV1BCVCBBNjg0RTAwMCwgMDAzNiAo
cjEgICAgQU1EICAgIEEgTSBJICAgICAgICAxIE1TRlQgICAgMTAwMTMpDShYRU4pIEFDUEk6IElW
UlMgQTY4NEQwMDAsIDAxRTggKHIyICBBTUQgICBBbWRUYWJsZSAgICAgICAgMSBBTUQgICAgICAg
ICAxKQ0oWEVOKSBBQ1BJOiBTU0RUIEE2ODRDMDAwLCAwNkQ0IChyMiAgICBBTUQgIENQTVdMUkMg
ICAgICAgIDEgSU5UTCAyMDIzMDMzMSkNKFhFTikgQUNQSTogU1NEVCBBNjg0MjAwMCwgOTgyRiAo
cjIgICAgQU1EICAgQ1BNQ01OICAgICAgICAxIElOVEwgMjAyMzAzMzEpDShYRU4pIEFDUEk6IFdT
TVQgQTY4NDEwMDAsIDAwMjggKHIxIEFNRCAgICAgIEEgTSBJICAgICAgICAgMSBBTUkgICAgIDEw
MDEzKQ0oWEVOKSBBQ1BJOiBBUElDIEE2ODNGMDAwLCAxMDg4IChyNiBBTUQgICAgICBBIE0gSSAg
ICAgICAgIDEgQU1JICAgICAxMDAxMykNKFhFTikgQUNQSTogU1NEVCBBNjgzQzAwMCwgMjM4NyAo
cjIgICAgQU1EIEFPRCAgICAgICAgICAgICAxIElOVEwgMjAyMzAzMzEpDShYRU4pIEFDUEk6IFNT
RFQgQTY4M0IwMDAsIDA1MDAgKHIyICAgIEFNRCBNRU1UT09MMCAgICAgICAgMiBJTlRMIDIwMjMw
MzMxKQ0oWEVOKSBBQ1BJOiBTU0RUIEE2ODNBMDAwLCAwOTZBIChyMiAgICBBTUQgQ1BNTVNPU0Mg
ICAgICAgIDEgSU5UTCAyMDIzMDMzMSkNKFhFTikgQUNQSTogU1NEVCBBNjgzOTAwMCwgMEI3MiAo
cjIgICAgQU1EIENQTUFDUFY2ICAgICAgICAxIElOVEwgMjAyMzAzMzEpDShYRU4pIEFDUEk6IFNT
RFQgQTY4MzgwMDAsIDA0NEUgKHIyICAgIEFNRCBBbWRUYWJsZSAgICAgICAgMSBJTlRMIDIwMjMw
MzMxKQ0oWEVOKSBBQ1BJOiBFUlNUIEE2ODM3MDAwLCAwMjMwIChyMSAgQU1JRVIgQU1JLkVSU1Qg
ICAgICAgIDAgQU1JLiAgICAgICAgMCkNKFhFTikgQUNQSTogSEVTVCBBNjgwNjAwMCwgMzBBMTQg
KHIxIEFNRCAgICBBTUQgSEVTVCAgICAgICAgMSBBTUQgICAgICAgICAxKQ0oWEVOKSBTeXN0ZW0g
UkFNOiAyNjE2MjhNQiAoMjY3OTA3OTU2a0IpDShYRU4pIE5vIE5VTUEgY29uZmlndXJhdGlvbiBm
b3VuZA0oWEVOKSBGYWtpbmcgYSBub2RlIGF0IDAwMDAwMDAwMDAwMDAwMDAtMDAwMDAwNDAzZGJj
MDAwMA0oWEVOKSBEb21haW4gaGVhcCBpbml0aWFsaXNlZA0oWEVOKSB2ZXNhZmI6IGZyYW1lYnVm
ZmVyIGF0IDB4MDAwMDA0ZDgwMDAwMDAwMCwgbWFwcGVkIHRvIDB4ZmZmZjgyYzAwMDIwMTAwMCwg
dXNpbmcgMTk4NGssIHRvdGFsIDE5ODRrDShYRU4pIHZlc2FmYjogbW9kZSBpcyA4MDB4NjAweDMy
LCBsaW5lbGVuZ3RoPTMzMjgsIGZvbnQgOHg4DShYRU4pIHZlc2FmYjogVHJ1ZWNvbG9yOiBzaXpl
PTg6ODo4OjgsIHNoaWZ0PTI0OjE2Ojg6MA0oWEVOKSBTTUJJT1MgMy42IHByZXNlbnQuDShYRU4p
IHgyQVBJQyBtb2RlIGlzIGFscmVhZHkgZW5hYmxlZCBieSBCSU9TLg0oWEVOKSBVc2luZyBBUElD
IGRyaXZlciB4MmFwaWNfY2x1c3Rlcg0oWEVOKSBBQ1BJOiBQTS1UaW1lciBJTyBQb3J0OiAweDgw
OCAoMzIgYml0cykNKFhFTikgQUNQSTogdjUgU0xFRVAgSU5GTzogY29udHJvbFswOjBdLCBzdGF0
dXNbMDowXQ0oWEVOKSBBQ1BJOiBTTEVFUCBJTkZPOiBwbTF4X2NudFsxOjgwNCwxOjBdLCBwbTF4
X2V2dFsxOjgwMCwxOjBdDShYRU4pIEFDUEk6IDMyLzY0WCBGQUNTIGFkZHJlc3MgbWlzbWF0Y2gg
aW4gRkFEVCAtIGE5NDVhMDAwLzAwMDAwMDAwMDAwMDAwMDAsIHVzaW5nIDMyDShYRU4pIEFDUEk6
ICAgICAgICAgICAgIHdha2V1cF92ZWNbYTk0NWEwMGNdLCB2ZWNfc2l6ZVsyMF0NKFhFTikgQUNQ
STogTG9jYWwgQVBJQyBhZGRyZXNzIDB4ZmVlMDAwMDANKFhFTikgQUNQSTogSU9BUElDIChpZFsw
eDgwXSBhZGRyZXNzWzB4ZmVjMDAwMDBdIGdzaV9iYXNlWzBdKQ0oWEVOKSBJT0FQSUNbMF06IGFw
aWNfaWQgMTI4LCB2ZXJzaW9uIDMzLCBhZGRyZXNzIDB4ZmVjMDAwMDAsIEdTSSAwLTIzDShYRU4p
IEFDUEk6IElPQVBJQyAoaWRbMHg4MV0gYWRkcmVzc1sweGRmMTgwMDAwXSBnc2lfYmFzZVsxMjBd
KQ0oWEVOKSBJT0FQSUNbMV06IGFwaWNfaWQgMTI5LCB2ZXJzaW9uIDMzLCBhZGRyZXNzIDB4ZGYx
ODAwMDAsIEdTSSAxMjAtMTUxDShYRU4pIEFDUEk6IElPQVBJQyAoaWRbMHg4Ml0gYWRkcmVzc1sw
eGQzMTgwMDAwXSBnc2lfYmFzZVs4OF0pDShYRU4pIElPQVBJQ1syXTogYXBpY19pZCAxMzAsIHZl
cnNpb24gMzMsIGFkZHJlc3MgMHhkMzE4MDAwMCwgR1NJIDg4LTExOQ0oWEVOKSBBQ1BJOiBJT0FQ
SUMgKGlkWzB4ODNdIGFkZHJlc3NbMHhmNzE4MDAwMF0gZ3NpX2Jhc2VbMjRdKQ0oWEVOKSBJT0FQ
SUNbM106IGFwaWNfaWQgMTMxLCB2ZXJzaW9uIDMzLCBhZGRyZXNzIDB4ZjcxODAwMDAsIEdTSSAy
NC01NQ0oWEVOKSBBQ1BJOiBJT0FQSUMgKGlkWzB4ODRdIGFkZHJlc3NbMHhjOTE4MDAwMF0gZ3Np
X2Jhc2VbNTZdKQ0oWEVOKSBJT0FQSUNbNF06IGFwaWNfaWQgMTMyLCB2ZXJzaW9uIDMzLCBhZGRy
ZXNzIDB4YzkxODAwMDAsIEdTSSA1Ni04Nw0oWEVOKSBBQ1BJOiBJTlRfU1JDX09WUiAoYnVzIDAg
YnVzX2lycSAwIGdsb2JhbF9pcnEgMiBkZmwgZGZsKQ0oWEVOKSBBQ1BJOiBJTlRfU1JDX09WUiAo
YnVzIDAgYnVzX2lycSA5IGdsb2JhbF9pcnEgOSBsb3cgbGV2ZWwpDShYRU4pIEFDUEk6IElSUTAg
dXNlZCBieSBvdmVycmlkZS4NKFhFTikgQUNQSTogSVJRMiB1c2VkIGJ5IG92ZXJyaWRlLg0oWEVO
KSBBQ1BJOiBJUlE5IHVzZWQgYnkgb3ZlcnJpZGUuDShYRU4pIEFDUEk6IEhQRVQgaWQ6IDB4MTAy
MjgyMDEgYmFzZTogMHhmZWQwMDAwMA0oWEVOKSBQQ0k6IE1DRkcgY29uZmlndXJhdGlvbiAwOiBi
YXNlIGUwMDAwMDAwIHNlZ21lbnQgMDAwMCBidXNlcyAwMCAtIGZmDShYRU4pIFBDSTogTUNGRyBh
cmVhIGF0IGUwMDAwMDAwIHJlc2VydmVkIGluIEU4MjANKFhFTikgUENJOiBVc2luZyBNQ0ZHIGZv
ciBzZWdtZW50IDAwMDAgYnVzIDAwLWZmDShYRU4pIFhlbiBFUlNUIHN1cHBvcnQgaXMgaW5pdGlh
bGl6ZWQuDShYRU4pIEhFU1Q6IFRhYmxlIHBhcnNpbmcgaGFzIGJlZW4gaW5pdGlhbGl6ZWQNKFhF
TikgQUNQSTogQkdSVDogaW52YWxpZGF0aW5nIHYxIGltYWdlIGF0IDB4OWIwZDAwMTgNKFhFTikg
VXNpbmcgQUNQSSAoTUFEVCkgZm9yIFNNUCBjb25maWd1cmF0aW9uIGluZm9ybWF0aW9uDShYRU4p
IFNNUDogQWxsb3dpbmcgNDggQ1BVcyAoMCBob3RwbHVnIENQVXMpDShYRU4pIElSUSBsaW1pdHM6
IDE1MiBHU0ksIDk4MzIgTVNJL01TSS1YDShYRU4pIEFNRC1WaTogSU9NTVUgRXh0ZW5kZWQgRmVh
dHVyZXM6DShYRU4pIC0gUGVyaXBoZXJhbCBQYWdlIFNlcnZpY2UgUmVxdWVzdA0oWEVOKSAtIHgy
QVBJQw0oWEVOKSAtIE5YIGJpdA0oWEVOKSAtIEd1ZXN0IEFQSUMgUGh5c2ljYWwgUHJvY2Vzc29y
IEludGVycnVwdA0oWEVOKSAtIEludmFsaWRhdGUgQWxsIENvbW1hbmQNKFhFTikgLSBHdWVzdCBB
UElDDShYRU4pIC0gUGVyZm9ybWFuY2UgQ291bnRlcnMNKFhFTikgLSBIb3N0IEFkZHJlc3MgVHJh
bnNsYXRpb24gU2l6ZTogMHgyDShYRU4pIC0gR3Vlc3QgQWRkcmVzcyBUcmFuc2xhdGlvbiBTaXpl
OiAweDENKFhFTikgLSBHdWVzdCBDUjMgUm9vdCBUYWJsZSBMZXZlbDogMHgxDShYRU4pIC0gTWF4
aW11bSBQQVNJRDogMHhmDShYRU4pIC0gU01JIEZpbHRlciBSZWdpc3RlcjogMHgxDShYRU4pIC0g
U01JIEZpbHRlciBSZWdpc3RlciBDb3VudDogMHgyDShYRU4pIC0gR3Vlc3QgVmlydHVhbCBBUElD
IE1vZGVzOiAweDENKFhFTikgLSBEdWFsIFBQUiBMb2c6IDB4Mg0oWEVOKSAtIER1YWwgRXZlbnQg
TG9nOiAweDINKFhFTikgLSBTZWN1cmUgQVRTDShYRU4pIC0gVXNlciAvIFN1cGVydmlzb3IgUGFn
ZSBQcm90ZWN0aW9uDShYRU4pIC0gRGV2aWNlIFRhYmxlIFNlZ21lbnRhdGlvbjogMA0oWEVOKSAt
IFBQUiBMb2cgT3ZlcmZsb3cgRWFybHkgV2FybmluZw0oWEVOKSAtIFBQUiBBdXRvbWF0aWMgUmVz
cG9uc2UNKFhFTikgLSBNZW1vcnkgQWNjZXNzIFJvdXRpbmcgYW5kIENvbnRyb2w6IDANKFhFTikg
LSBCbG9jayBTdG9wTWFyayBNZXNzYWdlDShYRU4pIC0gUGVyZm9ybWFuY2UgT3B0aW1pemF0aW9u
DShYRU4pIC0gTVNJIENhcGFiaWxpdHkgTU1JTyBBY2Nlc3MNKFhFTikgLSBHdWVzdCBJL08gUHJv
dGVjdGlvbg0oWEVOKSAtIEhvc3QgQWNjZXNzDShYRU4pIC0gRW5oYW5jZWQgUFBSIEhhbmRsaW5n
DShYRU4pIC0gQXR0cmlidXRlIEZvcndhcmQNKFhFTikgLSBIb3N0IERpcnR5DShYRU4pIC0gVmly
dHVhbGl6ZWQgSU9NTVUNKFhFTikgLSBWTUd1YXJkIEkvTyBTdXBwb3J0DShYRU4pIC0gVk0gVGFi
bGUgU2l6ZTogMHgyDShYRU4pIC0gR3Vlc3QgQWNjZXNzIEJpdCBVcGRhdGUgRGlzYWJsZQ0oWEVO
KSBBTUQtVmk6IERpc2FibGVkIEhBUCBtZW1vcnkgbWFwIHNoYXJpbmcgd2l0aCBJT01NVQ0oWEVO
KSBBTUQtVmk6IElPTU1VIDAgRW5hYmxlZC4NKFhFTikgQU1ELVZpOiBJT01NVSAxIEVuYWJsZWQu
DShYRU4pIEFNRC1WaTogSU9NTVUgMiBFbmFibGVkLg0oWEVOKSBBTUQtVmk6IElPTU1VIDMgRW5h
YmxlZC4NKFhFTikgQ1BVMDogMTUwMCAuLi4gNDIwMCBNSHoNKFhFTikgeHN0YXRlOiBzaXplOiAw
eDk4OCBhbmQgc3RhdGVzOiAweDJlNw0oWEVOKSBDUFUwOiBBTUQgRmFtMTloIG1hY2hpbmUgY2hl
Y2sgcmVwb3J0aW5nIGVuYWJsZWQNKFhFTikgU3BlY3VsYXRpdmUgbWl0aWdhdGlvbiBmYWNpbGl0
aWVzOg0oWEVOKSAgIEhhcmR3YXJlIGhpbnRzOiBTVElCUF9BTFdBWVMgSUJSU19GQVNUIElCUlNf
U0FNRV9NT0RFIEJUQ19OTyBJQlBCX1JFVA0oWEVOKSAgIEhhcmR3YXJlIGZlYXR1cmVzOiBJQlBC
IElCUlMgU1RJQlAgU1NCRCBQU0ZEIEwxRF9GTFVTSA0oWEVOKSAgIENvbXBpbGVkLWluIHN1cHBv
cnQ6IElORElSRUNUX1RIVU5LIFNIQURPV19QQUdJTkcNKFhFTikgICBYZW4gc2V0dGluZ3M6IEJU
SS1UaHVuayBKTVAsIFNQRUNfQ1RSTDogSUJSUysgU1RJQlArIFNTQkQtIFBTRkQtLCBPdGhlcjog
QlJBTkNIX0hBUkRFTg0oWEVOKSAgIFN1cHBvcnQgZm9yIEhWTSBWTXM6IE1TUl9TUEVDX0NUUkwg
TVNSX1ZJUlRfU1BFQ19DVFJMIFJTQiBJQlBCLWVudHJ5DShYRU4pICAgU3VwcG9ydCBmb3IgUFYg
Vk1zOiBJQlBCLWVudHJ5DShYRU4pICAgWFBUSSAoNjQtYml0IFBWIG9ubHkpOiBEb20wIGRpc2Fi
bGVkLCBEb21VIGRpc2FibGVkICh3aXRoIFBDSUQpDShYRU4pICAgUFYgTDFURiBzaGFkb3dpbmc6
IERvbTAgZGlzYWJsZWQsIERvbVUgZGlzYWJsZWQNKFhFTikgVXNpbmcgc2NoZWR1bGVyOiBTTVAg
Q3JlZGl0IFNjaGVkdWxlciByZXYyIChjcmVkaXQyKQ0oWEVOKSBJbml0aWFsaXppbmcgQ3JlZGl0
MiBzY2hlZHVsZXINKFhFTikgIGxvYWRfcHJlY2lzaW9uX3NoaWZ0OiAxOA0oWEVOKSAgbG9hZF93
aW5kb3dfc2hpZnQ6IDMwDShYRU4pICB1bmRlcmxvYWRfYmFsYW5jZV90b2xlcmFuY2U6IDANKFhF
TikgIG92ZXJsb2FkX2JhbGFuY2VfdG9sZXJhbmNlOiAtMw0oWEVOKSAgcnVucXVldWVzIGFycmFu
Z2VtZW50OiBzb2NrZXQNKFhFTikgIGNhcCBlbmZvcmNlbWVudCBncmFudWxhcml0eTogMTBtcw0o
WEVOKSBsb2FkIHRyYWNraW5nIHdpbmRvdyBsZW5ndGggMTA3Mzc0MTgyNCBucw0oWEVOKSBQbGF0
Zm9ybSB0aW1lciBpcyAxNC4zMThNSHogSFBFVA0oWEVOKSBEZXRlY3RlZCA0MTk5Ljk2MCBNSHog
cHJvY2Vzc29yLg0oWEVOKSBFRkkgbWVtb3J5IG1hcDoNKFhFTikgIDAwMDAwMDAwMDAwMDAtMDAw
MDAwMDA5Y2ZmZiB0eXBlPTcgYXR0cj0wMDAwMDAwMDAwMDAwMDBmDShYRU4pICAwMDAwMDAwMDlk
MDAwLTAwMDAwMDAwOWVmZmYgdHlwZT0yIGF0dHI9MDAwMDAwMDAwMDAwMDAwZg0oWEVOKSAgMDAw
MDAwMDA5ZjAwMC0wMDAwMDAwMDlmZmZmIHR5cGU9NCBhdHRyPTAwMDAwMDAwMDAwMDAwMGYNKFhF
TikgIDAwMDAwMDAxMDAwMDAtMDAwMDAwM2ZmZmZmZiB0eXBlPTcgYXR0cj0wMDAwMDAwMDAwMDAw
MDBmDShYRU4pICAwMDAwMDA0MDAwMDAwLTAwMDAwMDQwNDVmZmYgdHlwZT0xMCBhdHRyPTAwMDAw
MDAwMDAwMDAwMGYNKFhFTikgIDAwMDAwMDQwNDYwMDAtMDAwMDAwOWFmZWZmZiB0eXBlPTcgYXR0
cj0wMDAwMDAwMDAwMDAwMDBmDShYRU4pICAwMDAwMDA5YWZmMDAwLTAwMDAwMDlmZmZmZmYgdHlw
ZT0wIGF0dHI9MDAwMDAwMDAwMDAwMDAwZg0oWEVOKSAgMDAwMDAwYTAwMDAwMC0wMDAwMDBhMmZm
ZmZmIHR5cGU9NCBhdHRyPTAwMDAwMDAwMDAwMDAwMGYNKFhFTikgIDAwMDAwMGEzMDAwMDAtMDAw
MDAwYWZmZmZmZiB0eXBlPTcgYXR0cj0wMDAwMDAwMDAwMDAwMDBmDShYRU4pICAwMDAwMDBiMDAw
MDAwLTAwMDAwMGIwMjBmZmYgdHlwZT0wIGF0dHI9MDAwMDAwMDAwMDAwMDAwZg0oWEVOKSAgMDAw
MDAwYjAyMTAwMC0wMDAwMDkxYmIwZmZmIHR5cGU9NyBhdHRyPTAwMDAwMDAwMDAwMDAwMGYNKFhF
TikgIDAwMDAwOTFiYjEwMDAtMDAwMDA5NGJmZmZmZiB0eXBlPTIgYXR0cj0wMDAwMDAwMDAwMDAw
MDBmDShYRU4pICAwMDAwMDk0YzAwMDAwLTAwMDAwOTViZmZmZmYgdHlwZT0xIGF0dHI9MDAwMDAw
MDAwMDAwMDAwZg0oWEVOKSAgMDAwMDA5NWMwMDAwMC0wMDAwMDk1ZDBjZmZmIHR5cGU9NyBhdHRy
PTAwMDAwMDAwMDAwMDAwMGYNKFhFTikgIDAwMDAwOTVkMGQwMDAtMDAwMDA5NzRlOGZmZiB0eXBl
PTQgYXR0cj0wMDAwMDAwMDAwMDAwMDBmDShYRU4pICAwMDAwMDk3NGU5MDAwLTAwMDAwOTdlYTJm
ZmYgdHlwZT03IGF0dHI9MDAwMDAwMDAwMDAwMDAwZg0oWEVOKSAgMDAwMDA5N2VhMzAwMC0wMDAw
MDk3ZWE0ZmZmIHR5cGU9NCBhdHRyPTAwMDAwMDAwMDAwMDAwMGYNKFhFTikgIDAwMDAwOTdlYTUw
MDAtMDAwMDA5N2Y3N2ZmZiB0eXBlPTcgYXR0cj0wMDAwMDAwMDAwMDAwMDBmDShYRU4pICAwMDAw
MDk3Zjc4MDAwLTAwMDAwOWIxZGJmZmYgdHlwZT00IGF0dHI9MDAwMDAwMDAwMDAwMDAwZg0oWEVO
KSAgMDAwMDA5YjFkYzAwMC0wMDAwMDliMWRlZmZmIHR5cGU9NyBhdHRyPTAwMDAwMDAwMDAwMDAw
MGYNKFhFTikgIDAwMDAwOWIxZGYwMDAtMDAwMDA5ZTRlOGZmZiB0eXBlPTQgYXR0cj0wMDAwMDAw
MDAwMDAwMDBmDShYRU4pICAwMDAwMDllNGU5MDAwLTAwMDAwOWZkNzZmZmYgdHlwZT03IGF0dHI9
MDAwMDAwMDAwMDAwMDAwZg0oWEVOKSAgMDAwMDA5ZmQ3NzAwMC0wMDAwMGEwNGU4ZmZmIHR5cGU9
MyBhdHRyPTAwMDAwMDAwMDAwMDAwMGYNKFhFTikgIDAwMDAwYTA0ZTkwMDAtMDAwMDBhNjRlOGZm
ZiB0eXBlPTAgYXR0cj0wMDAwMDAwMDAwMDAwMDBmDShYRU4pICAwMDAwMGE2NGU5MDAwLTAwMDAw
YTc0N2VmZmYgdHlwZT05IGF0dHI9MDAwMDAwMDAwMDAwMDAwZg0oWEVOKSAgMDAwMDBhNzQ3ZjAw
MC0wMDAwMGE5NDdlZmZmIHR5cGU9MTAgYXR0cj0wMDAwMDAwMDAwMDAwMDBmDShYRU4pICAwMDAw
MGE5NDdmMDAwLTAwMDAwYWRjN2VmZmYgdHlwZT02IGF0dHI9ODAwMDAwMDAwMDAwMDAwZg0oWEVO
KSAgMDAwMDBhZGM3ZjAwMC0wMDAwMGFkZGZlZmZmIHR5cGU9NSBhdHRyPTgwMDAwMDAwMDAwMDAw
MGYNKFhFTikgIDAwMDAwYWRkZmYwMDAtMDAwMDBhZGZmZmZmZiB0eXBlPTQgYXR0cj0wMDAwMDAw
MDAwMDAwMDBmDShYRU4pICAwMDAwMGFlMDAwMDAwLTAwMDAwYWUxM2FmZmYgdHlwZT03IGF0dHI9
MDAwMDAwMDAwMDAwMDAwZg0oWEVOKSAgMDAwMDBhZTEzYjAwMC0wMDAwMGFlMjNhZmZmIHR5cGU9
NCBhdHRyPTAwMDAwMDAwMDAwMDAwMGYNKFhFTikgIDAwMDAwYWUyM2IwMDAtMDAwMDBhZTI1YmZm
ZiB0eXBlPTMgYXR0cj0wMDAwMDAwMDAwMDAwMDBmDShYRU4pICAwMDAwMGFlMjVjMDAwLTAwMDAw
YWY3NjVmZmYgdHlwZT00IGF0dHI9MDAwMDAwMDAwMDAwMDAwZg0oWEVOKSAgMDAwMDBhZjc2NjAw
MC0wMDAwMGFmNzgyZmZmIHR5cGU9MyBhdHRyPTAwMDAwMDAwMDAwMDAwMGYNKFhFTikgIDAwMDAw
YWY3ODMwMDAtMDAwMDBhZjc5YmZmZiB0eXBlPTQgYXR0cj0wMDAwMDAwMDAwMDAwMDBmDShYRU4p
ICAwMDAwMGFmNzljMDAwLTAwMDAwYWY3OWZmZmYgdHlwZT0zIGF0dHI9MDAwMDAwMDAwMDAwMDAw
Zg0oWEVOKSAgMDAwMDBhZjdhMDAwMC0wMDAwMGFmN2IzZmZmIHR5cGU9NCBhdHRyPTAwMDAwMDAw
MDAwMDAwMGYNKFhFTikgIDAwMDAwYWY3YjQwMDAtMDAwMDBhZjdkY2ZmZiB0eXBlPTMgYXR0cj0w
MDAwMDAwMDAwMDAwMDBmDShYRU4pICAwMDAwMGFmN2RkMDAwLTAwMDAwYWZmZjNmZmYgdHlwZT00
IGF0dHI9MDAwMDAwMDAwMDAwMDAwZg0oWEVOKSAgMDAwMDBhZmZmNDAwMC0wMDAwMGFmZmZhZmZm
IHR5cGU9MyBhdHRyPTAwMDAwMDAwMDAwMDAwMGYNKFhFTikgIDAwMDAwYWZmZmIwMDAtMDAwMDBh
ZmZmZmZmZiB0eXBlPTYgYXR0cj04MDAwMDAwMDAwMDAwMDBmDShYRU4pICAwMDAwMTAwMDAwMDAw
LTAwMDQwM2RiYmZmZmYgdHlwZT03IGF0dHI9MDAwMDAwMDAwMDAwMDAwZg0oWEVOKSAgMDAwMDAw
MDBhMDAwMC0wMDAwMDAwMGZmZmZmIHR5cGU9MCBhdHRyPTAwMDAwMDAwMDAwMDAwMGYNKFhFTikg
IDAwMDAwYjAwMDAwMDAtMDAwMDBiZmZmZmZmZiB0eXBlPTAgYXR0cj0wMDAwMDAwMDAwMDAwMDBm
DShYRU4pICAwMDAwMGRmMjAwMDAwLTAwMDAwZGYyZmZmZmYgdHlwZT0xMSBhdHRyPTgwMDAwMDAw
MDAwMDAwMDENKFhFTikgIDAwMDAwZTAwMDAwMDAtMDAwMDBlZmZmZmZmZiB0eXBlPTExIGF0dHI9
ODAwMDAwMDAwMDAwMTAwZA0oWEVOKSAgMDAwMDBmZWEwMDAwMC0wMDAwMGZlYWZmZmZmIHR5cGU9
MTEgYXR0cj04MDAwMDAwMDAwMDAwMDAxDShYRU4pICAwMDAwMGZlYzAwMDAwLTAwMDAwZmVjMDBm
ZmYgdHlwZT0xMSBhdHRyPTgwMDAwMDAwMDAwMDAwMDENKFhFTikgIDAwMDAwZmVjMTAwMDAtMDAw
MDBmZWMxMGZmZiB0eXBlPTExIGF0dHI9ODAwMDAwMDAwMDAwMDAwMQ0oWEVOKSAgMDAwMDBmZWMz
MDAwMC0wMDAwMGZlYzMwZmZmIHR5cGU9MTEgYXR0cj04MDAwMDAwMDAwMDAwMDAxDShYRU4pICAw
MDAwMGZlZDAwMDAwLTAwMDAwZmVkMDBmZmYgdHlwZT0xMSBhdHRyPTgwMDAwMDAwMDAwMDAwMDEN
KFhFTikgIDAwMDAwZmVkNDAwMDAtMDAwMDBmZWQ0NGZmZiB0eXBlPTExIGF0dHI9ODAwMDAwMDAw
MDAwMDAwMQ0oWEVOKSAgMDAwMDBmZWQ4MDAwMC0wMDAwMGZlZDhmZmZmIHR5cGU9MTEgYXR0cj04
MDAwMDAwMDAwMDAwMDAxDShYRU4pICAwMDAwMGZmMDAwMDAwLTAwMDAwZmZmZmZmZmYgdHlwZT0x
MSBhdHRyPTgwMDAwMDAwMDAwMDAwMDENKFhFTikgIDAwMDQwM2RiYzAwMDAtMDAwNDAzZmZmZmZm
ZiB0eXBlPTAgYXR0cj0wMDAwMDAwMDAwMDAwMDBmDShYRU4pIGFsdCB0YWJsZSBmZmZmODJkMDQw
NjkzMWQwIC0+IGZmZmY4MmQwNDA2OWYxZmMNKFhFTikgSS9PIHZpcnR1YWxpc2F0aW9uIGVuYWJs
ZWQNKFhFTikgIC0gRG9tMCBtb2RlOiBSZWxheGVkDShYRU4pIEludGVycnVwdCByZW1hcHBpbmcg
ZW5hYmxlZA0oWEVOKSBucl9zb2NrZXRzOiAxDShYRU4pIEVuYWJsZWQgZGlyZWN0ZWQgRU9JIHdp
dGggaW9hcGljX2Fja19vbGQgb24hDShYRU4pIEVuYWJsaW5nIEFQSUMgbW9kZTogIENsdXN0ZXJl
ZC4gIFVzaW5nIDUgSS9PIEFQSUNzDShYRU4pIEVOQUJMSU5HIElPLUFQSUMgSVJRcw0oWEVOKSAg
LT4gVXNpbmcgb2xkIEFDSyBtZXRob2QNKFhFTikgLi5USU1FUjogdmVjdG9yPTB4RjAgYXBpYzE9
MCBwaW4xPTIgYXBpYzI9LTEgcGluMj0tMQ0oWEVOKSBEZWZhdWx0aW5nIHRvIGFsdGVybmF0aXZl
IGtleSBoYW5kbGluZzsgc2VuZCAnQScgdG8gc3dpdGNoIHRvIG5vcm1hbCBtb2RlLg0oWEVOKSBB
bGxvY2F0ZWQgY29uc29sZSByaW5nIG9mIDUxMiBLaUIuDShYRU4pIG13YWl0LWlkbGU6IGRvZXMg
bm90IHJ1biBvbiBmYW1pbHkgMjUgbW9kZWwgMjQNKFhFTikgSFZNOiBBU0lEcyBlbmFibGVkLg0o
WEVOKSBTVk06IFN1cHBvcnRlZCBhZHZhbmNlZCBmZWF0dXJlczoNKFhFTikgIC0gTmVzdGVkIFBh
Z2UgVGFibGVzIChOUFQpDShYRU4pICAtIExhc3QgQnJhbmNoIFJlY29yZCAoTEJSKSBWaXJ0dWFs
aXNhdGlvbg0oWEVOKSAgLSBOZXh0LVJJUCBTYXZlZCBvbiAjVk1FWElUDShYRU4pICAtIFZNQ0Ig
Q2xlYW4gQml0cw0oWEVOKSAgLSBEZWNvZGVBc3Npc3RzDShYRU4pICAtIFZpcnR1YWwgVk1MT0FE
L1ZNU0FWRQ0oWEVOKSAgLSBWaXJ0dWFsIEdJRg0oWEVOKSAgLSBQYXVzZS1JbnRlcmNlcHQgRmls
dGVyDShYRU4pICAtIFBhdXNlLUludGVyY2VwdCBGaWx0ZXIgVGhyZXNob2xkDShYRU4pICAtIFRT
QyBSYXRlIE1TUg0oWEVOKSAgLSBOUFQgU3VwZXJ2aXNvciBTaGFkb3cgU3RhY2sNKFhFTikgIC0g
TVNSX1NQRUNfQ1RSTCB2aXJ0dWFsaXNhdGlvbg0oWEVOKSBIVk06IFNWTSBlbmFibGVkDShYRU4p
IEhWTTogSGFyZHdhcmUgQXNzaXN0ZWQgUGFnaW5nIChIQVApIGRldGVjdGVkDShYRU4pIEhWTTog
SEFQIHBhZ2Ugc2l6ZXM6IDRrQiwgMk1CLCAxR0INKFhFTikgYWx0IHRhYmxlIGZmZmY4MmQwNDA2
OTMxZDAgLT4gZmZmZjgyZDA0MDY5ZjFmYw0oWEVOKSBCcm91Z2h0IHVwIDQ4IENQVXMNKFhFTikg
U2NoZWR1bGluZyBncmFudWxhcml0eTogY3B1LCAxIENQVSBwZXIgc2NoZWQtcmVzb3VyY2UNKFhF
TikgSW5pdGlhbGl6aW5nIENyZWRpdDIgc2NoZWR1bGVyDShYRU4pICBsb2FkX3ByZWNpc2lvbl9z
aGlmdDogMTgNKFhFTikgIGxvYWRfd2luZG93X3NoaWZ0OiAzMA0oWEVOKSAgdW5kZXJsb2FkX2Jh
bGFuY2VfdG9sZXJhbmNlOiAwDShYRU4pICBvdmVybG9hZF9iYWxhbmNlX3RvbGVyYW5jZTogLTMN
KFhFTikgIHJ1bnF1ZXVlcyBhcnJhbmdlbWVudDogc29ja2V0DShYRU4pICBjYXAgZW5mb3JjZW1l
bnQgZ3JhbnVsYXJpdHk6IDEwbXMNKFhFTikgbG9hZCB0cmFja2luZyB3aW5kb3cgbGVuZ3RoIDEw
NzM3NDE4MjQgbnMNKFhFTikgQWRkaW5nIGNwdSAwIHRvIHJ1bnF1ZXVlIDANKFhFTikgIEZpcnN0
IGNwdSBvbiBydW5xdWV1ZSwgYWN0aXZhdGluZw0oWEVOKSBBZGRpbmcgY3B1IDEgdG8gcnVucXVl
dWUgMA0oWEVOKSBBZGRpbmcgY3B1IDIgdG8gcnVucXVldWUgMA0oWEVOKSBBZGRpbmcgY3B1IDMg
dG8gcnVucXVldWUgMA0oWEVOKSBBZGRpbmcgY3B1IDQgdG8gcnVucXVldWUgMA0oWEVOKSBBZGRp
bmcgY3B1IDUgdG8gcnVucXVldWUgMA0oWEVOKSBBZGRpbmcgY3B1IDYgdG8gcnVucXVldWUgMA0o
WEVOKSBBZGRpbmcgY3B1IDcgdG8gcnVucXVldWUgMA0oWEVOKSBBZGRpbmcgY3B1IDggdG8gcnVu
cXVldWUgMA0oWEVOKSBBZGRpbmcgY3B1IDkgdG8gcnVucXVldWUgMA0oWEVOKSBBZGRpbmcgY3B1
IDEwIHRvIHJ1bnF1ZXVlIDANKFhFTikgQWRkaW5nIGNwdSAxMSB0byBydW5xdWV1ZSAwDShYRU4p
IEFkZGluZyBjcHUgMTIgdG8gcnVucXVldWUgMA0oWEVOKSBBZGRpbmcgY3B1IDEzIHRvIHJ1bnF1
ZXVlIDANKFhFTikgQWRkaW5nIGNwdSAxNCB0byBydW5xdWV1ZSAwDShYRU4pIEFkZGluZyBjcHUg
MTUgdG8gcnVucXVldWUgMA0oWEVOKSBBZGRpbmcgY3B1IDE2IHRvIHJ1bnF1ZXVlIDENKFhFTikg
IEZpcnN0IGNwdSBvbiBydW5xdWV1ZSwgYWN0aXZhdGluZw0oWEVOKSBBZGRpbmcgY3B1IDE3IHRv
IHJ1bnF1ZXVlIDENKFhFTikgQWRkaW5nIGNwdSAxOCB0byBydW5xdWV1ZSAxDShYRU4pIEFkZGlu
ZyBjcHUgMTkgdG8gcnVucXVldWUgMQ0oWEVOKSBBZGRpbmcgY3B1IDIwIHRvIHJ1bnF1ZXVlIDEN
KFhFTikgQWRkaW5nIGNwdSAyMSB0byBydW5xdWV1ZSAxDShYRU4pIEFkZGluZyBjcHUgMjIgdG8g
cnVucXVldWUgMQ0oWEVOKSBBZGRpbmcgY3B1IDIzIHRvIHJ1bnF1ZXVlIDENKFhFTikgQWRkaW5n
IGNwdSAyNCB0byBydW5xdWV1ZSAxDShYRU4pIEFkZGluZyBjcHUgMjUgdG8gcnVucXVldWUgMQ0o
WEVOKSBBZGRpbmcgY3B1IDI2IHRvIHJ1bnF1ZXVlIDENKFhFTikgQWRkaW5nIGNwdSAyNyB0byBy
dW5xdWV1ZSAxDShYRU4pIEFkZGluZyBjcHUgMjggdG8gcnVucXVldWUgMQ0oWEVOKSBBZGRpbmcg
Y3B1IDI5IHRvIHJ1bnF1ZXVlIDENKFhFTikgQWRkaW5nIGNwdSAzMCB0byBydW5xdWV1ZSAxDShY
RU4pIEFkZGluZyBjcHUgMzEgdG8gcnVucXVldWUgMQ0oWEVOKSBBZGRpbmcgY3B1IDMyIHRvIHJ1
bnF1ZXVlIDINKFhFTikgIEZpcnN0IGNwdSBvbiBydW5xdWV1ZSwgYWN0aXZhdGluZw0oWEVOKSBB
ZGRpbmcgY3B1IDMzIHRvIHJ1bnF1ZXVlIDINKFhFTikgQWRkaW5nIGNwdSAzNCB0byBydW5xdWV1
ZSAyDShYRU4pIEFkZGluZyBjcHUgMzUgdG8gcnVucXVldWUgMg0oWEVOKSBBZGRpbmcgY3B1IDM2
IHRvIHJ1bnF1ZXVlIDINKFhFTikgQWRkaW5nIGNwdSAzNyB0byBydW5xdWV1ZSAyDShYRU4pIEFk
ZGluZyBjcHUgMzggdG8gcnVucXVldWUgMg0oWEVOKSBBZGRpbmcgY3B1IDM5IHRvIHJ1bnF1ZXVl
IDINKFhFTikgQWRkaW5nIGNwdSA0MCB0byBydW5xdWV1ZSAyDShYRU4pIEFkZGluZyBjcHUgNDEg
dG8gcnVucXVldWUgMg0oWEVOKSBBZGRpbmcgY3B1IDQyIHRvIHJ1bnF1ZXVlIDINKFhFTikgQWRk
aW5nIGNwdSA0MyB0byBydW5xdWV1ZSAyDShYRU4pIEFkZGluZyBjcHUgNDQgdG8gcnVucXVldWUg
Mg0oWEVOKSBBZGRpbmcgY3B1IDQ1IHRvIHJ1bnF1ZXVlIDINKFhFTikgQWRkaW5nIGNwdSA0NiB0
byBydW5xdWV1ZSAyDShYRU4pIEFkZGluZyBjcHUgNDcgdG8gcnVucXVldWUgMg0oWEVOKSBtY2hl
Y2tfcG9sbDogTWFjaGluZSBjaGVjayBwb2xsaW5nIHRpbWVyIHN0YXJ0ZWQuDShYRU4pIHhlbm9w
cm9mOiBJbml0aWFsaXphdGlvbiBmYWlsZWQuIEFNRCBwcm9jZXNzb3IgZmFtaWx5IDI1IGlzIG5v
dCBzdXBwb3J0ZWQNKFhFTikgTlggKEV4ZWN1dGUgRGlzYWJsZSkgcHJvdGVjdGlvbiBhY3RpdmUN
KFhFTikgRG9tMCBoYXMgbWF4aW11bSAxNDAwIFBJUlFzDShYRU4pICoqKiBCdWlsZGluZyBhIFBW
SCBEb20wICoqKg0oWEVOKSBXQVJOSU5HOiBQVkggaXMgYW4gZXhwZXJpbWVudGFsIG1vZGUgd2l0
aCBsaW1pdGVkIGZ1bmN0aW9uYWxpdHkNKFhFTikgSW5pdGlhbCBsb3cgbWVtb3J5IHZpcnEgdGhy
ZXNob2xkIHNldCBhdCAweDQwMDAgcGFnZXMuDShYRU4pIFNjcnViYmluZyBGcmVlIFJBTSBpbiBi
YWNrZ3JvdW5kDShYRU4pIFN0ZC4gTG9nbGV2ZWw6IEFsbA0oWEVOKSBHdWVzdCBMb2dsZXZlbDog
QWxsDShYRU4pICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKg0oWEVOKSBXQVJOSU5HOiBDT05TT0xFIE9VVFBVVCBJUyBTWU5DSFJPTk9VUw0oWEVOKSBU
aGlzIG9wdGlvbiBpcyBpbnRlbmRlZCB0byBhaWQgZGVidWdnaW5nIG9mIFhlbiBieSBlbnN1cmlu
Zw0oWEVOKSB0aGF0IGFsbCBvdXRwdXQgaXMgc3luY2hyb25vdXNseSBkZWxpdmVyZWQgb24gdGhl
IHNlcmlhbCBsaW5lLg0oWEVOKSBIb3dldmVyIGl0IGNhbiBpbnRyb2R1Y2UgU0lHTklGSUNBTlQg
bGF0ZW5jaWVzIGFuZCBhZmZlY3QNKFhFTikgdGltZWtlZXBpbmcuIEl0IGlzIE5PVCByZWNvbW1l
bmRlZCBmb3IgcHJvZHVjdGlvbiB1c2UhDShYRU4pICoqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKg0oWEVOKSAzLi4uIDIuLi4gMS4uLiANKFhFTikgWGVu
IGlzIHJlbGlucXVpc2hpbmcgVkdBIGNvbnNvbGUuDShYRU4pICoqKiBTZXJpYWwgaW5wdXQgdG8g
RE9NMCAodHlwZSAnQ1RSTC1hJyB0aHJlZSB0aW1lcyB0byBzd2l0Y2ggaW5wdXQpDShYRU4pIEZy
ZWVkIDIwNDhrQiBpbml0IG1lbW9yeQ1bICAgIDAuMDAwMDAwXSBMaW51eCB2ZXJzaW9uIDYuMS42
OSAocm9vdEBwb2xsdXgpIChnY2MgKERlYmlhbiAxMi4yLjAtMTQpIDEyLjIuMCwgR05VIGxkIChH
TlUgQmludXRpbHMgZm9yIERlYmlhbikgMi40MCkgIzEwIFNNUCBQUkVFTVBUX0RZTkFNSUMgV2Vk
IEphbiAxNyAyMzo0NDozMSBFU1QgMjAyNA1bICAgIDAuMDAwMDAwXSBDb21tYW5kIGxpbmU6IHJv
b3Q9VVVJRD05MjJiMTBmMi1hODI2LTQ3ZmItYWIzOC04MzZmOWIzOTdmZjcgcm8gcm9vdGZsYWdz
PXN1YnZvbD1Acm9vdGZzICBlYXJseXByaW50az14ZW4gY29uc29sZT1odmMwDVsgICAgMC4wMDAw
MDBdIFtGaXJtd2FyZSBCdWddOiBUU0MgZG9lc24ndCBjb3VudCB3aXRoIFAwIGZyZXF1ZW5jeSEN
WyAgICAwLjAwMDAwMF0gQklPUy1wcm92aWRlZCBwaHlzaWNhbCBSQU0gbWFwOg1bICAgIDAuMDAw
MDAwXSBCSU9TLWU4MjA6IFttZW0gMHgwMDAwMDAwMDAwMDAwMDAwLTB4MDAwMDAwMDAwMDA5ZmZm
Zl0gdXNhYmxlDVsgICAgMC4wMDAwMDBdIEJJT1MtZTgyMDogW21lbSAweDAwMDAwMDAwMDAwYTAw
MDAtMHgwMDAwMDAwMDAwMGZmZmZmXSByZXNlcnZlZA1bICAgIDAuMDAwMDAwXSBCSU9TLWU4MjA6
IFttZW0gMHgwMDAwMDAwMDAwMTAwMDAwLTB4MDAwMDAwMDAwM2ZmZmZmZl0gdXNhYmxlDVsgICAg
MC4wMDAwMDBdIEJJT1MtZTgyMDogW21lbSAweDAwMDAwMDAwMDQwMDAwMDAtMHgwMDAwMDAwMDA0
MDQ1ZmZmXSBBQ1BJIE5WUw1bICAgIDAuMDAwMDAwXSBCSU9TLWU4MjA6IFttZW0gMHgwMDAwMDAw
MDA0MDQ2MDAwLTB4MDAwMDAwMDAwOWFmZWZmZl0gdXNhYmxlDVsgICAgMC4wMDAwMDBdIEJJT1Mt
ZTgyMDogW21lbSAweDAwMDAwMDAwMDlhZmYwMDAtMHgwMDAwMDAwMDA5ZmZmZmZmXSByZXNlcnZl
ZA1bICAgIDAuMDAwMDAwXSBCSU9TLWU4MjA6IFttZW0gMHgwMDAwMDAwMDBhMDAwMDAwLTB4MDAw
MDAwMDAwYWZmZmZmZl0gdXNhYmxlDVsgICAgMC4wMDAwMDBdIEJJT1MtZTgyMDogW21lbSAweDAw
MDAwMDAwMGIwMDAwMDAtMHgwMDAwMDAwMDBiMDIwZmZmXSByZXNlcnZlZA1bICAgIDAuMDAwMDAw
XSBCSU9TLWU4MjA6IFttZW0gMHgwMDAwMDAwMDBiMDIxMDAwLTB4MDAwMDAwMDBhMDRlOGZmZl0g
dXNhYmxlDVsgICAgMC4wMDAwMDBdIEJJT1MtZTgyMDogW21lbSAweDAwMDAwMDAwYTA0ZTkwMDAt
MHgwMDAwMDAwMGE2NGU4ZmZmXSByZXNlcnZlZA1bICAgIDAuMDAwMDAwXSBCSU9TLWU4MjA6IFtt
ZW0gMHgwMDAwMDAwMGE2NGU5MDAwLTB4MDAwMDAwMDBhNzQ3ZWZmZl0gQUNQSSBkYXRhDVsgICAg
MC4wMDAwMDBdIEJJT1MtZTgyMDogW21lbSAweDAwMDAwMDAwYTc0N2YwMDAtMHgwMDAwMDAwMGE5
NDdlZmZmXSBBQ1BJIE5WUw1bICAgIDAuMDAwMDAwXSBCSU9TLWU4MjA6IFttZW0gMHgwMDAwMDAw
MGE5NDdmMDAwLTB4MDAwMDAwMDBhZGRmZWZmZl0gcmVzZXJ2ZWQNWyAgICAwLjAwMDAwMF0gQklP
Uy1lODIwOiBbbWVtIDB4MDAwMDAwMDBhZGRmZjAwMC0weDAwMDAwMDAwYWZmZmFiOWJdIHVzYWJs
ZQ1bICAgIDAuMDAwMDAwXSBCSU9TLWU4MjA6IFttZW0gMHgwMDAwMDAwMGFmZmZhYjljLTB4MDAw
MDAwMDBhZmZmYWYxN10gQUNQSSBkYXRhDVsgICAgMC4wMDAwMDBdIEJJT1MtZTgyMDogW21lbSAw
eDAwMDAwMDAwYWZmZmIwMDAtMHgwMDAwMDAwMGJmZmZmZmZmXSByZXNlcnZlZA1bICAgIDAuMDAw
MDAwXSBCSU9TLWU4MjA6IFttZW0gMHgwMDAwMDAwMGRmMjAwMDAwLTB4MDAwMDAwMDBkZjJmZmZm
Zl0gcmVzZXJ2ZWQNWyAgICAwLjAwMDAwMF0gQklPUy1lODIwOiBbbWVtIDB4MDAwMDAwMDBlMDAw
MDAwMC0weDAwMDAwMDAwZWZmZmZmZmZdIHJlc2VydmVkDVsgICAgMC4wMDAwMDBdIEJJT1MtZTgy
MDogW21lbSAweDAwMDAwMDAwZmVhMDAwMDAtMHgwMDAwMDAwMGZlYWZmZmZmXSByZXNlcnZlZA1b
ICAgIDAuMDAwMDAwXSBCSU9TLWU4MjA6IFttZW0gMHgwMDAwMDAwMGZlYzAwMDAwLTB4MDAwMDAw
MDBmZWMwMGZmZl0gcmVzZXJ2ZWQNWyAgICAwLjAwMDAwMF0gQklPUy1lODIwOiBbbWVtIDB4MDAw
MDAwMDBmZWMxMDAwMC0weDAwMDAwMDAwZmVjMTBmZmZdIHJlc2VydmVkDVsgICAgMC4wMDAwMDBd
IEJJT1MtZTgyMDogW21lbSAweDAwMDAwMDAwZmVjMzAwMDAtMHgwMDAwMDAwMGZlYzMwZmZmXSBy
ZXNlcnZlZA1bICAgIDAuMDAwMDAwXSBCSU9TLWU4MjA6IFttZW0gMHgwMDAwMDAwMGZlZDAwMDAw
LTB4MDAwMDAwMDBmZWQwMGZmZl0gcmVzZXJ2ZWQNWyAgICAwLjAwMDAwMF0gQklPUy1lODIwOiBb
bWVtIDB4MDAwMDAwMDBmZWQ0MDAwMC0weDAwMDAwMDAwZmVkNDRmZmZdIHJlc2VydmVkDVsgICAg
MC4wMDAwMDBdIEJJT1MtZTgyMDogW21lbSAweDAwMDAwMDAwZmVkODAwMDAtMHgwMDAwMDAwMGZl
ZDhmZmZmXSByZXNlcnZlZA1bICAgIDAuMDAwMDAwXSBCSU9TLWU4MjA6IFttZW0gMHgwMDAwMDAw
MGZmMDAwMDAwLTB4MDAwMDAwMDBmZmZmZmZmZl0gcmVzZXJ2ZWQNWyAgICAwLjAwMDAwMF0gQklP
Uy1lODIwOiBbbWVtIDB4MDAwMDAwMDEwMDAwMDAwMC0weDAwMDAwMDAyNWRlZTJmZmZdIHVzYWJs
ZQ1bICAgIDAuMDAwMDAwXSBCSU9TLWU4MjA6IFttZW0gMHgwMDAwMDAwMjVkZWUzMDAwLTB4MDAw
MDAwNDAzZGJiZmZmZl0gdW51c2FibGUNWyAgICAwLjAwMDAwMF0gQklPUy1lODIwOiBbbWVtIDB4
MDAwMDAwNDAzZGJjMDAwMC0weDAwMDAwMDQwM2ZmZmZmZmZdIHJlc2VydmVkDVsgICAgMC4wMDAw
MDBdIHByaW50azogYm9vdGNvbnNvbGUgW3hlbmJvb3QwXSBlbmFibGVkDVsgICAgMC4wMDAwMDBd
IE5YIChFeGVjdXRlIERpc2FibGUpIHByb3RlY3Rpb246IGFjdGl2ZQ1bICAgIDAuMDAwMDAwXSBl
Zmk6IEVGSSB2Mi45MCBieSBBbWVyaWNhbiBNZWdhdHJlbmRzDVsgICAgMC4wMDAwMDBdIGVmaTog
QUNQST0weGE5NDYzMDAwIEFDUEkgMi4wPTB4YTk0NjMwMTQgU01CSU9TPTB4YWQ5ZjQwMDAgU01C
SU9TIDMuMD0weGFkOWYzMDAwIE1FTUFUVFI9MHg5OWUyNjY5OCBFU1JUPTB4YTc0NjYwMTggDVsg
ICAgMC4wMDAwMDBdIHNlY3VyZWJvb3Q6IFNlY3VyZSBib290IGRpc2FibGVkDVsgICAgMC4wMDAw
MDBdIFNNQklPUyAzLjYuMCBwcmVzZW50Lg1bICAgIDAuMDAwMDAwXSBETUk6IFRvIEJlIEZpbGxl
ZCBCeSBPLkUuTS4gVFJYNTAgV1MvVFJYNTAgV1MsIEJJT1MgNy4wOCAwMS8xNi8yMDI0DVsgICAg
MC4wMDAwMDBdIEh5cGVydmlzb3IgZGV0ZWN0ZWQ6IFhlbiBIVk0NWyAgICAwLjAwMDAwMF0gWGVu
IHZlcnNpb24gNC4xNy4NWyAgICAwLjA0MzkxNl0gdHNjOiBGYXN0IFRTQyBjYWxpYnJhdGlvbiBm
YWlsZWQNWyAgICAwLjA0ODg0M10gdHNjOiBEZXRlY3RlZCA0MTk5Ljk2MCBNSHogcHJvY2Vzc29y
DVsgICAgMC4wNTQzNzVdIGxhc3RfcGZuID0gMHgyNWRlZTMgbWF4X2FyY2hfcGZuID0gMHg0MDAw
MDAwMDANWyAgICAwLjA2MjAzM10geDg2L1BBVDogQ29uZmlndXJhdGlvbiBbMC03XTogV0IgIFdD
ICBVQy0gVUMgIFdCICBXUCAgVUMtIFdUICANWyAgICAwLjA3MDQxN10gQ1BVIE1UUlJzIGFsbCBi
bGFuayAtIHZpcnR1YWxpemVkIHN5c3RlbS4NWyAgICAwLjA3NjIwOV0gbGFzdF9wZm4gPSAweGFm
ZmZhIG1heF9hcmNoX3BmbiA9IDB4NDAwMDAwMDAwDVsgICAgMC4wODU1OTRdIFVzaW5nIEdCIHBh
Z2VzIGZvciBkaXJlY3QgbWFwcGluZw1bICAgIDAuMDkxMTg0XSBSQU1ESVNLOiBbbWVtIDB4MDQw
NDYwMDAtMHgwNjhjZGZmZl0NWyAgICAwLjA5NjUzM10gQUNQSTogRWFybHkgdGFibGUgY2hlY2tz
dW0gdmVyaWZpY2F0aW9uIGRpc2FibGVkDVsgICAgMC4xMDMyNDhdIEFDUEk6IFJTRFAgMHgwMDAw
MDAwMEFGRkZBQjlDIDAwMDAyNCAodjAyIEFNRCAgICkNWyAgICAwLjEwOTcxNl0gQUNQSTogWFNE
VCAweDAwMDAwMDAwQUZGRkFCQzAgMDAwMEM0ICh2MDEgQU1EICAgIEEgTSBJICAgIDAwMDAwMDAx
IEFNSSAgMDEwMDAwMTMpDVsgICAgMC4xMTk2NjNdIEFDUEk6IEFQSUMgMHgwMDAwMDAwMEFGRkZB
Qzg0IDAwMDM3QyAodjA0IEFNRCAgICBBIE0gSSAgICAwMDAwMDAwMSBBTUkgIDAwMDEwMDEzKQ1b
ICAgIDAuMTI5NTM4XSBBQ1BJOiBGQUNQIDB4MDAwMDAwMDBBNzQ3QzAwMCAwMDAxMTQgKHYwNiBB
TUQgICAgQSBNIEkgICAgMDAwMDAwMDEgQU1JICAwMDAxMDAxMykNWyAgICAwLjEzOTI1MF0gQUNQ
STogRFNEVCAweDAwMDAwMDAwQTc0NkUwMDAgMDBEMkY2ICh2MDIgQU1EICAgIEEgTSBJICAgIDAw
MDAwMDAxIElOVEwgMjAyMzAzMzEpDVsgICAgMC4xNDg3MTddIEFDUEk6IEZBQ1MgMHgwMDAwMDAw
MEE5NDVBMDAwIDAwMDA0MA1bICAgIDAuMTUzODA1XSBBQ1BJOiBTU0RUIDB4MDAwMDAwMDBBNzQ3
RTAwMCAwMDA5Q0MgKHYwMiBBTUQgICAgQk9VTERFUkcgMDAwMDAwMDIgTVNGVCAwNDAwMDAwMCkN
WyAgICAwLjE2MzMwOV0gQUNQSTogU1NEVCAweDAwMDAwMDAwQTc0N0QwMDAgMDAwMDY3ICh2MDIg
QU1EICAgIENQTURTTSAgIDAwMDAwMDAxIElOVEwgMjAyMzAzMzEpDVsgICAgMC4xNzI4MTNdIEFD
UEk6IE1DRkcgMHgwMDAwMDAwMEE3NDZDMDAwIDAwMDAzQyAodjAxIEFNRCAgICBBIE0gSSAgICAw
MDAwMDAwMSBNU0ZUIDAwMDEwMDEzKQ1bICAgIDAuMTgyMzUxXSBBQ1BJOiBTU0RUIDB4MDAwMDAw
MDBBNzQ2QjAwMCAwMDA1QzUgKHYwMiBBTUQgICAgQ1BVU1NEVCAgMDAwMDAwMDEgQU1JICAwMDAw
MDAwMSkNWyAgICAwLjE5MTgwNl0gQUNQSTogU1NEVCAweDAwMDAwMDAwQTc0NjgwMDAgMDAxQjUz
ICh2MDIgQU1EICAgIENQTVJBUyAgIDAwMDAwMDAxIElOVEwgMjAyMzAzMzEpDVsgICAgMC4yMDEz
MDhdIEFDUEk6IEZQRFQgMHgwMDAwMDAwMEE3NDY1MDAwIDAwMDA0NCAodjAxIEFNRCAgICBBIE0g
SSAgICAwMTA3MjAwOSBBTUkgIDAxMDAwMDEzKQ1bICAgIDAuMjEwODE5XSBBQ1BJOiBTU0RUIDB4
MDAwMDAwMDBBNzQ2MjAwMCAwMDI0NDggKHYwMiBBTUQgICAgR1BQX1BNRV8gMDAwMDAwMDEgSU5U
TCAyMDIzMDMzMSkNWyAgICAwLjIyMDM0M10gQUNQSTogU1NEVCAweDAwMDAwMDAwQTc0NUYwMDAg
MDAyNDQ4ICh2MDIgQU1EICAgIEdQUF9QTUVfIDAwMDAwMDAxIElOVEwgMjAyMzAzMzEpDVsgICAg
MC4yMjk4ODRdIEFDUEk6IFNTRFQgMHgwMDAwMDAwMEE3NDVDMDAwIDAwMjQ0OCAodjAyIEFNRCAg
ICBHUFBfUE1FXyAwMDAwMDAwMSBJTlRMIDIwMjMwMzMxKQ1bICAgIDAuMjM5MzUxXSBBQ1BJOiBT
U0RUIDB4MDAwMDAwMDBBNzQ1OTAwMCAwMDI0NDggKHYwMiBBTUQgICAgR1BQX1BNRV8gMDAwMDAw
MDEgSU5UTCAyMDIzMDMzMSkNWyAgICAwLjI0ODc4MF0gQUNQSTogU1NEVCAweDAwMDAwMDAwQTc0
M0UwMDAgMDBBNDBFICh2MDIgQU1EICAgIEFNRCBDUFUgIDAwMDAwMDAxIEFNRCAgMDAwMDAwMDEp
DVsgICAgMC4yNTgyODhdIEFDUEk6IFNTRFQgMHgwMDAwMDAwMEE2ODRDMDAwIDAwMDZENCAodjAy
IEFNRCAgICBDUE1XTFJDICAwMDAwMDAwMSBJTlRMIDIwMjMwMzMxKQ1bICAgIDAuMjY3ODE1XSBB
Q1BJOiBTU0RUIDB4MDAwMDAwMDBBNjg0MjAwMCAwMDk4MkYgKHYwMiBBTUQgICAgQ1BNQ01OICAg
MDAwMDAwMDEgSU5UTCAyMDIzMDMzMSkNWyAgICAwLjI3NzMzOV0gQUNQSTogU1NEVCAweDAwMDAw
MDAwQTY4M0MwMDAgMDAyMzg3ICh2MDIgQU1EICAgIEFPRCAgICAgIDAwMDAwMDAxIElOVEwgMjAy
MzAzMzEpDVsgICAgMC4yODY4NDBdIEFDUEk6IFNTRFQgMHgwMDAwMDAwMEE2ODNCMDAwIDAwMDUw
MCAodjAyIEFNRCAgICBNRU1UT09MMCAwMDAwMDAwMiBJTlRMIDIwMjMwMzMxKQ1bICAgIDAuMjk2
MjgzXSBBQ1BJOiBTU0RUIDB4MDAwMDAwMDBBNjgzQTAwMCAwMDA5NkEgKHYwMiBBTUQgICAgQ1BN
TVNPU0MgMDAwMDAwMDEgSU5UTCAyMDIzMDMzMSkNWyAgICAwLjMwNTg0MV0gQUNQSTogU1NEVCAw
eDAwMDAwMDAwQTY4MzkwMDAgMDAwQjcyICh2MDIgQU1EICAgIENQTUFDUFY2IDAwMDAwMDAxIElO
VEwgMjAyMzAzMzEpDVsgICAgMC4zMTUyODhdIEFDUEk6IFNTRFQgMHgwMDAwMDAwMEE2ODM4MDAw
IDAwMDQ0RSAodjAyIEFNRCAgICBBbWRUYWJsZSAwMDAwMDAwMSBJTlRMIDIwMjMwMzMxKQ1bICAg
IDAuMzI0ODAyXSBBQ1BJOiBSZXNlcnZpbmcgQVBJQyB0YWJsZSBtZW1vcnkgYXQgW21lbSAweGFm
ZmZhYzg0LTB4YWZmZmFmZmZdDVsgICAgMC4zMzI1OTJdIEFDUEk6IFJlc2VydmluZyBGQUNQIHRh
YmxlIG1lbW9yeSBhdCBbbWVtIDB4YTc0N2MwMDAtMHhhNzQ3YzExM10NWyAgICAwLjM0MDQxOV0g
QUNQSTogUmVzZXJ2aW5nIERTRFQgdGFibGUgbWVtb3J5IGF0IFttZW0gMHhhNzQ2ZTAwMC0weGE3
NDdiMmY1XQ1bICAgIDAuMzQ4MTg5XSBBQ1BJOiBSZXNlcnZpbmcgRkFDUyB0YWJsZSBtZW1vcnkg
YXQgW21lbSAweGE5NDVhMDAwLTB4YTk0NWEwM2ZdDVsgICAgMC4zNTYwNThdIEFDUEk6IFJlc2Vy
dmluZyBTU0RUIHRhYmxlIG1lbW9yeSBhdCBbbWVtIDB4YTc0N2UwMDAtMHhhNzQ3ZTljYl0NWyAg
ICAwLjM2MzkwNl0gQUNQSTogUmVzZXJ2aW5nIFNTRFQgdGFibGUgbWVtb3J5IGF0IFttZW0gMHhh
NzQ3ZDAwMC0weGE3NDdkMDY2XQ1bICAgIDAuMzcxNzU3XSBBQ1BJOiBSZXNlcnZpbmcgTUNGRyB0
YWJsZSBtZW1vcnkgYXQgW21lbSAweGE3NDZjMDAwLTB4YTc0NmMwM2JdDVsgICAgMC4zNzk1NzZd
IEFDUEk6IFJlc2VydmluZyBTU0RUIHRhYmxlIG1lbW9yeSBhdCBbbWVtIDB4YTc0NmIwMDAtMHhh
NzQ2YjVjNF0NWyAgICAwLjM4NzQzN10gQUNQSTogUmVzZXJ2aW5nIFNTRFQgdGFibGUgbWVtb3J5
IGF0IFttZW0gMHhhNzQ2ODAwMC0weGE3NDY5YjUyXQ1bICAgIDAuMzk1MzM3XSBBQ1BJOiBSZXNl
cnZpbmcgRlBEVCB0YWJsZSBtZW1vcnkgYXQgW21lbSAweGE3NDY1MDAwLTB4YTc0NjUwNDNdDVsg
ICAgMC40MDMxNTNdIEFDUEk6IFJlc2VydmluZyBTU0RUIHRhYmxlIG1lbW9yeSBhdCBbbWVtIDB4
YTc0NjIwMDAtMHhhNzQ2NDQ0N10NWyAgICAwLjQxMDk4OV0gQUNQSTogUmVzZXJ2aW5nIFNTRFQg
dGFibGUgbWVtb3J5IGF0IFttZW0gMHhhNzQ1ZjAwMC0weGE3NDYxNDQ3XQ1bICAgIDAuNDE4ODAy
XSBBQ1BJOiBSZXNlcnZpbmcgU1NEVCB0YWJsZSBtZW1vcnkgYXQgW21lbSAweGE3NDVjMDAwLTB4
YTc0NWU0NDddDVsgICAgMC40MjY2NDJdIEFDUEk6IFJlc2VydmluZyBTU0RUIHRhYmxlIG1lbW9y
eSBhdCBbbWVtIDB4YTc0NTkwMDAtMHhhNzQ1YjQ0N10NWyAgICAwLjQzNDUyOV0gQUNQSTogUmVz
ZXJ2aW5nIFNTRFQgdGFibGUgbWVtb3J5IGF0IFttZW0gMHhhNzQzZTAwMC0weGE3NDQ4NDBkXQ1b
ICAgIDAuNDQyMzkzXSBBQ1BJOiBSZXNlcnZpbmcgU1NEVCB0YWJsZSBtZW1vcnkgYXQgW21lbSAw
eGE2ODRjMDAwLTB4YTY4NGM2ZDNdDVsgICAgMC40NTAyMDNdIEFDUEk6IFJlc2VydmluZyBTU0RU
IHRhYmxlIG1lbW9yeSBhdCBbbWVtIDB4YTY4NDIwMDAtMHhhNjg0YjgyZV0NWyAgICAwLjQ1ODAz
OF0gQUNQSTogUmVzZXJ2aW5nIFNTRFQgdGFibGUgbWVtb3J5IGF0IFttZW0gMHhhNjgzYzAwMC0w
eGE2ODNlMzg2XQ1bICAgIDAuNDY1ODUzXSBBQ1BJOiBSZXNlcnZpbmcgU1NEVCB0YWJsZSBtZW1v
cnkgYXQgW21lbSAweGE2ODNiMDAwLTB4YTY4M2I0ZmZdDVsgICAgMC40NzM4MDVdIEFDUEk6IFJl
c2VydmluZyBTU0RUIHRhYmxlIG1lbW9yeSBhdCBbbWVtIDB4YTY4M2EwMDAtMHhhNjgzYTk2OV0N
WyAgICAwLjQ4MTYyNl0gQUNQSTogUmVzZXJ2aW5nIFNTRFQgdGFibGUgbWVtb3J5IGF0IFttZW0g
MHhhNjgzOTAwMC0weGE2ODM5YjcxXQ1bICAgIDAuNDg5NDc1XSBBQ1BJOiBSZXNlcnZpbmcgU1NE
VCB0YWJsZSBtZW1vcnkgYXQgW21lbSAweGE2ODM4MDAwLTB4YTY4Mzg0NGRdDVsgICAgMC40OTc0
MTZdIE5vIE5VTUEgY29uZmlndXJhdGlvbiBmb3VuZA1bICAgIDAuNTAxNjIzXSBGYWtpbmcgYSBu
b2RlIGF0IFttZW0gMHgwMDAwMDAwMDAwMDAwMDAwLTB4MDAwMDAwMDI1ZGVlMmZmZl0NWyAgICAw
LjUwOTA2MF0gTk9ERV9EQVRBKDApIGFsbG9jYXRlZCBbbWVtIDB4MjVkZWI4MDAwLTB4MjVkZWUy
ZmZmXQ1bICAgIDAuNTE1ODc1XSBab25lIHJhbmdlczoNWyAgICAwLjUxODY3NF0gICBETUEgICAg
ICBbbWVtIDB4MDAwMDAwMDAwMDAwMTAwMC0weDAwMDAwMDAwMDBmZmZmZmZdDVsgICAgMC41MjU4
MTddICAgRE1BMzIgICAgW21lbSAweDAwMDAwMDAwMDEwMDAwMDAtMHgwMDAwMDAwMGZmZmZmZmZm
XQ1bICAgIDAuNTMzMDAyXSAgIE5vcm1hbCAgIFttZW0gMHgwMDAwMDAwMTAwMDAwMDAwLTB4MDAw
MDAwMDI1ZGVlMmZmZl0NWyAgICAwLjU0MDA2Ml0gICBEZXZpY2UgICBlbXB0eQ1bICAgIDAuNTQz
MzM2XSBNb3ZhYmxlIHpvbmUgc3RhcnQgZm9yIGVhY2ggbm9kZQ1bICAgIDAuNTQ4MzIyXSBFYXJs
eSBtZW1vcnkgbm9kZSByYW5nZXMNWyAgICAwLjU1MjU1Ml0gICBub2RlICAgMDogW21lbSAweDAw
MDAwMDAwMDAwMDEwMDAtMHgwMDAwMDAwMDAwMDlmZmZmXQ1bICAgIDAuNTU5OTQyXSAgIG5vZGUg
ICAwOiBbbWVtIDB4MDAwMDAwMDAwMDEwMDAwMC0weDAwMDAwMDAwMDNmZmZmZmZdDVsgICAgMC41
NjcxODBdICAgbm9kZSAgIDA6IFttZW0gMHgwMDAwMDAwMDA0MDQ2MDAwLTB4MDAwMDAwMDAwOWFm
ZWZmZl0NWyAgICAwLjU3NDIwNV0gICBub2RlICAgMDogW21lbSAweDAwMDAwMDAwMGEwMDAwMDAt
MHgwMDAwMDAwMDBhZmZmZmZmXQ1bICAgIDAuNTgxNTgwXSAgIG5vZGUgICAwOiBbbWVtIDB4MDAw
MDAwMDAwYjAyMTAwMC0weDAwMDAwMDAwYTA0ZThmZmZdDVsgICAgMC41ODg5MDVdICAgbm9kZSAg
IDA6IFttZW0gMHgwMDAwMDAwMGFkZGZmMDAwLTB4MDAwMDAwMDBhZmZmOWZmZl0NWyAgICAwLjU5
NjI0N10gICBub2RlICAgMDogW21lbSAweDAwMDAwMDAxMDAwMDAwMDAtMHgwMDAwMDAwMjVkZWUy
ZmZmXQ1bICAgIDAuNjAzNTg5XSBJbml0bWVtIHNldHVwIG5vZGUgMCBbbWVtIDB4MDAwMDAwMDAw
MDAwMTAwMC0weDAwMDAwMDAyNWRlZTJmZmZdDVsgICAgMC42MTE2ODddIE9uIG5vZGUgMCwgem9u
ZSBETUE6IDEgcGFnZXMgaW4gdW5hdmFpbGFibGUgcmFuZ2VzDVsgICAgMC42MTE3MDRdIE9uIG5v
ZGUgMCwgem9uZSBETUE6IDk2IHBhZ2VzIGluIHVuYXZhaWxhYmxlIHJhbmdlcw1bICAgIDAuNjE4
NjcyXSBPbiBub2RlIDAsIHpvbmUgRE1BMzI6IDcwIHBhZ2VzIGluIHVuYXZhaWxhYmxlIHJhbmdl
cw1bICAgIDAuNjI1NDg5XSBPbiBub2RlIDAsIHpvbmUgRE1BMzI6IDEyODEgcGFnZXMgaW4gdW5h
dmFpbGFibGUgcmFuZ2VzDVsgICAgMC42MzUwMjNdIE9uIG5vZGUgMCwgem9uZSBETUEzMjogMzMg
cGFnZXMgaW4gdW5hdmFpbGFibGUgcmFuZ2VzDVsgICAgMC42NDI0NzRdIE9uIG5vZGUgMCwgem9u
ZSBETUEzMjogNTU1NzQgcGFnZXMgaW4gdW5hdmFpbGFibGUgcmFuZ2VzDVsgICAgMC42NDk0NTld
IE9uIG5vZGUgMCwgem9uZSBOb3JtYWw6IDYgcGFnZXMgaW4gdW5hdmFpbGFibGUgcmFuZ2VzDVsg
ICAgMC42NTY4NTddIE9uIG5vZGUgMCwgem9uZSBOb3JtYWw6IDg0NzcgcGFnZXMgaW4gdW5hdmFp
bGFibGUgcmFuZ2VzDVsgICAgMC42NjQ1MzZdIEFDUEk6IFBNLVRpbWVyIElPIFBvcnQ6IDB4ODA4
DVsgICAgMC42NzYzMTldIElPQVBJQ1swXTogYXBpY19pZCAxMjgsIHZlcnNpb24gMTcsIGFkZHJl
c3MgMHhmZWMwMDAwMCwgR1NJIDAtMjMNWyAgICAwLjY4NDYwNF0gSU9BUElDWzFdOiBhcGljX2lk
IDEyOSwgdmVyc2lvbiAxNywgYWRkcmVzcyAweGRmMTgwMDAwLCBHU0kgMTIwLTE1MQ1bICAgIDAu
NjkyNzk3XSBJT0FQSUNbMl06IGFwaWNfaWQgMTMwLCB2ZXJzaW9uIDE3LCBhZGRyZXNzIDB4ZDMx
ODAwMDAsIEdTSSA4OC0xMTkNWyAgICAwLjcwMTI5N10gSU9BUElDWzNdOiBhcGljX2lkIDEzMSwg
dmVyc2lvbiAxNywgYWRkcmVzcyAweGY3MTgwMDAwLCBHU0kgMjQtNTUNWyAgICAwLjcwOTQ2MF0g
SU9BUElDWzRdOiBhcGljX2lkIDEzMiwgdmVyc2lvbiAxNywgYWRkcmVzcyAweGM5MTgwMDAwLCBH
U0kgNTYtODcNWyAgICAwLjcxNzc2NV0gQUNQSTogSU5UX1NSQ19PVlIgKGJ1cyAwIGJ1c19pcnEg
MCBnbG9iYWxfaXJxIDIgZGZsIGRmbCkNWyAgICAwLjcyNDkyMF0gQUNQSTogSU5UX1NSQ19PVlIg
KGJ1cyAwIGJ1c19pcnEgOSBnbG9iYWxfaXJxIDkgbG93IGxldmVsKQ1bICAgIDAuNzMyNTc5XSBB
Q1BJOiBVc2luZyBBQ1BJIChNQURUKSBmb3IgU01QIGNvbmZpZ3VyYXRpb24gaW5mb3JtYXRpb24N
WyAgICAwLjczOTkxOF0gc21wYm9vdDogQWxsb3dpbmcgNDggQ1BVcywgMCBob3RwbHVnIENQVXMN
WyAgICAwLjc0NTYzM10gUE06IGhpYmVybmF0aW9uOiBSZWdpc3RlcmVkIG5vc2F2ZSBtZW1vcnk6
IFttZW0gMHgwMDAwMDAwMC0weDAwMDAwZmZmXQ1bICAgIDAuNzU0NTA0XSBQTTogaGliZXJuYXRp
b246IFJlZ2lzdGVyZWQgbm9zYXZlIG1lbW9yeTogW21lbSAweDAwMGEwMDAwLTB4MDAwZmZmZmZd
DVsgICAgMC43NjMwNzldIFBNOiBoaWJlcm5hdGlvbjogUmVnaXN0ZXJlZCBub3NhdmUgbWVtb3J5
OiBbbWVtIDB4MDQwMDAwMDAtMHgwNDA0NWZmZl0NWyAgICAwLjc3MTY5MV0gUE06IGhpYmVybmF0
aW9uOiBSZWdpc3RlcmVkIG5vc2F2ZSBtZW1vcnk6IFttZW0gMHgwOWFmZjAwMC0weDA5ZmZmZmZm
XQ1bICAgIDAuNzgwMjQ1XSBQTTogaGliZXJuYXRpb246IFJlZ2lzdGVyZWQgbm9zYXZlIG1lbW9y
eTogW21lbSAweDBiMDAwMDAwLTB4MGIwMjBmZmZdDVsgICAgMC43ODg2NDRdIFBNOiBoaWJlcm5h
dGlvbjogUmVnaXN0ZXJlZCBub3NhdmUgbWVtb3J5OiBbbWVtIDB4YTA0ZTkwMDAtMHhhNjRlOGZm
Zl0NWyAgICAwLjc5NzY0NF0gUE06IGhpYmVybmF0aW9uOiBSZWdpc3RlcmVkIG5vc2F2ZSBtZW1v
cnk6IFttZW0gMHhhNjRlOTAwMC0weGE3NDdlZmZmXQ1bICAgIDAuODA2NTgzXSBQTTogaGliZXJu
YXRpb246IFJlZ2lzdGVyZWQgbm9zYXZlIG1lbW9yeTogW21lbSAweGE3NDdmMDAwLTB4YTk0N2Vm
ZmZdDVsgICAgMC44MTU0MjhdIFBNOiBoaWJlcm5hdGlvbjogUmVnaXN0ZXJlZCBub3NhdmUgbWVt
b3J5OiBbbWVtIDB4YTk0N2YwMDAtMHhhZGRmZWZmZl0NWyAgICAwLjgyNDMzNF0gUE06IGhpYmVy
bmF0aW9uOiBSZWdpc3RlcmVkIG5vc2F2ZSBtZW1vcnk6IFttZW0gMHhhZmZmYTAwMC0weGFmZmZh
ZmZmXQ1bICAgIDAuODMzMjkwXSBQTTogaGliZXJuYXRpb246IFJlZ2lzdGVyZWQgbm9zYXZlIG1l
bW9yeTogW21lbSAweGFmZmZhMDAwLTB4YWZmZmFmZmZdDVsgICAgMC44NDIzMDddIFBNOiBoaWJl
cm5hdGlvbjogUmVnaXN0ZXJlZCBub3NhdmUgbWVtb3J5OiBbbWVtIDB4YWZmZmIwMDAtMHhiZmZm
ZmZmZl0NWyAgICAwLjg1MTM1MV0gUE06IGhpYmVybmF0aW9uOiBSZWdpc3RlcmVkIG5vc2F2ZSBt
ZW1vcnk6IFttZW0gMHhjMDAwMDAwMC0weGRmMWZmZmZmXQ1bICAgIDAuODYwMzYwXSBQTTogaGli
ZXJuYXRpb246IFJlZ2lzdGVyZWQgbm9zYXZlIG1lbW9yeTogW21lbSAweGRmMjAwMDAwLTB4ZGYy
ZmZmZmZdDVsgICAgMC44NjkzODJdIFBNOiBoaWJlcm5hdGlvbjogUmVnaXN0ZXJlZCBub3NhdmUg
bWVtb3J5OiBbbWVtIDB4ZGYzMDAwMDAtMHhkZmZmZmZmZl0NWyAgICAwLjg3ODAxOV0gUE06IGhp
YmVybmF0aW9uOiBSZWdpc3RlcmVkIG5vc2F2ZSBtZW1vcnk6IFttZW0gMHhlMDAwMDAwMC0weGVm
ZmZmZmZmXQ1bICAgIDAuODg2ODI1XSBQTTogaGliZXJuYXRpb246IFJlZ2lzdGVyZWQgbm9zYXZl
IG1lbW9yeTogW21lbSAweGYwMDAwMDAwLTB4ZmU5ZmZmZmZdDVsgICAgMC44OTU3OTBdIFBNOiBo
aWJlcm5hdGlvbjogUmVnaXN0ZXJlZCBub3NhdmUgbWVtb3J5OiBbbWVtIDB4ZmVhMDAwMDAtMHhm
ZWFmZmZmZl0NWyAgICAwLjkwNDczMF0gUE06IGhpYmVybmF0aW9uOiBSZWdpc3RlcmVkIG5vc2F2
ZSBtZW1vcnk6IFttZW0gMHhmZWIwMDAwMC0weGZlYmZmZmZmXQ1bICAgIDAuOTEzMzg5XSBQTTog
aGliZXJuYXRpb246IFJlZ2lzdGVyZWQgbm9zYXZlIG1lbW9yeTogW21lbSAweGZlYzAwMDAwLTB4
ZmVjMDBmZmZdDVsgICAgMC45MjIwNTRdIFBNOiBoaWJlcm5hdGlvbjogUmVnaXN0ZXJlZCBub3Nh
dmUgbWVtb3J5OiBbbWVtIDB4ZmVjMDEwMDAtMHhmZWMwZmZmZl0NWyAgICAwLjkzMTA5OV0gUE06
IGhpYmVybmF0aW9uOiBSZWdpc3RlcmVkIG5vc2F2ZSBtZW1vcnk6IFttZW0gMHhmZWMxMDAwMC0w
eGZlYzEwZmZmXQ1bICAgIDAuOTM5NzQ0XSBQTTogaGliZXJuYXRpb246IFJlZ2lzdGVyZWQgbm9z
YXZlIG1lbW9yeTogW21lbSAweGZlYzExMDAwLTB4ZmVjMmZmZmZdDVsgICAgMC45NDg3MjddIFBN
OiBoaWJlcm5hdGlvbjogUmVnaXN0ZXJlZCBub3NhdmUgbWVtb3J5OiBbbWVtIDB4ZmVjMzAwMDAt
MHhmZWMzMGZmZl0NWyAgICAwLjk1NzU1OV0gUE06IGhpYmVybmF0aW9uOiBSZWdpc3RlcmVkIG5v
c2F2ZSBtZW1vcnk6IFttZW0gMHhmZWMzMTAwMC0weGZlY2ZmZmZmXQ1bICAgIDAuOTY2MjUyXSBQ
TTogaGliZXJuYXRpb246IFJlZ2lzdGVyZWQgbm9zYXZlIG1lbW9yeTogW21lbSAweGZlZDAwMDAw
LTB4ZmVkMDBmZmZdDVsgICAgMC45NzUyNDNdIFBNOiBoaWJlcm5hdGlvbjogUmVnaXN0ZXJlZCBu
b3NhdmUgbWVtb3J5OiBbbWVtIDB4ZmVkMDEwMDAtMHhmZWQzZmZmZl0NWyAgICAwLjk4MzgyNl0g
UE06IGhpYmVybmF0aW9uOiBSZWdpc3RlcmVkIG5vc2F2ZSBtZW1vcnk6IFttZW0gMHhmZWQ0MDAw
MC0weGZlZDQ0ZmZmXQ1bICAgIDAuOTkyODcxXSBQTTogaGliZXJuYXRpb246IFJlZ2lzdGVyZWQg
bm9zYXZlIG1lbW9yeTogW21lbSAweGZlZDQ1MDAwLTB4ZmVkN2ZmZmZdDVsgICAgMS4wMDE4NjRd
IFBNOiBoaWJlcm5hdGlvbjogUmVnaXN0ZXJlZCBub3NhdmUgbWVtb3J5OiBbbWVtIDB4ZmVkODAw
MDAtMHhmZWQ4ZmZmZl0NWyAgICAxLjAxMDQ0MF0gUE06IGhpYmVybmF0aW9uOiBSZWdpc3RlcmVk
IG5vc2F2ZSBtZW1vcnk6IFttZW0gMHhmZWQ5MDAwMC0weGZlZmZmZmZmXQ1bICAgIDEuMDE5MzQw
XSBQTTogaGliZXJuYXRpb246IFJlZ2lzdGVyZWQgbm9zYXZlIG1lbW9yeTogW21lbSAweGZmMDAw
MDAwLTB4ZmZmZmZmZmZdDVsgICAgMS4wMjgxMTVdIFttZW0gMHhjMDAwMDAwMC0weGRmMWZmZmZm
XSBhdmFpbGFibGUgZm9yIFBDSSBkZXZpY2VzDVsgICAgMS4wMzUxMzBdIEJvb3Rpbmcga2VybmVs
IG9uIFhlbiBQVkgNWyAgICAxLjAzOTI4OF0gWGVuIHZlcnNpb246IDQuMTcuMy1wcmUNWyAgICAx
LjA0MzM5Nl0gY2xvY2tzb3VyY2U6IHJlZmluZWQtamlmZmllczogbWFzazogMHhmZmZmZmZmZiBt
YXhfY3ljbGVzOiAweGZmZmZmZmZmLCBtYXhfaWRsZV9uczogNzY0NTUxOTYwMDIxMTU2OCBucw1b
ICAgIDEuMDU4MjE3XSBzZXR1cF9wZXJjcHU6IE5SX0NQVVM6ODE5MiBucl9jcHVtYXNrX2JpdHM6
NDggbnJfY3B1X2lkczo0OCBucl9ub2RlX2lkczoxDVsgICAgMS4wNjc4MDBdIHBlcmNwdTogRW1i
ZWRkZWQgNjEgcGFnZXMvY3B1IHMyMTI5OTIgcjgxOTIgZDI4NjcyIHUyNjIxNDQNWyAgICAxLjA3
NTQ2M10gUFYgcXNwaW5sb2NrIGhhc2ggdGFibGUgZW50cmllczogMjU2IChvcmRlcjogMCwgNDA5
NiBieXRlcywgbGluZWFyKQ1bICAgIDEuMDg0MTQwXSBGYWxsYmFjayBvcmRlciBmb3IgTm9kZSAw
OiAwIA1bICAgIDEuMDg0MTQzXSBCdWlsdCAxIHpvbmVsaXN0cywgbW9iaWxpdHkgZ3JvdXBpbmcg
b24uICBUb3RhbCBwYWdlczogMjA2MDYzNw1bICAgIDEuMDk3MDYzXSBQb2xpY3kgem9uZTogTm9y
bWFsDVsgICAgMS4xMDA4MDVdIEtlcm5lbCBjb21tYW5kIGxpbmU6IHJvb3Q9VVVJRD05MjJiMTBm
Mi1hODI2LTQ3ZmItYWIzOC04MzZmOWIzOTdmZjcgcm8gcm9vdGZsYWdzPXN1YnZvbD1Acm9vdGZz
ICBlYXJseXByaW50az14ZW4gY29uc29sZT1odmMwDVsgICAgMS4xMTU0ODldIHJhbmRvbTogY3Ju
ZyBpbml0IGRvbmUNWyAgICAxLjExOTI3N10gcHJpbnRrOiBsb2dfYnVmX2xlbiBpbmRpdmlkdWFs
IG1heCBjcHUgY29udHJpYnV0aW9uOiA0MDk2IGJ5dGVzDVsgICAgMS4xMjc0NTFdIHByaW50azog
bG9nX2J1Zl9sZW4gdG90YWwgY3B1X2V4dHJhIGNvbnRyaWJ1dGlvbnM6IDE5MjUxMiBieXRlcw1b
ICAgIDEuMTM1NTgwXSBwcmludGs6IGxvZ19idWZfbGVuIG1pbiBzaXplOiAxMzEwNzIgYnl0ZXMN
WyAgICAxLjE0MTY2OF0gcHJpbnRrOiBsb2dfYnVmX2xlbjogNTI0Mjg4IGJ5dGVzDVsgICAgMS4x
NDY3NDJdIHByaW50azogZWFybHkgbG9nIGJ1ZiBmcmVlOiAxMTc1MDQoODklKQ1bICAgIDEuMTUy
Nzc3XSBEZW50cnkgY2FjaGUgaGFzaCB0YWJsZSBlbnRyaWVzOiAxMDQ4NTc2IChvcmRlcjogMTEs
IDgzODg2MDggYnl0ZXMsIGxpbmVhcikNWyAgICAxLjE2MTk5NF0gSW5vZGUtY2FjaGUgaGFzaCB0
YWJsZSBlbnRyaWVzOiA1MjQyODggKG9yZGVyOiAxMCwgNDE5NDMwNCBieXRlcywgbGluZWFyKQ1b
ICAgIDEuMTcwODM0XSBtZW0gYXV0by1pbml0OiBzdGFjazphbGwoemVybyksIGhlYXAgYWxsb2M6
b24sIGhlYXAgZnJlZTpvZmYNWyAgICAxLjE3ODczN10gc29mdHdhcmUgSU8gVExCOiBhcmVhIG51
bSA2NC4NWyAgICAxLjE5MDEzOV0gTWVtb3J5OiAyNjI1MTY0Sy84Mzg4NjAwSyBhdmFpbGFibGUg
KDE0MzQySyBrZXJuZWwgY29kZSwgMjMzMUsgcndkYXRhLCA5MDUySyByb2RhdGEsIDI3OTJLIGlu
aXQsIDE3NDE2SyBic3MsIDMyMzUwOEsgcmVzZXJ2ZWQsIDBLIGNtYS1yZXNlcnZlZCkNWyAgICAx
LjIwNjI2MV0gU0xVQjogSFdhbGlnbj02NCwgT3JkZXI9MC0zLCBNaW5PYmplY3RzPTAsIENQVXM9
NDgsIE5vZGVzPTENUG9raW5nIEtBU0xSIHVzaW5nIFJEUkFORCBSRFRTQy4uLg1bICAgIDEuMjE3
NTQxXSBmdHJhY2U6IGFsbG9jYXRpbmcgNDAxNTkgZW50cmllcyBpbiAxNTcgcGFnZXMNWyAgICAx
LjIzMDA1NV0gZnRyYWNlOiBhbGxvY2F0ZWQgMTU3IHBhZ2VzIHdpdGggNSBncm91cHMNWyAgICAx
LjIzNjMzOF0gRHluYW1pYyBQcmVlbXB0OiB2b2x1bnRhcnkNWyAgICAxLjI0MDQ2Nl0gcmN1OiBQ
cmVlbXB0aWJsZSBoaWVyYXJjaGljYWwgUkNVIGltcGxlbWVudGF0aW9uLg1bICAgIDEuMjQ3MDQ2
XSByY3U6IAlSQ1UgcmVzdHJpY3RpbmcgQ1BVcyBmcm9tIE5SX0NQVVM9ODE5MiB0byBucl9jcHVf
aWRzPTQ4Lg1bICAgIDEuMjU1MDQxXSAJVHJhbXBvbGluZSB2YXJpYW50IG9mIFRhc2tzIFJDVSBl
bmFibGVkLg1bICAgIDEuMjYwOTAzXSAJUnVkZSB2YXJpYW50IG9mIFRhc2tzIFJDVSBlbmFibGVk
Lg1bICAgIDEuMjY2MzEwXSAJVHJhY2luZyB2YXJpYW50IG9mIFRhc2tzIFJDVSBlbmFibGVkLg1b
ICAgIDEuMjcxOTMxXSByY3U6IFJDVSBjYWxjdWxhdGVkIHZhbHVlIG9mIHNjaGVkdWxlci1lbmxp
c3RtZW50IGRlbGF5IGlzIDI1IGppZmZpZXMuDVsgICAgMS4yODA3MjRdIHJjdTogQWRqdXN0aW5n
IGdlb21ldHJ5IGZvciByY3VfZmFub3V0X2xlYWY9MTYsIG5yX2NwdV9pZHM9NDgNWyAgICAxLjI5
MDk3OF0gVXNpbmcgTlVMTCBsZWdhY3kgUElDDVsgICAgMS4yOTQ4MDFdIE5SX0lSUVM6IDUyNDU0
NCwgbnJfaXJxczogMjk4NCwgcHJlYWxsb2NhdGVkIGlycXM6IDANWyAgICAxLjMwMTk3MF0geGVu
OmV2ZW50czogVXNpbmcgRklGTy1iYXNlZCBBQkkNKFhFTikgZDB2MDogdXBjYWxsIHZlY3RvciBm
Mw1bICAgIDEuMzA5OTUzXSB4ZW46ZXZlbnRzOiBYZW4gSFZNIGNhbGxiYWNrIHZlY3RvciBmb3Ig
ZXZlbnQgZGVsaXZlcnkgaXMgZW5hYmxlZA1bICAgIDEuMzE4Mzg2XSByY3U6IHNyY3VfaW5pdDog
U2V0dGluZyBzcmN1X3N0cnVjdCBzaXplcyBiYXNlZCBvbiBjb250ZW50aW9uLg1bICAgIDEuMzI2
NDI1XSBDb25zb2xlOiBjb2xvdXIgZHVtbXkgZGV2aWNlIDgweDI1DVsgICAgMS4zMzE1ODBdIHBy
aW50azogY29uc29sZSBbdHR5MF0gZW5hYmxlZA1bICAgIDEuMzM2MzgyXSBwcmludGs6IGNvbnNv
bGUgW2h2YzBdIGVuYWJsZWQNDVsgICAgMS4zMzYzODJdIHByaW50azogY29uc29sZSBbaHZjMF0g
ZW5hYmxlZA1bICAgIDEuMzQ1ODQwXSBwcmludGs6IGJvb3Rjb25zb2xlIFt4ZW5ib290MF0gZGlz
YWJsZWQNDVsgICAgMS4zNDU4NDBdIHByaW50azogYm9vdGNvbnNvbGUgW3hlbmJvb3QwXSBkaXNh
YmxlZA1bICAgIDEuMzU3NDU5XSBBQ1BJOiBDb3JlIHJldmlzaW9uIDIwMjIwMzMxDQ1bICAgIDEu
Mzg4MzM5XSBGYWlsZWQgdG8gcmVnaXN0ZXIgbGVnYWN5IHRpbWVyIGludGVycnVwdA0NWyAgICAx
LjM5NDM4NF0gQVBJQzogU3dpdGNoIHRvIHN5bW1ldHJpYyBJL08gbW9kZSBzZXR1cA0NWyAgICAx
LjQwMTI2Nl0geDJhcGljIGVuYWJsZWQNDVsgICAgMS40MDU0OTVdIFN3aXRjaGVkIEFQSUMgcm91
dGluZyB0byBwaHlzaWNhbCB4MmFwaWMuDQ1bICAgIDEuNDExNTEwXSBjbG9ja3NvdXJjZTogdHNj
LWVhcmx5OiBtYXNrOiAweGZmZmZmZmZmZmZmZmZmZmYgbWF4X2N5Y2xlczogMHgzYzhhM2JiZTQ0
MCwgbWF4X2lkbGVfbnM6IDQ0MDc5NTI5ODE4NyBucw0NWyAgICAxLjQyMzgwM10gQ2FsaWJyYXRp
bmcgZGVsYXkgbG9vcCAoc2tpcHBlZCksIHZhbHVlIGNhbGN1bGF0ZWQgdXNpbmcgdGltZXIgZnJl
cXVlbmN5Li4gODM5OS45MiBCb2dvTUlQUyAobHBqPTE2Nzk5ODQwKQ0NWyAgICAxLjQyNzc5OF0g
eDg2L2NwdTogVXNlciBNb2RlIEluc3RydWN0aW9uIFByZXZlbnRpb24gKFVNSVApIGFjdGl2YXRl
ZA0NWyAgICAxLjQyNzc5OF0gTGFzdCBsZXZlbCBpVExCIGVudHJpZXM6IDRLQiA1MTIsIDJNQiA1
MTIsIDRNQiAyNTYNDVsgICAgMS40Mjc3OThdIExhc3QgbGV2ZWwgZFRMQiBlbnRyaWVzOiA0S0Ig
MzA3MiwgMk1CIDMwNzIsIDRNQiAxNTM2LCAxR0IgMA0NWyAgICAxLjQyNzc5OF0gU3BlY3RyZSBW
MSA6IE1pdGlnYXRpb246IHVzZXJjb3B5L3N3YXBncyBiYXJyaWVycyBhbmQgX191c2VyIHBvaW50
ZXIgc2FuaXRpemF0aW9uDQ1bICAgIDEuNDI3Nzk4XSBTcGVjdHJlIFYyIDogTWl0aWdhdGlvbjog
UmV0cG9saW5lcw0NWyAgICAxLjQyNzc5OF0gU3BlY3RyZSBWMiA6IFNwZWN0cmUgdjIgLyBTcGVj
dHJlUlNCIG1pdGlnYXRpb246IEZpbGxpbmcgUlNCIG9uIGNvbnRleHQgc3dpdGNoDQ1bICAgIDEu
NDI3Nzk4XSBTcGVjdHJlIFYyIDogU3BlY3RyZSB2MiAvIFNwZWN0cmVSU0IgOiBGaWxsaW5nIFJT
QiBvbiBWTUVYSVQNDVsgICAgMS40Mjc3OThdIFNwZWN0cmUgVjIgOiBFbmFibGluZyBSZXN0cmlj
dGVkIFNwZWN1bGF0aW9uIGZvciBmaXJtd2FyZSBjYWxscw0NWyAgICAxLjQyNzc5OF0gU3BlY3Ry
ZSBWMiA6IG1pdGlnYXRpb246IEVuYWJsaW5nIGNvbmRpdGlvbmFsIEluZGlyZWN0IEJyYW5jaCBQ
cmVkaWN0aW9uIEJhcnJpZXINDVsgICAgMS40Mjc3OThdIFNwZWN1bGF0aXZlIFN0b3JlIEJ5cGFz
czogTWl0aWdhdGlvbjogU3BlY3VsYXRpdmUgU3RvcmUgQnlwYXNzIGRpc2FibGVkIHZpYSBwcmN0
bA0NWyAgICAxLjQyNzc5OF0gU3BlY3VsYXRpdmUgUmV0dXJuIFN0YWNrIE92ZXJmbG93OiBNaXRp
Z2F0aW9uOiBzYWZlIFJFVA0NWyAgICAxLjQyNzc5OF0geDg2L2ZwdTogU3VwcG9ydGluZyBYU0FW
RSBmZWF0dXJlIDB4MDAxOiAneDg3IGZsb2F0aW5nIHBvaW50IHJlZ2lzdGVycycNDVsgICAgMS40
Mjc3OThdIHg4Ni9mcHU6IFN1cHBvcnRpbmcgWFNBVkUgZmVhdHVyZSAweDAwMjogJ1NTRSByZWdp
c3RlcnMnDQ1bICAgIDEuNDI3Nzk4XSB4ODYvZnB1OiBTdXBwb3J0aW5nIFhTQVZFIGZlYXR1cmUg
MHgwMDQ6ICdBVlggcmVnaXN0ZXJzJw0NWyAgICAxLjQyNzc5OF0geDg2L2ZwdTogU3VwcG9ydGlu
ZyBYU0FWRSBmZWF0dXJlIDB4MDIwOiAnQVZYLTUxMiBvcG1hc2snDQ1bICAgIDEuNDI3Nzk4XSB4
ODYvZnB1OiBTdXBwb3J0aW5nIFhTQVZFIGZlYXR1cmUgMHgwNDA6ICdBVlgtNTEyIEhpMjU2Jw0N
WyAgICAxLjQyNzc5OF0geDg2L2ZwdTogU3VwcG9ydGluZyBYU0FWRSBmZWF0dXJlIDB4MDgwOiAn
QVZYLTUxMiBaTU1fSGkyNTYnDQ1bICAgIDEuNDI3Nzk4XSB4ODYvZnB1OiBTdXBwb3J0aW5nIFhT
QVZFIGZlYXR1cmUgMHgyMDA6ICdQcm90ZWN0aW9uIEtleXMgVXNlciByZWdpc3RlcnMnDQ1bICAg
IDEuNDI3Nzk4XSB4ODYvZnB1OiB4c3RhdGVfb2Zmc2V0WzJdOiAgNTc2LCB4c3RhdGVfc2l6ZXNb
Ml06ICAyNTYNDVsgICAgMS40Mjc3OThdIHg4Ni9mcHU6IHhzdGF0ZV9vZmZzZXRbNV06ICA4MzIs
IHhzdGF0ZV9zaXplc1s1XTogICA2NA0NWyAgICAxLjQyNzc5OF0geDg2L2ZwdTogeHN0YXRlX29m
ZnNldFs2XTogIDg5NiwgeHN0YXRlX3NpemVzWzZdOiAgNTEyDQ1bICAgIDEuNDI3Nzk4XSB4ODYv
ZnB1OiB4c3RhdGVfb2Zmc2V0WzddOiAxNDA4LCB4c3RhdGVfc2l6ZXNbN106IDEwMjQNDVsgICAg
MS40Mjc3OThdIHg4Ni9mcHU6IHhzdGF0ZV9vZmZzZXRbOV06IDI0MzIsIHhzdGF0ZV9zaXplc1s5
XTogICAgOA0NWyAgICAxLjQyNzc5OF0geDg2L2ZwdTogRW5hYmxlZCB4c3RhdGUgZmVhdHVyZXMg
MHgyZTcsIGNvbnRleHQgc2l6ZSBpcyAyNDQwIGJ5dGVzLCB1c2luZyAnY29tcGFjdGVkJyBmb3Jt
YXQuDQ1bICAgIDEuNDI3Nzk4XSBGcmVlaW5nIFNNUCBhbHRlcm5hdGl2ZXMgbWVtb3J5OiAzNksN
DVsgICAgMS40Mjc3OThdIHBpZF9tYXg6IGRlZmF1bHQ6IDQ5MTUyIG1pbmltdW06IDM4NA0NWyAg
ICAxLjQyNzc5OF0gTFNNOiBTZWN1cml0eSBGcmFtZXdvcmsgaW5pdGlhbGl6aW5nDQ1bICAgIDEu
NDI3Nzk4XSBsYW5kbG9jazogVXAgYW5kIHJ1bm5pbmcuDQ1bICAgIDEuNDI3Nzk4XSBZYW1hOiBk
aXNhYmxlZCBieSBkZWZhdWx0OyBlbmFibGUgd2l0aCBzeXNjdGwga2VybmVsLnlhbWEuKg0NWyAg
ICAxLjQyNzc5OF0gQXBwQXJtb3I6IEFwcEFybW9yIGluaXRpYWxpemVkDQ1bICAgIDEuNDI3Nzk4
XSBUT01PWU8gTGludXggaW5pdGlhbGl6ZWQNDVsgICAgMS40Mjc3OThdIExTTSBzdXBwb3J0IGZv
ciBlQlBGIGFjdGl2ZQ0NWyAgICAxLjQyNzc5OF0gTW91bnQtY2FjaGUgaGFzaCB0YWJsZSBlbnRy
aWVzOiAxNjM4NCAob3JkZXI6IDUsIDEzMTA3MiBieXRlcywgbGluZWFyKQ0NWyAgICAxLjQyNzc5
OF0gTW91bnRwb2ludC1jYWNoZSBoYXNoIHRhYmxlIGVudHJpZXM6IDE2Mzg0IChvcmRlcjogNSwg
MTMxMDcyIGJ5dGVzLCBsaW5lYXIpDQ1bICAgIDEuNDI3Nzk4XSBjbG9ja3NvdXJjZTogeGVuOiBt
YXNrOiAweGZmZmZmZmZmZmZmZmZmZmYgbWF4X2N5Y2xlczogMHgxY2Q0MmU0ZGZmYiwgbWF4X2lk
bGVfbnM6IDg4MTU5MDU5MTQ4MyBucw0NWyAgICAxLjQyNzc5OF0gaW5zdGFsbGluZyBYZW4gdGlt
ZXIgZm9yIENQVSAwDQ1bICAgIDEuNDI3Nzk4XSBzbXBib290OiBDUFUwOiBBTUQgUnl6ZW4gVGhy
ZWFkcmlwcGVyIDc5NjBYIDI0LUNvcmVzIChmYW1pbHk6IDB4MTksIG1vZGVsOiAweDE4LCBzdGVw
cGluZzogMHgxKQ0NWyAgICAxLjQyNzgxNV0gY3B1IDAgc3BpbmxvY2sgZXZlbnQgaXJxIDI4DQ1b
ICAgIDEuNDMxODU0XSBjYmxpc3RfaW5pdF9nZW5lcmljOiBTZXR0aW5nIGFkanVzdGFibGUgbnVt
YmVyIG9mIGNhbGxiYWNrIHF1ZXVlcy4NDVsgICAgMS40MzU4MDFdIGNibGlzdF9pbml0X2dlbmVy
aWM6IFNldHRpbmcgc2hpZnQgdG8gNiBhbmQgbGltIHRvIDEuDQ1bICAgIDEuNDM5ODA4XSBjYmxp
c3RfaW5pdF9nZW5lcmljOiBTZXR0aW5nIGFkanVzdGFibGUgbnVtYmVyIG9mIGNhbGxiYWNrIHF1
ZXVlcy4NDVsgICAgMS40NDM4MDBdIGNibGlzdF9pbml0X2dlbmVyaWM6IFNldHRpbmcgc2hpZnQg
dG8gNiBhbmQgbGltIHRvIDEuDQ1bICAgIDEuNDQ3ODA3XSBjYmxpc3RfaW5pdF9nZW5lcmljOiBT
ZXR0aW5nIGFkanVzdGFibGUgbnVtYmVyIG9mIGNhbGxiYWNrIHF1ZXVlcy4NDVsgICAgMS40NTE4
MDFdIGNibGlzdF9pbml0X2dlbmVyaWM6IFNldHRpbmcgc2hpZnQgdG8gNiBhbmQgbGltIHRvIDEu
DQ1bICAgIDEuNDU1ODA3XSBQZXJmb3JtYW5jZSBFdmVudHM6IFBNVSBub3QgYXZhaWxhYmxlIGR1
ZSB0byB2aXJ0dWFsaXphdGlvbiwgdXNpbmcgc29mdHdhcmUgZXZlbnRzIG9ubHkuDQ1bICAgIDEu
NDU5ODA3XSBzaWduYWw6IG1heCBzaWdmcmFtZSBzaXplOiAzMzc2DQ1bICAgIDEuNDYzODA3XSBy
Y3U6IEhpZXJhcmNoaWNhbCBTUkNVIGltcGxlbWVudGF0aW9uLg0NWyAgICAxLjQ2NzgwMF0gcmN1
OiAJTWF4IHBoYXNlIG5vLWRlbGF5IGluc3RhbmNlcyBpcyAxMDAwLg0NWyAgICAxLjQ3MTkxNF0g
Tk1JIHdhdGNoZG9nOiBQZXJmIE5NSSB3YXRjaGRvZyBwZXJtYW5lbnRseSBkaXNhYmxlZA0NWyAg
ICAxLjQ3NTk3NF0gc21wOiBCcmluZ2luZyB1cCBzZWNvbmRhcnkgQ1BVcyAuLi4NDShYRU4pIGQw
djE6IHVwY2FsbCB2ZWN0b3IgZjMNWyAgICAxLjQ4Mjg1MF0gaW5zdGFsbGluZyBYZW4gdGltZXIg
Zm9yIENQVSAxDQ1bICAgIDEuNDgzODI2XSB4ODY6IEJvb3RpbmcgU01QIGNvbmZpZ3VyYXRpb246
DQ1bICAgIDEuNDg3ODAxXSAuLi4uIG5vZGUgICMwLCBDUFVzOiAgICAgICAgIzENDVsgICAgMS40
OTE0OTddIGNwdSAxIHNwaW5sb2NrIGV2ZW50IGlycSAzMw0NKFhFTikgZDB2MjogdXBjYWxsIHZl
Y3RvciBmMw1bICAgIDEuNTAyODc0XSBpbnN0YWxsaW5nIFhlbiB0aW1lciBmb3IgQ1BVIDINDVsg
ICAgMS41MDM4NDNdICAgIzINDVsgICAgMS41MDYzNDddIGNwdSAyIHNwaW5sb2NrIGV2ZW50IGly
cSAzOA0NKFhFTikgZDB2MzogdXBjYWxsIHZlY3RvciBmMw1bICAgIDEuNTE1ODAyXSBpbnN0YWxs
aW5nIFhlbiB0aW1lciBmb3IgQ1BVIDMNDVsgICAgMS41MTk4NDRdICAgIzMNDVsgICAgMS41MjIz
MjddIGNwdSAzIHNwaW5sb2NrIGV2ZW50IGlycSA0Mw0NKFhFTikgZDB2NDogdXBjYWxsIHZlY3Rv
ciBmMw1bICAgIDEuNTMxODAyXSBpbnN0YWxsaW5nIFhlbiB0aW1lciBmb3IgQ1BVIDQNDVsgICAg
MS41MzU4MzldICAgIzQNDVsgICAgMS41MzgyODJdIGNwdSA0IHNwaW5sb2NrIGV2ZW50IGlycSA0
OA0NKFhFTikgZDB2NTogdXBjYWxsIHZlY3RvciBmMw1bICAgIDEuNTQ3ODAxXSBpbnN0YWxsaW5n
IFhlbiB0aW1lciBmb3IgQ1BVIDUNDVsgICAgMS41NTE4MzJdICAgIzUNDVsgICAgMS41NTQyOTRd
IGNwdSA1IHNwaW5sb2NrIGV2ZW50IGlycSA1Mw0NKFhFTikgZDB2NjogdXBjYWxsIHZlY3RvciBm
Mw1bICAgIDEuNTYyNjgzXSBpbnN0YWxsaW5nIFhlbiB0aW1lciBmb3IgQ1BVIDYNDVsgICAgMS41
NjM4MzNdICAgIzYNDVsgICAgMS41NjYyMTRdIGNwdSA2IHNwaW5sb2NrIGV2ZW50IGlycSA1OA0N
KFhFTikgZDB2NzogdXBjYWxsIHZlY3RvciBmMw1bICAgIDEuNTc1ODAyXSBpbnN0YWxsaW5nIFhl
biB0aW1lciBmb3IgQ1BVIDcNDVsgICAgMS41Nzk4NDNdICAgIzcNDVsgICAgMS41ODIyNDldIGNw
dSA3IHNwaW5sb2NrIGV2ZW50IGlycSA2Mw0NKFhFTikgZDB2ODogdXBjYWxsIHZlY3RvciBmMw1b
ICAgIDEuNTkxODAyXSBpbnN0YWxsaW5nIFhlbiB0aW1lciBmb3IgQ1BVIDgNDVsgICAgMS41OTU4
NDldICAgIzgNDVsgICAgMS41OTgyMjddIGNwdSA4IHNwaW5sb2NrIGV2ZW50IGlycSA2OA0NKFhF
TikgZDB2OTogdXBjYWxsIHZlY3RvciBmMw1bICAgIDEuNjA2NzMwXSBpbnN0YWxsaW5nIFhlbiB0
aW1lciBmb3IgQ1BVIDkNDVsgICAgMS42MDc4NDJdICAgIzkNDVsgICAgMS42MTAyOTNdIGNwdSA5
IHNwaW5sb2NrIGV2ZW50IGlycSA3Mw0NKFhFTikgZDB2MTA6IHVwY2FsbCB2ZWN0b3IgZjMNWyAg
ICAxLjYxOTgwMl0gaW5zdGFsbGluZyBYZW4gdGltZXIgZm9yIENQVSAxMA0NWyAgICAxLjYyMzg0
Ml0gICMxMA0NWyAgICAxLjYyNjI5Nl0gY3B1IDEwIHNwaW5sb2NrIGV2ZW50IGlycSA3OA0NKFhF
TikgZDB2MTE6IHVwY2FsbCB2ZWN0b3IgZjMNWyAgICAxLjYzNTgwMV0gaW5zdGFsbGluZyBYZW4g
dGltZXIgZm9yIENQVSAxMQ0NWyAgICAxLjYzOTgzN10gICMxMQ0NWyAgICAxLjY0MjIxNl0gY3B1
IDExIHNwaW5sb2NrIGV2ZW50IGlycSA4Mw0NKFhFTikgZDB2MTI6IHVwY2FsbCB2ZWN0b3IgZjMN
WyAgICAxLjY1MTgwMl0gaW5zdGFsbGluZyBYZW4gdGltZXIgZm9yIENQVSAxMg0NWyAgICAxLjY1
NTg0N10gICMxMg0NWyAgICAxLjY1ODIyNl0gY3B1IDEyIHNwaW5sb2NrIGV2ZW50IGlycSA4OA0N
KFhFTikgZDB2MTM6IHVwY2FsbCB2ZWN0b3IgZjMNWyAgICAxLjY2NzgwMl0gaW5zdGFsbGluZyBY
ZW4gdGltZXIgZm9yIENQVSAxMw0NWyAgICAxLjY3MTg0M10gICMxMw0NWyAgICAxLjY3NDI4M10g
Y3B1IDEzIHNwaW5sb2NrIGV2ZW50IGlycSA5Mw0NKFhFTikgZDB2MTQ6IHVwY2FsbCB2ZWN0b3Ig
ZjMNWyAgICAxLjY4MzgwMl0gaW5zdGFsbGluZyBYZW4gdGltZXIgZm9yIENQVSAxNA0NWyAgICAx
LjY4Nzg0N10gICMxNA0NWyAgICAxLjY5MDIwNl0gY3B1IDE0IHNwaW5sb2NrIGV2ZW50IGlycSA5
OA0NKFhFTikgZDB2MTU6IHVwY2FsbCB2ZWN0b3IgZjMNWyAgICAxLjY5OTgwMl0gaW5zdGFsbGlu
ZyBYZW4gdGltZXIgZm9yIENQVSAxNQ0NWyAgICAxLjcwMzg0NF0gICMxNQ0NWyAgICAxLjcwNjI4
MF0gY3B1IDE1IHNwaW5sb2NrIGV2ZW50IGlycSAxMDMNDShYRU4pIGQwdjE2OiB1cGNhbGwgdmVj
dG9yIGYzDVsgICAgMS43MTU4MDJdIGluc3RhbGxpbmcgWGVuIHRpbWVyIGZvciBDUFUgMTYNDVsg
ICAgMS43MTk4NDRdICAjMTYNDVsgICAgMS43MjIzMTRdIGNwdSAxNiBzcGlubG9jayBldmVudCBp
cnEgMTA4DQ0oWEVOKSBkMHYxNzogdXBjYWxsIHZlY3RvciBmMw1bICAgIDEuNzMxODAyXSBpbnN0
YWxsaW5nIFhlbiB0aW1lciBmb3IgQ1BVIDE3DQ1bICAgIDEuNzM1ODM4XSAgIzE3DQ1bICAgIDEu
NzM4MjAyXSBjcHUgMTcgc3BpbmxvY2sgZXZlbnQgaXJxIDExMw0NKFhFTikgZDB2MTg6IHVwY2Fs
bCB2ZWN0b3IgZjMNWyAgICAxLjc0NzgwMl0gaW5zdGFsbGluZyBYZW4gdGltZXIgZm9yIENQVSAx
OA0NWyAgICAxLjc1MTg0M10gICMxOA0NWyAgICAxLjc1NDI5MF0gY3B1IDE4IHNwaW5sb2NrIGV2
ZW50IGlycSAxMTgNDShYRU4pIGQwdjE5OiB1cGNhbGwgdmVjdG9yIGYzDVsgICAgMS43NjM4MDJd
IGluc3RhbGxpbmcgWGVuIHRpbWVyIGZvciBDUFUgMTkNDVsgICAgMS43Njc4NDddICAjMTkNDVsg
ICAgMS43NzAyOTBdIGNwdSAxOSBzcGlubG9jayBldmVudCBpcnEgMTIzDQ0oWEVOKSBkMHYyMDog
dXBjYWxsIHZlY3RvciBmMw1bICAgIDEuNzc5ODAxXSBpbnN0YWxsaW5nIFhlbiB0aW1lciBmb3Ig
Q1BVIDIwDQ1bICAgIDEuNzgzODM5XSAgIzIwDQ1bICAgIDEuNzg2MjE0XSBjcHUgMjAgc3Bpbmxv
Y2sgZXZlbnQgaXJxIDEyOA0NKFhFTikgZDB2MjE6IHVwY2FsbCB2ZWN0b3IgZjMNWyAgICAxLjc5
NTgwMl0gaW5zdGFsbGluZyBYZW4gdGltZXIgZm9yIENQVSAyMQ0NWyAgICAxLjc5OTg0OV0gICMy
MQ0NWyAgICAxLjgwMjMwOF0gY3B1IDIxIHNwaW5sb2NrIGV2ZW50IGlycSAxMzMNDShYRU4pIGQw
djIyOiB1cGNhbGwgdmVjdG9yIGYzDVsgICAgMS44MTE4MDJdIGluc3RhbGxpbmcgWGVuIHRpbWVy
IGZvciBDUFUgMjINDVsgICAgMS44MTU4NDddICAjMjINDVsgICAgMS44MTgyNTBdIGNwdSAyMiBz
cGlubG9jayBldmVudCBpcnEgMTM4DQ0oWEVOKSBkMHYyMzogdXBjYWxsIHZlY3RvciBmMw1bICAg
IDEuODI3ODAyXSBpbnN0YWxsaW5nIFhlbiB0aW1lciBmb3IgQ1BVIDIzDQ1bICAgIDEuODMxODQ1
XSAgIzIzDQ1bICAgIDEuODM0MjA2XSBjcHUgMjMgc3BpbmxvY2sgZXZlbnQgaXJxIDE0Mw0NKFhF
TikgZDB2MjQ6IHVwY2FsbCB2ZWN0b3IgZjMNWyAgICAxLjg0MzgwMl0gaW5zdGFsbGluZyBYZW4g
dGltZXIgZm9yIENQVSAyNA0NWyAgICAxLjg0Nzg0OF0gICMyNA0NWyAgICAxLjg1MDMyN10gY3B1
IDI0IHNwaW5sb2NrIGV2ZW50IGlycSAxNDgNDShYRU4pIGQwdjI1OiB1cGNhbGwgdmVjdG9yIGYz
DVsgICAgMS44NTk4MDFdIGluc3RhbGxpbmcgWGVuIHRpbWVyIGZvciBDUFUgMjUNDVsgICAgMS44
NjM4NTFdICAjMjUNDVsgICAgMS44NjYzMDNdIGNwdSAyNSBzcGlubG9jayBldmVudCBpcnEgMTUz
DQ0oWEVOKSBkMHYyNjogdXBjYWxsIHZlY3RvciBmMw1bICAgIDEuODc1ODAxXSBpbnN0YWxsaW5n
IFhlbiB0aW1lciBmb3IgQ1BVIDI2DQ1bICAgIDEuODc5ODQ0XSAgIzI2DQ1bICAgIDEuODgyMjQ0
XSBjcHUgMjYgc3BpbmxvY2sgZXZlbnQgaXJxIDE1OA0NKFhFTikgZDB2Mjc6IHVwY2FsbCB2ZWN0
b3IgZjMNWyAgICAxLjg5MTgwMV0gaW5zdGFsbGluZyBYZW4gdGltZXIgZm9yIENQVSAyNw0NWyAg
ICAxLjg5NTg1MF0gICMyNw0NWyAgICAxLjg5ODI5NF0gY3B1IDI3IHNwaW5sb2NrIGV2ZW50IGly
cSAxNjMNDShYRU4pIGQwdjI4OiB1cGNhbGwgdmVjdG9yIGYzDVsgICAgMS45MDc4MDJdIGluc3Rh
bGxpbmcgWGVuIHRpbWVyIGZvciBDUFUgMjgNDVsgICAgMS45MTE4NDddICAjMjgNDVsgICAgMS45
MTQzMTddIGNwdSAyOCBzcGlubG9jayBldmVudCBpcnEgMTY4DQ0oWEVOKSBkMHYyOTogdXBjYWxs
IHZlY3RvciBmMw1bICAgIDEuOTIzODAyXSBpbnN0YWxsaW5nIFhlbiB0aW1lciBmb3IgQ1BVIDI5
DQ1bICAgIDEuOTI3ODQ5XSAgIzI5DQ1bICAgIDEuOTMwMjMwXSBjcHUgMjkgc3BpbmxvY2sgZXZl
bnQgaXJxIDE3Mw0NKFhFTikgZDB2MzA6IHVwY2FsbCB2ZWN0b3IgZjMNWyAgICAxLjkzOTgwMl0g
aW5zdGFsbGluZyBYZW4gdGltZXIgZm9yIENQVSAzMA0NWyAgICAxLjk0Mzg0OV0gICMzMA0NWyAg
ICAxLjk0NjMwNV0gY3B1IDMwIHNwaW5sb2NrIGV2ZW50IGlycSAxNzgNDShYRU4pIGQwdjMxOiB1
cGNhbGwgdmVjdG9yIGYzDVsgICAgMS45NTU4MDFdIGluc3RhbGxpbmcgWGVuIHRpbWVyIGZvciBD
UFUgMzENDVsgICAgMS45NTk4NDhdICAjMzENDVsgICAgMS45NjIzMDVdIGNwdSAzMSBzcGlubG9j
ayBldmVudCBpcnEgMTgzDQ0oWEVOKSBkMHYzMjogdXBjYWxsIHZlY3RvciBmMw1bICAgIDEuOTcx
ODAyXSBpbnN0YWxsaW5nIFhlbiB0aW1lciBmb3IgQ1BVIDMyDQ1bICAgIDEuOTc1ODQ4XSAgIzMy
DQ1bICAgIDIuMDU5ODU2XSBjcHUgMzIgc3BpbmxvY2sgZXZlbnQgaXJxIDE4OA0NKFhFTikgZDB2
MzM6IHVwY2FsbCB2ZWN0b3IgZjMNWyAgICAyLjA2NzgwMV0gaW5zdGFsbGluZyBYZW4gdGltZXIg
Zm9yIENQVSAzMw0NWyAgICAyLjA3MTg0Nl0gICMzMw0NWyAgICAyLjA3NDg4Ml0gY3B1IDMzIHNw
aW5sb2NrIGV2ZW50IGlycSAxOTMNDShYRU4pIGQwdjM0OiB1cGNhbGwgdmVjdG9yIGYzDVsgICAg
Mi4wODM4MDJdIGluc3RhbGxpbmcgWGVuIHRpbWVyIGZvciBDUFUgMzQNDVsgICAgMi4wODc4Mzld
ICAjMzQNDVsgICAgMi4wOTAxNjddIGNwdSAzNCBzcGlubG9jayBldmVudCBpcnEgMTk4DQ0oWEVO
KSBkMHYzNTogdXBjYWxsIHZlY3RvciBmMw1bICAgIDIuMDk5ODAyXSBpbnN0YWxsaW5nIFhlbiB0
aW1lciBmb3IgQ1BVIDM1DQ1bICAgIDIuMTAzODQxXSAgIzM1DQ1bICAgIDIuMTA2MjM4XSBjcHUg
MzUgc3BpbmxvY2sgZXZlbnQgaXJxIDIwMw0NKFhFTikgZDB2MzY6IHVwY2FsbCB2ZWN0b3IgZjMN
WyAgICAyLjExNTgwMl0gaW5zdGFsbGluZyBYZW4gdGltZXIgZm9yIENQVSAzNg0NWyAgICAyLjEx
OTg1MV0gICMzNg0NWyAgICAyLjEyMjMyMl0gY3B1IDM2IHNwaW5sb2NrIGV2ZW50IGlycSAyMDgN
DShYRU4pIGQwdjM3OiB1cGNhbGwgdmVjdG9yIGYzDVsgICAgMi4xMzE4MDJdIGluc3RhbGxpbmcg
WGVuIHRpbWVyIGZvciBDUFUgMzcNDVsgICAgMi4xMzU4NTFdICAjMzcNDVsgICAgMi4xMzgyMjVd
IGNwdSAzNyBzcGlubG9jayBldmVudCBpcnEgMjEzDQ0oWEVOKSBkMHYzODogdXBjYWxsIHZlY3Rv
ciBmMw1bICAgIDIuMTQ3ODAyXSBpbnN0YWxsaW5nIFhlbiB0aW1lciBmb3IgQ1BVIDM4DQ1bICAg
IDIuMTUxODU0XSAgIzM4DQ1bICAgIDIuMTU0MjQ3XSBjcHUgMzggc3BpbmxvY2sgZXZlbnQgaXJx
IDIxOA0NKFhFTikgZDB2Mzk6IHVwY2FsbCB2ZWN0b3IgZjMNWyAgICAyLjE2MzgwMl0gaW5zdGFs
bGluZyBYZW4gdGltZXIgZm9yIENQVSAzOQ0NWyAgICAyLjE2Nzg1Ml0gICMzOQ0NWyAgICAyLjE3
MDMyMF0gY3B1IDM5IHNwaW5sb2NrIGV2ZW50IGlycSAyMjMNDShYRU4pIGQwdjQwOiB1cGNhbGwg
dmVjdG9yIGYzDVsgICAgMi4xNzk4MDFdIGluc3RhbGxpbmcgWGVuIHRpbWVyIGZvciBDUFUgNDAN
DVsgICAgMi4xODM4NDRdICAjNDANDVsgICAgMi4xODYzMjRdIGNwdSA0MCBzcGlubG9jayBldmVu
dCBpcnEgMjI4DQ0oWEVOKSBkMHY0MTogdXBjYWxsIHZlY3RvciBmMw1bICAgIDIuMTk1ODAxXSBp
bnN0YWxsaW5nIFhlbiB0aW1lciBmb3IgQ1BVIDQxDQ1bICAgIDIuMTk5ODUwXSAgIzQxDQ1bICAg
IDIuMjAyMjkwXSBjcHUgNDEgc3BpbmxvY2sgZXZlbnQgaXJxIDIzMw0NKFhFTikgZDB2NDI6IHVw
Y2FsbCB2ZWN0b3IgZjMNWyAgICAyLjIxMTgwMV0gaW5zdGFsbGluZyBYZW4gdGltZXIgZm9yIENQ
VSA0Mg0NWyAgICAyLjIxNTg0OV0gICM0Mg0NWyAgICAyLjIxODI3Nl0gY3B1IDQyIHNwaW5sb2Nr
IGV2ZW50IGlycSAyMzgNDShYRU4pIGQwdjQzOiB1cGNhbGwgdmVjdG9yIGYzDVsgICAgMi4yMjc4
MDFdIGluc3RhbGxpbmcgWGVuIHRpbWVyIGZvciBDUFUgNDMNDVsgICAgMi4yMzE4NTVdICAjNDMN
DVsgICAgMi4yMzQyNTVdIGNwdSA0MyBzcGlubG9jayBldmVudCBpcnEgMjQzDQ0oWEVOKSBkMHY0
NDogdXBjYWxsIHZlY3RvciBmMw1bICAgIDIuMjQzODAxXSBpbnN0YWxsaW5nIFhlbiB0aW1lciBm
b3IgQ1BVIDQ0DQ1bICAgIDIuMjQ3ODU0XSAgIzQ0DQ1bICAgIDIuMjUwMjg3XSBjcHUgNDQgc3Bp
bmxvY2sgZXZlbnQgaXJxIDI0OA0NKFhFTikgZDB2NDU6IHVwY2FsbCB2ZWN0b3IgZjMNWyAgICAy
LjI1OTgwMV0gaW5zdGFsbGluZyBYZW4gdGltZXIgZm9yIENQVSA0NQ0NWyAgICAyLjI2Mzg0OF0g
ICM0NQ0NWyAgICAyLjI2NjIxNF0gY3B1IDQ1IHNwaW5sb2NrIGV2ZW50IGlycSAyNTMNDShYRU4p
IGQwdjQ2OiB1cGNhbGwgdmVjdG9yIGYzDVsgICAgMi4yNzU4MDFdIGluc3RhbGxpbmcgWGVuIHRp
bWVyIGZvciBDUFUgNDYNDVsgICAgMi4yNzk4NTNdICAjNDYNDVsgICAgMi4yODIzNDZdIGNwdSA0
NiBzcGlubG9jayBldmVudCBpcnEgMjU4DQ0oWEVOKSBkMHY0NzogdXBjYWxsIHZlY3RvciBmMw1b
ICAgIDIuMjkxODAxXSBpbnN0YWxsaW5nIFhlbiB0aW1lciBmb3IgQ1BVIDQ3DQ1bICAgIDIuMjk1
ODUyXSAgIzQ3DQ1bICAgIDIuMjk4MzI2XSBjcHUgNDcgc3BpbmxvY2sgZXZlbnQgaXJxIDI2Mw0N
WyAgICAyLjMwNDE5OF0gc21wOiBCcm91Z2h0IHVwIDEgbm9kZSwgNDggQ1BVcw0NWyAgICAyLjMw
NzgwNF0gc21wYm9vdDogTWF4IGxvZ2ljYWwgcGFja2FnZXM6IDINDVsgICAgMi4zMTE4MDNdIHNt
cGJvb3Q6IFRvdGFsIG9mIDQ4IHByb2Nlc3NvcnMgYWN0aXZhdGVkICg0MDMzMTAuNDAgQm9nb01J
UFMpDQ1bICAgIDIuMzIxNDY5XSBub2RlIDAgZGVmZXJyZWQgcGFnZXMgaW5pdGlhbGlzZWQgaW4g
MG1zDQ1bICAgIDIuMzI4MzE3XSBkZXZ0bXBmczogaW5pdGlhbGl6ZWQNDVsgICAgMi4zMzE4NDdd
IHg4Ni9tbTogTWVtb3J5IGJsb2NrIHNpemU6IDEyOE1CDQ1bICAgIDIuMzM2NjYwXSBjbGlwcGVk
IFttZW0gMHgwOWFmZjAwMC0weDA5ZmZmZmZmXSB0byBbbWVtIDB4MGEwMDAwMDAtMHgwOWZmZmZm
Zl0gZm9yIGU4MjAgZW50cnkgW21lbSAweDA5YWZmMDAwLTB4MDlmZmZmZmZdDQ1bICAgIDIuMzM5
ODAzXSBjbGlwcGVkIFttZW0gMHgwYjAwMDAwMC0weDBiMDIwZmZmXSB0byBbbWVtIDB4MGIwMjEw
MDAtMHgwYjAyMGZmZl0gZm9yIGU4MjAgZW50cnkgW21lbSAweDBiMDAwMDAwLTB4MGIwMjBmZmZd
DQ1bICAgIDIuMzQzODAzXSBjbGlwcGVkIFttZW0gMHhhMDRlOTAwMC0weGE2NGU4ZmZmXSB0byBb
bWVtIDB4YTY0ZTkwMDAtMHhhNjRlOGZmZl0gZm9yIGU4MjAgZW50cnkgW21lbSAweGEwNGU5MDAw
LTB4YTY0ZThmZmZdDQ1bICAgIDIuMzQ3ODAzXSBjbGlwcGVkIFttZW0gMHhhOTQ3ZjAwMC0weGFk
ZGZlZmZmXSB0byBbbWVtIDB4YWRkZmYwMDAtMHhhZGRmZWZmZl0gZm9yIGU4MjAgZW50cnkgW21l
bSAweGE5NDdmMDAwLTB4YWRkZmVmZmZdDQ1bICAgIDIuMzUxODAzXSBjbGlwcGVkIFttZW0gMHhh
ZmZmYWYxOC0weGZmZGZmZmZmXSB0byBbbWVtIDB4YzAwMDAwMDAtMHhmZmRmZmZmZl0gZm9yIGU4
MjAgZW50cnkgW21lbSAweGFmZmZiMDAwLTB4YmZmZmZmZmZdDQ1bICAgIDIuMzU1ODAzXSBjbGlw
cGVkIFttZW0gMHhjMDAwMDAwMC0weGZmZGZmZmZmXSB0byBbbWVtIDB4ZGYzMDAwMDAtMHhmZmRm
ZmZmZl0gZm9yIGU4MjAgZW50cnkgW21lbSAweGRmMjAwMDAwLTB4ZGYyZmZmZmZdDQ1bICAgIDIu
MzU5ODAyXSBjbGlwcGVkIFttZW0gMHhkZjMwMDAwMC0weGZmZGZmZmZmXSB0byBbbWVtIDB4ZjAw
MDAwMDAtMHhmZmRmZmZmZl0gZm9yIGU4MjAgZW50cnkgW21lbSAweGUwMDAwMDAwLTB4ZWZmZmZm
ZmZdDQ1bICAgIDIuMzYzODAzXSBjbGlwcGVkIFttZW0gMHhmMDAwMDAwMC0weGZmZGZmZmZmXSB0
byBbbWVtIDB4ZjAwMDAwMDAtMHhmZTlmZmZmZl0gZm9yIGU4MjAgZW50cnkgW21lbSAweGZlYTAw
MDAwLTB4ZmVhZmZmZmZdDQ1bICAgIDIuMzY4MTE3XSBtZW1tYXBfaW5pdF96b25lX2RldmljZSBp
bml0aWFsaXNlZCAzMjc2OCBwYWdlcyBpbiAwbXMNDVsgICAgMi4zNzE4MzddIEFDUEk6IFBNOiBS
ZWdpc3RlcmluZyBBQ1BJIE5WUyByZWdpb24gW21lbSAweDA0MDAwMDAwLTB4MDQwNDVmZmZdICgy
ODY3MjAgYnl0ZXMpDQ1bICAgIDIuMzc1ODA5XSBBQ1BJOiBQTTogUmVnaXN0ZXJpbmcgQUNQSSBO
VlMgcmVnaW9uIFttZW0gMHhhNzQ3ZjAwMC0weGE5NDdlZmZmXSAoMzM1NTQ0MzIgYnl0ZXMpDQ1b
ICAgIDIuMzgwMTIwXSBjbG9ja3NvdXJjZTogamlmZmllczogbWFzazogMHhmZmZmZmZmZiBtYXhf
Y3ljbGVzOiAweGZmZmZmZmZmLCBtYXhfaWRsZV9uczogNzY0NTA0MTc4NTEwMDAwMCBucw0NWyAg
ICAyLjM4MzgzNl0gZnV0ZXggaGFzaCB0YWJsZSBlbnRyaWVzOiAxNjM4NCAob3JkZXI6IDgsIDEw
NDg1NzYgYnl0ZXMsIGxpbmVhcikNDVsgICAgMi4zODc4NjldIHBpbmN0cmwgY29yZTogaW5pdGlh
bGl6ZWQgcGluY3RybCBzdWJzeXN0ZW0NDVsgICAgMi4zOTMwOThdIE5FVDogUmVnaXN0ZXJlZCBQ
Rl9ORVRMSU5LL1BGX1JPVVRFIHByb3RvY29sIGZhbWlseQ0NWyAgICAyLjM5NTgxOF0geGVuOmdy
YW50X3RhYmxlOiBHcmFudCB0YWJsZXMgdXNpbmcgdmVyc2lvbiAxIGxheW91dA0NWyAgICAyLjM5
OTgzMV0gR3JhbnQgdGFibGUgaW5pdGlhbGl6ZWQNDVsgICAgMi40MDQyODBdIERNQTogcHJlYWxs
b2NhdGVkIDEwMjQgS2lCIEdGUF9LRVJORUwgcG9vbCBmb3IgYXRvbWljIGFsbG9jYXRpb25zDQ1b
ICAgIDIuNDA3ODMxXSBETUE6IHByZWFsbG9jYXRlZCAxMDI0IEtpQiBHRlBfS0VSTkVMfEdGUF9E
TUEgcG9vbCBmb3IgYXRvbWljIGFsbG9jYXRpb25zDQ1bICAgIDIuNDExODMxXSBETUE6IHByZWFs
bG9jYXRlZCAxMDI0IEtpQiBHRlBfS0VSTkVMfEdGUF9ETUEzMiBwb29sIGZvciBhdG9taWMgYWxs
b2NhdGlvbnMNDVsgICAgMi40MTU4MDddIGF1ZGl0OiBpbml0aWFsaXppbmcgbmV0bGluayBzdWJz
eXMgKGRpc2FibGVkKQ0NWyAgICAyLjQxOTgyOF0gYXVkaXQ6IHR5cGU9MjAwMCBhdWRpdCgxNzA1
NjQ2MzE4LjUzMToxKTogc3RhdGU9aW5pdGlhbGl6ZWQgYXVkaXRfZW5hYmxlZD0wIHJlcz0xDQ1b
ICAgIDIuNDE5ODcxXSB0aGVybWFsX3N5czogUmVnaXN0ZXJlZCB0aGVybWFsIGdvdmVybm9yICdm
YWlyX3NoYXJlJw0NWyAgICAyLjQyMzgxMF0gdGhlcm1hbF9zeXM6IFJlZ2lzdGVyZWQgdGhlcm1h
bCBnb3Zlcm5vciAnYmFuZ19iYW5nJw0NWyAgICAyLjQyNzgwMl0gdGhlcm1hbF9zeXM6IFJlZ2lz
dGVyZWQgdGhlcm1hbCBnb3Zlcm5vciAnc3RlcF93aXNlJw0NWyAgICAyLjQzMTgwMV0gdGhlcm1h
bF9zeXM6IFJlZ2lzdGVyZWQgdGhlcm1hbCBnb3Zlcm5vciAndXNlcl9zcGFjZScNDVsgICAgMi40
MzU4MDJdIHRoZXJtYWxfc3lzOiBSZWdpc3RlcmVkIHRoZXJtYWwgZ292ZXJub3IgJ3Bvd2VyX2Fs
bG9jYXRvcicNDVsgICAgMi40Mzk4MjVdIGNwdWlkbGU6IHVzaW5nIGdvdmVybm9yIGxhZGRlcg0N
WyAgICAyLjQ1MTgxOV0gY3B1aWRsZTogdXNpbmcgZ292ZXJub3IgbWVudQ0NWyAgICAyLjQ1NTg1
M10gYWNwaXBocDogQUNQSSBIb3QgUGx1ZyBQQ0kgQ29udHJvbGxlciBEcml2ZXIgdmVyc2lvbjog
MC41DQ1bICAgIDIuNDYwMTg1XSBQQ0k6IE1NQ09ORklHIGZvciBkb21haW4gMDAwMCBbYnVzIDAw
LWZmXSBhdCBbbWVtIDB4ZTAwMDAwMDAtMHhlZmZmZmZmZl0gKGJhc2UgMHhlMDAwMDAwMCkNDVsg
ICAgMi40NjM4MDVdIFBDSTogTU1DT05GSUcgYXQgW21lbSAweGUwMDAwMDAwLTB4ZWZmZmZmZmZd
IHJlc2VydmVkIGluIEU4MjANDVsgICAgMi40Njc4MjJdIFBDSTogVXNpbmcgY29uZmlndXJhdGlv
biB0eXBlIDEgZm9yIGJhc2UgYWNjZXNzDQ1bICAgIDIuNDczMDU0XSBrcHJvYmVzOiBrcHJvYmUg
anVtcC1vcHRpbWl6YXRpb24gaXMgZW5hYmxlZC4gQWxsIGtwcm9iZXMgYXJlIG9wdGltaXplZCBp
ZiBwb3NzaWJsZS4NDVsgICAgMi40NzU4MjVdIEh1Z2VUTEI6IHJlZ2lzdGVyZWQgMS4wMCBHaUIg
cGFnZSBzaXplLCBwcmUtYWxsb2NhdGVkIDAgcGFnZXMNDVsgICAgMi40Nzk4MDJdIEh1Z2VUTEI6
IDE2MzgwIEtpQiB2bWVtbWFwIGNhbiBiZSBmcmVlZCBmb3IgYSAxLjAwIEdpQiBwYWdlDQ1bICAg
IDIuNDgzODA0XSBIdWdlVExCOiByZWdpc3RlcmVkIDIuMDAgTWlCIHBhZ2Ugc2l6ZSwgcHJlLWFs
bG9jYXRlZCAwIHBhZ2VzDQ1bICAgIDIuNDg3ODAyXSBIdWdlVExCOiAyOCBLaUIgdm1lbW1hcCBj
YW4gYmUgZnJlZWQgZm9yIGEgMi4wMCBNaUIgcGFnZQ0NWyAgICAyLjQ5MTg2N10gQUNQSTogQWRk
ZWQgX09TSShNb2R1bGUgRGV2aWNlKQ0NWyAgICAyLjQ5NTgwN10gQUNQSTogQWRkZWQgX09TSShQ
cm9jZXNzb3IgRGV2aWNlKQ0NWyAgICAyLjQ5OTgwNF0gQUNQSTogQWRkZWQgX09TSSgzLjAgX1ND
UCBFeHRlbnNpb25zKQ0NWyAgICAyLjUwMzgwMl0gQUNQSTogQWRkZWQgX09TSShQcm9jZXNzb3Ig
QWdncmVnYXRvciBEZXZpY2UpDQ1bICAgIDIuNTM0MzQ3XSBBQ1BJOiAxNyBBQ1BJIEFNTCB0YWJs
ZXMgc3VjY2Vzc2Z1bGx5IGFjcXVpcmVkIGFuZCBsb2FkZWQNDVsgICAgMi41Mzg3ODBdIEFDUEk6
IEludGVycHJldGVyIGVuYWJsZWQNDVsgICAgMi41Mzk4MTldIEFDUEk6IFBNOiAoc3VwcG9ydHMg
UzAgUzMgUzQgUzUpDQ1bICAgIDIuNTQzODAzXSBBQ1BJOiBVc2luZyBJT0FQSUMgZm9yIGludGVy
cnVwdCByb3V0aW5nDQ1bICAgIDIuNTQ4MTI0XSBQQ0k6IFVzaW5nIGhvc3QgYnJpZGdlIHdpbmRv
d3MgZnJvbSBBQ1BJOyBpZiBuZWNlc3NhcnksIHVzZSAicGNpPW5vY3JzIiBhbmQgcmVwb3J0IGEg
YnVnDQ1bICAgIDIuNTUxODAzXSBQQ0k6IElnbm9yaW5nIEU4MjAgcmVzZXJ2YXRpb25zIGZvciBo
b3N0IGJyaWRnZSB3aW5kb3dzDQ1bICAgIDIuNTU2MTY0XSBBQ1BJOiBFbmFibGVkIDQgR1BFcyBp
biBibG9jayAwMCB0byAxRg0NWyAgICAyLjU3NzQzMV0gQUNQSTogUE06IFBvd2VyIFJlc291cmNl
IFtQUldMXQ0NWyAgICAyLjU3OTgxOV0gQUNQSTogUE06IFBvd2VyIFJlc291cmNlIFtQUldCXQ0N
WyAgICAyLjU4NDM4NF0gQUNQSTogUENJIFJvb3QgQnJpZGdlIFtQQ0kzXSAoZG9tYWluIDAwMDAg
W2J1cyBjMC1mZl0pDQ1bICAgIDIuNTg3ODA1XSBhY3BpIFBOUDBBMDg6MDA6IF9PU0M6IE9TIHN1
cHBvcnRzIFtFeHRlbmRlZENvbmZpZyBBU1BNIENsb2NrUE0gU2VnbWVudHMgTVNJIEhQWC1UeXBl
M10NDVsgICAgMi41OTE5MzBdIGFjcGkgUE5QMEEwODowMDogX09TQzogcGxhdGZvcm0gZG9lcyBu
b3Qgc3VwcG9ydCBbQUVSIExUUl0NDVsgICAgMi41OTYwMjVdIGFjcGkgUE5QMEEwODowMDogX09T
QzogT1Mgbm93IGNvbnRyb2xzIFtQQ0llSG90cGx1ZyBTSFBDSG90cGx1ZyBQTUUgUENJZUNhcGFi
aWxpdHldDQ1bICAgIDIuNjAwMTE0XSBQQ0kgaG9zdCBicmlkZ2UgdG8gYnVzIDAwMDA6YzANDVsg
ICAgMi42MDM4MDJdIHBjaV9idXMgMDAwMDpjMDogcm9vdCBidXMgcmVzb3VyY2UgW2lvICAweGEw
MDAtMHhmZmZmIHdpbmRvd10NDVsgICAgMi42MDc4MDJdIHBjaV9idXMgMDAwMDpjMDogcm9vdCBi
dXMgcmVzb3VyY2UgW21lbSAweGQ0MDAwMDAwLTB4ZDVmZmZmZmYgd2luZG93XQ0NWyAgICAyLjYx
MTgwMl0gcGNpX2J1cyAwMDAwOmMwOiByb290IGJ1cyByZXNvdXJjZSBbbWVtIDB4MTAwMjA0MDAw
MDAtMHgxNTliMzNmZmZmZiB3aW5kb3ddDQ1bICAgIDIuNjE1ODAzXSBwY2lfYnVzIDAwMDA6YzA6
IHJvb3QgYnVzIHJlc291cmNlIFtidXMgYzAtZmZdDQ1bICAgIDIuNjE5ODI3XSBwY2kgMDAwMDpj
MDowMC4wOiBbMTAyMjoxNGE0XSB0eXBlIDAwIGNsYXNzIDB4MDYwMDAwDQ0oWEVOKSBQQ0kgYWRk
IGRldmljZSAwMDAwOmMwOjAwLjANWyAgICAyLjYyNzUzNl0gcGNpIDAwMDA6YzA6MDAuMjogWzEw
MjI6MTQ5ZV0gdHlwZSAwMCBjbGFzcyAweDA4MDYwMA0NKFhFTikgUENJIGFkZCBkZXZpY2UgMDAw
MDpjMDowMC4yDVsgICAgMi42MzEzNzVdIHBjaSAwMDAwOmMwOjAwLjM6IFsxMDIyOjE0YTZdIHR5
cGUgMDAgY2xhc3MgMHgwODA3MDANDVsgICAgMi42MzE4ODBdIHBjaSAwMDAwOmMwOjAwLjM6IGVu
YWJsaW5nIEV4dGVuZGVkIFRhZ3MNDShYRU4pIFBDSSBhZGQgZGV2aWNlIDAwMDA6YzA6MDAuMw1b
ICAgIDIuNjM5NTczXSBwY2kgMDAwMDpjMDowMS4wOiBbMTAyMjoxNDlmXSB0eXBlIDAwIGNsYXNz
IDB4MDYwMDAwDQ0oWEVOKSBQQ0kgYWRkIGRldmljZSAwMDAwOmMwOjAxLjANWyAgICAyLjY0MzQz
N10gcGNpIDAwMDA6YzA6MDIuMDogWzEwMjI6MTQ5Zl0gdHlwZSAwMCBjbGFzcyAweDA2MDAwMA0N
KFhFTikgUENJIGFkZCBkZXZpY2UgMDAwMDpjMDowMi4wDVsgICAgMi42NDczNzldIHBjaSAwMDAw
OmMwOjAzLjA6IFsxMDIyOjE0OWZdIHR5cGUgMDAgY2xhc3MgMHgwNjAwMDANDShYRU4pIFBDSSBh
ZGQgZGV2aWNlIDAwMDA6YzA6MDMuMA1bICAgIDIuNjUxNDMwXSBwY2kgMDAwMDpjMDowNC4wOiBb
MTAyMjoxNDlmXSB0eXBlIDAwIGNsYXNzIDB4MDYwMDAwDQ0oWEVOKSBQQ0kgYWRkIGRldmljZSAw
MDAwOmMwOjA0LjANWyAgICAyLjY1NTQwM10gcGNpIDAwMDA6YzA6MDUuMDogWzEwMjI6MTQ5Zl0g
dHlwZSAwMCBjbGFzcyAweDA2MDAwMA0NKFhFTikgUENJIGFkZCBkZXZpY2UgMDAwMDpjMDowNS4w
DVsgICAgMi42NTk0MDldIHBjaSAwMDAwOmMwOjA3LjA6IFsxMDIyOjE0OWZdIHR5cGUgMDAgY2xh
c3MgMHgwNjAwMDANDShYRU4pIFBDSSBhZGQgZGV2aWNlIDAwMDA6YzA6MDcuMA1bICAgIDIuNjYz
MzQ0XSBwY2kgMDAwMDpjMDowNy4xOiBbMTAyMjoxNGE3XSB0eXBlIDAxIGNsYXNzIDB4MDYwNDAw
DQ1bICAgIDIuNjYzODc5XSBwY2kgMDAwMDpjMDowNy4xOiBlbmFibGluZyBFeHRlbmRlZCBUYWdz
DQ1bICAgIDIuNjY3OTI2XSBwY2kgMDAwMDpjMDowNy4xOiBQTUUjIHN1cHBvcnRlZCBmcm9tIEQw
IEQzaG90IEQzY29sZA0NKFhFTikgUENJIGFkZCBkZXZpY2UgMDAwMDpjMDowNy4xDVsgICAgMi42
NzU2NzddIHBjaSAwMDAwOmMxOjAwLjA6IFsxMDIyOjE0YWNdIHR5cGUgMDAgY2xhc3MgMHgxMzAw
MDANDVsgICAgMi42NzU4NjddIHBjaSAwMDAwOmMxOjAwLjA6IGVuYWJsaW5nIEV4dGVuZGVkIFRh
Z3MNDShYRU4pIFBDSSBhZGQgZGV2aWNlIDAwMDA6YzE6MDAuMA1bICAgIDIuNjgzNTc4XSBwY2kg
MDAwMDpjMTowMC40OiBbMTAyMjoxNGM5XSB0eXBlIDAwIGNsYXNzIDB4MGMwMzMwDQ1bICAgIDIu
Njg2MjQ4XSBwY2kgMDAwMDpjMTowMC40OiByZWcgMHgxMDogW21lbSAweGQ1ZjAwMDAwLTB4ZDVm
ZmZmZmYgNjRiaXRdDQ1bICAgIDIuNjk4MzM4XSBwY2kgMDAwMDpjMTowMC40OiBlbmFibGluZyBF
eHRlbmRlZCBUYWdzDQ1bICAgIDIuNjk5ODg5XSBwY2kgMDAwMDpjMTowMC40OiBQTUUjIHN1cHBv
cnRlZCBmcm9tIEQwIEQzaG90IEQzY29sZA0NKFhFTikgUENJIGFkZCBkZXZpY2UgMDAwMDpjMTow
MC40DVsgICAgMi43MDczOTFdIHBjaSAwMDAwOmMwOjA3LjE6IFBDSSBicmlkZ2UgdG8gW2J1cyBj
MV0NDVsgICAgMi43MDc4MDldIHBjaSAwMDAwOmMwOjA3LjE6ICAgYnJpZGdlIHdpbmRvdyBbbWVt
IDB4ZDVmMDAwMDAtMHhkNWZmZmZmZl0NDVsgICAgMi43MTIzNDBdIEFDUEk6IFBDSSBSb290IEJy
aWRnZSBbUENJMl0gKGRvbWFpbiAwMDAwIFtidXMgODAtYmZdKQ0NWyAgICAyLjcxNTgwM10gYWNw
aSBQTlAwQTA4OjAxOiBfT1NDOiBPUyBzdXBwb3J0cyBbRXh0ZW5kZWRDb25maWcgQVNQTSBDbG9j
a1BNIFNlZ21lbnRzIE1TSSBIUFgtVHlwZTNdDQ1bICAgIDIuNzE5OTMyXSBhY3BpIFBOUDBBMDg6
MDE6IF9PU0M6IHBsYXRmb3JtIGRvZXMgbm90IHN1cHBvcnQgW0FFUiBMVFJdDQ1bICAgIDIuNzIz
OTk3XSBhY3BpIFBOUDBBMDg6MDE6IF9PU0M6IE9TIG5vdyBjb250cm9scyBbUENJZUhvdHBsdWcg
U0hQQ0hvdHBsdWcgUE1FIFBDSWVDYXBhYmlsaXR5XQ0NWyAgICAyLjcyODA3NF0gUENJIGhvc3Qg
YnJpZGdlIHRvIGJ1cyAwMDAwOjgwDQ1bICAgIDIuNzMxODAxXSBwY2lfYnVzIDAwMDA6ODA6IHJv
b3QgYnVzIHJlc291cmNlIFtpbyAgMHg3MDAwLTB4OWZmZiB3aW5kb3ddDQ1bICAgIDIuNzM1ODAw
XSBwY2lfYnVzIDAwMDA6ODA6IHJvb3QgYnVzIHJlc291cmNlIFttZW0gMHhjYTAwMDAwMC0weGNh
ZmZmZmZmIHdpbmRvd10NDVsgICAgMi43Mzk4MDFdIHBjaV9idXMgMDAwMDo4MDogcm9vdCBidXMg
cmVzb3VyY2UgW21lbSAweDJjMDIwNDAwMDAwLTB4MzE5YjMzZmZmZmYgd2luZG93XQ0NWyAgICAy
Ljc0MzgwMV0gcGNpX2J1cyAwMDAwOjgwOiByb290IGJ1cyByZXNvdXJjZSBbYnVzIDgwLWJmXQ0N
WyAgICAyLjc0NzgxOF0gcGNpIDAwMDA6ODA6MDAuMDogWzEwMjI6MTRhNF0gdHlwZSAwMCBjbGFz
cyAweDA2MDAwMA0NKFhFTikgUENJIGFkZCBkZXZpY2UgMDAwMDo4MDowMC4wDVsgICAgMi43NTU0
MTBdIHBjaSAwMDAwOjgwOjAwLjI6IFsxMDIyOjE0OWVdIHR5cGUgMDAgY2xhc3MgMHgwODA2MDAN
DShYRU4pIFBDSSBhZGQgZGV2aWNlIDAwMDA6ODA6MDAuMg1bICAgIDIuNzU5NDU0XSBwY2kgMDAw
MDo4MDowMC4zOiBbMTAyMjoxNGE2XSB0eXBlIDAwIGNsYXNzIDB4MDgwNzAwDQ1bICAgIDIuNzU5
ODYzXSBwY2kgMDAwMDo4MDowMC4zOiBlbmFibGluZyBFeHRlbmRlZCBUYWdzDQ0oWEVOKSBQQ0kg
YWRkIGRldmljZSAwMDAwOjgwOjAwLjMNWyAgICAyLjc2NzUzNl0gcGNpIDAwMDA6ODA6MDEuMDog
WzEwMjI6MTQ5Zl0gdHlwZSAwMCBjbGFzcyAweDA2MDAwMA0NKFhFTikgUENJIGFkZCBkZXZpY2Ug
MDAwMDo4MDowMS4wDVsgICAgMi43NzE0MjRdIHBjaSAwMDAwOjgwOjAxLjI6IFsxMDIyOjE0YWJd
IHR5cGUgMDEgY2xhc3MgMHgwNjA0MDANDVsgICAgMi43NzIwMzBdIHBjaSAwMDAwOjgwOjAxLjI6
IFBNRSMgc3VwcG9ydGVkIGZyb20gRDAgRDNob3QgRDNjb2xkDQ0oWEVOKSBQQ0kgYWRkIGRldmlj
ZSAwMDAwOjgwOjAxLjINWyAgICAyLjc3OTcyNV0gcGNpIDAwMDA6ODA6MDEuMzogWzEwMjI6MTRh
Yl0gdHlwZSAwMSBjbGFzcyAweDA2MDQwMA0NWyAgICAyLjc3OTg2NV0gcGNpIDAwMDA6ODA6MDEu
MzogZW5hYmxpbmcgRXh0ZW5kZWQgVGFncw0NWyAgICAyLjc4Mzk2M10gcGNpIDAwMDA6ODA6MDEu
MzogUE1FIyBzdXBwb3J0ZWQgZnJvbSBEMCBEM2hvdCBEM2NvbGQNDShYRU4pIFBDSSBhZGQgZGV2
aWNlIDAwMDA6ODA6MDEuMw1bICAgIDIuNzkxNzIzXSBwY2kgMDAwMDo4MDowMi4wOiBbMTAyMjox
NDlmXSB0eXBlIDAwIGNsYXNzIDB4MDYwMDAwDQ0oWEVOKSBQQ0kgYWRkIGRldmljZSAwMDAwOjgw
OjAyLjANWyAgICAyLjc5NTQ0MF0gcGNpIDAwMDA6ODA6MDMuMDogWzEwMjI6MTQ5Zl0gdHlwZSAw
MCBjbGFzcyAweDA2MDAwMA0NKFhFTikgUENJIGFkZCBkZXZpY2UgMDAwMDo4MDowMy4wDVsgICAg
Mi43OTkzNzddIHBjaSAwMDAwOjgwOjAzLjE6IFsxMDIyOjE0YTVdIHR5cGUgMDEgY2xhc3MgMHgw
NjA0MDANDVsgICAgMi44MDAwMDRdIHBjaSAwMDAwOjgwOjAzLjE6IFBNRSMgc3VwcG9ydGVkIGZy
b20gRDAgRDNob3QgRDNjb2xkDQ0oWEVOKSBQQ0kgYWRkIGRldmljZSAwMDAwOjgwOjAzLjENWyAg
ICAyLjgwNzU4OF0gcGNpIDAwMDA6ODA6MDMuMjogWzEwMjI6MTRhNV0gdHlwZSAwMSBjbGFzcyAw
eDA2MDQwMA0NWyAgICAyLjgwNzg2MV0gcGNpIDAwMDA6ODA6MDMuMjogZW5hYmxpbmcgRXh0ZW5k
ZWQgVGFncw0NWyAgICAyLjgxMTk0NV0gcGNpIDAwMDA6ODA6MDMuMjogUE1FIyBzdXBwb3J0ZWQg
ZnJvbSBEMCBEM2hvdCBEM2NvbGQNDShYRU4pIFBDSSBhZGQgZGV2aWNlIDAwMDA6ODA6MDMuMg1b
ICAgIDIuODE5NTY2XSBwY2kgMDAwMDo4MDowNC4wOiBbMTAyMjoxNDlmXSB0eXBlIDAwIGNsYXNz
IDB4MDYwMDAwDQ0oWEVOKSBQQ0kgYWRkIGRldmljZSAwMDAwOjgwOjA0LjANWyAgICAyLjgyMzM1
Ml0gcGNpIDAwMDA6ODA6MDUuMDogWzEwMjI6MTQ5Zl0gdHlwZSAwMCBjbGFzcyAweDA2MDAwMA0N
KFhFTikgUENJIGFkZCBkZXZpY2UgMDAwMDo4MDowNS4wDVsgICAgMi44Mjc0NDhdIHBjaSAwMDAw
OjgwOjA3LjA6IFsxMDIyOjE0OWZdIHR5cGUgMDAgY2xhc3MgMHgwNjAwMDANDShYRU4pIFBDSSBh
ZGQgZGV2aWNlIDAwMDA6ODA6MDcuMA1bICAgIDIuODMxMjcxXSBwY2kgMDAwMDo4MDowNy4xOiBb
MTAyMjoxNGE3XSB0eXBlIDAxIGNsYXNzIDB4MDYwNDAwDQ1bICAgIDIuODMxODU3XSBwY2kgMDAw
MDo4MDowNy4xOiBlbmFibGluZyBFeHRlbmRlZCBUYWdzDQ1bICAgIDIuODM1ODk1XSBwY2kgMDAw
MDo4MDowNy4xOiBQTUUjIHN1cHBvcnRlZCBmcm9tIEQwIEQzaG90IEQzY29sZA0NKFhFTikgUENJ
IGFkZCBkZXZpY2UgMDAwMDo4MDowNy4xDVsgICAgMi44NDM1NTJdIHBjaSAwMDAwOjgxOjAwLjA6
IFsxNDRkOmE4MGNdIHR5cGUgMDAgY2xhc3MgMHgwMTA4MDINDVsgICAgMi44NDM4NjBdIHBjaSAw
MDAwOjgxOjAwLjA6IHJlZyAweDEwOiBbbWVtIDB4Y2FmMDAwMDAtMHhjYWYwM2ZmZiA2NGJpdF0N
DShYRU4pIFBDSSBhZGQgZGV2aWNlIDAwMDA6ODE6MDAuMA1bICAgIDIuODUxODEwXSBwY2kgMDAw
MDo4MDowMS4yOiBQQ0kgYnJpZGdlIHRvIFtidXMgODFdDQ1bICAgIDIuODU1ODExXSBwY2kgMDAw
MDo4MDowMS4yOiAgIGJyaWRnZSB3aW5kb3cgW21lbSAweGNhZjAwMDAwLTB4Y2FmZmZmZmZdDQ1b
ICAgIDIuODU5ODk4XSBwY2kgMDAwMDo4MjowMC4wOiBbMWI3MzoxMTAwXSB0eXBlIDAwIGNsYXNz
IDB4MGMwMzMwDQ1bICAgIDIuODYzOTg3XSBwY2kgMDAwMDo4MjowMC4wOiByZWcgMHgxMDogW21l
bSAweGNhZTAwMDAwLTB4Y2FlMGZmZmYgNjRiaXRdDQ1bICAgIDIuODY3OTc4XSBwY2kgMDAwMDo4
MjowMC4wOiByZWcgMHgxODogW21lbSAweGNhZTExMDAwLTB4Y2FlMTFmZmYgNjRiaXRdDQ1bICAg
IDIuODcxOTc4XSBwY2kgMDAwMDo4MjowMC4wOiByZWcgMHgyMDogW21lbSAweGNhZTEwMDAwLTB4
Y2FlMTBmZmYgNjRiaXRdDQ1bICAgIDIuODc2MDQ5XSBwY2kgMDAwMDo4MjowMC4wOiBzdXBwb3J0
cyBEMQ0NWyAgICAyLjg3OTgwMV0gcGNpIDAwMDA6ODI6MDAuMDogUE1FIyBzdXBwb3J0ZWQgZnJv
bSBEMCBEMSBEM2hvdA0NKFhFTikgUENJIGFkZCBkZXZpY2UgMDAwMDo4MjowMC4wDVsgICAgMi44
ODczMzFdIHBjaSAwMDAwOjgwOjAxLjM6IFBDSSBicmlkZ2UgdG8gW2J1cyA4Ml0NDVsgICAgMi44
ODc4MDhdIHBjaSAwMDAwOjgwOjAxLjM6ICAgYnJpZGdlIHdpbmRvdyBbbWVtIDB4Y2FlMDAwMDAt
MHhjYWVmZmZmZl0NDVsgICAgMi44OTE4OTddIHBjaSAwMDAwOjgzOjAwLjA6IFsxYjIxOjMyNDJd
IHR5cGUgMDAgY2xhc3MgMHgwYzAzMzANDVsgICAgMi44OTU5NjhdIHBjaSAwMDAwOjgzOjAwLjA6
IHJlZyAweDEwOiBbbWVtIDB4Y2FkMDAwMDAtMHhjYWQwN2ZmZiA2NGJpdF0NDVsgICAgMi45MDA1
ODZdIHBjaSAwMDAwOjgzOjAwLjA6IFBNRSMgc3VwcG9ydGVkIGZyb20gRDAgRDNob3QgRDNjb2xk
DQ0oWEVOKSBQQ0kgYWRkIGRldmljZSAwMDAwOjgzOjAwLjANWyAgICAyLjkwNzU3Ml0gcGNpIDAw
MDA6ODA6MDMuMTogUENJIGJyaWRnZSB0byBbYnVzIDgzXQ0NWyAgICAyLjkwNzgwOV0gcGNpIDAw
MDA6ODA6MDMuMTogICBicmlkZ2Ugd2luZG93IFttZW0gMHhjYWQwMDAwMC0weGNhZGZmZmZmXQ0N
WyAgICAyLjkxMTkwOF0gcGNpIDAwMDA6ODQ6MDAuMDogWzFiMjE6MTE4Ml0gdHlwZSAwMSBjbGFz
cyAweDA2MDQwMA0NWyAgICAyLjkxNTg3N10gcGNpIDAwMDA6ODQ6MDAuMDogZW5hYmxpbmcgRXh0
ZW5kZWQgVGFncw0NWyAgICAyLjkxOTg5N10gcGNpIDAwMDA6ODQ6MDAuMDogUE1FIyBzdXBwb3J0
ZWQgZnJvbSBEMCBEM2hvdCBEM2NvbGQNDShYRU4pIFBDSSBhZGQgZGV2aWNlIDAwMDA6ODQ6MDAu
MA1bICAgIDIuOTI3NDg4XSBwY2kgMDAwMDo4MDowMy4yOiBQQ0kgYnJpZGdlIHRvIFtidXMgODQt
ODddDQ1bICAgIDIuOTI3ODA2XSBwY2kgMDAwMDo4MDowMy4yOiAgIGJyaWRnZSB3aW5kb3cgW2lv
ICAweDgwMDAtMHg5ZmZmXQ0NWyAgICAyLjkzMTgwM10gcGNpIDAwMDA6ODA6MDMuMjogICBicmlk
Z2Ugd2luZG93IFttZW0gMHhjYWIwMDAwMC0weGNhY2ZmZmZmXQ0NWyAgICAyLjkzNTgwNl0gcGNp
IDAwMDA6ODA6MDMuMjogICBicmlkZ2Ugd2luZG93IFttZW0gMHgzMTliMzIwMDAwMC0weDMxOWIz
M2ZmZmZmIDY0Yml0IHByZWZdDQ1bICAgIDIuOTM5ODY5XSBwY2kgMDAwMDo4NTowMy4wOiBbMWIy
MToxMTgyXSB0eXBlIDAxIGNsYXNzIDB4MDYwNDAwDQ1bICAgIDIuOTQzODgwXSBwY2kgMDAwMDo4
NTowMy4wOiBlbmFibGluZyBFeHRlbmRlZCBUYWdzDQ1bICAgIDIuOTQ3ODkwXSBwY2kgMDAwMDo4
NTowMy4wOiBQTUUjIHN1cHBvcnRlZCBmcm9tIEQwIEQzaG90IEQzY29sZA0NKFhFTikgUENJIGFk
ZCBkZXZpY2UgMDAwMDo4NTowMy4wDVsgICAgMi45NTU0NTZdIHBjaSAwMDAwOjg1OjA3LjA6IFsx
YjIxOjExODJdIHR5cGUgMDEgY2xhc3MgMHgwNjA0MDANDVsgICAgMi45NTU4NzldIHBjaSAwMDAw
Ojg1OjA3LjA6IGVuYWJsaW5nIEV4dGVuZGVkIFRhZ3MNDVsgICAgMi45NTk4ODldIHBjaSAwMDAw
Ojg1OjA3LjA6IFBNRSMgc3VwcG9ydGVkIGZyb20gRDAgRDNob3QgRDNjb2xkDQ0oWEVOKSBQQ0kg
YWRkIGRldmljZSAwMDAwOjg1OjA3LjANWyAgICAyLjk2NzUwMF0gcGNpIDAwMDA6ODQ6MDAuMDog
UENJIGJyaWRnZSB0byBbYnVzIDg1LTg3XQ0NWyAgICAyLjk2NzgwOF0gcGNpIDAwMDA6ODQ6MDAu
MDogICBicmlkZ2Ugd2luZG93IFtpbyAgMHg4MDAwLTB4OWZmZl0NDVsgICAgMi45NzE4MDRdIHBj
aSAwMDAwOjg0OjAwLjA6ICAgYnJpZGdlIHdpbmRvdyBbbWVtIDB4Y2FiMDAwMDAtMHhjYWNmZmZm
Zl0NDVsgICAgMi45NzU4MDddIHBjaSAwMDAwOjg0OjAwLjA6ICAgYnJpZGdlIHdpbmRvdyBbbWVt
IDB4MzE5YjMyMDAwMDAtMHgzMTliMzNmZmZmZiA2NGJpdCBwcmVmXQ0NWyAgICAyLjk3OTg3NV0g
cGNpIDAwMDA6ODY6MDAuMDogWzEwZWM6ODE2OF0gdHlwZSAwMCBjbGFzcyAweDAyMDAwMA0NWyAg
ICAyLjk4MzgyN10gcGNpIDAwMDA6ODY6MDAuMDogcmVnIDB4MTA6IFtpbyAgMHg5MDAwLTB4OTBm
Zl0NDVsgICAgMi45ODc4MzRdIHBjaSAwMDAwOjg2OjAwLjA6IHJlZyAweDE4OiBbbWVtIDB4Y2Fj
MDAwMDAtMHhjYWMwMGZmZiA2NGJpdF0NDVsgICAgMi45OTE4MjJdIHBjaSAwMDAwOjg2OjAwLjA6
IHJlZyAweDIwOiBbbWVtIDB4MzE5YjMzMDAwMDAtMHgzMTliMzMwM2ZmZiA2NGJpdCBwcmVmXQ0N
WyAgICAyLjk5NTk2Nl0gcGNpIDAwMDA6ODY6MDAuMDogc3VwcG9ydHMgRDEgRDINDVsgICAgMi45
OTk4MDFdIHBjaSAwMDAwOjg2OjAwLjA6IFBNRSMgc3VwcG9ydGVkIGZyb20gRDAgRDEgRDIgRDNo
b3QgRDNjb2xkDQ0oWEVOKSBQQ0kgYWRkIGRldmljZSAwMDAwOjg2OjAwLjANWyAgICAzLjAwNzU0
MF0gcGNpIDAwMDA6ODU6MDMuMDogUENJIGJyaWRnZSB0byBbYnVzIDg2XQ0NWyAgICAzLjAwNzgw
N10gcGNpIDAwMDA6ODU6MDMuMDogICBicmlkZ2Ugd2luZG93IFtpbyAgMHg5MDAwLTB4OWZmZl0N
DVsgICAgMy4wMTE4MDRdIHBjaSAwMDAwOjg1OjAzLjA6ICAgYnJpZGdlIHdpbmRvdyBbbWVtIDB4
Y2FjMDAwMDAtMHhjYWNmZmZmZl0NDVsgICAgMy4wMTU4MDhdIHBjaSAwMDAwOjg1OjAzLjA6ICAg
YnJpZGdlIHdpbmRvdyBbbWVtIDB4MzE5YjMzMDAwMDAtMHgzMTliMzNmZmZmZiA2NGJpdCBwcmVm
XQ0NWyAgICAzLjAxOTg3Nl0gcGNpIDAwMDA6ODc6MDAuMDogWzEwZWM6ODE2OF0gdHlwZSAwMCBj
bGFzcyAweDAyMDAwMA0NWyAgICAzLjAyMzgyN10gcGNpIDAwMDA6ODc6MDAuMDogcmVnIDB4MTA6
IFtpbyAgMHg4MDAwLTB4ODBmZl0NDVsgICAgMy4wMjc4MzRdIHBjaSAwMDAwOjg3OjAwLjA6IHJl
ZyAweDE4OiBbbWVtIDB4Y2FiMDAwMDAtMHhjYWIwMGZmZiA2NGJpdF0NDVsgICAgMy4wMzE4MjNd
IHBjaSAwMDAwOjg3OjAwLjA6IHJlZyAweDIwOiBbbWVtIDB4MzE5YjMyMDAwMDAtMHgzMTliMzIw
M2ZmZiA2NGJpdCBwcmVmXQ0NWyAgICAzLjAzNTk3NF0gcGNpIDAwMDA6ODc6MDAuMDogc3VwcG9y
dHMgRDEgRDINDVsgICAgMy4wMzk4MDBdIHBjaSAwMDAwOjg3OjAwLjA6IFBNRSMgc3VwcG9ydGVk
IGZyb20gRDAgRDEgRDIgRDNob3QgRDNjb2xkDQ0oWEVOKSBQQ0kgYWRkIGRldmljZSAwMDAwOjg3
OjAwLjANWyAgICAzLjA0NzUxMl0gcGNpIDAwMDA6ODU6MDcuMDogUENJIGJyaWRnZSB0byBbYnVz
IDg3XQ0NWyAgICAzLjA0NzgwN10gcGNpIDAwMDA6ODU6MDcuMDogICBicmlkZ2Ugd2luZG93IFtp
byAgMHg4MDAwLTB4OGZmZl0NDVsgICAgMy4wNTE4MDVdIHBjaSAwMDAwOjg1OjA3LjA6ICAgYnJp
ZGdlIHdpbmRvdyBbbWVtIDB4Y2FiMDAwMDAtMHhjYWJmZmZmZl0NDVsgICAgMy4wNTU4MDhdIHBj
aSAwMDAwOjg1OjA3LjA6ICAgYnJpZGdlIHdpbmRvdyBbbWVtIDB4MzE5YjMyMDAwMDAtMHgzMTli
MzJmZmZmZiA2NGJpdCBwcmVmXQ0NWyAgICAzLjA1OTkxM10gcGNpIDAwMDA6ODg6MDAuMDogWzEw
MjI6MTRhY10gdHlwZSAwMCBjbGFzcyAweDEzMDAwMA0NWyAgICAzLjA2Mzg1NF0gcGNpIDAwMDA6
ODg6MDAuMDogZW5hYmxpbmcgRXh0ZW5kZWQgVGFncw0NKFhFTikgUENJIGFkZCBkZXZpY2UgMDAw
MDo4ODowMC4wDVsgICAgMy4wNzE1MzhdIHBjaSAwMDAwOjgwOjA3LjE6IFBDSSBicmlkZ2UgdG8g
W2J1cyA4OF0NDVsgICAgMy4wNzIyMzBdIEFDUEk6IFBDSSBSb290IEJyaWRnZSBbUENJMF0gKGRv
bWFpbiAwMDAwIFtidXMgMDAtM2ZdKQ0NWyAgICAzLjA3NTgwM10gYWNwaSBQTlAwQTA4OjAyOiBf
T1NDOiBPUyBzdXBwb3J0cyBbRXh0ZW5kZWRDb25maWcgQVNQTSBDbG9ja1BNIFNlZ21lbnRzIE1T
SSBIUFgtVHlwZTNdDQ1bICAgIDMuMDc5OTA5XSBhY3BpIFBOUDBBMDg6MDI6IF9PU0M6IHBsYXRm
b3JtIGRvZXMgbm90IHN1cHBvcnQgW0FFUiBMVFJdDQ1bICAgIDMuMDg0MDAzXSBhY3BpIFBOUDBB
MDg6MDI6IF9PU0M6IE9TIG5vdyBjb250cm9scyBbUENJZUhvdHBsdWcgU0hQQ0hvdHBsdWcgUE1F
IFBDSWVDYXBhYmlsaXR5XQ0NWyAgICAzLjA4ODIwM10gUENJIGhvc3QgYnJpZGdlIHRvIGJ1cyAw
MDAwOjAwDQ1bICAgIDMuMDkxODAxXSBwY2lfYnVzIDAwMDA6MDA6IHJvb3QgYnVzIHJlc291cmNl
IFtpbyAgMHgwMDAwLTB4MDJlNyB3aW5kb3ddDQ1bICAgIDMuMDk1ODAyXSBwY2lfYnVzIDAwMDA6
MDA6IHJvb3QgYnVzIHJlc291cmNlIFtpbyAgMHgwMzAwLTB4MDNhZiB3aW5kb3ddDQ1bICAgIDMu
MDk5ODAxXSBwY2lfYnVzIDAwMDA6MDA6IHJvb3QgYnVzIHJlc291cmNlIFtpbyAgMHgwNDAwLTB4
MGNmNyB3aW5kb3ddDQ1bICAgIDMuMTAzODAxXSBwY2lfYnVzIDAwMDA6MDA6IHJvb3QgYnVzIHJl
c291cmNlIFtpbyAgMHgwM2IwLTB4MDNkZiB3aW5kb3ddDQ1bICAgIDMuMTA3ODAxXSBwY2lfYnVz
IDAwMDA6MDA6IHJvb3QgYnVzIHJlc291cmNlIFtpbyAgMHgxMDAwLTB4M2ZmZiB3aW5kb3ddDQ1b
ICAgIDMuMTExODAxXSBwY2lfYnVzIDAwMDA6MDA6IHJvb3QgYnVzIHJlc291cmNlIFttZW0gMHgw
MDBhMDAwMC0weDAwMGRmZmZmIHdpbmRvd10NDVsgICAgMy4xMTU4MDFdIHBjaV9idXMgMDAwMDow
MDogcm9vdCBidXMgcmVzb3VyY2UgW21lbSAweGYwMDAwMDAwLTB4ZjBmZmZmZmYgd2luZG93XQ0N
WyAgICAzLjExOTgwMV0gcGNpX2J1cyAwMDAwOjAwOiByb290IGJ1cyByZXNvdXJjZSBbbWVtIDB4
NDgwMjA0MDAwMDAtMHg0ZDliMzNmZmZmZiB3aW5kb3ddDQ1bICAgIDMuMTIzODAwXSBwY2lfYnVz
IDAwMDA6MDA6IHJvb3QgYnVzIHJlc291cmNlIFtidXMgMDAtM2ZdDQ1bICAgIDMuMTI3ODIwXSBw
Y2kgMDAwMDowMDowMC4wOiBbMTAyMjoxNGE0XSB0eXBlIDAwIGNsYXNzIDB4MDYwMDAwDQ0oWEVO
KSBQQ0kgYWRkIGRldmljZSAwMDAwOjAwOjAwLjANWyAgICAzLjEzNTQ3OV0gcGNpIDAwMDA6MDA6
MDAuMjogWzEwMjI6MTQ5ZV0gdHlwZSAwMCBjbGFzcyAweDA4MDYwMA0NKFhFTikgUENJIGFkZCBk
ZXZpY2UgMDAwMDowMDowMC4yDVsgICAgMy4xMzkyNDldIHBjaSAwMDAwOjAwOjAwLjM6IFsxMDIy
OjE0YTZdIHR5cGUgMDAgY2xhc3MgMHgwODA3MDANDVsgICAgMy4xMzk4NzBdIHBjaSAwMDAwOjAw
OjAwLjM6IGVuYWJsaW5nIEV4dGVuZGVkIFRhZ3MNDShYRU4pIFBDSSBhZGQgZGV2aWNlIDAwMDA6
MDA6MDAuMw1bICAgIDMuMTQ3NDAyXSBwY2kgMDAwMDowMDowMS4wOiBbMTAyMjoxNDlmXSB0eXBl
IDAwIGNsYXNzIDB4MDYwMDAwDQ0oWEVOKSBQQ0kgYWRkIGRldmljZSAwMDAwOjAwOjAxLjANWyAg
ICAzLjE1MTQyMV0gcGNpIDAwMDA6MDA6MDEuMTogWzEwMjI6MTRhYl0gdHlwZSAwMSBjbGFzcyAw
eDA2MDQwMA0NWyAgICAzLjE1MjA0Nl0gcGNpIDAwMDA6MDA6MDEuMTogUE1FIyBzdXBwb3J0ZWQg
ZnJvbSBEMCBEM2hvdCBEM2NvbGQNDShYRU4pIFBDSSBhZGQgZGV2aWNlIDAwMDA6MDA6MDEuMQ1b
ICAgIDMuMTU5Njc4XSBwY2kgMDAwMDowMDowMi4wOiBbMTAyMjoxNDlmXSB0eXBlIDAwIGNsYXNz
IDB4MDYwMDAwDQ0oWEVOKSBQQ0kgYWRkIGRldmljZSAwMDAwOjAwOjAyLjANWyAgICAzLjE2MzQ3
N10gcGNpIDAwMDA6MDA6MDMuMDogWzEwMjI6MTQ5Zl0gdHlwZSAwMCBjbGFzcyAweDA2MDAwMA0N
KFhFTikgUENJIGFkZCBkZXZpY2UgMDAwMDowMDowMy4wDVsgICAgMy4xNjcyMjhdIHBjaSAwMDAw
OjAwOjA0LjA6IFsxMDIyOjE0OWZdIHR5cGUgMDAgY2xhc3MgMHgwNjAwMDANDShYRU4pIFBDSSBh
ZGQgZGV2aWNlIDAwMDA6MDA6MDQuMA1bICAgIDMuMTcxNDcwXSBwY2kgMDAwMDowMDowNS4wOiBb
MTAyMjoxNDlmXSB0eXBlIDAwIGNsYXNzIDB4MDYwMDAwDQ0oWEVOKSBQQ0kgYWRkIGRldmljZSAw
MDAwOjAwOjA1LjANWyAgICAzLjE3NTI5Nl0gcGNpIDAwMDA6MDA6MDUuMTogWzEwMjI6MTRhYV0g
dHlwZSAwMSBjbGFzcyAweDA2MDQwMA0NWyAgICAzLjE3NTkwN10gcGNpIDAwMDA6MDA6MDUuMTog
ZW5hYmxpbmcgRXh0ZW5kZWQgVGFncw0NWyAgICAzLjE4MDAwM10gcGNpIDAwMDA6MDA6MDUuMTog
UE1FIyBzdXBwb3J0ZWQgZnJvbSBEMCBEM2hvdCBEM2NvbGQNDShYRU4pIFBDSSBhZGQgZGV2aWNl
IDAwMDA6MDA6MDUuMQ1bICAgIDMuMTg3NjUxXSBwY2kgMDAwMDowMDowNS4yOiBbMTAyMjoxNGFh
XSB0eXBlIDAxIGNsYXNzIDB4MDYwNDAwDQ1bICAgIDMuMTg3OTA2XSBwY2kgMDAwMDowMDowNS4y
OiBlbmFibGluZyBFeHRlbmRlZCBUYWdzDQ1bICAgIDMuMTkxOTk5XSBwY2kgMDAwMDowMDowNS4y
OiBQTUUjIHN1cHBvcnRlZCBmcm9tIEQwIEQzaG90IEQzY29sZA0NKFhFTikgUENJIGFkZCBkZXZp
Y2UgMDAwMDowMDowNS4yDVsgICAgMy4xOTk3NDZdIHBjaSAwMDAwOjAwOjA1LjM6IFsxMDIyOjE0
YWFdIHR5cGUgMDEgY2xhc3MgMHgwNjA0MDANDVsgICAgMy4xOTk5MDRdIHBjaSAwMDAwOjAwOjA1
LjM6IGVuYWJsaW5nIEV4dGVuZGVkIFRhZ3MNDVsgICAgMy4yMDM5OTddIHBjaSAwMDAwOjAwOjA1
LjM6IFBNRSMgc3VwcG9ydGVkIGZyb20gRDAgRDNob3QgRDNjb2xkDQ0oWEVOKSBQQ0kgYWRkIGRl
dmljZSAwMDAwOjAwOjA1LjMNWyAgICAzLjIxMTU0NV0gcGNpIDAwMDA6MDA6MDUuNDogWzEwMjI6
MTRhYV0gdHlwZSAwMSBjbGFzcyAweDA2MDQwMA0NWyAgICAzLjIxMTkwMV0gcGNpIDAwMDA6MDA6
MDUuNDogZW5hYmxpbmcgRXh0ZW5kZWQgVGFncw0NWyAgICAzLjIxNTk5OF0gcGNpIDAwMDA6MDA6
MDUuNDogUE1FIyBzdXBwb3J0ZWQgZnJvbSBEMCBEM2hvdCBEM2NvbGQNDShYRU4pIFBDSSBhZGQg
ZGV2aWNlIDAwMDA6MDA6MDUuNA1bICAgIDMuMjIzNjc0XSBwY2kgMDAwMDowMDowNy4wOiBbMTAy
MjoxNDlmXSB0eXBlIDAwIGNsYXNzIDB4MDYwMDAwDQ0oWEVOKSBQQ0kgYWRkIGRldmljZSAwMDAw
OjAwOjA3LjANWyAgICAzLjIyNzMwMV0gcGNpIDAwMDA6MDA6MDcuMTogWzEwMjI6MTRhN10gdHlw
ZSAwMSBjbGFzcyAweDA2MDQwMA0NWyAgICAzLjIyNzg2MV0gcGNpIDAwMDA6MDA6MDcuMTogZW5h
YmxpbmcgRXh0ZW5kZWQgVGFncw0NWyAgICAzLjIzMTkwN10gcGNpIDAwMDA6MDA6MDcuMTogUE1F
IyBzdXBwb3J0ZWQgZnJvbSBEMCBEM2hvdCBEM2NvbGQNDShYRU4pIFBDSSBhZGQgZGV2aWNlIDAw
MDA6MDA6MDcuMQ1bICAgIDMuMjM5NTcyXSBwY2kgMDAwMDowMDowNy4yOiBbMTAyMjoxNGE3XSB0
eXBlIDAxIGNsYXNzIDB4MDYwNDAwDQ1bICAgIDMuMjM5ODYxXSBwY2kgMDAwMDowMDowNy4yOiBl
bmFibGluZyBFeHRlbmRlZCBUYWdzDQ1bICAgIDMuMjQzOTA2XSBwY2kgMDAwMDowMDowNy4yOiBQ
TUUjIHN1cHBvcnRlZCBmcm9tIEQwIEQzaG90IEQzY29sZA0NKFhFTikgUENJIGFkZCBkZXZpY2Ug
MDAwMDowMDowNy4yDVsgICAgMy4yNTE0OTRdIHBjaSAwMDAwOjAwOjE0LjA6IFsxMDIyOjc5MGJd
IHR5cGUgMDAgY2xhc3MgMHgwYzA1MDANDShYRU4pIFBDSSBhZGQgZGV2aWNlIDAwMDA6MDA6MTQu
MA1bICAgIDMuMjU1MzA3XSBwY2kgMDAwMDowMDoxNC4zOiBbMTAyMjo3OTBlXSB0eXBlIDAwIGNs
YXNzIDB4MDYwMTAwDQ0oWEVOKSBQQ0kgYWRkIGRldmljZSAwMDAwOjAwOjE0LjMNWyAgICAzLjI1
OTM2Ml0gcGNpIDAwMDA6MDA6MTguMDogWzEwMjI6MTRhZF0gdHlwZSAwMCBjbGFzcyAweDA2MDAw
MA0NKFhFTikgUENJIGFkZCBkZXZpY2UgMDAwMDowMDoxOC4wDVsgICAgMy4yNjMzOTddIHBjaSAw
MDAwOjAwOjE4LjE6IFsxMDIyOjE0YWVdIHR5cGUgMDAgY2xhc3MgMHgwNjAwMDANDShYRU4pIFBD
SSBhZGQgZGV2aWNlIDAwMDA6MDA6MTguMQ1bICAgIDMuMjY3MzI1XSBwY2kgMDAwMDowMDoxOC4y
OiBbMTAyMjoxNGFmXSB0eXBlIDAwIGNsYXNzIDB4MDYwMDAwDQ0oWEVOKSBQQ0kgYWRkIGRldmlj
ZSAwMDAwOjAwOjE4LjINWyAgICAzLjI3MTMxMV0gcGNpIDAwMDA6MDA6MTguMzogWzEwMjI6MTRi
MF0gdHlwZSAwMCBjbGFzcyAweDA2MDAwMA0NKFhFTikgUENJIGFkZCBkZXZpY2UgMDAwMDowMDox
OC4zDVsgICAgMy4yNzUzOTNdIHBjaSAwMDAwOjAwOjE4LjQ6IFsxMDIyOjE0YjFdIHR5cGUgMDAg
Y2xhc3MgMHgwNjAwMDANDShYRU4pIFBDSSBhZGQgZGV2aWNlIDAwMDA6MDA6MTguNA1bICAgIDMu
Mjc5MjM5XSBwY2kgMDAwMDowMDoxOC41OiBbMTAyMjoxNGIyXSB0eXBlIDAwIGNsYXNzIDB4MDYw
MDAwDQ0oWEVOKSBQQ0kgYWRkIGRldmljZSAwMDAwOjAwOjE4LjUNWyAgICAzLjI4MzQyMF0gcGNp
IDAwMDA6MDA6MTguNjogWzEwMjI6MTRiM10gdHlwZSAwMCBjbGFzcyAweDA2MDAwMA0NKFhFTikg
UENJIGFkZCBkZXZpY2UgMDAwMDowMDoxOC42DVsgICAgMy4yODc0NTVdIHBjaSAwMDAwOjAwOjE4
Ljc6IFsxMDIyOjE0YjRdIHR5cGUgMDAgY2xhc3MgMHgwNjAwMDANDShYRU4pIFBDSSBhZGQgZGV2
aWNlIDAwMDA6MDA6MTguNw1bICAgIDMuMjkxMzg1XSBwY2kgMDAwMDowMTowMC4wOiBbMTAwMjo2
N2RmXSB0eXBlIDAwIGNsYXNzIDB4MDMwMDAwDQ1bICAgIDMuMjk3NjM3XSBwY2kgMDAwMDowMTow
MC4wOiByZWcgMHgxMDogW21lbSAweDRkODAwMDAwMDAwLTB4NGQ4ZmZmZmZmZmYgNjRiaXQgcHJl
Zl0NDVsgICAgMy4zMDY0NjJdIHBjaSAwMDAwOjAxOjAwLjA6IHJlZyAweDE4OiBbbWVtIDB4NGQ5
MDAwMDAwMDAtMHg0ZDkwMDFmZmZmZiA2NGJpdCBwcmVmXQ0NWyAgICAzLjMxMzM1N10gcGNpIDAw
MDA6MDE6MDAuMDogcmVnIDB4MjA6IFtpbyAgMHgzMDAwLTB4MzBmZl0NDVsgICAgMy4zMjE4NTFd
IHBjaSAwMDAwOjAxOjAwLjA6IHJlZyAweDI0OiBbbWVtIDB4ZjBmMDAwMDAtMHhmMGYzZmZmZl0N
DVsgICAgMy4zMjk2MTJdIHBjaSAwMDAwOjAxOjAwLjA6IHJlZyAweDMwOiBbbWVtIDB4ZjBmNDAw
MDAtMHhmMGY1ZmZmZiBwcmVmXQ0NWyAgICAzLjMzMTk5OV0gcGNpIDAwMDA6MDE6MDAuMDogc3Vw
cG9ydHMgRDEgRDINDVsgICAgMy4zMzU4MDFdIHBjaSAwMDAwOjAxOjAwLjA6IFBNRSMgc3VwcG9y
dGVkIGZyb20gRDEgRDIgRDNob3QgRDNjb2xkDQ0oWEVOKSBQQ0kgYWRkIGRldmljZSAwMDAwOjAx
OjAwLjANWyAgICAzLjM0MzQ3NV0gcGNpIDAwMDA6MDE6MDAuMTogWzEwMDI6YWFmMF0gdHlwZSAw
MCBjbGFzcyAweDA0MDMwMA0NWyAgICAzLjM0MzgyNV0gcGNpIDAwMDA6MDE6MDAuMTogcmVnIDB4
MTA6IFttZW0gMHhmMGY2MDAwMC0weGYwZjYzZmZmIDY0Yml0XQ0NWyAgICAzLjM0Nzk0NV0gcGNp
IDAwMDA6MDE6MDAuMTogc3VwcG9ydHMgRDEgRDINDShYRU4pIFBDSSBhZGQgZGV2aWNlIDAwMDA6
MDE6MDAuMQ1bICAgIDMuMzU1NTY2XSBwY2kgMDAwMDowMDowMS4xOiBQQ0kgYnJpZGdlIHRvIFti
dXMgMDFdDQ1bICAgIDMuMzU1ODA3XSBwY2kgMDAwMDowMDowMS4xOiAgIGJyaWRnZSB3aW5kb3cg
W2lvICAweDMwMDAtMHgzZmZmXQ0NWyAgICAzLjM1OTgwM10gcGNpIDAwMDA6MDA6MDEuMTogICBi
cmlkZ2Ugd2luZG93IFttZW0gMHhmMGYwMDAwMC0weGYwZmZmZmZmXQ0NWyAgICAzLjM2MzgwNl0g
cGNpIDAwMDA6MDA6MDEuMTogICBicmlkZ2Ugd2luZG93IFttZW0gMHg0ZDgwMDAwMDAwMC0weDRk
OTAwMWZmZmZmIDY0Yml0IHByZWZdDQ1bICAgIDMuMzY3OTE0XSBwY2kgMDAwMDowMDowNS4xOiBQ
Q0kgYnJpZGdlIHRvIFtidXMgMDJdDQ1bICAgIDMuMzcxOTMxXSBwY2kgMDAwMDowMDowNS4yOiBQ
Q0kgYnJpZGdlIHRvIFtidXMgMDNdDQ1bICAgIDMuMzc1OTMwXSBwY2kgMDAwMDowMDowNS4zOiBQ
Q0kgYnJpZGdlIHRvIFtidXMgMDRdDQ1bICAgIDMuMzc5OTMxXSBwY2kgMDAwMDowMDowNS40OiBQ
Q0kgYnJpZGdlIHRvIFtidXMgMDVdDQ1bICAgIDMuMzgzOTMzXSBwY2kgMDAwMDowNjowMC4wOiBb
MTAyMjoxNGFjXSB0eXBlIDAwIGNsYXNzIDB4MTMwMDAwDQ1bICAgIDMuMzg3ODU3XSBwY2kgMDAw
MDowNjowMC4wOiBlbmFibGluZyBFeHRlbmRlZCBUYWdzDQ0oWEVOKSBQQ0kgYWRkIGRldmljZSAw
MDAwOjA2OjAwLjANWyAgICAzLjM5NTUyMF0gcGNpIDAwMDA6MDY6MDAuNDogWzEwMjI6MTRjOV0g
dHlwZSAwMCBjbGFzcyAweDBjMDMzMA0NWyAgICAzLjM5ODEyNV0gcGNpIDAwMDA6MDY6MDAuNDog
cmVnIDB4MTA6IFttZW0gMHhmMGMwMDAwMC0weGYwY2ZmZmZmIDY0Yml0XQ0NWyAgICAzLjQxMDEz
M10gcGNpIDAwMDA6MDY6MDAuNDogZW5hYmxpbmcgRXh0ZW5kZWQgVGFncw0NWyAgICAzLjQxMTg3
Ml0gcGNpIDAwMDA6MDY6MDAuNDogUE1FIyBzdXBwb3J0ZWQgZnJvbSBEMCBEM2hvdCBEM2NvbGQN
DShYRU4pIFBDSSBhZGQgZGV2aWNlIDAwMDA6MDY6MDAuNA1bICAgIDMuNDE5NDcxXSBwY2kgMDAw
MDowNjowMC41OiBbMTAyMjoxNGNhXSB0eXBlIDAwIGNsYXNzIDB4MTA4MDAwDQ1bICAgIDMuNDE5
ODI3XSBwY2kgMDAwMDowNjowMC41OiByZWcgMHgxODogW21lbSAweGYwYjAwMDAwLTB4ZjBiZmZm
ZmZdDQ1bICAgIDMuNDIzODE5XSBwY2kgMDAwMDowNjowMC41OiByZWcgMHgyNDogW21lbSAweGYw
ZDA4MDAwLTB4ZjBkMDlmZmZdDQ1bICAgIDMuNDI3ODE1XSBwY2kgMDAwMDowNjowMC41OiBlbmFi
bGluZyBFeHRlbmRlZCBUYWdzDQ0oWEVOKSBQQ0kgYWRkIGRldmljZSAwMDAwOjA2OjAwLjUNWyAg
ICAzLjQzNTM4Ml0gcGNpIDAwMDA6MDY6MDAuNzogWzEwMjI6MTRjY10gdHlwZSAwMCBjbGFzcyAw
eDA0MDMwMA0NWyAgICAzLjQzNTgxNV0gcGNpIDAwMDA6MDY6MDAuNzogcmVnIDB4MTA6IFttZW0g
MHhmMGQwMDAwMC0weGYwZDA3ZmZmXQ0NWyAgICAzLjQzOTg1Ml0gcGNpIDAwMDA6MDY6MDAuNzog
ZW5hYmxpbmcgRXh0ZW5kZWQgVGFncw0NWyAgICAzLjQ0Mzg3MV0gcGNpIDAwMDA6MDY6MDAuNzog
UE1FIyBzdXBwb3J0ZWQgZnJvbSBEMCBEM2hvdCBEM2NvbGQNDShYRU4pIFBDSSBhZGQgZGV2aWNl
IDAwMDA6MDY6MDAuNw1bICAgIDMuNDUxNDIyXSBwY2kgMDAwMDowMDowNy4xOiBQQ0kgYnJpZGdl
IHRvIFtidXMgMDZdDQ1bICAgIDMuNDUxODEwXSBwY2kgMDAwMDowMDowNy4xOiAgIGJyaWRnZSB3
aW5kb3cgW21lbSAweGYwYjAwMDAwLTB4ZjBkZmZmZmZdDQ1bICAgIDMuNDU1OTAwXSBwY2kgMDAw
MDowNzowMC4wOiBbMTAyMjoxNGFjXSB0eXBlIDAwIGNsYXNzIDB4MTMwMDAwDQ1bICAgIDMuNDU5
ODU2XSBwY2kgMDAwMDowNzowMC4wOiBlbmFibGluZyBFeHRlbmRlZCBUYWdzDQ0oWEVOKSBQQ0kg
YWRkIGRldmljZSAwMDAwOjA3OjAwLjANWyAgICAzLjQ2NzUwOF0gcGNpIDAwMDA6MDc6MDAuMTog
WzEwMjI6NzkwMV0gdHlwZSAwMCBjbGFzcyAweDAxMDYwMQ0NWyAgICAzLjQ2Nzk0NV0gcGNpIDAw
MDA6MDc6MDAuMTogcmVnIDB4MjQ6IFttZW0gMHhmMGUwMDAwMC0weGYwZTAwN2ZmXQ0NWyAgICAz
LjQ3MTgzNF0gcGNpIDAwMDA6MDc6MDAuMTogZW5hYmxpbmcgRXh0ZW5kZWQgVGFncw0NWyAgICAz
LjQ3NTg2NV0gcGNpIDAwMDA6MDc6MDAuMTogUE1FIyBzdXBwb3J0ZWQgZnJvbSBEM2hvdCBEM2Nv
bGQNDShYRU4pIFBDSSBhZGQgZGV2aWNlIDAwMDA6MDc6MDAuMQ1bICAgIDMuNDgzMzM1XSBwY2kg
MDAwMDowMDowNy4yOiBQQ0kgYnJpZGdlIHRvIFtidXMgMDddDQ1bICAgIDMuNDgzODA5XSBwY2kg
MDAwMDowMDowNy4yOiAgIGJyaWRnZSB3aW5kb3cgW21lbSAweGYwZTAwMDAwLTB4ZjBlZmZmZmZd
DQ1bICAgIDMuNDg4ODA0XSBBQ1BJOiBQQ0kgUm9vdCBCcmlkZ2UgW1BDSTFdIChkb21haW4gMDAw
MCBbYnVzIDQwLTdmXSkNDVsgICAgMy40OTE4MDJdIGFjcGkgUE5QMEEwODowMzogX09TQzogT1Mg
c3VwcG9ydHMgW0V4dGVuZGVkQ29uZmlnIEFTUE0gQ2xvY2tQTSBTZWdtZW50cyBNU0kgSFBYLVR5
cGUzXQ0NWyAgICAzLjQ5NTkwM10gYWNwaSBQTlAwQTA4OjAzOiBfT1NDOiBwbGF0Zm9ybSBkb2Vz
IG5vdCBzdXBwb3J0IFtBRVIgTFRSXQ0NWyAgICAzLjQ5OTk4N10gYWNwaSBQTlAwQTA4OjAzOiBf
T1NDOiBPUyBub3cgY29udHJvbHMgW1BDSWVIb3RwbHVnIFNIUENIb3RwbHVnIFBNRSBQQ0llQ2Fw
YWJpbGl0eV0NDVsgICAgMy41MDQwNjddIFBDSSBob3N0IGJyaWRnZSB0byBidXMgMDAwMDo0MA0N
WyAgICAzLjUwNzgwMV0gcGNpX2J1cyAwMDAwOjQwOiByb290IGJ1cyByZXNvdXJjZSBbaW8gIDB4
NDAwMC0weDZmZmYgd2luZG93XQ0NWyAgICAzLjUxMTgwMV0gcGNpX2J1cyAwMDAwOjQwOiByb290
IGJ1cyByZXNvdXJjZSBbbWVtIDB4YzAwMDAwMDAtMHhjMGZmZmZmZiB3aW5kb3ddDQ1bICAgIDMu
NTE1ODAxXSBwY2lfYnVzIDAwMDA6NDA6IHJvb3QgYnVzIHJlc291cmNlIFttZW0gMHg2NDAyMDQw
MDAwMC0weDY5OWIzM2ZmZmZmIHdpbmRvd10NDVsgICAgMy41MTk4MDFdIHBjaV9idXMgMDAwMDo0
MDogcm9vdCBidXMgcmVzb3VyY2UgW2J1cyA0MC03Zl0NDVsgICAgMy41MjM4MjFdIHBjaSAwMDAw
OjQwOjAwLjA6IFsxMDIyOjE0YTRdIHR5cGUgMDAgY2xhc3MgMHgwNjAwMDANDShYRU4pIFBDSSBh
ZGQgZGV2aWNlIDAwMDA6NDA6MDAuMA1bICAgIDMuNTMxNDUyXSBwY2kgMDAwMDo0MDowMC4yOiBb
MTAyMjoxNDllXSB0eXBlIDAwIGNsYXNzIDB4MDgwNjAwDQ0oWEVOKSBQQ0kgYWRkIGRldmljZSAw
MDAwOjQwOjAwLjINWyAgICAzLjUzNTQyOF0gcGNpIDAwMDA6NDA6MDAuMzogWzEwMjI6MTRhNl0g
dHlwZSAwMCBjbGFzcyAweDA4MDcwMA0NWyAgICAzLjUzNTg2Nl0gcGNpIDAwMDA6NDA6MDAuMzog
ZW5hYmxpbmcgRXh0ZW5kZWQgVGFncw0NKFhFTikgUENJIGFkZCBkZXZpY2UgMDAwMDo0MDowMC4z
DVsgICAgMy41NDMzOTldIHBjaSAwMDAwOjQwOjAxLjA6IFsxMDIyOjE0OWZdIHR5cGUgMDAgY2xh
c3MgMHgwNjAwMDANDShYRU4pIFBDSSBhZGQgZGV2aWNlIDAwMDA6NDA6MDEuMA1bICAgIDMuNTQ3
NDQ5XSBwY2kgMDAwMDo0MDowMS4xOiBbMTAyMjoxNGFiXSB0eXBlIDAxIGNsYXNzIDB4MDYwNDAw
DQ1bICAgIDMuNTQ4MDM5XSBwY2kgMDAwMDo0MDowMS4xOiBQTUUjIHN1cHBvcnRlZCBmcm9tIEQw
IEQzaG90IEQzY29sZA0NKFhFTikgUENJIGFkZCBkZXZpY2UgMDAwMDo0MDowMS4xDVsgICAgMy41
NTU2MjJdIHBjaSAwMDAwOjQwOjAyLjA6IFsxMDIyOjE0OWZdIHR5cGUgMDAgY2xhc3MgMHgwNjAw
MDANDShYRU4pIFBDSSBhZGQgZGV2aWNlIDAwMDA6NDA6MDIuMA1bICAgIDMuNTU5MzYzXSBwY2kg
MDAwMDo0MDowMy4wOiBbMTAyMjoxNDlmXSB0eXBlIDAwIGNsYXNzIDB4MDYwMDAwDQ0oWEVOKSBQ
Q0kgYWRkIGRldmljZSAwMDAwOjQwOjAzLjANWyAgICAzLjU2MzQ2OF0gcGNpIDAwMDA6NDA6MDMu
MTogWzEwMjI6MTRhNV0gdHlwZSAwMSBjbGFzcyAweDA2MDQwMA0NWyAgICAzLjU2NDAxMF0gcGNp
IDAwMDA6NDA6MDMuMTogUE1FIyBzdXBwb3J0ZWQgZnJvbSBEMCBEM2hvdCBEM2NvbGQNDShYRU4p
IFBDSSBhZGQgZGV2aWNlIDAwMDA6NDA6MDMuMQ1bICAgIDMuNTcxNTk0XSBwY2kgMDAwMDo0MDow
My4yOiBbMTAyMjoxNGE1XSB0eXBlIDAxIGNsYXNzIDB4MDYwNDAwDQ1bICAgIDMuNTcxODY1XSBw
Y2kgMDAwMDo0MDowMy4yOiBlbmFibGluZyBFeHRlbmRlZCBUYWdzDQ1bICAgIDMuNTc1OTU1XSBw
Y2kgMDAwMDo0MDowMy4yOiBQTUUjIHN1cHBvcnRlZCBmcm9tIEQwIEQzaG90IEQzY29sZA0NKFhF
TikgUENJIGFkZCBkZXZpY2UgMDAwMDo0MDowMy4yDVsgICAgMy41ODM2NTRdIHBjaSAwMDAwOjQw
OjAzLjM6IFsxMDIyOjE0YTVdIHR5cGUgMDEgY2xhc3MgMHgwNjA0MDANDVsgICAgMy41ODM4NjVd
IHBjaSAwMDAwOjQwOjAzLjM6IGVuYWJsaW5nIEV4dGVuZGVkIFRhZ3MNDVsgICAgMy41ODc5NDhd
IHBjaSAwMDAwOjQwOjAzLjM6IFBNRSMgc3VwcG9ydGVkIGZyb20gRDAgRDNob3QgRDNjb2xkDQ0o
WEVOKSBQQ0kgYWRkIGRldmljZSAwMDAwOjQwOjAzLjMNWyAgICAzLjU5NTYyOV0gcGNpIDAwMDA6
NDA6MDQuMDogWzEwMjI6MTQ5Zl0gdHlwZSAwMCBjbGFzcyAweDA2MDAwMA0NKFhFTikgUENJIGFk
ZCBkZXZpY2UgMDAwMDo0MDowNC4wDVsgICAgMy41OTkzNzddIHBjaSAwMDAwOjQwOjA1LjA6IFsx
MDIyOjE0OWZdIHR5cGUgMDAgY2xhc3MgMHgwNjAwMDANDShYRU4pIFBDSSBhZGQgZGV2aWNlIDAw
MDA6NDA6MDUuMA1bICAgIDMuNjAzMjgzXSBwY2kgMDAwMDo0MDowNy4wOiBbMTAyMjoxNDlmXSB0
eXBlIDAwIGNsYXNzIDB4MDYwMDAwDQ0oWEVOKSBQQ0kgYWRkIGRldmljZSAwMDAwOjQwOjA3LjAN
WyAgICAzLjYwNzM4N10gcGNpIDAwMDA6NDA6MDcuMTogWzEwMjI6MTRhN10gdHlwZSAwMSBjbGFz
cyAweDA2MDQwMA0NWyAgICAzLjYwNzg1OF0gcGNpIDAwMDA6NDA6MDcuMTogZW5hYmxpbmcgRXh0
ZW5kZWQgVGFncw0NWyAgICAzLjYxMTg5N10gcGNpIDAwMDA6NDA6MDcuMTogUE1FIyBzdXBwb3J0
ZWQgZnJvbSBEMCBEM2hvdCBEM2NvbGQNDShYRU4pIFBDSSBhZGQgZGV2aWNlIDAwMDA6NDA6MDcu
MQ1bICAgIDMuNjE5NjQxXSBwY2kgMDAwMDo0MTowMC4wOiBbMTAwMjo2NjExXSB0eXBlIDAwIGNs
YXNzIDB4MDMwMDAwDQ1bICAgIDMuNjE5ODIyXSBwY2kgMDAwMDo0MTowMC4wOiByZWcgMHgxMDog
W21lbSAweDY5OTQwMDAwMDAwLTB4Njk5N2ZmZmZmZmYgNjRiaXQgcHJlZl0NDVsgICAgMy42MjM4
MTRdIHBjaSAwMDAwOjQxOjAwLjA6IHJlZyAweDE4OiBbbWVtIDB4YzBjMDAwMDAtMHhjMGMzZmZm
ZiA2NGJpdF0NDVsgICAgMy42Mjc4MDddIHBjaSAwMDAwOjQxOjAwLjA6IHJlZyAweDIwOiBbaW8g
IDB4NjAwMC0weDYwZmZdDQ1bICAgIDMuNjMxODE1XSBwY2kgMDAwMDo0MTowMC4wOiByZWcgMHgz
MDogW21lbSAweGMwYzQwMDAwLTB4YzBjNWZmZmYgcHJlZl0NDVsgICAgMy42MzU5MDldIHBjaSAw
MDAwOjQxOjAwLjA6IHN1cHBvcnRzIEQxIEQyDQ1bICAgIDMuNjM5ODAxXSBwY2kgMDAwMDo0MTow
MC4wOiBQTUUjIHN1cHBvcnRlZCBmcm9tIEQxIEQyIEQzaG90DQ0oWEVOKSBQQ0kgYWRkIGRldmlj
ZSAwMDAwOjQxOjAwLjANWyAgICAzLjY0NzQ2Nl0gcGNpIDAwMDA6NDE6MDAuMTogWzEwMDI6YWFi
MF0gdHlwZSAwMCBjbGFzcyAweDA0MDMwMA0NWyAgICAzLjY0NzgyMl0gcGNpIDAwMDA6NDE6MDAu
MTogcmVnIDB4MTA6IFttZW0gMHhjMGM2MDAwMC0weGMwYzYzZmZmIDY0Yml0XQ0NWyAgICAzLjY1
MTkxNF0gcGNpIDAwMDA6NDE6MDAuMTogc3VwcG9ydHMgRDEgRDINDShYRU4pIFBDSSBhZGQgZGV2
aWNlIDAwMDA6NDE6MDAuMQ1bICAgIDMuNjU5NDgyXSBwY2kgMDAwMDo0MDowMS4xOiBQQ0kgYnJp
ZGdlIHRvIFtidXMgNDFdDQ1bICAgIDMuNjU5ODA2XSBwY2kgMDAwMDo0MDowMS4xOiAgIGJyaWRn
ZSB3aW5kb3cgW2lvICAweDYwMDAtMHg2ZmZmXQ0NWyAgICAzLjY2MzgwM10gcGNpIDAwMDA6NDA6
MDEuMTogICBicmlkZ2Ugd2luZG93IFttZW0gMHhjMGMwMDAwMC0weGMwY2ZmZmZmXQ0NWyAgICAz
LjY2NzgwN10gcGNpIDAwMDA6NDA6MDEuMTogICBicmlkZ2Ugd2luZG93IFttZW0gMHg2OTk0MDAw
MDAwMC0weDY5OTdmZmZmZmZmIDY0Yml0IHByZWZdDQ1bICAgIDMuNjcxODk1XSBwY2kgMDAwMDo0
MjowMC4wOiBbMWQ2YTowNGMwXSB0eXBlIDAwIGNsYXNzIDB4MDIwMDAwDQ1bICAgIDMuNjc1ODIy
XSBwY2kgMDAwMDo0MjowMC4wOiByZWcgMHgxMDogW21lbSAweGMwNDAwMDAwLTB4YzA0N2ZmZmYg
NjRiaXRdDQ1bICAgIDMuNjc5ODE0XSBwY2kgMDAwMDo0MjowMC4wOiByZWcgMHgxODogW21lbSAw
eGMwNGEwMDAwLTB4YzA0YTBmZmYgNjRiaXRdDQ1bICAgIDMuNjgzODE0XSBwY2kgMDAwMDo0Mjow
MC4wOiByZWcgMHgyMDogW21lbSAweGMwMDAwMDAwLTB4YzAzZmZmZmYgNjRiaXRdDQ1bICAgIDMu
Njg3ODA4XSBwY2kgMDAwMDo0MjowMC4wOiByZWcgMHgzMDogW21lbSAweGMwNDgwMDAwLTB4YzA0
OWZmZmYgcHJlZl0NDVsgICAgMy42OTE5NTFdIHBjaSAwMDAwOjQyOjAwLjA6IHN1cHBvcnRzIEQx
IEQyDQ1bICAgIDMuNjk1ODAwXSBwY2kgMDAwMDo0MjowMC4wOiBQTUUjIHN1cHBvcnRlZCBmcm9t
IEQwIEQxIEQzaG90IEQzY29sZA0NKFhFTikgUENJIGFkZCBkZXZpY2UgMDAwMDo0MjowMC4wDVsg
ICAgMy43MDM2NDJdIHBjaSAwMDAwOjQwOjAzLjE6IFBDSSBicmlkZ2UgdG8gW2J1cyA0Ml0NDVsg
ICAgMy43MDM4MDldIHBjaSAwMDAwOjQwOjAzLjE6ICAgYnJpZGdlIHdpbmRvdyBbbWVtIDB4YzAw
MDAwMDAtMHhjMDRmZmZmZl0NDVsgICAgMy43MDc5MDVdIHBjaSAwMDAwOjQzOjAwLjA6IFsxNDRk
OmE4MDhdIHR5cGUgMDAgY2xhc3MgMHgwMTA4MDINDVsgICAgMy43MTE5MjNdIHBjaSAwMDAwOjQz
OjAwLjA6IHJlZyAweDEwOiBbbWVtIDB4YzBiMDAwMDAtMHhjMGIwM2ZmZiA2NGJpdF0NDShYRU4p
IFBDSSBhZGQgZGV2aWNlIDAwMDA6NDM6MDAuMA1bICAgIDMuNzE5ODYyXSBwY2kgMDAwMDo0MDow
My4yOiBQQ0kgYnJpZGdlIHRvIFtidXMgNDNdDQ1bICAgIDMuNzIzODEwXSBwY2kgMDAwMDo0MDow
My4yOiAgIGJyaWRnZSB3aW5kb3cgW21lbSAweGMwYjAwMDAwLTB4YzBiZmZmZmZdDQ1bICAgIDMu
NzI3OTA2XSBwY2kgMDAwMDo0NDowMC4wOiBbMTAyMjo0M2Y0XSB0eXBlIDAxIGNsYXNzIDB4MDYw
NDAwDQ1bICAgIDMuNzMxODc1XSBwY2kgMDAwMDo0NDowMC4wOiBlbmFibGluZyBFeHRlbmRlZCBU
YWdzDQ1bICAgIDMuNzM1OTE4XSBwY2kgMDAwMDo0NDowMC4wOiBQTUUjIHN1cHBvcnRlZCBmcm9t
IEQwIEQzaG90IEQzY29sZA0NKFhFTikgUENJIGFkZCBkZXZpY2UgMDAwMDo0NDowMC4wDVsgICAg
My43NDM2NzJdIHBjaSAwMDAwOjQwOjAzLjM6IFBDSSBicmlkZ2UgdG8gW2J1cyA0NC00YV0NDVsg
ICAgMy43NDM4MDddIHBjaSAwMDAwOjQwOjAzLjM6ICAgYnJpZGdlIHdpbmRvdyBbaW8gIDB4NTAw
MC0weDVmZmZdDQ1bICAgIDMuNzQ3ODAzXSBwY2kgMDAwMDo0MDowMy4zOiAgIGJyaWRnZSB3aW5k
b3cgW21lbSAweGMwNjAwMDAwLTB4YzBhZmZmZmZdDQ1bICAgIDMuNzUxODA2XSBwY2kgMDAwMDo0
MDowMy4zOiAgIGJyaWRnZSB3aW5kb3cgW21lbSAweDY5OTgwMDAwMDAwLTB4Njk5ODAwZmZmZmYg
NjRiaXQgcHJlZl0NDVsgICAgMy43NTU4OTNdIHBjaSAwMDAwOjQ1OjAwLjA6IFsxMDIyOjQzZjVd
IHR5cGUgMDEgY2xhc3MgMHgwNjA0MDANDVsgICAgMy43NTk4NzZdIHBjaSAwMDAwOjQ1OjAwLjA6
IGVuYWJsaW5nIEV4dGVuZGVkIFRhZ3MNDVsgICAgMy43NjM5MThdIHBjaSAwMDAwOjQ1OjAwLjA6
IFBNRSMgc3VwcG9ydGVkIGZyb20gRDAgRDNob3QgRDNjb2xkDQ0oWEVOKSBQQ0kgYWRkIGRldmlj
ZSAwMDAwOjQ1OjAwLjANWyAgICAzLjc3MTUyNV0gcGNpIDAwMDA6NDU6MDIuMDogWzEwMjI6NDNm
NV0gdHlwZSAwMSBjbGFzcyAweDA2MDQwMA0NWyAgICAzLjc3MTg3NV0gcGNpIDAwMDA6NDU6MDIu
MDogZW5hYmxpbmcgRXh0ZW5kZWQgVGFncw0NWyAgICAzLjc3NTkxNV0gcGNpIDAwMDA6NDU6MDIu
MDogUE1FIyBzdXBwb3J0ZWQgZnJvbSBEMCBEM2hvdCBEM2NvbGQNDShYRU4pIFBDSSBhZGQgZGV2
aWNlIDAwMDA6NDU6MDIuMA1bICAgIDMuNzgzNDA4XSBwY2kgMDAwMDo0NTowOC4wOiBbMTAyMjo0
M2Y1XSB0eXBlIDAxIGNsYXNzIDB4MDYwNDAwDQ1bICAgIDMuNzgzODc0XSBwY2kgMDAwMDo0NTow
OC4wOiBlbmFibGluZyBFeHRlbmRlZCBUYWdzDQ1bICAgIDMuNzg3OTE0XSBwY2kgMDAwMDo0NTow
OC4wOiBQTUUjIHN1cHBvcnRlZCBmcm9tIEQwIEQzaG90IEQzY29sZA0NKFhFTikgUENJIGFkZCBk
ZXZpY2UgMDAwMDo0NTowOC4wDVsgICAgMy43OTU0NDRdIHBjaSAwMDAwOjQ1OjBjLjA6IFsxMDIy
OjQzZjVdIHR5cGUgMDEgY2xhc3MgMHgwNjA0MDANDVsgICAgMy43OTU4NzRdIHBjaSAwMDAwOjQ1
OjBjLjA6IGVuYWJsaW5nIEV4dGVuZGVkIFRhZ3MNDVsgICAgMy43OTk4NzBdIHBjaSAwMDAwOjQ1
OjBjLjA6IFBNRSMgc3VwcG9ydGVkIGZyb20gRDAgRDNob3QgRDNjb2xkDQ0oWEVOKSBQQ0kgYWRk
IGRldmljZSAwMDAwOjQ1OjBjLjANWyAgICAzLjgwNzI5OV0gcGNpIDAwMDA6NDU6MGQuMDogWzEw
MjI6NDNmNV0gdHlwZSAwMSBjbGFzcyAweDA2MDQwMA0NWyAgICAzLjgwNzg3NF0gcGNpIDAwMDA6
NDU6MGQuMDogZW5hYmxpbmcgRXh0ZW5kZWQgVGFncw0NWyAgICAzLjgxMTg3MF0gcGNpIDAwMDA6
NDU6MGQuMDogUE1FIyBzdXBwb3J0ZWQgZnJvbSBEMCBEM2hvdCBEM2NvbGQNDShYRU4pIFBDSSBh
ZGQgZGV2aWNlIDAwMDA6NDU6MGQuMA1bICAgIDMuODE5MzcxXSBwY2kgMDAwMDo0NDowMC4wOiBQ
Q0kgYnJpZGdlIHRvIFtidXMgNDUtNGFdDQ1bICAgIDMuODE5ODA3XSBwY2kgMDAwMDo0NDowMC4w
OiAgIGJyaWRnZSB3aW5kb3cgW2lvICAweDUwMDAtMHg1ZmZmXQ0NWyAgICAzLjgyMzgwNF0gcGNp
IDAwMDA6NDQ6MDAuMDogICBicmlkZ2Ugd2luZG93IFttZW0gMHhjMDYwMDAwMC0weGMwYWZmZmZm
XQ0NWyAgICAzLjgyNzgwN10gcGNpIDAwMDA6NDQ6MDAuMDogICBicmlkZ2Ugd2luZG93IFttZW0g
MHg2OTk4MDAwMDAwMC0weDY5OTgwMGZmZmZmIDY0Yml0IHByZWZdDQ1bICAgIDMuODMxOTIyXSBw
Y2kgMDAwMDo0NjowMC4wOiBbMTRjMzowNjE2XSB0eXBlIDAwIGNsYXNzIDB4MDI4MDAwDQ1bICAg
IDMuODM1ODg3XSBwY2kgMDAwMDo0NjowMC4wOiByZWcgMHgxMDogW21lbSAweDY5OTgwMDAwMDAw
LTB4Njk5ODAwZmZmZmYgNjRiaXQgcHJlZl0NDVsgICAgMy44Mzk4NzBdIHBjaSAwMDAwOjQ2OjAw
LjA6IHJlZyAweDE4OiBbbWVtIDB4YzBhMDAwMDAtMHhjMGEwN2ZmZiA2NGJpdF0NDVsgICAgMy44
NDM5MDNdIHBjaSAwMDAwOjQ2OjAwLjA6IGVuYWJsaW5nIEV4dGVuZGVkIFRhZ3MNDVsgICAgMy44
NDgwMDRdIHBjaSAwMDAwOjQ2OjAwLjA6IFBNRSMgc3VwcG9ydGVkIGZyb20gRDAgRDNob3QgRDNj
b2xkDQ0oWEVOKSBQQ0kgYWRkIGRldmljZSAwMDAwOjQ2OjAwLjANWyAgICAzLjg1NTc0Ml0gcGNp
IDAwMDA6NDU6MDAuMDogUENJIGJyaWRnZSB0byBbYnVzIDQ2XQ0NWyAgICAzLjg1NTgxMF0gcGNp
IDAwMDA6NDU6MDAuMDogICBicmlkZ2Ugd2luZG93IFttZW0gMHhjMGEwMDAwMC0weGMwYWZmZmZm
XQ0NWyAgICAzLjg1OTgwN10gcGNpIDAwMDA6NDU6MDAuMDogICBicmlkZ2Ugd2luZG93IFttZW0g
MHg2OTk4MDAwMDAwMC0weDY5OTgwMGZmZmZmIDY0Yml0IHByZWZdDQ1bICAgIDMuODYzODczXSBw
Y2kgMDAwMDo0NzowMC4wOiBbMTBlYzo4MTI1XSB0eXBlIDAwIGNsYXNzIDB4MDIwMDAwDQ1bICAg
IDMuODY3ODI2XSBwY2kgMDAwMDo0NzowMC4wOiByZWcgMHgxMDogW2lvICAweDUwMDAtMHg1MGZm
XQ0NWyAgICAzLjg3MTgzNF0gcGNpIDAwMDA6NDc6MDAuMDogcmVnIDB4MTg6IFttZW0gMHhjMDkw
MDAwMC0weGMwOTBmZmZmIDY0Yml0XQ0NWyAgICAzLjg3NTgyMl0gcGNpIDAwMDA6NDc6MDAuMDog
cmVnIDB4MjA6IFttZW0gMHhjMDkxMDAwMC0weGMwOTEzZmZmIDY0Yml0XQ0NWyAgICAzLjg4MDAw
MF0gcGNpIDAwMDA6NDc6MDAuMDogc3VwcG9ydHMgRDEgRDINDVsgICAgMy44ODM4MDFdIHBjaSAw
MDAwOjQ3OjAwLjA6IFBNRSMgc3VwcG9ydGVkIGZyb20gRDAgRDEgRDIgRDNob3QgRDNjb2xkDQ0o
WEVOKSBQQ0kgYWRkIGRldmljZSAwMDAwOjQ3OjAwLjANWyAgICAzLjg5MTcxN10gcGNpIDAwMDA6
NDU6MDIuMDogUENJIGJyaWRnZSB0byBbYnVzIDQ3XQ0NWyAgICAzLjg5MTgwN10gcGNpIDAwMDA6
NDU6MDIuMDogICBicmlkZ2Ugd2luZG93IFtpbyAgMHg1MDAwLTB4NWZmZl0NDVsgICAgMy44OTU4
MDRdIHBjaSAwMDAwOjQ1OjAyLjA6ICAgYnJpZGdlIHdpbmRvdyBbbWVtIDB4YzA5MDAwMDAtMHhj
MDlmZmZmZl0NDVsgICAgMy44OTk5MjFdIHBjaSAwMDAwOjQ4OjAwLjA6IFsxNDRkOmE4MGNdIHR5
cGUgMDAgY2xhc3MgMHgwMTA4MDINDVsgICAgMy45MDM5MDZdIHBjaSAwMDAwOjQ4OjAwLjA6IHJl
ZyAweDEwOiBbbWVtIDB4YzA4MDAwMDAtMHhjMDgwM2ZmZiA2NGJpdF0NDVsgICAgMy45MDgyNjJd
IHBjaSAwMDAwOjQ4OjAwLjA6IGVuYWJsaW5nIEV4dGVuZGVkIFRhZ3MNDShYRU4pIFBDSSBhZGQg
ZGV2aWNlIDAwMDA6NDg6MDAuMA1bICAgIDMuOTE1ODU3XSBwY2kgMDAwMDo0NTowOC4wOiBQQ0kg
YnJpZGdlIHRvIFtidXMgNDhdDQ1bICAgIDMuOTE5ODEyXSBwY2kgMDAwMDo0NTowOC4wOiAgIGJy
aWRnZSB3aW5kb3cgW21lbSAweGMwODAwMDAwLTB4YzA4ZmZmZmZdDQ1bICAgIDMuOTIzODkyXSBw
Y2kgMDAwMDo0OTowMC4wOiBbMTAyMjo0M2Y3XSB0eXBlIDAwIGNsYXNzIDB4MGMwMzMwDQ1bICAg
IDMuOTI3OTAxXSBwY2kgMDAwMDo0OTowMC4wOiByZWcgMHgxMDogW21lbSAweGMwNzAwMDAwLTB4
YzA3MDdmZmYgNjRiaXRdDQ1bICAgIDMuOTMyMTg5XSBwY2kgMDAwMDo0OTowMC4wOiBlbmFibGlu
ZyBFeHRlbmRlZCBUYWdzDQ1bICAgIDMuOTM1ODgyXSBwY2kgMDAwMDo0OTowMC4wOiBQTUUjIHN1
cHBvcnRlZCBmcm9tIEQwIEQzaG90IEQzY29sZA0NKFhFTikgUENJIGFkZCBkZXZpY2UgMDAwMDo0
OTowMC4wDVsgICAgMy45NDM1NDhdIHBjaSAwMDAwOjQ1OjBjLjA6IFBDSSBicmlkZ2UgdG8gW2J1
cyA0OV0NDVsgICAgMy45NDM4MDddIHBjaSAwMDAwOjQ1OjBjLjA6ICAgYnJpZGdlIHdpbmRvdyBb
bWVtIDB4YzA3MDAwMDAtMHhjMDdmZmZmZl0NDVsgICAgMy45NDc4NzddIHBjaSAwMDAwOjRhOjAw
LjA6IFsxMDIyOjQzZjZdIHR5cGUgMDAgY2xhc3MgMHgwMTA2MDENDVsgICAgMy45NTE5NTNdIHBj
aSAwMDAwOjRhOjAwLjA6IHJlZyAweDI0OiBbbWVtIDB4YzA2ODAwMDAtMHhjMDY4MDNmZl0NDVsg
ICAgMy45NTU4MjhdIHBjaSAwMDAwOjRhOjAwLjA6IHJlZyAweDMwOiBbbWVtIDB4YzA2MDAwMDAt
MHhjMDY3ZmZmZiBwcmVmXQ0NWyAgICAzLjk1OTgxMF0gcGNpIDAwMDA6NGE6MDAuMDogZW5hYmxp
bmcgRXh0ZW5kZWQgVGFncw0NWyAgICAzLjk2Mzg2NF0gcGNpIDAwMDA6NGE6MDAuMDogUE1FIyBz
dXBwb3J0ZWQgZnJvbSBEMCBEM2hvdCBEM2NvbGQNDShYRU4pIFBDSSBhZGQgZGV2aWNlIDAwMDA6
NGE6MDAuMA1bICAgIDMuOTcxNDA3XSBwY2kgMDAwMDo0NTowZC4wOiBQQ0kgYnJpZGdlIHRvIFti
dXMgNGFdDQ1bICAgIDMuOTcxODA3XSBwY2kgMDAwMDo0NTowZC4wOiAgIGJyaWRnZSB3aW5kb3cg
W21lbSAweGMwNjAwMDAwLTB4YzA2ZmZmZmZdDQ1bICAgIDMuOTc1OTM1XSBwY2kgMDAwMDo0Yjow
MC4wOiBbMTAyMjoxNGFjXSB0eXBlIDAwIGNsYXNzIDB4MTMwMDAwDQ1bICAgIDMuOTc5ODU0XSBw
Y2kgMDAwMDo0YjowMC4wOiBlbmFibGluZyBFeHRlbmRlZCBUYWdzDQ0oWEVOKSBQQ0kgYWRkIGRl
dmljZSAwMDAwOjRiOjAwLjANWyAgICAzLjk4NzM5M10gcGNpIDAwMDA6NDA6MDcuMTogUENJIGJy
aWRnZSB0byBbYnVzIDRiXQ0NWyAgICAzLjk4ODEwOF0gQUNQSTogUENJOiBJbnRlcnJ1cHQgbGlu
ayBMTktBIGNvbmZpZ3VyZWQgZm9yIElSUSAwDQ1bICAgIDMuOTkxODQxXSBBQ1BJOiBQQ0k6IElu
dGVycnVwdCBsaW5rIExOS0IgY29uZmlndXJlZCBmb3IgSVJRIDANDVsgICAgMy45OTU4MzRdIEFD
UEk6IFBDSTogSW50ZXJydXB0IGxpbmsgTE5LQyBjb25maWd1cmVkIGZvciBJUlEgMA0NWyAgICAz
Ljk5OTg0M10gQUNQSTogUENJOiBJbnRlcnJ1cHQgbGluayBMTktEIGNvbmZpZ3VyZWQgZm9yIElS
USAwDQ1bICAgIDQuMDAzODQyXSBBQ1BJOiBQQ0k6IEludGVycnVwdCBsaW5rIExOS0UgY29uZmln
dXJlZCBmb3IgSVJRIDANDVsgICAgNC4wMDc4MzJdIEFDUEk6IFBDSTogSW50ZXJydXB0IGxpbmsg
TE5LRiBjb25maWd1cmVkIGZvciBJUlEgMA0NWyAgICA0LjAxMTgzM10gQUNQSTogUENJOiBJbnRl
cnJ1cHQgbGluayBMTktHIGNvbmZpZ3VyZWQgZm9yIElSUSAwDQ1bICAgIDQuMDE1ODMzXSBBQ1BJ
OiBQQ0k6IEludGVycnVwdCBsaW5rIExOS0ggY29uZmlndXJlZCBmb3IgSVJRIDANDVsgICAgNC4w
MjEyOTldIHhlbjpiYWxsb29uOiBJbml0aWFsaXNpbmcgYmFsbG9vbiBkcml2ZXINDVsgICAgNC4w
MjM4NTBdIGlvbW11OiBEZWZhdWx0IGRvbWFpbiB0eXBlOiBUcmFuc2xhdGVkIA0NWyAgICA0LjAy
NzgwMl0gaW9tbXU6IERNQSBkb21haW4gVExCIGludmFsaWRhdGlvbiBwb2xpY3k6IGxhenkgbW9k
ZSANDVsgICAgNC4wMzQ2MDldIGkyY19kZXNpZ253YXJlIEFNREkwMDEwOjAwOiBVbmtub3duIFN5
bm9wc3lzIGNvbXBvbmVudCB0eXBlOiAweGZmZmZmZmZmDQ1bICAgIDQuMDM1ODI5XSBwcHNfY29y
ZTogTGludXhQUFMgQVBJIHZlci4gMSByZWdpc3RlcmVkDQ1bICAgIDQuMDM5ODA1XSBwcHNfY29y
ZTogU29mdHdhcmUgdmVyLiA1LjMuNiAtIENvcHlyaWdodCAyMDA1LTIwMDcgUm9kb2xmbyBHaW9t
ZXR0aSA8Z2lvbWV0dGlAbGludXguaXQ+DQ1bICAgIDQuMDQzODA1XSBQVFAgY2xvY2sgc3VwcG9y
dCByZWdpc3RlcmVkDQ1bICAgIDQuMDQ3ODA2XSBFREFDIE1DOiBWZXI6IDMuMC4wDQ1bICAgIDQu
MDUxODIxXSBSZWdpc3RlcmVkIGVmaXZhcnMgb3BlcmF0aW9ucw0NWyAgICA0LjA1NTg5Nl0gTmV0
TGFiZWw6IEluaXRpYWxpemluZw0NWyAgICA0LjA1OTgwMV0gTmV0TGFiZWw6ICBkb21haW4gaGFz
aCBzaXplID0gMTI4DQ1bICAgIDQuMDYzODAxXSBOZXRMYWJlbDogIHByb3RvY29scyA9IFVOTEFC
RUxFRCBDSVBTT3Y0IENBTElQU08NDVsgICAgNC4wNjc4MDZdIE5ldExhYmVsOiAgdW5sYWJlbGVk
IHRyYWZmaWMgYWxsb3dlZCBieSBkZWZhdWx0DQ1bICAgIDQuMDcxODAyXSBQQ0k6IFVzaW5nIEFD
UEkgZm9yIElSUSByb3V0aW5nDQ1bICAgIDQuMDg1MTU5XSBwY2kgMDAwMDowMTowMC4wOiB2Z2Fh
cmI6IHNldHRpbmcgYXMgYm9vdCBWR0EgZGV2aWNlDQ1bICAgIDQuMDg3Nzk4XSBwY2kgMDAwMDow
MTowMC4wOiB2Z2FhcmI6IGJyaWRnZSBjb250cm9sIHBvc3NpYmxlDQ1bICAgIDQuMDg3Nzk4XSBw
Y2kgMDAwMDowMTowMC4wOiB2Z2FhcmI6IFZHQSBkZXZpY2UgYWRkZWQ6IGRlY29kZXM9aW8rbWVt
LG93bnM9bm9uZSxsb2Nrcz1ub25lDQ1bICAgIDQuMDg3ODA1XSBwY2kgMDAwMDo0MTowMC4wOiB2
Z2FhcmI6IGJyaWRnZSBjb250cm9sIHBvc3NpYmxlDQ1bICAgIDQuMDkxNzk4XSBwY2kgMDAwMDo0
MTowMC4wOiB2Z2FhcmI6IFZHQSBkZXZpY2UgYWRkZWQ6IGRlY29kZXM9aW8rbWVtLG93bnM9bm9u
ZSxsb2Nrcz1ub25lDQ1bICAgIDQuMDkxODAxXSB2Z2FhcmI6IGxvYWRlZA0NWyAgICA0LjA5NTE5
M10gY2xvY2tzb3VyY2U6IFN3aXRjaGVkIHRvIGNsb2Nrc291cmNlIHRzYy1lYXJseQ0NWyAgICA0
LjA5OTA3NV0gVkZTOiBEaXNrIHF1b3RhcyBkcXVvdF82LjYuMA0NWyAgICA0LjEwMzYyNl0gVkZT
OiBEcXVvdC1jYWNoZSBoYXNoIHRhYmxlIGVudHJpZXM6IDUxMiAob3JkZXIgMCwgNDA5NiBieXRl
cykNDVsgICAgNC4xMTE2NDVdIEFwcEFybW9yOiBBcHBBcm1vciBGaWxlc3lzdGVtIEVuYWJsZWQN
DVsgICAgNC4xMTcxNjVdIHBucDogUG5QIEFDUEkgaW5pdA0NWyAgICA0LjEyMTE5OF0gdW5jaGVj
a2VkIE1TUiBhY2Nlc3MgZXJyb3I6IFJETVNSIGZyb20gMHhjMDAxMDA1OCBhdCBySVA6IDB4ZmZm
ZmZmZmY4MDI3NzYxMyAobmF0aXZlX3JlYWRfbXNyKzB4My8weDMwKQ0NWyAgICA0LjEzMzM1MF0g
Q2FsbCBUcmFjZToNDVsgICAgNC4xMzYxODRdICA8VEFTSz4NDVsgICAgNC4xMzg3MjldICA/IGV4
X2hhbmRsZXJfbXNyLmNvbGQrMHg1Yi8weDZhDQ1bICAgIDQuMTQzNjY2XSAgPyBmaXh1cF9leGNl
cHRpb24rMHg4MS8weDMwMA0NWyAgICA0LjE0ODIxM10gID8gZXhjX2dlbmVyYWxfcHJvdGVjdGlv
bisweDEzYy8weDRhMA0NWyAgICA0LjE1MzU2M10gID8gYXNtX2V4Y19nZW5lcmFsX3Byb3RlY3Rp
b24rMHgyMi8weDMwDQ1bICAgIDQuMTU5MDYwXSAgPyBuYXRpdmVfcmVhZF9tc3IrMHgzLzB4MzAN
DVsgICAgNC4xNjMzOTVdICBhbWRfZ2V0X21tY29uZmlnX3JhbmdlKzB4MmIvMHg4MA0NWyAgICA0
LjE2ODI4OV0gIHF1aXJrX2FtZF9tbWNvbmZpZ19hcmVhKzB4MzYvMHhiMA0NWyAgICA0LjE3MzI5
OV0gIHBucF9maXh1cF9kZXZpY2UrMHgzOS8weDUwDQ1bICAgIDQuMTc3NjU4XSAgX19wbnBfYWRk
X2RldmljZSsweDFlLzB4MWIwDQ1bICAgIDQuMTgyMzI4XSAgcG5wX2FkZF9kZXZpY2UrMHg1MC8w
eDEyMA0NWyAgICA0LjE4NjcyOF0gIHBucGFjcGlfYWRkX2RldmljZV9oYW5kbGVyKzB4MWZhLzB4
MjI4DQ1bICAgIDQuMTkyMjY4XSAgYWNwaV9uc19nZXRfZGV2aWNlX2NhbGxiYWNrKzB4MTFlLzB4
MWQwDQ1bICAgIDQuMTk3ODYzXSAgPyBfcmF3X3NwaW5fdW5sb2NrX2lycXJlc3RvcmUrMHhhLzB4
NDANDVsgICAgNC4yMDMzNjRdICA/IGRvd25fdGltZW91dCsweDNhLzB4NjANDVsgICAgNC4yMDc1
MjRdICBhY3BpX25zX3dhbGtfbmFtZXNwYWNlKzB4MWQwLzB4MjYwDQ1bICAgIDQuMjEyNjgxXSAg
PyBfcmF3X3NwaW5fdW5sb2NrX2lycXJlc3RvcmUrMHhhLzB4NDANDVsgICAgNC4yMTgyMjhdICA/
IGFjcGlfZ2V0X2RldmljZXMrMHhjMC8weGMwDQ1bICAgIDQuMjIyNzM3XSAgYWNwaV9nZXRfZGV2
aWNlcysweGE0LzB4YzANDVsgICAgNC4yMjcxNTVdICA/IHBucGFjcGlfc2V0dXArMHgzMy8weDMz
DQ1bICAgIDQuMjMxMzk2XSAgPyBpc3BucGlkYWNwaSsweDkxLzB4OTENDVsgICAgNC4yMzU0MzZd
ICBwbnBhY3BpX2luaXQrMHg0Yi8weDZlDQ1bICAgIDQuMjM5NDIxXSAgZG9fb25lX2luaXRjYWxs
KzB4NTkvMHgyMjANDVsgICAgNC4yNDM4MTJdICBrZXJuZWxfaW5pdF9mcmVlYWJsZSsweDIyMS8w
eDI4Ng0NWyAgICA0LjI0ODg5Nl0gID8gcmVzdF9pbml0KzB4ZDAvMHhkMA0NWyAgICA0LjI1MzAx
M10gIGtlcm5lbF9pbml0KzB4MTYvMHgxMzANDVsgICAgNC4yNTcyMjRdICByZXRfZnJvbV9mb3Jr
KzB4MjIvMHgzMA0NWyAgICA0LjI2MTU0N10gIDwvVEFTSz4NDVsgICAgNC4yNjQxMDBdIHN5c3Rl
bSAwMDowMDogW21lbSAweGUwMDAwMDAwLTB4ZWZmZmZmZmZdIGhhcyBiZWVuIHJlc2VydmVkDQ1b
ICAgIDQuMjcyNTUzXSBzeXN0ZW0gMDA6MDI6IFtpbyAgMHgwMjkwLTB4MDI5Zl0gaGFzIGJlZW4g
cmVzZXJ2ZWQNDVsgICAgNC4yNzkzNTJdIHN5c3RlbSAwMDowMjogW2lvICAweDAyYTAtMHgwMmFm
XSBoYXMgYmVlbiByZXNlcnZlZA0NWyAgICA0LjI4NjM3NV0gc3lzdGVtIDAwOjAyOiBbaW8gIDB4
MDI5MC0weDAyOWZdIGhhcyBiZWVuIHJlc2VydmVkDQ1bICAgIDQuMjkzMzg1XSBzeXN0ZW0gMDA6
MDI6IFtpbyAgMHgwMmEwLTB4MDJhZl0gaGFzIGJlZW4gcmVzZXJ2ZWQNDVsgICAgNC4zMDA1ODBd
IHN5c3RlbSAwMDowNDogW2lvICAweDA0ZDAtMHgwNGQxXSBoYXMgYmVlbiByZXNlcnZlZA0NWyAg
ICA0LjMwNzY0OV0gc3lzdGVtIDAwOjA0OiBbaW8gIDB4MDQwYl0gaGFzIGJlZW4gcmVzZXJ2ZWQN
DVsgICAgNC4zMTM5OTRdIHN5c3RlbSAwMDowNDogW2lvICAweDA0ZDZdIGhhcyBiZWVuIHJlc2Vy
dmVkDQ1bICAgIDQuMzIwMzUwXSBzeXN0ZW0gMDA6MDQ6IFtpbyAgMHgwYzAwLTB4MGMwMV0gaGFz
IGJlZW4gcmVzZXJ2ZWQNDVsgICAgNC4zMjcwMzRdIHN5c3RlbSAwMDowNDogW2lvICAweDBjMTRd
IGhhcyBiZWVuIHJlc2VydmVkDQ1bICAgIDQuMzMzMDQyXSBzeXN0ZW0gMDA6MDQ6IFtpbyAgMHgw
YzUwLTB4MGM1MV0gaGFzIGJlZW4gcmVzZXJ2ZWQNDVsgICAgNC4zMzk2NzRdIHN5c3RlbSAwMDow
NDogW2lvICAweDBjNTJdIGhhcyBiZWVuIHJlc2VydmVkDQ1bICAgIDQuMzQ1NzYzXSBzeXN0ZW0g
MDA6MDQ6IFtpbyAgMHgwYzZjXSBoYXMgYmVlbiByZXNlcnZlZA0NWyAgICA0LjM1MTc4Ml0gc3lz
dGVtIDAwOjA0OiBbaW8gIDB4MGM2Zl0gaGFzIGJlZW4gcmVzZXJ2ZWQNDVsgICAgNC4zNTc3NzBd
IHN5c3RlbSAwMDowNDogW2lvICAweDBjZDgtMHgwY2RmXSBoYXMgYmVlbiByZXNlcnZlZA0NWyAg
ICA0LjM2NDQ2Nl0gc3lzdGVtIDAwOjA0OiBbaW8gIDB4MDgwMC0weDA4OWZdIGhhcyBiZWVuIHJl
c2VydmVkDQ1bICAgIDQuMzcxMjE5XSBzeXN0ZW0gMDA6MDQ6IFtpbyAgMHgwYjAwLTB4MGIwZl0g
aGFzIGJlZW4gcmVzZXJ2ZWQNDVsgICAgNC4zNzc5MTNdIHN5c3RlbSAwMDowNDogW2lvICAweDBi
MjAtMHgwYjNmXSBoYXMgYmVlbiByZXNlcnZlZA0NWyAgICA0LjM4NDY4NF0gc3lzdGVtIDAwOjA0
OiBbaW8gIDB4MDkwMC0weDA5MGZdIGhhcyBiZWVuIHJlc2VydmVkDQ1bICAgIDQuMzkxNjU1XSBz
eXN0ZW0gMDA6MDQ6IFtpbyAgMHgwOTEwLTB4MDkxZl0gaGFzIGJlZW4gcmVzZXJ2ZWQNDVsgICAg
NC4zOTg3MjNdIHN5c3RlbSAwMDowNDogW21lbSAweGZlYzAwMDAwLTB4ZmVjMDBmZmZdIGNvdWxk
IG5vdCBiZSByZXNlcnZlZA0NWyAgICA0LjQwNzA3OF0gc3lzdGVtIDAwOjA0OiBbbWVtIDB4ZmVk
YzAwMDAtMHhmZWRjMGZmZl0gaGFzIGJlZW4gcmVzZXJ2ZWQNDVsgICAgNC40MTQ5NTFdIHN5c3Rl
bSAwMDowNDogW21lbSAweGZlZTAwMDAwLTB4ZmVlMDBmZmZdIGhhcyBiZWVuIHJlc2VydmVkDQ1b
ICAgIDQuNDIyNzgyXSBzeXN0ZW0gMDA6MDQ6IFttZW0gMHhmZWQ4MDAwMC0weGZlZDhmZmZmXSBj
b3VsZCBub3QgYmUgcmVzZXJ2ZWQNDVsgICAgNC40MzExMjhdIHN5c3RlbSAwMDowNDogW21lbSAw
eGZlYzEwMDAwLTB4ZmVjMTBmZmZdIGhhcyBiZWVuIHJlc2VydmVkDQ1bICAgIDQuNDM4NjkzXSBz
eXN0ZW0gMDA6MDQ6IFttZW0gMHhmZjAwMDAwMC0weGZmZmZmZmZmXSBoYXMgYmVlbiByZXNlcnZl
ZA0NWyAgICA0LjQ0NzU2M10gcG5wOiBQblAgQUNQSTogZm91bmQgNiBkZXZpY2VzDQ1bICAgIDQu
NDU4MjMxXSBQTS1UaW1lciBmYWlsZWQgY29uc2lzdGVuY3kgY2hlY2sgICgweGZmZmZmZikgLSBh
Ym9ydGluZy4NDVsgICAgNC40NjU4ODJdIE5FVDogUmVnaXN0ZXJlZCBQRl9JTkVUIHByb3RvY29s
IGZhbWlseQ0NWyAgICA0LjQ3MTY0OV0gSVAgaWRlbnRzIGhhc2ggdGFibGUgZW50cmllczogMTMx
MDcyIChvcmRlcjogOCwgMTA0ODU3NiBieXRlcywgbGluZWFyKQ0NWyAgICA0LjQ4MTE5NF0gdGNw
X2xpc3Rlbl9wb3J0YWRkcl9oYXNoIGhhc2ggdGFibGUgZW50cmllczogNDA5NiAob3JkZXI6IDQs
IDY1NTM2IGJ5dGVzLCBsaW5lYXIpDQ1bICAgIDQuNDkxMDQyXSBUYWJsZS1wZXJ0dXJiIGhhc2gg
dGFibGUgZW50cmllczogNjU1MzYgKG9yZGVyOiA2LCAyNjIxNDQgYnl0ZXMsIGxpbmVhcikNDVsg
ICAgNC41MDAzNzNdIFRDUCBlc3RhYmxpc2hlZCBoYXNoIHRhYmxlIGVudHJpZXM6IDY1NTM2IChv
cmRlcjogNywgNTI0Mjg4IGJ5dGVzLCBsaW5lYXIpDQ1bICAgIDQuNTA5OTI2XSBUQ1AgYmluZCBo
YXNoIHRhYmxlIGVudHJpZXM6IDY1NTM2IChvcmRlcjogOSwgMjA5NzE1MiBieXRlcywgbGluZWFy
KQ0NWyAgICA0LjUxODY1NF0gVENQOiBIYXNoIHRhYmxlcyBjb25maWd1cmVkIChlc3RhYmxpc2hl
ZCA2NTUzNiBiaW5kIDY1NTM2KQ0NWyAgICA0LjUyNjUzMV0gTVBUQ1AgdG9rZW4gaGFzaCB0YWJs
ZSBlbnRyaWVzOiA4MTkyIChvcmRlcjogNSwgMTk2NjA4IGJ5dGVzLCBsaW5lYXIpDQ1bICAgIDQu
NTM1NDM4XSBVRFAgaGFzaCB0YWJsZSBlbnRyaWVzOiA0MDk2IChvcmRlcjogNSwgMTMxMDcyIGJ5
dGVzLCBsaW5lYXIpDQ1bICAgIDQuNTQzNTY0XSBVRFAtTGl0ZSBoYXNoIHRhYmxlIGVudHJpZXM6
IDQwOTYgKG9yZGVyOiA1LCAxMzEwNzIgYnl0ZXMsIGxpbmVhcikNDVsgICAgNC41NTIyMjhdIE5F
VDogUmVnaXN0ZXJlZCBQRl9VTklYL1BGX0xPQ0FMIHByb3RvY29sIGZhbWlseQ0NWyAgICA0LjU1
OTA0OF0gTkVUOiBSZWdpc3RlcmVkIFBGX1hEUCBwcm90b2NvbCBmYW1pbHkNDVsgICAgNC41NjQ3
MjRdIHBjaSAwMDAwOmMwOjA3LjE6IFBDSSBicmlkZ2UgdG8gW2J1cyBjMV0NDVsgICAgNC41NzA1
NzVdIHBjaSAwMDAwOmMwOjA3LjE6ICAgYnJpZGdlIHdpbmRvdyBbbWVtIDB4ZDVmMDAwMDAtMHhk
NWZmZmZmZl0NDVsgICAgNC41Nzg0OTldIHBjaV9idXMgMDAwMDpjMDogcmVzb3VyY2UgNCBbaW8g
IDB4YTAwMC0weGZmZmYgd2luZG93XQ0NWyAgICA0LjU4NTY3OF0gcGNpX2J1cyAwMDAwOmMwOiBy
ZXNvdXJjZSA1IFttZW0gMHhkNDAwMDAwMC0weGQ1ZmZmZmZmIHdpbmRvd10NDVsgICAgNC41OTM4
NjddIHBjaV9idXMgMDAwMDpjMDogcmVzb3VyY2UgNiBbbWVtIDB4MTAwMjA0MDAwMDAtMHgxNTli
MzNmZmZmZiB3aW5kb3ddDQ1bICAgIDQuNjAyNDA5XSBwY2lfYnVzIDAwMDA6YzE6IHJlc291cmNl
IDEgW21lbSAweGQ1ZjAwMDAwLTB4ZDVmZmZmZmZdDQ1bICAgIDQuNjEwMDIwXSBwY2kgMDAwMDo4
MDowMS4yOiBQQ0kgYnJpZGdlIHRvIFtidXMgODFdDQ1bICAgIDQuNjE2MDIzXSBwY2kgMDAwMDo4
MDowMS4yOiAgIGJyaWRnZSB3aW5kb3cgW21lbSAweGNhZjAwMDAwLTB4Y2FmZmZmZmZdDQ1bICAg
IDQuNjI0MTI5XSBwY2kgMDAwMDo4MDowMS4zOiBQQ0kgYnJpZGdlIHRvIFtidXMgODJdDQ1bICAg
IDQuNjMwMTI1XSBwY2kgMDAwMDo4MDowMS4zOiAgIGJyaWRnZSB3aW5kb3cgW21lbSAweGNhZTAw
MDAwLTB4Y2FlZmZmZmZdDQ1bICAgIDQuNjM4MTAxXSBwY2kgMDAwMDo4MDowMy4xOiBQQ0kgYnJp
ZGdlIHRvIFtidXMgODNdDQ1bICAgIDQuNjQzOTQxXSBwY2kgMDAwMDo4MDowMy4xOiAgIGJyaWRn
ZSB3aW5kb3cgW21lbSAweGNhZDAwMDAwLTB4Y2FkZmZmZmZdDQ1bICAgIDQuNjUyMTY4XSBwY2kg
MDAwMDo4NTowMy4wOiBQQ0kgYnJpZGdlIHRvIFtidXMgODZdDQ1bICAgIDQuNjU4MTcxXSBwY2kg
MDAwMDo4NTowMy4wOiAgIGJyaWRnZSB3aW5kb3cgW2lvICAweDkwMDAtMHg5ZmZmXQ0NWyAgICA0
LjY2NTMyMF0gcGNpIDAwMDA6ODU6MDMuMDogICBicmlkZ2Ugd2luZG93IFttZW0gMHhjYWMwMDAw
MC0weGNhY2ZmZmZmXQ0NWyAgICA0LjY3Mjk3N10gcGNpIDAwMDA6ODU6MDMuMDogICBicmlkZ2Ug
d2luZG93IFttZW0gMHgzMTliMzMwMDAwMC0weDMxOWIzM2ZmZmZmIDY0Yml0IHByZWZdDQ1bICAg
IDQuNjgyOTI3XSBwY2kgMDAwMDo4NTowNy4wOiBQQ0kgYnJpZGdlIHRvIFtidXMgODddDQ1bICAg
IDQuNjg4OTMxXSBwY2kgMDAwMDo4NTowNy4wOiAgIGJyaWRnZSB3aW5kb3cgW2lvICAweDgwMDAt
MHg4ZmZmXQ0NWyAgICA0LjY5NjEwOF0gcGNpIDAwMDA6ODU6MDcuMDogICBicmlkZ2Ugd2luZG93
IFttZW0gMHhjYWIwMDAwMC0weGNhYmZmZmZmXQ0NWyAgICA0LjcwNDE3OV0gcGNpIDAwMDA6ODU6
MDcuMDogICBicmlkZ2Ugd2luZG93IFttZW0gMHgzMTliMzIwMDAwMC0weDMxOWIzMmZmZmZmIDY0
Yml0IHByZWZdDQ1bICAgIDQuNzEzOTUzXSBwY2kgMDAwMDo4NDowMC4wOiBQQ0kgYnJpZGdlIHRv
IFtidXMgODUtODddDQ1bICAgIDQuNzIwMDk1XSBwY2kgMDAwMDo4NDowMC4wOiAgIGJyaWRnZSB3
aW5kb3cgW2lvICAweDgwMDAtMHg5ZmZmXQ0NWyAgICA0LjcyNzMwMF0gcGNpIDAwMDA6ODQ6MDAu
MDogICBicmlkZ2Ugd2luZG93IFttZW0gMHhjYWIwMDAwMC0weGNhY2ZmZmZmXQ0NWyAgICA0Ljcz
NTQ1MV0gcGNpIDAwMDA6ODQ6MDAuMDogICBicmlkZ2Ugd2luZG93IFttZW0gMHgzMTliMzIwMDAw
MC0weDMxOWIzM2ZmZmZmIDY0Yml0IHByZWZdDQ1bICAgIDQuNzQ1MTY0XSBwY2kgMDAwMDo4MDow
My4yOiBQQ0kgYnJpZGdlIHRvIFtidXMgODQtODddDQ1bICAgIDQuNzUxNDM2XSBwY2kgMDAwMDo4
MDowMy4yOiAgIGJyaWRnZSB3aW5kb3cgW2lvICAweDgwMDAtMHg5ZmZmXQ0NWyAgICA0Ljc1ODc4
N10gcGNpIDAwMDA6ODA6MDMuMjogICBicmlkZ2Ugd2luZG93IFttZW0gMHhjYWIwMDAwMC0weGNh
Y2ZmZmZmXQ0NWyAgICA0Ljc2Njg2MF0gcGNpIDAwMDA6ODA6MDMuMjogICBicmlkZ2Ugd2luZG93
IFttZW0gMHgzMTliMzIwMDAwMC0weDMxOWIzM2ZmZmZmIDY0Yml0IHByZWZdDQ1bICAgIDQuNzc2
NTgwXSBwY2kgMDAwMDo4MDowNy4xOiBQQ0kgYnJpZGdlIHRvIFtidXMgODhdDQ1bICAgIDQuNzgy
NTMxXSBwY2lfYnVzIDAwMDA6ODA6IHJlc291cmNlIDQgW2lvICAweDcwMDAtMHg5ZmZmIHdpbmRv
d10NDVsgICAgNC43ODk2ODNdIHBjaV9idXMgMDAwMDo4MDogcmVzb3VyY2UgNSBbbWVtIDB4Y2Ew
MDAwMDAtMHhjYWZmZmZmZiB3aW5kb3ddDQ1bICAgIDQuNzk3OTM5XSBwY2lfYnVzIDAwMDA6ODA6
IHJlc291cmNlIDYgW21lbSAweDJjMDIwNDAwMDAwLTB4MzE5YjMzZmZmZmYgd2luZG93XQ0NWyAg
ICA0LjgwNjg0NF0gcGNpX2J1cyAwMDAwOjgxOiByZXNvdXJjZSAxIFttZW0gMHhjYWYwMDAwMC0w
eGNhZmZmZmZmXQ0NWyAgICA0LjgxNDI1MV0gcGNpX2J1cyAwMDAwOjgyOiByZXNvdXJjZSAxIFtt
ZW0gMHhjYWUwMDAwMC0weGNhZWZmZmZmXQ0NWyAgICA0LjgyMTQ3Nl0gcGNpX2J1cyAwMDAwOjgz
OiByZXNvdXJjZSAxIFttZW0gMHhjYWQwMDAwMC0weGNhZGZmZmZmXQ0NWyAgICA0LjgyODg0N10g
cGNpX2J1cyAwMDAwOjg0OiByZXNvdXJjZSAwIFtpbyAgMHg4MDAwLTB4OWZmZl0NDVsgICAgNC44
MzUzNTJdIHBjaV9idXMgMDAwMDo4NDogcmVzb3VyY2UgMSBbbWVtIDB4Y2FiMDAwMDAtMHhjYWNm
ZmZmZl0NDVsgICAgNC44NDI4MDJdIHBjaV9idXMgMDAwMDo4NDogcmVzb3VyY2UgMiBbbWVtIDB4
MzE5YjMyMDAwMDAtMHgzMTliMzNmZmZmZiA2NGJpdCBwcmVmXQ0NWyAgICA0Ljg1MTkyNV0gcGNp
X2J1cyAwMDAwOjg1OiByZXNvdXJjZSAwIFtpbyAgMHg4MDAwLTB4OWZmZl0NDVsgICAgNC44NTg1
MDddIHBjaV9idXMgMDAwMDo4NTogcmVzb3VyY2UgMSBbbWVtIDB4Y2FiMDAwMDAtMHhjYWNmZmZm
Zl0NDVsgICAgNC44NjU5OTFdIHBjaV9idXMgMDAwMDo4NTogcmVzb3VyY2UgMiBbbWVtIDB4MzE5
YjMyMDAwMDAtMHgzMTliMzNmZmZmZiA2NGJpdCBwcmVmXQ0NWyAgICA0Ljg3NTIwOV0gcGNpX2J1
cyAwMDAwOjg2OiByZXNvdXJjZSAwIFtpbyAgMHg5MDAwLTB4OWZmZl0NDVsgICAgNC44ODE4NDBd
IHBjaV9idXMgMDAwMDo4NjogcmVzb3VyY2UgMSBbbWVtIDB4Y2FjMDAwMDAtMHhjYWNmZmZmZl0N
DVsgICAgNC44ODkyMzddIHBjaV9idXMgMDAwMDo4NjogcmVzb3VyY2UgMiBbbWVtIDB4MzE5YjMz
MDAwMDAtMHgzMTliMzNmZmZmZiA2NGJpdCBwcmVmXQ0NWyAgICA0Ljg5ODMwOF0gcGNpX2J1cyAw
MDAwOjg3OiByZXNvdXJjZSAwIFtpbyAgMHg4MDAwLTB4OGZmZl0NDVsgICAgNC45MDQ4NjldIHBj
aV9idXMgMDAwMDo4NzogcmVzb3VyY2UgMSBbbWVtIDB4Y2FiMDAwMDAtMHhjYWJmZmZmZl0NDVsg
ICAgNC45MTIzMjhdIHBjaV9idXMgMDAwMDo4NzogcmVzb3VyY2UgMiBbbWVtIDB4MzE5YjMyMDAw
MDAtMHgzMTliMzJmZmZmZiA2NGJpdCBwcmVmXQ0NWyAgICA0LjkyMTQ4NF0gcGNpIDAwMDA6MDA6
MDEuMTogUENJIGJyaWRnZSB0byBbYnVzIDAxXQ0NWyAgICA0LjkyNzE1OF0gcGNpIDAwMDA6MDA6
MDEuMTogICBicmlkZ2Ugd2luZG93IFtpbyAgMHgzMDAwLTB4M2ZmZl0NDVsgICAgNC45MzQwMzld
IHBjaSAwMDAwOjAwOjAxLjE6ICAgYnJpZGdlIHdpbmRvdyBbbWVtIDB4ZjBmMDAwMDAtMHhmMGZm
ZmZmZl0NDVsgICAgNC45NDE5OTNdIHBjaSAwMDAwOjAwOjAxLjE6ICAgYnJpZGdlIHdpbmRvdyBb
bWVtIDB4NGQ4MDAwMDAwMDAtMHg0ZDkwMDFmZmZmZiA2NGJpdCBwcmVmXQ0NWyAgICA0Ljk1MTgy
NV0gcGNpIDAwMDA6MDA6MDUuMTogUENJIGJyaWRnZSB0byBbYnVzIDAyXQ0NWyAgICA0Ljk1Nzgz
Ml0gcGNpIDAwMDA6MDA6MDUuMjogUENJIGJyaWRnZSB0byBbYnVzIDAzXQ0NWyAgICA0Ljk2Mzc4
MF0gcGNpIDAwMDA6MDA6MDUuMzogUENJIGJyaWRnZSB0byBbYnVzIDA0XQ0NWyAgICA0Ljk2OTUx
NF0gcGNpIDAwMDA6MDA6MDUuNDogUENJIGJyaWRnZSB0byBbYnVzIDA1XQ0NWyAgICA0Ljk3NTQ5
MV0gcGNpIDAwMDA6MDA6MDcuMTogUENJIGJyaWRnZSB0byBbYnVzIDA2XQ0NWyAgICA0Ljk4MTM5
Ml0gcGNpIDAwMDA6MDA6MDcuMTogICBicmlkZ2Ugd2luZG93IFttZW0gMHhmMGIwMDAwMC0weGYw
ZGZmZmZmXQ0NWyAgICA0Ljk4OTQ5M10gcGNpIDAwMDA6MDA6MDcuMjogUENJIGJyaWRnZSB0byBb
YnVzIDA3XQ0NWyAgICA0Ljk5NTQzM10gcGNpIDAwMDA6MDA6MDcuMjogICBicmlkZ2Ugd2luZG93
IFttZW0gMHhmMGUwMDAwMC0weGYwZWZmZmZmXQ0NWyAgICA1LjAwMzUwMl0gcGNpX2J1cyAwMDAw
OjAwOiByZXNvdXJjZSA0IFtpbyAgMHgwMDAwLTB4MDJlNyB3aW5kb3ddDQ1bICAgIDUuMDEwODAx
XSBwY2lfYnVzIDAwMDA6MDA6IHJlc291cmNlIDUgW2lvICAweDAzMDAtMHgwM2FmIHdpbmRvd10N
DVsgICAgNS4wMTc5OTVdIHBjaV9idXMgMDAwMDowMDogcmVzb3VyY2UgNiBbaW8gIDB4MDQwMC0w
eDBjZjcgd2luZG93XQ0NWyAgICA1LjAyNTQxMV0gcGNpX2J1cyAwMDAwOjAwOiByZXNvdXJjZSA3
IFtpbyAgMHgwM2IwLTB4MDNkZiB3aW5kb3ddDQ1bICAgIDUuMDMyODk1XSBwY2lfYnVzIDAwMDA6
MDA6IHJlc291cmNlIDggW2lvICAweDEwMDAtMHgzZmZmIHdpbmRvd10NDVsgICAgNS4wMzk5Mjld
IHBjaV9idXMgMDAwMDowMDogcmVzb3VyY2UgOSBbbWVtIDB4MDAwYTAwMDAtMHgwMDBkZmZmZiB3
aW5kb3ddDQ1bICAgIDUuMDQ4MjQ3XSBwY2lfYnVzIDAwMDA6MDA6IHJlc291cmNlIDEwIFttZW0g
MHhmMDAwMDAwMC0weGYwZmZmZmZmIHdpbmRvd10NDVsgICAgNS4wNTYyMTBdIHBjaV9idXMgMDAw
MDowMDogcmVzb3VyY2UgMTEgW21lbSAweDQ4MDIwNDAwMDAwLTB4NGQ5YjMzZmZmZmYgd2luZG93
XQ0NWyAgICA1LjA2NDk3MF0gcGNpX2J1cyAwMDAwOjAxOiByZXNvdXJjZSAwIFtpbyAgMHgzMDAw
LTB4M2ZmZl0NDVsgICAgNS4wNzE2MDldIHBjaV9idXMgMDAwMDowMTogcmVzb3VyY2UgMSBbbWVt
IDB4ZjBmMDAwMDAtMHhmMGZmZmZmZl0NDVsgICAgNS4wNzg4NTBdIHBjaV9idXMgMDAwMDowMTog
cmVzb3VyY2UgMiBbbWVtIDB4NGQ4MDAwMDAwMDAtMHg0ZDkwMDFmZmZmZiA2NGJpdCBwcmVmXQ0N
WyAgICA1LjA4ODEwNF0gcGNpX2J1cyAwMDAwOjA2OiByZXNvdXJjZSAxIFttZW0gMHhmMGIwMDAw
MC0weGYwZGZmZmZmXQ0NWyAgICA1LjA5NTIyM10gcGNpX2J1cyAwMDAwOjA3OiByZXNvdXJjZSAx
IFttZW0gMHhmMGUwMDAwMC0weGYwZWZmZmZmXQ0NWyAgICA1LjEwMjMzNl0gcGNpIDAwMDA6NDA6
MDEuMTogUENJIGJyaWRnZSB0byBbYnVzIDQxXQ0NWyAgICA1LjEwODMxNF0gcGNpIDAwMDA6NDA6
MDEuMTogICBicmlkZ2Ugd2luZG93IFtpbyAgMHg2MDAwLTB4NmZmZl0NDVsgICAgNS4xMTU2NDVd
IHBjaSAwMDAwOjQwOjAxLjE6ICAgYnJpZGdlIHdpbmRvdyBbbWVtIDB4YzBjMDAwMDAtMHhjMGNm
ZmZmZl0NDVsgICAgNS4xMjM3MTZdIHBjaSAwMDAwOjQwOjAxLjE6ICAgYnJpZGdlIHdpbmRvdyBb
bWVtIDB4Njk5NDAwMDAwMDAtMHg2OTk3ZmZmZmZmZiA2NGJpdCBwcmVmXQ0NWyAgICA1LjEzMzQy
M10gcGNpIDAwMDA6NDA6MDMuMTogUENJIGJyaWRnZSB0byBbYnVzIDQyXQ0NWyAgICA1LjEzOTM3
OV0gcGNpIDAwMDA6NDA6MDMuMTogICBicmlkZ2Ugd2luZG93IFttZW0gMHhjMDAwMDAwMC0weGMw
NGZmZmZmXQ0NWyAgICA1LjE0NzMyOF0gcGNpIDAwMDA6NDA6MDMuMjogUENJIGJyaWRnZSB0byBb
YnVzIDQzXQ0NWyAgICA1LjE1MzEyN10gcGNpIDAwMDA6NDA6MDMuMjogICBicmlkZ2Ugd2luZG93
IFttZW0gMHhjMGIwMDAwMC0weGMwYmZmZmZmXQ0NWyAgICA1LjE2MTExNl0gcGNpIDAwMDA6NDU6
MDAuMDogUENJIGJyaWRnZSB0byBbYnVzIDQ2XQ0NWyAgICA1LjE2NzEwOV0gcGNpIDAwMDA6NDU6
MDAuMDogICBicmlkZ2Ugd2luZG93IFttZW0gMHhjMGEwMDAwMC0weGMwYWZmZmZmXQ0NWyAgICA1
LjE3NTEyMF0gcGNpIDAwMDA6NDU6MDAuMDogICBicmlkZ2Ugd2luZG93IFttZW0gMHg2OTk4MDAw
MDAwMC0weDY5OTgwMGZmZmZmIDY0Yml0IHByZWZdDQ1bICAgIDUuMTg1MDM3XSBwY2kgMDAwMDo0
NTowMi4wOiBQQ0kgYnJpZGdlIHRvIFtidXMgNDddDQ1bICAgIDUuMTkwOTU4XSBwY2kgMDAwMDo0
NTowMi4wOiAgIGJyaWRnZSB3aW5kb3cgW2lvICAweDUwMDAtMHg1ZmZmXQ0NWyAgICA1LjE5ODMx
MF0gcGNpIDAwMDA6NDU6MDIuMDogICBicmlkZ2Ugd2luZG93IFttZW0gMHhjMDkwMDAwMC0weGMw
OWZmZmZmXQ0NWyAgICA1LjIwNjM3NV0gcGNpIDAwMDA6NDU6MDguMDogUENJIGJyaWRnZSB0byBb
YnVzIDQ4XQ0NWyAgICA1LjIxMjIyM10gcGNpIDAwMDA6NDU6MDguMDogICBicmlkZ2Ugd2luZG93
IFttZW0gMHhjMDgwMDAwMC0weGMwOGZmZmZmXQ0NWyAgICA1LjIyMDM5Nl0gcGNpIDAwMDA6NDU6
MGMuMDogUENJIGJyaWRnZSB0byBbYnVzIDQ5XQ0NWyAgICA1LjIyNjI4Ml0gcGNpIDAwMDA6NDU6
MGMuMDogICBicmlkZ2Ugd2luZG93IFttZW0gMHhjMDcwMDAwMC0weGMwN2ZmZmZmXQ0NWyAgICA1
LjIzNDI1Nl0gcGNpIDAwMDA6NDU6MGQuMDogUENJIGJyaWRnZSB0byBbYnVzIDRhXQ0NWyAgICA1
LjI0MDE0Ml0gcGNpIDAwMDA6NDU6MGQuMDogICBicmlkZ2Ugd2luZG93IFttZW0gMHhjMDYwMDAw
MC0weGMwNmZmZmZmXQ0NWyAgICA1LjI0ODIyOF0gcGNpIDAwMDA6NDQ6MDAuMDogUENJIGJyaWRn
ZSB0byBbYnVzIDQ1LTRhXQ0NWyAgICA1LjI1NDUyM10gcGNpIDAwMDA6NDQ6MDAuMDogICBicmlk
Z2Ugd2luZG93IFtpbyAgMHg1MDAwLTB4NWZmZl0NDVsgICAgNS4yNjE1MDRdIHBjaSAwMDAwOjQ0
OjAwLjA6ICAgYnJpZGdlIHdpbmRvdyBbbWVtIDB4YzA2MDAwMDAtMHhjMGFmZmZmZl0NDVsgICAg
NS4yNjk1NTFdIHBjaSAwMDAwOjQ0OjAwLjA6ICAgYnJpZGdlIHdpbmRvdyBbbWVtIDB4Njk5ODAw
MDAwMDAtMHg2OTk4MDBmZmZmZiA2NGJpdCBwcmVmXQ0NWyAgICA1LjI3OTI4M10gcGNpIDAwMDA6
NDA6MDMuMzogUENJIGJyaWRnZSB0byBbYnVzIDQ0LTRhXQ0NWyAgICA1LjI4NTU4M10gcGNpIDAw
MDA6NDA6MDMuMzogICBicmlkZ2Ugd2luZG93IFtpbyAgMHg1MDAwLTB4NWZmZl0NDVsgICAgNS4y
OTI3MTJdIHBjaSAwMDAwOjQwOjAzLjM6ICAgYnJpZGdlIHdpbmRvdyBbbWVtIDB4YzA2MDAwMDAt
MHhjMGFmZmZmZl0NDVsgICAgNS4zMDA4MTldIHBjaSAwMDAwOjQwOjAzLjM6ICAgYnJpZGdlIHdp
bmRvdyBbbWVtIDB4Njk5ODAwMDAwMDAtMHg2OTk4MDBmZmZmZiA2NGJpdCBwcmVmXQ0NWyAgICA1
LjMxMDExOF0gcGNpIDAwMDA6NDA6MDcuMTogUENJIGJyaWRnZSB0byBbYnVzIDRiXQ0NWyAgICA1
LjMxNjA2NV0gcGNpX2J1cyAwMDAwOjQwOiByZXNvdXJjZSA0IFtpbyAgMHg0MDAwLTB4NmZmZiB3
aW5kb3ddDQ1bICAgIDUuMzIzMzk5XSBwY2lfYnVzIDAwMDA6NDA6IHJlc291cmNlIDUgW21lbSAw
eGMwMDAwMDAwLTB4YzBmZmZmZmYgd2luZG93XQ0NWyAgICA1LjMzMTYwNV0gcGNpX2J1cyAwMDAw
OjQwOiByZXNvdXJjZSA2IFttZW0gMHg2NDAyMDQwMDAwMC0weDY5OWIzM2ZmZmZmIHdpbmRvd10N
DVsgICAgNS4zNDAzMjZdIHBjaV9idXMgMDAwMDo0MTogcmVzb3VyY2UgMCBbaW8gIDB4NjAwMC0w
eDZmZmZdDQ1bICAgIDUuMzQ2NjAyXSBwY2lfYnVzIDAwMDA6NDE6IHJlc291cmNlIDEgW21lbSAw
eGMwYzAwMDAwLTB4YzBjZmZmZmZdDQ1bICAgIDUuMzUzNjU3XSBwY2lfYnVzIDAwMDA6NDE6IHJl
c291cmNlIDIgW21lbSAweDY5OTQwMDAwMDAwLTB4Njk5N2ZmZmZmZmYgNjRiaXQgcHJlZl0NDVsg
ICAgNS4zNjI2NTZdIHBjaV9idXMgMDAwMDo0MjogcmVzb3VyY2UgMSBbbWVtIDB4YzAwMDAwMDAt
MHhjMDRmZmZmZl0NDVsgICAgNS4zNzAwNzBdIHBjaV9idXMgMDAwMDo0MzogcmVzb3VyY2UgMSBb
bWVtIDB4YzBiMDAwMDAtMHhjMGJmZmZmZl0NDVsgICAgNS4zNzc0MTldIHBjaV9idXMgMDAwMDo0
NDogcmVzb3VyY2UgMCBbaW8gIDB4NTAwMC0weDVmZmZdDQ1bICAgIDUuMzgzOTAyXSBwY2lfYnVz
IDAwMDA6NDQ6IHJlc291cmNlIDEgW21lbSAweGMwNjAwMDAwLTB4YzBhZmZmZmZdDQ1bICAgIDUu
MzkwOTM4XSBwY2lfYnVzIDAwMDA6NDQ6IHJlc291cmNlIDIgW21lbSAweDY5OTgwMDAwMDAwLTB4
Njk5ODAwZmZmZmYgNjRiaXQgcHJlZl0NDVsgICAgNS4zOTk2NDBdIHBjaV9idXMgMDAwMDo0NTog
cmVzb3VyY2UgMCBbaW8gIDB4NTAwMC0weDVmZmZdDQ1bICAgIDUuNDA1OTMzXSBwY2lfYnVzIDAw
MDA6NDU6IHJlc291cmNlIDEgW21lbSAweGMwNjAwMDAwLTB4YzBhZmZmZmZdDQ1bICAgIDUuNDEz
MDQ3XSBwY2lfYnVzIDAwMDA6NDU6IHJlc291cmNlIDIgW21lbSAweDY5OTgwMDAwMDAwLTB4Njk5
ODAwZmZmZmYgNjRiaXQgcHJlZl0NDVsgICAgNS40MjIzNjBdIHBjaV9idXMgMDAwMDo0NjogcmVz
b3VyY2UgMSBbbWVtIDB4YzBhMDAwMDAtMHhjMGFmZmZmZl0NDVsgICAgNS40Mjk4NTNdIHBjaV9i
dXMgMDAwMDo0NjogcmVzb3VyY2UgMiBbbWVtIDB4Njk5ODAwMDAwMDAtMHg2OTk4MDBmZmZmZiA2
NGJpdCBwcmVmXQ0NWyAgICA1LjQzOTA1MV0gcGNpX2J1cyAwMDAwOjQ3OiByZXNvdXJjZSAwIFtp
byAgMHg1MDAwLTB4NWZmZl0NDVsgICAgNS40NDUzMzFdIHBjaV9idXMgMDAwMDo0NzogcmVzb3Vy
Y2UgMSBbbWVtIDB4YzA5MDAwMDAtMHhjMDlmZmZmZl0NDVsgICAgNS40NTI2NDNdIHBjaV9idXMg
MDAwMDo0ODogcmVzb3VyY2UgMSBbbWVtIDB4YzA4MDAwMDAtMHhjMDhmZmZmZl0NDVsgICAgNS40
NTk3NzFdIHBjaV9idXMgMDAwMDo0OTogcmVzb3VyY2UgMSBbbWVtIDB4YzA3MDAwMDAtMHhjMDdm
ZmZmZl0NDVsgICAgNS40NjcyMjFdIHBjaV9idXMgMDAwMDo0YTogcmVzb3VyY2UgMSBbbWVtIDB4
YzA2MDAwMDAtMHhjMDZmZmZmZl0NDVsgICAgNS40NzUwNjhdIHBjaSAwMDAwOjAxOjAwLjE6IEQw
IHBvd2VyIHN0YXRlIGRlcGVuZHMgb24gMDAwMDowMTowMC4wDQ1bICAgIDUuNDgyNDIwXSBwY2kg
MDAwMDo0MTowMC4xOiBEMCBwb3dlciBzdGF0ZSBkZXBlbmRzIG9uIDAwMDA6NDE6MDAuMA0NWyAg
ICA1LjQ4OTc1MF0gUENJOiBDTFMgNjQgYnl0ZXMsIGRlZmF1bHQgNjQNDVsgICAgNS40OTQzMDVd
IFBDSS1ETUE6IFVzaW5nIHNvZnR3YXJlIGJvdW5jZSBidWZmZXJpbmcgZm9yIElPIChTV0lPVExC
KQ0NWyAgICA1LjQ5NDM0N10gVHJ5aW5nIHRvIHVucGFjayByb290ZnMgaW1hZ2UgYXMgaW5pdHJh
bWZzLi4uDQ1bICAgIDUuNTAxNjI4XSBzb2Z0d2FyZSBJTyBUTEI6IG1hcHBlZCBbbWVtIDB4MDAw
MDAwMDA5YzRlOTAwMC0weDAwMDAwMDAwYTA0ZTkwMDBdICg2NE1CKQ0NWyAgICA1LjUwMTY1MF0g
Y2xvY2tzb3VyY2U6IHRzYzogbWFzazogMHhmZmZmZmZmZmZmZmZmZmZmIG1heF9jeWNsZXM6IDB4
M2M4YTNiYmU0NDAsIG1heF9pZGxlX25zOiA0NDA3OTUyOTgxODcgbnMNDVsgICAgNS41MjgzNzhd
IGNsb2Nrc291cmNlOiBTd2l0Y2hlZCB0byBjbG9ja3NvdXJjZSB0c2MNDVsgICAgNS41MzUxMTdd
IEluaXRpYWxpc2Ugc3lzdGVtIHRydXN0ZWQga2V5cmluZ3MNDVsgICAgNS41NDAwNjldIEtleSB0
eXBlIGJsYWNrbGlzdCByZWdpc3RlcmVkDQ1bICAgIDUuNTQ0NzE4XSB3b3JraW5nc2V0OiB0aW1l
c3RhbXBfYml0cz0zNiBtYXhfb3JkZXI9MjEgYnVja2V0X29yZGVyPTANDVsgICAgNS41NTI2MjJd
IHpidWQ6IGxvYWRlZA0NWyAgICA1LjU1NjU1Nl0gaW50ZWdyaXR5OiBQbGF0Zm9ybSBLZXlyaW5n
IGluaXRpYWxpemVkDQ1bICAgIDUuNTYyMDIyXSBpbnRlZ3JpdHk6IE1hY2hpbmUga2V5cmluZyBp
bml0aWFsaXplZA0NWyAgICA1LjU2NzQ2OV0gS2V5IHR5cGUgYXN5bW1ldHJpYyByZWdpc3RlcmVk
DQ1bICAgIDUuNTcyMTA3XSBBc3ltbWV0cmljIGtleSBwYXJzZXIgJ3g1MDknIHJlZ2lzdGVyZWQN
DVsgICAgNS42MjI0MDZdIEZyZWVpbmcgaW5pdHJkIG1lbW9yeTogNDE1MDRLDQ1bICAgIDUuNjMx
ODQwXSBhbGc6IHNlbGYtdGVzdHMgZm9yIENUUi1LREYgKGhtYWMoc2hhMjU2KSkgcGFzc2VkDQ1b
ICAgIDUuNjM4Mjg4XSBCbG9jayBsYXllciBTQ1NJIGdlbmVyaWMgKGJzZykgZHJpdmVyIHZlcnNp
b24gMC40IGxvYWRlZCAobWFqb3IgMjQ4KQ0NWyAgICA1LjY0NjY0Nl0gaW8gc2NoZWR1bGVyIG1x
LWRlYWRsaW5lIHJlZ2lzdGVyZWQNDVsgICAgNS42NTQwMThdIGFtZF9ncGlvIEFNREkwMDMwOjAw
OiBlcnJvciAtRUlOVkFMOiBJUlEgaW5kZXggMCBub3QgZm91bmQNDVsgICAgNS42NjE0NzFdIGFt
ZF9ncGlvOiBwcm9iZSBvZiBBTURJMDAzMDowMCBmYWlsZWQgd2l0aCBlcnJvciAtMjINDVsgICAg
NS42Njg0NjddIHBjaWVwb3J0IDAwMDA6YzA6MDAuMzogUE1FOiBTaWduYWxpbmcgd2l0aCBJUlEg
MjcwDQ1bICAgIDUuNjc1MTUxXSBwY2llcG9ydCAwMDAwOmMwOjA3LjE6IFBNRTogU2lnbmFsaW5n
IHdpdGggSVJRIDI3MQ0NWyAgICA1LjY4MTkyNV0gcGNpZXBvcnQgMDAwMDo4MDowMC4zOiBQTUU6
IFNpZ25hbGluZyB3aXRoIElSUSAyNzMNDVsgICAgNS42ODg3NzNdIHBjaWVwb3J0IDAwMDA6ODA6
MDEuMjogUE1FOiBTaWduYWxpbmcgd2l0aCBJUlEgMjc0DQ1bICAgIDUuNjk1NTQ2XSBwY2llcG9y
dCAwMDAwOjgwOjAxLjM6IFBNRTogU2lnbmFsaW5nIHdpdGggSVJRIDI3NQ0NWyAgICA1LjcwMjI5
MF0gcGNpZXBvcnQgMDAwMDo4MDowMy4xOiBQTUU6IFNpZ25hbGluZyB3aXRoIElSUSAyNzYNDVsg
ICAgNS43MDkwNDVdIHBjaWVwb3J0IDAwMDA6ODA6MDMuMjogUE1FOiBTaWduYWxpbmcgd2l0aCBJ
UlEgMjc3DQ1bICAgIDUuNzE1ODg0XSBwY2llcG9ydCAwMDAwOjgwOjA3LjE6IFBNRTogU2lnbmFs
aW5nIHdpdGggSVJRIDI3OQ0NWyAgICA1LjcyMzE1OF0gcGNpZXBvcnQgMDAwMDowMDowMC4zOiBQ
TUU6IFNpZ25hbGluZyB3aXRoIElSUSAyODQNDVsgICAgNS43MzAwMDFdIHBjaWVwb3J0IDAwMDA6
MDA6MDEuMTogUE1FOiBTaWduYWxpbmcgd2l0aCBJUlEgMjg1DQ1bICAgIDUuNzM2OTAyXSBwY2ll
cG9ydCAwMDAwOjAwOjA1LjE6IFBNRTogU2lnbmFsaW5nIHdpdGggSVJRIDI4Ng0NWyAgICA1Ljc0
Mzg0M10gcGNpZXBvcnQgMDAwMDowMDowNS4yOiBQTUU6IFNpZ25hbGluZyB3aXRoIElSUSAyODcN
DVsgICAgNS43NTA2ODFdIHBjaWVwb3J0IDAwMDA6MDA6MDUuMzogUE1FOiBTaWduYWxpbmcgd2l0
aCBJUlEgMjg4DQ1bICAgIDUuNzU3NTg3XSBwY2llcG9ydCAwMDAwOjAwOjA1LjQ6IFBNRTogU2ln
bmFsaW5nIHdpdGggSVJRIDI4OQ0NWyAgICA1Ljc2NDM3OV0gcGNpZXBvcnQgMDAwMDowMDowNy4x
OiBQTUU6IFNpZ25hbGluZyB3aXRoIElSUSAyOTANDVsgICAgNS43NzEwNzVdIHBjaWVwb3J0IDAw
MDA6MDA6MDcuMjogUE1FOiBTaWduYWxpbmcgd2l0aCBJUlEgMjkxDQ1bICAgIDUuNzc3ODczXSBw
Y2llcG9ydCAwMDAwOjQwOjAwLjM6IFBNRTogU2lnbmFsaW5nIHdpdGggSVJRIDI5Mw0NWyAgICA1
Ljc4NDU2OV0gcGNpZXBvcnQgMDAwMDo0MDowMS4xOiBQTUU6IFNpZ25hbGluZyB3aXRoIElSUSAy
OTQNDVsgICAgNS43OTE0MjBdIHBjaWVwb3J0IDAwMDA6NDA6MDMuMTogUE1FOiBTaWduYWxpbmcg
d2l0aCBJUlEgMjk1DQ1bICAgIDUuNzk4MTg0XSBwY2llcG9ydCAwMDAwOjQwOjAzLjI6IFBNRTog
U2lnbmFsaW5nIHdpdGggSVJRIDI5Ng0NWyAgICA1LjgwNDkxOV0gcGNpZXBvcnQgMDAwMDo0MDow
My4zOiBQTUU6IFNpZ25hbGluZyB3aXRoIElSUSAyOTcNDVsgICAgNS44MTE2OThdIHBjaWVwb3J0
IDAwMDA6NDA6MDcuMTogUE1FOiBTaWduYWxpbmcgd2l0aCBJUlEgMjk5DQ1bICAgIDUuODE5MjU4
XSBzaHBjaHA6IFN0YW5kYXJkIEhvdCBQbHVnIFBDSSBDb250cm9sbGVyIERyaXZlciB2ZXJzaW9u
OiAwLjQNDVsgICAgNS44MjgwOTFdIHhlbl9tY2Vsb2c6IEZhaWxlZCB0byBnZXQgQ1BVIG51bWJl
cnMNDVsgICAgNS44MzM4MDddIFNlcmlhbDogODI1MC8xNjU1MCBkcml2ZXIsIDQgcG9ydHMsIElS
USBzaGFyaW5nIGVuYWJsZWQNDVsgICAgNS44NDM1MTBdIHNlcmlhbDgyNTA6IHR0eVMxIGF0IEkv
TyAweDJmOCAoaXJxID0gMywgYmFzZV9iYXVkID0gMTE1MjAwKSBpcyBhIDE2NTUwQQ0NWyAgICA1
Ljg1MjM4OV0gaHBldF9hY3BpX2FkZDogbm8gYWRkcmVzcyBvciBpcnFzIGluIF9DUlMNDVsgICAg
NS44NTgwNjVdIExpbnV4IGFncGdhcnQgaW50ZXJmYWNlIHYwLjEwMw0NWyAgICA1Ljg2MzU5OF0g
QU1ELVZpOiBBTUQgSU9NTVV2MiBmdW5jdGlvbmFsaXR5IG5vdCBhdmFpbGFibGUgb24gdGhpcyBz
eXN0ZW0gLSBUaGlzIGlzIG5vdCBhIGJ1Zy4NDVsgICAgNS44NzcyMDBdIGk4MDQyOiBQTlA6IE5v
IFBTLzIgY29udHJvbGxlciBmb3VuZC4NDVsgICAgNS44ODI1NjJdIG1vdXNlZGV2OiBQUy8yIG1v
dXNlIGRldmljZSBjb21tb24gZm9yIGFsbCBtaWNlDQ1bICAgIDUuODg5MzIwXSBydGNfY21vcyAw
MDowMTogUlRDIGNhbiB3YWtlIGZyb20gUzQNDVsgICAgNS44OTQ1NTFdIHJ0Y19jbW9zIDAwOjAx
OiByZWdpc3RlcmVkIGFzIHJ0YzANDVsgICAgNS44OTk1MjhdIHJ0Y19jbW9zIDAwOjAxOiBzZXR0
aW5nIHN5c3RlbSBjbG9jayB0byAyMDI0LTAxLTE5VDA2OjM4OjQ0IFVUQyAoMTcwNTY0NjMyNCkN
DVsgICAgNS45MDg2MjldIHJ0Y19jbW9zIDAwOjAxOiBubyBhbGFybXMsIHkzaywgMTE0IGJ5dGVz
IG52cmFtDQ1bICAgIDUuOTE2NjYzXSBsZWR0cmlnLWNwdTogcmVnaXN0ZXJlZCB0byBpbmRpY2F0
ZSBhY3Rpdml0eSBvbiBDUFVzDQ1bICAgIDUuOTI4NjcwXSBORVQ6IFJlZ2lzdGVyZWQgUEZfSU5F
VDYgcHJvdG9jb2wgZmFtaWx5DQ1bICAgIDUuOTM3NzM4XSBTZWdtZW50IFJvdXRpbmcgd2l0aCBJ
UHY2DQ1bICAgIDUuOTQxNzk4XSBJbi1zaXR1IE9BTSAoSU9BTSkgd2l0aCBJUHY2DQ1bICAgIDUu
OTQ2MjUwXSBtaXA2OiBNb2JpbGUgSVB2Ng0NWyAgICA1Ljk0OTY2NV0gTkVUOiBSZWdpc3RlcmVk
IFBGX1BBQ0tFVCBwcm90b2NvbCBmYW1pbHkNDVsgICAgNS45NTU1MjJdIG1wbHNfZ3NvOiBNUExT
IEdTTyBzdXBwb3J0DQ1bICAgIDUuOTYyNDgyXSBJUEkgc2hvcnRoYW5kIGJyb2FkY2FzdDogZW5h
YmxlZA0NWyAgICA1Ljk2NzMwOF0gc2NoZWRfY2xvY2s6IE1hcmtpbmcgc3RhYmxlICg1ODY5ODgw
MTc2LCA5NzQwMzc2OCktPig4MjU2MzYzMTAyLCAtMjI4OTA3OTE1OCkNDVsgICAgNS45Nzc0Mjld
IHJlZ2lzdGVyZWQgdGFza3N0YXRzIHZlcnNpb24gMQ0NWyAgICA1Ljk4MjAwMl0gTG9hZGluZyBj
b21waWxlZC1pbiBYLjUwOSBjZXJ0aWZpY2F0ZXMNDVsgICAgNS45OTcwNTNdIExvYWRlZCBYLjUw
OSBjZXJ0ICdCdWlsZCB0aW1lIGF1dG9nZW5lcmF0ZWQga2VybmVsIGtleTogOGQyZTg5MWRiMmYz
ZDEyYmM4MWY2NmY2MzdkZTJmZDEzZGVjNzE3MCcNDVsgICAgNi4wMDk1ODNdIHpzd2FwOiBsb2Fk
ZWQgdXNpbmcgcG9vbCBsem8vemJ1ZA0NWyAgICA2LjAxNTA2OF0gS2V5IHR5cGUgLmZzY3J5cHQg
cmVnaXN0ZXJlZA0NWyAgICA2LjAxOTUwMV0gS2V5IHR5cGUgZnNjcnlwdC1wcm92aXNpb25pbmcg
cmVnaXN0ZXJlZA0NWyAgICA2LjAyNzk2M10gS2V5IHR5cGUgZW5jcnlwdGVkIHJlZ2lzdGVyZWQN
DVsgICAgNi4wMzI0ODRdIEFwcEFybW9yOiBBcHBBcm1vciBzaGExIHBvbGljeSBoYXNoaW5nIGVu
YWJsZWQNDVsgICAgNi4wMzg4NThdIGltYTogTm8gVFBNIGNoaXAgZm91bmQsIGFjdGl2YXRpbmcg
VFBNLWJ5cGFzcyENDVsgICAgNi4wNDUwMjBdIGltYTogQWxsb2NhdGVkIGhhc2ggYWxnb3JpdGht
OiBzaGEyNTYNDVsgICAgNi4wNTA0NDNdIGltYTogTm8gYXJjaGl0ZWN0dXJlIHBvbGljaWVzIGZv
dW5kDQ1bICAgIDYuMDU1NzAxXSBldm06IEluaXRpYWxpc2luZyBFVk0gZXh0ZW5kZWQgYXR0cmli
dXRlczoNDVsgICAgNi4wNjE2OTFdIGV2bTogc2VjdXJpdHkuc2VsaW51eA0NWyAgICA2LjA2NTU1
OV0gZXZtOiBzZWN1cml0eS5TTUFDSzY0IChkaXNhYmxlZCkNDVsgICAgNi4wNzA1NDJdIGV2bTog
c2VjdXJpdHkuU01BQ0s2NEVYRUMgKGRpc2FibGVkKQ0NWyAgICA2LjA3NTgyOV0gZXZtOiBzZWN1
cml0eS5TTUFDSzY0VFJBTlNNVVRFIChkaXNhYmxlZCkNDVsgICAgNi4wODE1MzJdIGV2bTogc2Vj
dXJpdHkuU01BQ0s2NE1NQVAgKGRpc2FibGVkKQ0NWyAgICA2LjA4Njc0NV0gZXZtOiBzZWN1cml0
eS5hcHBhcm1vcg0NWyAgICA2LjA5MDcxMV0gZXZtOiBzZWN1cml0eS5pbWENDVsgICAgNi4wOTQw
ODZdIGV2bTogc2VjdXJpdHkuY2FwYWJpbGl0eQ0NWyAgICA2LjA5ODI3Nl0gZXZtOiBITUFDIGF0
dHJzOiAweDENDVsgICAgNi4xNDgwNTRdIEZyZWVpbmcgdW51c2VkIGRlY3J5cHRlZCBtZW1vcnk6
IDIwMzZLDQ1bICAgIDYuMTU0MTExXSBGcmVlaW5nIHVudXNlZCBrZXJuZWwgaW1hZ2UgKGluaXRt
ZW0pIG1lbW9yeTogMjc5MksNDVsgICAgNi4xODk0ODldIFdyaXRlIHByb3RlY3RpbmcgdGhlIGtl
cm5lbCByZWFkLW9ubHkgZGF0YTogMjY2MjRrDQ1bICAgIDYuMTk3MTIxXSBGcmVlaW5nIHVudXNl
ZCBrZXJuZWwgaW1hZ2UgKHRleHQvcm9kYXRhIGdhcCkgbWVtb3J5OiAyMDQwSw0NWyAgICA2LjIw
NTExMV0gRnJlZWluZyB1bnVzZWQga2VybmVsIGltYWdlIChyb2RhdGEvZGF0YSBnYXApIG1lbW9y
eTogMTE4OEsNDVsgICAgNi4yMzI0MzBdIHg4Ni9tbTogQ2hlY2tlZCBXK1ggbWFwcGluZ3M6IHBh
c3NlZCwgbm8gVytYIHBhZ2VzIGZvdW5kLg0NWyAgICA2LjIzOTc5OV0gUnVuIC9pbml0IGFzIGlu
aXQgcHJvY2Vzcw0NTG9hZGluZywgcGxlYXNlIHdhaXQuLi4NDVN0YXJ0aW5nIHN5c3RlbWQtdWRl
dmQgdmVyc2lvbiAyNTIuMTktMX5kZWIxMnUxDQ1bICAgIDYuMzIxMzY2XSBncGlvX2dlbmVyaWM6
IG1vZHVsZSB2ZXJpZmljYXRpb24gZmFpbGVkOiBzaWduYXR1cmUgYW5kL29yIHJlcXVpcmVkIGtl
eSBtaXNzaW5nIC0gdGFpbnRpbmcga2VybmVsDQ1bICAgIDYuMzQxNjMyXSBNQUNzZWMgSUVFRSA4
MDIuMUFFDQ1bICAgIDYuMzQxODA1XSBwaWl4NF9zbWJ1cyAwMDAwOjAwOjE0LjA6IFNNQnVzIEhv
c3QgQ29udHJvbGxlciBhdCAweGIwMCwgcmV2aXNpb24gMA0NWyAgICA2LjM1MzkzNl0gcGlpeDRf
c21idXMgMDAwMDowMDoxNC4wOiBVc2luZyByZWdpc3RlciAweDAyIGZvciBTTUJ1cyBwb3J0IHNl
bGVjdGlvbg0NWyAgICA2LjM2Mjc1MF0gcGlpeDRfc21idXMgMDAwMDowMDoxNC4wOiBBdXhpbGlh
cnkgU01CdXMgSG9zdCBDb250cm9sbGVyIGF0IDB4YjIwDQ1bICAgIDYuMzc0NjE1XSBTQ1NJIHN1
YnN5c3RlbSBpbml0aWFsaXplZA0NWyAgICA2LjM4Mjc4NV0gQUNQSTogYnVzIHR5cGUgVVNCIHJl
Z2lzdGVyZWQNDVsgICAgNi4zODc0OThdIHVzYmNvcmU6IHJlZ2lzdGVyZWQgbmV3IGludGVyZmFj
ZSBkcml2ZXIgdXNiZnMNDVsgICAgNi4zOTM5MTJdIHVzYmNvcmU6IHJlZ2lzdGVyZWQgbmV3IGlu
dGVyZmFjZSBkcml2ZXIgaHViDQ1bICAgIDYuNDAwMjQxXSB1c2Jjb3JlOiByZWdpc3RlcmVkIG5l
dyBkZXZpY2UgZHJpdmVyIHVzYg0NWyAgICA2LjQxMDA2OV0gYXRsYW50aWMgMDAwMDo0MjowMC4w
OiBlbmFibGluZyBkZXZpY2UgKDAwMDAgLT4gMDAwMikNDVsgICAgNi40NjEwMDVdIGF0bGFudGlj
OiBEZXRlY3QgQVRMMkZXIDEwMzAwMjINDVsgICAgNi40ODcwODldIHI4MTY5IDAwMDA6ODY6MDAu
MDogZW5hYmxpbmcgZGV2aWNlICgwMDAwIC0+IDAwMDMpDQ1bICAgIDYuNDk0ODQ2XSB4aGNpX2hj
ZCAwMDAwOmMxOjAwLjQ6IHhIQ0kgSG9zdCBDb250cm9sbGVyDQ1bICAgIDYuNTAxMDQ4XSB4aGNp
X2hjZCAwMDAwOmMxOjAwLjQ6IG5ldyBVU0IgYnVzIHJlZ2lzdGVyZWQsIGFzc2lnbmVkIGJ1cyBu
dW1iZXIgMQ0NWyAgICA2LjUxMDA3Ml0geGhjaV9oY2QgMDAwMDpjMTowMC40OiBoY2MgcGFyYW1z
IDB4MDExOGZmYzUgaGNpIHZlcnNpb24gMHgxMjAgcXVpcmtzIDB4MDAwMDAwMDIwMDAwMDQxMA0N
WyAgICA2LjUyMDcwMV0gYWhjaSAwMDAwOjA3OjAwLjE6IEJBUiA1OiBjYW4ndCByZXNlcnZlIFtt
ZW0gMHhmMGUwMDAwMC0weGYwZTAwN2ZmXQ0NWyAgICA2LjUyMTE0NF0geGhjaV9oY2QgMDAwMDpj
MTowMC40OiB4SENJIEhvc3QgQ29udHJvbGxlcg0NWyAgICA2LjUyOTIwNF0gYWhjaTogcHJvYmUg
b2YgMDAwMDowNzowMC4xIGZhaWxlZCB3aXRoIGVycm9yIC0xNg0NWyAgICA2LjUzNTQwOV0geGhj
aV9oY2QgMDAwMDpjMTowMC40OiBuZXcgVVNCIGJ1cyByZWdpc3RlcmVkLCBhc3NpZ25lZCBidXMg
bnVtYmVyIDINDVsgICAgNi41NDIyNjJdIGFoY2kgMDAwMDo0YTowMC4wOiBTU1MgZmxhZyBzZXQs
IHBhcmFsbGVsIGJ1cyBzY2FuIGRpc2FibGVkDQ1bICAgIDYuNTUwNzQ2XSB4aGNpX2hjZCAwMDAw
OmMxOjAwLjQ6IEhvc3Qgc3VwcG9ydHMgVVNCIDMuMSBFbmhhbmNlZCBTdXBlclNwZWVkDQ1bICAg
IDYuNTU4NTQ1XSBhaGNpIDAwMDA6NGE6MDAuMDogQUhDSSAwMDAxLjAzMDEgMzIgc2xvdHMgNiBw
b3J0cyA2IEdicHMgMHhmIGltcGwgU0FUQSBtb2RlDQ1bICAgIDYuNTY2NzcxXSB1c2IgdXNiMTog
TmV3IFVTQiBkZXZpY2UgZm91bmQsIGlkVmVuZG9yPTFkNmIsIGlkUHJvZHVjdD0wMDAyLCBiY2RE
ZXZpY2U9IDYuMDENDVsgICAgNi41NzU4MjNdIGFoY2kgMDAwMDo0YTowMC4wOiBmbGFnczogNjRi
aXQgbmNxIHNudGYgc3RhZyBwbSBsZWQgY2xvIG9ubHkgcG1wIHBpbyBzbHVtIHBhcnQgc3hzIGRl
c28gc2FkbSBzZHMgYXBzdCANDVsgICAgNi41ODU2NThdIHVzYiB1c2IxOiBOZXcgVVNCIGRldmlj
ZSBzdHJpbmdzOiBNZnI9MywgUHJvZHVjdD0yLCBTZXJpYWxOdW1iZXI9MQ0NWyAgICA2LjU5ODMz
Ml0gc2NzaSBob3N0MDogYWhjaQ0NWyAgICA2LjYwNjUzOV0gdXNiIHVzYjE6IFByb2R1Y3Q6IHhI
Q0kgSG9zdCBDb250cm9sbGVyDQ1bICAgIDYuNjA2NTQwXSB1c2IgdXNiMTogTWFudWZhY3R1cmVy
OiBMaW51eCA2LjEuNjkgeGhjaS1oY2QNDVsgICAgNi42MDY1NDBdIHVzYiB1c2IxOiBTZXJpYWxO
dW1iZXI6IDAwMDA6YzE6MDAuNA0NWyAgICA2LjYwNjYzOF0gaHViIDEtMDoxLjA6IFVTQiBodWIg
Zm91bmQNDVsgICAgNi42MTAyMjddIHNjc2kgaG9zdDE6IGFoY2kNDVsgICAgNi42MTU4NTRdIGh1
YiAxLTA6MS4wOiAyIHBvcnRzIGRldGVjdGVkDQ1bICAgIDYuNjIyMzYzXSBzY3NpIGhvc3QyOiBh
aGNpDQ1bICAgIDYuNjI3NzE2XSB1c2IgdXNiMjogV2UgZG9uJ3Qga25vdyB0aGUgYWxnb3JpdGht
cyBmb3IgTFBNIGZvciB0aGlzIGhvc3QsIGRpc2FibGluZyBMUE0uDQ1bICAgIDYuNjMyMjMyXSBz
Y3NpIGhvc3QzOiBhaGNpDQ1bICAgIDYuNjM1MzE5XSB1c2IgdXNiMjogTmV3IFVTQiBkZXZpY2Ug
Zm91bmQsIGlkVmVuZG9yPTFkNmIsIGlkUHJvZHVjdD0wMDAzLCBiY2REZXZpY2U9IDYuMDENDVsg
ICAgNi42NDAwNjVdIHNjc2kgaG9zdDQ6IGFoY2kNDVsgICAgNi42NDMyMTJdIHVzYiB1c2IyOiBO
ZXcgVVNCIGRldmljZSBzdHJpbmdzOiBNZnI9MywgUHJvZHVjdD0yLCBTZXJpYWxOdW1iZXI9MQ0N
WyAgICA2LjY0MzIxNF0gdXNiIHVzYjI6IFByb2R1Y3Q6IHhIQ0kgSG9zdCBDb250cm9sbGVyDQ1b
ICAgIDYuNjQzMjE0XSB1c2IgdXNiMjogTWFudWZhY3R1cmVyOiBMaW51eCA2LjEuNjkgeGhjaS1o
Y2QNDVsgICAgNi42NDMyMTRdIHVzYiB1c2IyOiBTZXJpYWxOdW1iZXI6IDAwMDA6YzE6MDAuNA0N
WyAgICA2LjY0MzMwMl0gaHViIDItMDoxLjA6IFVTQiBodWIgZm91bmQNDVsgICAgNi42NTI4NDld
IHNjc2kgaG9zdDU6IGFoY2kNDVsgICAgNi42NTYxODRdIGh1YiAyLTA6MS4wOiAyIHBvcnRzIGRl
dGVjdGVkDQ1bICAgIDYuNjY1NDYyXSBhdGExOiBTQVRBIG1heCBVRE1BLzEzMyBhYmFyIG0xMDI0
QDB4YzA2ODAwMDAgcG9ydCAweGMwNjgwMTAwIGlycSAzMjgNDVsgICAgNi42Njg5NzldIHhoY2lf
aGNkIDAwMDA6ODI6MDAuMDogeEhDSSBIb3N0IENvbnRyb2xsZXINDVsgICAgNi42Nzc1MDRdIGF0
YTI6IFNBVEEgbWF4IFVETUEvMTMzIGFiYXIgbTEwMjRAMHhjMDY4MDAwMCBwb3J0IDB4YzA2ODAx
ODAgaXJxIDMyOA0NWyAgICA2LjY4MzMxMF0geGhjaV9oY2QgMDAwMDo4MjowMC4wOiBuZXcgVVNC
IGJ1cyByZWdpc3RlcmVkLCBhc3NpZ25lZCBidXMgbnVtYmVyIDMNDVsgICAgNi42ODk3MzRdIGF0
YTM6IFNBVEEgbWF4IFVETUEvMTMzIGFiYXIgbTEwMjRAMHhjMDY4MDAwMCBwb3J0IDB4YzA2ODAy
MDAgaXJxIDMyOA0NWyAgICA2LjY5NTIwOF0geGhjaV9oY2QgMDAwMDo4MjowMC4wOiBoY2MgcGFy
YW1zIDB4MjAwMDcxZTEgaGNpIHZlcnNpb24gMHgxMDAgcXVpcmtzIDB4MDAwMDAwMDAwMDAwMDQx
MA0NWyAgICA2LjY5OTU5OF0gYXRhNDogU0FUQSBtYXggVURNQS8xMzMgYWJhciBtMTAyNEAweGMw
NjgwMDAwIHBvcnQgMHhjMDY4MDI4MCBpcnEgMzI4DQ1bICAgIDYuNzAzNTY0XSB4aGNpX2hjZCAw
MDAwOjgyOjAwLjA6IHhIQ0kgSG9zdCBDb250cm9sbGVyDQ1bICAgIDYuNzA3NzQzXSBhdGE1OiBE
VU1NWQ0NWyAgICA2LjcxNjY5N10geGhjaV9oY2QgMDAwMDo4MjowMC4wOiBuZXcgVVNCIGJ1cyBy
ZWdpc3RlcmVkLCBhc3NpZ25lZCBidXMgbnVtYmVyIDQNDVsgICAgNi43MjI1OTldIGF0YTY6IERV
TU1ZDQ1bICAgIDYuNzI1NDc4XSBhdGxhbnRpYyAwMDAwOjQyOjAwLjAgZW5wNjZzMDogcmVuYW1l
ZCBmcm9tIGV0aDANDVsgICAgNi43MzExMzFdIHhoY2lfaGNkIDAwMDA6ODI6MDAuMDogSG9zdCBz
dXBwb3J0cyBVU0IgMy4wIFN1cGVyU3BlZWQNDVsgICAgNi44MDE2ODldIHVzYiB1c2IzOiBOZXcg
VVNCIGRldmljZSBmb3VuZCwgaWRWZW5kb3I9MWQ2YiwgaWRQcm9kdWN0PTAwMDIsIGJjZERldmlj
ZT0gNi4wMQ0NWyAgICA2LjgxMDk3OV0gdXNiIHVzYjM6IE5ldyBVU0IgZGV2aWNlIHN0cmluZ3M6
IE1mcj0zLCBQcm9kdWN0PTIsIFNlcmlhbE51bWJlcj0xDQ1bICAgIDYuODE5MjkxXSB1c2IgdXNi
MzogUHJvZHVjdDogeEhDSSBIb3N0IENvbnRyb2xsZXINDVsgICAgNi44MjQ5MTJdIHVzYiB1c2Iz
OiBNYW51ZmFjdHVyZXI6IExpbnV4IDYuMS42OSB4aGNpLWhjZA0NWyAgICA2LjgzMTAxMl0gdXNi
IHVzYjM6IFNlcmlhbE51bWJlcjogMDAwMDo4MjowMC4wDQ1bICAgIDYuODM2NDg4XSBodWIgMy0w
OjEuMDogVVNCIGh1YiBmb3VuZA0NWyAgICA2Ljg0MDc3NF0gaHViIDMtMDoxLjA6IDQgcG9ydHMg
ZGV0ZWN0ZWQNDVsgICAgNi44NDU1MTBdIHVzYiB1c2I0OiBXZSBkb24ndCBrbm93IHRoZSBhbGdv
cml0aG1zIGZvciBMUE0gZm9yIHRoaXMgaG9zdCwgZGlzYWJsaW5nIExQTS4NDVsgICAgNi44NTQ2
MjldIHVzYiB1c2I0OiBOZXcgVVNCIGRldmljZSBmb3VuZCwgaWRWZW5kb3I9MWQ2YiwgaWRQcm9k
dWN0PTAwMDMsIGJjZERldmljZT0gNi4wMQ0NWyAgICA2Ljg2Mzk1Ml0gdXNiIHVzYjQ6IE5ldyBV
U0IgZGV2aWNlIHN0cmluZ3M6IE1mcj0zLCBQcm9kdWN0PTIsIFNlcmlhbE51bWJlcj0xDQ1bICAg
IDYuODcyMTMzXSB1c2IgdXNiNDogUHJvZHVjdDogeEhDSSBIb3N0IENvbnRyb2xsZXINDVsgICAg
Ni44Nzc3MjldIHVzYiB1c2I0OiBNYW51ZmFjdHVyZXI6IExpbnV4IDYuMS42OSB4aGNpLWhjZA0N
WyAgICA2Ljg4Mzg1N10gdXNiIHVzYjQ6IFNlcmlhbE51bWJlcjogMDAwMDo4MjowMC4wDQ1bICAg
IDYuODg5MzY2XSBodWIgNC0wOjEuMDogVVNCIGh1YiBmb3VuZA0NWyAgICA2Ljg5MzY0Ml0gaHVi
IDQtMDoxLjA6IDQgcG9ydHMgZGV0ZWN0ZWQNDVsgICAgNi44OTgzNDRdIHhoY2lfaGNkIDAwMDA6
ODM6MDAuMDogeEhDSSBIb3N0IENvbnRyb2xsZXINDVsgICAgNi45MDQzMTRdIHhoY2lfaGNkIDAw
MDA6ODM6MDAuMDogbmV3IFVTQiBidXMgcmVnaXN0ZXJlZCwgYXNzaWduZWQgYnVzIG51bWJlciA1
DQ1bICAgIDYuOTIxNzY0XSByODE2OSAwMDAwOjg2OjAwLjAgZXRoMDogUlRMODE2OGV2bC84MTEx
ZXZsLCAwMDoxMzozYjoxMjo3MTphMCwgWElEIDJjOSwgSVJRIDMxNw0NWyAgICA2LjkzMTYxOF0g
cjgxNjkgMDAwMDo4NjowMC4wIGV0aDA6IGp1bWJvIGZlYXR1cmVzIFtmcmFtZXM6IDkxOTQgYnl0
ZXMsIHR4IGNoZWNrc3VtbWluZzoga29dDQ1bICAgIDYuOTQxMzY4XSByODE2OSAwMDAwOjg3OjAw
LjA6IGVuYWJsaW5nIGRldmljZSAoMDAwMCAtPiAwMDAzKQ0NWyAgICA2Ljk1MTM4Nl0gcjgxNjkg
MDAwMDo4NzowMC4wIGV0aDE6IFJUTDgxNjhldmwvODExMWV2bCwgMDA6MTM6M2I6MTI6NzE6YTEs
IFhJRCAyYzksIElSUSAzMzkNDVsgICAgNi45NjEwMjNdIHI4MTY5IDAwMDA6ODc6MDAuMCBldGgx
OiBqdW1ibyBmZWF0dXJlcyBbZnJhbWVzOiA5MTk0IGJ5dGVzLCB0eCBjaGVja3N1bW1pbmc6IGtv
XQ0NWyAgICA2Ljk2ODQ0MV0geGhjaV9oY2QgMDAwMDo4MzowMC4wOiBoY2MgcGFyYW1zIDB4MDIw
MGVmODAgaGNpIHZlcnNpb24gMHgxMTAgcXVpcmtzIDB4MDAwMDAwMDAwMDgwMDAxMA0NWyAgICA2
Ljk3MDk2Ml0gcjgxNjkgMDAwMDo0NzowMC4wOiBlbmFibGluZyBkZXZpY2UgKDAwMDAgLT4gMDAw
MykNDVsgICAgNi45ODE5NDBdIHhoY2lfaGNkIDAwMDA6ODM6MDAuMDogeEhDSSBIb3N0IENvbnRy
b2xsZXINDVsgICAgNi45OTQwMzBdIHhoY2lfaGNkIDAwMDA6ODM6MDAuMDogbmV3IFVTQiBidXMg
cmVnaXN0ZXJlZCwgYXNzaWduZWQgYnVzIG51bWJlciA2DQ1bICAgIDcuMDAyNDQ0XSB4aGNpX2hj
ZCAwMDAwOjgzOjAwLjA6IEhvc3Qgc3VwcG9ydHMgVVNCIDMuMiBFbmhhbmNlZCBTdXBlclNwZWVk
DQ1bICAgIDcuMDAzMjI5XSByODE2OSAwMDAwOjQ3OjAwLjAgZXRoMjogUlRMODEyNUIsIDljOjZi
OjAwOjNkOjExOjk5LCBYSUQgNjQxLCBJUlEgMzQ4DQ1bICAgIDcuMDEwNDY2XSB1c2IgdXNiNTog
TmV3IFVTQiBkZXZpY2UgZm91bmQsIGlkVmVuZG9yPTFkNmIsIGlkUHJvZHVjdD0wMDAyLCBiY2RE
ZXZpY2U9IDYuMDENDVsgICAgNy4wMTkzNTddIHI4MTY5IDAwMDA6NDc6MDAuMCBldGgyOiBqdW1i
byBmZWF0dXJlcyBbZnJhbWVzOiA5MTk0IGJ5dGVzLCB0eCBjaGVja3N1bW1pbmc6IGtvXQ0NWyAg
ICA3LjAzODM5M10gdXNiIHVzYjU6IE5ldyBVU0IgZGV2aWNlIHN0cmluZ3M6IE1mcj0zLCBQcm9k
dWN0PTIsIFNlcmlhbE51bWJlcj0xDQ1bICAgIDcuMDQ2NjkxXSB1c2IgdXNiNTogUHJvZHVjdDog
eEhDSSBIb3N0IENvbnRyb2xsZXINDVsgICAgNy4wNTIyOTNdIHVzYiB1c2I1OiBNYW51ZmFjdHVy
ZXI6IExpbnV4IDYuMS42OSB4aGNpLWhjZA0NWyAgICA3LjA1ODM3M10gdXNiIHVzYjU6IFNlcmlh
bE51bWJlcjogMDAwMDo4MzowMC4wDQ1bICAgIDcuMDYzNzUxXSBodWIgNS0wOjEuMDogVVNCIGh1
YiBmb3VuZA0NWyAgICA3LjA2Nzk5OV0gaHViIDUtMDoxLjA6IDEgcG9ydCBkZXRlY3RlZA0NWyAg
ICA3LjA3MjYyMF0gdXNiIHVzYjY6IFdlIGRvbid0IGtub3cgdGhlIGFsZ29yaXRobXMgZm9yIExQ
TSBmb3IgdGhpcyBob3N0LCBkaXNhYmxpbmcgTFBNLg0NWyAgICA3LjA4MTcxMl0gdXNiIHVzYjY6
IE5ldyBVU0IgZGV2aWNlIGZvdW5kLCBpZFZlbmRvcj0xZDZiLCBpZFByb2R1Y3Q9MDAwMywgYmNk
RGV2aWNlPSA2LjAxDQ1bICAgIDcuMDkxMTI5XSB1c2IgdXNiNjogTmV3IFVTQiBkZXZpY2Ugc3Ry
aW5nczogTWZyPTMsIFByb2R1Y3Q9MiwgU2VyaWFsTnVtYmVyPTENDVsgICAgNy4wOTkzOTRdIHVz
YiB1c2I2OiBQcm9kdWN0OiB4SENJIEhvc3QgQ29udHJvbGxlcg0NWyAgICA3LjEwNDk1OV0gdXNi
IHVzYjY6IE1hbnVmYWN0dXJlcjogTGludXggNi4xLjY5IHhoY2ktaGNkDQ1bICAgIDcuMTExMDY3
XSB1c2IgdXNiNjogU2VyaWFsTnVtYmVyOiAwMDAwOjgzOjAwLjANDVsgICAgNy4xMTY1MDRdIGh1
YiA2LTA6MS4wOiBVU0IgaHViIGZvdW5kDQ1bICAgIDcuMTIwNjc1XSBodWIgNi0wOjEuMDogMSBw
b3J0IGRldGVjdGVkDQ1bICAgIDcuMTI1MjMwXSB4aGNpX2hjZCAwMDAwOjA2OjAwLjQ6IGluaXQg
MDAwMDowNjowMC40IGZhaWwsIC0xNg0NWyAgICA3LjEzMTc3OF0gdXNiIDMtMjogbmV3IGhpZ2gt
c3BlZWQgVVNCIGRldmljZSBudW1iZXIgMiB1c2luZyB4aGNpX2hjZA0NWyAgICA3LjEzNzQzN10g
eGhjaV9oY2Q6IHByb2JlIG9mIDAwMDA6MDY6MDAuNCBmYWlsZWQgd2l0aCBlcnJvciAtMTYNDVsg
ICAgNy4xNDYxNjZdIHhoY2lfaGNkIDAwMDA6NDk6MDAuMDogeEhDSSBIb3N0IENvbnRyb2xsZXIN
DVsgICAgNy4xNTE5OTZdIHhoY2lfaGNkIDAwMDA6NDk6MDAuMDogbmV3IFVTQiBidXMgcmVnaXN0
ZXJlZCwgYXNzaWduZWQgYnVzIG51bWJlciA3DQ1bICAgIDcuMTk3NDU4XSBhdGExOiBTQVRBIGxp
bmsgdXAgNi4wIEdicHMgKFNTdGF0dXMgMTMzIFNDb250cm9sIDMwMCkNDVsgICAgNy4yMDU1NDld
IGF0YTEuMDA6IEFUQS05OiBTVDMwMDBETTAwOC0yRE0xNjYsIENDMjYsIG1heCBVRE1BLzEzMw0N
WyAgICA3LjIxMzA1Nl0gYXRhMS4wMDogNTg2MDUzMzE2OCBzZWN0b3JzLCBtdWx0aSAxNjogTEJB
NDggTkNRIChkZXB0aCAzMiksIEFBDQ1bICAgIDcuMjE2MzkxXSB4aGNpX2hjZCAwMDAwOjQ5OjAw
LjA6IGhjYyBwYXJhbXMgMHgwMjAwZWY4MSBoY2kgdmVyc2lvbiAweDExMCBxdWlya3MgMHgwMDAw
MDAwMDAwMDAwNDEwDQ1bICAgIDcuMjIyMjEyXSBhdGExLjAwOiBjb25maWd1cmVkIGZvciBVRE1B
LzEzMw0NWyAgICA3LjIzMjA1MV0geGhjaV9oY2QgMDAwMDo0OTowMC4wOiB4SENJIEhvc3QgQ29u
dHJvbGxlcg0NWyAgICA3LjIzNjQ2Ml0gc2NzaSAwOjA6MDowOiBEaXJlY3QtQWNjZXNzICAgICBB
VEEgICAgICBTVDMwMDBETTAwOC0yRE0xIENDMjYgUFE6IDAgQU5TSTogNQ0NWyAgICA3LjI0MjIz
N10geGhjaV9oY2QgMDAwMDo0OTowMC4wOiBuZXcgVVNCIGJ1cyByZWdpc3RlcmVkLCBhc3NpZ25l
ZCBidXMgbnVtYmVyIDgNDVsgICAgNy4yNDIyMzhdIHhoY2lfaGNkIDAwMDA6NDk6MDAuMDogSG9z
dCBzdXBwb3J0cyBVU0IgMy4xIEVuaGFuY2VkIFN1cGVyU3BlZWQNDVsgICAgNy4yNDIyNzBdIHVz
YiB1c2I3OiBOZXcgVVNCIGRldmljZSBmb3VuZCwgaWRWZW5kb3I9MWQ2YiwgaWRQcm9kdWN0PTAw
MDIsIGJjZERldmljZT0gNi4wMQ0NWyAgICA3LjI3NzE5MF0gdXNiIHVzYjc6IE5ldyBVU0IgZGV2
aWNlIHN0cmluZ3M6IE1mcj0zLCBQcm9kdWN0PTIsIFNlcmlhbE51bWJlcj0xDQ1bICAgIDcuMjg1
NTY5XSB1c2IgdXNiNzogUHJvZHVjdDogeEhDSSBIb3N0IENvbnRyb2xsZXINDVsgICAgNy4yOTEx
OTFdIHVzYiB1c2I3OiBNYW51ZmFjdHVyZXI6IExpbnV4IDYuMS42OSB4aGNpLWhjZA0NWyAgICA3
LjI5MzI1MF0gdXNiIDMtMjogTmV3IFVTQiBkZXZpY2UgZm91bmQsIGlkVmVuZG9yPTIxMDksIGlk
UHJvZHVjdD0yODIyLCBiY2REZXZpY2U9IDcuMzQNDVsgICAgNy4yOTczMzhdIHVzYiB1c2I3OiBT
ZXJpYWxOdW1iZXI6IDAwMDA6NDk6MDAuMA0NWyAgICA3LjI5NzQ1MV0gaHViIDctMDoxLjA6IFVT
QiBodWIgZm91bmQNDVsgICAgNy4zMDY2MTddIHVzYiAzLTI6IE5ldyBVU0IgZGV2aWNlIHN0cmlu
Z3M6IE1mcj0xLCBQcm9kdWN0PTIsIFNlcmlhbE51bWJlcj0zDQ1bICAgIDcuMzExOTE0XSBodWIg
Ny0wOjEuMDogMTIgcG9ydHMgZGV0ZWN0ZWQNDVsgICAgNy4zMTYyMTNdIHVzYiAzLTI6IFByb2R1
Y3Q6IFVTQjIuMCBIdWIgICAgICAgICAgICAgDQ1bICAgIDcuMzI5OTEzXSB1c2IgdXNiODogV2Ug
ZG9uJ3Qga25vdyB0aGUgYWxnb3JpdGhtcyBmb3IgTFBNIGZvciB0aGlzIGhvc3QsIGRpc2FibGlu
ZyBMUE0uDQ1bICAgIDcuMzM0NzM1XSB1c2IgMy0yOiBNYW51ZmFjdHVyZXI6IFZJQSBMYWJzLCBJ
bmMuICAgICAgICAgDQ1bICAgIDcuMzQzNzk0XSB1c2IgdXNiODogTmV3IFVTQiBkZXZpY2UgZm91
bmQsIGlkVmVuZG9yPTFkNmIsIGlkUHJvZHVjdD0wMDAzLCBiY2REZXZpY2U9IDYuMDENDVsgICAg
Ny4zNTAwNzBdIHVzYiAzLTI6IFNlcmlhbE51bWJlcjogMDAwMDAwMDAxDQ1bICAgIDcuMzU5NDk4
XSB1c2IgdXNiODogTmV3IFVTQiBkZXZpY2Ugc3RyaW5nczogTWZyPTMsIFByb2R1Y3Q9MiwgU2Vy
aWFsTnVtYmVyPTENDVsgICAgNy4zNjUyMTldIGh1YiAzLTI6MS4wOiBVU0IgaHViIGZvdW5kDQ1b
ICAgIDcuMzcyNTI2XSB1c2IgdXNiODogUHJvZHVjdDogeEhDSSBIb3N0IENvbnRyb2xsZXINDVsg
ICAgNy4zNzcwNDNdIGh1YiAzLTI6MS4wOiA0IHBvcnRzIGRldGVjdGVkDQ1bICAgIDcuMzgyMjk3
XSB1c2IgdXNiODogTWFudWZhY3R1cmVyOiBMaW51eCA2LjEuNjkgeGhjaS1oY2QNDVsgICAgNy4z
ODIyOTddIHVzYiB1c2I4OiBTZXJpYWxOdW1iZXI6IDAwMDA6NDk6MDAuMA0NWyAgICA3LjM4MjQy
MV0gaHViIDgtMDoxLjA6IFVTQiBodWIgZm91bmQNDVsgICAgNy40MDI2MDNdIGh1YiA4LTA6MS4w
OiA2IHBvcnRzIGRldGVjdGVkDQ1bICAgIDcuNDA5NDQxXSB1c2I6IHBvcnQgcG93ZXIgbWFuYWdl
bWVudCBtYXkgYmUgdW5yZWxpYWJsZQ0NWyAgICA3LjQ0OTE1M10gdXNiIDQtMjogbmV3IFN1cGVy
U3BlZWQgVVNCIGRldmljZSBudW1iZXIgMiB1c2luZyB4aGNpX2hjZA0NWyAgICA3LjY4MTQzMV0g
dXNiIDctNTogbmV3IGhpZ2gtc3BlZWQgVVNCIGRldmljZSBudW1iZXIgMiB1c2luZyB4aGNpX2hj
ZA0NWyAgICA3LjcyNTQ0M10gYXRhMjogU0FUQSBsaW5rIHVwIDYuMCBHYnBzIChTU3RhdHVzIDEz
MyBTQ29udHJvbCAzMDApDQ1bICAgIDcuNzMzNDMwXSBhdGEyLjAwOiBBVEEtODogU1QxNTAwREww
MDMtOVZUMTZMLCBDQzMyLCBtYXggVURNQS8xMzMNDVsgICAgNy43NDA3OTldIGF0YTIuMDA6IDI5
MzAyNzcxNjggc2VjdG9ycywgbXVsdGkgMTY6IExCQTQ4IE5DUSAoZGVwdGggMzIpDQ1bICAgIDcu
NzQ5MTc1XSBhdGEyLjAwOiBjb25maWd1cmVkIGZvciBVRE1BLzEzMw0NWyAgICA3Ljc1NDM4NF0g
c2NzaSAxOjA6MDowOiBEaXJlY3QtQWNjZXNzICAgICBBVEEgICAgICBTVDE1MDBETDAwMy05VlQx
IENDMzIgUFE6IDAgQU5TSTogNQ0NWyAgICA3Ljg1Mzk3NV0gdXNiIDQtMjogTmV3IFVTQiBkZXZp
Y2UgZm91bmQsIGlkVmVuZG9yPTIxMDksIGlkUHJvZHVjdD0wODIyLCBiY2REZXZpY2U9IDcuMzQN
DVsgICAgNy44NjMyMDBdIHVzYiA0LTI6IE5ldyBVU0IgZGV2aWNlIHN0cmluZ3M6IE1mcj0xLCBQ
cm9kdWN0PTIsIFNlcmlhbE51bWJlcj0zDQ1bICAgIDcuODcxMzczXSB1c2IgNC0yOiBQcm9kdWN0
OiBVU0IzLjEgSHViICAgICAgICAgICAgIA0NWyAgICA3Ljg3NzExMF0gdXNiIDQtMjogTWFudWZh
Y3R1cmVyOiBWSUEgTGFicywgSW5jLiAgICAgICAgIA0NWyAgICA3Ljg4MzM0OV0gdXNiIDQtMjog
U2VyaWFsTnVtYmVyOiAwMDAwMDAwMDENDVsgICAgNy44ODg4MzhdIGh1YiA0LTI6MS4wOiBVU0Ig
aHViIGZvdW5kDQ1bICAgIDcuODkzMzIzXSBodWIgNC0yOjEuMDogNCBwb3J0cyBkZXRlY3RlZA0N
WyAgICA3LjkyNTc5NV0gdXNiIDctNTogTmV3IFVTQiBkZXZpY2UgZm91bmQsIGlkVmVuZG9yPTA0
NTEsIGlkUHJvZHVjdD04MDQzLCBiY2REZXZpY2U9IDEuMDANDVsgICAgNy45MzQ5NDRdIHVzYiA3
LTU6IE5ldyBVU0IgZGV2aWNlIHN0cmluZ3M6IE1mcj0wLCBQcm9kdWN0PTAsIFNlcmlhbE51bWJl
cj0xDQ1bICAgIDcuOTQzMTI3XSB1c2IgNy01OiBTZXJpYWxOdW1iZXI6IDE4MDUwMDc5QkZCOQ0N
WyAgICA3Ljk1NTk3Nl0gaHViIDctNToxLjA6IFVTQiBodWIgZm91bmQNDVsgICAgNy45NjI3ODVd
IGh1YiA3LTU6MS4wOiA0IHBvcnRzIGRldGVjdGVkDQ1bICAgIDguMDQyMDk0XSB1c2IgOC01OiBu
ZXcgU3VwZXJTcGVlZCBVU0IgZGV2aWNlIG51bWJlciAyIHVzaW5nIHhoY2lfaGNkDQ1bICAgIDgu
MDcxMDM0XSB1c2IgOC01OiBOZXcgVVNCIGRldmljZSBmb3VuZCwgaWRWZW5kb3I9MDQ1MSwgaWRQ
cm9kdWN0PTgwNDEsIGJjZERldmljZT0gMS4wMA0NWyAgICA4LjA4MDEzN10gdXNiIDgtNTogTmV3
IFVTQiBkZXZpY2Ugc3RyaW5nczogTWZyPTAsIFByb2R1Y3Q9MCwgU2VyaWFsTnVtYmVyPTANDVsg
ICAgOC4wOTU2MDFdIGh1YiA4LTU6MS4wOiBVU0IgaHViIGZvdW5kDQ1bICAgIDguMDk5ODU0XSBo
dWIgOC01OjEuMDogNCBwb3J0cyBkZXRlY3RlZA0NWyAgICA4LjEyNTUxN10gdXNiIDQtMzogbmV3
IFN1cGVyU3BlZWQgVVNCIGRldmljZSBudW1iZXIgMyB1c2luZyB4aGNpX2hjZA0NWyAgICA4LjE1
MDQ2OV0gdXNiIDQtMzogTmV3IFVTQiBkZXZpY2UgZm91bmQsIGlkVmVuZG9yPTEwNTgsIGlkUHJv
ZHVjdD0wODIwLCBiY2REZXZpY2U9MTAuMTINDVsgICAgOC4xNTk1OTddIHVzYiA0LTM6IE5ldyBV
U0IgZGV2aWNlIHN0cmluZ3M6IE1mcj0xLCBQcm9kdWN0PTIsIFNlcmlhbE51bWJlcj01DQ1bICAg
IDguMTY3Njk5XSB1c2IgNC0zOiBQcm9kdWN0OiBNeSBQYXNzcG9ydCAwODIwDQ1bICAgIDguMTcy
NzU5XSB1c2IgNC0zOiBNYW51ZmFjdHVyZXI6IFdlc3Rlcm4gRGlnaXRhbA0NWyAgICA4LjE3ODE4
N10gdXNiIDQtMzogU2VyaWFsTnVtYmVyOiA1NzU4NTMzMTQ1NDMzNDRBMzI1NDM1NDMNDVsgICAg
OC4yMzc0NTBdIGF0YTM6IFNBVEEgbGluayB1cCA2LjAgR2JwcyAoU1N0YXR1cyAxMzMgU0NvbnRy
b2wgMzAwKQ0NWyAgICA4LjI0NTI2Nl0gYXRhMy4wMDogQVRBLTk6IFNUMzAwMERNMDA4LTJETTE2
NiwgQ0MyNiwgbWF4IFVETUEvMTMzDQ1bICAgIDguMjUyNjAxXSBhdGEzLjAwOiA1ODYwNTMzMTY4
IHNlY3RvcnMsIG11bHRpIDE2OiBMQkE0OCBOQ1EgKGRlcHRoIDMyKSwgQUENDVsgICAgOC4yNjE4
MDhdIGF0YTMuMDA6IGNvbmZpZ3VyZWQgZm9yIFVETUEvMTMzDQ1bICAgIDguMjY1NDIwXSB1c2Ig
Ny03OiBuZXcgaGlnaC1zcGVlZCBVU0IgZGV2aWNlIG51bWJlciAzIHVzaW5nIHhoY2lfaGNkDQ1b
ICAgIDguMjY2OTk4XSBzY3NpIDI6MDowOjA6IERpcmVjdC1BY2Nlc3MgICAgIEFUQSAgICAgIFNU
MzAwMERNMDA4LTJETTEgQ0MyNiBQUTogMCBBTlNJOiA1DQ1bICAgIDguMzA5NDk1XSB1c2IgNC00
OiBuZXcgU3VwZXJTcGVlZCBVU0IgZGV2aWNlIG51bWJlciA0IHVzaW5nIHhoY2lfaGNkDQ1bICAg
IDguMzM0MzA0XSB1c2IgNC00OiBOZXcgVVNCIGRldmljZSBmb3VuZCwgaWRWZW5kb3I9MGJjMiwg
aWRQcm9kdWN0PWFjMjUsIGJjZERldmljZT0gMS4wMA0NWyAgICA4LjM0MzM3N10gdXNiIDQtNDog
TmV3IFVTQiBkZXZpY2Ugc3RyaW5nczogTWZyPTIsIFByb2R1Y3Q9MywgU2VyaWFsTnVtYmVyPTEN
DVsgICAgOC4zNTE1ODBdIHVzYiA0LTQ6IFByb2R1Y3Q6IEJVUCBQb3J0YWJsZQ0NWyAgICA4LjM1
NjE5M10gdXNiIDQtNDogTWFudWZhY3R1cmVyOiBTZWFnYXRlDQ1bICAgIDguMzYwOTE0XSB1c2Ig
NC00OiBTZXJpYWxOdW1iZXI6IDAwMDAwMDAwTkFCOUs0R00NDVsgICAgOC40NjE0NDVdIHVzYiAz
LTIuMjogbmV3IGxvdy1zcGVlZCBVU0IgZGV2aWNlIG51bWJlciAzIHVzaW5nIHhoY2lfaGNkDQ1b
ICAgIDguNTA2ODAzXSB1c2IgNy03OiBOZXcgVVNCIGRldmljZSBmb3VuZCwgaWRWZW5kb3I9MDY3
YiwgaWRQcm9kdWN0PTI1ODYsIGJjZERldmljZT0gMC4wMA0NWyAgICA4LjUxNjA1N10gdXNiIDct
NzogTmV3IFVTQiBkZXZpY2Ugc3RyaW5nczogTWZyPTEsIFByb2R1Y3Q9MywgU2VyaWFsTnVtYmVy
PTANDVsgICAgOC41MjQxMjBdIHVzYiA3LTc6IFByb2R1Y3Q6IFVTQiAyLjAgSHViICAgICAgICAg
ICAgDQ1bICAgIDguNTI5ODY3XSB1c2IgNy03OiBNYW51ZmFjdHVyZXI6IFVTQiBEZXZpY2UgIA0N
WyAgICA4LjU0Mzk3Nl0gaHViIDctNzoxLjA6IFVTQiBodWIgZm91bmQNDVsgICAgOC41NTA3OTVd
IGh1YiA3LTc6MS4wOiA0IHBvcnRzIGRldGVjdGVkDQ1bICAgIDguNjIyMDM1XSB1c2IgMy0yLjI6
IE5ldyBVU0IgZGV2aWNlIGZvdW5kLCBpZFZlbmRvcj0xYmNmLCBpZFByb2R1Y3Q9MDAwNSwgYmNk
RGV2aWNlPSAwLjE0DQ1bICAgIDguNjMxMzYwXSB1c2IgMy0yLjI6IE5ldyBVU0IgZGV2aWNlIHN0
cmluZ3M6IE1mcj0wLCBQcm9kdWN0PTIsIFNlcmlhbE51bWJlcj0wDQ1bICAgIDguNjM5NjI5XSB1
c2IgMy0yLjI6IFByb2R1Y3Q6IFVTQiBPcHRpY2FsIE1vdXNlDQ1bICAgIDguNzU3NDUxXSBhdGE0
OiBTQVRBIGxpbmsgdXAgNi4wIEdicHMgKFNTdGF0dXMgMTMzIFNDb250cm9sIDMwMCkNDVsgICAg
OC43NjE0MjFdIHVzYiA3LTg6IG5ldyBoaWdoLXNwZWVkIFVTQiBkZXZpY2UgbnVtYmVyIDQgdXNp
bmcgeGhjaV9oY2QNDVsgICAgOC43NzU4OTRdIGF0YTQuMDA6IEFUQS04OiBPQ1otVkVSVEVYMyBN
SSwgMi4yNSwgbWF4IFVETUEvMTMzDQ1bICAgIDguNzc3NDE5XSB1c2IgMy0yLjM6IG5ldyBmdWxs
LXNwZWVkIFVTQiBkZXZpY2UgbnVtYmVyIDQgdXNpbmcgeGhjaV9oY2QNDVsgICAgOC43ODI2NDZd
IGF0YTQuMDA6IDQ2ODg2MjEyOCBzZWN0b3JzLCBtdWx0aSAxNjogTEJBNDggTkNRIChkZXB0aCAz
MiksIEFBDQ1bICAgIDguODA2Mjk2XSBhdGE0LjAwOiBjb25maWd1cmVkIGZvciBVRE1BLzEzMw0N
WyAgICA4LjgxMTYwNF0gc2NzaSAzOjA6MDowOiBEaXJlY3QtQWNjZXNzICAgICBBVEEgICAgICBP
Q1otVkVSVEVYMyBNSSAgIDIuMjUgUFE6IDAgQU5TSTogNQ0NWyAgICA4LjgyMzk4M10gbnZtZSBu
dm1lMDogcGNpIGZ1bmN0aW9uIDAwMDA6ODE6MDAuMA0NWyAgICA4LjgyOTYzOF0gbnZtZSBudm1l
MTogcGNpIGZ1bmN0aW9uIDAwMDA6NDM6MDAuMA0NWyAgICA4LjgzMzg2MF0gbnZtZSBudm1lMDog
U2h1dGRvd24gdGltZW91dCBzZXQgdG8gMTAgc2Vjb25kcw0NWyAgICA4LjgzNTA2Ml0gbnZtZSBu
dm1lMjogcGNpIGZ1bmN0aW9uIDAwMDA6NDg6MDAuMA0NWyAgICA4Ljg0MTU5M10gc2QgMTowOjA6
MDogW3NkYV0gMjkzMDI3NzE2OCA1MTItYnl0ZSBsb2dpY2FsIGJsb2NrczogKDEuNTAgVEIvMS4z
NiBUaUIpDQ1bICAgIDguODQxNjQ0XSBzZCAzOjA6MDowOiBbc2RiXSA0Njg4NjIxMjggNTEyLWJ5
dGUgbG9naWNhbCBibG9ja3M6ICgyNDAgR0IvMjI0IEdpQikNDVsgICAgOC44NDE2NjZdIHNkIDA6
MDowOjA6IFtzZGRdIDU4NjA1MzMxNjggNTEyLWJ5dGUgbG9naWNhbCBibG9ja3M6ICgzLjAwIFRC
LzIuNzMgVGlCKQ0NWyAgICA4Ljg0MTY3MV0gc2QgMDowOjA6MDogW3NkZF0gNDA5Ni1ieXRlIHBo
eXNpY2FsIGJsb2Nrcw0NWyAgICA4Ljg0MTY3Ml0gc2QgMzowOjA6MDogW3NkYl0gV3JpdGUgUHJv
dGVjdCBpcyBvZmYNDVsgICAgOC44NDE2ODBdIHNkIDA6MDowOjA6IFtzZGRdIFdyaXRlIFByb3Rl
Y3QgaXMgb2ZmDQ1bICAgIDguODQxNjgxXSBzZCAyOjA6MDowOiBbc2RjXSA1ODYwNTMzMTY4IDUx
Mi1ieXRlIGxvZ2ljYWwgYmxvY2tzOiAoMy4wMCBUQi8yLjczIFRpQikNDVsgICAgOC44NDE2ODRd
IHNkIDI6MDowOjA6IFtzZGNdIDQwOTYtYnl0ZSBwaHlzaWNhbCBibG9ja3MNDVsgICAgOC44NDE2
OTddIHNkIDA6MDowOjA6IFtzZGRdIFdyaXRlIGNhY2hlOiBlbmFibGVkLCByZWFkIGNhY2hlOiBl
bmFibGVkLCBkb2Vzbid0IHN1cHBvcnQgRFBPIG9yIEZVQQ0NWyAgICA4Ljg0MTcxMV0gc2QgMjow
OjA6MDogW3NkY10gV3JpdGUgUHJvdGVjdCBpcyBvZmYNDVsgICAgOC44NDE3MTVdIHNkIDA6MDow
OjA6IFtzZGRdIFByZWZlcnJlZCBtaW5pbXVtIEkvTyBzaXplIDQwOTYgYnl0ZXMNDVsgICAgOC44
NDE3MjBdIHNkIDM6MDowOjA6IFtzZGJdIFdyaXRlIGNhY2hlOiBlbmFibGVkLCByZWFkIGNhY2hl
OiBlbmFibGVkLCBkb2Vzbid0IHN1cHBvcnQgRFBPIG9yIEZVQQ0NWyAgICA4Ljg0MTc4M10gc2Qg
MjowOjA6MDogW3NkY10gV3JpdGUgY2FjaGU6IGVuYWJsZWQsIHJlYWQgY2FjaGU6IGVuYWJsZWQs
IGRvZXNuJ3Qgc3VwcG9ydCBEUE8gb3IgRlVBDQ1bICAgIDguODQxNzk4XSBzZCAzOjA6MDowOiBb
c2RiXSBQcmVmZXJyZWQgbWluaW11bSBJL08gc2l6ZSA1MTIgYnl0ZXMNDVsgICAgOC44NDE4NDZd
IHNkIDI6MDowOjA6IFtzZGNdIFByZWZlcnJlZCBtaW5pbXVtIEkvTyBzaXplIDQwOTYgYnl0ZXMN
DVsgICAgOC44NDIyOTNdIG52bWUgbnZtZTE6IG1pc3Npbmcgb3IgaW52YWxpZCBTVUJOUU4gZmll
bGQuDQ1bICAgIDguODQyMzA1XSBudm1lIG52bWUxOiBTaHV0ZG93biB0aW1lb3V0IHNldCB0byA4
IHNlY29uZHMNDVsgICAgOC44NDMzMDJdICBzZGI6IHNkYjENDVsgICAgOC44NDMzNzVdIHNkIDM6
MDowOjA6IFtzZGJdIEF0dGFjaGVkIFNDU0kgZGlzaw0NWyAgICA4Ljg1MjM1NF0gbnZtZSBudm1l
MjogU2h1dGRvd24gdGltZW91dCBzZXQgdG8gMTAgc2Vjb25kcw0NWyAgICA4Ljg1MjQ0Ml0gbnZt
ZSBudm1lMDogMTYvMC8wIGRlZmF1bHQvcmVhZC9wb2xsIHF1ZXVlcw0NWyAgICA4Ljg1NDUxNV0g
IG52bWUwbjE6IHAxIHAyDQ1bICAgIDguODU1NzY2XSBzZCAxOjA6MDowOiBbc2RhXSBXcml0ZSBQ
cm90ZWN0IGlzIG9mZg0NWyAgICA4Ljg2OTE2NF0gbnZtZSBudm1lMjogMTYvMC8wIGRlZmF1bHQv
cmVhZC9wb2xsIHF1ZXVlcw0NWyAgICA4Ljg3NTYwM10gbnZtZSBudm1lMTogMzIvMC8wIGRlZmF1
bHQvcmVhZC9wb2xsIHF1ZXVlcw0NWyAgICA4Ljg3OTU0N10gIG52bWUxbjE6IHAxIHAyIHAzDQ1b
ICAgIDguODgxOTg0XSAgbnZtZTJuMTogcDEgcDINDVsgICAgOC44ODU0OTldIHNkIDE6MDowOjA6
IFtzZGFdIFdyaXRlIGNhY2hlOiBlbmFibGVkLCByZWFkIGNhY2hlOiBlbmFibGVkLCBkb2Vzbid0
IHN1cHBvcnQgRFBPIG9yIEZVQQ0NWyAgICA4Ljg5MTY4MF0gIHNkYzogc2RjMSBzZGMyIHNkYzMN
DVsgICAgOC44OTk5ODldIHNkIDE6MDowOjA6IFtzZGFdIFByZWZlcnJlZCBtaW5pbXVtIEkvTyBz
aXplIDUxMiBieXRlcw0NWyAgICA4LjkwNjI4MF0gc2QgMjowOjA6MDogW3NkY10gQXR0YWNoZWQg
U0NTSSBkaXNrDQ1bICAgIDguOTI0OTM3XSAgc2RkOiBzZGQxIHNkZDIgc2RkMw0NWyAgICA4Ljk0
MDExNV0gdXNiLXN0b3JhZ2UgNC0zOjEuMDogVVNCIE1hc3MgU3RvcmFnZSBkZXZpY2UgZGV0ZWN0
ZWQNDVsgICAgOC45NDE5OTVdIHVzYiAzLTIuMzogTmV3IFVTQiBkZXZpY2UgZm91bmQsIGlkVmVu
ZG9yPTFhN2MsIGlkUHJvZHVjdD0wMTkyLCBiY2REZXZpY2U9IDEuMTMNDVsgICAgOC45NDE5OTdd
IHVzYiAzLTIuMzogTmV3IFVTQiBkZXZpY2Ugc3RyaW5nczogTWZyPTEsIFByb2R1Y3Q9NiwgU2Vy
aWFsTnVtYmVyPTANDVsgICAgOC45NDE5OTldIHVzYiAzLTIuMzogUHJvZHVjdDogRXZvbHVlbnQg
VmVydGljYWxNb3VzZSA0IExlZnQNDVsgICAgOC45NDE5OTldIHVzYiAzLTIuMzogTWFudWZhY3R1
cmVyOiBLaW5nc2lzIFBlcmlwaGVyYWxzDQ1bICAgIDguOTUwODQ4XSBzZCAwOjA6MDowOiBbc2Rk
XSBBdHRhY2hlZCBTQ1NJIGRpc2sNDVsgICAgOC45NTI4MDhdICBzZGE6IHNkYTEgc2RhMiBzZGEz
DQ1bICAgIDguOTUyOTAxXSBzZCAxOjA6MDowOiBbc2RhXSBBdHRhY2hlZCBTQ1NJIGRpc2sNDVsg
ICAgOC45NTgxMDBdIHNjc2kgaG9zdDY6IHVzYi1zdG9yYWdlIDQtMzoxLjANDVsgICAgOC45Nzc1
NjZdIHI4MTY5IDAwMDA6ODY6MDAuMCBlbnAxMzRzMDogcmVuYW1lZCBmcm9tIGV0aDANDVsgICAg
OC45Nzc4NTJdIHVzYmNvcmU6IHJlZ2lzdGVyZWQgbmV3IGludGVyZmFjZSBkcml2ZXIgdXNiLXN0
b3JhZ2UNDVsgICAgOC45OTI2NTBdIGhpZDogcmF3IEhJRCBldmVudHMgZHJpdmVyIChDKSBKaXJp
IEtvc2luYQ0NWyAgICA5LjAxNDc3OF0gdXNiIDctODogTmV3IFVTQiBkZXZpY2UgZm91bmQsIGlk
VmVuZG9yPTA2N2IsIGlkUHJvZHVjdD0yNTg2LCBiY2REZXZpY2U9IDAuMDANDVsgICAgOS4wNDk2
NThdIHNjc2kgaG9zdDc6IHVhcw0NWyAgICA5LjA1Mjc4OF0gdXNiIDctODogTmV3IFVTQiBkZXZp
Y2Ugc3RyaW5nczogTWZyPTEsIFByb2R1Y3Q9MywgU2VyaWFsTnVtYmVyPTANDVsgICAgOS4wNTY2
NTRdIHVzYmNvcmU6IHJlZ2lzdGVyZWQgbmV3IGludGVyZmFjZSBkcml2ZXIgdWFzDQ1bICAgIDku
MDU3MDI1XSBzY3NpIDc6MDowOjA6IERpcmVjdC1BY2Nlc3MgICAgIFNlYWdhdGUgIEJVUCBQb3J0
YWJsZSAgICAgMDAwNCBQUTogMCBBTlNJOiA2DQ1bICAgIDkuMDU4MTc2XSBzZCA3OjA6MDowOiBb
c2RlXSA3ODE0MDM3MTY3IDUxMi1ieXRlIGxvZ2ljYWwgYmxvY2tzOiAoNC4wMCBUQi8zLjY0IFRp
QikNDVsgICAgOS4wNTgxNzddIHNkIDc6MDowOjA6IFtzZGVdIDQwOTYtYnl0ZSBwaHlzaWNhbCBi
bG9ja3MNDVsgICAgOS4wNTgyNTVdIHNkIDc6MDowOjA6IFtzZGVdIFdyaXRlIFByb3RlY3QgaXMg
b2ZmDQ1bICAgIDkuMDU4NDE0XSBzZCA3OjA6MDowOiBbc2RlXSBXcml0ZSBjYWNoZTogZW5hYmxl
ZCwgcmVhZCBjYWNoZTogZW5hYmxlZCwgZG9lc24ndCBzdXBwb3J0IERQTyBvciBGVUENDVsgICAg
OS4wNTg1NzNdIHNkIDc6MDowOjA6IFtzZGVdIFByZWZlcnJlZCBtaW5pbXVtIEkvTyBzaXplIDQw
OTYgYnl0ZXMNDVsgICAgOS4wNTg1NzRdIHNkIDc6MDowOjA6IFtzZGVdIE9wdGltYWwgdHJhbnNm
ZXIgc2l6ZSAzMzU1MzkyMCBieXRlcyBub3QgYSBtdWx0aXBsZSBvZiBwcmVmZXJyZWQgbWluaW11
bSBibG9jayBzaXplICg0MDk2IGJ5dGVzKQ0NWyAgICA5LjA2MzU2M10gdXNiIDctODogUHJvZHVj
dDogVVNCIDIuMCBIdWIgICAgICAgICAgICANDVsgICAgOS4xMTc5MjldIHVzYmNvcmU6IHJlZ2lz
dGVyZWQgbmV3IGludGVyZmFjZSBkcml2ZXIgdXNiaGlkDQ1bICAgIDkuMTE5OTc5XSB1c2IgNy04
OiBNYW51ZmFjdHVyZXI6IFVTQiBEZXZpY2UgIA0NWyAgICA5LjEyNjc0M10gdXNiaGlkOiBVU0Ig
SElEIGNvcmUgZHJpdmVyDQ1bICAgIDkuMTU1MDA3XSBodWIgNy04OjEuMDogVVNCIGh1YiBmb3Vu
ZA0NWyAgICA5LjE2NTUxNl0gcjgxNjkgMDAwMDo4NzowMC4wIGVucDEzNXMwOiByZW5hbWVkIGZy
b20gZXRoMQ0NWyAgICA5LjE3MDc3OF0gaHViIDctODoxLjA6IDQgcG9ydHMgZGV0ZWN0ZWQNDVsg
ICAgOS4zMDgwMTFdIGRldmljZS1tYXBwZXI6IGNvcmU6IENPTkZJR19JTUFfRElTQUJMRV9IVEFC
TEUgaXMgZGlzYWJsZWQuIER1cGxpY2F0ZSBJTUEgbWVhc3VyZW1lbnRzIHdpbGwgbm90IGJlIHJl
Y29yZGVkIGluIHRoZSBJTUEgbG9nLg0NWyAgICA5LjMwOTQ1M10gcjgxNjkgMDAwMDo0NzowMC4w
IGVucDcxczA6IHJlbmFtZWQgZnJvbSBldGgyDQ1bICAgIDkuMzEzNDUxXSB1c2IgNy03LjE6IG5l
dyBmdWxsLXNwZWVkIFVTQiBkZXZpY2UgbnVtYmVyIDUgdXNpbmcgeGhjaV9oY2QNDVsgICAgOS4z
MjIyODhdIGRldmljZS1tYXBwZXI6IHVldmVudDogdmVyc2lvbiAxLjAuMw0NWyAgICA5LjM0MTU5
OV0gZGV2aWNlLW1hcHBlcjogaW9jdGw6IDQuNDcuMC1pb2N0bCAoMjAyMi0wNy0yOCkgaW5pdGlh
bGlzZWQ6IGRtLWRldmVsQHJlZGhhdC5jb20NDVsgICAgOS4zNTQ5OTldICBzZGU6IHNkZTMgc2Rl
OQ0NWyAgICA5LjM1ODQwM10gc2QgNzowOjA6MDogW3NkZV0gQXR0YWNoZWQgU0NTSSBkaXNrDQ1b
ICAgIDkuMzY2MDA1XSBpbnB1dDogVVNCIE9wdGljYWwgTW91c2UgYXMgL2RldmljZXMvcGNpMDAw
MDo4MC8wMDAwOjgwOjAxLjMvMDAwMDo4MjowMC4wL3VzYjMvMy0yLzMtMi4yLzMtMi4yOjEuMC8w
MDAzOjFCQ0Y6MDAwNS4wMDAxL2lucHV0L2lucHV0MA0NWyAgICA5LjM4MDczOV0gaGlkLWdlbmVy
aWMgMDAwMzoxQkNGOjAwMDUuMDAwMTogaW5wdXQsaGlkcmF3MDogVVNCIEhJRCB2MS4xMCBNb3Vz
ZSBbVVNCIE9wdGljYWwgTW91c2VdIG9uIHVzYi0wMDAwOjgyOjAwLjAtMi4yL2lucHV0MA0NWyAg
ICA5LjM5NDIwNl0gaW5wdXQ6IEtpbmdzaXMgUGVyaXBoZXJhbHMgRXZvbHVlbnQgVmVydGljYWxN
b3VzZSA0IExlZnQgYXMgL2RldmljZXMvcGNpMDAwMDo4MC8wMDAwOjgwOjAxLjMvMDAwMDo4Mjow
MC4wL3VzYjMvMy0yLzMtMi4zLzMtMi4zOjEuMC8wMDAzOjFBN0M6MDE5Mi4wMDAyL2lucHV0L2lu
cHV0MQ0NWyAgICA5LjQxMjM4MV0gaGlkLWdlbmVyaWMgMDAwMzoxQTdDOjAxOTIuMDAwMjogaW5w
dXQsaGlkcmF3MTogVVNCIEhJRCB2MS4xMSBNb3VzZSBbS2luZ3NpcyBQZXJpcGhlcmFscyBFdm9s
dWVudCBWZXJ0aWNhbE1vdXNlIDQgTGVmdF0gb24gdXNiLTAwMDA6ODI6MDAuMC0yLjMvaW5wdXQw
DQ1bICAgIDkuNDk3NDkwXSByYWlkNjogYXZ4NTEyeDQgZ2VuKCkgNjM4NjAgTUIvcw0NWyAgICA5
LjU2OTQ0OV0gcmFpZDY6IGF2eDUxMngyIGdlbigpIDY2MDM4IE1CL3MNDVsgICAgOS42MzY4MDBd
IHVzYiA3LTcuMTogTmV3IFVTQiBkZXZpY2UgZm91bmQsIGlkVmVuZG9yPTA1MWQsIGlkUHJvZHVj
dD0wMDAyLCBiY2REZXZpY2U9IDAuOTANDVsgICAgOS42NDE1MTldIHJhaWQ2OiBhdng1MTJ4MSBn
ZW4oKSA2NTIxNyBNQi9zDQ1bICAgIDkuNjQ2MDg5XSB1c2IgNy03LjE6IE5ldyBVU0IgZGV2aWNl
IHN0cmluZ3M6IE1mcj0xLCBQcm9kdWN0PTIsIFNlcmlhbE51bWJlcj0zDQ1bICAgIDkuNjU5MTUx
XSB1c2IgNy03LjE6IFByb2R1Y3Q6IEJhY2stVVBTIFhTIDEwMDBNIEZXOjk0NS5kOSAuRCBVU0Ig
Rlc6ZDkgICAgIA0NWyAgICA5LjY2NzE3Nl0gdXNiIDctNy4xOiBNYW51ZmFjdHVyZXI6IEFtZXJp
Y2FuIFBvd2VyIENvbnZlcnNpb24NDVsgICAgOS42NzM3MzNdIHVzYiA3LTcuMTogU2VyaWFsTnVt
YmVyOiAzQjE4MzFYMjY1MTMgIA0NWyAgICA5LjcxNzQyMF0gcmFpZDY6IGF2eDJ4NCAgIGdlbigp
IDY1Mzk1IE1CL3MNDVsgICAgOS43Mzc1MDVdIHVzYiA3LTk6IG5ldyBmdWxsLXNwZWVkIFVTQiBk
ZXZpY2UgbnVtYmVyIDYgdXNpbmcgeGhjaV9oY2QNDVsgICAgOS43NDUyMTddIGhpZC1nZW5lcmlj
IDAwMDM6MDUxRDowMDAyLjAwMDM6IGhpZGRldjAsaGlkcmF3MjogVVNCIEhJRCB2MS4wMCBEZXZp
Y2UgW0FtZXJpY2FuIFBvd2VyIENvbnZlcnNpb24gQmFjay1VUFMgWFMgMTAwME0gRlc6OTQ1LmQ5
IC5EIFVTQiBGVzpkOSAgICAgXSBvbiB1c2ItMDAwMDo0OTowMC4wLTcuMS9pbnB1dDANDVsgICAg
OS43ODk0OTJdIHJhaWQ2OiBhdngyeDIgICBnZW4oKSA2NTI5NCBNQi9zDQ1bICAgIDkuODYxNDIx
XSByYWlkNjogYXZ4MngxICAgZ2VuKCkgNTU5OTEgTUIvcw0NWyAgICA5Ljg2NjMzNl0gcmFpZDY6
IHVzaW5nIGFsZ29yaXRobSBhdng1MTJ4MiBnZW4oKSA2NjAzOCBNQi9zDQ1bICAgIDkuOTM3NDY1
XSByYWlkNjogLi4uLiB4b3IoKSA0MzM3NyBNQi9zLCBybXcgZW5hYmxlZA0NWyAgICA5Ljk0MzE4
OV0gcmFpZDY6IHVzaW5nIGF2eDUxMngyIHJlY292ZXJ5IGFsZ29yaXRobQ0NWyAgICA5Ljk1MTA2
MV0geG9yOiBhdXRvbWF0aWNhbGx5IHVzaW5nIGJlc3QgY2hlY2tzdW1taW5nIGZ1bmN0aW9uICAg
YXZ4ICAgICAgIA0NWyAgICA5Ljk3NTAzOF0gYXN5bmNfdHg6IGFwaSBpbml0aWFsaXplZCAoYXN5
bmMpDQ1bICAgIDkuOTkzNzA5XSBkZXZpY2UtbWFwcGVyOiByYWlkOiBMb2FkaW5nIHRhcmdldCB2
ZXJzaW9uIDEuMTUuMQ0NWyAgIDEwLjAwMTg5N10gc2NzaSA2OjA6MDowOiBEaXJlY3QtQWNjZXNz
ICAgICBXRCAgICAgICBNeSBQYXNzcG9ydCAwODIwIDEwMTIgUFE6IDAgQU5TSTogNg0NWyAgIDEw
LjAxMTkyOV0gc2NzaSA2OjA6MDoxOiBFbmNsb3N1cmUgICAgICAgICBXRCAgICAgICBTRVMgRGV2
aWNlICAgICAgIDEwMTIgUFE6IDAgQU5TSTogNg0NWyAgIDEwLjAyMzc4MV0gc2QgNjowOjA6MDog
W3NkZl0gMzkwNjk2MzQ1NiA1MTItYnl0ZSBsb2dpY2FsIGJsb2NrczogKDIuMDAgVEIvMS44MiBU
aUIpDQ1bICAgMTAuMDMzMzAyXSBzZCA2OjA6MDowOiBbc2RmXSBXcml0ZSBQcm90ZWN0IGlzIG9m
Zg0NWyAgIDEwLjAzOTIzN10gc2QgNjowOjA6MDogW3NkZl0gTm8gQ2FjaGluZyBtb2RlIHBhZ2Ug
Zm91bmQNDVsgICAxMC4wNDU0MTRdIHNkIDY6MDowOjA6IFtzZGZdIEFzc3VtaW5nIGRyaXZlIGNh
Y2hlOiB3cml0ZSB0aHJvdWdoDQ1bICAgMTAuMDU2OTgyXSAgc2RmOiBzZGYxIHNkZjIgc2RmMw0N
WyAgIDEwLjA2MDk1N10gc2QgNjowOjA6MDogW3NkZl0gQXR0YWNoZWQgU0NTSSBkaXNrDQ1bICAg
MTAuMDc4NTgxXSB1c2IgNy05OiBOZXcgVVNCIGRldmljZSBmb3VuZCwgaWRWZW5kb3I9MjZjZSwg
aWRQcm9kdWN0PTAxYTIsIGJjZERldmljZT0gMC4wMA0NWyAgIDEwLjA4MTIxNl0gc2NzaSA2OjA6
MDoxOiBXcm9uZyBkaWFnbm9zdGljIHBhZ2U7IGFza2VkIGZvciAxIGdvdCA4DQ1bICAgMTAuMDg4
MjMyXSB1c2IgNy05OiBOZXcgVVNCIGRldmljZSBzdHJpbmdzOiBNZnI9MSwgUHJvZHVjdD0yLCBT
ZXJpYWxOdW1iZXI9Mw0NWyAgIDEwLjA5NTM2OV0gc2NzaSA2OjA6MDoxOiBGYWlsZWQgdG8gZ2V0
IGRpYWdub3N0aWMgcGFnZSAweDENDVsgICAxMC4wOTUzNzBdIHNjc2kgNjowOjA6MTogRmFpbGVk
IHRvIGJpbmQgZW5jbG9zdXJlIC0xOQ0NWyAgIDEwLjA5NTM4OF0gc2VzIDY6MDowOjE6IEF0dGFj
aGVkIEVuY2xvc3VyZSBkZXZpY2UNDVsgICAxMC4xMjE0MDVdIHVzYiA3LTk6IFByb2R1Y3Q6IExF
RCBDb250cm9sbGVyDQ1bICAgMTAuMTI2MjgwXSB1c2IgNy05OiBNYW51ZmFjdHVyZXI6IEFTUm9j
aw0NWyAgIDEwLjEzMDgxNl0gdXNiIDctOTogU2VyaWFsTnVtYmVyOiBBMDIwMTkxMDA5MDANDVsg
ICAxMC4xMzYxNzldIHVzYiA3LTguMTogbmV3IGZ1bGwtc3BlZWQgVVNCIGRldmljZSBudW1iZXIg
NyB1c2luZyB4aGNpX2hjZA0NWyAgIDEwLjE0ODAxN10gbWQvcmFpZDE6bWRYOiBhY3RpdmUgd2l0
aCAyIG91dCBvZiAyIG1pcnJvcnMNDVsgICAxMC4yMDE0MThdIGlucHV0OiBBU1JvY2sgTEVEIENv
bnRyb2xsZXIgYXMgL2RldmljZXMvcGNpMDAwMDo0MC8wMDAwOjQwOjAzLjMvMDAwMDo0NDowMC4w
LzAwMDA6NDU6MGMuMC8wMDAwOjQ5OjAwLjAvdXNiNy83LTkvNy05OjEuMC8wMDAzOjI2Q0U6MDFB
Mi4wMDA0L2lucHV0L2lucHV0Mg0NWyAgIDEwLjI0MDUxN10gbWQvcmFpZDE6bWRYOiBhY3RpdmUg
d2l0aCAyIG91dCBvZiAyIG1pcnJvcnMNDVsgICAxMC4yNzc1NzhdIGhpZC1nZW5lcmljIDAwMDM6
MjZDRTowMUEyLjAwMDQ6IGlucHV0LGhpZHJhdzM6IFVTQiBISUQgdjEuMTAgRGV2aWNlIFtBU1Jv
Y2sgTEVEIENvbnRyb2xsZXJdIG9uIHVzYi0wMDAwOjQ5OjAwLjAtOS9pbnB1dDANDVsgICAxMC40
NDc4MTRdIHVzYiA3LTguMTogTmV3IFVTQiBkZXZpY2UgZm91bmQsIGlkVmVuZG9yPWI1OGMsIGlk
UHJvZHVjdD05ZTg0LCBiY2REZXZpY2U9IDEuMDANDVsgICAxMC40NTc2NTJdIHVzYiA3LTguMTog
TmV3IFVTQiBkZXZpY2Ugc3RyaW5nczogTWZyPTEsIFByb2R1Y3Q9MiwgU2VyaWFsTnVtYmVyPTMN
DVsgICAxMC40NjYxOTNdIHVzYiA3LTguMTogUHJvZHVjdDogWWV0aSBTdGVyZW8gTWljcm9waG9u
ZQ0NWyAgIDEwLjQ3MjE5M10gdXNiIDctOC4xOiBNYW51ZmFjdHVyZXI6IEJsdWUgTWljcm9waG9u
ZXMNDVsgICAxMC40NzgzMjNdIHVzYiA3LTguMTogU2VyaWFsTnVtYmVyOiBSRVY4DQ1bICAgMTAu
NTI1MDAzXSBpbnB1dDogQmx1ZSBNaWNyb3Bob25lcyBZZXRpIFN0ZXJlbyBNaWNyb3Bob25lIENv
bnN1bWVyIENvbnRyb2wgYXMgL2RldmljZXMvcGNpMDAwMDo0MC8wMDAwOjQwOjAzLjMvMDAwMDo0
NDowMC4wLzAwMDA6NDU6MGMuMC8wMDAwOjQ5OjAwLjAvdXNiNy83LTgvNy04LjEvNy04LjE6MS4z
LzAwMDM6QjU4Qzo5RTg0LjAwMDUvaW5wdXQvaW5wdXQzDQ1bICAgMTAuNjA1NDQ4XSB1c2IgNy03
LjM6IG5ldyBoaWdoLXNwZWVkIFVTQiBkZXZpY2UgbnVtYmVyIDggdXNpbmcgeGhjaV9oY2QNDVsg
ICAxMC42MTM0MzJdIGhpZC1nZW5lcmljIDAwMDM6QjU4Qzo5RTg0LjAwMDU6IGlucHV0LGhpZGRl
djEsaGlkcmF3NDogVVNCIEhJRCB2MS4wMCBEZXZpY2UgW0JsdWUgTWljcm9waG9uZXMgWWV0aSBT
dGVyZW8gTWljcm9waG9uZV0gb24gdXNiLTAwMDA6NDk6MDAuMC04LjEvaW5wdXQzDQ1bICAgMTAu
Nzg2ODE3XSB1c2IgNy03LjM6IE5ldyBVU0IgZGV2aWNlIGZvdW5kLCBpZFZlbmRvcj0wNDVlLCBp
ZFByb2R1Y3Q9MDc1ZCwgYmNkRGV2aWNlPSAxLjA3DQ1bICAgMTAuNzk2NjU3XSB1c2IgNy03LjM6
IE5ldyBVU0IgZGV2aWNlIHN0cmluZ3M6IE1mcj0xLCBQcm9kdWN0PTIsIFNlcmlhbE51bWJlcj0w
DQ1bICAgMTAuODA1MjQ3XSB1c2IgNy03LjM6IFByb2R1Y3Q6IE1pY3Jvc29mdMKuIExpZmVDYW0g
Q2luZW1hKFRNKQ0NWyAgIDEwLjgxMjE4Nl0gdXNiIDctNy4zOiBNYW51ZmFjdHVyZXI6IE1pY3Jv
c29mdA0NWyAgIDEwLjk0NTQzNF0gdXNiIDctMTA6IG5ldyBoaWdoLXNwZWVkIFVTQiBkZXZpY2Ug
bnVtYmVyIDkgdXNpbmcgeGhjaV9oY2QNDVsgICAxMS4xOTg4MzNdIHVzYiA3LTEwOiBOZXcgVVNC
IGRldmljZSBmb3VuZCwgaWRWZW5kb3I9MGU4ZCwgaWRQcm9kdWN0PTA2MTYsIGJjZERldmljZT0g
MS4wMA0NWyAgIDExLjIwODUyN10gdXNiIDctMTA6IE5ldyBVU0IgZGV2aWNlIHN0cmluZ3M6IE1m
cj01LCBQcm9kdWN0PTYsIFNlcmlhbE51bWJlcj03DQ1bICAgMTEuMjE3MjQwXSB1c2IgNy0xMDog
UHJvZHVjdDogV2lyZWxlc3NfRGV2aWNlDQ1bICAgMTEuMjIyNDM1XSB1c2IgNy0xMDogTWFudWZh
Y3R1cmVyOiBNZWRpYVRlayBJbmMuDQ1bICAgMTEuMjI3ODQ4XSB1c2IgNy0xMDogU2VyaWFsTnVt
YmVyOiAwMDAwMDAwMDANDVsgICAxMS4yOTM0NDRdIHVzYiA3LTguMjogbmV3IGZ1bGwtc3BlZWQg
VVNCIGRldmljZSBudW1iZXIgMTAgdXNpbmcgeGhjaV9oY2QNDVsgICAxMS42NTM4MzFdIHVzYiA3
LTguMjogTmV3IFVTQiBkZXZpY2UgZm91bmQsIGlkVmVuZG9yPTA0NmQsIGlkUHJvZHVjdD1jNTJi
LCBiY2REZXZpY2U9MTIuMDUNDVsgICAxMS42NjM1NTldIHVzYiA3LTguMjogTmV3IFVTQiBkZXZp
Y2Ugc3RyaW5nczogTWZyPTEsIFByb2R1Y3Q9MiwgU2VyaWFsTnVtYmVyPTANDVsgICAxMS42NzIy
NDFdIHVzYiA3LTguMjogUHJvZHVjdDogVVNCIFJlY2VpdmVyDQ1bICAgMTEuNjc3Mzk2XSB1c2Ig
Ny04LjI6IE1hbnVmYWN0dXJlcjogTG9naXRlY2gNDVsgICAxMS42OTc0MTddIHVzYiA3LTEyOiBu
ZXcgaGlnaC1zcGVlZCBVU0IgZGV2aWNlIG51bWJlciAxMSB1c2luZyB4aGNpX2hjZA0NWyAgIDEx
Ljc1MzAzOF0gaW5wdXQ6IExvZ2l0ZWNoIFVTQiBSZWNlaXZlciBhcyAvZGV2aWNlcy9wY2kwMDAw
OjQwLzAwMDA6NDA6MDMuMy8wMDAwOjQ0OjAwLjAvMDAwMDo0NTowYy4wLzAwMDA6NDk6MDAuMC91
c2I3LzctOC83LTguMi83LTguMjoxLjAvMDAwMzowNDZEOkM1MkIuMDAwNi9pbnB1dC9pbnB1dDUN
DVsgICAxMS44Mjk2MTRdIGhpZC1nZW5lcmljIDAwMDM6MDQ2RDpDNTJCLjAwMDY6IGlucHV0LGhp
ZHJhdzU6IFVTQiBISUQgdjEuMTEgS2V5Ym9hcmQgW0xvZ2l0ZWNoIFVTQiBSZWNlaXZlcl0gb24g
dXNiLTAwMDA6NDk6MDAuMC04LjIvaW5wdXQwDQ1bICAgMTEuODkwMDcyXSBpbnB1dDogTG9naXRl
Y2ggVVNCIFJlY2VpdmVyIE1vdXNlIGFzIC9kZXZpY2VzL3BjaTAwMDA6NDAvMDAwMDo0MDowMy4z
LzAwMDA6NDQ6MDAuMC8wMDAwOjQ1OjBjLjAvMDAwMDo0OTowMC4wL3VzYjcvNy04LzctOC4yLzct
OC4yOjEuMS8wMDAzOjA0NkQ6QzUyQi4wMDA3L2lucHV0L2lucHV0Ng0NWyAgIDExLjkwOTAxNF0g
aW5wdXQ6IExvZ2l0ZWNoIFVTQiBSZWNlaXZlciBDb25zdW1lciBDb250cm9sIGFzIC9kZXZpY2Vz
L3BjaTAwMDA6NDAvMDAwMDo0MDowMy4zLzAwMDA6NDQ6MDAuMC8wMDAwOjQ1OjBjLjAvMDAwMDo0
OTowMC4wL3VzYjcvNy04LzctOC4yLzctOC4yOjEuMS8wMDAzOjA0NkQ6QzUyQi4wMDA3L2lucHV0
L2lucHV0Nw0NWyAgIDExLjk3Mzg0MV0gdXNiIDctMTI6IE5ldyBVU0IgZGV2aWNlIGZvdW5kLCBp
ZFZlbmRvcj0xM2ZlLCBpZFByb2R1Y3Q9MWYyMywgYmNkRGV2aWNlPSAxLjEwDQ1bICAgMTEuOTgz
NTAxXSB1c2IgNy0xMjogTmV3IFVTQiBkZXZpY2Ugc3RyaW5nczogTWZyPTEsIFByb2R1Y3Q9Miwg
U2VyaWFsTnVtYmVyPTMNDVsgICAxMS45OTIxMDFdIHVzYiA3LTEyOiBQcm9kdWN0OiBTVE9SRSBO
IEdPDQ1bICAgMTEuOTk2OTM1XSB1c2IgNy0xMjogTWFudWZhY3R1cmVyOiBWZXJiYXRpbQ0NWyAg
IDEyLjAwMjAzNl0gdXNiIDctMTI6IFNlcmlhbE51bWJlcjogMDc4OTBDODkwRjQ5DQ1bICAgMTIu
MDA3MjQ5XSBpbnB1dDogTG9naXRlY2ggVVNCIFJlY2VpdmVyIFN5c3RlbSBDb250cm9sIGFzIC9k
ZXZpY2VzL3BjaTAwMDA6NDAvMDAwMDo0MDowMy4zLzAwMDA6NDQ6MDAuMC8wMDAwOjQ1OjBjLjAv
MDAwMDo0OTowMC4wL3VzYjcvNy04LzctOC4yLzctOC4yOjEuMS8wMDAzOjA0NkQ6QzUyQi4wMDA3
L2lucHV0L2lucHV0OA0NWyAgIDEyLjAyNzM3Nl0gaGlkLWdlbmVyaWMgMDAwMzowNDZEOkM1MkIu
MDAwNzogaW5wdXQsaGlkZGV2MixoaWRyYXc2OiBVU0IgSElEIHYxLjExIE1vdXNlIFtMb2dpdGVj
aCBVU0IgUmVjZWl2ZXJdIG9uIHVzYi0wMDAwOjQ5OjAwLjAtOC4yL2lucHV0MQ0NWyAgIDEyLjA2
MDAzOV0gdXNiLXN0b3JhZ2UgNy0xMjoxLjA6IFVTQiBNYXNzIFN0b3JhZ2UgZGV2aWNlIGRldGVj
dGVkDQ1bICAgMTIuMDY3NDE4XSBzY3NpIGhvc3Q4OiB1c2Itc3RvcmFnZSA3LTEyOjEuMA0NWyAg
IDEyLjA4NjE3MV0gaGlkLWdlbmVyaWMgMDAwMzowNDZEOkM1MkIuMDAwODogaGlkZGV2MyxoaWRy
YXc3OiBVU0IgSElEIHYxLjExIERldmljZSBbTG9naXRlY2ggVVNCIFJlY2VpdmVyXSBvbiB1c2It
MDAwMDo0OTowMC4wLTguMi9pbnB1dDINDVsgICAxMi4xODU0MzVdIHVzYiA3LTguMzogbmV3IGZ1
bGwtc3BlZWQgVVNCIGRldmljZSBudW1iZXIgMTIgdXNpbmcgeGhjaV9oY2QNDVsgICAxMi41MTI4
NDJdIHVzYiA3LTguMzogTmV3IFVTQiBkZXZpY2UgZm91bmQsIGlkVmVuZG9yPTEwNTAsIGlkUHJv
ZHVjdD0wNDA3LCBiY2REZXZpY2U9IDQuMzcNDVsgICAxMi41MjI3MzldIHVzYiA3LTguMzogTmV3
IFVTQiBkZXZpY2Ugc3RyaW5nczogTWZyPTEsIFByb2R1Y3Q9MiwgU2VyaWFsTnVtYmVyPTANDVsg
ICAxMi41MzE0MTZdIHVzYiA3LTguMzogUHJvZHVjdDogWXViaWtleSA0IE9UUCtVMkYrQ0NJRA0N
WyAgIDEyLjUzNzM4N10gdXNiIDctOC4zOiBNYW51ZmFjdHVyZXI6IFl1Ymljbw0NWyAgIDEyLjYw
MTEzOV0gaW5wdXQ6IFl1YmljbyBZdWJpa2V5IDQgT1RQK1UyRitDQ0lEIGFzIC9kZXZpY2VzL3Bj
aTAwMDA6NDAvMDAwMDo0MDowMy4zLzAwMDA6NDQ6MDAuMC8wMDAwOjQ1OjBjLjAvMDAwMDo0OTow
MC4wL3VzYjcvNy04LzctOC4zLzctOC4zOjEuMC8wMDAzOjEwNTA6MDQwNy4wMDA5L2lucHV0L2lu
cHV0MTANDVsgICAxMi42Nzc2MTVdIGhpZC1nZW5lcmljIDAwMDM6MTA1MDowNDA3LjAwMDk6IGlu
cHV0LGhpZHJhdzg6IFVTQiBISUQgdjEuMTAgS2V5Ym9hcmQgW1l1YmljbyBZdWJpa2V5IDQgT1RQ
K1UyRitDQ0lEXSBvbiB1c2ItMDAwMDo0OTowMC4wLTguMy9pbnB1dDANDVsgICAxMi42OTMzNThd
IGhpZC1nZW5lcmljIDAwMDM6MTA1MDowNDA3LjAwMEE6IGhpZGRldjQsaGlkcmF3OTogVVNCIEhJ
RCB2MS4xMCBEZXZpY2UgW1l1YmljbyBZdWJpa2V5IDQgT1RQK1UyRitDQ0lEXSBvbiB1c2ItMDAw
MDo0OTowMC4wLTguMy9pbnB1dDENDVsgICAxMi43ODU0NDNdIHVzYiA3LTguNDogbmV3IGxvdy1z
cGVlZCBVU0IgZGV2aWNlIG51bWJlciAxMyB1c2luZyB4aGNpX2hjZA0NWyAgIDEyLjk3ODk0MF0g
dXNiIDctOC40OiBOZXcgVVNCIGRldmljZSBmb3VuZCwgaWRWZW5kb3I9MGIzOSwgaWRQcm9kdWN0
PTAwMDEsIGJjZERldmljZT0gMy4xMA0NWyAgIDEyLjk4ODY4NF0gdXNiIDctOC40OiBOZXcgVVNC
IGRldmljZSBzdHJpbmdzOiBNZnI9MSwgUHJvZHVjdD0yLCBTZXJpYWxOdW1iZXI9MA0NWyAgIDEy
Ljk5NzUwOV0gdXNiIDctOC40OiBQcm9kdWN0OiBVU0IgdG8gUFMyIEFkYXB0b3IgIFYzLjEwDQ1b
ICAgMTMuMDAzODU4XSB1c2IgNy04LjQ6IE1hbnVmYWN0dXJlcjogQ29tcG9zaXRlIFVTQiBQUzIg
Q29udmVydGVyDQ1bICAgMTMuMDM4NzM0XSBpbnB1dDogQ29tcG9zaXRlIFVTQiBQUzIgQ29udmVy
dGVyIFVTQiB0byBQUzIgQWRhcHRvciAgVjMuMTAgYXMgL2RldmljZXMvcGNpMDAwMDo0MC8wMDAw
OjQwOjAzLjMvMDAwMDo0NDowMC4wLzAwMDA6NDU6MGMuMC8wMDAwOjQ5OjAwLjAvdXNiNy83LTgv
Ny04LjQvNy04LjQ6MS4wLzAwMDM6MEIzOTowMDAxLjAwMEIvaW5wdXQvaW5wdXQxMQ0NWyAgIDEz
LjA3NzgyM10gc2NzaSA4OjA6MDowOiBEaXJlY3QtQWNjZXNzICAgICBWZXJiYXRpbSBTVE9SRSBO
IEdPICAgICAgIDUuMDAgUFE6IDAgQU5TSTogMCBDQ1MNDVsgICAxMy4wODgwMjddIHNkIDg6MDow
OjA6IFtzZGddIDMxMzE4MDE2IDUxMi1ieXRlIGxvZ2ljYWwgYmxvY2tzOiAoMTYuMCBHQi8xNC45
IEdpQikNDVsgICAxMy4wOTcwOThdIHNkIDg6MDowOjA6IFtzZGddIFdyaXRlIFByb3RlY3QgaXMg
b2ZmDQ1bICAgMTMuMTAyODk0XSBzZCA4OjA6MDowOiBbc2RnXSBObyBDYWNoaW5nIG1vZGUgcGFn
ZSBmb3VuZA0NWyAgIDEzLjEwOTExNl0gc2QgODowOjA6MDogW3NkZ10gQXNzdW1pbmcgZHJpdmUg
Y2FjaGU6IHdyaXRlIHRocm91Z2gNDVsgICAxMy4xMTc1NTRdIGhpZC1nZW5lcmljIDAwMDM6MEIz
OTowMDAxLjAwMEI6IGlucHV0LGhpZHJhdzEwOiBVU0IgSElEIHYxLjEwIEtleWJvYXJkIFtDb21w
b3NpdGUgVVNCIFBTMiBDb252ZXJ0ZXIgVVNCIHRvIFBTMiBBZGFwdG9yICBWMy4xMF0gb24gdXNi
LTAwMDA6NDk6MDAuMC04LjQvaW5wdXQwDQ1bICAgMTMuMTE3OTA5XSAgc2RnOiBzZGcxIHNkZzIN
DVsgICAxMy4xMzg4NzNdIHNkIDg6MDowOjA6IFtzZGddIEF0dGFjaGVkIFNDU0kgcmVtb3ZhYmxl
IGRpc2sNDVsgICAxMy4xMzkwNDVdIGlucHV0OiBDb21wb3NpdGUgVVNCIFBTMiBDb252ZXJ0ZXIg
VVNCIHRvIFBTMiBBZGFwdG9yICBWMy4xMCBNb3VzZSBhcyAvZGV2aWNlcy9wY2kwMDAwOjQwLzAw
MDA6NDA6MDMuMy8wMDAwOjQ0OjAwLjAvMDAwMDo0NTowYy4wLzAwMDA6NDk6MDAuMC91c2I3Lzct
OC83LTguNC83LTguNDoxLjEvMDAwMzowQjM5OjAwMDEuMDAwQy9pbnB1dC9pbnB1dDEyDQ1bICAg
MTMuMTY3NDQ0XSBpbnB1dDogQ29tcG9zaXRlIFVTQiBQUzIgQ29udmVydGVyIFVTQiB0byBQUzIg
QWRhcHRvciAgVjMuMTAgU3lzdGVtIENvbnRyb2wgYXMgL2RldmljZXMvcGNpMDAwMDo0MC8wMDAw
OjQwOjAzLjMvMDAwMDo0NDowMC4wLzAwMDA6NDU6MGMuMC8wMDAwOjQ5OjAwLjAvdXNiNy83LTgv
Ny04LjQvNy04LjQ6MS4xLzAwMDM6MEIzOTowMDAxLjAwMEMvaW5wdXQvaW5wdXQxMw0NWyAgIDEz
LjI0OTQ4OV0gaW5wdXQ6IENvbXBvc2l0ZSBVU0IgUFMyIENvbnZlcnRlciBVU0IgdG8gUFMyIEFk
YXB0b3IgIFYzLjEwIENvbnN1bWVyIENvbnRyb2wgYXMgL2RldmljZXMvcGNpMDAwMDo0MC8wMDAw
OjQwOjAzLjMvMDAwMDo0NDowMC4wLzAwMDA6NDU6MGMuMC8wMDAwOjQ5OjAwLjAvdXNiNy83LTgv
Ny04LjQvNy04LjQ6MS4xLzAwMDM6MEIzOTowMDAxLjAwMEMvaW5wdXQvaW5wdXQxNA0NWyAgIDEz
LjI3MjUwMF0gaGlkLWdlbmVyaWMgMDAwMzowQjM5OjAwMDEuMDAwQzogaW5wdXQsaGlkcmF3MTE6
IFVTQiBISUQgdjEuMTAgTW91c2UgW0NvbXBvc2l0ZSBVU0IgUFMyIENvbnZlcnRlciBVU0IgdG8g
UFMyIEFkYXB0b3IgIFYzLjEwXSBvbiB1c2ItMDAwMDo0OTowMC4wLTguNC9pbnB1dDENDVsgICAx
My40ODIwNjFdIGxvZ2l0ZWNoLWRqcmVjZWl2ZXIgMDAwMzowNDZEOkM1MkIuMDAwODogaGlkZGV2
MixoaWRyYXc1OiBVU0IgSElEIHYxLjExIERldmljZSBbTG9naXRlY2ggVVNCIFJlY2VpdmVyXSBv
biB1c2ItMDAwMDo0OTowMC4wLTguMi9pbnB1dDINDVsgICAxMy42MTU1MzBdIGlucHV0OiBMb2dp
dGVjaCBXaXJlbGVzcyBEZXZpY2UgUElEOjQwMTEgS2V5Ym9hcmQgYXMgL2RldmljZXMvcGNpMDAw
MDo0MC8wMDAwOjQwOjAzLjMvMDAwMDo0NDowMC4wLzAwMDA6NDU6MGMuMC8wMDAwOjQ5OjAwLjAv
dXNiNy83LTgvNy04LjIvNy04LjI6MS4yLzAwMDM6MDQ2RDpDNTJCLjAwMDgvMDAwMzowNDZEOjQw
MTEuMDAwRC9pbnB1dC9pbnB1dDE1DQ1bICAgMTMuNjM3MzAwXSBpbnB1dDogTG9naXRlY2ggV2ly
ZWxlc3MgRGV2aWNlIFBJRDo0MDExIE1vdXNlIGFzIC9kZXZpY2VzL3BjaTAwMDA6NDAvMDAwMDo0
MDowMy4zLzAwMDA6NDQ6MDAuMC8wMDAwOjQ1OjBjLjAvMDAwMDo0OTowMC4wL3VzYjcvNy04Lzct
OC4yLzctOC4yOjEuMi8wMDAzOjA0NkQ6QzUyQi4wMDA4LzAwMDM6MDQ2RDo0MDExLjAwMEQvaW5w
dXQvaW5wdXQxNg0NWyAgIDEzLjY1ODkxNF0gaGlkLWdlbmVyaWMgMDAwMzowNDZEOjQwMTEuMDAw
RDogaW5wdXQsaGlkcmF3NjogVVNCIEhJRCB2MS4xMSBLZXlib2FyZCBbTG9naXRlY2ggV2lyZWxl
c3MgRGV2aWNlIFBJRDo0MDExXSBvbiB1c2ItMDAwMDo0OTowMC4wLTguMi9pbnB1dDI6MQ0NWyAg
IDEzLjY3NDE3M10gaW5wdXQ6IExvZ2l0ZWNoIFdpcmVsZXNzIERldmljZSBQSUQ6NDAyNCBLZXli
b2FyZCBhcyAvZGV2aWNlcy9wY2kwMDAwOjQwLzAwMDA6NDA6MDMuMy8wMDAwOjQ0OjAwLjAvMDAw
MDo0NTowYy4wLzAwMDA6NDk6MDAuMC91c2I3LzctOC83LTguMi83LTguMjoxLjIvMDAwMzowNDZE
OkM1MkIuMDAwOC8wMDAzOjA0NkQ6NDAyNC4wMDBFL2lucHV0L2lucHV0MjANDVsgICAxMy42OTU5
NzZdIGlucHV0OiBMb2dpdGVjaCBXaXJlbGVzcyBEZXZpY2UgUElEOjQwMjQgTW91c2UgYXMgL2Rl
dmljZXMvcGNpMDAwMDo0MC8wMDAwOjQwOjAzLjMvMDAwMDo0NDowMC4wLzAwMDA6NDU6MGMuMC8w
MDAwOjQ5OjAwLjAvdXNiNy83LTgvNy04LjIvNy04LjI6MS4yLzAwMDM6MDQ2RDpDNTJCLjAwMDgv
MDAwMzowNDZEOjQwMjQuMDAwRS9pbnB1dC9pbnB1dDIxDQ1bICAgMTMuNzE3Mjg1XSBoaWQtZ2Vu
ZXJpYyAwMDAzOjA0NkQ6NDAyNC4wMDBFOiBpbnB1dCxoaWRyYXc3OiBVU0IgSElEIHYxLjExIEtl
eWJvYXJkIFtMb2dpdGVjaCBXaXJlbGVzcyBEZXZpY2UgUElEOjQwMjRdIG9uIHVzYi0wMDAwOjQ5
OjAwLjAtOC4yL2lucHV0MjoyDQ1bICAgMTMuNzM5MzczXSBpbnB1dDogTG9naXRlY2ggSzQwMCBQ
bHVzIGFzIC9kZXZpY2VzL3BjaTAwMDA6NDAvMDAwMDo0MDowMy4zLzAwMDA6NDQ6MDAuMC8wMDAw
OjQ1OjBjLjAvMDAwMDo0OTowMC4wL3VzYjcvNy04LzctOC4yLzctOC4yOjEuMi8wMDAzOjA0NkQ6
QzUyQi4wMDA4LzAwMDM6MDQ2RDo0MDRELjAwMEYvaW5wdXQvaW5wdXQyNQ0NWyAgIDEzLjc1ODY1
Ml0gbG9naXRlY2gtaGlkcHAtZGV2aWNlIDAwMDM6MDQ2RDo0MDRELjAwMEY6IGlucHV0LGhpZHJh
dzEyOiBVU0IgSElEIHYxLjExIEtleWJvYXJkIFtMb2dpdGVjaCBLNDAwIFBsdXNdIG9uIHVzYi0w
MDAwOjQ5OjAwLjAtOC4yL2lucHV0MjozDQ1bICAgMTMuOTE1MzI0XSBsb2dpdGVjaC1oaWRwcC1k
ZXZpY2UgMDAwMzowNDZEOjQwMTEuMDAwRDogaGlkcmF3NjogVVNCIEhJRCB2MS4xMSBLZXlib2Fy
ZCBbTG9naXRlY2ggV2lyZWxlc3MgVG91Y2hdIG9uIHVzYi0wMDAwOjQ5OjAwLjAtOC4yL2lucHV0
MjoxDQ1bICAgMTQuMDgzMzgyXSBpbnB1dDogTG9naXRlY2ggSzQwMCBhcyAvZGV2aWNlcy9wY2kw
MDAwOjQwLzAwMDA6NDA6MDMuMy8wMDAwOjQ0OjAwLjAvMDAwMDo0NTowYy4wLzAwMDA6NDk6MDAu
MC91c2I3LzctOC83LTguMi83LTguMjoxLjIvMDAwMzowNDZEOkM1MkIuMDAwOC8wMDAzOjA0NkQ6
NDAyNC4wMDBFL2lucHV0L2lucHV0MjYNDVsgICAxNC4xMDIyNTRdIGxvZ2l0ZWNoLWhpZHBwLWRl
dmljZSAwMDAzOjA0NkQ6NDAyNC4wMDBFOiBpbnB1dCxoaWRyYXc3OiBVU0IgSElEIHYxLjExIEtl
eWJvYXJkIFtMb2dpdGVjaCBLNDAwXSBvbiB1c2ItMDAwMDo0OTowMC4wLTguMi9pbnB1dDI6Mg0N
QmVnaW46IExvYWRpbmcgZXNzZW50aWFsIGRyaXZlcnMgLi4uIGRvbmUuDQ1CZWdpbjogUnVubmlu
ZyAvc2NyaXB0cy9pbml0LXByZW1vdW50IC4uLiBkb25lLg0NQmVnaW46IE1vdW50aW5nIHJvb3Qg
ZmlsZSBzeXN0ZW0gLi4uIEJlZ2luOiBSdW5uaW5nIC9zY3JpcHRzL2xvY2FsLXRvcCAuLi4gZG9u
ZS4NDUJlZ2luOiBSdW5uaW5nIC9zY3JpcHRzL2xvY2FsLXByZW1vdW50IC4uLiBbICAgMTQuMzQ2
NDk3XSBCdHJmcyBsb2FkZWQsIGNyYzMyYz1jcmMzMmMtaW50ZWwsIHpvbmVkPXllcywgZnN2ZXJp
dHk9eWVzDQ1TY2FubmluZyBmb3IgQnRyZnMgZmlsZXN5c3RlbXMNDXJlZ2lzdGVyZWQ6IC9kZXYv
bWFwcGVyL3Rlc3Rvcy10ZXN0b3NSb290Mg0NcmVnaXN0ZXJlZDogL2Rldi9zZGYzDQ1yZWdpc3Rl
cmVkOiAvZGV2L21hcHBlci90ZXN0b3MtZmluYW5jZQ0NcmVnaXN0ZXJlZDogL2Rldi9zZGIxDQ1y
ZWdpc3RlcmVkOiAvZGV2L21hcHBlci90ZXN0b3MtcG9sbHV4Um9vdA0NcmVnaXN0ZXJlZDogL2Rl
di9tYXBwZXIvdGVzdG9zLXRlc3Rvc1Jvb3QNDXJlZ2lzdGVyZWQ6IC9kZXYvbWFwcGVyL3Rlc3Rv
cy1maW5hbmNlMg0NcmVnaXN0ZXJlZDogL2Rldi9tYXBwZXIvdGVzdG9zLXBvbGx1eFJvb3QyDQ1b
ICAgMTUuMTEzNjczXSBCVFJGUzogZGV2aWNlIGxhYmVsIEJ1dHRlclJvb3QgZGV2aWQgMiB0cmFu
c2lkIDE1NyAvZGV2L21hcHBlci90ZXN0b3MtcG9sbHV4Um9vdDIgc2Nhbm5lZCBieSBidHJmcyAo
NzQ4KQ0NWyAgIDE1LjEyNTgyOV0gQlRSRlM6IGRldmljZSBsYWJlbCBCdXR0ZXJSb290IGRldmlk
IDEgdHJhbnNpZCAxNTcgL2Rldi9tYXBwZXIvdGVzdG9zLXBvbGx1eFJvb3Qgc2Nhbm5lZCBieSBi
dHJmcyAoNzQ4KQ0NWyAgIDE1LjEzNzgwNF0gQlRSRlM6IGRldmljZSBsYWJlbCBCdXR0ZXJCYWxs
IGRldmlkIDEgdHJhbnNpZCA3NDU0MTAyIC9kZXYvc2RiMSBzY2FubmVkIGJ5IGJ0cmZzICg3NDgp
DQ1bICAgMTUuMTQ4MDYxXSBCVFJGUzogZGV2aWNlIGxhYmVsIExvd1NlYyBkZXZpZCAyIHRyYW5z
aWQgMTE5OTcgL2Rldi9tYXBwZXIvdGVzdG9zLWZpbmFuY2UyIHNjYW5uZWQgYnkgYnRyZnMgKDc0
OCkNDVsgICAxNS4xNTk0MzFdIEJUUkZTOiBkZXZpY2UgbGFiZWwgTG93U2VjIGRldmlkIDEgdHJh
bnNpZCAxMTk5NyAvZGV2L21hcHBlci90ZXN0b3MtZmluYW5jZSBzY2FubmVkIGJ5IGJ0cmZzICg3
NDgpDQ1bICAgMTUuMTcxMDg2XSBCVFJGUzogZGV2aWNlIGxhYmVsIEhlcHRNaWdmIGRldmlkIDEg
dHJhbnNpZCAyMjc3NjYgL2Rldi9zZGYzIHNjYW5uZWQgYnkgYnRyZnMgKDc0OCkNDVsgICAxNS4x
ODA5NzBdIEJUUkZTOiBkZXZpY2UgbGFiZWwgdGVzdG9zUm9vdCBkZXZpZCAxIHRyYW5zaWQgMTMw
MCAvZGV2L21hcHBlci90ZXN0b3MtdGVzdG9zUm9vdCBzY2FubmVkIGJ5IGJ0cmZzICg3NDgpDQ1b
ICAgMTUuMTkzMjg5XSBCVFJGUzogZGV2aWNlIGxhYmVsIHRlc3Rvc1Jvb3QgZGV2aWQgMiB0cmFu
c2lkIDEzMDAgL2Rldi9tYXBwZXIvdGVzdG9zLXRlc3Rvc1Jvb3QyIHNjYW5uZWQgYnkgYnRyZnMg
KDc0OCkNDWRvbmUuDQ1CZWdpbjogV2lsbCBub3cgY2hlY2sgcm9vdCBmaWxlIHN5c3RlbSAuLi4g
ZnNjayBmcm9tIHV0aWwtbGludXggMi4zOC4xDQ1bL3NiaW4vZnNjay5idHJmcyAoMSkgLS0gL2Rl
di9tYXBwZXIvdGVzdG9zLXRlc3Rvc1Jvb3QyXSBmc2NrLmJ0cmZzIC1hIC9kZXYvbWFwcGVyL3Rl
c3Rvcy10ZXN0b3NSb290MiANDWRvbmUuDQ1bICAgMTUuMjUzNTUzXSBCVFJGUyBpbmZvIChkZXZp
Y2UgZG0tMCk6IGZpcnN0IG1vdW50IG9mIGZpbGVzeXN0ZW0gOTIyYjEwZjItYTgyNi00N2ZiLWFi
MzgtODM2ZjliMzk3ZmY3DQ1bICAgMTUuMjY0MjY1XSBCVFJGUyBpbmZvIChkZXZpY2UgZG0tMCk6
IHVzaW5nIGNyYzMyYyAoY3JjMzJjLWludGVsKSBjaGVja3N1bSBhbGdvcml0aG0NDVsgICAxNS4y
NzMzMjNdIEJUUkZTIGluZm8gKGRldmljZSBkbS0wKTogdXNpbmcgZnJlZSBzcGFjZSB0cmVlDQ1b
ICAgMTUuMjgyNTM3XSBCVFJGUyBpbmZvIChkZXZpY2UgZG0tMCk6IGVuYWJsaW5nIHNzZCBvcHRp
bWl6YXRpb25zDQ1kb25lLg0NQmVnaW46IFJ1bm5pbmcgL3NjcmlwdHMvbG9jYWwtYm90dG9tIC4u
LiBkb25lLg0NQmVnaW46IFJ1bm5pbmcgL3NjcmlwdHMvaW5pdC1ib3R0b20gLi4uIGRvbmUuDQ1b
ICAgMTUuMzIwMzI0XSBOb3QgYWN0aXZhdGluZyBNYW5kYXRvcnkgQWNjZXNzIENvbnRyb2wgYXMg
L3NiaW4vdG9tb3lvLWluaXQgZG9lcyBub3QgZXhpc3QuDQ1bICAgMTUuMzYxMjIwXSBzeXN0ZW1k
WzFdOiBJbnNlcnRlZCBtb2R1bGUgJ2F1dG9mczQnDQ1bICAgMTUuMzgxMzAyXSBzeXN0ZW1kWzFd
OiBzeXN0ZW1kIDI1Mi4xOS0xfmRlYjEydTEgcnVubmluZyBpbiBzeXN0ZW0gbW9kZSAoK1BBTSAr
QVVESVQgK1NFTElOVVggK0FQUEFSTU9SICtJTUEgK1NNQUNLICtTRUNDT01QICtHQ1JZUFQgLUdO
VVRMUyArT1BFTlNTTCArQUNMICtCTEtJRCArQ1VSTCArRUxGVVRJTFMgK0ZJRE8yICtJRE4yIC1J
RE4gK0lQVEMgK0tNT0QgK0xJQkNSWVBUU0VUVVAgK0xJQkZESVNLICtQQ1JFMiAtUFdRVUFMSVRZ
ICtQMTFLSVQgK1FSRU5DT0RFICtUUE0yICtCWklQMiArTFo0ICtYWiArWkxJQiArWlNURCAtQlBG
X0ZSQU1FV09SSyAtWEtCQ09NTU9OICtVVE1QICtTWVNWSU5JVCBkZWZhdWx0LWhpZXJhcmNoeT11
bmlmaWVkKQ0NWyAgIDE1LjQxODc1MF0gc3lzdGVtZFsxXTogRGV0ZWN0ZWQgdmlydHVhbGl6YXRp
b24geGVuLg0NWyAgIDE1LjQyNDU3OV0gc3lzdGVtZFsxXTogRGV0ZWN0ZWQgYXJjaGl0ZWN0dXJl
IHg4Ni02NC4NDQ0NV2VsY29tZSB0byAbWzFtRGViaWFuIEdOVS9MaW51eCAxMiAoYm9va3dvcm0p
G1swbSENDQ0NWyAgIDE1LjQzNzE0MF0gc3lzdGVtZFsxXTogSG9zdG5hbWUgc2V0IHRvIDx0ZXN0
b3M+Lg0NWyAgIDE1LjUxNDI4MF0gc3lzdGVtZFsxXTogUXVldWVkIHN0YXJ0IGpvYiBmb3IgZGVm
YXVsdCB0YXJnZXQgZ3JhcGhpY2FsLnRhcmdldC4NDVsgICAxNS41NDY0MzJdIHN5c3RlbWRbMV06
IENyZWF0ZWQgc2xpY2Ugc3lzdGVtLWdldHR5LnNsaWNlIC0gU2xpY2UgL3N5c3RlbS9nZXR0eS4N
DVsbWzA7MzJtICBPSyAgG1swbV0gQ3JlYXRlZCBzbGljZSAbWzA7MTszOW1zeXN0ZW0tZ2V0dHku
c2xpY2UbWzBtIC0gU2xpY2UgL3N5c3RlbS9nZXR0eS4NDVsgICAxNS41NjQxNThdIHN5c3RlbWRb
MV06IENyZWF0ZWQgc2xpY2Ugc3lzdGVtLW1vZHByb2JlLnNsaWNlIC0gU2xpY2UgL3N5c3RlbS9t
b2Rwcm9iZS4NDVsbWzA7MzJtICBPSyAgG1swbV0gQ3JlYXRlZCBzbGljZSAbWzA7MTszOW1zeXN0
ZW0tbW9kcHLigKZsaWNlG1swbSAtIFNsaWNlIC9zeXN0ZW0vbW9kcHJvYmUuDQ1bICAgMTUuNTgz
MjIxXSBzeXN0ZW1kWzFdOiBDcmVhdGVkIHNsaWNlIHN5c3RlbS1zZXJpYWxceDJkZ2V0dHkuc2xp
Y2UgLSBTbGljZSAvc3lzdGVtL3NlcmlhbC1nZXR0eS4NDVsbWzA7MzJtICBPSyAgG1swbV0gQ3Jl
YXRlZCBzbGljZSAbWzA7MTszOW1zeXN0ZW0tc2VyaWHigKYbWzBtIC0gU2xpY2UgL3N5c3RlbS9z
ZXJpYWwtZ2V0dHkuDQ1bICAgMTUuNjAzMTU5XSBzeXN0ZW1kWzFdOiBDcmVhdGVkIHNsaWNlIHN5
c3RlbS1zeXN0ZW1kXHgyZGZzY2suc2xpY2UgLSBTbGljZSAvc3lzdGVtL3N5c3RlbWQtZnNjay4N
DVsbWzA7MzJtICBPSyAgG1swbV0gQ3JlYXRlZCBzbGljZSAbWzA7MTszOW1zeXN0ZW0tc3lzdGXi
gKYbWzBtIC0gU2xpY2UgL3N5c3RlbS9zeXN0ZW1kLWZzY2suDQ1bICAgMTUuNjIzMTA3XSBzeXN0
ZW1kWzFdOiBDcmVhdGVkIHNsaWNlIHVzZXIuc2xpY2UgLSBVc2VyIGFuZCBTZXNzaW9uIFNsaWNl
Lg0NWxtbMDszMm0gIE9LICAbWzBtXSBDcmVhdGVkIHNsaWNlIBtbMDsxOzM5bXVzZXIuc2xpY2Ub
WzBtIC0gVXNlciBhbmQgU2Vzc2lvbiBTbGljZS4NDVsgICAxNS42NDAxMTldIHN5c3RlbWRbMV06
IFN0YXJ0ZWQgc3lzdGVtZC1hc2stcGFzc3dvcmQtY29uc29sZS5wYXRoIC0gRGlzcGF0Y2ggUGFz
c3dvcmQgUmVxdWVzdHMgdG8gQ29uc29sZSBEaXJlY3RvcnkgV2F0Y2guDQ1bG1swOzMybSAgT0sg
IBtbMG1dIFN0YXJ0ZWQgG1swOzE7Mzltc3lzdGVtZC1hc2stcGFzc3dv4oCmcXVlc3RzIHRvIENv
bnNvbGUgRGlyZWN0b3J5IFdhdGNoLg0NWyAgIDE1LjY2MjcxMl0gc3lzdGVtZFsxXTogU3RhcnRl
ZCBzeXN0ZW1kLWFzay1wYXNzd29yZC13YWxsLnBhdGggLSBGb3J3YXJkIFBhc3N3b3JkIFJlcXVl
c3RzIHRvIFdhbGwgRGlyZWN0b3J5IFdhdGNoLg0NWxtbMDszMm0gIE9LICAbWzBtXSBTdGFydGVk
IBtbMDsxOzM5bXN5c3RlbWQtYXNrLXBhc3N3b+KApiBSZXF1ZXN0cyB0byBXYWxsIERpcmVjdG9y
eSBXYXRjaC4NDVsgICAxNS42ODQ2NDNdIHN5c3RlbWRbMV06IFNldCB1cCBhdXRvbW91bnQgcHJv
Yy1zeXMtZnMtYmluZm10X21pc2MuYXV0b21vdW50IC0gQXJiaXRyYXJ5IEV4ZWN1dGFibGUgRmls
ZSBGb3JtYXRzIEZpbGUgU3lzdGVtIEF1dG9tb3VudCBQb2ludC4NDVsbWzA7MzJtICBPSyAgG1sw
bV0gU2V0IHVwIGF1dG9tb3VudCAbWzA7MTszOW1wcm9jLXN5cy3igKZybWF0cyBGaWxlIFN5c3Rl
bSBBdXRvbW91bnQgUG9pbnQuDQ1bICAgMTUuNzA4OTYzXSBzeXN0ZW1kWzFdOiBSZWFjaGVkIHRh
cmdldCBjcnlwdHNldHVwLnRhcmdldCAtIExvY2FsIEVuY3J5cHRlZCBWb2x1bWVzLg0NWxtbMDsz
Mm0gIE9LICAbWzBtXSBSZWFjaGVkIHRhcmdldCAbWzA7MTszOW1jcnlwdHNldHVwLuKApmdldBtb
MG0gLSBMb2NhbCBFbmNyeXB0ZWQgVm9sdW1lcy4NDVsgICAxNS43Mjc3NjRdIHN5c3RlbWRbMV06
IFJlYWNoZWQgdGFyZ2V0IGludGVncml0eXNldHVwLnRhcmdldCAtIExvY2FsIEludGVncml0eSBQ
cm90ZWN0ZWQgVm9sdW1lcy4NDVsbWzA7MzJtICBPSyAgG1swbV0gUmVhY2hlZCB0YXJnZXQgG1sw
OzE7MzltaW50ZWdyaXR5c2XigKZMb2NhbCBJbnRlZ3JpdHkgUHJvdGVjdGVkIFZvbHVtZXMuDQ1b
ICAgMTUuNzQ3ODk3XSBzeXN0ZW1kWzFdOiBSZWFjaGVkIHRhcmdldCBwYXRocy50YXJnZXQgLSBQ
YXRoIFVuaXRzLg0NWxtbMDszMm0gIE9LICAbWzBtXSBSZWFjaGVkIHRhcmdldCAbWzA7MTszOW1w
YXRocy50YXJnZXQbWzBtIC0gUGF0aCBVbml0cy4NDVsgICAxNS43NjI3ODhdIHN5c3RlbWRbMV06
IFJlYWNoZWQgdGFyZ2V0IHJlbW90ZS1mcy50YXJnZXQgLSBSZW1vdGUgRmlsZSBTeXN0ZW1zLg0N
WxtbMDszMm0gIE9LICAbWzBtXSBSZWFjaGVkIHRhcmdldCAbWzA7MTszOW1yZW1vdGUtZnMudGFy
Z2V0G1swbSAtIFJlbW90ZSBGaWxlIFN5c3RlbXMuDQ1bICAgMTUuNzgwODI1XSBzeXN0ZW1kWzFd
OiBSZWFjaGVkIHRhcmdldCBzbGljZXMudGFyZ2V0IC0gU2xpY2UgVW5pdHMuDQ1bG1swOzMybSAg
T0sgIBtbMG1dIFJlYWNoZWQgdGFyZ2V0IBtbMDsxOzM5bXNsaWNlcy50YXJnZXQbWzBtIC0gU2xp
Y2UgVW5pdHMuDQ1bICAgMTUuNzk1ODYxXSBzeXN0ZW1kWzFdOiBSZWFjaGVkIHRhcmdldCBzd2Fw
LnRhcmdldCAtIFN3YXBzLg0NWxtbMDszMm0gIE9LICAbWzBtXSBSZWFjaGVkIHRhcmdldCAbWzA7
MTszOW1zd2FwLnRhcmdldBtbMG0gLSBTd2Fwcy4NDVsgICAxNS44MDk2OTJdIHN5c3RlbWRbMV06
IFJlYWNoZWQgdGFyZ2V0IHZlcml0eXNldHVwLnRhcmdldCAtIExvY2FsIFZlcml0eSBQcm90ZWN0
ZWQgVm9sdW1lcy4NDVsbWzA7MzJtICBPSyAgG1swbV0gUmVhY2hlZCB0YXJnZXQgG1swOzE7Mzlt
dmVyaXR5c2V0dXDigKYgLSBMb2NhbCBWZXJpdHkgUHJvdGVjdGVkIFZvbHVtZXMuDQ1bICAgMTUu
ODI5NDcwXSBzeXN0ZW1kWzFdOiBMaXN0ZW5pbmcgb24gZG0tZXZlbnQuc29ja2V0IC0gRGV2aWNl
LW1hcHBlciBldmVudCBkYWVtb24gRklGT3MuDQ1bG1swOzMybSAgT0sgIBtbMG1dIExpc3Rlbmlu
ZyBvbiAbWzA7MTszOW1kbS1ldmVudC5zb2Nr4oCmIERldmljZS1tYXBwZXIgZXZlbnQgZGFlbW9u
IEZJRk9zLg0NWyAgIDE1Ljg0ODY0OV0gc3lzdGVtZFsxXTogTGlzdGVuaW5nIG9uIGx2bTItbHZt
cG9sbGQuc29ja2V0IC0gTFZNMiBwb2xsIGRhZW1vbiBzb2NrZXQuDQ1bG1swOzMybSAgT0sgIBtb
MG1dIExpc3RlbmluZyBvbiAbWzA7MTszOW1sdm0yLWx2bXBvbGxk4oCma2V0G1swbSAtIExWTTIg
cG9sbCBkYWVtb24gc29ja2V0Lg0NWyAgIDE1Ljg2NzU4N10gc3lzdGVtZFsxXTogTGlzdGVuaW5n
IG9uIHN5c3RlbWQtZnNja2Quc29ja2V0IC0gZnNjayB0byBmc2NrZCBjb21tdW5pY2F0aW9uIFNv
Y2tldC4NDVsbWzA7MzJtICBPSyAgG1swbV0gTGlzdGVuaW5nIG9uIBtbMDsxOzM5bXN5c3RlbWQt
ZnNja2TigKZzY2sgdG8gZnNja2QgY29tbXVuaWNhdGlvbiBTb2NrZXQuDQ1bICAgMTUuODg3ODUz
XSBzeXN0ZW1kWzFdOiBMaXN0ZW5pbmcgb24gc3lzdGVtZC1pbml0Y3RsLnNvY2tldCAtIGluaXRj
dGwgQ29tcGF0aWJpbGl0eSBOYW1lZCBQaXBlLg0NWxtbMDszMm0gIE9LICAbWzBtXSBMaXN0ZW5p
bmcgb24gG1swOzE7Mzltc3lzdGVtZC1pbml0Y+KApiBpbml0Y3RsIENvbXBhdGliaWxpdHkgTmFt
ZWQgUGlwZS4NDVsgICAxNS45MDgwMzJdIHN5c3RlbWRbMV06IExpc3RlbmluZyBvbiBzeXN0ZW1k
LWpvdXJuYWxkLWF1ZGl0LnNvY2tldCAtIEpvdXJuYWwgQXVkaXQgU29ja2V0Lg0NWxtbMDszMm0g
IE9LICAbWzBtXSBMaXN0ZW5pbmcgb24gG1swOzE7Mzltc3lzdGVtZC1qb3VybuKApnNvY2tldBtb
MG0gLSBKb3VybmFsIEF1ZGl0IFNvY2tldC4NDVsgICAxNS45Mjc0OTFdIHN5c3RlbWRbMV06IExp
c3RlbmluZyBvbiBzeXN0ZW1kLWpvdXJuYWxkLWRldi1sb2cuc29ja2V0IC0gSm91cm5hbCBTb2Nr
ZXQgKC9kZXYvbG9nKS4NDVsbWzA7MzJtICBPSyAgG1swbV0gTGlzdGVuaW5nIG9uIBtbMDsxOzM5
bXN5c3RlbWQtam91cm7igKZ0G1swbSAtIEpvdXJuYWwgU29ja2V0ICgvZGV2L2xvZykuDQ1bICAg
MTUuOTQ3NjEyXSBzeXN0ZW1kWzFdOiBMaXN0ZW5pbmcgb24gc3lzdGVtZC1qb3VybmFsZC5zb2Nr
ZXQgLSBKb3VybmFsIFNvY2tldC4NDVsbWzA7MzJtICBPSyAgG1swbV0gTGlzdGVuaW5nIG9uIBtb
MDsxOzM5bXN5c3RlbWQtam91cm5hbGQuc29ja2V0G1swbSAtIEpvdXJuYWwgU29ja2V0Lg0NWyAg
IDE1Ljk2NTIyMl0gc3lzdGVtZFsxXTogTGlzdGVuaW5nIG9uIHN5c3RlbWQtdWRldmQtY29udHJv
bC5zb2NrZXQgLSB1ZGV2IENvbnRyb2wgU29ja2V0Lg0NWxtbMDszMm0gIE9LICAbWzBtXSBMaXN0
ZW5pbmcgb24gG1swOzE7Mzltc3lzdGVtZC11ZGV2ZOKApi5zb2NrZXQbWzBtIC0gdWRldiBDb250
cm9sIFNvY2tldC4NDVsgICAxNS45ODQyOTJdIHN5c3RlbWRbMV06IExpc3RlbmluZyBvbiBzeXN0
ZW1kLXVkZXZkLWtlcm5lbC5zb2NrZXQgLSB1ZGV2IEtlcm5lbCBTb2NrZXQuDQ1bG1swOzMybSAg
T0sgIBtbMG1dIExpc3RlbmluZyBvbiAbWzA7MTszOW1zeXN0ZW1kLXVkZXZk4oCmbC5zb2NrZXQb
WzBtIC0gdWRldiBLZXJuZWwgU29ja2V0Lg0NWyAgIDE2LjAyMTU1M10gc3lzdGVtZFsxXTogTW91
bnRpbmcgZGV2LWh1Z2VwYWdlcy5tb3VudCAtIEh1Z2UgUGFnZXMgRmlsZSBTeXN0ZW0uLi4NDSAg
ICAgICAgIE1vdW50aW5nIBtbMDsxOzM5bWRldi1odWdlcGFnZXMubW91bnQbWzBtIC0gSHVnZSBQ
YWdlcyBGaWxlIFN5c3RlbS4uLg0NWyAgIDE2LjAzODkxMF0gc3lzdGVtZFsxXTogTW91bnRpbmcg
ZGV2LW1xdWV1ZS5tb3VudCAtIFBPU0lYIE1lc3NhZ2UgUXVldWUgRmlsZSBTeXN0ZW0uLi4NDSAg
ICAgICAgIE1vdW50aW5nIBtbMDsxOzM5bWRldi1tcXVldWUubW91bnQb4oCmUE9TSVggTWVzc2Fn
ZSBRdWV1ZSBGaWxlIFN5c3RlbS4uLg0NWyAgIDE2LjA1NzEwNV0gc3lzdGVtZFsxXTogTW91bnRp
bmcgc3lzLWtlcm5lbC1kZWJ1Zy5tb3VudCAtIEtlcm5lbCBEZWJ1ZyBGaWxlIFN5c3RlbS4uLg0N
ICAgICAgICAgTW91bnRpbmcgG1swOzE7Mzltc3lzLWtlcm5lbC1kZWJ1Zy7igKYbWzBtIC0gS2Vy
bmVsIERlYnVnIEZpbGUgU3lzdGVtLi4uDQ1bICAgMTYuMDc1MDA5XSBzeXN0ZW1kWzFdOiBNb3Vu
dGluZyBzeXMta2VybmVsLXRyYWNpbmcubW91bnQgLSBLZXJuZWwgVHJhY2UgRmlsZSBTeXN0ZW0u
Li4NDSAgICAgICAgIE1vdW50aW5nIBtbMDsxOzM5bXN5cy1rZXJuZWwtdHJhY2lu4oCmG1swbSAt
IEtlcm5lbCBUcmFjZSBGaWxlIFN5c3RlbS4uLg0NWyAgIDE2LjA5MjQ4Ml0gc3lzdGVtZFsxXTog
RmluaXNoZWQgYmxrLWF2YWlsYWJpbGl0eS5zZXJ2aWNlIC0gQXZhaWxhYmlsaXR5IG9mIGJsb2Nr
IGRldmljZXMuDQ1bG1swOzMybSAgT0sgIBtbMG1dIEZpbmlzaGVkIBtbMDsxOzM5bWJsay1hdmFp
bGFiaWxpdHku4oCmbSAtIEF2YWlsYWJpbGl0eSBvZiBibG9jayBkZXZpY2VzLg0NWyAgIDE2LjEx
MjI4MF0gc3lzdGVtZFsxXTogU3RhcnRpbmcga2V5Ym9hcmQtc2V0dXAuc2VydmljZSAtIFNldCB0
aGUgY29uc29sZSBrZXlib2FyZCBsYXlvdXQuLi4NDSAgICAgICAgIFN0YXJ0aW5nIBtbMDsxOzM5
bWtleWJvYXJkLXNldHVwLnNl4oCmU2V0IHRoZSBjb25zb2xlIGtleWJvYXJkIGxheW91dC4uLg0N
WyAgIDE2LjEzMTA1N10gc3lzdGVtZFsxXTogU3RhcnRpbmcga21vZC1zdGF0aWMtbm9kZXMuc2Vy
dmljZSAtIENyZWF0ZSBMaXN0IG9mIFN0YXRpYyBEZXZpY2UgTm9kZXMuLi4NDSAgICAgICAgIFN0
YXJ0aW5nIBtbMDsxOzM5bWttb2Qtc3RhdGljLW5vZGVz4oCmYXRlIExpc3Qgb2YgU3RhdGljIERl
dmljZSBOb2Rlcy4uLg0NWyAgIDE2LjE1MDQ2OV0gc3lzdGVtZFsxXTogU3RhcnRpbmcgbHZtMi1t
b25pdG9yLnNlcnZpY2UgLSBNb25pdG9yaW5nIG9mIExWTTIgbWlycm9ycywgc25hcHNob3RzIGV0
Yy4gdXNpbmcgZG1ldmVudGQgb3IgcHJvZ3Jlc3MgcG9sbGluZy4uLg0NICAgICAgICAgU3RhcnRp
bmcgG1swOzE7MzltbHZtMi1tb25pdG9yLnNlcnbigKZuZyBkbWV2ZW50ZCBvciBwcm9ncmVzcyBw
b2xsaW5nLi4uDQ1bICAgMTYuMTczNzUzXSBzeXN0ZW1kWzFdOiBTdGFydGluZyBtb2Rwcm9iZUBj
b25maWdmcy5zZXJ2aWNlIC0gTG9hZCBLZXJuZWwgTW9kdWxlIGNvbmZpZ2ZzLi4uDQ0gICAgICAg
ICBTdGFydGluZyAbWzA7MTszOW1tb2Rwcm9iZUBjb25maWdmc+KApm0gLSBMb2FkIEtlcm5lbCBN
b2R1bGUgY29uZmlnZnMuLi4NDVsgICAxNi4xOTIyODFdIHN5c3RlbWRbMV06IFN0YXJ0aW5nIG1v
ZHByb2JlQGRtX21vZC5zZXJ2aWNlIC0gTG9hZCBLZXJuZWwgTW9kdWxlIGRtX21vZC4uLg0NICAg
ICAgICAgU3RhcnRpbmcgG1swOzE7MzltbW9kcHJvYmVAZG1fbW9kLnPigKZbMG0gLSBMb2FkIEtl
cm5lbCBNb2R1bGUgZG1fbW9kLi4uDQ1bICAgMTYuMjEwNjQwXSBzeXN0ZW1kWzFdOiBTdGFydGlu
ZyBtb2Rwcm9iZUBkcm0uc2VydmljZSAtIExvYWQgS2VybmVsIE1vZHVsZSBkcm0uLi4NDSAgICAg
ICAgIFN0YXJ0aW5nIBtbMDsxOzM5bW1vZHByb2JlQGRybS5zZXJ2aWNlG1swbSAtIExvYWQgS2Vy
bmVsIE1vZHVsZSBkcm0uLi4NDVsgICAxNi4yMjc5ODVdIHN5c3RlbWRbMV06IFN0YXJ0aW5nIG1v
ZHByb2JlQGVmaV9wc3RvcmUuc2VydmljZSAtIExvYWQgS2VybmVsIE1vZHVsZSBlZmlfcHN0b3Jl
Li4uDQ0gICAgICAgICBTdGFydGluZyAbWzA7MTszOW1tb2Rwcm9iZUBlZmlfcHN0b+KApi0gTG9h
ZCBLZXJuZWwgTW9kdWxlIGVmaV9wc3RvcmUuLi4NDVsgICAxNi4yNDY5ODFdIHN5c3RlbWRbMV06
IFN0YXJ0aW5nIG1vZHByb2JlQGZ1c2Uuc2VydmljZSAtIExvYWQgS2VybmVsIE1vZHVsZSBmdXNl
Li4uDQ0gICAgICAgICBTdGFydGluZyAbWzA7MTszOW1tb2Rwcm9iZUBmdXNlLnNlcuKApmUbWzBt
IC0gTG9hZCBLZXJuZWwgTW9kdWxlIGZ1c2UuLi4NDVsgICAxNi4yNjQ4NTldIHN5c3RlbWRbMV06
IFN0YXJ0aW5nIG1vZHByb2JlQGxvb3Auc2VydmljZSAtIExvYWQgS2VybmVsIE1vZHVsZSBsb29w
Li4uDQ0gICAgICAgICBTdGFydGluZyAbWzA7MTszOW1tb2Rwcm9iZUBsb29wLnNlcuKApmUbWzBt
IC0gTG9hZCBLZXJuZWwgTW9kdWxlIGxvb3AuLi4NDVsgICAxNi4yODc2MjNdIHBzdG9yZTogVXNp
bmcgY3Jhc2ggZHVtcCBjb21wcmVzc2lvbjogZGVmbGF0ZQ0NWyAgIDE2LjI4Nzc5Ml0gQUNQSTog
YnVzIHR5cGUgZHJtX2Nvbm5lY3RvciByZWdpc3RlcmVkDQ1bICAgMTYuMjk1MTU4XSBwc3RvcmU6
IFJlZ2lzdGVyZWQgZWZpIGFzIHBlcnNpc3RlbnQgc3RvcmUgYmFja2VuZA0NWyAgIDE2LjMwOTI2
NV0gbG9vcDogbW9kdWxlIGxvYWRlZA0NWyAgIDE2LjMxOTEzNV0gZnVzZTogaW5pdCAoQVBJIHZl
cnNpb24gNy4zNykNDVsgICAxNi4zMTk2MDNdIHN5c3RlbWRbMV06IFN0YXJ0aW5nIHN5c3RlbWQt
am91cm5hbGQuc2VydmljZSAtIEpvdXJuYWwgU2VydmljZS4uLg0NICAgICAgICAgU3RhcnRpbmcg
G1swOzE7Mzltc3lzdGVtZC1qb3VybmFsZC5zZXJ2aWNlG1swbSAtIEpvdXJuYWwgU2VydmljZS4u
Lg0NWyAgIDE2LjM0MTIyNV0gc3lzdGVtZFsxXTogU3RhcnRpbmcgc3lzdGVtZC1tb2R1bGVzLWxv
YWQuc2VydmljZSAtIExvYWQgS2VybmVsIE1vZHVsZXMuLi4NDSAgICAgICAgIFN0YXJ0aW5nIBtb
MDsxOzM5bXN5c3RlbWQtbW9kdWxlcy1s4oCmcnZpY2UbWzBtIC0gTG9hZCBLZXJuZWwgTW9kdWxl
cy4uLg0NWyAgIDE2LjM1OTU4M10gc3lzdGVtZFsxXTogU3RhcnRpbmcgc3lzdGVtZC1yZW1vdW50
LWZzLnNlcnZpY2UgLSBSZW1vdW50IFJvb3QgYW5kIEtlcm5lbCBGaWxlIFN5c3RlbXMuLi4NDSAg
ICAgICAgIFN0YXJ0aW5nIBtbMDsxOzM5bXN5c3RlbWQtcmVtb3VudC1m4oCmbnQgUm9vdCBhbmQg
S2VybmVsIEZpbGUgU3lzdGVtcy4uLg0NWyAgIDE2LjM3OTUxMl0gc3lzdGVtZFsxXTogU3RhcnRp
bmcgc3lzdGVtZC11ZGV2LXRyaWdnZXIuc2VydmljZSAtIENvbGRwbHVnIEFsbCB1ZGV2IERldmlj
ZXMuLi4NDSAgICAgICAgIFN0YXJ0aW5nIBtbMDsxOzM5bXN5c3RlbWQtdWRldi10cmln4oCmWzBt
IC0gQ29sZHBsdWcgQWxsIHVkZXYgRGV2aWNlcy4uLg0NWyAgIDE2LjM5ODg0MV0gc3lzdGVtZFsx
XTogU3RhcnRlZCBzeXN0ZW1kLWpvdXJuYWxkLnNlcnZpY2UgLSBKb3VybmFsIFNlcnZpY2UuDQ1b
G1swOzMybSAgT0sgIBtbMG1dIFN0YXJ0ZWQgG1swOzE7Mzltc3lzdGVtZC1qb3VybmFsZC5zZXJ2
aWNlG1swbSAtIEpvdXJuYWwgU2VydmljZS4NDVsbWzA7MzJtICBPSyAgG1swbV0gTW91bnRlZCAb
WzA7MTszOW1kZXYtaHVnZXBhZ2VzLm1vdW50G1swbSAtIEh1Z2UgUGFnZXMgRmlsZSBTeXN0ZW0u
DQ1bG1swOzMybSAgT0sgIBtbMG1dIE1vdW50ZWQgG1swOzE7MzltZGV2LW1xdWV1ZS5tb3VudBtb
4oCmLSBQT1NJWCBNZXNzYWdlIFF1ZXVlIEZpbGUgU3lzdGVtLg0NWxtbMDszMm0gIE9LICAbWzBt
XSBNb3VudGVkIBtbMDsxOzM5bXN5cy1rZXJuZWwtZGVidWcubeKApm50G1swbSAtIEtlcm5lbCBE
ZWJ1ZyBGaWxlIFN5c3RlbS4NDVsbWzA7MzJtICBPSyAgG1swbV0gTW91bnRlZCAbWzA7MTszOW1z
eXMta2VybmVsLXRyYWNpbmfigKZudBtbMG0gLSBLZXJuZWwgVHJhY2UgRmlsZSBTeXN0ZW0uDQ1b
G1swOzMybSAgT0sgIBtbMG1dIEZpbmlzaGVkIBtbMDsxOzM5bWtleWJvYXJkLXNldHVwLnNl4oCm
LSBTZXQgdGhlIGNvbnNvbGUga2V5Ym9hcmQgbGF5b3V0Lg0NWxtbMDszMm0gIE9LICAbWzBtXSBG
aW5pc2hlZCAbWzA7MTszOW1rbW9kLXN0YXRpYy1ub2Rlc+KApnJlYXRlIExpc3Qgb2YgU3RhdGlj
IERldmljZSBOb2Rlcy4NDVsbWzA7MzJtICBPSyAgG1swbV0gRmluaXNoZWQgG1swOzE7MzltbW9k
cHJvYmVAY29uZmlnZnPigKZbMG0gLSBMb2FkIEtlcm5lbCBNb2R1bGUgY29uZmlnZnMuDQ1bG1sw
OzMybSAgT0sgIBtbMG1dIEZpbmlzaGVkIBtbMDsxOzM5bW1vZHByb2JlQGRtX21vZC5z4oCmZRtb
MG0gLSBMb2FkIEtlcm5lbCBNb2R1bGUgZG1fbW9kLg0NWxtbMDszMm0gIE9LICAbWzBtXSBGaW5p
c2hlZCAbWzA7MTszOW1tb2Rwcm9iZUBkcm0uc2VydmljZRtbMG0gLSBMb2FkIEtlcm5lbCBNb2R1
bGUgZHJtLg0NWxtbMDszMm0gIE9LICAbWzBtXSBGaW5pc2hlZCAbWzA7MTszOW1tb2Rwcm9iZUBl
ZmlfcHN0b+KApm0gLSBMb2FkIEtlcm5lbCBNb2R1bGUgZWZpX3BzdG9yZS4NDVsbWzA7MzJtICBP
SyAgG1swbV0gRmluaXNoZWQgG1swOzE7MzltbW9kcHJvYmVAZnVzZS5zZXJ2aWNlG1swbSAtIExv
YWQgS2VybmVsIE1vZHVsZSBmdXNlLg0NWxtbMDszMm0gIE9LICAbWzBtXSBGaW5pc2hlZCAbWzA7
MTszOW1tb2Rwcm9iZUBsb29wLnNlcnZpY2UbWzBtIC0gTG9hZCBLZXJuZWwgTW9kdWxlIGxvb3Au
DQ1bG1swOzMybSAgT0sgIBtbMG1dIEZpbmlzaGVkIBtbMDsxOzM5bXN5c3RlbWQtbW9kdWxlcy1s
4oCmc2VydmljZRtbMG0gLSBMb2FkIEtlcm5lbCBNb2R1bGVzLg0NWxtbMDszMm0gIE9LICAbWzBt
XSBGaW5pc2hlZCAbWzA7MTszOW1zeXN0ZW1kLXJlbW91bnQtZuKApm91bnQgUm9vdCBhbmQgS2Vy
bmVsIEZpbGUgU3lzdGVtcy4NDVsbWzA7MzJtICBPSyAgG1swbV0gRmluaXNoZWQgG1swOzE7Mzlt
c3lzdGVtZC11ZGV2LXRyaWfigKZlG1swbSAtIENvbGRwbHVnIEFsbCB1ZGV2IERldmljZXMuDQ0g
ICAgICAgICBNb3VudGluZyAbWzA7MTszOW1zeXMtZnMtZnVzZS1jb25uZeKAphtbMG0gLSBGVVNF
IENvbnRyb2wgRmlsZSBTeXN0ZW0uLi4NDSAgICAgICAgIE1vdW50aW5nIBtbMDsxOzM5bXN5cy1r
ZXJuZWwtY29uZmln4oCmZXJuZWwgQ29uZmlndXJhdGlvbiBGaWxlIFN5c3RlbS4uLg0NWxtbMDsz
Mm0gIE9LICAbWzBtXSBTdGFydGVkIBtbMDsxOzM5bWRtLWV2ZW50LnNlcnZpY2UbWzBtIC0gRGV2
aWNlLW1hcHBlciBldmVudCBkYWVtb24uDQ0gICAgICAgICBTdGFydGluZyAbWzA7MTszOW1pZnVw
ZG93bi1wcmUuc2VyduKApnluY2hyb25pemUgYm9vdCB1cCBmb3IgaWZ1cGRvd24uLi4NDSAgICAg
ICAgIFN0YXJ0aW5nIBtbMDsxOzM5bXN5c3RlbWQtam91cm5hbC1m4oCmaCBKb3VybmFsIHRvIFBl
cnNpc3RlbnQgU3RvcmFnZS4uLlsgICAxNi42MjEzMzNdIHMNDXlzdGVtZC1qb3VybmFsZFs4Mzdd
OiBSZWNlaXZlZCBjbGllbnQgcmVxdWVzdCB0byBmbHVzaCBydW50aW1lIGpvdXJuYWwuDQ0gICAg
ICAgICBTdGFydGluZyAbWzA7MTszOW1zeXN0ZW1kLXJhbmRvbS1zZeKApmljZRtbMG0gLSBMb2Fk
L1NhdmUgUmFuZG9tIFNlZWQuLi4NDSAgICAgICAgIFN0YXJ0aW5nIBtbMDsxOzM5bXN5c3RlbWQt
c3lzY3RsLnNl4oCmY2UbWzBtIC0gQXBwbHkgS2VybmVsIFZhcmlhYmxlcy4uLg0NICAgICAgICAg
U3RhcnRpbmcgG1swOzE7Mzltc3lzdGVtZC1zeXN1c2Vycy7igKZydmljZRtbMG0gLSBDcmVhdGUg
U3lzdGVtIFVzZXJzLi4uDQ1bG1swOzMybSAgT0sgIBtbMG1dIE1vdW50ZWQgG1swOzE7Mzltc3lz
LWZzLWZ1c2UtY29ubmVj4oCmbnQbWzBtIC0gRlVTRSBDb250cm9sIEZpbGUgU3lzdGVtLg0NWxtb
MDszMm0gIE9LICAbWzBtXSBNb3VudGVkIBtbMDsxOzM5bXN5cy1rZXJuZWwtY29uZmlnLuKApiBL
ZXJuZWwgQ29uZmlndXJhdGlvbiBGaWxlIFN5c3RlbS4NDVsbWzA7MzJtICBPSyAgG1swbV0gRmlu
aXNoZWQgG1swOzE7MzltaWZ1cGRvd24tcHJlLnNlcnbigKYgc3luY2hyb25pemUgYm9vdCB1cCBm
b3IgaWZ1cGRvd24uDQ1bG1swOzMybSAgT0sgIBtbMG1dIEZpbmlzaGVkIBtbMDsxOzM5bXN5c3Rl
bWQtam91cm5hbC1m4oCmdXNoIEpvdXJuYWwgdG8gUGVyc2lzdGVudCBTdG9yYWdlLg0NWxtbMDsz
Mm0gIE9LICAbWzBtXSBGaW5pc2hlZCAbWzA7MTszOW1zeXN0ZW1kLXJhbmRvbS1zZeKApnJ2aWNl
G1swbSAtIExvYWQvU2F2ZSBSYW5kb20gU2VlZC4NDVsbWzA7MzJtICBPSyAgG1swbV0gRmluaXNo
ZWQgG1swOzE7Mzltc3lzdGVtZC1zeXNjdGwuc2VydmljZRtbMG0gLSBBcHBseSBLZXJuZWwgVmFy
aWFibGVzLg0NWxtbMDszMm0gIE9LICAbWzBtXSBGaW5pc2hlZCAbWzA7MTszOW1sdm0yLW1vbml0
b3Iuc2VyduKApnNpbmcgZG1ldmVudGQgb3IgcHJvZ3Jlc3MgcG9sbGluZy4NDVsbWzA7MzJtICBP
SyAgG1swbV0gRmluaXNoZWQgG1swOzE7Mzltc3lzdGVtZC1zeXN1c2Vycy5zZXJ2aWNlG1swbSAt
IENyZWF0ZSBTeXN0ZW0gVXNlcnMuDQ0gICAgICAgICBTdGFydGluZyAbWzA7MTszOW1zeXN0ZW1k
LXRtcGZpbGVzLeKApmF0ZSBTdGF0aWMgRGV2aWNlIE5vZGVzIGluIC9kZXYuLi4NDVsbWzA7MzJt
ICBPSyAgG1swbV0gRmluaXNoZWQgG1swOzE7Mzltc3lzdGVtZC10bXBmaWxlcy3igKZyZWF0ZSBT
dGF0aWMgRGV2aWNlIE5vZGVzIGluIC9kZXYuDQ1bG1swOzMybSAgT0sgIBtbMG1dIFJlYWNoZWQg
dGFyZ2V0IBtbMDsxOzM5bWxvY2FsLWZzLXBy4oCmcmVwYXJhdGlvbiBmb3IgTG9jYWwgRmlsZSBT
eXN0ZW1zLg0NICAgICAgICAgU3RhcnRpbmcgG1swOzE7Mzltc3lzdGVtZC11ZGV2ZC5zZXLigKZn
ZXIgZm9yIERldmljZSBFdmVudHMgYW5kIEZpbGVzLi4uDQ1bG1swOzMybSAgT0sgIBtbMG1dIFN0
YXJ0ZWQgG1swOzE7Mzltc3lzdGVtZC11ZGV2ZC5zZXJ24oCmbmFnZXIgZm9yIERldmljZSBFdmVu
dHMgYW5kIEZpbGVzLg0NWyAgIDE2Ljg1MjcxOF0gQlRSRlMgaW5mbzogZGV2aWQgMiBkZXZpY2Ug
cGF0aCAvZGV2L21hcHBlci90ZXN0b3MtdGVzdG9zUm9vdDIgY2hhbmdlZCB0byAvZGV2L2RtLTEg
c2Nhbm5lZCBieSAodWRldi13b3JrZXIpICg4NzcpDQ1bG1swOzMybSAgT0sgIBtbMG1dIEZvdW5k
IGRldmljZSAbWzA7MTszOW1kZXYtaHZjMC5kZXZpY2UbWzBtIC0gL2Rldi9odmMwLlsgICAxNi44
Njk3MzddIEINDVRSRlMgaW5mbzogZGV2aWQgMSBkZXZpY2UgcGF0aCAvZGV2L21hcHBlci90ZXN0
b3MtdGVzdG9zUm9vdCBjaGFuZ2VkIHRvIC9kZXYvZG0tMCBzY2FubmVkIGJ5ICh1ZGV2LXdvcmtl
cikgKDg3OSkNDVsgICAxNi44ODczODNdIEJUUkZTIGluZm86IGRldmlkIDEgZGV2aWNlIHBhdGgg
L2Rldi9kbS0wIGNoYW5nZWQgdG8gL2Rldi9tYXBwZXIvdGVzdG9zLXRlc3Rvc1Jvb3Qgc2Nhbm5l
ZCBieSAodWRldi13b3JrZXIpICg4NzkpDQ1bG1swOzMybSAgT0sgIBtbMG1dIEZvdW5kIGRldmlj
ZSAbWzA7MTszOW1kZXYtZGlzay1ieVx44oCmbXN1bmcgU1NEIDk5MCBQUk8gMlRCIEVGSV9EUklW
RV9CLlsgICAxNi45MDA3NjJdIEINDVRSRlMgaW5mbzogZGV2aWQgMiBkZXZpY2UgcGF0aCAvZGV2
L2RtLTEgY2hhbmdlZCB0byAvZGV2L21hcHBlci90ZXN0b3MtdGVzdG9zUm9vdDIgc2Nhbm5lZCBi
eSAodWRldi13b3JrZXIpICg4NzcpDQ1bG1swOzMybSAgT0sgIBtbMG1dIEZvdW5kIGRldmljZSAb
WzA7MTszOW1kZXYtZGlzay1ieVx44oCmdW5nIFNTRCA5NzAgRVZPIDUwMEdCIEJvb3R0ZXN0b3Mu
DQ1bICAgMTYuOTM0ODE5XSBpbnB1dDogUG93ZXIgQnV0dG9uIGFzIC9kZXZpY2VzL0xOWFNZU1RN
OjAwL0xOWFNZQlVTOjAwL1BOUDBDMEM6MDAvaW5wdXQvaW5wdXQyNw0NWyAgIDE2Ljk0NDc0NV0g
QUNQSTogYnV0dG9uOiBQb3dlciBCdXR0b24gW1BXUkJdDQ1bICAgMTYuOTQ0NzgxXSBpWxtbMDsz
Mm0gIE9LICAbWzBtXSBSZWFjaGVkIHRhcmdldCAbWzA7MTszOW1zbWFydGNhcmQudGFyZ2V0G1sw
bSAtIFNtYXJ0IENhcmQubnB1dDogUG93ZXIgQnV0dA0Nb24gYXMgL2RldmljZXMvTE5YU1lTVE06
MDAvTE5YUFdSQk46MDAvaW5wdXQvaW5wdXQyOA0NICAgICAgICAgU3RhcnRpbmcgG1swOzE7Mzlt
c3lzdGVtZC1mc2NrQGRldi3igKYgL2Rldi9kaXNrL2J5LWxhYmVsL0Jvb3R0ZXN0b3MuLi5bICAg
MTYuOTY2NTY4XSBBDQ1DUEk6IGJ1dHRvbjogUG93ZXIgQnV0dG9uIFtQV1JGXQ0NICAgICAgICAg
U3RhcnRpbmcgG1swOzE7Mzltc3lzdGVtZC1mc2NrQGRldi3igKYgb24gL2Rldi9kaXNrL2J5LXV1
aWQvQ0FFMS0wQUZELi4uDQ1bG1swOzMybSAgT0sgIBtbMG1dIEZpbmlzaGVkIBtbMDsxOzM5bXN5
c3RlbWQtZnNja0BkZXYt4oCmb24gL2Rldi9kaXNrL2J5LWxhYmVsL0Jvb3R0ZXN0b3MuWyAgIDE2
Ljk4OTIzMF0gcw0NZCAwOjA6MDowOiBBdHRhY2hlZCBzY3NpIGdlbmVyaWMgc2cwIHR5cGUgMA0N
WxtbMDszMm0gIE9LICAbWzBtXSBGaW5pc2hlZCAbWzA7MTszOW1zeXN0ZW1kLWZzY2tAZGV2LeKA
pmNrIG9uIC9kZXYvZGlzay9ieS11dWlkL0NBRTEtMEFGRC5bICAgMTcuMDA0NjcxXSBzDQ1kIDE6
MDowOjA6IEF0dGFjaGVkIHNjc2kgZ2VuZXJpYyBzZzEgdHlwZSAwDQ0gICAgICAgICBNb3VudGlu
ZyAbWzA7MTszOW1ib290Lm1vdW50G1swbSAtIC9ib290Li4uWyAgIDE3LjAyMDUzNl0gcw0NZCAy
OjA6MDowOiBBdHRhY2hlZCBzY3NpIGdlbmVyaWMgc2cyIHR5cGUgMA0NWxtbMDszMm0gIE9LICAb
WzBtXSBTdGFydGVkIBtbMDsxOzM5bXN5c3RlbWQtZnNja2Quc2VyduKApnRlbSBDaGVjayBEYWVt
b24gdG8gcmVwb3J0IHN0YXR1cy5bICAgMTcuMDMyMzA5XSBzDQ1kIDM6MDowOjA6IEF0dGFjDUNo
ZWNraW5nIGluIHByb2dyZXNzIG9uIDEgZGlzayAoMC4wJSBjb21wbGV0ZSkNaGVkIHNjc2kgZ2Vu
ZXJpYyBzZzMgdHlwZSAwDQ0NQ2hlY2tpbmcgaW4gcHJvZ3Jlc3Mgb24gMCBkaXNrcyAoMTAwLjAl
IGNvbXBsZXRlKQ1bICAgMTcuMDUyNTMxXSBzZCA3OjA6MDowOiBBdHRhY2hlZCBzY3NpIGdlbmVy
aWMgc2c0IHR5cGUgMA0NWyAgIDE3LjA2MzUzMF0gc2QgNjowOjA6MDogQXR0YWNoZWQgc2NzaSBn
ZW5lcmljIHNnNSB0eXBlIDANDVsgICAxNy4wNjk2NDhdIHNlcyA2OjA6MDoxOiBBdHRhY2hlZCBz
Y3NpIGdlbmVyaWMgc2c2IHR5cGUgMTMNDVsgICAxNy4wNzU4OTFdIHNkIDg6MDowOjA6IEF0dGFj
aGVkIHNjc2kgZ2VuZXJpYyBzZzcgdHlwZSAwDQ1bICAgMTcuMTMwMDk5XSBjY3AgMDAwMDowNjow
MC41OiBlbmFibGluZyBkZXZpY2UgKDAwMDAgLT4gMDAwMikNDVsgICAxNy4xMzcwMjVdIGNjcCAw
MDAwOjA2OjAwLjU6IEJBUiAyOiBjYW4ndCByZXNlcnZlIFttZW0gMHhmMGIwMDAwMC0weGYwYmZm
ZmZmXQ0NWyAgIDE3LjE0NTIxMF0gY2NwIDAwMDA6MDY6MDAuNTogcGNpbV9pb21hcF9yZWdpb25z
IGZhaWxlZCAoLTE2KQ0NWyAgIDE3LjE1MTg2OF0gY2NwIDAwMDA6MDY6MDAuNTogaW5pdGlhbGl6
YXRpb24gZmFpbGVkDQ1bICAgMTcuMTU3NjE1XSBjY3A6IHByb2JlIG9mIDAwMDA6MDY6MDAuNSBm
YWlsZWQgd2l0aCBlcnJvciAtMTYNDVsgICAxNy4yMTYyNTNdIGNyeXB0ZDogbWF4X2NwdV9xbGVu
IHNldCB0byAxMDAwDQ1bICAgMTcuMjIzMDY1XSBpbnB1dDogUEMgU3BlYWtlciBhcyAvZGV2aWNl
cy9wbGF0Zm9ybS9wY3Nwa3IvaW5wdXQvaW5wdXQyOQ0NWyAgIDE3LjIzNjIyMF0gc3A1MTAwX3Rj
bzogU1A1MTAwL1NCODAwIFRDTyBXYXRjaERvZyBUaW1lciBEcml2ZXINDVsgICAxNy4yNDI4MzVd
IHNwNTEwMC10Y28gc3A1MTAwLXRjbzogVXNpbmcgMHhmZWIwMDAwMCBmb3Igd2F0Y2hkb2cgTU1J
TyBhZGRyZXNzDQ1bICAgMTcuMjUwODk4XSBzcDUxMDAtdGNvIHNwNTEwMC10Y286IFdhdGNoZG9n
IGhhcmR3YXJlIGlzIGRpc2FibGVkDQ1bICAgMTcuMjYwNDkzXSBtYzogTGludXggbWVkaWEgaW50
ZXJmYWNlOiB2MC4xMA0NWyAgIDE3LjUwNTAzMl0gY2ZnODAyMTE6IExvYWRpbmcgY29tcGlsZWQt
aW4gWC41MDkgY2VydGlmaWNhdGVzIGZvciByZWd1bGF0b3J5IGRhdGFiYXNlDQ1bICAgMTcuNTEz
OTI1XSBjZmc4MDIxMTogTG9hZGVkIFguNTA5IGNlcnQgJ2JlbmhAZGViaWFuLm9yZzogNTc3ZTAy
MWNiOTgwZTBlODIwODIxYmE3YjU0YjQ5NjFiOGI0ZmFkZicNDVsgICAxNy41MjQ1OTNdIGNmZzgw
MjExOiBMb2FkZWQgWC41MDkgY2VydCAncm9tYWluLnBlcmllckBnbWFpbC5jb206IDNhYmJjNmVj
MTQ2ZTA5ZDFiNjAxNmFiOWQ2Y2Y3MWRkMjMzZjAzMjgnDQ1bICAgMTcuNTM1ODEyXSBjZmc4MDIx
MTogTG9hZGVkIFguNTA5IGNlcnQgJ3Nmb3JzaGVlOiAwMGIyOGRkZjQ3YWVmOWNlYTcnDQ1bICAg
MTcuNTQzOTI1XSBwbGF0Zm9ybSByZWd1bGF0b3J5LjA6IGZpcm13YXJlOiBkaXJlY3QtbG9hZGlu
ZyBmaXJtd2FyZSByZWd1bGF0b3J5LmRiDQ1bICAgMTcuNTUyNDQwXSBwbGF0Zm9ybSByZWd1bGF0
b3J5LjA6IGZpcm13YXJlOiBkaXJlY3QtbG9hZGluZyBmaXJtd2FyZSByZWd1bGF0b3J5LmRiLnA3
cw0NWyAgIDE3LjU2NDk0OF0gYWxnOiBObyB0ZXN0IGZvciBmaXBzKGFuc2lfY3BybmcpIChmaXBz
X2Fuc2lfY3BybmcpDQ1bICAgMTcuNjg5MDU3XSBBVlgyIHZlcnNpb24gb2YgZ2NtX2VuYy9kZWMg
ZW5nYWdlZC4NDVsgICAxNy42OTY5MTldIHZpZGVvZGV2OiBMaW51eCB2aWRlbyBjYXB0dXJlIGlu
dGVyZmFjZTogdjIuMDANDVsgICAxNy43MDM0MTddIEFFUyBDVFIgbW9kZSBieTggb3B0aW1pemF0
aW9uIGVuYWJsZWQNDVsgICAxNy43MTM3NzldIEVYVDQtZnMgKG52bWUxbjFwMyk6IG1vdW50ZWQg
ZmlsZXN5c3RlbSB3aXRoIG9yZGVyZWQgZGF0YSBtb2RlLiBRdW90YSBtb2RlOiBub25lLg0NWxtb
MDszMm0gIE9LICAbWzBtXSBNb3VudGVkIBtbMDsxOzM5bWJvb3QubW91bnQbWzBtIC0gL2Jvb3Qu
DQ0gICAgICAgICBNb3VudGluZyAbWzA7MTszOW1ib290LWVmaS5tb3VudBtbMG0gLSAvYm9vdC9l
ZmkuLi4NDVsgICAxNy45OTM1MzJdIHNuZF9oZGFfaW50ZWwgMDAwMDowMTowMC4xOiBlbmFibGlu
ZyBkZXZpY2UgKDAwMDAgLT4gMDAwMikNDVsgICAxOC4wMDEyMDddIHNuZF9oZGFfaW50ZWwgMDAw
MDowMTowMC4xOiBGb3JjZSB0byBub24tc25vb3AgbW9kZQ0NWyAgIDE4LjAwNzk5N10gc25kX2hk
YV9pbnRlbCAwMDAwOjAxOjAwLjE6IEJBUiAwOiBjYW4ndCByZXNlcnZlIFttZW0gMHhmMGY2MDAw
MC0weGYwZjYzZmZmIDY0Yml0XQ0NWyAgIDE4LjAxODA1M10gc25kX2hkYV9pbnRlbCAwMDAwOjA2
OjAwLjc6IGVuYWJsaW5nIGRldmljZSAoMDAwMCAtPiAwMDAyKQ0NWyAgIDE4LjAyNTcyM10gc25k
X2hkYV9pbnRlbCAwMDAwOjA2OjAwLjc6IEJBUiAwOiBjYW4ndCByZXNlcnZlIFttZW0gMHhmMGQw
MDAwMC0weGYwZDA3ZmZmXQ0NWyAgIDE4LjAzMzY3OV0gc25kX2hkYV9pbnRlbCAwMDAwOjQxOjAw
LjE6IGVuYWJsaW5nIGRldmljZSAoMDAwMCAtPiAwMDAyKQ0NWyAgIDE4LjA0MzE2NV0gc25kX2hk
YV9pbnRlbCAwMDAwOjQxOjAwLjE6IEZvcmNlIHRvIG5vbi1zbm9vcCBtb2RlDQ1bICAgMTguMDU1
Mjg2XSBCVFJGUyBpbmZvOiBkZXZpZCAxIGRldmljZSBwYXRoIC9kZXYvbWFwcGVyL3Rlc3Rvcy10
ZXN0b3NSb290IGNoYW5nZWQgdG8gL2Rldi9kbS0wIHNjYW5uZWQgYnkgKHVkZXYtd29ya2VyKSAo
ODY5KQ0NWyAgIDE4LjA2ODcyMV0gQlRSRlMgaW5mbzogZGV2aWQgMiBkZXZpY2UgcGF0aCAvZGV2
L21hcHBlci90ZXN0b3MtdGVzdG9zUm9vdDIgY2hhbmdlZCB0byAvZGV2L2RtLTEgc2Nhbm5lZCBi
eSAodWRldi13b3JrZXIpICg4NzApDQ1bICAgMTguMDgyNTYwXSBCVFJGUyBpbmZvOiBkZXZpZCAx
IGRldmljZSBwYXRoIC9kZXYvZG0tMCBjaGFuZ2VkIHRvIC9kZXYvbWFwcGVyL3Rlc3Rvcy10ZXN0
b3NSb290IHNjYW5uZWQgYnkgKHVkZXYtd29ya2VyKSAoODY5KQ0NWyAgIDE4LjA5NjA3NV0gQlRS
RlMgaW5mbzogZGV2aWQgMiBkZXZpY2UgcGF0aCAvZGV2L2RtLTEgY2hhbmdlZCB0byAvZGV2L21h
cHBlci90ZXN0b3MtdGVzdG9zUm9vdDIgc2Nhbm5lZCBieSAodWRldi13b3JrZXIpICg4NzApDQ1b
G1swOzMybSAgT0sgIBtbMG1dIE1vdW50ZWQgG1swOzE7MzltYm9vdC1lZmkubW91bnQbWzBtIC0g
L2Jvb3QvZWZpLg0NWxtbMDszMm0gIE9LICAbWzBtXSBSZWFjaGVkIHRhcmdldCAbWzA7MTszOW1s
b2NhbC1mcy50YXJnZXQbWzBtIC0gTG9jYWwgRmlsZSBTeXN0ZW1zLlsgICAxOC4xMjA1NjRdIGkN
DW5wdXQ6IEhEQSBBVEkgSERNSSBIRE1JL0RQLHBjbT0zIGFzIC9kZXZpY2VzL3BjaTAwMDA6NDAv
MDAwMDo0MDowMS4xLzAwMDA6NDE6MDAuMS9zb3VuZC9jYXJkMy9pbnB1dDMwDQ0gICAgICAgICBT
dGFydGluZyAbWzA7MTszOW1hcHBhcm1vci5zZXJ2aWNlG1swbSAtIExvYWQgQXBwQXJtb3IgcHJv
ZmlsZXMuLi5bICAgMTguMTQxMjYyXSBpDQ1ucHV0OiBIREEgQVRJIEhETUkgSERNSS9EUCxwY209
NyBhcyAvZGV2aWNlcy9wY2kwMDAwOjQwLzAwMDA6NDA6MDEuMS8wMDAwOjQxOjAwLjEvc291bmQv
Y2FyZDMvaW5wdXQzMQ0NWyAgIDE4LjE0Mjg5MV0gYXVkaXQ6IHR5cGU9MTQwMCBhdWRpdCgxNzA1
NjQ2MzM2LjczOToyKTogYXBwYXJtb3I9IlNUQVRVUyIgb3BlcmF0aW9uPSJwcm9maWxlX2xvYWQi
IHByb2ZpbGU9InVuY29uZmluZWQiIG5hbWU9ImxzYl9yZWxlYXNlIiBwaWQ9MTE5OSBjb21tPSJh
cHBhcm1vcl9wYXJzZXIiDQ1bICAgMTguMTYxNDgyXSB1c2Jjb3JlOiByZWdpc3RlcmVkIG5ldyBp
bnRlcmZhY2UgZHJpdmVyIHNuZC11c2ItYXVkaW8NDVsgICAxOC4xNjIxNjVdIHVzYiA3LTcuMzog
Rm91bmQgVVZDIDEuMDAgZGV2aWNlIE1pY3Jvc29mdMKuIExpZmVDYW0gQ2luZW1hKFRNKSAoMDQ1
ZTowNzVkKQ0NWyAgIDE4LjE2ODMyN10gaW5wdXQ6IE1pY3Jvc29mdMKuIExpZmVDYW0gQ2luZW1h
KFRNKTogYXMgL2RldmljZXMvcGNpMDAwMDo0MC8wMDAwOjQwOjAzLjMvMDAwMDo0NDowMC4wLzAw
MDA6NDU6MGMuMC8wMDAwOjQ5OjAwLjAvdXNiNy83LTcvNy03LjMvNy03LjM6MS4wL2lucHV0L2lu
cHV0MzINDVsgICAxOC4xNjg0MjNdIHVzYmNvcmU6IHJlZ2lzdGVyZWQgbmV3IGludGVyZmFjZSBk
cml2ZXIgdXZjdmlkZW8NDVsgICAxOC4xNzgzMDBdIGF1ZGl0OiB0eXBlPTE0MDAgYXVkaXQoMTcw
NTY0NjMzNi43Mzk6Myk6IGFwcGFybW9yPSJTVEFUVVMiIG9wZXJhdGlvbj0icHJvZmlsZV9sb2Fk
IiBwcm9maWxlPSJ1bmNvbmZpbmVkIiBuYW1lPSJudmlkaWFfbW9kcHJvYmUiIHBpZD0xMjAwIGNv
bW09ImFwcGFybW9yX3BhcnNlciINDVsgICAxOC4yMzYzMDNdIGF1ZGl0OiB0eXBlPTE0MDAgYXVk
aXQoMTcwNTY0NjMzNi43Mzk6NCk6IGFwcGFybW9yPSJTVEFUVVMiIG9wZXJhdGlvbj0icHJvZmls
ZV9sb2FkIiBwcm9maWxlPSJ1bmNvbmZpbmVkIiBuYW1lPSJudmlkaWFfbW9kcHJvYmUvL2ttb2Qi
IHBpZD0xMjAwIGNvbW09ImFwcGFybW9yX3BhcnNlciINDVsgICAxOC4yMzYzMDVdIGF1ZGl0OiB0
eXBlPTE0MDAgYXVkaXQoMTcwNTY0NjMzNi43Mzk6NSk6IGFwcGFybW9yPSJTVEFUVVMiIG9wZXJh
dGlvbj0icHJvZmlsZV9sb2FkIiBwcm9maWxlPSJ1bmNvbmZpbmVkIiBuYW1lPSIvdXNyL2Jpbi9t
YW4iIHBpZD0xMjAyIGNvbW09ImFwcGFybW9yX3BhcnNlciINDVsgICAxOC4yMzYzMDddIGF1ZGl0
OiB0eXBlPTE0MDAgYXVkaXQoMTcwNTY0NjMzNi43Mzk6Nik6IGFwcGFybW9yPSJTVEFUVVMiIG9w
ZXJhdGlvbj0icHJvZmlsZV9sb2FkIiBwcm9maWxlPSJ1bmNvbmZpbmVkIiBuYW1lPSJtYW5fZmls
dGVyIiBwaWQ9MTIwMiBjb21tPSJhcHBhcm1vcl9wYXJzZXIiDQ1bICAgMTguMjM2MzA4XSBhdWRp
dDogdHlwZT0xNDAwIGF1ZGl0KDE3MDU2NDYzMzYuNzM5OjcpOiBhcHBhcm1vcj0iU1RBVFVTIiBv
cGVyYXRpb249InByb2ZpbGVfbG9hZCIgcHJvZmlsZT0idW5jb25maW5lZCIgbmFtZT0ibWFuX2dy
b2ZmIiBwaWQ9MTIwMiBjb21tPSJhcHBhcm1vcl9wYXJzZXIiDQ1bICAgMTguMjM2MzA5XSBhdWRp
dDogdHlwZT0xNDAwIGF1ZGl0KDE3MDU2NDYzMzYuNzQzOjgpOiBhcHBhcm1vcj0iU1RBVFVTIiBv
cGVyYXRpb249InByb2ZpbGVfbG9hZCIgcHJvZmlsZT0idW5jb25maW5lZCIgbmFtZT0iL3Vzci9s
aWIvTmV0d29ya01hbmFnZXIvbm0tZGhjcC1jbGllbnQuYWN0aW9uIiBwaWQ9MTIwMSBjb21tPSJh
cHBhcm1vcl9wYXJzZXIiDQ1bICAgMTguMjM2MzExXSBhdWRpdDogdHlwZT0xNDAwIGF1ZGl0KDE3
MDU2NDYzMzYuNzQzOjkpOiBhcHBhcm1vcj0iU1RBVFVTIiBvcGVyYXRpb249InByb2ZpbGVfbG9h
ZCIgcHJvZmlsZT0idW5jb25maW5lZCIgbmFtZT0iL3Vzci9saWIvTmV0d29ya01hbmFnZXIvbm0t
ZGhjcC1oZWxwZXIiIHBpZD0xMjAxIGNvbW09ImFwcGFybW9yX3BhcnNlciINDVsgICAxOC4yMzYz
MTJdIGF1ZGl0OiB0eXBlPTE0MDAgYXVkaXQoMTcwNTY0NjMzNi43NDM6MTApOiBhcHBhcm1vcj0i
U1RBVFVTIiBvcGVyYXRpb249InByb2ZpbGVfbG9hZCIgcHJvZmlsZT0idW5jb25maW5lZCIgbmFt
ZT0iL3Vzci9saWIvY29ubm1hbi9zY3JpcHRzL2RoY2xpZW50LXNjcmlwdCIgcGlkPTEyMDEgY29t
bT0iYXBwYXJtb3JfcGFyc2VyIg0NWyAgIDE4LjIzNjMxM10gYXVkaXQ6IHR5cGU9MTQwMCBhdWRp
dCgxNzA1NjQ2MzM2Ljc0MzoxMSk6IGFwcGFybW9yPSJTVEFUVVMiIG9wZXJhdGlvbj0icHJvZmls
ZV9sb2FkIiBwcm9maWxlPSJ1bmNvbmZpbmVkIiBuYW1lPSIveyx1c3IvfXNiaW4vZGhjbGllbnQi
IHBpZD0xMjAxIGNvbW09ImFwcGFybW9yX3BhcnNlciINDSAgICAgICAgIFN0YXJ0aW5nIBtbMDsx
OzM5bWNvbnNvbGUtc2V0dXAuc2Vy4oCmbSAtIFNldCBjb25zb2xlIGZvbnQgYW5kIGtleW1hcC4u
Lg0NICAgICAgICAgU3RhcnRpbmcgG1swOzE7Mzltc3lzdGVtZC1iaW5mbXQuc2XigKZldCBVcCBB
ZGRpdGlvbmFsIEJpbmFyeSBGb3JtYXRzLi4uDQ0gICAgICAgICBTdGFydGluZyAbWzA7MTszOW1z
eXN0ZW1kLXRtcGZpbGVzLeKApiBWb2xhdGlsZSBGaWxlcyBhbmQgRGlyZWN0b3JpZXMuLi4NDVsb
WzA7MzJtICBPSyAgG1swbV0gRmluaXNoZWQgG1swOzE7MzltYXBwYXJtb3Iuc2VydmljZRtbMG0g
LSBMb2FkIEFwcEFybW9yIHByb2ZpbGVzLg0NWxtbMDszMm0gIE9LICAbWzBtXSBGaW5pc2hlZCAb
WzA7MTszOW1jb25zb2xlLXNldHVwLnNlcuKAplswbSAtIFNldCBjb25zb2xlIGZvbnQgYW5kIGtl
eW1hcC4NDVsbWzA7MzJtICBPSyAgG1swbV0gRmluaXNoZWQgG1swOzE7Mzltc3lzdGVtZC10bXBm
aWxlcy3igKZ0ZSBWb2xhdGlsZSBGaWxlcyBhbmQgRGlyZWN0b3JpZXMuDQ1bICAgMTguNDUwODkz
XSBbZHJtXSByYWRlb24ga2VybmVsIG1vZGVzZXR0aW5nIGVuYWJsZWQuDQ0gICAgICAgICBNb3Vu
dGluZyAbWzA7MTszOW1wcm9jLXN5cy1mcy1iaW5mbeKApnV0YWJsZSBGaWxlIEZvcm1hdHMgRmls
ZSBTeXN0ZW0uLi5bICAgMTguNDU2OTk0XSByDQ1hZGVvbiAwMDAwOjQxOjAwLjA6IGVuYWJsaW5n
IGRldmljZSAoMDAwMCAtPiAwMDAzKQ0NWxtbMDszMm0gIE9LICAbWzBtXSBTdGFydGVkIBtbMDsx
OzM5bWlmdXBAZW5wMTM0czAuc2VydmljZRtbMG0gLSBpZnVwIGZvciBlbnAxMzRzMC5bICAgMTgu
NDczMTE0XSBbDQ1kcm1dIGluaXRpYWxpemluZyBrZXJuZWwgbW9kZXNldHRpbmcgKE9MQU5EIDB4
MTAwMjoweDY2MTEgMHgxMDI4OjB4MTAwMSAweDg3KS4NDVsgICAxOC40ODI0NDhdIHI4MTY5IDAw
MDA6ODY6MDAuMDogZmlybXdhcmU6IGRpcmVjdC1sb2FkaW5nIGZpcm13YXJlIHJ0bF9uaWMvcnRs
ODE2OGUtMy5mdw0NWxtbMDszMm0gIE9LICAbWzBtXSBTdGFydGVkIBtbMDsxOzM5bWlmdXBAZW5w
MTM1czAuc2VydmljZRtbMG0gLSBpZnVwIGZvciBlbnAxMzVzMC5bICAgMTguNTAxMDg5XSBSDQ1U
TDgyMTFFIEdpZ2FiaXQgRXRoZXJuZXQgcjgxNjktMC04NjAwOjAwOiBhdHRhY2hlZCBQSFkgZHJp
dmVyIChtaWlfYnVzOnBoeV9hZGRyPXI4MTY5LTAtODYwMDowMCwgaXJxPU1BQykNDSAgICAgICAg
IFN0YXJ0aW5nIBtbMDsxOzM5bW5ldHdvcmtpbmcuc2VydmljZRtbMG0gLSBSYWlzZSBuZXR3b3Jr
IGludGVyZmFjZXMuLi4NDVsgICAxOC41MzA0MjldIEJsdWV0b290aDogQ29yZSB2ZXIgMi4yMg0N
WyAgIDE4LjUzMDQyOV0gbXQ3OTIxZSAwMDAwOjQ2OjAwLjA6IGVuYWJsaW5nIGRldmljZSAoMDAw
MCAtPiAwMDAyKQ0NWyAgIDE4LjUzMDQ1M10gTkVUOiBSZWdpc3RlcmVkIFBGX0JMVUVUT09USCBw
cm90b2NvbCBmYW1pbHkNDVsgICAxOC41NDc1NDhdIEJsdWV0b290aDogSENJIGRldmljZSBhbmQg
Y29ubmVjdGlvbiBtYW5hZ2VyIGluaXRpYWxpemVkDQ1bICAgMTguNTQ3NTUyXSBCICAgICAgICAg
U3RhcnRpbmcgG1swOzE7Mzltc3lzdGVtZC10aW1lc3luY2TigKYgLSBOZXR3b3JrIFRpbWUgU3lu
Y2hyb25pemF0aW9uLi4ubHVldG9vdGg6IEhDSSBzbw0NY2tldCBsYXllciBpbml0aWFsaXplZA0N
WyAgIDE4LjU0NzU1M10gQmx1ZXRvb3RoOiBMMkNBUCBzb2NrZXQgbGF5ZXIgaW5pdGlhbGl6ZWQN
DVsgICAxOC41NDc1NTZdIEJsdWV0b290aDogU0NPIHNvY2tldCBsYXllciBpbml0aWFsaXplZA0N
WyAgIDE4LjU1MzUyNl0gbXQ3OTIxZSAwMDAwOjQ2OjAwLjA6IEFTSUMgcmV2aXNpb246IDc5MjIw
MDEwDQ0gICAgICAgICBTdGFydGluZyAbWzA7MTszOW1zeXN0ZW1kLXVwZGF0ZS11dOKApnJkIFN5
c3RlbSBCb290L1NodXRkb3duIGluIFVUTVAuLi4NDVsbWzA7MzJtICBPSyAgG1swbV0gRmluaXNo
ZWQgG1swOzE7Mzltc3lzdGVtZC11cGRhdGUtdXTigKZjb3JkIFN5c3RlbSBCb290L1NodXRkb3du
IGluIFVUTVAuDQ1bG1swOzMybSAgT0sgIBtbMG1dIFJlYWNoZWQgdGFyZ2V0IBtbMDsxOzM5bXNv
dW5kLnRhcmdldBtbMG0gLSBTb3VuZCBDYXJkLg0NWxtbMDszMm0gIE9LICAbWzBtXSBMaXN0ZW5p
bmcgb24gG1swOzE7Mzltc3lzdGVtZC1yZmtpbOKApmwgU3dpdGNoIFN0YXR1cyAvZGV2L3Jma2ls
bCBXYXRjaC4NDVsgICAxOC42NjkzMTVdIG10NzkyMWUgMDAwMDo0NjowMC4wOiBmaXJtd2FyZTog
ZGlyZWN0LWxvYWRpbmcgZmlybXdhcmUgbWVkaWF0ZWsvV0lGSV9NVDc5MjJfcGF0Y2hfbWN1XzFf
MV9oZHIuYmluDQ1bICAgMTguNjgxMDEyXSBtdDc5MjFlIDAwMDA6NDY6MDAuMDogSFcvU1cgVmVy
c2lvbjogMHg4YTEwOGExMCwgQnVpbGQgVGltZTogMjAyMjEyMjcxMjMxNTRhDQ1bICAgMTguNjgx
MDEyXSANDVsgICAxOC43MDY4ODRdIG10NzkyMWUgMDAwMDo0NjowMC4wOiBmaXJtd2FyZTogZGly
ZWN0LWxvYWRpbmcgZmlybXdhcmUgbWVkaWF0ZWsvV0lGSV9SQU1fQ09ERV9NVDc5MjJfMS5iaW4N
DVsgICAxOC43MTc3MjVdIG10NzkyMWUgMDAwMDo0NjowMC4wOiBXTSBGaXJtd2FyZSBWZXJzaW9u
OiBfX19fMDAwMDAwLCBCdWlsZCBUaW1lOiAyMDIyMTIyNzEyMzI0Mw0NWyAgIDE4LjcyOTg2Nl0g
QVRPTSBCSU9TOiBDODY5MDENDVsgICAxOC43MzMzNjRdIFtkcm1dIEdQVSBub3QgcG9zdGVkLiBw
b3N0aW5nIG5vdy4uLg0NWxtbMDszMm0gIE9LICAbWzBtXSBNb3VudGVkIBtbMDsxOzM5bXByb2Mt
c3lzLWZzLWJpbmZtdOKApmVjdXRhYmxlIEZpbGUgRm9ybWF0cyBGaWxlIFN5c3RlbS5bICAgMTgu
NzQ1MzEyXSBbDQ1kcm1dIENoYW5naW5nIGRlZmF1bHQgZGlzcGNsayBmcm9tIDQ4ME1oeiB0byA2
MDBNaHoNDVsgICAxOC43NTc1MDddIHJhZGVvbiAwMDAwOjQxOjAwLjA6IFZSQU06IDEwMjRNIDB4
MDAwMDAwMDAwMDAwMDAwMCAtIDB4MDAwMDAwMDAzRkZGRkZGRiAoMTAyNE0gdXNlZCkNDVsgICAx
OC43Njc3NzZdIHJhZGVvbiAwMDAwOjQxOjAwLjA6IEdUVDogMjA0OE0gMHgwMDAwMDAwMDQwMDAw
MDAwIC0gMHgwMDAwMDAwMEJGRkZGRkZGDQ1bICAgMTguNzY3Nzg3XSBbWxtbMDszMm0gIE9LICAb
WzBtXSBGaW5pc2hlZCAbWzA7MTszOW1zeXN0ZW1kLWJpbmZtdC5zZeKApiBTZXQgVXAgQWRkaXRp
b25hbCBCaW5hcnkgRm9ybWF0cy5kcm1dIERldGVjdGVkIFZSDQ1BTSBSQU09MTAyNE0sIEJBUj0x
MDI0TQ0NWyAgIDE4Ljc2Nzc4OF0gW2RybV0gUkFNIHdpZHRoIDY0Yml0cyBERFINDVsgICAxOC43
Njc4MTFdIFtkcm1dIHJhZGVvbjogMTAyNE0gb2YgVlJBTSBtZW1vcnkgcmVhZHkNDVsgICAxOC43
Njc4MTJdIFtkcm1dIHJhZGVvbjogMjA0OE0gb2YgR1RUIG1lbW9yeSByZWFkeS4NDVsgICAxOC43
Njc4MThdIFtkcm1dIExvYWRpbmcgb2xhbmQgTWljcm9jb2RlDQ1bICAgMTguNzY4NTEyXSByYWRl
b24gMDAwMDo0MTowMC4wOiBmaXJtd2FyZTogZGlyZWN0LWxvYWRpbmcgZmlybXdhcmUgcmFkZW9u
L29sYW5kX3BmcC5iaW4NDVsgICAxOC43NzQyMTRdIG10NzkyMWUgMDAwMDo0NjowMC4wOiBmaXJt
d2FyZTogZGlyZWN0LWxvYWRpbmcgZmlybXdhcmUgbWVkaWF0ZWsvV0lGSV9SQU1fQ09ERV9NVDc5
MjJfMS5iaW4NDVsgICAxOC44MzMzMjRdIHJhZGVvbiAwMDAwOjQxOjAwLjA6IGZpcm13YXJlOiBk
aXJlY3QtbG9hZGluZyBmaXJtd2FyZSByYWRlb24vb2xhbmRfbWUuYmluDQ1bICAgMTguODM1NTU5
XSByODE2OSAwMDAwOjg2OjAwLjAgZW5wMTM0czA6IExpbmsgaXMgRG93bg0NWyAgIDE4Ljg0Mjk1
OV0gcmFkZW9uIDAwMDA6NDE6MDAuMDogZmlybXdhcmU6IGRpcmVjdC1sb2FkaW5nIGZpcm13YXJl
IHJhZGVvbi9vbGFuZF9jZS5iaW4NDVsgICAxOC44NTU1MTJdIFJUTDgyMTFFIEdpZ2FiaXQgRXRo
ZXJuZXQgcjgxNjktMC04NzAwOjAwOiBhdHRhY2hlZCBQSFkgZHJpdmVyIChtaWlfYnVzOnBoeV9h
ZGRyPXI4MTY5LTAtODcwMDowMCwgaXJxPU1BQykNDVsgICAxOC44NTgxMzFdIHJhZGVvbiAwMDAw
OjQxOjAwLjA6IGZpcm13YXJlOiBkaXJlY3QtbG9hZGluZyBmaXJtd2FyZSByYWRlb24vb2xhbmRf
cmxjLmJpbg0NWyAgIDE4Ljg4MDM3OV0gcmFkZW9uIDAwMDA6NDE6MDAuMDogZmlybXdhcmU6IGRp
cmVjdC1sb2FkaW5nIGZpcm13YXJlIHJhZGVvbi9vbGFuZF9tYy5iaW4NDVsgICAxOC44ODk5OTBd
IHJhZGVvbiAwMDAwOjQxOjAwLjA6IGZpcm13YXJlOiBkaXJlY3QtbG9hZGluZyBmaXJtd2FyZSBy
YWRlb24vb2xhbmRfc21jLmJpbg0NWyAgIDE4Ljg5OTM4MF0gW2RybV0gSW50ZXJuYWwgdGhlcm1h
bCBjb250cm9sbGVyIHdpdGggZmFuIGNvbnRyb2wNDVsgICAxOC45MTA5NjldIFtkcm1dIHJhZGVv
bjogZHBtIGluaXRpYWxpemVkDQ1bICAgMTguOTE2MDYyXSByYWRlb24gMDAwMDo0MTowMC4wOiBm
aXJtd2FyZTogZGlyZWN0LWxvYWRpbmcgZmlybXdhcmUgcmFkZW9uL1RBSElUSV91dmQuYmluDQ1b
ICAgMTguOTI1Mzk5XSBbZHJtXSBHQVJUOiBudW0gY3B1IHBhZ2VzIDUyNDI4OCwgbnVtIGdwdSBw
YWdlcyA1MjQyODgNDVsgICAxOC45Mzc5ODBdIFtkcm1dIFBDSUUgR0FSVCBvZiAyMDQ4TSBlbmFi
bGVkICh0YWJsZSBhdCAweDAwMDAwMDAwMDAxNjUwMDApLg0NWyAgIDE4Ljk0NjI3Ml0gcmFkZW9u
IDAwMDA6NDE6MDAuMDogV0IgZW5hYmxlZA0NWyAgIDE4Ljk1MTI0OV0gcmFkZW9uIDAwMDA6NDE6
MDAuMDogZmVuY2UgZHJpdmVyIG9uIHJpbmcgMCB1c2UgZ3B1IGFkZHIgMHgwMDAwMDAwMDQwMDAw
YzAwDQ1bICAgMTguOTYwNDI1XSByYWRlb24gMDAwMDo0MTowMC4wOiBmZW5jZSBkcml2ZXIgb24g
cmluZyAxIHVzZSBncHUgYWRkciAweDAwMDAwMDAwNDAwMDBjMDQNDVsgICAxOC45Njk3OTFdIHJh
ZGVvbiAwMDAwOjQxOjAwLjA6IGZlbmNlIGRyaXZlciBvbiByaW5nIDIgdXNlIGdwdSBhZGRyIDB4
MDAwMDAwMDA0MDAwMGMwOA0NWyAgIDE4Ljk3OTAzN10gcmFkZW9uIDAwMDA6NDE6MDAuMDogZmVu
Y2UgZHJpdmVyIG9uIHJpbmcgMyB1c2UgZ3B1IGFkZHIgMHgwMDAwMDAwMDQwMDAwYzBjDQ1bICAg
MTguOTg4NDc2XSByYWRlb24gMDAwMDo0MTowMC4wOiBmZW5jZSBkcml2ZXIgb24gcmluZyA0IHVz
ZSBncHUgYWRkciAweDAwMDAwMDAwNDAwMDBjMTANDVsgICAxOC45OTgxNjFdIHJhZGVvbiAwMDAw
OjQxOjAwLjA6IGZlbmNlIGRyaXZlciBvbiByaW5nIDUgdXNlIGdwdSBhZGRyIDB4MDAwMDAwMDAw
MDA3NWExOA0NWyAgIDE5LjAwNzQ5Nl0gcmFkZW9uIDAwMDA6NDE6MDAuMDogcmFkZW9uOiBNU0kg
bGltaXRlZCB0byAzMi1iaXQNDVsgICAxOS4wMTQ0NTldIHJhZGVvbiAwMDAwOjQxOjAwLjA6IHJh
ZGVvbjogdXNpbmcgTVNJLg0NWyAgIDE5LjAyMDMwMF0gW2RybV0gcmFkZW9uOiBpcnEgaW5pdGlh
bGl6ZWQuDQ1bICAgMTkuMTgyNTIyXSBbZHJtXSByaW5nIHRlc3Qgb24gMCBzdWNjZWVkZWQgaW4g
MSB1c2Vjcw0NWyAgIDE5LjE4ODQyM10gW2RybV0gcmluZyB0ZXN0IG9uIDEgc3VjY2VlZGVkIGlu
IDEgdXNlY3MNDVsgICAxOS4xOTQzNDRdIFtkcm1dIHJpbmcgdGVzdCBvbiAyIHN1Y2NlZWRlZCBp
biAxIHVzZWNzDQ1bICAgMTkuMjAwNDE0XSBbZHJtXSByaW5nIHRlc3Qgb24gMyBzdWNjZWVkZWQg
aW4gMyB1c2Vjcw0NWyAgIDE5LjIwNjQ2MV0gW2RybV0gcmluZyB0ZXN0IG9uIDQgc3VjY2VlZGVk
IGluIDMgdXNlY3MNDVsgICAxOS4zODE2NTddIHI4MTY5IDAwMDA6ODc6MDAuMCBlbnAxMzVzMDog
TGluayBpcyBEb3duDQ1bICAgMTkuMzg4NDg3XSBbZHJtXSByaW5nIHRlc3Qgb24gNSBzdWNjZWVk
ZWQgaW4gMiB1c2Vjcw0NWyAgIDE5LjM5NDI5NV0gW2RybV0gVVZEIGluaXRpYWxpemVkIHN1Y2Nl
c3NmdWxseS4NDVsgICAxOS4zOTk2NDVdIFtkcm1dIGliIHRlc3Qgb24gcmluZyAwIHN1Y2NlZWRl
ZCBpbiAwIHVzZWNzDQ1bICAgMTkuNDA1ODMxXSBbZHJtXSBpYiB0ZXN0IG9uIHJpbmcgMSBzdWNj
ZWVkZWQgaW4gMCB1c2Vjcw0NWyAgIDE5LjQxMTk5NV0gW2RybV0gaWIgdGVzdCBvbiByaW5nIDIg
c3VjY2VlZGVkIGluIDAgdXNlY3MNDVsgICAxOS40MTg0MjBdIFtkcm1dIGliIHRlc3Qgb24gcmlu
ZyAzIHN1Y2NlZWRlZCBpbiAwIHVzZWNzDQ1bICAgMTkuNDI0NDkzXSBbZHJtXSBpYiB0ZXN0IG9u
IHJpbmcgNCBzdWNjZWVkZWQgaW4gMCB1c2Vjcw0NWyAgIDE5LjQ2NzM4MV0gdXNiY29yZTogcmVn
aXN0ZXJlZCBuZXcgaW50ZXJmYWNlIGRyaXZlciBidHVzYg0NWyAgIDE5LjQ2ODE3M10gW2RybV0g
YW1kZ3B1IGtlcm5lbCBtb2Rlc2V0dGluZyBlbmFibGVkLg0NWyAgIDE5LjQ3NjQ3MV0gYmx1ZXRv
b3RoIGhjaTA6IGZpcm13YXJlOiBkaXJlY3QtbG9hZGluZyBmaXJtd2FyZSBtZWRpYXRlay9CVF9S
QU1fQ09ERV9NVDc5MjJfMV8xX2hkci5iaW4NDVsgICAxOS40Nzk1OTBdIGFtZGdwdTogQ1JBVCB0
YWJsZSBub3QgZm91bmQNDVsgICAxOS40OTQ5MDldIGFtZGdwdTogVmlydHVhbCBDUkFUIHRhYmxl
IGNyZWF0ZWQgZm9yIENQVQ0NWyAgIDE5LjQ5NDkxN10gYVsbWzA7MzJtICBPSyAgG1swbV0gU3Rh
cnRlZCAbWzA7MTszOW1zeXN0ZW1kLXRpbWVzeW5jZC7igKYwbSAtIE5ldHdvcmsgVGltZSBTeW5j
aHJvbml6YXRpb24ubWRncHU6IFRvcG9sb2d5Og0NIEFkZCBDUFUgbm9kZQ0NWyAgIDE5LjQ5NTMx
NV0gYW1kZ3B1IDAwMDA6MDE6MDAuMDogZW5hYmxpbmcgZGV2aWNlICgwMDA2IC0+IDAwMDcpDQ1b
G1swOzMybSAgT0sgIBtbMG1dIEZpbmlzaGVkIBtbMDsxOzM5bW5ldHdvcmtpbmcuc2VydmljZRtb
MG0gLSBSYWlzZSBuZXR3b3JrIGludGVyZmFjZXMuWyAgIDE5LjUyMjc5Nl0gWw0NZHJtXSBpbml0
aWFsaXppbmcga2VybmVsIG1vZGVzZXR0aW5nIChQT0xBUklTMTAgMHgxMDAyOjB4NjdERiAweDE0
NjI6MHgzNDEzIDB4QzcpLg0NWyAgIDE5LjU0MjM1MV0gW1sbWzA7MzJtICBPSyAgG1swbV0gUmVh
Y2hlZCB0YXJnZXQgG1swOzE7MzltYmx1ZXRvb3RoLnRhcmdldBtbMG0gLSBCbHVldG9vdGggU3Vw
cG9ydC5kcm1dIHJlZ2lzdGVyIG1tDQ1pbyBiYXNlOiAweEYwRjAwMDAwDQ1bICAgMTkuNTU2ODM2
XSBbZHJtXSByZWdpc3RlciBtbWlvIHNpemU6IDI2MjE0NA0NWyAgIDE5LjU1NjkyNl0gW1sbWzA7
MzJtICBPSyAgG1swbV0gUmVhY2hlZCB0YXJnZXQgG1swOzE7MzltbmV0d29yay50YXJnZXQbWzBt
IC0gTmV0d29yay5kcm1dIGFkZCBpcCBibG9jDQ1rIG51bWJlciAwIDx2aV9jb21tb24+DQ1bICAg
MTkuNTc1MjM1XSBbZHJtXSBhZGQgaXAgYmxvY2sgbnVtYmVyIDEgPGdtY192OF8wPg0NWyAgIDE5
LjU3NTIzNl0gW2RybV0gYWRkIGlwIGJsb2NrIG51bWJlciAyIDx0b25nYV9paD4NDVsgICAxOS41
NzUyMzddIFtkcm1dIGFkZCBpcCBibG9jayBudW1iZXIgMyA8Z2Z4X3Y4XzA+DQ1bICAgMTkuNTc1
MjM3XSBbZHJtXSBhZGQgaXAgYmxvY2sgbnVtYmVyIDQgPHNkbWFfdjNfMD4NDVsgICAxOS41NzUy
MzhdIFtkcm1dIGFkZCBpcCBibG9jayBudW1iZXIgNSA8cG93ZXJwbGF5Pg0NWyAgIDE5LjU3NTIz
OF0gW2RybV0gYWRkIGlwIGJsb2NrIG51bWJlciA2IDxkbT4NDVsgICAxOS41NzUyMzldIFtkcm1d
IGFkZCBpcCBibG9jayBudW1iZXIgNyA8dXZkX3Y2XzA+DQ1bICAgMTkuNTc1MjM5XSBbZHJtXSBh
ZGQgaXAgYmxvY2sgbnVtYmVyIDggPHZjZV92M18wPg0NWxtbMDszMm0gIE9LICAbWzBtXSBSZWFj
aGVkIHRhcmdldCAbWzA7MTszOW1uZXR3b3JrLW9ubGluZS50YXJnZXQbWzBtIC0gTmV0d29yayBp
cyBPbmxpbmUuDQ1bG1swOzMybSAgT0sgIBtbMG1dIFJlYWNoZWQgdGFyZ2V0IBtbMDsxOzM5bXN5
c2luaXQudGFyZ2V0G1swbSAtIFN5c3RlbSBJbml0aWFsaXphdGlvbi4NDVsbWzA7MzJtICBPSyAg
G1swbV0gU3RhcnRlZCAbWzA7MTszOW1zeXN0ZW1kLXRtcGZpbGVzLWPigKYgQ2xlYW51cCBvZiBU
ZW1wb3JhcnkgRGlyZWN0b3JpZXMuWyAgIDE5LjY0NDk0N10gQg0NbHVldG9vdGg6IGhjaTA6IERl
dmljZSBzZXR1cCBpbiAxNzMzNTAgdXNlY3MNDVsgICAxOS42NTM5ODldIEJsdWV0b290aDogaGNp
MDogSENJIEVuaGFuY2VkIFNldHVwIFN5bmNocm9ub3VzIENvbm5lY3Rpb24gY29tbWFuZCBpcyBh
ZHZlcnRpc2VkLCBidXQgbm90IHN1cHBvcnRlZC4NDVsbWzA7MzJtICBPSyAgG1swbV0gUmVhY2hl
ZCB0YXJnZXQgG1swOzE7MzltdGltZS1zZXQudGFyZ2V0G1swbSAtIFN5c3RlbSBUaW1lIFNldC4N
DVsbWzA7MzJtICBPSyAgG1swbV0gU3RhcnRlZCAbWzA7MTszOW1hcHQtZGFpbHkudGltZXIbWzBt
IC0gRGFpbHkgYXB0IGRvd25sb2FkIGFjdGl2aXRpZXMuDQ1bG1swOzMybSAgT0sgIBtbMG1dIFN0
YXJ0ZWQgG1swOzE7MzltYXB0LWRhaWx5LXVwZ3JhZGUu4oCmIGFwdCB1cGdyYWRlIGFuZCBjbGVh
biBhY3Rpdml0aWVzLg0NWxtbMDszMm0gIE9LICAbWzBtXSBTdGFydGVkIBtbMDsxOzM5bWRwa2ct
ZGItYmFja3VwLnRpbeKApiBEYWlseSBkcGtnIGRhdGFiYXNlIGJhY2t1cCB0aW1lci4NDVsbWzA7
MzJtICBPSyAgG1swbV0gU3RhcnRlZCAbWzA7MTszOW1lMnNjcnViX2FsbC50aW1lchvigKZldGFk
YXRhIENoZWNrIGZvciBBbGwgRmlsZXN5c3RlbXMuDQ1bG1swOzMybSAgT0sgIBtbMG1dIFN0YXJ0
ZWQgG1swOzE7MzltZnN0cmltLnRpbWVyG1swbSAtIERpc2NhcmQgdW51c2VkIGJsb2NrcyBvbmNl
IGEgd2Vlay4NDVsbWzA7MzJtICBPSyAgG1swbV0gU3RhcnRlZCAbWzA7MTszOW1md3VwZC1yZWZy
ZXNoLnRpbWXigKYgUmVmcmVzaCBmd3VwZCBtZXRhZGF0YSByZWd1bGFybHkuDQ1bG1swOzMybSAg
T0sgIBtbMG1dIFN0YXJ0ZWQgG1swOzE7MzltbG9ncm90YXRlLnRpbWVyG1swbSAtIERhaWx5IHJv
dGF0aW9uIG9mIGxvZyBmaWxlcy4NDVsbWzA7MzJtICBPSyAgG1swbV0gU3RhcnRlZCAbWzA7MTsz
OW1tYW4tZGIudGltZXIbWzBtIC0gRGFpbHkgbWFuLWRiIHJlZ2VuZXJhdGlvbi4NDVsbWzA7MzJt
ICBPSyAgG1swbV0gUmVhY2hlZCB0YXJnZXQgG1swOzE7MzltdGltZXJzLnRhcmdldBtbMG0gLSBU
aW1lciBVbml0cy4NDVsbWzA7MzJtICBPSyAgG1swbV0gTGlzdGVuaW5nIG9uIBtbMDsxOzM5bWRi
dXMuc29ja2V0G1vigKYtIEQtQnVzIFN5c3RlbSBNZXNzYWdlIEJ1cyBTb2NrZXQuDQ1bG1swOzMy
bSAgT0sgIBtbMG1dIFJlYWNoZWQgdGFyZ2V0IBtbMDsxOzM5bXNvY2tldHMudGFyZ2V0G1swbSAt
IFNvY2tldCBVbml0cy4NDVsbWzA7MzJtICBPSyAgG1swbV0gUmVhY2hlZCB0YXJnZXQgG1swOzE7
MzltYmFzaWMudGFyZ2V0G1swbSAtIEJhc2ljIFN5c3RlbS4NDVsbWzA7MzJtICBPSyAgG1swbV0g
U3RhcnRlZCAbWzA7MTszOW1jcm9uLnNlcnZpY2UbWzBtIC3igKZrZ3JvdW5kIHByb2dyYW0gcHJv
Y2Vzc2luZyBkYWVtb24uDQ0gICAgICAgICBTdGFydGluZyAbWzA7MTszOW1kYnVzLnNlcnZpY2Ub
WzBtIC0gRC1CdXMgU3lzdGVtIE1lc3NhZ2UgQnVzLi4uDQ0gICAgICAgICBTdGFydGluZyAbWzA7
MTszOW1lMnNjcnViX3JlYXAuc2VyduKApmUgZXh0NCBNZXRhZGF0YSBDaGVjayBTbmFwc2hvdHMu
Li4NDSAgICAgICAgIFN0YXJ0aW5nIBtbMDsxOzM5bXBvbGtpdC5zZXJ2aWNlG1swbSAtIEF1dGhv
cml6YXRpb24gTWFuYWdlci4uLg0NICAgICAgICAgU3RhcnRpbmcgG1swOzE7Mzltc3NoLnNlcnZp
Y2UbWzBtIC0gT3BlbkJTRCBTZWN1cmUgU2hlbGwgc2VydmVyLi4uDQ0gICAgICAgICBTdGFydGlu
ZyAbWzA7MTszOW1zeXN0ZW1kLWxvZ2luZC5zZeKApmljZRtbMG0gLSBVc2VyIExvZ2luIE1hbmFn
ZW1lbnQuLi4NDSAgICAgICAgIFN0YXJ0aW5nIBtbMDsxOzM5bXN5c3RlbWQtcmZraWxsLnNl4oCm
TG9hZC9TYXZlIFJGIEtpbGwgU3dpdGNoIFN0YXR1cy4uLg0NICAgICAgICAgU3RhcnRpbmcgG1sw
OzE7Mzltc3lzdGVtZC11c2VyLXNlc3PigKZ2aWNlG1swbSAtIFBlcm1pdCBVc2VyIFNlc3Npb25z
Li4uDQ0gICAgICAgICBTdGFydGluZyAbWzA7MTszOW11ZGlza3MyLnNlcnZpY2UbWzBtIC0gRGlz
ayBNYW5hZ2VyLi4uDQ0gICAgICAgICBTdGFydGluZyAbWzA7MTszOW14ZW4uc2VydmljZRtbMG0g
LSBMU0I6IFhlbiBkYWVtb25zLi4uDQ1bG1swOzMybSAgT0sgIBtbMG1dIFN0YXJ0ZWQgG1swOzE7
Mzltc3lzdGVtZC1yZmtpbGwuc2Vy4oCmLSBMb2FkL1NhdmUgUkYgS2lsbCBTd2l0Y2ggU3RhdHVz
Lg0NWxtbMDszMm0gIE9LICAbWzBtXSBTdGFydGVkIBtbMDsxOzM5bWRidXMuc2VydmljZRtbMG0g
LSBELUJ1cyBTeXN0ZW0gTWVzc2FnZSBCdXMuDQ1bG1swOzMybSAgT0sgIBtbMG1dIEZpbmlzaGVk
IBtbMDsxOzM5bWUyc2NydWJfcmVhcC5zZXJ24oCmaW5lIGV4dDQgTWV0YWRhdGEgQ2hlY2sgU25h
cHNob3RzLg0NWxtbMDszMm0gIE9LICAbWzBtXSBGaW5pc2hlZCAbWzA7MTszOW1zeXN0ZW1kLXVz
ZXItc2Vzc+KApmVydmljZRtbMG0gLSBQZXJtaXQgVXNlciBTZXNzaW9ucy4NDVsbWzA7MzJtICBP
SyAgG1swbV0gU3RhcnRlZCAbWzA7MTszOW1zeXN0ZW1kLWxvZ2luZC5zZXJ2aWNlG1swbSAtIFVz
ZXIgTG9naW4gTWFuYWdlbWVudC4NDVsbWzA7MzJtICBPSyAgG1swbV0gU3RhcnRlZCAbWzA7MTsz
OW1wb2xraXQuc2VydmljZRtbMG0gLSBBdXRob3JpemF0aW9uIE1hbmFnZXIuDQ1bICAgMTkuOTI4
NTUwXSBhbWRncHUgMDAwMDowMTowMC4wOiBhbWRncHU6IEZldGNoZWQgVkJJT1MgZnJvbSBST00g
QkFSDQ1bICAgMTkuOTM1OTA0XSBhICAgICAgICAgU3RhcnRpbmcgG1swOzE7MzltTW9kZW1NYW5h
Z2VyLnNlcnZpY2UbWzBtIC0gTW9kZW0gTWFuYWdlci4uLm1kZ3B1OiBBVE9NIEJJT1MNDTogMTEz
LVYzNDExMS1GMQ0NWyAgIDE5Ljk0ODM5M10gW2RybV0gVVZEIGlzIGVuYWJsZWQgaW4gVk0gbW9k
ZQ0NWyAgIDE5Ljk1MzI2NF0gW2RybV0gVVZEIEVOQyBpcyBlbmFibGVkIGluIFZNIG1vZGUNDVsg
ICAxOS45NTMyNjddIFtbG1swOzMybSAgT0sgIBtbMG1dIFN0YXJ0ZWQgG1swOzE7MzltZ2V0dHlA
dHR5MS5zZXJ2aWNlG1swbSAtIEdldHR5IG9uIHR0eTEuZHJtXSBWQ0UgZW5hYmxlZA0NIGluIFZN
IG1vZGUNDVsgICAxOS45NTMyNjhdIGFtZGdwdSAwMDAwOjAxOjAwLjA6IGFtZGdwdTogVHJ1c3Rl
ZCBNZW1vcnkgWm9uZSAoVE1aKSBmZWF0dXJlIG5vdCBzdXBwb3J0ZWQNDVsgICAxOS45NTMzMTBd
IFtkcm1dIHZtIHNpemUgaXMgNjQgR0IsIDIgbGV2ZWxzLCBibG9jayBzaXplIGlzIDEwLWJpdCwg
ZnJhZ21lbnQgc2l6ZSBpcyA5LWJpdA0NWxtbMDszMm0gIE9LICAbWzBtXSBTdGFydGVkIBtbMDsx
OzM5bXNlcmlhbC1nZXR0eUBodmMwLnNlcnZpY2UbWzBtIC0gU2VyaWFsIEdldHR5IG9uIGh2YzAu
WyAgIDE5Ljk5MTM3MF0gYQ0NbWRncHUgMDAwMDowMTowMC4wOiBmaXJtd2FyZTogZGlyZWN0LWxv
YWRpbmcgZmlybXdhcmUgYW1kZ3B1L3BvbGFyaXMxMF9tYy5iaW4NDVsgICAxOS45OTc1NTldIG10
NzkyMWUgMDAwMDo0NjowMC4wIHdscDcwczA6IHJlbmFtZWQgZnJvbSB3bGFuMA0NWyAgIDIwLjAw
OTUxOV0gYW1kZ3B1IDAwMDA6MDE6MDAuMDogYW1kZ3B1OiBWUkFNOiA0MDk2TSAweDAwMDAwMEY0
MDAwMDAwMDAgLSAweDAwMDAwMEY0RkZGRkZGRkYgKDQwOTZNIHVzZWQpDQ1bICAgMjAuMDI3MzEz
XSBhbWRncHUgMDAwMDowMTowMC4wOiBhbWRncHU6IEdBUlQ6IDI1Nk0gMHgwMDAwMDBGRjAwMDAw
MDAwIC0gMHgwMDAwMDBGRjBGRkZGRkZGDQ1bICAgMjAuMDI3MzIwXSBbWxtbMDszMm0gIE9LICAb
WzBtXSBSZWFjaGVkIHRhcmdldCAbWzA7MTszOW1nZXR0eS50YXJnZXQbWzBtIC0gTG9naW4gUHJv
bXB0cy5kcm1dIERldGVjdGVkIFZSDQ1BTSBSQU09NDA5Nk0sIEJBUj00MDk2TQ0NWyAgIDIwLjAy
NzMyMV0gW2RybV0gUkFNIHdpZHRoIDI1NmJpdHMgR0REUjUNDVsgICAyMC4wMjczNDBdIFtkcm1d
IGFtZGdwdTogNDA5Nk0gb2YgVlJBTSBtZW1vcnkgcmVhZHkNDVsgICAyMC4wNjIwMzFdIFtkcm1d
IGFtZGdwdTogMzk2Mk0gb2YgR1RUIG1lbW9yeSByZWFkeS4NDVsgICAyMC4wNjc5MThdIFtkcm1d
IEdBUlQ6IG51bSBjcHUgcGFnZXMgNjU1MzYsIG51bSBncHUgcGFnZXMgNjU1MzYNDVsgICAyMC4w
NzU0NTBdIHhlbjp4ZW5fZXZ0Y2huOiBFdmVudC1jaGFubmVsIGRldmljZSBpbnN0YWxsZWQNDVsg
ICAyMC4wNzYyNDVdIFtkcm1dIFBDSUUgR0FSVCBvZiAyNTZNIGVuYWJsZWQgKHRhYmxlIGF0IDB4
MDAwMDAwRjQwMDM4MDAwMCkuDQ1bICAgMjAuMDgxNTQxXSBbZHJtXSBpYiB0ZXN0IG9uIHJpbmcg
NSBzdWNjZWVkZWQNDVsgICAyMC4wODE4NzNdIFtkcm1dIFJhZGVvbiBEaXNwbGF5IENvbm5lY3Rv
cnMNDVsgICAyMC4wOTA0MDddIGFtZGdwdSAwMDAwOjAxOjAwLjA6IGZpcm13YXJlOiBkaXJlY3Qt
bG9hZGluZyBmaXJtd2FyZSBhbWRncHUvcG9sYXJpczEwX3BmcF8yLmJpbg0NWyAgIDIwLjA5NDk2
OV0gW2RybV0gQ29ubmVjdG9yIDA6DQ1bICAgMjAuMDk0OTcwXSBbZHJtXSAgIERQLTENDVsgICAy
MC4wOTQ5NzBdIFtkcm1dICAgSFBEMQ0NWyAgIDIwLjA5NDk3MF0gW2RybV0gICBEREM6IDB4NjU0
MCAweDY1NDAgMHg2NTQ0IDB4NjU0NCAweDY1NDggMHg2NTQ4IDB4NjU0YyAweDY1NGMNDVsgICAy
MC4wOTQ5NzFdIFtkcm1dICAgRW5jb2RlcnM6DQ1bICAgMjAuMDk0OTcxXSBbZHJtXSAgICAgREZQ
MTogSU5URVJOQUxfVU5JUEhZDQ1bICAgMjAuMDk0OTcyXSBbZHJtXSBDb25uZWN0b3IgMToNDVsg
ICAyMC4wOTQ5NzJdIFtkcm1dICAgVkdBLTENDVsgICAyMC4wOTQ5NzJdIFtkcm1dICAgRERDOiAw
eDY1MzAgMHg2NTMwIDB4NjUzNCAweDY1MzQgMHg2NTM4IDB4NjUzOCAweDY1M2MgMHg2NTNjDQ1b
ICAgMjAuMDk0OTcyXSBbZHJtXSAgIEVuY29kZXJzOg0NWyAgIDIwLjA5NDk3M10gW2RybV0gICAg
IENSVDE6IElOVEVSTkFMX0tMRFNDUF9EQUMxDQ1bICAgMjAuMTYxMjg3XSBhbWRncHUgMDAwMDow
MTowMC4wOiBmaXJtd2FyZTogZGlyZWN0LWxvYWRpbmcgZmlybXdhcmUgYW1kZ3B1L3BvbGFyaXMx
MF9tZV8yLmJpbg0NWyAgIDIwLjE3MTQyNV0gYW1kZ3B1IDAwMDA6MDE6MDAuMDogZmlybXdhcmU6
IGRpcmVjdC1sb2FkaW5nIGZpcm13YXJlIGFtZGdwdS9wb2xhcmlzMTBfY2VfMi5iaW4NDVsgICAy
MC4xNzgzMjZdIFtkcm1dIGZiIG1hcHBhYmxlIGF0IDB4Njk5NDA1NzEwMDANDVsgICAyMC4xODE0
MDddIFtkcm1dIENoYWluZWQgSUIgc3VwcG9ydCBlbmFibGVkIQ0NWyAgIDIwLjE4NjYyN10gW2Ry
bV0gdnJhbSBhcHBlciBhdCAweDY5OTQwMDAwMDAwDQ1bICAgMjAuMTg2NjI4XSBbZHJtXSBzaXpl
IDk0MzcxODQNDVsgICAyMC4xODY2MjldIFtkcm1dIGZiIGRlcHRoIGlzIDI0DQ1bICAgMjAuMTg2
NjI5XSBbZHJtXSAgICBwaXRjaCBpcyA4MTkyDQ1bICAgMjAuMjA4NzY2XSBhbWRncHUgMDAwMDow
MTowMC4wOiBmaXJtd2FyZTogZGlyZWN0LWxvYWRpbmcgZmlybXdhcmUgYW1kZ3B1L3BvbGFyaXMx
MF9ybGMuYmluDQ1bICAgMjAuMjA5Mjc0XSBhbWRncHUgMDAwMDowMTowMC4wOiBmaXJtd2FyZTog
ZGlyZWN0LWxvYWRpbmcgZmlybXdhcmUgYW1kZ3B1L3BvbGFyaXMxMF9tZWNfMi5iaW4NDVsgICAy
MC4yMDk2MTddIGFtZGdwdSAwMDAwOjAxOjAwLjA6IGZpcm13YXJlOiBkaXJlY3QtbG9hZGluZyBm
aXJtd2FyZSBhbWRncHUvcG9sYXJpczEwX21lYzJfMi5iaW4NDVsgICAyMC4yMDk3ODJdIE5FVDog
UmVnaXN0ZXJlZCBQRl9RSVBDUlRSIHByb3RvY29sIGZhbWlseQ0NWyAgIDIwLjIxMDE0OV0gYW1k
Z3B1IDAwMDA6MDE6MDAuMDogZmlybXdhcmU6IGRpcmVjdC1sb2FkaW5nIGZpcm13YXJlIGFtZGdw
dS9wb2xhcmlzMTBfc2RtYS5iaW4NDVsgICAyMC4yMTAyOThdIGFtZGdwdSAwMDAwOjAxOjAwLjA6
IGZpcm13YXJlOiBkaXJlY3QtbG9hZGluZyBmaXJtd2FyZSBhbWRncHUvcG9sYXJpczEwX3NkbWEx
LmJpbg0NWyAgIDIwLjIxMDMxNF0gYW1kZ3B1OiBod21ncl9zd19pbml0IHNtdSBiYWNrZWQgaXMg
cG9sYXJpczEwX3NtdQ0NWyAgIDIwLjIxMDcyMl0gYW1kZ3B1IDAwMDA6MDE6MDAuMDogZmlybXdh
cmU6IGRpcmVjdC1sb2FkaW5nIGZpcm13YXJlIGFtZGdwdS9wb2xhcmlzMTBfdXZkLmJpbg0NWyAg
IDIwLjIxMDcyNV0gW2RybV0gRm91bmQgVVZEIGZpcm13YXJlIFZlcnNpb246IDEuMTMwIEZhbWls
eSBJRDogMTYNDVsgICAyMC4yMTE0NDJdIGFtZGdwdSAwMDAwOjAxOjAwLjA6IGZpcm13YXJlOiBk
aXJlY3QtbG9hZGluZyBmaXJtd2FyZSBhbWRncHUvcG9sYXJpczEwX3ZjZS5iaW4NDVsgICAyMC4y
MTE0NDRdIFtkcm1dIEZvdW5kIFZDRSBmaXJtd2FyZSBWZXJzaW9uOiA1My4yNiBCaW5hcnkgSUQ6
IDMNDVsgICAyMC4yMTE5NDNdIGFtZGdwdSAwMDAwOjAxOjAwLjA6IGZpcm13YXJlOiBkaXJlY3Qt
bG9hZGluZyBmaXJtd2FyZSBhbWRncHUvcG9sYXJpczEwX3NtYy5iaW4NDVsgICAyMC4yMTMyMjNd
IHhlbl9hY3BpX3Byb2Nlc3NvcjogVXBsb2FkaW5nIFhlbiBwcm9jZXNzb3IgUE0gaW5mbw0NWyAg
IDIwLjI1NTM5M10gQ29uc29sZTogc3dpdGNoaW5nIHRvIGNvbG91ciBmcmFtZSBidWZmZXIgZGV2
aWNlIDI1Nng3Mg0NWyAgIDIwLjI3NDYzN10gW2RybV0gRGlzcGxheSBDb3JlIGluaXRpYWxpemVk
IHdpdGggdjMuMi4yMDchDQ1bICAgMjAuMjc3NDExXSByYWRlb24gMDAwMDo0MTowMC4wOiBbZHJt
XSBmYjA6IHJhZGVvbmRybWZiIGZyYW1lIGJ1ZmZlciBkZXZpY2UNDVsbWzA7MzJtICBPSyAgG1sw
bV0gU3RhcnRlZCAbWzA7MTszOW1Nb2RlbU1hbmFnZXIuc2VydmljZRtbMG0gLSBNb2RlbSBNYW5h
Z2VyLg0NWyAgIDIwLjQyMzI2OV0gW2RybV0gSW5pdGlhbGl6ZWQgcmFkZW9uIDIuNTAuMCAyMDA4
MDUyOCBmb3IgMDAwMDo0MTowMC4wIG9uIG1pbm9yIDANDVsbWzA7MzJtICBPSyAgG1swbV0gU3Rh
cnRlZCAbWzA7MTszOW14ZW4uc2VydmljZRtbMG0gLSBMU0I6IFhlbiBkYWVtb25zLg0NWxtbMDsz
Mm0gIE9LICAbWzBtXSBTdGFydGVkIBtbMDsxOzM5bXVkaXNrczIuc2VydmljZRtbMG0gLSBEaXNr
IE1hbmFnZXIuDQ1bG1swOzMybSAgT0sgIBtbMG1dIFN0YXJ0ZWQgG1swOzE7Mzltc3NoLnNlcnZp
Y2UbWzBtIC0gT3BlbkJTRCBTZWN1cmUgU2hlbGwgc2VydmVyLg0NICAgICAgICAgU3RhcnRpbmcg
G1swOzE7MzlteGVuZG9tYWlucy5zZXJ2aWPigKZ0YXJ0L3N0b3Agc2Vjb25kYXJ5IHhlbiBkb21h
aW5zLi4uDQ1bG1swOzMybSAgT0sgIBtbMG1dIFN0YXJ0ZWQgG1swOzE7MzlteGVuZG9tYWlucy5z
ZXJ2aWNl4oCmIFN0YXJ0L3N0b3Agc2Vjb25kYXJ5IHhlbiBkb21haW5zLg0NWxtbMDszMm0gIE9L
ICAbWzBtXSBSZWFjaGVkIHRhcmdldCAbWzA7MTszOW1tdWx0aS11c2VyLnRhcmdldBtbMG0gLSBN
dWx0aS1Vc2VyIFN5c3RlbS4NDVsbWzA7MzJtICBPSyAgG1swbV0gUmVhY2hlZCB0YXJnZXQgG1sw
OzE7MzltZ3JhcGhpY2FsLnRhcmdldBtbMG0gLSBHcmFwaGljYWwgSW50ZXJmYWNlLg0NICAgICAg
ICAgU3RhcnRpbmcgG1swOzE7Mzltc3lzdGVtZC11cGRhdGUtdXTigKYgUmVjb3JkIFJ1bmxldmVs
IENoYW5nZSBpbiBVVE1QLi4uDQ1bG1swOzMybSAgT0sgIBtbMG1dIEZpbmlzaGVkIBtbMDsxOzM5
bXN5c3RlbWQtdXBkYXRlLXV04oCmIC0gUmVjb3JkIFJ1bmxldmVsIENoYW5nZSBpbiBVVE1QLg0N
WyAgIDIwLjU3NjE1NV0gW2RybV0gVVZEIGFuZCBVVkQgRU5DIGluaXRpYWxpemVkIHN1Y2Nlc3Nm
dWxseS4NDVsgICAyMC42ODIwODddIFtkcm1dIFZDRSBpbml0aWFsaXplZCBzdWNjZXNzZnVsbHku
DQ1bICAgMjAuNjkwNzY2XSBrZmQga2ZkOiBhbWRncHU6IEFsbG9jYXRlZCAzOTY5MDU2IGJ5dGVz
IG9uIGdhcnQNDVsgICAyMC42OTc4MDNdIGFtZGdwdTogc2RtYV9iaXRtYXA6IGYNDVsgICAyMC43
MDE3ODVdIGFtZGdwdTogU1JBVCB0YWJsZSBub3QgZm91bmQNDVsgICAyMC43MDYzOTBdIGFtZGdw
dTogVmlydHVhbCBDUkFUIHRhYmxlIGNyZWF0ZWQgZm9yIEdQVQ0NWyAgIDIwLjcxMjUzNV0gYW1k
Z3B1OiBUb3BvbG9neTogQWRkIGRHUFUgbm9kZSBbMHg2N2RmOjB4MTAwMl0NDVsgICAyMC43MTkw
NTJdIGtmZCBrZmQ6IGFtZGdwdTogYWRkZWQgZGV2aWNlIDEwMDI6NjdkZg0NWyAgIDIwLjcyNDg0
NV0gYW1kZ3B1IDAwMDA6MDE6MDAuMDogYW1kZ3B1OiBTRSA0LCBTSCBwZXIgU0UgMSwgQ1UgcGVy
IFNIIDksIGFjdGl2ZV9jdV9udW1iZXIgMzYNDVsgICAyMC43NDg5NzFdIGFtZGdwdSAwMDAwOjAx
OjAwLjA6IGFtZGdwdTogVXNpbmcgQkFDTyBmb3IgcnVudGltZSBwbQ0NWyAgIDIwLjc1NjY5Ml0g
W2RybV0gSW5pdGlhbGl6ZWQgYW1kZ3B1IDMuNDkuMCAyMDE1MDEwMSBmb3IgMDAwMDowMTowMC4w
IG9uIG1pbm9yIDENDVsgICAyMS4yOTc0NDNdIFtkcm1dIEZlbmNlIGZhbGxiYWNrIHRpbWVyIGV4
cGlyZWQgb24gcmluZyB1dmQNDQ0NDURlYmlhbiBHTlUvTGludXggMTIgdGVzdG9zIGh2YzANDQ0N
dGVzdG9zIGxvZ2luOiBbICAgMjEuNzEzNDYyXSBhbWRncHUgMDAwMDowMTowMC4wOiBhbWRncHU6
IA0NWyAgIDIxLjcxMzQ2Ml0gbGFzdCBtZXNzYWdlIHdhcyBmYWlsZWQgcmV0IGlzIDY1NTM1DQ1b
ICAgMjEuODQxNjM0XSByODE2OSAwMDAwOjg2OjAwLjAgZW5wMTM0czA6IExpbmsgaXMgVXAgLSAx
R2Jwcy9GdWxsIC0gZmxvdyBjb250cm9sIG9mZg0NWyAgIDIxLjg1MDI4MF0gSVB2NjogQUREUkNP
TkYoTkVUREVWX0NIQU5HRSk6IGVucDEzNHMwOiBsaW5rIGJlY29tZXMgcmVhZHkNDVsgICAyMi4x
NjA0NzJdIHI4MTY5IDAwMDA6ODc6MDAuMCBlbnAxMzVzMDogTGluayBpcyBVcCAtIDFHYnBzL0Z1
bGwgLSBmbG93IGNvbnRyb2wgcngvdHgNDVsgICAyMi4xNjkyODhdIElQdjY6IEFERFJDT05GKE5F
VERFVl9DSEFOR0UpOiBlbnAxMzVzMDogbGluayBiZWNvbWVzIHJlYWR5DQ1bICAgMjIuMzIxNDU2
XSBhbWRncHUgMDAwMDowMTowMC4wOiBbZHJtOmFtZGdwdV9pYl9yaW5nX3Rlc3RzIFthbWRncHVd
XSAqRVJST1IqIElCIHRlc3QgZmFpbGVkIG9uIHV2ZCAoLTExMCkuDQ1bICAgMjMuMzQ1NTM5XSBh
bWRncHUgMDAwMDowMTowMC4wOiBbZHJtOmFtZGdwdV9pYl9yaW5nX3Rlc3RzIFthbWRncHVdXSAq
RVJST1IqIElCIHRlc3QgZmFpbGVkIG9uIHV2ZF9lbmMwICgtMTEwKS4NDVsgICAyNC4zNjk0NTNd
IGFtZGdwdSAwMDAwOjAxOjAwLjA6IFtkcm06YW1kZ3B1X2liX3JpbmdfdGVzdHMgW2FtZGdwdV1d
ICpFUlJPUiogSUIgdGVzdCBmYWlsZWQgb24gdXZkX2VuYzEgKC0xMTApLg0NWyAgIDI0LjQ4MDQx
NV0gYW1kZ3B1IDAwMDA6MDE6MDAuMDogYW1kZ3B1OiANDVsgICAyNC40ODA0MTVdIGxhc3QgbWVz
c2FnZSB3YXMgZmFpbGVkIHJldCBpcyA2NTUzNQ0NWyAgIDI1LjUyMTQ0NV0gYW1kZ3B1IDAwMDA6
MDE6MDAuMDogW2RybTphbWRncHVfaWJfcmluZ190ZXN0cyBbYW1kZ3B1XV0gKkVSUk9SKiBJQiB0
ZXN0IGZhaWxlZCBvbiB2Y2UwICgtMTEwKS4NDVsgICAyNS41MzI2OTRdIFtkcm06cHJvY2Vzc19v
bmVfd29ya10gKkVSUk9SKiBpYiByaW5nIHRlc3QgZmFpbGVkICgtMTEwKS4NDShYRU4pIEhhcmR3
YXJlIERvbTAgc2h1dGRvd246IHJlYm9vdGluZyBtYWNoaW5lDQ==
--0000000000006f57f0060f47a720
Content-Type: application/octet-stream; name="efipvh-tables.dump"
Content-Disposition: attachment; filename="efipvh-tables.dump"
Content-Transfer-Encoding: base64
Content-ID: <f_lrkc3la22>
X-Attachment-Id: f_lrkc3la22

U1NEVCBAIDB4MDAwMDAwMDAwMDAwMDAwMAogICAgMDAwMDogNTMgNTMgNDQgNTQgNTMgMUIgMDAg
MDAgMDIgODMgNDEgNEQgNDQgMDAgMDAgMDAgIFNTRFRTLi4uLi5BTUQuLi4KICAgIDAwMTA6IDQz
IDUwIDREIDUyIDQxIDUzIDAwIDAwIDAxIDAwIDAwIDAwIDQ5IDRFIDU0IDRDICBDUE1SQVMuLi4u
Li5JTlRMCiAgICAwMDIwOiAzMSAwMyAyMyAyMCBBMCA0MyBBMiAwMCAxNSA1QyAyRiAwMyA1RiA1
MyA0MiA1RiAgMS4jIC5DLi4uXC8uX1NCXwogICAgMDAzMDogNTMgMzAgNDQgMzAgNDQgMzAgNDEg
MzAgMDYgMDAgMTUgNUMgMkYgMDMgNUYgNTMgIFMwRDBEMEEwLi4uXC8uX1MKICAgIDAwNDA6IDQy
IDVGIDUzIDMwIDQ0IDMwIDQ0IDMwIDQxIDMxIDA2IDAwIDE1IDVDIDJGIDAzICBCX1MwRDBEMEEx
Li4uXC8uCiAgICAwMDUwOiA1RiA1MyA0MiA1RiA1MyAzMCA0NCAzMCA0NCAzMCA0MSAzMiAwNiAw
MCAxNSA1QyAgX1NCX1MwRDBEMEEyLi4uXAogICAgMDA2MDogMkYgMDMgNUYgNTMgNDIgNUYgNTMg
MzAgNDQgMzAgNDQgMzAgNDEgMzMgMDYgMDAgIC8uX1NCX1MwRDBEMEEzLi4KICAgIDAwNzA6IDE1
IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUzIDMwIDQ0IDMwIDQ0IDMwIDQxIDM0ICAuXC8uX1NCX1Mw
RDBEMEE0CiAgICAwMDgwOiAwNiAwMCAxNSA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MyAzMCA0NCAz
MCA0NCAzMCAgLi4uXC8uX1NCX1MwRDBEMAogICAgMDA5MDogNDEgMzUgMDYgMDAgMTUgNUMgMkYg
MDMgNUYgNTMgNDIgNUYgNTMgMzAgNDQgMzAgIEE1Li4uXC8uX1NCX1MwRDAKICAgIDAwQTA6IDQ0
IDMwIDQxIDM2IDA2IDAwIDE1IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUzIDMwICBEMEE2Li4uXC8u
X1NCX1MwCiAgICAwMEIwOiA0NCAzMCA0NCAzMCA0MSAzNyAwNiAwMCAxNSA1QyAyRiAwMyA1RiA1
MyA0MiA1RiAgRDBEMEE3Li4uXC8uX1NCXwogICAgMDBDMDogNTMgMzAgNDQgMzAgNDQgMzAgNDEg
MzggMDYgMDAgMTUgNUMgMkYgMDMgNUYgNTMgIFMwRDBEMEE4Li4uXC8uX1MKICAgIDAwRDA6IDQy
IDVGIDUzIDMwIDQ0IDMwIDQ0IDMwIDQyIDMwIDA2IDAwIDE1IDVDIDJGIDAzICBCX1MwRDBEMEIw
Li4uXC8uCiAgICAwMEUwOiA1RiA1MyA0MiA1RiA1MyAzMCA0NCAzMCA0NCAzMCA0MiAzMSAwNiAw
MCAxNSA1QyAgX1NCX1MwRDBEMEIxLi4uXAogICAgMDBGMDogMkYgMDMgNUYgNTMgNDIgNUYgNTMg
MzAgNDQgMzAgNDQgMzAgNDIgMzIgMDYgMDAgIC8uX1NCX1MwRDBEMEIyLi4KICAgIDAxMDA6IDE1
IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUzIDMwIDQ0IDMwIDQ0IDMwIDQyIDMzICAuXC8uX1NCX1Mw
RDBEMEIzCiAgICAwMTEwOiAwNiAwMCAxNSA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MyAzMCA0NCAz
MCA0NCAzMCAgLi4uXC8uX1NCX1MwRDBEMAogICAgMDEyMDogNDIgMzQgMDYgMDAgMTUgNUMgMkYg
MDMgNUYgNTMgNDIgNUYgNTMgMzAgNDQgMzAgIEI0Li4uXC8uX1NCX1MwRDAKICAgIDAxMzA6IDQ0
IDMwIDQyIDM1IDA2IDAwIDE1IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUzIDMwICBEMEI1Li4uXC8u
X1NCX1MwCiAgICAwMTQwOiA0NCAzMCA0NCAzMCA0MiAzNiAwNiAwMCAxNSA1QyAyRiAwMyA1RiA1
MyA0MiA1RiAgRDBEMEI2Li4uXC8uX1NCXwogICAgMDE1MDogNTMgMzAgNDQgMzAgNDQgMzAgNDIg
MzcgMDYgMDAgMTUgNUMgMkYgMDMgNUYgNTMgIFMwRDBEMEI3Li4uXC8uX1MKICAgIDAxNjA6IDQy
IDVGIDUzIDMwIDQ0IDMwIDQ0IDMwIDQyIDM4IDA2IDAwIDE1IDVDIDJGIDAzICBCX1MwRDBEMEI4
Li4uXC8uCiAgICAwMTcwOiA1RiA1MyA0MiA1RiA1MyAzMCA0NCAzMSA0NCAzMSA0MSAzMCAwNiAw
MCAxNSA1QyAgX1NCX1MwRDFEMUEwLi4uXAogICAgMDE4MDogMkYgMDMgNUYgNTMgNDIgNUYgNTMg
MzAgNDQgMzEgNDQgMzEgNDEgMzEgMDYgMDAgIC8uX1NCX1MwRDFEMUExLi4KICAgIDAxOTA6IDE1
IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUzIDMwIDQ0IDMxIDQ0IDMxIDQxIDMyICAuXC8uX1NCX1Mw
RDFEMUEyCiAgICAwMUEwOiAwNiAwMCAxNSA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MyAzMCA0NCAz
MSA0NCAzMSAgLi4uXC8uX1NCX1MwRDFEMQogICAgMDFCMDogNDEgMzMgMDYgMDAgMTUgNUMgMkYg
MDMgNUYgNTMgNDIgNUYgNTMgMzAgNDQgMzEgIEEzLi4uXC8uX1NCX1MwRDEKICAgIDAxQzA6IDQ0
IDMxIDQxIDM0IDA2IDAwIDE1IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUzIDMwICBEMUE0Li4uXC8u
X1NCX1MwCiAgICAwMUQwOiA0NCAzMSA0NCAzMSA0MSAzNSAwNiAwMCAxNSA1QyAyRiAwMyA1RiA1
MyA0MiA1RiAgRDFEMUE1Li4uXC8uX1NCXwogICAgMDFFMDogNTMgMzAgNDQgMzEgNDQgMzEgNDEg
MzYgMDYgMDAgMTUgNUMgMkYgMDMgNUYgNTMgIFMwRDFEMUE2Li4uXC8uX1MKICAgIDAxRjA6IDQy
IDVGIDUzIDMwIDQ0IDMxIDQ0IDMxIDQxIDM3IDA2IDAwIDE1IDVDIDJGIDAzICBCX1MwRDFEMUE3
Li4uXC8uCiAgICAwMjAwOiA1RiA1MyA0MiA1RiA1MyAzMCA0NCAzMSA0NCAzMSA0MSAzOCAwNiAw
MCAxNSA1QyAgX1NCX1MwRDFEMUE4Li4uXAogICAgMDIxMDogMkYgMDMgNUYgNTMgNDIgNUYgNTMg
MzAgNDQgMzEgNDQgMzEgNDIgMzAgMDYgMDAgIC8uX1NCX1MwRDFEMUIwLi4KICAgIDAyMjA6IDE1
IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUzIDMwIDQ0IDMxIDQ0IDMxIDQyIDMxICAuXC8uX1NCX1Mw
RDFEMUIxCiAgICAwMjMwOiAwNiAwMCAxNSA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MyAzMCA0NCAz
MSA0NCAzMSAgLi4uXC8uX1NCX1MwRDFEMQogICAgMDI0MDogNDIgMzIgMDYgMDAgMTUgNUMgMkYg
MDMgNUYgNTMgNDIgNUYgNTMgMzAgNDQgMzEgIEIyLi4uXC8uX1NCX1MwRDEKICAgIDAyNTA6IDQ0
IDMxIDQyIDMzIDA2IDAwIDE1IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUzIDMwICBEMUIzLi4uXC8u
X1NCX1MwCiAgICAwMjYwOiA0NCAzMSA0NCAzMSA0MiAzNCAwNiAwMCAxNSA1QyAyRiAwMyA1RiA1
MyA0MiA1RiAgRDFEMUI0Li4uXC8uX1NCXwogICAgMDI3MDogNTMgMzAgNDQgMzEgNDQgMzEgNDIg
MzUgMDYgMDAgMTUgNUMgMkYgMDMgNUYgNTMgIFMwRDFEMUI1Li4uXC8uX1MKICAgIDAyODA6IDQy
IDVGIDUzIDMwIDQ0IDMxIDQ0IDMxIDQyIDM2IDA2IDAwIDE1IDVDIDJGIDAzICBCX1MwRDFEMUI2
Li4uXC8uCiAgICAwMjkwOiA1RiA1MyA0MiA1RiA1MyAzMCA0NCAzMSA0NCAzMSA0MiAzNyAwNiAw
MCAxNSA1QyAgX1NCX1MwRDFEMUI3Li4uXAogICAgMDJBMDogMkYgMDMgNUYgNTMgNDIgNUYgNTMg
MzAgNDQgMzEgNDQgMzEgNDIgMzggMDYgMDAgIC8uX1NCX1MwRDFEMUI4Li4KICAgIDAyQjA6IDE1
IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUzIDMwIDQ0IDMyIDQ0IDMyIDQxIDMwICAuXC8uX1NCX1Mw
RDJEMkEwCiAgICAwMkMwOiAwNiAwMCAxNSA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MyAzMCA0NCAz
MiA0NCAzMiAgLi4uXC8uX1NCX1MwRDJEMgogICAgMDJEMDogNDEgMzEgMDYgMDAgMTUgNUMgMkYg
MDMgNUYgNTMgNDIgNUYgNTMgMzAgNDQgMzIgIEExLi4uXC8uX1NCX1MwRDIKICAgIDAyRTA6IDQ0
IDMyIDQxIDMyIDA2IDAwIDE1IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUzIDMwICBEMkEyLi4uXC8u
X1NCX1MwCiAgICAwMkYwOiA0NCAzMiA0NCAzMiA0MSAzMyAwNiAwMCAxNSA1QyAyRiAwMyA1RiA1
MyA0MiA1RiAgRDJEMkEzLi4uXC8uX1NCXwogICAgMDMwMDogNTMgMzAgNDQgMzIgNDQgMzIgNDEg
MzQgMDYgMDAgMTUgNUMgMkYgMDMgNUYgNTMgIFMwRDJEMkE0Li4uXC8uX1MKICAgIDAzMTA6IDQy
IDVGIDUzIDMwIDQ0IDMyIDQ0IDMyIDQxIDM1IDA2IDAwIDE1IDVDIDJGIDAzICBCX1MwRDJEMkE1
Li4uXC8uCiAgICAwMzIwOiA1RiA1MyA0MiA1RiA1MyAzMCA0NCAzMiA0NCAzMiA0MSAzNiAwNiAw
MCAxNSA1QyAgX1NCX1MwRDJEMkE2Li4uXAogICAgMDMzMDogMkYgMDMgNUYgNTMgNDIgNUYgNTMg
MzAgNDQgMzIgNDQgMzIgNDEgMzcgMDYgMDAgIC8uX1NCX1MwRDJEMkE3Li4KICAgIDAzNDA6IDE1
IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUzIDMwIDQ0IDMyIDQ0IDMyIDQxIDM4ICAuXC8uX1NCX1Mw
RDJEMkE4CiAgICAwMzUwOiAwNiAwMCAxNSA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MyAzMCA0NCAz
MiA0NCAzMiAgLi4uXC8uX1NCX1MwRDJEMgogICAgMDM2MDogNDIgMzAgMDYgMDAgMTUgNUMgMkYg
MDMgNUYgNTMgNDIgNUYgNTMgMzAgNDQgMzIgIEIwLi4uXC8uX1NCX1MwRDIKICAgIDAzNzA6IDQ0
IDMyIDQyIDMxIDA2IDAwIDE1IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUzIDMwICBEMkIxLi4uXC8u
X1NCX1MwCiAgICAwMzgwOiA0NCAzMiA0NCAzMiA0MiAzMiAwNiAwMCAxNSA1QyAyRiAwMyA1RiA1
MyA0MiA1RiAgRDJEMkIyLi4uXC8uX1NCXwogICAgMDM5MDogNTMgMzAgNDQgMzIgNDQgMzIgNDIg
MzMgMDYgMDAgMTUgNUMgMkYgMDMgNUYgNTMgIFMwRDJEMkIzLi4uXC8uX1MKICAgIDAzQTA6IDQy
IDVGIDUzIDMwIDQ0IDMyIDQ0IDMyIDQyIDM0IDA2IDAwIDE1IDVDIDJGIDAzICBCX1MwRDJEMkI0
Li4uXC8uCiAgICAwM0IwOiA1RiA1MyA0MiA1RiA1MyAzMCA0NCAzMiA0NCAzMiA0MiAzNSAwNiAw
MCAxNSA1QyAgX1NCX1MwRDJEMkI1Li4uXAogICAgMDNDMDogMkYgMDMgNUYgNTMgNDIgNUYgNTMg
MzAgNDQgMzIgNDQgMzIgNDIgMzYgMDYgMDAgIC8uX1NCX1MwRDJEMkI2Li4KICAgIDAzRDA6IDE1
IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUzIDMwIDQ0IDMyIDQ0IDMyIDQyIDM3ICAuXC8uX1NCX1Mw
RDJEMkI3CiAgICAwM0UwOiAwNiAwMCAxNSA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MyAzMCA0NCAz
MiA0NCAzMiAgLi4uXC8uX1NCX1MwRDJEMgogICAgMDNGMDogNDIgMzggMDYgMDAgMTUgNUMgMkYg
MDMgNUYgNTMgNDIgNUYgNTAgNDMgNDkgMzAgIEI4Li4uXC8uX1NCX1BDSTAKICAgIDA0MDA6IDQ0
IDMzIDQxIDMwIDA2IDAwIDE1IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzICBEM0EwLi4uXC8u
X1NCX1BDCiAgICAwNDEwOiA0OSAzMCA0NCAzMyA0MSAzMSAwNiAwMCAxNSA1QyAyRiAwMyA1RiA1
MyA0MiA1RiAgSTBEM0ExLi4uXC8uX1NCXwogICAgMDQyMDogNTAgNDMgNDkgMzAgNDQgMzMgNDEg
MzIgMDYgMDAgMTUgNUMgMkYgMDMgNUYgNTMgIFBDSTBEM0EyLi4uXC8uX1MKICAgIDA0MzA6IDQy
IDVGIDUwIDQzIDQ5IDMwIDQ0IDMzIDQxIDMzIDA2IDAwIDE1IDVDIDJGIDAzICBCX1BDSTBEM0Ez
Li4uXC8uCiAgICAwNDQwOiA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMCA0NCAzMyA0MSAzNCAwNiAw
MCAxNSA1QyAgX1NCX1BDSTBEM0E0Li4uXAogICAgMDQ1MDogMkYgMDMgNUYgNTMgNDIgNUYgNTAg
NDMgNDkgMzAgNDQgMzMgNDEgMzUgMDYgMDAgIC8uX1NCX1BDSTBEM0E1Li4KICAgIDA0NjA6IDE1
IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMwIDQ0IDMzIDQxIDM2ICAuXC8uX1NCX1BD
STBEM0E2CiAgICAwNDcwOiAwNiAwMCAxNSA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAz
MCA0NCAzMyAgLi4uXC8uX1NCX1BDSTBEMwogICAgMDQ4MDogNDEgMzcgMDYgMDAgMTUgNUMgMkYg
MDMgNUYgNTMgNDIgNUYgNTAgNDMgNDkgMzAgIEE3Li4uXC8uX1NCX1BDSTAKICAgIDA0OTA6IDQ0
IDMzIDQxIDM4IDA2IDAwIDE1IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzICBEM0E4Li4uXC8u
X1NCX1BDCiAgICAwNEEwOiA0OSAzMCA0NCAzMyA0MiAzMCAwNiAwMCAxNSA1QyAyRiAwMyA1RiA1
MyA0MiA1RiAgSTBEM0IwLi4uXC8uX1NCXwogICAgMDRCMDogNTAgNDMgNDkgMzAgNDQgMzMgNDIg
MzEgMDYgMDAgMTUgNUMgMkYgMDMgNUYgNTMgIFBDSTBEM0IxLi4uXC8uX1MKICAgIDA0QzA6IDQy
IDVGIDUwIDQzIDQ5IDMwIDQ0IDMzIDQyIDMyIDA2IDAwIDE1IDVDIDJGIDAzICBCX1BDSTBEM0Iy
Li4uXC8uCiAgICAwNEQwOiA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMCA0NCAzMyA0MiAzMyAwNiAw
MCAxNSA1QyAgX1NCX1BDSTBEM0IzLi4uXAogICAgMDRFMDogMkYgMDMgNUYgNTMgNDIgNUYgNTAg
NDMgNDkgMzAgNDQgMzMgNDIgMzQgMDYgMDAgIC8uX1NCX1BDSTBEM0I0Li4KICAgIDA0RjA6IDE1
IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMwIDQ0IDMzIDQyIDM1ICAuXC8uX1NCX1BD
STBEM0I1CiAgICAwNTAwOiAwNiAwMCAxNSA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAz
MCA0NCAzMyAgLi4uXC8uX1NCX1BDSTBEMwogICAgMDUxMDogNDIgMzYgMDYgMDAgMTUgNUMgMkYg
MDMgNUYgNTMgNDIgNUYgNTAgNDMgNDkgMzAgIEI2Li4uXC8uX1NCX1BDSTAKICAgIDA1MjA6IDQ0
IDMzIDQyIDM3IDA2IDAwIDE1IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzICBEM0I3Li4uXC8u
X1NCX1BDCiAgICAwNTMwOiA0OSAzMCA0NCAzMyA0MiAzOCAwNiAwMCAxNSA1QyAyRiAwMyA1RiA1
MyA0MiA1RiAgSTBEM0I4Li4uXC8uX1NCXwogICAgMDU0MDogNTMgMzEgNDQgMzAgNDQgMzQgNDEg
MzAgMDYgMDAgMTUgNUMgMkYgMDMgNUYgNTMgIFMxRDBENEEwLi4uXC8uX1MKICAgIDA1NTA6IDQy
IDVGIDUzIDMxIDQ0IDMwIDQ0IDM0IDQxIDMxIDA2IDAwIDE1IDVDIDJGIDAzICBCX1MxRDBENEEx
Li4uXC8uCiAgICAwNTYwOiA1RiA1MyA0MiA1RiA1MyAzMSA0NCAzMCA0NCAzNCA0MSAzMiAwNiAw
MCAxNSA1QyAgX1NCX1MxRDBENEEyLi4uXAogICAgMDU3MDogMkYgMDMgNUYgNTMgNDIgNUYgNTMg
MzEgNDQgMzAgNDQgMzQgNDEgMzMgMDYgMDAgIC8uX1NCX1MxRDBENEEzLi4KICAgIDA1ODA6IDE1
IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUzIDMxIDQ0IDMwIDQ0IDM0IDQxIDM0ICAuXC8uX1NCX1Mx
RDBENEE0CiAgICAwNTkwOiAwNiAwMCAxNSA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MyAzMSA0NCAz
MCA0NCAzNCAgLi4uXC8uX1NCX1MxRDBENAogICAgMDVBMDogNDEgMzUgMDYgMDAgMTUgNUMgMkYg
MDMgNUYgNTMgNDIgNUYgNTMgMzEgNDQgMzAgIEE1Li4uXC8uX1NCX1MxRDAKICAgIDA1QjA6IDQ0
IDM0IDQxIDM2IDA2IDAwIDE1IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUzIDMxICBENEE2Li4uXC8u
X1NCX1MxCiAgICAwNUMwOiA0NCAzMCA0NCAzNCA0MSAzNyAwNiAwMCAxNSA1QyAyRiAwMyA1RiA1
MyA0MiA1RiAgRDBENEE3Li4uXC8uX1NCXwogICAgMDVEMDogNTMgMzEgNDQgMzAgNDQgMzQgNDEg
MzggMDYgMDAgMTUgNUMgMkYgMDMgNUYgNTMgIFMxRDBENEE4Li4uXC8uX1MKICAgIDA1RTA6IDQy
IDVGIDUzIDMxIDQ0IDMwIDQ0IDM0IDQyIDMwIDA2IDAwIDE1IDVDIDJGIDAzICBCX1MxRDBENEIw
Li4uXC8uCiAgICAwNUYwOiA1RiA1MyA0MiA1RiA1MyAzMSA0NCAzMCA0NCAzNCA0MiAzMSAwNiAw
MCAxNSA1QyAgX1NCX1MxRDBENEIxLi4uXAogICAgMDYwMDogMkYgMDMgNUYgNTMgNDIgNUYgNTMg
MzEgNDQgMzAgNDQgMzQgNDIgMzIgMDYgMDAgIC8uX1NCX1MxRDBENEIyLi4KICAgIDA2MTA6IDE1
IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUzIDMxIDQ0IDMwIDQ0IDM0IDQyIDMzICAuXC8uX1NCX1Mx
RDBENEIzCiAgICAwNjIwOiAwNiAwMCAxNSA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MyAzMSA0NCAz
MCA0NCAzNCAgLi4uXC8uX1NCX1MxRDBENAogICAgMDYzMDogNDIgMzQgMDYgMDAgMTUgNUMgMkYg
MDMgNUYgNTMgNDIgNUYgNTMgMzEgNDQgMzAgIEI0Li4uXC8uX1NCX1MxRDAKICAgIDA2NDA6IDQ0
IDM0IDQyIDM1IDA2IDAwIDE1IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUzIDMxICBENEI1Li4uXC8u
X1NCX1MxCiAgICAwNjUwOiA0NCAzMCA0NCAzNCA0MiAzNiAwNiAwMCAxNSA1QyAyRiAwMyA1RiA1
MyA0MiA1RiAgRDBENEI2Li4uXC8uX1NCXwogICAgMDY2MDogNTMgMzEgNDQgMzAgNDQgMzQgNDIg
MzcgMDYgMDAgMTUgNUMgMkYgMDMgNUYgNTMgIFMxRDBENEI3Li4uXC8uX1MKICAgIDA2NzA6IDQy
IDVGIDUzIDMxIDQ0IDMwIDQ0IDM0IDQyIDM4IDA2IDAwIDE1IDVDIDJGIDAzICBCX1MxRDBENEI4
Li4uXC8uCiAgICAwNjgwOiA1RiA1MyA0MiA1RiA1MyAzMSA0NCAzMSA0NCAzNSA0MSAzMCAwNiAw
MCAxNSA1QyAgX1NCX1MxRDFENUEwLi4uXAogICAgMDY5MDogMkYgMDMgNUYgNTMgNDIgNUYgNTMg
MzEgNDQgMzEgNDQgMzUgNDEgMzEgMDYgMDAgIC8uX1NCX1MxRDFENUExLi4KICAgIDA2QTA6IDE1
IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUzIDMxIDQ0IDMxIDQ0IDM1IDQxIDMyICAuXC8uX1NCX1Mx
RDFENUEyCiAgICAwNkIwOiAwNiAwMCAxNSA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MyAzMSA0NCAz
MSA0NCAzNSAgLi4uXC8uX1NCX1MxRDFENQogICAgMDZDMDogNDEgMzMgMDYgMDAgMTUgNUMgMkYg
MDMgNUYgNTMgNDIgNUYgNTMgMzEgNDQgMzEgIEEzLi4uXC8uX1NCX1MxRDEKICAgIDA2RDA6IDQ0
IDM1IDQxIDM0IDA2IDAwIDE1IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUzIDMxICBENUE0Li4uXC8u
X1NCX1MxCiAgICAwNkUwOiA0NCAzMSA0NCAzNSA0MSAzNSAwNiAwMCAxNSA1QyAyRiAwMyA1RiA1
MyA0MiA1RiAgRDFENUE1Li4uXC8uX1NCXwogICAgMDZGMDogNTMgMzEgNDQgMzEgNDQgMzUgNDEg
MzYgMDYgMDAgMTUgNUMgMkYgMDMgNUYgNTMgIFMxRDFENUE2Li4uXC8uX1MKICAgIDA3MDA6IDQy
IDVGIDUzIDMxIDQ0IDMxIDQ0IDM1IDQxIDM3IDA2IDAwIDE1IDVDIDJGIDAzICBCX1MxRDFENUE3
Li4uXC8uCiAgICAwNzEwOiA1RiA1MyA0MiA1RiA1MyAzMSA0NCAzMSA0NCAzNSA0MSAzOCAwNiAw
MCAxNSA1QyAgX1NCX1MxRDFENUE4Li4uXAogICAgMDcyMDogMkYgMDMgNUYgNTMgNDIgNUYgNTMg
MzEgNDQgMzEgNDQgMzUgNDIgMzAgMDYgMDAgIC8uX1NCX1MxRDFENUIwLi4KICAgIDA3MzA6IDE1
IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUzIDMxIDQ0IDMxIDQ0IDM1IDQyIDMxICAuXC8uX1NCX1Mx
RDFENUIxCiAgICAwNzQwOiAwNiAwMCAxNSA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MyAzMSA0NCAz
MSA0NCAzNSAgLi4uXC8uX1NCX1MxRDFENQogICAgMDc1MDogNDIgMzIgMDYgMDAgMTUgNUMgMkYg
MDMgNUYgNTMgNDIgNUYgNTMgMzEgNDQgMzEgIEIyLi4uXC8uX1NCX1MxRDEKICAgIDA3NjA6IDQ0
IDM1IDQyIDMzIDA2IDAwIDE1IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUzIDMxICBENUIzLi4uXC8u
X1NCX1MxCiAgICAwNzcwOiA0NCAzMSA0NCAzNSA0MiAzNCAwNiAwMCAxNSA1QyAyRiAwMyA1RiA1
MyA0MiA1RiAgRDFENUI0Li4uXC8uX1NCXwogICAgMDc4MDogNTMgMzEgNDQgMzEgNDQgMzUgNDIg
MzUgMDYgMDAgMTUgNUMgMkYgMDMgNUYgNTMgIFMxRDFENUI1Li4uXC8uX1MKICAgIDA3OTA6IDQy
IDVGIDUzIDMxIDQ0IDMxIDQ0IDM1IDQyIDM2IDA2IDAwIDE1IDVDIDJGIDAzICBCX1MxRDFENUI2
Li4uXC8uCiAgICAwN0EwOiA1RiA1MyA0MiA1RiA1MyAzMSA0NCAzMSA0NCAzNSA0MiAzNyAwNiAw
MCAxNSA1QyAgX1NCX1MxRDFENUI3Li4uXAogICAgMDdCMDogMkYgMDMgNUYgNTMgNDIgNUYgNTMg
MzEgNDQgMzEgNDQgMzUgNDIgMzggMDYgMDAgIC8uX1NCX1MxRDFENUI4Li4KICAgIDA3QzA6IDE1
IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUzIDMxIDQ0IDMyIDQ0IDM2IDQxIDMwICAuXC8uX1NCX1Mx
RDJENkEwCiAgICAwN0QwOiAwNiAwMCAxNSA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MyAzMSA0NCAz
MiA0NCAzNiAgLi4uXC8uX1NCX1MxRDJENgogICAgMDdFMDogNDEgMzEgMDYgMDAgMTUgNUMgMkYg
MDMgNUYgNTMgNDIgNUYgNTMgMzEgNDQgMzIgIEExLi4uXC8uX1NCX1MxRDIKICAgIDA3RjA6IDQ0
IDM2IDQxIDMyIDA2IDAwIDE1IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUzIDMxICBENkEyLi4uXC8u
X1NCX1MxCiAgICAwODAwOiA0NCAzMiA0NCAzNiA0MSAzMyAwNiAwMCAxNSA1QyAyRiAwMyA1RiA1
MyA0MiA1RiAgRDJENkEzLi4uXC8uX1NCXwogICAgMDgxMDogNTMgMzEgNDQgMzIgNDQgMzYgNDEg
MzQgMDYgMDAgMTUgNUMgMkYgMDMgNUYgNTMgIFMxRDJENkE0Li4uXC8uX1MKICAgIDA4MjA6IDQy
IDVGIDUzIDMxIDQ0IDMyIDQ0IDM2IDQxIDM1IDA2IDAwIDE1IDVDIDJGIDAzICBCX1MxRDJENkE1
Li4uXC8uCiAgICAwODMwOiA1RiA1MyA0MiA1RiA1MyAzMSA0NCAzMiA0NCAzNiA0MSAzNiAwNiAw
MCAxNSA1QyAgX1NCX1MxRDJENkE2Li4uXAogICAgMDg0MDogMkYgMDMgNUYgNTMgNDIgNUYgNTMg
MzEgNDQgMzIgNDQgMzYgNDEgMzcgMDYgMDAgIC8uX1NCX1MxRDJENkE3Li4KICAgIDA4NTA6IDE1
IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUzIDMxIDQ0IDMyIDQ0IDM2IDQxIDM4ICAuXC8uX1NCX1Mx
RDJENkE4CiAgICAwODYwOiAwNiAwMCAxNSA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MyAzMSA0NCAz
MiA0NCAzNiAgLi4uXC8uX1NCX1MxRDJENgogICAgMDg3MDogNDIgMzAgMDYgMDAgMTUgNUMgMkYg
MDMgNUYgNTMgNDIgNUYgNTMgMzEgNDQgMzIgIEIwLi4uXC8uX1NCX1MxRDIKICAgIDA4ODA6IDQ0
IDM2IDQyIDMxIDA2IDAwIDE1IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUzIDMxICBENkIxLi4uXC8u
X1NCX1MxCiAgICAwODkwOiA0NCAzMiA0NCAzNiA0MiAzMiAwNiAwMCAxNSA1QyAyRiAwMyA1RiA1
MyA0MiA1RiAgRDJENkIyLi4uXC8uX1NCXwogICAgMDhBMDogNTMgMzEgNDQgMzIgNDQgMzYgNDIg
MzMgMDYgMDAgMTUgNUMgMkYgMDMgNUYgNTMgIFMxRDJENkIzLi4uXC8uX1MKICAgIDA4QjA6IDQy
IDVGIDUzIDMxIDQ0IDMyIDQ0IDM2IDQyIDM0IDA2IDAwIDE1IDVDIDJGIDAzICBCX1MxRDJENkI0
Li4uXC8uCiAgICAwOEMwOiA1RiA1MyA0MiA1RiA1MyAzMSA0NCAzMiA0NCAzNiA0MiAzNSAwNiAw
MCAxNSA1QyAgX1NCX1MxRDJENkI1Li4uXAogICAgMDhEMDogMkYgMDMgNUYgNTMgNDIgNUYgNTMg
MzEgNDQgMzIgNDQgMzYgNDIgMzYgMDYgMDAgIC8uX1NCX1MxRDJENkI2Li4KICAgIDA4RTA6IDE1
IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUzIDMxIDQ0IDMyIDQ0IDM2IDQyIDM3ICAuXC8uX1NCX1Mx
RDJENkI3CiAgICAwOEYwOiAwNiAwMCAxNSA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MyAzMSA0NCAz
MiA0NCAzNiAgLi4uXC8uX1NCX1MxRDJENgogICAgMDkwMDogNDIgMzggMDYgMDAgMTUgNUMgMkYg
MDMgNUYgNTMgNDIgNUYgNTMgMzEgNDQgMzMgIEI4Li4uXC8uX1NCX1MxRDMKICAgIDA5MTA6IDQ0
IDM3IDQxIDMwIDA2IDAwIDE1IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUzIDMxICBEN0EwLi4uXC8u
X1NCX1MxCiAgICAwOTIwOiA0NCAzMyA0NCAzNyA0MSAzMSAwNiAwMCAxNSA1QyAyRiAwMyA1RiA1
MyA0MiA1RiAgRDNEN0ExLi4uXC8uX1NCXwogICAgMDkzMDogNTMgMzEgNDQgMzMgNDQgMzcgNDEg
MzIgMDYgMDAgMTUgNUMgMkYgMDMgNUYgNTMgIFMxRDNEN0EyLi4uXC8uX1MKICAgIDA5NDA6IDQy
IDVGIDUzIDMxIDQ0IDMzIDQ0IDM3IDQxIDMzIDA2IDAwIDE1IDVDIDJGIDAzICBCX1MxRDNEN0Ez
Li4uXC8uCiAgICAwOTUwOiA1RiA1MyA0MiA1RiA1MyAzMSA0NCAzMyA0NCAzNyA0MSAzNCAwNiAw
MCAxNSA1QyAgX1NCX1MxRDNEN0E0Li4uXAogICAgMDk2MDogMkYgMDMgNUYgNTMgNDIgNUYgNTMg
MzEgNDQgMzMgNDQgMzcgNDEgMzUgMDYgMDAgIC8uX1NCX1MxRDNEN0E1Li4KICAgIDA5NzA6IDE1
IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUzIDMxIDQ0IDMzIDQ0IDM3IDQxIDM2ICAuXC8uX1NCX1Mx
RDNEN0E2CiAgICAwOTgwOiAwNiAwMCAxNSA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MyAzMSA0NCAz
MyA0NCAzNyAgLi4uXC8uX1NCX1MxRDNENwogICAgMDk5MDogNDEgMzcgMDYgMDAgMTUgNUMgMkYg
MDMgNUYgNTMgNDIgNUYgNTMgMzEgNDQgMzMgIEE3Li4uXC8uX1NCX1MxRDMKICAgIDA5QTA6IDQ0
IDM3IDQxIDM4IDA2IDAwIDE1IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUzIDMxICBEN0E4Li4uXC8u
X1NCX1MxCiAgICAwOUIwOiA0NCAzMyA0NCAzNyA0MiAzMCAwNiAwMCAxNSA1QyAyRiAwMyA1RiA1
MyA0MiA1RiAgRDNEN0IwLi4uXC8uX1NCXwogICAgMDlDMDogNTMgMzEgNDQgMzMgNDQgMzcgNDIg
MzEgMDYgMDAgMTUgNUMgMkYgMDMgNUYgNTMgIFMxRDNEN0IxLi4uXC8uX1MKICAgIDA5RDA6IDQy
IDVGIDUzIDMxIDQ0IDMzIDQ0IDM3IDQyIDMyIDA2IDAwIDE1IDVDIDJGIDAzICBCX1MxRDNEN0Iy
Li4uXC8uCiAgICAwOUUwOiA1RiA1MyA0MiA1RiA1MyAzMSA0NCAzMyA0NCAzNyA0MiAzMyAwNiAw
MCAxNSA1QyAgX1NCX1MxRDNEN0IzLi4uXAogICAgMDlGMDogMkYgMDMgNUYgNTMgNDIgNUYgNTMg
MzEgNDQgMzMgNDQgMzcgNDIgMzQgMDYgMDAgIC8uX1NCX1MxRDNEN0I0Li4KICAgIDBBMDA6IDE1
IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUzIDMxIDQ0IDMzIDQ0IDM3IDQyIDM1ICAuXC8uX1NCX1Mx
RDNEN0I1CiAgICAwQTEwOiAwNiAwMCAxNSA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MyAzMSA0NCAz
MyA0NCAzNyAgLi4uXC8uX1NCX1MxRDNENwogICAgMEEyMDogNDIgMzYgMDYgMDAgMTUgNUMgMkYg
MDMgNUYgNTMgNDIgNUYgNTMgMzEgNDQgMzMgIEI2Li4uXC8uX1NCX1MxRDMKICAgIDBBMzA6IDQ0
IDM3IDQyIDM3IDA2IDAwIDE1IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUzIDMxICBEN0I3Li4uXC8u
X1NCX1MxCiAgICAwQTQwOiA0NCAzMyA0NCAzNyA0MiAzOCAwNiAwMCAxMCA0OSBGRiA1QyA1RiA0
NyA1MCA0NSAgRDNEN0I4Li4uSS5cX0dQRQogICAgMEE1MDogMTQgNDEgRkYgNUYgNEMgMzEgMzQg
MDAgQTAgMTQgOTMgNDQgNTIgNTAgNEUgMDAgIC5BLl9MMTQuLi4uRFJQTi4KICAgIDBBNjA6IDg2
IDVDIDJFIDVGIDUzIDQyIDVGIDQxIDQ1IDUyIDUyIDBBIDgwIEExIDRFIEZDICAuXC5fU0JfQUVS
Ui4uLk4uCiAgICAwQTcwOiA5NiA0NCA1MiA1MCA0RSA2MCA3MCA5QyA2MCBGRiAwMCA2MSBBMCAx
QiA5MyA2MSAgLkRSUE5gcC5gLi5hLi4uYQogICAgMEE4MDogMEQgNDQgMzAgNDEgMzAgMDAgODYg
NUMgMkYgMDMgNUYgNTMgNDIgNUYgNTMgMzAgIC5EMEEwLi5cLy5fU0JfUzAKICAgIDBBOTA6IDQ0
IDMwIDQ0IDMwIDQxIDMwIDBBIDBGIEEwIDFCIDkzIDYxIDBEIDQ0IDMwIDQxICBEMEQwQTAuLi4u
LmEuRDBBCiAgICAwQUEwOiAzMSAwMCA4NiA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MyAzMCA0NCAz
MCA0NCAzMCAgMS4uXC8uX1NCX1MwRDBEMAogICAgMEFCMDogNDEgMzEgMEEgMEYgQTAgMUIgOTMg
NjEgMEQgNDQgMzAgNDEgMzIgMDAgODYgNUMgIEExLi4uLi5hLkQwQTIuLlwKICAgIDBBQzA6IDJG
IDAzIDVGIDUzIDQyIDVGIDUzIDMwIDQ0IDMwIDQ0IDMwIDQxIDMyIDBBIDBGICAvLl9TQl9TMEQw
RDBBMi4uCiAgICAwQUQwOiBBMCAxQiA5MyA2MSAwRCA0NCAzMCA0MSAzMyAwMCA4NiA1QyAyRiAw
MyA1RiA1MyAgLi4uYS5EMEEzLi5cLy5fUwogICAgMEFFMDogNDIgNUYgNTMgMzAgNDQgMzAgNDQg
MzAgNDEgMzMgMEEgMEYgQTAgMUIgOTMgNjEgIEJfUzBEMEQwQTMuLi4uLmEKICAgIDBBRjA6IDBE
IDQ0IDMwIDQxIDM0IDAwIDg2IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUzIDMwICAuRDBBNC4uXC8u
X1NCX1MwCiAgICAwQjAwOiA0NCAzMCA0NCAzMCA0MSAzNCAwQSAwRiBBMCAxQiA5MyA2MSAwRCA0
NCAzMCA0MSAgRDBEMEE0Li4uLi5hLkQwQQogICAgMEIxMDogMzUgMDAgODYgNUMgMkYgMDMgNUYg
NTMgNDIgNUYgNTMgMzAgNDQgMzAgNDQgMzAgIDUuLlwvLl9TQl9TMEQwRDAKICAgIDBCMjA6IDQx
IDM1IDBBIDBGIEEwIDFCIDkzIDYxIDBEIDQ0IDMwIDQxIDM2IDAwIDg2IDVDICBBNS4uLi4uYS5E
MEE2Li5cCiAgICAwQjMwOiAyRiAwMyA1RiA1MyA0MiA1RiA1MyAzMCA0NCAzMCA0NCAzMCA0MSAz
NiAwQSAwRiAgLy5fU0JfUzBEMEQwQTYuLgogICAgMEI0MDogQTAgMUIgOTMgNjEgMEQgNDQgMzAg
NDEgMzcgMDAgODYgNUMgMkYgMDMgNUYgNTMgIC4uLmEuRDBBNy4uXC8uX1MKICAgIDBCNTA6IDQy
IDVGIDUzIDMwIDQ0IDMwIDQ0IDMwIDQxIDM3IDBBIDBGIEEwIDFCIDkzIDYxICBCX1MwRDBEMEE3
Li4uLi5hCiAgICAwQjYwOiAwRCA0NCAzMCA0MSAzOCAwMCA4NiA1QyAyRiAwMyA1RiA1MyA0MiA1
RiA1MyAzMCAgLkQwQTguLlwvLl9TQl9TMAogICAgMEI3MDogNDQgMzAgNDQgMzAgNDEgMzggMEEg
MEYgQTAgMUIgOTMgNjEgMEQgNDQgMzAgNDIgIEQwRDBBOC4uLi4uYS5EMEIKICAgIDBCODA6IDMw
IDAwIDg2IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUzIDMwIDQ0IDMwIDQ0IDMwICAwLi5cLy5fU0Jf
UzBEMEQwCiAgICAwQjkwOiA0MiAzMCAwQSAwRiBBMCAxQiA5MyA2MSAwRCA0NCAzMCA0MiAzMSAw
MCA4NiA1QyAgQjAuLi4uLmEuRDBCMS4uXAogICAgMEJBMDogMkYgMDMgNUYgNTMgNDIgNUYgNTMg
MzAgNDQgMzAgNDQgMzAgNDIgMzEgMEEgMEYgIC8uX1NCX1MwRDBEMEIxLi4KICAgIDBCQjA6IEEw
IDFCIDkzIDYxIDBEIDQ0IDMwIDQyIDMyIDAwIDg2IDVDIDJGIDAzIDVGIDUzICAuLi5hLkQwQjIu
LlwvLl9TCiAgICAwQkMwOiA0MiA1RiA1MyAzMCA0NCAzMCA0NCAzMCA0MiAzMiAwQSAwRiBBMCAx
QiA5MyA2MSAgQl9TMEQwRDBCMi4uLi4uYQogICAgMEJEMDogMEQgNDQgMzAgNDIgMzMgMDAgODYg
NUMgMkYgMDMgNUYgNTMgNDIgNUYgNTMgMzAgIC5EMEIzLi5cLy5fU0JfUzAKICAgIDBCRTA6IDQ0
IDMwIDQ0IDMwIDQyIDMzIDBBIDBGIEEwIDFCIDkzIDYxIDBEIDQ0IDMwIDQyICBEMEQwQjMuLi4u
LmEuRDBCCiAgICAwQkYwOiAzNCAwMCA4NiA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MyAzMCA0NCAz
MCA0NCAzMCAgNC4uXC8uX1NCX1MwRDBEMAogICAgMEMwMDogNDIgMzQgMEEgMEYgQTAgMUIgOTMg
NjEgMEQgNDQgMzAgNDIgMzUgMDAgODYgNUMgIEI0Li4uLi5hLkQwQjUuLlwKICAgIDBDMTA6IDJG
IDAzIDVGIDUzIDQyIDVGIDUzIDMwIDQ0IDMwIDQ0IDMwIDQyIDM1IDBBIDBGICAvLl9TQl9TMEQw
RDBCNS4uCiAgICAwQzIwOiBBMCAxQiA5MyA2MSAwRCA0NCAzMCA0MiAzNiAwMCA4NiA1QyAyRiAw
MyA1RiA1MyAgLi4uYS5EMEI2Li5cLy5fUwogICAgMEMzMDogNDIgNUYgNTMgMzAgNDQgMzAgNDQg
MzAgNDIgMzYgMEEgMEYgQTAgMUIgOTMgNjEgIEJfUzBEMEQwQjYuLi4uLmEKICAgIDBDNDA6IDBE
IDQ0IDMwIDQyIDM3IDAwIDg2IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUzIDMwICAuRDBCNy4uXC8u
X1NCX1MwCiAgICAwQzUwOiA0NCAzMCA0NCAzMCA0MiAzNyAwQSAwRiBBMCAxQiA5MyA2MSAwRCA0
NCAzMCA0MiAgRDBEMEI3Li4uLi5hLkQwQgogICAgMEM2MDogMzggMDAgODYgNUMgMkYgMDMgNUYg
NTMgNDIgNUYgNTMgMzAgNDQgMzAgNDQgMzAgIDguLlwvLl9TQl9TMEQwRDAKICAgIDBDNzA6IDQy
IDM4IDBBIDBGIEEwIDFCIDkzIDYxIDBEIDQ0IDMxIDQxIDMwIDAwIDg2IDVDICBCOC4uLi4uYS5E
MUEwLi5cCiAgICAwQzgwOiAyRiAwMyA1RiA1MyA0MiA1RiA1MyAzMCA0NCAzMSA0NCAzMSA0MSAz
MCAwQSAwRiAgLy5fU0JfUzBEMUQxQTAuLgogICAgMEM5MDogQTAgMUIgOTMgNjEgMEQgNDQgMzEg
NDEgMzEgMDAgODYgNUMgMkYgMDMgNUYgNTMgIC4uLmEuRDFBMS4uXC8uX1MKICAgIDBDQTA6IDQy
IDVGIDUzIDMwIDQ0IDMxIDQ0IDMxIDQxIDMxIDBBIDBGIEEwIDFCIDkzIDYxICBCX1MwRDFEMUEx
Li4uLi5hCiAgICAwQ0IwOiAwRCA0NCAzMSA0MSAzMiAwMCA4NiA1QyAyRiAwMyA1RiA1MyA0MiA1
RiA1MyAzMCAgLkQxQTIuLlwvLl9TQl9TMAogICAgMENDMDogNDQgMzEgNDQgMzEgNDEgMzIgMEEg
MEYgQTAgMUIgOTMgNjEgMEQgNDQgMzEgNDEgIEQxRDFBMi4uLi4uYS5EMUEKICAgIDBDRDA6IDMz
IDAwIDg2IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUzIDMwIDQ0IDMxIDQ0IDMxICAzLi5cLy5fU0Jf
UzBEMUQxCiAgICAwQ0UwOiA0MSAzMyAwQSAwRiBBMCAxQiA5MyA2MSAwRCA0NCAzMSA0MSAzNCAw
MCA4NiA1QyAgQTMuLi4uLmEuRDFBNC4uXAogICAgMENGMDogMkYgMDMgNUYgNTMgNDIgNUYgNTMg
MzAgNDQgMzEgNDQgMzEgNDEgMzQgMEEgMEYgIC8uX1NCX1MwRDFEMUE0Li4KICAgIDBEMDA6IEEw
IDFCIDkzIDYxIDBEIDQ0IDMxIDQxIDM1IDAwIDg2IDVDIDJGIDAzIDVGIDUzICAuLi5hLkQxQTUu
LlwvLl9TCiAgICAwRDEwOiA0MiA1RiA1MyAzMCA0NCAzMSA0NCAzMSA0MSAzNSAwQSAwRiBBMCAx
QiA5MyA2MSAgQl9TMEQxRDFBNS4uLi4uYQogICAgMEQyMDogMEQgNDQgMzEgNDEgMzYgMDAgODYg
NUMgMkYgMDMgNUYgNTMgNDIgNUYgNTMgMzAgIC5EMUE2Li5cLy5fU0JfUzAKICAgIDBEMzA6IDQ0
IDMxIDQ0IDMxIDQxIDM2IDBBIDBGIEEwIDFCIDkzIDYxIDBEIDQ0IDMxIDQxICBEMUQxQTYuLi4u
LmEuRDFBCiAgICAwRDQwOiAzNyAwMCA4NiA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MyAzMCA0NCAz
MSA0NCAzMSAgNy4uXC8uX1NCX1MwRDFEMQogICAgMEQ1MDogNDEgMzcgMEEgMEYgQTAgMUIgOTMg
NjEgMEQgNDQgMzEgNDEgMzggMDAgODYgNUMgIEE3Li4uLi5hLkQxQTguLlwKICAgIDBENjA6IDJG
IDAzIDVGIDUzIDQyIDVGIDUzIDMwIDQ0IDMxIDQ0IDMxIDQxIDM4IDBBIDBGICAvLl9TQl9TMEQx
RDFBOC4uCiAgICAwRDcwOiBBMCAxQiA5MyA2MSAwRCA0NCAzMSA0MiAzMCAwMCA4NiA1QyAyRiAw
MyA1RiA1MyAgLi4uYS5EMUIwLi5cLy5fUwogICAgMEQ4MDogNDIgNUYgNTMgMzAgNDQgMzEgNDQg
MzEgNDIgMzAgMEEgMEYgQTAgMUIgOTMgNjEgIEJfUzBEMUQxQjAuLi4uLmEKICAgIDBEOTA6IDBE
IDQ0IDMxIDQyIDMxIDAwIDg2IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUzIDMwICAuRDFCMS4uXC8u
X1NCX1MwCiAgICAwREEwOiA0NCAzMSA0NCAzMSA0MiAzMSAwQSAwRiBBMCAxQiA5MyA2MSAwRCA0
NCAzMSA0MiAgRDFEMUIxLi4uLi5hLkQxQgogICAgMERCMDogMzIgMDAgODYgNUMgMkYgMDMgNUYg
NTMgNDIgNUYgNTMgMzAgNDQgMzEgNDQgMzEgIDIuLlwvLl9TQl9TMEQxRDEKICAgIDBEQzA6IDQy
IDMyIDBBIDBGIEEwIDFCIDkzIDYxIDBEIDQ0IDMxIDQyIDMzIDAwIDg2IDVDICBCMi4uLi4uYS5E
MUIzLi5cCiAgICAwREQwOiAyRiAwMyA1RiA1MyA0MiA1RiA1MyAzMCA0NCAzMSA0NCAzMSA0MiAz
MyAwQSAwRiAgLy5fU0JfUzBEMUQxQjMuLgogICAgMERFMDogQTAgMUIgOTMgNjEgMEQgNDQgMzEg
NDIgMzQgMDAgODYgNUMgMkYgMDMgNUYgNTMgIC4uLmEuRDFCNC4uXC8uX1MKICAgIDBERjA6IDQy
IDVGIDUzIDMwIDQ0IDMxIDQ0IDMxIDQyIDM0IDBBIDBGIEEwIDFCIDkzIDYxICBCX1MwRDFEMUI0
Li4uLi5hCiAgICAwRTAwOiAwRCA0NCAzMSA0MiAzNSAwMCA4NiA1QyAyRiAwMyA1RiA1MyA0MiA1
RiA1MyAzMCAgLkQxQjUuLlwvLl9TQl9TMAogICAgMEUxMDogNDQgMzEgNDQgMzEgNDIgMzUgMEEg
MEYgQTAgMUIgOTMgNjEgMEQgNDQgMzEgNDIgIEQxRDFCNS4uLi4uYS5EMUIKICAgIDBFMjA6IDM2
IDAwIDg2IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUzIDMwIDQ0IDMxIDQ0IDMxICA2Li5cLy5fU0Jf
UzBEMUQxCiAgICAwRTMwOiA0MiAzNiAwQSAwRiBBMCAxQiA5MyA2MSAwRCA0NCAzMSA0MiAzNyAw
MCA4NiA1QyAgQjYuLi4uLmEuRDFCNy4uXAogICAgMEU0MDogMkYgMDMgNUYgNTMgNDIgNUYgNTMg
MzAgNDQgMzEgNDQgMzEgNDIgMzcgMEEgMEYgIC8uX1NCX1MwRDFEMUI3Li4KICAgIDBFNTA6IEEw
IDFCIDkzIDYxIDBEIDQ0IDMxIDQyIDM4IDAwIDg2IDVDIDJGIDAzIDVGIDUzICAuLi5hLkQxQjgu
LlwvLl9TCiAgICAwRTYwOiA0MiA1RiA1MyAzMCA0NCAzMSA0NCAzMSA0MiAzOCAwQSAwRiBBMCAx
QiA5MyA2MSAgQl9TMEQxRDFCOC4uLi4uYQogICAgMEU3MDogMEQgNDQgMzIgNDEgMzAgMDAgODYg
NUMgMkYgMDMgNUYgNTMgNDIgNUYgNTMgMzAgIC5EMkEwLi5cLy5fU0JfUzAKICAgIDBFODA6IDQ0
IDMyIDQ0IDMyIDQxIDMwIDBBIDBGIEEwIDFCIDkzIDYxIDBEIDQ0IDMyIDQxICBEMkQyQTAuLi4u
LmEuRDJBCiAgICAwRTkwOiAzMSAwMCA4NiA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MyAzMCA0NCAz
MiA0NCAzMiAgMS4uXC8uX1NCX1MwRDJEMgogICAgMEVBMDogNDEgMzEgMEEgMEYgQTAgMUIgOTMg
NjEgMEQgNDQgMzIgNDEgMzIgMDAgODYgNUMgIEExLi4uLi5hLkQyQTIuLlwKICAgIDBFQjA6IDJG
IDAzIDVGIDUzIDQyIDVGIDUzIDMwIDQ0IDMyIDQ0IDMyIDQxIDMyIDBBIDBGICAvLl9TQl9TMEQy
RDJBMi4uCiAgICAwRUMwOiBBMCAxQiA5MyA2MSAwRCA0NCAzMiA0MSAzMyAwMCA4NiA1QyAyRiAw
MyA1RiA1MyAgLi4uYS5EMkEzLi5cLy5fUwogICAgMEVEMDogNDIgNUYgNTMgMzAgNDQgMzIgNDQg
MzIgNDEgMzMgMEEgMEYgQTAgMUIgOTMgNjEgIEJfUzBEMkQyQTMuLi4uLmEKICAgIDBFRTA6IDBE
IDQ0IDMyIDQxIDM0IDAwIDg2IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUzIDMwICAuRDJBNC4uXC8u
X1NCX1MwCiAgICAwRUYwOiA0NCAzMiA0NCAzMiA0MSAzNCAwQSAwRiBBMCAxQiA5MyA2MSAwRCA0
NCAzMiA0MSAgRDJEMkE0Li4uLi5hLkQyQQogICAgMEYwMDogMzUgMDAgODYgNUMgMkYgMDMgNUYg
NTMgNDIgNUYgNTMgMzAgNDQgMzIgNDQgMzIgIDUuLlwvLl9TQl9TMEQyRDIKICAgIDBGMTA6IDQx
IDM1IDBBIDBGIEEwIDFCIDkzIDYxIDBEIDQ0IDMyIDQxIDM2IDAwIDg2IDVDICBBNS4uLi4uYS5E
MkE2Li5cCiAgICAwRjIwOiAyRiAwMyA1RiA1MyA0MiA1RiA1MyAzMCA0NCAzMiA0NCAzMiA0MSAz
NiAwQSAwRiAgLy5fU0JfUzBEMkQyQTYuLgogICAgMEYzMDogQTAgMUIgOTMgNjEgMEQgNDQgMzIg
NDEgMzcgMDAgODYgNUMgMkYgMDMgNUYgNTMgIC4uLmEuRDJBNy4uXC8uX1MKICAgIDBGNDA6IDQy
IDVGIDUzIDMwIDQ0IDMyIDQ0IDMyIDQxIDM3IDBBIDBGIEEwIDFCIDkzIDYxICBCX1MwRDJEMkE3
Li4uLi5hCiAgICAwRjUwOiAwRCA0NCAzMiA0MSAzOCAwMCA4NiA1QyAyRiAwMyA1RiA1MyA0MiA1
RiA1MyAzMCAgLkQyQTguLlwvLl9TQl9TMAogICAgMEY2MDogNDQgMzIgNDQgMzIgNDEgMzggMEEg
MEYgQTAgMUIgOTMgNjEgMEQgNDQgMzIgNDIgIEQyRDJBOC4uLi4uYS5EMkIKICAgIDBGNzA6IDMw
IDAwIDg2IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUzIDMwIDQ0IDMyIDQ0IDMyICAwLi5cLy5fU0Jf
UzBEMkQyCiAgICAwRjgwOiA0MiAzMCAwQSAwRiBBMCAxQiA5MyA2MSAwRCA0NCAzMiA0MiAzMSAw
MCA4NiA1QyAgQjAuLi4uLmEuRDJCMS4uXAogICAgMEY5MDogMkYgMDMgNUYgNTMgNDIgNUYgNTMg
MzAgNDQgMzIgNDQgMzIgNDIgMzEgMEEgMEYgIC8uX1NCX1MwRDJEMkIxLi4KICAgIDBGQTA6IEEw
IDFCIDkzIDYxIDBEIDQ0IDMyIDQyIDMyIDAwIDg2IDVDIDJGIDAzIDVGIDUzICAuLi5hLkQyQjIu
LlwvLl9TCiAgICAwRkIwOiA0MiA1RiA1MyAzMCA0NCAzMiA0NCAzMiA0MiAzMiAwQSAwRiBBMCAx
QiA5MyA2MSAgQl9TMEQyRDJCMi4uLi4uYQogICAgMEZDMDogMEQgNDQgMzIgNDIgMzMgMDAgODYg
NUMgMkYgMDMgNUYgNTMgNDIgNUYgNTMgMzAgIC5EMkIzLi5cLy5fU0JfUzAKICAgIDBGRDA6IDQ0
IDMyIDQ0IDMyIDQyIDMzIDBBIDBGIEEwIDFCIDkzIDYxIDBEIDQ0IDMyIDQyICBEMkQyQjMuLi4u
LmEuRDJCCiAgICAwRkUwOiAzNCAwMCA4NiA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MyAzMCA0NCAz
MiA0NCAzMiAgNC4uXC8uX1NCX1MwRDJEMgogICAgMEZGMDogNDIgMzQgMEEgMEYgQTAgMUIgOTMg
NjEgMEQgNDQgMzIgNDIgMzUgMDAgODYgNUMgIEI0Li4uLi5hLkQyQjUuLlwKICAgIDEwMDA6IDJG
IDAzIDVGIDUzIDQyIDVGIDUzIDMwIDQ0IDMyIDQ0IDMyIDQyIDM1IDBBIDBGICAvLl9TQl9TMEQy
RDJCNS4uCiAgICAxMDEwOiBBMCAxQiA5MyA2MSAwRCA0NCAzMiA0MiAzNiAwMCA4NiA1QyAyRiAw
MyA1RiA1MyAgLi4uYS5EMkI2Li5cLy5fUwogICAgMTAyMDogNDIgNUYgNTMgMzAgNDQgMzIgNDQg
MzIgNDIgMzYgMEEgMEYgQTAgMUIgOTMgNjEgIEJfUzBEMkQyQjYuLi4uLmEKICAgIDEwMzA6IDBE
IDQ0IDMyIDQyIDM3IDAwIDg2IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUzIDMwICAuRDJCNy4uXC8u
X1NCX1MwCiAgICAxMDQwOiA0NCAzMiA0NCAzMiA0MiAzNyAwQSAwRiBBMCAxQiA5MyA2MSAwRCA0
NCAzMiA0MiAgRDJEMkI3Li4uLi5hLkQyQgogICAgMTA1MDogMzggMDAgODYgNUMgMkYgMDMgNUYg
NTMgNDIgNUYgNTMgMzAgNDQgMzIgNDQgMzIgIDguLlwvLl9TQl9TMEQyRDIKICAgIDEwNjA6IDQy
IDM4IDBBIDBGIEEwIDFCIDkzIDYxIDBEIDQ0IDMzIDQxIDMwIDAwIDg2IDVDICBCOC4uLi4uYS5E
M0EwLi5cCiAgICAxMDcwOiAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMCA0NCAzMyA0MSAz
MCAwQSAwRiAgLy5fU0JfUENJMEQzQTAuLgogICAgMTA4MDogQTAgMUIgOTMgNjEgMEQgNDQgMzMg
NDEgMzEgMDAgODYgNUMgMkYgMDMgNUYgNTMgIC4uLmEuRDNBMS4uXC8uX1MKICAgIDEwOTA6IDQy
IDVGIDUwIDQzIDQ5IDMwIDQ0IDMzIDQxIDMxIDBBIDBGIEEwIDFCIDkzIDYxICBCX1BDSTBEM0Ex
Li4uLi5hCiAgICAxMEEwOiAwRCA0NCAzMyA0MSAzMiAwMCA4NiA1QyAyRiAwMyA1RiA1MyA0MiA1
RiA1MCA0MyAgLkQzQTIuLlwvLl9TQl9QQwogICAgMTBCMDogNDkgMzAgNDQgMzMgNDEgMzIgMEEg
MEYgQTAgMUIgOTMgNjEgMEQgNDQgMzMgNDEgIEkwRDNBMi4uLi4uYS5EM0EKICAgIDEwQzA6IDMz
IDAwIDg2IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMwIDQ0IDMzICAzLi5cLy5fU0Jf
UENJMEQzCiAgICAxMEQwOiA0MSAzMyAwQSAwRiBBMCAxQiA5MyA2MSAwRCA0NCAzMyA0MSAzNCAw
MCA4NiA1QyAgQTMuLi4uLmEuRDNBNC4uXAogICAgMTBFMDogMkYgMDMgNUYgNTMgNDIgNUYgNTAg
NDMgNDkgMzAgNDQgMzMgNDEgMzQgMEEgMEYgIC8uX1NCX1BDSTBEM0E0Li4KICAgIDEwRjA6IEEw
IDFCIDkzIDYxIDBEIDQ0IDMzIDQxIDM1IDAwIDg2IDVDIDJGIDAzIDVGIDUzICAuLi5hLkQzQTUu
LlwvLl9TCiAgICAxMTAwOiA0MiA1RiA1MCA0MyA0OSAzMCA0NCAzMyA0MSAzNSAwQSAwRiBBMCAx
QiA5MyA2MSAgQl9QQ0kwRDNBNS4uLi4uYQogICAgMTExMDogMEQgNDQgMzMgNDEgMzYgMDAgODYg
NUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAgNDMgIC5EM0E2Li5cLy5fU0JfUEMKICAgIDExMjA6IDQ5
IDMwIDQ0IDMzIDQxIDM2IDBBIDBGIEEwIDFCIDkzIDYxIDBEIDQ0IDMzIDQxICBJMEQzQTYuLi4u
LmEuRDNBCiAgICAxMTMwOiAzNyAwMCA4NiA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAz
MCA0NCAzMyAgNy4uXC8uX1NCX1BDSTBEMwogICAgMTE0MDogNDEgMzcgMEEgMEYgQTAgMUIgOTMg
NjEgMEQgNDQgMzMgNDEgMzggMDAgODYgNUMgIEE3Li4uLi5hLkQzQTguLlwKICAgIDExNTA6IDJG
IDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMwIDQ0IDMzIDQxIDM4IDBBIDBGICAvLl9TQl9QQ0kw
RDNBOC4uCiAgICAxMTYwOiBBMCAxQiA5MyA2MSAwRCA0NCAzMyA0MiAzMCAwMCA4NiA1QyAyRiAw
MyA1RiA1MyAgLi4uYS5EM0IwLi5cLy5fUwogICAgMTE3MDogNDIgNUYgNTAgNDMgNDkgMzAgNDQg
MzMgNDIgMzAgMEEgMEYgQTAgMUIgOTMgNjEgIEJfUENJMEQzQjAuLi4uLmEKICAgIDExODA6IDBE
IDQ0IDMzIDQyIDMxIDAwIDg2IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzICAuRDNCMS4uXC8u
X1NCX1BDCiAgICAxMTkwOiA0OSAzMCA0NCAzMyA0MiAzMSAwQSAwRiBBMCAxQiA5MyA2MSAwRCA0
NCAzMyA0MiAgSTBEM0IxLi4uLi5hLkQzQgogICAgMTFBMDogMzIgMDAgODYgNUMgMkYgMDMgNUYg
NTMgNDIgNUYgNTAgNDMgNDkgMzAgNDQgMzMgIDIuLlwvLl9TQl9QQ0kwRDMKICAgIDExQjA6IDQy
IDMyIDBBIDBGIEEwIDFCIDkzIDYxIDBEIDQ0IDMzIDQyIDMzIDAwIDg2IDVDICBCMi4uLi4uYS5E
M0IzLi5cCiAgICAxMUMwOiAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMCA0NCAzMyA0MiAz
MyAwQSAwRiAgLy5fU0JfUENJMEQzQjMuLgogICAgMTFEMDogQTAgMUIgOTMgNjEgMEQgNDQgMzMg
NDIgMzQgMDAgODYgNUMgMkYgMDMgNUYgNTMgIC4uLmEuRDNCNC4uXC8uX1MKICAgIDExRTA6IDQy
IDVGIDUwIDQzIDQ5IDMwIDQ0IDMzIDQyIDM0IDBBIDBGIEEwIDFCIDkzIDYxICBCX1BDSTBEM0I0
Li4uLi5hCiAgICAxMUYwOiAwRCA0NCAzMyA0MiAzNSAwMCA4NiA1QyAyRiAwMyA1RiA1MyA0MiA1
RiA1MCA0MyAgLkQzQjUuLlwvLl9TQl9QQwogICAgMTIwMDogNDkgMzAgNDQgMzMgNDIgMzUgMEEg
MEYgQTAgMUIgOTMgNjEgMEQgNDQgMzMgNDIgIEkwRDNCNS4uLi4uYS5EM0IKICAgIDEyMTA6IDM2
IDAwIDg2IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMwIDQ0IDMzICA2Li5cLy5fU0Jf
UENJMEQzCiAgICAxMjIwOiA0MiAzNiAwQSAwRiBBMCAxQiA5MyA2MSAwRCA0NCAzMyA0MiAzNyAw
MCA4NiA1QyAgQjYuLi4uLmEuRDNCNy4uXAogICAgMTIzMDogMkYgMDMgNUYgNTMgNDIgNUYgNTAg
NDMgNDkgMzAgNDQgMzMgNDIgMzcgMEEgMEYgIC8uX1NCX1BDSTBEM0I3Li4KICAgIDEyNDA6IEEw
IDFCIDkzIDYxIDBEIDQ0IDMzIDQyIDM4IDAwIDg2IDVDIDJGIDAzIDVGIDUzICAuLi5hLkQzQjgu
LlwvLl9TCiAgICAxMjUwOiA0MiA1RiA1MCA0MyA0OSAzMCA0NCAzMyA0MiAzOCAwQSAwRiBBMCAx
QiA5MyA2MSAgQl9QQ0kwRDNCOC4uLi4uYQogICAgMTI2MDogMEQgNDQgMzQgNDEgMzAgMDAgODYg
NUMgMkYgMDMgNUYgNTMgNDIgNUYgNTMgMzEgIC5ENEEwLi5cLy5fU0JfUzEKICAgIDEyNzA6IDQ0
IDMwIDQ0IDM0IDQxIDMwIDBBIDBGIEEwIDFCIDkzIDYxIDBEIDQ0IDM0IDQxICBEMEQ0QTAuLi4u
LmEuRDRBCiAgICAxMjgwOiAzMSAwMCA4NiA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MyAzMSA0NCAz
MCA0NCAzNCAgMS4uXC8uX1NCX1MxRDBENAogICAgMTI5MDogNDEgMzEgMEEgMEYgQTAgMUIgOTMg
NjEgMEQgNDQgMzQgNDEgMzIgMDAgODYgNUMgIEExLi4uLi5hLkQ0QTIuLlwKICAgIDEyQTA6IDJG
IDAzIDVGIDUzIDQyIDVGIDUzIDMxIDQ0IDMwIDQ0IDM0IDQxIDMyIDBBIDBGICAvLl9TQl9TMUQw
RDRBMi4uCiAgICAxMkIwOiBBMCAxQiA5MyA2MSAwRCA0NCAzNCA0MSAzMyAwMCA4NiA1QyAyRiAw
MyA1RiA1MyAgLi4uYS5ENEEzLi5cLy5fUwogICAgMTJDMDogNDIgNUYgNTMgMzEgNDQgMzAgNDQg
MzQgNDEgMzMgMEEgMEYgQTAgMUIgOTMgNjEgIEJfUzFEMEQ0QTMuLi4uLmEKICAgIDEyRDA6IDBE
IDQ0IDM0IDQxIDM0IDAwIDg2IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUzIDMxICAuRDRBNC4uXC8u
X1NCX1MxCiAgICAxMkUwOiA0NCAzMCA0NCAzNCA0MSAzNCAwQSAwRiBBMCAxQiA5MyA2MSAwRCA0
NCAzNCA0MSAgRDBENEE0Li4uLi5hLkQ0QQogICAgMTJGMDogMzUgMDAgODYgNUMgMkYgMDMgNUYg
NTMgNDIgNUYgNTMgMzEgNDQgMzAgNDQgMzQgIDUuLlwvLl9TQl9TMUQwRDQKICAgIDEzMDA6IDQx
IDM1IDBBIDBGIEEwIDFCIDkzIDYxIDBEIDQ0IDM0IDQxIDM2IDAwIDg2IDVDICBBNS4uLi4uYS5E
NEE2Li5cCiAgICAxMzEwOiAyRiAwMyA1RiA1MyA0MiA1RiA1MyAzMSA0NCAzMCA0NCAzNCA0MSAz
NiAwQSAwRiAgLy5fU0JfUzFEMEQ0QTYuLgogICAgMTMyMDogQTAgMUIgOTMgNjEgMEQgNDQgMzQg
NDEgMzcgMDAgODYgNUMgMkYgMDMgNUYgNTMgIC4uLmEuRDRBNy4uXC8uX1MKICAgIDEzMzA6IDQy
IDVGIDUzIDMxIDQ0IDMwIDQ0IDM0IDQxIDM3IDBBIDBGIEEwIDFCIDkzIDYxICBCX1MxRDBENEE3
Li4uLi5hCiAgICAxMzQwOiAwRCA0NCAzNCA0MSAzOCAwMCA4NiA1QyAyRiAwMyA1RiA1MyA0MiA1
RiA1MyAzMSAgLkQ0QTguLlwvLl9TQl9TMQogICAgMTM1MDogNDQgMzAgNDQgMzQgNDEgMzggMEEg
MEYgQTAgMUIgOTMgNjEgMEQgNDQgMzQgNDIgIEQwRDRBOC4uLi4uYS5ENEIKICAgIDEzNjA6IDMw
IDAwIDg2IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUzIDMxIDQ0IDMwIDQ0IDM0ICAwLi5cLy5fU0Jf
UzFEMEQ0CiAgICAxMzcwOiA0MiAzMCAwQSAwRiBBMCAxQiA5MyA2MSAwRCA0NCAzNCA0MiAzMSAw
MCA4NiA1QyAgQjAuLi4uLmEuRDRCMS4uXAogICAgMTM4MDogMkYgMDMgNUYgNTMgNDIgNUYgNTMg
MzEgNDQgMzAgNDQgMzQgNDIgMzEgMEEgMEYgIC8uX1NCX1MxRDBENEIxLi4KICAgIDEzOTA6IEEw
IDFCIDkzIDYxIDBEIDQ0IDM0IDQyIDMyIDAwIDg2IDVDIDJGIDAzIDVGIDUzICAuLi5hLkQ0QjIu
LlwvLl9TCiAgICAxM0EwOiA0MiA1RiA1MyAzMSA0NCAzMCA0NCAzNCA0MiAzMiAwQSAwRiBBMCAx
QiA5MyA2MSAgQl9TMUQwRDRCMi4uLi4uYQogICAgMTNCMDogMEQgNDQgMzQgNDIgMzMgMDAgODYg
NUMgMkYgMDMgNUYgNTMgNDIgNUYgNTMgMzEgIC5ENEIzLi5cLy5fU0JfUzEKICAgIDEzQzA6IDQ0
IDMwIDQ0IDM0IDQyIDMzIDBBIDBGIEEwIDFCIDkzIDYxIDBEIDQ0IDM0IDQyICBEMEQ0QjMuLi4u
LmEuRDRCCiAgICAxM0QwOiAzNCAwMCA4NiA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MyAzMSA0NCAz
MCA0NCAzNCAgNC4uXC8uX1NCX1MxRDBENAogICAgMTNFMDogNDIgMzQgMEEgMEYgQTAgMUIgOTMg
NjEgMEQgNDQgMzQgNDIgMzUgMDAgODYgNUMgIEI0Li4uLi5hLkQ0QjUuLlwKICAgIDEzRjA6IDJG
IDAzIDVGIDUzIDQyIDVGIDUzIDMxIDQ0IDMwIDQ0IDM0IDQyIDM1IDBBIDBGICAvLl9TQl9TMUQw
RDRCNS4uCiAgICAxNDAwOiBBMCAxQiA5MyA2MSAwRCA0NCAzNCA0MiAzNiAwMCA4NiA1QyAyRiAw
MyA1RiA1MyAgLi4uYS5ENEI2Li5cLy5fUwogICAgMTQxMDogNDIgNUYgNTMgMzEgNDQgMzAgNDQg
MzQgNDIgMzYgMEEgMEYgQTAgMUIgOTMgNjEgIEJfUzFEMEQ0QjYuLi4uLmEKICAgIDE0MjA6IDBE
IDQ0IDM0IDQyIDM3IDAwIDg2IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUzIDMxICAuRDRCNy4uXC8u
X1NCX1MxCiAgICAxNDMwOiA0NCAzMCA0NCAzNCA0MiAzNyAwQSAwRiBBMCAxQiA5MyA2MSAwRCA0
NCAzNCA0MiAgRDBENEI3Li4uLi5hLkQ0QgogICAgMTQ0MDogMzggMDAgODYgNUMgMkYgMDMgNUYg
NTMgNDIgNUYgNTMgMzEgNDQgMzAgNDQgMzQgIDguLlwvLl9TQl9TMUQwRDQKICAgIDE0NTA6IDQy
IDM4IDBBIDBGIEEwIDFCIDkzIDYxIDBEIDQ0IDM1IDQxIDMwIDAwIDg2IDVDICBCOC4uLi4uYS5E
NUEwLi5cCiAgICAxNDYwOiAyRiAwMyA1RiA1MyA0MiA1RiA1MyAzMSA0NCAzMSA0NCAzNSA0MSAz
MCAwQSAwRiAgLy5fU0JfUzFEMUQ1QTAuLgogICAgMTQ3MDogQTAgMUIgOTMgNjEgMEQgNDQgMzUg
NDEgMzEgMDAgODYgNUMgMkYgMDMgNUYgNTMgIC4uLmEuRDVBMS4uXC8uX1MKICAgIDE0ODA6IDQy
IDVGIDUzIDMxIDQ0IDMxIDQ0IDM1IDQxIDMxIDBBIDBGIEEwIDFCIDkzIDYxICBCX1MxRDFENUEx
Li4uLi5hCiAgICAxNDkwOiAwRCA0NCAzNSA0MSAzMiAwMCA4NiA1QyAyRiAwMyA1RiA1MyA0MiA1
RiA1MyAzMSAgLkQ1QTIuLlwvLl9TQl9TMQogICAgMTRBMDogNDQgMzEgNDQgMzUgNDEgMzIgMEEg
MEYgQTAgMUIgOTMgNjEgMEQgNDQgMzUgNDEgIEQxRDVBMi4uLi4uYS5ENUEKICAgIDE0QjA6IDMz
IDAwIDg2IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUzIDMxIDQ0IDMxIDQ0IDM1ICAzLi5cLy5fU0Jf
UzFEMUQ1CiAgICAxNEMwOiA0MSAzMyAwQSAwRiBBMCAxQiA5MyA2MSAwRCA0NCAzNSA0MSAzNCAw
MCA4NiA1QyAgQTMuLi4uLmEuRDVBNC4uXAogICAgMTREMDogMkYgMDMgNUYgNTMgNDIgNUYgNTMg
MzEgNDQgMzEgNDQgMzUgNDEgMzQgMEEgMEYgIC8uX1NCX1MxRDFENUE0Li4KICAgIDE0RTA6IEEw
IDFCIDkzIDYxIDBEIDQ0IDM1IDQxIDM1IDAwIDg2IDVDIDJGIDAzIDVGIDUzICAuLi5hLkQ1QTUu
LlwvLl9TCiAgICAxNEYwOiA0MiA1RiA1MyAzMSA0NCAzMSA0NCAzNSA0MSAzNSAwQSAwRiBBMCAx
QiA5MyA2MSAgQl9TMUQxRDVBNS4uLi4uYQogICAgMTUwMDogMEQgNDQgMzUgNDEgMzYgMDAgODYg
NUMgMkYgMDMgNUYgNTMgNDIgNUYgNTMgMzEgIC5ENUE2Li5cLy5fU0JfUzEKICAgIDE1MTA6IDQ0
IDMxIDQ0IDM1IDQxIDM2IDBBIDBGIEEwIDFCIDkzIDYxIDBEIDQ0IDM1IDQxICBEMUQ1QTYuLi4u
LmEuRDVBCiAgICAxNTIwOiAzNyAwMCA4NiA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MyAzMSA0NCAz
MSA0NCAzNSAgNy4uXC8uX1NCX1MxRDFENQogICAgMTUzMDogNDEgMzcgMEEgMEYgQTAgMUIgOTMg
NjEgMEQgNDQgMzUgNDEgMzggMDAgODYgNUMgIEE3Li4uLi5hLkQ1QTguLlwKICAgIDE1NDA6IDJG
IDAzIDVGIDUzIDQyIDVGIDUzIDMxIDQ0IDMxIDQ0IDM1IDQxIDM4IDBBIDBGICAvLl9TQl9TMUQx
RDVBOC4uCiAgICAxNTUwOiBBMCAxQiA5MyA2MSAwRCA0NCAzNSA0MiAzMCAwMCA4NiA1QyAyRiAw
MyA1RiA1MyAgLi4uYS5ENUIwLi5cLy5fUwogICAgMTU2MDogNDIgNUYgNTMgMzEgNDQgMzEgNDQg
MzUgNDIgMzAgMEEgMEYgQTAgMUIgOTMgNjEgIEJfUzFEMUQ1QjAuLi4uLmEKICAgIDE1NzA6IDBE
IDQ0IDM1IDQyIDMxIDAwIDg2IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUzIDMxICAuRDVCMS4uXC8u
X1NCX1MxCiAgICAxNTgwOiA0NCAzMSA0NCAzNSA0MiAzMSAwQSAwRiBBMCAxQiA5MyA2MSAwRCA0
NCAzNSA0MiAgRDFENUIxLi4uLi5hLkQ1QgogICAgMTU5MDogMzIgMDAgODYgNUMgMkYgMDMgNUYg
NTMgNDIgNUYgNTMgMzEgNDQgMzEgNDQgMzUgIDIuLlwvLl9TQl9TMUQxRDUKICAgIDE1QTA6IDQy
IDMyIDBBIDBGIEEwIDFCIDkzIDYxIDBEIDQ0IDM1IDQyIDMzIDAwIDg2IDVDICBCMi4uLi4uYS5E
NUIzLi5cCiAgICAxNUIwOiAyRiAwMyA1RiA1MyA0MiA1RiA1MyAzMSA0NCAzMSA0NCAzNSA0MiAz
MyAwQSAwRiAgLy5fU0JfUzFEMUQ1QjMuLgogICAgMTVDMDogQTAgMUIgOTMgNjEgMEQgNDQgMzUg
NDIgMzQgMDAgODYgNUMgMkYgMDMgNUYgNTMgIC4uLmEuRDVCNC4uXC8uX1MKICAgIDE1RDA6IDQy
IDVGIDUzIDMxIDQ0IDMxIDQ0IDM1IDQyIDM0IDBBIDBGIEEwIDFCIDkzIDYxICBCX1MxRDFENUI0
Li4uLi5hCiAgICAxNUUwOiAwRCA0NCAzNSA0MiAzNSAwMCA4NiA1QyAyRiAwMyA1RiA1MyA0MiA1
RiA1MyAzMSAgLkQ1QjUuLlwvLl9TQl9TMQogICAgMTVGMDogNDQgMzEgNDQgMzUgNDIgMzUgMEEg
MEYgQTAgMUIgOTMgNjEgMEQgNDQgMzUgNDIgIEQxRDVCNS4uLi4uYS5ENUIKICAgIDE2MDA6IDM2
IDAwIDg2IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUzIDMxIDQ0IDMxIDQ0IDM1ICA2Li5cLy5fU0Jf
UzFEMUQ1CiAgICAxNjEwOiA0MiAzNiAwQSAwRiBBMCAxQiA5MyA2MSAwRCA0NCAzNSA0MiAzNyAw
MCA4NiA1QyAgQjYuLi4uLmEuRDVCNy4uXAogICAgMTYyMDogMkYgMDMgNUYgNTMgNDIgNUYgNTMg
MzEgNDQgMzEgNDQgMzUgNDIgMzcgMEEgMEYgIC8uX1NCX1MxRDFENUI3Li4KICAgIDE2MzA6IEEw
IDFCIDkzIDYxIDBEIDQ0IDM1IDQyIDM4IDAwIDg2IDVDIDJGIDAzIDVGIDUzICAuLi5hLkQ1Qjgu
LlwvLl9TCiAgICAxNjQwOiA0MiA1RiA1MyAzMSA0NCAzMSA0NCAzNSA0MiAzOCAwQSAwRiBBMCAx
QiA5MyA2MSAgQl9TMUQxRDVCOC4uLi4uYQogICAgMTY1MDogMEQgNDQgMzYgNDEgMzAgMDAgODYg
NUMgMkYgMDMgNUYgNTMgNDIgNUYgNTMgMzEgIC5ENkEwLi5cLy5fU0JfUzEKICAgIDE2NjA6IDQ0
IDMyIDQ0IDM2IDQxIDMwIDBBIDBGIEEwIDFCIDkzIDYxIDBEIDQ0IDM2IDQxICBEMkQ2QTAuLi4u
LmEuRDZBCiAgICAxNjcwOiAzMSAwMCA4NiA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MyAzMSA0NCAz
MiA0NCAzNiAgMS4uXC8uX1NCX1MxRDJENgogICAgMTY4MDogNDEgMzEgMEEgMEYgQTAgMUIgOTMg
NjEgMEQgNDQgMzYgNDEgMzIgMDAgODYgNUMgIEExLi4uLi5hLkQ2QTIuLlwKICAgIDE2OTA6IDJG
IDAzIDVGIDUzIDQyIDVGIDUzIDMxIDQ0IDMyIDQ0IDM2IDQxIDMyIDBBIDBGICAvLl9TQl9TMUQy
RDZBMi4uCiAgICAxNkEwOiBBMCAxQiA5MyA2MSAwRCA0NCAzNiA0MSAzMyAwMCA4NiA1QyAyRiAw
MyA1RiA1MyAgLi4uYS5ENkEzLi5cLy5fUwogICAgMTZCMDogNDIgNUYgNTMgMzEgNDQgMzIgNDQg
MzYgNDEgMzMgMEEgMEYgQTAgMUIgOTMgNjEgIEJfUzFEMkQ2QTMuLi4uLmEKICAgIDE2QzA6IDBE
IDQ0IDM2IDQxIDM0IDAwIDg2IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUzIDMxICAuRDZBNC4uXC8u
X1NCX1MxCiAgICAxNkQwOiA0NCAzMiA0NCAzNiA0MSAzNCAwQSAwRiBBMCAxQiA5MyA2MSAwRCA0
NCAzNiA0MSAgRDJENkE0Li4uLi5hLkQ2QQogICAgMTZFMDogMzUgMDAgODYgNUMgMkYgMDMgNUYg
NTMgNDIgNUYgNTMgMzEgNDQgMzIgNDQgMzYgIDUuLlwvLl9TQl9TMUQyRDYKICAgIDE2RjA6IDQx
IDM1IDBBIDBGIEEwIDFCIDkzIDYxIDBEIDQ0IDM2IDQxIDM2IDAwIDg2IDVDICBBNS4uLi4uYS5E
NkE2Li5cCiAgICAxNzAwOiAyRiAwMyA1RiA1MyA0MiA1RiA1MyAzMSA0NCAzMiA0NCAzNiA0MSAz
NiAwQSAwRiAgLy5fU0JfUzFEMkQ2QTYuLgogICAgMTcxMDogQTAgMUIgOTMgNjEgMEQgNDQgMzYg
NDEgMzcgMDAgODYgNUMgMkYgMDMgNUYgNTMgIC4uLmEuRDZBNy4uXC8uX1MKICAgIDE3MjA6IDQy
IDVGIDUzIDMxIDQ0IDMyIDQ0IDM2IDQxIDM3IDBBIDBGIEEwIDFCIDkzIDYxICBCX1MxRDJENkE3
Li4uLi5hCiAgICAxNzMwOiAwRCA0NCAzNiA0MSAzOCAwMCA4NiA1QyAyRiAwMyA1RiA1MyA0MiA1
RiA1MyAzMSAgLkQ2QTguLlwvLl9TQl9TMQogICAgMTc0MDogNDQgMzIgNDQgMzYgNDEgMzggMEEg
MEYgQTAgMUIgOTMgNjEgMEQgNDQgMzYgNDIgIEQyRDZBOC4uLi4uYS5ENkIKICAgIDE3NTA6IDMw
IDAwIDg2IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUzIDMxIDQ0IDMyIDQ0IDM2ICAwLi5cLy5fU0Jf
UzFEMkQ2CiAgICAxNzYwOiA0MiAzMCAwQSAwRiBBMCAxQiA5MyA2MSAwRCA0NCAzNiA0MiAzMSAw
MCA4NiA1QyAgQjAuLi4uLmEuRDZCMS4uXAogICAgMTc3MDogMkYgMDMgNUYgNTMgNDIgNUYgNTMg
MzEgNDQgMzIgNDQgMzYgNDIgMzEgMEEgMEYgIC8uX1NCX1MxRDJENkIxLi4KICAgIDE3ODA6IEEw
IDFCIDkzIDYxIDBEIDQ0IDM2IDQyIDMyIDAwIDg2IDVDIDJGIDAzIDVGIDUzICAuLi5hLkQ2QjIu
LlwvLl9TCiAgICAxNzkwOiA0MiA1RiA1MyAzMSA0NCAzMiA0NCAzNiA0MiAzMiAwQSAwRiBBMCAx
QiA5MyA2MSAgQl9TMUQyRDZCMi4uLi4uYQogICAgMTdBMDogMEQgNDQgMzYgNDIgMzMgMDAgODYg
NUMgMkYgMDMgNUYgNTMgNDIgNUYgNTMgMzEgIC5ENkIzLi5cLy5fU0JfUzEKICAgIDE3QjA6IDQ0
IDMyIDQ0IDM2IDQyIDMzIDBBIDBGIEEwIDFCIDkzIDYxIDBEIDQ0IDM2IDQyICBEMkQ2QjMuLi4u
LmEuRDZCCiAgICAxN0MwOiAzNCAwMCA4NiA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MyAzMSA0NCAz
MiA0NCAzNiAgNC4uXC8uX1NCX1MxRDJENgogICAgMTdEMDogNDIgMzQgMEEgMEYgQTAgMUIgOTMg
NjEgMEQgNDQgMzYgNDIgMzUgMDAgODYgNUMgIEI0Li4uLi5hLkQ2QjUuLlwKICAgIDE3RTA6IDJG
IDAzIDVGIDUzIDQyIDVGIDUzIDMxIDQ0IDMyIDQ0IDM2IDQyIDM1IDBBIDBGICAvLl9TQl9TMUQy
RDZCNS4uCiAgICAxN0YwOiBBMCAxQiA5MyA2MSAwRCA0NCAzNiA0MiAzNiAwMCA4NiA1QyAyRiAw
MyA1RiA1MyAgLi4uYS5ENkI2Li5cLy5fUwogICAgMTgwMDogNDIgNUYgNTMgMzEgNDQgMzIgNDQg
MzYgNDIgMzYgMEEgMEYgQTAgMUIgOTMgNjEgIEJfUzFEMkQ2QjYuLi4uLmEKICAgIDE4MTA6IDBE
IDQ0IDM2IDQyIDM3IDAwIDg2IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUzIDMxICAuRDZCNy4uXC8u
X1NCX1MxCiAgICAxODIwOiA0NCAzMiA0NCAzNiA0MiAzNyAwQSAwRiBBMCAxQiA5MyA2MSAwRCA0
NCAzNiA0MiAgRDJENkI3Li4uLi5hLkQ2QgogICAgMTgzMDogMzggMDAgODYgNUMgMkYgMDMgNUYg
NTMgNDIgNUYgNTMgMzEgNDQgMzIgNDQgMzYgIDguLlwvLl9TQl9TMUQyRDYKICAgIDE4NDA6IDQy
IDM4IDBBIDBGIEEwIDFCIDkzIDYxIDBEIDQ0IDM3IDQxIDMwIDAwIDg2IDVDICBCOC4uLi4uYS5E
N0EwLi5cCiAgICAxODUwOiAyRiAwMyA1RiA1MyA0MiA1RiA1MyAzMSA0NCAzMyA0NCAzNyA0MSAz
MCAwQSAwRiAgLy5fU0JfUzFEM0Q3QTAuLgogICAgMTg2MDogQTAgMUIgOTMgNjEgMEQgNDQgMzcg
NDEgMzEgMDAgODYgNUMgMkYgMDMgNUYgNTMgIC4uLmEuRDdBMS4uXC8uX1MKICAgIDE4NzA6IDQy
IDVGIDUzIDMxIDQ0IDMzIDQ0IDM3IDQxIDMxIDBBIDBGIEEwIDFCIDkzIDYxICBCX1MxRDNEN0Ex
Li4uLi5hCiAgICAxODgwOiAwRCA0NCAzNyA0MSAzMiAwMCA4NiA1QyAyRiAwMyA1RiA1MyA0MiA1
RiA1MyAzMSAgLkQ3QTIuLlwvLl9TQl9TMQogICAgMTg5MDogNDQgMzMgNDQgMzcgNDEgMzIgMEEg
MEYgQTAgMUIgOTMgNjEgMEQgNDQgMzcgNDEgIEQzRDdBMi4uLi4uYS5EN0EKICAgIDE4QTA6IDMz
IDAwIDg2IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUzIDMxIDQ0IDMzIDQ0IDM3ICAzLi5cLy5fU0Jf
UzFEM0Q3CiAgICAxOEIwOiA0MSAzMyAwQSAwRiBBMCAxQiA5MyA2MSAwRCA0NCAzNyA0MSAzNCAw
MCA4NiA1QyAgQTMuLi4uLmEuRDdBNC4uXAogICAgMThDMDogMkYgMDMgNUYgNTMgNDIgNUYgNTMg
MzEgNDQgMzMgNDQgMzcgNDEgMzQgMEEgMEYgIC8uX1NCX1MxRDNEN0E0Li4KICAgIDE4RDA6IEEw
IDFCIDkzIDYxIDBEIDQ0IDM3IDQxIDM1IDAwIDg2IDVDIDJGIDAzIDVGIDUzICAuLi5hLkQ3QTUu
LlwvLl9TCiAgICAxOEUwOiA0MiA1RiA1MyAzMSA0NCAzMyA0NCAzNyA0MSAzNSAwQSAwRiBBMCAx
QiA5MyA2MSAgQl9TMUQzRDdBNS4uLi4uYQogICAgMThGMDogMEQgNDQgMzcgNDEgMzYgMDAgODYg
NUMgMkYgMDMgNUYgNTMgNDIgNUYgNTMgMzEgIC5EN0E2Li5cLy5fU0JfUzEKICAgIDE5MDA6IDQ0
IDMzIDQ0IDM3IDQxIDM2IDBBIDBGIEEwIDFCIDkzIDYxIDBEIDQ0IDM3IDQxICBEM0Q3QTYuLi4u
LmEuRDdBCiAgICAxOTEwOiAzNyAwMCA4NiA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MyAzMSA0NCAz
MyA0NCAzNyAgNy4uXC8uX1NCX1MxRDNENwogICAgMTkyMDogNDEgMzcgMEEgMEYgQTAgMUIgOTMg
NjEgMEQgNDQgMzcgNDEgMzggMDAgODYgNUMgIEE3Li4uLi5hLkQ3QTguLlwKICAgIDE5MzA6IDJG
IDAzIDVGIDUzIDQyIDVGIDUzIDMxIDQ0IDMzIDQ0IDM3IDQxIDM4IDBBIDBGICAvLl9TQl9TMUQz
RDdBOC4uCiAgICAxOTQwOiBBMCAxQiA5MyA2MSAwRCA0NCAzNyA0MiAzMCAwMCA4NiA1QyAyRiAw
MyA1RiA1MyAgLi4uYS5EN0IwLi5cLy5fUwogICAgMTk1MDogNDIgNUYgNTMgMzEgNDQgMzMgNDQg
MzcgNDIgMzAgMEEgMEYgQTAgMUIgOTMgNjEgIEJfUzFEM0Q3QjAuLi4uLmEKICAgIDE5NjA6IDBE
IDQ0IDM3IDQyIDMxIDAwIDg2IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUzIDMxICAuRDdCMS4uXC8u
X1NCX1MxCiAgICAxOTcwOiA0NCAzMyA0NCAzNyA0MiAzMSAwQSAwRiBBMCAxQiA5MyA2MSAwRCA0
NCAzNyA0MiAgRDNEN0IxLi4uLi5hLkQ3QgogICAgMTk4MDogMzIgMDAgODYgNUMgMkYgMDMgNUYg
NTMgNDIgNUYgNTMgMzEgNDQgMzMgNDQgMzcgIDIuLlwvLl9TQl9TMUQzRDcKICAgIDE5OTA6IDQy
IDMyIDBBIDBGIEEwIDFCIDkzIDYxIDBEIDQ0IDM3IDQyIDMzIDAwIDg2IDVDICBCMi4uLi4uYS5E
N0IzLi5cCiAgICAxOUEwOiAyRiAwMyA1RiA1MyA0MiA1RiA1MyAzMSA0NCAzMyA0NCAzNyA0MiAz
MyAwQSAwRiAgLy5fU0JfUzFEM0Q3QjMuLgogICAgMTlCMDogQTAgMUIgOTMgNjEgMEQgNDQgMzcg
NDIgMzQgMDAgODYgNUMgMkYgMDMgNUYgNTMgIC4uLmEuRDdCNC4uXC8uX1MKICAgIDE5QzA6IDQy
IDVGIDUzIDMxIDQ0IDMzIDQ0IDM3IDQyIDM0IDBBIDBGIEEwIDFCIDkzIDYxICBCX1MxRDNEN0I0
Li4uLi5hCiAgICAxOUQwOiAwRCA0NCAzNyA0MiAzNSAwMCA4NiA1QyAyRiAwMyA1RiA1MyA0MiA1
RiA1MyAzMSAgLkQ3QjUuLlwvLl9TQl9TMQogICAgMTlFMDogNDQgMzMgNDQgMzcgNDIgMzUgMEEg
MEYgQTAgMUIgOTMgNjEgMEQgNDQgMzcgNDIgIEQzRDdCNS4uLi4uYS5EN0IKICAgIDE5RjA6IDM2
IDAwIDg2IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUzIDMxIDQ0IDMzIDQ0IDM3ICA2Li5cLy5fU0Jf
UzFEM0Q3CiAgICAxQTAwOiA0MiAzNiAwQSAwRiBBMCAxQiA5MyA2MSAwRCA0NCAzNyA0MiAzNyAw
MCA4NiA1QyAgQjYuLi4uLmEuRDdCNy4uXAogICAgMUExMDogMkYgMDMgNUYgNTMgNDIgNUYgNTMg
MzEgNDQgMzMgNDQgMzcgNDIgMzcgMEEgMEYgIC8uX1NCX1MxRDNEN0I3Li4KICAgIDFBMjA6IEEw
IDFCIDkzIDYxIDBEIDQ0IDM3IDQyIDM4IDAwIDg2IDVDIDJGIDAzIDVGIDUzICAuLi5hLkQ3Qjgu
LlwvLl9TCiAgICAxQTMwOiA0MiA1RiA1MyAzMSA0NCAzMyA0NCAzNyA0MiAzOCAwQSAwRiA3MCAw
MCA0NCA1MiAgQl9TMUQzRDdCOC4ucC5EUgogICAgMUE0MDogNTAgNEUgMTAgMjcgNUMgNUYgNTMg
NDIgNUYgNUIgODIgMUYgNDEgNDUgNTIgNTIgIFBOLidcX1NCX1suLkFFUlIKICAgIDFBNTA6IDA4
IDVGIDQ4IDQ5IDQ0IDBDIDQxIEQwIDBDIDMzIDA4IDVGIDU1IDQ5IDQ0IDAwICAuX0hJRC5BLi4z
Ll9VSUQuCiAgICAxQTYwOiAxNCAwOSA1RiA1MyA1NCA0MSAwMCBBNCAwQSAwRiA1QiA4MCA1MiA0
MSA1MyA0NCAgLi5fU1RBLi4uLlsuUkFTRAogICAgMUE3MDogMDAgMEMgMDAgNzAgMkQgQTggMEEg
MTAgNUIgODEgMUEgNTIgNDEgNTMgNDQgMDEgIC4uLnAtLi4uWy4uUkFTRC4KICAgIDFBODA6IDUw
IDUzIDQ5IDQ3IDIwIDUwIDU3IDRGIDQzIDIwIDUwIDRGIDUzIDUzIDIwIDUwICBQU0lHIFBXT0Mg
UE9TUyBQCiAgICAxQTkwOiA0RiA1MyA0MyAyMCA1QiA4MCA0RiA1MyA0OCA1MCAwMCAwQyAwMCA2
MCAyRCBBOCAgT1NDIFsuT1NIUC4uLmAtLgogICAgMUFBMDogMEEgMDIgNUIgODEgMTAgNEYgNTMg
NDggNTAgMDEgNDggNTAgNDggNEQgMDggNDEgIC4uWy4uT1NIUC5IUEhNLkEKICAgIDFBQjA6IDQ1
IDUyIDREIDA4IDVCIDgwIDUzIDREIDQyIDUzIDAwIDBDIDAwIDAwIEQ4IEZFICBFUk0uWy5TTUJT
Li4uLi4uCiAgICAxQUMwOiAwQyAwMCAwMCA4MCAwMCA1QiA4MSAwRiA1MyA0RCA0MiA1MyAwMSAw
MCA4MCBCNSAgLi4uLi5bLi5TTUJTLi4uLgogICAgMUFEMDogMDEgNTMgNEQgNDkgNTAgMDggNUIg
ODAgNTMgNTcgNTMgNEQgMDEgNTMgNEQgNDkgIC5TTUlQLlsuU1dTTS5TTUkKICAgIDFBRTA6IDUw
IDBBIDAyIDVCIDgxIDBCIDUzIDU3IDUzIDREIDAwIDUzIDREIDQ5IDUyIDEwICBQLi5bLi5TV1NN
LlNNSVIuCiAgICAxQUYwOiA1QiA4MCA0NSA0NCA1MyA0RCAwMCAwQyAwMCA1MCAyRCBBOCAwQSAw
RSA1QiA4MSAgWy5FRFNNLi4uUC0uLi5bLgogICAgMUIwMDogMjkgNDUgNDQgNTMgNEQgMDEgNDQg
NTMgNEQgNDkgMDggNDQgNTIgNTAgNDIgMDggIClFRFNNLkRTTUkuRFJQQi4KICAgIDFCMTA6IDQ0
IDUyIDUwIDQxIDIwIDQ0IDQ5IDQ0IDU4IDA4IDQ0IDQ2IDQ5IDRFIDA4IDQ0ICBEUlBBIERJRFgu
REZJTi5ECiAgICAxQjIwOiA0RiA1NSA1NCAxMCA0NCA1MiA1MCA0RSAyMCA1QiA4MCA0NSA0RiA1
MyA1NCAwMCAgT1VULkRSUE4gWy5FT1NULgogICAgMUIzMDogMEMgMDAgNDAgMkQgQTggMEEgMEEg
NUIgODEgMUEgNDUgNEYgNTMgNTQgMDEgNEYgIC4uQC0uLi5bLi5FT1NULk8KICAgIDFCNDA6IDUz
IDREIDQ5IDA4IDRGIDUyIDUwIDQyIDA4IDRGIDUyIDUwIDQxIDIwIDRGIDQxICBTTUkuT1JQQi5P
UlBBIE9BCiAgICAxQjUwOiA0NyAzMSAyMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRzEgCgpNQ0ZHIEAgMHgwMDAwMDAwMDAwMDAwMDAwCiAgICAwMDAwOiA0RCA0MyA0
NiA0NyAzQyAwMCAwMCAwMCAwMSAyRSA0MSA0RCA0NCAwMCA0MSAyMCAgTUNGRzwuLi4uLkFNRC5B
IAogICAgMDAxMDogNDEgMjAgNEQgMjAgNDkgMDAgMDAgMDAgMDEgMDAgMDAgMDAgNEQgNTMgNDYg
NTQgIEEgTSBJLi4uLi4uLk1TRlQKICAgIDAwMjA6IDEzIDAwIDAxIDAwIDAwIDAwIDAwIDAwIDAw
IDAwIDAwIDAwIDAwIDAwIDAwIEUwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwMDMwOiAwMCAwMCAw
MCAwMCAwMCAwMCAwMCBGRiAwMCAwMCAwMCAwMCAgICAgICAgICAgICAgLi4uLi4uLi4uLi4uCgpB
UElDIEAgMHgwMDAwMDAwMDAwMDAwMDAwCiAgICAwMDAwOiA0MSA1MCA0OSA0MyA3QyAwMyAwMCAw
MCAwNCAzRiA0MSA0RCA0NCAyMCAyMCAyMCAgQVBJQ3wuLi4uP0FNRCAgIAogICAgMDAxMDogNDEg
MjAgNEQgMjAgNDkgMjAgMDAgMDAgMDEgMDAgMDAgMDAgNDEgNEQgNDkgMjAgIEEgTSBJIC4uLi4u
LkFNSSAKICAgIDAwMjA6IDEzIDAwIDAxIDAwIDAwIDAwIEUwIEZFIDAwIDAwIDAwIDAwIDAxIDBD
IDgwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwMDMwOiAwMCAwMCBDMCBGRSAwMCAwMCAwMCAw
MCAwMSAwQyA4MSAwMCAwMCAwMCAxOCBERiAgLi4uLi4uLi4uLi4uLi4uLgogICAgMDA0MDogNzgg
MDAgMDAgMDAgMDEgMEMgODIgMDAgMDAgMDAgMTggRDMgNTggMDAgMDAgMDAgIHguLi4uLi4uLi4u
LlguLi4KICAgIDAwNTA6IDAxIDBDIDgzIDAwIDAwIDAwIDE4IEY3IDE4IDAwIDAwIDAwIDAxIDBD
IDg0IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwMDYwOiAwMCAwMCAxOCBDOSAzOCAwMCAwMCAw
MCAwOSAxMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLjguLi4uLi4uLi4uLgogICAgMDA3MDogMDEg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDkgMTAgMDAgMDAgMDIgMDAgMDAgMDAgIC4uLi4uLi4uLi4u
Li4uLi4KICAgIDAwODA6IDAxIDAwIDAwIDAwIDAxIDAwIDAwIDAwIDA5IDEwIDAwIDAwIDA0IDAw
IDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwMDkwOiAwMSAwMCAwMCAwMCAwMiAwMCAwMCAw
MCAwOSAxMCAwMCAwMCAwNiAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMDBBMDogMDEg
MDAgMDAgMDAgMDMgMDAgMDAgMDAgMDkgMTAgMDAgMDAgMDggMDAgMDAgMDAgIC4uLi4uLi4uLi4u
Li4uLi4KICAgIDAwQjA6IDAxIDAwIDAwIDAwIDA0IDAwIDAwIDAwIDA5IDEwIDAwIDAwIDBBIDAw
IDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwMEMwOiAwMSAwMCAwMCAwMCAwNSAwMCAwMCAw
MCAwOSAxMCAwMCAwMCAwQyAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMDBEMDogMDEg
MDAgMDAgMDAgMDYgMDAgMDAgMDAgMDkgMTAgMDAgMDAgMEUgMDAgMDAgMDAgIC4uLi4uLi4uLi4u
Li4uLi4KICAgIDAwRTA6IDAxIDAwIDAwIDAwIDA3IDAwIDAwIDAwIDA5IDEwIDAwIDAwIDEwIDAw
IDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwMEYwOiAwMSAwMCAwMCAwMCAwOCAwMCAwMCAw
MCAwOSAxMCAwMCAwMCAxMiAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMDEwMDogMDEg
MDAgMDAgMDAgMDkgMDAgMDAgMDAgMDkgMTAgMDAgMDAgMTQgMDAgMDAgMDAgIC4uLi4uLi4uLi4u
Li4uLi4KICAgIDAxMTA6IDAxIDAwIDAwIDAwIDBBIDAwIDAwIDAwIDA5IDEwIDAwIDAwIDE2IDAw
IDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwMTIwOiAwMSAwMCAwMCAwMCAwQiAwMCAwMCAw
MCAwOSAxMCAwMCAwMCAxOCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMDEzMDogMDEg
MDAgMDAgMDAgMEMgMDAgMDAgMDAgMDkgMTAgMDAgMDAgMUEgMDAgMDAgMDAgIC4uLi4uLi4uLi4u
Li4uLi4KICAgIDAxNDA6IDAxIDAwIDAwIDAwIDBEIDAwIDAwIDAwIDA5IDEwIDAwIDAwIDFDIDAw
IDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwMTUwOiAwMSAwMCAwMCAwMCAwRSAwMCAwMCAw
MCAwOSAxMCAwMCAwMCAxRSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMDE2MDogMDEg
MDAgMDAgMDAgMEYgMDAgMDAgMDAgMDkgMTAgMDAgMDAgMjAgMDAgMDAgMDAgIC4uLi4uLi4uLi4u
LiAuLi4KICAgIDAxNzA6IDAxIDAwIDAwIDAwIDEwIDAwIDAwIDAwIDA5IDEwIDAwIDAwIDIyIDAw
IDAwIDAwICAuLi4uLi4uLi4uLi4iLi4uCiAgICAwMTgwOiAwMSAwMCAwMCAwMCAxMSAwMCAwMCAw
MCAwOSAxMCAwMCAwMCAyNCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uJC4uLgogICAgMDE5MDogMDEg
MDAgMDAgMDAgMTIgMDAgMDAgMDAgMDkgMTAgMDAgMDAgMjYgMDAgMDAgMDAgIC4uLi4uLi4uLi4u
LiYuLi4KICAgIDAxQTA6IDAxIDAwIDAwIDAwIDEzIDAwIDAwIDAwIDA5IDEwIDAwIDAwIDI4IDAw
IDAwIDAwICAuLi4uLi4uLi4uLi4oLi4uCiAgICAwMUIwOiAwMSAwMCAwMCAwMCAxNCAwMCAwMCAw
MCAwOSAxMCAwMCAwMCAyQSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uKi4uLgogICAgMDFDMDogMDEg
MDAgMDAgMDAgMTUgMDAgMDAgMDAgMDkgMTAgMDAgMDAgMkMgMDAgMDAgMDAgIC4uLi4uLi4uLi4u
LiwuLi4KICAgIDAxRDA6IDAxIDAwIDAwIDAwIDE2IDAwIDAwIDAwIDA5IDEwIDAwIDAwIDJFIDAw
IDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwMUUwOiAwMSAwMCAwMCAwMCAxNyAwMCAwMCAw
MCAwOSAxMCAwMCAwMCAzMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uMC4uLgogICAgMDFGMDogMDEg
MDAgMDAgMDAgMTggMDAgMDAgMDAgMDkgMTAgMDAgMDAgMzIgMDAgMDAgMDAgIC4uLi4uLi4uLi4u
LjIuLi4KICAgIDAyMDA6IDAxIDAwIDAwIDAwIDE5IDAwIDAwIDAwIDA5IDEwIDAwIDAwIDM0IDAw
IDAwIDAwICAuLi4uLi4uLi4uLi40Li4uCiAgICAwMjEwOiAwMSAwMCAwMCAwMCAxQSAwMCAwMCAw
MCAwOSAxMCAwMCAwMCAzNiAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uNi4uLgogICAgMDIyMDogMDEg
MDAgMDAgMDAgMUIgMDAgMDAgMDAgMDkgMTAgMDAgMDAgMzggMDAgMDAgMDAgIC4uLi4uLi4uLi4u
LjguLi4KICAgIDAyMzA6IDAxIDAwIDAwIDAwIDFDIDAwIDAwIDAwIDA5IDEwIDAwIDAwIDNBIDAw
IDAwIDAwICAuLi4uLi4uLi4uLi46Li4uCiAgICAwMjQwOiAwMSAwMCAwMCAwMCAxRCAwMCAwMCAw
MCAwOSAxMCAwMCAwMCAzQyAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uPC4uLgogICAgMDI1MDogMDEg
MDAgMDAgMDAgMUUgMDAgMDAgMDAgMDkgMTAgMDAgMDAgM0UgMDAgMDAgMDAgIC4uLi4uLi4uLi4u
Lj4uLi4KICAgIDAyNjA6IDAxIDAwIDAwIDAwIDFGIDAwIDAwIDAwIDA5IDEwIDAwIDAwIDQwIDAw
IDAwIDAwICAuLi4uLi4uLi4uLi5ALi4uCiAgICAwMjcwOiAwMSAwMCAwMCAwMCAyMCAwMCAwMCAw
MCAwOSAxMCAwMCAwMCA0MiAwMCAwMCAwMCAgLi4uLiAuLi4uLi4uQi4uLgogICAgMDI4MDogMDEg
MDAgMDAgMDAgMjEgMDAgMDAgMDAgMDkgMTAgMDAgMDAgNDQgMDAgMDAgMDAgIC4uLi4hLi4uLi4u
LkQuLi4KICAgIDAyOTA6IDAxIDAwIDAwIDAwIDIyIDAwIDAwIDAwIDA5IDEwIDAwIDAwIDQ2IDAw
IDAwIDAwICAuLi4uIi4uLi4uLi5GLi4uCiAgICAwMkEwOiAwMSAwMCAwMCAwMCAyMyAwMCAwMCAw
MCAwOSAxMCAwMCAwMCA0OCAwMCAwMCAwMCAgLi4uLiMuLi4uLi4uSC4uLgogICAgMDJCMDogMDEg
MDAgMDAgMDAgMjQgMDAgMDAgMDAgMDkgMTAgMDAgMDAgNEEgMDAgMDAgMDAgIC4uLi4kLi4uLi4u
LkouLi4KICAgIDAyQzA6IDAxIDAwIDAwIDAwIDI1IDAwIDAwIDAwIDA5IDEwIDAwIDAwIDRDIDAw
IDAwIDAwICAuLi4uJS4uLi4uLi5MLi4uCiAgICAwMkQwOiAwMSAwMCAwMCAwMCAyNiAwMCAwMCAw
MCAwOSAxMCAwMCAwMCA0RSAwMCAwMCAwMCAgLi4uLiYuLi4uLi4uTi4uLgogICAgMDJFMDogMDEg
MDAgMDAgMDAgMjcgMDAgMDAgMDAgMDkgMTAgMDAgMDAgNTAgMDAgMDAgMDAgIC4uLi4nLi4uLi4u
LlAuLi4KICAgIDAyRjA6IDAxIDAwIDAwIDAwIDI4IDAwIDAwIDAwIDA5IDEwIDAwIDAwIDUyIDAw
IDAwIDAwICAuLi4uKC4uLi4uLi5SLi4uCiAgICAwMzAwOiAwMSAwMCAwMCAwMCAyOSAwMCAwMCAw
MCAwOSAxMCAwMCAwMCA1NCAwMCAwMCAwMCAgLi4uLikuLi4uLi4uVC4uLgogICAgMDMxMDogMDEg
MDAgMDAgMDAgMkEgMDAgMDAgMDAgMDkgMTAgMDAgMDAgNTYgMDAgMDAgMDAgIC4uLi4qLi4uLi4u
LlYuLi4KICAgIDAzMjA6IDAxIDAwIDAwIDAwIDJCIDAwIDAwIDAwIDA5IDEwIDAwIDAwIDU4IDAw
IDAwIDAwICAuLi4uKy4uLi4uLi5YLi4uCiAgICAwMzMwOiAwMSAwMCAwMCAwMCAyQyAwMCAwMCAw
MCAwOSAxMCAwMCAwMCA1QSAwMCAwMCAwMCAgLi4uLiwuLi4uLi4uWi4uLgogICAgMDM0MDogMDEg
MDAgMDAgMDAgMkQgMDAgMDAgMDAgMDkgMTAgMDAgMDAgNUMgMDAgMDAgMDAgIC4uLi4tLi4uLi4u
LlwuLi4KICAgIDAzNTA6IDAxIDAwIDAwIDAwIDJFIDAwIDAwIDAwIDA5IDEwIDAwIDAwIDVFIDAw
IDAwIDAwICAuLi4uLi4uLi4uLi5eLi4uCiAgICAwMzYwOiAwMSAwMCAwMCAwMCAyRiAwMCAwMCAw
MCAwMiAwQSAwMCAwMCAwMiAwMCAwMCAwMCAgLi4uLi8uLi4uLi4uLi4uLgogICAgMDM3MDogMDAg
MDAgMDIgMEEgMDAgMDkgMDkgMDAgMDAgMDAgMEYgMDAgICAgICAgICAgICAgIC4uLi4uLi4uLi4u
LgoKU1NEVCBAIDB4MDAwMDAwMDAwMDAwMDAwMAogICAgMDAwMDogNTMgNTMgNDQgNTQgNjcgMDAg
MDAgMDAgMDIgRkUgNDEgNEQgNDQgMDAgMDAgMDAgIFNTRFRnLi4uLi5BTUQuLi4KICAgIDAwMTA6
IDQzIDUwIDREIDQ0IDUzIDREIDAwIDAwIDAxIDAwIDAwIDAwIDQ5IDRFIDU0IDRDICBDUE1EU00u
Li4uLi5JTlRMCiAgICAwMDIwOiAzMSAwMyAyMyAyMCA1QiA4MCA0MyA0NCA0OSA0NCAwMCAwQyAw
MCBCMCA0NSBBOSAgMS4jIFsuQ0RJRC4uLi5FLgogICAgMDAzMDogMEEgNDAgNUIgODEgMTQgNDMg
NDQgNDkgNDQgMDEgNEQgNDEgNTMgNTQgNDAgMDQgIC5AWy4uQ0RJRC5NQVNUQC4KICAgIDAwNDA6
IDQzIDQ2IDRDIDQ3IDA4IDAwIDQ4IDFCIDVCIDgwIDQzIDQ0IDUzIDU0IDAwIDREICBDRkxHLi5I
LlsuQ0RTVC5NCiAgICAwMDUwOiA0MSA1MyA1NCAwQiAwMCAyMCA1QiA4MSAwRiA0MyA0NCA1MyA1
NCAwMSAwMCAwMCAgQVNULi4gWy4uQ0RTVC4uLgogICAgMDA2MDogNDMgNTQgNDEgNDcgODAgMDAg
MEMgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENUQUcuLi4KClNTRFQgQCAweDAwMDAwMDAw
MDAwMDAwMDAKICAgIDAwMDA6IDUzIDUzIDQ0IDU0IDRFIDA0IDAwIDAwIDAyIERGIDQxIDREIDQ0
IDAwIDQxIDZEICBTU0RUTi4uLi4uQU1ELkFtCiAgICAwMDEwOiA0MSA2RCA2NCA1NCA2MSA2MiA2
QyA2NSAwMSAwMCAwMCAwMCA0OSA0RSA1NCA0QyAgQW1kVGFibGUuLi4uSU5UTAogICAgMDAyMDog
MzEgMDMgMjMgMjAgMTAgNDkgNDIgNUMgNUYgNTMgNDIgNUYgMDggNTQgNDcgNTAgIDEuIyAuSUJc
X1NCXy5UR1AKICAgIDAwMzA6IDQ5IDBBIDBGIDVCIDgyIDQ3IDA1IDUwIDU0IDQ5IDRGIDA4IDVG
IDQ4IDQ5IDQ0ICBJLi5bLkcuUFRJTy5fSElECiAgICAwMDQwOiAwRCA0MSA0RCA0NCA0OSA0NiAz
MCAzMyAzMSAwMCAwOCA1RiA0MyA0OSA0NCAwRCAgLkFNRElGMDMxLi5fQ0lELgogICAgMDA1MDog
NDEgNEQgNDQgNDkgNDYgMzAgMzMgMzEgMDAgMDggNUYgNTUgNDkgNDQgMDAgMTQgIEFNRElGMDMx
Li5fVUlELi4KICAgIDAwNjA6IDIyIDVGIDQzIDUyIDUzIDAwIDA4IDUyIDQyIDU1IDQ2IDExIDEx
IDBBIDBFIDg2ICAiX0NSUy4uUkJVRi4uLi4uCiAgICAwMDcwOiAwOSAwMCAwMSAwMCAwMCBDNCBG
RSAwMCAxMCAwMCAwMCA3OSAwMCBBNCA1MiA0MiAgLi4uLi4uLi4uLi55Li5SQgogICAgMDA4MDog
NTUgNDYgMTQgMDkgNUYgNTMgNTQgNDEgMDAgQTQgMEEgMEYgNUIgODIgNDAgM0MgIFVGLi5fU1RB
Li4uLlsuQDwKICAgIDAwOTA6IDQxIDUzIDREIDU0IDA4IDVGIDQxIDQ0IDUyIDAwIDA4IDVGIDQ4
IDQ5IDQ0IDBEICBBU01ULl9BRFIuLl9ISUQuCiAgICAwMEEwOiA0MSA1MyA0RCA1NCAzMCAzMCAz
MCAzMSAwMCAwOCA1RiA0MyA0OSA0NCAwRCA0MSAgQVNNVDAwMDEuLl9DSUQuQQogICAgMDBCMDog
NTMgNEQgNTQgMzAgMzAgMzAgMzEgMDAgMDggNUYgNTUgNDkgNDQgMDAgMTQgNDkgIFNNVDAwMDEu
Ll9VSUQuLkkKICAgIDAwQzA6IDM3IDVGIDQzIDUyIDUzIDAwIDA4IDUyIDQyIDU1IDQ2IDExIDQ3
IDM2IDBCIDYyICA3X0NSUy4uUkJVRi5HNi5iCiAgICAwMEQwOiAwMyA4QyAyMSAwMCAwMSAwMSAw
MSAwMCAwMCAwMCAwMSAwMCAwMCAwMCAwMCAxNyAgLi4hLi4uLi4uLi4uLi4uLgogICAgMDBFMDog
MDAgMDAgMTkgMDAgMjMgMDAgMDEgMDAgMDAgMDAgNUMgNUYgNTMgNDIgMkUgNTAgIC4uLi4jLi4u
Li5cX1NCLlAKICAgIDAwRjA6IDU0IDQ5IDRGIDAwIDAxIDhDIDIxIDAwIDAxIDAxIDAxIDAwIDAw
IDAwIDAxIDAwICBUSU8uLi4hLi4uLi4uLi4uCiAgICAwMTAwOiAwMCAwMCAwMCAxNyAwMCAwMCAx
OSAwMCAyMyAwMCAwMSAwMCAwMSAwMCA1QyA1RiAgLi4uLi4uLi4jLi4uLi5cXwogICAgMDExMDog
NTMgNDIgMkUgNTAgNTQgNDkgNEYgMDAgMDEgOEMgMjEgMDAgMDEgMDEgMDEgMDAgIFNCLlBUSU8u
Li4hLi4uLi4KICAgIDAxMjA6IDAwIDAwIDAxIDAwIDAwIDAwIDAwIDE3IDAwIDAwIDE5IDAwIDIz
IDAwIDAxIDAwICAuLi4uLi4uLi4uLi4jLi4uCiAgICAwMTMwOiAwMiAwMCA1QyA1RiA1MyA0MiAy
RSA1MCA1NCA0OSA0RiAwMCAwMSA4QyAyMSAwMCAgLi5cX1NCLlBUSU8uLi4hLgogICAgMDE0MDog
MDEgMDEgMDEgMDAgMDAgMDAgMDEgMDAgMDAgMDAgMDAgMTcgMDAgMDAgMTkgMDAgIC4uLi4uLi4u
Li4uLi4uLi4KICAgIDAxNTA6IDIzIDAwIDAxIDAwIDAzIDAwIDVDIDVGIDUzIDQyIDJFIDUwIDU0
IDQ5IDRGIDAwICAjLi4uLi5cX1NCLlBUSU8uCiAgICAwMTYwOiAwMSA4QyAyMSAwMCAwMSAwMSAw
MSAwMCAwMCAwMCAwMSAwMCAwMCAwMCAwMCAxNyAgLi4hLi4uLi4uLi4uLi4uLgogICAgMDE3MDog
MDAgMDAgMTkgMDAgMjMgMDAgMDEgMDAgMDQgMDAgNUMgNUYgNTMgNDIgMkUgNTAgIC4uLi4jLi4u
Li5cX1NCLlAKICAgIDAxODA6IDU0IDQ5IDRGIDAwIDAxIDhDIDIxIDAwIDAxIDAxIDAxIDAwIDAw
IDAwIDAxIDAwICBUSU8uLi4hLi4uLi4uLi4uCiAgICAwMTkwOiAwMCAwMCAwMCAxNyAwMCAwMCAx
OSAwMCAyMyAwMCAwMSAwMCAwNSAwMCA1QyA1RiAgLi4uLi4uLi4jLi4uLi5cXwogICAgMDFBMDog
NTMgNDIgMkUgNTAgNTQgNDkgNEYgMDAgMDEgOEMgMjEgMDAgMDEgMDEgMDEgMDAgIFNCLlBUSU8u
Li4hLi4uLi4KICAgIDAxQjA6IDAwIDAwIDAxIDAwIDAwIDAwIDAwIDE3IDAwIDAwIDE5IDAwIDIz
IDAwIDAxIDAwICAuLi4uLi4uLi4uLi4jLi4uCiAgICAwMUMwOiAwNiAwMCA1QyA1RiA1MyA0MiAy
RSA1MCA1NCA0OSA0RiAwMCAwMSA4QyAyMSAwMCAgLi5cX1NCLlBUSU8uLi4hLgogICAgMDFEMDog
MDEgMDEgMDEgMDAgMDAgMDAgMDEgMDAgMDAgMDAgMDAgMTcgMDAgMDAgMTkgMDAgIC4uLi4uLi4u
Li4uLi4uLi4KICAgIDAxRTA6IDIzIDAwIDAxIDAwIDA3IDAwIDVDIDVGIDUzIDQyIDJFIDUwIDU0
IDQ5IDRGIDAwICAjLi4uLi5cX1NCLlBUSU8uCiAgICAwMUYwOiAwMSA4QyAyMSAwMCAwMSAwMSAw
MSAwMCAwMCAwMCAwMSAwMCAwMCAwMCAwMCAxNyAgLi4hLi4uLi4uLi4uLi4uLgogICAgMDIwMDog
MDAgMDAgMTkgMDAgMjMgMDAgMDEgMDAgMDggMDAgNUMgNUYgNTMgNDIgMkUgNTAgIC4uLi4jLi4u
Li5cX1NCLlAKICAgIDAyMTA6IDU0IDQ5IDRGIDAwIDAxIDhDIDIxIDAwIDAxIDAxIDAxIDAwIDAw
IDAwIDAxIDAwICBUSU8uLi4hLi4uLi4uLi4uCiAgICAwMjIwOiAwMCAwMCAwMCAxNyAwMCAwMCAx
OSAwMCAyMyAwMCAwMSAwMCAwOSAwMCA1QyA1RiAgLi4uLi4uLi4jLi4uLi5cXwogICAgMDIzMDog
NTMgNDIgMkUgNTAgNTQgNDkgNEYgMDAgMDEgOEMgMjEgMDAgMDEgMDEgMDEgMDAgIFNCLlBUSU8u
Li4hLi4uLi4KICAgIDAyNDA6IDAwIDAwIDAxIDAwIDAwIDAwIDAwIDE3IDAwIDAwIDE5IDAwIDIz
IDAwIDAxIDAwICAuLi4uLi4uLi4uLi4jLi4uCiAgICAwMjUwOiAwQSAwMCA1QyA1RiA1MyA0MiAy
RSA1MCA1NCA0OSA0RiAwMCAwMSA4QyAyMSAwMCAgLi5cX1NCLlBUSU8uLi4hLgogICAgMDI2MDog
MDEgMDEgMDEgMDAgMDAgMDAgMDEgMDAgMDAgMDAgMDAgMTcgMDAgMDAgMTkgMDAgIC4uLi4uLi4u
Li4uLi4uLi4KICAgIDAyNzA6IDIzIDAwIDAxIDAwIDBCIDAwIDVDIDVGIDUzIDQyIDJFIDUwIDU0
IDQ5IDRGIDAwICAjLi4uLi5cX1NCLlBUSU8uCiAgICAwMjgwOiAwMSA4QyAyMSAwMCAwMSAwMSAw
MSAwMCAwMCAwMCAwMSAwMCAwMCAwMCAwMCAxNyAgLi4hLi4uLi4uLi4uLi4uLgogICAgMDI5MDog
MDAgMDAgMTkgMDAgMjMgMDAgMDEgMDAgMEMgMDAgNUMgNUYgNTMgNDIgMkUgNTAgIC4uLi4jLi4u
Li5cX1NCLlAKICAgIDAyQTA6IDU0IDQ5IDRGIDAwIDAxIDhDIDIxIDAwIDAxIDAxIDAxIDAwIDAw
IDAwIDAxIDAwICBUSU8uLi4hLi4uLi4uLi4uCiAgICAwMkIwOiAwMCAwMCAwMCAxNyAwMCAwMCAx
OSAwMCAyMyAwMCAwMSAwMCAwRCAwMCA1QyA1RiAgLi4uLi4uLi4jLi4uLi5cXwogICAgMDJDMDog
NTMgNDIgMkUgNTAgNTQgNDkgNEYgMDAgMDEgOEMgMjEgMDAgMDEgMDEgMDEgMDAgIFNCLlBUSU8u
Li4hLi4uLi4KICAgIDAyRDA6IDAwIDAwIDAxIDAwIDAwIDAwIDAwIDE3IDAwIDAwIDE5IDAwIDIz
IDAwIDAxIDAwICAuLi4uLi4uLi4uLi4jLi4uCiAgICAwMkUwOiAwRSAwMCA1QyA1RiA1MyA0MiAy
RSA1MCA1NCA0OSA0RiAwMCAwMSA4QyAyMSAwMCAgLi5cX1NCLlBUSU8uLi4hLgogICAgMDJGMDog
MDEgMDEgMDEgMDAgMDAgMDAgMDEgMDAgMDAgMDAgMDAgMTcgMDAgMDAgMTkgMDAgIC4uLi4uLi4u
Li4uLi4uLi4KICAgIDAzMDA6IDIzIDAwIDAxIDAwIDBGIDAwIDVDIDVGIDUzIDQyIDJFIDUwIDU0
IDQ5IDRGIDAwICAjLi4uLi5cX1NCLlBUSU8uCiAgICAwMzEwOiAwMSA4QyAyMSAwMCAwMSAwMSAw
MSAwMCAwMCAwMCAwMSAwMCAwMCAwMCAwMCAxNyAgLi4hLi4uLi4uLi4uLi4uLgogICAgMDMyMDog
MDAgMDAgMTkgMDAgMjMgMDAgMDEgMDAgMTAgMDAgNUMgNUYgNTMgNDIgMkUgNTAgIC4uLi4jLi4u
Li5cX1NCLlAKICAgIDAzMzA6IDU0IDQ5IDRGIDAwIDAxIDhDIDIxIDAwIDAxIDAxIDAxIDAwIDAw
IDAwIDAxIDAwICBUSU8uLi4hLi4uLi4uLi4uCiAgICAwMzQwOiAwMCAwMCAwMCAxNyAwMCAwMCAx
OSAwMCAyMyAwMCAwMSAwMCAxMSAwMCA1QyA1RiAgLi4uLi4uLi4jLi4uLi5cXwogICAgMDM1MDog
NTMgNDIgMkUgNTAgNTQgNDkgNEYgMDAgMDEgOEMgMjEgMDAgMDEgMDEgMDEgMDAgIFNCLlBUSU8u
Li4hLi4uLi4KICAgIDAzNjA6IDAwIDAwIDAxIDAwIDAwIDAwIDAwIDE3IDAwIDAwIDE5IDAwIDIz
IDAwIDAxIDAwICAuLi4uLi4uLi4uLi4jLi4uCiAgICAwMzcwOiAxMiAwMCA1QyA1RiA1MyA0MiAy
RSA1MCA1NCA0OSA0RiAwMCAwMSA4QyAyMSAwMCAgLi5cX1NCLlBUSU8uLi4hLgogICAgMDM4MDog
MDEgMDEgMDEgMDAgMDAgMDAgMDEgMDAgMDAgMDAgMDAgMTcgMDAgMDAgMTkgMDAgIC4uLi4uLi4u
Li4uLi4uLi4KICAgIDAzOTA6IDIzIDAwIDAxIDAwIDEzIDAwIDVDIDVGIDUzIDQyIDJFIDUwIDU0
IDQ5IDRGIDAwICAjLi4uLi5cX1NCLlBUSU8uCiAgICAwM0EwOiAwMSA4QyAyMSAwMCAwMSAwMSAw
MSAwMCAwMCAwMCAwMSAwMCAwMCAwMCAwMCAxNyAgLi4hLi4uLi4uLi4uLi4uLgogICAgMDNCMDog
MDAgMDAgMTkgMDAgMjMgMDAgMDEgMDAgMTQgMDAgNUMgNUYgNTMgNDIgMkUgNTAgIC4uLi4jLi4u
Li5cX1NCLlAKICAgIDAzQzA6IDU0IDQ5IDRGIDAwIDAxIDhDIDIxIDAwIDAxIDAxIDAxIDAwIDAw
IDAwIDAxIDAwICBUSU8uLi4hLi4uLi4uLi4uCiAgICAwM0QwOiAwMCAwMCAwMCAxNyAwMCAwMCAx
OSAwMCAyMyAwMCAwMSAwMCAxNSAwMCA1QyA1RiAgLi4uLi4uLi4jLi4uLi5cXwogICAgMDNFMDog
NTMgNDIgMkUgNTAgNTQgNDkgNEYgMDAgMDEgOEMgMjEgMDAgMDEgMDEgMDEgMDAgIFNCLlBUSU8u
Li4hLi4uLi4KICAgIDAzRjA6IDAwIDAwIDAxIDAwIDAwIDAwIDAwIDE3IDAwIDAwIDE5IDAwIDIz
IDAwIDAxIDAwICAuLi4uLi4uLi4uLi4jLi4uCiAgICAwNDAwOiAxNiAwMCA1QyA1RiA1MyA0MiAy
RSA1MCA1NCA0OSA0RiAwMCAwMSA4QyAyMSAwMCAgLi5cX1NCLlBUSU8uLi4hLgogICAgMDQxMDog
MDEgMDEgMDEgMDAgMDAgMDAgMDEgMDAgMDAgMDAgMDAgMTcgMDAgMDAgMTkgMDAgIC4uLi4uLi4u
Li4uLi4uLi4KICAgIDA0MjA6IDIzIDAwIDAxIDAwIDE3IDAwIDVDIDVGIDUzIDQyIDJFIDUwIDU0
IDQ5IDRGIDAwICAjLi4uLi5cX1NCLlBUSU8uCiAgICAwNDMwOiAwMSA3OSAwMCBBNCA1MiA0MiA1
NSA0NiAxNCAxNSA1RiA1MyA1NCA0MSAwMCBBMCAgLnkuLlJCVUYuLl9TVEEuLgogICAgMDQ0MDog
MEEgOTMgNTQgNDcgNTAgNDkgMDEgQTQgMEEgMEYgQTEgMDMgQTQgMDAgICAgICAgIC4uVEdQSS4u
Li4uLi4uCgpTU0RUIEAgMHgwMDAwMDAwMDAwMDAwMDAwCiAgICAwMDAwOiA1MyA1MyA0NCA1NCAw
RSBBNCAwMCAwMCAwMiBDMCA0MSA0RCA0NCAwMCAwMCAwMCAgU1NEVC4uLi4uLkFNRC4uLgogICAg
MDAxMDogNDEgNEQgNDQgMjAgNDMgNTAgNTUgMDAgMDEgMDAgMDAgMDAgNDEgNEQgNDQgMjAgIEFN
RCBDUFUuLi4uLkFNRCAKICAgIDAwMjA6IDAxIDAwIDAwIDAwIDEwIDQ3IDM1IDVDIDJGIDAzIDVG
IDUzIDQyIDVGIDUwIDRDICAuLi4uLkc1XC8uX1NCX1BMCiAgICAwMDMwOiA1NCA0NiA0MyAzMCAz
MCAzMCAwOCA1RiA1MCA0MyA1NCAxMiAyQyAwMiAxMSAxNCAgVEZDMDAwLl9QQ1QuLC4uLgogICAg
MDA0MDogMEEgMTEgODIgMEMgMDAgN0YgNDAgMDAgMDAgNjIgMDAgMDEgQzAgMDAgMDAgMDAgIC4u
Li4uLkAuLmIuLi4uLi4KICAgIDAwNTA6IDAwIDc5IDAwIDExIDE0IDBBIDExIDgyIDBDIDAwIDdG
IDQwIDAwIDAwIDYzIDAwICAueS4uLi4uLi4uLkAuLmMuCiAgICAwMDYwOiAwMSBDMCAwMCAwMCAw
MCAwMCA3OSAwMCAwOCA1RiA1MCA1MyA1MyAxMiA0NiAwNiAgLi4uLi4ueS4uX1BTUy5GLgogICAg
MDA3MDogMDMgMTIgMjAgMDYgMEMgNjggMTAgMDAgMDAgMEMgQjAgMTMgMDAgMDAgMEMgMDAgIC4u
IC4uaC4uLi4uLi4uLi4KICAgIDAwODA6IDAwIDAwIDAwIDBDIDAwIDAwIDAwIDAwIDBDIDAwIDAw
IDAwIDAwIDBDIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwMDkwOiAwMCAwMCAxMiAyMCAw
NiAwQyA5OCAwOCAwMCAwMCAwQyAwNCAwNiAwMCAwMCAwQyAgLi4uIC4uLi4uLi4uLi4uLgogICAg
MDBBMDogMDAgMDAgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMEMgMDEgMDAgMDAgMDAgMEMgMDEgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDAwQjA6IDAwIDAwIDAwIDEyIDIwIDA2IDBDIERDIDA1IDAwIDAw
IDBDIENGIDAzIDAwIDAwICAuLi4uIC4uLi4uLi4uLi4uCiAgICAwMEMwOiAwQyAwMCAwMCAwMCAw
MCAwQyAwMCAwMCAwMCAwMCAwQyAwMiAwMCAwMCAwMCAwQyAgLi4uLi4uLi4uLi4uLi4uLgogICAg
MDBEMDogMDIgMDAgMDAgMDAgMDggNTggNTAgNTMgNTMgMTIgNEIgMEQgMDMgMTIgNDcgMDQgIC4u
Li4uWFBTUy5LLi4uRy4KICAgIDAwRTA6IDA4IDBDIDY4IDEwIDAwIDAwIDBDIEIwIDEzIDAwIDAw
IDBDIDAwIDAwIDAwIDAwICAuLmguLi4uLi4uLi4uLi4uCiAgICAwMEYwOiAwQyAwMCAwMCAwMCAw
MCAxMSAwQiAwQSAwOCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
MDEwMDogMDAgMTEgMEIgMEEgMDggMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMTEgMEIgMEEgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDAxMTA6IDA4IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDExIDBC
IDBBIDA4IDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwMTIwOiAwMCAwMCAwMCAwMCAw
MCAxMiA0NyAwNCAwOCAwQyA5OCAwOCAwMCAwMCAwQyAwNCAgLi4uLi4uRy4uLi4uLi4uLgogICAg
MDEzMDogMDYgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMTEgMEIgMEEgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDAxNDA6IDA4IDAxIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDExIDBC
IDBBIDA4IDAxIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwMTUwOiAwMCAwMCAwMCAwMCAw
MCAxMSAwQiAwQSAwOCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
MDE2MDogMDAgMTEgMEIgMEEgMDggMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMTIgNDcgMDQgIC4u
Li4uLi4uLi4uLi4uRy4KICAgIDAxNzA6IDA4IDBDIERDIDA1IDAwIDAwIDBDIENGIDAzIDAwIDAw
IDBDIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwMTgwOiAwQyAwMCAwMCAwMCAw
MCAxMSAwQiAwQSAwOCAwMiAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
MDE5MDogMDAgMTEgMEIgMEEgMDggMDIgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMTEgMEIgMEEgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDAxQTA6IDA4IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDExIDBC
IDBBIDA4IDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwMUIwOiAwMCAwMCAwMCAwMCAw
MCAwOCA1RiA1MCA1MyA0NCAxMiAxOCAwMSAxMiAxNSAwNSAgLi4uLi4uX1BTRC4uLi4uLgogICAg
MDFDMDogMEEgMDUgMEEgMDAgMEMgMDAgMDAgMDAgMDAgMEMgRkUgMDAgMDAgMDAgMEMgMDIgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDAxRDA6IDAwIDAwIDAwIDA4IDUwIDUwIDQzIDU2IDBBIDAwIDE0
IDBCIDVGIDUwIDUwIDQzICAuLi4uUFBDVi4uLi5fUFBDCiAgICAwMUUwOiAwMCBBNCA1MCA1MCA0
MyA1NiAwOCA1RiA0MyA1MCA0MyAxMiA0MCAxOSAxNyAwQSAgLi5QUENWLl9DUEMuQC4uLgogICAg
MDFGMDogMTcgMEEgMDMgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgMDggMTggMDQgQjAgMDIgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDAyMDA6IDAxIEMwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0IDBB
IDExIDgyIDBDIDAwIDdGICAuLi4uLi55Li4uLi4uLi4uCiAgICAwMjEwOiAwOCAxMCAwNCBCMCAw
MiAwMSBDMCAwMCAwMCAwMCAwMCA3OSAwMCAxMSAxNCAwQSAgLi4uLi4uLi4uLi55Li4uLgogICAg
MDIyMDogMTEgODIgMEMgMDAgN0YgMDggMDggMDQgQjAgMDIgMDEgQzAgMDAgMDAgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDAyMzA6IDc5IDAwIDExIDE0IDBBIDExIDgyIDBDIDAwIDdGIDA4
IDAwIDA0IEIwIDAyIDAxICB5Li4uLi4uLi4uLi4uLi4uCiAgICAwMjQwOiBDMCAwMCAwMCAwMCAw
MCA3OSAwMCAxMSAxNCAwQSAxMSA4MiAwQyAwMCAwMCAwMCAgLi4uLi55Li4uLi4uLi4uLgogICAg
MDI1MDogMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgIC4u
Li4uLi4uLi55Li4uLi4KICAgIDAyNjA6IDgyIDBDIDAwIDdGIDA4IDEwIDA0IEIzIDAyIDAxIEMw
IDAwIDAwIDAwIDAwIDc5ICAuLi4uLi4uLi4uLi4uLi55CiAgICAwMjcwOiAwMCAxMSAxNCAwQSAx
MSA4MiAwQyAwMCA3RiAwOCAwOCAwNCBCMyAwMiAwMSBDMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
MDI4MDogMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgMDggMDAgIC4u
Li55Li4uLi4uLi4uLi4KICAgIDAyOTA6IDA0IEIzIDAyIDAxIEMwIDAwIDAwIDAwIDAwIDc5IDAw
IDExIDE0IDBBIDExIDgyICAuLi4uLi4uLi55Li4uLi4uCiAgICAwMkEwOiAwQyAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCA3OSAwMCAgLi4uLi4uLi4uLi4uLi55LgogICAg
MDJCMDogMTEgMTQgMEEgMTEgODIgMEMgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDAyQzA6IDAwIDAwIDAwIDc5IDAwIDExIDE0IDBBIDExIDgyIDBD
IDAwIDAwIDAwIDAwIDAwICAuLi55Li4uLi4uLi4uLi4uCiAgICAwMkQwOiAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCA3OSAwMCAxMSAxNCAwQSAxMSA4MiAwQyAgLi4uLi4uLi55Li4uLi4uLgogICAg
MDJFMDogMDAgN0YgNDAgMDAgMDQgRTcgMDAgMDAgMDAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgIC4u
QC4uLi4uLi4uLi55Li4KICAgIDAyRjA6IDE0IDBBIDExIDgyIDBDIDAwIDdGIDQwIDAwIDA0IEU4
IDAwIDAwIDAwIDAwIDAwICAuLi4uLi4uQC4uLi4uLi4uCiAgICAwMzAwOiAwMCAwMCA3OSAwMCAx
MSAxNCAwQSAxMSA4MiAwQyAwMCA3RiAwMiAwMCAwNCBCNCAgLi55Li4uLi4uLi4uLi4uLgogICAg
MDMxMDogMDIgMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgIC4u
Li4uLi55Li4uLi4uLi4KICAgIDAzMjA6IDdGIDAxIDAwIDA0IEIxIDAyIDAxIEMwIDAwIDAwIDAw
IDAwIDc5IDAwIDBDIDAxICAuLi4uLi4uLi4uLi55Li4uCiAgICAwMzMwOiAwMCAwMCAwMCAxMSAx
NCAwQSAxMSA4MiAwQyAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
MDM0MDogMDAgMDAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgIC4u
Li4uLnkuLi4uLi4uLi4KICAgIDAzNTA6IDA4IDE4IDA0IEIzIDAyIDAxIEMwIDAwIDAwIDAwIDAw
IDc5IDAwIDExIDE0IDBBICAuLi4uLi4uLi4uLnkuLi4uCiAgICAwMzYwOiAxMSA4MiAwQyAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
MDM3MDogNzkgMDAgMEMgMjEgMDIgMDAgMDAgMEMgNjkgMTAgMDAgMDAgMTAgNDcgMzUgNUMgIHku
LiEuLi4uaS4uLi5HNVwKICAgIDAzODA6IDJGIDAzIDVGIDUzIDQyIDVGIDUwIDRDIDU0IDQ2IDQz
IDMwIDMwIDMxIDA4IDVGICAvLl9TQl9QTFRGQzAwMS5fCiAgICAwMzkwOiA1MCA0MyA1NCAxMiAy
QyAwMiAxMSAxNCAwQSAxMSA4MiAwQyAwMCA3RiA0MCAwMCAgUENULiwuLi4uLi4uLi5ALgogICAg
MDNBMDogMDAgNjIgMDAgMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgIC5i
Li4uLi4uLnkuLi4uLi4KICAgIDAzQjA6IDBDIDAwIDdGIDQwIDAwIDAwIDYzIDAwIDAxIEMwIDAw
IDAwIDAwIDAwIDc5IDAwICAuLi5ALi5jLi4uLi4uLnkuCiAgICAwM0MwOiAwOCA1RiA1MCA1MyA1
MyAxMiA0NiAwNiAwMyAxMiAyMCAwNiAwQyA2OCAxMCAwMCAgLl9QU1MuRi4uLiAuLmguLgogICAg
MDNEMDogMDAgMEMgQjAgMTMgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMEMgMDAgMDAgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDAzRTA6IDBDIDAwIDAwIDAwIDAwIDBDIDAwIDAwIDAwIDAwIDEy
IDIwIDA2IDBDIDk4IDA4ICAuLi4uLi4uLi4uLiAuLi4uCiAgICAwM0YwOiAwMCAwMCAwQyAwNCAw
NiAwMCAwMCAwQyAwMCAwMCAwMCAwMCAwQyAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
MDQwMDogMDAgMEMgMDEgMDAgMDAgMDAgMEMgMDEgMDAgMDAgMDAgMTIgMjAgMDYgMEMgREMgIC4u
Li4uLi4uLi4uLiAuLi4KICAgIDA0MTA6IDA1IDAwIDAwIDBDIENGIDAzIDAwIDAwIDBDIDAwIDAw
IDAwIDAwIDBDIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwNDIwOiAwMCAwMCAwQyAwMiAw
MCAwMCAwMCAwQyAwMiAwMCAwMCAwMCAwOCA1OCA1MCA1MyAgLi4uLi4uLi4uLi4uLlhQUwogICAg
MDQzMDogNTMgMTIgNEIgMEQgMDMgMTIgNDcgMDQgMDggMEMgNjggMTAgMDAgMDAgMEMgQjAgIFMu
Sy4uLkcuLi5oLi4uLi4KICAgIDA0NDA6IDEzIDAwIDAwIDBDIDAwIDAwIDAwIDAwIDBDIDAwIDAw
IDAwIDAwIDExIDBCIDBBICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwNDUwOiAwOCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAxMSAwQiAwQSAwOCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
MDQ2MDogMDAgMDAgMDAgMDAgMDAgMTEgMEIgMEEgMDggMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDA0NzA6IDAwIDExIDBCIDBBIDA4IDAwIDAwIDAwIDAwIDAwIDAw
IDAwIDAwIDEyIDQ3IDA0ICAuLi4uLi4uLi4uLi4uLkcuCiAgICAwNDgwOiAwOCAwQyA5OCAwOCAw
MCAwMCAwQyAwNCAwNiAwMCAwMCAwQyAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
MDQ5MDogMEMgMDAgMDAgMDAgMDAgMTEgMEIgMEEgMDggMDEgMDAgMDAgMDAgMDAgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDA0QTA6IDAwIDExIDBCIDBBIDA4IDAxIDAwIDAwIDAwIDAwIDAw
IDAwIDAwIDExIDBCIDBBICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwNEIwOiAwOCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAxMSAwQiAwQSAwOCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
MDRDMDogMDAgMDAgMDAgMDAgMDAgMTIgNDcgMDQgMDggMEMgREMgMDUgMDAgMDAgMEMgQ0YgIC4u
Li4uLkcuLi4uLi4uLi4KICAgIDA0RDA6IDAzIDAwIDAwIDBDIDAwIDAwIDAwIDAwIDBDIDAwIDAw
IDAwIDAwIDExIDBCIDBBICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwNEUwOiAwOCAwMiAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAxMSAwQiAwQSAwOCAwMiAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
MDRGMDogMDAgMDAgMDAgMDAgMDAgMTEgMEIgMEEgMDggMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDA1MDA6IDAwIDExIDBCIDBBIDA4IDAwIDAwIDAwIDAwIDAwIDAw
IDAwIDAwIDA4IDVGIDUwICAuLi4uLi4uLi4uLi4uLl9QCiAgICAwNTEwOiA1MyA0NCAxMiAxOCAw
MSAxMiAxNSAwNSAwQSAwNSAwQSAwMCAwQyAwMCAwMCAwMCAgU0QuLi4uLi4uLi4uLi4uLgogICAg
MDUyMDogMDAgMEMgRkUgMDAgMDAgMDAgMEMgMDIgMDAgMDAgMDAgMDggNTAgNTAgNDMgNTYgIC4u
Li4uLi4uLi4uLlBQQ1YKICAgIDA1MzA6IDBBIDAwIDE0IDBCIDVGIDUwIDUwIDQzIDAwIEE0IDUw
IDUwIDQzIDU2IDA4IDVGICAuLi4uX1BQQy4uUFBDVi5fCiAgICAwNTQwOiA0MyA1MCA0MyAxMiA0
MCAxOSAxNyAwQSAxNyAwQSAwMyAxMSAxNCAwQSAxMSA4MiAgQ1BDLkAuLi4uLi4uLi4uLgogICAg
MDU1MDogMEMgMDAgN0YgMDggMTggMDQgQjAgMDIgMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgIC4u
Li4uLi4uLi4uLi4ueS4KICAgIDA1NjA6IDExIDE0IDBBIDExIDgyIDBDIDAwIDdGIDA4IDEwIDA0
IEIwIDAyIDAxIEMwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwNTcwOiAwMCAwMCAwMCA3OSAw
MCAxMSAxNCAwQSAxMSA4MiAwQyAwMCA3RiAwOCAwOCAwNCAgLi4ueS4uLi4uLi4uLi4uLgogICAg
MDU4MDogQjAgMDIgMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgIC4u
Li4uLi4ueS4uLi4uLi4KICAgIDA1OTA6IDAwIDdGIDA4IDAwIDA0IEIwIDAyIDAxIEMwIDAwIDAw
IDAwIDAwIDc5IDAwIDExICAuLi4uLi4uLi4uLi4ueS4uCiAgICAwNUEwOiAxNCAwQSAxMSA4MiAw
QyAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
MDVCMDogMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgMDggMTAgMDQgQjMgIC4u
eS4uLi4uLi4uLi4uLi4KICAgIDA1QzA6IDAyIDAxIEMwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0
IDBBIDExIDgyIDBDIDAwICAuLi4uLi4ueS4uLi4uLi4uCiAgICAwNUQwOiA3RiAwOCAwOCAwNCBC
MyAwMiAwMSBDMCAwMCAwMCAwMCAwMCA3OSAwMCAxMSAxNCAgLi4uLi4uLi4uLi4ueS4uLgogICAg
MDVFMDogMEEgMTEgODIgMEMgMDAgN0YgMDggMDAgMDQgQjMgMDIgMDEgQzAgMDAgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDA1RjA6IDAwIDc5IDAwIDExIDE0IDBBIDExIDgyIDBDIDAwIDAw
IDAwIDAwIDAwIDAwIDAwICAueS4uLi4uLi4uLi4uLi4uCiAgICAwNjAwOiAwMCAwMCAwMCAwMCAw
MCAwMCA3OSAwMCAxMSAxNCAwQSAxMSA4MiAwQyAwMCAwMCAgLi4uLi4ueS4uLi4uLi4uLgogICAg
MDYxMDogMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgIC4u
Li4uLi4uLi4ueS4uLi4KICAgIDA2MjA6IDExIDgyIDBDIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAw
IDAwIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwNjMwOiA3OSAwMCAxMSAxNCAw
QSAxMSA4MiAwQyAwMCA3RiA0MCAwMCAwNCBFNyAwMCAwMCAgeS4uLi4uLi4uLkAuLi4uLgogICAg
MDY0MDogMDAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgNDAgIC4u
Li4ueS4uLi4uLi4uLkAKICAgIDA2NTA6IDAwIDA0IEU4IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDc5
IDAwIDExIDE0IDBBIDExICAuLi4uLi4uLi4ueS4uLi4uCiAgICAwNjYwOiA4MiAwQyAwMCA3RiAw
MiAwMCAwNCBCNCAwMiAwMSBDMCAwMCAwMCAwMCAwMCA3OSAgLi4uLi4uLi4uLi4uLi4ueQogICAg
MDY3MDogMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgMDEgMDAgMDQgQjEgMDIgMDEgQzAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDA2ODA6IDAwIDAwIDAwIDAwIDc5IDAwIDBDIDAxIDAwIDAwIDAw
IDExIDE0IDBBIDExIDgyICAuLi4ueS4uLi4uLi4uLi4uCiAgICAwNjkwOiAwQyAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCA3OSAwMCAgLi4uLi4uLi4uLi4uLi55LgogICAg
MDZBMDogMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgMDggMTggMDQgQjMgMDIgMDEgQzAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDA2QjA6IDAwIDAwIDAwIDc5IDAwIDExIDE0IDBBIDExIDgyIDBD
IDAwIDAwIDAwIDAwIDAwICAuLi55Li4uLi4uLi4uLi4uCiAgICAwNkMwOiAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCA3OSAwMCAwQyAyMSAwMiAwMCAwMCAwQyAgLi4uLi4uLi55Li4hLi4uLgogICAg
MDZEMDogNjkgMTAgMDAgMDAgMTAgNDcgMzUgNUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAgNEMgIGku
Li4uRzVcLy5fU0JfUEwKICAgIDA2RTA6IDU0IDQ2IDQzIDMwIDMwIDMyIDA4IDVGIDUwIDQzIDU0
IDEyIDJDIDAyIDExIDE0ICBURkMwMDIuX1BDVC4sLi4uCiAgICAwNkYwOiAwQSAxMSA4MiAwQyAw
MCA3RiA0MCAwMCAwMCA2MiAwMCAwMSBDMCAwMCAwMCAwMCAgLi4uLi4uQC4uYi4uLi4uLgogICAg
MDcwMDogMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgNDAgMDAgMDAgNjMgMDAgIC55
Li4uLi4uLi4uQC4uYy4KICAgIDA3MTA6IDAxIEMwIDAwIDAwIDAwIDAwIDc5IDAwIDA4IDVGIDUw
IDUzIDUzIDEyIDQ2IDA2ICAuLi4uLi55Li5fUFNTLkYuCiAgICAwNzIwOiAwMyAxMiAyMCAwNiAw
QyA2OCAxMCAwMCAwMCAwQyBCMCAxMyAwMCAwMCAwQyAwMCAgLi4gLi5oLi4uLi4uLi4uLgogICAg
MDczMDogMDAgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMEMgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDA3NDA6IDAwIDAwIDEyIDIwIDA2IDBDIDk4IDA4IDAwIDAwIDBD
IDA0IDA2IDAwIDAwIDBDICAuLi4gLi4uLi4uLi4uLi4uCiAgICAwNzUwOiAwMCAwMCAwMCAwMCAw
QyAwMCAwMCAwMCAwMCAwQyAwMSAwMCAwMCAwMCAwQyAwMSAgLi4uLi4uLi4uLi4uLi4uLgogICAg
MDc2MDogMDAgMDAgMDAgMTIgMjAgMDYgMEMgREMgMDUgMDAgMDAgMEMgQ0YgMDMgMDAgMDAgIC4u
Li4gLi4uLi4uLi4uLi4KICAgIDA3NzA6IDBDIDAwIDAwIDAwIDAwIDBDIDAwIDAwIDAwIDAwIDBD
IDAyIDAwIDAwIDAwIDBDICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwNzgwOiAwMiAwMCAwMCAwMCAw
OCA1OCA1MCA1MyA1MyAxMiA0QiAwRCAwMyAxMiA0NyAwNCAgLi4uLi5YUFNTLksuLi5HLgogICAg
MDc5MDogMDggMEMgNjggMTAgMDAgMDAgMEMgQjAgMTMgMDAgMDAgMEMgMDAgMDAgMDAgMDAgIC4u
aC4uLi4uLi4uLi4uLi4KICAgIDA3QTA6IDBDIDAwIDAwIDAwIDAwIDExIDBCIDBBIDA4IDAwIDAw
IDAwIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwN0IwOiAwMCAxMSAwQiAwQSAw
OCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAxMSAwQiAwQSAgLi4uLi4uLi4uLi4uLi4uLgogICAg
MDdDMDogMDggMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMTEgMEIgMEEgMDggMDAgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDA3RDA6IDAwIDAwIDAwIDAwIDAwIDEyIDQ3IDA0IDA4IDBDIDk4
IDA4IDAwIDAwIDBDIDA0ICAuLi4uLi5HLi4uLi4uLi4uCiAgICAwN0UwOiAwNiAwMCAwMCAwQyAw
MCAwMCAwMCAwMCAwQyAwMCAwMCAwMCAwMCAxMSAwQiAwQSAgLi4uLi4uLi4uLi4uLi4uLgogICAg
MDdGMDogMDggMDEgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMTEgMEIgMEEgMDggMDEgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDA4MDA6IDAwIDAwIDAwIDAwIDAwIDExIDBCIDBBIDA4IDAwIDAw
IDAwIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwODEwOiAwMCAxMSAwQiAwQSAw
OCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAxMiA0NyAwNCAgLi4uLi4uLi4uLi4uLi5HLgogICAg
MDgyMDogMDggMEMgREMgMDUgMDAgMDAgMEMgQ0YgMDMgMDAgMDAgMEMgMDAgMDAgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDA4MzA6IDBDIDAwIDAwIDAwIDAwIDExIDBCIDBBIDA4IDAyIDAw
IDAwIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwODQwOiAwMCAxMSAwQiAwQSAw
OCAwMiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAxMSAwQiAwQSAgLi4uLi4uLi4uLi4uLi4uLgogICAg
MDg1MDogMDggMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMTEgMEIgMEEgMDggMDAgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDA4NjA6IDAwIDAwIDAwIDAwIDAwIDA4IDVGIDUwIDUzIDQ0IDEy
IDE4IDAxIDEyIDE1IDA1ICAuLi4uLi5fUFNELi4uLi4uCiAgICAwODcwOiAwQSAwNSAwQSAwMCAw
QyAwMSAwMCAwMCAwMCAwQyBGRSAwMCAwMCAwMCAwQyAwMiAgLi4uLi4uLi4uLi4uLi4uLgogICAg
MDg4MDogMDAgMDAgMDAgMDggNTAgNTAgNDMgNTYgMEEgMDAgMTQgMEIgNUYgNTAgNTAgNDMgIC4u
Li5QUENWLi4uLl9QUEMKICAgIDA4OTA6IDAwIEE0IDUwIDUwIDQzIDU2IDA4IDVGIDQzIDUwIDQz
IDEyIDQwIDE5IDE3IDBBICAuLlBQQ1YuX0NQQy5ALi4uCiAgICAwOEEwOiAxNyAwQSAwMyAxMSAx
NCAwQSAxMSA4MiAwQyAwMCA3RiAwOCAxOCAwNCBCMCAwMiAgLi4uLi4uLi4uLi4uLi4uLgogICAg
MDhCMDogMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgIC4u
Li4uLnkuLi4uLi4uLi4KICAgIDA4QzA6IDA4IDEwIDA0IEIwIDAyIDAxIEMwIDAwIDAwIDAwIDAw
IDc5IDAwIDExIDE0IDBBICAuLi4uLi4uLi4uLnkuLi4uCiAgICAwOEQwOiAxMSA4MiAwQyAwMCA3
RiAwOCAwOCAwNCBCMCAwMiAwMSBDMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
MDhFMDogNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgMDggMDAgMDQgQjAgMDIgMDEgIHku
Li4uLi4uLi4uLi4uLi4KICAgIDA4RjA6IEMwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0IDBBIDEx
IDgyIDBDIDAwIDAwIDAwICAuLi4uLnkuLi4uLi4uLi4uCiAgICAwOTAwOiAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCA3OSAwMCAxMSAxNCAwQSAxMSAgLi4uLi4uLi4uLnkuLi4uLgogICAg
MDkxMDogODIgMEMgMDAgN0YgMDggMTAgMDQgQjMgMDIgMDEgQzAgMDAgMDAgMDAgMDAgNzkgIC4u
Li4uLi4uLi4uLi4uLnkKICAgIDA5MjA6IDAwIDExIDE0IDBBIDExIDgyIDBDIDAwIDdGIDA4IDA4
IDA0IEIzIDAyIDAxIEMwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwOTMwOiAwMCAwMCAwMCAwMCA3
OSAwMCAxMSAxNCAwQSAxMSA4MiAwQyAwMCA3RiAwOCAwMCAgLi4uLnkuLi4uLi4uLi4uLgogICAg
MDk0MDogMDQgQjMgMDIgMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgIC4u
Li4uLi4uLnkuLi4uLi4KICAgIDA5NTA6IDBDIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAw
IDAwIDAwIDAwIDc5IDAwICAuLi4uLi4uLi4uLi4uLnkuCiAgICAwOTYwOiAxMSAxNCAwQSAxMSA4
MiAwQyAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
MDk3MDogMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgMDAgMDAgMDAgMDAgIC4u
LnkuLi4uLi4uLi4uLi4KICAgIDA5ODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDc5IDAwIDEx
IDE0IDBBIDExIDgyIDBDICAuLi4uLi4uLnkuLi4uLi4uCiAgICAwOTkwOiAwMCA3RiA0MCAwMCAw
NCBFNyAwMCAwMCAwMCAwMCAwMCAwMCAwMCA3OSAwMCAxMSAgLi5ALi4uLi4uLi4uLnkuLgogICAg
MDlBMDogMTQgMEEgMTEgODIgMEMgMDAgN0YgNDAgMDAgMDQgRTggMDAgMDAgMDAgMDAgMDAgIC4u
Li4uLi5ALi4uLi4uLi4KICAgIDA5QjA6IDAwIDAwIDc5IDAwIDExIDE0IDBBIDExIDgyIDBDIDAw
IDdGIDAyIDAwIDA0IEI0ICAuLnkuLi4uLi4uLi4uLi4uCiAgICAwOUMwOiAwMiAwMSBDMCAwMCAw
MCAwMCAwMCA3OSAwMCAxMSAxNCAwQSAxMSA4MiAwQyAwMCAgLi4uLi4uLnkuLi4uLi4uLgogICAg
MDlEMDogN0YgMDEgMDAgMDQgQjEgMDIgMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgMEMgMDEgIC4u
Li4uLi4uLi4uLnkuLi4KICAgIDA5RTA6IDAwIDAwIDAwIDExIDE0IDBBIDExIDgyIDBDIDAwIDAw
IDAwIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwOUYwOiAwMCAwMCAwMCAwMCAw
MCAwMCA3OSAwMCAxMSAxNCAwQSAxMSA4MiAwQyAwMCA3RiAgLi4uLi4ueS4uLi4uLi4uLgogICAg
MEEwMDogMDggMTggMDQgQjMgMDIgMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgIC4u
Li4uLi4uLi4ueS4uLi4KICAgIDBBMTA6IDExIDgyIDBDIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAw
IDAwIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwQTIwOiA3OSAwMCAwQyAyMSAw
MiAwMCAwMCAwQyA2OSAxMCAwMCAwMCAxMCA0NyAzNSA1QyAgeS4uIS4uLi5pLi4uLkc1XAogICAg
MEEzMDogMkYgMDMgNUYgNTMgNDIgNUYgNTAgNEMgNTQgNDYgNDMgMzAgMzAgMzMgMDggNUYgIC8u
X1NCX1BMVEZDMDAzLl8KICAgIDBBNDA6IDUwIDQzIDU0IDEyIDJDIDAyIDExIDE0IDBBIDExIDgy
IDBDIDAwIDdGIDQwIDAwICBQQ1QuLC4uLi4uLi4uLkAuCiAgICAwQTUwOiAwMCA2MiAwMCAwMSBD
MCAwMCAwMCAwMCAwMCA3OSAwMCAxMSAxNCAwQSAxMSA4MiAgLmIuLi4uLi4ueS4uLi4uLgogICAg
MEE2MDogMEMgMDAgN0YgNDAgMDAgMDAgNjMgMDAgMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgIC4u
LkAuLmMuLi4uLi4ueS4KICAgIDBBNzA6IDA4IDVGIDUwIDUzIDUzIDEyIDQ2IDA2IDAzIDEyIDIw
IDA2IDBDIDY4IDEwIDAwICAuX1BTUy5GLi4uIC4uaC4uCiAgICAwQTgwOiAwMCAwQyBCMCAxMyAw
MCAwMCAwQyAwMCAwMCAwMCAwMCAwQyAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
MEE5MDogMEMgMDAgMDAgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMTIgMjAgMDYgMEMgOTggMDggIC4u
Li4uLi4uLi4uIC4uLi4KICAgIDBBQTA6IDAwIDAwIDBDIDA0IDA2IDAwIDAwIDBDIDAwIDAwIDAw
IDAwIDBDIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwQUIwOiAwMCAwQyAwMSAwMCAw
MCAwMCAwQyAwMSAwMCAwMCAwMCAxMiAyMCAwNiAwQyBEQyAgLi4uLi4uLi4uLi4uIC4uLgogICAg
MEFDMDogMDUgMDAgMDAgMEMgQ0YgMDMgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMEMgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDBBRDA6IDAwIDAwIDBDIDAyIDAwIDAwIDAwIDBDIDAyIDAwIDAw
IDAwIDA4IDU4IDUwIDUzICAuLi4uLi4uLi4uLi4uWFBTCiAgICAwQUUwOiA1MyAxMiA0QiAwRCAw
MyAxMiA0NyAwNCAwOCAwQyA2OCAxMCAwMCAwMCAwQyBCMCAgUy5LLi4uRy4uLmguLi4uLgogICAg
MEFGMDogMTMgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMTEgMEIgMEEgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDBCMDA6IDA4IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDExIDBC
IDBBIDA4IDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwQjEwOiAwMCAwMCAwMCAwMCAw
MCAxMSAwQiAwQSAwOCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
MEIyMDogMDAgMTEgMEIgMEEgMDggMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMTIgNDcgMDQgIC4u
Li4uLi4uLi4uLi4uRy4KICAgIDBCMzA6IDA4IDBDIDk4IDA4IDAwIDAwIDBDIDA0IDA2IDAwIDAw
IDBDIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwQjQwOiAwQyAwMCAwMCAwMCAw
MCAxMSAwQiAwQSAwOCAwMSAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
MEI1MDogMDAgMTEgMEIgMEEgMDggMDEgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMTEgMEIgMEEgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDBCNjA6IDA4IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDExIDBC
IDBBIDA4IDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwQjcwOiAwMCAwMCAwMCAwMCAw
MCAxMiA0NyAwNCAwOCAwQyBEQyAwNSAwMCAwMCAwQyBDRiAgLi4uLi4uRy4uLi4uLi4uLgogICAg
MEI4MDogMDMgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMTEgMEIgMEEgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDBCOTA6IDA4IDAyIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDExIDBC
IDBBIDA4IDAyIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwQkEwOiAwMCAwMCAwMCAwMCAw
MCAxMSAwQiAwQSAwOCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
MEJCMDogMDAgMTEgMEIgMEEgMDggMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDggNUYgNTAgIC4u
Li4uLi4uLi4uLi4uX1AKICAgIDBCQzA6IDUzIDQ0IDEyIDE4IDAxIDEyIDE1IDA1IDBBIDA1IDBB
IDAwIDBDIDAxIDAwIDAwICBTRC4uLi4uLi4uLi4uLi4uCiAgICAwQkQwOiAwMCAwQyBGRSAwMCAw
MCAwMCAwQyAwMiAwMCAwMCAwMCAwOCA1MCA1MCA0MyA1NiAgLi4uLi4uLi4uLi4uUFBDVgogICAg
MEJFMDogMEEgMDAgMTQgMEIgNUYgNTAgNTAgNDMgMDAgQTQgNTAgNTAgNDMgNTYgMDggNUYgIC4u
Li5fUFBDLi5QUENWLl8KICAgIDBCRjA6IDQzIDUwIDQzIDEyIDQwIDE5IDE3IDBBIDE3IDBBIDAz
IDExIDE0IDBBIDExIDgyICBDUEMuQC4uLi4uLi4uLi4uCiAgICAwQzAwOiAwQyAwMCA3RiAwOCAx
OCAwNCBCMCAwMiAwMSBDMCAwMCAwMCAwMCAwMCA3OSAwMCAgLi4uLi4uLi4uLi4uLi55LgogICAg
MEMxMDogMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgMDggMTAgMDQgQjAgMDIgMDEgQzAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDBDMjA6IDAwIDAwIDAwIDc5IDAwIDExIDE0IDBBIDExIDgyIDBD
IDAwIDdGIDA4IDA4IDA0ICAuLi55Li4uLi4uLi4uLi4uCiAgICAwQzMwOiBCMCAwMiAwMSBDMCAw
MCAwMCAwMCAwMCA3OSAwMCAxMSAxNCAwQSAxMSA4MiAwQyAgLi4uLi4uLi55Li4uLi4uLgogICAg
MEM0MDogMDAgN0YgMDggMDAgMDQgQjAgMDIgMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgIC4u
Li4uLi4uLi4uLi55Li4KICAgIDBDNTA6IDE0IDBBIDExIDgyIDBDIDAwIDAwIDAwIDAwIDAwIDAw
IDAwIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwQzYwOiAwMCAwMCA3OSAwMCAx
MSAxNCAwQSAxMSA4MiAwQyAwMCA3RiAwOCAxMCAwNCBCMyAgLi55Li4uLi4uLi4uLi4uLgogICAg
MEM3MDogMDIgMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgIC4u
Li4uLi55Li4uLi4uLi4KICAgIDBDODA6IDdGIDA4IDA4IDA0IEIzIDAyIDAxIEMwIDAwIDAwIDAw
IDAwIDc5IDAwIDExIDE0ICAuLi4uLi4uLi4uLi55Li4uCiAgICAwQzkwOiAwQSAxMSA4MiAwQyAw
MCA3RiAwOCAwMCAwNCBCMyAwMiAwMSBDMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
MENBMDogMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC55
Li4uLi4uLi4uLi4uLi4KICAgIDBDQjA6IDAwIDAwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0IDBB
IDExIDgyIDBDIDAwIDAwICAuLi4uLi55Li4uLi4uLi4uCiAgICAwQ0MwOiAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAwMCA3OSAwMCAxMSAxNCAwQSAgLi4uLi4uLi4uLi55Li4uLgogICAg
MENEMDogMTEgODIgMEMgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDBDRTA6IDc5IDAwIDExIDE0IDBBIDExIDgyIDBDIDAwIDdGIDQw
IDAwIDA0IEU3IDAwIDAwICB5Li4uLi4uLi4uQC4uLi4uCiAgICAwQ0YwOiAwMCAwMCAwMCAwMCAw
MCA3OSAwMCAxMSAxNCAwQSAxMSA4MiAwQyAwMCA3RiA0MCAgLi4uLi55Li4uLi4uLi4uQAogICAg
MEQwMDogMDAgMDQgRTggMDAgMDAgMDAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgIC4u
Li4uLi4uLi55Li4uLi4KICAgIDBEMTA6IDgyIDBDIDAwIDdGIDAyIDAwIDA0IEI0IDAyIDAxIEMw
IDAwIDAwIDAwIDAwIDc5ICAuLi4uLi4uLi4uLi4uLi55CiAgICAwRDIwOiAwMCAxMSAxNCAwQSAx
MSA4MiAwQyAwMCA3RiAwMSAwMCAwNCBCMSAwMiAwMSBDMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
MEQzMDogMDAgMDAgMDAgMDAgNzkgMDAgMEMgMDEgMDAgMDAgMDAgMTEgMTQgMEEgMTEgODIgIC4u
Li55Li4uLi4uLi4uLi4KICAgIDBENDA6IDBDIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAw
IDAwIDAwIDAwIDc5IDAwICAuLi4uLi4uLi4uLi4uLnkuCiAgICAwRDUwOiAxMSAxNCAwQSAxMSA4
MiAwQyAwMCA3RiAwOCAxOCAwNCBCMyAwMiAwMSBDMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
MEQ2MDogMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgMDAgMDAgMDAgMDAgIC4u
LnkuLi4uLi4uLi4uLi4KICAgIDBENzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDc5IDAwIDBD
IDIxIDAyIDAwIDAwIDBDICAuLi4uLi4uLnkuLiEuLi4uCiAgICAwRDgwOiA2OSAxMCAwMCAwMCAx
MCA0NyAzNSA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0QyAgaS4uLi5HNVwvLl9TQl9QTAogICAg
MEQ5MDogNTQgNDYgNDMgMzAgMzAgMzQgMDggNUYgNTAgNDMgNTQgMTIgMkMgMDIgMTEgMTQgIFRG
QzAwNC5fUENULiwuLi4KICAgIDBEQTA6IDBBIDExIDgyIDBDIDAwIDdGIDQwIDAwIDAwIDYyIDAw
IDAxIEMwIDAwIDAwIDAwICAuLi4uLi5ALi5iLi4uLi4uCiAgICAwREIwOiAwMCA3OSAwMCAxMSAx
NCAwQSAxMSA4MiAwQyAwMCA3RiA0MCAwMCAwMCA2MyAwMCAgLnkuLi4uLi4uLi5ALi5jLgogICAg
MERDMDogMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgMDggNUYgNTAgNTMgNTMgMTIgNDYgMDYgIC4u
Li4uLnkuLl9QU1MuRi4KICAgIDBERDA6IDAzIDEyIDIwIDA2IDBDIDY4IDEwIDAwIDAwIDBDIEIw
IDEzIDAwIDAwIDBDIDAwICAuLiAuLmguLi4uLi4uLi4uCiAgICAwREUwOiAwMCAwMCAwMCAwQyAw
MCAwMCAwMCAwMCAwQyAwMCAwMCAwMCAwMCAwQyAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
MERGMDogMDAgMDAgMTIgMjAgMDYgMEMgOTggMDggMDAgMDAgMEMgMDQgMDYgMDAgMDAgMEMgIC4u
LiAuLi4uLi4uLi4uLi4KICAgIDBFMDA6IDAwIDAwIDAwIDAwIDBDIDAwIDAwIDAwIDAwIDBDIDAx
IDAwIDAwIDAwIDBDIDAxICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwRTEwOiAwMCAwMCAwMCAxMiAy
MCAwNiAwQyBEQyAwNSAwMCAwMCAwQyBDRiAwMyAwMCAwMCAgLi4uLiAuLi4uLi4uLi4uLgogICAg
MEUyMDogMEMgMDAgMDAgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMEMgMDIgMDAgMDAgMDAgMEMgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDBFMzA6IDAyIDAwIDAwIDAwIDA4IDU4IDUwIDUzIDUzIDEyIDRC
IDBEIDAzIDEyIDQ3IDA0ICAuLi4uLlhQU1MuSy4uLkcuCiAgICAwRTQwOiAwOCAwQyA2OCAxMCAw
MCAwMCAwQyBCMCAxMyAwMCAwMCAwQyAwMCAwMCAwMCAwMCAgLi5oLi4uLi4uLi4uLi4uLgogICAg
MEU1MDogMEMgMDAgMDAgMDAgMDAgMTEgMEIgMEEgMDggMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDBFNjA6IDAwIDExIDBCIDBBIDA4IDAwIDAwIDAwIDAwIDAwIDAw
IDAwIDAwIDExIDBCIDBBICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwRTcwOiAwOCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAxMSAwQiAwQSAwOCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
MEU4MDogMDAgMDAgMDAgMDAgMDAgMTIgNDcgMDQgMDggMEMgOTggMDggMDAgMDAgMEMgMDQgIC4u
Li4uLkcuLi4uLi4uLi4KICAgIDBFOTA6IDA2IDAwIDAwIDBDIDAwIDAwIDAwIDAwIDBDIDAwIDAw
IDAwIDAwIDExIDBCIDBBICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwRUEwOiAwOCAwMSAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAxMSAwQiAwQSAwOCAwMSAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
MEVCMDogMDAgMDAgMDAgMDAgMDAgMTEgMEIgMEEgMDggMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDBFQzA6IDAwIDExIDBCIDBBIDA4IDAwIDAwIDAwIDAwIDAwIDAw
IDAwIDAwIDEyIDQ3IDA0ICAuLi4uLi4uLi4uLi4uLkcuCiAgICAwRUQwOiAwOCAwQyBEQyAwNSAw
MCAwMCAwQyBDRiAwMyAwMCAwMCAwQyAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
MEVFMDogMEMgMDAgMDAgMDAgMDAgMTEgMEIgMEEgMDggMDIgMDAgMDAgMDAgMDAgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDBFRjA6IDAwIDExIDBCIDBBIDA4IDAyIDAwIDAwIDAwIDAwIDAw
IDAwIDAwIDExIDBCIDBBICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwRjAwOiAwOCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAxMSAwQiAwQSAwOCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
MEYxMDogMDAgMDAgMDAgMDAgMDAgMDggNUYgNTAgNTMgNDQgMTIgMTggMDEgMTIgMTUgMDUgIC4u
Li4uLl9QU0QuLi4uLi4KICAgIDBGMjA6IDBBIDA1IDBBIDAwIDBDIDAyIDAwIDAwIDAwIDBDIEZF
IDAwIDAwIDAwIDBDIDAyICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwRjMwOiAwMCAwMCAwMCAwOCA1
MCA1MCA0MyA1NiAwQSAwMCAxNCAwQiA1RiA1MCA1MCA0MyAgLi4uLlBQQ1YuLi4uX1BQQwogICAg
MEY0MDogMDAgQTQgNTAgNTAgNDMgNTYgMDggNUYgNDMgNTAgNDMgMTIgNDAgMTkgMTcgMEEgIC4u
UFBDVi5fQ1BDLkAuLi4KICAgIDBGNTA6IDE3IDBBIDAzIDExIDE0IDBBIDExIDgyIDBDIDAwIDdG
IDA4IDE4IDA0IEIwIDAyICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwRjYwOiAwMSBDMCAwMCAwMCAw
MCAwMCA3OSAwMCAxMSAxNCAwQSAxMSA4MiAwQyAwMCA3RiAgLi4uLi4ueS4uLi4uLi4uLgogICAg
MEY3MDogMDggMTAgMDQgQjAgMDIgMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgIC4u
Li4uLi4uLi4ueS4uLi4KICAgIDBGODA6IDExIDgyIDBDIDAwIDdGIDA4IDA4IDA0IEIwIDAyIDAx
IEMwIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwRjkwOiA3OSAwMCAxMSAxNCAw
QSAxMSA4MiAwQyAwMCA3RiAwOCAwMCAwNCBCMCAwMiAwMSAgeS4uLi4uLi4uLi4uLi4uLgogICAg
MEZBMDogQzAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgMDAgMDAgIC4u
Li4ueS4uLi4uLi4uLi4KICAgIDBGQjA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDc5
IDAwIDExIDE0IDBBIDExICAuLi4uLi4uLi4ueS4uLi4uCiAgICAwRkMwOiA4MiAwQyAwMCA3RiAw
OCAxMCAwNCBCMyAwMiAwMSBDMCAwMCAwMCAwMCAwMCA3OSAgLi4uLi4uLi4uLi4uLi4ueQogICAg
MEZEMDogMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgMDggMDggMDQgQjMgMDIgMDEgQzAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDBGRTA6IDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0IDBBIDExIDgy
IDBDIDAwIDdGIDA4IDAwICAuLi4ueS4uLi4uLi4uLi4uCiAgICAwRkYwOiAwNCBCMyAwMiAwMSBD
MCAwMCAwMCAwMCAwMCA3OSAwMCAxMSAxNCAwQSAxMSA4MiAgLi4uLi4uLi4ueS4uLi4uLgogICAg
MTAwMDogMEMgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgNzkgMDAgIC4u
Li4uLi4uLi4uLi4ueS4KICAgIDEwMTA6IDExIDE0IDBBIDExIDgyIDBDIDAwIDAwIDAwIDAwIDAw
IDAwIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAxMDIwOiAwMCAwMCAwMCA3OSAw
MCAxMSAxNCAwQSAxMSA4MiAwQyAwMCAwMCAwMCAwMCAwMCAgLi4ueS4uLi4uLi4uLi4uLgogICAg
MTAzMDogMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgIC4u
Li4uLi4ueS4uLi4uLi4KICAgIDEwNDA6IDAwIDdGIDQwIDAwIDA0IEU3IDAwIDAwIDAwIDAwIDAw
IDAwIDAwIDc5IDAwIDExICAuLkAuLi4uLi4uLi4ueS4uCiAgICAxMDUwOiAxNCAwQSAxMSA4MiAw
QyAwMCA3RiA0MCAwMCAwNCBFOCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLkAuLi4uLi4uLgogICAg
MTA2MDogMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgMDIgMDAgMDQgQjQgIC4u
eS4uLi4uLi4uLi4uLi4KICAgIDEwNzA6IDAyIDAxIEMwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0
IDBBIDExIDgyIDBDIDAwICAuLi4uLi4ueS4uLi4uLi4uCiAgICAxMDgwOiA3RiAwMSAwMCAwNCBC
MSAwMiAwMSBDMCAwMCAwMCAwMCAwMCA3OSAwMCAwQyAwMSAgLi4uLi4uLi4uLi4ueS4uLgogICAg
MTA5MDogMDAgMDAgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDEwQTA6IDAwIDAwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0IDBB
IDExIDgyIDBDIDAwIDdGICAuLi4uLi55Li4uLi4uLi4uCiAgICAxMEIwOiAwOCAxOCAwNCBCMyAw
MiAwMSBDMCAwMCAwMCAwMCAwMCA3OSAwMCAxMSAxNCAwQSAgLi4uLi4uLi4uLi55Li4uLgogICAg
MTBDMDogMTEgODIgMEMgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDEwRDA6IDc5IDAwIDBDIDIxIDAyIDAwIDAwIDBDIDY5IDEwIDAw
IDAwIDEwIDQ3IDM1IDVDICB5Li4hLi4uLmkuLi4uRzVcCiAgICAxMEUwOiAyRiAwMyA1RiA1MyA0
MiA1RiA1MCA0QyA1NCA0NiA0MyAzMCAzMCAzNSAwOCA1RiAgLy5fU0JfUExURkMwMDUuXwogICAg
MTBGMDogNTAgNDMgNTQgMTIgMkMgMDIgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgNDAgMDAgIFBD
VC4sLi4uLi4uLi4uQC4KICAgIDExMDA6IDAwIDYyIDAwIDAxIEMwIDAwIDAwIDAwIDAwIDc5IDAw
IDExIDE0IDBBIDExIDgyICAuYi4uLi4uLi55Li4uLi4uCiAgICAxMTEwOiAwQyAwMCA3RiA0MCAw
MCAwMCA2MyAwMCAwMSBDMCAwMCAwMCAwMCAwMCA3OSAwMCAgLi4uQC4uYy4uLi4uLi55LgogICAg
MTEyMDogMDggNUYgNTAgNTMgNTMgMTIgNDYgMDYgMDMgMTIgMjAgMDYgMEMgNjggMTAgMDAgIC5f
UFNTLkYuLi4gLi5oLi4KICAgIDExMzA6IDAwIDBDIEIwIDEzIDAwIDAwIDBDIDAwIDAwIDAwIDAw
IDBDIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAxMTQwOiAwQyAwMCAwMCAwMCAw
MCAwQyAwMCAwMCAwMCAwMCAxMiAyMCAwNiAwQyA5OCAwOCAgLi4uLi4uLi4uLi4gLi4uLgogICAg
MTE1MDogMDAgMDAgMEMgMDQgMDYgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMEMgMDAgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDExNjA6IDAwIDBDIDAxIDAwIDAwIDAwIDBDIDAxIDAwIDAwIDAw
IDEyIDIwIDA2IDBDIERDICAuLi4uLi4uLi4uLi4gLi4uCiAgICAxMTcwOiAwNSAwMCAwMCAwQyBD
RiAwMyAwMCAwMCAwQyAwMCAwMCAwMCAwMCAwQyAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
MTE4MDogMDAgMDAgMEMgMDIgMDAgMDAgMDAgMEMgMDIgMDAgMDAgMDAgMDggNTggNTAgNTMgIC4u
Li4uLi4uLi4uLi5YUFMKICAgIDExOTA6IDUzIDEyIDRCIDBEIDAzIDEyIDQ3IDA0IDA4IDBDIDY4
IDEwIDAwIDAwIDBDIEIwICBTLksuLi5HLi4uaC4uLi4uCiAgICAxMUEwOiAxMyAwMCAwMCAwQyAw
MCAwMCAwMCAwMCAwQyAwMCAwMCAwMCAwMCAxMSAwQiAwQSAgLi4uLi4uLi4uLi4uLi4uLgogICAg
MTFCMDogMDggMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMTEgMEIgMEEgMDggMDAgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDExQzA6IDAwIDAwIDAwIDAwIDAwIDExIDBCIDBBIDA4IDAwIDAw
IDAwIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAxMUQwOiAwMCAxMSAwQiAwQSAw
OCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAxMiA0NyAwNCAgLi4uLi4uLi4uLi4uLi5HLgogICAg
MTFFMDogMDggMEMgOTggMDggMDAgMDAgMEMgMDQgMDYgMDAgMDAgMEMgMDAgMDAgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDExRjA6IDBDIDAwIDAwIDAwIDAwIDExIDBCIDBBIDA4IDAxIDAw
IDAwIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAxMjAwOiAwMCAxMSAwQiAwQSAw
OCAwMSAwMCAwMCAwMCAwMCAwMCAwMCAwMCAxMSAwQiAwQSAgLi4uLi4uLi4uLi4uLi4uLgogICAg
MTIxMDogMDggMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMTEgMEIgMEEgMDggMDAgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDEyMjA6IDAwIDAwIDAwIDAwIDAwIDEyIDQ3IDA0IDA4IDBDIERD
IDA1IDAwIDAwIDBDIENGICAuLi4uLi5HLi4uLi4uLi4uCiAgICAxMjMwOiAwMyAwMCAwMCAwQyAw
MCAwMCAwMCAwMCAwQyAwMCAwMCAwMCAwMCAxMSAwQiAwQSAgLi4uLi4uLi4uLi4uLi4uLgogICAg
MTI0MDogMDggMDIgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMTEgMEIgMEEgMDggMDIgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDEyNTA6IDAwIDAwIDAwIDAwIDAwIDExIDBCIDBBIDA4IDAwIDAw
IDAwIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAxMjYwOiAwMCAxMSAwQiAwQSAw
OCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwOCA1RiA1MCAgLi4uLi4uLi4uLi4uLi5fUAogICAg
MTI3MDogNTMgNDQgMTIgMTggMDEgMTIgMTUgMDUgMEEgMDUgMEEgMDAgMEMgMDIgMDAgMDAgIFNE
Li4uLi4uLi4uLi4uLi4KICAgIDEyODA6IDAwIDBDIEZFIDAwIDAwIDAwIDBDIDAyIDAwIDAwIDAw
IDA4IDUwIDUwIDQzIDU2ICAuLi4uLi4uLi4uLi5QUENWCiAgICAxMjkwOiAwQSAwMCAxNCAwQiA1
RiA1MCA1MCA0MyAwMCBBNCA1MCA1MCA0MyA1NiAwOCA1RiAgLi4uLl9QUEMuLlBQQ1YuXwogICAg
MTJBMDogNDMgNTAgNDMgMTIgNDAgMTkgMTcgMEEgMTcgMEEgMDMgMTEgMTQgMEEgMTEgODIgIENQ
Qy5ALi4uLi4uLi4uLi4KICAgIDEyQjA6IDBDIDAwIDdGIDA4IDE4IDA0IEIwIDAyIDAxIEMwIDAw
IDAwIDAwIDAwIDc5IDAwICAuLi4uLi4uLi4uLi4uLnkuCiAgICAxMkMwOiAxMSAxNCAwQSAxMSA4
MiAwQyAwMCA3RiAwOCAxMCAwNCBCMCAwMiAwMSBDMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
MTJEMDogMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgMDggMDggMDQgIC4u
LnkuLi4uLi4uLi4uLi4KICAgIDEyRTA6IEIwIDAyIDAxIEMwIDAwIDAwIDAwIDAwIDc5IDAwIDEx
IDE0IDBBIDExIDgyIDBDICAuLi4uLi4uLnkuLi4uLi4uCiAgICAxMkYwOiAwMCA3RiAwOCAwMCAw
NCBCMCAwMiAwMSBDMCAwMCAwMCAwMCAwMCA3OSAwMCAxMSAgLi4uLi4uLi4uLi4uLnkuLgogICAg
MTMwMDogMTQgMEEgMTEgODIgMEMgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDEzMTA6IDAwIDAwIDc5IDAwIDExIDE0IDBBIDExIDgyIDBDIDAw
IDdGIDA4IDEwIDA0IEIzICAuLnkuLi4uLi4uLi4uLi4uCiAgICAxMzIwOiAwMiAwMSBDMCAwMCAw
MCAwMCAwMCA3OSAwMCAxMSAxNCAwQSAxMSA4MiAwQyAwMCAgLi4uLi4uLnkuLi4uLi4uLgogICAg
MTMzMDogN0YgMDggMDggMDQgQjMgMDIgMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgIC4u
Li4uLi4uLi4uLnkuLi4KICAgIDEzNDA6IDBBIDExIDgyIDBDIDAwIDdGIDA4IDAwIDA0IEIzIDAy
IDAxIEMwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAxMzUwOiAwMCA3OSAwMCAxMSAx
NCAwQSAxMSA4MiAwQyAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLnkuLi4uLi4uLi4uLi4uLgogICAg
MTM2MDogMDAgMDAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgMDAgIC4u
Li4uLnkuLi4uLi4uLi4KICAgIDEzNzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAw
IDc5IDAwIDExIDE0IDBBICAuLi4uLi4uLi4uLnkuLi4uCiAgICAxMzgwOiAxMSA4MiAwQyAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
MTM5MDogNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgNDAgMDAgMDQgRTcgMDAgMDAgIHku
Li4uLi4uLi5ALi4uLi4KICAgIDEzQTA6IDAwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0IDBBIDEx
IDgyIDBDIDAwIDdGIDQwICAuLi4uLnkuLi4uLi4uLi5ACiAgICAxM0IwOiAwMCAwNCBFOCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCA3OSAwMCAxMSAxNCAwQSAxMSAgLi4uLi4uLi4uLnkuLi4uLgogICAg
MTNDMDogODIgMEMgMDAgN0YgMDIgMDAgMDQgQjQgMDIgMDEgQzAgMDAgMDAgMDAgMDAgNzkgIC4u
Li4uLi4uLi4uLi4uLnkKICAgIDEzRDA6IDAwIDExIDE0IDBBIDExIDgyIDBDIDAwIDdGIDAxIDAw
IDA0IEIxIDAyIDAxIEMwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAxM0UwOiAwMCAwMCAwMCAwMCA3
OSAwMCAwQyAwMSAwMCAwMCAwMCAxMSAxNCAwQSAxMSA4MiAgLi4uLnkuLi4uLi4uLi4uLgogICAg
MTNGMDogMEMgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgNzkgMDAgIC4u
Li4uLi4uLi4uLi4ueS4KICAgIDE0MDA6IDExIDE0IDBBIDExIDgyIDBDIDAwIDdGIDA4IDE4IDA0
IEIzIDAyIDAxIEMwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAxNDEwOiAwMCAwMCAwMCA3OSAw
MCAxMSAxNCAwQSAxMSA4MiAwQyAwMCAwMCAwMCAwMCAwMCAgLi4ueS4uLi4uLi4uLi4uLgogICAg
MTQyMDogMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgNzkgMDAgMEMgMjEgMDIgMDAgMDAgMEMgIC4u
Li4uLi4ueS4uIS4uLi4KICAgIDE0MzA6IDY5IDEwIDAwIDAwIDEwIDQ3IDM1IDVDIDJGIDAzIDVG
IDUzIDQyIDVGIDUwIDRDICBpLi4uLkc1XC8uX1NCX1BMCiAgICAxNDQwOiA1NCA0NiA0MyAzMCAz
MCAzNiAwOCA1RiA1MCA0MyA1NCAxMiAyQyAwMiAxMSAxNCAgVEZDMDA2Ll9QQ1QuLC4uLgogICAg
MTQ1MDogMEEgMTEgODIgMEMgMDAgN0YgNDAgMDAgMDAgNjIgMDAgMDEgQzAgMDAgMDAgMDAgIC4u
Li4uLkAuLmIuLi4uLi4KICAgIDE0NjA6IDAwIDc5IDAwIDExIDE0IDBBIDExIDgyIDBDIDAwIDdG
IDQwIDAwIDAwIDYzIDAwICAueS4uLi4uLi4uLkAuLmMuCiAgICAxNDcwOiAwMSBDMCAwMCAwMCAw
MCAwMCA3OSAwMCAwOCA1RiA1MCA1MyA1MyAxMiA0NiAwNiAgLi4uLi4ueS4uX1BTUy5GLgogICAg
MTQ4MDogMDMgMTIgMjAgMDYgMEMgNjggMTAgMDAgMDAgMEMgQjAgMTMgMDAgMDAgMEMgMDAgIC4u
IC4uaC4uLi4uLi4uLi4KICAgIDE0OTA6IDAwIDAwIDAwIDBDIDAwIDAwIDAwIDAwIDBDIDAwIDAw
IDAwIDAwIDBDIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAxNEEwOiAwMCAwMCAxMiAyMCAw
NiAwQyA5OCAwOCAwMCAwMCAwQyAwNCAwNiAwMCAwMCAwQyAgLi4uIC4uLi4uLi4uLi4uLgogICAg
MTRCMDogMDAgMDAgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMEMgMDEgMDAgMDAgMDAgMEMgMDEgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDE0QzA6IDAwIDAwIDAwIDEyIDIwIDA2IDBDIERDIDA1IDAwIDAw
IDBDIENGIDAzIDAwIDAwICAuLi4uIC4uLi4uLi4uLi4uCiAgICAxNEQwOiAwQyAwMCAwMCAwMCAw
MCAwQyAwMCAwMCAwMCAwMCAwQyAwMiAwMCAwMCAwMCAwQyAgLi4uLi4uLi4uLi4uLi4uLgogICAg
MTRFMDogMDIgMDAgMDAgMDAgMDggNTggNTAgNTMgNTMgMTIgNEIgMEQgMDMgMTIgNDcgMDQgIC4u
Li4uWFBTUy5LLi4uRy4KICAgIDE0RjA6IDA4IDBDIDY4IDEwIDAwIDAwIDBDIEIwIDEzIDAwIDAw
IDBDIDAwIDAwIDAwIDAwICAuLmguLi4uLi4uLi4uLi4uCiAgICAxNTAwOiAwQyAwMCAwMCAwMCAw
MCAxMSAwQiAwQSAwOCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
MTUxMDogMDAgMTEgMEIgMEEgMDggMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMTEgMEIgMEEgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDE1MjA6IDA4IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDExIDBC
IDBBIDA4IDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAxNTMwOiAwMCAwMCAwMCAwMCAw
MCAxMiA0NyAwNCAwOCAwQyA5OCAwOCAwMCAwMCAwQyAwNCAgLi4uLi4uRy4uLi4uLi4uLgogICAg
MTU0MDogMDYgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMTEgMEIgMEEgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDE1NTA6IDA4IDAxIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDExIDBC
IDBBIDA4IDAxIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAxNTYwOiAwMCAwMCAwMCAwMCAw
MCAxMSAwQiAwQSAwOCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
MTU3MDogMDAgMTEgMEIgMEEgMDggMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMTIgNDcgMDQgIC4u
Li4uLi4uLi4uLi4uRy4KICAgIDE1ODA6IDA4IDBDIERDIDA1IDAwIDAwIDBDIENGIDAzIDAwIDAw
IDBDIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAxNTkwOiAwQyAwMCAwMCAwMCAw
MCAxMSAwQiAwQSAwOCAwMiAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
MTVBMDogMDAgMTEgMEIgMEEgMDggMDIgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMTEgMEIgMEEgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDE1QjA6IDA4IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDExIDBC
IDBBIDA4IDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAxNUMwOiAwMCAwMCAwMCAwMCAw
MCAwOCA1RiA1MCA1MyA0NCAxMiAxOCAwMSAxMiAxNSAwNSAgLi4uLi4uX1BTRC4uLi4uLgogICAg
MTVEMDogMEEgMDUgMEEgMDAgMEMgMDMgMDAgMDAgMDAgMEMgRkUgMDAgMDAgMDAgMEMgMDIgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDE1RTA6IDAwIDAwIDAwIDA4IDUwIDUwIDQzIDU2IDBBIDAwIDE0
IDBCIDVGIDUwIDUwIDQzICAuLi4uUFBDVi4uLi5fUFBDCiAgICAxNUYwOiAwMCBBNCA1MCA1MCA0
MyA1NiAwOCA1RiA0MyA1MCA0MyAxMiA0MCAxOSAxNyAwQSAgLi5QUENWLl9DUEMuQC4uLgogICAg
MTYwMDogMTcgMEEgMDMgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgMDggMTggMDQgQjAgMDIgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDE2MTA6IDAxIEMwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0IDBB
IDExIDgyIDBDIDAwIDdGICAuLi4uLi55Li4uLi4uLi4uCiAgICAxNjIwOiAwOCAxMCAwNCBCMCAw
MiAwMSBDMCAwMCAwMCAwMCAwMCA3OSAwMCAxMSAxNCAwQSAgLi4uLi4uLi4uLi55Li4uLgogICAg
MTYzMDogMTEgODIgMEMgMDAgN0YgMDggMDggMDQgQjAgMDIgMDEgQzAgMDAgMDAgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDE2NDA6IDc5IDAwIDExIDE0IDBBIDExIDgyIDBDIDAwIDdGIDA4
IDAwIDA0IEIwIDAyIDAxICB5Li4uLi4uLi4uLi4uLi4uCiAgICAxNjUwOiBDMCAwMCAwMCAwMCAw
MCA3OSAwMCAxMSAxNCAwQSAxMSA4MiAwQyAwMCAwMCAwMCAgLi4uLi55Li4uLi4uLi4uLgogICAg
MTY2MDogMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgIC4u
Li4uLi4uLi55Li4uLi4KICAgIDE2NzA6IDgyIDBDIDAwIDdGIDA4IDEwIDA0IEIzIDAyIDAxIEMw
IDAwIDAwIDAwIDAwIDc5ICAuLi4uLi4uLi4uLi4uLi55CiAgICAxNjgwOiAwMCAxMSAxNCAwQSAx
MSA4MiAwQyAwMCA3RiAwOCAwOCAwNCBCMyAwMiAwMSBDMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
MTY5MDogMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgMDggMDAgIC4u
Li55Li4uLi4uLi4uLi4KICAgIDE2QTA6IDA0IEIzIDAyIDAxIEMwIDAwIDAwIDAwIDAwIDc5IDAw
IDExIDE0IDBBIDExIDgyICAuLi4uLi4uLi55Li4uLi4uCiAgICAxNkIwOiAwQyAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCA3OSAwMCAgLi4uLi4uLi4uLi4uLi55LgogICAg
MTZDMDogMTEgMTQgMEEgMTEgODIgMEMgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDE2RDA6IDAwIDAwIDAwIDc5IDAwIDExIDE0IDBBIDExIDgyIDBD
IDAwIDAwIDAwIDAwIDAwICAuLi55Li4uLi4uLi4uLi4uCiAgICAxNkUwOiAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCA3OSAwMCAxMSAxNCAwQSAxMSA4MiAwQyAgLi4uLi4uLi55Li4uLi4uLgogICAg
MTZGMDogMDAgN0YgNDAgMDAgMDQgRTcgMDAgMDAgMDAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgIC4u
QC4uLi4uLi4uLi55Li4KICAgIDE3MDA6IDE0IDBBIDExIDgyIDBDIDAwIDdGIDQwIDAwIDA0IEU4
IDAwIDAwIDAwIDAwIDAwICAuLi4uLi4uQC4uLi4uLi4uCiAgICAxNzEwOiAwMCAwMCA3OSAwMCAx
MSAxNCAwQSAxMSA4MiAwQyAwMCA3RiAwMiAwMCAwNCBCNCAgLi55Li4uLi4uLi4uLi4uLgogICAg
MTcyMDogMDIgMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgIC4u
Li4uLi55Li4uLi4uLi4KICAgIDE3MzA6IDdGIDAxIDAwIDA0IEIxIDAyIDAxIEMwIDAwIDAwIDAw
IDAwIDc5IDAwIDBDIDAxICAuLi4uLi4uLi4uLi55Li4uCiAgICAxNzQwOiAwMCAwMCAwMCAxMSAx
NCAwQSAxMSA4MiAwQyAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
MTc1MDogMDAgMDAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgIC4u
Li4uLnkuLi4uLi4uLi4KICAgIDE3NjA6IDA4IDE4IDA0IEIzIDAyIDAxIEMwIDAwIDAwIDAwIDAw
IDc5IDAwIDExIDE0IDBBICAuLi4uLi4uLi4uLnkuLi4uCiAgICAxNzcwOiAxMSA4MiAwQyAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
MTc4MDogNzkgMDAgMEMgMjEgMDIgMDAgMDAgMEMgNjkgMTAgMDAgMDAgMTAgNDcgMzUgNUMgIHku
LiEuLi4uaS4uLi5HNVwKICAgIDE3OTA6IDJGIDAzIDVGIDUzIDQyIDVGIDUwIDRDIDU0IDQ2IDQz
IDMwIDMwIDM3IDA4IDVGICAvLl9TQl9QTFRGQzAwNy5fCiAgICAxN0EwOiA1MCA0MyA1NCAxMiAy
QyAwMiAxMSAxNCAwQSAxMSA4MiAwQyAwMCA3RiA0MCAwMCAgUENULiwuLi4uLi4uLi5ALgogICAg
MTdCMDogMDAgNjIgMDAgMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgIC5i
Li4uLi4uLnkuLi4uLi4KICAgIDE3QzA6IDBDIDAwIDdGIDQwIDAwIDAwIDYzIDAwIDAxIEMwIDAw
IDAwIDAwIDAwIDc5IDAwICAuLi5ALi5jLi4uLi4uLnkuCiAgICAxN0QwOiAwOCA1RiA1MCA1MyA1
MyAxMiA0NiAwNiAwMyAxMiAyMCAwNiAwQyA2OCAxMCAwMCAgLl9QU1MuRi4uLiAuLmguLgogICAg
MTdFMDogMDAgMEMgQjAgMTMgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMEMgMDAgMDAgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDE3RjA6IDBDIDAwIDAwIDAwIDAwIDBDIDAwIDAwIDAwIDAwIDEy
IDIwIDA2IDBDIDk4IDA4ICAuLi4uLi4uLi4uLiAuLi4uCiAgICAxODAwOiAwMCAwMCAwQyAwNCAw
NiAwMCAwMCAwQyAwMCAwMCAwMCAwMCAwQyAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
MTgxMDogMDAgMEMgMDEgMDAgMDAgMDAgMEMgMDEgMDAgMDAgMDAgMTIgMjAgMDYgMEMgREMgIC4u
Li4uLi4uLi4uLiAuLi4KICAgIDE4MjA6IDA1IDAwIDAwIDBDIENGIDAzIDAwIDAwIDBDIDAwIDAw
IDAwIDAwIDBDIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAxODMwOiAwMCAwMCAwQyAwMiAw
MCAwMCAwMCAwQyAwMiAwMCAwMCAwMCAwOCA1OCA1MCA1MyAgLi4uLi4uLi4uLi4uLlhQUwogICAg
MTg0MDogNTMgMTIgNEIgMEQgMDMgMTIgNDcgMDQgMDggMEMgNjggMTAgMDAgMDAgMEMgQjAgIFMu
Sy4uLkcuLi5oLi4uLi4KICAgIDE4NTA6IDEzIDAwIDAwIDBDIDAwIDAwIDAwIDAwIDBDIDAwIDAw
IDAwIDAwIDExIDBCIDBBICAuLi4uLi4uLi4uLi4uLi4uCiAgICAxODYwOiAwOCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAxMSAwQiAwQSAwOCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
MTg3MDogMDAgMDAgMDAgMDAgMDAgMTEgMEIgMEEgMDggMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDE4ODA6IDAwIDExIDBCIDBBIDA4IDAwIDAwIDAwIDAwIDAwIDAw
IDAwIDAwIDEyIDQ3IDA0ICAuLi4uLi4uLi4uLi4uLkcuCiAgICAxODkwOiAwOCAwQyA5OCAwOCAw
MCAwMCAwQyAwNCAwNiAwMCAwMCAwQyAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
MThBMDogMEMgMDAgMDAgMDAgMDAgMTEgMEIgMEEgMDggMDEgMDAgMDAgMDAgMDAgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDE4QjA6IDAwIDExIDBCIDBBIDA4IDAxIDAwIDAwIDAwIDAwIDAw
IDAwIDAwIDExIDBCIDBBICAuLi4uLi4uLi4uLi4uLi4uCiAgICAxOEMwOiAwOCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAxMSAwQiAwQSAwOCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
MThEMDogMDAgMDAgMDAgMDAgMDAgMTIgNDcgMDQgMDggMEMgREMgMDUgMDAgMDAgMEMgQ0YgIC4u
Li4uLkcuLi4uLi4uLi4KICAgIDE4RTA6IDAzIDAwIDAwIDBDIDAwIDAwIDAwIDAwIDBDIDAwIDAw
IDAwIDAwIDExIDBCIDBBICAuLi4uLi4uLi4uLi4uLi4uCiAgICAxOEYwOiAwOCAwMiAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAxMSAwQiAwQSAwOCAwMiAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
MTkwMDogMDAgMDAgMDAgMDAgMDAgMTEgMEIgMEEgMDggMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDE5MTA6IDAwIDExIDBCIDBBIDA4IDAwIDAwIDAwIDAwIDAwIDAw
IDAwIDAwIDA4IDVGIDUwICAuLi4uLi4uLi4uLi4uLl9QCiAgICAxOTIwOiA1MyA0NCAxMiAxOCAw
MSAxMiAxNSAwNSAwQSAwNSAwQSAwMCAwQyAwMyAwMCAwMCAgU0QuLi4uLi4uLi4uLi4uLgogICAg
MTkzMDogMDAgMEMgRkUgMDAgMDAgMDAgMEMgMDIgMDAgMDAgMDAgMDggNTAgNTAgNDMgNTYgIC4u
Li4uLi4uLi4uLlBQQ1YKICAgIDE5NDA6IDBBIDAwIDE0IDBCIDVGIDUwIDUwIDQzIDAwIEE0IDUw
IDUwIDQzIDU2IDA4IDVGICAuLi4uX1BQQy4uUFBDVi5fCiAgICAxOTUwOiA0MyA1MCA0MyAxMiA0
MCAxOSAxNyAwQSAxNyAwQSAwMyAxMSAxNCAwQSAxMSA4MiAgQ1BDLkAuLi4uLi4uLi4uLgogICAg
MTk2MDogMEMgMDAgN0YgMDggMTggMDQgQjAgMDIgMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgIC4u
Li4uLi4uLi4uLi4ueS4KICAgIDE5NzA6IDExIDE0IDBBIDExIDgyIDBDIDAwIDdGIDA4IDEwIDA0
IEIwIDAyIDAxIEMwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAxOTgwOiAwMCAwMCAwMCA3OSAw
MCAxMSAxNCAwQSAxMSA4MiAwQyAwMCA3RiAwOCAwOCAwNCAgLi4ueS4uLi4uLi4uLi4uLgogICAg
MTk5MDogQjAgMDIgMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgIC4u
Li4uLi4ueS4uLi4uLi4KICAgIDE5QTA6IDAwIDdGIDA4IDAwIDA0IEIwIDAyIDAxIEMwIDAwIDAw
IDAwIDAwIDc5IDAwIDExICAuLi4uLi4uLi4uLi4ueS4uCiAgICAxOUIwOiAxNCAwQSAxMSA4MiAw
QyAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
MTlDMDogMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgMDggMTAgMDQgQjMgIC4u
eS4uLi4uLi4uLi4uLi4KICAgIDE5RDA6IDAyIDAxIEMwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0
IDBBIDExIDgyIDBDIDAwICAuLi4uLi4ueS4uLi4uLi4uCiAgICAxOUUwOiA3RiAwOCAwOCAwNCBC
MyAwMiAwMSBDMCAwMCAwMCAwMCAwMCA3OSAwMCAxMSAxNCAgLi4uLi4uLi4uLi4ueS4uLgogICAg
MTlGMDogMEEgMTEgODIgMEMgMDAgN0YgMDggMDAgMDQgQjMgMDIgMDEgQzAgMDAgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDFBMDA6IDAwIDc5IDAwIDExIDE0IDBBIDExIDgyIDBDIDAwIDAw
IDAwIDAwIDAwIDAwIDAwICAueS4uLi4uLi4uLi4uLi4uCiAgICAxQTEwOiAwMCAwMCAwMCAwMCAw
MCAwMCA3OSAwMCAxMSAxNCAwQSAxMSA4MiAwQyAwMCAwMCAgLi4uLi4ueS4uLi4uLi4uLgogICAg
MUEyMDogMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgIC4u
Li4uLi4uLi4ueS4uLi4KICAgIDFBMzA6IDExIDgyIDBDIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAw
IDAwIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAxQTQwOiA3OSAwMCAxMSAxNCAw
QSAxMSA4MiAwQyAwMCA3RiA0MCAwMCAwNCBFNyAwMCAwMCAgeS4uLi4uLi4uLkAuLi4uLgogICAg
MUE1MDogMDAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgNDAgIC4u
Li4ueS4uLi4uLi4uLkAKICAgIDFBNjA6IDAwIDA0IEU4IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDc5
IDAwIDExIDE0IDBBIDExICAuLi4uLi4uLi4ueS4uLi4uCiAgICAxQTcwOiA4MiAwQyAwMCA3RiAw
MiAwMCAwNCBCNCAwMiAwMSBDMCAwMCAwMCAwMCAwMCA3OSAgLi4uLi4uLi4uLi4uLi4ueQogICAg
MUE4MDogMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgMDEgMDAgMDQgQjEgMDIgMDEgQzAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDFBOTA6IDAwIDAwIDAwIDAwIDc5IDAwIDBDIDAxIDAwIDAwIDAw
IDExIDE0IDBBIDExIDgyICAuLi4ueS4uLi4uLi4uLi4uCiAgICAxQUEwOiAwQyAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCA3OSAwMCAgLi4uLi4uLi4uLi4uLi55LgogICAg
MUFCMDogMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgMDggMTggMDQgQjMgMDIgMDEgQzAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDFBQzA6IDAwIDAwIDAwIDc5IDAwIDExIDE0IDBBIDExIDgyIDBD
IDAwIDAwIDAwIDAwIDAwICAuLi55Li4uLi4uLi4uLi4uCiAgICAxQUQwOiAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCA3OSAwMCAwQyAyMSAwMiAwMCAwMCAwQyAgLi4uLi4uLi55Li4hLi4uLgogICAg
MUFFMDogNjkgMTAgMDAgMDAgMTAgNDcgMzUgNUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAgNEMgIGku
Li4uRzVcLy5fU0JfUEwKICAgIDFBRjA6IDU0IDQ2IDQzIDMwIDMwIDM4IDA4IDVGIDUwIDQzIDU0
IDEyIDJDIDAyIDExIDE0ICBURkMwMDguX1BDVC4sLi4uCiAgICAxQjAwOiAwQSAxMSA4MiAwQyAw
MCA3RiA0MCAwMCAwMCA2MiAwMCAwMSBDMCAwMCAwMCAwMCAgLi4uLi4uQC4uYi4uLi4uLgogICAg
MUIxMDogMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgNDAgMDAgMDAgNjMgMDAgIC55
Li4uLi4uLi4uQC4uYy4KICAgIDFCMjA6IDAxIEMwIDAwIDAwIDAwIDAwIDc5IDAwIDA4IDVGIDUw
IDUzIDUzIDEyIDQ2IDA2ICAuLi4uLi55Li5fUFNTLkYuCiAgICAxQjMwOiAwMyAxMiAyMCAwNiAw
QyA2OCAxMCAwMCAwMCAwQyBCMCAxMyAwMCAwMCAwQyAwMCAgLi4gLi5oLi4uLi4uLi4uLgogICAg
MUI0MDogMDAgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMEMgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDFCNTA6IDAwIDAwIDEyIDIwIDA2IDBDIDk4IDA4IDAwIDAwIDBD
IDA0IDA2IDAwIDAwIDBDICAuLi4gLi4uLi4uLi4uLi4uCiAgICAxQjYwOiAwMCAwMCAwMCAwMCAw
QyAwMCAwMCAwMCAwMCAwQyAwMSAwMCAwMCAwMCAwQyAwMSAgLi4uLi4uLi4uLi4uLi4uLgogICAg
MUI3MDogMDAgMDAgMDAgMTIgMjAgMDYgMEMgREMgMDUgMDAgMDAgMEMgQ0YgMDMgMDAgMDAgIC4u
Li4gLi4uLi4uLi4uLi4KICAgIDFCODA6IDBDIDAwIDAwIDAwIDAwIDBDIDAwIDAwIDAwIDAwIDBD
IDAyIDAwIDAwIDAwIDBDICAuLi4uLi4uLi4uLi4uLi4uCiAgICAxQjkwOiAwMiAwMCAwMCAwMCAw
OCA1OCA1MCA1MyA1MyAxMiA0QiAwRCAwMyAxMiA0NyAwNCAgLi4uLi5YUFNTLksuLi5HLgogICAg
MUJBMDogMDggMEMgNjggMTAgMDAgMDAgMEMgQjAgMTMgMDAgMDAgMEMgMDAgMDAgMDAgMDAgIC4u
aC4uLi4uLi4uLi4uLi4KICAgIDFCQjA6IDBDIDAwIDAwIDAwIDAwIDExIDBCIDBBIDA4IDAwIDAw
IDAwIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAxQkMwOiAwMCAxMSAwQiAwQSAw
OCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAxMSAwQiAwQSAgLi4uLi4uLi4uLi4uLi4uLgogICAg
MUJEMDogMDggMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMTEgMEIgMEEgMDggMDAgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDFCRTA6IDAwIDAwIDAwIDAwIDAwIDEyIDQ3IDA0IDA4IDBDIDk4
IDA4IDAwIDAwIDBDIDA0ICAuLi4uLi5HLi4uLi4uLi4uCiAgICAxQkYwOiAwNiAwMCAwMCAwQyAw
MCAwMCAwMCAwMCAwQyAwMCAwMCAwMCAwMCAxMSAwQiAwQSAgLi4uLi4uLi4uLi4uLi4uLgogICAg
MUMwMDogMDggMDEgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMTEgMEIgMEEgMDggMDEgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDFDMTA6IDAwIDAwIDAwIDAwIDAwIDExIDBCIDBBIDA4IDAwIDAw
IDAwIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAxQzIwOiAwMCAxMSAwQiAwQSAw
OCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAxMiA0NyAwNCAgLi4uLi4uLi4uLi4uLi5HLgogICAg
MUMzMDogMDggMEMgREMgMDUgMDAgMDAgMEMgQ0YgMDMgMDAgMDAgMEMgMDAgMDAgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDFDNDA6IDBDIDAwIDAwIDAwIDAwIDExIDBCIDBBIDA4IDAyIDAw
IDAwIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAxQzUwOiAwMCAxMSAwQiAwQSAw
OCAwMiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAxMSAwQiAwQSAgLi4uLi4uLi4uLi4uLi4uLgogICAg
MUM2MDogMDggMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMTEgMEIgMEEgMDggMDAgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDFDNzA6IDAwIDAwIDAwIDAwIDAwIDA4IDVGIDUwIDUzIDQ0IDEy
IDE4IDAxIDEyIDE1IDA1ICAuLi4uLi5fUFNELi4uLi4uCiAgICAxQzgwOiAwQSAwNSAwQSAwMCAw
QyAwNCAwMCAwMCAwMCAwQyBGRSAwMCAwMCAwMCAwQyAwMiAgLi4uLi4uLi4uLi4uLi4uLgogICAg
MUM5MDogMDAgMDAgMDAgMDggNTAgNTAgNDMgNTYgMEEgMDAgMTQgMEIgNUYgNTAgNTAgNDMgIC4u
Li5QUENWLi4uLl9QUEMKICAgIDFDQTA6IDAwIEE0IDUwIDUwIDQzIDU2IDA4IDVGIDQzIDUwIDQz
IDEyIDQwIDE5IDE3IDBBICAuLlBQQ1YuX0NQQy5ALi4uCiAgICAxQ0IwOiAxNyAwQSAwMyAxMSAx
NCAwQSAxMSA4MiAwQyAwMCA3RiAwOCAxOCAwNCBCMCAwMiAgLi4uLi4uLi4uLi4uLi4uLgogICAg
MUNDMDogMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgIC4u
Li4uLnkuLi4uLi4uLi4KICAgIDFDRDA6IDA4IDEwIDA0IEIwIDAyIDAxIEMwIDAwIDAwIDAwIDAw
IDc5IDAwIDExIDE0IDBBICAuLi4uLi4uLi4uLnkuLi4uCiAgICAxQ0UwOiAxMSA4MiAwQyAwMCA3
RiAwOCAwOCAwNCBCMCAwMiAwMSBDMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
MUNGMDogNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgMDggMDAgMDQgQjAgMDIgMDEgIHku
Li4uLi4uLi4uLi4uLi4KICAgIDFEMDA6IEMwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0IDBBIDEx
IDgyIDBDIDAwIDAwIDAwICAuLi4uLnkuLi4uLi4uLi4uCiAgICAxRDEwOiAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCA3OSAwMCAxMSAxNCAwQSAxMSAgLi4uLi4uLi4uLnkuLi4uLgogICAg
MUQyMDogODIgMEMgMDAgN0YgMDggMTAgMDQgQjMgMDIgMDEgQzAgMDAgMDAgMDAgMDAgNzkgIC4u
Li4uLi4uLi4uLi4uLnkKICAgIDFEMzA6IDAwIDExIDE0IDBBIDExIDgyIDBDIDAwIDdGIDA4IDA4
IDA0IEIzIDAyIDAxIEMwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAxRDQwOiAwMCAwMCAwMCAwMCA3
OSAwMCAxMSAxNCAwQSAxMSA4MiAwQyAwMCA3RiAwOCAwMCAgLi4uLnkuLi4uLi4uLi4uLgogICAg
MUQ1MDogMDQgQjMgMDIgMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgIC4u
Li4uLi4uLnkuLi4uLi4KICAgIDFENjA6IDBDIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAw
IDAwIDAwIDAwIDc5IDAwICAuLi4uLi4uLi4uLi4uLnkuCiAgICAxRDcwOiAxMSAxNCAwQSAxMSA4
MiAwQyAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
MUQ4MDogMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgMDAgMDAgMDAgMDAgIC4u
LnkuLi4uLi4uLi4uLi4KICAgIDFEOTA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDc5IDAwIDEx
IDE0IDBBIDExIDgyIDBDICAuLi4uLi4uLnkuLi4uLi4uCiAgICAxREEwOiAwMCA3RiA0MCAwMCAw
NCBFNyAwMCAwMCAwMCAwMCAwMCAwMCAwMCA3OSAwMCAxMSAgLi5ALi4uLi4uLi4uLnkuLgogICAg
MURCMDogMTQgMEEgMTEgODIgMEMgMDAgN0YgNDAgMDAgMDQgRTggMDAgMDAgMDAgMDAgMDAgIC4u
Li4uLi5ALi4uLi4uLi4KICAgIDFEQzA6IDAwIDAwIDc5IDAwIDExIDE0IDBBIDExIDgyIDBDIDAw
IDdGIDAyIDAwIDA0IEI0ICAuLnkuLi4uLi4uLi4uLi4uCiAgICAxREQwOiAwMiAwMSBDMCAwMCAw
MCAwMCAwMCA3OSAwMCAxMSAxNCAwQSAxMSA4MiAwQyAwMCAgLi4uLi4uLnkuLi4uLi4uLgogICAg
MURFMDogN0YgMDEgMDAgMDQgQjEgMDIgMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgMEMgMDEgIC4u
Li4uLi4uLi4uLnkuLi4KICAgIDFERjA6IDAwIDAwIDAwIDExIDE0IDBBIDExIDgyIDBDIDAwIDAw
IDAwIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAxRTAwOiAwMCAwMCAwMCAwMCAw
MCAwMCA3OSAwMCAxMSAxNCAwQSAxMSA4MiAwQyAwMCA3RiAgLi4uLi4ueS4uLi4uLi4uLgogICAg
MUUxMDogMDggMTggMDQgQjMgMDIgMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgIC4u
Li4uLi4uLi4ueS4uLi4KICAgIDFFMjA6IDExIDgyIDBDIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAw
IDAwIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAxRTMwOiA3OSAwMCAwQyAyMSAw
MiAwMCAwMCAwQyA2OSAxMCAwMCAwMCAxMCA0NyAzNSA1QyAgeS4uIS4uLi5pLi4uLkc1XAogICAg
MUU0MDogMkYgMDMgNUYgNTMgNDIgNUYgNTAgNEMgNTQgNDYgNDMgMzAgMzAgMzkgMDggNUYgIC8u
X1NCX1BMVEZDMDA5Ll8KICAgIDFFNTA6IDUwIDQzIDU0IDEyIDJDIDAyIDExIDE0IDBBIDExIDgy
IDBDIDAwIDdGIDQwIDAwICBQQ1QuLC4uLi4uLi4uLkAuCiAgICAxRTYwOiAwMCA2MiAwMCAwMSBD
MCAwMCAwMCAwMCAwMCA3OSAwMCAxMSAxNCAwQSAxMSA4MiAgLmIuLi4uLi4ueS4uLi4uLgogICAg
MUU3MDogMEMgMDAgN0YgNDAgMDAgMDAgNjMgMDAgMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgIC4u
LkAuLmMuLi4uLi4ueS4KICAgIDFFODA6IDA4IDVGIDUwIDUzIDUzIDEyIDQ2IDA2IDAzIDEyIDIw
IDA2IDBDIDY4IDEwIDAwICAuX1BTUy5GLi4uIC4uaC4uCiAgICAxRTkwOiAwMCAwQyBCMCAxMyAw
MCAwMCAwQyAwMCAwMCAwMCAwMCAwQyAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
MUVBMDogMEMgMDAgMDAgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMTIgMjAgMDYgMEMgOTggMDggIC4u
Li4uLi4uLi4uIC4uLi4KICAgIDFFQjA6IDAwIDAwIDBDIDA0IDA2IDAwIDAwIDBDIDAwIDAwIDAw
IDAwIDBDIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAxRUMwOiAwMCAwQyAwMSAwMCAw
MCAwMCAwQyAwMSAwMCAwMCAwMCAxMiAyMCAwNiAwQyBEQyAgLi4uLi4uLi4uLi4uIC4uLgogICAg
MUVEMDogMDUgMDAgMDAgMEMgQ0YgMDMgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMEMgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDFFRTA6IDAwIDAwIDBDIDAyIDAwIDAwIDAwIDBDIDAyIDAwIDAw
IDAwIDA4IDU4IDUwIDUzICAuLi4uLi4uLi4uLi4uWFBTCiAgICAxRUYwOiA1MyAxMiA0QiAwRCAw
MyAxMiA0NyAwNCAwOCAwQyA2OCAxMCAwMCAwMCAwQyBCMCAgUy5LLi4uRy4uLmguLi4uLgogICAg
MUYwMDogMTMgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMTEgMEIgMEEgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDFGMTA6IDA4IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDExIDBC
IDBBIDA4IDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAxRjIwOiAwMCAwMCAwMCAwMCAw
MCAxMSAwQiAwQSAwOCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
MUYzMDogMDAgMTEgMEIgMEEgMDggMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMTIgNDcgMDQgIC4u
Li4uLi4uLi4uLi4uRy4KICAgIDFGNDA6IDA4IDBDIDk4IDA4IDAwIDAwIDBDIDA0IDA2IDAwIDAw
IDBDIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAxRjUwOiAwQyAwMCAwMCAwMCAw
MCAxMSAwQiAwQSAwOCAwMSAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
MUY2MDogMDAgMTEgMEIgMEEgMDggMDEgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMTEgMEIgMEEgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDFGNzA6IDA4IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDExIDBC
IDBBIDA4IDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAxRjgwOiAwMCAwMCAwMCAwMCAw
MCAxMiA0NyAwNCAwOCAwQyBEQyAwNSAwMCAwMCAwQyBDRiAgLi4uLi4uRy4uLi4uLi4uLgogICAg
MUY5MDogMDMgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMTEgMEIgMEEgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDFGQTA6IDA4IDAyIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDExIDBC
IDBBIDA4IDAyIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAxRkIwOiAwMCAwMCAwMCAwMCAw
MCAxMSAwQiAwQSAwOCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
MUZDMDogMDAgMTEgMEIgMEEgMDggMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDggNUYgNTAgIC4u
Li4uLi4uLi4uLi4uX1AKICAgIDFGRDA6IDUzIDQ0IDEyIDE4IDAxIDEyIDE1IDA1IDBBIDA1IDBB
IDAwIDBDIDA0IDAwIDAwICBTRC4uLi4uLi4uLi4uLi4uCiAgICAxRkUwOiAwMCAwQyBGRSAwMCAw
MCAwMCAwQyAwMiAwMCAwMCAwMCAwOCA1MCA1MCA0MyA1NiAgLi4uLi4uLi4uLi4uUFBDVgogICAg
MUZGMDogMEEgMDAgMTQgMEIgNUYgNTAgNTAgNDMgMDAgQTQgNTAgNTAgNDMgNTYgMDggNUYgIC4u
Li5fUFBDLi5QUENWLl8KICAgIDIwMDA6IDQzIDUwIDQzIDEyIDQwIDE5IDE3IDBBIDE3IDBBIDAz
IDExIDE0IDBBIDExIDgyICBDUEMuQC4uLi4uLi4uLi4uCiAgICAyMDEwOiAwQyAwMCA3RiAwOCAx
OCAwNCBCMCAwMiAwMSBDMCAwMCAwMCAwMCAwMCA3OSAwMCAgLi4uLi4uLi4uLi4uLi55LgogICAg
MjAyMDogMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgMDggMTAgMDQgQjAgMDIgMDEgQzAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDIwMzA6IDAwIDAwIDAwIDc5IDAwIDExIDE0IDBBIDExIDgyIDBD
IDAwIDdGIDA4IDA4IDA0ICAuLi55Li4uLi4uLi4uLi4uCiAgICAyMDQwOiBCMCAwMiAwMSBDMCAw
MCAwMCAwMCAwMCA3OSAwMCAxMSAxNCAwQSAxMSA4MiAwQyAgLi4uLi4uLi55Li4uLi4uLgogICAg
MjA1MDogMDAgN0YgMDggMDAgMDQgQjAgMDIgMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgIC4u
Li4uLi4uLi4uLi55Li4KICAgIDIwNjA6IDE0IDBBIDExIDgyIDBDIDAwIDAwIDAwIDAwIDAwIDAw
IDAwIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAyMDcwOiAwMCAwMCA3OSAwMCAx
MSAxNCAwQSAxMSA4MiAwQyAwMCA3RiAwOCAxMCAwNCBCMyAgLi55Li4uLi4uLi4uLi4uLgogICAg
MjA4MDogMDIgMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgIC4u
Li4uLi55Li4uLi4uLi4KICAgIDIwOTA6IDdGIDA4IDA4IDA0IEIzIDAyIDAxIEMwIDAwIDAwIDAw
IDAwIDc5IDAwIDExIDE0ICAuLi4uLi4uLi4uLi55Li4uCiAgICAyMEEwOiAwQSAxMSA4MiAwQyAw
MCA3RiAwOCAwMCAwNCBCMyAwMiAwMSBDMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
MjBCMDogMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC55
Li4uLi4uLi4uLi4uLi4KICAgIDIwQzA6IDAwIDAwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0IDBB
IDExIDgyIDBDIDAwIDAwICAuLi4uLi55Li4uLi4uLi4uCiAgICAyMEQwOiAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAwMCA3OSAwMCAxMSAxNCAwQSAgLi4uLi4uLi4uLi55Li4uLgogICAg
MjBFMDogMTEgODIgMEMgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDIwRjA6IDc5IDAwIDExIDE0IDBBIDExIDgyIDBDIDAwIDdGIDQw
IDAwIDA0IEU3IDAwIDAwICB5Li4uLi4uLi4uQC4uLi4uCiAgICAyMTAwOiAwMCAwMCAwMCAwMCAw
MCA3OSAwMCAxMSAxNCAwQSAxMSA4MiAwQyAwMCA3RiA0MCAgLi4uLi55Li4uLi4uLi4uQAogICAg
MjExMDogMDAgMDQgRTggMDAgMDAgMDAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgIC4u
Li4uLi4uLi55Li4uLi4KICAgIDIxMjA6IDgyIDBDIDAwIDdGIDAyIDAwIDA0IEI0IDAyIDAxIEMw
IDAwIDAwIDAwIDAwIDc5ICAuLi4uLi4uLi4uLi4uLi55CiAgICAyMTMwOiAwMCAxMSAxNCAwQSAx
MSA4MiAwQyAwMCA3RiAwMSAwMCAwNCBCMSAwMiAwMSBDMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
MjE0MDogMDAgMDAgMDAgMDAgNzkgMDAgMEMgMDEgMDAgMDAgMDAgMTEgMTQgMEEgMTEgODIgIC4u
Li55Li4uLi4uLi4uLi4KICAgIDIxNTA6IDBDIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAw
IDAwIDAwIDAwIDc5IDAwICAuLi4uLi4uLi4uLi4uLnkuCiAgICAyMTYwOiAxMSAxNCAwQSAxMSA4
MiAwQyAwMCA3RiAwOCAxOCAwNCBCMyAwMiAwMSBDMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
MjE3MDogMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgMDAgMDAgMDAgMDAgIC4u
LnkuLi4uLi4uLi4uLi4KICAgIDIxODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDc5IDAwIDBD
IDIxIDAyIDAwIDAwIDBDICAuLi4uLi4uLnkuLiEuLi4uCiAgICAyMTkwOiA2OSAxMCAwMCAwMCAx
MCA0NyAzNSA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0QyAgaS4uLi5HNVwvLl9TQl9QTAogICAg
MjFBMDogNTQgNDYgNDMgMzAgMzAgNDEgMDggNUYgNTAgNDMgNTQgMTIgMkMgMDIgMTEgMTQgIFRG
QzAwQS5fUENULiwuLi4KICAgIDIxQjA6IDBBIDExIDgyIDBDIDAwIDdGIDQwIDAwIDAwIDYyIDAw
IDAxIEMwIDAwIDAwIDAwICAuLi4uLi5ALi5iLi4uLi4uCiAgICAyMUMwOiAwMCA3OSAwMCAxMSAx
NCAwQSAxMSA4MiAwQyAwMCA3RiA0MCAwMCAwMCA2MyAwMCAgLnkuLi4uLi4uLi5ALi5jLgogICAg
MjFEMDogMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgMDggNUYgNTAgNTMgNTMgMTIgNDYgMDYgIC4u
Li4uLnkuLl9QU1MuRi4KICAgIDIxRTA6IDAzIDEyIDIwIDA2IDBDIDY4IDEwIDAwIDAwIDBDIEIw
IDEzIDAwIDAwIDBDIDAwICAuLiAuLmguLi4uLi4uLi4uCiAgICAyMUYwOiAwMCAwMCAwMCAwQyAw
MCAwMCAwMCAwMCAwQyAwMCAwMCAwMCAwMCAwQyAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
MjIwMDogMDAgMDAgMTIgMjAgMDYgMEMgOTggMDggMDAgMDAgMEMgMDQgMDYgMDAgMDAgMEMgIC4u
LiAuLi4uLi4uLi4uLi4KICAgIDIyMTA6IDAwIDAwIDAwIDAwIDBDIDAwIDAwIDAwIDAwIDBDIDAx
IDAwIDAwIDAwIDBDIDAxICAuLi4uLi4uLi4uLi4uLi4uCiAgICAyMjIwOiAwMCAwMCAwMCAxMiAy
MCAwNiAwQyBEQyAwNSAwMCAwMCAwQyBDRiAwMyAwMCAwMCAgLi4uLiAuLi4uLi4uLi4uLgogICAg
MjIzMDogMEMgMDAgMDAgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMEMgMDIgMDAgMDAgMDAgMEMgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDIyNDA6IDAyIDAwIDAwIDAwIDA4IDU4IDUwIDUzIDUzIDEyIDRC
IDBEIDAzIDEyIDQ3IDA0ICAuLi4uLlhQU1MuSy4uLkcuCiAgICAyMjUwOiAwOCAwQyA2OCAxMCAw
MCAwMCAwQyBCMCAxMyAwMCAwMCAwQyAwMCAwMCAwMCAwMCAgLi5oLi4uLi4uLi4uLi4uLgogICAg
MjI2MDogMEMgMDAgMDAgMDAgMDAgMTEgMEIgMEEgMDggMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDIyNzA6IDAwIDExIDBCIDBBIDA4IDAwIDAwIDAwIDAwIDAwIDAw
IDAwIDAwIDExIDBCIDBBICAuLi4uLi4uLi4uLi4uLi4uCiAgICAyMjgwOiAwOCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAxMSAwQiAwQSAwOCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
MjI5MDogMDAgMDAgMDAgMDAgMDAgMTIgNDcgMDQgMDggMEMgOTggMDggMDAgMDAgMEMgMDQgIC4u
Li4uLkcuLi4uLi4uLi4KICAgIDIyQTA6IDA2IDAwIDAwIDBDIDAwIDAwIDAwIDAwIDBDIDAwIDAw
IDAwIDAwIDExIDBCIDBBICAuLi4uLi4uLi4uLi4uLi4uCiAgICAyMkIwOiAwOCAwMSAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAxMSAwQiAwQSAwOCAwMSAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
MjJDMDogMDAgMDAgMDAgMDAgMDAgMTEgMEIgMEEgMDggMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDIyRDA6IDAwIDExIDBCIDBBIDA4IDAwIDAwIDAwIDAwIDAwIDAw
IDAwIDAwIDEyIDQ3IDA0ICAuLi4uLi4uLi4uLi4uLkcuCiAgICAyMkUwOiAwOCAwQyBEQyAwNSAw
MCAwMCAwQyBDRiAwMyAwMCAwMCAwQyAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
MjJGMDogMEMgMDAgMDAgMDAgMDAgMTEgMEIgMEEgMDggMDIgMDAgMDAgMDAgMDAgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDIzMDA6IDAwIDExIDBCIDBBIDA4IDAyIDAwIDAwIDAwIDAwIDAw
IDAwIDAwIDExIDBCIDBBICAuLi4uLi4uLi4uLi4uLi4uCiAgICAyMzEwOiAwOCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAxMSAwQiAwQSAwOCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
MjMyMDogMDAgMDAgMDAgMDAgMDAgMDggNUYgNTAgNTMgNDQgMTIgMTggMDEgMTIgMTUgMDUgIC4u
Li4uLl9QU0QuLi4uLi4KICAgIDIzMzA6IDBBIDA1IDBBIDAwIDBDIDA1IDAwIDAwIDAwIDBDIEZF
IDAwIDAwIDAwIDBDIDAyICAuLi4uLi4uLi4uLi4uLi4uCiAgICAyMzQwOiAwMCAwMCAwMCAwOCA1
MCA1MCA0MyA1NiAwQSAwMCAxNCAwQiA1RiA1MCA1MCA0MyAgLi4uLlBQQ1YuLi4uX1BQQwogICAg
MjM1MDogMDAgQTQgNTAgNTAgNDMgNTYgMDggNUYgNDMgNTAgNDMgMTIgNDAgMTkgMTcgMEEgIC4u
UFBDVi5fQ1BDLkAuLi4KICAgIDIzNjA6IDE3IDBBIDAzIDExIDE0IDBBIDExIDgyIDBDIDAwIDdG
IDA4IDE4IDA0IEIwIDAyICAuLi4uLi4uLi4uLi4uLi4uCiAgICAyMzcwOiAwMSBDMCAwMCAwMCAw
MCAwMCA3OSAwMCAxMSAxNCAwQSAxMSA4MiAwQyAwMCA3RiAgLi4uLi4ueS4uLi4uLi4uLgogICAg
MjM4MDogMDggMTAgMDQgQjAgMDIgMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgIC4u
Li4uLi4uLi4ueS4uLi4KICAgIDIzOTA6IDExIDgyIDBDIDAwIDdGIDA4IDA4IDA0IEIwIDAyIDAx
IEMwIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAyM0EwOiA3OSAwMCAxMSAxNCAw
QSAxMSA4MiAwQyAwMCA3RiAwOCAwMCAwNCBCMCAwMiAwMSAgeS4uLi4uLi4uLi4uLi4uLgogICAg
MjNCMDogQzAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgMDAgMDAgIC4u
Li4ueS4uLi4uLi4uLi4KICAgIDIzQzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDc5
IDAwIDExIDE0IDBBIDExICAuLi4uLi4uLi4ueS4uLi4uCiAgICAyM0QwOiA4MiAwQyAwMCA3RiAw
OCAxMCAwNCBCMyAwMiAwMSBDMCAwMCAwMCAwMCAwMCA3OSAgLi4uLi4uLi4uLi4uLi4ueQogICAg
MjNFMDogMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgMDggMDggMDQgQjMgMDIgMDEgQzAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDIzRjA6IDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0IDBBIDExIDgy
IDBDIDAwIDdGIDA4IDAwICAuLi4ueS4uLi4uLi4uLi4uCiAgICAyNDAwOiAwNCBCMyAwMiAwMSBD
MCAwMCAwMCAwMCAwMCA3OSAwMCAxMSAxNCAwQSAxMSA4MiAgLi4uLi4uLi4ueS4uLi4uLgogICAg
MjQxMDogMEMgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgNzkgMDAgIC4u
Li4uLi4uLi4uLi4ueS4KICAgIDI0MjA6IDExIDE0IDBBIDExIDgyIDBDIDAwIDAwIDAwIDAwIDAw
IDAwIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAyNDMwOiAwMCAwMCAwMCA3OSAw
MCAxMSAxNCAwQSAxMSA4MiAwQyAwMCAwMCAwMCAwMCAwMCAgLi4ueS4uLi4uLi4uLi4uLgogICAg
MjQ0MDogMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgIC4u
Li4uLi4ueS4uLi4uLi4KICAgIDI0NTA6IDAwIDdGIDQwIDAwIDA0IEU3IDAwIDAwIDAwIDAwIDAw
IDAwIDAwIDc5IDAwIDExICAuLkAuLi4uLi4uLi4ueS4uCiAgICAyNDYwOiAxNCAwQSAxMSA4MiAw
QyAwMCA3RiA0MCAwMCAwNCBFOCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLkAuLi4uLi4uLgogICAg
MjQ3MDogMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgMDIgMDAgMDQgQjQgIC4u
eS4uLi4uLi4uLi4uLi4KICAgIDI0ODA6IDAyIDAxIEMwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0
IDBBIDExIDgyIDBDIDAwICAuLi4uLi4ueS4uLi4uLi4uCiAgICAyNDkwOiA3RiAwMSAwMCAwNCBC
MSAwMiAwMSBDMCAwMCAwMCAwMCAwMCA3OSAwMCAwQyAwMSAgLi4uLi4uLi4uLi4ueS4uLgogICAg
MjRBMDogMDAgMDAgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDI0QjA6IDAwIDAwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0IDBB
IDExIDgyIDBDIDAwIDdGICAuLi4uLi55Li4uLi4uLi4uCiAgICAyNEMwOiAwOCAxOCAwNCBCMyAw
MiAwMSBDMCAwMCAwMCAwMCAwMCA3OSAwMCAxMSAxNCAwQSAgLi4uLi4uLi4uLi55Li4uLgogICAg
MjREMDogMTEgODIgMEMgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDI0RTA6IDc5IDAwIDBDIDIxIDAyIDAwIDAwIDBDIDY5IDEwIDAw
IDAwIDEwIDQ3IDM1IDVDICB5Li4hLi4uLmkuLi4uRzVcCiAgICAyNEYwOiAyRiAwMyA1RiA1MyA0
MiA1RiA1MCA0QyA1NCA0NiA0MyAzMCAzMCA0MiAwOCA1RiAgLy5fU0JfUExURkMwMEIuXwogICAg
MjUwMDogNTAgNDMgNTQgMTIgMkMgMDIgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgNDAgMDAgIFBD
VC4sLi4uLi4uLi4uQC4KICAgIDI1MTA6IDAwIDYyIDAwIDAxIEMwIDAwIDAwIDAwIDAwIDc5IDAw
IDExIDE0IDBBIDExIDgyICAuYi4uLi4uLi55Li4uLi4uCiAgICAyNTIwOiAwQyAwMCA3RiA0MCAw
MCAwMCA2MyAwMCAwMSBDMCAwMCAwMCAwMCAwMCA3OSAwMCAgLi4uQC4uYy4uLi4uLi55LgogICAg
MjUzMDogMDggNUYgNTAgNTMgNTMgMTIgNDYgMDYgMDMgMTIgMjAgMDYgMEMgNjggMTAgMDAgIC5f
UFNTLkYuLi4gLi5oLi4KICAgIDI1NDA6IDAwIDBDIEIwIDEzIDAwIDAwIDBDIDAwIDAwIDAwIDAw
IDBDIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAyNTUwOiAwQyAwMCAwMCAwMCAw
MCAwQyAwMCAwMCAwMCAwMCAxMiAyMCAwNiAwQyA5OCAwOCAgLi4uLi4uLi4uLi4gLi4uLgogICAg
MjU2MDogMDAgMDAgMEMgMDQgMDYgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMEMgMDAgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDI1NzA6IDAwIDBDIDAxIDAwIDAwIDAwIDBDIDAxIDAwIDAwIDAw
IDEyIDIwIDA2IDBDIERDICAuLi4uLi4uLi4uLi4gLi4uCiAgICAyNTgwOiAwNSAwMCAwMCAwQyBD
RiAwMyAwMCAwMCAwQyAwMCAwMCAwMCAwMCAwQyAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
MjU5MDogMDAgMDAgMEMgMDIgMDAgMDAgMDAgMEMgMDIgMDAgMDAgMDAgMDggNTggNTAgNTMgIC4u
Li4uLi4uLi4uLi5YUFMKICAgIDI1QTA6IDUzIDEyIDRCIDBEIDAzIDEyIDQ3IDA0IDA4IDBDIDY4
IDEwIDAwIDAwIDBDIEIwICBTLksuLi5HLi4uaC4uLi4uCiAgICAyNUIwOiAxMyAwMCAwMCAwQyAw
MCAwMCAwMCAwMCAwQyAwMCAwMCAwMCAwMCAxMSAwQiAwQSAgLi4uLi4uLi4uLi4uLi4uLgogICAg
MjVDMDogMDggMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMTEgMEIgMEEgMDggMDAgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDI1RDA6IDAwIDAwIDAwIDAwIDAwIDExIDBCIDBBIDA4IDAwIDAw
IDAwIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAyNUUwOiAwMCAxMSAwQiAwQSAw
OCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAxMiA0NyAwNCAgLi4uLi4uLi4uLi4uLi5HLgogICAg
MjVGMDogMDggMEMgOTggMDggMDAgMDAgMEMgMDQgMDYgMDAgMDAgMEMgMDAgMDAgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDI2MDA6IDBDIDAwIDAwIDAwIDAwIDExIDBCIDBBIDA4IDAxIDAw
IDAwIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAyNjEwOiAwMCAxMSAwQiAwQSAw
OCAwMSAwMCAwMCAwMCAwMCAwMCAwMCAwMCAxMSAwQiAwQSAgLi4uLi4uLi4uLi4uLi4uLgogICAg
MjYyMDogMDggMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMTEgMEIgMEEgMDggMDAgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDI2MzA6IDAwIDAwIDAwIDAwIDAwIDEyIDQ3IDA0IDA4IDBDIERD
IDA1IDAwIDAwIDBDIENGICAuLi4uLi5HLi4uLi4uLi4uCiAgICAyNjQwOiAwMyAwMCAwMCAwQyAw
MCAwMCAwMCAwMCAwQyAwMCAwMCAwMCAwMCAxMSAwQiAwQSAgLi4uLi4uLi4uLi4uLi4uLgogICAg
MjY1MDogMDggMDIgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMTEgMEIgMEEgMDggMDIgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDI2NjA6IDAwIDAwIDAwIDAwIDAwIDExIDBCIDBBIDA4IDAwIDAw
IDAwIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAyNjcwOiAwMCAxMSAwQiAwQSAw
OCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwOCA1RiA1MCAgLi4uLi4uLi4uLi4uLi5fUAogICAg
MjY4MDogNTMgNDQgMTIgMTggMDEgMTIgMTUgMDUgMEEgMDUgMEEgMDAgMEMgMDUgMDAgMDAgIFNE
Li4uLi4uLi4uLi4uLi4KICAgIDI2OTA6IDAwIDBDIEZFIDAwIDAwIDAwIDBDIDAyIDAwIDAwIDAw
IDA4IDUwIDUwIDQzIDU2ICAuLi4uLi4uLi4uLi5QUENWCiAgICAyNkEwOiAwQSAwMCAxNCAwQiA1
RiA1MCA1MCA0MyAwMCBBNCA1MCA1MCA0MyA1NiAwOCA1RiAgLi4uLl9QUEMuLlBQQ1YuXwogICAg
MjZCMDogNDMgNTAgNDMgMTIgNDAgMTkgMTcgMEEgMTcgMEEgMDMgMTEgMTQgMEEgMTEgODIgIENQ
Qy5ALi4uLi4uLi4uLi4KICAgIDI2QzA6IDBDIDAwIDdGIDA4IDE4IDA0IEIwIDAyIDAxIEMwIDAw
IDAwIDAwIDAwIDc5IDAwICAuLi4uLi4uLi4uLi4uLnkuCiAgICAyNkQwOiAxMSAxNCAwQSAxMSA4
MiAwQyAwMCA3RiAwOCAxMCAwNCBCMCAwMiAwMSBDMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
MjZFMDogMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgMDggMDggMDQgIC4u
LnkuLi4uLi4uLi4uLi4KICAgIDI2RjA6IEIwIDAyIDAxIEMwIDAwIDAwIDAwIDAwIDc5IDAwIDEx
IDE0IDBBIDExIDgyIDBDICAuLi4uLi4uLnkuLi4uLi4uCiAgICAyNzAwOiAwMCA3RiAwOCAwMCAw
NCBCMCAwMiAwMSBDMCAwMCAwMCAwMCAwMCA3OSAwMCAxMSAgLi4uLi4uLi4uLi4uLnkuLgogICAg
MjcxMDogMTQgMEEgMTEgODIgMEMgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDI3MjA6IDAwIDAwIDc5IDAwIDExIDE0IDBBIDExIDgyIDBDIDAw
IDdGIDA4IDEwIDA0IEIzICAuLnkuLi4uLi4uLi4uLi4uCiAgICAyNzMwOiAwMiAwMSBDMCAwMCAw
MCAwMCAwMCA3OSAwMCAxMSAxNCAwQSAxMSA4MiAwQyAwMCAgLi4uLi4uLnkuLi4uLi4uLgogICAg
Mjc0MDogN0YgMDggMDggMDQgQjMgMDIgMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgIC4u
Li4uLi4uLi4uLnkuLi4KICAgIDI3NTA6IDBBIDExIDgyIDBDIDAwIDdGIDA4IDAwIDA0IEIzIDAy
IDAxIEMwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAyNzYwOiAwMCA3OSAwMCAxMSAx
NCAwQSAxMSA4MiAwQyAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLnkuLi4uLi4uLi4uLi4uLgogICAg
Mjc3MDogMDAgMDAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgMDAgIC4u
Li4uLnkuLi4uLi4uLi4KICAgIDI3ODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAw
IDc5IDAwIDExIDE0IDBBICAuLi4uLi4uLi4uLnkuLi4uCiAgICAyNzkwOiAxMSA4MiAwQyAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
MjdBMDogNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgNDAgMDAgMDQgRTcgMDAgMDAgIHku
Li4uLi4uLi5ALi4uLi4KICAgIDI3QjA6IDAwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0IDBBIDEx
IDgyIDBDIDAwIDdGIDQwICAuLi4uLnkuLi4uLi4uLi5ACiAgICAyN0MwOiAwMCAwNCBFOCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCA3OSAwMCAxMSAxNCAwQSAxMSAgLi4uLi4uLi4uLnkuLi4uLgogICAg
MjdEMDogODIgMEMgMDAgN0YgMDIgMDAgMDQgQjQgMDIgMDEgQzAgMDAgMDAgMDAgMDAgNzkgIC4u
Li4uLi4uLi4uLi4uLnkKICAgIDI3RTA6IDAwIDExIDE0IDBBIDExIDgyIDBDIDAwIDdGIDAxIDAw
IDA0IEIxIDAyIDAxIEMwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAyN0YwOiAwMCAwMCAwMCAwMCA3
OSAwMCAwQyAwMSAwMCAwMCAwMCAxMSAxNCAwQSAxMSA4MiAgLi4uLnkuLi4uLi4uLi4uLgogICAg
MjgwMDogMEMgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgNzkgMDAgIC4u
Li4uLi4uLi4uLi4ueS4KICAgIDI4MTA6IDExIDE0IDBBIDExIDgyIDBDIDAwIDdGIDA4IDE4IDA0
IEIzIDAyIDAxIEMwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAyODIwOiAwMCAwMCAwMCA3OSAw
MCAxMSAxNCAwQSAxMSA4MiAwQyAwMCAwMCAwMCAwMCAwMCAgLi4ueS4uLi4uLi4uLi4uLgogICAg
MjgzMDogMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgNzkgMDAgMEMgMjEgMDIgMDAgMDAgMEMgIC4u
Li4uLi4ueS4uIS4uLi4KICAgIDI4NDA6IDY5IDEwIDAwIDAwIDEwIDQ3IDM1IDVDIDJGIDAzIDVG
IDUzIDQyIDVGIDUwIDRDICBpLi4uLkc1XC8uX1NCX1BMCiAgICAyODUwOiA1NCA0NiA0MyAzMCAz
MCA0MyAwOCA1RiA1MCA0MyA1NCAxMiAyQyAwMiAxMSAxNCAgVEZDMDBDLl9QQ1QuLC4uLgogICAg
Mjg2MDogMEEgMTEgODIgMEMgMDAgN0YgNDAgMDAgMDAgNjIgMDAgMDEgQzAgMDAgMDAgMDAgIC4u
Li4uLkAuLmIuLi4uLi4KICAgIDI4NzA6IDAwIDc5IDAwIDExIDE0IDBBIDExIDgyIDBDIDAwIDdG
IDQwIDAwIDAwIDYzIDAwICAueS4uLi4uLi4uLkAuLmMuCiAgICAyODgwOiAwMSBDMCAwMCAwMCAw
MCAwMCA3OSAwMCAwOCA1RiA1MCA1MyA1MyAxMiA0NiAwNiAgLi4uLi4ueS4uX1BTUy5GLgogICAg
Mjg5MDogMDMgMTIgMjAgMDYgMEMgNjggMTAgMDAgMDAgMEMgQjAgMTMgMDAgMDAgMEMgMDAgIC4u
IC4uaC4uLi4uLi4uLi4KICAgIDI4QTA6IDAwIDAwIDAwIDBDIDAwIDAwIDAwIDAwIDBDIDAwIDAw
IDAwIDAwIDBDIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAyOEIwOiAwMCAwMCAxMiAyMCAw
NiAwQyA5OCAwOCAwMCAwMCAwQyAwNCAwNiAwMCAwMCAwQyAgLi4uIC4uLi4uLi4uLi4uLgogICAg
MjhDMDogMDAgMDAgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMEMgMDEgMDAgMDAgMDAgMEMgMDEgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDI4RDA6IDAwIDAwIDAwIDEyIDIwIDA2IDBDIERDIDA1IDAwIDAw
IDBDIENGIDAzIDAwIDAwICAuLi4uIC4uLi4uLi4uLi4uCiAgICAyOEUwOiAwQyAwMCAwMCAwMCAw
MCAwQyAwMCAwMCAwMCAwMCAwQyAwMiAwMCAwMCAwMCAwQyAgLi4uLi4uLi4uLi4uLi4uLgogICAg
MjhGMDogMDIgMDAgMDAgMDAgMDggNTggNTAgNTMgNTMgMTIgNEIgMEQgMDMgMTIgNDcgMDQgIC4u
Li4uWFBTUy5LLi4uRy4KICAgIDI5MDA6IDA4IDBDIDY4IDEwIDAwIDAwIDBDIEIwIDEzIDAwIDAw
IDBDIDAwIDAwIDAwIDAwICAuLmguLi4uLi4uLi4uLi4uCiAgICAyOTEwOiAwQyAwMCAwMCAwMCAw
MCAxMSAwQiAwQSAwOCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
MjkyMDogMDAgMTEgMEIgMEEgMDggMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMTEgMEIgMEEgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDI5MzA6IDA4IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDExIDBC
IDBBIDA4IDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAyOTQwOiAwMCAwMCAwMCAwMCAw
MCAxMiA0NyAwNCAwOCAwQyA5OCAwOCAwMCAwMCAwQyAwNCAgLi4uLi4uRy4uLi4uLi4uLgogICAg
Mjk1MDogMDYgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMTEgMEIgMEEgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDI5NjA6IDA4IDAxIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDExIDBC
IDBBIDA4IDAxIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAyOTcwOiAwMCAwMCAwMCAwMCAw
MCAxMSAwQiAwQSAwOCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
Mjk4MDogMDAgMTEgMEIgMEEgMDggMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMTIgNDcgMDQgIC4u
Li4uLi4uLi4uLi4uRy4KICAgIDI5OTA6IDA4IDBDIERDIDA1IDAwIDAwIDBDIENGIDAzIDAwIDAw
IDBDIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAyOUEwOiAwQyAwMCAwMCAwMCAw
MCAxMSAwQiAwQSAwOCAwMiAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
MjlCMDogMDAgMTEgMEIgMEEgMDggMDIgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMTEgMEIgMEEgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDI5QzA6IDA4IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDExIDBC
IDBBIDA4IDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAyOUQwOiAwMCAwMCAwMCAwMCAw
MCAwOCA1RiA1MCA1MyA0NCAxMiAxOCAwMSAxMiAxNSAwNSAgLi4uLi4uX1BTRC4uLi4uLgogICAg
MjlFMDogMEEgMDUgMEEgMDAgMEMgMDYgMDAgMDAgMDAgMEMgRkUgMDAgMDAgMDAgMEMgMDIgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDI5RjA6IDAwIDAwIDAwIDA4IDUwIDUwIDQzIDU2IDBBIDAwIDE0
IDBCIDVGIDUwIDUwIDQzICAuLi4uUFBDVi4uLi5fUFBDCiAgICAyQTAwOiAwMCBBNCA1MCA1MCA0
MyA1NiAwOCA1RiA0MyA1MCA0MyAxMiA0MCAxOSAxNyAwQSAgLi5QUENWLl9DUEMuQC4uLgogICAg
MkExMDogMTcgMEEgMDMgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgMDggMTggMDQgQjAgMDIgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDJBMjA6IDAxIEMwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0IDBB
IDExIDgyIDBDIDAwIDdGICAuLi4uLi55Li4uLi4uLi4uCiAgICAyQTMwOiAwOCAxMCAwNCBCMCAw
MiAwMSBDMCAwMCAwMCAwMCAwMCA3OSAwMCAxMSAxNCAwQSAgLi4uLi4uLi4uLi55Li4uLgogICAg
MkE0MDogMTEgODIgMEMgMDAgN0YgMDggMDggMDQgQjAgMDIgMDEgQzAgMDAgMDAgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDJBNTA6IDc5IDAwIDExIDE0IDBBIDExIDgyIDBDIDAwIDdGIDA4
IDAwIDA0IEIwIDAyIDAxICB5Li4uLi4uLi4uLi4uLi4uCiAgICAyQTYwOiBDMCAwMCAwMCAwMCAw
MCA3OSAwMCAxMSAxNCAwQSAxMSA4MiAwQyAwMCAwMCAwMCAgLi4uLi55Li4uLi4uLi4uLgogICAg
MkE3MDogMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgIC4u
Li4uLi4uLi55Li4uLi4KICAgIDJBODA6IDgyIDBDIDAwIDdGIDA4IDEwIDA0IEIzIDAyIDAxIEMw
IDAwIDAwIDAwIDAwIDc5ICAuLi4uLi4uLi4uLi4uLi55CiAgICAyQTkwOiAwMCAxMSAxNCAwQSAx
MSA4MiAwQyAwMCA3RiAwOCAwOCAwNCBCMyAwMiAwMSBDMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
MkFBMDogMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgMDggMDAgIC4u
Li55Li4uLi4uLi4uLi4KICAgIDJBQjA6IDA0IEIzIDAyIDAxIEMwIDAwIDAwIDAwIDAwIDc5IDAw
IDExIDE0IDBBIDExIDgyICAuLi4uLi4uLi55Li4uLi4uCiAgICAyQUMwOiAwQyAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCA3OSAwMCAgLi4uLi4uLi4uLi4uLi55LgogICAg
MkFEMDogMTEgMTQgMEEgMTEgODIgMEMgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDJBRTA6IDAwIDAwIDAwIDc5IDAwIDExIDE0IDBBIDExIDgyIDBD
IDAwIDAwIDAwIDAwIDAwICAuLi55Li4uLi4uLi4uLi4uCiAgICAyQUYwOiAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCA3OSAwMCAxMSAxNCAwQSAxMSA4MiAwQyAgLi4uLi4uLi55Li4uLi4uLgogICAg
MkIwMDogMDAgN0YgNDAgMDAgMDQgRTcgMDAgMDAgMDAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgIC4u
QC4uLi4uLi4uLi55Li4KICAgIDJCMTA6IDE0IDBBIDExIDgyIDBDIDAwIDdGIDQwIDAwIDA0IEU4
IDAwIDAwIDAwIDAwIDAwICAuLi4uLi4uQC4uLi4uLi4uCiAgICAyQjIwOiAwMCAwMCA3OSAwMCAx
MSAxNCAwQSAxMSA4MiAwQyAwMCA3RiAwMiAwMCAwNCBCNCAgLi55Li4uLi4uLi4uLi4uLgogICAg
MkIzMDogMDIgMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgIC4u
Li4uLi55Li4uLi4uLi4KICAgIDJCNDA6IDdGIDAxIDAwIDA0IEIxIDAyIDAxIEMwIDAwIDAwIDAw
IDAwIDc5IDAwIDBDIDAxICAuLi4uLi4uLi4uLi55Li4uCiAgICAyQjUwOiAwMCAwMCAwMCAxMSAx
NCAwQSAxMSA4MiAwQyAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
MkI2MDogMDAgMDAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgIC4u
Li4uLnkuLi4uLi4uLi4KICAgIDJCNzA6IDA4IDE4IDA0IEIzIDAyIDAxIEMwIDAwIDAwIDAwIDAw
IDc5IDAwIDExIDE0IDBBICAuLi4uLi4uLi4uLnkuLi4uCiAgICAyQjgwOiAxMSA4MiAwQyAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
MkI5MDogNzkgMDAgMEMgMjEgMDIgMDAgMDAgMEMgNjkgMTAgMDAgMDAgMTAgNDcgMzUgNUMgIHku
LiEuLi4uaS4uLi5HNVwKICAgIDJCQTA6IDJGIDAzIDVGIDUzIDQyIDVGIDUwIDRDIDU0IDQ2IDQz
IDMwIDMwIDQ0IDA4IDVGICAvLl9TQl9QTFRGQzAwRC5fCiAgICAyQkIwOiA1MCA0MyA1NCAxMiAy
QyAwMiAxMSAxNCAwQSAxMSA4MiAwQyAwMCA3RiA0MCAwMCAgUENULiwuLi4uLi4uLi5ALgogICAg
MkJDMDogMDAgNjIgMDAgMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgIC5i
Li4uLi4uLnkuLi4uLi4KICAgIDJCRDA6IDBDIDAwIDdGIDQwIDAwIDAwIDYzIDAwIDAxIEMwIDAw
IDAwIDAwIDAwIDc5IDAwICAuLi5ALi5jLi4uLi4uLnkuCiAgICAyQkUwOiAwOCA1RiA1MCA1MyA1
MyAxMiA0NiAwNiAwMyAxMiAyMCAwNiAwQyA2OCAxMCAwMCAgLl9QU1MuRi4uLiAuLmguLgogICAg
MkJGMDogMDAgMEMgQjAgMTMgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMEMgMDAgMDAgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDJDMDA6IDBDIDAwIDAwIDAwIDAwIDBDIDAwIDAwIDAwIDAwIDEy
IDIwIDA2IDBDIDk4IDA4ICAuLi4uLi4uLi4uLiAuLi4uCiAgICAyQzEwOiAwMCAwMCAwQyAwNCAw
NiAwMCAwMCAwQyAwMCAwMCAwMCAwMCAwQyAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
MkMyMDogMDAgMEMgMDEgMDAgMDAgMDAgMEMgMDEgMDAgMDAgMDAgMTIgMjAgMDYgMEMgREMgIC4u
Li4uLi4uLi4uLiAuLi4KICAgIDJDMzA6IDA1IDAwIDAwIDBDIENGIDAzIDAwIDAwIDBDIDAwIDAw
IDAwIDAwIDBDIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAyQzQwOiAwMCAwMCAwQyAwMiAw
MCAwMCAwMCAwQyAwMiAwMCAwMCAwMCAwOCA1OCA1MCA1MyAgLi4uLi4uLi4uLi4uLlhQUwogICAg
MkM1MDogNTMgMTIgNEIgMEQgMDMgMTIgNDcgMDQgMDggMEMgNjggMTAgMDAgMDAgMEMgQjAgIFMu
Sy4uLkcuLi5oLi4uLi4KICAgIDJDNjA6IDEzIDAwIDAwIDBDIDAwIDAwIDAwIDAwIDBDIDAwIDAw
IDAwIDAwIDExIDBCIDBBICAuLi4uLi4uLi4uLi4uLi4uCiAgICAyQzcwOiAwOCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAxMSAwQiAwQSAwOCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
MkM4MDogMDAgMDAgMDAgMDAgMDAgMTEgMEIgMEEgMDggMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDJDOTA6IDAwIDExIDBCIDBBIDA4IDAwIDAwIDAwIDAwIDAwIDAw
IDAwIDAwIDEyIDQ3IDA0ICAuLi4uLi4uLi4uLi4uLkcuCiAgICAyQ0EwOiAwOCAwQyA5OCAwOCAw
MCAwMCAwQyAwNCAwNiAwMCAwMCAwQyAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
MkNCMDogMEMgMDAgMDAgMDAgMDAgMTEgMEIgMEEgMDggMDEgMDAgMDAgMDAgMDAgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDJDQzA6IDAwIDExIDBCIDBBIDA4IDAxIDAwIDAwIDAwIDAwIDAw
IDAwIDAwIDExIDBCIDBBICAuLi4uLi4uLi4uLi4uLi4uCiAgICAyQ0QwOiAwOCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAxMSAwQiAwQSAwOCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
MkNFMDogMDAgMDAgMDAgMDAgMDAgMTIgNDcgMDQgMDggMEMgREMgMDUgMDAgMDAgMEMgQ0YgIC4u
Li4uLkcuLi4uLi4uLi4KICAgIDJDRjA6IDAzIDAwIDAwIDBDIDAwIDAwIDAwIDAwIDBDIDAwIDAw
IDAwIDAwIDExIDBCIDBBICAuLi4uLi4uLi4uLi4uLi4uCiAgICAyRDAwOiAwOCAwMiAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAxMSAwQiAwQSAwOCAwMiAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
MkQxMDogMDAgMDAgMDAgMDAgMDAgMTEgMEIgMEEgMDggMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDJEMjA6IDAwIDExIDBCIDBBIDA4IDAwIDAwIDAwIDAwIDAwIDAw
IDAwIDAwIDA4IDVGIDUwICAuLi4uLi4uLi4uLi4uLl9QCiAgICAyRDMwOiA1MyA0NCAxMiAxOCAw
MSAxMiAxNSAwNSAwQSAwNSAwQSAwMCAwQyAwNiAwMCAwMCAgU0QuLi4uLi4uLi4uLi4uLgogICAg
MkQ0MDogMDAgMEMgRkUgMDAgMDAgMDAgMEMgMDIgMDAgMDAgMDAgMDggNTAgNTAgNDMgNTYgIC4u
Li4uLi4uLi4uLlBQQ1YKICAgIDJENTA6IDBBIDAwIDE0IDBCIDVGIDUwIDUwIDQzIDAwIEE0IDUw
IDUwIDQzIDU2IDA4IDVGICAuLi4uX1BQQy4uUFBDVi5fCiAgICAyRDYwOiA0MyA1MCA0MyAxMiA0
MCAxOSAxNyAwQSAxNyAwQSAwMyAxMSAxNCAwQSAxMSA4MiAgQ1BDLkAuLi4uLi4uLi4uLgogICAg
MkQ3MDogMEMgMDAgN0YgMDggMTggMDQgQjAgMDIgMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgIC4u
Li4uLi4uLi4uLi4ueS4KICAgIDJEODA6IDExIDE0IDBBIDExIDgyIDBDIDAwIDdGIDA4IDEwIDA0
IEIwIDAyIDAxIEMwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAyRDkwOiAwMCAwMCAwMCA3OSAw
MCAxMSAxNCAwQSAxMSA4MiAwQyAwMCA3RiAwOCAwOCAwNCAgLi4ueS4uLi4uLi4uLi4uLgogICAg
MkRBMDogQjAgMDIgMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgIC4u
Li4uLi4ueS4uLi4uLi4KICAgIDJEQjA6IDAwIDdGIDA4IDAwIDA0IEIwIDAyIDAxIEMwIDAwIDAw
IDAwIDAwIDc5IDAwIDExICAuLi4uLi4uLi4uLi4ueS4uCiAgICAyREMwOiAxNCAwQSAxMSA4MiAw
QyAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
MkREMDogMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgMDggMTAgMDQgQjMgIC4u
eS4uLi4uLi4uLi4uLi4KICAgIDJERTA6IDAyIDAxIEMwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0
IDBBIDExIDgyIDBDIDAwICAuLi4uLi4ueS4uLi4uLi4uCiAgICAyREYwOiA3RiAwOCAwOCAwNCBC
MyAwMiAwMSBDMCAwMCAwMCAwMCAwMCA3OSAwMCAxMSAxNCAgLi4uLi4uLi4uLi4ueS4uLgogICAg
MkUwMDogMEEgMTEgODIgMEMgMDAgN0YgMDggMDAgMDQgQjMgMDIgMDEgQzAgMDAgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDJFMTA6IDAwIDc5IDAwIDExIDE0IDBBIDExIDgyIDBDIDAwIDAw
IDAwIDAwIDAwIDAwIDAwICAueS4uLi4uLi4uLi4uLi4uCiAgICAyRTIwOiAwMCAwMCAwMCAwMCAw
MCAwMCA3OSAwMCAxMSAxNCAwQSAxMSA4MiAwQyAwMCAwMCAgLi4uLi4ueS4uLi4uLi4uLgogICAg
MkUzMDogMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgIC4u
Li4uLi4uLi4ueS4uLi4KICAgIDJFNDA6IDExIDgyIDBDIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAw
IDAwIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAyRTUwOiA3OSAwMCAxMSAxNCAw
QSAxMSA4MiAwQyAwMCA3RiA0MCAwMCAwNCBFNyAwMCAwMCAgeS4uLi4uLi4uLkAuLi4uLgogICAg
MkU2MDogMDAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgNDAgIC4u
Li4ueS4uLi4uLi4uLkAKICAgIDJFNzA6IDAwIDA0IEU4IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDc5
IDAwIDExIDE0IDBBIDExICAuLi4uLi4uLi4ueS4uLi4uCiAgICAyRTgwOiA4MiAwQyAwMCA3RiAw
MiAwMCAwNCBCNCAwMiAwMSBDMCAwMCAwMCAwMCAwMCA3OSAgLi4uLi4uLi4uLi4uLi4ueQogICAg
MkU5MDogMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgMDEgMDAgMDQgQjEgMDIgMDEgQzAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDJFQTA6IDAwIDAwIDAwIDAwIDc5IDAwIDBDIDAxIDAwIDAwIDAw
IDExIDE0IDBBIDExIDgyICAuLi4ueS4uLi4uLi4uLi4uCiAgICAyRUIwOiAwQyAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCA3OSAwMCAgLi4uLi4uLi4uLi4uLi55LgogICAg
MkVDMDogMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgMDggMTggMDQgQjMgMDIgMDEgQzAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDJFRDA6IDAwIDAwIDAwIDc5IDAwIDExIDE0IDBBIDExIDgyIDBD
IDAwIDAwIDAwIDAwIDAwICAuLi55Li4uLi4uLi4uLi4uCiAgICAyRUUwOiAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCA3OSAwMCAwQyAyMSAwMiAwMCAwMCAwQyAgLi4uLi4uLi55Li4hLi4uLgogICAg
MkVGMDogNjkgMTAgMDAgMDAgMTAgNDcgMzUgNUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAgNEMgIGku
Li4uRzVcLy5fU0JfUEwKICAgIDJGMDA6IDU0IDQ2IDQzIDMwIDMwIDQ1IDA4IDVGIDUwIDQzIDU0
IDEyIDJDIDAyIDExIDE0ICBURkMwMEUuX1BDVC4sLi4uCiAgICAyRjEwOiAwQSAxMSA4MiAwQyAw
MCA3RiA0MCAwMCAwMCA2MiAwMCAwMSBDMCAwMCAwMCAwMCAgLi4uLi4uQC4uYi4uLi4uLgogICAg
MkYyMDogMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgNDAgMDAgMDAgNjMgMDAgIC55
Li4uLi4uLi4uQC4uYy4KICAgIDJGMzA6IDAxIEMwIDAwIDAwIDAwIDAwIDc5IDAwIDA4IDVGIDUw
IDUzIDUzIDEyIDQ2IDA2ICAuLi4uLi55Li5fUFNTLkYuCiAgICAyRjQwOiAwMyAxMiAyMCAwNiAw
QyA2OCAxMCAwMCAwMCAwQyBCMCAxMyAwMCAwMCAwQyAwMCAgLi4gLi5oLi4uLi4uLi4uLgogICAg
MkY1MDogMDAgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMEMgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDJGNjA6IDAwIDAwIDEyIDIwIDA2IDBDIDk4IDA4IDAwIDAwIDBD
IDA0IDA2IDAwIDAwIDBDICAuLi4gLi4uLi4uLi4uLi4uCiAgICAyRjcwOiAwMCAwMCAwMCAwMCAw
QyAwMCAwMCAwMCAwMCAwQyAwMSAwMCAwMCAwMCAwQyAwMSAgLi4uLi4uLi4uLi4uLi4uLgogICAg
MkY4MDogMDAgMDAgMDAgMTIgMjAgMDYgMEMgREMgMDUgMDAgMDAgMEMgQ0YgMDMgMDAgMDAgIC4u
Li4gLi4uLi4uLi4uLi4KICAgIDJGOTA6IDBDIDAwIDAwIDAwIDAwIDBDIDAwIDAwIDAwIDAwIDBD
IDAyIDAwIDAwIDAwIDBDICAuLi4uLi4uLi4uLi4uLi4uCiAgICAyRkEwOiAwMiAwMCAwMCAwMCAw
OCA1OCA1MCA1MyA1MyAxMiA0QiAwRCAwMyAxMiA0NyAwNCAgLi4uLi5YUFNTLksuLi5HLgogICAg
MkZCMDogMDggMEMgNjggMTAgMDAgMDAgMEMgQjAgMTMgMDAgMDAgMEMgMDAgMDAgMDAgMDAgIC4u
aC4uLi4uLi4uLi4uLi4KICAgIDJGQzA6IDBDIDAwIDAwIDAwIDAwIDExIDBCIDBBIDA4IDAwIDAw
IDAwIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAyRkQwOiAwMCAxMSAwQiAwQSAw
OCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAxMSAwQiAwQSAgLi4uLi4uLi4uLi4uLi4uLgogICAg
MkZFMDogMDggMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMTEgMEIgMEEgMDggMDAgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDJGRjA6IDAwIDAwIDAwIDAwIDAwIDEyIDQ3IDA0IDA4IDBDIDk4
IDA4IDAwIDAwIDBDIDA0ICAuLi4uLi5HLi4uLi4uLi4uCiAgICAzMDAwOiAwNiAwMCAwMCAwQyAw
MCAwMCAwMCAwMCAwQyAwMCAwMCAwMCAwMCAxMSAwQiAwQSAgLi4uLi4uLi4uLi4uLi4uLgogICAg
MzAxMDogMDggMDEgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMTEgMEIgMEEgMDggMDEgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDMwMjA6IDAwIDAwIDAwIDAwIDAwIDExIDBCIDBBIDA4IDAwIDAw
IDAwIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAzMDMwOiAwMCAxMSAwQiAwQSAw
OCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAxMiA0NyAwNCAgLi4uLi4uLi4uLi4uLi5HLgogICAg
MzA0MDogMDggMEMgREMgMDUgMDAgMDAgMEMgQ0YgMDMgMDAgMDAgMEMgMDAgMDAgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDMwNTA6IDBDIDAwIDAwIDAwIDAwIDExIDBCIDBBIDA4IDAyIDAw
IDAwIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAzMDYwOiAwMCAxMSAwQiAwQSAw
OCAwMiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAxMSAwQiAwQSAgLi4uLi4uLi4uLi4uLi4uLgogICAg
MzA3MDogMDggMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMTEgMEIgMEEgMDggMDAgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDMwODA6IDAwIDAwIDAwIDAwIDAwIDA4IDVGIDUwIDUzIDQ0IDEy
IDE4IDAxIDEyIDE1IDA1ICAuLi4uLi5fUFNELi4uLi4uCiAgICAzMDkwOiAwQSAwNSAwQSAwMCAw
QyAwNyAwMCAwMCAwMCAwQyBGRSAwMCAwMCAwMCAwQyAwMiAgLi4uLi4uLi4uLi4uLi4uLgogICAg
MzBBMDogMDAgMDAgMDAgMDggNTAgNTAgNDMgNTYgMEEgMDAgMTQgMEIgNUYgNTAgNTAgNDMgIC4u
Li5QUENWLi4uLl9QUEMKICAgIDMwQjA6IDAwIEE0IDUwIDUwIDQzIDU2IDA4IDVGIDQzIDUwIDQz
IDEyIDQwIDE5IDE3IDBBICAuLlBQQ1YuX0NQQy5ALi4uCiAgICAzMEMwOiAxNyAwQSAwMyAxMSAx
NCAwQSAxMSA4MiAwQyAwMCA3RiAwOCAxOCAwNCBCMCAwMiAgLi4uLi4uLi4uLi4uLi4uLgogICAg
MzBEMDogMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgIC4u
Li4uLnkuLi4uLi4uLi4KICAgIDMwRTA6IDA4IDEwIDA0IEIwIDAyIDAxIEMwIDAwIDAwIDAwIDAw
IDc5IDAwIDExIDE0IDBBICAuLi4uLi4uLi4uLnkuLi4uCiAgICAzMEYwOiAxMSA4MiAwQyAwMCA3
RiAwOCAwOCAwNCBCMCAwMiAwMSBDMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
MzEwMDogNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgMDggMDAgMDQgQjAgMDIgMDEgIHku
Li4uLi4uLi4uLi4uLi4KICAgIDMxMTA6IEMwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0IDBBIDEx
IDgyIDBDIDAwIDAwIDAwICAuLi4uLnkuLi4uLi4uLi4uCiAgICAzMTIwOiAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCA3OSAwMCAxMSAxNCAwQSAxMSAgLi4uLi4uLi4uLnkuLi4uLgogICAg
MzEzMDogODIgMEMgMDAgN0YgMDggMTAgMDQgQjMgMDIgMDEgQzAgMDAgMDAgMDAgMDAgNzkgIC4u
Li4uLi4uLi4uLi4uLnkKICAgIDMxNDA6IDAwIDExIDE0IDBBIDExIDgyIDBDIDAwIDdGIDA4IDA4
IDA0IEIzIDAyIDAxIEMwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAzMTUwOiAwMCAwMCAwMCAwMCA3
OSAwMCAxMSAxNCAwQSAxMSA4MiAwQyAwMCA3RiAwOCAwMCAgLi4uLnkuLi4uLi4uLi4uLgogICAg
MzE2MDogMDQgQjMgMDIgMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgIC4u
Li4uLi4uLnkuLi4uLi4KICAgIDMxNzA6IDBDIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAw
IDAwIDAwIDAwIDc5IDAwICAuLi4uLi4uLi4uLi4uLnkuCiAgICAzMTgwOiAxMSAxNCAwQSAxMSA4
MiAwQyAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
MzE5MDogMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgMDAgMDAgMDAgMDAgIC4u
LnkuLi4uLi4uLi4uLi4KICAgIDMxQTA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDc5IDAwIDEx
IDE0IDBBIDExIDgyIDBDICAuLi4uLi4uLnkuLi4uLi4uCiAgICAzMUIwOiAwMCA3RiA0MCAwMCAw
NCBFNyAwMCAwMCAwMCAwMCAwMCAwMCAwMCA3OSAwMCAxMSAgLi5ALi4uLi4uLi4uLnkuLgogICAg
MzFDMDogMTQgMEEgMTEgODIgMEMgMDAgN0YgNDAgMDAgMDQgRTggMDAgMDAgMDAgMDAgMDAgIC4u
Li4uLi5ALi4uLi4uLi4KICAgIDMxRDA6IDAwIDAwIDc5IDAwIDExIDE0IDBBIDExIDgyIDBDIDAw
IDdGIDAyIDAwIDA0IEI0ICAuLnkuLi4uLi4uLi4uLi4uCiAgICAzMUUwOiAwMiAwMSBDMCAwMCAw
MCAwMCAwMCA3OSAwMCAxMSAxNCAwQSAxMSA4MiAwQyAwMCAgLi4uLi4uLnkuLi4uLi4uLgogICAg
MzFGMDogN0YgMDEgMDAgMDQgQjEgMDIgMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgMEMgMDEgIC4u
Li4uLi4uLi4uLnkuLi4KICAgIDMyMDA6IDAwIDAwIDAwIDExIDE0IDBBIDExIDgyIDBDIDAwIDAw
IDAwIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAzMjEwOiAwMCAwMCAwMCAwMCAw
MCAwMCA3OSAwMCAxMSAxNCAwQSAxMSA4MiAwQyAwMCA3RiAgLi4uLi4ueS4uLi4uLi4uLgogICAg
MzIyMDogMDggMTggMDQgQjMgMDIgMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgIC4u
Li4uLi4uLi4ueS4uLi4KICAgIDMyMzA6IDExIDgyIDBDIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAw
IDAwIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAzMjQwOiA3OSAwMCAwQyAyMSAw
MiAwMCAwMCAwQyA2OSAxMCAwMCAwMCAxMCA0NyAzNSA1QyAgeS4uIS4uLi5pLi4uLkc1XAogICAg
MzI1MDogMkYgMDMgNUYgNTMgNDIgNUYgNTAgNEMgNTQgNDYgNDMgMzAgMzAgNDYgMDggNUYgIC8u
X1NCX1BMVEZDMDBGLl8KICAgIDMyNjA6IDUwIDQzIDU0IDEyIDJDIDAyIDExIDE0IDBBIDExIDgy
IDBDIDAwIDdGIDQwIDAwICBQQ1QuLC4uLi4uLi4uLkAuCiAgICAzMjcwOiAwMCA2MiAwMCAwMSBD
MCAwMCAwMCAwMCAwMCA3OSAwMCAxMSAxNCAwQSAxMSA4MiAgLmIuLi4uLi4ueS4uLi4uLgogICAg
MzI4MDogMEMgMDAgN0YgNDAgMDAgMDAgNjMgMDAgMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgIC4u
LkAuLmMuLi4uLi4ueS4KICAgIDMyOTA6IDA4IDVGIDUwIDUzIDUzIDEyIDQ2IDA2IDAzIDEyIDIw
IDA2IDBDIDY4IDEwIDAwICAuX1BTUy5GLi4uIC4uaC4uCiAgICAzMkEwOiAwMCAwQyBCMCAxMyAw
MCAwMCAwQyAwMCAwMCAwMCAwMCAwQyAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
MzJCMDogMEMgMDAgMDAgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMTIgMjAgMDYgMEMgOTggMDggIC4u
Li4uLi4uLi4uIC4uLi4KICAgIDMyQzA6IDAwIDAwIDBDIDA0IDA2IDAwIDAwIDBDIDAwIDAwIDAw
IDAwIDBDIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAzMkQwOiAwMCAwQyAwMSAwMCAw
MCAwMCAwQyAwMSAwMCAwMCAwMCAxMiAyMCAwNiAwQyBEQyAgLi4uLi4uLi4uLi4uIC4uLgogICAg
MzJFMDogMDUgMDAgMDAgMEMgQ0YgMDMgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMEMgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDMyRjA6IDAwIDAwIDBDIDAyIDAwIDAwIDAwIDBDIDAyIDAwIDAw
IDAwIDA4IDU4IDUwIDUzICAuLi4uLi4uLi4uLi4uWFBTCiAgICAzMzAwOiA1MyAxMiA0QiAwRCAw
MyAxMiA0NyAwNCAwOCAwQyA2OCAxMCAwMCAwMCAwQyBCMCAgUy5LLi4uRy4uLmguLi4uLgogICAg
MzMxMDogMTMgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMTEgMEIgMEEgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDMzMjA6IDA4IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDExIDBC
IDBBIDA4IDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAzMzMwOiAwMCAwMCAwMCAwMCAw
MCAxMSAwQiAwQSAwOCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
MzM0MDogMDAgMTEgMEIgMEEgMDggMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMTIgNDcgMDQgIC4u
Li4uLi4uLi4uLi4uRy4KICAgIDMzNTA6IDA4IDBDIDk4IDA4IDAwIDAwIDBDIDA0IDA2IDAwIDAw
IDBDIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAzMzYwOiAwQyAwMCAwMCAwMCAw
MCAxMSAwQiAwQSAwOCAwMSAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
MzM3MDogMDAgMTEgMEIgMEEgMDggMDEgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMTEgMEIgMEEgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDMzODA6IDA4IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDExIDBC
IDBBIDA4IDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAzMzkwOiAwMCAwMCAwMCAwMCAw
MCAxMiA0NyAwNCAwOCAwQyBEQyAwNSAwMCAwMCAwQyBDRiAgLi4uLi4uRy4uLi4uLi4uLgogICAg
MzNBMDogMDMgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMTEgMEIgMEEgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDMzQjA6IDA4IDAyIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDExIDBC
IDBBIDA4IDAyIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAzM0MwOiAwMCAwMCAwMCAwMCAw
MCAxMSAwQiAwQSAwOCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
MzNEMDogMDAgMTEgMEIgMEEgMDggMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDggNUYgNTAgIC4u
Li4uLi4uLi4uLi4uX1AKICAgIDMzRTA6IDUzIDQ0IDEyIDE4IDAxIDEyIDE1IDA1IDBBIDA1IDBB
IDAwIDBDIDA3IDAwIDAwICBTRC4uLi4uLi4uLi4uLi4uCiAgICAzM0YwOiAwMCAwQyBGRSAwMCAw
MCAwMCAwQyAwMiAwMCAwMCAwMCAwOCA1MCA1MCA0MyA1NiAgLi4uLi4uLi4uLi4uUFBDVgogICAg
MzQwMDogMEEgMDAgMTQgMEIgNUYgNTAgNTAgNDMgMDAgQTQgNTAgNTAgNDMgNTYgMDggNUYgIC4u
Li5fUFBDLi5QUENWLl8KICAgIDM0MTA6IDQzIDUwIDQzIDEyIDQwIDE5IDE3IDBBIDE3IDBBIDAz
IDExIDE0IDBBIDExIDgyICBDUEMuQC4uLi4uLi4uLi4uCiAgICAzNDIwOiAwQyAwMCA3RiAwOCAx
OCAwNCBCMCAwMiAwMSBDMCAwMCAwMCAwMCAwMCA3OSAwMCAgLi4uLi4uLi4uLi4uLi55LgogICAg
MzQzMDogMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgMDggMTAgMDQgQjAgMDIgMDEgQzAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDM0NDA6IDAwIDAwIDAwIDc5IDAwIDExIDE0IDBBIDExIDgyIDBD
IDAwIDdGIDA4IDA4IDA0ICAuLi55Li4uLi4uLi4uLi4uCiAgICAzNDUwOiBCMCAwMiAwMSBDMCAw
MCAwMCAwMCAwMCA3OSAwMCAxMSAxNCAwQSAxMSA4MiAwQyAgLi4uLi4uLi55Li4uLi4uLgogICAg
MzQ2MDogMDAgN0YgMDggMDAgMDQgQjAgMDIgMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgIC4u
Li4uLi4uLi4uLi55Li4KICAgIDM0NzA6IDE0IDBBIDExIDgyIDBDIDAwIDAwIDAwIDAwIDAwIDAw
IDAwIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAzNDgwOiAwMCAwMCA3OSAwMCAx
MSAxNCAwQSAxMSA4MiAwQyAwMCA3RiAwOCAxMCAwNCBCMyAgLi55Li4uLi4uLi4uLi4uLgogICAg
MzQ5MDogMDIgMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgIC4u
Li4uLi55Li4uLi4uLi4KICAgIDM0QTA6IDdGIDA4IDA4IDA0IEIzIDAyIDAxIEMwIDAwIDAwIDAw
IDAwIDc5IDAwIDExIDE0ICAuLi4uLi4uLi4uLi55Li4uCiAgICAzNEIwOiAwQSAxMSA4MiAwQyAw
MCA3RiAwOCAwMCAwNCBCMyAwMiAwMSBDMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
MzRDMDogMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC55
Li4uLi4uLi4uLi4uLi4KICAgIDM0RDA6IDAwIDAwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0IDBB
IDExIDgyIDBDIDAwIDAwICAuLi4uLi55Li4uLi4uLi4uCiAgICAzNEUwOiAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAwMCA3OSAwMCAxMSAxNCAwQSAgLi4uLi4uLi4uLi55Li4uLgogICAg
MzRGMDogMTEgODIgMEMgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDM1MDA6IDc5IDAwIDExIDE0IDBBIDExIDgyIDBDIDAwIDdGIDQw
IDAwIDA0IEU3IDAwIDAwICB5Li4uLi4uLi4uQC4uLi4uCiAgICAzNTEwOiAwMCAwMCAwMCAwMCAw
MCA3OSAwMCAxMSAxNCAwQSAxMSA4MiAwQyAwMCA3RiA0MCAgLi4uLi55Li4uLi4uLi4uQAogICAg
MzUyMDogMDAgMDQgRTggMDAgMDAgMDAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgIC4u
Li4uLi4uLi55Li4uLi4KICAgIDM1MzA6IDgyIDBDIDAwIDdGIDAyIDAwIDA0IEI0IDAyIDAxIEMw
IDAwIDAwIDAwIDAwIDc5ICAuLi4uLi4uLi4uLi4uLi55CiAgICAzNTQwOiAwMCAxMSAxNCAwQSAx
MSA4MiAwQyAwMCA3RiAwMSAwMCAwNCBCMSAwMiAwMSBDMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
MzU1MDogMDAgMDAgMDAgMDAgNzkgMDAgMEMgMDEgMDAgMDAgMDAgMTEgMTQgMEEgMTEgODIgIC4u
Li55Li4uLi4uLi4uLi4KICAgIDM1NjA6IDBDIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAw
IDAwIDAwIDAwIDc5IDAwICAuLi4uLi4uLi4uLi4uLnkuCiAgICAzNTcwOiAxMSAxNCAwQSAxMSA4
MiAwQyAwMCA3RiAwOCAxOCAwNCBCMyAwMiAwMSBDMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
MzU4MDogMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgMDAgMDAgMDAgMDAgIC4u
LnkuLi4uLi4uLi4uLi4KICAgIDM1OTA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDc5IDAwIDBD
IDIxIDAyIDAwIDAwIDBDICAuLi4uLi4uLnkuLiEuLi4uCiAgICAzNUEwOiA2OSAxMCAwMCAwMCAx
MCA0NyAzNSA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0QyAgaS4uLi5HNVwvLl9TQl9QTAogICAg
MzVCMDogNTQgNDYgNDMgMzAgMzEgMzAgMDggNUYgNTAgNDMgNTQgMTIgMkMgMDIgMTEgMTQgIFRG
QzAxMC5fUENULiwuLi4KICAgIDM1QzA6IDBBIDExIDgyIDBDIDAwIDdGIDQwIDAwIDAwIDYyIDAw
IDAxIEMwIDAwIDAwIDAwICAuLi4uLi5ALi5iLi4uLi4uCiAgICAzNUQwOiAwMCA3OSAwMCAxMSAx
NCAwQSAxMSA4MiAwQyAwMCA3RiA0MCAwMCAwMCA2MyAwMCAgLnkuLi4uLi4uLi5ALi5jLgogICAg
MzVFMDogMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgMDggNUYgNTAgNTMgNTMgMTIgNDYgMDYgIC4u
Li4uLnkuLl9QU1MuRi4KICAgIDM1RjA6IDAzIDEyIDIwIDA2IDBDIDY4IDEwIDAwIDAwIDBDIEIw
IDEzIDAwIDAwIDBDIDAwICAuLiAuLmguLi4uLi4uLi4uCiAgICAzNjAwOiAwMCAwMCAwMCAwQyAw
MCAwMCAwMCAwMCAwQyAwMCAwMCAwMCAwMCAwQyAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
MzYxMDogMDAgMDAgMTIgMjAgMDYgMEMgOTggMDggMDAgMDAgMEMgMDQgMDYgMDAgMDAgMEMgIC4u
LiAuLi4uLi4uLi4uLi4KICAgIDM2MjA6IDAwIDAwIDAwIDAwIDBDIDAwIDAwIDAwIDAwIDBDIDAx
IDAwIDAwIDAwIDBDIDAxICAuLi4uLi4uLi4uLi4uLi4uCiAgICAzNjMwOiAwMCAwMCAwMCAxMiAy
MCAwNiAwQyBEQyAwNSAwMCAwMCAwQyBDRiAwMyAwMCAwMCAgLi4uLiAuLi4uLi4uLi4uLgogICAg
MzY0MDogMEMgMDAgMDAgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMEMgMDIgMDAgMDAgMDAgMEMgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDM2NTA6IDAyIDAwIDAwIDAwIDA4IDU4IDUwIDUzIDUzIDEyIDRC
IDBEIDAzIDEyIDQ3IDA0ICAuLi4uLlhQU1MuSy4uLkcuCiAgICAzNjYwOiAwOCAwQyA2OCAxMCAw
MCAwMCAwQyBCMCAxMyAwMCAwMCAwQyAwMCAwMCAwMCAwMCAgLi5oLi4uLi4uLi4uLi4uLgogICAg
MzY3MDogMEMgMDAgMDAgMDAgMDAgMTEgMEIgMEEgMDggMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDM2ODA6IDAwIDExIDBCIDBBIDA4IDAwIDAwIDAwIDAwIDAwIDAw
IDAwIDAwIDExIDBCIDBBICAuLi4uLi4uLi4uLi4uLi4uCiAgICAzNjkwOiAwOCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAxMSAwQiAwQSAwOCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
MzZBMDogMDAgMDAgMDAgMDAgMDAgMTIgNDcgMDQgMDggMEMgOTggMDggMDAgMDAgMEMgMDQgIC4u
Li4uLkcuLi4uLi4uLi4KICAgIDM2QjA6IDA2IDAwIDAwIDBDIDAwIDAwIDAwIDAwIDBDIDAwIDAw
IDAwIDAwIDExIDBCIDBBICAuLi4uLi4uLi4uLi4uLi4uCiAgICAzNkMwOiAwOCAwMSAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAxMSAwQiAwQSAwOCAwMSAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
MzZEMDogMDAgMDAgMDAgMDAgMDAgMTEgMEIgMEEgMDggMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDM2RTA6IDAwIDExIDBCIDBBIDA4IDAwIDAwIDAwIDAwIDAwIDAw
IDAwIDAwIDEyIDQ3IDA0ICAuLi4uLi4uLi4uLi4uLkcuCiAgICAzNkYwOiAwOCAwQyBEQyAwNSAw
MCAwMCAwQyBDRiAwMyAwMCAwMCAwQyAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
MzcwMDogMEMgMDAgMDAgMDAgMDAgMTEgMEIgMEEgMDggMDIgMDAgMDAgMDAgMDAgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDM3MTA6IDAwIDExIDBCIDBBIDA4IDAyIDAwIDAwIDAwIDAwIDAw
IDAwIDAwIDExIDBCIDBBICAuLi4uLi4uLi4uLi4uLi4uCiAgICAzNzIwOiAwOCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAxMSAwQiAwQSAwOCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
MzczMDogMDAgMDAgMDAgMDAgMDAgMDggNUYgNTAgNTMgNDQgMTIgMTggMDEgMTIgMTUgMDUgIC4u
Li4uLl9QU0QuLi4uLi4KICAgIDM3NDA6IDBBIDA1IDBBIDAwIDBDIDA4IDAwIDAwIDAwIDBDIEZF
IDAwIDAwIDAwIDBDIDAyICAuLi4uLi4uLi4uLi4uLi4uCiAgICAzNzUwOiAwMCAwMCAwMCAwOCA1
MCA1MCA0MyA1NiAwQSAwMCAxNCAwQiA1RiA1MCA1MCA0MyAgLi4uLlBQQ1YuLi4uX1BQQwogICAg
Mzc2MDogMDAgQTQgNTAgNTAgNDMgNTYgMDggNUYgNDMgNTAgNDMgMTIgNDAgMTkgMTcgMEEgIC4u
UFBDVi5fQ1BDLkAuLi4KICAgIDM3NzA6IDE3IDBBIDAzIDExIDE0IDBBIDExIDgyIDBDIDAwIDdG
IDA4IDE4IDA0IEIwIDAyICAuLi4uLi4uLi4uLi4uLi4uCiAgICAzNzgwOiAwMSBDMCAwMCAwMCAw
MCAwMCA3OSAwMCAxMSAxNCAwQSAxMSA4MiAwQyAwMCA3RiAgLi4uLi4ueS4uLi4uLi4uLgogICAg
Mzc5MDogMDggMTAgMDQgQjAgMDIgMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgIC4u
Li4uLi4uLi4ueS4uLi4KICAgIDM3QTA6IDExIDgyIDBDIDAwIDdGIDA4IDA4IDA0IEIwIDAyIDAx
IEMwIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAzN0IwOiA3OSAwMCAxMSAxNCAw
QSAxMSA4MiAwQyAwMCA3RiAwOCAwMCAwNCBCMCAwMiAwMSAgeS4uLi4uLi4uLi4uLi4uLgogICAg
MzdDMDogQzAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgMDAgMDAgIC4u
Li4ueS4uLi4uLi4uLi4KICAgIDM3RDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDc5
IDAwIDExIDE0IDBBIDExICAuLi4uLi4uLi4ueS4uLi4uCiAgICAzN0UwOiA4MiAwQyAwMCA3RiAw
OCAxMCAwNCBCMyAwMiAwMSBDMCAwMCAwMCAwMCAwMCA3OSAgLi4uLi4uLi4uLi4uLi4ueQogICAg
MzdGMDogMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgMDggMDggMDQgQjMgMDIgMDEgQzAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDM4MDA6IDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0IDBBIDExIDgy
IDBDIDAwIDdGIDA4IDAwICAuLi4ueS4uLi4uLi4uLi4uCiAgICAzODEwOiAwNCBCMyAwMiAwMSBD
MCAwMCAwMCAwMCAwMCA3OSAwMCAxMSAxNCAwQSAxMSA4MiAgLi4uLi4uLi4ueS4uLi4uLgogICAg
MzgyMDogMEMgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgNzkgMDAgIC4u
Li4uLi4uLi4uLi4ueS4KICAgIDM4MzA6IDExIDE0IDBBIDExIDgyIDBDIDAwIDAwIDAwIDAwIDAw
IDAwIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAzODQwOiAwMCAwMCAwMCA3OSAw
MCAxMSAxNCAwQSAxMSA4MiAwQyAwMCAwMCAwMCAwMCAwMCAgLi4ueS4uLi4uLi4uLi4uLgogICAg
Mzg1MDogMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgIC4u
Li4uLi4ueS4uLi4uLi4KICAgIDM4NjA6IDAwIDdGIDQwIDAwIDA0IEU3IDAwIDAwIDAwIDAwIDAw
IDAwIDAwIDc5IDAwIDExICAuLkAuLi4uLi4uLi4ueS4uCiAgICAzODcwOiAxNCAwQSAxMSA4MiAw
QyAwMCA3RiA0MCAwMCAwNCBFOCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLkAuLi4uLi4uLgogICAg
Mzg4MDogMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgMDIgMDAgMDQgQjQgIC4u
eS4uLi4uLi4uLi4uLi4KICAgIDM4OTA6IDAyIDAxIEMwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0
IDBBIDExIDgyIDBDIDAwICAuLi4uLi4ueS4uLi4uLi4uCiAgICAzOEEwOiA3RiAwMSAwMCAwNCBC
MSAwMiAwMSBDMCAwMCAwMCAwMCAwMCA3OSAwMCAwQyAwMSAgLi4uLi4uLi4uLi4ueS4uLgogICAg
MzhCMDogMDAgMDAgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDM4QzA6IDAwIDAwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0IDBB
IDExIDgyIDBDIDAwIDdGICAuLi4uLi55Li4uLi4uLi4uCiAgICAzOEQwOiAwOCAxOCAwNCBCMyAw
MiAwMSBDMCAwMCAwMCAwMCAwMCA3OSAwMCAxMSAxNCAwQSAgLi4uLi4uLi4uLi55Li4uLgogICAg
MzhFMDogMTEgODIgMEMgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDM4RjA6IDc5IDAwIDBDIDIxIDAyIDAwIDAwIDBDIDY5IDEwIDAw
IDAwIDEwIDQ3IDM1IDVDICB5Li4hLi4uLmkuLi4uRzVcCiAgICAzOTAwOiAyRiAwMyA1RiA1MyA0
MiA1RiA1MCA0QyA1NCA0NiA0MyAzMCAzMSAzMSAwOCA1RiAgLy5fU0JfUExURkMwMTEuXwogICAg
MzkxMDogNTAgNDMgNTQgMTIgMkMgMDIgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgNDAgMDAgIFBD
VC4sLi4uLi4uLi4uQC4KICAgIDM5MjA6IDAwIDYyIDAwIDAxIEMwIDAwIDAwIDAwIDAwIDc5IDAw
IDExIDE0IDBBIDExIDgyICAuYi4uLi4uLi55Li4uLi4uCiAgICAzOTMwOiAwQyAwMCA3RiA0MCAw
MCAwMCA2MyAwMCAwMSBDMCAwMCAwMCAwMCAwMCA3OSAwMCAgLi4uQC4uYy4uLi4uLi55LgogICAg
Mzk0MDogMDggNUYgNTAgNTMgNTMgMTIgNDYgMDYgMDMgMTIgMjAgMDYgMEMgNjggMTAgMDAgIC5f
UFNTLkYuLi4gLi5oLi4KICAgIDM5NTA6IDAwIDBDIEIwIDEzIDAwIDAwIDBDIDAwIDAwIDAwIDAw
IDBDIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAzOTYwOiAwQyAwMCAwMCAwMCAw
MCAwQyAwMCAwMCAwMCAwMCAxMiAyMCAwNiAwQyA5OCAwOCAgLi4uLi4uLi4uLi4gLi4uLgogICAg
Mzk3MDogMDAgMDAgMEMgMDQgMDYgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMEMgMDAgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDM5ODA6IDAwIDBDIDAxIDAwIDAwIDAwIDBDIDAxIDAwIDAwIDAw
IDEyIDIwIDA2IDBDIERDICAuLi4uLi4uLi4uLi4gLi4uCiAgICAzOTkwOiAwNSAwMCAwMCAwQyBD
RiAwMyAwMCAwMCAwQyAwMCAwMCAwMCAwMCAwQyAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
MzlBMDogMDAgMDAgMEMgMDIgMDAgMDAgMDAgMEMgMDIgMDAgMDAgMDAgMDggNTggNTAgNTMgIC4u
Li4uLi4uLi4uLi5YUFMKICAgIDM5QjA6IDUzIDEyIDRCIDBEIDAzIDEyIDQ3IDA0IDA4IDBDIDY4
IDEwIDAwIDAwIDBDIEIwICBTLksuLi5HLi4uaC4uLi4uCiAgICAzOUMwOiAxMyAwMCAwMCAwQyAw
MCAwMCAwMCAwMCAwQyAwMCAwMCAwMCAwMCAxMSAwQiAwQSAgLi4uLi4uLi4uLi4uLi4uLgogICAg
MzlEMDogMDggMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMTEgMEIgMEEgMDggMDAgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDM5RTA6IDAwIDAwIDAwIDAwIDAwIDExIDBCIDBBIDA4IDAwIDAw
IDAwIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAzOUYwOiAwMCAxMSAwQiAwQSAw
OCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAxMiA0NyAwNCAgLi4uLi4uLi4uLi4uLi5HLgogICAg
M0EwMDogMDggMEMgOTggMDggMDAgMDAgMEMgMDQgMDYgMDAgMDAgMEMgMDAgMDAgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDNBMTA6IDBDIDAwIDAwIDAwIDAwIDExIDBCIDBBIDA4IDAxIDAw
IDAwIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAzQTIwOiAwMCAxMSAwQiAwQSAw
OCAwMSAwMCAwMCAwMCAwMCAwMCAwMCAwMCAxMSAwQiAwQSAgLi4uLi4uLi4uLi4uLi4uLgogICAg
M0EzMDogMDggMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMTEgMEIgMEEgMDggMDAgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDNBNDA6IDAwIDAwIDAwIDAwIDAwIDEyIDQ3IDA0IDA4IDBDIERD
IDA1IDAwIDAwIDBDIENGICAuLi4uLi5HLi4uLi4uLi4uCiAgICAzQTUwOiAwMyAwMCAwMCAwQyAw
MCAwMCAwMCAwMCAwQyAwMCAwMCAwMCAwMCAxMSAwQiAwQSAgLi4uLi4uLi4uLi4uLi4uLgogICAg
M0E2MDogMDggMDIgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMTEgMEIgMEEgMDggMDIgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDNBNzA6IDAwIDAwIDAwIDAwIDAwIDExIDBCIDBBIDA4IDAwIDAw
IDAwIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAzQTgwOiAwMCAxMSAwQiAwQSAw
OCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwOCA1RiA1MCAgLi4uLi4uLi4uLi4uLi5fUAogICAg
M0E5MDogNTMgNDQgMTIgMTggMDEgMTIgMTUgMDUgMEEgMDUgMEEgMDAgMEMgMDggMDAgMDAgIFNE
Li4uLi4uLi4uLi4uLi4KICAgIDNBQTA6IDAwIDBDIEZFIDAwIDAwIDAwIDBDIDAyIDAwIDAwIDAw
IDA4IDUwIDUwIDQzIDU2ICAuLi4uLi4uLi4uLi5QUENWCiAgICAzQUIwOiAwQSAwMCAxNCAwQiA1
RiA1MCA1MCA0MyAwMCBBNCA1MCA1MCA0MyA1NiAwOCA1RiAgLi4uLl9QUEMuLlBQQ1YuXwogICAg
M0FDMDogNDMgNTAgNDMgMTIgNDAgMTkgMTcgMEEgMTcgMEEgMDMgMTEgMTQgMEEgMTEgODIgIENQ
Qy5ALi4uLi4uLi4uLi4KICAgIDNBRDA6IDBDIDAwIDdGIDA4IDE4IDA0IEIwIDAyIDAxIEMwIDAw
IDAwIDAwIDAwIDc5IDAwICAuLi4uLi4uLi4uLi4uLnkuCiAgICAzQUUwOiAxMSAxNCAwQSAxMSA4
MiAwQyAwMCA3RiAwOCAxMCAwNCBCMCAwMiAwMSBDMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
M0FGMDogMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgMDggMDggMDQgIC4u
LnkuLi4uLi4uLi4uLi4KICAgIDNCMDA6IEIwIDAyIDAxIEMwIDAwIDAwIDAwIDAwIDc5IDAwIDEx
IDE0IDBBIDExIDgyIDBDICAuLi4uLi4uLnkuLi4uLi4uCiAgICAzQjEwOiAwMCA3RiAwOCAwMCAw
NCBCMCAwMiAwMSBDMCAwMCAwMCAwMCAwMCA3OSAwMCAxMSAgLi4uLi4uLi4uLi4uLnkuLgogICAg
M0IyMDogMTQgMEEgMTEgODIgMEMgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDNCMzA6IDAwIDAwIDc5IDAwIDExIDE0IDBBIDExIDgyIDBDIDAw
IDdGIDA4IDEwIDA0IEIzICAuLnkuLi4uLi4uLi4uLi4uCiAgICAzQjQwOiAwMiAwMSBDMCAwMCAw
MCAwMCAwMCA3OSAwMCAxMSAxNCAwQSAxMSA4MiAwQyAwMCAgLi4uLi4uLnkuLi4uLi4uLgogICAg
M0I1MDogN0YgMDggMDggMDQgQjMgMDIgMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgIC4u
Li4uLi4uLi4uLnkuLi4KICAgIDNCNjA6IDBBIDExIDgyIDBDIDAwIDdGIDA4IDAwIDA0IEIzIDAy
IDAxIEMwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAzQjcwOiAwMCA3OSAwMCAxMSAx
NCAwQSAxMSA4MiAwQyAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLnkuLi4uLi4uLi4uLi4uLgogICAg
M0I4MDogMDAgMDAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgMDAgIC4u
Li4uLnkuLi4uLi4uLi4KICAgIDNCOTA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAw
IDc5IDAwIDExIDE0IDBBICAuLi4uLi4uLi4uLnkuLi4uCiAgICAzQkEwOiAxMSA4MiAwQyAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
M0JCMDogNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgNDAgMDAgMDQgRTcgMDAgMDAgIHku
Li4uLi4uLi5ALi4uLi4KICAgIDNCQzA6IDAwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0IDBBIDEx
IDgyIDBDIDAwIDdGIDQwICAuLi4uLnkuLi4uLi4uLi5ACiAgICAzQkQwOiAwMCAwNCBFOCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCA3OSAwMCAxMSAxNCAwQSAxMSAgLi4uLi4uLi4uLnkuLi4uLgogICAg
M0JFMDogODIgMEMgMDAgN0YgMDIgMDAgMDQgQjQgMDIgMDEgQzAgMDAgMDAgMDAgMDAgNzkgIC4u
Li4uLi4uLi4uLi4uLnkKICAgIDNCRjA6IDAwIDExIDE0IDBBIDExIDgyIDBDIDAwIDdGIDAxIDAw
IDA0IEIxIDAyIDAxIEMwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAzQzAwOiAwMCAwMCAwMCAwMCA3
OSAwMCAwQyAwMSAwMCAwMCAwMCAxMSAxNCAwQSAxMSA4MiAgLi4uLnkuLi4uLi4uLi4uLgogICAg
M0MxMDogMEMgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgNzkgMDAgIC4u
Li4uLi4uLi4uLi4ueS4KICAgIDNDMjA6IDExIDE0IDBBIDExIDgyIDBDIDAwIDdGIDA4IDE4IDA0
IEIzIDAyIDAxIEMwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAzQzMwOiAwMCAwMCAwMCA3OSAw
MCAxMSAxNCAwQSAxMSA4MiAwQyAwMCAwMCAwMCAwMCAwMCAgLi4ueS4uLi4uLi4uLi4uLgogICAg
M0M0MDogMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgNzkgMDAgMEMgMjEgMDIgMDAgMDAgMEMgIC4u
Li4uLi4ueS4uIS4uLi4KICAgIDNDNTA6IDY5IDEwIDAwIDAwIDEwIDQ3IDM1IDVDIDJGIDAzIDVG
IDUzIDQyIDVGIDUwIDRDICBpLi4uLkc1XC8uX1NCX1BMCiAgICAzQzYwOiA1NCA0NiA0MyAzMCAz
MSAzMiAwOCA1RiA1MCA0MyA1NCAxMiAyQyAwMiAxMSAxNCAgVEZDMDEyLl9QQ1QuLC4uLgogICAg
M0M3MDogMEEgMTEgODIgMEMgMDAgN0YgNDAgMDAgMDAgNjIgMDAgMDEgQzAgMDAgMDAgMDAgIC4u
Li4uLkAuLmIuLi4uLi4KICAgIDNDODA6IDAwIDc5IDAwIDExIDE0IDBBIDExIDgyIDBDIDAwIDdG
IDQwIDAwIDAwIDYzIDAwICAueS4uLi4uLi4uLkAuLmMuCiAgICAzQzkwOiAwMSBDMCAwMCAwMCAw
MCAwMCA3OSAwMCAwOCA1RiA1MCA1MyA1MyAxMiA0NiAwNiAgLi4uLi4ueS4uX1BTUy5GLgogICAg
M0NBMDogMDMgMTIgMjAgMDYgMEMgNjggMTAgMDAgMDAgMEMgQjAgMTMgMDAgMDAgMEMgMDAgIC4u
IC4uaC4uLi4uLi4uLi4KICAgIDNDQjA6IDAwIDAwIDAwIDBDIDAwIDAwIDAwIDAwIDBDIDAwIDAw
IDAwIDAwIDBDIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAzQ0MwOiAwMCAwMCAxMiAyMCAw
NiAwQyA5OCAwOCAwMCAwMCAwQyAwNCAwNiAwMCAwMCAwQyAgLi4uIC4uLi4uLi4uLi4uLgogICAg
M0NEMDogMDAgMDAgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMEMgMDEgMDAgMDAgMDAgMEMgMDEgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDNDRTA6IDAwIDAwIDAwIDEyIDIwIDA2IDBDIERDIDA1IDAwIDAw
IDBDIENGIDAzIDAwIDAwICAuLi4uIC4uLi4uLi4uLi4uCiAgICAzQ0YwOiAwQyAwMCAwMCAwMCAw
MCAwQyAwMCAwMCAwMCAwMCAwQyAwMiAwMCAwMCAwMCAwQyAgLi4uLi4uLi4uLi4uLi4uLgogICAg
M0QwMDogMDIgMDAgMDAgMDAgMDggNTggNTAgNTMgNTMgMTIgNEIgMEQgMDMgMTIgNDcgMDQgIC4u
Li4uWFBTUy5LLi4uRy4KICAgIDNEMTA6IDA4IDBDIDY4IDEwIDAwIDAwIDBDIEIwIDEzIDAwIDAw
IDBDIDAwIDAwIDAwIDAwICAuLmguLi4uLi4uLi4uLi4uCiAgICAzRDIwOiAwQyAwMCAwMCAwMCAw
MCAxMSAwQiAwQSAwOCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
M0QzMDogMDAgMTEgMEIgMEEgMDggMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMTEgMEIgMEEgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDNENDA6IDA4IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDExIDBC
IDBBIDA4IDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAzRDUwOiAwMCAwMCAwMCAwMCAw
MCAxMiA0NyAwNCAwOCAwQyA5OCAwOCAwMCAwMCAwQyAwNCAgLi4uLi4uRy4uLi4uLi4uLgogICAg
M0Q2MDogMDYgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMTEgMEIgMEEgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDNENzA6IDA4IDAxIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDExIDBC
IDBBIDA4IDAxIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAzRDgwOiAwMCAwMCAwMCAwMCAw
MCAxMSAwQiAwQSAwOCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
M0Q5MDogMDAgMTEgMEIgMEEgMDggMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMTIgNDcgMDQgIC4u
Li4uLi4uLi4uLi4uRy4KICAgIDNEQTA6IDA4IDBDIERDIDA1IDAwIDAwIDBDIENGIDAzIDAwIDAw
IDBDIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAzREIwOiAwQyAwMCAwMCAwMCAw
MCAxMSAwQiAwQSAwOCAwMiAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
M0RDMDogMDAgMTEgMEIgMEEgMDggMDIgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMTEgMEIgMEEgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDNERDA6IDA4IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDExIDBC
IDBBIDA4IDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAzREUwOiAwMCAwMCAwMCAwMCAw
MCAwOCA1RiA1MCA1MyA0NCAxMiAxOCAwMSAxMiAxNSAwNSAgLi4uLi4uX1BTRC4uLi4uLgogICAg
M0RGMDogMEEgMDUgMEEgMDAgMEMgMDkgMDAgMDAgMDAgMEMgRkUgMDAgMDAgMDAgMEMgMDIgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDNFMDA6IDAwIDAwIDAwIDA4IDUwIDUwIDQzIDU2IDBBIDAwIDE0
IDBCIDVGIDUwIDUwIDQzICAuLi4uUFBDVi4uLi5fUFBDCiAgICAzRTEwOiAwMCBBNCA1MCA1MCA0
MyA1NiAwOCA1RiA0MyA1MCA0MyAxMiA0MCAxOSAxNyAwQSAgLi5QUENWLl9DUEMuQC4uLgogICAg
M0UyMDogMTcgMEEgMDMgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgMDggMTggMDQgQjAgMDIgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDNFMzA6IDAxIEMwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0IDBB
IDExIDgyIDBDIDAwIDdGICAuLi4uLi55Li4uLi4uLi4uCiAgICAzRTQwOiAwOCAxMCAwNCBCMCAw
MiAwMSBDMCAwMCAwMCAwMCAwMCA3OSAwMCAxMSAxNCAwQSAgLi4uLi4uLi4uLi55Li4uLgogICAg
M0U1MDogMTEgODIgMEMgMDAgN0YgMDggMDggMDQgQjAgMDIgMDEgQzAgMDAgMDAgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDNFNjA6IDc5IDAwIDExIDE0IDBBIDExIDgyIDBDIDAwIDdGIDA4
IDAwIDA0IEIwIDAyIDAxICB5Li4uLi4uLi4uLi4uLi4uCiAgICAzRTcwOiBDMCAwMCAwMCAwMCAw
MCA3OSAwMCAxMSAxNCAwQSAxMSA4MiAwQyAwMCAwMCAwMCAgLi4uLi55Li4uLi4uLi4uLgogICAg
M0U4MDogMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgIC4u
Li4uLi4uLi55Li4uLi4KICAgIDNFOTA6IDgyIDBDIDAwIDdGIDA4IDEwIDA0IEIzIDAyIDAxIEMw
IDAwIDAwIDAwIDAwIDc5ICAuLi4uLi4uLi4uLi4uLi55CiAgICAzRUEwOiAwMCAxMSAxNCAwQSAx
MSA4MiAwQyAwMCA3RiAwOCAwOCAwNCBCMyAwMiAwMSBDMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
M0VCMDogMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgMDggMDAgIC4u
Li55Li4uLi4uLi4uLi4KICAgIDNFQzA6IDA0IEIzIDAyIDAxIEMwIDAwIDAwIDAwIDAwIDc5IDAw
IDExIDE0IDBBIDExIDgyICAuLi4uLi4uLi55Li4uLi4uCiAgICAzRUQwOiAwQyAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCA3OSAwMCAgLi4uLi4uLi4uLi4uLi55LgogICAg
M0VFMDogMTEgMTQgMEEgMTEgODIgMEMgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDNFRjA6IDAwIDAwIDAwIDc5IDAwIDExIDE0IDBBIDExIDgyIDBD
IDAwIDAwIDAwIDAwIDAwICAuLi55Li4uLi4uLi4uLi4uCiAgICAzRjAwOiAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCA3OSAwMCAxMSAxNCAwQSAxMSA4MiAwQyAgLi4uLi4uLi55Li4uLi4uLgogICAg
M0YxMDogMDAgN0YgNDAgMDAgMDQgRTcgMDAgMDAgMDAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgIC4u
QC4uLi4uLi4uLi55Li4KICAgIDNGMjA6IDE0IDBBIDExIDgyIDBDIDAwIDdGIDQwIDAwIDA0IEU4
IDAwIDAwIDAwIDAwIDAwICAuLi4uLi4uQC4uLi4uLi4uCiAgICAzRjMwOiAwMCAwMCA3OSAwMCAx
MSAxNCAwQSAxMSA4MiAwQyAwMCA3RiAwMiAwMCAwNCBCNCAgLi55Li4uLi4uLi4uLi4uLgogICAg
M0Y0MDogMDIgMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgIC4u
Li4uLi55Li4uLi4uLi4KICAgIDNGNTA6IDdGIDAxIDAwIDA0IEIxIDAyIDAxIEMwIDAwIDAwIDAw
IDAwIDc5IDAwIDBDIDAxICAuLi4uLi4uLi4uLi55Li4uCiAgICAzRjYwOiAwMCAwMCAwMCAxMSAx
NCAwQSAxMSA4MiAwQyAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
M0Y3MDogMDAgMDAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgIC4u
Li4uLnkuLi4uLi4uLi4KICAgIDNGODA6IDA4IDE4IDA0IEIzIDAyIDAxIEMwIDAwIDAwIDAwIDAw
IDc5IDAwIDExIDE0IDBBICAuLi4uLi4uLi4uLnkuLi4uCiAgICAzRjkwOiAxMSA4MiAwQyAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
M0ZBMDogNzkgMDAgMEMgMjEgMDIgMDAgMDAgMEMgNjkgMTAgMDAgMDAgMTAgNDcgMzUgNUMgIHku
LiEuLi4uaS4uLi5HNVwKICAgIDNGQjA6IDJGIDAzIDVGIDUzIDQyIDVGIDUwIDRDIDU0IDQ2IDQz
IDMwIDMxIDMzIDA4IDVGICAvLl9TQl9QTFRGQzAxMy5fCiAgICAzRkMwOiA1MCA0MyA1NCAxMiAy
QyAwMiAxMSAxNCAwQSAxMSA4MiAwQyAwMCA3RiA0MCAwMCAgUENULiwuLi4uLi4uLi5ALgogICAg
M0ZEMDogMDAgNjIgMDAgMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgIC5i
Li4uLi4uLnkuLi4uLi4KICAgIDNGRTA6IDBDIDAwIDdGIDQwIDAwIDAwIDYzIDAwIDAxIEMwIDAw
IDAwIDAwIDAwIDc5IDAwICAuLi5ALi5jLi4uLi4uLnkuCiAgICAzRkYwOiAwOCA1RiA1MCA1MyA1
MyAxMiA0NiAwNiAwMyAxMiAyMCAwNiAwQyA2OCAxMCAwMCAgLl9QU1MuRi4uLiAuLmguLgogICAg
NDAwMDogMDAgMEMgQjAgMTMgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMEMgMDAgMDAgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDQwMTA6IDBDIDAwIDAwIDAwIDAwIDBDIDAwIDAwIDAwIDAwIDEy
IDIwIDA2IDBDIDk4IDA4ICAuLi4uLi4uLi4uLiAuLi4uCiAgICA0MDIwOiAwMCAwMCAwQyAwNCAw
NiAwMCAwMCAwQyAwMCAwMCAwMCAwMCAwQyAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
NDAzMDogMDAgMEMgMDEgMDAgMDAgMDAgMEMgMDEgMDAgMDAgMDAgMTIgMjAgMDYgMEMgREMgIC4u
Li4uLi4uLi4uLiAuLi4KICAgIDQwNDA6IDA1IDAwIDAwIDBDIENGIDAzIDAwIDAwIDBDIDAwIDAw
IDAwIDAwIDBDIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA0MDUwOiAwMCAwMCAwQyAwMiAw
MCAwMCAwMCAwQyAwMiAwMCAwMCAwMCAwOCA1OCA1MCA1MyAgLi4uLi4uLi4uLi4uLlhQUwogICAg
NDA2MDogNTMgMTIgNEIgMEQgMDMgMTIgNDcgMDQgMDggMEMgNjggMTAgMDAgMDAgMEMgQjAgIFMu
Sy4uLkcuLi5oLi4uLi4KICAgIDQwNzA6IDEzIDAwIDAwIDBDIDAwIDAwIDAwIDAwIDBDIDAwIDAw
IDAwIDAwIDExIDBCIDBBICAuLi4uLi4uLi4uLi4uLi4uCiAgICA0MDgwOiAwOCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAxMSAwQiAwQSAwOCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
NDA5MDogMDAgMDAgMDAgMDAgMDAgMTEgMEIgMEEgMDggMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDQwQTA6IDAwIDExIDBCIDBBIDA4IDAwIDAwIDAwIDAwIDAwIDAw
IDAwIDAwIDEyIDQ3IDA0ICAuLi4uLi4uLi4uLi4uLkcuCiAgICA0MEIwOiAwOCAwQyA5OCAwOCAw
MCAwMCAwQyAwNCAwNiAwMCAwMCAwQyAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
NDBDMDogMEMgMDAgMDAgMDAgMDAgMTEgMEIgMEEgMDggMDEgMDAgMDAgMDAgMDAgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDQwRDA6IDAwIDExIDBCIDBBIDA4IDAxIDAwIDAwIDAwIDAwIDAw
IDAwIDAwIDExIDBCIDBBICAuLi4uLi4uLi4uLi4uLi4uCiAgICA0MEUwOiAwOCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAxMSAwQiAwQSAwOCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
NDBGMDogMDAgMDAgMDAgMDAgMDAgMTIgNDcgMDQgMDggMEMgREMgMDUgMDAgMDAgMEMgQ0YgIC4u
Li4uLkcuLi4uLi4uLi4KICAgIDQxMDA6IDAzIDAwIDAwIDBDIDAwIDAwIDAwIDAwIDBDIDAwIDAw
IDAwIDAwIDExIDBCIDBBICAuLi4uLi4uLi4uLi4uLi4uCiAgICA0MTEwOiAwOCAwMiAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAxMSAwQiAwQSAwOCAwMiAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
NDEyMDogMDAgMDAgMDAgMDAgMDAgMTEgMEIgMEEgMDggMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDQxMzA6IDAwIDExIDBCIDBBIDA4IDAwIDAwIDAwIDAwIDAwIDAw
IDAwIDAwIDA4IDVGIDUwICAuLi4uLi4uLi4uLi4uLl9QCiAgICA0MTQwOiA1MyA0NCAxMiAxOCAw
MSAxMiAxNSAwNSAwQSAwNSAwQSAwMCAwQyAwOSAwMCAwMCAgU0QuLi4uLi4uLi4uLi4uLgogICAg
NDE1MDogMDAgMEMgRkUgMDAgMDAgMDAgMEMgMDIgMDAgMDAgMDAgMDggNTAgNTAgNDMgNTYgIC4u
Li4uLi4uLi4uLlBQQ1YKICAgIDQxNjA6IDBBIDAwIDE0IDBCIDVGIDUwIDUwIDQzIDAwIEE0IDUw
IDUwIDQzIDU2IDA4IDVGICAuLi4uX1BQQy4uUFBDVi5fCiAgICA0MTcwOiA0MyA1MCA0MyAxMiA0
MCAxOSAxNyAwQSAxNyAwQSAwMyAxMSAxNCAwQSAxMSA4MiAgQ1BDLkAuLi4uLi4uLi4uLgogICAg
NDE4MDogMEMgMDAgN0YgMDggMTggMDQgQjAgMDIgMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgIC4u
Li4uLi4uLi4uLi4ueS4KICAgIDQxOTA6IDExIDE0IDBBIDExIDgyIDBDIDAwIDdGIDA4IDEwIDA0
IEIwIDAyIDAxIEMwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA0MUEwOiAwMCAwMCAwMCA3OSAw
MCAxMSAxNCAwQSAxMSA4MiAwQyAwMCA3RiAwOCAwOCAwNCAgLi4ueS4uLi4uLi4uLi4uLgogICAg
NDFCMDogQjAgMDIgMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgIC4u
Li4uLi4ueS4uLi4uLi4KICAgIDQxQzA6IDAwIDdGIDA4IDAwIDA0IEIwIDAyIDAxIEMwIDAwIDAw
IDAwIDAwIDc5IDAwIDExICAuLi4uLi4uLi4uLi4ueS4uCiAgICA0MUQwOiAxNCAwQSAxMSA4MiAw
QyAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
NDFFMDogMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgMDggMTAgMDQgQjMgIC4u
eS4uLi4uLi4uLi4uLi4KICAgIDQxRjA6IDAyIDAxIEMwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0
IDBBIDExIDgyIDBDIDAwICAuLi4uLi4ueS4uLi4uLi4uCiAgICA0MjAwOiA3RiAwOCAwOCAwNCBC
MyAwMiAwMSBDMCAwMCAwMCAwMCAwMCA3OSAwMCAxMSAxNCAgLi4uLi4uLi4uLi4ueS4uLgogICAg
NDIxMDogMEEgMTEgODIgMEMgMDAgN0YgMDggMDAgMDQgQjMgMDIgMDEgQzAgMDAgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDQyMjA6IDAwIDc5IDAwIDExIDE0IDBBIDExIDgyIDBDIDAwIDAw
IDAwIDAwIDAwIDAwIDAwICAueS4uLi4uLi4uLi4uLi4uCiAgICA0MjMwOiAwMCAwMCAwMCAwMCAw
MCAwMCA3OSAwMCAxMSAxNCAwQSAxMSA4MiAwQyAwMCAwMCAgLi4uLi4ueS4uLi4uLi4uLgogICAg
NDI0MDogMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgIC4u
Li4uLi4uLi4ueS4uLi4KICAgIDQyNTA6IDExIDgyIDBDIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAw
IDAwIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA0MjYwOiA3OSAwMCAxMSAxNCAw
QSAxMSA4MiAwQyAwMCA3RiA0MCAwMCAwNCBFNyAwMCAwMCAgeS4uLi4uLi4uLkAuLi4uLgogICAg
NDI3MDogMDAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgNDAgIC4u
Li4ueS4uLi4uLi4uLkAKICAgIDQyODA6IDAwIDA0IEU4IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDc5
IDAwIDExIDE0IDBBIDExICAuLi4uLi4uLi4ueS4uLi4uCiAgICA0MjkwOiA4MiAwQyAwMCA3RiAw
MiAwMCAwNCBCNCAwMiAwMSBDMCAwMCAwMCAwMCAwMCA3OSAgLi4uLi4uLi4uLi4uLi4ueQogICAg
NDJBMDogMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgMDEgMDAgMDQgQjEgMDIgMDEgQzAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDQyQjA6IDAwIDAwIDAwIDAwIDc5IDAwIDBDIDAxIDAwIDAwIDAw
IDExIDE0IDBBIDExIDgyICAuLi4ueS4uLi4uLi4uLi4uCiAgICA0MkMwOiAwQyAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCA3OSAwMCAgLi4uLi4uLi4uLi4uLi55LgogICAg
NDJEMDogMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgMDggMTggMDQgQjMgMDIgMDEgQzAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDQyRTA6IDAwIDAwIDAwIDc5IDAwIDExIDE0IDBBIDExIDgyIDBD
IDAwIDAwIDAwIDAwIDAwICAuLi55Li4uLi4uLi4uLi4uCiAgICA0MkYwOiAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCA3OSAwMCAwQyAyMSAwMiAwMCAwMCAwQyAgLi4uLi4uLi55Li4hLi4uLgogICAg
NDMwMDogNjkgMTAgMDAgMDAgMTAgNDcgMzUgNUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAgNEMgIGku
Li4uRzVcLy5fU0JfUEwKICAgIDQzMTA6IDU0IDQ2IDQzIDMwIDMxIDM0IDA4IDVGIDUwIDQzIDU0
IDEyIDJDIDAyIDExIDE0ICBURkMwMTQuX1BDVC4sLi4uCiAgICA0MzIwOiAwQSAxMSA4MiAwQyAw
MCA3RiA0MCAwMCAwMCA2MiAwMCAwMSBDMCAwMCAwMCAwMCAgLi4uLi4uQC4uYi4uLi4uLgogICAg
NDMzMDogMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgNDAgMDAgMDAgNjMgMDAgIC55
Li4uLi4uLi4uQC4uYy4KICAgIDQzNDA6IDAxIEMwIDAwIDAwIDAwIDAwIDc5IDAwIDA4IDVGIDUw
IDUzIDUzIDEyIDQ2IDA2ICAuLi4uLi55Li5fUFNTLkYuCiAgICA0MzUwOiAwMyAxMiAyMCAwNiAw
QyA2OCAxMCAwMCAwMCAwQyBCMCAxMyAwMCAwMCAwQyAwMCAgLi4gLi5oLi4uLi4uLi4uLgogICAg
NDM2MDogMDAgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMEMgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDQzNzA6IDAwIDAwIDEyIDIwIDA2IDBDIDk4IDA4IDAwIDAwIDBD
IDA0IDA2IDAwIDAwIDBDICAuLi4gLi4uLi4uLi4uLi4uCiAgICA0MzgwOiAwMCAwMCAwMCAwMCAw
QyAwMCAwMCAwMCAwMCAwQyAwMSAwMCAwMCAwMCAwQyAwMSAgLi4uLi4uLi4uLi4uLi4uLgogICAg
NDM5MDogMDAgMDAgMDAgMTIgMjAgMDYgMEMgREMgMDUgMDAgMDAgMEMgQ0YgMDMgMDAgMDAgIC4u
Li4gLi4uLi4uLi4uLi4KICAgIDQzQTA6IDBDIDAwIDAwIDAwIDAwIDBDIDAwIDAwIDAwIDAwIDBD
IDAyIDAwIDAwIDAwIDBDICAuLi4uLi4uLi4uLi4uLi4uCiAgICA0M0IwOiAwMiAwMCAwMCAwMCAw
OCA1OCA1MCA1MyA1MyAxMiA0QiAwRCAwMyAxMiA0NyAwNCAgLi4uLi5YUFNTLksuLi5HLgogICAg
NDNDMDogMDggMEMgNjggMTAgMDAgMDAgMEMgQjAgMTMgMDAgMDAgMEMgMDAgMDAgMDAgMDAgIC4u
aC4uLi4uLi4uLi4uLi4KICAgIDQzRDA6IDBDIDAwIDAwIDAwIDAwIDExIDBCIDBBIDA4IDAwIDAw
IDAwIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA0M0UwOiAwMCAxMSAwQiAwQSAw
OCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAxMSAwQiAwQSAgLi4uLi4uLi4uLi4uLi4uLgogICAg
NDNGMDogMDggMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMTEgMEIgMEEgMDggMDAgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDQ0MDA6IDAwIDAwIDAwIDAwIDAwIDEyIDQ3IDA0IDA4IDBDIDk4
IDA4IDAwIDAwIDBDIDA0ICAuLi4uLi5HLi4uLi4uLi4uCiAgICA0NDEwOiAwNiAwMCAwMCAwQyAw
MCAwMCAwMCAwMCAwQyAwMCAwMCAwMCAwMCAxMSAwQiAwQSAgLi4uLi4uLi4uLi4uLi4uLgogICAg
NDQyMDogMDggMDEgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMTEgMEIgMEEgMDggMDEgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDQ0MzA6IDAwIDAwIDAwIDAwIDAwIDExIDBCIDBBIDA4IDAwIDAw
IDAwIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA0NDQwOiAwMCAxMSAwQiAwQSAw
OCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAxMiA0NyAwNCAgLi4uLi4uLi4uLi4uLi5HLgogICAg
NDQ1MDogMDggMEMgREMgMDUgMDAgMDAgMEMgQ0YgMDMgMDAgMDAgMEMgMDAgMDAgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDQ0NjA6IDBDIDAwIDAwIDAwIDAwIDExIDBCIDBBIDA4IDAyIDAw
IDAwIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA0NDcwOiAwMCAxMSAwQiAwQSAw
OCAwMiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAxMSAwQiAwQSAgLi4uLi4uLi4uLi4uLi4uLgogICAg
NDQ4MDogMDggMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMTEgMEIgMEEgMDggMDAgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDQ0OTA6IDAwIDAwIDAwIDAwIDAwIDA4IDVGIDUwIDUzIDQ0IDEy
IDE4IDAxIDEyIDE1IDA1ICAuLi4uLi5fUFNELi4uLi4uCiAgICA0NEEwOiAwQSAwNSAwQSAwMCAw
QyAwQSAwMCAwMCAwMCAwQyBGRSAwMCAwMCAwMCAwQyAwMiAgLi4uLi4uLi4uLi4uLi4uLgogICAg
NDRCMDogMDAgMDAgMDAgMDggNTAgNTAgNDMgNTYgMEEgMDAgMTQgMEIgNUYgNTAgNTAgNDMgIC4u
Li5QUENWLi4uLl9QUEMKICAgIDQ0QzA6IDAwIEE0IDUwIDUwIDQzIDU2IDA4IDVGIDQzIDUwIDQz
IDEyIDQwIDE5IDE3IDBBICAuLlBQQ1YuX0NQQy5ALi4uCiAgICA0NEQwOiAxNyAwQSAwMyAxMSAx
NCAwQSAxMSA4MiAwQyAwMCA3RiAwOCAxOCAwNCBCMCAwMiAgLi4uLi4uLi4uLi4uLi4uLgogICAg
NDRFMDogMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgIC4u
Li4uLnkuLi4uLi4uLi4KICAgIDQ0RjA6IDA4IDEwIDA0IEIwIDAyIDAxIEMwIDAwIDAwIDAwIDAw
IDc5IDAwIDExIDE0IDBBICAuLi4uLi4uLi4uLnkuLi4uCiAgICA0NTAwOiAxMSA4MiAwQyAwMCA3
RiAwOCAwOCAwNCBCMCAwMiAwMSBDMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
NDUxMDogNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgMDggMDAgMDQgQjAgMDIgMDEgIHku
Li4uLi4uLi4uLi4uLi4KICAgIDQ1MjA6IEMwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0IDBBIDEx
IDgyIDBDIDAwIDAwIDAwICAuLi4uLnkuLi4uLi4uLi4uCiAgICA0NTMwOiAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCA3OSAwMCAxMSAxNCAwQSAxMSAgLi4uLi4uLi4uLnkuLi4uLgogICAg
NDU0MDogODIgMEMgMDAgN0YgMDggMTAgMDQgQjMgMDIgMDEgQzAgMDAgMDAgMDAgMDAgNzkgIC4u
Li4uLi4uLi4uLi4uLnkKICAgIDQ1NTA6IDAwIDExIDE0IDBBIDExIDgyIDBDIDAwIDdGIDA4IDA4
IDA0IEIzIDAyIDAxIEMwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA0NTYwOiAwMCAwMCAwMCAwMCA3
OSAwMCAxMSAxNCAwQSAxMSA4MiAwQyAwMCA3RiAwOCAwMCAgLi4uLnkuLi4uLi4uLi4uLgogICAg
NDU3MDogMDQgQjMgMDIgMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgIC4u
Li4uLi4uLnkuLi4uLi4KICAgIDQ1ODA6IDBDIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAw
IDAwIDAwIDAwIDc5IDAwICAuLi4uLi4uLi4uLi4uLnkuCiAgICA0NTkwOiAxMSAxNCAwQSAxMSA4
MiAwQyAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
NDVBMDogMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgMDAgMDAgMDAgMDAgIC4u
LnkuLi4uLi4uLi4uLi4KICAgIDQ1QjA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDc5IDAwIDEx
IDE0IDBBIDExIDgyIDBDICAuLi4uLi4uLnkuLi4uLi4uCiAgICA0NUMwOiAwMCA3RiA0MCAwMCAw
NCBFNyAwMCAwMCAwMCAwMCAwMCAwMCAwMCA3OSAwMCAxMSAgLi5ALi4uLi4uLi4uLnkuLgogICAg
NDVEMDogMTQgMEEgMTEgODIgMEMgMDAgN0YgNDAgMDAgMDQgRTggMDAgMDAgMDAgMDAgMDAgIC4u
Li4uLi5ALi4uLi4uLi4KICAgIDQ1RTA6IDAwIDAwIDc5IDAwIDExIDE0IDBBIDExIDgyIDBDIDAw
IDdGIDAyIDAwIDA0IEI0ICAuLnkuLi4uLi4uLi4uLi4uCiAgICA0NUYwOiAwMiAwMSBDMCAwMCAw
MCAwMCAwMCA3OSAwMCAxMSAxNCAwQSAxMSA4MiAwQyAwMCAgLi4uLi4uLnkuLi4uLi4uLgogICAg
NDYwMDogN0YgMDEgMDAgMDQgQjEgMDIgMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgMEMgMDEgIC4u
Li4uLi4uLi4uLnkuLi4KICAgIDQ2MTA6IDAwIDAwIDAwIDExIDE0IDBBIDExIDgyIDBDIDAwIDAw
IDAwIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA0NjIwOiAwMCAwMCAwMCAwMCAw
MCAwMCA3OSAwMCAxMSAxNCAwQSAxMSA4MiAwQyAwMCA3RiAgLi4uLi4ueS4uLi4uLi4uLgogICAg
NDYzMDogMDggMTggMDQgQjMgMDIgMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgIC4u
Li4uLi4uLi4ueS4uLi4KICAgIDQ2NDA6IDExIDgyIDBDIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAw
IDAwIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA0NjUwOiA3OSAwMCAwQyAyMSAw
MiAwMCAwMCAwQyA2OSAxMCAwMCAwMCAxMCA0NyAzNSA1QyAgeS4uIS4uLi5pLi4uLkc1XAogICAg
NDY2MDogMkYgMDMgNUYgNTMgNDIgNUYgNTAgNEMgNTQgNDYgNDMgMzAgMzEgMzUgMDggNUYgIC8u
X1NCX1BMVEZDMDE1Ll8KICAgIDQ2NzA6IDUwIDQzIDU0IDEyIDJDIDAyIDExIDE0IDBBIDExIDgy
IDBDIDAwIDdGIDQwIDAwICBQQ1QuLC4uLi4uLi4uLkAuCiAgICA0NjgwOiAwMCA2MiAwMCAwMSBD
MCAwMCAwMCAwMCAwMCA3OSAwMCAxMSAxNCAwQSAxMSA4MiAgLmIuLi4uLi4ueS4uLi4uLgogICAg
NDY5MDogMEMgMDAgN0YgNDAgMDAgMDAgNjMgMDAgMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgIC4u
LkAuLmMuLi4uLi4ueS4KICAgIDQ2QTA6IDA4IDVGIDUwIDUzIDUzIDEyIDQ2IDA2IDAzIDEyIDIw
IDA2IDBDIDY4IDEwIDAwICAuX1BTUy5GLi4uIC4uaC4uCiAgICA0NkIwOiAwMCAwQyBCMCAxMyAw
MCAwMCAwQyAwMCAwMCAwMCAwMCAwQyAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
NDZDMDogMEMgMDAgMDAgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMTIgMjAgMDYgMEMgOTggMDggIC4u
Li4uLi4uLi4uIC4uLi4KICAgIDQ2RDA6IDAwIDAwIDBDIDA0IDA2IDAwIDAwIDBDIDAwIDAwIDAw
IDAwIDBDIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA0NkUwOiAwMCAwQyAwMSAwMCAw
MCAwMCAwQyAwMSAwMCAwMCAwMCAxMiAyMCAwNiAwQyBEQyAgLi4uLi4uLi4uLi4uIC4uLgogICAg
NDZGMDogMDUgMDAgMDAgMEMgQ0YgMDMgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMEMgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDQ3MDA6IDAwIDAwIDBDIDAyIDAwIDAwIDAwIDBDIDAyIDAwIDAw
IDAwIDA4IDU4IDUwIDUzICAuLi4uLi4uLi4uLi4uWFBTCiAgICA0NzEwOiA1MyAxMiA0QiAwRCAw
MyAxMiA0NyAwNCAwOCAwQyA2OCAxMCAwMCAwMCAwQyBCMCAgUy5LLi4uRy4uLmguLi4uLgogICAg
NDcyMDogMTMgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMTEgMEIgMEEgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDQ3MzA6IDA4IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDExIDBC
IDBBIDA4IDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA0NzQwOiAwMCAwMCAwMCAwMCAw
MCAxMSAwQiAwQSAwOCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
NDc1MDogMDAgMTEgMEIgMEEgMDggMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMTIgNDcgMDQgIC4u
Li4uLi4uLi4uLi4uRy4KICAgIDQ3NjA6IDA4IDBDIDk4IDA4IDAwIDAwIDBDIDA0IDA2IDAwIDAw
IDBDIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA0NzcwOiAwQyAwMCAwMCAwMCAw
MCAxMSAwQiAwQSAwOCAwMSAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
NDc4MDogMDAgMTEgMEIgMEEgMDggMDEgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMTEgMEIgMEEgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDQ3OTA6IDA4IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDExIDBC
IDBBIDA4IDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA0N0EwOiAwMCAwMCAwMCAwMCAw
MCAxMiA0NyAwNCAwOCAwQyBEQyAwNSAwMCAwMCAwQyBDRiAgLi4uLi4uRy4uLi4uLi4uLgogICAg
NDdCMDogMDMgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMTEgMEIgMEEgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDQ3QzA6IDA4IDAyIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDExIDBC
IDBBIDA4IDAyIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA0N0QwOiAwMCAwMCAwMCAwMCAw
MCAxMSAwQiAwQSAwOCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
NDdFMDogMDAgMTEgMEIgMEEgMDggMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDggNUYgNTAgIC4u
Li4uLi4uLi4uLi4uX1AKICAgIDQ3RjA6IDUzIDQ0IDEyIDE4IDAxIDEyIDE1IDA1IDBBIDA1IDBB
IDAwIDBDIDBBIDAwIDAwICBTRC4uLi4uLi4uLi4uLi4uCiAgICA0ODAwOiAwMCAwQyBGRSAwMCAw
MCAwMCAwQyAwMiAwMCAwMCAwMCAwOCA1MCA1MCA0MyA1NiAgLi4uLi4uLi4uLi4uUFBDVgogICAg
NDgxMDogMEEgMDAgMTQgMEIgNUYgNTAgNTAgNDMgMDAgQTQgNTAgNTAgNDMgNTYgMDggNUYgIC4u
Li5fUFBDLi5QUENWLl8KICAgIDQ4MjA6IDQzIDUwIDQzIDEyIDQwIDE5IDE3IDBBIDE3IDBBIDAz
IDExIDE0IDBBIDExIDgyICBDUEMuQC4uLi4uLi4uLi4uCiAgICA0ODMwOiAwQyAwMCA3RiAwOCAx
OCAwNCBCMCAwMiAwMSBDMCAwMCAwMCAwMCAwMCA3OSAwMCAgLi4uLi4uLi4uLi4uLi55LgogICAg
NDg0MDogMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgMDggMTAgMDQgQjAgMDIgMDEgQzAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDQ4NTA6IDAwIDAwIDAwIDc5IDAwIDExIDE0IDBBIDExIDgyIDBD
IDAwIDdGIDA4IDA4IDA0ICAuLi55Li4uLi4uLi4uLi4uCiAgICA0ODYwOiBCMCAwMiAwMSBDMCAw
MCAwMCAwMCAwMCA3OSAwMCAxMSAxNCAwQSAxMSA4MiAwQyAgLi4uLi4uLi55Li4uLi4uLgogICAg
NDg3MDogMDAgN0YgMDggMDAgMDQgQjAgMDIgMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgIC4u
Li4uLi4uLi4uLi55Li4KICAgIDQ4ODA6IDE0IDBBIDExIDgyIDBDIDAwIDAwIDAwIDAwIDAwIDAw
IDAwIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA0ODkwOiAwMCAwMCA3OSAwMCAx
MSAxNCAwQSAxMSA4MiAwQyAwMCA3RiAwOCAxMCAwNCBCMyAgLi55Li4uLi4uLi4uLi4uLgogICAg
NDhBMDogMDIgMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgIC4u
Li4uLi55Li4uLi4uLi4KICAgIDQ4QjA6IDdGIDA4IDA4IDA0IEIzIDAyIDAxIEMwIDAwIDAwIDAw
IDAwIDc5IDAwIDExIDE0ICAuLi4uLi4uLi4uLi55Li4uCiAgICA0OEMwOiAwQSAxMSA4MiAwQyAw
MCA3RiAwOCAwMCAwNCBCMyAwMiAwMSBDMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
NDhEMDogMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC55
Li4uLi4uLi4uLi4uLi4KICAgIDQ4RTA6IDAwIDAwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0IDBB
IDExIDgyIDBDIDAwIDAwICAuLi4uLi55Li4uLi4uLi4uCiAgICA0OEYwOiAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAwMCA3OSAwMCAxMSAxNCAwQSAgLi4uLi4uLi4uLi55Li4uLgogICAg
NDkwMDogMTEgODIgMEMgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDQ5MTA6IDc5IDAwIDExIDE0IDBBIDExIDgyIDBDIDAwIDdGIDQw
IDAwIDA0IEU3IDAwIDAwICB5Li4uLi4uLi4uQC4uLi4uCiAgICA0OTIwOiAwMCAwMCAwMCAwMCAw
MCA3OSAwMCAxMSAxNCAwQSAxMSA4MiAwQyAwMCA3RiA0MCAgLi4uLi55Li4uLi4uLi4uQAogICAg
NDkzMDogMDAgMDQgRTggMDAgMDAgMDAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgIC4u
Li4uLi4uLi55Li4uLi4KICAgIDQ5NDA6IDgyIDBDIDAwIDdGIDAyIDAwIDA0IEI0IDAyIDAxIEMw
IDAwIDAwIDAwIDAwIDc5ICAuLi4uLi4uLi4uLi4uLi55CiAgICA0OTUwOiAwMCAxMSAxNCAwQSAx
MSA4MiAwQyAwMCA3RiAwMSAwMCAwNCBCMSAwMiAwMSBDMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
NDk2MDogMDAgMDAgMDAgMDAgNzkgMDAgMEMgMDEgMDAgMDAgMDAgMTEgMTQgMEEgMTEgODIgIC4u
Li55Li4uLi4uLi4uLi4KICAgIDQ5NzA6IDBDIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAw
IDAwIDAwIDAwIDc5IDAwICAuLi4uLi4uLi4uLi4uLnkuCiAgICA0OTgwOiAxMSAxNCAwQSAxMSA4
MiAwQyAwMCA3RiAwOCAxOCAwNCBCMyAwMiAwMSBDMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
NDk5MDogMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgMDAgMDAgMDAgMDAgIC4u
LnkuLi4uLi4uLi4uLi4KICAgIDQ5QTA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDc5IDAwIDBD
IDIxIDAyIDAwIDAwIDBDICAuLi4uLi4uLnkuLiEuLi4uCiAgICA0OUIwOiA2OSAxMCAwMCAwMCAx
MCA0NyAzNSA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0QyAgaS4uLi5HNVwvLl9TQl9QTAogICAg
NDlDMDogNTQgNDYgNDMgMzAgMzEgMzYgMDggNUYgNTAgNDMgNTQgMTIgMkMgMDIgMTEgMTQgIFRG
QzAxNi5fUENULiwuLi4KICAgIDQ5RDA6IDBBIDExIDgyIDBDIDAwIDdGIDQwIDAwIDAwIDYyIDAw
IDAxIEMwIDAwIDAwIDAwICAuLi4uLi5ALi5iLi4uLi4uCiAgICA0OUUwOiAwMCA3OSAwMCAxMSAx
NCAwQSAxMSA4MiAwQyAwMCA3RiA0MCAwMCAwMCA2MyAwMCAgLnkuLi4uLi4uLi5ALi5jLgogICAg
NDlGMDogMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgMDggNUYgNTAgNTMgNTMgMTIgNDYgMDYgIC4u
Li4uLnkuLl9QU1MuRi4KICAgIDRBMDA6IDAzIDEyIDIwIDA2IDBDIDY4IDEwIDAwIDAwIDBDIEIw
IDEzIDAwIDAwIDBDIDAwICAuLiAuLmguLi4uLi4uLi4uCiAgICA0QTEwOiAwMCAwMCAwMCAwQyAw
MCAwMCAwMCAwMCAwQyAwMCAwMCAwMCAwMCAwQyAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
NEEyMDogMDAgMDAgMTIgMjAgMDYgMEMgOTggMDggMDAgMDAgMEMgMDQgMDYgMDAgMDAgMEMgIC4u
LiAuLi4uLi4uLi4uLi4KICAgIDRBMzA6IDAwIDAwIDAwIDAwIDBDIDAwIDAwIDAwIDAwIDBDIDAx
IDAwIDAwIDAwIDBDIDAxICAuLi4uLi4uLi4uLi4uLi4uCiAgICA0QTQwOiAwMCAwMCAwMCAxMiAy
MCAwNiAwQyBEQyAwNSAwMCAwMCAwQyBDRiAwMyAwMCAwMCAgLi4uLiAuLi4uLi4uLi4uLgogICAg
NEE1MDogMEMgMDAgMDAgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMEMgMDIgMDAgMDAgMDAgMEMgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDRBNjA6IDAyIDAwIDAwIDAwIDA4IDU4IDUwIDUzIDUzIDEyIDRC
IDBEIDAzIDEyIDQ3IDA0ICAuLi4uLlhQU1MuSy4uLkcuCiAgICA0QTcwOiAwOCAwQyA2OCAxMCAw
MCAwMCAwQyBCMCAxMyAwMCAwMCAwQyAwMCAwMCAwMCAwMCAgLi5oLi4uLi4uLi4uLi4uLgogICAg
NEE4MDogMEMgMDAgMDAgMDAgMDAgMTEgMEIgMEEgMDggMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDRBOTA6IDAwIDExIDBCIDBBIDA4IDAwIDAwIDAwIDAwIDAwIDAw
IDAwIDAwIDExIDBCIDBBICAuLi4uLi4uLi4uLi4uLi4uCiAgICA0QUEwOiAwOCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAxMSAwQiAwQSAwOCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
NEFCMDogMDAgMDAgMDAgMDAgMDAgMTIgNDcgMDQgMDggMEMgOTggMDggMDAgMDAgMEMgMDQgIC4u
Li4uLkcuLi4uLi4uLi4KICAgIDRBQzA6IDA2IDAwIDAwIDBDIDAwIDAwIDAwIDAwIDBDIDAwIDAw
IDAwIDAwIDExIDBCIDBBICAuLi4uLi4uLi4uLi4uLi4uCiAgICA0QUQwOiAwOCAwMSAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAxMSAwQiAwQSAwOCAwMSAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
NEFFMDogMDAgMDAgMDAgMDAgMDAgMTEgMEIgMEEgMDggMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDRBRjA6IDAwIDExIDBCIDBBIDA4IDAwIDAwIDAwIDAwIDAwIDAw
IDAwIDAwIDEyIDQ3IDA0ICAuLi4uLi4uLi4uLi4uLkcuCiAgICA0QjAwOiAwOCAwQyBEQyAwNSAw
MCAwMCAwQyBDRiAwMyAwMCAwMCAwQyAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
NEIxMDogMEMgMDAgMDAgMDAgMDAgMTEgMEIgMEEgMDggMDIgMDAgMDAgMDAgMDAgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDRCMjA6IDAwIDExIDBCIDBBIDA4IDAyIDAwIDAwIDAwIDAwIDAw
IDAwIDAwIDExIDBCIDBBICAuLi4uLi4uLi4uLi4uLi4uCiAgICA0QjMwOiAwOCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAxMSAwQiAwQSAwOCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
NEI0MDogMDAgMDAgMDAgMDAgMDAgMDggNUYgNTAgNTMgNDQgMTIgMTggMDEgMTIgMTUgMDUgIC4u
Li4uLl9QU0QuLi4uLi4KICAgIDRCNTA6IDBBIDA1IDBBIDAwIDBDIDBCIDAwIDAwIDAwIDBDIEZF
IDAwIDAwIDAwIDBDIDAyICAuLi4uLi4uLi4uLi4uLi4uCiAgICA0QjYwOiAwMCAwMCAwMCAwOCA1
MCA1MCA0MyA1NiAwQSAwMCAxNCAwQiA1RiA1MCA1MCA0MyAgLi4uLlBQQ1YuLi4uX1BQQwogICAg
NEI3MDogMDAgQTQgNTAgNTAgNDMgNTYgMDggNUYgNDMgNTAgNDMgMTIgNDAgMTkgMTcgMEEgIC4u
UFBDVi5fQ1BDLkAuLi4KICAgIDRCODA6IDE3IDBBIDAzIDExIDE0IDBBIDExIDgyIDBDIDAwIDdG
IDA4IDE4IDA0IEIwIDAyICAuLi4uLi4uLi4uLi4uLi4uCiAgICA0QjkwOiAwMSBDMCAwMCAwMCAw
MCAwMCA3OSAwMCAxMSAxNCAwQSAxMSA4MiAwQyAwMCA3RiAgLi4uLi4ueS4uLi4uLi4uLgogICAg
NEJBMDogMDggMTAgMDQgQjAgMDIgMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgIC4u
Li4uLi4uLi4ueS4uLi4KICAgIDRCQjA6IDExIDgyIDBDIDAwIDdGIDA4IDA4IDA0IEIwIDAyIDAx
IEMwIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA0QkMwOiA3OSAwMCAxMSAxNCAw
QSAxMSA4MiAwQyAwMCA3RiAwOCAwMCAwNCBCMCAwMiAwMSAgeS4uLi4uLi4uLi4uLi4uLgogICAg
NEJEMDogQzAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgMDAgMDAgIC4u
Li4ueS4uLi4uLi4uLi4KICAgIDRCRTA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDc5
IDAwIDExIDE0IDBBIDExICAuLi4uLi4uLi4ueS4uLi4uCiAgICA0QkYwOiA4MiAwQyAwMCA3RiAw
OCAxMCAwNCBCMyAwMiAwMSBDMCAwMCAwMCAwMCAwMCA3OSAgLi4uLi4uLi4uLi4uLi4ueQogICAg
NEMwMDogMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgMDggMDggMDQgQjMgMDIgMDEgQzAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDRDMTA6IDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0IDBBIDExIDgy
IDBDIDAwIDdGIDA4IDAwICAuLi4ueS4uLi4uLi4uLi4uCiAgICA0QzIwOiAwNCBCMyAwMiAwMSBD
MCAwMCAwMCAwMCAwMCA3OSAwMCAxMSAxNCAwQSAxMSA4MiAgLi4uLi4uLi4ueS4uLi4uLgogICAg
NEMzMDogMEMgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgNzkgMDAgIC4u
Li4uLi4uLi4uLi4ueS4KICAgIDRDNDA6IDExIDE0IDBBIDExIDgyIDBDIDAwIDAwIDAwIDAwIDAw
IDAwIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA0QzUwOiAwMCAwMCAwMCA3OSAw
MCAxMSAxNCAwQSAxMSA4MiAwQyAwMCAwMCAwMCAwMCAwMCAgLi4ueS4uLi4uLi4uLi4uLgogICAg
NEM2MDogMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgIC4u
Li4uLi4ueS4uLi4uLi4KICAgIDRDNzA6IDAwIDdGIDQwIDAwIDA0IEU3IDAwIDAwIDAwIDAwIDAw
IDAwIDAwIDc5IDAwIDExICAuLkAuLi4uLi4uLi4ueS4uCiAgICA0QzgwOiAxNCAwQSAxMSA4MiAw
QyAwMCA3RiA0MCAwMCAwNCBFOCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLkAuLi4uLi4uLgogICAg
NEM5MDogMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgMDIgMDAgMDQgQjQgIC4u
eS4uLi4uLi4uLi4uLi4KICAgIDRDQTA6IDAyIDAxIEMwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0
IDBBIDExIDgyIDBDIDAwICAuLi4uLi4ueS4uLi4uLi4uCiAgICA0Q0IwOiA3RiAwMSAwMCAwNCBC
MSAwMiAwMSBDMCAwMCAwMCAwMCAwMCA3OSAwMCAwQyAwMSAgLi4uLi4uLi4uLi4ueS4uLgogICAg
NENDMDogMDAgMDAgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDRDRDA6IDAwIDAwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0IDBB
IDExIDgyIDBDIDAwIDdGICAuLi4uLi55Li4uLi4uLi4uCiAgICA0Q0UwOiAwOCAxOCAwNCBCMyAw
MiAwMSBDMCAwMCAwMCAwMCAwMCA3OSAwMCAxMSAxNCAwQSAgLi4uLi4uLi4uLi55Li4uLgogICAg
NENGMDogMTEgODIgMEMgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDREMDA6IDc5IDAwIDBDIDIxIDAyIDAwIDAwIDBDIDY5IDEwIDAw
IDAwIDEwIDQ3IDM1IDVDICB5Li4hLi4uLmkuLi4uRzVcCiAgICA0RDEwOiAyRiAwMyA1RiA1MyA0
MiA1RiA1MCA0QyA1NCA0NiA0MyAzMCAzMSAzNyAwOCA1RiAgLy5fU0JfUExURkMwMTcuXwogICAg
NEQyMDogNTAgNDMgNTQgMTIgMkMgMDIgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgNDAgMDAgIFBD
VC4sLi4uLi4uLi4uQC4KICAgIDREMzA6IDAwIDYyIDAwIDAxIEMwIDAwIDAwIDAwIDAwIDc5IDAw
IDExIDE0IDBBIDExIDgyICAuYi4uLi4uLi55Li4uLi4uCiAgICA0RDQwOiAwQyAwMCA3RiA0MCAw
MCAwMCA2MyAwMCAwMSBDMCAwMCAwMCAwMCAwMCA3OSAwMCAgLi4uQC4uYy4uLi4uLi55LgogICAg
NEQ1MDogMDggNUYgNTAgNTMgNTMgMTIgNDYgMDYgMDMgMTIgMjAgMDYgMEMgNjggMTAgMDAgIC5f
UFNTLkYuLi4gLi5oLi4KICAgIDRENjA6IDAwIDBDIEIwIDEzIDAwIDAwIDBDIDAwIDAwIDAwIDAw
IDBDIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA0RDcwOiAwQyAwMCAwMCAwMCAw
MCAwQyAwMCAwMCAwMCAwMCAxMiAyMCAwNiAwQyA5OCAwOCAgLi4uLi4uLi4uLi4gLi4uLgogICAg
NEQ4MDogMDAgMDAgMEMgMDQgMDYgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMEMgMDAgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDREOTA6IDAwIDBDIDAxIDAwIDAwIDAwIDBDIDAxIDAwIDAwIDAw
IDEyIDIwIDA2IDBDIERDICAuLi4uLi4uLi4uLi4gLi4uCiAgICA0REEwOiAwNSAwMCAwMCAwQyBD
RiAwMyAwMCAwMCAwQyAwMCAwMCAwMCAwMCAwQyAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
NERCMDogMDAgMDAgMEMgMDIgMDAgMDAgMDAgMEMgMDIgMDAgMDAgMDAgMDggNTggNTAgNTMgIC4u
Li4uLi4uLi4uLi5YUFMKICAgIDREQzA6IDUzIDEyIDRCIDBEIDAzIDEyIDQ3IDA0IDA4IDBDIDY4
IDEwIDAwIDAwIDBDIEIwICBTLksuLi5HLi4uaC4uLi4uCiAgICA0REQwOiAxMyAwMCAwMCAwQyAw
MCAwMCAwMCAwMCAwQyAwMCAwMCAwMCAwMCAxMSAwQiAwQSAgLi4uLi4uLi4uLi4uLi4uLgogICAg
NERFMDogMDggMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMTEgMEIgMEEgMDggMDAgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDRERjA6IDAwIDAwIDAwIDAwIDAwIDExIDBCIDBBIDA4IDAwIDAw
IDAwIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA0RTAwOiAwMCAxMSAwQiAwQSAw
OCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAxMiA0NyAwNCAgLi4uLi4uLi4uLi4uLi5HLgogICAg
NEUxMDogMDggMEMgOTggMDggMDAgMDAgMEMgMDQgMDYgMDAgMDAgMEMgMDAgMDAgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDRFMjA6IDBDIDAwIDAwIDAwIDAwIDExIDBCIDBBIDA4IDAxIDAw
IDAwIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA0RTMwOiAwMCAxMSAwQiAwQSAw
OCAwMSAwMCAwMCAwMCAwMCAwMCAwMCAwMCAxMSAwQiAwQSAgLi4uLi4uLi4uLi4uLi4uLgogICAg
NEU0MDogMDggMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMTEgMEIgMEEgMDggMDAgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDRFNTA6IDAwIDAwIDAwIDAwIDAwIDEyIDQ3IDA0IDA4IDBDIERD
IDA1IDAwIDAwIDBDIENGICAuLi4uLi5HLi4uLi4uLi4uCiAgICA0RTYwOiAwMyAwMCAwMCAwQyAw
MCAwMCAwMCAwMCAwQyAwMCAwMCAwMCAwMCAxMSAwQiAwQSAgLi4uLi4uLi4uLi4uLi4uLgogICAg
NEU3MDogMDggMDIgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMTEgMEIgMEEgMDggMDIgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDRFODA6IDAwIDAwIDAwIDAwIDAwIDExIDBCIDBBIDA4IDAwIDAw
IDAwIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA0RTkwOiAwMCAxMSAwQiAwQSAw
OCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwOCA1RiA1MCAgLi4uLi4uLi4uLi4uLi5fUAogICAg
NEVBMDogNTMgNDQgMTIgMTggMDEgMTIgMTUgMDUgMEEgMDUgMEEgMDAgMEMgMEIgMDAgMDAgIFNE
Li4uLi4uLi4uLi4uLi4KICAgIDRFQjA6IDAwIDBDIEZFIDAwIDAwIDAwIDBDIDAyIDAwIDAwIDAw
IDA4IDUwIDUwIDQzIDU2ICAuLi4uLi4uLi4uLi5QUENWCiAgICA0RUMwOiAwQSAwMCAxNCAwQiA1
RiA1MCA1MCA0MyAwMCBBNCA1MCA1MCA0MyA1NiAwOCA1RiAgLi4uLl9QUEMuLlBQQ1YuXwogICAg
NEVEMDogNDMgNTAgNDMgMTIgNDAgMTkgMTcgMEEgMTcgMEEgMDMgMTEgMTQgMEEgMTEgODIgIENQ
Qy5ALi4uLi4uLi4uLi4KICAgIDRFRTA6IDBDIDAwIDdGIDA4IDE4IDA0IEIwIDAyIDAxIEMwIDAw
IDAwIDAwIDAwIDc5IDAwICAuLi4uLi4uLi4uLi4uLnkuCiAgICA0RUYwOiAxMSAxNCAwQSAxMSA4
MiAwQyAwMCA3RiAwOCAxMCAwNCBCMCAwMiAwMSBDMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
NEYwMDogMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgMDggMDggMDQgIC4u
LnkuLi4uLi4uLi4uLi4KICAgIDRGMTA6IEIwIDAyIDAxIEMwIDAwIDAwIDAwIDAwIDc5IDAwIDEx
IDE0IDBBIDExIDgyIDBDICAuLi4uLi4uLnkuLi4uLi4uCiAgICA0RjIwOiAwMCA3RiAwOCAwMCAw
NCBCMCAwMiAwMSBDMCAwMCAwMCAwMCAwMCA3OSAwMCAxMSAgLi4uLi4uLi4uLi4uLnkuLgogICAg
NEYzMDogMTQgMEEgMTEgODIgMEMgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDRGNDA6IDAwIDAwIDc5IDAwIDExIDE0IDBBIDExIDgyIDBDIDAw
IDdGIDA4IDEwIDA0IEIzICAuLnkuLi4uLi4uLi4uLi4uCiAgICA0RjUwOiAwMiAwMSBDMCAwMCAw
MCAwMCAwMCA3OSAwMCAxMSAxNCAwQSAxMSA4MiAwQyAwMCAgLi4uLi4uLnkuLi4uLi4uLgogICAg
NEY2MDogN0YgMDggMDggMDQgQjMgMDIgMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgIC4u
Li4uLi4uLi4uLnkuLi4KICAgIDRGNzA6IDBBIDExIDgyIDBDIDAwIDdGIDA4IDAwIDA0IEIzIDAy
IDAxIEMwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA0RjgwOiAwMCA3OSAwMCAxMSAx
NCAwQSAxMSA4MiAwQyAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLnkuLi4uLi4uLi4uLi4uLgogICAg
NEY5MDogMDAgMDAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgMDAgIC4u
Li4uLnkuLi4uLi4uLi4KICAgIDRGQTA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAw
IDc5IDAwIDExIDE0IDBBICAuLi4uLi4uLi4uLnkuLi4uCiAgICA0RkIwOiAxMSA4MiAwQyAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
NEZDMDogNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgNDAgMDAgMDQgRTcgMDAgMDAgIHku
Li4uLi4uLi5ALi4uLi4KICAgIDRGRDA6IDAwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0IDBBIDEx
IDgyIDBDIDAwIDdGIDQwICAuLi4uLnkuLi4uLi4uLi5ACiAgICA0RkUwOiAwMCAwNCBFOCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCA3OSAwMCAxMSAxNCAwQSAxMSAgLi4uLi4uLi4uLnkuLi4uLgogICAg
NEZGMDogODIgMEMgMDAgN0YgMDIgMDAgMDQgQjQgMDIgMDEgQzAgMDAgMDAgMDAgMDAgNzkgIC4u
Li4uLi4uLi4uLi4uLnkKICAgIDUwMDA6IDAwIDExIDE0IDBBIDExIDgyIDBDIDAwIDdGIDAxIDAw
IDA0IEIxIDAyIDAxIEMwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA1MDEwOiAwMCAwMCAwMCAwMCA3
OSAwMCAwQyAwMSAwMCAwMCAwMCAxMSAxNCAwQSAxMSA4MiAgLi4uLnkuLi4uLi4uLi4uLgogICAg
NTAyMDogMEMgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgNzkgMDAgIC4u
Li4uLi4uLi4uLi4ueS4KICAgIDUwMzA6IDExIDE0IDBBIDExIDgyIDBDIDAwIDdGIDA4IDE4IDA0
IEIzIDAyIDAxIEMwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA1MDQwOiAwMCAwMCAwMCA3OSAw
MCAxMSAxNCAwQSAxMSA4MiAwQyAwMCAwMCAwMCAwMCAwMCAgLi4ueS4uLi4uLi4uLi4uLgogICAg
NTA1MDogMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgNzkgMDAgMEMgMjEgMDIgMDAgMDAgMEMgIC4u
Li4uLi4ueS4uIS4uLi4KICAgIDUwNjA6IDY5IDEwIDAwIDAwIDEwIDQ3IDM1IDVDIDJGIDAzIDVG
IDUzIDQyIDVGIDUwIDRDICBpLi4uLkc1XC8uX1NCX1BMCiAgICA1MDcwOiA1NCA0NiA0MyAzMCAz
MSAzOCAwOCA1RiA1MCA0MyA1NCAxMiAyQyAwMiAxMSAxNCAgVEZDMDE4Ll9QQ1QuLC4uLgogICAg
NTA4MDogMEEgMTEgODIgMEMgMDAgN0YgNDAgMDAgMDAgNjIgMDAgMDEgQzAgMDAgMDAgMDAgIC4u
Li4uLkAuLmIuLi4uLi4KICAgIDUwOTA6IDAwIDc5IDAwIDExIDE0IDBBIDExIDgyIDBDIDAwIDdG
IDQwIDAwIDAwIDYzIDAwICAueS4uLi4uLi4uLkAuLmMuCiAgICA1MEEwOiAwMSBDMCAwMCAwMCAw
MCAwMCA3OSAwMCAwOCA1RiA1MCA1MyA1MyAxMiA0NiAwNiAgLi4uLi4ueS4uX1BTUy5GLgogICAg
NTBCMDogMDMgMTIgMjAgMDYgMEMgNjggMTAgMDAgMDAgMEMgQjAgMTMgMDAgMDAgMEMgMDAgIC4u
IC4uaC4uLi4uLi4uLi4KICAgIDUwQzA6IDAwIDAwIDAwIDBDIDAwIDAwIDAwIDAwIDBDIDAwIDAw
IDAwIDAwIDBDIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA1MEQwOiAwMCAwMCAxMiAyMCAw
NiAwQyA5OCAwOCAwMCAwMCAwQyAwNCAwNiAwMCAwMCAwQyAgLi4uIC4uLi4uLi4uLi4uLgogICAg
NTBFMDogMDAgMDAgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMEMgMDEgMDAgMDAgMDAgMEMgMDEgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDUwRjA6IDAwIDAwIDAwIDEyIDIwIDA2IDBDIERDIDA1IDAwIDAw
IDBDIENGIDAzIDAwIDAwICAuLi4uIC4uLi4uLi4uLi4uCiAgICA1MTAwOiAwQyAwMCAwMCAwMCAw
MCAwQyAwMCAwMCAwMCAwMCAwQyAwMiAwMCAwMCAwMCAwQyAgLi4uLi4uLi4uLi4uLi4uLgogICAg
NTExMDogMDIgMDAgMDAgMDAgMDggNTggNTAgNTMgNTMgMTIgNEIgMEQgMDMgMTIgNDcgMDQgIC4u
Li4uWFBTUy5LLi4uRy4KICAgIDUxMjA6IDA4IDBDIDY4IDEwIDAwIDAwIDBDIEIwIDEzIDAwIDAw
IDBDIDAwIDAwIDAwIDAwICAuLmguLi4uLi4uLi4uLi4uCiAgICA1MTMwOiAwQyAwMCAwMCAwMCAw
MCAxMSAwQiAwQSAwOCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
NTE0MDogMDAgMTEgMEIgMEEgMDggMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMTEgMEIgMEEgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDUxNTA6IDA4IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDExIDBC
IDBBIDA4IDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA1MTYwOiAwMCAwMCAwMCAwMCAw
MCAxMiA0NyAwNCAwOCAwQyA5OCAwOCAwMCAwMCAwQyAwNCAgLi4uLi4uRy4uLi4uLi4uLgogICAg
NTE3MDogMDYgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMTEgMEIgMEEgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDUxODA6IDA4IDAxIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDExIDBC
IDBBIDA4IDAxIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA1MTkwOiAwMCAwMCAwMCAwMCAw
MCAxMSAwQiAwQSAwOCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
NTFBMDogMDAgMTEgMEIgMEEgMDggMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMTIgNDcgMDQgIC4u
Li4uLi4uLi4uLi4uRy4KICAgIDUxQjA6IDA4IDBDIERDIDA1IDAwIDAwIDBDIENGIDAzIDAwIDAw
IDBDIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA1MUMwOiAwQyAwMCAwMCAwMCAw
MCAxMSAwQiAwQSAwOCAwMiAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
NTFEMDogMDAgMTEgMEIgMEEgMDggMDIgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMTEgMEIgMEEgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDUxRTA6IDA4IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDExIDBC
IDBBIDA4IDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA1MUYwOiAwMCAwMCAwMCAwMCAw
MCAwOCA1RiA1MCA1MyA0NCAxMiAxOCAwMSAxMiAxNSAwNSAgLi4uLi4uX1BTRC4uLi4uLgogICAg
NTIwMDogMEEgMDUgMEEgMDAgMEMgMEMgMDAgMDAgMDAgMEMgRkUgMDAgMDAgMDAgMEMgMDIgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDUyMTA6IDAwIDAwIDAwIDA4IDUwIDUwIDQzIDU2IDBBIDAwIDE0
IDBCIDVGIDUwIDUwIDQzICAuLi4uUFBDVi4uLi5fUFBDCiAgICA1MjIwOiAwMCBBNCA1MCA1MCA0
MyA1NiAwOCA1RiA0MyA1MCA0MyAxMiA0MCAxOSAxNyAwQSAgLi5QUENWLl9DUEMuQC4uLgogICAg
NTIzMDogMTcgMEEgMDMgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgMDggMTggMDQgQjAgMDIgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDUyNDA6IDAxIEMwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0IDBB
IDExIDgyIDBDIDAwIDdGICAuLi4uLi55Li4uLi4uLi4uCiAgICA1MjUwOiAwOCAxMCAwNCBCMCAw
MiAwMSBDMCAwMCAwMCAwMCAwMCA3OSAwMCAxMSAxNCAwQSAgLi4uLi4uLi4uLi55Li4uLgogICAg
NTI2MDogMTEgODIgMEMgMDAgN0YgMDggMDggMDQgQjAgMDIgMDEgQzAgMDAgMDAgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDUyNzA6IDc5IDAwIDExIDE0IDBBIDExIDgyIDBDIDAwIDdGIDA4
IDAwIDA0IEIwIDAyIDAxICB5Li4uLi4uLi4uLi4uLi4uCiAgICA1MjgwOiBDMCAwMCAwMCAwMCAw
MCA3OSAwMCAxMSAxNCAwQSAxMSA4MiAwQyAwMCAwMCAwMCAgLi4uLi55Li4uLi4uLi4uLgogICAg
NTI5MDogMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgIC4u
Li4uLi4uLi55Li4uLi4KICAgIDUyQTA6IDgyIDBDIDAwIDdGIDA4IDEwIDA0IEIzIDAyIDAxIEMw
IDAwIDAwIDAwIDAwIDc5ICAuLi4uLi4uLi4uLi4uLi55CiAgICA1MkIwOiAwMCAxMSAxNCAwQSAx
MSA4MiAwQyAwMCA3RiAwOCAwOCAwNCBCMyAwMiAwMSBDMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
NTJDMDogMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgMDggMDAgIC4u
Li55Li4uLi4uLi4uLi4KICAgIDUyRDA6IDA0IEIzIDAyIDAxIEMwIDAwIDAwIDAwIDAwIDc5IDAw
IDExIDE0IDBBIDExIDgyICAuLi4uLi4uLi55Li4uLi4uCiAgICA1MkUwOiAwQyAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCA3OSAwMCAgLi4uLi4uLi4uLi4uLi55LgogICAg
NTJGMDogMTEgMTQgMEEgMTEgODIgMEMgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDUzMDA6IDAwIDAwIDAwIDc5IDAwIDExIDE0IDBBIDExIDgyIDBD
IDAwIDAwIDAwIDAwIDAwICAuLi55Li4uLi4uLi4uLi4uCiAgICA1MzEwOiAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCA3OSAwMCAxMSAxNCAwQSAxMSA4MiAwQyAgLi4uLi4uLi55Li4uLi4uLgogICAg
NTMyMDogMDAgN0YgNDAgMDAgMDQgRTcgMDAgMDAgMDAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgIC4u
QC4uLi4uLi4uLi55Li4KICAgIDUzMzA6IDE0IDBBIDExIDgyIDBDIDAwIDdGIDQwIDAwIDA0IEU4
IDAwIDAwIDAwIDAwIDAwICAuLi4uLi4uQC4uLi4uLi4uCiAgICA1MzQwOiAwMCAwMCA3OSAwMCAx
MSAxNCAwQSAxMSA4MiAwQyAwMCA3RiAwMiAwMCAwNCBCNCAgLi55Li4uLi4uLi4uLi4uLgogICAg
NTM1MDogMDIgMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgIC4u
Li4uLi55Li4uLi4uLi4KICAgIDUzNjA6IDdGIDAxIDAwIDA0IEIxIDAyIDAxIEMwIDAwIDAwIDAw
IDAwIDc5IDAwIDBDIDAxICAuLi4uLi4uLi4uLi55Li4uCiAgICA1MzcwOiAwMCAwMCAwMCAxMSAx
NCAwQSAxMSA4MiAwQyAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
NTM4MDogMDAgMDAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgIC4u
Li4uLnkuLi4uLi4uLi4KICAgIDUzOTA6IDA4IDE4IDA0IEIzIDAyIDAxIEMwIDAwIDAwIDAwIDAw
IDc5IDAwIDExIDE0IDBBICAuLi4uLi4uLi4uLnkuLi4uCiAgICA1M0EwOiAxMSA4MiAwQyAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
NTNCMDogNzkgMDAgMEMgMjEgMDIgMDAgMDAgMEMgNjkgMTAgMDAgMDAgMTAgNDcgMzUgNUMgIHku
LiEuLi4uaS4uLi5HNVwKICAgIDUzQzA6IDJGIDAzIDVGIDUzIDQyIDVGIDUwIDRDIDU0IDQ2IDQz
IDMwIDMxIDM5IDA4IDVGICAvLl9TQl9QTFRGQzAxOS5fCiAgICA1M0QwOiA1MCA0MyA1NCAxMiAy
QyAwMiAxMSAxNCAwQSAxMSA4MiAwQyAwMCA3RiA0MCAwMCAgUENULiwuLi4uLi4uLi5ALgogICAg
NTNFMDogMDAgNjIgMDAgMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgIC5i
Li4uLi4uLnkuLi4uLi4KICAgIDUzRjA6IDBDIDAwIDdGIDQwIDAwIDAwIDYzIDAwIDAxIEMwIDAw
IDAwIDAwIDAwIDc5IDAwICAuLi5ALi5jLi4uLi4uLnkuCiAgICA1NDAwOiAwOCA1RiA1MCA1MyA1
MyAxMiA0NiAwNiAwMyAxMiAyMCAwNiAwQyA2OCAxMCAwMCAgLl9QU1MuRi4uLiAuLmguLgogICAg
NTQxMDogMDAgMEMgQjAgMTMgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMEMgMDAgMDAgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDU0MjA6IDBDIDAwIDAwIDAwIDAwIDBDIDAwIDAwIDAwIDAwIDEy
IDIwIDA2IDBDIDk4IDA4ICAuLi4uLi4uLi4uLiAuLi4uCiAgICA1NDMwOiAwMCAwMCAwQyAwNCAw
NiAwMCAwMCAwQyAwMCAwMCAwMCAwMCAwQyAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
NTQ0MDogMDAgMEMgMDEgMDAgMDAgMDAgMEMgMDEgMDAgMDAgMDAgMTIgMjAgMDYgMEMgREMgIC4u
Li4uLi4uLi4uLiAuLi4KICAgIDU0NTA6IDA1IDAwIDAwIDBDIENGIDAzIDAwIDAwIDBDIDAwIDAw
IDAwIDAwIDBDIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA1NDYwOiAwMCAwMCAwQyAwMiAw
MCAwMCAwMCAwQyAwMiAwMCAwMCAwMCAwOCA1OCA1MCA1MyAgLi4uLi4uLi4uLi4uLlhQUwogICAg
NTQ3MDogNTMgMTIgNEIgMEQgMDMgMTIgNDcgMDQgMDggMEMgNjggMTAgMDAgMDAgMEMgQjAgIFMu
Sy4uLkcuLi5oLi4uLi4KICAgIDU0ODA6IDEzIDAwIDAwIDBDIDAwIDAwIDAwIDAwIDBDIDAwIDAw
IDAwIDAwIDExIDBCIDBBICAuLi4uLi4uLi4uLi4uLi4uCiAgICA1NDkwOiAwOCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAxMSAwQiAwQSAwOCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
NTRBMDogMDAgMDAgMDAgMDAgMDAgMTEgMEIgMEEgMDggMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDU0QjA6IDAwIDExIDBCIDBBIDA4IDAwIDAwIDAwIDAwIDAwIDAw
IDAwIDAwIDEyIDQ3IDA0ICAuLi4uLi4uLi4uLi4uLkcuCiAgICA1NEMwOiAwOCAwQyA5OCAwOCAw
MCAwMCAwQyAwNCAwNiAwMCAwMCAwQyAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
NTREMDogMEMgMDAgMDAgMDAgMDAgMTEgMEIgMEEgMDggMDEgMDAgMDAgMDAgMDAgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDU0RTA6IDAwIDExIDBCIDBBIDA4IDAxIDAwIDAwIDAwIDAwIDAw
IDAwIDAwIDExIDBCIDBBICAuLi4uLi4uLi4uLi4uLi4uCiAgICA1NEYwOiAwOCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAxMSAwQiAwQSAwOCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
NTUwMDogMDAgMDAgMDAgMDAgMDAgMTIgNDcgMDQgMDggMEMgREMgMDUgMDAgMDAgMEMgQ0YgIC4u
Li4uLkcuLi4uLi4uLi4KICAgIDU1MTA6IDAzIDAwIDAwIDBDIDAwIDAwIDAwIDAwIDBDIDAwIDAw
IDAwIDAwIDExIDBCIDBBICAuLi4uLi4uLi4uLi4uLi4uCiAgICA1NTIwOiAwOCAwMiAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAxMSAwQiAwQSAwOCAwMiAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
NTUzMDogMDAgMDAgMDAgMDAgMDAgMTEgMEIgMEEgMDggMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDU1NDA6IDAwIDExIDBCIDBBIDA4IDAwIDAwIDAwIDAwIDAwIDAw
IDAwIDAwIDA4IDVGIDUwICAuLi4uLi4uLi4uLi4uLl9QCiAgICA1NTUwOiA1MyA0NCAxMiAxOCAw
MSAxMiAxNSAwNSAwQSAwNSAwQSAwMCAwQyAwQyAwMCAwMCAgU0QuLi4uLi4uLi4uLi4uLgogICAg
NTU2MDogMDAgMEMgRkUgMDAgMDAgMDAgMEMgMDIgMDAgMDAgMDAgMDggNTAgNTAgNDMgNTYgIC4u
Li4uLi4uLi4uLlBQQ1YKICAgIDU1NzA6IDBBIDAwIDE0IDBCIDVGIDUwIDUwIDQzIDAwIEE0IDUw
IDUwIDQzIDU2IDA4IDVGICAuLi4uX1BQQy4uUFBDVi5fCiAgICA1NTgwOiA0MyA1MCA0MyAxMiA0
MCAxOSAxNyAwQSAxNyAwQSAwMyAxMSAxNCAwQSAxMSA4MiAgQ1BDLkAuLi4uLi4uLi4uLgogICAg
NTU5MDogMEMgMDAgN0YgMDggMTggMDQgQjAgMDIgMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgIC4u
Li4uLi4uLi4uLi4ueS4KICAgIDU1QTA6IDExIDE0IDBBIDExIDgyIDBDIDAwIDdGIDA4IDEwIDA0
IEIwIDAyIDAxIEMwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA1NUIwOiAwMCAwMCAwMCA3OSAw
MCAxMSAxNCAwQSAxMSA4MiAwQyAwMCA3RiAwOCAwOCAwNCAgLi4ueS4uLi4uLi4uLi4uLgogICAg
NTVDMDogQjAgMDIgMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgIC4u
Li4uLi4ueS4uLi4uLi4KICAgIDU1RDA6IDAwIDdGIDA4IDAwIDA0IEIwIDAyIDAxIEMwIDAwIDAw
IDAwIDAwIDc5IDAwIDExICAuLi4uLi4uLi4uLi4ueS4uCiAgICA1NUUwOiAxNCAwQSAxMSA4MiAw
QyAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
NTVGMDogMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgMDggMTAgMDQgQjMgIC4u
eS4uLi4uLi4uLi4uLi4KICAgIDU2MDA6IDAyIDAxIEMwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0
IDBBIDExIDgyIDBDIDAwICAuLi4uLi4ueS4uLi4uLi4uCiAgICA1NjEwOiA3RiAwOCAwOCAwNCBC
MyAwMiAwMSBDMCAwMCAwMCAwMCAwMCA3OSAwMCAxMSAxNCAgLi4uLi4uLi4uLi4ueS4uLgogICAg
NTYyMDogMEEgMTEgODIgMEMgMDAgN0YgMDggMDAgMDQgQjMgMDIgMDEgQzAgMDAgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDU2MzA6IDAwIDc5IDAwIDExIDE0IDBBIDExIDgyIDBDIDAwIDAw
IDAwIDAwIDAwIDAwIDAwICAueS4uLi4uLi4uLi4uLi4uCiAgICA1NjQwOiAwMCAwMCAwMCAwMCAw
MCAwMCA3OSAwMCAxMSAxNCAwQSAxMSA4MiAwQyAwMCAwMCAgLi4uLi4ueS4uLi4uLi4uLgogICAg
NTY1MDogMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgIC4u
Li4uLi4uLi4ueS4uLi4KICAgIDU2NjA6IDExIDgyIDBDIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAw
IDAwIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA1NjcwOiA3OSAwMCAxMSAxNCAw
QSAxMSA4MiAwQyAwMCA3RiA0MCAwMCAwNCBFNyAwMCAwMCAgeS4uLi4uLi4uLkAuLi4uLgogICAg
NTY4MDogMDAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgNDAgIC4u
Li4ueS4uLi4uLi4uLkAKICAgIDU2OTA6IDAwIDA0IEU4IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDc5
IDAwIDExIDE0IDBBIDExICAuLi4uLi4uLi4ueS4uLi4uCiAgICA1NkEwOiA4MiAwQyAwMCA3RiAw
MiAwMCAwNCBCNCAwMiAwMSBDMCAwMCAwMCAwMCAwMCA3OSAgLi4uLi4uLi4uLi4uLi4ueQogICAg
NTZCMDogMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgMDEgMDAgMDQgQjEgMDIgMDEgQzAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDU2QzA6IDAwIDAwIDAwIDAwIDc5IDAwIDBDIDAxIDAwIDAwIDAw
IDExIDE0IDBBIDExIDgyICAuLi4ueS4uLi4uLi4uLi4uCiAgICA1NkQwOiAwQyAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCA3OSAwMCAgLi4uLi4uLi4uLi4uLi55LgogICAg
NTZFMDogMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgMDggMTggMDQgQjMgMDIgMDEgQzAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDU2RjA6IDAwIDAwIDAwIDc5IDAwIDExIDE0IDBBIDExIDgyIDBD
IDAwIDAwIDAwIDAwIDAwICAuLi55Li4uLi4uLi4uLi4uCiAgICA1NzAwOiAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCA3OSAwMCAwQyAyMSAwMiAwMCAwMCAwQyAgLi4uLi4uLi55Li4hLi4uLgogICAg
NTcxMDogNjkgMTAgMDAgMDAgMTAgNDcgMzUgNUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAgNEMgIGku
Li4uRzVcLy5fU0JfUEwKICAgIDU3MjA6IDU0IDQ2IDQzIDMwIDMxIDQxIDA4IDVGIDUwIDQzIDU0
IDEyIDJDIDAyIDExIDE0ICBURkMwMUEuX1BDVC4sLi4uCiAgICA1NzMwOiAwQSAxMSA4MiAwQyAw
MCA3RiA0MCAwMCAwMCA2MiAwMCAwMSBDMCAwMCAwMCAwMCAgLi4uLi4uQC4uYi4uLi4uLgogICAg
NTc0MDogMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgNDAgMDAgMDAgNjMgMDAgIC55
Li4uLi4uLi4uQC4uYy4KICAgIDU3NTA6IDAxIEMwIDAwIDAwIDAwIDAwIDc5IDAwIDA4IDVGIDUw
IDUzIDUzIDEyIDQ2IDA2ICAuLi4uLi55Li5fUFNTLkYuCiAgICA1NzYwOiAwMyAxMiAyMCAwNiAw
QyA2OCAxMCAwMCAwMCAwQyBCMCAxMyAwMCAwMCAwQyAwMCAgLi4gLi5oLi4uLi4uLi4uLgogICAg
NTc3MDogMDAgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMEMgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDU3ODA6IDAwIDAwIDEyIDIwIDA2IDBDIDk4IDA4IDAwIDAwIDBD
IDA0IDA2IDAwIDAwIDBDICAuLi4gLi4uLi4uLi4uLi4uCiAgICA1NzkwOiAwMCAwMCAwMCAwMCAw
QyAwMCAwMCAwMCAwMCAwQyAwMSAwMCAwMCAwMCAwQyAwMSAgLi4uLi4uLi4uLi4uLi4uLgogICAg
NTdBMDogMDAgMDAgMDAgMTIgMjAgMDYgMEMgREMgMDUgMDAgMDAgMEMgQ0YgMDMgMDAgMDAgIC4u
Li4gLi4uLi4uLi4uLi4KICAgIDU3QjA6IDBDIDAwIDAwIDAwIDAwIDBDIDAwIDAwIDAwIDAwIDBD
IDAyIDAwIDAwIDAwIDBDICAuLi4uLi4uLi4uLi4uLi4uCiAgICA1N0MwOiAwMiAwMCAwMCAwMCAw
OCA1OCA1MCA1MyA1MyAxMiA0QiAwRCAwMyAxMiA0NyAwNCAgLi4uLi5YUFNTLksuLi5HLgogICAg
NTdEMDogMDggMEMgNjggMTAgMDAgMDAgMEMgQjAgMTMgMDAgMDAgMEMgMDAgMDAgMDAgMDAgIC4u
aC4uLi4uLi4uLi4uLi4KICAgIDU3RTA6IDBDIDAwIDAwIDAwIDAwIDExIDBCIDBBIDA4IDAwIDAw
IDAwIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA1N0YwOiAwMCAxMSAwQiAwQSAw
OCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAxMSAwQiAwQSAgLi4uLi4uLi4uLi4uLi4uLgogICAg
NTgwMDogMDggMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMTEgMEIgMEEgMDggMDAgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDU4MTA6IDAwIDAwIDAwIDAwIDAwIDEyIDQ3IDA0IDA4IDBDIDk4
IDA4IDAwIDAwIDBDIDA0ICAuLi4uLi5HLi4uLi4uLi4uCiAgICA1ODIwOiAwNiAwMCAwMCAwQyAw
MCAwMCAwMCAwMCAwQyAwMCAwMCAwMCAwMCAxMSAwQiAwQSAgLi4uLi4uLi4uLi4uLi4uLgogICAg
NTgzMDogMDggMDEgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMTEgMEIgMEEgMDggMDEgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDU4NDA6IDAwIDAwIDAwIDAwIDAwIDExIDBCIDBBIDA4IDAwIDAw
IDAwIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA1ODUwOiAwMCAxMSAwQiAwQSAw
OCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAxMiA0NyAwNCAgLi4uLi4uLi4uLi4uLi5HLgogICAg
NTg2MDogMDggMEMgREMgMDUgMDAgMDAgMEMgQ0YgMDMgMDAgMDAgMEMgMDAgMDAgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDU4NzA6IDBDIDAwIDAwIDAwIDAwIDExIDBCIDBBIDA4IDAyIDAw
IDAwIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA1ODgwOiAwMCAxMSAwQiAwQSAw
OCAwMiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAxMSAwQiAwQSAgLi4uLi4uLi4uLi4uLi4uLgogICAg
NTg5MDogMDggMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMTEgMEIgMEEgMDggMDAgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDU4QTA6IDAwIDAwIDAwIDAwIDAwIDA4IDVGIDUwIDUzIDQ0IDEy
IDE4IDAxIDEyIDE1IDA1ICAuLi4uLi5fUFNELi4uLi4uCiAgICA1OEIwOiAwQSAwNSAwQSAwMCAw
QyAwRCAwMCAwMCAwMCAwQyBGRSAwMCAwMCAwMCAwQyAwMiAgLi4uLi4uLi4uLi4uLi4uLgogICAg
NThDMDogMDAgMDAgMDAgMDggNTAgNTAgNDMgNTYgMEEgMDAgMTQgMEIgNUYgNTAgNTAgNDMgIC4u
Li5QUENWLi4uLl9QUEMKICAgIDU4RDA6IDAwIEE0IDUwIDUwIDQzIDU2IDA4IDVGIDQzIDUwIDQz
IDEyIDQwIDE5IDE3IDBBICAuLlBQQ1YuX0NQQy5ALi4uCiAgICA1OEUwOiAxNyAwQSAwMyAxMSAx
NCAwQSAxMSA4MiAwQyAwMCA3RiAwOCAxOCAwNCBCMCAwMiAgLi4uLi4uLi4uLi4uLi4uLgogICAg
NThGMDogMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgIC4u
Li4uLnkuLi4uLi4uLi4KICAgIDU5MDA6IDA4IDEwIDA0IEIwIDAyIDAxIEMwIDAwIDAwIDAwIDAw
IDc5IDAwIDExIDE0IDBBICAuLi4uLi4uLi4uLnkuLi4uCiAgICA1OTEwOiAxMSA4MiAwQyAwMCA3
RiAwOCAwOCAwNCBCMCAwMiAwMSBDMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
NTkyMDogNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgMDggMDAgMDQgQjAgMDIgMDEgIHku
Li4uLi4uLi4uLi4uLi4KICAgIDU5MzA6IEMwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0IDBBIDEx
IDgyIDBDIDAwIDAwIDAwICAuLi4uLnkuLi4uLi4uLi4uCiAgICA1OTQwOiAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCA3OSAwMCAxMSAxNCAwQSAxMSAgLi4uLi4uLi4uLnkuLi4uLgogICAg
NTk1MDogODIgMEMgMDAgN0YgMDggMTAgMDQgQjMgMDIgMDEgQzAgMDAgMDAgMDAgMDAgNzkgIC4u
Li4uLi4uLi4uLi4uLnkKICAgIDU5NjA6IDAwIDExIDE0IDBBIDExIDgyIDBDIDAwIDdGIDA4IDA4
IDA0IEIzIDAyIDAxIEMwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA1OTcwOiAwMCAwMCAwMCAwMCA3
OSAwMCAxMSAxNCAwQSAxMSA4MiAwQyAwMCA3RiAwOCAwMCAgLi4uLnkuLi4uLi4uLi4uLgogICAg
NTk4MDogMDQgQjMgMDIgMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgIC4u
Li4uLi4uLnkuLi4uLi4KICAgIDU5OTA6IDBDIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAw
IDAwIDAwIDAwIDc5IDAwICAuLi4uLi4uLi4uLi4uLnkuCiAgICA1OUEwOiAxMSAxNCAwQSAxMSA4
MiAwQyAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
NTlCMDogMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgMDAgMDAgMDAgMDAgIC4u
LnkuLi4uLi4uLi4uLi4KICAgIDU5QzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDc5IDAwIDEx
IDE0IDBBIDExIDgyIDBDICAuLi4uLi4uLnkuLi4uLi4uCiAgICA1OUQwOiAwMCA3RiA0MCAwMCAw
NCBFNyAwMCAwMCAwMCAwMCAwMCAwMCAwMCA3OSAwMCAxMSAgLi5ALi4uLi4uLi4uLnkuLgogICAg
NTlFMDogMTQgMEEgMTEgODIgMEMgMDAgN0YgNDAgMDAgMDQgRTggMDAgMDAgMDAgMDAgMDAgIC4u
Li4uLi5ALi4uLi4uLi4KICAgIDU5RjA6IDAwIDAwIDc5IDAwIDExIDE0IDBBIDExIDgyIDBDIDAw
IDdGIDAyIDAwIDA0IEI0ICAuLnkuLi4uLi4uLi4uLi4uCiAgICA1QTAwOiAwMiAwMSBDMCAwMCAw
MCAwMCAwMCA3OSAwMCAxMSAxNCAwQSAxMSA4MiAwQyAwMCAgLi4uLi4uLnkuLi4uLi4uLgogICAg
NUExMDogN0YgMDEgMDAgMDQgQjEgMDIgMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgMEMgMDEgIC4u
Li4uLi4uLi4uLnkuLi4KICAgIDVBMjA6IDAwIDAwIDAwIDExIDE0IDBBIDExIDgyIDBDIDAwIDAw
IDAwIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA1QTMwOiAwMCAwMCAwMCAwMCAw
MCAwMCA3OSAwMCAxMSAxNCAwQSAxMSA4MiAwQyAwMCA3RiAgLi4uLi4ueS4uLi4uLi4uLgogICAg
NUE0MDogMDggMTggMDQgQjMgMDIgMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgIC4u
Li4uLi4uLi4ueS4uLi4KICAgIDVBNTA6IDExIDgyIDBDIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAw
IDAwIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA1QTYwOiA3OSAwMCAwQyAyMSAw
MiAwMCAwMCAwQyA2OSAxMCAwMCAwMCAxMCA0NyAzNSA1QyAgeS4uIS4uLi5pLi4uLkc1XAogICAg
NUE3MDogMkYgMDMgNUYgNTMgNDIgNUYgNTAgNEMgNTQgNDYgNDMgMzAgMzEgNDIgMDggNUYgIC8u
X1NCX1BMVEZDMDFCLl8KICAgIDVBODA6IDUwIDQzIDU0IDEyIDJDIDAyIDExIDE0IDBBIDExIDgy
IDBDIDAwIDdGIDQwIDAwICBQQ1QuLC4uLi4uLi4uLkAuCiAgICA1QTkwOiAwMCA2MiAwMCAwMSBD
MCAwMCAwMCAwMCAwMCA3OSAwMCAxMSAxNCAwQSAxMSA4MiAgLmIuLi4uLi4ueS4uLi4uLgogICAg
NUFBMDogMEMgMDAgN0YgNDAgMDAgMDAgNjMgMDAgMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgIC4u
LkAuLmMuLi4uLi4ueS4KICAgIDVBQjA6IDA4IDVGIDUwIDUzIDUzIDEyIDQ2IDA2IDAzIDEyIDIw
IDA2IDBDIDY4IDEwIDAwICAuX1BTUy5GLi4uIC4uaC4uCiAgICA1QUMwOiAwMCAwQyBCMCAxMyAw
MCAwMCAwQyAwMCAwMCAwMCAwMCAwQyAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
NUFEMDogMEMgMDAgMDAgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMTIgMjAgMDYgMEMgOTggMDggIC4u
Li4uLi4uLi4uIC4uLi4KICAgIDVBRTA6IDAwIDAwIDBDIDA0IDA2IDAwIDAwIDBDIDAwIDAwIDAw
IDAwIDBDIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA1QUYwOiAwMCAwQyAwMSAwMCAw
MCAwMCAwQyAwMSAwMCAwMCAwMCAxMiAyMCAwNiAwQyBEQyAgLi4uLi4uLi4uLi4uIC4uLgogICAg
NUIwMDogMDUgMDAgMDAgMEMgQ0YgMDMgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMEMgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDVCMTA6IDAwIDAwIDBDIDAyIDAwIDAwIDAwIDBDIDAyIDAwIDAw
IDAwIDA4IDU4IDUwIDUzICAuLi4uLi4uLi4uLi4uWFBTCiAgICA1QjIwOiA1MyAxMiA0QiAwRCAw
MyAxMiA0NyAwNCAwOCAwQyA2OCAxMCAwMCAwMCAwQyBCMCAgUy5LLi4uRy4uLmguLi4uLgogICAg
NUIzMDogMTMgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMTEgMEIgMEEgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDVCNDA6IDA4IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDExIDBC
IDBBIDA4IDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA1QjUwOiAwMCAwMCAwMCAwMCAw
MCAxMSAwQiAwQSAwOCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
NUI2MDogMDAgMTEgMEIgMEEgMDggMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMTIgNDcgMDQgIC4u
Li4uLi4uLi4uLi4uRy4KICAgIDVCNzA6IDA4IDBDIDk4IDA4IDAwIDAwIDBDIDA0IDA2IDAwIDAw
IDBDIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA1QjgwOiAwQyAwMCAwMCAwMCAw
MCAxMSAwQiAwQSAwOCAwMSAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
NUI5MDogMDAgMTEgMEIgMEEgMDggMDEgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMTEgMEIgMEEgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDVCQTA6IDA4IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDExIDBC
IDBBIDA4IDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA1QkIwOiAwMCAwMCAwMCAwMCAw
MCAxMiA0NyAwNCAwOCAwQyBEQyAwNSAwMCAwMCAwQyBDRiAgLi4uLi4uRy4uLi4uLi4uLgogICAg
NUJDMDogMDMgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMTEgMEIgMEEgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDVCRDA6IDA4IDAyIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDExIDBC
IDBBIDA4IDAyIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA1QkUwOiAwMCAwMCAwMCAwMCAw
MCAxMSAwQiAwQSAwOCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
NUJGMDogMDAgMTEgMEIgMEEgMDggMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDggNUYgNTAgIC4u
Li4uLi4uLi4uLi4uX1AKICAgIDVDMDA6IDUzIDQ0IDEyIDE4IDAxIDEyIDE1IDA1IDBBIDA1IDBB
IDAwIDBDIDBEIDAwIDAwICBTRC4uLi4uLi4uLi4uLi4uCiAgICA1QzEwOiAwMCAwQyBGRSAwMCAw
MCAwMCAwQyAwMiAwMCAwMCAwMCAwOCA1MCA1MCA0MyA1NiAgLi4uLi4uLi4uLi4uUFBDVgogICAg
NUMyMDogMEEgMDAgMTQgMEIgNUYgNTAgNTAgNDMgMDAgQTQgNTAgNTAgNDMgNTYgMDggNUYgIC4u
Li5fUFBDLi5QUENWLl8KICAgIDVDMzA6IDQzIDUwIDQzIDEyIDQwIDE5IDE3IDBBIDE3IDBBIDAz
IDExIDE0IDBBIDExIDgyICBDUEMuQC4uLi4uLi4uLi4uCiAgICA1QzQwOiAwQyAwMCA3RiAwOCAx
OCAwNCBCMCAwMiAwMSBDMCAwMCAwMCAwMCAwMCA3OSAwMCAgLi4uLi4uLi4uLi4uLi55LgogICAg
NUM1MDogMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgMDggMTAgMDQgQjAgMDIgMDEgQzAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDVDNjA6IDAwIDAwIDAwIDc5IDAwIDExIDE0IDBBIDExIDgyIDBD
IDAwIDdGIDA4IDA4IDA0ICAuLi55Li4uLi4uLi4uLi4uCiAgICA1QzcwOiBCMCAwMiAwMSBDMCAw
MCAwMCAwMCAwMCA3OSAwMCAxMSAxNCAwQSAxMSA4MiAwQyAgLi4uLi4uLi55Li4uLi4uLgogICAg
NUM4MDogMDAgN0YgMDggMDAgMDQgQjAgMDIgMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgIC4u
Li4uLi4uLi4uLi55Li4KICAgIDVDOTA6IDE0IDBBIDExIDgyIDBDIDAwIDAwIDAwIDAwIDAwIDAw
IDAwIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA1Q0EwOiAwMCAwMCA3OSAwMCAx
MSAxNCAwQSAxMSA4MiAwQyAwMCA3RiAwOCAxMCAwNCBCMyAgLi55Li4uLi4uLi4uLi4uLgogICAg
NUNCMDogMDIgMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgIC4u
Li4uLi55Li4uLi4uLi4KICAgIDVDQzA6IDdGIDA4IDA4IDA0IEIzIDAyIDAxIEMwIDAwIDAwIDAw
IDAwIDc5IDAwIDExIDE0ICAuLi4uLi4uLi4uLi55Li4uCiAgICA1Q0QwOiAwQSAxMSA4MiAwQyAw
MCA3RiAwOCAwMCAwNCBCMyAwMiAwMSBDMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
NUNFMDogMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC55
Li4uLi4uLi4uLi4uLi4KICAgIDVDRjA6IDAwIDAwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0IDBB
IDExIDgyIDBDIDAwIDAwICAuLi4uLi55Li4uLi4uLi4uCiAgICA1RDAwOiAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAwMCA3OSAwMCAxMSAxNCAwQSAgLi4uLi4uLi4uLi55Li4uLgogICAg
NUQxMDogMTEgODIgMEMgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDVEMjA6IDc5IDAwIDExIDE0IDBBIDExIDgyIDBDIDAwIDdGIDQw
IDAwIDA0IEU3IDAwIDAwICB5Li4uLi4uLi4uQC4uLi4uCiAgICA1RDMwOiAwMCAwMCAwMCAwMCAw
MCA3OSAwMCAxMSAxNCAwQSAxMSA4MiAwQyAwMCA3RiA0MCAgLi4uLi55Li4uLi4uLi4uQAogICAg
NUQ0MDogMDAgMDQgRTggMDAgMDAgMDAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgIC4u
Li4uLi4uLi55Li4uLi4KICAgIDVENTA6IDgyIDBDIDAwIDdGIDAyIDAwIDA0IEI0IDAyIDAxIEMw
IDAwIDAwIDAwIDAwIDc5ICAuLi4uLi4uLi4uLi4uLi55CiAgICA1RDYwOiAwMCAxMSAxNCAwQSAx
MSA4MiAwQyAwMCA3RiAwMSAwMCAwNCBCMSAwMiAwMSBDMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
NUQ3MDogMDAgMDAgMDAgMDAgNzkgMDAgMEMgMDEgMDAgMDAgMDAgMTEgMTQgMEEgMTEgODIgIC4u
Li55Li4uLi4uLi4uLi4KICAgIDVEODA6IDBDIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAw
IDAwIDAwIDAwIDc5IDAwICAuLi4uLi4uLi4uLi4uLnkuCiAgICA1RDkwOiAxMSAxNCAwQSAxMSA4
MiAwQyAwMCA3RiAwOCAxOCAwNCBCMyAwMiAwMSBDMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
NURBMDogMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgMDAgMDAgMDAgMDAgIC4u
LnkuLi4uLi4uLi4uLi4KICAgIDVEQjA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDc5IDAwIDBD
IDIxIDAyIDAwIDAwIDBDICAuLi4uLi4uLnkuLiEuLi4uCiAgICA1REMwOiA2OSAxMCAwMCAwMCAx
MCA0NyAzNSA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0QyAgaS4uLi5HNVwvLl9TQl9QTAogICAg
NUREMDogNTQgNDYgNDMgMzAgMzEgNDMgMDggNUYgNTAgNDMgNTQgMTIgMkMgMDIgMTEgMTQgIFRG
QzAxQy5fUENULiwuLi4KICAgIDVERTA6IDBBIDExIDgyIDBDIDAwIDdGIDQwIDAwIDAwIDYyIDAw
IDAxIEMwIDAwIDAwIDAwICAuLi4uLi5ALi5iLi4uLi4uCiAgICA1REYwOiAwMCA3OSAwMCAxMSAx
NCAwQSAxMSA4MiAwQyAwMCA3RiA0MCAwMCAwMCA2MyAwMCAgLnkuLi4uLi4uLi5ALi5jLgogICAg
NUUwMDogMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgMDggNUYgNTAgNTMgNTMgMTIgNDYgMDYgIC4u
Li4uLnkuLl9QU1MuRi4KICAgIDVFMTA6IDAzIDEyIDIwIDA2IDBDIDY4IDEwIDAwIDAwIDBDIEIw
IDEzIDAwIDAwIDBDIDAwICAuLiAuLmguLi4uLi4uLi4uCiAgICA1RTIwOiAwMCAwMCAwMCAwQyAw
MCAwMCAwMCAwMCAwQyAwMCAwMCAwMCAwMCAwQyAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
NUUzMDogMDAgMDAgMTIgMjAgMDYgMEMgOTggMDggMDAgMDAgMEMgMDQgMDYgMDAgMDAgMEMgIC4u
LiAuLi4uLi4uLi4uLi4KICAgIDVFNDA6IDAwIDAwIDAwIDAwIDBDIDAwIDAwIDAwIDAwIDBDIDAx
IDAwIDAwIDAwIDBDIDAxICAuLi4uLi4uLi4uLi4uLi4uCiAgICA1RTUwOiAwMCAwMCAwMCAxMiAy
MCAwNiAwQyBEQyAwNSAwMCAwMCAwQyBDRiAwMyAwMCAwMCAgLi4uLiAuLi4uLi4uLi4uLgogICAg
NUU2MDogMEMgMDAgMDAgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMEMgMDIgMDAgMDAgMDAgMEMgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDVFNzA6IDAyIDAwIDAwIDAwIDA4IDU4IDUwIDUzIDUzIDEyIDRC
IDBEIDAzIDEyIDQ3IDA0ICAuLi4uLlhQU1MuSy4uLkcuCiAgICA1RTgwOiAwOCAwQyA2OCAxMCAw
MCAwMCAwQyBCMCAxMyAwMCAwMCAwQyAwMCAwMCAwMCAwMCAgLi5oLi4uLi4uLi4uLi4uLgogICAg
NUU5MDogMEMgMDAgMDAgMDAgMDAgMTEgMEIgMEEgMDggMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDVFQTA6IDAwIDExIDBCIDBBIDA4IDAwIDAwIDAwIDAwIDAwIDAw
IDAwIDAwIDExIDBCIDBBICAuLi4uLi4uLi4uLi4uLi4uCiAgICA1RUIwOiAwOCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAxMSAwQiAwQSAwOCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
NUVDMDogMDAgMDAgMDAgMDAgMDAgMTIgNDcgMDQgMDggMEMgOTggMDggMDAgMDAgMEMgMDQgIC4u
Li4uLkcuLi4uLi4uLi4KICAgIDVFRDA6IDA2IDAwIDAwIDBDIDAwIDAwIDAwIDAwIDBDIDAwIDAw
IDAwIDAwIDExIDBCIDBBICAuLi4uLi4uLi4uLi4uLi4uCiAgICA1RUUwOiAwOCAwMSAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAxMSAwQiAwQSAwOCAwMSAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
NUVGMDogMDAgMDAgMDAgMDAgMDAgMTEgMEIgMEEgMDggMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDVGMDA6IDAwIDExIDBCIDBBIDA4IDAwIDAwIDAwIDAwIDAwIDAw
IDAwIDAwIDEyIDQ3IDA0ICAuLi4uLi4uLi4uLi4uLkcuCiAgICA1RjEwOiAwOCAwQyBEQyAwNSAw
MCAwMCAwQyBDRiAwMyAwMCAwMCAwQyAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
NUYyMDogMEMgMDAgMDAgMDAgMDAgMTEgMEIgMEEgMDggMDIgMDAgMDAgMDAgMDAgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDVGMzA6IDAwIDExIDBCIDBBIDA4IDAyIDAwIDAwIDAwIDAwIDAw
IDAwIDAwIDExIDBCIDBBICAuLi4uLi4uLi4uLi4uLi4uCiAgICA1RjQwOiAwOCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAxMSAwQiAwQSAwOCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
NUY1MDogMDAgMDAgMDAgMDAgMDAgMDggNUYgNTAgNTMgNDQgMTIgMTggMDEgMTIgMTUgMDUgIC4u
Li4uLl9QU0QuLi4uLi4KICAgIDVGNjA6IDBBIDA1IDBBIDAwIDBDIDBFIDAwIDAwIDAwIDBDIEZF
IDAwIDAwIDAwIDBDIDAyICAuLi4uLi4uLi4uLi4uLi4uCiAgICA1RjcwOiAwMCAwMCAwMCAwOCA1
MCA1MCA0MyA1NiAwQSAwMCAxNCAwQiA1RiA1MCA1MCA0MyAgLi4uLlBQQ1YuLi4uX1BQQwogICAg
NUY4MDogMDAgQTQgNTAgNTAgNDMgNTYgMDggNUYgNDMgNTAgNDMgMTIgNDAgMTkgMTcgMEEgIC4u
UFBDVi5fQ1BDLkAuLi4KICAgIDVGOTA6IDE3IDBBIDAzIDExIDE0IDBBIDExIDgyIDBDIDAwIDdG
IDA4IDE4IDA0IEIwIDAyICAuLi4uLi4uLi4uLi4uLi4uCiAgICA1RkEwOiAwMSBDMCAwMCAwMCAw
MCAwMCA3OSAwMCAxMSAxNCAwQSAxMSA4MiAwQyAwMCA3RiAgLi4uLi4ueS4uLi4uLi4uLgogICAg
NUZCMDogMDggMTAgMDQgQjAgMDIgMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgIC4u
Li4uLi4uLi4ueS4uLi4KICAgIDVGQzA6IDExIDgyIDBDIDAwIDdGIDA4IDA4IDA0IEIwIDAyIDAx
IEMwIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA1RkQwOiA3OSAwMCAxMSAxNCAw
QSAxMSA4MiAwQyAwMCA3RiAwOCAwMCAwNCBCMCAwMiAwMSAgeS4uLi4uLi4uLi4uLi4uLgogICAg
NUZFMDogQzAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgMDAgMDAgIC4u
Li4ueS4uLi4uLi4uLi4KICAgIDVGRjA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDc5
IDAwIDExIDE0IDBBIDExICAuLi4uLi4uLi4ueS4uLi4uCiAgICA2MDAwOiA4MiAwQyAwMCA3RiAw
OCAxMCAwNCBCMyAwMiAwMSBDMCAwMCAwMCAwMCAwMCA3OSAgLi4uLi4uLi4uLi4uLi4ueQogICAg
NjAxMDogMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgMDggMDggMDQgQjMgMDIgMDEgQzAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDYwMjA6IDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0IDBBIDExIDgy
IDBDIDAwIDdGIDA4IDAwICAuLi4ueS4uLi4uLi4uLi4uCiAgICA2MDMwOiAwNCBCMyAwMiAwMSBD
MCAwMCAwMCAwMCAwMCA3OSAwMCAxMSAxNCAwQSAxMSA4MiAgLi4uLi4uLi4ueS4uLi4uLgogICAg
NjA0MDogMEMgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgNzkgMDAgIC4u
Li4uLi4uLi4uLi4ueS4KICAgIDYwNTA6IDExIDE0IDBBIDExIDgyIDBDIDAwIDAwIDAwIDAwIDAw
IDAwIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA2MDYwOiAwMCAwMCAwMCA3OSAw
MCAxMSAxNCAwQSAxMSA4MiAwQyAwMCAwMCAwMCAwMCAwMCAgLi4ueS4uLi4uLi4uLi4uLgogICAg
NjA3MDogMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgIC4u
Li4uLi4ueS4uLi4uLi4KICAgIDYwODA6IDAwIDdGIDQwIDAwIDA0IEU3IDAwIDAwIDAwIDAwIDAw
IDAwIDAwIDc5IDAwIDExICAuLkAuLi4uLi4uLi4ueS4uCiAgICA2MDkwOiAxNCAwQSAxMSA4MiAw
QyAwMCA3RiA0MCAwMCAwNCBFOCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLkAuLi4uLi4uLgogICAg
NjBBMDogMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgMDIgMDAgMDQgQjQgIC4u
eS4uLi4uLi4uLi4uLi4KICAgIDYwQjA6IDAyIDAxIEMwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0
IDBBIDExIDgyIDBDIDAwICAuLi4uLi4ueS4uLi4uLi4uCiAgICA2MEMwOiA3RiAwMSAwMCAwNCBC
MSAwMiAwMSBDMCAwMCAwMCAwMCAwMCA3OSAwMCAwQyAwMSAgLi4uLi4uLi4uLi4ueS4uLgogICAg
NjBEMDogMDAgMDAgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDYwRTA6IDAwIDAwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0IDBB
IDExIDgyIDBDIDAwIDdGICAuLi4uLi55Li4uLi4uLi4uCiAgICA2MEYwOiAwOCAxOCAwNCBCMyAw
MiAwMSBDMCAwMCAwMCAwMCAwMCA3OSAwMCAxMSAxNCAwQSAgLi4uLi4uLi4uLi55Li4uLgogICAg
NjEwMDogMTEgODIgMEMgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDYxMTA6IDc5IDAwIDBDIDIxIDAyIDAwIDAwIDBDIDY5IDEwIDAw
IDAwIDEwIDQ3IDM1IDVDICB5Li4hLi4uLmkuLi4uRzVcCiAgICA2MTIwOiAyRiAwMyA1RiA1MyA0
MiA1RiA1MCA0QyA1NCA0NiA0MyAzMCAzMSA0NCAwOCA1RiAgLy5fU0JfUExURkMwMUQuXwogICAg
NjEzMDogNTAgNDMgNTQgMTIgMkMgMDIgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgNDAgMDAgIFBD
VC4sLi4uLi4uLi4uQC4KICAgIDYxNDA6IDAwIDYyIDAwIDAxIEMwIDAwIDAwIDAwIDAwIDc5IDAw
IDExIDE0IDBBIDExIDgyICAuYi4uLi4uLi55Li4uLi4uCiAgICA2MTUwOiAwQyAwMCA3RiA0MCAw
MCAwMCA2MyAwMCAwMSBDMCAwMCAwMCAwMCAwMCA3OSAwMCAgLi4uQC4uYy4uLi4uLi55LgogICAg
NjE2MDogMDggNUYgNTAgNTMgNTMgMTIgNDYgMDYgMDMgMTIgMjAgMDYgMEMgNjggMTAgMDAgIC5f
UFNTLkYuLi4gLi5oLi4KICAgIDYxNzA6IDAwIDBDIEIwIDEzIDAwIDAwIDBDIDAwIDAwIDAwIDAw
IDBDIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA2MTgwOiAwQyAwMCAwMCAwMCAw
MCAwQyAwMCAwMCAwMCAwMCAxMiAyMCAwNiAwQyA5OCAwOCAgLi4uLi4uLi4uLi4gLi4uLgogICAg
NjE5MDogMDAgMDAgMEMgMDQgMDYgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMEMgMDAgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDYxQTA6IDAwIDBDIDAxIDAwIDAwIDAwIDBDIDAxIDAwIDAwIDAw
IDEyIDIwIDA2IDBDIERDICAuLi4uLi4uLi4uLi4gLi4uCiAgICA2MUIwOiAwNSAwMCAwMCAwQyBD
RiAwMyAwMCAwMCAwQyAwMCAwMCAwMCAwMCAwQyAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
NjFDMDogMDAgMDAgMEMgMDIgMDAgMDAgMDAgMEMgMDIgMDAgMDAgMDAgMDggNTggNTAgNTMgIC4u
Li4uLi4uLi4uLi5YUFMKICAgIDYxRDA6IDUzIDEyIDRCIDBEIDAzIDEyIDQ3IDA0IDA4IDBDIDY4
IDEwIDAwIDAwIDBDIEIwICBTLksuLi5HLi4uaC4uLi4uCiAgICA2MUUwOiAxMyAwMCAwMCAwQyAw
MCAwMCAwMCAwMCAwQyAwMCAwMCAwMCAwMCAxMSAwQiAwQSAgLi4uLi4uLi4uLi4uLi4uLgogICAg
NjFGMDogMDggMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMTEgMEIgMEEgMDggMDAgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDYyMDA6IDAwIDAwIDAwIDAwIDAwIDExIDBCIDBBIDA4IDAwIDAw
IDAwIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA2MjEwOiAwMCAxMSAwQiAwQSAw
OCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAxMiA0NyAwNCAgLi4uLi4uLi4uLi4uLi5HLgogICAg
NjIyMDogMDggMEMgOTggMDggMDAgMDAgMEMgMDQgMDYgMDAgMDAgMEMgMDAgMDAgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDYyMzA6IDBDIDAwIDAwIDAwIDAwIDExIDBCIDBBIDA4IDAxIDAw
IDAwIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA2MjQwOiAwMCAxMSAwQiAwQSAw
OCAwMSAwMCAwMCAwMCAwMCAwMCAwMCAwMCAxMSAwQiAwQSAgLi4uLi4uLi4uLi4uLi4uLgogICAg
NjI1MDogMDggMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMTEgMEIgMEEgMDggMDAgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDYyNjA6IDAwIDAwIDAwIDAwIDAwIDEyIDQ3IDA0IDA4IDBDIERD
IDA1IDAwIDAwIDBDIENGICAuLi4uLi5HLi4uLi4uLi4uCiAgICA2MjcwOiAwMyAwMCAwMCAwQyAw
MCAwMCAwMCAwMCAwQyAwMCAwMCAwMCAwMCAxMSAwQiAwQSAgLi4uLi4uLi4uLi4uLi4uLgogICAg
NjI4MDogMDggMDIgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMTEgMEIgMEEgMDggMDIgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDYyOTA6IDAwIDAwIDAwIDAwIDAwIDExIDBCIDBBIDA4IDAwIDAw
IDAwIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA2MkEwOiAwMCAxMSAwQiAwQSAw
OCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwOCA1RiA1MCAgLi4uLi4uLi4uLi4uLi5fUAogICAg
NjJCMDogNTMgNDQgMTIgMTggMDEgMTIgMTUgMDUgMEEgMDUgMEEgMDAgMEMgMEUgMDAgMDAgIFNE
Li4uLi4uLi4uLi4uLi4KICAgIDYyQzA6IDAwIDBDIEZFIDAwIDAwIDAwIDBDIDAyIDAwIDAwIDAw
IDA4IDUwIDUwIDQzIDU2ICAuLi4uLi4uLi4uLi5QUENWCiAgICA2MkQwOiAwQSAwMCAxNCAwQiA1
RiA1MCA1MCA0MyAwMCBBNCA1MCA1MCA0MyA1NiAwOCA1RiAgLi4uLl9QUEMuLlBQQ1YuXwogICAg
NjJFMDogNDMgNTAgNDMgMTIgNDAgMTkgMTcgMEEgMTcgMEEgMDMgMTEgMTQgMEEgMTEgODIgIENQ
Qy5ALi4uLi4uLi4uLi4KICAgIDYyRjA6IDBDIDAwIDdGIDA4IDE4IDA0IEIwIDAyIDAxIEMwIDAw
IDAwIDAwIDAwIDc5IDAwICAuLi4uLi4uLi4uLi4uLnkuCiAgICA2MzAwOiAxMSAxNCAwQSAxMSA4
MiAwQyAwMCA3RiAwOCAxMCAwNCBCMCAwMiAwMSBDMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
NjMxMDogMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgMDggMDggMDQgIC4u
LnkuLi4uLi4uLi4uLi4KICAgIDYzMjA6IEIwIDAyIDAxIEMwIDAwIDAwIDAwIDAwIDc5IDAwIDEx
IDE0IDBBIDExIDgyIDBDICAuLi4uLi4uLnkuLi4uLi4uCiAgICA2MzMwOiAwMCA3RiAwOCAwMCAw
NCBCMCAwMiAwMSBDMCAwMCAwMCAwMCAwMCA3OSAwMCAxMSAgLi4uLi4uLi4uLi4uLnkuLgogICAg
NjM0MDogMTQgMEEgMTEgODIgMEMgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDYzNTA6IDAwIDAwIDc5IDAwIDExIDE0IDBBIDExIDgyIDBDIDAw
IDdGIDA4IDEwIDA0IEIzICAuLnkuLi4uLi4uLi4uLi4uCiAgICA2MzYwOiAwMiAwMSBDMCAwMCAw
MCAwMCAwMCA3OSAwMCAxMSAxNCAwQSAxMSA4MiAwQyAwMCAgLi4uLi4uLnkuLi4uLi4uLgogICAg
NjM3MDogN0YgMDggMDggMDQgQjMgMDIgMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgIC4u
Li4uLi4uLi4uLnkuLi4KICAgIDYzODA6IDBBIDExIDgyIDBDIDAwIDdGIDA4IDAwIDA0IEIzIDAy
IDAxIEMwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA2MzkwOiAwMCA3OSAwMCAxMSAx
NCAwQSAxMSA4MiAwQyAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLnkuLi4uLi4uLi4uLi4uLgogICAg
NjNBMDogMDAgMDAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgMDAgIC4u
Li4uLnkuLi4uLi4uLi4KICAgIDYzQjA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAw
IDc5IDAwIDExIDE0IDBBICAuLi4uLi4uLi4uLnkuLi4uCiAgICA2M0MwOiAxMSA4MiAwQyAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
NjNEMDogNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgNDAgMDAgMDQgRTcgMDAgMDAgIHku
Li4uLi4uLi5ALi4uLi4KICAgIDYzRTA6IDAwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0IDBBIDEx
IDgyIDBDIDAwIDdGIDQwICAuLi4uLnkuLi4uLi4uLi5ACiAgICA2M0YwOiAwMCAwNCBFOCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCA3OSAwMCAxMSAxNCAwQSAxMSAgLi4uLi4uLi4uLnkuLi4uLgogICAg
NjQwMDogODIgMEMgMDAgN0YgMDIgMDAgMDQgQjQgMDIgMDEgQzAgMDAgMDAgMDAgMDAgNzkgIC4u
Li4uLi4uLi4uLi4uLnkKICAgIDY0MTA6IDAwIDExIDE0IDBBIDExIDgyIDBDIDAwIDdGIDAxIDAw
IDA0IEIxIDAyIDAxIEMwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA2NDIwOiAwMCAwMCAwMCAwMCA3
OSAwMCAwQyAwMSAwMCAwMCAwMCAxMSAxNCAwQSAxMSA4MiAgLi4uLnkuLi4uLi4uLi4uLgogICAg
NjQzMDogMEMgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgNzkgMDAgIC4u
Li4uLi4uLi4uLi4ueS4KICAgIDY0NDA6IDExIDE0IDBBIDExIDgyIDBDIDAwIDdGIDA4IDE4IDA0
IEIzIDAyIDAxIEMwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA2NDUwOiAwMCAwMCAwMCA3OSAw
MCAxMSAxNCAwQSAxMSA4MiAwQyAwMCAwMCAwMCAwMCAwMCAgLi4ueS4uLi4uLi4uLi4uLgogICAg
NjQ2MDogMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgNzkgMDAgMEMgMjEgMDIgMDAgMDAgMEMgIC4u
Li4uLi4ueS4uIS4uLi4KICAgIDY0NzA6IDY5IDEwIDAwIDAwIDEwIDQ3IDM1IDVDIDJGIDAzIDVG
IDUzIDQyIDVGIDUwIDRDICBpLi4uLkc1XC8uX1NCX1BMCiAgICA2NDgwOiA1NCA0NiA0MyAzMCAz
MSA0NSAwOCA1RiA1MCA0MyA1NCAxMiAyQyAwMiAxMSAxNCAgVEZDMDFFLl9QQ1QuLC4uLgogICAg
NjQ5MDogMEEgMTEgODIgMEMgMDAgN0YgNDAgMDAgMDAgNjIgMDAgMDEgQzAgMDAgMDAgMDAgIC4u
Li4uLkAuLmIuLi4uLi4KICAgIDY0QTA6IDAwIDc5IDAwIDExIDE0IDBBIDExIDgyIDBDIDAwIDdG
IDQwIDAwIDAwIDYzIDAwICAueS4uLi4uLi4uLkAuLmMuCiAgICA2NEIwOiAwMSBDMCAwMCAwMCAw
MCAwMCA3OSAwMCAwOCA1RiA1MCA1MyA1MyAxMiA0NiAwNiAgLi4uLi4ueS4uX1BTUy5GLgogICAg
NjRDMDogMDMgMTIgMjAgMDYgMEMgNjggMTAgMDAgMDAgMEMgQjAgMTMgMDAgMDAgMEMgMDAgIC4u
IC4uaC4uLi4uLi4uLi4KICAgIDY0RDA6IDAwIDAwIDAwIDBDIDAwIDAwIDAwIDAwIDBDIDAwIDAw
IDAwIDAwIDBDIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA2NEUwOiAwMCAwMCAxMiAyMCAw
NiAwQyA5OCAwOCAwMCAwMCAwQyAwNCAwNiAwMCAwMCAwQyAgLi4uIC4uLi4uLi4uLi4uLgogICAg
NjRGMDogMDAgMDAgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMEMgMDEgMDAgMDAgMDAgMEMgMDEgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDY1MDA6IDAwIDAwIDAwIDEyIDIwIDA2IDBDIERDIDA1IDAwIDAw
IDBDIENGIDAzIDAwIDAwICAuLi4uIC4uLi4uLi4uLi4uCiAgICA2NTEwOiAwQyAwMCAwMCAwMCAw
MCAwQyAwMCAwMCAwMCAwMCAwQyAwMiAwMCAwMCAwMCAwQyAgLi4uLi4uLi4uLi4uLi4uLgogICAg
NjUyMDogMDIgMDAgMDAgMDAgMDggNTggNTAgNTMgNTMgMTIgNEIgMEQgMDMgMTIgNDcgMDQgIC4u
Li4uWFBTUy5LLi4uRy4KICAgIDY1MzA6IDA4IDBDIDY4IDEwIDAwIDAwIDBDIEIwIDEzIDAwIDAw
IDBDIDAwIDAwIDAwIDAwICAuLmguLi4uLi4uLi4uLi4uCiAgICA2NTQwOiAwQyAwMCAwMCAwMCAw
MCAxMSAwQiAwQSAwOCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
NjU1MDogMDAgMTEgMEIgMEEgMDggMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMTEgMEIgMEEgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDY1NjA6IDA4IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDExIDBC
IDBBIDA4IDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA2NTcwOiAwMCAwMCAwMCAwMCAw
MCAxMiA0NyAwNCAwOCAwQyA5OCAwOCAwMCAwMCAwQyAwNCAgLi4uLi4uRy4uLi4uLi4uLgogICAg
NjU4MDogMDYgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMTEgMEIgMEEgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDY1OTA6IDA4IDAxIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDExIDBC
IDBBIDA4IDAxIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA2NUEwOiAwMCAwMCAwMCAwMCAw
MCAxMSAwQiAwQSAwOCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
NjVCMDogMDAgMTEgMEIgMEEgMDggMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMTIgNDcgMDQgIC4u
Li4uLi4uLi4uLi4uRy4KICAgIDY1QzA6IDA4IDBDIERDIDA1IDAwIDAwIDBDIENGIDAzIDAwIDAw
IDBDIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA2NUQwOiAwQyAwMCAwMCAwMCAw
MCAxMSAwQiAwQSAwOCAwMiAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
NjVFMDogMDAgMTEgMEIgMEEgMDggMDIgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMTEgMEIgMEEgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDY1RjA6IDA4IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDExIDBC
IDBBIDA4IDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA2NjAwOiAwMCAwMCAwMCAwMCAw
MCAwOCA1RiA1MCA1MyA0NCAxMiAxOCAwMSAxMiAxNSAwNSAgLi4uLi4uX1BTRC4uLi4uLgogICAg
NjYxMDogMEEgMDUgMEEgMDAgMEMgMEYgMDAgMDAgMDAgMEMgRkUgMDAgMDAgMDAgMEMgMDIgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDY2MjA6IDAwIDAwIDAwIDA4IDUwIDUwIDQzIDU2IDBBIDAwIDE0
IDBCIDVGIDUwIDUwIDQzICAuLi4uUFBDVi4uLi5fUFBDCiAgICA2NjMwOiAwMCBBNCA1MCA1MCA0
MyA1NiAwOCA1RiA0MyA1MCA0MyAxMiA0MCAxOSAxNyAwQSAgLi5QUENWLl9DUEMuQC4uLgogICAg
NjY0MDogMTcgMEEgMDMgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgMDggMTggMDQgQjAgMDIgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDY2NTA6IDAxIEMwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0IDBB
IDExIDgyIDBDIDAwIDdGICAuLi4uLi55Li4uLi4uLi4uCiAgICA2NjYwOiAwOCAxMCAwNCBCMCAw
MiAwMSBDMCAwMCAwMCAwMCAwMCA3OSAwMCAxMSAxNCAwQSAgLi4uLi4uLi4uLi55Li4uLgogICAg
NjY3MDogMTEgODIgMEMgMDAgN0YgMDggMDggMDQgQjAgMDIgMDEgQzAgMDAgMDAgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDY2ODA6IDc5IDAwIDExIDE0IDBBIDExIDgyIDBDIDAwIDdGIDA4
IDAwIDA0IEIwIDAyIDAxICB5Li4uLi4uLi4uLi4uLi4uCiAgICA2NjkwOiBDMCAwMCAwMCAwMCAw
MCA3OSAwMCAxMSAxNCAwQSAxMSA4MiAwQyAwMCAwMCAwMCAgLi4uLi55Li4uLi4uLi4uLgogICAg
NjZBMDogMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgIC4u
Li4uLi4uLi55Li4uLi4KICAgIDY2QjA6IDgyIDBDIDAwIDdGIDA4IDEwIDA0IEIzIDAyIDAxIEMw
IDAwIDAwIDAwIDAwIDc5ICAuLi4uLi4uLi4uLi4uLi55CiAgICA2NkMwOiAwMCAxMSAxNCAwQSAx
MSA4MiAwQyAwMCA3RiAwOCAwOCAwNCBCMyAwMiAwMSBDMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
NjZEMDogMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgMDggMDAgIC4u
Li55Li4uLi4uLi4uLi4KICAgIDY2RTA6IDA0IEIzIDAyIDAxIEMwIDAwIDAwIDAwIDAwIDc5IDAw
IDExIDE0IDBBIDExIDgyICAuLi4uLi4uLi55Li4uLi4uCiAgICA2NkYwOiAwQyAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCA3OSAwMCAgLi4uLi4uLi4uLi4uLi55LgogICAg
NjcwMDogMTEgMTQgMEEgMTEgODIgMEMgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDY3MTA6IDAwIDAwIDAwIDc5IDAwIDExIDE0IDBBIDExIDgyIDBD
IDAwIDAwIDAwIDAwIDAwICAuLi55Li4uLi4uLi4uLi4uCiAgICA2NzIwOiAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCA3OSAwMCAxMSAxNCAwQSAxMSA4MiAwQyAgLi4uLi4uLi55Li4uLi4uLgogICAg
NjczMDogMDAgN0YgNDAgMDAgMDQgRTcgMDAgMDAgMDAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgIC4u
QC4uLi4uLi4uLi55Li4KICAgIDY3NDA6IDE0IDBBIDExIDgyIDBDIDAwIDdGIDQwIDAwIDA0IEU4
IDAwIDAwIDAwIDAwIDAwICAuLi4uLi4uQC4uLi4uLi4uCiAgICA2NzUwOiAwMCAwMCA3OSAwMCAx
MSAxNCAwQSAxMSA4MiAwQyAwMCA3RiAwMiAwMCAwNCBCNCAgLi55Li4uLi4uLi4uLi4uLgogICAg
Njc2MDogMDIgMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgIC4u
Li4uLi55Li4uLi4uLi4KICAgIDY3NzA6IDdGIDAxIDAwIDA0IEIxIDAyIDAxIEMwIDAwIDAwIDAw
IDAwIDc5IDAwIDBDIDAxICAuLi4uLi4uLi4uLi55Li4uCiAgICA2NzgwOiAwMCAwMCAwMCAxMSAx
NCAwQSAxMSA4MiAwQyAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
Njc5MDogMDAgMDAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgIC4u
Li4uLnkuLi4uLi4uLi4KICAgIDY3QTA6IDA4IDE4IDA0IEIzIDAyIDAxIEMwIDAwIDAwIDAwIDAw
IDc5IDAwIDExIDE0IDBBICAuLi4uLi4uLi4uLnkuLi4uCiAgICA2N0IwOiAxMSA4MiAwQyAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
NjdDMDogNzkgMDAgMEMgMjEgMDIgMDAgMDAgMEMgNjkgMTAgMDAgMDAgMTAgNDcgMzUgNUMgIHku
LiEuLi4uaS4uLi5HNVwKICAgIDY3RDA6IDJGIDAzIDVGIDUzIDQyIDVGIDUwIDRDIDU0IDQ2IDQz
IDMwIDMxIDQ2IDA4IDVGICAvLl9TQl9QTFRGQzAxRi5fCiAgICA2N0UwOiA1MCA0MyA1NCAxMiAy
QyAwMiAxMSAxNCAwQSAxMSA4MiAwQyAwMCA3RiA0MCAwMCAgUENULiwuLi4uLi4uLi5ALgogICAg
NjdGMDogMDAgNjIgMDAgMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgIC5i
Li4uLi4uLnkuLi4uLi4KICAgIDY4MDA6IDBDIDAwIDdGIDQwIDAwIDAwIDYzIDAwIDAxIEMwIDAw
IDAwIDAwIDAwIDc5IDAwICAuLi5ALi5jLi4uLi4uLnkuCiAgICA2ODEwOiAwOCA1RiA1MCA1MyA1
MyAxMiA0NiAwNiAwMyAxMiAyMCAwNiAwQyA2OCAxMCAwMCAgLl9QU1MuRi4uLiAuLmguLgogICAg
NjgyMDogMDAgMEMgQjAgMTMgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMEMgMDAgMDAgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDY4MzA6IDBDIDAwIDAwIDAwIDAwIDBDIDAwIDAwIDAwIDAwIDEy
IDIwIDA2IDBDIDk4IDA4ICAuLi4uLi4uLi4uLiAuLi4uCiAgICA2ODQwOiAwMCAwMCAwQyAwNCAw
NiAwMCAwMCAwQyAwMCAwMCAwMCAwMCAwQyAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
Njg1MDogMDAgMEMgMDEgMDAgMDAgMDAgMEMgMDEgMDAgMDAgMDAgMTIgMjAgMDYgMEMgREMgIC4u
Li4uLi4uLi4uLiAuLi4KICAgIDY4NjA6IDA1IDAwIDAwIDBDIENGIDAzIDAwIDAwIDBDIDAwIDAw
IDAwIDAwIDBDIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA2ODcwOiAwMCAwMCAwQyAwMiAw
MCAwMCAwMCAwQyAwMiAwMCAwMCAwMCAwOCA1OCA1MCA1MyAgLi4uLi4uLi4uLi4uLlhQUwogICAg
Njg4MDogNTMgMTIgNEIgMEQgMDMgMTIgNDcgMDQgMDggMEMgNjggMTAgMDAgMDAgMEMgQjAgIFMu
Sy4uLkcuLi5oLi4uLi4KICAgIDY4OTA6IDEzIDAwIDAwIDBDIDAwIDAwIDAwIDAwIDBDIDAwIDAw
IDAwIDAwIDExIDBCIDBBICAuLi4uLi4uLi4uLi4uLi4uCiAgICA2OEEwOiAwOCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAxMSAwQiAwQSAwOCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
NjhCMDogMDAgMDAgMDAgMDAgMDAgMTEgMEIgMEEgMDggMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDY4QzA6IDAwIDExIDBCIDBBIDA4IDAwIDAwIDAwIDAwIDAwIDAw
IDAwIDAwIDEyIDQ3IDA0ICAuLi4uLi4uLi4uLi4uLkcuCiAgICA2OEQwOiAwOCAwQyA5OCAwOCAw
MCAwMCAwQyAwNCAwNiAwMCAwMCAwQyAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
NjhFMDogMEMgMDAgMDAgMDAgMDAgMTEgMEIgMEEgMDggMDEgMDAgMDAgMDAgMDAgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDY4RjA6IDAwIDExIDBCIDBBIDA4IDAxIDAwIDAwIDAwIDAwIDAw
IDAwIDAwIDExIDBCIDBBICAuLi4uLi4uLi4uLi4uLi4uCiAgICA2OTAwOiAwOCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAxMSAwQiAwQSAwOCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
NjkxMDogMDAgMDAgMDAgMDAgMDAgMTIgNDcgMDQgMDggMEMgREMgMDUgMDAgMDAgMEMgQ0YgIC4u
Li4uLkcuLi4uLi4uLi4KICAgIDY5MjA6IDAzIDAwIDAwIDBDIDAwIDAwIDAwIDAwIDBDIDAwIDAw
IDAwIDAwIDExIDBCIDBBICAuLi4uLi4uLi4uLi4uLi4uCiAgICA2OTMwOiAwOCAwMiAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAxMSAwQiAwQSAwOCAwMiAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
Njk0MDogMDAgMDAgMDAgMDAgMDAgMTEgMEIgMEEgMDggMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDY5NTA6IDAwIDExIDBCIDBBIDA4IDAwIDAwIDAwIDAwIDAwIDAw
IDAwIDAwIDA4IDVGIDUwICAuLi4uLi4uLi4uLi4uLl9QCiAgICA2OTYwOiA1MyA0NCAxMiAxOCAw
MSAxMiAxNSAwNSAwQSAwNSAwQSAwMCAwQyAwRiAwMCAwMCAgU0QuLi4uLi4uLi4uLi4uLgogICAg
Njk3MDogMDAgMEMgRkUgMDAgMDAgMDAgMEMgMDIgMDAgMDAgMDAgMDggNTAgNTAgNDMgNTYgIC4u
Li4uLi4uLi4uLlBQQ1YKICAgIDY5ODA6IDBBIDAwIDE0IDBCIDVGIDUwIDUwIDQzIDAwIEE0IDUw
IDUwIDQzIDU2IDA4IDVGICAuLi4uX1BQQy4uUFBDVi5fCiAgICA2OTkwOiA0MyA1MCA0MyAxMiA0
MCAxOSAxNyAwQSAxNyAwQSAwMyAxMSAxNCAwQSAxMSA4MiAgQ1BDLkAuLi4uLi4uLi4uLgogICAg
NjlBMDogMEMgMDAgN0YgMDggMTggMDQgQjAgMDIgMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgIC4u
Li4uLi4uLi4uLi4ueS4KICAgIDY5QjA6IDExIDE0IDBBIDExIDgyIDBDIDAwIDdGIDA4IDEwIDA0
IEIwIDAyIDAxIEMwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA2OUMwOiAwMCAwMCAwMCA3OSAw
MCAxMSAxNCAwQSAxMSA4MiAwQyAwMCA3RiAwOCAwOCAwNCAgLi4ueS4uLi4uLi4uLi4uLgogICAg
NjlEMDogQjAgMDIgMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgIC4u
Li4uLi4ueS4uLi4uLi4KICAgIDY5RTA6IDAwIDdGIDA4IDAwIDA0IEIwIDAyIDAxIEMwIDAwIDAw
IDAwIDAwIDc5IDAwIDExICAuLi4uLi4uLi4uLi4ueS4uCiAgICA2OUYwOiAxNCAwQSAxMSA4MiAw
QyAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
NkEwMDogMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgMDggMTAgMDQgQjMgIC4u
eS4uLi4uLi4uLi4uLi4KICAgIDZBMTA6IDAyIDAxIEMwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0
IDBBIDExIDgyIDBDIDAwICAuLi4uLi4ueS4uLi4uLi4uCiAgICA2QTIwOiA3RiAwOCAwOCAwNCBC
MyAwMiAwMSBDMCAwMCAwMCAwMCAwMCA3OSAwMCAxMSAxNCAgLi4uLi4uLi4uLi4ueS4uLgogICAg
NkEzMDogMEEgMTEgODIgMEMgMDAgN0YgMDggMDAgMDQgQjMgMDIgMDEgQzAgMDAgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDZBNDA6IDAwIDc5IDAwIDExIDE0IDBBIDExIDgyIDBDIDAwIDAw
IDAwIDAwIDAwIDAwIDAwICAueS4uLi4uLi4uLi4uLi4uCiAgICA2QTUwOiAwMCAwMCAwMCAwMCAw
MCAwMCA3OSAwMCAxMSAxNCAwQSAxMSA4MiAwQyAwMCAwMCAgLi4uLi4ueS4uLi4uLi4uLgogICAg
NkE2MDogMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgIC4u
Li4uLi4uLi4ueS4uLi4KICAgIDZBNzA6IDExIDgyIDBDIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAw
IDAwIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA2QTgwOiA3OSAwMCAxMSAxNCAw
QSAxMSA4MiAwQyAwMCA3RiA0MCAwMCAwNCBFNyAwMCAwMCAgeS4uLi4uLi4uLkAuLi4uLgogICAg
NkE5MDogMDAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgNDAgIC4u
Li4ueS4uLi4uLi4uLkAKICAgIDZBQTA6IDAwIDA0IEU4IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDc5
IDAwIDExIDE0IDBBIDExICAuLi4uLi4uLi4ueS4uLi4uCiAgICA2QUIwOiA4MiAwQyAwMCA3RiAw
MiAwMCAwNCBCNCAwMiAwMSBDMCAwMCAwMCAwMCAwMCA3OSAgLi4uLi4uLi4uLi4uLi4ueQogICAg
NkFDMDogMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgMDEgMDAgMDQgQjEgMDIgMDEgQzAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDZBRDA6IDAwIDAwIDAwIDAwIDc5IDAwIDBDIDAxIDAwIDAwIDAw
IDExIDE0IDBBIDExIDgyICAuLi4ueS4uLi4uLi4uLi4uCiAgICA2QUUwOiAwQyAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCA3OSAwMCAgLi4uLi4uLi4uLi4uLi55LgogICAg
NkFGMDogMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgMDggMTggMDQgQjMgMDIgMDEgQzAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDZCMDA6IDAwIDAwIDAwIDc5IDAwIDExIDE0IDBBIDExIDgyIDBD
IDAwIDAwIDAwIDAwIDAwICAuLi55Li4uLi4uLi4uLi4uCiAgICA2QjEwOiAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCA3OSAwMCAwQyAyMSAwMiAwMCAwMCAwQyAgLi4uLi4uLi55Li4hLi4uLgogICAg
NkIyMDogNjkgMTAgMDAgMDAgMTAgNDcgMzUgNUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAgNEMgIGku
Li4uRzVcLy5fU0JfUEwKICAgIDZCMzA6IDU0IDQ2IDQzIDMwIDMyIDMwIDA4IDVGIDUwIDQzIDU0
IDEyIDJDIDAyIDExIDE0ICBURkMwMjAuX1BDVC4sLi4uCiAgICA2QjQwOiAwQSAxMSA4MiAwQyAw
MCA3RiA0MCAwMCAwMCA2MiAwMCAwMSBDMCAwMCAwMCAwMCAgLi4uLi4uQC4uYi4uLi4uLgogICAg
NkI1MDogMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgNDAgMDAgMDAgNjMgMDAgIC55
Li4uLi4uLi4uQC4uYy4KICAgIDZCNjA6IDAxIEMwIDAwIDAwIDAwIDAwIDc5IDAwIDA4IDVGIDUw
IDUzIDUzIDEyIDQ2IDA2ICAuLi4uLi55Li5fUFNTLkYuCiAgICA2QjcwOiAwMyAxMiAyMCAwNiAw
QyA2OCAxMCAwMCAwMCAwQyBCMCAxMyAwMCAwMCAwQyAwMCAgLi4gLi5oLi4uLi4uLi4uLgogICAg
NkI4MDogMDAgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMEMgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDZCOTA6IDAwIDAwIDEyIDIwIDA2IDBDIDk4IDA4IDAwIDAwIDBD
IDA0IDA2IDAwIDAwIDBDICAuLi4gLi4uLi4uLi4uLi4uCiAgICA2QkEwOiAwMCAwMCAwMCAwMCAw
QyAwMCAwMCAwMCAwMCAwQyAwMSAwMCAwMCAwMCAwQyAwMSAgLi4uLi4uLi4uLi4uLi4uLgogICAg
NkJCMDogMDAgMDAgMDAgMTIgMjAgMDYgMEMgREMgMDUgMDAgMDAgMEMgQ0YgMDMgMDAgMDAgIC4u
Li4gLi4uLi4uLi4uLi4KICAgIDZCQzA6IDBDIDAwIDAwIDAwIDAwIDBDIDAwIDAwIDAwIDAwIDBD
IDAyIDAwIDAwIDAwIDBDICAuLi4uLi4uLi4uLi4uLi4uCiAgICA2QkQwOiAwMiAwMCAwMCAwMCAw
OCA1OCA1MCA1MyA1MyAxMiA0QiAwRCAwMyAxMiA0NyAwNCAgLi4uLi5YUFNTLksuLi5HLgogICAg
NkJFMDogMDggMEMgNjggMTAgMDAgMDAgMEMgQjAgMTMgMDAgMDAgMEMgMDAgMDAgMDAgMDAgIC4u
aC4uLi4uLi4uLi4uLi4KICAgIDZCRjA6IDBDIDAwIDAwIDAwIDAwIDExIDBCIDBBIDA4IDAwIDAw
IDAwIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA2QzAwOiAwMCAxMSAwQiAwQSAw
OCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAxMSAwQiAwQSAgLi4uLi4uLi4uLi4uLi4uLgogICAg
NkMxMDogMDggMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMTEgMEIgMEEgMDggMDAgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDZDMjA6IDAwIDAwIDAwIDAwIDAwIDEyIDQ3IDA0IDA4IDBDIDk4
IDA4IDAwIDAwIDBDIDA0ICAuLi4uLi5HLi4uLi4uLi4uCiAgICA2QzMwOiAwNiAwMCAwMCAwQyAw
MCAwMCAwMCAwMCAwQyAwMCAwMCAwMCAwMCAxMSAwQiAwQSAgLi4uLi4uLi4uLi4uLi4uLgogICAg
NkM0MDogMDggMDEgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMTEgMEIgMEEgMDggMDEgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDZDNTA6IDAwIDAwIDAwIDAwIDAwIDExIDBCIDBBIDA4IDAwIDAw
IDAwIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA2QzYwOiAwMCAxMSAwQiAwQSAw
OCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAxMiA0NyAwNCAgLi4uLi4uLi4uLi4uLi5HLgogICAg
NkM3MDogMDggMEMgREMgMDUgMDAgMDAgMEMgQ0YgMDMgMDAgMDAgMEMgMDAgMDAgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDZDODA6IDBDIDAwIDAwIDAwIDAwIDExIDBCIDBBIDA4IDAyIDAw
IDAwIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA2QzkwOiAwMCAxMSAwQiAwQSAw
OCAwMiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAxMSAwQiAwQSAgLi4uLi4uLi4uLi4uLi4uLgogICAg
NkNBMDogMDggMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMTEgMEIgMEEgMDggMDAgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDZDQjA6IDAwIDAwIDAwIDAwIDAwIDA4IDVGIDUwIDUzIDQ0IDEy
IDE4IDAxIDEyIDE1IDA1ICAuLi4uLi5fUFNELi4uLi4uCiAgICA2Q0MwOiAwQSAwNSAwQSAwMCAw
QyAxMCAwMCAwMCAwMCAwQyBGRSAwMCAwMCAwMCAwQyAwMiAgLi4uLi4uLi4uLi4uLi4uLgogICAg
NkNEMDogMDAgMDAgMDAgMDggNTAgNTAgNDMgNTYgMEEgMDAgMTQgMEIgNUYgNTAgNTAgNDMgIC4u
Li5QUENWLi4uLl9QUEMKICAgIDZDRTA6IDAwIEE0IDUwIDUwIDQzIDU2IDA4IDVGIDQzIDUwIDQz
IDEyIDQwIDE5IDE3IDBBICAuLlBQQ1YuX0NQQy5ALi4uCiAgICA2Q0YwOiAxNyAwQSAwMyAxMSAx
NCAwQSAxMSA4MiAwQyAwMCA3RiAwOCAxOCAwNCBCMCAwMiAgLi4uLi4uLi4uLi4uLi4uLgogICAg
NkQwMDogMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgIC4u
Li4uLnkuLi4uLi4uLi4KICAgIDZEMTA6IDA4IDEwIDA0IEIwIDAyIDAxIEMwIDAwIDAwIDAwIDAw
IDc5IDAwIDExIDE0IDBBICAuLi4uLi4uLi4uLnkuLi4uCiAgICA2RDIwOiAxMSA4MiAwQyAwMCA3
RiAwOCAwOCAwNCBCMCAwMiAwMSBDMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
NkQzMDogNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgMDggMDAgMDQgQjAgMDIgMDEgIHku
Li4uLi4uLi4uLi4uLi4KICAgIDZENDA6IEMwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0IDBBIDEx
IDgyIDBDIDAwIDAwIDAwICAuLi4uLnkuLi4uLi4uLi4uCiAgICA2RDUwOiAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCA3OSAwMCAxMSAxNCAwQSAxMSAgLi4uLi4uLi4uLnkuLi4uLgogICAg
NkQ2MDogODIgMEMgMDAgN0YgMDggMTAgMDQgQjMgMDIgMDEgQzAgMDAgMDAgMDAgMDAgNzkgIC4u
Li4uLi4uLi4uLi4uLnkKICAgIDZENzA6IDAwIDExIDE0IDBBIDExIDgyIDBDIDAwIDdGIDA4IDA4
IDA0IEIzIDAyIDAxIEMwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA2RDgwOiAwMCAwMCAwMCAwMCA3
OSAwMCAxMSAxNCAwQSAxMSA4MiAwQyAwMCA3RiAwOCAwMCAgLi4uLnkuLi4uLi4uLi4uLgogICAg
NkQ5MDogMDQgQjMgMDIgMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgIC4u
Li4uLi4uLnkuLi4uLi4KICAgIDZEQTA6IDBDIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAw
IDAwIDAwIDAwIDc5IDAwICAuLi4uLi4uLi4uLi4uLnkuCiAgICA2REIwOiAxMSAxNCAwQSAxMSA4
MiAwQyAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
NkRDMDogMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgMDAgMDAgMDAgMDAgIC4u
LnkuLi4uLi4uLi4uLi4KICAgIDZERDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDc5IDAwIDEx
IDE0IDBBIDExIDgyIDBDICAuLi4uLi4uLnkuLi4uLi4uCiAgICA2REUwOiAwMCA3RiA0MCAwMCAw
NCBFNyAwMCAwMCAwMCAwMCAwMCAwMCAwMCA3OSAwMCAxMSAgLi5ALi4uLi4uLi4uLnkuLgogICAg
NkRGMDogMTQgMEEgMTEgODIgMEMgMDAgN0YgNDAgMDAgMDQgRTggMDAgMDAgMDAgMDAgMDAgIC4u
Li4uLi5ALi4uLi4uLi4KICAgIDZFMDA6IDAwIDAwIDc5IDAwIDExIDE0IDBBIDExIDgyIDBDIDAw
IDdGIDAyIDAwIDA0IEI0ICAuLnkuLi4uLi4uLi4uLi4uCiAgICA2RTEwOiAwMiAwMSBDMCAwMCAw
MCAwMCAwMCA3OSAwMCAxMSAxNCAwQSAxMSA4MiAwQyAwMCAgLi4uLi4uLnkuLi4uLi4uLgogICAg
NkUyMDogN0YgMDEgMDAgMDQgQjEgMDIgMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgMEMgMDEgIC4u
Li4uLi4uLi4uLnkuLi4KICAgIDZFMzA6IDAwIDAwIDAwIDExIDE0IDBBIDExIDgyIDBDIDAwIDAw
IDAwIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA2RTQwOiAwMCAwMCAwMCAwMCAw
MCAwMCA3OSAwMCAxMSAxNCAwQSAxMSA4MiAwQyAwMCA3RiAgLi4uLi4ueS4uLi4uLi4uLgogICAg
NkU1MDogMDggMTggMDQgQjMgMDIgMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgIC4u
Li4uLi4uLi4ueS4uLi4KICAgIDZFNjA6IDExIDgyIDBDIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAw
IDAwIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA2RTcwOiA3OSAwMCAwQyAyMSAw
MiAwMCAwMCAwQyA2OSAxMCAwMCAwMCAxMCA0NyAzNSA1QyAgeS4uIS4uLi5pLi4uLkc1XAogICAg
NkU4MDogMkYgMDMgNUYgNTMgNDIgNUYgNTAgNEMgNTQgNDYgNDMgMzAgMzIgMzEgMDggNUYgIC8u
X1NCX1BMVEZDMDIxLl8KICAgIDZFOTA6IDUwIDQzIDU0IDEyIDJDIDAyIDExIDE0IDBBIDExIDgy
IDBDIDAwIDdGIDQwIDAwICBQQ1QuLC4uLi4uLi4uLkAuCiAgICA2RUEwOiAwMCA2MiAwMCAwMSBD
MCAwMCAwMCAwMCAwMCA3OSAwMCAxMSAxNCAwQSAxMSA4MiAgLmIuLi4uLi4ueS4uLi4uLgogICAg
NkVCMDogMEMgMDAgN0YgNDAgMDAgMDAgNjMgMDAgMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgIC4u
LkAuLmMuLi4uLi4ueS4KICAgIDZFQzA6IDA4IDVGIDUwIDUzIDUzIDEyIDQ2IDA2IDAzIDEyIDIw
IDA2IDBDIDY4IDEwIDAwICAuX1BTUy5GLi4uIC4uaC4uCiAgICA2RUQwOiAwMCAwQyBCMCAxMyAw
MCAwMCAwQyAwMCAwMCAwMCAwMCAwQyAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
NkVFMDogMEMgMDAgMDAgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMTIgMjAgMDYgMEMgOTggMDggIC4u
Li4uLi4uLi4uIC4uLi4KICAgIDZFRjA6IDAwIDAwIDBDIDA0IDA2IDAwIDAwIDBDIDAwIDAwIDAw
IDAwIDBDIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA2RjAwOiAwMCAwQyAwMSAwMCAw
MCAwMCAwQyAwMSAwMCAwMCAwMCAxMiAyMCAwNiAwQyBEQyAgLi4uLi4uLi4uLi4uIC4uLgogICAg
NkYxMDogMDUgMDAgMDAgMEMgQ0YgMDMgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMEMgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDZGMjA6IDAwIDAwIDBDIDAyIDAwIDAwIDAwIDBDIDAyIDAwIDAw
IDAwIDA4IDU4IDUwIDUzICAuLi4uLi4uLi4uLi4uWFBTCiAgICA2RjMwOiA1MyAxMiA0QiAwRCAw
MyAxMiA0NyAwNCAwOCAwQyA2OCAxMCAwMCAwMCAwQyBCMCAgUy5LLi4uRy4uLmguLi4uLgogICAg
NkY0MDogMTMgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMTEgMEIgMEEgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDZGNTA6IDA4IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDExIDBC
IDBBIDA4IDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA2RjYwOiAwMCAwMCAwMCAwMCAw
MCAxMSAwQiAwQSAwOCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
NkY3MDogMDAgMTEgMEIgMEEgMDggMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMTIgNDcgMDQgIC4u
Li4uLi4uLi4uLi4uRy4KICAgIDZGODA6IDA4IDBDIDk4IDA4IDAwIDAwIDBDIDA0IDA2IDAwIDAw
IDBDIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA2RjkwOiAwQyAwMCAwMCAwMCAw
MCAxMSAwQiAwQSAwOCAwMSAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
NkZBMDogMDAgMTEgMEIgMEEgMDggMDEgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMTEgMEIgMEEgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDZGQjA6IDA4IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDExIDBC
IDBBIDA4IDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA2RkMwOiAwMCAwMCAwMCAwMCAw
MCAxMiA0NyAwNCAwOCAwQyBEQyAwNSAwMCAwMCAwQyBDRiAgLi4uLi4uRy4uLi4uLi4uLgogICAg
NkZEMDogMDMgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMTEgMEIgMEEgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDZGRTA6IDA4IDAyIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDExIDBC
IDBBIDA4IDAyIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA2RkYwOiAwMCAwMCAwMCAwMCAw
MCAxMSAwQiAwQSAwOCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
NzAwMDogMDAgMTEgMEIgMEEgMDggMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDggNUYgNTAgIC4u
Li4uLi4uLi4uLi4uX1AKICAgIDcwMTA6IDUzIDQ0IDEyIDE4IDAxIDEyIDE1IDA1IDBBIDA1IDBB
IDAwIDBDIDEwIDAwIDAwICBTRC4uLi4uLi4uLi4uLi4uCiAgICA3MDIwOiAwMCAwQyBGRSAwMCAw
MCAwMCAwQyAwMiAwMCAwMCAwMCAwOCA1MCA1MCA0MyA1NiAgLi4uLi4uLi4uLi4uUFBDVgogICAg
NzAzMDogMEEgMDAgMTQgMEIgNUYgNTAgNTAgNDMgMDAgQTQgNTAgNTAgNDMgNTYgMDggNUYgIC4u
Li5fUFBDLi5QUENWLl8KICAgIDcwNDA6IDQzIDUwIDQzIDEyIDQwIDE5IDE3IDBBIDE3IDBBIDAz
IDExIDE0IDBBIDExIDgyICBDUEMuQC4uLi4uLi4uLi4uCiAgICA3MDUwOiAwQyAwMCA3RiAwOCAx
OCAwNCBCMCAwMiAwMSBDMCAwMCAwMCAwMCAwMCA3OSAwMCAgLi4uLi4uLi4uLi4uLi55LgogICAg
NzA2MDogMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgMDggMTAgMDQgQjAgMDIgMDEgQzAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDcwNzA6IDAwIDAwIDAwIDc5IDAwIDExIDE0IDBBIDExIDgyIDBD
IDAwIDdGIDA4IDA4IDA0ICAuLi55Li4uLi4uLi4uLi4uCiAgICA3MDgwOiBCMCAwMiAwMSBDMCAw
MCAwMCAwMCAwMCA3OSAwMCAxMSAxNCAwQSAxMSA4MiAwQyAgLi4uLi4uLi55Li4uLi4uLgogICAg
NzA5MDogMDAgN0YgMDggMDAgMDQgQjAgMDIgMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgIC4u
Li4uLi4uLi4uLi55Li4KICAgIDcwQTA6IDE0IDBBIDExIDgyIDBDIDAwIDAwIDAwIDAwIDAwIDAw
IDAwIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA3MEIwOiAwMCAwMCA3OSAwMCAx
MSAxNCAwQSAxMSA4MiAwQyAwMCA3RiAwOCAxMCAwNCBCMyAgLi55Li4uLi4uLi4uLi4uLgogICAg
NzBDMDogMDIgMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgIC4u
Li4uLi55Li4uLi4uLi4KICAgIDcwRDA6IDdGIDA4IDA4IDA0IEIzIDAyIDAxIEMwIDAwIDAwIDAw
IDAwIDc5IDAwIDExIDE0ICAuLi4uLi4uLi4uLi55Li4uCiAgICA3MEUwOiAwQSAxMSA4MiAwQyAw
MCA3RiAwOCAwMCAwNCBCMyAwMiAwMSBDMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
NzBGMDogMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC55
Li4uLi4uLi4uLi4uLi4KICAgIDcxMDA6IDAwIDAwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0IDBB
IDExIDgyIDBDIDAwIDAwICAuLi4uLi55Li4uLi4uLi4uCiAgICA3MTEwOiAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAwMCA3OSAwMCAxMSAxNCAwQSAgLi4uLi4uLi4uLi55Li4uLgogICAg
NzEyMDogMTEgODIgMEMgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDcxMzA6IDc5IDAwIDExIDE0IDBBIDExIDgyIDBDIDAwIDdGIDQw
IDAwIDA0IEU3IDAwIDAwICB5Li4uLi4uLi4uQC4uLi4uCiAgICA3MTQwOiAwMCAwMCAwMCAwMCAw
MCA3OSAwMCAxMSAxNCAwQSAxMSA4MiAwQyAwMCA3RiA0MCAgLi4uLi55Li4uLi4uLi4uQAogICAg
NzE1MDogMDAgMDQgRTggMDAgMDAgMDAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgIC4u
Li4uLi4uLi55Li4uLi4KICAgIDcxNjA6IDgyIDBDIDAwIDdGIDAyIDAwIDA0IEI0IDAyIDAxIEMw
IDAwIDAwIDAwIDAwIDc5ICAuLi4uLi4uLi4uLi4uLi55CiAgICA3MTcwOiAwMCAxMSAxNCAwQSAx
MSA4MiAwQyAwMCA3RiAwMSAwMCAwNCBCMSAwMiAwMSBDMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
NzE4MDogMDAgMDAgMDAgMDAgNzkgMDAgMEMgMDEgMDAgMDAgMDAgMTEgMTQgMEEgMTEgODIgIC4u
Li55Li4uLi4uLi4uLi4KICAgIDcxOTA6IDBDIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAw
IDAwIDAwIDAwIDc5IDAwICAuLi4uLi4uLi4uLi4uLnkuCiAgICA3MUEwOiAxMSAxNCAwQSAxMSA4
MiAwQyAwMCA3RiAwOCAxOCAwNCBCMyAwMiAwMSBDMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
NzFCMDogMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgMDAgMDAgMDAgMDAgIC4u
LnkuLi4uLi4uLi4uLi4KICAgIDcxQzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDc5IDAwIDBD
IDIxIDAyIDAwIDAwIDBDICAuLi4uLi4uLnkuLiEuLi4uCiAgICA3MUQwOiA2OSAxMCAwMCAwMCAx
MCA0NyAzNSA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0QyAgaS4uLi5HNVwvLl9TQl9QTAogICAg
NzFFMDogNTQgNDYgNDMgMzAgMzIgMzIgMDggNUYgNTAgNDMgNTQgMTIgMkMgMDIgMTEgMTQgIFRG
QzAyMi5fUENULiwuLi4KICAgIDcxRjA6IDBBIDExIDgyIDBDIDAwIDdGIDQwIDAwIDAwIDYyIDAw
IDAxIEMwIDAwIDAwIDAwICAuLi4uLi5ALi5iLi4uLi4uCiAgICA3MjAwOiAwMCA3OSAwMCAxMSAx
NCAwQSAxMSA4MiAwQyAwMCA3RiA0MCAwMCAwMCA2MyAwMCAgLnkuLi4uLi4uLi5ALi5jLgogICAg
NzIxMDogMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgMDggNUYgNTAgNTMgNTMgMTIgNDYgMDYgIC4u
Li4uLnkuLl9QU1MuRi4KICAgIDcyMjA6IDAzIDEyIDIwIDA2IDBDIDY4IDEwIDAwIDAwIDBDIEIw
IDEzIDAwIDAwIDBDIDAwICAuLiAuLmguLi4uLi4uLi4uCiAgICA3MjMwOiAwMCAwMCAwMCAwQyAw
MCAwMCAwMCAwMCAwQyAwMCAwMCAwMCAwMCAwQyAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
NzI0MDogMDAgMDAgMTIgMjAgMDYgMEMgOTggMDggMDAgMDAgMEMgMDQgMDYgMDAgMDAgMEMgIC4u
LiAuLi4uLi4uLi4uLi4KICAgIDcyNTA6IDAwIDAwIDAwIDAwIDBDIDAwIDAwIDAwIDAwIDBDIDAx
IDAwIDAwIDAwIDBDIDAxICAuLi4uLi4uLi4uLi4uLi4uCiAgICA3MjYwOiAwMCAwMCAwMCAxMiAy
MCAwNiAwQyBEQyAwNSAwMCAwMCAwQyBDRiAwMyAwMCAwMCAgLi4uLiAuLi4uLi4uLi4uLgogICAg
NzI3MDogMEMgMDAgMDAgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMEMgMDIgMDAgMDAgMDAgMEMgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDcyODA6IDAyIDAwIDAwIDAwIDA4IDU4IDUwIDUzIDUzIDEyIDRC
IDBEIDAzIDEyIDQ3IDA0ICAuLi4uLlhQU1MuSy4uLkcuCiAgICA3MjkwOiAwOCAwQyA2OCAxMCAw
MCAwMCAwQyBCMCAxMyAwMCAwMCAwQyAwMCAwMCAwMCAwMCAgLi5oLi4uLi4uLi4uLi4uLgogICAg
NzJBMDogMEMgMDAgMDAgMDAgMDAgMTEgMEIgMEEgMDggMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDcyQjA6IDAwIDExIDBCIDBBIDA4IDAwIDAwIDAwIDAwIDAwIDAw
IDAwIDAwIDExIDBCIDBBICAuLi4uLi4uLi4uLi4uLi4uCiAgICA3MkMwOiAwOCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAxMSAwQiAwQSAwOCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
NzJEMDogMDAgMDAgMDAgMDAgMDAgMTIgNDcgMDQgMDggMEMgOTggMDggMDAgMDAgMEMgMDQgIC4u
Li4uLkcuLi4uLi4uLi4KICAgIDcyRTA6IDA2IDAwIDAwIDBDIDAwIDAwIDAwIDAwIDBDIDAwIDAw
IDAwIDAwIDExIDBCIDBBICAuLi4uLi4uLi4uLi4uLi4uCiAgICA3MkYwOiAwOCAwMSAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAxMSAwQiAwQSAwOCAwMSAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
NzMwMDogMDAgMDAgMDAgMDAgMDAgMTEgMEIgMEEgMDggMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDczMTA6IDAwIDExIDBCIDBBIDA4IDAwIDAwIDAwIDAwIDAwIDAw
IDAwIDAwIDEyIDQ3IDA0ICAuLi4uLi4uLi4uLi4uLkcuCiAgICA3MzIwOiAwOCAwQyBEQyAwNSAw
MCAwMCAwQyBDRiAwMyAwMCAwMCAwQyAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
NzMzMDogMEMgMDAgMDAgMDAgMDAgMTEgMEIgMEEgMDggMDIgMDAgMDAgMDAgMDAgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDczNDA6IDAwIDExIDBCIDBBIDA4IDAyIDAwIDAwIDAwIDAwIDAw
IDAwIDAwIDExIDBCIDBBICAuLi4uLi4uLi4uLi4uLi4uCiAgICA3MzUwOiAwOCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAxMSAwQiAwQSAwOCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
NzM2MDogMDAgMDAgMDAgMDAgMDAgMDggNUYgNTAgNTMgNDQgMTIgMTggMDEgMTIgMTUgMDUgIC4u
Li4uLl9QU0QuLi4uLi4KICAgIDczNzA6IDBBIDA1IDBBIDAwIDBDIDExIDAwIDAwIDAwIDBDIEZF
IDAwIDAwIDAwIDBDIDAyICAuLi4uLi4uLi4uLi4uLi4uCiAgICA3MzgwOiAwMCAwMCAwMCAwOCA1
MCA1MCA0MyA1NiAwQSAwMCAxNCAwQiA1RiA1MCA1MCA0MyAgLi4uLlBQQ1YuLi4uX1BQQwogICAg
NzM5MDogMDAgQTQgNTAgNTAgNDMgNTYgMDggNUYgNDMgNTAgNDMgMTIgNDAgMTkgMTcgMEEgIC4u
UFBDVi5fQ1BDLkAuLi4KICAgIDczQTA6IDE3IDBBIDAzIDExIDE0IDBBIDExIDgyIDBDIDAwIDdG
IDA4IDE4IDA0IEIwIDAyICAuLi4uLi4uLi4uLi4uLi4uCiAgICA3M0IwOiAwMSBDMCAwMCAwMCAw
MCAwMCA3OSAwMCAxMSAxNCAwQSAxMSA4MiAwQyAwMCA3RiAgLi4uLi4ueS4uLi4uLi4uLgogICAg
NzNDMDogMDggMTAgMDQgQjAgMDIgMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgIC4u
Li4uLi4uLi4ueS4uLi4KICAgIDczRDA6IDExIDgyIDBDIDAwIDdGIDA4IDA4IDA0IEIwIDAyIDAx
IEMwIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA3M0UwOiA3OSAwMCAxMSAxNCAw
QSAxMSA4MiAwQyAwMCA3RiAwOCAwMCAwNCBCMCAwMiAwMSAgeS4uLi4uLi4uLi4uLi4uLgogICAg
NzNGMDogQzAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgMDAgMDAgIC4u
Li4ueS4uLi4uLi4uLi4KICAgIDc0MDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDc5
IDAwIDExIDE0IDBBIDExICAuLi4uLi4uLi4ueS4uLi4uCiAgICA3NDEwOiA4MiAwQyAwMCA3RiAw
OCAxMCAwNCBCMyAwMiAwMSBDMCAwMCAwMCAwMCAwMCA3OSAgLi4uLi4uLi4uLi4uLi4ueQogICAg
NzQyMDogMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgMDggMDggMDQgQjMgMDIgMDEgQzAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDc0MzA6IDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0IDBBIDExIDgy
IDBDIDAwIDdGIDA4IDAwICAuLi4ueS4uLi4uLi4uLi4uCiAgICA3NDQwOiAwNCBCMyAwMiAwMSBD
MCAwMCAwMCAwMCAwMCA3OSAwMCAxMSAxNCAwQSAxMSA4MiAgLi4uLi4uLi4ueS4uLi4uLgogICAg
NzQ1MDogMEMgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgNzkgMDAgIC4u
Li4uLi4uLi4uLi4ueS4KICAgIDc0NjA6IDExIDE0IDBBIDExIDgyIDBDIDAwIDAwIDAwIDAwIDAw
IDAwIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA3NDcwOiAwMCAwMCAwMCA3OSAw
MCAxMSAxNCAwQSAxMSA4MiAwQyAwMCAwMCAwMCAwMCAwMCAgLi4ueS4uLi4uLi4uLi4uLgogICAg
NzQ4MDogMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgIC4u
Li4uLi4ueS4uLi4uLi4KICAgIDc0OTA6IDAwIDdGIDQwIDAwIDA0IEU3IDAwIDAwIDAwIDAwIDAw
IDAwIDAwIDc5IDAwIDExICAuLkAuLi4uLi4uLi4ueS4uCiAgICA3NEEwOiAxNCAwQSAxMSA4MiAw
QyAwMCA3RiA0MCAwMCAwNCBFOCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLkAuLi4uLi4uLgogICAg
NzRCMDogMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgMDIgMDAgMDQgQjQgIC4u
eS4uLi4uLi4uLi4uLi4KICAgIDc0QzA6IDAyIDAxIEMwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0
IDBBIDExIDgyIDBDIDAwICAuLi4uLi4ueS4uLi4uLi4uCiAgICA3NEQwOiA3RiAwMSAwMCAwNCBC
MSAwMiAwMSBDMCAwMCAwMCAwMCAwMCA3OSAwMCAwQyAwMSAgLi4uLi4uLi4uLi4ueS4uLgogICAg
NzRFMDogMDAgMDAgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDc0RjA6IDAwIDAwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0IDBB
IDExIDgyIDBDIDAwIDdGICAuLi4uLi55Li4uLi4uLi4uCiAgICA3NTAwOiAwOCAxOCAwNCBCMyAw
MiAwMSBDMCAwMCAwMCAwMCAwMCA3OSAwMCAxMSAxNCAwQSAgLi4uLi4uLi4uLi55Li4uLgogICAg
NzUxMDogMTEgODIgMEMgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDc1MjA6IDc5IDAwIDBDIDIxIDAyIDAwIDAwIDBDIDY5IDEwIDAw
IDAwIDEwIDQ3IDM1IDVDICB5Li4hLi4uLmkuLi4uRzVcCiAgICA3NTMwOiAyRiAwMyA1RiA1MyA0
MiA1RiA1MCA0QyA1NCA0NiA0MyAzMCAzMiAzMyAwOCA1RiAgLy5fU0JfUExURkMwMjMuXwogICAg
NzU0MDogNTAgNDMgNTQgMTIgMkMgMDIgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgNDAgMDAgIFBD
VC4sLi4uLi4uLi4uQC4KICAgIDc1NTA6IDAwIDYyIDAwIDAxIEMwIDAwIDAwIDAwIDAwIDc5IDAw
IDExIDE0IDBBIDExIDgyICAuYi4uLi4uLi55Li4uLi4uCiAgICA3NTYwOiAwQyAwMCA3RiA0MCAw
MCAwMCA2MyAwMCAwMSBDMCAwMCAwMCAwMCAwMCA3OSAwMCAgLi4uQC4uYy4uLi4uLi55LgogICAg
NzU3MDogMDggNUYgNTAgNTMgNTMgMTIgNDYgMDYgMDMgMTIgMjAgMDYgMEMgNjggMTAgMDAgIC5f
UFNTLkYuLi4gLi5oLi4KICAgIDc1ODA6IDAwIDBDIEIwIDEzIDAwIDAwIDBDIDAwIDAwIDAwIDAw
IDBDIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA3NTkwOiAwQyAwMCAwMCAwMCAw
MCAwQyAwMCAwMCAwMCAwMCAxMiAyMCAwNiAwQyA5OCAwOCAgLi4uLi4uLi4uLi4gLi4uLgogICAg
NzVBMDogMDAgMDAgMEMgMDQgMDYgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMEMgMDAgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDc1QjA6IDAwIDBDIDAxIDAwIDAwIDAwIDBDIDAxIDAwIDAwIDAw
IDEyIDIwIDA2IDBDIERDICAuLi4uLi4uLi4uLi4gLi4uCiAgICA3NUMwOiAwNSAwMCAwMCAwQyBD
RiAwMyAwMCAwMCAwQyAwMCAwMCAwMCAwMCAwQyAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
NzVEMDogMDAgMDAgMEMgMDIgMDAgMDAgMDAgMEMgMDIgMDAgMDAgMDAgMDggNTggNTAgNTMgIC4u
Li4uLi4uLi4uLi5YUFMKICAgIDc1RTA6IDUzIDEyIDRCIDBEIDAzIDEyIDQ3IDA0IDA4IDBDIDY4
IDEwIDAwIDAwIDBDIEIwICBTLksuLi5HLi4uaC4uLi4uCiAgICA3NUYwOiAxMyAwMCAwMCAwQyAw
MCAwMCAwMCAwMCAwQyAwMCAwMCAwMCAwMCAxMSAwQiAwQSAgLi4uLi4uLi4uLi4uLi4uLgogICAg
NzYwMDogMDggMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMTEgMEIgMEEgMDggMDAgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDc2MTA6IDAwIDAwIDAwIDAwIDAwIDExIDBCIDBBIDA4IDAwIDAw
IDAwIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA3NjIwOiAwMCAxMSAwQiAwQSAw
OCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAxMiA0NyAwNCAgLi4uLi4uLi4uLi4uLi5HLgogICAg
NzYzMDogMDggMEMgOTggMDggMDAgMDAgMEMgMDQgMDYgMDAgMDAgMEMgMDAgMDAgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDc2NDA6IDBDIDAwIDAwIDAwIDAwIDExIDBCIDBBIDA4IDAxIDAw
IDAwIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA3NjUwOiAwMCAxMSAwQiAwQSAw
OCAwMSAwMCAwMCAwMCAwMCAwMCAwMCAwMCAxMSAwQiAwQSAgLi4uLi4uLi4uLi4uLi4uLgogICAg
NzY2MDogMDggMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMTEgMEIgMEEgMDggMDAgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDc2NzA6IDAwIDAwIDAwIDAwIDAwIDEyIDQ3IDA0IDA4IDBDIERD
IDA1IDAwIDAwIDBDIENGICAuLi4uLi5HLi4uLi4uLi4uCiAgICA3NjgwOiAwMyAwMCAwMCAwQyAw
MCAwMCAwMCAwMCAwQyAwMCAwMCAwMCAwMCAxMSAwQiAwQSAgLi4uLi4uLi4uLi4uLi4uLgogICAg
NzY5MDogMDggMDIgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMTEgMEIgMEEgMDggMDIgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDc2QTA6IDAwIDAwIDAwIDAwIDAwIDExIDBCIDBBIDA4IDAwIDAw
IDAwIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA3NkIwOiAwMCAxMSAwQiAwQSAw
OCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwOCA1RiA1MCAgLi4uLi4uLi4uLi4uLi5fUAogICAg
NzZDMDogNTMgNDQgMTIgMTggMDEgMTIgMTUgMDUgMEEgMDUgMEEgMDAgMEMgMTEgMDAgMDAgIFNE
Li4uLi4uLi4uLi4uLi4KICAgIDc2RDA6IDAwIDBDIEZFIDAwIDAwIDAwIDBDIDAyIDAwIDAwIDAw
IDA4IDUwIDUwIDQzIDU2ICAuLi4uLi4uLi4uLi5QUENWCiAgICA3NkUwOiAwQSAwMCAxNCAwQiA1
RiA1MCA1MCA0MyAwMCBBNCA1MCA1MCA0MyA1NiAwOCA1RiAgLi4uLl9QUEMuLlBQQ1YuXwogICAg
NzZGMDogNDMgNTAgNDMgMTIgNDAgMTkgMTcgMEEgMTcgMEEgMDMgMTEgMTQgMEEgMTEgODIgIENQ
Qy5ALi4uLi4uLi4uLi4KICAgIDc3MDA6IDBDIDAwIDdGIDA4IDE4IDA0IEIwIDAyIDAxIEMwIDAw
IDAwIDAwIDAwIDc5IDAwICAuLi4uLi4uLi4uLi4uLnkuCiAgICA3NzEwOiAxMSAxNCAwQSAxMSA4
MiAwQyAwMCA3RiAwOCAxMCAwNCBCMCAwMiAwMSBDMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
NzcyMDogMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgMDggMDggMDQgIC4u
LnkuLi4uLi4uLi4uLi4KICAgIDc3MzA6IEIwIDAyIDAxIEMwIDAwIDAwIDAwIDAwIDc5IDAwIDEx
IDE0IDBBIDExIDgyIDBDICAuLi4uLi4uLnkuLi4uLi4uCiAgICA3NzQwOiAwMCA3RiAwOCAwMCAw
NCBCMCAwMiAwMSBDMCAwMCAwMCAwMCAwMCA3OSAwMCAxMSAgLi4uLi4uLi4uLi4uLnkuLgogICAg
Nzc1MDogMTQgMEEgMTEgODIgMEMgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDc3NjA6IDAwIDAwIDc5IDAwIDExIDE0IDBBIDExIDgyIDBDIDAw
IDdGIDA4IDEwIDA0IEIzICAuLnkuLi4uLi4uLi4uLi4uCiAgICA3NzcwOiAwMiAwMSBDMCAwMCAw
MCAwMCAwMCA3OSAwMCAxMSAxNCAwQSAxMSA4MiAwQyAwMCAgLi4uLi4uLnkuLi4uLi4uLgogICAg
Nzc4MDogN0YgMDggMDggMDQgQjMgMDIgMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgIC4u
Li4uLi4uLi4uLnkuLi4KICAgIDc3OTA6IDBBIDExIDgyIDBDIDAwIDdGIDA4IDAwIDA0IEIzIDAy
IDAxIEMwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA3N0EwOiAwMCA3OSAwMCAxMSAx
NCAwQSAxMSA4MiAwQyAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLnkuLi4uLi4uLi4uLi4uLgogICAg
NzdCMDogMDAgMDAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgMDAgIC4u
Li4uLnkuLi4uLi4uLi4KICAgIDc3QzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAw
IDc5IDAwIDExIDE0IDBBICAuLi4uLi4uLi4uLnkuLi4uCiAgICA3N0QwOiAxMSA4MiAwQyAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
NzdFMDogNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgNDAgMDAgMDQgRTcgMDAgMDAgIHku
Li4uLi4uLi5ALi4uLi4KICAgIDc3RjA6IDAwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0IDBBIDEx
IDgyIDBDIDAwIDdGIDQwICAuLi4uLnkuLi4uLi4uLi5ACiAgICA3ODAwOiAwMCAwNCBFOCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCA3OSAwMCAxMSAxNCAwQSAxMSAgLi4uLi4uLi4uLnkuLi4uLgogICAg
NzgxMDogODIgMEMgMDAgN0YgMDIgMDAgMDQgQjQgMDIgMDEgQzAgMDAgMDAgMDAgMDAgNzkgIC4u
Li4uLi4uLi4uLi4uLnkKICAgIDc4MjA6IDAwIDExIDE0IDBBIDExIDgyIDBDIDAwIDdGIDAxIDAw
IDA0IEIxIDAyIDAxIEMwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA3ODMwOiAwMCAwMCAwMCAwMCA3
OSAwMCAwQyAwMSAwMCAwMCAwMCAxMSAxNCAwQSAxMSA4MiAgLi4uLnkuLi4uLi4uLi4uLgogICAg
Nzg0MDogMEMgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgNzkgMDAgIC4u
Li4uLi4uLi4uLi4ueS4KICAgIDc4NTA6IDExIDE0IDBBIDExIDgyIDBDIDAwIDdGIDA4IDE4IDA0
IEIzIDAyIDAxIEMwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA3ODYwOiAwMCAwMCAwMCA3OSAw
MCAxMSAxNCAwQSAxMSA4MiAwQyAwMCAwMCAwMCAwMCAwMCAgLi4ueS4uLi4uLi4uLi4uLgogICAg
Nzg3MDogMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgNzkgMDAgMEMgMjEgMDIgMDAgMDAgMEMgIC4u
Li4uLi4ueS4uIS4uLi4KICAgIDc4ODA6IDY5IDEwIDAwIDAwIDEwIDQ3IDM1IDVDIDJGIDAzIDVG
IDUzIDQyIDVGIDUwIDRDICBpLi4uLkc1XC8uX1NCX1BMCiAgICA3ODkwOiA1NCA0NiA0MyAzMCAz
MiAzNCAwOCA1RiA1MCA0MyA1NCAxMiAyQyAwMiAxMSAxNCAgVEZDMDI0Ll9QQ1QuLC4uLgogICAg
NzhBMDogMEEgMTEgODIgMEMgMDAgN0YgNDAgMDAgMDAgNjIgMDAgMDEgQzAgMDAgMDAgMDAgIC4u
Li4uLkAuLmIuLi4uLi4KICAgIDc4QjA6IDAwIDc5IDAwIDExIDE0IDBBIDExIDgyIDBDIDAwIDdG
IDQwIDAwIDAwIDYzIDAwICAueS4uLi4uLi4uLkAuLmMuCiAgICA3OEMwOiAwMSBDMCAwMCAwMCAw
MCAwMCA3OSAwMCAwOCA1RiA1MCA1MyA1MyAxMiA0NiAwNiAgLi4uLi4ueS4uX1BTUy5GLgogICAg
NzhEMDogMDMgMTIgMjAgMDYgMEMgNjggMTAgMDAgMDAgMEMgQjAgMTMgMDAgMDAgMEMgMDAgIC4u
IC4uaC4uLi4uLi4uLi4KICAgIDc4RTA6IDAwIDAwIDAwIDBDIDAwIDAwIDAwIDAwIDBDIDAwIDAw
IDAwIDAwIDBDIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA3OEYwOiAwMCAwMCAxMiAyMCAw
NiAwQyA5OCAwOCAwMCAwMCAwQyAwNCAwNiAwMCAwMCAwQyAgLi4uIC4uLi4uLi4uLi4uLgogICAg
NzkwMDogMDAgMDAgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMEMgMDEgMDAgMDAgMDAgMEMgMDEgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDc5MTA6IDAwIDAwIDAwIDEyIDIwIDA2IDBDIERDIDA1IDAwIDAw
IDBDIENGIDAzIDAwIDAwICAuLi4uIC4uLi4uLi4uLi4uCiAgICA3OTIwOiAwQyAwMCAwMCAwMCAw
MCAwQyAwMCAwMCAwMCAwMCAwQyAwMiAwMCAwMCAwMCAwQyAgLi4uLi4uLi4uLi4uLi4uLgogICAg
NzkzMDogMDIgMDAgMDAgMDAgMDggNTggNTAgNTMgNTMgMTIgNEIgMEQgMDMgMTIgNDcgMDQgIC4u
Li4uWFBTUy5LLi4uRy4KICAgIDc5NDA6IDA4IDBDIDY4IDEwIDAwIDAwIDBDIEIwIDEzIDAwIDAw
IDBDIDAwIDAwIDAwIDAwICAuLmguLi4uLi4uLi4uLi4uCiAgICA3OTUwOiAwQyAwMCAwMCAwMCAw
MCAxMSAwQiAwQSAwOCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
Nzk2MDogMDAgMTEgMEIgMEEgMDggMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMTEgMEIgMEEgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDc5NzA6IDA4IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDExIDBC
IDBBIDA4IDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA3OTgwOiAwMCAwMCAwMCAwMCAw
MCAxMiA0NyAwNCAwOCAwQyA5OCAwOCAwMCAwMCAwQyAwNCAgLi4uLi4uRy4uLi4uLi4uLgogICAg
Nzk5MDogMDYgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMTEgMEIgMEEgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDc5QTA6IDA4IDAxIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDExIDBC
IDBBIDA4IDAxIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA3OUIwOiAwMCAwMCAwMCAwMCAw
MCAxMSAwQiAwQSAwOCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
NzlDMDogMDAgMTEgMEIgMEEgMDggMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMTIgNDcgMDQgIC4u
Li4uLi4uLi4uLi4uRy4KICAgIDc5RDA6IDA4IDBDIERDIDA1IDAwIDAwIDBDIENGIDAzIDAwIDAw
IDBDIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA3OUUwOiAwQyAwMCAwMCAwMCAw
MCAxMSAwQiAwQSAwOCAwMiAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
NzlGMDogMDAgMTEgMEIgMEEgMDggMDIgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMTEgMEIgMEEgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDdBMDA6IDA4IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDExIDBC
IDBBIDA4IDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA3QTEwOiAwMCAwMCAwMCAwMCAw
MCAwOCA1RiA1MCA1MyA0NCAxMiAxOCAwMSAxMiAxNSAwNSAgLi4uLi4uX1BTRC4uLi4uLgogICAg
N0EyMDogMEEgMDUgMEEgMDAgMEMgMTIgMDAgMDAgMDAgMEMgRkUgMDAgMDAgMDAgMEMgMDIgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDdBMzA6IDAwIDAwIDAwIDA4IDUwIDUwIDQzIDU2IDBBIDAwIDE0
IDBCIDVGIDUwIDUwIDQzICAuLi4uUFBDVi4uLi5fUFBDCiAgICA3QTQwOiAwMCBBNCA1MCA1MCA0
MyA1NiAwOCA1RiA0MyA1MCA0MyAxMiA0MCAxOSAxNyAwQSAgLi5QUENWLl9DUEMuQC4uLgogICAg
N0E1MDogMTcgMEEgMDMgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgMDggMTggMDQgQjAgMDIgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDdBNjA6IDAxIEMwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0IDBB
IDExIDgyIDBDIDAwIDdGICAuLi4uLi55Li4uLi4uLi4uCiAgICA3QTcwOiAwOCAxMCAwNCBCMCAw
MiAwMSBDMCAwMCAwMCAwMCAwMCA3OSAwMCAxMSAxNCAwQSAgLi4uLi4uLi4uLi55Li4uLgogICAg
N0E4MDogMTEgODIgMEMgMDAgN0YgMDggMDggMDQgQjAgMDIgMDEgQzAgMDAgMDAgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDdBOTA6IDc5IDAwIDExIDE0IDBBIDExIDgyIDBDIDAwIDdGIDA4
IDAwIDA0IEIwIDAyIDAxICB5Li4uLi4uLi4uLi4uLi4uCiAgICA3QUEwOiBDMCAwMCAwMCAwMCAw
MCA3OSAwMCAxMSAxNCAwQSAxMSA4MiAwQyAwMCAwMCAwMCAgLi4uLi55Li4uLi4uLi4uLgogICAg
N0FCMDogMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgIC4u
Li4uLi4uLi55Li4uLi4KICAgIDdBQzA6IDgyIDBDIDAwIDdGIDA4IDEwIDA0IEIzIDAyIDAxIEMw
IDAwIDAwIDAwIDAwIDc5ICAuLi4uLi4uLi4uLi4uLi55CiAgICA3QUQwOiAwMCAxMSAxNCAwQSAx
MSA4MiAwQyAwMCA3RiAwOCAwOCAwNCBCMyAwMiAwMSBDMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
N0FFMDogMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgMDggMDAgIC4u
Li55Li4uLi4uLi4uLi4KICAgIDdBRjA6IDA0IEIzIDAyIDAxIEMwIDAwIDAwIDAwIDAwIDc5IDAw
IDExIDE0IDBBIDExIDgyICAuLi4uLi4uLi55Li4uLi4uCiAgICA3QjAwOiAwQyAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCA3OSAwMCAgLi4uLi4uLi4uLi4uLi55LgogICAg
N0IxMDogMTEgMTQgMEEgMTEgODIgMEMgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDdCMjA6IDAwIDAwIDAwIDc5IDAwIDExIDE0IDBBIDExIDgyIDBD
IDAwIDAwIDAwIDAwIDAwICAuLi55Li4uLi4uLi4uLi4uCiAgICA3QjMwOiAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCA3OSAwMCAxMSAxNCAwQSAxMSA4MiAwQyAgLi4uLi4uLi55Li4uLi4uLgogICAg
N0I0MDogMDAgN0YgNDAgMDAgMDQgRTcgMDAgMDAgMDAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgIC4u
QC4uLi4uLi4uLi55Li4KICAgIDdCNTA6IDE0IDBBIDExIDgyIDBDIDAwIDdGIDQwIDAwIDA0IEU4
IDAwIDAwIDAwIDAwIDAwICAuLi4uLi4uQC4uLi4uLi4uCiAgICA3QjYwOiAwMCAwMCA3OSAwMCAx
MSAxNCAwQSAxMSA4MiAwQyAwMCA3RiAwMiAwMCAwNCBCNCAgLi55Li4uLi4uLi4uLi4uLgogICAg
N0I3MDogMDIgMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgIC4u
Li4uLi55Li4uLi4uLi4KICAgIDdCODA6IDdGIDAxIDAwIDA0IEIxIDAyIDAxIEMwIDAwIDAwIDAw
IDAwIDc5IDAwIDBDIDAxICAuLi4uLi4uLi4uLi55Li4uCiAgICA3QjkwOiAwMCAwMCAwMCAxMSAx
NCAwQSAxMSA4MiAwQyAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
N0JBMDogMDAgMDAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgIC4u
Li4uLnkuLi4uLi4uLi4KICAgIDdCQjA6IDA4IDE4IDA0IEIzIDAyIDAxIEMwIDAwIDAwIDAwIDAw
IDc5IDAwIDExIDE0IDBBICAuLi4uLi4uLi4uLnkuLi4uCiAgICA3QkMwOiAxMSA4MiAwQyAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
N0JEMDogNzkgMDAgMEMgMjEgMDIgMDAgMDAgMEMgNjkgMTAgMDAgMDAgMTAgNDcgMzUgNUMgIHku
LiEuLi4uaS4uLi5HNVwKICAgIDdCRTA6IDJGIDAzIDVGIDUzIDQyIDVGIDUwIDRDIDU0IDQ2IDQz
IDMwIDMyIDM1IDA4IDVGICAvLl9TQl9QTFRGQzAyNS5fCiAgICA3QkYwOiA1MCA0MyA1NCAxMiAy
QyAwMiAxMSAxNCAwQSAxMSA4MiAwQyAwMCA3RiA0MCAwMCAgUENULiwuLi4uLi4uLi5ALgogICAg
N0MwMDogMDAgNjIgMDAgMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgIC5i
Li4uLi4uLnkuLi4uLi4KICAgIDdDMTA6IDBDIDAwIDdGIDQwIDAwIDAwIDYzIDAwIDAxIEMwIDAw
IDAwIDAwIDAwIDc5IDAwICAuLi5ALi5jLi4uLi4uLnkuCiAgICA3QzIwOiAwOCA1RiA1MCA1MyA1
MyAxMiA0NiAwNiAwMyAxMiAyMCAwNiAwQyA2OCAxMCAwMCAgLl9QU1MuRi4uLiAuLmguLgogICAg
N0MzMDogMDAgMEMgQjAgMTMgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMEMgMDAgMDAgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDdDNDA6IDBDIDAwIDAwIDAwIDAwIDBDIDAwIDAwIDAwIDAwIDEy
IDIwIDA2IDBDIDk4IDA4ICAuLi4uLi4uLi4uLiAuLi4uCiAgICA3QzUwOiAwMCAwMCAwQyAwNCAw
NiAwMCAwMCAwQyAwMCAwMCAwMCAwMCAwQyAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
N0M2MDogMDAgMEMgMDEgMDAgMDAgMDAgMEMgMDEgMDAgMDAgMDAgMTIgMjAgMDYgMEMgREMgIC4u
Li4uLi4uLi4uLiAuLi4KICAgIDdDNzA6IDA1IDAwIDAwIDBDIENGIDAzIDAwIDAwIDBDIDAwIDAw
IDAwIDAwIDBDIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA3QzgwOiAwMCAwMCAwQyAwMiAw
MCAwMCAwMCAwQyAwMiAwMCAwMCAwMCAwOCA1OCA1MCA1MyAgLi4uLi4uLi4uLi4uLlhQUwogICAg
N0M5MDogNTMgMTIgNEIgMEQgMDMgMTIgNDcgMDQgMDggMEMgNjggMTAgMDAgMDAgMEMgQjAgIFMu
Sy4uLkcuLi5oLi4uLi4KICAgIDdDQTA6IDEzIDAwIDAwIDBDIDAwIDAwIDAwIDAwIDBDIDAwIDAw
IDAwIDAwIDExIDBCIDBBICAuLi4uLi4uLi4uLi4uLi4uCiAgICA3Q0IwOiAwOCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAxMSAwQiAwQSAwOCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
N0NDMDogMDAgMDAgMDAgMDAgMDAgMTEgMEIgMEEgMDggMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDdDRDA6IDAwIDExIDBCIDBBIDA4IDAwIDAwIDAwIDAwIDAwIDAw
IDAwIDAwIDEyIDQ3IDA0ICAuLi4uLi4uLi4uLi4uLkcuCiAgICA3Q0UwOiAwOCAwQyA5OCAwOCAw
MCAwMCAwQyAwNCAwNiAwMCAwMCAwQyAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
N0NGMDogMEMgMDAgMDAgMDAgMDAgMTEgMEIgMEEgMDggMDEgMDAgMDAgMDAgMDAgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDdEMDA6IDAwIDExIDBCIDBBIDA4IDAxIDAwIDAwIDAwIDAwIDAw
IDAwIDAwIDExIDBCIDBBICAuLi4uLi4uLi4uLi4uLi4uCiAgICA3RDEwOiAwOCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAxMSAwQiAwQSAwOCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
N0QyMDogMDAgMDAgMDAgMDAgMDAgMTIgNDcgMDQgMDggMEMgREMgMDUgMDAgMDAgMEMgQ0YgIC4u
Li4uLkcuLi4uLi4uLi4KICAgIDdEMzA6IDAzIDAwIDAwIDBDIDAwIDAwIDAwIDAwIDBDIDAwIDAw
IDAwIDAwIDExIDBCIDBBICAuLi4uLi4uLi4uLi4uLi4uCiAgICA3RDQwOiAwOCAwMiAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAxMSAwQiAwQSAwOCAwMiAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
N0Q1MDogMDAgMDAgMDAgMDAgMDAgMTEgMEIgMEEgMDggMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDdENjA6IDAwIDExIDBCIDBBIDA4IDAwIDAwIDAwIDAwIDAwIDAw
IDAwIDAwIDA4IDVGIDUwICAuLi4uLi4uLi4uLi4uLl9QCiAgICA3RDcwOiA1MyA0NCAxMiAxOCAw
MSAxMiAxNSAwNSAwQSAwNSAwQSAwMCAwQyAxMiAwMCAwMCAgU0QuLi4uLi4uLi4uLi4uLgogICAg
N0Q4MDogMDAgMEMgRkUgMDAgMDAgMDAgMEMgMDIgMDAgMDAgMDAgMDggNTAgNTAgNDMgNTYgIC4u
Li4uLi4uLi4uLlBQQ1YKICAgIDdEOTA6IDBBIDAwIDE0IDBCIDVGIDUwIDUwIDQzIDAwIEE0IDUw
IDUwIDQzIDU2IDA4IDVGICAuLi4uX1BQQy4uUFBDVi5fCiAgICA3REEwOiA0MyA1MCA0MyAxMiA0
MCAxOSAxNyAwQSAxNyAwQSAwMyAxMSAxNCAwQSAxMSA4MiAgQ1BDLkAuLi4uLi4uLi4uLgogICAg
N0RCMDogMEMgMDAgN0YgMDggMTggMDQgQjAgMDIgMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgIC4u
Li4uLi4uLi4uLi4ueS4KICAgIDdEQzA6IDExIDE0IDBBIDExIDgyIDBDIDAwIDdGIDA4IDEwIDA0
IEIwIDAyIDAxIEMwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA3REQwOiAwMCAwMCAwMCA3OSAw
MCAxMSAxNCAwQSAxMSA4MiAwQyAwMCA3RiAwOCAwOCAwNCAgLi4ueS4uLi4uLi4uLi4uLgogICAg
N0RFMDogQjAgMDIgMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgIC4u
Li4uLi4ueS4uLi4uLi4KICAgIDdERjA6IDAwIDdGIDA4IDAwIDA0IEIwIDAyIDAxIEMwIDAwIDAw
IDAwIDAwIDc5IDAwIDExICAuLi4uLi4uLi4uLi4ueS4uCiAgICA3RTAwOiAxNCAwQSAxMSA4MiAw
QyAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
N0UxMDogMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgMDggMTAgMDQgQjMgIC4u
eS4uLi4uLi4uLi4uLi4KICAgIDdFMjA6IDAyIDAxIEMwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0
IDBBIDExIDgyIDBDIDAwICAuLi4uLi4ueS4uLi4uLi4uCiAgICA3RTMwOiA3RiAwOCAwOCAwNCBC
MyAwMiAwMSBDMCAwMCAwMCAwMCAwMCA3OSAwMCAxMSAxNCAgLi4uLi4uLi4uLi4ueS4uLgogICAg
N0U0MDogMEEgMTEgODIgMEMgMDAgN0YgMDggMDAgMDQgQjMgMDIgMDEgQzAgMDAgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDdFNTA6IDAwIDc5IDAwIDExIDE0IDBBIDExIDgyIDBDIDAwIDAw
IDAwIDAwIDAwIDAwIDAwICAueS4uLi4uLi4uLi4uLi4uCiAgICA3RTYwOiAwMCAwMCAwMCAwMCAw
MCAwMCA3OSAwMCAxMSAxNCAwQSAxMSA4MiAwQyAwMCAwMCAgLi4uLi4ueS4uLi4uLi4uLgogICAg
N0U3MDogMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgIC4u
Li4uLi4uLi4ueS4uLi4KICAgIDdFODA6IDExIDgyIDBDIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAw
IDAwIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA3RTkwOiA3OSAwMCAxMSAxNCAw
QSAxMSA4MiAwQyAwMCA3RiA0MCAwMCAwNCBFNyAwMCAwMCAgeS4uLi4uLi4uLkAuLi4uLgogICAg
N0VBMDogMDAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgNDAgIC4u
Li4ueS4uLi4uLi4uLkAKICAgIDdFQjA6IDAwIDA0IEU4IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDc5
IDAwIDExIDE0IDBBIDExICAuLi4uLi4uLi4ueS4uLi4uCiAgICA3RUMwOiA4MiAwQyAwMCA3RiAw
MiAwMCAwNCBCNCAwMiAwMSBDMCAwMCAwMCAwMCAwMCA3OSAgLi4uLi4uLi4uLi4uLi4ueQogICAg
N0VEMDogMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgMDEgMDAgMDQgQjEgMDIgMDEgQzAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDdFRTA6IDAwIDAwIDAwIDAwIDc5IDAwIDBDIDAxIDAwIDAwIDAw
IDExIDE0IDBBIDExIDgyICAuLi4ueS4uLi4uLi4uLi4uCiAgICA3RUYwOiAwQyAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCA3OSAwMCAgLi4uLi4uLi4uLi4uLi55LgogICAg
N0YwMDogMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgMDggMTggMDQgQjMgMDIgMDEgQzAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDdGMTA6IDAwIDAwIDAwIDc5IDAwIDExIDE0IDBBIDExIDgyIDBD
IDAwIDAwIDAwIDAwIDAwICAuLi55Li4uLi4uLi4uLi4uCiAgICA3RjIwOiAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCA3OSAwMCAwQyAyMSAwMiAwMCAwMCAwQyAgLi4uLi4uLi55Li4hLi4uLgogICAg
N0YzMDogNjkgMTAgMDAgMDAgMTAgNDcgMzUgNUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAgNEMgIGku
Li4uRzVcLy5fU0JfUEwKICAgIDdGNDA6IDU0IDQ2IDQzIDMwIDMyIDM2IDA4IDVGIDUwIDQzIDU0
IDEyIDJDIDAyIDExIDE0ICBURkMwMjYuX1BDVC4sLi4uCiAgICA3RjUwOiAwQSAxMSA4MiAwQyAw
MCA3RiA0MCAwMCAwMCA2MiAwMCAwMSBDMCAwMCAwMCAwMCAgLi4uLi4uQC4uYi4uLi4uLgogICAg
N0Y2MDogMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgNDAgMDAgMDAgNjMgMDAgIC55
Li4uLi4uLi4uQC4uYy4KICAgIDdGNzA6IDAxIEMwIDAwIDAwIDAwIDAwIDc5IDAwIDA4IDVGIDUw
IDUzIDUzIDEyIDQ2IDA2ICAuLi4uLi55Li5fUFNTLkYuCiAgICA3RjgwOiAwMyAxMiAyMCAwNiAw
QyA2OCAxMCAwMCAwMCAwQyBCMCAxMyAwMCAwMCAwQyAwMCAgLi4gLi5oLi4uLi4uLi4uLgogICAg
N0Y5MDogMDAgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMEMgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDdGQTA6IDAwIDAwIDEyIDIwIDA2IDBDIDk4IDA4IDAwIDAwIDBD
IDA0IDA2IDAwIDAwIDBDICAuLi4gLi4uLi4uLi4uLi4uCiAgICA3RkIwOiAwMCAwMCAwMCAwMCAw
QyAwMCAwMCAwMCAwMCAwQyAwMSAwMCAwMCAwMCAwQyAwMSAgLi4uLi4uLi4uLi4uLi4uLgogICAg
N0ZDMDogMDAgMDAgMDAgMTIgMjAgMDYgMEMgREMgMDUgMDAgMDAgMEMgQ0YgMDMgMDAgMDAgIC4u
Li4gLi4uLi4uLi4uLi4KICAgIDdGRDA6IDBDIDAwIDAwIDAwIDAwIDBDIDAwIDAwIDAwIDAwIDBD
IDAyIDAwIDAwIDAwIDBDICAuLi4uLi4uLi4uLi4uLi4uCiAgICA3RkUwOiAwMiAwMCAwMCAwMCAw
OCA1OCA1MCA1MyA1MyAxMiA0QiAwRCAwMyAxMiA0NyAwNCAgLi4uLi5YUFNTLksuLi5HLgogICAg
N0ZGMDogMDggMEMgNjggMTAgMDAgMDAgMEMgQjAgMTMgMDAgMDAgMEMgMDAgMDAgMDAgMDAgIC4u
aC4uLi4uLi4uLi4uLi4KICAgIDgwMDA6IDBDIDAwIDAwIDAwIDAwIDExIDBCIDBBIDA4IDAwIDAw
IDAwIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA4MDEwOiAwMCAxMSAwQiAwQSAw
OCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAxMSAwQiAwQSAgLi4uLi4uLi4uLi4uLi4uLgogICAg
ODAyMDogMDggMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMTEgMEIgMEEgMDggMDAgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDgwMzA6IDAwIDAwIDAwIDAwIDAwIDEyIDQ3IDA0IDA4IDBDIDk4
IDA4IDAwIDAwIDBDIDA0ICAuLi4uLi5HLi4uLi4uLi4uCiAgICA4MDQwOiAwNiAwMCAwMCAwQyAw
MCAwMCAwMCAwMCAwQyAwMCAwMCAwMCAwMCAxMSAwQiAwQSAgLi4uLi4uLi4uLi4uLi4uLgogICAg
ODA1MDogMDggMDEgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMTEgMEIgMEEgMDggMDEgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDgwNjA6IDAwIDAwIDAwIDAwIDAwIDExIDBCIDBBIDA4IDAwIDAw
IDAwIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA4MDcwOiAwMCAxMSAwQiAwQSAw
OCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAxMiA0NyAwNCAgLi4uLi4uLi4uLi4uLi5HLgogICAg
ODA4MDogMDggMEMgREMgMDUgMDAgMDAgMEMgQ0YgMDMgMDAgMDAgMEMgMDAgMDAgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDgwOTA6IDBDIDAwIDAwIDAwIDAwIDExIDBCIDBBIDA4IDAyIDAw
IDAwIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA4MEEwOiAwMCAxMSAwQiAwQSAw
OCAwMiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAxMSAwQiAwQSAgLi4uLi4uLi4uLi4uLi4uLgogICAg
ODBCMDogMDggMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMTEgMEIgMEEgMDggMDAgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDgwQzA6IDAwIDAwIDAwIDAwIDAwIDA4IDVGIDUwIDUzIDQ0IDEy
IDE4IDAxIDEyIDE1IDA1ICAuLi4uLi5fUFNELi4uLi4uCiAgICA4MEQwOiAwQSAwNSAwQSAwMCAw
QyAxMyAwMCAwMCAwMCAwQyBGRSAwMCAwMCAwMCAwQyAwMiAgLi4uLi4uLi4uLi4uLi4uLgogICAg
ODBFMDogMDAgMDAgMDAgMDggNTAgNTAgNDMgNTYgMEEgMDAgMTQgMEIgNUYgNTAgNTAgNDMgIC4u
Li5QUENWLi4uLl9QUEMKICAgIDgwRjA6IDAwIEE0IDUwIDUwIDQzIDU2IDA4IDVGIDQzIDUwIDQz
IDEyIDQwIDE5IDE3IDBBICAuLlBQQ1YuX0NQQy5ALi4uCiAgICA4MTAwOiAxNyAwQSAwMyAxMSAx
NCAwQSAxMSA4MiAwQyAwMCA3RiAwOCAxOCAwNCBCMCAwMiAgLi4uLi4uLi4uLi4uLi4uLgogICAg
ODExMDogMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgIC4u
Li4uLnkuLi4uLi4uLi4KICAgIDgxMjA6IDA4IDEwIDA0IEIwIDAyIDAxIEMwIDAwIDAwIDAwIDAw
IDc5IDAwIDExIDE0IDBBICAuLi4uLi4uLi4uLnkuLi4uCiAgICA4MTMwOiAxMSA4MiAwQyAwMCA3
RiAwOCAwOCAwNCBCMCAwMiAwMSBDMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
ODE0MDogNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgMDggMDAgMDQgQjAgMDIgMDEgIHku
Li4uLi4uLi4uLi4uLi4KICAgIDgxNTA6IEMwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0IDBBIDEx
IDgyIDBDIDAwIDAwIDAwICAuLi4uLnkuLi4uLi4uLi4uCiAgICA4MTYwOiAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCA3OSAwMCAxMSAxNCAwQSAxMSAgLi4uLi4uLi4uLnkuLi4uLgogICAg
ODE3MDogODIgMEMgMDAgN0YgMDggMTAgMDQgQjMgMDIgMDEgQzAgMDAgMDAgMDAgMDAgNzkgIC4u
Li4uLi4uLi4uLi4uLnkKICAgIDgxODA6IDAwIDExIDE0IDBBIDExIDgyIDBDIDAwIDdGIDA4IDA4
IDA0IEIzIDAyIDAxIEMwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA4MTkwOiAwMCAwMCAwMCAwMCA3
OSAwMCAxMSAxNCAwQSAxMSA4MiAwQyAwMCA3RiAwOCAwMCAgLi4uLnkuLi4uLi4uLi4uLgogICAg
ODFBMDogMDQgQjMgMDIgMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgIC4u
Li4uLi4uLnkuLi4uLi4KICAgIDgxQjA6IDBDIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAw
IDAwIDAwIDAwIDc5IDAwICAuLi4uLi4uLi4uLi4uLnkuCiAgICA4MUMwOiAxMSAxNCAwQSAxMSA4
MiAwQyAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
ODFEMDogMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgMDAgMDAgMDAgMDAgIC4u
LnkuLi4uLi4uLi4uLi4KICAgIDgxRTA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDc5IDAwIDEx
IDE0IDBBIDExIDgyIDBDICAuLi4uLi4uLnkuLi4uLi4uCiAgICA4MUYwOiAwMCA3RiA0MCAwMCAw
NCBFNyAwMCAwMCAwMCAwMCAwMCAwMCAwMCA3OSAwMCAxMSAgLi5ALi4uLi4uLi4uLnkuLgogICAg
ODIwMDogMTQgMEEgMTEgODIgMEMgMDAgN0YgNDAgMDAgMDQgRTggMDAgMDAgMDAgMDAgMDAgIC4u
Li4uLi5ALi4uLi4uLi4KICAgIDgyMTA6IDAwIDAwIDc5IDAwIDExIDE0IDBBIDExIDgyIDBDIDAw
IDdGIDAyIDAwIDA0IEI0ICAuLnkuLi4uLi4uLi4uLi4uCiAgICA4MjIwOiAwMiAwMSBDMCAwMCAw
MCAwMCAwMCA3OSAwMCAxMSAxNCAwQSAxMSA4MiAwQyAwMCAgLi4uLi4uLnkuLi4uLi4uLgogICAg
ODIzMDogN0YgMDEgMDAgMDQgQjEgMDIgMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgMEMgMDEgIC4u
Li4uLi4uLi4uLnkuLi4KICAgIDgyNDA6IDAwIDAwIDAwIDExIDE0IDBBIDExIDgyIDBDIDAwIDAw
IDAwIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA4MjUwOiAwMCAwMCAwMCAwMCAw
MCAwMCA3OSAwMCAxMSAxNCAwQSAxMSA4MiAwQyAwMCA3RiAgLi4uLi4ueS4uLi4uLi4uLgogICAg
ODI2MDogMDggMTggMDQgQjMgMDIgMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgIC4u
Li4uLi4uLi4ueS4uLi4KICAgIDgyNzA6IDExIDgyIDBDIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAw
IDAwIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA4MjgwOiA3OSAwMCAwQyAyMSAw
MiAwMCAwMCAwQyA2OSAxMCAwMCAwMCAxMCA0NyAzNSA1QyAgeS4uIS4uLi5pLi4uLkc1XAogICAg
ODI5MDogMkYgMDMgNUYgNTMgNDIgNUYgNTAgNEMgNTQgNDYgNDMgMzAgMzIgMzcgMDggNUYgIC8u
X1NCX1BMVEZDMDI3Ll8KICAgIDgyQTA6IDUwIDQzIDU0IDEyIDJDIDAyIDExIDE0IDBBIDExIDgy
IDBDIDAwIDdGIDQwIDAwICBQQ1QuLC4uLi4uLi4uLkAuCiAgICA4MkIwOiAwMCA2MiAwMCAwMSBD
MCAwMCAwMCAwMCAwMCA3OSAwMCAxMSAxNCAwQSAxMSA4MiAgLmIuLi4uLi4ueS4uLi4uLgogICAg
ODJDMDogMEMgMDAgN0YgNDAgMDAgMDAgNjMgMDAgMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgIC4u
LkAuLmMuLi4uLi4ueS4KICAgIDgyRDA6IDA4IDVGIDUwIDUzIDUzIDEyIDQ2IDA2IDAzIDEyIDIw
IDA2IDBDIDY4IDEwIDAwICAuX1BTUy5GLi4uIC4uaC4uCiAgICA4MkUwOiAwMCAwQyBCMCAxMyAw
MCAwMCAwQyAwMCAwMCAwMCAwMCAwQyAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
ODJGMDogMEMgMDAgMDAgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMTIgMjAgMDYgMEMgOTggMDggIC4u
Li4uLi4uLi4uIC4uLi4KICAgIDgzMDA6IDAwIDAwIDBDIDA0IDA2IDAwIDAwIDBDIDAwIDAwIDAw
IDAwIDBDIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA4MzEwOiAwMCAwQyAwMSAwMCAw
MCAwMCAwQyAwMSAwMCAwMCAwMCAxMiAyMCAwNiAwQyBEQyAgLi4uLi4uLi4uLi4uIC4uLgogICAg
ODMyMDogMDUgMDAgMDAgMEMgQ0YgMDMgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMEMgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDgzMzA6IDAwIDAwIDBDIDAyIDAwIDAwIDAwIDBDIDAyIDAwIDAw
IDAwIDA4IDU4IDUwIDUzICAuLi4uLi4uLi4uLi4uWFBTCiAgICA4MzQwOiA1MyAxMiA0QiAwRCAw
MyAxMiA0NyAwNCAwOCAwQyA2OCAxMCAwMCAwMCAwQyBCMCAgUy5LLi4uRy4uLmguLi4uLgogICAg
ODM1MDogMTMgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMTEgMEIgMEEgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDgzNjA6IDA4IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDExIDBC
IDBBIDA4IDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA4MzcwOiAwMCAwMCAwMCAwMCAw
MCAxMSAwQiAwQSAwOCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
ODM4MDogMDAgMTEgMEIgMEEgMDggMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMTIgNDcgMDQgIC4u
Li4uLi4uLi4uLi4uRy4KICAgIDgzOTA6IDA4IDBDIDk4IDA4IDAwIDAwIDBDIDA0IDA2IDAwIDAw
IDBDIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA4M0EwOiAwQyAwMCAwMCAwMCAw
MCAxMSAwQiAwQSAwOCAwMSAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
ODNCMDogMDAgMTEgMEIgMEEgMDggMDEgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMTEgMEIgMEEgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDgzQzA6IDA4IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDExIDBC
IDBBIDA4IDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA4M0QwOiAwMCAwMCAwMCAwMCAw
MCAxMiA0NyAwNCAwOCAwQyBEQyAwNSAwMCAwMCAwQyBDRiAgLi4uLi4uRy4uLi4uLi4uLgogICAg
ODNFMDogMDMgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMTEgMEIgMEEgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDgzRjA6IDA4IDAyIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDExIDBC
IDBBIDA4IDAyIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA4NDAwOiAwMCAwMCAwMCAwMCAw
MCAxMSAwQiAwQSAwOCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
ODQxMDogMDAgMTEgMEIgMEEgMDggMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDggNUYgNTAgIC4u
Li4uLi4uLi4uLi4uX1AKICAgIDg0MjA6IDUzIDQ0IDEyIDE4IDAxIDEyIDE1IDA1IDBBIDA1IDBB
IDAwIDBDIDEzIDAwIDAwICBTRC4uLi4uLi4uLi4uLi4uCiAgICA4NDMwOiAwMCAwQyBGRSAwMCAw
MCAwMCAwQyAwMiAwMCAwMCAwMCAwOCA1MCA1MCA0MyA1NiAgLi4uLi4uLi4uLi4uUFBDVgogICAg
ODQ0MDogMEEgMDAgMTQgMEIgNUYgNTAgNTAgNDMgMDAgQTQgNTAgNTAgNDMgNTYgMDggNUYgIC4u
Li5fUFBDLi5QUENWLl8KICAgIDg0NTA6IDQzIDUwIDQzIDEyIDQwIDE5IDE3IDBBIDE3IDBBIDAz
IDExIDE0IDBBIDExIDgyICBDUEMuQC4uLi4uLi4uLi4uCiAgICA4NDYwOiAwQyAwMCA3RiAwOCAx
OCAwNCBCMCAwMiAwMSBDMCAwMCAwMCAwMCAwMCA3OSAwMCAgLi4uLi4uLi4uLi4uLi55LgogICAg
ODQ3MDogMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgMDggMTAgMDQgQjAgMDIgMDEgQzAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDg0ODA6IDAwIDAwIDAwIDc5IDAwIDExIDE0IDBBIDExIDgyIDBD
IDAwIDdGIDA4IDA4IDA0ICAuLi55Li4uLi4uLi4uLi4uCiAgICA4NDkwOiBCMCAwMiAwMSBDMCAw
MCAwMCAwMCAwMCA3OSAwMCAxMSAxNCAwQSAxMSA4MiAwQyAgLi4uLi4uLi55Li4uLi4uLgogICAg
ODRBMDogMDAgN0YgMDggMDAgMDQgQjAgMDIgMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgIC4u
Li4uLi4uLi4uLi55Li4KICAgIDg0QjA6IDE0IDBBIDExIDgyIDBDIDAwIDAwIDAwIDAwIDAwIDAw
IDAwIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA4NEMwOiAwMCAwMCA3OSAwMCAx
MSAxNCAwQSAxMSA4MiAwQyAwMCA3RiAwOCAxMCAwNCBCMyAgLi55Li4uLi4uLi4uLi4uLgogICAg
ODREMDogMDIgMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgIC4u
Li4uLi55Li4uLi4uLi4KICAgIDg0RTA6IDdGIDA4IDA4IDA0IEIzIDAyIDAxIEMwIDAwIDAwIDAw
IDAwIDc5IDAwIDExIDE0ICAuLi4uLi4uLi4uLi55Li4uCiAgICA4NEYwOiAwQSAxMSA4MiAwQyAw
MCA3RiAwOCAwMCAwNCBCMyAwMiAwMSBDMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
ODUwMDogMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC55
Li4uLi4uLi4uLi4uLi4KICAgIDg1MTA6IDAwIDAwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0IDBB
IDExIDgyIDBDIDAwIDAwICAuLi4uLi55Li4uLi4uLi4uCiAgICA4NTIwOiAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAwMCA3OSAwMCAxMSAxNCAwQSAgLi4uLi4uLi4uLi55Li4uLgogICAg
ODUzMDogMTEgODIgMEMgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDg1NDA6IDc5IDAwIDExIDE0IDBBIDExIDgyIDBDIDAwIDdGIDQw
IDAwIDA0IEU3IDAwIDAwICB5Li4uLi4uLi4uQC4uLi4uCiAgICA4NTUwOiAwMCAwMCAwMCAwMCAw
MCA3OSAwMCAxMSAxNCAwQSAxMSA4MiAwQyAwMCA3RiA0MCAgLi4uLi55Li4uLi4uLi4uQAogICAg
ODU2MDogMDAgMDQgRTggMDAgMDAgMDAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgIC4u
Li4uLi4uLi55Li4uLi4KICAgIDg1NzA6IDgyIDBDIDAwIDdGIDAyIDAwIDA0IEI0IDAyIDAxIEMw
IDAwIDAwIDAwIDAwIDc5ICAuLi4uLi4uLi4uLi4uLi55CiAgICA4NTgwOiAwMCAxMSAxNCAwQSAx
MSA4MiAwQyAwMCA3RiAwMSAwMCAwNCBCMSAwMiAwMSBDMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
ODU5MDogMDAgMDAgMDAgMDAgNzkgMDAgMEMgMDEgMDAgMDAgMDAgMTEgMTQgMEEgMTEgODIgIC4u
Li55Li4uLi4uLi4uLi4KICAgIDg1QTA6IDBDIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAw
IDAwIDAwIDAwIDc5IDAwICAuLi4uLi4uLi4uLi4uLnkuCiAgICA4NUIwOiAxMSAxNCAwQSAxMSA4
MiAwQyAwMCA3RiAwOCAxOCAwNCBCMyAwMiAwMSBDMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
ODVDMDogMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgMDAgMDAgMDAgMDAgIC4u
LnkuLi4uLi4uLi4uLi4KICAgIDg1RDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDc5IDAwIDBD
IDIxIDAyIDAwIDAwIDBDICAuLi4uLi4uLnkuLiEuLi4uCiAgICA4NUUwOiA2OSAxMCAwMCAwMCAx
MCA0NyAzNSA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0QyAgaS4uLi5HNVwvLl9TQl9QTAogICAg
ODVGMDogNTQgNDYgNDMgMzAgMzIgMzggMDggNUYgNTAgNDMgNTQgMTIgMkMgMDIgMTEgMTQgIFRG
QzAyOC5fUENULiwuLi4KICAgIDg2MDA6IDBBIDExIDgyIDBDIDAwIDdGIDQwIDAwIDAwIDYyIDAw
IDAxIEMwIDAwIDAwIDAwICAuLi4uLi5ALi5iLi4uLi4uCiAgICA4NjEwOiAwMCA3OSAwMCAxMSAx
NCAwQSAxMSA4MiAwQyAwMCA3RiA0MCAwMCAwMCA2MyAwMCAgLnkuLi4uLi4uLi5ALi5jLgogICAg
ODYyMDogMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgMDggNUYgNTAgNTMgNTMgMTIgNDYgMDYgIC4u
Li4uLnkuLl9QU1MuRi4KICAgIDg2MzA6IDAzIDEyIDIwIDA2IDBDIDY4IDEwIDAwIDAwIDBDIEIw
IDEzIDAwIDAwIDBDIDAwICAuLiAuLmguLi4uLi4uLi4uCiAgICA4NjQwOiAwMCAwMCAwMCAwQyAw
MCAwMCAwMCAwMCAwQyAwMCAwMCAwMCAwMCAwQyAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
ODY1MDogMDAgMDAgMTIgMjAgMDYgMEMgOTggMDggMDAgMDAgMEMgMDQgMDYgMDAgMDAgMEMgIC4u
LiAuLi4uLi4uLi4uLi4KICAgIDg2NjA6IDAwIDAwIDAwIDAwIDBDIDAwIDAwIDAwIDAwIDBDIDAx
IDAwIDAwIDAwIDBDIDAxICAuLi4uLi4uLi4uLi4uLi4uCiAgICA4NjcwOiAwMCAwMCAwMCAxMiAy
MCAwNiAwQyBEQyAwNSAwMCAwMCAwQyBDRiAwMyAwMCAwMCAgLi4uLiAuLi4uLi4uLi4uLgogICAg
ODY4MDogMEMgMDAgMDAgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMEMgMDIgMDAgMDAgMDAgMEMgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDg2OTA6IDAyIDAwIDAwIDAwIDA4IDU4IDUwIDUzIDUzIDEyIDRC
IDBEIDAzIDEyIDQ3IDA0ICAuLi4uLlhQU1MuSy4uLkcuCiAgICA4NkEwOiAwOCAwQyA2OCAxMCAw
MCAwMCAwQyBCMCAxMyAwMCAwMCAwQyAwMCAwMCAwMCAwMCAgLi5oLi4uLi4uLi4uLi4uLgogICAg
ODZCMDogMEMgMDAgMDAgMDAgMDAgMTEgMEIgMEEgMDggMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDg2QzA6IDAwIDExIDBCIDBBIDA4IDAwIDAwIDAwIDAwIDAwIDAw
IDAwIDAwIDExIDBCIDBBICAuLi4uLi4uLi4uLi4uLi4uCiAgICA4NkQwOiAwOCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAxMSAwQiAwQSAwOCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
ODZFMDogMDAgMDAgMDAgMDAgMDAgMTIgNDcgMDQgMDggMEMgOTggMDggMDAgMDAgMEMgMDQgIC4u
Li4uLkcuLi4uLi4uLi4KICAgIDg2RjA6IDA2IDAwIDAwIDBDIDAwIDAwIDAwIDAwIDBDIDAwIDAw
IDAwIDAwIDExIDBCIDBBICAuLi4uLi4uLi4uLi4uLi4uCiAgICA4NzAwOiAwOCAwMSAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAxMSAwQiAwQSAwOCAwMSAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
ODcxMDogMDAgMDAgMDAgMDAgMDAgMTEgMEIgMEEgMDggMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDg3MjA6IDAwIDExIDBCIDBBIDA4IDAwIDAwIDAwIDAwIDAwIDAw
IDAwIDAwIDEyIDQ3IDA0ICAuLi4uLi4uLi4uLi4uLkcuCiAgICA4NzMwOiAwOCAwQyBEQyAwNSAw
MCAwMCAwQyBDRiAwMyAwMCAwMCAwQyAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
ODc0MDogMEMgMDAgMDAgMDAgMDAgMTEgMEIgMEEgMDggMDIgMDAgMDAgMDAgMDAgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDg3NTA6IDAwIDExIDBCIDBBIDA4IDAyIDAwIDAwIDAwIDAwIDAw
IDAwIDAwIDExIDBCIDBBICAuLi4uLi4uLi4uLi4uLi4uCiAgICA4NzYwOiAwOCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAxMSAwQiAwQSAwOCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
ODc3MDogMDAgMDAgMDAgMDAgMDAgMDggNUYgNTAgNTMgNDQgMTIgMTggMDEgMTIgMTUgMDUgIC4u
Li4uLl9QU0QuLi4uLi4KICAgIDg3ODA6IDBBIDA1IDBBIDAwIDBDIDE0IDAwIDAwIDAwIDBDIEZF
IDAwIDAwIDAwIDBDIDAyICAuLi4uLi4uLi4uLi4uLi4uCiAgICA4NzkwOiAwMCAwMCAwMCAwOCA1
MCA1MCA0MyA1NiAwQSAwMCAxNCAwQiA1RiA1MCA1MCA0MyAgLi4uLlBQQ1YuLi4uX1BQQwogICAg
ODdBMDogMDAgQTQgNTAgNTAgNDMgNTYgMDggNUYgNDMgNTAgNDMgMTIgNDAgMTkgMTcgMEEgIC4u
UFBDVi5fQ1BDLkAuLi4KICAgIDg3QjA6IDE3IDBBIDAzIDExIDE0IDBBIDExIDgyIDBDIDAwIDdG
IDA4IDE4IDA0IEIwIDAyICAuLi4uLi4uLi4uLi4uLi4uCiAgICA4N0MwOiAwMSBDMCAwMCAwMCAw
MCAwMCA3OSAwMCAxMSAxNCAwQSAxMSA4MiAwQyAwMCA3RiAgLi4uLi4ueS4uLi4uLi4uLgogICAg
ODdEMDogMDggMTAgMDQgQjAgMDIgMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgIC4u
Li4uLi4uLi4ueS4uLi4KICAgIDg3RTA6IDExIDgyIDBDIDAwIDdGIDA4IDA4IDA0IEIwIDAyIDAx
IEMwIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA4N0YwOiA3OSAwMCAxMSAxNCAw
QSAxMSA4MiAwQyAwMCA3RiAwOCAwMCAwNCBCMCAwMiAwMSAgeS4uLi4uLi4uLi4uLi4uLgogICAg
ODgwMDogQzAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgMDAgMDAgIC4u
Li4ueS4uLi4uLi4uLi4KICAgIDg4MTA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDc5
IDAwIDExIDE0IDBBIDExICAuLi4uLi4uLi4ueS4uLi4uCiAgICA4ODIwOiA4MiAwQyAwMCA3RiAw
OCAxMCAwNCBCMyAwMiAwMSBDMCAwMCAwMCAwMCAwMCA3OSAgLi4uLi4uLi4uLi4uLi4ueQogICAg
ODgzMDogMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgMDggMDggMDQgQjMgMDIgMDEgQzAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDg4NDA6IDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0IDBBIDExIDgy
IDBDIDAwIDdGIDA4IDAwICAuLi4ueS4uLi4uLi4uLi4uCiAgICA4ODUwOiAwNCBCMyAwMiAwMSBD
MCAwMCAwMCAwMCAwMCA3OSAwMCAxMSAxNCAwQSAxMSA4MiAgLi4uLi4uLi4ueS4uLi4uLgogICAg
ODg2MDogMEMgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgNzkgMDAgIC4u
Li4uLi4uLi4uLi4ueS4KICAgIDg4NzA6IDExIDE0IDBBIDExIDgyIDBDIDAwIDAwIDAwIDAwIDAw
IDAwIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA4ODgwOiAwMCAwMCAwMCA3OSAw
MCAxMSAxNCAwQSAxMSA4MiAwQyAwMCAwMCAwMCAwMCAwMCAgLi4ueS4uLi4uLi4uLi4uLgogICAg
ODg5MDogMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgIC4u
Li4uLi4ueS4uLi4uLi4KICAgIDg4QTA6IDAwIDdGIDQwIDAwIDA0IEU3IDAwIDAwIDAwIDAwIDAw
IDAwIDAwIDc5IDAwIDExICAuLkAuLi4uLi4uLi4ueS4uCiAgICA4OEIwOiAxNCAwQSAxMSA4MiAw
QyAwMCA3RiA0MCAwMCAwNCBFOCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLkAuLi4uLi4uLgogICAg
ODhDMDogMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgMDIgMDAgMDQgQjQgIC4u
eS4uLi4uLi4uLi4uLi4KICAgIDg4RDA6IDAyIDAxIEMwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0
IDBBIDExIDgyIDBDIDAwICAuLi4uLi4ueS4uLi4uLi4uCiAgICA4OEUwOiA3RiAwMSAwMCAwNCBC
MSAwMiAwMSBDMCAwMCAwMCAwMCAwMCA3OSAwMCAwQyAwMSAgLi4uLi4uLi4uLi4ueS4uLgogICAg
ODhGMDogMDAgMDAgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDg5MDA6IDAwIDAwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0IDBB
IDExIDgyIDBDIDAwIDdGICAuLi4uLi55Li4uLi4uLi4uCiAgICA4OTEwOiAwOCAxOCAwNCBCMyAw
MiAwMSBDMCAwMCAwMCAwMCAwMCA3OSAwMCAxMSAxNCAwQSAgLi4uLi4uLi4uLi55Li4uLgogICAg
ODkyMDogMTEgODIgMEMgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDg5MzA6IDc5IDAwIDBDIDIxIDAyIDAwIDAwIDBDIDY5IDEwIDAw
IDAwIDEwIDQ3IDM1IDVDICB5Li4hLi4uLmkuLi4uRzVcCiAgICA4OTQwOiAyRiAwMyA1RiA1MyA0
MiA1RiA1MCA0QyA1NCA0NiA0MyAzMCAzMiAzOSAwOCA1RiAgLy5fU0JfUExURkMwMjkuXwogICAg
ODk1MDogNTAgNDMgNTQgMTIgMkMgMDIgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgNDAgMDAgIFBD
VC4sLi4uLi4uLi4uQC4KICAgIDg5NjA6IDAwIDYyIDAwIDAxIEMwIDAwIDAwIDAwIDAwIDc5IDAw
IDExIDE0IDBBIDExIDgyICAuYi4uLi4uLi55Li4uLi4uCiAgICA4OTcwOiAwQyAwMCA3RiA0MCAw
MCAwMCA2MyAwMCAwMSBDMCAwMCAwMCAwMCAwMCA3OSAwMCAgLi4uQC4uYy4uLi4uLi55LgogICAg
ODk4MDogMDggNUYgNTAgNTMgNTMgMTIgNDYgMDYgMDMgMTIgMjAgMDYgMEMgNjggMTAgMDAgIC5f
UFNTLkYuLi4gLi5oLi4KICAgIDg5OTA6IDAwIDBDIEIwIDEzIDAwIDAwIDBDIDAwIDAwIDAwIDAw
IDBDIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA4OUEwOiAwQyAwMCAwMCAwMCAw
MCAwQyAwMCAwMCAwMCAwMCAxMiAyMCAwNiAwQyA5OCAwOCAgLi4uLi4uLi4uLi4gLi4uLgogICAg
ODlCMDogMDAgMDAgMEMgMDQgMDYgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMEMgMDAgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDg5QzA6IDAwIDBDIDAxIDAwIDAwIDAwIDBDIDAxIDAwIDAwIDAw
IDEyIDIwIDA2IDBDIERDICAuLi4uLi4uLi4uLi4gLi4uCiAgICA4OUQwOiAwNSAwMCAwMCAwQyBD
RiAwMyAwMCAwMCAwQyAwMCAwMCAwMCAwMCAwQyAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
ODlFMDogMDAgMDAgMEMgMDIgMDAgMDAgMDAgMEMgMDIgMDAgMDAgMDAgMDggNTggNTAgNTMgIC4u
Li4uLi4uLi4uLi5YUFMKICAgIDg5RjA6IDUzIDEyIDRCIDBEIDAzIDEyIDQ3IDA0IDA4IDBDIDY4
IDEwIDAwIDAwIDBDIEIwICBTLksuLi5HLi4uaC4uLi4uCiAgICA4QTAwOiAxMyAwMCAwMCAwQyAw
MCAwMCAwMCAwMCAwQyAwMCAwMCAwMCAwMCAxMSAwQiAwQSAgLi4uLi4uLi4uLi4uLi4uLgogICAg
OEExMDogMDggMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMTEgMEIgMEEgMDggMDAgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDhBMjA6IDAwIDAwIDAwIDAwIDAwIDExIDBCIDBBIDA4IDAwIDAw
IDAwIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA4QTMwOiAwMCAxMSAwQiAwQSAw
OCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAxMiA0NyAwNCAgLi4uLi4uLi4uLi4uLi5HLgogICAg
OEE0MDogMDggMEMgOTggMDggMDAgMDAgMEMgMDQgMDYgMDAgMDAgMEMgMDAgMDAgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDhBNTA6IDBDIDAwIDAwIDAwIDAwIDExIDBCIDBBIDA4IDAxIDAw
IDAwIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA4QTYwOiAwMCAxMSAwQiAwQSAw
OCAwMSAwMCAwMCAwMCAwMCAwMCAwMCAwMCAxMSAwQiAwQSAgLi4uLi4uLi4uLi4uLi4uLgogICAg
OEE3MDogMDggMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMTEgMEIgMEEgMDggMDAgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDhBODA6IDAwIDAwIDAwIDAwIDAwIDEyIDQ3IDA0IDA4IDBDIERD
IDA1IDAwIDAwIDBDIENGICAuLi4uLi5HLi4uLi4uLi4uCiAgICA4QTkwOiAwMyAwMCAwMCAwQyAw
MCAwMCAwMCAwMCAwQyAwMCAwMCAwMCAwMCAxMSAwQiAwQSAgLi4uLi4uLi4uLi4uLi4uLgogICAg
OEFBMDogMDggMDIgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMTEgMEIgMEEgMDggMDIgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDhBQjA6IDAwIDAwIDAwIDAwIDAwIDExIDBCIDBBIDA4IDAwIDAw
IDAwIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA4QUMwOiAwMCAxMSAwQiAwQSAw
OCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwOCA1RiA1MCAgLi4uLi4uLi4uLi4uLi5fUAogICAg
OEFEMDogNTMgNDQgMTIgMTggMDEgMTIgMTUgMDUgMEEgMDUgMEEgMDAgMEMgMTQgMDAgMDAgIFNE
Li4uLi4uLi4uLi4uLi4KICAgIDhBRTA6IDAwIDBDIEZFIDAwIDAwIDAwIDBDIDAyIDAwIDAwIDAw
IDA4IDUwIDUwIDQzIDU2ICAuLi4uLi4uLi4uLi5QUENWCiAgICA4QUYwOiAwQSAwMCAxNCAwQiA1
RiA1MCA1MCA0MyAwMCBBNCA1MCA1MCA0MyA1NiAwOCA1RiAgLi4uLl9QUEMuLlBQQ1YuXwogICAg
OEIwMDogNDMgNTAgNDMgMTIgNDAgMTkgMTcgMEEgMTcgMEEgMDMgMTEgMTQgMEEgMTEgODIgIENQ
Qy5ALi4uLi4uLi4uLi4KICAgIDhCMTA6IDBDIDAwIDdGIDA4IDE4IDA0IEIwIDAyIDAxIEMwIDAw
IDAwIDAwIDAwIDc5IDAwICAuLi4uLi4uLi4uLi4uLnkuCiAgICA4QjIwOiAxMSAxNCAwQSAxMSA4
MiAwQyAwMCA3RiAwOCAxMCAwNCBCMCAwMiAwMSBDMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
OEIzMDogMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgMDggMDggMDQgIC4u
LnkuLi4uLi4uLi4uLi4KICAgIDhCNDA6IEIwIDAyIDAxIEMwIDAwIDAwIDAwIDAwIDc5IDAwIDEx
IDE0IDBBIDExIDgyIDBDICAuLi4uLi4uLnkuLi4uLi4uCiAgICA4QjUwOiAwMCA3RiAwOCAwMCAw
NCBCMCAwMiAwMSBDMCAwMCAwMCAwMCAwMCA3OSAwMCAxMSAgLi4uLi4uLi4uLi4uLnkuLgogICAg
OEI2MDogMTQgMEEgMTEgODIgMEMgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDhCNzA6IDAwIDAwIDc5IDAwIDExIDE0IDBBIDExIDgyIDBDIDAw
IDdGIDA4IDEwIDA0IEIzICAuLnkuLi4uLi4uLi4uLi4uCiAgICA4QjgwOiAwMiAwMSBDMCAwMCAw
MCAwMCAwMCA3OSAwMCAxMSAxNCAwQSAxMSA4MiAwQyAwMCAgLi4uLi4uLnkuLi4uLi4uLgogICAg
OEI5MDogN0YgMDggMDggMDQgQjMgMDIgMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgIC4u
Li4uLi4uLi4uLnkuLi4KICAgIDhCQTA6IDBBIDExIDgyIDBDIDAwIDdGIDA4IDAwIDA0IEIzIDAy
IDAxIEMwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA4QkIwOiAwMCA3OSAwMCAxMSAx
NCAwQSAxMSA4MiAwQyAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLnkuLi4uLi4uLi4uLi4uLgogICAg
OEJDMDogMDAgMDAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgMDAgIC4u
Li4uLnkuLi4uLi4uLi4KICAgIDhCRDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAw
IDc5IDAwIDExIDE0IDBBICAuLi4uLi4uLi4uLnkuLi4uCiAgICA4QkUwOiAxMSA4MiAwQyAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
OEJGMDogNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgNDAgMDAgMDQgRTcgMDAgMDAgIHku
Li4uLi4uLi5ALi4uLi4KICAgIDhDMDA6IDAwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0IDBBIDEx
IDgyIDBDIDAwIDdGIDQwICAuLi4uLnkuLi4uLi4uLi5ACiAgICA4QzEwOiAwMCAwNCBFOCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCA3OSAwMCAxMSAxNCAwQSAxMSAgLi4uLi4uLi4uLnkuLi4uLgogICAg
OEMyMDogODIgMEMgMDAgN0YgMDIgMDAgMDQgQjQgMDIgMDEgQzAgMDAgMDAgMDAgMDAgNzkgIC4u
Li4uLi4uLi4uLi4uLnkKICAgIDhDMzA6IDAwIDExIDE0IDBBIDExIDgyIDBDIDAwIDdGIDAxIDAw
IDA0IEIxIDAyIDAxIEMwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA4QzQwOiAwMCAwMCAwMCAwMCA3
OSAwMCAwQyAwMSAwMCAwMCAwMCAxMSAxNCAwQSAxMSA4MiAgLi4uLnkuLi4uLi4uLi4uLgogICAg
OEM1MDogMEMgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgNzkgMDAgIC4u
Li4uLi4uLi4uLi4ueS4KICAgIDhDNjA6IDExIDE0IDBBIDExIDgyIDBDIDAwIDdGIDA4IDE4IDA0
IEIzIDAyIDAxIEMwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA4QzcwOiAwMCAwMCAwMCA3OSAw
MCAxMSAxNCAwQSAxMSA4MiAwQyAwMCAwMCAwMCAwMCAwMCAgLi4ueS4uLi4uLi4uLi4uLgogICAg
OEM4MDogMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgNzkgMDAgMEMgMjEgMDIgMDAgMDAgMEMgIC4u
Li4uLi4ueS4uIS4uLi4KICAgIDhDOTA6IDY5IDEwIDAwIDAwIDEwIDQ3IDM1IDVDIDJGIDAzIDVG
IDUzIDQyIDVGIDUwIDRDICBpLi4uLkc1XC8uX1NCX1BMCiAgICA4Q0EwOiA1NCA0NiA0MyAzMCAz
MiA0MSAwOCA1RiA1MCA0MyA1NCAxMiAyQyAwMiAxMSAxNCAgVEZDMDJBLl9QQ1QuLC4uLgogICAg
OENCMDogMEEgMTEgODIgMEMgMDAgN0YgNDAgMDAgMDAgNjIgMDAgMDEgQzAgMDAgMDAgMDAgIC4u
Li4uLkAuLmIuLi4uLi4KICAgIDhDQzA6IDAwIDc5IDAwIDExIDE0IDBBIDExIDgyIDBDIDAwIDdG
IDQwIDAwIDAwIDYzIDAwICAueS4uLi4uLi4uLkAuLmMuCiAgICA4Q0QwOiAwMSBDMCAwMCAwMCAw
MCAwMCA3OSAwMCAwOCA1RiA1MCA1MyA1MyAxMiA0NiAwNiAgLi4uLi4ueS4uX1BTUy5GLgogICAg
OENFMDogMDMgMTIgMjAgMDYgMEMgNjggMTAgMDAgMDAgMEMgQjAgMTMgMDAgMDAgMEMgMDAgIC4u
IC4uaC4uLi4uLi4uLi4KICAgIDhDRjA6IDAwIDAwIDAwIDBDIDAwIDAwIDAwIDAwIDBDIDAwIDAw
IDAwIDAwIDBDIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA4RDAwOiAwMCAwMCAxMiAyMCAw
NiAwQyA5OCAwOCAwMCAwMCAwQyAwNCAwNiAwMCAwMCAwQyAgLi4uIC4uLi4uLi4uLi4uLgogICAg
OEQxMDogMDAgMDAgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMEMgMDEgMDAgMDAgMDAgMEMgMDEgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDhEMjA6IDAwIDAwIDAwIDEyIDIwIDA2IDBDIERDIDA1IDAwIDAw
IDBDIENGIDAzIDAwIDAwICAuLi4uIC4uLi4uLi4uLi4uCiAgICA4RDMwOiAwQyAwMCAwMCAwMCAw
MCAwQyAwMCAwMCAwMCAwMCAwQyAwMiAwMCAwMCAwMCAwQyAgLi4uLi4uLi4uLi4uLi4uLgogICAg
OEQ0MDogMDIgMDAgMDAgMDAgMDggNTggNTAgNTMgNTMgMTIgNEIgMEQgMDMgMTIgNDcgMDQgIC4u
Li4uWFBTUy5LLi4uRy4KICAgIDhENTA6IDA4IDBDIDY4IDEwIDAwIDAwIDBDIEIwIDEzIDAwIDAw
IDBDIDAwIDAwIDAwIDAwICAuLmguLi4uLi4uLi4uLi4uCiAgICA4RDYwOiAwQyAwMCAwMCAwMCAw
MCAxMSAwQiAwQSAwOCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
OEQ3MDogMDAgMTEgMEIgMEEgMDggMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMTEgMEIgMEEgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDhEODA6IDA4IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDExIDBC
IDBBIDA4IDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA4RDkwOiAwMCAwMCAwMCAwMCAw
MCAxMiA0NyAwNCAwOCAwQyA5OCAwOCAwMCAwMCAwQyAwNCAgLi4uLi4uRy4uLi4uLi4uLgogICAg
OERBMDogMDYgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMTEgMEIgMEEgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDhEQjA6IDA4IDAxIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDExIDBC
IDBBIDA4IDAxIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA4REMwOiAwMCAwMCAwMCAwMCAw
MCAxMSAwQiAwQSAwOCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
OEREMDogMDAgMTEgMEIgMEEgMDggMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMTIgNDcgMDQgIC4u
Li4uLi4uLi4uLi4uRy4KICAgIDhERTA6IDA4IDBDIERDIDA1IDAwIDAwIDBDIENGIDAzIDAwIDAw
IDBDIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA4REYwOiAwQyAwMCAwMCAwMCAw
MCAxMSAwQiAwQSAwOCAwMiAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
OEUwMDogMDAgMTEgMEIgMEEgMDggMDIgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMTEgMEIgMEEgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDhFMTA6IDA4IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDExIDBC
IDBBIDA4IDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA4RTIwOiAwMCAwMCAwMCAwMCAw
MCAwOCA1RiA1MCA1MyA0NCAxMiAxOCAwMSAxMiAxNSAwNSAgLi4uLi4uX1BTRC4uLi4uLgogICAg
OEUzMDogMEEgMDUgMEEgMDAgMEMgMTUgMDAgMDAgMDAgMEMgRkUgMDAgMDAgMDAgMEMgMDIgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDhFNDA6IDAwIDAwIDAwIDA4IDUwIDUwIDQzIDU2IDBBIDAwIDE0
IDBCIDVGIDUwIDUwIDQzICAuLi4uUFBDVi4uLi5fUFBDCiAgICA4RTUwOiAwMCBBNCA1MCA1MCA0
MyA1NiAwOCA1RiA0MyA1MCA0MyAxMiA0MCAxOSAxNyAwQSAgLi5QUENWLl9DUEMuQC4uLgogICAg
OEU2MDogMTcgMEEgMDMgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgMDggMTggMDQgQjAgMDIgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDhFNzA6IDAxIEMwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0IDBB
IDExIDgyIDBDIDAwIDdGICAuLi4uLi55Li4uLi4uLi4uCiAgICA4RTgwOiAwOCAxMCAwNCBCMCAw
MiAwMSBDMCAwMCAwMCAwMCAwMCA3OSAwMCAxMSAxNCAwQSAgLi4uLi4uLi4uLi55Li4uLgogICAg
OEU5MDogMTEgODIgMEMgMDAgN0YgMDggMDggMDQgQjAgMDIgMDEgQzAgMDAgMDAgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDhFQTA6IDc5IDAwIDExIDE0IDBBIDExIDgyIDBDIDAwIDdGIDA4
IDAwIDA0IEIwIDAyIDAxICB5Li4uLi4uLi4uLi4uLi4uCiAgICA4RUIwOiBDMCAwMCAwMCAwMCAw
MCA3OSAwMCAxMSAxNCAwQSAxMSA4MiAwQyAwMCAwMCAwMCAgLi4uLi55Li4uLi4uLi4uLgogICAg
OEVDMDogMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgIC4u
Li4uLi4uLi55Li4uLi4KICAgIDhFRDA6IDgyIDBDIDAwIDdGIDA4IDEwIDA0IEIzIDAyIDAxIEMw
IDAwIDAwIDAwIDAwIDc5ICAuLi4uLi4uLi4uLi4uLi55CiAgICA4RUUwOiAwMCAxMSAxNCAwQSAx
MSA4MiAwQyAwMCA3RiAwOCAwOCAwNCBCMyAwMiAwMSBDMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
OEVGMDogMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgMDggMDAgIC4u
Li55Li4uLi4uLi4uLi4KICAgIDhGMDA6IDA0IEIzIDAyIDAxIEMwIDAwIDAwIDAwIDAwIDc5IDAw
IDExIDE0IDBBIDExIDgyICAuLi4uLi4uLi55Li4uLi4uCiAgICA4RjEwOiAwQyAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCA3OSAwMCAgLi4uLi4uLi4uLi4uLi55LgogICAg
OEYyMDogMTEgMTQgMEEgMTEgODIgMEMgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDhGMzA6IDAwIDAwIDAwIDc5IDAwIDExIDE0IDBBIDExIDgyIDBD
IDAwIDAwIDAwIDAwIDAwICAuLi55Li4uLi4uLi4uLi4uCiAgICA4RjQwOiAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCA3OSAwMCAxMSAxNCAwQSAxMSA4MiAwQyAgLi4uLi4uLi55Li4uLi4uLgogICAg
OEY1MDogMDAgN0YgNDAgMDAgMDQgRTcgMDAgMDAgMDAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgIC4u
QC4uLi4uLi4uLi55Li4KICAgIDhGNjA6IDE0IDBBIDExIDgyIDBDIDAwIDdGIDQwIDAwIDA0IEU4
IDAwIDAwIDAwIDAwIDAwICAuLi4uLi4uQC4uLi4uLi4uCiAgICA4RjcwOiAwMCAwMCA3OSAwMCAx
MSAxNCAwQSAxMSA4MiAwQyAwMCA3RiAwMiAwMCAwNCBCNCAgLi55Li4uLi4uLi4uLi4uLgogICAg
OEY4MDogMDIgMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgIC4u
Li4uLi55Li4uLi4uLi4KICAgIDhGOTA6IDdGIDAxIDAwIDA0IEIxIDAyIDAxIEMwIDAwIDAwIDAw
IDAwIDc5IDAwIDBDIDAxICAuLi4uLi4uLi4uLi55Li4uCiAgICA4RkEwOiAwMCAwMCAwMCAxMSAx
NCAwQSAxMSA4MiAwQyAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
OEZCMDogMDAgMDAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgIC4u
Li4uLnkuLi4uLi4uLi4KICAgIDhGQzA6IDA4IDE4IDA0IEIzIDAyIDAxIEMwIDAwIDAwIDAwIDAw
IDc5IDAwIDExIDE0IDBBICAuLi4uLi4uLi4uLnkuLi4uCiAgICA4RkQwOiAxMSA4MiAwQyAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
OEZFMDogNzkgMDAgMEMgMjEgMDIgMDAgMDAgMEMgNjkgMTAgMDAgMDAgMTAgNDcgMzUgNUMgIHku
LiEuLi4uaS4uLi5HNVwKICAgIDhGRjA6IDJGIDAzIDVGIDUzIDQyIDVGIDUwIDRDIDU0IDQ2IDQz
IDMwIDMyIDQyIDA4IDVGICAvLl9TQl9QTFRGQzAyQi5fCiAgICA5MDAwOiA1MCA0MyA1NCAxMiAy
QyAwMiAxMSAxNCAwQSAxMSA4MiAwQyAwMCA3RiA0MCAwMCAgUENULiwuLi4uLi4uLi5ALgogICAg
OTAxMDogMDAgNjIgMDAgMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgIC5i
Li4uLi4uLnkuLi4uLi4KICAgIDkwMjA6IDBDIDAwIDdGIDQwIDAwIDAwIDYzIDAwIDAxIEMwIDAw
IDAwIDAwIDAwIDc5IDAwICAuLi5ALi5jLi4uLi4uLnkuCiAgICA5MDMwOiAwOCA1RiA1MCA1MyA1
MyAxMiA0NiAwNiAwMyAxMiAyMCAwNiAwQyA2OCAxMCAwMCAgLl9QU1MuRi4uLiAuLmguLgogICAg
OTA0MDogMDAgMEMgQjAgMTMgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMEMgMDAgMDAgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDkwNTA6IDBDIDAwIDAwIDAwIDAwIDBDIDAwIDAwIDAwIDAwIDEy
IDIwIDA2IDBDIDk4IDA4ICAuLi4uLi4uLi4uLiAuLi4uCiAgICA5MDYwOiAwMCAwMCAwQyAwNCAw
NiAwMCAwMCAwQyAwMCAwMCAwMCAwMCAwQyAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
OTA3MDogMDAgMEMgMDEgMDAgMDAgMDAgMEMgMDEgMDAgMDAgMDAgMTIgMjAgMDYgMEMgREMgIC4u
Li4uLi4uLi4uLiAuLi4KICAgIDkwODA6IDA1IDAwIDAwIDBDIENGIDAzIDAwIDAwIDBDIDAwIDAw
IDAwIDAwIDBDIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA5MDkwOiAwMCAwMCAwQyAwMiAw
MCAwMCAwMCAwQyAwMiAwMCAwMCAwMCAwOCA1OCA1MCA1MyAgLi4uLi4uLi4uLi4uLlhQUwogICAg
OTBBMDogNTMgMTIgNEIgMEQgMDMgMTIgNDcgMDQgMDggMEMgNjggMTAgMDAgMDAgMEMgQjAgIFMu
Sy4uLkcuLi5oLi4uLi4KICAgIDkwQjA6IDEzIDAwIDAwIDBDIDAwIDAwIDAwIDAwIDBDIDAwIDAw
IDAwIDAwIDExIDBCIDBBICAuLi4uLi4uLi4uLi4uLi4uCiAgICA5MEMwOiAwOCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAxMSAwQiAwQSAwOCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
OTBEMDogMDAgMDAgMDAgMDAgMDAgMTEgMEIgMEEgMDggMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDkwRTA6IDAwIDExIDBCIDBBIDA4IDAwIDAwIDAwIDAwIDAwIDAw
IDAwIDAwIDEyIDQ3IDA0ICAuLi4uLi4uLi4uLi4uLkcuCiAgICA5MEYwOiAwOCAwQyA5OCAwOCAw
MCAwMCAwQyAwNCAwNiAwMCAwMCAwQyAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
OTEwMDogMEMgMDAgMDAgMDAgMDAgMTEgMEIgMEEgMDggMDEgMDAgMDAgMDAgMDAgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDkxMTA6IDAwIDExIDBCIDBBIDA4IDAxIDAwIDAwIDAwIDAwIDAw
IDAwIDAwIDExIDBCIDBBICAuLi4uLi4uLi4uLi4uLi4uCiAgICA5MTIwOiAwOCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAxMSAwQiAwQSAwOCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
OTEzMDogMDAgMDAgMDAgMDAgMDAgMTIgNDcgMDQgMDggMEMgREMgMDUgMDAgMDAgMEMgQ0YgIC4u
Li4uLkcuLi4uLi4uLi4KICAgIDkxNDA6IDAzIDAwIDAwIDBDIDAwIDAwIDAwIDAwIDBDIDAwIDAw
IDAwIDAwIDExIDBCIDBBICAuLi4uLi4uLi4uLi4uLi4uCiAgICA5MTUwOiAwOCAwMiAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAxMSAwQiAwQSAwOCAwMiAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
OTE2MDogMDAgMDAgMDAgMDAgMDAgMTEgMEIgMEEgMDggMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDkxNzA6IDAwIDExIDBCIDBBIDA4IDAwIDAwIDAwIDAwIDAwIDAw
IDAwIDAwIDA4IDVGIDUwICAuLi4uLi4uLi4uLi4uLl9QCiAgICA5MTgwOiA1MyA0NCAxMiAxOCAw
MSAxMiAxNSAwNSAwQSAwNSAwQSAwMCAwQyAxNSAwMCAwMCAgU0QuLi4uLi4uLi4uLi4uLgogICAg
OTE5MDogMDAgMEMgRkUgMDAgMDAgMDAgMEMgMDIgMDAgMDAgMDAgMDggNTAgNTAgNDMgNTYgIC4u
Li4uLi4uLi4uLlBQQ1YKICAgIDkxQTA6IDBBIDAwIDE0IDBCIDVGIDUwIDUwIDQzIDAwIEE0IDUw
IDUwIDQzIDU2IDA4IDVGICAuLi4uX1BQQy4uUFBDVi5fCiAgICA5MUIwOiA0MyA1MCA0MyAxMiA0
MCAxOSAxNyAwQSAxNyAwQSAwMyAxMSAxNCAwQSAxMSA4MiAgQ1BDLkAuLi4uLi4uLi4uLgogICAg
OTFDMDogMEMgMDAgN0YgMDggMTggMDQgQjAgMDIgMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgIC4u
Li4uLi4uLi4uLi4ueS4KICAgIDkxRDA6IDExIDE0IDBBIDExIDgyIDBDIDAwIDdGIDA4IDEwIDA0
IEIwIDAyIDAxIEMwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA5MUUwOiAwMCAwMCAwMCA3OSAw
MCAxMSAxNCAwQSAxMSA4MiAwQyAwMCA3RiAwOCAwOCAwNCAgLi4ueS4uLi4uLi4uLi4uLgogICAg
OTFGMDogQjAgMDIgMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgIC4u
Li4uLi4ueS4uLi4uLi4KICAgIDkyMDA6IDAwIDdGIDA4IDAwIDA0IEIwIDAyIDAxIEMwIDAwIDAw
IDAwIDAwIDc5IDAwIDExICAuLi4uLi4uLi4uLi4ueS4uCiAgICA5MjEwOiAxNCAwQSAxMSA4MiAw
QyAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
OTIyMDogMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgMDggMTAgMDQgQjMgIC4u
eS4uLi4uLi4uLi4uLi4KICAgIDkyMzA6IDAyIDAxIEMwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0
IDBBIDExIDgyIDBDIDAwICAuLi4uLi4ueS4uLi4uLi4uCiAgICA5MjQwOiA3RiAwOCAwOCAwNCBC
MyAwMiAwMSBDMCAwMCAwMCAwMCAwMCA3OSAwMCAxMSAxNCAgLi4uLi4uLi4uLi4ueS4uLgogICAg
OTI1MDogMEEgMTEgODIgMEMgMDAgN0YgMDggMDAgMDQgQjMgMDIgMDEgQzAgMDAgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDkyNjA6IDAwIDc5IDAwIDExIDE0IDBBIDExIDgyIDBDIDAwIDAw
IDAwIDAwIDAwIDAwIDAwICAueS4uLi4uLi4uLi4uLi4uCiAgICA5MjcwOiAwMCAwMCAwMCAwMCAw
MCAwMCA3OSAwMCAxMSAxNCAwQSAxMSA4MiAwQyAwMCAwMCAgLi4uLi4ueS4uLi4uLi4uLgogICAg
OTI4MDogMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgIC4u
Li4uLi4uLi4ueS4uLi4KICAgIDkyOTA6IDExIDgyIDBDIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAw
IDAwIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA5MkEwOiA3OSAwMCAxMSAxNCAw
QSAxMSA4MiAwQyAwMCA3RiA0MCAwMCAwNCBFNyAwMCAwMCAgeS4uLi4uLi4uLkAuLi4uLgogICAg
OTJCMDogMDAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgNDAgIC4u
Li4ueS4uLi4uLi4uLkAKICAgIDkyQzA6IDAwIDA0IEU4IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDc5
IDAwIDExIDE0IDBBIDExICAuLi4uLi4uLi4ueS4uLi4uCiAgICA5MkQwOiA4MiAwQyAwMCA3RiAw
MiAwMCAwNCBCNCAwMiAwMSBDMCAwMCAwMCAwMCAwMCA3OSAgLi4uLi4uLi4uLi4uLi4ueQogICAg
OTJFMDogMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgMDEgMDAgMDQgQjEgMDIgMDEgQzAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDkyRjA6IDAwIDAwIDAwIDAwIDc5IDAwIDBDIDAxIDAwIDAwIDAw
IDExIDE0IDBBIDExIDgyICAuLi4ueS4uLi4uLi4uLi4uCiAgICA5MzAwOiAwQyAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCA3OSAwMCAgLi4uLi4uLi4uLi4uLi55LgogICAg
OTMxMDogMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgMDggMTggMDQgQjMgMDIgMDEgQzAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDkzMjA6IDAwIDAwIDAwIDc5IDAwIDExIDE0IDBBIDExIDgyIDBD
IDAwIDAwIDAwIDAwIDAwICAuLi55Li4uLi4uLi4uLi4uCiAgICA5MzMwOiAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCA3OSAwMCAwQyAyMSAwMiAwMCAwMCAwQyAgLi4uLi4uLi55Li4hLi4uLgogICAg
OTM0MDogNjkgMTAgMDAgMDAgMTAgNDcgMzUgNUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAgNEMgIGku
Li4uRzVcLy5fU0JfUEwKICAgIDkzNTA6IDU0IDQ2IDQzIDMwIDMyIDQzIDA4IDVGIDUwIDQzIDU0
IDEyIDJDIDAyIDExIDE0ICBURkMwMkMuX1BDVC4sLi4uCiAgICA5MzYwOiAwQSAxMSA4MiAwQyAw
MCA3RiA0MCAwMCAwMCA2MiAwMCAwMSBDMCAwMCAwMCAwMCAgLi4uLi4uQC4uYi4uLi4uLgogICAg
OTM3MDogMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgNDAgMDAgMDAgNjMgMDAgIC55
Li4uLi4uLi4uQC4uYy4KICAgIDkzODA6IDAxIEMwIDAwIDAwIDAwIDAwIDc5IDAwIDA4IDVGIDUw
IDUzIDUzIDEyIDQ2IDA2ICAuLi4uLi55Li5fUFNTLkYuCiAgICA5MzkwOiAwMyAxMiAyMCAwNiAw
QyA2OCAxMCAwMCAwMCAwQyBCMCAxMyAwMCAwMCAwQyAwMCAgLi4gLi5oLi4uLi4uLi4uLgogICAg
OTNBMDogMDAgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMEMgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDkzQjA6IDAwIDAwIDEyIDIwIDA2IDBDIDk4IDA4IDAwIDAwIDBD
IDA0IDA2IDAwIDAwIDBDICAuLi4gLi4uLi4uLi4uLi4uCiAgICA5M0MwOiAwMCAwMCAwMCAwMCAw
QyAwMCAwMCAwMCAwMCAwQyAwMSAwMCAwMCAwMCAwQyAwMSAgLi4uLi4uLi4uLi4uLi4uLgogICAg
OTNEMDogMDAgMDAgMDAgMTIgMjAgMDYgMEMgREMgMDUgMDAgMDAgMEMgQ0YgMDMgMDAgMDAgIC4u
Li4gLi4uLi4uLi4uLi4KICAgIDkzRTA6IDBDIDAwIDAwIDAwIDAwIDBDIDAwIDAwIDAwIDAwIDBD
IDAyIDAwIDAwIDAwIDBDICAuLi4uLi4uLi4uLi4uLi4uCiAgICA5M0YwOiAwMiAwMCAwMCAwMCAw
OCA1OCA1MCA1MyA1MyAxMiA0QiAwRCAwMyAxMiA0NyAwNCAgLi4uLi5YUFNTLksuLi5HLgogICAg
OTQwMDogMDggMEMgNjggMTAgMDAgMDAgMEMgQjAgMTMgMDAgMDAgMEMgMDAgMDAgMDAgMDAgIC4u
aC4uLi4uLi4uLi4uLi4KICAgIDk0MTA6IDBDIDAwIDAwIDAwIDAwIDExIDBCIDBBIDA4IDAwIDAw
IDAwIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA5NDIwOiAwMCAxMSAwQiAwQSAw
OCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAxMSAwQiAwQSAgLi4uLi4uLi4uLi4uLi4uLgogICAg
OTQzMDogMDggMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMTEgMEIgMEEgMDggMDAgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDk0NDA6IDAwIDAwIDAwIDAwIDAwIDEyIDQ3IDA0IDA4IDBDIDk4
IDA4IDAwIDAwIDBDIDA0ICAuLi4uLi5HLi4uLi4uLi4uCiAgICA5NDUwOiAwNiAwMCAwMCAwQyAw
MCAwMCAwMCAwMCAwQyAwMCAwMCAwMCAwMCAxMSAwQiAwQSAgLi4uLi4uLi4uLi4uLi4uLgogICAg
OTQ2MDogMDggMDEgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMTEgMEIgMEEgMDggMDEgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDk0NzA6IDAwIDAwIDAwIDAwIDAwIDExIDBCIDBBIDA4IDAwIDAw
IDAwIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA5NDgwOiAwMCAxMSAwQiAwQSAw
OCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAxMiA0NyAwNCAgLi4uLi4uLi4uLi4uLi5HLgogICAg
OTQ5MDogMDggMEMgREMgMDUgMDAgMDAgMEMgQ0YgMDMgMDAgMDAgMEMgMDAgMDAgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDk0QTA6IDBDIDAwIDAwIDAwIDAwIDExIDBCIDBBIDA4IDAyIDAw
IDAwIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA5NEIwOiAwMCAxMSAwQiAwQSAw
OCAwMiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAxMSAwQiAwQSAgLi4uLi4uLi4uLi4uLi4uLgogICAg
OTRDMDogMDggMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMTEgMEIgMEEgMDggMDAgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDk0RDA6IDAwIDAwIDAwIDAwIDAwIDA4IDVGIDUwIDUzIDQ0IDEy
IDE4IDAxIDEyIDE1IDA1ICAuLi4uLi5fUFNELi4uLi4uCiAgICA5NEUwOiAwQSAwNSAwQSAwMCAw
QyAxNiAwMCAwMCAwMCAwQyBGRSAwMCAwMCAwMCAwQyAwMiAgLi4uLi4uLi4uLi4uLi4uLgogICAg
OTRGMDogMDAgMDAgMDAgMDggNTAgNTAgNDMgNTYgMEEgMDAgMTQgMEIgNUYgNTAgNTAgNDMgIC4u
Li5QUENWLi4uLl9QUEMKICAgIDk1MDA6IDAwIEE0IDUwIDUwIDQzIDU2IDA4IDVGIDQzIDUwIDQz
IDEyIDQwIDE5IDE3IDBBICAuLlBQQ1YuX0NQQy5ALi4uCiAgICA5NTEwOiAxNyAwQSAwMyAxMSAx
NCAwQSAxMSA4MiAwQyAwMCA3RiAwOCAxOCAwNCBCMCAwMiAgLi4uLi4uLi4uLi4uLi4uLgogICAg
OTUyMDogMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgIC4u
Li4uLnkuLi4uLi4uLi4KICAgIDk1MzA6IDA4IDEwIDA0IEIwIDAyIDAxIEMwIDAwIDAwIDAwIDAw
IDc5IDAwIDExIDE0IDBBICAuLi4uLi4uLi4uLnkuLi4uCiAgICA5NTQwOiAxMSA4MiAwQyAwMCA3
RiAwOCAwOCAwNCBCMCAwMiAwMSBDMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
OTU1MDogNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgMDggMDAgMDQgQjAgMDIgMDEgIHku
Li4uLi4uLi4uLi4uLi4KICAgIDk1NjA6IEMwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0IDBBIDEx
IDgyIDBDIDAwIDAwIDAwICAuLi4uLnkuLi4uLi4uLi4uCiAgICA5NTcwOiAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCA3OSAwMCAxMSAxNCAwQSAxMSAgLi4uLi4uLi4uLnkuLi4uLgogICAg
OTU4MDogODIgMEMgMDAgN0YgMDggMTAgMDQgQjMgMDIgMDEgQzAgMDAgMDAgMDAgMDAgNzkgIC4u
Li4uLi4uLi4uLi4uLnkKICAgIDk1OTA6IDAwIDExIDE0IDBBIDExIDgyIDBDIDAwIDdGIDA4IDA4
IDA0IEIzIDAyIDAxIEMwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA5NUEwOiAwMCAwMCAwMCAwMCA3
OSAwMCAxMSAxNCAwQSAxMSA4MiAwQyAwMCA3RiAwOCAwMCAgLi4uLnkuLi4uLi4uLi4uLgogICAg
OTVCMDogMDQgQjMgMDIgMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgIC4u
Li4uLi4uLnkuLi4uLi4KICAgIDk1QzA6IDBDIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAw
IDAwIDAwIDAwIDc5IDAwICAuLi4uLi4uLi4uLi4uLnkuCiAgICA5NUQwOiAxMSAxNCAwQSAxMSA4
MiAwQyAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
OTVFMDogMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgMDAgMDAgMDAgMDAgIC4u
LnkuLi4uLi4uLi4uLi4KICAgIDk1RjA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDc5IDAwIDEx
IDE0IDBBIDExIDgyIDBDICAuLi4uLi4uLnkuLi4uLi4uCiAgICA5NjAwOiAwMCA3RiA0MCAwMCAw
NCBFNyAwMCAwMCAwMCAwMCAwMCAwMCAwMCA3OSAwMCAxMSAgLi5ALi4uLi4uLi4uLnkuLgogICAg
OTYxMDogMTQgMEEgMTEgODIgMEMgMDAgN0YgNDAgMDAgMDQgRTggMDAgMDAgMDAgMDAgMDAgIC4u
Li4uLi5ALi4uLi4uLi4KICAgIDk2MjA6IDAwIDAwIDc5IDAwIDExIDE0IDBBIDExIDgyIDBDIDAw
IDdGIDAyIDAwIDA0IEI0ICAuLnkuLi4uLi4uLi4uLi4uCiAgICA5NjMwOiAwMiAwMSBDMCAwMCAw
MCAwMCAwMCA3OSAwMCAxMSAxNCAwQSAxMSA4MiAwQyAwMCAgLi4uLi4uLnkuLi4uLi4uLgogICAg
OTY0MDogN0YgMDEgMDAgMDQgQjEgMDIgMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgMEMgMDEgIC4u
Li4uLi4uLi4uLnkuLi4KICAgIDk2NTA6IDAwIDAwIDAwIDExIDE0IDBBIDExIDgyIDBDIDAwIDAw
IDAwIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA5NjYwOiAwMCAwMCAwMCAwMCAw
MCAwMCA3OSAwMCAxMSAxNCAwQSAxMSA4MiAwQyAwMCA3RiAgLi4uLi4ueS4uLi4uLi4uLgogICAg
OTY3MDogMDggMTggMDQgQjMgMDIgMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgIC4u
Li4uLi4uLi4ueS4uLi4KICAgIDk2ODA6IDExIDgyIDBDIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAw
IDAwIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA5NjkwOiA3OSAwMCAwQyAyMSAw
MiAwMCAwMCAwQyA2OSAxMCAwMCAwMCAxMCA0NyAzNSA1QyAgeS4uIS4uLi5pLi4uLkc1XAogICAg
OTZBMDogMkYgMDMgNUYgNTMgNDIgNUYgNTAgNEMgNTQgNDYgNDMgMzAgMzIgNDQgMDggNUYgIC8u
X1NCX1BMVEZDMDJELl8KICAgIDk2QjA6IDUwIDQzIDU0IDEyIDJDIDAyIDExIDE0IDBBIDExIDgy
IDBDIDAwIDdGIDQwIDAwICBQQ1QuLC4uLi4uLi4uLkAuCiAgICA5NkMwOiAwMCA2MiAwMCAwMSBD
MCAwMCAwMCAwMCAwMCA3OSAwMCAxMSAxNCAwQSAxMSA4MiAgLmIuLi4uLi4ueS4uLi4uLgogICAg
OTZEMDogMEMgMDAgN0YgNDAgMDAgMDAgNjMgMDAgMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgIC4u
LkAuLmMuLi4uLi4ueS4KICAgIDk2RTA6IDA4IDVGIDUwIDUzIDUzIDEyIDQ2IDA2IDAzIDEyIDIw
IDA2IDBDIDY4IDEwIDAwICAuX1BTUy5GLi4uIC4uaC4uCiAgICA5NkYwOiAwMCAwQyBCMCAxMyAw
MCAwMCAwQyAwMCAwMCAwMCAwMCAwQyAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
OTcwMDogMEMgMDAgMDAgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMTIgMjAgMDYgMEMgOTggMDggIC4u
Li4uLi4uLi4uIC4uLi4KICAgIDk3MTA6IDAwIDAwIDBDIDA0IDA2IDAwIDAwIDBDIDAwIDAwIDAw
IDAwIDBDIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA5NzIwOiAwMCAwQyAwMSAwMCAw
MCAwMCAwQyAwMSAwMCAwMCAwMCAxMiAyMCAwNiAwQyBEQyAgLi4uLi4uLi4uLi4uIC4uLgogICAg
OTczMDogMDUgMDAgMDAgMEMgQ0YgMDMgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMEMgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDk3NDA6IDAwIDAwIDBDIDAyIDAwIDAwIDAwIDBDIDAyIDAwIDAw
IDAwIDA4IDU4IDUwIDUzICAuLi4uLi4uLi4uLi4uWFBTCiAgICA5NzUwOiA1MyAxMiA0QiAwRCAw
MyAxMiA0NyAwNCAwOCAwQyA2OCAxMCAwMCAwMCAwQyBCMCAgUy5LLi4uRy4uLmguLi4uLgogICAg
OTc2MDogMTMgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMTEgMEIgMEEgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDk3NzA6IDA4IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDExIDBC
IDBBIDA4IDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA5NzgwOiAwMCAwMCAwMCAwMCAw
MCAxMSAwQiAwQSAwOCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
OTc5MDogMDAgMTEgMEIgMEEgMDggMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMTIgNDcgMDQgIC4u
Li4uLi4uLi4uLi4uRy4KICAgIDk3QTA6IDA4IDBDIDk4IDA4IDAwIDAwIDBDIDA0IDA2IDAwIDAw
IDBDIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA5N0IwOiAwQyAwMCAwMCAwMCAw
MCAxMSAwQiAwQSAwOCAwMSAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
OTdDMDogMDAgMTEgMEIgMEEgMDggMDEgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMTEgMEIgMEEgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDk3RDA6IDA4IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDExIDBC
IDBBIDA4IDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA5N0UwOiAwMCAwMCAwMCAwMCAw
MCAxMiA0NyAwNCAwOCAwQyBEQyAwNSAwMCAwMCAwQyBDRiAgLi4uLi4uRy4uLi4uLi4uLgogICAg
OTdGMDogMDMgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMTEgMEIgMEEgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDk4MDA6IDA4IDAyIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDExIDBC
IDBBIDA4IDAyIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA5ODEwOiAwMCAwMCAwMCAwMCAw
MCAxMSAwQiAwQSAwOCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
OTgyMDogMDAgMTEgMEIgMEEgMDggMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDggNUYgNTAgIC4u
Li4uLi4uLi4uLi4uX1AKICAgIDk4MzA6IDUzIDQ0IDEyIDE4IDAxIDEyIDE1IDA1IDBBIDA1IDBB
IDAwIDBDIDE2IDAwIDAwICBTRC4uLi4uLi4uLi4uLi4uCiAgICA5ODQwOiAwMCAwQyBGRSAwMCAw
MCAwMCAwQyAwMiAwMCAwMCAwMCAwOCA1MCA1MCA0MyA1NiAgLi4uLi4uLi4uLi4uUFBDVgogICAg
OTg1MDogMEEgMDAgMTQgMEIgNUYgNTAgNTAgNDMgMDAgQTQgNTAgNTAgNDMgNTYgMDggNUYgIC4u
Li5fUFBDLi5QUENWLl8KICAgIDk4NjA6IDQzIDUwIDQzIDEyIDQwIDE5IDE3IDBBIDE3IDBBIDAz
IDExIDE0IDBBIDExIDgyICBDUEMuQC4uLi4uLi4uLi4uCiAgICA5ODcwOiAwQyAwMCA3RiAwOCAx
OCAwNCBCMCAwMiAwMSBDMCAwMCAwMCAwMCAwMCA3OSAwMCAgLi4uLi4uLi4uLi4uLi55LgogICAg
OTg4MDogMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgMDggMTAgMDQgQjAgMDIgMDEgQzAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDk4OTA6IDAwIDAwIDAwIDc5IDAwIDExIDE0IDBBIDExIDgyIDBD
IDAwIDdGIDA4IDA4IDA0ICAuLi55Li4uLi4uLi4uLi4uCiAgICA5OEEwOiBCMCAwMiAwMSBDMCAw
MCAwMCAwMCAwMCA3OSAwMCAxMSAxNCAwQSAxMSA4MiAwQyAgLi4uLi4uLi55Li4uLi4uLgogICAg
OThCMDogMDAgN0YgMDggMDAgMDQgQjAgMDIgMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgIC4u
Li4uLi4uLi4uLi55Li4KICAgIDk4QzA6IDE0IDBBIDExIDgyIDBDIDAwIDAwIDAwIDAwIDAwIDAw
IDAwIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA5OEQwOiAwMCAwMCA3OSAwMCAx
MSAxNCAwQSAxMSA4MiAwQyAwMCA3RiAwOCAxMCAwNCBCMyAgLi55Li4uLi4uLi4uLi4uLgogICAg
OThFMDogMDIgMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgIC4u
Li4uLi55Li4uLi4uLi4KICAgIDk4RjA6IDdGIDA4IDA4IDA0IEIzIDAyIDAxIEMwIDAwIDAwIDAw
IDAwIDc5IDAwIDExIDE0ICAuLi4uLi4uLi4uLi55Li4uCiAgICA5OTAwOiAwQSAxMSA4MiAwQyAw
MCA3RiAwOCAwMCAwNCBCMyAwMiAwMSBDMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
OTkxMDogMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC55
Li4uLi4uLi4uLi4uLi4KICAgIDk5MjA6IDAwIDAwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0IDBB
IDExIDgyIDBDIDAwIDAwICAuLi4uLi55Li4uLi4uLi4uCiAgICA5OTMwOiAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAwMCA3OSAwMCAxMSAxNCAwQSAgLi4uLi4uLi4uLi55Li4uLgogICAg
OTk0MDogMTEgODIgMEMgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDk5NTA6IDc5IDAwIDExIDE0IDBBIDExIDgyIDBDIDAwIDdGIDQw
IDAwIDA0IEU3IDAwIDAwICB5Li4uLi4uLi4uQC4uLi4uCiAgICA5OTYwOiAwMCAwMCAwMCAwMCAw
MCA3OSAwMCAxMSAxNCAwQSAxMSA4MiAwQyAwMCA3RiA0MCAgLi4uLi55Li4uLi4uLi4uQAogICAg
OTk3MDogMDAgMDQgRTggMDAgMDAgMDAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgIC4u
Li4uLi4uLi55Li4uLi4KICAgIDk5ODA6IDgyIDBDIDAwIDdGIDAyIDAwIDA0IEI0IDAyIDAxIEMw
IDAwIDAwIDAwIDAwIDc5ICAuLi4uLi4uLi4uLi4uLi55CiAgICA5OTkwOiAwMCAxMSAxNCAwQSAx
MSA4MiAwQyAwMCA3RiAwMSAwMCAwNCBCMSAwMiAwMSBDMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
OTlBMDogMDAgMDAgMDAgMDAgNzkgMDAgMEMgMDEgMDAgMDAgMDAgMTEgMTQgMEEgMTEgODIgIC4u
Li55Li4uLi4uLi4uLi4KICAgIDk5QjA6IDBDIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAw
IDAwIDAwIDAwIDc5IDAwICAuLi4uLi4uLi4uLi4uLnkuCiAgICA5OUMwOiAxMSAxNCAwQSAxMSA4
MiAwQyAwMCA3RiAwOCAxOCAwNCBCMyAwMiAwMSBDMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
OTlEMDogMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgMDAgMDAgMDAgMDAgIC4u
LnkuLi4uLi4uLi4uLi4KICAgIDk5RTA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDc5IDAwIDBD
IDIxIDAyIDAwIDAwIDBDICAuLi4uLi4uLnkuLiEuLi4uCiAgICA5OUYwOiA2OSAxMCAwMCAwMCAx
MCA0NyAzNSA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0QyAgaS4uLi5HNVwvLl9TQl9QTAogICAg
OUEwMDogNTQgNDYgNDMgMzAgMzIgNDUgMDggNUYgNTAgNDMgNTQgMTIgMkMgMDIgMTEgMTQgIFRG
QzAyRS5fUENULiwuLi4KICAgIDlBMTA6IDBBIDExIDgyIDBDIDAwIDdGIDQwIDAwIDAwIDYyIDAw
IDAxIEMwIDAwIDAwIDAwICAuLi4uLi5ALi5iLi4uLi4uCiAgICA5QTIwOiAwMCA3OSAwMCAxMSAx
NCAwQSAxMSA4MiAwQyAwMCA3RiA0MCAwMCAwMCA2MyAwMCAgLnkuLi4uLi4uLi5ALi5jLgogICAg
OUEzMDogMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgMDggNUYgNTAgNTMgNTMgMTIgNDYgMDYgIC4u
Li4uLnkuLl9QU1MuRi4KICAgIDlBNDA6IDAzIDEyIDIwIDA2IDBDIDY4IDEwIDAwIDAwIDBDIEIw
IDEzIDAwIDAwIDBDIDAwICAuLiAuLmguLi4uLi4uLi4uCiAgICA5QTUwOiAwMCAwMCAwMCAwQyAw
MCAwMCAwMCAwMCAwQyAwMCAwMCAwMCAwMCAwQyAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
OUE2MDogMDAgMDAgMTIgMjAgMDYgMEMgOTggMDggMDAgMDAgMEMgMDQgMDYgMDAgMDAgMEMgIC4u
LiAuLi4uLi4uLi4uLi4KICAgIDlBNzA6IDAwIDAwIDAwIDAwIDBDIDAwIDAwIDAwIDAwIDBDIDAx
IDAwIDAwIDAwIDBDIDAxICAuLi4uLi4uLi4uLi4uLi4uCiAgICA5QTgwOiAwMCAwMCAwMCAxMiAy
MCAwNiAwQyBEQyAwNSAwMCAwMCAwQyBDRiAwMyAwMCAwMCAgLi4uLiAuLi4uLi4uLi4uLgogICAg
OUE5MDogMEMgMDAgMDAgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMEMgMDIgMDAgMDAgMDAgMEMgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDlBQTA6IDAyIDAwIDAwIDAwIDA4IDU4IDUwIDUzIDUzIDEyIDRC
IDBEIDAzIDEyIDQ3IDA0ICAuLi4uLlhQU1MuSy4uLkcuCiAgICA5QUIwOiAwOCAwQyA2OCAxMCAw
MCAwMCAwQyBCMCAxMyAwMCAwMCAwQyAwMCAwMCAwMCAwMCAgLi5oLi4uLi4uLi4uLi4uLgogICAg
OUFDMDogMEMgMDAgMDAgMDAgMDAgMTEgMEIgMEEgMDggMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDlBRDA6IDAwIDExIDBCIDBBIDA4IDAwIDAwIDAwIDAwIDAwIDAw
IDAwIDAwIDExIDBCIDBBICAuLi4uLi4uLi4uLi4uLi4uCiAgICA5QUUwOiAwOCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAxMSAwQiAwQSAwOCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
OUFGMDogMDAgMDAgMDAgMDAgMDAgMTIgNDcgMDQgMDggMEMgOTggMDggMDAgMDAgMEMgMDQgIC4u
Li4uLkcuLi4uLi4uLi4KICAgIDlCMDA6IDA2IDAwIDAwIDBDIDAwIDAwIDAwIDAwIDBDIDAwIDAw
IDAwIDAwIDExIDBCIDBBICAuLi4uLi4uLi4uLi4uLi4uCiAgICA5QjEwOiAwOCAwMSAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAxMSAwQiAwQSAwOCAwMSAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
OUIyMDogMDAgMDAgMDAgMDAgMDAgMTEgMEIgMEEgMDggMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDlCMzA6IDAwIDExIDBCIDBBIDA4IDAwIDAwIDAwIDAwIDAwIDAw
IDAwIDAwIDEyIDQ3IDA0ICAuLi4uLi4uLi4uLi4uLkcuCiAgICA5QjQwOiAwOCAwQyBEQyAwNSAw
MCAwMCAwQyBDRiAwMyAwMCAwMCAwQyAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
OUI1MDogMEMgMDAgMDAgMDAgMDAgMTEgMEIgMEEgMDggMDIgMDAgMDAgMDAgMDAgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDlCNjA6IDAwIDExIDBCIDBBIDA4IDAyIDAwIDAwIDAwIDAwIDAw
IDAwIDAwIDExIDBCIDBBICAuLi4uLi4uLi4uLi4uLi4uCiAgICA5QjcwOiAwOCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAxMSAwQiAwQSAwOCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
OUI4MDogMDAgMDAgMDAgMDAgMDAgMDggNUYgNTAgNTMgNDQgMTIgMTggMDEgMTIgMTUgMDUgIC4u
Li4uLl9QU0QuLi4uLi4KICAgIDlCOTA6IDBBIDA1IDBBIDAwIDBDIDE3IDAwIDAwIDAwIDBDIEZF
IDAwIDAwIDAwIDBDIDAyICAuLi4uLi4uLi4uLi4uLi4uCiAgICA5QkEwOiAwMCAwMCAwMCAwOCA1
MCA1MCA0MyA1NiAwQSAwMCAxNCAwQiA1RiA1MCA1MCA0MyAgLi4uLlBQQ1YuLi4uX1BQQwogICAg
OUJCMDogMDAgQTQgNTAgNTAgNDMgNTYgMDggNUYgNDMgNTAgNDMgMTIgNDAgMTkgMTcgMEEgIC4u
UFBDVi5fQ1BDLkAuLi4KICAgIDlCQzA6IDE3IDBBIDAzIDExIDE0IDBBIDExIDgyIDBDIDAwIDdG
IDA4IDE4IDA0IEIwIDAyICAuLi4uLi4uLi4uLi4uLi4uCiAgICA5QkQwOiAwMSBDMCAwMCAwMCAw
MCAwMCA3OSAwMCAxMSAxNCAwQSAxMSA4MiAwQyAwMCA3RiAgLi4uLi4ueS4uLi4uLi4uLgogICAg
OUJFMDogMDggMTAgMDQgQjAgMDIgMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgIC4u
Li4uLi4uLi4ueS4uLi4KICAgIDlCRjA6IDExIDgyIDBDIDAwIDdGIDA4IDA4IDA0IEIwIDAyIDAx
IEMwIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA5QzAwOiA3OSAwMCAxMSAxNCAw
QSAxMSA4MiAwQyAwMCA3RiAwOCAwMCAwNCBCMCAwMiAwMSAgeS4uLi4uLi4uLi4uLi4uLgogICAg
OUMxMDogQzAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgMDAgMDAgIC4u
Li4ueS4uLi4uLi4uLi4KICAgIDlDMjA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDc5
IDAwIDExIDE0IDBBIDExICAuLi4uLi4uLi4ueS4uLi4uCiAgICA5QzMwOiA4MiAwQyAwMCA3RiAw
OCAxMCAwNCBCMyAwMiAwMSBDMCAwMCAwMCAwMCAwMCA3OSAgLi4uLi4uLi4uLi4uLi4ueQogICAg
OUM0MDogMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgMDggMDggMDQgQjMgMDIgMDEgQzAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDlDNTA6IDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0IDBBIDExIDgy
IDBDIDAwIDdGIDA4IDAwICAuLi4ueS4uLi4uLi4uLi4uCiAgICA5QzYwOiAwNCBCMyAwMiAwMSBD
MCAwMCAwMCAwMCAwMCA3OSAwMCAxMSAxNCAwQSAxMSA4MiAgLi4uLi4uLi4ueS4uLi4uLgogICAg
OUM3MDogMEMgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgNzkgMDAgIC4u
Li4uLi4uLi4uLi4ueS4KICAgIDlDODA6IDExIDE0IDBBIDExIDgyIDBDIDAwIDAwIDAwIDAwIDAw
IDAwIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA5QzkwOiAwMCAwMCAwMCA3OSAw
MCAxMSAxNCAwQSAxMSA4MiAwQyAwMCAwMCAwMCAwMCAwMCAgLi4ueS4uLi4uLi4uLi4uLgogICAg
OUNBMDogMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgIC4u
Li4uLi4ueS4uLi4uLi4KICAgIDlDQjA6IDAwIDdGIDQwIDAwIDA0IEU3IDAwIDAwIDAwIDAwIDAw
IDAwIDAwIDc5IDAwIDExICAuLkAuLi4uLi4uLi4ueS4uCiAgICA5Q0MwOiAxNCAwQSAxMSA4MiAw
QyAwMCA3RiA0MCAwMCAwNCBFOCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLkAuLi4uLi4uLgogICAg
OUNEMDogMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgMDIgMDAgMDQgQjQgIC4u
eS4uLi4uLi4uLi4uLi4KICAgIDlDRTA6IDAyIDAxIEMwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0
IDBBIDExIDgyIDBDIDAwICAuLi4uLi4ueS4uLi4uLi4uCiAgICA5Q0YwOiA3RiAwMSAwMCAwNCBC
MSAwMiAwMSBDMCAwMCAwMCAwMCAwMCA3OSAwMCAwQyAwMSAgLi4uLi4uLi4uLi4ueS4uLgogICAg
OUQwMDogMDAgMDAgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDlEMTA6IDAwIDAwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0IDBB
IDExIDgyIDBDIDAwIDdGICAuLi4uLi55Li4uLi4uLi4uCiAgICA5RDIwOiAwOCAxOCAwNCBCMyAw
MiAwMSBDMCAwMCAwMCAwMCAwMCA3OSAwMCAxMSAxNCAwQSAgLi4uLi4uLi4uLi55Li4uLgogICAg
OUQzMDogMTEgODIgMEMgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDlENDA6IDc5IDAwIDBDIDIxIDAyIDAwIDAwIDBDIDY5IDEwIDAw
IDAwIDEwIDQ3IDM1IDVDICB5Li4hLi4uLmkuLi4uRzVcCiAgICA5RDUwOiAyRiAwMyA1RiA1MyA0
MiA1RiA1MCA0QyA1NCA0NiA0MyAzMCAzMiA0NiAwOCA1RiAgLy5fU0JfUExURkMwMkYuXwogICAg
OUQ2MDogNTAgNDMgNTQgMTIgMkMgMDIgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgNDAgMDAgIFBD
VC4sLi4uLi4uLi4uQC4KICAgIDlENzA6IDAwIDYyIDAwIDAxIEMwIDAwIDAwIDAwIDAwIDc5IDAw
IDExIDE0IDBBIDExIDgyICAuYi4uLi4uLi55Li4uLi4uCiAgICA5RDgwOiAwQyAwMCA3RiA0MCAw
MCAwMCA2MyAwMCAwMSBDMCAwMCAwMCAwMCAwMCA3OSAwMCAgLi4uQC4uYy4uLi4uLi55LgogICAg
OUQ5MDogMDggNUYgNTAgNTMgNTMgMTIgNDYgMDYgMDMgMTIgMjAgMDYgMEMgNjggMTAgMDAgIC5f
UFNTLkYuLi4gLi5oLi4KICAgIDlEQTA6IDAwIDBDIEIwIDEzIDAwIDAwIDBDIDAwIDAwIDAwIDAw
IDBDIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA5REIwOiAwQyAwMCAwMCAwMCAw
MCAwQyAwMCAwMCAwMCAwMCAxMiAyMCAwNiAwQyA5OCAwOCAgLi4uLi4uLi4uLi4gLi4uLgogICAg
OURDMDogMDAgMDAgMEMgMDQgMDYgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMEMgMDAgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDlERDA6IDAwIDBDIDAxIDAwIDAwIDAwIDBDIDAxIDAwIDAwIDAw
IDEyIDIwIDA2IDBDIERDICAuLi4uLi4uLi4uLi4gLi4uCiAgICA5REUwOiAwNSAwMCAwMCAwQyBD
RiAwMyAwMCAwMCAwQyAwMCAwMCAwMCAwMCAwQyAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
OURGMDogMDAgMDAgMEMgMDIgMDAgMDAgMDAgMEMgMDIgMDAgMDAgMDAgMDggNTggNTAgNTMgIC4u
Li4uLi4uLi4uLi5YUFMKICAgIDlFMDA6IDUzIDEyIDRCIDBEIDAzIDEyIDQ3IDA0IDA4IDBDIDY4
IDEwIDAwIDAwIDBDIEIwICBTLksuLi5HLi4uaC4uLi4uCiAgICA5RTEwOiAxMyAwMCAwMCAwQyAw
MCAwMCAwMCAwMCAwQyAwMCAwMCAwMCAwMCAxMSAwQiAwQSAgLi4uLi4uLi4uLi4uLi4uLgogICAg
OUUyMDogMDggMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMTEgMEIgMEEgMDggMDAgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDlFMzA6IDAwIDAwIDAwIDAwIDAwIDExIDBCIDBBIDA4IDAwIDAw
IDAwIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA5RTQwOiAwMCAxMSAwQiAwQSAw
OCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAxMiA0NyAwNCAgLi4uLi4uLi4uLi4uLi5HLgogICAg
OUU1MDogMDggMEMgOTggMDggMDAgMDAgMEMgMDQgMDYgMDAgMDAgMEMgMDAgMDAgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDlFNjA6IDBDIDAwIDAwIDAwIDAwIDExIDBCIDBBIDA4IDAxIDAw
IDAwIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA5RTcwOiAwMCAxMSAwQiAwQSAw
OCAwMSAwMCAwMCAwMCAwMCAwMCAwMCAwMCAxMSAwQiAwQSAgLi4uLi4uLi4uLi4uLi4uLgogICAg
OUU4MDogMDggMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMTEgMEIgMEEgMDggMDAgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDlFOTA6IDAwIDAwIDAwIDAwIDAwIDEyIDQ3IDA0IDA4IDBDIERD
IDA1IDAwIDAwIDBDIENGICAuLi4uLi5HLi4uLi4uLi4uCiAgICA5RUEwOiAwMyAwMCAwMCAwQyAw
MCAwMCAwMCAwMCAwQyAwMCAwMCAwMCAwMCAxMSAwQiAwQSAgLi4uLi4uLi4uLi4uLi4uLgogICAg
OUVCMDogMDggMDIgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMTEgMEIgMEEgMDggMDIgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDlFQzA6IDAwIDAwIDAwIDAwIDAwIDExIDBCIDBBIDA4IDAwIDAw
IDAwIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA5RUQwOiAwMCAxMSAwQiAwQSAw
OCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwOCA1RiA1MCAgLi4uLi4uLi4uLi4uLi5fUAogICAg
OUVFMDogNTMgNDQgMTIgMTggMDEgMTIgMTUgMDUgMEEgMDUgMEEgMDAgMEMgMTcgMDAgMDAgIFNE
Li4uLi4uLi4uLi4uLi4KICAgIDlFRjA6IDAwIDBDIEZFIDAwIDAwIDAwIDBDIDAyIDAwIDAwIDAw
IDA4IDUwIDUwIDQzIDU2ICAuLi4uLi4uLi4uLi5QUENWCiAgICA5RjAwOiAwQSAwMCAxNCAwQiA1
RiA1MCA1MCA0MyAwMCBBNCA1MCA1MCA0MyA1NiAwOCA1RiAgLi4uLl9QUEMuLlBQQ1YuXwogICAg
OUYxMDogNDMgNTAgNDMgMTIgNDAgMTkgMTcgMEEgMTcgMEEgMDMgMTEgMTQgMEEgMTEgODIgIENQ
Qy5ALi4uLi4uLi4uLi4KICAgIDlGMjA6IDBDIDAwIDdGIDA4IDE4IDA0IEIwIDAyIDAxIEMwIDAw
IDAwIDAwIDAwIDc5IDAwICAuLi4uLi4uLi4uLi4uLnkuCiAgICA5RjMwOiAxMSAxNCAwQSAxMSA4
MiAwQyAwMCA3RiAwOCAxMCAwNCBCMCAwMiAwMSBDMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
OUY0MDogMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgMDggMDggMDQgIC4u
LnkuLi4uLi4uLi4uLi4KICAgIDlGNTA6IEIwIDAyIDAxIEMwIDAwIDAwIDAwIDAwIDc5IDAwIDEx
IDE0IDBBIDExIDgyIDBDICAuLi4uLi4uLnkuLi4uLi4uCiAgICA5RjYwOiAwMCA3RiAwOCAwMCAw
NCBCMCAwMiAwMSBDMCAwMCAwMCAwMCAwMCA3OSAwMCAxMSAgLi4uLi4uLi4uLi4uLnkuLgogICAg
OUY3MDogMTQgMEEgMTEgODIgMEMgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4u
Li4uLi4uLi4uLi4uLi4KICAgIDlGODA6IDAwIDAwIDc5IDAwIDExIDE0IDBBIDExIDgyIDBDIDAw
IDdGIDA4IDEwIDA0IEIzICAuLnkuLi4uLi4uLi4uLi4uCiAgICA5RjkwOiAwMiAwMSBDMCAwMCAw
MCAwMCAwMCA3OSAwMCAxMSAxNCAwQSAxMSA4MiAwQyAwMCAgLi4uLi4uLnkuLi4uLi4uLgogICAg
OUZBMDogN0YgMDggMDggMDQgQjMgMDIgMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgIC4u
Li4uLi4uLi4uLnkuLi4KICAgIDlGQjA6IDBBIDExIDgyIDBDIDAwIDdGIDA4IDAwIDA0IEIzIDAy
IDAxIEMwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA5RkMwOiAwMCA3OSAwMCAxMSAx
NCAwQSAxMSA4MiAwQyAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLnkuLi4uLi4uLi4uLi4uLgogICAg
OUZEMDogMDAgMDAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgMDAgIC4u
Li4uLnkuLi4uLi4uLi4KICAgIDlGRTA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAw
IDc5IDAwIDExIDE0IDBBICAuLi4uLi4uLi4uLnkuLi4uCiAgICA5RkYwOiAxMSA4MiAwQyAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAg
QTAwMDogNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgNDAgMDAgMDQgRTcgMDAgMDAgIHku
Li4uLi4uLi5ALi4uLi4KICAgIEEwMTA6IDAwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0IDBBIDEx
IDgyIDBDIDAwIDdGIDQwICAuLi4uLnkuLi4uLi4uLi5ACiAgICBBMDIwOiAwMCAwNCBFOCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCA3OSAwMCAxMSAxNCAwQSAxMSAgLi4uLi4uLi4uLnkuLi4uLgogICAg
QTAzMDogODIgMEMgMDAgN0YgMDIgMDAgMDQgQjQgMDIgMDEgQzAgMDAgMDAgMDAgMDAgNzkgIC4u
Li4uLi4uLi4uLi4uLnkKICAgIEEwNDA6IDAwIDExIDE0IDBBIDExIDgyIDBDIDAwIDdGIDAxIDAw
IDA0IEIxIDAyIDAxIEMwICAuLi4uLi4uLi4uLi4uLi4uCiAgICBBMDUwOiAwMCAwMCAwMCAwMCA3
OSAwMCAwQyAwMSAwMCAwMCAwMCAxMSAxNCAwQSAxMSA4MiAgLi4uLnkuLi4uLi4uLi4uLgogICAg
QTA2MDogMEMgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgNzkgMDAgIC4u
Li4uLi4uLi4uLi4ueS4KICAgIEEwNzA6IDExIDE0IDBBIDExIDgyIDBDIDAwIDdGIDA4IDE4IDA0
IEIzIDAyIDAxIEMwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICBBMDgwOiAwMCAwMCAwMCA3OSAw
MCAxMSAxNCAwQSAxMSA4MiAwQyAwMCAwMCAwMCAwMCAwMCAgLi4ueS4uLi4uLi4uLi4uLgogICAg
QTA5MDogMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgNzkgMDAgMEMgMjEgMDIgMDAgMDAgMEMgIC4u
Li4uLi4ueS4uIS4uLi4KICAgIEEwQTA6IDY5IDEwIDAwIDAwIDE0IEM5IDM2IDAwIDAwIDRFIDQ2
IDUwIDQzIDAwIDg2IDVDICBpLi4uLi42Li5ORlBDLi5cCiAgICBBMEIwOiAyRiAwMyA1RiA1MyA0
MiA1RiA1MCA0QyA1NCA0NiA0MyAzMCAzMCAzMCAwQSA4NSAgLy5fU0JfUExURkMwMDAuLgogICAg
QTBDMDogODYgNUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAgNEMgNTQgNDYgNDMgMzAgMzAgMzEgIC5c
Ly5fU0JfUExURkMwMDEKICAgIEEwRDA6IDBBIDg1IDg2IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUw
IDRDIDU0IDQ2IDQzIDMwICAuLi5cLy5fU0JfUExURkMwCiAgICBBMEUwOiAzMCAzMiAwQSA4NSA4
NiA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0QyA1NCA0NiAgMDIuLi5cLy5fU0JfUExURgogICAg
QTBGMDogNDMgMzAgMzAgMzMgMEEgODUgODYgNUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAgNEMgIEMw
MDMuLi5cLy5fU0JfUEwKICAgIEExMDA6IDU0IDQ2IDQzIDMwIDMwIDM0IDBBIDg1IDg2IDVDIDJG
IDAzIDVGIDUzIDQyIDVGICBURkMwMDQuLi5cLy5fU0JfCiAgICBBMTEwOiA1MCA0QyA1NCA0NiA0
MyAzMCAzMCAzNSAwQSA4NSA4NiA1QyAyRiAwMyA1RiA1MyAgUExURkMwMDUuLi5cLy5fUwogICAg
QTEyMDogNDIgNUYgNTAgNEMgNTQgNDYgNDMgMzAgMzAgMzYgMEEgODUgODYgNUMgMkYgMDMgIEJf
UExURkMwMDYuLi5cLy4KICAgIEExMzA6IDVGIDUzIDQyIDVGIDUwIDRDIDU0IDQ2IDQzIDMwIDMw
IDM3IDBBIDg1IDg2IDVDICBfU0JfUExURkMwMDcuLi5cCiAgICBBMTQwOiAyRiAwMyA1RiA1MyA0
MiA1RiA1MCA0QyA1NCA0NiA0MyAzMCAzMCAzOCAwQSA4NSAgLy5fU0JfUExURkMwMDguLgogICAg
QTE1MDogODYgNUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAgNEMgNTQgNDYgNDMgMzAgMzAgMzkgIC5c
Ly5fU0JfUExURkMwMDkKICAgIEExNjA6IDBBIDg1IDg2IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUw
IDRDIDU0IDQ2IDQzIDMwICAuLi5cLy5fU0JfUExURkMwCiAgICBBMTcwOiAzMCA0MSAwQSA4NSA4
NiA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0QyA1NCA0NiAgMEEuLi5cLy5fU0JfUExURgogICAg
QTE4MDogNDMgMzAgMzAgNDIgMEEgODUgODYgNUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAgNEMgIEMw
MEIuLi5cLy5fU0JfUEwKICAgIEExOTA6IDU0IDQ2IDQzIDMwIDMwIDQzIDBBIDg1IDg2IDVDIDJG
IDAzIDVGIDUzIDQyIDVGICBURkMwMEMuLi5cLy5fU0JfCiAgICBBMUEwOiA1MCA0QyA1NCA0NiA0
MyAzMCAzMCA0NCAwQSA4NSA4NiA1QyAyRiAwMyA1RiA1MyAgUExURkMwMEQuLi5cLy5fUwogICAg
QTFCMDogNDIgNUYgNTAgNEMgNTQgNDYgNDMgMzAgMzAgNDUgMEEgODUgODYgNUMgMkYgMDMgIEJf
UExURkMwMEUuLi5cLy4KICAgIEExQzA6IDVGIDUzIDQyIDVGIDUwIDRDIDU0IDQ2IDQzIDMwIDMw
IDQ2IDBBIDg1IDg2IDVDICBfU0JfUExURkMwMEYuLi5cCiAgICBBMUQwOiAyRiAwMyA1RiA1MyA0
MiA1RiA1MCA0QyA1NCA0NiA0MyAzMCAzMSAzMCAwQSA4NSAgLy5fU0JfUExURkMwMTAuLgogICAg
QTFFMDogODYgNUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAgNEMgNTQgNDYgNDMgMzAgMzEgMzEgIC5c
Ly5fU0JfUExURkMwMTEKICAgIEExRjA6IDBBIDg1IDg2IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUw
IDRDIDU0IDQ2IDQzIDMwICAuLi5cLy5fU0JfUExURkMwCiAgICBBMjAwOiAzMSAzMiAwQSA4NSA4
NiA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0QyA1NCA0NiAgMTIuLi5cLy5fU0JfUExURgogICAg
QTIxMDogNDMgMzAgMzEgMzMgMEEgODUgODYgNUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAgNEMgIEMw
MTMuLi5cLy5fU0JfUEwKICAgIEEyMjA6IDU0IDQ2IDQzIDMwIDMxIDM0IDBBIDg1IDg2IDVDIDJG
IDAzIDVGIDUzIDQyIDVGICBURkMwMTQuLi5cLy5fU0JfCiAgICBBMjMwOiA1MCA0QyA1NCA0NiA0
MyAzMCAzMSAzNSAwQSA4NSA4NiA1QyAyRiAwMyA1RiA1MyAgUExURkMwMTUuLi5cLy5fUwogICAg
QTI0MDogNDIgNUYgNTAgNEMgNTQgNDYgNDMgMzAgMzEgMzYgMEEgODUgODYgNUMgMkYgMDMgIEJf
UExURkMwMTYuLi5cLy4KICAgIEEyNTA6IDVGIDUzIDQyIDVGIDUwIDRDIDU0IDQ2IDQzIDMwIDMx
IDM3IDBBIDg1IDg2IDVDICBfU0JfUExURkMwMTcuLi5cCiAgICBBMjYwOiAyRiAwMyA1RiA1MyA0
MiA1RiA1MCA0QyA1NCA0NiA0MyAzMCAzMSAzOCAwQSA4NSAgLy5fU0JfUExURkMwMTguLgogICAg
QTI3MDogODYgNUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAgNEMgNTQgNDYgNDMgMzAgMzEgMzkgIC5c
Ly5fU0JfUExURkMwMTkKICAgIEEyODA6IDBBIDg1IDg2IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUw
IDRDIDU0IDQ2IDQzIDMwICAuLi5cLy5fU0JfUExURkMwCiAgICBBMjkwOiAzMSA0MSAwQSA4NSA4
NiA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0QyA1NCA0NiAgMUEuLi5cLy5fU0JfUExURgogICAg
QTJBMDogNDMgMzAgMzEgNDIgMEEgODUgODYgNUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAgNEMgIEMw
MUIuLi5cLy5fU0JfUEwKICAgIEEyQjA6IDU0IDQ2IDQzIDMwIDMxIDQzIDBBIDg1IDg2IDVDIDJG
IDAzIDVGIDUzIDQyIDVGICBURkMwMUMuLi5cLy5fU0JfCiAgICBBMkMwOiA1MCA0QyA1NCA0NiA0
MyAzMCAzMSA0NCAwQSA4NSA4NiA1QyAyRiAwMyA1RiA1MyAgUExURkMwMUQuLi5cLy5fUwogICAg
QTJEMDogNDIgNUYgNTAgNEMgNTQgNDYgNDMgMzAgMzEgNDUgMEEgODUgODYgNUMgMkYgMDMgIEJf
UExURkMwMUUuLi5cLy4KICAgIEEyRTA6IDVGIDUzIDQyIDVGIDUwIDRDIDU0IDQ2IDQzIDMwIDMx
IDQ2IDBBIDg1IDg2IDVDICBfU0JfUExURkMwMUYuLi5cCiAgICBBMkYwOiAyRiAwMyA1RiA1MyA0
MiA1RiA1MCA0QyA1NCA0NiA0MyAzMCAzMiAzMCAwQSA4NSAgLy5fU0JfUExURkMwMjAuLgogICAg
QTMwMDogODYgNUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAgNEMgNTQgNDYgNDMgMzAgMzIgMzEgIC5c
Ly5fU0JfUExURkMwMjEKICAgIEEzMTA6IDBBIDg1IDg2IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUw
IDRDIDU0IDQ2IDQzIDMwICAuLi5cLy5fU0JfUExURkMwCiAgICBBMzIwOiAzMiAzMiAwQSA4NSA4
NiA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0QyA1NCA0NiAgMjIuLi5cLy5fU0JfUExURgogICAg
QTMzMDogNDMgMzAgMzIgMzMgMEEgODUgODYgNUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAgNEMgIEMw
MjMuLi5cLy5fU0JfUEwKICAgIEEzNDA6IDU0IDQ2IDQzIDMwIDMyIDM0IDBBIDg1IDg2IDVDIDJG
IDAzIDVGIDUzIDQyIDVGICBURkMwMjQuLi5cLy5fU0JfCiAgICBBMzUwOiA1MCA0QyA1NCA0NiA0
MyAzMCAzMiAzNSAwQSA4NSA4NiA1QyAyRiAwMyA1RiA1MyAgUExURkMwMjUuLi5cLy5fUwogICAg
QTM2MDogNDIgNUYgNTAgNEMgNTQgNDYgNDMgMzAgMzIgMzYgMEEgODUgODYgNUMgMkYgMDMgIEJf
UExURkMwMjYuLi5cLy4KICAgIEEzNzA6IDVGIDUzIDQyIDVGIDUwIDRDIDU0IDQ2IDQzIDMwIDMy
IDM3IDBBIDg1IDg2IDVDICBfU0JfUExURkMwMjcuLi5cCiAgICBBMzgwOiAyRiAwMyA1RiA1MyA0
MiA1RiA1MCA0QyA1NCA0NiA0MyAzMCAzMiAzOCAwQSA4NSAgLy5fU0JfUExURkMwMjguLgogICAg
QTM5MDogODYgNUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAgNEMgNTQgNDYgNDMgMzAgMzIgMzkgIC5c
Ly5fU0JfUExURkMwMjkKICAgIEEzQTA6IDBBIDg1IDg2IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUw
IDRDIDU0IDQ2IDQzIDMwICAuLi5cLy5fU0JfUExURkMwCiAgICBBM0IwOiAzMiA0MSAwQSA4NSA4
NiA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0QyA1NCA0NiAgMkEuLi5cLy5fU0JfUExURgogICAg
QTNDMDogNDMgMzAgMzIgNDIgMEEgODUgODYgNUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAgNEMgIEMw
MkIuLi5cLy5fU0JfUEwKICAgIEEzRDA6IDU0IDQ2IDQzIDMwIDMyIDQzIDBBIDg1IDg2IDVDIDJG
IDAzIDVGIDUzIDQyIDVGICBURkMwMkMuLi5cLy5fU0JfCiAgICBBM0UwOiA1MCA0QyA1NCA0NiA0
MyAzMCAzMiA0NCAwQSA4NSA4NiA1QyAyRiAwMyA1RiA1MyAgUExURkMwMkQuLi5cLy5fUwogICAg
QTNGMDogNDIgNUYgNTAgNEMgNTQgNDYgNDMgMzAgMzIgNDUgMEEgODUgODYgNUMgMkYgMDMgIEJf
UExURkMwMkUuLi5cLy4KICAgIEE0MDA6IDVGIDUzIDQyIDVGIDUwIDRDIDU0IDQ2IDQzIDMwIDMy
IDQ2IDBBIDg1ICAgICAgICBfU0JfUExURkMwMkYuLgoKU1NEVCBAIDB4MDAwMDAwMDAwMDAwMDAw
MAogICAgMDAwMDogNTMgNTMgNDQgNTQgNkEgMDkgMDAgMDAgMDIgN0QgNDEgNEQgNDQgMDAgMDAg
MDAgIFNTRFRqLi4uLn1BTUQuLi4KICAgIDAwMTA6IDQzIDUwIDREIDREIDUzIDRGIDUzIDQzIDAx
IDAwIDAwIDAwIDQ5IDRFIDU0IDRDICBDUE1NU09TQy4uLi5JTlRMCiAgICAwMDIwOiAzMSAwMyAy
MyAyMCBBMCA0OCA0NSAwMCAxNSA1QyA0RCAzMSAzMSAzNSAwMyAwMCAgMS4jIC5IRS4uXE0xMTUu
LgogICAgMDAzMDogMTUgNUMgNEQgMzEgMzEgMzYgMEUgMDAgMTUgNUMgNEQgMzEgMzEgMzcgMEUg
MDAgIC5cTTExNi4uLlxNMTE3Li4KICAgIDAwNDA6IDE1IDVDIDREIDMxIDMxIDM4IDBFIDAwIDE1
IDVDIDREIDMxIDMxIDM5IDBFIDAwICAuXE0xMTguLi5cTTExOS4uCiAgICAwMDUwOiAxNSA1QyA0
RCAzMSAzMiAzMCAwRSAwMCAxNSA1QyA0RCAzMCAzMyAzNyAwNiAwMCAgLlxNMTIwLi4uXE0wMzcu
LgogICAgMDA2MDogMTUgNUMgNEQgMzIgMzIgMzcgMDYgMDAgMTUgNUMgNEQgMzMgMzIgMzkgMDYg
MDAgIC5cTTIyNy4uLlxNMzI5Li4KICAgIDAwNzA6IDE1IDVDIDREIDMzIDMyIDQxIDA2IDAwIDE1
IDVDIDREIDMzIDMyIDQyIDA2IDAwICAuXE0zMkEuLi5cTTMyQi4uCiAgICAwMDgwOiAxNSA1QyA0
RCAzMyAzMiA0MyAwNiAwMCAxNSA1QyA0RCAzMyAzMyAzMCAwNiAwMCAgLlxNMzJDLi4uXE0zMzAu
LgogICAgMDA5MDogMTUgNUMgNEQgMzAgMzggMzIgMDUgMDAgMTUgNUMgNEQgMzAgMzggMzMgMDUg
MDAgIC5cTTA4Mi4uLlxNMDgzLi4KICAgIDAwQTA6IDE1IDVDIDREIDMwIDM4IDM0IDA1IDAwIDE1
IDVDIDREIDMwIDM4IDM1IDA1IDAwICAuXE0wODQuLi5cTTA4NS4uCiAgICAwMEIwOiAxNSA1QyA0
RCAzMiAzMiAzMSAwNSAwMCAxNSA1QyA0RCAzMCAzOCAzNiAwNSAwMCAgLlxNMjIxLi4uXE0wODYu
LgogICAgMDBDMDogMTUgNUMgNEQgMzIgMzIgMzkgMDUgMDAgMTUgNUMgNEQgMzIgMzMgMzEgMDUg
MDAgIC5cTTIyOS4uLlxNMjMxLi4KICAgIDAwRDA6IDE1IDVDIDREIDMyIDMzIDM1IDA1IDAwIDE1
IDVDIDREIDMyIDMzIDMzIDA1IDAwICAuXE0yMzUuLi5cTTIzMy4uCiAgICAwMEUwOiAxNSA1QyA0
RCAzMCAzOCAzNyAwNSAwMCAxNSA1QyA0RCAzMCAzOCAzOCAwNSAwMCAgLlxNMDg3Li4uXE0wODgu
LgogICAgMDBGMDogMTUgNUMgNEQgMzAgMzggMzkgMDUgMDAgMTUgNUMgNEQgMzAgMzkgMzAgMDUg
MDAgIC5cTTA4OS4uLlxNMDkwLi4KICAgIDAxMDA6IDE1IDVDIDREIDMwIDM5IDMxIDA1IDAwIDE1
IDVDIDREIDMwIDM5IDMyIDA1IDAwICAuXE0wOTEuLi5cTTA5Mi4uCiAgICAwMTEwOiAxNSA1QyA0
RCAzMCAzOSAzMyAwNSAwMCAxNSA1QyA0RCAzMCAzOSAzNCAwNSAwMCAgLlxNMDkzLi4uXE0wOTQu
LgogICAgMDEyMDogMTUgNUMgNEQgMzAgMzkgMzUgMDUgMDAgMTUgNUMgNEQgMzAgMzkgMzYgMDUg
MDAgIC5cTTA5NS4uLlxNMDk2Li4KICAgIDAxMzA6IDE1IDVDIDREIDMwIDM5IDM3IDA1IDAwIDE1
IDVDIDREIDMwIDM5IDM4IDA1IDAwICAuXE0wOTcuLi5cTTA5OC4uCiAgICAwMTQwOiAxNSA1QyA0
RCAzMCAzOSAzOSAwNSAwMCAxNSA1QyA0RCAzMSAzMCAzMCAwNSAwMCAgLlxNMDk5Li4uXE0xMDAu
LgogICAgMDE1MDogMTUgNUMgNEQgMzEgMzAgMzEgMDUgMDAgMTUgNUMgNEQgMzEgMzAgMzIgMDUg
MDAgIC5cTTEwMS4uLlxNMTAyLi4KICAgIDAxNjA6IDE1IDVDIDREIDMxIDMwIDMzIDA1IDAwIDE1
IDVDIDREIDMxIDMwIDM0IDA1IDAwICAuXE0xMDMuLi5cTTEwNC4uCiAgICAwMTcwOiAxNSA1QyA0
RCAzMSAzMCAzNSAwNSAwMCAxNSA1QyA0RCAzMSAzMCAzNiAwNSAwMCAgLlxNMTA1Li4uXE0xMDYu
LgogICAgMDE4MDogMTUgNUMgNEQgMzEgMzAgMzcgMDUgMDAgMTUgNUMgNEQgMzEgMzIgMzggMDUg
MDAgIC5cTTEwNy4uLlxNMTI4Li4KICAgIDAxOTA6IDE1IDVDIDREIDMxIDMwIDM4IDA1IDAwIDE1
IDVDIDREIDMxIDMwIDM5IDA1IDAwICAuXE0xMDguLi5cTTEwOS4uCiAgICAwMUEwOiAxNSA1QyA0
RCAzMSAzMSAzMCAwNSAwMCAxNSA1QyA0RCAzMSAzMiAzMiAwNSAwMCAgLlxNMTEwLi4uXE0xMjIu
LgogICAgMDFCMDogMTUgNUMgNEQgMzEgMzMgMzEgMDUgMDAgMTUgNUMgNEQgMzEgMzMgMzIgMDUg
MDAgIC5cTTEzMS4uLlxNMTMyLi4KICAgIDAxQzA6IDE1IDVDIDREIDMyIDMyIDM2IDA1IDAwIDE1
IDVDIDREIDMxIDMzIDMzIDA1IDAwICAuXE0yMjYuLi5cTTEzMy4uCiAgICAwMUQwOiAxNSA1QyA0
RCAzMSAzMyAzNCAwNSAwMCAxNSA1QyA0RCAzMSAzMyAzNSAwNSAwMCAgLlxNMTM0Li4uXE0xMzUu
LgogICAgMDFFMDogMTUgNUMgNEQgMzEgMzMgMzYgMDUgMDAgMTUgNUMgNEQgMzIgMzIgMzAgMDUg
MDAgIC5cTTEzNi4uLlxNMjIwLi4KICAgIDAxRjA6IDE1IDVDIDREIDMyIDMzIDMyIDA4IDAzIDE1
IDVDIDREIDMwIDM0IDM2IDAxIDAwICAuXE0yMzIuLi5cTTA0Ni4uCiAgICAwMjAwOiAxNSA1QyA0
RCAzMCAzNCAzNyAwMSAwMCAxNSA1QyA0RCAzMCAzNCAzOSAwOCAwMiAgLlxNMDQ3Li4uXE0wNDku
LgogICAgMDIxMDogMTUgNUMgNEQgMzIgMzUgMzEgMDUgMDAgMTUgNUMgNEQgMzMgMzEgMzAgMDUg
MDAgIC5cTTI1MS4uLlxNMzEwLi4KICAgIDAyMjA6IDE1IDVDIDREIDMzIDMxIDQzIDA1IDAwIDE1
IDVDIDREIDMzIDMyIDMwIDA1IDAwICAuXE0zMUMuLi5cTTMyMC4uCiAgICAwMjMwOiAxNSA1QyA0
RCAzMyAzMiAzMSAwNSAwMCAxNSA1QyA0RCAzMyAzMiAzMiAwNSAwMCAgLlxNMzIxLi4uXE0zMjIu
LgogICAgMDI0MDogMTUgNUMgNEQgMzMgMzIgMzMgMDUgMDAgMTUgNUMgNEQgMzMgMzIgMzQgMDUg
MDAgIC5cTTMyMy4uLlxNMzI0Li4KICAgIDAyNTA6IDE1IDVDIDREIDMzIDMyIDM1IDA1IDAwIDE1
IDVDIDREIDMzIDMyIDM2IDA1IDAwICAuXE0zMjUuLi5cTTMyNi4uCiAgICAwMjYwOiAxNSA1QyA0
RCAzMyAzMiAzNyAwNSAwMCAxNSA1QyA0RCAzMyAzMiAzOCAwNSAwMCAgLlxNMzI3Li4uXE0zMjgu
LgogICAgMDI3MDogMTUgNUMgNEQgMzIgMzggMzAgMDUgMDAgMTUgNUMgNEQgMzIgMzkgMzAgMDUg
MDAgIC5cTTI4MC4uLlxNMjkwLi4KICAgIDAyODA6IDE1IDVDIDREIDMzIDM3IDM4IDA1IDAwIDE1
IDVDIDREIDMzIDM3IDM5IDA1IDAwICAuXE0zNzguLi5cTTM3OS4uCiAgICAwMjkwOiAxNSA1QyA0
RCAzMyAzOCAzMCAwNSAwMCAxNSA1QyA0RCAzMyAzOCAzMSAwNSAwMCAgLlxNMzgwLi4uXE0zODEu
LgogICAgMDJBMDogMTUgNUMgNEQgMzMgMzggMzIgMDUgMDAgMTUgNUMgNEQgMzMgMzggMzMgMDUg
MDAgIC5cTTM4Mi4uLlxNMzgzLi4KICAgIDAyQjA6IDE1IDVDIDREIDMzIDM4IDM0IDA1IDAwIDE1
IDVDIDREIDMzIDM4IDM1IDA1IDAwICAuXE0zODQuLi5cTTM4NS4uCiAgICAwMkMwOiAxNSA1QyA0
RCAzMyAzOCAzNiAwNSAwMCAxNSA1QyA0RCAzMyAzOCAzNyAwNSAwMCAgLlxNMzg2Li4uXE0zODcu
LgogICAgMDJEMDogMTUgNUMgNEQgMzMgMzggMzggMDUgMDAgMTUgNUMgNEQgMzMgMzggMzkgMDUg
MDAgIC5cTTM4OC4uLlxNMzg5Li4KICAgIDAyRTA6IDE1IDVDIDREIDMzIDM5IDMwIDA1IDAwIDE1
IDVDIDREIDMzIDM5IDMxIDA1IDAwICAuXE0zOTAuLi5cTTM5MS4uCiAgICAwMkYwOiAxNSA1QyA0
RCAzMyAzOSAzMiAwNSAwMCAxNSA1QyA0RCAzMyAzMyAzMSAwNSAwMCAgLlxNMzkyLi4uXE0zMzEu
LgogICAgMDMwMDogMTUgNUMgNEQgMzYgMzIgMzAgMDUgMDAgMTUgNUMgNEQgMzQgMzAgMzQgMDMg
MDAgIC5cTTYyMC4uLlxNNDA0Li4KICAgIDAzMTA6IDE1IDVDIDREIDM0IDMwIDM4IDA5IDAwIDE1
IDVDIDREIDM0IDMxIDM0IDA1IDAwICAuXE00MDguLi5cTTQxNC4uCiAgICAwMzIwOiAxNSA1QyA0
RCAzNCAzNCAzNCAwNSAwMCAxNSA1QyA0RCAzNCAzNSAzMyAwNSAwMCAgLlxNNDQ0Li4uXE00NTMu
LgogICAgMDMzMDogMTUgNUMgNEQgMzQgMzUgMzQgMDUgMDAgMTUgNUMgNEQgMzQgMzUgMzUgMDUg
MDAgIC5cTTQ1NC4uLlxNNDU1Li4KICAgIDAzNDA6IDE1IDVDIDREIDM0IDM1IDM2IDA1IDAwIDE1
IDVDIDREIDM0IDM1IDM3IDA1IDAwICAuXE00NTYuLi5cTTQ1Ny4uCiAgICAwMzUwOiAxNSA1QyA0
RCAzNCAzNiAzMCAwOCAwNyAxNSA1QyA0RCAzNCAzNCAzOSAwNSAwMCAgLlxNNDYwLi4uXE00NDku
LgogICAgMDM2MDogMTUgNUMgNEQgMzQgNDMgMzAgMDUgMDAgMTUgNUMgNEQgMzIgMzMgNDEgMDUg
MDAgIC5cTTRDMC4uLlxNMjNBLi4KICAgIDAzNzA6IDE1IDVDIDREIDM0IDQ2IDMwIDA1IDAwIDE1
IDVDIDREIDM2IDMxIDMwIDA1IDAwICAuXE00RjAuLi5cTTYxMC4uCiAgICAwMzgwOiAxNSA1QyA0
RCAzMiAzOSA0MSAwNSAwMCAxNSA1QyA0RCAzNiAzMyAzMSAwNSAwMCAgLlxNMjlBLi4uXE02MzEu
LgogICAgMDM5MDogMTUgNUMgNEQgMzYgMzUgMzIgMDUgMDAgMTUgNUMgNEQgMzAgMzUgMzAgMDYg
MDAgIC5cTTY1Mi4uLlxNMDUwLi4KICAgIDAzQTA6IDE1IDVDIDREIDMwIDM1IDMxIDA2IDAwIDE1
IDVDIDREIDMwIDM1IDMyIDA2IDAwICAuXE0wNTEuLi5cTTA1Mi4uCiAgICAwM0IwOiAxNSA1QyA0
RCAzMCAzNSAzMyAwNiAwMCAxNSA1QyA0RCAzMCAzNSAzNCAwNiAwMCAgLlxNMDUzLi4uXE0wNTQu
LgogICAgMDNDMDogMTUgNUMgNEQgMzAgMzUgMzUgMDYgMDAgMTUgNUMgNEQgMzAgMzUgMzYgMDYg
MDAgIC5cTTA1NS4uLlxNMDU2Li4KICAgIDAzRDA6IDE1IDVDIDREIDMwIDM1IDM3IDA2IDAwIDE1
IDVDIDREIDMwIDM1IDM4IDA2IDAwICAuXE0wNTcuLi5cTTA1OC4uCiAgICAwM0UwOiAxNSA1QyA0
RCAzMCAzNSAzOSAwNiAwMCAxNSA1QyA0RCAzMCAzNiAzMiAwNiAwMCAgLlxNMDU5Li4uXE0wNjIu
LgogICAgMDNGMDogMTUgNUMgNEQgMzAgMzYgMzggMDYgMDAgMTUgNUMgNEQgMzAgMzYgMzkgMDYg
MDAgIC5cTTA2OC4uLlxNMDY5Li4KICAgIDA0MDA6IDE1IDVDIDREIDMwIDM3IDMwIDA2IDAwIDE1
IDVDIDREIDMwIDM3IDMxIDA2IDAwICAuXE0wNzAuLi5cTTA3MS4uCiAgICAwNDEwOiAxNSA1QyA0
RCAzMCAzNyAzMiAwNiAwMCAxNSA1QyA0RCAzMCAzNyAzNCAwNiAwMCAgLlxNMDcyLi4uXE0wNzQu
LgogICAgMDQyMDogMTUgNUMgNEQgMzAgMzcgMzUgMDYgMDAgMTUgNUMgNEQgMzAgMzcgMzYgMDYg
MDAgIC5cTTA3NS4uLlxNMDc2Li4KICAgIDA0MzA6IDE1IDVDIDREIDMwIDM3IDM3IDA2IDAwIDE1
IDVDIDREIDMwIDM3IDM4IDA2IDAwICAuXE0wNzcuLi5cTTA3OC4uCiAgICAwNDQwOiAxNSA1QyA0
RCAzMCAzNyAzOSAwNiAwMCAxNSA1QyA0RCAzMCAzOCAzMCAwNiAwMCAgLlxNMDc5Li4uXE0wODAu
LgogICAgMDQ1MDogMTUgNUMgNEQgMzAgMzggMzEgMDYgMDAgMTUgNUMgNEQgMzEgMzIgMzcgMDYg
MDAgIC5cTTA4MS4uLlxNMTI3Li4KICAgIDA0NjA6IDE1IDVDIDQ0IDQ5IDREIDUzIDAxIDAwIDE1
IDVDIDQ0IDQ0IDQ1IDUwIDAxIDAwICAuXERJTVMuLi5cRERFUC4uCiAgICAwNDcwOiAxNSA1QyAy
RSA1RiA1MyA0MiA1RiA0RCAzNiAzMiAzNSAwOCAwMiAxMCA0QyA0RSAgLlwuX1NCX002MjUuLi5M
TgogICAgMDQ4MDogNUMgNUYgNTMgNDIgNUYgMDggNEQgMzYgMzMgMzAgMEIgNTUgNTUgMDggNTUg
MzQgIFxfU0JfLk02MzAuVVUuVTQKICAgIDA0OTA6IDUwIDQzIDBBIEZGIDE0IDQ1IDREIDVGIDRG
IDUzIDQzIDBDIDA4IDREIDUzIDQ0ICBQQy4uLkVNX09TQy4uTVNECiAgICAwNEEwOiA0MiAwMCA4
QSA2OCAwMCA1NSA0OSA0NCAzMCA4QSA2QiAwMCA0MyA0NCA1NyAzMSAgQi4uaC5VSUQwLmsuQ0RX
MQogICAgMDRCMDogQTAgMEUgOTIgOTUgNkEgMEEgMDIgOEEgNkIgMEEgMDQgNDMgNDQgNTcgMzIg
QTAgIC4uLi5qLi4uay4uQ0RXMi4KICAgIDA0QzA6IDBFIDkyIDk1IDZBIDBBIDAzIDhBIDZCIDBB
IDA4IDQzIDQ0IDU3IDMzIEEwIDQ4ICAuLi5qLi4uay4uQ0RXMy5ICiAgICAwNEQwOiAwNCA5MyA2
QSAwMSA0RCAzNCAzNiAzMCAwRCAyMCAyMCA0NiA0NSA0MSAyRCA0MSAgLi5qLk00NjAuICBGRUEt
QQogICAgMDRFMDogNTMgNEMgMkQgNUMgNUYgNTMgNDIgMkUgNUYgNEYgNTMgNDMgMjAgNTUgNTUg
NDkgIFNMLVxfU0IuX09TQyBVVUkKICAgIDA0RjA6IDQ0IDIwIDMwIDc4IDI1IDU4IDIwIDUzIDc0
IDYxIDcyIDc0IDIwIDIwIDQzIDQ0ICBEIDB4JVggU3RhcnQgIENECiAgICAwNTAwOiA1NyAzMSAy
MCAzRCAyMCAzMCA3OCAyNSA1OCAwQSAwMCA1NSA0OSA0NCAzMCA0MyAgVzEgPSAweCVYLi5VSUQw
QwogICAgMDUxMDogNDQgNTcgMzEgMDAgMDAgMDAgMDAgQTEgNEIgMEMgQTAgNEUgMDUgOTMgNkEg
MEEgIERXMS4uLi4uSy4uTi4uai4KICAgIDA1MjA6IDAyIDcwIDQzIDQ0IDU3IDMyIDYyIDREIDM0
IDM2IDMwIDBEIDIwIDIwIDQ2IDQ1ICAucENEVzJiTTQ2MC4gIEZFCiAgICAwNTMwOiA0MSAyRCA0
MSA1MyA0QyAyRCA1QyA1RiA1MyA0MiAyRSA1RiA0RiA1MyA0MyAyMCAgQS1BU0wtXF9TQi5fT1ND
IAogICAgMDU0MDogNTUgNTUgNDkgNDQgMjAgMzAgNzggMjUgNTggMjAgNTMgNzQgNjEgNzIgNzQg
MjAgIFVVSUQgMHglWCBTdGFydCAKICAgIDA1NTA6IDIwIDQzIDQ0IDU3IDMxIDIwIDNEIDIwIDMw
IDc4IDI1IDU4IDIwIDQzIDQ0IDU3ICAgQ0RXMSA9IDB4JVggQ0RXCiAgICAwNTYwOiAzMiAyMCAz
RCAyMCAzMCA3OCAyNSA1OCAwQSAwMCA1NSA0OSA0NCAzMCA0MyA0NCAgMiA9IDB4JVguLlVJRDBD
RAogICAgMDU3MDogNTcgMzEgNDMgNDQgNTcgMzIgMDAgMDAgMDAgQTEgNDkgMDYgNzAgNDMgNDQg
NTcgIFcxQ0RXMi4uLi5JLnBDRFcKICAgIDA1ODA6IDMzIDYzIDREIDM0IDM2IDMwIDBEIDIwIDIw
IDQ2IDQ1IDQxIDJEIDQxIDUzIDRDICAzY000NjAuICBGRUEtQVNMCiAgICAwNTkwOiAyRCA1QyA1
RiA1MyA0MiAyRSA1RiA0RiA1MyA0MyAyMCA1NSA1NSA0OSA0NCAyMCAgLVxfU0IuX09TQyBVVUlE
IAogICAgMDVBMDogMzAgNzggMjUgNTggMjAgNTMgNzQgNjEgNzIgNzQgMjAgMjAgNDMgNDQgNTcg
MzEgIDB4JVggU3RhcnQgIENEVzEKICAgIDA1QjA6IDIwIDNEIDIwIDMwIDc4IDI1IDU4IDIwIDQz
IDQ0IDU3IDMyIDIwIDNEIDIwIDMwICAgPSAweCVYIENEVzIgPSAwCiAgICAwNUMwOiA3OCAyNSA1
OCAyMCA0MyA0NCA1NyAzMyAyMCAzRCAyMCAzMCA3OCAyNSA1OCAwQSAgeCVYIENEVzMgPSAweCVY
LgogICAgMDVEMDogMDAgNTUgNDkgNDQgMzAgNDMgNDQgNTcgMzEgNDMgNDQgNTcgMzIgNDMgNDQg
NTcgIC5VSUQwQ0RXMUNEVzJDRFcKICAgIDA1RTA6IDMzIDAwIDAwIEEwIDQ5IDEwIDkzIDY4IDEx
IDEzIDBBIDEwIDNBIEQxIEEwIDIzICAzLi4uSS4uaC4uLi46Li4jCiAgICAwNUYwOiBBQiAyNiA2
QyA0OCA5QyA1RiAwRiBGQSA1MiA1QSA1NyA1QSBBMCA0MyAwRSA5MyAgLiZsSC5fLi5SWldaLkMu
LgogICAgMDYwMDogNjkgMDEgNzAgMDAgNjUgQTAgMjkgOTIgOTMgNUMgMkUgNUYgNTMgNDIgNUYg
NTUgIGkucC5lLikuLlwuX1NCX1UKICAgIDA2MTA6IDM0IDUwIDQzIDBBIEZGIDdCIDVDIDJFIDVG
IDUzIDQyIDVGIDU1IDM0IDUwIDQzICA0UEMuLntcLl9TQl9VNFBDCiAgICAwNjIwOiAwQSAwRiA2
NSA3QiA2MyAwQyBGMCBGRiBGRiBGRiA2MyA3RCA2MyA2NSA2MyBBMSAgLi5le2MuLi4uLmN9Y2Vj
LgogICAgMDYzMDogNDQgMDggQTAgNDEgMDggOTAgNUIgMTIgNUMgMkUgNUYgNTMgNDIgNUYgNEQg
MzYgIEQuLkEuLlsuXC5fU0JfTTYKICAgIDA2NDA6IDMyIDM1IDAwIDkyIDkzIDREIDM2IDMyIDMw
IDAwIEEwIDQ5IDA2IDkyIDkzIDREICAyNS4uLk02MjAuLkkuLi5NCiAgICAwNjUwOiAzMCAzNCAz
OSA0RCAzNiAzMiAzMCAwQSAxMCAwMCBBMCAyRCA5MyA1QyAyRSA1RiAgMDQ5TTYyMC4uLi4tLlwu
XwogICAgMDY2MDogNTMgNDIgNUYgNEQgMzYgMzMgMzAgMEIgNTUgNTUgNzAgNUMgMkUgNUYgNTMg
NDIgIFNCX002MzAuVVVwXC5fU0IKICAgIDA2NzA6IDVGIDREIDM2IDMyIDM1IDBCIDgwIDAxIDBC
IEU4IDAzIDYxIDcwIDYxIDVDIDJFICBfTTYyNS4uLi4uLmFwYVwuCiAgICAwNjgwOiA1RiA1MyA0
MiA1RiA0RCAzNiAzMyAzMCBBMSAwRCA3MCA1QyAyRSA1RiA1MyA0MiAgX1NCX002MzAuLnBcLl9T
QgogICAgMDY5MDogNUYgNEQgMzYgMzMgMzAgNjEgQTAgMUQgOTMgN0IgNjEgMEEgRkYgMDAgMDAg
N0IgIF9NNjMwYS4uLnthLi4uLnsKICAgIDA2QTA6IDdBIDYxIDBBIDEwIDAwIDBBIDBGIDY1IDdC
IDYzIDBDIEYwIEZGIEZGIEZGIDYzICB6YS4uLi4uZXtjLi4uLi5jCiAgICAwNkIwOiA3RCA2MyA2
NSA2MyBBMCAwRiA5MyA2NSAwMCA3RCA0MyA0NCA1NyAzMSAwQSAwNCAgfWNlYy4uLmUufUNEVzEu
LgogICAgMDZDMDogNDMgNDQgNTcgMzEgQTEgMUIgQTAgMTkgOTIgOTMgNjMgNDMgNDQgNTcgMzMg
NzAgIENEVzEuLi4uLi5jQ0RXM3AKICAgIDA2RDA6IDYzIDQzIDQ0IDU3IDMzIDdEIDQzIDQ0IDU3
IDMxIDBBIDEwIDQzIDQ0IDU3IDMxICBjQ0RXM31DRFcxLi5DRFcxCiAgICAwNkUwOiBBMSAwQyA3
RCA0MyA0NCA1NyAzMSAwQSAwOCA0MyA0NCA1NyAzMSBBMSA0MSAxNyAgLi59Q0RXMS4uQ0RXMS5B
LgogICAgMDZGMDogQTAgNDEgMTYgOTMgNjggMTEgMTMgMEEgMTAgNkUgQjAgMTEgMDggMjcgNEEg
RjkgIC5BLi5oLi4uLm4uLi4nSi4KICAgIDA3MDA6IDQ0IDhEIDYwIDNDIEJCIEMyIDJFIDdCIDQ4
IEEwIDRCIDEzIDkzIDY5IDAxIEEwICBELmA8Li4ue0guSy4uaS4uCiAgICAwNzEwOiA0QyAwNiA5
MCA1QiAxMiA1QyA0NCA0OSA0RCA1MyAwMCA1QiAxMiA1QyA0NCA0NCAgTC4uWy5cRElNUy5bLlxE
RAogICAgMDcyMDogNDUgNTAgMDAgQTAgNDggMDUgOTAgOTMgNUMgNDQgNDQgNDUgNTAgMDEgOTMg
N0IgIEVQLi5ILi4uXERERVAuLnsKICAgIDA3MzA6IDQzIDQ0IDU3IDMyIDBDIDAwIDAwIDA0IDAw
IDAwIDBDIDAwIDAwIDA0IDAwIDREICBDRFcyLi4uLi4uLi4uLi5NCiAgICAwNzQwOiAzNCAzNiAz
MCAwRCAyMCAyMCAyMCAyMCA0NCA2OSA3MyA2MSA2MiA2QyA2NSAyMCAgNDYwLiAgICBEaXNhYmxl
IAogICAgMDc1MDogNTUgNTMgNDIgMzQgMjAgNDEgNDMgNTAgNDkgMjAgNUYgNDQgNDUgNTAgMEEg
MDAgIFVTQjQgQUNQSSBfREVQLi4KICAgIDA3NjA6IDAwIDAwIDAwIDAwIDAwIDAwIDcwIDVDIDQ0
IDQ5IDREIDUzIDYxIDREIDMyIDMzICAuLi4uLi5wXERJTVNhTTIzCiAgICAwNzcwOiAzMiA2MSAw
QSA1NSAwMCA3MCAwMCA1QyA0NCA0NCA0NSA1MCA3RCA2MiAwQSAwNCAgMmEuVS5wLlxEREVQfWIu
LgogICAgMDc4MDogNjIgQTAgMEYgOTMgNEQgNTMgNDQgNDIgMDEgN0IgNjIgMEMgN0YgRkYgRkYg
RkYgIGIuLi5NU0RCLntiLi4uLi4KICAgIDA3OTA6IDYyIEEwIDExIDkyIDkzIDU1IDM0IDUwIDQz
IDBBIEZGIDdEIDYyIDBDIDAwIDAwICBiLi4uLlU0UEMuLn1iLi4uCiAgICAwN0EwOiAwNCAwMCA2
MiBBMSAyRiBBMCAyRCA5MiA5MyA0RCAzNiAzMiAzMCAwMCBBMCAyNCAgLi5iLi8uLS4uTTYyMC4u
JAogICAgMDdCMDogOTIgOTMgNEQgMzAgMzQgMzkgNEQgMzYgMzIgMzAgMEEgMTAgMDAgQTAgMTUg
OTMgIC4uTTA0OU02MjAuLi4uLi4KICAgIDA3QzA6IDREIDMwIDM0IDM5IDREIDM2IDMyIDMwIDBB
IDQ1IDAwIDdCIDYyIDBDIEZGIEZGICBNMDQ5TTYyMC5FLntiLi4uCiAgICAwN0QwOiBGQiBGRiA2
MiBBMCAxOSA5MiA5MyA2MiA0MyA0NCA1NyAzMiA3MCA2MiA0MyA0NCAgLi5iLi4uLmJDRFcycGJD
RAogICAgMDdFMDogNTcgMzIgN0QgNDMgNDQgNTcgMzEgMEEgMTAgNDMgNDQgNTcgMzEgQTAgNDcg
MDUgIFcyfUNEVzEuLkNEVzEuRy4KICAgIDA3RjA6IDkwIDkyIDkzIDdCIDQzIDQ0IDU3IDMxIDAx
IDAwIDAxIDVCIDEyIDVDIDJFIDVGICAuLi57Q0RXMS4uLlsuXC5fCiAgICAwODAwOiA1MyA0MiA1
RiA0RCAzNiAzMiAzNSAwMCBBMCAzQyA5MiA5MyA0RCAzNiAzMiAzMCAgU0JfTTYyNS4uPC4uTTYy
MAogICAgMDgxMDogMDAgQTAgMzMgOTIgOTMgNEQgMzAgMzQgMzkgNEQgMzYgMzIgMzAgMEEgMTAg
MDAgIC4uMy4uTTA0OU02MjAuLi4KICAgIDA4MjA6IDcwIDREIDMwIDM0IDM5IDREIDM2IDMyIDMw
IDBBIDQzIDY0IDcwIDVDIDJFIDVGICBwTTA0OU02MjAuQ2RwXC5fCiAgICAwODMwOiA1MyA0MiA1
RiA0RCAzNiAzMiAzNSA3MiAwQiAwMiAwMSA3OSA2NCAwQSAxMCAwMCAgU0JfTTYyNXIuLi55ZC4u
LgogICAgMDg0MDogMDAgMEIgRTggMDMgNjEgQTEgMEMgN0QgNDMgNDQgNTcgMzEgMEEgMDggNDMg
NDQgIC4uLi5hLi59Q0RXMS4uQ0QKICAgIDA4NTA6IDU3IDMxIEExIDBDIDdEIDQzIDQ0IDU3IDMx
IDBBIDA0IDQzIDQ0IDU3IDMxIEEwICBXMS4ufUNEVzEuLkNEVzEuCiAgICAwODYwOiA0OCAwNCA5
MyA2QSAwMSA0RCAzNCAzNiAzMCAwRCAyMCAyMCA0NiA0NSA0MSAyRCAgSC4uai5NNDYwLiAgRkVB
LQogICAgMDg3MDogNDEgNTMgNEMgMkQgNUMgNUYgNTMgNDIgMkUgNUYgNEYgNTMgNDMgMjAgNTUg
NTUgIEFTTC1cX1NCLl9PU0MgVVUKICAgIDA4ODA6IDQ5IDQ0IDIwIDMwIDc4IDI1IDU4IDIwIDUy
IDY1IDc0IDc1IDcyIDZFIDIwIDQzICBJRCAweCVYIFJldHVybiBDCiAgICAwODkwOiA0NCA1NyAz
MSAyMCAzRCAyMCAzMCA3OCAyNSA1OCAwQSAwMCA1NSA0OSA0NCAzMCAgRFcxID0gMHglWC4uVUlE
MAogICAgMDhBMDogNDMgNDQgNTcgMzEgMDAgMDAgMDAgMDAgQTEgNEYgMEIgQTAgNDggMDUgOTMg
NkEgIENEVzEuLi4uLk8uLkguLmoKICAgIDA4QjA6IDBBIDAyIDREIDM0IDM2IDMwIDBEIDIwIDIw
IDQ2IDQ1IDQxIDJEIDQxIDUzIDRDICAuLk00NjAuICBGRUEtQVNMCiAgICAwOEMwOiAyRCA1QyA1
RiA1MyA0MiAyRSA1RiA0RiA1MyA0MyAyMCA1NSA1NSA0OSA0NCAyMCAgLVxfU0IuX09TQyBVVUlE
IAogICAgMDhEMDogMzAgNzggMjUgNTggMjAgNTIgNjUgNzQgNzUgNzIgNkUgMjAgNDMgNDQgNTcg
MzEgIDB4JVggUmV0dXJuIENEVzEKICAgIDA4RTA6IDIwIDNEIDIwIDMwIDc4IDI1IDU4IDIwIDQz
IDQ0IDU3IDMyIDIwIDNEIDIwIDMwICAgPSAweCVYIENEVzIgPSAwCiAgICAwOEYwOiA3OCAyNSA1
OCAwQSAwMCA1NSA0OSA0NCAzMCA0MyA0NCA1NyAzMSA0MyA0NCA1NyAgeCVYLi5VSUQwQ0RXMUNE
VwogICAgMDkwMDogMzIgMDAgMDAgMDAgQTEgNDMgMDYgNEQgMzQgMzYgMzAgMEQgMjAgMjAgNDYg
NDUgIDIuLi4uQy5NNDYwLiAgRkUKICAgIDA5MTA6IDQxIDJEIDQxIDUzIDRDIDJEIDVDIDVGIDUz
IDQyIDJFIDVGIDRGIDUzIDQzIDIwICBBLUFTTC1cX1NCLl9PU0MgCiAgICAwOTIwOiA1NSA1NSA0
OSA0NCAyMCAzMCA3OCAyNSA1OCAyMCA1MiA2NSA3NCA3NSA3MiA2RSAgVVVJRCAweCVYIFJldHVy
bgogICAgMDkzMDogMjAgNDMgNDQgNTcgMzEgMjAgM0QgMjAgMzAgNzggMjUgNTggMjAgNDMgNDQg
NTcgICBDRFcxID0gMHglWCBDRFcKICAgIDA5NDA6IDMyIDIwIDNEIDIwIDMwIDc4IDI1IDU4IDIw
IDQzIDQ0IDU3IDMzIDIwIDNEIDIwICAyID0gMHglWCBDRFczID0gCiAgICAwOTUwOiAzMCA3OCAy
NSA1OCAwQSAwMCA1NSA0OSA0NCAzMCA0MyA0NCA1NyAzMSA0MyA0NCAgMHglWC4uVUlEMENEVzFD
RAogICAgMDk2MDogNTcgMzIgNDMgNDQgNTcgMzMgMDAgMDAgQTQgNkIgICAgICAgICAgICAgICAg
ICAgIFcyQ0RXMy4uLmsKCkRTRFQgQCAweDAwMDAwMDAwMDAwMDAwMDAKICAgIDAwMDA6IDQ0IDUz
IDQ0IDU0IEY2IEQyIDAwIDAwIDAyIDE0IDQxIDREIDQ0IDIwIDIwIDIwICBEU0RULi4uLi4uQU1E
ICAgCiAgICAwMDEwOiA0MSAyMCA0RCAyMCA0OSAyMCAwMCAwMCAwMSAwMCAwMCAwMCA0OSA0RSA1
NCA0QyAgQSBNIEkgLi4uLi4uSU5UTAogICAgMDAyMDogMzEgMDMgMjMgMjAgQTAgNEQgNTMgMDAg
MTUgNUMgMkYgMDMgNUYgNTMgNDIgNUYgIDEuIyAuTVMuLlwvLl9TQl8KICAgIDAwMzA6IDUwIDQz
IDQ5IDMzIDUwIDRGIDUzIDUzIDA1IDAwIDE1IDVDIDJGIDAzIDVGIDUzICBQQ0kzUE9TUy4uLlwv
Ll9TCiAgICAwMDQwOiA0MiA1RiA1MCA0MyA0OSAzMyA1MCA0RiA1MyA0MyAwNSAwMCAxNSA1QyAy
RiAwMyAgQl9QQ0kzUE9TQy4uLlwvLgogICAgMDA1MDogNUYgNTMgNDIgNUYgNTAgNDMgNDkgMzIg
NTAgNEYgNTMgNTMgMDUgMDAgMTUgNUMgIF9TQl9QQ0kyUE9TUy4uLlwKICAgIDAwNjA6IDJGIDAz
IDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMyIDUwIDRGIDUzIDQzIDA1IDAwICAvLl9TQl9QQ0kyUE9T
Qy4uCiAgICAwMDcwOiAxNSA1QyAyRSA1RiA1MyA0MiA1RiA0MSA1MCA1NCA1MyAwOCAwMSAxNSA1
QyAyRSAgLlwuX1NCX0FQVFMuLi5cLgogICAgMDA4MDogNUYgNTMgNDIgNUYgNDEgNTcgNDEgNEIg
MDggMDEgMTUgNUMgMkYgMDMgNUYgNTMgIF9TQl9BV0FLLi4uXC8uX1MKICAgIDAwOTA6IDQyIDVG
IDUwIDQzIDQ5IDMwIDUwIDRGIDUzIDUzIDA1IDAwIDE1IDVDIDJGIDAzICBCX1BDSTBQT1NTLi4u
XC8uCiAgICAwMEEwOiA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMCA1MCA0RiA1MyA0MyAwNSAwMCAx
NSA1QyAgX1NCX1BDSTBQT1NDLi4uXAogICAgMDBCMDogMkYgMDMgNUYgNTMgNDIgNUYgNTAgNDMg
NDkgMzEgNTAgNEYgNTMgNTMgMDUgMDAgIC8uX1NCX1BDSTFQT1NTLi4KICAgIDAwQzA6IDE1IDVD
IDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMxIDUwIDRGIDUzIDQzICAuXC8uX1NCX1BDSTFQ
T1NDCiAgICAwMEQwOiAwNSAwMCAxNSA1QyA0RCAzMSAzMSAzNSAwMyAwMCAxNSA1QyA0RCAzMSAz
MSAzNiAgLi4uXE0xMTUuLi5cTTExNgogICAgMDBFMDogMEUgMDAgMTUgNUMgNEQgMzEgMzEgMzcg
MEUgMDAgMTUgNUMgNEQgMzEgMzEgMzggIC4uLlxNMTE3Li4uXE0xMTgKICAgIDAwRjA6IDBFIDAw
IDE1IDVDIDREIDMxIDMxIDM5IDBFIDAwIDE1IDVDIDREIDMxIDMyIDMwICAuLi5cTTExOS4uLlxN
MTIwCiAgICAwMTAwOiAwRSAwMCAxNSA1QyA0RCAzMCAzMyAzNyAwNiAwMCAxNSA1QyA0RCAzMiAz
MiAzNyAgLi4uXE0wMzcuLi5cTTIyNwogICAgMDExMDogMDYgMDAgMTUgNUMgNEQgMzMgMzIgMzkg
MDYgMDAgMTUgNUMgNEQgMzMgMzIgNDEgIC4uLlxNMzI5Li4uXE0zMkEKICAgIDAxMjA6IDA2IDAw
IDE1IDVDIDREIDMzIDMyIDQyIDA2IDAwIDE1IDVDIDREIDMzIDMyIDQzICAuLi5cTTMyQi4uLlxN
MzJDCiAgICAwMTMwOiAwNiAwMCAxNSA1QyA0RCAzMyAzMyAzMCAwNiAwMCAxNSA1QyA0RCAzMCAz
OCAzMiAgLi4uXE0zMzAuLi5cTTA4MgogICAgMDE0MDogMDUgMDAgMTUgNUMgNEQgMzAgMzggMzMg
MDUgMDAgMTUgNUMgNEQgMzAgMzggMzQgIC4uLlxNMDgzLi4uXE0wODQKICAgIDAxNTA6IDA1IDAw
IDE1IDVDIDREIDMwIDM4IDM1IDA1IDAwIDE1IDVDIDREIDMyIDMyIDMxICAuLi5cTTA4NS4uLlxN
MjIxCiAgICAwMTYwOiAwNSAwMCAxNSA1QyA0RCAzMCAzOCAzNiAwNSAwMCAxNSA1QyA0RCAzMiAz
MiAzOSAgLi4uXE0wODYuLi5cTTIyOQogICAgMDE3MDogMDUgMDAgMTUgNUMgNEQgMzIgMzMgMzEg
MDUgMDAgMTUgNUMgNEQgMzIgMzMgMzUgIC4uLlxNMjMxLi4uXE0yMzUKICAgIDAxODA6IDA1IDAw
IDE1IDVDIDREIDMyIDMzIDMzIDA1IDAwIDE1IDVDIDREIDMwIDM4IDM3ICAuLi5cTTIzMy4uLlxN
MDg3CiAgICAwMTkwOiAwNSAwMCAxNSA1QyA0RCAzMCAzOCAzOCAwNSAwMCAxNSA1QyA0RCAzMCAz
OCAzOSAgLi4uXE0wODguLi5cTTA4OQogICAgMDFBMDogMDUgMDAgMTUgNUMgNEQgMzAgMzkgMzAg
MDUgMDAgMTUgNUMgNEQgMzAgMzkgMzEgIC4uLlxNMDkwLi4uXE0wOTEKICAgIDAxQjA6IDA1IDAw
IDE1IDVDIDREIDMwIDM5IDMyIDA1IDAwIDE1IDVDIDREIDMwIDM5IDMzICAuLi5cTTA5Mi4uLlxN
MDkzCiAgICAwMUMwOiAwNSAwMCAxNSA1QyA0RCAzMCAzOSAzNCAwNSAwMCAxNSA1QyA0RCAzMCAz
OSAzNSAgLi4uXE0wOTQuLi5cTTA5NQogICAgMDFEMDogMDUgMDAgMTUgNUMgNEQgMzAgMzkgMzYg
MDUgMDAgMTUgNUMgNEQgMzAgMzkgMzcgIC4uLlxNMDk2Li4uXE0wOTcKICAgIDAxRTA6IDA1IDAw
IDE1IDVDIDREIDMwIDM5IDM4IDA1IDAwIDE1IDVDIDREIDMwIDM5IDM5ICAuLi5cTTA5OC4uLlxN
MDk5CiAgICAwMUYwOiAwNSAwMCAxNSA1QyA0RCAzMSAzMCAzMCAwNSAwMCAxNSA1QyA0RCAzMSAz
MCAzMSAgLi4uXE0xMDAuLi5cTTEwMQogICAgMDIwMDogMDUgMDAgMTUgNUMgNEQgMzEgMzAgMzIg
MDUgMDAgMTUgNUMgNEQgMzEgMzAgMzMgIC4uLlxNMTAyLi4uXE0xMDMKICAgIDAyMTA6IDA1IDAw
IDE1IDVDIDREIDMxIDMwIDM0IDA1IDAwIDE1IDVDIDREIDMxIDMwIDM1ICAuLi5cTTEwNC4uLlxN
MTA1CiAgICAwMjIwOiAwNSAwMCAxNSA1QyA0RCAzMSAzMCAzNiAwNSAwMCAxNSA1QyA0RCAzMSAz
MCAzNyAgLi4uXE0xMDYuLi5cTTEwNwogICAgMDIzMDogMDUgMDAgMTUgNUMgNEQgMzEgMzIgMzgg
MDUgMDAgMTUgNUMgNEQgMzEgMzAgMzggIC4uLlxNMTI4Li4uXE0xMDgKICAgIDAyNDA6IDA1IDAw
IDE1IDVDIDREIDMxIDMwIDM5IDA1IDAwIDE1IDVDIDREIDMxIDMxIDMwICAuLi5cTTEwOS4uLlxN
MTEwCiAgICAwMjUwOiAwNSAwMCAxNSA1QyA0RCAzMSAzMiAzMiAwNSAwMCAxNSA1QyA0RCAzMSAz
MyAzMSAgLi4uXE0xMjIuLi5cTTEzMQogICAgMDI2MDogMDUgMDAgMTUgNUMgNEQgMzEgMzMgMzIg
MDUgMDAgMTUgNUMgNEQgMzIgMzIgMzYgIC4uLlxNMTMyLi4uXE0yMjYKICAgIDAyNzA6IDA1IDAw
IDE1IDVDIDREIDMxIDMzIDMzIDA1IDAwIDE1IDVDIDREIDMxIDMzIDM0ICAuLi5cTTEzMy4uLlxN
MTM0CiAgICAwMjgwOiAwNSAwMCAxNSA1QyA0RCAzMSAzMyAzNSAwNSAwMCAxNSA1QyA0RCAzMSAz
MyAzNiAgLi4uXE0xMzUuLi5cTTEzNgogICAgMDI5MDogMDUgMDAgMTUgNUMgNEQgMzIgMzIgMzAg
MDUgMDAgMTUgNUMgNEQgMzAgMzQgMzYgIC4uLlxNMjIwLi4uXE0wNDYKICAgIDAyQTA6IDAxIDAw
IDE1IDVDIDREIDMwIDM0IDM3IDAxIDAwIDE1IDVDIDREIDMyIDM1IDMxICAuLi5cTTA0Ny4uLlxN
MjUxCiAgICAwMkIwOiAwNSAwMCAxNSA1QyA0RCAzMyAzMSAzMCAwNSAwMCAxNSA1QyA0RCAzMyAz
MSA0MyAgLi4uXE0zMTAuLi5cTTMxQwogICAgMDJDMDogMDUgMDAgMTUgNUMgNEQgMzMgMzIgMzAg
MDUgMDAgMTUgNUMgNEQgMzMgMzIgMzEgIC4uLlxNMzIwLi4uXE0zMjEKICAgIDAyRDA6IDA1IDAw
IDE1IDVDIDREIDMzIDMyIDMyIDA1IDAwIDE1IDVDIDREIDMzIDMyIDMzICAuLi5cTTMyMi4uLlxN
MzIzCiAgICAwMkUwOiAwNSAwMCAxNSA1QyA0RCAzMyAzMiAzNCAwNSAwMCAxNSA1QyA0RCAzMyAz
MiAzNSAgLi4uXE0zMjQuLi5cTTMyNQogICAgMDJGMDogMDUgMDAgMTUgNUMgNEQgMzMgMzIgMzYg
MDUgMDAgMTUgNUMgNEQgMzMgMzIgMzcgIC4uLlxNMzI2Li4uXE0zMjcKICAgIDAzMDA6IDA1IDAw
IDE1IDVDIDREIDMzIDMyIDM4IDA1IDAwIDE1IDVDIDREIDMyIDM4IDMwICAuLi5cTTMyOC4uLlxN
MjgwCiAgICAwMzEwOiAwNSAwMCAxNSA1QyA0RCAzMiAzOSAzMCAwNSAwMCAxNSA1QyA0RCAzMyAz
NyAzOCAgLi4uXE0yOTAuLi5cTTM3OAogICAgMDMyMDogMDUgMDAgMTUgNUMgNEQgMzMgMzcgMzkg
MDUgMDAgMTUgNUMgNEQgMzMgMzggMzAgIC4uLlxNMzc5Li4uXE0zODAKICAgIDAzMzA6IDA1IDAw
IDE1IDVDIDREIDMzIDM4IDMxIDA1IDAwIDE1IDVDIDREIDMzIDM4IDMyICAuLi5cTTM4MS4uLlxN
MzgyCiAgICAwMzQwOiAwNSAwMCAxNSA1QyA0RCAzMyAzOCAzMyAwNSAwMCAxNSA1QyA0RCAzMyAz
OCAzNCAgLi4uXE0zODMuLi5cTTM4NAogICAgMDM1MDogMDUgMDAgMTUgNUMgNEQgMzMgMzggMzUg
MDUgMDAgMTUgNUMgNEQgMzMgMzggMzYgIC4uLlxNMzg1Li4uXE0zODYKICAgIDAzNjA6IDA1IDAw
IDE1IDVDIDREIDMzIDM4IDM3IDA1IDAwIDE1IDVDIDREIDMzIDM4IDM4ICAuLi5cTTM4Ny4uLlxN
Mzg4CiAgICAwMzcwOiAwNSAwMCAxNSA1QyA0RCAzMyAzOCAzOSAwNSAwMCAxNSA1QyA0RCAzMyAz
OSAzMCAgLi4uXE0zODkuLi5cTTM5MAogICAgMDM4MDogMDUgMDAgMTUgNUMgNEQgMzMgMzkgMzEg
MDUgMDAgMTUgNUMgNEQgMzMgMzkgMzIgIC4uLlxNMzkxLi4uXE0zOTIKICAgIDAzOTA6IDA1IDAw
IDE1IDVDIDREIDMzIDMzIDMxIDA1IDAwIDE1IDVDIDREIDM2IDMyIDMwICAuLi5cTTMzMS4uLlxN
NjIwCiAgICAwM0EwOiAwNSAwMCAxNSA1QyA0RCAzNCAzMCAzNCAwMyAwMCAxNSA1QyA0RCAzNCAz
MCAzOCAgLi4uXE00MDQuLi5cTTQwOAogICAgMDNCMDogMDkgMDAgMTUgNUMgNEQgMzQgMzEgMzQg
MDUgMDAgMTUgNUMgNEQgMzQgMzQgMzQgIC4uLlxNNDE0Li4uXE00NDQKICAgIDAzQzA6IDA1IDAw
IDE1IDVDIDREIDM0IDM1IDMzIDA1IDAwIDE1IDVDIDREIDM0IDM1IDM0ICAuLi5cTTQ1My4uLlxN
NDU0CiAgICAwM0QwOiAwNSAwMCAxNSA1QyA0RCAzNCAzNSAzNSAwNSAwMCAxNSA1QyA0RCAzNCAz
NSAzNiAgLi4uXE00NTUuLi5cTTQ1NgogICAgMDNFMDogMDUgMDAgMTUgNUMgNEQgMzQgMzUgMzcg
MDUgMDAgMTUgNUMgNEQgMzQgMzQgMzkgIC4uLlxNNDU3Li4uXE00NDkKICAgIDAzRjA6IDA1IDAw
IDE1IDVDIDREIDM0IDQzIDMwIDA1IDAwIDE1IDVDIDREIDMyIDMzIDQxICAuLi5cTTRDMC4uLlxN
MjNBCiAgICAwNDAwOiAwNSAwMCAxNSA1QyA0RCAzNCA0NiAzMCAwNSAwMCAxNSA1QyA0RCAzNiAz
MSAzMCAgLi4uXE00RjAuLi5cTTYxMAogICAgMDQxMDogMDUgMDAgMTUgNUMgNEQgMzYgMzAgMzAg
MDggMDIgMTUgNUMgNEQgMzYgMzAgMzEgIC4uLlxNNjAwLi4uXE02MDEKICAgIDA0MjA6IDA4IDA2
IDE1IDVDIDREIDMyIDM5IDQxIDA1IDAwIDE1IDVDIDREIDM2IDMzIDMxICAuLi5cTTI5QS4uLlxN
NjMxCiAgICAwNDMwOiAwNSAwMCAxNSA1QyA0RCAzNiAzNSAzMiAwNSAwMCAxNSA1QyA0RCAzMCAz
NSAzMCAgLi4uXE02NTIuLi5cTTA1MAogICAgMDQ0MDogMDYgMDAgMTUgNUMgNEQgMzAgMzUgMzEg
MDYgMDAgMTUgNUMgNEQgMzAgMzUgMzIgIC4uLlxNMDUxLi4uXE0wNTIKICAgIDA0NTA6IDA2IDAw
IDE1IDVDIDREIDMwIDM1IDMzIDA2IDAwIDE1IDVDIDREIDMwIDM1IDM0ICAuLi5cTTA1My4uLlxN
MDU0CiAgICAwNDYwOiAwNiAwMCAxNSA1QyA0RCAzMCAzNSAzNSAwNiAwMCAxNSA1QyA0RCAzMCAz
NSAzNiAgLi4uXE0wNTUuLi5cTTA1NgogICAgMDQ3MDogMDYgMDAgMTUgNUMgNEQgMzAgMzUgMzcg
MDYgMDAgMTUgNUMgNEQgMzAgMzUgMzggIC4uLlxNMDU3Li4uXE0wNTgKICAgIDA0ODA6IDA2IDAw
IDE1IDVDIDREIDMwIDM1IDM5IDA2IDAwIDE1IDVDIDREIDMwIDM2IDMyICAuLi5cTTA1OS4uLlxN
MDYyCiAgICAwNDkwOiAwNiAwMCAxNSA1QyA0RCAzMCAzNiAzOCAwNiAwMCAxNSA1QyA0RCAzMCAz
NiAzOSAgLi4uXE0wNjguLi5cTTA2OQogICAgMDRBMDogMDYgMDAgMTUgNUMgNEQgMzAgMzcgMzAg
MDYgMDAgMTUgNUMgNEQgMzAgMzcgMzEgIC4uLlxNMDcwLi4uXE0wNzEKICAgIDA0QjA6IDA2IDAw
IDE1IDVDIDREIDMwIDM3IDMyIDA2IDAwIDE1IDVDIDREIDMwIDM3IDM0ICAuLi5cTTA3Mi4uLlxN
MDc0CiAgICAwNEMwOiAwNiAwMCAxNSA1QyA0RCAzMCAzNyAzNSAwNiAwMCAxNSA1QyA0RCAzMCAz
NyAzNiAgLi4uXE0wNzUuLi5cTTA3NgogICAgMDREMDogMDYgMDAgMTUgNUMgNEQgMzAgMzcgMzcg
MDYgMDAgMTUgNUMgNEQgMzAgMzcgMzggIC4uLlxNMDc3Li4uXE0wNzgKICAgIDA0RTA6IDA2IDAw
IDE1IDVDIDREIDMwIDM3IDM5IDA2IDAwIDE1IDVDIDREIDMwIDM4IDMwICAuLi5cTTA3OS4uLlxN
MDgwCiAgICAwNEYwOiAwNiAwMCAxNSA1QyA0RCAzMCAzOCAzMSAwNiAwMCAxNSA1QyA0RCAzMSAz
MiAzNyAgLi4uXE0wODEuLi5cTTEyNwogICAgMDUwMDogMDYgMDAgMTUgNUMgNEQgNTAgNTQgNTMg
MDggMDEgMTUgNUMgNEQgNTcgNDEgNEIgIC4uLlxNUFRTLi4uXE1XQUsKICAgIDA1MTA6IDA4IDAx
IDE1IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMwIDUwIDUwICAuLi5cLy5fU0JfUENJ
MFBQCiAgICAwNTIwOiA0RCA0NSAwOCAwMCAxNSA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0
OSAzMSAgTUUuLi5cLy5fU0JfUENJMQogICAgMDUzMDogNTAgNTAgNEQgNDUgMDggMDAgMTUgNUMg
MkYgMDMgNUYgNTMgNDIgNUYgNTAgNDMgIFBQTUUuLi5cLy5fU0JfUEMKICAgIDA1NDA6IDQ5IDMy
IDUwIDUwIDREIDQ1IDA4IDAwIDE1IDVDIDJGIDAzIDVGIDUzIDQyIDVGICBJMlBQTUUuLi5cLy5f
U0JfCiAgICAwNTUwOiA1MCA0MyA0OSAzMyA1MCA1MCA0RCA0NSAwOCAwMCAxNSA1QyA0MyA1MiA0
MiA0OSAgUENJM1BQTUUuLi5cQ1JCSQogICAgMDU2MDogMDAgMDAgMDggNDUgNEUgNTQgNEIgMEEg
ODcgMDggNDUgNTggNTQgNEIgMEEgQUEgIC4uLkVOVEsuLi5FWFRLLi4KICAgIDA1NzA6IDA4IDQ5
IDRGIDMxIDQyIDBCIDkwIDAyIDA4IDQ5IDRGIDMxIDRDIDBBIDEwIDA4ICAuSU8xQi4uLi5JTzFM
Li4uCiAgICAwNTgwOiA0OSA0RiAzMiA0MiAwQiBBMCAwMiAwOCA0OSA0RiAzMiA0QyAwQSAxMCAw
OCA0OSAgSU8yQi4uLi5JTzJMLi4uSQogICAgMDU5MDogNEYgMzMgNDIgMEIgOTAgMDIgMDggNDkg
NEYgMzMgNEMgMEEgMTAgMDggNDkgNEYgIE8zQi4uLi5JTzNMLi4uSU8KICAgIDA1QTA6IDM0IDQy
IDBCIEEwIDAyIDA4IDQ5IDRGIDM0IDRDIDBBIDEwIDA4IDUzIDUwIDMxICA0Qi4uLi5JTzRMLi4u
U1AxCiAgICAwNUIwOiA0RiAwQSAyRSAwOCA0QiA0MiA0NiA0NyAwMCAwOCA0RCA1MyA0NiA0NyAw
MCAwOCAgTy4uLktCRkcuLk1TRkcuLgogICAgMDVDMDogNDkgNEYgNDUgNTMgMDAgMDggNTAgNDUg
NDIgNEMgMEMgMDAgMDAgMDAgMTAgMDggIElPRVMuLlBFQkwuLi4uLi4KICAgIDA1RDA6IDRFIDQy
IDU0IDUzIDBCIDAwIDUwIDA4IDQzIDUwIDU2IDQ0IDAxIDA4IDUzIDREICBOQlRTLi5QLkNQVkQu
LlNNCiAgICAwNUUwOiA0MiA0MiAwQiAyMCAwQiAwOCA1MyA0RCA0MiA0QyAwQSAyMCAwOCA1MyA0
RCA0MiAgQkIuIC4uU01CTC4gLlNNQgogICAgMDVGMDogMzAgMEIgMDAgMEIgMDggNTMgNEQgNDIg
NEQgMEEgMTAgMDggNTAgNEQgNDIgNTMgIDAuLi4uU01CTS4uLlBNQlMKICAgIDA2MDA6IDBCIDAw
IDA4IDA4IDUwIDREIDRDIDRFIDBBIEEwIDA4IDUzIDREIDQ5IDRGIDBBICAuLi4uUE1MTi4uLlNN
SU8uCiAgICAwNjEwOiBCMiAwOCA0NyA1MCA0MiA1MyAwMCAwOCA0NyA1MCA0QyA0RSAwMCAwOCA0
MSA1MCAgLi5HUEJTLi5HUExOLi5BUAogICAgMDYyMDogNDMgNDIgMEMgMDAgMDAgQzAgRkUgMDgg
NDEgNTAgNDMgNEMgMEIgMDAgMTAgMDggIENCLi4uLi4uQVBDTC4uLi4KICAgIDA2MzA6IDQ4IDUw
IDU0IDQyIDBDIDAwIDAwIEQwIEZFIDA4IDU3IDQ0IDU0IDQyIDAwIDA4ICBIUFRCLi4uLi4uV0RU
Qi4uCiAgICAwNjQwOiA1NyA0NCA1NCA0QyAwMCAwOCA0NyA0OSA0RiA0MiAwQyAwMCAxNSBEOCBG
RSAwOCAgV0RUTC4uR0lPQi4uLi4uLgogICAgMDY1MDogNDkgNEYgNEQgNDIgMEMgMDAgMEQgRDgg
RkUgMDggNTMgNTMgNEQgNDIgMEMgMDAgIElPTUIuLi4uLi5TU01CLi4KICAgIDA2NjA6IDAyIEQ4
IEZFIDA4IDU1IDU0IDQ0IDQyIDAwIDA4IDRFIDQyIDU0IDUwIDBDIDAwICAuLi4uVVREQi4uTkJU
UC4uCiAgICAwNjcwOiAwMCBDMyBGRSAwOCA0MSA1MyA1MyA0MiAwMCAwOCA0MSA0RiA1NCA0MiAw
MCAwOCAgLi4uLkFTU0IuLkFPVEIuLgogICAgMDY4MDogNDEgNDEgNTggNDIgMDAgMDggNTAgNDUg
NDggNTAgMDEgMDggNTMgNDggNTAgNDMgIEFBWEIuLlBFSFAuLlNIUEMKICAgIDA2OTA6IDAxIDA4
IDUwIDQ1IDUwIDREIDAxIDA4IDUwIDQ1IDQ1IDUyIDAxIDA4IDUwIDQ1ICAuLlBFUE0uLlBFRVIu
LlBFCiAgICAwNkEwOiA0MyA1MyAwMSAwOCA0OSA1NCA0QiA0NSAwMCAwOCA1MCA0NSA0MiA1MyAw
QyAwMCAgQ1MuLklUS0UuLlBFQlMuLgogICAgMDZCMDogMDAgMDAgRTAgMDggNTAgNDUgNEMgNEUg
MEMgMDAgMDAgMDAgMTAgMDggNDMgNTMgIC4uLi5QRUxOLi4uLi4uQ1MKICAgIDA2QzA6IDREIDQ5
IDBBIDYxIDA4IDQ0IDUzIDUzIDUwIDAwIDA4IDQ2IDQ4IDUwIDUwIDAxICBNSS5hLkRTU1AuLkZI
UFAuCiAgICAwNkQwOiAwOCA1MyA0RCA0OSA0MSAwQSBCMiAwOCA1MyA0RCA0OSA0MiAwQSBCMyAw
OCA0RiAgLlNNSUEuLi5TTUlCLi4uTwogICAgMDZFMDogNDYgNTMgNTQgMEEgMzUgMDggNTQgNTIg
NTMgNTQgMEEgMDIgMDggNTQgNDMgNEQgIEZTVC41LlRSU1QuLi5UQ00KICAgIDA2RjA6IDQ2IDAw
IDA4IDU0IDREIDQ2IDMxIDAwIDA4IDU0IDREIDQ2IDMyIDAwIDA4IDU0ICBGLi5UTUYxLi5UTUYy
Li5UCiAgICAwNzAwOiA0RCA0NiAzMyAwMCAwOCA1NCA1NCA1MCA0NiAwMSAwOCA0NCA1NCA1MCA1
NCAwMCAgTUYzLi5UVFBGLi5EVFBULgogICAgMDcxMDogMDggNTQgNTQgNDQgNTAgMDAgMDggNTQg
NTAgNEQgNDIgMEMgRkYgRkYgRkYgRkYgIC5UVERQLi5UUE1CLi4uLi4KICAgIDA3MjA6IDA4IDU0
IDUwIDQyIDUzIDBCIDAwIDEwIDA4IDU0IDUwIDREIDQzIDBDIEZGIEZGICAuVFBCUy4uLi5UUE1D
Li4uCiAgICAwNzMwOiBGRiBGRiAwOCA1NCA1MCA0MyA1MyAwQiAwMCAxMCAwOCA1NCA1MCA0RCA0
RCAwQyAgLi4uVFBDUy4uLi5UUE1NLgogICAgMDc0MDogMDAgMDAgRDQgRkUgMDggNDYgNTQgNTAg
NEQgMEMgRkYgRkYgRkYgRkYgMDggNTAgIC4uLi4uRlRQTS4uLi4uLlAKICAgIDA3NTA6IDUwIDQ5
IDREIDBDIDE4IEVBIDQ3IEE5IDA4IDUwIDUwIDQ5IDRDIDBBIDFDIDA4ICBQSU0uLi5HLi5QUElM
Li4uCiAgICAwNzYwOiA0MSA0RCA0NCA1NCAwMCAwOCA1NCA1MCA0RCA0NiAwMCAwOCA1MCA1MCA0
OSA1NiAgQU1EVC4uVFBNRi4uUFBJVgogICAgMDc3MDogMDAgMDggNEQgNDIgNDUgNDMgMDAgMTQg
MjcgNUYgNTAgNDkgNDMgMDEgQTAgMUIgIC4uTUJFQy4uJ19QSUMuLi4KICAgIDA3ODA6IDY4IDVD
IDJFIDVGIDUzIDQyIDVGIDQ0IDUzIDUwIDQ5IDVDIDJGIDAzIDVGIDUzICBoXC5fU0JfRFNQSVwv
Ll9TCiAgICAwNzkwOiA0MiA1RiA1MCA0MyA0OSAzMCA0RSA0MSA1MCA0NSA1MCA1OCA1OCA1OCA2
OCAwOCAgQl9QQ0kwTkFQRVBYWFhoLgogICAgMDdBMDogNTAgNDkgNDMgNEQgMDAgMTQgMUYgNTAg
NTggNTggNTggMDEgQTAgMDkgNjggNzAgIFBJQ00uLi5QWFhYLi4uaHAKICAgIDA3QjA6IDBBIEFB
IDQ0IDQyIDQ3IDM4IEExIDA4IDcwIDBBIEFDIDQ0IDQyIDQ3IDM4IDcwICAuLkRCRzguLnAuLkRC
RzhwCiAgICAwN0MwOiA2OCA1MCA0OSA0MyA0RCAwOCA0RiA1MyA1NiA1MiBGRiAxNCA0NSAyOCA0
RiA1MyAgaFBJQ00uT1NWUi4uRShPUwogICAgMDdEMDogNDYgNEMgMDAgQTAgMEQgOTIgOTMgNEYg
NTMgNTYgNTIgRkYgQTQgNEYgNTMgNTYgIEZMLi4uLi5PU1ZSLi5PU1YKICAgIDA3RTA6IDUyIEEw
IDBFIDkzIDUwIDQ5IDQzIDREIDAwIDcwIDBBIEFDIDQ0IDQyIDQ3IDM4ICBSLi4uUElDTS5wLi5E
Qkc4CiAgICAwN0YwOiA3MCAwQSAwMyA0RiA1MyA1NiA1MiBBMCA0QSAxNiA1QiAxMiA1QyA1RiA0
RiA1MyAgcC4uT1NWUi5KLlsuXF9PUwogICAgMDgwMDogNDkgMDAgQTAgMUEgNUYgNEYgNTMgNDkg
MEQgNTcgNjkgNkUgNjQgNkYgNzcgNzMgIEkuLi5fT1NJLldpbmRvd3MKICAgIDA4MTA6IDIwIDMy
IDMwIDMwIDMxIDAwIDcwIDBBIDA0IDRGIDUzIDU2IDUyIEEwIDFDIDVGICAgMjAwMS5wLi5PU1ZS
Li5fCiAgICAwODIwOiA0RiA1MyA0OSAwRCA1NyA2OSA2RSA2NCA2RiA3NyA3MyAyMCAzMiAzMCAz
MCAzMSAgT1NJLldpbmRvd3MgMjAwMQogICAgMDgzMDogMkUgMzEgMDAgNzAgMEEgMDUgNEYgNTMg
NTYgNTIgQTAgMTUgNUYgNEYgNTMgNDkgIC4xLnAuLk9TVlIuLl9PU0kKICAgIDA4NDA6IDBEIDQ2
IDcyIDY1IDY1IDQyIDUzIDQ0IDAwIDcwIDBBIDA2IDRGIDUzIDU2IDUyICAuRnJlZUJTRC5wLi5P
U1ZSCiAgICAwODUwOiBBMCAxMyA1RiA0RiA1MyA0OSAwRCA0OCA1MCAyRCA1NSA1OCAwMCA3MCAw
QSAwNyAgLi5fT1NJLkhQLVVYLnAuLgogICAgMDg2MDogNEYgNTMgNTYgNTIgQTAgMTUgNUYgNEYg
NTMgNDkgMEQgNEYgNzAgNjUgNkUgNTYgIE9TVlIuLl9PU0kuT3BlblYKICAgIDA4NzA6IDREIDUz
IDAwIDcwIDBBIDA4IDRGIDUzIDU2IDUyIEEwIDFFIDVGIDRGIDUzIDQ5ICBNUy5wLi5PU1ZSLi5f
T1NJCiAgICAwODgwOiAwRCA1NyA2OSA2RSA2NCA2RiA3NyA3MyAyMCAzMiAzMCAzMCAzMSAyMCA1
MyA1MCAgLldpbmRvd3MgMjAwMSBTUAogICAgMDg5MDogMzEgMDAgNzAgMEEgMDkgNEYgNTMgNTYg
NTIgQTAgMUUgNUYgNEYgNTMgNDkgMEQgIDEucC4uT1NWUi4uX09TSS4KICAgIDA4QTA6IDU3IDY5
IDZFIDY0IDZGIDc3IDczIDIwIDMyIDMwIDMwIDMxIDIwIDUzIDUwIDMyICBXaW5kb3dzIDIwMDEg
U1AyCiAgICAwOEIwOiAwMCA3MCAwQSAwQSA0RiA1MyA1NiA1MiBBMCAxRSA1RiA0RiA1MyA0OSAw
RCA1NyAgLnAuLk9TVlIuLl9PU0kuVwogICAgMDhDMDogNjkgNkUgNjQgNkYgNzcgNzMgMjAgMzIg
MzAgMzAgMzEgMjAgNTMgNTAgMzMgMDAgIGluZG93cyAyMDAxIFNQMy4KICAgIDA4RDA6IDcwIDBB
IDBCIDRGIDUzIDU2IDUyIEEwIDFBIDVGIDRGIDUzIDQ5IDBEIDU3IDY5ICBwLi5PU1ZSLi5fT1NJ
LldpCiAgICAwOEUwOiA2RSA2NCA2RiA3NyA3MyAyMCAzMiAzMCAzMCAzNiAwMCA3MCAwQSAwQyA0
RiA1MyAgbmRvd3MgMjAwNi5wLi5PUwogICAgMDhGMDogNTYgNTIgQTAgMUUgNUYgNEYgNTMgNDkg
MEQgNTcgNjkgNkUgNjQgNkYgNzcgNzMgIFZSLi5fT1NJLldpbmRvd3MKICAgIDA5MDA6IDIwIDMy
IDMwIDMwIDM2IDIwIDUzIDUwIDMxIDAwIDcwIDBBIDBEIDRGIDUzIDU2ICAgMjAwNiBTUDEucC4u
T1NWCiAgICAwOTEwOiA1MiBBMCAxQSA1RiA0RiA1MyA0OSAwRCA1NyA2OSA2RSA2NCA2RiA3NyA3
MyAyMCAgUi4uX09TSS5XaW5kb3dzIAogICAgMDkyMDogMzIgMzAgMzAgMzkgMDAgNzAgMEEgMEUg
NEYgNTMgNTYgNTIgQTAgMUEgNUYgNEYgIDIwMDkucC4uT1NWUi4uX08KICAgIDA5MzA6IDUzIDQ5
IDBEIDU3IDY5IDZFIDY0IDZGIDc3IDczIDIwIDMyIDMwIDMxIDMyIDAwICBTSS5XaW5kb3dzIDIw
MTIuCiAgICAwOTQwOiA3MCAwQSAwRiA0RiA1MyA1NiA1MiBBMCAxQSA1RiA0RiA1MyA0OSAwRCA1
NyA2OSAgcC4uT1NWUi4uX09TSS5XaQogICAgMDk1MDogNkUgNjQgNkYgNzcgNzMgMjAgMzIgMzAg
MzEgMzMgMDAgNzAgMEEgMTAgNEYgNTMgIG5kb3dzIDIwMTMucC4uT1MKICAgIDA5NjA6IDU2IDUy
IEExIDQ5IDBFIEEwIDI1IDREIDQzIDU0IDQ4IDVGIDRGIDUzIDVGIDBEICBWUi5JLi4lTUNUSF9P
U18uCiAgICAwOTcwOiA0RCA2OSA2MyA3MiA2RiA3MyA2RiA2NiA3NCAyMCA1NyA2OSA2RSA2NCA2
RiA3NyAgTWljcm9zb2Z0IFdpbmRvdwogICAgMDk4MDogNzMgMjAgNEUgNTQgMDAgNzAgMDAgNEYg
NTMgNTYgNTIgQTAgMjIgNEQgNDMgNTQgIHMgTlQucC5PU1ZSLiJNQ1QKICAgIDA5OTA6IDQ4IDVG
IDRGIDUzIDVGIDBEIDREIDY5IDYzIDcyIDZGIDczIDZGIDY2IDc0IDIwICBIX09TXy5NaWNyb3Nv
ZnQgCiAgICAwOUEwOiA1NyA2OSA2RSA2NCA2RiA3NyA3MyAwMCA3MCAwMSA0RiA1MyA1NiA1MiBB
MCAzOSAgV2luZG93cy5wLk9TVlIuOQogICAgMDlCMDogNEQgNDMgNTQgNDggNUYgNEYgNTMgNUYg
MEQgNEQgNjkgNjMgNzIgNkYgNzMgNkYgIE1DVEhfT1NfLk1pY3Jvc28KICAgIDA5QzA6IDY2IDc0
IDIwIDU3IDY5IDZFIDY0IDZGIDc3IDczIDREIDQ1IDNBIDIwIDREIDY5ICBmdCBXaW5kb3dzTUU6
IE1pCiAgICAwOUQwOiA2QyA2QyA2NSA2RSA2RSA2OSA3NSA2RCAyMCA0NSA2NCA2OSA3NCA2OSA2
RiA2RSAgbGxlbm5pdW0gRWRpdGlvbgogICAgMDlFMDogMDAgNzAgMEEgMDIgNEYgNTMgNTYgNTIg
QTAgMTcgNEQgNDMgNTQgNDggNUYgNEYgIC5wLi5PU1ZSLi5NQ1RIX08KICAgIDA5RjA6IDUzIDVG
IDBEIDRDIDY5IDZFIDc1IDc4IDAwIDcwIDBBIDAzIDRGIDUzIDU2IDUyICBTXy5MaW51eC5wLi5P
U1ZSCiAgICAwQTAwOiBBMCAxOSA0RCA0MyA1NCA0OCA1RiA0RiA1MyA1RiAwRCA0NiA3MiA2NSA2
NSA0MiAgLi5NQ1RIX09TXy5GcmVlQgogICAgMEExMDogNTMgNDQgMDAgNzAgMEEgMDYgNEYgNTMg
NTYgNTIgQTAgMTcgNEQgNDMgNTQgNDggIFNELnAuLk9TVlIuLk1DVEgKICAgIDBBMjA6IDVGIDRG
IDUzIDVGIDBEIDQ4IDUwIDJEIDU1IDU4IDAwIDcwIDBBIDA3IDRGIDUzICBfT1NfLkhQLVVYLnAu
Lk9TCiAgICAwQTMwOiA1NiA1MiBBMCAxOSA0RCA0MyA1NCA0OCA1RiA0RiA1MyA1RiAwRCA0RiA3
MCA2NSAgVlIuLk1DVEhfT1NfLk9wZQogICAgMEE0MDogNkUgNTYgNEQgNTMgMDAgNzAgMEEgMDgg
NEYgNTMgNTYgNTIgQTQgNEYgNTMgNTYgIG5WTVMucC4uT1NWUi5PU1YKICAgIDBBNTA6IDUyIDE0
IDRFIDA0IDREIDQzIDU0IDQ4IDAyIEEwIDA4IDk1IDg3IDY4IDg3IDY5ICBSLk4uTUNUSC4uLi4u
aC5pCiAgICAwQTYwOiBBNCAwMCA3MiA4NyA2OCAwMSA2MCAwOCA0MiA1NSA0NiAzMCAxMSAwMiA2
MCAwOCAgLi5yLmguYC5CVUYwLi5gLgogICAgMEE3MDogNDIgNTUgNDYgMzEgMTEgMDIgNjAgNzAg
NjggNDIgNTUgNDYgMzAgNzAgNjkgNDIgIEJVRjEuLmBwaEJVRjBwaUIKICAgIDBBODA6IDU1IDQ2
IDMxIEEyIDFBIDYwIDc2IDYwIEEwIDE1IDkyIDkzIDgzIDg4IDQyIDU1ICBVRjEuLmB2YC4uLi4u
LkJVCiAgICAwQTkwOiA0NiAzMCA2MCAwMCA4MyA4OCA0MiA1NSA0NiAzMSA2MCAwMCBBNCAwMCBB
NCAwMSAgRjBgLi4uQlVGMWAuLi4uLgogICAgMEFBMDogMDggNTAgNTIgNTcgNTAgMTIgMDQgMDIg
MDAgMDAgMTQgNEIgMDcgNDcgNTAgNTIgIC5QUldQLi4uLi4uSy5HUFIKICAgIDBBQjA6IDU3IDAy
IDcwIDY4IDg4IDUwIDUyIDU3IDUwIDAwIDAwIDcwIDc5IDUzIDUzIDMxICBXLnBoLlBSV1AuLnB5
U1MxCiAgICAwQUMwOiA1RiAwMSAwMCA2MCA3RCA2MCA3OSA1MyA1MyAzMiA1RiAwQSAwMiAwMCA2
MCA3RCAgXy4uYH1geVNTMl8uLi5gfQogICAgMEFEMDogNjAgNzkgNTMgNTMgMzMgNUYgMEEgMDMg
MDAgNjAgN0QgNjAgNzkgNTMgNTMgMzQgIGB5U1MzXy4uLmB9YHlTUzQKICAgIDBBRTA6IDVGIDBB
IDA0IDAwIDYwIEEwIDExIDdCIDc5IDAxIDY5IDAwIDYwIDAwIDcwIDY5ICBfLi4uYC4ue3kuaS5g
LnBpCiAgICAwQUYwOiA4OCA1MCA1MiA1NyA1MCAwMSAwMCBBMSAyOSA3QSA2MCAwMSA2MCBBMCAx
OCA5MSAgLlBSV1AuLi4pemAuYC4uLgogICAgMEIwMDogOTMgNEYgNTMgNDYgNEMgMDEgOTMgNEYg
NTMgNDYgNEMgMEEgMDIgODEgNjAgODggIC5PU0ZMLi5PU0ZMLi4uYC4KICAgIDBCMTA6IDUwIDUy
IDU3IDUwIDAxIDAwIEExIDBBIDgyIDYwIDg4IDUwIDUyIDU3IDUwIDAxICBQUldQLi4uLi5gLlBS
V1AuCiAgICAwQjIwOiAwMCBBNCA1MCA1MiA1NyA1MCAwOCA1NyA0MSA0QiA1MCAxMiAwNCAwMiAw
MCAwMCAgLi5QUldQLldBS1AuLi4uLgogICAgMEIzMDogMTQgMjQgNTUgNTAgNTcgNTAgMDEgQTAg
MTIgODMgODggNTcgNDEgNEIgNTAgMDAgIC4kVVBXUC4uLi4uV0FLUC4KICAgIDBCNDA6IDAwIDcw
IDAwIDg4IDU3IDQxIDRCIDUwIDAxIDAwIEExIDBBIDcwIDY4IDg4IDU3ICAucC4uV0FLUC4uLi5w
aC5XCiAgICAwQjUwOiA0MSA0QiA1MCAwMSAwMCA1QiA4MCA0NCA0NSA0MiAzMCAwMSAwQSA4MCAw
MSA1QiAgQUtQLi5bLkRFQjAuLi4uWwogICAgMEI2MDogODEgMEIgNDQgNDUgNDIgMzAgMDEgNDQg
NDIgNDcgMzggMDggNUIgODAgNDQgNDUgIC4uREVCMC5EQkc4LlsuREUKICAgIDBCNzA6IDQyIDMx
IDAxIDBBIDkwIDBBIDAyIDVCIDgxIDBCIDQ0IDQ1IDQyIDMxIDAyIDQ0ICBCMS4uLi4uWy4uREVC
MS5ECiAgICAwQjgwOiA0MiA0NyAzOSAxMCAwOCA1MyA1MyAzMSA1RiAwMCAwOCA1MyA1MyAzMiA1
RiAwMCAgQkc5Li5TUzFfLi5TUzJfLgogICAgMEI5MDogMDggNTMgNTMgMzMgNUYgMDEgMDggNTMg
NTMgMzQgNUYgMDEgMDggNDkgNEYgNTMgIC5TUzNfLi5TUzRfLi5JT1MKICAgIDBCQTA6IDU0IDBC
IDAxIDAwIDA4IDU0IDRGIDUwIDREIDBDIDAwIDAwIDAwIDAwIDA4IDUyICBULi4uLlRPUE0uLi4u
Li5SCiAgICAwQkIwOiA0RiA0RCA1MyAwQyAwMCAwMCBFMCBGRiAwOCA1NiA0NyA0MSA0NiAwMSA1
QiA4MCAgT01TLi4uLi4uVkdBRi5bLgogICAgMEJDMDogNDQgNDUgNDIgMzIgMDEgMEEgODAgMEEg
MDIgNUIgODEgMEIgNDQgNDUgNDIgMzIgIERFQjIuLi4uLlsuLkRFQjIKICAgIDBCRDA6IDAyIDUw
IDM4IDMwIDQ4IDEwIDA4IDRGIDUzIDU0IDU5IEZGIDVCIDgwIDQxIDQzICAuUDgwSC4uT1NUWS5b
LkFDCiAgICAwQkUwOiA0RCA1MyAwMSAwQSA3MiAwQSAwMiA1QiA4MSAxMCA0MSA0MyA0RCA1MyAw
MSA0MSAgTVMuLnIuLlsuLkFDTVMuQQogICAgMEJGMDogNDMgNEQgNTggMDggNDEgNDMgNEQgNDEg
MDggNUIgODYgMTIgNDEgNDMgNEQgNTggIENNWC5BQ01BLlsuLkFDTVgKICAgIDBDMDA6IDQxIDQz
IDREIDQxIDAxIDAwIDQ4IDVDIDQ5IDREIDQ1IDRFIDA4IDVCIDgwIDUwICBBQ01BLi5IXElNRU4u
Wy5QCiAgICAwQzEwOiA1MyA0RCA0OSAwMSA1MyA0RCA0OSA0RiAwQSAwMiA1QiA4MSAxMCA1MCA1
MyA0RCAgU01JLlNNSU8uLlsuLlBTTQogICAgMEMyMDogNDkgMDEgNDEgNTAgNEQgNDMgMDggNDEg
NTAgNEQgNDQgMDggNUIgODAgNTAgNEQgIEkuQVBNQy5BUE1ELlsuUE0KICAgIDBDMzA6IDUyIDQ3
IDAwIDBDIDAwIDAzIEQ4IEZFIDBCIDAwIDAxIDVCIDgxIDI3IDUwIDREICBSRy4uLi4uLi4uLlsu
J1BNCiAgICAwQzQwOiA1MiA0NyAwMCAwMCAwNiA0OCA1MCA0NSA0RSAwMSAwMCA0OSAyRiA1MCAz
MSA0NSAgUkcuLi5IUEVOLi5JL1AxRQogICAgMEM1MDogNDIgMTAgMDAgNDAgMEYgNTMgNDkgMzMg
NTIgMDEgMDAgNEYgMzcgMDAgMDMgNTIgIEIuLkAuU0kzUi4uTzcuLlIKICAgIDBDNjA6IDUzIDU0
IDU1IDAxIDVCIDgwIDQ3IDUzIDREIDREIDAwIDBDIDAwIDAwIEQ4IEZFICBTVFUuWy5HU01NLi4u
Li4uCiAgICAwQzcwOiAwQiAwMCAxMCA1QiA4MSAzNyA0NyA1MyA0RCA0RCAwMCAwMCA4MCA0NCAw
MSAwMCAgLi4uWy43R1NNTS4uLkQuLgogICAgMEM4MDogMDEgNDMgNEMgNTAgNTMgMDEgMDAgNEUg
MDYgMDAgMDcgNTQgNEQgNTMgNDUgMDEgIC5DTFBTLi5OLi4uVE1TRS4KICAgIDBDOTA6IDAwIDQ4
IDBDIDAwIDAyIDUzIDRDIDUwIDUzIDAyIDAwIDQ0IDg1IDAwIDA2IDUwICAuSC4uLlNMUFMuLkQu
Li5QCiAgICAwQ0EwOiA1NyA0NCA0NSAwMSAwMCA0MSAxNCA0MiA0QyA0RSA0QiAwMiA1QiA4MCA1
MCAzMSAgV0RFLi5BLkJMTksuWy5QMQogICAgMENCMDogNDUgMzAgMDEgNTAgMzEgNDUgNDIgMEEg
MDQgNUIgODEgMUQgNTAgMzEgNDUgMzAgIEUwLlAxRUIuLlsuLlAxRTAKICAgIDBDQzA6IDAxIDAw
IDA4IDAwIDA2IDUwIDQ1IDU3IDUzIDAxIDU3IDUzIDU0IDQxIDAxIDAwICAuLi4uLlBFV1MuV1NU
QS4uCiAgICAwQ0QwOiAwOCAwMCAwNiA1MCA0NSA1NyA0NCAwMSA1QiA4MCA0OSA0RiA0MyA0MyAw
MSA1MCAgLi4uUEVXRC5bLklPQ0MuUAogICAgMENFMDogNEQgNDIgNTMgMEEgODAgNUIgODEgMEYg
NDkgNEYgNDMgNDMgMDEgMDAgMDggMDAgIE1CUy4uWy4uSU9DQy4uLi4KICAgIDBDRjA6IDAyIDUy
IDU0IDQzIDUzIDAxIDE0IDRGIDA2IDUzIDUwIDU0IDUzIDAxIDcwIDY4ICAuUlRDUy4uTy5TUFRT
LnBoCiAgICAwRDAwOiA1MCAzOCAzMCA0OCBBMCAwQiA5MyA2OCAwQSAwMyA3MCAwMSA0MiA0QyA0
RSA0QiAgUDgwSC4uLmguLnAuQkxOSwogICAgMEQxMDogQTAgMTAgOTEgOTMgNjggMEEgMDQgOTMg
NjggMEEgMDUgNzAgMDAgNDIgNEMgNEUgIC4uLi5oLi4uaC4ucC5CTE4KICAgIDBEMjA6IDRCIEEw
IDBCIDkzIDY4IDBBIDAzIDcwIDAwIDUyIDUzIDU0IDU1IDcwIDAxIDQzICBLLi4uaC4ucC5SU1RV
cC5DCiAgICAwRDMwOiA0QyA1MCA1MyA3MCAwMSA1MyA0QyA1MCA1MyA3MCA1MCA0NSA1NyA1MyA1
MCA0NSAgTFBTcC5TTFBTcFBFV1NQRQogICAgMEQ0MDogNTcgNTMgQTAgMEIgOTMgNjggMEEgMDMg
NzAgMDEgNTMgNEMgNTAgNTMgQTAgMTEgIFdTLi4uaC4ucC5TTFBTLi4KICAgIDBENTA6IDkzIDY4
IDBBIDA0IDcwIDAxIDUzIDRDIDUwIDUzIDcwIDAxIDUyIDUzIDU0IDU1ICAuaC4ucC5TTFBTcC5S
U1RVCiAgICAwRDYwOiBBMCAwNSA5MyA2OCAwQSAwNSAxNCA0QiAwNiA1MyA1NyA0MSA0QiAwMSA3
MCAwQSAgLi4uaC4uLksuU1dBSy5wLgogICAgMEQ3MDogMDMgNDIgNEMgNEUgNEIgQTAgMEIgOTMg
NjggMEEgMDMgNzAgMDEgNTIgNTMgNTQgIC5CTE5LLi4uaC4ucC5SU1QKICAgIDBEODA6IDU1IDcw
IDUwIDQ1IDU3IDUzIDUwIDQ1IDU3IDUzIDcwIDAwIDUwIDQ1IDU3IDQ0ICBVcFBFV1NQRVdTcC5Q
RVdECiAgICAwRDkwOiBBMCAwRiA1MCA0OSA0MyA0RCA1QyAyRSA1RiA1MyA0MiA1RiA0NCA1MyA1
MCA0OSAgLi5QSUNNXC5fU0JfRFNQSQogICAgMERBMDogQTAgMEIgNTQgNEQgNTMgNDUgNzAgMDAg
NTQgNEQgNTMgNDUgQTAgMTIgOTMgNjggIC4uVE1TRXAuVE1TRS4uLmgKICAgIDBEQjA6IDBBIDAz
IDg2IDVDIDJFIDVGIDUzIDQyIDVGIDUwIDU3IDUyIDQyIDBBIDAyIEEwICAuLi5cLl9TQl9QV1JC
Li4uCiAgICAwREMwOiAxMiA5MyA2OCAwQSAwNCA4NiA1QyAyRSA1RiA1MyA0MiA1RiA1MCA1NyA1
MiA0MiAgLi5oLi4uXC5fU0JfUFdSQgogICAgMEREMDogMEEgMDIgMTAgMDUgNUYgNDcgNTAgNDUg
MTAgOEQgMjcgMDMgNUYgNTMgNDIgNUYgIC4uLi5fR1BFLi4nLl9TQl8KICAgIDBERTA6IDA4IDUw
IDUyIDUzIDQxIDExIDA5IDBBIDA2IDIzIEIwIENDIDE4IDc5IDAwIDA2ICAuUFJTQS4uLi4jLi4u
eS4uCiAgICAwREYwOiA1MCA1MiA1MyA0MSA1MCA1MiA1MyA0MiAwNiA1MCA1MiA1MyA0MSA1MCA1
MiA1MyAgUFJTQVBSU0IuUFJTQVBSUwogICAgMEUwMDogNDMgMDYgNTAgNTIgNTMgNDEgNTAgNTIg
NTMgNDQgMDYgNTAgNTIgNTMgNDEgNTAgIEMuUFJTQVBSU0QuUFJTQVAKICAgIDBFMTA6IDUyIDUz
IDQ1IDA2IDUwIDUyIDUzIDQxIDUwIDUyIDUzIDQ2IDA2IDUwIDUyIDUzICBSU0UuUFJTQVBSU0Yu
UFJTCiAgICAwRTIwOiA0MSA1MCA1MiA1MyA0NyAwNiA1MCA1MiA1MyA0MSA1MCA1MiA1MyA0OCAw
OCA1MCAgQVBSU0cuUFJTQVBSU0guUAogICAgMEUzMDogNDQgNDUgMzAgMTIgMEUgMDEgMTIgMEIg
MDQgMEIgRkYgRkYgMDAgNEMgNEUgNEIgIERFMC4uLi4uLi4uLi5MTksKICAgIDBFNDA6IDQxIDAw
IDA4IDQxIDUyIDQ1IDMwIDEyIDBDIDAxIDEyIDA5IDA0IDBCIEZGIEZGICBBLi5BUkUwLi4uLi4u
Li4uCiAgICAwRTUwOiAwMCAwMCAwQSA5OCAwOCA1MCA0NCA0NSAzMSAxMiAwRSAwMSAxMiAwQiAw
NCAwQiAgLi4uLi5QREUxLi4uLi4uLgogICAgMEU2MDogRkYgRkYgMDAgNEMgNEUgNEIgNDEgMDAg
MDggNDEgNTIgNDUgMzEgMTIgMEMgMDEgIC4uLkxOS0EuLkFSRTEuLi4KICAgIDBFNzA6IDEyIDA5
IDA0IDBCIEZGIEZGIDAwIDAwIDBBIDk4IDA4IDUwIDQ0IDQ1IDMyIDEyICAuLi4uLi4uLi4uLlBE
RTIuCiAgICAwRTgwOiAwRSAwMSAxMiAwQiAwNCAwQiBGRiBGRiAwMCA0QyA0RSA0QiA0MSAwMCAw
OCA0MSAgLi4uLi4uLi4uTE5LQS4uQQogICAgMEU5MDogNTIgNDUgMzIgMTIgMEMgMDEgMTIgMDkg
MDQgMEIgRkYgRkYgMDAgMDAgMEEgOTggIFJFMi4uLi4uLi4uLi4uLi4KICAgIDBFQTA6IDA4IDUw
IDQ0IDQ1IDMzIDEyIDBFIDAxIDEyIDBCIDA0IDBCIEZGIEZGIDAwIDRDICAuUERFMy4uLi4uLi4u
Li5MCiAgICAwRUIwOiA0RSA0QiA0MSAwMCAwOCA0MSA1MiA0NSAzMyAxMiAwQyAwMSAxMiAwOSAw
NCAwQiAgTktBLi5BUkUzLi4uLi4uLgogICAgMEVDMDogRkYgRkYgMDAgMDAgMEEgOTggMDggNTAg
NDQgNDUgMzQgMTIgMEUgMDEgMTIgMEIgIC4uLi4uLi5QREU0Li4uLi4KICAgIDBFRDA6IDA0IDBC
IEZGIEZGIDAwIDRDIDRFIDRCIDQxIDAwIDA4IDQxIDUyIDQ1IDM0IDEyICAuLi4uLkxOS0EuLkFS
RTQuCiAgICAwRUUwOiAwQyAwMSAxMiAwOSAwNCAwQiBGRiBGRiAwMCAwMCAwQSA5OCAwOCA1MCA0
NCA0NSAgLi4uLi4uLi4uLi4uLlBERQogICAgMEVGMDogMzUgMTIgMEUgMDEgMTIgMEIgMDQgMEIg
RkYgRkYgMDAgNEMgNEUgNEIgNDEgMDAgIDUuLi4uLi4uLi4uTE5LQS4KICAgIDBGMDA6IDA4IDQx
IDUyIDQ1IDM1IDEyIDBDIDAxIDEyIDA5IDA0IDBCIEZGIEZGIDAwIDAwICAuQVJFNS4uLi4uLi4u
Li4uCiAgICAwRjEwOiAwQSA5OCAwOCA1MCA0NCA0NSAzNiAxMiAwRSAwMSAxMiAwQiAwNCAwQiBG
RiBGRiAgLi4uUERFNi4uLi4uLi4uLgogICAgMEYyMDogMDAgNEMgNEUgNEIgNDEgMDAgMDggNDEg
NTIgNDUgMzYgMTIgMEMgMDEgMTIgMDkgIC5MTktBLi5BUkU2Li4uLi4KICAgIDBGMzA6IDA0IDBC
IEZGIEZGIDAwIDAwIDBBIDk4IDA4IDUwIDQ0IDQ1IDM3IDEyIDBFIDAxICAuLi4uLi4uLi5QREU3
Li4uCiAgICAwRjQwOiAxMiAwQiAwNCAwQiBGRiBGRiAwMCA0QyA0RSA0QiA0MSAwMCAwOCA0MSA1
MiA0NSAgLi4uLi4uLkxOS0EuLkFSRQogICAgMEY1MDogMzcgMTIgMEMgMDEgMTIgMDkgMDQgMEIg
RkYgRkYgMDAgMDAgMEEgOTggMDggNTAgIDcuLi4uLi4uLi4uLi4uLlAKICAgIDBGNjA6IDQ0IDQ1
IDM4IDEyIDBFIDAxIDEyIDBCIDA0IDBCIEZGIEZGIDAwIDRDIDRFIDRCICBERTguLi4uLi4uLi4u
TE5LCiAgICAwRjcwOiA0MSAwMCAwOCA0MSA1MiA0NSAzOCAxMiAwQyAwMSAxMiAwOSAwNCAwQiBG
RiBGRiAgQS4uQVJFOC4uLi4uLi4uLgogICAgMEY4MDogMDAgMDAgMEEgOTggMDggNTAgNDQgNDUg
MzkgMTIgMEUgMDEgMTIgMEIgMDQgMEIgIC4uLi4uUERFOS4uLi4uLi4KICAgIDBGOTA6IEZGIEZG
IDAwIDRDIDRFIDRCIDQxIDAwIDA4IDQxIDUyIDQ1IDM5IDEyIDBDIDAxICAuLi5MTktBLi5BUkU5
Li4uCiAgICAwRkEwOiAxMiAwOSAwNCAwQiBGRiBGRiAwMCAwMCAwQSA5OCAwOCA1MCA0NCA0NSA0
MSAxMiAgLi4uLi4uLi4uLi5QREVBLgogICAgMEZCMDogMEUgMDEgMTIgMEIgMDQgMEIgRkYgRkYg
MDAgNEMgNEUgNEIgNDEgMDAgMDggNDEgIC4uLi4uLi4uLkxOS0EuLkEKICAgIDBGQzA6IDUyIDQ1
IDQxIDEyIDBDIDAxIDEyIDA5IDA0IDBCIEZGIEZGIDAwIDAwIDBBIDk4ICBSRUEuLi4uLi4uLi4u
Li4uCiAgICAwRkQwOiAwOCA1MCA0NCA0NSA0MiAxMiAwRSAwMSAxMiAwQiAwNCAwQiBGRiBGRiAw
MCA0QyAgLlBERUIuLi4uLi4uLi4uTAogICAgMEZFMDogNEUgNEIgNDEgMDAgMDggNDEgNTIgNDUg
NDIgMTIgMEMgMDEgMTIgMDkgMDQgMEIgIE5LQS4uQVJFQi4uLi4uLi4KICAgIDBGRjA6IEZGIEZG
IDAwIDAwIDBBIDk4IDA4IDUwIDQ0IDQ1IDQzIDEyIDBFIDAxIDEyIDBCICAuLi4uLi4uUERFQy4u
Li4uCiAgICAxMDAwOiAwNCAwQiBGRiBGRiAwMCA0QyA0RSA0QiA0MSAwMCAwOCA0MSA1MiA0NSA0
MyAxMiAgLi4uLi5MTktBLi5BUkVDLgogICAgMTAxMDogMEMgMDEgMTIgMDkgMDQgMEIgRkYgRkYg
MDAgMDAgMEEgOTggMDggNTAgNDQgNDUgIC4uLi4uLi4uLi4uLi5QREUKICAgIDEwMjA6IDQ0IDEy
IDBFIDAxIDEyIDBCIDA0IDBCIEZGIEZGIDAwIDRDIDRFIDRCIDQxIDAwICBELi4uLi4uLi4uLkxO
S0EuCiAgICAxMDMwOiAwOCA0MSA1MiA0NSA0NCAxMiAwQyAwMSAxMiAwOSAwNCAwQiBGRiBGRiAw
MCAwMCAgLkFSRUQuLi4uLi4uLi4uLgogICAgMTA0MDogMEEgOTggMDggNTAgNDQgNDUgNDUgMTIg
MEUgMDEgMTIgMEIgMDQgMEIgRkYgRkYgIC4uLlBERUUuLi4uLi4uLi4KICAgIDEwNTA6IDAwIDRD
IDRFIDRCIDQxIDAwIDA4IDQxIDUyIDQ1IDQ1IDEyIDBDIDAxIDEyIDA5ICAuTE5LQS4uQVJFRS4u
Li4uCiAgICAxMDYwOiAwNCAwQiBGRiBGRiAwMCAwMCAwQSA5OCAwOCA1MCA0NCA0NSA0NiAxMiAw
RSAwMSAgLi4uLi4uLi4uUERFRi4uLgogICAgMTA3MDogMTIgMEIgMDQgMEIgRkYgRkYgMDAgNEMg
NEUgNEIgNDEgMDAgMDggNDEgNTIgNDUgIC4uLi4uLi5MTktBLi5BUkUKICAgIDEwODA6IDQ2IDEy
IDBDIDAxIDEyIDA5IDA0IDBCIEZGIEZGIDAwIDAwIDBBIDk4IDA4IDUwICBGLi4uLi4uLi4uLi4u
Li5QCiAgICAxMDkwOiA0NCAzMCAzMyAxMiA0MSAxMSAxMyAxMiAwQiAwNCAwQiBGRiBGRiAwMCA0
QyA0RSAgRDAzLkEuLi4uLi4uLi5MTgogICAgMTBBMDogNEIgNDIgMDAgMTIgMEQgMDQgMEMgRkYg
RkYgMDEgMDAgMDAgNEMgNEUgNEIgNDEgIEtCLi4uLi4uLi4uLkxOS0EKICAgIDEwQjA6IDAwIDEy
IDBEIDA0IDBDIEZGIEZGIDAxIDAwIDAxIDRDIDRFIDRCIDQxIDAwIDEyICAuLi4uLi4uLi4uTE5L
QS4uCiAgICAxMEMwOiAwRSAwNCAwQyBGRiBGRiAwMSAwMCAwQSAwMiA0QyA0RSA0QiA0MSAwMCAx
MiAwRSAgLi4uLi4uLi4uTE5LQS4uLgogICAgMTBEMDogMDQgMEMgRkYgRkYgMDEgMDAgMEEgMDMg
NEMgNEUgNEIgNDEgMDAgMTIgMEQgMDQgIC4uLi4uLi4uTE5LQS4uLi4KICAgIDEwRTA6IDBDIEZG
IEZGIDAyIDAwIDAwIDRDIDRFIDRCIDQxIDAwIDEyIDBEIDA0IDBDIEZGICAuLi4uLi5MTktBLi4u
Li4uCiAgICAxMEYwOiBGRiAwMiAwMCAwMSA0QyA0RSA0QiA0MSAwMCAxMiAwRCAwNCAwQyBGRiBG
RiAwMyAgLi4uLkxOS0EuLi4uLi4uLgogICAgMTEwMDogMDAgMDAgNEMgNEUgNEIgNDIgMDAgMTIg
MEQgMDQgMEMgRkYgRkYgMDMgMDAgMDEgIC4uTE5LQi4uLi4uLi4uLi4KICAgIDExMTA6IDRDIDRF
IDRCIDQyIDAwIDEyIDBFIDA0IDBDIEZGIEZGIDAzIDAwIDBBIDAyIDRDICBMTktCLi4uLi4uLi4u
Li5MCiAgICAxMTIwOiA0RSA0QiA0MiAwMCAxMiAwRSAwNCAwQyBGRiBGRiAwMyAwMCAwQSAwMyA0
QyA0RSAgTktCLi4uLi4uLi4uLi5MTgogICAgMTEzMDogNEIgNDIgMDAgMTIgMEQgMDQgMEMgRkYg
RkYgMDQgMDAgMDAgNEMgNEUgNEIgNDIgIEtCLi4uLi4uLi4uLkxOS0IKICAgIDExNDA6IDAwIDEy
IDBEIDA0IDBDIEZGIEZGIDA0IDAwIDAxIDRDIDRFIDRCIDQyIDAwIDEyICAuLi4uLi4uLi4uTE5L
Qi4uCiAgICAxMTUwOiAwRCAwNCAwQyBGRiBGRiAwNSAwMCAwMCA0QyA0RSA0QiA0MyAwMCAxMiAw
RCAwNCAgLi4uLi4uLi5MTktDLi4uLgogICAgMTE2MDogMEMgRkYgRkYgMDUgMDAgMDEgNEMgNEUg
NEIgNDMgMDAgMTIgMEUgMDQgMEMgRkYgIC4uLi4uLkxOS0MuLi4uLi4KICAgIDExNzA6IEZGIDA1
IDAwIDBBIDAyIDRDIDRFIDRCIDQzIDAwIDEyIDBFIDA0IDBDIEZGIEZGICAuLi4uLkxOS0MuLi4u
Li4uCiAgICAxMTgwOiAwNSAwMCAwQSAwMyA0QyA0RSA0QiA0MyAwMCAxMiAwRCAwNCAwQyBGRiBG
RiAwNyAgLi4uLkxOS0MuLi4uLi4uLgogICAgMTE5MDogMDAgMDAgNEMgNEUgNEIgNDQgMDAgMTIg
MEQgMDQgMEMgRkYgRkYgMDcgMDAgMDEgIC4uTE5LRC4uLi4uLi4uLi4KICAgIDExQTA6IDRDIDRF
IDRCIDQ0IDAwIDA4IDQxIDUyIDMwIDMzIDEyIDRCIDBFIDEzIDEyIDA5ICBMTktELi5BUjAzLksu
Li4uCiAgICAxMUIwOiAwNCAwQiBGRiBGRiAwMCAwMCAwQSA3OSAxMiAwQiAwNCAwQyBGRiBGRiAw
MSAwMCAgLi4uLi4uLnkuLi4uLi4uLgogICAgMTFDMDogMDAgMDAgMEEgNzggMTIgMEIgMDQgMEMg
RkYgRkYgMDEgMDAgMDEgMDAgMEEgNzggIC4uLnguLi4uLi4uLi4uLngKICAgIDExRDA6IDEyIDBD
IDA0IDBDIEZGIEZGIDAxIDAwIDBBIDAyIDAwIDBBIDc4IDEyIDBDIDA0ICAuLi4uLi4uLi4uLi54
Li4uCiAgICAxMUUwOiAwQyBGRiBGRiAwMSAwMCAwQSAwMyAwMCAwQSA3OCAxMiAwQiAwNCAwQyBG
RiBGRiAgLi4uLi4uLi4ueC4uLi4uLgogICAgMTFGMDogMDIgMDAgMDAgMDAgMEEgNzggMTIgMEIg
MDQgMEMgRkYgRkYgMDIgMDAgMDEgMDAgIC4uLi4ueC4uLi4uLi4uLi4KICAgIDEyMDA6IDBBIDc4
IDEyIDBCIDA0IDBDIEZGIEZGIDAzIDAwIDAwIDAwIDBBIDc5IDEyIDBCICAueC4uLi4uLi4uLi4u
eS4uCiAgICAxMjEwOiAwNCAwQyBGRiBGRiAwMyAwMCAwMSAwMCAwQSA3OSAxMiAwQyAwNCAwQyBG
RiBGRiAgLi4uLi4uLi4ueS4uLi4uLgogICAgMTIyMDogMDMgMDAgMEEgMDIgMDAgMEEgNzkgMTIg
MEMgMDQgMEMgRkYgRkYgMDMgMDAgMEEgIC4uLi4uLnkuLi4uLi4uLi4KICAgIDEyMzA6IDAzIDAw
IDBBIDc5IDEyIDBCIDA0IDBDIEZGIEZGIDA0IDAwIDAwIDAwIDBBIDc5ICAuLi55Li4uLi4uLi4u
Li55CiAgICAxMjQwOiAxMiAwQiAwNCAwQyBGRiBGRiAwNCAwMCAwMSAwMCAwQSA3OSAxMiAwQiAw
NCAwQyAgLi4uLi4uLi4uLi55Li4uLgogICAgMTI1MDogRkYgRkYgMDUgMDAgMDAgMDAgMEEgN0Eg
MTIgMEIgMDQgMEMgRkYgRkYgMDUgMDAgIC4uLi4uLi56Li4uLi4uLi4KICAgIDEyNjA6IDAxIDAw
IDBBIDdBIDEyIDBDIDA0IDBDIEZGIEZGIDA1IDAwIDBBIDAyIDAwIDBBICAuLi56Li4uLi4uLi4u
Li4uCiAgICAxMjcwOiA3QSAxMiAwQyAwNCAwQyBGRiBGRiAwNSAwMCAwQSAwMyAwMCAwQSA3QSAx
MiAwQiAgei4uLi4uLi4uLi4uLnouLgogICAgMTI4MDogMDQgMEMgRkYgRkYgMDcgMDAgMDAgMDAg
MEEgN0IgMTIgMEIgMDQgMEMgRkYgRkYgIC4uLi4uLi4uLnsuLi4uLi4KICAgIDEyOTA6IDA3IDAw
IDAxIDAwIDBBIDdCIDA4IDUwIDMwIDMyIDM1IDEyIDM0IDA0IDEyIDBCICAuLi4uLnsuUDAyNS40
Li4uCiAgICAxMkEwOiAwNCAwQiBGRiBGRiAwMCA0QyA0RSA0QiA0MSAwMCAxMiAwQiAwNCAwQiBG
RiBGRiAgLi4uLi5MTktBLi4uLi4uLgogICAgMTJCMDogMDEgNEMgNEUgNEIgNDIgMDAgMTIgMEMg
MDQgMEIgRkYgRkYgMEEgMDIgNEMgNEUgIC5MTktCLi4uLi4uLi4uTE4KICAgIDEyQzA6IDRCIDQz
IDAwIDEyIDBDIDA0IDBCIEZGIEZGIDBBIDAzIDRDIDRFIDRCIDQ0IDAwICBLQy4uLi4uLi4uLkxO
S0QuCiAgICAxMkQwOiAwOCA0NyAzMCAzMiAzNSAxMiAyQyAwNCAxMiAwOSAwNCAwQiBGRiBGRiAw
MCAwMCAgLkcwMjUuLC4uLi4uLi4uLgogICAgMTJFMDogMEEgNzggMTIgMDkgMDQgMEIgRkYgRkYg
MDEgMDAgMEEgNzkgMTIgMEEgMDQgMEIgIC54Li4uLi4uLi4ueS4uLi4KICAgIDEyRjA6IEZGIEZG
IDBBIDAyIDAwIDBBIDdBIDEyIDBBIDA0IDBCIEZGIEZGIDBBIDAzIDAwICAuLi4uLi56Li4uLi4u
Li4uCiAgICAxMzAwOiAwQSA3QiAwOCA1MCAzMCAzMiAzNiAxMiAzNCAwNCAxMiAwQiAwNCAwQiBG
RiBGRiAgLnsuUDAyNi40Li4uLi4uLgogICAgMTMxMDogMDAgNEMgNEUgNEIgNDUgMDAgMTIgMEIg
MDQgMEIgRkYgRkYgMDEgNEMgNEUgNEIgIC5MTktFLi4uLi4uLi5MTksKICAgIDEzMjA6IDQ2IDAw
IDEyIDBDIDA0IDBCIEZGIEZGIDBBIDAyIDRDIDRFIDRCIDQ3IDAwIDEyICBGLi4uLi4uLi4uTE5L
Ry4uCiAgICAxMzMwOiAwQyAwNCAwQiBGRiBGRiAwQSAwMyA0QyA0RSA0QiA0OCAwMCAwOCA0NyAz
MCAzMiAgLi4uLi4uLkxOS0guLkcwMgogICAgMTM0MDogMzYgMTIgMkMgMDQgMTIgMDkgMDQgMEIg
RkYgRkYgMDAgMDAgMEEgN0MgMTIgMDkgIDYuLC4uLi4uLi4uLi58Li4KICAgIDEzNTA6IDA0IDBC
IEZGIEZGIDAxIDAwIDBBIDdEIDEyIDBBIDA0IDBCIEZGIEZGIDBBIDAyICAuLi4uLi4ufS4uLi4u
Li4uCiAgICAxMzYwOiAwMCAwQSA3RSAxMiAwQSAwNCAwQiBGRiBGRiAwQSAwMyAwMCAwQSA3RiAw
OCA1MCAgLi5+Li4uLi4uLi4uLi4uUAogICAgMTM3MDogMzAgMzIgMzcgMTIgMzQgMDQgMTIgMEIg
MDQgMEIgRkYgRkYgMDAgNEMgNEUgNEIgIDAyNy40Li4uLi4uLi5MTksKICAgIDEzODA6IDQxIDAw
IDEyIDBCIDA0IDBCIEZGIEZGIDAxIDRDIDRFIDRCIDQyIDAwIDEyIDBDICBBLi4uLi4uLi5MTktC
Li4uCiAgICAxMzkwOiAwNCAwQiBGRiBGRiAwQSAwMiA0QyA0RSA0QiA0MyAwMCAxMiAwQyAwNCAw
QiBGRiAgLi4uLi4uTE5LQy4uLi4uLgogICAgMTNBMDogRkYgMEEgMDMgNEMgNEUgNEIgNDQgMDAg
MDggNDcgMzAgMzIgMzcgMTIgMkMgMDQgIC4uLkxOS0QuLkcwMjcuLC4KICAgIDEzQjA6IDEyIDA5
IDA0IDBCIEZGIEZGIDAwIDAwIDBBIDgwIDEyIDA5IDA0IDBCIEZGIEZGICAuLi4uLi4uLi4uLi4u
Li4uCiAgICAxM0MwOiAwMSAwMCAwQSA4MSAxMiAwQSAwNCAwQiBGRiBGRiAwQSAwMiAwMCAwQSA4
MiAxMiAgLi4uLi4uLi4uLi4uLi4uLgogICAgMTNEMDogMEEgMDQgMEIgRkYgRkYgMEEgMDMgMDAg
MEEgODMgMDggNTAgMzAgMzIgMzggMTIgIC4uLi4uLi4uLi4uUDAyOC4KICAgIDEzRTA6IDM0IDA0
IDEyIDBCIDA0IDBCIEZGIEZGIDAwIDRDIDRFIDRCIDQ1IDAwIDEyIDBCICA0Li4uLi4uLi5MTktF
Li4uCiAgICAxM0YwOiAwNCAwQiBGRiBGRiAwMSA0QyA0RSA0QiA0NiAwMCAxMiAwQyAwNCAwQiBG
RiBGRiAgLi4uLi5MTktGLi4uLi4uLgogICAgMTQwMDogMEEgMDIgNEMgNEUgNEIgNDcgMDAgMTIg
MEMgMDQgMEIgRkYgRkYgMEEgMDMgNEMgIC4uTE5LRy4uLi4uLi4uLkwKICAgIDE0MTA6IDRFIDRC
IDQ4IDAwIDA4IDQ3IDMwIDMyIDM4IDEyIDJDIDA0IDEyIDA5IDA0IDBCICBOS0guLkcwMjguLC4u
Li4uCiAgICAxNDIwOiBGRiBGRiAwMCAwMCAwQSA4NCAxMiAwOSAwNCAwQiBGRiBGRiAwMSAwMCAw
QSA4NSAgLi4uLi4uLi4uLi4uLi4uLgogICAgMTQzMDogMTIgMEEgMDQgMEIgRkYgRkYgMEEgMDIg
MDAgMEEgODYgMTIgMEEgMDQgMEIgRkYgIC4uLi4uLi4uLi4uLi4uLi4KICAgIDE0NDA6IEZGIDBB
IDAzIDAwIDBBIDg3IDA4IDUwIDMwIDMyIDM5IDEyIDM0IDA0IDEyIDBCICAuLi4uLi4uUDAyOS40
Li4uCiAgICAxNDUwOiAwNCAwQiBGRiBGRiAwMCA0QyA0RSA0QiA0MSAwMCAxMiAwQiAwNCAwQiBG
RiBGRiAgLi4uLi5MTktBLi4uLi4uLgogICAgMTQ2MDogMDEgNEMgNEUgNEIgNDIgMDAgMTIgMEMg
MDQgMEIgRkYgRkYgMEEgMDIgNEMgNEUgIC5MTktCLi4uLi4uLi4uTE4KICAgIDE0NzA6IDRCIDQz
IDAwIDEyIDBDIDA0IDBCIEZGIEZGIDBBIDAzIDRDIDRFIDRCIDQ0IDAwICBLQy4uLi4uLi4uLkxO
S0QuCiAgICAxNDgwOiAwOCA0NyAzMCAzMiAzOSAxMiAyQyAwNCAxMiAwOSAwNCAwQiBGRiBGRiAw
MCAwMCAgLkcwMjkuLC4uLi4uLi4uLgogICAgMTQ5MDogMEEgODggMTIgMDkgMDQgMEIgRkYgRkYg
MDEgMDAgMEEgODkgMTIgMEEgMDQgMEIgIC4uLi4uLi4uLi4uLi4uLi4KICAgIDE0QTA6IEZGIEZG
IDBBIDAyIDAwIDBBIDhBIDEyIDBBIDA0IDBCIEZGIEZGIDBBIDAzIDAwICAuLi4uLi4uLi4uLi4u
Li4uCiAgICAxNEIwOiAwQSA4QiAwOCA1MCAzMCAzMiA0MSAxMiAzNCAwNCAxMiAwQiAwNCAwQiBG
RiBGRiAgLi4uUDAyQS40Li4uLi4uLgogICAgMTRDMDogMDAgNEMgNEUgNEIgNDMgMDAgMTIgMEIg
MDQgMEIgRkYgRkYgMDEgNEMgNEUgNEIgIC5MTktDLi4uLi4uLi5MTksKICAgIDE0RDA6IDQ0IDAw
IDEyIDBDIDA0IDBCIEZGIEZGIDBBIDAyIDRDIDRFIDRCIDQxIDAwIDEyICBELi4uLi4uLi4uTE5L
QS4uCiAgICAxNEUwOiAwQyAwNCAwQiBGRiBGRiAwQSAwMyA0QyA0RSA0QiA0MiAwMCAwOCA0NyAz
MCAzMiAgLi4uLi4uLkxOS0IuLkcwMgogICAgMTRGMDogNDEgMTIgMkMgMDQgMTIgMDkgMDQgMEIg
RkYgRkYgMDAgMDAgMEEgOEEgMTIgMDkgIEEuLC4uLi4uLi4uLi4uLi4KICAgIDE1MDA6IDA0IDBC
IEZGIEZGIDAxIDAwIDBBIDhCIDEyIDBBIDA0IDBCIEZGIEZGIDBBIDAyICAuLi4uLi4uLi4uLi4u
Li4uCiAgICAxNTEwOiAwMCAwQSA4OCAxMiAwQSAwNCAwQiBGRiBGRiAwQSAwMyAwMCAwQSA4OSAw
OCA1MCAgLi4uLi4uLi4uLi4uLi4uUAogICAgMTUyMDogMzAgMzIgNDIgMTIgMzQgMDQgMTIgMEIg
MDQgMEIgRkYgRkYgMDAgNEMgNEUgNEIgIDAyQi40Li4uLi4uLi5MTksKICAgIDE1MzA6IDQ3IDAw
IDEyIDBCIDA0IDBCIEZGIEZGIDAxIDRDIDRFIDRCIDQ4IDAwIDEyIDBDICBHLi4uLi4uLi5MTktI
Li4uCiAgICAxNTQwOiAwNCAwQiBGRiBGRiAwQSAwMiA0QyA0RSA0QiA0NSAwMCAxMiAwQyAwNCAw
QiBGRiAgLi4uLi4uTE5LRS4uLi4uLgogICAgMTU1MDogRkYgMEEgMDMgNEMgNEUgNEIgNDYgMDAg
MDggNDcgMzAgMzIgNDIgMTIgMkMgMDQgIC4uLkxOS0YuLkcwMkIuLC4KICAgIDE1NjA6IDEyIDA5
IDA0IDBCIEZGIEZGIDAwIDAwIDBBIDg2IDEyIDA5IDA0IDBCIEZGIEZGICAuLi4uLi4uLi4uLi4u
Li4uCiAgICAxNTcwOiAwMSAwMCAwQSA4NyAxMiAwQSAwNCAwQiBGRiBGRiAwQSAwMiAwMCAwQSA4
NCAxMiAgLi4uLi4uLi4uLi4uLi4uLgogICAgMTU4MDogMEEgMDQgMEIgRkYgRkYgMEEgMDMgMDAg
MEEgODUgMDggNTAgMzAgMzIgNDMgMTIgIC4uLi4uLi4uLi4uUDAyQy4KICAgIDE1OTA6IDM0IDA0
IDEyIDBCIDA0IDBCIEZGIEZGIDAwIDRDIDRFIDRCIDQzIDAwIDEyIDBCICA0Li4uLi4uLi5MTktD
Li4uCiAgICAxNUEwOiAwNCAwQiBGRiBGRiAwMSA0QyA0RSA0QiA0NCAwMCAxMiAwQyAwNCAwQiBG
RiBGRiAgLi4uLi5MTktELi4uLi4uLgogICAgMTVCMDogMEEgMDIgNEMgNEUgNEIgNDEgMDAgMTIg
MEMgMDQgMEIgRkYgRkYgMEEgMDMgNEMgIC4uTE5LQS4uLi4uLi4uLkwKICAgIDE1QzA6IDRFIDRC
IDQyIDAwIDA4IDQ3IDMwIDMyIDQzIDEyIDJDIDA0IDEyIDA5IDA0IDBCICBOS0IuLkcwMkMuLC4u
Li4uCiAgICAxNUQwOiBGRiBGRiAwMCAwMCAwQSA4MiAxMiAwOSAwNCAwQiBGRiBGRiAwMSAwMCAw
QSA4MyAgLi4uLi4uLi4uLi4uLi4uLgogICAgMTVFMDogMTIgMEEgMDQgMEIgRkYgRkYgMEEgMDIg
MDAgMEEgODAgMTIgMEEgMDQgMEIgRkYgIC4uLi4uLi4uLi4uLi4uLi4KICAgIDE1RjA6IEZGIDBB
IDAzIDAwIDBBIDgxIDA4IDUwIDMwIDMyIDQ0IDEyIDM0IDA0IDEyIDBCICAuLi4uLi4uUDAyRC40
Li4uCiAgICAxNjAwOiAwNCAwQiBGRiBGRiAwMCA0QyA0RSA0QiA0NyAwMCAxMiAwQiAwNCAwQiBG
RiBGRiAgLi4uLi5MTktHLi4uLi4uLgogICAgMTYxMDogMDEgNEMgNEUgNEIgNDggMDAgMTIgMEMg
MDQgMEIgRkYgRkYgMEEgMDIgNEMgNEUgIC5MTktILi4uLi4uLi4uTE4KICAgIDE2MjA6IDRCIDQ1
IDAwIDEyIDBDIDA0IDBCIEZGIEZGIDBBIDAzIDRDIDRFIDRCIDQ2IDAwICBLRS4uLi4uLi4uLkxO
S0YuCiAgICAxNjMwOiAwOCA0NyAzMCAzMiA0NCAxMiAyQyAwNCAxMiAwOSAwNCAwQiBGRiBGRiAw
MCAwMCAgLkcwMkQuLC4uLi4uLi4uLgogICAgMTY0MDogMEEgN0UgMTIgMDkgMDQgMEIgRkYgRkYg
MDEgMDAgMEEgN0YgMTIgMEEgMDQgMEIgIC5+Li4uLi4uLi4uLi4uLi4KICAgIDE2NTA6IEZGIEZG
IDBBIDAyIDAwIDBBIDdDIDEyIDBBIDA0IDBCIEZGIEZGIDBBIDAzIDAwICAuLi4uLi58Li4uLi4u
Li4uCiAgICAxNjYwOiAwQSA3RCAwOCA1MCAzMCAzMiA0NSAxMiAzNCAwNCAxMiAwQiAwNCAwQiBG
RiBGRiAgLn0uUDAyRS40Li4uLi4uLgogICAgMTY3MDogMDAgNEMgNEUgNEIgNDMgMDAgMTIgMEIg
MDQgMEIgRkYgRkYgMDEgNEMgNEUgNEIgIC5MTktDLi4uLi4uLi5MTksKICAgIDE2ODA6IDQ0IDAw
IDEyIDBDIDA0IDBCIEZGIEZGIDBBIDAyIDRDIDRFIDRCIDQxIDAwIDEyICBELi4uLi4uLi4uTE5L
QS4uCiAgICAxNjkwOiAwQyAwNCAwQiBGRiBGRiAwQSAwMyA0QyA0RSA0QiA0MiAwMCAwOCA0NyAz
MCAzMiAgLi4uLi4uLkxOS0IuLkcwMgogICAgMTZBMDogNDUgMTIgMkMgMDQgMTIgMDkgMDQgMEIg
RkYgRkYgMDAgMDAgMEEgN0EgMTIgMDkgIEUuLC4uLi4uLi4uLi56Li4KICAgIDE2QjA6IDA0IDBC
IEZGIEZGIDAxIDAwIDBBIDdCIDEyIDBBIDA0IDBCIEZGIEZGIDBBIDAyICAuLi4uLi4uey4uLi4u
Li4uCiAgICAxNkMwOiAwMCAwQSA3OCAxMiAwQSAwNCAwQiBGRiBGRiAwQSAwMyAwMCAwQSA3OSAw
OCA1MCAgLi54Li4uLi4uLi4uLnkuUAogICAgMTZEMDogMzAgMzIgNDYgMTIgMzQgMDQgMTIgMEIg
MDQgMEIgRkYgRkYgMDAgNEMgNEUgNEIgIDAyRi40Li4uLi4uLi5MTksKICAgIDE2RTA6IDQyIDAw
IDEyIDBCIDA0IDBCIEZGIEZGIDAxIDRDIDRFIDRCIDQzIDAwIDEyIDBDICBCLi4uLi4uLi5MTktD
Li4uCiAgICAxNkYwOiAwNCAwQiBGRiBGRiAwQSAwMiA0QyA0RSA0QiA0NCAwMCAxMiAwQyAwNCAw
QiBGRiAgLi4uLi4uTE5LRC4uLi4uLgogICAgMTcwMDogRkYgMEEgMDMgNEMgNEUgNEIgNDEgMDAg
MDggNDcgMzAgMzIgNDYgMTIgMkMgMDQgIC4uLkxOS0EuLkcwMkYuLC4KICAgIDE3MTA6IDEyIDA5
IDA0IDBCIEZGIEZGIDAwIDAwIDBBIDc5IDEyIDA5IDA0IDBCIEZGIEZGICAuLi4uLi4uLi55Li4u
Li4uCiAgICAxNzIwOiAwMSAwMCAwQSA3QSAxMiAwQSAwNCAwQiBGRiBGRiAwQSAwMiAwMCAwQSA3
QiAxMiAgLi4uei4uLi4uLi4uLi57LgogICAgMTczMDogMEEgMDQgMEIgRkYgRkYgMEEgMDMgMDAg
MEEgNzggMDggNTAgMzAgMzMgMzAgMTIgIC4uLi4uLi4uLnguUDAzMC4KICAgIDE3NDA6IDM0IDA0
IDEyIDBCIDA0IDBCIEZGIEZGIDAwIDRDIDRFIDRCIDQ2IDAwIDEyIDBCICA0Li4uLi4uLi5MTktG
Li4uCiAgICAxNzUwOiAwNCAwQiBGRiBGRiAwMSA0QyA0RSA0QiA0NyAwMCAxMiAwQyAwNCAwQiBG
RiBGRiAgLi4uLi5MTktHLi4uLi4uLgogICAgMTc2MDogMEEgMDIgNEMgNEUgNEIgNDggMDAgMTIg
MEMgMDQgMEIgRkYgRkYgMEEgMDMgNEMgIC4uTE5LSC4uLi4uLi4uLkwKICAgIDE3NzA6IDRFIDRC
IDQ1IDAwIDA4IDQ3IDMwIDMzIDMwIDEyIDJDIDA0IDEyIDA5IDA0IDBCICBOS0UuLkcwMzAuLC4u
Li4uCiAgICAxNzgwOiBGRiBGRiAwMCAwMCAwQSA3RCAxMiAwOSAwNCAwQiBGRiBGRiAwMSAwMCAw
QSA3RSAgLi4uLi59Li4uLi4uLi4ufgogICAgMTc5MDogMTIgMEEgMDQgMEIgRkYgRkYgMEEgMDIg
MDAgMEEgN0YgMTIgMEEgMDQgMEIgRkYgIC4uLi4uLi4uLi4uLi4uLi4KICAgIDE3QTA6IEZGIDBB
IDAzIDAwIDBBIDdDIDA4IDUwIDMwIDMzIDMxIDEyIDM0IDA0IDEyIDBCICAuLi4uLnwuUDAzMS40
Li4uCiAgICAxN0IwOiAwNCAwQiBGRiBGRiAwMCA0QyA0RSA0QiA0MiAwMCAxMiAwQiAwNCAwQiBG
RiBGRiAgLi4uLi5MTktCLi4uLi4uLgogICAgMTdDMDogMDEgNEMgNEUgNEIgNDMgMDAgMTIgMEMg
MDQgMEIgRkYgRkYgMEEgMDIgNEMgNEUgIC5MTktDLi4uLi4uLi4uTE4KICAgIDE3RDA6IDRCIDQ0
IDAwIDEyIDBDIDA0IDBCIEZGIEZGIDBBIDAzIDRDIDRFIDRCIDQxIDAwICBLRC4uLi4uLi4uLkxO
S0EuCiAgICAxN0UwOiAwOCA0NyAzMCAzMyAzMSAxMiAyQyAwNCAxMiAwOSAwNCAwQiBGRiBGRiAw
MCAwMCAgLkcwMzEuLC4uLi4uLi4uLgogICAgMTdGMDogMEEgODEgMTIgMDkgMDQgMEIgRkYgRkYg
MDEgMDAgMEEgODIgMTIgMEEgMDQgMEIgIC4uLi4uLi4uLi4uLi4uLi4KICAgIDE4MDA6IEZGIEZG
IDBBIDAyIDAwIDBBIDgzIDEyIDBBIDA0IDBCIEZGIEZGIDBBIDAzIDAwICAuLi4uLi4uLi4uLi4u
Li4uCiAgICAxODEwOiAwQSA4MCAwOCA1MCAzMCAzMyAzMiAxMiAzNCAwNCAxMiAwQiAwNCAwQiBG
RiBGRiAgLi4uUDAzMi40Li4uLi4uLgogICAgMTgyMDogMDAgNEMgNEUgNEIgNDYgMDAgMTIgMEIg
MDQgMEIgRkYgRkYgMDEgNEMgNEUgNEIgIC5MTktGLi4uLi4uLi5MTksKICAgIDE4MzA6IDQ3IDAw
IDEyIDBDIDA0IDBCIEZGIEZGIDBBIDAyIDRDIDRFIDRCIDQ4IDAwIDEyICBHLi4uLi4uLi4uTE5L
SC4uCiAgICAxODQwOiAwQyAwNCAwQiBGRiBGRiAwQSAwMyA0QyA0RSA0QiA0NSAwMCAwOCA0NyAz
MCAzMyAgLi4uLi4uLkxOS0UuLkcwMwogICAgMTg1MDogMzIgMTIgMkMgMDQgMTIgMDkgMDQgMEIg
RkYgRkYgMDAgMDAgMEEgODUgMTIgMDkgIDIuLC4uLi4uLi4uLi4uLi4KICAgIDE4NjA6IDA0IDBC
IEZGIEZGIDAxIDAwIDBBIDg2IDEyIDBBIDA0IDBCIEZGIEZGIDBBIDAyICAuLi4uLi4uLi4uLi4u
Li4uCiAgICAxODcwOiAwMCAwQSA4NyAxMiAwQSAwNCAwQiBGRiBGRiAwQSAwMyAwMCAwQSA4NCAw
OCA1MCAgLi4uLi4uLi4uLi4uLi4uUAogICAgMTg4MDogMzAgMzMgMzMgMTIgMzQgMDQgMTIgMEIg
MDQgMEIgRkYgRkYgMDAgNEMgNEUgNEIgIDAzMy40Li4uLi4uLi5MTksKICAgIDE4OTA6IDQyIDAw
IDEyIDBCIDA0IDBCIEZGIEZGIDAxIDRDIDRFIDRCIDQzIDAwIDEyIDBDICBCLi4uLi4uLi5MTktD
Li4uCiAgICAxOEEwOiAwNCAwQiBGRiBGRiAwQSAwMiA0QyA0RSA0QiA0NCAwMCAxMiAwQyAwNCAw
QiBGRiAgLi4uLi4uTE5LRC4uLi4uLgogICAgMThCMDogRkYgMEEgMDMgNEMgNEUgNEIgNDEgMDAg
MDggNDcgMzAgMzMgMzMgMTIgMkMgMDQgIC4uLkxOS0EuLkcwMzMuLC4KICAgIDE4QzA6IDEyIDA5
IDA0IDBCIEZGIEZGIDAwIDAwIDBBIDg5IDEyIDA5IDA0IDBCIEZGIEZGICAuLi4uLi4uLi4uLi4u
Li4uCiAgICAxOEQwOiAwMSAwMCAwQSA4QSAxMiAwQSAwNCAwQiBGRiBGRiAwQSAwMiAwMCAwQSA4
QiAxMiAgLi4uLi4uLi4uLi4uLi4uLgogICAgMThFMDogMEEgMDQgMEIgRkYgRkYgMEEgMDMgMDAg
MEEgODggMDggNTAgMzAgMzMgMzQgMTIgIC4uLi4uLi4uLi4uUDAzNC4KICAgIDE4RjA6IDM0IDA0
IDEyIDBCIDA0IDBCIEZGIEZGIDAwIDRDIDRFIDRCIDQ0IDAwIDEyIDBCICA0Li4uLi4uLi5MTktE
Li4uCiAgICAxOTAwOiAwNCAwQiBGRiBGRiAwMSA0QyA0RSA0QiA0MSAwMCAxMiAwQyAwNCAwQiBG
RiBGRiAgLi4uLi5MTktBLi4uLi4uLgogICAgMTkxMDogMEEgMDIgNEMgNEUgNEIgNDIgMDAgMTIg
MEMgMDQgMEIgRkYgRkYgMEEgMDMgNEMgIC4uTE5LQi4uLi4uLi4uLkwKICAgIDE5MjA6IDRFIDRC
IDQzIDAwIDA4IDQ3IDMwIDMzIDM0IDEyIDJDIDA0IDEyIDA5IDA0IDBCICBOS0MuLkcwMzQuLC4u
Li4uCiAgICAxOTMwOiBGRiBGRiAwMCAwMCAwQSA4QiAxMiAwOSAwNCAwQiBGRiBGRiAwMSAwMCAw
QSA4OCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMTk0MDogMTIgMEEgMDQgMEIgRkYgRkYgMEEgMDIg
MDAgMEEgODkgMTIgMEEgMDQgMEIgRkYgIC4uLi4uLi4uLi4uLi4uLi4KICAgIDE5NTA6IEZGIDBB
IDAzIDAwIDBBIDhBIDA4IDUwIDMwIDMzIDM1IDEyIDM0IDA0IDEyIDBCICAuLi4uLi4uUDAzNS40
Li4uCiAgICAxOTYwOiAwNCAwQiBGRiBGRiAwMCA0QyA0RSA0QiA0OCAwMCAxMiAwQiAwNCAwQiBG
RiBGRiAgLi4uLi5MTktILi4uLi4uLgogICAgMTk3MDogMDEgNEMgNEUgNEIgNDUgMDAgMTIgMEMg
MDQgMEIgRkYgRkYgMEEgMDIgNEMgNEUgIC5MTktFLi4uLi4uLi4uTE4KICAgIDE5ODA6IDRCIDQ2
IDAwIDEyIDBDIDA0IDBCIEZGIEZGIDBBIDAzIDRDIDRFIDRCIDQ3IDAwICBLRi4uLi4uLi4uLkxO
S0cuCiAgICAxOTkwOiAwOCA0NyAzMCAzMyAzNSAxMiAyQyAwNCAxMiAwOSAwNCAwQiBGRiBGRiAw
MCAwMCAgLkcwMzUuLC4uLi4uLi4uLgogICAgMTlBMDogMEEgODcgMTIgMDkgMDQgMEIgRkYgRkYg
MDEgMDAgMEEgODQgMTIgMEEgMDQgMEIgIC4uLi4uLi4uLi4uLi4uLi4KICAgIDE5QjA6IEZGIEZG
IDBBIDAyIDAwIDBBIDg1IDEyIDBBIDA0IDBCIEZGIEZGIDBBIDAzIDAwICAuLi4uLi4uLi4uLi4u
Li4uCiAgICAxOUMwOiAwQSA4NiAwOCA1MCAzMCAzMyAzNiAxMiAzNCAwNCAxMiAwQiAwNCAwQiBG
RiBGRiAgLi4uUDAzNi40Li4uLi4uLgogICAgMTlEMDogMDAgNEMgNEUgNEIgNDQgMDAgMTIgMEIg
MDQgMEIgRkYgRkYgMDEgNEMgNEUgNEIgIC5MTktELi4uLi4uLi5MTksKICAgIDE5RTA6IDQxIDAw
IDEyIDBDIDA0IDBCIEZGIEZGIDBBIDAyIDRDIDRFIDRCIDQyIDAwIDEyICBBLi4uLi4uLi4uTE5L
Qi4uCiAgICAxOUYwOiAwQyAwNCAwQiBGRiBGRiAwQSAwMyA0QyA0RSA0QiA0MyAwMCAwOCA0NyAz
MCAzMyAgLi4uLi4uLkxOS0MuLkcwMwogICAgMUEwMDogMzYgMTIgMkMgMDQgMTIgMDkgMDQgMEIg
RkYgRkYgMDAgMDAgMEEgODMgMTIgMDkgIDYuLC4uLi4uLi4uLi4uLi4KICAgIDFBMTA6IDA0IDBC
IEZGIEZGIDAxIDAwIDBBIDgwIDEyIDBBIDA0IDBCIEZGIEZGIDBBIDAyICAuLi4uLi4uLi4uLi4u
Li4uCiAgICAxQTIwOiAwMCAwQSA4MSAxMiAwQSAwNCAwQiBGRiBGRiAwQSAwMyAwMCAwQSA4MiAw
OCA1MCAgLi4uLi4uLi4uLi4uLi4uUAogICAgMUEzMDogMzAgMzMgMzcgMTIgMzQgMDQgMTIgMEIg
MDQgMEIgRkYgRkYgMDAgNEMgNEUgNEIgIDAzNy40Li4uLi4uLi5MTksKICAgIDFBNDA6IDQ4IDAw
IDEyIDBCIDA0IDBCIEZGIEZGIDAxIDRDIDRFIDRCIDQ1IDAwIDEyIDBDICBILi4uLi4uLi5MTktF
Li4uCiAgICAxQTUwOiAwNCAwQiBGRiBGRiAwQSAwMiA0QyA0RSA0QiA0NiAwMCAxMiAwQyAwNCAw
QiBGRiAgLi4uLi4uTE5LRi4uLi4uLgogICAgMUE2MDogRkYgMEEgMDMgNEMgNEUgNEIgNDcgMDAg
MDggNDcgMzAgMzMgMzcgMTIgMkMgMDQgIC4uLkxOS0cuLkcwMzcuLC4KICAgIDFBNzA6IDEyIDA5
IDA0IDBCIEZGIEZGIDAwIDAwIDBBIDdGIDEyIDA5IDA0IDBCIEZGIEZGICAuLi4uLi4uLi4uLi4u
Li4uCiAgICAxQTgwOiAwMSAwMCAwQSA3QyAxMiAwQSAwNCAwQiBGRiBGRiAwQSAwMiAwMCAwQSA3
RCAxMiAgLi4ufC4uLi4uLi4uLi59LgogICAgMUE5MDogMEEgMDQgMEIgRkYgRkYgMEEgMDMgMDAg
MEEgN0UgMDggNTAgMzAgMzMgMzggMTIgIC4uLi4uLi4uLn4uUDAzOC4KICAgIDFBQTA6IDM0IDA0
IDEyIDBCIDA0IDBCIEZGIEZGIDAwIDRDIDRFIDRCIDQ0IDAwIDEyIDBCICA0Li4uLi4uLi5MTktE
Li4uCiAgICAxQUIwOiAwNCAwQiBGRiBGRiAwMSA0QyA0RSA0QiA0MSAwMCAxMiAwQyAwNCAwQiBG
RiBGRiAgLi4uLi5MTktBLi4uLi4uLgogICAgMUFDMDogMEEgMDIgNEMgNEUgNEIgNDIgMDAgMTIg
MEMgMDQgMEIgRkYgRkYgMEEgMDMgNEMgIC4uTE5LQi4uLi4uLi4uLkwKICAgIDFBRDA6IDRFIDRC
IDQzIDAwIDA4IDQ3IDMwIDMzIDM4IDEyIDJDIDA0IDEyIDA5IDA0IDBCICBOS0MuLkcwMzguLC4u
Li4uCiAgICAxQUUwOiBGRiBGRiAwMCAwMCAwQSA3QiAxMiAwOSAwNCAwQiBGRiBGRiAwMSAwMCAw
QSA3OCAgLi4uLi57Li4uLi4uLi4ueAogICAgMUFGMDogMTIgMEEgMDQgMEIgRkYgRkYgMEEgMDIg
MDAgMEEgNzkgMTIgMEEgMDQgMEIgRkYgIC4uLi4uLi4uLi55Li4uLi4KICAgIDFCMDA6IEZGIDBB
IDAzIDAwIDBBIDdBIDA4IDUwIDMwIDMzIDM5IDEyIDM0IDA0IDEyIDBCICAuLi4uLnouUDAzOS40
Li4uCiAgICAxQjEwOiAwNCAwQiBGRiBGRiAwMCA0QyA0RSA0QiA0MSAwMCAxMiAwQiAwNCAwQiBG
RiBGRiAgLi4uLi5MTktBLi4uLi4uLgogICAgMUIyMDogMDEgNEMgNEUgNEIgNDIgMDAgMTIgMEMg
MDQgMEIgRkYgRkYgMEEgMDIgNEMgNEUgIC5MTktCLi4uLi4uLi4uTE4KICAgIDFCMzA6IDRCIDQz
IDAwIDEyIDBDIDA0IDBCIEZGIEZGIDBBIDAzIDRDIDRFIDRCIDQ0IDAwICBLQy4uLi4uLi4uLkxO
S0QuCiAgICAxQjQwOiAwOCA0NyAzMCAzMyAzOSAxMiAyQyAwNCAxMiAwOSAwNCAwQiBGRiBGRiAw
MCAwMCAgLkcwMzkuLC4uLi4uLi4uLgogICAgMUI1MDogMEEgNzggMTIgMDkgMDQgMEIgRkYgRkYg
MDEgMDAgMEEgNzkgMTIgMEEgMDQgMEIgIC54Li4uLi4uLi4ueS4uLi4KICAgIDFCNjA6IEZGIEZG
IDBBIDAyIDAwIDBBIDdBIDEyIDBBIDA0IDBCIEZGIEZGIDBBIDAzIDAwICAuLi4uLi56Li4uLi4u
Li4uCiAgICAxQjcwOiAwQSA3QiAwOCA1MCAzMCAzMyA0MSAxMiAzNCAwNCAxMiAwQiAwNCAwQiBG
RiBGRiAgLnsuUDAzQS40Li4uLi4uLgogICAgMUI4MDogMDAgNEMgNEUgNEIgNDUgMDAgMTIgMEIg
MDQgMEIgRkYgRkYgMDEgNEMgNEUgNEIgIC5MTktFLi4uLi4uLi5MTksKICAgIDFCOTA6IDQ2IDAw
IDEyIDBDIDA0IDBCIEZGIEZGIDBBIDAyIDRDIDRFIDRCIDQ3IDAwIDEyICBGLi4uLi4uLi4uTE5L
Ry4uCiAgICAxQkEwOiAwQyAwNCAwQiBGRiBGRiAwQSAwMyA0QyA0RSA0QiA0OCAwMCAwOCA0NyAz
MCAzMyAgLi4uLi4uLkxOS0guLkcwMwogICAgMUJCMDogNDEgMTIgMkMgMDQgMTIgMDkgMDQgMEIg
RkYgRkYgMDAgMDAgMEEgN0MgMTIgMDkgIEEuLC4uLi4uLi4uLi58Li4KICAgIDFCQzA6IDA0IDBC
IEZGIEZGIDAxIDAwIDBBIDdEIDEyIDBBIDA0IDBCIEZGIEZGIDBBIDAyICAuLi4uLi4ufS4uLi4u
Li4uCiAgICAxQkQwOiAwMCAwQSA3RSAxMiAwQSAwNCAwQiBGRiBGRiAwQSAwMyAwMCAwQSA3RiAw
OCA1MCAgLi5+Li4uLi4uLi4uLi4uUAogICAgMUJFMDogMzAgMzMgNDIgMTIgMzQgMDQgMTIgMEIg
MDQgMEIgRkYgRkYgMDAgNEMgNEUgNEIgIDAzQi40Li4uLi4uLi5MTksKICAgIDFCRjA6IDQxIDAw
IDEyIDBCIDA0IDBCIEZGIEZGIDAxIDRDIDRFIDRCIDQyIDAwIDEyIDBDICBBLi4uLi4uLi5MTktC
Li4uCiAgICAxQzAwOiAwNCAwQiBGRiBGRiAwQSAwMiA0QyA0RSA0QiA0MyAwMCAxMiAwQyAwNCAw
QiBGRiAgLi4uLi4uTE5LQy4uLi4uLgogICAgMUMxMDogRkYgMEEgMDMgNEMgNEUgNEIgNDQgMDAg
MDggNDcgMzAgMzMgNDIgMTIgMkMgMDQgIC4uLkxOS0QuLkcwM0IuLC4KICAgIDFDMjA6IDEyIDA5
IDA0IDBCIEZGIEZGIDAwIDAwIDBBIDgwIDEyIDA5IDA0IDBCIEZGIEZGICAuLi4uLi4uLi4uLi4u
Li4uCiAgICAxQzMwOiAwMSAwMCAwQSA4MSAxMiAwQSAwNCAwQiBGRiBGRiAwQSAwMiAwMCAwQSA4
MiAxMiAgLi4uLi4uLi4uLi4uLi4uLgogICAgMUM0MDogMEEgMDQgMEIgRkYgRkYgMEEgMDMgMDAg
MEEgODMgMDggNTAgMzAgMzQgMzQgMTIgIC4uLi4uLi4uLi4uUDA0NC4KICAgIDFDNTA6IDM0IDA0
IDEyIDBCIDA0IDBCIEZGIEZGIDAwIDRDIDRFIDRCIDQ1IDAwIDEyIDBCICA0Li4uLi4uLi5MTktF
Li4uCiAgICAxQzYwOiAwNCAwQiBGRiBGRiAwMSA0QyA0RSA0QiA0NiAwMCAxMiAwQyAwNCAwQiBG
RiBGRiAgLi4uLi5MTktGLi4uLi4uLgogICAgMUM3MDogMEEgMDIgNEMgNEUgNEIgNDcgMDAgMTIg
MEMgMDQgMEIgRkYgRkYgMEEgMDMgNEMgIC4uTE5LRy4uLi4uLi4uLkwKICAgIDFDODA6IDRFIDRC
IDQ4IDAwIDA4IDQ3IDMwIDM0IDM0IDEyIDJDIDA0IDEyIDA5IDA0IDBCICBOS0guLkcwNDQuLC4u
Li4uCiAgICAxQzkwOiBGRiBGRiAwMCAwMCAwQSA4NCAxMiAwOSAwNCAwQiBGRiBGRiAwMSAwMCAw
QSA4NSAgLi4uLi4uLi4uLi4uLi4uLgogICAgMUNBMDogMTIgMEEgMDQgMEIgRkYgRkYgMEEgMDIg
MDAgMEEgODYgMTIgMEEgMDQgMEIgRkYgIC4uLi4uLi4uLi4uLi4uLi4KICAgIDFDQjA6IEZGIDBB
IDAzIDAwIDBBIDg3IDA4IDUwIDQ0IDMwIDMyIDEyIDQxIDExIDEzIDEyICAuLi4uLi4uUEQwMi5B
Li4uCiAgICAxQ0MwOiAwQiAwNCAwQiBGRiBGRiAwMCA0QyA0RSA0QiA0MiAwMCAxMiAwRCAwNCAw
QyBGRiAgLi4uLi4uTE5LQi4uLi4uLgogICAgMUNEMDogRkYgMDEgMDAgMDAgNEMgNEUgNEIgNDEg
MDAgMTIgMEQgMDQgMEMgRkYgRkYgMDEgIC4uLi5MTktBLi4uLi4uLi4KICAgIDFDRTA6IDAwIDAx
IDRDIDRFIDRCIDQxIDAwIDEyIDBFIDA0IDBDIEZGIEZGIDAxIDAwIDBBICAuLkxOS0EuLi4uLi4u
Li4uCiAgICAxQ0YwOiAwMiA0QyA0RSA0QiA0MSAwMCAxMiAwRSAwNCAwQyBGRiBGRiAwMSAwMCAw
QSAwMyAgLkxOS0EuLi4uLi4uLi4uLgogICAgMUQwMDogNEMgNEUgNEIgNDEgMDAgMTIgMEQgMDQg
MEMgRkYgRkYgMDIgMDAgMDAgNEMgNEUgIExOS0EuLi4uLi4uLi4uTE4KICAgIDFEMTA6IDRCIDQx
IDAwIDEyIDBEIDA0IDBDIEZGIEZGIDAyIDAwIDAxIDRDIDRFIDRCIDQxICBLQS4uLi4uLi4uLi5M
TktBCiAgICAxRDIwOiAwMCAxMiAwRCAwNCAwQyBGRiBGRiAwMyAwMCAwMCA0QyA0RSA0QiA0MiAw
MCAxMiAgLi4uLi4uLi4uLkxOS0IuLgogICAgMUQzMDogMEQgMDQgMEMgRkYgRkYgMDMgMDAgMDEg
NEMgNEUgNEIgNDIgMDAgMTIgMEUgMDQgIC4uLi4uLi4uTE5LQi4uLi4KICAgIDFENDA6IDBDIEZG
IEZGIDAzIDAwIDBBIDAyIDRDIDRFIDRCIDQyIDAwIDEyIDBFIDA0IDBDICAuLi4uLi4uTE5LQi4u
Li4uCiAgICAxRDUwOiBGRiBGRiAwMyAwMCAwQSAwMyA0QyA0RSA0QiA0MiAwMCAxMiAwRCAwNCAw
QyBGRiAgLi4uLi4uTE5LQi4uLi4uLgogICAgMUQ2MDogRkYgMDQgMDAgMDAgNEMgNEUgNEIgNDIg
MDAgMTIgMEQgMDQgMEMgRkYgRkYgMDQgIC4uLi5MTktCLi4uLi4uLi4KICAgIDFENzA6IDAwIDAx
IDRDIDRFIDRCIDQyIDAwIDEyIDBEIDA0IDBDIEZGIEZGIDA1IDAwIDAwICAuLkxOS0IuLi4uLi4u
Li4uCiAgICAxRDgwOiA0QyA0RSA0QiA0MyAwMCAxMiAwRCAwNCAwQyBGRiBGRiAwNSAwMCAwMSA0
QyA0RSAgTE5LQy4uLi4uLi4uLi5MTgogICAgMUQ5MDogNEIgNDMgMDAgMTIgMEUgMDQgMEMgRkYg
RkYgMDUgMDAgMEEgMDIgNEMgNEUgNEIgIEtDLi4uLi4uLi4uLi5MTksKICAgIDFEQTA6IDQzIDAw
IDEyIDBFIDA0IDBDIEZGIEZGIDA1IDAwIDBBIDAzIDRDIDRFIDRCIDQzICBDLi4uLi4uLi4uLi5M
TktDCiAgICAxREIwOiAwMCAxMiAwRCAwNCAwQyBGRiBGRiAwNyAwMCAwMCA0QyA0RSA0QiA0NCAw
MCAxMiAgLi4uLi4uLi4uLkxOS0QuLgogICAgMURDMDogMEQgMDQgMEMgRkYgRkYgMDcgMDAgMDEg
NEMgNEUgNEIgNDQgMDAgMDggNDEgNTIgIC4uLi4uLi4uTE5LRC4uQVIKICAgIDFERDA6IDMwIDMy
IDEyIDRCIDBFIDEzIDEyIDA5IDA0IDBCIEZGIEZGIDAwIDAwIDBBIDU5ICAwMi5LLi4uLi4uLi4u
Li5ZCiAgICAxREUwOiAxMiAwQiAwNCAwQyBGRiBGRiAwMSAwMCAwMCAwMCAwQSA1OCAxMiAwQiAw
NCAwQyAgLi4uLi4uLi4uLi5YLi4uLgogICAgMURGMDogRkYgRkYgMDEgMDAgMDEgMDAgMEEgNTgg
MTIgMEMgMDQgMEMgRkYgRkYgMDEgMDAgIC4uLi4uLi5YLi4uLi4uLi4KICAgIDFFMDA6IDBBIDAy
IDAwIDBBIDU4IDEyIDBDIDA0IDBDIEZGIEZGIDAxIDAwIDBBIDAzIDAwICAuLi4uWC4uLi4uLi4u
Li4uCiAgICAxRTEwOiAwQSA1OCAxMiAwQiAwNCAwQyBGRiBGRiAwMiAwMCAwMCAwMCAwQSA1OCAx
MiAwQiAgLlguLi4uLi4uLi4uLlguLgogICAgMUUyMDogMDQgMEMgRkYgRkYgMDIgMDAgMDEgMDAg
MEEgNTggMTIgMEIgMDQgMEMgRkYgRkYgIC4uLi4uLi4uLlguLi4uLi4KICAgIDFFMzA6IDAzIDAw
IDAwIDAwIDBBIDU5IDEyIDBCIDA0IDBDIEZGIEZGIDAzIDAwIDAxIDAwICAuLi4uLlkuLi4uLi4u
Li4uCiAgICAxRTQwOiAwQSA1OSAxMiAwQyAwNCAwQyBGRiBGRiAwMyAwMCAwQSAwMiAwMCAwQSA1
OSAxMiAgLlkuLi4uLi4uLi4uLi5ZLgogICAgMUU1MDogMEMgMDQgMEMgRkYgRkYgMDMgMDAgMEEg
MDMgMDAgMEEgNTkgMTIgMEIgMDQgMEMgIC4uLi4uLi4uLi4uWS4uLi4KICAgIDFFNjA6IEZGIEZG
IDA0IDAwIDAwIDAwIDBBIDU5IDEyIDBCIDA0IDBDIEZGIEZGIDA0IDAwICAuLi4uLi4uWS4uLi4u
Li4uCiAgICAxRTcwOiAwMSAwMCAwQSA1OSAxMiAwQiAwNCAwQyBGRiBGRiAwNSAwMCAwMCAwMCAw
QSA1QSAgLi4uWS4uLi4uLi4uLi4uWgogICAgMUU4MDogMTIgMEIgMDQgMEMgRkYgRkYgMDUgMDAg
MDEgMDAgMEEgNUEgMTIgMEMgMDQgMEMgIC4uLi4uLi4uLi4uWi4uLi4KICAgIDFFOTA6IEZGIEZG
IDA1IDAwIDBBIDAyIDAwIDBBIDVBIDEyIDBDIDA0IDBDIEZGIEZGIDA1ICAuLi4uLi4uLlouLi4u
Li4uCiAgICAxRUEwOiAwMCAwQSAwMyAwMCAwQSA1QSAxMiAwQiAwNCAwQyBGRiBGRiAwNyAwMCAw
MCAwMCAgLi4uLi5aLi4uLi4uLi4uLgogICAgMUVCMDogMEEgNUIgMTIgMEIgMDQgMEMgRkYgRkYg
MDcgMDAgMDEgMDAgMEEgNUIgMDggNTAgIC5bLi4uLi4uLi4uLi5bLlAKICAgIDFFQzA6IDMwIDM0
IDQxIDEyIDM0IDA0IDEyIDBCIDA0IDBCIEZGIEZGIDAwIDRDIDRFIDRCICAwNEEuNC4uLi4uLi4u
TE5LCiAgICAxRUQwOiA0MSAwMCAxMiAwQiAwNCAwQiBGRiBGRiAwMSA0QyA0RSA0QiA0MiAwMCAx
MiAwQyAgQS4uLi4uLi4uTE5LQi4uLgogICAgMUVFMDogMDQgMEIgRkYgRkYgMEEgMDIgNEMgNEUg
NEIgNDMgMDAgMTIgMEMgMDQgMEIgRkYgIC4uLi4uLkxOS0MuLi4uLi4KICAgIDFFRjA6IEZGIDBB
IDAzIDRDIDRFIDRCIDQ0IDAwIDA4IDQ3IDMwIDM0IDQxIDEyIDJDIDA0ICAuLi5MTktELi5HMDRB
LiwuCiAgICAxRjAwOiAxMiAwOSAwNCAwQiBGRiBGRiAwMCAwMCAwQSA1OCAxMiAwOSAwNCAwQiBG
RiBGRiAgLi4uLi4uLi4uWC4uLi4uLgogICAgMUYxMDogMDEgMDAgMEEgNTkgMTIgMEEgMDQgMEIg
RkYgRkYgMEEgMDIgMDAgMEEgNUEgMTIgIC4uLlkuLi4uLi4uLi4uWi4KICAgIDFGMjA6IDBBIDA0
IDBCIEZGIEZGIDBBIDAzIDAwIDBBIDVCIDA4IDUwIDMwIDM0IDQyIDEyICAuLi4uLi4uLi5bLlAw
NEIuCiAgICAxRjMwOiAzNCAwNCAxMiAwQiAwNCAwQiBGRiBGRiAwMCA0QyA0RSA0QiA0NSAwMCAx
MiAwQiAgNC4uLi4uLi4uTE5LRS4uLgogICAgMUY0MDogMDQgMEIgRkYgRkYgMDEgNEMgNEUgNEIg
NDYgMDAgMTIgMEMgMDQgMEIgRkYgRkYgIC4uLi4uTE5LRi4uLi4uLi4KICAgIDFGNTA6IDBBIDAy
IDRDIDRFIDRCIDQ3IDAwIDEyIDBDIDA0IDBCIEZGIEZGIDBBIDAzIDRDICAuLkxOS0cuLi4uLi4u
Li5MCiAgICAxRjYwOiA0RSA0QiA0OCAwMCAwOCA0NyAzMCAzNCA0MiAxMiAyQyAwNCAxMiAwOSAw
NCAwQiAgTktILi5HMDRCLiwuLi4uLgogICAgMUY3MDogRkYgRkYgMDAgMDAgMEEgNUMgMTIgMDkg
MDQgMEIgRkYgRkYgMDEgMDAgMEEgNUQgIC4uLi4uXC4uLi4uLi4uLl0KICAgIDFGODA6IDEyIDBB
IDA0IDBCIEZGIEZGIDBBIDAyIDAwIDBBIDVFIDEyIDBBIDA0IDBCIEZGICAuLi4uLi4uLi4uXi4u
Li4uCiAgICAxRjkwOiBGRiAwQSAwMyAwMCAwQSA1RiAwOCA1MCAzMCAzNCA0MyAxMiAzNCAwNCAx
MiAwQiAgLi4uLi5fLlAwNEMuNC4uLgogICAgMUZBMDogMDQgMEIgRkYgRkYgMDAgNEMgNEUgNEIg
NDEgMDAgMTIgMEIgMDQgMEIgRkYgRkYgIC4uLi4uTE5LQS4uLi4uLi4KICAgIDFGQjA6IDAxIDRD
IDRFIDRCIDQyIDAwIDEyIDBDIDA0IDBCIEZGIEZGIDBBIDAyIDRDIDRFICAuTE5LQi4uLi4uLi4u
LkxOCiAgICAxRkMwOiA0QiA0MyAwMCAxMiAwQyAwNCAwQiBGRiBGRiAwQSAwMyA0QyA0RSA0QiA0
NCAwMCAgS0MuLi4uLi4uLi5MTktELgogICAgMUZEMDogMDggNDcgMzAgMzQgNDMgMTIgMkMgMDQg
MTIgMDkgMDQgMEIgRkYgRkYgMDAgMDAgIC5HMDRDLiwuLi4uLi4uLi4KICAgIDFGRTA6IDBBIDYw
IDEyIDA5IDA0IDBCIEZGIEZGIDAxIDAwIDBBIDYxIDEyIDBBIDA0IDBCICAuYC4uLi4uLi4uLmEu
Li4uCiAgICAxRkYwOiBGRiBGRiAwQSAwMiAwMCAwQSA2MiAxMiAwQSAwNCAwQiBGRiBGRiAwQSAw
MyAwMCAgLi4uLi4uYi4uLi4uLi4uLgogICAgMjAwMDogMEEgNjMgMDggNTAgMzAgMzQgNDQgMTIg
MzQgMDQgMTIgMEIgMDQgMEIgRkYgRkYgIC5jLlAwNEQuNC4uLi4uLi4KICAgIDIwMTA6IDAwIDRD
IDRFIDRCIDQ1IDAwIDEyIDBCIDA0IDBCIEZGIEZGIDAxIDRDIDRFIDRCICAuTE5LRS4uLi4uLi4u
TE5LCiAgICAyMDIwOiA0NiAwMCAxMiAwQyAwNCAwQiBGRiBGRiAwQSAwMiA0QyA0RSA0QiA0NyAw
MCAxMiAgRi4uLi4uLi4uLkxOS0cuLgogICAgMjAzMDogMEMgMDQgMEIgRkYgRkYgMEEgMDMgNEMg
NEUgNEIgNDggMDAgMDggNDcgMzAgMzQgIC4uLi4uLi5MTktILi5HMDQKICAgIDIwNDA6IDQ0IDEy
IDJDIDA0IDEyIDA5IDA0IDBCIEZGIEZGIDAwIDAwIDBBIDY0IDEyIDA5ICBELiwuLi4uLi4uLi4u
ZC4uCiAgICAyMDUwOiAwNCAwQiBGRiBGRiAwMSAwMCAwQSA2NSAxMiAwQSAwNCAwQiBGRiBGRiAw
QSAwMiAgLi4uLi4uLmUuLi4uLi4uLgogICAgMjA2MDogMDAgMEEgNjYgMTIgMEEgMDQgMEIgRkYg
RkYgMEEgMDMgMDAgMEEgNjcgMDggNTAgIC4uZi4uLi4uLi4uLi5nLlAKICAgIDIwNzA6IDMwIDM0
IDQ1IDEyIDM0IDA0IDEyIDBCIDA0IDBCIEZGIEZGIDAwIDRDIDRFIDRCICAwNEUuNC4uLi4uLi4u
TE5LCiAgICAyMDgwOiA0MSAwMCAxMiAwQiAwNCAwQiBGRiBGRiAwMSA0QyA0RSA0QiA0MiAwMCAx
MiAwQyAgQS4uLi4uLi4uTE5LQi4uLgogICAgMjA5MDogMDQgMEIgRkYgRkYgMEEgMDIgNEMgNEUg
NEIgNDMgMDAgMTIgMEMgMDQgMEIgRkYgIC4uLi4uLkxOS0MuLi4uLi4KICAgIDIwQTA6IEZGIDBB
IDAzIDRDIDRFIDRCIDQ0IDAwIDA4IDQ3IDMwIDM0IDQ1IDEyIDJDIDA0ICAuLi5MTktELi5HMDRF
LiwuCiAgICAyMEIwOiAxMiAwOSAwNCAwQiBGRiBGRiAwMCAwMCAwQSA2OCAxMiAwOSAwNCAwQiBG
RiBGRiAgLi4uLi4uLi4uaC4uLi4uLgogICAgMjBDMDogMDEgMDAgMEEgNjkgMTIgMEEgMDQgMEIg
RkYgRkYgMEEgMDIgMDAgMEEgNkEgMTIgIC4uLmkuLi4uLi4uLi4uai4KICAgIDIwRDA6IDBBIDA0
IDBCIEZGIEZGIDBBIDAzIDAwIDBBIDZCIDA4IDUwIDMwIDM0IDQ2IDEyICAuLi4uLi4uLi5rLlAw
NEYuCiAgICAyMEUwOiAzNCAwNCAxMiAwQiAwNCAwQiBGRiBGRiAwMCA0QyA0RSA0QiA0MyAwMCAx
MiAwQiAgNC4uLi4uLi4uTE5LQy4uLgogICAgMjBGMDogMDQgMEIgRkYgRkYgMDEgNEMgNEUgNEIg
NDQgMDAgMTIgMEMgMDQgMEIgRkYgRkYgIC4uLi4uTE5LRC4uLi4uLi4KICAgIDIxMDA6IDBBIDAy
IDRDIDRFIDRCIDQxIDAwIDEyIDBDIDA0IDBCIEZGIEZGIDBBIDAzIDRDICAuLkxOS0EuLi4uLi4u
Li5MCiAgICAyMTEwOiA0RSA0QiA0MiAwMCAwOCA0NyAzMCAzNCA0NiAxMiAyQyAwNCAxMiAwOSAw
NCAwQiAgTktCLi5HMDRGLiwuLi4uLgogICAgMjEyMDogRkYgRkYgMDAgMDAgMEEgNkEgMTIgMDkg
MDQgMEIgRkYgRkYgMDEgMDAgMEEgNkIgIC4uLi4uai4uLi4uLi4uLmsKICAgIDIxMzA6IDEyIDBB
IDA0IDBCIEZGIEZGIDBBIDAyIDAwIDBBIDY4IDEyIDBBIDA0IDBCIEZGICAuLi4uLi4uLi4uaC4u
Li4uCiAgICAyMTQwOiBGRiAwQSAwMyAwMCAwQSA2OSAwOCA1MCAzMCAzNSAzMCAxMiAzNCAwNCAx
MiAwQiAgLi4uLi5pLlAwNTAuNC4uLgogICAgMjE1MDogMDQgMEIgRkYgRkYgMDAgNEMgNEUgNEIg
NDcgMDAgMTIgMEIgMDQgMEIgRkYgRkYgIC4uLi4uTE5LRy4uLi4uLi4KICAgIDIxNjA6IDAxIDRD
IDRFIDRCIDQ4IDAwIDEyIDBDIDA0IDBCIEZGIEZGIDBBIDAyIDRDIDRFICAuTE5LSC4uLi4uLi4u
LkxOCiAgICAyMTcwOiA0QiA0NSAwMCAxMiAwQyAwNCAwQiBGRiBGRiAwQSAwMyA0QyA0RSA0QiA0
NiAwMCAgS0UuLi4uLi4uLi5MTktGLgogICAgMjE4MDogMDggNDcgMzAgMzUgMzAgMTIgMkMgMDQg
MTIgMDkgMDQgMEIgRkYgRkYgMDAgMDAgIC5HMDUwLiwuLi4uLi4uLi4KICAgIDIxOTA6IDBBIDY2
IDEyIDA5IDA0IDBCIEZGIEZGIDAxIDAwIDBBIDY3IDEyIDBBIDA0IDBCICAuZi4uLi4uLi4uLmcu
Li4uCiAgICAyMUEwOiBGRiBGRiAwQSAwMiAwMCAwQSA2NCAxMiAwQSAwNCAwQiBGRiBGRiAwQSAw
MyAwMCAgLi4uLi4uZC4uLi4uLi4uLgogICAgMjFCMDogMEEgNjUgMDggNTAgMzAgMzUgMzEgMTIg
MzQgMDQgMTIgMEIgMDQgMEIgRkYgRkYgIC5lLlAwNTEuNC4uLi4uLi4KICAgIDIxQzA6IDAwIDRD
IDRFIDRCIDQzIDAwIDEyIDBCIDA0IDBCIEZGIEZGIDAxIDRDIDRFIDRCICAuTE5LQy4uLi4uLi4u
TE5LCiAgICAyMUQwOiA0NCAwMCAxMiAwQyAwNCAwQiBGRiBGRiAwQSAwMiA0QyA0RSA0QiA0MSAw
MCAxMiAgRC4uLi4uLi4uLkxOS0EuLgogICAgMjFFMDogMEMgMDQgMEIgRkYgRkYgMEEgMDMgNEMg
NEUgNEIgNDIgMDAgMDggNDcgMzAgMzUgIC4uLi4uLi5MTktCLi5HMDUKICAgIDIxRjA6IDMxIDEy
IDJDIDA0IDEyIDA5IDA0IDBCIEZGIEZGIDAwIDAwIDBBIDYyIDEyIDA5ICAxLiwuLi4uLi4uLi4u
Yi4uCiAgICAyMjAwOiAwNCAwQiBGRiBGRiAwMSAwMCAwQSA2MyAxMiAwQSAwNCAwQiBGRiBGRiAw
QSAwMiAgLi4uLi4uLmMuLi4uLi4uLgogICAgMjIxMDogMDAgMEEgNjAgMTIgMEEgMDQgMEIgRkYg
RkYgMEEgMDMgMDAgMEEgNjEgMDggNTAgIC4uYC4uLi4uLi4uLi5hLlAKICAgIDIyMjA6IDMwIDM1
IDMyIDEyIDM0IDA0IDEyIDBCIDA0IDBCIEZGIEZGIDAwIDRDIDRFIDRCICAwNTIuNC4uLi4uLi4u
TE5LCiAgICAyMjMwOiA0NyAwMCAxMiAwQiAwNCAwQiBGRiBGRiAwMSA0QyA0RSA0QiA0OCAwMCAx
MiAwQyAgRy4uLi4uLi4uTE5LSC4uLgogICAgMjI0MDogMDQgMEIgRkYgRkYgMEEgMDIgNEMgNEUg
NEIgNDUgMDAgMTIgMEMgMDQgMEIgRkYgIC4uLi4uLkxOS0UuLi4uLi4KICAgIDIyNTA6IEZGIDBB
IDAzIDRDIDRFIDRCIDQ2IDAwIDA4IDQ3IDMwIDM1IDMyIDEyIDJDIDA0ICAuLi5MTktGLi5HMDUy
LiwuCiAgICAyMjYwOiAxMiAwOSAwNCAwQiBGRiBGRiAwMCAwMCAwQSA1RSAxMiAwOSAwNCAwQiBG
RiBGRiAgLi4uLi4uLi4uXi4uLi4uLgogICAgMjI3MDogMDEgMDAgMEEgNUYgMTIgMEEgMDQgMEIg
RkYgRkYgMEEgMDIgMDAgMEEgNUMgMTIgIC4uLl8uLi4uLi4uLi4uXC4KICAgIDIyODA6IDBBIDA0
IDBCIEZGIEZGIDBBIDAzIDAwIDBBIDVEIDA4IDUwIDMwIDM1IDMzIDEyICAuLi4uLi4uLi5dLlAw
NTMuCiAgICAyMjkwOiAzNCAwNCAxMiAwQiAwNCAwQiBGRiBGRiAwMCA0QyA0RSA0QiA0MyAwMCAx
MiAwQiAgNC4uLi4uLi4uTE5LQy4uLgogICAgMjJBMDogMDQgMEIgRkYgRkYgMDEgNEMgNEUgNEIg
NDQgMDAgMTIgMEMgMDQgMEIgRkYgRkYgIC4uLi4uTE5LRC4uLi4uLi4KICAgIDIyQjA6IDBBIDAy
IDRDIDRFIDRCIDQxIDAwIDEyIDBDIDA0IDBCIEZGIEZGIDBBIDAzIDRDICAuLkxOS0EuLi4uLi4u
Li5MCiAgICAyMkMwOiA0RSA0QiA0MiAwMCAwOCA0NyAzMCAzNSAzMyAxMiAyQyAwNCAxMiAwOSAw
NCAwQiAgTktCLi5HMDUzLiwuLi4uLgogICAgMjJEMDogRkYgRkYgMDAgMDAgMEEgNUEgMTIgMDkg
MDQgMEIgRkYgRkYgMDEgMDAgMEEgNUIgIC4uLi4uWi4uLi4uLi4uLlsKICAgIDIyRTA6IDEyIDBB
IDA0IDBCIEZGIEZGIDBBIDAyIDAwIDBBIDU4IDEyIDBBIDA0IDBCIEZGICAuLi4uLi4uLi4uWC4u
Li4uCiAgICAyMkYwOiBGRiAwQSAwMyAwMCAwQSA1OSAwOCA1MCAzMCAzNSAzNCAxMiAzNCAwNCAx
MiAwQiAgLi4uLi5ZLlAwNTQuNC4uLgogICAgMjMwMDogMDQgMEIgRkYgRkYgMDAgNEMgNEUgNEIg
NDIgMDAgMTIgMEIgMDQgMEIgRkYgRkYgIC4uLi4uTE5LQi4uLi4uLi4KICAgIDIzMTA6IDAxIDRD
IDRFIDRCIDQzIDAwIDEyIDBDIDA0IDBCIEZGIEZGIDBBIDAyIDRDIDRFICAuTE5LQy4uLi4uLi4u
LkxOCiAgICAyMzIwOiA0QiA0NCAwMCAxMiAwQyAwNCAwQiBGRiBGRiAwQSAwMyA0QyA0RSA0QiA0
MSAwMCAgS0QuLi4uLi4uLi5MTktBLgogICAgMjMzMDogMDggNDcgMzAgMzUgMzQgMTIgMkMgMDQg
MTIgMDkgMDQgMEIgRkYgRkYgMDAgMDAgIC5HMDU0LiwuLi4uLi4uLi4KICAgIDIzNDA6IDBBIDU5
IDEyIDA5IDA0IDBCIEZGIEZGIDAxIDAwIDBBIDVBIDEyIDBBIDA0IDBCICAuWS4uLi4uLi4uLlou
Li4uCiAgICAyMzUwOiBGRiBGRiAwQSAwMiAwMCAwQSA1QiAxMiAwQSAwNCAwQiBGRiBGRiAwQSAw
MyAwMCAgLi4uLi4uWy4uLi4uLi4uLgogICAgMjM2MDogMEEgNTggMDggNTAgMzAgMzUgMzUgMTIg
MzQgMDQgMTIgMEIgMDQgMEIgRkYgRkYgIC5YLlAwNTUuNC4uLi4uLi4KICAgIDIzNzA6IDAwIDRD
IDRFIDRCIDQ2IDAwIDEyIDBCIDA0IDBCIEZGIEZGIDAxIDRDIDRFIDRCICAuTE5LRi4uLi4uLi4u
TE5LCiAgICAyMzgwOiA0NyAwMCAxMiAwQyAwNCAwQiBGRiBGRiAwQSAwMiA0QyA0RSA0QiA0OCAw
MCAxMiAgRy4uLi4uLi4uLkxOS0guLgogICAgMjM5MDogMEMgMDQgMEIgRkYgRkYgMEEgMDMgNEMg
NEUgNEIgNDUgMDAgMDggNDcgMzAgMzUgIC4uLi4uLi5MTktFLi5HMDUKICAgIDIzQTA6IDM1IDEy
IDJDIDA0IDEyIDA5IDA0IDBCIEZGIEZGIDAwIDAwIDBBIDVEIDEyIDA5ICA1LiwuLi4uLi4uLi4u
XS4uCiAgICAyM0IwOiAwNCAwQiBGRiBGRiAwMSAwMCAwQSA1RSAxMiAwQSAwNCAwQiBGRiBGRiAw
QSAwMiAgLi4uLi4uLl4uLi4uLi4uLgogICAgMjNDMDogMDAgMEEgNUYgMTIgMEEgMDQgMEIgRkYg
RkYgMEEgMDMgMDAgMEEgNUMgMDggNTAgIC4uXy4uLi4uLi4uLi5cLlAKICAgIDIzRDA6IDMwIDM1
IDM2IDEyIDM0IDA0IDEyIDBCIDA0IDBCIEZGIEZGIDAwIDRDIDRFIDRCICAwNTYuNC4uLi4uLi4u
TE5LCiAgICAyM0UwOiA0MiAwMCAxMiAwQiAwNCAwQiBGRiBGRiAwMSA0QyA0RSA0QiA0MyAwMCAx
MiAwQyAgQi4uLi4uLi4uTE5LQy4uLgogICAgMjNGMDogMDQgMEIgRkYgRkYgMEEgMDIgNEMgNEUg
NEIgNDQgMDAgMTIgMEMgMDQgMEIgRkYgIC4uLi4uLkxOS0QuLi4uLi4KICAgIDI0MDA6IEZGIDBB
IDAzIDRDIDRFIDRCIDQxIDAwIDA4IDQ3IDMwIDM1IDM2IDEyIDJDIDA0ICAuLi5MTktBLi5HMDU2
LiwuCiAgICAyNDEwOiAxMiAwOSAwNCAwQiBGRiBGRiAwMCAwMCAwQSA2MSAxMiAwOSAwNCAwQiBG
RiBGRiAgLi4uLi4uLi4uYS4uLi4uLgogICAgMjQyMDogMDEgMDAgMEEgNjIgMTIgMEEgMDQgMEIg
RkYgRkYgMEEgMDIgMDAgMEEgNjMgMTIgIC4uLmIuLi4uLi4uLi4uYy4KICAgIDI0MzA6IDBBIDA0
IDBCIEZGIEZGIDBBIDAzIDAwIDBBIDYwIDA4IDUwIDMwIDM1IDM3IDEyICAuLi4uLi4uLi5gLlAw
NTcuCiAgICAyNDQwOiAzNCAwNCAxMiAwQiAwNCAwQiBGRiBGRiAwMCA0QyA0RSA0QiA0NiAwMCAx
MiAwQiAgNC4uLi4uLi4uTE5LRi4uLgogICAgMjQ1MDogMDQgMEIgRkYgRkYgMDEgNEMgNEUgNEIg
NDcgMDAgMTIgMEMgMDQgMEIgRkYgRkYgIC4uLi4uTE5LRy4uLi4uLi4KICAgIDI0NjA6IDBBIDAy
IDRDIDRFIDRCIDQ4IDAwIDEyIDBDIDA0IDBCIEZGIEZGIDBBIDAzIDRDICAuLkxOS0guLi4uLi4u
Li5MCiAgICAyNDcwOiA0RSA0QiA0NSAwMCAwOCA0NyAzMCAzNSAzNyAxMiAyQyAwNCAxMiAwOSAw
NCAwQiAgTktFLi5HMDU3LiwuLi4uLgogICAgMjQ4MDogRkYgRkYgMDAgMDAgMEEgNjUgMTIgMDkg
MDQgMEIgRkYgRkYgMDEgMDAgMEEgNjYgIC4uLi4uZS4uLi4uLi4uLmYKICAgIDI0OTA6IDEyIDBB
IDA0IDBCIEZGIEZGIDBBIDAyIDAwIDBBIDY3IDEyIDBBIDA0IDBCIEZGICAuLi4uLi4uLi4uZy4u
Li4uCiAgICAyNEEwOiBGRiAwQSAwMyAwMCAwQSA2NCAwOCA1MCAzMCAzNSAzOCAxMiAzNCAwNCAx
MiAwQiAgLi4uLi5kLlAwNTguNC4uLgogICAgMjRCMDogMDQgMEIgRkYgRkYgMDAgNEMgNEUgNEIg
NDIgMDAgMTIgMEIgMDQgMEIgRkYgRkYgIC4uLi4uTE5LQi4uLi4uLi4KICAgIDI0QzA6IDAxIDRD
IDRFIDRCIDQzIDAwIDEyIDBDIDA0IDBCIEZGIEZGIDBBIDAyIDRDIDRFICAuTE5LQy4uLi4uLi4u
LkxOCiAgICAyNEQwOiA0QiA0NCAwMCAxMiAwQyAwNCAwQiBGRiBGRiAwQSAwMyA0QyA0RSA0QiA0
MSAwMCAgS0QuLi4uLi4uLi5MTktBLgogICAgMjRFMDogMDggNDcgMzAgMzUgMzggMTIgMkMgMDQg
MTIgMDkgMDQgMEIgRkYgRkYgMDAgMDAgIC5HMDU4LiwuLi4uLi4uLi4KICAgIDI0RjA6IDBBIDY5
IDEyIDA5IDA0IDBCIEZGIEZGIDAxIDAwIDBBIDZBIDEyIDBBIDA0IDBCICAuaS4uLi4uLi4uLmou
Li4uCiAgICAyNTAwOiBGRiBGRiAwQSAwMiAwMCAwQSA2QiAxMiAwQSAwNCAwQiBGRiBGRiAwQSAw
MyAwMCAgLi4uLi4uay4uLi4uLi4uLgogICAgMjUxMDogMEEgNjggMDggNTAgMzAgMzUgMzkgMTIg
MzQgMDQgMTIgMEIgMDQgMEIgRkYgRkYgIC5oLlAwNTkuNC4uLi4uLi4KICAgIDI1MjA6IDAwIDRD
IDRFIDRCIDQ0IDAwIDEyIDBCIDA0IDBCIEZGIEZGIDAxIDRDIDRFIDRCICAuTE5LRC4uLi4uLi4u
TE5LCiAgICAyNTMwOiA0MSAwMCAxMiAwQyAwNCAwQiBGRiBGRiAwQSAwMiA0QyA0RSA0QiA0MiAw
MCAxMiAgQS4uLi4uLi4uLkxOS0IuLgogICAgMjU0MDogMEMgMDQgMEIgRkYgRkYgMEEgMDMgNEMg
NEUgNEIgNDMgMDAgMDggNDcgMzAgMzUgIC4uLi4uLi5MTktDLi5HMDUKICAgIDI1NTA6IDM5IDEy
IDJDIDA0IDEyIDA5IDA0IDBCIEZGIEZGIDAwIDAwIDBBIDZCIDEyIDA5ICA5LiwuLi4uLi4uLi4u
ay4uCiAgICAyNTYwOiAwNCAwQiBGRiBGRiAwMSAwMCAwQSA2OCAxMiAwQSAwNCAwQiBGRiBGRiAw
QSAwMiAgLi4uLi4uLmguLi4uLi4uLgogICAgMjU3MDogMDAgMEEgNjkgMTIgMEEgMDQgMEIgRkYg
RkYgMEEgMDMgMDAgMEEgNkEgMDggNTAgIC4uaS4uLi4uLi4uLi5qLlAKICAgIDI1ODA6IDMwIDM1
IDQxIDEyIDM0IDA0IDEyIDBCIDA0IDBCIEZGIEZGIDAwIDRDIDRFIDRCICAwNUEuNC4uLi4uLi4u
TE5LCiAgICAyNTkwOiA0OCAwMCAxMiAwQiAwNCAwQiBGRiBGRiAwMSA0QyA0RSA0QiA0NSAwMCAx
MiAwQyAgSC4uLi4uLi4uTE5LRS4uLgogICAgMjVBMDogMDQgMEIgRkYgRkYgMEEgMDIgNEMgNEUg
NEIgNDYgMDAgMTIgMEMgMDQgMEIgRkYgIC4uLi4uLkxOS0YuLi4uLi4KICAgIDI1QjA6IEZGIDBB
IDAzIDRDIDRFIDRCIDQ3IDAwIDA4IDQ3IDMwIDM1IDQxIDEyIDJDIDA0ICAuLi5MTktHLi5HMDVB
LiwuCiAgICAyNUMwOiAxMiAwOSAwNCAwQiBGRiBGRiAwMCAwMCAwQSA2NyAxMiAwOSAwNCAwQiBG
RiBGRiAgLi4uLi4uLi4uZy4uLi4uLgogICAgMjVEMDogMDEgMDAgMEEgNjQgMTIgMEEgMDQgMEIg
RkYgRkYgMEEgMDIgMDAgMEEgNjUgMTIgIC4uLmQuLi4uLi4uLi4uZS4KICAgIDI1RTA6IDBBIDA0
IDBCIEZGIEZGIDBBIDAzIDAwIDBBIDY2IDA4IDUwIDMwIDM1IDQyIDEyICAuLi4uLi4uLi5mLlAw
NUIuCiAgICAyNUYwOiAzNCAwNCAxMiAwQiAwNCAwQiBGRiBGRiAwMCA0QyA0RSA0QiA0NCAwMCAx
MiAwQiAgNC4uLi4uLi4uTE5LRC4uLgogICAgMjYwMDogMDQgMEIgRkYgRkYgMDEgNEMgNEUgNEIg
NDEgMDAgMTIgMEMgMDQgMEIgRkYgRkYgIC4uLi4uTE5LQS4uLi4uLi4KICAgIDI2MTA6IDBBIDAy
IDRDIDRFIDRCIDQyIDAwIDEyIDBDIDA0IDBCIEZGIEZGIDBBIDAzIDRDICAuLkxOS0IuLi4uLi4u
Li5MCiAgICAyNjIwOiA0RSA0QiA0MyAwMCAwOCA0NyAzMCAzNSA0MiAxMiAyQyAwNCAxMiAwOSAw
NCAwQiAgTktDLi5HMDVCLiwuLi4uLgogICAgMjYzMDogRkYgRkYgMDAgMDAgMEEgNjMgMTIgMDkg
MDQgMEIgRkYgRkYgMDEgMDAgMEEgNjAgIC4uLi4uYy4uLi4uLi4uLmAKICAgIDI2NDA6IDEyIDBB
IDA0IDBCIEZGIEZGIDBBIDAyIDAwIDBBIDYxIDEyIDBBIDA0IDBCIEZGICAuLi4uLi4uLi4uYS4u
Li4uCiAgICAyNjUwOiBGRiAwQSAwMyAwMCAwQSA2MiAwOCA1MCAzMCAzNSA0MyAxMiAzNCAwNCAx
MiAwQiAgLi4uLi5iLlAwNUMuNC4uLgogICAgMjY2MDogMDQgMEIgRkYgRkYgMDAgNEMgNEUgNEIg
NDggMDAgMTIgMEIgMDQgMEIgRkYgRkYgIC4uLi4uTE5LSC4uLi4uLi4KICAgIDI2NzA6IDAxIDRD
IDRFIDRCIDQ1IDAwIDEyIDBDIDA0IDBCIEZGIEZGIDBBIDAyIDRDIDRFICAuTE5LRS4uLi4uLi4u
LkxOCiAgICAyNjgwOiA0QiA0NiAwMCAxMiAwQyAwNCAwQiBGRiBGRiAwQSAwMyA0QyA0RSA0QiA0
NyAwMCAgS0YuLi4uLi4uLi5MTktHLgogICAgMjY5MDogMDggNDcgMzAgMzUgNDMgMTIgMkMgMDQg
MTIgMDkgMDQgMEIgRkYgRkYgMDAgMDAgIC5HMDVDLiwuLi4uLi4uLi4KICAgIDI2QTA6IDBBIDVG
IDEyIDA5IDA0IDBCIEZGIEZGIDAxIDAwIDBBIDVDIDEyIDBBIDA0IDBCICAuXy4uLi4uLi4uLlwu
Li4uCiAgICAyNkIwOiBGRiBGRiAwQSAwMiAwMCAwQSA1RCAxMiAwQSAwNCAwQiBGRiBGRiAwQSAw
MyAwMCAgLi4uLi4uXS4uLi4uLi4uLgogICAgMjZDMDogMEEgNUUgMDggNTAgMzAgMzUgNDQgMTIg
MzQgMDQgMTIgMEIgMDQgMEIgRkYgRkYgIC5eLlAwNUQuNC4uLi4uLi4KICAgIDI2RDA6IDAwIDRD
IDRFIDRCIDQ0IDAwIDEyIDBCIDA0IDBCIEZGIEZGIDAxIDRDIDRFIDRCICAuTE5LRC4uLi4uLi4u
TE5LCiAgICAyNkUwOiA0MSAwMCAxMiAwQyAwNCAwQiBGRiBGRiAwQSAwMiA0QyA0RSA0QiA0MiAw
MCAxMiAgQS4uLi4uLi4uLkxOS0IuLgogICAgMjZGMDogMEMgMDQgMEIgRkYgRkYgMEEgMDMgNEMg
NEUgNEIgNDMgMDAgMDggNDcgMzAgMzUgIC4uLi4uLi5MTktDLi5HMDUKICAgIDI3MDA6IDQ0IDEy
IDJDIDA0IDEyIDA5IDA0IDBCIEZGIEZGIDAwIDAwIDBBIDVCIDEyIDA5ICBELiwuLi4uLi4uLi4u
Wy4uCiAgICAyNzEwOiAwNCAwQiBGRiBGRiAwMSAwMCAwQSA1OCAxMiAwQSAwNCAwQiBGRiBGRiAw
QSAwMiAgLi4uLi4uLlguLi4uLi4uLgogICAgMjcyMDogMDAgMEEgNTkgMTIgMEEgMDQgMEIgRkYg
RkYgMEEgMDMgMDAgMEEgNUEgMDggNTAgIC4uWS4uLi4uLi4uLi5aLlAKICAgIDI3MzA6IDMwIDM1
IDQ1IDEyIDM0IDA0IDEyIDBCIDA0IDBCIEZGIEZGIDAwIDRDIDRFIDRCICAwNUUuNC4uLi4uLi4u
TE5LCiAgICAyNzQwOiA0MSAwMCAxMiAwQiAwNCAwQiBGRiBGRiAwMSA0QyA0RSA0QiA0MiAwMCAx
MiAwQyAgQS4uLi4uLi4uTE5LQi4uLgogICAgMjc1MDogMDQgMEIgRkYgRkYgMEEgMDIgNEMgNEUg
NEIgNDMgMDAgMTIgMEMgMDQgMEIgRkYgIC4uLi4uLkxOS0MuLi4uLi4KICAgIDI3NjA6IEZGIDBB
IDAzIDRDIDRFIDRCIDQ0IDAwIDA4IDQ3IDMwIDM1IDQ1IDEyIDJDIDA0ICAuLi5MTktELi5HMDVF
LiwuCiAgICAyNzcwOiAxMiAwOSAwNCAwQiBGRiBGRiAwMCAwMCAwQSA1OCAxMiAwOSAwNCAwQiBG
RiBGRiAgLi4uLi4uLi4uWC4uLi4uLgogICAgMjc4MDogMDEgMDAgMEEgNTkgMTIgMEEgMDQgMEIg
RkYgRkYgMEEgMDIgMDAgMEEgNUEgMTIgIC4uLlkuLi4uLi4uLi4uWi4KICAgIDI3OTA6IDBBIDA0
IDBCIEZGIEZGIDBBIDAzIDAwIDBBIDVCIDA4IDUwIDMwIDM1IDQ2IDEyICAuLi4uLi4uLi5bLlAw
NUYuCiAgICAyN0EwOiAzNCAwNCAxMiAwQiAwNCAwQiBGRiBGRiAwMCA0QyA0RSA0QiA0NSAwMCAx
MiAwQiAgNC4uLi4uLi4uTE5LRS4uLgogICAgMjdCMDogMDQgMEIgRkYgRkYgMDEgNEMgNEUgNEIg
NDYgMDAgMTIgMEMgMDQgMEIgRkYgRkYgIC4uLi4uTE5LRi4uLi4uLi4KICAgIDI3QzA6IDBBIDAy
IDRDIDRFIDRCIDQ3IDAwIDEyIDBDIDA0IDBCIEZGIEZGIDBBIDAzIDRDICAuLkxOS0cuLi4uLi4u
Li5MCiAgICAyN0QwOiA0RSA0QiA0OCAwMCAwOCA0NyAzMCAzNSA0NiAxMiAyQyAwNCAxMiAwOSAw
NCAwQiAgTktILi5HMDVGLiwuLi4uLgogICAgMjdFMDogRkYgRkYgMDAgMDAgMEEgNUMgMTIgMDkg
MDQgMEIgRkYgRkYgMDEgMDAgMEEgNUQgIC4uLi4uXC4uLi4uLi4uLl0KICAgIDI3RjA6IDEyIDBB
IDA0IDBCIEZGIEZGIDBBIDAyIDAwIDBBIDVFIDEyIDBBIDA0IDBCIEZGICAuLi4uLi4uLi4uXi4u
Li4uCiAgICAyODAwOiBGRiAwQSAwMyAwMCAwQSA1RiAwOCA1MCAzMCAzNiAzMCAxMiAzNCAwNCAx
MiAwQiAgLi4uLi5fLlAwNjAuNC4uLgogICAgMjgxMDogMDQgMEIgRkYgRkYgMDAgNEMgNEUgNEIg
NDEgMDAgMTIgMEIgMDQgMEIgRkYgRkYgIC4uLi4uTE5LQS4uLi4uLi4KICAgIDI4MjA6IDAxIDRD
IDRFIDRCIDQyIDAwIDEyIDBDIDA0IDBCIEZGIEZGIDBBIDAyIDRDIDRFICAuTE5LQi4uLi4uLi4u
LkxOCiAgICAyODMwOiA0QiA0MyAwMCAxMiAwQyAwNCAwQiBGRiBGRiAwQSAwMyA0QyA0RSA0QiA0
NCAwMCAgS0MuLi4uLi4uLi5MTktELgogICAgMjg0MDogMDggNDcgMzAgMzYgMzAgMTIgMkMgMDQg
MTIgMDkgMDQgMEIgRkYgRkYgMDAgMDAgIC5HMDYwLiwuLi4uLi4uLi4KICAgIDI4NTA6IDBBIDYw
IDEyIDA5IDA0IDBCIEZGIEZGIDAxIDAwIDBBIDYxIDEyIDBBIDA0IDBCICAuYC4uLi4uLi4uLmEu
Li4uCiAgICAyODYwOiBGRiBGRiAwQSAwMiAwMCAwQSA2MiAxMiAwQSAwNCAwQiBGRiBGRiAwQSAw
MyAwMCAgLi4uLi4uYi4uLi4uLi4uLgogICAgMjg3MDogMEEgNjMgMDggNTAgNDQgMzAgMzAgMTIg
NDEgMTEgMTMgMTIgMEIgMDQgMEIgRkYgIC5jLlBEMDAuQS4uLi4uLi4KICAgIDI4ODA6IEZGIDAw
IDRDIDRFIDRCIDQyIDAwIDEyIDBEIDA0IDBDIEZGIEZGIDAxIDAwIDAwICAuLkxOS0IuLi4uLi4u
Li4uCiAgICAyODkwOiA0QyA0RSA0QiA0MSAwMCAxMiAwRCAwNCAwQyBGRiBGRiAwMSAwMCAwMSA0
QyA0RSAgTE5LQS4uLi4uLi4uLi5MTgogICAgMjhBMDogNEIgNDEgMDAgMTIgMEUgMDQgMEMgRkYg
RkYgMDEgMDAgMEEgMDIgNEMgNEUgNEIgIEtBLi4uLi4uLi4uLi5MTksKICAgIDI4QjA6IDQxIDAw
IDEyIDBFIDA0IDBDIEZGIEZGIDAxIDAwIDBBIDAzIDRDIDRFIDRCIDQxICBBLi4uLi4uLi4uLi5M
TktBCiAgICAyOEMwOiAwMCAxMiAwRCAwNCAwQyBGRiBGRiAwMiAwMCAwMCA0QyA0RSA0QiA0MSAw
MCAxMiAgLi4uLi4uLi4uLkxOS0EuLgogICAgMjhEMDogMEQgMDQgMEMgRkYgRkYgMDIgMDAgMDEg
NEMgNEUgNEIgNDEgMDAgMTIgMEQgMDQgIC4uLi4uLi4uTE5LQS4uLi4KICAgIDI4RTA6IDBDIEZG
IEZGIDAzIDAwIDAwIDRDIDRFIDRCIDQyIDAwIDEyIDBEIDA0IDBDIEZGICAuLi4uLi5MTktCLi4u
Li4uCiAgICAyOEYwOiBGRiAwMyAwMCAwMSA0QyA0RSA0QiA0MiAwMCAxMiAwRSAwNCAwQyBGRiBG
RiAwMyAgLi4uLkxOS0IuLi4uLi4uLgogICAgMjkwMDogMDAgMEEgMDIgNEMgNEUgNEIgNDIgMDAg
MTIgMEUgMDQgMEMgRkYgRkYgMDMgMDAgIC4uLkxOS0IuLi4uLi4uLi4KICAgIDI5MTA6IDBBIDAz
IDRDIDRFIDRCIDQyIDAwIDEyIDBEIDA0IDBDIEZGIEZGIDA0IDAwIDAwICAuLkxOS0IuLi4uLi4u
Li4uCiAgICAyOTIwOiA0QyA0RSA0QiA0MiAwMCAxMiAwRCAwNCAwQyBGRiBGRiAwNCAwMCAwMSA0
QyA0RSAgTE5LQi4uLi4uLi4uLi5MTgogICAgMjkzMDogNEIgNDIgMDAgMTIgMEQgMDQgMEMgRkYg
RkYgMDUgMDAgMDAgNEMgNEUgNEIgNDMgIEtCLi4uLi4uLi4uLkxOS0MKICAgIDI5NDA6IDAwIDEy
IDBEIDA0IDBDIEZGIEZGIDA1IDAwIDAxIDRDIDRFIDRCIDQzIDAwIDEyICAuLi4uLi4uLi4uTE5L
Qy4uCiAgICAyOTUwOiAwRSAwNCAwQyBGRiBGRiAwNSAwMCAwQSAwMiA0QyA0RSA0QiA0MyAwMCAx
MiAwRSAgLi4uLi4uLi4uTE5LQy4uLgogICAgMjk2MDogMDQgMEMgRkYgRkYgMDUgMDAgMEEgMDMg
NEMgNEUgNEIgNDMgMDAgMTIgMEQgMDQgIC4uLi4uLi4uTE5LQy4uLi4KICAgIDI5NzA6IDBDIEZG
IEZGIDA3IDAwIDAwIDRDIDRFIDRCIDQ0IDAwIDEyIDBEIDA0IDBDIEZGICAuLi4uLi5MTktELi4u
Li4uCiAgICAyOTgwOiBGRiAwNyAwMCAwMSA0QyA0RSA0QiA0NCAwMCAwOCA0MSA1MiAzMCAzMCAx
MiA0QiAgLi4uLkxOS0QuLkFSMDAuSwogICAgMjk5MDogMEUgMTMgMTIgMDkgMDQgMEIgRkYgRkYg
MDAgMDAgMEEgMTkgMTIgMEIgMDQgMEMgIC4uLi4uLi4uLi4uLi4uLi4KICAgIDI5QTA6IEZGIEZG
IDAxIDAwIDAwIDAwIDBBIDE4IDEyIDBCIDA0IDBDIEZGIEZGIDAxIDAwICAuLi4uLi4uLi4uLi4u
Li4uCiAgICAyOUIwOiAwMSAwMCAwQSAxOCAxMiAwQyAwNCAwQyBGRiBGRiAwMSAwMCAwQSAwMiAw
MCAwQSAgLi4uLi4uLi4uLi4uLi4uLgogICAgMjlDMDogMTggMTIgMEMgMDQgMEMgRkYgRkYgMDEg
MDAgMEEgMDMgMDAgMEEgMTggMTIgMEIgIC4uLi4uLi4uLi4uLi4uLi4KICAgIDI5RDA6IDA0IDBD
IEZGIEZGIDAyIDAwIDAwIDAwIDBBIDE4IDEyIDBCIDA0IDBDIEZGIEZGICAuLi4uLi4uLi4uLi4u
Li4uCiAgICAyOUUwOiAwMiAwMCAwMSAwMCAwQSAxOCAxMiAwQiAwNCAwQyBGRiBGRiAwMyAwMCAw
MCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMjlGMDogMEEgMTkgMTIgMEIgMDQgMEMgRkYgRkYg
MDMgMDAgMDEgMDAgMEEgMTkgMTIgMEMgIC4uLi4uLi4uLi4uLi4uLi4KICAgIDJBMDA6IDA0IDBD
IEZGIEZGIDAzIDAwIDBBIDAyIDAwIDBBIDE5IDEyIDBDIDA0IDBDIEZGICAuLi4uLi4uLi4uLi4u
Li4uCiAgICAyQTEwOiBGRiAwMyAwMCAwQSAwMyAwMCAwQSAxOSAxMiAwQiAwNCAwQyBGRiBGRiAw
NCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMkEyMDogMDAgMDAgMEEgMTkgMTIgMEIgMDQgMEMg
RkYgRkYgMDQgMDAgMDEgMDAgMEEgMTkgIC4uLi4uLi4uLi4uLi4uLi4KICAgIDJBMzA6IDEyIDBC
IDA0IDBDIEZGIEZGIDA1IDAwIDAwIDAwIDBBIDFBIDEyIDBCIDA0IDBDICAuLi4uLi4uLi4uLi4u
Li4uCiAgICAyQTQwOiBGRiBGRiAwNSAwMCAwMSAwMCAwQSAxQSAxMiAwQyAwNCAwQyBGRiBGRiAw
NSAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMkE1MDogMEEgMDIgMDAgMEEgMUEgMTIgMEMgMDQg
MEMgRkYgRkYgMDUgMDAgMEEgMDMgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAgIDJBNjA6IDBBIDFB
IDEyIDBCIDA0IDBDIEZGIEZGIDA3IDAwIDAwIDAwIDBBIDFCIDEyIDBCICAuLi4uLi4uLi4uLi4u
Li4uCiAgICAyQTcwOiAwNCAwQyBGRiBGRiAwNyAwMCAwMSAwMCAwQSAxQiAwOCA1MCAzMCAzNiAz
OSAxMiAgLi4uLi4uLi4uLi5QMDY5LgogICAgMkE4MDogMzQgMDQgMTIgMEIgMDQgMEIgRkYgRkYg
MDAgNEMgNEUgNEIgNDEgMDAgMTIgMEIgIDQuLi4uLi4uLkxOS0EuLi4KICAgIDJBOTA6IDA0IDBC
IEZGIEZGIDAxIDRDIDRFIDRCIDQyIDAwIDEyIDBDIDA0IDBCIEZGIEZGICAuLi4uLkxOS0IuLi4u
Li4uCiAgICAyQUEwOiAwQSAwMiA0QyA0RSA0QiA0MyAwMCAxMiAwQyAwNCAwQiBGRiBGRiAwQSAw
MyA0QyAgLi5MTktDLi4uLi4uLi4uTAogICAgMkFCMDogNEUgNEIgNDQgMDAgMDggNDcgMzAgMzYg
MzkgMTIgMkMgMDQgMTIgMDkgMDQgMEIgIE5LRC4uRzA2OS4sLi4uLi4KICAgIDJBQzA6IEZGIEZG
IDAwIDAwIDBBIDE4IDEyIDA5IDA0IDBCIEZGIEZGIDAxIDAwIDBBIDE5ICAuLi4uLi4uLi4uLi4u
Li4uCiAgICAyQUQwOiAxMiAwQSAwNCAwQiBGRiBGRiAwQSAwMiAwMCAwQSAxQSAxMiAwQSAwNCAw
QiBGRiAgLi4uLi4uLi4uLi4uLi4uLgogICAgMkFFMDogRkYgMEEgMDMgMDAgMEEgMUIgMDggNTAg
MzAgMzYgNDEgMTIgMzQgMDQgMTIgMEIgIC4uLi4uLi5QMDZBLjQuLi4KICAgIDJBRjA6IDA0IDBC
IEZGIEZGIDAwIDRDIDRFIDRCIDQ1IDAwIDEyIDBCIDA0IDBCIEZGIEZGICAuLi4uLkxOS0UuLi4u
Li4uCiAgICAyQjAwOiAwMSA0QyA0RSA0QiA0NiAwMCAxMiAwQyAwNCAwQiBGRiBGRiAwQSAwMiA0
QyA0RSAgLkxOS0YuLi4uLi4uLi5MTgogICAgMkIxMDogNEIgNDcgMDAgMTIgMEMgMDQgMEIgRkYg
RkYgMEEgMDMgNEMgNEUgNEIgNDggMDAgIEtHLi4uLi4uLi4uTE5LSC4KICAgIDJCMjA6IDA4IDQ3
IDMwIDM2IDQxIDEyIDJDIDA0IDEyIDA5IDA0IDBCIEZGIEZGIDAwIDAwICAuRzA2QS4sLi4uLi4u
Li4uCiAgICAyQjMwOiAwQSAxQyAxMiAwOSAwNCAwQiBGRiBGRiAwMSAwMCAwQSAxRCAxMiAwQSAw
NCAwQiAgLi4uLi4uLi4uLi4uLi4uLgogICAgMkI0MDogRkYgRkYgMEEgMDIgMDAgMEEgMUUgMTIg
MEEgMDQgMEIgRkYgRkYgMEEgMDMgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAgIDJCNTA6IDBBIDFG
IDA4IDUwIDMwIDM2IDQyIDEyIDM0IDA0IDEyIDBCIDA0IDBCIEZGIEZGICAuLi5QMDZCLjQuLi4u
Li4uCiAgICAyQjYwOiAwMCA0QyA0RSA0QiA0MSAwMCAxMiAwQiAwNCAwQiBGRiBGRiAwMSA0QyA0
RSA0QiAgLkxOS0EuLi4uLi4uLkxOSwogICAgMkI3MDogNDIgMDAgMTIgMEMgMDQgMEIgRkYgRkYg
MEEgMDIgNEMgNEUgNEIgNDMgMDAgMTIgIEIuLi4uLi4uLi5MTktDLi4KICAgIDJCODA6IDBDIDA0
IDBCIEZGIEZGIDBBIDAzIDRDIDRFIDRCIDQ0IDAwIDA4IDQ3IDMwIDM2ICAuLi4uLi4uTE5LRC4u
RzA2CiAgICAyQjkwOiA0MiAxMiAyQyAwNCAxMiAwOSAwNCAwQiBGRiBGRiAwMCAwMCAwQSAyMCAx
MiAwOSAgQi4sLi4uLi4uLi4uLiAuLgogICAgMkJBMDogMDQgMEIgRkYgRkYgMDEgMDAgMEEgMjEg
MTIgMEEgMDQgMEIgRkYgRkYgMEEgMDIgIC4uLi4uLi4hLi4uLi4uLi4KICAgIDJCQjA6IDAwIDBB
IDIyIDEyIDBBIDA0IDBCIEZGIEZGIDBBIDAzIDAwIDBBIDIzIDA4IDUwICAuLiIuLi4uLi4uLi4u
Iy5QCiAgICAyQkMwOiAzMCAzNiA0MyAxMiAzNCAwNCAxMiAwQiAwNCAwQiBGRiBGRiAwMCA0QyA0
RSA0QiAgMDZDLjQuLi4uLi4uLkxOSwogICAgMkJEMDogNDUgMDAgMTIgMEIgMDQgMEIgRkYgRkYg
MDEgNEMgNEUgNEIgNDYgMDAgMTIgMEMgIEUuLi4uLi4uLkxOS0YuLi4KICAgIDJCRTA6IDA0IDBC
IEZGIEZGIDBBIDAyIDRDIDRFIDRCIDQ3IDAwIDEyIDBDIDA0IDBCIEZGICAuLi4uLi5MTktHLi4u
Li4uCiAgICAyQkYwOiBGRiAwQSAwMyA0QyA0RSA0QiA0OCAwMCAwOCA0NyAzMCAzNiA0MyAxMiAy
QyAwNCAgLi4uTE5LSC4uRzA2Qy4sLgogICAgMkMwMDogMTIgMDkgMDQgMEIgRkYgRkYgMDAgMDAg
MEEgMjQgMTIgMDkgMDQgMEIgRkYgRkYgIC4uLi4uLi4uLiQuLi4uLi4KICAgIDJDMTA6IDAxIDAw
IDBBIDI1IDEyIDBBIDA0IDBCIEZGIEZGIDBBIDAyIDAwIDBBIDI2IDEyICAuLi4lLi4uLi4uLi4u
LiYuCiAgICAyQzIwOiAwQSAwNCAwQiBGRiBGRiAwQSAwMyAwMCAwQSAyNyAwOCA1MCAzMCAzNiA0
NCAxMiAgLi4uLi4uLi4uJy5QMDZELgogICAgMkMzMDogMzQgMDQgMTIgMEIgMDQgMEIgRkYgRkYg
MDAgNEMgNEUgNEIgNDEgMDAgMTIgMEIgIDQuLi4uLi4uLkxOS0EuLi4KICAgIDJDNDA6IDA0IDBC
IEZGIEZGIDAxIDRDIDRFIDRCIDQyIDAwIDEyIDBDIDA0IDBCIEZGIEZGICAuLi4uLkxOS0IuLi4u
Li4uCiAgICAyQzUwOiAwQSAwMiA0QyA0RSA0QiA0MyAwMCAxMiAwQyAwNCAwQiBGRiBGRiAwQSAw
MyA0QyAgLi5MTktDLi4uLi4uLi4uTAogICAgMkM2MDogNEUgNEIgNDQgMDAgMDggNDcgMzAgMzYg
NDQgMTIgMkMgMDQgMTIgMDkgMDQgMEIgIE5LRC4uRzA2RC4sLi4uLi4KICAgIDJDNzA6IEZGIEZG
IDAwIDAwIDBBIDI4IDEyIDA5IDA0IDBCIEZGIEZGIDAxIDAwIDBBIDI5ICAuLi4uLiguLi4uLi4u
Li4pCiAgICAyQzgwOiAxMiAwQSAwNCAwQiBGRiBGRiAwQSAwMiAwMCAwQSAyQSAxMiAwQSAwNCAw
QiBGRiAgLi4uLi4uLi4uLiouLi4uLgogICAgMkM5MDogRkYgMEEgMDMgMDAgMEEgMkIgMDggNTAg
MzAgMzYgNDUgMTIgMzQgMDQgMTIgMEIgIC4uLi4uKy5QMDZFLjQuLi4KICAgIDJDQTA6IDA0IDBC
IEZGIEZGIDAwIDRDIDRFIDRCIDQzIDAwIDEyIDBCIDA0IDBCIEZGIEZGICAuLi4uLkxOS0MuLi4u
Li4uCiAgICAyQ0IwOiAwMSA0QyA0RSA0QiA0NCAwMCAxMiAwQyAwNCAwQiBGRiBGRiAwQSAwMiA0
QyA0RSAgLkxOS0QuLi4uLi4uLi5MTgogICAgMkNDMDogNEIgNDEgMDAgMTIgMEMgMDQgMEIgRkYg
RkYgMEEgMDMgNEMgNEUgNEIgNDIgMDAgIEtBLi4uLi4uLi4uTE5LQi4KICAgIDJDRDA6IDA4IDQ3
IDMwIDM2IDQ1IDEyIDJDIDA0IDEyIDA5IDA0IDBCIEZGIEZGIDAwIDAwICAuRzA2RS4sLi4uLi4u
Li4uCiAgICAyQ0UwOiAwQSAyQSAxMiAwOSAwNCAwQiBGRiBGRiAwMSAwMCAwQSAyQiAxMiAwQSAw
NCAwQiAgLiouLi4uLi4uLi4rLi4uLgogICAgMkNGMDogRkYgRkYgMEEgMDIgMDAgMEEgMjggMTIg
MEEgMDQgMEIgRkYgRkYgMEEgMDMgMDAgIC4uLi4uLiguLi4uLi4uLi4KICAgIDJEMDA6IDBBIDI5
IDA4IDUwIDMwIDM2IDQ2IDEyIDM0IDA0IDEyIDBCIDA0IDBCIEZGIEZGICAuKS5QMDZGLjQuLi4u
Li4uCiAgICAyRDEwOiAwMCA0QyA0RSA0QiA0NyAwMCAxMiAwQiAwNCAwQiBGRiBGRiAwMSA0QyA0
RSA0QiAgLkxOS0cuLi4uLi4uLkxOSwogICAgMkQyMDogNDggMDAgMTIgMEMgMDQgMEIgRkYgRkYg
MEEgMDIgNEMgNEUgNEIgNDUgMDAgMTIgIEguLi4uLi4uLi5MTktFLi4KICAgIDJEMzA6IDBDIDA0
IDBCIEZGIEZGIDBBIDAzIDRDIDRFIDRCIDQ2IDAwIDA4IDQ3IDMwIDM2ICAuLi4uLi4uTE5LRi4u
RzA2CiAgICAyRDQwOiA0NiAxMiAyQyAwNCAxMiAwOSAwNCAwQiBGRiBGRiAwMCAwMCAwQSAyNiAx
MiAwOSAgRi4sLi4uLi4uLi4uLiYuLgogICAgMkQ1MDogMDQgMEIgRkYgRkYgMDEgMDAgMEEgMjcg
MTIgMEEgMDQgMEIgRkYgRkYgMEEgMDIgIC4uLi4uLi4nLi4uLi4uLi4KICAgIDJENjA6IDAwIDBB
IDI0IDEyIDBBIDA0IDBCIEZGIEZGIDBBIDAzIDAwIDBBIDI1IDA4IDUwICAuLiQuLi4uLi4uLi4u
JS5QCiAgICAyRDcwOiAzMCAzNyAzMCAxMiAzNCAwNCAxMiAwQiAwNCAwQiBGRiBGRiAwMCA0QyA0
RSA0QiAgMDcwLjQuLi4uLi4uLkxOSwogICAgMkQ4MDogNDMgMDAgMTIgMEIgMDQgMEIgRkYgRkYg
MDEgNEMgNEUgNEIgNDQgMDAgMTIgMEMgIEMuLi4uLi4uLkxOS0QuLi4KICAgIDJEOTA6IDA0IDBC
IEZGIEZGIDBBIDAyIDRDIDRFIDRCIDQxIDAwIDEyIDBDIDA0IDBCIEZGICAuLi4uLi5MTktBLi4u
Li4uCiAgICAyREEwOiBGRiAwQSAwMyA0QyA0RSA0QiA0MiAwMCAwOCA0NyAzMCAzNyAzMCAxMiAy
QyAwNCAgLi4uTE5LQi4uRzA3MC4sLgogICAgMkRCMDogMTIgMDkgMDQgMEIgRkYgRkYgMDAgMDAg
MEEgMjIgMTIgMDkgMDQgMEIgRkYgRkYgIC4uLi4uLi4uLiIuLi4uLi4KICAgIDJEQzA6IDAxIDAw
IDBBIDIzIDEyIDBBIDA0IDBCIEZGIEZGIDBBIDAyIDAwIDBBIDIwIDEyICAuLi4jLi4uLi4uLi4u
LiAuCiAgICAyREQwOiAwQSAwNCAwQiBGRiBGRiAwQSAwMyAwMCAwQSAyMSAwOCA1MCAzMCAzNyAz
MSAxMiAgLi4uLi4uLi4uIS5QMDcxLgogICAgMkRFMDogMzQgMDQgMTIgMEIgMDQgMEIgRkYgRkYg
MDAgNEMgNEUgNEIgNDcgMDAgMTIgMEIgIDQuLi4uLi4uLkxOS0cuLi4KICAgIDJERjA6IDA0IDBC
IEZGIEZGIDAxIDRDIDRFIDRCIDQ4IDAwIDEyIDBDIDA0IDBCIEZGIEZGICAuLi4uLkxOS0guLi4u
Li4uCiAgICAyRTAwOiAwQSAwMiA0QyA0RSA0QiA0NSAwMCAxMiAwQyAwNCAwQiBGRiBGRiAwQSAw
MyA0QyAgLi5MTktFLi4uLi4uLi4uTAogICAgMkUxMDogNEUgNEIgNDYgMDAgMDggNDcgMzAgMzcg
MzEgMTIgMkMgMDQgMTIgMDkgMDQgMEIgIE5LRi4uRzA3MS4sLi4uLi4KICAgIDJFMjA6IEZGIEZG
IDAwIDAwIDBBIDFFIDEyIDA5IDA0IDBCIEZGIEZGIDAxIDAwIDBBIDFGICAuLi4uLi4uLi4uLi4u
Li4uCiAgICAyRTMwOiAxMiAwQSAwNCAwQiBGRiBGRiAwQSAwMiAwMCAwQSAxQyAxMiAwQSAwNCAw
QiBGRiAgLi4uLi4uLi4uLi4uLi4uLgogICAgMkU0MDogRkYgMEEgMDMgMDAgMEEgMUQgMDggNTAg
MzAgMzcgMzIgMTIgMzQgMDQgMTIgMEIgIC4uLi4uLi5QMDcyLjQuLi4KICAgIDJFNTA6IDA0IDBC
IEZGIEZGIDAwIDRDIDRFIDRCIDQzIDAwIDEyIDBCIDA0IDBCIEZGIEZGICAuLi4uLkxOS0MuLi4u
Li4uCiAgICAyRTYwOiAwMSA0QyA0RSA0QiA0NCAwMCAxMiAwQyAwNCAwQiBGRiBGRiAwQSAwMiA0
QyA0RSAgLkxOS0QuLi4uLi4uLi5MTgogICAgMkU3MDogNEIgNDEgMDAgMTIgMEMgMDQgMEIgRkYg
RkYgMEEgMDMgNEMgNEUgNEIgNDIgMDAgIEtBLi4uLi4uLi4uTE5LQi4KICAgIDJFODA6IDA4IDQ3
IDMwIDM3IDMyIDEyIDJDIDA0IDEyIDA5IDA0IDBCIEZGIEZGIDAwIDAwICAuRzA3Mi4sLi4uLi4u
Li4uCiAgICAyRTkwOiAwQSAxQSAxMiAwOSAwNCAwQiBGRiBGRiAwMSAwMCAwQSAxQiAxMiAwQSAw
NCAwQiAgLi4uLi4uLi4uLi4uLi4uLgogICAgMkVBMDogRkYgRkYgMEEgMDIgMDAgMEEgMTggMTIg
MEEgMDQgMEIgRkYgRkYgMEEgMDMgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAgIDJFQjA6IDBBIDE5
IDA4IDUwIDMwIDM3IDMzIDEyIDM0IDA0IDEyIDBCIDA0IDBCIEZGIEZGICAuLi5QMDczLjQuLi4u
Li4uCiAgICAyRUMwOiAwMCA0QyA0RSA0QiA0MiAwMCAxMiAwQiAwNCAwQiBGRiBGRiAwMSA0QyA0
RSA0QiAgLkxOS0IuLi4uLi4uLkxOSwogICAgMkVEMDogNDMgMDAgMTIgMEMgMDQgMEIgRkYgRkYg
MEEgMDIgNEMgNEUgNEIgNDQgMDAgMTIgIEMuLi4uLi4uLi5MTktELi4KICAgIDJFRTA6IDBDIDA0
IDBCIEZGIEZGIDBBIDAzIDRDIDRFIDRCIDQxIDAwIDA4IDQ3IDMwIDM3ICAuLi4uLi4uTE5LQS4u
RzA3CiAgICAyRUYwOiAzMyAxMiAyQyAwNCAxMiAwOSAwNCAwQiBGRiBGRiAwMCAwMCAwQSAxOSAx
MiAwOSAgMy4sLi4uLi4uLi4uLi4uLgogICAgMkYwMDogMDQgMEIgRkYgRkYgMDEgMDAgMEEgMUEg
MTIgMEEgMDQgMEIgRkYgRkYgMEEgMDIgIC4uLi4uLi4uLi4uLi4uLi4KICAgIDJGMTA6IDAwIDBB
IDFCIDEyIDBBIDA0IDBCIEZGIEZGIDBBIDAzIDAwIDBBIDE4IDA4IDUwICAuLi4uLi4uLi4uLi4u
Li5QCiAgICAyRjIwOiAzMCAzNyAzNCAxMiAzNCAwNCAxMiAwQiAwNCAwQiBGRiBGRiAwMCA0QyA0
RSA0QiAgMDc0LjQuLi4uLi4uLkxOSwogICAgMkYzMDogNDYgMDAgMTIgMEIgMDQgMEIgRkYgRkYg
MDEgNEMgNEUgNEIgNDcgMDAgMTIgMEMgIEYuLi4uLi4uLkxOS0cuLi4KICAgIDJGNDA6IDA0IDBC
IEZGIEZGIDBBIDAyIDRDIDRFIDRCIDQ4IDAwIDEyIDBDIDA0IDBCIEZGICAuLi4uLi5MTktILi4u
Li4uCiAgICAyRjUwOiBGRiAwQSAwMyA0QyA0RSA0QiA0NSAwMCAwOCA0NyAzMCAzNyAzNCAxMiAy
QyAwNCAgLi4uTE5LRS4uRzA3NC4sLgogICAgMkY2MDogMTIgMDkgMDQgMEIgRkYgRkYgMDAgMDAg
MEEgMUQgMTIgMDkgMDQgMEIgRkYgRkYgIC4uLi4uLi4uLi4uLi4uLi4KICAgIDJGNzA6IDAxIDAw
IDBBIDFFIDEyIDBBIDA0IDBCIEZGIEZGIDBBIDAyIDAwIDBBIDFGIDEyICAuLi4uLi4uLi4uLi4u
Li4uCiAgICAyRjgwOiAwQSAwNCAwQiBGRiBGRiAwQSAwMyAwMCAwQSAxQyAwOCA1MCAzMCAzNyAz
NSAxMiAgLi4uLi4uLi4uLi5QMDc1LgogICAgMkY5MDogMzQgMDQgMTIgMEIgMDQgMEIgRkYgRkYg
MDAgNEMgNEUgNEIgNDIgMDAgMTIgMEIgIDQuLi4uLi4uLkxOS0IuLi4KICAgIDJGQTA6IDA0IDBC
IEZGIEZGIDAxIDRDIDRFIDRCIDQzIDAwIDEyIDBDIDA0IDBCIEZGIEZGICAuLi4uLkxOS0MuLi4u
Li4uCiAgICAyRkIwOiAwQSAwMiA0QyA0RSA0QiA0NCAwMCAxMiAwQyAwNCAwQiBGRiBGRiAwQSAw
MyA0QyAgLi5MTktELi4uLi4uLi4uTAogICAgMkZDMDogNEUgNEIgNDEgMDAgMDggNDcgMzAgMzcg
MzUgMTIgMkMgMDQgMTIgMDkgMDQgMEIgIE5LQS4uRzA3NS4sLi4uLi4KICAgIDJGRDA6IEZGIEZG
IDAwIDAwIDBBIDIxIDEyIDA5IDA0IDBCIEZGIEZGIDAxIDAwIDBBIDIyICAuLi4uLiEuLi4uLi4u
Li4iCiAgICAyRkUwOiAxMiAwQSAwNCAwQiBGRiBGRiAwQSAwMiAwMCAwQSAyMyAxMiAwQSAwNCAw
QiBGRiAgLi4uLi4uLi4uLiMuLi4uLgogICAgMkZGMDogRkYgMEEgMDMgMDAgMEEgMjAgMDggNTAg
MzAgMzcgMzYgMTIgMzQgMDQgMTIgMEIgIC4uLi4uIC5QMDc2LjQuLi4KICAgIDMwMDA6IDA0IDBC
IEZGIEZGIDAwIDRDIDRFIDRCIDQ2IDAwIDEyIDBCIDA0IDBCIEZGIEZGICAuLi4uLkxOS0YuLi4u
Li4uCiAgICAzMDEwOiAwMSA0QyA0RSA0QiA0NyAwMCAxMiAwQyAwNCAwQiBGRiBGRiAwQSAwMiA0
QyA0RSAgLkxOS0cuLi4uLi4uLi5MTgogICAgMzAyMDogNEIgNDggMDAgMTIgMEMgMDQgMEIgRkYg
RkYgMEEgMDMgNEMgNEUgNEIgNDUgMDAgIEtILi4uLi4uLi4uTE5LRS4KICAgIDMwMzA6IDA4IDQ3
IDMwIDM3IDM2IDEyIDJDIDA0IDEyIDA5IDA0IDBCIEZGIEZGIDAwIDAwICAuRzA3Ni4sLi4uLi4u
Li4uCiAgICAzMDQwOiAwQSAyNSAxMiAwOSAwNCAwQiBGRiBGRiAwMSAwMCAwQSAyNiAxMiAwQSAw
NCAwQiAgLiUuLi4uLi4uLi4mLi4uLgogICAgMzA1MDogRkYgRkYgMEEgMDIgMDAgMEEgMjcgMTIg
MEEgMDQgMEIgRkYgRkYgMEEgMDMgMDAgIC4uLi4uLicuLi4uLi4uLi4KICAgIDMwNjA6IDBBIDI0
IDA4IDUwIDMwIDM3IDM3IDEyIDM0IDA0IDEyIDBCIDA0IDBCIEZGIEZGICAuJC5QMDc3LjQuLi4u
Li4uCiAgICAzMDcwOiAwMCA0QyA0RSA0QiA0MiAwMCAxMiAwQiAwNCAwQiBGRiBGRiAwMSA0QyA0
RSA0QiAgLkxOS0IuLi4uLi4uLkxOSwogICAgMzA4MDogNDMgMDAgMTIgMEMgMDQgMEIgRkYgRkYg
MEEgMDIgNEMgNEUgNEIgNDQgMDAgMTIgIEMuLi4uLi4uLi5MTktELi4KICAgIDMwOTA6IDBDIDA0
IDBCIEZGIEZGIDBBIDAzIDRDIDRFIDRCIDQxIDAwIDA4IDQ3IDMwIDM3ICAuLi4uLi4uTE5LQS4u
RzA3CiAgICAzMEEwOiAzNyAxMiAyQyAwNCAxMiAwOSAwNCAwQiBGRiBGRiAwMCAwMCAwQSAyOSAx
MiAwOSAgNy4sLi4uLi4uLi4uLikuLgogICAgMzBCMDogMDQgMEIgRkYgRkYgMDEgMDAgMEEgMkEg
MTIgMEEgMDQgMEIgRkYgRkYgMEEgMDIgIC4uLi4uLi4qLi4uLi4uLi4KICAgIDMwQzA6IDAwIDBB
IDJCIDEyIDBBIDA0IDBCIEZGIEZGIDBBIDAzIDAwIDBBIDI4IDA4IDUwICAuLisuLi4uLi4uLi4u
KC5QCiAgICAzMEQwOiAzMCAzNyAzOCAxMiAzNCAwNCAxMiAwQiAwNCAwQiBGRiBGRiAwMCA0QyA0
RSA0QiAgMDc4LjQuLi4uLi4uLkxOSwogICAgMzBFMDogNDQgMDAgMTIgMEIgMDQgMEIgRkYgRkYg
MDEgNEMgNEUgNEIgNDEgMDAgMTIgMEMgIEQuLi4uLi4uLkxOS0EuLi4KICAgIDMwRjA6IDA0IDBC
IEZGIEZGIDBBIDAyIDRDIDRFIDRCIDQyIDAwIDEyIDBDIDA0IDBCIEZGICAuLi4uLi5MTktCLi4u
Li4uCiAgICAzMTAwOiBGRiAwQSAwMyA0QyA0RSA0QiA0MyAwMCAwOCA0NyAzMCAzNyAzOCAxMiAy
QyAwNCAgLi4uTE5LQy4uRzA3OC4sLgogICAgMzExMDogMTIgMDkgMDQgMEIgRkYgRkYgMDAgMDAg
MEEgMkIgMTIgMDkgMDQgMEIgRkYgRkYgIC4uLi4uLi4uLisuLi4uLi4KICAgIDMxMjA6IDAxIDAw
IDBBIDI4IDEyIDBBIDA0IDBCIEZGIEZGIDBBIDAyIDAwIDBBIDI5IDEyICAuLi4oLi4uLi4uLi4u
LikuCiAgICAzMTMwOiAwQSAwNCAwQiBGRiBGRiAwQSAwMyAwMCAwQSAyQSAwOCA1MCAzMCAzNyAz
OSAxMiAgLi4uLi4uLi4uKi5QMDc5LgogICAgMzE0MDogMzQgMDQgMTIgMEIgMDQgMEIgRkYgRkYg
MDAgNEMgNEUgNEIgNDggMDAgMTIgMEIgIDQuLi4uLi4uLkxOS0guLi4KICAgIDMxNTA6IDA0IDBC
IEZGIEZGIDAxIDRDIDRFIDRCIDQ1IDAwIDEyIDBDIDA0IDBCIEZGIEZGICAuLi4uLkxOS0UuLi4u
Li4uCiAgICAzMTYwOiAwQSAwMiA0QyA0RSA0QiA0NiAwMCAxMiAwQyAwNCAwQiBGRiBGRiAwQSAw
MyA0QyAgLi5MTktGLi4uLi4uLi4uTAogICAgMzE3MDogNEUgNEIgNDcgMDAgMDggNDcgMzAgMzcg
MzkgMTIgMkMgMDQgMTIgMDkgMDQgMEIgIE5LRy4uRzA3OS4sLi4uLi4KICAgIDMxODA6IEZGIEZG
IDAwIDAwIDBBIDI3IDEyIDA5IDA0IDBCIEZGIEZGIDAxIDAwIDBBIDI0ICAuLi4uLicuLi4uLi4u
Li4kCiAgICAzMTkwOiAxMiAwQSAwNCAwQiBGRiBGRiAwQSAwMiAwMCAwQSAyNSAxMiAwQSAwNCAw
QiBGRiAgLi4uLi4uLi4uLiUuLi4uLgogICAgMzFBMDogRkYgMEEgMDMgMDAgMEEgMjYgMDggNTAg
MzAgMzcgNDEgMTIgMzQgMDQgMTIgMEIgIC4uLi4uJi5QMDdBLjQuLi4KICAgIDMxQjA6IDA0IDBC
IEZGIEZGIDAwIDRDIDRFIDRCIDQ0IDAwIDEyIDBCIDA0IDBCIEZGIEZGICAuLi4uLkxOS0QuLi4u
Li4uCiAgICAzMUMwOiAwMSA0QyA0RSA0QiA0MSAwMCAxMiAwQyAwNCAwQiBGRiBGRiAwQSAwMiA0
QyA0RSAgLkxOS0EuLi4uLi4uLi5MTgogICAgMzFEMDogNEIgNDIgMDAgMTIgMEMgMDQgMEIgRkYg
RkYgMEEgMDMgNEMgNEUgNEIgNDMgMDAgIEtCLi4uLi4uLi4uTE5LQy4KICAgIDMxRTA6IDA4IDQ3
IDMwIDM3IDQxIDEyIDJDIDA0IDEyIDA5IDA0IDBCIEZGIEZGIDAwIDAwICAuRzA3QS4sLi4uLi4u
Li4uCiAgICAzMUYwOiAwQSAyMyAxMiAwOSAwNCAwQiBGRiBGRiAwMSAwMCAwQSAyMCAxMiAwQSAw
NCAwQiAgLiMuLi4uLi4uLi4gLi4uLgogICAgMzIwMDogRkYgRkYgMEEgMDIgMDAgMEEgMjEgMTIg
MEEgMDQgMEIgRkYgRkYgMEEgMDMgMDAgIC4uLi4uLiEuLi4uLi4uLi4KICAgIDMyMTA6IDBBIDIy
IDA4IDUwIDMwIDM3IDQyIDEyIDM0IDA0IDEyIDBCIDA0IDBCIEZGIEZGICAuIi5QMDdCLjQuLi4u
Li4uCiAgICAzMjIwOiAwMCA0QyA0RSA0QiA0OCAwMCAxMiAwQiAwNCAwQiBGRiBGRiAwMSA0QyA0
RSA0QiAgLkxOS0guLi4uLi4uLkxOSwogICAgMzIzMDogNDUgMDAgMTIgMEMgMDQgMEIgRkYgRkYg
MEEgMDIgNEMgNEUgNEIgNDYgMDAgMTIgIEUuLi4uLi4uLi5MTktGLi4KICAgIDMyNDA6IDBDIDA0
IDBCIEZGIEZGIDBBIDAzIDRDIDRFIDRCIDQ3IDAwIDA4IDQ3IDMwIDM3ICAuLi4uLi4uTE5LRy4u
RzA3CiAgICAzMjUwOiA0MiAxMiAyQyAwNCAxMiAwOSAwNCAwQiBGRiBGRiAwMCAwMCAwQSAxRiAx
MiAwOSAgQi4sLi4uLi4uLi4uLi4uLgogICAgMzI2MDogMDQgMEIgRkYgRkYgMDEgMDAgMEEgMUMg
MTIgMEEgMDQgMEIgRkYgRkYgMEEgMDIgIC4uLi4uLi4uLi4uLi4uLi4KICAgIDMyNzA6IDAwIDBB
IDFEIDEyIDBBIDA0IDBCIEZGIEZGIDBBIDAzIDAwIDBBIDFFIDA4IDUwICAuLi4uLi4uLi4uLi4u
Li5QCiAgICAzMjgwOiAzMCAzNyA0MyAxMiAzNCAwNCAxMiAwQiAwNCAwQiBGRiBGRiAwMCA0QyA0
RSA0QiAgMDdDLjQuLi4uLi4uLkxOSwogICAgMzI5MDogNDQgMDAgMTIgMEIgMDQgMEIgRkYgRkYg
MDEgNEMgNEUgNEIgNDEgMDAgMTIgMEMgIEQuLi4uLi4uLkxOS0EuLi4KICAgIDMyQTA6IDA0IDBC
IEZGIEZGIDBBIDAyIDRDIDRFIDRCIDQyIDAwIDEyIDBDIDA0IDBCIEZGICAuLi4uLi5MTktCLi4u
Li4uCiAgICAzMkIwOiBGRiAwQSAwMyA0QyA0RSA0QiA0MyAwMCAwOCA0NyAzMCAzNyA0MyAxMiAy
QyAwNCAgLi4uTE5LQy4uRzA3Qy4sLgogICAgMzJDMDogMTIgMDkgMDQgMEIgRkYgRkYgMDAgMDAg
MEEgMUIgMTIgMDkgMDQgMEIgRkYgRkYgIC4uLi4uLi4uLi4uLi4uLi4KICAgIDMyRDA6IDAxIDAw
IDBBIDE4IDEyIDBBIDA0IDBCIEZGIEZGIDBBIDAyIDAwIDBBIDE5IDEyICAuLi4uLi4uLi4uLi4u
Li4uCiAgICAzMkUwOiAwQSAwNCAwQiBGRiBGRiAwQSAwMyAwMCAwQSAxQSAwOCA1MCAzMCAzNyA0
NCAxMiAgLi4uLi4uLi4uLi5QMDdELgogICAgMzJGMDogMzQgMDQgMTIgMEIgMDQgMEIgRkYgRkYg
MDAgNEMgNEUgNEIgNDEgMDAgMTIgMEIgIDQuLi4uLi4uLkxOS0EuLi4KICAgIDMzMDA6IDA0IDBC
IEZGIEZGIDAxIDRDIDRFIDRCIDQyIDAwIDEyIDBDIDA0IDBCIEZGIEZGICAuLi4uLkxOS0IuLi4u
Li4uCiAgICAzMzEwOiAwQSAwMiA0QyA0RSA0QiA0MyAwMCAxMiAwQyAwNCAwQiBGRiBGRiAwQSAw
MyA0QyAgLi5MTktDLi4uLi4uLi4uTAogICAgMzMyMDogNEUgNEIgNDQgMDAgMDggNDcgMzAgMzcg
NDQgMTIgMkMgMDQgMTIgMDkgMDQgMEIgIE5LRC4uRzA3RC4sLi4uLi4KICAgIDMzMzA6IEZGIEZG
IDAwIDAwIDBBIDE4IDEyIDA5IDA0IDBCIEZGIEZGIDAxIDAwIDBBIDE5ICAuLi4uLi4uLi4uLi4u
Li4uCiAgICAzMzQwOiAxMiAwQSAwNCAwQiBGRiBGRiAwQSAwMiAwMCAwQSAxQSAxMiAwQSAwNCAw
QiBGRiAgLi4uLi4uLi4uLi4uLi4uLgogICAgMzM1MDogRkYgMEEgMDMgMDAgMEEgMUIgMDggNTAg
MzAgMzcgNDUgMTIgMzQgMDQgMTIgMEIgIC4uLi4uLi5QMDdFLjQuLi4KICAgIDMzNjA6IDA0IDBC
IEZGIEZGIDAwIDRDIDRFIDRCIDQ1IDAwIDEyIDBCIDA0IDBCIEZGIEZGICAuLi4uLkxOS0UuLi4u
Li4uCiAgICAzMzcwOiAwMSA0QyA0RSA0QiA0NiAwMCAxMiAwQyAwNCAwQiBGRiBGRiAwQSAwMiA0
QyA0RSAgLkxOS0YuLi4uLi4uLi5MTgogICAgMzM4MDogNEIgNDcgMDAgMTIgMEMgMDQgMEIgRkYg
RkYgMEEgMDMgNEMgNEUgNEIgNDggMDAgIEtHLi4uLi4uLi4uTE5LSC4KICAgIDMzOTA6IDA4IDQ3
IDMwIDM3IDQ1IDEyIDJDIDA0IDEyIDA5IDA0IDBCIEZGIEZGIDAwIDAwICAuRzA3RS4sLi4uLi4u
Li4uCiAgICAzM0EwOiAwQSAxQyAxMiAwOSAwNCAwQiBGRiBGRiAwMSAwMCAwQSAxRCAxMiAwQSAw
NCAwQiAgLi4uLi4uLi4uLi4uLi4uLgogICAgMzNCMDogRkYgRkYgMEEgMDIgMDAgMEEgMUUgMTIg
MEEgMDQgMEIgRkYgRkYgMEEgMDMgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAgIDMzQzA6IDBBIDFG
IDA4IDUwIDMwIDM3IDQ2IDEyIDM0IDA0IDEyIDBCIDA0IDBCIEZGIEZGICAuLi5QMDdGLjQuLi4u
Li4uCiAgICAzM0QwOiAwMCA0QyA0RSA0QiA0MSAwMCAxMiAwQiAwNCAwQiBGRiBGRiAwMSA0QyA0
RSA0QiAgLkxOS0EuLi4uLi4uLkxOSwogICAgMzNFMDogNDIgMDAgMTIgMEMgMDQgMEIgRkYgRkYg
MEEgMDIgNEMgNEUgNEIgNDMgMDAgMTIgIEIuLi4uLi4uLi5MTktDLi4KICAgIDMzRjA6IDBDIDA0
IDBCIEZGIEZGIDBBIDAzIDRDIDRFIDRCIDQ0IDAwIDA4IDQ3IDMwIDM3ICAuLi4uLi4uTE5LRC4u
RzA3CiAgICAzNDAwOiA0NiAxMiAyQyAwNCAxMiAwOSAwNCAwQiBGRiBGRiAwMCAwMCAwQSAyMCAx
MiAwOSAgRi4sLi4uLi4uLi4uLiAuLgogICAgMzQxMDogMDQgMEIgRkYgRkYgMDEgMDAgMEEgMjEg
MTIgMEEgMDQgMEIgRkYgRkYgMEEgMDIgIC4uLi4uLi4hLi4uLi4uLi4KICAgIDM0MjA6IDAwIDBB
IDIyIDEyIDBBIDA0IDBCIEZGIEZGIDBBIDAzIDAwIDBBIDIzIDA4IDUwICAuLiIuLi4uLi4uLi4u
Iy5QCiAgICAzNDMwOiAzMCAzOCAzOCAxMiAzNCAwNCAxMiAwQiAwNCAwQiBGRiBGRiAwMCA0QyA0
RSA0QiAgMDg4LjQuLi4uLi4uLkxOSwogICAgMzQ0MDogNDUgMDAgMTIgMEIgMDQgMEIgRkYgRkYg
MDEgNEMgNEUgNEIgNDYgMDAgMTIgMEMgIEUuLi4uLi4uLkxOS0YuLi4KICAgIDM0NTA6IDA0IDBC
IEZGIEZGIDBBIDAyIDRDIDRFIDRCIDQ3IDAwIDEyIDBDIDA0IDBCIEZGICAuLi4uLi5MTktHLi4u
Li4uCiAgICAzNDYwOiBGRiAwQSAwMyA0QyA0RSA0QiA0OCAwMCAwOCA0NyAzMCAzOCAzOCAxMiAy
QyAwNCAgLi4uTE5LSC4uRzA4OC4sLgogICAgMzQ3MDogMTIgMDkgMDQgMEIgRkYgRkYgMDAgMDAg
MEEgMjQgMTIgMDkgMDQgMEIgRkYgRkYgIC4uLi4uLi4uLiQuLi4uLi4KICAgIDM0ODA6IDAxIDAw
IDBBIDI1IDEyIDBBIDA0IDBCIEZGIEZGIDBBIDAyIDAwIDBBIDI2IDEyICAuLi4lLi4uLi4uLi4u
LiYuCiAgICAzNDkwOiAwQSAwNCAwQiBGRiBGRiAwQSAwMyAwMCAwQSAyNyAwOCA1MCA0NCAzMCAz
MSAxMiAgLi4uLi4uLi4uJy5QRDAxLgogICAgMzRBMDogNDEgMTEgMTMgMTIgMEIgMDQgMEIgRkYg
RkYgMDAgNEMgNEUgNEIgNDIgMDAgMTIgIEEuLi4uLi4uLi5MTktCLi4KICAgIDM0QjA6IDBEIDA0
IDBDIEZGIEZGIDAxIDAwIDAwIDRDIDRFIDRCIDQxIDAwIDEyIDBEIDA0ICAuLi4uLi4uLkxOS0Eu
Li4uCiAgICAzNEMwOiAwQyBGRiBGRiAwMSAwMCAwMSA0QyA0RSA0QiA0MSAwMCAxMiAwRSAwNCAw
QyBGRiAgLi4uLi4uTE5LQS4uLi4uLgogICAgMzREMDogRkYgMDEgMDAgMEEgMDIgNEMgNEUgNEIg
NDEgMDAgMTIgMEUgMDQgMEMgRkYgRkYgIC4uLi4uTE5LQS4uLi4uLi4KICAgIDM0RTA6IDAxIDAw
IDBBIDAzIDRDIDRFIDRCIDQxIDAwIDEyIDBEIDA0IDBDIEZGIEZGIDAyICAuLi4uTE5LQS4uLi4u
Li4uCiAgICAzNEYwOiAwMCAwMCA0QyA0RSA0QiA0MSAwMCAxMiAwRCAwNCAwQyBGRiBGRiAwMiAw
MCAwMSAgLi5MTktBLi4uLi4uLi4uLgogICAgMzUwMDogNEMgNEUgNEIgNDEgMDAgMTIgMEQgMDQg
MEMgRkYgRkYgMDMgMDAgMDAgNEMgNEUgIExOS0EuLi4uLi4uLi4uTE4KICAgIDM1MTA6IDRCIDQy
IDAwIDEyIDBEIDA0IDBDIEZGIEZGIDAzIDAwIDAxIDRDIDRFIDRCIDQyICBLQi4uLi4uLi4uLi5M
TktCCiAgICAzNTIwOiAwMCAxMiAwRSAwNCAwQyBGRiBGRiAwMyAwMCAwQSAwMiA0QyA0RSA0QiA0
MiAwMCAgLi4uLi4uLi4uLi5MTktCLgogICAgMzUzMDogMTIgMEUgMDQgMEMgRkYgRkYgMDMgMDAg
MEEgMDMgNEMgNEUgNEIgNDIgMDAgMTIgIC4uLi4uLi4uLi5MTktCLi4KICAgIDM1NDA6IDBEIDA0
IDBDIEZGIEZGIDA0IDAwIDAwIDRDIDRFIDRCIDQyIDAwIDEyIDBEIDA0ICAuLi4uLi4uLkxOS0Iu
Li4uCiAgICAzNTUwOiAwQyBGRiBGRiAwNCAwMCAwMSA0QyA0RSA0QiA0MiAwMCAxMiAwRCAwNCAw
QyBGRiAgLi4uLi4uTE5LQi4uLi4uLgogICAgMzU2MDogRkYgMDUgMDAgMDAgNEMgNEUgNEIgNDMg
MDAgMTIgMEQgMDQgMEMgRkYgRkYgMDUgIC4uLi5MTktDLi4uLi4uLi4KICAgIDM1NzA6IDAwIDAx
IDRDIDRFIDRCIDQzIDAwIDEyIDBFIDA0IDBDIEZGIEZGIDA1IDAwIDBBICAuLkxOS0MuLi4uLi4u
Li4uCiAgICAzNTgwOiAwMiA0QyA0RSA0QiA0MyAwMCAxMiAwRSAwNCAwQyBGRiBGRiAwNSAwMCAw
QSAwMyAgLkxOS0MuLi4uLi4uLi4uLgogICAgMzU5MDogNEMgNEUgNEIgNDMgMDAgMTIgMEQgMDQg
MEMgRkYgRkYgMDcgMDAgMDAgNEMgNEUgIExOS0MuLi4uLi4uLi4uTE4KICAgIDM1QTA6IDRCIDQ0
IDAwIDEyIDBEIDA0IDBDIEZGIEZGIDA3IDAwIDAxIDRDIDRFIDRCIDQ0ICBLRC4uLi4uLi4uLi5M
TktECiAgICAzNUIwOiAwMCAwOCA0MSA1MiAzMCAzMSAxMiA0QiAwRSAxMyAxMiAwOSAwNCAwQiBG
RiBGRiAgLi5BUjAxLksuLi4uLi4uLgogICAgMzVDMDogMDAgMDAgMEEgMzkgMTIgMEIgMDQgMEMg
RkYgRkYgMDEgMDAgMDAgMDAgMEEgMzggIC4uLjkuLi4uLi4uLi4uLjgKICAgIDM1RDA6IDEyIDBC
IDA0IDBDIEZGIEZGIDAxIDAwIDAxIDAwIDBBIDM4IDEyIDBDIDA0IDBDICAuLi4uLi4uLi4uLjgu
Li4uCiAgICAzNUUwOiBGRiBGRiAwMSAwMCAwQSAwMiAwMCAwQSAzOCAxMiAwQyAwNCAwQyBGRiBG
RiAwMSAgLi4uLi4uLi44Li4uLi4uLgogICAgMzVGMDogMDAgMEEgMDMgMDAgMEEgMzggMTIgMEIg
MDQgMEMgRkYgRkYgMDIgMDAgMDAgMDAgIC4uLi4uOC4uLi4uLi4uLi4KICAgIDM2MDA6IDBBIDM4
IDEyIDBCIDA0IDBDIEZGIEZGIDAyIDAwIDAxIDAwIDBBIDM4IDEyIDBCICAuOC4uLi4uLi4uLi4u
OC4uCiAgICAzNjEwOiAwNCAwQyBGRiBGRiAwMyAwMCAwMCAwMCAwQSAzOSAxMiAwQiAwNCAwQyBG
RiBGRiAgLi4uLi4uLi4uOS4uLi4uLgogICAgMzYyMDogMDMgMDAgMDEgMDAgMEEgMzkgMTIgMEMg
MDQgMEMgRkYgRkYgMDMgMDAgMEEgMDIgIC4uLi4uOS4uLi4uLi4uLi4KICAgIDM2MzA6IDAwIDBB
IDM5IDEyIDBDIDA0IDBDIEZGIEZGIDAzIDAwIDBBIDAzIDAwIDBBIDM5ICAuLjkuLi4uLi4uLi4u
Li45CiAgICAzNjQwOiAxMiAwQiAwNCAwQyBGRiBGRiAwNCAwMCAwMCAwMCAwQSAzOSAxMiAwQiAw
NCAwQyAgLi4uLi4uLi4uLi45Li4uLgogICAgMzY1MDogRkYgRkYgMDQgMDAgMDEgMDAgMEEgMzkg
MTIgMEIgMDQgMEMgRkYgRkYgMDUgMDAgIC4uLi4uLi45Li4uLi4uLi4KICAgIDM2NjA6IDAwIDAw
IDBBIDNBIDEyIDBCIDA0IDBDIEZGIEZGIDA1IDAwIDAxIDAwIDBBIDNBICAuLi46Li4uLi4uLi4u
Li46CiAgICAzNjcwOiAxMiAwQyAwNCAwQyBGRiBGRiAwNSAwMCAwQSAwMiAwMCAwQSAzQSAxMiAw
QyAwNCAgLi4uLi4uLi4uLi4uOi4uLgogICAgMzY4MDogMEMgRkYgRkYgMDUgMDAgMEEgMDMgMDAg
MEEgM0EgMTIgMEIgMDQgMEMgRkYgRkYgIC4uLi4uLi4uLjouLi4uLi4KICAgIDM2OTA6IDA3IDAw
IDAwIDAwIDBBIDNCIDEyIDBCIDA0IDBDIEZGIEZGIDA3IDAwIDAxIDAwICAuLi4uLjsuLi4uLi4u
Li4uCiAgICAzNkEwOiAwQSAzQiAwOCA1MCAzMCAzOCA0NiAxMiAzNCAwNCAxMiAwQiAwNCAwQiBG
RiBGRiAgLjsuUDA4Ri40Li4uLi4uLgogICAgMzZCMDogMDAgNEMgNEUgNEIgNDEgMDAgMTIgMEIg
MDQgMEIgRkYgRkYgMDEgNEMgNEUgNEIgIC5MTktBLi4uLi4uLi5MTksKICAgIDM2QzA6IDQyIDAw
IDEyIDBDIDA0IDBCIEZGIEZGIDBBIDAyIDRDIDRFIDRCIDQzIDAwIDEyICBCLi4uLi4uLi4uTE5L
Qy4uCiAgICAzNkQwOiAwQyAwNCAwQiBGRiBGRiAwQSAwMyA0QyA0RSA0QiA0NCAwMCAwOCA0NyAz
MCAzOCAgLi4uLi4uLkxOS0QuLkcwOAogICAgMzZFMDogNDYgMTIgMkMgMDQgMTIgMDkgMDQgMEIg
RkYgRkYgMDAgMDAgMEEgMzggMTIgMDkgIEYuLC4uLi4uLi4uLi44Li4KICAgIDM2RjA6IDA0IDBC
IEZGIEZGIDAxIDAwIDBBIDM5IDEyIDBBIDA0IDBCIEZGIEZGIDBBIDAyICAuLi4uLi4uOS4uLi4u
Li4uCiAgICAzNzAwOiAwMCAwQSAzQSAxMiAwQSAwNCAwQiBGRiBGRiAwQSAwMyAwMCAwQSAzQiAw
OCA1MCAgLi46Li4uLi4uLi4uLjsuUAogICAgMzcxMDogMzAgMzkgMzAgMTIgMzQgMDQgMTIgMEIg
MDQgMEIgRkYgRkYgMDAgNEMgNEUgNEIgIDA5MC40Li4uLi4uLi5MTksKICAgIDM3MjA6IDQ1IDAw
IDEyIDBCIDA0IDBCIEZGIEZGIDAxIDRDIDRFIDRCIDQ2IDAwIDEyIDBDICBFLi4uLi4uLi5MTktG
Li4uCiAgICAzNzMwOiAwNCAwQiBGRiBGRiAwQSAwMiA0QyA0RSA0QiA0NyAwMCAxMiAwQyAwNCAw
QiBGRiAgLi4uLi4uTE5LRy4uLi4uLgogICAgMzc0MDogRkYgMEEgMDMgNEMgNEUgNEIgNDggMDAg
MDggNDcgMzAgMzkgMzAgMTIgMkMgMDQgIC4uLkxOS0guLkcwOTAuLC4KICAgIDM3NTA6IDEyIDA5
IDA0IDBCIEZGIEZGIDAwIDAwIDBBIDNDIDEyIDA5IDA0IDBCIEZGIEZGICAuLi4uLi4uLi48Li4u
Li4uCiAgICAzNzYwOiAwMSAwMCAwQSAzRCAxMiAwQSAwNCAwQiBGRiBGRiAwQSAwMiAwMCAwQSAz
RSAxMiAgLi4uPS4uLi4uLi4uLi4+LgogICAgMzc3MDogMEEgMDQgMEIgRkYgRkYgMEEgMDMgMDAg
MEEgM0YgMDggNTAgMzAgMzkgMzEgMTIgIC4uLi4uLi4uLj8uUDA5MS4KICAgIDM3ODA6IDM0IDA0
IDEyIDBCIDA0IDBCIEZGIEZGIDAwIDRDIDRFIDRCIDQxIDAwIDEyIDBCICA0Li4uLi4uLi5MTktB
Li4uCiAgICAzNzkwOiAwNCAwQiBGRiBGRiAwMSA0QyA0RSA0QiA0MiAwMCAxMiAwQyAwNCAwQiBG
RiBGRiAgLi4uLi5MTktCLi4uLi4uLgogICAgMzdBMDogMEEgMDIgNEMgNEUgNEIgNDMgMDAgMTIg
MEMgMDQgMEIgRkYgRkYgMEEgMDMgNEMgIC4uTE5LQy4uLi4uLi4uLkwKICAgIDM3QjA6IDRFIDRC
IDQ0IDAwIDA4IDQ3IDMwIDM5IDMxIDEyIDJDIDA0IDEyIDA5IDA0IDBCICBOS0QuLkcwOTEuLC4u
Li4uCiAgICAzN0MwOiBGRiBGRiAwMCAwMCAwQSA0MCAxMiAwOSAwNCAwQiBGRiBGRiAwMSAwMCAw
QSA0MSAgLi4uLi5ALi4uLi4uLi4uQQogICAgMzdEMDogMTIgMEEgMDQgMEIgRkYgRkYgMEEgMDIg
MDAgMEEgNDIgMTIgMEEgMDQgMEIgRkYgIC4uLi4uLi4uLi5CLi4uLi4KICAgIDM3RTA6IEZGIDBB
IDAzIDAwIDBBIDQzIDA4IDUwIDMwIDM5IDMyIDEyIDM0IDA0IDEyIDBCICAuLi4uLkMuUDA5Mi40
Li4uCiAgICAzN0YwOiAwNCAwQiBGRiBGRiAwMCA0QyA0RSA0QiA0NSAwMCAxMiAwQiAwNCAwQiBG
RiBGRiAgLi4uLi5MTktFLi4uLi4uLgogICAgMzgwMDogMDEgNEMgNEUgNEIgNDYgMDAgMTIgMEMg
MDQgMEIgRkYgRkYgMEEgMDIgNEMgNEUgIC5MTktGLi4uLi4uLi4uTE4KICAgIDM4MTA6IDRCIDQ3
IDAwIDEyIDBDIDA0IDBCIEZGIEZGIDBBIDAzIDRDIDRFIDRCIDQ4IDAwICBLRy4uLi4uLi4uLkxO
S0guCiAgICAzODIwOiAwOCA0NyAzMCAzOSAzMiAxMiAyQyAwNCAxMiAwOSAwNCAwQiBGRiBGRiAw
MCAwMCAgLkcwOTIuLC4uLi4uLi4uLgogICAgMzgzMDogMEEgNDQgMTIgMDkgMDQgMEIgRkYgRkYg
MDEgMDAgMEEgNDUgMTIgMEEgMDQgMEIgIC5ELi4uLi4uLi4uRS4uLi4KICAgIDM4NDA6IEZGIEZG
IDBBIDAyIDAwIDBBIDQ2IDEyIDBBIDA0IDBCIEZGIEZGIDBBIDAzIDAwICAuLi4uLi5GLi4uLi4u
Li4uCiAgICAzODUwOiAwQSA0NyAwOCA1MCAzMCAzOSAzMyAxMiAzNCAwNCAxMiAwQiAwNCAwQiBG
RiBGRiAgLkcuUDA5My40Li4uLi4uLgogICAgMzg2MDogMDAgNEMgNEUgNEIgNDEgMDAgMTIgMEIg
MDQgMEIgRkYgRkYgMDEgNEMgNEUgNEIgIC5MTktBLi4uLi4uLi5MTksKICAgIDM4NzA6IDQyIDAw
IDEyIDBDIDA0IDBCIEZGIEZGIDBBIDAyIDRDIDRFIDRCIDQzIDAwIDEyICBCLi4uLi4uLi4uTE5L
Qy4uCiAgICAzODgwOiAwQyAwNCAwQiBGRiBGRiAwQSAwMyA0QyA0RSA0QiA0NCAwMCAwOCA0NyAz
MCAzOSAgLi4uLi4uLkxOS0QuLkcwOQogICAgMzg5MDogMzMgMTIgMkMgMDQgMTIgMDkgMDQgMEIg
RkYgRkYgMDAgMDAgMEEgNDggMTIgMDkgIDMuLC4uLi4uLi4uLi5ILi4KICAgIDM4QTA6IDA0IDBC
IEZGIEZGIDAxIDAwIDBBIDQ5IDEyIDBBIDA0IDBCIEZGIEZGIDBBIDAyICAuLi4uLi4uSS4uLi4u
Li4uCiAgICAzOEIwOiAwMCAwQSA0QSAxMiAwQSAwNCAwQiBGRiBGRiAwQSAwMyAwMCAwQSA0QiAw
OCA1MCAgLi5KLi4uLi4uLi4uLksuUAogICAgMzhDMDogMzAgMzkgMzQgMTIgMzQgMDQgMTIgMEIg
MDQgMEIgRkYgRkYgMDAgNEMgNEUgNEIgIDA5NC40Li4uLi4uLi5MTksKICAgIDM4RDA6IDQzIDAw
IDEyIDBCIDA0IDBCIEZGIEZGIDAxIDRDIDRFIDRCIDQ0IDAwIDEyIDBDICBDLi4uLi4uLi5MTktE
Li4uCiAgICAzOEUwOiAwNCAwQiBGRiBGRiAwQSAwMiA0QyA0RSA0QiA0MSAwMCAxMiAwQyAwNCAw
QiBGRiAgLi4uLi4uTE5LQS4uLi4uLgogICAgMzhGMDogRkYgMEEgMDMgNEMgNEUgNEIgNDIgMDAg
MDggNDcgMzAgMzkgMzQgMTIgMkMgMDQgIC4uLkxOS0IuLkcwOTQuLC4KICAgIDM5MDA6IDEyIDA5
IDA0IDBCIEZGIEZGIDAwIDAwIDBBIDRBIDEyIDA5IDA0IDBCIEZGIEZGICAuLi4uLi4uLi5KLi4u
Li4uCiAgICAzOTEwOiAwMSAwMCAwQSA0QiAxMiAwQSAwNCAwQiBGRiBGRiAwQSAwMiAwMCAwQSA0
OCAxMiAgLi4uSy4uLi4uLi4uLi5ILgogICAgMzkyMDogMEEgMDQgMEIgRkYgRkYgMEEgMDMgMDAg
MEEgNDkgMDggNTAgMzAgMzkgMzUgMTIgIC4uLi4uLi4uLkkuUDA5NS4KICAgIDM5MzA6IDM0IDA0
IDEyIDBCIDA0IDBCIEZGIEZGIDAwIDRDIDRFIDRCIDQ3IDAwIDEyIDBCICA0Li4uLi4uLi5MTktH
Li4uCiAgICAzOTQwOiAwNCAwQiBGRiBGRiAwMSA0QyA0RSA0QiA0OCAwMCAxMiAwQyAwNCAwQiBG
RiBGRiAgLi4uLi5MTktILi4uLi4uLgogICAgMzk1MDogMEEgMDIgNEMgNEUgNEIgNDUgMDAgMTIg
MEMgMDQgMEIgRkYgRkYgMEEgMDMgNEMgIC4uTE5LRS4uLi4uLi4uLkwKICAgIDM5NjA6IDRFIDRC
IDQ2IDAwIDA4IDQ3IDMwIDM5IDM1IDEyIDJDIDA0IDEyIDA5IDA0IDBCICBOS0YuLkcwOTUuLC4u
Li4uCiAgICAzOTcwOiBGRiBGRiAwMCAwMCAwQSA0NiAxMiAwOSAwNCAwQiBGRiBGRiAwMSAwMCAw
QSA0NyAgLi4uLi5GLi4uLi4uLi4uRwogICAgMzk4MDogMTIgMEEgMDQgMEIgRkYgRkYgMEEgMDIg
MDAgMEEgNDQgMTIgMEEgMDQgMEIgRkYgIC4uLi4uLi4uLi5ELi4uLi4KICAgIDM5OTA6IEZGIDBB
IDAzIDAwIDBBIDQ1IDA4IDUwIDMwIDM5IDM2IDEyIDM0IDA0IDEyIDBCICAuLi4uLkUuUDA5Ni40
Li4uCiAgICAzOUEwOiAwNCAwQiBGRiBGRiAwMCA0QyA0RSA0QiA0MyAwMCAxMiAwQiAwNCAwQiBG
RiBGRiAgLi4uLi5MTktDLi4uLi4uLgogICAgMzlCMDogMDEgNEMgNEUgNEIgNDQgMDAgMTIgMEMg
MDQgMEIgRkYgRkYgMEEgMDIgNEMgNEUgIC5MTktELi4uLi4uLi4uTE4KICAgIDM5QzA6IDRCIDQx
IDAwIDEyIDBDIDA0IDBCIEZGIEZGIDBBIDAzIDRDIDRFIDRCIDQyIDAwICBLQS4uLi4uLi4uLkxO
S0IuCiAgICAzOUQwOiAwOCA0NyAzMCAzOSAzNiAxMiAyQyAwNCAxMiAwOSAwNCAwQiBGRiBGRiAw
MCAwMCAgLkcwOTYuLC4uLi4uLi4uLgogICAgMzlFMDogMEEgNDIgMTIgMDkgMDQgMEIgRkYgRkYg
MDEgMDAgMEEgNDMgMTIgMEEgMDQgMEIgIC5CLi4uLi4uLi4uQy4uLi4KICAgIDM5RjA6IEZGIEZG
IDBBIDAyIDAwIDBBIDQwIDEyIDBBIDA0IDBCIEZGIEZGIDBBIDAzIDAwICAuLi4uLi5ALi4uLi4u
Li4uCiAgICAzQTAwOiAwQSA0MSAwOCA1MCAzMCAzOSAzNyAxMiAzNCAwNCAxMiAwQiAwNCAwQiBG
RiBGRiAgLkEuUDA5Ny40Li4uLi4uLgogICAgM0ExMDogMDAgNEMgNEUgNEIgNDcgMDAgMTIgMEIg
MDQgMEIgRkYgRkYgMDEgNEMgNEUgNEIgIC5MTktHLi4uLi4uLi5MTksKICAgIDNBMjA6IDQ4IDAw
IDEyIDBDIDA0IDBCIEZGIEZGIDBBIDAyIDRDIDRFIDRCIDQ1IDAwIDEyICBILi4uLi4uLi4uTE5L
RS4uCiAgICAzQTMwOiAwQyAwNCAwQiBGRiBGRiAwQSAwMyA0QyA0RSA0QiA0NiAwMCAwOCA0NyAz
MCAzOSAgLi4uLi4uLkxOS0YuLkcwOQogICAgM0E0MDogMzcgMTIgMkMgMDQgMTIgMDkgMDQgMEIg
RkYgRkYgMDAgMDAgMEEgM0UgMTIgMDkgIDcuLC4uLi4uLi4uLi4+Li4KICAgIDNBNTA6IDA0IDBC
IEZGIEZGIDAxIDAwIDBBIDNGIDEyIDBBIDA0IDBCIEZGIEZGIDBBIDAyICAuLi4uLi4uPy4uLi4u
Li4uCiAgICAzQTYwOiAwMCAwQSAzQyAxMiAwQSAwNCAwQiBGRiBGRiAwQSAwMyAwMCAwQSAzRCAw
OCA1MCAgLi48Li4uLi4uLi4uLj0uUAogICAgM0E3MDogMzAgMzkgMzggMTIgMzQgMDQgMTIgMEIg
MDQgMEIgRkYgRkYgMDAgNEMgNEUgNEIgIDA5OC40Li4uLi4uLi5MTksKICAgIDNBODA6IDQzIDAw
IDEyIDBCIDA0IDBCIEZGIEZGIDAxIDRDIDRFIDRCIDQ0IDAwIDEyIDBDICBDLi4uLi4uLi5MTktE
Li4uCiAgICAzQTkwOiAwNCAwQiBGRiBGRiAwQSAwMiA0QyA0RSA0QiA0MSAwMCAxMiAwQyAwNCAw
QiBGRiAgLi4uLi4uTE5LQS4uLi4uLgogICAgM0FBMDogRkYgMEEgMDMgNEMgNEUgNEIgNDIgMDAg
MDggNDcgMzAgMzkgMzggMTIgMkMgMDQgIC4uLkxOS0IuLkcwOTguLC4KICAgIDNBQjA6IDEyIDA5
IDA0IDBCIEZGIEZGIDAwIDAwIDBBIDNBIDEyIDA5IDA0IDBCIEZGIEZGICAuLi4uLi4uLi46Li4u
Li4uCiAgICAzQUMwOiAwMSAwMCAwQSAzQiAxMiAwQSAwNCAwQiBGRiBGRiAwQSAwMiAwMCAwQSAz
OCAxMiAgLi4uOy4uLi4uLi4uLi44LgogICAgM0FEMDogMEEgMDQgMEIgRkYgRkYgMEEgMDMgMDAg
MEEgMzkgMDggNTAgMzAgMzkgMzkgMTIgIC4uLi4uLi4uLjkuUDA5OS4KICAgIDNBRTA6IDM0IDA0
IDEyIDBCIDA0IDBCIEZGIEZGIDAwIDRDIDRFIDRCIDQyIDAwIDEyIDBCICA0Li4uLi4uLi5MTktC
Li4uCiAgICAzQUYwOiAwNCAwQiBGRiBGRiAwMSA0QyA0RSA0QiA0MyAwMCAxMiAwQyAwNCAwQiBG
RiBGRiAgLi4uLi5MTktDLi4uLi4uLgogICAgM0IwMDogMEEgMDIgNEMgNEUgNEIgNDQgMDAgMTIg
MEMgMDQgMEIgRkYgRkYgMEEgMDMgNEMgIC4uTE5LRC4uLi4uLi4uLkwKICAgIDNCMTA6IDRFIDRC
IDQxIDAwIDA4IDQ3IDMwIDM5IDM5IDEyIDJDIDA0IDEyIDA5IDA0IDBCICBOS0EuLkcwOTkuLC4u
Li4uCiAgICAzQjIwOiBGRiBGRiAwMCAwMCAwQSAzOSAxMiAwOSAwNCAwQiBGRiBGRiAwMSAwMCAw
QSAzQSAgLi4uLi45Li4uLi4uLi4uOgogICAgM0IzMDogMTIgMEEgMDQgMEIgRkYgRkYgMEEgMDIg
MDAgMEEgM0IgMTIgMEEgMDQgMEIgRkYgIC4uLi4uLi4uLi47Li4uLi4KICAgIDNCNDA6IEZGIDBB
IDAzIDAwIDBBIDM4IDA4IDUwIDMwIDM5IDQxIDEyIDM0IDA0IDEyIDBCICAuLi4uLjguUDA5QS40
Li4uCiAgICAzQjUwOiAwNCAwQiBGRiBGRiAwMCA0QyA0RSA0QiA0NiAwMCAxMiAwQiAwNCAwQiBG
RiBGRiAgLi4uLi5MTktGLi4uLi4uLgogICAgM0I2MDogMDEgNEMgNEUgNEIgNDcgMDAgMTIgMEMg
MDQgMEIgRkYgRkYgMEEgMDIgNEMgNEUgIC5MTktHLi4uLi4uLi4uTE4KICAgIDNCNzA6IDRCIDQ4
IDAwIDEyIDBDIDA0IDBCIEZGIEZGIDBBIDAzIDRDIDRFIDRCIDQ1IDAwICBLSC4uLi4uLi4uLkxO
S0UuCiAgICAzQjgwOiAwOCA0NyAzMCAzOSA0MSAxMiAyQyAwNCAxMiAwOSAwNCAwQiBGRiBGRiAw
MCAwMCAgLkcwOUEuLC4uLi4uLi4uLgogICAgM0I5MDogMEEgM0QgMTIgMDkgMDQgMEIgRkYgRkYg
MDEgMDAgMEEgM0UgMTIgMEEgMDQgMEIgIC49Li4uLi4uLi4uPi4uLi4KICAgIDNCQTA6IEZGIEZG
IDBBIDAyIDAwIDBBIDNGIDEyIDBBIDA0IDBCIEZGIEZGIDBBIDAzIDAwICAuLi4uLi4/Li4uLi4u
Li4uCiAgICAzQkIwOiAwQSAzQyAwOCA1MCAzMCAzOSA0MiAxMiAzNCAwNCAxMiAwQiAwNCAwQiBG
RiBGRiAgLjwuUDA5Qi40Li4uLi4uLgogICAgM0JDMDogMDAgNEMgNEUgNEIgNDIgMDAgMTIgMEIg
MDQgMEIgRkYgRkYgMDEgNEMgNEUgNEIgIC5MTktCLi4uLi4uLi5MTksKICAgIDNCRDA6IDQzIDAw
IDEyIDBDIDA0IDBCIEZGIEZGIDBBIDAyIDRDIDRFIDRCIDQ0IDAwIDEyICBDLi4uLi4uLi4uTE5L
RC4uCiAgICAzQkUwOiAwQyAwNCAwQiBGRiBGRiAwQSAwMyA0QyA0RSA0QiA0MSAwMCAwOCA0NyAz
MCAzOSAgLi4uLi4uLkxOS0EuLkcwOQogICAgM0JGMDogNDIgMTIgMkMgMDQgMTIgMDkgMDQgMEIg
RkYgRkYgMDAgMDAgMEEgNDEgMTIgMDkgIEIuLC4uLi4uLi4uLi5BLi4KICAgIDNDMDA6IDA0IDBC
IEZGIEZGIDAxIDAwIDBBIDQyIDEyIDBBIDA0IDBCIEZGIEZGIDBBIDAyICAuLi4uLi4uQi4uLi4u
Li4uCiAgICAzQzEwOiAwMCAwQSA0MyAxMiAwQSAwNCAwQiBGRiBGRiAwQSAwMyAwMCAwQSA0MCAw
OCA1MCAgLi5DLi4uLi4uLi4uLkAuUAogICAgM0MyMDogMzAgMzkgNDMgMTIgMzQgMDQgMTIgMEIg
MDQgMEIgRkYgRkYgMDAgNEMgNEUgNEIgIDA5Qy40Li4uLi4uLi5MTksKICAgIDNDMzA6IDQ2IDAw
IDEyIDBCIDA0IDBCIEZGIEZGIDAxIDRDIDRFIDRCIDQ3IDAwIDEyIDBDICBGLi4uLi4uLi5MTktH
Li4uCiAgICAzQzQwOiAwNCAwQiBGRiBGRiAwQSAwMiA0QyA0RSA0QiA0OCAwMCAxMiAwQyAwNCAw
QiBGRiAgLi4uLi4uTE5LSC4uLi4uLgogICAgM0M1MDogRkYgMEEgMDMgNEMgNEUgNEIgNDUgMDAg
MDggNDcgMzAgMzkgNDMgMTIgMkMgMDQgIC4uLkxOS0UuLkcwOUMuLC4KICAgIDNDNjA6IDEyIDA5
IDA0IDBCIEZGIEZGIDAwIDAwIDBBIDQ1IDEyIDA5IDA0IDBCIEZGIEZGICAuLi4uLi4uLi5FLi4u
Li4uCiAgICAzQzcwOiAwMSAwMCAwQSA0NiAxMiAwQSAwNCAwQiBGRiBGRiAwQSAwMiAwMCAwQSA0
NyAxMiAgLi4uRi4uLi4uLi4uLi5HLgogICAgM0M4MDogMEEgMDQgMEIgRkYgRkYgMEEgMDMgMDAg
MEEgNDQgMDggNTAgMzAgMzkgNDQgMTIgIC4uLi4uLi4uLkQuUDA5RC4KICAgIDNDOTA6IDM0IDA0
IDEyIDBCIDA0IDBCIEZGIEZGIDAwIDRDIDRFIDRCIDQyIDAwIDEyIDBCICA0Li4uLi4uLi5MTktC
Li4uCiAgICAzQ0EwOiAwNCAwQiBGRiBGRiAwMSA0QyA0RSA0QiA0MyAwMCAxMiAwQyAwNCAwQiBG
RiBGRiAgLi4uLi5MTktDLi4uLi4uLgogICAgM0NCMDogMEEgMDIgNEMgNEUgNEIgNDQgMDAgMTIg
MEMgMDQgMEIgRkYgRkYgMEEgMDMgNEMgIC4uTE5LRC4uLi4uLi4uLkwKICAgIDNDQzA6IDRFIDRC
IDQxIDAwIDA4IDQ3IDMwIDM5IDQ0IDEyIDJDIDA0IDEyIDA5IDA0IDBCICBOS0EuLkcwOUQuLC4u
Li4uCiAgICAzQ0QwOiBGRiBGRiAwMCAwMCAwQSA0OSAxMiAwOSAwNCAwQiBGRiBGRiAwMSAwMCAw
QSA0QSAgLi4uLi5JLi4uLi4uLi4uSgogICAgM0NFMDogMTIgMEEgMDQgMEIgRkYgRkYgMEEgMDIg
MDAgMEEgNEIgMTIgMEEgMDQgMEIgRkYgIC4uLi4uLi4uLi5LLi4uLi4KICAgIDNDRjA6IEZGIDBB
IDAzIDAwIDBBIDQ4IDA4IDUwIDMwIDM5IDQ1IDEyIDM0IDA0IDEyIDBCICAuLi4uLkguUDA5RS40
Li4uCiAgICAzRDAwOiAwNCAwQiBGRiBGRiAwMCA0QyA0RSA0QiA0NCAwMCAxMiAwQiAwNCAwQiBG
RiBGRiAgLi4uLi5MTktELi4uLi4uLgogICAgM0QxMDogMDEgNEMgNEUgNEIgNDEgMDAgMTIgMEMg
MDQgMEIgRkYgRkYgMEEgMDIgNEMgNEUgIC5MTktBLi4uLi4uLi4uTE4KICAgIDNEMjA6IDRCIDQy
IDAwIDEyIDBDIDA0IDBCIEZGIEZGIDBBIDAzIDRDIDRFIDRCIDQzIDAwICBLQi4uLi4uLi4uLkxO
S0MuCiAgICAzRDMwOiAwOCA0NyAzMCAzOSA0NSAxMiAyQyAwNCAxMiAwOSAwNCAwQiBGRiBGRiAw
MCAwMCAgLkcwOUUuLC4uLi4uLi4uLgogICAgM0Q0MDogMEEgNEIgMTIgMDkgMDQgMEIgRkYgRkYg
MDEgMDAgMEEgNDggMTIgMEEgMDQgMEIgIC5LLi4uLi4uLi4uSC4uLi4KICAgIDNENTA6IEZGIEZG
IDBBIDAyIDAwIDBBIDQ5IDEyIDBBIDA0IDBCIEZGIEZGIDBBIDAzIDAwICAuLi4uLi5JLi4uLi4u
Li4uCiAgICAzRDYwOiAwQSA0QSAwOCA1MCAzMCAzOSA0NiAxMiAzNCAwNCAxMiAwQiAwNCAwQiBG
RiBGRiAgLkouUDA5Ri40Li4uLi4uLgogICAgM0Q3MDogMDAgNEMgNEUgNEIgNDggMDAgMTIgMEIg
MDQgMEIgRkYgRkYgMDEgNEMgNEUgNEIgIC5MTktILi4uLi4uLi5MTksKICAgIDNEODA6IDQ1IDAw
IDEyIDBDIDA0IDBCIEZGIEZGIDBBIDAyIDRDIDRFIDRCIDQ2IDAwIDEyICBFLi4uLi4uLi4uTE5L
Ri4uCiAgICAzRDkwOiAwQyAwNCAwQiBGRiBGRiAwQSAwMyA0QyA0RSA0QiA0NyAwMCAwOCA0NyAz
MCAzOSAgLi4uLi4uLkxOS0cuLkcwOQogICAgM0RBMDogNDYgMTIgMkMgMDQgMTIgMDkgMDQgMEIg
RkYgRkYgMDAgMDAgMEEgNDcgMTIgMDkgIEYuLC4uLi4uLi4uLi5HLi4KICAgIDNEQjA6IDA0IDBC
IEZGIEZGIDAxIDAwIDBBIDQ0IDEyIDBBIDA0IDBCIEZGIEZGIDBBIDAyICAuLi4uLi4uRC4uLi4u
Li4uCiAgICAzREMwOiAwMCAwQSA0NSAxMiAwQSAwNCAwQiBGRiBGRiAwQSAwMyAwMCAwQSA0NiAw
OCA1MCAgLi5FLi4uLi4uLi4uLkYuUAogICAgM0REMDogMzAgNDEgMzAgMTIgMzQgMDQgMTIgMEIg
MDQgMEIgRkYgRkYgMDAgNEMgNEUgNEIgIDBBMC40Li4uLi4uLi5MTksKICAgIDNERTA6IDQ0IDAw
IDEyIDBCIDA0IDBCIEZGIEZGIDAxIDRDIDRFIDRCIDQxIDAwIDEyIDBDICBELi4uLi4uLi5MTktB
Li4uCiAgICAzREYwOiAwNCAwQiBGRiBGRiAwQSAwMiA0QyA0RSA0QiA0MiAwMCAxMiAwQyAwNCAw
QiBGRiAgLi4uLi4uTE5LQi4uLi4uLgogICAgM0UwMDogRkYgMEEgMDMgNEMgNEUgNEIgNDMgMDAg
MDggNDcgMzAgNDEgMzAgMTIgMkMgMDQgIC4uLkxOS0MuLkcwQTAuLC4KICAgIDNFMTA6IDEyIDA5
IDA0IDBCIEZGIEZGIDAwIDAwIDBBIDQzIDEyIDA5IDA0IDBCIEZGIEZGICAuLi4uLi4uLi5DLi4u
Li4uCiAgICAzRTIwOiAwMSAwMCAwQSA0MCAxMiAwQSAwNCAwQiBGRiBGRiAwQSAwMiAwMCAwQSA0
MSAxMiAgLi4uQC4uLi4uLi4uLi5BLgogICAgM0UzMDogMEEgMDQgMEIgRkYgRkYgMEEgMDMgMDAg
MEEgNDIgMDggNTAgMzAgNDEgMzEgMTIgIC4uLi4uLi4uLkIuUDBBMS4KICAgIDNFNDA6IDM0IDA0
IDEyIDBCIDA0IDBCIEZGIEZGIDAwIDRDIDRFIDRCIDQ4IDAwIDEyIDBCICA0Li4uLi4uLi5MTktI
Li4uCiAgICAzRTUwOiAwNCAwQiBGRiBGRiAwMSA0QyA0RSA0QiA0NSAwMCAxMiAwQyAwNCAwQiBG
RiBGRiAgLi4uLi5MTktFLi4uLi4uLgogICAgM0U2MDogMEEgMDIgNEMgNEUgNEIgNDYgMDAgMTIg
MEMgMDQgMEIgRkYgRkYgMEEgMDMgNEMgIC4uTE5LRi4uLi4uLi4uLkwKICAgIDNFNzA6IDRFIDRC
IDQ3IDAwIDA4IDQ3IDMwIDQxIDMxIDEyIDJDIDA0IDEyIDA5IDA0IDBCICBOS0cuLkcwQTEuLC4u
Li4uCiAgICAzRTgwOiBGRiBGRiAwMCAwMCAwQSAzRiAxMiAwOSAwNCAwQiBGRiBGRiAwMSAwMCAw
QSAzQyAgLi4uLi4/Li4uLi4uLi4uPAogICAgM0U5MDogMTIgMEEgMDQgMEIgRkYgRkYgMEEgMDIg
MDAgMEEgM0QgMTIgMEEgMDQgMEIgRkYgIC4uLi4uLi4uLi49Li4uLi4KICAgIDNFQTA6IEZGIDBB
IDAzIDAwIDBBIDNFIDA4IDUwIDMwIDQxIDMyIDEyIDM0IDA0IDEyIDBCICAuLi4uLj4uUDBBMi40
Li4uCiAgICAzRUIwOiAwNCAwQiBGRiBGRiAwMCA0QyA0RSA0QiA0NCAwMCAxMiAwQiAwNCAwQiBG
RiBGRiAgLi4uLi5MTktELi4uLi4uLgogICAgM0VDMDogMDEgNEMgNEUgNEIgNDEgMDAgMTIgMEMg
MDQgMEIgRkYgRkYgMEEgMDIgNEMgNEUgIC5MTktBLi4uLi4uLi4uTE4KICAgIDNFRDA6IDRCIDQy
IDAwIDEyIDBDIDA0IDBCIEZGIEZGIDBBIDAzIDRDIDRFIDRCIDQzIDAwICBLQi4uLi4uLi4uLkxO
S0MuCiAgICAzRUUwOiAwOCA0NyAzMCA0MSAzMiAxMiAyQyAwNCAxMiAwOSAwNCAwQiBGRiBGRiAw
MCAwMCAgLkcwQTIuLC4uLi4uLi4uLgogICAgM0VGMDogMEEgM0IgMTIgMDkgMDQgMEIgRkYgRkYg
MDEgMDAgMEEgMzggMTIgMEEgMDQgMEIgIC47Li4uLi4uLi4uOC4uLi4KICAgIDNGMDA6IEZGIEZG
IDBBIDAyIDAwIDBBIDM5IDEyIDBBIDA0IDBCIEZGIEZGIDBBIDAzIDAwICAuLi4uLi45Li4uLi4u
Li4uCiAgICAzRjEwOiAwQSAzQSAwOCA1MCAzMCA0MSAzMyAxMiAzNCAwNCAxMiAwQiAwNCAwQiBG
RiBGRiAgLjouUDBBMy40Li4uLi4uLgogICAgM0YyMDogMDAgNEMgNEUgNEIgNDEgMDAgMTIgMEIg
MDQgMEIgRkYgRkYgMDEgNEMgNEUgNEIgIC5MTktBLi4uLi4uLi5MTksKICAgIDNGMzA6IDQyIDAw
IDEyIDBDIDA0IDBCIEZGIEZGIDBBIDAyIDRDIDRFIDRCIDQzIDAwIDEyICBCLi4uLi4uLi4uTE5L
Qy4uCiAgICAzRjQwOiAwQyAwNCAwQiBGRiBGRiAwQSAwMyA0QyA0RSA0QiA0NCAwMCAwOCA0NyAz
MCA0MSAgLi4uLi4uLkxOS0QuLkcwQQogICAgM0Y1MDogMzMgMTIgMkMgMDQgMTIgMDkgMDQgMEIg
RkYgRkYgMDAgMDAgMEEgMzggMTIgMDkgIDMuLC4uLi4uLi4uLi44Li4KICAgIDNGNjA6IDA0IDBC
IEZGIEZGIDAxIDAwIDBBIDM5IDEyIDBBIDA0IDBCIEZGIEZGIDBBIDAyICAuLi4uLi4uOS4uLi4u
Li4uCiAgICAzRjcwOiAwMCAwQSAzQSAxMiAwQSAwNCAwQiBGRiBGRiAwQSAwMyAwMCAwQSAzQiAw
OCA1MCAgLi46Li4uLi4uLi4uLjsuUAogICAgM0Y4MDogMzAgNDEgMzQgMTIgMzQgMDQgMTIgMEIg
MDQgMEIgRkYgRkYgMDAgNEMgNEUgNEIgIDBBNC40Li4uLi4uLi5MTksKICAgIDNGOTA6IDQ1IDAw
IDEyIDBCIDA0IDBCIEZGIEZGIDAxIDRDIDRFIDRCIDQ2IDAwIDEyIDBDICBFLi4uLi4uLi5MTktG
Li4uCiAgICAzRkEwOiAwNCAwQiBGRiBGRiAwQSAwMiA0QyA0RSA0QiA0NyAwMCAxMiAwQyAwNCAw
QiBGRiAgLi4uLi4uTE5LRy4uLi4uLgogICAgM0ZCMDogRkYgMEEgMDMgNEMgNEUgNEIgNDggMDAg
MDggNDcgMzAgNDEgMzQgMTIgMkMgMDQgIC4uLkxOS0guLkcwQTQuLC4KICAgIDNGQzA6IDEyIDA5
IDA0IDBCIEZGIEZGIDAwIDAwIDBBIDNDIDEyIDA5IDA0IDBCIEZGIEZGICAuLi4uLi4uLi48Li4u
Li4uCiAgICAzRkQwOiAwMSAwMCAwQSAzRCAxMiAwQSAwNCAwQiBGRiBGRiAwQSAwMiAwMCAwQSAz
RSAxMiAgLi4uPS4uLi4uLi4uLi4+LgogICAgM0ZFMDogMEEgMDQgMEIgRkYgRkYgMEEgMDMgMDAg
MEEgM0YgMDggNTAgMzAgNDEgMzUgMTIgIC4uLi4uLi4uLj8uUDBBNS4KICAgIDNGRjA6IDM0IDA0
IDEyIDBCIDA0IDBCIEZGIEZGIDAwIDRDIDRFIDRCIDQxIDAwIDEyIDBCICA0Li4uLi4uLi5MTktB
Li4uCiAgICA0MDAwOiAwNCAwQiBGRiBGRiAwMSA0QyA0RSA0QiA0MiAwMCAxMiAwQyAwNCAwQiBG
RiBGRiAgLi4uLi5MTktCLi4uLi4uLgogICAgNDAxMDogMEEgMDIgNEMgNEUgNEIgNDMgMDAgMTIg
MEMgMDQgMEIgRkYgRkYgMEEgMDMgNEMgIC4uTE5LQy4uLi4uLi4uLkwKICAgIDQwMjA6IDRFIDRC
IDQ0IDAwIDA4IDQ3IDMwIDQxIDM1IDEyIDJDIDA0IDEyIDA5IDA0IDBCICBOS0QuLkcwQTUuLC4u
Li4uCiAgICA0MDMwOiBGRiBGRiAwMCAwMCAwQSA0MCAxMiAwOSAwNCAwQiBGRiBGRiAwMSAwMCAw
QSA0MSAgLi4uLi5ALi4uLi4uLi4uQQogICAgNDA0MDogMTIgMEEgMDQgMEIgRkYgRkYgMEEgMDIg
MDAgMEEgNDIgMTIgMEEgMDQgMEIgRkYgIC4uLi4uLi4uLi5CLi4uLi4KICAgIDQwNTA6IEZGIDBB
IDAzIDAwIDBBIDQzIDEwIDhBIEI2IDA1IDVGIDUzIDQyIDVGIDVCIDgyICAuLi4uLkMuLi4uX1NC
X1suCiAgICA0MDYwOiA4NCA4NSAwMSA1MCA0MyA0OSAzMyAwOCA1RiA0OCA0OSA0NCAwQyA0MSBE
MCAwQSAgLi4uUENJMy5fSElELkEuLgogICAgNDA3MDogMDggMDggNUYgNDMgNDkgNDQgMEMgNDEg
RDAgMEEgMDMgMDggNUYgNDEgNDQgNTIgIC4uX0NJRC5BLi4uLl9BRFIKICAgIDQwODA6IDAwIDE0
IDBBIDVFIDQyIDRFIDMwIDMzIDAwIEE0IDBBIDAzIDE0IDBCIDVGIDQyICAuLi5eQk4wMy4uLi4u
Ll9CCiAgICA0MDkwOiA0MiA0RSAwMCBBNCA0MiA0RSAzMCAzMyAwOCA1RiA1NSA0OSA0NCAwQSAw
MyAxNCAgQk4uLkJOMDMuX1VJRC4uLgogICAgNDBBMDogMTYgNUYgNTAgNTIgNTQgMDAgQTAgMEEg
NTAgNDkgNDMgNEQgQTQgNDEgNTIgMzAgIC5fUFJULi4uUElDTS5BUjAKICAgIDQwQjA6IDMzIEE0
IDUwIDQ0IDMwIDMzIDA4IDQzIDUwIDUyIDQyIDAxIDA4IDRDIDU2IDQ3ICAzLlBEMDMuQ1BSQi4u
TFZHCiAgICA0MEMwOiA0MSAwQSAwMCAwOCA1MyA1NCA0MSA1NiAwQSAwRiAwOCA0MiA1MiA0MiA1
RiAwQiAgQS4uLlNUQVYuLi5CUkJfLgogICAgNDBEMDogQzAgMDAgMDggNDIgNTIgNEMgNUYgMEIg
NDAgMDAgMDggNDkgNEYgNDIgNUYgMEIgIC4uLkJSTF8uQC4uSU9CXy4KICAgIDQwRTA6IDAwIEEw
IDA4IDQ5IDRGIDRDIDVGIDBCIDAwIDYwIDA4IDREIDQyIDQyIDVGIDBDICAuLi5JT0xfLi5gLk1C
Ql8uCiAgICA0MEYwOiAwMCAwMCAwMCBENCAwOCA0RCA0MiA0QyA1RiAwQyAwMCAwMCAwMCAwMiAw
OCA0RCAgLi4uLi5NQkxfLi4uLi4uTQogICAgNDEwMDogNDEgNDIgNEMgMEUgMDAgMDAgNDAgMjAg
MDAgMDEgMDAgMDAgMDggNEQgNDEgNDIgIEFCTC4uLkAgLi4uLi5NQUIKICAgIDQxMTA6IDQ4IDBD
IDAwIDAwIDAxIDAwIDA4IDREIDQxIDREIDRDIDBDIDAwIDAwIDAxIDAwICBILi4uLi4uTUFNTC4u
Li4uCiAgICA0MTIwOiAwOCA0RCA0MSA0RCA0OCAwQyAwMCAwMCAwMSAwMCAwOCA0RCA0MSA0QyA0
QyAwRSAgLk1BTUguLi4uLi5NQUxMLgogICAgNDEzMDogMDAgMDAgMDAgOTMgNTkgMDAgMDAgMDAg
MDggNEQgNDEgNEMgNDggMEMgMDAgMDAgIC4uLi5ZLi4uLk1BTEguLi4KICAgIDQxNDA6IDAxIDAw
IDA4IDUwIDUyIDU4IDREIDBCIDAwIDAwIDA4IDQzIDUyIDUzIDMyIDExICAuLi5QUlhNLi4uLkNS
UzIuCiAgICA0MTUwOiA0OCAwOSAwQSA5NCA4OCAwRCAwMCAwMiAwQyAwMCAwMCAwMCA4MCAwMCBG
RiAwMCAgSC4uLi4uLi4uLi4uLi4uLgogICAgNDE2MDogMDAgMDAgODAgMDAgODggMEQgMDAgMDEg
MEMgMDMgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAgIDQxNzA6IDAwIDAw
IDAwIDAwIDg4IDBEIDAwIDAxIDBDIDAzIDAwIDAwIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4u
Li4uCiAgICA0MTgwOiAwMCAwMCAwMCAwMCA4NyAxNyAwMCAwMCAwQyAwMyAwMCAwMCAwMCAwMCAw
MCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNDE5MDogMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgODcgMTcgIC4uLi4uLi4uLi4uLi4uLi4KICAgIDQxQTA6IDAwIDAw
IDBDIDAzIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDgwIEZGIEZGIEZGIEZGICAuLi4uLi4uLi4uLi4u
Li4uCiAgICA0MUIwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCA4MCA4QSAyQiAwMCAwMCAwQyAwMyAw
MCAwMCAgLi4uLi4uLi4uKy4uLi4uLgogICAgNDFDMDogMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAgIDQxRDA6IDAwIDAw
IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4u
Li4uCiAgICA0MUUwOiAwMCAwMCAwMCAwMCAwMCAwMCA3OSAwMCAxNCAwQiA1RiA1MyA1NCA0MSAw
MCBBNCAgLi4uLi4ueS4uLl9TVEEuLgogICAgNDFGMDogNTMgNTQgNDEgNTYgMTQgNEEgMTkgNUYg
NDMgNTIgNTMgMDggOEIgNDMgNTIgNTMgIFNUQVYuSi5fQ1JTLi5DUlMKICAgIDQyMDA6IDMyIDBB
IDA4IDREIDQ5IDRFIDMyIDhCIDQzIDUyIDUzIDMyIDBBIDBBIDREIDQxICAyLi5NSU4yLkNSUzIu
Lk1BCiAgICA0MjEwOiA1OCAzMiA4QiA0MyA1MiA1MyAzMiAwQSAwRSA0QyA0NSA0RSAzMiA3MCA0
MiA1MiAgWDIuQ1JTMi4uTEVOMnBCUgogICAgNDIyMDogNDIgNUYgNEQgNDkgNEUgMzIgNzAgNDIg
NTIgNEMgNUYgNEMgNDUgNEUgMzIgNzAgIEJfTUlOMnBCUkxfTEVOMnAKICAgIDQyMzA6IDRDIDQ1
IDRFIDMyIDYxIDcyIDREIDQ5IDRFIDMyIDc2IDYxIDREIDQxIDU4IDMyICBMRU4yYXJNSU4ydmFN
QVgyCiAgICA0MjQwOiA4QiA0MyA1MiA1MyAzMiAwQSAyOCA0RCA0OSA0RSAzNCA4QiA0MyA1MiA1
MyAzMiAgLkNSUzIuKE1JTjQuQ1JTMgogICAgNDI1MDogMEEgMkEgNEQgNDEgNTggMzQgOEIgNDMg
NTIgNTMgMzIgMEEgMkUgNEMgNDUgNEUgIC4qTUFYNC5DUlMyLi5MRU4KICAgIDQyNjA6IDM0IDcw
IDQ5IDRGIDQyIDVGIDREIDQ5IDRFIDM0IDcwIDQ5IDRGIDRDIDVGIDRDICA0cElPQl9NSU40cElP
TF9MCiAgICA0MjcwOiA0NSA0RSAzNCA3MCA0QyA0NSA0RSAzNCA2MSA3MiA0RCA0OSA0RSAzNCA3
NiA2MSAgRU40cExFTjRhck1JTjR2YQogICAgNDI4MDogNEQgNDEgNTggMzQgQTAgNEQgMDcgNEMg
NTYgNDcgNDEgOEIgNDMgNTIgNTMgMzIgIE1BWDQuTS5MVkdBLkNSUzIKICAgIDQyOTA6IDBBIDE4
IDQ5IDREIDRFIDMyIDhCIDQzIDUyIDUzIDMyIDBBIDFBIDQ5IDREIDU4ICAuLklNTjIuQ1JTMi4u
SU1YCiAgICA0MkEwOiAzMiA4QiA0MyA1MiA1MyAzMiAwQSAxRSA0OSA0QyA0RSAzMiA3MCAwQiBC
MCAwMyAgMi5DUlMyLi5JTE4ycC4uLgogICAgNDJCMDogNDkgNEQgNEUgMzIgNzAgMEIgREYgMDMg
NDkgNEQgNTggMzIgNzAgMEEgMzAgNDkgIElNTjJwLi4uSU1YMnAuMEkKICAgIDQyQzA6IDRDIDRF
IDMyIDhBIDQzIDUyIDUzIDMyIDBBIDNBIDU2IDREIDRFIDMyIDhBIDQzICBMTjIuQ1JTMi46Vk1O
Mi5DCiAgICA0MkQwOiA1MiA1MyAzMiAwQSAzRSA1NiA0RCA1OCAzMiA4QSA0MyA1MiA1MyAzMiAw
QSA0NiAgUlMyLj5WTVgyLkNSUzIuRgogICAgNDJFMDogNTYgNEMgNEUgMzIgNzAgMEMgMDAgMDAg
MEEgMDAgNTYgNEQgNEUgMzIgNzAgMEMgIFZMTjJwLi4uLi5WTU4ycC4KICAgIDQyRjA6IEZGIEZG
IDBCIDAwIDU2IDREIDU4IDMyIDcwIDBDIDAwIDAwIDAyIDAwIDU2IDRDICAuLi4uVk1YMnAuLi4u
LlZMCiAgICA0MzAwOiA0RSAzMiA4QSA0MyA1MiA1MyAzMiAwQSA1NCA0RCA0OSA0RSAzNSA4QSA0
MyA1MiAgTjIuQ1JTMi5UTUlONS5DUgogICAgNDMxMDogNTMgMzIgMEEgNTggNEQgNDEgNTggMzUg
OEEgNDMgNTIgNTMgMzIgMEEgNjAgNEMgIFMyLlhNQVg1LkNSUzIuYEwKICAgIDQzMjA6IDQ1IDRF
IDM1IDcwIDREIDQyIDQyIDVGIDREIDQ5IDRFIDM1IDcwIDREIDQyIDRDICBFTjVwTUJCX01JTjVw
TUJMCiAgICA0MzMwOiA1RiA0QyA0NSA0RSAzNSA3MCA0QyA0NSA0RSAzNSA2MSA3MiA0RCA0OSA0
RSAzNSAgX0xFTjVwTEVONWFyTUlONQogICAgNDM0MDogNzYgNjEgNEQgNDEgNTggMzUgOEYgNDMg
NTIgNTMgMzIgMEEgNzIgNEQgNDkgNEUgIHZhTUFYNS5DUlMyLnJNSU4KICAgIDQzNTA6IDM5IDhG
IDQzIDUyIDUzIDMyIDBBIDdBIDREIDQxIDU4IDM5IDhGIDQzIDUyIDUzICA5LkNSUzIuek1BWDku
Q1JTCiAgICA0MzYwOiAzMiAwQSA4QSA0QyA0NSA0RSAzOSA3MCA0RCA0MSA0MiA0QyA0RCA0OSA0
RSAzOSAgMi4uTEVOOXBNQUJMTUlOOQogICAgNDM3MDogNzAgNEQgNDEgNEMgNEMgNEMgNDUgNEUg
MzkgNzAgNEMgNDUgNEUgMzkgNjAgNzIgIHBNQUxMTEVOOXBMRU45YHIKICAgIDQzODA6IDREIDQ5
IDRFIDM5IDc2IDYwIDREIDQxIDU4IDM5IEE0IDQzIDUyIDUzIDMyIDE0ICBNSU45dmBNQVg5LkNS
UzIuCiAgICA0MzkwOiA0MiAxMyA1RiA0RiA1MyA0MyAwQyAwOCA1MyA1NSA1MCA1MCAwMCAwOCA0
MyA1NCAgQi5fT1NDLi5TVVBQLi5DVAogICAgNDNBMDogNTIgNEMgMDAgOEEgNkIgMDAgNDMgNDQg
NTcgMzEgOEEgNkIgMEEgMDQgNDMgNDQgIFJMLi5rLkNEVzEuay4uQ0QKICAgIDQzQjA6IDU3IDMy
IDhBIDZCIDBBIDA4IDQzIDQ0IDU3IDMzIEEwIDQ4IDBGIDkzIDY4IDExICBXMi5rLi5DRFczLkgu
LmguCiAgICA0M0MwOiAxMyAwQSAxMCA1QiA0RCBEQiAzMyBGNyAxRiAxQyA0MCA5NiA1NyA3NCA0
MSBDMCAgLi4uW00uMy4uLkAuV3RBLgogICAgNDNEMDogM0QgRDcgNjYgNzAgNDMgNDQgNTcgMzIg
NTMgNTUgNTAgNTAgNzAgNDMgNDQgNTcgID0uZnBDRFcyU1VQUHBDRFcKICAgIDQzRTA6IDMzIDQz
IDU0IDUyIDRDIEEwIDE4IDkyIDkzIDdCIDUzIDU1IDUwIDUwIDBBIDE2ICAzQ1RSTC4uLi57U1VQ
UC4uCiAgICA0M0YwOiAwMCAwQSAxNiA3QiA0MyA1NCA1MiA0QyAwQSAxRSA0MyA1NCA1MiA0QyBB
MCAxMSAgLi4ue0NUUkwuLkNUUkwuLgogICAgNDQwMDogOTIgNTAgNDUgNDggNTAgN0IgNDMgNTQg
NTIgNEMgMEEgMUUgNDMgNTQgNTIgNEMgIC5QRUhQe0NUUkwuLkNUUkwKICAgIDQ0MTA6IEEwIDEx
IDkyIDUzIDQ4IDUwIDQzIDdCIDQzIDU0IDUyIDRDIDBBIDFEIDQzIDU0ICAuLi5TSFBDe0NUUkwu
LkNUCiAgICA0NDIwOiA1MiA0QyBBMCAxMSA5MiA1MCA0NSA1MCA0RCA3QiA0MyA1NCA1MiA0QyAw
QSAxQiAgUkwuLi5QRVBNe0NUUkwuLgogICAgNDQzMDogNDMgNTQgNTIgNEMgQTAgMTEgOTIgNTAg
NDUgNDUgNTIgN0IgNDMgNTQgNTIgNEMgIENUUkwuLi5QRUVSe0NUUkwKICAgIDQ0NDA6IDBBIDE1
IDQzIDU0IDUyIDRDIEEwIDExIDkyIDUwIDQ1IDQzIDUzIDdCIDQzIDU0ICAuLkNUUkwuLi5QRUNT
e0NUCiAgICA0NDUwOiA1MiA0QyAwQSAwRiA0MyA1NCA1MiA0QyBBMCAxMCA5MiA5MyA2OSAwMSA3
RCA0MyAgUkwuLkNUUkwuLi4uaS59QwogICAgNDQ2MDogNDQgNTcgMzEgMEEgMDggNDMgNDQgNTcg
MzEgQTAgMTUgNUIgMTIgNTAgNEYgNTMgIERXMS4uQ0RXMS4uWy5QT1MKICAgIDQ0NzA6IDQzIDAw
IDdCIDQzIDU0IDUyIDRDIDUwIDRGIDUzIDQzIDQzIDU0IDUyIDRDIEEwICBDLntDVFJMUE9TQ0NU
UkwuCiAgICA0NDgwOiAxNiA5MiA5MyA0MyA0NCA1NyAzMyA0MyA1NCA1MiA0QyA3RCA0MyA0NCA1
NyAzMSAgLi4uQ0RXM0NUUkx9Q0RXMQogICAgNDQ5MDogMEEgMTAgNDMgNDQgNTcgMzEgNzAgNDMg
NTQgNTIgNEMgNDMgNDQgNTcgMzMgQTAgIC4uQ0RXMXBDVFJMQ0RXMy4KICAgIDQ0QTA6IDExIDVC
IDEyIDUwIDRGIDUzIDUzIDAwIDcwIDUzIDU1IDUwIDUwIDUwIDRGIDUzICAuWy5QT1NTLnBTVVBQ
UE9TCiAgICA0NEIwOiA1MyBBNCA2QiBBMSAwRSA3RCA0MyA0NCA1NyAzMSAwQSAwNCA0MyA0NCA1
NyAzMSAgUy5rLi59Q0RXMS4uQ0RXMQogICAgNDRDMDogQTQgNkIgNUIgODIgMEMgNDQgMzAgMzIg
MzMgMDggNUYgNDEgNDQgNTIgMEEgMDIgIC5rWy4uRDAyMy5fQURSLi4KICAgIDQ0RDA6IDVCIDgy
IDBDIDQ0IDMwIDMyIDM0IDA4IDVGIDQxIDQ0IDUyIDBBIDAzIDVCIDgyICBbLi5EMDI0Ll9BRFIu
LlsuCiAgICA0NEUwOiA0NiAwNCA0NyA1MCA1MCAzMCAwOCA1RiA0MSA0NCA1MiAwQyAwMSAwMCAw
MSAwMCAgRi5HUFAwLl9BRFIuLi4uLgogICAgNDRGMDogMTQgMEYgNUYgNTAgNTIgNTcgMDAgQTQg
NDcgNTAgNTIgNTcgMEEgMDggMEEgMDQgIC4uX1BSVy4uR1BSVy4uLi4KICAgIDQ1MDA6IDE0IDE2
IDVGIDUwIDUyIDU0IDAwIEEwIDBBIDUwIDQ5IDQzIDREIEE0IDQ3IDMwICAuLl9QUlQuLi5QSUNN
LkcwCiAgICA0NTEwOiAzMiAzNSBBNCA1MCAzMCAzMiAzNSA1QiA4MiAwRCA0NCAzMCA0MiAzMyAw
OCA1RiAgMjUuUDAyNVsuLkQwQjMuXwogICAgNDUyMDogNDEgNDQgNTIgMEIgRkYgRkYgNUIgODIg
NDYgMDQgNDcgNTAgNTAgMzEgMDggNUYgIEFEUi4uLlsuRi5HUFAxLl8KICAgIDQ1MzA6IDQxIDQ0
IDUyIDBDIDAyIDAwIDAxIDAwIDE0IDBGIDVGIDUwIDUyIDU3IDAwIEE0ICBBRFIuLi4uLi4uX1BS
Vy4uCiAgICA0NTQwOiA0NyA1MCA1MiA1NyAwQSAwOCAwQSAwNCAxNCAxNiA1RiA1MCA1MiA1NCAw
MCBBMCAgR1BSVy4uLi4uLl9QUlQuLgogICAgNDU1MDogMEEgNTAgNDkgNDMgNEQgQTQgNDcgMzAg
MzIgMzYgQTQgNTAgMzAgMzIgMzYgNUIgIC5QSUNNLkcwMjYuUDAyNlsKICAgIDQ1NjA6IDgyIDBE
IDQ0IDMwIDQyIDM0IDA4IDVGIDQxIDQ0IDUyIDBCIEZGIEZGIDVCIDgyICAuLkQwQjQuX0FEUi4u
LlsuCiAgICA0NTcwOiA0NiAwNCA0NyA1MCA1MCAzMiAwOCA1RiA0MSA0NCA1MiAwQyAwMyAwMCAw
MSAwMCAgRi5HUFAyLl9BRFIuLi4uLgogICAgNDU4MDogMTQgMEYgNUYgNTAgNTIgNTcgMDAgQTQg
NDcgNTAgNTIgNTcgMEEgMDggMEEgMDQgIC4uX1BSVy4uR1BSVy4uLi4KICAgIDQ1OTA6IDE0IDE2
IDVGIDUwIDUyIDU0IDAwIEEwIDBBIDUwIDQ5IDQzIDREIEE0IDQ3IDMwICAuLl9QUlQuLi5QSUNN
LkcwCiAgICA0NUEwOiAzMiAzNyBBNCA1MCAzMCAzMiAzNyA1QiA4MiAwRCA0NCAzMCA0MiAzNSAw
OCA1RiAgMjcuUDAyN1suLkQwQjUuXwogICAgNDVCMDogNDEgNDQgNTIgMEIgRkYgRkYgNUIgODIg
NDYgMDQgNDcgNTAgNTAgMzMgMDggNUYgIEFEUi4uLlsuRi5HUFAzLl8KICAgIDQ1QzA6IDQxIDQ0
IDUyIDBDIDA0IDAwIDAxIDAwIDE0IDBGIDVGIDUwIDUyIDU3IDAwIEE0ICBBRFIuLi4uLi4uX1BS
Vy4uCiAgICA0NUQwOiA0NyA1MCA1MiA1NyAwQSAwOCAwQSAwNCAxNCAxNiA1RiA1MCA1MiA1NCAw
MCBBMCAgR1BSVy4uLi4uLl9QUlQuLgogICAgNDVFMDogMEEgNTAgNDkgNDMgNEQgQTQgNDcgMzAg
MzIgMzggQTQgNTAgMzAgMzIgMzggNUIgIC5QSUNNLkcwMjguUDAyOFsKICAgIDQ1RjA6IDgyIDBE
IDQ0IDMwIDQyIDM2IDA4IDVGIDQxIDQ0IDUyIDBCIEZGIEZGIDVCIDgyICAuLkQwQjYuX0FEUi4u
LlsuCiAgICA0NjAwOiA0NiAwNCA0NyA1MCA1MCAzNCAwOCA1RiA0MSA0NCA1MiAwQyAwNSAwMCAw
MSAwMCAgRi5HUFA0Ll9BRFIuLi4uLgogICAgNDYxMDogMTQgMEYgNUYgNTAgNTIgNTcgMDAgQTQg
NDcgNTAgNTIgNTcgMEEgMDggMEEgMDQgIC4uX1BSVy4uR1BSVy4uLi4KICAgIDQ2MjA6IDE0IDE2
IDVGIDUwIDUyIDU0IDAwIEEwIDBBIDUwIDQ5IDQzIDREIEE0IDQ3IDMwICAuLl9QUlQuLi5QSUNN
LkcwCiAgICA0NjMwOiAzMiAzOSBBNCA1MCAzMCAzMiAzOSA1QiA4MiAwRCA0NCAzMCA0MiAzNyAw
OCA1RiAgMjkuUDAyOVsuLkQwQjcuXwogICAgNDY0MDogNDEgNDQgNTIgMEIgRkYgRkYgNUIgODIg
NDYgMDQgNDcgNTAgNTAgMzUgMDggNUYgIEFEUi4uLlsuRi5HUFA1Ll8KICAgIDQ2NTA6IDQxIDQ0
IDUyIDBDIDA2IDAwIDAxIDAwIDE0IDBGIDVGIDUwIDUyIDU3IDAwIEE0ICBBRFIuLi4uLi4uX1BS
Vy4uCiAgICA0NjYwOiA0NyA1MCA1MiA1NyAwQSAwOCAwQSAwNCAxNCAxNiA1RiA1MCA1MiA1NCAw
MCBBMCAgR1BSVy4uLi4uLl9QUlQuLgogICAgNDY3MDogMEEgNTAgNDkgNDMgNEQgQTQgNDcgMzAg
MzIgNDEgQTQgNTAgMzAgMzIgNDEgNUIgIC5QSUNNLkcwMkEuUDAyQVsKICAgIDQ2ODA6IDgyIDBE
IDQ0IDMwIDQyIDM4IDA4IDVGIDQxIDQ0IDUyIDBCIEZGIEZGIDVCIDgyICAuLkQwQjguX0FEUi4u
LlsuCiAgICA0NjkwOiA0NiAwNCA0NyA1MCA1MCAzNiAwOCA1RiA0MSA0NCA1MiAwQyAwNyAwMCAw
MSAwMCAgRi5HUFA2Ll9BRFIuLi4uLgogICAgNDZBMDogMTQgMEYgNUYgNTAgNTIgNTcgMDAgQTQg
NDcgNTAgNTIgNTcgMEEgMDggMEEgMDQgIC4uX1BSVy4uR1BSVy4uLi4KICAgIDQ2QjA6IDE0IDE2
IDVGIDUwIDUyIDU0IDAwIEEwIDBBIDUwIDQ5IDQzIDREIEE0IDQ3IDMwICAuLl9QUlQuLi5QSUNN
LkcwCiAgICA0NkMwOiAzMiA0MiBBNCA1MCAzMCAzMiA0MiA1QiA4MiAwRCA0NCAzMCA0MiAzOSAw
OCA1RiAgMkIuUDAyQlsuLkQwQjkuXwogICAgNDZEMDogNDEgNDQgNTIgMEIgRkYgRkYgNUIgODIg
NDYgMDQgNDcgNTAgNTAgMzcgMDggNUYgIEFEUi4uLlsuRi5HUFA3Ll8KICAgIDQ2RTA6IDQxIDQ0
IDUyIDBDIDAxIDAwIDAyIDAwIDE0IDBGIDVGIDUwIDUyIDU3IDAwIEE0ICBBRFIuLi4uLi4uX1BS
Vy4uCiAgICA0NkYwOiA0NyA1MCA1MiA1NyAwQSAwOCAwQSAwNCAxNCAxNiA1RiA1MCA1MiA1NCAw
MCBBMCAgR1BSVy4uLi4uLl9QUlQuLgogICAgNDcwMDogMEEgNTAgNDkgNDMgNEQgQTQgNDcgMzAg
MzIgNDMgQTQgNTAgMzAgMzIgNDMgNUIgIC5QSUNNLkcwMkMuUDAyQ1sKICAgIDQ3MTA6IDgyIDBE
IDQ0IDMwIDQyIDQxIDA4IDVGIDQxIDQ0IDUyIDBCIEZGIEZGIDVCIDgyICAuLkQwQkEuX0FEUi4u
LlsuCiAgICA0NzIwOiA0NiAwNCA0NyA1MCA1MCAzOCAwOCA1RiA0MSA0NCA1MiAwQyAwMiAwMCAw
MiAwMCAgRi5HUFA4Ll9BRFIuLi4uLgogICAgNDczMDogMTQgMEYgNUYgNTAgNTIgNTcgMDAgQTQg
NDcgNTAgNTIgNTcgMEEgMDggMEEgMDQgIC4uX1BSVy4uR1BSVy4uLi4KICAgIDQ3NDA6IDE0IDE2
IDVGIDUwIDUyIDU0IDAwIEEwIDBBIDUwIDQ5IDQzIDREIEE0IDQ3IDMwICAuLl9QUlQuLi5QSUNN
LkcwCiAgICA0NzUwOiAzMiA0NCBBNCA1MCAzMCAzMiA0NCA1QiA4MiAwRCA0NCAzMCA0MiA0NCAw
OCA1RiAgMkQuUDAyRFsuLkQwQkQuXwogICAgNDc2MDogNDEgNDQgNTIgMEIgRkYgRkYgNUIgODIg
NDYgMDQgNDcgNTAgNTAgMzkgMDggNUYgIEFEUi4uLlsuRi5HUFA5Ll8KICAgIDQ3NzA6IDQxIDQ0
IDUyIDBDIDAxIDAwIDAzIDAwIDE0IDBGIDVGIDUwIDUyIDU3IDAwIEE0ICBBRFIuLi4uLi4uX1BS
Vy4uCiAgICA0NzgwOiA0NyA1MCA1MiA1NyAwQSAwOCAwQSAwNCAxNCAxNiA1RiA1MCA1MiA1NCAw
MCBBMCAgR1BSVy4uLi4uLl9QUlQuLgogICAgNDc5MDogMEEgNTAgNDkgNDMgNEQgQTQgNDcgMzAg
MzIgNDUgQTQgNTAgMzAgMzIgNDUgNUIgIC5QSUNNLkcwMkUuUDAyRVsKICAgIDQ3QTA6IDgyIDBE
IDQ0IDMwIDQxIDQyIDA4IDVGIDQxIDQ0IDUyIDBCIEZGIEZGIDVCIDgyICAuLkQwQUIuX0FEUi4u
LlsuCiAgICA0N0IwOiA0NiAwNCA0NyA1MCA1MCA0MSAwOCA1RiA0MSA0NCA1MiAwQyAwMiAwMCAw
MyAwMCAgRi5HUFBBLl9BRFIuLi4uLgogICAgNDdDMDogMTQgMEYgNUYgNTAgNTIgNTcgMDAgQTQg
NDcgNTAgNTIgNTcgMEEgMDggMEEgMDQgIC4uX1BSVy4uR1BSVy4uLi4KICAgIDQ3RDA6IDE0IDE2
IDVGIDUwIDUyIDU0IDAwIEEwIDBBIDUwIDQ5IDQzIDREIEE0IDQ3IDMwICAuLl9QUlQuLi5QSUNN
LkcwCiAgICA0N0UwOiAzMiA0NiBBNCA1MCAzMCAzMiA0NiA1QiA4MiAwRCA0NCAzMCA0MSA0MyAw
OCA1RiAgMkYuUDAyRlsuLkQwQUMuXwogICAgNDdGMDogNDEgNDQgNTIgMEIgRkYgRkYgNUIgODIg
NDYgMDQgNDcgNTAgNTAgNDIgMDggNUYgIEFEUi4uLlsuRi5HUFBCLl8KICAgIDQ4MDA6IDQxIDQ0
IDUyIDBDIDAzIDAwIDAzIDAwIDE0IDBGIDVGIDUwIDUyIDU3IDAwIEE0ICBBRFIuLi4uLi4uX1BS
Vy4uCiAgICA0ODEwOiA0NyA1MCA1MiA1NyAwQSAwOCAwQSAwNCAxNCAxNiA1RiA1MCA1MiA1NCAw
MCBBMCAgR1BSVy4uLi4uLl9QUlQuLgogICAgNDgyMDogMEEgNTAgNDkgNDMgNEQgQTQgNDcgMzAg
MzMgMzAgQTQgNTAgMzAgMzMgMzAgNUIgIC5QSUNNLkcwMzAuUDAzMFsKICAgIDQ4MzA6IDgyIDBE
IDQ0IDMwIDQxIDQ0IDA4IDVGIDQxIDQ0IDUyIDBCIEZGIEZGIDVCIDgyICAuLkQwQUQuX0FEUi4u
LlsuCiAgICA0ODQwOiA0NiAwNCA0NyA1MCA1MCA0MyAwOCA1RiA0MSA0NCA1MiAwQyAwNCAwMCAw
MyAwMCAgRi5HUFBDLl9BRFIuLi4uLgogICAgNDg1MDogMTQgMEYgNUYgNTAgNTIgNTcgMDAgQTQg
NDcgNTAgNTIgNTcgMEEgMDggMEEgMDQgIC4uX1BSVy4uR1BSVy4uLi4KICAgIDQ4NjA6IDE0IDE2
IDVGIDUwIDUyIDU0IDAwIEEwIDBBIDUwIDQ5IDQzIDREIEE0IDQ3IDMwICAuLl9QUlQuLi5QSUNN
LkcwCiAgICA0ODcwOiAzMyAzMSBBNCA1MCAzMCAzMyAzMSA1QiA4MiAwRCA0NCAzMCA0MSA0NSAw
OCA1RiAgMzEuUDAzMVsuLkQwQUUuXwogICAgNDg4MDogNDEgNDQgNTIgMEIgRkYgRkYgNUIgODIg
NDYgMDQgNDcgNTAgNTAgNDQgMDggNUYgIEFEUi4uLlsuRi5HUFBELl8KICAgIDQ4OTA6IDQxIDQ0
IDUyIDBDIDA1IDAwIDAzIDAwIDE0IDBGIDVGIDUwIDUyIDU3IDAwIEE0ICBBRFIuLi4uLi4uX1BS
Vy4uCiAgICA0OEEwOiA0NyA1MCA1MiA1NyAwQSAwOCAwQSAwNCAxNCAxNiA1RiA1MCA1MiA1NCAw
MCBBMCAgR1BSVy4uLi4uLl9QUlQuLgogICAgNDhCMDogMEEgNTAgNDkgNDMgNEQgQTQgNDcgMzAg
MzMgMzIgQTQgNTAgMzAgMzMgMzIgNUIgIC5QSUNNLkcwMzIuUDAzMlsKICAgIDQ4QzA6IDgyIDBE
IDQ0IDMwIDQxIDQ2IDA4IDVGIDQxIDQ0IDUyIDBCIEZGIEZGIDVCIDgyICAuLkQwQUYuX0FEUi4u
LlsuCiAgICA0OEQwOiA0NiAwNCA0NyA1MCA1MCA0NSAwOCA1RiA0MSA0NCA1MiAwQyAwNiAwMCAw
MyAwMCAgRi5HUFBFLl9BRFIuLi4uLgogICAgNDhFMDogMTQgMEYgNUYgNTAgNTIgNTcgMDAgQTQg
NDcgNTAgNTIgNTcgMEEgMDggMEEgMDQgIC4uX1BSVy4uR1BSVy4uLi4KICAgIDQ4RjA6IDE0IDE2
IDVGIDUwIDUyIDU0IDAwIEEwIDBBIDUwIDQ5IDQzIDREIEE0IDQ3IDMwICAuLl9QUlQuLi5QSUNN
LkcwCiAgICA0OTAwOiAzMyAzMyBBNCA1MCAzMCAzMyAzMyA1QiA4MiAwRCA0NCAzMCA0MiAzMCAw
OCA1RiAgMzMuUDAzM1suLkQwQjAuXwogICAgNDkxMDogNDEgNDQgNTIgMEIgRkYgRkYgNUIgODIg
NDYgMDQgNDcgNTAgNTAgNDYgMDggNUYgIEFEUi4uLlsuRi5HUFBGLl8KICAgIDQ5MjA6IDQxIDQ0
IDUyIDBDIDA3IDAwIDAzIDAwIDE0IDBGIDVGIDUwIDUyIDU3IDAwIEE0ICBBRFIuLi4uLi4uX1BS
Vy4uCiAgICA0OTMwOiA0NyA1MCA1MiA1NyAwQSAwOCAwQSAwNCAxNCAxNiA1RiA1MCA1MiA1NCAw
MCBBMCAgR1BSVy4uLi4uLl9QUlQuLgogICAgNDk0MDogMEEgNTAgNDkgNDMgNEQgQTQgNDcgMzAg
MzMgMzQgQTQgNTAgMzAgMzMgMzQgNUIgIC5QSUNNLkcwMzQuUDAzNFsKICAgIDQ5NTA6IDgyIDBE
IDQ0IDMwIDQyIDMxIDA4IDVGIDQxIDQ0IDUyIDBCIEZGIEZGIDVCIDgyICAuLkQwQjEuX0FEUi4u
LlsuCiAgICA0OTYwOiA0NiAwNCA0NyA1MCA1MCA0NyAwOCA1RiA0MSA0NCA1MiAwQyAwMSAwMCAw
NCAwMCAgRi5HUFBHLl9BRFIuLi4uLgogICAgNDk3MDogMTQgMEYgNUYgNTAgNTIgNTcgMDAgQTQg
NDcgNTAgNTIgNTcgMEEgMDggMEEgMDQgIC4uX1BSVy4uR1BSVy4uLi4KICAgIDQ5ODA6IDE0IDE2
IDVGIDUwIDUyIDU0IDAwIEEwIDBBIDUwIDQ5IDQzIDREIEE0IDQ3IDMwICAuLl9QUlQuLi5QSUNN
LkcwCiAgICA0OTkwOiAzMyAzNSBBNCA1MCAzMCAzMyAzNSA1QiA4MiAwRCA0NCAzMCA0MiAzMiAw
OCA1RiAgMzUuUDAzNVsuLkQwQjIuXwogICAgNDlBMDogNDEgNDQgNTIgMEIgRkYgRkYgNUIgODIg
NDYgMDQgNDcgNTAgNTAgNDggMDggNUYgIEFEUi4uLlsuRi5HUFBILl8KICAgIDQ5QjA6IDQxIDQ0
IDUyIDBDIDAyIDAwIDA0IDAwIDE0IDBGIDVGIDUwIDUyIDU3IDAwIEE0ICBBRFIuLi4uLi4uX1BS
Vy4uCiAgICA0OUMwOiA0NyA1MCA1MiA1NyAwQSAwOCAwQSAwNCAxNCAxNiA1RiA1MCA1MiA1NCAw
MCBBMCAgR1BSVy4uLi4uLl9QUlQuLgogICAgNDlEMDogMEEgNTAgNDkgNDMgNEQgQTQgNDcgMzAg
MzMgMzYgQTQgNTAgMzAgMzMgMzYgNUIgIC5QSUNNLkcwMzYuUDAzNlsKICAgIDQ5RTA6IDgyIDBE
IDQ0IDMwIDQyIDQ1IDA4IDVGIDQxIDQ0IDUyIDBCIEZGIEZGIDVCIDgyICAuLkQwQkUuX0FEUi4u
LlsuCiAgICA0OUYwOiA0NiAwNCA0NyA1MCAzMSAzNSAwOCA1RiA0MSA0NCA1MiAwQyAwMSAwMCAw
NSAwMCAgRi5HUDE1Ll9BRFIuLi4uLgogICAgNEEwMDogMTQgMEYgNUYgNTAgNTIgNTcgMDAgQTQg
NDcgNTAgNTIgNTcgMEEgMDggMEEgMDQgIC4uX1BSVy4uR1BSVy4uLi4KICAgIDRBMTA6IDE0IDE2
IDVGIDUwIDUyIDU0IDAwIEEwIDBBIDUwIDQ5IDQzIDREIEE0IDQ3IDMwICAuLl9QUlQuLi5QSUNN
LkcwCiAgICA0QTIwOiAzMyAzNyBBNCA1MCAzMCAzMyAzNyA1QiA4MiAwRCA0NCAzMCA0MiA0MiAw
OCA1RiAgMzcuUDAzN1suLkQwQkIuXwogICAgNEEzMDogNDEgNDQgNTIgMEIgRkYgRkYgNUIgODIg
NDYgMDQgNDcgNTAgMzIgMzUgMDggNUYgIEFEUi4uLlsuRi5HUDI1Ll8KICAgIDRBNDA6IDQxIDQ0
IDUyIDBDIDAyIDAwIDA1IDAwIDE0IDBGIDVGIDUwIDUyIDU3IDAwIEE0ICBBRFIuLi4uLi4uX1BS
Vy4uCiAgICA0QTUwOiA0NyA1MCA1MiA1NyAwQSAwOCAwQSAwNCAxNCAxNiA1RiA1MCA1MiA1NCAw
MCBBMCAgR1BSVy4uLi4uLl9QUlQuLgogICAgNEE2MDogMEEgNTAgNDkgNDMgNEQgQTQgNDcgMzAg
MzMgMzggQTQgNTAgMzAgMzMgMzggNUIgIC5QSUNNLkcwMzguUDAzOFsKICAgIDRBNzA6IDgyIDBE
IDQ0IDMwIDQyIDQzIDA4IDVGIDQxIDQ0IDUyIDBCIEZGIEZGIDVCIDgyICAuLkQwQkMuX0FEUi4u
LlsuCiAgICA0QTgwOiA0NiAwNCA0NyA1MCAzMyAzNSAwOCA1RiA0MSA0NCA1MiAwQyAwMyAwMCAw
NSAwMCAgRi5HUDM1Ll9BRFIuLi4uLgogICAgNEE5MDogMTQgMEYgNUYgNTAgNTIgNTcgMDAgQTQg
NDcgNTAgNTIgNTcgMEEgMDggMEEgMDQgIC4uX1BSVy4uR1BSVy4uLi4KICAgIDRBQTA6IDE0IDE2
IDVGIDUwIDUyIDU0IDAwIEEwIDBBIDUwIDQ5IDQzIDREIEE0IDQ3IDMwICAuLl9QUlQuLi5QSUNN
LkcwCiAgICA0QUIwOiAzMyAzOSBBNCA1MCAzMCAzMyAzOSA1QiA4MiAwRCA0NCAzMCA0MiA0NiAw
OCA1RiAgMzkuUDAzOVsuLkQwQkYuXwogICAgNEFDMDogNDEgNDQgNTIgMEIgRkYgRkYgNUIgODIg
NDYgMDQgNDcgNTAgMzQgMzUgMDggNUYgIEFEUi4uLlsuRi5HUDQ1Ll8KICAgIDRBRDA6IDQxIDQ0
IDUyIDBDIDA0IDAwIDA1IDAwIDE0IDBGIDVGIDUwIDUyIDU3IDAwIEE0ICBBRFIuLi4uLi4uX1BS
Vy4uCiAgICA0QUUwOiA0NyA1MCA1MiA1NyAwQSAwOCAwQSAwNCAxNCAxNiA1RiA1MCA1MiA1NCAw
MCBBMCAgR1BSVy4uLi4uLl9QUlQuLgogICAgNEFGMDogMEEgNTAgNDkgNDMgNEQgQTQgNDcgMzAg
MzMgNDEgQTQgNTAgMzAgMzMgNDEgNUIgIC5QSUNNLkcwM0EuUDAzQVsKICAgIDRCMDA6IDgyIDBE
IDQ0IDMwIDQzIDMwIDA4IDVGIDQxIDQ0IDUyIDBCIEZGIEZGIDVCIDgyICAuLkQwQzAuX0FEUi4u
LlsuCiAgICA0QjEwOiA0NSAwQSA0NyA1MCAzMSAzNyAwOCA1RiA0MSA0NCA1MiAwQyAwMSAwMCAw
NyAwMCAgRS5HUDE3Ll9BRFIuLi4uLgogICAgNEIyMDogMTQgMEYgNUYgNTAgNTIgNTcgMDAgQTQg
NDcgNTAgNTIgNTcgMEEgMEIgMEEgMDQgIC4uX1BSVy4uR1BSVy4uLi4KICAgIDRCMzA6IDE0IDE2
IDVGIDUwIDUyIDU0IDAwIEEwIDBBIDUwIDQ5IDQzIDREIEE0IDQ3IDMwICAuLl9QUlQuLi5QSUNN
LkcwCiAgICA0QjQwOiAzMyA0MiBBNCA1MCAzMCAzMyA0MiA1QiA4MiAwQiA0NCAzMCAzMyA0MyAw
OCA1RiAgM0IuUDAzQlsuLkQwM0MuXwogICAgNEI1MDogNDEgNDQgNTIgMDAgNUIgODIgMEIgNDQg
MzAgMzMgNDQgMDggNUYgNDEgNDQgNTIgIEFEUi5bLi5EMDNELl9BRFIKICAgIDRCNjA6IDAxIDVC
IDgyIDBDIDQ0IDMwIDMzIDQ1IDA4IDVGIDQxIDQ0IDUyIDBBIDAyIDVCICAuWy4uRDAzRS5fQURS
Li5bCiAgICA0QjcwOiA4MiAwQyA0NCAzMCAzMyA0NiAwOCA1RiA0MSA0NCA1MiAwQSAwMyA1QiA4
MiAwQyAgLi5EMDNGLl9BRFIuLlsuLgogICAgNEI4MDogNTggNDggNDMgMzAgMDggNUYgNDEgNDQg
NTIgMEEgMDQgNUIgODIgMEMgNDQgMzAgIFhIQzAuX0FEUi4uWy4uRDAKICAgIDRCOTA6IDM0IDMx
IDA4IDVGIDQxIDQ0IDUyIDBBIDA1IDVCIDgyIDBDIDQ0IDMwIDM0IDMyICA0MS5fQURSLi5bLi5E
MDQyCiAgICA0QkEwOiAwOCA1RiA0MSA0NCA1MiAwQSAwNiA1QiA4MiAwQyA0NCAzMCAzNCAzMyAw
OCA1RiAgLl9BRFIuLlsuLkQwNDMuXwogICAgNEJCMDogNDEgNDQgNTIgMEEgMDcgNUIgODIgNEQg
Q0YgNDcgNTAgMzIgMzcgMDggNUYgNDEgIEFEUi4uWy5NLkdQMjcuX0EKICAgIDRCQzA6IDQ0IDUy
IDBDIDAyIDAwIDA3IDAwIDE0IDBGIDVGIDUwIDUyIDU3IDAwIEE0IDQ3ICBEUi4uLi4uLi5fUFJX
Li5HCiAgICA0QkQwOiA1MCA1MiA1NyAwQSAwQiAwQSAwNCAxNCAxNiA1RiA1MCA1MiA1NCAwMCBB
MCAwQSAgUFJXLi4uLi4uX1BSVC4uLgogICAgNEJFMDogNTAgNDkgNDMgNEQgQTQgNDcgMzAgMzQg
MzQgQTQgNTAgMzAgMzQgMzQgNUIgODIgIFBJQ00uRzA0NC5QMDQ0Wy4KICAgIDRCRjA6IDQxIDY2
IDUzIDQxIDU0IDQxIDA4IDVGIDQxIDQ0IDUyIDAwIDA4IDQyIDM1IDQ1ICBBZlNBVEEuX0FEUi4u
QjVFCiAgICA0QzAwOiA0RSAwMCAwOCA0MiA0MSA1RiAzNSAwMCAwOCA1MyA0MiA0MSA1MiAwQyAw
MCBGMCAgTi4uQkFfNS4uU0JBUi4uLgogICAgNEMxMDogQjYgRjAgMDggNEYgNTMgNTYgNTIgMDAg
NUIgODAgNTMgNDEgNTQgNTggMDIgMDAgIC4uLk9TVlIuWy5TQVRYLi4KICAgIDRDMjA6IDBBIDQ0
IDVCIDgxIDQzIDA0IDUzIDQxIDU0IDU4IDAwIDU2IDQ5IDQ0IDQ5IDIwICAuRFsuQy5TQVRYLlZJ
REkgCiAgICA0QzMwOiAwMCAzMCA1MyA1NCA0MyA0QyAxMCAwMCA0MCAwQyA0MiA0MSAzMCAzNSAy
MCAwMCAgLjBTVENMLi5ALkJBMDUgLgogICAgNEM0MDogNDAgMEMgNTcgNTQgNDUgNEUgMDEgMDAg
MEYgNDQgNDkgNTMgMzAgMDEgNDQgNDkgIEAuV1RFTi4uLkRJUzAuREkKICAgIDRDNTA6IDUzIDMx
IDAxIDQ0IDQ5IDUzIDMyIDAxIDQ0IDQ5IDUzIDMzIDAxIDQ0IDQ5IDUzICBTMS5ESVMyLkRJUzMu
RElTCiAgICA0QzYwOiAzNCAwMSA0NCA0OSA1MyAzNSAwMSA1QiA4MSAwRSA1MyA0MSA1NCA1OCAw
MCAwMCAgNC5ESVM1LlsuLlNBVFguLgogICAgNEM3MDogNDAgMjEgNDQgNDkgNTMgNTAgMDYgMTQg
MzkgNDcgNDIgNDEgNDEgMDggNzAgNDIgIEAhRElTUC4uOUdCQUEucEIKICAgIDRDODA6IDQxIDMw
IDM1IDQyIDQxIDVGIDM1IEEwIDFDIDkxIDkzIDQyIDQxIDVGIDM1IEZGICBBMDVCQV81Li4uLkJB
XzUuCiAgICA0QzkwOiA5MiA5MyA1MyA1NCA0MyA0QyAwQiAwMSAwMSA3MCAwMCA0MiAzNSA0NSA0
RSBBNCAgLi5TVENMLi4ucC5CNUVOLgogICAgNENBMDogNTMgNDIgNDEgNTIgQTEgMEMgNzAgMDEg
NDIgMzUgNDUgNEUgQTQgNDIgNDEgNUYgIFNCQVIuLnAuQjVFTi5CQV8KICAgIDRDQjA6IDM1IDVC
IDgwIDQyIDQxIDUyIDM1IDAwIDQ3IDQyIDQxIDQxIDBCIDAwIDEwIDVCICA1Wy5CQVI1LkdCQUEu
Li5bCiAgICA0Q0MwOiA4MSA0MSAxMiA0MiA0MSA1MiAzNSAwMCA0RSA0RiA1MCA1NCAwNSAwMCA0
QiAwNSAgLkEuQkFSNS5OT1BULi5LLgogICAgNENEMDogNTAgNTQgNDkgMzAgMDEgNTAgNTQgNDkg
MzEgMDEgNTAgNTQgNDkgMzIgMDEgNTAgIFBUSTAuUFRJMS5QVEkyLlAKICAgIDRDRTA6IDU0IDQ5
IDMzIDAxIDUwIDU0IDQ5IDM0IDAxIDUwIDU0IDQ5IDM1IDAxIDUwIDU0ICBUSTMuUFRJNC5QVEk1
LlBUCiAgICA0Q0YwOiA0OSAzNiAwMSA1MCA1NCA0OSAzNyAwMSAwMCA0OCA4NSA0MyA1MyA1NCAz
MCAwMSAgSTYuUFRJNy4uSC5DU1QwLgogICAgNEQwMDogMDAgNEYgMDMgMDAgMDcgNDIgNTMgNTkg
MzAgMDEgMDAgMzggNDQgNDUgNTQgMzAgIC5PLi4uQlNZMC4uOERFVDAKICAgIDREMTA6IDA0IDAw
IDA0IDQ5IDUwIDREIDMwIDA0IDAwIDE0IDQ0IDQ0IDQ5IDMwIDA0IDAwICAuLi5JUE0wLi4uRERJ
MC4uCiAgICA0RDIwOiA0QyAzNSA0MyA1MyA1NCAzMSAwMSAwMCA0RiAwMyAwMCAwNyA0MiA1MyA1
OSAzMSAgTDVDU1QxLi5PLi4uQlNZMQogICAgNEQzMDogMDEgMDAgMzggNDQgNDUgNTQgMzEgMDQg
MDAgMDQgNDkgNTAgNEQgMzEgMDQgMDAgIC4uOERFVDEuLi5JUE0xLi4KICAgIDRENDA6IDE0IDQ0
IDQ0IDQ5IDMxIDA0IDAwIDRDIDM1IDQzIDUzIDU0IDMyIDAxIDAwIDRGICAuRERJMS4uTDVDU1Qy
Li5PCiAgICA0RDUwOiAwMyAwMCAwNyA0MiA1MyA1OSAzMiAwMSAwMCAzOCA0NCA0NSA1NCAzMiAw
NCAwMCAgLi4uQlNZMi4uOERFVDIuLgogICAgNEQ2MDogMDQgNDkgNTAgNEQgMzIgMDQgMDAgMTQg
NDQgNDQgNDkgMzIgMDQgMDAgNEMgMzUgIC5JUE0yLi4uRERJMi4uTDUKICAgIDRENzA6IDQzIDUz
IDU0IDMzIDAxIDAwIDRGIDAzIDAwIDA3IDQyIDUzIDU5IDMzIDAxIDAwICBDU1QzLi5PLi4uQlNZ
My4uCiAgICA0RDgwOiAzOCA0NCA0NSA1NCAzMyAwNCAwMCAwNCA0OSA1MCA0RCAzMyAwNCAwMCAx
NCA0NCAgOERFVDMuLi5JUE0zLi4uRAogICAgNEQ5MDogNDQgNDkgMzMgMDQgMDAgNEMgMzUgNDMg
NTMgNTQgMzQgMDEgMDAgNEYgMDMgMDAgIERJMy4uTDVDU1Q0Li5PLi4KICAgIDREQTA6IDA3IDQy
IDUzIDU5IDM0IDAxIDAwIDM4IDQ0IDQ1IDU0IDM0IDA0IDAwIDA0IDQ5ICAuQlNZNC4uOERFVDQu
Li5JCiAgICA0REIwOiA1MCA0RCAzNCAwNCAwMCAxNCA0NCA0NCA0OSAzNCAwNCAwMCA0QyAzNSA0
MyA1MyAgUE00Li4uRERJNC4uTDVDUwogICAgNERDMDogNTQgMzUgMDEgMDAgNEYgMDMgMDAgMDcg
NDIgNTMgNTkgMzUgMDEgMDAgMzggNDQgIFQ1Li5PLi4uQlNZNS4uOEQKICAgIDRERDA6IDQ1IDU0
IDM1IDA0IDAwIDA0IDQ5IDUwIDREIDM1IDA0IDAwIDE0IDQ0IDQ0IDQ5ICBFVDUuLi5JUE01Li4u
RERJCiAgICA0REUwOiAzNSAwNCA1QiA4MSAwRSA0MiA0MSA1MiAzNSAwMCAwMCA0MCAwNiA1MCA1
NCA0OSAgNS5bLi5CQVI1Li5ALlBUSQogICAgNERGMDogNUYgMDYgMTQgMEEgNUYgNDkgNEUgNDkg
MDAgNDcgNDIgNDEgNDEgNUIgODIgNEEgIF8uLi5fSU5JLkdCQUFbLkoKICAgIDRFMDA6IDE5IDUw
IDUyIDQ5IDQ0IDA4IDVGIDQxIDQ0IDUyIDAwIDA4IDUzIDUwIDU0IDREICAuUFJJRC5fQURSLi5T
UFRNCiAgICA0RTEwOiAxMSAxNyAwQSAxNCA3OCAwMCAwMCAwMCAwRiAwMCAwMCAwMCA3OCAwMCAw
MCAwMCAgLi4uLnguLi4uLi4ueC4uLgogICAgNEUyMDogMEYgMDAgMDAgMDAgMUYgMDAgMDAgMDAg
MTQgMEIgNUYgNDcgNTQgNEQgMDAgQTQgIC4uLi4uLi4uLi5fR1RNLi4KICAgIDRFMzA6IDUzIDUw
IDU0IDREIDE0IDBDIDVGIDUzIDU0IDREIDAzIDcwIDY4IDUzIDUwIDU0ICBTUFRNLi5fU1RNLnBo
U1BUCiAgICA0RTQwOiA0RCAxNCAzQSA1RiA1MCA1MyAzMCAwMCA0NyA0MiA0MSA0MSBBMCAyRiA5
MCA5MSAgTS46X1BTMC5HQkFBLi8uLgogICAgNEU1MDogOTIgOTUgNEYgNTMgNTYgNTIgMEEgMEMg
OTMgNEYgNTMgNTYgNTIgMDAgNDIgMzUgIC4uT1NWUi4uLk9TVlIuQjUKICAgIDRFNjA6IDQ1IDRF
IEEwIDE5IDQ5IDUwIDREIDMyIDcwIDBBIDMyIDYwIEEyIDBGIDkwIDkzICBFTi4uSVBNMnAuMmAu
Li4uCiAgICA0RTcwOiA0MiA1MyA1OSAzMiAwMSA2MCA1QiAyMiAwQSBGQSA3NiA2MCAxNCAwNiA1
RiA1MCAgQlNZMi5gWyIuLnZgLi5fUAogICAgNEU4MDogNTMgMzMgMDAgNUIgODIgNDkgMDggNTAg
NUYgNDQgMzAgMDggNUYgNDEgNDQgNTIgIFMzLlsuSS5QX0QwLl9BRFIKICAgIDRFOTA6IDAwIDE0
IDI0IDVGIDUzIDU0IDQxIDAwIDQ3IDQyIDQxIDQxIEEwIDA5IDkzIDQyICAuLiRfU1RBLkdCQUEu
Li5CCiAgICA0RUEwOiAzNSA0NSA0RSAwMCBBNCAwMCBBMCAwQiA5MyA0NCA0NSA1NCAzMCAwQSAw
MyBBNCAgNUVOLi4uLi4uREVUMC4uLgogICAgNEVCMDogMEEgMEYgQTEgMDMgQTQgMDAgMDggNTMg
MzEgMzIgNTAgMDAgMTQgMzQgNUYgNTAgIC4uLi4uLi5TMTJQLi40X1AKICAgIDRFQzA6IDUzIDMw
IDAwIDQ3IDQyIDQxIDQxIEEwIDI5IDkwIDkwIDk1IDRGIDUzIDU2IDUyICBTMC5HQkFBLikuLi5P
U1ZSCiAgICA0RUQwOiAwQSAwQyA5MiA5MyA0RiA1MyA1NiA1MiAwMCA0MiAzNSA0NSA0RSA3MCAw
QSAzMiAgLi4uLk9TVlIuQjVFTnAuMgogICAgNEVFMDogNjAgQTIgMEYgOTAgOTMgNDIgNTMgNTkg
MzAgMDEgNjAgNUIgMjIgMEEgRkEgNzYgIGAuLi4uQlNZMC5gWyIuLnYKICAgIDRFRjA6IDYwIDE0
IDA2IDVGIDUwIDUzIDMzIDAwIDE0IDE1IDVGIDQ3IDU0IDQ2IDAwIDcwICBgLi5fUFMzLi4uX0dU
Ri5wCiAgICA0RjAwOiAxMSAwQSAwQSAwNyAwMyA0NiAwMCAwMCAwMCBBMCBFRiA2MCBBNCA2MCA1
QiA4MiAgLi4uLi5GLi4uLi5gLmBbLgogICAgNEYxMDogNDkgMDggNTAgNUYgNDQgMzEgMDggNUYg
NDEgNDQgNTIgMDEgMTQgMjQgNUYgNTMgIEkuUF9EMS5fQURSLi4kX1MKICAgIDRGMjA6IDU0IDQx
IDAwIDQ3IDQyIDQxIDQxIEEwIDA5IDkzIDQyIDM1IDQ1IDRFIDAwIEE0ICBUQS5HQkFBLi4uQjVF
Ti4uCiAgICA0RjMwOiAwMCBBMCAwQiA5MyA0NCA0NSA1NCAzMiAwQSAwMyBBNCAwQSAwRiBBMSAw
MyBBNCAgLi4uLkRFVDIuLi4uLi4uLgogICAgNEY0MDogMDAgMDggNTMgMzEgMzIgNTAgMDAgMTQg
MzQgNUYgNTAgNTMgMzAgMDAgNDcgNDIgIC4uUzEyUC4uNF9QUzAuR0IKICAgIDRGNTA6IDQxIDQx
IEEwIDI5IDkwIDkwIDk1IDRGIDUzIDU2IDUyIDBBIDBDIDkyIDkzIDRGICBBQS4pLi4uT1NWUi4u
Li5PCiAgICA0RjYwOiA1MyA1NiA1MiAwMCA0MiAzNSA0NSA0RSA3MCAwQSAzMiA2MCBBMiAwRiA5
MCA5MyAgU1ZSLkI1RU5wLjJgLi4uLgogICAgNEY3MDogNDIgNTMgNTkgMzIgMDEgNjAgNUIgMjIg
MEEgRkEgNzYgNjAgMTQgMDYgNUYgNTAgIEJTWTIuYFsiLi52YC4uX1AKICAgIDRGODA6IDUzIDMz
IDAwIDE0IDE1IDVGIDQ3IDU0IDQ2IDAwIDcwIDExIDBBIDBBIDA3IDAzICBTMy4uLl9HVEYucC4u
Li4uCiAgICA0RjkwOiA0NiAwMCAwMCAwMCBBMCBFRiA2MCBBNCA2MCA1QiA4MiA0QiAxQSA1MyA0
NSA0MyAgRi4uLi4uYC5gWy5LLlNFQwogICAgNEZBMDogNDQgMDggNUYgNDEgNDQgNTIgMEEgMDIg
MDggNTMgNTAgNTQgNEQgMTEgMTcgMEEgIEQuX0FEUi4uLlNQVE0uLi4KICAgIDRGQjA6IDE0IDc4
IDAwIDAwIDAwIDBGIDAwIDAwIDAwIDc4IDAwIDAwIDAwIDBGIDAwIDAwICAueC4uLi4uLi54Li4u
Li4uCiAgICA0RkMwOiAwMCAxRiAwMCAwMCAwMCAxNCAwQiA1RiA0NyA1NCA0RCAwMCBBNCA1MyA1
MCA1NCAgLi4uLi4uLl9HVE0uLlNQVAogICAgNEZEMDogNEQgMTQgMEMgNUYgNTMgNTQgNEQgMDMg
NzAgNjggNTMgNTAgNTQgNEQgMTQgNDYgIE0uLl9TVE0ucGhTUFRNLkYKICAgIDRGRTA6IDA1IDVG
IDUwIDUzIDMwIDAwIDQ3IDQyIDQxIDQxIEEwIDRBIDA0IDkwIDkxIDkyICAuX1BTMC5HQkFBLkou
Li4uCiAgICA0RkYwOiA5NSA0RiA1MyA1NiA1MiAwQSAwQyA5MyA0RiA1MyA1NiA1MiAwMCA0MiAz
NSA0NSAgLk9TVlIuLi5PU1ZSLkI1RQogICAgNTAwMDogNEUgQTAgMTkgNDkgNTAgNEQgMzEgNzAg
MEEgMzIgNjAgQTIgMEYgOTAgOTMgNDIgIE4uLklQTTFwLjJgLi4uLkIKICAgIDUwMTA6IDUzIDU5
IDMxIDAxIDYwIDVCIDIyIDBBIEZBIDc2IDYwIEEwIDE5IDQ5IDUwIDREICBTWTEuYFsiLi52YC4u
SVBNCiAgICA1MDIwOiAzMyA3MCAwQSAzMiA2MCBBMiAwRiA5MCA5MyA0MiA1MyA1OSAzMyAwMSA2
MCA1QiAgM3AuMmAuLi4uQlNZMy5gWwogICAgNTAzMDogMjIgMEEgRkEgNzYgNjAgMTQgMDYgNUYg
NTAgNTMgMzMgMDAgNUIgODIgNDMgMDggICIuLnZgLi5fUFMzLlsuQy4KICAgIDUwNDA6IDUzIDVG
IDQ0IDMwIDA4IDVGIDQxIDQ0IDUyIDAwIDE0IDI0IDVGIDUzIDU0IDQxICBTX0QwLl9BRFIuLiRf
U1RBCiAgICA1MDUwOiAwMCA0NyA0MiA0MSA0MSBBMCAwOSA5MyA0MiAzNSA0NSA0RSAwMCBBNCAw
MCBBMCAgLkdCQUEuLi5CNUVOLi4uLgogICAgNTA2MDogMEIgOTMgNDQgNDUgNTQgMzEgMEEgMDMg
QTQgMEEgMEYgQTEgMDMgQTQgMDAgMTQgIC4uREVUMS4uLi4uLi4uLi4KICAgIDUwNzA6IDM0IDVG
IDUwIDUzIDMwIDAwIDQ3IDQyIDQxIDQxIEEwIDI5IDkwIDkwIDk1IDRGICA0X1BTMC5HQkFBLiku
Li5PCiAgICA1MDgwOiA1MyA1NiA1MiAwQSAwQyA5MiA5MyA0RiA1MyA1NiA1MiAwMCA0MiAzNSA0
NSA0RSAgU1ZSLi4uLk9TVlIuQjVFTgogICAgNTA5MDogNzAgMEEgMzIgNjAgQTIgMEYgOTAgOTMg
NDIgNTMgNTkgMzEgMDEgNjAgNUIgMjIgIHAuMmAuLi4uQlNZMS5gWyIKICAgIDUwQTA6IDBBIEZB
IDc2IDYwIDE0IDA2IDVGIDUwIDUzIDMzIDAwIDE0IDE1IDVGIDQ3IDU0ICAuLnZgLi5fUFMzLi4u
X0dUCiAgICA1MEIwOiA0NiAwMCA3MCAxMSAwQSAwQSAwNyAwMyA0NiAwMCAwMCAwMCBBMCBFRiA2
MCBBNCAgRi5wLi4uLi5GLi4uLi5gLgogICAgNTBDMDogNjAgNUIgODIgNDMgMDggNTMgNUYgNDQg
MzEgMDggNUYgNDEgNDQgNTIgMDEgMTQgIGBbLkMuU19EMS5fQURSLi4KICAgIDUwRDA6IDI0IDVG
IDUzIDU0IDQxIDAwIDQ3IDQyIDQxIDQxIEEwIDA5IDkzIDQyIDM1IDQ1ICAkX1NUQS5HQkFBLi4u
QjVFCiAgICA1MEUwOiA0RSAwMCBBNCAwMCBBMCAwQiA5MyA0NCA0NSA1NCAzMyAwQSAwMyBBNCAw
QSAwRiAgTi4uLi4uLkRFVDMuLi4uLgogICAgNTBGMDogQTEgMDMgQTQgMDAgMTQgMzQgNUYgNTAg
NTMgMzAgMDAgNDcgNDIgNDEgNDEgQTAgIC4uLi4uNF9QUzAuR0JBQS4KICAgIDUxMDA6IDI5IDkw
IDkwIDk1IDRGIDUzIDU2IDUyIDBBIDBDIDkyIDkzIDRGIDUzIDU2IDUyICApLi4uT1NWUi4uLi5P
U1ZSCiAgICA1MTEwOiAwMCA0MiAzNSA0NSA0RSA3MCAwQSAzMiA2MCBBMiAwRiA5MCA5MyA0MiA1
MyA1OSAgLkI1RU5wLjJgLi4uLkJTWQogICAgNTEyMDogMzMgMDEgNjAgNUIgMjIgMEEgRkEgNzYg
NjAgMTQgMDYgNUYgNTAgNTMgMzMgMDAgIDMuYFsiLi52YC4uX1BTMy4KICAgIDUxMzA6IDE0IDE1
IDVGIDQ3IDU0IDQ2IDAwIDcwIDExIDBBIDBBIDA3IDAzIDQ2IDAwIDAwICAuLl9HVEYucC4uLi4u
Ri4uCiAgICA1MTQwOiAwMCBBMCBFRiA2MCBBNCA2MCAxNCA0QSAxMCA0NSA0RSA1MCA1RiAwMiBB
MCAwQyAgLi4uYC5gLkouRU5QXy4uLgogICAgNTE1MDogOTMgNjggMDAgNzAgODAgNjkgMDAgNDQg
NDkgNTMgMzAgQTEgNEYgMDQgQTAgMEMgIC5oLnAuaS5ESVMwLk8uLi4KICAgIDUxNjA6IDkzIDY4
IDAxIDcwIDgwIDY5IDAwIDQ0IDQ5IDUzIDMxIEExIDNGIEEwIDBEIDkzICAuaC5wLmkuRElTMS4/
Li4uCiAgICA1MTcwOiA2OCAwQSAwMiA3MCA4MCA2OSAwMCA0NCA0OSA1MyAzMiBBMSAyRiBBMCAw
RCA5MyAgaC4ucC5pLkRJUzIuLy4uLgogICAgNTE4MDogNjggMEEgMDMgNzAgODAgNjkgMDAgNDQg
NDkgNTMgMzMgQTEgMUYgQTAgMEQgOTMgIGguLnAuaS5ESVMzLi4uLi4KICAgIDUxOTA6IDY4IDBB
IDA0IDcwIDgwIDY5IDAwIDQ0IDQ5IDUzIDM0IEExIDBGIEEwIDBEIDkzICBoLi5wLmkuRElTNC4u
Li4uCiAgICA1MUEwOiA2OCAwQSAwNSA3MCA4MCA2OSAwMCA0NCA0OSA1MyAzNSA3MCAwMSA1NyA1
NCA0NSAgaC4ucC5pLkRJUzVwLldURQogICAgNTFCMDogNEUgQTAgMEEgOTMgNjggMDAgNzAgNjkg
NTAgNTQgNDkgMzAgQTEgNDUgMDQgQTAgIE4uLi5oLnBpUFRJMC5FLi4KICAgIDUxQzA6IDBBIDkz
IDY4IDAxIDcwIDY5IDUwIDU0IDQ5IDMxIEExIDM3IEEwIDBCIDkzIDY4ICAuLmgucGlQVEkxLjcu
Li5oCiAgICA1MUQwOiAwQSAwMiA3MCA2OSA1MCA1NCA0OSAzMiBBMSAyOSBBMCAwQiA5MyA2OCAw
QSAwMyAgLi5waVBUSTIuKS4uLmguLgogICAgNTFFMDogNzAgNjkgNTAgNTQgNDkgMzMgQTEgMUIg
QTAgMEIgOTMgNjggMEEgMDQgNzAgNjkgIHBpUFRJMy4uLi4uaC4ucGkKICAgIDUxRjA6IDUwIDU0
IDQ5IDM0IEExIDBEIEEwIDBCIDkzIDY4IDBBIDA1IDcwIDY5IDUwIDU0ICBQVEk0Li4uLi5oLi5w
aVBUCiAgICA1MjAwOiA0OSAzNSBBMCAwRSA5MyA0NCA0OSA1MyA1MCAwQSAzRiA3MCAwMSA1MCA1
NCA0OSAgSTUuLi5ESVNQLj9wLlBUSQogICAgNTIxMDogMzAgQTEgMUEgQTAgMTggOTAgNDQgNDkg
NTMgMzAgN0YgN0IgNDQgNDkgNTMgNTAgIDAuLi4uLkRJUzAue0RJU1AKICAgIDUyMjA6IDBBIDNF
IDAwIDBBIDNFIDAwIDcwIDAwIDUwIDU0IDQ5IDMwIDcwIDUwIDU0IDQ5ICAuPi4uPi5wLlBUSTBw
UFRJCiAgICA1MjMwOiA1RiA2MCA3MCAwMCA2MSBBMiAwRSA2MCBBMCAwNyA3QiA2MCAwMSAwMCA3
NSA2MSAgX2BwLmEuLmAuLntgLi51YQogICAgNTI0MDogN0EgNjAgMDEgNjAgNzAgNzYgNjEgNEUg
NEYgNTAgNTQgNzAgMDAgNTcgNTQgNDUgIHpgLmBwdmFOT1BUcC5XVEUKICAgIDUyNTA6IDRFIDVC
IDgyIDQxIDY2IDUzIDQxIDU0IDMyIDA4IDVGIDQxIDQ0IDUyIDAxIDA4ICBOWy5BZlNBVDIuX0FE
Ui4uCiAgICA1MjYwOiA0MiAzNSA0NSA0RSAwMCAwOCA0MiA0MSA1RiAzNSAwMCAwOCA1MyA0MiA0
MSA1MiAgQjVFTi4uQkFfNS4uU0JBUgogICAgNTI3MDogMEMgMDAgRjAgQjYgRjAgMDggNEYgNTMg
NTYgNTIgMDAgNUIgODAgNTMgNDEgNTQgIC4uLi4uLk9TVlIuWy5TQVQKICAgIDUyODA6IDU4IDAy
IDAwIDBBIDQ0IDVCIDgxIDQzIDA0IDUzIDQxIDU0IDU4IDAwIDU2IDQ5ICBYLi4uRFsuQy5TQVRY
LlZJCiAgICA1MjkwOiA0NCA0OSAyMCAwMCAzMCA1MyA1NCA0MyA0QyAxMCAwMCA0MCAwQyA0MiA0
MSAzMCAgREkgLjBTVENMLi5ALkJBMAogICAgNTJBMDogMzUgMjAgMDAgNDAgMEMgNTcgNTQgNDUg
NEUgMDEgMDAgMEYgNDQgNDkgNTMgMzAgIDUgLkAuV1RFTi4uLkRJUzAKICAgIDUyQjA6IDAxIDQ0
IDQ5IDUzIDMxIDAxIDQ0IDQ5IDUzIDMyIDAxIDQ0IDQ5IDUzIDMzIDAxICAuRElTMS5ESVMyLkRJ
UzMuCiAgICA1MkMwOiA0NCA0OSA1MyAzNCAwMSA0NCA0OSA1MyAzNSAwMSA1QiA4MSAwRSA1MyA0
MSA1NCAgRElTNC5ESVM1LlsuLlNBVAogICAgNTJEMDogNTggMDAgMDAgNDAgMjEgNDQgNDkgNTMg
NTAgMDYgMTQgMzkgNDcgNDIgNDEgNDEgIFguLkAhRElTUC4uOUdCQUEKICAgIDUyRTA6IDA4IDcw
IDQyIDQxIDMwIDM1IDQyIDQxIDVGIDM1IEEwIDFDIDkxIDkzIDQyIDQxICAucEJBMDVCQV81Li4u
LkJBCiAgICA1MkYwOiA1RiAzNSBGRiA5MiA5MyA1MyA1NCA0MyA0QyAwQiAwMSAwMSA3MCAwMCA0
MiAzNSAgXzUuLi5TVENMLi4ucC5CNQogICAgNTMwMDogNDUgNEUgQTQgNTMgNDIgNDEgNTIgQTEg
MEMgNzAgMDEgNDIgMzUgNDUgNEUgQTQgIEVOLlNCQVIuLnAuQjVFTi4KICAgIDUzMTA6IDQyIDQx
IDVGIDM1IDVCIDgwIDQyIDQxIDUyIDM1IDAwIDQ3IDQyIDQxIDQxIDBCICBCQV81Wy5CQVI1LkdC
QUEuCiAgICA1MzIwOiAwMCAxMCA1QiA4MSA0MSAxMiA0MiA0MSA1MiAzNSAwMCA0RSA0RiA1MCA1
NCAwNSAgLi5bLkEuQkFSNS5OT1BULgogICAgNTMzMDogMDAgNEIgMDUgNTAgNTQgNDkgMzAgMDEg
NTAgNTQgNDkgMzEgMDEgNTAgNTQgNDkgIC5LLlBUSTAuUFRJMS5QVEkKICAgIDUzNDA6IDMyIDAx
IDUwIDU0IDQ5IDMzIDAxIDUwIDU0IDQ5IDM0IDAxIDUwIDU0IDQ5IDM1ICAyLlBUSTMuUFRJNC5Q
VEk1CiAgICA1MzUwOiAwMSA1MCA1NCA0OSAzNiAwMSA1MCA1NCA0OSAzNyAwMSAwMCA0OCA4NSA0
MyA1MyAgLlBUSTYuUFRJNy4uSC5DUwogICAgNTM2MDogNTQgMzAgMDEgMDAgNEYgMDMgMDAgMDcg
NDIgNTMgNTkgMzAgMDEgMDAgMzggNDQgIFQwLi5PLi4uQlNZMC4uOEQKICAgIDUzNzA6IDQ1IDU0
IDMwIDA0IDAwIDA0IDQ5IDUwIDREIDMwIDA0IDAwIDE0IDQ0IDQ0IDQ5ICBFVDAuLi5JUE0wLi4u
RERJCiAgICA1MzgwOiAzMCAwNCAwMCA0QyAzNSA0MyA1MyA1NCAzMSAwMSAwMCA0RiAwMyAwMCAw
NyA0MiAgMC4uTDVDU1QxLi5PLi4uQgogICAgNTM5MDogNTMgNTkgMzEgMDEgMDAgMzggNDQgNDUg
NTQgMzEgMDQgMDAgMDQgNDkgNTAgNEQgIFNZMS4uOERFVDEuLi5JUE0KICAgIDUzQTA6IDMxIDA0
IDAwIDE0IDQ0IDQ0IDQ5IDMxIDA0IDAwIDRDIDM1IDQzIDUzIDU0IDMyICAxLi4uRERJMS4uTDVD
U1QyCiAgICA1M0IwOiAwMSAwMCA0RiAwMyAwMCAwNyA0MiA1MyA1OSAzMiAwMSAwMCAzOCA0NCA0
NSA1NCAgLi5PLi4uQlNZMi4uOERFVAogICAgNTNDMDogMzIgMDQgMDAgMDQgNDkgNTAgNEQgMzIg
MDQgMDAgMTQgNDQgNDQgNDkgMzIgMDQgIDIuLi5JUE0yLi4uRERJMi4KICAgIDUzRDA6IDAwIDRD
IDM1IDQzIDUzIDU0IDMzIDAxIDAwIDRGIDAzIDAwIDA3IDQyIDUzIDU5ICAuTDVDU1QzLi5PLi4u
QlNZCiAgICA1M0UwOiAzMyAwMSAwMCAzOCA0NCA0NSA1NCAzMyAwNCAwMCAwNCA0OSA1MCA0RCAz
MyAwNCAgMy4uOERFVDMuLi5JUE0zLgogICAgNTNGMDogMDAgMTQgNDQgNDQgNDkgMzMgMDQgMDAg
NEMgMzUgNDMgNTMgNTQgMzQgMDEgMDAgIC4uRERJMy4uTDVDU1Q0Li4KICAgIDU0MDA6IDRGIDAz
IDAwIDA3IDQyIDUzIDU5IDM0IDAxIDAwIDM4IDQ0IDQ1IDU0IDM0IDA0ICBPLi4uQlNZNC4uOERF
VDQuCiAgICA1NDEwOiAwMCAwNCA0OSA1MCA0RCAzNCAwNCAwMCAxNCA0NCA0NCA0OSAzNCAwNCAw
MCA0QyAgLi5JUE00Li4uRERJNC4uTAogICAgNTQyMDogMzUgNDMgNTMgNTQgMzUgMDEgMDAgNEYg
MDMgMDAgMDcgNDIgNTMgNTkgMzUgMDEgIDVDU1Q1Li5PLi4uQlNZNS4KICAgIDU0MzA6IDAwIDM4
IDQ0IDQ1IDU0IDM1IDA0IDAwIDA0IDQ5IDUwIDREIDM1IDA0IDAwIDE0ICAuOERFVDUuLi5JUE01
Li4uCiAgICA1NDQwOiA0NCA0NCA0OSAzNSAwNCA1QiA4MSAwRSA0MiA0MSA1MiAzNSAwMCAwMCA0
MCAwNiAgRERJNS5bLi5CQVI1Li5ALgogICAgNTQ1MDogNTAgNTQgNDkgNUYgMDYgMTQgMEEgNUYg
NDkgNEUgNDkgMDAgNDcgNDIgNDEgNDEgIFBUSV8uLi5fSU5JLkdCQUEKICAgIDU0NjA6IDVCIDgy
IDRBIDE5IDUwIDUyIDQ5IDQ0IDA4IDVGIDQxIDQ0IDUyIDAwIDA4IDUzICBbLkouUFJJRC5fQURS
Li5TCiAgICA1NDcwOiA1MCA1NCA0RCAxMSAxNyAwQSAxNCA3OCAwMCAwMCAwMCAwRiAwMCAwMCAw
MCA3OCAgUFRNLi4uLnguLi4uLi4ueAogICAgNTQ4MDogMDAgMDAgMDAgMEYgMDAgMDAgMDAgMUYg
MDAgMDAgMDAgMTQgMEIgNUYgNDcgNTQgIC4uLi4uLi4uLi4uLi5fR1QKICAgIDU0OTA6IDREIDAw
IEE0IDUzIDUwIDU0IDREIDE0IDBDIDVGIDUzIDU0IDREIDAzIDcwIDY4ICBNLi5TUFRNLi5fU1RN
LnBoCiAgICA1NEEwOiA1MyA1MCA1NCA0RCAxNCAzQSA1RiA1MCA1MyAzMCAwMCA0NyA0MiA0MSA0
MSBBMCAgU1BUTS46X1BTMC5HQkFBLgogICAgNTRCMDogMkYgOTAgOTEgOTIgOTUgNEYgNTMgNTYg
NTIgMEEgMEMgOTMgNEYgNTMgNTYgNTIgIC8uLi4uT1NWUi4uLk9TVlIKICAgIDU0QzA6IDAwIDQy
IDM1IDQ1IDRFIEEwIDE5IDQ5IDUwIDREIDMyIDcwIDBBIDMyIDYwIEEyICAuQjVFTi4uSVBNMnAu
MmAuCiAgICA1NEQwOiAwRiA5MCA5MyA0MiA1MyA1OSAzMiAwMSA2MCA1QiAyMiAwQSBGQSA3NiA2
MCAxNCAgLi4uQlNZMi5gWyIuLnZgLgogICAgNTRFMDogMDYgNUYgNTAgNTMgMzMgMDAgNUIgODIg
NDkgMDggNTAgNUYgNDQgMzAgMDggNUYgIC5fUFMzLlsuSS5QX0QwLl8KICAgIDU0RjA6IDQxIDQ0
IDUyIDAwIDE0IDI0IDVGIDUzIDU0IDQxIDAwIDQ3IDQyIDQxIDQxIEEwICBBRFIuLiRfU1RBLkdC
QUEuCiAgICA1NTAwOiAwOSA5MyA0MiAzNSA0NSA0RSAwMCBBNCAwMCBBMCAwQiA5MyA0NCA0NSA1
NCAzMCAgLi5CNUVOLi4uLi4uREVUMAogICAgNTUxMDogMEEgMDMgQTQgMEEgMEYgQTEgMDMgQTQg
MDAgMDggNTMgMzEgMzIgNTAgMDAgMTQgIC4uLi4uLi4uLi5TMTJQLi4KICAgIDU1MjA6IDM0IDVG
IDUwIDUzIDMwIDAwIDQ3IDQyIDQxIDQxIEEwIDI5IDkwIDkwIDk1IDRGICA0X1BTMC5HQkFBLiku
Li5PCiAgICA1NTMwOiA1MyA1NiA1MiAwQSAwQyA5MiA5MyA0RiA1MyA1NiA1MiAwMCA0MiAzNSA0
NSA0RSAgU1ZSLi4uLk9TVlIuQjVFTgogICAgNTU0MDogNzAgMEEgMzIgNjAgQTIgMEYgOTAgOTMg
NDIgNTMgNTkgMzAgMDEgNjAgNUIgMjIgIHAuMmAuLi4uQlNZMC5gWyIKICAgIDU1NTA6IDBBIEZB
IDc2IDYwIDE0IDA2IDVGIDUwIDUzIDMzIDAwIDE0IDE1IDVGIDQ3IDU0ICAuLnZgLi5fUFMzLi4u
X0dUCiAgICA1NTYwOiA0NiAwMCA3MCAxMSAwQSAwQSAwNyAwMyA0NiAwMCAwMCAwMCBBMCBFRiA2
MCBBNCAgRi5wLi4uLi5GLi4uLi5gLgogICAgNTU3MDogNjAgNUIgODIgNDkgMDggNTAgNUYgNDQg
MzEgMDggNUYgNDEgNDQgNTIgMDEgMTQgIGBbLkkuUF9EMS5fQURSLi4KICAgIDU1ODA6IDI0IDVG
IDUzIDU0IDQxIDAwIDQ3IDQyIDQxIDQxIEEwIDA5IDkzIDQyIDM1IDQ1ICAkX1NUQS5HQkFBLi4u
QjVFCiAgICA1NTkwOiA0RSAwMCBBNCAwMCBBMCAwQiA5MyA0NCA0NSA1NCAzMiAwQSAwMyBBNCAw
QSAwRiAgTi4uLi4uLkRFVDIuLi4uLgogICAgNTVBMDogQTEgMDMgQTQgMDAgMDggNTMgMzEgMzIg
NTAgMDAgMTQgMzQgNUYgNTAgNTMgMzAgIC4uLi4uUzEyUC4uNF9QUzAKICAgIDU1QjA6IDAwIDQ3
IDQyIDQxIDQxIEEwIDI5IDkwIDkwIDk1IDRGIDUzIDU2IDUyIDBBIDBDICAuR0JBQS4pLi4uT1NW
Ui4uCiAgICA1NUMwOiA5MiA5MyA0RiA1MyA1NiA1MiAwMCA0MiAzNSA0NSA0RSA3MCAwQSAzMiA2
MCBBMiAgLi5PU1ZSLkI1RU5wLjJgLgogICAgNTVEMDogMEYgOTAgOTMgNDIgNTMgNTkgMzIgMDEg
NjAgNUIgMjIgMEEgRkEgNzYgNjAgMTQgIC4uLkJTWTIuYFsiLi52YC4KICAgIDU1RTA6IDA2IDVG
IDUwIDUzIDMzIDAwIDE0IDE1IDVGIDQ3IDU0IDQ2IDAwIDcwIDExIDBBICAuX1BTMy4uLl9HVEYu
cC4uCiAgICA1NUYwOiAwQSAwNyAwMyA0NiAwMCAwMCAwMCBBMCBFRiA2MCBBNCA2MCA1QiA4MiA0
QiAxQSAgLi4uRi4uLi4uYC5gWy5LLgogICAgNTYwMDogNTMgNDUgNDMgNDQgMDggNUYgNDEgNDQg
NTIgMEEgMDIgMDggNTMgNTAgNTQgNEQgIFNFQ0QuX0FEUi4uLlNQVE0KICAgIDU2MTA6IDExIDE3
IDBBIDE0IDc4IDAwIDAwIDAwIDBGIDAwIDAwIDAwIDc4IDAwIDAwIDAwICAuLi4ueC4uLi4uLi54
Li4uCiAgICA1NjIwOiAwRiAwMCAwMCAwMCAxRiAwMCAwMCAwMCAxNCAwQiA1RiA0NyA1NCA0RCAw
MCBBNCAgLi4uLi4uLi4uLl9HVE0uLgogICAgNTYzMDogNTMgNTAgNTQgNEQgMTQgMEMgNUYgNTMg
NTQgNEQgMDMgNzAgNjggNTMgNTAgNTQgIFNQVE0uLl9TVE0ucGhTUFQKICAgIDU2NDA6IDREIDE0
IDQ2IDA1IDVGIDUwIDUzIDMwIDAwIDQ3IDQyIDQxIDQxIEEwIDRBIDA0ICBNLkYuX1BTMC5HQkFB
LkouCiAgICA1NjUwOiA5MCA5MSA5MiA5NSA0RiA1MyA1NiA1MiAwQSAwQyA5MyA0RiA1MyA1NiA1
MiAwMCAgLi4uLk9TVlIuLi5PU1ZSLgogICAgNTY2MDogNDIgMzUgNDUgNEUgQTAgMTkgNDkgNTAg
NEQgMzEgNzAgMEEgMzIgNjAgQTIgMEYgIEI1RU4uLklQTTFwLjJgLi4KICAgIDU2NzA6IDkwIDkz
IDQyIDUzIDU5IDMxIDAxIDYwIDVCIDIyIDBBIEZBIDc2IDYwIEEwIDE5ICAuLkJTWTEuYFsiLi52
YC4uCiAgICA1NjgwOiA0OSA1MCA0RCAzMyA3MCAwQSAzMiA2MCBBMiAwRiA5MCA5MyA0MiA1MyA1
OSAzMyAgSVBNM3AuMmAuLi4uQlNZMwogICAgNTY5MDogMDEgNjAgNUIgMjIgMEEgRkEgNzYgNjAg
MTQgMDYgNUYgNTAgNTMgMzMgMDAgNUIgIC5gWyIuLnZgLi5fUFMzLlsKICAgIDU2QTA6IDgyIDQz
IDA4IDUzIDVGIDQ0IDMwIDA4IDVGIDQxIDQ0IDUyIDAwIDE0IDI0IDVGICAuQy5TX0QwLl9BRFIu
LiRfCiAgICA1NkIwOiA1MyA1NCA0MSAwMCA0NyA0MiA0MSA0MSBBMCAwOSA5MyA0MiAzNSA0NSA0
RSAwMCAgU1RBLkdCQUEuLi5CNUVOLgogICAgNTZDMDogQTQgMDAgQTAgMEIgOTMgNDQgNDUgNTQg
MzEgMEEgMDMgQTQgMEEgMEYgQTEgMDMgIC4uLi4uREVUMS4uLi4uLi4KICAgIDU2RDA6IEE0IDAw
IDE0IDM0IDVGIDUwIDUzIDMwIDAwIDQ3IDQyIDQxIDQxIEEwIDI5IDkwICAuLi40X1BTMC5HQkFB
LikuCiAgICA1NkUwOiA5MCA5NSA0RiA1MyA1NiA1MiAwQSAwQyA5MiA5MyA0RiA1MyA1NiA1MiAw
MCA0MiAgLi5PU1ZSLi4uLk9TVlIuQgogICAgNTZGMDogMzUgNDUgNEUgNzAgMEEgMzIgNjAgQTIg
MEYgOTAgOTMgNDIgNTMgNTkgMzEgMDEgIDVFTnAuMmAuLi4uQlNZMS4KICAgIDU3MDA6IDYwIDVC
IDIyIDBBIEZBIDc2IDYwIDE0IDA2IDVGIDUwIDUzIDMzIDAwIDE0IDE1ICBgWyIuLnZgLi5fUFMz
Li4uCiAgICA1NzEwOiA1RiA0NyA1NCA0NiAwMCA3MCAxMSAwQSAwQSAwNyAwMyA0NiAwMCAwMCAw
MCBBMCAgX0dURi5wLi4uLi5GLi4uLgogICAgNTcyMDogRUYgNjAgQTQgNjAgNUIgODIgNDMgMDgg
NTMgNUYgNDQgMzEgMDggNUYgNDEgNDQgIC5gLmBbLkMuU19EMS5fQUQKICAgIDU3MzA6IDUyIDAx
IDE0IDI0IDVGIDUzIDU0IDQxIDAwIDQ3IDQyIDQxIDQxIEEwIDA5IDkzICBSLi4kX1NUQS5HQkFB
Li4uCiAgICA1NzQwOiA0MiAzNSA0NSA0RSAwMCBBNCAwMCBBMCAwQiA5MyA0NCA0NSA1NCAzMyAw
QSAwMyAgQjVFTi4uLi4uLkRFVDMuLgogICAgNTc1MDogQTQgMEEgMEYgQTEgMDMgQTQgMDAgMTQg
MzQgNUYgNTAgNTMgMzAgMDAgNDcgNDIgIC4uLi4uLi4uNF9QUzAuR0IKICAgIDU3NjA6IDQxIDQx
IEEwIDI5IDkwIDkwIDk1IDRGIDUzIDU2IDUyIDBBIDBDIDkyIDkzIDRGICBBQS4pLi4uT1NWUi4u
Li5PCiAgICA1NzcwOiA1MyA1NiA1MiAwMCA0MiAzNSA0NSA0RSA3MCAwQSAzMiA2MCBBMiAwRiA5
MCA5MyAgU1ZSLkI1RU5wLjJgLi4uLgogICAgNTc4MDogNDIgNTMgNTkgMzMgMDEgNjAgNUIgMjIg
MEEgRkEgNzYgNjAgMTQgMDYgNUYgNTAgIEJTWTMuYFsiLi52YC4uX1AKICAgIDU3OTA6IDUzIDMz
IDAwIDE0IDE1IDVGIDQ3IDU0IDQ2IDAwIDcwIDExIDBBIDBBIDA3IDAzICBTMy4uLl9HVEYucC4u
Li4uCiAgICA1N0EwOiA0NiAwMCAwMCAwMCBBMCBFRiA2MCBBNCA2MCAxNCA0QSAxMCA0NSA0RSA1
MCA1RiAgRi4uLi4uYC5gLkouRU5QXwogICAgNTdCMDogMDIgQTAgMEMgOTMgNjggMDAgNzAgODAg
NjkgMDAgNDQgNDkgNTMgMzAgQTEgNEYgIC4uLi5oLnAuaS5ESVMwLk8KICAgIDU3QzA6IDA0IEEw
IDBDIDkzIDY4IDAxIDcwIDgwIDY5IDAwIDQ0IDQ5IDUzIDMxIEExIDNGICAuLi4uaC5wLmkuRElT
MS4/CiAgICA1N0QwOiBBMCAwRCA5MyA2OCAwQSAwMiA3MCA4MCA2OSAwMCA0NCA0OSA1MyAzMiBB
MSAyRiAgLi4uaC4ucC5pLkRJUzIuLwogICAgNTdFMDogQTAgMEQgOTMgNjggMEEgMDMgNzAgODAg
NjkgMDAgNDQgNDkgNTMgMzMgQTEgMUYgIC4uLmguLnAuaS5ESVMzLi4KICAgIDU3RjA6IEEwIDBE
IDkzIDY4IDBBIDA0IDcwIDgwIDY5IDAwIDQ0IDQ5IDUzIDM0IEExIDBGICAuLi5oLi5wLmkuRElT
NC4uCiAgICA1ODAwOiBBMCAwRCA5MyA2OCAwQSAwNSA3MCA4MCA2OSAwMCA0NCA0OSA1MyAzNSA3
MCAwMSAgLi4uaC4ucC5pLkRJUzVwLgogICAgNTgxMDogNTcgNTQgNDUgNEUgQTAgMEEgOTMgNjgg
MDAgNzAgNjkgNTAgNTQgNDkgMzAgQTEgIFdURU4uLi5oLnBpUFRJMC4KICAgIDU4MjA6IDQ1IDA0
IEEwIDBBIDkzIDY4IDAxIDcwIDY5IDUwIDU0IDQ5IDMxIEExIDM3IEEwICBFLi4uLmgucGlQVEkx
LjcuCiAgICA1ODMwOiAwQiA5MyA2OCAwQSAwMiA3MCA2OSA1MCA1NCA0OSAzMiBBMSAyOSBBMCAw
QiA5MyAgLi5oLi5waVBUSTIuKS4uLgogICAgNTg0MDogNjggMEEgMDMgNzAgNjkgNTAgNTQgNDkg
MzMgQTEgMUIgQTAgMEIgOTMgNjggMEEgIGguLnBpUFRJMy4uLi4uaC4KICAgIDU4NTA6IDA0IDcw
IDY5IDUwIDU0IDQ5IDM0IEExIDBEIEEwIDBCIDkzIDY4IDBBIDA1IDcwICAucGlQVEk0Li4uLi5o
Li5wCiAgICA1ODYwOiA2OSA1MCA1NCA0OSAzNSBBMCAwRSA5MyA0NCA0OSA1MyA1MCAwQSAzRiA3
MCAwMSAgaVBUSTUuLi5ESVNQLj9wLgogICAgNTg3MDogNTAgNTQgNDkgMzAgQTEgMUEgQTAgMTgg
OTAgNDQgNDkgNTMgMzAgN0YgN0IgNDQgIFBUSTAuLi4uLkRJUzAue0QKICAgIDU4ODA6IDQ5IDUz
IDUwIDBBIDNFIDAwIDBBIDNFIDAwIDcwIDAwIDUwIDU0IDQ5IDMwIDcwICBJU1AuPi4uPi5wLlBU
STBwCiAgICA1ODkwOiA1MCA1NCA0OSA1RiA2MCA3MCAwMCA2MSBBMiAwRSA2MCBBMCAwNyA3QiA2
MCAwMSAgUFRJX2BwLmEuLmAuLntgLgogICAgNThBMDogMDAgNzUgNjEgN0EgNjAgMDEgNjAgNzAg
NzYgNjEgNEUgNEYgNTAgNTQgNzAgMDAgIC51YXpgLmBwdmFOT1BUcC4KICAgIDU4QjA6IDU3IDU0
IDQ1IDRFIDVCIDgyIDRDIEIzIDUwIDQzIDQ5IDMyIDA4IDVGIDQ4IDQ5ICBXVEVOWy5MLlBDSTIu
X0hJCiAgICA1OEMwOiA0NCAwQyA0MSBEMCAwQSAwOCAwOCA1RiA0MyA0OSA0NCAwQyA0MSBEMCAw
QSAwMyAgRC5BLi4uLl9DSUQuQS4uLgogICAgNThEMDogMDggNUYgNDEgNDQgNTIgMDAgMTQgMEEg
NUUgNDIgNEUgMzAgMzIgMDAgQTQgMEEgIC5fQURSLi4uXkJOMDIuLi4KICAgIDU4RTA6IDAyIDE0
IDBCIDVGIDQyIDQyIDRFIDAwIEE0IDQyIDRFIDMwIDMyIDA4IDVGIDU1ICAuLi5fQkJOLi5CTjAy
Ll9VCiAgICA1OEYwOiA0OSA0NCAwQSAwMiAxNCAxNiA1RiA1MCA1MiA1NCAwMCBBMCAwQSA1MCA0
OSA0MyAgSUQuLi4uX1BSVC4uLlBJQwogICAgNTkwMDogNEQgQTQgNDEgNTIgMzAgMzIgQTQgNTAg
NDQgMzAgMzIgMDggNDMgNTAgNTIgNDIgIE0uQVIwMi5QRDAyLkNQUkIKICAgIDU5MTA6IDAxIDA4
IDRDIDU2IDQ3IDQxIDBBIDAwIDA4IDUzIDU0IDQxIDU2IDBBIDBGIDA4ICAuLkxWR0EuLi5TVEFW
Li4uCiAgICA1OTIwOiA0MiA1MiA0MiA1RiAwQiA4MCAwMCAwOCA0MiA1MiA0QyA1RiAwQiA0MCAw
MCAwOCAgQlJCXy4uLi5CUkxfLkAuLgogICAgNTkzMDogNDkgNEYgNDIgNUYgMEIgMDAgNzAgMDgg
NDkgNEYgNEMgNUYgMEIgMDAgMzAgMDggIElPQl8uLnAuSU9MXy4uMC4KICAgIDU5NDA6IDREIDQy
IDQyIDVGIDBDIDAwIDAwIDAwIENBIDA4IDREIDQyIDRDIDVGIDBDIDAwICBNQkJfLi4uLi4uTUJM
Xy4uCiAgICA1OTUwOiAwMCAwMCAwMSAwOCA0RCA0MSA0MiA0QyAwRSAwMCAwMCA0MCAyMCBDMCAw
MiAwMCAgLi4uLk1BQkwuLi5AIC4uLgogICAgNTk2MDogMDAgMDggNEQgNDEgNDIgNDggMEMgMDAg
MDAgMDEgMDAgMDggNEQgNDEgNEQgNEMgIC4uTUFCSC4uLi4uLk1BTUwKICAgIDU5NzA6IDBDIDAw
IDAwIDAxIDAwIDA4IDREIDQxIDREIDQ4IDBDIDAwIDAwIDAxIDAwIDA4ICAuLi4uLi5NQU1ILi4u
Li4uCiAgICA1OTgwOiA0RCA0MSA0QyA0QyAwRSAwMCAwMCAwMCA5MyA1OSAwMCAwMCAwMCAwOCA0
RCA0MSAgTUFMTC4uLi4uWS4uLi5NQQogICAgNTk5MDogNEMgNDggMEMgMDAgMDAgMDEgMDAgMDgg
NTAgNTIgNTggNEQgMEIgMDAgMDAgMDggIExILi4uLi4uUFJYTS4uLi4KICAgIDU5QTA6IDQzIDUy
IDUzIDMyIDExIDQ4IDA5IDBBIDk0IDg4IDBEIDAwIDAyIDBDIDAwIDAwICBDUlMyLkguLi4uLi4u
Li4uCiAgICA1OUIwOiAwMCA4MCAwMCBGRiAwMCAwMCAwMCA4MCAwMCA4OCAwRCAwMCAwMSAwQyAw
MyAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNTlDMDogMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAg
MDAgODggMEQgMDAgMDEgMEMgMDMgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAgIDU5RDA6IDAwIDAw
IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDg3IDE3IDAwIDAwIDBDIDAzIDAwICAuLi4uLi4uLi4uLi4u
Li4uCiAgICA1OUUwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNTlGMDogMDAgMDAgMDAgODcgMTcgMDAgMDAgMEMg
MDMgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAgIDVBMDA6IDgwIEZG
IEZGIEZGIEZGIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDgwIDhBIDJCIDAwICAuLi4uLi4uLi4uLi4u
LisuCiAgICA1QTEwOiAwMCAwQyAwMyAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNUEyMDogMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAgIDVBMzA6IDAwIDAw
IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDc5IDAwIDE0IDBCIDVGICAuLi4uLi4uLi4uLnku
Li5fCiAgICA1QTQwOiA1MyA1NCA0MSAwMCBBNCA1MyA1NCA0MSA1NiAxNCA0QSAxOSA1RiA0MyA1
MiA1MyAgU1RBLi5TVEFWLkouX0NSUwogICAgNUE1MDogMDggOEIgNDMgNTIgNTMgMzIgMEEgMDgg
NEQgNDkgNEUgMzIgOEIgNDMgNTIgNTMgIC4uQ1JTMi4uTUlOMi5DUlMKICAgIDVBNjA6IDMyIDBB
IDBBIDREIDQxIDU4IDMyIDhCIDQzIDUyIDUzIDMyIDBBIDBFIDRDIDQ1ICAyLi5NQVgyLkNSUzIu
LkxFCiAgICA1QTcwOiA0RSAzMiA3MCA0MiA1MiA0MiA1RiA0RCA0OSA0RSAzMiA3MCA0MiA1MiA0
QyA1RiAgTjJwQlJCX01JTjJwQlJMXwogICAgNUE4MDogNEMgNDUgNEUgMzIgNzAgNEMgNDUgNEUg
MzIgNjEgNzIgNEQgNDkgNEUgMzIgNzYgIExFTjJwTEVOMmFyTUlOMnYKICAgIDVBOTA6IDYxIDRE
IDQxIDU4IDMyIDhCIDQzIDUyIDUzIDMyIDBBIDI4IDREIDQ5IDRFIDM0ICBhTUFYMi5DUlMyLihN
SU40CiAgICA1QUEwOiA4QiA0MyA1MiA1MyAzMiAwQSAyQSA0RCA0MSA1OCAzNCA4QiA0MyA1MiA1
MyAzMiAgLkNSUzIuKk1BWDQuQ1JTMgogICAgNUFCMDogMEEgMkUgNEMgNDUgNEUgMzQgNzAgNDkg
NEYgNDIgNUYgNEQgNDkgNEUgMzQgNzAgIC4uTEVONHBJT0JfTUlONHAKICAgIDVBQzA6IDQ5IDRG
IDRDIDVGIDRDIDQ1IDRFIDM0IDcwIDRDIDQ1IDRFIDM0IDYxIDcyIDREICBJT0xfTEVONHBMRU40
YXJNCiAgICA1QUQwOiA0OSA0RSAzNCA3NiA2MSA0RCA0MSA1OCAzNCBBMCA0RCAwNyA0QyA1NiA0
NyA0MSAgSU40dmFNQVg0Lk0uTFZHQQogICAgNUFFMDogOEIgNDMgNTIgNTMgMzIgMEEgMTggNDkg
NEQgNEUgMzIgOEIgNDMgNTIgNTMgMzIgIC5DUlMyLi5JTU4yLkNSUzIKICAgIDVBRjA6IDBBIDFB
IDQ5IDREIDU4IDMyIDhCIDQzIDUyIDUzIDMyIDBBIDFFIDQ5IDRDIDRFICAuLklNWDIuQ1JTMi4u
SUxOCiAgICA1QjAwOiAzMiA3MCAwQiBCMCAwMyA0OSA0RCA0RSAzMiA3MCAwQiBERiAwMyA0OSA0
RCA1OCAgMnAuLi5JTU4ycC4uLklNWAogICAgNUIxMDogMzIgNzAgMEEgMzAgNDkgNEMgNEUgMzIg
OEEgNDMgNTIgNTMgMzIgMEEgM0EgNTYgIDJwLjBJTE4yLkNSUzIuOlYKICAgIDVCMjA6IDREIDRF
IDMyIDhBIDQzIDUyIDUzIDMyIDBBIDNFIDU2IDREIDU4IDMyIDhBIDQzICBNTjIuQ1JTMi4+Vk1Y
Mi5DCiAgICA1QjMwOiA1MiA1MyAzMiAwQSA0NiA1NiA0QyA0RSAzMiA3MCAwQyAwMCAwMCAwQSAw
MCA1NiAgUlMyLkZWTE4ycC4uLi4uVgogICAgNUI0MDogNEQgNEUgMzIgNzAgMEMgRkYgRkYgMEIg
MDAgNTYgNEQgNTggMzIgNzAgMEMgMDAgIE1OMnAuLi4uLlZNWDJwLi4KICAgIDVCNTA6IDAwIDAy
IDAwIDU2IDRDIDRFIDMyIDhBIDQzIDUyIDUzIDMyIDBBIDU0IDREIDQ5ICAuLi5WTE4yLkNSUzIu
VE1JCiAgICA1QjYwOiA0RSAzNSA4QSA0MyA1MiA1MyAzMiAwQSA1OCA0RCA0MSA1OCAzNSA4QSA0
MyA1MiAgTjUuQ1JTMi5YTUFYNS5DUgogICAgNUI3MDogNTMgMzIgMEEgNjAgNEMgNDUgNEUgMzUg
NzAgNEQgNDIgNDIgNUYgNEQgNDkgNEUgIFMyLmBMRU41cE1CQl9NSU4KICAgIDVCODA6IDM1IDcw
IDREIDQyIDRDIDVGIDRDIDQ1IDRFIDM1IDcwIDRDIDQ1IDRFIDM1IDYxICA1cE1CTF9MRU41cExF
TjVhCiAgICA1QjkwOiA3MiA0RCA0OSA0RSAzNSA3NiA2MSA0RCA0MSA1OCAzNSA4RiA0MyA1MiA1
MyAzMiAgck1JTjV2YU1BWDUuQ1JTMgogICAgNUJBMDogMEEgNzIgNEQgNDkgNEUgMzkgOEYgNDMg
NTIgNTMgMzIgMEEgN0EgNEQgNDEgNTggIC5yTUlOOS5DUlMyLnpNQVgKICAgIDVCQjA6IDM5IDhG
IDQzIDUyIDUzIDMyIDBBIDhBIDRDIDQ1IDRFIDM5IDcwIDREIDQxIDQyICA5LkNSUzIuLkxFTjlw
TUFCCiAgICA1QkMwOiA0QyA0RCA0OSA0RSAzOSA3MCA0RCA0MSA0QyA0QyA0QyA0NSA0RSAzOSA3
MCA0QyAgTE1JTjlwTUFMTExFTjlwTAogICAgNUJEMDogNDUgNEUgMzkgNjAgNzIgNEQgNDkgNEUg
MzkgNzYgNjAgNEQgNDEgNTggMzkgQTQgIEVOOWByTUlOOXZgTUFYOS4KICAgIDVCRTA6IDQzIDUy
IDUzIDMyIDE0IDQyIDEzIDVGIDRGIDUzIDQzIDBDIDA4IDUzIDU1IDUwICBDUlMyLkIuX09TQy4u
U1VQCiAgICA1QkYwOiA1MCAwMCAwOCA0MyA1NCA1MiA0QyAwMCA4QSA2QiAwMCA0MyA0NCA1NyAz
MSA4QSAgUC4uQ1RSTC4uay5DRFcxLgogICAgNUMwMDogNkIgMEEgMDQgNDMgNDQgNTcgMzIgOEEg
NkIgMEEgMDggNDMgNDQgNTcgMzMgQTAgIGsuLkNEVzIuay4uQ0RXMy4KICAgIDVDMTA6IDQ4IDBG
IDkzIDY4IDExIDEzIDBBIDEwIDVCIDREIERCIDMzIEY3IDFGIDFDIDQwICBILi5oLi4uLltNLjMu
Li5ACiAgICA1QzIwOiA5NiA1NyA3NCA0MSBDMCAzRCBENyA2NiA3MCA0MyA0NCA1NyAzMiA1MyA1
NSA1MCAgLld0QS49LmZwQ0RXMlNVUAogICAgNUMzMDogNTAgNzAgNDMgNDQgNTcgMzMgNDMgNTQg
NTIgNEMgQTAgMTggOTIgOTMgN0IgNTMgIFBwQ0RXM0NUUkwuLi4ue1MKICAgIDVDNDA6IDU1IDUw
IDUwIDBBIDE2IDAwIDBBIDE2IDdCIDQzIDU0IDUyIDRDIDBBIDFFIDQzICBVUFAuLi4uLntDVFJM
Li5DCiAgICA1QzUwOiA1NCA1MiA0QyBBMCAxMSA5MiA1MCA0NSA0OCA1MCA3QiA0MyA1NCA1MiA0
QyAwQSAgVFJMLi4uUEVIUHtDVFJMLgogICAgNUM2MDogMUUgNDMgNTQgNTIgNEMgQTAgMTEgOTIg
NTMgNDggNTAgNDMgN0IgNDMgNTQgNTIgIC5DVFJMLi4uU0hQQ3tDVFIKICAgIDVDNzA6IDRDIDBB
IDFEIDQzIDU0IDUyIDRDIEEwIDExIDkyIDUwIDQ1IDUwIDREIDdCIDQzICBMLi5DVFJMLi4uUEVQ
TXtDCiAgICA1QzgwOiA1NCA1MiA0QyAwQSAxQiA0MyA1NCA1MiA0QyBBMCAxMSA5MiA1MCA0NSA0
NSA1MiAgVFJMLi5DVFJMLi4uUEVFUgogICAgNUM5MDogN0IgNDMgNTQgNTIgNEMgMEEgMTUgNDMg
NTQgNTIgNEMgQTAgMTEgOTIgNTAgNDUgIHtDVFJMLi5DVFJMLi4uUEUKICAgIDVDQTA6IDQzIDUz
IDdCIDQzIDU0IDUyIDRDIDBBIDBGIDQzIDU0IDUyIDRDIEEwIDEwIDkyICBDU3tDVFJMLi5DVFJM
Li4uCiAgICA1Q0IwOiA5MyA2OSAwMSA3RCA0MyA0NCA1NyAzMSAwQSAwOCA0MyA0NCA1NyAzMSBB
MCAxNSAgLmkufUNEVzEuLkNEVzEuLgogICAgNUNDMDogNUIgMTIgNTAgNEYgNTMgNDMgMDAgN0Ig
NDMgNTQgNTIgNEMgNTAgNEYgNTMgNDMgIFsuUE9TQy57Q1RSTFBPU0MKICAgIDVDRDA6IDQzIDU0
IDUyIDRDIEEwIDE2IDkyIDkzIDQzIDQ0IDU3IDMzIDQzIDU0IDUyIDRDICBDVFJMLi4uLkNEVzND
VFJMCiAgICA1Q0UwOiA3RCA0MyA0NCA1NyAzMSAwQSAxMCA0MyA0NCA1NyAzMSA3MCA0MyA1NCA1
MiA0QyAgfUNEVzEuLkNEVzFwQ1RSTAogICAgNUNGMDogNDMgNDQgNTcgMzMgQTAgMTEgNUIgMTIg
NTAgNEYgNTMgNTMgMDAgNzAgNTMgNTUgIENEVzMuLlsuUE9TUy5wU1UKICAgIDVEMDA6IDUwIDUw
IDUwIDRGIDUzIDUzIEE0IDZCIEExIDBFIDdEIDQzIDQ0IDU3IDMxIDBBICBQUFBPU1Muay4ufUNE
VzEuCiAgICA1RDEwOiAwNCA0MyA0NCA1NyAzMSBBNCA2QiA1QiA4MiAwQyA0NCAzMCAzNCAzOCAw
OCA1RiAgLkNEVzEua1suLkQwNDguXwogICAgNUQyMDogNDEgNDQgNTIgMEEgMDIgNUIgODIgMEMg
NDQgMzAgMzQgMzkgMDggNUYgNDEgNDQgIEFEUi4uWy4uRDA0OS5fQUQKICAgIDVEMzA6IDUyIDBB
IDAzIDVCIDgyIDQ2IDA0IDQ3IDUwIDUwIDMwIDA4IDVGIDQxIDQ0IDUyICBSLi5bLkYuR1BQMC5f
QURSCiAgICA1RDQwOiAwQyAwMSAwMCAwMSAwMCAxNCAwRiA1RiA1MCA1MiA1NyAwMCBBNCA0NyA1
MCA1MiAgLi4uLi4uLl9QUlcuLkdQUgogICAgNUQ1MDogNTcgMEEgMDggMEEgMDQgMTQgMTYgNUYg
NTAgNTIgNTQgMDAgQTAgMEEgNTAgNDkgIFcuLi4uLi5fUFJULi4uUEkKICAgIDVENjA6IDQzIDRE
IEE0IDQ3IDMwIDM0IDQxIEE0IDUwIDMwIDM0IDQxIDVCIDgyIDBEIDQ0ICBDTS5HMDRBLlAwNEFb
Li5ECiAgICA1RDcwOiAzMCA0MyAzMSAwOCA1RiA0MSA0NCA1MiAwQiBGRiBGRiA1QiA4MiA0NiAw
NCA0NyAgMEMxLl9BRFIuLi5bLkYuRwogICAgNUQ4MDogNTAgNTAgMzEgMDggNUYgNDEgNDQgNTIg
MEMgMDIgMDAgMDEgMDAgMTQgMEYgNUYgIFBQMS5fQURSLi4uLi4uLl8KICAgIDVEOTA6IDUwIDUy
IDU3IDAwIEE0IDQ3IDUwIDUyIDU3IDBBIDA4IDBBIDA0IDE0IDE2IDVGICBQUlcuLkdQUlcuLi4u
Li5fCiAgICA1REEwOiA1MCA1MiA1NCAwMCBBMCAwQSA1MCA0OSA0MyA0RCBBNCA0NyAzMCAzNCA0
MiBBNCAgUFJULi4uUElDTS5HMDRCLgogICAgNURCMDogNTAgMzAgMzQgNDIgNUIgODIgMEQgNDQg
MzAgNDMgMzIgMDggNUYgNDEgNDQgNTIgIFAwNEJbLi5EMEMyLl9BRFIKICAgIDVEQzA6IDBCIEZG
IEZGIDVCIDgyIDQ2IDA0IDQ3IDUwIDUwIDMyIDA4IDVGIDQxIDQ0IDUyICAuLi5bLkYuR1BQMi5f
QURSCiAgICA1REQwOiAwQyAwMyAwMCAwMSAwMCAxNCAwRiA1RiA1MCA1MiA1NyAwMCBBNCA0NyA1
MCA1MiAgLi4uLi4uLl9QUlcuLkdQUgogICAgNURFMDogNTcgMEEgMDggMEEgMDQgMTQgMTYgNUYg
NTAgNTIgNTQgMDAgQTAgMEEgNTAgNDkgIFcuLi4uLi5fUFJULi4uUEkKICAgIDVERjA6IDQzIDRE
IEE0IDQ3IDMwIDM0IDQzIEE0IDUwIDMwIDM0IDQzIDVCIDgyIDBEIDQ0ICBDTS5HMDRDLlAwNENb
Li5ECiAgICA1RTAwOiAzMCA0MyAzMyAwOCA1RiA0MSA0NCA1MiAwQiBGRiBGRiA1QiA4MiA0NiAw
NCA0NyAgMEMzLl9BRFIuLi5bLkYuRwogICAgNUUxMDogNTAgNTAgMzMgMDggNUYgNDEgNDQgNTIg
MEMgMDQgMDAgMDEgMDAgMTQgMEYgNUYgIFBQMy5fQURSLi4uLi4uLl8KICAgIDVFMjA6IDUwIDUy
IDU3IDAwIEE0IDQ3IDUwIDUyIDU3IDBBIDA4IDBBIDA0IDE0IDE2IDVGICBQUlcuLkdQUlcuLi4u
Li5fCiAgICA1RTMwOiA1MCA1MiA1NCAwMCBBMCAwQSA1MCA0OSA0MyA0RCBBNCA0NyAzMCAzNCA0
NCBBNCAgUFJULi4uUElDTS5HMDRELgogICAgNUU0MDogNTAgMzAgMzQgNDQgNUIgODIgMEQgNDQg
MzAgNDMgMzQgMDggNUYgNDEgNDQgNTIgIFAwNERbLi5EMEM0Ll9BRFIKICAgIDVFNTA6IDBCIEZG
IEZGIDVCIDgyIDQ2IDA0IDQ3IDUwIDUwIDM0IDA4IDVGIDQxIDQ0IDUyICAuLi5bLkYuR1BQNC5f
QURSCiAgICA1RTYwOiAwQyAwNSAwMCAwMSAwMCAxNCAwRiA1RiA1MCA1MiA1NyAwMCBBNCA0NyA1
MCA1MiAgLi4uLi4uLl9QUlcuLkdQUgogICAgNUU3MDogNTcgMEEgMDggMEEgMDQgMTQgMTYgNUYg
NTAgNTIgNTQgMDAgQTAgMEEgNTAgNDkgIFcuLi4uLi5fUFJULi4uUEkKICAgIDVFODA6IDQzIDRE
IEE0IDQ3IDMwIDM0IDQ1IEE0IDUwIDMwIDM0IDQ1IDVCIDgyIDBEIDQ0ICBDTS5HMDRFLlAwNEVb
Li5ECiAgICA1RTkwOiAzMCA0MyAzNSAwOCA1RiA0MSA0NCA1MiAwQiBGRiBGRiA1QiA4MiA0NiAw
NCA0NyAgMEM1Ll9BRFIuLi5bLkYuRwogICAgNUVBMDogNTAgNTAgMzUgMDggNUYgNDEgNDQgNTIg
MEMgMDYgMDAgMDEgMDAgMTQgMEYgNUYgIFBQNS5fQURSLi4uLi4uLl8KICAgIDVFQjA6IDUwIDUy
IDU3IDAwIEE0IDQ3IDUwIDUyIDU3IDBBIDA4IDBBIDA0IDE0IDE2IDVGICBQUlcuLkdQUlcuLi4u
Li5fCiAgICA1RUMwOiA1MCA1MiA1NCAwMCBBMCAwQSA1MCA0OSA0MyA0RCBBNCA0NyAzMCAzNCA0
NiBBNCAgUFJULi4uUElDTS5HMDRGLgogICAgNUVEMDogNTAgMzAgMzQgNDYgNUIgODIgMEQgNDQg
MzAgNDMgMzYgMDggNUYgNDEgNDQgNTIgIFAwNEZbLi5EMEM2Ll9BRFIKICAgIDVFRTA6IDBCIEZG
IEZGIDVCIDgyIDQ2IDA0IDQ3IDUwIDUwIDM2IDA4IDVGIDQxIDQ0IDUyICAuLi5bLkYuR1BQNi5f
QURSCiAgICA1RUYwOiAwQyAwNyAwMCAwMSAwMCAxNCAwRiA1RiA1MCA1MiA1NyAwMCBBNCA0NyA1
MCA1MiAgLi4uLi4uLl9QUlcuLkdQUgogICAgNUYwMDogNTcgMEEgMDggMEEgMDQgMTQgMTYgNUYg
NTAgNTIgNTQgMDAgQTAgMEEgNTAgNDkgIFcuLi4uLi5fUFJULi4uUEkKICAgIDVGMTA6IDQzIDRE
IEE0IDQ3IDMwIDM1IDMwIEE0IDUwIDMwIDM1IDMwIDVCIDgyIDBEIDQ0ICBDTS5HMDUwLlAwNTBb
Li5ECiAgICA1RjIwOiAzMCA0MyAzNyAwOCA1RiA0MSA0NCA1MiAwQiBGRiBGRiA1QiA4MiA0NiAw
NCA0NyAgMEM3Ll9BRFIuLi5bLkYuRwogICAgNUYzMDogNTAgNTAgMzcgMDggNUYgNDEgNDQgNTIg
MEMgMDEgMDAgMDIgMDAgMTQgMEYgNUYgIFBQNy5fQURSLi4uLi4uLl8KICAgIDVGNDA6IDUwIDUy
IDU3IDAwIEE0IDQ3IDUwIDUyIDU3IDBBIDA4IDBBIDA0IDE0IDE2IDVGICBQUlcuLkdQUlcuLi4u
Li5fCiAgICA1RjUwOiA1MCA1MiA1NCAwMCBBMCAwQSA1MCA0OSA0MyA0RCBBNCA0NyAzMCAzNSAz
MSBBNCAgUFJULi4uUElDTS5HMDUxLgogICAgNUY2MDogNTAgMzAgMzUgMzEgNUIgODIgMEQgNDQg
MzAgNDMgMzggMDggNUYgNDEgNDQgNTIgIFAwNTFbLi5EMEM4Ll9BRFIKICAgIDVGNzA6IDBCIEZG
IEZGIDVCIDgyIDQ2IDA0IDQ3IDUwIDUwIDM4IDA4IDVGIDQxIDQ0IDUyICAuLi5bLkYuR1BQOC5f
QURSCiAgICA1RjgwOiAwQyAwMiAwMCAwMiAwMCAxNCAwRiA1RiA1MCA1MiA1NyAwMCBBNCA0NyA1
MCA1MiAgLi4uLi4uLl9QUlcuLkdQUgogICAgNUY5MDogNTcgMEEgMDggMEEgMDQgMTQgMTYgNUYg
NTAgNTIgNTQgMDAgQTAgMEEgNTAgNDkgIFcuLi4uLi5fUFJULi4uUEkKICAgIDVGQTA6IDQzIDRE
IEE0IDQ3IDMwIDM1IDMyIEE0IDUwIDMwIDM1IDMyIDVCIDgyIDBEIDQ0ICBDTS5HMDUyLlAwNTJb
Li5ECiAgICA1RkIwOiAzMCA0MyAzOSAwOCA1RiA0MSA0NCA1MiAwQiBGRiBGRiA1QiA4MiA0NiAw
NCA0NyAgMEM5Ll9BRFIuLi5bLkYuRwogICAgNUZDMDogNTAgNTAgMzkgMDggNUYgNDEgNDQgNTIg
MEMgMDEgMDAgMDMgMDAgMTQgMEYgNUYgIFBQOS5fQURSLi4uLi4uLl8KICAgIDVGRDA6IDUwIDUy
IDU3IDAwIEE0IDQ3IDUwIDUyIDU3IDBBIDA4IDBBIDA0IDE0IDE2IDVGICBQUlcuLkdQUlcuLi4u
Li5fCiAgICA1RkUwOiA1MCA1MiA1NCAwMCBBMCAwQSA1MCA0OSA0MyA0RCBBNCA0NyAzMCAzNSAz
MyBBNCAgUFJULi4uUElDTS5HMDUzLgogICAgNUZGMDogNTAgMzAgMzUgMzMgNUIgODIgMEQgNDQg
MzAgNDMgNDEgMDggNUYgNDEgNDQgNTIgIFAwNTNbLi5EMENBLl9BRFIKICAgIDYwMDA6IDBCIEZG
IEZGIDVCIDgyIDQ2IDA0IDQ3IDUwIDUwIDQxIDA4IDVGIDQxIDQ0IDUyICAuLi5bLkYuR1BQQS5f
QURSCiAgICA2MDEwOiAwQyAwMiAwMCAwMyAwMCAxNCAwRiA1RiA1MCA1MiA1NyAwMCBBNCA0NyA1
MCA1MiAgLi4uLi4uLl9QUlcuLkdQUgogICAgNjAyMDogNTcgMEEgMDggMEEgMDQgMTQgMTYgNUYg
NTAgNTIgNTQgMDAgQTAgMEEgNTAgNDkgIFcuLi4uLi5fUFJULi4uUEkKICAgIDYwMzA6IDQzIDRE
IEE0IDQ3IDMwIDM1IDM0IEE0IDUwIDMwIDM1IDM0IDVCIDgyIDBEIDQ0ICBDTS5HMDU0LlAwNTRb
Li5ECiAgICA2MDQwOiAzMCA0MyA0MiAwOCA1RiA0MSA0NCA1MiAwQiBGRiBGRiA1QiA4MiA0NiAw
NCA0NyAgMENCLl9BRFIuLi5bLkYuRwogICAgNjA1MDogNTAgNTAgNDIgMDggNUYgNDEgNDQgNTIg
MEMgMDMgMDAgMDMgMDAgMTQgMEYgNUYgIFBQQi5fQURSLi4uLi4uLl8KICAgIDYwNjA6IDUwIDUy
IDU3IDAwIEE0IDQ3IDUwIDUyIDU3IDBBIDA4IDBBIDA0IDE0IDE2IDVGICBQUlcuLkdQUlcuLi4u
Li5fCiAgICA2MDcwOiA1MCA1MiA1NCAwMCBBMCAwQSA1MCA0OSA0MyA0RCBBNCA0NyAzMCAzNSAz
NSBBNCAgUFJULi4uUElDTS5HMDU1LgogICAgNjA4MDogNTAgMzAgMzUgMzUgNUIgODIgMEQgNDQg
MzAgNDMgNDMgMDggNUYgNDEgNDQgNTIgIFAwNTVbLi5EMENDLl9BRFIKICAgIDYwOTA6IDBCIEZG
IEZGIDVCIDgyIDQ2IDA0IDQ3IDUwIDUwIDQzIDA4IDVGIDQxIDQ0IDUyICAuLi5bLkYuR1BQQy5f
QURSCiAgICA2MEEwOiAwQyAwNCAwMCAwMyAwMCAxNCAwRiA1RiA1MCA1MiA1NyAwMCBBNCA0NyA1
MCA1MiAgLi4uLi4uLl9QUlcuLkdQUgogICAgNjBCMDogNTcgMEEgMDggMEEgMDQgMTQgMTYgNUYg
NTAgNTIgNTQgMDAgQTAgMEEgNTAgNDkgIFcuLi4uLi5fUFJULi4uUEkKICAgIDYwQzA6IDQzIDRE
IEE0IDQ3IDMwIDM1IDM2IEE0IDUwIDMwIDM1IDM2IDVCIDgyIDBEIDQ0ICBDTS5HMDU2LlAwNTZb
Li5ECiAgICA2MEQwOiAzMCA0MyA0NCAwOCA1RiA0MSA0NCA1MiAwQiBGRiBGRiA1QiA4MiA0NiAw
NCA0NyAgMENELl9BRFIuLi5bLkYuRwogICAgNjBFMDogNTAgNTAgNDQgMDggNUYgNDEgNDQgNTIg
MEMgMDUgMDAgMDMgMDAgMTQgMEYgNUYgIFBQRC5fQURSLi4uLi4uLl8KICAgIDYwRjA6IDUwIDUy
IDU3IDAwIEE0IDQ3IDUwIDUyIDU3IDBBIDA4IDBBIDA0IDE0IDE2IDVGICBQUlcuLkdQUlcuLi4u
Li5fCiAgICA2MTAwOiA1MCA1MiA1NCAwMCBBMCAwQSA1MCA0OSA0MyA0RCBBNCA0NyAzMCAzNSAz
NyBBNCAgUFJULi4uUElDTS5HMDU3LgogICAgNjExMDogNTAgMzAgMzUgMzcgNUIgODIgMEQgNDQg
MzAgNDMgNDUgMDggNUYgNDEgNDQgNTIgIFAwNTdbLi5EMENFLl9BRFIKICAgIDYxMjA6IDBCIEZG
IEZGIDVCIDgyIDQ2IDA0IDQ3IDUwIDUwIDQ1IDA4IDVGIDQxIDQ0IDUyICAuLi5bLkYuR1BQRS5f
QURSCiAgICA2MTMwOiAwQyAwNiAwMCAwMyAwMCAxNCAwRiA1RiA1MCA1MiA1NyAwMCBBNCA0NyA1
MCA1MiAgLi4uLi4uLl9QUlcuLkdQUgogICAgNjE0MDogNTcgMEEgMDggMEEgMDQgMTQgMTYgNUYg
NTAgNTIgNTQgMDAgQTAgMEEgNTAgNDkgIFcuLi4uLi5fUFJULi4uUEkKICAgIDYxNTA6IDQzIDRE
IEE0IDQ3IDMwIDM1IDM4IEE0IDUwIDMwIDM1IDM4IDVCIDgyIDBEIDQ0ICBDTS5HMDU4LlAwNThb
Li5ECiAgICA2MTYwOiAzMCA0MyA0NiAwOCA1RiA0MSA0NCA1MiAwQiBGRiBGRiA1QiA4MiA0NiAw
NCA0NyAgMENGLl9BRFIuLi5bLkYuRwogICAgNjE3MDogNTAgNTAgNDYgMDggNUYgNDEgNDQgNTIg
MEMgMDcgMDAgMDMgMDAgMTQgMEYgNUYgIFBQRi5fQURSLi4uLi4uLl8KICAgIDYxODA6IDUwIDUy
IDU3IDAwIEE0IDQ3IDUwIDUyIDU3IDBBIDA4IDBBIDA0IDE0IDE2IDVGICBQUlcuLkdQUlcuLi4u
Li5fCiAgICA2MTkwOiA1MCA1MiA1NCAwMCBBMCAwQSA1MCA0OSA0MyA0RCBBNCA0NyAzMCAzNSAz
OSBBNCAgUFJULi4uUElDTS5HMDU5LgogICAgNjFBMDogNTAgMzAgMzUgMzkgNUIgODIgMEQgNDQg
MzAgNDQgMzAgMDggNUYgNDEgNDQgNTIgIFAwNTlbLi5EMEQwLl9BRFIKICAgIDYxQjA6IDBCIEZG
IEZGIDVCIDgyIDQ2IDA0IDQ3IDUwIDUwIDQ3IDA4IDVGIDQxIDQ0IDUyICAuLi5bLkYuR1BQRy5f
QURSCiAgICA2MUMwOiAwQyAwMSAwMCAwNCAwMCAxNCAwRiA1RiA1MCA1MiA1NyAwMCBBNCA0NyA1
MCA1MiAgLi4uLi4uLl9QUlcuLkdQUgogICAgNjFEMDogNTcgMEEgMDggMEEgMDQgMTQgMTYgNUYg
NTAgNTIgNTQgMDAgQTAgMEEgNTAgNDkgIFcuLi4uLi5fUFJULi4uUEkKICAgIDYxRTA6IDQzIDRE
IEE0IDQ3IDMwIDM1IDQxIEE0IDUwIDMwIDM1IDQxIDVCIDgyIDBEIDQ0ICBDTS5HMDVBLlAwNUFb
Li5ECiAgICA2MUYwOiAzMCA0NCAzMSAwOCA1RiA0MSA0NCA1MiAwQiBGRiBGRiA1QiA4MiA0NiAw
NCA0NyAgMEQxLl9BRFIuLi5bLkYuRwogICAgNjIwMDogNTAgNTAgNDggMDggNUYgNDEgNDQgNTIg
MEMgMDIgMDAgMDQgMDAgMTQgMEYgNUYgIFBQSC5fQURSLi4uLi4uLl8KICAgIDYyMTA6IDUwIDUy
IDU3IDAwIEE0IDQ3IDUwIDUyIDU3IDBBIDA4IDBBIDA0IDE0IDE2IDVGICBQUlcuLkdQUlcuLi4u
Li5fCiAgICA2MjIwOiA1MCA1MiA1NCAwMCBBMCAwQSA1MCA0OSA0MyA0RCBBNCA0NyAzMCAzNSA0
MiBBNCAgUFJULi4uUElDTS5HMDVCLgogICAgNjIzMDogNTAgMzAgMzUgNDIgNUIgODIgMEQgNDQg
MzAgNDQgMzIgMDggNUYgNDEgNDQgNTIgIFAwNUJbLi5EMEQyLl9BRFIKICAgIDYyNDA6IDBCIEZG
IEZGIDVCIDgyIDQ2IDA0IDQ3IDUwIDMxIDM1IDA4IDVGIDQxIDQ0IDUyICAuLi5bLkYuR1AxNS5f
QURSCiAgICA2MjUwOiAwQyAwMSAwMCAwNSAwMCAxNCAwRiA1RiA1MCA1MiA1NyAwMCBBNCA0NyA1
MCA1MiAgLi4uLi4uLl9QUlcuLkdQUgogICAgNjI2MDogNTcgMEEgMDggMEEgMDQgMTQgMTYgNUYg
NTAgNTIgNTQgMDAgQTAgMEEgNTAgNDkgIFcuLi4uLi5fUFJULi4uUEkKICAgIDYyNzA6IDQzIDRE
IEE0IDQ3IDMwIDM1IDQzIEE0IDUwIDMwIDM1IDQzIDVCIDgyIDBEIDQ0ICBDTS5HMDVDLlAwNUNb
Li5ECiAgICA2MjgwOiAzMCA0NCAzMyAwOCA1RiA0MSA0NCA1MiAwQiBGRiBGRiA1QiA4MiA0NiAw
NCA0NyAgMEQzLl9BRFIuLi5bLkYuRwogICAgNjI5MDogNTAgMzIgMzUgMDggNUYgNDEgNDQgNTIg
MEMgMDIgMDAgMDUgMDAgMTQgMEYgNUYgIFAyNS5fQURSLi4uLi4uLl8KICAgIDYyQTA6IDUwIDUy
IDU3IDAwIEE0IDQ3IDUwIDUyIDU3IDBBIDA4IDBBIDA0IDE0IDE2IDVGICBQUlcuLkdQUlcuLi4u
Li5fCiAgICA2MkIwOiA1MCA1MiA1NCAwMCBBMCAwQSA1MCA0OSA0MyA0RCBBNCA0NyAzMCAzNSA0
NCBBNCAgUFJULi4uUElDTS5HMDVELgogICAgNjJDMDogNTAgMzAgMzUgNDQgNUIgODIgMEQgNDQg
MzAgNDQgMzQgMDggNUYgNDEgNDQgNTIgIFAwNURbLi5EMEQ0Ll9BRFIKICAgIDYyRDA6IDBCIEZG
IEZGIDVCIDgyIDQ2IDA0IDQ3IDUwIDMzIDM1IDA4IDVGIDQxIDQ0IDUyICAuLi5bLkYuR1AzNS5f
QURSCiAgICA2MkUwOiAwQyAwMyAwMCAwNSAwMCAxNCAwRiA1RiA1MCA1MiA1NyAwMCBBNCA0NyA1
MCA1MiAgLi4uLi4uLl9QUlcuLkdQUgogICAgNjJGMDogNTcgMEEgMDggMEEgMDQgMTQgMTYgNUYg
NTAgNTIgNTQgMDAgQTAgMEEgNTAgNDkgIFcuLi4uLi5fUFJULi4uUEkKICAgIDYzMDA6IDQzIDRE
IEE0IDQ3IDMwIDM1IDQ1IEE0IDUwIDMwIDM1IDQ1IDVCIDgyIDBEIDQ0ICBDTS5HMDVFLlAwNUVb
Li5ECiAgICA2MzEwOiAzMCA0NCAzNSAwOCA1RiA0MSA0NCA1MiAwQiBGRiBGRiA1QiA4MiA0NiAw
NCA0NyAgMEQ1Ll9BRFIuLi5bLkYuRwogICAgNjMyMDogNTAgMzQgMzUgMDggNUYgNDEgNDQgNTIg
MEMgMDQgMDAgMDUgMDAgMTQgMEYgNUYgIFA0NS5fQURSLi4uLi4uLl8KICAgIDYzMzA6IDUwIDUy
IDU3IDAwIEE0IDQ3IDUwIDUyIDU3IDBBIDA4IDBBIDA0IDE0IDE2IDVGICBQUlcuLkdQUlcuLi4u
Li5fCiAgICA2MzQwOiA1MCA1MiA1NCAwMCBBMCAwQSA1MCA0OSA0MyA0RCBBNCA0NyAzMCAzNSA0
NiBBNCAgUFJULi4uUElDTS5HMDVGLgogICAgNjM1MDogNTAgMzAgMzUgNDYgNUIgODIgMEQgNDQg
MzAgNDQgMzYgMDggNUYgNDEgNDQgNTIgIFAwNUZbLi5EMEQ2Ll9BRFIKICAgIDYzNjA6IDBCIEZG
IEZGIDVCIDgyIDRDIDA3IDQ3IDUwIDMxIDM3IDA4IDVGIDQxIDQ0IDUyICAuLi5bLkwuR1AxNy5f
QURSCiAgICA2MzcwOiAwQyAwMSAwMCAwNyAwMCAxNCAwRiA1RiA1MCA1MiA1NyAwMCBBNCA0NyA1
MCA1MiAgLi4uLi4uLl9QUlcuLkdQUgogICAgNjM4MDogNTcgMEEgMEIgMEEgMDQgMTQgMTYgNUYg
NTAgNTIgNTQgMDAgQTAgMEEgNTAgNDkgIFcuLi4uLi5fUFJULi4uUEkKICAgIDYzOTA6IDQzIDRE
IEE0IDQ3IDMwIDM2IDMwIEE0IDUwIDMwIDM2IDMwIDVCIDgyIDBCIDQ0ICBDTS5HMDYwLlAwNjBb
Li5ECiAgICA2M0EwOiAzMCAzNiAzMSAwOCA1RiA0MSA0NCA1MiAwMCA1QiA4MiAwQiA0NCAzMCAz
NiAzMiAgMDYxLl9BRFIuWy4uRDA2MgogICAgNjNCMDogMDggNUYgNDEgNDQgNTIgMDEgNUIgODIg
MEMgNDQgMzAgMzYgMzMgMDggNUYgNDEgIC5fQURSLlsuLkQwNjMuX0EKICAgIDYzQzA6IDQ0IDUy
IDBBIDAyIDVCIDgyIDBDIDQ0IDMwIDM2IDM0IDA4IDVGIDQxIDQ0IDUyICBEUi4uWy4uRDA2NC5f
QURSCiAgICA2M0QwOiAwQSAwMyA1QiA4MiAwRCA0NCAzMCA0NCAzNyAwOCA1RiA0MSA0NCA1MiAw
QiBGRiAgLi5bLi5EMEQ3Ll9BRFIuLgogICAgNjNFMDogRkYgNUIgODIgMEYgNDcgNTAgMzIgMzcg
MDggNUYgNDEgNDQgNTIgMEMgMDIgMDAgIC5bLi5HUDI3Ll9BRFIuLi4KICAgIDYzRjA6IDA3IDAw
IDVCIDgyIDgwIENBIDAyIDUwIDQzIDQ5IDMwIDA4IDVGIDQ4IDQ5IDQ0ICAuLlsuLi4uUENJMC5f
SElECiAgICA2NDAwOiAwQyA0MSBEMCAwQSAwOCAwOCA1RiA0MyA0OSA0NCAwQyA0MSBEMCAwQSAw
MyAwOCAgLkEuLi4uX0NJRC5BLi4uLgogICAgNjQxMDogNUYgNDEgNDQgNTIgMDAgMTQgMDkgNUUg
NDIgNEUgMzAgMzAgMDAgQTQgMDAgMTQgIF9BRFIuLi5eQk4wMC4uLi4KICAgIDY0MjA6IDBCIDVG
IDQyIDQyIDRFIDAwIEE0IDQyIDRFIDMwIDMwIDA4IDVGIDU1IDQ5IDQ0ICAuX0JCTi4uQk4wMC5f
VUlECiAgICA2NDMwOiAwMCAxNCAxNiA1RiA1MCA1MiA1NCAwMCBBMCAwQSA1MCA0OSA0MyA0RCBB
NCA0MSAgLi4uX1BSVC4uLlBJQ00uQQogICAgNjQ0MDogNTIgMzAgMzAgQTQgNTAgNDQgMzAgMzAg
NUIgODAgNEUgNDEgNTAgNDMgMDIgMEEgIFIwMC5QRDAwWy5OQVBDLi4KICAgIDY0NTA6IEI0IDBB
IDBDIDVCIDgxIDE1IDRFIDQxIDUwIDQzIDAzIDRFIDQxIDQ1IDU4IDIwICAuLi5bLi5OQVBDLk5B
RVggCiAgICA2NDYwOiA0RSA0MSA1MCA1OCAyMCA0RSA0MSA1MCA0NCAyMCA1QiAwMSA0RSA0MSA1
MCA0RCAgTkFQWCBOQVBEIFsuTkFQTQogICAgNjQ3MDogMDAgMTQgNEMgMDggNEUgNDEgNTAgNDUg
MDAgNUIgMjMgNEUgNDEgNTAgNEQgRkYgIC4uTC5OQVBFLlsjTkFQTS4KICAgIDY0ODA6IEZGIDcw
IDAwIDRFIDQxIDQ1IDU4IDcwIDBDIDg0IDQxIDAwIDQ5IDRFIDQxIDUwICAucC5OQUVYcC4uQS5J
TkFQCiAgICA2NDkwOiA1OCA3MCA0RSA0MSA1MCA0NCA2MCA3QSA2MCAwQSAwOCA2MCA3QiA2MCAw
QSAwRiAgWHBOQVBEYHpgLi5ge2AuLgogICAgNjRBMDogNjAgQTIgNDAgMDUgOTIgOTUgNjAgMDEg
NzAgMDAgNEUgNDEgNDUgNTggNzQgNjAgIGAuQC4uLmAucC5OQUVYdGAKICAgIDY0QjA6IDAxIDYx
IDc3IDYxIDBDIDAwIDAwIDEwIDAwIDYxIEEwIDEzIDk0IDYwIDBBIDA0ICAuYXdhLi4uLi5hLi4u
YC4uCiAgICA2NEMwOiA3MCAwMSA0RSA0MSA0NSA1OCA3NCA2MSAwQyAwMCAwMCA0MCAwMCA2MSA3
MiA2MSAgcC5OQUVYdGEuLi5ALmFyYQogICAgNjREMDogMEMgMDAgMDAgMzAgMTQgNjEgNzAgNjEg
NEUgNDEgNTAgNTggNzAgNEUgNDEgNTAgIC4uLjAuYXBhTkFQWHBOQVAKICAgIDY0RTA6IDQ0IDYy
IDdCIDYyIDBDIEVGIEZGIEZGIEZGIDYyIDcwIDYyIDRFIDQxIDUwIDQ0ICBEYntiLi4uLi5icGJO
QVBECiAgICA2NEYwOiA3NiA2MCA3MCAwMCA0RSA0MSA0NSA1OCA1QiAyNyA0RSA0MSA1MCA0RCA1
QiA4MiAgdmBwLk5BRVhbJ05BUE1bLgogICAgNjUwMDogNDkgMDYgNDEgNEQgNDQgNEUgMDggNUYg
NDggNDkgNDQgMEMgNDEgRDAgMEMgMDEgIEkuQU1ETi5fSElELkEuLi4KICAgIDY1MTA6IDA4IDVG
IDU1IDQ5IDQ0IDBBIEM4IDA4IDVGIDUzIDU0IDQxIDBBIDBGIDA4IDRFICAuX1VJRC4uLl9TVEEu
Li5OCiAgICA2NTIwOiA1MCA1NCA1MiAxMSAxMSAwQSAwRSA4NiAwOSAwMCAwMSAwMCAwMCAwMCAw
MCAwMCAgUFRSLi4uLi4uLi4uLi4uLgogICAgNjUzMDogMDAgMDAgMDAgNzkgMDAgMTQgMzMgNUYg
NDMgNTIgNTMgMDAgOEEgNEUgNTAgNTQgIC4uLnkuLjNfQ1JTLi5OUFQKICAgIDY1NDA6IDUyIDBB
IDA4IDUwIDRDIDVGIDVGIDhBIDRFIDUwIDU0IDUyIDBBIDA0IDUwIDQyICBSLi5QTF9fLk5QVFIu
LlBCCiAgICA2NTUwOiA1RiA1RiA3MCA1MCA0NSA0MiA1MyA1MCA0MiA1RiA1RiA3MCA1MCA0NSA0
MiA0QyAgX19wUEVCU1BCX19wUEVCTAogICAgNjU2MDogNTAgNEMgNUYgNUYgQTQgNEUgNTAgNTQg
NTIgMTQgMEIgNEUgNTAgNTQgNTMgMDEgIFBMX18uTlBUUi4uTlBUUy4KICAgIDY1NzA6IDQxIDUw
IDU0IDUzIDY4IDE0IDE1IDRFIDU3IDQxIDRCIDAxIDQxIDU3IDQxIDRCICBBUFRTaC4uTldBSy5B
V0FLCiAgICA2NTgwOiA2OCBBMCAwOSA1MCA0OSA0MyA0RCA0RSA0MSA1MCA0NSAwOCA0MyA1MCA1
MiA0MiAgaC4uUElDTU5BUEUuQ1BSQgogICAgNjU5MDogMDEgMDggNEMgNTYgNDcgNDEgMEEgMDEg
MDggNTMgNTQgNDEgNTYgMEEgMEYgMDggIC4uTFZHQS4uLlNUQVYuLi4KICAgIDY1QTA6IDQyIDUy
IDQyIDVGIDBCIDAwIDAwIDA4IDQyIDUyIDRDIDVGIDBCIDQwIDAwIDA4ICBCUkJfLi4uLkJSTF8u
QC4uCiAgICA2NUIwOiA1MCA1MiA1OCA0RCAwQiAwMCAwMCAwOCA0OSA0RiA0MiA1RiAwQiAwMCAx
MCAwOCAgUFJYTS4uLi5JT0JfLi4uLgogICAgNjVDMDogNDkgNEYgNEMgNUYgMEIgMDAgMzAgMDgg
NEQgNDIgNDIgNUYgMEMgMDAgMDAgMDAgIElPTF8uLjAuTUJCXy4uLi4KICAgIDY1RDA6IEYwIDA4
IDREIDQyIDRDIDVGIDBDIDAwIDAwIDAwIDAxIDA4IDREIDQxIDQyIDRDICAuLk1CTF8uLi4uLi5N
QUJMCiAgICA2NUUwOiAwRSAwMCAwMCA0MCAyMCA4MCAwNCAwMCAwMCAwOCA0RCA0MSA0MiA0OCAw
QyAwMCAgLi4uQCAuLi4uLk1BQkguLgogICAgNjVGMDogMDAgMDEgMDAgMDggNEQgNDEgNEQgNEMg
MEMgMDAgMDAgMDEgMDAgMDggNEQgNDEgIC4uLi5NQU1MLi4uLi4uTUEKICAgIDY2MDA6IDREIDQ4
IDBDIDAwIDAwIDAxIDAwIDA4IDREIDQxIDRDIDRDIDBFIDAwIDAwIDAwICBNSC4uLi4uLk1BTEwu
Li4uCiAgICA2NjEwOiA5MyA1OSAwMCAwMCAwMCAwOCA0RCA0MSA0QyA0OCAwQyAwMCAwMCAwMSAw
MCAwOCAgLlkuLi4uTUFMSC4uLi4uLgogICAgNjYyMDogNDMgNTIgNTMgMzEgMTEgNEEgMEUgMEEg
RTYgODggMEQgMDAgMDIgMEMgMDAgMDAgIENSUzEuSi4uLi4uLi4uLi4KICAgIDY2MzA6IDAwIDAw
IDAwIDdGIDAwIDAwIDAwIDgwIDAwIDQ3IDAxIEY4IDBDIEY4IDBDIDAxICAuLi4uLi4uLi5HLi4u
Li4uCiAgICA2NjQwOiAwOCA4OCAwRCAwMCAwMSAwQyAwMyAwMCAwMCAwMCAwMCBGRiAwMiAwMCAw
MCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNjY1MDogMDMgODggMEQgMDAgMDEgMEMgMDMgMDAg
MDAgMDAgMDMgQUYgMDMgMDAgMDAgQjAgIC4uLi4uLi4uLi4uLi4uLi4KICAgIDY2NjA6IDAwIDg4
IDBEIDAwIDAxIDBDIDAzIDAwIDAwIEUwIDAzIEY3IDBDIDAwIDAwIDE4ICAuLi4uLi4uLi4uLi4u
Li4uCiAgICA2NjcwOiAwOSA4OCAwRCAwMCAwMSAwQyAwMyAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNjY4MDogMDAgODggMEQgMDAgMDEgMEMgMDMgMDAg
MDAgMDAgMEQgRkYgMEYgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAgIDY2OTA6IDAzIDg3
IDE3IDAwIDAwIDBDIDAzIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4u
Li4uCiAgICA2NkEwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCA4NyAxNyAwMCAw
MCAwQyAgLi4uLi4uLi4uLi4uLi4uLgogICAgNjZCMDogMDEgMDAgMDAgMDAgMDAgMDAgMDAgMEMg
MDAgRkYgRkYgMEQgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAgIDY2QzA6IDAwIDAw
IDAwIDAyIDAwIDg3IDE3IDAwIDAwIDBDIDAzIDAwIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4u
Li4uCiAgICA2NkQwOiAwMCAwMCAwMiBGRiBGRiBERiBGRiAwMCAwMCAwMCAwMCAwMCAwMCBFMCBG
RCA4QSAgLi4uLi4uLi4uLi4uLi4uLgogICAgNjZFMDogMkIgMDAgMDAgMEMgMDMgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgICsuLi4uLi4uLi4uLi4uLi4KICAgIDY2RjA6IDAwIDAw
IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4u
Li4uCiAgICA2NzAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCA3OSAw
MCAwOCAgLi4uLi4uLi4uLi4uLnkuLgogICAgNjcxMDogNDMgNTIgNTMgMzIgMTEgNDggMDkgMEEg
OTQgODggMEQgMDAgMDIgMEMgMDAgMDAgIENSUzIuSC4uLi4uLi4uLi4KICAgIDY3MjA6IDAwIDgw
IDAwIEZGIDAwIDAwIDAwIDgwIDAwIDg4IDBEIDAwIDAxIDBDIDAzIDAwICAuLi4uLi4uLi4uLi4u
Li4uCiAgICA2NzMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCA4OCAwRCAwMCAwMSAwQyAw
MyAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNjc0MDogMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAg
MDAgODcgMTcgMDAgMDAgMEMgMDMgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAgIDY3NTA6IDAwIDAw
IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4u
Li4uCiAgICA2NzYwOiAwMCAwMCAwMCA4NyAxNyAwMCAwMCAwQyAwMyAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNjc3MDogODAgRkYgRkYgRkYgRkYgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgODAgOEEgMkIgMDAgIC4uLi4uLi4uLi4uLi4uKy4KICAgIDY3ODA6IDAwIDBD
IDAzIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4u
Li4uCiAgICA2NzkwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNjdBMDogMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAg
MDAgMDAgMDAgNzkgMDAgMTQgMEIgNUYgIC4uLi4uLi4uLi4ueS4uLl8KICAgIDY3QjA6IDUzIDU0
IDQxIDAwIEE0IDUzIDU0IDQxIDU2IDE0IDQ4IDNCIDVGIDQzIDUyIDUzICBTVEEuLlNUQVYuSDtf
Q1JTCiAgICA2N0MwOiAwOCBBMCA0QSAyMSA0MyA1MCA1MiA0MiA4QiA0MyA1MiA1MyAzMSAwQSAw
OCA0RCAgLi5KIUNQUkIuQ1JTMS4uTQogICAgNjdEMDogNDkgNEUgMzAgOEIgNDMgNTIgNTMgMzEg
MEEgMEEgNEQgNDEgNTggMzAgOEIgNDMgIElOMC5DUlMxLi5NQVgwLkMKICAgIDY3RTA6IDUyIDUz
IDMxIDBBIDBFIDRDIDQ1IDRFIDMwIDcwIDQyIDUyIDQyIDVGIDREIDQ5ICBSUzEuLkxFTjBwQlJC
X01JCiAgICA2N0YwOiA0RSAzMCA3MCA0MiA1MiA0QyA1RiA0QyA0NSA0RSAzMCA3MCA0QyA0NSA0
RSAzMCAgTjBwQlJMX0xFTjBwTEVOMAogICAgNjgwMDogNjAgNzIgNEQgNDkgNEUgMzAgNzYgNjAg
NEQgNDEgNTggMzAgQTAgNDkgMDYgOTEgIGByTUlOMHZgTUFYMC5JLi4KICAgIDY4MTA6IDkxIDkz
IDQ5IDQ1IDUyIDMwIDAxIDkzIDQ5IDQ1IDUyIDMxIDAxIDkxIDkzIDQ5ICAuLklFUjAuLklFUjEu
Li5JCiAgICA2ODIwOiA0NSA1MiAzMiAwMSA5MyA0OSA0NSA1MiAzMyAwMSA4QiA0MyA1MiA1MyAz
MSAwQSAgRVIyLi5JRVIzLi5DUlMxLgogICAgNjgzMDogMjIgNDkgNDIgNTggMzEgOEIgNDMgNTIg
NTMgMzEgMEEgMjYgNDkgNDIgNEMgMzEgICJJQlgxLkNSUzEuJklCTDEKICAgIDY4NDA6IDcwIDBC
IEU3IDAyIDQ5IDQyIDU4IDMxIDcwIDBCIEU4IDAyIDQ5IDQyIDRDIDMxICBwLi4uSUJYMXAuLi5J
QkwxCiAgICA2ODUwOiA4QiA0MyA1MiA1MyAzMSAwQSA0MCA0OSA0MiA0RCAzMiA4QiA0MyA1MiA1
MyAzMSAgLkNSUzEuQElCTTIuQ1JTMQogICAgNjg2MDogMEEgNDYgNDkgNDIgNEMgMzIgNzAgMEIg
MDAgMDQgNDkgNDIgNEQgMzIgNzAgMEIgIC5GSUJMMnAuLi5JQk0ycC4KICAgIDY4NzA6IEY4IDA4
IDQ5IDQyIDRDIDMyIDhCIDQzIDUyIDUzIDMxIDBBIDYwIDREIDQ5IDRFICAuLklCTDIuQ1JTMS5g
TUlOCiAgICA2ODgwOiAzMSA4QiA0MyA1MiA1MyAzMSAwQSA2MiA0RCA0MSA1OCAzMSA4QiA0MyA1
MiA1MyAgMS5DUlMxLmJNQVgxLkNSUwogICAgNjg5MDogMzEgMEEgNjYgNEMgNDUgNEUgMzEgNzAg
NDkgNEYgNDIgNUYgNEQgNDkgNEUgMzEgIDEuZkxFTjFwSU9CX01JTjEKICAgIDY4QTA6IDcwIDQ5
IDRGIDRDIDVGIDRDIDQ1IDRFIDMxIDcwIDRDIDQ1IDRFIDMxIDYwIDcyICBwSU9MX0xFTjFwTEVO
MWByCiAgICA2OEIwOiA0RCA0OSA0RSAzMSA3NiA2MCA0RCA0MSA1OCAzMSBBMCA0NCAwOSA5MSA5
MyA0QyAgTUlOMXZgTUFYMS5ELi4uTAogICAgNjhDMDogNTYgNDcgNDEgMDEgOTMgNEMgNTYgNDcg
NDEgMEEgNTUgQTAgNDMgMDggNTYgNDcgIFZHQS4uTFZHQS5VLkMuVkcKICAgIDY4RDA6IDQxIDQ2
IDhCIDQzIDUyIDUzIDMxIDBBIDUwIDQ5IDREIDRFIDMxIDhCIDQzIDUyICBBRi5DUlMxLlBJTU4x
LkNSCiAgICA2OEUwOiA1MyAzMSAwQSA1MiA0OSA0RCA1OCAzMSA4QiA0MyA1MiA1MyAzMSAwQSA1
NiA0OSAgUzEuUklNWDEuQ1JTMS5WSQogICAgNjhGMDogNEMgNEUgMzEgNzAgMEIgQjAgMDMgNDkg
NEQgNEUgMzEgNzAgMEIgREYgMDMgNDkgIExOMXAuLi5JTU4xcC4uLkkKICAgIDY5MDA6IDREIDU4
IDMxIDcwIDBBIDMwIDQ5IDRDIDRFIDMxIDhBIDQzIDUyIDUzIDMxIDBBICBNWDFwLjBJTE4xLkNS
UzEuCiAgICA2OTEwOiA3MiA1NiA0RCA0RSAzMSA4QSA0MyA1MiA1MyAzMSAwQSA3NiA1NiA0RCA1
OCAzMSAgclZNTjEuQ1JTMS52Vk1YMQogICAgNjkyMDogOEEgNDMgNTIgNTMgMzEgMEEgN0UgNTYg
NEMgNEUgMzEgNzAgMEMgMDAgMDAgMEEgIC5DUlMxLn5WTE4xcC4uLi4KICAgIDY5MzA6IDAwIDU2
IDREIDRFIDMxIDcwIDBDIEZGIEZGIDBCIDAwIDU2IDREIDU4IDMxIDcwICAuVk1OMXAuLi4uLlZN
WDFwCiAgICA2OTQwOiAwQyAwMCAwMCAwMiAwMCA1NiA0QyA0RSAzMSA3MCAwMCA1NiA0NyA0MSA0
NiA4QSAgLi4uLi5WTE4xcC5WR0FGLgogICAgNjk1MDogNDMgNTIgNTMgMzEgMEEgQTYgNEQgNDkg
NEUgMzMgOEEgNDMgNTIgNTMgMzEgMEEgIENSUzEuLk1JTjMuQ1JTMS4KICAgIDY5NjA6IEFBIDRE
IDQxIDU4IDMzIDhBIDQzIDUyIDUzIDMxIDBBIEIyIDRDIDQ1IDRFIDMzICAuTUFYMy5DUlMxLi5M
RU4zCiAgICA2OTcwOiA3MCA0RCA0MiA0MiA1RiA0RCA0OSA0RSAzMyA3MCA0RCA0MiA0QyA1RiA0
QyA0NSAgcE1CQl9NSU4zcE1CTF9MRQogICAgNjk4MDogNEUgMzMgNzAgNEMgNDUgNEUgMzMgNjAg
NzIgNEQgNDkgNEUgMzMgNzYgNjAgNEQgIE4zcExFTjNgck1JTjN2YE0KICAgIDY5OTA6IDQxIDU4
IDMzIDhGIDQzIDUyIDUzIDMxIDBBIEM0IDREIDQ5IDRFIDM4IDhGIDQzICBBWDMuQ1JTMS4uTUlO
OC5DCiAgICA2OUEwOiA1MiA1MyAzMSAwQSBDQyA0RCA0MSA1OCAzOCA4RiA0MyA1MiA1MyAzMSAw
QSBEQyAgUlMxLi5NQVg4LkNSUzEuLgogICAgNjlCMDogNEMgNDUgNEUgMzggNzAgNEQgNDEgNDIg
NEMgNEQgNDkgNEUgMzggNzAgNEQgNDEgIExFTjhwTUFCTE1JTjhwTUEKICAgIDY5QzA6IDRDIDRD
IDRDIDQ1IDRFIDM4IDcwIDRDIDQ1IDRFIDM4IDYwIDcyIDREIDQ5IDRFICBMTExFTjhwTEVOOGBy
TUlOCiAgICA2OUQwOiAzOCA3NiA2MCA0RCA0MSA1OCAzOCBBNCA0MyA1MiA1MyAzMSBBMSA0NSAx
OSA4QiAgOHZgTUFYOC5DUlMxLkUuLgogICAgNjlFMDogNDMgNTIgNTMgMzIgMEEgMDggNEQgNDkg
NEUgMzIgOEIgNDMgNTIgNTMgMzIgMEEgIENSUzIuLk1JTjIuQ1JTMi4KICAgIDY5RjA6IDBBIDRE
IDQxIDU4IDMyIDhCIDQzIDUyIDUzIDMyIDBBIDBFIDRDIDQ1IDRFIDMyICAuTUFYMi5DUlMyLi5M
RU4yCiAgICA2QTAwOiA3MCA0MiA1MiA0MiA1RiA0RCA0OSA0RSAzMiA3MCA0MiA1MiA0QyA1RiA0
QyA0NSAgcEJSQl9NSU4ycEJSTF9MRQogICAgNkExMDogNEUgMzIgNzAgNEMgNDUgNEUgMzIgNjEg
NzIgNEQgNDkgNEUgMzIgNzYgNjEgNEQgIE4ycExFTjJhck1JTjJ2YU0KICAgIDZBMjA6IDQxIDU4
IDMyIDhCIDQzIDUyIDUzIDMyIDBBIDI4IDREIDQ5IDRFIDM0IDhCIDQzICBBWDIuQ1JTMi4oTUlO
NC5DCiAgICA2QTMwOiA1MiA1MyAzMiAwQSAyQSA0RCA0MSA1OCAzNCA4QiA0MyA1MiA1MyAzMiAw
QSAyRSAgUlMyLipNQVg0LkNSUzIuLgogICAgNkE0MDogNEMgNDUgNEUgMzQgNzAgNDkgNEYgNDIg
NUYgNEQgNDkgNEUgMzQgNzAgNDkgNEYgIExFTjRwSU9CX01JTjRwSU8KICAgIDZBNTA6IDRDIDVG
IDRDIDQ1IDRFIDM0IDcwIDRDIDQ1IDRFIDM0IDYxIDcyIDREIDQ5IDRFICBMX0xFTjRwTEVONGFy
TUlOCiAgICA2QTYwOiAzNCA3NiA2MSA0RCA0MSA1OCAzNCBBMCA0RCAwNyA0QyA1NiA0NyA0MSA4
QiA0MyAgNHZhTUFYNC5NLkxWR0EuQwogICAgNkE3MDogNTIgNTMgMzIgMEEgMTggNDkgNEQgNEUg
MzIgOEIgNDMgNTIgNTMgMzIgMEEgMUEgIFJTMi4uSU1OMi5DUlMyLi4KICAgIDZBODA6IDQ5IDRE
IDU4IDMyIDhCIDQzIDUyIDUzIDMyIDBBIDFFIDQ5IDRDIDRFIDMyIDcwICBJTVgyLkNSUzIuLklM
TjJwCiAgICA2QTkwOiAwQiBCMCAwMyA0OSA0RCA0RSAzMiA3MCAwQiBERiAwMyA0OSA0RCA1OCAz
MiA3MCAgLi4uSU1OMnAuLi5JTVgycAogICAgNkFBMDogMEEgMzAgNDkgNEMgNEUgMzIgOEEgNDMg
NTIgNTMgMzIgMEEgM0EgNTYgNEQgNEUgIC4wSUxOMi5DUlMyLjpWTU4KICAgIDZBQjA6IDMyIDhB
IDQzIDUyIDUzIDMyIDBBIDNFIDU2IDREIDU4IDMyIDhBIDQzIDUyIDUzICAyLkNSUzIuPlZNWDIu
Q1JTCiAgICA2QUMwOiAzMiAwQSA0NiA1NiA0QyA0RSAzMiA3MCAwQyAwMCAwMCAwQSAwMCA1NiA0
RCA0RSAgMi5GVkxOMnAuLi4uLlZNTgogICAgNkFEMDogMzIgNzAgMEMgRkYgRkYgMEIgMDAgNTYg
NEQgNTggMzIgNzAgMEMgMDAgMDAgMDIgIDJwLi4uLi5WTVgycC4uLi4KICAgIDZBRTA6IDAwIDU2
IDRDIDRFIDMyIDhBIDQzIDUyIDUzIDMyIDBBIDU0IDREIDQ5IDRFIDM1ICAuVkxOMi5DUlMyLlRN
SU41CiAgICA2QUYwOiA4QSA0MyA1MiA1MyAzMiAwQSA1OCA0RCA0MSA1OCAzNSA4QSA0MyA1MiA1
MyAzMiAgLkNSUzIuWE1BWDUuQ1JTMgogICAgNkIwMDogMEEgNjAgNEMgNDUgNEUgMzUgNzAgNEQg
NDIgNDIgNUYgNEQgNDkgNEUgMzUgNzAgIC5gTEVONXBNQkJfTUlONXAKICAgIDZCMTA6IDREIDQy
IDRDIDVGIDRDIDQ1IDRFIDM1IDcwIDRDIDQ1IDRFIDM1IDYxIDcyIDREICBNQkxfTEVONXBMRU41
YXJNCiAgICA2QjIwOiA0OSA0RSAzNSA3NiA2MSA0RCA0MSA1OCAzNSA4RiA0MyA1MiA1MyAzMiAw
QSA3MiAgSU41dmFNQVg1LkNSUzIucgogICAgNkIzMDogNEQgNDkgNEUgMzkgOEYgNDMgNTIgNTMg
MzIgMEEgN0EgNEQgNDEgNTggMzkgOEYgIE1JTjkuQ1JTMi56TUFYOS4KICAgIDZCNDA6IDQzIDUy
IDUzIDMyIDBBIDhBIDRDIDQ1IDRFIDM5IDcwIDREIDQxIDQyIDRDIDREICBDUlMyLi5MRU45cE1B
QkxNCiAgICA2QjUwOiA0OSA0RSAzOSA3MCA0RCA0MSA0QyA0QyA0QyA0NSA0RSAzOSA3MCA0QyA0
NSA0RSAgSU45cE1BTExMRU45cExFTgogICAgNkI2MDogMzkgNjAgNzIgNEQgNDkgNEUgMzkgNzYg
NjAgNEQgNDEgNTggMzkgQTQgNDMgNTIgIDlgck1JTjl2YE1BWDkuQ1IKICAgIDZCNzA6IDUzIDMy
IDE0IDQyIDEzIDVGIDRGIDUzIDQzIDBDIDA4IDUzIDU1IDUwIDUwIDAwICBTMi5CLl9PU0MuLlNV
UFAuCiAgICA2QjgwOiAwOCA0MyA1NCA1MiA0QyAwMCA4QSA2QiAwMCA0MyA0NCA1NyAzMSA4QSA2
QiAwQSAgLkNUUkwuLmsuQ0RXMS5rLgogICAgNkI5MDogMDQgNDMgNDQgNTcgMzIgOEEgNkIgMEEg
MDggNDMgNDQgNTcgMzMgQTAgNDggMEYgIC5DRFcyLmsuLkNEVzMuSC4KICAgIDZCQTA6IDkzIDY4
IDExIDEzIDBBIDEwIDVCIDREIERCIDMzIEY3IDFGIDFDIDQwIDk2IDU3ICAuaC4uLi5bTS4zLi4u
QC5XCiAgICA2QkIwOiA3NCA0MSBDMCAzRCBENyA2NiA3MCA0MyA0NCA1NyAzMiA1MyA1NSA1MCA1
MCA3MCAgdEEuPS5mcENEVzJTVVBQcAogICAgNkJDMDogNDMgNDQgNTcgMzMgNDMgNTQgNTIgNEMg
QTAgMTggOTIgOTMgN0IgNTMgNTUgNTAgIENEVzNDVFJMLi4uLntTVVAKICAgIDZCRDA6IDUwIDBB
IDE2IDAwIDBBIDE2IDdCIDQzIDU0IDUyIDRDIDBBIDFFIDQzIDU0IDUyICBQLi4uLi57Q1RSTC4u
Q1RSCiAgICA2QkUwOiA0QyBBMCAxMSA5MiA1MCA0NSA0OCA1MCA3QiA0MyA1NCA1MiA0QyAwQSAx
RSA0MyAgTC4uLlBFSFB7Q1RSTC4uQwogICAgNkJGMDogNTQgNTIgNEMgQTAgMTEgOTIgNTMgNDgg
NTAgNDMgN0IgNDMgNTQgNTIgNEMgMEEgIFRSTC4uLlNIUEN7Q1RSTC4KICAgIDZDMDA6IDFEIDQz
IDU0IDUyIDRDIEEwIDExIDkyIDUwIDQ1IDUwIDREIDdCIDQzIDU0IDUyICAuQ1RSTC4uLlBFUE17
Q1RSCiAgICA2QzEwOiA0QyAwQSAxQiA0MyA1NCA1MiA0QyBBMCAxMSA5MiA1MCA0NSA0NSA1MiA3
QiA0MyAgTC4uQ1RSTC4uLlBFRVJ7QwogICAgNkMyMDogNTQgNTIgNEMgMEEgMTUgNDMgNTQgNTIg
NEMgQTAgMTEgOTIgNTAgNDUgNDMgNTMgIFRSTC4uQ1RSTC4uLlBFQ1MKICAgIDZDMzA6IDdCIDQz
IDU0IDUyIDRDIDBBIDBGIDQzIDU0IDUyIDRDIEEwIDEwIDkyIDkzIDY5ICB7Q1RSTC4uQ1RSTC4u
Li5pCiAgICA2QzQwOiAwMSA3RCA0MyA0NCA1NyAzMSAwQSAwOCA0MyA0NCA1NyAzMSBBMCAxNSA1
QiAxMiAgLn1DRFcxLi5DRFcxLi5bLgogICAgNkM1MDogNTAgNEYgNTMgNDMgMDAgN0IgNDMgNTQg
NTIgNEMgNTAgNEYgNTMgNDMgNDMgNTQgIFBPU0Mue0NUUkxQT1NDQ1QKICAgIDZDNjA6IDUyIDRD
IEEwIDE2IDkyIDkzIDQzIDQ0IDU3IDMzIDQzIDU0IDUyIDRDIDdEIDQzICBSTC4uLi5DRFczQ1RS
TH1DCiAgICA2QzcwOiA0NCA1NyAzMSAwQSAxMCA0MyA0NCA1NyAzMSA3MCA0MyA1NCA1MiA0QyA0
MyA0NCAgRFcxLi5DRFcxcENUUkxDRAogICAgNkM4MDogNTcgMzMgQTAgMTEgNUIgMTIgNTAgNEYg
NTMgNTMgMDAgNzAgNTMgNTUgNTAgNTAgIFczLi5bLlBPU1MucFNVUFAKICAgIDZDOTA6IDUwIDRG
IDUzIDUzIEE0IDZCIEExIDBFIDdEIDQzIDQ0IDU3IDMxIDBBIDA0IDQzICBQT1NTLmsuLn1DRFcx
Li5DCiAgICA2Q0EwOiA0NCA1NyAzMSBBNCA2QiA1QiA4MiAwQyA0NCAzMCAzNiAzNyAwOCA1RiA0
MSA0NCAgRFcxLmtbLi5EMDY3Ll9BRAogICAgNkNCMDogNTIgMEEgMDIgNUIgODIgMEMgNDQgMzAg
MzYgMzggMDggNUYgNDEgNDQgNTIgMEEgIFIuLlsuLkQwNjguX0FEUi4KICAgIDZDQzA6IDAzIDVC
IDgyIDQ2IDA0IDQ3IDUwIDUwIDMwIDA4IDVGIDQxIDQ0IDUyIDBDIDAxICAuWy5GLkdQUDAuX0FE
Ui4uCiAgICA2Q0QwOiAwMCAwMSAwMCAxNCAwRiA1RiA1MCA1MiA1NyAwMCBBNCA0NyA1MCA1MiA1
NyAwQSAgLi4uLi5fUFJXLi5HUFJXLgogICAgNkNFMDogMDggMEEgMDQgMTQgMTYgNUYgNTAgNTIg
NTQgMDAgQTAgMEEgNTAgNDkgNDMgNEQgIC4uLi4uX1BSVC4uLlBJQ00KICAgIDZDRjA6IEE0IDQ3
IDMwIDM2IDM5IEE0IDUwIDMwIDM2IDM5IDVCIDgyIDBEIDQ0IDMwIDQ0ICAuRzA2OS5QMDY5Wy4u
RDBECiAgICA2RDAwOiAzOCAwOCA1RiA0MSA0NCA1MiAwQiBGRiBGRiA1QiA4MiAzNSA0NyA1MCA1
MCAzMSAgOC5fQURSLi4uWy41R1BQMQogICAgNkQxMDogMDggNUYgNDEgNDQgNTIgMEMgMDIgMDAg
MDEgMDAgMTQgMTYgNUYgNTAgNTIgNTQgIC5fQURSLi4uLi4uLl9QUlQKICAgIDZEMjA6IDAwIEEw
IDBBIDUwIDQ5IDQzIDREIEE0IDQ3IDMwIDM2IDQxIEE0IDUwIDMwIDM2ICAuLi5QSUNNLkcwNkEu
UDA2CiAgICA2RDMwOiA0MSA1QiA4MiAwRCA0NCAzMCA0NCAzOSAwOCA1RiA0MSA0NCA1MiAwQiBG
RiBGRiAgQVsuLkQwRDkuX0FEUi4uLgogICAgNkQ0MDogNUIgODIgNDYgMDQgNDcgNTAgNTAgMzIg
MDggNUYgNDEgNDQgNTIgMEMgMDMgMDAgIFsuRi5HUFAyLl9BRFIuLi4KICAgIDZENTA6IDAxIDAw
IDE0IDBGIDVGIDUwIDUyIDU3IDAwIEE0IDQ3IDUwIDUyIDU3IDBBIDA4ICAuLi4uX1BSVy4uR1BS
Vy4uCiAgICA2RDYwOiAwQSAwNCAxNCAxNiA1RiA1MCA1MiA1NCAwMCBBMCAwQSA1MCA0OSA0MyA0
RCBBNCAgLi4uLl9QUlQuLi5QSUNNLgogICAgNkQ3MDogNDcgMzAgMzYgNDIgQTQgNTAgMzAgMzYg
NDIgNUIgODIgMEQgNDQgMzAgNDQgNDEgIEcwNkIuUDA2QlsuLkQwREEKICAgIDZEODA6IDA4IDVG
IDQxIDQ0IDUyIDBCIEZGIEZGIDVCIDgyIDQ2IDA0IDQ3IDUwIDUwIDMzICAuX0FEUi4uLlsuRi5H
UFAzCiAgICA2RDkwOiAwOCA1RiA0MSA0NCA1MiAwQyAwNCAwMCAwMSAwMCAxNCAwRiA1RiA1MCA1
MiA1NyAgLl9BRFIuLi4uLi4uX1BSVwogICAgNkRBMDogMDAgQTQgNDcgNTAgNTIgNTcgMEEgMDgg
MEEgMDQgMTQgMTYgNUYgNTAgNTIgNTQgIC4uR1BSVy4uLi4uLl9QUlQKICAgIDZEQjA6IDAwIEEw
IDBBIDUwIDQ5IDQzIDREIEE0IDQ3IDMwIDM2IDQzIEE0IDUwIDMwIDM2ICAuLi5QSUNNLkcwNkMu
UDA2CiAgICA2REMwOiA0MyA1QiA4MiAwRCA0NCAzMCA0NCA0MiAwOCA1RiA0MSA0NCA1MiAwQiBG
RiBGRiAgQ1suLkQwREIuX0FEUi4uLgogICAgNkREMDogNUIgODIgNDYgMDQgNDcgNTAgNTAgMzQg
MDggNUYgNDEgNDQgNTIgMEMgMDUgMDAgIFsuRi5HUFA0Ll9BRFIuLi4KICAgIDZERTA6IDAxIDAw
IDE0IDBGIDVGIDUwIDUyIDU3IDAwIEE0IDQ3IDUwIDUyIDU3IDBBIDA4ICAuLi4uX1BSVy4uR1BS
Vy4uCiAgICA2REYwOiAwQSAwNCAxNCAxNiA1RiA1MCA1MiA1NCAwMCBBMCAwQSA1MCA0OSA0MyA0
RCBBNCAgLi4uLl9QUlQuLi5QSUNNLgogICAgNkUwMDogNDcgMzAgMzYgNDQgQTQgNTAgMzAgMzYg
NDQgNUIgODIgMEQgNDQgMzAgNDQgNDMgIEcwNkQuUDA2RFsuLkQwREMKICAgIDZFMTA6IDA4IDVG
IDQxIDQ0IDUyIDBCIEZGIEZGIDVCIDgyIDQ2IDA0IDQ3IDUwIDUwIDM1ICAuX0FEUi4uLlsuRi5H
UFA1CiAgICA2RTIwOiAwOCA1RiA0MSA0NCA1MiAwQyAwNiAwMCAwMSAwMCAxNCAwRiA1RiA1MCA1
MiA1NyAgLl9BRFIuLi4uLi4uX1BSVwogICAgNkUzMDogMDAgQTQgNDcgNTAgNTIgNTcgMEEgMDgg
MEEgMDQgMTQgMTYgNUYgNTAgNTIgNTQgIC4uR1BSVy4uLi4uLl9QUlQKICAgIDZFNDA6IDAwIEEw
IDBBIDUwIDQ5IDQzIDREIEE0IDQ3IDMwIDM2IDQ1IEE0IDUwIDMwIDM2ICAuLi5QSUNNLkcwNkUu
UDA2CiAgICA2RTUwOiA0NSA1QiA4MiAwRCA0NCAzMCA0NCA0NCAwOCA1RiA0MSA0NCA1MiAwQiBG
RiBGRiAgRVsuLkQwREQuX0FEUi4uLgogICAgNkU2MDogNUIgODIgNDYgMDQgNDcgNTAgNTAgMzYg
MDggNUYgNDEgNDQgNTIgMEMgMDcgMDAgIFsuRi5HUFA2Ll9BRFIuLi4KICAgIDZFNzA6IDAxIDAw
IDE0IDBGIDVGIDUwIDUyIDU3IDAwIEE0IDQ3IDUwIDUyIDU3IDBBIDA4ICAuLi4uX1BSVy4uR1BS
Vy4uCiAgICA2RTgwOiAwQSAwNCAxNCAxNiA1RiA1MCA1MiA1NCAwMCBBMCAwQSA1MCA0OSA0MyA0
RCBBNCAgLi4uLl9QUlQuLi5QSUNNLgogICAgNkU5MDogNDcgMzAgMzYgNDYgQTQgNTAgMzAgMzYg
NDYgNUIgODIgMEQgNDQgMzAgNDQgNDUgIEcwNkYuUDA2RlsuLkQwREUKICAgIDZFQTA6IDA4IDVG
IDQxIDQ0IDUyIDBCIEZGIEZGIDVCIDgyIDQ2IDA0IDQ3IDUwIDUwIDM3ICAuX0FEUi4uLlsuRi5H
UFA3CiAgICA2RUIwOiAwOCA1RiA0MSA0NCA1MiAwQyAwMSAwMCAwMiAwMCAxNCAwRiA1RiA1MCA1
MiA1NyAgLl9BRFIuLi4uLi4uX1BSVwogICAgNkVDMDogMDAgQTQgNDcgNTAgNTIgNTcgMEEgMDgg
MEEgMDQgMTQgMTYgNUYgNTAgNTIgNTQgIC4uR1BSVy4uLi4uLl9QUlQKICAgIDZFRDA6IDAwIEEw
IDBBIDUwIDQ5IDQzIDREIEE0IDQ3IDMwIDM3IDMwIEE0IDUwIDMwIDM3ICAuLi5QSUNNLkcwNzAu
UDA3CiAgICA2RUUwOiAzMCA1QiA4MiAwRCA0NCAzMCA0NCA0NiAwOCA1RiA0MSA0NCA1MiAwQiBG
RiBGRiAgMFsuLkQwREYuX0FEUi4uLgogICAgNkVGMDogNUIgODIgNDYgMDQgNDcgNTAgNTAgMzgg
MDggNUYgNDEgNDQgNTIgMEMgMDIgMDAgIFsuRi5HUFA4Ll9BRFIuLi4KICAgIDZGMDA6IDAyIDAw
IDE0IDBGIDVGIDUwIDUyIDU3IDAwIEE0IDQ3IDUwIDUyIDU3IDBBIDA4ICAuLi4uX1BSVy4uR1BS
Vy4uCiAgICA2RjEwOiAwQSAwNCAxNCAxNiA1RiA1MCA1MiA1NCAwMCBBMCAwQSA1MCA0OSA0MyA0
RCBBNCAgLi4uLl9QUlQuLi5QSUNNLgogICAgNkYyMDogNDcgMzAgMzcgMzEgQTQgNTAgMzAgMzcg
MzEgNUIgODIgMEQgNDQgMzAgNDUgMzggIEcwNzEuUDA3MVsuLkQwRTgKICAgIDZGMzA6IDA4IDVG
IDQxIDQ0IDUyIDBCIEZGIEZGIDVCIDgyIDQ2IDA0IDQ3IDUwIDUwIDM5ICAuX0FEUi4uLlsuRi5H
UFA5CiAgICA2RjQwOiAwOCA1RiA0MSA0NCA1MiAwQyAwMSAwMCAwMyAwMCAxNCAwRiA1RiA1MCA1
MiA1NyAgLl9BRFIuLi4uLi4uX1BSVwogICAgNkY1MDogMDAgQTQgNDcgNTAgNTIgNTcgMEEgMDgg
MEEgMDQgMTQgMTYgNUYgNTAgNTIgNTQgIC4uR1BSVy4uLi4uLl9QUlQKICAgIDZGNjA6IDAwIEEw
IDBBIDUwIDQ5IDQzIDREIEE0IDQ3IDMwIDM3IDMyIEE0IDUwIDMwIDM3ICAuLi5QSUNNLkcwNzIu
UDA3CiAgICA2RjcwOiAzMiA1QiA4MiAwRCA0NCAzMCA0NSAzMCAwOCA1RiA0MSA0NCA1MiAwQiBG
RiBGRiAgMlsuLkQwRTAuX0FEUi4uLgogICAgNkY4MDogNUIgODIgNDYgMDQgNDcgNTAgNTAgNDEg
MDggNUYgNDEgNDQgNTIgMEMgMDIgMDAgIFsuRi5HUFBBLl9BRFIuLi4KICAgIDZGOTA6IDAzIDAw
IDE0IDBGIDVGIDUwIDUyIDU3IDAwIEE0IDQ3IDUwIDUyIDU3IDBBIDA4ICAuLi4uX1BSVy4uR1BS
Vy4uCiAgICA2RkEwOiAwQSAwNCAxNCAxNiA1RiA1MCA1MiA1NCAwMCBBMCAwQSA1MCA0OSA0MyA0
RCBBNCAgLi4uLl9QUlQuLi5QSUNNLgogICAgNkZCMDogNDcgMzAgMzcgMzMgQTQgNTAgMzAgMzcg
MzMgNUIgODIgMEQgNDQgMzAgNDUgMzEgIEcwNzMuUDA3M1suLkQwRTEKICAgIDZGQzA6IDA4IDVG
IDQxIDQ0IDUyIDBCIEZGIEZGIDVCIDgyIDQ2IDA0IDQ3IDUwIDUwIDQyICAuX0FEUi4uLlsuRi5H
UFBCCiAgICA2RkQwOiAwOCA1RiA0MSA0NCA1MiAwQyAwMyAwMCAwMyAwMCAxNCAwRiA1RiA1MCA1
MiA1NyAgLl9BRFIuLi4uLi4uX1BSVwogICAgNkZFMDogMDAgQTQgNDcgNTAgNTIgNTcgMEEgMDgg
MEEgMDQgMTQgMTYgNUYgNTAgNTIgNTQgIC4uR1BSVy4uLi4uLl9QUlQKICAgIDZGRjA6IDAwIEEw
IDBBIDUwIDQ5IDQzIDREIEE0IDQ3IDMwIDM3IDM0IEE0IDUwIDMwIDM3ICAuLi5QSUNNLkcwNzQu
UDA3CiAgICA3MDAwOiAzNCA1QiA4MiAwRCA0NCAzMCA0NSAzMiAwOCA1RiA0MSA0NCA1MiAwQiBG
RiBGRiAgNFsuLkQwRTIuX0FEUi4uLgogICAgNzAxMDogNUIgODIgNDYgMDQgNDcgNTAgNTAgNDMg
MDggNUYgNDEgNDQgNTIgMEMgMDQgMDAgIFsuRi5HUFBDLl9BRFIuLi4KICAgIDcwMjA6IDAzIDAw
IDE0IDBGIDVGIDUwIDUyIDU3IDAwIEE0IDQ3IDUwIDUyIDU3IDBBIDA4ICAuLi4uX1BSVy4uR1BS
Vy4uCiAgICA3MDMwOiAwQSAwNCAxNCAxNiA1RiA1MCA1MiA1NCAwMCBBMCAwQSA1MCA0OSA0MyA0
RCBBNCAgLi4uLl9QUlQuLi5QSUNNLgogICAgNzA0MDogNDcgMzAgMzcgMzUgQTQgNTAgMzAgMzcg
MzUgNUIgODIgMEQgNDQgMzAgNDUgMzMgIEcwNzUuUDA3NVsuLkQwRTMKICAgIDcwNTA6IDA4IDVG
IDQxIDQ0IDUyIDBCIEZGIEZGIDVCIDgyIDQ2IDA0IDQ3IDUwIDUwIDQ0ICAuX0FEUi4uLlsuRi5H
UFBECiAgICA3MDYwOiAwOCA1RiA0MSA0NCA1MiAwQyAwNSAwMCAwMyAwMCAxNCAwRiA1RiA1MCA1
MiA1NyAgLl9BRFIuLi4uLi4uX1BSVwogICAgNzA3MDogMDAgQTQgNDcgNTAgNTIgNTcgMEEgMDgg
MEEgMDQgMTQgMTYgNUYgNTAgNTIgNTQgIC4uR1BSVy4uLi4uLl9QUlQKICAgIDcwODA6IDAwIEEw
IDBBIDUwIDQ5IDQzIDREIEE0IDQ3IDMwIDM3IDM2IEE0IDUwIDMwIDM3ICAuLi5QSUNNLkcwNzYu
UDA3CiAgICA3MDkwOiAzNiA1QiA4MiAwRCA0NCAzMCA0NSAzNCAwOCA1RiA0MSA0NCA1MiAwQiBG
RiBGRiAgNlsuLkQwRTQuX0FEUi4uLgogICAgNzBBMDogNUIgODIgNDYgMDQgNDcgNTAgNTAgNDUg
MDggNUYgNDEgNDQgNTIgMEMgMDYgMDAgIFsuRi5HUFBFLl9BRFIuLi4KICAgIDcwQjA6IDAzIDAw
IDE0IDBGIDVGIDUwIDUyIDU3IDAwIEE0IDQ3IDUwIDUyIDU3IDBBIDA4ICAuLi4uX1BSVy4uR1BS
Vy4uCiAgICA3MEMwOiAwQSAwNCAxNCAxNiA1RiA1MCA1MiA1NCAwMCBBMCAwQSA1MCA0OSA0MyA0
RCBBNCAgLi4uLl9QUlQuLi5QSUNNLgogICAgNzBEMDogNDcgMzAgMzcgMzcgQTQgNTAgMzAgMzcg
MzcgNUIgODIgMEQgNDQgMzAgNDUgMzUgIEcwNzcuUDA3N1suLkQwRTUKICAgIDcwRTA6IDA4IDVG
IDQxIDQ0IDUyIDBCIEZGIEZGIDVCIDgyIDQ2IDA0IDQ3IDUwIDUwIDQ2ICAuX0FEUi4uLlsuRi5H
UFBGCiAgICA3MEYwOiAwOCA1RiA0MSA0NCA1MiAwQyAwNyAwMCAwMyAwMCAxNCAwRiA1RiA1MCA1
MiA1NyAgLl9BRFIuLi4uLi4uX1BSVwogICAgNzEwMDogMDAgQTQgNDcgNTAgNTIgNTcgMEEgMDgg
MEEgMDQgMTQgMTYgNUYgNTAgNTIgNTQgIC4uR1BSVy4uLi4uLl9QUlQKICAgIDcxMTA6IDAwIEEw
IDBBIDUwIDQ5IDQzIDREIEE0IDQ3IDMwIDM3IDM4IEE0IDUwIDMwIDM3ICAuLi5QSUNNLkcwNzgu
UDA3CiAgICA3MTIwOiAzOCA1QiA4MiAwRCA0NCAzMCA0NSAzNiAwOCA1RiA0MSA0NCA1MiAwQiBG
RiBGRiAgOFsuLkQwRTYuX0FEUi4uLgogICAgNzEzMDogNUIgODIgNDYgMDQgNDcgNTAgNTAgNDcg
MDggNUYgNDEgNDQgNTIgMEMgMDEgMDAgIFsuRi5HUFBHLl9BRFIuLi4KICAgIDcxNDA6IDA0IDAw
IDE0IDBGIDVGIDUwIDUyIDU3IDAwIEE0IDQ3IDUwIDUyIDU3IDBBIDA4ICAuLi4uX1BSVy4uR1BS
Vy4uCiAgICA3MTUwOiAwQSAwNCAxNCAxNiA1RiA1MCA1MiA1NCAwMCBBMCAwQSA1MCA0OSA0MyA0
RCBBNCAgLi4uLl9QUlQuLi5QSUNNLgogICAgNzE2MDogNDcgMzAgMzcgMzkgQTQgNTAgMzAgMzcg
MzkgNUIgODIgMEQgNDQgMzAgNDUgMzcgIEcwNzkuUDA3OVsuLkQwRTcKICAgIDcxNzA6IDA4IDVG
IDQxIDQ0IDUyIDBCIEZGIEZGIDVCIDgyIDQ2IDA0IDQ3IDUwIDUwIDQ4ICAuX0FEUi4uLlsuRi5H
UFBICiAgICA3MTgwOiAwOCA1RiA0MSA0NCA1MiAwQyAwMiAwMCAwNCAwMCAxNCAwRiA1RiA1MCA1
MiA1NyAgLl9BRFIuLi4uLi4uX1BSVwogICAgNzE5MDogMDAgQTQgNDcgNTAgNTIgNTcgMEEgMDgg
MEEgMDQgMTQgMTYgNUYgNTAgNTIgNTQgIC4uR1BSVy4uLi4uLl9QUlQKICAgIDcxQTA6IDAwIEEw
IDBBIDUwIDQ5IDQzIDREIEE0IDQ3IDMwIDM3IDQxIEE0IDUwIDMwIDM3ICAuLi5QSUNNLkcwN0Eu
UDA3CiAgICA3MUIwOiA0MSA1QiA4MiAwRCA0NCAzMCA0NSAzOSAwOCA1RiA0MSA0NCA1MiAwQiBG
RiBGRiAgQVsuLkQwRTkuX0FEUi4uLgogICAgNzFDMDogNUIgODIgNDQgMDQgNDcgNTAgMzEgMzUg
MDggNUYgNDEgNDQgNTIgMEMgMDEgMDAgIFsuRC5HUDE1Ll9BRFIuLi4KICAgIDcxRDA6IDA1IDAw
IDE0IDBGIDVGIDUwIDUyIDU3IDAwIEE0IDQ3IDUwIDUyIDU3IDBBIDA4ICAuLi4uX1BSVy4uR1BS
Vy4uCiAgICA3MUUwOiAwQSAwNCAxNCAxNiA1RiA1MCA1MiA1NCAwMCBBMCAwQSA1MCA0OSA0MyA0
RCBBNCAgLi4uLl9QUlQuLi5QSUNNLgogICAgNzFGMDogNDcgMzAgMzcgNDIgQTQgNTAgMzAgMzcg
NDIgNUIgODIgMEIgNDQgMzAgNDUgNDQgIEcwN0IuUDA3QlsuLkQwRUQKICAgIDcyMDA6IDA4IDVG
IDQxIDQ0IDUyIDAwIDVCIDgyIDQ2IDA0IDQ3IDUwIDMyIDM1IDA4IDVGICAuX0FEUi5bLkYuR1Ay
NS5fCiAgICA3MjEwOiA0MSA0NCA1MiAwQyAwMiAwMCAwNSAwMCAxNCAwRiA1RiA1MCA1MiA1NyAw
MCBBNCAgQURSLi4uLi4uLl9QUlcuLgogICAgNzIyMDogNDcgNTAgNTIgNTcgMEEgMDggMEEgMDQg
MTQgMTYgNUYgNTAgNTIgNTQgMDAgQTAgIEdQUlcuLi4uLi5fUFJULi4KICAgIDcyMzA6IDBBIDUw
IDQ5IDQzIDREIEE0IDQ3IDMwIDM3IDQzIEE0IDUwIDMwIDM3IDQzIDVCICAuUElDTS5HMDdDLlAw
N0NbCiAgICA3MjQwOiA4MiAwRCA0NCAzMCA0NSA0MSAwOCA1RiA0MSA0NCA1MiAwQiBGRiBGRiA1
QiA4MiAgLi5EMEVBLl9BRFIuLi5bLgogICAgNzI1MDogNDYgMDQgNDcgNTAgMzMgMzUgMDggNUYg
NDEgNDQgNTIgMEMgMDMgMDAgMDUgMDAgIEYuR1AzNS5fQURSLi4uLi4KICAgIDcyNjA6IDE0IDBG
IDVGIDUwIDUyIDU3IDAwIEE0IDQ3IDUwIDUyIDU3IDBBIDA4IDBBIDA0ICAuLl9QUlcuLkdQUlcu
Li4uCiAgICA3MjcwOiAxNCAxNiA1RiA1MCA1MiA1NCAwMCBBMCAwQSA1MCA0OSA0MyA0RCBBNCA0
NyAzMCAgLi5fUFJULi4uUElDTS5HMAogICAgNzI4MDogMzcgNDQgQTQgNTAgMzAgMzcgNDQgNUIg
ODIgMEQgNDQgMzAgNDUgNDIgMDggNUYgIDdELlAwN0RbLi5EMEVCLl8KICAgIDcyOTA6IDQxIDQ0
IDUyIDBCIEZGIEZGIDVCIDgyIDQ2IDA0IDQ3IDUwIDM0IDM1IDA4IDVGICBBRFIuLi5bLkYuR1A0
NS5fCiAgICA3MkEwOiA0MSA0NCA1MiAwQyAwNCAwMCAwNSAwMCAxNCAwRiA1RiA1MCA1MiA1NyAw
MCBBNCAgQURSLi4uLi4uLl9QUlcuLgogICAgNzJCMDogNDcgNTAgNTIgNTcgMEEgMDggMEEgMDQg
MTQgMTYgNUYgNTAgNTIgNTQgMDAgQTAgIEdQUlcuLi4uLi5fUFJULi4KICAgIDcyQzA6IDBBIDUw
IDQ5IDQzIDREIEE0IDQ3IDMwIDM3IDQ1IEE0IDUwIDMwIDM3IDQ1IDVCICAuUElDTS5HMDdFLlAw
N0VbCiAgICA3MkQwOiA4MiAwRCA0NCAzMCA0NSA0MyAwOCA1RiA0MSA0NCA1MiAwQiBGRiBGRiA1
QiA4MiAgLi5EMEVDLl9BRFIuLi5bLgogICAgNzJFMDogNEQgMTAgNDcgNTAgMzEgMzcgMDggNUYg
NDEgNDQgNTIgMEMgMDEgMDAgMDcgMDAgIE0uR1AxNy5fQURSLi4uLi4KICAgIDcyRjA6IDE0IDBG
IDVGIDUwIDUyIDU3IDAwIEE0IDQ3IDUwIDUyIDU3IDBBIDBCIDBBIDA0ICAuLl9QUlcuLkdQUlcu
Li4uCiAgICA3MzAwOiAxNCAxNiA1RiA1MCA1MiA1NCAwMCBBMCAwQSA1MCA0OSA0MyA0RCBBNCA0
NyAzMCAgLi5fUFJULi4uUElDTS5HMAogICAgNzMxMDogMzcgNDYgQTQgNTAgMzAgMzcgNDYgNUIg
ODIgMEIgNDQgMzAgMzggMzAgMDggNUYgIDdGLlAwN0ZbLi5EMDgwLl8KICAgIDczMjA6IDQxIDQ0
IDUyIDAwIDVCIDgyIDBCIDQ0IDMwIDM4IDMxIDA4IDVGIDQxIDQ0IDUyICBBRFIuWy4uRDA4MS5f
QURSCiAgICA3MzMwOiAwMSA1QiA4MiAwQyA0NCAzMCAzOCAzMiAwOCA1RiA0MSA0NCA1MiAwQSAw
MiA1QiAgLlsuLkQwODIuX0FEUi4uWwogICAgNzM0MDogODIgMEMgNDQgMzAgMzggMzMgMDggNUYg
NDEgNDQgNTIgMEEgMDMgNUIgODIgMEMgIC4uRDA4My5fQURSLi5bLi4KICAgIDczNTA6IDU4IDQ4
IDQzIDMwIDA4IDVGIDQxIDQ0IDUyIDBBIDA0IDVCIDgyIDQ0IDA3IDUwICBYSEMwLl9BRFIuLlsu
RC5QCiAgICA3MzYwOiA1MyA1MCA1RiAwOCA1RiA0MSA0NCA1MiAwQSAwNSAwOCA1RiA0OCA0OSA0
NCAwQyAgU1BfLl9BRFIuLi5fSElELgogICAgNzM3MDogNDEgRDAgMEMgMDIgMDggNTAgNTMgNTAg
NDIgMEMgMDAgMDAgMjAgREYgMDggNUYgIEEuLi4uUFNQQi4uLiAuLl8KICAgIDczODA6IDUzIDU0
IDQxIDBBIDBGIDA4IDQzIDUyIDUzIDVGIDExIDExIDBBIDBFIDg2IDA5ICBTVEEuLi5DUlNfLi4u
Li4uCiAgICA3MzkwOiAwMCAwMSAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCA3OSAwMCAxNCAzNCA1
RiA0MyAgLi4uLi4uLi4uLnkuLjRfQwogICAgNzNBMDogNTIgNTMgMDAgOEEgNDMgNTIgNTMgNUYg
MEEgMDQgNTAgNDIgNDEgNTMgOEEgNDMgIFJTLi5DUlNfLi5QQkFTLkMKICAgIDczQjA6IDUyIDUz
IDVGIDBBIDA4IDUwIDRDIDQ1IDRFIDcwIDUwIDUzIDUwIDQyIDUwIDQyICBSU18uLlBMRU5wUFNQ
QlBCCiAgICA3M0MwOiA0MSA1MyA3MCAwQyAwMCAwMCAxMCAwMCA1MCA0QyA0NSA0RSBBNCA0MyA1
MiA1MyAgQVNwLi4uLi5QTEVOLkNSUwogICAgNzNEMDogNUYgNUIgODIgMEMgNDEgNDMgNTAgNUYg
MDggNUYgNDEgNDQgNTIgMEEgMDYgNUIgIF9bLi5BQ1BfLl9BRFIuLlsKICAgIDczRTA6IDgyIDBD
IDQxIDVBIDQxIDRDIDA4IDVGIDQxIDQ0IDUyIDBBIDA3IDVCIDgyIDREICAuLkFaQUwuX0FEUi4u
Wy5NCiAgICA3M0YwOiBDRSA0NyA1MCAzMiAzNyAwOCA1RiA0MSA0NCA1MiAwQyAwMiAwMCAwNyAw
MCAxNCAgLkdQMjcuX0FEUi4uLi4uLgogICAgNzQwMDogMTYgNUYgNTAgNTIgNTQgMDAgQTAgMEEg
NTAgNDkgNDMgNEQgQTQgNDcgMzAgMzggIC5fUFJULi4uUElDTS5HMDgKICAgIDc0MTA6IDM4IEE0
IDUwIDMwIDM4IDM4IDVCIDgyIDQxIDY2IDUzIDQxIDU0IDQxIDA4IDVGICA4LlAwODhbLkFmU0FU
QS5fCiAgICA3NDIwOiA0MSA0NCA1MiAwMCAwOCA0MiAzNSA0NSA0RSAwMCAwOCA0MiA0MSA1RiAz
NSAwMCAgQURSLi5CNUVOLi5CQV81LgogICAgNzQzMDogMDggNTMgNDIgNDEgNTIgMEMgMDAgRjAg
QjYgRjAgMDggNEYgNTMgNTYgNTIgMDAgIC5TQkFSLi4uLi4uT1NWUi4KICAgIDc0NDA6IDVCIDgw
IDUzIDQxIDU0IDU4IDAyIDAwIDBBIDQ0IDVCIDgxIDQzIDA0IDUzIDQxICBbLlNBVFguLi5EWy5D
LlNBCiAgICA3NDUwOiA1NCA1OCAwMCA1NiA0OSA0NCA0OSAyMCAwMCAzMCA1MyA1NCA0MyA0QyAx
MCAwMCAgVFguVklESSAuMFNUQ0wuLgogICAgNzQ2MDogNDAgMEMgNDIgNDEgMzAgMzUgMjAgMDAg
NDAgMEMgNTcgNTQgNDUgNEUgMDEgMDAgIEAuQkEwNSAuQC5XVEVOLi4KICAgIDc0NzA6IDBGIDQ0
IDQ5IDUzIDMwIDAxIDQ0IDQ5IDUzIDMxIDAxIDQ0IDQ5IDUzIDMyIDAxICAuRElTMC5ESVMxLkRJ
UzIuCiAgICA3NDgwOiA0NCA0OSA1MyAzMyAwMSA0NCA0OSA1MyAzNCAwMSA0NCA0OSA1MyAzNSAw
MSA1QiAgRElTMy5ESVM0LkRJUzUuWwogICAgNzQ5MDogODEgMEUgNTMgNDEgNTQgNTggMDAgMDAg
NDAgMjEgNDQgNDkgNTMgNTAgMDYgMTQgIC4uU0FUWC4uQCFESVNQLi4KICAgIDc0QTA6IDM5IDQ3
IDQyIDQxIDQxIDA4IDcwIDQyIDQxIDMwIDM1IDQyIDQxIDVGIDM1IEEwICA5R0JBQS5wQkEwNUJB
XzUuCiAgICA3NEIwOiAxQyA5MSA5MyA0MiA0MSA1RiAzNSBGRiA5MiA5MyA1MyA1NCA0MyA0QyAw
QiAwMSAgLi4uQkFfNS4uLlNUQ0wuLgogICAgNzRDMDogMDEgNzAgMDAgNDIgMzUgNDUgNEUgQTQg
NTMgNDIgNDEgNTIgQTEgMEMgNzAgMDEgIC5wLkI1RU4uU0JBUi4ucC4KICAgIDc0RDA6IDQyIDM1
IDQ1IDRFIEE0IDQyIDQxIDVGIDM1IDVCIDgwIDQyIDQxIDUyIDM1IDAwICBCNUVOLkJBXzVbLkJB
UjUuCiAgICA3NEUwOiA0NyA0MiA0MSA0MSAwQiAwMCAxMCA1QiA4MSA0MSAxMiA0MiA0MSA1MiAz
NSAwMCAgR0JBQS4uLlsuQS5CQVI1LgogICAgNzRGMDogNEUgNEYgNTAgNTQgMDUgMDAgNEIgMDUg
NTAgNTQgNDkgMzAgMDEgNTAgNTQgNDkgIE5PUFQuLksuUFRJMC5QVEkKICAgIDc1MDA6IDMxIDAx
IDUwIDU0IDQ5IDMyIDAxIDUwIDU0IDQ5IDMzIDAxIDUwIDU0IDQ5IDM0ICAxLlBUSTIuUFRJMy5Q
VEk0CiAgICA3NTEwOiAwMSA1MCA1NCA0OSAzNSAwMSA1MCA1NCA0OSAzNiAwMSA1MCA1NCA0OSAz
NyAwMSAgLlBUSTUuUFRJNi5QVEk3LgogICAgNzUyMDogMDAgNDggODUgNDMgNTMgNTQgMzAgMDEg
MDAgNEYgMDMgMDAgMDcgNDIgNTMgNTkgIC5ILkNTVDAuLk8uLi5CU1kKICAgIDc1MzA6IDMwIDAx
IDAwIDM4IDQ0IDQ1IDU0IDMwIDA0IDAwIDA0IDQ5IDUwIDREIDMwIDA0ICAwLi44REVUMC4uLklQ
TTAuCiAgICA3NTQwOiAwMCAxNCA0NCA0NCA0OSAzMCAwNCAwMCA0QyAzNSA0MyA1MyA1NCAzMSAw
MSAwMCAgLi5EREkwLi5MNUNTVDEuLgogICAgNzU1MDogNEYgMDMgMDAgMDcgNDIgNTMgNTkgMzEg
MDEgMDAgMzggNDQgNDUgNTQgMzEgMDQgIE8uLi5CU1kxLi44REVUMS4KICAgIDc1NjA6IDAwIDA0
IDQ5IDUwIDREIDMxIDA0IDAwIDE0IDQ0IDQ0IDQ5IDMxIDA0IDAwIDRDICAuLklQTTEuLi5EREkx
Li5MCiAgICA3NTcwOiAzNSA0MyA1MyA1NCAzMiAwMSAwMCA0RiAwMyAwMCAwNyA0MiA1MyA1OSAz
MiAwMSAgNUNTVDIuLk8uLi5CU1kyLgogICAgNzU4MDogMDAgMzggNDQgNDUgNTQgMzIgMDQgMDAg
MDQgNDkgNTAgNEQgMzIgMDQgMDAgMTQgIC44REVUMi4uLklQTTIuLi4KICAgIDc1OTA6IDQ0IDQ0
IDQ5IDMyIDA0IDAwIDRDIDM1IDQzIDUzIDU0IDMzIDAxIDAwIDRGIDAzICBEREkyLi5MNUNTVDMu
Lk8uCiAgICA3NUEwOiAwMCAwNyA0MiA1MyA1OSAzMyAwMSAwMCAzOCA0NCA0NSA1NCAzMyAwNCAw
MCAwNCAgLi5CU1kzLi44REVUMy4uLgogICAgNzVCMDogNDkgNTAgNEQgMzMgMDQgMDAgMTQgNDQg
NDQgNDkgMzMgMDQgMDAgNEMgMzUgNDMgIElQTTMuLi5EREkzLi5MNUMKICAgIDc1QzA6IDUzIDU0
IDM0IDAxIDAwIDRGIDAzIDAwIDA3IDQyIDUzIDU5IDM0IDAxIDAwIDM4ICBTVDQuLk8uLi5CU1k0
Li44CiAgICA3NUQwOiA0NCA0NSA1NCAzNCAwNCAwMCAwNCA0OSA1MCA0RCAzNCAwNCAwMCAxNCA0
NCA0NCAgREVUNC4uLklQTTQuLi5ERAogICAgNzVFMDogNDkgMzQgMDQgMDAgNEMgMzUgNDMgNTMg
NTQgMzUgMDEgMDAgNEYgMDMgMDAgMDcgIEk0Li5MNUNTVDUuLk8uLi4KICAgIDc1RjA6IDQyIDUz
IDU5IDM1IDAxIDAwIDM4IDQ0IDQ1IDU0IDM1IDA0IDAwIDA0IDQ5IDUwICBCU1k1Li44REVUNS4u
LklQCiAgICA3NjAwOiA0RCAzNSAwNCAwMCAxNCA0NCA0NCA0OSAzNSAwNCA1QiA4MSAwRSA0MiA0
MSA1MiAgTTUuLi5EREk1LlsuLkJBUgogICAgNzYxMDogMzUgMDAgMDAgNDAgMDYgNTAgNTQgNDkg
NUYgMDYgMTQgMEEgNUYgNDkgNEUgNDkgIDUuLkAuUFRJXy4uLl9JTkkKICAgIDc2MjA6IDAwIDQ3
IDQyIDQxIDQxIDVCIDgyIDRBIDE5IDUwIDUyIDQ5IDQ0IDA4IDVGIDQxICAuR0JBQVsuSi5QUklE
Ll9BCiAgICA3NjMwOiA0NCA1MiAwMCAwOCA1MyA1MCA1NCA0RCAxMSAxNyAwQSAxNCA3OCAwMCAw
MCAwMCAgRFIuLlNQVE0uLi4ueC4uLgogICAgNzY0MDogMEYgMDAgMDAgMDAgNzggMDAgMDAgMDAg
MEYgMDAgMDAgMDAgMUYgMDAgMDAgMDAgIC4uLi54Li4uLi4uLi4uLi4KICAgIDc2NTA6IDE0IDBC
IDVGIDQ3IDU0IDREIDAwIEE0IDUzIDUwIDU0IDREIDE0IDBDIDVGIDUzICAuLl9HVE0uLlNQVE0u
Ll9TCiAgICA3NjYwOiA1NCA0RCAwMyA3MCA2OCA1MyA1MCA1NCA0RCAxNCAzQSA1RiA1MCA1MyAz
MCAwMCAgVE0ucGhTUFRNLjpfUFMwLgogICAgNzY3MDogNDcgNDIgNDEgNDEgQTAgMkYgOTAgOTEg
OTIgOTUgNEYgNTMgNTYgNTIgMEEgMEMgIEdCQUEuLy4uLi5PU1ZSLi4KICAgIDc2ODA6IDkzIDRG
IDUzIDU2IDUyIDAwIDQyIDM1IDQ1IDRFIEEwIDE5IDQ5IDUwIDREIDMyICAuT1NWUi5CNUVOLi5J
UE0yCiAgICA3NjkwOiA3MCAwQSAzMiA2MCBBMiAwRiA5MCA5MyA0MiA1MyA1OSAzMiAwMSA2MCA1
QiAyMiAgcC4yYC4uLi5CU1kyLmBbIgogICAgNzZBMDogMEEgRkEgNzYgNjAgMTQgMDYgNUYgNTAg
NTMgMzMgMDAgNUIgODIgNDkgMDggNTAgIC4udmAuLl9QUzMuWy5JLlAKICAgIDc2QjA6IDVGIDQ0
IDMwIDA4IDVGIDQxIDQ0IDUyIDAwIDE0IDI0IDVGIDUzIDU0IDQxIDAwICBfRDAuX0FEUi4uJF9T
VEEuCiAgICA3NkMwOiA0NyA0MiA0MSA0MSBBMCAwOSA5MyA0MiAzNSA0NSA0RSAwMCBBNCAwMCBB
MCAwQiAgR0JBQS4uLkI1RU4uLi4uLgogICAgNzZEMDogOTMgNDQgNDUgNTQgMzAgMEEgMDMgQTQg
MEEgMEYgQTEgMDMgQTQgMDAgMDggNTMgIC5ERVQwLi4uLi4uLi4uLlMKICAgIDc2RTA6IDMxIDMy
IDUwIDAwIDE0IDM0IDVGIDUwIDUzIDMwIDAwIDQ3IDQyIDQxIDQxIEEwICAxMlAuLjRfUFMwLkdC
QUEuCiAgICA3NkYwOiAyOSA5MCA5MCA5NSA0RiA1MyA1NiA1MiAwQSAwQyA5MiA5MyA0RiA1MyA1
NiA1MiAgKS4uLk9TVlIuLi4uT1NWUgogICAgNzcwMDogMDAgNDIgMzUgNDUgNEUgNzAgMEEgMzIg
NjAgQTIgMEYgOTAgOTMgNDIgNTMgNTkgIC5CNUVOcC4yYC4uLi5CU1kKICAgIDc3MTA6IDMwIDAx
IDYwIDVCIDIyIDBBIEZBIDc2IDYwIDE0IDA2IDVGIDUwIDUzIDMzIDAwICAwLmBbIi4udmAuLl9Q
UzMuCiAgICA3NzIwOiAxNCAxNSA1RiA0NyA1NCA0NiAwMCA3MCAxMSAwQSAwQSAwNyAwMyA0NiAw
MCAwMCAgLi5fR1RGLnAuLi4uLkYuLgogICAgNzczMDogMDAgQTAgRUYgNjAgQTQgNjAgNUIgODIg
NDkgMDggNTAgNUYgNDQgMzEgMDggNUYgIC4uLmAuYFsuSS5QX0QxLl8KICAgIDc3NDA6IDQxIDQ0
IDUyIDAxIDE0IDI0IDVGIDUzIDU0IDQxIDAwIDQ3IDQyIDQxIDQxIEEwICBBRFIuLiRfU1RBLkdC
QUEuCiAgICA3NzUwOiAwOSA5MyA0MiAzNSA0NSA0RSAwMCBBNCAwMCBBMCAwQiA5MyA0NCA0NSA1
NCAzMiAgLi5CNUVOLi4uLi4uREVUMgogICAgNzc2MDogMEEgMDMgQTQgMEEgMEYgQTEgMDMgQTQg
MDAgMDggNTMgMzEgMzIgNTAgMDAgMTQgIC4uLi4uLi4uLi5TMTJQLi4KICAgIDc3NzA6IDM0IDVG
IDUwIDUzIDMwIDAwIDQ3IDQyIDQxIDQxIEEwIDI5IDkwIDkwIDk1IDRGICA0X1BTMC5HQkFBLiku
Li5PCiAgICA3NzgwOiA1MyA1NiA1MiAwQSAwQyA5MiA5MyA0RiA1MyA1NiA1MiAwMCA0MiAzNSA0
NSA0RSAgU1ZSLi4uLk9TVlIuQjVFTgogICAgNzc5MDogNzAgMEEgMzIgNjAgQTIgMEYgOTAgOTMg
NDIgNTMgNTkgMzIgMDEgNjAgNUIgMjIgIHAuMmAuLi4uQlNZMi5gWyIKICAgIDc3QTA6IDBBIEZB
IDc2IDYwIDE0IDA2IDVGIDUwIDUzIDMzIDAwIDE0IDE1IDVGIDQ3IDU0ICAuLnZgLi5fUFMzLi4u
X0dUCiAgICA3N0IwOiA0NiAwMCA3MCAxMSAwQSAwQSAwNyAwMyA0NiAwMCAwMCAwMCBBMCBFRiA2
MCBBNCAgRi5wLi4uLi5GLi4uLi5gLgogICAgNzdDMDogNjAgNUIgODIgNEIgMUEgNTMgNDUgNDMg
NDQgMDggNUYgNDEgNDQgNTIgMEEgMDIgIGBbLksuU0VDRC5fQURSLi4KICAgIDc3RDA6IDA4IDUz
IDUwIDU0IDREIDExIDE3IDBBIDE0IDc4IDAwIDAwIDAwIDBGIDAwIDAwICAuU1BUTS4uLi54Li4u
Li4uCiAgICA3N0UwOiAwMCA3OCAwMCAwMCAwMCAwRiAwMCAwMCAwMCAxRiAwMCAwMCAwMCAxNCAw
QiA1RiAgLnguLi4uLi4uLi4uLi4uXwogICAgNzdGMDogNDcgNTQgNEQgMDAgQTQgNTMgNTAgNTQg
NEQgMTQgMEMgNUYgNTMgNTQgNEQgMDMgIEdUTS4uU1BUTS4uX1NUTS4KICAgIDc4MDA6IDcwIDY4
IDUzIDUwIDU0IDREIDE0IDQ2IDA1IDVGIDUwIDUzIDMwIDAwIDQ3IDQyICBwaFNQVE0uRi5fUFMw
LkdCCiAgICA3ODEwOiA0MSA0MSBBMCA0QSAwNCA5MCA5MSA5MiA5NSA0RiA1MyA1NiA1MiAwQSAw
QyA5MyAgQUEuSi4uLi4uT1NWUi4uLgogICAgNzgyMDogNEYgNTMgNTYgNTIgMDAgNDIgMzUgNDUg
NEUgQTAgMTkgNDkgNTAgNEQgMzEgNzAgIE9TVlIuQjVFTi4uSVBNMXAKICAgIDc4MzA6IDBBIDMy
IDYwIEEyIDBGIDkwIDkzIDQyIDUzIDU5IDMxIDAxIDYwIDVCIDIyIDBBICAuMmAuLi4uQlNZMS5g
WyIuCiAgICA3ODQwOiBGQSA3NiA2MCBBMCAxOSA0OSA1MCA0RCAzMyA3MCAwQSAzMiA2MCBBMiAw
RiA5MCAgLnZgLi5JUE0zcC4yYC4uLgogICAgNzg1MDogOTMgNDIgNTMgNTkgMzMgMDEgNjAgNUIg
MjIgMEEgRkEgNzYgNjAgMTQgMDYgNUYgIC5CU1kzLmBbIi4udmAuLl8KICAgIDc4NjA6IDUwIDUz
IDMzIDAwIDVCIDgyIDQzIDA4IDUzIDVGIDQ0IDMwIDA4IDVGIDQxIDQ0ICBQUzMuWy5DLlNfRDAu
X0FECiAgICA3ODcwOiA1MiAwMCAxNCAyNCA1RiA1MyA1NCA0MSAwMCA0NyA0MiA0MSA0MSBBMCAw
OSA5MyAgUi4uJF9TVEEuR0JBQS4uLgogICAgNzg4MDogNDIgMzUgNDUgNEUgMDAgQTQgMDAgQTAg
MEIgOTMgNDQgNDUgNTQgMzEgMEEgMDMgIEI1RU4uLi4uLi5ERVQxLi4KICAgIDc4OTA6IEE0IDBB
IDBGIEExIDAzIEE0IDAwIDE0IDM0IDVGIDUwIDUzIDMwIDAwIDQ3IDQyICAuLi4uLi4uLjRfUFMw
LkdCCiAgICA3OEEwOiA0MSA0MSBBMCAyOSA5MCA5MCA5NSA0RiA1MyA1NiA1MiAwQSAwQyA5MiA5
MyA0RiAgQUEuKS4uLk9TVlIuLi4uTwogICAgNzhCMDogNTMgNTYgNTIgMDAgNDIgMzUgNDUgNEUg
NzAgMEEgMzIgNjAgQTIgMEYgOTAgOTMgIFNWUi5CNUVOcC4yYC4uLi4KICAgIDc4QzA6IDQyIDUz
IDU5IDMxIDAxIDYwIDVCIDIyIDBBIEZBIDc2IDYwIDE0IDA2IDVGIDUwICBCU1kxLmBbIi4udmAu
Ll9QCiAgICA3OEQwOiA1MyAzMyAwMCAxNCAxNSA1RiA0NyA1NCA0NiAwMCA3MCAxMSAwQSAwQSAw
NyAwMyAgUzMuLi5fR1RGLnAuLi4uLgogICAgNzhFMDogNDYgMDAgMDAgMDAgQTAgRUYgNjAgQTQg
NjAgNUIgODIgNDMgMDggNTMgNUYgNDQgIEYuLi4uLmAuYFsuQy5TX0QKICAgIDc4RjA6IDMxIDA4
IDVGIDQxIDQ0IDUyIDAxIDE0IDI0IDVGIDUzIDU0IDQxIDAwIDQ3IDQyICAxLl9BRFIuLiRfU1RB
LkdCCiAgICA3OTAwOiA0MSA0MSBBMCAwOSA5MyA0MiAzNSA0NSA0RSAwMCBBNCAwMCBBMCAwQiA5
MyA0NCAgQUEuLi5CNUVOLi4uLi4uRAogICAgNzkxMDogNDUgNTQgMzMgMEEgMDMgQTQgMEEgMEYg
QTEgMDMgQTQgMDAgMTQgMzQgNUYgNTAgIEVUMy4uLi4uLi4uLi40X1AKICAgIDc5MjA6IDUzIDMw
IDAwIDQ3IDQyIDQxIDQxIEEwIDI5IDkwIDkwIDk1IDRGIDUzIDU2IDUyICBTMC5HQkFBLikuLi5P
U1ZSCiAgICA3OTMwOiAwQSAwQyA5MiA5MyA0RiA1MyA1NiA1MiAwMCA0MiAzNSA0NSA0RSA3MCAw
QSAzMiAgLi4uLk9TVlIuQjVFTnAuMgogICAgNzk0MDogNjAgQTIgMEYgOTAgOTMgNDIgNTMgNTkg
MzMgMDEgNjAgNUIgMjIgMEEgRkEgNzYgIGAuLi4uQlNZMy5gWyIuLnYKICAgIDc5NTA6IDYwIDE0
IDA2IDVGIDUwIDUzIDMzIDAwIDE0IDE1IDVGIDQ3IDU0IDQ2IDAwIDcwICBgLi5fUFMzLi4uX0dU
Ri5wCiAgICA3OTYwOiAxMSAwQSAwQSAwNyAwMyA0NiAwMCAwMCAwMCBBMCBFRiA2MCBBNCA2MCAx
NCA0QSAgLi4uLi5GLi4uLi5gLmAuSgogICAgNzk3MDogMTAgNDUgNEUgNTAgNUYgMDIgQTAgMEMg
OTMgNjggMDAgNzAgODAgNjkgMDAgNDQgIC5FTlBfLi4uLmgucC5pLkQKICAgIDc5ODA6IDQ5IDUz
IDMwIEExIDRGIDA0IEEwIDBDIDkzIDY4IDAxIDcwIDgwIDY5IDAwIDQ0ICBJUzAuTy4uLi5oLnAu
aS5ECiAgICA3OTkwOiA0OSA1MyAzMSBBMSAzRiBBMCAwRCA5MyA2OCAwQSAwMiA3MCA4MCA2OSAw
MCA0NCAgSVMxLj8uLi5oLi5wLmkuRAogICAgNzlBMDogNDkgNTMgMzIgQTEgMkYgQTAgMEQgOTMg
NjggMEEgMDMgNzAgODAgNjkgMDAgNDQgIElTMi4vLi4uaC4ucC5pLkQKICAgIDc5QjA6IDQ5IDUz
IDMzIEExIDFGIEEwIDBEIDkzIDY4IDBBIDA0IDcwIDgwIDY5IDAwIDQ0ICBJUzMuLi4uLmguLnAu
aS5ECiAgICA3OUMwOiA0OSA1MyAzNCBBMSAwRiBBMCAwRCA5MyA2OCAwQSAwNSA3MCA4MCA2OSAw
MCA0NCAgSVM0Li4uLi5oLi5wLmkuRAogICAgNzlEMDogNDkgNTMgMzUgNzAgMDEgNTcgNTQgNDUg
NEUgQTAgMEEgOTMgNjggMDAgNzAgNjkgIElTNXAuV1RFTi4uLmgucGkKICAgIDc5RTA6IDUwIDU0
IDQ5IDMwIEExIDQ1IDA0IEEwIDBBIDkzIDY4IDAxIDcwIDY5IDUwIDU0ICBQVEkwLkUuLi4uaC5w
aVBUCiAgICA3OUYwOiA0OSAzMSBBMSAzNyBBMCAwQiA5MyA2OCAwQSAwMiA3MCA2OSA1MCA1NCA0
OSAzMiAgSTEuNy4uLmguLnBpUFRJMgogICAgN0EwMDogQTEgMjkgQTAgMEIgOTMgNjggMEEgMDMg
NzAgNjkgNTAgNTQgNDkgMzMgQTEgMUIgIC4pLi4uaC4ucGlQVEkzLi4KICAgIDdBMTA6IEEwIDBC
IDkzIDY4IDBBIDA0IDcwIDY5IDUwIDU0IDQ5IDM0IEExIDBEIEEwIDBCICAuLi5oLi5waVBUSTQu
Li4uCiAgICA3QTIwOiA5MyA2OCAwQSAwNSA3MCA2OSA1MCA1NCA0OSAzNSBBMCAwRSA5MyA0NCA0
OSA1MyAgLmguLnBpUFRJNS4uLkRJUwogICAgN0EzMDogNTAgMEEgM0YgNzAgMDEgNTAgNTQgNDkg
MzAgQTEgMUEgQTAgMTggOTAgNDQgNDkgIFAuP3AuUFRJMC4uLi4uREkKICAgIDdBNDA6IDUzIDMw
IDdGIDdCIDQ0IDQ5IDUzIDUwIDBBIDNFIDAwIDBBIDNFIDAwIDcwIDAwICBTMC57RElTUC4+Li4+
LnAuCiAgICA3QTUwOiA1MCA1NCA0OSAzMCA3MCA1MCA1NCA0OSA1RiA2MCA3MCAwMCA2MSBBMiAw
RSA2MCAgUFRJMHBQVElfYHAuYS4uYAogICAgN0E2MDogQTAgMDcgN0IgNjAgMDEgMDAgNzUgNjEg
N0EgNjAgMDEgNjAgNzAgNzYgNjEgNEUgIC4ue2AuLnVhemAuYHB2YU4KICAgIDdBNzA6IDRGIDUw
IDU0IDcwIDAwIDU3IDU0IDQ1IDRFIDVCIDgyIDQxIDY2IDUzIDQxIDU0ICBPUFRwLldURU5bLkFm
U0FUCiAgICA3QTgwOiAzMiAwOCA1RiA0MSA0NCA1MiAwMCAwOCA0MiAzNSA0NSA0RSAwMCAwOCA0
MiA0MSAgMi5fQURSLi5CNUVOLi5CQQogICAgN0E5MDogNUYgMzUgMDAgMDggNTMgNDIgNDEgNTIg
MEMgMDAgRjAgQjYgRjAgMDggNEYgNTMgIF81Li5TQkFSLi4uLi4uT1MKICAgIDdBQTA6IDU2IDUy
IDAwIDVCIDgwIDUzIDQxIDU0IDU4IDAyIDAwIDBBIDQ0IDVCIDgxIDQzICBWUi5bLlNBVFguLi5E
Wy5DCiAgICA3QUIwOiAwNCA1MyA0MSA1NCA1OCAwMCA1NiA0OSA0NCA0OSAyMCAwMCAzMCA1MyA1
NCA0MyAgLlNBVFguVklESSAuMFNUQwogICAgN0FDMDogNEMgMTAgMDAgNDAgMEMgNDIgNDEgMzAg
MzUgMjAgMDAgNDAgMEMgNTcgNTQgNDUgIEwuLkAuQkEwNSAuQC5XVEUKICAgIDdBRDA6IDRFIDAx
IDAwIDBGIDQ0IDQ5IDUzIDMwIDAxIDQ0IDQ5IDUzIDMxIDAxIDQ0IDQ5ICBOLi4uRElTMC5ESVMx
LkRJCiAgICA3QUUwOiA1MyAzMiAwMSA0NCA0OSA1MyAzMyAwMSA0NCA0OSA1MyAzNCAwMSA0NCA0
OSA1MyAgUzIuRElTMy5ESVM0LkRJUwogICAgN0FGMDogMzUgMDEgNUIgODEgMEUgNTMgNDEgNTQg
NTggMDAgMDAgNDAgMjEgNDQgNDkgNTMgIDUuWy4uU0FUWC4uQCFESVMKICAgIDdCMDA6IDUwIDA2
IDE0IDM5IDQ3IDQyIDQxIDQxIDA4IDcwIDQyIDQxIDMwIDM1IDQyIDQxICBQLi45R0JBQS5wQkEw
NUJBCiAgICA3QjEwOiA1RiAzNSBBMCAxQyA5MSA5MyA0MiA0MSA1RiAzNSBGRiA5MiA5MyA1MyA1
NCA0MyAgXzUuLi4uQkFfNS4uLlNUQwogICAgN0IyMDogNEMgMEIgMDEgMDEgNzAgMDAgNDIgMzUg
NDUgNEUgQTQgNTMgNDIgNDEgNTIgQTEgIEwuLi5wLkI1RU4uU0JBUi4KICAgIDdCMzA6IDBDIDcw
IDAxIDQyIDM1IDQ1IDRFIEE0IDQyIDQxIDVGIDM1IDVCIDgwIDQyIDQxICAucC5CNUVOLkJBXzVb
LkJBCiAgICA3QjQwOiA1MiAzNSAwMCA0NyA0MiA0MSA0MSAwQiAwMCAxMCA1QiA4MSA0MSAxMiA0
MiA0MSAgUjUuR0JBQS4uLlsuQS5CQQogICAgN0I1MDogNTIgMzUgMDAgNEUgNEYgNTAgNTQgMDUg
MDAgNEIgMDUgNTAgNTQgNDkgMzAgMDEgIFI1Lk5PUFQuLksuUFRJMC4KICAgIDdCNjA6IDUwIDU0
IDQ5IDMxIDAxIDUwIDU0IDQ5IDMyIDAxIDUwIDU0IDQ5IDMzIDAxIDUwICBQVEkxLlBUSTIuUFRJ
My5QCiAgICA3QjcwOiA1NCA0OSAzNCAwMSA1MCA1NCA0OSAzNSAwMSA1MCA1NCA0OSAzNiAwMSA1
MCA1NCAgVEk0LlBUSTUuUFRJNi5QVAogICAgN0I4MDogNDkgMzcgMDEgMDAgNDggODUgNDMgNTMg
NTQgMzAgMDEgMDAgNEYgMDMgMDAgMDcgIEk3Li5ILkNTVDAuLk8uLi4KICAgIDdCOTA6IDQyIDUz
IDU5IDMwIDAxIDAwIDM4IDQ0IDQ1IDU0IDMwIDA0IDAwIDA0IDQ5IDUwICBCU1kwLi44REVUMC4u
LklQCiAgICA3QkEwOiA0RCAzMCAwNCAwMCAxNCA0NCA0NCA0OSAzMCAwNCAwMCA0QyAzNSA0MyA1
MyA1NCAgTTAuLi5EREkwLi5MNUNTVAogICAgN0JCMDogMzEgMDEgMDAgNEYgMDMgMDAgMDcgNDIg
NTMgNTkgMzEgMDEgMDAgMzggNDQgNDUgIDEuLk8uLi5CU1kxLi44REUKICAgIDdCQzA6IDU0IDMx
IDA0IDAwIDA0IDQ5IDUwIDREIDMxIDA0IDAwIDE0IDQ0IDQ0IDQ5IDMxICBUMS4uLklQTTEuLi5E
REkxCiAgICA3QkQwOiAwNCAwMCA0QyAzNSA0MyA1MyA1NCAzMiAwMSAwMCA0RiAwMyAwMCAwNyA0
MiA1MyAgLi5MNUNTVDIuLk8uLi5CUwogICAgN0JFMDogNTkgMzIgMDEgMDAgMzggNDQgNDUgNTQg
MzIgMDQgMDAgMDQgNDkgNTAgNEQgMzIgIFkyLi44REVUMi4uLklQTTIKICAgIDdCRjA6IDA0IDAw
IDE0IDQ0IDQ0IDQ5IDMyIDA0IDAwIDRDIDM1IDQzIDUzIDU0IDMzIDAxICAuLi5EREkyLi5MNUNT
VDMuCiAgICA3QzAwOiAwMCA0RiAwMyAwMCAwNyA0MiA1MyA1OSAzMyAwMSAwMCAzOCA0NCA0NSA1
NCAzMyAgLk8uLi5CU1kzLi44REVUMwogICAgN0MxMDogMDQgMDAgMDQgNDkgNTAgNEQgMzMgMDQg
MDAgMTQgNDQgNDQgNDkgMzMgMDQgMDAgIC4uLklQTTMuLi5EREkzLi4KICAgIDdDMjA6IDRDIDM1
IDQzIDUzIDU0IDM0IDAxIDAwIDRGIDAzIDAwIDA3IDQyIDUzIDU5IDM0ICBMNUNTVDQuLk8uLi5C
U1k0CiAgICA3QzMwOiAwMSAwMCAzOCA0NCA0NSA1NCAzNCAwNCAwMCAwNCA0OSA1MCA0RCAzNCAw
NCAwMCAgLi44REVUNC4uLklQTTQuLgogICAgN0M0MDogMTQgNDQgNDQgNDkgMzQgMDQgMDAgNEMg
MzUgNDMgNTMgNTQgMzUgMDEgMDAgNEYgIC5EREk0Li5MNUNTVDUuLk8KICAgIDdDNTA6IDAzIDAw
IDA3IDQyIDUzIDU5IDM1IDAxIDAwIDM4IDQ0IDQ1IDU0IDM1IDA0IDAwICAuLi5CU1k1Li44REVU
NS4uCiAgICA3QzYwOiAwNCA0OSA1MCA0RCAzNSAwNCAwMCAxNCA0NCA0NCA0OSAzNSAwNCA1QiA4
MSAwRSAgLklQTTUuLi5EREk1LlsuLgogICAgN0M3MDogNDIgNDEgNTIgMzUgMDAgMDAgNDAgMDYg
NTAgNTQgNDkgNUYgMDYgMTQgMEEgNUYgIEJBUjUuLkAuUFRJXy4uLl8KICAgIDdDODA6IDQ5IDRF
IDQ5IDAwIDQ3IDQyIDQxIDQxIDVCIDgyIDRBIDE5IDUwIDUyIDQ5IDQ0ICBJTkkuR0JBQVsuSi5Q
UklECiAgICA3QzkwOiAwOCA1RiA0MSA0NCA1MiAwMCAwOCA1MyA1MCA1NCA0RCAxMSAxNyAwQSAx
NCA3OCAgLl9BRFIuLlNQVE0uLi4ueAogICAgN0NBMDogMDAgMDAgMDAgMEYgMDAgMDAgMDAgNzgg
MDAgMDAgMDAgMEYgMDAgMDAgMDAgMUYgIC4uLi4uLi54Li4uLi4uLi4KICAgIDdDQjA6IDAwIDAw
IDAwIDE0IDBCIDVGIDQ3IDU0IDREIDAwIEE0IDUzIDUwIDU0IDREIDE0ICAuLi4uLl9HVE0uLlNQ
VE0uCiAgICA3Q0MwOiAwQyA1RiA1MyA1NCA0RCAwMyA3MCA2OCA1MyA1MCA1NCA0RCAxNCAzQSA1
RiA1MCAgLl9TVE0ucGhTUFRNLjpfUAogICAgN0NEMDogNTMgMzAgMDAgNDcgNDIgNDEgNDEgQTAg
MkYgOTAgOTEgOTIgOTUgNEYgNTMgNTYgIFMwLkdCQUEuLy4uLi5PU1YKICAgIDdDRTA6IDUyIDBB
IDBDIDkzIDRGIDUzIDU2IDUyIDAwIDQyIDM1IDQ1IDRFIEEwIDE5IDQ5ICBSLi4uT1NWUi5CNUVO
Li5JCiAgICA3Q0YwOiA1MCA0RCAzMiA3MCAwQSAzMiA2MCBBMiAwRiA5MCA5MyA0MiA1MyA1OSAz
MiAwMSAgUE0ycC4yYC4uLi5CU1kyLgogICAgN0QwMDogNjAgNUIgMjIgMEEgRkEgNzYgNjAgMTQg
MDYgNUYgNTAgNTMgMzMgMDAgNUIgODIgIGBbIi4udmAuLl9QUzMuWy4KICAgIDdEMTA6IDQ5IDA4
IDUwIDVGIDQ0IDMwIDA4IDVGIDQxIDQ0IDUyIDAwIDE0IDI0IDVGIDUzICBJLlBfRDAuX0FEUi4u
JF9TCiAgICA3RDIwOiA1NCA0MSAwMCA0NyA0MiA0MSA0MSBBMCAwOSA5MyA0MiAzNSA0NSA0RSAw
MCBBNCAgVEEuR0JBQS4uLkI1RU4uLgogICAgN0QzMDogMDAgQTAgMEIgOTMgNDQgNDUgNTQgMzAg
MEEgMDMgQTQgMEEgMEYgQTEgMDMgQTQgIC4uLi5ERVQwLi4uLi4uLi4KICAgIDdENDA6IDAwIDA4
IDUzIDMxIDMyIDUwIDAwIDE0IDM0IDVGIDUwIDUzIDMwIDAwIDQ3IDQyICAuLlMxMlAuLjRfUFMw
LkdCCiAgICA3RDUwOiA0MSA0MSBBMCAyOSA5MCA5MCA5NSA0RiA1MyA1NiA1MiAwQSAwQyA5MiA5
MyA0RiAgQUEuKS4uLk9TVlIuLi4uTwogICAgN0Q2MDogNTMgNTYgNTIgMDAgNDIgMzUgNDUgNEUg
NzAgMEEgMzIgNjAgQTIgMEYgOTAgOTMgIFNWUi5CNUVOcC4yYC4uLi4KICAgIDdENzA6IDQyIDUz
IDU5IDMwIDAxIDYwIDVCIDIyIDBBIEZBIDc2IDYwIDE0IDA2IDVGIDUwICBCU1kwLmBbIi4udmAu
Ll9QCiAgICA3RDgwOiA1MyAzMyAwMCAxNCAxNSA1RiA0NyA1NCA0NiAwMCA3MCAxMSAwQSAwQSAw
NyAwMyAgUzMuLi5fR1RGLnAuLi4uLgogICAgN0Q5MDogNDYgMDAgMDAgMDAgQTAgRUYgNjAgQTQg
NjAgNUIgODIgNDkgMDggNTAgNUYgNDQgIEYuLi4uLmAuYFsuSS5QX0QKICAgIDdEQTA6IDMxIDA4
IDVGIDQxIDQ0IDUyIDAxIDE0IDI0IDVGIDUzIDU0IDQxIDAwIDQ3IDQyICAxLl9BRFIuLiRfU1RB
LkdCCiAgICA3REIwOiA0MSA0MSBBMCAwOSA5MyA0MiAzNSA0NSA0RSAwMCBBNCAwMCBBMCAwQiA5
MyA0NCAgQUEuLi5CNUVOLi4uLi4uRAogICAgN0RDMDogNDUgNTQgMzIgMEEgMDMgQTQgMEEgMEYg
QTEgMDMgQTQgMDAgMDggNTMgMzEgMzIgIEVUMi4uLi4uLi4uLi5TMTIKICAgIDdERDA6IDUwIDAw
IDE0IDM0IDVGIDUwIDUzIDMwIDAwIDQ3IDQyIDQxIDQxIEEwIDI5IDkwICBQLi40X1BTMC5HQkFB
LikuCiAgICA3REUwOiA5MCA5NSA0RiA1MyA1NiA1MiAwQSAwQyA5MiA5MyA0RiA1MyA1NiA1MiAw
MCA0MiAgLi5PU1ZSLi4uLk9TVlIuQgogICAgN0RGMDogMzUgNDUgNEUgNzAgMEEgMzIgNjAgQTIg
MEYgOTAgOTMgNDIgNTMgNTkgMzIgMDEgIDVFTnAuMmAuLi4uQlNZMi4KICAgIDdFMDA6IDYwIDVC
IDIyIDBBIEZBIDc2IDYwIDE0IDA2IDVGIDUwIDUzIDMzIDAwIDE0IDE1ICBgWyIuLnZgLi5fUFMz
Li4uCiAgICA3RTEwOiA1RiA0NyA1NCA0NiAwMCA3MCAxMSAwQSAwQSAwNyAwMyA0NiAwMCAwMCAw
MCBBMCAgX0dURi5wLi4uLi5GLi4uLgogICAgN0UyMDogRUYgNjAgQTQgNjAgNUIgODIgNEIgMUEg
NTMgNDUgNDMgNDQgMDggNUYgNDEgNDQgIC5gLmBbLksuU0VDRC5fQUQKICAgIDdFMzA6IDUyIDBB
IDAyIDA4IDUzIDUwIDU0IDREIDExIDE3IDBBIDE0IDc4IDAwIDAwIDAwICBSLi4uU1BUTS4uLi54
Li4uCiAgICA3RTQwOiAwRiAwMCAwMCAwMCA3OCAwMCAwMCAwMCAwRiAwMCAwMCAwMCAxRiAwMCAw
MCAwMCAgLi4uLnguLi4uLi4uLi4uLgogICAgN0U1MDogMTQgMEIgNUYgNDcgNTQgNEQgMDAgQTQg
NTMgNTAgNTQgNEQgMTQgMEMgNUYgNTMgIC4uX0dUTS4uU1BUTS4uX1MKICAgIDdFNjA6IDU0IDRE
IDAzIDcwIDY4IDUzIDUwIDU0IDREIDE0IDQ2IDA1IDVGIDUwIDUzIDMwICBUTS5waFNQVE0uRi5f
UFMwCiAgICA3RTcwOiAwMCA0NyA0MiA0MSA0MSBBMCA0QSAwNCA5MCA5MSA5MiA5NSA0RiA1MyA1
NiA1MiAgLkdCQUEuSi4uLi4uT1NWUgogICAgN0U4MDogMEEgMEMgOTMgNEYgNTMgNTYgNTIgMDAg
NDIgMzUgNDUgNEUgQTAgMTkgNDkgNTAgIC4uLk9TVlIuQjVFTi4uSVAKICAgIDdFOTA6IDREIDMx
IDcwIDBBIDMyIDYwIEEyIDBGIDkwIDkzIDQyIDUzIDU5IDMxIDAxIDYwICBNMXAuMmAuLi4uQlNZ
MS5gCiAgICA3RUEwOiA1QiAyMiAwQSBGQSA3NiA2MCBBMCAxOSA0OSA1MCA0RCAzMyA3MCAwQSAz
MiA2MCAgWyIuLnZgLi5JUE0zcC4yYAogICAgN0VCMDogQTIgMEYgOTAgOTMgNDIgNTMgNTkgMzMg
MDEgNjAgNUIgMjIgMEEgRkEgNzYgNjAgIC4uLi5CU1kzLmBbIi4udmAKICAgIDdFQzA6IDE0IDA2
IDVGIDUwIDUzIDMzIDAwIDVCIDgyIDQzIDA4IDUzIDVGIDQ0IDMwIDA4ICAuLl9QUzMuWy5DLlNf
RDAuCiAgICA3RUQwOiA1RiA0MSA0NCA1MiAwMCAxNCAyNCA1RiA1MyA1NCA0MSAwMCA0NyA0MiA0
MSA0MSAgX0FEUi4uJF9TVEEuR0JBQQogICAgN0VFMDogQTAgMDkgOTMgNDIgMzUgNDUgNEUgMDAg
QTQgMDAgQTAgMEIgOTMgNDQgNDUgNTQgIC4uLkI1RU4uLi4uLi5ERVQKICAgIDdFRjA6IDMxIDBB
IDAzIEE0IDBBIDBGIEExIDAzIEE0IDAwIDE0IDM0IDVGIDUwIDUzIDMwICAxLi4uLi4uLi4uLjRf
UFMwCiAgICA3RjAwOiAwMCA0NyA0MiA0MSA0MSBBMCAyOSA5MCA5MCA5NSA0RiA1MyA1NiA1MiAw
QSAwQyAgLkdCQUEuKS4uLk9TVlIuLgogICAgN0YxMDogOTIgOTMgNEYgNTMgNTYgNTIgMDAgNDIg
MzUgNDUgNEUgNzAgMEEgMzIgNjAgQTIgIC4uT1NWUi5CNUVOcC4yYC4KICAgIDdGMjA6IDBGIDkw
IDkzIDQyIDUzIDU5IDMxIDAxIDYwIDVCIDIyIDBBIEZBIDc2IDYwIDE0ICAuLi5CU1kxLmBbIi4u
dmAuCiAgICA3RjMwOiAwNiA1RiA1MCA1MyAzMyAwMCAxNCAxNSA1RiA0NyA1NCA0NiAwMCA3MCAx
MSAwQSAgLl9QUzMuLi5fR1RGLnAuLgogICAgN0Y0MDogMEEgMDcgMDMgNDYgMDAgMDAgMDAgQTAg
RUYgNjAgQTQgNjAgNUIgODIgNDMgMDggIC4uLkYuLi4uLmAuYFsuQy4KICAgIDdGNTA6IDUzIDVG
IDQ0IDMxIDA4IDVGIDQxIDQ0IDUyIDAxIDE0IDI0IDVGIDUzIDU0IDQxICBTX0QxLl9BRFIuLiRf
U1RBCiAgICA3RjYwOiAwMCA0NyA0MiA0MSA0MSBBMCAwOSA5MyA0MiAzNSA0NSA0RSAwMCBBNCAw
MCBBMCAgLkdCQUEuLi5CNUVOLi4uLgogICAgN0Y3MDogMEIgOTMgNDQgNDUgNTQgMzMgMEEgMDMg
QTQgMEEgMEYgQTEgMDMgQTQgMDAgMTQgIC4uREVUMy4uLi4uLi4uLi4KICAgIDdGODA6IDM0IDVG
IDUwIDUzIDMwIDAwIDQ3IDQyIDQxIDQxIEEwIDI5IDkwIDkwIDk1IDRGICA0X1BTMC5HQkFBLiku
Li5PCiAgICA3RjkwOiA1MyA1NiA1MiAwQSAwQyA5MiA5MyA0RiA1MyA1NiA1MiAwMCA0MiAzNSA0
NSA0RSAgU1ZSLi4uLk9TVlIuQjVFTgogICAgN0ZBMDogNzAgMEEgMzIgNjAgQTIgMEYgOTAgOTMg
NDIgNTMgNTkgMzMgMDEgNjAgNUIgMjIgIHAuMmAuLi4uQlNZMy5gWyIKICAgIDdGQjA6IDBBIEZB
IDc2IDYwIDE0IDA2IDVGIDUwIDUzIDMzIDAwIDE0IDE1IDVGIDQ3IDU0ICAuLnZgLi5fUFMzLi4u
X0dUCiAgICA3RkMwOiA0NiAwMCA3MCAxMSAwQSAwQSAwNyAwMyA0NiAwMCAwMCAwMCBBMCBFRiA2
MCBBNCAgRi5wLi4uLi5GLi4uLi5gLgogICAgN0ZEMDogNjAgMTQgNEEgMTAgNDUgNEUgNTAgNUYg
MDIgQTAgMEMgOTMgNjggMDAgNzAgODAgIGAuSi5FTlBfLi4uLmgucC4KICAgIDdGRTA6IDY5IDAw
IDQ0IDQ5IDUzIDMwIEExIDRGIDA0IEEwIDBDIDkzIDY4IDAxIDcwIDgwICBpLkRJUzAuTy4uLi5o
LnAuCiAgICA3RkYwOiA2OSAwMCA0NCA0OSA1MyAzMSBBMSAzRiBBMCAwRCA5MyA2OCAwQSAwMiA3
MCA4MCAgaS5ESVMxLj8uLi5oLi5wLgogICAgODAwMDogNjkgMDAgNDQgNDkgNTMgMzIgQTEgMkYg
QTAgMEQgOTMgNjggMEEgMDMgNzAgODAgIGkuRElTMi4vLi4uaC4ucC4KICAgIDgwMTA6IDY5IDAw
IDQ0IDQ5IDUzIDMzIEExIDFGIEEwIDBEIDkzIDY4IDBBIDA0IDcwIDgwICBpLkRJUzMuLi4uLmgu
LnAuCiAgICA4MDIwOiA2OSAwMCA0NCA0OSA1MyAzNCBBMSAwRiBBMCAwRCA5MyA2OCAwQSAwNSA3
MCA4MCAgaS5ESVM0Li4uLi5oLi5wLgogICAgODAzMDogNjkgMDAgNDQgNDkgNTMgMzUgNzAgMDEg
NTcgNTQgNDUgNEUgQTAgMEEgOTMgNjggIGkuRElTNXAuV1RFTi4uLmgKICAgIDgwNDA6IDAwIDcw
IDY5IDUwIDU0IDQ5IDMwIEExIDQ1IDA0IEEwIDBBIDkzIDY4IDAxIDcwICAucGlQVEkwLkUuLi4u
aC5wCiAgICA4MDUwOiA2OSA1MCA1NCA0OSAzMSBBMSAzNyBBMCAwQiA5MyA2OCAwQSAwMiA3MCA2
OSA1MCAgaVBUSTEuNy4uLmguLnBpUAogICAgODA2MDogNTQgNDkgMzIgQTEgMjkgQTAgMEIgOTMg
NjggMEEgMDMgNzAgNjkgNTAgNTQgNDkgIFRJMi4pLi4uaC4ucGlQVEkKICAgIDgwNzA6IDMzIEEx
IDFCIEEwIDBCIDkzIDY4IDBBIDA0IDcwIDY5IDUwIDU0IDQ5IDM0IEExICAzLi4uLi5oLi5waVBU
STQuCiAgICA4MDgwOiAwRCBBMCAwQiA5MyA2OCAwQSAwNSA3MCA2OSA1MCA1NCA0OSAzNSBBMCAw
RSA5MyAgLi4uLmguLnBpUFRJNS4uLgogICAgODA5MDogNDQgNDkgNTMgNTAgMEEgM0YgNzAgMDEg
NTAgNTQgNDkgMzAgQTEgMUEgQTAgMTggIERJU1AuP3AuUFRJMC4uLi4KICAgIDgwQTA6IDkwIDQ0
IDQ5IDUzIDMwIDdGIDdCIDQ0IDQ5IDUzIDUwIDBBIDNFIDAwIDBBIDNFICAuRElTMC57RElTUC4+
Li4+CiAgICA4MEIwOiAwMCA3MCAwMCA1MCA1NCA0OSAzMCA3MCA1MCA1NCA0OSA1RiA2MCA3MCAw
MCA2MSAgLnAuUFRJMHBQVElfYHAuYQogICAgODBDMDogQTIgMEUgNjAgQTAgMDcgN0IgNjAgMDEg
MDAgNzUgNjEgN0EgNjAgMDEgNjAgNzAgIC4uYC4ue2AuLnVhemAuYHAKICAgIDgwRDA6IDc2IDYx
IDRFIDRGIDUwIDU0IDcwIDAwIDU3IDU0IDQ1IDRFIDVCIDgyIDBGIDUzICB2YU5PUFRwLldURU5b
Li5TCiAgICA4MEUwOiA0RCA0MiA1MiAwOCA1RiA0MSA0NCA1MiAwQyAwMCAwMCAxNCAwMCA1QiA4
MiA0NCAgTUJSLl9BRFIuLi4uLlsuRAogICAgODBGMDogRjkgNTMgNDIgNTIgNDcgMDggNUYgNDEg
NDQgNTIgMEMgMDMgMDAgMTQgMDAgNUIgIC5TQlJHLl9BRFIuLi4uLlsKICAgIDgxMDA6IDgyIDJC
IDUwIDQ5IDQzIDVGIDA4IDVGIDQ4IDQ5IDQ0IDBCIDQxIEQwIDA4IDVGICAuK1BJQ18uX0hJRC5B
Li5fCiAgICA4MTEwOiA0MyA1MiA1MyAxMSAxOCAwQSAxNSA0NyAwMSAyMCAwMCAyMCAwMCAwMCAw
MiA0NyAgQ1JTLi4uLkcuIC4gLi4uRwogICAgODEyMDogMDEgQTAgMDAgQTAgMDAgMDAgMDIgMjIg
MDQgMDAgNzkgMDAgNUIgODIgNEUgMDQgIC4uLi4uLi4iLi55LlsuTi4KICAgIDgxMzA6IDQ0IDRE
IDQxIDQ0IDA4IDVGIDQ4IDQ5IDQ0IDBDIDQxIEQwIDAyIDAwIDA4IDVGICBETUFELl9ISUQuQS4u
Li5fCiAgICA4MTQwOiA0MyA1MiA1MyAxMSAzOCAwQSAzNSAyQSAxMCAwNCA0NyAwMSAwMCAwMCAw
MCAwMCAgQ1JTLjguNSouLkcuLi4uLgogICAgODE1MDogMDAgMTAgNDcgMDEgODEgMDAgODEgMDAg
MDAgMDMgNDcgMDEgODcgMDAgODcgMDAgIC4uRy4uLi4uLi5HLi4uLi4KICAgIDgxNjA6IDAwIDAx
IDQ3IDAxIDg5IDAwIDg5IDAwIDAwIDAzIDQ3IDAxIDhGIDAwIDhGIDAwICAuLkcuLi4uLi4uRy4u
Li4uCiAgICA4MTcwOiAwMCAwMSA0NyAwMSBDMCAwMCBDMCAwMCAwMCAyMCA3OSAwMCA1QiA4MiAy
NSA1NCAgLi5HLi4uLi4uIHkuWy4lVAogICAgODE4MDogNEQgNTIgNUYgMDggNUYgNDggNDkgNDQg
MEMgNDEgRDAgMDEgMDAgMDggNUYgNDMgIE1SXy5fSElELkEuLi4uX0MKICAgIDgxOTA6IDUyIDUz
IDExIDEwIDBBIDBEIDQ3IDAxIDQwIDAwIDQwIDAwIDAwIDA0IDIyIDAxICBSUy4uLi5HLkAuQC4u
LiIuCiAgICA4MUEwOiAwMCA3OSAwMCA1QiA4MiA0MiAwNSA1MiA1NCA0MyAzMCAwOCA1RiA0OCA0
OSA0NCAgLnkuWy5CLlJUQzAuX0hJRAogICAgODFCMDogMEMgNDEgRDAgMEIgMDAgMDggNDIgNTUg
NDYgMzAgMTEgMEQgMEEgMEEgNDcgMDEgIC5BLi4uLkJVRjAuLi4uRy4KICAgIDgxQzA6IDcwIDAw
IDcwIDAwIDAwIDAyIDc5IDAwIDA4IDQyIDU1IDQ2IDMxIDExIDEwIDBBICBwLnAuLi55Li5CVUYx
Li4uCiAgICA4MUQwOiAwRCA0NyAwMSA3MCAwMCA3MCAwMCAwMCAwMiAyMiAwMCAwMSA3OSAwMCAx
NCAxOCAgLkcucC5wLi4uIi4ueS4uLgogICAgODFFMDogNUYgNDMgNTIgNTMgMDggQTAgMEMgOTMg
NDggNTAgNDUgNEUgMDEgQTQgNDIgNTUgIF9DUlMuLi4uSFBFTi4uQlUKICAgIDgxRjA6IDQ2IDMw
IEE0IDQyIDU1IDQ2IDMxIDVCIDgyIDIyIDUzIDUwIDRCIDUyIDA4IDVGICBGMC5CVUYxWy4iU1BL
Ui5fCiAgICA4MjAwOiA0OCA0OSA0NCAwQyA0MSBEMCAwOCAwMCAwOCA1RiA0MyA1MiA1MyAxMSAw
RCAwQSAgSElELkEuLi4uX0NSUy4uLgogICAgODIxMDogMEEgNDcgMDEgNjEgMDAgNjEgMDAgMDAg
MDEgNzkgMDAgNUIgODAgNTMgNEQgNDkgIC5HLmEuYS4uLnkuWy5TTUkKICAgIDgyMjA6IDMwIDAx
IDUzIDREIDQ5IDRGIDAxIDVCIDgxIDBCIDUzIDREIDQ5IDMwIDAxIDUzICAwLlNNSU8uWy4uU01J
MC5TCiAgICA4MjMwOiA0RCA0OSA0MyAwOCAxMCA0NyAzMCA1QyA1RiA1MyA0MiA1RiAxMCA0RiAy
RiA1MCAgTUlDLi5HMFxfU0JfLk8vUAogICAgODI0MDogNDMgNDkgMzAgNUIgODIgNDcgMkYgNTMg
MzkgMzAgMzAgMDggNUYgNDggNDkgNDQgIENJMFsuRy9TOTAwLl9ISUQKICAgIDgyNTA6IDBDIDQx
IEQwIDBDIDAyIDA4IDVGIDU1IDQ5IDQ0IDBCIDAwIDA3IDA4IDVGIDUzICAuQS4uLi5fVUlELi4u
Ll9TCiAgICA4MjYwOiA1NCA0MSAwQSAwRiAwOCA0MyA1MiA1MyA1RiAxMSA0MyAxNSAwQiA0RSAw
MSA0NyAgVEEuLi5DUlNfLkMuLk4uRwogICAgODI3MDogMDEgMTAgMDAgMTAgMDAgMDAgMTAgNDcg
MDEgMjIgMDAgMjIgMDAgMDAgMUUgNDcgIC4uLi4uLi5HLiIuIi4uLkcKICAgIDgyODA6IDAxIDYz
IDAwIDYzIDAwIDAwIDAxIDQ3IDAxIDY1IDAwIDY1IDAwIDAwIDAxIDQ3ICAuYy5jLi4uRy5lLmUu
Li5HCiAgICA4MjkwOiAwMSA2NyAwMCA2NyAwMCAwMCAwOSA0NyAwMSA3MiAwMCA3MiAwMCAwMCAw
RSA0NyAgLmcuZy4uLkcuci5yLi4uRwogICAgODJBMDogMDEgODAgMDAgODAgMDAgMDAgMDEgNDcg
MDEgODQgMDAgODQgMDAgMDAgMDMgNDcgIC4uLi4uLi5HLi4uLi4uLkcKICAgIDgyQjA6IDAxIDg4
IDAwIDg4IDAwIDAwIDAxIDQ3IDAxIDhDIDAwIDhDIDAwIDAwIDAzIDQ3ICAuLi4uLi4uRy4uLi4u
Li5HCiAgICA4MkMwOiAwMSA5MCAwMCA5MCAwMCAwMCAxMCA0NyAwMSBBMiAwMCBBMiAwMCAwMCAx
RSA0NyAgLi4uLi4uLkcuLi4uLi4uRwogICAgODJEMDogMDEgQjEgMDAgQjEgMDAgMDAgMDEgNDcg
MDEgRTAgMDAgRTAgMDAgMDAgMTAgNDcgIC4uLi4uLi5HLi4uLi4uLkcKICAgIDgyRTA6IDAxIEQw
IDA0IEQwIDA0IDAwIDAyIDQ3IDAxIDBCIDA0IDBCIDA0IDAwIDAxIDQ3ICAuLi4uLi4uRy4uLi4u
Li5HCiAgICA4MkYwOiAwMSBENiAwNCBENiAwNCAwMCAwMSA0NyAwMSAwMCAwQyAwMCAwQyAwMCAw
MiA0NyAgLi4uLi4uLkcuLi4uLi4uRwogICAgODMwMDogMDEgMTQgMEMgMTQgMEMgMDAgMDEgNDcg
MDEgNTAgMEMgNTAgMEMgMDAgMDIgNDcgIC4uLi4uLi5HLlAuUC4uLkcKICAgIDgzMTA6IDAxIDUy
IDBDIDUyIDBDIDAwIDAxIDQ3IDAxIDZDIDBDIDZDIDBDIDAwIDAxIDQ3ICAuUi5SLi4uRy5sLmwu
Li5HCiAgICA4MzIwOiAwMSA2RiAwQyA2RiAwQyAwMCAwMSA0NyAwMSBEOCAwQyBEOCAwQyAwMCAw
OCA0NyAgLm8uby4uLkcuLi4uLi4uRwogICAgODMzMDogMDEgMDAgMDAgMDAgMDAgMDAgMDAgNDcg
MDEgMDAgMDAgMDAgMDAgMDAgMDAgNDcgIC4uLi4uLi5HLi4uLi4uLkcKICAgIDgzNDA6IDAxIDAw
IDAwIDAwIDAwIDAwIDAwIDQ3IDAxIDAwIDA5IDAwIDA5IDAwIDEwIDQ3ICAuLi4uLi4uRy4uLi4u
Li5HCiAgICA4MzUwOiAwMSAxMCAwOSAxMCAwOSAwMCAxMCA0NyAwMSA2MCAwMCA2MCAwMCAwMCAw
MCA0NyAgLi4uLi4uLkcuYC5gLi4uRwogICAgODM2MDogMDEgNjQgMDAgNjQgMDAgMDAgMDAgODYg
MDkgMDAgMDEgMDAgMDAgMDAgMDAgMDAgIC5kLmQuLi4uLi4uLi4uLi4KICAgIDgzNzA6IDAwIDAw
IDAwIDg2IDA5IDAwIDAxIDAwIDAwIERDIEZFIDAwIDEwIDAwIDAwIDg2ICAuLi4uLi4uLi4uLi4u
Li4uCiAgICA4MzgwOiAwOSAwMCAwMSAwMCAwMCBFMCBGRSAwMCAxMCAwMCAwMCA4NiAwOSAwMCAw
MSAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgODM5MDogMDAgRDggRkUgMDAgMDAgMDEgMDAgODYg
MDkgMDAgMDEgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAgIDgzQTA6IDAwIDAw
IDAwIDg2IDA5IDAwIDAxIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDg2ICAuLi4uLi4uLi4uLi4u
Li4uCiAgICA4M0IwOiAwOSAwMCAwMSAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCA3OSAwMCAxNCA0
RSAxNyAgLi4uLi4uLi4uLi55Li5OLgogICAgODNDMDogNUYgNDMgNTIgNTMgMDAgOEIgNDMgNTIg
NTMgNUYgMEEgQzIgNTAgNDIgNDIgNUYgIF9DUlMuLkNSU18uLlBCQl8KICAgIDgzRDA6IDhCIDQz
IDUyIDUzIDVGIDBBIEM0IDUwIDQyIDQ4IDVGIDhDIDQzIDUyIDUzIDVGICAuQ1JTXy4uUEJIXy5D
UlNfCiAgICA4M0UwOiAwQSBDNyA1MCA0RCA0QyA1RiA3MCA1MCA0RCA0MiA1MyA1MCA0MiA0MiA1
RiA3MCAgLi5QTUxfcFBNQlNQQkJfcAogICAgODNGMDogNTAgNEQgNDIgNTMgNTAgNDIgNDggNUYg
NzAgNTAgNEQgNEMgNEUgNTAgNEQgNEMgIFBNQlNQQkhfcFBNTE5QTUwKICAgIDg0MDA6IDVGIEEw
IDRFIDA3IDUzIDREIDQyIDQyIDhCIDQzIDUyIDUzIDVGIDBBIEQyIDUzICBfLk4uU01CQi5DUlNf
Li5TCiAgICA4NDEwOiA0RCA0MiAzMSA4QiA0MyA1MiA1MyA1RiAwQSBENCA1MyA0RCA0OCAzMSA4
QyA0MyAgTUIxLkNSU18uLlNNSDEuQwogICAgODQyMDogNTIgNTMgNUYgMEEgRDcgNTMgNEQgNEMg
MzEgNzAgNTMgNEQgNDIgNDIgNTMgNEQgIFJTXy4uU01MMXBTTUJCU00KICAgIDg0MzA6IDQyIDMx
IDcwIDUzIDREIDQyIDQyIDUzIDREIDQ4IDMxIDcwIDUzIDREIDQyIDRDICBCMXBTTUJCU01IMXBT
TUJMCiAgICA4NDQwOiA1MyA0RCA0QyAzMSA4QiA0MyA1MiA1MyA1RiAwQSBDQSA1MyA0RCA0MiA1
QSA4QiAgU01MMS5DUlNfLi5TTUJaLgogICAgODQ1MDogNDMgNTIgNTMgNUYgMEEgQ0MgNTMgNEQg
NDggMzAgOEMgNDMgNTIgNTMgNUYgMEEgIENSU18uLlNNSDAuQ1JTXy4KICAgIDg0NjA6IENGIDUz
IDREIDRDIDMwIDcwIDUzIDREIDQyIDMwIDUzIDREIDQyIDVBIDcwIDUzICAuU01MMHBTTUIwU01C
WnBTCiAgICA4NDcwOiA0RCA0MiAzMCA1MyA0RCA0OCAzMCA3MCA1MyA0RCA0MiA0RCA1MyA0RCA0
QyAzMCAgTUIwU01IMHBTTUJNU01MMAogICAgODQ4MDogQTAgMkUgNDEgNTAgNDMgNDIgOEEgNDMg
NTIgNTMgNUYgMEEgRkMgNDEgNTAgNDIgIC4uQVBDQi5DUlNfLi5BUEIKICAgIDg0OTA6IDVGIDhB
IDQzIDUyIDUzIDVGIDBCIDAwIDAxIDQxIDUwIDRDIDVGIDcwIDQxIDUwICBfLkNSU18uLi5BUExf
cEFQCiAgICA4NEEwOiA0MyA0MiA0MSA1MCA0MiA1RiA3MCA0MSA1MCA0MyA0QyA0MSA1MCA0QyA1
RiA4QSAgQ0JBUEJfcEFQQ0xBUExfLgogICAgODRCMDogNDMgNTIgNTMgNUYgMEIgMkMgMDEgNTMg
NTAgNDkgNDIgOEEgNDMgNTIgNTMgNUYgIENSU18uLC5TUElCLkNSU18KICAgIDg0QzA6IDBCIDMw
IDAxIDUzIDUwIDQ5IDRDIDcwIDBDIDAwIDAwIEMxIEZFIDUzIDUwIDQ5ICAuMC5TUElMcC4uLi4u
U1BJCiAgICA4NEQwOiA0MiA3MCAwQiAwMCAxMCA1MyA1MCA0OSA0QyBBMCAzMSA1NyA0NCA1NCA0
MiA4QSAgQnAuLi5TUElMLjFXRFRCLgogICAgODRFMDogNDMgNTIgNTMgNUYgMEIgMzggMDEgNTcg
NDQgNTQgNDIgOEEgNDMgNTIgNTMgNUYgIENSU18uOC5XRFRCLkNSU18KICAgIDg0RjA6IDBCIDND
IDAxIDU3IDQ0IDU0IDRDIDcwIDVDIDU3IDQ0IDU0IDQyIDU3IDQ0IDU0ICAuPC5XRFRMcFxXRFRC
V0RUCiAgICA4NTAwOiA0MiA3MCA1QyA1NyA0NCA1NCA0QyA1NyA0NCA1NCA0QyA4QSA0MyA1MiA1
MyA1RiAgQnBcV0RUTFdEVEwuQ1JTXwogICAgODUxMDogMEIgNDQgMDEgNTIgNEYgNEQgNDIgOEEg
NDMgNTIgNTMgNUYgMEIgNDggMDEgNTIgIC5ELlJPTUIuQ1JTXy5ILlIKICAgIDg1MjA6IDRGIDRE
IDRDIDcwIDBDIDAwIDAwIDAwIEZGIDUyIDRGIDREIDQyIDcwIDBDIDAwICBPTUxwLi4uLi5ST01C
cC4uCiAgICA4NTMwOiAwMCAwMCAwMSA1MiA0RiA0RCA0QyBBNCA0MyA1MiA1MyA1RiAxMCAzMiA1
QyA1RiAgLi4uUk9NTC5DUlNfLjJcXwogICAgODU0MDogNTMgNDIgNUYgMTAgMkIgNTAgNDMgNDkg
MzAgMTAgMjUgNTMgNDIgNTIgNDcgMTQgIFNCXy4rUENJMC4lU0JSRy4KICAgIDg1NTA6IDBGIDUy
IDUyIDQ5IDRGIDA0IDcwIDBEIDUyIDUyIDQ5IDRGIDAwIDVCIDMxIDE0ICAuUlJJTy5wLlJSSU8u
WzEuCiAgICA4NTYwOiAwRiA1MiA0NCA0RCA0MSAwMyA3MCAwRCA3MiA0NCA0RCA0MSAwMCA1QiAz
MSA1QiAgLlJETUEucC5yRE1BLlsxWwogICAgODU3MDogODIgNDcgQTAgNTMgNDkgNEYgMzEgMDgg
NUYgNDggNDkgNDQgMEMgNDEgRDAgMEMgIC5HLlNJTzEuX0hJRC5BLi4KICAgIDg1ODA6IDAyIDA4
IDVGIDU1IDQ5IDQ0IDAwIDA4IDQzIDUyIDUzIDVGIDExIDJEIDBBIDJBICAuLl9VSUQuLkNSU18u
LS4qCiAgICA4NTkwOiA0NyAwMSAwMCAwMCAwMCAwMCAwMCAwMCA0NyAwMSAwMCAwMCAwMCAwMCAw
MCAwMCAgRy4uLi4uLi5HLi4uLi4uLgogICAgODVBMDogNDcgMDEgMDAgMDAgMDAgMDAgMDAgMDAg
NDcgMDEgMDAgMDAgMDAgMDAgMDAgMDAgIEcuLi4uLi4uRy4uLi4uLi4KICAgIDg1QjA6IDQ3IDAx
IDAwIDAwIDAwIDAwIDAwIDAwIDc5IDAwIDE0IDQ1IDE2IDVGIDQzIDUyICBHLi4uLi4uLnkuLkUu
X0NSCiAgICA4NUMwOiA1MyAwMCBBMCA0QyAwNCA5MCA5NSA1MyA1MCAzMSA0RiAwQiBGMCAwMyA5
NCA1MyAgUy4uTC4uLlNQMU8uLi4uUwogICAgODVEMDogNTAgMzEgNEYgMEEgRjAgOEIgNDMgNTIg
NTMgNUYgMEEgMDIgNDcgNTAgNDkgMzAgIFAxTy4uLkNSU18uLkdQSTAKICAgIDg1RTA6IDhCIDQz
IDUyIDUzIDVGIDBBIDA0IDQ3IDUwIDQ5IDMxIDhDIDQzIDUyIDUzIDVGICAuQ1JTXy4uR1BJMS5D
UlNfCiAgICA4NUYwOiAwQSAwNyA0NyA1MCA0OSA0QyA3MCA1MyA1MCAzMSA0RiA0NyA1MCA0OSAz
MCA3MCAgLi5HUElMcFNQMU9HUEkwcAogICAgODYwMDogNTMgNTAgMzEgNEYgNDcgNTAgNDkgMzEg
NzAgMEEgMDIgNDcgNTAgNDkgNEMgQTAgIFNQMU9HUEkxcC4uR1BJTC4KICAgIDg2MTA6IDQyIDA0
IDQ5IDRGIDMxIDQyIDhCIDQzIDUyIDUzIDVGIDBBIDBBIDQ3IDUwIDMxICBCLklPMUIuQ1JTXy4u
R1AxCiAgICA4NjIwOiAzMCA4QiA0MyA1MiA1MyA1RiAwQSAwQyA0NyA1MCAzMSAzMSA4QyA0MyA1
MiA1MyAgMC5DUlNfLi5HUDExLkNSUwogICAgODYzMDogNUYgMEEgMEYgNDcgNTAgNEMgMzEgNzAg
NDkgNEYgMzEgNDIgNDcgNTAgMzEgMzAgIF8uLkdQTDFwSU8xQkdQMTAKICAgIDg2NDA6IDcwIDQ5
IDRGIDMxIDQyIDQ3IDUwIDMxIDMxIDcwIDQ5IDRGIDMxIDRDIDQ3IDUwICBwSU8xQkdQMTFwSU8x
TEdQCiAgICA4NjUwOiA0QyAzMSBBMCA0MiAwNCA0OSA0RiAzMiA0MiA4QiA0MyA1MiA1MyA1RiAw
QSAxMiAgTDEuQi5JTzJCLkNSU18uLgogICAgODY2MDogNDcgNTAgMzIgMzAgOEIgNDMgNTIgNTMg
NUYgMEEgMTQgNDcgNTAgMzIgMzEgOEMgIEdQMjAuQ1JTXy4uR1AyMS4KICAgIDg2NzA6IDQzIDUy
IDUzIDVGIDBBIDE3IDQ3IDUwIDRDIDMyIDcwIDQ5IDRGIDMyIDQyIDQ3ICBDUlNfLi5HUEwycElP
MkJHCiAgICA4NjgwOiA1MCAzMiAzMCA3MCA0OSA0RiAzMiA0MiA0NyA1MCAzMiAzMSA3MCA0OSA0
RiAzMiAgUDIwcElPMkJHUDIxcElPMgogICAgODY5MDogNEMgNDcgNTAgNEMgMzIgQTAgNDIgMDQg
NDkgNEYgMzMgNDIgOEIgNDMgNTIgNTMgIExHUEwyLkIuSU8zQi5DUlMKICAgIDg2QTA6IDVGIDBB
IDFBIDQ3IDUwIDMzIDMwIDhCIDQzIDUyIDUzIDVGIDBBIDFDIDQ3IDUwICBfLi5HUDMwLkNSU18u
LkdQCiAgICA4NkIwOiAzMyAzMSA4QyA0MyA1MiA1MyA1RiAwQSAxRiA0NyA1MCA0QyAzMyA3MCA0
OSA0RiAgMzEuQ1JTXy4uR1BMM3BJTwogICAgODZDMDogMzMgNDIgNDcgNTAgMzMgMzAgNzAgNDkg
NEYgMzMgNDIgNDcgNTAgMzMgMzEgNzAgIDNCR1AzMHBJTzNCR1AzMXAKICAgIDg2RDA6IDQ5IDRG
IDMzIDRDIDQ3IDUwIDRDIDMzIEEwIDQyIDA0IDQ5IDRGIDM0IDQyIDhCICBJTzNMR1BMMy5CLklP
NEIuCiAgICA4NkUwOiA0MyA1MiA1MyA1RiAwQSAyMiA0NyA1MCAzNCAzMCA4QiA0MyA1MiA1MyA1
RiAwQSAgQ1JTXy4iR1A0MC5DUlNfLgogICAgODZGMDogMjQgNDcgNTAgMzQgMzEgOEMgNDMgNTIg
NTMgNUYgMEEgMjcgNDcgNTAgNEMgMzQgICRHUDQxLkNSU18uJ0dQTDQKICAgIDg3MDA6IDcwIDQ5
IDRGIDM0IDQyIDQ3IDUwIDM0IDMwIDcwIDQ5IDRGIDM0IDQyIDQ3IDUwICBwSU80QkdQNDBwSU80
QkdQCiAgICA4NzEwOiAzNCAzMSA3MCA0OSA0RiAzNCA0QyA0NyA1MCA0QyAzNCBBNCA0MyA1MiA1
MyA1RiAgNDFwSU80TEdQTDQuQ1JTXwogICAgODcyMDogMDggNDQgNDMgNDEgNTQgMTIgMkIgMTUg
MEEgMDIgMEEgMDMgMDEgMEEgRkYgMEEgIC5EQ0FULisuLi4uLi4uLi4KICAgIDg3MzA6IEZGIDBB
IEZGIDBBIEZGIDBBIEZGIDBBIEZGIDBBIEZGIDBBIDA1IDBBIEZGIDBBICAuLi4uLi4uLi4uLi4u
Li4uCiAgICA4NzQwOiBGRiAwQSBGRiAwQSAwNSAwQSBGRiAwQSAwNiAwQSBGRiAwQSBGRiAwQSBG
RiAwQSAgLi4uLi4uLi4uLi4uLi4uLgogICAgODc1MDogRkYgNUIgMDEgNEQgNTUgNTQgMzAgMDAg
MTQgMjYgNDUgNEUgNDYgNDcgMDEgNUIgIC5bLk1VVDAuLiZFTkZHLlsKICAgIDg3NjA6IDIzIDRE
IDU1IDU0IDMwIEZGIDBGIDcwIDQ1IDRFIDU0IDRCIDQ5IDRFIDQ0IDU4ICAjTVVUMC4ucEVOVEtJ
TkRYCiAgICA4NzcwOiA3MCA0NSA0RSA1NCA0QiA0OSA0RSA0NCA1OCA3MCA2OCA0QyA0NCA0RSA1
RiAxNCAgcEVOVEtJTkRYcGhMRE5fLgogICAgODc4MDogMTUgNDUgNTggNDYgNDcgMDAgNzAgNDUg
NTggNTQgNEIgNDkgNEUgNDQgNTggNUIgIC5FWEZHLnBFWFRLSU5EWFsKICAgIDg3OTA6IDI3IDRE
IDU1IDU0IDMwIDE0IDFEIDRDIDUwIDU0IDREIDAxIDQ1IDRFIDQ2IDQ3ICAnTVVUMC4uTFBUTS5F
TkZHCiAgICA4N0EwOiA0MyA0NyA0QyA0NCA2OCA3QiA0RiA1MCA1NCAzMCAwQSAwMiA2MCA0NSA1
OCA0NiAgQ0dMRGh7T1BUMC4uYEVYRgogICAgODdCMDogNDcgQTQgNjAgMTQgMkMgNTUgNDggNDkg
NDQgMDEgNDUgNEUgNDYgNDcgNDMgNDcgIEcuYC4sVUhJRC5FTkZHQ0cKICAgIDg3QzA6IDRDIDQ0
IDY4IDdCIDRGIDUwIDU0IDMxIDBBIDEwIDYwIDQ1IDU4IDQ2IDQ3IEEwICBMRGh7T1BUMS4uYEVY
RkcuCiAgICA4N0QwOiAwOCA2MCBBNCAwQyA0MSBEMCAwNSAxMCBBMSAwNyBBNCAwQyA0MSBEMCAw
NSAwMSAgLmAuLkEuLi4uLi4uQS4uLgogICAgODdFMDogNUIgODAgNDkgNEYgNDkgNDQgMDEgNTMg
NTAgMzEgNEYgMEEgMDIgNUIgODEgMTAgIFsuSU9JRC5TUDFPLi5bLi4KICAgIDg3RjA6IDQ5IDRG
IDQ5IDQ0IDAxIDQ5IDRFIDQ0IDU4IDA4IDQ0IDQxIDU0IDQxIDA4IDVCICBJT0lELklORFguREFU
QS5bCiAgICA4ODAwOiA4NiA0RCAwRSA0OSA0RSA0NCA1OCA0NCA0MSA1NCA0MSAwMSAwMCAzOCA0
QyA0NCAgLk0uSU5EWERBVEEuLjhMRAogICAgODgxMDogNEUgNUYgMDggMDAgNDggMEMgNTMgNDMg
NDYgMzEgMDggMDAgMDAgNTMgNDMgNDYgIE5fLi5ILlNDRjEuLi5TQ0YKICAgIDg4MjA6IDMyIDA4
IDAwIDAwIDUzIDQzIDQ2IDMzIDA4IDAwIDAwIDUzIDQzIDQ2IDM0IDA4ICAyLi4uU0NGMy4uLlND
RjQuCiAgICA4ODMwOiAwMCAwMCA1MyA0MyA0NiAzNSAwOCAwMCAwMCA1MyA0MyA0NiAzNiAwOCAw
MCAxMCAgLi5TQ0Y1Li4uU0NGNi4uLgogICAgODg0MDogNDMgNEIgNDMgNDYgMDggMDAgMTggNDMg
NTIgMzIgNDQgMDggMDAgMDggNTMgNDMgIENLQ0YuLi5DUjJELi4uU0MKICAgIDg4NTA6IDQ2IDQ2
IDA4IDAwIDAwIDQxIDQzIDU0IDUyIDA4IDAwIDQ4IDE3IDQ5IDRGIDQxICBGRi4uLkFDVFIuLkgu
SU9BCiAgICA4ODYwOiA0OCAwOCA0OSA0RiA0MSA0QyAwOCA0OSA0RiA0OCAzMiAwOCA0OSA0RiA0
QyAzMiAgSC5JT0FMLklPSDIuSU9MMgogICAgODg3MDogMDggMDAgNDAgMDYgNDkgNEUgNTQgNTIg
MDQgNDkgNEUgNTQgNTQgMDQgMDAgMTggIC4uQC5JTlRSLklOVFQuLi4KICAgIDg4ODA6IDQ0IDRE
IDQzIDQ4IDA4IDAwIDQ4IDM1IDUyIDQ3IDQ1IDMwIDA4IDUyIDQ3IDQ1ICBETUNILi5INVJHRTAu
UkdFCiAgICA4ODkwOiAzMSAwOCA1MiA0NyA0NSAzMiAwOCA1MiA0NyA0NSAzMyAwOCA1MiA0NyA0
NSAzNCAgMS5SR0UyLlJHRTMuUkdFNAogICAgODhBMDogMDggNTIgNDcgNDUgMzUgMDggNTIgNDcg
NDUgMzYgMDggNTIgNDcgNDUgMzcgMDggIC5SR0U1LlJHRTYuUkdFNy4KICAgIDg4QjA6IDUyIDQ3
IDQ1IDM4IDA4IDUyIDQ3IDQ1IDM5IDA4IDAwIDMwIDRGIDUwIDU0IDMwICBSR0U4LlJHRTkuLjBP
UFQwCiAgICA4OEMwOiAwOCA0RiA1MCA1NCAzMSAwOCA0RiA1MCA1NCAzMiAwOCA0RiA1MCA1NCAz
MyAwOCAgLk9QVDEuT1BUMi5PUFQzLgogICAgODhEMDogNEYgNTAgNTQgMzQgMDggNEYgNTAgNTQg
MzUgMDggNEYgNTAgNTQgMzYgMDggNEYgIE9QVDQuT1BUNS5PUFQ2Lk8KICAgIDg4RTA6IDUwIDU0
IDM3IDA4IDRGIDUwIDU0IDM4IDA4IDRGIDUwIDU0IDM5IDA4IDE0IDBGICBQVDcuT1BUOC5PUFQ5
Li4uCiAgICA4OEYwOiA0MyA0NyA0QyA0NCAwMSBBNCA4MyA4OCA0NCA0MyA0MSA1NCA2OCAwMCAx
NCA0RSAgQ0dMRC4uLi5EQ0FUaC4uTgogICAgODkwMDogMDUgNDQgNTMgNTQgNDEgMDEgNDUgNEUg
NDYgNDcgNDMgNDcgNEMgNDQgNjggNzAgIC5EU1RBLkVORkdDR0xEaHAKICAgIDg5MTA6IDQxIDQz
IDU0IDUyIDYwIDQ1IDU4IDQ2IDQ3IEEwIDA3IDkzIDYwIDBBIEZGIEE0ICBBQ1RSYEVYRkcuLi5g
Li4uCiAgICA4OTIwOiAwMCA3QiA2MCAwMSA2MCBBMCAxMiA5NSA2OCAwQSAxMCA3RCA0OSA0RiA1
MyA1NCAgLntgLmAuLi5oLi59SU9TVAogICAgODkzMDogNzkgNjAgNjggMDAgNDkgNEYgNTMgNTQg
QTAgMDUgNjAgQTQgMEEgMEYgQTEgMUUgIHlgaC5JT1NULi5gLi4uLi4KICAgIDg5NDA6IEEwIDE4
IDk1IDY4IDBBIDEwIEEwIDBFIDdCIDc5IDAxIDY4IDAwIDQ5IDRGIDUzICAuLi5oLi4uLnt5Lmgu
SU9TCiAgICA4OTUwOiA1NCAwMCBBNCAwQSAwRCBBMSAwMyBBNCAwMCBBMSAwMyBBNCAwMCAxNCA0
NiAwNiAgVC4uLi4uLi4uLi4uLi5GLgogICAgODk2MDogNDUgNTMgNTQgNDEgMDEgNDUgNEUgNDYg
NDcgNDMgNDcgNEMgNDQgNjggNzAgNDEgIEVTVEEuRU5GR0NHTERocEEKICAgIDg5NzA6IDQzIDU0
IDUyIDYwIDQ1IDU4IDQ2IDQ3IEEwIDA3IDkzIDYwIDBBIEZGIEE0IDAwICBDVFJgRVhGRy4uLmAu
Li4uCiAgICA4OTgwOiA3QiA2MCAwMSA2MCBBMCAxNiA5NCA2OCAwQSAwRiA3RCA0OSA0RiA0NSA1
MyA3OSAge2AuYC4uLmguLn1JT0VTeQogICAgODk5MDogNjAgN0IgNjggMEEgMEYgMDAgMDAgNDkg
NEYgNDUgNTMgQTAgMDUgNjAgQTQgMEEgIGB7aC4uLi5JT0VTLi5gLi4KICAgIDg5QTA6IDBGIEEx
IDIyIEEwIDFDIDk0IDY4IDBBIDBGIEEwIDEyIDdCIDc5IDAxIDdCIDY4ICAuLiIuLi5oLi4uLnt5
LntoCiAgICA4OUIwOiAwQSAwRiAwMCAwMCA0OSA0RiA0NSA1MyAwMCBBNCAwQSAwRCBBMSAwMyBB
NCAwMCAgLi4uLklPRVMuLi4uLi4uLgogICAgODlDMDogQTEgMDMgQTQgMDAgMTQgNEYgMDQgNDQg
NDMgNEUgNTQgMDIgNDUgNEUgNDYgNDcgIC4uLi4uTy5EQ05ULkVORkcKICAgIDg5RDA6IDQzIDQ3
IDRDIDQ0IDY4IEEwIDFDIDkwIDk1IDQ0IDREIDQzIDQ4IDBBIDA0IDkyICBDR0xEaC4uLi5ETUNI
Li4uCiAgICA4OUUwOiA5MyA3QiA0NCA0RCA0MyA0OCAwQSAwMyA2MSAwMCA1MiA0NCA0RCA0MSA2
OCA2OSAgLntETUNILi5hLlJETUFoaQogICAgODlGMDogNzUgNjEgNzAgNjkgNDEgNDMgNTQgNTIg
NzkgNDkgNEYgNDEgNDggMEEgMDggNjEgIHVhcGlBQ1RSeUlPQUguLmEKICAgIDhBMDA6IDdEIDQ5
IDRGIDQxIDRDIDYxIDYxIDUyIDUyIDQ5IDRGIDY4IDY5IDYxIDBBIDA4ICB9SU9BTGFhUlJJT2hp
YS4uCiAgICA4QTEwOiA0NSA1OCA0NiA0NyAwOCA0MyA1MiA1MyAzMSAxMSAxMyAwQSAxMCA0NyAw
MSAwMCAgRVhGRy5DUlMxLi4uLkcuLgogICAgOEEyMDogMDAgMDAgMDAgMDEgMDAgMjIgMDAgMDAg
MkEgMDAgMDAgNzkgMDAgOEIgNDMgNTIgIC4uLi4uIi4uKi4ueS4uQ1IKICAgIDhBMzA6IDUzIDMx
IDBBIDA5IDQ5IDUyIDUxIDREIDhDIDQzIDUyIDUzIDMxIDBBIDBDIDQ0ICBTMS4uSVJRTS5DUlMx
Li5ECiAgICA4QTQwOiA0RCA0MSA0RCA4QiA0MyA1MiA1MyAzMSAwQSAwMiA0OSA0RiAzMSAzMSA4
QiA0MyAgTUFNLkNSUzEuLklPMTEuQwogICAgOEE1MDogNTIgNTMgMzEgMEEgMDQgNDkgNEYgMzEg
MzIgOEMgNDMgNTIgNTMgMzEgMEEgMDcgIFJTMS4uSU8xMi5DUlMxLi4KICAgIDhBNjA6IDRDIDQ1
IDRFIDMxIDA4IDQzIDUyIDUzIDMyIDExIDFCIDBBIDE4IDQ3IDAxIDAwICBMRU4xLkNSUzIuLi4u
Ry4uCiAgICA4QTcwOiAwMCAwMCAwMCAwMSAwMCA0NyAwMSAwMCAwMCAwMCAwMCAwMSAwMCAyMiAw
MCAwMCAgLi4uLi5HLi4uLi4uLiIuLgogICAgOEE4MDogMkEgMDAgMDAgNzkgMDAgOEIgNDMgNTIg
NTMgMzIgMEEgMTEgNDkgNTIgNTEgNDUgICouLnkuLkNSUzIuLklSUUUKICAgIDhBOTA6IDhDIDQz
IDUyIDUzIDMyIDBBIDE0IDQ0IDREIDQxIDQ1IDhCIDQzIDUyIDUzIDMyICAuQ1JTMi4uRE1BRS5D
UlMyCiAgICA4QUEwOiAwQSAwMiA0OSA0RiAzMiAzMSA4QiA0MyA1MiA1MyAzMiAwQSAwNCA0OSA0
RiAzMiAgLi5JTzIxLkNSUzIuLklPMgogICAgOEFCMDogMzIgOEMgNDMgNTIgNTMgMzIgMEEgMDcg
NEMgNDUgNEUgMzIgOEIgNDMgNTIgNTMgIDIuQ1JTMi4uTEVOMi5DUlMKICAgIDhBQzA6IDMyIDBB
IDBBIDQ5IDRGIDMzIDMxIDhCIDQzIDUyIDUzIDMyIDBBIDBDIDQ5IDRGICAyLi5JTzMxLkNSUzIu
LklPCiAgICA4QUQwOiAzMyAzMiA4QyA0MyA1MiA1MyAzMiAwQSAwRiA0QyA0NSA0RSAzMyAwOCA0
MyA1MiAgMzIuQ1JTMi4uTEVOMy5DUgogICAgOEFFMDogNTMgMzMgMTEgMTQgMEEgMTEgNDcgMDEg
MDAgMDAgMDAgMDAgMDEgMDAgMjMgMDAgIFMzLi4uLkcuLi4uLi4uIy4KICAgIDhBRjA6IDAwIDE4
IDJBIDAwIDAwIDc5IDAwIDhCIDQzIDUyIDUzIDMzIDBBIDA5IDQ5IDUyICAuLiouLnkuLkNSUzMu
LklSCiAgICA4QjAwOiA1MSA1NCA4QyA0MyA1MiA1MyAzMyAwQSAwQiA0OSA1MiA1MSA1MyA4QyA0
MyA1MiAgUVQuQ1JTMy4uSVJRUy5DUgogICAgOEIxMDogNTMgMzMgMEEgMEQgNDQgNEQgNDEgNTQg
OEIgNDMgNTIgNTMgMzMgMEEgMDIgNDkgIFMzLi5ETUFULkNSUzMuLkkKICAgIDhCMjA6IDRGIDM0
IDMxIDhCIDQzIDUyIDUzIDMzIDBBIDA0IDQ5IDRGIDM0IDMyIDhDIDQzICBPNDEuQ1JTMy4uSU80
Mi5DCiAgICA4QjMwOiA1MiA1MyAzMyAwQSAwNyA0QyA0NSA0RSAzNCAxNCA0RCAwNyA0NCA0MyA1
MiA1MyAgUlMzLi5MRU40Lk0uRENSUwogICAgOEI0MDogMDIgNDUgNEUgNDYgNDcgNDMgNDcgNEMg
NDQgNjggNzkgNDkgNEYgNDEgNDggMEEgIC5FTkZHQ0dMRGh5SU9BSC4KICAgIDhCNTA6IDA4IDQ5
IDRGIDMxIDMxIDdEIDQ5IDRGIDQxIDRDIDQ5IDRGIDMxIDMxIDQ5IDRGICAuSU8xMX1JT0FMSU8x
MUlPCiAgICA4QjYwOiAzMSAzMSA3MCA0OSA0RiAzMSAzMSA0OSA0RiAzMSAzMiA3MCAwQSAwOCA0
QyA0NSAgMTFwSU8xMUlPMTJwLi5MRQogICAgOEI3MDogNEUgMzEgQTAgMEYgNDkgNEUgNTQgNTIg
NzkgMDEgNDkgNEUgNTQgNTIgNDkgNTIgIE4xLi5JTlRSeS5JTlRSSVIKICAgIDhCODA6IDUxIDRE
IEExIDA3IDcwIDAwIDQ5IDUyIDUxIDREIEEwIDEyIDkxIDk0IDQ0IDREICBRTS4ucC5JUlFNLi4u
LkRNCiAgICA4QjkwOiA0MyA0OCAwQSAwMyA5MyA2OSAwMCA3MCAwMCA0NCA0RCA0MSA0RCBBMSAx
MCA3QiAgQ0guLi5pLnAuRE1BTS4uewogICAgOEJBMDogNDQgNEQgNDMgNDggMEEgMDMgNjEgNzkg
MDEgNjEgNDQgNEQgNDEgNEQgNDUgNTggIERNQ0guLmF5LmFETUFNRVgKICAgIDhCQjA6IDQ2IDQ3
IEE0IDQzIDUyIDUzIDMxIDE0IDQ1IDBBIDQ0IDQzIDUyIDMyIDAyIDQ1ICBGRy5DUlMxLkUuRENS
Mi5FCiAgICA4QkMwOiA0RSA0NiA0NyA0MyA0NyA0QyA0NCA2OCA3OSA0OSA0RiA0MSA0OCAwQSAw
OCA0OSAgTkZHQ0dMRGh5SU9BSC4uSQogICAgOEJEMDogNEYgMzIgMzEgN0QgNDkgNEYgNDEgNEMg
NDkgNEYgMzIgMzEgNDkgNEYgMzIgMzEgIE8yMX1JT0FMSU8yMUlPMjEKICAgIDhCRTA6IDcwIDQ5
IDRGIDMyIDMxIDQ5IDRGIDMyIDMyIDcwIDBBIDA4IDRDIDQ1IDRFIDMyICBwSU8yMUlPMjJwLi5M
RU4yCiAgICA4QkYwOiA3OSA0OSA0RiA0OCAzMiAwQSAwOCA0OSA0RiAzMyAzMSA3RCA0OSA0RiA0
QyAzMiAgeUlPSDIuLklPMzF9SU9MMgogICAgOEMwMDogNDkgNEYgMzMgMzEgNDkgNEYgMzMgMzEg
NzAgNDkgNEYgMzMgMzEgNDkgNEYgMzMgIElPMzFJTzMxcElPMzFJTzMKICAgIDhDMTA6IDMyIDcw
IDBBIDA4IDRDIDQ1IDRFIDMzIEEwIDBGIDQ5IDRFIDU0IDUyIDc5IDAxICAycC4uTEVOMy4uSU5U
UnkuCiAgICA4QzIwOiA0OSA0RSA1NCA1MiA0OSA1MiA1MSA0NSBBMSAwNyA3MCAwMCA0OSA1MiA1
MSA0NSAgSU5UUklSUUUuLnAuSVJRRQogICAgOEMzMDogQTAgMTIgOTEgOTQgNDQgNEQgNDMgNDgg
MEEgMDMgOTMgNjkgMDAgNzAgMDAgNDQgIC4uLi5ETUNILi4uaS5wLkQKICAgIDhDNDA6IDREIDQx
IDQ1IEExIDEwIDdCIDQ0IDREIDQzIDQ4IDBBIDAzIDYxIDc5IDAxIDYxICBNQUUuLntETUNILi5h
eS5hCiAgICA4QzUwOiA0NCA0RCA0MSA0NSA0NSA1OCA0NiA0NyBBNCA0MyA1MiA1MyAzMiAxNCA0
RCAwNyAgRE1BRUVYRkcuQ1JTMi5NLgogICAgOEM2MDogNDQgNDMgNTIgMzMgMDIgNDUgNEUgNDYg
NDcgNDMgNDcgNEMgNDQgNjggNzkgNDkgIERDUjMuRU5GR0NHTERoeUkKICAgIDhDNzA6IDRGIDQx
IDQ4IDBBIDA4IDQ5IDRGIDM0IDMxIDdEIDQ5IDRGIDQxIDRDIDQ5IDRGICBPQUguLklPNDF9SU9B
TElPCiAgICA4QzgwOiAzNCAzMSA0OSA0RiAzNCAzMSA3MCA0OSA0RiAzNCAzMSA0OSA0RiAzNCAz
MiA3MCAgNDFJTzQxcElPNDFJTzQycAogICAgOEM5MDogMEEgMDggNEMgNDUgNEUgMzQgQTAgMEYg
NDkgNEUgNTQgNTIgNzkgMDEgNDkgNEUgIC4uTEVONC4uSU5UUnkuSU4KICAgIDhDQTA6IDU0IDUy
IDQ5IDUyIDUxIDU0IEExIDA3IDcwIDAwIDQ5IDUyIDUxIDU0IEEwIDEyICBUUklSUVQuLnAuSVJR
VC4uCiAgICA4Q0IwOiA5MSA5NCA0NCA0RCA0MyA0OCAwQSAwMyA5MyA2OSAwMCA3MCAwMCA0NCA0
RCA0MSAgLi5ETUNILi4uaS5wLkRNQQogICAgOENDMDogNTQgQTEgMTAgN0IgNDQgNEQgNDMgNDgg
MEEgMDMgNjEgNzkgMDEgNjEgNDQgNEQgIFQuLntETUNILi5heS5hRE0KICAgIDhDRDA6IDQxIDU0
IDQ1IDU4IDQ2IDQ3IEE0IDQzIDUyIDUzIDMzIDE0IDQ1IDA5IDQ0IDUzICBBVEVYRkcuQ1JTMy5F
LkRTCiAgICA4Q0UwOiA1MiA1MyAwMiBBMCAxMiA3QiA5MyA2OSAwQSAwMiA0QyA1MCA1NCA0RCA2
OSAwMCAgUlMuLi57LmkuLkxQVE1pLgogICAgOENGMDogNDQgNTMgNTIgMzIgNjggNjkgQTEgNEEg
MDcgOEIgNjggMEEgMDkgNDkgNTIgNTEgIERTUjJoaS5KLi5oLi5JUlEKICAgIDhEMDA6IDREIDhD
IDY4IDBBIDBDIDQ0IDREIDQxIDREIDhCIDY4IDBBIDAyIDQ5IDRGIDMxICBNLmguLkRNQU0uaC4u
SU8xCiAgICA4RDEwOiAzMSA0NSA0RSA0NiA0NyA0MyA0NyA0QyA0NCA2OSA3QiA0OSA0RiAzMSAz
MSAwQSAgMUVORkdDR0xEaXtJTzExLgogICAgOEQyMDogRkYgNDkgNEYgNDEgNEMgN0EgNDkgNEYg
MzEgMzEgMEEgMDggNDkgNEYgNDEgNDggIC5JT0FMeklPMTEuLklPQUgKICAgIDhEMzA6IEEwIDEy
IDQ5IDUyIDUxIDREIDgyIDQ5IDUyIDUxIDREIDYwIDc0IDYwIDAxIDQ5ICAuLklSUU0uSVJRTWB0
YC5JCiAgICA4RDQwOiA0RSA1NCA1MiBBMSAwNyA3MCAwMCA0OSA0RSA1NCA1MiBBMCAxMiA0NCA0
RCA0MSAgTlRSLi5wLklOVFIuLkRNQQogICAgOEQ1MDogNEQgODIgNDQgNEQgNDEgNEQgNjAgNzQg
NjAgMDEgNDQgNEQgNDMgNDggQTEgMDggIE0uRE1BTWB0YC5ETUNILi4KICAgIDhENjA6IDcwIDBB
IDA0IDQ0IDREIDQzIDQ4IDQ1IDU4IDQ2IDQ3IDQ0IDQzIDRFIDU0IDY5ICBwLi5ETUNIRVhGR0RD
TlRpCiAgICA4RDcwOiAwMSAxNCA0RCAwOSA0NCA1MyA1MiAzMiAwMiA4QiA2OCAwQSAxMSA0OSA1
MiA1MSAgLi5NLkRTUjIuLmguLklSUQogICAgOEQ4MDogNDUgOEMgNjggMEEgMTQgNDQgNEQgNDEg
NDUgOEIgNjggMEEgMDIgNDkgNEYgMzIgIEUuaC4uRE1BRS5oLi5JTzIKICAgIDhEOTA6IDMxIDhC
IDY4IDBBIDBBIDQ5IDRGIDMzIDMxIDQ1IDRFIDQ2IDQ3IDQzIDQ3IDRDICAxLmguLklPMzFFTkZH
Q0dMCiAgICA4REEwOiA0NCA2OSA3QiA0OSA0RiAzMiAzMSAwQSBGRiA0OSA0RiA0MSA0QyA3QSA0
OSA0RiAgRGl7SU8yMS4uSU9BTHpJTwogICAgOERCMDogMzIgMzEgMEEgMDggNDkgNEYgNDEgNDgg
N0IgNDkgNEYgMzMgMzEgMEEgRkYgNDkgIDIxLi5JT0FIe0lPMzEuLkkKICAgIDhEQzA6IDRGIDRD
IDMyIDdBIDQ5IDRGIDMzIDMxIDBBIDA4IDQ5IDRGIDQ4IDMyIEEwIDEyICBPTDJ6SU8zMS4uSU9I
Mi4uCiAgICA4REQwOiA0OSA1MiA1MSA0NSA4MiA0OSA1MiA1MSA0NSA2MCA3NCA2MCAwMSA0OSA0
RSA1NCAgSVJRRS5JUlFFYHRgLklOVAogICAgOERFMDogNTIgQTEgMDcgNzAgMDAgNDkgNEUgNTQg
NTIgQTAgMTIgNDQgNEQgNDEgNDUgODIgIFIuLnAuSU5UUi4uRE1BRS4KICAgIDhERjA6IDQ0IDRE
IDQxIDQ1IDYwIDc0IDYwIDAxIDQ0IDREIDQzIDQ4IEExIDA4IDcwIDBBICBETUFFYHRgLkRNQ0gu
LnAuCiAgICA4RTAwOiAwNCA0NCA0RCA0MyA0OCA0NSA1OCA0NiA0NyA0NCA0MyA0RSA1NCA2OSAw
MSAxNCAgLkRNQ0hFWEZHRENOVGkuLgogICAgOEUxMDogNDcgMDggNDQgNTMgNTIgMzMgMDIgOEIg
NjggMEEgMDIgNDkgNEYgMzQgMzEgOEIgIEcuRFNSMy4uaC4uSU80MS4KICAgIDhFMjA6IDY4IDBB
IDA5IDQ5IDUyIDUxIDU0IDhDIDY4IDBBIDBCIDQ5IDUyIDUxIDUzIDhDICBoLi5JUlFULmguLklS
UVMuCiAgICA4RTMwOiA2OCAwQSAwRCA0NCA0RCA0MSA1NCA0NSA0RSA0NiA0NyA0MyA0NyA0QyA0
NCA2OSAgaC4uRE1BVEVORkdDR0xEaQogICAgOEU0MDogN0IgNDkgNEYgMzQgMzEgMEEgRkYgNDkg
NEYgNDEgNEMgN0EgNDkgNEYgMzQgMzEgIHtJTzQxLi5JT0FMeklPNDEKICAgIDhFNTA6IDBBIDA4
IDQ5IDRGIDQxIDQ4IEEwIDEyIDQ5IDUyIDUxIDU0IDgyIDQ5IDUyIDUxICAuLklPQUguLklSUVQu
SVJRCiAgICA4RTYwOiA1NCA2MCA3NCA2MCAwMSA0OSA0RSA1NCA1MiBBMSAwNyA3MCAwMCA0OSA0
RSA1NCAgVGB0YC5JTlRSLi5wLklOVAogICAgOEU3MDogNTIgQTAgMTIgNDQgNEQgNDEgNTQgODIg
NDQgNEQgNDEgNTQgNjAgNzQgNjAgMDEgIFIuLkRNQVQuRE1BVGB0YC4KICAgIDhFODA6IDQ0IDRE
IDQzIDQ4IEExIDA4IDcwIDBBIDA0IDQ0IDREIDQzIDQ4IDQ1IDU4IDQ2ICBETUNILi5wLi5ETUNI
RVhGCiAgICA4RTkwOiA0NyA0NCA0MyA0RSA1NCA2OSAwMSAwOCA1MCA0RCA0NiA0NyAwMCAxNCA0
NSAwOCAgR0RDTlRpLi5QTUZHLi5FLgogICAgOEVBMDogNTMgNDkgNEYgNTMgMDEgNzAgMEQgNTMg
NDkgNEYgNTMgMDAgNUIgMzEgQTAgNDQgIFNJT1MucC5TSU9TLlsxLkQKICAgIDhFQjA6IDA3IDky
IDkzIDBBIDA1IDY4IDQ1IDRFIDQ2IDQ3IDBBIDBBIDcwIDAwIDRGIDUwICAuLi4uLmhFTkZHLi5w
Lk9QCiAgICA4RUMwOiA1NCAzNiA3MCAwMCA0RiA1MCA1NCAzNyBBMCAxMCA0QiA0MiA0NiA0NyA3
RCA0RiAgVDZwLk9QVDcuLktCRkd9TwogICAgOEVEMDogNTAgNTQgMzYgMEEgMTAgNEYgNTAgNTQg
MzYgQTEgMEMgN0IgNEYgNTAgNTQgMzYgIFBUNi4uT1BUNi4ue09QVDYKICAgIDhFRTA6IDBBIEVG
IDRGIDUwIDU0IDM2IEEwIDEwIDREIDUzIDQ2IDQ3IDdEIDRGIDUwIDU0ICAuLk9QVDYuLk1TRkd9
T1BUCiAgICA4RUYwOiAzNiAwQSAyMCA0RiA1MCA1NCAzNiBBMSAwQyA3QiA0RiA1MCA1NCAzNiAw
QSBERiAgNi4gT1BUNi4ue09QVDYuLgogICAgOEYwMDogNEYgNTAgNTQgMzYgNzAgMEEgRkYgNEYg
NTAgNTQgMzMgNzAgMEEgRkYgNEYgNTAgIE9QVDZwLi5PUFQzcC4uT1AKICAgIDhGMTA6IDU0IDM0
IDdEIDAxIDRGIDUwIDU0IDMyIDYwIDcwIDYwIDRGIDUwIDU0IDMyIDQ1ICBUNH0uT1BUMmBwYE9Q
VDJFCiAgICA4RjIwOiA1OCA0NiA0NyAxNCAzRCA1MyA0OSA0RiA1NyAwMSA3MCAwRCA1MyA0OSA0
RiA1NyAgWEZHLj1TSU9XLnAuU0lPVwogICAgOEYzMDogMDAgNUIgMzEgNDUgNEUgNDYgNDcgMEEg
MEEgNzAgMEEgRkYgNEYgNTAgNTQgMzMgIC5bMUVORkcuLnAuLk9QVDMKICAgIDhGNDA6IDcwIDBB
IEZGIDRGIDUwIDU0IDM0IDdCIDRGIDUwIDU0IDM2IDBBIENGIDRGIDUwICBwLi5PUFQ0e09QVDYu
Lk9QCiAgICA4RjUwOiA1NCAzNiA3QiA0RiA1MCA1NCAzMiAwQSBGRSA0RiA1MCA1NCAzMiA0NSA1
OCA0NiAgVDZ7T1BUMi4uT1BUMkVYRgogICAgOEY2MDogNDcgMTQgMDYgNTMgNDkgNEYgNDggMDAg
MTQgMEYgNUYgNTAgNTIgNTcgMDAgQTQgIEcuLlNJT0guLi5fUFJXLi4KICAgIDhGNzA6IDQ3IDUw
IDUyIDU3IDBBIDFEIDBBIDAzIDVCIDgyIDQyIDBFIDU1IDQxIDUyIDMxICBHUFJXLi4uLlsuQi5V
QVIxCiAgICA4RjgwOiAwOCA1RiA0OCA0OSA0NCAwQyA0MSBEMCAwNSAwMSAwOCA1RiA1NSA0OSA0
NCAwMCAgLl9ISUQuQS4uLi5fVUlELgogICAgOEY5MDogMDggNEMgNDQgNEUgNUYgMEEgMDIgMTQg
MTMgNUYgNTMgNTQgNDEgMDAgQTQgNUUgIC5MRE5fLi4uLl9TVEEuLl4KICAgIDhGQTA6IDVFIDJF
IDUzIDQ5IDRGIDMxIDQ0IDUzIDU0IDQxIDAwIDE0IDEzIDVGIDQ0IDQ5ICBeLlNJTzFEU1RBLi4u
X0RJCiAgICA4RkIwOiA1MyAwMCA1RSA1RSAyRSA1MyA0OSA0RiAzMSA0NCA0MyA0RSA1NCAwMCAw
MCAxNCAgUy5eXi5TSU8xRENOVC4uLgogICAgOEZDMDogMTQgNUYgNDMgNTIgNTMgMDAgQTQgNUUg
NUUgMkUgNTMgNDkgNEYgMzEgNDQgNDMgIC5fQ1JTLi5eXi5TSU8xREMKICAgIDhGRDA6IDUyIDUz
IDAwIDAwIDE0IDEzIDVGIDUzIDUyIDUzIDAxIDVFIDVFIDJFIDUzIDQ5ICBSUy4uLi5fU1JTLl5e
LlNJCiAgICA4RkUwOiA0RiAzMSA0NCA1MyA1MiA1MyA2OCAwMCAwOCA1RiA0NCA0NCA0RSAwRCA0
MyA0RiAgTzFEU1JTaC4uX0RETi5DTwogICAgOEZGMDogNEQgMzEgMDAgMDggNUYgNTAgNTIgNTMg
MTEgNDMgMDUgMEEgNEYgMzEgMDAgNDcgIE0xLi5fUFJTLkMuLk8xLkcKICAgIDkwMDA6IDAxIEY4
IDAzIEY4IDAzIDAxIDA4IDIyIDEwIDAwIDJBIDAwIDAwIDMwIDQ3IDAxICAuLi4uLi4uIi4uKi4u
MEcuCiAgICA5MDEwOiBGOCAwMyBGOCAwMyAwMSAwOCAyMiAxMCAwMCAyQSAwMCAwMCAzMCA0NyAw
MSBGOCAgLi4uLi4uIi4uKi4uMEcuLgogICAgOTAyMDogMDIgRjggMDIgMDEgMDggMjIgMDggMDAg
MkEgMDAgMDAgMzAgNDcgMDEgRTggMDMgIC4uLi4uIi4uKi4uMEcuLi4KICAgIDkwMzA6IEU4IDAz
IDAxIDA4IDIyIDEwIDAwIDJBIDAwIDAwIDMwIDQ3IDAxIEU4IDAyIEU4ICAuLi4uIi4uKi4uMEcu
Li4uCiAgICA5MDQwOiAwMiAwMSAwOCAyMiAwOCAwMCAyQSAwMCAwMCAzOCA3OSAwMCAxNCAwRiA1
RiA1MCAgLi4uIi4uKi4uOHkuLi5fUAogICAgOTA1MDogNTIgNTcgMDAgQTQgNDcgNTAgNTIgNTcg
MEEgMDMgMEEgMDQgNUIgODIgMjUgNDggIFJXLi5HUFJXLi4uLlsuJUgKICAgIDkwNjA6IDQ4IDRE
IDQ0IDA4IDVGIDQ4IDQ5IDQ0IDBDIDQxIEQwIDBDIDA4IDA4IDVGIDU1ICBITUQuX0hJRC5BLi4u
Ll9VCiAgICA5MDcwOiA0OSA0NCAwMSAwOCA0QyA0NCA0RSA1RiAwQSAwQiAxNCAwOCA1RiA1MyA1
NCA0MSAgSUQuLkxETl8uLi4uX1NUQQogICAgOTA4MDogMDAgQTQgMDAgNUIgODIgMEYgNDQgMzAg
MzAgMzggMDggNUYgNDEgNDQgNTIgMEMgIC4uLlsuLkQwMDguX0FEUi4KICAgIDkwOTA6IDA2IDAw
IDE0IDAwIDVCIDgyIDRCIEIyIDUwIDQzIDQ5IDMxIDA4IDVGIDQ4IDQ5ICAuLi4uWy5LLlBDSTEu
X0hJCiAgICA5MEEwOiA0NCAwQyA0MSBEMCAwQSAwOCAwOCA1RiA0MyA0OSA0NCAwQyA0MSBEMCAw
QSAwMyAgRC5BLi4uLl9DSUQuQS4uLgogICAgOTBCMDogMDggNUYgNDEgNDQgNTIgMDAgMTQgMDkg
NUUgNDIgNEUgMzAgMzEgMDAgQTQgMDEgIC5fQURSLi4uXkJOMDEuLi4KICAgIDkwQzA6IDE0IDBC
IDVGIDQyIDQyIDRFIDAwIEE0IDQyIDRFIDMwIDMxIDA4IDVGIDU1IDQ5ICAuLl9CQk4uLkJOMDEu
X1VJCiAgICA5MEQwOiA0NCAwMSAxNCAxNiA1RiA1MCA1MiA1NCAwMCBBMCAwQSA1MCA0OSA0MyA0
RCBBNCAgRC4uLl9QUlQuLi5QSUNNLgogICAgOTBFMDogNDEgNTIgMzAgMzEgQTQgNTAgNDQgMzAg
MzEgMDggNDMgNTAgNTIgNDIgMDEgMDggIEFSMDEuUEQwMS5DUFJCLi4KICAgIDkwRjA6IDRDIDU2
IDQ3IDQxIDBBIDAwIDA4IDUzIDU0IDQxIDU2IDBBIDBGIDA4IDQyIDUyICBMVkdBLi4uU1RBVi4u
LkJSCiAgICA5MTAwOiA0MiA1RiAwQiA0MCAwMCAwOCA0MiA1MiA0QyA1RiAwQiA0MCAwMCAwOCA0
OSA0RiAgQl8uQC4uQlJMXy5ALi5JTwogICAgOTExMDogNDIgNUYgMEIgMDAgNDAgMDggNDkgNEYg
NEMgNUYgMEIgMDAgMzAgMDggNEQgNDIgIEJfLi5ALklPTF8uLjAuTUIKICAgIDkxMjA6IDQyIDVG
IDBDIDAwIDAwIDAwIEMwIDA4IDREIDQyIDRDIDVGIDBDIDAwIDAwIDAwICBCXy4uLi4uLk1CTF8u
Li4uCiAgICA5MTMwOiAwMSAwOCA0RCA0MSA0MiA0QyAwRSAwMCAwMCA0MCAyMCA0MCAwNiAwMCAw
MCAwOCAgLi5NQUJMLi4uQCBALi4uLgogICAgOTE0MDogNEQgNDEgNDIgNDggMEMgMDAgMDAgMDEg
MDAgMDggNEQgNDEgNEQgNEMgMEMgMDAgIE1BQkguLi4uLi5NQU1MLi4KICAgIDkxNTA6IDAwIDAx
IDAwIDA4IDREIDQxIDREIDQ4IDBDIDAwIDAwIDAxIDAwIDA4IDREIDQxICAuLi4uTUFNSC4uLi4u
Lk1BCiAgICA5MTYwOiA0QyA0QyAwRSAwMCAwMCAwMCA5MyA1OSAwMCAwMCAwMCAwOCA0RCA0MSA0
QyA0OCAgTEwuLi4uLlkuLi4uTUFMSAogICAgOTE3MDogMEMgMDAgMDAgMDEgMDAgMDggNTAgNTIg
NTggNEQgMEIgMDAgMDAgMDggNDMgNTIgIC4uLi4uLlBSWE0uLi4uQ1IKICAgIDkxODA6IDUzIDMy
IDExIDQ4IDA5IDBBIDk0IDg4IDBEIDAwIDAyIDBDIDAwIDAwIDAwIDgwICBTMi5ILi4uLi4uLi4u
Li4uCiAgICA5MTkwOiAwMCBGRiAwMCAwMCAwMCA4MCAwMCA4OCAwRCAwMCAwMSAwQyAwMyAwMCAw
MCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgOTFBMDogMDAgMDAgMDAgMDAgMDAgMDAgMDAgODgg
MEQgMDAgMDEgMEMgMDMgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAgIDkxQjA6IDAwIDAw
IDAwIDAwIDAwIDAwIDAwIDg3IDE3IDAwIDAwIDBDIDAzIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4u
Li4uCiAgICA5MUMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgOTFEMDogMDAgODcgMTcgMDAgMDAgMEMgMDMgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgODAgRkYgIC4uLi4uLi4uLi4uLi4uLi4KICAgIDkxRTA6IEZGIEZG
IEZGIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDgwIDhBIDJCIDAwIDAwIDBDICAuLi4uLi4uLi4uLi4r
Li4uCiAgICA5MUYwOiAwMyAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgOTIwMDogMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAgIDkyMTA6IDAwIDAw
IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDc5IDAwIDE0IDBCIDVGIDUzIDU0ICAuLi4uLi4uLi55Li4u
X1NUCiAgICA5MjIwOiA0MSAwMCBBNCA1MyA1NCA0MSA1NiAxNCA0QSAxOSA1RiA0MyA1MiA1MyAw
OCA4QiAgQS4uU1RBVi5KLl9DUlMuLgogICAgOTIzMDogNDMgNTIgNTMgMzIgMEEgMDggNEQgNDkg
NEUgMzIgOEIgNDMgNTIgNTMgMzIgMEEgIENSUzIuLk1JTjIuQ1JTMi4KICAgIDkyNDA6IDBBIDRE
IDQxIDU4IDMyIDhCIDQzIDUyIDUzIDMyIDBBIDBFIDRDIDQ1IDRFIDMyICAuTUFYMi5DUlMyLi5M
RU4yCiAgICA5MjUwOiA3MCA0MiA1MiA0MiA1RiA0RCA0OSA0RSAzMiA3MCA0MiA1MiA0QyA1RiA0
QyA0NSAgcEJSQl9NSU4ycEJSTF9MRQogICAgOTI2MDogNEUgMzIgNzAgNEMgNDUgNEUgMzIgNjEg
NzIgNEQgNDkgNEUgMzIgNzYgNjEgNEQgIE4ycExFTjJhck1JTjJ2YU0KICAgIDkyNzA6IDQxIDU4
IDMyIDhCIDQzIDUyIDUzIDMyIDBBIDI4IDREIDQ5IDRFIDM0IDhCIDQzICBBWDIuQ1JTMi4oTUlO
NC5DCiAgICA5MjgwOiA1MiA1MyAzMiAwQSAyQSA0RCA0MSA1OCAzNCA4QiA0MyA1MiA1MyAzMiAw
QSAyRSAgUlMyLipNQVg0LkNSUzIuLgogICAgOTI5MDogNEMgNDUgNEUgMzQgNzAgNDkgNEYgNDIg
NUYgNEQgNDkgNEUgMzQgNzAgNDkgNEYgIExFTjRwSU9CX01JTjRwSU8KICAgIDkyQTA6IDRDIDVG
IDRDIDQ1IDRFIDM0IDcwIDRDIDQ1IDRFIDM0IDYxIDcyIDREIDQ5IDRFICBMX0xFTjRwTEVONGFy
TUlOCiAgICA5MkIwOiAzNCA3NiA2MSA0RCA0MSA1OCAzNCBBMCA0RCAwNyA0QyA1NiA0NyA0MSA4
QiA0MyAgNHZhTUFYNC5NLkxWR0EuQwogICAgOTJDMDogNTIgNTMgMzIgMEEgMTggNDkgNEQgNEUg
MzIgOEIgNDMgNTIgNTMgMzIgMEEgMUEgIFJTMi4uSU1OMi5DUlMyLi4KICAgIDkyRDA6IDQ5IDRE
IDU4IDMyIDhCIDQzIDUyIDUzIDMyIDBBIDFFIDQ5IDRDIDRFIDMyIDcwICBJTVgyLkNSUzIuLklM
TjJwCiAgICA5MkUwOiAwQiBCMCAwMyA0OSA0RCA0RSAzMiA3MCAwQiBERiAwMyA0OSA0RCA1OCAz
MiA3MCAgLi4uSU1OMnAuLi5JTVgycAogICAgOTJGMDogMEEgMzAgNDkgNEMgNEUgMzIgOEEgNDMg
NTIgNTMgMzIgMEEgM0EgNTYgNEQgNEUgIC4wSUxOMi5DUlMyLjpWTU4KICAgIDkzMDA6IDMyIDhB
IDQzIDUyIDUzIDMyIDBBIDNFIDU2IDREIDU4IDMyIDhBIDQzIDUyIDUzICAyLkNSUzIuPlZNWDIu
Q1JTCiAgICA5MzEwOiAzMiAwQSA0NiA1NiA0QyA0RSAzMiA3MCAwQyAwMCAwMCAwQSAwMCA1NiA0
RCA0RSAgMi5GVkxOMnAuLi4uLlZNTgogICAgOTMyMDogMzIgNzAgMEMgRkYgRkYgMEIgMDAgNTYg
NEQgNTggMzIgNzAgMEMgMDAgMDAgMDIgIDJwLi4uLi5WTVgycC4uLi4KICAgIDkzMzA6IDAwIDU2
IDRDIDRFIDMyIDhBIDQzIDUyIDUzIDMyIDBBIDU0IDREIDQ5IDRFIDM1ICAuVkxOMi5DUlMyLlRN
SU41CiAgICA5MzQwOiA4QSA0MyA1MiA1MyAzMiAwQSA1OCA0RCA0MSA1OCAzNSA4QSA0MyA1MiA1
MyAzMiAgLkNSUzIuWE1BWDUuQ1JTMgogICAgOTM1MDogMEEgNjAgNEMgNDUgNEUgMzUgNzAgNEQg
NDIgNDIgNUYgNEQgNDkgNEUgMzUgNzAgIC5gTEVONXBNQkJfTUlONXAKICAgIDkzNjA6IDREIDQy
IDRDIDVGIDRDIDQ1IDRFIDM1IDcwIDRDIDQ1IDRFIDM1IDYxIDcyIDREICBNQkxfTEVONXBMRU41
YXJNCiAgICA5MzcwOiA0OSA0RSAzNSA3NiA2MSA0RCA0MSA1OCAzNSA4RiA0MyA1MiA1MyAzMiAw
QSA3MiAgSU41dmFNQVg1LkNSUzIucgogICAgOTM4MDogNEQgNDkgNEUgMzkgOEYgNDMgNTIgNTMg
MzIgMEEgN0EgNEQgNDEgNTggMzkgOEYgIE1JTjkuQ1JTMi56TUFYOS4KICAgIDkzOTA6IDQzIDUy
IDUzIDMyIDBBIDhBIDRDIDQ1IDRFIDM5IDcwIDREIDQxIDQyIDRDIDREICBDUlMyLi5MRU45cE1B
QkxNCiAgICA5M0EwOiA0OSA0RSAzOSA3MCA0RCA0MSA0QyA0QyA0QyA0NSA0RSAzOSA3MCA0QyA0
NSA0RSAgSU45cE1BTExMRU45cExFTgogICAgOTNCMDogMzkgNjAgNzIgNEQgNDkgNEUgMzkgNzYg
NjAgNEQgNDEgNTggMzkgQTQgNDMgNTIgIDlgck1JTjl2YE1BWDkuQ1IKICAgIDkzQzA6IDUzIDMy
IDE0IDQyIDEzIDVGIDRGIDUzIDQzIDBDIDA4IDUzIDU1IDUwIDUwIDAwICBTMi5CLl9PU0MuLlNV
UFAuCiAgICA5M0QwOiAwOCA0MyA1NCA1MiA0QyAwMCA4QSA2QiAwMCA0MyA0NCA1NyAzMSA4QSA2
QiAwQSAgLkNUUkwuLmsuQ0RXMS5rLgogICAgOTNFMDogMDQgNDMgNDQgNTcgMzIgOEEgNkIgMEEg
MDggNDMgNDQgNTcgMzMgQTAgNDggMEYgIC5DRFcyLmsuLkNEVzMuSC4KICAgIDkzRjA6IDkzIDY4
IDExIDEzIDBBIDEwIDVCIDREIERCIDMzIEY3IDFGIDFDIDQwIDk2IDU3ICAuaC4uLi5bTS4zLi4u
QC5XCiAgICA5NDAwOiA3NCA0MSBDMCAzRCBENyA2NiA3MCA0MyA0NCA1NyAzMiA1MyA1NSA1MCA1
MCA3MCAgdEEuPS5mcENEVzJTVVBQcAogICAgOTQxMDogNDMgNDQgNTcgMzMgNDMgNTQgNTIgNEMg
QTAgMTggOTIgOTMgN0IgNTMgNTUgNTAgIENEVzNDVFJMLi4uLntTVVAKICAgIDk0MjA6IDUwIDBB
IDE2IDAwIDBBIDE2IDdCIDQzIDU0IDUyIDRDIDBBIDFFIDQzIDU0IDUyICBQLi4uLi57Q1RSTC4u
Q1RSCiAgICA5NDMwOiA0QyBBMCAxMSA5MiA1MCA0NSA0OCA1MCA3QiA0MyA1NCA1MiA0QyAwQSAx
RSA0MyAgTC4uLlBFSFB7Q1RSTC4uQwogICAgOTQ0MDogNTQgNTIgNEMgQTAgMTEgOTIgNTMgNDgg
NTAgNDMgN0IgNDMgNTQgNTIgNEMgMEEgIFRSTC4uLlNIUEN7Q1RSTC4KICAgIDk0NTA6IDFEIDQz
IDU0IDUyIDRDIEEwIDExIDkyIDUwIDQ1IDUwIDREIDdCIDQzIDU0IDUyICAuQ1RSTC4uLlBFUE17
Q1RSCiAgICA5NDYwOiA0QyAwQSAxQiA0MyA1NCA1MiA0QyBBMCAxMSA5MiA1MCA0NSA0NSA1MiA3
QiA0MyAgTC4uQ1RSTC4uLlBFRVJ7QwogICAgOTQ3MDogNTQgNTIgNEMgMEEgMTUgNDMgNTQgNTIg
NEMgQTAgMTEgOTIgNTAgNDUgNDMgNTMgIFRSTC4uQ1RSTC4uLlBFQ1MKICAgIDk0ODA6IDdCIDQz
IDU0IDUyIDRDIDBBIDBGIDQzIDU0IDUyIDRDIEEwIDEwIDkyIDkzIDY5ICB7Q1RSTC4uQ1RSTC4u
Li5pCiAgICA5NDkwOiAwMSA3RCA0MyA0NCA1NyAzMSAwQSAwOCA0MyA0NCA1NyAzMSBBMCAxNSA1
QiAxMiAgLn1DRFcxLi5DRFcxLi5bLgogICAgOTRBMDogNTAgNEYgNTMgNDMgMDAgN0IgNDMgNTQg
NTIgNEMgNTAgNEYgNTMgNDMgNDMgNTQgIFBPU0Mue0NUUkxQT1NDQ1QKICAgIDk0QjA6IDUyIDRD
IEEwIDE2IDkyIDkzIDQzIDQ0IDU3IDMzIDQzIDU0IDUyIDRDIDdEIDQzICBSTC4uLi5DRFczQ1RS
TH1DCiAgICA5NEMwOiA0NCA1NyAzMSAwQSAxMCA0MyA0NCA1NyAzMSA3MCA0MyA1NCA1MiA0QyA0
MyA0NCAgRFcxLi5DRFcxcENUUkxDRAogICAgOTREMDogNTcgMzMgQTAgMTEgNUIgMTIgNTAgNEYg
NTMgNTMgMDAgNzAgNTMgNTUgNTAgNTAgIFczLi5bLlBPU1MucFNVUFAKICAgIDk0RTA6IDUwIDRG
IDUzIDUzIEE0IDZCIEExIDBFIDdEIDQzIDQ0IDU3IDMxIDBBIDA0IDQzICBQT1NTLmsuLn1DRFcx
Li5DCiAgICA5NEYwOiA0NCA1NyAzMSBBNCA2QiA1QiA4MiAwQyA0NCAzMCAzOCA0MyAwOCA1RiA0
MSA0NCAgRFcxLmtbLi5EMDhDLl9BRAogICAgOTUwMDogNTIgMEEgMDIgNUIgODIgMEMgNDQgMzAg
MzggNDQgMDggNUYgNDEgNDQgNTIgMEEgIFIuLlsuLkQwOEQuX0FEUi4KICAgIDk1MTA6IDAzIDVC
IDgyIDQ2IDA0IDQ3IDUwIDUwIDMwIDA4IDVGIDQxIDQ0IDUyIDBDIDAxICAuWy5GLkdQUDAuX0FE
Ui4uCiAgICA5NTIwOiAwMCAwMSAwMCAxNCAwRiA1RiA1MCA1MiA1NyAwMCBBNCA0NyA1MCA1MiA1
NyAwQSAgLi4uLi5fUFJXLi5HUFJXLgogICAgOTUzMDogMDggMEEgMDQgMTQgMTYgNUYgNTAgNTIg
NTQgMDAgQTAgMEEgNTAgNDkgNDMgNEQgIC4uLi4uX1BSVC4uLlBJQ00KICAgIDk1NDA6IEE0IDQ3
IDMwIDM4IDQ2IEE0IDUwIDMwIDM4IDQ2IDVCIDgyIDBEIDQ0IDMwIDQ2ICAuRzA4Ri5QMDhGWy4u
RDBGCiAgICA5NTUwOiAzNiAwOCA1RiA0MSA0NCA1MiAwQiBGRiBGRiA1QiA4MiA0NiAwNCA0NyA1
MCA1MCAgNi5fQURSLi4uWy5GLkdQUAogICAgOTU2MDogMzEgMDggNUYgNDEgNDQgNTIgMEMgMDIg
MDAgMDEgMDAgMTQgMEYgNUYgNTAgNTIgIDEuX0FEUi4uLi4uLi5fUFIKICAgIDk1NzA6IDU3IDAw
IEE0IDQ3IDUwIDUyIDU3IDBBIDA4IDBBIDA0IDE0IDE2IDVGIDUwIDUyICBXLi5HUFJXLi4uLi4u
X1BSCiAgICA5NTgwOiA1NCAwMCBBMCAwQSA1MCA0OSA0MyA0RCBBNCA0NyAzMCAzOSAzMCBBNCA1
MCAzMCAgVC4uLlBJQ00uRzA5MC5QMAogICAgOTU5MDogMzkgMzAgNUIgODIgMEQgNDQgMzAgNDYg
MzcgMDggNUYgNDEgNDQgNTIgMEIgRkYgIDkwWy4uRDBGNy5fQURSLi4KICAgIDk1QTA6IEZGIDVC
IDgyIDQ2IDA0IDQ3IDUwIDUwIDMyIDA4IDVGIDQxIDQ0IDUyIDBDIDAzICAuWy5GLkdQUDIuX0FE
Ui4uCiAgICA5NUIwOiAwMCAwMSAwMCAxNCAwRiA1RiA1MCA1MiA1NyAwMCBBNCA0NyA1MCA1MiA1
NyAwQSAgLi4uLi5fUFJXLi5HUFJXLgogICAgOTVDMDogMDggMEEgMDQgMTQgMTYgNUYgNTAgNTIg
NTQgMDAgQTAgMEEgNTAgNDkgNDMgNEQgIC4uLi4uX1BSVC4uLlBJQ00KICAgIDk1RDA6IEE0IDQ3
IDMwIDM5IDMxIEE0IDUwIDMwIDM5IDMxIDVCIDgyIDBEIDQ0IDMwIDQ2ICAuRzA5MS5QMDkxWy4u
RDBGCiAgICA5NUUwOiAzOCAwOCA1RiA0MSA0NCA1MiAwQiBGRiBGRiA1QiA4MiA0NiAwNCA0NyA1
MCA1MCAgOC5fQURSLi4uWy5GLkdQUAogICAgOTVGMDogMzMgMDggNUYgNDEgNDQgNTIgMEMgMDQg
MDAgMDEgMDAgMTQgMEYgNUYgNTAgNTIgIDMuX0FEUi4uLi4uLi5fUFIKICAgIDk2MDA6IDU3IDAw
IEE0IDQ3IDUwIDUyIDU3IDBBIDA4IDBBIDA0IDE0IDE2IDVGIDUwIDUyICBXLi5HUFJXLi4uLi4u
X1BSCiAgICA5NjEwOiA1NCAwMCBBMCAwQSA1MCA0OSA0MyA0RCBBNCA0NyAzMCAzOSAzMiBBNCA1
MCAzMCAgVC4uLlBJQ00uRzA5Mi5QMAogICAgOTYyMDogMzkgMzIgNUIgODIgMEQgNDQgMzAgNDYg
MzkgMDggNUYgNDEgNDQgNTIgMEIgRkYgIDkyWy4uRDBGOS5fQURSLi4KICAgIDk2MzA6IEZGIDVC
IDgyIDQ2IDA0IDQ3IDUwIDUwIDM0IDA4IDVGIDQxIDQ0IDUyIDBDIDA1ICAuWy5GLkdQUDQuX0FE
Ui4uCiAgICA5NjQwOiAwMCAwMSAwMCAxNCAwRiA1RiA1MCA1MiA1NyAwMCBBNCA0NyA1MCA1MiA1
NyAwQSAgLi4uLi5fUFJXLi5HUFJXLgogICAgOTY1MDogMDggMEEgMDQgMTQgMTYgNUYgNTAgNTIg
NTQgMDAgQTAgMEEgNTAgNDkgNDMgNEQgIC4uLi4uX1BSVC4uLlBJQ00KICAgIDk2NjA6IEE0IDQ3
IDMwIDM5IDMzIEE0IDUwIDMwIDM5IDMzIDVCIDgyIDBEIDQ0IDMwIDQ2ICAuRzA5My5QMDkzWy4u
RDBGCiAgICA5NjcwOiA0MSAwOCA1RiA0MSA0NCA1MiAwQiBGRiBGRiA1QiA4MiA0NiAwNCA0NyA1
MCA1MCAgQS5fQURSLi4uWy5GLkdQUAogICAgOTY4MDogMzUgMDggNUYgNDEgNDQgNTIgMEMgMDYg
MDAgMDEgMDAgMTQgMEYgNUYgNTAgNTIgIDUuX0FEUi4uLi4uLi5fUFIKICAgIDk2OTA6IDU3IDAw
IEE0IDQ3IDUwIDUyIDU3IDBBIDA4IDBBIDA0IDE0IDE2IDVGIDUwIDUyICBXLi5HUFJXLi4uLi4u
X1BSCiAgICA5NkEwOiA1NCAwMCBBMCAwQSA1MCA0OSA0MyA0RCBBNCA0NyAzMCAzOSAzNCBBNCA1
MCAzMCAgVC4uLlBJQ00uRzA5NC5QMAogICAgOTZCMDogMzkgMzQgNUIgODIgMEQgNDQgMzAgNDYg
NDIgMDggNUYgNDEgNDQgNTIgMEIgRkYgIDk0Wy4uRDBGQi5fQURSLi4KICAgIDk2QzA6IEZGIDVC
IDgyIDQ2IDA0IDQ3IDUwIDUwIDM2IDA4IDVGIDQxIDQ0IDUyIDBDIDA3ICAuWy5GLkdQUDYuX0FE
Ui4uCiAgICA5NkQwOiAwMCAwMSAwMCAxNCAwRiA1RiA1MCA1MiA1NyAwMCBBNCA0NyA1MCA1MiA1
NyAwQSAgLi4uLi5fUFJXLi5HUFJXLgogICAgOTZFMDogMDggMEEgMDQgMTQgMTYgNUYgNTAgNTIg
NTQgMDAgQTAgMEEgNTAgNDkgNDMgNEQgIC4uLi4uX1BSVC4uLlBJQ00KICAgIDk2RjA6IEE0IDQ3
IDMwIDM5IDM1IEE0IDUwIDMwIDM5IDM1IDVCIDgyIDBEIDQ0IDMwIDQ2ICAuRzA5NS5QMDk1Wy4u
RDBGCiAgICA5NzAwOiA0MyAwOCA1RiA0MSA0NCA1MiAwQiBGRiBGRiA1QiA4MiA0NiAwNCA0NyA1
MCA1MCAgQy5fQURSLi4uWy5GLkdQUAogICAgOTcxMDogMzcgMDggNUYgNDEgNDQgNTIgMEMgMDEg
MDAgMDIgMDAgMTQgMEYgNUYgNTAgNTIgIDcuX0FEUi4uLi4uLi5fUFIKICAgIDk3MjA6IDU3IDAw
IEE0IDQ3IDUwIDUyIDU3IDBBIDA4IDBBIDA0IDE0IDE2IDVGIDUwIDUyICBXLi5HUFJXLi4uLi4u
X1BSCiAgICA5NzMwOiA1NCAwMCBBMCAwQSA1MCA0OSA0MyA0RCBBNCA0NyAzMCAzOSAzNiBBNCA1
MCAzMCAgVC4uLlBJQ00uRzA5Ni5QMAogICAgOTc0MDogMzkgMzYgNUIgODIgMEQgNDQgMzAgNDYg
NDQgMDggNUYgNDEgNDQgNTIgMEIgRkYgIDk2Wy4uRDBGRC5fQURSLi4KICAgIDk3NTA6IEZGIDVC
IDgyIDQ2IDA0IDQ3IDUwIDUwIDM4IDA4IDVGIDQxIDQ0IDUyIDBDIDAyICAuWy5GLkdQUDguX0FE
Ui4uCiAgICA5NzYwOiAwMCAwMiAwMCAxNCAwRiA1RiA1MCA1MiA1NyAwMCBBNCA0NyA1MCA1MiA1
NyAwQSAgLi4uLi5fUFJXLi5HUFJXLgogICAgOTc3MDogMDggMEEgMDQgMTQgMTYgNUYgNTAgNTIg
NTQgMDAgQTAgMEEgNTAgNDkgNDMgNEQgIC4uLi4uX1BSVC4uLlBJQ00KICAgIDk3ODA6IEE0IDQ3
IDMwIDM5IDM3IEE0IDUwIDMwIDM5IDM3IDVCIDgyIDBEIDQ0IDMwIDQ2ICAuRzA5Ny5QMDk3Wy4u
RDBGCiAgICA5NzkwOiA0NSAwOCA1RiA0MSA0NCA1MiAwQiBGRiBGRiA1QiA4MiA0NiAwNCA0NyA1
MCA1MCAgRS5fQURSLi4uWy5GLkdQUAogICAgOTdBMDogMzkgMDggNUYgNDEgNDQgNTIgMEMgMDEg
MDAgMDMgMDAgMTQgMEYgNUYgNTAgNTIgIDkuX0FEUi4uLi4uLi5fUFIKICAgIDk3QjA6IDU3IDAw
IEE0IDQ3IDUwIDUyIDU3IDBBIDA4IDBBIDA0IDE0IDE2IDVGIDUwIDUyICBXLi5HUFJXLi4uLi4u
X1BSCiAgICA5N0MwOiA1NCAwMCBBMCAwQSA1MCA0OSA0MyA0RCBBNCA0NyAzMCAzOSAzOCBBNCA1
MCAzMCAgVC4uLlBJQ00uRzA5OC5QMAogICAgOTdEMDogMzkgMzggNUIgODIgMEQgNDQgMzAgNDUg
NDUgMDggNUYgNDEgNDQgNTIgMEIgRkYgIDk4Wy4uRDBFRS5fQURSLi4KICAgIDk3RTA6IEZGIDVC
IDgyIDQ2IDA0IDQ3IDUwIDUwIDQxIDA4IDVGIDQxIDQ0IDUyIDBDIDAyICAuWy5GLkdQUEEuX0FE
Ui4uCiAgICA5N0YwOiAwMCAwMyAwMCAxNCAwRiA1RiA1MCA1MiA1NyAwMCBBNCA0NyA1MCA1MiA1
NyAwQSAgLi4uLi5fUFJXLi5HUFJXLgogICAgOTgwMDogMDggMEEgMDQgMTQgMTYgNUYgNTAgNTIg
NTQgMDAgQTAgMEEgNTAgNDkgNDMgNEQgIC4uLi4uX1BSVC4uLlBJQ00KICAgIDk4MTA6IEE0IDQ3
IDMwIDM5IDM5IEE0IDUwIDMwIDM5IDM5IDVCIDgyIDBEIDQ0IDMwIDQ1ICAuRzA5OS5QMDk5Wy4u
RDBFCiAgICA5ODIwOiA0NiAwOCA1RiA0MSA0NCA1MiAwQiBGRiBGRiA1QiA4MiA0NiAwNCA0NyA1
MCA1MCAgRi5fQURSLi4uWy5GLkdQUAogICAgOTgzMDogNDIgMDggNUYgNDEgNDQgNTIgMEMgMDMg
MDAgMDMgMDAgMTQgMEYgNUYgNTAgNTIgIEIuX0FEUi4uLi4uLi5fUFIKICAgIDk4NDA6IDU3IDAw
IEE0IDQ3IDUwIDUyIDU3IDBBIDA4IDBBIDA0IDE0IDE2IDVGIDUwIDUyICBXLi5HUFJXLi4uLi4u
X1BSCiAgICA5ODUwOiA1NCAwMCBBMCAwQSA1MCA0OSA0MyA0RCBBNCA0NyAzMCAzOSA0MSBBNCA1
MCAzMCAgVC4uLlBJQ00uRzA5QS5QMAogICAgOTg2MDogMzkgNDEgNUIgODIgMEQgNDQgMzAgNDYg
MzAgMDggNUYgNDEgNDQgNTIgMEIgRkYgIDlBWy4uRDBGMC5fQURSLi4KICAgIDk4NzA6IEZGIDVC
IDgyIDQ2IDA0IDQ3IDUwIDUwIDQzIDA4IDVGIDQxIDQ0IDUyIDBDIDA0ICAuWy5GLkdQUEMuX0FE
Ui4uCiAgICA5ODgwOiAwMCAwMyAwMCAxNCAwRiA1RiA1MCA1MiA1NyAwMCBBNCA0NyA1MCA1MiA1
NyAwQSAgLi4uLi5fUFJXLi5HUFJXLgogICAgOTg5MDogMDggMEEgMDQgMTQgMTYgNUYgNTAgNTIg
NTQgMDAgQTAgMEEgNTAgNDkgNDMgNEQgIC4uLi4uX1BSVC4uLlBJQ00KICAgIDk4QTA6IEE0IDQ3
IDMwIDM5IDQyIEE0IDUwIDMwIDM5IDQyIDVCIDgyIDBEIDQ0IDMwIDQ2ICAuRzA5Qi5QMDlCWy4u
RDBGCiAgICA5OEIwOiAzMSAwOCA1RiA0MSA0NCA1MiAwQiBGRiBGRiA1QiA4MiA0NiAwNCA0NyA1
MCA1MCAgMS5fQURSLi4uWy5GLkdQUAogICAgOThDMDogNDQgMDggNUYgNDEgNDQgNTIgMEMgMDUg
MDAgMDMgMDAgMTQgMEYgNUYgNTAgNTIgIEQuX0FEUi4uLi4uLi5fUFIKICAgIDk4RDA6IDU3IDAw
IEE0IDQ3IDUwIDUyIDU3IDBBIDA4IDBBIDA0IDE0IDE2IDVGIDUwIDUyICBXLi5HUFJXLi4uLi4u
X1BSCiAgICA5OEUwOiA1NCAwMCBBMCAwQSA1MCA0OSA0MyA0RCBBNCA0NyAzMCAzOSA0MyBBNCA1
MCAzMCAgVC4uLlBJQ00uRzA5Qy5QMAogICAgOThGMDogMzkgNDMgNUIgODIgMEQgNDQgMzAgNDYg
MzIgMDggNUYgNDEgNDQgNTIgMEIgRkYgIDlDWy4uRDBGMi5fQURSLi4KICAgIDk5MDA6IEZGIDVC
IDgyIDQ2IDA0IDQ3IDUwIDUwIDQ1IDA4IDVGIDQxIDQ0IDUyIDBDIDA2ICAuWy5GLkdQUEUuX0FE
Ui4uCiAgICA5OTEwOiAwMCAwMyAwMCAxNCAwRiA1RiA1MCA1MiA1NyAwMCBBNCA0NyA1MCA1MiA1
NyAwQSAgLi4uLi5fUFJXLi5HUFJXLgogICAgOTkyMDogMDggMEEgMDQgMTQgMTYgNUYgNTAgNTIg
NTQgMDAgQTAgMEEgNTAgNDkgNDMgNEQgIC4uLi4uX1BSVC4uLlBJQ00KICAgIDk5MzA6IEE0IDQ3
IDMwIDM5IDQ0IEE0IDUwIDMwIDM5IDQ0IDVCIDgyIDBEIDQ0IDMwIDQ2ICAuRzA5RC5QMDlEWy4u
RDBGCiAgICA5OTQwOiAzMyAwOCA1RiA0MSA0NCA1MiAwQiBGRiBGRiA1QiA4MiA0NiAwNCA0NyA1
MCA1MCAgMy5fQURSLi4uWy5GLkdQUAogICAgOTk1MDogNDYgMDggNUYgNDEgNDQgNTIgMEMgMDcg
MDAgMDMgMDAgMTQgMEYgNUYgNTAgNTIgIEYuX0FEUi4uLi4uLi5fUFIKICAgIDk5NjA6IDU3IDAw
IEE0IDQ3IDUwIDUyIDU3IDBBIDA4IDBBIDA0IDE0IDE2IDVGIDUwIDUyICBXLi5HUFJXLi4uLi4u
X1BSCiAgICA5OTcwOiA1NCAwMCBBMCAwQSA1MCA0OSA0MyA0RCBBNCA0NyAzMCAzOSA0NSBBNCA1
MCAzMCAgVC4uLlBJQ00uRzA5RS5QMAogICAgOTk4MDogMzkgNDUgNUIgODIgMEQgNDQgMzAgNDYg
MzQgMDggNUYgNDEgNDQgNTIgMEIgRkYgIDlFWy4uRDBGNC5fQURSLi4KICAgIDk5OTA6IEZGIDVC
IDgyIDQ2IDA0IDQ3IDUwIDUwIDQ3IDA4IDVGIDQxIDQ0IDUyIDBDIDAxICAuWy5GLkdQUEcuX0FE
Ui4uCiAgICA5OUEwOiAwMCAwNCAwMCAxNCAwRiA1RiA1MCA1MiA1NyAwMCBBNCA0NyA1MCA1MiA1
NyAwQSAgLi4uLi5fUFJXLi5HUFJXLgogICAgOTlCMDogMDggMEEgMDQgMTQgMTYgNUYgNTAgNTIg
NTQgMDAgQTAgMEEgNTAgNDkgNDMgNEQgIC4uLi4uX1BSVC4uLlBJQ00KICAgIDk5QzA6IEE0IDQ3
IDMwIDM5IDQ2IEE0IDUwIDMwIDM5IDQ2IDVCIDgyIDBEIDQ0IDMwIDQ2ICAuRzA5Ri5QMDlGWy4u
RDBGCiAgICA5OUQwOiAzNSAwOCA1RiA0MSA0NCA1MiAwQiBGRiBGRiA1QiA4MiA0NiAwNCA0NyA1
MCA1MCAgNS5fQURSLi4uWy5GLkdQUAogICAgOTlFMDogNDggMDggNUYgNDEgNDQgNTIgMEMgMDIg
MDAgMDQgMDAgMTQgMEYgNUYgNTAgNTIgIEguX0FEUi4uLi4uLi5fUFIKICAgIDk5RjA6IDU3IDAw
IEE0IDQ3IDUwIDUyIDU3IDBBIDA4IDBBIDA0IDE0IDE2IDVGIDUwIDUyICBXLi5HUFJXLi4uLi4u
X1BSCiAgICA5QTAwOiA1NCAwMCBBMCAwQSA1MCA0OSA0MyA0RCBBNCA0NyAzMCA0MSAzMCBBNCA1
MCAzMCAgVC4uLlBJQ00uRzBBMC5QMAogICAgOUExMDogNDEgMzAgNUIgODIgMEQgNDQgMzAgNDYg
NDYgMDggNUYgNDEgNDQgNTIgMEIgRkYgIEEwWy4uRDBGRi5fQURSLi4KICAgIDlBMjA6IEZGIDVC
IDgyIDQ2IDA0IDQ3IDUwIDMxIDM1IDA4IDVGIDQxIDQ0IDUyIDBDIDAxICAuWy5GLkdQMTUuX0FE
Ui4uCiAgICA5QTMwOiAwMCAwNSAwMCAxNCAwRiA1RiA1MCA1MiA1NyAwMCBBNCA0NyA1MCA1MiA1
NyAwQSAgLi4uLi5fUFJXLi5HUFJXLgogICAgOUE0MDogMDggMEEgMDQgMTQgMTYgNUYgNTAgNTIg
NTQgMDAgQTAgMEEgNTAgNDkgNDMgNEQgIC4uLi4uX1BSVC4uLlBJQ00KICAgIDlBNTA6IEE0IDQ3
IDMwIDQxIDMxIEE0IDUwIDMwIDQxIDMxIDVCIDgyIDBEIDQ0IDMwIDMwICAuRzBBMS5QMEExWy4u
RDAwCiAgICA5QTYwOiAzMCAwOCA1RiA0MSA0NCA1MiAwQiBGRiBGRiA1QiA4MiA0NiAwNCA0NyA1
MCAzMiAgMC5fQURSLi4uWy5GLkdQMgogICAgOUE3MDogMzUgMDggNUYgNDEgNDQgNTIgMEMgMDIg
MDAgMDUgMDAgMTQgMEYgNUYgNTAgNTIgIDUuX0FEUi4uLi4uLi5fUFIKICAgIDlBODA6IDU3IDAw
IEE0IDQ3IDUwIDUyIDU3IDBBIDA4IDBBIDA0IDE0IDE2IDVGIDUwIDUyICBXLi5HUFJXLi4uLi4u
X1BSCiAgICA5QTkwOiA1NCAwMCBBMCAwQSA1MCA0OSA0MyA0RCBBNCA0NyAzMCA0MSAzMiBBNCA1
MCAzMCAgVC4uLlBJQ00uRzBBMi5QMAogICAgOUFBMDogNDEgMzIgNUIgODIgMEQgNDQgMzAgMzAg
MzEgMDggNUYgNDEgNDQgNTIgMEIgRkYgIEEyWy4uRDAwMS5fQURSLi4KICAgIDlBQjA6IEZGIDVC
IDgyIDQ2IDA0IDQ3IDUwIDMzIDM1IDA4IDVGIDQxIDQ0IDUyIDBDIDAzICAuWy5GLkdQMzUuX0FE
Ui4uCiAgICA5QUMwOiAwMCAwNSAwMCAxNCAwRiA1RiA1MCA1MiA1NyAwMCBBNCA0NyA1MCA1MiA1
NyAwQSAgLi4uLi5fUFJXLi5HUFJXLgogICAgOUFEMDogMDggMEEgMDQgMTQgMTYgNUYgNTAgNTIg
NTQgMDAgQTAgMEEgNTAgNDkgNDMgNEQgIC4uLi4uX1BSVC4uLlBJQ00KICAgIDlBRTA6IEE0IDQ3
IDMwIDQxIDMzIEE0IDUwIDMwIDQxIDMzIDVCIDgyIDBEIDQ0IDMwIDMwICAuRzBBMy5QMEEzWy4u
RDAwCiAgICA5QUYwOiAzMiAwOCA1RiA0MSA0NCA1MiAwQiBGRiBGRiA1QiA4MiA0NiAwNCA0NyA1
MCAzNCAgMi5fQURSLi4uWy5GLkdQNAogICAgOUIwMDogMzUgMDggNUYgNDEgNDQgNTIgMEMgMDQg
MDAgMDUgMDAgMTQgMEYgNUYgNTAgNTIgIDUuX0FEUi4uLi4uLi5fUFIKICAgIDlCMTA6IDU3IDAw
IEE0IDQ3IDUwIDUyIDU3IDBBIDA4IDBBIDA0IDE0IDE2IDVGIDUwIDUyICBXLi5HUFJXLi4uLi4u
X1BSCiAgICA5QjIwOiA1NCAwMCBBMCAwQSA1MCA0OSA0MyA0RCBBNCA0NyAzMCA0MSAzNCBBNCA1
MCAzMCAgVC4uLlBJQ00uRzBBNC5QMAogICAgOUIzMDogNDEgMzQgNUIgODIgMEQgNDQgMzAgMzAg
MzMgMDggNUYgNDEgNDQgNTIgMEIgRkYgIEE0Wy4uRDAwMy5fQURSLi4KICAgIDlCNDA6IEZGIDVC
IDgyIDREIDA2IDQ3IDUwIDMxIDM3IDA4IDVGIDQxIDQ0IDUyIDBDIDAxICAuWy5NLkdQMTcuX0FE
Ui4uCiAgICA5QjUwOiAwMCAwNyAwMCAxNCAwRiA1RiA1MCA1MiA1NyAwMCBBNCA0NyA1MCA1MiA1
NyAwQSAgLi4uLi5fUFJXLi5HUFJXLgogICAgOUI2MDogMEIgMEEgMDQgMTQgMTYgNUYgNTAgNTIg
NTQgMDAgQTAgMEEgNTAgNDkgNDMgNEQgIC4uLi4uX1BSVC4uLlBJQ00KICAgIDlCNzA6IEE0IDQ3
IDMwIDQxIDM1IEE0IDUwIDMwIDQxIDM1IDVCIDgyIDBCIDQ0IDMwIDQxICAuRzBBNS5QMEE1Wy4u
RDBBCiAgICA5QjgwOiAzNiAwOCA1RiA0MSA0NCA1MiAwMCA1QiA4MiAwQiA0NCAzMCA0MSAzNyAw
OCA1RiAgNi5fQURSLlsuLkQwQTcuXwogICAgOUI5MDogNDEgNDQgNTIgMDEgNUIgODIgMEMgNDQg
MzAgNDEgMzggMDggNUYgNDEgNDQgNTIgIEFEUi5bLi5EMEE4Ll9BRFIKICAgIDlCQTA6IDBBIDAy
IDVCIDgyIDBDIDQ0IDMwIDQxIDM5IDA4IDVGIDQxIDQ0IDUyIDBBIDAzICAuLlsuLkQwQTkuX0FE
Ui4uCiAgICA5QkIwOiA1QiA4MiAwRiA0NyA1MCAzMiAzNyAwOCA1RiA0MSA0NCA1MiAwQyAwMiAw
MCAwNyAgWy4uR1AyNy5fQURSLi4uLgogICAgOUJDMDogMDAgMTAgNDggNkEgNUYgNDcgNTAgNDUg
MTQgNDIgNjMgNUYgNEMgMzAgMzggMDAgIC4uSGpfR1BFLkJjX0wwOC4KICAgIDlCRDA6IDg2IDVD
IDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMzIDQ3IDUwIDUwIDMwICAuXC8uX1NCX1BDSTNH
UFAwCiAgICA5QkUwOiAwQSAwMiA4NiA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMyA0
NyA1MCAgLi4uXC8uX1NCX1BDSTNHUAogICAgOUJGMDogNTAgMzEgMEEgMDIgODYgNUMgMkYgMDMg
NUYgNTMgNDIgNUYgNTAgNDMgNDkgMzMgIFAxLi4uXC8uX1NCX1BDSTMKICAgIDlDMDA6IDQ3IDUw
IDUwIDMyIDBBIDAyIDg2IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzICBHUFAyLi4uXC8uX1NC
X1BDCiAgICA5QzEwOiA0OSAzMyA0NyA1MCA1MCAzMyAwQSAwMiA4NiA1QyAyRiAwMyA1RiA1MyA0
MiA1RiAgSTNHUFAzLi4uXC8uX1NCXwogICAgOUMyMDogNTAgNDMgNDkgMzMgNDcgNTAgNTAgMzQg
MEEgMDIgODYgNUMgMkYgMDMgNUYgNTMgIFBDSTNHUFA0Li4uXC8uX1MKICAgIDlDMzA6IDQyIDVG
IDUwIDQzIDQ5IDMzIDQ3IDUwIDUwIDM1IDBBIDAyIDg2IDVDIDJGIDAzICBCX1BDSTNHUFA1Li4u
XC8uCiAgICA5QzQwOiA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMyA0NyA1MCA1MCAzNiAwQSAwMiA4
NiA1QyAgX1NCX1BDSTNHUFA2Li4uXAogICAgOUM1MDogMkYgMDMgNUYgNTMgNDIgNUYgNTAgNDMg
NDkgMzMgNDcgNTAgNTAgMzcgMEEgMDIgIC8uX1NCX1BDSTNHUFA3Li4KICAgIDlDNjA6IDg2IDVD
IDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMzIDQ3IDUwIDUwIDM4ICAuXC8uX1NCX1BDSTNH
UFA4CiAgICA5QzcwOiAwQSAwMiA4NiA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMyA0
NyA1MCAgLi4uXC8uX1NCX1BDSTNHUAogICAgOUM4MDogNTAgMzkgMEEgMDIgODYgNUMgMkYgMDMg
NUYgNTMgNDIgNUYgNTAgNDMgNDkgMzMgIFA5Li4uXC8uX1NCX1BDSTMKICAgIDlDOTA6IDQ3IDUw
IDUwIDQxIDBBIDAyIDg2IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzICBHUFBBLi4uXC8uX1NC
X1BDCiAgICA5Q0EwOiA0OSAzMyA0NyA1MCA1MCA0MiAwQSAwMiA4NiA1QyAyRiAwMyA1RiA1MyA0
MiA1RiAgSTNHUFBCLi4uXC8uX1NCXwogICAgOUNCMDogNTAgNDMgNDkgMzMgNDcgNTAgNTAgNDMg
MEEgMDIgODYgNUMgMkYgMDMgNUYgNTMgIFBDSTNHUFBDLi4uXC8uX1MKICAgIDlDQzA6IDQyIDVG
IDUwIDQzIDQ5IDMzIDQ3IDUwIDUwIDQ0IDBBIDAyIDg2IDVDIDJGIDAzICBCX1BDSTNHUFBELi4u
XC8uCiAgICA5Q0QwOiA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMyA0NyA1MCA1MCA0NSAwQSAwMiA4
NiA1QyAgX1NCX1BDSTNHUFBFLi4uXAogICAgOUNFMDogMkYgMDMgNUYgNTMgNDIgNUYgNTAgNDMg
NDkgMzMgNDcgNTAgNTAgNDYgMEEgMDIgIC8uX1NCX1BDSTNHUFBGLi4KICAgIDlDRjA6IDg2IDVD
IDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMzIDQ3IDUwIDUwIDQ3ICAuXC8uX1NCX1BDSTNH
UFBHCiAgICA5RDAwOiAwQSAwMiA4NiA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMyA0
NyA1MCAgLi4uXC8uX1NCX1BDSTNHUAogICAgOUQxMDogNTAgNDggMEEgMDIgODYgNUMgMkYgMDMg
NUYgNTMgNDIgNUYgNTAgNDMgNDkgMzMgIFBILi4uXC8uX1NCX1BDSTMKICAgIDlEMjA6IDQ3IDUw
IDMxIDM1IDBBIDAyIDg2IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzICBHUDE1Li4uXC8uX1NC
X1BDCiAgICA5RDMwOiA0OSAzMyA0NyA1MCAzMiAzNSAwQSAwMiA4NiA1QyAyRiAwMyA1RiA1MyA0
MiA1RiAgSTNHUDI1Li4uXC8uX1NCXwogICAgOUQ0MDogNTAgNDMgNDkgMzMgNDcgNTAgMzMgMzUg
MEEgMDIgODYgNUMgMkYgMDMgNUYgNTMgIFBDSTNHUDM1Li4uXC8uX1MKICAgIDlENTA6IDQyIDVG
IDUwIDQzIDQ5IDMzIDQ3IDUwIDM0IDM1IDBBIDAyIDg2IDVDIDJGIDAzICBCX1BDSTNHUDQ1Li4u
XC8uCiAgICA5RDYwOiA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMiA0NyA1MCA1MCAzMCAwQSAwMiA4
NiA1QyAgX1NCX1BDSTJHUFAwLi4uXAogICAgOUQ3MDogMkYgMDMgNUYgNTMgNDIgNUYgNTAgNDMg
NDkgMzIgNDcgNTAgNTAgMzEgMEEgMDIgIC8uX1NCX1BDSTJHUFAxLi4KICAgIDlEODA6IDg2IDVD
IDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMyIDQ3IDUwIDUwIDMyICAuXC8uX1NCX1BDSTJH
UFAyCiAgICA5RDkwOiAwQSAwMiA4NiA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMiA0
NyA1MCAgLi4uXC8uX1NCX1BDSTJHUAogICAgOURBMDogNTAgMzMgMEEgMDIgODYgNUMgMkYgMDMg
NUYgNTMgNDIgNUYgNTAgNDMgNDkgMzIgIFAzLi4uXC8uX1NCX1BDSTIKICAgIDlEQjA6IDQ3IDUw
IDUwIDM0IDBBIDAyIDg2IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzICBHUFA0Li4uXC8uX1NC
X1BDCiAgICA5REMwOiA0OSAzMiA0NyA1MCA1MCAzNSAwQSAwMiA4NiA1QyAyRiAwMyA1RiA1MyA0
MiA1RiAgSTJHUFA1Li4uXC8uX1NCXwogICAgOUREMDogNTAgNDMgNDkgMzIgNDcgNTAgNTAgMzYg
MEEgMDIgODYgNUMgMkYgMDMgNUYgNTMgIFBDSTJHUFA2Li4uXC8uX1MKICAgIDlERTA6IDQyIDVG
IDUwIDQzIDQ5IDMyIDQ3IDUwIDUwIDM3IDBBIDAyIDg2IDVDIDJGIDAzICBCX1BDSTJHUFA3Li4u
XC8uCiAgICA5REYwOiA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMiA0NyA1MCA1MCAzOCAwQSAwMiA4
NiA1QyAgX1NCX1BDSTJHUFA4Li4uXAogICAgOUUwMDogMkYgMDMgNUYgNTMgNDIgNUYgNTAgNDMg
NDkgMzIgNDcgNTAgNTAgMzkgMEEgMDIgIC8uX1NCX1BDSTJHUFA5Li4KICAgIDlFMTA6IDg2IDVD
IDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMyIDQ3IDUwIDUwIDQxICAuXC8uX1NCX1BDSTJH
UFBBCiAgICA5RTIwOiAwQSAwMiA4NiA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMiA0
NyA1MCAgLi4uXC8uX1NCX1BDSTJHUAogICAgOUUzMDogNTAgNDIgMEEgMDIgODYgNUMgMkYgMDMg
NUYgNTMgNDIgNUYgNTAgNDMgNDkgMzIgIFBCLi4uXC8uX1NCX1BDSTIKICAgIDlFNDA6IDQ3IDUw
IDUwIDQzIDBBIDAyIDg2IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzICBHUFBDLi4uXC8uX1NC
X1BDCiAgICA5RTUwOiA0OSAzMiA0NyA1MCA1MCA0NCAwQSAwMiA4NiA1QyAyRiAwMyA1RiA1MyA0
MiA1RiAgSTJHUFBELi4uXC8uX1NCXwogICAgOUU2MDogNTAgNDMgNDkgMzIgNDcgNTAgNTAgNDUg
MEEgMDIgODYgNUMgMkYgMDMgNUYgNTMgIFBDSTJHUFBFLi4uXC8uX1MKICAgIDlFNzA6IDQyIDVG
IDUwIDQzIDQ5IDMyIDQ3IDUwIDUwIDQ2IDBBIDAyIDg2IDVDIDJGIDAzICBCX1BDSTJHUFBGLi4u
XC8uCiAgICA5RTgwOiA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMiA0NyA1MCA1MCA0NyAwQSAwMiA4
NiA1QyAgX1NCX1BDSTJHUFBHLi4uXAogICAgOUU5MDogMkYgMDMgNUYgNTMgNDIgNUYgNTAgNDMg
NDkgMzIgNDcgNTAgNTAgNDggMEEgMDIgIC8uX1NCX1BDSTJHUFBILi4KICAgIDlFQTA6IDg2IDVD
IDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMyIDQ3IDUwIDMxIDM1ICAuXC8uX1NCX1BDSTJH
UDE1CiAgICA5RUIwOiAwQSAwMiA4NiA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMiA0
NyA1MCAgLi4uXC8uX1NCX1BDSTJHUAogICAgOUVDMDogMzIgMzUgMEEgMDIgODYgNUMgMkYgMDMg
NUYgNTMgNDIgNUYgNTAgNDMgNDkgMzIgIDI1Li4uXC8uX1NCX1BDSTIKICAgIDlFRDA6IDQ3IDUw
IDMzIDM1IDBBIDAyIDg2IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzICBHUDM1Li4uXC8uX1NC
X1BDCiAgICA5RUUwOiA0OSAzMiA0NyA1MCAzNCAzNSAwQSAwMiA4NiA1QyAyRiAwMyA1RiA1MyA0
MiA1RiAgSTJHUDQ1Li4uXC8uX1NCXwogICAgOUVGMDogNTAgNDMgNDkgMzAgNDcgNTAgNTAgMzAg
MEEgMDIgODYgNUMgMkYgMDMgNUYgNTMgIFBDSTBHUFAwLi4uXC8uX1MKICAgIDlGMDA6IDQyIDVG
IDUwIDQzIDQ5IDMwIDQ3IDUwIDUwIDMyIDBBIDAyIDg2IDVDIDJGIDAzICBCX1BDSTBHUFAyLi4u
XC8uCiAgICA5RjEwOiA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMCA0NyA1MCA1MCAzMyAwQSAwMiA4
NiA1QyAgX1NCX1BDSTBHUFAzLi4uXAogICAgOUYyMDogMkYgMDMgNUYgNTMgNDIgNUYgNTAgNDMg
NDkgMzAgNDcgNTAgNTAgMzQgMEEgMDIgIC8uX1NCX1BDSTBHUFA0Li4KICAgIDlGMzA6IDg2IDVD
IDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMwIDQ3IDUwIDUwIDM1ICAuXC8uX1NCX1BDSTBH
UFA1CiAgICA5RjQwOiAwQSAwMiA4NiA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMCA0
NyA1MCAgLi4uXC8uX1NCX1BDSTBHUAogICAgOUY1MDogNTAgMzYgMEEgMDIgODYgNUMgMkYgMDMg
NUYgNTMgNDIgNUYgNTAgNDMgNDkgMzAgIFA2Li4uXC8uX1NCX1BDSTAKICAgIDlGNjA6IDQ3IDUw
IDUwIDM3IDBBIDAyIDg2IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzICBHUFA3Li4uXC8uX1NC
X1BDCiAgICA5RjcwOiA0OSAzMCA0NyA1MCA1MCAzOCAwQSAwMiA4NiA1QyAyRiAwMyA1RiA1MyA0
MiA1RiAgSTBHUFA4Li4uXC8uX1NCXwogICAgOUY4MDogNTAgNDMgNDkgMzAgNDcgNTAgNTAgMzkg
MEEgMDIgODYgNUMgMkYgMDMgNUYgNTMgIFBDSTBHUFA5Li4uXC8uX1MKICAgIDlGOTA6IDQyIDVG
IDUwIDQzIDQ5IDMwIDQ3IDUwIDUwIDQxIDBBIDAyIDg2IDVDIDJGIDAzICBCX1BDSTBHUFBBLi4u
XC8uCiAgICA5RkEwOiA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMCA0NyA1MCA1MCA0MiAwQSAwMiA4
NiA1QyAgX1NCX1BDSTBHUFBCLi4uXAogICAgOUZCMDogMkYgMDMgNUYgNTMgNDIgNUYgNTAgNDMg
NDkgMzAgNDcgNTAgNTAgNDMgMEEgMDIgIC8uX1NCX1BDSTBHUFBDLi4KICAgIDlGQzA6IDg2IDVD
IDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMwIDQ3IDUwIDUwIDQ0ICAuXC8uX1NCX1BDSTBH
UFBECiAgICA5RkQwOiAwQSAwMiA4NiA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMCA0
NyA1MCAgLi4uXC8uX1NCX1BDSTBHUAogICAgOUZFMDogNTAgNDUgMEEgMDIgODYgNUMgMkYgMDMg
NUYgNTMgNDIgNUYgNTAgNDMgNDkgMzAgIFBFLi4uXC8uX1NCX1BDSTAKICAgIDlGRjA6IDQ3IDUw
IDUwIDQ2IDBBIDAyIDg2IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzICBHUFBGLi4uXC8uX1NC
X1BDCiAgICBBMDAwOiA0OSAzMCA0NyA1MCA1MCA0NyAwQSAwMiA4NiA1QyAyRiAwMyA1RiA1MyA0
MiA1RiAgSTBHUFBHLi4uXC8uX1NCXwogICAgQTAxMDogNTAgNDMgNDkgMzAgNDcgNTAgNTAgNDgg
MEEgMDIgODYgNUMgMkYgMDMgNUYgNTMgIFBDSTBHUFBILi4uXC8uX1MKICAgIEEwMjA6IDQyIDVG
IDUwIDQzIDQ5IDMwIDQ3IDUwIDMxIDM1IDBBIDAyIDg2IDVDIDJGIDAzICBCX1BDSTBHUDE1Li4u
XC8uCiAgICBBMDMwOiA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMCA0NyA1MCAzMiAzNSAwQSAwMiA4
NiA1QyAgX1NCX1BDSTBHUDI1Li4uXAogICAgQTA0MDogMkYgMDMgNUYgNTMgNDIgNUYgNTAgNDMg
NDkgMzAgNDcgNTAgMzMgMzUgMEEgMDIgIC8uX1NCX1BDSTBHUDM1Li4KICAgIEEwNTA6IDg2IDVD
IDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMwIDQ3IDUwIDM0IDM1ICAuXC8uX1NCX1BDSTBH
UDQ1CiAgICBBMDYwOiAwQSAwMiA4NiA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMSA0
NyA1MCAgLi4uXC8uX1NCX1BDSTFHUAogICAgQTA3MDogNTAgMzAgMEEgMDIgODYgNUMgMkYgMDMg
NUYgNTMgNDIgNUYgNTAgNDMgNDkgMzEgIFAwLi4uXC8uX1NCX1BDSTEKICAgIEEwODA6IDQ3IDUw
IDUwIDMxIDBBIDAyIDg2IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzICBHUFAxLi4uXC8uX1NC
X1BDCiAgICBBMDkwOiA0OSAzMSA0NyA1MCA1MCAzMiAwQSAwMiA4NiA1QyAyRiAwMyA1RiA1MyA0
MiA1RiAgSTFHUFAyLi4uXC8uX1NCXwogICAgQTBBMDogNTAgNDMgNDkgMzEgNDcgNTAgNTAgMzMg
MEEgMDIgODYgNUMgMkYgMDMgNUYgNTMgIFBDSTFHUFAzLi4uXC8uX1MKICAgIEEwQjA6IDQyIDVG
IDUwIDQzIDQ5IDMxIDQ3IDUwIDUwIDM0IDBBIDAyIDg2IDVDIDJGIDAzICBCX1BDSTFHUFA0Li4u
XC8uCiAgICBBMEMwOiA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMSA0NyA1MCA1MCAzNSAwQSAwMiA4
NiA1QyAgX1NCX1BDSTFHUFA1Li4uXAogICAgQTBEMDogMkYgMDMgNUYgNTMgNDIgNUYgNTAgNDMg
NDkgMzEgNDcgNTAgNTAgMzYgMEEgMDIgIC8uX1NCX1BDSTFHUFA2Li4KICAgIEEwRTA6IDg2IDVD
IDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMxIDQ3IDUwIDUwIDM3ICAuXC8uX1NCX1BDSTFH
UFA3CiAgICBBMEYwOiAwQSAwMiA4NiA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMSA0
NyA1MCAgLi4uXC8uX1NCX1BDSTFHUAogICAgQTEwMDogNTAgMzggMEEgMDIgODYgNUMgMkYgMDMg
NUYgNTMgNDIgNUYgNTAgNDMgNDkgMzEgIFA4Li4uXC8uX1NCX1BDSTEKICAgIEExMTA6IDQ3IDUw
IDUwIDM5IDBBIDAyIDg2IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzICBHUFA5Li4uXC8uX1NC
X1BDCiAgICBBMTIwOiA0OSAzMSA0NyA1MCA1MCA0MSAwQSAwMiA4NiA1QyAyRiAwMyA1RiA1MyA0
MiA1RiAgSTFHUFBBLi4uXC8uX1NCXwogICAgQTEzMDogNTAgNDMgNDkgMzEgNDcgNTAgNTAgNDIg
MEEgMDIgODYgNUMgMkYgMDMgNUYgNTMgIFBDSTFHUFBCLi4uXC8uX1MKICAgIEExNDA6IDQyIDVG
IDUwIDQzIDQ5IDMxIDQ3IDUwIDUwIDQzIDBBIDAyIDg2IDVDIDJGIDAzICBCX1BDSTFHUFBDLi4u
XC8uCiAgICBBMTUwOiA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMSA0NyA1MCA1MCA0NCAwQSAwMiA4
NiA1QyAgX1NCX1BDSTFHUFBELi4uXAogICAgQTE2MDogMkYgMDMgNUYgNTMgNDIgNUYgNTAgNDMg
NDkgMzEgNDcgNTAgNTAgNDUgMEEgMDIgIC8uX1NCX1BDSTFHUFBFLi4KICAgIEExNzA6IDg2IDVD
IDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMxIDQ3IDUwIDUwIDQ2ICAuXC8uX1NCX1BDSTFH
UFBGCiAgICBBMTgwOiAwQSAwMiA4NiA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMSA0
NyA1MCAgLi4uXC8uX1NCX1BDSTFHUAogICAgQTE5MDogNTAgNDcgMEEgMDIgODYgNUMgMkYgMDMg
NUYgNTMgNDIgNUYgNTAgNDMgNDkgMzEgIFBHLi4uXC8uX1NCX1BDSTEKICAgIEExQTA6IDQ3IDUw
IDUwIDQ4IDBBIDAyIDg2IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzICBHUFBILi4uXC8uX1NC
X1BDCiAgICBBMUIwOiA0OSAzMSA0NyA1MCAzMSAzNSAwQSAwMiA4NiA1QyAyRiAwMyA1RiA1MyA0
MiA1RiAgSTFHUDE1Li4uXC8uX1NCXwogICAgQTFDMDogNTAgNDMgNDkgMzEgNDcgNTAgMzIgMzUg
MEEgMDIgODYgNUMgMkYgMDMgNUYgNTMgIFBDSTFHUDI1Li4uXC8uX1MKICAgIEExRDA6IDQyIDVG
IDUwIDQzIDQ5IDMxIDQ3IDUwIDMzIDM1IDBBIDAyIDg2IDVDIDJGIDAzICBCX1BDSTFHUDM1Li4u
XC8uCiAgICBBMUUwOiA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMSA0NyA1MCAzNCAzNSAwQSAwMiA4
NiA1QyAgX1NCX1BDSTFHUDQ1Li4uXAogICAgQTFGMDogMkUgNUYgNTMgNDIgNUYgNTAgNTcgNTIg
NDIgMEEgMDIgMTQgNEUgMDYgNUYgNEMgIC5fU0JfUFdSQi4uLk4uX0wKICAgIEEyMDA6IDMwIDQy
IDAwIDg2IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMzIDQ3ICAwQi4uXC8uX1NCX1BD
STNHCiAgICBBMjEwOiA1MCAzMSAzNyAwQSAwMiA4NiA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0
MyA0OSAgUDE3Li4uXC8uX1NCX1BDSQogICAgQTIyMDogMzMgNDcgNTAgMzIgMzcgMEEgMDIgODYg
NUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAgIDNHUDI3Li4uXC8uX1NCX1AKICAgIEEyMzA6IDQzIDQ5
IDMyIDQ3IDUwIDMxIDM3IDBBIDAyIDg2IDVDIDJGIDAzIDVGIDUzIDQyICBDSTJHUDE3Li4uXC8u
X1NCCiAgICBBMjQwOiA1RiA1MCA0MyA0OSAzMCA0NyA1MCAzMSAzNyAwQSAwMiA4NiA1QyAyRiAw
MyA1RiAgX1BDSTBHUDE3Li4uXC8uXwogICAgQTI1MDogNTMgNDIgNUYgNTAgNDMgNDkgMzEgNDcg
NTAgMzEgMzcgMEEgMDIgODYgNUMgMkUgIFNCX1BDSTFHUDE3Li4uXC4KICAgIEEyNjA6IDVGIDUz
IDQyIDVGIDUwIDU3IDUyIDQyIDBBIDAyIDEwIDI0IDVGIDUzIDQyIDVGICBfU0JfUFdSQi4uLiRf
U0JfCiAgICBBMjcwOiA1QiA4MiAxRCA1MCA1NyA1MiA0MiAwOCA1RiA0OCA0OSA0NCAwQyA0MSBE
MCAwQyAgWy4uUFdSQi5fSElELkEuLgogICAgQTI4MDogMEMgMDggNUYgNTUgNDkgNDQgMEEgQUEg
MDggNUYgNTMgNTQgNDEgMEEgMEIgMDggIC4uX1VJRC4uLl9TVEEuLi4KICAgIEEyOTA6IDVGIDUz
IDMwIDVGIDEyIDA2IDA0IDAwIDAwIDAwIDAwIDA4IDVGIDUzIDMzIDVGICBfUzBfLi4uLi4uLi5f
UzNfCiAgICBBMkEwOiAxMiAwNyAwNCAwQSAwMyAwMCAwMCAwMCAwOCA1RiA1MyAzNCA1RiAxMiAw
NyAwNCAgLi4uLi4uLi4uX1M0Xy4uLgogICAgQTJCMDogMEEgMDQgMDAgMDAgMDAgMDggNUYgNTMg
MzUgNUYgMTIgMDcgMDQgMEEgMDUgMDAgIC4uLi4uLl9TNV8uLi4uLi4KICAgIEEyQzA6IDAwIDAw
IDE0IDQyIDA1IDVGIDUwIDU0IDUzIDAxIEEwIDRBIDA0IDY4IDRDIDQ1ICAuLi5CLl9QVFMuLkou
aExFCiAgICBBMkQwOiA0NCA1MyA2OCA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1NCA1MCA0RCA1RiA1
NCA1MCAgRFNoXC8uX1NCX1RQTV9UUAogICAgQTJFMDogNTQgNTMgNjggNEQgNTAgNTQgNTMgNjgg
NTMgNTAgNTQgNTMgNjggNUMgMkYgMDMgIFRTaE1QVFNoU1BUU2hcLy4KICAgIEEyRjA6IDVGIDUz
IDQyIDVGIDUwIDQzIDQ5IDMwIDRFIDUwIDU0IDUzIDY4IDVDIDJGIDA1ICBfU0JfUENJME5QVFNo
XC8uCiAgICBBMzAwOiA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMCA1MyA0MiA1MiA0NyA1MyA0OSA0
RiAzMSAgX1NCX1BDSTBTQlJHU0lPMQogICAgQTMxMDogNTMgNDkgNEYgNTMgNjggMTQgNDMgMDUg
NUYgNTcgNDEgNEIgMDEgNUMgMkYgMDUgIFNJT1NoLkMuX1dBSy5cLy4KICAgIEEzMjA6IDVGIDUz
IDQyIDVGIDUwIDQzIDQ5IDMwIDUzIDQyIDUyIDQ3IDUzIDQ5IDRGIDMxICBfU0JfUENJMFNCUkdT
SU8xCiAgICBBMzMwOiA1MyA0OSA0RiA1NyA2OCA3OSA2OCAwQSAwNCA0NCA0MiA0NyAzOCA1QyAy
RiAwMyAgU0lPV2h5aC4uREJHOFwvLgogICAgQTM0MDogNUYgNTMgNDIgNUYgNTAgNDMgNDkgMzAg
NEUgNTcgNDEgNEIgNjggNzkgNjggMEEgIF9TQl9QQ0kwTldBS2h5aC4KICAgIEEzNTA6IDA0IDQ0
IDQyIDQ3IDM4IDUzIDU3IDQxIDRCIDY4IDREIDU3IDQxIDRCIDY4IDRDICAuREJHOFNXQUtoTVdB
S2hMCiAgICBBMzYwOiA0NSA0NCA1NyA2OCBBNCA1NyA0MSA0QiA1MCAxMCAyMiAyRSA1RiA1MyA0
MiA1RiAgRURXaC5XQUtQLiIuX1NCXwogICAgQTM3MDogNTAgNDMgNDkgMzMgMTQgMEIgNDIgNEUg
MzAgMzMgMDAgQTQgNDIgNTIgNDIgNUYgIFBDSTMuLkJOMDMuLkJSQl8KICAgIEEzODA6IDE0IDBC
IDVGIDUwIDU4IDREIDAwIEE0IDUwIDUyIDU4IDREIDEwIDIyIDJFIDVGICAuLl9QWE0uLlBSWE0u
Ii5fCiAgICBBMzkwOiA1MyA0MiA1RiA1MCA0MyA0OSAzMiAxNCAwQiA0MiA0RSAzMCAzMiAwMCBB
NCA0MiAgU0JfUENJMi4uQk4wMi4uQgogICAgQTNBMDogNTIgNDIgNUYgMTQgMEIgNUYgNTAgNTgg
NEQgMDAgQTQgNTAgNTIgNTggNEQgMTAgIFJCXy4uX1BYTS4uUFJYTS4KICAgIEEzQjA6IDIyIDJF
IDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMxIDE0IDBCIDQyIDRFIDMwIDMxICAiLl9TQl9QQ0kxLi5C
TjAxCiAgICBBM0MwOiAwMCBBNCA0MiA1MiA0MiA1RiAxNCAwQiA1RiA1MCA1OCA0RCAwMCBBNCA1
MCA1MiAgLi5CUkJfLi5fUFhNLi5QUgogICAgQTNEMDogNTggNEQgMTAgMjIgMkUgNUYgNTMgNDIg
NUYgNTAgNDMgNDkgMzAgMTQgMEIgNDIgIFhNLiIuX1NCX1BDSTAuLkIKICAgIEEzRTA6IDRFIDMw
IDMwIDAwIEE0IDQyIDUyIDQyIDVGIDE0IDBCIDVGIDUwIDU4IDREIDAwICBOMDAuLkJSQl8uLl9Q
WE0uCiAgICBBM0YwOiBBNCA1MCA1MiA1OCA0RCAxMCA0OSA2MyA1RiA1MyA0MiA1RiA1QiA4MCA1
MCA0OSAgLlBSWE0uSWNfU0JfWy5QSQogICAgQTQwMDogNTIgNTEgMDEgMEIgMDAgMEMgMEEgMDIg
NUIgODEgMTAgNTAgNDkgNTIgNTEgMDEgIFJRLi4uLi4uWy4uUElSUS4KICAgIEE0MTA6IDUwIDQ5
IDQ0IDU4IDA4IDUwIDQ0IDQxIDU0IDA4IDVCIDg2IDRFIDBDIDUwIDQ5ICBQSURYLlBEQVQuWy5O
LlBJCiAgICBBNDIwOiA0NCA1OCA1MCA0NCA0MSA1NCAwMSA1MCA0OSA1MiA0MSAwOCA1MCA0OSA1
MiA0MiAgRFhQREFULlBJUkEuUElSQgogICAgQTQzMDogMDggNTAgNDkgNTIgNDMgMDggNTAgNDkg
NTIgNDQgMDggNTAgNDkgNTIgNDUgMDggIC5QSVJDLlBJUkQuUElSRS4KICAgIEE0NDA6IDUwIDQ5
IDUyIDQ2IDA4IDUwIDQ5IDUyIDQ3IDA4IDUwIDQ5IDUyIDQ4IDA4IDAwICBQSVJGLlBJUkcuUElS
SC4uCiAgICBBNDUwOiAyMCA1MyA0OSA1MiA0MSAwOCA1MyA0OSA1MiA0MiAwOCA1MyA0OSA1MiA0
MyAwOCAgIFNJUkEuU0lSQi5TSVJDLgogICAgQTQ2MDogNTMgNDkgNTIgNDQgMDggNTAgNDkgNTIg
NTMgMDggMDAgMTAgNDggNDQgNDEgNDQgIFNJUkQuUElSUy4uLkhEQUQKICAgIEE0NzA6IDA4IDAw
IDE4IDUzIDQ0IDQzIDRDIDA4IDAwIDEwIDUzIDQ0IDQ5IDRGIDA4IDAwICAuLi5TRENMLi4uU0RJ
Ty4uCiAgICBBNDgwOiA0OCAwQSA1NSA1MyA0MiAzMSAwOCAwMCAxOCA1NSA1MyA0MiAzMyAwOCAw
MCA0MCAgSC5VU0IxLi4uVVNCMy4uQAogICAgQTQ5MDogMDYgNTMgNDEgNTQgNDEgMDggMDAgNDAg
MTAgNDcgNDkgNEYgNDMgMDggMDAgNDggIC5TQVRBLi5ALkdJT0MuLkgKICAgIEE0QTA6IDA2IDQ5
IDMyIDQzIDMwIDA4IDQ5IDMyIDQzIDMxIDA4IDQ5IDMyIDQzIDMyIDA4ICAuSTJDMC5JMkMxLkky
QzIuCiAgICBBNEIwOiA0OSAzMiA0MyAzMyAwOCA1NSA1MiA1NCAzMCAwOCA1NSA1MiA1NCAzMSAw
OCAwMCAgSTJDMy5VUlQwLlVSVDEuLgogICAgQTRDMDogNDAgMDUgNDEgNDkgNTIgNDEgMDggNDEg
NDkgNTIgNDIgMDggNDEgNDkgNTIgNDMgIEAuQUlSQS5BSVJCLkFJUkMKICAgIEE0RDA6IDA4IDQx
IDQ5IDUyIDQ0IDA4IDQxIDQ5IDUyIDQ1IDA4IDQxIDQ5IDUyIDQ2IDA4ICAuQUlSRC5BSVJFLkFJ
UkYuCiAgICBBNEUwOiA0MSA0OSA1MiA0NyAwOCA0MSA0OSA1MiA0OCAwOCA1QiA4MCA0QiA0MiA0
NCA0NCAgQUlSRy5BSVJILlsuS0JERAogICAgQTRGMDogMDEgMEEgNjQgMDEgNUIgODEgMEIgNEIg
NDIgNDQgNDQgMDEgNDkgNEYgMzYgMzQgIC4uZC5bLi5LQkRELklPNjQKICAgIEE1MDA6IDA4IDE0
IDRGIDA3IDQ0IDUzIDUwIDQ5IDAwIDQ5IDRFIDU0IDQxIDBBIDFGIDQ5ICAuLk8uRFNQSS5JTlRB
Li5JCiAgICBBNTEwOiA0RSA1NCA0MiAwQSAxRiA0OSA0RSA1NCA0MyAwQSAxRiA0OSA0RSA1NCA0
NCAwQSAgTlRCLi5JTlRDLi5JTlRELgogICAgQTUyMDogMUYgNzAgNDkgNEYgMzYgMzQgNjEgNzAg
MEEgMUYgNTAgNDkgNTIgNDUgNzAgMEEgIC5wSU82NGFwLi5QSVJFcC4KICAgIEE1MzA6IDFGIDUw
IDQ5IDUyIDQ2IDcwIDBBIDFGIDUwIDQ5IDUyIDQ3IDcwIDBBIDFGIDUwICAuUElSRnAuLlBJUkdw
Li5QCiAgICBBNTQwOiA0OSA1MiA0OCA3MCA0OSA0RiAzNiAzNCA2MSA3MCAwQSAxMCA0MSA0OSA1
MiA0MSAgSVJIcElPNjRhcC4uQUlSQQogICAgQTU1MDogNzAgMEEgMTEgNDEgNDkgNTIgNDIgNzAg
MEEgMTIgNDEgNDkgNTIgNDMgNzAgMEEgIHAuLkFJUkJwLi5BSVJDcC4KICAgIEE1NjA6IDEzIDQx
IDQ5IDUyIDQ0IDcwIDBBIDE0IDQxIDQ5IDUyIDQ1IDcwIDBBIDE1IDQxICAuQUlSRHAuLkFJUkVw
Li5BCiAgICBBNTcwOiA0OSA1MiA0NiA3MCAwQSAxNiA0MSA0OSA1MiA0NyA3MCAwQSAxNyA0MSA0
OSA1MiAgSVJGcC4uQUlSR3AuLkFJUgogICAgQTU4MDogNDggMTQgMTIgNDkgNEUgNTQgNDEgMDEg
NzAgNjggNTAgNDkgNTIgNDEgNzAgNjggIEguLklOVEEucGhQSVJBcGgKICAgIEE1OTA6IDQ4IDQ0
IDQxIDQ0IDE0IDBDIDQ5IDRFIDU0IDQyIDAxIDcwIDY4IDUwIDQ5IDUyICBIREFELi5JTlRCLnBo
UElSCiAgICBBNUEwOiA0MiAxNCAxOCA0OSA0RSA1NCA0MyAwMSA3MCA2OCA1MCA0OSA1MiA0MyA3
MCA2OCAgQi4uSU5UQy5waFBJUkNwaAogICAgQTVCMDogNTUgNTMgNDIgMzEgNzAgNjggNTUgNTMg
NDIgMzMgMTQgMTIgNDkgNEUgNTQgNDQgIFVTQjFwaFVTQjMuLklOVEQKICAgIEE1QzA6IDAxIDcw
IDY4IDUwIDQ5IDUyIDQ0IDcwIDY4IDUzIDQxIDU0IDQxIDA4IDQyIDU1ICAucGhQSVJEcGhTQVRB
LkJVCiAgICBBNUQwOiA0NiA0MSAxMSAwOSAwQSAwNiAyMyAwMCA4MCAxOCA3OSAwMCAwOCA0OSA1
MCA1MiAgRkEuLi4uIy4uLnkuLklQUgogICAgQTVFMDogNDEgMTEgMDkgMEEgMDYgMjMgMjAgMEMg
MTggNzkgMDAgMDggNDkgNTAgNTIgNDIgIEEuLi4uIyAuLnkuLklQUkIKICAgIEE1RjA6IDExIDA5
IDBBIDA2IDIzIDIwIDBDIDE4IDc5IDAwIDA4IDQ5IDUwIDUyIDQzIDExICAuLi4uIyAuLnkuLklQ
UkMuCiAgICBBNjAwOiAwOSAwQSAwNiAyMyAyMCAwQyAxOCA3OSAwMCAwOCA0OSA1MCA1MiA0NCAx
MSAwOSAgLi4uIyAuLnkuLklQUkQuLgogICAgQTYxMDogMEEgMDYgMjMgMjAgMEMgMTggNzkgMDAg
NUIgODIgNEYgMDcgNEMgNEUgNEIgNDEgIC4uIyAuLnkuWy5PLkxOS0EKICAgIEE2MjA6IDA4IDVG
IDQ4IDQ5IDQ0IDBDIDQxIEQwIDBDIDBGIDA4IDVGIDU1IDQ5IDQ0IDAxICAuX0hJRC5BLi4uLl9V
SUQuCiAgICBBNjMwOiAxNCAxNCA1RiA1MyA1NCA0MSAwMCBBMCAwOCA1MCA0OSA1MiA0MSBBNCAw
QSAwQiAgLi5fU1RBLi4uUElSQS4uLgogICAgQTY0MDogQTEgMDQgQTQgMEEgMDkgMTQgMEIgNUYg
NTAgNTIgNTMgMDAgQTQgNTAgNTIgNTMgIC4uLi4uLi5fUFJTLi5QUlMKICAgIEE2NTA6IDQxIDE0
IDBDIDVGIDQ0IDQ5IDUzIDAwIDQ5IDRFIDU0IDQxIDBBIDFGIDE0IDFGICBBLi5fRElTLklOVEEu
Li4uCiAgICBBNjYwOiA1RiA0MyA1MiA1MyAwMCA4QiA0MiA1NSA0NiA0MSAwMSA0OSA1MiA1MSA1
OCA3OSAgX0NSUy4uQlVGQS5JUlFYeQogICAgQTY3MDogMDEgNTAgNDkgNTIgNDEgNDkgNTIgNTEg
NTggQTQgNDIgNTUgNDYgNDEgMTQgMUEgIC5QSVJBSVJRWC5CVUZBLi4KICAgIEE2ODA6IDVGIDUz
IDUyIDUzIDAxIDhCIDY4IDAxIDQ5IDUyIDQxIDVGIDgyIDQ5IDUyIDQxICBfU1JTLi5oLklSQV8u
SVJBCiAgICBBNjkwOiA1RiA2MCA3NiA2MCA0OSA0RSA1NCA0MSA2MCA1QiA4MiA0MCAwOCA0QyA0
RSA0QiAgX2B2YElOVEFgWy5ALkxOSwogICAgQTZBMDogNDIgMDggNUYgNDggNDkgNDQgMEMgNDEg
RDAgMEMgMEYgMDggNUYgNTUgNDkgNDQgIEIuX0hJRC5BLi4uLl9VSUQKICAgIEE2QjA6IDBBIDAy
IDE0IDE0IDVGIDUzIDU0IDQxIDAwIEEwIDA4IDUwIDQ5IDUyIDQyIEE0ICAuLi4uX1NUQS4uLlBJ
UkIuCiAgICBBNkMwOiAwQSAwQiBBMSAwNCBBNCAwQSAwOSAxNCAwQiA1RiA1MCA1MiA1MyAwMCBB
NCA1MCAgLi4uLi4uLi4uX1BSUy4uUAogICAgQTZEMDogNTIgNTMgNDIgMTQgMEMgNUYgNDQgNDkg
NTMgMDAgNDkgNEUgNTQgNDIgMEEgMUYgIFJTQi4uX0RJUy5JTlRCLi4KICAgIEE2RTA6IDE0IDFG
IDVGIDQzIDUyIDUzIDAwIDhCIDQyIDU1IDQ2IDQxIDAxIDQ5IDUyIDUxICAuLl9DUlMuLkJVRkEu
SVJRCiAgICBBNkYwOiA1OCA3OSAwMSA1MCA0OSA1MiA0MiA0OSA1MiA1MSA1OCBBNCA0MiA1NSA0
NiA0MSAgWHkuUElSQklSUVguQlVGQQogICAgQTcwMDogMTQgMUEgNUYgNTMgNTIgNTMgMDEgOEIg
NjggMDEgNDkgNTIgNDEgNUYgODIgNDkgIC4uX1NSUy4uaC5JUkFfLkkKICAgIEE3MTA6IDUyIDQx
IDVGIDYwIDc2IDYwIDQ5IDRFIDU0IDQyIDYwIDVCIDgyIDQwIDA4IDRDICBSQV9gdmBJTlRCYFsu
QC5MCiAgICBBNzIwOiA0RSA0QiA0MyAwOCA1RiA0OCA0OSA0NCAwQyA0MSBEMCAwQyAwRiAwOCA1
RiA1NSAgTktDLl9ISUQuQS4uLi5fVQogICAgQTczMDogNDkgNDQgMEEgMDMgMTQgMTQgNUYgNTMg
NTQgNDEgMDAgQTAgMDggNTAgNDkgNTIgIElELi4uLl9TVEEuLi5QSVIKICAgIEE3NDA6IDQzIEE0
IDBBIDBCIEExIDA0IEE0IDBBIDA5IDE0IDBCIDVGIDUwIDUyIDUzIDAwICBDLi4uLi4uLi4uLl9Q
UlMuCiAgICBBNzUwOiBBNCA1MCA1MiA1MyA0MyAxNCAwQyA1RiA0NCA0OSA1MyAwMCA0OSA0RSA1
NCA0MyAgLlBSU0MuLl9ESVMuSU5UQwogICAgQTc2MDogMEEgMUYgMTQgMUYgNUYgNDMgNTIgNTMg
MDAgOEIgNDIgNTUgNDYgNDEgMDEgNDkgIC4uLi5fQ1JTLi5CVUZBLkkKICAgIEE3NzA6IDUyIDUx
IDU4IDc5IDAxIDUwIDQ5IDUyIDQzIDQ5IDUyIDUxIDU4IEE0IDQyIDU1ICBSUVh5LlBJUkNJUlFY
LkJVCiAgICBBNzgwOiA0NiA0MSAxNCAxQSA1RiA1MyA1MiA1MyAwMSA4QiA2OCAwMSA0OSA1MiA0
MSA1RiAgRkEuLl9TUlMuLmguSVJBXwogICAgQTc5MDogODIgNDkgNTIgNDEgNUYgNjAgNzYgNjAg
NDkgNEUgNTQgNDMgNjAgNUIgODIgNDAgIC5JUkFfYHZgSU5UQ2BbLkAKICAgIEE3QTA6IDA4IDRD
IDRFIDRCIDQ0IDA4IDVGIDQ4IDQ5IDQ0IDBDIDQxIEQwIDBDIDBGIDA4ICAuTE5LRC5fSElELkEu
Li4uCiAgICBBN0IwOiA1RiA1NSA0OSA0NCAwQSAwNCAxNCAxNCA1RiA1MyA1NCA0MSAwMCBBMCAw
OCA1MCAgX1VJRC4uLi5fU1RBLi4uUAogICAgQTdDMDogNDkgNTIgNDQgQTQgMEEgMEIgQTEgMDQg
QTQgMEEgMDkgMTQgMEIgNUYgNTAgNTIgIElSRC4uLi4uLi4uLi5fUFIKICAgIEE3RDA6IDUzIDAw
IEE0IDUwIDUyIDUzIDQ0IDE0IDBDIDVGIDQ0IDQ5IDUzIDAwIDQ5IDRFICBTLi5QUlNELi5fRElT
LklOCiAgICBBN0UwOiA1NCA0NCAwQSAxRiAxNCAxRiA1RiA0MyA1MiA1MyAwMCA4QiA0MiA1NSA0
NiA0MSAgVEQuLi4uX0NSUy4uQlVGQQogICAgQTdGMDogMDEgNDkgNTIgNTEgNTggNzkgMDEgNTAg
NDkgNTIgNDQgNDkgNTIgNTEgNTggQTQgIC5JUlFYeS5QSVJESVJRWC4KICAgIEE4MDA6IDQyIDU1
IDQ2IDQxIDE0IDFBIDVGIDUzIDUyIDUzIDAxIDhCIDY4IDAxIDQ5IDUyICBCVUZBLi5fU1JTLi5o
LklSCiAgICBBODEwOiA0MSA1RiA4MiA0OSA1MiA0MSA1RiA2MCA3NiA2MCA0OSA0RSA1NCA0NCA2
MCA1QiAgQV8uSVJBX2B2YElOVERgWwogICAgQTgyMDogODIgNDIgMDggNEMgNEUgNEIgNDUgMDgg
NUYgNDggNDkgNDQgMEMgNDEgRDAgMEMgIC5CLkxOS0UuX0hJRC5BLi4KICAgIEE4MzA6IDBGIDA4
IDVGIDU1IDQ5IDQ0IDBBIDA1IDE0IDE0IDVGIDUzIDU0IDQxIDAwIEEwICAuLl9VSUQuLi4uX1NU
QS4uCiAgICBBODQwOiAwOCA1MCA0OSA1MiA0NSBBNCAwQSAwQiBBMSAwNCBBNCAwQSAwOSAxNCAw
QiA1RiAgLlBJUkUuLi4uLi4uLi4uXwogICAgQTg1MDogNTAgNTIgNTMgMDAgQTQgNTAgNTIgNTMg
NDUgMTQgMEQgNUYgNDQgNDkgNTMgMDAgIFBSUy4uUFJTRS4uX0RJUy4KICAgIEE4NjA6IDcwIDBB
IDFGIDUwIDQ5IDUyIDQ1IDE0IDFGIDVGIDQzIDUyIDUzIDAwIDhCIDQyICBwLi5QSVJFLi5fQ1JT
Li5CCiAgICBBODcwOiA1NSA0NiA0MSAwMSA0OSA1MiA1MSA1OCA3OSAwMSA1MCA0OSA1MiA0NSA0
OSA1MiAgVUZBLklSUVh5LlBJUkVJUgogICAgQTg4MDogNTEgNTggQTQgNDIgNTUgNDYgNDEgMTQg
MUIgNUYgNTMgNTIgNTMgMDEgOEIgNjggIFFYLkJVRkEuLl9TUlMuLmgKICAgIEE4OTA6IDAxIDQ5
IDUyIDQxIDVGIDgyIDUwIDQ5IDUyIDQ1IDYwIDc2IDYwIDcwIDYwIDUwICAuSVJBXy5QSVJFYHZg
cGBQCiAgICBBOEEwOiA0OSA1MiA0NSA1QiA4MiA0MiAwOCA0QyA0RSA0QiA0NiAwOCA1RiA0OCA0
OSA0NCAgSVJFWy5CLkxOS0YuX0hJRAogICAgQThCMDogMEMgNDEgRDAgMEMgMEYgMDggNUYgNTUg
NDkgNDQgMEEgMDYgMTQgMTQgNUYgNTMgIC5BLi4uLl9VSUQuLi4uX1MKICAgIEE4QzA6IDU0IDQx
IDAwIEEwIDA4IDUwIDQ5IDUyIDQ2IEE0IDBBIDBCIEExIDA0IEE0IDBBICBUQS4uLlBJUkYuLi4u
Li4uCiAgICBBOEQwOiAwOSAxNCAwQiA1RiA1MCA1MiA1MyAwMCBBNCA1MCA1MiA1MyA0NiAxNCAw
RCA1RiAgLi4uX1BSUy4uUFJTRi4uXwogICAgQThFMDogNDQgNDkgNTMgMDAgNzAgMEEgMUYgNTAg
NDkgNTIgNDYgMTQgMUYgNUYgNDMgNTIgIERJUy5wLi5QSVJGLi5fQ1IKICAgIEE4RjA6IDUzIDAw
IDhCIDQyIDU1IDQ2IDQxIDAxIDQ5IDUyIDUxIDU4IDc5IDAxIDUwIDQ5ICBTLi5CVUZBLklSUVh5
LlBJCiAgICBBOTAwOiA1MiA0NiA0OSA1MiA1MSA1OCBBNCA0MiA1NSA0NiA0MSAxNCAxQiA1RiA1
MyA1MiAgUkZJUlFYLkJVRkEuLl9TUgogICAgQTkxMDogNTMgMDEgOEIgNjggMDEgNDkgNTIgNDEg
NUYgODIgNDkgNTIgNDEgNUYgNjAgNzYgIFMuLmguSVJBXy5JUkFfYHYKICAgIEE5MjA6IDYwIDcw
IDYwIDUwIDQ5IDUyIDQ2IDVCIDgyIDQyIDA4IDRDIDRFIDRCIDQ3IDA4ICBgcGBQSVJGWy5CLkxO
S0cuCiAgICBBOTMwOiA1RiA0OCA0OSA0NCAwQyA0MSBEMCAwQyAwRiAwOCA1RiA1NSA0OSA0NCAw
QSAwNyAgX0hJRC5BLi4uLl9VSUQuLgogICAgQTk0MDogMTQgMTQgNUYgNTMgNTQgNDEgMDAgQTAg
MDggNTAgNDkgNTIgNDcgQTQgMEEgMEIgIC4uX1NUQS4uLlBJUkcuLi4KICAgIEE5NTA6IEExIDA0
IEE0IDBBIDA5IDE0IDBCIDVGIDUwIDUyIDUzIDAwIEE0IDUwIDUyIDUzICAuLi4uLi4uX1BSUy4u
UFJTCiAgICBBOTYwOiA0NyAxNCAwRCA1RiA0NCA0OSA1MyAwMCA3MCAwQSAxRiA1MCA0OSA1MiA0
NyAxNCAgRy4uX0RJUy5wLi5QSVJHLgogICAgQTk3MDogMUYgNUYgNDMgNTIgNTMgMDAgOEIgNDIg
NTUgNDYgNDEgMDEgNDkgNTIgNTEgNTggIC5fQ1JTLi5CVUZBLklSUVgKICAgIEE5ODA6IDc5IDAx
IDUwIDQ5IDUyIDQ3IDQ5IDUyIDUxIDU4IEE0IDQyIDU1IDQ2IDQxIDE0ICB5LlBJUkdJUlFYLkJV
RkEuCiAgICBBOTkwOiAxQiA1RiA1MyA1MiA1MyAwMSA4QiA2OCAwMSA0OSA1MiA0MSA1RiA4MiA0
OSA1MiAgLl9TUlMuLmguSVJBXy5JUgogICAgQTlBMDogNDEgNUYgNjAgNzYgNjAgNzAgNjAgNTAg
NDkgNTIgNDcgNUIgODIgNDIgMDggNEMgIEFfYHZgcGBQSVJHWy5CLkwKICAgIEE5QjA6IDRFIDRC
IDQ4IDA4IDVGIDQ4IDQ5IDQ0IDBDIDQxIEQwIDBDIDBGIDA4IDVGIDU1ICBOS0guX0hJRC5BLi4u
Ll9VCiAgICBBOUMwOiA0OSA0NCAwQSAwOCAxNCAxNCA1RiA1MyA1NCA0MSAwMCBBMCAwOCA1MCA0
OSA1MiAgSUQuLi4uX1NUQS4uLlBJUgogICAgQTlEMDogNDggQTQgMEEgMEIgQTEgMDQgQTQgMEEg
MDkgMTQgMEIgNUYgNTAgNTIgNTMgMDAgIEguLi4uLi4uLi4uX1BSUy4KICAgIEE5RTA6IEE0IDUw
IDUyIDUzIDQ4IDE0IDBEIDVGIDQ0IDQ5IDUzIDAwIDcwIDBBIDFGIDUwICAuUFJTSC4uX0RJUy5w
Li5QCiAgICBBOUYwOiA0OSA1MiA0OCAxNCAxRiA1RiA0MyA1MiA1MyAwMCA4QiA0MiA1NSA0NiA0
MSAwMSAgSVJILi5fQ1JTLi5CVUZBLgogICAgQUEwMDogNDkgNTIgNTEgNTggNzkgMDEgNTAgNDkg
NTIgNDggNDkgNTIgNTEgNTggQTQgNDIgIElSUVh5LlBJUkhJUlFYLkIKICAgIEFBMTA6IDU1IDQ2
IDQxIDE0IDFCIDVGIDUzIDUyIDUzIDAxIDhCIDY4IDAxIDQ5IDUyIDQxICBVRkEuLl9TUlMuLmgu
SVJBCiAgICBBQTIwOiA1RiA4MiA0OSA1MiA0MSA1RiA2MCA3NiA2MCA3MCA2MCA1MCA0OSA1MiA0
OCA1QiAgXy5JUkFfYHZgcGBQSVJIWwogICAgQUEzMDogODIgNEYgMDUgNDggNTAgNDUgNTQgMDgg
NUYgNDggNDkgNDQgMEMgNDEgRDAgMDEgIC5PLkhQRVQuX0hJRC5BLi4KICAgIEFBNDA6IDAzIDE0
IDI1IDVGIDUzIDU0IDQxIDAwIEEwIDFDIDkzIDQ4IDUwIDQ1IDRFIDAxICAuLiVfU1RBLi4uLkhQ
RU4uCiAgICBBQTUwOiBBMCAwQyA5MiA5NSA0RiA1MyA1NiA1MiAwQSAwQyBBNCAwQSAwRiA3MCAw
MCA0OCAgLi4uLk9TVlIuLi4uLnAuSAogICAgQUE2MDogNTAgNDUgNEUgQTQgMDEgQTQgMDEgMTQg
MjggNUYgNDMgNTIgNTMgMDAgMDggNDIgIFBFTi4uLi4uKF9DUlMuLkIKICAgIEFBNzA6IDU1IDQ2
IDMwIDExIDE3IDBBIDE0IDIyIDAxIDAwIDIyIDAwIDAxIDg2IDA5IDAwICBVRjAuLi4uIi4uIi4u
Li4uCiAgICBBQTgwOiAwMCAwMCAwMCBEMCBGRSAwMCAwNCAwMCAwMCA3OSAwMCBBNCA0MiA1NSA0
NiAzMCAgLi4uLi4uLi4ueS4uQlVGMAogICAgQUE5MDogMTAgNEYgNEUgMkYgMDMgNUYgNTMgNDIg
NUYgNTAgNDMgNDkgMzEgNDcgNTAgNTAgIC5PTi8uX1NCX1BDSTFHUFAKICAgIEFBQTA6IDQyIDVC
IDgyIDREIDREIDU1IDUwIDMwIDMwIDA4IDVGIDQxIDQ0IDUyIDAwIDVCICBCWy5NTVVQMDAuX0FE
Ui5bCiAgICBBQUIwOiA4MiAzMCA0NCA1MCAzMCAzMCAwOCA1RiA0MSA0NCA1MiAwMCAwOCA1RiA1
MCA1MiAgLjBEUDAwLl9BRFIuLl9QUgogICAgQUFDMDogNTcgMTIgMDYgMDIgMEEgMDggMEEgMDQg
NUIgODIgMTcgNEMgNEUgMzAgMzAgMDggIFcuLi4uLi4uWy4uTE4wMC4KICAgIEFBRDA6IDVGIDQx
IDQ0IDUyIDAwIDA4IDVGIDUwIDUyIDU3IDEyIDA2IDAyIDBBIDA4IDBBICBfQURSLi5fUFJXLi4u
Li4uCiAgICBBQUUwOiAwNCA1QiA4MiAwRiA0NCA1MCAzMiAzMCAwOCA1RiA0MSA0NCA1MiAwQyAw
MCAwMCAgLlsuLkRQMjAuX0FEUi4uLgogICAgQUFGMDogMDQgMDAgNUIgODIgMEYgNDQgNTAgMzIg
MzggMDggNUYgNDEgNDQgNTIgMEMgMDAgIC4uWy4uRFAyOC5fQURSLi4KICAgIEFCMDA6IDAwIDA1
IDAwIDVCIDgyIDBGIDQ0IDUwIDMzIDMwIDA4IDVGIDQxIDQ0IDUyIDBDICAuLi5bLi5EUDMwLl9B
RFIuCiAgICBBQjEwOiAwMCAwMCAwNiAwMCA1QiA4MiAwRiA0NCA1MCAzMyAzOCAwOCA1RiA0MSA0
NCA1MiAgLi4uLlsuLkRQMzguX0FEUgogICAgQUIyMDogMEMgMDAgMDAgMDcgMDAgNUIgODIgMzQg
NDQgNTAgMzQgMzAgMDggNUYgNDEgNDQgIC4uLi4uWy40RFA0MC5fQUQKICAgIEFCMzA6IDUyIDBD
IDAwIDAwIDA4IDAwIDA4IDVGIDUwIDUyIDU3IDEyIDA2IDAyIDBBIDA4ICBSLi4uLi4uX1BSVy4u
Li4uCiAgICBBQjQwOiAwQSAwNCA1QiA4MiAxNyA1NyA0RSAzMCAzMCAwOCA1RiA0MSA0NCA1MiAw
MCAwOCAgLi5bLi5XTjAwLl9BRFIuLgogICAgQUI1MDogNUYgNTAgNTIgNTcgMTIgMDYgMDIgMEEg
MDggMEEgMDQgNUIgODIgMzQgNDQgNTAgIF9QUlcuLi4uLi4uWy40RFAKICAgIEFCNjA6IDM4IDM4
IDA4IDVGIDQxIDQ0IDUyIDBDIDAwIDAwIDBCIDAwIDA4IDVGIDUwIDUyICA4OC5fQURSLi4uLi4u
X1BSCiAgICBBQjcwOiA1NyAxMiAwNiAwMiAwQSAwOCAwQSAwNCA1QiA4MiAxNyA0QyA0RSAzMCAz
MCAwOCAgVy4uLi4uLi5bLi5MTjAwLgogICAgQUI4MDogNUYgNDEgNDQgNTIgMDAgMDggNUYgNTAg
NTIgNTcgMTIgMDYgMDIgMEEgMDggMEEgIF9BRFIuLl9QUlcuLi4uLi4KICAgIEFCOTA6IDA0IDVC
IDgyIDRGIDNDIDQ0IDUwIDM2IDMwIDA4IDVGIDQxIDQ0IDUyIDBDIDAwICAuWy5PPERQNjAuX0FE
Ui4uCiAgICBBQkEwOiAwMCAwQyAwMCAwOCA1RiA1MCA1MiA1NyAxMiAwNiAwMiAwQSAwOCAwQSAw
NCA1QiAgLi4uLl9QUlcuLi4uLi4uWwogICAgQUJCMDogODIgNDEgM0IgNTggNDggMzAgMzAgMDgg
NUYgNDEgNDQgNTIgMDAgMDggNUYgNTAgIC5BO1hIMDAuX0FEUi4uX1AKICAgIEFCQzA6IDUyIDU3
IDEyIDA2IDAyIDBBIDA4IDBBIDA0IDVCIDgyIDQ3IDM5IDUyIDQ4IDU1ICBSVy4uLi4uLi5bLkc5
UkhVCiAgICBBQkQwOiA0MiAwOCA1RiA0MSA0NCA1MiAwMCA1QiA4MiAzMCA1MyA1MyAzMCAzMSAw
OCA1RiAgQi5fQURSLlsuMFNTMDEuXwogICAgQUJFMDogNDEgNDQgNTIgMDEgMTQgMEUgNUYgNTUg
NTAgNDMgMDAgQTQgNEQgMzYgMzAgMzAgIEFEUi4uLl9VUEMuLk02MDAKICAgIEFCRjA6IDAxIDBB
IDA5IDE0IDE1IDVGIDUwIDRDIDQ0IDAwIEE0IDREIDM2IDMwIDMxIDAxICAuLi4uLl9QTEQuLk02
MDEuCiAgICBBQzAwOiAwMSAwQiAwMSAwMSAwQSAwMyAwQSAxNSAwMCA1QiA4MiAzMSA0OCA1MyAz
MCAzMSAgLi4uLi4uLi4uWy4xSFMwMQogICAgQUMxMDogMDggNUYgNDEgNDQgNTIgMEEgMDcgMTQg
MEUgNUYgNTUgNTAgNDMgMDAgQTQgNEQgIC5fQURSLi4uLl9VUEMuLk0KICAgIEFDMjA6IDM2IDMw
IDMwIDAxIDBBIDA5IDE0IDE1IDVGIDUwIDRDIDQ0IDAwIEE0IDREIDM2ICA2MDAuLi4uLl9QTEQu
Lk02CiAgICBBQzMwOiAzMCAzMSAwMSAwMSAwQiAwMSAwMSAwQSAwMyAwQSAxNSAwMCA1QiA4MiAz
MSA1MyAgMDEuLi4uLi4uLi4uWy4xUwogICAgQUM0MDogNTMgMzAgMzIgMDggNUYgNDEgNDQgNTIg
MEEgMDIgMTQgMEUgNUYgNTUgNTAgNDMgIFMwMi5fQURSLi4uLl9VUEMKICAgIEFDNTA6IDAwIEE0
IDREIDM2IDMwIDMwIDAxIDBBIDA5IDE0IDE1IDVGIDUwIDRDIDQ0IDAwICAuLk02MDAuLi4uLl9Q
TEQuCiAgICBBQzYwOiBBNCA0RCAzNiAzMCAzMSAwMSAwMSAwQiAwMiAwMSAwQSAwMyAwQSAxNSAw
MCA1QiAgLk02MDEuLi4uLi4uLi4uWwogICAgQUM3MDogODIgMzEgNDggNTMgMzAgMzIgMDggNUYg
NDEgNDQgNTIgMEEgMDggMTQgMEUgNUYgIC4xSFMwMi5fQURSLi4uLl8KICAgIEFDODA6IDU1IDUw
IDQzIDAwIEE0IDREIDM2IDMwIDMwIDAxIDBBIDA5IDE0IDE1IDVGIDUwICBVUEMuLk02MDAuLi4u
Ll9QCiAgICBBQzkwOiA0QyA0NCAwMCBBNCA0RCAzNiAzMCAzMSAwMSAwMSAwQiAwMiAwMSAwQSAw
MyAwQSAgTEQuLk02MDEuLi4uLi4uLgogICAgQUNBMDogMTUgMDAgNUIgODIgMzEgNTMgNTMgMzAg
MzMgMDggNUYgNDEgNDQgNTIgMEEgMDMgIC4uWy4xU1MwMy5fQURSLi4KICAgIEFDQjA6IDE0IDBF
IDVGIDU1IDUwIDQzIDAwIEE0IDREIDM2IDMwIDMwIDAxIDBBIDAzIDE0ICAuLl9VUEMuLk02MDAu
Li4uCiAgICBBQ0MwOiAxNSA1RiA1MCA0QyA0NCAwMCBBNCA0RCAzNiAzMCAzMSAwMCAwMSAwQiAw
MyAwMSAgLl9QTEQuLk02MDEuLi4uLgogICAgQUNEMDogMEEgMDMgMEEgMTUgMDAgNUIgODIgMzAg
NDggNTMgMzAgMzMgMDggNUYgNDEgNDQgIC4uLi4uWy4wSFMwMy5fQUQKICAgIEFDRTA6IDUyIDBB
IDA5IDE0IDBEIDVGIDU1IDUwIDQzIDAwIEE0IDREIDM2IDMwIDMwIDAxICBSLi4uLl9VUEMuLk02
MDAuCiAgICBBQ0YwOiAwMCAxNCAxNSA1RiA1MCA0QyA0NCAwMCBBNCA0RCAzNiAzMCAzMSAwMCAw
MSAwQiAgLi4uX1BMRC4uTTYwMS4uLgogICAgQUQwMDogMDMgMDEgMEEgMDMgMEEgMTUgMDAgNUIg
ODIgMzEgNTMgNTMgMzAgMzQgMDggNUYgIC4uLi4uLi5bLjFTUzA0Ll8KICAgIEFEMTA6IDQxIDQ0
IDUyIDBBIDA0IDE0IDBFIDVGIDU1IDUwIDQzIDAwIEE0IDREIDM2IDMwICBBRFIuLi4uX1VQQy4u
TTYwCiAgICBBRDIwOiAzMCAwMSAwQSAwMyAxNCAxNSA1RiA1MCA0QyA0NCAwMCBBNCA0RCAzNiAz
MCAzMSAgMC4uLi4uX1BMRC4uTTYwMQogICAgQUQzMDogMDAgMDEgMEIgMDQgMDEgMEEgMDMgMEEg
MTUgMDAgNUIgODIgMzAgNDggNTMgMzAgIC4uLi4uLi4uLi5bLjBIUzAKICAgIEFENDA6IDM0IDA4
IDVGIDQxIDQ0IDUyIDBBIDBBIDE0IDBEIDVGIDU1IDUwIDQzIDAwIEE0ICA0Ll9BRFIuLi4uX1VQ
Qy4uCiAgICBBRDUwOiA0RCAzNiAzMCAzMCAwMSAwMCAxNCAxNSA1RiA1MCA0QyA0NCAwMCBBNCA0
RCAzNiAgTTYwMC4uLi5fUExELi5NNgogICAgQUQ2MDogMzAgMzEgMDAgMDEgMEIgMDMgMDEgMEEg
MDMgMEEgMTUgMDAgNUIgODIgMzEgNTMgIDAxLi4uLi4uLi4uLlsuMVMKICAgIEFENzA6IDUzIDMw
IDM1IDA4IDVGIDQxIDQ0IDUyIDBBIDA1IDE0IDBFIDVGIDU1IDUwIDQzICBTMDUuX0FEUi4uLi5f
VVBDCiAgICBBRDgwOiAwMCBBNCA0RCAzNiAzMCAzMCAwMSAwQSAwMyAxNCAxNSA1RiA1MCA0QyA0
NCAwMCAgLi5NNjAwLi4uLi5fUExELgogICAgQUQ5MDogQTQgNEQgMzYgMzAgMzEgMDAgMDEgMEIg
MDQgMDEgMEEgMDMgMEEgMTUgMDAgNUIgIC5NNjAxLi4uLi4uLi4uLlsKICAgIEFEQTA6IDgyIDMw
IDQ4IDUzIDMwIDM1IDA4IDVGIDQxIDQ0IDUyIDBBIDBCIDE0IDBEIDVGICAuMEhTMDUuX0FEUi4u
Li5fCiAgICBBREIwOiA1NSA1MCA0MyAwMCBBNCA0RCAzNiAzMCAzMCAwMSAwMCAxNCAxNSA1RiA1
MCA0QyAgVVBDLi5NNjAwLi4uLl9QTAogICAgQURDMDogNDQgMDAgQTQgNEQgMzYgMzAgMzEgMDAg
MDEgMEIgMDQgMDEgMEEgMDMgMEEgMTUgIEQuLk02MDEuLi4uLi4uLi4KICAgIEFERDA6IDAwIDVC
IDgyIDMxIDUzIDUzIDMwIDM2IDA4IDVGIDQxIDQ0IDUyIDBBIDA2IDE0ICAuWy4xU1MwNi5fQURS
Li4uCiAgICBBREUwOiAwRSA1RiA1NSA1MCA0MyAwMCBBNCA0RCAzNiAzMCAzMCAwMSAwQSAwMyAx
NCAxNSAgLl9VUEMuLk02MDAuLi4uLgogICAgQURGMDogNUYgNTAgNEMgNDQgMDAgQTQgNEQgMzYg
MzAgMzEgMDAgMDEgMEIgMDUgMDEgMEEgIF9QTEQuLk02MDEuLi4uLi4KICAgIEFFMDA6IDAzIDBB
IDE1IDAwIDVCIDgyIDMwIDQ4IDUzIDMwIDM2IDA4IDVGIDQxIDQ0IDUyICAuLi4uWy4wSFMwNi5f
QURSCiAgICBBRTEwOiAwQSAwQyAxNCAwRCA1RiA1NSA1MCA0MyAwMCBBNCA0RCAzNiAzMCAzMCAw
MSAwMCAgLi4uLl9VUEMuLk02MDAuLgogICAgQUUyMDogMTQgMTUgNUYgNTAgNEMgNDQgMDAgQTQg
NEQgMzYgMzAgMzEgMDAgMDEgMEIgMDUgIC4uX1BMRC4uTTYwMS4uLi4KICAgIEFFMzA6IDAxIDBB
IDAzIDBBIDE1IDAwIDVCIDgyIDMwIDQ4IDUzIDMwIDM3IDA4IDVGIDQxICAuLi4uLi5bLjBIUzA3
Ll9BCiAgICBBRTQwOiA0NCA1MiAwQSAwRCAxNCAwRCA1RiA1NSA1MCA0MyAwMCBBNCA0RCAzNiAz
MCAzMCAgRFIuLi4uX1VQQy4uTTYwMAogICAgQUU1MDogMDEgMDAgMTQgMTUgNUYgNTAgNEMgNDQg
MDAgQTQgNEQgMzYgMzAgMzEgMDAgMDEgIC4uLi5fUExELi5NNjAxLi4KICAgIEFFNjA6IDBCIDBB
IDAxIDBBIDAzIDBBIDE1IDAwIDVCIDgyIDMwIDQ4IDUzIDMwIDM4IDA4ICAuLi4uLi4uLlsuMEhT
MDguCiAgICBBRTcwOiA1RiA0MSA0NCA1MiAwQSAwRSAxNCAwRCA1RiA1NSA1MCA0MyAwMCBBNCA0
RCAzNiAgX0FEUi4uLi5fVVBDLi5NNgogICAgQUU4MDogMzAgMzAgMDEgMDAgMTQgMTUgNUYgNTAg
NEMgNDQgMDAgQTQgNEQgMzYgMzAgMzEgIDAwLi4uLl9QTEQuLk02MDEKICAgIEFFOTA6IDAwIDAx
IDBCIDBCIDAxIDBBIDAzIDBBIDE1IDAwIDVCIDgyIDMwIDQ4IDUzIDMwICAuLi4uLi4uLi4uWy4w
SFMwCiAgICBBRUEwOiAzOSAwOCA1RiA0MSA0NCA1MiAwQSAwRiAxNCAwRCA1RiA1NSA1MCA0MyAw
MCBBNCAgOS5fQURSLi4uLl9VUEMuLgogICAgQUVCMDogNEQgMzYgMzAgMzAgMDAgMDAgMTQgMTUg
NUYgNTAgNEMgNDQgMDAgQTQgNEQgMzYgIE02MDAuLi4uX1BMRC4uTTYKICAgIEFFQzA6IDMwIDMx
IDAwIDAwIDBCIDBDIDAxIDBBIDAzIDBBIDE1IDAwIDVCIDgyIDMwIDQ4ICAwMS4uLi4uLi4uLi5b
LjBICiAgICBBRUQwOiA1MyAzMSAzMCAwOCA1RiA0MSA0NCA1MiAwQSAxMCAxNCAwRCA1RiA1NSA1
MCA0MyAgUzEwLl9BRFIuLi4uX1VQQwogICAgQUVFMDogMDAgQTQgNEQgMzYgMzAgMzAgMDAgMDAg
MTQgMTUgNUYgNTAgNEMgNDQgMDAgQTQgIC4uTTYwMC4uLi5fUExELi4KICAgIEFFRjA6IDREIDM2
IDMwIDMxIDAwIDAwIDBCIDBEIDAxIDBBIDAzIDBBIDE1IDAwIDVCIDgyICBNNjAxLi4uLi4uLi4u
LlsuCiAgICBBRjAwOiAzMCA0OCA1MyAzMSAzMSAwOCA1RiA0MSA0NCA1MiAwQSAxMSAxNCAwRCA1
RiA1NSAgMEhTMTEuX0FEUi4uLi5fVQogICAgQUYxMDogNTAgNDMgMDAgQTQgNEQgMzYgMzAgMzAg
MDEgMDAgMTQgMTUgNUYgNTAgNEMgNDQgIFBDLi5NNjAwLi4uLl9QTEQKICAgIEFGMjA6IDAwIEE0
IDREIDM2IDMwIDMxIDAwIDAxIDBCIDBFIDAxIDBBIDAzIDBBIDE1IDAwICAuLk02MDEuLi4uLi4u
Li4uCiAgICBBRjMwOiA1QiA4MiAzMCA0OCA1MyAzMSAzMiAwOCA1RiA0MSA0NCA1MiAwQSAxMiAx
NCAwRCAgWy4wSFMxMi5fQURSLi4uLgogICAgQUY0MDogNUYgNTUgNTAgNDMgMDAgQTQgNEQgMzYg
MzAgMzAgMDEgMDAgMTQgMTUgNUYgNTAgIF9VUEMuLk02MDAuLi4uX1AKICAgIEFGNTA6IDRDIDQ0
IDAwIEE0IDREIDM2IDMwIDMxIDAwIDAxIDBCIDBGIDAxIDBBIDAzIDBBICBMRC4uTTYwMS4uLi4u
Li4uCiAgICBBRjYwOiAxNSAwMCA1QiA4MiAxQyA0NCA1MCAzNiAzOCAwOCA1RiA0MSA0NCA1MiAw
QyAwMCAgLi5bLi5EUDY4Ll9BRFIuLgogICAgQUY3MDogMDAgMEQgMDAgNUIgODIgMEIgNTMgNDEg
MzAgMzAgMDggNUYgNDEgNDQgNTIgMDAgIC4uLlsuLlNBMDAuX0FEUi4KICAgIEFGODA6IDEwIDRB
IDA5IDVGIDQ3IDUwIDQ1IDE0IDQzIDA5IDVGIDQ1IDMxIDMwIDAwIEEwICAuSi5fR1BFLkMuX0Ux
MC4uCiAgICBBRjkwOiAyMiA1QiAxMiA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMCA1
MCA1MCAgIlsuXC8uX1NCX1BDSTBQUAogICAgQUZBMDogNEQgNDUgMDAgNUMgMkYgMDMgNUYgNTMg
NDIgNUYgNTAgNDMgNDkgMzAgNTAgNTAgIE1FLlwvLl9TQl9QQ0kwUFAKICAgIEFGQjA6IDREIDQ1
IEEwIDIyIDVCIDEyIDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5ICBNRS4iWy5cLy5fU0Jf
UENJCiAgICBBRkMwOiAzMSA1MCA1MCA0RCA0NSAwMCA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0
MyA0OSAgMVBQTUUuXC8uX1NCX1BDSQogICAgQUZEMDogMzEgNTAgNTAgNEQgNDUgQTAgMjIgNUIg
MTIgNUMgMkYgMDMgNUYgNTMgNDIgNUYgIDFQUE1FLiJbLlwvLl9TQl8KICAgIEFGRTA6IDUwIDQz
IDQ5IDMyIDUwIDUwIDREIDQ1IDAwIDVDIDJGIDAzIDVGIDUzIDQyIDVGICBQQ0kyUFBNRS5cLy5f
U0JfCiAgICBBRkYwOiA1MCA0MyA0OSAzMiA1MCA1MCA0RCA0NSBBMCAyMiA1QiAxMiA1QyAyRiAw
MyA1RiAgUENJMlBQTUUuIlsuXC8uXwogICAgQjAwMDogNTMgNDIgNUYgNTAgNDMgNDkgMzMgNTAg
NTAgNEQgNDUgMDAgNUMgMkYgMDMgNUYgIFNCX1BDSTNQUE1FLlwvLl8KICAgIEIwMTA6IDUzIDQy
IDVGIDUwIDQzIDQ5IDMzIDUwIDUwIDREIDQ1IDA4IDU0IDUzIDRGIDUzICBTQl9QQ0kzUFBNRS5U
U09TCiAgICBCMDIwOiAwQSA3NSBBMCAzRiA1QiAxMiA1QyA1RiA0RiA1MyA0OSAwMCBBMCAxQSA1
RiA0RiAgLnUuP1suXF9PU0kuLi5fTwogICAgQjAzMDogNTMgNDkgMEQgNTcgNjkgNkUgNjQgNkYg
NzcgNzMgMjAgMzIgMzAgMzAgMzkgMDAgIFNJLldpbmRvd3MgMjAwOS4KICAgIEIwNDA6IDcwIDBB
IDUwIDU0IDUzIDRGIDUzIEEwIDFBIDVGIDRGIDUzIDQ5IDBEIDU3IDY5ICBwLlBUU09TLi5fT1NJ
LldpCiAgICBCMDUwOiA2RSA2NCA2RiA3NyA3MyAyMCAzMiAzMCAzMSAzNSAwMCA3MCAwQSA3MCA1
NCA1MyAgbmRvd3MgMjAxNS5wLnBUUwogICAgQjA2MDogNEYgNTMgMTAgNDggRjcgNUYgNTMgNDIg
NUYgNUIgODAgNDUgNDMgNEQgNDMgMDEgIE9TLkguX1NCX1suRUNNQy4KICAgIEIwNzA6IDBBIDcy
IDBBIDAyIDVCIDgxIDEwIDQ1IDQzIDREIDQzIDAwIDQ1IDQzIDREIDQ5ICAuci4uWy4uRUNNQy5F
Q01JCiAgICBCMDgwOiAwOCA0NSA0MyA0RCA0NCAwOCA1QiA4NiAxMiA0NSA0MyA0RCA0OSA0NSA0
MyA0RCAgLkVDTUQuWy4uRUNNSUVDTQogICAgQjA5MDogNDQgMDEgMDAgNDAgMDQgNDYgNTIgNTQg
NDIgMjAgNUIgODAgNDYgNTIgNTQgNTAgIEQuLkAuRlJUQiBbLkZSVFAKICAgIEIwQTA6IDAwIDQ2
IDUyIDU0IDQyIDBCIDAwIDAxIDVCIDgxIDQ2IDEyIDQ2IDUyIDU0IDUwICAuRlJUQi4uLlsuRi5G
UlRQCiAgICBCMEIwOiAwMCA1MCA0NSA0MiA0MSA0MCAwNCAwMCAwMCAwMCAwNCA0QyA1MCA0MyA0
NSAwMSAgLlBFQkFALi4uLi5MUENFLgogICAgQjBDMDogNDkgNDMgMzAgNDUgMDEgNDkgNDMgMzEg
NDUgMDEgNDkgNDMgMzIgNDUgMDEgNDkgIElDMEUuSUMxRS5JQzJFLkkKICAgIEIwRDA6IDQzIDMz
IDQ1IDAxIDQ5IDQzIDM0IDQ1IDAxIDQ5IDQzIDM1IDQ1IDAxIDU1IDU0ICBDM0UuSUM0RS5JQzVF
LlVUCiAgICBCMEUwOiAzMCA0NSAwMSA1NSA1NCAzMSA0NSAwMSAwMCAwMSAwMCAwMSA1MyA1NCA1
RiA0NSAgMEUuVVQxRS4uLi4uU1RfRQogICAgQjBGMDogMDEgNTUgNTQgMzIgNDUgMDEgMDAgMDEg
NDUgNEQgNEQgNDQgMDIgMDAgMDMgNTggIC5VVDJFLi4uRU1NRC4uLlgKICAgIEIxMDA6IDQ4IDQz
IDQ1IDAxIDAwIDAxIDAwIDAxIDU1IDU0IDMzIDQ1IDAxIDQ1IDUzIDUwICBIQ0UuLi4uLlVUM0Uu
RVNQCiAgICBCMTEwOiA0OSAwMSA0NSA0RCA0RCA0NSAwMSAwMCAwMyA1MCA0MyA0NSA0NiAwMSAw
MCAwNCAgSS5FTU1FLi4uUENFRi4uLgogICAgQjEyMDogNDkgNDMgMzAgNDQgMDEgNDkgNDMgMzEg
NDQgMDEgNDkgNDMgMzIgNDQgMDEgNDkgIElDMEQuSUMxRC5JQzJELkkKICAgIEIxMzA6IDQzIDMz
IDQ0IDAxIDQ5IDQzIDM0IDQ0IDAxIDQ5IDQzIDM1IDQ0IDAxIDU1IDU0ICBDM0QuSUM0RC5JQzVE
LlVUCiAgICBCMTQwOiAzMCA0NCAwMSA1NSA1NCAzMSA0NCAwMSAwMCAwMSAwMCAwMSA1MyA1NCA1
RiA0NCAgMEQuVVQxRC4uLi4uU1RfRAogICAgQjE1MDogMDEgNTUgNTQgMzIgNDQgMDEgMDAgMDEg
NDUgNDggNDMgNDQgMDEgMDAgMDQgNTggIC5VVDJELi4uRUhDRC4uLlgKICAgIEIxNjA6IDQ4IDQz
IDQ0IDAxIDUzIDQ0IDVGIDQ0IDAxIDAwIDAxIDU1IDU0IDMzIDQ0IDAxICBIQ0QuU0RfRC4uLlVU
M0QuCiAgICBCMTcwOiAwMCAwMSA0NSA0RCA0NCAzMyAwMSAwMCAwMiA1MyAzMCAzMyA0NCAwMSAw
MCAwMCAgLi5FTUQzLi4uUzAzRC4uLgogICAgQjE4MDogNDYgNTcgMzAgMzAgMTAgNDYgNTcgMzAg
MzEgMjAgNDYgNTcgMzAgMzIgMTAgNDYgIEZXMDAuRlcwMSBGVzAyLkYKICAgIEIxOTA6IDU3IDMw
IDMzIDIwIDUzIDQ0IDUzIDMwIDA4IDUzIDQ0IDUzIDMxIDA4IDAwIDQwICBXMDMgU0RTMC5TRFMx
Li5ACiAgICBCMUEwOiAwOCA1NSA1NCAzMCA0OSAwMSA1NSA1NCAzMSA0OSAwMSA1NSA1NCAzMiA0
OSAwMSAgLlVUMEkuVVQxSS5VVDJJLgogICAgQjFCMDogNTUgNTQgMzMgNDkgMDEgNTUgNTQgMzQg
NDkgMDEgMDAgMDMgNTUgNEMgMzAgNDkgIFVUM0kuVVQ0SS4uLlVMMEkKICAgIEIxQzA6IDAxIDU1
IDRDIDMxIDQ5IDAxIDU1IDRDIDMyIDQ5IDAxIDU1IDRDIDMzIDQ5IDAxICAuVUwxSS5VTDJJLlVM
M0kuCiAgICBCMUQwOiA1QiA4MCA0NiA0MyA0NiA0NyAwMCA1MCA0NSA0MiA0MSAwQyAwMCAwMCAw
MCAwMSAgWy5GQ0ZHLlBFQkEuLi4uLgogICAgQjFFMDogNUIgODEgMkIgNDYgNDMgNDYgNDcgMDMg
MDAgQzAgMjIgMTggMDUgNDkgNTAgNDQgIFsuK0ZDRkcuLi4iLi5JUEQKICAgIEIxRjA6IDQ1IDIw
IDAwIDAwIDQ5IDREIDUwIDQ1IDIwIDAwIDQwIDE2IDAwIDAyIDRDIDQ0ICBFIC4uSU1QRSAuQC4u
LkxECiAgICBCMjAwOiA1MSAzMCAwMSAwMCA0NSAyOSAwMCAwNyA0MSA1NSA1MyA1MyAwMSA1QiA4
MCA0OSAgUTAuLkUpLi5BVVNTLlsuSQogICAgQjIxMDogNEYgNEQgNTggMDAgMEMgMDAgMEQgRDgg
RkUgMEIgMDAgMDEgNUIgODEgNDUgMDcgIE9NWC4uLi4uLi4uLlsuRS4KICAgIEIyMjA6IDQ5IDRG
IDREIDU4IDAwIDAwIDQ4IDBBIDQ5IDREIDMxIDM1IDA4IDAwIDAwIDQ5ICBJT01YLi5ILklNMTUu
Li5JCiAgICBCMjMwOiA0RCAzMSAzNiAwOCAwMCA0MCAwNCA0OSA0RCAzMSA0NiAwOCAwMCAwMCA0
OSA0RCAgTTE2Li5ALklNMUYuLi5JTQogICAgQjI0MDogMzIgMzAgMDggMDAgNDggMTEgNDkgNEQg
MzQgMzQgMDggMDAgMDggNDkgNEQgMzQgIDIwLi5ILklNNDQuLi5JTTQKICAgIEIyNTA6IDM2IDA4
IDAwIDE4IDQ5IDREIDM0IDQxIDA4IDAwIDAwIDQ5IDREIDM0IDQyIDA4ICA2Li4uSU00QS4uLklN
NEIuCiAgICBCMjYwOiAwMCA0OCAwNSA0OSA0RCAzNSAzNyAwOCAwMCAwMCA0OSA0RCAzNSAzOCAw
OCAwMCAgLkguSU01Ny4uLklNNTguLgogICAgQjI3MDogNDggMDcgNDkgNEQgMzYgMzggMDggMDAg
MDAgNDkgNEQgMzYgMzkgMDggMDAgMDAgIEguSU02OC4uLklNNjkuLi4KICAgIEIyODA6IDQ5IDRE
IDM2IDQxIDA4IDAwIDAwIDQ5IDREIDM2IDQyIDA4IDAwIDA4IDQ5IDREICBJTTZBLi4uSU02Qi4u
LklNCiAgICBCMjkwOiAzNiA0NCAwOCA1QiA4MCA0NiA0MSA0MyA1MiAwMCAwQyAwMCAxRSBEOCBG
RSAwQiAgNkQuWy5GQUNSLi4uLi4uLgogICAgQjJBMDogMDAgMDEgNUIgODEgMkEgNDYgNDEgNDMg
NTIgMDAgMDAgNDAgNDAgMDAgMUMgNTIgIC4uWy4qRkFDUi4uQEAuLlIKICAgIEIyQjA6IDQ0IDMy
IDM4IDAxIDAwIDAxIDUyIDUxIDU0IDU5IDAxIDAwIDAxIDAwIDFDIDUzICBEMjguLi5SUVRZLi4u
Li5TCiAgICBCMkMwOiA0NCAzMiAzOCAwMSAwMCAwMSAwMCA0MiAwQyA1MCA0MyAzMSA0MSAwMSA1
QiA4MCAgRDI4Li4uLkIuUEMxQS5bLgogICAgQjJEMDogNDUgNEQgNEQgNTggMDAgMEMgMDAgNTgg
REQgRkUgMEIgMzAgMDEgNUIgODEgMjEgIEVNTVguLi5YLi4uMC5bLiEKICAgIEIyRTA6IDQ1IDRE
IDREIDU4IDAwIDAwIDQwIDY4IDAwIDExIDQ2IDQzIDMxIDM4IDAxIDQ2ICBFTU1YLi5AaC4uRkMx
OC5GCiAgICBCMkYwOiA0MyAzMyAzMyAwMSAwMCAwNyA0MyA0NCA1RiA1NCAwMSA1NyA1MCA1RiA1
NCAwMSAgQzMzLi4uQ0RfVC5XUF9ULgogICAgQjMwMDogNUIgODAgNDUgNEQgNEQgNDIgMDAgMEMg
MDAgNTggREQgRkUgMEIgMzAgMDEgNUIgIFsuRU1NQi4uLlguLi4wLlsKICAgIEIzMTA6IDgxIDJD
IDQ1IDREIDREIDQyIDAwIDAwIDQwIDUyIDQ1IDMwIDQxIDM0IDIwIDAwICAuLEVNTUIuLkBSRTBB
NCAuCiAgICBCMzIwOiAwMCA0NSAzMCA0MSAzOCAyMCAwMCAyMCA0NSAzMCA0MiAzMCAyMCAwMCA0
MCAwRSAgLkUwQTggLiBFMEIwIC5ALgogICAgQjMzMDogNDUgMzAgNDQgMzAgMjAgMDAgNDAgMjEg
NDUgMzEgMzEgMzYgMjAgMDggNTMgNTYgIEUwRDAgLkAhRTExNiAuU1YKICAgIEIzNDA6IDQyIDQ2
IDExIDA1IDBCIDAwIDAxIDAwIDhBIDUzIDU2IDQyIDQ2IDAwIDUzIDMwICBCRi4uLi4uLi5TVkJG
LlMwCiAgICBCMzUwOiA0MSAzNCA4QSA1MyA1NiA0MiA0NiAwQSAwNCA1MyAzMCA0MSAzOCA4QSA1
MyA1NiAgQTQuU1ZCRi4uUzBBOC5TVgogICAgQjM2MDogNDIgNDYgMEEgMDggNTMgMzAgNDIgMzAg
OEEgNTMgNTYgNDIgNDYgMEEgMEMgNTMgIEJGLi5TMEIwLlNWQkYuLlMKICAgIEIzNzA6IDMwIDQ0
IDMwIDhBIDUzIDU2IDQyIDQ2IDBBIDEwIDUzIDMxIDMxIDM2IDE0IDJBICAwRDAuU1ZCRi4uUzEx
Ni4qCiAgICBCMzgwOiA1MyA0NSA0MyA1MiAwOCA3MCA0NSAzMSAzMSAzNiA1MyAzMSAzMSAzNiA3
MCAwMCAgU0VDUi5wRTExNlMxMTZwLgogICAgQjM5MDogNTIgNTEgNTQgNTkgNzAgMDEgNTIgNDQg
MzIgMzggNzAgNTMgNDQgMzIgMzggNjAgIFJRVFlwLlJEMjhwU0QyOGAKICAgIEIzQTA6IEEyIDA4
IDYwIDcwIDUzIDQ0IDMyIDM4IDYwIDE0IDBGIDUyIDQ1IDQzIDUyIDA4ICAuLmBwU0QyOGAuLlJF
Q1IuCiAgICBCM0IwOiA3MCA1MyAzMSAzMSAzNiA0NSAzMSAzMSAzNiA1QiA4MCA0QyA1NSA0OSA0
NSAwMCAgcFMxMTZFMTE2Wy5MVUlFLgogICAgQjNDMDogMEMgMjAgMDAgREMgRkUgMEEgMDQgNUIg
ODEgNDMgMDQgNEMgNTUgNDkgNDUgMDAgIC4gLi4uLi5bLkMuTFVJRS4KICAgIEIzRDA6IDQ5IDQ1
IDUyIDMwIDAxIDQ5IDQ1IDUyIDMxIDAxIDQ5IDQ1IDUyIDMyIDAxIDQ5ICBJRVIwLklFUjEuSUVS
Mi5JCiAgICBCM0UwOiA0NSA1MiAzMyAwMSA1NSA0RiA0QyAzMCAwMSA1NSA0RiA0QyAzMSAwMSA1
NSA0RiAgRVIzLlVPTDAuVU9MMS5VTwogICAgQjNGMDogNEMgMzIgMDEgNTUgNEYgNEMgMzMgMDEg
NTcgNTUgNTIgMzAgMDIgNTcgNTUgNTIgIEwyLlVPTDMuV1VSMC5XVVIKICAgIEI0MDA6IDMxIDAy
IDU3IDU1IDUyIDMyIDAyIDU3IDU1IDUyIDMzIDAyIDE0IDQ3IDA1IDQ2ICAxLldVUjIuV1VSMy4u
Ry5GCiAgICBCNDEwOiA1MiA0OSA0OSAwOSBBMCAwOSA5MyA2OCAwMCBBNCA0OSA0OSA0MyAzMCBB
MSA0NSAgUklJLi4uLmguLklJQzAuRQogICAgQjQyMDogMDQgQTAgMDkgOTMgNjggMDEgQTQgNDkg
NDkgNDMgMzEgQTEgMzggQTAgMEEgOTMgIC4uLi5oLi5JSUMxLjguLi4KICAgIEI0MzA6IDY4IDBB
IDAyIEE0IDQ5IDQ5IDQzIDMyIEExIDJCIEEwIDBBIDkzIDY4IDBBIDAzICBoLi4uSUlDMi4rLi4u
aC4uCiAgICBCNDQwOiBBNCA0OSA0OSA0MyAzMyBBMSAxRSBBMCAwQSA5MyA2OCAwQSAwNCBBNCA0
OSA0OSAgLklJQzMuLi4uLmguLi5JSQogICAgQjQ1MDogNDMgMzQgQTEgMTEgQTAgMEEgOTMgNjgg
MEEgMDUgQTQgNDkgNDkgNDMgMzUgQTEgIEM0Li4uLi5oLi4uSUlDNS4KICAgIEI0NjA6IDA0IEE0
IDBBIDBBIDE0IDNCIDQ2IDUyIDU1IDQ5IDA5IEEwIDA5IDkzIDY4IDAwICAuLi4uLjtGUlVJLi4u
LmguCiAgICBCNDcwOiBBNCA0OSA1NSA0MSAzMCBBMSAyQSBBMCAwOSA5MyA2OCAwMSBBNCA0OSA1
NSA0MSAgLklVQTAuKi4uLmguLklVQQogICAgQjQ4MDogMzEgQTEgMUUgQTAgMEEgOTMgNjggMEEg
MDIgQTQgNDkgNTUgNDEgMzIgQTEgMTEgIDEuLi4uLmguLi5JVUEyLi4KICAgIEI0OTA6IEEwIDBB
IDkzIDY4IDBBIDAzIEE0IDQ5IDU1IDQxIDMzIEExIDA0IEE0IDBBIDAzICAuLi5oLi4uSVVBMy4u
Li4uCiAgICBCNEEwOiAxNCA0NCAwNSA0NiA1NSA0OSA0RiAwOSBBMCAxMSA5MyA0OSA0NSA1MiAz
MCAwMSAgLkQuRlVJTy4uLi5JRVIwLgogICAgQjRCMDogQTAgMDkgOTMgNTcgNTUgNTIgMzAgNjgg
QTQgMDAgQTAgMTEgOTMgNDkgNDUgNTIgIC4uLldVUjBoLi4uLi5JRVIKICAgIEI0QzA6IDMxIDAx
IEEwIDA5IDkzIDU3IDU1IDUyIDMxIDY4IEE0IDAxIEEwIDEyIDkzIDQ5ICAxLi4uLldVUjFoLi4u
Li5JCiAgICBCNEQwOiA0NSA1MiAzMiAwMSBBMCAwQSA5MyA1NyA1NSA1MiAzMiA2OCBBNCAwQSAw
MiBBMCAgRVIyLi4uLldVUjJoLi4uLgogICAgQjRFMDogMTIgOTMgNDkgNDUgNTIgMzMgMDEgQTAg
MEEgOTMgNTcgNTUgNTIgMzMgNjggQTQgIC4uSUVSMy4uLi5XVVIzaC4KICAgIEI0RjA6IDBBIDAz
IEE0IDBBIDBGIDE0IDRCIDA2IDUzIDUyIDQxIDQ0IDBBIDc5IDY4IDAxICAuLi4uLi5LLlNSQUQu
eWguCiAgICBCNTAwOiA2MCA3MiA2MCAwQyA0MCAxRSBEOCBGRSA2MCA1QiA4MCA0MSA0NCA0MyA1
MiAwMCAgYHJgLkAuLi5gWy5BRENSLgogICAgQjUxMDogNjAgMEEgMDIgNUIgODEgMkUgNDEgNDQg
NDMgNTIgMDEgNDEgNDQgNTQgNDQgMDIgIGAuLlsuLkFEQ1IuQURURC4KICAgIEI1MjA6IDQxIDQ0
IDUwIDUzIDAxIDQxIDQ0IDUwIDQ0IDAxIDQxIDQ0IDUzIDRGIDAxIDQxICBBRFBTLkFEUEQuQURT
Ty5BCiAgICBCNTMwOiA0NCA1MyA0MyAwMSA0MSA0NCA1MyA1MiAwMSA0MSA0NCA0OSA1MyAwMSA0
MSA0NCAgRFNDLkFEU1IuQURJUy5BRAogICAgQjU0MDogNDQgNTMgMDMgNzAgMDEgNDEgNDQgNDkg
NTMgNzAgMDAgNDEgNDQgNTMgNTIgNUIgIERTLnAuQURJU3AuQURTUlsKICAgIEI1NTA6IDIxIDY5
IDcwIDAxIDQxIDQ0IDUzIDUyIDcwIDAwIDQxIDQ0IDQ5IDUzIDVCIDIxICAhaXAuQURTUnAuQURJ
U1shCiAgICBCNTYwOiA2OSAxNCA0MCAwQSA0NCA1MyA0MSA0NCAwQSA3OSA2OCAwMSA2MCA3MiA2
MCAwQyAgaS5ALkRTQUQueWguYHJgLgogICAgQjU3MDogNDAgMUUgRDggRkUgNjAgNUIgODAgNDEg
NDQgNDMgNTIgMDAgNjAgMEEgMDIgNUIgIEAuLi5gWy5BRENSLmAuLlsKICAgIEI1ODA6IDgxIDJF
IDQxIDQ0IDQzIDUyIDAxIDQxIDQ0IDU0IDQ0IDAyIDQxIDQ0IDUwIDUzICAuLkFEQ1IuQURURC5B
RFBTCiAgICBCNTkwOiAwMSA0MSA0NCA1MCA0NCAwMSA0MSA0NCA1MyA0RiAwMSA0MSA0NCA1MyA0
MyAwMSAgLkFEUEQuQURTTy5BRFNDLgogICAgQjVBMDogNDEgNDQgNTMgNTIgMDEgNDEgNDQgNDkg
NTMgMDEgNDEgNDQgNDQgNTMgMDMgQTAgIEFEU1IuQURJUy5BRERTLi4KICAgIEI1QjA6IDQyIDA1
IDkyIDkzIDY4IDQxIDQ0IDU0IDQ0IEEwIDIzIDkzIDY5IDAwIDcwIDAwICBCLi4uaEFEVEQuIy5p
LnAuCiAgICBCNUMwOiA0MSA0NCA1NCA0NCA3MCAwMSA0MSA0NCA1MCA0NCA3MCA0MSA0NCA0NCA1
MyA2MCAgQURURHAuQURQRHBBRERTYAogICAgQjVEMDogQTIgMEMgOTIgOTMgNjAgMEEgMDcgNzAg
NDEgNDQgNDQgNTMgNjAgQTAgMjQgOTMgIC4uLi5gLi5wQUREU2AuJC4KICAgIEI1RTA6IDY5IDBB
IDAzIDcwIDAwIDQxIDQ0IDUwIDQ0IDcwIDQxIDQ0IDQ0IDUzIDYwIEEyICBpLi5wLkFEUERwQURE
U2AuCiAgICBCNUYwOiAwQiA5MiA5MyA2MCAwMCA3MCA0MSA0NCA0NCA1MyA2MCA3MCAwQSAwMyA0
MSA0NCAgLi4uYC5wQUREU2BwLi5BRAogICAgQjYwMDogNTQgNDQgMTQgNDUgMEUgNDggNTMgNDEg
NDQgMEEgNzkgNjggMDEgNjAgNzIgNjAgIFRELkUuSFNBRC55aC5gcmAKICAgIEI2MTA6IDBDIDQw
IDFFIEQ4IEZFIDYwIDVCIDgwIDQxIDQ0IDQzIDUyIDAwIDYwIDBBIDAyICAuQC4uLmBbLkFEQ1Iu
YC4uCiAgICBCNjIwOiA1QiA4MSAyRSA0MSA0NCA0MyA1MiAwMSA0MSA0NCA1NCA0NCAwMiA0MSA0
NCA1MCAgWy4uQURDUi5BRFRELkFEUAogICAgQjYzMDogNTMgMDEgNDEgNDQgNTAgNDQgMDEgNDEg
NDQgNTMgNEYgMDEgNDEgNDQgNTMgNDMgIFMuQURQRC5BRFNPLkFEU0MKICAgIEI2NDA6IDAxIDQx
IDQ0IDUzIDUyIDAxIDQxIDQ0IDQ5IDUzIDAxIDQxIDQ0IDQ0IDUzIDAzICAuQURTUi5BRElTLkFE
RFMuCiAgICBCNjUwOiBBMCA0NyAwOSA5MiA5MyA2OSA0MSA0NCA1NCA0NCBBMCA0NiAwNCA5MyA2
OSAwMCAgLkcuLi5pQURURC5GLi5pLgogICAgQjY2MDogNzAgMDEgNTAgNDMgMzEgNDEgNzAgMDAg
NDEgNDQgNTQgNDQgNzAgMDEgNDEgNDQgIHAuUEMxQXAuQURURHAuQUQKICAgIEI2NzA6IDUwIDQ0
IDcwIDQxIDQ0IDQ0IDUzIDYwIEEyIDBDIDkyIDkzIDYwIDBBIDA3IDcwICBQRHBBRERTYC4uLi5g
Li5wCiAgICBCNjgwOiA0MSA0NCA0NCA1MyA2MCA3MCAwMSA1MiA1MSA1NCA1OSA3MCAwMSA1MiA0
NCAzMiAgQUREU2BwLlJRVFlwLlJEMgogICAgQjY5MDogMzggNzAgNTMgNDQgMzIgMzggNjAgQTIg
MDkgOTIgNjAgNzAgNTMgNDQgMzIgMzggIDhwU0QyOGAuLi5gcFNEMjgKICAgIEI2QTA6IDYwIEEw
IDQ2IDA0IDkzIDY5IDBBIDAzIDcwIDAwIDUyIDUxIDU0IDU5IDcwIDAxICBgLkYuLmkuLnAuUlFU
WXAuCiAgICBCNkIwOiA1MiA0NCAzMiAzOCA3MCA1MyA0NCAzMiAzOCA2MCBBMiAwOCA2MCA3MCA1
MyA0NCAgUkQyOHBTRDI4YC4uYHBTRAogICAgQjZDMDogMzIgMzggNjAgNzAgMDAgNDEgNDQgNTAg
NDQgNzAgNDEgNDQgNDQgNTMgNjAgQTIgIDI4YHAuQURQRHBBRERTYC4KICAgIEI2RDA6IDBCIDky
IDkzIDYwIDAwIDcwIDQxIDQ0IDQ0IDUzIDYwIDcwIDBBIDAzIDQxIDQ0ICAuLi5gLnBBRERTYHAu
LkFECiAgICBCNkUwOiA1NCA0NCA3MCAwMCA1MCA0MyAzMSA0MSA1QiA4MCA0NiA1MCA0OSA0MyAw
MSAwQiAgVERwLlBDMUFbLkZQSUMuLgogICAgQjZGMDogMDAgMEMgMEEgMDIgNUIgODEgMTAgNDYg
NTAgNDkgNDMgMDAgNDYgNTAgNDkgNDkgIC4uLi5bLi5GUElDLkZQSUkKICAgIEI3MDA6IDA4IDQ2
IDUwIDQ5IDQ0IDA4IDVCIDg2IDNGIDQ2IDUwIDQ5IDQ5IDQ2IDUwIDQ5ICAuRlBJRC5bLj9GUElJ
RlBJCiAgICBCNzEwOiA0NCAwMSAwMCA0MCA3OCA0OSA0OSA0MyAzMCAwOCA0OSA0OSA0MyAzMSAw
OCA0OSAgRC4uQHhJSUMwLklJQzEuSQogICAgQjcyMDogNDkgNDMgMzIgMDggNDkgNDkgNDMgMzMg
MDggNDkgNTUgNDEgMzAgMDggNDkgNTUgIElDMi5JSUMzLklVQTAuSVUKICAgIEI3MzA6IDQxIDMx
IDA4IDQ5IDQ5IDQzIDM0IDA4IDQ5IDQ5IDQzIDM1IDA4IDQ5IDU1IDQxICBBMS5JSUM0LklJQzUu
SVVBCiAgICBCNzQwOiAzMiAwOCA0OSA1NSA0MSAzMyAwOCA1QiA4MiA0RSAwNiA0NyA1MCA0OSA0
RiAwOCAgMi5JVUEzLlsuTi5HUElPLgogICAgQjc1MDogNUYgNDggNDkgNDQgMEQgNDEgNEQgNDQg
NDkgMzAgMzAgMzMgMzAgMDAgMDggNUYgIF9ISUQuQU1ESTAwMzAuLl8KICAgIEI3NjA6IDQzIDQ5
IDQ0IDBEIDQxIDREIDQ0IDQ5IDMwIDMwIDMzIDMwIDAwIDA4IDVGIDU1ICBDSUQuQU1ESTAwMzAu
Ll9VCiAgICBCNzcwOiA0OSA0NCAwMCAxNCAyQiA1RiA0MyA1MiA1MyAwMCAwOCA1MiA0MiA1NSA0
NiAxMSAgSUQuLitfQ1JTLi5SQlVGLgogICAgQjc4MDogMUEgMEEgMTcgODkgMDYgMDAgMEQgMDEg
MDcgMDAgMDAgMDAgODYgMDkgMDAgMDEgIC4uLi4uLi4uLi4uLi4uLi4KICAgIEI3OTA6IDAwIDE1
IEQ4IEZFIDAwIDA0IDAwIDAwIDc5IDAwIEE0IDUyIDQyIDU1IDQ2IDE0ICAuLi4uLi4uLnkuLlJC
VUYuCiAgICBCN0EwOiAxNyA1RiA1MyA1NCA0MSAwMCBBMCAwQyA5MiA5NSA1NCA1MyA0RiA1MyAw
QSA3MCAgLl9TVEEuLi4uLlRTT1MucAogICAgQjdCMDogQTQgMEEgMEYgQTEgMDMgQTQgMDAgNUIg
ODIgMUUgNTAgNTAgNEIgNDcgMDggNUYgIC4uLi4uLi5bLi5QUEtHLl8KICAgIEI3QzA6IDQ4IDQ5
IDQ0IDBEIDQxIDREIDQ0IDQ5IDMwIDMwIDM1IDMyIDAwIDE0IDA5IDVGICBISUQuQU1ESTAwNTIu
Li5fCiAgICBCN0QwOiA1MyA1NCA0MSAwMCBBNCAwQSAwRiA1QiA4MiA0MiAwQSA0NiA1NSA1MiAz
MCAwOCAgU1RBLi4uLlsuQi5GVVIwLgogICAgQjdFMDogNUYgNDggNDkgNDQgMEQgNDEgNEQgNDQg
NDkgMzAgMzAgMzIgMzAgMDAgMDggNUYgIF9ISUQuQU1ESTAwMjAuLl8KICAgIEI3RjA6IDU1IDQ5
IDQ0IDAwIDE0IDRDIDA0IDVGIDQzIDUyIDUzIDA4IDA4IDQyIDU1IDQ2ICBVSUQuLkwuX0NSUy4u
QlVGCiAgICBCODAwOiAzMCAxMSAyNiAwQSAyMyA4OSAwNiAwMCAwMyAwMSAwMyAwMCAwMCAwMCA4
NiAwOSAgMC4mLiMuLi4uLi4uLi4uLgogICAgQjgxMDogMDAgMDEgMDAgOTAgREMgRkUgMDAgMTAg
MDAgMDAgODYgMDkgMDAgMDEgMDAgNzAgIC4uLi4uLi4uLi4uLi4uLnAKICAgIEI4MjA6IERDIEZF
IDAwIDEwIDAwIDAwIDc5IDAwIDhCIDQyIDU1IDQ2IDMwIDBBIDA1IDQ5ICAuLi4uLi55Li5CVUYw
Li5JCiAgICBCODMwOiA1MiA1MSA1NyA3MCA0OSA1NSA0MSAzMCA0OSA1MiA1MSA1NyBBNCA0MiA1
NSA0NiAgUlFXcElVQTBJUlFXLkJVRgogICAgQjg0MDogMzAgMTQgMzkgNUYgNTMgNTQgNDEgMDAg
NzAgMDAgNjAgNzAgNDYgNTUgNDkgNEYgIDAuOV9TVEEucC5gcEZVSU8KICAgIEI4NTA6IDAwIDYx
IEEwIDFCIDkyIDk1IDU0IDUzIDRGIDUzIDBBIDcwIEEwIDExIDkzIDU1ICAuYS4uLi5UU09TLnAu
Li5VCiAgICBCODYwOiA1NCAzMCA0NSAwMSBBMCAwOSA5MyA2MSAwQSAwRiA3MCAwQSAwRiA2MCBB
MCAwQSAgVDBFLi4uLmEuLnAuLmAuLgogICAgQjg3MDogOTMgNTUgNTQgMzAgNDkgMDEgNzAgMDAg
NjAgQTQgNjAgNUIgODIgNDIgMEEgNDYgIC5VVDBJLnAuYC5gWy5CLkYKICAgIEI4ODA6IDU1IDUy
IDMxIDA4IDVGIDQ4IDQ5IDQ0IDBEIDQxIDREIDQ0IDQ5IDMwIDMwIDMyICBVUjEuX0hJRC5BTURJ
MDAyCiAgICBCODkwOiAzMCAwMCAwOCA1RiA1NSA0OSA0NCAwMSAxNCA0QyAwNCA1RiA0MyA1MiA1
MyAwOCAgMC4uX1VJRC4uTC5fQ1JTLgogICAgQjhBMDogMDggNDIgNTUgNDYgMzAgMTEgMjYgMEEg
MjMgODkgMDYgMDAgMDMgMDEgMEUgMDAgIC5CVUYwLiYuIy4uLi4uLi4KICAgIEI4QjA6IDAwIDAw
IDg2IDA5IDAwIDAxIDAwIEEwIERDIEZFIDAwIDEwIDAwIDAwIDg2IDA5ICAuLi4uLi4uLi4uLi4u
Li4uCiAgICBCOEMwOiAwMCAwMSAwMCA4MCBEQyBGRSAwMCAxMCAwMCAwMCA3OSAwMCA4QiA0MiA1
NSA0NiAgLi4uLi4uLi4uLnkuLkJVRgogICAgQjhEMDogMzAgMEEgMDUgNDkgNTIgNTEgNTcgNzAg
NDkgNTUgNDEgMzEgNDkgNTIgNTEgNTcgIDAuLklSUVdwSVVBMUlSUVcKICAgIEI4RTA6IEE0IDQy
IDU1IDQ2IDMwIDE0IDM5IDVGIDUzIDU0IDQxIDAwIDcwIDAwIDYwIDcwICAuQlVGMC45X1NUQS5w
LmBwCiAgICBCOEYwOiA0NiA1NSA0OSA0RiAwMSA2MSBBMCAxQiA5MiA5NSA1NCA1MyA0RiA1MyAw
QSA3MCAgRlVJTy5hLi4uLlRTT1MucAogICAgQjkwMDogQTAgMTEgOTMgNTUgNTQgMzEgNDUgMDEg
QTAgMDkgOTMgNjEgMEEgMEYgNzAgMEEgIC4uLlVUMUUuLi4uYS4ucC4KICAgIEI5MTA6IDBGIDYw
IEEwIDBBIDkzIDU1IDU0IDMxIDQ5IDAxIDcwIDAwIDYwIEE0IDYwIDVCICAuYC4uLlVUMUkucC5g
LmBbCiAgICBCOTIwOiA4MiA0NCAwQSA0NiA1NSA1MiAzMiAwOCA1RiA0OCA0OSA0NCAwRCA0MSA0
RCA0NCAgLkQuRlVSMi5fSElELkFNRAogICAgQjkzMDogNDkgMzAgMzAgMzIgMzAgMDAgMDggNUYg
NTUgNDkgNDQgMEEgMDIgMTQgNEMgMDQgIEkwMDIwLi5fVUlELi4uTC4KICAgIEI5NDA6IDVGIDQz
IDUyIDUzIDA4IDA4IDQyIDU1IDQ2IDMwIDExIDI2IDBBIDIzIDg5IDA2ICBfQ1JTLi5CVUYwLiYu
Iy4uCiAgICBCOTUwOiAwMCAwMyAwMSAwNSAwMCAwMCAwMCA4NiAwOSAwMCAwMSAwMCBFMCBEQyBG
RSAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQjk2MDogMTAgMDAgMDAgODYgMDkgMDAgMDEgMDAg
QzAgREMgRkUgMDAgMTAgMDAgMDAgNzkgIC4uLi4uLi4uLi4uLi4uLnkKICAgIEI5NzA6IDAwIDhC
IDQyIDU1IDQ2IDMwIDBBIDA1IDQ5IDUyIDUxIDU3IDcwIDQ5IDU1IDQxICAuLkJVRjAuLklSUVdw
SVVBCiAgICBCOTgwOiAzMiA0OSA1MiA1MSA1NyBBNCA0MiA1NSA0NiAzMCAxNCAzQSA1RiA1MyA1
NCA0MSAgMklSUVcuQlVGMC46X1NUQQogICAgQjk5MDogMDAgNzAgMDAgNjAgNzAgNDYgNTUgNDkg
NEYgMEEgMDIgNjEgQTAgMUIgOTIgOTUgIC5wLmBwRlVJTy4uYS4uLi4KICAgIEI5QTA6IDU0IDUz
IDRGIDUzIDBBIDcwIEEwIDExIDkzIDU1IDU0IDMyIDQ1IDAxIEEwIDA5ICBUU09TLnAuLi5VVDJF
Li4uCiAgICBCOUIwOiA5MyA2MSAwQSAwRiA3MCAwQSAwRiA2MCBBMCAwQSA5MyA1NSA1NCAzMiA0
OSAwMSAgLmEuLnAuLmAuLi5VVDJJLgogICAgQjlDMDogNzAgMDAgNjAgQTQgNjAgNUIgODIgNDQg
MEEgNDYgNTUgNTIgMzMgMDggNUYgNDggIHAuYC5gWy5ELkZVUjMuX0gKICAgIEI5RDA6IDQ5IDQ0
IDBEIDQxIDREIDQ0IDQ5IDMwIDMwIDMyIDMwIDAwIDA4IDVGIDU1IDQ5ICBJRC5BTURJMDAyMC4u
X1VJCiAgICBCOUUwOiA0NCAwQSAwMyAxNCA0QyAwNCA1RiA0MyA1MiA1MyAwOCAwOCA0MiA1NSA0
NiAzMCAgRC4uLkwuX0NSUy4uQlVGMAogICAgQjlGMDogMTEgMjYgMEEgMjMgODkgMDYgMDAgMDMg
MDEgMEYgMDAgMDAgMDAgODYgMDkgMDAgIC4mLiMuLi4uLi4uLi4uLi4KICAgIEJBMDA6IDAxIDAw
IEYwIERDIEZFIDAwIDEwIDAwIDAwIDg2IDA5IDAwIDAxIDAwIEQwIERDICAuLi4uLi4uLi4uLi4u
Li4uCiAgICBCQTEwOiBGRSAwMCAxMCAwMCAwMCA3OSAwMCA4QiA0MiA1NSA0NiAzMCAwQSAwNSA0
OSA1MiAgLi4uLi55Li5CVUYwLi5JUgogICAgQkEyMDogNTEgNTcgNzAgNDkgNTUgNDEgMzMgNDkg
NTIgNTEgNTcgQTQgNDIgNTUgNDYgMzAgIFFXcElVQTNJUlFXLkJVRjAKICAgIEJBMzA6IDE0IDNB
IDVGIDUzIDU0IDQxIDAwIDcwIDAwIDYwIDcwIDQ2IDU1IDQ5IDRGIDBBICAuOl9TVEEucC5gcEZV
SU8uCiAgICBCQTQwOiAwMyA2MSBBMCAxQiA5MiA5NSA1NCA1MyA0RiA1MyAwQSA3MCBBMCAxMSA5
MyA1NSAgLmEuLi4uVFNPUy5wLi4uVQogICAgQkE1MDogNTQgMzMgNDUgMDEgQTAgMDkgOTMgNjEg
MEEgMEYgNzAgMEEgMEYgNjAgQTAgMEEgIFQzRS4uLi5hLi5wLi5gLi4KICAgIEJBNjA6IDkzIDU1
IDU0IDMzIDQ5IDAxIDcwIDAwIDYwIEE0IDYwIDVCIDgyIDRDIDA4IDQ5ICAuVVQzSS5wLmAuYFsu
TC5JCiAgICBCQTcwOiAzMiA0MyA0MSAwOCA1RiA0OCA0OSA0NCAwRCA0MSA0RCA0NCA0OSAzMCAz
MCAzMSAgMkNBLl9ISUQuQU1ESTAwMQogICAgQkE4MDogMzAgMDAgMDggNUYgNTUgNDkgNDQgMDAg
MTQgM0YgNUYgNDMgNTIgNTMgMDggMDggIDAuLl9VSUQuLj9fQ1JTLi4KICAgIEJBOTA6IDQyIDU1
IDQ2IDMwIDExIDFBIDBBIDE3IDg5IDA2IDAwIDAzIDAxIDBBIDAwIDAwICBCVUYwLi4uLi4uLi4u
Li4uCiAgICBCQUEwOiAwMCA4NiAwOSAwMCAwMSAwMCAyMCBEQyBGRSAwMCAxMCAwMCAwMCA3OSAw
MCA4QiAgLi4uLi4uIC4uLi4uLnkuLgogICAgQkFCMDogNDIgNTUgNDYgMzAgMEEgMDUgNDkgNTIg
NTEgNTcgNzAgNDkgNDkgNDMgMzAgNDkgIEJVRjAuLklSUVdwSUlDMEkKICAgIEJBQzA6IDUyIDUx
IDU3IEE0IDQyIDU1IDQ2IDMwIDE0IDIxIDVGIDUzIDU0IDQxIDAwIEEwICBSUVcuQlVGMC4hX1NU
QS4uCiAgICBCQUQwOiAxNiA5MiA5NSA1NCA1MyA0RiA1MyAwQSA3MCBBMCAwQSA5MyA0OSA0MyAz
MCA0NSAgLi4uVFNPUy5wLi4uSUMwRQogICAgQkFFMDogMDEgQTQgMEEgMEYgQTQgMDAgQTEgMDMg
QTQgMDAgMTQgMEUgNTIgNTMgNDUgNTQgIC4uLi4uLi4uLi4uLlJTRVQKICAgIEJBRjA6IDAwIDUz
IDUyIDQxIDQ0IDBBIDA1IDBBIEM4IDVCIDgyIDRDIDA4IDQ5IDMyIDQzICAuU1JBRC4uLi5bLkwu
STJDCiAgICBCQjAwOiA0MiAwOCA1RiA0OCA0OSA0NCAwRCA0MSA0RCA0NCA0OSAzMCAzMCAzMSAz
MCAwMCAgQi5fSElELkFNREkwMDEwLgogICAgQkIxMDogMDggNUYgNTUgNDkgNDQgMDEgMTQgM0Yg
NUYgNDMgNTIgNTMgMDggMDggNDIgNTUgIC5fVUlELi4/X0NSUy4uQlUKICAgIEJCMjA6IDQ2IDMw
IDExIDFBIDBBIDE3IDg5IDA2IDAwIDAzIDAxIDBCIDAwIDAwIDAwIDg2ICBGMC4uLi4uLi4uLi4u
Li4uCiAgICBCQjMwOiAwOSAwMCAwMSAwMCAzMCBEQyBGRSAwMCAxMCAwMCAwMCA3OSAwMCA4QiA0
MiA1NSAgLi4uLjAuLi4uLi55Li5CVQogICAgQkI0MDogNDYgMzAgMEEgMDUgNDkgNTIgNTEgNTcg
NzAgNDkgNDkgNDMgMzEgNDkgNTIgNTEgIEYwLi5JUlFXcElJQzFJUlEKICAgIEJCNTA6IDU3IEE0
IDQyIDU1IDQ2IDMwIDE0IDIxIDVGIDUzIDU0IDQxIDAwIEEwIDE2IDkyICBXLkJVRjAuIV9TVEEu
Li4uCiAgICBCQjYwOiA5NSA1NCA1MyA0RiA1MyAwQSA3MCBBMCAwQSA5MyA0OSA0MyAzMSA0NSAw
MSBBNCAgLlRTT1MucC4uLklDMUUuLgogICAgQkI3MDogMEEgMEYgQTQgMDAgQTEgMDMgQTQgMDAg
MTQgMEUgNTIgNTMgNDUgNTQgMDAgNTMgIC4uLi4uLi4uLi5SU0VULlMKICAgIEJCODA6IDUyIDQx
IDQ0IDBBIDA2IDBBIEM4IDVCIDgyIDREIDA4IDQ5IDMyIDQzIDQzIDA4ICBSQUQuLi4uWy5NLkky
Q0MuCiAgICBCQjkwOiA1RiA0OCA0OSA0NCAwRCA0MSA0RCA0NCA0OSAzMCAzMCAzMSAzMCAwMCAw
OCA1RiAgX0hJRC5BTURJMDAxMC4uXwogICAgQkJBMDogNTUgNDkgNDQgMEEgMDIgMTQgM0YgNUYg
NDMgNTIgNTMgMDggMDggNDIgNTUgNDYgIFVJRC4uLj9fQ1JTLi5CVUYKICAgIEJCQjA6IDMwIDEx
IDFBIDBBIDE3IDg5IDA2IDAwIDAzIDAxIDA0IDAwIDAwIDAwIDg2IDA5ICAwLi4uLi4uLi4uLi4u
Li4uCiAgICBCQkMwOiAwMCAwMSAwMCA0MCBEQyBGRSAwMCAxMCAwMCAwMCA3OSAwMCA4QiA0MiA1
NSA0NiAgLi4uQC4uLi4uLnkuLkJVRgogICAgQkJEMDogMzAgMEEgMDUgNDkgNTIgNTEgNTcgNzAg
NDkgNDkgNDMgMzIgNDkgNTIgNTEgNTcgIDAuLklSUVdwSUlDMklSUVcKICAgIEJCRTA6IEE0IDQy
IDU1IDQ2IDMwIDE0IDIxIDVGIDUzIDU0IDQxIDAwIEEwIDE2IDkyIDk1ICAuQlVGMC4hX1NUQS4u
Li4uCiAgICBCQkYwOiA1NCA1MyA0RiA1MyAwQSA3MCBBMCAwQSA5MyA0OSA0MyAzMiA0NSAwMSBB
NCAwQSAgVFNPUy5wLi4uSUMyRS4uLgogICAgQkMwMDogMEYgQTQgMDAgQTEgMDMgQTQgMDAgMTQg
MEUgNTIgNTMgNDUgNTQgMDAgNTMgNTIgIC4uLi4uLi4uLlJTRVQuU1IKICAgIEJDMTA6IDQxIDQ0
IDBBIDA3IDBBIEM4IDVCIDgyIDREIDA4IDQ5IDMyIDQzIDQ0IDA4IDVGICBBRC4uLi5bLk0uSTJD
RC5fCiAgICBCQzIwOiA0OCA0OSA0NCAwRCA0MSA0RCA0NCA0OSAzMCAzMCAzMSAzMCAwMCAwOCA1
RiA1NSAgSElELkFNREkwMDEwLi5fVQogICAgQkMzMDogNDkgNDQgMEEgMDMgMTQgM0YgNUYgNDMg
NTIgNTMgMDggMDggNDIgNTUgNDYgMzAgIElELi4uP19DUlMuLkJVRjAKICAgIEJDNDA6IDExIDFB
IDBBIDE3IDg5IDA2IDAwIDAzIDAxIDA2IDAwIDAwIDAwIDg2IDA5IDAwICAuLi4uLi4uLi4uLi4u
Li4uCiAgICBCQzUwOiAwMSAwMCA1MCBEQyBGRSAwMCAxMCAwMCAwMCA3OSAwMCA4QiA0MiA1NSA0
NiAzMCAgLi5QLi4uLi4ueS4uQlVGMAogICAgQkM2MDogMEEgMDUgNDkgNTIgNTEgNTcgNzAgNDkg
NDkgNDMgMzMgNDkgNTIgNTEgNTcgQTQgIC4uSVJRV3BJSUMzSVJRVy4KICAgIEJDNzA6IDQyIDU1
IDQ2IDMwIDE0IDIxIDVGIDUzIDU0IDQxIDAwIEEwIDE2IDkyIDk1IDU0ICBCVUYwLiFfU1RBLi4u
Li5UCiAgICBCQzgwOiA1MyA0RiA1MyAwQSA3MCBBMCAwQSA5MyA0OSA0MyAzMyA0NSAwMSBBNCAw
QSAwRiAgU09TLnAuLi5JQzNFLi4uLgogICAgQkM5MDogQTQgMDAgQTEgMDMgQTQgMDAgMTQgMEUg
NTIgNTMgNDUgNTQgMDAgNTMgNTIgNDEgIC4uLi4uLi4uUlNFVC5TUkEKICAgIEJDQTA6IDQ0IDBB
IDA4IDBBIEM4IDVCIDgyIDREIDA4IDQ5IDMyIDQzIDQ1IDA4IDVGIDQ4ICBELi4uLlsuTS5JMkNF
Ll9ICiAgICBCQ0IwOiA0OSA0NCAwRCA0MSA0RCA0NCA0OSAzMCAzMCAzMSAzMCAwMCAwOCA1RiA1
NSA0OSAgSUQuQU1ESTAwMTAuLl9VSQogICAgQkNDMDogNDQgMEEgMDQgMTQgM0YgNUYgNDMgNTIg
NTMgMDggMDggNDIgNTUgNDYgMzAgMTEgIEQuLi4/X0NSUy4uQlVGMC4KICAgIEJDRDA6IDFBIDBB
IDE3IDg5IDA2IDAwIDAzIDAxIDE2IDAwIDAwIDAwIDg2IDA5IDAwIDAxICAuLi4uLi4uLi4uLi4u
Li4uCiAgICBCQ0UwOiAwMCA2MCBEQyBGRSAwMCAxMCAwMCAwMCA3OSAwMCA4QiA0MiA1NSA0NiAz
MCAwQSAgLmAuLi4uLi55Li5CVUYwLgogICAgQkNGMDogMDUgNDkgNTIgNTEgNTcgNzAgNDkgNDkg
NDMgMzQgNDkgNTIgNTEgNTcgQTQgNDIgIC5JUlFXcElJQzRJUlFXLkIKICAgIEJEMDA6IDU1IDQ2
IDMwIDE0IDIxIDVGIDUzIDU0IDQxIDAwIEEwIDE2IDkyIDk1IDU0IDUzICBVRjAuIV9TVEEuLi4u
LlRTCiAgICBCRDEwOiA0RiA1MyAwQSA3MCBBMCAwQSA5MyA0OSA0MyAzNCA0NSAwMSBBNCAwQSAw
RiBBNCAgT1MucC4uLklDNEUuLi4uLgogICAgQkQyMDogMDAgQTEgMDMgQTQgMDAgMTQgMEUgNTIg
NTMgNDUgNTQgMDAgNTMgNTIgNDEgNDQgIC4uLi4uLi5SU0VULlNSQUQKICAgIEJEMzA6IDBBIDA5
IDBBIEM4IDVCIDgyIDREIDA4IDQ5IDMyIDQzIDQ2IDA4IDVGIDQ4IDQ5ICAuLi4uWy5NLkkyQ0Yu
X0hJCiAgICBCRDQwOiA0NCAwRCA0MSA0RCA0NCA0OSAzMCAzMCAzMSAzMCAwMCAwOCA1RiA1NSA0
OSA0NCAgRC5BTURJMDAxMC4uX1VJRAogICAgQkQ1MDogMEEgMDUgMTQgM0YgNUYgNDMgNTIgNTMg
MDggMDggNDIgNTUgNDYgMzAgMTEgMUEgIC4uLj9fQ1JTLi5CVUYwLi4KICAgIEJENjA6IDBBIDE3
IDg5IDA2IDAwIDAzIDAxIDE3IDAwIDAwIDAwIDg2IDA5IDAwIDAxIDAwICAuLi4uLi4uLi4uLi4u
Li4uCiAgICBCRDcwOiBCMCBEQyBGRSAwMCAxMCAwMCAwMCA3OSAwMCA4QiA0MiA1NSA0NiAzMCAw
QSAwNSAgLi4uLi4uLnkuLkJVRjAuLgogICAgQkQ4MDogNDkgNTIgNTEgNTcgNzAgNDkgNDkgNDMg
MzUgNDkgNTIgNTEgNTcgQTQgNDIgNTUgIElSUVdwSUlDNUlSUVcuQlUKICAgIEJEOTA6IDQ2IDMw
IDE0IDIxIDVGIDUzIDU0IDQxIDAwIEEwIDE2IDkyIDk1IDU0IDUzIDRGICBGMC4hX1NUQS4uLi4u
VFNPCiAgICBCREEwOiA1MyAwQSA3MCBBMCAwQSA5MyA0OSA0MyAzNSA0NSAwMSBBNCAwQSAwRiBB
NCAwMCAgUy5wLi4uSUM1RS4uLi4uLgogICAgQkRCMDogQTEgMDMgQTQgMDAgMTQgMEUgNTIgNTMg
NDUgNTQgMDAgNTMgNTIgNDEgNDQgMEEgIC4uLi4uLlJTRVQuU1JBRC4KICAgIEJEQzA6IDBBIDBB
IEM4IDE0IDRBIDA3IDQ1IDUwIDQ5IDRFIDAwIDcwIDAwIDQ5IDUwIDQ0ICAuLi4uSi5FUElOLnAu
SVBECiAgICBCREQwOiA0NSA3MCAwMCA0OSA0RCA1MCA0NSA3MCAwMSA0OSA0RCAzMSAzNSA3MCAw
MSA0OSAgRXAuSU1QRXAuSU0xNXAuSQogICAgQkRFMDogNEQgMzEgMzYgNzAgMDEgNDkgNEQgMzIg
MzAgNzAgMDEgNDkgNEQgMzQgMzQgNzAgIE0xNnAuSU0yMHAuSU00NHAKICAgIEJERjA6IDAxIDQ5
IDREIDM0IDM2IDcwIDAxIDQ5IDREIDM2IDM4IDcwIDAxIDQ5IDREIDM2ICAuSU00NnAuSU02OHAu
SU02CiAgICBCRTAwOiAzOSA3MCAwMSA0OSA0RCAzNiA0MSA3MCAwMSA0OSA0RCAzNiA0MiA3MCAw
MSA0OSAgOXAuSU02QXAuSU02QnAuSQogICAgQkUxMDogNEQgMzEgNDYgQTAgMjYgOTIgOTMgNDUg
NEQgNEQgNDQgMDEgNzAgMDEgNDkgNEQgIE0xRi4mLi5FTU1ELnAuSU0KICAgIEJFMjA6IDM0IDQx
IDcwIDAxIDQ5IDREIDM1IDM4IDcwIDAxIDQ5IDREIDM0IDQyIDcwIDAxICA0QXAuSU01OHAuSU00
QnAuCiAgICBCRTMwOiA0OSA0RCAzNSAzNyA3MCAwMSA0OSA0RCAzNiA0NCA1MyA0NSA0MyA1MiAw
OCA0RSAgSU01N3AuSU02RFNFQ1IuTgogICAgQkU0MDogNDMgNTIgNTMgMTEgMUEgMEEgMTcgODkg
MDYgMDAgMEQgMDEgMDUgMDAgMDAgMDAgIENSUy4uLi4uLi4uLi4uLi4KICAgIEJFNTA6IDg2IDA5
IDAwIDAxIDAwIDUwIEREIEZFIDAwIDEwIDAwIDAwIDc5IDAwIDA4IDQ0ICAuLi4uLlAuLi4uLi55
Li5ECiAgICBCRTYwOiA0MyA1MiA1MyAxMSA0MSAwNiAwQSA1RCA4OSAwNiAwMCAwRCAwMSAwNSAw
MCAwMCAgQ1JTLkEuLl0uLi4uLi4uLgogICAgQkU3MDogMDAgODYgMDkgMDAgMDEgMDAgNTAgREQg
RkUgMDAgMTAgMDAgMDAgOEMgMjAgMDAgIC4uLi4uLlAuLi4uLi4uIC4KICAgIEJFODA6IDAxIDAw
IDAxIDAwIDFEIDAwIDAxIDAwIDAwIEI4IDBCIDE3IDAwIDAwIDE5IDAwICAuLi4uLi4uLi4uLi4u
Li4uCiAgICBCRTkwOiAyMyAwMCAwMCAwMCA0NCAwMCA1QyA1RiA1MyA0MiAyRSA0NyA1MCA0OSA0
RiAwMCAgIy4uLkQuXF9TQi5HUElPLgogICAgQkVBMDogOEMgMjAgMDAgMDEgMDEgMDEgMDAgMDgg
MDAgMDEgMDAgMDAgMDAgMDAgMTcgMDAgIC4gLi4uLi4uLi4uLi4uLi4KICAgIEJFQjA6IDAwIDE5
IDAwIDIzIDAwIDAwIDAwIDQ0IDAwIDVDIDVGIDUzIDQyIDJFIDQ3IDUwICAuLi4jLi4uRC5cX1NC
LkdQCiAgICBCRUMwOiA0OSA0RiAwMCA3OSAwMCAwOCA0MSA0OCA0OSA0NCAwRCA0MSA0RCA0NCA0
OSAzMCAgSU8ueS4uQUhJRC5BTURJMAogICAgQkVEMDogMzAgMzQgMzAgMDAgMDggNDEgNDMgNDkg
NDQgMEQgNDEgNEQgNDQgNDkgMzAgMzAgIDA0MC4uQUNJRC5BTURJMDAKICAgIEJFRTA6IDM0IDMw
IDAwIDA4IDUzIDQ4IDQ5IDQ0IDBDIDQxIEQwIDBEIDQwIDA4IDUzIDQzICA0MC4uU0hJRC5BLi5A
LlNDCiAgICBCRUYwOiA0OSA0NCAwRCA1MCA0MyA0OSA1QyA0MyA0MyA1RiAzMCAzOCAzMCAzNSAz
MCAzMSAgSUQuUENJXENDXzA4MDUwMQogICAgQkYwMDogMDAgNUIgODIgNDggMEQgNDUgNEQgNEQg
MzAgMTQgMTggNUYgNDggNDkgNDQgMDggIC5bLkguRU1NMC4uX0hJRC4KICAgIEJGMTA6IEEwIDBB
IDQ1IDREIDREIDQ0IEE0IDUzIDQ4IDQ5IDQ0IEExIDA2IEE0IDQxIDQ4ICAuLkVNTUQuU0hJRC4u
LkFICiAgICBCRjIwOiA0OSA0NCAxNCAxOCA1RiA0MyA0OSA0NCAwOCBBMCAwQSA0NSA0RCA0RCA0
NCBBNCAgSUQuLl9DSUQuLi5FTU1ELgogICAgQkYzMDogNTMgNDMgNDkgNDQgQTEgMDYgQTQgNDEg
NDMgNDkgNDQgMDggNUYgNTUgNDkgNDQgIFNDSUQuLi5BQ0lELl9VSUQKICAgIEJGNDA6IDAwIDE0
IDE4IDVGIDQzIDUyIDUzIDA4IEEwIDBBIDQ1IDREIDQ0IDMzIEE0IDQ0ICAuLi5fQ1JTLi4uRU1E
My5ECiAgICBCRjUwOiA0MyA1MiA1MyBBMSAwNiBBNCA0RSA0MyA1MiA1MyAxNCAxRiA1RiA1MyA1
NCA0MSAgQ1JTLi4uTkNSUy4uX1NUQQogICAgQkY2MDogMDAgQTAgMTQgOTIgOTUgNTQgNTMgNEYg
NTMgMEEgNzAgQTAgMDggNDUgNEQgNEQgIC4uLi4uVFNPUy5wLi5FTU0KICAgIEJGNzA6IDQ1IEE0
IDBBIDBGIEE0IDAwIEExIDAzIEE0IDAwIDE0IDEwIDVGIDQ5IDRFIDQ5ICBFLi4uLi4uLi4uLi5f
SU5JCiAgICBCRjgwOiAwMCBBMCAwOSA0NSA0RCA0RCA0NSA0NSA1MCA0OSA0RSAxNCAxOCA1RiA1
MyAzMCAgLi4uRU1NRUVQSU4uLl9TMAogICAgQkY5MDogNTcgMDAgQTAgMEQgOTAgNDUgNEQgNDQg
MzMgNDUgNEQgNEQgNDUgQTQgMEEgMDQgIFcuLi4uRU1EM0VNTUUuLi4KICAgIEJGQTA6IEExIDAz
IEE0IDAwIDE0IDFDIDVGIDUwIDUzIDMwIDAwIEEwIDE1IDkwIDQ1IDREICAuLi4uLi5fUFMwLi4u
LkVNCiAgICBCRkIwOiA0NCAzMyA0NSA0RCA0RCA0NSA0OCA1MyA0MSA0NCAwQSAxQyAwMCA1MiA0
NSA0MyAgRDNFTU1FSFNBRC4uLlJFQwogICAgQkZDMDogNTIgMTQgMTkgNUYgNTAgNTMgMzMgMDAg
QTAgMTIgOTAgNDUgNEQgNDQgMzMgNDUgIFIuLl9QUzMuLi4uRU1EM0UKICAgIEJGRDA6IDREIDRE
IDQ1IDQ4IDUzIDQxIDQ0IDBBIDFDIDBBIDAzIDEwIDQ4IDVCIDJFIDVGICBNTUVIU0FELi4uLi5I
Wy5fCiAgICBCRkUwOiA1MyA0MiA1RiA1MCA0MyA0OSAzMCA1QiA4MiA0NyAxNiA1NSA0MSA1MiAz
MSAwOCAgU0JfUENJMFsuRy5VQVIxLgogICAgQkZGMDogNUYgNDggNDkgNDQgMEMgNDEgRDAgMDUg
MDAgMDggNUYgNTUgNDkgNDQgMDEgMDggIF9ISUQuQS4uLi5fVUlELi4KICAgIEMwMDA6IDVGIDQ0
IDQ0IDRFIDBEIDQzIDRGIDREIDMxIDAwIDE0IDI4IDVGIDUzIDU0IDQxICBfREROLkNPTTEuLihf
U1RBCiAgICBDMDEwOiAwMCA3MCAwMCA2MCA3MCA0NiA1NSA0OSA0RiAwMCA2MSBBMCAwQSA5MiA5
MyA2MSAgLnAuYHBGVUlPLmEuLi4uYQogICAgQzAyMDogMEEgMEYgNzAgMEEgMEYgNjAgQTAgMEEg
OTMgNTUgNEMgMzAgNDkgMDEgNzAgMDAgIC4ucC4uYC4uLlVMMEkucC4KICAgIEMwMzA6IDYwIEE0
IDYwIDE0IDRDIDExIDVGIDQzIDUyIDUzIDA4IDA4IDVGIDU0IDVGIDMwICBgLmAuTC5fQ1JTLi5f
VF8wCiAgICBDMDQwOiAwMCAwOCA0MiA1NSA0NiAzMCAxMSAxMCAwQSAwRCA0NyAwMSBFOCAwMiBF
OCAwMiAgLi5CVUYwLi4uLkcuLi4uLgogICAgQzA1MDogMDEgMDggMjIgMDggMDAgNzkgMDAgOEMg
NDIgNTUgNDYgMzAgMEEgMDIgNDkgNEYgIC4uIi4ueS4uQlVGMC4uSU8KICAgIEMwNjA6IDRDIDRG
IDhDIDQyIDU1IDQ2IDMwIDBBIDAzIDQ5IDRGIDQ4IDQ5IDhDIDQyIDU1ICBMTy5CVUYwLi5JT0hJ
LkJVCiAgICBDMDcwOiA0NiAzMCAwQSAwNCA0OSA0RiA1MiA0QyA4QyA0MiA1NSA0NiAzMCAwQSAw
NSA0OSAgRjAuLklPUkwuQlVGMC4uSQogICAgQzA4MDogNEYgNTIgNDggOEIgNDIgNTUgNDYgMzAg
MEEgMDkgNDkgNTIgNTEgNEMgNzAgNDYgIE9SSC5CVUYwLi5JUlFMcEYKICAgIEMwOTA6IDU1IDQ5
IDRGIDAwIDYwIEEyIDQ2IDBBIDAxIDcwIDk5IDYwIDAwIDVGIDU0IDVGICBVSU8uYC5GLi5wLmAu
X1RfCiAgICBDMEEwOiAzMCBBMCAyMyA5MyA1RiA1NCA1RiAzMCAwMCA3MCAwQSBFOCA0OSA0RiA0
QyA0RiAgMC4jLl9UXzAucC4uSU9MTwogICAgQzBCMDogNzAgMEEgMDIgNDkgNEYgNDggNDkgNzAg
MEEgRTggNDkgNEYgNTIgNEMgNzAgMEEgIHAuLklPSElwLi5JT1JMcC4KICAgIEMwQzA6IDAyIDQ5
IDRGIDUyIDQ4IEExIDQ1IDA3IEEwIDIzIDkzIDVGIDU0IDVGIDMwIDAxICAuSU9SSC5FLi4jLl9U
XzAuCiAgICBDMEQwOiA3MCAwQSBGOCA0OSA0RiA0QyA0RiA3MCAwQSAwMiA0OSA0RiA0OCA0OSA3
MCAwQSAgcC4uSU9MT3AuLklPSElwLgogICAgQzBFMDogRjggNDkgNEYgNTIgNEMgNzAgMEEgMDIg
NDkgNEYgNTIgNDggQTEgNEUgMDQgQTAgIC5JT1JMcC4uSU9SSC5OLi4KICAgIEMwRjA6IDI0IDkz
IDVGIDU0IDVGIDMwIDBBIDAyIDcwIDBBIEU4IDQ5IDRGIDRDIDRGIDcwICAkLl9UXzAuLnAuLklP
TE9wCiAgICBDMTAwOiAwQSAwMyA0OSA0RiA0OCA0OSA3MCAwQSBFOCA0OSA0RiA1MiA0QyA3MCAw
QSAwMyAgLi5JT0hJcC4uSU9STHAuLgogICAgQzExMDogNDkgNEYgNTIgNDggQTEgMjYgQTAgMjQg
OTMgNUYgNTQgNUYgMzAgMEEgMDMgNzAgIElPUkguJi4kLl9UXzAuLnAKICAgIEMxMjA6IDBBIEY4
IDQ5IDRGIDRDIDRGIDcwIDBBIDAzIDQ5IDRGIDQ4IDQ5IDcwIDBBIEY4ICAuLklPTE9wLi5JT0hJ
cC4uCiAgICBDMTMwOiA0OSA0RiA1MiA0QyA3MCAwQSAwMyA0OSA0RiA1MiA0OCBBNSA3OSAwMSA3
QiA0NiAgSU9STHAuLklPUkgueS57RgogICAgQzE0MDogNTIgNTUgNDkgMDAgMEEgMEYgMDAgNDkg
NTIgNTEgNEMgQTQgNDIgNTUgNDYgMzAgIFJVSS4uLi5JUlFMLkJVRjAKICAgIEMxNTA6IDVCIDgy
IDQ4IDE2IDU1IDQxIDUyIDMyIDA4IDVGIDQ4IDQ5IDQ0IDBDIDQxIEQwICBbLkguVUFSMi5fSElE
LkEuCiAgICBDMTYwOiAwNSAwMCAwOCA1RiA1NSA0OSA0NCAwQSAwMiAwOCA1RiA0NCA0NCA0RSAw
RCA0MyAgLi4uX1VJRC4uLl9ERE4uQwogICAgQzE3MDogNEYgNEQgMzIgMDAgMTQgMjggNUYgNTMg
NTQgNDEgMDAgNzAgMDAgNjAgNzAgNDYgIE9NMi4uKF9TVEEucC5gcEYKICAgIEMxODA6IDU1IDQ5
IDRGIDAxIDYxIEEwIDBBIDkyIDkzIDYxIDBBIDBGIDcwIDBBIDBGIDYwICBVSU8uYS4uLi5hLi5w
Li5gCiAgICBDMTkwOiBBMCAwQSA5MyA1NSA0QyAzMSA0OSAwMSA3MCAwMCA2MCBBNCA2MCAxNCA0
QyAxMSAgLi4uVUwxSS5wLmAuYC5MLgogICAgQzFBMDogNUYgNDMgNTIgNTMgMDggMDggNUYgNTQg
NUYgMzAgMDAgMDggNDIgNTUgNDYgMzAgIF9DUlMuLl9UXzAuLkJVRjAKICAgIEMxQjA6IDExIDEw
IDBBIDBEIDQ3IDAxIEY4IDAyIEY4IDAyIDAxIDA4IDIyIDEwIDAwIDc5ICAuLi4uRy4uLi4uLi4i
Li55CiAgICBDMUMwOiAwMCA4QyA0MiA1NSA0NiAzMCAwQSAwMiA0OSA0RiA0QyA0RiA4QyA0MiA1
NSA0NiAgLi5CVUYwLi5JT0xPLkJVRgogICAgQzFEMDogMzAgMEEgMDMgNDkgNEYgNDggNDkgOEMg
NDIgNTUgNDYgMzAgMEEgMDQgNDkgNEYgIDAuLklPSEkuQlVGMC4uSU8KICAgIEMxRTA6IDUyIDRD
IDhDIDQyIDU1IDQ2IDMwIDBBIDA1IDQ5IDRGIDUyIDQ4IDhCIDQyIDU1ICBSTC5CVUYwLi5JT1JI
LkJVCiAgICBDMUYwOiA0NiAzMCAwQSAwOSA0OSA1MiA1MSA0QyA3MCA0NiA1NSA0OSA0RiAwMSA2
MCBBMiAgRjAuLklSUUxwRlVJTy5gLgogICAgQzIwMDogNDYgMEEgMDEgNzAgOTkgNjAgMDAgNUYg
NTQgNUYgMzAgQTAgMjMgOTMgNUYgNTQgIEYuLnAuYC5fVF8wLiMuX1QKICAgIEMyMTA6IDVGIDMw
IDAwIDcwIDBBIEU4IDQ5IDRGIDRDIDRGIDcwIDBBIDAyIDQ5IDRGIDQ4ICBfMC5wLi5JT0xPcC4u
SU9ICiAgICBDMjIwOiA0OSA3MCAwQSBFOCA0OSA0RiA1MiA0QyA3MCAwQSAwMiA0OSA0RiA1MiA0
OCBBMSAgSXAuLklPUkxwLi5JT1JILgogICAgQzIzMDogNDUgMDcgQTAgMjMgOTMgNUYgNTQgNUYg
MzAgMDEgNzAgMEEgRjggNDkgNEYgNEMgIEUuLiMuX1RfMC5wLi5JT0wKICAgIEMyNDA6IDRGIDcw
IDBBIDAyIDQ5IDRGIDQ4IDQ5IDcwIDBBIEY4IDQ5IDRGIDUyIDRDIDcwICBPcC4uSU9ISXAuLklP
UkxwCiAgICBDMjUwOiAwQSAwMiA0OSA0RiA1MiA0OCBBMSA0RSAwNCBBMCAyNCA5MyA1RiA1NCA1
RiAzMCAgLi5JT1JILk4uLiQuX1RfMAogICAgQzI2MDogMEEgMDIgNzAgMEEgRTggNDkgNEYgNEMg
NEYgNzAgMEEgMDMgNDkgNEYgNDggNDkgIC4ucC4uSU9MT3AuLklPSEkKICAgIEMyNzA6IDcwIDBB
IEU4IDQ5IDRGIDUyIDRDIDcwIDBBIDAzIDQ5IDRGIDUyIDQ4IEExIDI2ICBwLi5JT1JMcC4uSU9S
SC4mCiAgICBDMjgwOiBBMCAyNCA5MyA1RiA1NCA1RiAzMCAwQSAwMyA3MCAwQSBGOCA0OSA0RiA0
QyA0RiAgLiQuX1RfMC4ucC4uSU9MTwogICAgQzI5MDogNzAgMEEgMDMgNDkgNEYgNDggNDkgNzAg
MEEgRjggNDkgNEYgNTIgNEMgNzAgMEEgIHAuLklPSElwLi5JT1JMcC4KICAgIEMyQTA6IDAzIDQ5
IDRGIDUyIDQ4IEE1IDc5IDAxIDdCIDQ2IDUyIDU1IDQ5IDAxIDBBIDBGICAuSU9SSC55LntGUlVJ
Li4uCiAgICBDMkIwOiAwMCA0OSA1MiA1MSA0QyBBNCA0MiA1NSA0NiAzMCA1QiA4MiA0QiAxNiA1
NSA0MSAgLklSUUwuQlVGMFsuSy5VQQogICAgQzJDMDogNTIgMzMgMDggNUYgNDggNDkgNDQgMEMg
NDEgRDAgMDUgMDAgMDggNUYgNTUgNDkgIFIzLl9ISUQuQS4uLi5fVUkKICAgIEMyRDA6IDQ0IDBB
IDAzIDA4IDVGIDQ0IDQ0IDRFIDBEIDQzIDRGIDREIDMzIDAwIDE0IDI5ICBELi4uX0RETi5DT00z
Li4pCiAgICBDMkUwOiA1RiA1MyA1NCA0MSAwMCA3MCAwMCA2MCA3MCA0NiA1NSA0OSA0RiAwQSAw
MiA2MSAgX1NUQS5wLmBwRlVJTy4uYQogICAgQzJGMDogQTAgMEEgOTIgOTMgNjEgMEEgMEYgNzAg
MEEgMEYgNjAgQTAgMEEgOTMgNTUgNEMgIC4uLi5hLi5wLi5gLi4uVUwKICAgIEMzMDA6IDMyIDQ5
IDAxIDcwIDAwIDYwIEE0IDYwIDE0IDRFIDExIDVGIDQzIDUyIDUzIDA4ICAySS5wLmAuYC5OLl9D
UlMuCiAgICBDMzEwOiAwOCA1RiA1NCA1RiAzMCAwMCAwOCA0MiA1NSA0NiAzMCAxMSAxMCAwQSAw
RCA0NyAgLl9UXzAuLkJVRjAuLi4uRwogICAgQzMyMDogMDEgRTggMDMgRTggMDMgMDEgMDggMjIg
MDggMDAgNzkgMDAgOEMgNDIgNTUgNDYgIC4uLi4uLi4iLi55Li5CVUYKICAgIEMzMzA6IDMwIDBB
IDAyIDQ5IDRGIDRDIDRGIDhDIDQyIDU1IDQ2IDMwIDBBIDAzIDQ5IDRGICAwLi5JT0xPLkJVRjAu
LklPCiAgICBDMzQwOiA0OCA0OSA4QyA0MiA1NSA0NiAzMCAwQSAwNCA0OSA0RiA1MiA0QyA4QyA0
MiA1NSAgSEkuQlVGMC4uSU9STC5CVQogICAgQzM1MDogNDYgMzAgMEEgMDUgNDkgNEYgNTIgNDgg
OEIgNDIgNTUgNDYgMzAgMEEgMDkgNDkgIEYwLi5JT1JILkJVRjAuLkkKICAgIEMzNjA6IDUyIDUx
IDRDIDcwIDQ2IDU1IDQ5IDRGIDBBIDAyIDYwIEEyIDQ2IDBBIDAxIDcwICBSUUxwRlVJTy4uYC5G
Li5wCiAgICBDMzcwOiA5OSA2MCAwMCA1RiA1NCA1RiAzMCBBMCAyMyA5MyA1RiA1NCA1RiAzMCAw
MCA3MCAgLmAuX1RfMC4jLl9UXzAucAogICAgQzM4MDogMEEgRTggNDkgNEYgNEMgNEYgNzAgMEEg
MDIgNDkgNEYgNDggNDkgNzAgMEEgRTggIC4uSU9MT3AuLklPSElwLi4KICAgIEMzOTA6IDQ5IDRG
IDUyIDRDIDcwIDBBIDAyIDQ5IDRGIDUyIDQ4IEExIDQ1IDA3IEEwIDIzICBJT1JMcC4uSU9SSC5F
Li4jCiAgICBDM0EwOiA5MyA1RiA1NCA1RiAzMCAwMSA3MCAwQSBGOCA0OSA0RiA0QyA0RiA3MCAw
QSAwMiAgLl9UXzAucC4uSU9MT3AuLgogICAgQzNCMDogNDkgNEYgNDggNDkgNzAgMEEgRjggNDkg
NEYgNTIgNEMgNzAgMEEgMDIgNDkgNEYgIElPSElwLi5JT1JMcC4uSU8KICAgIEMzQzA6IDUyIDQ4
IEExIDRFIDA0IEEwIDI0IDkzIDVGIDU0IDVGIDMwIDBBIDAyIDcwIDBBICBSSC5OLi4kLl9UXzAu
LnAuCiAgICBDM0QwOiBFOCA0OSA0RiA0QyA0RiA3MCAwQSAwMyA0OSA0RiA0OCA0OSA3MCAwQSBF
OCA0OSAgLklPTE9wLi5JT0hJcC4uSQogICAgQzNFMDogNEYgNTIgNEMgNzAgMEEgMDMgNDkgNEYg
NTIgNDggQTEgMjYgQTAgMjQgOTMgNUYgIE9STHAuLklPUkguJi4kLl8KICAgIEMzRjA6IDU0IDVG
IDMwIDBBIDAzIDcwIDBBIEY4IDQ5IDRGIDRDIDRGIDcwIDBBIDAzIDQ5ICBUXzAuLnAuLklPTE9w
Li5JCiAgICBDNDAwOiA0RiA0OCA0OSA3MCAwQSBGOCA0OSA0RiA1MiA0QyA3MCAwQSAwMyA0OSA0
RiA1MiAgT0hJcC4uSU9STHAuLklPUgogICAgQzQxMDogNDggQTUgNzkgMDEgN0IgNDYgNTIgNTUg
NDkgMEEgMDIgMEEgMEYgMDAgNDkgNTIgIEgueS57RlJVSS4uLi4uSVIKICAgIEM0MjA6IDUxIDRD
IEE0IDQyIDU1IDQ2IDMwIDVCIDgyIDRCIDE2IDU1IDQxIDUyIDM0IDA4ICBRTC5CVUYwWy5LLlVB
UjQuCiAgICBDNDMwOiA1RiA0OCA0OSA0NCAwQyA0MSBEMCAwNSAwMCAwOCA1RiA1NSA0OSA0NCAw
QSAwNCAgX0hJRC5BLi4uLl9VSUQuLgogICAgQzQ0MDogMDggNUYgNDQgNDQgNEUgMEQgNDMgNEYg
NEQgMzQgMDAgMTQgMjkgNUYgNTMgNTQgIC5fREROLkNPTTQuLilfU1QKICAgIEM0NTA6IDQxIDAw
IDcwIDAwIDYwIDcwIDQ2IDU1IDQ5IDRGIDBBIDAzIDYxIEEwIDBBIDkyICBBLnAuYHBGVUlPLi5h
Li4uCiAgICBDNDYwOiA5MyA2MSAwQSAwRiA3MCAwQSAwRiA2MCBBMCAwQSA5MyA1NSA0QyAzMyA0
OSAwMSAgLmEuLnAuLmAuLi5VTDNJLgogICAgQzQ3MDogNzAgMDAgNjAgQTQgNjAgMTQgNEUgMTEg
NUYgNDMgNTIgNTMgMDggMDggNUYgNTQgIHAuYC5gLk4uX0NSUy4uX1QKICAgIEM0ODA6IDVGIDMw
IDAwIDA4IDQyIDU1IDQ2IDMwIDExIDEwIDBBIDBEIDQ3IDAxIEY4IDAzICBfMC4uQlVGMC4uLi5H
Li4uCiAgICBDNDkwOiBGOCAwMyAwMSAwOCAyMiAxMCAwMCA3OSAwMCA4QyA0MiA1NSA0NiAzMCAw
QSAwMiAgLi4uLiIuLnkuLkJVRjAuLgogICAgQzRBMDogNDkgNEYgNEMgNEYgOEMgNDIgNTUgNDYg
MzAgMEEgMDMgNDkgNEYgNDggNDkgOEMgIElPTE8uQlVGMC4uSU9ISS4KICAgIEM0QjA6IDQyIDU1
IDQ2IDMwIDBBIDA0IDQ5IDRGIDUyIDRDIDhDIDQyIDU1IDQ2IDMwIDBBICBCVUYwLi5JT1JMLkJV
RjAuCiAgICBDNEMwOiAwNSA0OSA0RiA1MiA0OCA4QiA0MiA1NSA0NiAzMCAwQSAwOSA0OSA1MiA1
MSA0QyAgLklPUkguQlVGMC4uSVJRTAogICAgQzREMDogNzAgNDYgNTUgNDkgNEYgMEEgMDMgNjAg
QTIgNDYgMEEgMDEgNzAgOTkgNjAgMDAgIHBGVUlPLi5gLkYuLnAuYC4KICAgIEM0RTA6IDVGIDU0
IDVGIDMwIEEwIDIzIDkzIDVGIDU0IDVGIDMwIDAwIDcwIDBBIEU4IDQ5ICBfVF8wLiMuX1RfMC5w
Li5JCiAgICBDNEYwOiA0RiA0QyA0RiA3MCAwQSAwMiA0OSA0RiA0OCA0OSA3MCAwQSBFOCA0OSA0
RiA1MiAgT0xPcC4uSU9ISXAuLklPUgogICAgQzUwMDogNEMgNzAgMEEgMDIgNDkgNEYgNTIgNDgg
QTEgNDUgMDcgQTAgMjMgOTMgNUYgNTQgIExwLi5JT1JILkUuLiMuX1QKICAgIEM1MTA6IDVGIDMw
IDAxIDcwIDBBIEY4IDQ5IDRGIDRDIDRGIDcwIDBBIDAyIDQ5IDRGIDQ4ICBfMC5wLi5JT0xPcC4u
SU9ICiAgICBDNTIwOiA0OSA3MCAwQSBGOCA0OSA0RiA1MiA0QyA3MCAwQSAwMiA0OSA0RiA1MiA0
OCBBMSAgSXAuLklPUkxwLi5JT1JILgogICAgQzUzMDogNEUgMDQgQTAgMjQgOTMgNUYgNTQgNUYg
MzAgMEEgMDIgNzAgMEEgRTggNDkgNEYgIE4uLiQuX1RfMC4ucC4uSU8KICAgIEM1NDA6IDRDIDRG
IDcwIDBBIDAzIDQ5IDRGIDQ4IDQ5IDcwIDBBIEU4IDQ5IDRGIDUyIDRDICBMT3AuLklPSElwLi5J
T1JMCiAgICBDNTUwOiA3MCAwQSAwMyA0OSA0RiA1MiA0OCBBMSAyNiBBMCAyNCA5MyA1RiA1NCA1
RiAzMCAgcC4uSU9SSC4mLiQuX1RfMAogICAgQzU2MDogMEEgMDMgNzAgMEEgRjggNDkgNEYgNEMg
NEYgNzAgMEEgMDMgNDkgNEYgNDggNDkgIC4ucC4uSU9MT3AuLklPSEkKICAgIEM1NzA6IDcwIDBB
IEY4IDQ5IDRGIDUyIDRDIDcwIDBBIDAzIDQ5IDRGIDUyIDQ4IEE1IDc5ICBwLi5JT1JMcC4uSU9S
SC55CiAgICBDNTgwOiAwMSA3QiA0NiA1MiA1NSA0OSAwQSAwMyAwQSAwRiAwMCA0OSA1MiA1MSA0
QyBBNCAgLntGUlVJLi4uLi5JUlFMLgogICAgQzU5MDogNDIgNTUgNDYgMzAgNUIgODIgNEQgNTQg
MkUgNUYgNTMgNDIgNUYgNTQgNTAgNEQgIEJVRjBbLk1ULl9TQl9UUE0KICAgIEM1QTA6IDVGIDA4
IDU0IDREIDUyIDUxIDBDIEZGIEZGIEZGIEZGIDA4IDU0IDRDIDU2IDRDICBfLlRNUlEuLi4uLi5U
TFZMCiAgICBDNUIwOiAwQyBGRiBGRiBGRiBGRiAxNCAyRiA1RiA0OCA0OSA0NCAwMCBBMCAwQiA1
NCA0MyAgLi4uLi4uL19ISUQuLi5UQwogICAgQzVDMDogNEQgNDYgQTQgMEMgNjkgMzQgMDEgMDEg
QTEgMUMgQTAgMEQgOTMgNTQgNTQgNDQgIE1GLi5pNC4uLi4uLi5UVEQKICAgIEM1RDA6IDUwIDAw
IEE0IDBDIDQxIEQwIDBDIDMxIEExIDBDIEE0IDBEIDREIDUzIDQ2IDU0ICBQLi4uQS4uMS4uLi5N
U0ZUCiAgICBDNUUwOiAzMCAzMSAzMCAzMSAwMCA1QiA4MCA1NCA0RCA0RCA0MiAwMCAwQyAwMCAw
MCBENCAgMDEwMS5bLlRNTUIuLi4uLgogICAgQzVGMDogRkUgMEIgMDAgNTAgNUIgODEgNDEgMDQg
NTQgNEQgNEQgNDIgMTEgNDEgNDMgNDMgIC4uLlBbLkEuVE1NQi5BQ0MKICAgIEM2MDA6IDMwIDA4
IDAwIDM4IDQ5IDRFIDU0IDQ1IDIwIDQ5IDRFIDU0IDU2IDA4IDAwIDE4ICAwLi44SU5URSBJTlRW
Li4uCiAgICBDNjEwOiA0OSA0RSA1NCA1MyAyMCA0OSA0RSA1NCA0NiAyMCA1NCA1MyA1NCA1MyAy
MCAwMCAgSU5UUyBJTlRGIFRTVFMgLgogICAgQzYyMDogNDAgMDQgNDYgNDkgNDYgNEYgMjAgMDAg
NDAgMDQgNDkgNDQgNTQgNDYgMjAgMDAgIEAuRklGTyAuQC5JRFRGIC4KICAgIEM2MzA6IDQwIDBD
IDUzIDQzIDREIDQ0IDIwIDE0IDQ3IDA1IDVGIDUzIDU0IDUyIDAwIEEwICBALlNDTUQgLkcuX1NU
Ui4uCiAgICBDNjQwOiAyQSA5MyA1NCA1NCA0NCA1MCAwMCBBNCAxMSAyMSAwQSAxRSA1NCAwMCA1
MCAwMCAgKi5UVERQLi4uIS4uVC5QLgogICAgQzY1MDogNEQgMDAgMjAgMDAgMzEgMDAgMkUgMDAg
MzIgMDAgMjAgMDAgNDQgMDAgNjUgMDAgIE0uIC4xLi4uMi4gLkQuZS4KICAgIEM2NjA6IDc2IDAw
IDY5IDAwIDYzIDAwIDY1IDAwIDAwIDAwIEExIDI0IEE0IDExIDIxIDBBICB2LmkuYy5lLi4uLiQu
LiEuCiAgICBDNjcwOiAxRSA1NCAwMCA1MCAwMCA0RCAwMCAyMCAwMCAzMiAwMCAyRSAwMCAzMCAw
MCAyMCAgLlQuUC5NLiAuMi4uLjAuIAogICAgQzY4MDogMDAgNDQgMDAgNjUgMDAgNzYgMDAgNjkg
MDAgNjMgMDAgNjUgMDAgMDAgMDAgMDggIC5ELmUudi5pLmMuZS4uLi4KICAgIEM2OTA6IDVGIDU1
IDQ5IDQ0IDAxIDA4IDQzIDUyIDUzIDU0IDExIDFEIDBBIDFBIDg2IDA5ICBfVUlELi5DUlNULi4u
Li4uCiAgICBDNkEwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAxMCAwMCAwMCA4NiAwOSAwMCAwMCAw
MCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQzZCMDogRDcgRkUgMDAgMTAgMDAgMDAgNzkgMDAg
MDggNDMgNTIgNTMgNDQgMTEgMTEgMEEgIC4uLi4uLnkuLkNSU0QuLi4KICAgIEM2QzA6IDBFIDg2
IDA5IDAwIDAxIDAwIDAwIEQ0IEZFIDAwIDUwIDAwIDAwIDc5IDAwIDA4ICAuLi4uLi4uLi4uUC4u
eS4uCiAgICBDNkQwOiA0MyA1MiA0OSA0NCAxMSAxMSAwQSAwRSA4NiAwOSAwMCAwMSAwMCAwMCBE
NCBGRSAgQ1JJRC4uLi4uLi4uLi4uLgogICAgQzZFMDogMDAgNTAgMDAgMDAgNzkgMDAgMDggNDMg
NTIgNDUgNDkgMTEgMzQgMEEgMzEgODYgIC5QLi55Li5DUkVJLjQuMS4KICAgIEM2RjA6IDA5IDAw
IDAxIDAwIDAwIEQ0IEZFIDAwIDUwIDAwIDAwIDhDIDIwIDAwIDAxIDAwICAuLi4uLi4uLlAuLi4g
Li4uCiAgICBDNzAwOiAwMSAwMCAxMiAwMCAwMyAwMCAwMCAwMCAwMCAxNyAwMCAwMCAxOSAwMCAy
MyAwMCAgLi4uLi4uLi4uLi4uLi4jLgogICAgQzcxMDogMDAgMDAgMDAgMDAgNUMgNUYgNTMgNDIg
MkUgNDcgNTAgNDkgNEYgMDAgNzkgMDAgIC4uLi5cX1NCLkdQSU8ueS4KICAgIEM3MjA6IDE0IDQx
IDE1IDVGIDQzIDUyIDUzIDA4IEEwIDREIDA1IDkzIDQxIDREIDQ0IDU0ICAuQS5fQ1JTLi5NLi5B
TURUCiAgICBDNzMwOiAwMSA4QSA0MyA1MiA1MyA1NCAwQSAwNCA0RCA1NCA0NiA0MiA4QSA0MyA1
MiA1MyAgLi5DUlNULi5NVEZCLkNSUwogICAgQzc0MDogNTQgMEEgMDggNEMgNTQgNDYgNDIgNzAg
NTQgNTAgNEQgNDIgNEQgNTQgNDYgNDIgIFQuLkxURkJwVFBNQk1URkIKICAgIEM3NTA6IDcwIDU0
IDUwIDQyIDUzIDRDIDU0IDQ2IDQyIDhBIDQzIDUyIDUzIDU0IDBBIDEwICBwVFBCU0xURkIuQ1JT
VC4uCiAgICBDNzYwOiA0RCA1NCA0NiA0MyA4QSA0MyA1MiA1MyA1NCAwQSAxNCA0QyA1NCA0NiA0
MyA3MCAgTVRGQy5DUlNULi5MVEZDcAogICAgQzc3MDogNTQgNTAgNEQgNDMgNEQgNTQgNDYgNDMg
NzAgNTQgNTAgNDMgNTMgNEMgNTQgNDYgIFRQTUNNVEZDcFRQQ1NMVEYKICAgIEM3ODA6IDQzIEE0
IDQzIDUyIDUzIDU0IEExIDQ2IDBFIEEwIDM0IDkzIDQ0IDU0IDUwIDU0ICBDLkNSU1QuRi4uNC5E
VFBUCiAgICBDNzkwOiAwMSA4QSA0MyA1MiA1MyA0NCAwQSAwNCA0RCA1NCA0NiA0NSA4QSA0MyA1
MiA1MyAgLi5DUlNELi5NVEZFLkNSUwogICAgQzdBMDogNDQgMEEgMDggNEMgNTQgNDYgNDUgNzAg
MEMgMDAgMDAgRDQgRkUgNEQgNTQgNDYgIEQuLkxURkVwLi4uLi5NVEYKICAgIEM3QjA6IDQ1IDcw
IDBCIDAwIDUwIDRDIDU0IDQ2IDQ1IEE0IDQzIDUyIDUzIDQ0IEExIDREICBFcC4uUExURkUuQ1JT
RC5NCiAgICBDN0MwOiAwOSBBMCA0NyAwNyA5MyA1NCA1NCA1MCA0NiAwMSBBMCAzRiA5MSA5MyA1
NCA0RCAgLi5HLi5UVFBGLi4/Li5UTQogICAgQzdEMDogNTIgNTEgMDAgOTMgNTQgNEQgNTIgNTEg
MEMgRkYgRkYgRkYgRkYgOEEgNDMgNTIgIFJRLi5UTVJRLi4uLi4uQ1IKICAgIEM3RTA6IDQ5IDQ0
IDBBIDA0IDREIDU0IDQ2IDQ0IDhBIDQzIDUyIDQ5IDQ0IDBBIDA4IDRDICBJRC4uTVRGRC5DUklE
Li5MCiAgICBDN0YwOiA1NCA0NiA0NCA3MCAwQyAwMCAwMCBENCBGRSA0RCA1NCA0NiA0NCA3MCAw
QiAwMCAgVEZEcC4uLi4uTVRGRHAuLgogICAgQzgwMDogNTAgNEMgNTQgNDYgNDQgQTQgNDMgNTIg
NDkgNDQgQTEgMkUgOEIgNDMgNTIgNDUgIFBMVEZELkNSSUQuLi5DUkUKICAgIEM4MTA6IDQ5IDBB
IDIzIDRDIDQ5IDUyIDUxIDhEIDQzIDUyIDQ1IDQ5IDBBIDk5IDRDIDRDICBJLiNMSVJRLkNSRUku
LkxMCiAgICBDODIwOiA1NiA0QyA3MCA1NCA0RCA1MiA1MSA0QyA0OSA1MiA1MSA3MCA1NCA0QyA1
NiA0QyAgVkxwVE1SUUxJUlFwVExWTAogICAgQzgzMDogNEMgNEMgNTYgNEMgQTQgNDMgNTIgNDUg
NDkgQTEgMjIgQTAgMjAgOTMgNTQgNTQgIExMVkwuQ1JFSS4iLiAuVFQKICAgIEM4NDA6IDUwIDQ2
IDAwIDhBIDQzIDUyIDUzIDU0IDBBIDEwIDREIDU0IDQ2IDQ2IDcwIDQ2ICBQRi4uQ1JTVC4uTVRG
RnBGCiAgICBDODUwOiA1NCA1MCA0RCA0RCA1NCA0NiA0NiBBNCA0MyA1MiA1MyA1NCA3MCAwMCA0
RCA1NCAgVFBNTVRGRi5DUlNUcC5NVAogICAgQzg2MDogNDYgNDUgNzAgMDAgNEMgNTQgNDYgNDUg
QTQgNDMgNTIgNDkgNDQgQTQgNDMgNTIgIEZFcC5MVEZFLkNSSUQuQ1IKICAgIEM4NzA6IDQ5IDQ0
IDE0IDRGIDBFIDVGIDUzIDUyIDUzIDA5IEEwIDQ3IDBFIDkwIDkyIDkzICBJRC5PLl9TUlMuLkcu
Li4uCiAgICBDODgwOiA1NCA0RCA1MiA1MSAwMCA5MiA5MyA1NCA0RCA1MiA1MSAwQyBGRiBGRiBG
RiBGRiAgVE1SUS4uLlRNUlEuLi4uLgogICAgQzg5MDogOEIgNjggMEEgMjMgNDkgNTIgNTEgMzAg
OEIgNDMgNTIgNDUgNDkgMEEgMjMgNEMgIC5oLiNJUlEwLkNSRUkuI0wKICAgIEM4QTA6IDQ5IDUy
IDUxIDcwIDQ5IDUyIDUxIDMwIDRDIDQ5IDUyIDUxIDcwIDQ5IDUyIDUxICBJUlFwSVJRMExJUlFw
SVJRCiAgICBDOEIwOiAzMCA1NCA0RCA1MiA1MSA4RCA2OCAwQSA5OCA0OSA1NCA1MiA0NyA4RCA0
MyA1MiAgMFRNUlEuaC4uSVRSRy5DUgogICAgQzhDMDogNDUgNDkgMEEgOTggNEMgNTQgNTIgNDcg
NzAgNDkgNTQgNTIgNDcgNEMgNTQgNTIgIEVJLi5MVFJHcElUUkdMVFIKICAgIEM4RDA6IDQ3IDhE
IDY4IDBBIDk5IDQ5IDRDIDU2IDRDIDhEIDQzIDUyIDQ1IDQ5IDBBIDk5ICBHLmguLklMVkwuQ1JF
SS4uCiAgICBDOEUwOiA0QyA0QyA1NiA0QyA3MCA0OSA0QyA1NiA0QyA0QyA0QyA1NiA0QyBBMCA0
NCAwNyAgTExWTHBJTFZMTExWTC5ELgogICAgQzhGMDogOTEgOTMgN0IgNDkgNDQgNTQgNDYgMEEg
MEYgMDAgMDAgOTMgN0IgNDkgNDQgNTQgIC4ue0lEVEYuLi4uLntJRFQKICAgIEM5MDA6IDQ2IDBB
IDBGIDAwIDBBIDBGIEEwIDE1IDk1IDQ5IDUyIDUxIDMwIDBBIDEwIDcwICBGLi4uLi4uLi5JUlEw
Li5wCiAgICBDOTEwOiA3QiA0OSA1MiA1MSAzMCAwQSAwRiAwMCA0OSA0RSA1NCA1NiBBMCAxMiA5
MyA0OSAge0lSUTAuLi5JTlRWLi4uSQogICAgQzkyMDogNTQgNTIgNDcgMDEgN0QgNDkgNEUgNTQg
NDUgMEEgMTAgNDkgNEUgNTQgNDUgQTEgIFRSRy59SU5URS4uSU5URS4KICAgIEM5MzA6IDBGIDdC
IDQ5IDRFIDU0IDQ1IDBDIEVGIEZGIEZGIEZGIDQ5IDRFIDU0IDQ1IEEwICAue0lOVEUuLi4uLklO
VEUuCiAgICBDOTQwOiAxMiA5MyA0OSA0QyA1NiA0QyAwMCA3RCA0OSA0RSA1NCA0NSAwQSAwOCA0
OSA0RSAgLi5JTFZMLn1JTlRFLi5JTgogICAgQzk1MDogNTQgNDUgQTEgMEYgN0IgNDkgNEUgNTQg
NDUgMEMgRjcgRkYgRkYgRkYgNDkgNEUgIFRFLi57SU5URS4uLi4uSU4KICAgIEM5NjA6IDU0IDQ1
IDVCIDgwIDQzIDUyIDQyIDQ0IDAwIDU0IDUwIDREIDREIDBBIDQ4IDVCICBURVsuQ1JCRC5UUE1N
LkhbCiAgICBDOTcwOiA4MSAxQyA0MyA1MiA0MiA0NCAwMCAwMCAyMCA0OCA0NSA1MiA1MiAyMCAw
MCA0MCAgLi5DUkJELi4gSEVSUiAuQAogICAgQzk4MDogMUMgNDggNDMgNEQgNDQgMjAgMDAgMDAg
NDggNTMgNTQgNTMgMjAgMTQgMzAgNUYgIC5IQ01EIC4uSFNUUyAuMF8KICAgIEM5OTA6IDUzIDU0
IDQxIDAwIEEwIDEyIDkzIDU0IDU0IDQ0IDUwIDAwIEEwIDA4IDU0IDUwICBTVEEuLi4uVFREUC4u
LlRQCiAgICBDOUEwOiA0RCA0NiBBNCAwQSAwRiBBNCAwMCBBMSAxNCBBMCAxMiA5MyA1NCA1NCA0
NCA1MCAgTUYuLi4uLi4uLi4uVFREUAogICAgQzlCMDogMDEgQTAgMDggNTQgNTAgNEQgNDYgQTQg
MEEgMEYgQTQgMDAgQTQgMDAgMTQgNDQgIC4uLlRQTUYuLi4uLi4uLkQKICAgIEM5QzA6IDBDIDUz
IDU0IDUyIDU0IDBCIDA4IDVGIDU0IDVGIDMwIDAwIDVCIDgwIDU0IDUwICAuU1RSVC4uX1RfMC5b
LlRQCiAgICBDOUQwOiA0RCA1MiAwMCA0NiA1NCA1MCA0RCAwQiAwMCAxMCA1QiA4MSAxNCA1NCA1
MCA0RCAgTVIuRlRQTS4uLlsuLlRQTQogICAgQzlFMDogNTIgMDAgMDAgMjAgNDYgNDUgNTIgNTIg
MjAgMDAgMjAgNDIgNDUgNDcgNEUgMjAgIFIuLiBGRVJSIC4gQkVHTiAKICAgIEM5RjA6IDA4IDU0
IDQ5IDREIDUyIDAwIEEwIDA3IDkyIDkzIDk5IDY4IDAwIDAwIEEyIDQyICAuVElNUi4uLi4uLmgu
Li5CCiAgICBDQTAwOiAwOCAwMSA3MCA5OSA2OSAwMCA1RiA1NCA1RiAzMCBBMCAwQyA5MyA1RiA1
NCA1RiAgLi5wLmkuX1RfMC4uLl9UXwogICAgQ0ExMDogMzAgMDAgQTQgMTEgMDMgMDEgMDMgQTEg
NDggMDYgQTAgNDUgMDYgOTMgNUYgNTQgIDAuLi4uLi4uSC4uRS4uX1QKICAgIENBMjA6IDVGIDMw
IDAxIDcwIDAwIDU0IDQ5IDREIDUyIEEwIDI4IDkzIDQxIDREIDQ0IDU0ICBfMC5wLlRJTVIuKC5B
TURUCiAgICBDQTMwOiAwMSBBMiAyMCA5MCA5MyA0MiA0NSA0NyA0RSAwMSA5NSA1NCA0OSA0RCA1
MiAwQiAgLi4gLi5CRUdOLi5USU1SLgogICAgQ0E0MDogMDAgMDIgQTAgMEYgOTMgNDIgNDUgNDcg
NEUgMDEgNUIgMjIgMDEgNzUgNTQgNDkgIC4uLi4uQkVHTi5bIi51VEkKICAgIENBNTA6IDREIDUy
IEExIDJCIEEwIDFCIDkzIDdEIDdCIDQ4IDUzIDU0IDUzIDBBIDAyIDAwICBNUi4rLi4ufXtIU1RT
Li4uCiAgICBDQTYwOiA3QiA0OCA1MyA1NCA1MyAwMSAwMCAwMCAwQSAwMyA3MCAwMSA0OCA0MyA0
RCA0NCAge0hTVFMuLi4uLnAuSENNRAogICAgQ0E3MDogQTEgMEQgNzAgMDEgNDYgNDUgNTIgNTIg
NzAgMDAgNDIgNDUgNDcgNEUgQTQgMDAgIC4ucC5GRVJScC5CRUdOLi4KICAgIENBODA6IEE1IEE0
IDAxIDE0IDRGIDA1IDQzIDUyIDU5IDQ2IDBCIDA4IDVGIDU0IDVGIDMwICAuLi4uTy5DUllGLi5f
VF8wCiAgICBDQTkwOiAwMCBBMCAwNyA5MiA5MyA5OSA2OCAwMCAwMSBBMiA0NCAwNCAwMSA3MCA5
OSA2OSAgLi4uLi4uaC4uLkQuLnAuaQogICAgQ0FBMDogMDAgNUYgNTQgNUYgMzAgQTAgMEMgOTMg
NUYgNTQgNUYgMzAgMDAgQTQgMTEgMDMgIC5fVF8wLi4uX1RfMC4uLi4KICAgIENBQjA6IDAxIDAz
IEExIDJBIEEwIDI4IDkzIDVGIDU0IDVGIDMwIDAxIDA4IDU0IDUwIDREICAuLi4qLiguX1RfMC4u
VFBNCiAgICBDQUMwOiA1NiAxMiAwOSAwMiAwMSAxMiAwNSAwMiAwMSAwQSAyMCBBMCAwQyA5MyA1
RiA1MyAgVi4uLi4uLi4uLiAuLi5fUwogICAgQ0FEMDogNTQgNDEgMDAgQTQgMTIgMDMgMDEgMDAg
QTQgNTQgNTAgNEQgNTYgQTUgQTQgMTEgIFRBLi4uLi4uLlRQTVYuLi4KICAgIENBRTA6IDAzIDAx
IDAwIDEwIDRDIDM0IDJFIDVGIDUzIDQyIDVGIDU0IDUwIDREIDVGIDVCICAuLi4uTDQuX1NCX1RQ
TV9bCiAgICBDQUYwOiA4MCA1NCA1MyA0RCA0OSAwMSA1MyA0RCA0OSA0MSAwQSAwMiA1QiA4MSAw
QiA1NCAgLlRTTUkuU01JQS4uWy4uVAogICAgQ0IwMDogNTMgNEQgNDkgMDIgNTMgNEQgNDkgNUYg
MTAgNUIgODAgNDEgNTQgNEUgNTYgMDAgIFNNSS5TTUlfLlsuQVROVi4KICAgIENCMTA6IDUwIDUw
IDQ5IDREIDUwIDUwIDQ5IDRDIDVCIDgxIDI5IDQxIDU0IDRFIDU2IDAwICBQUElNUFBJTFsuKUFU
TlYuCiAgICBDQjIwOiA1MiA1MSA1MyA1NCAyMCA1MiA0MyA0RSA1NCAyMCA0NSA1MiA1MiA0RiAy
MCA0NiAgUlFTVCBSQ05UIEVSUk8gRgogICAgQ0IzMDogNEMgNDEgNDcgMjAgNEQgNDkgNTMgNDMg
MjAgNEYgNTAgNTQgNEUgMjAgNTMgNTIgIExBRyBNSVNDIE9QVE4gU1IKICAgIENCNDA6IDUzIDUw
IDIwIDE0IDQwIDI4IDVGIDQ0IDUzIDREIDBDIDA4IDVGIDU0IDVGIDMxICBTUCAuQChfRFNNLi5f
VF8xCiAgICBDQjUwOiAwMCAwOCA1RiA1NCA1RiAzMCAwMCBBMCA0NyAxQiA5MyA2OCAxMSAxMyAw
QSAxMCAgLi5fVF8wLi5HLi5oLi4uLgogICAgQ0I2MDogQTYgRkEgREQgM0QgMUIgMzYgQjQgNEUg
QTQgMjQgOEQgMTAgMDggOUQgMTYgNTMgIC4uLj0uNi5OLiQuLi4uLlMKICAgIENCNzA6IEEyIDRF
IDE5IDAxIDcwIDk5IDZBIDAwIDVGIDU0IDVGIDMwIEEwIDBFIDkzIDVGICAuTi4ucC5qLl9UXzAu
Li5fCiAgICBDQjgwOiA1NCA1RiAzMCAwMCBBNCAxMSAwNSAwQSAwMiBGRiAwMSBBMSA0MiAxOCBB
MCAxRCAgVF8wLi4uLi4uLi4uQi4uLgogICAgQ0I5MDogOTMgNUYgNTQgNUYgMzAgMDEgQTAgMEQg
OTMgNTAgNTAgNDkgNTYgMDAgQTQgMEQgIC5fVF8wLi4uLlBQSVYuLi4KICAgIENCQTA6IDMxIDJF
IDMyIDAwIEExIDA3IEE0IDBEIDMxIDJFIDMzIDAwIEExIDQxIDE2IEEwICAxLjIuLi4uLjEuMy4u
QS4uCiAgICBDQkIwOiAzQyA5MyA1RiA1NCA1RiAzMCAwQSAwMiA3MCA4MyA4OCA2QiAwMCAwMCA1
MiA1MSAgPC5fVF8wLi5wLi5rLi5SUQogICAgQ0JDMDogNTMgNTQgNzAgMDAgNTMgNTIgNTMgNTAg
NzAgMEEgMDIgNDYgNEMgNDEgNDcgNzAgIFNUcC5TUlNQcC4uRkxBR3AKICAgIENCRDA6IDRGIDQ2
IDUzIDU0IDU0IDREIDQ2IDMxIDcwIDAwIDUzIDUyIDUzIDUwIDcwIDU0ICBPRlNUVE1GMXAuU1JT
UHBUCiAgICBDQkUwOiA0RCA0NiAzMSA1MyA0RCA0OSA1RiBBNCA1MyA1MiA1MyA1MCBBMSA0MSAx
MiBBMCAgTUYxU01JXy5TUlNQLkEuLgogICAgQ0JGMDogMjMgOTMgNUYgNTQgNUYgMzAgMEEgMDMg
MDggNTAgNTAgNDkgMzEgMTIgMDQgMDIgICMuX1RfMC4uLlBQSTEuLi4KICAgIENDMDA6IDAwIDAw
IDcwIDUyIDUxIDUzIDU0IDg4IDUwIDUwIDQ5IDMxIDAxIDAwIEE0IDUwICAuLnBSUVNULlBQSTEu
Li5QCiAgICBDQzEwOiA1MCA0OSAzMSBBMSA0QSAwRiBBMCAwRCA5MyA1RiA1NCA1RiAzMCAwQSAw
NCBBNCAgUEkxLkouLi4uX1RfMC4uLgogICAgQ0MyMDogNTQgNTIgNTMgNTQgQTEgNDkgMEUgQTAg
NDggMDQgOTMgNUYgNTQgNUYgMzAgMEEgIFRSU1QuSS4uSC4uX1RfMC4KICAgIENDMzA6IDA1IDA4
IDUwIDUwIDQ5IDMyIDEyIDA1IDAzIDAwIDAwIDAwIDcwIDAwIDUzIDUyICAuLlBQSTIuLi4uLi5w
LlNSCiAgICBDQzQwOiA1MyA1MCA3MCAwQSAwNSA0NiA0QyA0MSA0NyA3MCA0RiA0NiA1MyA1NCA1
MyA0RCAgU1BwLi5GTEFHcE9GU1RTTQogICAgQ0M1MDogNDkgNUYgNzAgNTIgNDMgNEUgNTQgODgg
NTAgNTAgNDkgMzIgMDEgMDAgNzAgNDUgIElfcFJDTlQuUFBJMi4ucEUKICAgIENDNjA6IDUyIDUy
IDRGIDg4IDUwIDUwIDQ5IDMyIDBBIDAyIDAwIEE0IDUwIDUwIDQ5IDMyICBSUk8uUFBJMi4uLi5Q
UEkyCiAgICBDQzcwOiBBMSA0RCAwOSBBMCAwQiA5MyA1RiA1NCA1RiAzMCAwQSAwNiBBNCAwQSAw
MyBBMSAgLk0uLi4uX1RfMC4uLi4uLgogICAgQ0M4MDogNEUgMDggQTAgNDAgMDUgOTMgNUYgNTQg
NUYgMzAgMEEgMDcgNzAgODMgODggNkIgIE4uLkAuLl9UXzAuLnAuLmsKICAgIENDOTA6IDAwIDAw
IDUyIDUxIDUzIDU0IDcwIDBBIDA3IDQ2IDRDIDQxIDQ3IDcwIDAwIDRGICAuLlJRU1RwLi5GTEFH
cC5PCiAgICBDQ0EwOiA1MCA1NCA0RSBBMCAxMiA5MyA1MiA1MSA1MyA1NCAwQSAxNyA5OSA4MyA4
OCA2QiAgUFROLi4uUlFTVC4uLi4uawogICAgQ0NCMDogMDEgMDAgNEYgNTAgNTQgNEUgNzAgNEYg
NDYgNTMgNTQgNTQgNEQgNDYgMzEgNzAgIC4uT1BUTnBPRlNUVE1GMXAKICAgIENDQzA6IDAwIDUz
IDUyIDUzIDUwIDcwIDU0IDREIDQ2IDMxIDUzIDREIDQ5IDVGIEE0IDUzICAuU1JTUHBUTUYxU01J
Xy5TCiAgICBDQ0QwOiA1MiA1MyA1MCBBMSAzQSBBMCAzNiA5MyA1RiA1NCA1RiAzMCAwQSAwOCA3
MCA4MyAgUlNQLjouNi5fVF8wLi5wLgogICAgQ0NFMDogODggNkIgMDAgMDAgNTIgNTEgNTMgNTQg
NzAgMEEgMDggNDYgNEMgNDEgNDcgNzAgIC5rLi5SUVNUcC4uRkxBR3AKICAgIENDRjA6IDRGIDQ2
IDUzIDU0IDU0IDREIDQ2IDMxIDcwIDAwIDUzIDUyIDUzIDUwIDcwIDU0ICBPRlNUVE1GMXAuU1JT
UHBUCiAgICBDRDAwOiA0RCA0NiAzMSA1MyA0RCA0OSA1RiBBNCA1MyA1MiA1MyA1MCBBMSAwMSBB
NSBBMSAgTUYxU01JXy5TUlNQLi4uLgogICAgQ0QxMDogNEYgMDYgQTAgNEMgMDYgOTMgNjggMTEg
MTMgMEEgMTAgRUQgNTQgNjAgMzcgMTMgIE8uLkwuLmguLi4uLlRgNy4KICAgIENEMjA6IENDIDc1
IDQ2IDkwIDFDIDQ3IDU2IEQ3IEYyIEQ0IDVEIEEyIDQzIDA1IDAxIDcwICAudUYuLkdWLi4uXS5D
Li5wCiAgICBDRDMwOiA5OSA2QSAwMCA1RiA1NCA1RiAzMSBBMCAwQyA5MyA1RiA1NCA1RiAzMSAw
MCBBNCAgLmouX1RfMS4uLl9UXzEuLgogICAgQ0Q0MDogMTEgMDMgMDEgMDMgQTEgMzkgQTAgMzUg
OTMgNUYgNTQgNUYgMzEgMDEgNzAgODMgIC4uLi4uOS41Ll9UXzEucC4KICAgIENENTA6IDg4IDZC
IDAwIDAwIDUyIDUxIDUzIDU0IDcwIDBBIDA5IDQ2IDRDIDQxIDQ3IDcwICAuay4uUlFTVHAuLkZM
QUdwCiAgICBDRDYwOiA0RiA0NiA1MyA1NCA1NCA0RCA0NiAzMSA3MCAwMCA1MyA1MiA1MyA1MCA3
MCA1NCAgT0ZTVFRNRjFwLlNSU1BwVAogICAgQ0Q3MDogNEQgNDYgMzEgNTMgNEQgNDkgNUYgQTQg
NTMgNTIgNTMgNTAgQTEgMDEgQTUgQTAgIE1GMVNNSV8uU1JTUC4uLi4KICAgIENEODA6IDFGIDkz
IDY4IDExIDEzIDBBIDEwIEE1IDE2IDhFIENGIEU4IEMxIDI1IDRFIEI3ICAuLmguLi4uLi4uLi4u
JU4uCiAgICBDRDkwOiAxMiA0RiA1NCBBOSA2NyAwMiBDOCBBNCA0MyA1MiA1OSA0NiA2OSA2QSA2
QiBBMCAgLk9ULmcuLi5DUllGaWprLgogICAgQ0RBMDogMUYgOTMgNjggMTEgMTMgMEEgMTAgQUIg
NkMgQkYgNkIgNjMgNTQgMTQgNDcgQjcgIC4uaC4uLi4ubC5rY1QuRy4KICAgIENEQjA6IENEIEYw
IDIwIDNDIDAzIDY4IEQ0IEE0IDUzIDU0IDUyIDU0IDY5IDZBIDZCIEE0ICAuLiA8LmguLlNUUlRp
amsuCiAgICBDREMwOiAxMSAwMyAwMSAwMCAxNCA0QiAwNiA1NCA1MCA1NCA1MyAwOSAwOCA1RiA1
NCA1RiAgLi4uLi5LLlRQVFMuLl9UXwogICAgQ0REMDogMzAgMDAgQTIgNDggMDUgMDEgNzAgOTkg
NjggMDAgNUYgNTQgNUYgMzAgQTAgMjQgIDAuLkguLnAuaC5fVF8wLiQKICAgIENERTA6IDkzIDVG
IDU0IDVGIDMwIDBBIDA0IDcwIDAwIDUyIDUxIDUzIDU0IDcwIDBBIDA5ICAuX1RfMC4ucC5SUVNU
cC4uCiAgICBDREYwOiA0NiA0QyA0MSA0NyA3MCAwMCA1MyA1MiA1MyA1MCA3MCA0RiA0NiA1MyA1
NCA1MyAgRkxBR3AuU1JTUHBPRlNUUwogICAgQ0UwMDogNEQgNDkgNUYgQTEgMjYgQTAgMjQgOTMg
NUYgNTQgNUYgMzAgMEEgMDUgNzAgMDAgIE1JXy4mLiQuX1RfMC4ucC4KICAgIENFMTA6IDUyIDUx
IDUzIDU0IDcwIDBBIDA5IDQ2IDRDIDQxIDQ3IDcwIDAwIDUzIDUyIDUzICBSUVNUcC4uRkxBR3Au
U1JTCiAgICBDRTIwOiA1MCA3MCA0RiA0NiA1MyA1NCA1MyA0RCA0OSA1RiBBNSA1QiAyMiAwQiAy
QyAwMSAgUHBPRlNUU01JXy5bIi4sLgogICAgQ0UzMDogMTAgMDUgNUYgNDcgNTAgNDUgMDggNDIg
NTIgNDUgNTYgMEEgMDIgMDggNEYgNDIgIC4uX0dQRS5CUkVWLi4uT0IKICAgIENFNDA6IDQ0IDUw
IDBBIDAxIDA4IDQyIDRDIDQ1IDQ0IDBBIDAxIDA4IDQzIDRDIDQ1IDQ0ICBEUC4uLkJMRUQuLi5D
TEVECiAgICBDRTUwOiAwQSAwMSAxNCA0MiAwRCA0NCA0MiA0NyA0QyAwMSBBMCA0NiAwNiA5MyA2
OCAwMSAgLi4uQi5EQkdMLi5GLi5oLgogICAgQ0U2MDogNUMgMkYgMDUgNUYgNTMgNDIgNUYgNTAg
NDMgNDkgMzAgNTMgNDIgNTIgNDcgNTMgIFwvLl9TQl9QQ0kwU0JSR1MKICAgIENFNzA6IDQ5IDRG
IDMxIDQ1IDRFIDQ2IDQ3IDBBIDA4IDdEIDVDIDJGIDA1IDVGIDUzIDQyICBJTzFFTkZHLi59XC8u
X1NCCiAgICBDRTgwOiA1RiA1MCA0MyA0OSAzMCA1MyA0MiA1MiA0NyA1MyA0OSA0RiAzMSA1MyA0
MyA0NiAgX1BDSTBTQlJHU0lPMVNDRgogICAgQ0U5MDogNDYgMEEgMDIgNUMgMkYgMDUgNUYgNTMg
NDIgNUYgNTAgNDMgNDkgMzAgNTMgNDIgIEYuLlwvLl9TQl9QQ0kwU0IKICAgIENFQTA6IDUyIDQ3
IDUzIDQ5IDRGIDMxIDUzIDQzIDQ2IDQ2IDVDIDJGIDA1IDVGIDUzIDQyICBSR1NJTzFTQ0ZGXC8u
X1NCCiAgICBDRUIwOiA1RiA1MCA0MyA0OSAzMCA1MyA0MiA1MiA0NyA1MyA0OSA0RiAzMSA0NSA1
OCA0NiAgX1BDSTBTQlJHU0lPMUVYRgogICAgQ0VDMDogNDcgQTEgNDMgMDYgNUMgMkYgMDUgNUYg
NTMgNDIgNUYgNTAgNDMgNDkgMzAgNTMgIEcuQy5cLy5fU0JfUENJMFMKICAgIENFRDA6IDQyIDUy
IDQ3IDUzIDQ5IDRGIDMxIDQ1IDRFIDQ2IDQ3IDBBIDA4IDdCIDVDIDJGICBCUkdTSU8xRU5GRy4u
e1wvCiAgICBDRUUwOiAwNSA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMCA1MyA0MiA1MiA0NyA1MyA0
OSA0RiAgLl9TQl9QQ0kwU0JSR1NJTwogICAgQ0VGMDogMzEgNTMgNDMgNDYgNDYgMEEgRkQgNUMg
MkYgMDUgNUYgNTMgNDIgNUYgNTAgNDMgIDFTQ0ZGLi5cLy5fU0JfUEMKICAgIENGMDA6IDQ5IDMw
IDUzIDQyIDUyIDQ3IDUzIDQ5IDRGIDMxIDUzIDQzIDQ2IDQ2IDVDIDJGICBJMFNCUkdTSU8xU0NG
RlwvCiAgICBDRjEwOiAwNSA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMCA1MyA0MiA1MiA0NyA1MyA0
OSA0RiAgLl9TQl9QQ0kwU0JSR1NJTwogICAgQ0YyMDogMzEgNDUgNTggNDYgNDcgMTQgNDUgMjIg
NDIgNTQgNEUgNEMgMDEgQTAgNDMgMTEgIDFFWEZHLkUiQlROTC4uQy4KICAgIENGMzA6IDkzIDY4
IDAxIEEwIDQ5IDBBIDkzIDQyIDUyIDQ1IDU2IDBBIDAyIDVDIDJGIDA1ICAuaC4uSS4uQlJFVi4u
XC8uCiAgICBDRjQwOiA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMCA1MyA0MiA1MiA0NyA1MyA0OSA0
RiAzMSAgX1NCX1BDSTBTQlJHU0lPMQogICAgQ0Y1MDogNDUgNEUgNDYgNDcgMEEgMDcgN0IgNUMg
MkYgMDUgNUYgNTMgNDIgNUYgNTAgNDMgIEVORkcuLntcLy5fU0JfUEMKICAgIENGNjA6IDQ5IDMw
IDUzIDQyIDUyIDQ3IDUzIDQ5IDRGIDMxIDUyIDQ3IDQ1IDM4IDBFIEY3ICBJMFNCUkdTSU8xUkdF
OC4uCiAgICBDRjcwOiBGRiBGRiBGRiBGRiBGRiBGRiBGRiA1QyAyRiAwNSA1RiA1MyA0MiA1RiA1
MCA0MyAgLi4uLi4uLlwvLl9TQl9QQwogICAgQ0Y4MDogNDkgMzAgNTMgNDIgNTIgNDcgNTMgNDkg
NEYgMzEgNTIgNDcgNDUgMzggN0IgNUMgIEkwU0JSR1NJTzFSR0U4e1wKICAgIENGOTA6IDJGIDA1
IDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMwIDUzIDQyIDUyIDQ3IDUzIDQ5ICAvLl9TQl9QQ0kwU0JS
R1NJCiAgICBDRkEwOiA0RiAzMSA1MiA0NyA0NSAzOSAwRSBGNyBGRiBGRiBGRiBGRiBGRiBGRiBG
RiA1QyAgTzFSR0U5Li4uLi4uLi4uXAogICAgQ0ZCMDogMkYgMDUgNUYgNTMgNDIgNUYgNTAgNDMg
NDkgMzAgNTMgNDIgNTIgNDcgNTMgNDkgIC8uX1NCX1BDSTBTQlJHU0kKICAgIENGQzA6IDRGIDMx
IDUyIDQ3IDQ1IDM5IDVDIDJGIDA1IDVGIDUzIDQyIDVGIDUwIDQzIDQ5ICBPMVJHRTlcLy5fU0Jf
UENJCiAgICBDRkQwOiAzMCA1MyA0MiA1MiA0NyA1MyA0OSA0RiAzMSA0NSA1OCA0NiA0NyBBMSA0
MyAwNiAgMFNCUkdTSU8xRVhGRy5DLgogICAgQ0ZFMDogNUMgMkYgMDUgNUYgNTMgNDIgNUYgNTAg
NDMgNDkgMzAgNTMgNDIgNTIgNDcgNTMgIFwvLl9TQl9QQ0kwU0JSR1MKICAgIENGRjA6IDQ5IDRG
IDMxIDQ1IDRFIDQ2IDQ3IDBBIDA4IDdCIDVDIDJGIDA1IDVGIDUzIDQyICBJTzFFTkZHLi57XC8u
X1NCCiAgICBEMDAwOiA1RiA1MCA0MyA0OSAzMCA1MyA0MiA1MiA0NyA1MyA0OSA0RiAzMSA1MiA0
NyA0NSAgX1BDSTBTQlJHU0lPMVJHRQogICAgRDAxMDogMzEgMEEgRjcgNUMgMkYgMDUgNUYgNTMg
NDIgNUYgNTAgNDMgNDkgMzAgNTMgNDIgIDEuLlwvLl9TQl9QQ0kwU0IKICAgIEQwMjA6IDUyIDQ3
IDUzIDQ5IDRGIDMxIDUyIDQ3IDQ1IDMxIDVDIDJGIDA1IDVGIDUzIDQyICBSR1NJTzFSR0UxXC8u
X1NCCiAgICBEMDMwOiA1RiA1MCA0MyA0OSAzMCA1MyA0MiA1MiA0NyA1MyA0OSA0RiAzMSA0NSA1
OCA0NiAgX1BDSTBTQlJHU0lPMUVYRgogICAgRDA0MDogNDcgQTEgNDkgMTAgQTAgNDIgMEEgOTMg
NDIgNTIgNDUgNTYgMEEgMDIgNUMgMkYgIEcuSS4uQi4uQlJFVi4uXC8KICAgIEQwNTA6IDA1IDVG
IDUzIDQyIDVGIDUwIDQzIDQ5IDMwIDUzIDQyIDUyIDQ3IDUzIDQ5IDRGICAuX1NCX1BDSTBTQlJH
U0lPCiAgICBEMDYwOiAzMSA0NSA0RSA0NiA0NyAwQSAwNyA3QiA1QyAyRiAwNSA1RiA1MyA0MiA1
RiA1MCAgMUVORkcuLntcLy5fU0JfUAogICAgRDA3MDogNDMgNDkgMzAgNTMgNDIgNTIgNDcgNTMg
NDkgNEYgMzEgNTIgNDcgNDUgMzggMEUgIENJMFNCUkdTSU8xUkdFOC4KICAgIEQwODA6IEY3IEZG
IEZGIEZGIEZGIEZGIEZGIEZGIDVDIDJGIDA1IDVGIDUzIDQyIDVGIDUwICAuLi4uLi4uLlwvLl9T
Ql9QCiAgICBEMDkwOiA0MyA0OSAzMCA1MyA0MiA1MiA0NyA1MyA0OSA0RiAzMSA1MiA0NyA0NSAz
OCA3RCAgQ0kwU0JSR1NJTzFSR0U4fQogICAgRDBBMDogNUMgMkYgMDUgNUYgNTMgNDIgNUYgNTAg
NDMgNDkgMzAgNTMgNDIgNTIgNDcgNTMgIFwvLl9TQl9QQ0kwU0JSR1MKICAgIEQwQjA6IDQ5IDRG
IDMxIDUyIDQ3IDQ1IDM5IDBBIDA4IDVDIDJGIDA1IDVGIDUzIDQyIDVGICBJTzFSR0U5Li5cLy5f
U0JfCiAgICBEMEMwOiA1MCA0MyA0OSAzMCA1MyA0MiA1MiA0NyA1MyA0OSA0RiAzMSA1MiA0NyA0
NSAzOSAgUENJMFNCUkdTSU8xUkdFOQogICAgRDBEMDogNUMgMkYgMDUgNUYgNTMgNDIgNUYgNTAg
NDMgNDkgMzAgNTMgNDIgNTIgNDcgNTMgIFwvLl9TQl9QQ0kwU0JSR1MKICAgIEQwRTA6IDQ5IDRG
IDMxIDQ1IDU4IDQ2IDQ3IEExIDQzIDA2IDVDIDJGIDA1IDVGIDUzIDQyICBJTzFFWEZHLkMuXC8u
X1NCCiAgICBEMEYwOiA1RiA1MCA0MyA0OSAzMCA1MyA0MiA1MiA0NyA1MyA0OSA0RiAzMSA0NSA0
RSA0NiAgX1BDSTBTQlJHU0lPMUVORgogICAgRDEwMDogNDcgMEEgMDggN0QgNUMgMkYgMDUgNUYg
NTMgNDIgNUYgNTAgNDMgNDkgMzAgNTMgIEcuLn1cLy5fU0JfUENJMFMKICAgIEQxMTA6IDQyIDUy
IDQ3IDUzIDQ5IDRGIDMxIDUyIDQ3IDQ1IDMxIDBBIDA4IDVDIDJGIDA1ICBCUkdTSU8xUkdFMS4u
XC8uCiAgICBEMTIwOiA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMCA1MyA0MiA1MiA0NyA1MyA0OSA0
RiAzMSAgX1NCX1BDSTBTQlJHU0lPMQogICAgRDEzMDogNTIgNDcgNDUgMzEgNUMgMkYgMDUgNUYg
NTMgNDIgNUYgNTAgNDMgNDkgMzAgNTMgIFJHRTFcLy5fU0JfUENJMFMKICAgIEQxNDA6IDQyIDUy
IDQ3IDUzIDQ5IDRGIDMxIDQ1IDU4IDQ2IDQ3IDE0IDQzIDEwIDQzIDQzICBCUkdTSU8xRVhGRy5D
LkNDCiAgICBEMTUwOiA0RCA0QyAwMSBBMCA0NiAwNiA5MyA2OCAwMSA1QyAyRiAwNSA1RiA1MyA0
MiA1RiAgTUwuLkYuLmguXC8uX1NCXwogICAgRDE2MDogNTAgNDMgNDkgMzAgNTMgNDIgNTIgNDcg
NTMgNDkgNEYgMzEgNDUgNEUgNDYgNDcgIFBDSTBTQlJHU0lPMUVORkcKICAgIEQxNzA6IDBBIDA3
IDdEIDVDIDJGIDA1IDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMwIDUzIDQyICAuLn1cLy5fU0JfUENJ
MFNCCiAgICBEMTgwOiA1MiA0NyA1MyA0OSA0RiAzMSA1MiA0NyA0NSAzMCAwQSAwMiA1QyAyRiAw
NSA1RiAgUkdTSU8xUkdFMC4uXC8uXwogICAgRDE5MDogNTMgNDIgNUYgNTAgNDMgNDkgMzAgNTMg
NDIgNTIgNDcgNTMgNDkgNEYgMzEgNTIgIFNCX1BDSTBTQlJHU0lPMVIKICAgIEQxQTA6IDQ3IDQ1
IDMwIDVDIDJGIDA1IDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMwIDUzIDQyICBHRTBcLy5fU0JfUENJ
MFNCCiAgICBEMUIwOiA1MiA0NyA1MyA0OSA0RiAzMSA0NSA1OCA0NiA0NyBBMSA0NCAwOSA1QyAy
RiAwNSAgUkdTSU8xRVhGRy5ELlwvLgogICAgRDFDMDogNUYgNTMgNDIgNUYgNTAgNDMgNDkgMzAg
NTMgNDIgNTIgNDcgNTMgNDkgNEYgMzEgIF9TQl9QQ0kwU0JSR1NJTzEKICAgIEQxRDA6IDQ1IDRF
IDQ2IDQ3IDBBIDA3IDdCIDVDIDJGIDA1IDVGIDUzIDQyIDVGIDUwIDQzICBFTkZHLi57XC8uX1NC
X1BDCiAgICBEMUUwOiA0OSAzMCA1MyA0MiA1MiA0NyA1MyA0OSA0RiAzMSA1MiA0NyA0NSAzMCAw
QSBGRCAgSTBTQlJHU0lPMVJHRTAuLgogICAgRDFGMDogNUMgMkYgMDUgNUYgNTMgNDIgNUYgNTAg
NDMgNDkgMzAgNTMgNDIgNTIgNDcgNTMgIFwvLl9TQl9QQ0kwU0JSR1MKICAgIEQyMDA6IDQ5IDRG
IDMxIDUyIDQ3IDQ1IDMwIDdCIDVDIDJGIDA1IDVGIDUzIDQyIDVGIDUwICBJTzFSR0Uwe1wvLl9T
Ql9QCiAgICBEMjEwOiA0MyA0OSAzMCA1MyA0MiA1MiA0NyA1MyA0OSA0RiAzMSA1MiA0NyA0NSAz
MSAwQSAgQ0kwU0JSR1NJTzFSR0UxLgogICAgRDIyMDogRkQgNUMgMkYgMDUgNUYgNTMgNDIgNUYg
NTAgNDMgNDkgMzAgNTMgNDIgNTIgNDcgIC5cLy5fU0JfUENJMFNCUkcKICAgIEQyMzA6IDUzIDQ5
IDRGIDMxIDUyIDQ3IDQ1IDMxIDVDIDJGIDA1IDVGIDUzIDQyIDVGIDUwICBTSU8xUkdFMVwvLl9T
Ql9QCiAgICBEMjQwOiA0MyA0OSAzMCA1MyA0MiA1MiA0NyA1MyA0OSA0RiAzMSA0NSA1OCA0NiA0
NyAxNCAgQ0kwU0JSR1NJTzFFWEZHLgogICAgRDI1MDogNDMgMDQgNEMgNDUgNDQgNTMgMDEgQTAg
MEMgOTMgNDIgNEMgNDUgNDQgMDEgNDQgIEMuTEVEUy4uLi5CTEVELkQKICAgIEQyNjA6IDQyIDQ3
IDRDIDAxIEExIDA2IDQ0IDQyIDQ3IDRDIDAwIEEwIDBDIDkzIDQyIDRDICBCR0wuLi5EQkdMLi4u
LkJMCiAgICBEMjcwOiA0NSA0NCAwMSA0MiA1NCA0RSA0QyAwMSBBMSAwNiA0MiA1NCA0RSA0QyAw
MCBBMCAgRUQuQlROTC4uLkJUTkwuLgogICAgRDI4MDogMEMgOTMgNDMgNEMgNDUgNDQgMDEgNDMg
NDMgNEQgNEMgMDEgQTEgMDYgNDMgNDMgIC4uQ0xFRC5DQ01MLi4uQ0MKICAgIEQyOTA6IDREIDRD
IDAwIDE0IDE1IDRDIDQ1IDQ0IDU3IDAxIDQ0IDQyIDQ3IDRDIDAwIDQyICBNTC4uLkxFRFcuREJH
TC5CCiAgICBEMkEwOiA1NCA0RSA0QyAwMCA0MyA0MyA0RCA0QyAwMCAxMCA0QyAwNCAyRiAwNiA1
RiA1MyAgVE5MLkNDTUwuLkwuLy5fUwogICAgRDJCMDogNDIgNUYgNTAgNDMgNDkgMzEgNDcgNTAg
NTAgNDIgNTUgNTAgMzAgMzAgNDQgNTAgIEJfUENJMUdQUEJVUDAwRFAKICAgIEQyQzA6IDMwIDMw
IDRDIDRFIDMwIDMwIDE0IDJGIDREIDU0IDQzIDRDIDA4IDA4IDVBIDQ2ICAwMExOMDAuL01UQ0wu
LlpGCiAgICBEMkQwOiA1NyA0NiAxMiAxRSAxMyAwQSA0RCAwQSA1NCAwQSA0MyAwQSA0QyAwQSAw
MiAwMSAgV0YuLi4uTS5ULkMuTC4uLgogICAgRDJFMDogMEEgRkYgMEEgRkYgMEEgRkYgMEEgRkYg
MDAgMDAgMDEgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAgIEQyRjA6IDAwIEE0
IDVBIDQ2IDU3IDQ2ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLlpGV0YKClNTRFQg
QCAweDAwMDAwMDAwMDAwMDAwMDAKICAgIDAwMDA6IDUzIDUzIDQ0IDU0IDQ4IDI0IDAwIDAwIDAy
IEE5IDQxIDREIDQ0IDAwIDAwIDAwICBTU0RUSCQuLi4uQU1ELi4uCiAgICAwMDEwOiA0NyA1MCA1
MCA1RiA1MCA0RCA0NSA1RiAwMSAwMCAwMCAwMCA0OSA0RSA1NCA0QyAgR1BQX1BNRV8uLi4uSU5U
TAogICAgMDAyMDogMzEgMDMgMjMgMjAgQTAgNDggNjAgMDAgMTUgNUMgNEQgMzAgMzEgMzcgMDgg
MDYgIDEuIyAuSGAuLlxNMDE3Li4KICAgIDAwMzA6IDE1IDVDIDREIDMwIDMxIDM4IDA4IDA3IDE1
IDVDIDREIDMxIDMxIDM1IDAzIDAwICAuXE0wMTguLi5cTTExNS4uCiAgICAwMDQwOiAxNSA1QyA0
RCAzMSAzMSAzNiAwRSAwMCAxNSA1QyA0RCAzMSAzMSAzNyAwRSAwMCAgLlxNMTE2Li4uXE0xMTcu
LgogICAgMDA1MDogMTUgNUMgNEQgMzEgMzEgMzggMEUgMDAgMTUgNUMgNEQgMzEgMzEgMzkgMEUg
MDAgIC5cTTExOC4uLlxNMTE5Li4KICAgIDAwNjA6IDE1IDVDIDREIDMxIDMyIDMwIDBFIDAwIDE1
IDVDIDREIDMwIDMzIDM3IDA2IDAwICAuXE0xMjAuLi5cTTAzNy4uCiAgICAwMDcwOiAxNSA1QyA0
RCAzMiAzMiAzNyAwNiAwMCAxNSA1QyA0RCAzMyAzMiAzOSAwNiAwMCAgLlxNMjI3Li4uXE0zMjku
LgogICAgMDA4MDogMTUgNUMgNEQgMzMgMzIgNDEgMDYgMDAgMTUgNUMgNEQgMzMgMzIgNDIgMDYg
MDAgIC5cTTMyQS4uLlxNMzJCLi4KICAgIDAwOTA6IDE1IDVDIDREIDMzIDMyIDQzIDA2IDAwIDE1
IDVDIDREIDMzIDMzIDMwIDA2IDAwICAuXE0zMkMuLi5cTTMzMC4uCiAgICAwMEEwOiAxNSA1QyA0
RCAzMCAzOCAzMiAwNSAwMCAxNSA1QyA0RCAzMCAzOCAzMyAwNSAwMCAgLlxNMDgyLi4uXE0wODMu
LgogICAgMDBCMDogMTUgNUMgNEQgMzAgMzggMzQgMDUgMDAgMTUgNUMgNEQgMzAgMzggMzUgMDUg
MDAgIC5cTTA4NC4uLlxNMDg1Li4KICAgIDAwQzA6IDE1IDVDIDREIDMyIDMyIDMxIDA1IDAwIDE1
IDVDIDREIDMwIDM4IDM2IDA1IDAwICAuXE0yMjEuLi5cTTA4Ni4uCiAgICAwMEQwOiAxNSA1QyA0
RCAzMiAzMiAzOSAwNSAwMCAxNSA1QyA0RCAzMiAzMyAzMSAwNSAwMCAgLlxNMjI5Li4uXE0yMzEu
LgogICAgMDBFMDogMTUgNUMgNEQgMzIgMzMgMzUgMDUgMDAgMTUgNUMgNEQgMzIgMzMgMzMgMDUg
MDAgIC5cTTIzNS4uLlxNMjMzLi4KICAgIDAwRjA6IDE1IDVDIDREIDMwIDM4IDM3IDA1IDAwIDE1
IDVDIDREIDMwIDM4IDM4IDA1IDAwICAuXE0wODcuLi5cTTA4OC4uCiAgICAwMTAwOiAxNSA1QyA0
RCAzMCAzOCAzOSAwNSAwMCAxNSA1QyA0RCAzMCAzOSAzMCAwNSAwMCAgLlxNMDg5Li4uXE0wOTAu
LgogICAgMDExMDogMTUgNUMgNEQgMzAgMzkgMzEgMDUgMDAgMTUgNUMgNEQgMzAgMzkgMzIgMDUg
MDAgIC5cTTA5MS4uLlxNMDkyLi4KICAgIDAxMjA6IDE1IDVDIDREIDMwIDM5IDMzIDA1IDAwIDE1
IDVDIDREIDMwIDM5IDM0IDA1IDAwICAuXE0wOTMuLi5cTTA5NC4uCiAgICAwMTMwOiAxNSA1QyA0
RCAzMCAzOSAzNSAwNSAwMCAxNSA1QyA0RCAzMCAzOSAzNiAwNSAwMCAgLlxNMDk1Li4uXE0wOTYu
LgogICAgMDE0MDogMTUgNUMgNEQgMzAgMzkgMzcgMDUgMDAgMTUgNUMgNEQgMzAgMzkgMzggMDUg
MDAgIC5cTTA5Ny4uLlxNMDk4Li4KICAgIDAxNTA6IDE1IDVDIDREIDMwIDM5IDM5IDA1IDAwIDE1
IDVDIDREIDMxIDMwIDMwIDA1IDAwICAuXE0wOTkuLi5cTTEwMC4uCiAgICAwMTYwOiAxNSA1QyA0
RCAzMSAzMCAzMSAwNSAwMCAxNSA1QyA0RCAzMSAzMCAzMiAwNSAwMCAgLlxNMTAxLi4uXE0xMDIu
LgogICAgMDE3MDogMTUgNUMgNEQgMzEgMzAgMzMgMDUgMDAgMTUgNUMgNEQgMzEgMzAgMzQgMDUg
MDAgIC5cTTEwMy4uLlxNMTA0Li4KICAgIDAxODA6IDE1IDVDIDREIDMxIDMwIDM1IDA1IDAwIDE1
IDVDIDREIDMxIDMwIDM2IDA1IDAwICAuXE0xMDUuLi5cTTEwNi4uCiAgICAwMTkwOiAxNSA1QyA0
RCAzMSAzMCAzNyAwNSAwMCAxNSA1QyA0RCAzMSAzMiAzOCAwNSAwMCAgLlxNMTA3Li4uXE0xMjgu
LgogICAgMDFBMDogMTUgNUMgNEQgMzEgMzAgMzggMDUgMDAgMTUgNUMgNEQgMzEgMzAgMzkgMDUg
MDAgIC5cTTEwOC4uLlxNMTA5Li4KICAgIDAxQjA6IDE1IDVDIDREIDMxIDMxIDMwIDA1IDAwIDE1
IDVDIDREIDMxIDMyIDMyIDA1IDAwICAuXE0xMTAuLi5cTTEyMi4uCiAgICAwMUMwOiAxNSA1QyA0
RCAzMSAzMyAzMSAwNSAwMCAxNSA1QyA0RCAzMSAzMyAzMiAwNSAwMCAgLlxNMTMxLi4uXE0xMzIu
LgogICAgMDFEMDogMTUgNUMgNEQgMzIgMzIgMzYgMDUgMDAgMTUgNUMgNEQgMzEgMzMgMzMgMDUg
MDAgIC5cTTIyNi4uLlxNMTMzLi4KICAgIDAxRTA6IDE1IDVDIDREIDMxIDMzIDM0IDA1IDAwIDE1
IDVDIDREIDMxIDMzIDM1IDA1IDAwICAuXE0xMzQuLi5cTTEzNS4uCiAgICAwMUYwOiAxNSA1QyA0
RCAzMSAzMyAzNiAwNSAwMCAxNSA1QyA0RCAzMiAzMiAzMCAwNSAwMCAgLlxNMTM2Li4uXE0yMjAu
LgogICAgMDIwMDogMTUgNUMgNEQgMzAgMzQgMzYgMDEgMDAgMTUgNUMgNEQgMzAgMzQgMzcgMDEg
MDAgIC5cTTA0Ni4uLlxNMDQ3Li4KICAgIDAyMTA6IDE1IDVDIDREIDMwIDM0IDM5IDA4IDAyIDE1
IDVDIDREIDMyIDM1IDMxIDA1IDAwICAuXE0wNDkuLi5cTTI1MS4uCiAgICAwMjIwOiAxNSA1QyA0
RCAzMyAzMSAzMCAwNSAwMCAxNSA1QyA0RCAzMyAzMSA0MyAwNSAwMCAgLlxNMzEwLi4uXE0zMUMu
LgogICAgMDIzMDogMTUgNUMgNEQgMzMgMzIgMzAgMDUgMDAgMTUgNUMgNEQgMzMgMzIgMzEgMDUg
MDAgIC5cTTMyMC4uLlxNMzIxLi4KICAgIDAyNDA6IDE1IDVDIDREIDMzIDMyIDMyIDA1IDAwIDE1
IDVDIDREIDMzIDMyIDMzIDA1IDAwICAuXE0zMjIuLi5cTTMyMy4uCiAgICAwMjUwOiAxNSA1QyA0
RCAzMyAzMiAzNCAwNSAwMCAxNSA1QyA0RCAzMyAzMiAzNSAwNSAwMCAgLlxNMzI0Li4uXE0zMjUu
LgogICAgMDI2MDogMTUgNUMgNEQgMzMgMzIgMzYgMDUgMDAgMTUgNUMgNEQgMzMgMzIgMzcgMDUg
MDAgIC5cTTMyNi4uLlxNMzI3Li4KICAgIDAyNzA6IDE1IDVDIDREIDMzIDMyIDM4IDA1IDAwIDE1
IDVDIDREIDMyIDM4IDMwIDA1IDAwICAuXE0zMjguLi5cTTI4MC4uCiAgICAwMjgwOiAxNSA1QyA0
RCAzMiAzOSAzMCAwNSAwMCAxNSA1QyA0RCAzMyAzNyAzOCAwNSAwMCAgLlxNMjkwLi4uXE0zNzgu
LgogICAgMDI5MDogMTUgNUMgNEQgMzMgMzcgMzkgMDUgMDAgMTUgNUMgNEQgMzMgMzggMzAgMDUg
MDAgIC5cTTM3OS4uLlxNMzgwLi4KICAgIDAyQTA6IDE1IDVDIDREIDMzIDM4IDMxIDA1IDAwIDE1
IDVDIDREIDMzIDM4IDMyIDA1IDAwICAuXE0zODEuLi5cTTM4Mi4uCiAgICAwMkIwOiAxNSA1QyA0
RCAzMyAzOCAzMyAwNSAwMCAxNSA1QyA0RCAzMyAzOCAzNCAwNSAwMCAgLlxNMzgzLi4uXE0zODQu
LgogICAgMDJDMDogMTUgNUMgNEQgMzMgMzggMzUgMDUgMDAgMTUgNUMgNEQgMzMgMzggMzYgMDUg
MDAgIC5cTTM4NS4uLlxNMzg2Li4KICAgIDAyRDA6IDE1IDVDIDREIDMzIDM4IDM3IDA1IDAwIDE1
IDVDIDREIDMzIDM4IDM4IDA1IDAwICAuXE0zODcuLi5cTTM4OC4uCiAgICAwMkUwOiAxNSA1QyA0
RCAzMyAzOCAzOSAwNSAwMCAxNSA1QyA0RCAzMyAzOSAzMCAwNSAwMCAgLlxNMzg5Li4uXE0zOTAu
LgogICAgMDJGMDogMTUgNUMgNEQgMzMgMzkgMzEgMDUgMDAgMTUgNUMgNEQgMzMgMzkgMzIgMDUg
MDAgIC5cTTM5MS4uLlxNMzkyLi4KICAgIDAzMDA6IDE1IDVDIDREIDMzIDMzIDMxIDA1IDAwIDE1
IDVDIDREIDM2IDMyIDMwIDA1IDAwICAuXE0zMzEuLi5cTTYyMC4uCiAgICAwMzEwOiAxNSA1QyA0
RCAzNCAzMCAzNCAwMyAwMCAxNSA1QyA0RCAzNCAzMCAzOCAwOSAwMCAgLlxNNDA0Li4uXE00MDgu
LgogICAgMDMyMDogMTUgNUMgNEQgMzQgMzEgMzQgMDUgMDAgMTUgNUMgNEQgMzQgMzQgMzQgMDUg
MDAgIC5cTTQxNC4uLlxNNDQ0Li4KICAgIDAzMzA6IDE1IDVDIDREIDM0IDM1IDMzIDA1IDAwIDE1
IDVDIDREIDM0IDM1IDM0IDA1IDAwICAuXE00NTMuLi5cTTQ1NC4uCiAgICAwMzQwOiAxNSA1QyA0
RCAzNCAzNSAzNSAwNSAwMCAxNSA1QyA0RCAzNCAzNSAzNiAwNSAwMCAgLlxNNDU1Li4uXE00NTYu
LgogICAgMDM1MDogMTUgNUMgNEQgMzQgMzUgMzcgMDUgMDAgMTUgNUMgNEQgMzQgMzYgMzAgMDgg
MDcgIC5cTTQ1Ny4uLlxNNDYwLi4KICAgIDAzNjA6IDE1IDVDIDREIDM0IDM0IDM5IDA1IDAwIDE1
IDVDIDREIDM0IDQzIDMwIDA1IDAwICAuXE00NDkuLi5cTTRDMC4uCiAgICAwMzcwOiAxNSA1QyA0
RCAzMiAzMyA0MSAwNSAwMCAxNSA1QyA0RCAzNCA0NiAzMCAwNSAwMCAgLlxNMjNBLi4uXE00RjAu
LgogICAgMDM4MDogMTUgNUMgNEQgMzYgMzEgMzAgMDUgMDAgMTUgNUMgNEQgMzIgMzkgNDEgMDUg
MDAgIC5cTTYxMC4uLlxNMjlBLi4KICAgIDAzOTA6IDE1IDVDIDREIDM2IDMzIDMxIDA1IDAwIDE1
IDVDIDREIDM2IDM1IDMyIDA1IDAwICAuXE02MzEuLi5cTTY1Mi4uCiAgICAwM0EwOiAxNSA1QyA0
RCAzMCAzNSAzMCAwNiAwMCAxNSA1QyA0RCAzMCAzNSAzMSAwNiAwMCAgLlxNMDUwLi4uXE0wNTEu
LgogICAgMDNCMDogMTUgNUMgNEQgMzAgMzUgMzIgMDYgMDAgMTUgNUMgNEQgMzAgMzUgMzMgMDYg
MDAgIC5cTTA1Mi4uLlxNMDUzLi4KICAgIDAzQzA6IDE1IDVDIDREIDMwIDM1IDM0IDA2IDAwIDE1
IDVDIDREIDMwIDM1IDM1IDA2IDAwICAuXE0wNTQuLi5cTTA1NS4uCiAgICAwM0QwOiAxNSA1QyA0
RCAzMCAzNSAzNiAwNiAwMCAxNSA1QyA0RCAzMCAzNSAzNyAwNiAwMCAgLlxNMDU2Li4uXE0wNTcu
LgogICAgMDNFMDogMTUgNUMgNEQgMzAgMzUgMzggMDYgMDAgMTUgNUMgNEQgMzAgMzUgMzkgMDYg
MDAgIC5cTTA1OC4uLlxNMDU5Li4KICAgIDAzRjA6IDE1IDVDIDREIDMwIDM2IDMyIDA2IDAwIDE1
IDVDIDREIDMwIDM2IDM4IDA2IDAwICAuXE0wNjIuLi5cTTA2OC4uCiAgICAwNDAwOiAxNSA1QyA0
RCAzMCAzNiAzOSAwNiAwMCAxNSA1QyA0RCAzMCAzNyAzMCAwNiAwMCAgLlxNMDY5Li4uXE0wNzAu
LgogICAgMDQxMDogMTUgNUMgNEQgMzAgMzcgMzEgMDYgMDAgMTUgNUMgNEQgMzAgMzcgMzIgMDYg
MDAgIC5cTTA3MS4uLlxNMDcyLi4KICAgIDA0MjA6IDE1IDVDIDREIDMwIDM3IDM0IDA2IDAwIDE1
IDVDIDREIDMwIDM3IDM1IDA2IDAwICAuXE0wNzQuLi5cTTA3NS4uCiAgICAwNDMwOiAxNSA1QyA0
RCAzMCAzNyAzNiAwNiAwMCAxNSA1QyA0RCAzMCAzNyAzNyAwNiAwMCAgLlxNMDc2Li4uXE0wNzcu
LgogICAgMDQ0MDogMTUgNUMgNEQgMzAgMzcgMzggMDYgMDAgMTUgNUMgNEQgMzAgMzcgMzkgMDYg
MDAgIC5cTTA3OC4uLlxNMDc5Li4KICAgIDA0NTA6IDE1IDVDIDREIDMwIDM4IDMwIDA2IDAwIDE1
IDVDIDREIDMwIDM4IDMxIDA2IDAwICAuXE0wODAuLi5cTTA4MS4uCiAgICAwNDYwOiAxNSA1QyA0
RCAzMSAzMiAzNyAwNiAwMCAxNSA1QyA1RiA0MiA0MiA0RSAwMSAwMCAgLlxNMTI3Li4uXF9CQk4u
LgogICAgMDQ3MDogMTUgNUMgMkUgNUYgNTMgNDIgNUYgNTAgNDMgNDkgMzIgMDYgMDAgMTUgNUMg
MkYgIC5cLl9TQl9QQ0kyLi4uXC8KICAgIDA0ODA6IDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMy
IDQ3IDUwIDUwIDMwIDA2IDAwIDE1ICAuX1NCX1BDSTJHUFAwLi4uCiAgICAwNDkwOiA1QyAyRiAw
MyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMiA0NyA1MCA1MCAzMSAwNiAgXC8uX1NCX1BDSTJHUFAx
LgogICAgMDRBMDogMDAgMTUgNUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAgNDMgNDkgMzIgNDcgNTAg
NTAgIC4uXC8uX1NCX1BDSTJHUFAKICAgIDA0QjA6IDMyIDA2IDAwIDE1IDVDIDJGIDAzIDVGIDUz
IDQyIDVGIDUwIDQzIDQ5IDMyIDQ3ICAyLi4uXC8uX1NCX1BDSTJHCiAgICAwNEMwOiA1MCA1MCAz
MyAwNiAwMCAxNSA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAgUFAzLi4uXC8uX1NCX1BD
SQogICAgMDREMDogMzIgNDcgNTAgNTAgMzQgMDYgMDAgMTUgNUMgMkYgMDMgNUYgNTMgNDIgNUYg
NTAgIDJHUFA0Li4uXC8uX1NCX1AKICAgIDA0RTA6IDQzIDQ5IDMyIDQ3IDUwIDUwIDM1IDA2IDAw
IDE1IDVDIDJGIDAzIDVGIDUzIDQyICBDSTJHUFA1Li4uXC8uX1NCCiAgICAwNEYwOiA1RiA1MCA0
MyA0OSAzMiA0NyA1MCA1MCAzNiAwNiAwMCAxNSA1QyAyRiAwMyA1RiAgX1BDSTJHUFA2Li4uXC8u
XwogICAgMDUwMDogNTMgNDIgNUYgNTAgNDMgNDkgMzIgNDcgNTAgNTAgMzcgMDYgMDAgMTUgNUMg
MkYgIFNCX1BDSTJHUFA3Li4uXC8KICAgIDA1MTA6IDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMy
IDQ3IDUwIDUwIDM4IDA2IDAwIDE1ICAuX1NCX1BDSTJHUFA4Li4uCiAgICAwNTIwOiA1QyAyRiAw
MyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMiA0NyA1MCA1MCAzOSAwNiAgXC8uX1NCX1BDSTJHUFA5
LgogICAgMDUzMDogMDAgMTUgNUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAgNDMgNDkgMzIgNDcgNTAg
NTAgIC4uXC8uX1NCX1BDSTJHUFAKICAgIDA1NDA6IDQxIDA2IDAwIDE1IDVDIDJGIDAzIDVGIDUz
IDQyIDVGIDUwIDQzIDQ5IDMyIDQ3ICBBLi4uXC8uX1NCX1BDSTJHCiAgICAwNTUwOiA1MCA1MCA0
MiAwNiAwMCAxNSA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAgUFBCLi4uXC8uX1NCX1BD
SQogICAgMDU2MDogMzIgNDcgNTAgNTAgNDMgMDYgMDAgMTUgNUMgMkYgMDMgNUYgNTMgNDIgNUYg
NTAgIDJHUFBDLi4uXC8uX1NCX1AKICAgIDA1NzA6IDQzIDQ5IDMyIDQ3IDUwIDUwIDQ0IDA2IDAw
IDE1IDVDIDJGIDAzIDVGIDUzIDQyICBDSTJHUFBELi4uXC8uX1NCCiAgICAwNTgwOiA1RiA1MCA0
MyA0OSAzMiA0NyA1MCA1MCA0NSAwNiAwMCAxNSA1QyAyRiAwMyA1RiAgX1BDSTJHUFBFLi4uXC8u
XwogICAgMDU5MDogNTMgNDIgNUYgNTAgNDMgNDkgMzIgNDcgNTAgNTAgNDYgMDYgMDAgMTUgNUMg
MkYgIFNCX1BDSTJHUFBGLi4uXC8KICAgIDA1QTA6IDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMy
IDQ3IDUwIDUwIDQ3IDA2IDAwIDE1ICAuX1NCX1BDSTJHUFBHLi4uCiAgICAwNUIwOiA1QyAyRiAw
MyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMiA0NyA1MCA1MCA0OCAwNiAgXC8uX1NCX1BDSTJHUFBI
LgogICAgMDVDMDogMDAgMTUgNUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAgNDMgNDkgMzIgNDcgNTAg
MzEgIC4uXC8uX1NCX1BDSTJHUDEKICAgIDA1RDA6IDM1IDA2IDAwIDE1IDVDIDJGIDAzIDVGIDUz
IDQyIDVGIDUwIDQzIDQ5IDMyIDQ3ICA1Li4uXC8uX1NCX1BDSTJHCiAgICAwNUUwOiA1MCAzMiAz
NSAwNiAwMCAxNSA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAgUDI1Li4uXC8uX1NCX1BD
SQogICAgMDVGMDogMzIgNDcgNTAgMzMgMzUgMDYgMDAgMTUgNUMgMkYgMDMgNUYgNTMgNDIgNUYg
NTAgIDJHUDM1Li4uXC8uX1NCX1AKICAgIDA2MDA6IDQzIDQ5IDMyIDQ3IDUwIDM0IDM1IDA2IDAw
IDE1IDVDIDJGIDAzIDVGIDUzIDQyICBDSTJHUDQ1Li4uXC8uX1NCCiAgICAwNjEwOiA1RiA1MCA0
MyA0OSAzMiA0NyA1MCAzMSAzNyAwNiAwMCAxNSA1QyAyRiAwMyA1RiAgX1BDSTJHUDE3Li4uXC8u
XwogICAgMDYyMDogNTMgNDIgNUYgNTAgNDMgNDkgMzIgNDcgNTAgMzIgMzcgMDYgMDAgMTAgOEEg
RTEgIFNCX1BDSTJHUDI3Li4uLi4KICAgIDA2MzA6IDAxIDVDIDJFIDVGIDUzIDQyIDVGIDUwIDQz
IDQ5IDMyIDA4IDQ1IDU0IDUwIDMwICAuXC5fU0JfUENJMi5FVFAwCiAgICAwNjQwOiAwQSA1NSAw
OCA0NSA1NCA1MCAzMSAwQSA1NSAwOCA0NSA1NCA1MCAzMiAwQSA1NSAgLlUuRVRQMS5VLkVUUDIu
VQogICAgMDY1MDogMDggNDUgNTQgNTAgMzMgMEEgNTUgMDggNDUgNTQgNTAgMzQgMEEgNTUgMDgg
NDUgIC5FVFAzLlUuRVRQNC5VLkUKICAgIDA2NjA6IDU0IDUwIDM1IDBBIDU1IDA4IDQ1IDU0IDUw
IDM2IDBBIDU1IDA4IDQ1IDU0IDUwICBUUDUuVS5FVFA2LlUuRVRQCiAgICAwNjcwOiAzNyAwQSA1
NSAwOCA0NSA1NCA1MCAzOCAwQSA1NSAwOCA0NSA1NCA1MCAzOSAwQSAgNy5VLkVUUDguVS5FVFA5
LgogICAgMDY4MDogNTUgMDggNDUgNTQgNTAgNDEgMEEgNTUgMDggNDUgNTQgNTAgNDIgMEEgNTUg
MDggIFUuRVRQQS5VLkVUUEIuVS4KICAgIDA2OTA6IDQ1IDU0IDUwIDQzIDBBIDU1IDA4IDQ1IDU0
IDUwIDQ0IDBBIDU1IDA4IDQ1IDU0ICBFVFBDLlUuRVRQRC5VLkVUCiAgICAwNkEwOiA1MCA0NSAw
QSA1NSAwOCA0NSA1NCA1MCA0NiAwQSA1NSAwOCA0NSA1NCA1MCA0NyAgUEUuVS5FVFBGLlUuRVRQ
RwogICAgMDZCMDogMEEgNTUgMDggNDUgNTQgNTAgNDggMEEgNTUgMDggNDUgNTQgMzEgMzUgMEEg
NTUgIC5VLkVUUEguVS5FVDE1LlUKICAgIDA2QzA6IDA4IDQ1IDU0IDMyIDM1IDBBIDU1IDA4IDQ1
IDU0IDMzIDM1IDBBIDU1IDA4IDQ1ICAuRVQyNS5VLkVUMzUuVS5FCiAgICAwNkQwOiA1NCAzNCAz
NSAwQSA1NSAwOCA0NSA1NCAzMSAzNyAwQSA1NSAwOCA0NSA1NCAzMiAgVDQ1LlUuRVQxNy5VLkVU
MgogICAgMDZFMDogMzcgMEEgNTUgMTQgODQgRDYgMDEgNTAgNTAgNEQgNDUgMDAgNEQgMzQgMzYg
MzAgIDcuVS4uLi5QUE1FLk00NjAKICAgIDA2RjA6IDBEIDIwIDIwIDRGIDQ1IDREIDJEIDQxIDUz
IDRDIDJEIDVDIDVGIDUzIDQyIDJFICAuICBPRU0tQVNMLVxfU0IuCiAgICAwNzAwOiA1MCA0MyA0
OSAzMiAyRSA1MCA1MCA0RCA0NSAwQSAwMCAwMCAwMCAwMCAwMCAwMCAgUENJMi5QUE1FLi4uLi4u
LgogICAgMDcxMDogMDAgQTAgNEYgMTggOTIgOTMgNUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAgNDMg
NDkgIC4uTy4uLlwvLl9TQl9QQ0kKICAgIDA3MjA6IDMyIDQ1IDU0IDUwIDMwIDBBIEZGIDcwIDdB
IDREIDMwIDMxIDM3IDVGIDQyIDQyICAyRVRQMC4ucHpNMDE3X0JCCiAgICAwNzMwOiA0RSAwMSAw
MSAwQSA3OCAwMCAwQSAxOCAwQSAxMCAwMCA1QyAyRiAwMyA1RiA1MyAgTi4uLnguLi4uLi5cLy5f
UwogICAgMDc0MDogNDIgNUYgNTAgNDMgNDkgMzIgNDUgNTQgNTAgMzAgQTAgNDYgMTUgOTEgOTMg
NUMgIEJfUENJMkVUUDAuRi4uLlwKICAgIDA3NTA6IDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5
IDMyIDQ1IDU0IDUwIDMwIDAxIDkzICAvLl9TQl9QQ0kyRVRQMC4uCiAgICAwNzYwOiA1QyAyRiAw
MyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMiA0NSA1NCA1MCAzMCAwQSAgXC8uX1NCX1BDSTJFVFAw
LgogICAgMDc3MDogMDMgQTAgNEYgMTIgNUIgMTIgNUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAgNDMg
NDkgIC4uTy5bLlwvLl9TQl9QQ0kKICAgIDA3ODA6IDMyIDQ3IDUwIDUwIDMwIDAwIEEwIDQ5IDA2
IDkyIDkzIDREIDM2IDMyIDMwIDAwICAyR1BQMC4uSS4uLk02MjAuCiAgICAwNzkwOiBBMCA0RiAw
NSA5MyA0RCAzMCAzNCAzOSA0RCAzNiAzMiAzMCAwQSAxMCAwMSBBMCAgLk8uLk0wNDlNNjIwLi4u
LgogICAgMDdBMDogNDAgMDUgOTMgN0IgNEQgMzAgMzQgMzkgNEQgMzYgMzIgMzAgMEEgNTIgMEEg
MDIgIEAuLntNMDQ5TTYyMC5SLi4KICAgIDA3QjA6IDAwIDAwIDREIDM0IDM2IDMwIDBEIDIwIDIw
IDIwIDIwIDRFIDZGIDc0IDY5IDY2ICAuLk00NjAuICAgIE5vdGlmCiAgICAwN0MwOiA3OSAyMCAy
OCA1QyA1RiA1MyA0MiAyRSA1MCA0MyA0OSAzMiAyRSA0NyA1MCA1MCAgeSAoXF9TQi5QQ0kyLkdQ
UAogICAgMDdEMDogMzAgMkMgMjAgMzAgNzggMzAgMjkgMEEgMDAgMDAgMDAgMDAgMDAgMDAgMDAg
ODYgIDAsIDB4MCkuLi4uLi4uLi4KICAgIDA3RTA6IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQz
IDQ5IDMyIDQ3IDUwIDUwIDMwIDAwICBcLy5fU0JfUENJMkdQUDAuCiAgICAwN0YwOiA0RCAzNCAz
NiAzMCAwRCAyMCAyMCAyMCAyMCA0RSA2RiA3NCA2OSA2NiA3OSAyMCAgTTQ2MC4gICAgTm90aWZ5
IAogICAgMDgwMDogMjggNUMgNUYgNTMgNDIgMkUgNTAgNDMgNDkgMzIgMkUgNDcgNTAgNTAgMzAg
MkMgIChcX1NCLlBDSTIuR1BQMCwKICAgIDA4MTA6IDIwIDMwIDc4IDMyIDI5IDBBIDAwIDAwIDAw
IDAwIDAwIDAwIDAwIDg2IDVDIDJGICAgMHgyKS4uLi4uLi4uLlwvCiAgICAwODIwOiAwMyA1RiA1
MyA0MiA1RiA1MCA0MyA0OSAzMiA0NyA1MCA1MCAzMCAwQSAwMiA1QiAgLl9TQl9QQ0kyR1BQMC4u
WwogICAgMDgzMDogMjIgMEEgNjQgNzAgNEQgMzAgMzEgMzcgNUYgNDIgNDIgNEUgMDEgMDEgMEEg
NzggICIuZHBNMDE3X0JCTi4uLngKICAgIDA4NDA6IDAwIDBBIDIwIDYwIEEwIDRDIDA1IDkyIDkz
IDdCIDYwIDBDIDAwIDAwIDAzIDAwICAuLiBgLkwuLi57YC4uLi4uCiAgICAwODUwOiAwMCAwMCA0
RCAzMCAzMSAzOCA1RiA0MiA0MiA0RSAwMSAwMSAwQSA3OCAwMCAwQSAgLi5NMDE4X0JCTi4uLngu
LgogICAgMDg2MDogMjAgNjAgNzAgNEQgMzAgMzEgMzcgNUYgNDIgNDIgNEUgMDEgMDEgMEEgNzgg
MDAgICBgcE0wMTdfQkJOLi4ueC4KICAgIDA4NzA6IDBBIDIwIDYwIEEwIDJEIDkyIDkzIDdCIDYw
IDBDIDAwIDAwIDAzIDAwIDAwIDAwICAuIGAuLS4ue2AuLi4uLi4uCiAgICAwODgwOiA0RCAzMCAz
MSAzOCA1RiA0MiA0MiA0RSAwMSAwMSAwQSA3OCAwMCAwQSAyMCA2MCAgTTAxOF9CQk4uLi54Li4g
YAogICAgMDg5MDogNzAgNEQgMzAgMzEgMzcgNUYgNDIgNDIgNEUgMDEgMDEgMEEgNzggMDAgMEEg
MjAgIHBNMDE3X0JCTi4uLnguLiAKICAgIDA4QTA6IDYwIEEwIDRCIDEyIDkyIDkzIDVDIDJGIDAz
IDVGIDUzIDQyIDVGIDUwIDQzIDQ5ICBgLksuLi5cLy5fU0JfUENJCiAgICAwOEIwOiAzMiA0NSA1
NCA1MCAzMSAwQSBGRiA3MCA3QSA0RCAzMCAzMSAzNyA1RiA0MiA0MiAgMkVUUDEuLnB6TTAxN19C
QgogICAgMDhDMDogNEUgMDEgMEEgMDIgMEEgNzggMDAgMEEgMTggMEEgMTAgMDAgNUMgMkYgMDMg
NUYgIE4uLi4ueC4uLi4uLlwvLl8KICAgIDA4RDA6IDUzIDQyIDVGIDUwIDQzIDQ5IDMyIDQ1IDU0
IDUwIDMxIEEwIDQxIDBGIDkxIDkzICBTQl9QQ0kyRVRQMS5BLi4uCiAgICAwOEUwOiA1QyAyRiAw
MyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMiA0NSA1NCA1MCAzMSAwMSAgXC8uX1NCX1BDSTJFVFAx
LgogICAgMDhGMDogOTMgNUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAgNDMgNDkgMzIgNDUgNTQgNTAg
MzEgIC5cLy5fU0JfUENJMkVUUDEKICAgIDA5MDA6IDBBIDAzIEEwIDRBIDBDIDVCIDEyIDVDIDJG
IDAzIDVGIDUzIDQyIDVGIDUwIDQzICAuLi5KLlsuXC8uX1NCX1BDCiAgICAwOTEwOiA0OSAzMiA0
NyA1MCA1MCAzMSAwMCA0RCAzNCAzNiAzMCAwRCAyMCAyMCAyMCAyMCAgSTJHUFAxLk00NjAuICAg
IAogICAgMDkyMDogNEUgNkYgNzQgNjkgNjYgNzkgMjAgMjggNUMgNUYgNTMgNDIgMkUgNTAgNDMg
NDkgIE5vdGlmeSAoXF9TQi5QQ0kKICAgIDA5MzA6IDMyIDJFIDQ3IDUwIDUwIDMxIDJDIDIwIDMw
IDc4IDMyIDI5IDBBIDAwIDAwIDAwICAyLkdQUDEsIDB4MikuLi4uCiAgICAwOTQwOiAwMCAwMCAw
MCAwMCA4NiA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMiAgLi4uLi5cLy5fU0JfUENJ
MgogICAgMDk1MDogNDcgNTAgNTAgMzEgMEEgMDIgNUIgMjIgMEEgNjQgNzAgNEQgMzAgMzEgMzcg
NUYgIEdQUDEuLlsiLmRwTTAxN18KICAgIDA5NjA6IDQyIDQyIDRFIDAxIDBBIDAyIDBBIDc4IDAw
IDBBIDIwIDYwIEEwIDQwIDA2IDkyICBCQk4uLi4ueC4uIGAuQC4uCiAgICAwOTcwOiA5MyA3QiA2
MCAwQyAwMCAwMCAwMyAwMCAwMCAwMCA0RCAzMCAzMSAzOCA1RiA0MiAgLntgLi4uLi4uLk0wMThf
QgogICAgMDk4MDogNDIgNEUgMDEgMEEgMDIgMEEgNzggMDAgMEEgMjAgNjAgNzAgNEQgMzAgMzEg
MzcgIEJOLi4uLnguLiBgcE0wMTcKICAgIDA5OTA6IDVGIDQyIDQyIDRFIDAxIDBBIDAyIDBBIDc4
IDAwIDBBIDIwIDYwIEEwIDJGIDkyICBfQkJOLi4uLnguLiBgLi8uCiAgICAwOUEwOiA5MyA3QiA2
MCAwQyAwMCAwMCAwMyAwMCAwMCAwMCA0RCAzMCAzMSAzOCA1RiA0MiAgLntgLi4uLi4uLk0wMThf
QgogICAgMDlCMDogNDIgNEUgMDEgMEEgMDIgMEEgNzggMDAgMEEgMjAgNjAgNzAgNEQgMzAgMzEg
MzcgIEJOLi4uLnguLiBgcE0wMTcKICAgIDA5QzA6IDVGIDQyIDQyIDRFIDAxIDBBIDAyIDBBIDc4
IDAwIDBBIDIwIDYwIEEwIDRCIDEyICBfQkJOLi4uLnguLiBgLksuCiAgICAwOUQwOiA5MiA5MyA1
QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMiA0NSA1NCA1MCAgLi5cLy5fU0JfUENJMkVU
UAogICAgMDlFMDogMzIgMEEgRkYgNzAgN0EgNEQgMzAgMzEgMzcgNUYgNDIgNDIgNEUgMDEgMEEg
MDMgIDIuLnB6TTAxN19CQk4uLi4KICAgIDA5RjA6IDBBIDc4IDAwIDBBIDE4IDBBIDEwIDAwIDVD
IDJGIDAzIDVGIDUzIDQyIDVGIDUwICAueC4uLi4uLlwvLl9TQl9QCiAgICAwQTAwOiA0MyA0OSAz
MiA0NSA1NCA1MCAzMiBBMCA0MSAwRiA5MSA5MyA1QyAyRiAwMyA1RiAgQ0kyRVRQMi5BLi4uXC8u
XwogICAgMEExMDogNTMgNDIgNUYgNTAgNDMgNDkgMzIgNDUgNTQgNTAgMzIgMDEgOTMgNUMgMkYg
MDMgIFNCX1BDSTJFVFAyLi5cLy4KICAgIDBBMjA6IDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMyIDQ1
IDU0IDUwIDMyIDBBIDAzIEEwIDRBICBfU0JfUENJMkVUUDIuLi5KCiAgICAwQTMwOiAwQyA1QiAx
MiA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMiA0NyA1MCAgLlsuXC8uX1NCX1BDSTJH
UAogICAgMEE0MDogNTAgMzIgMDAgNEQgMzQgMzYgMzAgMEQgMjAgMjAgMjAgMjAgNEUgNkYgNzQg
NjkgIFAyLk00NjAuICAgIE5vdGkKICAgIDBBNTA6IDY2IDc5IDIwIDI4IDVDIDVGIDUzIDQyIDJF
IDUwIDQzIDQ5IDMyIDJFIDQ3IDUwICBmeSAoXF9TQi5QQ0kyLkdQCiAgICAwQTYwOiA1MCAzMiAy
QyAyMCAzMCA3OCAzMiAyOSAwQSAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgUDIsIDB4MikuLi4uLi4u
LgogICAgMEE3MDogODYgNUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAgNDMgNDkgMzIgNDcgNTAgNTAg
MzIgIC5cLy5fU0JfUENJMkdQUDIKICAgIDBBODA6IDBBIDAyIDVCIDIyIDBBIDY0IDcwIDREIDMw
IDMxIDM3IDVGIDQyIDQyIDRFIDAxICAuLlsiLmRwTTAxN19CQk4uCiAgICAwQTkwOiAwQSAwMyAw
QSA3OCAwMCAwQSAyMCA2MCBBMCA0MCAwNiA5MiA5MyA3QiA2MCAwQyAgLi4ueC4uIGAuQC4uLntg
LgogICAgMEFBMDogMDAgMDAgMDMgMDAgMDAgMDAgNEQgMzAgMzEgMzggNUYgNDIgNDIgNEUgMDEg
MEEgIC4uLi4uLk0wMThfQkJOLi4KICAgIDBBQjA6IDAzIDBBIDc4IDAwIDBBIDIwIDYwIDcwIDRE
IDMwIDMxIDM3IDVGIDQyIDQyIDRFICAuLnguLiBgcE0wMTdfQkJOCiAgICAwQUMwOiAwMSAwQSAw
MyAwQSA3OCAwMCAwQSAyMCA2MCBBMCAyRiA5MiA5MyA3QiA2MCAwQyAgLi4uLnguLiBgLi8uLntg
LgogICAgMEFEMDogMDAgMDAgMDMgMDAgMDAgMDAgNEQgMzAgMzEgMzggNUYgNDIgNDIgNEUgMDEg
MEEgIC4uLi4uLk0wMThfQkJOLi4KICAgIDBBRTA6IDAzIDBBIDc4IDAwIDBBIDIwIDYwIDcwIDRE
IDMwIDMxIDM3IDVGIDQyIDQyIDRFICAuLnguLiBgcE0wMTdfQkJOCiAgICAwQUYwOiAwMSAwQSAw
MyAwQSA3OCAwMCAwQSAyMCA2MCBBMCA0QiAxMiA5MiA5MyA1QyAyRiAgLi4uLnguLiBgLksuLi5c
LwogICAgMEIwMDogMDMgNUYgNTMgNDIgNUYgNTAgNDMgNDkgMzIgNDUgNTQgNTAgMzMgMEEgRkYg
NzAgIC5fU0JfUENJMkVUUDMuLnAKICAgIDBCMTA6IDdBIDREIDMwIDMxIDM3IDVGIDQyIDQyIDRF
IDAxIDBBIDA0IDBBIDc4IDAwIDBBICB6TTAxN19CQk4uLi4ueC4uCiAgICAwQjIwOiAxOCAwQSAx
MCAwMCA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMiA0NSAgLi4uLlwvLl9TQl9QQ0ky
RQogICAgMEIzMDogNTQgNTAgMzMgQTAgNDEgMEYgOTEgOTMgNUMgMkYgMDMgNUYgNTMgNDIgNUYg
NTAgIFRQMy5BLi4uXC8uX1NCX1AKICAgIDBCNDA6IDQzIDQ5IDMyIDQ1IDU0IDUwIDMzIDAxIDkz
IDVDIDJGIDAzIDVGIDUzIDQyIDVGICBDSTJFVFAzLi5cLy5fU0JfCiAgICAwQjUwOiA1MCA0MyA0
OSAzMiA0NSA1NCA1MCAzMyAwQSAwMyBBMCA0QSAwQyA1QiAxMiA1QyAgUENJMkVUUDMuLi5KLlsu
XAogICAgMEI2MDogMkYgMDMgNUYgNTMgNDIgNUYgNTAgNDMgNDkgMzIgNDcgNTAgNTAgMzMgMDAg
NEQgIC8uX1NCX1BDSTJHUFAzLk0KICAgIDBCNzA6IDM0IDM2IDMwIDBEIDIwIDIwIDIwIDIwIDRF
IDZGIDc0IDY5IDY2IDc5IDIwIDI4ICA0NjAuICAgIE5vdGlmeSAoCiAgICAwQjgwOiA1QyA1RiA1
MyA0MiAyRSA1MCA0MyA0OSAzMiAyRSA0NyA1MCA1MCAzMyAyQyAyMCAgXF9TQi5QQ0kyLkdQUDMs
IAogICAgMEI5MDogMzAgNzggMzIgMjkgMEEgMDAgMDAgMDAgMDAgMDAgMDAgMDAgODYgNUMgMkYg
MDMgIDB4MikuLi4uLi4uLi5cLy4KICAgIDBCQTA6IDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMyIDQ3
IDUwIDUwIDMzIDBBIDAyIDVCIDIyICBfU0JfUENJMkdQUDMuLlsiCiAgICAwQkIwOiAwQSA2NCA3
MCA0RCAzMCAzMSAzNyA1RiA0MiA0MiA0RSAwMSAwQSAwNCAwQSA3OCAgLmRwTTAxN19CQk4uLi4u
eAogICAgMEJDMDogMDAgMEEgMjAgNjAgQTAgNDAgMDYgOTIgOTMgN0IgNjAgMEMgMDAgMDAgMDMg
MDAgIC4uIGAuQC4uLntgLi4uLi4KICAgIDBCRDA6IDAwIDAwIDREIDMwIDMxIDM4IDVGIDQyIDQy
IDRFIDAxIDBBIDA0IDBBIDc4IDAwICAuLk0wMThfQkJOLi4uLnguCiAgICAwQkUwOiAwQSAyMCA2
MCA3MCA0RCAzMCAzMSAzNyA1RiA0MiA0MiA0RSAwMSAwQSAwNCAwQSAgLiBgcE0wMTdfQkJOLi4u
LgogICAgMEJGMDogNzggMDAgMEEgMjAgNjAgQTAgMkYgOTIgOTMgN0IgNjAgMEMgMDAgMDAgMDMg
MDAgIHguLiBgLi8uLntgLi4uLi4KICAgIDBDMDA6IDAwIDAwIDREIDMwIDMxIDM4IDVGIDQyIDQy
IDRFIDAxIDBBIDA0IDBBIDc4IDAwICAuLk0wMThfQkJOLi4uLnguCiAgICAwQzEwOiAwQSAyMCA2
MCA3MCA0RCAzMCAzMSAzNyA1RiA0MiA0MiA0RSAwMSAwQSAwNCAwQSAgLiBgcE0wMTdfQkJOLi4u
LgogICAgMEMyMDogNzggMDAgMEEgMjAgNjAgQTAgNEIgMTIgOTIgOTMgNUMgMkYgMDMgNUYgNTMg
NDIgIHguLiBgLksuLi5cLy5fU0IKICAgIDBDMzA6IDVGIDUwIDQzIDQ5IDMyIDQ1IDU0IDUwIDM0
IDBBIEZGIDcwIDdBIDREIDMwIDMxICBfUENJMkVUUDQuLnB6TTAxCiAgICAwQzQwOiAzNyA1RiA0
MiA0MiA0RSAwMSAwQSAwNSAwQSA3OCAwMCAwQSAxOCAwQSAxMCAwMCAgN19CQk4uLi4ueC4uLi4u
LgogICAgMEM1MDogNUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAgNDMgNDkgMzIgNDUgNTQgNTAgMzQg
QTAgIFwvLl9TQl9QQ0kyRVRQNC4KICAgIDBDNjA6IDQxIDBGIDkxIDkzIDVDIDJGIDAzIDVGIDUz
IDQyIDVGIDUwIDQzIDQ5IDMyIDQ1ICBBLi4uXC8uX1NCX1BDSTJFCiAgICAwQzcwOiA1NCA1MCAz
NCAwMSA5MyA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMiAgVFA0Li5cLy5fU0JfUENJ
MgogICAgMEM4MDogNDUgNTQgNTAgMzQgMEEgMDMgQTAgNEEgMEMgNUIgMTIgNUMgMkYgMDMgNUYg
NTMgIEVUUDQuLi5KLlsuXC8uX1MKICAgIDBDOTA6IDQyIDVGIDUwIDQzIDQ5IDMyIDQ3IDUwIDUw
IDM0IDAwIDREIDM0IDM2IDMwIDBEICBCX1BDSTJHUFA0Lk00NjAuCiAgICAwQ0EwOiAyMCAyMCAy
MCAyMCA0RSA2RiA3NCA2OSA2NiA3OSAyMCAyOCA1QyA1RiA1MyA0MiAgICAgIE5vdGlmeSAoXF9T
QgogICAgMENCMDogMkUgNTAgNDMgNDkgMzIgMkUgNDcgNTAgNTAgMzQgMkMgMjAgMzAgNzggMzIg
MjkgIC5QQ0kyLkdQUDQsIDB4MikKICAgIDBDQzA6IDBBIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDg2
IDVDIDJGIDAzIDVGIDUzIDQyIDVGICAuLi4uLi4uLi5cLy5fU0JfCiAgICAwQ0QwOiA1MCA0MyA0
OSAzMiA0NyA1MCA1MCAzNCAwQSAwMiA1QiAyMiAwQSA2NCA3MCA0RCAgUENJMkdQUDQuLlsiLmRw
TQogICAgMENFMDogMzAgMzEgMzcgNUYgNDIgNDIgNEUgMDEgMEEgMDUgMEEgNzggMDAgMEEgMjAg
NjAgIDAxN19CQk4uLi4ueC4uIGAKICAgIDBDRjA6IEEwIDQwIDA2IDkyIDkzIDdCIDYwIDBDIDAw
IDAwIDAzIDAwIDAwIDAwIDREIDMwICAuQC4uLntgLi4uLi4uLk0wCiAgICAwRDAwOiAzMSAzOCA1
RiA0MiA0MiA0RSAwMSAwQSAwNSAwQSA3OCAwMCAwQSAyMCA2MCA3MCAgMThfQkJOLi4uLnguLiBg
cAogICAgMEQxMDogNEQgMzAgMzEgMzcgNUYgNDIgNDIgNEUgMDEgMEEgMDUgMEEgNzggMDAgMEEg
MjAgIE0wMTdfQkJOLi4uLnguLiAKICAgIDBEMjA6IDYwIEEwIDJGIDkyIDkzIDdCIDYwIDBDIDAw
IDAwIDAzIDAwIDAwIDAwIDREIDMwICBgLi8uLntgLi4uLi4uLk0wCiAgICAwRDMwOiAzMSAzOCA1
RiA0MiA0MiA0RSAwMSAwQSAwNSAwQSA3OCAwMCAwQSAyMCA2MCA3MCAgMThfQkJOLi4uLnguLiBg
cAogICAgMEQ0MDogNEQgMzAgMzEgMzcgNUYgNDIgNDIgNEUgMDEgMEEgMDUgMEEgNzggMDAgMEEg
MjAgIE0wMTdfQkJOLi4uLnguLiAKICAgIDBENTA6IDYwIEEwIDRCIDEyIDkyIDkzIDVDIDJGIDAz
IDVGIDUzIDQyIDVGIDUwIDQzIDQ5ICBgLksuLi5cLy5fU0JfUENJCiAgICAwRDYwOiAzMiA0NSA1
NCA1MCAzNSAwQSBGRiA3MCA3QSA0RCAzMCAzMSAzNyA1RiA0MiA0MiAgMkVUUDUuLnB6TTAxN19C
QgogICAgMEQ3MDogNEUgMDEgMEEgMDYgMEEgNzggMDAgMEEgMTggMEEgMTAgMDAgNUMgMkYgMDMg
NUYgIE4uLi4ueC4uLi4uLlwvLl8KICAgIDBEODA6IDUzIDQyIDVGIDUwIDQzIDQ5IDMyIDQ1IDU0
IDUwIDM1IEEwIDQxIDBGIDkxIDkzICBTQl9QQ0kyRVRQNS5BLi4uCiAgICAwRDkwOiA1QyAyRiAw
MyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMiA0NSA1NCA1MCAzNSAwMSAgXC8uX1NCX1BDSTJFVFA1
LgogICAgMERBMDogOTMgNUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAgNDMgNDkgMzIgNDUgNTQgNTAg
MzUgIC5cLy5fU0JfUENJMkVUUDUKICAgIDBEQjA6IDBBIDAzIEEwIDRBIDBDIDVCIDEyIDVDIDJG
IDAzIDVGIDUzIDQyIDVGIDUwIDQzICAuLi5KLlsuXC8uX1NCX1BDCiAgICAwREMwOiA0OSAzMiA0
NyA1MCA1MCAzNSAwMCA0RCAzNCAzNiAzMCAwRCAyMCAyMCAyMCAyMCAgSTJHUFA1Lk00NjAuICAg
IAogICAgMEREMDogNEUgNkYgNzQgNjkgNjYgNzkgMjAgMjggNUMgNUYgNTMgNDIgMkUgNTAgNDMg
NDkgIE5vdGlmeSAoXF9TQi5QQ0kKICAgIDBERTA6IDMyIDJFIDQ3IDUwIDUwIDM1IDJDIDIwIDMw
IDc4IDMyIDI5IDBBIDAwIDAwIDAwICAyLkdQUDUsIDB4MikuLi4uCiAgICAwREYwOiAwMCAwMCAw
MCAwMCA4NiA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMiAgLi4uLi5cLy5fU0JfUENJ
MgogICAgMEUwMDogNDcgNTAgNTAgMzUgMEEgMDIgNUIgMjIgMEEgNjQgNzAgNEQgMzAgMzEgMzcg
NUYgIEdQUDUuLlsiLmRwTTAxN18KICAgIDBFMTA6IDQyIDQyIDRFIDAxIDBBIDA2IDBBIDc4IDAw
IDBBIDIwIDYwIEEwIDQwIDA2IDkyICBCQk4uLi4ueC4uIGAuQC4uCiAgICAwRTIwOiA5MyA3QiA2
MCAwQyAwMCAwMCAwMyAwMCAwMCAwMCA0RCAzMCAzMSAzOCA1RiA0MiAgLntgLi4uLi4uLk0wMThf
QgogICAgMEUzMDogNDIgNEUgMDEgMEEgMDYgMEEgNzggMDAgMEEgMjAgNjAgNzAgNEQgMzAgMzEg
MzcgIEJOLi4uLnguLiBgcE0wMTcKICAgIDBFNDA6IDVGIDQyIDQyIDRFIDAxIDBBIDA2IDBBIDc4
IDAwIDBBIDIwIDYwIEEwIDJGIDkyICBfQkJOLi4uLnguLiBgLi8uCiAgICAwRTUwOiA5MyA3QiA2
MCAwQyAwMCAwMCAwMyAwMCAwMCAwMCA0RCAzMCAzMSAzOCA1RiA0MiAgLntgLi4uLi4uLk0wMThf
QgogICAgMEU2MDogNDIgNEUgMDEgMEEgMDYgMEEgNzggMDAgMEEgMjAgNjAgNzAgNEQgMzAgMzEg
MzcgIEJOLi4uLnguLiBgcE0wMTcKICAgIDBFNzA6IDVGIDQyIDQyIDRFIDAxIDBBIDA2IDBBIDc4
IDAwIDBBIDIwIDYwIEEwIDRCIDEyICBfQkJOLi4uLnguLiBgLksuCiAgICAwRTgwOiA5MiA5MyA1
QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMiA0NSA1NCA1MCAgLi5cLy5fU0JfUENJMkVU
UAogICAgMEU5MDogMzYgMEEgRkYgNzAgN0EgNEQgMzAgMzEgMzcgNUYgNDIgNDIgNEUgMDEgMEEg
MDcgIDYuLnB6TTAxN19CQk4uLi4KICAgIDBFQTA6IDBBIDc4IDAwIDBBIDE4IDBBIDEwIDAwIDVD
IDJGIDAzIDVGIDUzIDQyIDVGIDUwICAueC4uLi4uLlwvLl9TQl9QCiAgICAwRUIwOiA0MyA0OSAz
MiA0NSA1NCA1MCAzNiBBMCA0MSAwRiA5MSA5MyA1QyAyRiAwMyA1RiAgQ0kyRVRQNi5BLi4uXC8u
XwogICAgMEVDMDogNTMgNDIgNUYgNTAgNDMgNDkgMzIgNDUgNTQgNTAgMzYgMDEgOTMgNUMgMkYg
MDMgIFNCX1BDSTJFVFA2Li5cLy4KICAgIDBFRDA6IDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMyIDQ1
IDU0IDUwIDM2IDBBIDAzIEEwIDRBICBfU0JfUENJMkVUUDYuLi5KCiAgICAwRUUwOiAwQyA1QiAx
MiA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMiA0NyA1MCAgLlsuXC8uX1NCX1BDSTJH
UAogICAgMEVGMDogNTAgMzYgMDAgNEQgMzQgMzYgMzAgMEQgMjAgMjAgMjAgMjAgNEUgNkYgNzQg
NjkgIFA2Lk00NjAuICAgIE5vdGkKICAgIDBGMDA6IDY2IDc5IDIwIDI4IDVDIDVGIDUzIDQyIDJF
IDUwIDQzIDQ5IDMyIDJFIDQ3IDUwICBmeSAoXF9TQi5QQ0kyLkdQCiAgICAwRjEwOiA1MCAzNiAy
QyAyMCAzMCA3OCAzMiAyOSAwQSAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgUDYsIDB4MikuLi4uLi4u
LgogICAgMEYyMDogODYgNUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAgNDMgNDkgMzIgNDcgNTAgNTAg
MzYgIC5cLy5fU0JfUENJMkdQUDYKICAgIDBGMzA6IDBBIDAyIDVCIDIyIDBBIDY0IDcwIDREIDMw
IDMxIDM3IDVGIDQyIDQyIDRFIDAxICAuLlsiLmRwTTAxN19CQk4uCiAgICAwRjQwOiAwQSAwNyAw
QSA3OCAwMCAwQSAyMCA2MCBBMCA0MCAwNiA5MiA5MyA3QiA2MCAwQyAgLi4ueC4uIGAuQC4uLntg
LgogICAgMEY1MDogMDAgMDAgMDMgMDAgMDAgMDAgNEQgMzAgMzEgMzggNUYgNDIgNDIgNEUgMDEg
MEEgIC4uLi4uLk0wMThfQkJOLi4KICAgIDBGNjA6IDA3IDBBIDc4IDAwIDBBIDIwIDYwIDcwIDRE
IDMwIDMxIDM3IDVGIDQyIDQyIDRFICAuLnguLiBgcE0wMTdfQkJOCiAgICAwRjcwOiAwMSAwQSAw
NyAwQSA3OCAwMCAwQSAyMCA2MCBBMCAyRiA5MiA5MyA3QiA2MCAwQyAgLi4uLnguLiBgLi8uLntg
LgogICAgMEY4MDogMDAgMDAgMDMgMDAgMDAgMDAgNEQgMzAgMzEgMzggNUYgNDIgNDIgNEUgMDEg
MEEgIC4uLi4uLk0wMThfQkJOLi4KICAgIDBGOTA6IDA3IDBBIDc4IDAwIDBBIDIwIDYwIDcwIDRE
IDMwIDMxIDM3IDVGIDQyIDQyIDRFICAuLnguLiBgcE0wMTdfQkJOCiAgICAwRkEwOiAwMSAwQSAw
NyAwQSA3OCAwMCAwQSAyMCA2MCBBMCA0NiAxOSA5MiA5MyA1QyAyRiAgLi4uLnguLiBgLkYuLi5c
LwogICAgMEZCMDogMDMgNUYgNTMgNDIgNUYgNTAgNDMgNDkgMzIgNDUgNTQgNTAgMzcgMEEgRkYg
NzAgIC5fU0JfUENJMkVUUDcuLnAKICAgIDBGQzA6IDdBIDREIDMwIDMxIDM3IDVGIDQyIDQyIDRF
IDBBIDAyIDAxIDBBIDc4IDAwIDBBICB6TTAxN19CQk4uLi4ueC4uCiAgICAwRkQwOiAxOCAwQSAx
MCAwMCA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMiA0NSAgLi4uLlwvLl9TQl9QQ0ky
RQogICAgMEZFMDogNTQgNTAgMzcgQTAgNEMgMTUgOTEgOTMgNUMgMkYgMDMgNUYgNTMgNDIgNUYg
NTAgIFRQNy5MLi4uXC8uX1NCX1AKICAgIDBGRjA6IDQzIDQ5IDMyIDQ1IDU0IDUwIDM3IDAxIDkz
IDVDIDJGIDAzIDVGIDUzIDQyIDVGICBDSTJFVFA3Li5cLy5fU0JfCiAgICAxMDAwOiA1MCA0MyA0
OSAzMiA0NSA1NCA1MCAzNyAwQSAwMyBBMCA0NSAxMyA1QiAxMiA1QyAgUENJMkVUUDcuLi5FLlsu
XAogICAgMTAxMDogMkYgMDMgNUYgNTMgNDIgNUYgNTAgNDMgNDkgMzIgNDcgNTAgNTAgMzcgMDAg
QTAgIC8uX1NCX1BDSTJHUFA3Li4KICAgIDEwMjA6IDRBIDA2IDkyIDkzIDREIDM2IDMyIDMwIDAw
IEEwIDQwIDA2IDkzIDREIDMwIDM0ICBKLi4uTTYyMC4uQC4uTTA0CiAgICAxMDMwOiAzOSA0RCAz
NiAzMiAzMCAwQSAxMCAwQSAwMiBBMCA0MCAwNSA5MyA3QiA0RCAzMCAgOU02MjAuLi4uLkAuLntN
MAogICAgMTA0MDogMzQgMzkgNEQgMzYgMzIgMzAgMEEgNTIgMEEgMDIgMDAgMDAgNEQgMzQgMzYg
MzAgIDQ5TTYyMC5SLi4uLk00NjAKICAgIDEwNTA6IDBEIDIwIDIwIDIwIDIwIDRFIDZGIDc0IDY5
IDY2IDc5IDIwIDI4IDVDIDVGIDUzICAuICAgIE5vdGlmeSAoXF9TCiAgICAxMDYwOiA0MiAyRSA1
MCA0MyA0OSAzMiAyRSA0NyA1MCA1MCAzNyAyQyAyMCAzMCA3OCAzMCAgQi5QQ0kyLkdQUDcsIDB4
MAogICAgMTA3MDogMjkgMEEgMDAgMDAgMDAgMDAgMDAgMDAgMDAgODYgNUMgMkYgMDMgNUYgNTMg
NDIgICkuLi4uLi4uLi5cLy5fU0IKICAgIDEwODA6IDVGIDUwIDQzIDQ5IDMyIDQ3IDUwIDUwIDM3
IDAwIDREIDM0IDM2IDMwIDBEIDIwICBfUENJMkdQUDcuTTQ2MC4gCiAgICAxMDkwOiAyMCAyMCAy
MCA0RSA2RiA3NCA2OSA2NiA3OSAyMCAyOCA1QyA1RiA1MyA0MiAyRSAgICAgTm90aWZ5IChcX1NC
LgogICAgMTBBMDogNTAgNDMgNDkgMzIgMkUgNDcgNTAgNTAgMzcgMkMgMjAgMzAgNzggMzIgMjkg
MEEgIFBDSTIuR1BQNywgMHgyKS4KICAgIDEwQjA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDg2IDVD
IDJGIDAzIDVGIDUzIDQyIDVGIDUwICAuLi4uLi4uLlwvLl9TQl9QCiAgICAxMEMwOiA0MyA0OSAz
MiA0NyA1MCA1MCAzNyAwQSAwMiA1QiAyMiAwQSA2NCA3MCA0RCAzMCAgQ0kyR1BQNy4uWyIuZHBN
MAogICAgMTBEMDogMzEgMzcgNUYgNDIgNDIgNEUgMEEgMDIgMDEgMEEgNzggMDAgMEEgMjAgNjAg
QTAgIDE3X0JCTi4uLi54Li4gYC4KICAgIDEwRTA6IDQwIDA2IDkyIDkzIDdCIDYwIDBDIDAwIDAw
IDAzIDAwIDAwIDAwIDREIDMwIDMxICBALi4ue2AuLi4uLi4uTTAxCiAgICAxMEYwOiAzOCA1RiA0
MiA0MiA0RSAwQSAwMiAwMSAwQSA3OCAwMCAwQSAyMCA2MCA3MCA0RCAgOF9CQk4uLi4ueC4uIGBw
TQogICAgMTEwMDogMzAgMzEgMzcgNUYgNDIgNDIgNEUgMEEgMDIgMDEgMEEgNzggMDAgMEEgMjAg
NjAgIDAxN19CQk4uLi4ueC4uIGAKICAgIDExMTA6IEEwIDJGIDkyIDkzIDdCIDYwIDBDIDAwIDAw
IDAzIDAwIDAwIDAwIDREIDMwIDMxICAuLy4ue2AuLi4uLi4uTTAxCiAgICAxMTIwOiAzOCA1RiA0
MiA0MiA0RSAwQSAwMiAwMSAwQSA3OCAwMCAwQSAyMCA2MCA3MCA0RCAgOF9CQk4uLi4ueC4uIGBw
TQogICAgMTEzMDogMzAgMzEgMzcgNUYgNDIgNDIgNEUgMEEgMDIgMDEgMEEgNzggMDAgMEEgMjAg
NjAgIDAxN19CQk4uLi4ueC4uIGAKICAgIDExNDA6IEEwIDQxIDEzIDkyIDkzIDVDIDJGIDAzIDVG
IDUzIDQyIDVGIDUwIDQzIDQ5IDMyICAuQS4uLlwvLl9TQl9QQ0kyCiAgICAxMTUwOiA0NSA1NCA1
MCAzOCAwQSBGRiA3MCA3QSA0RCAzMCAzMSAzNyA1RiA0MiA0MiA0RSAgRVRQOC4ucHpNMDE3X0JC
TgogICAgMTE2MDogMEEgMDIgMEEgMDIgMEEgNzggMDAgMEEgMTggMEEgMTAgMDAgNUMgMkYgMDMg
NUYgIC4uLi4ueC4uLi4uLlwvLl8KICAgIDExNzA6IDUzIDQyIDVGIDUwIDQzIDQ5IDMyIDQ1IDU0
IDUwIDM4IEEwIDQ2IDBGIDkxIDkzICBTQl9QQ0kyRVRQOC5GLi4uCiAgICAxMTgwOiA1QyAyRiAw
MyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMiA0NSA1NCA1MCAzOCAwMSAgXC8uX1NCX1BDSTJFVFA4
LgogICAgMTE5MDogOTMgNUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAgNDMgNDkgMzIgNDUgNTQgNTAg
MzggIC5cLy5fU0JfUENJMkVUUDgKICAgIDExQTA6IDBBIDAzIEEwIDRGIDBDIDVCIDEyIDVDIDJG
IDAzIDVGIDUzIDQyIDVGIDUwIDQzICAuLi5PLlsuXC8uX1NCX1BDCiAgICAxMUIwOiA0OSAzMiA0
NyA1MCA1MCAzOCAwMCA0RCAzNCAzNiAzMCAwRCAyMCAyMCAyMCAyMCAgSTJHUFA4Lk00NjAuICAg
IAogICAgMTFDMDogNEUgNkYgNzQgNjkgNjYgNzkgMjAgMjggNUMgNUYgNTMgNDIgMkUgNTAgNDMg
NDkgIE5vdGlmeSAoXF9TQi5QQ0kKICAgIDExRDA6IDMyIDJFIDQ3IDUwIDUwIDM4IDJDIDIwIDMw
IDc4IDMyIDI5IDBBIDAwIDAwIDAwICAyLkdQUDgsIDB4MikuLi4uCiAgICAxMUUwOiAwMCAwMCAw
MCAwMCA4NiA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMiAgLi4uLi5cLy5fU0JfUENJ
MgogICAgMTFGMDogNDcgNTAgNTAgMzggMEEgMDIgNUIgMjIgMEEgNjQgNzAgNEQgMzAgMzEgMzcg
NUYgIEdQUDguLlsiLmRwTTAxN18KICAgIDEyMDA6IDQyIDQyIDRFIDBBIDAyIDBBIDAyIDBBIDc4
IDAwIDBBIDIwIDYwIEEwIDQ0IDA2ICBCQk4uLi4uLnguLiBgLkQuCiAgICAxMjEwOiA5MiA5MyA3
QiA2MCAwQyAwMCAwMCAwMyAwMCAwMCAwMCA0RCAzMCAzMSAzOCA1RiAgLi57YC4uLi4uLi5NMDE4
XwogICAgMTIyMDogNDIgNDIgNEUgMEEgMDIgMEEgMDIgMEEgNzggMDAgMEEgMjAgNjAgNzAgNEQg
MzAgIEJCTi4uLi4ueC4uIGBwTTAKICAgIDEyMzA6IDMxIDM3IDVGIDQyIDQyIDRFIDBBIDAyIDBB
IDAyIDBBIDc4IDAwIDBBIDIwIDYwICAxN19CQk4uLi4uLnguLiBgCiAgICAxMjQwOiBBMCAzMSA5
MiA5MyA3QiA2MCAwQyAwMCAwMCAwMyAwMCAwMCAwMCA0RCAzMCAzMSAgLjEuLntgLi4uLi4uLk0w
MQogICAgMTI1MDogMzggNUYgNDIgNDIgNEUgMEEgMDIgMEEgMDIgMEEgNzggMDAgMEEgMjAgNjAg
NzAgIDhfQkJOLi4uLi54Li4gYHAKICAgIDEyNjA6IDREIDMwIDMxIDM3IDVGIDQyIDQyIDRFIDBB
IDAyIDBBIDAyIDBBIDc4IDAwIDBBICBNMDE3X0JCTi4uLi4ueC4uCiAgICAxMjcwOiAyMCA2MCBB
MCA0QiAxMiA5MiA5MyA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0MyAgIGAuSy4uLlwvLl9TQl9Q
QwogICAgMTI4MDogNDkgMzIgNDUgNTQgNTAgMzkgMEEgRkYgNzAgN0EgNEQgMzAgMzEgMzcgNUYg
NDIgIEkyRVRQOS4ucHpNMDE3X0IKICAgIDEyOTA6IDQyIDRFIDBBIDAzIDAxIDBBIDc4IDAwIDBB
IDE4IDBBIDEwIDAwIDVDIDJGIDAzICBCTi4uLi54Li4uLi4uXC8uCiAgICAxMkEwOiA1RiA1MyA0
MiA1RiA1MCA0MyA0OSAzMiA0NSA1NCA1MCAzOSBBMCA0MSAwRiA5MSAgX1NCX1BDSTJFVFA5LkEu
LgogICAgMTJCMDogOTMgNUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAgNDMgNDkgMzIgNDUgNTQgNTAg
MzkgIC5cLy5fU0JfUENJMkVUUDkKICAgIDEyQzA6IDAxIDkzIDVDIDJGIDAzIDVGIDUzIDQyIDVG
IDUwIDQzIDQ5IDMyIDQ1IDU0IDUwICAuLlwvLl9TQl9QQ0kyRVRQCiAgICAxMkQwOiAzOSAwQSAw
MyBBMCA0QSAwQyA1QiAxMiA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCAgOS4uLkouWy5cLy5fU0Jf
UAogICAgMTJFMDogNDMgNDkgMzIgNDcgNTAgNTAgMzkgMDAgNEQgMzQgMzYgMzAgMEQgMjAgMjAg
MjAgIENJMkdQUDkuTTQ2MC4gICAKICAgIDEyRjA6IDIwIDRFIDZGIDc0IDY5IDY2IDc5IDIwIDI4
IDVDIDVGIDUzIDQyIDJFIDUwIDQzICAgTm90aWZ5IChcX1NCLlBDCiAgICAxMzAwOiA0OSAzMiAy
RSA0NyA1MCA1MCAzOSAyQyAyMCAzMCA3OCAzMiAyOSAwQSAwMCAwMCAgSTIuR1BQOSwgMHgyKS4u
LgogICAgMTMxMDogMDAgMDAgMDAgMDAgMDAgODYgNUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAgNDMg
NDkgIC4uLi4uLlwvLl9TQl9QQ0kKICAgIDEzMjA6IDMyIDQ3IDUwIDUwIDM5IDBBIDAyIDVCIDIy
IDBBIDY0IDcwIDREIDMwIDMxIDM3ICAyR1BQOS4uWyIuZHBNMDE3CiAgICAxMzMwOiA1RiA0MiA0
MiA0RSAwQSAwMyAwMSAwQSA3OCAwMCAwQSAyMCA2MCBBMCA0MCAwNiAgX0JCTi4uLi54Li4gYC5A
LgogICAgMTM0MDogOTIgOTMgN0IgNjAgMEMgMDAgMDAgMDMgMDAgMDAgMDAgNEQgMzAgMzEgMzgg
NUYgIC4ue2AuLi4uLi4uTTAxOF8KICAgIDEzNTA6IDQyIDQyIDRFIDBBIDAzIDAxIDBBIDc4IDAw
IDBBIDIwIDYwIDcwIDREIDMwIDMxICBCQk4uLi4ueC4uIGBwTTAxCiAgICAxMzYwOiAzNyA1RiA0
MiA0MiA0RSAwQSAwMyAwMSAwQSA3OCAwMCAwQSAyMCA2MCBBMCAyRiAgN19CQk4uLi4ueC4uIGAu
LwogICAgMTM3MDogOTIgOTMgN0IgNjAgMEMgMDAgMDAgMDMgMDAgMDAgMDAgNEQgMzAgMzEgMzgg
NUYgIC4ue2AuLi4uLi4uTTAxOF8KICAgIDEzODA6IDQyIDQyIDRFIDBBIDAzIDAxIDBBIDc4IDAw
IDBBIDIwIDYwIDcwIDREIDMwIDMxICBCQk4uLi4ueC4uIGBwTTAxCiAgICAxMzkwOiAzNyA1RiA0
MiA0MiA0RSAwQSAwMyAwMSAwQSA3OCAwMCAwQSAyMCA2MCBBMCA0MSAgN19CQk4uLi4ueC4uIGAu
QQogICAgMTNBMDogMTMgOTIgOTMgNUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAgNDMgNDkgMzIgNDUg
NTQgIC4uLlwvLl9TQl9QQ0kyRVQKICAgIDEzQjA6IDUwIDQxIDBBIEZGIDcwIDdBIDREIDMwIDMx
IDM3IDVGIDQyIDQyIDRFIDBBIDAzICBQQS4ucHpNMDE3X0JCTi4uCiAgICAxM0MwOiAwQSAwMiAw
QSA3OCAwMCAwQSAxOCAwQSAxMCAwMCA1QyAyRiAwMyA1RiA1MyA0MiAgLi4ueC4uLi4uLlwvLl9T
QgogICAgMTNEMDogNUYgNTAgNDMgNDkgMzIgNDUgNTQgNTAgNDEgQTAgNDYgMEYgOTEgOTMgNUMg
MkYgIF9QQ0kyRVRQQS5GLi4uXC8KICAgIDEzRTA6IDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMy
IDQ1IDU0IDUwIDQxIDAxIDkzIDVDICAuX1NCX1BDSTJFVFBBLi5cCiAgICAxM0YwOiAyRiAwMyA1
RiA1MyA0MiA1RiA1MCA0MyA0OSAzMiA0NSA1NCA1MCA0MSAwQSAwMyAgLy5fU0JfUENJMkVUUEEu
LgogICAgMTQwMDogQTAgNEYgMEMgNUIgMTIgNUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAgNDMgNDkg
MzIgIC5PLlsuXC8uX1NCX1BDSTIKICAgIDE0MTA6IDQ3IDUwIDUwIDQxIDAwIDREIDM0IDM2IDMw
IDBEIDIwIDIwIDIwIDIwIDRFIDZGICBHUFBBLk00NjAuICAgIE5vCiAgICAxNDIwOiA3NCA2OSA2
NiA3OSAyMCAyOCA1QyA1RiA1MyA0MiAyRSA1MCA0MyA0OSAzMiAyRSAgdGlmeSAoXF9TQi5QQ0ky
LgogICAgMTQzMDogNDcgNTAgNTAgNDEgMkMgMjAgMzAgNzggMzIgMjkgMEEgMDAgMDAgMDAgMDAg
MDAgIEdQUEEsIDB4MikuLi4uLi4KICAgIDE0NDA6IDAwIDAwIDg2IDVDIDJGIDAzIDVGIDUzIDQy
IDVGIDUwIDQzIDQ5IDMyIDQ3IDUwICAuLi5cLy5fU0JfUENJMkdQCiAgICAxNDUwOiA1MCA0MSAw
QSAwMiA1QiAyMiAwQSA2NCA3MCA0RCAzMCAzMSAzNyA1RiA0MiA0MiAgUEEuLlsiLmRwTTAxN19C
QgogICAgMTQ2MDogNEUgMEEgMDMgMEEgMDIgMEEgNzggMDAgMEEgMjAgNjAgQTAgNDQgMDYgOTIg
OTMgIE4uLi4uLnguLiBgLkQuLi4KICAgIDE0NzA6IDdCIDYwIDBDIDAwIDAwIDAzIDAwIDAwIDAw
IDREIDMwIDMxIDM4IDVGIDQyIDQyICB7YC4uLi4uLi5NMDE4X0JCCiAgICAxNDgwOiA0RSAwQSAw
MyAwQSAwMiAwQSA3OCAwMCAwQSAyMCA2MCA3MCA0RCAzMCAzMSAzNyAgTi4uLi4ueC4uIGBwTTAx
NwogICAgMTQ5MDogNUYgNDIgNDIgNEUgMEEgMDMgMEEgMDIgMEEgNzggMDAgMEEgMjAgNjAgQTAg
MzEgIF9CQk4uLi4uLnguLiBgLjEKICAgIDE0QTA6IDkyIDkzIDdCIDYwIDBDIDAwIDAwIDAzIDAw
IDAwIDAwIDREIDMwIDMxIDM4IDVGICAuLntgLi4uLi4uLk0wMThfCiAgICAxNEIwOiA0MiA0MiA0
RSAwQSAwMyAwQSAwMiAwQSA3OCAwMCAwQSAyMCA2MCA3MCA0RCAzMCAgQkJOLi4uLi54Li4gYHBN
MAogICAgMTRDMDogMzEgMzcgNUYgNDIgNDIgNEUgMEEgMDMgMEEgMDIgMEEgNzggMDAgMEEgMjAg
NjAgIDE3X0JCTi4uLi4ueC4uIGAKICAgIDE0RDA6IEEwIDQxIDEzIDkyIDkzIDVDIDJGIDAzIDVG
IDUzIDQyIDVGIDUwIDQzIDQ5IDMyICAuQS4uLlwvLl9TQl9QQ0kyCiAgICAxNEUwOiA0NSA1NCA1
MCA0MiAwQSBGRiA3MCA3QSA0RCAzMCAzMSAzNyA1RiA0MiA0MiA0RSAgRVRQQi4ucHpNMDE3X0JC
TgogICAgMTRGMDogMEEgMDMgMEEgMDMgMEEgNzggMDAgMEEgMTggMEEgMTAgMDAgNUMgMkYgMDMg
NUYgIC4uLi4ueC4uLi4uLlwvLl8KICAgIDE1MDA6IDUzIDQyIDVGIDUwIDQzIDQ5IDMyIDQ1IDU0
IDUwIDQyIEEwIDQ2IDBGIDkxIDkzICBTQl9QQ0kyRVRQQi5GLi4uCiAgICAxNTEwOiA1QyAyRiAw
MyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMiA0NSA1NCA1MCA0MiAwMSAgXC8uX1NCX1BDSTJFVFBC
LgogICAgMTUyMDogOTMgNUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAgNDMgNDkgMzIgNDUgNTQgNTAg
NDIgIC5cLy5fU0JfUENJMkVUUEIKICAgIDE1MzA6IDBBIDAzIEEwIDRGIDBDIDVCIDEyIDVDIDJG
IDAzIDVGIDUzIDQyIDVGIDUwIDQzICAuLi5PLlsuXC8uX1NCX1BDCiAgICAxNTQwOiA0OSAzMiA0
NyA1MCA1MCA0MiAwMCA0RCAzNCAzNiAzMCAwRCAyMCAyMCAyMCAyMCAgSTJHUFBCLk00NjAuICAg
IAogICAgMTU1MDogNEUgNkYgNzQgNjkgNjYgNzkgMjAgMjggNUMgNUYgNTMgNDIgMkUgNTAgNDMg
NDkgIE5vdGlmeSAoXF9TQi5QQ0kKICAgIDE1NjA6IDMyIDJFIDQ3IDUwIDUwIDQyIDJDIDIwIDMw
IDc4IDMyIDI5IDBBIDAwIDAwIDAwICAyLkdQUEIsIDB4MikuLi4uCiAgICAxNTcwOiAwMCAwMCAw
MCAwMCA4NiA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMiAgLi4uLi5cLy5fU0JfUENJ
MgogICAgMTU4MDogNDcgNTAgNTAgNDIgMEEgMDIgNUIgMjIgMEEgNjQgNzAgNEQgMzAgMzEgMzcg
NUYgIEdQUEIuLlsiLmRwTTAxN18KICAgIDE1OTA6IDQyIDQyIDRFIDBBIDAzIDBBIDAzIDBBIDc4
IDAwIDBBIDIwIDYwIEEwIDQ0IDA2ICBCQk4uLi4uLnguLiBgLkQuCiAgICAxNUEwOiA5MiA5MyA3
QiA2MCAwQyAwMCAwMCAwMyAwMCAwMCAwMCA0RCAzMCAzMSAzOCA1RiAgLi57YC4uLi4uLi5NMDE4
XwogICAgMTVCMDogNDIgNDIgNEUgMEEgMDMgMEEgMDMgMEEgNzggMDAgMEEgMjAgNjAgNzAgNEQg
MzAgIEJCTi4uLi4ueC4uIGBwTTAKICAgIDE1QzA6IDMxIDM3IDVGIDQyIDQyIDRFIDBBIDAzIDBB
IDAzIDBBIDc4IDAwIDBBIDIwIDYwICAxN19CQk4uLi4uLnguLiBgCiAgICAxNUQwOiBBMCAzMSA5
MiA5MyA3QiA2MCAwQyAwMCAwMCAwMyAwMCAwMCAwMCA0RCAzMCAzMSAgLjEuLntgLi4uLi4uLk0w
MQogICAgMTVFMDogMzggNUYgNDIgNDIgNEUgMEEgMDMgMEEgMDMgMEEgNzggMDAgMEEgMjAgNjAg
NzAgIDhfQkJOLi4uLi54Li4gYHAKICAgIDE1RjA6IDREIDMwIDMxIDM3IDVGIDQyIDQyIDRFIDBB
IDAzIDBBIDAzIDBBIDc4IDAwIDBBICBNMDE3X0JCTi4uLi4ueC4uCiAgICAxNjAwOiAyMCA2MCBB
MCA0MSAxMyA5MiA5MyA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0MyAgIGAuQS4uLlwvLl9TQl9Q
QwogICAgMTYxMDogNDkgMzIgNDUgNTQgNTAgNDMgMEEgRkYgNzAgN0EgNEQgMzAgMzEgMzcgNUYg
NDIgIEkyRVRQQy4ucHpNMDE3X0IKICAgIDE2MjA6IDQyIDRFIDBBIDAzIDBBIDA0IDBBIDc4IDAw
IDBBIDE4IDBBIDEwIDAwIDVDIDJGICBCTi4uLi4ueC4uLi4uLlwvCiAgICAxNjMwOiAwMyA1RiA1
MyA0MiA1RiA1MCA0MyA0OSAzMiA0NSA1NCA1MCA0MyBBMCA0NiAwRiAgLl9TQl9QQ0kyRVRQQy5G
LgogICAgMTY0MDogOTEgOTMgNUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAgNDMgNDkgMzIgNDUgNTQg
NTAgIC4uXC8uX1NCX1BDSTJFVFAKICAgIDE2NTA6IDQzIDAxIDkzIDVDIDJGIDAzIDVGIDUzIDQy
IDVGIDUwIDQzIDQ5IDMyIDQ1IDU0ICBDLi5cLy5fU0JfUENJMkVUCiAgICAxNjYwOiA1MCA0MyAw
QSAwMyBBMCA0RiAwQyA1QiAxMiA1QyAyRiAwMyA1RiA1MyA0MiA1RiAgUEMuLi5PLlsuXC8uX1NC
XwogICAgMTY3MDogNTAgNDMgNDkgMzIgNDcgNTAgNTAgNDMgMDAgNEQgMzQgMzYgMzAgMEQgMjAg
MjAgIFBDSTJHUFBDLk00NjAuICAKICAgIDE2ODA6IDIwIDIwIDRFIDZGIDc0IDY5IDY2IDc5IDIw
IDI4IDVDIDVGIDUzIDQyIDJFIDUwICAgIE5vdGlmeSAoXF9TQi5QCiAgICAxNjkwOiA0MyA0OSAz
MiAyRSA0NyA1MCA1MCA0MyAyQyAyMCAzMCA3OCAzMiAyOSAwQSAwMCAgQ0kyLkdQUEMsIDB4Miku
LgogICAgMTZBMDogMDAgMDAgMDAgMDAgMDAgMDAgODYgNUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAg
NDMgIC4uLi4uLi5cLy5fU0JfUEMKICAgIDE2QjA6IDQ5IDMyIDQ3IDUwIDUwIDQzIDBBIDAyIDVC
IDIyIDBBIDY0IDcwIDREIDMwIDMxICBJMkdQUEMuLlsiLmRwTTAxCiAgICAxNkMwOiAzNyA1RiA0
MiA0MiA0RSAwQSAwMyAwQSAwNCAwQSA3OCAwMCAwQSAyMCA2MCBBMCAgN19CQk4uLi4uLnguLiBg
LgogICAgMTZEMDogNDQgMDYgOTIgOTMgN0IgNjAgMEMgMDAgMDAgMDMgMDAgMDAgMDAgNEQgMzAg
MzEgIEQuLi57YC4uLi4uLi5NMDEKICAgIDE2RTA6IDM4IDVGIDQyIDQyIDRFIDBBIDAzIDBBIDA0
IDBBIDc4IDAwIDBBIDIwIDYwIDcwICA4X0JCTi4uLi4ueC4uIGBwCiAgICAxNkYwOiA0RCAzMCAz
MSAzNyA1RiA0MiA0MiA0RSAwQSAwMyAwQSAwNCAwQSA3OCAwMCAwQSAgTTAxN19CQk4uLi4uLngu
LgogICAgMTcwMDogMjAgNjAgQTAgMzEgOTIgOTMgN0IgNjAgMEMgMDAgMDAgMDMgMDAgMDAgMDAg
NEQgICBgLjEuLntgLi4uLi4uLk0KICAgIDE3MTA6IDMwIDMxIDM4IDVGIDQyIDQyIDRFIDBBIDAz
IDBBIDA0IDBBIDc4IDAwIDBBIDIwICAwMThfQkJOLi4uLi54Li4gCiAgICAxNzIwOiA2MCA3MCA0
RCAzMCAzMSAzNyA1RiA0MiA0MiA0RSAwQSAwMyAwQSAwNCAwQSA3OCAgYHBNMDE3X0JCTi4uLi4u
eAogICAgMTczMDogMDAgMEEgMjAgNjAgQTAgNDEgMTMgOTIgOTMgNUMgMkYgMDMgNUYgNTMgNDIg
NUYgIC4uIGAuQS4uLlwvLl9TQl8KICAgIDE3NDA6IDUwIDQzIDQ5IDMyIDQ1IDU0IDUwIDQ0IDBB
IEZGIDcwIDdBIDREIDMwIDMxIDM3ICBQQ0kyRVRQRC4ucHpNMDE3CiAgICAxNzUwOiA1RiA0MiA0
MiA0RSAwQSAwMyAwQSAwNSAwQSA3OCAwMCAwQSAxOCAwQSAxMCAwMCAgX0JCTi4uLi4ueC4uLi4u
LgogICAgMTc2MDogNUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAgNDMgNDkgMzIgNDUgNTQgNTAgNDQg
QTAgIFwvLl9TQl9QQ0kyRVRQRC4KICAgIDE3NzA6IDQ2IDBGIDkxIDkzIDVDIDJGIDAzIDVGIDUz
IDQyIDVGIDUwIDQzIDQ5IDMyIDQ1ICBGLi4uXC8uX1NCX1BDSTJFCiAgICAxNzgwOiA1NCA1MCA0
NCAwMSA5MyA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMiAgVFBELi5cLy5fU0JfUENJ
MgogICAgMTc5MDogNDUgNTQgNTAgNDQgMEEgMDMgQTAgNEYgMEMgNUIgMTIgNUMgMkYgMDMgNUYg
NTMgIEVUUEQuLi5PLlsuXC8uX1MKICAgIDE3QTA6IDQyIDVGIDUwIDQzIDQ5IDMyIDQ3IDUwIDUw
IDQ0IDAwIDREIDM0IDM2IDMwIDBEICBCX1BDSTJHUFBELk00NjAuCiAgICAxN0IwOiAyMCAyMCAy
MCAyMCA0RSA2RiA3NCA2OSA2NiA3OSAyMCAyOCA1QyA1RiA1MyA0MiAgICAgIE5vdGlmeSAoXF9T
QgogICAgMTdDMDogMkUgNTAgNDMgNDkgMzIgMkUgNDcgNTAgNTAgNDQgMkMgMjAgMzAgNzggMzIg
MjkgIC5QQ0kyLkdQUEQsIDB4MikKICAgIDE3RDA6IDBBIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDg2
IDVDIDJGIDAzIDVGIDUzIDQyIDVGICAuLi4uLi4uLi5cLy5fU0JfCiAgICAxN0UwOiA1MCA0MyA0
OSAzMiA0NyA1MCA1MCA0NCAwQSAwMiA1QiAyMiAwQSA2NCA3MCA0RCAgUENJMkdQUEQuLlsiLmRw
TQogICAgMTdGMDogMzAgMzEgMzcgNUYgNDIgNDIgNEUgMEEgMDMgMEEgMDUgMEEgNzggMDAgMEEg
MjAgIDAxN19CQk4uLi4uLnguLiAKICAgIDE4MDA6IDYwIEEwIDQ0IDA2IDkyIDkzIDdCIDYwIDBD
IDAwIDAwIDAzIDAwIDAwIDAwIDREICBgLkQuLi57YC4uLi4uLi5NCiAgICAxODEwOiAzMCAzMSAz
OCA1RiA0MiA0MiA0RSAwQSAwMyAwQSAwNSAwQSA3OCAwMCAwQSAyMCAgMDE4X0JCTi4uLi4ueC4u
IAogICAgMTgyMDogNjAgNzAgNEQgMzAgMzEgMzcgNUYgNDIgNDIgNEUgMEEgMDMgMEEgMDUgMEEg
NzggIGBwTTAxN19CQk4uLi4uLngKICAgIDE4MzA6IDAwIDBBIDIwIDYwIEEwIDMxIDkyIDkzIDdC
IDYwIDBDIDAwIDAwIDAzIDAwIDAwICAuLiBgLjEuLntgLi4uLi4uCiAgICAxODQwOiAwMCA0RCAz
MCAzMSAzOCA1RiA0MiA0MiA0RSAwQSAwMyAwQSAwNSAwQSA3OCAwMCAgLk0wMThfQkJOLi4uLi54
LgogICAgMTg1MDogMEEgMjAgNjAgNzAgNEQgMzAgMzEgMzcgNUYgNDIgNDIgNEUgMEEgMDMgMEEg
MDUgIC4gYHBNMDE3X0JCTi4uLi4KICAgIDE4NjA6IDBBIDc4IDAwIDBBIDIwIDYwIEEwIDQxIDEz
IDkyIDkzIDVDIDJGIDAzIDVGIDUzICAueC4uIGAuQS4uLlwvLl9TCiAgICAxODcwOiA0MiA1RiA1
MCA0MyA0OSAzMiA0NSA1NCA1MCA0NSAwQSBGRiA3MCA3QSA0RCAzMCAgQl9QQ0kyRVRQRS4ucHpN
MAogICAgMTg4MDogMzEgMzcgNUYgNDIgNDIgNEUgMEEgMDMgMEEgMDYgMEEgNzggMDAgMEEgMTgg
MEEgIDE3X0JCTi4uLi4ueC4uLi4KICAgIDE4OTA6IDEwIDAwIDVDIDJGIDAzIDVGIDUzIDQyIDVG
IDUwIDQzIDQ5IDMyIDQ1IDU0IDUwICAuLlwvLl9TQl9QQ0kyRVRQCiAgICAxOEEwOiA0NSBBMCA0
NiAwRiA5MSA5MyA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAgRS5GLi4uXC8uX1NCX1BD
SQogICAgMThCMDogMzIgNDUgNTQgNTAgNDUgMDEgOTMgNUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAg
NDMgIDJFVFBFLi5cLy5fU0JfUEMKICAgIDE4QzA6IDQ5IDMyIDQ1IDU0IDUwIDQ1IDBBIDAzIEEw
IDRGIDBDIDVCIDEyIDVDIDJGIDAzICBJMkVUUEUuLi5PLlsuXC8uCiAgICAxOEQwOiA1RiA1MyA0
MiA1RiA1MCA0MyA0OSAzMiA0NyA1MCA1MCA0NSAwMCA0RCAzNCAzNiAgX1NCX1BDSTJHUFBFLk00
NgogICAgMThFMDogMzAgMEQgMjAgMjAgMjAgMjAgNEUgNkYgNzQgNjkgNjYgNzkgMjAgMjggNUMg
NUYgIDAuICAgIE5vdGlmeSAoXF8KICAgIDE4RjA6IDUzIDQyIDJFIDUwIDQzIDQ5IDMyIDJFIDQ3
IDUwIDUwIDQ1IDJDIDIwIDMwIDc4ICBTQi5QQ0kyLkdQUEUsIDB4CiAgICAxOTAwOiAzMiAyOSAw
QSAwMCAwMCAwMCAwMCAwMCAwMCAwMCA4NiA1QyAyRiAwMyA1RiA1MyAgMikuLi4uLi4uLi5cLy5f
UwogICAgMTkxMDogNDIgNUYgNTAgNDMgNDkgMzIgNDcgNTAgNTAgNDUgMEEgMDIgNUIgMjIgMEEg
NjQgIEJfUENJMkdQUEUuLlsiLmQKICAgIDE5MjA6IDcwIDREIDMwIDMxIDM3IDVGIDQyIDQyIDRF
IDBBIDAzIDBBIDA2IDBBIDc4IDAwICBwTTAxN19CQk4uLi4uLnguCiAgICAxOTMwOiAwQSAyMCA2
MCBBMCA0NCAwNiA5MiA5MyA3QiA2MCAwQyAwMCAwMCAwMyAwMCAwMCAgLiBgLkQuLi57YC4uLi4u
LgogICAgMTk0MDogMDAgNEQgMzAgMzEgMzggNUYgNDIgNDIgNEUgMEEgMDMgMEEgMDYgMEEgNzgg
MDAgIC5NMDE4X0JCTi4uLi4ueC4KICAgIDE5NTA6IDBBIDIwIDYwIDcwIDREIDMwIDMxIDM3IDVG
IDQyIDQyIDRFIDBBIDAzIDBBIDA2ICAuIGBwTTAxN19CQk4uLi4uCiAgICAxOTYwOiAwQSA3OCAw
MCAwQSAyMCA2MCBBMCAzMSA5MiA5MyA3QiA2MCAwQyAwMCAwMCAwMyAgLnguLiBgLjEuLntgLi4u
LgogICAgMTk3MDogMDAgMDAgMDAgNEQgMzAgMzEgMzggNUYgNDIgNDIgNEUgMEEgMDMgMEEgMDYg
MEEgIC4uLk0wMThfQkJOLi4uLi4KICAgIDE5ODA6IDc4IDAwIDBBIDIwIDYwIDcwIDREIDMwIDMx
IDM3IDVGIDQyIDQyIDRFIDBBIDAzICB4Li4gYHBNMDE3X0JCTi4uCiAgICAxOTkwOiAwQSAwNiAw
QSA3OCAwMCAwQSAyMCA2MCBBMCA0MSAxMyA5MiA5MyA1QyAyRiAwMyAgLi4ueC4uIGAuQS4uLlwv
LgogICAgMTlBMDogNUYgNTMgNDIgNUYgNTAgNDMgNDkgMzIgNDUgNTQgNTAgNDYgMEEgRkYgNzAg
N0EgIF9TQl9QQ0kyRVRQRi4ucHoKICAgIDE5QjA6IDREIDMwIDMxIDM3IDVGIDQyIDQyIDRFIDBB
IDAzIDBBIDA3IDBBIDc4IDAwIDBBICBNMDE3X0JCTi4uLi4ueC4uCiAgICAxOUMwOiAxOCAwQSAx
MCAwMCA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMiA0NSAgLi4uLlwvLl9TQl9QQ0ky
RQogICAgMTlEMDogNTQgNTAgNDYgQTAgNDYgMEYgOTEgOTMgNUMgMkYgMDMgNUYgNTMgNDIgNUYg
NTAgIFRQRi5GLi4uXC8uX1NCX1AKICAgIDE5RTA6IDQzIDQ5IDMyIDQ1IDU0IDUwIDQ2IDAxIDkz
IDVDIDJGIDAzIDVGIDUzIDQyIDVGICBDSTJFVFBGLi5cLy5fU0JfCiAgICAxOUYwOiA1MCA0MyA0
OSAzMiA0NSA1NCA1MCA0NiAwQSAwMyBBMCA0RiAwQyA1QiAxMiA1QyAgUENJMkVUUEYuLi5PLlsu
XAogICAgMUEwMDogMkYgMDMgNUYgNTMgNDIgNUYgNTAgNDMgNDkgMzIgNDcgNTAgNTAgNDYgMDAg
NEQgIC8uX1NCX1BDSTJHUFBGLk0KICAgIDFBMTA6IDM0IDM2IDMwIDBEIDIwIDIwIDIwIDIwIDRF
IDZGIDc0IDY5IDY2IDc5IDIwIDI4ICA0NjAuICAgIE5vdGlmeSAoCiAgICAxQTIwOiA1QyA1RiA1
MyA0MiAyRSA1MCA0MyA0OSAzMiAyRSA0NyA1MCA1MCA0NiAyQyAyMCAgXF9TQi5QQ0kyLkdQUEYs
IAogICAgMUEzMDogMzAgNzggMzIgMjkgMEEgMDAgMDAgMDAgMDAgMDAgMDAgMDAgODYgNUMgMkYg
MDMgIDB4MikuLi4uLi4uLi5cLy4KICAgIDFBNDA6IDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMyIDQ3
IDUwIDUwIDQ2IDBBIDAyIDVCIDIyICBfU0JfUENJMkdQUEYuLlsiCiAgICAxQTUwOiAwQSA2NCA3
MCA0RCAzMCAzMSAzNyA1RiA0MiA0MiA0RSAwQSAwMyAwQSAwNyAwQSAgLmRwTTAxN19CQk4uLi4u
LgogICAgMUE2MDogNzggMDAgMEEgMjAgNjAgQTAgNDQgMDYgOTIgOTMgN0IgNjAgMEMgMDAgMDAg
MDMgIHguLiBgLkQuLi57YC4uLi4KICAgIDFBNzA6IDAwIDAwIDAwIDREIDMwIDMxIDM4IDVGIDQy
IDQyIDRFIDBBIDAzIDBBIDA3IDBBICAuLi5NMDE4X0JCTi4uLi4uCiAgICAxQTgwOiA3OCAwMCAw
QSAyMCA2MCA3MCA0RCAzMCAzMSAzNyA1RiA0MiA0MiA0RSAwQSAwMyAgeC4uIGBwTTAxN19CQk4u
LgogICAgMUE5MDogMEEgMDcgMEEgNzggMDAgMEEgMjAgNjAgQTAgMzEgOTIgOTMgN0IgNjAgMEMg
MDAgIC4uLnguLiBgLjEuLntgLi4KICAgIDFBQTA6IDAwIDAzIDAwIDAwIDAwIDREIDMwIDMxIDM4
IDVGIDQyIDQyIDRFIDBBIDAzIDBBICAuLi4uLk0wMThfQkJOLi4uCiAgICAxQUIwOiAwNyAwQSA3
OCAwMCAwQSAyMCA2MCA3MCA0RCAzMCAzMSAzNyA1RiA0MiA0MiA0RSAgLi54Li4gYHBNMDE3X0JC
TgogICAgMUFDMDogMEEgMDMgMEEgMDcgMEEgNzggMDAgMEEgMjAgNjAgQTAgNEIgMTIgOTIgOTMg
NUMgIC4uLi4ueC4uIGAuSy4uLlwKICAgIDFBRDA6IDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5
IDMyIDQ1IDU0IDUwIDQ3IDBBIEZGICAvLl9TQl9QQ0kyRVRQRy4uCiAgICAxQUUwOiA3MCA3QSA0
RCAzMCAzMSAzNyA1RiA0MiA0MiA0RSAwQSAwNCAwMSAwQSA3OCAwMCAgcHpNMDE3X0JCTi4uLi54
LgogICAgMUFGMDogMEEgMTggMEEgMTAgMDAgNUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAgNDMgNDkg
MzIgIC4uLi4uXC8uX1NCX1BDSTIKICAgIDFCMDA6IDQ1IDU0IDUwIDQ3IEEwIDQxIDBGIDkxIDkz
IDVDIDJGIDAzIDVGIDUzIDQyIDVGICBFVFBHLkEuLi5cLy5fU0JfCiAgICAxQjEwOiA1MCA0MyA0
OSAzMiA0NSA1NCA1MCA0NyAwMSA5MyA1QyAyRiAwMyA1RiA1MyA0MiAgUENJMkVUUEcuLlwvLl9T
QgogICAgMUIyMDogNUYgNTAgNDMgNDkgMzIgNDUgNTQgNTAgNDcgMEEgMDMgQTAgNEEgMEMgNUIg
MTIgIF9QQ0kyRVRQRy4uLkouWy4KICAgIDFCMzA6IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQz
IDQ5IDMyIDQ3IDUwIDUwIDQ3IDAwICBcLy5fU0JfUENJMkdQUEcuCiAgICAxQjQwOiA0RCAzNCAz
NiAzMCAwRCAyMCAyMCAyMCAyMCA0RSA2RiA3NCA2OSA2NiA3OSAyMCAgTTQ2MC4gICAgTm90aWZ5
IAogICAgMUI1MDogMjggNUMgNUYgNTMgNDIgMkUgNTAgNDMgNDkgMzIgMkUgNDcgNTAgNTAgNDcg
MkMgIChcX1NCLlBDSTIuR1BQRywKICAgIDFCNjA6IDIwIDMwIDc4IDMyIDI5IDBBIDAwIDAwIDAw
IDAwIDAwIDAwIDAwIDg2IDVDIDJGICAgMHgyKS4uLi4uLi4uLlwvCiAgICAxQjcwOiAwMyA1RiA1
MyA0MiA1RiA1MCA0MyA0OSAzMiA0NyA1MCA1MCA0NyAwQSAwMiA1QiAgLl9TQl9QQ0kyR1BQRy4u
WwogICAgMUI4MDogMjIgMEEgNjQgNzAgNEQgMzAgMzEgMzcgNUYgNDIgNDIgNEUgMEEgMDQgMDEg
MEEgICIuZHBNMDE3X0JCTi4uLi4KICAgIDFCOTA6IDc4IDAwIDBBIDIwIDYwIEEwIDQwIDA2IDky
IDkzIDdCIDYwIDBDIDAwIDAwIDAzICB4Li4gYC5ALi4ue2AuLi4uCiAgICAxQkEwOiAwMCAwMCAw
MCA0RCAzMCAzMSAzOCA1RiA0MiA0MiA0RSAwQSAwNCAwMSAwQSA3OCAgLi4uTTAxOF9CQk4uLi4u
eAogICAgMUJCMDogMDAgMEEgMjAgNjAgNzAgNEQgMzAgMzEgMzcgNUYgNDIgNDIgNEUgMEEgMDQg
MDEgIC4uIGBwTTAxN19CQk4uLi4KICAgIDFCQzA6IDBBIDc4IDAwIDBBIDIwIDYwIEEwIDJGIDky
IDkzIDdCIDYwIDBDIDAwIDAwIDAzICAueC4uIGAuLy4ue2AuLi4uCiAgICAxQkQwOiAwMCAwMCAw
MCA0RCAzMCAzMSAzOCA1RiA0MiA0MiA0RSAwQSAwNCAwMSAwQSA3OCAgLi4uTTAxOF9CQk4uLi4u
eAogICAgMUJFMDogMDAgMEEgMjAgNjAgNzAgNEQgMzAgMzEgMzcgNUYgNDIgNDIgNEUgMEEgMDQg
MDEgIC4uIGBwTTAxN19CQk4uLi4KICAgIDFCRjA6IDBBIDc4IDAwIDBBIDIwIDYwIEEwIDQxIDEz
IDkyIDkzIDVDIDJGIDAzIDVGIDUzICAueC4uIGAuQS4uLlwvLl9TCiAgICAxQzAwOiA0MiA1RiA1
MCA0MyA0OSAzMiA0NSA1NCA1MCA0OCAwQSBGRiA3MCA3QSA0RCAzMCAgQl9QQ0kyRVRQSC4ucHpN
MAogICAgMUMxMDogMzEgMzcgNUYgNDIgNDIgNEUgMEEgMDQgMEEgMDIgMEEgNzggMDAgMEEgMTgg
MEEgIDE3X0JCTi4uLi4ueC4uLi4KICAgIDFDMjA6IDEwIDAwIDVDIDJGIDAzIDVGIDUzIDQyIDVG
IDUwIDQzIDQ5IDMyIDQ1IDU0IDUwICAuLlwvLl9TQl9QQ0kyRVRQCiAgICAxQzMwOiA0OCBBMCA0
NiAwRiA5MSA5MyA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAgSC5GLi4uXC8uX1NCX1BD
SQogICAgMUM0MDogMzIgNDUgNTQgNTAgNDggMDEgOTMgNUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAg
NDMgIDJFVFBILi5cLy5fU0JfUEMKICAgIDFDNTA6IDQ5IDMyIDQ1IDU0IDUwIDQ4IDBBIDAzIEEw
IDRGIDBDIDVCIDEyIDVDIDJGIDAzICBJMkVUUEguLi5PLlsuXC8uCiAgICAxQzYwOiA1RiA1MyA0
MiA1RiA1MCA0MyA0OSAzMiA0NyA1MCA1MCA0OCAwMCA0RCAzNCAzNiAgX1NCX1BDSTJHUFBILk00
NgogICAgMUM3MDogMzAgMEQgMjAgMjAgMjAgMjAgNEUgNkYgNzQgNjkgNjYgNzkgMjAgMjggNUMg
NUYgIDAuICAgIE5vdGlmeSAoXF8KICAgIDFDODA6IDUzIDQyIDJFIDUwIDQzIDQ5IDMyIDJFIDQ3
IDUwIDUwIDQ4IDJDIDIwIDMwIDc4ICBTQi5QQ0kyLkdQUEgsIDB4CiAgICAxQzkwOiAzMiAyOSAw
QSAwMCAwMCAwMCAwMCAwMCAwMCAwMCA4NiA1QyAyRiAwMyA1RiA1MyAgMikuLi4uLi4uLi5cLy5f
UwogICAgMUNBMDogNDIgNUYgNTAgNDMgNDkgMzIgNDcgNTAgNTAgNDggMEEgMDIgNUIgMjIgMEEg
NjQgIEJfUENJMkdQUEguLlsiLmQKICAgIDFDQjA6IDcwIDREIDMwIDMxIDM3IDVGIDQyIDQyIDRF
IDBBIDA0IDBBIDAyIDBBIDc4IDAwICBwTTAxN19CQk4uLi4uLnguCiAgICAxQ0MwOiAwQSAyMCA2
MCBBMCA0NCAwNiA5MiA5MyA3QiA2MCAwQyAwMCAwMCAwMyAwMCAwMCAgLiBgLkQuLi57YC4uLi4u
LgogICAgMUNEMDogMDAgNEQgMzAgMzEgMzggNUYgNDIgNDIgNEUgMEEgMDQgMEEgMDIgMEEgNzgg
MDAgIC5NMDE4X0JCTi4uLi4ueC4KICAgIDFDRTA6IDBBIDIwIDYwIDcwIDREIDMwIDMxIDM3IDVG
IDQyIDQyIDRFIDBBIDA0IDBBIDAyICAuIGBwTTAxN19CQk4uLi4uCiAgICAxQ0YwOiAwQSA3OCAw
MCAwQSAyMCA2MCBBMCAzMSA5MiA5MyA3QiA2MCAwQyAwMCAwMCAwMyAgLnguLiBgLjEuLntgLi4u
LgogICAgMUQwMDogMDAgMDAgMDAgNEQgMzAgMzEgMzggNUYgNDIgNDIgNEUgMEEgMDQgMEEgMDIg
MEEgIC4uLk0wMThfQkJOLi4uLi4KICAgIDFEMTA6IDc4IDAwIDBBIDIwIDYwIDcwIDREIDMwIDMx
IDM3IDVGIDQyIDQyIDRFIDBBIDA0ICB4Li4gYHBNMDE3X0JCTi4uCiAgICAxRDIwOiAwQSAwMiAw
QSA3OCAwMCAwQSAyMCA2MCBBMCA0QiAxMiA5MiA5MyA1QyAyRiAwMyAgLi4ueC4uIGAuSy4uLlwv
LgogICAgMUQzMDogNUYgNTMgNDIgNUYgNTAgNDMgNDkgMzIgNDUgNTQgMzEgMzUgMEEgRkYgNzAg
N0EgIF9TQl9QQ0kyRVQxNS4ucHoKICAgIDFENDA6IDREIDMwIDMxIDM3IDVGIDQyIDQyIDRFIDBB
IDA1IDAxIDBBIDc4IDAwIDBBIDE4ICBNMDE3X0JCTi4uLi54Li4uCiAgICAxRDUwOiAwQSAxMCAw
MCA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMiA0NSA1NCAgLi4uXC8uX1NCX1BDSTJF
VAogICAgMUQ2MDogMzEgMzUgQTAgNDEgMEYgOTEgOTMgNUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAg
NDMgIDE1LkEuLi5cLy5fU0JfUEMKICAgIDFENzA6IDQ5IDMyIDQ1IDU0IDMxIDM1IDAxIDkzIDVD
IDJGIDAzIDVGIDUzIDQyIDVGIDUwICBJMkVUMTUuLlwvLl9TQl9QCiAgICAxRDgwOiA0MyA0OSAz
MiA0NSA1NCAzMSAzNSAwQSAwMyBBMCA0QSAwQyA1QiAxMiA1QyAyRiAgQ0kyRVQxNS4uLkouWy5c
LwogICAgMUQ5MDogMDMgNUYgNTMgNDIgNUYgNTAgNDMgNDkgMzIgNDcgNTAgMzEgMzUgMDAgNEQg
MzQgIC5fU0JfUENJMkdQMTUuTTQKICAgIDFEQTA6IDM2IDMwIDBEIDIwIDIwIDIwIDIwIDRFIDZG
IDc0IDY5IDY2IDc5IDIwIDI4IDVDICA2MC4gICAgTm90aWZ5IChcCiAgICAxREIwOiA1RiA1MyA0
MiAyRSA1MCA0MyA0OSAzMiAyRSA0NyA1MCAzMSAzNSAyQyAyMCAzMCAgX1NCLlBDSTIuR1AxNSwg
MAogICAgMURDMDogNzggMzIgMjkgMEEgMDAgMDAgMDAgMDAgMDAgMDAgMDAgODYgNUMgMkYgMDMg
NUYgIHgyKS4uLi4uLi4uLlwvLl8KICAgIDFERDA6IDUzIDQyIDVGIDUwIDQzIDQ5IDMyIDQ3IDUw
IDMxIDM1IDBBIDAyIDVCIDIyIDBBICBTQl9QQ0kyR1AxNS4uWyIuCiAgICAxREUwOiA2NCA3MCA0
RCAzMCAzMSAzNyA1RiA0MiA0MiA0RSAwQSAwNSAwMSAwQSA3OCAwMCAgZHBNMDE3X0JCTi4uLi54
LgogICAgMURGMDogMEEgMjAgNjAgQTAgNDAgMDYgOTIgOTMgN0IgNjAgMEMgMDAgMDAgMDMgMDAg
MDAgIC4gYC5ALi4ue2AuLi4uLi4KICAgIDFFMDA6IDAwIDREIDMwIDMxIDM4IDVGIDQyIDQyIDRF
IDBBIDA1IDAxIDBBIDc4IDAwIDBBICAuTTAxOF9CQk4uLi4ueC4uCiAgICAxRTEwOiAyMCA2MCA3
MCA0RCAzMCAzMSAzNyA1RiA0MiA0MiA0RSAwQSAwNSAwMSAwQSA3OCAgIGBwTTAxN19CQk4uLi4u
eAogICAgMUUyMDogMDAgMEEgMjAgNjAgQTAgMkYgOTIgOTMgN0IgNjAgMEMgMDAgMDAgMDMgMDAg
MDAgIC4uIGAuLy4ue2AuLi4uLi4KICAgIDFFMzA6IDAwIDREIDMwIDMxIDM4IDVGIDQyIDQyIDRF
IDBBIDA1IDAxIDBBIDc4IDAwIDBBICAuTTAxOF9CQk4uLi4ueC4uCiAgICAxRTQwOiAyMCA2MCA3
MCA0RCAzMCAzMSAzNyA1RiA0MiA0MiA0RSAwQSAwNSAwMSAwQSA3OCAgIGBwTTAxN19CQk4uLi4u
eAogICAgMUU1MDogMDAgMEEgMjAgNjAgQTAgNDEgMTMgOTIgOTMgNUMgMkYgMDMgNUYgNTMgNDIg
NUYgIC4uIGAuQS4uLlwvLl9TQl8KICAgIDFFNjA6IDUwIDQzIDQ5IDMyIDQ1IDU0IDMyIDM1IDBB
IEZGIDcwIDdBIDREIDMwIDMxIDM3ICBQQ0kyRVQyNS4ucHpNMDE3CiAgICAxRTcwOiA1RiA0MiA0
MiA0RSAwQSAwNSAwQSAwMiAwQSA3OCAwMCAwQSAxOCAwQSAxMCAwMCAgX0JCTi4uLi4ueC4uLi4u
LgogICAgMUU4MDogNUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAgNDMgNDkgMzIgNDUgNTQgMzIgMzUg
QTAgIFwvLl9TQl9QQ0kyRVQyNS4KICAgIDFFOTA6IDQ2IDBGIDkxIDkzIDVDIDJGIDAzIDVGIDUz
IDQyIDVGIDUwIDQzIDQ5IDMyIDQ1ICBGLi4uXC8uX1NCX1BDSTJFCiAgICAxRUEwOiA1NCAzMiAz
NSAwMSA5MyA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMiAgVDI1Li5cLy5fU0JfUENJ
MgogICAgMUVCMDogNDUgNTQgMzIgMzUgMEEgMDMgQTAgNEYgMEMgNUIgMTIgNUMgMkYgMDMgNUYg
NTMgIEVUMjUuLi5PLlsuXC8uX1MKICAgIDFFQzA6IDQyIDVGIDUwIDQzIDQ5IDMyIDQ3IDUwIDMy
IDM1IDAwIDREIDM0IDM2IDMwIDBEICBCX1BDSTJHUDI1Lk00NjAuCiAgICAxRUQwOiAyMCAyMCAy
MCAyMCA0RSA2RiA3NCA2OSA2NiA3OSAyMCAyOCA1QyA1RiA1MyA0MiAgICAgIE5vdGlmeSAoXF9T
QgogICAgMUVFMDogMkUgNTAgNDMgNDkgMzIgMkUgNDcgNTAgMzIgMzUgMkMgMjAgMzAgNzggMzIg
MjkgIC5QQ0kyLkdQMjUsIDB4MikKICAgIDFFRjA6IDBBIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDg2
IDVDIDJGIDAzIDVGIDUzIDQyIDVGICAuLi4uLi4uLi5cLy5fU0JfCiAgICAxRjAwOiA1MCA0MyA0
OSAzMiA0NyA1MCAzMiAzNSAwQSAwMiA1QiAyMiAwQSA2NCA3MCA0RCAgUENJMkdQMjUuLlsiLmRw
TQogICAgMUYxMDogMzAgMzEgMzcgNUYgNDIgNDIgNEUgMEEgMDUgMEEgMDIgMEEgNzggMDAgMEEg
MjAgIDAxN19CQk4uLi4uLnguLiAKICAgIDFGMjA6IDYwIEEwIDQ0IDA2IDkyIDkzIDdCIDYwIDBD
IDAwIDAwIDAzIDAwIDAwIDAwIDREICBgLkQuLi57YC4uLi4uLi5NCiAgICAxRjMwOiAzMCAzMSAz
OCA1RiA0MiA0MiA0RSAwQSAwNSAwQSAwMiAwQSA3OCAwMCAwQSAyMCAgMDE4X0JCTi4uLi4ueC4u
IAogICAgMUY0MDogNjAgNzAgNEQgMzAgMzEgMzcgNUYgNDIgNDIgNEUgMEEgMDUgMEEgMDIgMEEg
NzggIGBwTTAxN19CQk4uLi4uLngKICAgIDFGNTA6IDAwIDBBIDIwIDYwIEEwIDMxIDkyIDkzIDdC
IDYwIDBDIDAwIDAwIDAzIDAwIDAwICAuLiBgLjEuLntgLi4uLi4uCiAgICAxRjYwOiAwMCA0RCAz
MCAzMSAzOCA1RiA0MiA0MiA0RSAwQSAwNSAwQSAwMiAwQSA3OCAwMCAgLk0wMThfQkJOLi4uLi54
LgogICAgMUY3MDogMEEgMjAgNjAgNzAgNEQgMzAgMzEgMzcgNUYgNDIgNDIgNEUgMEEgMDUgMEEg
MDIgIC4gYHBNMDE3X0JCTi4uLi4KICAgIDFGODA6IDBBIDc4IDAwIDBBIDIwIDYwIEEwIDQxIDEz
IDkyIDkzIDVDIDJGIDAzIDVGIDUzICAueC4uIGAuQS4uLlwvLl9TCiAgICAxRjkwOiA0MiA1RiA1
MCA0MyA0OSAzMiA0NSA1NCAzMyAzNSAwQSBGRiA3MCA3QSA0RCAzMCAgQl9QQ0kyRVQzNS4ucHpN
MAogICAgMUZBMDogMzEgMzcgNUYgNDIgNDIgNEUgMEEgMDUgMEEgMDMgMEEgNzggMDAgMEEgMTgg
MEEgIDE3X0JCTi4uLi4ueC4uLi4KICAgIDFGQjA6IDEwIDAwIDVDIDJGIDAzIDVGIDUzIDQyIDVG
IDUwIDQzIDQ5IDMyIDQ1IDU0IDMzICAuLlwvLl9TQl9QQ0kyRVQzCiAgICAxRkMwOiAzNSBBMCA0
NiAwRiA5MSA5MyA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAgNS5GLi4uXC8uX1NCX1BD
SQogICAgMUZEMDogMzIgNDUgNTQgMzMgMzUgMDEgOTMgNUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAg
NDMgIDJFVDM1Li5cLy5fU0JfUEMKICAgIDFGRTA6IDQ5IDMyIDQ1IDU0IDMzIDM1IDBBIDAzIEEw
IDRGIDBDIDVCIDEyIDVDIDJGIDAzICBJMkVUMzUuLi5PLlsuXC8uCiAgICAxRkYwOiA1RiA1MyA0
MiA1RiA1MCA0MyA0OSAzMiA0NyA1MCAzMyAzNSAwMCA0RCAzNCAzNiAgX1NCX1BDSTJHUDM1Lk00
NgogICAgMjAwMDogMzAgMEQgMjAgMjAgMjAgMjAgNEUgNkYgNzQgNjkgNjYgNzkgMjAgMjggNUMg
NUYgIDAuICAgIE5vdGlmeSAoXF8KICAgIDIwMTA6IDUzIDQyIDJFIDUwIDQzIDQ5IDMyIDJFIDQ3
IDUwIDMzIDM1IDJDIDIwIDMwIDc4ICBTQi5QQ0kyLkdQMzUsIDB4CiAgICAyMDIwOiAzMiAyOSAw
QSAwMCAwMCAwMCAwMCAwMCAwMCAwMCA4NiA1QyAyRiAwMyA1RiA1MyAgMikuLi4uLi4uLi5cLy5f
UwogICAgMjAzMDogNDIgNUYgNTAgNDMgNDkgMzIgNDcgNTAgMzMgMzUgMEEgMDIgNUIgMjIgMEEg
NjQgIEJfUENJMkdQMzUuLlsiLmQKICAgIDIwNDA6IDcwIDREIDMwIDMxIDM3IDVGIDQyIDQyIDRF
IDBBIDA1IDBBIDAzIDBBIDc4IDAwICBwTTAxN19CQk4uLi4uLnguCiAgICAyMDUwOiAwQSAyMCA2
MCBBMCA0NCAwNiA5MiA5MyA3QiA2MCAwQyAwMCAwMCAwMyAwMCAwMCAgLiBgLkQuLi57YC4uLi4u
LgogICAgMjA2MDogMDAgNEQgMzAgMzEgMzggNUYgNDIgNDIgNEUgMEEgMDUgMEEgMDMgMEEgNzgg
MDAgIC5NMDE4X0JCTi4uLi4ueC4KICAgIDIwNzA6IDBBIDIwIDYwIDcwIDREIDMwIDMxIDM3IDVG
IDQyIDQyIDRFIDBBIDA1IDBBIDAzICAuIGBwTTAxN19CQk4uLi4uCiAgICAyMDgwOiAwQSA3OCAw
MCAwQSAyMCA2MCBBMCAzMSA5MiA5MyA3QiA2MCAwQyAwMCAwMCAwMyAgLnguLiBgLjEuLntgLi4u
LgogICAgMjA5MDogMDAgMDAgMDAgNEQgMzAgMzEgMzggNUYgNDIgNDIgNEUgMEEgMDUgMEEgMDMg
MEEgIC4uLk0wMThfQkJOLi4uLi4KICAgIDIwQTA6IDc4IDAwIDBBIDIwIDYwIDcwIDREIDMwIDMx
IDM3IDVGIDQyIDQyIDRFIDBBIDA1ICB4Li4gYHBNMDE3X0JCTi4uCiAgICAyMEIwOiAwQSAwMyAw
QSA3OCAwMCAwQSAyMCA2MCBBMCA0MSAxMyA5MiA5MyA1QyAyRiAwMyAgLi4ueC4uIGAuQS4uLlwv
LgogICAgMjBDMDogNUYgNTMgNDIgNUYgNTAgNDMgNDkgMzIgNDUgNTQgMzQgMzUgMEEgRkYgNzAg
N0EgIF9TQl9QQ0kyRVQ0NS4ucHoKICAgIDIwRDA6IDREIDMwIDMxIDM3IDVGIDQyIDQyIDRFIDBB
IDA1IDBBIDA0IDBBIDc4IDAwIDBBICBNMDE3X0JCTi4uLi4ueC4uCiAgICAyMEUwOiAxOCAwQSAx
MCAwMCA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMiA0NSAgLi4uLlwvLl9TQl9QQ0ky
RQogICAgMjBGMDogNTQgMzQgMzUgQTAgNDYgMEYgOTEgOTMgNUMgMkYgMDMgNUYgNTMgNDIgNUYg
NTAgIFQ0NS5GLi4uXC8uX1NCX1AKICAgIDIxMDA6IDQzIDQ5IDMyIDQ1IDU0IDM0IDM1IDAxIDkz
IDVDIDJGIDAzIDVGIDUzIDQyIDVGICBDSTJFVDQ1Li5cLy5fU0JfCiAgICAyMTEwOiA1MCA0MyA0
OSAzMiA0NSA1NCAzNCAzNSAwQSAwMyBBMCA0RiAwQyA1QiAxMiA1QyAgUENJMkVUNDUuLi5PLlsu
XAogICAgMjEyMDogMkYgMDMgNUYgNTMgNDIgNUYgNTAgNDMgNDkgMzIgNDcgNTAgMzQgMzUgMDAg
NEQgIC8uX1NCX1BDSTJHUDQ1Lk0KICAgIDIxMzA6IDM0IDM2IDMwIDBEIDIwIDIwIDIwIDIwIDRF
IDZGIDc0IDY5IDY2IDc5IDIwIDI4ICA0NjAuICAgIE5vdGlmeSAoCiAgICAyMTQwOiA1QyA1RiA1
MyA0MiAyRSA1MCA0MyA0OSAzMiAyRSA0NyA1MCAzNCAzNSAyQyAyMCAgXF9TQi5QQ0kyLkdQNDUs
IAogICAgMjE1MDogMzAgNzggMzIgMjkgMEEgMDAgMDAgMDAgMDAgMDAgMDAgMDAgODYgNUMgMkYg
MDMgIDB4MikuLi4uLi4uLi5cLy4KICAgIDIxNjA6IDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMyIDQ3
IDUwIDM0IDM1IDBBIDAyIDVCIDIyICBfU0JfUENJMkdQNDUuLlsiCiAgICAyMTcwOiAwQSA2NCA3
MCA0RCAzMCAzMSAzNyA1RiA0MiA0MiA0RSAwQSAwNSAwQSAwNCAwQSAgLmRwTTAxN19CQk4uLi4u
LgogICAgMjE4MDogNzggMDAgMEEgMjAgNjAgQTAgNDQgMDYgOTIgOTMgN0IgNjAgMEMgMDAgMDAg
MDMgIHguLiBgLkQuLi57YC4uLi4KICAgIDIxOTA6IDAwIDAwIDAwIDREIDMwIDMxIDM4IDVGIDQy
IDQyIDRFIDBBIDA1IDBBIDA0IDBBICAuLi5NMDE4X0JCTi4uLi4uCiAgICAyMUEwOiA3OCAwMCAw
QSAyMCA2MCA3MCA0RCAzMCAzMSAzNyA1RiA0MiA0MiA0RSAwQSAwNSAgeC4uIGBwTTAxN19CQk4u
LgogICAgMjFCMDogMEEgMDQgMEEgNzggMDAgMEEgMjAgNjAgQTAgMzEgOTIgOTMgN0IgNjAgMEMg
MDAgIC4uLnguLiBgLjEuLntgLi4KICAgIDIxQzA6IDAwIDAzIDAwIDAwIDAwIDREIDMwIDMxIDM4
IDVGIDQyIDQyIDRFIDBBIDA1IDBBICAuLi4uLk0wMThfQkJOLi4uCiAgICAyMUQwOiAwNCAwQSA3
OCAwMCAwQSAyMCA2MCA3MCA0RCAzMCAzMSAzNyA1RiA0MiA0MiA0RSAgLi54Li4gYHBNMDE3X0JC
TgogICAgMjFFMDogMEEgMDUgMEEgMDQgMEEgNzggMDAgMEEgMjAgNjAgQTAgNEIgMTIgOTIgOTMg
NUMgIC4uLi4ueC4uIGAuSy4uLlwKICAgIDIxRjA6IDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5
IDMyIDQ1IDU0IDMxIDM3IDBBIEZGICAvLl9TQl9QQ0kyRVQxNy4uCiAgICAyMjAwOiA3MCA3QSA0
RCAzMCAzMSAzNyA1RiA0MiA0MiA0RSAwQSAwNyAwMSAwQSA3OCAwMCAgcHpNMDE3X0JCTi4uLi54
LgogICAgMjIxMDogMEEgMTggMEEgMTAgMDAgNUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAgNDMgNDkg
MzIgIC4uLi4uXC8uX1NCX1BDSTIKICAgIDIyMjA6IDQ1IDU0IDMxIDM3IEEwIDQxIDBGIDkxIDkz
IDVDIDJGIDAzIDVGIDUzIDQyIDVGICBFVDE3LkEuLi5cLy5fU0JfCiAgICAyMjMwOiA1MCA0MyA0
OSAzMiA0NSA1NCAzMSAzNyAwMSA5MyA1QyAyRiAwMyA1RiA1MyA0MiAgUENJMkVUMTcuLlwvLl9T
QgogICAgMjI0MDogNUYgNTAgNDMgNDkgMzIgNDUgNTQgMzEgMzcgMEEgMDMgQTAgNEEgMEMgNUIg
MTIgIF9QQ0kyRVQxNy4uLkouWy4KICAgIDIyNTA6IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQz
IDQ5IDMyIDQ3IDUwIDMxIDM3IDAwICBcLy5fU0JfUENJMkdQMTcuCiAgICAyMjYwOiA0RCAzNCAz
NiAzMCAwRCAyMCAyMCAyMCAyMCA0RSA2RiA3NCA2OSA2NiA3OSAyMCAgTTQ2MC4gICAgTm90aWZ5
IAogICAgMjI3MDogMjggNUMgNUYgNTMgNDIgMkUgNTAgNDMgNDkgMzIgMkUgNDcgNTAgMzEgMzcg
MkMgIChcX1NCLlBDSTIuR1AxNywKICAgIDIyODA6IDIwIDMwIDc4IDMyIDI5IDBBIDAwIDAwIDAw
IDAwIDAwIDAwIDAwIDg2IDVDIDJGICAgMHgyKS4uLi4uLi4uLlwvCiAgICAyMjkwOiAwMyA1RiA1
MyA0MiA1RiA1MCA0MyA0OSAzMiA0NyA1MCAzMSAzNyAwQSAwMiA1QiAgLl9TQl9QQ0kyR1AxNy4u
WwogICAgMjJBMDogMjIgMEEgNjQgNzAgNEQgMzAgMzEgMzcgNUYgNDIgNDIgNEUgMEEgMDcgMDEg
MEEgICIuZHBNMDE3X0JCTi4uLi4KICAgIDIyQjA6IDc4IDAwIDBBIDIwIDYwIEEwIDQwIDA2IDky
IDkzIDdCIDYwIDBDIDAwIDAwIDAzICB4Li4gYC5ALi4ue2AuLi4uCiAgICAyMkMwOiAwMCAwMCAw
MCA0RCAzMCAzMSAzOCA1RiA0MiA0MiA0RSAwQSAwNyAwMSAwQSA3OCAgLi4uTTAxOF9CQk4uLi4u
eAogICAgMjJEMDogMDAgMEEgMjAgNjAgNzAgNEQgMzAgMzEgMzcgNUYgNDIgNDIgNEUgMEEgMDcg
MDEgIC4uIGBwTTAxN19CQk4uLi4KICAgIDIyRTA6IDBBIDc4IDAwIDBBIDIwIDYwIEEwIDJGIDky
IDkzIDdCIDYwIDBDIDAwIDAwIDAzICAueC4uIGAuLy4ue2AuLi4uCiAgICAyMkYwOiAwMCAwMCAw
MCA0RCAzMCAzMSAzOCA1RiA0MiA0MiA0RSAwQSAwNyAwMSAwQSA3OCAgLi4uTTAxOF9CQk4uLi4u
eAogICAgMjMwMDogMDAgMEEgMjAgNjAgNzAgNEQgMzAgMzEgMzcgNUYgNDIgNDIgNEUgMEEgMDcg
MDEgIC4uIGBwTTAxN19CQk4uLi4KICAgIDIzMTA6IDBBIDc4IDAwIDBBIDIwIDYwIEEwIDQxIDEz
IDkyIDkzIDVDIDJGIDAzIDVGIDUzICAueC4uIGAuQS4uLlwvLl9TCiAgICAyMzIwOiA0MiA1RiA1
MCA0MyA0OSAzMiA0NSA1NCAzMiAzNyAwQSBGRiA3MCA3QSA0RCAzMCAgQl9QQ0kyRVQyNy4ucHpN
MAogICAgMjMzMDogMzEgMzcgNUYgNDIgNDIgNEUgMEEgMDcgMEEgMDIgMEEgNzggMDAgMEEgMTgg
MEEgIDE3X0JCTi4uLi4ueC4uLi4KICAgIDIzNDA6IDEwIDAwIDVDIDJGIDAzIDVGIDUzIDQyIDVG
IDUwIDQzIDQ5IDMyIDQ1IDU0IDMyICAuLlwvLl9TQl9QQ0kyRVQyCiAgICAyMzUwOiAzNyBBMCA0
NiAwRiA5MSA5MyA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAgNy5GLi4uXC8uX1NCX1BD
SQogICAgMjM2MDogMzIgNDUgNTQgMzIgMzcgMDEgOTMgNUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAg
NDMgIDJFVDI3Li5cLy5fU0JfUEMKICAgIDIzNzA6IDQ5IDMyIDQ1IDU0IDMyIDM3IDBBIDAzIEEw
IDRGIDBDIDVCIDEyIDVDIDJGIDAzICBJMkVUMjcuLi5PLlsuXC8uCiAgICAyMzgwOiA1RiA1MyA0
MiA1RiA1MCA0MyA0OSAzMiA0NyA1MCAzMiAzNyAwMCA0RCAzNCAzNiAgX1NCX1BDSTJHUDI3Lk00
NgogICAgMjM5MDogMzAgMEQgMjAgMjAgMjAgMjAgNEUgNkYgNzQgNjkgNjYgNzkgMjAgMjggNUMg
NUYgIDAuICAgIE5vdGlmeSAoXF8KICAgIDIzQTA6IDUzIDQyIDJFIDUwIDQzIDQ5IDMyIDJFIDQ3
IDUwIDMyIDM3IDJDIDIwIDMwIDc4ICBTQi5QQ0kyLkdQMjcsIDB4CiAgICAyM0IwOiAzMiAyOSAw
QSAwMCAwMCAwMCAwMCAwMCAwMCAwMCA4NiA1QyAyRiAwMyA1RiA1MyAgMikuLi4uLi4uLi5cLy5f
UwogICAgMjNDMDogNDIgNUYgNTAgNDMgNDkgMzIgNDcgNTAgMzIgMzcgMEEgMDIgNUIgMjIgMEEg
NjQgIEJfUENJMkdQMjcuLlsiLmQKICAgIDIzRDA6IDcwIDREIDMwIDMxIDM3IDVGIDQyIDQyIDRF
IDBBIDA3IDBBIDAyIDBBIDc4IDAwICBwTTAxN19CQk4uLi4uLnguCiAgICAyM0UwOiAwQSAyMCA2
MCBBMCA0NCAwNiA5MiA5MyA3QiA2MCAwQyAwMCAwMCAwMyAwMCAwMCAgLiBgLkQuLi57YC4uLi4u
LgogICAgMjNGMDogMDAgNEQgMzAgMzEgMzggNUYgNDIgNDIgNEUgMEEgMDcgMEEgMDIgMEEgNzgg
MDAgIC5NMDE4X0JCTi4uLi4ueC4KICAgIDI0MDA6IDBBIDIwIDYwIDcwIDREIDMwIDMxIDM3IDVG
IDQyIDQyIDRFIDBBIDA3IDBBIDAyICAuIGBwTTAxN19CQk4uLi4uCiAgICAyNDEwOiAwQSA3OCAw
MCAwQSAyMCA2MCBBMCAzMSA5MiA5MyA3QiA2MCAwQyAwMCAwMCAwMyAgLnguLiBgLjEuLntgLi4u
LgogICAgMjQyMDogMDAgMDAgMDAgNEQgMzAgMzEgMzggNUYgNDIgNDIgNEUgMEEgMDcgMEEgMDIg
MEEgIC4uLk0wMThfQkJOLi4uLi4KICAgIDI0MzA6IDc4IDAwIDBBIDIwIDYwIDcwIDREIDMwIDMx
IDM3IDVGIDQyIDQyIDRFIDBBIDA3ICB4Li4gYHBNMDE3X0JCTi4uCiAgICAyNDQwOiAwQSAwMiAw
QSA3OCAwMCAwQSAyMCA2MCAgICAgICAgICAgICAgICAgICAgICAgICAgLi4ueC4uIGAKClNTRFQg
QCAweDAwMDAwMDAwMDAwMDAwMDAKICAgIDAwMDA6IDUzIDUzIDQ0IDU0IDg3IDIzIDAwIDAwIDAy
IDBGIDQxIDREIDQ0IDAwIDAwIDAwICBTU0RULiMuLi4uQU1ELi4uCiAgICAwMDEwOiA0MSA0RiA0
NCAyMCAyMCAyMCAyMCAyMCAwMSAwMCAwMCAwMCA0OSA0RSA1NCA0QyAgQU9EICAgICAuLi4uSU5U
TAogICAgMDAyMDogMzEgMDMgMjMgMjAgMDggNEYgNDIgNDkgNDQgMTIgNDQgMzkgQzEgMEEgNDAg
MEMgIDEuIyAuT0JJRC5EOS4uQC4KICAgIDAwMzA6IDAxIDAwIDA0IDAwIDBDIDAyIDAwIDA0IDAw
IDBDIDI3IDAwIDAyIDAwIDBDIDI2ICAuLi4uLi4uLi4uJy4uLi4mCiAgICAwMDQwOiAwMCAwMiAw
MCAwQyAwMSAwMCAwMiAwMCAwQyAwMiAwMCAwMiAwMCAwQyAwNiAwMCAgLi4uLi4uLi4uLi4uLi4u
LgogICAgMDA1MDogMDIgMDAgMEMgMDUgMDAgMDIgMDAgMEMgMDkgMDAgMDIgMDAgMEMgMTAgMDAg
MDIgIC4uLi4uLi4uLi4uLi4uLi4KICAgIDAwNjA6IDAwIDBDIDBCIDAwIDAyIDAwIDBDIDE1IDAw
IDAyIDAwIDBDIDBGIDAwIDAyIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwMDcwOiAwQyAwRSAw
MCAwMiAwMCAwQyAwRCAwMCAwMiAwMCAwQyAxMiAwMCAwMiAwMCAwQyAgLi4uLi4uLi4uLi4uLi4u
LgogICAgMDA4MDogMTEgMDAgMDIgMDAgMEMgMTcgMDAgMDIgMDAgMEMgMTYgMDAgMDIgMDAgMEMg
MTggIC4uLi4uLi4uLi4uLi4uLi4KICAgIDAwOTA6IDAwIDAyIDAwIDBDIDE5IDAwIDAyIDAwIDBD
IDFCIDAwIDAyIDAwIDBDIDFBIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwMEEwOiAwMiAwMCAw
QyAxQyAwMCAwMiAwMCAwQyAxRCAwMCAwMiAwMCAwQyAxRiAwMCAwMiAgLi4uLi4uLi4uLi4uLi4u
LgogICAgMDBCMDogMDAgMEMgMUUgMDAgMDIgMDAgMEMgMkQgMDAgMDIgMDAgMEMgMDcgMDAgMDIg
MDAgIC4uLi4uLi4tLi4uLi4uLi4KICAgIDAwQzA6IDBDIDIzIDAwIDAyIDAwIDBDIDI0IDAwIDAy
IDAwIDBDIDI1IDAwIDAyIDAwIDBDICAuIy4uLi4kLi4uLiUuLi4uCiAgICAwMEQwOiAzNiAwMCAw
MiAwMCAwQyAzMyAwMCAwMiAwMCAwQyAzNSAwMCAwMiAwMCAwQyAwMSAgNi4uLi4zLi4uLjUuLi4u
LgogICAgMDBFMDogMDAgMDMgMDAgMEMgMzEgMDAgMDIgMDAgMEMgMzIgMDAgMDIgMDAgMEMgMzQg
MDAgIC4uLi4xLi4uLjIuLi4uNC4KICAgIDAwRjA6IDAyIDAwIDBDIDMwIDAwIDAyIDAwIDBDIDM4
IDAwIDAyIDAwIDAwIDAwIDAwIDAwICAuLi4wLi4uLjguLi4uLi4uCiAgICAwMTAwOiAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4u
LgogICAgMDExMDogMDAgMDAgMDAgMDAgMDAgMDEgMDAgMDAgMDEgMDEgMDEgMDEgMDEgMDEgMDEg
MDEgIC4uLi4uLi4uLi4uLi4uLi4KICAgIDAxMjA6IDAxIDAxIDAxIDAxIDAxIDAxIDAxIDAxIDAx
IDAxIDAxIDAxIDAxIDAxIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwMTMwOiAwMSAwMSAw
MCAwMSAwMCAwMCAwMSAwMCAwMSAwMSAwMSAwMSAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4u
LgogICAgMDE0MDogMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAg
MDAgIC4uLi4uLi4uLi4uLi4uLi4KICAgIDAxNTA6IDAwIDAwIDAwIDBEIDQzIDZGIDZEIDZEIDYx
IDZFIDY0IDIwIDQyIDc1IDY2IDY2ICAuLi4uQ29tbWFuZCBCdWZmCiAgICAwMTYwOiA2NSA3MiAy
MCA1MyA3NCA2MSA3MiA3NCAwMCAwRCA0MyA2RiA2RCA2RCA2MSA2RSAgZXIgU3RhcnQuLkNvbW1h
bgogICAgMDE3MDogNjQgMjAgNDIgNzUgNjYgNjYgNjUgNzIgMjAgNDUgNkUgNjQgMDAgMEQgNTMg
NkYgIGQgQnVmZmVyIEVuZC4uU28KICAgIDAxODA6IDY2IDc0IDc3IDYxIDcyIDY1IDIwIDQ0IDZG
IDc3IDZFIDYzIDZGIDcyIDY1IDIwICBmdHdhcmUgRG93bmNvcmUgCiAgICAwMTkwOiA0MyA2RiA2
RSA2NiA2OSA2NyAwMCAwRCA1MyA2NSA3NCAyMCA1MyA0RCA1NCA0NSAgQ29uZmlnLi5TZXQgU01U
RQogICAgMDFBMDogNkUgMDAgMEQgNTMgNjUgNzQgMjAgNEQgNjUgNkQgMjAgNDMgNkMgNkYgNjMg
NkIgIG4uLlNldCBNZW0gQ2xvY2sKICAgIDAxQjA6IDAwIDBEIDUzIDY1IDc0IDIwIDU0IDYzIDZD
IDAwIDBEIDUzIDY1IDc0IDIwIDU0ICAuLlNldCBUY2wuLlNldCBUCiAgICAwMUMwOiA3MiA3MCAw
MCAwRCA1MyA2NSA3NCAyMCA1NCA3MiA2MSA3MyAwMCAwRCA1MyA2NSAgcnAuLlNldCBUcmFzLi5T
ZQogICAgMDFEMDogNzQgMjAgNTQgNzIgNjMgMDAgMEQgNTMgNjUgNzQgMjAgNTQgNzcgNzIgMDAg
MEQgIHQgVHJjLi5TZXQgVHdyLi4KICAgIDAxRTA6IDUzIDY1IDc0IDIwIDU0IDcyIDY2IDYzIDMy
IDAwIDBEIDUzIDY1IDc0IDIwIDU0ICBTZXQgVHJmYzIuLlNldCBUCiAgICAwMUYwOiA3MiA3NCA3
MCAwMCAwRCA1MyA2NSA3NCAyMCA1NCA3MiA3MiA2NCA0QyAwMCAwRCAgcnRwLi5TZXQgVHJyZEwu
LgogICAgMDIwMDogNTMgNjUgNzQgMjAgNTQgNzIgNzIgNjQgNTMgMDAgMEQgNTMgNjUgNzQgMjAg
NTQgIFNldCBUcnJkUy4uU2V0IFQKICAgIDAyMTA6IDY2IDYxIDc3IDAwIDBEIDUzIDY1IDc0IDIw
IDU0IDc3IDc0IDcyIDRDIDAwIDBEICBmYXcuLlNldCBUd3RyTC4uCiAgICAwMjIwOiA1MyA2NSA3
NCAyMCA1NCA3NyA3NCA3MiA1MyAwMCAwRCA1MyA2NSA3NCAyMCA1NCAgU2V0IFR3dHJTLi5TZXQg
VAogICAgMDIzMDogNzIgNjQgNzIgNjQgNTMgNjMgNEMgMDAgMEQgNTMgNjUgNzQgMjAgNTQgNzIg
NjQgIHJkcmRTY0wuLlNldCBUcmQKICAgIDAyNDA6IDcyIDY0IDUzIDYzIDAwIDBEIDUzIDY1IDc0
IDIwIDU0IDcyIDY0IDcyIDY0IDUzICByZFNjLi5TZXQgVHJkcmRTCiAgICAwMjUwOiA2NCAwMCAw
RCA1MyA2NSA3NCAyMCA1NCA3MiA2NCA3MiA2NCA0NCA2NCAwMCAwRCAgZC4uU2V0IFRyZHJkRGQu
LgogICAgMDI2MDogNTMgNjUgNzQgMjAgNTQgNzcgNzIgNzcgNzIgNTMgNjMgNEMgMDAgMEQgNTMg
NjUgIFNldCBUd3J3clNjTC4uU2UKICAgIDAyNzA6IDc0IDIwIDU0IDc3IDcyIDc3IDcyIDUzIDYz
IDAwIDBEIDUzIDY1IDc0IDIwIDU0ICB0IFR3cndyU2MuLlNldCBUCiAgICAwMjgwOiA3NyA3MiA3
NyA3MiA1MyA2NCAwMCAwRCA1MyA2NSA3NCAyMCA1NCA3NyA3MiA3NyAgd3J3clNkLi5TZXQgVHdy
dwogICAgMDI5MDogNzIgNDQgNjQgMDAgMEQgNTMgNjUgNzQgMjAgNTQgNzcgNzIgNzIgNjQgMDAg
MEQgIHJEZC4uU2V0IFR3cnJkLi4KICAgIDAyQTA6IDUzIDY1IDc0IDIwIDU0IDcyIDY0IDc3IDcy
IDAwIDBEIDUzIDY1IDc0IDIwIDQzICBTZXQgVHJkd3IuLlNldCBDCiAgICAwMkIwOiA2MSA2NCA0
MiA3NSA3MyA0MSA2NCA2NCA3MiA0MyA2RCA2NCA0NCA3MiA3NiA1MyAgYWRCdXNBZGRyQ21kRHJ2
UwogICAgMDJDMDogNzQgNzIgNjUgNkUgMDAgMEQgNTMgNjUgNzQgMjAgNTAgNzIgNkYgNjMgNEYg
NDQgIHRyZW4uLlNldCBQcm9jT0QKICAgIDAyRDA6IDU0IDAwIDBEIDUzIDY1IDc0IDIwIDUyIDc0
IDc0IDU3IDcyIDAwIDBEIDUzIDY1ICBULi5TZXQgUnR0V3IuLlNlCiAgICAwMkUwOiA3NCAyMCA1
MiA3NCA3NCA1MCA2MSA3MiA2QiAwMCAwRCA1MyA2NSA3NCAyMCA1MCAgdCBSdHRQYXJrLi5TZXQg
UAogICAgMDJGMDogNkYgNzcgNjUgNzIgNDQgNzcgNkYgNkUgNDUgNkUgMDAgMEQgNTMgNjUgNzQg
MjAgIG93ZXJEd29uRW4uLlNldCAKICAgIDAzMDA6IDQzIDQzIDRDIDRCIDIwIDQ2IDZEIDYxIDc4
IDAwIDBEIDUzIDY1IDc0IDIwIDQ2ICBDQ0xLIEZtYXguLlNldCBGCiAgICAwMzEwOiA0MyA0QyA0
QiAyMCA0RiA0MyAyMCA0RCA2RiA2NCA2NSAwMCAwRCA1MyA2NSA3NCAgQ0xLIE9DIE1vZGUuLlNl
dAogICAgMDMyMDogMjAgNDYgNDMgNEMgNEIgMjAgNDYgNzIgNjUgNzEgNzUgNjUgNkUgNjMgNzkg
MDAgICBGQ0xLIEZyZXF1ZW5jeS4KICAgIDAzMzA6IDBEIDUzIDY1IDc0IDIwIDU2IDQ0IDQ0IDQ5
IDRGIDAwIDBEIDUzIDY1IDc0IDIwICAuU2V0IFZERElPLi5TZXQgCiAgICAwMzQwOiA0OSA2RSA3
NCA2NSA3MiA2QyA2NSA2MSA3NiA2NSAyMCA0RCA2RiA2NCA2NSAwMCAgSW50ZXJsZWF2ZSBNb2Rl
LgogICAgMDM1MDogMEQgNTMgNjUgNzQgMjAgNDkgNkUgNzQgNjUgNzIgNkMgNjUgNjEgNzYgNjUg
MjAgIC5TZXQgSW50ZXJsZWF2ZSAKICAgIDAzNjA6IDUzIDY5IDdBIDY1IDAwIDBEIDUzIDY1IDc0
IDIwIDUzIDRGIDQzIDIwIDU2IDQ5ICBTaXplLi5TZXQgU09DIFZJCiAgICAwMzcwOiA0NCAwMCAw
RCA1MyA2NSA3NCAyMCA0MyA0QyA0NCA0RiA1RiA1NiA0NCA0NCA1MCAgRC4uU2V0IENMRE9fVkRE
UAogICAgMDM4MDogMDAgMEQgNTMgNjUgNzQgMjAgNDMgNEMgNDQgNEYgMjAgNTYgNDQgNDQgNDcg
MDAgIC4uU2V0IENMRE8gVkRERy4KICAgIDAzOTA6IDBEIDAwIDBEIDAwIDBEIDAwIDBEIDAwIDBE
IDAwIDBEIDAwIDBEIDAwIDBEIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwM0EwOiAwRCAwMCAw
RCAwMCAwRCAwMCAwRCAwMCAwRCAwMCAwRCAwMCAwRCAwMCAwRCAwMCAgLi4uLi4uLi4uLi4uLi4u
LgogICAgMDNCMDogMEQgMDAgMEQgMDAgMEQgMDAgMEQgMDAgMEQgMDAgMEQgMDAgMEQgMDAgMDgg
NEYgIC4uLi4uLi4uLi4uLi4uLk8KICAgIDAzQzA6IDQyIDQ5IDQ1IDEyIDRGIDMyIEMxIDBBIDQw
IDBDIDAzIDAwIDAxIDAwIDBDIDA0ICBCSUUuTzIuLkAuLi4uLi4uCiAgICAwM0QwOiAwMCAwMSAw
MCAwQyAwNSAwMCAwMSAwMCAwQyAwNiAwMCAwMSAwMCAwQyAwNyAwMCAgLi4uLi4uLi4uLi4uLi4u
LgogICAgMDNFMDogMDEgMDAgMEMgMDggMDAgMDEgMDAgMEMgMEEgMDAgMDUgMDAgMEMgM0IgMDAg
MDIgIC4uLi4uLi4uLi4uLi47Li4KICAgIDAzRjA6IDAwIDBDIDNDIDAwIDAyIDAwIDBDIDNEIDAw
IDAyIDAwIDBDIDQxIDAwIDAyIDAwICAuLjwuLi4uPS4uLi5BLi4uCiAgICAwNDAwOiAwQyA0MiAw
MCAwMiAwMCAwQyAzRSAwMCAwMiAwMCAwQyAzRiAwMCAwMiAwMCAwQyAgLkIuLi4uPi4uLi4/Li4u
LgogICAgMDQxMDogNDAgMDAgMDIgMDAgMEMgMDEgMDAgMDUgMDAgMEMgMDIgMDAgMDUgMDAgMEMg
MDMgIEAuLi4uLi4uLi4uLi4uLi4KICAgIDA0MjA6IDAwIDA1IDAwIDBDIDA0IDAwIDA1IDAwIDBD
IDA3IDAwIDAzIDAwIDBDIDAzIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwNDMwOiAwMyAwMCAw
QyAwNCAwMCAwMyAwMCAwQyA0MyAwMCAwMiAwMCAwQyAwNiAwMCAwMyAgLi4uLi4uLi5DLi4uLi4u
LgogICAgMDQ0MDogMDAgMEMgMEIgMDAgMDUgMDAgMEMgNDQgMDAgMDIgMDAgMEMgNDggMDAgMDIg
MDAgIC4uLi4uLi5ELi4uLkguLi4KICAgIDA0NTA6IDBDIDA2IDAwIDA1IDAwIDBDIDAxIDAwIDA2
IDAwIDBDIDA4IDAwIDA1IDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwNDYwOiAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4u
LgogICAgMDQ3MDogMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAg
MDAgIC4uLi4uLi4uLi4uLi4uLi4KICAgIDA0ODA6IDAwIDAxIDAxIDAxIDAxIDAxIDAxIDAxIDAx
IDAxIDAxIDAwIDAwIDAxIDAxIDAxICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwNDkwOiAwMSAwMSAw
MSAwMSAwMSAwMSAwMSAwMSAwMSAwMSAwMCAwMCAwMCAwMSAwMCAwMCAgLi4uLi4uLi4uLi4uLi4u
LgogICAgMDRBMDogMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAg
MDAgIC4uLi4uLi4uLi4uLi4uLi4KICAgIDA0QjA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAw
IDAwIDAwIDAwIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwNEMwOiAwMCAwRCA0
NyA2NSA3NCAyMCA0RiA0MyAyMCA0NCA2OSA3MyA2MSA2MiA2QyA2NSAgLi5HZXQgT0MgRGlzYWJs
ZQogICAgMDREMDogMDAgMEQgNDcgNjUgNzQgMjAgNEYgNDMgMjAgNTYgNkYgNkMgNzQgNjEgNjcg
NjUgIC4uR2V0IE9DIFZvbHRhZ2UKICAgIDA0RTA6IDIwIDREIDYxIDc4IDAwIDBEIDQ3IDY1IDc0
IDIwIDRGIDQzIDIwIDQ2IDcyIDY1ICAgTWF4Li5HZXQgT0MgRnJlCiAgICAwNEYwOiA3MSA3NSA2
NSA2RSA2MyA3OSAyMCA0RCA2MSA3OCAwMCAwRCA0NyA2NSA3NCAyMCAgcXVlbmN5IE1heC4uR2V0
IAogICAgMDUwMDogNDcgNDYgNTggMjAgNEYgNDMgMjAgNTYgNkYgNkMgNzQgNjEgNjcgNjUgMjAg
NEQgIEdGWCBPQyBWb2x0YWdlIE0KICAgIDA1MTA6IDYxIDc4IDAwIDBEIDQ3IDY1IDc0IDIwIDQ3
IDQ2IDU4IDIwIDRGIDQzIDIwIDQ2ICBheC4uR2V0IEdGWCBPQyBGCiAgICAwNTIwOiA3MiA2NSA3
MSA3NSA2NSA2RSA2MyA3OSAyMCA0RCA2MSA3OCAwMCAwRCA0NyA2NSAgcmVxdWVuY3kgTWF4Li5H
ZQogICAgMDUzMDogNzQgMjAgNDkgNkUgNzQgNjUgNzIgNkMgNjUgNzYgNjEgNjkgNkUgNjcgMjAg
NDMgIHQgSW50ZXJsZXZhaW5nIEMKICAgIDA1NDA6IDYxIDcwIDAwIDBEIDUzIDY1IDc0IDIwIDQz
IDc1IDcyIDc2IDY1IDIwIDRGIDcwICBhcC4uU2V0IEN1cnZlIE9wCiAgICAwNTUwOiA3NCA2OSA2
RCA2OSA3QSA2NSA3MiAwMCAwRCA1MyA2NSA3NCAyMCA1NCA3MiA2MyAgdGltaXplci4uU2V0IFRy
YwogICAgMDU2MDogNjQgMDAgMEQgNTMgNjUgNzQgMjAgNTQgNzIgNjYgNjMgMzEgMDAgMEQgNTMg
NjUgIGQuLlNldCBUcmZjMS4uU2UKICAgIDA1NzA6IDc0IDIwIDU0IDcyIDY2IDYzIDUzIDYyIDAw
IDBEIDUzIDY1IDc0IDIwIDUwIDcyICB0IFRyZmNTYi4uU2V0IFByCiAgICAwNTgwOiA2RiA2MyA0
NCA2MSA3NCA2MSA0NCA3MiA2OSA3NiA2NSA1MyA3NCA3MiA2NSA2RSAgb2NEYXRhRHJpdmVTdHJl
bgogICAgMDU5MDogNjcgNzQgNjggMDAgMEQgNTMgNjUgNzQgMjAgNDQgNTIgNDEgNEQgNDQgNjEg
NzQgIGd0aC4uU2V0IERSQU1EYXQKICAgIDA1QTA6IDYxIDQ0IDcyIDY5IDc2IDY1IDUzIDc0IDcy
IDY1IDZFIDY3IDc0IDY4IDAwIDBEICBhRHJpdmVTdHJlbmd0aC4uCiAgICAwNUIwOiA1MyA2NSA3
NCAyMCA1MiA3NCA3NCA0RSA2RiA2RCA1NyA3MiAwMCAwRCA1MyA2NSAgU2V0IFJ0dE5vbVdyLi5T
ZQogICAgMDVDMDogNzQgMjAgNTIgNzQgNzQgNEUgNkYgNkQgNTIgNjQgMDAgMEQgNTMgNjUgNzQg
MjAgIHQgUnR0Tm9tUmQuLlNldCAKICAgIDA1RDA6IDUyIDc0IDc0IDUwIDYxIDcyIDZCIDQ0IDcx
IDczIDAwIDBEIDUzIDY1IDc0IDIwICBSdHRQYXJrRHFzLi5TZXQgCiAgICAwNUUwOiA1MCA1MCA1
NCAyMCA0QyA2OSA2RCA2OSA3NCAwMCAwRCA1MyA2NSA3NCAyMCA1NCAgUFBUIExpbWl0Li5TZXQg
VAogICAgMDVGMDogNDQgNDMgMjAgNEMgNjkgNkQgNjkgNzQgMDAgMEQgNTMgNjUgNzQgMjAgNDUg
NDQgIERDIExpbWl0Li5TZXQgRUQKICAgIDA2MDA6IDQzIDIwIDRDIDY5IDZEIDY5IDc0IDAwIDBE
IDUzIDY1IDc0IDIwIDUzIDYzIDYxICBDIExpbWl0Li5TZXQgU2NhCiAgICAwNjEwOiA2QyA2MSA3
MiAwMCAwRCA1MyA2NSA3NCAyMCA0NCA0OSA0RCA0RCAyMCA1NiA0NCAgbGFyLi5TZXQgRElNTSBW
RAogICAgMDYyMDogNDQgNTEgMDAgMEQgNTMgNjUgNzQgMjAgNTYgNTAgNTAgMDAgMEQgNTMgNjUg
NzQgIERRLi5TZXQgVlBQLi5TZXQKICAgIDA2MzA6IDIwIDQxIDUwIDU1IDIwIDU2IDQ0IDQ0IDQ5
IDRGIDAwIDBEIDUzIDY1IDc0IDIwICAgQVBVIFZERElPLi5TZXQgCiAgICAwNjQwOiA0QyA0MyA0
QyA0QiAyMCA0NiA3MiA2NSA3MSAwMCAwRCA1MyA2NSA3NCAyMCA1NiAgTENMSyBGcmVxLi5TZXQg
VgogICAgMDY1MDogNDQgNDQgNUYgNEQgNDkgNTMgNDMgMDAgMEQgNTMgNjUgNzQgMjAgNTYgNDQg
NDQgIEREX01JU0MuLlNldCBWREQKICAgIDA2NjA6IDQ3IDIwIDQ5IDRGIDQ0IDAwIDBEIDUzIDY1
IDc0IDIwIDU1IDQzIDRDIDRCIDIwICBHIElPRC4uU2V0IFVDTEsgCiAgICAwNjcwOiA0NCA0OSA1
NiAzMSAwMCAwRCA1MiA2NSA3MyA2NSA3NCAyMCA0RCA2NSA2RCAyMCAgRElWMS4uUmVzZXQgTWVt
IAogICAgMDY4MDogNTAgNjEgNzIgNjEgMDAgMEQgNTMgNjUgNzQgMjAgNDcgNjEgNkQgNjUgMjAg
NEQgIFBhcmEuLlNldCBHYW1lIE0KICAgIDA2OTA6IDZGIDY0IDY1IDAwIDBEIDUzIDY1IDc0IDIw
IDRGIDQzIDIwIDQ2IDc1IDczIDY1ICBvZGUuLlNldCBPQyBGdXNlCiAgICAwNkEwOiAwMCAwRCA1
MyA2NSA3NCAyMCA0RSA1MCA1MyAyMCA0RCA2RiA2NCA2NSAwMCAwRCAgLi5TZXQgTlBTIE1vZGUu
LgogICAgMDZCMDogMDAgMEQgMDAgMEQgMDAgMEQgMDAgMEQgMDAgMEQgMDAgMEQgMDAgMEQgMDAg
MEQgIC4uLi4uLi4uLi4uLi4uLi4KICAgIDA2QzA6IDAwIDBEIDAwIDBEIDAwIDBEIDAwIDBEIDAw
IDBEIDAwIDBEIDAwIDBEIDAwIDBEICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwNkQwOiAwMCAwRCAw
MCAwRCAwMCAwRCAwMCAwRCAwMCAwRCAwMCAwRCAwMCAwRCAwMCAwRCAgLi4uLi4uLi4uLi4uLi4u
LgogICAgMDZFMDogMDAgMEQgMDAgMEQgMDAgMEQgMDAgMEQgMDAgMEQgMDAgMEQgMDAgMEQgMDAg
MEQgIC4uLi4uLi4uLi4uLi4uLi4KICAgIDA2RjA6IDAwIDBEIDAwIDA4IDRGIDQyIDQ5IDU0IDEy
IDQ4IEJEIDQ2IDBBIDQ1IDEyIDJCICAuLi4uT0JJVC5ILkYuRS4rCiAgICAwNzAwOiAwNCAwQyAw
OCAwMCAwNSAwMCAwMCAwQSA0NiAxMSAyMCAwQiA5QyAwMSAwOCAwMCAgLi4uLi4uLi5GLiAuLi4u
LgogICAgMDcxMDogMDUgMDAgMDEgMDAgMDAgMDAgMDQgMDAgMDAgMDAgMDEgMDAgMDAgMDAgMDIg
MDAgIC4uLi4uLi4uLi4uLi4uLi4KICAgIDA3MjA6IDAwIDAwIDAzIDAwIDAwIDAwIEZGIDAwIDAw
IDAwIDEyIDIyIDA0IDBDIDAxIDAwICAuLi4uLi4uLi4uLiIuLi4uCiAgICAwNzMwOiAwNiAwMCAw
MSAwQSA0NSAxMSAxNyAwQSAxNCAwMSAwMCAwNiAwMCAwMSAwMCAwMCAgLi4uLkUuLi4uLi4uLi4u
LgogICAgMDc0MDogMDAgMDAgMDAgMDAgMDAgMDcgMDAgMDAgMDAgMDEgMDAgMDAgMDAgMTIgMjMg
MDQgIC4uLi4uLi4uLi4uLi4uIy4KICAgIDA3NTA6IDBDIDA2IDAwIDA1IDAwIDAwIDBBIDQ0IDEx
IDE4IDBCIDlDIDAxIDA2IDAwIDA1ICAuLi4uLi4uRC4uLi4uLi4uCiAgICAwNzYwOiAwMCAwMCAw
MCAwMCAwMCAwMiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMSAwMCAwMCAgLi4uLi4uLi4uLi4uLi4u
LgogICAgMDc3MDogMDAgMTIgMUYgMDQgMEMgNDggMDAgMDIgMDAgMDAgMEEgNDMgMTEgMTQgMEIg
OUMgIC4uLi4uSC4uLi4uQy4uLi4KICAgIDA3ODA6IDAxIDQ4IDAwIDAyIDAwIDAwIDAwIDAwIDAw
IDAxIDAwIDAwIDAwIDAxIDAwIDAwICAuSC4uLi4uLi4uLi4uLi4uCiAgICAwNzkwOiAwMCAxMiAy
MyAwNCAwQyA0NCAwMCAwMiAwMCAwMCAwQSA0MiAxMSAxOCAwQiA5QyAgLi4jLi5ELi4uLi5CLi4u
LgogICAgMDdBMDogMDEgNDQgMDAgMDIgMDAgMDEgMDAgMDAgMDAgMDIgMDAgMDAgMDAgMDAgMDAg
MDAgIC5ELi4uLi4uLi4uLi4uLi4KICAgIDA3QjA6IDAwIDAxIDAwIDAwIDAwIDEyIDIyIDA0IDBD
IDBCIDAwIDA1IDAwIDAxIDBBIDQxICAuLi4uLi4iLi4uLi4uLi5BCiAgICAwN0MwOiAxMSAxNyAw
QSAxNCAwQiAwMCAwNSAwMCAwMCAwMCAwMCAwMCA1OCAwMiAwMCAwMCAgLi4uLi4uLi4uLi4uWC4u
LgogICAgMDdEMDogREMgMDUgMDAgMDAgMEEgMDAgMDAgMDAgMTIgMjIgMDQgMEMgMzggMDAgMDIg
MDAgIC4uLi4uLi4uLiIuLjguLi4KICAgIDA3RTA6IDAxIDBBIDQwIDExIDE3IDBBIDE0IDM4IDAw
IDAyIDAwIDAwIDAwIDAwIDAwIDU4ICAuLkAuLi4uOC4uLi4uLi5YCiAgICAwN0YwOiAwMiAwMCAw
MCBEQyAwNSAwMCAwMCAwQSAwMCAwMCAwMCAxMiAyMiAwNCAwQyAwNiAgLi4uLi4uLi4uLi4uIi4u
LgogICAgMDgwMDogMDAgMDMgMDAgMDEgMEEgM0YgMTEgMTcgMEEgMTQgMDYgMDAgMDMgMDAgMDAg
MDAgIC4uLi4uPy4uLi4uLi4uLi4KICAgIDA4MTA6IDAwIDAwIEY0IDAxIDAwIDAwIEUwIDE1IDAw
IDAwIDBBIDAwIDAwIDAwIDEyIDIyICAuLi4uLi4uLi4uLi4uLi4iCiAgICAwODIwOiAwNCAwQyA0
MyAwMCAwMiAwMCAwMSAwQSAzRSAxMSAxNyAwQSAxNCA0MyAwMCAwMiAgLi5DLi4uLi4+Li4uLkMu
LgogICAgMDgzMDogMDAgMDAgMDAgMDAgMDAgNzkgMDMgMDAgMDAgQzQgMDkgMDAgMDAgMDEgMDAg
MDAgIC4uLi4ueS4uLi4uLi4uLi4KICAgIDA4NDA6IDAwIDEyIDIyIDA0IDBDIDMwIDAwIDAyIDAw
IDAxIDBBIDNEIDExIDE3IDBBIDE0ICAuLiIuLjAuLi4uLj0uLi4uCiAgICAwODUwOiAzMCAwMCAw
MiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCBEMCAwNyAwMCAwMCAgMC4uLi4uLi4uLi4uLi4u
LgogICAgMDg2MDogMDEgMDAgMDAgMDAgMTIgMjIgMDQgMEMgMzQgMDAgMDIgMDAgMDEgMEEgM0Mg
MTEgIC4uLi4uIi4uNC4uLi4uPC4KICAgIDA4NzA6IDE3IDBBIDE0IDM0IDAwIDAyIDAwIDAwIDAw
IDAwIDAwIDAwIDAwIDAwIDAwIEQzICAuLi40Li4uLi4uLi4uLi4uCiAgICAwODgwOiAwMCAwMCAw
MCAwMSAwMCAwMCAwMCAxMiAyMiAwNCAwQyAzMiAwMCAwMiAwMCAwMSAgLi4uLi4uLi4iLi4yLi4u
LgogICAgMDg5MDogMEEgM0IgMTEgMTcgMEEgMTQgMzIgMDAgMDIgMDAgMDAgMDAgMDAgMDAgMDAg
MDAgIC47Li4uLjIuLi4uLi4uLi4KICAgIDA4QTA6IDAwIDAwIDAzIDAwIDAwIDAwIDAxIDAwIDAw
IDAwIDEyIDFGIDA0IDBDIDMxIDAwICAuLi4uLi4uLi4uLi4uLjEuCiAgICAwOEIwOiAwMiAwMCAw
MCAwQSAzQSAxMSAxNCAwQiA5QyAwMSAzMSAwMCAwMiAwMCAwMCAwMCAgLi4uLjouLi4uLjEuLi4u
LgogICAgMDhDMDogMDAgMDAgMDEgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMTIgMjIgMDQgMEMgMDQg
MDAgIC4uLi4uLi4uLi4uIi4uLi4KICAgIDA4RDA6IDAzIDAwIDAxIDBBIDM5IDExIDE3IDBBIDE0
IDA0IDAwIDAzIDAwIDAwIDAwIDAwICAuLi4uOS4uLi4uLi4uLi4uCiAgICAwOEUwOiAwMCBCQyAw
MiAwMCAwMCA2QyAwQSAwMCAwMCAwMiAwMCAwMCAwMCAxMiAyMiAwNCAgLi4uLi5sLi4uLi4uLi4i
LgogICAgMDhGMDogMEMgMDMgMDAgMDMgMDAgMDEgMEEgMzggMTEgMTcgMEEgMTQgMDMgMDAgMDMg
MDAgIC4uLi4uLi44Li4uLi4uLi4KICAgIDA5MDA6IDA4IDA3IDAwIDAwIERDIDA1IDAwIDAwIDUy
IDA4IDAwIDAwIDBBIDAwIDAwIDAwICAuLi4uLi4uLlIuLi4uLi4uCiAgICAwOTEwOiAxMiAyMiAw
NCAwQyAwNyAwMCAwMyAwMCAwMSAwQSAzNyAxMSAxNyAwQSAxNCAwNyAgLiIuLi4uLi4uLjcuLi4u
LgogICAgMDkyMDogMDAgMDMgMDAgNEMgMDQgMDAgMDAgMjAgMDMgMDAgMDAgOTYgMDUgMDAgMDAg
MEEgIC4uLkwuLi4gLi4uLi4uLi4KICAgIDA5MzA6IDAwIDAwIDAwIDEyIDIyIDA0IDBDIDAxIDAw
IDAzIDAwIDAxIDBBIDM2IDExIDE3ICAuLi4uIi4uLi4uLi4uNi4uCiAgICAwOTQwOiAwQSAxNCAw
MSAwMCAwMyAwMCA0QyAwNCAwMCAwMCAyMCAwMyAwMCAwMCA5NiAwNSAgLi4uLi4uTC4uLiAuLi4u
LgogICAgMDk1MDogMDAgMDAgMEEgMDAgMDAgMDAgMTIgNDUgMTUgMDQgMEMgMzUgMDAgMDIgMDAg
MDAgIC4uLi4uLi5FLi4uNS4uLi4KICAgIDA5NjA6IDBBIDM1IDExIDQ5IDE0IDBCIDlDIDAxIDM1
IDAwIDAyIDAwIDAwIDAwIDAwIDAwICAuNS5JLi4uLjUuLi4uLi4uCiAgICAwOTcwOiA0RSAwMCAw
MCAwMCA2NCAwMCAwMCAwMCBDOCAwMCAwMCAwMCA0RCAwMSAwMCAwMCAgTi4uLmQuLi4uLi4uTS4u
LgogICAgMDk4MDogOTAgMDEgMDAgMDAgRjQgMDEgMDAgMDAgMTUgMDIgMDAgMDAgOUIgMDIgMDAg
MDAgIC4uLi4uLi4uLi4uLi4uLi4KICAgIDA5OTA6IDIwIDAzIDAwIDAwIEE1IDAzIDAwIDAwIDFB
IDA0IDAwIDAwIDJBIDA0IDAwIDAwICAgLi4uLi4uLi4uLi4qLi4uCiAgICAwOUEwOiAyQiAwNCAw
MCAwMCA0QyAwNCAwMCAwMCA2MCAwNCAwMCAwMCA3NyAwNCAwMCAwMCAgKy4uLkwuLi5gLi4udy4u
LgogICAgMDlCMDogQjAgMDQgMDAgMDAgRTIgMDQgMDAgMDAgRTkgMDQgMDAgMDAgMDAgMDUgMDAg
MDAgIC4uLi4uLi4uLi4uLi4uLi4KICAgIDA5QzA6IDE0IDA1IDAwIDAwIDI4IDA1IDAwIDAwIDM1
IDA1IDAwIDAwIDU3IDA1IDAwIDAwICAuLi4uKC4uLjUuLi5XLi4uCiAgICAwOUQwOiA1QiAwNSAw
MCAwMCA3OCAwNSAwMCAwMCA5OSAwNSAwMCAwMCBBMCAwNSAwMCAwMCAgWy4uLnguLi4uLi4uLi4u
LgogICAgMDlFMDogQkIgMDUgMDAgMDAgQ0QgMDUgMDAgMDAgREMgMDUgMDAgMDAgRkQgMDUgMDAg
MDAgIC4uLi4uLi4uLi4uLi4uLi4KICAgIDA5RjA6IDE4IDA2IDAwIDAwIDFGIDA2IDAwIDAwIDQw
IDA2IDAwIDAwIDYxIDA2IDAwIDAwICAuLi4uLi4uLkAuLi5hLi4uCiAgICAwQTAwOiA3MiAwNiAw
MCAwMCA4MyAwNiAwMCAwMCA5MCAwNiAwMCAwMCBBNCAwNiAwMCAwMCAgci4uLi4uLi4uLi4uLi4u
LgogICAgMEExMDogQzUgMDYgMDAgMDAgRDYgMDYgMDAgMDAgRTAgMDYgMDAgMDAgRTcgMDYgMDAg
MDAgIC4uLi4uLi4uLi4uLi4uLi4KICAgIDBBMjA6IDA4IDA3IDAwIDAwIDI5IDA3IDAwIDAwIDRC
IDA3IDAwIDAwIDZDIDA3IDAwIDAwICAuLi4uKS4uLksuLi5sLi4uCiAgICAwQTMwOiA4MCAwNyAw
MCAwMCA4RCAwNyAwMCAwMCA5RSAwNyAwMCAwMCBBOCAwNyAwMCAwMCAgLi4uLi4uLi4uLi4uLi4u
LgogICAgMEE0MDogQUYgMDcgMDAgMDAgRDAgMDcgMDAgMDAgRjEgMDcgMDAgMDAgMTMgMDggMDAg
MDAgIC4uLi4uLi4uLi4uLi4uLi4KICAgIDBBNTA6IDM0IDA4IDAwIDAwIDU1IDA4IDAwIDAwIDc3
IDA4IDAwIDAwIDk4IDA4IDAwIDAwICA0Li4uVS4uLncuLi4uLi4uCiAgICAwQTYwOiBCOSAwOCAw
MCAwMCBEQiAwOCAwMCAwMCBGQyAwOCAwMCAwMCAxRCAwOSAwMCAwMCAgLi4uLi4uLi4uLi4uLi4u
LgogICAgMEE3MDogM0YgMDkgMDAgMDAgNjAgMDkgMDAgMDAgODEgMDkgMDAgMDAgQTMgMDkgMDAg
MDAgID8uLi5gLi4uLi4uLi4uLi4KICAgIDBBODA6IEM0IDA5IDAwIDAwIEY2IDA5IDAwIDAwIDI4
IDBBIDAwIDAwIDVBIDBBIDAwIDAwICAuLi4uLi4uLiguLi5aLi4uCiAgICAwQTkwOiA4QyAwQSAw
MCAwMCBCRSAwQSAwMCAwMCBGMCAwQSAwMCAwMCAyMiAwQiAwMCAwMCAgLi4uLi4uLi4uLi4uIi4u
LgogICAgMEFBMDogNTQgMEIgMDAgMDAgODYgMEIgMDAgMDAgQjggMEIgMDAgMDAgMTIgMjMgMDQg
MEMgIFQuLi4uLi4uLi4uLi4jLi4KICAgIDBBQjA6IDMzIDAwIDAyIDAwIDAwIDBBIDM0IDExIDE4
IDBCIDlDIDAxIDMzIDAwIDAyIDAwICAzLi4uLi40Li4uLi4zLi4uCiAgICAwQUMwOiAwMCAwMCAw
MCAwMCAwMiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4u
LgogICAgMEFEMDogMTIgMjIgMDQgMEMgMzYgMDAgMDIgMDAgMDEgMEEgMzMgMTEgMTcgMEEgMTQg
MzYgIC4iLi42Li4uLi4zLi4uLjYKICAgIDBBRTA6IDAwIDAyIDAwIDAwIDAwIDAwIDAwIDJBIDEy
IDAwIDAwIERBIDE2IDAwIDAwIDE5ICAuLi4uLi4uKi4uLi4uLi4uCiAgICAwQUYwOiAwMCAwMCAw
MCAxMiAyMiAwNCAwQyAwNCAwMCAwNSAwMCAwMSAwQSAzMiAxMSAxNyAgLi4uLiIuLi4uLi4uLjIu
LgogICAgMEIwMDogMEEgMTQgMDQgMDAgMDUgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgRTgg
MDMgIC4uLi4uLi4uLi4uLi4uLi4KICAgIDBCMTA6IDAwIDAwIDY0IDAwIDAwIDAwIDEyIDIyIDA0
IDBDIDAzIDAwIDA1IDAwIDAxIDBBICAuLmQuLi4uIi4uLi4uLi4uCiAgICAwQjIwOiAzMSAxMSAx
NyAwQSAxNCAwMyAwMCAwNSAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgMS4uLi4uLi4uLi4uLi4u
LgogICAgMEIzMDogMDAgMjAgQTEgMDcgMDAgMDEgMDAgMDAgMDAgMTIgMjIgMDQgMEMgMDIgMDAg
MDUgIC4gLi4uLi4uLi4iLi4uLi4KICAgIDBCNDA6IDAwIDAxIDBBIDMwIDExIDE3IDBBIDE0IDAy
IDAwIDA1IDAwIDAwIDAwIDAwIDAwICAuLi4wLi4uLi4uLi4uLi4uCiAgICAwQjUwOiAwMCAwMCAw
MCAwMCBFMCAwNCAwNyAwMCAwMSAwMCAwMCAwMCAxMiAyMiAwNCAwQyAgLi4uLi4uLi4uLi4uLiIu
LgogICAgMEI2MDogMDEgMDAgMDUgMDAgMDEgMEEgMkYgMTEgMTcgMEEgMTQgMDEgMDAgMDUgMDAg
MDAgIC4uLi4uLi8uLi4uLi4uLi4KICAgIDBCNzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDgwIDg0
IDFFIDAwIDAxIDAwIDAwIDAwIDEyICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwQjgwOiAyMyAwNCAw
QyAyNSAwMCAwMiAwMCAwMCAwQSAyRSAxMSAxOCAwQiA5QyAwMSAyNSAgIy4uJS4uLi4uLi4uLi4u
JQogICAgMEI5MDogMDAgMDIgMDAgMDAgMDAgMDAgMDAgMDIgMDAgMDAgMDAgMDEgMDAgMDAgMDAg
MDAgIC4uLi4uLi4uLi4uLi4uLi4KICAgIDBCQTA6IDAwIDAwIDAwIDEyIDIyIDA0IDBDIDQwIDAw
IDAyIDAwIDAxIDBBIDJEIDExIDE3ICAuLi4uIi4uQC4uLi4uLS4uCiAgICAwQkIwOiAwQSAxNCA0
MCAwMCAwMiAwMCAwMyAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwNyAwMCAgLi5ALi4uLi4uLi4uLi4u
LgogICAgMEJDMDogMDAgMDAgMDEgMDAgMDAgMDAgMTIgMjIgMDQgMEMgMjQgMDAgMDIgMDAgMDEg
MEEgIC4uLi4uLi4iLi4kLi4uLi4KICAgIDBCRDA6IDJDIDExIDE3IDBBIDE0IDI0IDAwIDAyIDAw
IDA0IDAwIDAwIDAwIDAwIDAwIDAwICAsLi4uLiQuLi4uLi4uLi4uCiAgICAwQkUwOiAwMCAwNyAw
MCAwMCAwMCAwMSAwMCAwMCAwMCAxMiAyMiAwNCAwQyAyMyAwMCAwMiAgLi4uLi4uLi4uLiIuLiMu
LgogICAgMEJGMDogMDAgMDEgMEEgMkIgMTEgMTcgMEEgMTQgMjMgMDAgMDIgMDAgMDEgMDAgMDAg
MDAgIC4uLisuLi4uIy4uLi4uLi4KICAgIDBDMDA6IDAwIDAwIDAwIDAwIDA3IDAwIDAwIDAwIDAx
IDAwIDAwIDAwIDEyIDIyIDA0IDBDICAuLi4uLi4uLi4uLi4uIi4uCiAgICAwQzEwOiAzRiAwMCAw
MiAwMCAwMSAwQSAyQSAxMSAxNyAwQSAxNCAzRiAwMCAwMiAwMCAwMCAgPy4uLi4uKi4uLi4/Li4u
LgogICAgMEMyMDogMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDcgMDAgMDAgMDAgMDEgMDAgMDAgMDAg
MTIgIC4uLi4uLi4uLi4uLi4uLi4KICAgIDBDMzA6IDIyIDA0IDBDIDNFIDAwIDAyIDAwIDAxIDBB
IDI5IDExIDE3IDBBIDE0IDNFIDAwICAiLi4+Li4uLi4pLi4uLj4uCiAgICAwQzQwOiAwMiAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwNyAwMCAwMCAwMCAwMSAwMCAgLi4uLi4uLi4uLi4uLi4u
LgogICAgMEM1MDogMDAgMDAgMTIgMjcgMDQgMEMgNDIgMDAgMDIgMDAgMDAgMEEgMjggMTEgMUMg
MEIgIC4uLicuLkIuLi4uLiguLi4KICAgIDBDNjA6IDlDIDAxIDQyIDAwIDAyIDAwIDAwIDAwIDAw
IDAwIDAzIDAwIDAwIDAwIDAwIDAwICAuLkIuLi4uLi4uLi4uLi4uCiAgICAwQzcwOiAwMCAwMCAw
MSAwMCAwMCAwMCAwMiAwMCAwMCAwMCAxMiA0RCAwNiAwNCAwQyAwNyAgLi4uLi4uLi4uLi5NLi4u
LgogICAgMEM4MDogMDAgMDIgMDAgMDAgMEEgMjcgMTEgNDEgMDYgMEIgOUMgMDEgMDcgMDAgMDIg
MDAgIC4uLi4uJy5BLi4uLi4uLi4KICAgIDBDOTA6IDA3IDAwIDAwIDAwIDE0IDAwIDAwIDAwIDAw
IDAwIDAwIDAwIDAxIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwQ0EwOiAwMiAwMCAw
MCAwMCAwMyAwMCAwMCAwMCAwNCAwMCAwMCAwMCAwNSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4u
LgogICAgMENCMDogMDYgMDAgMDAgMDAgMDcgMDAgMDAgMDAgMEMgMDAgMDAgMDAgMEQgMDAgMDAg
MDAgIC4uLi4uLi4uLi4uLi4uLi4KICAgIDBDQzA6IDBFIDAwIDAwIDAwIDBGIDAwIDAwIDAwIDFD
IDAwIDAwIDAwIDFEIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwQ0QwOiAxRSAwMCAw
MCAwMCAxRiAwMCAwMCAwMCAzQyAwMCAwMCAwMCAzRCAwMCAwMCAwMCAgLi4uLi4uLi48Li4uPS4u
LgogICAgMENFMDogM0UgMDAgMDAgMDAgM0YgMDAgMDAgMDAgMTIgM0IgMDQgMEMgNDEgMDAgMDIg
MDAgID4uLi4/Li4uLjsuLkEuLi4KICAgIDBDRjA6IDAwIDBBIDI2IDExIDMwIDBCIDlDIDAxIDQx
IDAwIDAyIDAwIDFFIDAwIDAwIDAwICAuLiYuMC4uLkEuLi4uLi4uCiAgICAwRDAwOiAwOCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCAwNCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4u
LgogICAgMEQxMDogMDYgMDAgMDAgMDAgMEMgMDAgMDAgMDAgMEUgMDAgMDAgMDAgMUMgMDAgMDAg
MDAgIC4uLi4uLi4uLi4uLi4uLi4KICAgIDBEMjA6IDFFIDAwIDAwIDAwIDEyIDJCIDA0IDBDIDJE
IDAwIDAyIDAwIDAwIDBBIDI1IDExICAuLi4uLisuLi0uLi4uLiUuCiAgICAwRDMwOiAyMCAwQiA5
QyAwMSAyRCAwMCAwMiAwMCAyOCAwMCAwMCAwMCAwNCAwMCAwMCAwMCAgIC4uLi0uLi4oLi4uLi4u
LgogICAgMEQ0MDogMUUgMDAgMDAgMDAgMjggMDAgMDAgMDAgM0MgMDAgMDAgMDAgNzggMDAgMDAg
MDAgIC4uLi4oLi4uPC4uLnguLi4KICAgIDBENTA6IDEyIDIyIDA0IDBDIDFFIDAwIDAyIDAwIDAx
IDBBIDI0IDExIDE3IDBBIDE0IDFFICAuIi4uLi4uLi4uJC4uLi4uCiAgICAwRDYwOiAwMCAwMiAw
MCAxMyAwMCAwMCAwMCAwMSAwMCAwMCAwMCAxRiAwMCAwMCAwMCAwMSAgLi4uLi4uLi4uLi4uLi4u
LgogICAgMEQ3MDogMDAgMDAgMDAgMTIgMjIgMDQgMEMgMUYgMDAgMDIgMDAgMDEgMEEgMjMgMTEg
MTcgIC4uLi4iLi4uLi4uLi4jLi4KICAgIDBEODA6IDBBIDE0IDFGIDAwIDAyIDAwIDA1IDAwIDAw
IDAwIDAxIDAwIDAwIDAwIDBGIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwRDkwOiAwMCAwMCAw
MSAwMCAwMCAwMCAxMiAyMiAwNCAwQyAxRCAwMCAwMiAwMCAwMSAwQSAgLi4uLi4uLiIuLi4uLi4u
LgogICAgMERBMDogMjIgMTEgMTcgMEEgMTQgMUQgMDAgMDIgMDAgMDkgMDAgMDAgMDAgMDEgMDAg
MDAgICIuLi4uLi4uLi4uLi4uLi4KICAgIDBEQjA6IDAwIDBGIDAwIDAwIDAwIDAxIDAwIDAwIDAw
IDEyIDIyIDA0IDBDIDFDIDAwIDAyICAuLi4uLi4uLi4uIi4uLi4uCiAgICAwREMwOiAwMCAwMSAw
QSAyMSAxMSAxNyAwQSAxNCAxQyAwMCAwMiAwMCAwOSAwMCAwMCAwMCAgLi4uIS4uLi4uLi4uLi4u
LgogICAgMEREMDogMDEgMDAgMDAgMDAgMEYgMDAgMDAgMDAgMDEgMDAgMDAgMDAgMTIgMjIgMDQg
MEMgIC4uLi4uLi4uLi4uLi4iLi4KICAgIDBERTA6IDFBIDAwIDAyIDAwIDAxIDBBIDIwIDExIDE3
IDBBIDE0IDFBIDAwIDAyIDAwIDAxICAuLi4uLi4gLi4uLi4uLi4uCiAgICAwREYwOiAwMCAwMCAw
MCAwMSAwMCAwMCAwMCAwRiAwMCAwMCAwMCAwMSAwMCAwMCAwMCAxMiAgLi4uLi4uLi4uLi4uLi4u
LgogICAgMEUwMDogMjIgMDQgMEMgMUIgMDAgMDIgMDAgMDEgMEEgMUYgMTEgMTcgMEEgMTQgMUIg
MDAgICIuLi4uLi4uLi4uLi4uLi4KICAgIDBFMTA6IDAyIDAwIDI5IDAwIDAwIDAwIDAxIDAwIDAw
IDAwIDNGIDAwIDAwIDAwIDAxIDAwICAuLikuLi4uLi4uPy4uLi4uCiAgICAwRTIwOiAwMCAwMCAx
MiAyMiAwNCAwQyAxOSAwMCAwMiAwMCAwMSAwQSAxRSAxMSAxNyAwQSAgLi4uIi4uLi4uLi4uLi4u
LgogICAgMEUzMDogMTQgMTkgMDAgMDIgMDAgMDggMDAgMDAgMDAgMDEgMDAgMDAgMDAgMEYgMDAg
MDAgIC4uLi4uLi4uLi4uLi4uLi4KICAgIDBFNDA6IDAwIDAxIDAwIDAwIDAwIDEyIDIyIDA0IDBD
IDE4IDAwIDAyIDAwIDAxIDBBIDFEICAuLi4uLi4iLi4uLi4uLi4uCiAgICAwRTUwOiAxMSAxNyAw
QSAxNCAxOCAwMCAwMiAwMCAwOCAwMCAwMCAwMCAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4u
LgogICAgMEU2MDogMEYgMDAgMDAgMDAgMDEgMDAgMDAgMDAgMTIgMjIgMDQgMEMgMTYgMDAgMDIg
MDAgIC4uLi4uLi4uLiIuLi4uLi4KICAgIDBFNzA6IDAxIDBBIDFDIDExIDE3IDBBIDE0IDE2IDAw
IDAyIDAwIDAxIDAwIDAwIDAwIDAxICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwRTgwOiAwMCAwMCAw
MCAwRiAwMCAwMCAwMCAwMSAwMCAwMCAwMCAxMiAyMiAwNCAwQyAxNyAgLi4uLi4uLi4uLi4uIi4u
LgogICAgMEU5MDogMDAgMDIgMDAgMDEgMEEgMUIgMTEgMTcgMEEgMTQgMTcgMDAgMDIgMDAgMDUg
MDAgIC4uLi4uLi4uLi4uLi4uLi4KICAgIDBFQTA6IDAwIDAwIDAxIDAwIDAwIDAwIDBGIDAwIDAw
IDAwIDAxIDAwIDAwIDAwIDEyIDIyICAuLi4uLi4uLi4uLi4uLi4iCiAgICAwRUIwOiAwNCAwQyAx
MSAwMCAwMiAwMCAwMSAwQSAxQSAxMSAxNyAwQSAxNCAxMSAwMCAwMiAgLi4uLi4uLi4uLi4uLi4u
LgogICAgMEVDMDogMDAgMDYgMDAgMDAgMDAgMDIgMDAgMDAgMDAgMTAgMDAgMDAgMDAgMDEgMDAg
MDAgIC4uLi4uLi4uLi4uLi4uLi4KICAgIDBFRDA6IDAwIDEyIDIyIDA0IDBDIDEyIDAwIDAyIDAw
IDAxIDBBIDE5IDExIDE3IDBBIDE0ICAuLiIuLi4uLi4uLi4uLi4uCiAgICAwRUUwOiAxMiAwMCAw
MiAwMCAxOCAwMCAwMCAwMCAwMiAwMCAwMCAwMCAzMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uMC4u
LgogICAgMEVGMDogMDEgMDAgMDAgMDAgMTIgMjIgMDQgMEMgMEQgMDAgMDIgMDAgMDEgMEEgMTgg
MTEgIC4uLi4uIi4uLi4uLi4uLi4KICAgIDBGMDA6IDE3IDBBIDE0IDBEIDAwIDAyIDAwIDIwIDAw
IDAwIDAwIDA2IDAwIDAwIDAwIDUwICAuLi4uLi4uIC4uLi4uLi5QCiAgICAwRjEwOiAwMCAwMCAw
MCAwMSAwMCAwMCAwMCAxMiAyMiAwNCAwQyAwRSAwMCAwMiAwMCAwMSAgLi4uLi4uLi4iLi4uLi4u
LgogICAgMEYyMDogMEEgMTcgMTEgMTcgMEEgMTQgMEUgMDAgMDIgMDAgMDggMDAgMDAgMDAgMDQg
MDAgIC4uLi4uLi4uLi4uLi4uLi4KICAgIDBGMzA6IDAwIDAwIDE0IDAwIDAwIDAwIDAxIDAwIDAw
IDAwIDEyIDIyIDA0IDBDIDBGIDAwICAuLi4uLi4uLi4uLiIuLi4uCiAgICAwRjQwOiAwMiAwMCAw
MSAwQSAxNiAxMSAxNyAwQSAxNCAwRiAwMCAwMiAwMCAwQyAwMCAwMCAgLi4uLi4uLi4uLi4uLi4u
LgogICAgMEY1MDogMDAgMDQgMDAgMDAgMDAgMjAgMDAgMDAgMDAgMDEgMDAgMDAgMDAgMTIgMjIg
MDQgIC4uLi4uIC4uLi4uLi4uIi4KICAgIDBGNjA6IDBDIDE1IDAwIDAyIDAwIDAxIDBBIDE1IDEx
IDE3IDBBIDE0IDE1IDAwIDAyIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwRjcwOiAxMiAwMCAw
MCAwMCAwNSAwMCAwMCAwMCAxRiAwMCAwMCAwMCAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4u
LgogICAgMEY4MDogMTIgMjIgMDQgMEMgM0QgMDAgMDIgMDAgMDEgMEEgMTQgMTEgMTcgMEEgMTQg
M0QgIC4iLi49Li4uLi4uLi4uLj0KICAgIDBGOTA6IDAwIDAyIDAwIDM4IDAxIDAwIDAwIDMyIDAw
IDAwIDAwIEZGIDA3IDAwIDAwIDAxICAuLi44Li4uMi4uLi4uLi4uCiAgICAwRkEwOiAwMCAwMCAw
MCAxMiAyMiAwNCAwQyAwQiAwMCAwMiAwMCAwMSAwQSAxMyAxMSAxNyAgLi4uLiIuLi4uLi4uLi4u
LgogICAgMEZCMDogMEEgMTQgMEIgMDAgMDIgMDAgODAgMDEgMDAgMDAgMzIgMDAgMDAgMDAgRkYg
MEYgIC4uLi4uLi4uLi4yLi4uLi4KICAgIDBGQzA6IDAwIDAwIDAxIDAwIDAwIDAwIDEyIDIyIDA0
IDBDIDNDIDAwIDAyIDAwIDAxIDBBICAuLi4uLi4uIi4uPC4uLi4uCiAgICAwRkQwOiAxMiAxMSAx
NyAwQSAxNCAzQyAwMCAwMiAwMCBDNCAwMiAwMCAwMCAzMiAwMCAwMCAgLi4uLi48Li4uLi4uLjIu
LgogICAgMEZFMDogMDAgRkYgMEYgMDAgMDAgMDEgMDAgMDAgMDAgMTIgMjIgMDQgMEMgMTAgMDAg
MDIgIC4uLi4uLi4uLi4iLi4uLi4KICAgIDBGRjA6IDAwIDAxIDBBIDExIDExIDE3IDBBIDE0IDEw
IDAwIDAyIDAwIDQ4IDAwIDAwIDAwICAuLi4uLi4uLi4uLi5ILi4uCiAgICAxMDAwOiAzMCAwMCAw
MCAwMCA4NCAwMCAwMCAwMCAwNiAwMCAwMCAwMCAxMiAyMiAwNCAwQyAgMC4uLi4uLi4uLi4uLiIu
LgogICAgMTAxMDogMDkgMDAgMDIgMDAgMDEgMEEgMTAgMTEgMTcgMEEgMTQgMDkgMDAgMDIgMDAg
NzQgIC4uLi4uLi4uLi4uLi4uLnQKICAgIDEwMjA6IDAwIDAwIDAwIDFEIDAwIDAwIDAwIEZGIDAw
IDAwIDAwIDAxIDAwIDAwIDAwIDEyICAuLi4uLi4uLi4uLi4uLi4uCiAgICAxMDMwOiAyMiAwNCAw
QyAwNSAwMCAwMiAwMCAwMSAwQSAwRiAxMSAxNyAwQSAxNCAwNSAwMCAgIi4uLi4uLi4uLi4uLi4u
LgogICAgMTA0MDogMDIgMDAgNEQgMDAgMDAgMDAgMTUgMDAgMDAgMDAgN0UgMDAgMDAgMDAgMDEg
MDAgIC4uTS4uLi4uLi5+Li4uLi4KICAgIDEwNTA6IDAwIDAwIDEyIDIyIDA0IDBDIDA2IDAwIDAy
IDAwIDAxIDBBIDBFIDExIDE3IDBBICAuLi4iLi4uLi4uLi4uLi4uCiAgICAxMDYwOiAxNCAwNiAw
MCAwMiAwMCAyNyAwMCAwMCAwMCAwOCAwMCAwMCAwMCAzRSAwMCAwMCAgLi4uLi4nLi4uLi4uLj4u
LgogICAgMTA3MDogMDAgMDEgMDAgMDAgMDAgMTIgMjIgMDQgMEMgM0IgMDAgMDIgMDAgMDEgMEEg
MEQgIC4uLi4uLiIuLjsuLi4uLi4KICAgIDEwODA6IDExIDE3IDBBIDE0IDNCIDAwIDAyIDAwIDI3
IDAwIDAwIDAwIDA4IDAwIDAwIDAwICAuLi4uOy4uLicuLi4uLi4uCiAgICAxMDkwOiAzRSAwMCAw
MCAwMCAwMSAwMCAwMCAwMCAxMiAyMiAwNCAwQyAwMiAwMCAwMiAwMCAgPi4uLi4uLi4uIi4uLi4u
LgogICAgMTBBMDogMDEgMEEgMEMgMTEgMTcgMEEgMTQgMDIgMDAgMDIgMDAgMjggMDAgMDAgMDAg
MTYgIC4uLi4uLi4uLi4uKC4uLi4KICAgIDEwQjA6IDAwIDAwIDAwIDNFIDAwIDAwIDAwIDAyIDAw
IDAwIDAwIDEyIDQ5IDBEIDA0IDBDICAuLi4+Li4uLi4uLi5JLi4uCiAgICAxMEMwOiAwMSAwMCAw
MiAwMCAwMCAwQSAwQiAxMSA0RCAwQyAwQiA5QyAwMSAwMSAwMCAwMiAgLi4uLi4uLi5NLi4uLi4u
LgogICAgMTBEMDogMDAgNjAgMDkgMDAgMDAgMkYgMDAgMDAgMDAgRTggMDMgMDAgMDAgQjAgMDQg
MDAgIC5gLi4uLy4uLi4uLi4uLi4KICAgIDEwRTA6IDAwIDQwIDA2IDAwIDAwIEE0IDA2IDAwIDAw
IDA4IDA3IDAwIDAwIDZDIDA3IDAwICAuQC4uLi4uLi4uLi4ubC4uCiAgICAxMEYwOiAwMCBEMCAw
NyAwMCAwMCAzNCAwOCAwMCAwMCA5OCAwOCAwMCAwMCBGQyAwOCAwMCAgLi4uLi40Li4uLi4uLi4u
LgogICAgMTEwMDogMDAgNjAgMDkgMDAgMDAgQzQgMDkgMDAgMDAgMjggMEEgMDAgMDAgOEMgMEEg
MDAgIC5gLi4uLi4uLiguLi4uLi4KICAgIDExMTA6IDAwIEYwIDBBIDAwIDAwIDU0IDBCIDAwIDAw
IEI4IDBCIDAwIDAwIDFDIDBDIDAwICAuLi4uLlQuLi4uLi4uLi4uCiAgICAxMTIwOiAwMCA4MCAw
QyAwMCAwMCBFNCAwQyAwMCAwMCA0OCAwRCAwMCAwMCBBQyAwRCAwMCAgLi4uLi4uLi4uSC4uLi4u
LgogICAgMTEzMDogMDAgMTAgMEUgMDAgMDAgNzQgMEUgMDAgMDAgRDggMEUgMDAgMDAgM0MgMEYg
MDAgIC4uLi4udC4uLi4uLi48Li4KICAgIDExNDA6IDAwIEEwIDBGIDAwIDAwIDA0IDEwIDAwIDAw
IDY4IDEwIDAwIDAwIENDIDEwIDAwICAuLi4uLi4uLi5oLi4uLi4uCiAgICAxMTUwOiAwMCAzMCAx
MSAwMCAwMCA5NCAxMSAwMCAwMCBGOCAxMSAwMCAwMCA1QyAxMiAwMCAgLjAuLi4uLi4uLi4uLlwu
LgogICAgMTE2MDogMDAgQzAgMTIgMDAgMDAgMjQgMTMgMDAgMDAgODggMTMgMDAgMDAgRUMgMTMg
MDAgIC4uLi4uJC4uLi4uLi4uLi4KICAgIDExNzA6IDAwIDUwIDE0IDAwIDAwIEI0IDE0IDAwIDAw
IDE4IDE1IDAwIDAwIDdDIDE1IDAwICAuUC4uLi4uLi4uLi4ufC4uCiAgICAxMTgwOiAwMCBFMCAx
NSAwMCAwMCA0NCAxNiAwMCAwMCBBOCAxNiAwMCAwMCAwQyAxNyAwMCAgLi4uLi5ELi4uLi4uLi4u
LgogICAgMTE5MDogMDAgNzAgMTcgMDAgMDAgMTIgMjMgMDQgMEMgMjYgMDAgMDIgMDAgMDAgMEEg
MEEgIC5wLi4uLiMuLiYuLi4uLi4KICAgIDExQTA6IDExIDE4IDBCIDlDIDAxIDI2IDAwIDAyIDAw
IDAxIDAwIDAwIDAwIDAyIDAwIDAwICAuLi4uLiYuLi4uLi4uLi4uCiAgICAxMUIwOiAwMCAwMCAw
MCAwMCAwMCAwMSAwMCAwMCAwMCAxMiAyMiAwNCAwQyAwQSAwMCAwNSAgLi4uLi4uLi4uLiIuLi4u
LgogICAgMTFDMDogMDAgMDEgMEEgMDkgMTEgMTcgMEEgMTQgMEEgMDAgMDUgMDAgMDAgMDAgMDAg
MDAgIC4uLi4uLi4uLi4uLi4uLi4KICAgIDExRDA6IDAwIDAwIDAwIDAwIDMyIDAwIDAwIDAwIDAx
IDAwIDAwIDAwIDEyIDIyIDA0IDBDICAuLi4uMi4uLi4uLi4uIi4uCiAgICAxMUUwOiAyNyAwMCAw
MiAwMCAwMSAwQSAwOCAxMSAxNyAwQSAxNCAyNyAwMCAwMiAwMCAwMCAgJy4uLi4uLi4uLi4nLi4u
LgogICAgMTFGMDogMDAgMDAgMDAgMDAgMDAgMDAgMDAgRkYgRkYgRkYgRkYgMDEgMDAgMDAgMDAg
MTIgIC4uLi4uLi4uLi4uLi4uLi4KICAgIDEyMDA6IDIyIDA0IDBDIDA4IDAwIDAxIDAwIDAxIDBB
IDA3IDExIDE3IDBBIDE0IDA4IDAwICAiLi4uLi4uLi4uLi4uLi4uCiAgICAxMjEwOiAwMSAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAwMCAwMCBGRiBGRiBGRiBGRiAwMSAwMCAgLi4uLi4uLi4uLi4uLi4u
LgogICAgMTIyMDogMDAgMDAgMTIgMjIgMDQgMEMgMDcgMDAgMDEgMDAgMDEgMEEgMDYgMTEgMTcg
MEEgIC4uLiIuLi4uLi4uLi4uLi4KICAgIDEyMzA6IDE0IDA3IDAwIDAxIDAwIDAwIDAwIDAwIDAw
IDAwIDAwIDAwIDAwIEZGIEZGIEZGICAuLi4uLi4uLi4uLi4uLi4uCiAgICAxMjQwOiBGRiAwMSAw
MCAwMCAwMCAxMiAyMiAwNCAwQyAwNiAwMCAwMSAwMCAwMSAwQSAwNSAgLi4uLi4uIi4uLi4uLi4u
LgogICAgMTI1MDogMTEgMTcgMEEgMTQgMDYgMDAgMDEgMDAgRjAgMEEgMDAgMDAgMDAgMDAgMDAg
MDAgIC4uLi4uLi4uLi4uLi4uLi4KICAgIDEyNjA6IEZGIEZGIEZGIEZGIDAxIDAwIDAwIDAwIDEy
IDIyIDA0IDBDIDA1IDAwIDAxIDAwICAuLi4uLi4uLi4iLi4uLi4uCiAgICAxMjcwOiAwMSAwQSAw
NCAxMSAxNyAwQSAxNCAwNSAwMCAwMSAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4u
LgogICAgMTI4MDogMDAgMDAgMDAgRkYgRkYgRkYgRkYgMDEgMDAgMDAgMDAgMTIgMjIgMDQgMEMg
MDQgIC4uLi4uLi4uLi4uLiIuLi4KICAgIDEyOTA6IDAwIDAxIDAwIDAxIDBBIDAzIDExIDE3IDBB
IDE0IDA0IDAwIDAxIDAwIEYwIDBBICAuLi4uLi4uLi4uLi4uLi4uCiAgICAxMkEwOiAwMCAwMCAw
MCAwMCAwMCAwMCBGRiBGRiBGRiBGRiAwMSAwMCAwMCAwMCAxMiAyMiAgLi4uLi4uLi4uLi4uLi4u
IgogICAgMTJCMDogMDQgMEMgMDMgMDAgMDEgMDAgMDEgMEEgMDIgMTEgMTcgMEEgMTQgMDMgMDAg
MDEgIC4uLi4uLi4uLi4uLi4uLi4KICAgIDEyQzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAw
IEZGIEZGIEZGIEZGIDAxIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAxMkQwOiAwMCBBMCAx
QSAwMCAxNSA1QyA0RiA0MiA0OSA0NCAwNCAwMCAxNSA1QyA0RiA0MiAgLi4uLi5cT0JJRC4uLlxP
QgogICAgMTJFMDogNDkgNDUgMDQgMDAgMTUgNUMgNEYgNDIgNDkgNTQgMDQgMDAgMTAgOEEgMDkg
MDEgIElFLi4uXE9CSVQuLi4uLi4KICAgIDEyRjA6IDVDIDAwIDA4IDQ3IDQ2IDMwIDMxIDAwIDA4
IDQxIDUzIDREIDQ5IDBCIEIyIDAwICBcLi5HRjAxLi5BU01JLi4uCiAgICAxMzAwOiAwOCA0OSA1
MyA0RCA0OSAwQSA5RCAwOCA0MSA0RiA0NCA1NiAwQSAwNiA1QiA4MCAgLklTTUkuLi5BT0RWLi5b
LgogICAgMTMxMDogNDEgNEYgNDQgNDUgMDAgMEMgMTggRjAgNDUgQTkgMEIgQUMgMjQgNUIgODEg
MzUgIEFPREUuLi4uRS4uLiRbLjUKICAgIDEzMjA6IDQxIDRGIDQ0IDQ1IDAwIDRGIDU1IDU0IDQy
IDQwIDYyIDQxIDUxIDU2IDUzIDIwICBBT0RFLk9VVEJAYkFRVlMgCiAgICAxMzMwOiA1MyA0MyA0
RCA0OSAyMCA1MyA0MyA0RCA0NCAyMCA0NCA1MyA1MCA0NCA4MCBBMiAgU0NNSSBTQ01EIERTUEQu
LgogICAgMTM0MDogMTAgNTIgNDUgNTMgNTYgNDAgMDYgNTIgNEQgNTAgNDQgNDAgNDYgNTcgNDMg
NEUgIC5SRVNWQC5STVBEQEZXQ04KICAgIDEzNTA6IDUzIDgwIDAwIDAxIDVCIDgyIDgxIDAzIDAx
IDQxIDRGIDQ0IDVGIDA4IDVGIDQ4ICBTLi4uWy4uLi5BT0RfLl9ICiAgICAxMzYwOiA0OSA0NCAw
QyA0MSBEMCAwQyAxNCAwOCA1RiA1NSA0OSA0NCAwRCA0MSA0RiA0NCAgSUQuQS4uLi5fVUlELkFP
RAogICAgMTM3MDogMDAgMTQgMTUgNDEgNEQgMzAgMzEgMDAgNzAgNDEgNTEgNTYgNTMgNDEgNEYg
NDQgIC4uLkFNMDEucEFRVlNBT0QKICAgIDEzODA6IDU2IEE0IDVDIDQxIDRGIDQ0IDU2IDE0IDE2
IDQxIDREIDMwIDMyIDAwIEEwIDBEICBWLlxBT0RWLi5BTTAyLi4uCiAgICAxMzkwOiA5MyA0NyA0
NiAzMCAzMSAwMCA3MCAwMSA0NyA0NiAzMCAzMSBBNCAwMCAxNCAwQyAgLkdGMDEucC5HRjAxLi4u
LgogICAgMTNBMDogNDEgNEQgMzAgMzMgMDAgQTQgNUMgNEYgNDIgNDkgNDQgMTQgNDQgMEIgNDEg
NEQgIEFNMDMuLlxPQklELkQuQU0KICAgIDEzQjA6IDMwIDM0IDAxIDA4IDRDIDRGIDQ0IDU0IDEx
IDA1IDBCIDlDIDAxIDAwIDA4IDU0ICAwNC4uTE9EVC4uLi4uLi5UCiAgICAxM0MwOiA0NSA0RCA1
MCAxMSAwNSAwQiAwMCAwMiAwMCA3MCA2OCA2MCA3MCA4MyA4OCA1QyAgRU1QLi4uLi4ucGhgcC4u
XAogICAgMTNEMDogNEYgNDIgNDkgNTQgMDAgMDAgNjEgNzAgMDEgNjIgQTIgNDAgMDggOTIgOTQg
NjIgIE9CSVQuLmFwLmIuQC4uLmIKICAgIDEzRTA6IDYxIDcwIDgzIDg4IDgzIDg4IDVDIDRGIDQy
IDQ5IDU0IDYyIDAwIDAwIDAwIDYzICBhcC4uLi5cT0JJVGIuLi5jCiAgICAxM0YwOiA3MCA4MyA4
OCA4MyA4OCA1QyA0RiA0MiA0OSA1NCA2MiAwMCAwMSAwMCA2NCBBMCAgcC4uLi5cT0JJVGIuLi5k
LgogICAgMTQwMDogNDkgMDUgOTAgOTMgNjMgNjAgOTMgNjQgMDAgNzAgODMgODggODMgODggNUMg
NEYgIEkuLi5jYC5kLnAuLi4uXE8KICAgIDE0MTA6IDQyIDQ5IDU0IDYyIDAwIDBBIDAzIDAwIDRD
IDRGIDQ0IDU0IDcwIDU3IDQzIDRFICBCSVRiLi4uLkxPRFRwV0NOCiAgICAxNDIwOiA1MyA1NCA0
NSA0RCA1MCA3MCA4MyA4OCA4MyA4OCA1QyA0RiA0MiA0OSA1NCA2MiAgU1RFTVBwLi4uLlxPQklU
YgogICAgMTQzMDogMDAgMEEgMDIgMDAgNjUgNzcgNjUgMEEgMDQgNjUgOEEgNTQgNDUgNEQgNTAg
NjUgIC4uLi5ld2UuLmUuVEVNUGUKICAgIDE0NDA6IDU0IDQ1IDREIDMxIDhBIDRDIDRGIDQ0IDU0
IDBBIDA0IDQzIDUyIDU1IDU0IDcwICBURU0xLkxPRFQuLkNSVVRwCiAgICAxNDUwOiA1NCA0NSA0
RCAzMSA0MyA1MiA1NSA1NCBBNSA3NSA2MiBBNCA0QyA0RiA0NCA1NCAgVEVNMUNSVVQudWIuTE9E
VAogICAgMTQ2MDogNUIgODAgNTAgNTMgNEQgNDkgMDEgNDEgNTMgNEQgNDkgMEEgMDIgNUIgODEg
MEIgIFsuUFNNSS5BU01JLi5bLi4KICAgIDE0NzA6IDUwIDUzIDREIDQ5IDAwIDQxIDUzIDREIDRG
IDA4IDVCIDAxIDUzIDREIDRDIDRGICBQU01JLkFTTU8uWy5TTUxPCiAgICAxNDgwOiAwMCAxNCA0
OSAwNCA0MSA0RCAzMCAzNSAwMSAwOCA0QyA0RiA0NCA1NCAxMSAwNCAgLi5JLkFNMDUuLkxPRFQu
LgogICAgMTQ5MDogMEEgQzggMDAgOEEgNjggMDAgNDQgNDMgNEQgNDkgOEEgNjggMEEgMDQgNDQg
NDMgIC4uLi5oLkRDTUkuaC4uREMKICAgIDE0QTA6IDREIDQ0IDcwIDQ0IDQzIDREIDQ5IDUzIDQz
IDREIDQ5IDcwIDQ0IDQzIDREIDQ0ICBNRHBEQ01JU0NNSXBEQ01ECiAgICAxNEIwOiA1MyA0MyA0
RCA0NCA3MCA0OSA1MyA0RCA0OSA0MSA1MyA0RCA0RiA3MCA0RiA1NSAgU0NNRHBJU01JQVNNT3BP
VQogICAgMTRDMDogNTQgNDIgNEMgNEYgNDQgNTQgQTQgNEMgNEYgNDQgNTQgMTQgNDIgMEMgNDEg
NEQgIFRCTE9EVC5MT0RULkIuQU0KICAgIDE0RDA6IDMwIDM2IDAxIDA4IDRDIDRGIDQ0IDU0IDEx
IDEzIDBBIDE0IDAwIDAwIDAwIDAwICAwNi4uTE9EVC4uLi4uLi4uCiAgICAxNEUwOiAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwOCA1NCA0NSA0RCAgLi4uLi4uLi4uLi4uLlRF
TQogICAgMTRGMDogNTAgMTEgMDUgMEIgMDAgMDIgMDAgNzAgNjggNjAgNzAgODMgODggNUMgNEYg
NDIgIFAuLi4uLi5waGBwLi5cT0IKICAgIDE1MDA6IDQ5IDU0IDAwIDAwIDYxIDcwIDAxIDYyIEEy
IDQwIDA4IDkyIDk0IDYyIDYxIDcwICBJVC4uYXAuYi5ALi4uYmFwCiAgICAxNTEwOiA4MyA4OCA4
MyA4OCA1QyA0RiA0MiA0OSA1NCA2MiAwMCAwMCAwMCA2MyA3MCA4MyAgLi4uLlxPQklUYi4uLmNw
LgogICAgMTUyMDogODggODMgODggNUMgNEYgNDIgNDkgNTQgNjIgMDAgMDEgMDAgNjQgQTAgNDkg
MDUgIC4uLlxPQklUYi4uLmQuSS4KICAgIDE1MzA6IDkwIDkzIDYzIDYwIDkzIDY0IDAxIDcwIDgz
IDg4IDgzIDg4IDVDIDRGIDQyIDQ5ICAuLmNgLmQucC4uLi5cT0JJCiAgICAxNTQwOiA1NCA2MiAw
MCAwQSAwMyAwMCA0QyA0RiA0NCA1NCA3MCA1NyA0MyA0RSA1MyA1NCAgVGIuLi4uTE9EVHBXQ05T
VAogICAgMTU1MDogNDUgNEQgNTAgNzAgODMgODggODMgODggNUMgNEYgNDIgNDkgNTQgNjIgMDAg
MEEgIEVNUHAuLi4uXE9CSVRiLi4KICAgIDE1NjA6IDAyIDAwIDY1IDc3IDY1IDBBIDA0IDY1IDhB
IDU0IDQ1IDREIDUwIDY1IDU0IDQ1ICAuLmV3ZS4uZS5URU1QZVRFCiAgICAxNTcwOiA0RCAzMSA4
QSA0QyA0RiA0NCA1NCAwQSAwNCA0MyA1MiA1NSA1NCA3MCA1NCA0NSAgTTEuTE9EVC4uQ1JVVHBU
RQogICAgMTU4MDogNEQgMzEgNDMgNTIgNTUgNTQgQTUgNzUgNjIgQTQgNEMgNEYgNDQgNTQgMTQg
NDEgIE0xQ1JVVC51Yi5MT0RULkEKICAgIDE1OTA6IDA2IDQxIDREIDMwIDM3IDAxIDA4IDQyIDUz
IDUwIDQ0IDExIDA0IDBCIDE0IDAyICAuQU0wNy4uQlNQRC4uLi4uCiAgICAxNUEwOiBBMCAwQSA5
NCA2OCAwQSAwRiBBNCA0MiA1MyA1MCA0NCBBMCAxMiA5MyA2OCAwMCAgLi4uaC4uLkJTUEQuLi5o
LgogICAgMTVCMDogNzAgNDQgNTMgNTAgNDQgNDIgNTMgNTAgNDQgQTQgNDIgNTMgNTAgNDQgNzAg
MDAgIHBEU1BEQlNQRC5CU1BEcC4KICAgIDE1QzA6IDYwIDcyIDYwIDc3IDY4IDBCIDE0IDAyIDAw
IDYwIDcwIDBCIDE0IDAyIDYxIDcwICBgcmB3aC4uLi5gcC4uLmFwCiAgICAxNUQwOiAwMCA2MiBB
MiAxOCA2MSA3MCA4MyA4OCA0NCA1MyA1MCA0NCA2MCAwMCA4OCA0MiAgLmIuLmFwLi5EU1BEYC4u
QgogICAgMTVFMDogNTMgNTAgNDQgNjIgMDAgNzYgNjEgNzUgNjAgNzUgNjIgQTQgNDIgNTMgNTAg
NDQgIFNQRGIudmF1YHViLkJTUEQKICAgIDE1RjA6IDE0IDBDIDQxIDREIDMwIDM4IDAwIEE0IDVD
IDRGIDQyIDQ5IDQ1IDE0IDFEIDQxICAuLkFNMDguLlxPQklFLi5BCiAgICAxNjAwOiA0RCAzMCAz
OSAwMCAwOCA1NCA0NSA0RCA1MCAxMSAwMyAwQSA4QyA3MCA1MiA0RCAgTTA5Li5URU1QLi4uLnBS
TQogICAgMTYxMDogNTAgNDQgNTQgNDUgNEQgNTAgQTQgNTQgNDUgNEQgNTAgMDggNUYgNTcgNDQg
NDcgIFBEVEVNUC5URU1QLl9XREcKICAgIDE2MjA6IDExIDJCIDBBIDI4IDZBIDBGIEJDIEFCIEEx
IDhFIEQxIDExIDAwIEEwIEM5IDA2ICAuKy4oai4uLi4uLi4uLi4uCiAgICAxNjMwOiAyOSAxMCAw
MCAwMCA0MSA0MSAwMSAwMiAyMSAxMiA5MCAwNSA2NiBENSBEMSAxMSAgKS4uLkFBLi4hLi4uZi4u
LgogICAgMTY0MDogQjIgRjAgMDAgQTAgQzkgMDYgMjkgMTAgNDIgNDEgMDEgMDAgMTQgNEYgMEEg
NTcgIC4uLi4uLikuQkEuLi5PLlcKICAgIDE2NTA6IDREIDQxIDQxIDAzIEEwIDQ1IDBBIDkzIDY4
IDAwIEEwIDE4IDkxIDkxIDkyIDkzICBNQUEuLkUuLmguLi4uLi4uCiAgICAxNjYwOiA2OSAwMSA5
MiA5MyA2OSAwQSAwMiA5MiA5MyA2OSAwQSAwNiA4QSA2QSAwMCA1NyAgaS4uLmkuLi4uaS4uLmou
VwogICAgMTY3MDogNDkgNDkgNDQgQTAgMDkgOTMgNjkgMDEgQTQgNDEgNEQgMzAgMzEgQTEgNEMg
MDcgIElJRC4uLmkuLkFNMDEuTC4KICAgIDE2ODA6IEEwIDBBIDkzIDY5IDBBIDAyIEE0IDQxIDRE
IDMwIDMyIEExIDRFIDA2IEEwIDBBICAuLi5pLi4uQU0wMi5OLi4uCiAgICAxNjkwOiA5MyA2OSAw
QSAwMyBBNCA0MSA0RCAzMCAzMyBBMSA0MCAwNiBBMCAwRSA5MyA2OSAgLmkuLi5BTTAzLkAuLi4u
aQogICAgMTZBMDogMEEgMDQgQTQgNDEgNEQgMzAgMzQgNTcgNDkgNDkgNDQgQTEgNEUgMDQgQTAg
MEIgIC4uLkFNMDRXSUlELk4uLi4KICAgIDE2QjA6IDkzIDY5IDBBIDA1IEE0IDQxIDREIDMwIDM1
IDZBIEExIDNGIEEwIDBFIDkzIDY5ICAuaS4uLkFNMDVqLj8uLi5pCiAgICAxNkMwOiAwQSAwNiBB
NCA0MSA0RCAzMCAzNiA1NyA0OSA0OSA0NCBBMSAyRSBBMCAwRSA5MyAgLi4uQU0wNldJSUQuLi4u
LgogICAgMTZEMDogNjkgMEEgMDcgQTQgNDEgNEQgMzAgMzcgNTcgNDkgNDkgNDQgQTEgMUQgQTAg
MEEgIGkuLi5BTTA3V0lJRC4uLi4KICAgIDE2RTA6IDkzIDY5IDBBIDA4IEE0IDQxIDREIDMwIDM4
IEExIDEwIEEwIDBBIDkzIDY5IDBBICAuaS4uLkFNMDguLi4uLmkuCiAgICAxNkYwOiAwOSBBNCA0
MSA0RCAzMCAzOSBBMSAwMyBBNCAwMCBBNCAwMCAwOCA1NyA1MSA0MiAgLi5BTTA5Li4uLi4uLldR
QgogICAgMTcwMDogNDEgMTEgNDUgQzggMEIgODAgMEMgNDYgNEYgNEQgNDIgMDEgMDAgMDAgMDAg
NzAgIEEuRS4uLi5GT01CLi4uLnAKICAgIDE3MTA6IDBDIDAwIDAwIDZDIDQ1IDAwIDAwIDQ0IDUz
IDAwIDAxIDFBIDdEIERBIDU0IDE4ICAuLi5sRS4uRFMuLi59LlQuCiAgICAxNzIwOiBENCBBMSAw
MCAwMSAwNiAxOCA0MiAxMCAxMSAxMCAyMiAyMSAzMCAzNCAzMiAwQiAgLi4uLi4uQi4uLiIhMDQy
LgogICAgMTczMDogMDMgNjMgMDQgOEEgMEIgMjEgMDcgMTAgMTIgMDcgODUgMTIgMDIgQTEgRkUg
MDQgIC5jLi4uIS4uLi4uLi4uLi4KICAgIDE3NDA6IEYyIDJCIDAwIEUxIDE2IENBIDE0IDYwIDUw
IDgwIDUzIDA0IDExIEY0IDJBIEMwICAuKy4uLi4uYFAuUy4uLiouCiAgICAxNzUwOiBBNiAwMCA5
MyAwMiAyQyAwQSBEMCAyRSBDMCBCMiAwMCBERCAwMiBBNCBDMyAxMiAgLi4uLiwuLi4uLi4uLi4u
LgogICAgMTc2MDogOTEgRTAgMjggMzEgRTAgMjggOUQgRDggQzIgMEQgMUIgQkMgNTAgMTQgQ0Qg
MjAgIC4uKDEuKC4uLi4uLlAuLiAKICAgIDE3NzA6IDRBIDgyIENBIDA1IEY4IDQ2IDEwIDc4IEI5
IDAyIDI0IDRGIDQwIDlBIDA1IDE4ICBKLi4uLkYueC4uJE9ALi4uCiAgICAxNzgwOiAxNiA2MCA1
RCA4MCBFQyAyMSA1MCBBOSA0MyA0MCBDOSAxOSAwMiA2QSAwMCBBRCAgLmBdLi4hUC5DQC4uLmou
LgogICAgMTc5MDogNEUgNDAgRjggOTUgNEUgMDkgNDkgMTAgQ0UgNTggQzUgRTMgNkIgMTYgNEQg
Q0YgIE5ALi5OLkkuLlguLmsuTS4KICAgIDE3QTA6IDQ5IENFIDMxIEU0IDc4IDVDIEU4IDQxIEYw
IDUwIDFBIDQwIDk4IEZDIDIxIDJCICBJLjEueFwuQS5QLkAuLiErCiAgICAxN0IwOiAwNiAwQyA0
QSBDMiA1OCBBOCA4QiA1MSBBMyA0NiBDQSAwNiA2NCA4OCBEMiA0NiAgLi5KLlguLlEuRi4uZC4u
RgogICAgMTdDMDogOEQgMUUgRDAgRjkgMUQgQzkgRDkgMUQgREQgOTEgMjQgMzAgRUEgMzEgMUQg
NjMgIC4uLi4uLi4uLi4kMC4xLmMKICAgIDE3RDA6IDYxIDMzIDEyIDZBIDhDIEU2IEEwIDQ4IEI4
IDQxIEEzIDI1IEMyIDZBIDVDIEIxICBhMy5qLi4uSC5BLiUualwuCiAgICAxN0UwOiBDRiBDQyBD
MiA4NyAyNSA4QyAyMyAzOCBCMCA4MyBCNSA2OCAxOCBBMSAxNSAwNCAgLi4uLiUuIzguLi5oLi4u
LgogICAgMTdGMDogQTcgNDEgMUMgNDUgOTQgMzAgMEMgQ0YgOTggODEgOEUgOTIgMjEgODUgMDkg
N0EgIC5BLkUuMC4uLi4uLiEuLnoKICAgIDE4MDA6IDAyIDQxIDRFIDlFIDYxIDE5IEUyIDBDIDM4
IDU2IDhDIDUwIDIxIDMxIDAzIDA5ICAuQU4uYS4uLjhWLlAhMS4uCiAgICAxODEwOiBGRSBGRiAz
RiA4MSBBRSAzMSBFNCAxOSA4OCBEQyAwMyA0RSAyMCA0OCBGNCAyOCAgLi4/Li4xLi4uLi5OIEgu
KAogICAgMTgyMDogQzEgOEQgNkIgNTQgMzYgQTYgQjMgQzEgMEQgQ0MgMDQgNzEgMEUgMEYgMjMg
MDMgIC4ua1Q2Li4uLi4ucS4uIy4KICAgIDE4MzA6IDQyIDEzIDg4IDFGIDNCIDdDIDAyIEJCIDNG
IDBFIDQ4IDIxIDgyIDJFIDA0IDY3ICBCLi4uO3wuLj8uSCEuLi5nCiAgICAxODQwOiA1QSBBMyAw
MCA2QiA2NyAwNyBEOSA4MiBEMCA1OSAyMCA1NiA2MyAyOCA4MiA4OCAgWi4ua2cuLi4uWSBWYygu
LgogICAgMTg1MDogMTAgMzQgOEEgRjEgMjIgODQgMEEgMTEgMjUgRUEgMzkgMDcgQTkgNEQgODAg
MzIgIC40Li4iLi4uJS45Li5NLjIKICAgIDE4NjA6IDEwIEExIDA1IDMzIDAyIEIzIDdGIDA2IDYw
IDE2IDIwIEZFIDA4IDJDIEUxIDQ0ICAuLi4zLi4uLmAuIC4uLC5ECiAgICAxODcwOiAyMCAyMyBB
MyBBMSA4NyAwNSA5RiAwNCBEOCAwMSBDMSBGMyAzOSAzNSAxMyAzOCAgICMuLi4uLi4uLi4uOTUu
OAogICAgMTg4MDogMzAgODQgNzggMjUgNDAgRDQgRDEgODIgMTIgNTggQ0EgRDEgODAgRDggMUUg
OTggIDAueCVALi4uLlguLi4uLi4KICAgIDE4OTA6IEVFIDAxIDQ3IDc4IEVFIEJFIDFDIDlDIDlB
IDdGIDFBIDlFIEU2IDQzIDAyIDY2ICAuLkd4Li4uLi4uLi4uQy5mCiAgICAxOEEwOiA4OCAxRSBF
QiA0MSAwNCAzQyA0NCA3NiA0QSAzMCAyMCBERSBGQiBCNSA4MCA4QyAgLi4uQS48RHZKMCAuLi4u
LgogICAgMThCMDogRTAgMjUgQzEgODAgOUUgQzQgMDMgMDIgNTggMEUgMUEgMDcgN0UgNDIgMTUg
REYgIC4lLi4uLi4uWC4uLn5CLi4KICAgIDE4QzA6IDAxIEU4IDkxIDgwIENEIDI4IEJFIDA5IENB
IDNBIDNFIEEwIEU3IDFDIEVEIEQ5ICAuLi4uLiguLi46Pi4uLi4uCiAgICAxOEQwOiBFMSA2NSBB
MSBEOSAyQiAwNiAyMSA3OCAwRCBGMCA0RCBDMSBBNyAxMSA4QiA1QSAgLmUuLisuIXguLk0uLi4u
WgogICAgMThFMDogOUQgOUMgQUMgQ0EgMjMgQTYgRTAgMUUgMDIgOTcgMDEgQTcgQTEgN0IgQkMg
RTAgIC4uLi4jLi4uLi4uLi57Li4KICAgIDE4RjA6IDUwIDMwIDVFIEZBIEZGIDFGIDJGIEI4IEU3
IDc1IEJDIDYwIDM5IDI2IDNDIDZDICBQMF4uLi4vLi51LmA5JjxsCiAgICAxOTAwOiA1NCAwNSBB
MSA0MSAxQyA3MCBGMyAwMyAyMCA1NyAwQiA4RiA5OCBDRCBFNSBBQyAgVC4uQS5wLi4gVy4uLi4u
LgogICAgMTkxMDogRDggMTEgODUgMEYgOEYgMEYgQzMgMjMgN0UgNkYgMjggMTYgNDQgMDIgMjEg
NzQgIC4uLi4uLi4jfm8oLkQuIXQKICAgIDE5MjA6IDY2IDM4IDcyIEIwIDM4IDNCIDQxIDg4IEMw
IEQyIDg2IDhFIDFFIEIyIDQ3IEY1ICBmOHIuODtBLi4uLi4uLkcuCiAgICAxOTMwOiAxMiA2MyA4
QyAyNyAwMiBBMyA5RSBEMiBEMSA4MyAwRiBEMCBBMyAwNyA3QyBGRSAgLmMuJy4uLi4uLi4uLi58
LgogICAgMTk0MDogRkYgNDcgOEYgOTMgMzQgNjYgODkgMTggM0QgRkEgMUMgRTEgRTkgQkMgRkQg
RjAgIC5HLi40Zi4uPS4uLi4uLi4KICAgIDE5NTA6IEEzIDQ4IDAyIEM3IDg3IEQwIEU4IEMxIDcz
IEZBIEYxIEU4IEMxIDNGIDQ2IDhGICAuSC4uLi4uLnMuLi4uP0YuCiAgICAxOTYwOiAxRSAzQyA2
MyAzOCAzNyBEQyBENSBDNiAyMyAwNyBGQiA3OCBGMSBGMiA4RSA1QiAgLjxjODcuLi4jLi54Li4u
WwogICAgMTk3MDogQTAgRjAgMzkgN0IgMzIgODAgRjcgMjAgREMgNzkgMEIgQjggOEMgODAgQ0Ig
M0QgIC4uOXsyLi4gLnkuLi4uLj0KICAgIDE5ODA6IDU3IEExIDA0IDFFIEFEIDQwIEZCIEZGIDNG
IDVBIDAxIDRDIEI4IDNGIEJDIDVBICBXLi4uLkAuLj9aLkwuPy5aCiAgICAxOTkwOiAzRCA1QSA4
MSAzRCBFMiA3MyA0MCAzRiAwMiBDNyA4NiA5MCA5MyBBMyAxNSBFQSAgPVouPS5zQD8uLi4uLi4u
LgogICAgMTlBMDogNjQgODQgMEIgN0EgQjAgMDIgQkEgMDcgMEQgREMgRjEgMDAgQ0UgRkYgRkYg
NzggIGQuLnouLi4uLi4uLi4uLngKICAgIDE5QjA6IEMwIDA3IEM2IDRGIDJGIEUwIDNCIEIzIDc4
IEFDIDM4IDY4IDg2IDc5IDIwIEE3ICAuLi5PLy47LnguOGgueSAuCiAgICAxOUMwOiBFNiA2QiAy
MCAwQiAzQiA1QSA1MCAxRCBBQiA4MCBDMyBCOSAxMiAzNyA1QSBCOCAgLmsgLjtaUC4uLi4uLjda
LgogICAgMTlEMDogNDMgQzMgOEYgMTcgN0MgMjIgNEUgNTIgM0UgRDQgNDEgM0YgODAgN0EgQkMg
RTAgIEMuLi58Ik5SPi5BPy56Li4KICAgIDE5RTA6IDM5IDQ4IDAxIDg3IDQzIDFEIEY4IEZFIEZG
IDg3IDNBIDM4IDQzIDA2IDlGIEJDICA5SC4uQy4uLi4uOjhDLi4uCiAgICAxOUYwOiBCMyAxOCBG
QSAzQyBFMyAyOSBENCA3QSA4OSAyMSBCMCAwNyBFNCA5MyA0OCA5MCAgLi4uPC4pLnouIS4uLi5I
LgogICAgMUEwMDogMTMgODkgNzAgMkUgM0UgOEQgODEgRUQgMDAgMDUgMUMgNEUgNjMgRTAgQjkg
QTQgIC4ucC4+Li4uLi4uTmMuLi4KICAgIDFBMTA6IEIwIERCIDE4IDE4IDBFIDUxIEYwIDI2IEU1
IEYxIDgzIEVGIEQ0IDg0IDNCIDQ0ICAuLi4uLlEuJi4uLi4uLjtECiAgICAxQTIwOiBDMSBGMyAz
OCAyNCAyMSA5RiBDNyA0QiAwMCBFRSAxRSA4NSAzRiA0NyA4MSBGNyAgLi44JCEuLksuLi4uP0cu
LgogICAgMUEzMDogRkYgN0YgOEUgODIgMjcgNkIgQTEgRjQgMTAgNjUgMjEgMzAgQTggNzMgMTQg
QzAgIC4uLi4nay4uLmUhMC5zLi4KICAgIDFBNDA6IDE0IDZGIEI3IDBEIEREIEEyIDdDIDFCIDc4
IDFBIDc4IDhEIDg4IEYyIDFDIEU1ICAuby4uLi58LngueC4uLi4uCiAgICAxQTUwOiA4QiBENCAw
QiA0MSA4NCAyOCBDNyA3QiAwMiAxMSAxRSBBNiAzQyBFMSAzMCBFMSAgLi4uQS4oLnsuLi4uPC4w
LgogICAgMUE2MDogNEUgMzYgQ0EgNEIgNDMgMTggNDMgQzcgMEEgMTQgMzkgN0UgMDggNUYgMkEg
N0MgIE42LktDLkMuLi45fi5fKnwKICAgIDFBNzA6IDhFIDYyIDUxIENFIDAzIEZBIDExIEY4IEZD
IDYxIDIzIDY3IDExIEQ0IDQ5IEMwICAuYlEuLi4uLi5hI2cuLkkuCiAgICAxQTgwOiA4NyAwRSAw
RiBFQSAwOSAwMSAxMyBGQSA2MCAwOCBBQSBGRiBGRiA0OSAwQSAzOCAgLi4uLi4uLi5gLi4uLkku
OAogICAgMUE5MDogMUYgNDAgRTAgODUgM0MgRjMgODIgRUUgNDQgMEYgOEUgMzMgNjEgRTQgQjgg
MEYgIC5ALi48Li4uRC4uM2EuLi4KICAgIDFBQTA6IDM0IEQ4IEIzIDA3IEYwIDkxIDc2IEYwIDQw
IDg5IDM5IDdCIDAwIEJBIEZFIEZGICA0Li4uLi52LkAuOXsuLi4uCiAgICAxQUIwOiA2NyAwRiBD
MCBDMiA2NSBFMyBERCBDMyA5NyA5RSAzMyA3RCBGNiBGMCA1QyBERiAgZy4uLmUuLi4uLjN9Li5c
LgogICAgMUFDMDogMzkgN0MgMkEgMzQgOEEgMjEgREUgM0YgN0MgMjggODggMTIgRjEgNUMgQTMg
MUMgIDl8KjQuIS4/fCguLi5cLi4KICAgIDFBRDA6IDcyIDk0IEI4IDExIEMyIDNDIDFFIDFBIDI3
IDQ2IEE4IDA4IDBDIEY0IEQ5IDgzICByLi4uLjwuLidGLi4uLi4uCiAgICAxQUUwOiBDNSAzOSA3
QiA0MCBDNSAzRSA5QiAzNyA4RSAwOCBBRiAwMSBFNyA3OCAzRSAzRSAgLjl7QC4+LjcuLi4uLng+
PgogICAgMUFGMDogN0IgMDAgREUgQTQgM0MgRkQgNzQgRjYgMDAgRDcgMDkgMTggNzcgRjYgQzAg
RkQgIHsuLi48LnQuLi4uLncuLi4KICAgIDFCMDA6IEZGIENGIDFFIEI4IDcxIDYzIDRGIDFGIEMw
IDRFIDg0IDg3IEEzIDA3IDI2IEY2ICAuLi4ucWNPLi5OLi4uLiYuCiAgICAxQjEwOiBGOSAxNiBB
MCBEMCBFMSBFMyBGOSAxNiBBQyBGRiBGRiA4MyAxNCAxNyBGRSBCMiAgLi4uLi4uLi4uLi4uLi4u
LgogICAgMUIyMDogRDQgQTcgQzAgQzEgMEYgQTkgRTggRTEgRjggMzggODcgMzkgRTAgMDIgNkMg
M0UgIC4uLi4uLi4uLjguOS4ubD4KICAgIDFCMzA6IDVBIEZCIEZGIDdGIEI0IEM2IDAzIDg3IEY0
IDUxIDAxIDZDIEM3IDVCIEUwIDcwICBaLi4uLi4uLi5RLmwuWy5wCiAgICAxQjQwOiA1NCAwMCBD
RiBDMCBGOCA1OCA4MSBDNSBDNCAxRSA1RCA4RSAxNSA2QyA4NyA1QSAgVC4uLi5YLi4uLl0uLmwu
WgogICAgMUI1MDogRTAgMzAgNTYgMzAgMEQgOEMgOEQgMTUgN0MgMTIgOEUgRDUgRTggMzEgRkEg
RDYgIC4wVjAuLi4ufC4uLi4xLi4KICAgIDFCNjA6IDczIDQwIDlFIDQ3IDg0IEIwIEJFIEMyIDI0
IDcwIDVDIDA4IEZEIEZGIDg3IDBCICBzQC5HLi4uLiRwXC4uLi4uCiAgICAxQjcwOiAxRSA1MCAw
RiAxNyBGQyBGMiA4NiAwQiA5QSBCMSBDMSAxOSAzMSBGOCA0RSA1RSAgLlAuLi4uLi4uLi4uMS5O
XgogICAgMUI4MDogM0UgMDYgODMgRTUgMTIgQzEgQ0UgMDIgNkMgM0EgRjggOUIgMzAgRkUgQzgg
MDUgID4uLi4uLi4ubDouLjAuLi4KICAgIDFCOTA6IDhDIDAyIDk4IDAwIDYxIDMyIDRGIDA3IDky
IDBDIDgzIDNBIDcyIDAxIEE3IDEwICAuLi4uYTJPLi4uLjpyLi4uCiAgICAxQkEwOiAwNyAwMiAy
OCBGRiBGRiAyMyAxNyBGMCA1MyAzQSAyNSA0RCBGQSBGRCAxQiA3NyAgLi4oLi4jLi5TOiVNLi4u
dwogICAgMUJCMDogQ0MgMDIgMUIgQzIgNjMgMTYgQkYgMzAgRkEgOTggMDUgNDYgMzEgNEIgRDEg
NTggIC4uLi5jLi4wLi4uRjFLLlgKICAgIDFCQzA6IDJDIEU3IENDIEU4IDUzIDA3IEVBIDZDIEUx
IDMzIEMwIDE5IDFFIEQ4IEIzIEM2ICAsLi4uUy4ubC4zLi4uLi4uCiAgICAxQkQwOiBGMSA5RSA0
MiBFRCBDMyAyNCA3MyBGNSA3NSBGRCAwOSA4MCA5RiAxQiA3RCBENiAgLi5CLi4kcy51Li4uLi59
LgogICAgMUJFMDogMDIgQUUgMjcgODQgNjcgMkQgRjAgREMgMDcgN0MgMEQgRTAgMTMgMzkgM0Ug
MzggIC4uJy5nLS4uLnwuLi45PjgKICAgIDFCRjA6IEU3IDQ2IEYwIEZDIEZGIENGIDUyIDk2IDM1
IDZFIEI0IDI0IDEwIDFEIDMyIDIyICAuRi4uLi5SLjVuLiQuLjIiCiAgICAxQzAwOiA5RSBFOSA0
MSBCQyBENiBGOSAwNCBGQyA4QSAxMCBGQiAxRCBDMyAzNyAwNSA0RiAgLi5BLi4uLi4uLi4uLjcu
TwogICAgMUMxMDogQzQgRjcgM0EgMTMgOEMgN0UgRUMgMDIgQkEgQTcgMTQgREMgQzAgRTEgOEUg
MEYgIC4uOi4ufi4uLi4uLi4uLi4KICAgIDFDMjA6IDc3IEE0IEMwIDBGIDExIENFIEQ4IEMxIDI1
IEZDIDE0IDhCIDNFIDQyIEYwIDYxICB3Li4uLi4uLiUuLi4+Qi5hCiAgICAxQzMwOiA2MCBCMSAw
MyBCRiAxMyA2MCBFNCA0MSBFQiAyNCAwQiA5RSAzMyAxOCA3MCA4OCAgYC4uLi5gLkEuJC4uMy5w
LgogICAgMUM0MDogMzAgNzQgRDAgREMgNDQgQ0UgRTIgRkYgMUYgMkMgNEUgQjQgOTMgMzggOUYg
NDggIDB0Li5ELi4uLixOLi44LkgKICAgIDFDNTA6IEU3IDE3IDJDIDRBIDc1IDMzIDg3IDAwIDc0
IDkwIDM4IDlDIDM3IDFGIDhGIENFICAuLixKdTMuLnQuOC43Li4uCiAgICAxQzYwOiAzMCBCRSA2
MSBCMiA3QiAwMCBCRiBFRiA3OCAyRSAwNyBFNiBFMyAyRCBCQyAyMyAgMC5hLnsuLi54Li4uLi0u
IwogICAgMUM3MDogODMgMEYgMDMgRTAgMTIgM0QgN0UgMjkgMzkgMEMgQTAgMDYgNjkgRDggRDMg
MzkgIC4uLi4uPX4pOS4uLmkuLjkKICAgIDFDODA6IEZEIDAzIDNCIEIyIEU2IEUxIDM1IEFBIEQ3
IDFEIDlGIDhDIDFFIDA1IEMwIDc2ICAuLjsuLi41Li4uLi4uLi52CiAgICAxQzkwOiA0NCAwMyAw
RSAwMSA4RSAwMiA0MCA2OCA5QSAzOCA5QyBFMyBDNCAxQyA1RiA3RCAgRC4uLi4uQGguOC4uLi5f
fQogICAgMUNBMDogMEYgNjIgRDcgMTUgNjMgQkUgNTEgNTUgN0YgMTIgODAgN0UgRjggMDIgQ0Yg
RkYgIC5iLi5jLlFVLi4ufi4uLi4KICAgIDFDQjA6IEZGIEYyIEYzIEZBIDkzIEMwIDQyIDhGIDAy
IDUwIEEwIDVGIEJEIDdDIEFCIDc5ICAuLi4uLi5CLi5QLl8ufC55CiAgICAxQ0MwOiA1NiA2MCBC
OCBBNyA3NCA1NiAwOSAyQyBFOSAyOCAwMCBBQSBFMyAxQiA3MCBCOCAgVmAuLnRWLiwuKC4uLi5w
LgogICAgMUNEMDogNDkgM0QgMEEgODAgN0YgOEEgMEMgRTQgMTggQjEgRjcgMEIgN0UgNkEgQjMg
Q0IgIEk9Li4uLi4uLi4uLn5qLi4KICAgIDFDRTA6IDQzIDAwIEQwIDM5IDRDIDkxIDQzIDAwIDZB
IDk4IDlFIDM2IDNGIENFIEYyIDEzICBDLi45TC5DLmouLjY/Li4uCiAgICAxQ0YwOiAwMCA3OCA0
MCA3RCAwMiAwMCBGRiBCRCBENyAyNyAwMCAzOCBGRiBGRiAxMyAwMCAgLnhAfS4uLi4uJy44Li4u
LgogICAgMUQwMDogRkUgOEEgODIgMUYgMUQgNkUgRTAgRjAgOEUgMUMgM0UgQTUgODAgRUIgQzgg
ODggIC4uLi4ubi4uLi4+Li4uLi4KICAgIDFEMTA6IDNCIDE3IEMyIDFCIDEyIDNCIDEwIDAyIEMz
IEEwIDdBIDhFIDg0IEY0IDcwIDIwICA7Li4uLjsuLi4uei4uLnAgCiAgICAxRDIwOiA1MSBFQiBB
NCAzMCAzRSAwRCBGOCA0MCAwOCBGNyBFNCA2NSAzOCAzRSA0MiAwRiAgUS4uMD4uLkAuLi5lOD5C
LgogICAgMUQzMDogRkQgMjEgRTIgQzkgQzcgRjcgMDMgNEYgRUUgQzkgMTAgQzYgMzkgQzEgNzcg
MTUgIC4hLi4uLi5PLi4uLjkudy4KICAgIDFENDA6IDc2IDM3IDdCIEQ2IEYzIEI5IENBIDA0IDNF
IDJDIDMwIDM0IDdFIDRDIDA0IEVCICB2N3suLi4uLj4sMDR+TC4uCiAgICAxRDUwOiA4RCBDMSA4
NyA2NyBCMCBEQyAxMSAzMSA1OCBDRiAxRCAzNiAyQSBFMCBGRiA3RiAgLi4uZy4uLjFYLi42Ki4u
LgogICAgMUQ2MDogNEIgRjcgNUQgQzYgQkUgODYgQTEgM0IgQTcgMEYgNzEgQkUgNzQgRjAgRTMg
M0EgIEsuXS4uLi47Li5xLnQuLjoKICAgIDFENzA6IEVFIDc0IDA4IDJFIEVDIDY3IDdBIEIwIDg3
IDNBIDcwIEQyIDQ4IEEzIDQxIDFEICAudC4uLmd6Li46cC5ILkEuCiAgICAxRDgwOiAxNSA3QyAy
OCBGMCAzMSBDNSAwMyA3QyBBOSBGMCAwOSBDNSBEMyA3QSA1QyA3OCAgLnwoLjEuLnwuLi4uLnpc
eAogICAgMUQ5MDogMUEgRjAgQjggRDkgMzUgQzEgMUYgMDQgMUYgMEYgRjAgMDcgODggODAgQUYg
MzcgIC4uLi41Li4uLi4uLi4uLjcKICAgIDFEQTA6IDNFIDdBIEMwIDM5IDgyIEUwIDhGIDJBIEYw
IEM3IEUzIDYzIDgwIDhGIEI1IDVDICA+ei45Li4uKi4uLmMuLi5cCiAgICAxREIwOiBGRSAyMCA1
MCAwNyA3OCAzRSBEMiBEMyA3QSAxQiBGMCAyMSBFMSBCMCBEOCAwOSAgLiBQLng+Li56Li4hLi4u
LgogICAgMURDMDogODYgOEYgMDcgRkMgMDcgQjIgODcgMEMgNUYgMTkgM0MgNUYgMUYgREQgQjEg
NDcgIC4uLi4uLi4uXy48Xy4uLkcKICAgIDFERDA6IDEwIDc4IEI3IDBFIDFGIDFBIDQyIDNEIDc1
IDc4IDA2IEVGIDE3IDNFIDgxIDYwICAueC4uLi5CPXV4Li4uPi5gCiAgICAxREUwOiBGRiBGRiAy
NyAxMCA3MCA0NyA3MSAwMyBGMSA3MyA2QiBBMSBFQiA5NCA4RCBCMyAgLi4nLnBHcS4uc2suLi4u
LgogICAgMURGMDogMEUgM0QgMEYgNTggRUUgMDEgNDEgRDcgMDggQ0MgMEQgMjIgODggOEYgNDUg
QkUgIC49LlguLkEuLi4uIi4uRS4KICAgIDFFMDA6IDUxIDMwIDgyIDAyIDAxIDc1IEY4IDM0IDg0
IEE1IDUxIDQ4IDE4IDg0IDQ2IEU0ICBRMC4uLnUuNC4uUUguLkYuCiAgICAxRTEwOiBBMyAwNyA4
MSBBMyAyMCAxRSBCRCA2MyAxRSBDRiBEMSA0MyBGNSAzMSBDMCA5MyAgLi4uLiAuLmMuLi5DLjEu
LgogICAgMUUyMDogQzAgODUgM0EgQTQgRDEgRTMgMDIgMUUgRUYgODggNEUgQ0QgRDMgRjAgRDgg
NzEgIC4uOi4uLi4uLi5OLi4uLnEKICAgIDFFMzA6IDI3IDBGIEI4IEUzIEMwIDlGIDc2IEYwIDE3
IDgwIDU3IDIwIDEzIEIwIDUzIDM1ICAnLi4uLi52Li4uVyAuLlM1CiAgICAxRTQwOiBGOCAwNCAx
RSAwRSA0MCAwMSBFNCBGQiA4MCAwRiAzQyBDRiAwNCA2QyAwRSAyMSAgLi4uLkAuLi4uLjwuLmwu
IQogICAgMUU1MDogQzIgNDQgMzMgM0MgMjYgRjAgMzEgOEMgOUUgODYgM0MgMkUgM0UgNEEgOUYg
NjEgIC5EMzwmLjEuLi48Lj5KLmEKICAgIDFFNjA6IEQ4IDA5IENFIEQ3IDYyIDBGIEYwIEU1IEUw
IEI5IDE2IDAzIEVCIDcxIDczIDU4ICAuLi4uYi4uLi4uLi4ucXNYCiAgICAxRTcwOiBBMyAzRCBF
RSBGQSA4QSBGMCBGRiA3RiA5OCBGMyBBMSBDQiA1NyAyNyBDMyBGQSAgLj0uLi4uLi4uLi4uVycu
LgogICAgMUU4MDogRTQgMDEgOEUgQjMgMTQgRkMgQTEgRTIgQ0UgMDIgNzAgMEYgRTQgNkMgMEUg
NEYgIC4uLi4uLi4uLi5wLi5sLk8KICAgIDFFOTA6IDAzIDc4IDk5IDg3IDA4IEQ0IDQwIDJDIDcy
IDgxIDNBIEFFIDc4IDI0IDI2IEYwICAueC4uLi5ALHIuOi54JCYuCiAgICAxRUEwOiA1MSBEMSAw
NyAwOCA3RSA3RSBGMCAwMSBENyAwNyAwOCAyRSAwNCA4RSA4MiBGOCAgUS4uLn5+Li4uLi4uLi4u
LgogICAgMUVCMDogMDAgRTEgOTAgMTAgM0EgRTcgRTIgOEUgMDMgM0UgQzAgMzAgODggMDcgODMg
MDcgIC4uLi46Li4uLj4uMC4uLi4KICAgIDFFQzA6IDU2IDc2IDk0IEYxIDAxIDAyIDc4IDhDIDAz
IDdGIDgwIDgwIDdCIEZBIDAyIEQ3ICBWdi4uLi54Li4uLi57Li4uCiAgICAxRUQwOiBGOSAwMSA3
OCAwNCAzRiAzRiBBMCBGRiBGRiBFNyAwNyBGOCA4NyA1MyA3RSA3RSAgLi54Lj8/Li4uLi4uLlN+
fgogICAgMUVFMDogMDAgOUUgMDMgN0MgMTQgMDAgQ0IgOTkgOEMgQ0QgRTEgQTUgRTYgQjUgRDMg
ODcgIC4uLnwuLi4uLi4uLi4uLi4KICAgIDFFRjA6IDIxIDc2IDlDIDY3IDQ3IDdBIEFFIDZCIDA0
IDI0IEUyIDE5IDAyIDM1IDA4IEM3ICAhdi5nR3ouay4kLi4uNS4uCiAgICAxRjAwOiAzOSAzNiBF
OCAzOCBDMSA2RSBEOSAwRiA0MSA1NSBBMyAwOCBERSBCNyAwMiAxNiAgOTYuOC5uLi5BVS4uLi4u
LgogICAgMUYxMDogRTEgMTggODEgMTIgNEYgMjEgRTkgQzcgMDggOTQgNTggMzggMEEgRTIgNTEg
RkIgIC4uLi5PIS4uLi5YOC4uUS4KICAgIDFGMjA6IDIwIDYxIDFCIEM3IDA4IEQ0IDE4IDNEIEIw
IDc3IDNCIDc2IDE0IEUwIEE3IDA4ICAgYS4uLi4uPS53O3YuLi4uCiAgICAxRjMwOiBGOCBBNyAz
MCBEQyBEMSAwMyAxQyAxNyBCMSA0MyAzQiBCQiA0NyA0QyA2MyA5RSAgLi4wLi4uLi4uQzsuR0xj
LgogICAgMUY0MDogNDEgQzQgMDggQUYgQUUgNDYgRjMgMTggNzEgRTcgNEQgNUYgMEYgN0QgQTQg
RjAgIEEuLi4uRi4ucS5NXy59Li4KICAgIDFGNTA6IEExIDFEIDczIEE0IDgwIEY3IEZGIDI3IEYw
IEI5IDExIDc3IEE0IDgwIDMzIDkzICAuLnMuLi4uJy4uLncuLjMuCiAgICAxRjYwOiBGMyBDMCBE
QyA0MSA4RiAyNSBCQyBBRiA4NSBGOCA4MyAwNSBGMCAzOCAyRSBGOSAgLi4uQS4lLi4uLi4uLjgu
LgogICAgMUY3MDogNjAgMDEgMkUgNDggMUYgMkMgODAgRUIgRjkgQzAgQTcgMDMgQjAgNUUgQzgg
RjggIGAuLkguLC4uLi4uLi5eLi4KICAgIDFGODA6IEZEIDAwIEM2IDA5IDAzIEM2IEY5IDAwIDcz
IEMzIDcwIEFDIDk1IEVBIDg0IDgxICAuLi4uLi4uLnMucC4uLi4uCiAgICAxRjkwOiA4QiBGNSBB
MCBEMCA0MCBEOCBGMCA5RSA3RiA5RSAwQyBGOSA2MSA4NiA0NSA4MSAgLi4uLkAuLi4uLi4uYS5F
LgogICAgMUZBMDogRDMgRDEgQzIgMjcgMEIgODcgQTAgRDAgNDEgQ0MgMjcgMEMgMkUgRTYgODQg
NDEgIC4uLicuLi4uQS4nLi4uLkEKICAgIDFGQjA6IDQxIDBDIEU4IEE0IDEwIEZBIEZGIDlGIEMz
IDcwIEE3IDREIDFGIDFCIDU4IEI4ICBBLi4uLi4uLi5wLk0uLlguCiAgICAxRkMwOiBGQiAwNSA5
RCA4QiBFNyBDQyBGMSA3QyAwRSAzMSBBQyA2RiAyNiBFMCBCOSA1MiAgLi4uLi4uLnwuMS5vJi4u
UgogICAgMUZEMDogQjAgMzMgOEYgMkYgMDQgQkUgNEQgRjIgMDMgMjcgM0IgMTYgMTggRTUgNzgg
NUYgIC4zLi8uLk0uLic7Li4ueF8KICAgIDFGRTA6IDBCIEFEIEU2IEFFIDgwIDlBIDExIDg2IEMw
IDAzIEY2IDQ5IDBDIDRDIEZBIDZFICAuLi4uLi4uLi4uLkkuTC5uCiAgICAxRkYwOiAxNCAyMCA0
NyBFNyA2NyA2RSA4RiA5RSAxRiAwMCA3QyBCNCBFMyBBMyA3NyA2QyAgLiBHLmduLi4uLnwuLi53
bAogICAgMjAwMDogMDggMUQgNTcgRTAgMUUgRUUgN0MgODYgMDIgQkUgMDMgRjMgMEMgOUYgNTAg
QzAgIC4uVy4uLnwuLi4uLi4uUC4KICAgIDIwMTA6IDc1IDdGIEUwIEU3IEMyIEZGIEZGIEZCIDAz
IEU2IDJDIDBDIEUzIDk0IDAyIDNDICB1Li4uLi4uLi4uLC4uLi48CiAgICAyMDIwOiA0NiBFRiA1
MyAwQSBCOCAwRSAwMCAzRSBBNSAwMCBENyAzOSAzRSBDOCA4MyAwNyAgRi5TLi4uLj4uLi45Pi4u
LgogICAgMjAzMDogQzUgRjcgNUYgNEYgQzQgQzYgODcgNEYgMkYgMjggMUUgQ0IgOUIgMzcgMEYg
NzUgIC4uX08uLi5PLyguLi43LnUKICAgIDIwNDA6IDM2IDQxIDQ3IDdCIDNEIDY4IEQwIDBGIDJB
IDlFIDdEIEY4IEUzIDhCIEYwIDdDICA2QUd7PWguLioufS4uLi58CiAgICAyMDUwOiBFQSA3MSBC
MSAzOCA2NyAxMyA1NCAxMCAwQSAxRCAzQiA3RCA5QyBFMCA5MiA4RSAgLnEuOGcuVC4uLjt9Li4u
LgogICAgMjA2MDogMTMgMTQgQzQgODAgQ0UgN0IgQzQgRjMgMjEgMUUgN0QgRUEgRjMgMkQgRTEg
MzggIC4uLi4uey4uIS59Li4tLjgKICAgIDIwNzA6IDlFIDQwIDEyIENDIDc3IDEyIEEwIDk3IDEz
IDc4IEE3IDcxIERDIDQ4IDcxIEZGICAuQC4udy4uLi54LnEuSHEuCiAgICAyMDgwOiBGRiBDQiAw
OSA4QyAwMyA4RCA2NyBDMSAxMCBERSBBQyBEOSA3MSAxRCAxRSA4QyAgLi4uLi4uZy4uLi4ucS4u
LgogICAgMjA5MDogQUYgMjcgMzAgRUYgNzkgRTAgM0EgOUUgMDAgMEIgOTkgMDcgMDAgRDQgQjEg
RDEgIC4nMC55LjouLi4uLi4uLi4KICAgIDIwQTA6IDA3IDQ3IDdFIDAwIDcwIEU4IEUzIDA5IDdB
IDI2IDNFIDE2IDNEIDk1IEY4IDAyICAuR34ucC4uLnomPi49Li4uCiAgICAyMEIwOiBDMCBDRiA2
RSAzQSA5RiA4MCBFMiA5QyAwOSA5RSA3MSBCMCAyQiAwMCBGRSA4NCAgLi5uOi4uLi4uLnEuKy4u
LgogICAgMjBDMDogMDIgRkIgNDggMDYgQkUgODkgRjggNTQgNzEgMjAgRDggRDMgMDkgRjggRkUg
RkYgIC4uSC4uLi5UcSAuLi4uLi4KICAgIDIwRDA6IDI3IDU5IEUwIDAxIENCIDRGIEIyIDgwIDhG
IERCIDA4IDc2IDE2IENGIDI0IDhDICAnWS4uLk8uLi4uLnYuLiQuCiAgICAyMEUwOiA2MCBFNCBB
MyAwOSBFQSA4OCBFQyBBMCBBNyAzMCBDNCAzOCAxRiAyQiA4QyAxMSAgYC4uLi4uLi4uMC44Lisu
LgogICAgMjBGMDogQjkgRjggNTEgNkIgMzIgM0UgOUIgRjkgQjIgQ0UgMEUgM0YgMzggODIgODEg
MEUgIC4uUWsyPi4uLi4uPzguLi4KICAgIDIxMDA6IDI4IEE4IEUzIDk4IENGIDYyIDgwIEIzIEZG
IEZGIDU5IDBDIEY4IDlGIEREIDNEICAoLi4uLmIuLi4uWS4uLi49CiAgICAyMTEwOiA3QSA3RSA2
QyBFNyAyMCAxRSBCRCBDMyA5RiBDNSBBMCA4NyAzRCA4QiAwMSA2RCAgen5sLiAuLi4uLi4uPS4u
bQogICAgMjEyMDogQzEgNjcgMzEgNTAgREUgMjIgRTAgOUUgNDEgODEgRDcgREEgN0MgNDIgODEg
RkYgIC5nMVAuIi4uQS4uLnxCLi4KICAgIDIxMzA6IEZGIDNGIEExIEUwIEVFIDBDIDNFIEExIDAw
IEQ3IDIzIDAwIEVFIDBDIDBBIDhFICAuPy4uLi4+Li4uIy4uLi4uCiAgICAyMTQwOiAxMyAwMCBG
MyA3NSAwMyBBMCAyMCA4RiAwMCBGOCAyQiBCQyAwRiAyNiBCOCA3OCAgLi4udS4uIC4uLisuLiYu
eAogICAgMjE1MDogMjcgMTUgMTQgODcgRTMgOUQgNTQgMTAgNTMgODkgRkMgRDYgRTIgMDkgODQg
M0YgICcuLi4uLlQuUy4uLi4uLj8KICAgIDIxNjA6IEI4IDM4IEVGIDY3IEZDIDU0IDA2IDQzIEQ0
IEMxIDAyIDI1IEUzIDYwIDQxIDQxICAuOC5nLlQuQy4uLiUuYEFBCiAgICAyMTcwOiAwQyBFOCA4
QyBBNyAxNCBGNCBBOSA4QyA1RiA0NiAzQyBCMCAwNCAzMyA1RCA1MyAgLi4uLi4uLi5fRjwuLjNd
UwogICAgMjE4MDogQTAgNUYgNDAgNzAgMDMgODYgMEIgRjYgMjAgNjEgODQgRDcgNjQgQ0YgMDMg
NzMgIC5fQHAuLi4uIGEuLmQuLnMKICAgIDIxOTA6IDQ0IDAxIDE2IEZGIEZGIDIzIDBBIEYwIDkw
IDNDIDc0IDk0IEM4IEExIDUzIDEwICBELi4uLiMuLi48dC4uLlMuCiAgICAyMUEwOiAwRiBERCAz
NCAzRSBBMiBFMCBDNiBDQSAyRSAwNCBCMCBBMiA5RSA1MiA0MCAyMSAgLi40Pi4uLi4uLi4uLlJA
IQogICAgMjFCMDogNzIgRjggQTAgMTkgQzcgRDEgM0QgRjUgNzggMUUgRkMgNEUgRUMgNjMgMUUg
REMgIHIuLi4uLj0ueC4uTi5jLi4KICAgIDIxQzA6IDkzIDBBIEVFIEQ0IDg4IDNCIEE5IDgwIDYx
IDhFIEQ4IDUzIDE5IEYwIDNBIDgyICAuLi4uLjsuLmEuLlMuLjouCiAgICAyMUQwOiA4MiBDRiBD
MyAyMSAwNSAxNCBGRiBGRiAyMyAyOCA3MCAzRSBBNCBGMCA2MyAwNiAgLi4uIS4uLi4jKHA+Li5j
LgogICAgMjFFMDogRTYgNkEgQzAgOEYgQTAgOTggOTggQ0YgMDcgOUQgNEYgRjggRDEgQzAgODEg
NUUgIC5qLi4uLi4uLi5PLi4uLl4KICAgIDIxRjA6IDA1IDAyIDY3IDY3IDdEIERDIEU1IEMwIDI3
IDBDIDEzIDhDIDcwIDlBIEEwIDEwICAuLmdnfS4uLicuLi5wLi4uCiAgICAyMjAwOiAxNiA0RiAy
MSBFOSA4NyAwQSA5NCA1OCAzOCAwQSBFMiA0MyA4NSA4NSAxQyAyQSAgLk8hLi4uLlg4Li5DLi4u
KgogICAgMjIxMDogRDAgQzcgMjggN0MgRjAgMTMgMDUgMjggMkUgMDAgOEYgRUMgRTAgQkQgQUYg
RTMgIC4uKHwuLi4oLi4uLi4uLi4KICAgIDIyMjA6IDA3IDg5IEJCIEE4IDc4IEM4IDNFIEIwIDYz
IEU2IEU5IEEzIDA1IDNDIDAyIDlGICAuLi4ueC4+LmMuLi4uPC4uCiAgICAyMjMwOiAxRSBDMSAw
NyBFRiBDMyAxNCBFRSBGRiA3RiA5OCAwMiAyRSA2NyAzRCAxRiAyQyAgLi4uLi4uLi4uLi4uZz0u
LAogICAgMjI0MDogQzAgMDUgRUUgODMgMDUgNzAgQkQgRkQgRjggNzQgMDAgRDYgRDEgMUUgRjMg
RjkgIC4uLi4ucC4uLnQuLi4uLi4KICAgIDIyNTA6IEM2IDc5IDNGIDgwIDcxIDUzIDc5IDg4IEY0
IDNEIEMwIEY4IEVDIDdDIDgwIEJEICAueT8ucVN5Li49Li4ufC4uCiAgICAyMjYwOiAxMiBGOSBF
QyBBMCAzMyAwNiA2QSAzOCAzRSA1NyA3OCAyNCBFQyAwMiA3MCBBRSAgLi4uLjMuajg+V3gkLi5w
LgogICAgMjI3MDogM0UgNTAgRTEgMEUgN0QgM0UgNjIgRjAgMjMgQkQgNEYgQjkgRTAgM0EgNjIg
RTAgID5QLi59PmIuIy5PLi46Yi4KICAgIDIyODA6IDQzIDFFIDMxIDQwIEYxIEZGIDNGIDQwIEUw
IDQ2IDBEIDhFIEM5IDNEIDIyIDlDICBDLjFALi4/QC5GLi4uPSIuCiAgICAyMjkwOiBGMiA5OSBF
MiAwRSAxNiBDMCA2NSAxRSBFQyA2MCAwMSBCQyAyMiAxRiA4MCA0MCAgLi4uLi4uZS4uYC4uIi4u
QAogICAgMjJBMDogNjcgRTIgNjAgMDEgNzQgQ0YgMDQgQzAgNDEgQTEgNEQgOUYgMUEgOEQgNUEg
MzUgIGcuYC50Li4uQS5NLi4uWjUKICAgIDIyQjA6IDI4IDUzIEEzIDRDIDgzIDVBIDdEIDJBIDM1
IDQ2IEYwIERDIEUzIEI1IDZBIEIwICAoUy5MLlp9KjVGLi4uLmouCiAgICAyMkMwOiAwRSBGNSA2
NiAxMCA4OCBFMyBBRSA1OCAwMyAyNiAwRiAyNyBGRCBGRiA0MSAyQyAgLi5mLi4uLlguJi4nLi5B
LAogICAgMjJEMDogNDQgMDUgMDggOTMgQjEgMkUgODEgNTggQ0EgQkEgMDQgNjIgQTEgRUYgMDgg
ODEgIEQuLi4uLi5YLi4uYi4uLi4KICAgIDIyRTA6IDM4IEM4IDZCIDQwIDIwIDhFIEY3IEQ2IDEz
IDg4IDgzIDZBIDAxIDYxIDMxIEJEICA4LmtAIC4uLi4uLmouYTEuCiAgICAyMkYwOiA4MCBCMCA3
MCA2QiAxMyA4OCAyMyA5OSAxOSAwQSBGRCBENiAwOSBDNCA2MSBFRCAgLi5way4uIy4uLi4uLi5h
LgogICAgMjMwMDogODAgMzAgMDkgN0UgNDAgOTggRjQgMDUgMEIgOEMgMTggMDIgNjEgQTIgMUMg
ODEgIC4wLn5ALi4uLi4uLmEuLi4KICAgIDIzMTA6IDMwIDkxIDkyIDg2IDQ0IDNEIDgxIEIwIDE4
IDIwIDU0IDkwIEE5IEQzIEJFIDQwICAwLi4uRD0uLi4gVC4uLi5ACiAgICAyMzIwOiAyNCAwRiA0
NCA0MCAxNiBFQyAwQSA4OCBDOSAwNyAxMSA5MCA0MyBEQiAwMiA2MiAgJC5EQC4uLi4uLi4uQy4u
YgogICAgMjMzMDogMTIgN0UgMjIgMDIgNzIgODYgMjcgQjIgODAgMUMgMDggNDQgNDAgOEUgQjUg
NUUgIC5+Ii5yLicuLi4uREAuLl4KICAgIDIzNDA6IDAxIDM5IDI0IDg4IDgwIDJDIDUwIDFBIDEw
IDUzIDBCIDIyIDIwIDBCIEI3IDA2ICAuOSQuLixQLi5TLiIgLi4uCiAgICAyMzUwOiBDNCA2MiA4
MCAwOCBDOCBDOSBCRCAwMSAzMSAxOSBBRiA1NyAwMSA1OSA4QyAzOSAgLmIuLi4uLi4xLi5XLlku
OQogICAgMjM2MDogMjAgMjYgMEQgNDQgNDAgNEUgRTcgMEUgODggNDUgMDUgMTEgOTAgRTMgQ0Ig
MDMgICAmLkRATi4uLkUuLi4uLi4KICAgIDIzNzA6IDYyIDYyIEVDIDBEIDk4IEZBIDAzIDYyIDAx
IDQxIDA0IDY0IDg5IDBGIDk4IDQwICBiYi4uLi4uYi5BLmQuLi5ACiAgICAyMzgwOiA0NCAzMCA4
OCA4MCBGQyBGRiAwNyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRDAuLi4uLgoKU1NEVCBA
IDB4MDAwMDAwMDAwMDAwMDAwMAogICAgMDAwMDogNTMgNTMgNDQgNTQgNDggMjQgMDAgMDAgMDIg
MzcgNDEgNEQgNDQgMDAgMDAgMDAgIFNTRFRIJC4uLjdBTUQuLi4KICAgIDAwMTA6IDQ3IDUwIDUw
IDVGIDUwIDREIDQ1IDVGIDAxIDAwIDAwIDAwIDQ5IDRFIDU0IDRDICBHUFBfUE1FXy4uLi5JTlRM
CiAgICAwMDIwOiAzMSAwMyAyMyAyMCBBMCA0OCA2MCAwMCAxNSA1QyA0RCAzMCAzMSAzNyAwOCAw
NiAgMS4jIC5IYC4uXE0wMTcuLgogICAgMDAzMDogMTUgNUMgNEQgMzAgMzEgMzggMDggMDcgMTUg
NUMgNEQgMzEgMzEgMzUgMDMgMDAgIC5cTTAxOC4uLlxNMTE1Li4KICAgIDAwNDA6IDE1IDVDIDRE
IDMxIDMxIDM2IDBFIDAwIDE1IDVDIDREIDMxIDMxIDM3IDBFIDAwICAuXE0xMTYuLi5cTTExNy4u
CiAgICAwMDUwOiAxNSA1QyA0RCAzMSAzMSAzOCAwRSAwMCAxNSA1QyA0RCAzMSAzMSAzOSAwRSAw
MCAgLlxNMTE4Li4uXE0xMTkuLgogICAgMDA2MDogMTUgNUMgNEQgMzEgMzIgMzAgMEUgMDAgMTUg
NUMgNEQgMzAgMzMgMzcgMDYgMDAgIC5cTTEyMC4uLlxNMDM3Li4KICAgIDAwNzA6IDE1IDVDIDRE
IDMyIDMyIDM3IDA2IDAwIDE1IDVDIDREIDMzIDMyIDM5IDA2IDAwICAuXE0yMjcuLi5cTTMyOS4u
CiAgICAwMDgwOiAxNSA1QyA0RCAzMyAzMiA0MSAwNiAwMCAxNSA1QyA0RCAzMyAzMiA0MiAwNiAw
MCAgLlxNMzJBLi4uXE0zMkIuLgogICAgMDA5MDogMTUgNUMgNEQgMzMgMzIgNDMgMDYgMDAgMTUg
NUMgNEQgMzMgMzMgMzAgMDYgMDAgIC5cTTMyQy4uLlxNMzMwLi4KICAgIDAwQTA6IDE1IDVDIDRE
IDMwIDM4IDMyIDA1IDAwIDE1IDVDIDREIDMwIDM4IDMzIDA1IDAwICAuXE0wODIuLi5cTTA4My4u
CiAgICAwMEIwOiAxNSA1QyA0RCAzMCAzOCAzNCAwNSAwMCAxNSA1QyA0RCAzMCAzOCAzNSAwNSAw
MCAgLlxNMDg0Li4uXE0wODUuLgogICAgMDBDMDogMTUgNUMgNEQgMzIgMzIgMzEgMDUgMDAgMTUg
NUMgNEQgMzAgMzggMzYgMDUgMDAgIC5cTTIyMS4uLlxNMDg2Li4KICAgIDAwRDA6IDE1IDVDIDRE
IDMyIDMyIDM5IDA1IDAwIDE1IDVDIDREIDMyIDMzIDMxIDA1IDAwICAuXE0yMjkuLi5cTTIzMS4u
CiAgICAwMEUwOiAxNSA1QyA0RCAzMiAzMyAzNSAwNSAwMCAxNSA1QyA0RCAzMiAzMyAzMyAwNSAw
MCAgLlxNMjM1Li4uXE0yMzMuLgogICAgMDBGMDogMTUgNUMgNEQgMzAgMzggMzcgMDUgMDAgMTUg
NUMgNEQgMzAgMzggMzggMDUgMDAgIC5cTTA4Ny4uLlxNMDg4Li4KICAgIDAxMDA6IDE1IDVDIDRE
IDMwIDM4IDM5IDA1IDAwIDE1IDVDIDREIDMwIDM5IDMwIDA1IDAwICAuXE0wODkuLi5cTTA5MC4u
CiAgICAwMTEwOiAxNSA1QyA0RCAzMCAzOSAzMSAwNSAwMCAxNSA1QyA0RCAzMCAzOSAzMiAwNSAw
MCAgLlxNMDkxLi4uXE0wOTIuLgogICAgMDEyMDogMTUgNUMgNEQgMzAgMzkgMzMgMDUgMDAgMTUg
NUMgNEQgMzAgMzkgMzQgMDUgMDAgIC5cTTA5My4uLlxNMDk0Li4KICAgIDAxMzA6IDE1IDVDIDRE
IDMwIDM5IDM1IDA1IDAwIDE1IDVDIDREIDMwIDM5IDM2IDA1IDAwICAuXE0wOTUuLi5cTTA5Ni4u
CiAgICAwMTQwOiAxNSA1QyA0RCAzMCAzOSAzNyAwNSAwMCAxNSA1QyA0RCAzMCAzOSAzOCAwNSAw
MCAgLlxNMDk3Li4uXE0wOTguLgogICAgMDE1MDogMTUgNUMgNEQgMzAgMzkgMzkgMDUgMDAgMTUg
NUMgNEQgMzEgMzAgMzAgMDUgMDAgIC5cTTA5OS4uLlxNMTAwLi4KICAgIDAxNjA6IDE1IDVDIDRE
IDMxIDMwIDMxIDA1IDAwIDE1IDVDIDREIDMxIDMwIDMyIDA1IDAwICAuXE0xMDEuLi5cTTEwMi4u
CiAgICAwMTcwOiAxNSA1QyA0RCAzMSAzMCAzMyAwNSAwMCAxNSA1QyA0RCAzMSAzMCAzNCAwNSAw
MCAgLlxNMTAzLi4uXE0xMDQuLgogICAgMDE4MDogMTUgNUMgNEQgMzEgMzAgMzUgMDUgMDAgMTUg
NUMgNEQgMzEgMzAgMzYgMDUgMDAgIC5cTTEwNS4uLlxNMTA2Li4KICAgIDAxOTA6IDE1IDVDIDRE
IDMxIDMwIDM3IDA1IDAwIDE1IDVDIDREIDMxIDMyIDM4IDA1IDAwICAuXE0xMDcuLi5cTTEyOC4u
CiAgICAwMUEwOiAxNSA1QyA0RCAzMSAzMCAzOCAwNSAwMCAxNSA1QyA0RCAzMSAzMCAzOSAwNSAw
MCAgLlxNMTA4Li4uXE0xMDkuLgogICAgMDFCMDogMTUgNUMgNEQgMzEgMzEgMzAgMDUgMDAgMTUg
NUMgNEQgMzEgMzIgMzIgMDUgMDAgIC5cTTExMC4uLlxNMTIyLi4KICAgIDAxQzA6IDE1IDVDIDRE
IDMxIDMzIDMxIDA1IDAwIDE1IDVDIDREIDMxIDMzIDMyIDA1IDAwICAuXE0xMzEuLi5cTTEzMi4u
CiAgICAwMUQwOiAxNSA1QyA0RCAzMiAzMiAzNiAwNSAwMCAxNSA1QyA0RCAzMSAzMyAzMyAwNSAw
MCAgLlxNMjI2Li4uXE0xMzMuLgogICAgMDFFMDogMTUgNUMgNEQgMzEgMzMgMzQgMDUgMDAgMTUg
NUMgNEQgMzEgMzMgMzUgMDUgMDAgIC5cTTEzNC4uLlxNMTM1Li4KICAgIDAxRjA6IDE1IDVDIDRE
IDMxIDMzIDM2IDA1IDAwIDE1IDVDIDREIDMyIDMyIDMwIDA1IDAwICAuXE0xMzYuLi5cTTIyMC4u
CiAgICAwMjAwOiAxNSA1QyA0RCAzMCAzNCAzNiAwMSAwMCAxNSA1QyA0RCAzMCAzNCAzNyAwMSAw
MCAgLlxNMDQ2Li4uXE0wNDcuLgogICAgMDIxMDogMTUgNUMgNEQgMzAgMzQgMzkgMDggMDIgMTUg
NUMgNEQgMzIgMzUgMzEgMDUgMDAgIC5cTTA0OS4uLlxNMjUxLi4KICAgIDAyMjA6IDE1IDVDIDRE
IDMzIDMxIDMwIDA1IDAwIDE1IDVDIDREIDMzIDMxIDQzIDA1IDAwICAuXE0zMTAuLi5cTTMxQy4u
CiAgICAwMjMwOiAxNSA1QyA0RCAzMyAzMiAzMCAwNSAwMCAxNSA1QyA0RCAzMyAzMiAzMSAwNSAw
MCAgLlxNMzIwLi4uXE0zMjEuLgogICAgMDI0MDogMTUgNUMgNEQgMzMgMzIgMzIgMDUgMDAgMTUg
NUMgNEQgMzMgMzIgMzMgMDUgMDAgIC5cTTMyMi4uLlxNMzIzLi4KICAgIDAyNTA6IDE1IDVDIDRE
IDMzIDMyIDM0IDA1IDAwIDE1IDVDIDREIDMzIDMyIDM1IDA1IDAwICAuXE0zMjQuLi5cTTMyNS4u
CiAgICAwMjYwOiAxNSA1QyA0RCAzMyAzMiAzNiAwNSAwMCAxNSA1QyA0RCAzMyAzMiAzNyAwNSAw
MCAgLlxNMzI2Li4uXE0zMjcuLgogICAgMDI3MDogMTUgNUMgNEQgMzMgMzIgMzggMDUgMDAgMTUg
NUMgNEQgMzIgMzggMzAgMDUgMDAgIC5cTTMyOC4uLlxNMjgwLi4KICAgIDAyODA6IDE1IDVDIDRE
IDMyIDM5IDMwIDA1IDAwIDE1IDVDIDREIDMzIDM3IDM4IDA1IDAwICAuXE0yOTAuLi5cTTM3OC4u
CiAgICAwMjkwOiAxNSA1QyA0RCAzMyAzNyAzOSAwNSAwMCAxNSA1QyA0RCAzMyAzOCAzMCAwNSAw
MCAgLlxNMzc5Li4uXE0zODAuLgogICAgMDJBMDogMTUgNUMgNEQgMzMgMzggMzEgMDUgMDAgMTUg
NUMgNEQgMzMgMzggMzIgMDUgMDAgIC5cTTM4MS4uLlxNMzgyLi4KICAgIDAyQjA6IDE1IDVDIDRE
IDMzIDM4IDMzIDA1IDAwIDE1IDVDIDREIDMzIDM4IDM0IDA1IDAwICAuXE0zODMuLi5cTTM4NC4u
CiAgICAwMkMwOiAxNSA1QyA0RCAzMyAzOCAzNSAwNSAwMCAxNSA1QyA0RCAzMyAzOCAzNiAwNSAw
MCAgLlxNMzg1Li4uXE0zODYuLgogICAgMDJEMDogMTUgNUMgNEQgMzMgMzggMzcgMDUgMDAgMTUg
NUMgNEQgMzMgMzggMzggMDUgMDAgIC5cTTM4Ny4uLlxNMzg4Li4KICAgIDAyRTA6IDE1IDVDIDRE
IDMzIDM4IDM5IDA1IDAwIDE1IDVDIDREIDMzIDM5IDMwIDA1IDAwICAuXE0zODkuLi5cTTM5MC4u
CiAgICAwMkYwOiAxNSA1QyA0RCAzMyAzOSAzMSAwNSAwMCAxNSA1QyA0RCAzMyAzOSAzMiAwNSAw
MCAgLlxNMzkxLi4uXE0zOTIuLgogICAgMDMwMDogMTUgNUMgNEQgMzMgMzMgMzEgMDUgMDAgMTUg
NUMgNEQgMzYgMzIgMzAgMDUgMDAgIC5cTTMzMS4uLlxNNjIwLi4KICAgIDAzMTA6IDE1IDVDIDRE
IDM0IDMwIDM0IDAzIDAwIDE1IDVDIDREIDM0IDMwIDM4IDA5IDAwICAuXE00MDQuLi5cTTQwOC4u
CiAgICAwMzIwOiAxNSA1QyA0RCAzNCAzMSAzNCAwNSAwMCAxNSA1QyA0RCAzNCAzNCAzNCAwNSAw
MCAgLlxNNDE0Li4uXE00NDQuLgogICAgMDMzMDogMTUgNUMgNEQgMzQgMzUgMzMgMDUgMDAgMTUg
NUMgNEQgMzQgMzUgMzQgMDUgMDAgIC5cTTQ1My4uLlxNNDU0Li4KICAgIDAzNDA6IDE1IDVDIDRE
IDM0IDM1IDM1IDA1IDAwIDE1IDVDIDREIDM0IDM1IDM2IDA1IDAwICAuXE00NTUuLi5cTTQ1Ni4u
CiAgICAwMzUwOiAxNSA1QyA0RCAzNCAzNSAzNyAwNSAwMCAxNSA1QyA0RCAzNCAzNiAzMCAwOCAw
NyAgLlxNNDU3Li4uXE00NjAuLgogICAgMDM2MDogMTUgNUMgNEQgMzQgMzQgMzkgMDUgMDAgMTUg
NUMgNEQgMzQgNDMgMzAgMDUgMDAgIC5cTTQ0OS4uLlxNNEMwLi4KICAgIDAzNzA6IDE1IDVDIDRE
IDMyIDMzIDQxIDA1IDAwIDE1IDVDIDREIDM0IDQ2IDMwIDA1IDAwICAuXE0yM0EuLi5cTTRGMC4u
CiAgICAwMzgwOiAxNSA1QyA0RCAzNiAzMSAzMCAwNSAwMCAxNSA1QyA0RCAzMiAzOSA0MSAwNSAw
MCAgLlxNNjEwLi4uXE0yOUEuLgogICAgMDM5MDogMTUgNUMgNEQgMzYgMzMgMzEgMDUgMDAgMTUg
NUMgNEQgMzYgMzUgMzIgMDUgMDAgIC5cTTYzMS4uLlxNNjUyLi4KICAgIDAzQTA6IDE1IDVDIDRE
IDMwIDM1IDMwIDA2IDAwIDE1IDVDIDREIDMwIDM1IDMxIDA2IDAwICAuXE0wNTAuLi5cTTA1MS4u
CiAgICAwM0IwOiAxNSA1QyA0RCAzMCAzNSAzMiAwNiAwMCAxNSA1QyA0RCAzMCAzNSAzMyAwNiAw
MCAgLlxNMDUyLi4uXE0wNTMuLgogICAgMDNDMDogMTUgNUMgNEQgMzAgMzUgMzQgMDYgMDAgMTUg
NUMgNEQgMzAgMzUgMzUgMDYgMDAgIC5cTTA1NC4uLlxNMDU1Li4KICAgIDAzRDA6IDE1IDVDIDRE
IDMwIDM1IDM2IDA2IDAwIDE1IDVDIDREIDMwIDM1IDM3IDA2IDAwICAuXE0wNTYuLi5cTTA1Ny4u
CiAgICAwM0UwOiAxNSA1QyA0RCAzMCAzNSAzOCAwNiAwMCAxNSA1QyA0RCAzMCAzNSAzOSAwNiAw
MCAgLlxNMDU4Li4uXE0wNTkuLgogICAgMDNGMDogMTUgNUMgNEQgMzAgMzYgMzIgMDYgMDAgMTUg
NUMgNEQgMzAgMzYgMzggMDYgMDAgIC5cTTA2Mi4uLlxNMDY4Li4KICAgIDA0MDA6IDE1IDVDIDRE
IDMwIDM2IDM5IDA2IDAwIDE1IDVDIDREIDMwIDM3IDMwIDA2IDAwICAuXE0wNjkuLi5cTTA3MC4u
CiAgICAwNDEwOiAxNSA1QyA0RCAzMCAzNyAzMSAwNiAwMCAxNSA1QyA0RCAzMCAzNyAzMiAwNiAw
MCAgLlxNMDcxLi4uXE0wNzIuLgogICAgMDQyMDogMTUgNUMgNEQgMzAgMzcgMzQgMDYgMDAgMTUg
NUMgNEQgMzAgMzcgMzUgMDYgMDAgIC5cTTA3NC4uLlxNMDc1Li4KICAgIDA0MzA6IDE1IDVDIDRE
IDMwIDM3IDM2IDA2IDAwIDE1IDVDIDREIDMwIDM3IDM3IDA2IDAwICAuXE0wNzYuLi5cTTA3Ny4u
CiAgICAwNDQwOiAxNSA1QyA0RCAzMCAzNyAzOCAwNiAwMCAxNSA1QyA0RCAzMCAzNyAzOSAwNiAw
MCAgLlxNMDc4Li4uXE0wNzkuLgogICAgMDQ1MDogMTUgNUMgNEQgMzAgMzggMzAgMDYgMDAgMTUg
NUMgNEQgMzAgMzggMzEgMDYgMDAgIC5cTTA4MC4uLlxNMDgxLi4KICAgIDA0NjA6IDE1IDVDIDRE
IDMxIDMyIDM3IDA2IDAwIDE1IDVDIDVGIDQyIDQyIDRFIDAxIDAwICAuXE0xMjcuLi5cX0JCTi4u
CiAgICAwNDcwOiAxNSA1QyAyRSA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMCAwNiAwMCAxNSA1QyAy
RiAgLlwuX1NCX1BDSTAuLi5cLwogICAgMDQ4MDogMDMgNUYgNTMgNDIgNUYgNTAgNDMgNDkgMzAg
NDcgNTAgNTAgMzAgMDYgMDAgMTUgIC5fU0JfUENJMEdQUDAuLi4KICAgIDA0OTA6IDVDIDJGIDAz
IDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMwIDQ3IDUwIDUwIDMxIDA2ICBcLy5fU0JfUENJMEdQUDEu
CiAgICAwNEEwOiAwMCAxNSA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMCA0NyA1MCA1
MCAgLi5cLy5fU0JfUENJMEdQUAogICAgMDRCMDogMzIgMDYgMDAgMTUgNUMgMkYgMDMgNUYgNTMg
NDIgNUYgNTAgNDMgNDkgMzAgNDcgIDIuLi5cLy5fU0JfUENJMEcKICAgIDA0QzA6IDUwIDUwIDMz
IDA2IDAwIDE1IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5ICBQUDMuLi5cLy5fU0JfUENJ
CiAgICAwNEQwOiAzMCA0NyA1MCA1MCAzNCAwNiAwMCAxNSA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1
MCAgMEdQUDQuLi5cLy5fU0JfUAogICAgMDRFMDogNDMgNDkgMzAgNDcgNTAgNTAgMzUgMDYgMDAg
MTUgNUMgMkYgMDMgNUYgNTMgNDIgIENJMEdQUDUuLi5cLy5fU0IKICAgIDA0RjA6IDVGIDUwIDQz
IDQ5IDMwIDQ3IDUwIDUwIDM2IDA2IDAwIDE1IDVDIDJGIDAzIDVGICBfUENJMEdQUDYuLi5cLy5f
CiAgICAwNTAwOiA1MyA0MiA1RiA1MCA0MyA0OSAzMCA0NyA1MCA1MCAzNyAwNiAwMCAxNSA1QyAy
RiAgU0JfUENJMEdQUDcuLi5cLwogICAgMDUxMDogMDMgNUYgNTMgNDIgNUYgNTAgNDMgNDkgMzAg
NDcgNTAgNTAgMzggMDYgMDAgMTUgIC5fU0JfUENJMEdQUDguLi4KICAgIDA1MjA6IDVDIDJGIDAz
IDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMwIDQ3IDUwIDUwIDM5IDA2ICBcLy5fU0JfUENJMEdQUDku
CiAgICAwNTMwOiAwMCAxNSA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMCA0NyA1MCA1
MCAgLi5cLy5fU0JfUENJMEdQUAogICAgMDU0MDogNDEgMDYgMDAgMTUgNUMgMkYgMDMgNUYgNTMg
NDIgNUYgNTAgNDMgNDkgMzAgNDcgIEEuLi5cLy5fU0JfUENJMEcKICAgIDA1NTA6IDUwIDUwIDQy
IDA2IDAwIDE1IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5ICBQUEIuLi5cLy5fU0JfUENJ
CiAgICAwNTYwOiAzMCA0NyA1MCA1MCA0MyAwNiAwMCAxNSA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1
MCAgMEdQUEMuLi5cLy5fU0JfUAogICAgMDU3MDogNDMgNDkgMzAgNDcgNTAgNTAgNDQgMDYgMDAg
MTUgNUMgMkYgMDMgNUYgNTMgNDIgIENJMEdQUEQuLi5cLy5fU0IKICAgIDA1ODA6IDVGIDUwIDQz
IDQ5IDMwIDQ3IDUwIDUwIDQ1IDA2IDAwIDE1IDVDIDJGIDAzIDVGICBfUENJMEdQUEUuLi5cLy5f
CiAgICAwNTkwOiA1MyA0MiA1RiA1MCA0MyA0OSAzMCA0NyA1MCA1MCA0NiAwNiAwMCAxNSA1QyAy
RiAgU0JfUENJMEdQUEYuLi5cLwogICAgMDVBMDogMDMgNUYgNTMgNDIgNUYgNTAgNDMgNDkgMzAg
NDcgNTAgNTAgNDcgMDYgMDAgMTUgIC5fU0JfUENJMEdQUEcuLi4KICAgIDA1QjA6IDVDIDJGIDAz
IDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMwIDQ3IDUwIDUwIDQ4IDA2ICBcLy5fU0JfUENJMEdQUEgu
CiAgICAwNUMwOiAwMCAxNSA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMCA0NyA1MCAz
MSAgLi5cLy5fU0JfUENJMEdQMQogICAgMDVEMDogMzUgMDYgMDAgMTUgNUMgMkYgMDMgNUYgNTMg
NDIgNUYgNTAgNDMgNDkgMzAgNDcgIDUuLi5cLy5fU0JfUENJMEcKICAgIDA1RTA6IDUwIDMyIDM1
IDA2IDAwIDE1IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5ICBQMjUuLi5cLy5fU0JfUENJ
CiAgICAwNUYwOiAzMCA0NyA1MCAzMyAzNSAwNiAwMCAxNSA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1
MCAgMEdQMzUuLi5cLy5fU0JfUAogICAgMDYwMDogNDMgNDkgMzAgNDcgNTAgMzQgMzUgMDYgMDAg
MTUgNUMgMkYgMDMgNUYgNTMgNDIgIENJMEdQNDUuLi5cLy5fU0IKICAgIDA2MTA6IDVGIDUwIDQz
IDQ5IDMwIDQ3IDUwIDMxIDM3IDA2IDAwIDE1IDVDIDJGIDAzIDVGICBfUENJMEdQMTcuLi5cLy5f
CiAgICAwNjIwOiA1MyA0MiA1RiA1MCA0MyA0OSAzMCA0NyA1MCAzMiAzNyAwNiAwMCAxMCA4QSBF
MSAgU0JfUENJMEdQMjcuLi4uLgogICAgMDYzMDogMDEgNUMgMkUgNUYgNTMgNDIgNUYgNTAgNDMg
NDkgMzAgMDggNDUgNTQgNTAgMzAgIC5cLl9TQl9QQ0kwLkVUUDAKICAgIDA2NDA6IDBBIDU1IDA4
IDQ1IDU0IDUwIDMxIDBBIDU1IDA4IDQ1IDU0IDUwIDMyIDBBIDU1ICAuVS5FVFAxLlUuRVRQMi5V
CiAgICAwNjUwOiAwOCA0NSA1NCA1MCAzMyAwQSA1NSAwOCA0NSA1NCA1MCAzNCAwQSA1NSAwOCA0
NSAgLkVUUDMuVS5FVFA0LlUuRQogICAgMDY2MDogNTQgNTAgMzUgMEEgNTUgMDggNDUgNTQgNTAg
MzYgMEEgNTUgMDggNDUgNTQgNTAgIFRQNS5VLkVUUDYuVS5FVFAKICAgIDA2NzA6IDM3IDBBIDU1
IDA4IDQ1IDU0IDUwIDM4IDBBIDU1IDA4IDQ1IDU0IDUwIDM5IDBBICA3LlUuRVRQOC5VLkVUUDku
CiAgICAwNjgwOiA1NSAwOCA0NSA1NCA1MCA0MSAwQSA1NSAwOCA0NSA1NCA1MCA0MiAwQSA1NSAw
OCAgVS5FVFBBLlUuRVRQQi5VLgogICAgMDY5MDogNDUgNTQgNTAgNDMgMEEgNTUgMDggNDUgNTQg
NTAgNDQgMEEgNTUgMDggNDUgNTQgIEVUUEMuVS5FVFBELlUuRVQKICAgIDA2QTA6IDUwIDQ1IDBB
IDU1IDA4IDQ1IDU0IDUwIDQ2IDBBIDU1IDA4IDQ1IDU0IDUwIDQ3ICBQRS5VLkVUUEYuVS5FVFBH
CiAgICAwNkIwOiAwQSA1NSAwOCA0NSA1NCA1MCA0OCAwQSA1NSAwOCA0NSA1NCAzMSAzNSAwQSA1
NSAgLlUuRVRQSC5VLkVUMTUuVQogICAgMDZDMDogMDggNDUgNTQgMzIgMzUgMEEgNTUgMDggNDUg
NTQgMzMgMzUgMEEgNTUgMDggNDUgIC5FVDI1LlUuRVQzNS5VLkUKICAgIDA2RDA6IDU0IDM0IDM1
IDBBIDU1IDA4IDQ1IDU0IDMxIDM3IDBBIDU1IDA4IDQ1IDU0IDMyICBUNDUuVS5FVDE3LlUuRVQy
CiAgICAwNkUwOiAzNyAwQSA1NSAxNCA4NCBENiAwMSA1MCA1MCA0RCA0NSAwMCA0RCAzNCAzNiAz
MCAgNy5VLi4uLlBQTUUuTTQ2MAogICAgMDZGMDogMEQgMjAgMjAgNEYgNDUgNEQgMkQgNDEgNTMg
NEMgMkQgNUMgNUYgNTMgNDIgMkUgIC4gIE9FTS1BU0wtXF9TQi4KICAgIDA3MDA6IDUwIDQzIDQ5
IDMwIDJFIDUwIDUwIDREIDQ1IDBBIDAwIDAwIDAwIDAwIDAwIDAwICBQQ0kwLlBQTUUuLi4uLi4u
CiAgICAwNzEwOiAwMCBBMCA0RiAxOCA5MiA5MyA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0
OSAgLi5PLi4uXC8uX1NCX1BDSQogICAgMDcyMDogMzAgNDUgNTQgNTAgMzAgMEEgRkYgNzAgN0Eg
NEQgMzAgMzEgMzcgNUYgNDIgNDIgIDBFVFAwLi5wek0wMTdfQkIKICAgIDA3MzA6IDRFIDAxIDAx
IDBBIDc4IDAwIDBBIDE4IDBBIDEwIDAwIDVDIDJGIDAzIDVGIDUzICBOLi4ueC4uLi4uLlwvLl9T
CiAgICAwNzQwOiA0MiA1RiA1MCA0MyA0OSAzMCA0NSA1NCA1MCAzMCBBMCA0NiAxNSA5MSA5MyA1
QyAgQl9QQ0kwRVRQMC5GLi4uXAogICAgMDc1MDogMkYgMDMgNUYgNTMgNDIgNUYgNTAgNDMgNDkg
MzAgNDUgNTQgNTAgMzAgMDEgOTMgIC8uX1NCX1BDSTBFVFAwLi4KICAgIDA3NjA6IDVDIDJGIDAz
IDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMwIDQ1IDU0IDUwIDMwIDBBICBcLy5fU0JfUENJMEVUUDAu
CiAgICAwNzcwOiAwMyBBMCA0RiAxMiA1QiAxMiA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0
OSAgLi5PLlsuXC8uX1NCX1BDSQogICAgMDc4MDogMzAgNDcgNTAgNTAgMzAgMDAgQTAgNDkgMDYg
OTIgOTMgNEQgMzYgMzIgMzAgMDAgIDBHUFAwLi5JLi4uTTYyMC4KICAgIDA3OTA6IEEwIDRGIDA1
IDkzIDREIDMwIDM0IDM5IDREIDM2IDMyIDMwIDBBIDEwIDAxIEEwICAuTy4uTTA0OU02MjAuLi4u
CiAgICAwN0EwOiA0MCAwNSA5MyA3QiA0RCAzMCAzNCAzOSA0RCAzNiAzMiAzMCAwQSA1MiAwQSAw
MiAgQC4ue00wNDlNNjIwLlIuLgogICAgMDdCMDogMDAgMDAgNEQgMzQgMzYgMzAgMEQgMjAgMjAg
MjAgMjAgNEUgNkYgNzQgNjkgNjYgIC4uTTQ2MC4gICAgTm90aWYKICAgIDA3QzA6IDc5IDIwIDI4
IDVDIDVGIDUzIDQyIDJFIDUwIDQzIDQ5IDMwIDJFIDQ3IDUwIDUwICB5IChcX1NCLlBDSTAuR1BQ
CiAgICAwN0QwOiAzMCAyQyAyMCAzMCA3OCAzMCAyOSAwQSAwMCAwMCAwMCAwMCAwMCAwMCAwMCA4
NiAgMCwgMHgwKS4uLi4uLi4uLgogICAgMDdFMDogNUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAgNDMg
NDkgMzAgNDcgNTAgNTAgMzAgMDAgIFwvLl9TQl9QQ0kwR1BQMC4KICAgIDA3RjA6IDREIDM0IDM2
IDMwIDBEIDIwIDIwIDIwIDIwIDRFIDZGIDc0IDY5IDY2IDc5IDIwICBNNDYwLiAgICBOb3RpZnkg
CiAgICAwODAwOiAyOCA1QyA1RiA1MyA0MiAyRSA1MCA0MyA0OSAzMCAyRSA0NyA1MCA1MCAzMCAy
QyAgKFxfU0IuUENJMC5HUFAwLAogICAgMDgxMDogMjAgMzAgNzggMzIgMjkgMEEgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgODYgNUMgMkYgICAweDIpLi4uLi4uLi4uXC8KICAgIDA4MjA6IDAzIDVGIDUz
IDQyIDVGIDUwIDQzIDQ5IDMwIDQ3IDUwIDUwIDMwIDBBIDAyIDVCICAuX1NCX1BDSTBHUFAwLi5b
CiAgICAwODMwOiAyMiAwQSA2NCA3MCA0RCAzMCAzMSAzNyA1RiA0MiA0MiA0RSAwMSAwMSAwQSA3
OCAgIi5kcE0wMTdfQkJOLi4ueAogICAgMDg0MDogMDAgMEEgMjAgNjAgQTAgNEMgMDUgOTIgOTMg
N0IgNjAgMEMgMDAgMDAgMDMgMDAgIC4uIGAuTC4uLntgLi4uLi4KICAgIDA4NTA6IDAwIDAwIDRE
IDMwIDMxIDM4IDVGIDQyIDQyIDRFIDAxIDAxIDBBIDc4IDAwIDBBICAuLk0wMThfQkJOLi4ueC4u
CiAgICAwODYwOiAyMCA2MCA3MCA0RCAzMCAzMSAzNyA1RiA0MiA0MiA0RSAwMSAwMSAwQSA3OCAw
MCAgIGBwTTAxN19CQk4uLi54LgogICAgMDg3MDogMEEgMjAgNjAgQTAgMkQgOTIgOTMgN0IgNjAg
MEMgMDAgMDAgMDMgMDAgMDAgMDAgIC4gYC4tLi57YC4uLi4uLi4KICAgIDA4ODA6IDREIDMwIDMx
IDM4IDVGIDQyIDQyIDRFIDAxIDAxIDBBIDc4IDAwIDBBIDIwIDYwICBNMDE4X0JCTi4uLnguLiBg
CiAgICAwODkwOiA3MCA0RCAzMCAzMSAzNyA1RiA0MiA0MiA0RSAwMSAwMSAwQSA3OCAwMCAwQSAy
MCAgcE0wMTdfQkJOLi4ueC4uIAogICAgMDhBMDogNjAgQTAgNEIgMTIgOTIgOTMgNUMgMkYgMDMg
NUYgNTMgNDIgNUYgNTAgNDMgNDkgIGAuSy4uLlwvLl9TQl9QQ0kKICAgIDA4QjA6IDMwIDQ1IDU0
IDUwIDMxIDBBIEZGIDcwIDdBIDREIDMwIDMxIDM3IDVGIDQyIDQyICAwRVRQMS4ucHpNMDE3X0JC
CiAgICAwOEMwOiA0RSAwMSAwQSAwMiAwQSA3OCAwMCAwQSAxOCAwQSAxMCAwMCA1QyAyRiAwMyA1
RiAgTi4uLi54Li4uLi4uXC8uXwogICAgMDhEMDogNTMgNDIgNUYgNTAgNDMgNDkgMzAgNDUgNTQg
NTAgMzEgQTAgNDEgMEYgOTEgOTMgIFNCX1BDSTBFVFAxLkEuLi4KICAgIDA4RTA6IDVDIDJGIDAz
IDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMwIDQ1IDU0IDUwIDMxIDAxICBcLy5fU0JfUENJMEVUUDEu
CiAgICAwOEYwOiA5MyA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMCA0NSA1NCA1MCAz
MSAgLlwvLl9TQl9QQ0kwRVRQMQogICAgMDkwMDogMEEgMDMgQTAgNEEgMEMgNUIgMTIgNUMgMkYg
MDMgNUYgNTMgNDIgNUYgNTAgNDMgIC4uLkouWy5cLy5fU0JfUEMKICAgIDA5MTA6IDQ5IDMwIDQ3
IDUwIDUwIDMxIDAwIDREIDM0IDM2IDMwIDBEIDIwIDIwIDIwIDIwICBJMEdQUDEuTTQ2MC4gICAg
CiAgICAwOTIwOiA0RSA2RiA3NCA2OSA2NiA3OSAyMCAyOCA1QyA1RiA1MyA0MiAyRSA1MCA0MyA0
OSAgTm90aWZ5IChcX1NCLlBDSQogICAgMDkzMDogMzAgMkUgNDcgNTAgNTAgMzEgMkMgMjAgMzAg
NzggMzIgMjkgMEEgMDAgMDAgMDAgIDAuR1BQMSwgMHgyKS4uLi4KICAgIDA5NDA6IDAwIDAwIDAw
IDAwIDg2IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMwICAuLi4uLlwvLl9TQl9QQ0kw
CiAgICAwOTUwOiA0NyA1MCA1MCAzMSAwQSAwMiA1QiAyMiAwQSA2NCA3MCA0RCAzMCAzMSAzNyA1
RiAgR1BQMS4uWyIuZHBNMDE3XwogICAgMDk2MDogNDIgNDIgNEUgMDEgMEEgMDIgMEEgNzggMDAg
MEEgMjAgNjAgQTAgNDAgMDYgOTIgIEJCTi4uLi54Li4gYC5ALi4KICAgIDA5NzA6IDkzIDdCIDYw
IDBDIDAwIDAwIDAzIDAwIDAwIDAwIDREIDMwIDMxIDM4IDVGIDQyICAue2AuLi4uLi4uTTAxOF9C
CiAgICAwOTgwOiA0MiA0RSAwMSAwQSAwMiAwQSA3OCAwMCAwQSAyMCA2MCA3MCA0RCAzMCAzMSAz
NyAgQk4uLi4ueC4uIGBwTTAxNwogICAgMDk5MDogNUYgNDIgNDIgNEUgMDEgMEEgMDIgMEEgNzgg
MDAgMEEgMjAgNjAgQTAgMkYgOTIgIF9CQk4uLi4ueC4uIGAuLy4KICAgIDA5QTA6IDkzIDdCIDYw
IDBDIDAwIDAwIDAzIDAwIDAwIDAwIDREIDMwIDMxIDM4IDVGIDQyICAue2AuLi4uLi4uTTAxOF9C
CiAgICAwOUIwOiA0MiA0RSAwMSAwQSAwMiAwQSA3OCAwMCAwQSAyMCA2MCA3MCA0RCAzMCAzMSAz
NyAgQk4uLi4ueC4uIGBwTTAxNwogICAgMDlDMDogNUYgNDIgNDIgNEUgMDEgMEEgMDIgMEEgNzgg
MDAgMEEgMjAgNjAgQTAgNEIgMTIgIF9CQk4uLi4ueC4uIGAuSy4KICAgIDA5RDA6IDkyIDkzIDVD
IDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMwIDQ1IDU0IDUwICAuLlwvLl9TQl9QQ0kwRVRQ
CiAgICAwOUUwOiAzMiAwQSBGRiA3MCA3QSA0RCAzMCAzMSAzNyA1RiA0MiA0MiA0RSAwMSAwQSAw
MyAgMi4ucHpNMDE3X0JCTi4uLgogICAgMDlGMDogMEEgNzggMDAgMEEgMTggMEEgMTAgMDAgNUMg
MkYgMDMgNUYgNTMgNDIgNUYgNTAgIC54Li4uLi4uXC8uX1NCX1AKICAgIDBBMDA6IDQzIDQ5IDMw
IDQ1IDU0IDUwIDMyIEEwIDQxIDBGIDkxIDkzIDVDIDJGIDAzIDVGICBDSTBFVFAyLkEuLi5cLy5f
CiAgICAwQTEwOiA1MyA0MiA1RiA1MCA0MyA0OSAzMCA0NSA1NCA1MCAzMiAwMSA5MyA1QyAyRiAw
MyAgU0JfUENJMEVUUDIuLlwvLgogICAgMEEyMDogNUYgNTMgNDIgNUYgNTAgNDMgNDkgMzAgNDUg
NTQgNTAgMzIgMEEgMDMgQTAgNEEgIF9TQl9QQ0kwRVRQMi4uLkoKICAgIDBBMzA6IDBDIDVCIDEy
IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMwIDQ3IDUwICAuWy5cLy5fU0JfUENJMEdQ
CiAgICAwQTQwOiA1MCAzMiAwMCA0RCAzNCAzNiAzMCAwRCAyMCAyMCAyMCAyMCA0RSA2RiA3NCA2
OSAgUDIuTTQ2MC4gICAgTm90aQogICAgMEE1MDogNjYgNzkgMjAgMjggNUMgNUYgNTMgNDIgMkUg
NTAgNDMgNDkgMzAgMkUgNDcgNTAgIGZ5IChcX1NCLlBDSTAuR1AKICAgIDBBNjA6IDUwIDMyIDJD
IDIwIDMwIDc4IDMyIDI5IDBBIDAwIDAwIDAwIDAwIDAwIDAwIDAwICBQMiwgMHgyKS4uLi4uLi4u
CiAgICAwQTcwOiA4NiA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMCA0NyA1MCA1MCAz
MiAgLlwvLl9TQl9QQ0kwR1BQMgogICAgMEE4MDogMEEgMDIgNUIgMjIgMEEgNjQgNzAgNEQgMzAg
MzEgMzcgNUYgNDIgNDIgNEUgMDEgIC4uWyIuZHBNMDE3X0JCTi4KICAgIDBBOTA6IDBBIDAzIDBB
IDc4IDAwIDBBIDIwIDYwIEEwIDQwIDA2IDkyIDkzIDdCIDYwIDBDICAuLi54Li4gYC5ALi4ue2Au
CiAgICAwQUEwOiAwMCAwMCAwMyAwMCAwMCAwMCA0RCAzMCAzMSAzOCA1RiA0MiA0MiA0RSAwMSAw
QSAgLi4uLi4uTTAxOF9CQk4uLgogICAgMEFCMDogMDMgMEEgNzggMDAgMEEgMjAgNjAgNzAgNEQg
MzAgMzEgMzcgNUYgNDIgNDIgNEUgIC4ueC4uIGBwTTAxN19CQk4KICAgIDBBQzA6IDAxIDBBIDAz
IDBBIDc4IDAwIDBBIDIwIDYwIEEwIDJGIDkyIDkzIDdCIDYwIDBDICAuLi4ueC4uIGAuLy4ue2Au
CiAgICAwQUQwOiAwMCAwMCAwMyAwMCAwMCAwMCA0RCAzMCAzMSAzOCA1RiA0MiA0MiA0RSAwMSAw
QSAgLi4uLi4uTTAxOF9CQk4uLgogICAgMEFFMDogMDMgMEEgNzggMDAgMEEgMjAgNjAgNzAgNEQg
MzAgMzEgMzcgNUYgNDIgNDIgNEUgIC4ueC4uIGBwTTAxN19CQk4KICAgIDBBRjA6IDAxIDBBIDAz
IDBBIDc4IDAwIDBBIDIwIDYwIEEwIDRCIDEyIDkyIDkzIDVDIDJGICAuLi4ueC4uIGAuSy4uLlwv
CiAgICAwQjAwOiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMCA0NSA1NCA1MCAzMyAwQSBGRiA3
MCAgLl9TQl9QQ0kwRVRQMy4ucAogICAgMEIxMDogN0EgNEQgMzAgMzEgMzcgNUYgNDIgNDIgNEUg
MDEgMEEgMDQgMEEgNzggMDAgMEEgIHpNMDE3X0JCTi4uLi54Li4KICAgIDBCMjA6IDE4IDBBIDEw
IDAwIDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMwIDQ1ICAuLi4uXC8uX1NCX1BDSTBF
CiAgICAwQjMwOiA1NCA1MCAzMyBBMCA0MSAwRiA5MSA5MyA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1
MCAgVFAzLkEuLi5cLy5fU0JfUAogICAgMEI0MDogNDMgNDkgMzAgNDUgNTQgNTAgMzMgMDEgOTMg
NUMgMkYgMDMgNUYgNTMgNDIgNUYgIENJMEVUUDMuLlwvLl9TQl8KICAgIDBCNTA6IDUwIDQzIDQ5
IDMwIDQ1IDU0IDUwIDMzIDBBIDAzIEEwIDRBIDBDIDVCIDEyIDVDICBQQ0kwRVRQMy4uLkouWy5c
CiAgICAwQjYwOiAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMCA0NyA1MCA1MCAzMyAwMCA0
RCAgLy5fU0JfUENJMEdQUDMuTQogICAgMEI3MDogMzQgMzYgMzAgMEQgMjAgMjAgMjAgMjAgNEUg
NkYgNzQgNjkgNjYgNzkgMjAgMjggIDQ2MC4gICAgTm90aWZ5ICgKICAgIDBCODA6IDVDIDVGIDUz
IDQyIDJFIDUwIDQzIDQ5IDMwIDJFIDQ3IDUwIDUwIDMzIDJDIDIwICBcX1NCLlBDSTAuR1BQMywg
CiAgICAwQjkwOiAzMCA3OCAzMiAyOSAwQSAwMCAwMCAwMCAwMCAwMCAwMCAwMCA4NiA1QyAyRiAw
MyAgMHgyKS4uLi4uLi4uLlwvLgogICAgMEJBMDogNUYgNTMgNDIgNUYgNTAgNDMgNDkgMzAgNDcg
NTAgNTAgMzMgMEEgMDIgNUIgMjIgIF9TQl9QQ0kwR1BQMy4uWyIKICAgIDBCQjA6IDBBIDY0IDcw
IDREIDMwIDMxIDM3IDVGIDQyIDQyIDRFIDAxIDBBIDA0IDBBIDc4ICAuZHBNMDE3X0JCTi4uLi54
CiAgICAwQkMwOiAwMCAwQSAyMCA2MCBBMCA0MCAwNiA5MiA5MyA3QiA2MCAwQyAwMCAwMCAwMyAw
MCAgLi4gYC5ALi4ue2AuLi4uLgogICAgMEJEMDogMDAgMDAgNEQgMzAgMzEgMzggNUYgNDIgNDIg
NEUgMDEgMEEgMDQgMEEgNzggMDAgIC4uTTAxOF9CQk4uLi4ueC4KICAgIDBCRTA6IDBBIDIwIDYw
IDcwIDREIDMwIDMxIDM3IDVGIDQyIDQyIDRFIDAxIDBBIDA0IDBBICAuIGBwTTAxN19CQk4uLi4u
CiAgICAwQkYwOiA3OCAwMCAwQSAyMCA2MCBBMCAyRiA5MiA5MyA3QiA2MCAwQyAwMCAwMCAwMyAw
MCAgeC4uIGAuLy4ue2AuLi4uLgogICAgMEMwMDogMDAgMDAgNEQgMzAgMzEgMzggNUYgNDIgNDIg
NEUgMDEgMEEgMDQgMEEgNzggMDAgIC4uTTAxOF9CQk4uLi4ueC4KICAgIDBDMTA6IDBBIDIwIDYw
IDcwIDREIDMwIDMxIDM3IDVGIDQyIDQyIDRFIDAxIDBBIDA0IDBBICAuIGBwTTAxN19CQk4uLi4u
CiAgICAwQzIwOiA3OCAwMCAwQSAyMCA2MCBBMCA0QiAxMiA5MiA5MyA1QyAyRiAwMyA1RiA1MyA0
MiAgeC4uIGAuSy4uLlwvLl9TQgogICAgMEMzMDogNUYgNTAgNDMgNDkgMzAgNDUgNTQgNTAgMzQg
MEEgRkYgNzAgN0EgNEQgMzAgMzEgIF9QQ0kwRVRQNC4ucHpNMDEKICAgIDBDNDA6IDM3IDVGIDQy
IDQyIDRFIDAxIDBBIDA1IDBBIDc4IDAwIDBBIDE4IDBBIDEwIDAwICA3X0JCTi4uLi54Li4uLi4u
CiAgICAwQzUwOiA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMCA0NSA1NCA1MCAzNCBB
MCAgXC8uX1NCX1BDSTBFVFA0LgogICAgMEM2MDogNDEgMEYgOTEgOTMgNUMgMkYgMDMgNUYgNTMg
NDIgNUYgNTAgNDMgNDkgMzAgNDUgIEEuLi5cLy5fU0JfUENJMEUKICAgIDBDNzA6IDU0IDUwIDM0
IDAxIDkzIDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMwICBUUDQuLlwvLl9TQl9QQ0kw
CiAgICAwQzgwOiA0NSA1NCA1MCAzNCAwQSAwMyBBMCA0QSAwQyA1QiAxMiA1QyAyRiAwMyA1RiA1
MyAgRVRQNC4uLkouWy5cLy5fUwogICAgMEM5MDogNDIgNUYgNTAgNDMgNDkgMzAgNDcgNTAgNTAg
MzQgMDAgNEQgMzQgMzYgMzAgMEQgIEJfUENJMEdQUDQuTTQ2MC4KICAgIDBDQTA6IDIwIDIwIDIw
IDIwIDRFIDZGIDc0IDY5IDY2IDc5IDIwIDI4IDVDIDVGIDUzIDQyICAgICAgTm90aWZ5IChcX1NC
CiAgICAwQ0IwOiAyRSA1MCA0MyA0OSAzMCAyRSA0NyA1MCA1MCAzNCAyQyAyMCAzMCA3OCAzMiAy
OSAgLlBDSTAuR1BQNCwgMHgyKQogICAgMENDMDogMEEgMDAgMDAgMDAgMDAgMDAgMDAgMDAgODYg
NUMgMkYgMDMgNUYgNTMgNDIgNUYgIC4uLi4uLi4uLlwvLl9TQl8KICAgIDBDRDA6IDUwIDQzIDQ5
IDMwIDQ3IDUwIDUwIDM0IDBBIDAyIDVCIDIyIDBBIDY0IDcwIDREICBQQ0kwR1BQNC4uWyIuZHBN
CiAgICAwQ0UwOiAzMCAzMSAzNyA1RiA0MiA0MiA0RSAwMSAwQSAwNSAwQSA3OCAwMCAwQSAyMCA2
MCAgMDE3X0JCTi4uLi54Li4gYAogICAgMENGMDogQTAgNDAgMDYgOTIgOTMgN0IgNjAgMEMgMDAg
MDAgMDMgMDAgMDAgMDAgNEQgMzAgIC5ALi4ue2AuLi4uLi4uTTAKICAgIDBEMDA6IDMxIDM4IDVG
IDQyIDQyIDRFIDAxIDBBIDA1IDBBIDc4IDAwIDBBIDIwIDYwIDcwICAxOF9CQk4uLi4ueC4uIGBw
CiAgICAwRDEwOiA0RCAzMCAzMSAzNyA1RiA0MiA0MiA0RSAwMSAwQSAwNSAwQSA3OCAwMCAwQSAy
MCAgTTAxN19CQk4uLi4ueC4uIAogICAgMEQyMDogNjAgQTAgMkYgOTIgOTMgN0IgNjAgMEMgMDAg
MDAgMDMgMDAgMDAgMDAgNEQgMzAgIGAuLy4ue2AuLi4uLi4uTTAKICAgIDBEMzA6IDMxIDM4IDVG
IDQyIDQyIDRFIDAxIDBBIDA1IDBBIDc4IDAwIDBBIDIwIDYwIDcwICAxOF9CQk4uLi4ueC4uIGBw
CiAgICAwRDQwOiA0RCAzMCAzMSAzNyA1RiA0MiA0MiA0RSAwMSAwQSAwNSAwQSA3OCAwMCAwQSAy
MCAgTTAxN19CQk4uLi4ueC4uIAogICAgMEQ1MDogNjAgQTAgNEIgMTIgOTIgOTMgNUMgMkYgMDMg
NUYgNTMgNDIgNUYgNTAgNDMgNDkgIGAuSy4uLlwvLl9TQl9QQ0kKICAgIDBENjA6IDMwIDQ1IDU0
IDUwIDM1IDBBIEZGIDcwIDdBIDREIDMwIDMxIDM3IDVGIDQyIDQyICAwRVRQNS4ucHpNMDE3X0JC
CiAgICAwRDcwOiA0RSAwMSAwQSAwNiAwQSA3OCAwMCAwQSAxOCAwQSAxMCAwMCA1QyAyRiAwMyA1
RiAgTi4uLi54Li4uLi4uXC8uXwogICAgMEQ4MDogNTMgNDIgNUYgNTAgNDMgNDkgMzAgNDUgNTQg
NTAgMzUgQTAgNDEgMEYgOTEgOTMgIFNCX1BDSTBFVFA1LkEuLi4KICAgIDBEOTA6IDVDIDJGIDAz
IDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMwIDQ1IDU0IDUwIDM1IDAxICBcLy5fU0JfUENJMEVUUDUu
CiAgICAwREEwOiA5MyA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMCA0NSA1NCA1MCAz
NSAgLlwvLl9TQl9QQ0kwRVRQNQogICAgMERCMDogMEEgMDMgQTAgNEEgMEMgNUIgMTIgNUMgMkYg
MDMgNUYgNTMgNDIgNUYgNTAgNDMgIC4uLkouWy5cLy5fU0JfUEMKICAgIDBEQzA6IDQ5IDMwIDQ3
IDUwIDUwIDM1IDAwIDREIDM0IDM2IDMwIDBEIDIwIDIwIDIwIDIwICBJMEdQUDUuTTQ2MC4gICAg
CiAgICAwREQwOiA0RSA2RiA3NCA2OSA2NiA3OSAyMCAyOCA1QyA1RiA1MyA0MiAyRSA1MCA0MyA0
OSAgTm90aWZ5IChcX1NCLlBDSQogICAgMERFMDogMzAgMkUgNDcgNTAgNTAgMzUgMkMgMjAgMzAg
NzggMzIgMjkgMEEgMDAgMDAgMDAgIDAuR1BQNSwgMHgyKS4uLi4KICAgIDBERjA6IDAwIDAwIDAw
IDAwIDg2IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMwICAuLi4uLlwvLl9TQl9QQ0kw
CiAgICAwRTAwOiA0NyA1MCA1MCAzNSAwQSAwMiA1QiAyMiAwQSA2NCA3MCA0RCAzMCAzMSAzNyA1
RiAgR1BQNS4uWyIuZHBNMDE3XwogICAgMEUxMDogNDIgNDIgNEUgMDEgMEEgMDYgMEEgNzggMDAg
MEEgMjAgNjAgQTAgNDAgMDYgOTIgIEJCTi4uLi54Li4gYC5ALi4KICAgIDBFMjA6IDkzIDdCIDYw
IDBDIDAwIDAwIDAzIDAwIDAwIDAwIDREIDMwIDMxIDM4IDVGIDQyICAue2AuLi4uLi4uTTAxOF9C
CiAgICAwRTMwOiA0MiA0RSAwMSAwQSAwNiAwQSA3OCAwMCAwQSAyMCA2MCA3MCA0RCAzMCAzMSAz
NyAgQk4uLi4ueC4uIGBwTTAxNwogICAgMEU0MDogNUYgNDIgNDIgNEUgMDEgMEEgMDYgMEEgNzgg
MDAgMEEgMjAgNjAgQTAgMkYgOTIgIF9CQk4uLi4ueC4uIGAuLy4KICAgIDBFNTA6IDkzIDdCIDYw
IDBDIDAwIDAwIDAzIDAwIDAwIDAwIDREIDMwIDMxIDM4IDVGIDQyICAue2AuLi4uLi4uTTAxOF9C
CiAgICAwRTYwOiA0MiA0RSAwMSAwQSAwNiAwQSA3OCAwMCAwQSAyMCA2MCA3MCA0RCAzMCAzMSAz
NyAgQk4uLi4ueC4uIGBwTTAxNwogICAgMEU3MDogNUYgNDIgNDIgNEUgMDEgMEEgMDYgMEEgNzgg
MDAgMEEgMjAgNjAgQTAgNEIgMTIgIF9CQk4uLi4ueC4uIGAuSy4KICAgIDBFODA6IDkyIDkzIDVD
IDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMwIDQ1IDU0IDUwICAuLlwvLl9TQl9QQ0kwRVRQ
CiAgICAwRTkwOiAzNiAwQSBGRiA3MCA3QSA0RCAzMCAzMSAzNyA1RiA0MiA0MiA0RSAwMSAwQSAw
NyAgNi4ucHpNMDE3X0JCTi4uLgogICAgMEVBMDogMEEgNzggMDAgMEEgMTggMEEgMTAgMDAgNUMg
MkYgMDMgNUYgNTMgNDIgNUYgNTAgIC54Li4uLi4uXC8uX1NCX1AKICAgIDBFQjA6IDQzIDQ5IDMw
IDQ1IDU0IDUwIDM2IEEwIDQxIDBGIDkxIDkzIDVDIDJGIDAzIDVGICBDSTBFVFA2LkEuLi5cLy5f
CiAgICAwRUMwOiA1MyA0MiA1RiA1MCA0MyA0OSAzMCA0NSA1NCA1MCAzNiAwMSA5MyA1QyAyRiAw
MyAgU0JfUENJMEVUUDYuLlwvLgogICAgMEVEMDogNUYgNTMgNDIgNUYgNTAgNDMgNDkgMzAgNDUg
NTQgNTAgMzYgMEEgMDMgQTAgNEEgIF9TQl9QQ0kwRVRQNi4uLkoKICAgIDBFRTA6IDBDIDVCIDEy
IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMwIDQ3IDUwICAuWy5cLy5fU0JfUENJMEdQ
CiAgICAwRUYwOiA1MCAzNiAwMCA0RCAzNCAzNiAzMCAwRCAyMCAyMCAyMCAyMCA0RSA2RiA3NCA2
OSAgUDYuTTQ2MC4gICAgTm90aQogICAgMEYwMDogNjYgNzkgMjAgMjggNUMgNUYgNTMgNDIgMkUg
NTAgNDMgNDkgMzAgMkUgNDcgNTAgIGZ5IChcX1NCLlBDSTAuR1AKICAgIDBGMTA6IDUwIDM2IDJD
IDIwIDMwIDc4IDMyIDI5IDBBIDAwIDAwIDAwIDAwIDAwIDAwIDAwICBQNiwgMHgyKS4uLi4uLi4u
CiAgICAwRjIwOiA4NiA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMCA0NyA1MCA1MCAz
NiAgLlwvLl9TQl9QQ0kwR1BQNgogICAgMEYzMDogMEEgMDIgNUIgMjIgMEEgNjQgNzAgNEQgMzAg
MzEgMzcgNUYgNDIgNDIgNEUgMDEgIC4uWyIuZHBNMDE3X0JCTi4KICAgIDBGNDA6IDBBIDA3IDBB
IDc4IDAwIDBBIDIwIDYwIEEwIDQwIDA2IDkyIDkzIDdCIDYwIDBDICAuLi54Li4gYC5ALi4ue2Au
CiAgICAwRjUwOiAwMCAwMCAwMyAwMCAwMCAwMCA0RCAzMCAzMSAzOCA1RiA0MiA0MiA0RSAwMSAw
QSAgLi4uLi4uTTAxOF9CQk4uLgogICAgMEY2MDogMDcgMEEgNzggMDAgMEEgMjAgNjAgNzAgNEQg
MzAgMzEgMzcgNUYgNDIgNDIgNEUgIC4ueC4uIGBwTTAxN19CQk4KICAgIDBGNzA6IDAxIDBBIDA3
IDBBIDc4IDAwIDBBIDIwIDYwIEEwIDJGIDkyIDkzIDdCIDYwIDBDICAuLi4ueC4uIGAuLy4ue2Au
CiAgICAwRjgwOiAwMCAwMCAwMyAwMCAwMCAwMCA0RCAzMCAzMSAzOCA1RiA0MiA0MiA0RSAwMSAw
QSAgLi4uLi4uTTAxOF9CQk4uLgogICAgMEY5MDogMDcgMEEgNzggMDAgMEEgMjAgNjAgNzAgNEQg
MzAgMzEgMzcgNUYgNDIgNDIgNEUgIC4ueC4uIGBwTTAxN19CQk4KICAgIDBGQTA6IDAxIDBBIDA3
IDBBIDc4IDAwIDBBIDIwIDYwIEEwIDQ2IDE5IDkyIDkzIDVDIDJGICAuLi4ueC4uIGAuRi4uLlwv
CiAgICAwRkIwOiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMCA0NSA1NCA1MCAzNyAwQSBGRiA3
MCAgLl9TQl9QQ0kwRVRQNy4ucAogICAgMEZDMDogN0EgNEQgMzAgMzEgMzcgNUYgNDIgNDIgNEUg
MEEgMDIgMDEgMEEgNzggMDAgMEEgIHpNMDE3X0JCTi4uLi54Li4KICAgIDBGRDA6IDE4IDBBIDEw
IDAwIDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMwIDQ1ICAuLi4uXC8uX1NCX1BDSTBF
CiAgICAwRkUwOiA1NCA1MCAzNyBBMCA0QyAxNSA5MSA5MyA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1
MCAgVFA3LkwuLi5cLy5fU0JfUAogICAgMEZGMDogNDMgNDkgMzAgNDUgNTQgNTAgMzcgMDEgOTMg
NUMgMkYgMDMgNUYgNTMgNDIgNUYgIENJMEVUUDcuLlwvLl9TQl8KICAgIDEwMDA6IDUwIDQzIDQ5
IDMwIDQ1IDU0IDUwIDM3IDBBIDAzIEEwIDQ1IDEzIDVCIDEyIDVDICBQQ0kwRVRQNy4uLkUuWy5c
CiAgICAxMDEwOiAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMCA0NyA1MCA1MCAzNyAwMCBB
MCAgLy5fU0JfUENJMEdQUDcuLgogICAgMTAyMDogNEEgMDYgOTIgOTMgNEQgMzYgMzIgMzAgMDAg
QTAgNDAgMDYgOTMgNEQgMzAgMzQgIEouLi5NNjIwLi5ALi5NMDQKICAgIDEwMzA6IDM5IDREIDM2
IDMyIDMwIDBBIDEwIDBBIDAyIEEwIDQwIDA1IDkzIDdCIDREIDMwICA5TTYyMC4uLi4uQC4ue00w
CiAgICAxMDQwOiAzNCAzOSA0RCAzNiAzMiAzMCAwQSA1MiAwQSAwMiAwMCAwMCA0RCAzNCAzNiAz
MCAgNDlNNjIwLlIuLi4uTTQ2MAogICAgMTA1MDogMEQgMjAgMjAgMjAgMjAgNEUgNkYgNzQgNjkg
NjYgNzkgMjAgMjggNUMgNUYgNTMgIC4gICAgTm90aWZ5IChcX1MKICAgIDEwNjA6IDQyIDJFIDUw
IDQzIDQ5IDMwIDJFIDQ3IDUwIDUwIDM3IDJDIDIwIDMwIDc4IDMwICBCLlBDSTAuR1BQNywgMHgw
CiAgICAxMDcwOiAyOSAwQSAwMCAwMCAwMCAwMCAwMCAwMCAwMCA4NiA1QyAyRiAwMyA1RiA1MyA0
MiAgKS4uLi4uLi4uLlwvLl9TQgogICAgMTA4MDogNUYgNTAgNDMgNDkgMzAgNDcgNTAgNTAgMzcg
MDAgNEQgMzQgMzYgMzAgMEQgMjAgIF9QQ0kwR1BQNy5NNDYwLiAKICAgIDEwOTA6IDIwIDIwIDIw
IDRFIDZGIDc0IDY5IDY2IDc5IDIwIDI4IDVDIDVGIDUzIDQyIDJFICAgICBOb3RpZnkgKFxfU0Iu
CiAgICAxMEEwOiA1MCA0MyA0OSAzMCAyRSA0NyA1MCA1MCAzNyAyQyAyMCAzMCA3OCAzMiAyOSAw
QSAgUENJMC5HUFA3LCAweDIpLgogICAgMTBCMDogMDAgMDAgMDAgMDAgMDAgMDAgMDAgODYgNUMg
MkYgMDMgNUYgNTMgNDIgNUYgNTAgIC4uLi4uLi4uXC8uX1NCX1AKICAgIDEwQzA6IDQzIDQ5IDMw
IDQ3IDUwIDUwIDM3IDBBIDAyIDVCIDIyIDBBIDY0IDcwIDREIDMwICBDSTBHUFA3Li5bIi5kcE0w
CiAgICAxMEQwOiAzMSAzNyA1RiA0MiA0MiA0RSAwQSAwMiAwMSAwQSA3OCAwMCAwQSAyMCA2MCBB
MCAgMTdfQkJOLi4uLnguLiBgLgogICAgMTBFMDogNDAgMDYgOTIgOTMgN0IgNjAgMEMgMDAgMDAg
MDMgMDAgMDAgMDAgNEQgMzAgMzEgIEAuLi57YC4uLi4uLi5NMDEKICAgIDEwRjA6IDM4IDVGIDQy
IDQyIDRFIDBBIDAyIDAxIDBBIDc4IDAwIDBBIDIwIDYwIDcwIDREICA4X0JCTi4uLi54Li4gYHBN
CiAgICAxMTAwOiAzMCAzMSAzNyA1RiA0MiA0MiA0RSAwQSAwMiAwMSAwQSA3OCAwMCAwQSAyMCA2
MCAgMDE3X0JCTi4uLi54Li4gYAogICAgMTExMDogQTAgMkYgOTIgOTMgN0IgNjAgMEMgMDAgMDAg
MDMgMDAgMDAgMDAgNEQgMzAgMzEgIC4vLi57YC4uLi4uLi5NMDEKICAgIDExMjA6IDM4IDVGIDQy
IDQyIDRFIDBBIDAyIDAxIDBBIDc4IDAwIDBBIDIwIDYwIDcwIDREICA4X0JCTi4uLi54Li4gYHBN
CiAgICAxMTMwOiAzMCAzMSAzNyA1RiA0MiA0MiA0RSAwQSAwMiAwMSAwQSA3OCAwMCAwQSAyMCA2
MCAgMDE3X0JCTi4uLi54Li4gYAogICAgMTE0MDogQTAgNDEgMTMgOTIgOTMgNUMgMkYgMDMgNUYg
NTMgNDIgNUYgNTAgNDMgNDkgMzAgIC5BLi4uXC8uX1NCX1BDSTAKICAgIDExNTA6IDQ1IDU0IDUw
IDM4IDBBIEZGIDcwIDdBIDREIDMwIDMxIDM3IDVGIDQyIDQyIDRFICBFVFA4Li5wek0wMTdfQkJO
CiAgICAxMTYwOiAwQSAwMiAwQSAwMiAwQSA3OCAwMCAwQSAxOCAwQSAxMCAwMCA1QyAyRiAwMyA1
RiAgLi4uLi54Li4uLi4uXC8uXwogICAgMTE3MDogNTMgNDIgNUYgNTAgNDMgNDkgMzAgNDUgNTQg
NTAgMzggQTAgNDYgMEYgOTEgOTMgIFNCX1BDSTBFVFA4LkYuLi4KICAgIDExODA6IDVDIDJGIDAz
IDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMwIDQ1IDU0IDUwIDM4IDAxICBcLy5fU0JfUENJMEVUUDgu
CiAgICAxMTkwOiA5MyA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMCA0NSA1NCA1MCAz
OCAgLlwvLl9TQl9QQ0kwRVRQOAogICAgMTFBMDogMEEgMDMgQTAgNEYgMEMgNUIgMTIgNUMgMkYg
MDMgNUYgNTMgNDIgNUYgNTAgNDMgIC4uLk8uWy5cLy5fU0JfUEMKICAgIDExQjA6IDQ5IDMwIDQ3
IDUwIDUwIDM4IDAwIDREIDM0IDM2IDMwIDBEIDIwIDIwIDIwIDIwICBJMEdQUDguTTQ2MC4gICAg
CiAgICAxMUMwOiA0RSA2RiA3NCA2OSA2NiA3OSAyMCAyOCA1QyA1RiA1MyA0MiAyRSA1MCA0MyA0
OSAgTm90aWZ5IChcX1NCLlBDSQogICAgMTFEMDogMzAgMkUgNDcgNTAgNTAgMzggMkMgMjAgMzAg
NzggMzIgMjkgMEEgMDAgMDAgMDAgIDAuR1BQOCwgMHgyKS4uLi4KICAgIDExRTA6IDAwIDAwIDAw
IDAwIDg2IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMwICAuLi4uLlwvLl9TQl9QQ0kw
CiAgICAxMUYwOiA0NyA1MCA1MCAzOCAwQSAwMiA1QiAyMiAwQSA2NCA3MCA0RCAzMCAzMSAzNyA1
RiAgR1BQOC4uWyIuZHBNMDE3XwogICAgMTIwMDogNDIgNDIgNEUgMEEgMDIgMEEgMDIgMEEgNzgg
MDAgMEEgMjAgNjAgQTAgNDQgMDYgIEJCTi4uLi4ueC4uIGAuRC4KICAgIDEyMTA6IDkyIDkzIDdC
IDYwIDBDIDAwIDAwIDAzIDAwIDAwIDAwIDREIDMwIDMxIDM4IDVGICAuLntgLi4uLi4uLk0wMThf
CiAgICAxMjIwOiA0MiA0MiA0RSAwQSAwMiAwQSAwMiAwQSA3OCAwMCAwQSAyMCA2MCA3MCA0RCAz
MCAgQkJOLi4uLi54Li4gYHBNMAogICAgMTIzMDogMzEgMzcgNUYgNDIgNDIgNEUgMEEgMDIgMEEg
MDIgMEEgNzggMDAgMEEgMjAgNjAgIDE3X0JCTi4uLi4ueC4uIGAKICAgIDEyNDA6IEEwIDMxIDky
IDkzIDdCIDYwIDBDIDAwIDAwIDAzIDAwIDAwIDAwIDREIDMwIDMxICAuMS4ue2AuLi4uLi4uTTAx
CiAgICAxMjUwOiAzOCA1RiA0MiA0MiA0RSAwQSAwMiAwQSAwMiAwQSA3OCAwMCAwQSAyMCA2MCA3
MCAgOF9CQk4uLi4uLnguLiBgcAogICAgMTI2MDogNEQgMzAgMzEgMzcgNUYgNDIgNDIgNEUgMEEg
MDIgMEEgMDIgMEEgNzggMDAgMEEgIE0wMTdfQkJOLi4uLi54Li4KICAgIDEyNzA6IDIwIDYwIEEw
IDRCIDEyIDkyIDkzIDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzICAgYC5LLi4uXC8uX1NCX1BD
CiAgICAxMjgwOiA0OSAzMCA0NSA1NCA1MCAzOSAwQSBGRiA3MCA3QSA0RCAzMCAzMSAzNyA1RiA0
MiAgSTBFVFA5Li5wek0wMTdfQgogICAgMTI5MDogNDIgNEUgMEEgMDMgMDEgMEEgNzggMDAgMEEg
MTggMEEgMTAgMDAgNUMgMkYgMDMgIEJOLi4uLnguLi4uLi5cLy4KICAgIDEyQTA6IDVGIDUzIDQy
IDVGIDUwIDQzIDQ5IDMwIDQ1IDU0IDUwIDM5IEEwIDQxIDBGIDkxICBfU0JfUENJMEVUUDkuQS4u
CiAgICAxMkIwOiA5MyA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMCA0NSA1NCA1MCAz
OSAgLlwvLl9TQl9QQ0kwRVRQOQogICAgMTJDMDogMDEgOTMgNUMgMkYgMDMgNUYgNTMgNDIgNUYg
NTAgNDMgNDkgMzAgNDUgNTQgNTAgIC4uXC8uX1NCX1BDSTBFVFAKICAgIDEyRDA6IDM5IDBBIDAz
IEEwIDRBIDBDIDVCIDEyIDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwICA5Li4uSi5bLlwvLl9TQl9Q
CiAgICAxMkUwOiA0MyA0OSAzMCA0NyA1MCA1MCAzOSAwMCA0RCAzNCAzNiAzMCAwRCAyMCAyMCAy
MCAgQ0kwR1BQOS5NNDYwLiAgIAogICAgMTJGMDogMjAgNEUgNkYgNzQgNjkgNjYgNzkgMjAgMjgg
NUMgNUYgNTMgNDIgMkUgNTAgNDMgICBOb3RpZnkgKFxfU0IuUEMKICAgIDEzMDA6IDQ5IDMwIDJF
IDQ3IDUwIDUwIDM5IDJDIDIwIDMwIDc4IDMyIDI5IDBBIDAwIDAwICBJMC5HUFA5LCAweDIpLi4u
CiAgICAxMzEwOiAwMCAwMCAwMCAwMCAwMCA4NiA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0
OSAgLi4uLi4uXC8uX1NCX1BDSQogICAgMTMyMDogMzAgNDcgNTAgNTAgMzkgMEEgMDIgNUIgMjIg
MEEgNjQgNzAgNEQgMzAgMzEgMzcgIDBHUFA5Li5bIi5kcE0wMTcKICAgIDEzMzA6IDVGIDQyIDQy
IDRFIDBBIDAzIDAxIDBBIDc4IDAwIDBBIDIwIDYwIEEwIDQwIDA2ICBfQkJOLi4uLnguLiBgLkAu
CiAgICAxMzQwOiA5MiA5MyA3QiA2MCAwQyAwMCAwMCAwMyAwMCAwMCAwMCA0RCAzMCAzMSAzOCA1
RiAgLi57YC4uLi4uLi5NMDE4XwogICAgMTM1MDogNDIgNDIgNEUgMEEgMDMgMDEgMEEgNzggMDAg
MEEgMjAgNjAgNzAgNEQgMzAgMzEgIEJCTi4uLi54Li4gYHBNMDEKICAgIDEzNjA6IDM3IDVGIDQy
IDQyIDRFIDBBIDAzIDAxIDBBIDc4IDAwIDBBIDIwIDYwIEEwIDJGICA3X0JCTi4uLi54Li4gYC4v
CiAgICAxMzcwOiA5MiA5MyA3QiA2MCAwQyAwMCAwMCAwMyAwMCAwMCAwMCA0RCAzMCAzMSAzOCA1
RiAgLi57YC4uLi4uLi5NMDE4XwogICAgMTM4MDogNDIgNDIgNEUgMEEgMDMgMDEgMEEgNzggMDAg
MEEgMjAgNjAgNzAgNEQgMzAgMzEgIEJCTi4uLi54Li4gYHBNMDEKICAgIDEzOTA6IDM3IDVGIDQy
IDQyIDRFIDBBIDAzIDAxIDBBIDc4IDAwIDBBIDIwIDYwIEEwIDQxICA3X0JCTi4uLi54Li4gYC5B
CiAgICAxM0EwOiAxMyA5MiA5MyA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMCA0NSA1
NCAgLi4uXC8uX1NCX1BDSTBFVAogICAgMTNCMDogNTAgNDEgMEEgRkYgNzAgN0EgNEQgMzAgMzEg
MzcgNUYgNDIgNDIgNEUgMEEgMDMgIFBBLi5wek0wMTdfQkJOLi4KICAgIDEzQzA6IDBBIDAyIDBB
IDc4IDAwIDBBIDE4IDBBIDEwIDAwIDVDIDJGIDAzIDVGIDUzIDQyICAuLi54Li4uLi4uXC8uX1NC
CiAgICAxM0QwOiA1RiA1MCA0MyA0OSAzMCA0NSA1NCA1MCA0MSBBMCA0NiAwRiA5MSA5MyA1QyAy
RiAgX1BDSTBFVFBBLkYuLi5cLwogICAgMTNFMDogMDMgNUYgNTMgNDIgNUYgNTAgNDMgNDkgMzAg
NDUgNTQgNTAgNDEgMDEgOTMgNUMgIC5fU0JfUENJMEVUUEEuLlwKICAgIDEzRjA6IDJGIDAzIDVG
IDUzIDQyIDVGIDUwIDQzIDQ5IDMwIDQ1IDU0IDUwIDQxIDBBIDAzICAvLl9TQl9QQ0kwRVRQQS4u
CiAgICAxNDAwOiBBMCA0RiAwQyA1QiAxMiA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAz
MCAgLk8uWy5cLy5fU0JfUENJMAogICAgMTQxMDogNDcgNTAgNTAgNDEgMDAgNEQgMzQgMzYgMzAg
MEQgMjAgMjAgMjAgMjAgNEUgNkYgIEdQUEEuTTQ2MC4gICAgTm8KICAgIDE0MjA6IDc0IDY5IDY2
IDc5IDIwIDI4IDVDIDVGIDUzIDQyIDJFIDUwIDQzIDQ5IDMwIDJFICB0aWZ5IChcX1NCLlBDSTAu
CiAgICAxNDMwOiA0NyA1MCA1MCA0MSAyQyAyMCAzMCA3OCAzMiAyOSAwQSAwMCAwMCAwMCAwMCAw
MCAgR1BQQSwgMHgyKS4uLi4uLgogICAgMTQ0MDogMDAgMDAgODYgNUMgMkYgMDMgNUYgNTMgNDIg
NUYgNTAgNDMgNDkgMzAgNDcgNTAgIC4uLlwvLl9TQl9QQ0kwR1AKICAgIDE0NTA6IDUwIDQxIDBB
IDAyIDVCIDIyIDBBIDY0IDcwIDREIDMwIDMxIDM3IDVGIDQyIDQyICBQQS4uWyIuZHBNMDE3X0JC
CiAgICAxNDYwOiA0RSAwQSAwMyAwQSAwMiAwQSA3OCAwMCAwQSAyMCA2MCBBMCA0NCAwNiA5MiA5
MyAgTi4uLi4ueC4uIGAuRC4uLgogICAgMTQ3MDogN0IgNjAgMEMgMDAgMDAgMDMgMDAgMDAgMDAg
NEQgMzAgMzEgMzggNUYgNDIgNDIgIHtgLi4uLi4uLk0wMThfQkIKICAgIDE0ODA6IDRFIDBBIDAz
IDBBIDAyIDBBIDc4IDAwIDBBIDIwIDYwIDcwIDREIDMwIDMxIDM3ICBOLi4uLi54Li4gYHBNMDE3
CiAgICAxNDkwOiA1RiA0MiA0MiA0RSAwQSAwMyAwQSAwMiAwQSA3OCAwMCAwQSAyMCA2MCBBMCAz
MSAgX0JCTi4uLi4ueC4uIGAuMQogICAgMTRBMDogOTIgOTMgN0IgNjAgMEMgMDAgMDAgMDMgMDAg
MDAgMDAgNEQgMzAgMzEgMzggNUYgIC4ue2AuLi4uLi4uTTAxOF8KICAgIDE0QjA6IDQyIDQyIDRF
IDBBIDAzIDBBIDAyIDBBIDc4IDAwIDBBIDIwIDYwIDcwIDREIDMwICBCQk4uLi4uLnguLiBgcE0w
CiAgICAxNEMwOiAzMSAzNyA1RiA0MiA0MiA0RSAwQSAwMyAwQSAwMiAwQSA3OCAwMCAwQSAyMCA2
MCAgMTdfQkJOLi4uLi54Li4gYAogICAgMTREMDogQTAgNDEgMTMgOTIgOTMgNUMgMkYgMDMgNUYg
NTMgNDIgNUYgNTAgNDMgNDkgMzAgIC5BLi4uXC8uX1NCX1BDSTAKICAgIDE0RTA6IDQ1IDU0IDUw
IDQyIDBBIEZGIDcwIDdBIDREIDMwIDMxIDM3IDVGIDQyIDQyIDRFICBFVFBCLi5wek0wMTdfQkJO
CiAgICAxNEYwOiAwQSAwMyAwQSAwMyAwQSA3OCAwMCAwQSAxOCAwQSAxMCAwMCA1QyAyRiAwMyA1
RiAgLi4uLi54Li4uLi4uXC8uXwogICAgMTUwMDogNTMgNDIgNUYgNTAgNDMgNDkgMzAgNDUgNTQg
NTAgNDIgQTAgNDYgMEYgOTEgOTMgIFNCX1BDSTBFVFBCLkYuLi4KICAgIDE1MTA6IDVDIDJGIDAz
IDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMwIDQ1IDU0IDUwIDQyIDAxICBcLy5fU0JfUENJMEVUUEIu
CiAgICAxNTIwOiA5MyA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMCA0NSA1NCA1MCA0
MiAgLlwvLl9TQl9QQ0kwRVRQQgogICAgMTUzMDogMEEgMDMgQTAgNEYgMEMgNUIgMTIgNUMgMkYg
MDMgNUYgNTMgNDIgNUYgNTAgNDMgIC4uLk8uWy5cLy5fU0JfUEMKICAgIDE1NDA6IDQ5IDMwIDQ3
IDUwIDUwIDQyIDAwIDREIDM0IDM2IDMwIDBEIDIwIDIwIDIwIDIwICBJMEdQUEIuTTQ2MC4gICAg
CiAgICAxNTUwOiA0RSA2RiA3NCA2OSA2NiA3OSAyMCAyOCA1QyA1RiA1MyA0MiAyRSA1MCA0MyA0
OSAgTm90aWZ5IChcX1NCLlBDSQogICAgMTU2MDogMzAgMkUgNDcgNTAgNTAgNDIgMkMgMjAgMzAg
NzggMzIgMjkgMEEgMDAgMDAgMDAgIDAuR1BQQiwgMHgyKS4uLi4KICAgIDE1NzA6IDAwIDAwIDAw
IDAwIDg2IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMwICAuLi4uLlwvLl9TQl9QQ0kw
CiAgICAxNTgwOiA0NyA1MCA1MCA0MiAwQSAwMiA1QiAyMiAwQSA2NCA3MCA0RCAzMCAzMSAzNyA1
RiAgR1BQQi4uWyIuZHBNMDE3XwogICAgMTU5MDogNDIgNDIgNEUgMEEgMDMgMEEgMDMgMEEgNzgg
MDAgMEEgMjAgNjAgQTAgNDQgMDYgIEJCTi4uLi4ueC4uIGAuRC4KICAgIDE1QTA6IDkyIDkzIDdC
IDYwIDBDIDAwIDAwIDAzIDAwIDAwIDAwIDREIDMwIDMxIDM4IDVGICAuLntgLi4uLi4uLk0wMThf
CiAgICAxNUIwOiA0MiA0MiA0RSAwQSAwMyAwQSAwMyAwQSA3OCAwMCAwQSAyMCA2MCA3MCA0RCAz
MCAgQkJOLi4uLi54Li4gYHBNMAogICAgMTVDMDogMzEgMzcgNUYgNDIgNDIgNEUgMEEgMDMgMEEg
MDMgMEEgNzggMDAgMEEgMjAgNjAgIDE3X0JCTi4uLi4ueC4uIGAKICAgIDE1RDA6IEEwIDMxIDky
IDkzIDdCIDYwIDBDIDAwIDAwIDAzIDAwIDAwIDAwIDREIDMwIDMxICAuMS4ue2AuLi4uLi4uTTAx
CiAgICAxNUUwOiAzOCA1RiA0MiA0MiA0RSAwQSAwMyAwQSAwMyAwQSA3OCAwMCAwQSAyMCA2MCA3
MCAgOF9CQk4uLi4uLnguLiBgcAogICAgMTVGMDogNEQgMzAgMzEgMzcgNUYgNDIgNDIgNEUgMEEg
MDMgMEEgMDMgMEEgNzggMDAgMEEgIE0wMTdfQkJOLi4uLi54Li4KICAgIDE2MDA6IDIwIDYwIEEw
IDQxIDEzIDkyIDkzIDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzICAgYC5BLi4uXC8uX1NCX1BD
CiAgICAxNjEwOiA0OSAzMCA0NSA1NCA1MCA0MyAwQSBGRiA3MCA3QSA0RCAzMCAzMSAzNyA1RiA0
MiAgSTBFVFBDLi5wek0wMTdfQgogICAgMTYyMDogNDIgNEUgMEEgMDMgMEEgMDQgMEEgNzggMDAg
MEEgMTggMEEgMTAgMDAgNUMgMkYgIEJOLi4uLi54Li4uLi4uXC8KICAgIDE2MzA6IDAzIDVGIDUz
IDQyIDVGIDUwIDQzIDQ5IDMwIDQ1IDU0IDUwIDQzIEEwIDQ2IDBGICAuX1NCX1BDSTBFVFBDLkYu
CiAgICAxNjQwOiA5MSA5MyA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMCA0NSA1NCA1
MCAgLi5cLy5fU0JfUENJMEVUUAogICAgMTY1MDogNDMgMDEgOTMgNUMgMkYgMDMgNUYgNTMgNDIg
NUYgNTAgNDMgNDkgMzAgNDUgNTQgIEMuLlwvLl9TQl9QQ0kwRVQKICAgIDE2NjA6IDUwIDQzIDBB
IDAzIEEwIDRGIDBDIDVCIDEyIDVDIDJGIDAzIDVGIDUzIDQyIDVGICBQQy4uLk8uWy5cLy5fU0Jf
CiAgICAxNjcwOiA1MCA0MyA0OSAzMCA0NyA1MCA1MCA0MyAwMCA0RCAzNCAzNiAzMCAwRCAyMCAy
MCAgUENJMEdQUEMuTTQ2MC4gIAogICAgMTY4MDogMjAgMjAgNEUgNkYgNzQgNjkgNjYgNzkgMjAg
MjggNUMgNUYgNTMgNDIgMkUgNTAgICAgTm90aWZ5IChcX1NCLlAKICAgIDE2OTA6IDQzIDQ5IDMw
IDJFIDQ3IDUwIDUwIDQzIDJDIDIwIDMwIDc4IDMyIDI5IDBBIDAwICBDSTAuR1BQQywgMHgyKS4u
CiAgICAxNkEwOiAwMCAwMCAwMCAwMCAwMCAwMCA4NiA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0
MyAgLi4uLi4uLlwvLl9TQl9QQwogICAgMTZCMDogNDkgMzAgNDcgNTAgNTAgNDMgMEEgMDIgNUIg
MjIgMEEgNjQgNzAgNEQgMzAgMzEgIEkwR1BQQy4uWyIuZHBNMDEKICAgIDE2QzA6IDM3IDVGIDQy
IDQyIDRFIDBBIDAzIDBBIDA0IDBBIDc4IDAwIDBBIDIwIDYwIEEwICA3X0JCTi4uLi4ueC4uIGAu
CiAgICAxNkQwOiA0NCAwNiA5MiA5MyA3QiA2MCAwQyAwMCAwMCAwMyAwMCAwMCAwMCA0RCAzMCAz
MSAgRC4uLntgLi4uLi4uLk0wMQogICAgMTZFMDogMzggNUYgNDIgNDIgNEUgMEEgMDMgMEEgMDQg
MEEgNzggMDAgMEEgMjAgNjAgNzAgIDhfQkJOLi4uLi54Li4gYHAKICAgIDE2RjA6IDREIDMwIDMx
IDM3IDVGIDQyIDQyIDRFIDBBIDAzIDBBIDA0IDBBIDc4IDAwIDBBICBNMDE3X0JCTi4uLi4ueC4u
CiAgICAxNzAwOiAyMCA2MCBBMCAzMSA5MiA5MyA3QiA2MCAwQyAwMCAwMCAwMyAwMCAwMCAwMCA0
RCAgIGAuMS4ue2AuLi4uLi4uTQogICAgMTcxMDogMzAgMzEgMzggNUYgNDIgNDIgNEUgMEEgMDMg
MEEgMDQgMEEgNzggMDAgMEEgMjAgIDAxOF9CQk4uLi4uLnguLiAKICAgIDE3MjA6IDYwIDcwIDRE
IDMwIDMxIDM3IDVGIDQyIDQyIDRFIDBBIDAzIDBBIDA0IDBBIDc4ICBgcE0wMTdfQkJOLi4uLi54
CiAgICAxNzMwOiAwMCAwQSAyMCA2MCBBMCA0MSAxMyA5MiA5MyA1QyAyRiAwMyA1RiA1MyA0MiA1
RiAgLi4gYC5BLi4uXC8uX1NCXwogICAgMTc0MDogNTAgNDMgNDkgMzAgNDUgNTQgNTAgNDQgMEEg
RkYgNzAgN0EgNEQgMzAgMzEgMzcgIFBDSTBFVFBELi5wek0wMTcKICAgIDE3NTA6IDVGIDQyIDQy
IDRFIDBBIDAzIDBBIDA1IDBBIDc4IDAwIDBBIDE4IDBBIDEwIDAwICBfQkJOLi4uLi54Li4uLi4u
CiAgICAxNzYwOiA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMCA0NSA1NCA1MCA0NCBB
MCAgXC8uX1NCX1BDSTBFVFBELgogICAgMTc3MDogNDYgMEYgOTEgOTMgNUMgMkYgMDMgNUYgNTMg
NDIgNUYgNTAgNDMgNDkgMzAgNDUgIEYuLi5cLy5fU0JfUENJMEUKICAgIDE3ODA6IDU0IDUwIDQ0
IDAxIDkzIDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMwICBUUEQuLlwvLl9TQl9QQ0kw
CiAgICAxNzkwOiA0NSA1NCA1MCA0NCAwQSAwMyBBMCA0RiAwQyA1QiAxMiA1QyAyRiAwMyA1RiA1
MyAgRVRQRC4uLk8uWy5cLy5fUwogICAgMTdBMDogNDIgNUYgNTAgNDMgNDkgMzAgNDcgNTAgNTAg
NDQgMDAgNEQgMzQgMzYgMzAgMEQgIEJfUENJMEdQUEQuTTQ2MC4KICAgIDE3QjA6IDIwIDIwIDIw
IDIwIDRFIDZGIDc0IDY5IDY2IDc5IDIwIDI4IDVDIDVGIDUzIDQyICAgICAgTm90aWZ5IChcX1NC
CiAgICAxN0MwOiAyRSA1MCA0MyA0OSAzMCAyRSA0NyA1MCA1MCA0NCAyQyAyMCAzMCA3OCAzMiAy
OSAgLlBDSTAuR1BQRCwgMHgyKQogICAgMTdEMDogMEEgMDAgMDAgMDAgMDAgMDAgMDAgMDAgODYg
NUMgMkYgMDMgNUYgNTMgNDIgNUYgIC4uLi4uLi4uLlwvLl9TQl8KICAgIDE3RTA6IDUwIDQzIDQ5
IDMwIDQ3IDUwIDUwIDQ0IDBBIDAyIDVCIDIyIDBBIDY0IDcwIDREICBQQ0kwR1BQRC4uWyIuZHBN
CiAgICAxN0YwOiAzMCAzMSAzNyA1RiA0MiA0MiA0RSAwQSAwMyAwQSAwNSAwQSA3OCAwMCAwQSAy
MCAgMDE3X0JCTi4uLi4ueC4uIAogICAgMTgwMDogNjAgQTAgNDQgMDYgOTIgOTMgN0IgNjAgMEMg
MDAgMDAgMDMgMDAgMDAgMDAgNEQgIGAuRC4uLntgLi4uLi4uLk0KICAgIDE4MTA6IDMwIDMxIDM4
IDVGIDQyIDQyIDRFIDBBIDAzIDBBIDA1IDBBIDc4IDAwIDBBIDIwICAwMThfQkJOLi4uLi54Li4g
CiAgICAxODIwOiA2MCA3MCA0RCAzMCAzMSAzNyA1RiA0MiA0MiA0RSAwQSAwMyAwQSAwNSAwQSA3
OCAgYHBNMDE3X0JCTi4uLi4ueAogICAgMTgzMDogMDAgMEEgMjAgNjAgQTAgMzEgOTIgOTMgN0Ig
NjAgMEMgMDAgMDAgMDMgMDAgMDAgIC4uIGAuMS4ue2AuLi4uLi4KICAgIDE4NDA6IDAwIDREIDMw
IDMxIDM4IDVGIDQyIDQyIDRFIDBBIDAzIDBBIDA1IDBBIDc4IDAwICAuTTAxOF9CQk4uLi4uLngu
CiAgICAxODUwOiAwQSAyMCA2MCA3MCA0RCAzMCAzMSAzNyA1RiA0MiA0MiA0RSAwQSAwMyAwQSAw
NSAgLiBgcE0wMTdfQkJOLi4uLgogICAgMTg2MDogMEEgNzggMDAgMEEgMjAgNjAgQTAgNDEgMTMg
OTIgOTMgNUMgMkYgMDMgNUYgNTMgIC54Li4gYC5BLi4uXC8uX1MKICAgIDE4NzA6IDQyIDVGIDUw
IDQzIDQ5IDMwIDQ1IDU0IDUwIDQ1IDBBIEZGIDcwIDdBIDREIDMwICBCX1BDSTBFVFBFLi5wek0w
CiAgICAxODgwOiAzMSAzNyA1RiA0MiA0MiA0RSAwQSAwMyAwQSAwNiAwQSA3OCAwMCAwQSAxOCAw
QSAgMTdfQkJOLi4uLi54Li4uLgogICAgMTg5MDogMTAgMDAgNUMgMkYgMDMgNUYgNTMgNDIgNUYg
NTAgNDMgNDkgMzAgNDUgNTQgNTAgIC4uXC8uX1NCX1BDSTBFVFAKICAgIDE4QTA6IDQ1IEEwIDQ2
IDBGIDkxIDkzIDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5ICBFLkYuLi5cLy5fU0JfUENJ
CiAgICAxOEIwOiAzMCA0NSA1NCA1MCA0NSAwMSA5MyA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0
MyAgMEVUUEUuLlwvLl9TQl9QQwogICAgMThDMDogNDkgMzAgNDUgNTQgNTAgNDUgMEEgMDMgQTAg
NEYgMEMgNUIgMTIgNUMgMkYgMDMgIEkwRVRQRS4uLk8uWy5cLy4KICAgIDE4RDA6IDVGIDUzIDQy
IDVGIDUwIDQzIDQ5IDMwIDQ3IDUwIDUwIDQ1IDAwIDREIDM0IDM2ICBfU0JfUENJMEdQUEUuTTQ2
CiAgICAxOEUwOiAzMCAwRCAyMCAyMCAyMCAyMCA0RSA2RiA3NCA2OSA2NiA3OSAyMCAyOCA1QyA1
RiAgMC4gICAgTm90aWZ5IChcXwogICAgMThGMDogNTMgNDIgMkUgNTAgNDMgNDkgMzAgMkUgNDcg
NTAgNTAgNDUgMkMgMjAgMzAgNzggIFNCLlBDSTAuR1BQRSwgMHgKICAgIDE5MDA6IDMyIDI5IDBB
IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDg2IDVDIDJGIDAzIDVGIDUzICAyKS4uLi4uLi4uLlwvLl9T
CiAgICAxOTEwOiA0MiA1RiA1MCA0MyA0OSAzMCA0NyA1MCA1MCA0NSAwQSAwMiA1QiAyMiAwQSA2
NCAgQl9QQ0kwR1BQRS4uWyIuZAogICAgMTkyMDogNzAgNEQgMzAgMzEgMzcgNUYgNDIgNDIgNEUg
MEEgMDMgMEEgMDYgMEEgNzggMDAgIHBNMDE3X0JCTi4uLi4ueC4KICAgIDE5MzA6IDBBIDIwIDYw
IEEwIDQ0IDA2IDkyIDkzIDdCIDYwIDBDIDAwIDAwIDAzIDAwIDAwICAuIGAuRC4uLntgLi4uLi4u
CiAgICAxOTQwOiAwMCA0RCAzMCAzMSAzOCA1RiA0MiA0MiA0RSAwQSAwMyAwQSAwNiAwQSA3OCAw
MCAgLk0wMThfQkJOLi4uLi54LgogICAgMTk1MDogMEEgMjAgNjAgNzAgNEQgMzAgMzEgMzcgNUYg
NDIgNDIgNEUgMEEgMDMgMEEgMDYgIC4gYHBNMDE3X0JCTi4uLi4KICAgIDE5NjA6IDBBIDc4IDAw
IDBBIDIwIDYwIEEwIDMxIDkyIDkzIDdCIDYwIDBDIDAwIDAwIDAzICAueC4uIGAuMS4ue2AuLi4u
CiAgICAxOTcwOiAwMCAwMCAwMCA0RCAzMCAzMSAzOCA1RiA0MiA0MiA0RSAwQSAwMyAwQSAwNiAw
QSAgLi4uTTAxOF9CQk4uLi4uLgogICAgMTk4MDogNzggMDAgMEEgMjAgNjAgNzAgNEQgMzAgMzEg
MzcgNUYgNDIgNDIgNEUgMEEgMDMgIHguLiBgcE0wMTdfQkJOLi4KICAgIDE5OTA6IDBBIDA2IDBB
IDc4IDAwIDBBIDIwIDYwIEEwIDQxIDEzIDkyIDkzIDVDIDJGIDAzICAuLi54Li4gYC5BLi4uXC8u
CiAgICAxOUEwOiA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMCA0NSA1NCA1MCA0NiAwQSBGRiA3MCA3
QSAgX1NCX1BDSTBFVFBGLi5wegogICAgMTlCMDogNEQgMzAgMzEgMzcgNUYgNDIgNDIgNEUgMEEg
MDMgMEEgMDcgMEEgNzggMDAgMEEgIE0wMTdfQkJOLi4uLi54Li4KICAgIDE5QzA6IDE4IDBBIDEw
IDAwIDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMwIDQ1ICAuLi4uXC8uX1NCX1BDSTBF
CiAgICAxOUQwOiA1NCA1MCA0NiBBMCA0NiAwRiA5MSA5MyA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1
MCAgVFBGLkYuLi5cLy5fU0JfUAogICAgMTlFMDogNDMgNDkgMzAgNDUgNTQgNTAgNDYgMDEgOTMg
NUMgMkYgMDMgNUYgNTMgNDIgNUYgIENJMEVUUEYuLlwvLl9TQl8KICAgIDE5RjA6IDUwIDQzIDQ5
IDMwIDQ1IDU0IDUwIDQ2IDBBIDAzIEEwIDRGIDBDIDVCIDEyIDVDICBQQ0kwRVRQRi4uLk8uWy5c
CiAgICAxQTAwOiAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMCA0NyA1MCA1MCA0NiAwMCA0
RCAgLy5fU0JfUENJMEdQUEYuTQogICAgMUExMDogMzQgMzYgMzAgMEQgMjAgMjAgMjAgMjAgNEUg
NkYgNzQgNjkgNjYgNzkgMjAgMjggIDQ2MC4gICAgTm90aWZ5ICgKICAgIDFBMjA6IDVDIDVGIDUz
IDQyIDJFIDUwIDQzIDQ5IDMwIDJFIDQ3IDUwIDUwIDQ2IDJDIDIwICBcX1NCLlBDSTAuR1BQRiwg
CiAgICAxQTMwOiAzMCA3OCAzMiAyOSAwQSAwMCAwMCAwMCAwMCAwMCAwMCAwMCA4NiA1QyAyRiAw
MyAgMHgyKS4uLi4uLi4uLlwvLgogICAgMUE0MDogNUYgNTMgNDIgNUYgNTAgNDMgNDkgMzAgNDcg
NTAgNTAgNDYgMEEgMDIgNUIgMjIgIF9TQl9QQ0kwR1BQRi4uWyIKICAgIDFBNTA6IDBBIDY0IDcw
IDREIDMwIDMxIDM3IDVGIDQyIDQyIDRFIDBBIDAzIDBBIDA3IDBBICAuZHBNMDE3X0JCTi4uLi4u
CiAgICAxQTYwOiA3OCAwMCAwQSAyMCA2MCBBMCA0NCAwNiA5MiA5MyA3QiA2MCAwQyAwMCAwMCAw
MyAgeC4uIGAuRC4uLntgLi4uLgogICAgMUE3MDogMDAgMDAgMDAgNEQgMzAgMzEgMzggNUYgNDIg
NDIgNEUgMEEgMDMgMEEgMDcgMEEgIC4uLk0wMThfQkJOLi4uLi4KICAgIDFBODA6IDc4IDAwIDBB
IDIwIDYwIDcwIDREIDMwIDMxIDM3IDVGIDQyIDQyIDRFIDBBIDAzICB4Li4gYHBNMDE3X0JCTi4u
CiAgICAxQTkwOiAwQSAwNyAwQSA3OCAwMCAwQSAyMCA2MCBBMCAzMSA5MiA5MyA3QiA2MCAwQyAw
MCAgLi4ueC4uIGAuMS4ue2AuLgogICAgMUFBMDogMDAgMDMgMDAgMDAgMDAgNEQgMzAgMzEgMzgg
NUYgNDIgNDIgNEUgMEEgMDMgMEEgIC4uLi4uTTAxOF9CQk4uLi4KICAgIDFBQjA6IDA3IDBBIDc4
IDAwIDBBIDIwIDYwIDcwIDREIDMwIDMxIDM3IDVGIDQyIDQyIDRFICAuLnguLiBgcE0wMTdfQkJO
CiAgICAxQUMwOiAwQSAwMyAwQSAwNyAwQSA3OCAwMCAwQSAyMCA2MCBBMCA0QiAxMiA5MiA5MyA1
QyAgLi4uLi54Li4gYC5LLi4uXAogICAgMUFEMDogMkYgMDMgNUYgNTMgNDIgNUYgNTAgNDMgNDkg
MzAgNDUgNTQgNTAgNDcgMEEgRkYgIC8uX1NCX1BDSTBFVFBHLi4KICAgIDFBRTA6IDcwIDdBIDRE
IDMwIDMxIDM3IDVGIDQyIDQyIDRFIDBBIDA0IDAxIDBBIDc4IDAwICBwek0wMTdfQkJOLi4uLngu
CiAgICAxQUYwOiAwQSAxOCAwQSAxMCAwMCA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAz
MCAgLi4uLi5cLy5fU0JfUENJMAogICAgMUIwMDogNDUgNTQgNTAgNDcgQTAgNDEgMEYgOTEgOTMg
NUMgMkYgMDMgNUYgNTMgNDIgNUYgIEVUUEcuQS4uLlwvLl9TQl8KICAgIDFCMTA6IDUwIDQzIDQ5
IDMwIDQ1IDU0IDUwIDQ3IDAxIDkzIDVDIDJGIDAzIDVGIDUzIDQyICBQQ0kwRVRQRy4uXC8uX1NC
CiAgICAxQjIwOiA1RiA1MCA0MyA0OSAzMCA0NSA1NCA1MCA0NyAwQSAwMyBBMCA0QSAwQyA1QiAx
MiAgX1BDSTBFVFBHLi4uSi5bLgogICAgMUIzMDogNUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAgNDMg
NDkgMzAgNDcgNTAgNTAgNDcgMDAgIFwvLl9TQl9QQ0kwR1BQRy4KICAgIDFCNDA6IDREIDM0IDM2
IDMwIDBEIDIwIDIwIDIwIDIwIDRFIDZGIDc0IDY5IDY2IDc5IDIwICBNNDYwLiAgICBOb3RpZnkg
CiAgICAxQjUwOiAyOCA1QyA1RiA1MyA0MiAyRSA1MCA0MyA0OSAzMCAyRSA0NyA1MCA1MCA0NyAy
QyAgKFxfU0IuUENJMC5HUFBHLAogICAgMUI2MDogMjAgMzAgNzggMzIgMjkgMEEgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgODYgNUMgMkYgICAweDIpLi4uLi4uLi4uXC8KICAgIDFCNzA6IDAzIDVGIDUz
IDQyIDVGIDUwIDQzIDQ5IDMwIDQ3IDUwIDUwIDQ3IDBBIDAyIDVCICAuX1NCX1BDSTBHUFBHLi5b
CiAgICAxQjgwOiAyMiAwQSA2NCA3MCA0RCAzMCAzMSAzNyA1RiA0MiA0MiA0RSAwQSAwNCAwMSAw
QSAgIi5kcE0wMTdfQkJOLi4uLgogICAgMUI5MDogNzggMDAgMEEgMjAgNjAgQTAgNDAgMDYgOTIg
OTMgN0IgNjAgMEMgMDAgMDAgMDMgIHguLiBgLkAuLi57YC4uLi4KICAgIDFCQTA6IDAwIDAwIDAw
IDREIDMwIDMxIDM4IDVGIDQyIDQyIDRFIDBBIDA0IDAxIDBBIDc4ICAuLi5NMDE4X0JCTi4uLi54
CiAgICAxQkIwOiAwMCAwQSAyMCA2MCA3MCA0RCAzMCAzMSAzNyA1RiA0MiA0MiA0RSAwQSAwNCAw
MSAgLi4gYHBNMDE3X0JCTi4uLgogICAgMUJDMDogMEEgNzggMDAgMEEgMjAgNjAgQTAgMkYgOTIg
OTMgN0IgNjAgMEMgMDAgMDAgMDMgIC54Li4gYC4vLi57YC4uLi4KICAgIDFCRDA6IDAwIDAwIDAw
IDREIDMwIDMxIDM4IDVGIDQyIDQyIDRFIDBBIDA0IDAxIDBBIDc4ICAuLi5NMDE4X0JCTi4uLi54
CiAgICAxQkUwOiAwMCAwQSAyMCA2MCA3MCA0RCAzMCAzMSAzNyA1RiA0MiA0MiA0RSAwQSAwNCAw
MSAgLi4gYHBNMDE3X0JCTi4uLgogICAgMUJGMDogMEEgNzggMDAgMEEgMjAgNjAgQTAgNDEgMTMg
OTIgOTMgNUMgMkYgMDMgNUYgNTMgIC54Li4gYC5BLi4uXC8uX1MKICAgIDFDMDA6IDQyIDVGIDUw
IDQzIDQ5IDMwIDQ1IDU0IDUwIDQ4IDBBIEZGIDcwIDdBIDREIDMwICBCX1BDSTBFVFBILi5wek0w
CiAgICAxQzEwOiAzMSAzNyA1RiA0MiA0MiA0RSAwQSAwNCAwQSAwMiAwQSA3OCAwMCAwQSAxOCAw
QSAgMTdfQkJOLi4uLi54Li4uLgogICAgMUMyMDogMTAgMDAgNUMgMkYgMDMgNUYgNTMgNDIgNUYg
NTAgNDMgNDkgMzAgNDUgNTQgNTAgIC4uXC8uX1NCX1BDSTBFVFAKICAgIDFDMzA6IDQ4IEEwIDQ2
IDBGIDkxIDkzIDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5ICBILkYuLi5cLy5fU0JfUENJ
CiAgICAxQzQwOiAzMCA0NSA1NCA1MCA0OCAwMSA5MyA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0
MyAgMEVUUEguLlwvLl9TQl9QQwogICAgMUM1MDogNDkgMzAgNDUgNTQgNTAgNDggMEEgMDMgQTAg
NEYgMEMgNUIgMTIgNUMgMkYgMDMgIEkwRVRQSC4uLk8uWy5cLy4KICAgIDFDNjA6IDVGIDUzIDQy
IDVGIDUwIDQzIDQ5IDMwIDQ3IDUwIDUwIDQ4IDAwIDREIDM0IDM2ICBfU0JfUENJMEdQUEguTTQ2
CiAgICAxQzcwOiAzMCAwRCAyMCAyMCAyMCAyMCA0RSA2RiA3NCA2OSA2NiA3OSAyMCAyOCA1QyA1
RiAgMC4gICAgTm90aWZ5IChcXwogICAgMUM4MDogNTMgNDIgMkUgNTAgNDMgNDkgMzAgMkUgNDcg
NTAgNTAgNDggMkMgMjAgMzAgNzggIFNCLlBDSTAuR1BQSCwgMHgKICAgIDFDOTA6IDMyIDI5IDBB
IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDg2IDVDIDJGIDAzIDVGIDUzICAyKS4uLi4uLi4uLlwvLl9T
CiAgICAxQ0EwOiA0MiA1RiA1MCA0MyA0OSAzMCA0NyA1MCA1MCA0OCAwQSAwMiA1QiAyMiAwQSA2
NCAgQl9QQ0kwR1BQSC4uWyIuZAogICAgMUNCMDogNzAgNEQgMzAgMzEgMzcgNUYgNDIgNDIgNEUg
MEEgMDQgMEEgMDIgMEEgNzggMDAgIHBNMDE3X0JCTi4uLi4ueC4KICAgIDFDQzA6IDBBIDIwIDYw
IEEwIDQ0IDA2IDkyIDkzIDdCIDYwIDBDIDAwIDAwIDAzIDAwIDAwICAuIGAuRC4uLntgLi4uLi4u
CiAgICAxQ0QwOiAwMCA0RCAzMCAzMSAzOCA1RiA0MiA0MiA0RSAwQSAwNCAwQSAwMiAwQSA3OCAw
MCAgLk0wMThfQkJOLi4uLi54LgogICAgMUNFMDogMEEgMjAgNjAgNzAgNEQgMzAgMzEgMzcgNUYg
NDIgNDIgNEUgMEEgMDQgMEEgMDIgIC4gYHBNMDE3X0JCTi4uLi4KICAgIDFDRjA6IDBBIDc4IDAw
IDBBIDIwIDYwIEEwIDMxIDkyIDkzIDdCIDYwIDBDIDAwIDAwIDAzICAueC4uIGAuMS4ue2AuLi4u
CiAgICAxRDAwOiAwMCAwMCAwMCA0RCAzMCAzMSAzOCA1RiA0MiA0MiA0RSAwQSAwNCAwQSAwMiAw
QSAgLi4uTTAxOF9CQk4uLi4uLgogICAgMUQxMDogNzggMDAgMEEgMjAgNjAgNzAgNEQgMzAgMzEg
MzcgNUYgNDIgNDIgNEUgMEEgMDQgIHguLiBgcE0wMTdfQkJOLi4KICAgIDFEMjA6IDBBIDAyIDBB
IDc4IDAwIDBBIDIwIDYwIEEwIDRCIDEyIDkyIDkzIDVDIDJGIDAzICAuLi54Li4gYC5LLi4uXC8u
CiAgICAxRDMwOiA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMCA0NSA1NCAzMSAzNSAwQSBGRiA3MCA3
QSAgX1NCX1BDSTBFVDE1Li5wegogICAgMUQ0MDogNEQgMzAgMzEgMzcgNUYgNDIgNDIgNEUgMEEg
MDUgMDEgMEEgNzggMDAgMEEgMTggIE0wMTdfQkJOLi4uLnguLi4KICAgIDFENTA6IDBBIDEwIDAw
IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMwIDQ1IDU0ICAuLi5cLy5fU0JfUENJMEVU
CiAgICAxRDYwOiAzMSAzNSBBMCA0MSAwRiA5MSA5MyA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0
MyAgMTUuQS4uLlwvLl9TQl9QQwogICAgMUQ3MDogNDkgMzAgNDUgNTQgMzEgMzUgMDEgOTMgNUMg
MkYgMDMgNUYgNTMgNDIgNUYgNTAgIEkwRVQxNS4uXC8uX1NCX1AKICAgIDFEODA6IDQzIDQ5IDMw
IDQ1IDU0IDMxIDM1IDBBIDAzIEEwIDRBIDBDIDVCIDEyIDVDIDJGICBDSTBFVDE1Li4uSi5bLlwv
CiAgICAxRDkwOiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMCA0NyA1MCAzMSAzNSAwMCA0RCAz
NCAgLl9TQl9QQ0kwR1AxNS5NNAogICAgMURBMDogMzYgMzAgMEQgMjAgMjAgMjAgMjAgNEUgNkYg
NzQgNjkgNjYgNzkgMjAgMjggNUMgIDYwLiAgICBOb3RpZnkgKFwKICAgIDFEQjA6IDVGIDUzIDQy
IDJFIDUwIDQzIDQ5IDMwIDJFIDQ3IDUwIDMxIDM1IDJDIDIwIDMwICBfU0IuUENJMC5HUDE1LCAw
CiAgICAxREMwOiA3OCAzMiAyOSAwQSAwMCAwMCAwMCAwMCAwMCAwMCAwMCA4NiA1QyAyRiAwMyA1
RiAgeDIpLi4uLi4uLi4uXC8uXwogICAgMUREMDogNTMgNDIgNUYgNTAgNDMgNDkgMzAgNDcgNTAg
MzEgMzUgMEEgMDIgNUIgMjIgMEEgIFNCX1BDSTBHUDE1Li5bIi4KICAgIDFERTA6IDY0IDcwIDRE
IDMwIDMxIDM3IDVGIDQyIDQyIDRFIDBBIDA1IDAxIDBBIDc4IDAwICBkcE0wMTdfQkJOLi4uLngu
CiAgICAxREYwOiAwQSAyMCA2MCBBMCA0MCAwNiA5MiA5MyA3QiA2MCAwQyAwMCAwMCAwMyAwMCAw
MCAgLiBgLkAuLi57YC4uLi4uLgogICAgMUUwMDogMDAgNEQgMzAgMzEgMzggNUYgNDIgNDIgNEUg
MEEgMDUgMDEgMEEgNzggMDAgMEEgIC5NMDE4X0JCTi4uLi54Li4KICAgIDFFMTA6IDIwIDYwIDcw
IDREIDMwIDMxIDM3IDVGIDQyIDQyIDRFIDBBIDA1IDAxIDBBIDc4ICAgYHBNMDE3X0JCTi4uLi54
CiAgICAxRTIwOiAwMCAwQSAyMCA2MCBBMCAyRiA5MiA5MyA3QiA2MCAwQyAwMCAwMCAwMyAwMCAw
MCAgLi4gYC4vLi57YC4uLi4uLgogICAgMUUzMDogMDAgNEQgMzAgMzEgMzggNUYgNDIgNDIgNEUg
MEEgMDUgMDEgMEEgNzggMDAgMEEgIC5NMDE4X0JCTi4uLi54Li4KICAgIDFFNDA6IDIwIDYwIDcw
IDREIDMwIDMxIDM3IDVGIDQyIDQyIDRFIDBBIDA1IDAxIDBBIDc4ICAgYHBNMDE3X0JCTi4uLi54
CiAgICAxRTUwOiAwMCAwQSAyMCA2MCBBMCA0MSAxMyA5MiA5MyA1QyAyRiAwMyA1RiA1MyA0MiA1
RiAgLi4gYC5BLi4uXC8uX1NCXwogICAgMUU2MDogNTAgNDMgNDkgMzAgNDUgNTQgMzIgMzUgMEEg
RkYgNzAgN0EgNEQgMzAgMzEgMzcgIFBDSTBFVDI1Li5wek0wMTcKICAgIDFFNzA6IDVGIDQyIDQy
IDRFIDBBIDA1IDBBIDAyIDBBIDc4IDAwIDBBIDE4IDBBIDEwIDAwICBfQkJOLi4uLi54Li4uLi4u
CiAgICAxRTgwOiA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMCA0NSA1NCAzMiAzNSBB
MCAgXC8uX1NCX1BDSTBFVDI1LgogICAgMUU5MDogNDYgMEYgOTEgOTMgNUMgMkYgMDMgNUYgNTMg
NDIgNUYgNTAgNDMgNDkgMzAgNDUgIEYuLi5cLy5fU0JfUENJMEUKICAgIDFFQTA6IDU0IDMyIDM1
IDAxIDkzIDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMwICBUMjUuLlwvLl9TQl9QQ0kw
CiAgICAxRUIwOiA0NSA1NCAzMiAzNSAwQSAwMyBBMCA0RiAwQyA1QiAxMiA1QyAyRiAwMyA1RiA1
MyAgRVQyNS4uLk8uWy5cLy5fUwogICAgMUVDMDogNDIgNUYgNTAgNDMgNDkgMzAgNDcgNTAgMzIg
MzUgMDAgNEQgMzQgMzYgMzAgMEQgIEJfUENJMEdQMjUuTTQ2MC4KICAgIDFFRDA6IDIwIDIwIDIw
IDIwIDRFIDZGIDc0IDY5IDY2IDc5IDIwIDI4IDVDIDVGIDUzIDQyICAgICAgTm90aWZ5IChcX1NC
CiAgICAxRUUwOiAyRSA1MCA0MyA0OSAzMCAyRSA0NyA1MCAzMiAzNSAyQyAyMCAzMCA3OCAzMiAy
OSAgLlBDSTAuR1AyNSwgMHgyKQogICAgMUVGMDogMEEgMDAgMDAgMDAgMDAgMDAgMDAgMDAgODYg
NUMgMkYgMDMgNUYgNTMgNDIgNUYgIC4uLi4uLi4uLlwvLl9TQl8KICAgIDFGMDA6IDUwIDQzIDQ5
IDMwIDQ3IDUwIDMyIDM1IDBBIDAyIDVCIDIyIDBBIDY0IDcwIDREICBQQ0kwR1AyNS4uWyIuZHBN
CiAgICAxRjEwOiAzMCAzMSAzNyA1RiA0MiA0MiA0RSAwQSAwNSAwQSAwMiAwQSA3OCAwMCAwQSAy
MCAgMDE3X0JCTi4uLi4ueC4uIAogICAgMUYyMDogNjAgQTAgNDQgMDYgOTIgOTMgN0IgNjAgMEMg
MDAgMDAgMDMgMDAgMDAgMDAgNEQgIGAuRC4uLntgLi4uLi4uLk0KICAgIDFGMzA6IDMwIDMxIDM4
IDVGIDQyIDQyIDRFIDBBIDA1IDBBIDAyIDBBIDc4IDAwIDBBIDIwICAwMThfQkJOLi4uLi54Li4g
CiAgICAxRjQwOiA2MCA3MCA0RCAzMCAzMSAzNyA1RiA0MiA0MiA0RSAwQSAwNSAwQSAwMiAwQSA3
OCAgYHBNMDE3X0JCTi4uLi4ueAogICAgMUY1MDogMDAgMEEgMjAgNjAgQTAgMzEgOTIgOTMgN0Ig
NjAgMEMgMDAgMDAgMDMgMDAgMDAgIC4uIGAuMS4ue2AuLi4uLi4KICAgIDFGNjA6IDAwIDREIDMw
IDMxIDM4IDVGIDQyIDQyIDRFIDBBIDA1IDBBIDAyIDBBIDc4IDAwICAuTTAxOF9CQk4uLi4uLngu
CiAgICAxRjcwOiAwQSAyMCA2MCA3MCA0RCAzMCAzMSAzNyA1RiA0MiA0MiA0RSAwQSAwNSAwQSAw
MiAgLiBgcE0wMTdfQkJOLi4uLgogICAgMUY4MDogMEEgNzggMDAgMEEgMjAgNjAgQTAgNDEgMTMg
OTIgOTMgNUMgMkYgMDMgNUYgNTMgIC54Li4gYC5BLi4uXC8uX1MKICAgIDFGOTA6IDQyIDVGIDUw
IDQzIDQ5IDMwIDQ1IDU0IDMzIDM1IDBBIEZGIDcwIDdBIDREIDMwICBCX1BDSTBFVDM1Li5wek0w
CiAgICAxRkEwOiAzMSAzNyA1RiA0MiA0MiA0RSAwQSAwNSAwQSAwMyAwQSA3OCAwMCAwQSAxOCAw
QSAgMTdfQkJOLi4uLi54Li4uLgogICAgMUZCMDogMTAgMDAgNUMgMkYgMDMgNUYgNTMgNDIgNUYg
NTAgNDMgNDkgMzAgNDUgNTQgMzMgIC4uXC8uX1NCX1BDSTBFVDMKICAgIDFGQzA6IDM1IEEwIDQ2
IDBGIDkxIDkzIDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5ICA1LkYuLi5cLy5fU0JfUENJ
CiAgICAxRkQwOiAzMCA0NSA1NCAzMyAzNSAwMSA5MyA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0
MyAgMEVUMzUuLlwvLl9TQl9QQwogICAgMUZFMDogNDkgMzAgNDUgNTQgMzMgMzUgMEEgMDMgQTAg
NEYgMEMgNUIgMTIgNUMgMkYgMDMgIEkwRVQzNS4uLk8uWy5cLy4KICAgIDFGRjA6IDVGIDUzIDQy
IDVGIDUwIDQzIDQ5IDMwIDQ3IDUwIDMzIDM1IDAwIDREIDM0IDM2ICBfU0JfUENJMEdQMzUuTTQ2
CiAgICAyMDAwOiAzMCAwRCAyMCAyMCAyMCAyMCA0RSA2RiA3NCA2OSA2NiA3OSAyMCAyOCA1QyA1
RiAgMC4gICAgTm90aWZ5IChcXwogICAgMjAxMDogNTMgNDIgMkUgNTAgNDMgNDkgMzAgMkUgNDcg
NTAgMzMgMzUgMkMgMjAgMzAgNzggIFNCLlBDSTAuR1AzNSwgMHgKICAgIDIwMjA6IDMyIDI5IDBB
IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDg2IDVDIDJGIDAzIDVGIDUzICAyKS4uLi4uLi4uLlwvLl9T
CiAgICAyMDMwOiA0MiA1RiA1MCA0MyA0OSAzMCA0NyA1MCAzMyAzNSAwQSAwMiA1QiAyMiAwQSA2
NCAgQl9QQ0kwR1AzNS4uWyIuZAogICAgMjA0MDogNzAgNEQgMzAgMzEgMzcgNUYgNDIgNDIgNEUg
MEEgMDUgMEEgMDMgMEEgNzggMDAgIHBNMDE3X0JCTi4uLi4ueC4KICAgIDIwNTA6IDBBIDIwIDYw
IEEwIDQ0IDA2IDkyIDkzIDdCIDYwIDBDIDAwIDAwIDAzIDAwIDAwICAuIGAuRC4uLntgLi4uLi4u
CiAgICAyMDYwOiAwMCA0RCAzMCAzMSAzOCA1RiA0MiA0MiA0RSAwQSAwNSAwQSAwMyAwQSA3OCAw
MCAgLk0wMThfQkJOLi4uLi54LgogICAgMjA3MDogMEEgMjAgNjAgNzAgNEQgMzAgMzEgMzcgNUYg
NDIgNDIgNEUgMEEgMDUgMEEgMDMgIC4gYHBNMDE3X0JCTi4uLi4KICAgIDIwODA6IDBBIDc4IDAw
IDBBIDIwIDYwIEEwIDMxIDkyIDkzIDdCIDYwIDBDIDAwIDAwIDAzICAueC4uIGAuMS4ue2AuLi4u
CiAgICAyMDkwOiAwMCAwMCAwMCA0RCAzMCAzMSAzOCA1RiA0MiA0MiA0RSAwQSAwNSAwQSAwMyAw
QSAgLi4uTTAxOF9CQk4uLi4uLgogICAgMjBBMDogNzggMDAgMEEgMjAgNjAgNzAgNEQgMzAgMzEg
MzcgNUYgNDIgNDIgNEUgMEEgMDUgIHguLiBgcE0wMTdfQkJOLi4KICAgIDIwQjA6IDBBIDAzIDBB
IDc4IDAwIDBBIDIwIDYwIEEwIDQxIDEzIDkyIDkzIDVDIDJGIDAzICAuLi54Li4gYC5BLi4uXC8u
CiAgICAyMEMwOiA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMCA0NSA1NCAzNCAzNSAwQSBGRiA3MCA3
QSAgX1NCX1BDSTBFVDQ1Li5wegogICAgMjBEMDogNEQgMzAgMzEgMzcgNUYgNDIgNDIgNEUgMEEg
MDUgMEEgMDQgMEEgNzggMDAgMEEgIE0wMTdfQkJOLi4uLi54Li4KICAgIDIwRTA6IDE4IDBBIDEw
IDAwIDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMwIDQ1ICAuLi4uXC8uX1NCX1BDSTBF
CiAgICAyMEYwOiA1NCAzNCAzNSBBMCA0NiAwRiA5MSA5MyA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1
MCAgVDQ1LkYuLi5cLy5fU0JfUAogICAgMjEwMDogNDMgNDkgMzAgNDUgNTQgMzQgMzUgMDEgOTMg
NUMgMkYgMDMgNUYgNTMgNDIgNUYgIENJMEVUNDUuLlwvLl9TQl8KICAgIDIxMTA6IDUwIDQzIDQ5
IDMwIDQ1IDU0IDM0IDM1IDBBIDAzIEEwIDRGIDBDIDVCIDEyIDVDICBQQ0kwRVQ0NS4uLk8uWy5c
CiAgICAyMTIwOiAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMCA0NyA1MCAzNCAzNSAwMCA0
RCAgLy5fU0JfUENJMEdQNDUuTQogICAgMjEzMDogMzQgMzYgMzAgMEQgMjAgMjAgMjAgMjAgNEUg
NkYgNzQgNjkgNjYgNzkgMjAgMjggIDQ2MC4gICAgTm90aWZ5ICgKICAgIDIxNDA6IDVDIDVGIDUz
IDQyIDJFIDUwIDQzIDQ5IDMwIDJFIDQ3IDUwIDM0IDM1IDJDIDIwICBcX1NCLlBDSTAuR1A0NSwg
CiAgICAyMTUwOiAzMCA3OCAzMiAyOSAwQSAwMCAwMCAwMCAwMCAwMCAwMCAwMCA4NiA1QyAyRiAw
MyAgMHgyKS4uLi4uLi4uLlwvLgogICAgMjE2MDogNUYgNTMgNDIgNUYgNTAgNDMgNDkgMzAgNDcg
NTAgMzQgMzUgMEEgMDIgNUIgMjIgIF9TQl9QQ0kwR1A0NS4uWyIKICAgIDIxNzA6IDBBIDY0IDcw
IDREIDMwIDMxIDM3IDVGIDQyIDQyIDRFIDBBIDA1IDBBIDA0IDBBICAuZHBNMDE3X0JCTi4uLi4u
CiAgICAyMTgwOiA3OCAwMCAwQSAyMCA2MCBBMCA0NCAwNiA5MiA5MyA3QiA2MCAwQyAwMCAwMCAw
MyAgeC4uIGAuRC4uLntgLi4uLgogICAgMjE5MDogMDAgMDAgMDAgNEQgMzAgMzEgMzggNUYgNDIg
NDIgNEUgMEEgMDUgMEEgMDQgMEEgIC4uLk0wMThfQkJOLi4uLi4KICAgIDIxQTA6IDc4IDAwIDBB
IDIwIDYwIDcwIDREIDMwIDMxIDM3IDVGIDQyIDQyIDRFIDBBIDA1ICB4Li4gYHBNMDE3X0JCTi4u
CiAgICAyMUIwOiAwQSAwNCAwQSA3OCAwMCAwQSAyMCA2MCBBMCAzMSA5MiA5MyA3QiA2MCAwQyAw
MCAgLi4ueC4uIGAuMS4ue2AuLgogICAgMjFDMDogMDAgMDMgMDAgMDAgMDAgNEQgMzAgMzEgMzgg
NUYgNDIgNDIgNEUgMEEgMDUgMEEgIC4uLi4uTTAxOF9CQk4uLi4KICAgIDIxRDA6IDA0IDBBIDc4
IDAwIDBBIDIwIDYwIDcwIDREIDMwIDMxIDM3IDVGIDQyIDQyIDRFICAuLnguLiBgcE0wMTdfQkJO
CiAgICAyMUUwOiAwQSAwNSAwQSAwNCAwQSA3OCAwMCAwQSAyMCA2MCBBMCA0QiAxMiA5MiA5MyA1
QyAgLi4uLi54Li4gYC5LLi4uXAogICAgMjFGMDogMkYgMDMgNUYgNTMgNDIgNUYgNTAgNDMgNDkg
MzAgNDUgNTQgMzEgMzcgMEEgRkYgIC8uX1NCX1BDSTBFVDE3Li4KICAgIDIyMDA6IDcwIDdBIDRE
IDMwIDMxIDM3IDVGIDQyIDQyIDRFIDBBIDA3IDAxIDBBIDc4IDAwICBwek0wMTdfQkJOLi4uLngu
CiAgICAyMjEwOiAwQSAxOCAwQSAxMCAwMCA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAz
MCAgLi4uLi5cLy5fU0JfUENJMAogICAgMjIyMDogNDUgNTQgMzEgMzcgQTAgNDEgMEYgOTEgOTMg
NUMgMkYgMDMgNUYgNTMgNDIgNUYgIEVUMTcuQS4uLlwvLl9TQl8KICAgIDIyMzA6IDUwIDQzIDQ5
IDMwIDQ1IDU0IDMxIDM3IDAxIDkzIDVDIDJGIDAzIDVGIDUzIDQyICBQQ0kwRVQxNy4uXC8uX1NC
CiAgICAyMjQwOiA1RiA1MCA0MyA0OSAzMCA0NSA1NCAzMSAzNyAwQSAwMyBBMCA0QSAwQyA1QiAx
MiAgX1BDSTBFVDE3Li4uSi5bLgogICAgMjI1MDogNUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAgNDMg
NDkgMzAgNDcgNTAgMzEgMzcgMDAgIFwvLl9TQl9QQ0kwR1AxNy4KICAgIDIyNjA6IDREIDM0IDM2
IDMwIDBEIDIwIDIwIDIwIDIwIDRFIDZGIDc0IDY5IDY2IDc5IDIwICBNNDYwLiAgICBOb3RpZnkg
CiAgICAyMjcwOiAyOCA1QyA1RiA1MyA0MiAyRSA1MCA0MyA0OSAzMCAyRSA0NyA1MCAzMSAzNyAy
QyAgKFxfU0IuUENJMC5HUDE3LAogICAgMjI4MDogMjAgMzAgNzggMzIgMjkgMEEgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgODYgNUMgMkYgICAweDIpLi4uLi4uLi4uXC8KICAgIDIyOTA6IDAzIDVGIDUz
IDQyIDVGIDUwIDQzIDQ5IDMwIDQ3IDUwIDMxIDM3IDBBIDAyIDVCICAuX1NCX1BDSTBHUDE3Li5b
CiAgICAyMkEwOiAyMiAwQSA2NCA3MCA0RCAzMCAzMSAzNyA1RiA0MiA0MiA0RSAwQSAwNyAwMSAw
QSAgIi5kcE0wMTdfQkJOLi4uLgogICAgMjJCMDogNzggMDAgMEEgMjAgNjAgQTAgNDAgMDYgOTIg
OTMgN0IgNjAgMEMgMDAgMDAgMDMgIHguLiBgLkAuLi57YC4uLi4KICAgIDIyQzA6IDAwIDAwIDAw
IDREIDMwIDMxIDM4IDVGIDQyIDQyIDRFIDBBIDA3IDAxIDBBIDc4ICAuLi5NMDE4X0JCTi4uLi54
CiAgICAyMkQwOiAwMCAwQSAyMCA2MCA3MCA0RCAzMCAzMSAzNyA1RiA0MiA0MiA0RSAwQSAwNyAw
MSAgLi4gYHBNMDE3X0JCTi4uLgogICAgMjJFMDogMEEgNzggMDAgMEEgMjAgNjAgQTAgMkYgOTIg
OTMgN0IgNjAgMEMgMDAgMDAgMDMgIC54Li4gYC4vLi57YC4uLi4KICAgIDIyRjA6IDAwIDAwIDAw
IDREIDMwIDMxIDM4IDVGIDQyIDQyIDRFIDBBIDA3IDAxIDBBIDc4ICAuLi5NMDE4X0JCTi4uLi54
CiAgICAyMzAwOiAwMCAwQSAyMCA2MCA3MCA0RCAzMCAzMSAzNyA1RiA0MiA0MiA0RSAwQSAwNyAw
MSAgLi4gYHBNMDE3X0JCTi4uLgogICAgMjMxMDogMEEgNzggMDAgMEEgMjAgNjAgQTAgNDEgMTMg
OTIgOTMgNUMgMkYgMDMgNUYgNTMgIC54Li4gYC5BLi4uXC8uX1MKICAgIDIzMjA6IDQyIDVGIDUw
IDQzIDQ5IDMwIDQ1IDU0IDMyIDM3IDBBIEZGIDcwIDdBIDREIDMwICBCX1BDSTBFVDI3Li5wek0w
CiAgICAyMzMwOiAzMSAzNyA1RiA0MiA0MiA0RSAwQSAwNyAwQSAwMiAwQSA3OCAwMCAwQSAxOCAw
QSAgMTdfQkJOLi4uLi54Li4uLgogICAgMjM0MDogMTAgMDAgNUMgMkYgMDMgNUYgNTMgNDIgNUYg
NTAgNDMgNDkgMzAgNDUgNTQgMzIgIC4uXC8uX1NCX1BDSTBFVDIKICAgIDIzNTA6IDM3IEEwIDQ2
IDBGIDkxIDkzIDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5ICA3LkYuLi5cLy5fU0JfUENJ
CiAgICAyMzYwOiAzMCA0NSA1NCAzMiAzNyAwMSA5MyA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0
MyAgMEVUMjcuLlwvLl9TQl9QQwogICAgMjM3MDogNDkgMzAgNDUgNTQgMzIgMzcgMEEgMDMgQTAg
NEYgMEMgNUIgMTIgNUMgMkYgMDMgIEkwRVQyNy4uLk8uWy5cLy4KICAgIDIzODA6IDVGIDUzIDQy
IDVGIDUwIDQzIDQ5IDMwIDQ3IDUwIDMyIDM3IDAwIDREIDM0IDM2ICBfU0JfUENJMEdQMjcuTTQ2
CiAgICAyMzkwOiAzMCAwRCAyMCAyMCAyMCAyMCA0RSA2RiA3NCA2OSA2NiA3OSAyMCAyOCA1QyA1
RiAgMC4gICAgTm90aWZ5IChcXwogICAgMjNBMDogNTMgNDIgMkUgNTAgNDMgNDkgMzAgMkUgNDcg
NTAgMzIgMzcgMkMgMjAgMzAgNzggIFNCLlBDSTAuR1AyNywgMHgKICAgIDIzQjA6IDMyIDI5IDBB
IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDg2IDVDIDJGIDAzIDVGIDUzICAyKS4uLi4uLi4uLlwvLl9T
CiAgICAyM0MwOiA0MiA1RiA1MCA0MyA0OSAzMCA0NyA1MCAzMiAzNyAwQSAwMiA1QiAyMiAwQSA2
NCAgQl9QQ0kwR1AyNy4uWyIuZAogICAgMjNEMDogNzAgNEQgMzAgMzEgMzcgNUYgNDIgNDIgNEUg
MEEgMDcgMEEgMDIgMEEgNzggMDAgIHBNMDE3X0JCTi4uLi4ueC4KICAgIDIzRTA6IDBBIDIwIDYw
IEEwIDQ0IDA2IDkyIDkzIDdCIDYwIDBDIDAwIDAwIDAzIDAwIDAwICAuIGAuRC4uLntgLi4uLi4u
CiAgICAyM0YwOiAwMCA0RCAzMCAzMSAzOCA1RiA0MiA0MiA0RSAwQSAwNyAwQSAwMiAwQSA3OCAw
MCAgLk0wMThfQkJOLi4uLi54LgogICAgMjQwMDogMEEgMjAgNjAgNzAgNEQgMzAgMzEgMzcgNUYg
NDIgNDIgNEUgMEEgMDcgMEEgMDIgIC4gYHBNMDE3X0JCTi4uLi4KICAgIDI0MTA6IDBBIDc4IDAw
IDBBIDIwIDYwIEEwIDMxIDkyIDkzIDdCIDYwIDBDIDAwIDAwIDAzICAueC4uIGAuMS4ue2AuLi4u
CiAgICAyNDIwOiAwMCAwMCAwMCA0RCAzMCAzMSAzOCA1RiA0MiA0MiA0RSAwQSAwNyAwQSAwMiAw
QSAgLi4uTTAxOF9CQk4uLi4uLgogICAgMjQzMDogNzggMDAgMEEgMjAgNjAgNzAgNEQgMzAgMzEg
MzcgNUYgNDIgNDIgNEUgMEEgMDcgIHguLiBgcE0wMTdfQkJOLi4KICAgIDI0NDA6IDBBIDAyIDBB
IDc4IDAwIDBBIDIwIDYwICAgICAgICAgICAgICAgICAgICAgICAgICAuLi54Li4gYAoKU1NEVCBA
IDB4MDAwMDAwMDAwMDAwMDAwMAogICAgMDAwMDogNTMgNTMgNDQgNTQgRDQgMDYgMDAgMDAgMDIg
M0EgNDEgNEQgNDQgMDAgMDAgMDAgIFNTRFQuLi4uLjpBTUQuLi4KICAgIDAwMTA6IDQzIDUwIDRE
IDU3IDRDIDUyIDQzIDAwIDAxIDAwIDAwIDAwIDQ5IDRFIDU0IDRDICBDUE1XTFJDLi4uLi5JTlRM
CiAgICAwMDIwOiAzMSAwMyAyMyAyMCBBMCA0RiA0OCAwMCAxNSA1QyA0RCAzMCAzMCAzMCAwOCAw
MSAgMS4jIC5PSC4uXE0wMDAuLgogICAgMDAzMDogMTUgNUMgNEQgMzAgMzEgMzggMDggMDcgMTUg
NUMgNEQgMzEgMzEgMzIgMDggMDIgIC5cTTAxOC4uLlxNMTEyLi4KICAgIDAwNDA6IDE1IDVDIDRE
IDMxIDMxIDM1IDAzIDAwIDE1IDVDIDREIDMxIDMxIDM2IDBFIDAwICAuXE0xMTUuLi5cTTExNi4u
CiAgICAwMDUwOiAxNSA1QyA0RCAzMSAzMSAzNyAwRSAwMCAxNSA1QyA0RCAzMSAzMSAzOCAwRSAw
MCAgLlxNMTE3Li4uXE0xMTguLgogICAgMDA2MDogMTUgNUMgNEQgMzEgMzEgMzkgMEUgMDAgMTUg
NUMgNEQgMzEgMzIgMzAgMEUgMDAgIC5cTTExOS4uLlxNMTIwLi4KICAgIDAwNzA6IDE1IDVDIDRE
IDMwIDMzIDM3IDA2IDAwIDE1IDVDIDREIDMyIDMyIDM3IDA2IDAwICAuXE0wMzcuLi5cTTIyNy4u
CiAgICAwMDgwOiAxNSA1QyA0RCAzMyAzMiAzOSAwNiAwMCAxNSA1QyA0RCAzMyAzMiA0MSAwNiAw
MCAgLlxNMzI5Li4uXE0zMkEuLgogICAgMDA5MDogMTUgNUMgNEQgMzMgMzIgNDIgMDYgMDAgMTUg
NUMgNEQgMzMgMzIgNDMgMDYgMDAgIC5cTTMyQi4uLlxNMzJDLi4KICAgIDAwQTA6IDE1IDVDIDRE
IDMzIDMzIDMwIDA2IDAwIDE1IDVDIDREIDMwIDM4IDMyIDA1IDAwICAuXE0zMzAuLi5cTTA4Mi4u
CiAgICAwMEIwOiAxNSA1QyA0RCAzMCAzOCAzMyAwNSAwMCAxNSA1QyA0RCAzMCAzOCAzNCAwNSAw
MCAgLlxNMDgzLi4uXE0wODQuLgogICAgMDBDMDogMTUgNUMgNEQgMzAgMzggMzUgMDUgMDAgMTUg
NUMgNEQgMzIgMzIgMzEgMDUgMDAgIC5cTTA4NS4uLlxNMjIxLi4KICAgIDAwRDA6IDE1IDVDIDRE
IDMwIDM4IDM2IDA1IDAwIDE1IDVDIDREIDMyIDMyIDM5IDA1IDAwICAuXE0wODYuLi5cTTIyOS4u
CiAgICAwMEUwOiAxNSA1QyA0RCAzMiAzMyAzMSAwNSAwMCAxNSA1QyA0RCAzMiAzMyAzNSAwNSAw
MCAgLlxNMjMxLi4uXE0yMzUuLgogICAgMDBGMDogMTUgNUMgNEQgMzIgMzMgMzMgMDUgMDAgMTUg
NUMgNEQgMzAgMzggMzcgMDUgMDAgIC5cTTIzMy4uLlxNMDg3Li4KICAgIDAxMDA6IDE1IDVDIDRE
IDMwIDM4IDM4IDA1IDAwIDE1IDVDIDREIDMwIDM4IDM5IDA1IDAwICAuXE0wODguLi5cTTA4OS4u
CiAgICAwMTEwOiAxNSA1QyA0RCAzMCAzOSAzMCAwNSAwMCAxNSA1QyA0RCAzMCAzOSAzMSAwNSAw
MCAgLlxNMDkwLi4uXE0wOTEuLgogICAgMDEyMDogMTUgNUMgNEQgMzAgMzkgMzIgMDUgMDAgMTUg
NUMgNEQgMzAgMzkgMzMgMDUgMDAgIC5cTTA5Mi4uLlxNMDkzLi4KICAgIDAxMzA6IDE1IDVDIDRE
IDMwIDM5IDM0IDA1IDAwIDE1IDVDIDREIDMwIDM5IDM1IDA1IDAwICAuXE0wOTQuLi5cTTA5NS4u
CiAgICAwMTQwOiAxNSA1QyA0RCAzMCAzOSAzNiAwNSAwMCAxNSA1QyA0RCAzMCAzOSAzNyAwNSAw
MCAgLlxNMDk2Li4uXE0wOTcuLgogICAgMDE1MDogMTUgNUMgNEQgMzAgMzkgMzggMDUgMDAgMTUg
NUMgNEQgMzAgMzkgMzkgMDUgMDAgIC5cTTA5OC4uLlxNMDk5Li4KICAgIDAxNjA6IDE1IDVDIDRE
IDMxIDMwIDMwIDA1IDAwIDE1IDVDIDREIDMxIDMwIDMxIDA1IDAwICAuXE0xMDAuLi5cTTEwMS4u
CiAgICAwMTcwOiAxNSA1QyA0RCAzMSAzMCAzMiAwNSAwMCAxNSA1QyA0RCAzMSAzMCAzMyAwNSAw
MCAgLlxNMTAyLi4uXE0xMDMuLgogICAgMDE4MDogMTUgNUMgNEQgMzEgMzAgMzQgMDUgMDAgMTUg
NUMgNEQgMzEgMzAgMzUgMDUgMDAgIC5cTTEwNC4uLlxNMTA1Li4KICAgIDAxOTA6IDE1IDVDIDRE
IDMxIDMwIDM2IDA1IDAwIDE1IDVDIDREIDMxIDMwIDM3IDA1IDAwICAuXE0xMDYuLi5cTTEwNy4u
CiAgICAwMUEwOiAxNSA1QyA0RCAzMSAzMiAzOCAwNSAwMCAxNSA1QyA0RCAzMSAzMCAzOCAwNSAw
MCAgLlxNMTI4Li4uXE0xMDguLgogICAgMDFCMDogMTUgNUMgNEQgMzEgMzAgMzkgMDUgMDAgMTUg
NUMgNEQgMzEgMzEgMzAgMDUgMDAgIC5cTTEwOS4uLlxNMTEwLi4KICAgIDAxQzA6IDE1IDVDIDRE
IDMxIDMyIDMyIDA1IDAwIDE1IDVDIDREIDMxIDMzIDMxIDA1IDAwICAuXE0xMjIuLi5cTTEzMS4u
CiAgICAwMUQwOiAxNSA1QyA0RCAzMSAzMyAzMiAwNSAwMCAxNSA1QyA0RCAzMiAzMiAzNiAwNSAw
MCAgLlxNMTMyLi4uXE0yMjYuLgogICAgMDFFMDogMTUgNUMgNEQgMzEgMzMgMzMgMDUgMDAgMTUg
NUMgNEQgMzEgMzMgMzQgMDUgMDAgIC5cTTEzMy4uLlxNMTM0Li4KICAgIDAxRjA6IDE1IDVDIDRE
IDMxIDMzIDM1IDA1IDAwIDE1IDVDIDREIDMxIDMzIDM2IDA1IDAwICAuXE0xMzUuLi5cTTEzNi4u
CiAgICAwMjAwOiAxNSA1QyA0RCAzMiAzMiAzMCAwNSAwMCAxNSA1QyA0RCAzMCAzNCAzNiAwMSAw
MCAgLlxNMjIwLi4uXE0wNDYuLgogICAgMDIxMDogMTUgNUMgNEQgMzAgMzQgMzcgMDEgMDAgMTUg
NUMgNEQgMzAgMzQgMzkgMDggMDIgIC5cTTA0Ny4uLlxNMDQ5Li4KICAgIDAyMjA6IDE1IDVDIDRE
IDMwIDM0IDQyIDA4IDAyIDE1IDVDIDREIDMyIDM1IDMxIDA1IDAwICAuXE0wNEIuLi5cTTI1MS4u
CiAgICAwMjMwOiAxNSA1QyA0RCAzMyAzMSAzMCAwNSAwMCAxNSA1QyA0RCAzMyAzMSA0MyAwNSAw
MCAgLlxNMzEwLi4uXE0zMUMuLgogICAgMDI0MDogMTUgNUMgNEQgMzMgMzIgMzAgMDUgMDAgMTUg
NUMgNEQgMzMgMzIgMzEgMDUgMDAgIC5cTTMyMC4uLlxNMzIxLi4KICAgIDAyNTA6IDE1IDVDIDRE
IDMzIDMyIDMyIDA1IDAwIDE1IDVDIDREIDMzIDMyIDMzIDA1IDAwICAuXE0zMjIuLi5cTTMyMy4u
CiAgICAwMjYwOiAxNSA1QyA0RCAzMyAzMiAzNCAwNSAwMCAxNSA1QyA0RCAzMyAzMiAzNSAwNSAw
MCAgLlxNMzI0Li4uXE0zMjUuLgogICAgMDI3MDogMTUgNUMgNEQgMzMgMzIgMzYgMDUgMDAgMTUg
NUMgNEQgMzMgMzIgMzcgMDUgMDAgIC5cTTMyNi4uLlxNMzI3Li4KICAgIDAyODA6IDE1IDVDIDRE
IDMzIDMyIDM4IDA1IDAwIDE1IDVDIDREIDMyIDM4IDMwIDA1IDAwICAuXE0zMjguLi5cTTI4MC4u
CiAgICAwMjkwOiAxNSA1QyA0RCAzMiAzOSAzMCAwNSAwMCAxNSA1QyA0RCAzMyAzNyAzOCAwNSAw
MCAgLlxNMjkwLi4uXE0zNzguLgogICAgMDJBMDogMTUgNUMgNEQgMzMgMzcgMzkgMDUgMDAgMTUg
NUMgNEQgMzMgMzggMzAgMDUgMDAgIC5cTTM3OS4uLlxNMzgwLi4KICAgIDAyQjA6IDE1IDVDIDRE
IDMzIDM4IDMxIDA1IDAwIDE1IDVDIDREIDMzIDM4IDMyIDA1IDAwICAuXE0zODEuLi5cTTM4Mi4u
CiAgICAwMkMwOiAxNSA1QyA0RCAzMyAzOCAzMyAwNSAwMCAxNSA1QyA0RCAzMyAzOCAzNCAwNSAw
MCAgLlxNMzgzLi4uXE0zODQuLgogICAgMDJEMDogMTUgNUMgNEQgMzMgMzggMzUgMDUgMDAgMTUg
NUMgNEQgMzMgMzggMzYgMDUgMDAgIC5cTTM4NS4uLlxNMzg2Li4KICAgIDAyRTA6IDE1IDVDIDRE
IDMzIDM4IDM3IDA1IDAwIDE1IDVDIDREIDMzIDM4IDM4IDA1IDAwICAuXE0zODcuLi5cTTM4OC4u
CiAgICAwMkYwOiAxNSA1QyA0RCAzMyAzOCAzOSAwNSAwMCAxNSA1QyA0RCAzMyAzOSAzMCAwNSAw
MCAgLlxNMzg5Li4uXE0zOTAuLgogICAgMDMwMDogMTUgNUMgNEQgMzMgMzkgMzEgMDUgMDAgMTUg
NUMgNEQgMzMgMzkgMzIgMDUgMDAgIC5cTTM5MS4uLlxNMzkyLi4KICAgIDAzMTA6IDE1IDVDIDRE
IDMzIDMzIDMxIDA1IDAwIDE1IDVDIDREIDM2IDMyIDMwIDA1IDAwICAuXE0zMzEuLi5cTTYyMC4u
CiAgICAwMzIwOiAxNSA1QyA0RCAzNCAzMCAzNCAwMyAwMCAxNSA1QyA0RCAzNCAzMCAzOCAwOSAw
MCAgLlxNNDA0Li4uXE00MDguLgogICAgMDMzMDogMTUgNUMgNEQgMzQgMzEgMzQgMDUgMDAgMTUg
NUMgNEQgMzQgMzQgMzQgMDUgMDAgIC5cTTQxNC4uLlxNNDQ0Li4KICAgIDAzNDA6IDE1IDVDIDRE
IDM0IDM1IDMzIDA1IDAwIDE1IDVDIDREIDM0IDM1IDM0IDA1IDAwICAuXE00NTMuLi5cTTQ1NC4u
CiAgICAwMzUwOiAxNSA1QyA0RCAzNCAzNSAzNSAwNSAwMCAxNSA1QyA0RCAzNCAzNSAzNiAwNSAw
MCAgLlxNNDU1Li4uXE00NTYuLgogICAgMDM2MDogMTUgNUMgNEQgMzQgMzUgMzcgMDUgMDAgMTUg
NUMgNEQgMzQgMzQgMzkgMDUgMDAgIC5cTTQ1Ny4uLlxNNDQ5Li4KICAgIDAzNzA6IDE1IDVDIDRE
IDM0IDQzIDMwIDA1IDAwIDE1IDVDIDREIDMyIDMzIDQxIDA1IDAwICAuXE00QzAuLi5cTTIzQS4u
CiAgICAwMzgwOiAxNSA1QyA0RCAzNCA0NiAzMCAwNSAwMCAxNSA1QyA0RCAzNiAzMSAzMCAwNSAw
MCAgLlxNNEYwLi4uXE02MTAuLgogICAgMDM5MDogMTUgNUMgNEQgMzIgMzkgNDEgMDUgMDAgMTUg
NUMgNEQgMzYgMzMgMzEgMDUgMDAgIC5cTTI5QS4uLlxNNjMxLi4KICAgIDAzQTA6IDE1IDVDIDRE
IDM2IDM1IDMyIDA1IDAwIDE1IDVDIDREIDMwIDM1IDMwIDA2IDAwICAuXE02NTIuLi5cTTA1MC4u
CiAgICAwM0IwOiAxNSA1QyA0RCAzMCAzNSAzMSAwNiAwMCAxNSA1QyA0RCAzMCAzNSAzMiAwNiAw
MCAgLlxNMDUxLi4uXE0wNTIuLgogICAgMDNDMDogMTUgNUMgNEQgMzAgMzUgMzMgMDYgMDAgMTUg
NUMgNEQgMzAgMzUgMzQgMDYgMDAgIC5cTTA1My4uLlxNMDU0Li4KICAgIDAzRDA6IDE1IDVDIDRE
IDMwIDM1IDM1IDA2IDAwIDE1IDVDIDREIDMwIDM1IDM2IDA2IDAwICAuXE0wNTUuLi5cTTA1Ni4u
CiAgICAwM0UwOiAxNSA1QyA0RCAzMCAzNSAzNyAwNiAwMCAxNSA1QyA0RCAzMCAzNSAzOCAwNiAw
MCAgLlxNMDU3Li4uXE0wNTguLgogICAgMDNGMDogMTUgNUMgNEQgMzAgMzUgMzkgMDYgMDAgMTUg
NUMgNEQgMzAgMzYgMzIgMDYgMDAgIC5cTTA1OS4uLlxNMDYyLi4KICAgIDA0MDA6IDE1IDVDIDRE
IDMwIDM2IDM4IDA2IDAwIDE1IDVDIDREIDMwIDM2IDM5IDA2IDAwICAuXE0wNjguLi5cTTA2OS4u
CiAgICAwNDEwOiAxNSA1QyA0RCAzMCAzNyAzMCAwNiAwMCAxNSA1QyA0RCAzMCAzNyAzMSAwNiAw
MCAgLlxNMDcwLi4uXE0wNzEuLgogICAgMDQyMDogMTUgNUMgNEQgMzAgMzcgMzIgMDYgMDAgMTUg
NUMgNEQgMzAgMzcgMzQgMDYgMDAgIC5cTTA3Mi4uLlxNMDc0Li4KICAgIDA0MzA6IDE1IDVDIDRE
IDMwIDM3IDM1IDA2IDAwIDE1IDVDIDREIDMwIDM3IDM2IDA2IDAwICAuXE0wNzUuLi5cTTA3Ni4u
CiAgICAwNDQwOiAxNSA1QyA0RCAzMCAzNyAzNyAwNiAwMCAxNSA1QyA0RCAzMCAzNyAzOCAwNiAw
MCAgLlxNMDc3Li4uXE0wNzguLgogICAgMDQ1MDogMTUgNUMgNEQgMzAgMzcgMzkgMDYgMDAgMTUg
NUMgNEQgMzAgMzggMzAgMDYgMDAgIC5cTTA3OS4uLlxNMDgwLi4KICAgIDA0NjA6IDE1IDVDIDRE
IDMwIDM4IDMxIDA2IDAwIDE1IDVDIDREIDMxIDMyIDM3IDA2IDAwICAuXE0wODEuLi5cTTEyNy4u
CiAgICAwNDcwOiAxNSA1QyAyRiAwNiA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMSA0NyA1MCA1MCA0
MiAgLlwvLl9TQl9QQ0kxR1BQQgogICAgMDQ4MDogNTUgNTAgMzAgMzAgNDQgNTAgMzQgMzAgNTcg
NEUgMzAgMzAgMDYgMDAgMTUgNUMgIFVQMDBEUDQwV04wMC4uLlwKICAgIDA0OTA6IDJGIDA4IDVG
IDUzIDQyIDVGIDUwIDQzIDQ5IDMxIDQ3IDUwIDUwIDQyIDU1IDUwICAvLl9TQl9QQ0kxR1BQQlVQ
CiAgICAwNEEwOiAzMCAzMCA0NCA1MCAzNiAzMCA1OCA0OCAzMCAzMCA1MiA0OCA1NSA0MiA0OCA1
MyAgMDBEUDYwWEgwMFJIVUJIUwogICAgMDRCMDogMzEgMzEgMDYgMDAgMDggNDQgNTMgNTAgNDIg
MEEgNDUgMDggNDQgNDQgNTAgNDQgIDExLi4uRFNQQi5FLkREUEQKICAgIDA0QzA6IDBBIDA4IDA4
IDU3IDRDIDUyIDREIDBBIDAxIEEwIDQ4IDA1IDVCIDEyIDVDIDJGICAuLi5XTFJNLi4uSC5bLlwv
CiAgICAwNEQwOiAwNiA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMSA0NyA1MCA1MCA0MiA1NSA1MCAz
MCAgLl9TQl9QQ0kxR1BQQlVQMAogICAgMDRFMDogMzAgNDQgNTAgMzQgMzAgNTcgNEUgMzAgMzAg
MDAgMTAgMzcgNUMgMkYgMDYgNUYgIDBEUDQwV04wMC4uN1wvLl8KICAgIDA0RjA6IDUzIDQyIDVG
IDUwIDQzIDQ5IDMxIDQ3IDUwIDUwIDQyIDU1IDUwIDMwIDMwIDQ0ICBTQl9QQ0kxR1BQQlVQMDBE
CiAgICAwNTAwOiA1MCAzNCAzMCA1NyA0RSAzMCAzMCAwOCA1RiA1MCA1MiA1MiAxMiAwQyAwMSA1
QyAgUDQwV04wMC5fUFJSLi4uXAogICAgMDUxMDogMkUgNUYgNTMgNDIgNUYgNTAgNTIgNTcgNEMg
MTQgMDggNUYgNTIgNEQgNTYgMDAgIC5fU0JfUFJXTC4uX1JNVi4KICAgIDA1MjA6IEE0IDAwIEEw
IDRGIDA1IDVCIDEyIDVDIDJGIDA4IDVGIDUzIDQyIDVGIDUwIDQzICAuLi5PLlsuXC8uX1NCX1BD
CiAgICAwNTMwOiA0OSAzMSA0NyA1MCA1MCA0MiA1NSA1MCAzMCAzMCA0NCA1MCAzNiAzMCA1OCA0
OCAgSTFHUFBCVVAwMERQNjBYSAogICAgMDU0MDogMzAgMzAgNTIgNDggNTUgNDIgNDggNTMgMzEg
MzEgMDAgMTAgMzYgNUMgMkYgMDggIDAwUkhVQkhTMTEuLjZcLy4KICAgIDA1NTA6IDVGIDUzIDQy
IDVGIDUwIDQzIDQ5IDMxIDQ3IDUwIDUwIDQyIDU1IDUwIDMwIDMwICBfU0JfUENJMUdQUEJVUDAw
CiAgICAwNTYwOiA0NCA1MCAzNiAzMCA1OCA0OCAzMCAzMCA1MiA0OCA1NSA0MiA0OCA1MyAzMSAz
MSAgRFA2MFhIMDBSSFVCSFMxMQogICAgMDU3MDogMDggNUYgNTAgNTIgNTIgMTIgMEMgMDEgNUMg
MkUgNUYgNTMgNDIgNUYgNTAgNTIgIC5fUFJSLi4uXC5fU0JfUFIKICAgIDA1ODA6IDU3IDQyIDEw
IDQxIDE1IDVDIDVGIDUzIDQyIDVGIDA4IDU3IDRDIDUwIDUzIDAxICBXQi5BLlxfU0JfLldMUFMu
CiAgICAwNTkwOiA1QiA4NCA0QiAwQiA1MCA1MiA1NyA0QyAwMCAwMCAwMCAxNCA0QiAwOCA1RiA1
MiAgWy5LLlBSV0wuLi4uSy5fUgogICAgMDVBMDogNTMgNTQgMDAgNEQgMzAgMzAgMzAgMEIgQzIg
MEQgNzAgNEQgMzAgMzQgNDIgNEQgIFNULk0wMDAuLi5wTTA0Qk0KICAgIDA1QjA6IDMyIDM5IDMw
IDBBIDI4IDYyIEEwIDQ5IDA2IDkyIDkzIDYyIDBBIDAyIDcwIDREICAyOTAuKGIuSS4uLmIuLnBN
CiAgICAwNUMwOiAzMCAzNCAzOSA0RCAzMiAzOSAzMCAwQSAxNiA2MCA3MCA0RCAzMCAzNCA0MiA0
RCAgMDQ5TTI5MC4uYHBNMDRCTQogICAgMDVEMDogMzIgMzkgMzAgMEEgMTIgNjEgQTAgMzQgOTMg
NTcgNEMgNTIgNEQgMDEgNEQgMzAgIDI5MC4uYS40LldMUk0uTTAKICAgIDA1RTA6IDMxIDM4IDQ0
IDUzIDUwIDQyIDQ0IDQ0IDUwIDQ0IDAwIDBBIDNFIDBBIDA2IDAxICAxOERTUEJERFBELi4+Li4u
CiAgICAwNUYwOiAwMSA1QiAyMiA2MSA0RCAzMCAzMSAzOCA0NCA1MyA1MCA0MiA0NCA0NCA1MCA0
NCAgLlsiYU0wMThEU1BCRERQRAogICAgMDYwMDogMDAgMEEgM0UgMEEgMDYgMDEgMDAgNUIgMjIg
MEEgNjQgQTEgMTQgNEQgMzEgMzEgIC4uPi4uLi5bIi5kLi5NMTEKICAgIDA2MTA6IDMyIDYwIDAw
IDVCIDIyIDYxIDREIDMxIDMxIDMyIDYwIDAxIDVCIDIyIDBBIDY0ICAyYC5bImFNMTEyYC5bIi5k
CiAgICAwNjIwOiA0RCAzMCAzMCAzMCAwQiBDMyAwRCAxNCAwQiA1RiA1MyA1NCA0MSAwMCBBNCA1
NyAgTTAwMC4uLi4uX1NUQS4uVwogICAgMDYzMDogNEMgNTAgNTMgMTQgMEMgNUYgNEYgNEUgNUYg
MDAgNzAgMDEgNTcgNEMgNTAgNTMgIExQUy4uX09OXy5wLldMUFMKICAgIDA2NDA6IDE0IDBDIDVG
IDRGIDQ2IDQ2IDAwIDcwIDAwIDU3IDRDIDUwIDUzIDA4IDQyIDRDICAuLl9PRkYucC5XTFBTLkJM
CiAgICAwNjUwOiA1MCA1MyAwMSA1QiA4NCA0RiAwNyA1MCA1MiA1NyA0MiAwMCAwMCAwMCAxNCA0
RiAgUFMuWy5PLlBSV0IuLi4uTwogICAgMDY2MDogMDQgNUYgNTIgNTMgNTQgMDAgNEQgMzAgMzAg
MzAgMEIgREUgMEQgNzAgNEQgMzAgIC5fUlNULk0wMDAuLi5wTTAKICAgIDA2NzA6IDM0IDQyIDRE
IDMyIDM5IDMwIDBBIDQ1IDYyIEEwIDJEIDkyIDkzIDYyIDBBIDAyICA0Qk0yOTAuRWIuLS4uYi4u
CiAgICAwNjgwOiA3MCA0RCAzMCAzNCAzOSA0RCAzMiAzOSAzMCAwQSA0MCA2MCA3MCA0RCAzMCAz
NCAgcE0wNDlNMjkwLkBgcE0wNAogICAgMDY5MDogNDIgNEQgMzIgMzkgMzAgMEEgNDEgNjEgNEQg
MzEgMzEgMzIgNjAgMDAgNUIgMjIgIEJNMjkwLkFhTTExMmAuWyIKICAgIDA2QTA6IDYxIDREIDMx
IDMxIDMyIDYwIDAxIDREIDMwIDMwIDMwIDBCIERGIDBEIDE0IDBCICBhTTExMmAuTTAwMC4uLi4u
CiAgICAwNkIwOiA1RiA1MyA1NCA0MSAwMCBBNCA0MiA0QyA1MCA1MyAxNCAwQyA1RiA0RiA0RSA1
RiAgX1NUQS4uQkxQUy4uX09OXwogICAgMDZDMDogMDAgNzAgMDEgNDIgNEMgNTAgNTMgMTQgMEMg
NUYgNEYgNDYgNDYgMDAgNzAgMDAgIC5wLkJMUFMuLl9PRkYucC4KICAgIDA2RDA6IDQyIDRDIDUw
IDUzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCTFBTCgpTU0RUIEAgMHgw
MDAwMDAwMDAwMDAwMDAwCiAgICAwMDAwOiA1MyA1MyA0NCA1NCBDNSAwNSAwMCAwMCAwMiBBRiA0
MSA0RCA0NCAwMCAwMCAwMCAgU1NEVC4uLi4uLkFNRC4uLgogICAgMDAxMDogNDMgNTAgNTUgNTMg
NTMgNDQgNTQgMDAgMDEgMDAgMDAgMDAgNDEgNEQgNDkgMjAgIENQVVNTRFQuLi4uLkFNSSAKICAg
IDAwMjA6IDAxIDAwIDAwIDAwIDEwIEMwIDVBIDAwIDAwIDVDIDVGIDUzIDQyIDVGIDVCIDgyICAu
Li4uLi5aLi5cX1NCX1suCiAgICAwMDMwOiBDNSA1OSAwMCAwMCA1MCA0QyA1NCA0NiAwOCA1RiA0
OCA0OSA0NCAwRCA0MSA0MyAgLlkuLlBMVEYuX0hJRC5BQwogICAgMDA0MDogNTAgNDkgMzAgMzAg
MzEgMzAgMDAgMDggNUYgNDMgNDkgNDQgMEMgNDEgRDAgMEEgIFBJMDAxMC4uX0NJRC5BLi4KICAg
IDAwNTA6IDA1IDA4IDVGIDU1IDQ5IDQ0IDAxIDVCIDgyIDFBIDQzIDMwIDMwIDMwIDA4IDVGICAu
Ll9VSUQuWy4uQzAwMC5fCiAgICAwMDYwOiA0OCA0OSA0NCAwRCA0MSA0MyA1MCA0OSAzMCAzMCAz
MCAzNyAwMCAwOCA1RiA1NSAgSElELkFDUEkwMDA3Li5fVQogICAgMDA3MDogNDkgNDQgMDAgNUIg
ODIgMUEgNDMgMzAgMzAgMzEgMDggNUYgNDggNDkgNDQgMEQgIElELlsuLkMwMDEuX0hJRC4KICAg
IDAwODA6IDQxIDQzIDUwIDQ5IDMwIDMwIDMwIDM3IDAwIDA4IDVGIDU1IDQ5IDQ0IDAxIDVCICBB
Q1BJMDAwNy4uX1VJRC5bCiAgICAwMDkwOiA4MiAxQiA0MyAzMCAzMCAzMiAwOCA1RiA0OCA0OSA0
NCAwRCA0MSA0MyA1MCA0OSAgLi5DMDAyLl9ISUQuQUNQSQogICAgMDBBMDogMzAgMzAgMzAgMzcg
MDAgMDggNUYgNTUgNDkgNDQgMEEgMDIgNUIgODIgMUIgNDMgIDAwMDcuLl9VSUQuLlsuLkMKICAg
IDAwQjA6IDMwIDMwIDMzIDA4IDVGIDQ4IDQ5IDQ0IDBEIDQxIDQzIDUwIDQ5IDMwIDMwIDMwICAw
MDMuX0hJRC5BQ1BJMDAwCiAgICAwMEMwOiAzNyAwMCAwOCA1RiA1NSA0OSA0NCAwQSAwMyA1QiA4
MiAxQiA0MyAzMCAzMCAzNCAgNy4uX1VJRC4uWy4uQzAwNAogICAgMDBEMDogMDggNUYgNDggNDkg
NDQgMEQgNDEgNDMgNTAgNDkgMzAgMzAgMzAgMzcgMDAgMDggIC5fSElELkFDUEkwMDA3Li4KICAg
IDAwRTA6IDVGIDU1IDQ5IDQ0IDBBIDA0IDVCIDgyIDFCIDQzIDMwIDMwIDM1IDA4IDVGIDQ4ICBf
VUlELi5bLi5DMDA1Ll9ICiAgICAwMEYwOiA0OSA0NCAwRCA0MSA0MyA1MCA0OSAzMCAzMCAzMCAz
NyAwMCAwOCA1RiA1NSA0OSAgSUQuQUNQSTAwMDcuLl9VSQogICAgMDEwMDogNDQgMEEgMDUgNUIg
ODIgMUIgNDMgMzAgMzAgMzYgMDggNUYgNDggNDkgNDQgMEQgIEQuLlsuLkMwMDYuX0hJRC4KICAg
IDAxMTA6IDQxIDQzIDUwIDQ5IDMwIDMwIDMwIDM3IDAwIDA4IDVGIDU1IDQ5IDQ0IDBBIDA2ICBB
Q1BJMDAwNy4uX1VJRC4uCiAgICAwMTIwOiA1QiA4MiAxQiA0MyAzMCAzMCAzNyAwOCA1RiA0OCA0
OSA0NCAwRCA0MSA0MyA1MCAgWy4uQzAwNy5fSElELkFDUAogICAgMDEzMDogNDkgMzAgMzAgMzAg
MzcgMDAgMDggNUYgNTUgNDkgNDQgMEEgMDcgNUIgODIgMUIgIEkwMDA3Li5fVUlELi5bLi4KICAg
IDAxNDA6IDQzIDMwIDMwIDM4IDA4IDVGIDQ4IDQ5IDQ0IDBEIDQxIDQzIDUwIDQ5IDMwIDMwICBD
MDA4Ll9ISUQuQUNQSTAwCiAgICAwMTUwOiAzMCAzNyAwMCAwOCA1RiA1NSA0OSA0NCAwQSAwOCA1
QiA4MiAxQiA0MyAzMCAzMCAgMDcuLl9VSUQuLlsuLkMwMAogICAgMDE2MDogMzkgMDggNUYgNDgg
NDkgNDQgMEQgNDEgNDMgNTAgNDkgMzAgMzAgMzAgMzcgMDAgIDkuX0hJRC5BQ1BJMDAwNy4KICAg
IDAxNzA6IDA4IDVGIDU1IDQ5IDQ0IDBBIDA5IDVCIDgyIDFCIDQzIDMwIDMwIDQxIDA4IDVGICAu
X1VJRC4uWy4uQzAwQS5fCiAgICAwMTgwOiA0OCA0OSA0NCAwRCA0MSA0MyA1MCA0OSAzMCAzMCAz
MCAzNyAwMCAwOCA1RiA1NSAgSElELkFDUEkwMDA3Li5fVQogICAgMDE5MDogNDkgNDQgMEEgMEEg
NUIgODIgMUIgNDMgMzAgMzAgNDIgMDggNUYgNDggNDkgNDQgIElELi5bLi5DMDBCLl9ISUQKICAg
IDAxQTA6IDBEIDQxIDQzIDUwIDQ5IDMwIDMwIDMwIDM3IDAwIDA4IDVGIDU1IDQ5IDQ0IDBBICAu
QUNQSTAwMDcuLl9VSUQuCiAgICAwMUIwOiAwQiA1QiA4MiAxQiA0MyAzMCAzMCA0MyAwOCA1RiA0
OCA0OSA0NCAwRCA0MSA0MyAgLlsuLkMwMEMuX0hJRC5BQwogICAgMDFDMDogNTAgNDkgMzAgMzAg
MzAgMzcgMDAgMDggNUYgNTUgNDkgNDQgMEEgMEMgNUIgODIgIFBJMDAwNy4uX1VJRC4uWy4KICAg
IDAxRDA6IDFCIDQzIDMwIDMwIDQ0IDA4IDVGIDQ4IDQ5IDQ0IDBEIDQxIDQzIDUwIDQ5IDMwICAu
QzAwRC5fSElELkFDUEkwCiAgICAwMUUwOiAzMCAzMCAzNyAwMCAwOCA1RiA1NSA0OSA0NCAwQSAw
RCA1QiA4MiAxQiA0MyAzMCAgMDA3Li5fVUlELi5bLi5DMAogICAgMDFGMDogMzAgNDUgMDggNUYg
NDggNDkgNDQgMEQgNDEgNDMgNTAgNDkgMzAgMzAgMzAgMzcgIDBFLl9ISUQuQUNQSTAwMDcKICAg
IDAyMDA6IDAwIDA4IDVGIDU1IDQ5IDQ0IDBBIDBFIDVCIDgyIDFCIDQzIDMwIDMwIDQ2IDA4ICAu
Ll9VSUQuLlsuLkMwMEYuCiAgICAwMjEwOiA1RiA0OCA0OSA0NCAwRCA0MSA0MyA1MCA0OSAzMCAz
MCAzMCAzNyAwMCAwOCA1RiAgX0hJRC5BQ1BJMDAwNy4uXwogICAgMDIyMDogNTUgNDkgNDQgMEEg
MEYgNUIgODIgMUIgNDMgMzAgMzEgMzAgMDggNUYgNDggNDkgIFVJRC4uWy4uQzAxMC5fSEkKICAg
IDAyMzA6IDQ0IDBEIDQxIDQzIDUwIDQ5IDMwIDMwIDMwIDM3IDAwIDA4IDVGIDU1IDQ5IDQ0ICBE
LkFDUEkwMDA3Li5fVUlECiAgICAwMjQwOiAwQSAxMCA1QiA4MiAxQiA0MyAzMCAzMSAzMSAwOCA1
RiA0OCA0OSA0NCAwRCA0MSAgLi5bLi5DMDExLl9ISUQuQQogICAgMDI1MDogNDMgNTAgNDkgMzAg
MzAgMzAgMzcgMDAgMDggNUYgNTUgNDkgNDQgMEEgMTEgNUIgIENQSTAwMDcuLl9VSUQuLlsKICAg
IDAyNjA6IDgyIDFCIDQzIDMwIDMxIDMyIDA4IDVGIDQ4IDQ5IDQ0IDBEIDQxIDQzIDUwIDQ5ICAu
LkMwMTIuX0hJRC5BQ1BJCiAgICAwMjcwOiAzMCAzMCAzMCAzNyAwMCAwOCA1RiA1NSA0OSA0NCAw
QSAxMiA1QiA4MiAxQiA0MyAgMDAwNy4uX1VJRC4uWy4uQwogICAgMDI4MDogMzAgMzEgMzMgMDgg
NUYgNDggNDkgNDQgMEQgNDEgNDMgNTAgNDkgMzAgMzAgMzAgIDAxMy5fSElELkFDUEkwMDAKICAg
IDAyOTA6IDM3IDAwIDA4IDVGIDU1IDQ5IDQ0IDBBIDEzIDVCIDgyIDFCIDQzIDMwIDMxIDM0ICA3
Li5fVUlELi5bLi5DMDE0CiAgICAwMkEwOiAwOCA1RiA0OCA0OSA0NCAwRCA0MSA0MyA1MCA0OSAz
MCAzMCAzMCAzNyAwMCAwOCAgLl9ISUQuQUNQSTAwMDcuLgogICAgMDJCMDogNUYgNTUgNDkgNDQg
MEEgMTQgNUIgODIgMUIgNDMgMzAgMzEgMzUgMDggNUYgNDggIF9VSUQuLlsuLkMwMTUuX0gKICAg
IDAyQzA6IDQ5IDQ0IDBEIDQxIDQzIDUwIDQ5IDMwIDMwIDMwIDM3IDAwIDA4IDVGIDU1IDQ5ICBJ
RC5BQ1BJMDAwNy4uX1VJCiAgICAwMkQwOiA0NCAwQSAxNSA1QiA4MiAxQiA0MyAzMCAzMSAzNiAw
OCA1RiA0OCA0OSA0NCAwRCAgRC4uWy4uQzAxNi5fSElELgogICAgMDJFMDogNDEgNDMgNTAgNDkg
MzAgMzAgMzAgMzcgMDAgMDggNUYgNTUgNDkgNDQgMEEgMTYgIEFDUEkwMDA3Li5fVUlELi4KICAg
IDAyRjA6IDVCIDgyIDFCIDQzIDMwIDMxIDM3IDA4IDVGIDQ4IDQ5IDQ0IDBEIDQxIDQzIDUwICBb
Li5DMDE3Ll9ISUQuQUNQCiAgICAwMzAwOiA0OSAzMCAzMCAzMCAzNyAwMCAwOCA1RiA1NSA0OSA0
NCAwQSAxNyA1QiA4MiAxQiAgSTAwMDcuLl9VSUQuLlsuLgogICAgMDMxMDogNDMgMzAgMzEgMzgg
MDggNUYgNDggNDkgNDQgMEQgNDEgNDMgNTAgNDkgMzAgMzAgIEMwMTguX0hJRC5BQ1BJMDAKICAg
IDAzMjA6IDMwIDM3IDAwIDA4IDVGIDU1IDQ5IDQ0IDBBIDE4IDVCIDgyIDFCIDQzIDMwIDMxICAw
Ny4uX1VJRC4uWy4uQzAxCiAgICAwMzMwOiAzOSAwOCA1RiA0OCA0OSA0NCAwRCA0MSA0MyA1MCA0
OSAzMCAzMCAzMCAzNyAwMCAgOS5fSElELkFDUEkwMDA3LgogICAgMDM0MDogMDggNUYgNTUgNDkg
NDQgMEEgMTkgNUIgODIgMUIgNDMgMzAgMzEgNDEgMDggNUYgIC5fVUlELi5bLi5DMDFBLl8KICAg
IDAzNTA6IDQ4IDQ5IDQ0IDBEIDQxIDQzIDUwIDQ5IDMwIDMwIDMwIDM3IDAwIDA4IDVGIDU1ICBI
SUQuQUNQSTAwMDcuLl9VCiAgICAwMzYwOiA0OSA0NCAwQSAxQSA1QiA4MiAxQiA0MyAzMCAzMSA0
MiAwOCA1RiA0OCA0OSA0NCAgSUQuLlsuLkMwMUIuX0hJRAogICAgMDM3MDogMEQgNDEgNDMgNTAg
NDkgMzAgMzAgMzAgMzcgMDAgMDggNUYgNTUgNDkgNDQgMEEgIC5BQ1BJMDAwNy4uX1VJRC4KICAg
IDAzODA6IDFCIDVCIDgyIDFCIDQzIDMwIDMxIDQzIDA4IDVGIDQ4IDQ5IDQ0IDBEIDQxIDQzICAu
Wy4uQzAxQy5fSElELkFDCiAgICAwMzkwOiA1MCA0OSAzMCAzMCAzMCAzNyAwMCAwOCA1RiA1NSA0
OSA0NCAwQSAxQyA1QiA4MiAgUEkwMDA3Li5fVUlELi5bLgogICAgMDNBMDogMUIgNDMgMzAgMzEg
NDQgMDggNUYgNDggNDkgNDQgMEQgNDEgNDMgNTAgNDkgMzAgIC5DMDFELl9ISUQuQUNQSTAKICAg
IDAzQjA6IDMwIDMwIDM3IDAwIDA4IDVGIDU1IDQ5IDQ0IDBBIDFEIDVCIDgyIDFCIDQzIDMwICAw
MDcuLl9VSUQuLlsuLkMwCiAgICAwM0MwOiAzMSA0NSAwOCA1RiA0OCA0OSA0NCAwRCA0MSA0MyA1
MCA0OSAzMCAzMCAzMCAzNyAgMUUuX0hJRC5BQ1BJMDAwNwogICAgMDNEMDogMDAgMDggNUYgNTUg
NDkgNDQgMEEgMUUgNUIgODIgMUIgNDMgMzAgMzEgNDYgMDggIC4uX1VJRC4uWy4uQzAxRi4KICAg
IDAzRTA6IDVGIDQ4IDQ5IDQ0IDBEIDQxIDQzIDUwIDQ5IDMwIDMwIDMwIDM3IDAwIDA4IDVGICBf
SElELkFDUEkwMDA3Li5fCiAgICAwM0YwOiA1NSA0OSA0NCAwQSAxRiA1QiA4MiAxQiA0MyAzMCAz
MiAzMCAwOCA1RiA0OCA0OSAgVUlELi5bLi5DMDIwLl9ISQogICAgMDQwMDogNDQgMEQgNDEgNDMg
NTAgNDkgMzAgMzAgMzAgMzcgMDAgMDggNUYgNTUgNDkgNDQgIEQuQUNQSTAwMDcuLl9VSUQKICAg
IDA0MTA6IDBBIDIwIDVCIDgyIDFCIDQzIDMwIDMyIDMxIDA4IDVGIDQ4IDQ5IDQ0IDBEIDQxICAu
IFsuLkMwMjEuX0hJRC5BCiAgICAwNDIwOiA0MyA1MCA0OSAzMCAzMCAzMCAzNyAwMCAwOCA1RiA1
NSA0OSA0NCAwQSAyMSA1QiAgQ1BJMDAwNy4uX1VJRC4hWwogICAgMDQzMDogODIgMUIgNDMgMzAg
MzIgMzIgMDggNUYgNDggNDkgNDQgMEQgNDEgNDMgNTAgNDkgIC4uQzAyMi5fSElELkFDUEkKICAg
IDA0NDA6IDMwIDMwIDMwIDM3IDAwIDA4IDVGIDU1IDQ5IDQ0IDBBIDIyIDVCIDgyIDFCIDQzICAw
MDA3Li5fVUlELiJbLi5DCiAgICAwNDUwOiAzMCAzMiAzMyAwOCA1RiA0OCA0OSA0NCAwRCA0MSA0
MyA1MCA0OSAzMCAzMCAzMCAgMDIzLl9ISUQuQUNQSTAwMAogICAgMDQ2MDogMzcgMDAgMDggNUYg
NTUgNDkgNDQgMEEgMjMgNUIgODIgMUIgNDMgMzAgMzIgMzQgIDcuLl9VSUQuI1suLkMwMjQKICAg
IDA0NzA6IDA4IDVGIDQ4IDQ5IDQ0IDBEIDQxIDQzIDUwIDQ5IDMwIDMwIDMwIDM3IDAwIDA4ICAu
X0hJRC5BQ1BJMDAwNy4uCiAgICAwNDgwOiA1RiA1NSA0OSA0NCAwQSAyNCA1QiA4MiAxQiA0MyAz
MCAzMiAzNSAwOCA1RiA0OCAgX1VJRC4kWy4uQzAyNS5fSAogICAgMDQ5MDogNDkgNDQgMEQgNDEg
NDMgNTAgNDkgMzAgMzAgMzAgMzcgMDAgMDggNUYgNTUgNDkgIElELkFDUEkwMDA3Li5fVUkKICAg
IDA0QTA6IDQ0IDBBIDI1IDVCIDgyIDFCIDQzIDMwIDMyIDM2IDA4IDVGIDQ4IDQ5IDQ0IDBEICBE
LiVbLi5DMDI2Ll9ISUQuCiAgICAwNEIwOiA0MSA0MyA1MCA0OSAzMCAzMCAzMCAzNyAwMCAwOCA1
RiA1NSA0OSA0NCAwQSAyNiAgQUNQSTAwMDcuLl9VSUQuJgogICAgMDRDMDogNUIgODIgMUIgNDMg
MzAgMzIgMzcgMDggNUYgNDggNDkgNDQgMEQgNDEgNDMgNTAgIFsuLkMwMjcuX0hJRC5BQ1AKICAg
IDA0RDA6IDQ5IDMwIDMwIDMwIDM3IDAwIDA4IDVGIDU1IDQ5IDQ0IDBBIDI3IDVCIDgyIDFCICBJ
MDAwNy4uX1VJRC4nWy4uCiAgICAwNEUwOiA0MyAzMCAzMiAzOCAwOCA1RiA0OCA0OSA0NCAwRCA0
MSA0MyA1MCA0OSAzMCAzMCAgQzAyOC5fSElELkFDUEkwMAogICAgMDRGMDogMzAgMzcgMDAgMDgg
NUYgNTUgNDkgNDQgMEEgMjggNUIgODIgMUIgNDMgMzAgMzIgIDA3Li5fVUlELihbLi5DMDIKICAg
IDA1MDA6IDM5IDA4IDVGIDQ4IDQ5IDQ0IDBEIDQxIDQzIDUwIDQ5IDMwIDMwIDMwIDM3IDAwICA5
Ll9ISUQuQUNQSTAwMDcuCiAgICAwNTEwOiAwOCA1RiA1NSA0OSA0NCAwQSAyOSA1QiA4MiAxQiA0
MyAzMCAzMiA0MSAwOCA1RiAgLl9VSUQuKVsuLkMwMkEuXwogICAgMDUyMDogNDggNDkgNDQgMEQg
NDEgNDMgNTAgNDkgMzAgMzAgMzAgMzcgMDAgMDggNUYgNTUgIEhJRC5BQ1BJMDAwNy4uX1UKICAg
IDA1MzA6IDQ5IDQ0IDBBIDJBIDVCIDgyIDFCIDQzIDMwIDMyIDQyIDA4IDVGIDQ4IDQ5IDQ0ICBJ
RC4qWy4uQzAyQi5fSElECiAgICAwNTQwOiAwRCA0MSA0MyA1MCA0OSAzMCAzMCAzMCAzNyAwMCAw
OCA1RiA1NSA0OSA0NCAwQSAgLkFDUEkwMDA3Li5fVUlELgogICAgMDU1MDogMkIgNUIgODIgMUIg
NDMgMzAgMzIgNDMgMDggNUYgNDggNDkgNDQgMEQgNDEgNDMgICtbLi5DMDJDLl9ISUQuQUMKICAg
IDA1NjA6IDUwIDQ5IDMwIDMwIDMwIDM3IDAwIDA4IDVGIDU1IDQ5IDQ0IDBBIDJDIDVCIDgyICBQ
STAwMDcuLl9VSUQuLFsuCiAgICAwNTcwOiAxQiA0MyAzMCAzMiA0NCAwOCA1RiA0OCA0OSA0NCAw
RCA0MSA0MyA1MCA0OSAzMCAgLkMwMkQuX0hJRC5BQ1BJMAogICAgMDU4MDogMzAgMzAgMzcgMDAg
MDggNUYgNTUgNDkgNDQgMEEgMkQgNUIgODIgMUIgNDMgMzAgIDAwNy4uX1VJRC4tWy4uQzAKICAg
IDA1OTA6IDMyIDQ1IDA4IDVGIDQ4IDQ5IDQ0IDBEIDQxIDQzIDUwIDQ5IDMwIDMwIDMwIDM3ICAy
RS5fSElELkFDUEkwMDA3CiAgICAwNUEwOiAwMCAwOCA1RiA1NSA0OSA0NCAwQSAyRSA1QiA4MiAx
QiA0MyAzMCAzMiA0NiAwOCAgLi5fVUlELi5bLi5DMDJGLgogICAgMDVCMDogNUYgNDggNDkgNDQg
MEQgNDEgNDMgNTAgNDkgMzAgMzAgMzAgMzcgMDAgMDggNUYgIF9ISUQuQUNQSTAwMDcuLl8KICAg
IDA1QzA6IDU1IDQ5IDQ0IDBBIDJGICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBV
SUQuLwoKRkFDUCBAIDB4MDAwMDAwMDAwMDAwMDAwMAogICAgMDAwMDogNDYgNDEgNDMgNTAgMTQg
MDEgMDAgMDAgMDYgRDMgNDEgNEQgNDQgMjAgMjAgMjAgIEZBQ1AuLi4uLi5BTUQgICAKICAgIDAw
MTA6IDQxIDIwIDREIDIwIDQ5IDIwIDAwIDAwIDAxIDAwIDAwIDAwIDQxIDREIDQ5IDIwICBBIE0g
SSAuLi4uLi5BTUkgCiAgICAwMDIwOiAxMyAwMCAwMSAwMCAwMCBBMCA0NSBBOSAwMCBFMCA0NiBB
NyAwMCAwMyAwOSAwMCAgLi4uLi4uRS4uLkYuLi4uLgogICAgMDAzMDogQjIgMDAgMDAgMDAgQTAg
QTEgMDAgMDAgMDAgMDggMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAgIDAw
NDA6IDA0IDA4IDAwIDAwIDAwIDAwIDAwIDAwIEI0IDAwIDAwIDAwIDA4IDA4IDAwIDAwICAuLi4u
Li4uLi4uLi4uLi4uCiAgICAwMDUwOiAyMCAwOCAwMCAwMCAwMCAwMCAwMCAwMCAwNCAwMiAwMSAw
NCAwOCAwMCAwMCAwMCAgIC4uLi4uLi4uLi4uLi4uLgogICAgMDA2MDogNjQgMDAgRTkgMDMgMDAg
MDQgMTAgMDAgMDEgMDMgMEQgMDAgMzIgMDEgMDAgMDAgIGQuLi4uLi4uLi4uLjIuLi4KICAgIDAw
NzA6IEFEIEM1IDAzIDAwIDAxIDA4IDAwIDAwIEIyIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAuLi4u
Li4uLi4uLi4uLi4uCiAgICAwMDgwOiBCRSAwMCAwMCAwNSAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCBFMCA0NiBBNyAgLi4uLi4uLi4uLi4uLi5GLgogICAgMDA5MDogMDAgMDAgMDAgMDAgMDEg
MjAgMDAgMDIgMDAgMDggMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uIC4uLi4uLi4uLi4KICAgIDAw
QTA6IDAxIDAwIDAwIDAyIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAxIDEwIDAwIDAyICAuLi4u
Li4uLi4uLi4uLi4uCiAgICAwMEIwOiAwNCAwOCAwMCAwMCAwMCAwMCAwMCAwMCAwMSAwMCAwMCAw
MiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMDBDMDogMDAgMDAgMDAgMDAgMDEg
MDggMDAgMDEgQjQgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAgIDAw
RDA6IDAxIDIwIDAwIDAzIDA4IDA4IDAwIDAwIDAwIDAwIDAwIDAwIDAxIDQwIDAwIDAxICAuIC4u
Li4uLi4uLi4uQC4uCiAgICAwMEUwOiAyMCAwOCAwMCAwMCAwMCAwMCAwMCAwMCAwMSAwMCAwMCAw
MSAwMCAwMCAwMCAwMCAgIC4uLi4uLi4uLi4uLi4uLgogICAgMDBGMDogMDAgMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAgIDAx
MDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAuLi4u
Li4uLi4uLi4uLi4uCiAgICAwMTEwOiAwMCAwMCAwMCAwMCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLi4uLgoKRlBEVCBAIDB4MDAwMDAwMDAwMDAwMDAwMAogICAgMDAwMDog
NDYgNTAgNDQgNTQgNDQgMDAgMDAgMDAgMDEgMUYgNDEgNEQgNDQgMjAgMjAgMjAgIEZQRFRELi4u
Li5BTUQgICAKICAgIDAwMTA6IDQxIDIwIDREIDIwIDQ5IDIwIDAwIDAwIDA5IDIwIDA3IDAxIDQx
IDREIDQ5IDIwICBBIE0gSSAuLi4gLi5BTUkgCiAgICAwMDIwOiAxMyAwMCAwMCAwMSAwMCAwMCAx
MCAwMSAwMCAwMCAwMCAwMCAwMCA1MCA0QyBBNiAgLi4uLi4uLi4uLi4uLlBMLgogICAgMDAzMDog
MDAgMDAgMDAgMDAgMDEgMDAgMTAgMDEgMDAgMDAgMDAgMDAgMDAgNzAgNEUgQTYgIC4uLi4uLi4u
Li4uLi5wTi4KICAgIDAwNDA6IDAwIDAwIDAwIDAwICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAuLi4uCgpTU0RUIEAgMHgwMDAwMDAwMDAwMDAwMDAwCiAgICAwMDAwOiA1MyA1
MyA0NCA1NCBDQyAwOSAwMCAwMCAwMiBFNiA0MSA0RCA0NCAwMCAwMCAwMCAgU1NEVC4uLi4uLkFN
RC4uLgogICAgMDAxMDogNDIgNEYgNTUgNEMgNDQgNDUgNTIgNDcgMDIgMDAgMDAgMDAgNEQgNTMg
NDYgNTQgIEJPVUxERVJHLi4uLk1TRlQKICAgIDAwMjA6IDAwIDAwIDAwIDA0IDEwIDQ3IDlBIDVD
IDVGIDUzIDQyIDVGIDA4IDQxIDQ3IDUyICAuLi4uLkcuXF9TQl8uQUdSCiAgICAwMDMwOiA0MiAw
QyAwMCAwMCAwMCBFMCAwOCA0MSA0NCA0MiA0NyAxMSAwNCAwQiAwMCAwMSAgQi4uLi4uLkFEQkcu
Li4uLgogICAgMDA0MDogNUIgMDEgNDEgNEQgMzAgMzAgMDAgNUIgODAgNDEgMzAgMzAgMzEgMDEg
MEEgODAgIFsuQU0wMC5bLkEwMDEuLi4KICAgIDAwNTA6IDBBIDA0IDVCIDgxIDBCIDQxIDMwIDMw
IDMxIDAzIDQxIDMwIDMwIDMyIDIwIDVCICAuLlsuLkEwMDEuQTAwMiBbCiAgICAwMDYwOiA4MCA0
MSAzMCAzMCAzMyAwMSAwQSA4MCAwQSAwMiA1QiA4MSAwQiA0MSAzMCAzMCAgLkEwMDMuLi4uLlsu
LkEwMAogICAgMDA3MDogMzMgMDIgNDEgMzAgMzAgMzQgMTAgNUIgODAgNDEgMzAgMzAgMzUgMDEg
MEEgODAgIDMuQTAwNC5bLkEwMDUuLi4KICAgIDAwODA6IDBBIDAxIDVCIDgxIDBCIDQxIDMwIDMw
IDM1IDAxIDQxIDMwIDMwIDM2IDA4IDE0ICAuLlsuLkEwMDUuQTAwNi4uCiAgICAwMDkwOiAyNyA0
MSAzMCAzMCAzNyAwMSBBMCAyMCA5MyA4MyA4OCA1QyAyRSA1RiA1MyA0MiAgJ0EwMDcuLiAuLi5c
Ll9TQgogICAgMDBBMDogNUYgNDEgNDQgNDEgNTQgMEEgMDggMDAgMEEgMDEgNzAgN0QgNjggMEMg
MDAgMDAgIF9BREFULi4uLi5wfWguLi4KICAgIDAwQjA6IDAwIEIwIDAwIDQxIDAxIDMwIDMyIDA4
IDQxIDQ0IDQxIDU0IDExIDQ1IDUyIDBCICAuLi5BLjAyLkFEQVQuRVIuCiAgICAwMEMwOiA2MCAw
NiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgYC4uLi4uLi4uLi4u
Li4uLgogICAgMDBEMDogMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAg
MDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAgIDAwRTA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAw
IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwMEYwOiAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4u
Li4uLgogICAgMDEwMDogMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAg
MDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAgIDAxMTA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAw
IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwMTIwOiAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4u
Li4uLgogICAgMDEzMDogMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAg
MDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAgIDAxNDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAw
IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwMTUwOiAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4u
Li4uLgogICAgMDE2MDogMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAg
MDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAgIDAxNzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAw
IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwMTgwOiAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4u
Li4uLgogICAgMDE5MDogMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAg
MDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAgIDAxQTA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAw
IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwMUIwOiAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4u
Li4uLgogICAgMDFDMDogMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAg
MDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAgIDAxRDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAw
IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwMUUwOiAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4u
Li4uLgogICAgMDFGMDogMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAg
MDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAgIDAyMDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAw
IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwMjEwOiAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4u
Li4uLgogICAgMDIyMDogMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAg
MDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAgIDAyMzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAw
IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwMjQwOiAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4u
Li4uLgogICAgMDI1MDogMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAg
MDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAgIDAyNjA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAw
IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwMjcwOiAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4u
Li4uLgogICAgMDI4MDogMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAg
MDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAgIDAyOTA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAw
IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwMkEwOiAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4u
Li4uLgogICAgMDJCMDogMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAg
MDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAgIDAyQzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAw
IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwMkQwOiAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4u
Li4uLgogICAgMDJFMDogMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAg
MDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAgIDAyRjA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAw
IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwMzAwOiAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4u
Li4uLgogICAgMDMxMDogMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAg
MDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAgIDAzMjA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAw
IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwMzMwOiAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4u
Li4uLgogICAgMDM0MDogMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAg
MDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAgIDAzNTA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAw
IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwMzYwOiAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4u
Li4uLgogICAgMDM3MDogMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAg
MDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAgIDAzODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAw
IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwMzkwOiAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4u
Li4uLgogICAgMDNBMDogMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAg
MDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAgIDAzQjA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAw
IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwM0MwOiAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4u
Li4uLgogICAgMDNEMDogMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAg
MDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAgIDAzRTA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAw
IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwM0YwOiAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4u
Li4uLgogICAgMDQwMDogMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAg
MDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAgIDA0MTA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAw
IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwNDIwOiAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4u
Li4uLgogICAgMDQzMDogMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAg
MDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAgIDA0NDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAw
IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwNDUwOiAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4u
Li4uLgogICAgMDQ2MDogMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAg
MDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAgIDA0NzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAw
IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwNDgwOiAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4u
Li4uLgogICAgMDQ5MDogMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAg
MDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAgIDA0QTA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAw
IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwNEIwOiAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4u
Li4uLgogICAgMDRDMDogMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAg
MDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAgIDA0RDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAw
IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwNEUwOiAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4u
Li4uLgogICAgMDRGMDogMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAg
MDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAgIDA1MDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAw
IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwNTEwOiAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4u
Li4uLgogICAgMDUyMDogMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAg
MDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAgIDA1MzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAw
IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwNTQwOiAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4u
Li4uLgogICAgMDU1MDogMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAg
MDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAgIDA1NjA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAw
IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwNTcwOiAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4u
Li4uLgogICAgMDU4MDogMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAg
MDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAgIDA1OTA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAw
IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwNUEwOiAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4u
Li4uLgogICAgMDVCMDogMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAg
MDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAgIDA1QzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAw
IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwNUQwOiAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4u
Li4uLgogICAgMDVFMDogMDAgMDAgNUIgODAgNDEgMzAgMzMgMzIgMDAgNDEgNDcgNTIgNDIgMEIg
MDAgMTAgIC4uWy5BMDMyLkFHUkIuLi4KICAgIDA1RjA6IDVCIDgxIDBFIDQxIDMwIDMzIDMyIDEz
IDAwIDQwIDVDIDQxIDMwIDMzIDMzIDIwICBbLi5BMDMyLi5AXEEwMzMgCiAgICAwNjAwOiA1QiA4
NyAxNyA0MSAzMCAzMyAzMiA0MSAzMCAzMyAzMyAwQyAzMCAwNSBCMSAwMyAgWy4uQTAzMkEwMzMu
MC4uLgogICAgMDYxMDogMTMgMDAgNDAgNUUgNDEgMzAgMzMgMzEgMjAgNUIgODcgMTcgNDEgMzAg
MzMgMzIgIC4uQF5BMDMxIFsuLkEwMzIKICAgIDA2MjA6IDQxIDMwIDMzIDMzIDBDIDdDIDA1IEIx
IDAzIDEzIDAwIDQwIDVFIDQxIDMwIDMyICBBMDMzLnwuLi4uLkBeQTAyCiAgICAwNjMwOiAzNCAy
MCA1QiA4NyAxNyA0MSAzMCAzMyAzMiA0MSAzMCAzMyAzMyAwQyBDNCAwOSAgNCBbLi5BMDMyQTAz
My4uLgogICAgMDY0MDogQjEgMDMgMTMgMDAgNDAgNUUgNDEgMzAgMzIgMzUgMjAgNUIgODcgMTcg
NDEgMzAgIC4uLi5AXkEwMjUgWy4uQTAKICAgIDA2NTA6IDMzIDMyIDQxIDMwIDMzIDMzIDBDIEM4
IDA5IEIxIDAzIDEzIDAwIDQwIDVFIDQxICAzMkEwMzMuLi4uLi4uQF5BCiAgICAwNjYwOiAzMCAz
MiAzNiAyMCA1QiA4NyAxNyA0MSAzMCAzMyAzMiA0MSAzMCAzMyAzMyAwQyAgMDI2IFsuLkEwMzJB
MDMzLgogICAgMDY3MDogQ0MgMDkgQjEgMDMgMTMgMDAgNDAgNUUgNDEgMzAgMzIgMzcgMjAgNUIg
ODcgMTcgIC4uLi4uLkBeQTAyNyBbLi4KICAgIDA2ODA6IDQxIDMwIDMzIDMyIDQxIDMwIDMzIDMz
IDBDIEQwIDA5IEIxIDAzIDEzIDAwIDQwICBBMDMyQTAzMy4uLi4uLi5ACiAgICAwNjkwOiA1RSA0
MSAzMCAzMiAzOCAyMCA1QiA4NyAxNyA0MSAzMCAzMyAzMiA0MSAzMCAzMyAgXkEwMjggWy4uQTAz
MkEwMwogICAgMDZBMDogMzMgMEMgRDQgMDkgQjEgMDMgMTMgMDAgNDAgNUUgNDEgMzAgMzIgMzkg
MjAgNUIgIDMuLi4uLi4uQF5BMDI5IFsKICAgIDA2QjA6IDg3IDE3IDQxIDMwIDMzIDMyIDQxIDMw
IDMzIDMzIDBDIEQ4IDA5IEIxIDAzIDEzICAuLkEwMzJBMDMzLi4uLi4uCiAgICAwNkMwOiAwMCA0
MCA1RSA0MSAzMCAzMyAzMCAyMCAxNCA0NyAwQSA0MSAzMCAzMSAzNyAwQSAgLkBeQTAzMCAuRy5B
MDE3LgogICAgMDZEMDogNUIgMjMgNUMgMkUgNUYgNTMgNDIgNUYgNDEgNEQgMzAgMzAgRkYgRkYg
OEEgNjkgIFsjXC5fU0JfQU0wMC4uLmkKICAgIDA2RTA6IDBBIDAwIDQxIDMwIDMxIDM4IDhBIDY5
IDBBIDA0IDQxIDMwIDMxIDM5IDhBIDY5ICAuLkEwMTguaS4uQTAxOS5pCiAgICAwNkYwOiAwQSAw
OCA0MSAzMCAzMiAzMCA4QSA2OSAwQSAwQyA0MSAzMCAzMiAzMSA4QSA2OSAgLi5BMDIwLmkuLkEw
MjEuaQogICAgMDcwMDogMEEgMTAgNDEgMzAgMzIgMzIgOEEgNjkgMEEgMTQgNDEgMzAgMzIgMzMg
NzAgMEEgIC4uQTAyMi5pLi5BMDIzcC4KICAgIDA3MTA6IDAwIDQxIDMwIDMyIDM0IEEyIDA5IDky
IDkzIDQxIDMwIDMyIDM0IDBBIDAwIDcwICAuQTAyNC4uLi5BMDI0Li5wCiAgICAwNzIwOiA0MSAz
MCAzMSAzOCA0MSAzMCAzMiAzNSA3MCA0MSAzMCAzMSAzOSA0MSAzMCAzMiAgQTAxOEEwMjVwQTAx
OUEwMgogICAgMDczMDogMzYgNzAgNDEgMzAgMzIgMzAgNDEgMzAgMzIgMzcgNzAgNDEgMzAgMzIg
MzEgNDEgIDZwQTAyMEEwMjdwQTAyMUEKICAgIDA3NDA6IDMwIDMyIDM4IDcwIDQxIDMwIDMyIDMy
IDQxIDMwIDMyIDM5IDcwIDQxIDMwIDMyICAwMjhwQTAyMkEwMjlwQTAyCiAgICAwNzUwOiAzMyA0
MSAzMCAzMyAzMCA3MCA2OCA0MSAzMCAzMyAzMSBBMiAwOCA5MyA0MSAzMCAgM0EwMzBwaEEwMzEu
Li5BMAogICAgMDc2MDogMzIgMzQgMEEgMDAgNUIgMjcgNUMgMkUgNUYgNTMgNDIgNUYgNDEgNEQg
MzAgMzAgIDI0Li5bJ1wuX1NCX0FNMDAKICAgIDA3NzA6IDE0IDNBIDQxIDREIDRFIDUyIDAxIDVC
IDIzIDVDIDJFIDVGIDUzIDQyIDVGIDQxICAuOkFNTlIuWyNcLl9TQl9BCiAgICAwNzgwOiA0RCAz
MCAzMCBGRiBGRiA1QiA4NyAxMyA0MSAzMCAzMyAzMiA0MSAzMCAzMyAzMyAgTTAwLi5bLi5BMDMy
QTAzMwogICAgMDc5MDogNjggMDMgMDAgNDAgNUUgNDEgMzAgMzMgMzQgMjAgNUIgMjcgNUMgMkUg
NUYgNTMgIGguLkBeQTAzNCBbJ1wuX1MKICAgIDA3QTA6IDQyIDVGIDQxIDREIDMwIDMwIEE0IDQx
IDMwIDMzIDM0IDE0IDNCIDQxIDREIDRFICBCX0FNMDAuQTAzNC47QU1OCiAgICAwN0IwOiA1NyAw
MiA1QiAyMyA1QyAyRSA1RiA1MyA0MiA1RiA0MSA0RCAzMCAzMCBGRiBGRiAgVy5bI1wuX1NCX0FN
MDAuLgogICAgMDdDMDogNUIgODcgMTMgNDEgMzAgMzMgMzIgNDEgMzAgMzMgMzMgNjggMDMgMDAg
NDAgNUUgIFsuLkEwMzJBMDMzaC4uQF4KICAgIDA3RDA6IDQxIDMwIDMzIDM1IDIwIDcwIDY5IDQx
IDMwIDMzIDM1IDVCIDI3IDVDIDJFIDVGICBBMDM1IHBpQTAzNVsnXC5fCiAgICAwN0UwOiA1MyA0
MiA1RiA0MSA0RCAzMCAzMCAxNCA0NyAxMSA0MSAzMCAzMSAzNiAwOSA4QiAgU0JfQU0wMC5HLkEw
MTYuLgogICAgMDdGMDogNjggMEEgMDAgNDEgMzAgMzMgMzYgNzAgMTEgMDMgMEEgMTggNjcgOEEg
NjcgMEEgIGguLkEwMzZwLi4uLmcuZy4KICAgIDA4MDA6IDAwIDQxIDMwIDMzIDM3IDhBIDY3IDBB
IDA0IDQxIDMwIDMzIDM4IDhBIDY3IDBBICAuQTAzNy5nLi5BMDM4LmcuCiAgICAwODEwOiAwOCA0
MSAzMCAzMyAzOSA4QSA2NyAwQSAwQyA0MSAzMCAzNCAzMCA4QSA2NyAwQSAgLkEwMzkuZy4uQTA0
MC5nLgogICAgMDgyMDogMTAgNDEgMzAgMzQgMzEgOEEgNjcgMEEgMTQgNDEgMzAgMzQgMzIgNzAg
MEEgMDIgIC5BMDQxLmcuLkEwNDJwLi4KICAgIDA4MzA6IDYwIEEyIDREIDBDIDk1IDYwIDQxIDMw
IDMzIDM2IDcwIDgzIDg4IDY4IDYwIDAwICBgLk0uLmBBMDM2cC4uaGAuCiAgICAwODQwOiA2MSA3
NSA2MCA3MCA4MyA4OCA2OCA2MCAwMCA2MiA3NSA2MCA3RCA3OSA4MyA4OCAgYXVgcC4uaGAuYnVg
fXkuLgogICAgMDg1MDogNjggNjAgMDAgMEEgMDggMDAgNjIgNjIgNzUgNjAgN0QgNzkgODMgODgg
NjggNjAgIGhgLi4uLmJidWB9eS4uaGAKICAgIDA4NjA6IDAwIDBBIDEwIDAwIDYyIDYyIDc1IDYw
IDdEIDc5IDgzIDg4IDY4IDYwIDAwIDBBICAuLi4uYmJ1YH15Li5oYC4uCiAgICAwODcwOiAxOCAw
MCA2MiA2MiA3NSA2MCA3MCAwQSAwMCA0MSAzMCAzMyAzNyA3MCAwQSAwMCAgLi5iYnVgcC4uQTAz
N3AuLgogICAgMDg4MDogNDEgMzAgMzMgMzggNzAgMEEgMDAgNDEgMzAgMzMgMzkgNzAgMEEgMDAg
NDEgMzAgIEEwMzhwLi5BMDM5cC4uQTAKICAgIDA4OTA6IDM0IDMwIDcwIDBBIDAwIDQxIDMwIDM0
IDMxIDcwIDBBIDAwIDQxIDMwIDM0IDMyICA0MHAuLkEwNDFwLi5BMDQyCiAgICAwOEEwOiBBMCAx
MiA5MyA2MSAwQSAwNCA3MCA2MiA0MSAzMCAzMyAzNyA0MSAzMCAzMSAzNyAgLi4uYS4ucGJBMDM3
QTAxNwogICAgMDhCMDogMEEgM0UgNjcgQTAgMTIgOTMgNjEgMEEgMEIgNzAgNjIgNDEgMzAgMzMg
MzcgNDEgIC4+Zy4uLmEuLnBiQTAzN0EKICAgIDA4QzA6IDMwIDMxIDM3IDBBIDNDIDY3IEEwIDEy
IDkzIDYxIDBBIDBDIDcwIDYyIDQxIDMwICAwMTcuPGcuLi5hLi5wYkEwCiAgICAwOEQwOiAzMyAz
NyA0MSAzMCAzMSAzNyAwQSAzRCA2NyBBMCAxMiA5MyA2MSAwQSAxMCA3MCAgMzdBMDE3Lj1nLi4u
YS4ucAogICAgMDhFMDogNjIgNDEgMzAgMzMgMzcgNDEgMzAgMzEgMzcgMEEgM0YgNjcgQTAgMTIg
OTMgNjEgIGJBMDM3QTAxNy4/Zy4uLmEKICAgIDA4RjA6IDBBIDExIDcwIDYyIDQxIDMwIDMzIDM3
IDQxIDMwIDMxIDM3IDBBIDJGIDY3IDA4ICAuLnBiQTAzN0EwMTcuL2cuCiAgICAwOTAwOiA0MSAz
MCAzMCAzOCAwQSAwMSAwOCA0MSAzMCAzMCAzOSAwQSAwMCAxNCAwNiA0MSAgQTAwOC4uLkEwMDku
Li4uQQogICAgMDkxMDogNTAgNTQgNTMgMDEgMTQgMDYgNDEgNTcgNDEgNEIgMDEgMTQgNDAgMEIg
NDEgNEMgIFBUUy4uLkFXQUsuLkAuQUwKICAgIDA5MjA6IDQ5IDQyIDAyIEEwIDQzIDA4IDkzIDY4
IDBBIDAwIDQxIDMwIDMwIDM3IDBCIDgwICBJQi4uQy4uaC4uQTAwNy4uCiAgICAwOTMwOiBBQSA4
QiA2OSAwQSAwMCA0MSAzMCAzMSAzMCA4QiA2OSAwQSAwMiA0MSAzMCAzMSAgLi5pLi5BMDEwLmku
LkEwMQogICAgMDk0MDogMzEgOEEgNjkgMEEgMDQgNDEgMzAgMzEgMzIgNzAgMTEgMDQgMEIgMDAg
MDEgNjAgIDEuaS4uQTAxMnAuLi4uLmAKICAgIDA5NTA6IDhCIDYwIDBBIDAwIDQxIDMwIDMxIDMz
IDcwIDQxIDMwIDMxIDMwIDQxIDMwIDMxICAuYC4uQTAxM3BBMDEwQTAxCiAgICAwOTYwOiAzMyA4
QiA2MCAwQSAwMiA0MSAzMCAzMSAzNCA3MCA0MSAzMCAzMSAzMSA0MSAzMCAgMy5gLi5BMDE0cEEw
MTFBMAogICAgMDk3MDogMzEgMzQgOEEgNjAgMEEgMDQgNDEgMzAgMzEgMzUgNzAgNDEgMzAgMzEg
MzIgNDEgIDE0LmAuLkEwMTVwQTAxMkEKICAgIDA5ODA6IDMwIDMxIDM1IDdCIDQxIDMwIDMxIDM1
IDgwIDBBIDBGIDAwIDQxIDMwIDMxIDM1ICAwMTV7QTAxNS4uLi5BMDE1CiAgICAwOTkwOiA3MCAw
QSAwMSA2MSA3RCA0MSAzMCAzMSAzNSA2MSA0MSAzMCAzMSAzNSA0MSAzMCAgcC4uYX1BMDE1YUEw
MTVBMAogICAgMDlBMDogMzAgMzcgMEIgODEgQUEgQTQgNjAgQTAgMTggOTMgNjggMEEgMEMgNDEg
MzAgMzAgIDA3Li4uLmAuLi5oLi5BMDAKICAgIDA5QjA6IDM3IDBCIDhFIEFBIDQxIDMwIDMxIDM2
IDY5IDQxIDMwIDMwIDM3IDBCIDhGIEFBICA3Li4uQTAxNmlBMDA3Li4uCiAgICAwOUMwOiA3MCAx
MSAwNyAwQiAwMCAwMSAwMyAwMCAwMCA2MCBBNCA2MCAgICAgICAgICAgICAgcC4uLi4uLi4uYC5g
CgpTU0RUIEAgMHgwMDAwMDAwMDAwMDAwMDAwCiAgICAwMDAwOiA1MyA1MyA0NCA1NCA3MiAwQiAw
MCAwMCAwMiAyMiA0MSA0RCA0NCAwMCAwMCAwMCAgU1NEVHIuLi4uIkFNRC4uLgogICAgMDAxMDog
NDMgNTAgNEQgNDEgNDMgNTAgNTYgMzYgMDEgMDAgMDAgMDAgNDkgNEUgNTQgNEMgIENQTUFDUFY2
Li4uLklOVEwKICAgIDAwMjA6IDMxIDAzIDIzIDIwIEEwIDQ3IDQ3IDAwIDE1IDVDIDREIDMxIDMx
IDM1IDAzIDAwICAxLiMgLkdHLi5cTTExNS4uCiAgICAwMDMwOiAxNSA1QyA0RCAzMSAzMSAzNiAw
RSAwMCAxNSA1QyA0RCAzMSAzMSAzNyAwRSAwMCAgLlxNMTE2Li4uXE0xMTcuLgogICAgMDA0MDog
MTUgNUMgNEQgMzEgMzEgMzggMEUgMDAgMTUgNUMgNEQgMzEgMzEgMzkgMEUgMDAgIC5cTTExOC4u
LlxNMTE5Li4KICAgIDAwNTA6IDE1IDVDIDREIDMxIDMyIDMwIDBFIDAwIDE1IDVDIDREIDMwIDMz
IDM3IDA2IDAwICAuXE0xMjAuLi5cTTAzNy4uCiAgICAwMDYwOiAxNSA1QyA0RCAzMiAzMiAzNyAw
NiAwMCAxNSA1QyA0RCAzMyAzMiAzOSAwNiAwMCAgLlxNMjI3Li4uXE0zMjkuLgogICAgMDA3MDog
MTUgNUMgNEQgMzMgMzIgNDEgMDYgMDAgMTUgNUMgNEQgMzMgMzIgNDIgMDYgMDAgIC5cTTMyQS4u
LlxNMzJCLi4KICAgIDAwODA6IDE1IDVDIDREIDMzIDMyIDQzIDA2IDAwIDE1IDVDIDREIDMzIDMz
IDMwIDA2IDAwICAuXE0zMkMuLi5cTTMzMC4uCiAgICAwMDkwOiAxNSA1QyA0RCAzMCAzOCAzMiAw
NSAwMCAxNSA1QyA0RCAzMCAzOCAzMyAwNSAwMCAgLlxNMDgyLi4uXE0wODMuLgogICAgMDBBMDog
MTUgNUMgNEQgMzAgMzggMzQgMDUgMDAgMTUgNUMgNEQgMzAgMzggMzUgMDUgMDAgIC5cTTA4NC4u
LlxNMDg1Li4KICAgIDAwQjA6IDE1IDVDIDREIDMyIDMyIDMxIDA1IDAwIDE1IDVDIDREIDMwIDM4
IDM2IDA1IDAwICAuXE0yMjEuLi5cTTA4Ni4uCiAgICAwMEMwOiAxNSA1QyA0RCAzMiAzMiAzOSAw
NSAwMCAxNSA1QyA0RCAzMiAzMyAzMSAwNSAwMCAgLlxNMjI5Li4uXE0yMzEuLgogICAgMDBEMDog
MTUgNUMgNEQgMzIgMzMgMzUgMDUgMDAgMTUgNUMgNEQgMzIgMzMgMzMgMDUgMDAgIC5cTTIzNS4u
LlxNMjMzLi4KICAgIDAwRTA6IDE1IDVDIDREIDMwIDM4IDM3IDA1IDAwIDE1IDVDIDREIDMwIDM4
IDM4IDA1IDAwICAuXE0wODcuLi5cTTA4OC4uCiAgICAwMEYwOiAxNSA1QyA0RCAzMCAzOCAzOSAw
NSAwMCAxNSA1QyA0RCAzMCAzOSAzMCAwNSAwMCAgLlxNMDg5Li4uXE0wOTAuLgogICAgMDEwMDog
MTUgNUMgNEQgMzAgMzkgMzEgMDUgMDAgMTUgNUMgNEQgMzAgMzkgMzIgMDUgMDAgIC5cTTA5MS4u
LlxNMDkyLi4KICAgIDAxMTA6IDE1IDVDIDREIDMwIDM5IDMzIDA1IDAwIDE1IDVDIDREIDMwIDM5
IDM0IDA1IDAwICAuXE0wOTMuLi5cTTA5NC4uCiAgICAwMTIwOiAxNSA1QyA0RCAzMCAzOSAzNSAw
NSAwMCAxNSA1QyA0RCAzMCAzOSAzNiAwNSAwMCAgLlxNMDk1Li4uXE0wOTYuLgogICAgMDEzMDog
MTUgNUMgNEQgMzAgMzkgMzcgMDUgMDAgMTUgNUMgNEQgMzAgMzkgMzggMDUgMDAgIC5cTTA5Ny4u
LlxNMDk4Li4KICAgIDAxNDA6IDE1IDVDIDREIDMwIDM5IDM5IDA1IDAwIDE1IDVDIDREIDMxIDMw
IDMwIDA1IDAwICAuXE0wOTkuLi5cTTEwMC4uCiAgICAwMTUwOiAxNSA1QyA0RCAzMSAzMCAzMSAw
NSAwMCAxNSA1QyA0RCAzMSAzMCAzMiAwNSAwMCAgLlxNMTAxLi4uXE0xMDIuLgogICAgMDE2MDog
MTUgNUMgNEQgMzEgMzAgMzMgMDUgMDAgMTUgNUMgNEQgMzEgMzAgMzQgMDUgMDAgIC5cTTEwMy4u
LlxNMTA0Li4KICAgIDAxNzA6IDE1IDVDIDREIDMxIDMwIDM1IDA1IDAwIDE1IDVDIDREIDMxIDMw
IDM2IDA1IDAwICAuXE0xMDUuLi5cTTEwNi4uCiAgICAwMTgwOiAxNSA1QyA0RCAzMSAzMCAzNyAw
NSAwMCAxNSA1QyA0RCAzMSAzMiAzOCAwNSAwMCAgLlxNMTA3Li4uXE0xMjguLgogICAgMDE5MDog
MTUgNUMgNEQgMzEgMzAgMzggMDUgMDAgMTUgNUMgNEQgMzEgMzAgMzkgMDUgMDAgIC5cTTEwOC4u
LlxNMTA5Li4KICAgIDAxQTA6IDE1IDVDIDREIDMxIDMxIDMwIDA1IDAwIDE1IDVDIDREIDMxIDMy
IDMyIDA1IDAwICAuXE0xMTAuLi5cTTEyMi4uCiAgICAwMUIwOiAxNSA1QyA0RCAzMSAzMyAzMSAw
NSAwMCAxNSA1QyA0RCAzMSAzMyAzMiAwNSAwMCAgLlxNMTMxLi4uXE0xMzIuLgogICAgMDFDMDog
MTUgNUMgNEQgMzIgMzIgMzYgMDUgMDAgMTUgNUMgNEQgMzEgMzMgMzMgMDUgMDAgIC5cTTIyNi4u
LlxNMTMzLi4KICAgIDAxRDA6IDE1IDVDIDREIDMxIDMzIDM0IDA1IDAwIDE1IDVDIDREIDMxIDMz
IDM1IDA1IDAwICAuXE0xMzQuLi5cTTEzNS4uCiAgICAwMUUwOiAxNSA1QyA0RCAzMSAzMyAzNiAw
NSAwMCAxNSA1QyA0RCAzMiAzMiAzMCAwNSAwMCAgLlxNMTM2Li4uXE0yMjAuLgogICAgMDFGMDog
MTUgNUMgNEQgMzAgMzQgMzYgMDEgMDAgMTUgNUMgNEQgMzAgMzQgMzcgMDEgMDAgIC5cTTA0Ni4u
LlxNMDQ3Li4KICAgIDAyMDA6IDE1IDVDIDREIDMyIDM0IDM5IDA4IDA0IDE1IDVDIDREIDMyIDM1
IDMwIDA4IDA1ICAuXE0yNDkuLi5cTTI1MC4uCiAgICAwMjEwOiAxNSA1QyA0RCAzMiAzNSAzMSAw
NSAwMCAxNSA1QyA0RCAzMyAzMSAzMCAwNSAwMCAgLlxNMjUxLi4uXE0zMTAuLgogICAgMDIyMDog
MTUgNUMgNEQgMzMgMzEgNDMgMDUgMDAgMTUgNUMgNEQgMzMgMzIgMzAgMDUgMDAgIC5cTTMxQy4u
LlxNMzIwLi4KICAgIDAyMzA6IDE1IDVDIDREIDMzIDMyIDMxIDA1IDAwIDE1IDVDIDREIDMzIDMy
IDMyIDA1IDAwICAuXE0zMjEuLi5cTTMyMi4uCiAgICAwMjQwOiAxNSA1QyA0RCAzMyAzMiAzMyAw
NSAwMCAxNSA1QyA0RCAzMyAzMiAzNCAwNSAwMCAgLlxNMzIzLi4uXE0zMjQuLgogICAgMDI1MDog
MTUgNUMgNEQgMzMgMzIgMzUgMDUgMDAgMTUgNUMgNEQgMzMgMzIgMzYgMDUgMDAgIC5cTTMyNS4u
LlxNMzI2Li4KICAgIDAyNjA6IDE1IDVDIDREIDMzIDMyIDM3IDA1IDAwIDE1IDVDIDREIDMzIDMy
IDM4IDA1IDAwICAuXE0zMjcuLi5cTTMyOC4uCiAgICAwMjcwOiAxNSA1QyA0RCAzMiAzNyAzNiAw
OCAwMCAxNSA1QyA0RCAzMiAzNyAzNyAwOCAwMCAgLlxNMjc2Li4uXE0yNzcuLgogICAgMDI4MDog
MTUgNUMgNEQgMzIgMzggMzAgMDUgMDAgMTUgNUMgNEQgMzIgMzkgMzAgMDUgMDAgIC5cTTI4MC4u
LlxNMjkwLi4KICAgIDAyOTA6IDE1IDVDIDREIDMzIDM3IDM4IDA1IDAwIDE1IDVDIDREIDMzIDM3
IDM5IDA1IDAwICAuXE0zNzguLi5cTTM3OS4uCiAgICAwMkEwOiAxNSA1QyA0RCAzMyAzOCAzMCAw
NSAwMCAxNSA1QyA0RCAzMyAzOCAzMSAwNSAwMCAgLlxNMzgwLi4uXE0zODEuLgogICAgMDJCMDog
MTUgNUMgNEQgMzMgMzggMzIgMDUgMDAgMTUgNUMgNEQgMzMgMzggMzMgMDUgMDAgIC5cTTM4Mi4u
LlxNMzgzLi4KICAgIDAyQzA6IDE1IDVDIDREIDMzIDM4IDM0IDA1IDAwIDE1IDVDIDREIDMzIDM4
IDM1IDA1IDAwICAuXE0zODQuLi5cTTM4NS4uCiAgICAwMkQwOiAxNSA1QyA0RCAzMyAzOCAzNiAw
NSAwMCAxNSA1QyA0RCAzMyAzOCAzNyAwNSAwMCAgLlxNMzg2Li4uXE0zODcuLgogICAgMDJFMDog
MTUgNUMgNEQgMzMgMzggMzggMDUgMDAgMTUgNUMgNEQgMzMgMzggMzkgMDUgMDAgIC5cTTM4OC4u
LlxNMzg5Li4KICAgIDAyRjA6IDE1IDVDIDREIDMzIDM5IDMwIDA1IDAwIDE1IDVDIDREIDMzIDM5
IDMxIDA1IDAwICAuXE0zOTAuLi5cTTM5MS4uCiAgICAwMzAwOiAxNSA1QyA0RCAzMyAzOSAzMiAw
NSAwMCAxNSA1QyA0RCAzMyAzMyAzMSAwNSAwMCAgLlxNMzkyLi4uXE0zMzEuLgogICAgMDMxMDog
MTUgNUMgNEQgMzYgMzIgMzAgMDUgMDAgMTUgNUMgNEQgMzQgMzAgMzQgMDMgMDAgIC5cTTYyMC4u
LlxNNDA0Li4KICAgIDAzMjA6IDE1IDVDIDREIDM0IDMwIDM4IDA5IDAwIDE1IDVDIDREIDM0IDMx
IDM0IDA1IDAwICAuXE00MDguLi5cTTQxNC4uCiAgICAwMzMwOiAxNSA1QyA0RCAzNCAzNCAzNCAw
NSAwMCAxNSA1QyA0RCAzNCAzNSAzMyAwNSAwMCAgLlxNNDQ0Li4uXE00NTMuLgogICAgMDM0MDog
MTUgNUMgNEQgMzQgMzUgMzQgMDUgMDAgMTUgNUMgNEQgMzQgMzUgMzUgMDUgMDAgIC5cTTQ1NC4u
LlxNNDU1Li4KICAgIDAzNTA6IDE1IDVDIDREIDM0IDM1IDM2IDA1IDAwIDE1IDVDIDREIDM0IDM1
IDM3IDA1IDAwICAuXE00NTYuLi5cTTQ1Ny4uCiAgICAwMzYwOiAxNSA1QyA0RCAzNCAzNiAzMCAw
OCAwNyAxNSA1QyA0RCAzNCAzNCAzOSAwNSAwMCAgLlxNNDYwLi4uXE00NDkuLgogICAgMDM3MDog
MTUgNUMgNEQgMzQgNDMgMzAgMDUgMDAgMTUgNUMgNEQgMzIgMzMgNDEgMDUgMDAgIC5cTTRDMC4u
LlxNMjNBLi4KICAgIDAzODA6IDE1IDVDIDREIDM0IDQ2IDMwIDA1IDAwIDE1IDVDIDREIDM2IDMx
IDMwIDA1IDAwICAuXE00RjAuLi5cTTYxMC4uCiAgICAwMzkwOiAxNSA1QyA0RCAzMiAzOSA0MSAw
NSAwMCAxNSA1QyA0RCAzNiAzMyAzMSAwNSAwMCAgLlxNMjlBLi4uXE02MzEuLgogICAgMDNBMDog
MTUgNUMgNEQgMzYgMzUgMzIgMDUgMDAgMTUgNUMgNEQgMzAgMzUgMzAgMDYgMDAgIC5cTTY1Mi4u
LlxNMDUwLi4KICAgIDAzQjA6IDE1IDVDIDREIDMwIDM1IDMxIDA2IDAwIDE1IDVDIDREIDMwIDM1
IDMyIDA2IDAwICAuXE0wNTEuLi5cTTA1Mi4uCiAgICAwM0MwOiAxNSA1QyA0RCAzMCAzNSAzMyAw
NiAwMCAxNSA1QyA0RCAzMCAzNSAzNCAwNiAwMCAgLlxNMDUzLi4uXE0wNTQuLgogICAgMDNEMDog
MTUgNUMgNEQgMzAgMzUgMzUgMDYgMDAgMTUgNUMgNEQgMzAgMzUgMzYgMDYgMDAgIC5cTTA1NS4u
LlxNMDU2Li4KICAgIDAzRTA6IDE1IDVDIDREIDMwIDM1IDM3IDA2IDAwIDE1IDVDIDREIDMwIDM1
IDM4IDA2IDAwICAuXE0wNTcuLi5cTTA1OC4uCiAgICAwM0YwOiAxNSA1QyA0RCAzMCAzNSAzOSAw
NiAwMCAxNSA1QyA0RCAzMCAzNiAzMiAwNiAwMCAgLlxNMDU5Li4uXE0wNjIuLgogICAgMDQwMDog
MTUgNUMgNEQgMzAgMzYgMzggMDYgMDAgMTUgNUMgNEQgMzAgMzYgMzkgMDYgMDAgIC5cTTA2OC4u
LlxNMDY5Li4KICAgIDA0MTA6IDE1IDVDIDREIDMwIDM3IDMwIDA2IDAwIDE1IDVDIDREIDMwIDM3
IDMxIDA2IDAwICAuXE0wNzAuLi5cTTA3MS4uCiAgICAwNDIwOiAxNSA1QyA0RCAzMCAzNyAzMiAw
NiAwMCAxNSA1QyA0RCAzMCAzNyAzNCAwNiAwMCAgLlxNMDcyLi4uXE0wNzQuLgogICAgMDQzMDog
MTUgNUMgNEQgMzAgMzcgMzUgMDYgMDAgMTUgNUMgNEQgMzAgMzcgMzYgMDYgMDAgIC5cTTA3NS4u
LlxNMDc2Li4KICAgIDA0NDA6IDE1IDVDIDREIDMwIDM3IDM3IDA2IDAwIDE1IDVDIDREIDMwIDM3
IDM4IDA2IDAwICAuXE0wNzcuLi5cTTA3OC4uCiAgICAwNDUwOiAxNSA1QyA0RCAzMCAzNyAzOSAw
NiAwMCAxNSA1QyA0RCAzMCAzOCAzMCAwNiAwMCAgLlxNMDc5Li4uXE0wODAuLgogICAgMDQ2MDog
MTUgNUMgNEQgMzAgMzggMzEgMDYgMDAgMTUgNUMgNEQgMzEgMzIgMzcgMDYgMDAgIC5cTTA4MS4u
LlxNMTI3Li4KICAgIDA0NzA6IDE1IDVDIDJGIDA0IDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMwIDQ3
IDUwIDMxIDM3ICAuXC8uX1NCX1BDSTBHUDE3CiAgICAwNDgwOiA0MSA0MyA1MCA1RiAwNiAwMCAx
NSA1QyAyRiAwNCA1RiA1MyA0MiA1RiA1MCA0MyAgQUNQXy4uLlwvLl9TQl9QQwogICAgMDQ5MDog
NDkgMzAgNDcgNTAgMzEgMzcgNDEgNUEgNDEgNEMgMDYgMDAgMDggNEQgMzIgMzcgIEkwR1AxN0Fa
QUwuLi5NMjcKICAgIDA0QTA6IDM4IDAxIDA4IDREIDMyIDM3IDM5IDAxIDA4IDREIDMyIDM3IDQx
IDAwIDA4IDREICA4Li5NMjc5Li5NMjdBLi5NCiAgICAwNEIwOiAzMiAzNyA0MiAwMSAwOCA0MSA1
MCA0NyA0NSAwMSAwOCA0MSA0MyA0NyA0NSAwMCAgMjdCLi5BUEdFLi5BQ0dFLgogICAgMDRDMDog
NUIgMDEgNEQgMzIgMzcgNDUgMDAgMTQgNEMgMjggNEQgMzIgMzcgMzYgMDggNEQgIFsuTTI3RS4u
TChNMjc2Lk0KICAgIDA0RDA6IDM0IDM2IDMwIDBEIDQ2IDQ1IDQxIDJEIDQxIDUzIDRDIDJEIDQz
IDcwIDZEIDUwICA0NjAuRkVBLUFTTC1DcG1QCiAgICAwNEUwOiA2RiA3NyA2NSA3MiA0NyA2MSA3
NCA2NSA0RiA2RSAyRCA1MyA3NCA2MSA3MiA3NCAgb3dlckdhdGVPbi1TdGFydAogICAgMDRGMDog
MEEgMDAgMDAgMDAgMDAgMDAgMDAgMDAgNUIgMjMgNEQgMzIgMzcgNDUgRkYgRkYgIC4uLi4uLi4u
WyNNMjdFLi4KICAgIDA1MDA6IDREIDM0IDM2IDMwIDBEIDIwIDIwIDQzIDcwIDZEIDQxIDYzIDcw
IDUwIDcyIDY1ICBNNDYwLiAgQ3BtQWNwUHJlCiAgICAwNTEwOiA3MyA2NSA2RSA3NCA1MyA3NCA2
MSA3NCA2NSAyMCAyMCAyMCAyMCAzRCAyMCAyNSAgc2VudFN0YXRlICAgID0gJQogICAgMDUyMDog
NjQgMEEgMDAgNEQgMzIgMzcgMzggMDAgMDAgMDAgMDAgMDAgNEQgMzQgMzYgMzAgIGQuLk0yNzgu
Li4uLk00NjAKICAgIDA1MzA6IDBEIDIwIDIwIDQzIDcwIDZEIDQxIDdBIDYxIDZDIDY5IDYxIDUw
IDcyIDY1IDczICAuICBDcG1BemFsaWFQcmVzCiAgICAwNTQwOiA2NSA2RSA3NCA1MyA3NCA2MSA3
NCA2NSAyMCAzRCAyMCAyNSA2NCAwQSAwMCA0RCAgZW50U3RhdGUgPSAlZC4uTQogICAgMDU1MDog
MzIgMzcgMzkgMDAgMDAgMDAgMDAgMDAgNEQgMzQgMzYgMzAgMEQgMjAgMjAgNDEgIDI3OS4uLi4u
TTQ2MC4gIEEKICAgIDA1NjA6IDQzIDQ3IDQ1IDIwIDIwIDIwIDIwIDIwIDIwIDIwIDIwIDIwIDIw
IDIwIDIwIDIwICBDR0UgICAgICAgICAgICAgCiAgICAwNTcwOiAyMCAyMCAyMCAyMCAyMCAzRCAy
MCAyNSA2NCAwQSAwMCA0MSA0MyA0NyA0NSAwMCAgICAgICA9ICVkLi5BQ0dFLgogICAgMDU4MDog
MDAgMDAgMDAgMDAgNEQgMzQgMzYgMzAgMEQgMjAgMjAgNDEgNTAgNDcgNDUgMjAgIC4uLi5NNDYw
LiAgQVBHRSAKICAgIDA1OTA6IDIwIDIwIDIwIDIwIDIwIDIwIDIwIDIwIDIwIDIwIDIwIDIwIDIw
IDIwIDIwIDIwICAgICAgICAgICAgICAgICAgCiAgICAwNUEwOiAyMCAzRCAyMCAyNSA2NCAwQSAw
MCA0MSA1MCA0NyA0NSAwMCAwMCAwMCAwMCAwMCAgID0gJWQuLkFQR0UuLi4uLgogICAgMDVCMDog
QTAgM0QgOTIgN0YgNEQgMzIgMzcgMzggNEQgMzIgMzcgMzkgMDAgNEQgMzQgMzYgIC49Li5NMjc4
TTI3OS5NNDYKICAgIDA1QzA6IDMwIDBEIDQ2IDQ1IDQxIDJEIDQxIDUzIDRDIDJEIDQzIDcwIDZE
IDUwIDZGIDc3ICAwLkZFQS1BU0wtQ3BtUG93CiAgICAwNUQwOiA2NSA3MiA0NyA2MSA3NCA2NSA0
RiA2RSAyRCAzMSAyRCA0NSA2RSA2NCAwQSAwMCAgZXJHYXRlT24tMS1FbmQuLgogICAgMDVFMDog
MDAgMDAgMDAgMDAgMDAgMDAgNUIgMjcgNEQgMzIgMzcgNDUgQTQgMDAgQTAgNDggIC4uLi4uLlsn
TTI3RS4uLkgKICAgIDA1RjA6IDEzIDkzIDQxIDQzIDQ3IDQ1IDAxIDcwIDREIDMyIDM0IDM5IDAw
IDAwIDAwIDBDICAuLkFDR0UucE0yNDkuLi4uCiAgICAwNjAwOiBFNCA4QSAwNSAwMCA2NCA3MCAw
QSA2NCA2NSBBMiA0MSAwNSA5MyA2NCAwMCA3MCAgLi4uLmRwLmRlLkEuLmQucAogICAgMDYxMDog
NEQgMzIgMzQgMzkgMDAgMDAgMDAgMEMgRTQgOEEgMDUgMDAgNjQgNzYgNjUgQTAgIE0yNDkuLi4u
Li4uLmR2ZS4KICAgIDA2MjA6IDM3IDkzIDY1IDAwIDREIDM0IDM2IDMwIDBEIDIwIDIwIDU3IDYx
IDY5IDc0IDIwICA3LmUuTTQ2MC4gIFdhaXQgCiAgICAwNjMwOiA0MSA0MyA0QyA0QiAyMCA0MyA2
QyA2RiA2MyA2QiAyMCA1MyA3NCA2MSA3MiA3NCAgQUNMSyBDbG9jayBTdGFydAogICAgMDY0MDog
MjAgNzMgNzQgNjEgNzQgNzUgNzMgMjAgNzQgNjkgNkQgNjUgNkYgNzUgNzQgMDAgICBzdGF0dXMg
dGltZW91dC4KICAgIDA2NTA6IDAwIDAwIDAwIDAwIDAwIDAwIEE1IDVCIDIxIDBBIDYzIEEwIDQy
IDA5IDkzIDY0ICAuLi4uLi4uWyEuYy5CLi5kCiAgICAwNjYwOiAwMSA0RCAzMiAzNSAzMCAwMCAw
MCAwMCAwQyBFNCA4QSAwNSAwMCAwMCA0RCAzMiAgLk0yNTAuLi4uLi4uLi5NMgogICAgMDY3MDog
MzUgMzAgMDAgMDAgMDAgMEMgRTAgOEEgMDUgMDAgMEEgQzggNEQgMzIgMzUgMzAgIDUwLi4uLi4u
Li4uLk0yNTAKICAgIDA2ODA6IDAwIDAwIDAwIDBDIDMwIDhBIDA1IDAwIDBBIDAzIDcwIDREIDMy
IDM0IDM5IDAwICAuLi4uMC4uLi4ucE0yNDkuCiAgICAwNjkwOiAwMCAwMCAwQyBFNCA4QSAwNSAw
MCA2NCA3MCAwQSA2NCA2NSBBMiA0MSAwNSA5MyAgLi4uLi4uLmRwLmRlLkEuLgogICAgMDZBMDog
NjQgMDAgNzAgNEQgMzIgMzQgMzkgMDAgMDAgMDAgMEMgRTQgOEEgMDUgMDAgNjQgIGQucE0yNDku
Li4uLi4uLmQKICAgIDA2QjA6IDc2IDY1IEEwIDM3IDkzIDY1IDAwIDREIDM0IDM2IDMwIDBEIDIw
IDIwIDU3IDYxICB2ZS43LmUuTTQ2MC4gIFdhCiAgICAwNkMwOiA2OSA3NCAyMCA0MSA0MyA0QyA0
QiAyMCA0MyA2QyA2RiA2MyA2QiAyMCA1MyA3NCAgaXQgQUNMSyBDbG9jayBTdAogICAgMDZEMDog
NjEgNzIgNzQgMjAgNzMgNzQgNjEgNzQgNzUgNzMgMjAgNzQgNjkgNkQgNjUgNkYgIGFydCBzdGF0
dXMgdGltZW8KICAgIDA2RTA6IDc1IDc0IDAwIDAwIDAwIDAwIDAwIDAwIDAwIEE1IDVCIDIxIDBB
IDYzIEExIDM4ICB1dC4uLi4uLi4uWyEuYy44CiAgICAwNkYwOiA0RCAzNCAzNiAzMCAwRCA0NiA0
NSA0MSAyRCA0MSA1MyA0QyAyRCA0MyA3MCA2RCAgTTQ2MC5GRUEtQVNMLUNwbQogICAgMDcwMDog
NTAgNkYgNzcgNjUgNzIgNDcgNjEgNzQgNjUgNEYgNkUgMkQgNkQgNkQgNDEgNDMgIFBvd2VyR2F0
ZU9uLW1tQUMKICAgIDA3MTA6IDUwIDVGIDUyIDQ1IDUzIDUwIDVGIDUyIDQ1IDQ3IDIwIDNEIDIw
IDI1IDY0IDBBICBQX1JFU1BfUkVHID0gJWQuCiAgICAwNzIwOiAwMCA2NCAwMCAwMCAwMCAwMCAw
MCA0RCAzNCAzNiAzMCAwRCA0NiA0NSA0MSAyRCAgLmQuLi4uLk00NjAuRkVBLQogICAgMDczMDog
NDEgNTMgNEMgMkQgNDMgNzAgNkQgNTAgNkYgNzcgNjUgNzIgNDcgNjEgNzQgNjUgIEFTTC1DcG1Q
b3dlckdhdGUKICAgIDA3NDA6IDRGIDZFIDJEIDQ1IDZFIDY0IDBBIDAwIDAwIDAwIDAwIDAwIDAw
IDAwIDVCIDI3ICBPbi1FbmQuLi4uLi4uLlsnCiAgICAwNzUwOiA0RCAzMiAzNyA0NSAxNCA0OSAy
OSA0RCAzMiAzNyAzNyAwOCA0RCAzNCAzNiAzMCAgTTI3RS5JKU0yNzcuTTQ2MAogICAgMDc2MDog
MEQgNDYgNDUgNDEgMkQgNDEgNTMgNEMgMkQgNDMgNzAgNkQgNTAgNkYgNzcgNjUgIC5GRUEtQVNM
LUNwbVBvd2UKICAgIDA3NzA6IDcyIDQ3IDYxIDc0IDY1IDRGIDY2IDY2IDJEIDUzIDc0IDYxIDcy
IDc0IDBBIDAwICByR2F0ZU9mZi1TdGFydC4uCiAgICAwNzgwOiAwMCAwMCAwMCAwMCAwMCAwMCA1
QiAyMyA0RCAzMiAzNyA0NSBGRiBGRiA0RCAzNCAgLi4uLi4uWyNNMjdFLi5NNAogICAgMDc5MDog
MzYgMzAgMEQgMjAgMjAgNDMgNzAgNkQgNDEgNjMgNzAgNTAgNzIgNjUgNzMgNjUgIDYwLiAgQ3Bt
QWNwUHJlc2UKICAgIDA3QTA6IDZFIDc0IDUzIDc0IDYxIDc0IDY1IDIwIDIwIDIwIDIwIDNEIDIw
IDI1IDY0IDBBICBudFN0YXRlICAgID0gJWQuCiAgICAwN0IwOiAwMCA0RCAzMiAzNyAzOCAwMCAw
MCAwMCAwMCAwMCA0RCAzNCAzNiAzMCAwRCAyMCAgLk0yNzguLi4uLk00NjAuIAogICAgMDdDMDog
MjAgNDMgNzAgNkQgNDEgN0EgNjEgNkMgNjkgNjEgNTAgNzIgNjUgNzMgNjUgNkUgICBDcG1BemFs
aWFQcmVzZW4KICAgIDA3RDA6IDc0IDUzIDc0IDYxIDc0IDY1IDIwIDNEIDIwIDI1IDY0IDBBIDAw
IDREIDMyIDM3ICB0U3RhdGUgPSAlZC4uTTI3CiAgICAwN0UwOiAzOSAwMCAwMCAwMCAwMCAwMCA0
RCAzNCAzNiAzMCAwRCAyMCAyMCA0MSA1MCA0NyAgOS4uLi4uTTQ2MC4gIEFQRwogICAgMDdGMDog
NDUgMjAgMjAgMjAgMjAgMjAgMjAgMjAgMjAgMjAgMjAgMjAgMjAgMjAgMjAgMjAgIEUgICAgICAg
ICAgICAgICAKICAgIDA4MDA6IDIwIDIwIDIwIDNEIDIwIDI1IDY0IDBBIDAwIDQxIDUwIDQ3IDQ1
IDAwIDAwIDAwICAgICA9ICVkLi5BUEdFLi4uCiAgICAwODEwOiAwMCAwMCA0RCAzNCAzNiAzMCAw
RCAyMCAyMCA0MSA0MyA0NyA0NSAyMCAyMCAyMCAgLi5NNDYwLiAgQUNHRSAgIAogICAgMDgyMDog
MjAgMjAgMjAgMjAgMjAgMjAgMjAgMjAgMjAgMjAgMjAgMjAgMjAgMjAgMjAgM0QgICAgICAgICAg
ICAgICAgID0KICAgIDA4MzA6IDIwIDI1IDY0IDBBIDAwIDQxIDQzIDQ3IDQ1IDAwIDAwIDAwIDAw
IDAwIEEwIDQyICAgJWQuLkFDR0UuLi4uLi5CCiAgICAwODQwOiAwNCA5MiA5MCA5MyA0RCAzMiAz
NyAzOCAwMCA5MyA0RCAzMiAzNyAzOSAwMCA0RCAgLi4uLk0yNzguLk0yNzkuTQogICAgMDg1MDog
MzQgMzYgMzAgMEQgNDYgNDUgNDEgMkQgNDEgNTMgNEMgMkQgNDMgNzAgNkQgNTAgIDQ2MC5GRUEt
QVNMLUNwbVAKICAgIDA4NjA6IDZGIDc3IDY1IDcyIDQ3IDYxIDc0IDY1IDRGIDY2IDY2IDJEIDMx
IDJEIDQ1IDZFICBvd2VyR2F0ZU9mZi0xLUVuCiAgICAwODcwOiA2NCAwQSAwMCAwMCAwMCAwMCAw
MCAwMCAwMCA1QiAyNyA0RCAzMiAzNyA0NSBBNCAgZC4uLi4uLi4uWydNMjdFLgogICAgMDg4MDog
MDAgQTAgNEUgMTMgOTMgNDEgNDMgNDcgNDUgMDEgNzAgNEQgMzIgMzQgMzkgMDAgIC4uTi4uQUNH
RS5wTTI0OS4KICAgIDA4OTA6IDAwIDAwIDBDIEU0IDhBIDA1IDAwIDY0IDcwIDBBIDY0IDY1IEEy
IDQxIDA1IDkzICAuLi4uLi4uZHAuZGUuQS4uCiAgICAwOEEwOiA2NCAwMCA3MCA0RCAzMiAzNCAz
OSAwMCAwMCAwMCAwQyBFNCA4QSAwNSAwMCA2NCAgZC5wTTI0OS4uLi4uLi4uZAogICAgMDhCMDog
NzYgNjUgQTAgMzcgOTMgNjUgMDAgNEQgMzQgMzYgMzAgMEQgMjAgMjAgNTcgNjEgIHZlLjcuZS5N
NDYwLiAgV2EKICAgIDA4QzA6IDY5IDc0IDIwIDQxIDQzIDRDIDRCIDIwIDQzIDZDIDZGIDYzIDZC
IDIwIDUzIDc0ICBpdCBBQ0xLIENsb2NrIFN0CiAgICAwOEQwOiA2MSA3MiA3NCAyMCA3MyA3NCA2
MSA3NCA3NSA3MyAyMCA3NCA2OSA2RCA2NSA2RiAgYXJ0IHN0YXR1cyB0aW1lbwogICAgMDhFMDog
NzUgNzQgMDAgMDAgMDAgMDAgMDAgMDAgMDAgQTUgNUIgMjEgMEEgNjMgQTAgNDggIHV0Li4uLi4u
Li5bIS5jLkgKICAgIDA4RjA6IDA5IDkzIDY0IDAxIDREIDMyIDM1IDMwIDAwIDAwIDAwIDBDIEU0
IDhBIDA1IDAwICAuLmQuTTI1MC4uLi4uLi4uCiAgICAwOTAwOiAwMCA0RCAzMiAzNSAzMCAwMCAw
MCAwMCAwQyBFMCA4QSAwNSAwMCAwMCA0RCAzMiAgLk0yNTAuLi4uLi4uLi5NMgogICAgMDkxMDog
MzUgMzAgMDAgMDAgMDAgMEMgMzAgOEEgMDUgMDAgMEEgMDMgNzAgNEQgMzIgMzQgIDUwLi4uLjAu
Li4uLnBNMjQKICAgIDA5MjA6IDM5IDAwIDAwIDAwIDBDIEU0IDhBIDA1IDAwIDY0IDcwIDBBIDY0
IDY1IEEyIDQ4ICA5Li4uLi4uLi5kcC5kZS5ICiAgICAwOTMwOiAwNSA5MyA2NCAwMCA3MCA0RCAz
MiAzNCAzOSAwMCAwMCAwMCAwQyBFNCA4QSAwNSAgLi5kLnBNMjQ5Li4uLi4uLgogICAgMDk0MDog
MDAgNjQgNzYgNjUgQTAgM0UgOTMgNjUgMDAgNEQgMzQgMzYgMzAgMEQgMjAgMjAgIC5kdmUuPi5l
Lk00NjAuICAKICAgIDA5NTA6IDU3IDYxIDY5IDc0IDIwIDZEIDZEIDUyIDUzIDREIDU1IDVGIDUw
IDQ3IDQ2IDUzICBXYWl0IG1tUlNNVV9QR0ZTCiAgICAwOTYwOiA0RCA1RiA1MyA1NCA0MSA1NCA1
NSA1MyA1RiA0MSA0MyA1MCAyMCA3MyA3NCA2MSAgTV9TVEFUVVNfQUNQIHN0YQogICAgMDk3MDog
NzQgNzUgNzMgMjAgNzQgNjkgNkQgNjUgNkYgNzUgNzQgMDAgMDAgMDAgMDAgMDAgIHR1cyB0aW1l
b3V0Li4uLi4KICAgIDA5ODA6IDAwIDAwIEE1IDVCIDIxIDBBIDYzIEExIDM4IDREIDM0IDM2IDMw
IDBEIDQ2IDQ1ICAuLi5bIS5jLjhNNDYwLkZFCiAgICAwOTkwOiA0MSAyRCA0MSA1MyA0QyAyRCA0
MyA3MCA2RCA1MCA2RiA3NyA2NSA3MiA0NyA2MSAgQS1BU0wtQ3BtUG93ZXJHYQogICAgMDlBMDog
NzQgNjUgNEYgNkUgMkQgNkQgNkQgNDEgNDMgNTAgNUYgNTIgNDUgNTMgNTAgNUYgIHRlT24tbW1B
Q1BfUkVTUF8KICAgIDA5QjA6IDUyIDQ1IDQ3IDIwIDNEIDIwIDI1IDY0IDBBIDAwIDY0IDAwIDAw
IDAwIDAwIDAwICBSRUcgPSAlZC4uZC4uLi4uCiAgICAwOUMwOiA0RCAzNCAzNiAzMCAwRCA0NiA0
NSA0MSAyRCA0MSA1MyA0QyAyRCA0MyA3MCA2RCAgTTQ2MC5GRUEtQVNMLUNwbQogICAgMDlEMDog
NTAgNkYgNzcgNjUgNzIgNDcgNjEgNzQgNjUgNEYgNjYgNjYgMkQgNDUgNkUgNjQgIFBvd2VyR2F0
ZU9mZi1FbmQKICAgIDA5RTA6IDBBIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDVCIDI3IDREIDMyIDM3
IDQ1IDEwIDREICAuLi4uLi4uLlsnTTI3RS5NCiAgICAwOUYwOiAwQiA1QyAyRiAwNCA1RiA1MyA0
MiA1RiA1MCA0MyA0OSAzMCA0NyA1MCAzMSAzNyAgLlwvLl9TQl9QQ0kwR1AxNwogICAgMEEwMDog
NDEgNDMgNTAgNUYgMTQgNDMgMDUgNUYgNTAgNTMgMzAgMDAgNEQgMzQgMzYgMzAgIEFDUF8uQy5f
UFMwLk00NjAKICAgIDBBMTA6IDBEIDQ2IDQ1IDQxIDJEIDQxIDUzIDRDIDJEIDVDIDVGIDUzIDQy
IDJFIDUwIDQzICAuRkVBLUFTTC1cX1NCLlBDCiAgICAwQTIwOiA0OSAzMCAyRSA1MCA0MiA0MyAy
RSA0MSA0MyA1MCAyRSA1RiA1MCA1MyAzMCAyMCAgSTAuUEJDLkFDUC5fUFMwIAogICAgMEEzMDog
NDMgNzAgNkQgNDEgNjMgNzAgNTAgNzIgNjUgNzMgNjUgNkUgNzQgNTMgNzQgNjEgIENwbUFjcFBy
ZXNlbnRTdGEKICAgIDBBNDA6IDc0IDY1IDIwIDNEIDIwIDMxIDBBIDAwIDAwIDAwIDAwIDAwIDAw
IDAwIDcwIDAxICB0ZSA9IDEuLi4uLi4uLnAuCiAgICAwQTUwOiA0RCAzMiAzNyAzOCA0RCAzMiAz
NyAzNiAxNCA0MyAwNSA1RiA1MCA1MyAzMyAwMCAgTTI3OE0yNzYuQy5fUFMzLgogICAgMEE2MDog
NEQgMzQgMzYgMzAgMEQgNDYgNDUgNDEgMkQgNDEgNTMgNEMgMkQgNUMgNUYgNTMgIE00NjAuRkVB
LUFTTC1cX1MKICAgIDBBNzA6IDQyIDJFIDUwIDQzIDQ5IDMwIDJFIDUwIDQyIDQzIDJFIDQxIDQz
IDUwIDJFIDVGICBCLlBDSTAuUEJDLkFDUC5fCiAgICAwQTgwOiA1MCA1MyAzMyAyMCA0MyA3MCA2
RCA0MSA2MyA3MCA1MCA3MiA2NSA3MyA2NSA2RSAgUFMzIENwbUFjcFByZXNlbgogICAgMEE5MDog
NzQgNTMgNzQgNjEgNzQgNjUgMjAgM0QgMjAgMzAgMEEgMDAgMDAgMDAgMDAgMDAgIHRTdGF0ZSA9
IDAuLi4uLi4KICAgIDBBQTA6IDAwIDAwIDcwIDAwIDREIDMyIDM3IDM4IDREIDMyIDM3IDM3IDEw
IDQ1IDBDIDVDICAuLnAuTTI3OE0yNzcuRS5cCiAgICAwQUIwOiAyRiAwNCA1RiA1MyA0MiA1RiA1
MCA0MyA0OSAzMCA0NyA1MCAzMSAzNyA0MSA1QSAgLy5fU0JfUENJMEdQMTdBWgogICAgMEFDMDog
NDEgNEMgMTQgNDcgMDUgNUYgNTAgNTMgMzAgMDAgNEQgMzQgMzYgMzAgMEQgNDYgIEFMLkcuX1BT
MC5NNDYwLkYKICAgIDBBRDA6IDQ1IDQxIDJEIDQxIDUzIDRDIDJEIDVDIDVGIDUzIDQyIDJFIDUw
IDQzIDQ5IDMwICBFQS1BU0wtXF9TQi5QQ0kwCiAgICAwQUUwOiAyRSA1MCA0MiA0MyAyRSA0MSA1
QSA0MSA0QyAyRSA1RiA1MCA1MyAzMCAyMCA0MyAgLlBCQy5BWkFMLl9QUzAgQwogICAgMEFGMDog
NzAgNkQgNDEgN0EgNjEgNkMgNjkgNjEgNTAgNzIgNjUgNzMgNjUgNkUgNzQgNTMgIHBtQXphbGlh
UHJlc2VudFMKICAgIDBCMDA6IDc0IDYxIDc0IDY1IDIwIDNEIDIwIDMxIDBBIDAwIDAwIDAwIDAw
IDAwIDAwIDAwICB0YXRlID0gMS4uLi4uLi4uCiAgICAwQjEwOiA3MCAwMSA0RCAzMiAzNyAzOSA0
RCAzMiAzNyAzNiAxNCA0NyAwNSA1RiA1MCA1MyAgcC5NMjc5TTI3Ni5HLl9QUwogICAgMEIyMDog
MzMgMDAgNEQgMzQgMzYgMzAgMEQgNDYgNDUgNDEgMkQgNDEgNTMgNEMgMkQgNUMgIDMuTTQ2MC5G
RUEtQVNMLVwKICAgIDBCMzA6IDVGIDUzIDQyIDJFIDUwIDQzIDQ5IDMwIDJFIDUwIDQyIDQzIDJF
IDQxIDVBIDQxICBfU0IuUENJMC5QQkMuQVpBCiAgICAwQjQwOiA0QyAyRSA1RiA1MCA1MyAzMyAy
MCA0MyA3MCA2RCA0MSA3QSA2MSA2QyA2OSA2MSAgTC5fUFMzIENwbUF6YWxpYQogICAgMEI1MDog
NTAgNzIgNjUgNzMgNjUgNkUgNzQgNTMgNzQgNjEgNzQgNjUgMjAgM0QgMjAgMzAgIFByZXNlbnRT
dGF0ZSA9IDAKICAgIDBCNjA6IDBBIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDcwIDAwIDREIDMyIDM3
IDM5IDREIDMyICAuLi4uLi4uLnAuTTI3OU0yCiAgICAwQjcwOiAzNyAzNyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNzcKClNTRFQgQCAweDAwMDAwMDAwMDAwMDAw
MDAKICAgIDAwMDA6IDUzIDUzIDQ0IDU0IDQ4IDI0IDAwIDAwIDAyIEUyIDQxIDREIDQ0IDAwIDAw
IDAwICBTU0RUSCQuLi4uQU1ELi4uCiAgICAwMDEwOiA0NyA1MCA1MCA1RiA1MCA0RCA0NSA1RiAw
MSAwMCAwMCAwMCA0OSA0RSA1NCA0QyAgR1BQX1BNRV8uLi4uSU5UTAogICAgMDAyMDogMzEgMDMg
MjMgMjAgQTAgNDggNjAgMDAgMTUgNUMgNEQgMzAgMzEgMzcgMDggMDYgIDEuIyAuSGAuLlxNMDE3
Li4KICAgIDAwMzA6IDE1IDVDIDREIDMwIDMxIDM4IDA4IDA3IDE1IDVDIDREIDMxIDMxIDM1IDAz
IDAwICAuXE0wMTguLi5cTTExNS4uCiAgICAwMDQwOiAxNSA1QyA0RCAzMSAzMSAzNiAwRSAwMCAx
NSA1QyA0RCAzMSAzMSAzNyAwRSAwMCAgLlxNMTE2Li4uXE0xMTcuLgogICAgMDA1MDogMTUgNUMg
NEQgMzEgMzEgMzggMEUgMDAgMTUgNUMgNEQgMzEgMzEgMzkgMEUgMDAgIC5cTTExOC4uLlxNMTE5
Li4KICAgIDAwNjA6IDE1IDVDIDREIDMxIDMyIDMwIDBFIDAwIDE1IDVDIDREIDMwIDMzIDM3IDA2
IDAwICAuXE0xMjAuLi5cTTAzNy4uCiAgICAwMDcwOiAxNSA1QyA0RCAzMiAzMiAzNyAwNiAwMCAx
NSA1QyA0RCAzMyAzMiAzOSAwNiAwMCAgLlxNMjI3Li4uXE0zMjkuLgogICAgMDA4MDogMTUgNUMg
NEQgMzMgMzIgNDEgMDYgMDAgMTUgNUMgNEQgMzMgMzIgNDIgMDYgMDAgIC5cTTMyQS4uLlxNMzJC
Li4KICAgIDAwOTA6IDE1IDVDIDREIDMzIDMyIDQzIDA2IDAwIDE1IDVDIDREIDMzIDMzIDMwIDA2
IDAwICAuXE0zMkMuLi5cTTMzMC4uCiAgICAwMEEwOiAxNSA1QyA0RCAzMCAzOCAzMiAwNSAwMCAx
NSA1QyA0RCAzMCAzOCAzMyAwNSAwMCAgLlxNMDgyLi4uXE0wODMuLgogICAgMDBCMDogMTUgNUMg
NEQgMzAgMzggMzQgMDUgMDAgMTUgNUMgNEQgMzAgMzggMzUgMDUgMDAgIC5cTTA4NC4uLlxNMDg1
Li4KICAgIDAwQzA6IDE1IDVDIDREIDMyIDMyIDMxIDA1IDAwIDE1IDVDIDREIDMwIDM4IDM2IDA1
IDAwICAuXE0yMjEuLi5cTTA4Ni4uCiAgICAwMEQwOiAxNSA1QyA0RCAzMiAzMiAzOSAwNSAwMCAx
NSA1QyA0RCAzMiAzMyAzMSAwNSAwMCAgLlxNMjI5Li4uXE0yMzEuLgogICAgMDBFMDogMTUgNUMg
NEQgMzIgMzMgMzUgMDUgMDAgMTUgNUMgNEQgMzIgMzMgMzMgMDUgMDAgIC5cTTIzNS4uLlxNMjMz
Li4KICAgIDAwRjA6IDE1IDVDIDREIDMwIDM4IDM3IDA1IDAwIDE1IDVDIDREIDMwIDM4IDM4IDA1
IDAwICAuXE0wODcuLi5cTTA4OC4uCiAgICAwMTAwOiAxNSA1QyA0RCAzMCAzOCAzOSAwNSAwMCAx
NSA1QyA0RCAzMCAzOSAzMCAwNSAwMCAgLlxNMDg5Li4uXE0wOTAuLgogICAgMDExMDogMTUgNUMg
NEQgMzAgMzkgMzEgMDUgMDAgMTUgNUMgNEQgMzAgMzkgMzIgMDUgMDAgIC5cTTA5MS4uLlxNMDky
Li4KICAgIDAxMjA6IDE1IDVDIDREIDMwIDM5IDMzIDA1IDAwIDE1IDVDIDREIDMwIDM5IDM0IDA1
IDAwICAuXE0wOTMuLi5cTTA5NC4uCiAgICAwMTMwOiAxNSA1QyA0RCAzMCAzOSAzNSAwNSAwMCAx
NSA1QyA0RCAzMCAzOSAzNiAwNSAwMCAgLlxNMDk1Li4uXE0wOTYuLgogICAgMDE0MDogMTUgNUMg
NEQgMzAgMzkgMzcgMDUgMDAgMTUgNUMgNEQgMzAgMzkgMzggMDUgMDAgIC5cTTA5Ny4uLlxNMDk4
Li4KICAgIDAxNTA6IDE1IDVDIDREIDMwIDM5IDM5IDA1IDAwIDE1IDVDIDREIDMxIDMwIDMwIDA1
IDAwICAuXE0wOTkuLi5cTTEwMC4uCiAgICAwMTYwOiAxNSA1QyA0RCAzMSAzMCAzMSAwNSAwMCAx
NSA1QyA0RCAzMSAzMCAzMiAwNSAwMCAgLlxNMTAxLi4uXE0xMDIuLgogICAgMDE3MDogMTUgNUMg
NEQgMzEgMzAgMzMgMDUgMDAgMTUgNUMgNEQgMzEgMzAgMzQgMDUgMDAgIC5cTTEwMy4uLlxNMTA0
Li4KICAgIDAxODA6IDE1IDVDIDREIDMxIDMwIDM1IDA1IDAwIDE1IDVDIDREIDMxIDMwIDM2IDA1
IDAwICAuXE0xMDUuLi5cTTEwNi4uCiAgICAwMTkwOiAxNSA1QyA0RCAzMSAzMCAzNyAwNSAwMCAx
NSA1QyA0RCAzMSAzMiAzOCAwNSAwMCAgLlxNMTA3Li4uXE0xMjguLgogICAgMDFBMDogMTUgNUMg
NEQgMzEgMzAgMzggMDUgMDAgMTUgNUMgNEQgMzEgMzAgMzkgMDUgMDAgIC5cTTEwOC4uLlxNMTA5
Li4KICAgIDAxQjA6IDE1IDVDIDREIDMxIDMxIDMwIDA1IDAwIDE1IDVDIDREIDMxIDMyIDMyIDA1
IDAwICAuXE0xMTAuLi5cTTEyMi4uCiAgICAwMUMwOiAxNSA1QyA0RCAzMSAzMyAzMSAwNSAwMCAx
NSA1QyA0RCAzMSAzMyAzMiAwNSAwMCAgLlxNMTMxLi4uXE0xMzIuLgogICAgMDFEMDogMTUgNUMg
NEQgMzIgMzIgMzYgMDUgMDAgMTUgNUMgNEQgMzEgMzMgMzMgMDUgMDAgIC5cTTIyNi4uLlxNMTMz
Li4KICAgIDAxRTA6IDE1IDVDIDREIDMxIDMzIDM0IDA1IDAwIDE1IDVDIDREIDMxIDMzIDM1IDA1
IDAwICAuXE0xMzQuLi5cTTEzNS4uCiAgICAwMUYwOiAxNSA1QyA0RCAzMSAzMyAzNiAwNSAwMCAx
NSA1QyA0RCAzMiAzMiAzMCAwNSAwMCAgLlxNMTM2Li4uXE0yMjAuLgogICAgMDIwMDogMTUgNUMg
NEQgMzAgMzQgMzYgMDEgMDAgMTUgNUMgNEQgMzAgMzQgMzcgMDEgMDAgIC5cTTA0Ni4uLlxNMDQ3
Li4KICAgIDAyMTA6IDE1IDVDIDREIDMwIDM0IDM5IDA4IDAyIDE1IDVDIDREIDMyIDM1IDMxIDA1
IDAwICAuXE0wNDkuLi5cTTI1MS4uCiAgICAwMjIwOiAxNSA1QyA0RCAzMyAzMSAzMCAwNSAwMCAx
NSA1QyA0RCAzMyAzMSA0MyAwNSAwMCAgLlxNMzEwLi4uXE0zMUMuLgogICAgMDIzMDogMTUgNUMg
NEQgMzMgMzIgMzAgMDUgMDAgMTUgNUMgNEQgMzMgMzIgMzEgMDUgMDAgIC5cTTMyMC4uLlxNMzIx
Li4KICAgIDAyNDA6IDE1IDVDIDREIDMzIDMyIDMyIDA1IDAwIDE1IDVDIDREIDMzIDMyIDMzIDA1
IDAwICAuXE0zMjIuLi5cTTMyMy4uCiAgICAwMjUwOiAxNSA1QyA0RCAzMyAzMiAzNCAwNSAwMCAx
NSA1QyA0RCAzMyAzMiAzNSAwNSAwMCAgLlxNMzI0Li4uXE0zMjUuLgogICAgMDI2MDogMTUgNUMg
NEQgMzMgMzIgMzYgMDUgMDAgMTUgNUMgNEQgMzMgMzIgMzcgMDUgMDAgIC5cTTMyNi4uLlxNMzI3
Li4KICAgIDAyNzA6IDE1IDVDIDREIDMzIDMyIDM4IDA1IDAwIDE1IDVDIDREIDMyIDM4IDMwIDA1
IDAwICAuXE0zMjguLi5cTTI4MC4uCiAgICAwMjgwOiAxNSA1QyA0RCAzMiAzOSAzMCAwNSAwMCAx
NSA1QyA0RCAzMyAzNyAzOCAwNSAwMCAgLlxNMjkwLi4uXE0zNzguLgogICAgMDI5MDogMTUgNUMg
NEQgMzMgMzcgMzkgMDUgMDAgMTUgNUMgNEQgMzMgMzggMzAgMDUgMDAgIC5cTTM3OS4uLlxNMzgw
Li4KICAgIDAyQTA6IDE1IDVDIDREIDMzIDM4IDMxIDA1IDAwIDE1IDVDIDREIDMzIDM4IDMyIDA1
IDAwICAuXE0zODEuLi5cTTM4Mi4uCiAgICAwMkIwOiAxNSA1QyA0RCAzMyAzOCAzMyAwNSAwMCAx
NSA1QyA0RCAzMyAzOCAzNCAwNSAwMCAgLlxNMzgzLi4uXE0zODQuLgogICAgMDJDMDogMTUgNUMg
NEQgMzMgMzggMzUgMDUgMDAgMTUgNUMgNEQgMzMgMzggMzYgMDUgMDAgIC5cTTM4NS4uLlxNMzg2
Li4KICAgIDAyRDA6IDE1IDVDIDREIDMzIDM4IDM3IDA1IDAwIDE1IDVDIDREIDMzIDM4IDM4IDA1
IDAwICAuXE0zODcuLi5cTTM4OC4uCiAgICAwMkUwOiAxNSA1QyA0RCAzMyAzOCAzOSAwNSAwMCAx
NSA1QyA0RCAzMyAzOSAzMCAwNSAwMCAgLlxNMzg5Li4uXE0zOTAuLgogICAgMDJGMDogMTUgNUMg
NEQgMzMgMzkgMzEgMDUgMDAgMTUgNUMgNEQgMzMgMzkgMzIgMDUgMDAgIC5cTTM5MS4uLlxNMzky
Li4KICAgIDAzMDA6IDE1IDVDIDREIDMzIDMzIDMxIDA1IDAwIDE1IDVDIDREIDM2IDMyIDMwIDA1
IDAwICAuXE0zMzEuLi5cTTYyMC4uCiAgICAwMzEwOiAxNSA1QyA0RCAzNCAzMCAzNCAwMyAwMCAx
NSA1QyA0RCAzNCAzMCAzOCAwOSAwMCAgLlxNNDA0Li4uXE00MDguLgogICAgMDMyMDogMTUgNUMg
NEQgMzQgMzEgMzQgMDUgMDAgMTUgNUMgNEQgMzQgMzQgMzQgMDUgMDAgIC5cTTQxNC4uLlxNNDQ0
Li4KICAgIDAzMzA6IDE1IDVDIDREIDM0IDM1IDMzIDA1IDAwIDE1IDVDIDREIDM0IDM1IDM0IDA1
IDAwICAuXE00NTMuLi5cTTQ1NC4uCiAgICAwMzQwOiAxNSA1QyA0RCAzNCAzNSAzNSAwNSAwMCAx
NSA1QyA0RCAzNCAzNSAzNiAwNSAwMCAgLlxNNDU1Li4uXE00NTYuLgogICAgMDM1MDogMTUgNUMg
NEQgMzQgMzUgMzcgMDUgMDAgMTUgNUMgNEQgMzQgMzYgMzAgMDggMDcgIC5cTTQ1Ny4uLlxNNDYw
Li4KICAgIDAzNjA6IDE1IDVDIDREIDM0IDM0IDM5IDA1IDAwIDE1IDVDIDREIDM0IDQzIDMwIDA1
IDAwICAuXE00NDkuLi5cTTRDMC4uCiAgICAwMzcwOiAxNSA1QyA0RCAzMiAzMyA0MSAwNSAwMCAx
NSA1QyA0RCAzNCA0NiAzMCAwNSAwMCAgLlxNMjNBLi4uXE00RjAuLgogICAgMDM4MDogMTUgNUMg
NEQgMzYgMzEgMzAgMDUgMDAgMTUgNUMgNEQgMzIgMzkgNDEgMDUgMDAgIC5cTTYxMC4uLlxNMjlB
Li4KICAgIDAzOTA6IDE1IDVDIDREIDM2IDMzIDMxIDA1IDAwIDE1IDVDIDREIDM2IDM1IDMyIDA1
IDAwICAuXE02MzEuLi5cTTY1Mi4uCiAgICAwM0EwOiAxNSA1QyA0RCAzMCAzNSAzMCAwNiAwMCAx
NSA1QyA0RCAzMCAzNSAzMSAwNiAwMCAgLlxNMDUwLi4uXE0wNTEuLgogICAgMDNCMDogMTUgNUMg
NEQgMzAgMzUgMzIgMDYgMDAgMTUgNUMgNEQgMzAgMzUgMzMgMDYgMDAgIC5cTTA1Mi4uLlxNMDUz
Li4KICAgIDAzQzA6IDE1IDVDIDREIDMwIDM1IDM0IDA2IDAwIDE1IDVDIDREIDMwIDM1IDM1IDA2
IDAwICAuXE0wNTQuLi5cTTA1NS4uCiAgICAwM0QwOiAxNSA1QyA0RCAzMCAzNSAzNiAwNiAwMCAx
NSA1QyA0RCAzMCAzNSAzNyAwNiAwMCAgLlxNMDU2Li4uXE0wNTcuLgogICAgMDNFMDogMTUgNUMg
NEQgMzAgMzUgMzggMDYgMDAgMTUgNUMgNEQgMzAgMzUgMzkgMDYgMDAgIC5cTTA1OC4uLlxNMDU5
Li4KICAgIDAzRjA6IDE1IDVDIDREIDMwIDM2IDMyIDA2IDAwIDE1IDVDIDREIDMwIDM2IDM4IDA2
IDAwICAuXE0wNjIuLi5cTTA2OC4uCiAgICAwNDAwOiAxNSA1QyA0RCAzMCAzNiAzOSAwNiAwMCAx
NSA1QyA0RCAzMCAzNyAzMCAwNiAwMCAgLlxNMDY5Li4uXE0wNzAuLgogICAgMDQxMDogMTUgNUMg
NEQgMzAgMzcgMzEgMDYgMDAgMTUgNUMgNEQgMzAgMzcgMzIgMDYgMDAgIC5cTTA3MS4uLlxNMDcy
Li4KICAgIDA0MjA6IDE1IDVDIDREIDMwIDM3IDM0IDA2IDAwIDE1IDVDIDREIDMwIDM3IDM1IDA2
IDAwICAuXE0wNzQuLi5cTTA3NS4uCiAgICAwNDMwOiAxNSA1QyA0RCAzMCAzNyAzNiAwNiAwMCAx
NSA1QyA0RCAzMCAzNyAzNyAwNiAwMCAgLlxNMDc2Li4uXE0wNzcuLgogICAgMDQ0MDogMTUgNUMg
NEQgMzAgMzcgMzggMDYgMDAgMTUgNUMgNEQgMzAgMzcgMzkgMDYgMDAgIC5cTTA3OC4uLlxNMDc5
Li4KICAgIDA0NTA6IDE1IDVDIDREIDMwIDM4IDMwIDA2IDAwIDE1IDVDIDREIDMwIDM4IDMxIDA2
IDAwICAuXE0wODAuLi5cTTA4MS4uCiAgICAwNDYwOiAxNSA1QyA0RCAzMSAzMiAzNyAwNiAwMCAx
NSA1QyA1RiA0MiA0MiA0RSAwMSAwMCAgLlxNMTI3Li4uXF9CQk4uLgogICAgMDQ3MDogMTUgNUMg
MkUgNUYgNTMgNDIgNUYgNTAgNDMgNDkgMzMgMDYgMDAgMTUgNUMgMkYgIC5cLl9TQl9QQ0kzLi4u
XC8KICAgIDA0ODA6IDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMzIDQ3IDUwIDUwIDMwIDA2IDAw
IDE1ICAuX1NCX1BDSTNHUFAwLi4uCiAgICAwNDkwOiA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0
MyA0OSAzMyA0NyA1MCA1MCAzMSAwNiAgXC8uX1NCX1BDSTNHUFAxLgogICAgMDRBMDogMDAgMTUg
NUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAgNDMgNDkgMzMgNDcgNTAgNTAgIC4uXC8uX1NCX1BDSTNH
UFAKICAgIDA0QjA6IDMyIDA2IDAwIDE1IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMz
IDQ3ICAyLi4uXC8uX1NCX1BDSTNHCiAgICAwNEMwOiA1MCA1MCAzMyAwNiAwMCAxNSA1QyAyRiAw
MyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAgUFAzLi4uXC8uX1NCX1BDSQogICAgMDREMDogMzMgNDcg
NTAgNTAgMzQgMDYgMDAgMTUgNUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAgIDNHUFA0Li4uXC8uX1NC
X1AKICAgIDA0RTA6IDQzIDQ5IDMzIDQ3IDUwIDUwIDM1IDA2IDAwIDE1IDVDIDJGIDAzIDVGIDUz
IDQyICBDSTNHUFA1Li4uXC8uX1NCCiAgICAwNEYwOiA1RiA1MCA0MyA0OSAzMyA0NyA1MCA1MCAz
NiAwNiAwMCAxNSA1QyAyRiAwMyA1RiAgX1BDSTNHUFA2Li4uXC8uXwogICAgMDUwMDogNTMgNDIg
NUYgNTAgNDMgNDkgMzMgNDcgNTAgNTAgMzcgMDYgMDAgMTUgNUMgMkYgIFNCX1BDSTNHUFA3Li4u
XC8KICAgIDA1MTA6IDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMzIDQ3IDUwIDUwIDM4IDA2IDAw
IDE1ICAuX1NCX1BDSTNHUFA4Li4uCiAgICAwNTIwOiA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0
MyA0OSAzMyA0NyA1MCA1MCAzOSAwNiAgXC8uX1NCX1BDSTNHUFA5LgogICAgMDUzMDogMDAgMTUg
NUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAgNDMgNDkgMzMgNDcgNTAgNTAgIC4uXC8uX1NCX1BDSTNH
UFAKICAgIDA1NDA6IDQxIDA2IDAwIDE1IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMz
IDQ3ICBBLi4uXC8uX1NCX1BDSTNHCiAgICAwNTUwOiA1MCA1MCA0MiAwNiAwMCAxNSA1QyAyRiAw
MyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAgUFBCLi4uXC8uX1NCX1BDSQogICAgMDU2MDogMzMgNDcg
NTAgNTAgNDMgMDYgMDAgMTUgNUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAgIDNHUFBDLi4uXC8uX1NC
X1AKICAgIDA1NzA6IDQzIDQ5IDMzIDQ3IDUwIDUwIDQ0IDA2IDAwIDE1IDVDIDJGIDAzIDVGIDUz
IDQyICBDSTNHUFBELi4uXC8uX1NCCiAgICAwNTgwOiA1RiA1MCA0MyA0OSAzMyA0NyA1MCA1MCA0
NSAwNiAwMCAxNSA1QyAyRiAwMyA1RiAgX1BDSTNHUFBFLi4uXC8uXwogICAgMDU5MDogNTMgNDIg
NUYgNTAgNDMgNDkgMzMgNDcgNTAgNTAgNDYgMDYgMDAgMTUgNUMgMkYgIFNCX1BDSTNHUFBGLi4u
XC8KICAgIDA1QTA6IDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMzIDQ3IDUwIDUwIDQ3IDA2IDAw
IDE1ICAuX1NCX1BDSTNHUFBHLi4uCiAgICAwNUIwOiA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0
MyA0OSAzMyA0NyA1MCA1MCA0OCAwNiAgXC8uX1NCX1BDSTNHUFBILgogICAgMDVDMDogMDAgMTUg
NUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAgNDMgNDkgMzMgNDcgNTAgMzEgIC4uXC8uX1NCX1BDSTNH
UDEKICAgIDA1RDA6IDM1IDA2IDAwIDE1IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMz
IDQ3ICA1Li4uXC8uX1NCX1BDSTNHCiAgICAwNUUwOiA1MCAzMiAzNSAwNiAwMCAxNSA1QyAyRiAw
MyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAgUDI1Li4uXC8uX1NCX1BDSQogICAgMDVGMDogMzMgNDcg
NTAgMzMgMzUgMDYgMDAgMTUgNUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAgIDNHUDM1Li4uXC8uX1NC
X1AKICAgIDA2MDA6IDQzIDQ5IDMzIDQ3IDUwIDM0IDM1IDA2IDAwIDE1IDVDIDJGIDAzIDVGIDUz
IDQyICBDSTNHUDQ1Li4uXC8uX1NCCiAgICAwNjEwOiA1RiA1MCA0MyA0OSAzMyA0NyA1MCAzMSAz
NyAwNiAwMCAxNSA1QyAyRiAwMyA1RiAgX1BDSTNHUDE3Li4uXC8uXwogICAgMDYyMDogNTMgNDIg
NUYgNTAgNDMgNDkgMzMgNDcgNTAgMzIgMzcgMDYgMDAgMTAgOEEgRTEgIFNCX1BDSTNHUDI3Li4u
Li4KICAgIDA2MzA6IDAxIDVDIDJFIDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMzIDA4IDQ1IDU0IDUw
IDMwICAuXC5fU0JfUENJMy5FVFAwCiAgICAwNjQwOiAwQSA1NSAwOCA0NSA1NCA1MCAzMSAwQSA1
NSAwOCA0NSA1NCA1MCAzMiAwQSA1NSAgLlUuRVRQMS5VLkVUUDIuVQogICAgMDY1MDogMDggNDUg
NTQgNTAgMzMgMEEgNTUgMDggNDUgNTQgNTAgMzQgMEEgNTUgMDggNDUgIC5FVFAzLlUuRVRQNC5V
LkUKICAgIDA2NjA6IDU0IDUwIDM1IDBBIDU1IDA4IDQ1IDU0IDUwIDM2IDBBIDU1IDA4IDQ1IDU0
IDUwICBUUDUuVS5FVFA2LlUuRVRQCiAgICAwNjcwOiAzNyAwQSA1NSAwOCA0NSA1NCA1MCAzOCAw
QSA1NSAwOCA0NSA1NCA1MCAzOSAwQSAgNy5VLkVUUDguVS5FVFA5LgogICAgMDY4MDogNTUgMDgg
NDUgNTQgNTAgNDEgMEEgNTUgMDggNDUgNTQgNTAgNDIgMEEgNTUgMDggIFUuRVRQQS5VLkVUUEIu
VS4KICAgIDA2OTA6IDQ1IDU0IDUwIDQzIDBBIDU1IDA4IDQ1IDU0IDUwIDQ0IDBBIDU1IDA4IDQ1
IDU0ICBFVFBDLlUuRVRQRC5VLkVUCiAgICAwNkEwOiA1MCA0NSAwQSA1NSAwOCA0NSA1NCA1MCA0
NiAwQSA1NSAwOCA0NSA1NCA1MCA0NyAgUEUuVS5FVFBGLlUuRVRQRwogICAgMDZCMDogMEEgNTUg
MDggNDUgNTQgNTAgNDggMEEgNTUgMDggNDUgNTQgMzEgMzUgMEEgNTUgIC5VLkVUUEguVS5FVDE1
LlUKICAgIDA2QzA6IDA4IDQ1IDU0IDMyIDM1IDBBIDU1IDA4IDQ1IDU0IDMzIDM1IDBBIDU1IDA4
IDQ1ICAuRVQyNS5VLkVUMzUuVS5FCiAgICAwNkQwOiA1NCAzNCAzNSAwQSA1NSAwOCA0NSA1NCAz
MSAzNyAwQSA1NSAwOCA0NSA1NCAzMiAgVDQ1LlUuRVQxNy5VLkVUMgogICAgMDZFMDogMzcgMEEg
NTUgMTQgODQgRDYgMDEgNTAgNTAgNEQgNDUgMDAgNEQgMzQgMzYgMzAgIDcuVS4uLi5QUE1FLk00
NjAKICAgIDA2RjA6IDBEIDIwIDIwIDRGIDQ1IDREIDJEIDQxIDUzIDRDIDJEIDVDIDVGIDUzIDQy
IDJFICAuICBPRU0tQVNMLVxfU0IuCiAgICAwNzAwOiA1MCA0MyA0OSAzMyAyRSA1MCA1MCA0RCA0
NSAwQSAwMCAwMCAwMCAwMCAwMCAwMCAgUENJMy5QUE1FLi4uLi4uLgogICAgMDcxMDogMDAgQTAg
NEYgMTggOTIgOTMgNUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAgNDMgNDkgIC4uTy4uLlwvLl9TQl9Q
Q0kKICAgIDA3MjA6IDMzIDQ1IDU0IDUwIDMwIDBBIEZGIDcwIDdBIDREIDMwIDMxIDM3IDVGIDQy
IDQyICAzRVRQMC4ucHpNMDE3X0JCCiAgICAwNzMwOiA0RSAwMSAwMSAwQSA3OCAwMCAwQSAxOCAw
QSAxMCAwMCA1QyAyRiAwMyA1RiA1MyAgTi4uLnguLi4uLi5cLy5fUwogICAgMDc0MDogNDIgNUYg
NTAgNDMgNDkgMzMgNDUgNTQgNTAgMzAgQTAgNDYgMTUgOTEgOTMgNUMgIEJfUENJM0VUUDAuRi4u
LlwKICAgIDA3NTA6IDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMzIDQ1IDU0IDUwIDMwIDAx
IDkzICAvLl9TQl9QQ0kzRVRQMC4uCiAgICAwNzYwOiA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0
MyA0OSAzMyA0NSA1NCA1MCAzMCAwQSAgXC8uX1NCX1BDSTNFVFAwLgogICAgMDc3MDogMDMgQTAg
NEYgMTIgNUIgMTIgNUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAgNDMgNDkgIC4uTy5bLlwvLl9TQl9Q
Q0kKICAgIDA3ODA6IDMzIDQ3IDUwIDUwIDMwIDAwIEEwIDQ5IDA2IDkyIDkzIDREIDM2IDMyIDMw
IDAwICAzR1BQMC4uSS4uLk02MjAuCiAgICAwNzkwOiBBMCA0RiAwNSA5MyA0RCAzMCAzNCAzOSA0
RCAzNiAzMiAzMCAwQSAxMCAwMSBBMCAgLk8uLk0wNDlNNjIwLi4uLgogICAgMDdBMDogNDAgMDUg
OTMgN0IgNEQgMzAgMzQgMzkgNEQgMzYgMzIgMzAgMEEgNTIgMEEgMDIgIEAuLntNMDQ5TTYyMC5S
Li4KICAgIDA3QjA6IDAwIDAwIDREIDM0IDM2IDMwIDBEIDIwIDIwIDIwIDIwIDRFIDZGIDc0IDY5
IDY2ICAuLk00NjAuICAgIE5vdGlmCiAgICAwN0MwOiA3OSAyMCAyOCA1QyA1RiA1MyA0MiAyRSA1
MCA0MyA0OSAzMyAyRSA0NyA1MCA1MCAgeSAoXF9TQi5QQ0kzLkdQUAogICAgMDdEMDogMzAgMkMg
MjAgMzAgNzggMzAgMjkgMEEgMDAgMDAgMDAgMDAgMDAgMDAgMDAgODYgIDAsIDB4MCkuLi4uLi4u
Li4KICAgIDA3RTA6IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMzIDQ3IDUwIDUwIDMw
IDAwICBcLy5fU0JfUENJM0dQUDAuCiAgICAwN0YwOiA0RCAzNCAzNiAzMCAwRCAyMCAyMCAyMCAy
MCA0RSA2RiA3NCA2OSA2NiA3OSAyMCAgTTQ2MC4gICAgTm90aWZ5IAogICAgMDgwMDogMjggNUMg
NUYgNTMgNDIgMkUgNTAgNDMgNDkgMzMgMkUgNDcgNTAgNTAgMzAgMkMgIChcX1NCLlBDSTMuR1BQ
MCwKICAgIDA4MTA6IDIwIDMwIDc4IDMyIDI5IDBBIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDg2IDVD
IDJGICAgMHgyKS4uLi4uLi4uLlwvCiAgICAwODIwOiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAz
MyA0NyA1MCA1MCAzMCAwQSAwMiA1QiAgLl9TQl9QQ0kzR1BQMC4uWwogICAgMDgzMDogMjIgMEEg
NjQgNzAgNEQgMzAgMzEgMzcgNUYgNDIgNDIgNEUgMDEgMDEgMEEgNzggICIuZHBNMDE3X0JCTi4u
LngKICAgIDA4NDA6IDAwIDBBIDIwIDYwIEEwIDRDIDA1IDkyIDkzIDdCIDYwIDBDIDAwIDAwIDAz
IDAwICAuLiBgLkwuLi57YC4uLi4uCiAgICAwODUwOiAwMCAwMCA0RCAzMCAzMSAzOCA1RiA0MiA0
MiA0RSAwMSAwMSAwQSA3OCAwMCAwQSAgLi5NMDE4X0JCTi4uLnguLgogICAgMDg2MDogMjAgNjAg
NzAgNEQgMzAgMzEgMzcgNUYgNDIgNDIgNEUgMDEgMDEgMEEgNzggMDAgICBgcE0wMTdfQkJOLi4u
eC4KICAgIDA4NzA6IDBBIDIwIDYwIEEwIDJEIDkyIDkzIDdCIDYwIDBDIDAwIDAwIDAzIDAwIDAw
IDAwICAuIGAuLS4ue2AuLi4uLi4uCiAgICAwODgwOiA0RCAzMCAzMSAzOCA1RiA0MiA0MiA0RSAw
MSAwMSAwQSA3OCAwMCAwQSAyMCA2MCAgTTAxOF9CQk4uLi54Li4gYAogICAgMDg5MDogNzAgNEQg
MzAgMzEgMzcgNUYgNDIgNDIgNEUgMDEgMDEgMEEgNzggMDAgMEEgMjAgIHBNMDE3X0JCTi4uLngu
LiAKICAgIDA4QTA6IDYwIEEwIDRCIDEyIDkyIDkzIDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQz
IDQ5ICBgLksuLi5cLy5fU0JfUENJCiAgICAwOEIwOiAzMyA0NSA1NCA1MCAzMSAwQSBGRiA3MCA3
QSA0RCAzMCAzMSAzNyA1RiA0MiA0MiAgM0VUUDEuLnB6TTAxN19CQgogICAgMDhDMDogNEUgMDEg
MEEgMDIgMEEgNzggMDAgMEEgMTggMEEgMTAgMDAgNUMgMkYgMDMgNUYgIE4uLi4ueC4uLi4uLlwv
Ll8KICAgIDA4RDA6IDUzIDQyIDVGIDUwIDQzIDQ5IDMzIDQ1IDU0IDUwIDMxIEEwIDQxIDBGIDkx
IDkzICBTQl9QQ0kzRVRQMS5BLi4uCiAgICAwOEUwOiA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0
MyA0OSAzMyA0NSA1NCA1MCAzMSAwMSAgXC8uX1NCX1BDSTNFVFAxLgogICAgMDhGMDogOTMgNUMg
MkYgMDMgNUYgNTMgNDIgNUYgNTAgNDMgNDkgMzMgNDUgNTQgNTAgMzEgIC5cLy5fU0JfUENJM0VU
UDEKICAgIDA5MDA6IDBBIDAzIEEwIDRBIDBDIDVCIDEyIDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUw
IDQzICAuLi5KLlsuXC8uX1NCX1BDCiAgICAwOTEwOiA0OSAzMyA0NyA1MCA1MCAzMSAwMCA0RCAz
NCAzNiAzMCAwRCAyMCAyMCAyMCAyMCAgSTNHUFAxLk00NjAuICAgIAogICAgMDkyMDogNEUgNkYg
NzQgNjkgNjYgNzkgMjAgMjggNUMgNUYgNTMgNDIgMkUgNTAgNDMgNDkgIE5vdGlmeSAoXF9TQi5Q
Q0kKICAgIDA5MzA6IDMzIDJFIDQ3IDUwIDUwIDMxIDJDIDIwIDMwIDc4IDMyIDI5IDBBIDAwIDAw
IDAwICAzLkdQUDEsIDB4MikuLi4uCiAgICAwOTQwOiAwMCAwMCAwMCAwMCA4NiA1QyAyRiAwMyA1
RiA1MyA0MiA1RiA1MCA0MyA0OSAzMyAgLi4uLi5cLy5fU0JfUENJMwogICAgMDk1MDogNDcgNTAg
NTAgMzEgMEEgMDIgNUIgMjIgMEEgNjQgNzAgNEQgMzAgMzEgMzcgNUYgIEdQUDEuLlsiLmRwTTAx
N18KICAgIDA5NjA6IDQyIDQyIDRFIDAxIDBBIDAyIDBBIDc4IDAwIDBBIDIwIDYwIEEwIDQwIDA2
IDkyICBCQk4uLi4ueC4uIGAuQC4uCiAgICAwOTcwOiA5MyA3QiA2MCAwQyAwMCAwMCAwMyAwMCAw
MCAwMCA0RCAzMCAzMSAzOCA1RiA0MiAgLntgLi4uLi4uLk0wMThfQgogICAgMDk4MDogNDIgNEUg
MDEgMEEgMDIgMEEgNzggMDAgMEEgMjAgNjAgNzAgNEQgMzAgMzEgMzcgIEJOLi4uLnguLiBgcE0w
MTcKICAgIDA5OTA6IDVGIDQyIDQyIDRFIDAxIDBBIDAyIDBBIDc4IDAwIDBBIDIwIDYwIEEwIDJG
IDkyICBfQkJOLi4uLnguLiBgLi8uCiAgICAwOUEwOiA5MyA3QiA2MCAwQyAwMCAwMCAwMyAwMCAw
MCAwMCA0RCAzMCAzMSAzOCA1RiA0MiAgLntgLi4uLi4uLk0wMThfQgogICAgMDlCMDogNDIgNEUg
MDEgMEEgMDIgMEEgNzggMDAgMEEgMjAgNjAgNzAgNEQgMzAgMzEgMzcgIEJOLi4uLnguLiBgcE0w
MTcKICAgIDA5QzA6IDVGIDQyIDQyIDRFIDAxIDBBIDAyIDBBIDc4IDAwIDBBIDIwIDYwIEEwIDRC
IDEyICBfQkJOLi4uLnguLiBgLksuCiAgICAwOUQwOiA5MiA5MyA1QyAyRiAwMyA1RiA1MyA0MiA1
RiA1MCA0MyA0OSAzMyA0NSA1NCA1MCAgLi5cLy5fU0JfUENJM0VUUAogICAgMDlFMDogMzIgMEEg
RkYgNzAgN0EgNEQgMzAgMzEgMzcgNUYgNDIgNDIgNEUgMDEgMEEgMDMgIDIuLnB6TTAxN19CQk4u
Li4KICAgIDA5RjA6IDBBIDc4IDAwIDBBIDE4IDBBIDEwIDAwIDVDIDJGIDAzIDVGIDUzIDQyIDVG
IDUwICAueC4uLi4uLlwvLl9TQl9QCiAgICAwQTAwOiA0MyA0OSAzMyA0NSA1NCA1MCAzMiBBMCA0
MSAwRiA5MSA5MyA1QyAyRiAwMyA1RiAgQ0kzRVRQMi5BLi4uXC8uXwogICAgMEExMDogNTMgNDIg
NUYgNTAgNDMgNDkgMzMgNDUgNTQgNTAgMzIgMDEgOTMgNUMgMkYgMDMgIFNCX1BDSTNFVFAyLi5c
Ly4KICAgIDBBMjA6IDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMzIDQ1IDU0IDUwIDMyIDBBIDAzIEEw
IDRBICBfU0JfUENJM0VUUDIuLi5KCiAgICAwQTMwOiAwQyA1QiAxMiA1QyAyRiAwMyA1RiA1MyA0
MiA1RiA1MCA0MyA0OSAzMyA0NyA1MCAgLlsuXC8uX1NCX1BDSTNHUAogICAgMEE0MDogNTAgMzIg
MDAgNEQgMzQgMzYgMzAgMEQgMjAgMjAgMjAgMjAgNEUgNkYgNzQgNjkgIFAyLk00NjAuICAgIE5v
dGkKICAgIDBBNTA6IDY2IDc5IDIwIDI4IDVDIDVGIDUzIDQyIDJFIDUwIDQzIDQ5IDMzIDJFIDQ3
IDUwICBmeSAoXF9TQi5QQ0kzLkdQCiAgICAwQTYwOiA1MCAzMiAyQyAyMCAzMCA3OCAzMiAyOSAw
QSAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgUDIsIDB4MikuLi4uLi4uLgogICAgMEE3MDogODYgNUMg
MkYgMDMgNUYgNTMgNDIgNUYgNTAgNDMgNDkgMzMgNDcgNTAgNTAgMzIgIC5cLy5fU0JfUENJM0dQ
UDIKICAgIDBBODA6IDBBIDAyIDVCIDIyIDBBIDY0IDcwIDREIDMwIDMxIDM3IDVGIDQyIDQyIDRF
IDAxICAuLlsiLmRwTTAxN19CQk4uCiAgICAwQTkwOiAwQSAwMyAwQSA3OCAwMCAwQSAyMCA2MCBB
MCA0MCAwNiA5MiA5MyA3QiA2MCAwQyAgLi4ueC4uIGAuQC4uLntgLgogICAgMEFBMDogMDAgMDAg
MDMgMDAgMDAgMDAgNEQgMzAgMzEgMzggNUYgNDIgNDIgNEUgMDEgMEEgIC4uLi4uLk0wMThfQkJO
Li4KICAgIDBBQjA6IDAzIDBBIDc4IDAwIDBBIDIwIDYwIDcwIDREIDMwIDMxIDM3IDVGIDQyIDQy
IDRFICAuLnguLiBgcE0wMTdfQkJOCiAgICAwQUMwOiAwMSAwQSAwMyAwQSA3OCAwMCAwQSAyMCA2
MCBBMCAyRiA5MiA5MyA3QiA2MCAwQyAgLi4uLnguLiBgLi8uLntgLgogICAgMEFEMDogMDAgMDAg
MDMgMDAgMDAgMDAgNEQgMzAgMzEgMzggNUYgNDIgNDIgNEUgMDEgMEEgIC4uLi4uLk0wMThfQkJO
Li4KICAgIDBBRTA6IDAzIDBBIDc4IDAwIDBBIDIwIDYwIDcwIDREIDMwIDMxIDM3IDVGIDQyIDQy
IDRFICAuLnguLiBgcE0wMTdfQkJOCiAgICAwQUYwOiAwMSAwQSAwMyAwQSA3OCAwMCAwQSAyMCA2
MCBBMCA0QiAxMiA5MiA5MyA1QyAyRiAgLi4uLnguLiBgLksuLi5cLwogICAgMEIwMDogMDMgNUYg
NTMgNDIgNUYgNTAgNDMgNDkgMzMgNDUgNTQgNTAgMzMgMEEgRkYgNzAgIC5fU0JfUENJM0VUUDMu
LnAKICAgIDBCMTA6IDdBIDREIDMwIDMxIDM3IDVGIDQyIDQyIDRFIDAxIDBBIDA0IDBBIDc4IDAw
IDBBICB6TTAxN19CQk4uLi4ueC4uCiAgICAwQjIwOiAxOCAwQSAxMCAwMCA1QyAyRiAwMyA1RiA1
MyA0MiA1RiA1MCA0MyA0OSAzMyA0NSAgLi4uLlwvLl9TQl9QQ0kzRQogICAgMEIzMDogNTQgNTAg
MzMgQTAgNDEgMEYgOTEgOTMgNUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAgIFRQMy5BLi4uXC8uX1NC
X1AKICAgIDBCNDA6IDQzIDQ5IDMzIDQ1IDU0IDUwIDMzIDAxIDkzIDVDIDJGIDAzIDVGIDUzIDQy
IDVGICBDSTNFVFAzLi5cLy5fU0JfCiAgICAwQjUwOiA1MCA0MyA0OSAzMyA0NSA1NCA1MCAzMyAw
QSAwMyBBMCA0QSAwQyA1QiAxMiA1QyAgUENJM0VUUDMuLi5KLlsuXAogICAgMEI2MDogMkYgMDMg
NUYgNTMgNDIgNUYgNTAgNDMgNDkgMzMgNDcgNTAgNTAgMzMgMDAgNEQgIC8uX1NCX1BDSTNHUFAz
Lk0KICAgIDBCNzA6IDM0IDM2IDMwIDBEIDIwIDIwIDIwIDIwIDRFIDZGIDc0IDY5IDY2IDc5IDIw
IDI4ICA0NjAuICAgIE5vdGlmeSAoCiAgICAwQjgwOiA1QyA1RiA1MyA0MiAyRSA1MCA0MyA0OSAz
MyAyRSA0NyA1MCA1MCAzMyAyQyAyMCAgXF9TQi5QQ0kzLkdQUDMsIAogICAgMEI5MDogMzAgNzgg
MzIgMjkgMEEgMDAgMDAgMDAgMDAgMDAgMDAgMDAgODYgNUMgMkYgMDMgIDB4MikuLi4uLi4uLi5c
Ly4KICAgIDBCQTA6IDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMzIDQ3IDUwIDUwIDMzIDBBIDAyIDVC
IDIyICBfU0JfUENJM0dQUDMuLlsiCiAgICAwQkIwOiAwQSA2NCA3MCA0RCAzMCAzMSAzNyA1RiA0
MiA0MiA0RSAwMSAwQSAwNCAwQSA3OCAgLmRwTTAxN19CQk4uLi4ueAogICAgMEJDMDogMDAgMEEg
MjAgNjAgQTAgNDAgMDYgOTIgOTMgN0IgNjAgMEMgMDAgMDAgMDMgMDAgIC4uIGAuQC4uLntgLi4u
Li4KICAgIDBCRDA6IDAwIDAwIDREIDMwIDMxIDM4IDVGIDQyIDQyIDRFIDAxIDBBIDA0IDBBIDc4
IDAwICAuLk0wMThfQkJOLi4uLnguCiAgICAwQkUwOiAwQSAyMCA2MCA3MCA0RCAzMCAzMSAzNyA1
RiA0MiA0MiA0RSAwMSAwQSAwNCAwQSAgLiBgcE0wMTdfQkJOLi4uLgogICAgMEJGMDogNzggMDAg
MEEgMjAgNjAgQTAgMkYgOTIgOTMgN0IgNjAgMEMgMDAgMDAgMDMgMDAgIHguLiBgLi8uLntgLi4u
Li4KICAgIDBDMDA6IDAwIDAwIDREIDMwIDMxIDM4IDVGIDQyIDQyIDRFIDAxIDBBIDA0IDBBIDc4
IDAwICAuLk0wMThfQkJOLi4uLnguCiAgICAwQzEwOiAwQSAyMCA2MCA3MCA0RCAzMCAzMSAzNyA1
RiA0MiA0MiA0RSAwMSAwQSAwNCAwQSAgLiBgcE0wMTdfQkJOLi4uLgogICAgMEMyMDogNzggMDAg
MEEgMjAgNjAgQTAgNEIgMTIgOTIgOTMgNUMgMkYgMDMgNUYgNTMgNDIgIHguLiBgLksuLi5cLy5f
U0IKICAgIDBDMzA6IDVGIDUwIDQzIDQ5IDMzIDQ1IDU0IDUwIDM0IDBBIEZGIDcwIDdBIDREIDMw
IDMxICBfUENJM0VUUDQuLnB6TTAxCiAgICAwQzQwOiAzNyA1RiA0MiA0MiA0RSAwMSAwQSAwNSAw
QSA3OCAwMCAwQSAxOCAwQSAxMCAwMCAgN19CQk4uLi4ueC4uLi4uLgogICAgMEM1MDogNUMgMkYg
MDMgNUYgNTMgNDIgNUYgNTAgNDMgNDkgMzMgNDUgNTQgNTAgMzQgQTAgIFwvLl9TQl9QQ0kzRVRQ
NC4KICAgIDBDNjA6IDQxIDBGIDkxIDkzIDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMz
IDQ1ICBBLi4uXC8uX1NCX1BDSTNFCiAgICAwQzcwOiA1NCA1MCAzNCAwMSA5MyA1QyAyRiAwMyA1
RiA1MyA0MiA1RiA1MCA0MyA0OSAzMyAgVFA0Li5cLy5fU0JfUENJMwogICAgMEM4MDogNDUgNTQg
NTAgMzQgMEEgMDMgQTAgNEEgMEMgNUIgMTIgNUMgMkYgMDMgNUYgNTMgIEVUUDQuLi5KLlsuXC8u
X1MKICAgIDBDOTA6IDQyIDVGIDUwIDQzIDQ5IDMzIDQ3IDUwIDUwIDM0IDAwIDREIDM0IDM2IDMw
IDBEICBCX1BDSTNHUFA0Lk00NjAuCiAgICAwQ0EwOiAyMCAyMCAyMCAyMCA0RSA2RiA3NCA2OSA2
NiA3OSAyMCAyOCA1QyA1RiA1MyA0MiAgICAgIE5vdGlmeSAoXF9TQgogICAgMENCMDogMkUgNTAg
NDMgNDkgMzMgMkUgNDcgNTAgNTAgMzQgMkMgMjAgMzAgNzggMzIgMjkgIC5QQ0kzLkdQUDQsIDB4
MikKICAgIDBDQzA6IDBBIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDg2IDVDIDJGIDAzIDVGIDUzIDQy
IDVGICAuLi4uLi4uLi5cLy5fU0JfCiAgICAwQ0QwOiA1MCA0MyA0OSAzMyA0NyA1MCA1MCAzNCAw
QSAwMiA1QiAyMiAwQSA2NCA3MCA0RCAgUENJM0dQUDQuLlsiLmRwTQogICAgMENFMDogMzAgMzEg
MzcgNUYgNDIgNDIgNEUgMDEgMEEgMDUgMEEgNzggMDAgMEEgMjAgNjAgIDAxN19CQk4uLi4ueC4u
IGAKICAgIDBDRjA6IEEwIDQwIDA2IDkyIDkzIDdCIDYwIDBDIDAwIDAwIDAzIDAwIDAwIDAwIDRE
IDMwICAuQC4uLntgLi4uLi4uLk0wCiAgICAwRDAwOiAzMSAzOCA1RiA0MiA0MiA0RSAwMSAwQSAw
NSAwQSA3OCAwMCAwQSAyMCA2MCA3MCAgMThfQkJOLi4uLnguLiBgcAogICAgMEQxMDogNEQgMzAg
MzEgMzcgNUYgNDIgNDIgNEUgMDEgMEEgMDUgMEEgNzggMDAgMEEgMjAgIE0wMTdfQkJOLi4uLngu
LiAKICAgIDBEMjA6IDYwIEEwIDJGIDkyIDkzIDdCIDYwIDBDIDAwIDAwIDAzIDAwIDAwIDAwIDRE
IDMwICBgLi8uLntgLi4uLi4uLk0wCiAgICAwRDMwOiAzMSAzOCA1RiA0MiA0MiA0RSAwMSAwQSAw
NSAwQSA3OCAwMCAwQSAyMCA2MCA3MCAgMThfQkJOLi4uLnguLiBgcAogICAgMEQ0MDogNEQgMzAg
MzEgMzcgNUYgNDIgNDIgNEUgMDEgMEEgMDUgMEEgNzggMDAgMEEgMjAgIE0wMTdfQkJOLi4uLngu
LiAKICAgIDBENTA6IDYwIEEwIDRCIDEyIDkyIDkzIDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQz
IDQ5ICBgLksuLi5cLy5fU0JfUENJCiAgICAwRDYwOiAzMyA0NSA1NCA1MCAzNSAwQSBGRiA3MCA3
QSA0RCAzMCAzMSAzNyA1RiA0MiA0MiAgM0VUUDUuLnB6TTAxN19CQgogICAgMEQ3MDogNEUgMDEg
MEEgMDYgMEEgNzggMDAgMEEgMTggMEEgMTAgMDAgNUMgMkYgMDMgNUYgIE4uLi4ueC4uLi4uLlwv
Ll8KICAgIDBEODA6IDUzIDQyIDVGIDUwIDQzIDQ5IDMzIDQ1IDU0IDUwIDM1IEEwIDQxIDBGIDkx
IDkzICBTQl9QQ0kzRVRQNS5BLi4uCiAgICAwRDkwOiA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0
MyA0OSAzMyA0NSA1NCA1MCAzNSAwMSAgXC8uX1NCX1BDSTNFVFA1LgogICAgMERBMDogOTMgNUMg
MkYgMDMgNUYgNTMgNDIgNUYgNTAgNDMgNDkgMzMgNDUgNTQgNTAgMzUgIC5cLy5fU0JfUENJM0VU
UDUKICAgIDBEQjA6IDBBIDAzIEEwIDRBIDBDIDVCIDEyIDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUw
IDQzICAuLi5KLlsuXC8uX1NCX1BDCiAgICAwREMwOiA0OSAzMyA0NyA1MCA1MCAzNSAwMCA0RCAz
NCAzNiAzMCAwRCAyMCAyMCAyMCAyMCAgSTNHUFA1Lk00NjAuICAgIAogICAgMEREMDogNEUgNkYg
NzQgNjkgNjYgNzkgMjAgMjggNUMgNUYgNTMgNDIgMkUgNTAgNDMgNDkgIE5vdGlmeSAoXF9TQi5Q
Q0kKICAgIDBERTA6IDMzIDJFIDQ3IDUwIDUwIDM1IDJDIDIwIDMwIDc4IDMyIDI5IDBBIDAwIDAw
IDAwICAzLkdQUDUsIDB4MikuLi4uCiAgICAwREYwOiAwMCAwMCAwMCAwMCA4NiA1QyAyRiAwMyA1
RiA1MyA0MiA1RiA1MCA0MyA0OSAzMyAgLi4uLi5cLy5fU0JfUENJMwogICAgMEUwMDogNDcgNTAg
NTAgMzUgMEEgMDIgNUIgMjIgMEEgNjQgNzAgNEQgMzAgMzEgMzcgNUYgIEdQUDUuLlsiLmRwTTAx
N18KICAgIDBFMTA6IDQyIDQyIDRFIDAxIDBBIDA2IDBBIDc4IDAwIDBBIDIwIDYwIEEwIDQwIDA2
IDkyICBCQk4uLi4ueC4uIGAuQC4uCiAgICAwRTIwOiA5MyA3QiA2MCAwQyAwMCAwMCAwMyAwMCAw
MCAwMCA0RCAzMCAzMSAzOCA1RiA0MiAgLntgLi4uLi4uLk0wMThfQgogICAgMEUzMDogNDIgNEUg
MDEgMEEgMDYgMEEgNzggMDAgMEEgMjAgNjAgNzAgNEQgMzAgMzEgMzcgIEJOLi4uLnguLiBgcE0w
MTcKICAgIDBFNDA6IDVGIDQyIDQyIDRFIDAxIDBBIDA2IDBBIDc4IDAwIDBBIDIwIDYwIEEwIDJG
IDkyICBfQkJOLi4uLnguLiBgLi8uCiAgICAwRTUwOiA5MyA3QiA2MCAwQyAwMCAwMCAwMyAwMCAw
MCAwMCA0RCAzMCAzMSAzOCA1RiA0MiAgLntgLi4uLi4uLk0wMThfQgogICAgMEU2MDogNDIgNEUg
MDEgMEEgMDYgMEEgNzggMDAgMEEgMjAgNjAgNzAgNEQgMzAgMzEgMzcgIEJOLi4uLnguLiBgcE0w
MTcKICAgIDBFNzA6IDVGIDQyIDQyIDRFIDAxIDBBIDA2IDBBIDc4IDAwIDBBIDIwIDYwIEEwIDRC
IDEyICBfQkJOLi4uLnguLiBgLksuCiAgICAwRTgwOiA5MiA5MyA1QyAyRiAwMyA1RiA1MyA0MiA1
RiA1MCA0MyA0OSAzMyA0NSA1NCA1MCAgLi5cLy5fU0JfUENJM0VUUAogICAgMEU5MDogMzYgMEEg
RkYgNzAgN0EgNEQgMzAgMzEgMzcgNUYgNDIgNDIgNEUgMDEgMEEgMDcgIDYuLnB6TTAxN19CQk4u
Li4KICAgIDBFQTA6IDBBIDc4IDAwIDBBIDE4IDBBIDEwIDAwIDVDIDJGIDAzIDVGIDUzIDQyIDVG
IDUwICAueC4uLi4uLlwvLl9TQl9QCiAgICAwRUIwOiA0MyA0OSAzMyA0NSA1NCA1MCAzNiBBMCA0
MSAwRiA5MSA5MyA1QyAyRiAwMyA1RiAgQ0kzRVRQNi5BLi4uXC8uXwogICAgMEVDMDogNTMgNDIg
NUYgNTAgNDMgNDkgMzMgNDUgNTQgNTAgMzYgMDEgOTMgNUMgMkYgMDMgIFNCX1BDSTNFVFA2Li5c
Ly4KICAgIDBFRDA6IDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMzIDQ1IDU0IDUwIDM2IDBBIDAzIEEw
IDRBICBfU0JfUENJM0VUUDYuLi5KCiAgICAwRUUwOiAwQyA1QiAxMiA1QyAyRiAwMyA1RiA1MyA0
MiA1RiA1MCA0MyA0OSAzMyA0NyA1MCAgLlsuXC8uX1NCX1BDSTNHUAogICAgMEVGMDogNTAgMzYg
MDAgNEQgMzQgMzYgMzAgMEQgMjAgMjAgMjAgMjAgNEUgNkYgNzQgNjkgIFA2Lk00NjAuICAgIE5v
dGkKICAgIDBGMDA6IDY2IDc5IDIwIDI4IDVDIDVGIDUzIDQyIDJFIDUwIDQzIDQ5IDMzIDJFIDQ3
IDUwICBmeSAoXF9TQi5QQ0kzLkdQCiAgICAwRjEwOiA1MCAzNiAyQyAyMCAzMCA3OCAzMiAyOSAw
QSAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgUDYsIDB4MikuLi4uLi4uLgogICAgMEYyMDogODYgNUMg
MkYgMDMgNUYgNTMgNDIgNUYgNTAgNDMgNDkgMzMgNDcgNTAgNTAgMzYgIC5cLy5fU0JfUENJM0dQ
UDYKICAgIDBGMzA6IDBBIDAyIDVCIDIyIDBBIDY0IDcwIDREIDMwIDMxIDM3IDVGIDQyIDQyIDRF
IDAxICAuLlsiLmRwTTAxN19CQk4uCiAgICAwRjQwOiAwQSAwNyAwQSA3OCAwMCAwQSAyMCA2MCBB
MCA0MCAwNiA5MiA5MyA3QiA2MCAwQyAgLi4ueC4uIGAuQC4uLntgLgogICAgMEY1MDogMDAgMDAg
MDMgMDAgMDAgMDAgNEQgMzAgMzEgMzggNUYgNDIgNDIgNEUgMDEgMEEgIC4uLi4uLk0wMThfQkJO
Li4KICAgIDBGNjA6IDA3IDBBIDc4IDAwIDBBIDIwIDYwIDcwIDREIDMwIDMxIDM3IDVGIDQyIDQy
IDRFICAuLnguLiBgcE0wMTdfQkJOCiAgICAwRjcwOiAwMSAwQSAwNyAwQSA3OCAwMCAwQSAyMCA2
MCBBMCAyRiA5MiA5MyA3QiA2MCAwQyAgLi4uLnguLiBgLi8uLntgLgogICAgMEY4MDogMDAgMDAg
MDMgMDAgMDAgMDAgNEQgMzAgMzEgMzggNUYgNDIgNDIgNEUgMDEgMEEgIC4uLi4uLk0wMThfQkJO
Li4KICAgIDBGOTA6IDA3IDBBIDc4IDAwIDBBIDIwIDYwIDcwIDREIDMwIDMxIDM3IDVGIDQyIDQy
IDRFICAuLnguLiBgcE0wMTdfQkJOCiAgICAwRkEwOiAwMSAwQSAwNyAwQSA3OCAwMCAwQSAyMCA2
MCBBMCA0NiAxOSA5MiA5MyA1QyAyRiAgLi4uLnguLiBgLkYuLi5cLwogICAgMEZCMDogMDMgNUYg
NTMgNDIgNUYgNTAgNDMgNDkgMzMgNDUgNTQgNTAgMzcgMEEgRkYgNzAgIC5fU0JfUENJM0VUUDcu
LnAKICAgIDBGQzA6IDdBIDREIDMwIDMxIDM3IDVGIDQyIDQyIDRFIDBBIDAyIDAxIDBBIDc4IDAw
IDBBICB6TTAxN19CQk4uLi4ueC4uCiAgICAwRkQwOiAxOCAwQSAxMCAwMCA1QyAyRiAwMyA1RiA1
MyA0MiA1RiA1MCA0MyA0OSAzMyA0NSAgLi4uLlwvLl9TQl9QQ0kzRQogICAgMEZFMDogNTQgNTAg
MzcgQTAgNEMgMTUgOTEgOTMgNUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAgIFRQNy5MLi4uXC8uX1NC
X1AKICAgIDBGRjA6IDQzIDQ5IDMzIDQ1IDU0IDUwIDM3IDAxIDkzIDVDIDJGIDAzIDVGIDUzIDQy
IDVGICBDSTNFVFA3Li5cLy5fU0JfCiAgICAxMDAwOiA1MCA0MyA0OSAzMyA0NSA1NCA1MCAzNyAw
QSAwMyBBMCA0NSAxMyA1QiAxMiA1QyAgUENJM0VUUDcuLi5FLlsuXAogICAgMTAxMDogMkYgMDMg
NUYgNTMgNDIgNUYgNTAgNDMgNDkgMzMgNDcgNTAgNTAgMzcgMDAgQTAgIC8uX1NCX1BDSTNHUFA3
Li4KICAgIDEwMjA6IDRBIDA2IDkyIDkzIDREIDM2IDMyIDMwIDAwIEEwIDQwIDA2IDkzIDREIDMw
IDM0ICBKLi4uTTYyMC4uQC4uTTA0CiAgICAxMDMwOiAzOSA0RCAzNiAzMiAzMCAwQSAxMCAwQSAw
MiBBMCA0MCAwNSA5MyA3QiA0RCAzMCAgOU02MjAuLi4uLkAuLntNMAogICAgMTA0MDogMzQgMzkg
NEQgMzYgMzIgMzAgMEEgNTIgMEEgMDIgMDAgMDAgNEQgMzQgMzYgMzAgIDQ5TTYyMC5SLi4uLk00
NjAKICAgIDEwNTA6IDBEIDIwIDIwIDIwIDIwIDRFIDZGIDc0IDY5IDY2IDc5IDIwIDI4IDVDIDVG
IDUzICAuICAgIE5vdGlmeSAoXF9TCiAgICAxMDYwOiA0MiAyRSA1MCA0MyA0OSAzMyAyRSA0NyA1
MCA1MCAzNyAyQyAyMCAzMCA3OCAzMCAgQi5QQ0kzLkdQUDcsIDB4MAogICAgMTA3MDogMjkgMEEg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgODYgNUMgMkYgMDMgNUYgNTMgNDIgICkuLi4uLi4uLi5cLy5f
U0IKICAgIDEwODA6IDVGIDUwIDQzIDQ5IDMzIDQ3IDUwIDUwIDM3IDAwIDREIDM0IDM2IDMwIDBE
IDIwICBfUENJM0dQUDcuTTQ2MC4gCiAgICAxMDkwOiAyMCAyMCAyMCA0RSA2RiA3NCA2OSA2NiA3
OSAyMCAyOCA1QyA1RiA1MyA0MiAyRSAgICAgTm90aWZ5IChcX1NCLgogICAgMTBBMDogNTAgNDMg
NDkgMzMgMkUgNDcgNTAgNTAgMzcgMkMgMjAgMzAgNzggMzIgMjkgMEEgIFBDSTMuR1BQNywgMHgy
KS4KICAgIDEwQjA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDg2IDVDIDJGIDAzIDVGIDUzIDQyIDVG
IDUwICAuLi4uLi4uLlwvLl9TQl9QCiAgICAxMEMwOiA0MyA0OSAzMyA0NyA1MCA1MCAzNyAwQSAw
MiA1QiAyMiAwQSA2NCA3MCA0RCAzMCAgQ0kzR1BQNy4uWyIuZHBNMAogICAgMTBEMDogMzEgMzcg
NUYgNDIgNDIgNEUgMEEgMDIgMDEgMEEgNzggMDAgMEEgMjAgNjAgQTAgIDE3X0JCTi4uLi54Li4g
YC4KICAgIDEwRTA6IDQwIDA2IDkyIDkzIDdCIDYwIDBDIDAwIDAwIDAzIDAwIDAwIDAwIDREIDMw
IDMxICBALi4ue2AuLi4uLi4uTTAxCiAgICAxMEYwOiAzOCA1RiA0MiA0MiA0RSAwQSAwMiAwMSAw
QSA3OCAwMCAwQSAyMCA2MCA3MCA0RCAgOF9CQk4uLi4ueC4uIGBwTQogICAgMTEwMDogMzAgMzEg
MzcgNUYgNDIgNDIgNEUgMEEgMDIgMDEgMEEgNzggMDAgMEEgMjAgNjAgIDAxN19CQk4uLi4ueC4u
IGAKICAgIDExMTA6IEEwIDJGIDkyIDkzIDdCIDYwIDBDIDAwIDAwIDAzIDAwIDAwIDAwIDREIDMw
IDMxICAuLy4ue2AuLi4uLi4uTTAxCiAgICAxMTIwOiAzOCA1RiA0MiA0MiA0RSAwQSAwMiAwMSAw
QSA3OCAwMCAwQSAyMCA2MCA3MCA0RCAgOF9CQk4uLi4ueC4uIGBwTQogICAgMTEzMDogMzAgMzEg
MzcgNUYgNDIgNDIgNEUgMEEgMDIgMDEgMEEgNzggMDAgMEEgMjAgNjAgIDAxN19CQk4uLi4ueC4u
IGAKICAgIDExNDA6IEEwIDQxIDEzIDkyIDkzIDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5
IDMzICAuQS4uLlwvLl9TQl9QQ0kzCiAgICAxMTUwOiA0NSA1NCA1MCAzOCAwQSBGRiA3MCA3QSA0
RCAzMCAzMSAzNyA1RiA0MiA0MiA0RSAgRVRQOC4ucHpNMDE3X0JCTgogICAgMTE2MDogMEEgMDIg
MEEgMDIgMEEgNzggMDAgMEEgMTggMEEgMTAgMDAgNUMgMkYgMDMgNUYgIC4uLi4ueC4uLi4uLlwv
Ll8KICAgIDExNzA6IDUzIDQyIDVGIDUwIDQzIDQ5IDMzIDQ1IDU0IDUwIDM4IEEwIDQ2IDBGIDkx
IDkzICBTQl9QQ0kzRVRQOC5GLi4uCiAgICAxMTgwOiA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0
MyA0OSAzMyA0NSA1NCA1MCAzOCAwMSAgXC8uX1NCX1BDSTNFVFA4LgogICAgMTE5MDogOTMgNUMg
MkYgMDMgNUYgNTMgNDIgNUYgNTAgNDMgNDkgMzMgNDUgNTQgNTAgMzggIC5cLy5fU0JfUENJM0VU
UDgKICAgIDExQTA6IDBBIDAzIEEwIDRGIDBDIDVCIDEyIDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUw
IDQzICAuLi5PLlsuXC8uX1NCX1BDCiAgICAxMUIwOiA0OSAzMyA0NyA1MCA1MCAzOCAwMCA0RCAz
NCAzNiAzMCAwRCAyMCAyMCAyMCAyMCAgSTNHUFA4Lk00NjAuICAgIAogICAgMTFDMDogNEUgNkYg
NzQgNjkgNjYgNzkgMjAgMjggNUMgNUYgNTMgNDIgMkUgNTAgNDMgNDkgIE5vdGlmeSAoXF9TQi5Q
Q0kKICAgIDExRDA6IDMzIDJFIDQ3IDUwIDUwIDM4IDJDIDIwIDMwIDc4IDMyIDI5IDBBIDAwIDAw
IDAwICAzLkdQUDgsIDB4MikuLi4uCiAgICAxMUUwOiAwMCAwMCAwMCAwMCA4NiA1QyAyRiAwMyA1
RiA1MyA0MiA1RiA1MCA0MyA0OSAzMyAgLi4uLi5cLy5fU0JfUENJMwogICAgMTFGMDogNDcgNTAg
NTAgMzggMEEgMDIgNUIgMjIgMEEgNjQgNzAgNEQgMzAgMzEgMzcgNUYgIEdQUDguLlsiLmRwTTAx
N18KICAgIDEyMDA6IDQyIDQyIDRFIDBBIDAyIDBBIDAyIDBBIDc4IDAwIDBBIDIwIDYwIEEwIDQ0
IDA2ICBCQk4uLi4uLnguLiBgLkQuCiAgICAxMjEwOiA5MiA5MyA3QiA2MCAwQyAwMCAwMCAwMyAw
MCAwMCAwMCA0RCAzMCAzMSAzOCA1RiAgLi57YC4uLi4uLi5NMDE4XwogICAgMTIyMDogNDIgNDIg
NEUgMEEgMDIgMEEgMDIgMEEgNzggMDAgMEEgMjAgNjAgNzAgNEQgMzAgIEJCTi4uLi4ueC4uIGBw
TTAKICAgIDEyMzA6IDMxIDM3IDVGIDQyIDQyIDRFIDBBIDAyIDBBIDAyIDBBIDc4IDAwIDBBIDIw
IDYwICAxN19CQk4uLi4uLnguLiBgCiAgICAxMjQwOiBBMCAzMSA5MiA5MyA3QiA2MCAwQyAwMCAw
MCAwMyAwMCAwMCAwMCA0RCAzMCAzMSAgLjEuLntgLi4uLi4uLk0wMQogICAgMTI1MDogMzggNUYg
NDIgNDIgNEUgMEEgMDIgMEEgMDIgMEEgNzggMDAgMEEgMjAgNjAgNzAgIDhfQkJOLi4uLi54Li4g
YHAKICAgIDEyNjA6IDREIDMwIDMxIDM3IDVGIDQyIDQyIDRFIDBBIDAyIDBBIDAyIDBBIDc4IDAw
IDBBICBNMDE3X0JCTi4uLi4ueC4uCiAgICAxMjcwOiAyMCA2MCBBMCA0QiAxMiA5MiA5MyA1QyAy
RiAwMyA1RiA1MyA0MiA1RiA1MCA0MyAgIGAuSy4uLlwvLl9TQl9QQwogICAgMTI4MDogNDkgMzMg
NDUgNTQgNTAgMzkgMEEgRkYgNzAgN0EgNEQgMzAgMzEgMzcgNUYgNDIgIEkzRVRQOS4ucHpNMDE3
X0IKICAgIDEyOTA6IDQyIDRFIDBBIDAzIDAxIDBBIDc4IDAwIDBBIDE4IDBBIDEwIDAwIDVDIDJG
IDAzICBCTi4uLi54Li4uLi4uXC8uCiAgICAxMkEwOiA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMyA0
NSA1NCA1MCAzOSBBMCA0MSAwRiA5MSAgX1NCX1BDSTNFVFA5LkEuLgogICAgMTJCMDogOTMgNUMg
MkYgMDMgNUYgNTMgNDIgNUYgNTAgNDMgNDkgMzMgNDUgNTQgNTAgMzkgIC5cLy5fU0JfUENJM0VU
UDkKICAgIDEyQzA6IDAxIDkzIDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMzIDQ1IDU0
IDUwICAuLlwvLl9TQl9QQ0kzRVRQCiAgICAxMkQwOiAzOSAwQSAwMyBBMCA0QSAwQyA1QiAxMiA1
QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCAgOS4uLkouWy5cLy5fU0JfUAogICAgMTJFMDogNDMgNDkg
MzMgNDcgNTAgNTAgMzkgMDAgNEQgMzQgMzYgMzAgMEQgMjAgMjAgMjAgIENJM0dQUDkuTTQ2MC4g
ICAKICAgIDEyRjA6IDIwIDRFIDZGIDc0IDY5IDY2IDc5IDIwIDI4IDVDIDVGIDUzIDQyIDJFIDUw
IDQzICAgTm90aWZ5IChcX1NCLlBDCiAgICAxMzAwOiA0OSAzMyAyRSA0NyA1MCA1MCAzOSAyQyAy
MCAzMCA3OCAzMiAyOSAwQSAwMCAwMCAgSTMuR1BQOSwgMHgyKS4uLgogICAgMTMxMDogMDAgMDAg
MDAgMDAgMDAgODYgNUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAgNDMgNDkgIC4uLi4uLlwvLl9TQl9Q
Q0kKICAgIDEzMjA6IDMzIDQ3IDUwIDUwIDM5IDBBIDAyIDVCIDIyIDBBIDY0IDcwIDREIDMwIDMx
IDM3ICAzR1BQOS4uWyIuZHBNMDE3CiAgICAxMzMwOiA1RiA0MiA0MiA0RSAwQSAwMyAwMSAwQSA3
OCAwMCAwQSAyMCA2MCBBMCA0MCAwNiAgX0JCTi4uLi54Li4gYC5ALgogICAgMTM0MDogOTIgOTMg
N0IgNjAgMEMgMDAgMDAgMDMgMDAgMDAgMDAgNEQgMzAgMzEgMzggNUYgIC4ue2AuLi4uLi4uTTAx
OF8KICAgIDEzNTA6IDQyIDQyIDRFIDBBIDAzIDAxIDBBIDc4IDAwIDBBIDIwIDYwIDcwIDREIDMw
IDMxICBCQk4uLi4ueC4uIGBwTTAxCiAgICAxMzYwOiAzNyA1RiA0MiA0MiA0RSAwQSAwMyAwMSAw
QSA3OCAwMCAwQSAyMCA2MCBBMCAyRiAgN19CQk4uLi4ueC4uIGAuLwogICAgMTM3MDogOTIgOTMg
N0IgNjAgMEMgMDAgMDAgMDMgMDAgMDAgMDAgNEQgMzAgMzEgMzggNUYgIC4ue2AuLi4uLi4uTTAx
OF8KICAgIDEzODA6IDQyIDQyIDRFIDBBIDAzIDAxIDBBIDc4IDAwIDBBIDIwIDYwIDcwIDREIDMw
IDMxICBCQk4uLi4ueC4uIGBwTTAxCiAgICAxMzkwOiAzNyA1RiA0MiA0MiA0RSAwQSAwMyAwMSAw
QSA3OCAwMCAwQSAyMCA2MCBBMCA0MSAgN19CQk4uLi4ueC4uIGAuQQogICAgMTNBMDogMTMgOTIg
OTMgNUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAgNDMgNDkgMzMgNDUgNTQgIC4uLlwvLl9TQl9QQ0kz
RVQKICAgIDEzQjA6IDUwIDQxIDBBIEZGIDcwIDdBIDREIDMwIDMxIDM3IDVGIDQyIDQyIDRFIDBB
IDAzICBQQS4ucHpNMDE3X0JCTi4uCiAgICAxM0MwOiAwQSAwMiAwQSA3OCAwMCAwQSAxOCAwQSAx
MCAwMCA1QyAyRiAwMyA1RiA1MyA0MiAgLi4ueC4uLi4uLlwvLl9TQgogICAgMTNEMDogNUYgNTAg
NDMgNDkgMzMgNDUgNTQgNTAgNDEgQTAgNDYgMEYgOTEgOTMgNUMgMkYgIF9QQ0kzRVRQQS5GLi4u
XC8KICAgIDEzRTA6IDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMzIDQ1IDU0IDUwIDQxIDAxIDkz
IDVDICAuX1NCX1BDSTNFVFBBLi5cCiAgICAxM0YwOiAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0
OSAzMyA0NSA1NCA1MCA0MSAwQSAwMyAgLy5fU0JfUENJM0VUUEEuLgogICAgMTQwMDogQTAgNEYg
MEMgNUIgMTIgNUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAgNDMgNDkgMzMgIC5PLlsuXC8uX1NCX1BD
STMKICAgIDE0MTA6IDQ3IDUwIDUwIDQxIDAwIDREIDM0IDM2IDMwIDBEIDIwIDIwIDIwIDIwIDRF
IDZGICBHUFBBLk00NjAuICAgIE5vCiAgICAxNDIwOiA3NCA2OSA2NiA3OSAyMCAyOCA1QyA1RiA1
MyA0MiAyRSA1MCA0MyA0OSAzMyAyRSAgdGlmeSAoXF9TQi5QQ0kzLgogICAgMTQzMDogNDcgNTAg
NTAgNDEgMkMgMjAgMzAgNzggMzIgMjkgMEEgMDAgMDAgMDAgMDAgMDAgIEdQUEEsIDB4MikuLi4u
Li4KICAgIDE0NDA6IDAwIDAwIDg2IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMzIDQ3
IDUwICAuLi5cLy5fU0JfUENJM0dQCiAgICAxNDUwOiA1MCA0MSAwQSAwMiA1QiAyMiAwQSA2NCA3
MCA0RCAzMCAzMSAzNyA1RiA0MiA0MiAgUEEuLlsiLmRwTTAxN19CQgogICAgMTQ2MDogNEUgMEEg
MDMgMEEgMDIgMEEgNzggMDAgMEEgMjAgNjAgQTAgNDQgMDYgOTIgOTMgIE4uLi4uLnguLiBgLkQu
Li4KICAgIDE0NzA6IDdCIDYwIDBDIDAwIDAwIDAzIDAwIDAwIDAwIDREIDMwIDMxIDM4IDVGIDQy
IDQyICB7YC4uLi4uLi5NMDE4X0JCCiAgICAxNDgwOiA0RSAwQSAwMyAwQSAwMiAwQSA3OCAwMCAw
QSAyMCA2MCA3MCA0RCAzMCAzMSAzNyAgTi4uLi4ueC4uIGBwTTAxNwogICAgMTQ5MDogNUYgNDIg
NDIgNEUgMEEgMDMgMEEgMDIgMEEgNzggMDAgMEEgMjAgNjAgQTAgMzEgIF9CQk4uLi4uLnguLiBg
LjEKICAgIDE0QTA6IDkyIDkzIDdCIDYwIDBDIDAwIDAwIDAzIDAwIDAwIDAwIDREIDMwIDMxIDM4
IDVGICAuLntgLi4uLi4uLk0wMThfCiAgICAxNEIwOiA0MiA0MiA0RSAwQSAwMyAwQSAwMiAwQSA3
OCAwMCAwQSAyMCA2MCA3MCA0RCAzMCAgQkJOLi4uLi54Li4gYHBNMAogICAgMTRDMDogMzEgMzcg
NUYgNDIgNDIgNEUgMEEgMDMgMEEgMDIgMEEgNzggMDAgMEEgMjAgNjAgIDE3X0JCTi4uLi4ueC4u
IGAKICAgIDE0RDA6IEEwIDQxIDEzIDkyIDkzIDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5
IDMzICAuQS4uLlwvLl9TQl9QQ0kzCiAgICAxNEUwOiA0NSA1NCA1MCA0MiAwQSBGRiA3MCA3QSA0
RCAzMCAzMSAzNyA1RiA0MiA0MiA0RSAgRVRQQi4ucHpNMDE3X0JCTgogICAgMTRGMDogMEEgMDMg
MEEgMDMgMEEgNzggMDAgMEEgMTggMEEgMTAgMDAgNUMgMkYgMDMgNUYgIC4uLi4ueC4uLi4uLlwv
Ll8KICAgIDE1MDA6IDUzIDQyIDVGIDUwIDQzIDQ5IDMzIDQ1IDU0IDUwIDQyIEEwIDQ2IDBGIDkx
IDkzICBTQl9QQ0kzRVRQQi5GLi4uCiAgICAxNTEwOiA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0
MyA0OSAzMyA0NSA1NCA1MCA0MiAwMSAgXC8uX1NCX1BDSTNFVFBCLgogICAgMTUyMDogOTMgNUMg
MkYgMDMgNUYgNTMgNDIgNUYgNTAgNDMgNDkgMzMgNDUgNTQgNTAgNDIgIC5cLy5fU0JfUENJM0VU
UEIKICAgIDE1MzA6IDBBIDAzIEEwIDRGIDBDIDVCIDEyIDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUw
IDQzICAuLi5PLlsuXC8uX1NCX1BDCiAgICAxNTQwOiA0OSAzMyA0NyA1MCA1MCA0MiAwMCA0RCAz
NCAzNiAzMCAwRCAyMCAyMCAyMCAyMCAgSTNHUFBCLk00NjAuICAgIAogICAgMTU1MDogNEUgNkYg
NzQgNjkgNjYgNzkgMjAgMjggNUMgNUYgNTMgNDIgMkUgNTAgNDMgNDkgIE5vdGlmeSAoXF9TQi5Q
Q0kKICAgIDE1NjA6IDMzIDJFIDQ3IDUwIDUwIDQyIDJDIDIwIDMwIDc4IDMyIDI5IDBBIDAwIDAw
IDAwICAzLkdQUEIsIDB4MikuLi4uCiAgICAxNTcwOiAwMCAwMCAwMCAwMCA4NiA1QyAyRiAwMyA1
RiA1MyA0MiA1RiA1MCA0MyA0OSAzMyAgLi4uLi5cLy5fU0JfUENJMwogICAgMTU4MDogNDcgNTAg
NTAgNDIgMEEgMDIgNUIgMjIgMEEgNjQgNzAgNEQgMzAgMzEgMzcgNUYgIEdQUEIuLlsiLmRwTTAx
N18KICAgIDE1OTA6IDQyIDQyIDRFIDBBIDAzIDBBIDAzIDBBIDc4IDAwIDBBIDIwIDYwIEEwIDQ0
IDA2ICBCQk4uLi4uLnguLiBgLkQuCiAgICAxNUEwOiA5MiA5MyA3QiA2MCAwQyAwMCAwMCAwMyAw
MCAwMCAwMCA0RCAzMCAzMSAzOCA1RiAgLi57YC4uLi4uLi5NMDE4XwogICAgMTVCMDogNDIgNDIg
NEUgMEEgMDMgMEEgMDMgMEEgNzggMDAgMEEgMjAgNjAgNzAgNEQgMzAgIEJCTi4uLi4ueC4uIGBw
TTAKICAgIDE1QzA6IDMxIDM3IDVGIDQyIDQyIDRFIDBBIDAzIDBBIDAzIDBBIDc4IDAwIDBBIDIw
IDYwICAxN19CQk4uLi4uLnguLiBgCiAgICAxNUQwOiBBMCAzMSA5MiA5MyA3QiA2MCAwQyAwMCAw
MCAwMyAwMCAwMCAwMCA0RCAzMCAzMSAgLjEuLntgLi4uLi4uLk0wMQogICAgMTVFMDogMzggNUYg
NDIgNDIgNEUgMEEgMDMgMEEgMDMgMEEgNzggMDAgMEEgMjAgNjAgNzAgIDhfQkJOLi4uLi54Li4g
YHAKICAgIDE1RjA6IDREIDMwIDMxIDM3IDVGIDQyIDQyIDRFIDBBIDAzIDBBIDAzIDBBIDc4IDAw
IDBBICBNMDE3X0JCTi4uLi4ueC4uCiAgICAxNjAwOiAyMCA2MCBBMCA0MSAxMyA5MiA5MyA1QyAy
RiAwMyA1RiA1MyA0MiA1RiA1MCA0MyAgIGAuQS4uLlwvLl9TQl9QQwogICAgMTYxMDogNDkgMzMg
NDUgNTQgNTAgNDMgMEEgRkYgNzAgN0EgNEQgMzAgMzEgMzcgNUYgNDIgIEkzRVRQQy4ucHpNMDE3
X0IKICAgIDE2MjA6IDQyIDRFIDBBIDAzIDBBIDA0IDBBIDc4IDAwIDBBIDE4IDBBIDEwIDAwIDVD
IDJGICBCTi4uLi4ueC4uLi4uLlwvCiAgICAxNjMwOiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAz
MyA0NSA1NCA1MCA0MyBBMCA0NiAwRiAgLl9TQl9QQ0kzRVRQQy5GLgogICAgMTY0MDogOTEgOTMg
NUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAgNDMgNDkgMzMgNDUgNTQgNTAgIC4uXC8uX1NCX1BDSTNF
VFAKICAgIDE2NTA6IDQzIDAxIDkzIDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMzIDQ1
IDU0ICBDLi5cLy5fU0JfUENJM0VUCiAgICAxNjYwOiA1MCA0MyAwQSAwMyBBMCA0RiAwQyA1QiAx
MiA1QyAyRiAwMyA1RiA1MyA0MiA1RiAgUEMuLi5PLlsuXC8uX1NCXwogICAgMTY3MDogNTAgNDMg
NDkgMzMgNDcgNTAgNTAgNDMgMDAgNEQgMzQgMzYgMzAgMEQgMjAgMjAgIFBDSTNHUFBDLk00NjAu
ICAKICAgIDE2ODA6IDIwIDIwIDRFIDZGIDc0IDY5IDY2IDc5IDIwIDI4IDVDIDVGIDUzIDQyIDJF
IDUwICAgIE5vdGlmeSAoXF9TQi5QCiAgICAxNjkwOiA0MyA0OSAzMyAyRSA0NyA1MCA1MCA0MyAy
QyAyMCAzMCA3OCAzMiAyOSAwQSAwMCAgQ0kzLkdQUEMsIDB4MikuLgogICAgMTZBMDogMDAgMDAg
MDAgMDAgMDAgMDAgODYgNUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAgNDMgIC4uLi4uLi5cLy5fU0Jf
UEMKICAgIDE2QjA6IDQ5IDMzIDQ3IDUwIDUwIDQzIDBBIDAyIDVCIDIyIDBBIDY0IDcwIDREIDMw
IDMxICBJM0dQUEMuLlsiLmRwTTAxCiAgICAxNkMwOiAzNyA1RiA0MiA0MiA0RSAwQSAwMyAwQSAw
NCAwQSA3OCAwMCAwQSAyMCA2MCBBMCAgN19CQk4uLi4uLnguLiBgLgogICAgMTZEMDogNDQgMDYg
OTIgOTMgN0IgNjAgMEMgMDAgMDAgMDMgMDAgMDAgMDAgNEQgMzAgMzEgIEQuLi57YC4uLi4uLi5N
MDEKICAgIDE2RTA6IDM4IDVGIDQyIDQyIDRFIDBBIDAzIDBBIDA0IDBBIDc4IDAwIDBBIDIwIDYw
IDcwICA4X0JCTi4uLi4ueC4uIGBwCiAgICAxNkYwOiA0RCAzMCAzMSAzNyA1RiA0MiA0MiA0RSAw
QSAwMyAwQSAwNCAwQSA3OCAwMCAwQSAgTTAxN19CQk4uLi4uLnguLgogICAgMTcwMDogMjAgNjAg
QTAgMzEgOTIgOTMgN0IgNjAgMEMgMDAgMDAgMDMgMDAgMDAgMDAgNEQgICBgLjEuLntgLi4uLi4u
Lk0KICAgIDE3MTA6IDMwIDMxIDM4IDVGIDQyIDQyIDRFIDBBIDAzIDBBIDA0IDBBIDc4IDAwIDBB
IDIwICAwMThfQkJOLi4uLi54Li4gCiAgICAxNzIwOiA2MCA3MCA0RCAzMCAzMSAzNyA1RiA0MiA0
MiA0RSAwQSAwMyAwQSAwNCAwQSA3OCAgYHBNMDE3X0JCTi4uLi4ueAogICAgMTczMDogMDAgMEEg
MjAgNjAgQTAgNDEgMTMgOTIgOTMgNUMgMkYgMDMgNUYgNTMgNDIgNUYgIC4uIGAuQS4uLlwvLl9T
Ql8KICAgIDE3NDA6IDUwIDQzIDQ5IDMzIDQ1IDU0IDUwIDQ0IDBBIEZGIDcwIDdBIDREIDMwIDMx
IDM3ICBQQ0kzRVRQRC4ucHpNMDE3CiAgICAxNzUwOiA1RiA0MiA0MiA0RSAwQSAwMyAwQSAwNSAw
QSA3OCAwMCAwQSAxOCAwQSAxMCAwMCAgX0JCTi4uLi4ueC4uLi4uLgogICAgMTc2MDogNUMgMkYg
MDMgNUYgNTMgNDIgNUYgNTAgNDMgNDkgMzMgNDUgNTQgNTAgNDQgQTAgIFwvLl9TQl9QQ0kzRVRQ
RC4KICAgIDE3NzA6IDQ2IDBGIDkxIDkzIDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMz
IDQ1ICBGLi4uXC8uX1NCX1BDSTNFCiAgICAxNzgwOiA1NCA1MCA0NCAwMSA5MyA1QyAyRiAwMyA1
RiA1MyA0MiA1RiA1MCA0MyA0OSAzMyAgVFBELi5cLy5fU0JfUENJMwogICAgMTc5MDogNDUgNTQg
NTAgNDQgMEEgMDMgQTAgNEYgMEMgNUIgMTIgNUMgMkYgMDMgNUYgNTMgIEVUUEQuLi5PLlsuXC8u
X1MKICAgIDE3QTA6IDQyIDVGIDUwIDQzIDQ5IDMzIDQ3IDUwIDUwIDQ0IDAwIDREIDM0IDM2IDMw
IDBEICBCX1BDSTNHUFBELk00NjAuCiAgICAxN0IwOiAyMCAyMCAyMCAyMCA0RSA2RiA3NCA2OSA2
NiA3OSAyMCAyOCA1QyA1RiA1MyA0MiAgICAgIE5vdGlmeSAoXF9TQgogICAgMTdDMDogMkUgNTAg
NDMgNDkgMzMgMkUgNDcgNTAgNTAgNDQgMkMgMjAgMzAgNzggMzIgMjkgIC5QQ0kzLkdQUEQsIDB4
MikKICAgIDE3RDA6IDBBIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDg2IDVDIDJGIDAzIDVGIDUzIDQy
IDVGICAuLi4uLi4uLi5cLy5fU0JfCiAgICAxN0UwOiA1MCA0MyA0OSAzMyA0NyA1MCA1MCA0NCAw
QSAwMiA1QiAyMiAwQSA2NCA3MCA0RCAgUENJM0dQUEQuLlsiLmRwTQogICAgMTdGMDogMzAgMzEg
MzcgNUYgNDIgNDIgNEUgMEEgMDMgMEEgMDUgMEEgNzggMDAgMEEgMjAgIDAxN19CQk4uLi4uLngu
LiAKICAgIDE4MDA6IDYwIEEwIDQ0IDA2IDkyIDkzIDdCIDYwIDBDIDAwIDAwIDAzIDAwIDAwIDAw
IDREICBgLkQuLi57YC4uLi4uLi5NCiAgICAxODEwOiAzMCAzMSAzOCA1RiA0MiA0MiA0RSAwQSAw
MyAwQSAwNSAwQSA3OCAwMCAwQSAyMCAgMDE4X0JCTi4uLi4ueC4uIAogICAgMTgyMDogNjAgNzAg
NEQgMzAgMzEgMzcgNUYgNDIgNDIgNEUgMEEgMDMgMEEgMDUgMEEgNzggIGBwTTAxN19CQk4uLi4u
LngKICAgIDE4MzA6IDAwIDBBIDIwIDYwIEEwIDMxIDkyIDkzIDdCIDYwIDBDIDAwIDAwIDAzIDAw
IDAwICAuLiBgLjEuLntgLi4uLi4uCiAgICAxODQwOiAwMCA0RCAzMCAzMSAzOCA1RiA0MiA0MiA0
RSAwQSAwMyAwQSAwNSAwQSA3OCAwMCAgLk0wMThfQkJOLi4uLi54LgogICAgMTg1MDogMEEgMjAg
NjAgNzAgNEQgMzAgMzEgMzcgNUYgNDIgNDIgNEUgMEEgMDMgMEEgMDUgIC4gYHBNMDE3X0JCTi4u
Li4KICAgIDE4NjA6IDBBIDc4IDAwIDBBIDIwIDYwIEEwIDQxIDEzIDkyIDkzIDVDIDJGIDAzIDVG
IDUzICAueC4uIGAuQS4uLlwvLl9TCiAgICAxODcwOiA0MiA1RiA1MCA0MyA0OSAzMyA0NSA1NCA1
MCA0NSAwQSBGRiA3MCA3QSA0RCAzMCAgQl9QQ0kzRVRQRS4ucHpNMAogICAgMTg4MDogMzEgMzcg
NUYgNDIgNDIgNEUgMEEgMDMgMEEgMDYgMEEgNzggMDAgMEEgMTggMEEgIDE3X0JCTi4uLi4ueC4u
Li4KICAgIDE4OTA6IDEwIDAwIDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMzIDQ1IDU0
IDUwICAuLlwvLl9TQl9QQ0kzRVRQCiAgICAxOEEwOiA0NSBBMCA0NiAwRiA5MSA5MyA1QyAyRiAw
MyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAgRS5GLi4uXC8uX1NCX1BDSQogICAgMThCMDogMzMgNDUg
NTQgNTAgNDUgMDEgOTMgNUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAgNDMgIDNFVFBFLi5cLy5fU0Jf
UEMKICAgIDE4QzA6IDQ5IDMzIDQ1IDU0IDUwIDQ1IDBBIDAzIEEwIDRGIDBDIDVCIDEyIDVDIDJG
IDAzICBJM0VUUEUuLi5PLlsuXC8uCiAgICAxOEQwOiA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMyA0
NyA1MCA1MCA0NSAwMCA0RCAzNCAzNiAgX1NCX1BDSTNHUFBFLk00NgogICAgMThFMDogMzAgMEQg
MjAgMjAgMjAgMjAgNEUgNkYgNzQgNjkgNjYgNzkgMjAgMjggNUMgNUYgIDAuICAgIE5vdGlmeSAo
XF8KICAgIDE4RjA6IDUzIDQyIDJFIDUwIDQzIDQ5IDMzIDJFIDQ3IDUwIDUwIDQ1IDJDIDIwIDMw
IDc4ICBTQi5QQ0kzLkdQUEUsIDB4CiAgICAxOTAwOiAzMiAyOSAwQSAwMCAwMCAwMCAwMCAwMCAw
MCAwMCA4NiA1QyAyRiAwMyA1RiA1MyAgMikuLi4uLi4uLi5cLy5fUwogICAgMTkxMDogNDIgNUYg
NTAgNDMgNDkgMzMgNDcgNTAgNTAgNDUgMEEgMDIgNUIgMjIgMEEgNjQgIEJfUENJM0dQUEUuLlsi
LmQKICAgIDE5MjA6IDcwIDREIDMwIDMxIDM3IDVGIDQyIDQyIDRFIDBBIDAzIDBBIDA2IDBBIDc4
IDAwICBwTTAxN19CQk4uLi4uLnguCiAgICAxOTMwOiAwQSAyMCA2MCBBMCA0NCAwNiA5MiA5MyA3
QiA2MCAwQyAwMCAwMCAwMyAwMCAwMCAgLiBgLkQuLi57YC4uLi4uLgogICAgMTk0MDogMDAgNEQg
MzAgMzEgMzggNUYgNDIgNDIgNEUgMEEgMDMgMEEgMDYgMEEgNzggMDAgIC5NMDE4X0JCTi4uLi4u
eC4KICAgIDE5NTA6IDBBIDIwIDYwIDcwIDREIDMwIDMxIDM3IDVGIDQyIDQyIDRFIDBBIDAzIDBB
IDA2ICAuIGBwTTAxN19CQk4uLi4uCiAgICAxOTYwOiAwQSA3OCAwMCAwQSAyMCA2MCBBMCAzMSA5
MiA5MyA3QiA2MCAwQyAwMCAwMCAwMyAgLnguLiBgLjEuLntgLi4uLgogICAgMTk3MDogMDAgMDAg
MDAgNEQgMzAgMzEgMzggNUYgNDIgNDIgNEUgMEEgMDMgMEEgMDYgMEEgIC4uLk0wMThfQkJOLi4u
Li4KICAgIDE5ODA6IDc4IDAwIDBBIDIwIDYwIDcwIDREIDMwIDMxIDM3IDVGIDQyIDQyIDRFIDBB
IDAzICB4Li4gYHBNMDE3X0JCTi4uCiAgICAxOTkwOiAwQSAwNiAwQSA3OCAwMCAwQSAyMCA2MCBB
MCA0MSAxMyA5MiA5MyA1QyAyRiAwMyAgLi4ueC4uIGAuQS4uLlwvLgogICAgMTlBMDogNUYgNTMg
NDIgNUYgNTAgNDMgNDkgMzMgNDUgNTQgNTAgNDYgMEEgRkYgNzAgN0EgIF9TQl9QQ0kzRVRQRi4u
cHoKICAgIDE5QjA6IDREIDMwIDMxIDM3IDVGIDQyIDQyIDRFIDBBIDAzIDBBIDA3IDBBIDc4IDAw
IDBBICBNMDE3X0JCTi4uLi4ueC4uCiAgICAxOUMwOiAxOCAwQSAxMCAwMCA1QyAyRiAwMyA1RiA1
MyA0MiA1RiA1MCA0MyA0OSAzMyA0NSAgLi4uLlwvLl9TQl9QQ0kzRQogICAgMTlEMDogNTQgNTAg
NDYgQTAgNDYgMEYgOTEgOTMgNUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAgIFRQRi5GLi4uXC8uX1NC
X1AKICAgIDE5RTA6IDQzIDQ5IDMzIDQ1IDU0IDUwIDQ2IDAxIDkzIDVDIDJGIDAzIDVGIDUzIDQy
IDVGICBDSTNFVFBGLi5cLy5fU0JfCiAgICAxOUYwOiA1MCA0MyA0OSAzMyA0NSA1NCA1MCA0NiAw
QSAwMyBBMCA0RiAwQyA1QiAxMiA1QyAgUENJM0VUUEYuLi5PLlsuXAogICAgMUEwMDogMkYgMDMg
NUYgNTMgNDIgNUYgNTAgNDMgNDkgMzMgNDcgNTAgNTAgNDYgMDAgNEQgIC8uX1NCX1BDSTNHUFBG
Lk0KICAgIDFBMTA6IDM0IDM2IDMwIDBEIDIwIDIwIDIwIDIwIDRFIDZGIDc0IDY5IDY2IDc5IDIw
IDI4ICA0NjAuICAgIE5vdGlmeSAoCiAgICAxQTIwOiA1QyA1RiA1MyA0MiAyRSA1MCA0MyA0OSAz
MyAyRSA0NyA1MCA1MCA0NiAyQyAyMCAgXF9TQi5QQ0kzLkdQUEYsIAogICAgMUEzMDogMzAgNzgg
MzIgMjkgMEEgMDAgMDAgMDAgMDAgMDAgMDAgMDAgODYgNUMgMkYgMDMgIDB4MikuLi4uLi4uLi5c
Ly4KICAgIDFBNDA6IDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMzIDQ3IDUwIDUwIDQ2IDBBIDAyIDVC
IDIyICBfU0JfUENJM0dQUEYuLlsiCiAgICAxQTUwOiAwQSA2NCA3MCA0RCAzMCAzMSAzNyA1RiA0
MiA0MiA0RSAwQSAwMyAwQSAwNyAwQSAgLmRwTTAxN19CQk4uLi4uLgogICAgMUE2MDogNzggMDAg
MEEgMjAgNjAgQTAgNDQgMDYgOTIgOTMgN0IgNjAgMEMgMDAgMDAgMDMgIHguLiBgLkQuLi57YC4u
Li4KICAgIDFBNzA6IDAwIDAwIDAwIDREIDMwIDMxIDM4IDVGIDQyIDQyIDRFIDBBIDAzIDBBIDA3
IDBBICAuLi5NMDE4X0JCTi4uLi4uCiAgICAxQTgwOiA3OCAwMCAwQSAyMCA2MCA3MCA0RCAzMCAz
MSAzNyA1RiA0MiA0MiA0RSAwQSAwMyAgeC4uIGBwTTAxN19CQk4uLgogICAgMUE5MDogMEEgMDcg
MEEgNzggMDAgMEEgMjAgNjAgQTAgMzEgOTIgOTMgN0IgNjAgMEMgMDAgIC4uLnguLiBgLjEuLntg
Li4KICAgIDFBQTA6IDAwIDAzIDAwIDAwIDAwIDREIDMwIDMxIDM4IDVGIDQyIDQyIDRFIDBBIDAz
IDBBICAuLi4uLk0wMThfQkJOLi4uCiAgICAxQUIwOiAwNyAwQSA3OCAwMCAwQSAyMCA2MCA3MCA0
RCAzMCAzMSAzNyA1RiA0MiA0MiA0RSAgLi54Li4gYHBNMDE3X0JCTgogICAgMUFDMDogMEEgMDMg
MEEgMDcgMEEgNzggMDAgMEEgMjAgNjAgQTAgNEIgMTIgOTIgOTMgNUMgIC4uLi4ueC4uIGAuSy4u
LlwKICAgIDFBRDA6IDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMzIDQ1IDU0IDUwIDQ3IDBB
IEZGICAvLl9TQl9QQ0kzRVRQRy4uCiAgICAxQUUwOiA3MCA3QSA0RCAzMCAzMSAzNyA1RiA0MiA0
MiA0RSAwQSAwNCAwMSAwQSA3OCAwMCAgcHpNMDE3X0JCTi4uLi54LgogICAgMUFGMDogMEEgMTgg
MEEgMTAgMDAgNUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAgNDMgNDkgMzMgIC4uLi4uXC8uX1NCX1BD
STMKICAgIDFCMDA6IDQ1IDU0IDUwIDQ3IEEwIDQxIDBGIDkxIDkzIDVDIDJGIDAzIDVGIDUzIDQy
IDVGICBFVFBHLkEuLi5cLy5fU0JfCiAgICAxQjEwOiA1MCA0MyA0OSAzMyA0NSA1NCA1MCA0NyAw
MSA5MyA1QyAyRiAwMyA1RiA1MyA0MiAgUENJM0VUUEcuLlwvLl9TQgogICAgMUIyMDogNUYgNTAg
NDMgNDkgMzMgNDUgNTQgNTAgNDcgMEEgMDMgQTAgNEEgMEMgNUIgMTIgIF9QQ0kzRVRQRy4uLkou
Wy4KICAgIDFCMzA6IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMzIDQ3IDUwIDUwIDQ3
IDAwICBcLy5fU0JfUENJM0dQUEcuCiAgICAxQjQwOiA0RCAzNCAzNiAzMCAwRCAyMCAyMCAyMCAy
MCA0RSA2RiA3NCA2OSA2NiA3OSAyMCAgTTQ2MC4gICAgTm90aWZ5IAogICAgMUI1MDogMjggNUMg
NUYgNTMgNDIgMkUgNTAgNDMgNDkgMzMgMkUgNDcgNTAgNTAgNDcgMkMgIChcX1NCLlBDSTMuR1BQ
RywKICAgIDFCNjA6IDIwIDMwIDc4IDMyIDI5IDBBIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDg2IDVD
IDJGICAgMHgyKS4uLi4uLi4uLlwvCiAgICAxQjcwOiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAz
MyA0NyA1MCA1MCA0NyAwQSAwMiA1QiAgLl9TQl9QQ0kzR1BQRy4uWwogICAgMUI4MDogMjIgMEEg
NjQgNzAgNEQgMzAgMzEgMzcgNUYgNDIgNDIgNEUgMEEgMDQgMDEgMEEgICIuZHBNMDE3X0JCTi4u
Li4KICAgIDFCOTA6IDc4IDAwIDBBIDIwIDYwIEEwIDQwIDA2IDkyIDkzIDdCIDYwIDBDIDAwIDAw
IDAzICB4Li4gYC5ALi4ue2AuLi4uCiAgICAxQkEwOiAwMCAwMCAwMCA0RCAzMCAzMSAzOCA1RiA0
MiA0MiA0RSAwQSAwNCAwMSAwQSA3OCAgLi4uTTAxOF9CQk4uLi4ueAogICAgMUJCMDogMDAgMEEg
MjAgNjAgNzAgNEQgMzAgMzEgMzcgNUYgNDIgNDIgNEUgMEEgMDQgMDEgIC4uIGBwTTAxN19CQk4u
Li4KICAgIDFCQzA6IDBBIDc4IDAwIDBBIDIwIDYwIEEwIDJGIDkyIDkzIDdCIDYwIDBDIDAwIDAw
IDAzICAueC4uIGAuLy4ue2AuLi4uCiAgICAxQkQwOiAwMCAwMCAwMCA0RCAzMCAzMSAzOCA1RiA0
MiA0MiA0RSAwQSAwNCAwMSAwQSA3OCAgLi4uTTAxOF9CQk4uLi4ueAogICAgMUJFMDogMDAgMEEg
MjAgNjAgNzAgNEQgMzAgMzEgMzcgNUYgNDIgNDIgNEUgMEEgMDQgMDEgIC4uIGBwTTAxN19CQk4u
Li4KICAgIDFCRjA6IDBBIDc4IDAwIDBBIDIwIDYwIEEwIDQxIDEzIDkyIDkzIDVDIDJGIDAzIDVG
IDUzICAueC4uIGAuQS4uLlwvLl9TCiAgICAxQzAwOiA0MiA1RiA1MCA0MyA0OSAzMyA0NSA1NCA1
MCA0OCAwQSBGRiA3MCA3QSA0RCAzMCAgQl9QQ0kzRVRQSC4ucHpNMAogICAgMUMxMDogMzEgMzcg
NUYgNDIgNDIgNEUgMEEgMDQgMEEgMDIgMEEgNzggMDAgMEEgMTggMEEgIDE3X0JCTi4uLi4ueC4u
Li4KICAgIDFDMjA6IDEwIDAwIDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMzIDQ1IDU0
IDUwICAuLlwvLl9TQl9QQ0kzRVRQCiAgICAxQzMwOiA0OCBBMCA0NiAwRiA5MSA5MyA1QyAyRiAw
MyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAgSC5GLi4uXC8uX1NCX1BDSQogICAgMUM0MDogMzMgNDUg
NTQgNTAgNDggMDEgOTMgNUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAgNDMgIDNFVFBILi5cLy5fU0Jf
UEMKICAgIDFDNTA6IDQ5IDMzIDQ1IDU0IDUwIDQ4IDBBIDAzIEEwIDRGIDBDIDVCIDEyIDVDIDJG
IDAzICBJM0VUUEguLi5PLlsuXC8uCiAgICAxQzYwOiA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMyA0
NyA1MCA1MCA0OCAwMCA0RCAzNCAzNiAgX1NCX1BDSTNHUFBILk00NgogICAgMUM3MDogMzAgMEQg
MjAgMjAgMjAgMjAgNEUgNkYgNzQgNjkgNjYgNzkgMjAgMjggNUMgNUYgIDAuICAgIE5vdGlmeSAo
XF8KICAgIDFDODA6IDUzIDQyIDJFIDUwIDQzIDQ5IDMzIDJFIDQ3IDUwIDUwIDQ4IDJDIDIwIDMw
IDc4ICBTQi5QQ0kzLkdQUEgsIDB4CiAgICAxQzkwOiAzMiAyOSAwQSAwMCAwMCAwMCAwMCAwMCAw
MCAwMCA4NiA1QyAyRiAwMyA1RiA1MyAgMikuLi4uLi4uLi5cLy5fUwogICAgMUNBMDogNDIgNUYg
NTAgNDMgNDkgMzMgNDcgNTAgNTAgNDggMEEgMDIgNUIgMjIgMEEgNjQgIEJfUENJM0dQUEguLlsi
LmQKICAgIDFDQjA6IDcwIDREIDMwIDMxIDM3IDVGIDQyIDQyIDRFIDBBIDA0IDBBIDAyIDBBIDc4
IDAwICBwTTAxN19CQk4uLi4uLnguCiAgICAxQ0MwOiAwQSAyMCA2MCBBMCA0NCAwNiA5MiA5MyA3
QiA2MCAwQyAwMCAwMCAwMyAwMCAwMCAgLiBgLkQuLi57YC4uLi4uLgogICAgMUNEMDogMDAgNEQg
MzAgMzEgMzggNUYgNDIgNDIgNEUgMEEgMDQgMEEgMDIgMEEgNzggMDAgIC5NMDE4X0JCTi4uLi4u
eC4KICAgIDFDRTA6IDBBIDIwIDYwIDcwIDREIDMwIDMxIDM3IDVGIDQyIDQyIDRFIDBBIDA0IDBB
IDAyICAuIGBwTTAxN19CQk4uLi4uCiAgICAxQ0YwOiAwQSA3OCAwMCAwQSAyMCA2MCBBMCAzMSA5
MiA5MyA3QiA2MCAwQyAwMCAwMCAwMyAgLnguLiBgLjEuLntgLi4uLgogICAgMUQwMDogMDAgMDAg
MDAgNEQgMzAgMzEgMzggNUYgNDIgNDIgNEUgMEEgMDQgMEEgMDIgMEEgIC4uLk0wMThfQkJOLi4u
Li4KICAgIDFEMTA6IDc4IDAwIDBBIDIwIDYwIDcwIDREIDMwIDMxIDM3IDVGIDQyIDQyIDRFIDBB
IDA0ICB4Li4gYHBNMDE3X0JCTi4uCiAgICAxRDIwOiAwQSAwMiAwQSA3OCAwMCAwQSAyMCA2MCBB
MCA0QiAxMiA5MiA5MyA1QyAyRiAwMyAgLi4ueC4uIGAuSy4uLlwvLgogICAgMUQzMDogNUYgNTMg
NDIgNUYgNTAgNDMgNDkgMzMgNDUgNTQgMzEgMzUgMEEgRkYgNzAgN0EgIF9TQl9QQ0kzRVQxNS4u
cHoKICAgIDFENDA6IDREIDMwIDMxIDM3IDVGIDQyIDQyIDRFIDBBIDA1IDAxIDBBIDc4IDAwIDBB
IDE4ICBNMDE3X0JCTi4uLi54Li4uCiAgICAxRDUwOiAwQSAxMCAwMCA1QyAyRiAwMyA1RiA1MyA0
MiA1RiA1MCA0MyA0OSAzMyA0NSA1NCAgLi4uXC8uX1NCX1BDSTNFVAogICAgMUQ2MDogMzEgMzUg
QTAgNDEgMEYgOTEgOTMgNUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAgNDMgIDE1LkEuLi5cLy5fU0Jf
UEMKICAgIDFENzA6IDQ5IDMzIDQ1IDU0IDMxIDM1IDAxIDkzIDVDIDJGIDAzIDVGIDUzIDQyIDVG
IDUwICBJM0VUMTUuLlwvLl9TQl9QCiAgICAxRDgwOiA0MyA0OSAzMyA0NSA1NCAzMSAzNSAwQSAw
MyBBMCA0QSAwQyA1QiAxMiA1QyAyRiAgQ0kzRVQxNS4uLkouWy5cLwogICAgMUQ5MDogMDMgNUYg
NTMgNDIgNUYgNTAgNDMgNDkgMzMgNDcgNTAgMzEgMzUgMDAgNEQgMzQgIC5fU0JfUENJM0dQMTUu
TTQKICAgIDFEQTA6IDM2IDMwIDBEIDIwIDIwIDIwIDIwIDRFIDZGIDc0IDY5IDY2IDc5IDIwIDI4
IDVDICA2MC4gICAgTm90aWZ5IChcCiAgICAxREIwOiA1RiA1MyA0MiAyRSA1MCA0MyA0OSAzMyAy
RSA0NyA1MCAzMSAzNSAyQyAyMCAzMCAgX1NCLlBDSTMuR1AxNSwgMAogICAgMURDMDogNzggMzIg
MjkgMEEgMDAgMDAgMDAgMDAgMDAgMDAgMDAgODYgNUMgMkYgMDMgNUYgIHgyKS4uLi4uLi4uLlwv
Ll8KICAgIDFERDA6IDUzIDQyIDVGIDUwIDQzIDQ5IDMzIDQ3IDUwIDMxIDM1IDBBIDAyIDVCIDIy
IDBBICBTQl9QQ0kzR1AxNS4uWyIuCiAgICAxREUwOiA2NCA3MCA0RCAzMCAzMSAzNyA1RiA0MiA0
MiA0RSAwQSAwNSAwMSAwQSA3OCAwMCAgZHBNMDE3X0JCTi4uLi54LgogICAgMURGMDogMEEgMjAg
NjAgQTAgNDAgMDYgOTIgOTMgN0IgNjAgMEMgMDAgMDAgMDMgMDAgMDAgIC4gYC5ALi4ue2AuLi4u
Li4KICAgIDFFMDA6IDAwIDREIDMwIDMxIDM4IDVGIDQyIDQyIDRFIDBBIDA1IDAxIDBBIDc4IDAw
IDBBICAuTTAxOF9CQk4uLi4ueC4uCiAgICAxRTEwOiAyMCA2MCA3MCA0RCAzMCAzMSAzNyA1RiA0
MiA0MiA0RSAwQSAwNSAwMSAwQSA3OCAgIGBwTTAxN19CQk4uLi4ueAogICAgMUUyMDogMDAgMEEg
MjAgNjAgQTAgMkYgOTIgOTMgN0IgNjAgMEMgMDAgMDAgMDMgMDAgMDAgIC4uIGAuLy4ue2AuLi4u
Li4KICAgIDFFMzA6IDAwIDREIDMwIDMxIDM4IDVGIDQyIDQyIDRFIDBBIDA1IDAxIDBBIDc4IDAw
IDBBICAuTTAxOF9CQk4uLi4ueC4uCiAgICAxRTQwOiAyMCA2MCA3MCA0RCAzMCAzMSAzNyA1RiA0
MiA0MiA0RSAwQSAwNSAwMSAwQSA3OCAgIGBwTTAxN19CQk4uLi4ueAogICAgMUU1MDogMDAgMEEg
MjAgNjAgQTAgNDEgMTMgOTIgOTMgNUMgMkYgMDMgNUYgNTMgNDIgNUYgIC4uIGAuQS4uLlwvLl9T
Ql8KICAgIDFFNjA6IDUwIDQzIDQ5IDMzIDQ1IDU0IDMyIDM1IDBBIEZGIDcwIDdBIDREIDMwIDMx
IDM3ICBQQ0kzRVQyNS4ucHpNMDE3CiAgICAxRTcwOiA1RiA0MiA0MiA0RSAwQSAwNSAwQSAwMiAw
QSA3OCAwMCAwQSAxOCAwQSAxMCAwMCAgX0JCTi4uLi4ueC4uLi4uLgogICAgMUU4MDogNUMgMkYg
MDMgNUYgNTMgNDIgNUYgNTAgNDMgNDkgMzMgNDUgNTQgMzIgMzUgQTAgIFwvLl9TQl9QQ0kzRVQy
NS4KICAgIDFFOTA6IDQ2IDBGIDkxIDkzIDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMz
IDQ1ICBGLi4uXC8uX1NCX1BDSTNFCiAgICAxRUEwOiA1NCAzMiAzNSAwMSA5MyA1QyAyRiAwMyA1
RiA1MyA0MiA1RiA1MCA0MyA0OSAzMyAgVDI1Li5cLy5fU0JfUENJMwogICAgMUVCMDogNDUgNTQg
MzIgMzUgMEEgMDMgQTAgNEYgMEMgNUIgMTIgNUMgMkYgMDMgNUYgNTMgIEVUMjUuLi5PLlsuXC8u
X1MKICAgIDFFQzA6IDQyIDVGIDUwIDQzIDQ5IDMzIDQ3IDUwIDMyIDM1IDAwIDREIDM0IDM2IDMw
IDBEICBCX1BDSTNHUDI1Lk00NjAuCiAgICAxRUQwOiAyMCAyMCAyMCAyMCA0RSA2RiA3NCA2OSA2
NiA3OSAyMCAyOCA1QyA1RiA1MyA0MiAgICAgIE5vdGlmeSAoXF9TQgogICAgMUVFMDogMkUgNTAg
NDMgNDkgMzMgMkUgNDcgNTAgMzIgMzUgMkMgMjAgMzAgNzggMzIgMjkgIC5QQ0kzLkdQMjUsIDB4
MikKICAgIDFFRjA6IDBBIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDg2IDVDIDJGIDAzIDVGIDUzIDQy
IDVGICAuLi4uLi4uLi5cLy5fU0JfCiAgICAxRjAwOiA1MCA0MyA0OSAzMyA0NyA1MCAzMiAzNSAw
QSAwMiA1QiAyMiAwQSA2NCA3MCA0RCAgUENJM0dQMjUuLlsiLmRwTQogICAgMUYxMDogMzAgMzEg
MzcgNUYgNDIgNDIgNEUgMEEgMDUgMEEgMDIgMEEgNzggMDAgMEEgMjAgIDAxN19CQk4uLi4uLngu
LiAKICAgIDFGMjA6IDYwIEEwIDQ0IDA2IDkyIDkzIDdCIDYwIDBDIDAwIDAwIDAzIDAwIDAwIDAw
IDREICBgLkQuLi57YC4uLi4uLi5NCiAgICAxRjMwOiAzMCAzMSAzOCA1RiA0MiA0MiA0RSAwQSAw
NSAwQSAwMiAwQSA3OCAwMCAwQSAyMCAgMDE4X0JCTi4uLi4ueC4uIAogICAgMUY0MDogNjAgNzAg
NEQgMzAgMzEgMzcgNUYgNDIgNDIgNEUgMEEgMDUgMEEgMDIgMEEgNzggIGBwTTAxN19CQk4uLi4u
LngKICAgIDFGNTA6IDAwIDBBIDIwIDYwIEEwIDMxIDkyIDkzIDdCIDYwIDBDIDAwIDAwIDAzIDAw
IDAwICAuLiBgLjEuLntgLi4uLi4uCiAgICAxRjYwOiAwMCA0RCAzMCAzMSAzOCA1RiA0MiA0MiA0
RSAwQSAwNSAwQSAwMiAwQSA3OCAwMCAgLk0wMThfQkJOLi4uLi54LgogICAgMUY3MDogMEEgMjAg
NjAgNzAgNEQgMzAgMzEgMzcgNUYgNDIgNDIgNEUgMEEgMDUgMEEgMDIgIC4gYHBNMDE3X0JCTi4u
Li4KICAgIDFGODA6IDBBIDc4IDAwIDBBIDIwIDYwIEEwIDQxIDEzIDkyIDkzIDVDIDJGIDAzIDVG
IDUzICAueC4uIGAuQS4uLlwvLl9TCiAgICAxRjkwOiA0MiA1RiA1MCA0MyA0OSAzMyA0NSA1NCAz
MyAzNSAwQSBGRiA3MCA3QSA0RCAzMCAgQl9QQ0kzRVQzNS4ucHpNMAogICAgMUZBMDogMzEgMzcg
NUYgNDIgNDIgNEUgMEEgMDUgMEEgMDMgMEEgNzggMDAgMEEgMTggMEEgIDE3X0JCTi4uLi4ueC4u
Li4KICAgIDFGQjA6IDEwIDAwIDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMzIDQ1IDU0
IDMzICAuLlwvLl9TQl9QQ0kzRVQzCiAgICAxRkMwOiAzNSBBMCA0NiAwRiA5MSA5MyA1QyAyRiAw
MyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAgNS5GLi4uXC8uX1NCX1BDSQogICAgMUZEMDogMzMgNDUg
NTQgMzMgMzUgMDEgOTMgNUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAgNDMgIDNFVDM1Li5cLy5fU0Jf
UEMKICAgIDFGRTA6IDQ5IDMzIDQ1IDU0IDMzIDM1IDBBIDAzIEEwIDRGIDBDIDVCIDEyIDVDIDJG
IDAzICBJM0VUMzUuLi5PLlsuXC8uCiAgICAxRkYwOiA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMyA0
NyA1MCAzMyAzNSAwMCA0RCAzNCAzNiAgX1NCX1BDSTNHUDM1Lk00NgogICAgMjAwMDogMzAgMEQg
MjAgMjAgMjAgMjAgNEUgNkYgNzQgNjkgNjYgNzkgMjAgMjggNUMgNUYgIDAuICAgIE5vdGlmeSAo
XF8KICAgIDIwMTA6IDUzIDQyIDJFIDUwIDQzIDQ5IDMzIDJFIDQ3IDUwIDMzIDM1IDJDIDIwIDMw
IDc4ICBTQi5QQ0kzLkdQMzUsIDB4CiAgICAyMDIwOiAzMiAyOSAwQSAwMCAwMCAwMCAwMCAwMCAw
MCAwMCA4NiA1QyAyRiAwMyA1RiA1MyAgMikuLi4uLi4uLi5cLy5fUwogICAgMjAzMDogNDIgNUYg
NTAgNDMgNDkgMzMgNDcgNTAgMzMgMzUgMEEgMDIgNUIgMjIgMEEgNjQgIEJfUENJM0dQMzUuLlsi
LmQKICAgIDIwNDA6IDcwIDREIDMwIDMxIDM3IDVGIDQyIDQyIDRFIDBBIDA1IDBBIDAzIDBBIDc4
IDAwICBwTTAxN19CQk4uLi4uLnguCiAgICAyMDUwOiAwQSAyMCA2MCBBMCA0NCAwNiA5MiA5MyA3
QiA2MCAwQyAwMCAwMCAwMyAwMCAwMCAgLiBgLkQuLi57YC4uLi4uLgogICAgMjA2MDogMDAgNEQg
MzAgMzEgMzggNUYgNDIgNDIgNEUgMEEgMDUgMEEgMDMgMEEgNzggMDAgIC5NMDE4X0JCTi4uLi4u
eC4KICAgIDIwNzA6IDBBIDIwIDYwIDcwIDREIDMwIDMxIDM3IDVGIDQyIDQyIDRFIDBBIDA1IDBB
IDAzICAuIGBwTTAxN19CQk4uLi4uCiAgICAyMDgwOiAwQSA3OCAwMCAwQSAyMCA2MCBBMCAzMSA5
MiA5MyA3QiA2MCAwQyAwMCAwMCAwMyAgLnguLiBgLjEuLntgLi4uLgogICAgMjA5MDogMDAgMDAg
MDAgNEQgMzAgMzEgMzggNUYgNDIgNDIgNEUgMEEgMDUgMEEgMDMgMEEgIC4uLk0wMThfQkJOLi4u
Li4KICAgIDIwQTA6IDc4IDAwIDBBIDIwIDYwIDcwIDREIDMwIDMxIDM3IDVGIDQyIDQyIDRFIDBB
IDA1ICB4Li4gYHBNMDE3X0JCTi4uCiAgICAyMEIwOiAwQSAwMyAwQSA3OCAwMCAwQSAyMCA2MCBB
MCA0MSAxMyA5MiA5MyA1QyAyRiAwMyAgLi4ueC4uIGAuQS4uLlwvLgogICAgMjBDMDogNUYgNTMg
NDIgNUYgNTAgNDMgNDkgMzMgNDUgNTQgMzQgMzUgMEEgRkYgNzAgN0EgIF9TQl9QQ0kzRVQ0NS4u
cHoKICAgIDIwRDA6IDREIDMwIDMxIDM3IDVGIDQyIDQyIDRFIDBBIDA1IDBBIDA0IDBBIDc4IDAw
IDBBICBNMDE3X0JCTi4uLi4ueC4uCiAgICAyMEUwOiAxOCAwQSAxMCAwMCA1QyAyRiAwMyA1RiA1
MyA0MiA1RiA1MCA0MyA0OSAzMyA0NSAgLi4uLlwvLl9TQl9QQ0kzRQogICAgMjBGMDogNTQgMzQg
MzUgQTAgNDYgMEYgOTEgOTMgNUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAgIFQ0NS5GLi4uXC8uX1NC
X1AKICAgIDIxMDA6IDQzIDQ5IDMzIDQ1IDU0IDM0IDM1IDAxIDkzIDVDIDJGIDAzIDVGIDUzIDQy
IDVGICBDSTNFVDQ1Li5cLy5fU0JfCiAgICAyMTEwOiA1MCA0MyA0OSAzMyA0NSA1NCAzNCAzNSAw
QSAwMyBBMCA0RiAwQyA1QiAxMiA1QyAgUENJM0VUNDUuLi5PLlsuXAogICAgMjEyMDogMkYgMDMg
NUYgNTMgNDIgNUYgNTAgNDMgNDkgMzMgNDcgNTAgMzQgMzUgMDAgNEQgIC8uX1NCX1BDSTNHUDQ1
Lk0KICAgIDIxMzA6IDM0IDM2IDMwIDBEIDIwIDIwIDIwIDIwIDRFIDZGIDc0IDY5IDY2IDc5IDIw
IDI4ICA0NjAuICAgIE5vdGlmeSAoCiAgICAyMTQwOiA1QyA1RiA1MyA0MiAyRSA1MCA0MyA0OSAz
MyAyRSA0NyA1MCAzNCAzNSAyQyAyMCAgXF9TQi5QQ0kzLkdQNDUsIAogICAgMjE1MDogMzAgNzgg
MzIgMjkgMEEgMDAgMDAgMDAgMDAgMDAgMDAgMDAgODYgNUMgMkYgMDMgIDB4MikuLi4uLi4uLi5c
Ly4KICAgIDIxNjA6IDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMzIDQ3IDUwIDM0IDM1IDBBIDAyIDVC
IDIyICBfU0JfUENJM0dQNDUuLlsiCiAgICAyMTcwOiAwQSA2NCA3MCA0RCAzMCAzMSAzNyA1RiA0
MiA0MiA0RSAwQSAwNSAwQSAwNCAwQSAgLmRwTTAxN19CQk4uLi4uLgogICAgMjE4MDogNzggMDAg
MEEgMjAgNjAgQTAgNDQgMDYgOTIgOTMgN0IgNjAgMEMgMDAgMDAgMDMgIHguLiBgLkQuLi57YC4u
Li4KICAgIDIxOTA6IDAwIDAwIDAwIDREIDMwIDMxIDM4IDVGIDQyIDQyIDRFIDBBIDA1IDBBIDA0
IDBBICAuLi5NMDE4X0JCTi4uLi4uCiAgICAyMUEwOiA3OCAwMCAwQSAyMCA2MCA3MCA0RCAzMCAz
MSAzNyA1RiA0MiA0MiA0RSAwQSAwNSAgeC4uIGBwTTAxN19CQk4uLgogICAgMjFCMDogMEEgMDQg
MEEgNzggMDAgMEEgMjAgNjAgQTAgMzEgOTIgOTMgN0IgNjAgMEMgMDAgIC4uLnguLiBgLjEuLntg
Li4KICAgIDIxQzA6IDAwIDAzIDAwIDAwIDAwIDREIDMwIDMxIDM4IDVGIDQyIDQyIDRFIDBBIDA1
IDBBICAuLi4uLk0wMThfQkJOLi4uCiAgICAyMUQwOiAwNCAwQSA3OCAwMCAwQSAyMCA2MCA3MCA0
RCAzMCAzMSAzNyA1RiA0MiA0MiA0RSAgLi54Li4gYHBNMDE3X0JCTgogICAgMjFFMDogMEEgMDUg
MEEgMDQgMEEgNzggMDAgMEEgMjAgNjAgQTAgNEIgMTIgOTIgOTMgNUMgIC4uLi4ueC4uIGAuSy4u
LlwKICAgIDIxRjA6IDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMzIDQ1IDU0IDMxIDM3IDBB
IEZGICAvLl9TQl9QQ0kzRVQxNy4uCiAgICAyMjAwOiA3MCA3QSA0RCAzMCAzMSAzNyA1RiA0MiA0
MiA0RSAwQSAwNyAwMSAwQSA3OCAwMCAgcHpNMDE3X0JCTi4uLi54LgogICAgMjIxMDogMEEgMTgg
MEEgMTAgMDAgNUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAgNDMgNDkgMzMgIC4uLi4uXC8uX1NCX1BD
STMKICAgIDIyMjA6IDQ1IDU0IDMxIDM3IEEwIDQxIDBGIDkxIDkzIDVDIDJGIDAzIDVGIDUzIDQy
IDVGICBFVDE3LkEuLi5cLy5fU0JfCiAgICAyMjMwOiA1MCA0MyA0OSAzMyA0NSA1NCAzMSAzNyAw
MSA5MyA1QyAyRiAwMyA1RiA1MyA0MiAgUENJM0VUMTcuLlwvLl9TQgogICAgMjI0MDogNUYgNTAg
NDMgNDkgMzMgNDUgNTQgMzEgMzcgMEEgMDMgQTAgNEEgMEMgNUIgMTIgIF9QQ0kzRVQxNy4uLkou
Wy4KICAgIDIyNTA6IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMzIDQ3IDUwIDMxIDM3
IDAwICBcLy5fU0JfUENJM0dQMTcuCiAgICAyMjYwOiA0RCAzNCAzNiAzMCAwRCAyMCAyMCAyMCAy
MCA0RSA2RiA3NCA2OSA2NiA3OSAyMCAgTTQ2MC4gICAgTm90aWZ5IAogICAgMjI3MDogMjggNUMg
NUYgNTMgNDIgMkUgNTAgNDMgNDkgMzMgMkUgNDcgNTAgMzEgMzcgMkMgIChcX1NCLlBDSTMuR1Ax
NywKICAgIDIyODA6IDIwIDMwIDc4IDMyIDI5IDBBIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDg2IDVD
IDJGICAgMHgyKS4uLi4uLi4uLlwvCiAgICAyMjkwOiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAz
MyA0NyA1MCAzMSAzNyAwQSAwMiA1QiAgLl9TQl9QQ0kzR1AxNy4uWwogICAgMjJBMDogMjIgMEEg
NjQgNzAgNEQgMzAgMzEgMzcgNUYgNDIgNDIgNEUgMEEgMDcgMDEgMEEgICIuZHBNMDE3X0JCTi4u
Li4KICAgIDIyQjA6IDc4IDAwIDBBIDIwIDYwIEEwIDQwIDA2IDkyIDkzIDdCIDYwIDBDIDAwIDAw
IDAzICB4Li4gYC5ALi4ue2AuLi4uCiAgICAyMkMwOiAwMCAwMCAwMCA0RCAzMCAzMSAzOCA1RiA0
MiA0MiA0RSAwQSAwNyAwMSAwQSA3OCAgLi4uTTAxOF9CQk4uLi4ueAogICAgMjJEMDogMDAgMEEg
MjAgNjAgNzAgNEQgMzAgMzEgMzcgNUYgNDIgNDIgNEUgMEEgMDcgMDEgIC4uIGBwTTAxN19CQk4u
Li4KICAgIDIyRTA6IDBBIDc4IDAwIDBBIDIwIDYwIEEwIDJGIDkyIDkzIDdCIDYwIDBDIDAwIDAw
IDAzICAueC4uIGAuLy4ue2AuLi4uCiAgICAyMkYwOiAwMCAwMCAwMCA0RCAzMCAzMSAzOCA1RiA0
MiA0MiA0RSAwQSAwNyAwMSAwQSA3OCAgLi4uTTAxOF9CQk4uLi4ueAogICAgMjMwMDogMDAgMEEg
MjAgNjAgNzAgNEQgMzAgMzEgMzcgNUYgNDIgNDIgNEUgMEEgMDcgMDEgIC4uIGBwTTAxN19CQk4u
Li4KICAgIDIzMTA6IDBBIDc4IDAwIDBBIDIwIDYwIEEwIDQxIDEzIDkyIDkzIDVDIDJGIDAzIDVG
IDUzICAueC4uIGAuQS4uLlwvLl9TCiAgICAyMzIwOiA0MiA1RiA1MCA0MyA0OSAzMyA0NSA1NCAz
MiAzNyAwQSBGRiA3MCA3QSA0RCAzMCAgQl9QQ0kzRVQyNy4ucHpNMAogICAgMjMzMDogMzEgMzcg
NUYgNDIgNDIgNEUgMEEgMDcgMEEgMDIgMEEgNzggMDAgMEEgMTggMEEgIDE3X0JCTi4uLi4ueC4u
Li4KICAgIDIzNDA6IDEwIDAwIDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMzIDQ1IDU0
IDMyICAuLlwvLl9TQl9QQ0kzRVQyCiAgICAyMzUwOiAzNyBBMCA0NiAwRiA5MSA5MyA1QyAyRiAw
MyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAgNy5GLi4uXC8uX1NCX1BDSQogICAgMjM2MDogMzMgNDUg
NTQgMzIgMzcgMDEgOTMgNUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAgNDMgIDNFVDI3Li5cLy5fU0Jf
UEMKICAgIDIzNzA6IDQ5IDMzIDQ1IDU0IDMyIDM3IDBBIDAzIEEwIDRGIDBDIDVCIDEyIDVDIDJG
IDAzICBJM0VUMjcuLi5PLlsuXC8uCiAgICAyMzgwOiA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMyA0
NyA1MCAzMiAzNyAwMCA0RCAzNCAzNiAgX1NCX1BDSTNHUDI3Lk00NgogICAgMjM5MDogMzAgMEQg
MjAgMjAgMjAgMjAgNEUgNkYgNzQgNjkgNjYgNzkgMjAgMjggNUMgNUYgIDAuICAgIE5vdGlmeSAo
XF8KICAgIDIzQTA6IDUzIDQyIDJFIDUwIDQzIDQ5IDMzIDJFIDQ3IDUwIDMyIDM3IDJDIDIwIDMw
IDc4ICBTQi5QQ0kzLkdQMjcsIDB4CiAgICAyM0IwOiAzMiAyOSAwQSAwMCAwMCAwMCAwMCAwMCAw
MCAwMCA4NiA1QyAyRiAwMyA1RiA1MyAgMikuLi4uLi4uLi5cLy5fUwogICAgMjNDMDogNDIgNUYg
NTAgNDMgNDkgMzMgNDcgNTAgMzIgMzcgMEEgMDIgNUIgMjIgMEEgNjQgIEJfUENJM0dQMjcuLlsi
LmQKICAgIDIzRDA6IDcwIDREIDMwIDMxIDM3IDVGIDQyIDQyIDRFIDBBIDA3IDBBIDAyIDBBIDc4
IDAwICBwTTAxN19CQk4uLi4uLnguCiAgICAyM0UwOiAwQSAyMCA2MCBBMCA0NCAwNiA5MiA5MyA3
QiA2MCAwQyAwMCAwMCAwMyAwMCAwMCAgLiBgLkQuLi57YC4uLi4uLgogICAgMjNGMDogMDAgNEQg
MzAgMzEgMzggNUYgNDIgNDIgNEUgMEEgMDcgMEEgMDIgMEEgNzggMDAgIC5NMDE4X0JCTi4uLi4u
eC4KICAgIDI0MDA6IDBBIDIwIDYwIDcwIDREIDMwIDMxIDM3IDVGIDQyIDQyIDRFIDBBIDA3IDBB
IDAyICAuIGBwTTAxN19CQk4uLi4uCiAgICAyNDEwOiAwQSA3OCAwMCAwQSAyMCA2MCBBMCAzMSA5
MiA5MyA3QiA2MCAwQyAwMCAwMCAwMyAgLnguLiBgLjEuLntgLi4uLgogICAgMjQyMDogMDAgMDAg
MDAgNEQgMzAgMzEgMzggNUYgNDIgNDIgNEUgMEEgMDcgMEEgMDIgMEEgIC4uLk0wMThfQkJOLi4u
Li4KICAgIDI0MzA6IDc4IDAwIDBBIDIwIDYwIDcwIDREIDMwIDMxIDM3IDVGIDQyIDQyIDRFIDBB
IDA3ICB4Li4gYHBNMDE3X0JCTi4uCiAgICAyNDQwOiAwQSAwMiAwQSA3OCAwMCAwQSAyMCA2MCAg
ICAgICAgICAgICAgICAgICAgICAgICAgLi4ueC4uIGAKClNTRFQgQCAweDAwMDAwMDAwMDAwMDAw
MDAKICAgIDAwMDA6IDUzIDUzIDQ0IDU0IDAwIDA1IDAwIDAwIDAyIDdFIDQxIDREIDQ0IDAwIDAw
IDAwICBTU0RULi4uLi5+QU1ELi4uCiAgICAwMDEwOiA0RCA0NSA0RCA1NCA0RiA0RiA0QyAzMCAw
MiAwMCAwMCAwMCA0OSA0RSA1NCA0QyAgTUVNVE9PTDAuLi4uSU5UTAogICAgMDAyMDogMzEgMDMg
MjMgMjAgQTAgNDMgNDQgMDAgMTUgNUMgNEQgMzEgMzEgMzUgMDMgMDAgIDEuIyAuQ0QuLlxNMTE1
Li4KICAgIDAwMzA6IDE1IDVDIDREIDMxIDMxIDM2IDBFIDAwIDE1IDVDIDREIDMxIDMxIDM3IDBF
IDAwICAuXE0xMTYuLi5cTTExNy4uCiAgICAwMDQwOiAxNSA1QyA0RCAzMSAzMSAzOCAwRSAwMCAx
NSA1QyA0RCAzMSAzMSAzOSAwRSAwMCAgLlxNMTE4Li4uXE0xMTkuLgogICAgMDA1MDogMTUgNUMg
NEQgMzEgMzIgMzAgMEUgMDAgMTUgNUMgNEQgMzAgMzMgMzcgMDYgMDAgIC5cTTEyMC4uLlxNMDM3
Li4KICAgIDAwNjA6IDE1IDVDIDREIDMyIDMyIDM3IDA2IDAwIDE1IDVDIDREIDMzIDMyIDM5IDA2
IDAwICAuXE0yMjcuLi5cTTMyOS4uCiAgICAwMDcwOiAxNSA1QyA0RCAzMyAzMiA0MSAwNiAwMCAx
NSA1QyA0RCAzMyAzMiA0MiAwNiAwMCAgLlxNMzJBLi4uXE0zMkIuLgogICAgMDA4MDogMTUgNUMg
NEQgMzMgMzIgNDMgMDYgMDAgMTUgNUMgNEQgMzMgMzMgMzAgMDYgMDAgIC5cTTMyQy4uLlxNMzMw
Li4KICAgIDAwOTA6IDE1IDVDIDREIDMwIDM4IDMyIDA1IDAwIDE1IDVDIDREIDMwIDM4IDMzIDA1
IDAwICAuXE0wODIuLi5cTTA4My4uCiAgICAwMEEwOiAxNSA1QyA0RCAzMCAzOCAzNCAwNSAwMCAx
NSA1QyA0RCAzMCAzOCAzNSAwNSAwMCAgLlxNMDg0Li4uXE0wODUuLgogICAgMDBCMDogMTUgNUMg
NEQgMzIgMzIgMzEgMDUgMDAgMTUgNUMgNEQgMzAgMzggMzYgMDUgMDAgIC5cTTIyMS4uLlxNMDg2
Li4KICAgIDAwQzA6IDE1IDVDIDREIDMyIDMyIDM5IDA1IDAwIDE1IDVDIDREIDMyIDMzIDMxIDA1
IDAwICAuXE0yMjkuLi5cTTIzMS4uCiAgICAwMEQwOiAxNSA1QyA0RCAzMiAzMyAzNSAwNSAwMCAx
NSA1QyA0RCAzMiAzMyAzMyAwNSAwMCAgLlxNMjM1Li4uXE0yMzMuLgogICAgMDBFMDogMTUgNUMg
NEQgMzAgMzggMzcgMDUgMDAgMTUgNUMgNEQgMzAgMzggMzggMDUgMDAgIC5cTTA4Ny4uLlxNMDg4
Li4KICAgIDAwRjA6IDE1IDVDIDREIDMwIDM4IDM5IDA1IDAwIDE1IDVDIDREIDMwIDM5IDMwIDA1
IDAwICAuXE0wODkuLi5cTTA5MC4uCiAgICAwMTAwOiAxNSA1QyA0RCAzMCAzOSAzMSAwNSAwMCAx
NSA1QyA0RCAzMCAzOSAzMiAwNSAwMCAgLlxNMDkxLi4uXE0wOTIuLgogICAgMDExMDogMTUgNUMg
NEQgMzAgMzkgMzMgMDUgMDAgMTUgNUMgNEQgMzAgMzkgMzQgMDUgMDAgIC5cTTA5My4uLlxNMDk0
Li4KICAgIDAxMjA6IDE1IDVDIDREIDMwIDM5IDM1IDA1IDAwIDE1IDVDIDREIDMwIDM5IDM2IDA1
IDAwICAuXE0wOTUuLi5cTTA5Ni4uCiAgICAwMTMwOiAxNSA1QyA0RCAzMCAzOSAzNyAwNSAwMCAx
NSA1QyA0RCAzMCAzOSAzOCAwNSAwMCAgLlxNMDk3Li4uXE0wOTguLgogICAgMDE0MDogMTUgNUMg
NEQgMzAgMzkgMzkgMDUgMDAgMTUgNUMgNEQgMzEgMzAgMzAgMDUgMDAgIC5cTTA5OS4uLlxNMTAw
Li4KICAgIDAxNTA6IDE1IDVDIDREIDMxIDMwIDMxIDA1IDAwIDE1IDVDIDREIDMxIDMwIDMyIDA1
IDAwICAuXE0xMDEuLi5cTTEwMi4uCiAgICAwMTYwOiAxNSA1QyA0RCAzMSAzMCAzMyAwNSAwMCAx
NSA1QyA0RCAzMSAzMCAzNCAwNSAwMCAgLlxNMTAzLi4uXE0xMDQuLgogICAgMDE3MDogMTUgNUMg
NEQgMzEgMzAgMzUgMDUgMDAgMTUgNUMgNEQgMzEgMzAgMzYgMDUgMDAgIC5cTTEwNS4uLlxNMTA2
Li4KICAgIDAxODA6IDE1IDVDIDREIDMxIDMwIDM3IDA1IDAwIDE1IDVDIDREIDMxIDMyIDM4IDA1
IDAwICAuXE0xMDcuLi5cTTEyOC4uCiAgICAwMTkwOiAxNSA1QyA0RCAzMSAzMCAzOCAwNSAwMCAx
NSA1QyA0RCAzMSAzMCAzOSAwNSAwMCAgLlxNMTA4Li4uXE0xMDkuLgogICAgMDFBMDogMTUgNUMg
NEQgMzEgMzEgMzAgMDUgMDAgMTUgNUMgNEQgMzEgMzIgMzIgMDUgMDAgIC5cTTExMC4uLlxNMTIy
Li4KICAgIDAxQjA6IDE1IDVDIDREIDMxIDMzIDMxIDA1IDAwIDE1IDVDIDREIDMxIDMzIDMyIDA1
IDAwICAuXE0xMzEuLi5cTTEzMi4uCiAgICAwMUMwOiAxNSA1QyA0RCAzMiAzMiAzNiAwNSAwMCAx
NSA1QyA0RCAzMSAzMyAzMyAwNSAwMCAgLlxNMjI2Li4uXE0xMzMuLgogICAgMDFEMDogMTUgNUMg
NEQgMzEgMzMgMzQgMDUgMDAgMTUgNUMgNEQgMzEgMzMgMzUgMDUgMDAgIC5cTTEzNC4uLlxNMTM1
Li4KICAgIDAxRTA6IDE1IDVDIDREIDMxIDMzIDM2IDA1IDAwIDE1IDVDIDREIDMyIDMyIDMwIDA1
IDAwICAuXE0xMzYuLi5cTTIyMC4uCiAgICAwMUYwOiAxNSA1QyA0RCAzMiAzMyAzMiAwOCAwMyAx
NSA1QyA0RCAzMCAzNCAzNiAwMSAwMCAgLlxNMjMyLi4uXE0wNDYuLgogICAgMDIwMDogMTUgNUMg
NEQgMzAgMzQgMzcgMDEgMDAgMTUgNUMgNEQgMzAgMzQgMzkgMDggMDIgIC5cTTA0Ny4uLlxNMDQ5
Li4KICAgIDAyMTA6IDE1IDVDIDREIDMwIDM0IDQ1IDA4IDAzIDE1IDVDIDREIDMyIDM1IDMxIDA1
IDAwICAuXE0wNEUuLi5cTTI1MS4uCiAgICAwMjIwOiAxNSA1QyA0RCAzMyAzMSAzMCAwNSAwMCAx
NSA1QyA0RCAzMyAzMSA0MyAwNSAwMCAgLlxNMzEwLi4uXE0zMUMuLgogICAgMDIzMDogMTUgNUMg
NEQgMzMgMzIgMzAgMDUgMDAgMTUgNUMgNEQgMzMgMzIgMzEgMDUgMDAgIC5cTTMyMC4uLlxNMzIx
Li4KICAgIDAyNDA6IDE1IDVDIDREIDMzIDMyIDMyIDA1IDAwIDE1IDVDIDREIDMzIDMyIDMzIDA1
IDAwICAuXE0zMjIuLi5cTTMyMy4uCiAgICAwMjUwOiAxNSA1QyA0RCAzMyAzMiAzNCAwNSAwMCAx
NSA1QyA0RCAzMyAzMiAzNSAwNSAwMCAgLlxNMzI0Li4uXE0zMjUuLgogICAgMDI2MDogMTUgNUMg
NEQgMzMgMzIgMzYgMDUgMDAgMTUgNUMgNEQgMzMgMzIgMzcgMDUgMDAgIC5cTTMyNi4uLlxNMzI3
Li4KICAgIDAyNzA6IDE1IDVDIDREIDMzIDMyIDM4IDA1IDAwIDE1IDVDIDREIDMyIDM4IDMwIDA1
IDAwICAuXE0zMjguLi5cTTI4MC4uCiAgICAwMjgwOiAxNSA1QyA0RCAzMiAzOSAzMCAwNSAwMCAx
NSA1QyA0RCAzMyAzNyAzOCAwNSAwMCAgLlxNMjkwLi4uXE0zNzguLgogICAgMDI5MDogMTUgNUMg
NEQgMzMgMzcgMzkgMDUgMDAgMTUgNUMgNEQgMzMgMzggMzAgMDUgMDAgIC5cTTM3OS4uLlxNMzgw
Li4KICAgIDAyQTA6IDE1IDVDIDREIDMzIDM4IDMxIDA1IDAwIDE1IDVDIDREIDMzIDM4IDMyIDA1
IDAwICAuXE0zODEuLi5cTTM4Mi4uCiAgICAwMkIwOiAxNSA1QyA0RCAzMyAzOCAzMyAwNSAwMCAx
NSA1QyA0RCAzMyAzOCAzNCAwNSAwMCAgLlxNMzgzLi4uXE0zODQuLgogICAgMDJDMDogMTUgNUMg
NEQgMzMgMzggMzUgMDUgMDAgMTUgNUMgNEQgMzMgMzggMzYgMDUgMDAgIC5cTTM4NS4uLlxNMzg2
Li4KICAgIDAyRDA6IDE1IDVDIDREIDMzIDM4IDM3IDA1IDAwIDE1IDVDIDREIDMzIDM4IDM4IDA1
IDAwICAuXE0zODcuLi5cTTM4OC4uCiAgICAwMkUwOiAxNSA1QyA0RCAzMyAzOCAzOSAwNSAwMCAx
NSA1QyA0RCAzMyAzOSAzMCAwNSAwMCAgLlxNMzg5Li4uXE0zOTAuLgogICAgMDJGMDogMTUgNUMg
NEQgMzMgMzkgMzEgMDUgMDAgMTUgNUMgNEQgMzMgMzkgMzIgMDUgMDAgIC5cTTM5MS4uLlxNMzky
Li4KICAgIDAzMDA6IDE1IDVDIDREIDMzIDMzIDMxIDA1IDAwIDE1IDVDIDREIDM2IDMyIDMwIDA1
IDAwICAuXE0zMzEuLi5cTTYyMC4uCiAgICAwMzEwOiAxNSA1QyA0RCAzNCAzMCAzNCAwMyAwMCAx
NSA1QyA0RCAzNCAzMCAzOCAwOSAwMCAgLlxNNDA0Li4uXE00MDguLgogICAgMDMyMDogMTUgNUMg
NEQgMzQgMzEgMzQgMDUgMDAgMTUgNUMgNEQgMzQgMzQgMzQgMDUgMDAgIC5cTTQxNC4uLlxNNDQ0
Li4KICAgIDAzMzA6IDE1IDVDIDREIDM0IDM1IDMzIDA1IDAwIDE1IDVDIDREIDM0IDM1IDM0IDA1
IDAwICAuXE00NTMuLi5cTTQ1NC4uCiAgICAwMzQwOiAxNSA1QyA0RCAzNCAzNSAzNSAwNSAwMCAx
NSA1QyA0RCAzNCAzNSAzNiAwNSAwMCAgLlxNNDU1Li4uXE00NTYuLgogICAgMDM1MDogMTUgNUMg
NEQgMzQgMzUgMzcgMDUgMDAgMTUgNUMgNEQgMzQgMzYgMzAgMDggMDcgIC5cTTQ1Ny4uLlxNNDYw
Li4KICAgIDAzNjA6IDE1IDVDIDREIDM0IDM0IDM5IDA1IDAwIDE1IDVDIDREIDM0IDQzIDMwIDA1
IDAwICAuXE00NDkuLi5cTTRDMC4uCiAgICAwMzcwOiAxNSA1QyA0RCAzMiAzMyA0MSAwNSAwMCAx
NSA1QyA0RCAzNCA0NiAzMCAwNSAwMCAgLlxNMjNBLi4uXE00RjAuLgogICAgMDM4MDogMTUgNUMg
NEQgMzYgMzEgMzAgMDUgMDAgMTUgNUMgNEQgMzIgMzkgNDEgMDUgMDAgIC5cTTYxMC4uLlxNMjlB
Li4KICAgIDAzOTA6IDE1IDVDIDREIDM2IDMzIDMxIDA1IDAwIDE1IDVDIDREIDM2IDM1IDMyIDA1
IDAwICAuXE02MzEuLi5cTTY1Mi4uCiAgICAwM0EwOiAxNSA1QyA0RCAzMCAzNSAzMCAwNiAwMCAx
NSA1QyA0RCAzMCAzNSAzMSAwNiAwMCAgLlxNMDUwLi4uXE0wNTEuLgogICAgMDNCMDogMTUgNUMg
NEQgMzAgMzUgMzIgMDYgMDAgMTUgNUMgNEQgMzAgMzUgMzMgMDYgMDAgIC5cTTA1Mi4uLlxNMDUz
Li4KICAgIDAzQzA6IDE1IDVDIDREIDMwIDM1IDM0IDA2IDAwIDE1IDVDIDREIDMwIDM1IDM1IDA2
IDAwICAuXE0wNTQuLi5cTTA1NS4uCiAgICAwM0QwOiAxNSA1QyA0RCAzMCAzNSAzNiAwNiAwMCAx
NSA1QyA0RCAzMCAzNSAzNyAwNiAwMCAgLlxNMDU2Li4uXE0wNTcuLgogICAgMDNFMDogMTUgNUMg
NEQgMzAgMzUgMzggMDYgMDAgMTUgNUMgNEQgMzAgMzUgMzkgMDYgMDAgIC5cTTA1OC4uLlxNMDU5
Li4KICAgIDAzRjA6IDE1IDVDIDREIDMwIDM2IDMyIDA2IDAwIDE1IDVDIDREIDMwIDM2IDM4IDA2
IDAwICAuXE0wNjIuLi5cTTA2OC4uCiAgICAwNDAwOiAxNSA1QyA0RCAzMCAzNiAzOSAwNiAwMCAx
NSA1QyA0RCAzMCAzNyAzMCAwNiAwMCAgLlxNMDY5Li4uXE0wNzAuLgogICAgMDQxMDogMTUgNUMg
NEQgMzAgMzcgMzEgMDYgMDAgMTUgNUMgNEQgMzAgMzcgMzIgMDYgMDAgIC5cTTA3MS4uLlxNMDcy
Li4KICAgIDA0MjA6IDE1IDVDIDREIDMwIDM3IDM0IDA2IDAwIDE1IDVDIDREIDMwIDM3IDM1IDA2
IDAwICAuXE0wNzQuLi5cTTA3NS4uCiAgICAwNDMwOiAxNSA1QyA0RCAzMCAzNyAzNiAwNiAwMCAx
NSA1QyA0RCAzMCAzNyAzNyAwNiAwMCAgLlxNMDc2Li4uXE0wNzcuLgogICAgMDQ0MDogMTUgNUMg
NEQgMzAgMzcgMzggMDYgMDAgMTUgNUMgNEQgMzAgMzcgMzkgMDYgMDAgIC5cTTA3OC4uLlxNMDc5
Li4KICAgIDA0NTA6IDE1IDVDIDREIDMwIDM4IDMwIDA2IDAwIDE1IDVDIDREIDMwIDM4IDMxIDA2
IDAwICAuXE0wODAuLi5cTTA4MS4uCiAgICAwNDYwOiAxNSA1QyA0RCAzMSAzMiAzNyAwNiAwMCAx
NCA0NyAwOSA0RCA0NyA1MiA1NCAwMSAgLlxNMTI3Li4uRy5NR1JULgogICAgMDQ3MDogOEEgNjgg
MDAgNEQgNDUgNEQgNDkgOEEgNjggMEEgMDQgNEQgNDUgNEQgNDQgNEQgIC5oLk1FTUkuaC4uTUVN
RE0KICAgIDA0ODA6IDM0IDM2IDMwIDBEIDIwIDIwIDQ2IDQ1IDQxIDJEIDQxIDUzIDRDIDJEIDRE
IDY1ICA0NjAuICBGRUEtQVNMLU1lCiAgICAwNDkwOiA2RCA2RiA3MiA3OSAyMCA0RCA2MSA3MiA2
NyA2OSA2RSAyMCA1NCA2RiA2RiA2QyAgbW9yeSBNYXJnaW4gVG9vbAogICAgMDRBMDogMjAgNDMg
NkQgNjQgM0EgMzAgNzggMjUgNTggMjAgNTYgNjEgNkMgNzUgNjUgM0EgICBDbWQ6MHglWCBWYWx1
ZToKICAgIDA0QjA6IDMwIDc4IDI1IDU4IDBBIDAwIDREIDQ1IDREIDQ5IDREIDQ1IDREIDQ0IDAw
IDAwICAweCVYLi5NRU1JTUVNRC4uCiAgICAwNEMwOiAwMCAwMCBBMCAzRCA5MiA5MyA0RCAzNiAz
MSAzMCAwMCA3MCA0RCAzMCAzNCAzOSAgLi4uPS4uTTYxMC5wTTA0OQogICAgMDREMDogNEQgMzYg
MzEgMzAgMEEgMTAgNjIgNzAgNEQgNDUgNEQgNDkgNjMgNzAgNEQgNDUgIE02MTAuLmJwTUVNSWNw
TUUKICAgIDA0RTA6IDREIDQ0IDY0IDREIDMwIDM0IDQ1IDREIDM2IDMxIDMwIDBBIDExIDYzIDRE
IDMwICBNRGRNMDRFTTYxMC4uY00wCiAgICAwNEYwOiAzNCA0NSA0RCAzNiAzMSAzMCAwQSAxNSA2
NCA0RCAzMiAzMyAzMiA2MiAwMCAwMCAgNEVNNjEwLi5kTTIzMmIuLgoKU1NEVCBAIDB4MDAwMDAw
MDAwMDAwMDAwMAogICAgMDAwMDogNTMgNTMgNDQgNTQgNDggMjQgMDAgMDAgMDIgNzAgNDEgNEQg
NDQgMDAgMDAgMDAgIFNTRFRIJC4uLnBBTUQuLi4KICAgIDAwMTA6IDQ3IDUwIDUwIDVGIDUwIDRE
IDQ1IDVGIDAxIDAwIDAwIDAwIDQ5IDRFIDU0IDRDICBHUFBfUE1FXy4uLi5JTlRMCiAgICAwMDIw
OiAzMSAwMyAyMyAyMCBBMCA0OCA2MCAwMCAxNSA1QyA0RCAzMCAzMSAzNyAwOCAwNiAgMS4jIC5I
YC4uXE0wMTcuLgogICAgMDAzMDogMTUgNUMgNEQgMzAgMzEgMzggMDggMDcgMTUgNUMgNEQgMzEg
MzEgMzUgMDMgMDAgIC5cTTAxOC4uLlxNMTE1Li4KICAgIDAwNDA6IDE1IDVDIDREIDMxIDMxIDM2
IDBFIDAwIDE1IDVDIDREIDMxIDMxIDM3IDBFIDAwICAuXE0xMTYuLi5cTTExNy4uCiAgICAwMDUw
OiAxNSA1QyA0RCAzMSAzMSAzOCAwRSAwMCAxNSA1QyA0RCAzMSAzMSAzOSAwRSAwMCAgLlxNMTE4
Li4uXE0xMTkuLgogICAgMDA2MDogMTUgNUMgNEQgMzEgMzIgMzAgMEUgMDAgMTUgNUMgNEQgMzAg
MzMgMzcgMDYgMDAgIC5cTTEyMC4uLlxNMDM3Li4KICAgIDAwNzA6IDE1IDVDIDREIDMyIDMyIDM3
IDA2IDAwIDE1IDVDIDREIDMzIDMyIDM5IDA2IDAwICAuXE0yMjcuLi5cTTMyOS4uCiAgICAwMDgw
OiAxNSA1QyA0RCAzMyAzMiA0MSAwNiAwMCAxNSA1QyA0RCAzMyAzMiA0MiAwNiAwMCAgLlxNMzJB
Li4uXE0zMkIuLgogICAgMDA5MDogMTUgNUMgNEQgMzMgMzIgNDMgMDYgMDAgMTUgNUMgNEQgMzMg
MzMgMzAgMDYgMDAgIC5cTTMyQy4uLlxNMzMwLi4KICAgIDAwQTA6IDE1IDVDIDREIDMwIDM4IDMy
IDA1IDAwIDE1IDVDIDREIDMwIDM4IDMzIDA1IDAwICAuXE0wODIuLi5cTTA4My4uCiAgICAwMEIw
OiAxNSA1QyA0RCAzMCAzOCAzNCAwNSAwMCAxNSA1QyA0RCAzMCAzOCAzNSAwNSAwMCAgLlxNMDg0
Li4uXE0wODUuLgogICAgMDBDMDogMTUgNUMgNEQgMzIgMzIgMzEgMDUgMDAgMTUgNUMgNEQgMzAg
MzggMzYgMDUgMDAgIC5cTTIyMS4uLlxNMDg2Li4KICAgIDAwRDA6IDE1IDVDIDREIDMyIDMyIDM5
IDA1IDAwIDE1IDVDIDREIDMyIDMzIDMxIDA1IDAwICAuXE0yMjkuLi5cTTIzMS4uCiAgICAwMEUw
OiAxNSA1QyA0RCAzMiAzMyAzNSAwNSAwMCAxNSA1QyA0RCAzMiAzMyAzMyAwNSAwMCAgLlxNMjM1
Li4uXE0yMzMuLgogICAgMDBGMDogMTUgNUMgNEQgMzAgMzggMzcgMDUgMDAgMTUgNUMgNEQgMzAg
MzggMzggMDUgMDAgIC5cTTA4Ny4uLlxNMDg4Li4KICAgIDAxMDA6IDE1IDVDIDREIDMwIDM4IDM5
IDA1IDAwIDE1IDVDIDREIDMwIDM5IDMwIDA1IDAwICAuXE0wODkuLi5cTTA5MC4uCiAgICAwMTEw
OiAxNSA1QyA0RCAzMCAzOSAzMSAwNSAwMCAxNSA1QyA0RCAzMCAzOSAzMiAwNSAwMCAgLlxNMDkx
Li4uXE0wOTIuLgogICAgMDEyMDogMTUgNUMgNEQgMzAgMzkgMzMgMDUgMDAgMTUgNUMgNEQgMzAg
MzkgMzQgMDUgMDAgIC5cTTA5My4uLlxNMDk0Li4KICAgIDAxMzA6IDE1IDVDIDREIDMwIDM5IDM1
IDA1IDAwIDE1IDVDIDREIDMwIDM5IDM2IDA1IDAwICAuXE0wOTUuLi5cTTA5Ni4uCiAgICAwMTQw
OiAxNSA1QyA0RCAzMCAzOSAzNyAwNSAwMCAxNSA1QyA0RCAzMCAzOSAzOCAwNSAwMCAgLlxNMDk3
Li4uXE0wOTguLgogICAgMDE1MDogMTUgNUMgNEQgMzAgMzkgMzkgMDUgMDAgMTUgNUMgNEQgMzEg
MzAgMzAgMDUgMDAgIC5cTTA5OS4uLlxNMTAwLi4KICAgIDAxNjA6IDE1IDVDIDREIDMxIDMwIDMx
IDA1IDAwIDE1IDVDIDREIDMxIDMwIDMyIDA1IDAwICAuXE0xMDEuLi5cTTEwMi4uCiAgICAwMTcw
OiAxNSA1QyA0RCAzMSAzMCAzMyAwNSAwMCAxNSA1QyA0RCAzMSAzMCAzNCAwNSAwMCAgLlxNMTAz
Li4uXE0xMDQuLgogICAgMDE4MDogMTUgNUMgNEQgMzEgMzAgMzUgMDUgMDAgMTUgNUMgNEQgMzEg
MzAgMzYgMDUgMDAgIC5cTTEwNS4uLlxNMTA2Li4KICAgIDAxOTA6IDE1IDVDIDREIDMxIDMwIDM3
IDA1IDAwIDE1IDVDIDREIDMxIDMyIDM4IDA1IDAwICAuXE0xMDcuLi5cTTEyOC4uCiAgICAwMUEw
OiAxNSA1QyA0RCAzMSAzMCAzOCAwNSAwMCAxNSA1QyA0RCAzMSAzMCAzOSAwNSAwMCAgLlxNMTA4
Li4uXE0xMDkuLgogICAgMDFCMDogMTUgNUMgNEQgMzEgMzEgMzAgMDUgMDAgMTUgNUMgNEQgMzEg
MzIgMzIgMDUgMDAgIC5cTTExMC4uLlxNMTIyLi4KICAgIDAxQzA6IDE1IDVDIDREIDMxIDMzIDMx
IDA1IDAwIDE1IDVDIDREIDMxIDMzIDMyIDA1IDAwICAuXE0xMzEuLi5cTTEzMi4uCiAgICAwMUQw
OiAxNSA1QyA0RCAzMiAzMiAzNiAwNSAwMCAxNSA1QyA0RCAzMSAzMyAzMyAwNSAwMCAgLlxNMjI2
Li4uXE0xMzMuLgogICAgMDFFMDogMTUgNUMgNEQgMzEgMzMgMzQgMDUgMDAgMTUgNUMgNEQgMzEg
MzMgMzUgMDUgMDAgIC5cTTEzNC4uLlxNMTM1Li4KICAgIDAxRjA6IDE1IDVDIDREIDMxIDMzIDM2
IDA1IDAwIDE1IDVDIDREIDMyIDMyIDMwIDA1IDAwICAuXE0xMzYuLi5cTTIyMC4uCiAgICAwMjAw
OiAxNSA1QyA0RCAzMCAzNCAzNiAwMSAwMCAxNSA1QyA0RCAzMCAzNCAzNyAwMSAwMCAgLlxNMDQ2
Li4uXE0wNDcuLgogICAgMDIxMDogMTUgNUMgNEQgMzAgMzQgMzkgMDggMDIgMTUgNUMgNEQgMzIg
MzUgMzEgMDUgMDAgIC5cTTA0OS4uLlxNMjUxLi4KICAgIDAyMjA6IDE1IDVDIDREIDMzIDMxIDMw
IDA1IDAwIDE1IDVDIDREIDMzIDMxIDQzIDA1IDAwICAuXE0zMTAuLi5cTTMxQy4uCiAgICAwMjMw
OiAxNSA1QyA0RCAzMyAzMiAzMCAwNSAwMCAxNSA1QyA0RCAzMyAzMiAzMSAwNSAwMCAgLlxNMzIw
Li4uXE0zMjEuLgogICAgMDI0MDogMTUgNUMgNEQgMzMgMzIgMzIgMDUgMDAgMTUgNUMgNEQgMzMg
MzIgMzMgMDUgMDAgIC5cTTMyMi4uLlxNMzIzLi4KICAgIDAyNTA6IDE1IDVDIDREIDMzIDMyIDM0
IDA1IDAwIDE1IDVDIDREIDMzIDMyIDM1IDA1IDAwICAuXE0zMjQuLi5cTTMyNS4uCiAgICAwMjYw
OiAxNSA1QyA0RCAzMyAzMiAzNiAwNSAwMCAxNSA1QyA0RCAzMyAzMiAzNyAwNSAwMCAgLlxNMzI2
Li4uXE0zMjcuLgogICAgMDI3MDogMTUgNUMgNEQgMzMgMzIgMzggMDUgMDAgMTUgNUMgNEQgMzIg
MzggMzAgMDUgMDAgIC5cTTMyOC4uLlxNMjgwLi4KICAgIDAyODA6IDE1IDVDIDREIDMyIDM5IDMw
IDA1IDAwIDE1IDVDIDREIDMzIDM3IDM4IDA1IDAwICAuXE0yOTAuLi5cTTM3OC4uCiAgICAwMjkw
OiAxNSA1QyA0RCAzMyAzNyAzOSAwNSAwMCAxNSA1QyA0RCAzMyAzOCAzMCAwNSAwMCAgLlxNMzc5
Li4uXE0zODAuLgogICAgMDJBMDogMTUgNUMgNEQgMzMgMzggMzEgMDUgMDAgMTUgNUMgNEQgMzMg
MzggMzIgMDUgMDAgIC5cTTM4MS4uLlxNMzgyLi4KICAgIDAyQjA6IDE1IDVDIDREIDMzIDM4IDMz
IDA1IDAwIDE1IDVDIDREIDMzIDM4IDM0IDA1IDAwICAuXE0zODMuLi5cTTM4NC4uCiAgICAwMkMw
OiAxNSA1QyA0RCAzMyAzOCAzNSAwNSAwMCAxNSA1QyA0RCAzMyAzOCAzNiAwNSAwMCAgLlxNMzg1
Li4uXE0zODYuLgogICAgMDJEMDogMTUgNUMgNEQgMzMgMzggMzcgMDUgMDAgMTUgNUMgNEQgMzMg
MzggMzggMDUgMDAgIC5cTTM4Ny4uLlxNMzg4Li4KICAgIDAyRTA6IDE1IDVDIDREIDMzIDM4IDM5
IDA1IDAwIDE1IDVDIDREIDMzIDM5IDMwIDA1IDAwICAuXE0zODkuLi5cTTM5MC4uCiAgICAwMkYw
OiAxNSA1QyA0RCAzMyAzOSAzMSAwNSAwMCAxNSA1QyA0RCAzMyAzOSAzMiAwNSAwMCAgLlxNMzkx
Li4uXE0zOTIuLgogICAgMDMwMDogMTUgNUMgNEQgMzMgMzMgMzEgMDUgMDAgMTUgNUMgNEQgMzYg
MzIgMzAgMDUgMDAgIC5cTTMzMS4uLlxNNjIwLi4KICAgIDAzMTA6IDE1IDVDIDREIDM0IDMwIDM0
IDAzIDAwIDE1IDVDIDREIDM0IDMwIDM4IDA5IDAwICAuXE00MDQuLi5cTTQwOC4uCiAgICAwMzIw
OiAxNSA1QyA0RCAzNCAzMSAzNCAwNSAwMCAxNSA1QyA0RCAzNCAzNCAzNCAwNSAwMCAgLlxNNDE0
Li4uXE00NDQuLgogICAgMDMzMDogMTUgNUMgNEQgMzQgMzUgMzMgMDUgMDAgMTUgNUMgNEQgMzQg
MzUgMzQgMDUgMDAgIC5cTTQ1My4uLlxNNDU0Li4KICAgIDAzNDA6IDE1IDVDIDREIDM0IDM1IDM1
IDA1IDAwIDE1IDVDIDREIDM0IDM1IDM2IDA1IDAwICAuXE00NTUuLi5cTTQ1Ni4uCiAgICAwMzUw
OiAxNSA1QyA0RCAzNCAzNSAzNyAwNSAwMCAxNSA1QyA0RCAzNCAzNiAzMCAwOCAwNyAgLlxNNDU3
Li4uXE00NjAuLgogICAgMDM2MDogMTUgNUMgNEQgMzQgMzQgMzkgMDUgMDAgMTUgNUMgNEQgMzQg
NDMgMzAgMDUgMDAgIC5cTTQ0OS4uLlxNNEMwLi4KICAgIDAzNzA6IDE1IDVDIDREIDMyIDMzIDQx
IDA1IDAwIDE1IDVDIDREIDM0IDQ2IDMwIDA1IDAwICAuXE0yM0EuLi5cTTRGMC4uCiAgICAwMzgw
OiAxNSA1QyA0RCAzNiAzMSAzMCAwNSAwMCAxNSA1QyA0RCAzMiAzOSA0MSAwNSAwMCAgLlxNNjEw
Li4uXE0yOUEuLgogICAgMDM5MDogMTUgNUMgNEQgMzYgMzMgMzEgMDUgMDAgMTUgNUMgNEQgMzYg
MzUgMzIgMDUgMDAgIC5cTTYzMS4uLlxNNjUyLi4KICAgIDAzQTA6IDE1IDVDIDREIDMwIDM1IDMw
IDA2IDAwIDE1IDVDIDREIDMwIDM1IDMxIDA2IDAwICAuXE0wNTAuLi5cTTA1MS4uCiAgICAwM0Iw
OiAxNSA1QyA0RCAzMCAzNSAzMiAwNiAwMCAxNSA1QyA0RCAzMCAzNSAzMyAwNiAwMCAgLlxNMDUy
Li4uXE0wNTMuLgogICAgMDNDMDogMTUgNUMgNEQgMzAgMzUgMzQgMDYgMDAgMTUgNUMgNEQgMzAg
MzUgMzUgMDYgMDAgIC5cTTA1NC4uLlxNMDU1Li4KICAgIDAzRDA6IDE1IDVDIDREIDMwIDM1IDM2
IDA2IDAwIDE1IDVDIDREIDMwIDM1IDM3IDA2IDAwICAuXE0wNTYuLi5cTTA1Ny4uCiAgICAwM0Uw
OiAxNSA1QyA0RCAzMCAzNSAzOCAwNiAwMCAxNSA1QyA0RCAzMCAzNSAzOSAwNiAwMCAgLlxNMDU4
Li4uXE0wNTkuLgogICAgMDNGMDogMTUgNUMgNEQgMzAgMzYgMzIgMDYgMDAgMTUgNUMgNEQgMzAg
MzYgMzggMDYgMDAgIC5cTTA2Mi4uLlxNMDY4Li4KICAgIDA0MDA6IDE1IDVDIDREIDMwIDM2IDM5
IDA2IDAwIDE1IDVDIDREIDMwIDM3IDMwIDA2IDAwICAuXE0wNjkuLi5cTTA3MC4uCiAgICAwNDEw
OiAxNSA1QyA0RCAzMCAzNyAzMSAwNiAwMCAxNSA1QyA0RCAzMCAzNyAzMiAwNiAwMCAgLlxNMDcx
Li4uXE0wNzIuLgogICAgMDQyMDogMTUgNUMgNEQgMzAgMzcgMzQgMDYgMDAgMTUgNUMgNEQgMzAg
MzcgMzUgMDYgMDAgIC5cTTA3NC4uLlxNMDc1Li4KICAgIDA0MzA6IDE1IDVDIDREIDMwIDM3IDM2
IDA2IDAwIDE1IDVDIDREIDMwIDM3IDM3IDA2IDAwICAuXE0wNzYuLi5cTTA3Ny4uCiAgICAwNDQw
OiAxNSA1QyA0RCAzMCAzNyAzOCAwNiAwMCAxNSA1QyA0RCAzMCAzNyAzOSAwNiAwMCAgLlxNMDc4
Li4uXE0wNzkuLgogICAgMDQ1MDogMTUgNUMgNEQgMzAgMzggMzAgMDYgMDAgMTUgNUMgNEQgMzAg
MzggMzEgMDYgMDAgIC5cTTA4MC4uLlxNMDgxLi4KICAgIDA0NjA6IDE1IDVDIDREIDMxIDMyIDM3
IDA2IDAwIDE1IDVDIDVGIDQyIDQyIDRFIDAxIDAwICAuXE0xMjcuLi5cX0JCTi4uCiAgICAwNDcw
OiAxNSA1QyAyRSA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMSAwNiAwMCAxNSA1QyAyRiAgLlwuX1NC
X1BDSTEuLi5cLwogICAgMDQ4MDogMDMgNUYgNTMgNDIgNUYgNTAgNDMgNDkgMzEgNDcgNTAgNTAg
MzAgMDYgMDAgMTUgIC5fU0JfUENJMUdQUDAuLi4KICAgIDA0OTA6IDVDIDJGIDAzIDVGIDUzIDQy
IDVGIDUwIDQzIDQ5IDMxIDQ3IDUwIDUwIDMxIDA2ICBcLy5fU0JfUENJMUdQUDEuCiAgICAwNEEw
OiAwMCAxNSA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMSA0NyA1MCA1MCAgLi5cLy5f
U0JfUENJMUdQUAogICAgMDRCMDogMzIgMDYgMDAgMTUgNUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAg
NDMgNDkgMzEgNDcgIDIuLi5cLy5fU0JfUENJMUcKICAgIDA0QzA6IDUwIDUwIDMzIDA2IDAwIDE1
IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5ICBQUDMuLi5cLy5fU0JfUENJCiAgICAwNEQw
OiAzMSA0NyA1MCA1MCAzNCAwNiAwMCAxNSA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCAgMUdQUDQu
Li5cLy5fU0JfUAogICAgMDRFMDogNDMgNDkgMzEgNDcgNTAgNTAgMzUgMDYgMDAgMTUgNUMgMkYg
MDMgNUYgNTMgNDIgIENJMUdQUDUuLi5cLy5fU0IKICAgIDA0RjA6IDVGIDUwIDQzIDQ5IDMxIDQ3
IDUwIDUwIDM2IDA2IDAwIDE1IDVDIDJGIDAzIDVGICBfUENJMUdQUDYuLi5cLy5fCiAgICAwNTAw
OiA1MyA0MiA1RiA1MCA0MyA0OSAzMSA0NyA1MCA1MCAzNyAwNiAwMCAxNSA1QyAyRiAgU0JfUENJ
MUdQUDcuLi5cLwogICAgMDUxMDogMDMgNUYgNTMgNDIgNUYgNTAgNDMgNDkgMzEgNDcgNTAgNTAg
MzggMDYgMDAgMTUgIC5fU0JfUENJMUdQUDguLi4KICAgIDA1MjA6IDVDIDJGIDAzIDVGIDUzIDQy
IDVGIDUwIDQzIDQ5IDMxIDQ3IDUwIDUwIDM5IDA2ICBcLy5fU0JfUENJMUdQUDkuCiAgICAwNTMw
OiAwMCAxNSA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMSA0NyA1MCA1MCAgLi5cLy5f
U0JfUENJMUdQUAogICAgMDU0MDogNDEgMDYgMDAgMTUgNUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAg
NDMgNDkgMzEgNDcgIEEuLi5cLy5fU0JfUENJMUcKICAgIDA1NTA6IDUwIDUwIDQyIDA2IDAwIDE1
IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5ICBQUEIuLi5cLy5fU0JfUENJCiAgICAwNTYw
OiAzMSA0NyA1MCA1MCA0MyAwNiAwMCAxNSA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCAgMUdQUEMu
Li5cLy5fU0JfUAogICAgMDU3MDogNDMgNDkgMzEgNDcgNTAgNTAgNDQgMDYgMDAgMTUgNUMgMkYg
MDMgNUYgNTMgNDIgIENJMUdQUEQuLi5cLy5fU0IKICAgIDA1ODA6IDVGIDUwIDQzIDQ5IDMxIDQ3
IDUwIDUwIDQ1IDA2IDAwIDE1IDVDIDJGIDAzIDVGICBfUENJMUdQUEUuLi5cLy5fCiAgICAwNTkw
OiA1MyA0MiA1RiA1MCA0MyA0OSAzMSA0NyA1MCA1MCA0NiAwNiAwMCAxNSA1QyAyRiAgU0JfUENJ
MUdQUEYuLi5cLwogICAgMDVBMDogMDMgNUYgNTMgNDIgNUYgNTAgNDMgNDkgMzEgNDcgNTAgNTAg
NDcgMDYgMDAgMTUgIC5fU0JfUENJMUdQUEcuLi4KICAgIDA1QjA6IDVDIDJGIDAzIDVGIDUzIDQy
IDVGIDUwIDQzIDQ5IDMxIDQ3IDUwIDUwIDQ4IDA2ICBcLy5fU0JfUENJMUdQUEguCiAgICAwNUMw
OiAwMCAxNSA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMSA0NyA1MCAzMSAgLi5cLy5f
U0JfUENJMUdQMQogICAgMDVEMDogMzUgMDYgMDAgMTUgNUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAg
NDMgNDkgMzEgNDcgIDUuLi5cLy5fU0JfUENJMUcKICAgIDA1RTA6IDUwIDMyIDM1IDA2IDAwIDE1
IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5ICBQMjUuLi5cLy5fU0JfUENJCiAgICAwNUYw
OiAzMSA0NyA1MCAzMyAzNSAwNiAwMCAxNSA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCAgMUdQMzUu
Li5cLy5fU0JfUAogICAgMDYwMDogNDMgNDkgMzEgNDcgNTAgMzQgMzUgMDYgMDAgMTUgNUMgMkYg
MDMgNUYgNTMgNDIgIENJMUdQNDUuLi5cLy5fU0IKICAgIDA2MTA6IDVGIDUwIDQzIDQ5IDMxIDQ3
IDUwIDMxIDM3IDA2IDAwIDE1IDVDIDJGIDAzIDVGICBfUENJMUdQMTcuLi5cLy5fCiAgICAwNjIw
OiA1MyA0MiA1RiA1MCA0MyA0OSAzMSA0NyA1MCAzMiAzNyAwNiAwMCAxMCA4QSBFMSAgU0JfUENJ
MUdQMjcuLi4uLgogICAgMDYzMDogMDEgNUMgMkUgNUYgNTMgNDIgNUYgNTAgNDMgNDkgMzEgMDgg
NDUgNTQgNTAgMzAgIC5cLl9TQl9QQ0kxLkVUUDAKICAgIDA2NDA6IDBBIDU1IDA4IDQ1IDU0IDUw
IDMxIDBBIDU1IDA4IDQ1IDU0IDUwIDMyIDBBIDU1ICAuVS5FVFAxLlUuRVRQMi5VCiAgICAwNjUw
OiAwOCA0NSA1NCA1MCAzMyAwQSA1NSAwOCA0NSA1NCA1MCAzNCAwQSA1NSAwOCA0NSAgLkVUUDMu
VS5FVFA0LlUuRQogICAgMDY2MDogNTQgNTAgMzUgMEEgNTUgMDggNDUgNTQgNTAgMzYgMEEgNTUg
MDggNDUgNTQgNTAgIFRQNS5VLkVUUDYuVS5FVFAKICAgIDA2NzA6IDM3IDBBIDU1IDA4IDQ1IDU0
IDUwIDM4IDBBIDU1IDA4IDQ1IDU0IDUwIDM5IDBBICA3LlUuRVRQOC5VLkVUUDkuCiAgICAwNjgw
OiA1NSAwOCA0NSA1NCA1MCA0MSAwQSA1NSAwOCA0NSA1NCA1MCA0MiAwQSA1NSAwOCAgVS5FVFBB
LlUuRVRQQi5VLgogICAgMDY5MDogNDUgNTQgNTAgNDMgMEEgNTUgMDggNDUgNTQgNTAgNDQgMEEg
NTUgMDggNDUgNTQgIEVUUEMuVS5FVFBELlUuRVQKICAgIDA2QTA6IDUwIDQ1IDBBIDU1IDA4IDQ1
IDU0IDUwIDQ2IDBBIDU1IDA4IDQ1IDU0IDUwIDQ3ICBQRS5VLkVUUEYuVS5FVFBHCiAgICAwNkIw
OiAwQSA1NSAwOCA0NSA1NCA1MCA0OCAwQSA1NSAwOCA0NSA1NCAzMSAzNSAwQSA1NSAgLlUuRVRQ
SC5VLkVUMTUuVQogICAgMDZDMDogMDggNDUgNTQgMzIgMzUgMEEgNTUgMDggNDUgNTQgMzMgMzUg
MEEgNTUgMDggNDUgIC5FVDI1LlUuRVQzNS5VLkUKICAgIDA2RDA6IDU0IDM0IDM1IDBBIDU1IDA4
IDQ1IDU0IDMxIDM3IDBBIDU1IDA4IDQ1IDU0IDMyICBUNDUuVS5FVDE3LlUuRVQyCiAgICAwNkUw
OiAzNyAwQSA1NSAxNCA4NCBENiAwMSA1MCA1MCA0RCA0NSAwMCA0RCAzNCAzNiAzMCAgNy5VLi4u
LlBQTUUuTTQ2MAogICAgMDZGMDogMEQgMjAgMjAgNEYgNDUgNEQgMkQgNDEgNTMgNEMgMkQgNUMg
NUYgNTMgNDIgMkUgIC4gIE9FTS1BU0wtXF9TQi4KICAgIDA3MDA6IDUwIDQzIDQ5IDMxIDJFIDUw
IDUwIDREIDQ1IDBBIDAwIDAwIDAwIDAwIDAwIDAwICBQQ0kxLlBQTUUuLi4uLi4uCiAgICAwNzEw
OiAwMCBBMCA0RiAxOCA5MiA5MyA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAgLi5PLi4u
XC8uX1NCX1BDSQogICAgMDcyMDogMzEgNDUgNTQgNTAgMzAgMEEgRkYgNzAgN0EgNEQgMzAgMzEg
MzcgNUYgNDIgNDIgIDFFVFAwLi5wek0wMTdfQkIKICAgIDA3MzA6IDRFIDAxIDAxIDBBIDc4IDAw
IDBBIDE4IDBBIDEwIDAwIDVDIDJGIDAzIDVGIDUzICBOLi4ueC4uLi4uLlwvLl9TCiAgICAwNzQw
OiA0MiA1RiA1MCA0MyA0OSAzMSA0NSA1NCA1MCAzMCBBMCA0NiAxNSA5MSA5MyA1QyAgQl9QQ0kx
RVRQMC5GLi4uXAogICAgMDc1MDogMkYgMDMgNUYgNTMgNDIgNUYgNTAgNDMgNDkgMzEgNDUgNTQg
NTAgMzAgMDEgOTMgIC8uX1NCX1BDSTFFVFAwLi4KICAgIDA3NjA6IDVDIDJGIDAzIDVGIDUzIDQy
IDVGIDUwIDQzIDQ5IDMxIDQ1IDU0IDUwIDMwIDBBICBcLy5fU0JfUENJMUVUUDAuCiAgICAwNzcw
OiAwMyBBMCA0RiAxMiA1QiAxMiA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAgLi5PLlsu
XC8uX1NCX1BDSQogICAgMDc4MDogMzEgNDcgNTAgNTAgMzAgMDAgQTAgNDkgMDYgOTIgOTMgNEQg
MzYgMzIgMzAgMDAgIDFHUFAwLi5JLi4uTTYyMC4KICAgIDA3OTA6IEEwIDRGIDA1IDkzIDREIDMw
IDM0IDM5IDREIDM2IDMyIDMwIDBBIDEwIDAxIEEwICAuTy4uTTA0OU02MjAuLi4uCiAgICAwN0Ew
OiA0MCAwNSA5MyA3QiA0RCAzMCAzNCAzOSA0RCAzNiAzMiAzMCAwQSA1MiAwQSAwMiAgQC4ue00w
NDlNNjIwLlIuLgogICAgMDdCMDogMDAgMDAgNEQgMzQgMzYgMzAgMEQgMjAgMjAgMjAgMjAgNEUg
NkYgNzQgNjkgNjYgIC4uTTQ2MC4gICAgTm90aWYKICAgIDA3QzA6IDc5IDIwIDI4IDVDIDVGIDUz
IDQyIDJFIDUwIDQzIDQ5IDMxIDJFIDQ3IDUwIDUwICB5IChcX1NCLlBDSTEuR1BQCiAgICAwN0Qw
OiAzMCAyQyAyMCAzMCA3OCAzMCAyOSAwQSAwMCAwMCAwMCAwMCAwMCAwMCAwMCA4NiAgMCwgMHgw
KS4uLi4uLi4uLgogICAgMDdFMDogNUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAgNDMgNDkgMzEgNDcg
NTAgNTAgMzAgMDAgIFwvLl9TQl9QQ0kxR1BQMC4KICAgIDA3RjA6IDREIDM0IDM2IDMwIDBEIDIw
IDIwIDIwIDIwIDRFIDZGIDc0IDY5IDY2IDc5IDIwICBNNDYwLiAgICBOb3RpZnkgCiAgICAwODAw
OiAyOCA1QyA1RiA1MyA0MiAyRSA1MCA0MyA0OSAzMSAyRSA0NyA1MCA1MCAzMCAyQyAgKFxfU0Iu
UENJMS5HUFAwLAogICAgMDgxMDogMjAgMzAgNzggMzIgMjkgMEEgMDAgMDAgMDAgMDAgMDAgMDAg
MDAgODYgNUMgMkYgICAweDIpLi4uLi4uLi4uXC8KICAgIDA4MjA6IDAzIDVGIDUzIDQyIDVGIDUw
IDQzIDQ5IDMxIDQ3IDUwIDUwIDMwIDBBIDAyIDVCICAuX1NCX1BDSTFHUFAwLi5bCiAgICAwODMw
OiAyMiAwQSA2NCA3MCA0RCAzMCAzMSAzNyA1RiA0MiA0MiA0RSAwMSAwMSAwQSA3OCAgIi5kcE0w
MTdfQkJOLi4ueAogICAgMDg0MDogMDAgMEEgMjAgNjAgQTAgNEMgMDUgOTIgOTMgN0IgNjAgMEMg
MDAgMDAgMDMgMDAgIC4uIGAuTC4uLntgLi4uLi4KICAgIDA4NTA6IDAwIDAwIDREIDMwIDMxIDM4
IDVGIDQyIDQyIDRFIDAxIDAxIDBBIDc4IDAwIDBBICAuLk0wMThfQkJOLi4ueC4uCiAgICAwODYw
OiAyMCA2MCA3MCA0RCAzMCAzMSAzNyA1RiA0MiA0MiA0RSAwMSAwMSAwQSA3OCAwMCAgIGBwTTAx
N19CQk4uLi54LgogICAgMDg3MDogMEEgMjAgNjAgQTAgMkQgOTIgOTMgN0IgNjAgMEMgMDAgMDAg
MDMgMDAgMDAgMDAgIC4gYC4tLi57YC4uLi4uLi4KICAgIDA4ODA6IDREIDMwIDMxIDM4IDVGIDQy
IDQyIDRFIDAxIDAxIDBBIDc4IDAwIDBBIDIwIDYwICBNMDE4X0JCTi4uLnguLiBgCiAgICAwODkw
OiA3MCA0RCAzMCAzMSAzNyA1RiA0MiA0MiA0RSAwMSAwMSAwQSA3OCAwMCAwQSAyMCAgcE0wMTdf
QkJOLi4ueC4uIAogICAgMDhBMDogNjAgQTAgNEIgMTIgOTIgOTMgNUMgMkYgMDMgNUYgNTMgNDIg
NUYgNTAgNDMgNDkgIGAuSy4uLlwvLl9TQl9QQ0kKICAgIDA4QjA6IDMxIDQ1IDU0IDUwIDMxIDBB
IEZGIDcwIDdBIDREIDMwIDMxIDM3IDVGIDQyIDQyICAxRVRQMS4ucHpNMDE3X0JCCiAgICAwOEMw
OiA0RSAwMSAwQSAwMiAwQSA3OCAwMCAwQSAxOCAwQSAxMCAwMCA1QyAyRiAwMyA1RiAgTi4uLi54
Li4uLi4uXC8uXwogICAgMDhEMDogNTMgNDIgNUYgNTAgNDMgNDkgMzEgNDUgNTQgNTAgMzEgQTAg
NDEgMEYgOTEgOTMgIFNCX1BDSTFFVFAxLkEuLi4KICAgIDA4RTA6IDVDIDJGIDAzIDVGIDUzIDQy
IDVGIDUwIDQzIDQ5IDMxIDQ1IDU0IDUwIDMxIDAxICBcLy5fU0JfUENJMUVUUDEuCiAgICAwOEYw
OiA5MyA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMSA0NSA1NCA1MCAzMSAgLlwvLl9T
Ql9QQ0kxRVRQMQogICAgMDkwMDogMEEgMDMgQTAgNEEgMEMgNUIgMTIgNUMgMkYgMDMgNUYgNTMg
NDIgNUYgNTAgNDMgIC4uLkouWy5cLy5fU0JfUEMKICAgIDA5MTA6IDQ5IDMxIDQ3IDUwIDUwIDMx
IDAwIDREIDM0IDM2IDMwIDBEIDIwIDIwIDIwIDIwICBJMUdQUDEuTTQ2MC4gICAgCiAgICAwOTIw
OiA0RSA2RiA3NCA2OSA2NiA3OSAyMCAyOCA1QyA1RiA1MyA0MiAyRSA1MCA0MyA0OSAgTm90aWZ5
IChcX1NCLlBDSQogICAgMDkzMDogMzEgMkUgNDcgNTAgNTAgMzEgMkMgMjAgMzAgNzggMzIgMjkg
MEEgMDAgMDAgMDAgIDEuR1BQMSwgMHgyKS4uLi4KICAgIDA5NDA6IDAwIDAwIDAwIDAwIDg2IDVD
IDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMxICAuLi4uLlwvLl9TQl9QQ0kxCiAgICAwOTUw
OiA0NyA1MCA1MCAzMSAwQSAwMiA1QiAyMiAwQSA2NCA3MCA0RCAzMCAzMSAzNyA1RiAgR1BQMS4u
WyIuZHBNMDE3XwogICAgMDk2MDogNDIgNDIgNEUgMDEgMEEgMDIgMEEgNzggMDAgMEEgMjAgNjAg
QTAgNDAgMDYgOTIgIEJCTi4uLi54Li4gYC5ALi4KICAgIDA5NzA6IDkzIDdCIDYwIDBDIDAwIDAw
IDAzIDAwIDAwIDAwIDREIDMwIDMxIDM4IDVGIDQyICAue2AuLi4uLi4uTTAxOF9CCiAgICAwOTgw
OiA0MiA0RSAwMSAwQSAwMiAwQSA3OCAwMCAwQSAyMCA2MCA3MCA0RCAzMCAzMSAzNyAgQk4uLi4u
eC4uIGBwTTAxNwogICAgMDk5MDogNUYgNDIgNDIgNEUgMDEgMEEgMDIgMEEgNzggMDAgMEEgMjAg
NjAgQTAgMkYgOTIgIF9CQk4uLi4ueC4uIGAuLy4KICAgIDA5QTA6IDkzIDdCIDYwIDBDIDAwIDAw
IDAzIDAwIDAwIDAwIDREIDMwIDMxIDM4IDVGIDQyICAue2AuLi4uLi4uTTAxOF9CCiAgICAwOUIw
OiA0MiA0RSAwMSAwQSAwMiAwQSA3OCAwMCAwQSAyMCA2MCA3MCA0RCAzMCAzMSAzNyAgQk4uLi4u
eC4uIGBwTTAxNwogICAgMDlDMDogNUYgNDIgNDIgNEUgMDEgMEEgMDIgMEEgNzggMDAgMEEgMjAg
NjAgQTAgNEIgMTIgIF9CQk4uLi4ueC4uIGAuSy4KICAgIDA5RDA6IDkyIDkzIDVDIDJGIDAzIDVG
IDUzIDQyIDVGIDUwIDQzIDQ5IDMxIDQ1IDU0IDUwICAuLlwvLl9TQl9QQ0kxRVRQCiAgICAwOUUw
OiAzMiAwQSBGRiA3MCA3QSA0RCAzMCAzMSAzNyA1RiA0MiA0MiA0RSAwMSAwQSAwMyAgMi4ucHpN
MDE3X0JCTi4uLgogICAgMDlGMDogMEEgNzggMDAgMEEgMTggMEEgMTAgMDAgNUMgMkYgMDMgNUYg
NTMgNDIgNUYgNTAgIC54Li4uLi4uXC8uX1NCX1AKICAgIDBBMDA6IDQzIDQ5IDMxIDQ1IDU0IDUw
IDMyIEEwIDQxIDBGIDkxIDkzIDVDIDJGIDAzIDVGICBDSTFFVFAyLkEuLi5cLy5fCiAgICAwQTEw
OiA1MyA0MiA1RiA1MCA0MyA0OSAzMSA0NSA1NCA1MCAzMiAwMSA5MyA1QyAyRiAwMyAgU0JfUENJ
MUVUUDIuLlwvLgogICAgMEEyMDogNUYgNTMgNDIgNUYgNTAgNDMgNDkgMzEgNDUgNTQgNTAgMzIg
MEEgMDMgQTAgNEEgIF9TQl9QQ0kxRVRQMi4uLkoKICAgIDBBMzA6IDBDIDVCIDEyIDVDIDJGIDAz
IDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMxIDQ3IDUwICAuWy5cLy5fU0JfUENJMUdQCiAgICAwQTQw
OiA1MCAzMiAwMCA0RCAzNCAzNiAzMCAwRCAyMCAyMCAyMCAyMCA0RSA2RiA3NCA2OSAgUDIuTTQ2
MC4gICAgTm90aQogICAgMEE1MDogNjYgNzkgMjAgMjggNUMgNUYgNTMgNDIgMkUgNTAgNDMgNDkg
MzEgMkUgNDcgNTAgIGZ5IChcX1NCLlBDSTEuR1AKICAgIDBBNjA6IDUwIDMyIDJDIDIwIDMwIDc4
IDMyIDI5IDBBIDAwIDAwIDAwIDAwIDAwIDAwIDAwICBQMiwgMHgyKS4uLi4uLi4uCiAgICAwQTcw
OiA4NiA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMSA0NyA1MCA1MCAzMiAgLlwvLl9T
Ql9QQ0kxR1BQMgogICAgMEE4MDogMEEgMDIgNUIgMjIgMEEgNjQgNzAgNEQgMzAgMzEgMzcgNUYg
NDIgNDIgNEUgMDEgIC4uWyIuZHBNMDE3X0JCTi4KICAgIDBBOTA6IDBBIDAzIDBBIDc4IDAwIDBB
IDIwIDYwIEEwIDQwIDA2IDkyIDkzIDdCIDYwIDBDICAuLi54Li4gYC5ALi4ue2AuCiAgICAwQUEw
OiAwMCAwMCAwMyAwMCAwMCAwMCA0RCAzMCAzMSAzOCA1RiA0MiA0MiA0RSAwMSAwQSAgLi4uLi4u
TTAxOF9CQk4uLgogICAgMEFCMDogMDMgMEEgNzggMDAgMEEgMjAgNjAgNzAgNEQgMzAgMzEgMzcg
NUYgNDIgNDIgNEUgIC4ueC4uIGBwTTAxN19CQk4KICAgIDBBQzA6IDAxIDBBIDAzIDBBIDc4IDAw
IDBBIDIwIDYwIEEwIDJGIDkyIDkzIDdCIDYwIDBDICAuLi4ueC4uIGAuLy4ue2AuCiAgICAwQUQw
OiAwMCAwMCAwMyAwMCAwMCAwMCA0RCAzMCAzMSAzOCA1RiA0MiA0MiA0RSAwMSAwQSAgLi4uLi4u
TTAxOF9CQk4uLgogICAgMEFFMDogMDMgMEEgNzggMDAgMEEgMjAgNjAgNzAgNEQgMzAgMzEgMzcg
NUYgNDIgNDIgNEUgIC4ueC4uIGBwTTAxN19CQk4KICAgIDBBRjA6IDAxIDBBIDAzIDBBIDc4IDAw
IDBBIDIwIDYwIEEwIDRCIDEyIDkyIDkzIDVDIDJGICAuLi4ueC4uIGAuSy4uLlwvCiAgICAwQjAw
OiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMSA0NSA1NCA1MCAzMyAwQSBGRiA3MCAgLl9TQl9Q
Q0kxRVRQMy4ucAogICAgMEIxMDogN0EgNEQgMzAgMzEgMzcgNUYgNDIgNDIgNEUgMDEgMEEgMDQg
MEEgNzggMDAgMEEgIHpNMDE3X0JCTi4uLi54Li4KICAgIDBCMjA6IDE4IDBBIDEwIDAwIDVDIDJG
IDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMxIDQ1ICAuLi4uXC8uX1NCX1BDSTFFCiAgICAwQjMw
OiA1NCA1MCAzMyBBMCA0MSAwRiA5MSA5MyA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCAgVFAzLkEu
Li5cLy5fU0JfUAogICAgMEI0MDogNDMgNDkgMzEgNDUgNTQgNTAgMzMgMDEgOTMgNUMgMkYgMDMg
NUYgNTMgNDIgNUYgIENJMUVUUDMuLlwvLl9TQl8KICAgIDBCNTA6IDUwIDQzIDQ5IDMxIDQ1IDU0
IDUwIDMzIDBBIDAzIEEwIDRBIDBDIDVCIDEyIDVDICBQQ0kxRVRQMy4uLkouWy5cCiAgICAwQjYw
OiAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMSA0NyA1MCA1MCAzMyAwMCA0RCAgLy5fU0Jf
UENJMUdQUDMuTQogICAgMEI3MDogMzQgMzYgMzAgMEQgMjAgMjAgMjAgMjAgNEUgNkYgNzQgNjkg
NjYgNzkgMjAgMjggIDQ2MC4gICAgTm90aWZ5ICgKICAgIDBCODA6IDVDIDVGIDUzIDQyIDJFIDUw
IDQzIDQ5IDMxIDJFIDQ3IDUwIDUwIDMzIDJDIDIwICBcX1NCLlBDSTEuR1BQMywgCiAgICAwQjkw
OiAzMCA3OCAzMiAyOSAwQSAwMCAwMCAwMCAwMCAwMCAwMCAwMCA4NiA1QyAyRiAwMyAgMHgyKS4u
Li4uLi4uLlwvLgogICAgMEJBMDogNUYgNTMgNDIgNUYgNTAgNDMgNDkgMzEgNDcgNTAgNTAgMzMg
MEEgMDIgNUIgMjIgIF9TQl9QQ0kxR1BQMy4uWyIKICAgIDBCQjA6IDBBIDY0IDcwIDREIDMwIDMx
IDM3IDVGIDQyIDQyIDRFIDAxIDBBIDA0IDBBIDc4ICAuZHBNMDE3X0JCTi4uLi54CiAgICAwQkMw
OiAwMCAwQSAyMCA2MCBBMCA0MCAwNiA5MiA5MyA3QiA2MCAwQyAwMCAwMCAwMyAwMCAgLi4gYC5A
Li4ue2AuLi4uLgogICAgMEJEMDogMDAgMDAgNEQgMzAgMzEgMzggNUYgNDIgNDIgNEUgMDEgMEEg
MDQgMEEgNzggMDAgIC4uTTAxOF9CQk4uLi4ueC4KICAgIDBCRTA6IDBBIDIwIDYwIDcwIDREIDMw
IDMxIDM3IDVGIDQyIDQyIDRFIDAxIDBBIDA0IDBBICAuIGBwTTAxN19CQk4uLi4uCiAgICAwQkYw
OiA3OCAwMCAwQSAyMCA2MCBBMCAyRiA5MiA5MyA3QiA2MCAwQyAwMCAwMCAwMyAwMCAgeC4uIGAu
Ly4ue2AuLi4uLgogICAgMEMwMDogMDAgMDAgNEQgMzAgMzEgMzggNUYgNDIgNDIgNEUgMDEgMEEg
MDQgMEEgNzggMDAgIC4uTTAxOF9CQk4uLi4ueC4KICAgIDBDMTA6IDBBIDIwIDYwIDcwIDREIDMw
IDMxIDM3IDVGIDQyIDQyIDRFIDAxIDBBIDA0IDBBICAuIGBwTTAxN19CQk4uLi4uCiAgICAwQzIw
OiA3OCAwMCAwQSAyMCA2MCBBMCA0QiAxMiA5MiA5MyA1QyAyRiAwMyA1RiA1MyA0MiAgeC4uIGAu
Sy4uLlwvLl9TQgogICAgMEMzMDogNUYgNTAgNDMgNDkgMzEgNDUgNTQgNTAgMzQgMEEgRkYgNzAg
N0EgNEQgMzAgMzEgIF9QQ0kxRVRQNC4ucHpNMDEKICAgIDBDNDA6IDM3IDVGIDQyIDQyIDRFIDAx
IDBBIDA1IDBBIDc4IDAwIDBBIDE4IDBBIDEwIDAwICA3X0JCTi4uLi54Li4uLi4uCiAgICAwQzUw
OiA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMSA0NSA1NCA1MCAzNCBBMCAgXC8uX1NC
X1BDSTFFVFA0LgogICAgMEM2MDogNDEgMEYgOTEgOTMgNUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAg
NDMgNDkgMzEgNDUgIEEuLi5cLy5fU0JfUENJMUUKICAgIDBDNzA6IDU0IDUwIDM0IDAxIDkzIDVD
IDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMxICBUUDQuLlwvLl9TQl9QQ0kxCiAgICAwQzgw
OiA0NSA1NCA1MCAzNCAwQSAwMyBBMCA0QSAwQyA1QiAxMiA1QyAyRiAwMyA1RiA1MyAgRVRQNC4u
LkouWy5cLy5fUwogICAgMEM5MDogNDIgNUYgNTAgNDMgNDkgMzEgNDcgNTAgNTAgMzQgMDAgNEQg
MzQgMzYgMzAgMEQgIEJfUENJMUdQUDQuTTQ2MC4KICAgIDBDQTA6IDIwIDIwIDIwIDIwIDRFIDZG
IDc0IDY5IDY2IDc5IDIwIDI4IDVDIDVGIDUzIDQyICAgICAgTm90aWZ5IChcX1NCCiAgICAwQ0Iw
OiAyRSA1MCA0MyA0OSAzMSAyRSA0NyA1MCA1MCAzNCAyQyAyMCAzMCA3OCAzMiAyOSAgLlBDSTEu
R1BQNCwgMHgyKQogICAgMENDMDogMEEgMDAgMDAgMDAgMDAgMDAgMDAgMDAgODYgNUMgMkYgMDMg
NUYgNTMgNDIgNUYgIC4uLi4uLi4uLlwvLl9TQl8KICAgIDBDRDA6IDUwIDQzIDQ5IDMxIDQ3IDUw
IDUwIDM0IDBBIDAyIDVCIDIyIDBBIDY0IDcwIDREICBQQ0kxR1BQNC4uWyIuZHBNCiAgICAwQ0Uw
OiAzMCAzMSAzNyA1RiA0MiA0MiA0RSAwMSAwQSAwNSAwQSA3OCAwMCAwQSAyMCA2MCAgMDE3X0JC
Ti4uLi54Li4gYAogICAgMENGMDogQTAgNDAgMDYgOTIgOTMgN0IgNjAgMEMgMDAgMDAgMDMgMDAg
MDAgMDAgNEQgMzAgIC5ALi4ue2AuLi4uLi4uTTAKICAgIDBEMDA6IDMxIDM4IDVGIDQyIDQyIDRF
IDAxIDBBIDA1IDBBIDc4IDAwIDBBIDIwIDYwIDcwICAxOF9CQk4uLi4ueC4uIGBwCiAgICAwRDEw
OiA0RCAzMCAzMSAzNyA1RiA0MiA0MiA0RSAwMSAwQSAwNSAwQSA3OCAwMCAwQSAyMCAgTTAxN19C
Qk4uLi4ueC4uIAogICAgMEQyMDogNjAgQTAgMkYgOTIgOTMgN0IgNjAgMEMgMDAgMDAgMDMgMDAg
MDAgMDAgNEQgMzAgIGAuLy4ue2AuLi4uLi4uTTAKICAgIDBEMzA6IDMxIDM4IDVGIDQyIDQyIDRF
IDAxIDBBIDA1IDBBIDc4IDAwIDBBIDIwIDYwIDcwICAxOF9CQk4uLi4ueC4uIGBwCiAgICAwRDQw
OiA0RCAzMCAzMSAzNyA1RiA0MiA0MiA0RSAwMSAwQSAwNSAwQSA3OCAwMCAwQSAyMCAgTTAxN19C
Qk4uLi4ueC4uIAogICAgMEQ1MDogNjAgQTAgNEIgMTIgOTIgOTMgNUMgMkYgMDMgNUYgNTMgNDIg
NUYgNTAgNDMgNDkgIGAuSy4uLlwvLl9TQl9QQ0kKICAgIDBENjA6IDMxIDQ1IDU0IDUwIDM1IDBB
IEZGIDcwIDdBIDREIDMwIDMxIDM3IDVGIDQyIDQyICAxRVRQNS4ucHpNMDE3X0JCCiAgICAwRDcw
OiA0RSAwMSAwQSAwNiAwQSA3OCAwMCAwQSAxOCAwQSAxMCAwMCA1QyAyRiAwMyA1RiAgTi4uLi54
Li4uLi4uXC8uXwogICAgMEQ4MDogNTMgNDIgNUYgNTAgNDMgNDkgMzEgNDUgNTQgNTAgMzUgQTAg
NDEgMEYgOTEgOTMgIFNCX1BDSTFFVFA1LkEuLi4KICAgIDBEOTA6IDVDIDJGIDAzIDVGIDUzIDQy
IDVGIDUwIDQzIDQ5IDMxIDQ1IDU0IDUwIDM1IDAxICBcLy5fU0JfUENJMUVUUDUuCiAgICAwREEw
OiA5MyA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMSA0NSA1NCA1MCAzNSAgLlwvLl9T
Ql9QQ0kxRVRQNQogICAgMERCMDogMEEgMDMgQTAgNEEgMEMgNUIgMTIgNUMgMkYgMDMgNUYgNTMg
NDIgNUYgNTAgNDMgIC4uLkouWy5cLy5fU0JfUEMKICAgIDBEQzA6IDQ5IDMxIDQ3IDUwIDUwIDM1
IDAwIDREIDM0IDM2IDMwIDBEIDIwIDIwIDIwIDIwICBJMUdQUDUuTTQ2MC4gICAgCiAgICAwREQw
OiA0RSA2RiA3NCA2OSA2NiA3OSAyMCAyOCA1QyA1RiA1MyA0MiAyRSA1MCA0MyA0OSAgTm90aWZ5
IChcX1NCLlBDSQogICAgMERFMDogMzEgMkUgNDcgNTAgNTAgMzUgMkMgMjAgMzAgNzggMzIgMjkg
MEEgMDAgMDAgMDAgIDEuR1BQNSwgMHgyKS4uLi4KICAgIDBERjA6IDAwIDAwIDAwIDAwIDg2IDVD
IDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMxICAuLi4uLlwvLl9TQl9QQ0kxCiAgICAwRTAw
OiA0NyA1MCA1MCAzNSAwQSAwMiA1QiAyMiAwQSA2NCA3MCA0RCAzMCAzMSAzNyA1RiAgR1BQNS4u
WyIuZHBNMDE3XwogICAgMEUxMDogNDIgNDIgNEUgMDEgMEEgMDYgMEEgNzggMDAgMEEgMjAgNjAg
QTAgNDAgMDYgOTIgIEJCTi4uLi54Li4gYC5ALi4KICAgIDBFMjA6IDkzIDdCIDYwIDBDIDAwIDAw
IDAzIDAwIDAwIDAwIDREIDMwIDMxIDM4IDVGIDQyICAue2AuLi4uLi4uTTAxOF9CCiAgICAwRTMw
OiA0MiA0RSAwMSAwQSAwNiAwQSA3OCAwMCAwQSAyMCA2MCA3MCA0RCAzMCAzMSAzNyAgQk4uLi4u
eC4uIGBwTTAxNwogICAgMEU0MDogNUYgNDIgNDIgNEUgMDEgMEEgMDYgMEEgNzggMDAgMEEgMjAg
NjAgQTAgMkYgOTIgIF9CQk4uLi4ueC4uIGAuLy4KICAgIDBFNTA6IDkzIDdCIDYwIDBDIDAwIDAw
IDAzIDAwIDAwIDAwIDREIDMwIDMxIDM4IDVGIDQyICAue2AuLi4uLi4uTTAxOF9CCiAgICAwRTYw
OiA0MiA0RSAwMSAwQSAwNiAwQSA3OCAwMCAwQSAyMCA2MCA3MCA0RCAzMCAzMSAzNyAgQk4uLi4u
eC4uIGBwTTAxNwogICAgMEU3MDogNUYgNDIgNDIgNEUgMDEgMEEgMDYgMEEgNzggMDAgMEEgMjAg
NjAgQTAgNEIgMTIgIF9CQk4uLi4ueC4uIGAuSy4KICAgIDBFODA6IDkyIDkzIDVDIDJGIDAzIDVG
IDUzIDQyIDVGIDUwIDQzIDQ5IDMxIDQ1IDU0IDUwICAuLlwvLl9TQl9QQ0kxRVRQCiAgICAwRTkw
OiAzNiAwQSBGRiA3MCA3QSA0RCAzMCAzMSAzNyA1RiA0MiA0MiA0RSAwMSAwQSAwNyAgNi4ucHpN
MDE3X0JCTi4uLgogICAgMEVBMDogMEEgNzggMDAgMEEgMTggMEEgMTAgMDAgNUMgMkYgMDMgNUYg
NTMgNDIgNUYgNTAgIC54Li4uLi4uXC8uX1NCX1AKICAgIDBFQjA6IDQzIDQ5IDMxIDQ1IDU0IDUw
IDM2IEEwIDQxIDBGIDkxIDkzIDVDIDJGIDAzIDVGICBDSTFFVFA2LkEuLi5cLy5fCiAgICAwRUMw
OiA1MyA0MiA1RiA1MCA0MyA0OSAzMSA0NSA1NCA1MCAzNiAwMSA5MyA1QyAyRiAwMyAgU0JfUENJ
MUVUUDYuLlwvLgogICAgMEVEMDogNUYgNTMgNDIgNUYgNTAgNDMgNDkgMzEgNDUgNTQgNTAgMzYg
MEEgMDMgQTAgNEEgIF9TQl9QQ0kxRVRQNi4uLkoKICAgIDBFRTA6IDBDIDVCIDEyIDVDIDJGIDAz
IDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMxIDQ3IDUwICAuWy5cLy5fU0JfUENJMUdQCiAgICAwRUYw
OiA1MCAzNiAwMCA0RCAzNCAzNiAzMCAwRCAyMCAyMCAyMCAyMCA0RSA2RiA3NCA2OSAgUDYuTTQ2
MC4gICAgTm90aQogICAgMEYwMDogNjYgNzkgMjAgMjggNUMgNUYgNTMgNDIgMkUgNTAgNDMgNDkg
MzEgMkUgNDcgNTAgIGZ5IChcX1NCLlBDSTEuR1AKICAgIDBGMTA6IDUwIDM2IDJDIDIwIDMwIDc4
IDMyIDI5IDBBIDAwIDAwIDAwIDAwIDAwIDAwIDAwICBQNiwgMHgyKS4uLi4uLi4uCiAgICAwRjIw
OiA4NiA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMSA0NyA1MCA1MCAzNiAgLlwvLl9T
Ql9QQ0kxR1BQNgogICAgMEYzMDogMEEgMDIgNUIgMjIgMEEgNjQgNzAgNEQgMzAgMzEgMzcgNUYg
NDIgNDIgNEUgMDEgIC4uWyIuZHBNMDE3X0JCTi4KICAgIDBGNDA6IDBBIDA3IDBBIDc4IDAwIDBB
IDIwIDYwIEEwIDQwIDA2IDkyIDkzIDdCIDYwIDBDICAuLi54Li4gYC5ALi4ue2AuCiAgICAwRjUw
OiAwMCAwMCAwMyAwMCAwMCAwMCA0RCAzMCAzMSAzOCA1RiA0MiA0MiA0RSAwMSAwQSAgLi4uLi4u
TTAxOF9CQk4uLgogICAgMEY2MDogMDcgMEEgNzggMDAgMEEgMjAgNjAgNzAgNEQgMzAgMzEgMzcg
NUYgNDIgNDIgNEUgIC4ueC4uIGBwTTAxN19CQk4KICAgIDBGNzA6IDAxIDBBIDA3IDBBIDc4IDAw
IDBBIDIwIDYwIEEwIDJGIDkyIDkzIDdCIDYwIDBDICAuLi4ueC4uIGAuLy4ue2AuCiAgICAwRjgw
OiAwMCAwMCAwMyAwMCAwMCAwMCA0RCAzMCAzMSAzOCA1RiA0MiA0MiA0RSAwMSAwQSAgLi4uLi4u
TTAxOF9CQk4uLgogICAgMEY5MDogMDcgMEEgNzggMDAgMEEgMjAgNjAgNzAgNEQgMzAgMzEgMzcg
NUYgNDIgNDIgNEUgIC4ueC4uIGBwTTAxN19CQk4KICAgIDBGQTA6IDAxIDBBIDA3IDBBIDc4IDAw
IDBBIDIwIDYwIEEwIDQ2IDE5IDkyIDkzIDVDIDJGICAuLi4ueC4uIGAuRi4uLlwvCiAgICAwRkIw
OiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMSA0NSA1NCA1MCAzNyAwQSBGRiA3MCAgLl9TQl9Q
Q0kxRVRQNy4ucAogICAgMEZDMDogN0EgNEQgMzAgMzEgMzcgNUYgNDIgNDIgNEUgMEEgMDIgMDEg
MEEgNzggMDAgMEEgIHpNMDE3X0JCTi4uLi54Li4KICAgIDBGRDA6IDE4IDBBIDEwIDAwIDVDIDJG
IDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMxIDQ1ICAuLi4uXC8uX1NCX1BDSTFFCiAgICAwRkUw
OiA1NCA1MCAzNyBBMCA0QyAxNSA5MSA5MyA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCAgVFA3Lkwu
Li5cLy5fU0JfUAogICAgMEZGMDogNDMgNDkgMzEgNDUgNTQgNTAgMzcgMDEgOTMgNUMgMkYgMDMg
NUYgNTMgNDIgNUYgIENJMUVUUDcuLlwvLl9TQl8KICAgIDEwMDA6IDUwIDQzIDQ5IDMxIDQ1IDU0
IDUwIDM3IDBBIDAzIEEwIDQ1IDEzIDVCIDEyIDVDICBQQ0kxRVRQNy4uLkUuWy5cCiAgICAxMDEw
OiAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMSA0NyA1MCA1MCAzNyAwMCBBMCAgLy5fU0Jf
UENJMUdQUDcuLgogICAgMTAyMDogNEEgMDYgOTIgOTMgNEQgMzYgMzIgMzAgMDAgQTAgNDAgMDYg
OTMgNEQgMzAgMzQgIEouLi5NNjIwLi5ALi5NMDQKICAgIDEwMzA6IDM5IDREIDM2IDMyIDMwIDBB
IDEwIDBBIDAyIEEwIDQwIDA1IDkzIDdCIDREIDMwICA5TTYyMC4uLi4uQC4ue00wCiAgICAxMDQw
OiAzNCAzOSA0RCAzNiAzMiAzMCAwQSA1MiAwQSAwMiAwMCAwMCA0RCAzNCAzNiAzMCAgNDlNNjIw
LlIuLi4uTTQ2MAogICAgMTA1MDogMEQgMjAgMjAgMjAgMjAgNEUgNkYgNzQgNjkgNjYgNzkgMjAg
MjggNUMgNUYgNTMgIC4gICAgTm90aWZ5IChcX1MKICAgIDEwNjA6IDQyIDJFIDUwIDQzIDQ5IDMx
IDJFIDQ3IDUwIDUwIDM3IDJDIDIwIDMwIDc4IDMwICBCLlBDSTEuR1BQNywgMHgwCiAgICAxMDcw
OiAyOSAwQSAwMCAwMCAwMCAwMCAwMCAwMCAwMCA4NiA1QyAyRiAwMyA1RiA1MyA0MiAgKS4uLi4u
Li4uLlwvLl9TQgogICAgMTA4MDogNUYgNTAgNDMgNDkgMzEgNDcgNTAgNTAgMzcgMDAgNEQgMzQg
MzYgMzAgMEQgMjAgIF9QQ0kxR1BQNy5NNDYwLiAKICAgIDEwOTA6IDIwIDIwIDIwIDRFIDZGIDc0
IDY5IDY2IDc5IDIwIDI4IDVDIDVGIDUzIDQyIDJFICAgICBOb3RpZnkgKFxfU0IuCiAgICAxMEEw
OiA1MCA0MyA0OSAzMSAyRSA0NyA1MCA1MCAzNyAyQyAyMCAzMCA3OCAzMiAyOSAwQSAgUENJMS5H
UFA3LCAweDIpLgogICAgMTBCMDogMDAgMDAgMDAgMDAgMDAgMDAgMDAgODYgNUMgMkYgMDMgNUYg
NTMgNDIgNUYgNTAgIC4uLi4uLi4uXC8uX1NCX1AKICAgIDEwQzA6IDQzIDQ5IDMxIDQ3IDUwIDUw
IDM3IDBBIDAyIDVCIDIyIDBBIDY0IDcwIDREIDMwICBDSTFHUFA3Li5bIi5kcE0wCiAgICAxMEQw
OiAzMSAzNyA1RiA0MiA0MiA0RSAwQSAwMiAwMSAwQSA3OCAwMCAwQSAyMCA2MCBBMCAgMTdfQkJO
Li4uLnguLiBgLgogICAgMTBFMDogNDAgMDYgOTIgOTMgN0IgNjAgMEMgMDAgMDAgMDMgMDAgMDAg
MDAgNEQgMzAgMzEgIEAuLi57YC4uLi4uLi5NMDEKICAgIDEwRjA6IDM4IDVGIDQyIDQyIDRFIDBB
IDAyIDAxIDBBIDc4IDAwIDBBIDIwIDYwIDcwIDREICA4X0JCTi4uLi54Li4gYHBNCiAgICAxMTAw
OiAzMCAzMSAzNyA1RiA0MiA0MiA0RSAwQSAwMiAwMSAwQSA3OCAwMCAwQSAyMCA2MCAgMDE3X0JC
Ti4uLi54Li4gYAogICAgMTExMDogQTAgMkYgOTIgOTMgN0IgNjAgMEMgMDAgMDAgMDMgMDAgMDAg
MDAgNEQgMzAgMzEgIC4vLi57YC4uLi4uLi5NMDEKICAgIDExMjA6IDM4IDVGIDQyIDQyIDRFIDBB
IDAyIDAxIDBBIDc4IDAwIDBBIDIwIDYwIDcwIDREICA4X0JCTi4uLi54Li4gYHBNCiAgICAxMTMw
OiAzMCAzMSAzNyA1RiA0MiA0MiA0RSAwQSAwMiAwMSAwQSA3OCAwMCAwQSAyMCA2MCAgMDE3X0JC
Ti4uLi54Li4gYAogICAgMTE0MDogQTAgNDEgMTMgOTIgOTMgNUMgMkYgMDMgNUYgNTMgNDIgNUYg
NTAgNDMgNDkgMzEgIC5BLi4uXC8uX1NCX1BDSTEKICAgIDExNTA6IDQ1IDU0IDUwIDM4IDBBIEZG
IDcwIDdBIDREIDMwIDMxIDM3IDVGIDQyIDQyIDRFICBFVFA4Li5wek0wMTdfQkJOCiAgICAxMTYw
OiAwQSAwMiAwQSAwMiAwQSA3OCAwMCAwQSAxOCAwQSAxMCAwMCA1QyAyRiAwMyA1RiAgLi4uLi54
Li4uLi4uXC8uXwogICAgMTE3MDogNTMgNDIgNUYgNTAgNDMgNDkgMzEgNDUgNTQgNTAgMzggQTAg
NDYgMEYgOTEgOTMgIFNCX1BDSTFFVFA4LkYuLi4KICAgIDExODA6IDVDIDJGIDAzIDVGIDUzIDQy
IDVGIDUwIDQzIDQ5IDMxIDQ1IDU0IDUwIDM4IDAxICBcLy5fU0JfUENJMUVUUDguCiAgICAxMTkw
OiA5MyA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMSA0NSA1NCA1MCAzOCAgLlwvLl9T
Ql9QQ0kxRVRQOAogICAgMTFBMDogMEEgMDMgQTAgNEYgMEMgNUIgMTIgNUMgMkYgMDMgNUYgNTMg
NDIgNUYgNTAgNDMgIC4uLk8uWy5cLy5fU0JfUEMKICAgIDExQjA6IDQ5IDMxIDQ3IDUwIDUwIDM4
IDAwIDREIDM0IDM2IDMwIDBEIDIwIDIwIDIwIDIwICBJMUdQUDguTTQ2MC4gICAgCiAgICAxMUMw
OiA0RSA2RiA3NCA2OSA2NiA3OSAyMCAyOCA1QyA1RiA1MyA0MiAyRSA1MCA0MyA0OSAgTm90aWZ5
IChcX1NCLlBDSQogICAgMTFEMDogMzEgMkUgNDcgNTAgNTAgMzggMkMgMjAgMzAgNzggMzIgMjkg
MEEgMDAgMDAgMDAgIDEuR1BQOCwgMHgyKS4uLi4KICAgIDExRTA6IDAwIDAwIDAwIDAwIDg2IDVD
IDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMxICAuLi4uLlwvLl9TQl9QQ0kxCiAgICAxMUYw
OiA0NyA1MCA1MCAzOCAwQSAwMiA1QiAyMiAwQSA2NCA3MCA0RCAzMCAzMSAzNyA1RiAgR1BQOC4u
WyIuZHBNMDE3XwogICAgMTIwMDogNDIgNDIgNEUgMEEgMDIgMEEgMDIgMEEgNzggMDAgMEEgMjAg
NjAgQTAgNDQgMDYgIEJCTi4uLi4ueC4uIGAuRC4KICAgIDEyMTA6IDkyIDkzIDdCIDYwIDBDIDAw
IDAwIDAzIDAwIDAwIDAwIDREIDMwIDMxIDM4IDVGICAuLntgLi4uLi4uLk0wMThfCiAgICAxMjIw
OiA0MiA0MiA0RSAwQSAwMiAwQSAwMiAwQSA3OCAwMCAwQSAyMCA2MCA3MCA0RCAzMCAgQkJOLi4u
Li54Li4gYHBNMAogICAgMTIzMDogMzEgMzcgNUYgNDIgNDIgNEUgMEEgMDIgMEEgMDIgMEEgNzgg
MDAgMEEgMjAgNjAgIDE3X0JCTi4uLi4ueC4uIGAKICAgIDEyNDA6IEEwIDMxIDkyIDkzIDdCIDYw
IDBDIDAwIDAwIDAzIDAwIDAwIDAwIDREIDMwIDMxICAuMS4ue2AuLi4uLi4uTTAxCiAgICAxMjUw
OiAzOCA1RiA0MiA0MiA0RSAwQSAwMiAwQSAwMiAwQSA3OCAwMCAwQSAyMCA2MCA3MCAgOF9CQk4u
Li4uLnguLiBgcAogICAgMTI2MDogNEQgMzAgMzEgMzcgNUYgNDIgNDIgNEUgMEEgMDIgMEEgMDIg
MEEgNzggMDAgMEEgIE0wMTdfQkJOLi4uLi54Li4KICAgIDEyNzA6IDIwIDYwIEEwIDRCIDEyIDky
IDkzIDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzICAgYC5LLi4uXC8uX1NCX1BDCiAgICAxMjgw
OiA0OSAzMSA0NSA1NCA1MCAzOSAwQSBGRiA3MCA3QSA0RCAzMCAzMSAzNyA1RiA0MiAgSTFFVFA5
Li5wek0wMTdfQgogICAgMTI5MDogNDIgNEUgMEEgMDMgMDEgMEEgNzggMDAgMEEgMTggMEEgMTAg
MDAgNUMgMkYgMDMgIEJOLi4uLnguLi4uLi5cLy4KICAgIDEyQTA6IDVGIDUzIDQyIDVGIDUwIDQz
IDQ5IDMxIDQ1IDU0IDUwIDM5IEEwIDQxIDBGIDkxICBfU0JfUENJMUVUUDkuQS4uCiAgICAxMkIw
OiA5MyA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMSA0NSA1NCA1MCAzOSAgLlwvLl9T
Ql9QQ0kxRVRQOQogICAgMTJDMDogMDEgOTMgNUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAgNDMgNDkg
MzEgNDUgNTQgNTAgIC4uXC8uX1NCX1BDSTFFVFAKICAgIDEyRDA6IDM5IDBBIDAzIEEwIDRBIDBD
IDVCIDEyIDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwICA5Li4uSi5bLlwvLl9TQl9QCiAgICAxMkUw
OiA0MyA0OSAzMSA0NyA1MCA1MCAzOSAwMCA0RCAzNCAzNiAzMCAwRCAyMCAyMCAyMCAgQ0kxR1BQ
OS5NNDYwLiAgIAogICAgMTJGMDogMjAgNEUgNkYgNzQgNjkgNjYgNzkgMjAgMjggNUMgNUYgNTMg
NDIgMkUgNTAgNDMgICBOb3RpZnkgKFxfU0IuUEMKICAgIDEzMDA6IDQ5IDMxIDJFIDQ3IDUwIDUw
IDM5IDJDIDIwIDMwIDc4IDMyIDI5IDBBIDAwIDAwICBJMS5HUFA5LCAweDIpLi4uCiAgICAxMzEw
OiAwMCAwMCAwMCAwMCAwMCA4NiA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAgLi4uLi4u
XC8uX1NCX1BDSQogICAgMTMyMDogMzEgNDcgNTAgNTAgMzkgMEEgMDIgNUIgMjIgMEEgNjQgNzAg
NEQgMzAgMzEgMzcgIDFHUFA5Li5bIi5kcE0wMTcKICAgIDEzMzA6IDVGIDQyIDQyIDRFIDBBIDAz
IDAxIDBBIDc4IDAwIDBBIDIwIDYwIEEwIDQwIDA2ICBfQkJOLi4uLnguLiBgLkAuCiAgICAxMzQw
OiA5MiA5MyA3QiA2MCAwQyAwMCAwMCAwMyAwMCAwMCAwMCA0RCAzMCAzMSAzOCA1RiAgLi57YC4u
Li4uLi5NMDE4XwogICAgMTM1MDogNDIgNDIgNEUgMEEgMDMgMDEgMEEgNzggMDAgMEEgMjAgNjAg
NzAgNEQgMzAgMzEgIEJCTi4uLi54Li4gYHBNMDEKICAgIDEzNjA6IDM3IDVGIDQyIDQyIDRFIDBB
IDAzIDAxIDBBIDc4IDAwIDBBIDIwIDYwIEEwIDJGICA3X0JCTi4uLi54Li4gYC4vCiAgICAxMzcw
OiA5MiA5MyA3QiA2MCAwQyAwMCAwMCAwMyAwMCAwMCAwMCA0RCAzMCAzMSAzOCA1RiAgLi57YC4u
Li4uLi5NMDE4XwogICAgMTM4MDogNDIgNDIgNEUgMEEgMDMgMDEgMEEgNzggMDAgMEEgMjAgNjAg
NzAgNEQgMzAgMzEgIEJCTi4uLi54Li4gYHBNMDEKICAgIDEzOTA6IDM3IDVGIDQyIDQyIDRFIDBB
IDAzIDAxIDBBIDc4IDAwIDBBIDIwIDYwIEEwIDQxICA3X0JCTi4uLi54Li4gYC5BCiAgICAxM0Ew
OiAxMyA5MiA5MyA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMSA0NSA1NCAgLi4uXC8u
X1NCX1BDSTFFVAogICAgMTNCMDogNTAgNDEgMEEgRkYgNzAgN0EgNEQgMzAgMzEgMzcgNUYgNDIg
NDIgNEUgMEEgMDMgIFBBLi5wek0wMTdfQkJOLi4KICAgIDEzQzA6IDBBIDAyIDBBIDc4IDAwIDBB
IDE4IDBBIDEwIDAwIDVDIDJGIDAzIDVGIDUzIDQyICAuLi54Li4uLi4uXC8uX1NCCiAgICAxM0Qw
OiA1RiA1MCA0MyA0OSAzMSA0NSA1NCA1MCA0MSBBMCA0NiAwRiA5MSA5MyA1QyAyRiAgX1BDSTFF
VFBBLkYuLi5cLwogICAgMTNFMDogMDMgNUYgNTMgNDIgNUYgNTAgNDMgNDkgMzEgNDUgNTQgNTAg
NDEgMDEgOTMgNUMgIC5fU0JfUENJMUVUUEEuLlwKICAgIDEzRjA6IDJGIDAzIDVGIDUzIDQyIDVG
IDUwIDQzIDQ5IDMxIDQ1IDU0IDUwIDQxIDBBIDAzICAvLl9TQl9QQ0kxRVRQQS4uCiAgICAxNDAw
OiBBMCA0RiAwQyA1QiAxMiA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMSAgLk8uWy5c
Ly5fU0JfUENJMQogICAgMTQxMDogNDcgNTAgNTAgNDEgMDAgNEQgMzQgMzYgMzAgMEQgMjAgMjAg
MjAgMjAgNEUgNkYgIEdQUEEuTTQ2MC4gICAgTm8KICAgIDE0MjA6IDc0IDY5IDY2IDc5IDIwIDI4
IDVDIDVGIDUzIDQyIDJFIDUwIDQzIDQ5IDMxIDJFICB0aWZ5IChcX1NCLlBDSTEuCiAgICAxNDMw
OiA0NyA1MCA1MCA0MSAyQyAyMCAzMCA3OCAzMiAyOSAwQSAwMCAwMCAwMCAwMCAwMCAgR1BQQSwg
MHgyKS4uLi4uLgogICAgMTQ0MDogMDAgMDAgODYgNUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAgNDMg
NDkgMzEgNDcgNTAgIC4uLlwvLl9TQl9QQ0kxR1AKICAgIDE0NTA6IDUwIDQxIDBBIDAyIDVCIDIy
IDBBIDY0IDcwIDREIDMwIDMxIDM3IDVGIDQyIDQyICBQQS4uWyIuZHBNMDE3X0JCCiAgICAxNDYw
OiA0RSAwQSAwMyAwQSAwMiAwQSA3OCAwMCAwQSAyMCA2MCBBMCA0NCAwNiA5MiA5MyAgTi4uLi4u
eC4uIGAuRC4uLgogICAgMTQ3MDogN0IgNjAgMEMgMDAgMDAgMDMgMDAgMDAgMDAgNEQgMzAgMzEg
MzggNUYgNDIgNDIgIHtgLi4uLi4uLk0wMThfQkIKICAgIDE0ODA6IDRFIDBBIDAzIDBBIDAyIDBB
IDc4IDAwIDBBIDIwIDYwIDcwIDREIDMwIDMxIDM3ICBOLi4uLi54Li4gYHBNMDE3CiAgICAxNDkw
OiA1RiA0MiA0MiA0RSAwQSAwMyAwQSAwMiAwQSA3OCAwMCAwQSAyMCA2MCBBMCAzMSAgX0JCTi4u
Li4ueC4uIGAuMQogICAgMTRBMDogOTIgOTMgN0IgNjAgMEMgMDAgMDAgMDMgMDAgMDAgMDAgNEQg
MzAgMzEgMzggNUYgIC4ue2AuLi4uLi4uTTAxOF8KICAgIDE0QjA6IDQyIDQyIDRFIDBBIDAzIDBB
IDAyIDBBIDc4IDAwIDBBIDIwIDYwIDcwIDREIDMwICBCQk4uLi4uLnguLiBgcE0wCiAgICAxNEMw
OiAzMSAzNyA1RiA0MiA0MiA0RSAwQSAwMyAwQSAwMiAwQSA3OCAwMCAwQSAyMCA2MCAgMTdfQkJO
Li4uLi54Li4gYAogICAgMTREMDogQTAgNDEgMTMgOTIgOTMgNUMgMkYgMDMgNUYgNTMgNDIgNUYg
NTAgNDMgNDkgMzEgIC5BLi4uXC8uX1NCX1BDSTEKICAgIDE0RTA6IDQ1IDU0IDUwIDQyIDBBIEZG
IDcwIDdBIDREIDMwIDMxIDM3IDVGIDQyIDQyIDRFICBFVFBCLi5wek0wMTdfQkJOCiAgICAxNEYw
OiAwQSAwMyAwQSAwMyAwQSA3OCAwMCAwQSAxOCAwQSAxMCAwMCA1QyAyRiAwMyA1RiAgLi4uLi54
Li4uLi4uXC8uXwogICAgMTUwMDogNTMgNDIgNUYgNTAgNDMgNDkgMzEgNDUgNTQgNTAgNDIgQTAg
NDYgMEYgOTEgOTMgIFNCX1BDSTFFVFBCLkYuLi4KICAgIDE1MTA6IDVDIDJGIDAzIDVGIDUzIDQy
IDVGIDUwIDQzIDQ5IDMxIDQ1IDU0IDUwIDQyIDAxICBcLy5fU0JfUENJMUVUUEIuCiAgICAxNTIw
OiA5MyA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMSA0NSA1NCA1MCA0MiAgLlwvLl9T
Ql9QQ0kxRVRQQgogICAgMTUzMDogMEEgMDMgQTAgNEYgMEMgNUIgMTIgNUMgMkYgMDMgNUYgNTMg
NDIgNUYgNTAgNDMgIC4uLk8uWy5cLy5fU0JfUEMKICAgIDE1NDA6IDQ5IDMxIDQ3IDUwIDUwIDQy
IDAwIDREIDM0IDM2IDMwIDBEIDIwIDIwIDIwIDIwICBJMUdQUEIuTTQ2MC4gICAgCiAgICAxNTUw
OiA0RSA2RiA3NCA2OSA2NiA3OSAyMCAyOCA1QyA1RiA1MyA0MiAyRSA1MCA0MyA0OSAgTm90aWZ5
IChcX1NCLlBDSQogICAgMTU2MDogMzEgMkUgNDcgNTAgNTAgNDIgMkMgMjAgMzAgNzggMzIgMjkg
MEEgMDAgMDAgMDAgIDEuR1BQQiwgMHgyKS4uLi4KICAgIDE1NzA6IDAwIDAwIDAwIDAwIDg2IDVD
IDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMxICAuLi4uLlwvLl9TQl9QQ0kxCiAgICAxNTgw
OiA0NyA1MCA1MCA0MiAwQSAwMiA1QiAyMiAwQSA2NCA3MCA0RCAzMCAzMSAzNyA1RiAgR1BQQi4u
WyIuZHBNMDE3XwogICAgMTU5MDogNDIgNDIgNEUgMEEgMDMgMEEgMDMgMEEgNzggMDAgMEEgMjAg
NjAgQTAgNDQgMDYgIEJCTi4uLi4ueC4uIGAuRC4KICAgIDE1QTA6IDkyIDkzIDdCIDYwIDBDIDAw
IDAwIDAzIDAwIDAwIDAwIDREIDMwIDMxIDM4IDVGICAuLntgLi4uLi4uLk0wMThfCiAgICAxNUIw
OiA0MiA0MiA0RSAwQSAwMyAwQSAwMyAwQSA3OCAwMCAwQSAyMCA2MCA3MCA0RCAzMCAgQkJOLi4u
Li54Li4gYHBNMAogICAgMTVDMDogMzEgMzcgNUYgNDIgNDIgNEUgMEEgMDMgMEEgMDMgMEEgNzgg
MDAgMEEgMjAgNjAgIDE3X0JCTi4uLi4ueC4uIGAKICAgIDE1RDA6IEEwIDMxIDkyIDkzIDdCIDYw
IDBDIDAwIDAwIDAzIDAwIDAwIDAwIDREIDMwIDMxICAuMS4ue2AuLi4uLi4uTTAxCiAgICAxNUUw
OiAzOCA1RiA0MiA0MiA0RSAwQSAwMyAwQSAwMyAwQSA3OCAwMCAwQSAyMCA2MCA3MCAgOF9CQk4u
Li4uLnguLiBgcAogICAgMTVGMDogNEQgMzAgMzEgMzcgNUYgNDIgNDIgNEUgMEEgMDMgMEEgMDMg
MEEgNzggMDAgMEEgIE0wMTdfQkJOLi4uLi54Li4KICAgIDE2MDA6IDIwIDYwIEEwIDQxIDEzIDky
IDkzIDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzICAgYC5BLi4uXC8uX1NCX1BDCiAgICAxNjEw
OiA0OSAzMSA0NSA1NCA1MCA0MyAwQSBGRiA3MCA3QSA0RCAzMCAzMSAzNyA1RiA0MiAgSTFFVFBD
Li5wek0wMTdfQgogICAgMTYyMDogNDIgNEUgMEEgMDMgMEEgMDQgMEEgNzggMDAgMEEgMTggMEEg
MTAgMDAgNUMgMkYgIEJOLi4uLi54Li4uLi4uXC8KICAgIDE2MzA6IDAzIDVGIDUzIDQyIDVGIDUw
IDQzIDQ5IDMxIDQ1IDU0IDUwIDQzIEEwIDQ2IDBGICAuX1NCX1BDSTFFVFBDLkYuCiAgICAxNjQw
OiA5MSA5MyA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMSA0NSA1NCA1MCAgLi5cLy5f
U0JfUENJMUVUUAogICAgMTY1MDogNDMgMDEgOTMgNUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAgNDMg
NDkgMzEgNDUgNTQgIEMuLlwvLl9TQl9QQ0kxRVQKICAgIDE2NjA6IDUwIDQzIDBBIDAzIEEwIDRG
IDBDIDVCIDEyIDVDIDJGIDAzIDVGIDUzIDQyIDVGICBQQy4uLk8uWy5cLy5fU0JfCiAgICAxNjcw
OiA1MCA0MyA0OSAzMSA0NyA1MCA1MCA0MyAwMCA0RCAzNCAzNiAzMCAwRCAyMCAyMCAgUENJMUdQ
UEMuTTQ2MC4gIAogICAgMTY4MDogMjAgMjAgNEUgNkYgNzQgNjkgNjYgNzkgMjAgMjggNUMgNUYg
NTMgNDIgMkUgNTAgICAgTm90aWZ5IChcX1NCLlAKICAgIDE2OTA6IDQzIDQ5IDMxIDJFIDQ3IDUw
IDUwIDQzIDJDIDIwIDMwIDc4IDMyIDI5IDBBIDAwICBDSTEuR1BQQywgMHgyKS4uCiAgICAxNkEw
OiAwMCAwMCAwMCAwMCAwMCAwMCA4NiA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0MyAgLi4uLi4u
LlwvLl9TQl9QQwogICAgMTZCMDogNDkgMzEgNDcgNTAgNTAgNDMgMEEgMDIgNUIgMjIgMEEgNjQg
NzAgNEQgMzAgMzEgIEkxR1BQQy4uWyIuZHBNMDEKICAgIDE2QzA6IDM3IDVGIDQyIDQyIDRFIDBB
IDAzIDBBIDA0IDBBIDc4IDAwIDBBIDIwIDYwIEEwICA3X0JCTi4uLi4ueC4uIGAuCiAgICAxNkQw
OiA0NCAwNiA5MiA5MyA3QiA2MCAwQyAwMCAwMCAwMyAwMCAwMCAwMCA0RCAzMCAzMSAgRC4uLntg
Li4uLi4uLk0wMQogICAgMTZFMDogMzggNUYgNDIgNDIgNEUgMEEgMDMgMEEgMDQgMEEgNzggMDAg
MEEgMjAgNjAgNzAgIDhfQkJOLi4uLi54Li4gYHAKICAgIDE2RjA6IDREIDMwIDMxIDM3IDVGIDQy
IDQyIDRFIDBBIDAzIDBBIDA0IDBBIDc4IDAwIDBBICBNMDE3X0JCTi4uLi4ueC4uCiAgICAxNzAw
OiAyMCA2MCBBMCAzMSA5MiA5MyA3QiA2MCAwQyAwMCAwMCAwMyAwMCAwMCAwMCA0RCAgIGAuMS4u
e2AuLi4uLi4uTQogICAgMTcxMDogMzAgMzEgMzggNUYgNDIgNDIgNEUgMEEgMDMgMEEgMDQgMEEg
NzggMDAgMEEgMjAgIDAxOF9CQk4uLi4uLnguLiAKICAgIDE3MjA6IDYwIDcwIDREIDMwIDMxIDM3
IDVGIDQyIDQyIDRFIDBBIDAzIDBBIDA0IDBBIDc4ICBgcE0wMTdfQkJOLi4uLi54CiAgICAxNzMw
OiAwMCAwQSAyMCA2MCBBMCA0MSAxMyA5MiA5MyA1QyAyRiAwMyA1RiA1MyA0MiA1RiAgLi4gYC5B
Li4uXC8uX1NCXwogICAgMTc0MDogNTAgNDMgNDkgMzEgNDUgNTQgNTAgNDQgMEEgRkYgNzAgN0Eg
NEQgMzAgMzEgMzcgIFBDSTFFVFBELi5wek0wMTcKICAgIDE3NTA6IDVGIDQyIDQyIDRFIDBBIDAz
IDBBIDA1IDBBIDc4IDAwIDBBIDE4IDBBIDEwIDAwICBfQkJOLi4uLi54Li4uLi4uCiAgICAxNzYw
OiA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMSA0NSA1NCA1MCA0NCBBMCAgXC8uX1NC
X1BDSTFFVFBELgogICAgMTc3MDogNDYgMEYgOTEgOTMgNUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAg
NDMgNDkgMzEgNDUgIEYuLi5cLy5fU0JfUENJMUUKICAgIDE3ODA6IDU0IDUwIDQ0IDAxIDkzIDVD
IDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMxICBUUEQuLlwvLl9TQl9QQ0kxCiAgICAxNzkw
OiA0NSA1NCA1MCA0NCAwQSAwMyBBMCA0RiAwQyA1QiAxMiA1QyAyRiAwMyA1RiA1MyAgRVRQRC4u
Lk8uWy5cLy5fUwogICAgMTdBMDogNDIgNUYgNTAgNDMgNDkgMzEgNDcgNTAgNTAgNDQgMDAgNEQg
MzQgMzYgMzAgMEQgIEJfUENJMUdQUEQuTTQ2MC4KICAgIDE3QjA6IDIwIDIwIDIwIDIwIDRFIDZG
IDc0IDY5IDY2IDc5IDIwIDI4IDVDIDVGIDUzIDQyICAgICAgTm90aWZ5IChcX1NCCiAgICAxN0Mw
OiAyRSA1MCA0MyA0OSAzMSAyRSA0NyA1MCA1MCA0NCAyQyAyMCAzMCA3OCAzMiAyOSAgLlBDSTEu
R1BQRCwgMHgyKQogICAgMTdEMDogMEEgMDAgMDAgMDAgMDAgMDAgMDAgMDAgODYgNUMgMkYgMDMg
NUYgNTMgNDIgNUYgIC4uLi4uLi4uLlwvLl9TQl8KICAgIDE3RTA6IDUwIDQzIDQ5IDMxIDQ3IDUw
IDUwIDQ0IDBBIDAyIDVCIDIyIDBBIDY0IDcwIDREICBQQ0kxR1BQRC4uWyIuZHBNCiAgICAxN0Yw
OiAzMCAzMSAzNyA1RiA0MiA0MiA0RSAwQSAwMyAwQSAwNSAwQSA3OCAwMCAwQSAyMCAgMDE3X0JC
Ti4uLi4ueC4uIAogICAgMTgwMDogNjAgQTAgNDQgMDYgOTIgOTMgN0IgNjAgMEMgMDAgMDAgMDMg
MDAgMDAgMDAgNEQgIGAuRC4uLntgLi4uLi4uLk0KICAgIDE4MTA6IDMwIDMxIDM4IDVGIDQyIDQy
IDRFIDBBIDAzIDBBIDA1IDBBIDc4IDAwIDBBIDIwICAwMThfQkJOLi4uLi54Li4gCiAgICAxODIw
OiA2MCA3MCA0RCAzMCAzMSAzNyA1RiA0MiA0MiA0RSAwQSAwMyAwQSAwNSAwQSA3OCAgYHBNMDE3
X0JCTi4uLi4ueAogICAgMTgzMDogMDAgMEEgMjAgNjAgQTAgMzEgOTIgOTMgN0IgNjAgMEMgMDAg
MDAgMDMgMDAgMDAgIC4uIGAuMS4ue2AuLi4uLi4KICAgIDE4NDA6IDAwIDREIDMwIDMxIDM4IDVG
IDQyIDQyIDRFIDBBIDAzIDBBIDA1IDBBIDc4IDAwICAuTTAxOF9CQk4uLi4uLnguCiAgICAxODUw
OiAwQSAyMCA2MCA3MCA0RCAzMCAzMSAzNyA1RiA0MiA0MiA0RSAwQSAwMyAwQSAwNSAgLiBgcE0w
MTdfQkJOLi4uLgogICAgMTg2MDogMEEgNzggMDAgMEEgMjAgNjAgQTAgNDEgMTMgOTIgOTMgNUMg
MkYgMDMgNUYgNTMgIC54Li4gYC5BLi4uXC8uX1MKICAgIDE4NzA6IDQyIDVGIDUwIDQzIDQ5IDMx
IDQ1IDU0IDUwIDQ1IDBBIEZGIDcwIDdBIDREIDMwICBCX1BDSTFFVFBFLi5wek0wCiAgICAxODgw
OiAzMSAzNyA1RiA0MiA0MiA0RSAwQSAwMyAwQSAwNiAwQSA3OCAwMCAwQSAxOCAwQSAgMTdfQkJO
Li4uLi54Li4uLgogICAgMTg5MDogMTAgMDAgNUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAgNDMgNDkg
MzEgNDUgNTQgNTAgIC4uXC8uX1NCX1BDSTFFVFAKICAgIDE4QTA6IDQ1IEEwIDQ2IDBGIDkxIDkz
IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5ICBFLkYuLi5cLy5fU0JfUENJCiAgICAxOEIw
OiAzMSA0NSA1NCA1MCA0NSAwMSA5MyA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0MyAgMUVUUEUu
LlwvLl9TQl9QQwogICAgMThDMDogNDkgMzEgNDUgNTQgNTAgNDUgMEEgMDMgQTAgNEYgMEMgNUIg
MTIgNUMgMkYgMDMgIEkxRVRQRS4uLk8uWy5cLy4KICAgIDE4RDA6IDVGIDUzIDQyIDVGIDUwIDQz
IDQ5IDMxIDQ3IDUwIDUwIDQ1IDAwIDREIDM0IDM2ICBfU0JfUENJMUdQUEUuTTQ2CiAgICAxOEUw
OiAzMCAwRCAyMCAyMCAyMCAyMCA0RSA2RiA3NCA2OSA2NiA3OSAyMCAyOCA1QyA1RiAgMC4gICAg
Tm90aWZ5IChcXwogICAgMThGMDogNTMgNDIgMkUgNTAgNDMgNDkgMzEgMkUgNDcgNTAgNTAgNDUg
MkMgMjAgMzAgNzggIFNCLlBDSTEuR1BQRSwgMHgKICAgIDE5MDA6IDMyIDI5IDBBIDAwIDAwIDAw
IDAwIDAwIDAwIDAwIDg2IDVDIDJGIDAzIDVGIDUzICAyKS4uLi4uLi4uLlwvLl9TCiAgICAxOTEw
OiA0MiA1RiA1MCA0MyA0OSAzMSA0NyA1MCA1MCA0NSAwQSAwMiA1QiAyMiAwQSA2NCAgQl9QQ0kx
R1BQRS4uWyIuZAogICAgMTkyMDogNzAgNEQgMzAgMzEgMzcgNUYgNDIgNDIgNEUgMEEgMDMgMEEg
MDYgMEEgNzggMDAgIHBNMDE3X0JCTi4uLi4ueC4KICAgIDE5MzA6IDBBIDIwIDYwIEEwIDQ0IDA2
IDkyIDkzIDdCIDYwIDBDIDAwIDAwIDAzIDAwIDAwICAuIGAuRC4uLntgLi4uLi4uCiAgICAxOTQw
OiAwMCA0RCAzMCAzMSAzOCA1RiA0MiA0MiA0RSAwQSAwMyAwQSAwNiAwQSA3OCAwMCAgLk0wMThf
QkJOLi4uLi54LgogICAgMTk1MDogMEEgMjAgNjAgNzAgNEQgMzAgMzEgMzcgNUYgNDIgNDIgNEUg
MEEgMDMgMEEgMDYgIC4gYHBNMDE3X0JCTi4uLi4KICAgIDE5NjA6IDBBIDc4IDAwIDBBIDIwIDYw
IEEwIDMxIDkyIDkzIDdCIDYwIDBDIDAwIDAwIDAzICAueC4uIGAuMS4ue2AuLi4uCiAgICAxOTcw
OiAwMCAwMCAwMCA0RCAzMCAzMSAzOCA1RiA0MiA0MiA0RSAwQSAwMyAwQSAwNiAwQSAgLi4uTTAx
OF9CQk4uLi4uLgogICAgMTk4MDogNzggMDAgMEEgMjAgNjAgNzAgNEQgMzAgMzEgMzcgNUYgNDIg
NDIgNEUgMEEgMDMgIHguLiBgcE0wMTdfQkJOLi4KICAgIDE5OTA6IDBBIDA2IDBBIDc4IDAwIDBB
IDIwIDYwIEEwIDQxIDEzIDkyIDkzIDVDIDJGIDAzICAuLi54Li4gYC5BLi4uXC8uCiAgICAxOUEw
OiA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMSA0NSA1NCA1MCA0NiAwQSBGRiA3MCA3QSAgX1NCX1BD
STFFVFBGLi5wegogICAgMTlCMDogNEQgMzAgMzEgMzcgNUYgNDIgNDIgNEUgMEEgMDMgMEEgMDcg
MEEgNzggMDAgMEEgIE0wMTdfQkJOLi4uLi54Li4KICAgIDE5QzA6IDE4IDBBIDEwIDAwIDVDIDJG
IDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMxIDQ1ICAuLi4uXC8uX1NCX1BDSTFFCiAgICAxOUQw
OiA1NCA1MCA0NiBBMCA0NiAwRiA5MSA5MyA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCAgVFBGLkYu
Li5cLy5fU0JfUAogICAgMTlFMDogNDMgNDkgMzEgNDUgNTQgNTAgNDYgMDEgOTMgNUMgMkYgMDMg
NUYgNTMgNDIgNUYgIENJMUVUUEYuLlwvLl9TQl8KICAgIDE5RjA6IDUwIDQzIDQ5IDMxIDQ1IDU0
IDUwIDQ2IDBBIDAzIEEwIDRGIDBDIDVCIDEyIDVDICBQQ0kxRVRQRi4uLk8uWy5cCiAgICAxQTAw
OiAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMSA0NyA1MCA1MCA0NiAwMCA0RCAgLy5fU0Jf
UENJMUdQUEYuTQogICAgMUExMDogMzQgMzYgMzAgMEQgMjAgMjAgMjAgMjAgNEUgNkYgNzQgNjkg
NjYgNzkgMjAgMjggIDQ2MC4gICAgTm90aWZ5ICgKICAgIDFBMjA6IDVDIDVGIDUzIDQyIDJFIDUw
IDQzIDQ5IDMxIDJFIDQ3IDUwIDUwIDQ2IDJDIDIwICBcX1NCLlBDSTEuR1BQRiwgCiAgICAxQTMw
OiAzMCA3OCAzMiAyOSAwQSAwMCAwMCAwMCAwMCAwMCAwMCAwMCA4NiA1QyAyRiAwMyAgMHgyKS4u
Li4uLi4uLlwvLgogICAgMUE0MDogNUYgNTMgNDIgNUYgNTAgNDMgNDkgMzEgNDcgNTAgNTAgNDYg
MEEgMDIgNUIgMjIgIF9TQl9QQ0kxR1BQRi4uWyIKICAgIDFBNTA6IDBBIDY0IDcwIDREIDMwIDMx
IDM3IDVGIDQyIDQyIDRFIDBBIDAzIDBBIDA3IDBBICAuZHBNMDE3X0JCTi4uLi4uCiAgICAxQTYw
OiA3OCAwMCAwQSAyMCA2MCBBMCA0NCAwNiA5MiA5MyA3QiA2MCAwQyAwMCAwMCAwMyAgeC4uIGAu
RC4uLntgLi4uLgogICAgMUE3MDogMDAgMDAgMDAgNEQgMzAgMzEgMzggNUYgNDIgNDIgNEUgMEEg
MDMgMEEgMDcgMEEgIC4uLk0wMThfQkJOLi4uLi4KICAgIDFBODA6IDc4IDAwIDBBIDIwIDYwIDcw
IDREIDMwIDMxIDM3IDVGIDQyIDQyIDRFIDBBIDAzICB4Li4gYHBNMDE3X0JCTi4uCiAgICAxQTkw
OiAwQSAwNyAwQSA3OCAwMCAwQSAyMCA2MCBBMCAzMSA5MiA5MyA3QiA2MCAwQyAwMCAgLi4ueC4u
IGAuMS4ue2AuLgogICAgMUFBMDogMDAgMDMgMDAgMDAgMDAgNEQgMzAgMzEgMzggNUYgNDIgNDIg
NEUgMEEgMDMgMEEgIC4uLi4uTTAxOF9CQk4uLi4KICAgIDFBQjA6IDA3IDBBIDc4IDAwIDBBIDIw
IDYwIDcwIDREIDMwIDMxIDM3IDVGIDQyIDQyIDRFICAuLnguLiBgcE0wMTdfQkJOCiAgICAxQUMw
OiAwQSAwMyAwQSAwNyAwQSA3OCAwMCAwQSAyMCA2MCBBMCA0QiAxMiA5MiA5MyA1QyAgLi4uLi54
Li4gYC5LLi4uXAogICAgMUFEMDogMkYgMDMgNUYgNTMgNDIgNUYgNTAgNDMgNDkgMzEgNDUgNTQg
NTAgNDcgMEEgRkYgIC8uX1NCX1BDSTFFVFBHLi4KICAgIDFBRTA6IDcwIDdBIDREIDMwIDMxIDM3
IDVGIDQyIDQyIDRFIDBBIDA0IDAxIDBBIDc4IDAwICBwek0wMTdfQkJOLi4uLnguCiAgICAxQUYw
OiAwQSAxOCAwQSAxMCAwMCA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMSAgLi4uLi5c
Ly5fU0JfUENJMQogICAgMUIwMDogNDUgNTQgNTAgNDcgQTAgNDEgMEYgOTEgOTMgNUMgMkYgMDMg
NUYgNTMgNDIgNUYgIEVUUEcuQS4uLlwvLl9TQl8KICAgIDFCMTA6IDUwIDQzIDQ5IDMxIDQ1IDU0
IDUwIDQ3IDAxIDkzIDVDIDJGIDAzIDVGIDUzIDQyICBQQ0kxRVRQRy4uXC8uX1NCCiAgICAxQjIw
OiA1RiA1MCA0MyA0OSAzMSA0NSA1NCA1MCA0NyAwQSAwMyBBMCA0QSAwQyA1QiAxMiAgX1BDSTFF
VFBHLi4uSi5bLgogICAgMUIzMDogNUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAgNDMgNDkgMzEgNDcg
NTAgNTAgNDcgMDAgIFwvLl9TQl9QQ0kxR1BQRy4KICAgIDFCNDA6IDREIDM0IDM2IDMwIDBEIDIw
IDIwIDIwIDIwIDRFIDZGIDc0IDY5IDY2IDc5IDIwICBNNDYwLiAgICBOb3RpZnkgCiAgICAxQjUw
OiAyOCA1QyA1RiA1MyA0MiAyRSA1MCA0MyA0OSAzMSAyRSA0NyA1MCA1MCA0NyAyQyAgKFxfU0Iu
UENJMS5HUFBHLAogICAgMUI2MDogMjAgMzAgNzggMzIgMjkgMEEgMDAgMDAgMDAgMDAgMDAgMDAg
MDAgODYgNUMgMkYgICAweDIpLi4uLi4uLi4uXC8KICAgIDFCNzA6IDAzIDVGIDUzIDQyIDVGIDUw
IDQzIDQ5IDMxIDQ3IDUwIDUwIDQ3IDBBIDAyIDVCICAuX1NCX1BDSTFHUFBHLi5bCiAgICAxQjgw
OiAyMiAwQSA2NCA3MCA0RCAzMCAzMSAzNyA1RiA0MiA0MiA0RSAwQSAwNCAwMSAwQSAgIi5kcE0w
MTdfQkJOLi4uLgogICAgMUI5MDogNzggMDAgMEEgMjAgNjAgQTAgNDAgMDYgOTIgOTMgN0IgNjAg
MEMgMDAgMDAgMDMgIHguLiBgLkAuLi57YC4uLi4KICAgIDFCQTA6IDAwIDAwIDAwIDREIDMwIDMx
IDM4IDVGIDQyIDQyIDRFIDBBIDA0IDAxIDBBIDc4ICAuLi5NMDE4X0JCTi4uLi54CiAgICAxQkIw
OiAwMCAwQSAyMCA2MCA3MCA0RCAzMCAzMSAzNyA1RiA0MiA0MiA0RSAwQSAwNCAwMSAgLi4gYHBN
MDE3X0JCTi4uLgogICAgMUJDMDogMEEgNzggMDAgMEEgMjAgNjAgQTAgMkYgOTIgOTMgN0IgNjAg
MEMgMDAgMDAgMDMgIC54Li4gYC4vLi57YC4uLi4KICAgIDFCRDA6IDAwIDAwIDAwIDREIDMwIDMx
IDM4IDVGIDQyIDQyIDRFIDBBIDA0IDAxIDBBIDc4ICAuLi5NMDE4X0JCTi4uLi54CiAgICAxQkUw
OiAwMCAwQSAyMCA2MCA3MCA0RCAzMCAzMSAzNyA1RiA0MiA0MiA0RSAwQSAwNCAwMSAgLi4gYHBN
MDE3X0JCTi4uLgogICAgMUJGMDogMEEgNzggMDAgMEEgMjAgNjAgQTAgNDEgMTMgOTIgOTMgNUMg
MkYgMDMgNUYgNTMgIC54Li4gYC5BLi4uXC8uX1MKICAgIDFDMDA6IDQyIDVGIDUwIDQzIDQ5IDMx
IDQ1IDU0IDUwIDQ4IDBBIEZGIDcwIDdBIDREIDMwICBCX1BDSTFFVFBILi5wek0wCiAgICAxQzEw
OiAzMSAzNyA1RiA0MiA0MiA0RSAwQSAwNCAwQSAwMiAwQSA3OCAwMCAwQSAxOCAwQSAgMTdfQkJO
Li4uLi54Li4uLgogICAgMUMyMDogMTAgMDAgNUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAgNDMgNDkg
MzEgNDUgNTQgNTAgIC4uXC8uX1NCX1BDSTFFVFAKICAgIDFDMzA6IDQ4IEEwIDQ2IDBGIDkxIDkz
IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5ICBILkYuLi5cLy5fU0JfUENJCiAgICAxQzQw
OiAzMSA0NSA1NCA1MCA0OCAwMSA5MyA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0MyAgMUVUUEgu
LlwvLl9TQl9QQwogICAgMUM1MDogNDkgMzEgNDUgNTQgNTAgNDggMEEgMDMgQTAgNEYgMEMgNUIg
MTIgNUMgMkYgMDMgIEkxRVRQSC4uLk8uWy5cLy4KICAgIDFDNjA6IDVGIDUzIDQyIDVGIDUwIDQz
IDQ5IDMxIDQ3IDUwIDUwIDQ4IDAwIDREIDM0IDM2ICBfU0JfUENJMUdQUEguTTQ2CiAgICAxQzcw
OiAzMCAwRCAyMCAyMCAyMCAyMCA0RSA2RiA3NCA2OSA2NiA3OSAyMCAyOCA1QyA1RiAgMC4gICAg
Tm90aWZ5IChcXwogICAgMUM4MDogNTMgNDIgMkUgNTAgNDMgNDkgMzEgMkUgNDcgNTAgNTAgNDgg
MkMgMjAgMzAgNzggIFNCLlBDSTEuR1BQSCwgMHgKICAgIDFDOTA6IDMyIDI5IDBBIDAwIDAwIDAw
IDAwIDAwIDAwIDAwIDg2IDVDIDJGIDAzIDVGIDUzICAyKS4uLi4uLi4uLlwvLl9TCiAgICAxQ0Ew
OiA0MiA1RiA1MCA0MyA0OSAzMSA0NyA1MCA1MCA0OCAwQSAwMiA1QiAyMiAwQSA2NCAgQl9QQ0kx
R1BQSC4uWyIuZAogICAgMUNCMDogNzAgNEQgMzAgMzEgMzcgNUYgNDIgNDIgNEUgMEEgMDQgMEEg
MDIgMEEgNzggMDAgIHBNMDE3X0JCTi4uLi4ueC4KICAgIDFDQzA6IDBBIDIwIDYwIEEwIDQ0IDA2
IDkyIDkzIDdCIDYwIDBDIDAwIDAwIDAzIDAwIDAwICAuIGAuRC4uLntgLi4uLi4uCiAgICAxQ0Qw
OiAwMCA0RCAzMCAzMSAzOCA1RiA0MiA0MiA0RSAwQSAwNCAwQSAwMiAwQSA3OCAwMCAgLk0wMThf
QkJOLi4uLi54LgogICAgMUNFMDogMEEgMjAgNjAgNzAgNEQgMzAgMzEgMzcgNUYgNDIgNDIgNEUg
MEEgMDQgMEEgMDIgIC4gYHBNMDE3X0JCTi4uLi4KICAgIDFDRjA6IDBBIDc4IDAwIDBBIDIwIDYw
IEEwIDMxIDkyIDkzIDdCIDYwIDBDIDAwIDAwIDAzICAueC4uIGAuMS4ue2AuLi4uCiAgICAxRDAw
OiAwMCAwMCAwMCA0RCAzMCAzMSAzOCA1RiA0MiA0MiA0RSAwQSAwNCAwQSAwMiAwQSAgLi4uTTAx
OF9CQk4uLi4uLgogICAgMUQxMDogNzggMDAgMEEgMjAgNjAgNzAgNEQgMzAgMzEgMzcgNUYgNDIg
NDIgNEUgMEEgMDQgIHguLiBgcE0wMTdfQkJOLi4KICAgIDFEMjA6IDBBIDAyIDBBIDc4IDAwIDBB
IDIwIDYwIEEwIDRCIDEyIDkyIDkzIDVDIDJGIDAzICAuLi54Li4gYC5LLi4uXC8uCiAgICAxRDMw
OiA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMSA0NSA1NCAzMSAzNSAwQSBGRiA3MCA3QSAgX1NCX1BD
STFFVDE1Li5wegogICAgMUQ0MDogNEQgMzAgMzEgMzcgNUYgNDIgNDIgNEUgMEEgMDUgMDEgMEEg
NzggMDAgMEEgMTggIE0wMTdfQkJOLi4uLnguLi4KICAgIDFENTA6IDBBIDEwIDAwIDVDIDJGIDAz
IDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMxIDQ1IDU0ICAuLi5cLy5fU0JfUENJMUVUCiAgICAxRDYw
OiAzMSAzNSBBMCA0MSAwRiA5MSA5MyA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0MyAgMTUuQS4u
LlwvLl9TQl9QQwogICAgMUQ3MDogNDkgMzEgNDUgNTQgMzEgMzUgMDEgOTMgNUMgMkYgMDMgNUYg
NTMgNDIgNUYgNTAgIEkxRVQxNS4uXC8uX1NCX1AKICAgIDFEODA6IDQzIDQ5IDMxIDQ1IDU0IDMx
IDM1IDBBIDAzIEEwIDRBIDBDIDVCIDEyIDVDIDJGICBDSTFFVDE1Li4uSi5bLlwvCiAgICAxRDkw
OiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMSA0NyA1MCAzMSAzNSAwMCA0RCAzNCAgLl9TQl9Q
Q0kxR1AxNS5NNAogICAgMURBMDogMzYgMzAgMEQgMjAgMjAgMjAgMjAgNEUgNkYgNzQgNjkgNjYg
NzkgMjAgMjggNUMgIDYwLiAgICBOb3RpZnkgKFwKICAgIDFEQjA6IDVGIDUzIDQyIDJFIDUwIDQz
IDQ5IDMxIDJFIDQ3IDUwIDMxIDM1IDJDIDIwIDMwICBfU0IuUENJMS5HUDE1LCAwCiAgICAxREMw
OiA3OCAzMiAyOSAwQSAwMCAwMCAwMCAwMCAwMCAwMCAwMCA4NiA1QyAyRiAwMyA1RiAgeDIpLi4u
Li4uLi4uXC8uXwogICAgMUREMDogNTMgNDIgNUYgNTAgNDMgNDkgMzEgNDcgNTAgMzEgMzUgMEEg
MDIgNUIgMjIgMEEgIFNCX1BDSTFHUDE1Li5bIi4KICAgIDFERTA6IDY0IDcwIDREIDMwIDMxIDM3
IDVGIDQyIDQyIDRFIDBBIDA1IDAxIDBBIDc4IDAwICBkcE0wMTdfQkJOLi4uLnguCiAgICAxREYw
OiAwQSAyMCA2MCBBMCA0MCAwNiA5MiA5MyA3QiA2MCAwQyAwMCAwMCAwMyAwMCAwMCAgLiBgLkAu
Li57YC4uLi4uLgogICAgMUUwMDogMDAgNEQgMzAgMzEgMzggNUYgNDIgNDIgNEUgMEEgMDUgMDEg
MEEgNzggMDAgMEEgIC5NMDE4X0JCTi4uLi54Li4KICAgIDFFMTA6IDIwIDYwIDcwIDREIDMwIDMx
IDM3IDVGIDQyIDQyIDRFIDBBIDA1IDAxIDBBIDc4ICAgYHBNMDE3X0JCTi4uLi54CiAgICAxRTIw
OiAwMCAwQSAyMCA2MCBBMCAyRiA5MiA5MyA3QiA2MCAwQyAwMCAwMCAwMyAwMCAwMCAgLi4gYC4v
Li57YC4uLi4uLgogICAgMUUzMDogMDAgNEQgMzAgMzEgMzggNUYgNDIgNDIgNEUgMEEgMDUgMDEg
MEEgNzggMDAgMEEgIC5NMDE4X0JCTi4uLi54Li4KICAgIDFFNDA6IDIwIDYwIDcwIDREIDMwIDMx
IDM3IDVGIDQyIDQyIDRFIDBBIDA1IDAxIDBBIDc4ICAgYHBNMDE3X0JCTi4uLi54CiAgICAxRTUw
OiAwMCAwQSAyMCA2MCBBMCA0MSAxMyA5MiA5MyA1QyAyRiAwMyA1RiA1MyA0MiA1RiAgLi4gYC5B
Li4uXC8uX1NCXwogICAgMUU2MDogNTAgNDMgNDkgMzEgNDUgNTQgMzIgMzUgMEEgRkYgNzAgN0Eg
NEQgMzAgMzEgMzcgIFBDSTFFVDI1Li5wek0wMTcKICAgIDFFNzA6IDVGIDQyIDQyIDRFIDBBIDA1
IDBBIDAyIDBBIDc4IDAwIDBBIDE4IDBBIDEwIDAwICBfQkJOLi4uLi54Li4uLi4uCiAgICAxRTgw
OiA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMSA0NSA1NCAzMiAzNSBBMCAgXC8uX1NC
X1BDSTFFVDI1LgogICAgMUU5MDogNDYgMEYgOTEgOTMgNUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAg
NDMgNDkgMzEgNDUgIEYuLi5cLy5fU0JfUENJMUUKICAgIDFFQTA6IDU0IDMyIDM1IDAxIDkzIDVD
IDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMxICBUMjUuLlwvLl9TQl9QQ0kxCiAgICAxRUIw
OiA0NSA1NCAzMiAzNSAwQSAwMyBBMCA0RiAwQyA1QiAxMiA1QyAyRiAwMyA1RiA1MyAgRVQyNS4u
Lk8uWy5cLy5fUwogICAgMUVDMDogNDIgNUYgNTAgNDMgNDkgMzEgNDcgNTAgMzIgMzUgMDAgNEQg
MzQgMzYgMzAgMEQgIEJfUENJMUdQMjUuTTQ2MC4KICAgIDFFRDA6IDIwIDIwIDIwIDIwIDRFIDZG
IDc0IDY5IDY2IDc5IDIwIDI4IDVDIDVGIDUzIDQyICAgICAgTm90aWZ5IChcX1NCCiAgICAxRUUw
OiAyRSA1MCA0MyA0OSAzMSAyRSA0NyA1MCAzMiAzNSAyQyAyMCAzMCA3OCAzMiAyOSAgLlBDSTEu
R1AyNSwgMHgyKQogICAgMUVGMDogMEEgMDAgMDAgMDAgMDAgMDAgMDAgMDAgODYgNUMgMkYgMDMg
NUYgNTMgNDIgNUYgIC4uLi4uLi4uLlwvLl9TQl8KICAgIDFGMDA6IDUwIDQzIDQ5IDMxIDQ3IDUw
IDMyIDM1IDBBIDAyIDVCIDIyIDBBIDY0IDcwIDREICBQQ0kxR1AyNS4uWyIuZHBNCiAgICAxRjEw
OiAzMCAzMSAzNyA1RiA0MiA0MiA0RSAwQSAwNSAwQSAwMiAwQSA3OCAwMCAwQSAyMCAgMDE3X0JC
Ti4uLi4ueC4uIAogICAgMUYyMDogNjAgQTAgNDQgMDYgOTIgOTMgN0IgNjAgMEMgMDAgMDAgMDMg
MDAgMDAgMDAgNEQgIGAuRC4uLntgLi4uLi4uLk0KICAgIDFGMzA6IDMwIDMxIDM4IDVGIDQyIDQy
IDRFIDBBIDA1IDBBIDAyIDBBIDc4IDAwIDBBIDIwICAwMThfQkJOLi4uLi54Li4gCiAgICAxRjQw
OiA2MCA3MCA0RCAzMCAzMSAzNyA1RiA0MiA0MiA0RSAwQSAwNSAwQSAwMiAwQSA3OCAgYHBNMDE3
X0JCTi4uLi4ueAogICAgMUY1MDogMDAgMEEgMjAgNjAgQTAgMzEgOTIgOTMgN0IgNjAgMEMgMDAg
MDAgMDMgMDAgMDAgIC4uIGAuMS4ue2AuLi4uLi4KICAgIDFGNjA6IDAwIDREIDMwIDMxIDM4IDVG
IDQyIDQyIDRFIDBBIDA1IDBBIDAyIDBBIDc4IDAwICAuTTAxOF9CQk4uLi4uLnguCiAgICAxRjcw
OiAwQSAyMCA2MCA3MCA0RCAzMCAzMSAzNyA1RiA0MiA0MiA0RSAwQSAwNSAwQSAwMiAgLiBgcE0w
MTdfQkJOLi4uLgogICAgMUY4MDogMEEgNzggMDAgMEEgMjAgNjAgQTAgNDEgMTMgOTIgOTMgNUMg
MkYgMDMgNUYgNTMgIC54Li4gYC5BLi4uXC8uX1MKICAgIDFGOTA6IDQyIDVGIDUwIDQzIDQ5IDMx
IDQ1IDU0IDMzIDM1IDBBIEZGIDcwIDdBIDREIDMwICBCX1BDSTFFVDM1Li5wek0wCiAgICAxRkEw
OiAzMSAzNyA1RiA0MiA0MiA0RSAwQSAwNSAwQSAwMyAwQSA3OCAwMCAwQSAxOCAwQSAgMTdfQkJO
Li4uLi54Li4uLgogICAgMUZCMDogMTAgMDAgNUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAgNDMgNDkg
MzEgNDUgNTQgMzMgIC4uXC8uX1NCX1BDSTFFVDMKICAgIDFGQzA6IDM1IEEwIDQ2IDBGIDkxIDkz
IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5ICA1LkYuLi5cLy5fU0JfUENJCiAgICAxRkQw
OiAzMSA0NSA1NCAzMyAzNSAwMSA5MyA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0MyAgMUVUMzUu
LlwvLl9TQl9QQwogICAgMUZFMDogNDkgMzEgNDUgNTQgMzMgMzUgMEEgMDMgQTAgNEYgMEMgNUIg
MTIgNUMgMkYgMDMgIEkxRVQzNS4uLk8uWy5cLy4KICAgIDFGRjA6IDVGIDUzIDQyIDVGIDUwIDQz
IDQ5IDMxIDQ3IDUwIDMzIDM1IDAwIDREIDM0IDM2ICBfU0JfUENJMUdQMzUuTTQ2CiAgICAyMDAw
OiAzMCAwRCAyMCAyMCAyMCAyMCA0RSA2RiA3NCA2OSA2NiA3OSAyMCAyOCA1QyA1RiAgMC4gICAg
Tm90aWZ5IChcXwogICAgMjAxMDogNTMgNDIgMkUgNTAgNDMgNDkgMzEgMkUgNDcgNTAgMzMgMzUg
MkMgMjAgMzAgNzggIFNCLlBDSTEuR1AzNSwgMHgKICAgIDIwMjA6IDMyIDI5IDBBIDAwIDAwIDAw
IDAwIDAwIDAwIDAwIDg2IDVDIDJGIDAzIDVGIDUzICAyKS4uLi4uLi4uLlwvLl9TCiAgICAyMDMw
OiA0MiA1RiA1MCA0MyA0OSAzMSA0NyA1MCAzMyAzNSAwQSAwMiA1QiAyMiAwQSA2NCAgQl9QQ0kx
R1AzNS4uWyIuZAogICAgMjA0MDogNzAgNEQgMzAgMzEgMzcgNUYgNDIgNDIgNEUgMEEgMDUgMEEg
MDMgMEEgNzggMDAgIHBNMDE3X0JCTi4uLi4ueC4KICAgIDIwNTA6IDBBIDIwIDYwIEEwIDQ0IDA2
IDkyIDkzIDdCIDYwIDBDIDAwIDAwIDAzIDAwIDAwICAuIGAuRC4uLntgLi4uLi4uCiAgICAyMDYw
OiAwMCA0RCAzMCAzMSAzOCA1RiA0MiA0MiA0RSAwQSAwNSAwQSAwMyAwQSA3OCAwMCAgLk0wMThf
QkJOLi4uLi54LgogICAgMjA3MDogMEEgMjAgNjAgNzAgNEQgMzAgMzEgMzcgNUYgNDIgNDIgNEUg
MEEgMDUgMEEgMDMgIC4gYHBNMDE3X0JCTi4uLi4KICAgIDIwODA6IDBBIDc4IDAwIDBBIDIwIDYw
IEEwIDMxIDkyIDkzIDdCIDYwIDBDIDAwIDAwIDAzICAueC4uIGAuMS4ue2AuLi4uCiAgICAyMDkw
OiAwMCAwMCAwMCA0RCAzMCAzMSAzOCA1RiA0MiA0MiA0RSAwQSAwNSAwQSAwMyAwQSAgLi4uTTAx
OF9CQk4uLi4uLgogICAgMjBBMDogNzggMDAgMEEgMjAgNjAgNzAgNEQgMzAgMzEgMzcgNUYgNDIg
NDIgNEUgMEEgMDUgIHguLiBgcE0wMTdfQkJOLi4KICAgIDIwQjA6IDBBIDAzIDBBIDc4IDAwIDBB
IDIwIDYwIEEwIDQxIDEzIDkyIDkzIDVDIDJGIDAzICAuLi54Li4gYC5BLi4uXC8uCiAgICAyMEMw
OiA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMSA0NSA1NCAzNCAzNSAwQSBGRiA3MCA3QSAgX1NCX1BD
STFFVDQ1Li5wegogICAgMjBEMDogNEQgMzAgMzEgMzcgNUYgNDIgNDIgNEUgMEEgMDUgMEEgMDQg
MEEgNzggMDAgMEEgIE0wMTdfQkJOLi4uLi54Li4KICAgIDIwRTA6IDE4IDBBIDEwIDAwIDVDIDJG
IDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMxIDQ1ICAuLi4uXC8uX1NCX1BDSTFFCiAgICAyMEYw
OiA1NCAzNCAzNSBBMCA0NiAwRiA5MSA5MyA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCAgVDQ1LkYu
Li5cLy5fU0JfUAogICAgMjEwMDogNDMgNDkgMzEgNDUgNTQgMzQgMzUgMDEgOTMgNUMgMkYgMDMg
NUYgNTMgNDIgNUYgIENJMUVUNDUuLlwvLl9TQl8KICAgIDIxMTA6IDUwIDQzIDQ5IDMxIDQ1IDU0
IDM0IDM1IDBBIDAzIEEwIDRGIDBDIDVCIDEyIDVDICBQQ0kxRVQ0NS4uLk8uWy5cCiAgICAyMTIw
OiAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMSA0NyA1MCAzNCAzNSAwMCA0RCAgLy5fU0Jf
UENJMUdQNDUuTQogICAgMjEzMDogMzQgMzYgMzAgMEQgMjAgMjAgMjAgMjAgNEUgNkYgNzQgNjkg
NjYgNzkgMjAgMjggIDQ2MC4gICAgTm90aWZ5ICgKICAgIDIxNDA6IDVDIDVGIDUzIDQyIDJFIDUw
IDQzIDQ5IDMxIDJFIDQ3IDUwIDM0IDM1IDJDIDIwICBcX1NCLlBDSTEuR1A0NSwgCiAgICAyMTUw
OiAzMCA3OCAzMiAyOSAwQSAwMCAwMCAwMCAwMCAwMCAwMCAwMCA4NiA1QyAyRiAwMyAgMHgyKS4u
Li4uLi4uLlwvLgogICAgMjE2MDogNUYgNTMgNDIgNUYgNTAgNDMgNDkgMzEgNDcgNTAgMzQgMzUg
MEEgMDIgNUIgMjIgIF9TQl9QQ0kxR1A0NS4uWyIKICAgIDIxNzA6IDBBIDY0IDcwIDREIDMwIDMx
IDM3IDVGIDQyIDQyIDRFIDBBIDA1IDBBIDA0IDBBICAuZHBNMDE3X0JCTi4uLi4uCiAgICAyMTgw
OiA3OCAwMCAwQSAyMCA2MCBBMCA0NCAwNiA5MiA5MyA3QiA2MCAwQyAwMCAwMCAwMyAgeC4uIGAu
RC4uLntgLi4uLgogICAgMjE5MDogMDAgMDAgMDAgNEQgMzAgMzEgMzggNUYgNDIgNDIgNEUgMEEg
MDUgMEEgMDQgMEEgIC4uLk0wMThfQkJOLi4uLi4KICAgIDIxQTA6IDc4IDAwIDBBIDIwIDYwIDcw
IDREIDMwIDMxIDM3IDVGIDQyIDQyIDRFIDBBIDA1ICB4Li4gYHBNMDE3X0JCTi4uCiAgICAyMUIw
OiAwQSAwNCAwQSA3OCAwMCAwQSAyMCA2MCBBMCAzMSA5MiA5MyA3QiA2MCAwQyAwMCAgLi4ueC4u
IGAuMS4ue2AuLgogICAgMjFDMDogMDAgMDMgMDAgMDAgMDAgNEQgMzAgMzEgMzggNUYgNDIgNDIg
NEUgMEEgMDUgMEEgIC4uLi4uTTAxOF9CQk4uLi4KICAgIDIxRDA6IDA0IDBBIDc4IDAwIDBBIDIw
IDYwIDcwIDREIDMwIDMxIDM3IDVGIDQyIDQyIDRFICAuLnguLiBgcE0wMTdfQkJOCiAgICAyMUUw
OiAwQSAwNSAwQSAwNCAwQSA3OCAwMCAwQSAyMCA2MCBBMCA0QiAxMiA5MiA5MyA1QyAgLi4uLi54
Li4gYC5LLi4uXAogICAgMjFGMDogMkYgMDMgNUYgNTMgNDIgNUYgNTAgNDMgNDkgMzEgNDUgNTQg
MzEgMzcgMEEgRkYgIC8uX1NCX1BDSTFFVDE3Li4KICAgIDIyMDA6IDcwIDdBIDREIDMwIDMxIDM3
IDVGIDQyIDQyIDRFIDBBIDA3IDAxIDBBIDc4IDAwICBwek0wMTdfQkJOLi4uLnguCiAgICAyMjEw
OiAwQSAxOCAwQSAxMCAwMCA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMSAgLi4uLi5c
Ly5fU0JfUENJMQogICAgMjIyMDogNDUgNTQgMzEgMzcgQTAgNDEgMEYgOTEgOTMgNUMgMkYgMDMg
NUYgNTMgNDIgNUYgIEVUMTcuQS4uLlwvLl9TQl8KICAgIDIyMzA6IDUwIDQzIDQ5IDMxIDQ1IDU0
IDMxIDM3IDAxIDkzIDVDIDJGIDAzIDVGIDUzIDQyICBQQ0kxRVQxNy4uXC8uX1NCCiAgICAyMjQw
OiA1RiA1MCA0MyA0OSAzMSA0NSA1NCAzMSAzNyAwQSAwMyBBMCA0QSAwQyA1QiAxMiAgX1BDSTFF
VDE3Li4uSi5bLgogICAgMjI1MDogNUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAgNDMgNDkgMzEgNDcg
NTAgMzEgMzcgMDAgIFwvLl9TQl9QQ0kxR1AxNy4KICAgIDIyNjA6IDREIDM0IDM2IDMwIDBEIDIw
IDIwIDIwIDIwIDRFIDZGIDc0IDY5IDY2IDc5IDIwICBNNDYwLiAgICBOb3RpZnkgCiAgICAyMjcw
OiAyOCA1QyA1RiA1MyA0MiAyRSA1MCA0MyA0OSAzMSAyRSA0NyA1MCAzMSAzNyAyQyAgKFxfU0Iu
UENJMS5HUDE3LAogICAgMjI4MDogMjAgMzAgNzggMzIgMjkgMEEgMDAgMDAgMDAgMDAgMDAgMDAg
MDAgODYgNUMgMkYgICAweDIpLi4uLi4uLi4uXC8KICAgIDIyOTA6IDAzIDVGIDUzIDQyIDVGIDUw
IDQzIDQ5IDMxIDQ3IDUwIDMxIDM3IDBBIDAyIDVCICAuX1NCX1BDSTFHUDE3Li5bCiAgICAyMkEw
OiAyMiAwQSA2NCA3MCA0RCAzMCAzMSAzNyA1RiA0MiA0MiA0RSAwQSAwNyAwMSAwQSAgIi5kcE0w
MTdfQkJOLi4uLgogICAgMjJCMDogNzggMDAgMEEgMjAgNjAgQTAgNDAgMDYgOTIgOTMgN0IgNjAg
MEMgMDAgMDAgMDMgIHguLiBgLkAuLi57YC4uLi4KICAgIDIyQzA6IDAwIDAwIDAwIDREIDMwIDMx
IDM4IDVGIDQyIDQyIDRFIDBBIDA3IDAxIDBBIDc4ICAuLi5NMDE4X0JCTi4uLi54CiAgICAyMkQw
OiAwMCAwQSAyMCA2MCA3MCA0RCAzMCAzMSAzNyA1RiA0MiA0MiA0RSAwQSAwNyAwMSAgLi4gYHBN
MDE3X0JCTi4uLgogICAgMjJFMDogMEEgNzggMDAgMEEgMjAgNjAgQTAgMkYgOTIgOTMgN0IgNjAg
MEMgMDAgMDAgMDMgIC54Li4gYC4vLi57YC4uLi4KICAgIDIyRjA6IDAwIDAwIDAwIDREIDMwIDMx
IDM4IDVGIDQyIDQyIDRFIDBBIDA3IDAxIDBBIDc4ICAuLi5NMDE4X0JCTi4uLi54CiAgICAyMzAw
OiAwMCAwQSAyMCA2MCA3MCA0RCAzMCAzMSAzNyA1RiA0MiA0MiA0RSAwQSAwNyAwMSAgLi4gYHBN
MDE3X0JCTi4uLgogICAgMjMxMDogMEEgNzggMDAgMEEgMjAgNjAgQTAgNDEgMTMgOTIgOTMgNUMg
MkYgMDMgNUYgNTMgIC54Li4gYC5BLi4uXC8uX1MKICAgIDIzMjA6IDQyIDVGIDUwIDQzIDQ5IDMx
IDQ1IDU0IDMyIDM3IDBBIEZGIDcwIDdBIDREIDMwICBCX1BDSTFFVDI3Li5wek0wCiAgICAyMzMw
OiAzMSAzNyA1RiA0MiA0MiA0RSAwQSAwNyAwQSAwMiAwQSA3OCAwMCAwQSAxOCAwQSAgMTdfQkJO
Li4uLi54Li4uLgogICAgMjM0MDogMTAgMDAgNUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAgNDMgNDkg
MzEgNDUgNTQgMzIgIC4uXC8uX1NCX1BDSTFFVDIKICAgIDIzNTA6IDM3IEEwIDQ2IDBGIDkxIDkz
IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5ICA3LkYuLi5cLy5fU0JfUENJCiAgICAyMzYw
OiAzMSA0NSA1NCAzMiAzNyAwMSA5MyA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0MyAgMUVUMjcu
LlwvLl9TQl9QQwogICAgMjM3MDogNDkgMzEgNDUgNTQgMzIgMzcgMEEgMDMgQTAgNEYgMEMgNUIg
MTIgNUMgMkYgMDMgIEkxRVQyNy4uLk8uWy5cLy4KICAgIDIzODA6IDVGIDUzIDQyIDVGIDUwIDQz
IDQ5IDMxIDQ3IDUwIDMyIDM3IDAwIDREIDM0IDM2ICBfU0JfUENJMUdQMjcuTTQ2CiAgICAyMzkw
OiAzMCAwRCAyMCAyMCAyMCAyMCA0RSA2RiA3NCA2OSA2NiA3OSAyMCAyOCA1QyA1RiAgMC4gICAg
Tm90aWZ5IChcXwogICAgMjNBMDogNTMgNDIgMkUgNTAgNDMgNDkgMzEgMkUgNDcgNTAgMzIgMzcg
MkMgMjAgMzAgNzggIFNCLlBDSTEuR1AyNywgMHgKICAgIDIzQjA6IDMyIDI5IDBBIDAwIDAwIDAw
IDAwIDAwIDAwIDAwIDg2IDVDIDJGIDAzIDVGIDUzICAyKS4uLi4uLi4uLlwvLl9TCiAgICAyM0Mw
OiA0MiA1RiA1MCA0MyA0OSAzMSA0NyA1MCAzMiAzNyAwQSAwMiA1QiAyMiAwQSA2NCAgQl9QQ0kx
R1AyNy4uWyIuZAogICAgMjNEMDogNzAgNEQgMzAgMzEgMzcgNUYgNDIgNDIgNEUgMEEgMDcgMEEg
MDIgMEEgNzggMDAgIHBNMDE3X0JCTi4uLi4ueC4KICAgIDIzRTA6IDBBIDIwIDYwIEEwIDQ0IDA2
IDkyIDkzIDdCIDYwIDBDIDAwIDAwIDAzIDAwIDAwICAuIGAuRC4uLntgLi4uLi4uCiAgICAyM0Yw
OiAwMCA0RCAzMCAzMSAzOCA1RiA0MiA0MiA0RSAwQSAwNyAwQSAwMiAwQSA3OCAwMCAgLk0wMThf
QkJOLi4uLi54LgogICAgMjQwMDogMEEgMjAgNjAgNzAgNEQgMzAgMzEgMzcgNUYgNDIgNDIgNEUg
MEEgMDcgMEEgMDIgIC4gYHBNMDE3X0JCTi4uLi4KICAgIDI0MTA6IDBBIDc4IDAwIDBBIDIwIDYw
IEEwIDMxIDkyIDkzIDdCIDYwIDBDIDAwIDAwIDAzICAueC4uIGAuMS4ue2AuLi4uCiAgICAyNDIw
OiAwMCAwMCAwMCA0RCAzMCAzMSAzOCA1RiA0MiA0MiA0RSAwQSAwNyAwQSAwMiAwQSAgLi4uTTAx
OF9CQk4uLi4uLgogICAgMjQzMDogNzggMDAgMEEgMjAgNjAgNzAgNEQgMzAgMzEgMzcgNUYgNDIg
NDIgNEUgMEEgMDcgIHguLiBgcE0wMTdfQkJOLi4KICAgIDI0NDA6IDBBIDAyIDBBIDc4IDAwIDBB
IDIwIDYwICAgICAgICAgICAgICAgICAgICAgICAgICAuLi54Li4gYAoKRkFDUyBAIDB4MDAwMDAw
MDAwMDAwMDAwMAogICAgMDAwMDogNDYgNDEgNDMgNTMgNDAgMDAgMDAgMDAgNkUgMDUgNTEgQjYg
MDAgMDAgMDAgMDAgIEZBQ1NALi4ubi5RLi4uLi4KICAgIDAwMTA6IDAwIDAwIDAwIDAwIDAwIDAw
IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwMDIw
OiAwMiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4u
Li4uLi4uLi4uLgogICAgMDAzMDogMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KClNTRFQgQCAweDAwMDAwMDAwMDAwMDAwMDAK
ICAgIDAwMDA6IDUzIDUzIDQ0IDU0IDJGIDk4IDAwIDAwIDAyIEU1IDQxIDREIDQ0IDAwIDAwIDAw
ICBTU0RULy4uLi4uQU1ELi4uCiAgICAwMDEwOiA0MyA1MCA0RCA0MyA0RCA0RSAwMCAwMCAwMSAw
MCAwMCAwMCA0OSA0RSA1NCA0QyAgQ1BNQ01OLi4uLi4uSU5UTAogICAgMDAyMDogMzEgMDMgMjMg
MjAgQTAgNDMgNjMgMDAgMTUgNUMgMkUgNUYgNTMgNDIgNUYgNDEgIDEuIyAuQ2MuLlwuX1NCX0EK
ICAgIDAwMzA6IDREIDMwIDMwIDA5IDAwIDE1IDVDIDJFIDVGIDUzIDQyIDVGIDQxIDRDIDQ5IDQy
ICBNMDAuLi5cLl9TQl9BTElCCiAgICAwMDQwOiAwOCAwMiAxNSA1QyA0RSA0NiA1MCA0MyAwOCAw
MCAxNSA1QyA0RCA0RiA0NSA0RCAgLi4uXE5GUEMuLi5cTU9FTQogICAgMDA1MDogMDggMDMgMTUg
NUMgMkUgNUYgNTMgNDIgNUYgNDcgNTAgNDkgNEYgMDYgMDAgMTUgIC4uLlwuX1NCX0dQSU8uLi4K
ICAgIDAwNjA6IDVDIDVGIDQ3IDUwIDQ1IDA2IDAwIDE1IDVDIDJFIDVGIDQ3IDUwIDQ1IDQyIDQ5
ICBcX0dQRS4uLlwuX0dQRUJJCiAgICAwMDcwOiA0NSAzMCAwOCAwMCAxNSA1QyAyRSA1RiA0NyA1
MCA0NSA0MSA0OSA0NSAzMCAwOCAgRTAuLi5cLl9HUEVBSUUwLgogICAgMDA4MDogMDAgMTUgNUMg
MkUgNUYgNDcgNTAgNDUgNDIgNDkgNDUgMzEgMDggMDAgMTUgNUMgIC4uXC5fR1BFQklFMS4uLlwK
ICAgIDAwOTA6IDJFIDVGIDQ3IDUwIDQ1IDQxIDQ5IDQ1IDMxIDA4IDAwIDE1IDVDIDJFIDVGIDQ3
ICAuX0dQRUFJRTEuLi5cLl9HCiAgICAwMEEwOiA1MCA0NSA0MiA0OSA0NSAzMiAwOCAwMCAxNSA1
QyAyRSA1RiA0NyA1MCA0NSA0MSAgUEVCSUUyLi4uXC5fR1BFQQogICAgMDBCMDogNDkgNDUgMzIg
MDggMDAgMTUgNUMgMkUgNUYgNDcgNTAgNDUgNDIgNDkgNDUgMzMgIElFMi4uLlwuX0dQRUJJRTMK
ICAgIDAwQzA6IDA4IDAwIDE1IDVDIDJFIDVGIDQ3IDUwIDQ1IDQxIDQ5IDQ1IDMzIDA4IDAwIDE1
ICAuLi5cLl9HUEVBSUUzLi4uCiAgICAwMEQwOiA1QyAyRSA1RiA0NyA1MCA0NSA1MCA1NCA1MyAz
MCAwOCAwMSAxNSA1QyAyRSA1RiAgXC5fR1BFUFRTMC4uLlwuXwogICAgMDBFMDogNDcgNTAgNDUg
NTAgNTQgNTMgMzEgMDggMDEgMTUgNUMgMkUgNUYgNDcgNTAgNDUgIEdQRVBUUzEuLi5cLl9HUEUK
ICAgIDAwRjA6IDUwIDU0IDUzIDMyIDA4IDAxIDE1IDVDIDJFIDVGIDQ3IDUwIDQ1IDUwIDU0IDUz
ICBQVFMyLi4uXC5fR1BFUFRTCiAgICAwMTAwOiAzMyAwOCAwMSAxNSA1QyAyRSA1RiA0NyA1MCA0
NSA1NyA0MSA0QiAzMCAwOCAwMSAgMy4uLlwuX0dQRVdBSzAuLgogICAgMDExMDogMTUgNUMgMkUg
NUYgNDcgNTAgNDUgNTcgNDEgNEIgMzEgMDggMDEgMTUgNUMgMkUgIC5cLl9HUEVXQUsxLi4uXC4K
ICAgIDAxMjA6IDVGIDQ3IDUwIDQ1IDU3IDQxIDRCIDMyIDA4IDAxIDE1IDVDIDJFIDVGIDQ3IDUw
ICBfR1BFV0FLMi4uLlwuX0dQCiAgICAwMTMwOiA0NSA1NyA0MSA0QiAzMyAwOCAwMSAxNSA1QyAy
RSA1RiA0NyA1MCA0NSA1MyA1MCAgRVdBSzMuLi5cLl9HUEVTUAogICAgMDE0MDogMzAgMzAgMDgg
MDAgMTUgNUMgMkUgNUYgNDcgNTAgNDUgNTMgNTAgMzAgMzEgMDggIDAwLi4uXC5fR1BFU1AwMS4K
ICAgIDAxNTA6IDAwIDE1IDVDIDJFIDVGIDQ3IDUwIDQ1IDUzIDUwIDMwIDMyIDA4IDAwIDE1IDVD
ICAuLlwuX0dQRVNQMDIuLi5cCiAgICAwMTYwOiAyRSA1RiA0NyA1MCA0NSA1MyA1MCAzMCAzMyAw
OCAwMCAxNSA1QyAyRSA1RiA0NyAgLl9HUEVTUDAzLi4uXC5fRwogICAgMDE3MDogNTAgNDUgNTMg
NTAgMzAgMzQgMDggMDAgMTUgNUMgMkUgNUYgNDcgNTAgNDUgNTMgIFBFU1AwNC4uLlwuX0dQRVMK
ICAgIDAxODA6IDUwIDMwIDM1IDA4IDAwIDE1IDVDIDJFIDVGIDQ3IDUwIDQ1IDUzIDUwIDMwIDM2
ICBQMDUuLi5cLl9HUEVTUDA2CiAgICAwMTkwOiAwOCAwMCAxNSA1QyAyRSA1RiA0NyA1MCA0NSA1
MyA1MCAzMCAzNyAwOCAwMCAxNSAgLi4uXC5fR1BFU1AwNy4uLgogICAgMDFBMDogNUMgMkUgNUYg
NDcgNTAgNDUgNTMgNTAgMzEgMzAgMDggMDAgMTUgNUMgMkUgNUYgIFwuX0dQRVNQMTAuLi5cLl8K
ICAgIDAxQjA6IDQ3IDUwIDQ1IDUzIDUwIDMxIDMxIDA4IDAwIDE1IDVDIDJFIDVGIDQ3IDUwIDQ1
ICBHUEVTUDExLi4uXC5fR1BFCiAgICAwMUMwOiA1MyA1MCAzMSAzMiAwOCAwMCAxNSA1QyAyRSA1
RiA0NyA1MCA0NSA1MyA1MCAzMSAgU1AxMi4uLlwuX0dQRVNQMQogICAgMDFEMDogMzMgMDggMDAg
MTUgNUMgMkUgNUYgNDcgNTAgNDUgNTMgNTAgMzEgMzQgMDggMDAgIDMuLi5cLl9HUEVTUDE0Li4K
ICAgIDAxRTA6IDE1IDVDIDJFIDVGIDQ3IDUwIDQ1IDUzIDUwIDMxIDM1IDA4IDAwIDE1IDVDIDJF
ICAuXC5fR1BFU1AxNS4uLlwuCiAgICAwMUYwOiA1RiA0NyA1MCA0NSA1MyA1MCAzMSAzNiAwOCAw
MCAxNSA1QyAyRSA1RiA0NyA1MCAgX0dQRVNQMTYuLi5cLl9HUAogICAgMDIwMDogNDUgNTMgNTAg
MzEgMzcgMDggMDAgMTUgNUMgMkUgNUYgNDcgNTAgNDUgNTMgNTAgIEVTUDE3Li4uXC5fR1BFU1AK
ICAgIDAyMTA6IDMyIDMwIDA4IDAwIDE1IDVDIDJFIDVGIDQ3IDUwIDQ1IDUzIDUwIDMyIDMxIDA4
ICAyMC4uLlwuX0dQRVNQMjEuCiAgICAwMjIwOiAwMCAxNSA1QyAyRSA1RiA0NyA1MCA0NSA1MyA1
MCAzMiAzMiAwOCAwMCAxNSA1QyAgLi5cLl9HUEVTUDIyLi4uXAogICAgMDIzMDogMkUgNUYgNDcg
NTAgNDUgNTMgNTAgMzIgMzMgMDggMDAgMTUgNUMgMkUgNUYgNDcgIC5fR1BFU1AyMy4uLlwuX0cK
ICAgIDAyNDA6IDUwIDQ1IDUzIDUwIDMyIDM0IDA4IDAwIDE1IDVDIDJFIDVGIDQ3IDUwIDQ1IDUz
ICBQRVNQMjQuLi5cLl9HUEVTCiAgICAwMjUwOiA1MCAzMiAzNSAwOCAwMCAxNSA1QyAyRSA1RiA0
NyA1MCA0NSA1MyA1MCAzMiAzNiAgUDI1Li4uXC5fR1BFU1AyNgogICAgMDI2MDogMDggMDAgMTUg
NUMgMkUgNUYgNDcgNTAgNDUgNTMgNTAgMzIgMzcgMDggMDAgMTUgIC4uLlwuX0dQRVNQMjcuLi4K
ICAgIDAyNzA6IDVDIDJFIDVGIDQ3IDUwIDQ1IDUzIDUwIDMzIDMwIDA4IDAwIDE1IDVDIDJFIDVG
ICBcLl9HUEVTUDMwLi4uXC5fCiAgICAwMjgwOiA0NyA1MCA0NSA1MyA1MCAzMyAzMSAwOCAwMCAx
NSA1QyAyRSA1RiA0NyA1MCA0NSAgR1BFU1AzMS4uLlwuX0dQRQogICAgMDI5MDogNTMgNTAgMzMg
MzIgMDggMDAgMTUgNUMgMkUgNUYgNDcgNTAgNDUgNTMgNTAgMzMgIFNQMzIuLi5cLl9HUEVTUDMK
ICAgIDAyQTA6IDMzIDA4IDAwIDE1IDVDIDJFIDVGIDQ3IDUwIDQ1IDUzIDUwIDMzIDM0IDA4IDAw
ICAzLi4uXC5fR1BFU1AzNC4uCiAgICAwMkIwOiAxNSA1QyAyRSA1RiA0NyA1MCA0NSA1MyA1MCAz
MyAzNSAwOCAwMCAxNSA1QyAyRSAgLlwuX0dQRVNQMzUuLi5cLgogICAgMDJDMDogNUYgNDcgNTAg
NDUgNTMgNTAgMzMgMzYgMDggMDAgMTUgNUMgMkUgNUYgNDcgNTAgIF9HUEVTUDM2Li4uXC5fR1AK
ICAgIDAyRDA6IDQ1IDUzIDUwIDMzIDM3IDA4IDAwIDE1IDVDIDJFIDVGIDQ3IDUwIDQ1IDUzIDUw
ICBFU1AzNy4uLlwuX0dQRVNQCiAgICAwMkUwOiAzNCAzMCAwOCAwMCAxNSA1QyAyRSA1RiA0NyA1
MCA0NSA1MyA1MCAzNCAzMSAwOCAgNDAuLi5cLl9HUEVTUDQxLgogICAgMDJGMDogMDAgMTUgNUMg
MkUgNUYgNDcgNTAgNDUgNTMgNTAgMzQgMzIgMDggMDAgMTUgNUMgIC4uXC5fR1BFU1A0Mi4uLlwK
ICAgIDAzMDA6IDJFIDVGIDQ3IDUwIDQ1IDUzIDUwIDM0IDMzIDA4IDAwIDE1IDVDIDJFIDVGIDQ3
ICAuX0dQRVNQNDMuLi5cLl9HCiAgICAwMzEwOiA1MCA0NSA1MyA1MCAzNCAzNCAwOCAwMCAxNSA1
QyAyRSA1RiA0NyA1MCA0NSA1MyAgUEVTUDQ0Li4uXC5fR1BFUwogICAgMDMyMDogNTAgMzQgMzUg
MDggMDAgMTUgNUMgMkUgNUYgNDcgNTAgNDUgNTMgNTAgMzQgMzYgIFA0NS4uLlwuX0dQRVNQNDYK
ICAgIDAzMzA6IDA4IDAwIDE1IDVDIDJFIDVGIDQ3IDUwIDQ1IDUzIDUwIDM0IDM3IDA4IDAwIDE1
ICAuLi5cLl9HUEVTUDQ3Li4uCiAgICAwMzQwOiA1QyAyRSA1RiA0NyA1MCA0NSA1MyA1MCAzNSAz
MCAwOCAwMCAxNSA1QyAyRSA1RiAgXC5fR1BFU1A1MC4uLlwuXwogICAgMDM1MDogNDcgNTAgNDUg
NTMgNTAgMzUgMzEgMDggMDAgMTUgNUMgMkUgNUYgNDcgNTAgNDUgIEdQRVNQNTEuLi5cLl9HUEUK
ICAgIDAzNjA6IDUzIDUwIDM1IDMyIDA4IDAwIDE1IDVDIDJFIDVGIDQ3IDUwIDQ1IDUzIDUwIDM1
ICBTUDUyLi4uXC5fR1BFU1A1CiAgICAwMzcwOiAzMyAwOCAwMCAxNSA1QyAyRSA1RiA0NyA1MCA0
NSA1MyA1MCAzNSAzNCAwOCAwMCAgMy4uLlwuX0dQRVNQNTQuLgogICAgMDM4MDogMTUgNUMgMkUg
NUYgNDcgNTAgNDUgNTMgNTAgMzUgMzUgMDggMDAgMTUgNUMgMkUgIC5cLl9HUEVTUDU1Li4uXC4K
ICAgIDAzOTA6IDVGIDQ3IDUwIDQ1IDUzIDUwIDM1IDM2IDA4IDAwIDE1IDVDIDJFIDVGIDQ3IDUw
ICBfR1BFU1A1Ni4uLlwuX0dQCiAgICAwM0EwOiA0NSA1MyA1MCAzNSAzNyAwOCAwMCAxNSA1QyAy
RSA1RiA0NyA1MCA0NSA1MyA1MCAgRVNQNTcuLi5cLl9HUEVTUAogICAgMDNCMDogMzYgMzAgMDgg
MDAgMTUgNUMgMkUgNUYgNDcgNTAgNDUgNTMgNTAgMzYgMzEgMDggIDYwLi4uXC5fR1BFU1A2MS4K
ICAgIDAzQzA6IDAwIDE1IDVDIDJFIDVGIDQ3IDUwIDQ1IDUzIDUwIDM2IDMyIDA4IDAwIDE1IDVD
ICAuLlwuX0dQRVNQNjIuLi5cCiAgICAwM0QwOiAyRSA1RiA0NyA1MCA0NSA1MyA1MCAzNiAzMyAw
OCAwMCAxNSA1QyAyRSA1RiA0NyAgLl9HUEVTUDYzLi4uXC5fRwogICAgMDNFMDogNTAgNDUgNTMg
NTAgMzYgMzQgMDggMDAgMTUgNUMgMkUgNUYgNDcgNTAgNDUgNTMgIFBFU1A2NC4uLlwuX0dQRVMK
ICAgIDAzRjA6IDUwIDM2IDM1IDA4IDAwIDE1IDVDIDJFIDVGIDQ3IDUwIDQ1IDUzIDUwIDM2IDM2
ICBQNjUuLi5cLl9HUEVTUDY2CiAgICAwNDAwOiAwOCAwMCAxNSA1QyAyRSA1RiA0NyA1MCA0NSA1
MyA1MCAzNiAzNyAwOCAwMCAxNSAgLi4uXC5fR1BFU1A2Ny4uLgogICAgMDQxMDogNUMgMkUgNUYg
NDcgNTAgNDUgNTMgNTAgMzcgMzAgMDggMDAgMTUgNUMgMkUgNUYgIFwuX0dQRVNQNzAuLi5cLl8K
ICAgIDA0MjA6IDQ3IDUwIDQ1IDUzIDUwIDM3IDMxIDA4IDAwIDE1IDVDIDJFIDVGIDQ3IDUwIDQ1
ICBHUEVTUDcxLi4uXC5fR1BFCiAgICAwNDMwOiA1MyA1MCAzNyAzMiAwOCAwMCAxNSA1QyAyRSA1
RiA0NyA1MCA0NSA1MyA1MCAzNyAgU1A3Mi4uLlwuX0dQRVNQNwogICAgMDQ0MDogMzMgMDggMDAg
MTUgNUMgMkUgNUYgNDcgNTAgNDUgNTMgNTAgMzcgMzQgMDggMDAgIDMuLi5cLl9HUEVTUDc0Li4K
ICAgIDA0NTA6IDE1IDVDIDJFIDVGIDQ3IDUwIDQ1IDUzIDUwIDM3IDM1IDA4IDAwIDE1IDVDIDJF
ICAuXC5fR1BFU1A3NS4uLlwuCiAgICAwNDYwOiA1RiA0NyA1MCA0NSA1MyA1MCAzNyAzNiAwOCAw
MCAxNSA1QyAyRSA1RiA0NyA1MCAgX0dQRVNQNzYuLi5cLl9HUAogICAgMDQ3MDogNDUgNTMgNTAg
MzcgMzcgMDggMDAgMTUgNUMgMkUgNUYgNTMgNDIgNUYgNEYgNTAgIEVTUDc3Li4uXC5fU0JfT1AK
ICAgIDA0ODA6IDU0IDUzIDA4IDAxIDE1IDVDIDJFIDVGIDUzIDQyIDVGIDRGIDU3IDQxIDRCIDA4
ICBUUy4uLlwuX1NCX09XQUsuCiAgICAwNDkwOiAwMSAxNSA1QyA0RCAzMCAzMyAzOCAwOCAwMSAx
NSA1QyA0RCAzMCAzMyAzOSAwOCAgLi5cTTAzOC4uLlxNMDM5LgogICAgMDRBMDogMDIgMTUgNUMg
NEQgMzAgMzUgMzAgMDYgMDAgMTUgNUMgNEQgMzAgMzUgMzEgMDYgIC4uXE0wNTAuLi5cTTA1MS4K
ICAgIDA0QjA6IDAwIDE1IDVDIDREIDMwIDM1IDMyIDA2IDAwIDE1IDVDIDREIDMwIDM1IDMzIDA2
ICAuLlxNMDUyLi4uXE0wNTMuCiAgICAwNEMwOiAwMCAxNSA1QyA0RCAzMCAzNSAzNCAwNiAwMCAx
NSA1QyA0RCAzMCAzNSAzNSAwNiAgLi5cTTA1NC4uLlxNMDU1LgogICAgMDREMDogMDAgMTUgNUMg
NEQgMzAgMzUgMzYgMDYgMDAgMTUgNUMgNEQgMzAgMzUgMzcgMDYgIC4uXE0wNTYuLi5cTTA1Ny4K
ICAgIDA0RTA6IDAwIDE1IDVDIDREIDMwIDM1IDM4IDA2IDAwIDE1IDVDIDREIDMwIDM1IDM5IDA2
ICAuLlxNMDU4Li4uXE0wNTkuCiAgICAwNEYwOiAwMCAxNSA1QyA0RCAzMCAzNiAzMiAwNiAwMCAx
NSA1QyA0RCAzMCAzNiAzOCAwNiAgLi5cTTA2Mi4uLlxNMDY4LgogICAgMDUwMDogMDAgMTUgNUMg
NEQgMzAgMzYgMzkgMDYgMDAgMTUgNUMgNEQgMzAgMzcgMzAgMDYgIC4uXE0wNjkuLi5cTTA3MC4K
ICAgIDA1MTA6IDAwIDE1IDVDIDREIDMwIDM3IDMxIDA2IDAwIDE1IDVDIDREIDMwIDM3IDMyIDA2
ICAuLlxNMDcxLi4uXE0wNzIuCiAgICAwNTIwOiAwMCAxNSA1QyA0RCAzMCAzNyAzNCAwNiAwMCAx
NSA1QyA0RCAzMCAzNyAzNSAwNiAgLi5cTTA3NC4uLlxNMDc1LgogICAgMDUzMDogMDAgMTUgNUMg
NEQgMzAgMzcgMzYgMDYgMDAgMTUgNUMgNEQgMzAgMzcgMzcgMDYgIC4uXE0wNzYuLi5cTTA3Ny4K
ICAgIDA1NDA6IDAwIDE1IDVDIDREIDMwIDM3IDM4IDA2IDAwIDE1IDVDIDREIDMwIDM3IDM5IDA2
ICAuLlxNMDc4Li4uXE0wNzkuCiAgICAwNTUwOiAwMCAxNSA1QyA0RCAzMCAzOCAzMCAwNiAwMCAx
NSA1QyA0RCAzMCAzOCAzMSAwNiAgLi5cTTA4MC4uLlxNMDgxLgogICAgMDU2MDogMDAgMTUgNUMg
MkUgNUYgNTMgNDIgNUYgNEQgMzIgMzYgMzMgMDggMDEgMTUgNUMgIC4uXC5fU0JfTTI2My4uLlwK
ICAgIDA1NzA6IDJFIDVGIDUzIDQyIDVGIDREIDMyIDM2IDM0IDA4IDAxIDE1IDVDIDREIDMxIDMy
ICAuX1NCX00yNjQuLi5cTTEyCiAgICAwNTgwOiAzNyAwNiAwMCAxNSA1QyAyRSA1RiA1MyA0MiA1
RiA0RCAzMiAzOCAzNCAwOCAwMSAgNy4uLlwuX1NCX00yODQuLgogICAgMDU5MDogMTUgNUMgMkUg
NUYgNTMgNDIgNUYgNDkgNTAgNTQgNTMgMDggMDEgMTUgNUMgMkUgIC5cLl9TQl9JUFRTLi4uXC4K
ICAgIDA1QTA6IDVGIDUzIDQyIDVGIDQ5IDU3IDQxIDRCIDA4IDAxIDE1IDVDIDJFIDVGIDUzIDQy
ICBfU0JfSVdBSy4uLlwuX1NCCiAgICAwNUIwOiA1RiA0MiA1MCA1NCA1MyAwOCAwMSAxNSA1QyAy
RSA1RiA1MyA0MiA1RiA0MiA1NyAgX0JQVFMuLi5cLl9TQl9CVwogICAgMDVDMDogNDEgNEIgMDgg
MDEgMTUgNUMgMkYgMDQgNUYgNTMgNDIgNUYgNTAgNDMgNTggNTggIEFLLi4uXC8uX1NCX1BDWFgK
ICAgIDA1RDA6IDUzIDQxIDU4IDU4IDU0IDUwIDU0IDUzIDA4IDAxIDE1IDVDIDJGIDA0IDVGIDUz
ICBTQVhYVFBUUy4uLlwvLl9TCiAgICAwNUUwOiA0MiA1RiA1MCA0MyA1OCA1OCA1MyA0MSA1OCA1
OCA1NCA1NyA0MSA0QiAwOCAwMSAgQl9QQ1hYU0FYWFRXQUsuLgogICAgMDVGMDogMTUgNUMgMkYg
MDUgNUYgNTMgNDIgNUYgNTAgNDMgNTggNTggNDcgNTAgNTggNTggIC5cLy5fU0JfUENYWEdQWFgK
ICAgIDA2MDA6IDUzIDQxIDU4IDU4IDU0IDUwIDU0IDUzIDA4IDAxIDE1IDVDIDJGIDA1IDVGIDUz
ICBTQVhYVFBUUy4uLlwvLl9TCiAgICAwNjEwOiA0MiA1RiA1MCA0MyA1OCA1OCA0NyA1MCA1OCA1
OCA1MyA0MSA1OCA1OCA1NCA1NyAgQl9QQ1hYR1BYWFNBWFhUVwogICAgMDYyMDogNDEgNEIgMDgg
MDEgMTUgNUMgMkYgMDUgNUYgNTMgNDIgNUYgNTAgNDMgNDkgMzAgIEFLLi4uXC8uX1NCX1BDSTAK
ICAgIDA2MzA6IDUwIDU0IDQyIDUyIDUwIDU0IDUzIDU0IDU0IDUwIDU0IDUzIDA4IDAxIDE1IDVD
ICBQVEJSUFRTVFRQVFMuLi5cCiAgICAwNjQwOiAyRiAwNSA1RiA1MyA0MiA1RiA1MCA0MyA0OSAz
MCA1MCA1NCA0MiA1MiA1MCA1NCAgLy5fU0JfUENJMFBUQlJQVAogICAgMDY1MDogNTMgNTQgNTQg
NTcgNDEgNEIgMDggMDEgNUIgODAgNDMgNTAgNEUgNTYgMDAgMEMgIFNUVFdBSy4uWy5DUE5WLi4K
ICAgIDA2NjA6IDE4IDQwIDQ2IEE5IDBDIDE3IDAxIDAxIDAwIDVCIDgxIDQwIDIwIDQzIDUwIDRF
ICAuQEYuLi4uLi5bLkAgQ1BOCiAgICAwNjcwOiA1NiAxMCA0RCAzMCAzOCAzMiAyMCA0RCAzMCAz
OCAzMyAyMCA0RCAzMCAzOCAzNCAgVi5NMDgyIE0wODMgTTA4NAogICAgMDY4MDogMjAgNEQgMzAg
MzggMzUgMDggNEQgMzIgMzIgMzEgMDggNEQgMzAgMzggMzYgMTAgICBNMDg1Lk0yMjEuTTA4Ni4K
ICAgIDA2OTA6IDREIDMyIDMyIDM5IDA4IDREIDMyIDMzIDMxIDEwIDREIDMyIDMzIDM1IDA4IDRE
ICBNMjI5Lk0yMzEuTTIzNS5NCiAgICAwNkEwOiAzMiAzMyAzMyAyMCAwMCAwMSAwMCAwMiAwMCAw
MSAwMCAwMSAwMCAwMSAwMCAwMSAgMjMzIC4uLi4uLi4uLi4uLgogICAgMDZCMDogMDAgMDEgNEQg
MzAgMzggMzcgMDEgMDAgMDEgMDAgMTYgNEQgMzAgMzggMzggMTAgIC4uTTA4Ny4uLi4uTTA4OC4K
ICAgIDA2QzA6IDREIDMwIDM4IDM5IDEwIDREIDMwIDM5IDMwIDAzIDREIDMwIDM5IDMxIDA1IDRE
ICBNMDg5Lk0wOTAuTTA5MS5NCiAgICAwNkQwOiAzMCAzOSAzMiAwOCA0RCAzMCAzOSAzMyAwMyA0
RCAzMCAzOSAzNCAwNSA0RCAzMCAgMDkyLk0wOTMuTTA5NC5NMAogICAgMDZFMDogMzkgMzUgMDgg
NEQgMzAgMzkgMzYgMDggNEQgMzAgMzkgMzcgMDggNEQgMzAgMzkgIDk1Lk0wOTYuTTA5Ny5NMDkK
ICAgIDA2RjA6IDM4IDIwIDREIDMwIDM5IDM5IDIwIDREIDMxIDMwIDMwIDIwIDREIDMxIDMwIDMx
ICA4IE0wOTkgTTEwMCBNMTAxCiAgICAwNzAwOiAyMCA0RCAzMSAzMCAzMiAyMCA0RCAzMSAzMCAz
MyAyMCA0RCAzMSAzMCAzNCA0MCAgIE0xMDIgTTEwMyBNMTA0QAogICAgMDcxMDogMEUgNEQgMzEg
MzAgMzUgMjAgNEQgMzEgMzAgMzYgODAgMDAgMDggNEQgMzMgMzcgIC5NMTA1IE0xMDYuLi5NMzcK
ICAgIDA3MjA6IDM4IDgwIDAwIDA4IDREIDMzIDM3IDM5IDgwIDAwIDA4IDREIDMzIDM4IDMwIDgw
ICA4Li4uTTM3OS4uLk0zODAuCiAgICAwNzMwOiAwMCAwOCA0RCAzMyAzOCAzMSA4MCAwMCAwOCA0
RCAzMyAzOCAzMiA4MCAwMCAwOCAgLi5NMzgxLi4uTTM4Mi4uLgogICAgMDc0MDogNEQgMzMgMzgg
MzMgODAgMDAgMDggNEQgMzMgMzggMzQgODAgMDAgMDggNEQgMzMgIE0zODMuLi5NMzg0Li4uTTMK
ICAgIDA3NTA6IDM4IDM1IDgwIDAwIDA4IDREIDMzIDM4IDM2IDgwIDAwIDA4IDREIDMzIDM4IDM3
ICA4NS4uLk0zODYuLi5NMzg3CiAgICAwNzYwOiA4MCAwMCAwOCA0RCAzMyAzOCAzOCA4MCAwMCAw
OCA0RCAzMyAzOCAzOSA4MCAwMCAgLi4uTTM4OC4uLk0zODkuLgogICAgMDc3MDogMDggNEQgMzMg
MzkgMzAgODAgMDAgMDggNEQgMzMgMzkgMzEgODAgMDAgMDggNEQgIC5NMzkwLi4uTTM5MS4uLk0K
ICAgIDA3ODA6IDMzIDM5IDMyIDgwIDAwIDA4IDREIDMxIDMwIDM3IDQwIDA0IDREIDMzIDMyIDMw
ICAzOTIuLi5NMTA3QC5NMzIwCiAgICAwNzkwOiAyMCA0RCAzMyAzMiAzMSAyMCA0RCAzMyAzMiAz
MiAyMCA0RCAzMyAzMiAzMyAyMCAgIE0zMjEgTTMyMiBNMzIzIAogICAgMDdBMDogNEQgMzMgMzIg
MzQgMjAgNEQgMzMgMzIgMzUgMjAgNEQgMzMgMzIgMzYgMjAgNEQgIE0zMjQgTTMyNSBNMzI2IE0K
ICAgIDA3QjA6IDMzIDMyIDM3IDEwIDREIDMzIDMyIDM4IDA4IDREIDMxIDMyIDM4IDIwIDREIDMx
ICAzMjcuTTMyOC5NMTI4IE0xCiAgICAwN0MwOiAzMCAzOCAyMCA0RCAzMSAzMCAzOSAyMCA0RCAz
MSAzMSAzMCAyMCA0RCAzMSAzMiAgMDggTTEwOSBNMTEwIE0xMgogICAgMDdEMDogMzIgMjAgNEQg
MzEgMzMgMzEgMjAgNEQgMzEgMzMgMzIgMjAgNEQgMzEgMzMgMzMgIDIgTTEzMSBNMTMyIE0xMzMK
ICAgIDA3RTA6IDIwIDREIDMxIDMzIDM0IDIwIDREIDMxIDMzIDM1IDIwIDREIDMxIDMzIDM2IDIw
ICAgTTEzNCBNMTM1IE0xMzYgCiAgICAwN0YwOiA0RCAzMiAzMiAzMCAyMCA0RCAzMiAzMiAzNiAy
MCA0RCAzMiAzNSAzMSAyMCA0RCAgTTIyMCBNMjI2IE0yNTEgTQogICAgMDgwMDogMzMgMzEgMzAg
MjAgNEQgMzIgMzggMzAgMjAgNEQgMzIgMzkgMzAgMjAgNEQgMzMgIDMxMCBNMjgwIE0yOTAgTTMK
ICAgIDA4MTA6IDMzIDMxIDIwIDREIDM0IDMxIDM0IDEwIDREIDM0IDM0IDM0IDQ4IDA0IDREIDM0
ICAzMSBNNDE0Lk00NDRILk00CiAgICAwODIwOiAzNSAzMyAyMCA0RCAzNCAzNSAzNCAxMCA0RCAz
NCAzNSAzNSAwOCA0RCAzNCAzNSAgNTMgTTQ1NC5NNDU1Lk00NQogICAgMDgzMDogMzYgMDggNEQg
MzQgMzUgMzcgMDggNEQgMzQgMzQgMzkgNDggMDQgNEQgMzQgNDMgIDYuTTQ1Ny5NNDQ5SC5NNEMK
ICAgIDA4NDA6IDMwIDIwIDREIDMyIDMzIDQxIDA4IDREIDMzIDMxIDQzIDIwIDREIDM0IDQ2IDMw
ICAwIE0yM0EuTTMxQyBNNEYwCiAgICAwODUwOiAyMCA0RCAzNiAzMSAzMCAyMCA0RCAzNiAzMiAz
MCAyMCA0RCAzMiAzOSA0MSA0MCAgIE02MTAgTTYyMCBNMjlBQAogICAgMDg2MDogMDggNEQgMzYg
MzMgMzEgMjAgNEQgMzYgMzUgMzIgMjAgMDggNDMgNTQgNEQgNTIgIC5NNjMxIE02NTIgLkNUTVIK
ICAgIDA4NzA6IDAwIDA4IDREIDMyIDM4IDM1IDExIDA3IDBBIDA0IDAxIDAzIDgwIDAwIDVCIDgw
ICAuLk0yODUuLi4uLi4uLlsuCiAgICAwODgwOiA1NiA0MSA1MiA1MCAwMCAwQyAwOCAwOCBEOCBG
RSAwQSAwNCA1QiA4MSAwQiA1NiAgVkFSUC4uLi4uLi4uWy4uVgogICAgMDg5MDogNDEgNTIgNTAg
MDMgNTYgNDEgNTAgMzEgMjAgMTQgNDEgMjEgNEQgMzAgMzAgMzAgIEFSUC5WQVAxIC5BIU0wMDAK
ICAgIDA4QTA6IDA5IDhDIDREIDMyIDM4IDM1IDAwIDREIDMyIDM4IDM2IDhDIDREIDMyIDM4IDM1
ICAuLk0yODUuTTI4Ni5NMjg1CiAgICAwOEIwOiAwMSA0RCAzMiAzOCAzNyA4QiA0RCAzMiAzOCAz
NSAwQSAwMiA0RCAzMiAzOCAzOCAgLk0yODcuTTI4NS4uTTI4OAogICAgMDhDMDogMDggNEQgMzQg
MzUgMzAgMTEgMDggMEEgMDUgMDAgOTYgMDUgMDAgMDAgOEEgNEQgIC5NNDUwLi4uLi4uLi4uLk0K
ICAgIDA4RDA6IDM0IDM1IDMwIDAwIDREIDM0IDM1IDMyIDhDIDREIDM0IDM1IDMwIDBBIDA0IDRE
ICA0NTAuTTQ1Mi5NNDUwLi5NCiAgICAwOEUwOiAzNCAzNSAzMSA3MCA3MiA2OCAwQyAwMCAwMCAw
MCBCMCAwMCA2MCBBMCA0NiAwOSAgNDUxcHJoLi4uLi4uYC5GLgogICAgMDhGMDogOTMgOTkgNEQg
MzIgMzggMzYgMDAgMDEgNzAgOTkgNEQgMzIgMzggMzggMDAgNjEgIC4uTTI4Ni4ucC5NMjg4LmEK
ICAgIDA5MDA6IEEwIDI3IDkzIDk5IDREIDMyIDM4IDM3IDAwIDBBIDAzIDVCIDgwIDU2IDQxIDUy
ICAuJy4uTTI4Ny4uLlsuVkFSCiAgICAwOTEwOiA0RCAwMSA2MSAwQSAwNCA1QiA4MSAwQiA1NiA0
MSA1MiA0RCAwMyA1NiA0MSA1MiAgTS5hLi5bLi5WQVJNLlZBUgogICAgMDkyMDogNTIgMjAgNzAg
NjAgNTYgNDEgNTIgNTIgQTEgNEIgMDUgQTAgMkMgOTMgOTkgNEQgIFIgcGBWQVJSLksuLiwuLk0K
ICAgIDA5MzA6IDMyIDM4IDM3IDAwIDBBIDAyIDVCIDgwIDU2IDQxIDUyIDRFIDAxIDYxIDBBIDAy
ICAyODcuLi5bLlZBUk4uYS4uCiAgICAwOTQwOiA1QiA4MSAwQiA1NiA0MSA1MiA0RSAwMiA1NiA0
MSA1MiA1MyAxMCA3MCA3QiA2MCAgWy4uVkFSTi5WQVJTLnB7YAogICAgMDk1MDogMEIgRkYgRkYg
MDAgNTYgNDEgNTIgNTMgQTEgMkIgQTAgMjkgOTMgOTkgNEQgMzIgIC4uLi5WQVJTLisuKS4uTTIK
ICAgIDA5NjA6IDM4IDM3IDAwIDAxIDVCIDgwIDU2IDQxIDUyIDRGIDAxIDYxIDAxIDVCIDgxIDBC
ICA4Ny4uWy5WQVJPLmEuWy4uCiAgICAwOTcwOiA1NiA0MSA1MiA0RiAwMSA1NiA0MSA1MiA1NCAw
OCA3MCA3QiA2MCAwQSBGRiAwMCAgVkFSTy5WQVJULnB7YC4uLgogICAgMDk4MDogNTYgNDEgNTIg
NTQgQTAgMUEgOTMgOTkgNEQgMzQgMzUgMzEgMDAgMDEgNzAgOTkgIFZBUlQuLi4uTTQ1MS4ucC4K
ICAgIDA5OTA6IDREIDM0IDM1IDMyIDAwIDYyIDREIDMyIDM1IDMwIDAwIDAwIDAwIDYyIDYwIDcw
ICBNNDUyLmJNMjUwLi4uYmBwCiAgICAwOUEwOiA1NiA0MSA1MCAzMSA2MSBBMCAwRiA5MiA5NSA2
MSA0MyA1NCA0RCA1MiA3NCA2MSAgVkFQMWEuLi4uYUNUTVJ0YQogICAgMDlCMDogNDMgNTQgNEQg
NTIgNjIgQTEgMTIgNzIgNjEgNzIgNzQgMEMgRkUgRkYgRkYgRkYgIENUTVJiLi5yYXJ0Li4uLi4K
ICAgIDA5QzA6IDQzIDU0IDREIDUyIDAwIDAxIDAwIDYyIDc4IDYyIDBBIDE5IDYzIDYyIDc4IDc3
ICBDVE1SLi4uYnhiLi5jYnh3CiAgICAwOUQwOiA2MiAwQSAwNyAwMCAwQiBFOCAwMyA2MyA2MiBB
MCA0MyAwNCA5MiA5NSA2MyAwQSAgYi4uLi4uLmNiLkMuLi5jLgogICAgMDlFMDogNjQgNEQgMzQg
MzYgMzAgMEQgMjAgMjAgNTAgNEYgNTMgNTQgMjAgNDMgNEYgNDQgIGRNNDYwLiAgUE9TVCBDT0QK
ICAgIDA5RjA6IDQ1IDNBIDIwIDI1IDU4IDIwIDIwIDQxIDQzIDUwIDQ5IDIwIDU0IDQ5IDREIDQ1
ICBFOiAlWCAgQUNQSSBUSU1FCiAgICAwQTAwOiA1MiAzQSAyMCAyNSA1OCAyMCAyMCA1NCA0OSA0
RCA0NSAzQSAyMCAyNSA2NCAyRSAgUjogJVggIFRJTUU6ICVkLgogICAgMEExMDogMjUgNjQgMjAg
NkQgNzMgMEEgMDAgNjAgNjEgNjIgNjMgMDAgMDAgQTEgNDcgMDggICVkIG1zLi5gYWJjLi4uRy4K
ICAgIDBBMjA6IEEwIDQ0IDA0IDkyIDk1IDYzIDBBIDBBIDREIDM0IDM2IDMwIDBEIDIwIDIwIDUw
ICAuRC4uLmMuLk00NjAuICBQCiAgICAwQTMwOiA0RiA1MyA1NCAyMCA0MyA0RiA0NCA0NSAzQSAy
MCAyNSA1OCAyMCAyMCA0MSA0MyAgT1NUIENPREU6ICVYICBBQwogICAgMEE0MDogNTAgNDkgMjAg
NTQgNDkgNEQgNDUgNTIgM0EgMjAgMjUgNTggMjAgMjAgNTQgNDkgIFBJIFRJTUVSOiAlWCAgVEkK
ICAgIDBBNTA6IDREIDQ1IDNBIDIwIDI1IDY0IDJFIDMwIDI1IDY0IDIwIDZEIDczIDBBIDAwIDYw
ICBNRTogJWQuMCVkIG1zLi5gCiAgICAwQTYwOiA2MSA2MiA2MyAwMCAwMCBBMSAzRiA0RCAzNCAz
NiAzMCAwRCAyMCAyMCA1MCA0RiAgYWJjLi4uP000NjAuICBQTwogICAgMEE3MDogNTMgNTQgMjAg
NDMgNEYgNDQgNDUgM0EgMjAgMjUgNTggMjAgMjAgNDEgNDMgNTAgIFNUIENPREU6ICVYICBBQ1AK
ICAgIDBBODA6IDQ5IDIwIDU0IDQ5IDREIDQ1IDUyIDNBIDIwIDI1IDU4IDIwIDIwIDU0IDQ5IDRE
ICBJIFRJTUVSOiAlWCAgVElNCiAgICAwQTkwOiA0NSAzQSAyMCAyNSA2NCAyRSAzMCAzMCAyNSA2
NCAyMCA2RCA3MyAwQSAwMCA2MCAgRTogJWQuMDAlZCBtcy4uYAogICAgMEFBMDogNjEgNjIgNjMg
MDAgMDAgNzAgNjEgNDMgNTQgNEQgNTIgMTQgMTggNEQgMzAgMzMgIGFiYy4ucGFDVE1SLi5NMDMK
ICAgIDBBQjA6IDM0IDA5IEE0IDREIDMwIDMxIDMxIDcyIDREIDMwIDM4IDM0IDBCIDAwIDA3IDAw
ICA0Li5NMDExck0wODQuLi4uCiAgICAwQUMwOiA2OCAwMCAwQSAwOCAxNCAxOCA0RCAzMCAzMSAz
NSAwOSBBNCA0RCAzMCAzMSAzMSAgaC4uLi4uTTAxNS4uTTAxMQogICAgMEFEMDogNzIgNEQgMzAg
MzggMzQgMEIgMDAgMDQgMDAgNjggMDAgMEEgMDggMTQgMTggNEQgIHJNMDg0Li4uLmguLi4uLk0K
ICAgIDBBRTA6IDMwIDMxIDM2IDBBIDREIDMwIDMxIDMyIDcyIDREIDMwIDM4IDM0IDBCIDAwIDA0
ICAwMTYuTTAxMnJNMDg0Li4uCiAgICAwQUYwOiAwMCA2OCAwMCAwQSAwOCA2OSAxNCAxMyA0RCAz
MCAzMyAzNSAwOSBBNCA0RCAzMCAgLmguLi5pLi5NMDM1Li5NMAogICAgMEIwMDogMzEgMzEgNEQg
MzAgMzggMzQgNjggMDAgMEEgMDggMTQgMTMgNEQgMzAgMzMgMzYgIDExTTA4NGguLi4uLk0wMzYK
ICAgIDBCMTA6IDBBIDREIDMwIDMxIDMyIDREIDMwIDM4IDM0IDY4IDAwIDBBIDA4IDY5IDE0IDE0
ICAuTTAxMk0wODRoLi4uaS4uCiAgICAwQjIwOiA0RCAzMCAzMCAzMSAwQSA3MCAwMCA2MCBBMCAw
OCA5MyA2OCAwQSAxNSA3MCAwMSAgTTAwMS5wLmAuLi5oLi5wLgogICAgMEIzMDogNjAgQTQgNjAg
MTQgMUEgNEQgMzAgMzAgMzMgMEIgNzkgNjggMEEgMDUgNjAgNzIgIGAuYC4uTTAwMy55aC4uYHIK
ICAgIDBCNDA6IDYwIDY5IDYxIDc5IDYxIDBBIDE4IDYyIDcyIDYyIDZBIDYzIEE0IDYzIDVCIDgw
ICBgaWF5YS4uYnJiamMuY1suCiAgICAwQjUwOiA1NiA0MSA1MiA1MSAwMSAwQiBEOCAwQyAwQSAw
OCA1QiA4MSAwQiA1NiA0MSA1MiAgVkFSUS4uLi4uLlsuLlZBUgogICAgMEI2MDogNTEgMDMgNTYg
NDEgNTEgMzEgMjAgMTQgMjIgNEQgMzAgMzAgMzQgMDkgNUIgODcgIFEuVkFRMSAuIk0wMDQuWy4K
ICAgIDBCNzA6IDEyIDU2IDQxIDUyIDUxIDU2IDQxIDUxIDMxIDY4IDAzIDAwIDIwIDU2IDQxIDUy
ICAuVkFSUVZBUTFoLi4gVkFSCiAgICAwQjgwOiAzMiAyMCA3MCA1NiA0MSA1MiAzMiA2MCBBNCA2
MCAxNCAyMCA0RCAzMCAzMCAzNSAgMiBwVkFSMmAuYC4gTTAwNQogICAgMEI5MDogMEEgNUIgODcg
MTIgNTYgNDEgNTIgNTEgNTYgNDEgNTEgMzEgNjggMDMgMDAgMjAgIC5bLi5WQVJRVkFRMWguLiAK
ICAgIDBCQTA6IDU2IDQxIDUyIDMyIDIwIDcwIDY5IDU2IDQxIDUyIDMyIDE0IDE4IDREIDMwIDMw
ICBWQVIyIHBpVkFSMi4uTTAwCiAgICAwQkIwOiAzNiAwQiA3QiA0RCAzMCAzMCAzNCA2OCA2OSA2
MCA3RCA2MCA2QSA2MSA0RCAzMCAgNi57TTAwNGhpYH1gamFNMAogICAgMEJDMDogMzAgMzUgNjgg
NjEgMTQgNDEgMUQgNEQgMzAgMzAgMzIgMEEgQTAgNDIgMEIgOTMgIDA1aGEuQS5NMDAyLi5CLi4K
ICAgIDBCRDA6IDY4IDAwIEEwIDI5IDkzIDY5IDAwIDREIDMwIDMwIDM2IDREIDMwIDMwIDMzIDBB
ICBoLi4pLmkuTTAwNk0wMDMuCiAgICAwQkUwOiAwNiAwMCAwQSBDMCAwQyBGRiBFRiBGRiBGRiAw
MCA0RCAzMCAzMCAzNiA0RCAzMCAgLi4uLi4uLi4uLk0wMDZNMAogICAgMEJGMDogMzAgMzMgMDEg
MDAgMEEgNjUgMEMgRkUgRkUgRkYgRkYgMDAgQTAgMjkgOTMgNjkgIDAzLi4uZS4uLi4uLi4pLmkK
ICAgIDBDMDA6IDAxIDREIDMwIDMwIDM2IDREIDMwIDMwIDMzIDBBIDA2IDAwIDBBIEMwIDBDIEZG
ICAuTTAwNk0wMDMuLi4uLi4uCiAgICAwQzEwOiBERiBGRiBGRiAwMCA0RCAzMCAzMCAzNiA0RCAz
MCAzMCAzMyAwMSAwMCAwQSA2NSAgLi4uLk0wMDZNMDAzLi4uZQogICAgMEMyMDogMEMgRkQgRkQg
RkYgRkYgMDAgQTAgMkEgOTMgNjkgMEEgMDIgNEQgMzAgMzAgMzYgIC4uLi4uLi4qLmkuLk0wMDYK
ICAgIDBDMzA6IDREIDMwIDMwIDMzIDBBIDA2IDAwIDBBIEMwIDBDIEZGIEJGIEZGIEZGIDAwIDRE
ICBNMDAzLi4uLi4uLi4uLi5NCiAgICAwQzQwOiAzMCAzMCAzNiA0RCAzMCAzMCAzMyAwMSAwMCAw
QSA2NSAwQyBGQiBGQiBGRiBGRiAgMDA2TTAwMy4uLmUuLi4uLgogICAgMEM1MDogMDAgQTAgMkEg
OTMgNjkgMEEgMDMgNEQgMzAgMzAgMzYgNEQgMzAgMzAgMzMgMEEgIC4uKi5pLi5NMDA2TTAwMy4K
ICAgIDBDNjA6IDA2IDAwIDBBIEMwIDBDIEZGIDdGIEZGIEZGIDAwIDREIDMwIDMwIDM2IDREIDMw
ICAuLi4uLi4uLi4uTTAwNk0wCiAgICAwQzcwOiAzMCAzMyAwMSAwMCAwQSA2NSAwQyBGNyBGNyBG
RiBGRiAwMCA1QiAyMiAwMSBBMCAgMDMuLi5lLi4uLi4uWyIuLgogICAgMEM4MDogNDIgMEMgOTMg
NjggMDEgQTAgMkQgOTMgNjkgMDAgNEQgMzAgMzAgMzYgNEQgMzAgIEIuLmguLi0uaS5NMDA2TTAK
ICAgIDBDOTA6IDMwIDMzIDBBIDA2IDAwIDBBIEMwIDBDIEZGIEVGIEZGIEZGIDBCIDAwIDEwIDRE
ICAwMy4uLi4uLi4uLi4uLi5NCiAgICAwQ0EwOiAzMCAzMCAzNiA0RCAzMCAzMCAzMyAwMSAwMCAw
QSA2NSAwQyBGRSBGRSBGRiBGRiAgMDA2TTAwMy4uLmUuLi4uLgogICAgMENCMDogMEIgMDEgMDEg
QTAgMkQgOTMgNjkgMDEgNEQgMzAgMzAgMzYgNEQgMzAgMzAgMzMgIC4uLi4tLmkuTTAwNk0wMDMK
ICAgIDBDQzA6IDBBIDA2IDAwIDBBIEMwIDBDIEZGIERGIEZGIEZGIDBCIDAwIDIwIDREIDMwIDMw
ICAuLi4uLi4uLi4uLi4gTTAwCiAgICAwQ0QwOiAzNiA0RCAzMCAzMCAzMyAwMSAwMCAwQSA2NSAw
QyBGRCBGRCBGRiBGRiAwQiAwMiAgNk0wMDMuLi5lLi4uLi4uLgogICAgMENFMDogMDIgQTAgMkUg
OTMgNjkgMEEgMDIgNEQgMzAgMzAgMzYgNEQgMzAgMzAgMzMgMEEgIC4uLi5pLi5NMDA2TTAwMy4K
ICAgIDBDRjA6IDA2IDAwIDBBIEMwIDBDIEZGIEJGIEZGIEZGIDBCIDAwIDQwIDREIDMwIDMwIDM2
ICAuLi4uLi4uLi4uLkBNMDA2CiAgICAwRDAwOiA0RCAzMCAzMCAzMyAwMSAwMCAwQSA2NSAwQyBG
QiBGQiBGRiBGRiAwQiAwNCAwNCAgTTAwMy4uLmUuLi4uLi4uLgogICAgMEQxMDogQTAgMkUgOTMg
NjkgMEEgMDMgNEQgMzAgMzAgMzYgNEQgMzAgMzAgMzMgMEEgMDYgIC4uLmkuLk0wMDZNMDAzLi4K
ICAgIDBEMjA6IDAwIDBBIEMwIDBDIEZGIDdGIEZGIEZGIDBCIDAwIDgwIDREIDMwIDMwIDM2IDRE
ICAuLi4uLi4uLi4uLk0wMDZNCiAgICAwRDMwOiAzMCAzMCAzMyAwMSAwMCAwQSA2NSAwQyBGNyBG
NyBGRiBGRiAwQiAwOCAwOCA1QiAgMDAzLi4uZS4uLi4uLi4uWwogICAgMEQ0MDogMjIgMDEgQTAg
NDMgMDUgOTMgNjggMDAgNEQgMzAgMzAgMzggNjkgNzAgNEQgMzAgICIuLkMuLmguTTAwOGlwTTAK
ICAgIDBENTA6IDMwIDM0IDREIDMwIDMwIDMzIDBBIDAzIDY5IDBBIEE1IDYwIDdCIDYwIDBBIEZG
ICAwNE0wMDMuLmkuLmB7YC4uCiAgICAwRDYwOiA2MCA3MCAwQiBGNCAwMSA2MSBBMiAyMyA5MCA5
NCA2MSAwMCA5MiA5MyA2MCAwQSAgYHAuLi5hLiMuLmEuLi5gLgogICAgMEQ3MDogMTAgNzAgNEQg
MzAgMzAgMzQgNEQgMzAgMzAgMzMgMEEgMDMgNjkgMEEgQTUgNjAgIC5wTTAwNE0wMDMuLmkuLmAK
ICAgIDBEODA6IDdCIDYwIDBBIEZGIDYwIDc2IDYxIDVCIDIyIDAxIEEwIDBCIDkyIDkzIDYwIDBB
ICB7YC4uYHZhWyIuLi4uLmAuCiAgICAwRDkwOiAxMCA0RCAzMCAzMCAzNyA2OSAxNCA0MSAwOCA0
RCAzMCAzMCAzOCAwOSA3MCA0RCAgLk0wMDdpLkEuTTAwOC5wTQogICAgMERBMDogMzAgMzEgMzkg
MDAgMEEgMTUgNjggMEEgODggNjAgN0QgN0IgNjAgMEMgRjAgRkYgIDAxOS4uLmguLmB9e2AuLi4K
ICAgIDBEQjA6IEZGIEZGIDAwIDBBIDAyIDYxIDREIDMwIDMyIDMwIDAwIDBBIDE1IDY4IDBBIDg4
ICAuLi4uLmFNMDIwLi4uaC4uCiAgICAwREMwOiA2MSA0RCAzMCAzMCAzNiA0RCAzMCAzMCAzMyAw
QSAwMyA2OCAwQSBBNCAwQyBGRSAgYU0wMDZNMDAzLi5oLi4uLgogICAgMEREMDogRkYgRkYgRkYg
MDEgNEQgMzAgMzAgMzYgNEQgMzAgMzAgMzMgMEEgMDMgNjggMEEgIC4uLi5NMDA2TTAwMy4uaC4K
ICAgIDBERTA6IEEyIDBDIEZGIERGIEZGIEZGIDBCIDAwIDIwIDREIDMwIDMwIDM2IDREIDMwIDMw
ICAuLi4uLi4uLiBNMDA2TTAwCiAgICAwREYwOiAzMyAwQSAwMyA2OCAwQSBDMCAwQyBGRiA3RiBG
RiBGRiAwQiAwMCA4MCA0RCAzMCAgMy4uaC4uLi4uLi4uLi5NMAogICAgMEUwMDogMzAgMzYgNEQg
MzAgMzAgMzMgMEEgMDMgNjggMEEgQTQgMEMgRkYgRkYgRkYgREYgIDA2TTAwMy4uaC4uLi4uLi4K
ICAgIDBFMTA6IDBDIDAwIDAwIDAwIDIwIDVCIDIyIDAxIDE0IDQ0IDA1IDREIDMwIDMwIDM3IDA5
ICAuLi4uIFsiLi5ELk0wMDcuCiAgICAwRTIwOiA3MCA0RCAzMCAzMSAzOSAwMCAwQSAxNSA2OCAw
QSA4OCA2MCA3RCA3QiA2MCAwQyAgcE0wMTkuLi5oLi5gfXtgLgogICAgMEUzMDogRjAgRkYgRkYg
RkYgMDAgMDEgNjEgNEQgMzAgMzIgMzAgMDAgMEEgMTUgNjggMEEgIC4uLi4uLmFNMDIwLi4uaC4K
ICAgIDBFNDA6IDg4IDYxIDREIDMwIDMwIDM2IDREIDMwIDMwIDMzIDBBIDAzIDY4IDBBIEE0IDBD
ICAuYU0wMDZNMDAzLi5oLi4uCiAgICAwRTUwOiBGRSBGRiBGRiBGRiAwMCA0RCAzMCAzMCAzNiA0
RCAzMCAzMCAzMyAwQSAwMyA2OCAgLi4uLi5NMDA2TTAwMy4uaAogICAgMEU2MDogMEEgQTIgMEMg
RkYgREYgRkYgRkYgMEIgMDAgMjAgNUIgMjIgMDEgMTQgNDQgMUEgIC4uLi4uLi4uLiBbIi4uRC4K
ICAgIDBFNzA6IDREIDMxIDMxIDMxIDBBIDREIDM0IDM2IDMwIDBEIDIwIDIwIDRCIDQ1IDUyIDJE
ICBNMTExLk00NjAuICBLRVItCiAgICAwRTgwOiA0MSA1MyA0QyAyRCA0MyA3MCA2RCA1MyA2NSA3
NCA0NCA2NSA3NiA2OSA2MyA2NSAgQVNMLUNwbVNldERldmljZQogICAgMEU5MDogNTAgNkYgNzcg
NjUgNzIgMjAgMjggMzAgNzggMjUgNTggMkMgMjAgMzAgNzggMjUgIFBvd2VyICgweCVYLCAweCUK
ICAgIDBFQTA6IDU4IDI5IDBBIDAwIDY4IDY5IDAwIDAwIDAwIDAwIEEwIDQ3IDE2IDkyIDkzIDY4
ICBYKS4uaGkuLi4uLkcuLi5oCiAgICAwRUIwOiAwMCA3MCA0RCAzMSAzMSAzMCA2MCBBMCA0QSAx
NSA2MCA3MiA2MCAwQSAxMCA2MCAgLnBNMTEwYC5KLmByYC4uYAogICAgMEVDMDogNzAgMDAgNjEg
NzAgMDEgNjIgNzAgMDAgNjcgQTIgNDggMTQgOTAgOTIgOTMgNjIgIHAuYXAuYnAuZy5ILi4uLmIK
ICAgIDBFRDA6IDBBIEZGIDkyIDkzIDYyIDAwIDcwIDREIDMwIDMxIDMzIDcyIDYwIDYxIDAwIDAw
ICAuLi4uYi5wTTAxM3JgYS4uCiAgICAwRUUwOiAwMCAwQSAwOCA2MiA3MCA0RCAzMCAzMSAzMyA3
MiA2MCA2MSAwMCAwMSAwMCAwQSAgLi4uYnBNMDEzcmBhLi4uLgogICAgMEVGMDogMDggNjMgQTAg
NDcgMTAgOTAgOTMgNjIgNjggOTMgNjMgN0IgNjkgMDEgMDAgNzAgIC5jLkcuLi5iaC5je2kuLnAK
ICAgIDBGMDA6IDREIDMwIDMxIDMzIDcyIDYwIDYxIDAwIDBBIDA3IDAwIDBBIDA4IDYzIEEwIDQ4
ICBNMDEzcmBhLi4uLi4uYy5ICiAgICAwRjEwOiAwRSA5MiA5MyA2MyAwMCA3MCA0RCAzMCAzMSAz
MyA3MiA2MCA2MSAwMCAwQSAwMiAgLi4uYy5wTTAxM3JgYS4uLgogICAgMEYyMDogMDAgMEEgMDgg
NjQgQTAgNDkgMDQgOTMgNjQgMDAgNzAgNEQgMzAgMzEgMzMgNzIgIC4uLmQuSS4uZC5wTTAxM3IK
ICAgIDBGMzA6IDYwIDYxIDAwIDBBIDAzIDAwIDBBIDIwIDY1IDcwIDREIDMwIDMxIDMzIDcyIDYw
ICBgYS4uLi4uIGVwTTAxM3JgCiAgICAwRjQwOiA2MSAwMCAwQSAwMyAwQSAxMCAwQSAwOCA2NiA0
RCAzMCAzMSAzMCA3QiA2NSAwQyAgYS4uLi4uLi5mTTAxMHtlLgogICAgMEY1MDogRkYgRkYgMDAg
RkYgMDAgNjYgQTAgMEUgOTMgN0IgNjkgMDEgMDAgMDAgNEQgMzAgIC4uLi4uZi4uLntpLi4uTTAK
ICAgIDBGNjA6IDMwIDMwIDBCIEQ4IDBEIEExIDA4IDREIDMwIDMwIDMwIDBCIERCIDBEIEEwIDRE
ICAwMC4uLi4uTTAwMC4uLi5NCiAgICAwRjcwOiAwNCA5MyA2NCAwMSA3MCA0RCAzMCAzMSAzMyA3
MiA2MCA2MSAwMCAwQSAwMyAwMCAgLi5kLnBNMDEzcmBhLi4uLgogICAgMEY4MDogMEEgMjAgNjUg
NzAgNEQgMzAgMzEgMzMgNzIgNjAgNjEgMDAgMEEgMDMgMEEgMTAgIC4gZXBNMDEzcmBhLi4uLi4K
ICAgIDBGOTA6IDBBIDA4IDY2IEEyIDEwIDkyIDkzIDREIDMwIDMwIDM5IDdCIDY1IDBDIEZGIEZG
ICAuLmYuLi4uTTAwOXtlLi4uCiAgICAwRkEwOiAwMCBGRiAwMCA2NiBBMCAwRSA5MyA3QiA2OSAw
MSAwMCAwMCA0RCAzMCAzMCAzMCAgLi4uZi4uLntpLi4uTTAwMAogICAgMEZCMDogMEIgRDkgMEQg
QTEgMDggNEQgMzAgMzAgMzAgMEIgREMgMEQgQTAgM0EgOTMgNjQgIC4uLi4uTTAwMC4uLi46LmQK
ICAgIDBGQzA6IDBBIDAyIDcwIDREIDMwIDMxIDMzIDcyIDYwIDYxIDAwIDBBIDAzIDAwIDBBIDIw
ICAuLnBNMDEzcmBhLi4uLi4gCiAgICAwRkQwOiA2NSA1QiAyMiA3OCA3MiA2NSAwQiBFNyAwMyAw
MCAwQiBFOCAwMyAwMCAwMCBBMCAgZVsieHJlLi4uLi4uLi4uLgogICAgMEZFMDogMEUgOTMgN0Ig
NjkgMDEgMDAgMDAgNEQgMzAgMzAgMzAgMEIgREEgMEQgQTEgMDggIC4ue2kuLi5NMDAwLi4uLi4K
ICAgIDBGRjA6IDREIDMwIDMwIDMwIDBCIEREIDBEIDcwIDAxIDY3IEExIDEyIEEwIDEwIDkwIDkz
ICBNMDAwLi4ucC5nLi4uLi4uCiAgICAxMDAwOiA2NyAwMSA5MyA3QiA2OSAwQSAxMCAwMCAwQSAx
MCA3MCAwMCA2MiA3MiA2MSAwQSAgZy4ue2kuLi4uLnAuYnJhLgogICAgMTAxMDogMDggNjEgMTQg
NEMgMTAgNEQgMzQgMzcgMzAgMEEgNzAgMDAgNjcgQTAgNDggMEIgIC5hLkwuTTQ3MC5wLmcuSC4K
ICAgIDEwMjA6IDkyIDkzIDY4IDAwIDcwIDREIDMxIDMxIDMwIDYwIEEwIDRCIDBBIDYwIDcyIDYw
ICAuLmgucE0xMTBgLksuYHJgCiAgICAxMDMwOiAwQSAxMCA2MCA3MCAwMCA2MSA3MCA0RCAzMCAz
MSAzMyA3MiA2MCA2MSAwMCAwMCAgLi5gcC5hcE0wMTNyYGEuLgogICAgMTA0MDogMDAgMEEgMDgg
NjIgQTIgNDEgMDkgOTAgOTIgOTMgNjIgMEEgRkYgOTIgOTMgNjIgIC4uLmIuQS4uLi5iLi4uLmIK
ICAgIDEwNTA6IDAwIDcwIDREIDMwIDMxIDMzIDcyIDYwIDYxIDAwIDAxIDAwIDBBIDA4IDYzIEEw
ICAucE0wMTNyYGEuLi4uLmMuCiAgICAxMDYwOiA0MyAwNiA5MCA5MyA2MiA2OCA5MyA2MyA2OSA3
MCA0RCAzMCAzMSAzMyA3MiA2MCAgQy4uLmJoLmNpcE0wMTNyYAogICAgMTA3MDogNjEgMDAgMEEg
MDIgMDAgMEEgMDggNjMgNzAgNEQgMzAgMzEgMzMgNzIgNjAgNjEgIGEuLi4uLi5jcE0wMTNyYGEK
ICAgIDEwODA6IDAwIDBBIDA3IDAwIDBBIDA4IDY0IEEwIDNCIDkwIDkzIDYzIDAwIDkyIDkzIDY0
ICAuLi4uLi5kLjsuLmMuLi5kCiAgICAxMDkwOiAwMCA3MCA0RCAzMCAzMSAzMyA3MiA2MCA2MSAw
MCAwQSAwMyAwMCAwQSAyMCA2NSAgLnBNMDEzcmBhLi4uLi4gZQogICAgMTBBMDogNzAgNEQgMzAg
MzEgMzMgNzIgNjAgNjEgMDAgMEEgMDMgMEEgMTAgMEEgMDggNjYgIHBNMDEzcmBhLi4uLi4uLmYK
ICAgIDEwQjA6IEEwIDEyIDkzIDREIDMwIDMwIDM5IDdCIDY1IDBDIEZGIEZGIDAwIEZGIDAwIDY2
ICAuLi5NMDA5e2UuLi4uLi5mCiAgICAxMEMwOiA3MCAwMSA2NyA3MiA2MSAwQSAwOCA2MSA3MCA0
RCAzMCAzMSAzMyA3MiA2MCA2MSAgcC5ncmEuLmFwTTAxM3JgYQogICAgMTBEMDogMDAgMDAgMDAg
MEEgMDggNjIgNEQgMzQgMzYgMzAgMEQgMjAgMjAgNEIgNDUgNTIgIC4uLi4uYk00NjAuICBLRVIK
ICAgIDEwRTA6IDJEIDQxIDUzIDRDIDJEIDQzIDcwIDZEIDQzIDY4IDY1IDYzIDZCIDQ0IDY1IDc2
ICAtQVNMLUNwbUNoZWNrRGV2CiAgICAxMEYwOiA2OSA2MyA2NSA1MCA2RiA3NyA2NSA3MiA1MyA3
NCA2MSA3NCA2NSAyMCAyOCAzMCAgaWNlUG93ZXJTdGF0ZSAoMAogICAgMTEwMDogNzggMjUgNTgg
MkMgMjAgMjUgNjQgMjkgMjAgMjAgNTIgNjUgNzQgNzUgNzIgNkUgIHglWCwgJWQpICBSZXR1cm4K
ICAgIDExMTA6IDIwIDI4IDI1IDY0IDI5IDBBIDAwIDY4IDY5IDY3IDAwIDAwIDAwIEE0IDY3IDE0
ICAgKCVkKS4uaGlnLi4uLmcuCiAgICAxMTIwOiA0QiAwRiA0RCAzMiAzMiAzOCAwOSBBMCA0MyAw
RiA5NCA2OCAwQSAwMyA3MCA0RCAgSy5NMjI4Li5DLi5oLi5wTQogICAgMTEzMDogMzEgMzEgMzAg
NjAgQTAgNDYgMEUgNjAgNzIgNjAgMEEgMTAgNjAgNzAgMDAgNjEgIDExMGAuRi5gcmAuLmBwLmEK
ICAgIDExNDA6IDcwIDREIDMwIDMxIDMzIDcyIDYwIDYxIDAwIDAwIDAwIDBBIDA4IDYyIEEyIDRD
ICBwTTAxM3JgYS4uLi4uYi5MCiAgICAxMTUwOiAwQyA5MCA5MiA5MyA2MiAwQSBGRiA5MiA5MyA2
MiAwMCA3MCA0RCAzMCAzMSAzMyAgLi4uLmIuLi4uYi5wTTAxMwogICAgMTE2MDogNzIgNjAgNjEg
MDAgMEEgMDcgMDAgMEEgMDggNjMgQTAgNEQgMDkgOTMgNjMgNjggIHJgYS4uLi4uLmMuTS4uY2gK
ICAgIDExNzA6IDcwIDREIDMwIDMxIDMzIDcyIDYwIDYxIDAwIDBBIDAyIDAwIDBBIDA4IDY0IEEw
ICBwTTAxM3JgYS4uLi4uLmQuCiAgICAxMTgwOiAzMCA5MyA2NCAwMCA3MCA0RCAzMCAzMSAzMyA3
MiA2MCA2MSAwMCAwQSAwMyAwMCAgMC5kLnBNMDEzcmBhLi4uLgogICAgMTE5MDogMEEgMjAgNjUg
NzAgNEQgMzAgMzEgMzMgNzIgNjAgNjEgMDAgMEEgMDMgMEEgMTAgIC4gZXBNMDEzcmBhLi4uLi4K
ICAgIDExQTA6IDBBIDA4IDY2IDREIDMwIDMxIDMwIDdCIDY1IDBDIEZGIEZGIDAwIEZGIDAwIDY2
ICAuLmZNMDEwe2UuLi4uLi5mCiAgICAxMUIwOiBBMCAzNCA5MyA2NCAwMSA3MCA0RCAzMCAzMSAz
MyA3MiA2MCA2MSAwMCAwQSAwMyAgLjQuZC5wTTAxM3JgYS4uLgogICAgMTFDMDogMDAgMEEgMjAg
NjUgNzAgNEQgMzAgMzEgMzMgNzIgNjAgNjEgMDAgMEEgMDMgMEEgIC4uIGVwTTAxM3JgYS4uLi4K
ICAgIDExRDA6IDEwIDBBIDA4IDY2IEEyIDEwIDkyIDkzIDREIDMwIDMwIDM5IDdCIDY1IDBDIEZG
ICAuLi5mLi4uLk0wMDl7ZS4uCiAgICAxMUUwOiBGRiAwMCBGRiAwMCA2NiBBMCAyMiA5MyA2NCAw
QSAwMiA3MCA0RCAzMCAzMSAzMyAgLi4uLmYuIi5kLi5wTTAxMwogICAgMTFGMDogNzIgNjAgNjEg
MDAgMEEgMDMgMDAgMEEgMjAgNjUgNUIgMjIgNzggNzIgNjUgMEIgIHJgYS4uLi4uIGVbInhyZS4K
ICAgIDEyMDA6IEU3IDAzIDAwIDBCIEU4IDAzIDAwIDAwIDcyIDYxIDBBIDA4IDYxIDcwIDREIDMw
ICAuLi4uLi4uLnJhLi5hcE0wCiAgICAxMjEwOiAzMSAzMyA3MiA2MCA2MSAwMCAwMCAwMCAwQSAw
OCA2MiAxNCA0MiAyQSA0RCAzMiAgMTNyYGEuLi4uLmIuQipNMgogICAgMTIyMDogMzEgMzkgMEEg
NEQgMzQgMzYgMzAgMEQgMjAgMjAgNEIgNDUgNTIgMkQgNDEgNTMgIDE5Lk00NjAuICBLRVItQVMK
ICAgIDEyMzA6IDRDIDJEIDQzIDcwIDZEIDUzIDY1IDc0IDQ0IDY1IDc2IDY5IDYzIDY1IDQzIDZD
ICBMLUNwbVNldERldmljZUNsCiAgICAxMjQwOiA2RiA2MyA2QiAyMCAyOCAzMCA3OCAyNSA1OCAy
QyAyMCAyNSA2NCAyOSAwQSAwMCAgb2NrICgweCVYLCAlZCkuLgogICAgMTI1MDogNjggNjkgMDAg
MDAgMDAgMDAgQTAgNDcgMjYgOTIgOTMgNjggMDAgNzAgNEQgMzIgIGhpLi4uLi5HJi4uaC5wTTIK
ICAgIDEyNjA6IDMyIDMxIDYwIEEwIDRBIDI1IDdCIDYwIDBBIDAyIDAwIDcwIDREIDMyIDMyIDMw
ICAyMWAuSiV7YC4uLnBNMjIwCiAgICAxMjcwOiA2MCBBMCA0QyAyNCA2MCA3MiA2MCAwQSAxMCA2
MCA3MCAwMCA2MSA3MCAwMSA2MiAgYC5MJGByYC4uYHAuYXAuYgogICAgMTI4MDogQTIgNEQgMjMg
OTIgOTMgNjIgMEEgRkYgNzAgNEQgMzAgMzEgMzMgNzIgNjAgNjEgIC5NIy4uYi4ucE0wMTNyYGEK
ICAgIDEyOTA6IDAwIDAwIDAwIDBBIDA4IDYyIDcwIDREIDMwIDMxIDMzIDcyIDYwIDYxIDAwIDAx
ICAuLi4uLmJwTTAxM3JgYS4uCiAgICAxMkEwOiAwMCAwQSAwOCA2MyA3MCA0RCAzMCAzMSAzMyA3
MiA2MCA2MSAwMCAwQSAwNCAwMCAgLi4uY3BNMDEzcmBhLi4uLgogICAgMTJCMDogMEEgMDggNjQg
NzAgNEQgMzAgMzEgMzMgNzIgNjAgNjEgMDAgMEEgMDcgMDAgMEEgIC4uZHBNMDEzcmBhLi4uLi4K
ICAgIDEyQzA6IDA4IDY1IDcwIDREIDMwIDMxIDMzIDcyIDYwIDYxIDAwIDBBIDA4IDAwIDBBIDIw
ICAuZXBNMDEzcmBhLi4uLi4gCiAgICAxMkQwOiA2NyBBMCA0NyAxRSA5MyA2NCA2OCBBMCA0MSAx
RSA5MCA5NSA2MiAwQSAwQSA3QiAgZy5HLi5kaC5BLi4uYi4uewogICAgMTJFMDogNjUgMEEgODAg
MDAgQTAgMDcgOTMgNjkgMDAgNzAgMDAgNjMgQTEgNDQgMDkgQTAgIGUuLi4uLi5pLnAuYy5ELi4K
ICAgIDEyRjA6IDRCIDA3IDdCIDY1IDBBIDA0IDAwIEEwIDE4IDkzIDY5IDAxIEEwIDBEIDkyIDk1
ICBLLntlLi4uLi4uaS4uLi4uCiAgICAxMzAwOiA0RCAzMCAzOCAzNSAwQSAwNCA3MCAwQSAwMyA2
MyBBMSAwNSA3MCAwQSAwRiA2MyAgTTA4NS4ucC4uYy4ucC4uYwogICAgMTMxMDogQTAgNEEgMDUg
OTMgNjkgMEEgMDIgNzAgNEQgMzAgMzEgMzcgMDAgNEQgMzAgMzEgIC5KLi5pLi5wTTAxNy5NMDEK
ICAgIDEzMjA6IDMzIDcyIDYwIDYxIDAwIDBBIDA1IDAwIDBBIDA4IDREIDMwIDMxIDMzIDcyIDYw
ICAzcmBhLi4uLi4uTTAxM3JgCiAgICAxMzMwOiA2MSAwMCAwQSAwNiAwMCAwQSAwOCAwQSAxOSAw
MCAwQSAwOCA2NiBBMCAxNyA5MyAgYS4uLi4uLi4uLi4uZi4uLgogICAgMTM0MDogNEQgMzIgMzYg
MzUgNjYgMDAgMDAgMDEgQTAgMEMgOTIgOTUgNEQgMzAgMzggMzUgIE0yNjVmLi4uLi4uLk0wODUK
ICAgIDEzNTA6IDBBIDA0IDcwIDAxIDYzIEExIDE1IEEwIDBEIDkyIDk1IDREIDMwIDM4IDM1IDBB
ICAuLnAuYy4uLi4uLk0wODUuCiAgICAxMzYwOiAwNCA3MCAwQSAwMyA2MyBBMSAwNSA3MCAwQSAw
RiA2MyBBMSAxNSBBMCAwRCA5MiAgLnAuLmMuLnAuLmMuLi4uLgogICAgMTM3MDogOTUgNEQgMzAg
MzggMzUgMEEgMDQgNzAgMEEgMDMgNjMgQTEgMDUgNzAgMEEgMEYgIC5NMDg1Li5wLi5jLi5wLi4K
ICAgIDEzODA6IDYzIEEwIDQwIDBGIDkyIDk1IDREIDMwIDM4IDM1IDBBIDA0IEEwIDRDIDA5IDkz
ICBjLkAuLi5NMDg1Li4uTC4uCiAgICAxMzkwOiA0RCAzMCAzOCAzNSAwQSAwOCBBMCA0MyAwNyA5
NCA3QiA2NyAwQyAwMCAwMCBGMCAgTTA4NS4uLkMuLntnLi4uLgogICAgMTNBMDogMEYgMDAgMDAg
NzAgNEQgMzIgMzQgMzkgN0IgN0EgNjcgMEEgMTggMDAgMEEgMEYgIC4uLnBNMjQ5e3pnLi4uLi4K
ICAgIDEzQjA6IDAwIDdCIDdBIDY3IDBBIDE0IDAwIDBBIDBGIDAwIDdCIDdBIDY3IDBBIDEwIDAw
ICAue3pnLi4uLi4ue3pnLi4uCiAgICAxM0MwOiAwQSAwRiAwMCAwQyAwMCAxRSBEMCAwMiA2NiA3
QiA2NiA3RiAwQyBGRiBGRiBGRiAgLi4uLi4uLi5me2YuLi4uLgogICAgMTNEMDogRkYgNzkgMEEg
MDMgNzkgNjIgMDEgMDAgMDAgMDAgNjYgN0QgNjYgNzkgNjMgNzkgIC55Li55Yi4uLi5mfWZ5Y3kK
ICAgIDEzRTA6IDYyIDAxIDAwIDAwIDY2IDREIDMyIDM1IDMwIDdCIDdBIDY3IDBBIDE4IDAwIDBB
ICBiLi4uZk0yNTB7emcuLi4uCiAgICAxM0YwOiAwRiAwMCA3QiA3QSA2NyAwQSAxNCAwMCAwQSAw
RiAwMCA3QiA3QSA2NyAwQSAxMCAgLi57emcuLi4uLi57emcuLgogICAgMTQwMDogMDAgMEEgMEYg
MDAgMEMgMDAgMUUgRDAgMDIgNjYgQTEgMUUgNEQgMzAgMzEgMzIgIC4uLi4uLi4uLmYuLk0wMTIK
ICAgIDE0MTA6IDcyIDREIDMwIDM4IDM0IDBCIDAwIDBFIDAwIDdBIDYyIDBBIDAyIDAwIDc5IDdC
ICByTTA4NC4uLi56Yi4uLnl7CiAgICAxNDIwOiA2MiAwQSAwMyAwMCAwMSAwMCAwQSAwMiA2MyBB
MSA0OCAwNCBBMCAyNiA5MyA3QSAgYi4uLi4uLi5jLkguLiYuegogICAgMTQzMDogNjcgMEEgMUMg
MDAgMEEgMDIgNEQgMzAgMzEgMzIgNzIgNEQgMzAgMzggMzQgMEIgIGcuLi4uLk0wMTJyTTA4NC4K
ICAgIDE0NDA6IDAwIDEzIDAwIDdBIDYyIDBBIDAyIDAwIDc5IDdCIDYyIDBBIDAzIDAwIDAxIDAw
ICAuLi56Yi4uLnl7Yi4uLi4uCiAgICAxNDUwOiAwQSAwMiA2MyBBMSAxRSA0RCAzMCAzMSAzMiA3
MiA0RCAzMCAzOCAzNCAwQiAwMCAgLi5jLi5NMDEyck0wODQuLgogICAgMTQ2MDogMEUgMDAgN0Eg
NjIgMEEgMDIgMDAgNzkgN0IgNjIgMEEgMDMgMDAgMDEgMDAgMEEgIC4uemIuLi55e2IuLi4uLi4K
ICAgIDE0NzA6IDAyIDYzIEExIDFEIDREIDMwIDMxIDMyIDcyIDREIDMwIDM4IDM0IDBCIDAwIDBF
ICAuYy4uTTAxMnJNMDg0Li4uCiAgICAxNDgwOiAwMCA3QSA2MiAwMSAwMCA3OSA3QiA2MiAwMSAw
MCAwQSAwMiAwMCAwQSAwNCA2MyAgLnpiLi55e2IuLi4uLi4uYwogICAgMTQ5MDogQTAgMEIgOTMg
NjkgMDAgNEQgMzAgMzAgMzAgMEIgRTAgMEQgQTAgMEIgOTMgNjkgIC4uLmkuTTAwMC4uLi4uLmkK
ICAgIDE0QTA6IDAxIDREIDMwIDMwIDMwIDBCIEUxIDBEIEEwIDBDIDkzIDY5IDBBIDAyIDREIDMw
ICAuTTAwMC4uLi4uLmkuLk0wCiAgICAxNEIwOiAzMCAzMCAwQiBFMiAwRCA3MCAwQSBGRiA2MiA3
MiA2MSAwQSAwQyA2MSAxNCA0RCAgMDAuLi5wLi5icmEuLmEuTQogICAgMTRDMDogMTkgNEQgMzEg
MzEgMzIgMEEgNEQgMzQgMzYgMzAgMEQgMjAgMjAgNEIgNDUgNTIgIC5NMTEyLk00NjAuICBLRVIK
ICAgIDE0RDA6IDJEIDQxIDUzIDRDIDJEIDQzIDcwIDZEIDUzIDY1IDc0IDQ0IDY1IDc2IDY5IDYz
ICAtQVNMLUNwbVNldERldmljCiAgICAxNEUwOiA2NSA1MiA2NSA3MyA2NSA3NCAyMCAyOCAzMCA3
OCAyNSA1OCAyQyAyMCAzMCA3OCAgZVJlc2V0ICgweCVYLCAweAogICAgMTRGMDogMjUgNTggMjkg
MEEgMDAgNjggNjkgMDAgMDAgMDAgMDAgQTAgNDAgMTYgOTIgOTMgICVYKS4uaGkuLi4uLkAuLi4K
ICAgIDE1MDA6IDY4IDAwIDcwIDREIDMxIDMwIDM5IDYwIEEwIDQzIDE1IDYwIDcyIDYwIDBBIDEw
ICBoLnBNMTA5YC5DLmByYC4uCiAgICAxNTEwOiA2MCA3MCAwMCA2MSA3MCAwMSA2MiA3MCAwMCA2
NyBBMiA0MSAxNCA5MCA5MiA5MyAgYHAuYXAuYnAuZy5BLi4uLgogICAgMTUyMDogNjIgMEEgRkYg
OTIgOTMgNjIgMDAgNzAgNEQgMzAgMzEgMzMgNzIgNjAgNjEgMDAgIGIuLi4uYi5wTTAxM3JgYS4K
ICAgIDE1MzA6IDAwIDAwIDBBIDA4IDYyIDcwIDREIDMwIDMxIDMzIDcyIDYwIDYxIDAwIDAxIDAw
ICAuLi4uYnBNMDEzcmBhLi4uCiAgICAxNTQwOiAwQSAwOCA2MyBBMCA0MCAxMCA5MCA5MyA2MiA2
OCA5MyA2MyA3QiA2OSAwQSAwMyAgLi5jLkAuLi5iaC5je2kuLgogICAgMTU1MDogMDAgQTAgNDUg
MEMgOTUgNjMgMEEgMDIgNzAgNEQgMzAgMzEgMzMgNzIgNjAgNjEgIC4uRS4uYy4ucE0wMTNyYGEK
ICAgIDE1NjA6IDAwIDBBIDAyIDAwIDBBIDA4IDY0IEEwIDMwIDkzIDY0IDAwIDcwIDREIDMwIDMx
ICAuLi4uLi5kLjAuZC5wTTAxCiAgICAxNTcwOiAzMyA3MiA2MCA2MSAwMCAwQSAwMyAwMCAwQSAy
MCA2NSA3MCA0RCAzMCAzMSAzMyAgM3JgYS4uLi4uIGVwTTAxMwogICAgMTU4MDogNzIgNjAgNjEg
MDAgMEEgMDMgMEEgMTAgMEEgMDggNjYgNEQgMzAgMzEgMzAgN0IgIHJgYS4uLi4uLi5mTTAxMHsK
ICAgIDE1OTA6IDY1IDBDIEZGIEZGIDAwIEZGIDAwIDY2IEEwIDQ2IDA2IDkzIDY0IDAxIDcwIDRE
ICBlLi4uLi4uZi5GLi5kLnBNCiAgICAxNUEwOiAzMCAzMSAzMyA3MiA2MCA2MSAwMCAwQSAwMyAw
MCAwQSAyMCA2NSA3MCA0RCAzMCAgMDEzcmBhLi4uLi4gZXBNMAogICAgMTVCMDogMzEgMzMgNzIg
NjAgNjEgMDAgMEEgMDMgMEEgMTAgMEEgMDggNjYgNEQgMzAgMzEgIDEzcmBhLi4uLi4uLmZNMDEK
ICAgIDE1QzA6IDMwIDdCIDY1IDBDIEZGIEZGIDAwIEZGIDAwIDY2IDcwIDREIDMwIDMwIDM5IDdC
ICAwe2UuLi4uLi5mcE0wMDl7CiAgICAxNUQwOiA2NSAwQyBGRiBGRiAwMCBGRiAwMCA2NyA3MCAw
QiBGMiAwMyA2NCBBMiAyMSA5MCAgZS4uLi4uLmdwLi4uZC4hLgogICAgMTVFMDogOTQgNjQgMDAg
OTIgOTMgNjcgNjYgNzAgNzQgNjQgMDEgMDAgNjQgNUIgMjEgMEEgIC5kLi4uZ2ZwdGQuLmRbIS4K
ICAgIDE1RjA6IDYzIDcwIDREIDMwIDMwIDM5IDdCIDY1IDBDIEZGIEZGIDAwIEZGIDAwIDY3IEEw
ICBjcE0wMDl7ZS4uLi4uLmcuCiAgICAxNjAwOiAwQiA5MyA2MyAwMCA0RCAzMCAzMCAzMCAwQiBE
NSAwRCBBMCAwQiA5MyA2MyAwMSAgLi5jLk0wMDAuLi4uLi5jLgogICAgMTYxMDogNEQgMzAgMzAg
MzAgMEIgRDYgMEQgQTAgMjkgOTMgNjMgMEEgMDIgNzAgNEQgMzAgIE0wMDAuLi4uKS5jLi5wTTAK
ICAgIDE2MjA6IDMxIDMzIDcyIDYwIDYxIDAwIDBBIDAzIDAwIDBBIDIwIDY1IDVCIDIyIDc4IDcy
ICAxM3JgYS4uLi4uIGVbInhyCiAgICAxNjMwOiA2NSAwQiBFNyAwMyAwMCAwQiBFOCAwMyAwMCAw
MCA0RCAzMCAzMCAzMCAwQiBENyAgZS4uLi4uLi4uLk0wMDAuLgogICAgMTY0MDogMEQgNzAgMDEg
NjcgQTEgMTIgQTAgMTAgOTAgOTMgNjcgMDEgOTMgN0IgNjkgMEEgIC5wLmcuLi4uLi5nLi57aS4K
ICAgIDE2NTA6IDEwIDAwIDBBIDEwIDcwIDAwIDYyIDcyIDYxIDBBIDA4IDYxIDE0IDRGIDBEIDRE
ICAuLi4ucC5icmEuLmEuTy5NCiAgICAxNjYwOiAzMiAzNyAzNSAwQSA3MCAwMCA2NyBBMCA0QiAw
OCA5MiA5MyA2OCAwMCA3MCA0RCAgMjc1LnAuZy5LLi4uaC5wTQogICAgMTY3MDogMzEgMzAgMzkg
NjAgQTAgNEUgMDcgNjAgNzIgNjAgMEEgMTAgNjAgNzAgMDAgNjEgIDEwOWAuTi5gcmAuLmBwLmEK
ICAgIDE2ODA6IDcwIDAxIDYyIEEyIDRGIDA2IDkwIDkyIDkzIDYyIDBBIEZGIDkyIDkzIDYyIDAw
ICBwLmIuTy4uLi5iLi4uLmIuCiAgICAxNjkwOiA3MCA0RCAzMCAzMSAzMyA3MiA2MCA2MSAwMCAw
MCAwMCAwQSAwOCA2MiA3MCA0RCAgcE0wMTNyYGEuLi4uLmJwTQogICAgMTZBMDogMzAgMzEgMzMg
NzIgNjAgNjEgMDAgMDEgMDAgMEEgMDggNjMgQTAgNDEgMDQgOTAgIDAxM3JgYS4uLi4uYy5BLi4K
ICAgIDE2QjA6IDkzIDYyIDY4IDkzIDYzIDY5IEEwIDM3IDk1IDYzIDBBIDAyIDcwIDREIDMwIDMx
ICAuYmguY2kuNy5jLi5wTTAxCiAgICAxNkMwOiAzMyA3MiA2MCA2MSAwMCAwQSAwMyAwMCAwQSAy
MCA2NSA3MCA0RCAzMCAzMSAzMyAgM3JgYS4uLi4uIGVwTTAxMwogICAgMTZEMDogNzIgNjAgNjEg
MDAgMEEgMDMgMEEgMTAgMEEgMDggNjYgQTAgMTIgOTMgNEQgMzAgIHJgYS4uLi4uLi5mLi4uTTAK
ICAgIDE2RTA6IDMwIDM5IDdCIDY1IDBDIEZGIEZGIDAwIEZGIDAwIDY2IDcwIDAxIDY3IDcyIDYx
ICAwOXtlLi4uLi4uZnAuZ3JhCiAgICAxNkYwOiAwQSAwOCA2MSA0RCAzNCAzNiAzMCAwRCAyMCAy
MCA0QiA0NSA1MiAyRCA0MSA1MyAgLi5hTTQ2MC4gIEtFUi1BUwogICAgMTcwMDogNEMgMkQgNDMg
NzAgNkQgNDMgNjggNjUgNjMgNkIgNDQgNjUgNzYgNjkgNjMgNjUgIEwtQ3BtQ2hlY2tEZXZpY2UK
ICAgIDE3MTA6IDUyIDY1IDczIDY1IDc0IDUzIDc0IDYxIDc0IDY1IDIwIDI4IDMwIDc4IDI1IDU4
ICBSZXNldFN0YXRlICgweCVYCiAgICAxNzIwOiAyQyAyMCAyNSA2NCAyOSAyMCAyMCA1MiA2NSA3
NCA3NSA3MiA2RSAyMCAyOCAyNSAgLCAlZCkgIFJldHVybiAoJQogICAgMTczMDogNjQgMjkgMEEg
MDAgNjggNjkgNjcgMDAgMDAgMDAgQTQgNjcgMTQgNEQgMjggNEQgIGQpLi5oaWcuLi4uZy5NKE0K
ICAgIDE3NDA6IDMxIDMxIDMzIDA5IEEwIDQ4IDI3IDkyIDkzIDY4IDAwIDcwIDREIDMxIDMwIDM4
ICAxMTMuLkgnLi5oLnBNMTA4CiAgICAxNzUwOiA2MCA3MCAwMSA2NyBBMCA0OCAyNiA2MCA3MiA2
MCAwQSAxMCA2MCA3MCAwMCA2MSAgYHAuZy5IJmByYC4uYHAuYQogICAgMTc2MDogNzAgMDEgNjIg
QTIgNDkgMjUgOTAgOTIgOTMgNjIgMEEgRkYgOTIgOTMgNjIgMDAgIHAuYi5JJS4uLmIuLi4uYi4K
ICAgIDE3NzA6IDcwIDREIDMwIDMxIDMzIDcyIDYwIDYxIDAwIDAwIDAwIDBBIDA4IDYyIEEwIDQ3
ICBwTTAxM3JgYS4uLi4uYi5HCiAgICAxNzgwOiAyMyA5MyA2MiA2OCA3MCAwQSBGRiA2MiA3MCA0
RCAzMCAzMSAzMyA3MiA2MCA2MSAgIy5iaHAuLmJwTTAxM3JgYQogICAgMTc5MDogMDAgMDEgMDAg
MEEgMDggNjMgQTAgMzIgOTMgNjMgMDAgNzAgNEQgMzAgMzEgMzMgIC4uLi4uYy4yLmMucE0wMTMK
ICAgIDE3QTA6IDcyIDYwIDYxIDAwIDBBIDAyIDAwIDBBIDIwIDY1IDcwIDREIDMwIDMxIDMzIDcy
ICByYGEuLi4uLiBlcE0wMTNyCiAgICAxN0IwOiA2MCA2MSAwMCAwQSAwNCAwMCAwQSAwOCA2NiA3
MCA5MyA0RCAzMCAzMCAzOSA3QiAgYGEuLi4uLi5mcC5NMDA5ewogICAgMTdDMDogNjUgMEMgRkYg
RkYgMDAgRkYgMDAgNjYgNjcgQTAgNDIgMDYgOTMgNjMgMDEgNzAgIGUuLi4uLi5mZy5CLi5jLnAK
ICAgIDE3RDA6IDREIDMwIDMxIDMzIDcyIDYwIDYxIDAwIDBBIDAyIDAwIDBBIDIwIDY1IDcwIDRE
ICBNMDEzcmBhLi4uLi4gZXBNCiAgICAxN0UwOiAzMCAzMSAzMyA3MiA2MCA2MSAwMCAwQSAwNCAw
MCAwQSAwOCA2NiA3MCA5MyA0RCAgMDEzcmBhLi4uLi4uZnAuTQogICAgMTdGMDogMzAgMzAgMzkg
N0IgNjUgMEMgRkYgRkYgMDAgRkYgMDAgNjYgNjcgNzAgNEQgMzAgIDAwOXtlLi4uLi4uZmdwTTAK
ICAgIDE4MDA6IDMxIDMzIDcyIDYwIDYxIDAwIDBBIDA2IDAwIDBBIDIwIDY1IDcwIDREIDMwIDMx
ICAxM3JgYS4uLi4uIGVwTTAxCiAgICAxODEwOiAzMyA3MiA2MCA2MSAwMCAwQSAwOCAwMCAwQSAw
OCA2NiA3QiA2NyA5MyA0RCAzMCAgM3JgYS4uLi4uLmZ7Zy5NMAogICAgMTgyMDogMzAgMzkgN0Ig
NjUgMEMgRkYgRkYgMDAgRkYgMDAgNjYgNjcgQTAgNDIgMDkgOTMgIDA5e2UuLi4uLi5mZy5CLi4K
ICAgIDE4MzA6IDYzIDBBIDAyIDcwIDREIDMwIDMxIDMzIDcyIDYwIDYxIDAwIDBBIDAyIDAwIDBB
ICBjLi5wTTAxM3JgYS4uLi4uCiAgICAxODQwOiAyMCA2NSA3MCA0RCAzMCAzMSAzMyA3MiA2MCA2
MSAwMCAwQSAwNCAwMCAwQSAwOCAgIGVwTTAxM3JgYS4uLi4uLgogICAgMTg1MDogNjYgNzAgOTMg
NEQgMzAgMzAgMzkgN0IgNjUgMEMgRkYgRkYgMDAgRkYgMDAgNjYgIGZwLk0wMDl7ZS4uLi4uLmYK
ICAgIDE4NjA6IDY3IDcwIDREIDMwIDMxIDMzIDcyIDYwIDYxIDAwIDBBIDA2IDAwIDBBIDIwIDY1
ICBncE0wMTNyYGEuLi4uLiBlCiAgICAxODcwOiA3MCA0RCAzMCAzMSAzMyA3MiA2MCA2MSAwMCAw
QSAwOCAwMCAwQSAwOCA2NiA3QiAgcE0wMTNyYGEuLi4uLi5mewogICAgMTg4MDogNjcgOTMgNEQg
MzAgMzAgMzkgN0IgNjUgMEMgRkYgRkYgMDAgRkYgMDAgNjYgNjcgIGcuTTAwOXtlLi4uLi4uZmcK
ICAgIDE4OTA6IDcwIDREIDMwIDMxIDMzIDcyIDYwIDYxIDAwIDBBIDBBIDAwIDBBIDIwIDY1IDcw
ICBwTTAxM3JgYS4uLi4uIGVwCiAgICAxOEEwOiA0RCAzMCAzMSAzMyA3MiA2MCA2MSAwMCAwQSAw
QyAwMCAwQSAwOCA2NiA3QiA2NyAgTTAxM3JgYS4uLi4uLmZ7ZwogICAgMThCMDogOTMgNEQgMzAg
MzAgMzkgN0IgNjUgMEMgRkYgRkYgMDAgRkYgMDAgNjYgNjcgQTAgIC5NMDA5e2UuLi4uLi5mZy4K
ICAgIDE4QzA6IDQzIDA2IDkzIDYzIDBBIDAzIDcwIDREIDMwIDMxIDMzIDcyIDYwIDYxIDAwIDBB
ICBDLi5jLi5wTTAxM3JgYS4uCiAgICAxOEQwOiAwMiAwMCAwQSAyMCA2NSA3MCA0RCAzMCAzMSAz
MyA3MiA2MCA2MSAwMCAwQSAwNCAgLi4uIGVwTTAxM3JgYS4uLgogICAgMThFMDogMDAgMEEgMDgg
NjYgNzAgOTMgNEQgMzAgMzAgMzkgN0IgNjUgMEMgRkYgRkYgMDAgIC4uLmZwLk0wMDl7ZS4uLi4K
ICAgIDE4RjA6IEZGIDAwIDY2IDY3IDcwIDREIDMwIDMxIDMzIDcyIDYwIDYxIDAwIDBBIDA2IDAw
ICAuLmZncE0wMTNyYGEuLi4uCiAgICAxOTAwOiAwQSAyMCA2NSA3MCA0RCAzMCAzMSAzMyA3MiA2
MCA2MSAwMCAwQSAwOCAwMCAwQSAgLiBlcE0wMTNyYGEuLi4uLgogICAgMTkxMDogMDggNjYgN0Qg
NjcgOTMgNEQgMzAgMzAgMzkgN0IgNjUgMEMgRkYgRkYgMDAgRkYgIC5mfWcuTTAwOXtlLi4uLi4K
ICAgIDE5MjA6IDAwIDY2IDY3IEEwIDQyIDA5IDkzIDYzIDBBIDA0IDcwIDREIDMwIDMxIDMzIDcy
ICAuZmcuQi4uYy4ucE0wMTNyCiAgICAxOTMwOiA2MCA2MSAwMCAwQSAwMiAwMCAwQSAyMCA2NSA3
MCA0RCAzMCAzMSAzMyA3MiA2MCAgYGEuLi4uLiBlcE0wMTNyYAogICAgMTk0MDogNjEgMDAgMEEg
MDQgMDAgMEEgMDggNjYgNzAgOTMgNEQgMzAgMzAgMzkgN0IgNjUgIGEuLi4uLi5mcC5NMDA5e2UK
ICAgIDE5NTA6IDBDIEZGIEZGIDAwIEZGIDAwIDY2IDY3IDcwIDREIDMwIDMxIDMzIDcyIDYwIDYx
ICAuLi4uLi5mZ3BNMDEzcmBhCiAgICAxOTYwOiAwMCAwQSAwNiAwMCAwQSAyMCA2NSA3MCA0RCAz
MCAzMSAzMyA3MiA2MCA2MSAwMCAgLi4uLi4gZXBNMDEzcmBhLgogICAgMTk3MDogMEEgMDggMDAg
MEEgMDggNjYgN0QgNjcgOTMgNEQgMzAgMzAgMzkgN0IgNjUgMEMgIC4uLi4uZn1nLk0wMDl7ZS4K
ICAgIDE5ODA6IEZGIEZGIDAwIEZGIDAwIDY2IDY3IDcwIDREIDMwIDMxIDMzIDcyIDYwIDYxIDAw
ICAuLi4uLmZncE0wMTNyYGEuCiAgICAxOTkwOiAwQSAwQSAwMCAwQSAyMCA2NSA3MCA0RCAzMCAz
MSAzMyA3MiA2MCA2MSAwMCAwQSAgLi4uLiBlcE0wMTNyYGEuLgogICAgMTlBMDogMEMgMDAgMEEg
MDggNjYgN0QgNjcgOTMgNEQgMzAgMzAgMzkgN0IgNjUgMEMgRkYgIC4uLi5mfWcuTTAwOXtlLi4K
ICAgIDE5QjA6IEZGIDAwIEZGIDAwIDY2IDY3IEExIDA2IDcyIDYxIDBBIDBFIDYxIEExIDA0IDcw
ICAuLi4uZmcuLnJhLi5hLi5wCiAgICAxOUMwOiAwMCA2NyBBMCAwNSA2NyA3MCAwMSA2NyBBNCA2
NyAwOCA0RCAzMCAzNCAzNiAwQSAgLmcuLmdwLmcuZy5NMDQ2LgogICAgMTlEMDogQUEgMDggNEQg
MzAgMzQgMzcgMEEgQUEgMTQgNEEgNEIgNEQgMzAgMzQgMzUgMDggIC4uTTA0Ny4uLkpLTTA0NS4K
ICAgIDE5RTA6IDcwIDAwIDYwIEEwIDQxIDRBIDkxIDkzIDREIDMwIDM0IDM2IDBBIEFBIDkzIDRE
ICBwLmAuQUouLk0wNDYuLi5NCiAgICAxOUYwOiAzMCAzNCAzNyAwQSBBQSA3MCAwMCA0RCAzMCAz
NCAzNiBBMCA0OSA0OCA1QiAxMiAgMDQ3Li5wLk0wNDYuSUhbLgogICAgMUEwMDogNUMgNUYgNEYg
NTMgNDkgMDAgQTAgNDUgMDUgNUMgNUYgNEYgNTMgNDkgMEQgNDQgIFxfT1NJLi5FLlxfT1NJLkQK
ICAgIDFBMTA6IDY5IDczIDcwIDZDIDYxIDc5IDREIDc1IDc4IDAwIDcwIDAxIDREIDMwIDM0IDM3
ICBpc3BsYXlNdXgucC5NMDQ3CiAgICAxQTIwOiA0RCAzNCAzNiAzMCAwRCAyMCAyMCA0QiA0NSA1
MiAyRCA0MSA1MyA0QyAyRCA1RiAgTTQ2MC4gIEtFUi1BU0wtXwogICAgMUEzMDogNEYgNTMgNDkg
MjAgM0QgMjAgNTQgNjggNjkgNzMgMjAgNEYgNTMgMjAgNjMgNjEgIE9TSSA9IFRoaXMgT1MgY2EK
ICAgIDFBNDA6IDZFIDIwIDczIDc1IDcwIDcwIDZGIDcyIDc0IDIwIDQ0IDY5IDczIDcwIDZDIDYx
ICBuIHN1cHBvcnQgRGlzcGxhCiAgICAxQTUwOiA3OSA0RCA3NSA3OCAwQSAwMCAwMCAwMCAwMCAw
MCAwMCAwMCBBMSA0NyAwNCA3MCAgeU11eC4uLi4uLi4uLkcucAogICAgMUE2MDogMDAgNEQgMzAg
MzQgMzcgNEQgMzQgMzYgMzAgMEQgMjAgMjAgNEIgNDUgNTIgMkQgIC5NMDQ3TTQ2MC4gIEtFUi0K
ICAgIDFBNzA6IDQxIDUzIDRDIDJEIDVGIDRGIDUzIDQ5IDIwIDNEIDIwIDU0IDY4IDY5IDczIDIw
ICBBU0wtX09TSSA9IFRoaXMgCiAgICAxQTgwOiA0RiA1MyAyMCA2MyA2MSA2RSA2RSA2RiA3NCAy
MCA3MyA3NSA3MCA3MCA2RiA3MiAgT1MgY2Fubm90IHN1cHBvcgogICAgMUE5MDogNzQgMjAgNDQg
NjkgNzMgNzAgNkMgNjEgNzkgNEQgNzUgNzggMEEgMDAgMDAgMDAgIHQgRGlzcGxheU11eC4uLi4K
ICAgIDFBQTA6IDAwIDAwIDAwIDAwIEEwIDQyIDA1IDVDIDVGIDRGIDUzIDQ5IDBEIDU3IDY5IDZF
ICAuLi4uLkIuXF9PU0kuV2luCiAgICAxQUIwOiA2NCA2RiA3NyA3MyAyMCAzMiAzMCAzMiAzMiAw
MCA3MCAwQSAwQyA0RCAzMCAzNCAgZG93cyAyMDIyLnAuLk0wNAogICAgMUFDMDogMzYgNEQgMzQg
MzYgMzAgMEQgMjAgMjAgNEIgNDUgNTIgMkQgNDEgNTMgNEMgMkQgIDZNNDYwLiAgS0VSLUFTTC0K
ICAgIDFBRDA6IDVGIDRGIDUzIDQ5IDIwIDNEIDIwIDU3IDY5IDZFIDY0IDZGIDc3IDczIDIwIDMx
ICBfT1NJID0gV2luZG93cyAxCiAgICAxQUUwOiAzMSAyQyAyMCA3NiA2NSA3MiA3MyA2OSA2RiA2
RSAyMCAzMiAzMiA0OCAzMiAwQSAgMSwgdmVyc2lvbiAyMkgyLgogICAgMUFGMDogMDAgMDAgMDAg
MDAgMDAgMDAgMDAgQTEgNEQgMzggQTAgNDQgMDQgNUMgNUYgNEYgIC4uLi4uLi4uTTguRC5cX08K
ICAgIDFCMDA6IDUzIDQ5IDBEIDU3IDY5IDZFIDY0IDZGIDc3IDczIDIwIDMyIDMwIDMyIDMxIDAw
ICBTSS5XaW5kb3dzIDIwMjEuCiAgICAxQjEwOiA3MCAwQSAwQiA0RCAzMCAzNCAzNiA0RCAzNCAz
NiAzMCAwRCAyMCAyMCA0QiA0NSAgcC4uTTA0Nk00NjAuICBLRQogICAgMUIyMDogNTIgMkQgNDEg
NTMgNEMgMkQgNUYgNEYgNTMgNDkgMjAgM0QgMjAgNTcgNjkgNkUgIFItQVNMLV9PU0kgPSBXaW4K
ICAgIDFCMzA6IDY0IDZGIDc3IDczIDIwIDMxIDMxIDBBIDAwIDAwIDAwIDAwIDAwIDAwIDAwIEEx
ICBkb3dzIDExLi4uLi4uLi4uCiAgICAxQjQwOiA0NSAzNCBBMCA0MiAwNSA1QyA1RiA0RiA1MyA0
OSAwRCA1NyA2OSA2RSA2NCA2RiAgRTQuQi5cX09TSS5XaW5kbwogICAgMUI1MDogNzcgNzMgMjAg
MzIgMzAgMzIgMzAgMDAgNzAgMEEgMEEgNEQgMzAgMzQgMzYgNEQgIHdzIDIwMjAucC4uTTA0Nk0K
ICAgIDFCNjA6IDM0IDM2IDMwIDBEIDIwIDIwIDRCIDQ1IDUyIDJEIDQxIDUzIDRDIDJEIDVGIDRG
ICA0NjAuICBLRVItQVNMLV9PCiAgICAxQjcwOiA1MyA0OSAyMCAzRCAyMCA1NyA2OSA2RSA2NCA2
RiA3NyA3MyAyMCAzMSAzMCAyQyAgU0kgPSBXaW5kb3dzIDEwLAogICAgMUI4MDogMjAgNzYgNjUg
NzIgNzMgNjkgNkYgNkUgMjAgMzIgMzAgMzAgMzQgMEEgMDAgMDAgICB2ZXJzaW9uIDIwMDQuLi4K
ICAgIDFCOTA6IDAwIDAwIDAwIDAwIDAwIEExIDRGIDJFIEEwIDQyIDA1IDVDIDVGIDRGIDUzIDQ5
ICAuLi4uLi5PLi5CLlxfT1NJCiAgICAxQkEwOiAwRCA1NyA2OSA2RSA2NCA2RiA3NyA3MyAyMCAz
MiAzMCAzMSAzOSAwMCA3MCAwQSAgLldpbmRvd3MgMjAxOS5wLgogICAgMUJCMDogMDkgNEQgMzAg
MzQgMzYgNEQgMzQgMzYgMzAgMEQgMjAgMjAgNEIgNDUgNTIgMkQgIC5NMDQ2TTQ2MC4gIEtFUi0K
ICAgIDFCQzA6IDQxIDUzIDRDIDJEIDVGIDRGIDUzIDQ5IDIwIDNEIDIwIDU3IDY5IDZFIDY0IDZG
ICBBU0wtX09TSSA9IFdpbmRvCiAgICAxQkQwOiA3NyA3MyAyMCAzMSAzMCAyQyAyMCA3NiA2NSA3
MiA3MyA2OSA2RiA2RSAyMCAzMSAgd3MgMTAsIHZlcnNpb24gMQogICAgMUJFMDogMzkgMzAgMzMg
MEEgMDAgMDAgMDAgMDAgMDAgMDAgMDAgQTEgNDkgMjkgQTAgNDQgIDkwMy4uLi4uLi4uLkkpLkQK
ICAgIDFCRjA6IDA1IDVDIDVGIDRGIDUzIDQ5IDBEIDU3IDY5IDZFIDY0IDZGIDc3IDczIDIwIDMy
ICAuXF9PU0kuV2luZG93cyAyCiAgICAxQzAwOiAzMCAzMSAzOCAyRSAzMiAwMCA3MCAwQSAwOCA0
RCAzMCAzNCAzNiA0RCAzNCAzNiAgMDE4LjIucC4uTTA0Nk00NgogICAgMUMxMDogMzAgMEQgMjAg
MjAgNEIgNDUgNTIgMkQgNDEgNTMgNEMgMkQgNUYgNEYgNTMgNDkgIDAuICBLRVItQVNMLV9PU0kK
ICAgIDFDMjA6IDIwIDNEIDIwIDU3IDY5IDZFIDY0IDZGIDc3IDczIDIwIDMxIDMwIDJDIDIwIDc2
ICAgPSBXaW5kb3dzIDEwLCB2CiAgICAxQzMwOiA2NSA3MiA3MyA2OSA2RiA2RSAyMCAzMSAzOCAz
MCAzOSAwQSAwMCAwMCAwMCAwMCAgZXJzaW9uIDE4MDkuLi4uLgogICAgMUM0MDogMDAgMDAgMDAg
QTEgNDEgMjQgQTAgNDIgMDUgNUMgNUYgNEYgNTMgNDkgMEQgNTcgIC4uLi5BJC5CLlxfT1NJLlcK
ICAgIDFDNTA6IDY5IDZFIDY0IDZGIDc3IDczIDIwIDMyIDMwIDMxIDM4IDAwIDcwIDBBIDA3IDRE
ICBpbmRvd3MgMjAxOC5wLi5NCiAgICAxQzYwOiAzMCAzNCAzNiA0RCAzNCAzNiAzMCAwRCAyMCAy
MCA0QiA0NSA1MiAyRCA0MSA1MyAgMDQ2TTQ2MC4gIEtFUi1BUwogICAgMUM3MDogNEMgMkQgNUYg
NEYgNTMgNDkgMjAgM0QgMjAgNTcgNjkgNkUgNjQgNkYgNzcgNzMgIEwtX09TSSA9IFdpbmRvd3MK
ICAgIDFDODA6IDIwIDMxIDMwIDJDIDIwIDc2IDY1IDcyIDczIDY5IDZGIDZFIDIwIDMxIDM4IDMw
ICAgMTAsIHZlcnNpb24gMTgwCiAgICAxQzkwOiAzMyAwQSAwMCAwMCAwMCAwMCAwMCAwMCAwMCBB
MSA0QiAxRSBBMCA0NCAwNSA1QyAgMy4uLi4uLi4uLksuLkQuXAogICAgMUNBMDogNUYgNEYgNTMg
NDkgMEQgNTcgNjkgNkUgNjQgNkYgNzcgNzMgMjAgMzIgMzAgMzEgIF9PU0kuV2luZG93cyAyMDEK
ICAgIDFDQjA6IDM3IDJFIDMyIDAwIDcwIDBBIDA2IDREIDMwIDM0IDM2IDREIDM0IDM2IDMwIDBE
ICA3LjIucC4uTTA0Nk00NjAuCiAgICAxQ0MwOiAyMCAyMCA0QiA0NSA1MiAyRCA0MSA1MyA0QyAy
RCA1RiA0RiA1MyA0OSAyMCAzRCAgICBLRVItQVNMLV9PU0kgPQogICAgMUNEMDogMjAgNTcgNjkg
NkUgNjQgNkYgNzcgNzMgMjAgMzEgMzAgMkMgMjAgNzYgNjUgNzIgICBXaW5kb3dzIDEwLCB2ZXIK
ICAgIDFDRTA6IDczIDY5IDZGIDZFIDIwIDMxIDM3IDMwIDM5IDBBIDAwIDAwIDAwIDAwIDAwIDAw
ICBzaW9uIDE3MDkuLi4uLi4uCiAgICAxQ0YwOiAwMCBBMSA0MyAxOSBBMCA0MiAwNSA1QyA1RiA0
RiA1MyA0OSAwRCA1NyA2OSA2RSAgLi5DLi5CLlxfT1NJLldpbgogICAgMUQwMDogNjQgNkYgNzcg
NzMgMjAgMzIgMzAgMzEgMzcgMDAgNzAgMEEgMDUgNEQgMzAgMzQgIGRvd3MgMjAxNy5wLi5NMDQK
ICAgIDFEMTA6IDM2IDREIDM0IDM2IDMwIDBEIDIwIDIwIDRCIDQ1IDUyIDJEIDQxIDUzIDRDIDJE
ICA2TTQ2MC4gIEtFUi1BU0wtCiAgICAxRDIwOiA1RiA0RiA1MyA0OSAyMCAzRCAyMCA1NyA2OSA2
RSA2NCA2RiA3NyA3MyAyMCAzMSAgX09TSSA9IFdpbmRvd3MgMQogICAgMUQzMDogMzAgMkMgMjAg
NzYgNjUgNzIgNzMgNjkgNkYgNkUgMjAgMzEgMzcgMzAgMzMgMEEgIDAsIHZlcnNpb24gMTcwMy4K
ICAgIDFENDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIEExIDREIDEzIEEwIDQyIDA1IDVDIDVGIDRG
ICAuLi4uLi4uLk0uLkIuXF9PCiAgICAxRDUwOiA1MyA0OSAwRCA1NyA2OSA2RSA2NCA2RiA3NyA3
MyAyMCAzMiAzMCAzMSAzNiAwMCAgU0kuV2luZG93cyAyMDE2LgogICAgMUQ2MDogNzAgMEEgMDQg
NEQgMzAgMzQgMzYgNEQgMzQgMzYgMzAgMEQgMjAgMjAgNEIgNDUgIHAuLk0wNDZNNDYwLiAgS0UK
ICAgIDFENzA6IDUyIDJEIDQxIDUzIDRDIDJEIDVGIDRGIDUzIDQ5IDIwIDNEIDIwIDU3IDY5IDZF
ICBSLUFTTC1fT1NJID0gV2luCiAgICAxRDgwOiA2NCA2RiA3NyA3MyAyMCAzMSAzMCAyQyAyMCA3
NiA2NSA3MiA3MyA2OSA2RiA2RSAgZG93cyAxMCwgdmVyc2lvbgogICAgMUQ5MDogMjAgMzEgMzYg
MzAgMzcgMEEgMDAgMDAgMDAgMDAgMDAgMDAgMDAgQTEgNDcgMEUgICAxNjA3Li4uLi4uLi4uRy4K
ICAgIDFEQTA6IEEwIDQ0IDA0IDVDIDVGIDRGIDUzIDQ5IDBEIDU3IDY5IDZFIDY0IDZGIDc3IDcz
ICAuRC5cX09TSS5XaW5kb3dzCiAgICAxREIwOiAyMCAzMiAzMCAzMSAzNSAwMCA3MCAwQSAwMyA0
RCAzMCAzNCAzNiA0RCAzNCAzNiAgIDIwMTUucC4uTTA0Nk00NgogICAgMURDMDogMzAgMEQgMjAg
MjAgNEIgNDUgNTIgMkQgNDEgNTMgNEMgMkQgNUYgNEYgNTMgNDkgIDAuICBLRVItQVNMLV9PU0kK
ICAgIDFERDA6IDIwIDNEIDIwIDU3IDY5IDZFIDY0IDZGIDc3IDczIDIwIDMxIDMwIDBBIDAwIDAw
ICAgPSBXaW5kb3dzIDEwLi4uCiAgICAxREUwOiAwMCAwMCAwMCAwMCAwMCBBMSA0RiAwOSBBMCA0
NSAwNCA1QyA1RiA0RiA1MyA0OSAgLi4uLi4uTy4uRS5cX09TSQogICAgMURGMDogMEQgNTcgNjkg
NkUgNjQgNkYgNzcgNzMgMjAgMzIgMzAgMzEgMzMgMDAgNzAgMEEgIC5XaW5kb3dzIDIwMTMucC4K
ICAgIDFFMDA6IDAyIDREIDMwIDM0IDM2IDREIDM0IDM2IDMwIDBEIDIwIDIwIDRCIDQ1IDUyIDJE
ICAuTTA0Nk00NjAuICBLRVItCiAgICAxRTEwOiA0MSA1MyA0QyAyRCA1RiA0RiA1MyA0OSAyMCAz
RCAyMCA1NyA2OSA2RSA2NCA2RiAgQVNMLV9PU0kgPSBXaW5kbwogICAgMUUyMDogNzcgNzMgMjAg
MzggMkUgMzEgMEEgMDAgMDAgMDAgMDAgMDAgMDAgMDAgQTEgNDYgIHdzIDguMS4uLi4uLi4uLkYK
ICAgIDFFMzA6IDA1IEEwIDQzIDA1IDVDIDVGIDRGIDUzIDQ5IDBEIDU3IDY5IDZFIDY0IDZGIDc3
ICAuLkMuXF9PU0kuV2luZG93CiAgICAxRTQwOiA3MyAyMCAzMiAzMCAzMSAzMiAwMCA3MCAwMSA0
RCAzMCAzNCAzNiA0RCAzNCAzNiAgcyAyMDEyLnAuTTA0Nk00NgogICAgMUU1MDogMzAgMEQgMjAg
MjAgNEIgNDUgNTIgMkQgNDEgNTMgNEMgMkQgNUYgNEYgNTMgNDkgIDAuICBLRVItQVNMLV9PU0kK
ICAgIDFFNjA6IDIwIDNEIDIwIDU3IDY5IDZFIDY0IDZGIDc3IDczIDIwIDM4IDJDIDIwIDU3IDY5
ICAgPSBXaW5kb3dzIDgsIFdpCiAgICAxRTcwOiA2RSAyMCA1MyA2NSA3MiA3NiA2NSA3MiAyMCAz
MiAzMCAzMSAzMiAwQSAwMCAwMCAgbiBTZXJ2ZXIgMjAxMi4uLgogICAgMUU4MDogMDAgMDAgMDAg
MDAgMDAgQTAgMEIgOTIgOTUgNEQgMzAgMzQgMzYgMDEgNzAgMDEgIC4uLi4uLi4uLk0wNDYucC4K
ICAgIDFFOTA6IDYwIEE0IDYwIDVCIDgwIDU2IDQxIDUyIDU3IDAwIDBDIDBDIDAyIEQ4IEZFIDBB
ICBgLmBbLlZBUlcuLi4uLi4uCiAgICAxRUEwOiAxNCA1QiA4MSAxOCA1NiA0MSA1MiA1NyAwMyA1
NiA0MSAzMCA0MyAyMCAwMCA0MCAgLlsuLlZBUlcuVkEwQyAuQAogICAgMUVCMDogMDQgNTYgNDEg
MzEgMzggMjAgNTYgNDEgMzEgNDMgMjAgMTQgNDIgMDggNEQgMzIgIC5WQTE4IFZBMUMgLkIuTTIK
ICAgIDFFQzA6IDMyIDQxIDA5IDREIDM0IDM2IDMwIDBEIDIwIDIwIDRCIDQ1IDUyIDJEIDQxIDUz
ICAyQS5NNDYwLiAgS0VSLUFTCiAgICAxRUQwOiA0QyAyRCA0MyA3MCA2RCA1NCA3MiA2OSA2NyA2
NyA2NSA3MiA1MyA2MyA2OSAyMCAgTC1DcG1UcmlnZ2VyU2NpIAogICAgMUVFMDogMjggMjUgNjQg
MjkgMEEgMDAgNjggMDAgMDAgMDAgMDAgMDAgNzkgMDEgNjggNjAgICglZCkuLmguLi4uLnkuaGAK
ICAgIDFFRjA6IDcwIDBDIEZGIEZGIEZGIDdGIDYxIDdEIDYxIDBDIDAwIDAwIDAwIDgwIDYxIDdG
ICBwLi4uLi5hfWEuLi4uLmEuCiAgICAxRjAwOiA2MSA2MCA2MSA3QiA1NiA0MSAzMCA0MyA2MSA1
NiA0MSAzMCA0MyA3RCA3QiA1NiAgYWBhe1ZBMENhVkEwQ317VgogICAgMUYxMDogNDEgMzEgMzgg
NjEgMDAgNjAgNTYgNDEgMzEgMzggN0QgN0IgNTYgNDEgMzEgNDMgIEExOGEuYFZBMTh9e1ZBMUMK
ICAgIDFGMjA6IDYxIDAwIDYwIDU2IDQxIDMxIDQzIDVCIDIyIDAxIDdCIDU2IDQxIDMxIDQzIDYx
ICBhLmBWQTFDWyIue1ZBMUNhCiAgICAxRjMwOiA1NiA0MSAzMSA0MyA3QiA1NiA0MSAzMSAzOCA2
MSA1NiA0MSAzMSAzOCA1QiAwMSAgVkExQ3tWQTE4YVZBMThbLgogICAgMUY0MDogNEQgMzIgMzMg
MzAgMDAgMTQgNDkgMDggNEQgMzIgMzMgMzIgMEIgNzAgNjggNjAgIE0yMzAuLkkuTTIzMi5waGAK
ICAgIDFGNTA6IDcwIDY5IDYxIDcwIDZBIDYyIDREIDM0IDM2IDMwIDBEIDIwIDIwIDRCIDQ1IDUy
ICBwaWFwamJNNDYwLiAgS0VSCiAgICAxRjYwOiAyRCA0MSA1MyA0QyAyRCA0MyA3MCA2RCA1NCA3
MiA2OSA2NyA2NyA2NSA3MiA1MyAgLUFTTC1DcG1UcmlnZ2VyUwogICAgMUY3MDogNkQgNjkgMjAg
MjggMzAgNzggMjUgNTggMkMgMjAgMzAgNzggMjUgNTggMkMgMjAgIG1pICgweCVYLCAweCVYLCAK
ICAgIDFGODA6IDI1IDY0IDI5IDBBIDAwIDY4IDY5IDZBIDAwIDAwIDAwIDVCIDIzIDREIDMyIDMz
ICAlZCkuLmhpai4uLlsjTTIzCiAgICAxRjkwOiAzMCBGRiBGRiA3MCA2OCA2MCA1QiA4MCA1NiA0
MSA1MiA0RCAwMSA0RCAzMiAzMyAgMC4ucGhgWy5WQVJNLk0yMwogICAgMUZBMDogMzEgMEEgMDIg
NUIgODEgMTAgNTYgNDEgNTIgNEQgMDEgNTYgNDEgNTIgMzEgMDggIDEuLlsuLlZBUk0uVkFSMS4K
ICAgIDFGQjA6IDU2IDQxIDUyIDMyIDA4IDcwIDYxIDU2IDQxIDUyIDMyIDcwIDYwIDU2IDQxIDUy
ICBWQVIyLnBhVkFSMnBgVkFSCiAgICAxRkMwOiAzMSBBMCAwNyA5NCA2MiAwMCA1QiAyMiA2MiA1
QiAyNyA0RCAzMiAzMyAzMCAxNCAgMS4uLmIuWyJiWydNMjMwLgogICAgMUZEMDogMUIgNEQgMzAg
MzQgMzMgMEIgQTAgMTAgNUIgMTIgNEQgNEYgNDUgNEQgMDAgQTQgIC5NMDQzLi4uWy5NT0VNLi4K
ICAgIDFGRTA6IDREIDRGIDQ1IDREIDY4IDY5IDZBIEExIDAzIEE0IDAwIDE0IDQxIDA4IDREIDRD
ICBNT0VNaGlqLi4uLi5BLk1MCiAgICAxRkYwOiA0OSA0MiAwQSAwOCA1RiA1NCA1RiAzMSAwMCAw
OCA1RiA1NCA1RiAzMCAwMCBBMiAgSUIuLl9UXzEuLl9UXzAuLgogICAgMjAwMDogNEQgMDYgMDEg
NzAgOTkgNjggMDAgNUYgNTQgNUYgMzAgQTAgNDAgMDYgOTMgNUYgIE0uLnAuaC5fVF8wLkAuLl8K
ICAgIDIwMTA6IDU0IDVGIDMwIDAwIDcwIDgzIDg4IDY5IDBBIDAyIDAwIDYwIEEyIDRGIDA0IDAx
ICBUXzAucC4uaS4uLmAuTy4uCiAgICAyMDIwOiA3MCA5OSA2MCAwMCA1RiA1NCA1RiAzMSBBMCAx
NCA5MyA1RiA1NCA1RiAzMSAwQSAgcC5gLl9UXzEuLi5fVF8xLgogICAgMjAzMDogMDMgNEQgMzIg
MzIgMzggMEEgMDQgNEQgMzIgMzIgMzggMEEgMDUgQTEgMkQgQTAgIC5NMjI4Li5NMjI4Li4uLS4K
ICAgIDIwNDA6IDE0IDkzIDVGIDU0IDVGIDMxIDBBIDA0IDREIDMyIDMyIDM4IDBBIDA0IDREIDMy
ICAuLl9UXzEuLk0yMjguLk0yCiAgICAyMDUwOiAzMiAzOCAwQSAwNiBBMSAxNiBBMCAxNCA5MyA1
RiA1NCA1RiAzMSAwQSAwNSA0RCAgMjguLi4uLi4uX1RfMS4uTQogICAgMjA2MDogMzIgMzIgMzgg
MEEgMDQgNEQgMzIgMzIgMzggMEEgMDcgQTUgQTUgMTQgNDkgMTAgIDIyOC4uTTIyOC4uLi4uSS4K
ICAgIDIwNzA6IDREIDM0IDM1IDM4IDAxIDk5IDREIDM0IDM1IDMzIDYwIEEwIDRFIDA3IDk0IDYw
ICBNNDU4Li5NNDUzYC5OLi5gCiAgICAyMDgwOiAwQiBGRiBGRiA1QiA4MCA1NiA0MSA1MiA0RCAw
MCA2MCAwQSAyMCA1QiA4MSAxQSAgLi4uWy5WQVJNLmAuIFsuLgogICAgMjA5MDogNTYgNDEgNTIg
NEQgMDEgNTQgNDggNTIgNEQgMDggMDAgNDggMDkgNEMgNTMgNTIgIFZBUk0uVEhSTS4uSC5MU1IK
ICAgIDIwQTA6IDREIDA4IDAwIDE4IDREIDUzIDUyIDREIDA4IDcwIDBDIDgwIDg0IDFFIDAwIDYx
ICBNLi4uTVNSTS5wLi4uLi5hCiAgICAyMEIwOiBBMiAxNSA5MCA5NCA2MSAwMCA5MiA5MyA3QiA0
QyA1MyA1MiA0RCAwQSA2MCAwMCAgLi4uLmEuLi57TFNSTS5gLgogICAgMjBDMDogMEEgNjAgNzQg
NjEgMDEgNjEgQTAgMjUgOTIgOTMgNEQgMzQgMzUgMzcgMDAgNzAgIC5gdGEuYS4lLi5NNDU3LnAK
ICAgIDIwRDA6IDBDIDgwIDg0IDFFIDAwIDYyIEEyIDE1IDkwIDk0IDYyIDAwIDkyIDkzIDdCIDRE
ICAuLi4uLmIuLi4uYi4uLntNCiAgICAyMEUwOiA1MyA1MiA0RCAwQSAxMCAwMCAwQSAxMCA3NCA2
MiAwMSA2MiBBMCAwRCA5MiA5MyAgU1JNLi4uLi50Yi5iLi4uLgogICAgMjBGMDogNjEgMDAgNzAg
NjggNTQgNDggNTIgNEQgQTQgMDAgQTEgNDkgMDcgQTAgNDYgMDcgIGEucGhUSFJNLi4uSS4uRi4K
ICAgIDIxMDA6IDk0IDYwIDAwIDhCIDREIDMyIDM4IDM1IDBBIDAyIDREIDMyIDM4IDM4IDVCIDgw
ICAuYC4uTTI4NS4uTTI4OFsuCiAgICAyMTEwOiA1NiA0MSA1MiA0RSAwMSA2MCAwQSAwOCA1QiA4
MSAxMiA1NiA0MSA1MiA0RSAwMSAgVkFSTi5gLi5bLi5WQVJOLgogICAgMjEyMDogNTQgNDggNTIg
NDkgMDggMDAgMjAgNEMgNTMgNTIgNDkgMDggNzAgMEMgODAgODQgIFRIUkkuLiBMU1JJLnAuLi4K
ICAgIDIxMzA6IDFFIDAwIDYxIEEwIDMyIDkyIDkzIDk5IDREIDMyIDM4IDM4IDAwIDYwIEEyIDI3
ICAuLmEuMi4uLk0yODguYC4nCiAgICAyMTQwOiA5MCA5NCA2MSAwMCA5MiA5MyA3QiA0QyA1MyA1
MiA0OSAwQSBFMCAwMCAwQSA2MCAgLi5hLi4ue0xTUkkuLi4uYAogICAgMjE1MDogQTAgMTEgOTMg
NEMgNTMgNTIgNDkgMEEgRkYgNzAgMDAgNEQgMzQgMzUgMzMgNzAgIC4uLkxTUkkuLnAuTTQ1M3AK
ICAgIDIxNjA6IDAxIDYxIDc0IDYxIDAxIDYxIEEwIDBEIDkyIDkzIDYxIDAwIDcwIDY4IDU0IDQ4
ICAuYXRhLmEuLi4uYS5waFRICiAgICAyMTcwOiA1MiA0OSBBNCAwMCBBNCAwQSBGRiAxNCA0NCAw
RCA0RCAzNCAzNSAzOSAwMiA5OSAgUkkuLi4uLi5ELk00NTkuLgogICAgMjE4MDogNEQgMzQgMzUg
MzMgNjAgQTAgMDcgOTMgNjAgMDAgQTQgMEEgRkYgQTEgNDEgMDkgIE00NTNgLi4uYC4uLi4uQS4K
ICAgIDIxOTA6IEEwIDRFIDA4IDk0IDYwIDBCIEZGIEZGIDVCIDgwIDU2IDQxIDUyIDREIDAwIDYw
ICAuTi4uYC4uLlsuVkFSTS5gCiAgICAyMUEwOiAwQSAyMCA1QiA4MSAyNyA1NiA0MSA1MiA0RCAw
MSA0NCA0QyA0QyA0RCAwOCAwMCAgLiBbLidWQVJNLkRMTE0uLgogICAgMjFCMDogMTggNDQgNEMg
NDggNEQgMDggMDAgMTggNDYgNDMgNTIgNEQgMDggMDAgMTggNEMgIC5ETEhNLi4uRkNSTS4uLkwK
ICAgIDIxQzA6IDQzIDUyIDREIDA4IDAwIDE4IDREIDQzIDUyIDREIDA4IEEwIDQzIDA1IDkyIDkz
ICBDUk0uLi5NQ1JNLi5DLi4uCiAgICAyMUQwOiA3QiA0QyA0MyA1MiA0RCAwQSAzRiAwMCA0RCAz
NCAzNSAzNSA3MCAwQSA4MCA0QyAge0xDUk0uPy5NNDU1cC4uTAogICAgMjFFMDogNDMgNTIgNEQg
N0EgNEQgMzQgMzUgMzQgMEEgMDggNDQgNEMgNDggNEQgNzAgN0IgIENSTXpNNDU0Li5ETEhNcHsK
ICAgIDIxRjA6IDREIDM0IDM1IDM0IDBBIEZGIDAwIDQ0IDRDIDRDIDREIDcwIDREIDM0IDM1IDM1
ICBNNDU0Li4uRExMTXBNNDU1CiAgICAyMjAwOiA0QyA0MyA1MiA0RCA3MCAwMCA0NiA0MyA1MiA0
RCA3MCA0RCAzNCAzNSAzNiA0NiAgTENSTXAuRkNSTXBNNDU2RgogICAgMjIxMDogNDMgNTIgNEQg
NzAgMDAgNDQgNEMgNDggNEQgNzAgMDAgNEQgNDMgNTIgNEQgNzAgIENSTXAuRExITXAuTUNSTXAK
ICAgIDIyMjA6IDg3IDY4IDYwIDk5IDY5IDYxIDcwIDAwIDYyIDk2IDY4IDYzIEEwIDFEIDkyIDkz
ICAuaGAuaWFwLmIuaGMuLi4uCiAgICAyMjMwOiA2MCAwMCBBMiAxNyA5MCA5NCA2MCA2MSA5MyA2
MiAwMCA3MCA0RCAzNCAzNSAzOCAgYC4uLi4uYGEuYi5wTTQ1OAogICAgMjI0MDogODMgODggNjMg
NjEgMDAgNjIgNzIgNjEgMDEgNjEgQTQgNjIgMTQgNDcgMjAgNEQgIC4uY2EuYnJhLmEuYi5HIE0K
ICAgIDIyNTA6IDM0IDM2IDMwIDBGIDhCIDREIDMyIDM4IDM1IDBBIDAyIDREIDMyIDM4IDM4IDk5
ICA0NjAuLk0yODUuLk0yODguCiAgICAyMjYwOiA0RCAzNCAzNSAzMyA2NyBBMCAwNyA5MyA2NyAw
MCBBNCAwQSBGRiBBMSA0RSAwQiAgTTQ1M2cuLi5nLi4uLi5OLgogICAgMjI3MDogQTAgNEUgMDgg
OTQgNjcgMEIgRkYgRkYgNUIgODAgNTYgNDEgNTIgNEQgMDAgNjcgIC5OLi5nLi4uWy5WQVJNLmcK
ICAgIDIyODA6IDBBIDIwIDVCIDgxIDI3IDU2IDQxIDUyIDREIDAxIDQ0IDRDIDRDIDREIDA4IDAw
ICAuIFsuJ1ZBUk0uRExMTS4uCiAgICAyMjkwOiAxOCA0NCA0QyA0OCA0RCAwOCAwMCAxOCA0NiA0
MyA1MiA0RCAwOCAwMCAxOCA0QyAgLkRMSE0uLi5GQ1JNLi4uTAogICAgMjJBMDogNDMgNTIgNEQg
MDggMDAgMTggNEQgNDMgNTIgNEQgMDggQTAgNDMgMDUgOTIgOTMgIENSTS4uLk1DUk0uLkMuLi4K
ICAgIDIyQjA6IDdCIDRDIDQzIDUyIDREIDBBIDNGIDAwIDREIDM0IDM1IDM1IDcwIDBBIDgwIDRD
ICB7TENSTS4/Lk00NTVwLi5MCiAgICAyMkMwOiA0MyA1MiA0RCA3QSA0RCAzNCAzNSAzNCAwQSAw
OCA0NCA0QyA0OCA0RCA3MCA3QiAgQ1JNek00NTQuLkRMSE1wewogICAgMjJEMDogNEQgMzQgMzUg
MzQgMEEgRkYgMDAgNDQgNEMgNEMgNEQgNzAgNEQgMzQgMzUgMzUgIE00NTQuLi5ETExNcE00NTUK
ICAgIDIyRTA6IDRDIDQzIDUyIDREIDcwIDAwIDQ2IDQzIDUyIDREIDcwIDREIDM0IDM1IDM2IDQ2
ICBMQ1JNcC5GQ1JNcE00NTZGCiAgICAyMkYwOiA0MyA1MiA0RCA3MCAwMCA0NCA0QyA0OCA0RCA3
MCAwMCA0RCA0MyA1MiA0RCBBMSAgQ1JNcC5ETEhNcC5NQ1JNLgogICAgMjMwMDogMkMgQTAgMkEg
OTMgOTkgNEQgMzIgMzggMzggMDAgNjcgNUIgODAgNTYgNDEgNTIgICwuKi4uTTI4OC5nWy5WQVIK
ICAgIDIzMTA6IDUzIDAxIDY3IDBBIDA0IDVCIDgxIDBCIDU2IDQxIDUyIDUzIDAzIDU2IDQxIDUy
ICBTLmcuLlsuLlZBUlMuVkFSCiAgICAyMzIwOiA1NCAyMCA3MCAwQyA1MiA1NCA1MyA1RiA1NiA0
MSA1MiA1NCA3MCA4NyA2OCA2MCAgVCBwLlJUU19WQVJUcC5oYAogICAgMjMzMDogNzAgMDAgNjEg
NzAgMDAgNjIgNzAgMDEgNjUgOTYgNjggNjMgQTAgNEEgMEUgOTIgIHAuYXAuYnAuZS5oYy5KLi4K
ICAgIDIzNDA6IDkzIDYwIDAwIEEyIDQzIDBFIDkwIDk0IDYwIDYxIDkzIDYyIDAwIDcwIDgzIDg4
ICAuYC4uQy4uLmBhLmIucC4uCiAgICAyMzUwOiA2MyA2MSAwMCA2NCBBMCA0RCAwQSA5MCA5MyA2
NCAwQSAyNSA5NCAwQSAwNyA2NSAgY2EuZC5NLi4uZC4lLi4uZQogICAgMjM2MDogQTAgMDcgOTMg
NjUgMDEgNzAgNjkgNjYgQTEgMzYgQTAgMDggOTMgNjUgMEEgMDIgIC4uLmUucGlmLjYuLi5lLi4K
ICAgIDIzNzA6IDcwIDZBIDY2IEExIDJCIEEwIDA4IDkzIDY1IDBBIDAzIDcwIDZCIDY2IEExIDIw
ICBwamYuKy4uLmUuLnBrZi4gCiAgICAyMzgwOiBBMCAwOCA5MyA2NSAwQSAwNCA3MCA2QyA2NiBB
MSAxNSBBMCAwOCA5MyA2NSAwQSAgLi4uZS4ucGxmLi4uLi5lLgogICAgMjM5MDogMDUgNzAgNkQg
NjYgQTEgMEEgQTAgMDggOTMgNjUgMEEgMDYgNzAgNkUgNjYgNzIgIC5wbWYuLi4uLmUuLnBuZnIK
ICAgIDIzQTA6IDY1IDAxIDY1IDcyIDYxIDAxIDYxIDcwIDgzIDg4IDYzIDYxIDAwIDY0IEEwIDE1
ICBlLmVyYS5hcC4uY2EuZC4uCiAgICAyM0IwOiA5MSA5MyA2NCAwQSA1OCA5MyA2NCAwQSA3OCA3
MCA0RCAzNCAzNSAzOSA5OCA2NiAgLi5kLlguZC54cE00NTkuZgogICAgMjNDMDogMDAgMEEgMDIg
NjIgQTEgM0QgQTAgMTQgOTEgOTMgNjQgMEEgNDQgOTMgNjQgMEEgIC4uLmIuPS4uLi5kLkQuZC4K
ICAgIDIzRDA6IDY0IDcwIDREIDM0IDM1IDM5IDk3IDY2IDAwIDAwIDYyIEExIDI2IEEwIDEyIDkx
ICBkcE00NTkuZi4uYi4mLi4uCiAgICAyM0UwOiA5MyA2NCAwQSA1MyA5MyA2NCAwQSA3MyA3MCA0
RCAzNCAzNSAzOSA2NiAwMCA2MiAgLmQuUy5kLnNwTTQ1OWYuYgogICAgMjNGMDogQTEgMTEgNzAg
NEQgMzQgMzUgMzggMEEgMjUgNjIgNzQgNjUgMDEgNjUgNzQgNjEgIC4ucE00NTguJWJ0ZS5ldGEK
ICAgIDI0MDA6IDAxIDYxIEExIDIwIEEwIDE1IDkzIDY0IDBBIDBBIDcwIDREIDM0IDM1IDM4IDBB
ICAuYS4gLi4uZC4ucE00NTguCiAgICAyNDEwOiAwRCA2MiA3MCA0RCAzNCAzNSAzOCAwQSAwQSA2
MiBBMSAwOCA3MCA0RCAzNCAzNSAgLmJwTTQ1OC4uYi4ucE00NQogICAgMjQyMDogMzggNjQgNjIg
NzIgNjEgMDEgNjEgQTAgMkEgOTMgOTkgNEQgMzIgMzggMzggMDAgIDhkYnJhLmEuKi4uTTI4OC4K
ICAgIDI0MzA6IDY3IDVCIDgwIDU2IDQxIDUyIDU1IDAxIDY3IDBBIDA0IDVCIDgxIDBCIDU2IDQx
ICBnWy5WQVJVLmcuLlsuLlZBCiAgICAyNDQwOiA1MiA1NSAwMyA1NiA0MSA1MiA1NiAyMCA3MCAw
QyA0NCA0RSA0NSA1RiA1NiA0MSAgUlUuVkFSViBwLkRORV9WQQogICAgMjQ1MDogNTIgNTYgQTQg
NjIgMDggNEQgMzQgMzAgMzQgMTEgMEEgMEEgMDcgMDAgMDIgMDYgIFJWLmIuTTQwNC4uLi4uLi4K
ICAgIDI0NjA6IDA4IDA0IDBBIDBDIDE0IDQ1IDEwIDREIDM0IDMwIDM1IDBEIEEwIDRCIDA5IDky
ICAuLi4uLkUuTTQwNS4uSy4uCiAgICAyNDcwOiA5NSA0RCAzMCAzOCAzNSAwQSAwNCBBMCA0MCAw
NSA5MyA0RCAzMCAzOCAzNSAwQSAgLk0wODUuLi5ALi5NMDg1LgogICAgMjQ4MDogMDggNzAgODMg
ODggNEQgMzQgMzAgMzQgNkMgMDAgNjEgQTAgMUYgOTEgOTQgNjggIC5wLi5NNDA0bC5hLi4uLmgK
ICAgIDI0OTA6IDAwIDk0IDY5IDAwIDcwIDREIDMyIDM0IDM5IDY4IDY5IDZBIDBDIDAwIDFFIEQw
ICAuLmkucE0yNDloaWouLi4uCiAgICAyNEEwOiAwMiA2MCA3QSA2MCA2MSA2MCA3QiA2MCAwQSAw
MyA2MCBBMSAxQyA3MCA0RCAzMCAgLmB6YGFge2AuLmAuLnBNMAogICAgMjRCMDogMzEgMzEgNzIg
NEQgMzAgMzggMzQgMEIgMDAgMEUgMDAgN0EgNjEgMEEgMDggMDAgIDExck0wODQuLi4uemEuLi4K
ICAgIDI0QzA6IDdCIDYxIDBBIDA3IDAwIDBBIDAyIDYwIEExIDNGIEEwIDIwIDkzIDZCIDBBIDAy
ICB7YS4uLi4uYC4/LiAuay4uCiAgICAyNEQwOiA3MCA0RCAzMCAzMSAzMSA3MiA0RCAzMCAzOCAz
NCAwQiAwMCAxMyAwMCA3QSA2MSAgcE0wMTFyTTA4NC4uLi56YQogICAgMjRFMDogMEEgMDggMDAg
N0IgNjEgMEEgMDcgMDAgMEEgMDIgNjAgQTEgMUMgNzAgNEQgMzAgIC4uLnthLi4uLi5gLi5wTTAK
ICAgIDI0RjA6IDMxIDMxIDcyIDREIDMwIDM4IDM0IDBCIDAwIDBFIDAwIDdBIDYxIDBBIDA4IDAw
ICAxMXJNMDg0Li4uLnphLi4uCiAgICAyNTAwOiA3QiA2MSAwQSAwNyAwMCAwQSAwMiA2MCBBMSAx
RSA3MCA0RCAzMCAzMSAzMSA3MiAge2EuLi4uLmAuLnBNMDExcgogICAgMjUxMDogNEQgMzAgMzgg
MzQgMEIgMDAgMEUgMDAgN0EgNkMgMDEgMDAgNzkgN0IgNkMgMDEgIE0wODQuLi4uemwuLnl7bC4K
ICAgIDI1MjA6IDAwIDBBIDAyIDAwIDBBIDA0IDYwIDREIDM0IDM2IDMwIDBEIDIwIDIwIDRCIDQ1
ICAuLi4uLi5gTTQ2MC4gIEtFCiAgICAyNTMwOiA1MiAyRCA0MSA1MyA0QyAyRCA0MyA3MCA2RCA1
MiA2NSA2MSA2NCA0MyA2QyA2QiAgUi1BU0wtQ3BtUmVhZENsawogICAgMjU0MDogNTIgNjUgNzEg
MjAgMjAgMjggMjUgNjQgMkMgMjAgMjUgNjQgMkMgMjAgMjUgNjQgIFJlcSAgKCVkLCAlZCwgJWQK
ICAgIDI1NTA6IDJDIDIwIDI1IDY0IDJDIDIwIDI1IDY0IDI5IDIwIDNEIDIwIDMwIDc4IDI1IDU4
ICAsICVkLCAlZCkgPSAweCVYCiAgICAyNTYwOiAwQSAwMCA2OCA2OSA2QSA2QiA2QyA2MCBBNCA2
MCAxNCA0OCAxMSA0RCAzNCAzMCAgLi5oaWprbGAuYC5ILk00MAogICAgMjU3MDogMzYgMEUgNEQg
MzQgMzYgMzAgMEQgMjAgMjAgNEIgNDUgNTIgMkQgNDEgNTMgNEMgIDYuTTQ2MC4gIEtFUi1BU0wK
ICAgIDI1ODA6IDJEIDQzIDcwIDZEIDU3IDcyIDY5IDc0IDY1IDQzIDZDIDZCIDUyIDY1IDcxIDIw
ICAtQ3BtV3JpdGVDbGtSZXEgCiAgICAyNTkwOiAyOCAyNSA2NCAyQyAyMCAyNSA2NCAyQyAyMCAy
NSA2NCAyQyAyMCAyNSA2NCAyQyAgKCVkLCAlZCwgJWQsICVkLAogICAgMjVBMDogMjAgMjUgNjQg
MkMgMjAgMzAgNzggMjUgNTggMjkgMEEgMDAgNjggNjkgNkEgNkIgICAlZCwgMHglWCkuLmhpamsK
ICAgIDI1QjA6IDZDIDZEIEEwIDQyIDBCIDkyIDk1IDREIDMwIDM4IDM1IDBBIDA0IEEwIDQ5IDA2
ICBsbS5CLi4uTTA4NS4uLkkuCiAgICAyNUMwOiA5MyA0RCAzMCAzOCAzNSAwQSAwOCA3MCA4MyA4
OCA0RCAzNCAzMCAzNCA2QyAwMCAgLk0wODUuLnAuLk00MDRsLgogICAgMjVEMDogNjEgQTAgMzkg
OTEgOTQgNjggMDAgOTQgNjkgMDAgNzAgNEQgMzIgMzQgMzkgNjggIGEuOS4uaC4uaS5wTTI0OWgK
ICAgIDI1RTA6IDY5IDZBIDBDIDAwIDFFIEQwIDAyIDYwIDdCIDYwIDdGIDBDIEZGIEZGIEZGIEZG
ICBpai4uLi4uYHtgLi4uLi4uCiAgICAyNUYwOiA3OSAwQSAwMyA2MSAwMCAwMCA2MCA3RCA2MCA3
OSA2RCA2MSAwMCA2MCA0RCAzMiAgeS4uYS4uYH1geW1hLmBNMgogICAgMjYwMDogMzUgMzAgNjgg
NjkgNkEgMEMgMDAgMUUgRDAgMDIgNjAgQTEgMUIgNEQgMzAgMzEgIDUwaGlqLi4uLi5gLi5NMDEK
ICAgIDI2MTA6IDMyIDcyIDREIDMwIDM4IDM0IDBCIDAwIDBFIDAwIDdBIDYxIDBBIDA4IDAwIDdC
ICAyck0wODQuLi4uemEuLi57CiAgICAyNjIwOiA2MSAwQSAwNyAwMCAwQSAwMiA2RCBBMSAzRCBB
MCAxRiA5MyA2QiAwQSAwMiA0RCAgYS4uLi4ubS49Li4uay4uTQogICAgMjYzMDogMzAgMzEgMzIg
NzIgNEQgMzAgMzggMzQgMEIgMDAgMTMgMDAgN0EgNjEgMEEgMDggIDAxMnJNMDg0Li4uLnphLi4K
ICAgIDI2NDA6IDAwIDdCIDYxIDBBIDA3IDAwIDBBIDAyIDZEIEExIDFCIDREIDMwIDMxIDMyIDcy
ICAue2EuLi4uLm0uLk0wMTJyCiAgICAyNjUwOiA0RCAzMCAzOCAzNCAwQiAwMCAwRSAwMCA3QSA2
MSAwQSAwOCAwMCA3QiA2MSAwQSAgTTA4NC4uLi56YS4uLnthLgogICAgMjY2MDogMDcgMDAgMEEg
MDIgNkQgQTEgMUQgNEQgMzAgMzEgMzIgNzIgNEQgMzAgMzggMzQgIC4uLi5tLi5NMDEyck0wODQK
ICAgIDI2NzA6IDBCIDAwIDBFIDAwIDdBIDZDIDAxIDAwIDc5IDdCIDZDIDAxIDAwIDBBIDAyIDAw
ICAuLi4uemwuLnl7bC4uLi4uCiAgICAyNjgwOiAwQSAwNCA2RCAxNCA0NiAwQiA0RCAzNiAzMCAz
MCAwQSAwOCA1NCA0NSA0RCA1MCAgLi5tLkYuTTYwMC4uVEVNUAogICAgMjY5MDogMTIgMDggMDQg
MEEgRkYgMEEgMDkgMDAgMDAgQTAgMEQgOTMgNjggMDAgNzAgMDAgIC4uLi4uLi4uLi4uLmgucC4K
ICAgIDI2QTA6IDg4IDU0IDQ1IDREIDUwIDAwIDAwIEEwIDBGIDkyIDkzIDY5IDBBIDA5IDcwIDY5
ICAuVEVNUC4uLi4uLmkuLnBpCiAgICAyNkIwOiA4OCA1NCA0NSA0RCA1MCAwMSAwMCA3MCA4MyA4
OCA1NCA0NSA0RCA1MCAwMCAwMCAgLlRFTVAuLnAuLlRFTVAuLgogICAgMjZDMDogNjAgNzAgODMg
ODggNTQgNDUgNEQgNTAgMDEgMDAgNjEgNzAgODMgODggNTQgNDUgIGBwLi5URU1QLi5hcC4uVEUK
ICAgIDI2RDA6IDREIDUwIDBBIDAyIDAwIDYyIDcwIDgzIDg4IDU0IDQ1IDREIDUwIDBBIDAzIDAw
ICBNUC4uLmJwLi5URU1QLi4uCiAgICAyNkUwOiA2MyA0RCAzNCAzNiAzMCAwRCAyMCAyMCA0QiA0
NSA1MiAyRCA0MSA1MyA0QyAyRCAgY000NjAuICBLRVItQVNMLQogICAgMjZGMDogNDMgNzAgNkQg
NDcgNjUgNkUgNjUgNzIgNjEgNzQgNjUgNTUgNTAgNDMgMjAgMjggIENwbUdlbmVyYXRlVVBDICgK
ICAgIDI3MDA6IDI5IDIwIDUyIDY1IDc0IDc1IDcyIDZFIDIwIDUwIDYxIDYzIDZCIDYxIDY3IDY1
ICApIFJldHVybiBQYWNrYWdlCiAgICAyNzEwOiAyMCAyOCAzNCAyOSAyMCA3QiAzMCA3OCAyNSA1
OCAyQyAyMCAzMCA3OCAyNSA1OCAgICg0KSB7MHglWCwgMHglWAogICAgMjcyMDogMkMgMjAgMzAg
NzggMjUgNTggMkMgMjAgMzAgNzggMjUgNTggN0QgMEEgMDAgNjAgICwgMHglWCwgMHglWH0uLmAK
ICAgIDI3MzA6IDYxIDYyIDYzIDAwIDAwIEE0IDU0IDQ1IDREIDUwIDE0IDRFIDBDIDREIDM2IDMw
ICBhYmMuLi5URU1QLk4uTTYwCiAgICAyNzQwOiAzMiAwQiAwOCA1NCA0NSA0RCA1MCAxMiAwOSAw
NCAwQSBGRiAwQSAwOSAwQSAzRCAgMi4uVEVNUC4uLi4uLi4uPQogICAgMjc1MDogMDAgQTAgMEQg
OTMgNjggMDAgNzAgMDAgODggNTQgNDUgNEQgNTAgMDAgMDAgQTAgIC4uLi5oLnAuLlRFTVAuLi4K
ICAgIDI3NjA6IDBGIDkyIDkzIDY5IDBBIDA5IDcwIDY5IDg4IDU0IDQ1IDREIDUwIDAxIDAwIEEw
ICAuLi5pLi5waS5URU1QLi4uCiAgICAyNzcwOiAxMCA5MiA5MyA2QSAwQSAzRCA3MCA2QSA4OCA1
NCA0NSA0RCA1MCAwQSAwMiAwMCAgLi4uai49cGouVEVNUC4uLgogICAgMjc4MDogNzAgODMgODgg
NTQgNDUgNEQgNTAgMDAgMDAgNjAgNzAgODMgODggNTQgNDUgNEQgIHAuLlRFTVAuLmBwLi5URU0K
ICAgIDI3OTA6IDUwIDAxIDAwIDYxIDcwIDgzIDg4IDU0IDQ1IDREIDUwIDBBIDAyIDAwIDYyIDcw
ICBQLi5hcC4uVEVNUC4uLmJwCiAgICAyN0EwOiA4MyA4OCA1NCA0NSA0RCA1MCAwQSAwMyAwMCA2
MyA0RCAzNCAzNiAzMCAwRCAyMCAgLi5URU1QLi4uY000NjAuIAogICAgMjdCMDogMjAgNEIgNDUg
NTIgMkQgNDEgNTMgNEMgMkQgNDMgNzAgNkQgNDcgNjUgNkUgNjUgICBLRVItQVNMLUNwbUdlbmUK
ICAgIDI3QzA6IDcyIDYxIDc0IDY1IDQxIDYzIDcwIDY5IDM2IDM1IDU1IDUwIDQzIDIwIDI4IDI5
ICByYXRlQWNwaTY1VVBDICgpCiAgICAyN0QwOiAyMCA1MiA2NSA3NCA3NSA3MiA2RSAyMCA1MCA2
MSA2MyA2QiA2MSA2NyA2NSAyMCAgIFJldHVybiBQYWNrYWdlIAogICAgMjdFMDogMjggMzQgMjkg
MjAgN0IgMzAgNzggMjUgNTggMkMgMjAgMzAgNzggMjUgNTggMkMgICg0KSB7MHglWCwgMHglWCwK
ICAgIDI3RjA6IDIwIDMwIDc4IDI1IDU4IDJDIDIwIDMwIDc4IDI1IDU4IDdEIDBBIDAwIDYwIDYx
ICAgMHglWCwgMHglWH0uLmBhCiAgICAyODAwOiA2MiA2MyAwMCAwMCBBNCA1NCA0NSA0RCA1MCAx
NCA0NCAyOCA0RCAzNiAzMCAzMSAgYmMuLi5URU1QLkQoTTYwMQogICAgMjgxMDogMEUgMDggNTQg
NDUgNEQgNTAgMTIgMUEgMDEgMTEgMTcgMEEgMTQgODIgMDAgMDAgIC4uVEVNUC4uLi4uLi4uLi4K
ICAgIDI4MjA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIEZGIEZGIEZG
ICAuLi4uLi4uLi4uLi4uLi4uCiAgICAyODMwOiBGRiA1QiAxMyA4MyA4OCA1NCA0NSA0RCA1MCAw
MCAwMCAwQSAyMCAwQSAxMCA1NyAgLlsuLi5URU1QLi4uIC4uVwogICAgMjg0MDogNDkgNDQgNDgg
NUIgMTMgODMgODggNTQgNDUgNEQgNTAgMDAgMDAgMEEgMzAgMEEgIElESFsuLi5URU1QLi4uMC4K
ICAgIDI4NTA6IDEwIDQ4IDQ5IDQ3IDU0IDVCIDEzIDgzIDg4IDU0IDQ1IDREIDUwIDAwIDAwIDBB
ICAuSElHVFsuLi5URU1QLi4uCiAgICAyODYwOiA0MCAwMSA1NiA0OSA1MyA0OSA1QiAxMyA4MyA4
OCA1NCA0NSA0RCA1MCAwMCAwMCAgQC5WSVNJWy4uLlRFTVAuLgogICAgMjg3MDogMEEgNDIgMDEg
NDYgNEMgNDkgNDQgNUIgMTMgODMgODggNTQgNDUgNEQgNTAgMDAgIC5CLkZMSURbLi4uVEVNUC4K
ICAgIDI4ODA6IDAwIDBBIDQzIDBBIDAzIDUwIDQxIDRFIDQ1IDVCIDEzIDgzIDg4IDU0IDQ1IDRE
ICAuLkMuLlBBTkVbLi4uVEVNCiAgICAyODkwOiA1MCAwMCAwMCAwQSA0NiAwQSAwMiA1NiA1NCA1
MCA1MyA1QiAxMyA4MyA4OCA1NCAgUC4uLkYuLlZUUFNbLi4uVAogICAgMjhBMDogNDUgNEQgNTAg
MDAgMDAgMEEgNDggMEEgMDIgNDggNUEgNTAgNTMgNUIgMTMgODMgIEVNUC4uLkguLkhaUFNbLi4K
ICAgIDI4QjA6IDg4IDU0IDQ1IDREIDUwIDAwIDAwIDBBIDRBIDBBIDA0IDUzIDQ4IDQxIDUwIDVC
ICAuVEVNUC4uLkouLlNIQVBbCiAgICAyOEMwOiAxMyA4MyA4OCA1NCA0NSA0RCA1MCAwMCAwMCAw
QSA0RiAwQSAwOCA0NyA1MCA1NCAgLi4uVEVNUC4uLk8uLkdQVAogICAgMjhEMDogNEUgNUIgMTMg
ODMgODggNTQgNDUgNEQgNTAgMDAgMDAgMEEgNTcgMEEgMDggNDcgIE5bLi4uVEVNUC4uLlcuLkcK
ICAgIDI4RTA6IDUwIDUwIDUzIDVCIDEzIDgzIDg4IDU0IDQ1IDREIDUwIDAwIDAwIDBBIDYwIDBB
ICBQUFNbLi4uVEVNUC4uLmAuCiAgICAyOEYwOiAwMiA0NSA0QSA1NCA0MiA1QiAxMyA4MyA4OCA1
NCA0NSA0RCA1MCAwMCAwMCAwQSAgLkVKVEJbLi4uVEVNUC4uLgogICAgMjkwMDogNzMgMEEgMDQg
NTIgNEYgNTQgNEUgNUIgMTMgODMgODggNTQgNDUgNEQgNTAgMDAgIHMuLlJPVE5bLi4uVEVNUC4K
ICAgIDI5MTA6IDAwIDBBIDgwIDBBIDIwIDRGIDQ2IDUzIDU0IEEwIDFFIDkxIDkzIDY4IDAwIDkz
ICAuLi4uIE9GU1QuLi4uaC4uCiAgICAyOTIwOiA2OCAwQSAwMiA3MCAwQSAwMyA1MyA0OCA0MSA1
MCA3MCAwQSAwOCA1NyA0OSA0NCAgaC4ucC4uU0hBUHAuLldJRAogICAgMjkzMDogNDggNzAgMEEg
MEUgNDggNDkgNDcgNTQgQTEgNDMgMDQgQTAgMUQgOTEgOTMgNjggIEhwLi5ISUdULkMuLi4uLmgK
ICAgIDI5NDA6IDAxIDkzIDY4IDBBIDAzIDcwIDAxIDUzIDQ4IDQxIDUwIDcwIDBBIDAzIDU3IDQ5
ICAuLmguLnAuU0hBUHAuLldJCiAgICAyOTUwOiA0NCA0OCA3MCAwQSAwOCA0OCA0OSA0NyA1NCBB
MSAyMiBBMCAyMCA5MyA2OCAwQSAgREhwLi5ISUdULiIuIC5oLgogICAgMjk2MDogMDIgNzAgMEEg
MDIgNTMgNDggNDEgNTAgNzAgMEEgMDggNTcgNDkgNDQgNDggNzAgIC5wLi5TSEFQcC4uV0lESHAK
ICAgIDI5NzA6IDBBIDA4IDQ4IDQ5IDQ3IDU0IDcwIDAxIDQ2IDRDIDQ5IDQ0IEEwIDExIDkxIDkz
ICAuLkhJR1RwLkZMSUQuLi4uCiAgICAyOTgwOiA2OCAwQSAwMiA5MyA2OCAwQSAwMyA3MCAwQSAw
MiA1MiA0RiA1NCA0RSA3MCA2OSAgaC4uLmguLnAuLlJPVE5waQogICAgMjk5MDogNTYgNDkgNTMg
NDkgNzAgN0IgN0EgNkEgMEEgMDggMDAgMEEgRkYgMDAgNDcgNTAgIFZJU0lwe3pqLi4uLi4uR1AK
ICAgIDI5QTA6IDU0IDRFIDcwIDdCIDZBIDBBIEZGIDAwIDQ3IDUwIDUwIDUzIDcwIDZCIDQ1IDRB
ICBUTnB7ai4uLkdQUFNwa0VKCiAgICAyOUIwOiA1NCA0MiA3MCA3QiA2QyAwQSAwNyAwMCA1MCA0
MSA0RSA0NSA3MCA3QiA3QSA2QyAgVEJwe2wuLi5QQU5FcHt6bAogICAgMjlDMDogMEEgMDQgMDAg
MEEgMDMgMDAgNTYgNTQgNTAgNTMgNzAgN0IgN0EgNkMgMEEgMDggIC4uLi4uLlZUUFNwe3psLi4K
ICAgIDI5RDA6IDAwIDBBIDAzIDAwIDQ4IDVBIDUwIDUzIEEwIDBCIDkyIDkzIDZEIDAwIDcwIDZE
ICAuLi4uSFpQUy4uLi5tLnBtCiAgICAyOUUwOiA0RiA0NiA1MyA1NCA4QSA4MyA4OCA1NCA0NSA0
RCA1MCAwMCAwMCAwMCA0NCA1NyAgT0ZTVC4uLlRFTVAuLi5EVwogICAgMjlGMDogMzAgMzAgOEEg
ODMgODggNTQgNDUgNEQgNTAgMDAgMDAgMEEgMDQgNDQgNTcgMzAgIDAwLi4uVEVNUC4uLi5EVzAK
ICAgIDJBMDA6IDMxIDhBIDgzIDg4IDU0IDQ1IDREIDUwIDAwIDAwIDBBIDA4IDQ0IDU3IDMwIDMy
ICAxLi4uVEVNUC4uLi5EVzAyCiAgICAyQTEwOiA4QSA4MyA4OCA1NCA0NSA0RCA1MCAwMCAwMCAw
QSAwQyA0NCA1NyAzMCAzMyA4QSAgLi4uVEVNUC4uLi5EVzAzLgogICAgMkEyMDogODMgODggNTQg
NDUgNEQgNTAgMDAgMDAgMEEgMTAgNDQgNTcgMzAgMzQgNEQgMzQgIC4uVEVNUC4uLi5EVzA0TTQK
ICAgIDJBMzA6IDM2IDMwIDBEIDIwIDIwIDRCIDQ1IDUyIDJEIDQxIDUzIDRDIDJEIDQzIDcwIDZE
ICA2MC4gIEtFUi1BU0wtQ3BtCiAgICAyQTQwOiA0NyA2NSA2RSA2NSA3MiA2MSA3NCA2NSA1MCA0
QyA0NCAyMCAyOCAyOSAyMCA1MiAgR2VuZXJhdGVQTEQgKCkgUgogICAgMkE1MDogNjUgNzQgNzUg
NzIgNkUgMjAgMzAgNzggMjUgNTggMkMgMjAgMzAgNzggMjUgNTggIGV0dXJuIDB4JVgsIDB4JVgK
ICAgIDJBNjA6IDJDIDIwIDMwIDc4IDI1IDU4IDJDIDIwIDMwIDc4IDI1IDU4IDJDIDIwIDMwIDc4
ICAsIDB4JVgsIDB4JVgsIDB4CiAgICAyQTcwOiAyNSA1OCAwQSAwMCA0NCA1NyAzMCAzMCA0NCA1
NyAzMCAzMSA0NCA1NyAzMCAzMiAgJVguLkRXMDBEVzAxRFcwMgogICAgMkE4MDogNDQgNTcgMzAg
MzMgNDQgNTcgMzAgMzQgMDAgQTQgNTQgNDUgNEQgNTAgMTQgMzMgIERXMDNEVzA0Li5URU1QLjMK
ICAgIDJBOTA6IDREIDM2IDM0IDMzIDA5IDk5IDY4IDYwIDcwIDAwIDYxIEEwIDFBIDkyIDkzIDYw
ICBNNjQzLi5oYHAuYS4uLi5gCiAgICAyQUEwOiAwMCBBMiAxNCA5MCA5NSA2MSAwQSAyMCA5MyA3
QiA2MCAwMSAwMCAwMCA3QSA2MCAgLi4uLi5hLiAue2AuLi56YAogICAgMkFCMDogMDEgNjAgNzIg
NjEgMDEgNjEgQTAgMDkgOTIgOTUgNjEgMEEgMjAgNzAgMDAgNjEgIC5gcmEuYS4uLi5hLiBwLmEK
ICAgIDJBQzA6IEE0IDYxIDE0IDQ5IDQ2IDREIDUwIDU0IDUzIDAxIDREIDM0IDM2IDMwIDBEIDIw
ICAuYS5JRk1QVFMuTTQ2MC4gCiAgICAyQUQwOiAyMCA0QiA0NSA1MiAyRCA0MSA1MyA0QyAyRCA0
RCA1MCA1NCA1MyAyMCAyOCAyNSAgIEtFUi1BU0wtTVBUUyAoJQogICAgMkFFMDogNjQgMjkgMEEg
MDAgNjggMDAgMDAgMDAgMDAgMDAgNEQgMzAgMzAgMzAgMEIgRTcgIGQpLi5oLi4uLi5NMDAwLi4K
ICAgIDJBRjA6IDBEIDREIDM2IDM0IDM0IDBDIDAwIDAyIEQ4IEZFIDBBIDA0IDBBIDIwIDREIDM2
ICAuTTY0NC4uLi4uLi4uIE02CiAgICAyQjAwOiAzNCAzNCAwQyA0MCAwMiBEOCBGRSAwQSAwNCAw
QSA0MCA3MCA0RCAzMCAzNCAzOSAgNDQuQC4uLi4uLkBwTTA0OQogICAgMkIxMDogNEQgMzEgMzIg
MzggMEEgNjcgNjAgQTAgNEYgMTUgOTMgN0IgNjAgMEEgMDMgMDAgIE0xMjguZ2AuTy4ue2AuLi4K
ICAgIDJCMjA6IDBBIDAzIEEwIDRFIDBFIDkyIDk1IDREIDMwIDM4IDM1IDBBIDA4IEEwIDRGIDA2
ICAuLi5OLi4uTTA4NS4uLk8uCiAgICAyQjMwOiA1QiAxMiA1QyAyRiAwNSA1RiA1MyA0MiA1RiA1
MCA0MyA1OCA1OCA0NyA1MCA1OCAgWy5cLy5fU0JfUENYWEdQWAogICAgMkI0MDogNTggNTMgNDEg
NTggNTggNTQgNTAgNTQgNTMgMDAgNEQgMzQgMzYgMzAgMEQgMjAgIFhTQVhYVFBUUy5NNDYwLiAK
ICAgIDJCNTA6IDIwIDIwIDIwIDRCIDQ1IDUyIDJEIDQxIDUzIDRDIDJEIDQzIDYxIDZDIDZDIDIw
ICAgICBLRVItQVNMLUNhbGwgCiAgICAyQjYwOiA1QyA1RiA1MyA0MiAyRSA1MCA0MyA1OCA1OCAy
RSA0NyA1MCA1OCA1OCAyRSA1MyAgXF9TQi5QQ1hYLkdQWFguUwogICAgMkI3MDogNDEgNTggNTgg
MkUgNTQgNTAgNTQgNTMgMjAgMjggMjUgNjQgMjkgMEEgMDAgNjggIEFYWC5UUFRTICglZCkuLmgK
ICAgIDJCODA6IDAwIDAwIDAwIDAwIDAwIDVDIDJGIDA1IDVGIDUzIDQyIDVGIDUwIDQzIDU4IDU4
ICAuLi4uLlwvLl9TQl9QQ1hYCiAgICAyQjkwOiA0NyA1MCA1OCA1OCA1MyA0MSA1OCA1OCA1NCA1
MCA1NCA1MyA2OCBBMCA0MyAwNyAgR1BYWFNBWFhUUFRTaC5DLgogICAgMkJBMDogNUIgMTIgNUMg
MkYgMDUgNUYgNTMgNDIgNUYgNTAgNDMgNDkgMzAgNTAgNTQgNDIgIFsuXC8uX1NCX1BDSTBQVEIK
ICAgIDJCQjA6IDUyIDUwIDU0IDUzIDU0IDU0IDUwIDU0IDUzIDAwIDREIDM0IDM2IDMwIDBEIDIw
ICBSUFRTVFRQVFMuTTQ2MC4gCiAgICAyQkMwOiAyMCAyMCAyMCA0QiA0NSA1MiAyRCA0MSA1MyA0
QyAyRCA0MyA2MSA2QyA2QyAyMCAgICAgS0VSLUFTTC1DYWxsIAogICAgMkJEMDogNUEgNDUgNTIg
NEYgNUYgNTAgNEYgNTcgNTIgNUYgNEYgNDQgNDQgNUYgNTMgNDEgIFpFUk9fUE9XUl9PRERfU0EK
ICAgIDJCRTA6IDU0IDQxIDVGIDUwIDQxIDU0IDQ4IDJFIDU0IDUwIDU0IDUzIDIwIDI4IDI1IDY0
ICBUQV9QQVRILlRQVFMgKCVkCiAgICAyQkYwOiAyOSAwQSAwMCA2OCAwMCAwMCAwMCAwMCAwMCA1
QyAyRiAwNSA1RiA1MyA0MiA1RiAgKS4uaC4uLi4uXC8uX1NCXwogICAgMkMwMDogNTAgNDMgNDkg
MzAgNTAgNTQgNDIgNTIgNTAgNTQgNTMgNTQgNTQgNTAgNTQgNTMgIFBDSTBQVEJSUFRTVFRQVFMK
ICAgIDJDMTA6IDY4IEExIDQ1IDA2IEEwIDQyIDA2IDVCIDEyIDVDIDJGIDA0IDVGIDUzIDQyIDVG
ICBoLkUuLkIuWy5cLy5fU0JfCiAgICAyQzIwOiA1MCA0MyA1OCA1OCA1MyA0MSA1OCA1OCA1NCA1
MCA1NCA1MyAwMCA0RCAzNCAzNiAgUENYWFNBWFhUUFRTLk00NgogICAgMkMzMDogMzAgMEQgMjAg
MjAgMjAgMjAgNEIgNDUgNTIgMkQgNDEgNTMgNEMgMkQgNDMgNjEgIDAuICAgIEtFUi1BU0wtQ2EK
ICAgIDJDNDA6IDZDIDZDIDIwIDVDIDVGIDUzIDQyIDJFIDUwIDQzIDU4IDU4IDJFIDUzIDQxIDU4
ICBsbCBcX1NCLlBDWFguU0FYCiAgICAyQzUwOiA1OCAyRSA1NCA1MCA1NCA1MyAyMCAyOCAyNSA2
NCAyOSAwQSAwMCA2OCAwMCAwMCAgWC5UUFRTICglZCkuLmguLgogICAgMkM2MDogMDAgMDAgMDAg
NUMgMkYgMDQgNUYgNTMgNDIgNUYgNTAgNDMgNTggNTggNTMgNDEgIC4uLlwvLl9TQl9QQ1hYU0EK
ICAgIDJDNzA6IDU4IDU4IDU0IDUwIDU0IDUzIDY4IEEwIDQzIDA2IDkyIDkzIDREIDMyIDMyIDM2
ICBYWFRQVFNoLkMuLi5NMjI2CiAgICAyQzgwOiAwMCBBMCA0OSAwNSA1QiAxMiA1QyAyRSA1RiA1
MyA0MiA1RiA0RCAzMiAzNiAzMyAgLi5JLlsuXC5fU0JfTTI2MwogICAgMkM5MDogMDAgNEQgMzQg
MzYgMzAgMEQgMjAgMjAgMjAgMjAgNEIgNDUgNTIgMkQgNDEgNTMgIC5NNDYwLiAgICBLRVItQVMK
ICAgIDJDQTA6IDRDIDJEIDQzIDYxIDZDIDZDIDIwIDVDIDVGIDUzIDQyIDJFIDQzIDcwIDZEIDRG
ICBMLUNhbGwgXF9TQi5DcG1PCiAgICAyQ0IwOiA3NCA2OCA2NSA3MiA0OCA2RiA3NCA3MCA2QyA3
NSA2NyA0MyA2MSA3MiA2NCA1RiAgdGhlckhvdHBsdWdDYXJkXwogICAgMkNDMDogNTAgNTQgNTMg
MjAgMjggMjUgNjQgMjkgMEEgMDAgNjggMDAgMDAgMDAgMDAgMDAgIFBUUyAoJWQpLi5oLi4uLi4K
ICAgIDJDRDA6IDVDIDJFIDVGIDUzIDQyIDVGIDREIDMyIDM2IDMzIDY4IEEwIDQ0IDA3IDkyIDkz
ICBcLl9TQl9NMjYzaC5ELi4uCiAgICAyQ0UwOiA0RCAzMyAzMyAzMSAwMCA3MCA0RCAzMCAzNCAz
OSA0RCAzMyAzMyAzMSAwQSAxMCAgTTMzMS5wTTA0OU0zMzEuLgogICAgMkNGMDogNjAgNzAgNEQg
MzAgMzQgMzkgNEQgMzMgMzMgMzEgMEEgMjEgNjEgQTAgNDIgMDUgIGBwTTA0OU0zMzEuIWEuQi4K
ICAgIDJEMDA6IDkwIDkyIDkzIDYwIDAwIDkyIDkzIDYxIDAwIEEwIDQ2IDA0IDVCIDEyIDVDIDJF
ICAuLi5gLi4uYS4uRi5bLlwuCiAgICAyRDEwOiA1RiA1MyA0MiA1RiA0OSA1MCA1NCA1MyAwMCA0
RCAzNCAzNiAzMCAwRCAyMCAyMCAgX1NCX0lQVFMuTTQ2MC4gIAogICAgMkQyMDogMjAgMjAgNEIg
NDUgNTIgMkQgNDEgNTMgNEMgMkQgNDMgNjEgNkMgNkMgMjAgNUMgICAgS0VSLUFTTC1DYWxsIFwK
ICAgIDJEMzA6IDVGIDUzIDQyIDJFIDQ5IDUwIDU0IDUzIDIwIDI4IDI1IDY0IDI5IDBBIDAwIDY4
ICBfU0IuSVBUUyAoJWQpLi5oCiAgICAyRDQwOiAwMCAwMCAwMCAwMCAwMCA1QyAyRSA1RiA1MyA0
MiA1RiA0OSA1MCA1NCA1MyA2OCAgLi4uLi5cLl9TQl9JUFRTaAogICAgMkQ1MDogQTAgNDMgMDYg
OTIgOTMgNEQgMzYgMzIgMzAgMDAgNzAgNEQgMzAgMzQgMzkgNEQgIC5DLi4uTTYyMC5wTTA0OU0K
ICAgIDJENjA6IDM2IDMyIDMwIDBBIDEwIDYwIEEwIDREIDA0IDkyIDkzIDYwIDAwIEEwIDQ2IDA0
ICA2MjAuLmAuTS4uLmAuLkYuCiAgICAyRDcwOiA1QiAxMiA1QyAyRSA1RiA1MyA0MiA1RiA0MiA1
MCA1NCA1MyAwMCA0RCAzNCAzNiAgWy5cLl9TQl9CUFRTLk00NgogICAgMkQ4MDogMzAgMEQgMjAg
MjAgMjAgMjAgNEIgNDUgNTIgMkQgNDEgNTMgNEMgMkQgNDMgNjEgIDAuICAgIEtFUi1BU0wtQ2EK
ICAgIDJEOTA6IDZDIDZDIDIwIDVDIDVGIDUzIDQyIDJFIDQyIDUwIDU0IDUzIDIwIDI4IDI1IDY0
ICBsbCBcX1NCLkJQVFMgKCVkCiAgICAyREEwOiAyOSAwQSAwMCA2OCAwMCAwMCAwMCAwMCAwMCA1
QyAyRSA1RiA1MyA0MiA1RiA0MiAgKS4uaC4uLi4uXC5fU0JfQgogICAgMkRCMDogNTAgNTQgNTMg
NjggQTAgNDkgMTIgOTIgOTMgNEQgMzQgNDYgMzAgMDAgQTAgNDcgIFBUU2guSS4uLk00RjAuLkcK
ICAgIDJEQzA6IDA0IDVCIDEyIDVDIDJFIDVGIDQ3IDUwIDQ1IDUwIDU0IDUzIDMwIDAwIDREIDM0
ICAuWy5cLl9HUEVQVFMwLk00CiAgICAyREQwOiAzNiAzMCAwRCAyMCAyMCAyMCAyMCA0QiA0NSA1
MiAyRCA0MSA1MyA0QyAyRCA0MyAgNjAuICAgIEtFUi1BU0wtQwogICAgMkRFMDogNjEgNkMgNkMg
MjAgNUMgNUYgNDcgNTAgNDUgMkUgNTAgNTQgNTMgMzAgMjAgMjggIGFsbCBcX0dQRS5QVFMwICgK
ICAgIDJERjA6IDI1IDY0IDI5IDBBIDAwIDY4IDAwIDAwIDAwIDAwIDAwIDVDIDJFIDVGIDQ3IDUw
ICAlZCkuLmguLi4uLlwuX0dQCiAgICAyRTAwOiA0NSA1MCA1NCA1MyAzMCA2OCBBMCA0NyAwNCA1
QiAxMiA1QyAyRSA1RiA0NyA1MCAgRVBUUzBoLkcuWy5cLl9HUAogICAgMkUxMDogNDUgNTAgNTQg
NTMgMzEgMDAgNEQgMzQgMzYgMzAgMEQgMjAgMjAgMjAgMjAgNEIgIEVQVFMxLk00NjAuICAgIEsK
ICAgIDJFMjA6IDQ1IDUyIDJEIDQxIDUzIDRDIDJEIDQzIDYxIDZDIDZDIDIwIDVDIDVGIDQ3IDUw
ICBFUi1BU0wtQ2FsbCBcX0dQCiAgICAyRTMwOiA0NSAyRSA1MCA1NCA1MyAzMSAyMCAyOCAyNSA2
NCAyOSAwQSAwMCA2OCAwMCAwMCAgRS5QVFMxICglZCkuLmguLgogICAgMkU0MDogMDAgMDAgMDAg
NUMgMkUgNUYgNDcgNTAgNDUgNTAgNTQgNTMgMzEgNjggQTAgNDcgIC4uLlwuX0dQRVBUUzFoLkcK
ICAgIDJFNTA6IDA0IDVCIDEyIDVDIDJFIDVGIDQ3IDUwIDQ1IDUwIDU0IDUzIDMyIDAwIDREIDM0
ICAuWy5cLl9HUEVQVFMyLk00CiAgICAyRTYwOiAzNiAzMCAwRCAyMCAyMCAyMCAyMCA0QiA0NSA1
MiAyRCA0MSA1MyA0QyAyRCA0MyAgNjAuICAgIEtFUi1BU0wtQwogICAgMkU3MDogNjEgNkMgNkMg
MjAgNUMgNUYgNDcgNTAgNDUgMkUgNTAgNTQgNTMgMzIgMjAgMjggIGFsbCBcX0dQRS5QVFMyICgK
ICAgIDJFODA6IDI1IDY0IDI5IDBBIDAwIDY4IDAwIDAwIDAwIDAwIDAwIDVDIDJFIDVGIDQ3IDUw
ICAlZCkuLmguLi4uLlwuX0dQCiAgICAyRTkwOiA0NSA1MCA1NCA1MyAzMiA2OCBBMCA0NyAwNCA1
QiAxMiA1QyAyRSA1RiA0NyA1MCAgRVBUUzJoLkcuWy5cLl9HUAogICAgMkVBMDogNDUgNTAgNTQg
NTMgMzMgMDAgNEQgMzQgMzYgMzAgMEQgMjAgMjAgMjAgMjAgNEIgIEVQVFMzLk00NjAuICAgIEsK
ICAgIDJFQjA6IDQ1IDUyIDJEIDQxIDUzIDRDIDJEIDQzIDYxIDZDIDZDIDIwIDVDIDVGIDQ3IDUw
ICBFUi1BU0wtQ2FsbCBcX0dQCiAgICAyRUMwOiA0NSAyRSA1MCA1NCA1MyAzMyAyMCAyOCAyNSA2
NCAyOSAwQSAwMCA2OCAwMCAwMCAgRS5QVFMzICglZCkuLmguLgogICAgMkVEMDogMDAgMDAgMDAg
NUMgMkUgNUYgNDcgNTAgNDUgNTAgNTQgNTMgMzMgNjggQTAgNDYgIC4uLlwuX0dQRVBUUzNoLkYK
ICAgIDJFRTA6IDA0IDVCIDEyIDVDIDJFIDVGIDUzIDQyIDVGIDRGIDUwIDU0IDUzIDAwIDREIDM0
ICAuWy5cLl9TQl9PUFRTLk00CiAgICAyRUYwOiAzNiAzMCAwRCAyMCAyMCAyMCAyMCA0QiA0NSA1
MiAyRCA0MSA1MyA0QyAyRCA0MyAgNjAuICAgIEtFUi1BU0wtQwogICAgMkYwMDogNjEgNkMgNkMg
MjAgNUMgNUYgNTMgNDIgMkUgNEYgNTAgNTQgNTMgMjAgMjggMjUgIGFsbCBcX1NCLk9QVFMgKCUK
ICAgIDJGMTA6IDY0IDI5IDBBIDAwIDY4IDAwIDAwIDAwIDAwIDAwIDVDIDJFIDVGIDUzIDQyIDVG
ICBkKS4uaC4uLi4uXC5fU0JfCiAgICAyRjIwOiA0RiA1MCA1NCA1MyA2OCA0RCAzMCAzMCAzMCAw
QiBFOCAwRCAxNCA0RCA0QyA0RCAgT1BUU2hNMDAwLi4uLk1MTQogICAgMkYzMDogNTcgNDEgNEIg
MDEgNEQgMzQgMzYgMzAgMEQgMjAgMjAgNEIgNDUgNTIgMkQgNDEgIFdBSy5NNDYwLiAgS0VSLUEK
ICAgIDJGNDA6IDUzIDRDIDJEIDREIDU3IDQxIDRCIDIwIDI4IDI1IDY0IDI5IDBBIDAwIDY4IDAw
ICBTTC1NV0FLICglZCkuLmguCiAgICAyRjUwOiAwMCAwMCAwMCAwMCA0RCAzMCAzMCAzMCAwQiBF
OSAwRCA0RCAzNiAzNCAzNCAwQyAgLi4uLk0wMDAuLi5NNjQ0LgogICAgMkY2MDogMDAgMDIgRDgg
RkUgMEEgMDQgMEEgMjAgNEQgMzYgMzQgMzQgMEMgNDAgMDIgRDggIC4uLi4uLi4gTTY0NC5ALi4K
ICAgIDJGNzA6IEZFIDBBIDA0IDBBIDQwIDcwIDREIDMwIDM0IDM5IDREIDMxIDMyIDM4IDBBIDY3
ICAuLi4uQHBNMDQ5TTEyOC5nCiAgICAyRjgwOiA2MCBBMCA0RiAxNSA5MyA3QiA2MCAwQSAwMyAw
MCAwQSAwMyBBMCA0RSAwRSA5MiAgYC5PLi57YC4uLi4uLk4uLgogICAgMkY5MDogOTUgNEQgMzAg
MzggMzUgMEEgMDggQTAgNEYgMDYgNUIgMTIgNUMgMkYgMDUgNUYgIC5NMDg1Li4uTy5bLlwvLl8K
ICAgIDJGQTA6IDUzIDQyIDVGIDUwIDQzIDU4IDU4IDQ3IDUwIDU4IDU4IDUzIDQxIDU4IDU4IDU0
ICBTQl9QQ1hYR1BYWFNBWFhUCiAgICAyRkIwOiA1NyA0MSA0QiAwMCA0RCAzNCAzNiAzMCAwRCAy
MCAyMCAyMCAyMCA0QiA0NSA1MiAgV0FLLk00NjAuICAgIEtFUgogICAgMkZDMDogMkQgNDEgNTMg
NEMgMkQgNDMgNjEgNkMgNkMgMjAgNUMgNUYgNTMgNDIgMkUgNTAgIC1BU0wtQ2FsbCBcX1NCLlAK
ICAgIDJGRDA6IDQzIDU4IDU4IDJFIDQ3IDUwIDU4IDU4IDJFIDUzIDQxIDU4IDU4IDJFIDU0IDU3
ICBDWFguR1BYWC5TQVhYLlRXCiAgICAyRkUwOiA0MSA0QiAyMCAyOCAyNSA2NCAyOSAwQSAwMCA2
OCAwMCAwMCAwMCAwMCAwMCA1QyAgQUsgKCVkKS4uaC4uLi4uXAogICAgMkZGMDogMkYgMDUgNUYg
NTMgNDIgNUYgNTAgNDMgNTggNTggNDcgNTAgNTggNTggNTMgNDEgIC8uX1NCX1BDWFhHUFhYU0EK
ICAgIDMwMDA6IDU4IDU4IDU0IDU3IDQxIDRCIDY4IEEwIDQzIDA3IDVCIDEyIDVDIDJGIDA1IDVG
ICBYWFRXQUtoLkMuWy5cLy5fCiAgICAzMDEwOiA1MyA0MiA1RiA1MCA0MyA0OSAzMCA1MCA1NCA0
MiA1MiA1MCA1NCA1MyA1NCA1NCAgU0JfUENJMFBUQlJQVFNUVAogICAgMzAyMDogNTcgNDEgNEIg
MDAgNEQgMzQgMzYgMzAgMEQgMjAgMjAgMjAgMjAgNEIgNDUgNTIgIFdBSy5NNDYwLiAgICBLRVIK
ICAgIDMwMzA6IDJEIDQxIDUzIDRDIDJEIDQzIDYxIDZDIDZDIDIwIDVBIDQ1IDUyIDRGIDVGIDUw
ICAtQVNMLUNhbGwgWkVST19QCiAgICAzMDQwOiA0RiA1NyA1MiA1RiA0RiA0NCA0NCA1RiA1MyA0
MSA1NCA0MSA1RiA1MCA0MSA1NCAgT1dSX09ERF9TQVRBX1BBVAogICAgMzA1MDogNDggMkUgNTQg
NTcgNDEgNEIgMjAgMjggMjUgNjQgMjkgMEEgMDAgNjggMDAgMDAgIEguVFdBSyAoJWQpLi5oLi4K
ICAgIDMwNjA6IDAwIDAwIDAwIDVDIDJGIDA1IDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMwIDUwIDU0
ICAuLi5cLy5fU0JfUENJMFBUCiAgICAzMDcwOiA0MiA1MiA1MCA1NCA1MyA1NCA1NCA1NyA0MSA0
QiA2OCBBMSA0NSAwNiBBMCA0MiAgQlJQVFNUVFdBS2guRS4uQgogICAgMzA4MDogMDYgNUIgMTIg
NUMgMkYgMDQgNUYgNTMgNDIgNUYgNTAgNDMgNTggNTggNTMgNDEgIC5bLlwvLl9TQl9QQ1hYU0EK
ICAgIDMwOTA6IDU4IDU4IDU0IDU3IDQxIDRCIDAwIDREIDM0IDM2IDMwIDBEIDIwIDIwIDIwIDIw
ICBYWFRXQUsuTTQ2MC4gICAgCiAgICAzMEEwOiA0QiA0NSA1MiAyRCA0MSA1MyA0QyAyRCA0MyA2
MSA2QyA2QyAyMCA1QyA1RiA1MyAgS0VSLUFTTC1DYWxsIFxfUwogICAgMzBCMDogNDIgMkUgNTAg
NDMgNTggNTggMkUgNTMgNDEgNTggNTggMkUgNTQgNTcgNDEgNEIgIEIuUENYWC5TQVhYLlRXQUsK
ICAgIDMwQzA6IDIwIDI4IDI1IDY0IDI5IDBBIDAwIDY4IDAwIDAwIDAwIDAwIDAwIDVDIDJGIDA0
ICAgKCVkKS4uaC4uLi4uXC8uCiAgICAzMEQwOiA1RiA1MyA0MiA1RiA1MCA0MyA1OCA1OCA1MyA0
MSA1OCA1OCA1NCA1NyA0MSA0QiAgX1NCX1BDWFhTQVhYVFdBSwogICAgMzBFMDogNjggQTAgNDMg
MDYgOTIgOTMgNEQgMzIgMzIgMzYgMDAgQTAgNDkgMDUgNUIgMTIgIGguQy4uLk0yMjYuLkkuWy4K
ICAgIDMwRjA6IDVDIDJFIDVGIDUzIDQyIDVGIDREIDMyIDM2IDM0IDAwIDREIDM0IDM2IDMwIDBE
ICBcLl9TQl9NMjY0Lk00NjAuCiAgICAzMTAwOiAyMCAyMCAyMCAyMCA0QiA0NSA1MiAyRCA0MSA1
MyA0QyAyRCA0MyA2MSA2QyA2QyAgICAgIEtFUi1BU0wtQ2FsbAogICAgMzExMDogMjAgNUMgNUYg
NTMgNDIgMkUgNDMgNzAgNkQgNEYgNzQgNjggNjUgNzIgNDggNkYgICBcX1NCLkNwbU90aGVySG8K
ICAgIDMxMjA6IDc0IDcwIDZDIDc1IDY3IDQzIDYxIDcyIDY0IDVGIDU3IDQxIDRCIDIwIDI4IDI1
ICB0cGx1Z0NhcmRfV0FLICglCiAgICAzMTMwOiA2NCAyOSAwQSAwMCA2OCAwMCAwMCAwMCAwMCAw
MCA1QyAyRSA1RiA1MyA0MiA1RiAgZCkuLmguLi4uLlwuX1NCXwogICAgMzE0MDogNEQgMzIgMzYg
MzQgNjggQTAgNDMgMDYgOTIgOTMgNEQgMzIgMzggMzAgMDAgQTAgIE0yNjRoLkMuLi5NMjgwLi4K
ICAgIDMxNTA6IDQ5IDA1IDVCIDEyIDVDIDJFIDVGIDUzIDQyIDVGIDREIDMyIDM4IDM0IDAwIDRE
ICBJLlsuXC5fU0JfTTI4NC5NCiAgICAzMTYwOiAzNCAzNiAzMCAwRCAyMCAyMCAyMCAyMCA0QiA0
NSA1MiAyRCA0MSA1MyA0QyAyRCAgNDYwLiAgICBLRVItQVNMLQogICAgMzE3MDogNDMgNjEgNkMg
NkMgMjAgNUMgNUYgNTMgNDIgMkUgNDMgNzAgNkQgNEMgNkYgNzcgIENhbGwgXF9TQi5DcG1Mb3cK
ICAgIDMxODA6IDUwIDZGIDc3IDY1IDcyIDQ1IDc0IDY4IDY1IDcyIDZFIDY1IDc0IDVGIDU3IDQx
ICBQb3dlckV0aGVybmV0X1dBCiAgICAzMTkwOiA0QiAyMCAyOCAyNSA2NCAyOSAwQSAwMCA2OCAw
MCAwMCAwMCAwMCAwMCA1QyAyRSAgSyAoJWQpLi5oLi4uLi5cLgogICAgMzFBMDogNUYgNTMgNDIg
NUYgNEQgMzIgMzggMzQgNjggQTAgNDQgMDcgOTIgOTMgNEQgMzMgIF9TQl9NMjg0aC5ELi4uTTMK
ICAgIDMxQjA6IDMzIDMxIDAwIDcwIDREIDMwIDM0IDM5IDREIDMzIDMzIDMxIDBBIDEwIDYwIDcw
ICAzMS5wTTA0OU0zMzEuLmBwCiAgICAzMUMwOiA0RCAzMCAzNCAzOSA0RCAzMyAzMyAzMSAwQSAy
MSA2MSBBMCA0MiAwNSA5MCA5MiAgTTA0OU0zMzEuIWEuQi4uLgogICAgMzFEMDogOTMgNjAgMDAg
OTIgOTMgNjEgMDAgQTAgNDYgMDQgNUIgMTIgNUMgMkUgNUYgNTMgIC5gLi4uYS4uRi5bLlwuX1MK
ICAgIDMxRTA6IDQyIDVGIDQ5IDU3IDQxIDRCIDAwIDREIDM0IDM2IDMwIDBEIDIwIDIwIDIwIDIw
ICBCX0lXQUsuTTQ2MC4gICAgCiAgICAzMUYwOiA0QiA0NSA1MiAyRCA0MSA1MyA0QyAyRCA0MyA2
MSA2QyA2QyAyMCA1QyA1RiA1MyAgS0VSLUFTTC1DYWxsIFxfUwogICAgMzIwMDogNDIgMkUgNDkg
NTcgNDEgNEIgMjAgMjggMjUgNjQgMjkgMEEgMDAgNjggMDAgMDAgIEIuSVdBSyAoJWQpLi5oLi4K
ICAgIDMyMTA6IDAwIDAwIDAwIDVDIDJFIDVGIDUzIDQyIDVGIDQ5IDU3IDQxIDRCIDY4IEEwIDQz
ICAuLi5cLl9TQl9JV0FLaC5DCiAgICAzMjIwOiAwNiA5MiA5MyA0RCAzNiAzMiAzMCAwMCA3MCA0
RCAzMCAzNCAzOSA0RCAzNiAzMiAgLi4uTTYyMC5wTTA0OU02MgogICAgMzIzMDogMzAgMEEgMTAg
NjAgQTAgNEQgMDQgOTIgOTMgNjAgMDAgQTAgNDYgMDQgNUIgMTIgIDAuLmAuTS4uLmAuLkYuWy4K
ICAgIDMyNDA6IDVDIDJFIDVGIDUzIDQyIDVGIDQyIDU3IDQxIDRCIDAwIDREIDM0IDM2IDMwIDBE
ICBcLl9TQl9CV0FLLk00NjAuCiAgICAzMjUwOiAyMCAyMCAyMCAyMCA0QiA0NSA1MiAyRCA0MSA1
MyA0QyAyRCA0MyA2MSA2QyA2QyAgICAgIEtFUi1BU0wtQ2FsbAogICAgMzI2MDogMjAgNUMgNUYg
NTMgNDIgMkUgNDIgNTcgNDEgNEIgMjAgMjggMjUgNjQgMjkgMEEgICBcX1NCLkJXQUsgKCVkKS4K
ICAgIDMyNzA6IDAwIDY4IDAwIDAwIDAwIDAwIDAwIDVDIDJFIDVGIDUzIDQyIDVGIDQyIDU3IDQx
ICAuaC4uLi4uXC5fU0JfQldBCiAgICAzMjgwOiA0QiA2OCBBMCA0OSAxMiA5MiA5MyA0RCAzNCA0
NiAzMCAwMCBBMCA0NyAwNCA1QiAgS2guSS4uLk00RjAuLkcuWwogICAgMzI5MDogMTIgNUMgMkUg
NUYgNDcgNTAgNDUgNTcgNDEgNEIgMzAgMDAgNEQgMzQgMzYgMzAgIC5cLl9HUEVXQUswLk00NjAK
ICAgIDMyQTA6IDBEIDIwIDIwIDIwIDIwIDRCIDQ1IDUyIDJEIDQxIDUzIDRDIDJEIDQzIDYxIDZD
ICAuICAgIEtFUi1BU0wtQ2FsCiAgICAzMkIwOiA2QyAyMCA1QyA1RiA0NyA1MCA0NSAyRSA1NyA0
MSA0QiAzMCAyMCAyOCAyNSA2NCAgbCBcX0dQRS5XQUswICglZAogICAgMzJDMDogMjkgMEEgMDAg
NjggMDAgMDAgMDAgMDAgMDAgNUMgMkUgNUYgNDcgNTAgNDUgNTcgICkuLmguLi4uLlwuX0dQRVcK
ICAgIDMyRDA6IDQxIDRCIDMwIDY4IEEwIDQ3IDA0IDVCIDEyIDVDIDJFIDVGIDQ3IDUwIDQ1IDU3
ICBBSzBoLkcuWy5cLl9HUEVXCiAgICAzMkUwOiA0MSA0QiAzMSAwMCA0RCAzNCAzNiAzMCAwRCAy
MCAyMCAyMCAyMCA0QiA0NSA1MiAgQUsxLk00NjAuICAgIEtFUgogICAgMzJGMDogMkQgNDEgNTMg
NEMgMkQgNDMgNjEgNkMgNkMgMjAgNUMgNUYgNDcgNTAgNDUgMkUgIC1BU0wtQ2FsbCBcX0dQRS4K
ICAgIDMzMDA6IDU3IDQxIDRCIDMxIDIwIDI4IDI1IDY0IDI5IDBBIDAwIDY4IDAwIDAwIDAwIDAw
ICBXQUsxICglZCkuLmguLi4uCiAgICAzMzEwOiAwMCA1QyAyRSA1RiA0NyA1MCA0NSA1NyA0MSA0
QiAzMSA2OCBBMCA0NyAwNCA1QiAgLlwuX0dQRVdBSzFoLkcuWwogICAgMzMyMDogMTIgNUMgMkUg
NUYgNDcgNTAgNDUgNTcgNDEgNEIgMzIgMDAgNEQgMzQgMzYgMzAgIC5cLl9HUEVXQUsyLk00NjAK
ICAgIDMzMzA6IDBEIDIwIDIwIDIwIDIwIDRCIDQ1IDUyIDJEIDQxIDUzIDRDIDJEIDQzIDYxIDZD
ICAuICAgIEtFUi1BU0wtQ2FsCiAgICAzMzQwOiA2QyAyMCA1QyA1RiA0NyA1MCA0NSAyRSA1NyA0
MSA0QiAzMiAyMCAyOCAyNSA2NCAgbCBcX0dQRS5XQUsyICglZAogICAgMzM1MDogMjkgMEEgMDAg
NjggMDAgMDAgMDAgMDAgMDAgNUMgMkUgNUYgNDcgNTAgNDUgNTcgICkuLmguLi4uLlwuX0dQRVcK
ICAgIDMzNjA6IDQxIDRCIDMyIDY4IEEwIDQ3IDA0IDVCIDEyIDVDIDJFIDVGIDQ3IDUwIDQ1IDU3
ICBBSzJoLkcuWy5cLl9HUEVXCiAgICAzMzcwOiA0MSA0QiAzMyAwMCA0RCAzNCAzNiAzMCAwRCAy
MCAyMCAyMCAyMCA0QiA0NSA1MiAgQUszLk00NjAuICAgIEtFUgogICAgMzM4MDogMkQgNDEgNTMg
NEMgMkQgNDMgNjEgNkMgNkMgMjAgNUMgNUYgNDcgNTAgNDUgMkUgIC1BU0wtQ2FsbCBcX0dQRS4K
ICAgIDMzOTA6IDU3IDQxIDRCIDMzIDIwIDI4IDI1IDY0IDI5IDBBIDAwIDY4IDAwIDAwIDAwIDAw
ICBXQUszICglZCkuLmguLi4uCiAgICAzM0EwOiAwMCA1QyAyRSA1RiA0NyA1MCA0NSA1NyA0MSA0
QiAzMyA2OCBBMCA0NiAwNCA1QiAgLlwuX0dQRVdBSzNoLkYuWwogICAgMzNCMDogMTIgNUMgMkUg
NUYgNTMgNDIgNUYgNEYgNTcgNDEgNEIgMDAgNEQgMzQgMzYgMzAgIC5cLl9TQl9PV0FLLk00NjAK
ICAgIDMzQzA6IDBEIDIwIDIwIDIwIDIwIDRCIDQ1IDUyIDJEIDQxIDUzIDRDIDJEIDQzIDYxIDZD
ICAuICAgIEtFUi1BU0wtQ2FsCiAgICAzM0QwOiA2QyAyMCA1QyA1RiA1MyA0MiAyRSA0RiA1NyA0
MSA0QiAyMCAyOCAyNSA2NCAyOSAgbCBcX1NCLk9XQUsgKCVkKQogICAgMzNFMDogMEEgMDAgNjgg
MDAgMDAgMDAgMDAgMDAgNUMgMkUgNUYgNTMgNDIgNUYgNEYgNTcgIC4uaC4uLi4uXC5fU0JfT1cK
ICAgIDMzRjA6IDQxIDRCIDY4IDREIDMwIDMwIDMwIDBCIEVBIDBEIDE0IDEyIDREIDMwIDMxIDM5
ICBBS2hNMDAwLi4uLi5NMDE5CiAgICAzNDAwOiAwQyBBNCA0RCAzMCAzMSAzNyA2OCA2OSA2QSA2
QiAwMCAwQSAyMCAxNCAxMiA0RCAgLi5NMDE3aGlqay4uIC4uTQogICAgMzQxMDogMzAgMzIgMzAg
MEQgNEQgMzAgMzEgMzggNjggNjkgNkEgNkIgMDAgMEEgMjAgNkMgIDAyMC5NMDE4aGlqay4uIGwK
ICAgIDM0MjA6IDE0IDQ3IDBBIDREIDMwIDMyIDMxIDBDIDcyIDREIDMwIDM4IDMzIDc5IDY4IDBB
ICAuRy5NMDIxLnJNMDgzeWguCiAgICAzNDMwOiAxNCAwMCA2MCA3MiA2MCA3OSA2OSAwQSAwRiAw
MCA2MCA3MiA2MCA3OSA2QSAwQSAgLi5gcmB5aS4uLmByYHlqLgogICAgMzQ0MDogMEMgMDAgNjAg
NzIgMEEgRTAgNjAgNjAgNUIgODAgNTYgNDEgNTIgNEQgMDAgNjAgIC4uYHIuLmBgWy5WQVJNLmAK
ICAgIDM0NTA6IDBBIDA4IDVCIDgxIDBEIDU2IDQxIDUyIDREIDAzIDAwIDAwIDU2IDQxIDUyIDMx
ICAuLlsuLlZBUk0uLi5WQVIxCiAgICAzNDYwOiAyMCA1QiA4NyAxMiA1NiA0MSA1MiA0RCA1NiA0
MSA1MiAzMSA2QiAwMyAwMCAyMCAgIFsuLlZBUk1WQVIxay4uIAogICAgMzQ3MDogNTYgNDEgNTIg
MzIgMjAgNzAgNTYgNDEgNTIgMzIgNjAgNEQgMzQgMzYgMzAgMEQgIFZBUjIgcFZBUjJgTTQ2MC4K
ICAgIDM0ODA6IDIwIDIwIDRCIDQ1IDUyIDJEIDQxIDUzIDRDIDJEIDQzIDcwIDZEIDUyIDY1IDYx
ICAgIEtFUi1BU0wtQ3BtUmVhCiAgICAzNDkwOiA2NCA1MCA2MyA2OSA2NSA1MiA2NSA2NyA2OSA3
MyA3NCA2NSA3MiAyMCAyMCAyOCAgZFBjaWVSZWdpc3RlciAgKAogICAgMzRBMDogMzAgNzggMjUg
NTggMkMgMjAgMzAgNzggMjUgNTggMkMgMjAgMzAgNzggMjUgNTggIDB4JVgsIDB4JVgsIDB4JVgK
ICAgIDM0QjA6IDJDIDIwIDMwIDc4IDI1IDU4IDI5IDIwIDNEIDIwIDMwIDc4IDI1IDU4IDBBIDAw
ICAsIDB4JVgpID0gMHglWC4uCiAgICAzNEMwOiA2OCA2OSA2QSA2QiA2MCAwMCBBNCA2MCAxNCA0
NCAwQSA0RCAzMCAzMiAzMiAwRCAgaGlqa2AuLmAuRC5NMDIyLgogICAgMzREMDogNEQgMzQgMzYg
MzAgMEQgMjAgMjAgNEIgNDUgNTIgMkQgNDEgNTMgNEMgMkQgNDMgIE00NjAuICBLRVItQVNMLUMK
ICAgIDM0RTA6IDcwIDZEIDU3IDcyIDY5IDc0IDY1IDUwIDYzIDY5IDY1IDUyIDY1IDY3IDY5IDcz
ICBwbVdyaXRlUGNpZVJlZ2lzCiAgICAzNEYwOiA3NCA2NSA3MiAyMCAyOCAzMCA3OCAyNSA1OCAy
QyAyMCAzMCA3OCAyNSA1OCAyQyAgdGVyICgweCVYLCAweCVYLAogICAgMzUwMDogMjAgMzAgNzgg
MjUgNTggMkMgMjAgMzAgNzggMjUgNTggMkMgMjAgMzAgNzggMjUgICAweCVYLCAweCVYLCAweCUK
ICAgIDM1MTA6IDU4IDI5IDBBIDAwIDY4IDY5IDZBIDZCIDZDIDAwIDcyIDREIDMwIDM4IDMzIDc5
ICBYKS4uaGlqa2wuck0wODN5CiAgICAzNTIwOiA2OCAwQSAxNCAwMCA2MCA3MiA2MCA3OSA2OSAw
QSAwRiAwMCA2MCA3MiA2MCA3OSAgaC4uLmByYHlpLi4uYHJgeQogICAgMzUzMDogNkEgMEEgMEMg
MDAgNjAgNzIgMEEgRTAgNjAgNjAgNUIgODAgNTYgNDEgNTIgNEQgIGouLi5gci4uYGBbLlZBUk0K
ICAgIDM1NDA6IDAwIDYwIDBBIDA4IDVCIDgxIDBEIDU2IDQxIDUyIDREIDAzIDAwIDAwIDU2IDQx
ICAuYC4uWy4uVkFSTS4uLlZBCiAgICAzNTUwOiA1MiAzMSAyMCA1QiA4NyAxMiA1NiA0MSA1MiA0
RCA1NiA0MSA1MiAzMSA2QiAwMyAgUjEgWy4uVkFSTVZBUjFrLgogICAgMzU2MDogMDAgMjAgNTYg
NDEgNTIgMzIgMjAgNzAgNkMgNTYgNDEgNTIgMzIgMTQgMjAgNEQgIC4gVkFSMiBwbFZBUjIuIE0K
ICAgIDM1NzA6IDMwIDMyIDMzIDBCIDREIDMwIDMxIDM4IDY4IDY5IDZBIDBBIDcwIDBBIDAzIDAx
ICAwMjMuTTAxOGhpai5wLi4uCiAgICAzNTgwOiAwMCA0RCAzMCAzMSAzOCA2OCA2OSA2QSAwQSA3
MCAwQSAxMyAwMSAwMSAxNCAyMiAgLk0wMThoaWoucC4uLi4uIgogICAgMzU5MDogNEQgMzAgMzIg
MzQgMEIgNzAgNEQgMzAgMzEgMzkgNjggNjkgNkEgMEIgMjggMDEgIE0wMjQucE0wMTloaWouKC4K
ICAgIDM1QTA6IDYwIEEwIDBCIDdCIDYwIDBDIDAwIDAwIDAyIDAwIDAwIEE0IEZGIEExIDAzIEE0
ICBgLi57YC4uLi4uLi4uLi4uCiAgICAzNUIwOiAwMCAxNCAzQiA0RCAzMCAzMiAzNiAwQiA3MCA0
RCAzMCAzMiAzMSA2OCA2OSA2QSAgLi47TTAyNi5wTTAyMWhpagogICAgMzVDMDogMEEgQTIgNjAg
N0IgNjAgMEUgRjggRkYgRkYgRkYgRkYgRkYgRkYgRkYgNjAgN0EgIC4uYHtgLi4uLi4uLi4uYHoK
ICAgIDM1RDA6IDYwIDBBIDA0IDYxIDdCIDYxIDBBIDA3IDYxIDdEIDYwIDYxIDYwIDdEIDYwIDBC
ICBgLi5he2EuLmF9YGFgfWAuCiAgICAzNUUwOiAwMCAwMSA2MCA0RCAzMCAzMiAzMiA2OCA2OSA2
QSAwQSBBMiA2MCAxNCA0RiAwNiAgLi5gTTAyMmhpai4uYC5PLgogICAgMzVGMDogNEQgMzAgMzIg
MzUgMEMgNEQgMzQgMzIgMzkgNjggNjkgNkEgMEEgNjggMEEgMDUgIE0wMjUuTTQyOWhpai5oLi4K
ICAgIDM2MDA6IDAxIDAwIEEwIDBGIDZCIDREIDM0IDMyIDM5IDY4IDY5IDZBIDBBIDg4IDAwIDBB
ICAuLi4ua000MjloaWouLi4uCiAgICAzNjEwOiAwNCA2QiA0RCAzNCAzMiAzOSA2OCA2OSA2QSAw
QSA2OCAwQSAwNSAwMSAwMSA3MCAgLmtNNDI5aGlqLmguLi4ucAogICAgMzYyMDogMEEgNjQgNjEg
NzAgMDEgNjIgQTIgMUYgOTAgNjEgNjIgNUIgMjIgMDEgNzAgNEQgIC5kYXAuYi4uLmFiWyIucE0K
ICAgIDM2MzA6IDM0IDMzIDMwIDY4IDY5IDZBIDYzIEEwIDA5IDdCIDYzIDBCIDAwIDA4IDAwIDc2
ICA0MzBoaWpjLi57Yy4uLi52CiAgICAzNjQwOiA2MSBBMSAwNCA3MCAwMCA2MiA0RCAzNCAzMiAz
OSA2OCA2OSA2QSAwQSA2OCAwQSAgYS4ucC5iTTQyOWhpai5oLgogICAgMzY1MDogMDUgMDEgMDAg
QTAgMDUgOTIgNjIgQTQgRkYgQTEgMDMgQTQgMDAgMTQgMTcgNEQgIC4uLi4uLmIuLi4uLi4uLk0K
ICAgIDM2NjA6IDM0IDMzIDMwIDBCIDcwIDREIDMwIDMxIDM3IDY4IDY5IDZBIDBBIDY4IDBBIDEw
ICA0MzAucE0wMTdoaWouaC4uCiAgICAzNjcwOiAwQSAxMCA2MCBBNCA2MCAxNCAzRiA0RCAzMCAz
MSAzNyAwRSA3MCA0RCAzNiAzNCAgLi5gLmAuP00wMTcucE02NAogICAgMzY4MDogMzUgNjggNjkg
NkEgNjAgQTAgMjEgOTMgNjAgMDAgNzAgMEMgRkYgRkYgRkYgN0YgIDVoaWpgLiEuYC5wLi4uLi4K
ICAgIDM2OTA6IDYzIDdEIDYzIDBDIDAwIDAwIDAwIDgwIDYzIDdCIDdBIDYzIDZDIDAwIDdBIDYz
ICBjfWMuLi4uLmN7emNsLnpjCiAgICAzNkEwOiA3NCAwQSAyMCA2RCAwMCAwMCA2MSBBMSAwQiA3
MCA0RCAzMCAzMSAzMyA2MCA2QiAgdC4gbS4uYS4ucE0wMTNgawogICAgMzZCMDogNkMgNkQgNjEg
QTQgNjEgMTQgM0IgNEQgMzAgMzEgMzggMEYgNzAgNEQgMzYgMzQgIGxtYS5hLjtNMDE4LnBNNjQK
ICAgIDM2QzA6IDM1IDY4IDY5IDZBIDYwIEEwIDJCIDkyIDkzIDYwIDAwIDcwIDBDIEZGIEZGIEZG
ICA1aGlqYC4rLi5gLnAuLi4uCiAgICAzNkQwOiA3RiA2MyA3RCA2MyAwQyAwMCAwMCAwMCA4MCA2
MyBBMCAxNiA5MiA5MyA0RCAzMCAgLmN9Yy4uLi4uYy4uLi5NMAogICAgMzZFMDogMzEgMzMgNjAg
MDAgMDAgMEEgMjAgNjMgNEQgMzAgMzEgMzQgNjAgNkIgNkMgNkQgIDEzYC4uLiBjTTAxNGBrbG0K
ICAgIDM2RjA6IDZFIDE0IDM0IDREIDM0IDMyIDM4IDBFIDcwIDREIDM2IDM0IDM1IDY4IDY5IDZB
ICBuLjRNNDI4LnBNNjQ1aGlqCiAgICAzNzAwOiA2MCBBMCAxNiA5MyA2MCAwMCA3MCAwQSBGRiA2
MyA3QiA3QSA2MyA2QyAwMCA3QSAgYC4uLmAucC4uY3t6Y2wuegogICAgMzcxMDogNjMgNzQgMEEg
MDggNkQgMDAgMDAgNjEgQTEgMEIgNzAgNEQgMzAgMzEgMzEgNjAgIGN0Li5tLi5hLi5wTTAxMWAK
ICAgIDM3MjA6IDZCIDZDIDZEIDYxIEE0IDYxIDE0IDNCIDREIDM0IDMyIDM5IDBGIDcwIDREIDM2
ICBrbG1hLmEuO000MjkucE02CiAgICAzNzMwOiAzNCAzNSA2OCA2OSA2QSA2MCBBMCAyQiA5MiA5
MyA2MCAwMCA3MCAwQyBGRiBGRiAgNDVoaWpgLisuLmAucC4uLgogICAgMzc0MDogRkYgN0YgNjMg
N0QgNjMgMEMgMDAgMDAgMDAgODAgNjMgQTAgMTYgOTIgOTMgNEQgIC4uY31jLi4uLi5jLi4uLk0K
ICAgIDM3NTA6IDMwIDMxIDMzIDYwIDAwIDAwIDBBIDIwIDYzIDREIDMwIDMxIDMyIDYwIDZCIDZD
ICAwMTNgLi4uIGNNMDEyYGtsCiAgICAzNzYwOiA2RCA2RSAxNCA0RSAwNCA0RCAzMiAzNiAzNSAw
QiA3MCAwMCA2MCA3MCA0RCAzNiAgbW4uTi5NMjY1LnAuYHBNNgogICAgMzc3MDogMzQgMzUgNjgg
NjkgNkEgNjEgNzAgNEQgMzYgMzQgMzYgNjEgMEEgMTAgNjIgQTAgIDQ1aGlqYXBNNjQ2YS4uYi4K
ICAgIDM3ODA6IDJGIDkyIDkzIDYyIDAwIDcwIDREIDMwIDMxIDMzIDYxIDcyIDYyIDBBIDBDIDAw
ICAvLi5iLnBNMDEzYXJiLi4uCiAgICAzNzkwOiAwQSAxMiAwMSA2MyA3MCA0RCAzMCAzMSAzMyA2
MSA3MiA2MiAwQSAxMCAwMCAwQSAgLi4uY3BNMDEzYXJiLi4uLgogICAgMzdBMDogMDggMDEgNjQg
QTAgMEIgOTAgOTMgNjMgMDEgOTMgNjQgMDEgNzAgMDEgNjAgQTQgIC4uZC4uLi5jLi5kLnAuYC4K
ICAgIDM3QjA6IDYwIDE0IDMzIDREIDMwIDMzIDMzIDBCIDcwIDAwIDYwIDcwIDREIDM2IDM0IDM1
ICBgLjNNMDMzLnAuYHBNNjQ1CiAgICAzN0MwOiA2OCA2OSA2QSA2MSA3MCA0RCAzNiAzNCAzNiA2
MSAwQSAxMCA2MiBBMCAxNSA5MiAgaGlqYXBNNjQ2YS4uYi4uLgogICAgMzdEMDogOTMgNjIgMDAg
NzAgNEQgMzAgMzEgMzMgNjEgNzIgNjIgMEEgMEMgMDAgMEEgMEEgIC5iLnBNMDEzYXJiLi4uLi4K
ICAgIDM3RTA6IDBBIDAyIDYwIEE0IDYwIDE0IDQyIDA3IDREIDMwIDMyIDM3IDBCIDcwIDAwIDYw
ICAuLmAuYC5CLk0wMjcucC5gCiAgICAzN0YwOiA3MCA0RCAzNiAzNCAzNSA2OCA2OSA2QSA2MSA3
MCA0RCAzNiAzNCAzNiA2MSAwQSAgcE02NDVoaWphcE02NDZhLgogICAgMzgwMDogMTAgNjIgQTAg
MTQgOTIgOTMgNjIgMDAgNzAgNEQgMzAgMzEgMzMgNjEgNzIgNjIgIC5iLi4uLmIucE0wMTNhcmIK
ICAgIDM4MTA6IDBBIDEwIDAwIDAwIDBBIDAyIDYwIDREIDM0IDM2IDMwIDBEIDIwIDIwIDRCIDQ1
ICAuLi4uLi5gTTQ2MC4gIEtFCiAgICAzODIwOiA1MiAyRCA0MSA1MyA0QyAyRCA0MyA3MCA2RCA0
NyA2NSA3NCA1MCA2MyA2OSA2NSAgUi1BU0wtQ3BtR2V0UGNpZQogICAgMzgzMDogNDEgNzMgNzAg
NkQgMjAgMjggMzAgNzggMjUgNTggMkMgMjAgMzAgNzggMjUgNTggIEFzcG0gKDB4JVgsIDB4JVgK
ICAgIDM4NDA6IDJDIDIwIDMwIDc4IDI1IDU4IDI5IDIwIDNEIDIwIDMwIDc4IDI1IDU4IDBBIDAw
ICAsIDB4JVgpID0gMHglWC4uCiAgICAzODUwOiA2OCA2OSA2QSA2MCAwMCAwMCBBNCA2MCAxNCA0
RiAwNiA0RCAzMCAzMiAzOCAwQyAgaGlqYC4uLmAuTy5NMDI4LgogICAgMzg2MDogNEQgMzQgMzYg
MzAgMEQgMjAgMjAgNEIgNDUgNTIgMkQgNDEgNTMgNEMgMkQgNDMgIE00NjAuICBLRVItQVNMLUMK
ICAgIDM4NzA6IDcwIDZEIDUzIDY1IDc0IDUwIDYzIDY5IDY1IDQxIDczIDcwIDZEIDIwIDI4IDMw
ICBwbVNldFBjaWVBc3BtICgwCiAgICAzODgwOiA3OCAyNSA1OCAyQyAyMCAzMCA3OCAyNSA1OCAy
QyAyMCAzMCA3OCAyNSA1OCAyQyAgeCVYLCAweCVYLCAweCVYLAogICAgMzg5MDogMjAgMzAgNzgg
MjUgNTggMjkgMEEgMDAgNjggNjkgNkEgNkIgMDAgMDAgNzAgNEQgICAweCVYKS4uaGlqay4ucE0K
ICAgIDM4QTA6IDM2IDM0IDM1IDY4IDY5IDZBIDYxIDcwIDREIDM2IDM0IDM2IDYxIDBBIDEwIDYy
ICA2NDVoaWphcE02NDZhLi5iCiAgICAzOEIwOiBBMCAxNyA5MiA5MyA2MiAwMCA0RCAzMCAzMSAz
NCA2MSA3MiA2MiAwQSAxMCAwMCAgLi4uLmIuTTAxNGFyYi4uLgogICAgMzhDMDogMDAgMEEgMDIg
N0IgNkIgMEEgMDMgMDAgMTQgNEQgMTQgNEQgMzEgMzEgMzQgMEMgIC4uLntrLi4uLk0uTTExNC4K
ICAgIDM4RDA6IDcwIDAwIDY3IEEwIDQ4IDBFIDkyIDREIDMwIDMwIDMxIDY4IDY5IDA4IDREIDMx
ICBwLmcuSC4uTTAwMWhpLk0xCiAgICAzOEUwOiAzMSAzNSAxMSAwMyAwQSAwNSA4QiA0RCAzMSAz
MSAzNSAwMCA0RCAzMSAzMSAzNiAgMTUuLi4uLk0xMTUuTTExNgogICAgMzhGMDogNUIgMTMgNEQg
MzEgMzEgMzUgMEEgMTAgMEEgMDMgNEQgMzEgMzEgMzcgNUIgMTMgIFsuTTExNS4uLi5NMTE3Wy4K
ICAgIDM5MDA6IDREIDMxIDMxIDM1IDBBIDEzIDBBIDA1IDREIDMxIDMxIDM4IDhDIDREIDMxIDMx
ICBNMTE1Li4uLk0xMTguTTExCiAgICAzOTEwOiAzNSAwQSAwMyA0RCAzMSAzMSAzOSA4QyA0RCAz
MSAzMSAzNSAwQSAwNCA0RCAzMSAgNS4uTTExOS5NMTE1Li5NMQogICAgMzkyMDogMzIgMzAgNzAg
MEEgMDUgNEQgMzEgMzEgMzYgNzAgMDAgNEQgMzEgMzEgMzkgNzAgIDIwcC4uTTExNnAuTTExOXAK
ICAgIDM5MzA6IDY4IDREIDMxIDMxIDM4IDcwIDY5IDREIDMxIDMxIDM3IEEwIDIwIDkzIDZBIDAw
ICBoTTExOHBpTTExNy4gLmouCiAgICAzOTQwOiBBMCAxQiA5MiA5MyA2QiAwMSA3MCAwMCA0RCAz
MSAzMiAzMCA1QyAyRSA1RiA1MyAgLi4uLmsucC5NMTIwXC5fUwogICAgMzk1MDogNDIgNUYgNDEg
NEMgNDkgNDIgMEEgMDYgNEQgMzEgMzEgMzUgQTEgNEYgMDUgQTAgIEJfQUxJQi4uTTExNS5PLi4K
ICAgIDM5NjA6IDFCIDkyIDkzIDZCIDAxIDcwIDAxIDREIDMxIDMyIDMwIDVDIDJFIDVGIDUzIDQy
ICAuLi5rLnAuTTEyMFwuX1NCCiAgICAzOTcwOiA1RiA0MSA0QyA0OSA0MiAwQSAwNiA0RCAzMSAz
MSAzNSA3MCA0RCAzMCAzMSAzNyAgX0FMSUIuLk0xMTVwTTAxNwogICAgMzk4MDogMDAgNjggNjkg
MEEgMTkgMDAgMEEgMDggNjAgQTAgMzIgOTAgOTIgOTMgNjAgMDAgIC5oaS4uLi4uYC4yLi4uYC4K
ICAgIDM5OTA6IDkyIDkzIDYwIDBBIEZGIDcwIDREIDMwIDMxIDM5IDYwIDAwIDAwIDAwIDYxIDcw
ICAuLmAuLnBNMDE5YC4uLmFwCiAgICAzOUEwOiAwQyBGRiBGRiBGRiA3RiA2MiA3RCA2MiAwQyAw
MCAwMCAwMCA4MCA2MiBBMCAwRCAgLi4uLi5ifWIuLi4uLmIuLgogICAgMzlCMDogOTAgOTIgOTMg
NjEgMDAgOTIgOTMgNjEgNjIgNzAgMDEgNjcgQTEgNDcgMDUgQTAgIC4uLmEuLi5hYnAuZy5HLi4K
ICAgIDM5QzA6IDBBIDkzIDZBIDAwIDREIDMwIDMwIDMyIDAxIDY5IEExIDQ5IDA0IDREIDMwIDMw
ICAuLmouTTAwMi5pLkkuTTAwCiAgICAzOUQwOiAzMiAwMCA2OSA3MCA0RCAzMCAzMSAzNyAwMCA2
OCA2OSAwQSAxOSAwMCAwQSAwOCAgMi5pcE0wMTcuaGkuLi4uLgogICAgMzlFMDogNjAgQTAgMzIg
OTAgOTIgOTMgNjAgMDAgOTIgOTMgNjAgMEEgRkYgNzAgNEQgMzAgIGAuMi4uLmAuLi5gLi5wTTAK
ICAgIDM5RjA6IDMxIDM5IDYwIDAwIDAwIDAwIDYxIDcwIDBDIEZGIEZGIEZGIDdGIDYyIDdEIDYy
ICAxOWAuLi5hcC4uLi4uYn1iCiAgICAzQTAwOiAwQyAwMCAwMCAwMCA4MCA2MiBBMCAwRCA5MCA5
MiA5MyA2MSAwMCA5MiA5MyA2MSAgLi4uLi5iLi4uLi5hLi4uYQogICAgM0ExMDogNjIgNzAgMDEg
NjcgQTQgNjcgMTQgNDUgMEIgNEQgMzIgMzQgMzggMDkgQTAgMkIgIGJwLmcuZy5FLk0yNDguLisK
ICAgIDNBMjA6IDkzIDREIDMwIDM4IDM1IDBBIDA4IEEwIDEyIDkzIDY4IDAwIEE0IDREIDMwIDMx
ICAuTTA4NS4uLi4uaC4uTTAxCiAgICAzQTMwOiAzNyAwMCAwQSAwNyAwMSAwQSAxOSAwMCAwQSAw
OCBBMSAwRiBBNCA0RCAzMCAzMSAgNy4uLi4uLi4uLi4uLk0wMQogICAgM0E0MDogMzcgMDAgMEEg
MDggMDEgMEEgMTkgMDAgMEEgMDggQTEgNDEgMDggQTAgNEEgMDQgIDcuLi4uLi4uLi4uQS4uSi4K
ICAgIDNBNTA6IDkyIDk1IDREIDMwIDM4IDM1IDBBIDBCIEEwIDFBIDkyIDk1IDREIDMwIDM4IDM1
ICAuLk0wODUuLi4uLi5NMDg1CiAgICAzQTYwOiAwQSAwRCBBNCA0RCAzMCAzMSAzNyAwMCAwQSAw
OCA3MiA2OCAwMSAwMCAwQSAxOSAgLi4uTTAxNy4uLnJoLi4uLgogICAgM0E3MDogMDAgMEEgMDgg
QTEgMjQgQTAgMTIgOTMgNjggMDAgQTQgNEQgMzAgMzEgMzcgMDAgIC4uLi4kLi4uaC4uTTAxNy4K
ICAgIDNBODA6IDBBIDA3IDAxIDBBIDE5IDAwIDBBIDA4IEExIDBGIEE0IDREIDMwIDMxIDM3IDAw
ICAuLi4uLi4uLi4uLk0wMTcuCiAgICAzQTkwOiAwQSAwOCA2OCAwQSAxOSAwMCAwQSAwOCBBMSAz
MyBBMCAyRCA5MiA5NSA0RCAzMCAgLi5oLi4uLi4uMy4tLi5NMAogICAgM0FBMDogMzggMzUgMEEg
MDkgQTAgMTIgOTMgNjggMDAgQTQgNEQgMzAgMzEgMzcgMDAgMEEgIDg1Li4uLi5oLi5NMDE3Li4K
ICAgIDNBQjA6IDA4IDAxIDBBIDE5IDAwIDBBIDA4IEExIDEwIEE0IDREIDMwIDMxIDM3IDAwIDBB
ICAuLi4uLi4uLi4uTTAxNy4uCiAgICAzQUMwOiAwOCAwQSAwMiAwQSAxOSAwMCAwQSAwOCBBMSAw
MyBBNCAwMCAxNCA0OSAxNSA0RCAgLi4uLi4uLi4uLi4uLkkuTQogICAgM0FEMDogMzQgMzAgMzEg
MEIgN0IgNEQgMzQgMzMgMzAgNjggNjkgNkEgMEEgMEYgNjAgQTAgIDQwMS57TTQzMGhpai4uYC4K
ICAgIDNBRTA6IDBDIDkxIDkzIDYwIDBBIDBGIDkzIDYwIDAwIEE0IDBBIEZGIEEwIDI0IDkwIDky
ICAuLi5gLi4uYC4uLi4uJC4uCiAgICAzQUYwOiA5NSA0RCAzMCAzOCAzNSAwQSAwQiA5MiA5NCA0
RCAzMCAzOCAzNSAwQSAwQyBBMCAgLk0wODUuLi4uTTA4NS4uLgogICAgM0IwMDogMEIgOTIgOTQg
NjggMEEgMDMgNzQgMEEgMDYgNjggNjMgQTEgMDUgNzAgMEEgMDYgIC4uLmguLnQuLmhjLi5wLi4K
ICAgIDNCMTA6IDYzIEExIDA1IDcwIDBBIDAzIDYzIDcyIDBDIDAwIDEwIDAwIDE0IDc5IDYzIDBB
ICBjLi5wLi5jci4uLi4ueWMuCiAgICAzQjIwOiAxNCAwMCA2MyA3QiA2OSAwQSAxRiA2MCA3RCA3
OSA2MCAwQSAwMyAwMCA3QiA2QSAgLi5je2kuLmB9eWAuLi57agogICAgM0IzMDogMEEgMDcgMDAg
NjAgNzAgMDAgNjEgQTAgMTYgOTAgOTIgOTUgNEQgMzAgMzggMzUgIC4uLmBwLmEuLi4uLk0wODUK
ICAgIDNCNDA6IDBBIDA5IDkyIDk0IDREIDMwIDM4IDM1IDBBIDBBIDcwIDBBIDA5IDYyIEExIDRD
ICAuLi4uTTA4NS4ucC4uYi5MCiAgICAzQjUwOiAwOSBBMCAxNiA5MCA5MiA5NSA0RCAzMCAzOCAz
NSAwQSAwQiA5MiA5NCA0RCAzMCAgLi4uLi4uTTA4NS4uLi5NMAogICAgM0I2MDogMzggMzUgMEEg
MEMgNzAgMEEgMTYgNjIgQTEgNDIgMDggQTAgMEMgOTMgNEQgMzAgIDg1Li5wLi5iLkIuLi4uTTAK
ICAgIDNCNzA6IDM4IDM1IDBBIDBEIDcwIDBBIDBEIDYyIEExIDQyIDA3IEEwIDBDIDkzIDREIDMw
ICA4NS4ucC4uYi5CLi4uLk0wCiAgICAzQjgwOiAzOCAzNSAwQSAwRSA3MCAwQSAwQSA2MiBBMSA0
MiAwNiBBMCAwQyA5MyA0RCAzMCAgODUuLnAuLmIuQi4uLi5NMAogICAgM0I5MDogMzggMzUgMEEg
MEYgNzAgMEEgMTAgNjIgQTEgNDIgMDUgQTAgMEMgOTMgNEQgMzAgIDg1Li5wLi5iLkIuLi4uTTAK
ICAgIDNCQTA6IDM4IDM1IDBBIDEwIDcwIDBBIDE1IDYyIEExIDQyIDA0IEEwIDBDIDkzIDREIDMw
ICA4NS4ucC4uYi5CLi4uLk0wCiAgICAzQkIwOiAzOCAzNSAwQSAxMiA3MCAwQSAxNCA2MiBBMSAz
MiBBMCAwQyA5MyA0RCAzMCAzOCAgODUuLnAuLmIuMi4uLk0wOAogICAgM0JDMDogMzUgMEEgMTMg
NzAgMEEgMEQgNjIgQTEgMjMgQTAgMEMgOTMgNEQgMzAgMzggMzUgIDUuLnAuLmIuIy4uLk0wODUK
ICAgIDNCRDA6IDBBIDE0IDcwIDBBIDEyIDYyIEExIDE0IEEwIDBDIDkzIDREIDMwIDM4IDM1IDBB
ICAuLnAuLmIuLi4uLk0wODUuCiAgICAzQkUwOiAxNSA3MCAwQSAxMiA2MiBBMSAwNSA3MCAwQSAx
MiA2MiA3MCA0RCAzMiAzNCAzOSAgLnAuLmIuLnAuLmJwTTI0OQogICAgM0JGMDogMDAgMDAgMDAg
NzIgNzcgNjEgMEEgMDQgMDAgNjMgMDAgNjQgQTIgMUMgOTAgOTUgIC4uLnJ3YS4uLmMuZC4uLi4K
ICAgIDNDMDA6IDYxIDYyIDkyIDkzIDY0IDYwIDc1IDYxIDcwIDREIDMyIDM0IDM5IDAwIDAwIDAw
ICBhYi4uZGB1YXBNMjQ5Li4uCiAgICAzQzEwOiA3MiA3NyA2MSAwQSAwNCAwMCA2MyAwMCA2NCBB
MCAwNyA5MiA5NCA2MSA2MiBBNCAgcndhLi4uYy5kLi4uLmFiLgogICAgM0MyMDogNjEgQTEgMDQg
QTQgMEEgRkYgMTQgNDUgMUMgNEQgMzQgMzcgMzEgMEIgQTAgMjQgIGEuLi4uLi5FLk00NzEuLiQK
ICAgIDNDMzA6IDkwIDkyIDk1IDREIDMwIDM4IDM1IDBBIDBCIDkyIDk0IDREIDMwIDM4IDM1IDBB
ICAuLi5NMDg1Li4uLk0wODUuCiAgICAzQzQwOiAwQyBBMCAwQiA5MiA5NCA2OCAwQSAwMyA3NCAw
QSAwNCA2OCA2NSBBMSAwNSA3MCAgLi4uLi5oLi50Li5oZS4ucAogICAgM0M1MDogMEEgMDQgNjUg
QTEgMDUgNzIgNjggMDEgNjUgOTkgNjkgNjQgQTAgMjIgOTAgOTIgIC4uZS4ucmguZS5pZC4iLi4K
ICAgIDNDNjA6IDk1IDREIDMwIDM4IDM1IDBBIDBEIDkyIDk0IDREIDMwIDM4IDM1IDBBIDBFIEEw
ICAuTTA4NS4uLi5NMDg1Li4uCiAgICAzQzcwOiAwRiA5MiA5NSA2NCAwQSAwMyA3NCA2NCAwQSAw
MyA2NCA3MiA2NSAwMSA2NSBBMSAgLi4uZC4udGQuLmRyZS5lLgogICAgM0M4MDogNDQgMTQgQTAg
M0QgOTMgNEQgMzAgMzggMzUgMEEgMEYgQTAgMTAgOTIgOTUgNjQgIEQuLj0uTTA4NS4uLi4uLmQK
ICAgIDNDOTA6IDBBIDBDIDc0IDY0IDBBIDBDIDY0IDcyIDY1IDBBIDAzIDY1IEExIDIzIEEwIDBG
ICAuLnRkLi5kcmUuLmUuIy4uCiAgICAzQ0EwOiA5MyA2NCAwQSAwQiA3NCA2NCAwQSAwQiA2NCA3
MiA2NSAwQSAwMiA2NSBBMSAxMSAgLmQuLnRkLi5kcmUuLmUuLgogICAgM0NCMDogQTAgMEYgOTIg
OTUgNjQgMEEgMDUgNzQgNjQgMEEgMDUgNjQgNzIgNjUgMDEgNjUgIC4uLi5kLi50ZC4uZHJlLmUK
ICAgIDNDQzA6IEExIDQzIDEwIEEwIDNFIDkzIDREIDMwIDM4IDM1IDBBIDEyIEEwIDEwIDkyIDk1
ICAuQy4uPi5NMDg1Li4uLi4uCiAgICAzQ0QwOiA2NCAwQSAxMCA3NCA2NCAwQSAxMCA2NCA3MiA2
NSAwQSAwMyA2NSBBMSAyNCBBMCAgZC4udGQuLmRyZS4uZS4kLgogICAgM0NFMDogMTAgOTIgOTUg
NjQgMEEgMEMgNzQgNjQgMEEgMEMgNjQgNzIgNjUgMEEgMDIgNjUgIC4uLmQuLnRkLi5kcmUuLmUK
ICAgIDNDRjA6IEExIDExIEEwIDBGIDkyIDk1IDY0IDBBIDA2IDc0IDY0IDBBIDA2IDY0IDcyIDY1
ICAuLi4uLi5kLi50ZC4uZHJlCiAgICAzRDAwOiAwMSA2NSBBMSA0MSAwQyBBMCAxOCA5MyA0RCAz
MCAzOCAzNSAwQSAxMCBBMCAwRiAgLmUuQS4uLi5NMDg1Li4uLgogICAgM0QxMDogOTIgOTUgNjQg
MEEgMDkgNzQgNjQgMEEgMDkgNjQgNzIgNjUgMDEgNjUgQTEgNDUgIC4uZC4udGQuLmRyZS5lLkUK
ICAgIDNEMjA6IDBBIEEwIDE4IDkzIDREIDMwIDM4IDM1IDBBIDEzIEEwIDBGIDkyIDk1IDY0IDBB
ICAuLi4uTTA4NS4uLi4uLmQuCiAgICAzRDMwOiAwNSA3NCA2NCAwQSAwNSA2NCA3MiA2NSAwMSA2
NSBBMSA0OSAwOCBBMCAyQiA5MyAgLnRkLi5kcmUuZS5JLi4rLgogICAgM0Q0MDogNEQgMzAgMzgg
MzUgMEEgMTQgQTAgMTAgOTIgOTUgNjQgMEEgMDkgNzQgNjQgMEEgIE0wODUuLi4uLi5kLi50ZC4K
ICAgIDNENTA6IDA5IDY0IDcyIDY1IDBBIDAyIDY1IEExIDExIEEwIDBGIDkyIDk1IDY0IDBBIDAz
ICAuZHJlLi5lLi4uLi4uZC4uCiAgICAzRDYwOiA3NCA2NCAwQSAwMyA2NCA3MiA2NSAwMSA2NSBB
MSA0QSAwNSBBMCAyQiA5MyA0RCAgdGQuLmRyZS5lLkouLisuTQogICAgM0Q3MDogMzAgMzggMzUg
MEEgMTUgQTAgMTAgOTIgOTUgNjQgMEEgMDkgNzQgNjQgMEEgMDkgIDA4NS4uLi4uLmQuLnRkLi4K
ICAgIDNEODA6IDY0IDcyIDY1IDBBIDAyIDY1IEExIDExIEEwIDBGIDkyIDk1IDY0IDBBIDAzIDc0
ICBkcmUuLmUuLi4uLi5kLi50CiAgICAzRDkwOiA2NCAwQSAwMyA2NCA3MiA2NSAwMSA2NSBBMSAy
QiBBMCAyOSA5MiA5NSA2NCAwQSAgZC4uZHJlLmUuKy4pLi5kLgogICAgM0RBMDogMDggNzQgNjQg
MEEgMDggNjQgQTAgMTcgOTAgOTIgOTUgNEQgMzAgMzggMzUgMEEgIC50ZC4uZC4uLi4uTTA4NS4K
ICAgIDNEQjA6IDBCIDkyIDk0IDREIDMwIDM4IDM1IDBBIDBDIDcyIDY1IDBBIDA0IDY1IEExIDA1
ICAuLi5NMDg1Li5yZS4uZS4uCiAgICAzREMwOiA3MiA2NSAwMSA2NSA3MiAwQyAwMCAwMCAwMCAx
MSA3OSA2NSAwQSAxNCAwMCA2NiAgcmUuZXIuLi4uLnllLi4uZgogICAgM0REMDogNzIgNjYgNzkg
NkEgMEEgMTAgMDAgNjYgQTAgMTEgOTEgOTMgNkEgMDAgOTMgNkEgIHJmeWouLi5mLi4uLmouLmoK
ICAgIDNERTA6IDBBIDA0IDcyIDY2IDc5IDY0IDBBIDBDIDAwIDY2IEE0IDY2IDE0IDQ3IDFBIDRE
ICAuLnJmeWQuLi5mLmYuRy5NCiAgICAzREYwOiAzNCAzMCAzMiAwQiA3MCA0RCAzNCAzMCAzMSA2
OCA2OSA2QSA2NCBBMCA0NiAxOSAgNDAyLnBNNDAxaGlqZC5GLgogICAgM0UwMDogOTIgOTMgNjQg
MEEgRkYgQTAgM0YgOTAgOTIgOTUgNEQgMzAgMzggMzUgMEEgMDggIC4uZC4uLj8uLi5NMDg1Li4K
ICAgIDNFMTA6IDkyIDk0IDREIDMwIDM4IDM1IDBBIDBCIDcyIDREIDM0IDM3IDMxIDY4IDY0IDBB
ICAuLk0wODUuLnJNNDcxaGQuCiAgICAzRTIwOiAwOCAwQiA4OCAwMSA2NyA3MCA0RCAzMiAzNCAz
OSAwMCAwMCAwMCA2NyA2MCA3QiAgLi4uLmdwTTI0OS4uLmdgewogICAgM0UzMDogNjAgMEMgRkYg
REYgRkYgRkYgNjAgNEQgMzIgMzUgMzAgMDAgMDAgMDAgNjcgN0QgIGAuLi4uLmBNMjUwLi4uZ30K
ICAgIDNFNDA6IDYwIDBCIDAwIDIwIDAwIDdCIDREIDMwIDMxIDM5IDAwIDAwIDAwIDBBIDg0IDBD
ICBgLi4gLntNMDE5Li4uLi4uCiAgICAzRTUwOiBGRiBGQyAwMCBGRiA2MSA3RCA3OSA2OSAwQSAx
MyAwMCA3OSA2QSAwQSAxMCAwMCAgLi4uLmF9eWkuLi55ai4uLgogICAgM0U2MDogNjIgN0QgNjEg
NjIgNjEgNEQgMzAgMzIgMzAgMDAgMDAgMDAgMEEgODQgN0QgNjEgIGJ9YWJhTTAyMC4uLi4ufWEK
ICAgIDNFNzA6IDBCIDAwIDAxIDAwIDREIDMwIDMyIDMwIDAwIDAwIDAwIDBBIDg0IDdEIDYxIDBC
ICAuLi4uTTAyMC4uLi4ufWEuCiAgICAzRTgwOiAwMCAwMyAwMCBBMCA0MyAwNyA5MiA5NSA0RCAz
MCAzOCAzNSAwQSAwQyA3MCA0RCAgLi4uLkMuLi5NMDg1Li5wTQogICAgM0U5MDogMzAgMzEgMzkg
MDAgMDAgMDAgMEEgODQgNjMgNzAgMEIgRUEgNEUgNjUgNzAgNEQgIDAxOS4uLi4uY3AuLk5lcE0K
ICAgIDNFQTA6IDM0IDM1IDMzIDY2IDcwIDAwIDREIDM0IDM1IDMzIEEyIDQ2IDA0IDkwIDk0IDY1
ICA0NTNmcC5NNDUzLkYuLi5lCiAgICAzRUIwOiAwMCA5MiA5MyA3QiA2MyAwQiAwMCAwNCAwMCAw
QiAwMCAwNCA3MCA3NCA2NSAwMSAgLi4ue2MuLi4uLi4ucHRlLgogICAgM0VDMDogMDAgNjUgNUIg
MjEgMEEgNjMgQTAgMEYgOTMgN0IgNjUgMEIgRkYgMDMgMDAgMDAgIC5lWyEuYy4uLntlLi4uLi4K
ICAgIDNFRDA6IDcwIDY2IDREIDM0IDM1IDMzIDcwIDREIDMwIDMxIDM5IDAwIDAwIDAwIDBBIDg0
ICBwZk00NTNwTTAxOS4uLi4uCiAgICAzRUUwOiA2MyBBMCAwRiA5MyA3QiA2NSAwQiBGRiAwMyAw
MCAwMCA3MCAwMCA0RCAzNCAzNSAgYy4uLntlLi4uLi5wLk00NQogICAgM0VGMDogMzMgNzAgNjYg
NEQgMzQgMzUgMzMgNzIgNEQgMzQgMzcgMzEgNjggNjQgMEEgMDQgIDNwZk00NTNyTTQ3MWhkLi4K
ICAgIDNGMDA6IDBCIDk0IDAyIDY2IDcwIDREIDMyIDM0IDM5IDAwIDAwIDAwIDY2IDYzIDcwIDBC
ICAuLi5mcE0yNDkuLi5mY3AuCiAgICAzRjEwOiBFQSA0RSA2NSA3MCA0RCAzNCAzNSAzMyA2NCA3
MCAwMCA0RCAzNCAzNSAzMyBBMiAgLk5lcE00NTNkcC5NNDUzLgogICAgM0YyMDogNDMgMDQgOTAg
OTQgNjUgMDAgOTIgOTMgN0IgNjMgMEEgM0YgMDAgMEEgMUYgNzAgIEMuLi5lLi4ue2MuPy4uLnAK
ICAgIDNGMzA6IDc0IDY1IDAxIDAwIDY1IDVCIDIxIDBBIDYzIEEwIDBGIDkzIDdCIDY1IDBCIEZG
ICB0ZS4uZVshLmMuLi57ZS4uCiAgICAzRjQwOiAwMyAwMCAwMCA3MCA2NCA0RCAzNCAzNSAzMyA3
MCA0RCAzMiAzNCAzOSAwMCAwMCAgLi4ucGRNNDUzcE0yNDkuLgogICAgM0Y1MDogMDAgNjYgNjMg
QTAgMEYgOTMgN0IgNjUgMEIgRkYgMDMgMDAgMDAgNzAgMDAgNEQgIC5mYy4uLntlLi4uLi5wLk0K
ICAgIDNGNjA6IDM0IDM1IDMzIDcwIDY0IDREIDM0IDM1IDMzIDREIDMwIDMyIDMwIDAwIDAwIDAw
ICA0NTNwZE00NTNNMDIwLi4uCiAgICAzRjcwOiAwQSA4NCA3RCA2MSAwQiAwMCAwMSAwMCBBMCAx
QiA5MCA5MiA5NSA0RCAzMCAzOCAgLi59YS4uLi4uLi4uLk0wOAogICAgM0Y4MDogMzUgMEEgMDgg
OTIgOTQgNEQgMzAgMzggMzUgMEEgMEIgNEQgMzIgMzUgMzAgMDAgIDUuLi4uTTA4NS4uTTI1MC4K
ICAgIDNGOTA6IDAwIDAwIDY3IDYwIDE0IDRBIDA0IDREIDM0IDMwIDMzIDBDIDcwIDREIDM0IDMw
ICAuLmdgLkouTTQwMy5wTTQwCiAgICAzRkEwOiAzMSA2OCA2OSA2QSA2NCBBMCAzOSA5MiA5MyA2
NCAwQSBGRiA3MiA0RCAzNCAzNyAgMWhpamQuOS4uZC4uck00NwogICAgM0ZCMDogMzEgNjggNjQg
MEEgMDQgMEIgODAgMDIgNjIgNzAgNEQgMzIgMzQgMzkgMDAgMDAgIDFoZC4uLi4uYnBNMjQ5Li4K
ICAgIDNGQzA6IDAwIDYyIDYwIDdCIDYwIDBDIEZGIEZGIEJGIEZGIDYwIDcwIDZCIDYxIDdEIDYw
ICAuYmB7YC4uLi4uYHBrYX1gCiAgICAzRkQwOiA3OSA2MSAwQSAxNiAwMCA2MCA0RCAzMiAzNSAz
MCAwMCAwMCAwMCA2MiA2MCAxNCAgeWEuLi5gTTI1MC4uLmJgLgogICAgM0ZFMDogNDkgMTMgNEQg
MzQgMzcgMzIgMEMgNzAgNEQgMzQgMzAgMzEgNjggNjkgNkEgNjQgIEkuTTQ3Mi5wTTQwMWhpamQK
ICAgIDNGRjA6IEEwIDQ4IDEyIDkyIDkzIDY0IDBBIEZGIDcyIDREIDM0IDM3IDMxIDY4IDY0IDBB
ICAuSC4uLmQuLnJNNDcxaGQuCiAgICA0MDAwOiAwOCAwQiAyOCAwNCA2NyBBMCAxRSA5MCA5MiA5
NSA0RCAzMCAzOCAzNSAwQSAwRCAgLi4oLmcuLi4uLk0wODUuLgogICAgNDAxMDogOTIgOTQgNEQg
MzAgMzggMzUgMEEgMEUgQTAgMEIgOTIgOTUgNjQgMEEgMDMgNzQgIC4uTTA4NS4uLi4uLmQuLnQK
ICAgIDQwMjA6IDY0IDBBIDAzIDY0IEExIDQ4IDBCIEEwIDE0IDkzIDREIDMwIDM4IDM1IDBBIDBG
ICBkLi5kLkguLi4uTTA4NS4uCiAgICA0MDMwOiBBMCAwQiA5MiA5NSA2NCAwQSAwNSA3NCA2NCAw
QSAwNSA2NCBBMSA0MCAwQSBBMCAgLi4uLmQuLnRkLi5kLkAuLgogICAgNDA0MDogMTQgOTMgNEQg
MzAgMzggMzUgMEEgMTIgQTAgMEIgOTIgOTUgNjQgMEEgMDYgNzQgIC4uTTA4NS4uLi4uLmQuLnQK
ICAgIDQwNTA6IDY0IDBBIDA2IDY0IEExIDQ4IDA4IEEwIDE0IDkzIDREIDMwIDM4IDM1IDBBIDEz
ICBkLi5kLkguLi4uTTA4NS4uCiAgICA0MDYwOiBBMCAwQiA5MiA5NSA2NCAwQSAwNSA3NCA2NCAw
QSAwNSA2NCBBMSA0MCAwNyBBMCAgLi4uLmQuLnRkLi5kLkAuLgogICAgNDA3MDogMTQgOTMgNEQg
MzAgMzggMzUgMEEgMTAgQTAgMEIgOTIgOTUgNjQgMEEgMDkgNzQgIC4uTTA4NS4uLi4uLmQuLnQK
ICAgIDQwODA6IDY0IDBBIDA5IDY0IEExIDQ4IDA1IEEwIDIyIDkzIDREIDMwIDM4IDM1IDBBIDE0
ICBkLi5kLkguLiIuTTA4NS4uCiAgICA0MDkwOiBBMCAwQiA5MiA5NSA2NCAwQSAwOSA3NCA2NCAw
QSAwOSA2NCBBMSAwRCBBMCAwQiAgLi4uLmQuLnRkLi5kLi4uLgogICAgNDBBMDogOTIgOTUgNjQg
MEEgMDMgNzQgNjQgMEEgMDMgNjQgQTEgMzIgQTAgMjIgOTMgNEQgIC4uZC4udGQuLmQuMi4iLk0K
ICAgIDQwQjA6IDMwIDM4IDM1IDBBIDE1IEEwIDBCIDkyIDk1IDY0IDBBIDA5IDc0IDY0IDBBIDA5
ICAwODUuLi4uLi5kLi50ZC4uCiAgICA0MEMwOiA2NCBBMSAwRCBBMCAwQiA5MiA5NSA2NCAwQSAw
MyA3NCA2NCAwQSAwMyA2NCBBMSAgZC4uLi4uLmQuLnRkLi5kLgogICAgNDBEMDogMEQgQTAgMEIg
OTIgOTUgNjQgMEEgMDggNzQgNjQgMEEgMDggNjQgNzAgNEQgMzIgIC4uLi4uZC4udGQuLmRwTTIK
ICAgIDQwRTA6IDM0IDM5IDAwIDAwIDAwIDY3IDYwIDc5IDAxIDY0IDYxIDc5IDZCIDY0IDYyIEEw
ICA0OS4uLmdgeS5kYXlrZGIuCiAgICA0MEYwOiAyOSA5MiA5MyA3QiA2MCA2MSAwMCA2MiA3QiA2
MCA3RiAwQyBGRiBGRiBGRiBGRiAgKS4ue2BhLmJ7YC4uLi4uLgogICAgNDEwMDogNjEgMDAgNjMg
NEQgMzIgMzUgMzAgMDAgMDAgMDAgNjcgN0QgNjMgNjIgMDAgNzAgIGEuY00yNTAuLi5nfWNiLnAK
ICAgIDQxMTA6IDREIDMyIDM0IDM5IDAwIDAwIDAwIDY3IDYwIDE0IDQ5IDA0IDREIDM2IDM0IDM1
ICBNMjQ5Li4uZ2AuSS5NNjQ1CiAgICA0MTIwOiAwQiA3MCAwMCA2MyA3MCA0RCAzMCAzOCAzMyA2
MCA3QSA0RCAzMCAzOCAzMyAwQSAgLnAuY3BNMDgzYHpNMDgzLgogICAgNDEzMDogMTQgNjEgN0Ig
NjEgMEIgMDAgMEYgNjIgNzIgNjIgMEIgMDAgMDEgNjIgQTAgMEEgIC5he2EuLi5icmIuLi5iLi4K
ICAgIDQxNDA6IDkyIDk1IDcyIDYxIDY4IDAwIDYyIEE0IDYzIDcyIDc5IDY4IDBBIDE0IDAwIDYw
ICAuLnJhaC5iLmNyeWguLi5gCiAgICA0MTUwOiA2MCA3MiA3OSA2OSAwQSAwRiAwMCA2MCA2MCA3
MiA3OSA2QSAwQSAwQyAwMCA2MCAgYHJ5aS4uLmBgcnlqLi4uYAogICAgNDE2MDogNjAgQTQgNjAg
MTQgNDQgMDggNEQgMzYgMzQgMzYgMEEgNzAgMDAgNjAgNzAgNEQgIGAuYC5ELk02NDYucC5gcE0K
ICAgIDQxNzA6IDMwIDM0IDM5IDY4IDBBIDM0IDYxIEEyIDJDIDkyIDkzIDYxIDAwIDcwIDREIDMw
ICAwNDloLjRhLiwuLmEucE0wCiAgICA0MTgwOiAzNCAzOSA2OCA2MSA2MiBBMCAwQSA5MSA5MyA2
MiAwMCA5MyA2MiAwQSBGRiBBNSAgNDloYWIuLi4uYi4uYi4uLgogICAgNDE5MDogQTAgMDggOTMg
NjIgNjkgNzAgNjEgNjAgQTUgNzAgNEQgMzAgMzQgMzkgNjggNzIgIC4uLmJpcGFgLnBNMDQ5aHIK
ICAgIDQxQTA6IDYxIDAxIDAwIDYxIDREIDM0IDM2IDMwIDBEIDIwIDIwIDQ2IDQ1IDQxIDJEIDQx
ICBhLi5hTTQ2MC4gIEZFQS1BCiAgICA0MUIwOiA1MyA0QyAyRCA0MyA3MCA2RCA1MyA2NSA2MSA3
MiA2MyA2OCA1MCA2MyA2OSA2NSAgU0wtQ3BtU2VhcmNoUGNpZQogICAgNDFDMDogNDMgNjEgNzAg
NjEgNjIgNjkgNkMgNjkgNzQgNzkgMjAgMjggMzAgNzggMjUgNTggIENhcGFiaWxpdHkgKDB4JVgK
ICAgIDQxRDA6IDJDIDIwIDMwIDc4IDI1IDU4IDI5IDIwIDNEIDIwIDMwIDc4IDI1IDU4IDBBIDAw
ICAsIDB4JVgpID0gMHglWC4uCiAgICA0MUUwOiA2OCA2OSA2MCAwMCAwMCAwMCBBNCA2MCAxNCAz
QSA0RCAzNiAzNCAzNyAwQSBBMCAgaGlgLi4uLmAuOk02NDcuLgogICAgNDFGMDogMzMgOTIgOTMg
NjggMEMgRUUgRUUgRUUgRUUgNzAgNEQgMzAgMzQgNDIgNjggMDAgIDMuLmguLi4uLnBNMDRCaC4K
ICAgIDQyMDA6IDYwIDcwIDBDIEZGIEZGIEZGIDdGIDYxIDdEIDYxIDBDIDAwIDAwIDAwIDgwIDYx
ICBgcC4uLi4uYX1hLi4uLi5hCiAgICA0MjEwOiBBMCAxMiA5MCA5MiA5MyA2MCAwMCA5MiA5MyA2
MCA2MSA0RCAzNiAzNCAzNCA2OCAgLi4uLi5gLi4uYGFNNjQ0aAogICAgNDIyMDogMEEgMDQgNjkg
MTQgNDggMEMgNEQgMzYgMzQgMzggMEIgNzAgMDAgNjIgNzAgMEMgIC4uaS5ILk02NDgucC5icC4K
ICAgIDQyMzA6IEZGIEZGIEZGIDdGIDY1IDdEIDY1IDBDIDAwIDAwIDAwIDgwIDY1IDcwIDAwIDYw
ICAuLi4uZX1lLi4uLi5lcC5gCiAgICA0MjQwOiBBMiA0MCAwNiA5MiA5NCA2MCA2OSA3MCAwMCA2
MSBBMiA0NCAwNSA5MiA5NCA2MSAgLkAuLi5gaXAuYS5ELi4uYQogICAgNDI1MDogNkEgN0QgN0Ig
NzkgNjggMEEgMTQgMDAgMEMgMDAgMDAgRjAgMEYgMDAgN0IgNzkgIGp9e3loLi4uLi4uLi4ue3kK
ICAgIDQyNjA6IDYwIDBBIDBGIDAwIDBDIDAwIDgwIDBGIDAwIDAwIDYzIDdEIDYzIDdCIDc5IDYx
ICBgLi4uLi4uLi4uY31je3lhCiAgICA0MjcwOiAwQSAwQyAwMCAwQiAwMCA3MCAwMCA2MyA3MCA0
RCAzMCAzNCA0MiA0RCAzMCAzOCAgLi4uLi5wLmNwTTA0Qk0wOAogICAgNDI4MDogMzMgNjMgNjQg
QTAgMTEgOTAgOTIgOTMgNjQgNjUgOTIgOTMgNjQgMDAgN0QgNjIgIDNjZC4uLi4uZGUuLmQufWIK
ICAgIDQyOTA6IDc5IDAxIDYwIDAwIDYyIEExIDA3IEEwIDA1IDkzIDYxIDAwIEE1IDc1IDYxIDc1
ICB5LmAuYi4uLi4uYS4udWF1CiAgICA0MkEwOiA2MCA0RCAzNCAzNiAzMCAwRCAyMCAyMCA0QiA0
NSA1MiAyRCA0MSA1MyA0QyAyRCAgYE00NjAuICBLRVItQVNMLQogICAgNDJCMDogNDMgNzAgNkQg
NTMgNjUgNjEgNzIgNjMgNjggNTAgNjMgNjkgNjUgNDQgNjUgNzYgIENwbVNlYXJjaFBjaWVEZXYK
ICAgIDQyQzA6IDY5IDYzIDY1IDIwIDI4IDQyIDc1IDczIDIwIDMwIDc4IDI1IDU4IDI5IDIwIDNE
ICBpY2UgKEJ1cyAweCVYKSA9CiAgICA0MkQwOiAyMCA0NCA2NSA3NiA2OSA2MyA2NSAyMCAzMCA3
OCAyNSA1OCAyMCA0NSA3OCA2OSAgIERldmljZSAweCVYIEV4aQogICAgNDJFMDogNzMgNzQgMEEg
MDAgNjggNjIgMDAgMDAgMDAgMDAgQTQgNjIgMTQgNDkgMDYgNEQgIHN0Li5oYi4uLi4uYi5JLk0K
ICAgIDQyRjA6IDM2IDM0IDM5IDA5IDcwIDAwIDYwIEEwIDIzIDkyIDkzIDY4IDBDIEVFIEVFIEVF
ICA2NDkucC5gLiMuLmguLi4uCiAgICA0MzAwOiBFRSA3MCA0RCAzNiAzNCAzNiA2OCAwMSA2MiBB
MCAxMSA5MiA5MyA2MiAwMCA3MCAgLnBNNjQ2aC5iLi4uLmIucAogICAgNDMxMDogNEQgMzAgMzQg
NDEgNjggNzIgNjIgMEEgMDQgMDAgNjAgNEQgMzQgMzYgMzAgMEQgIE0wNEFocmIuLi5gTTQ2MC4K
ICAgIDQzMjA6IDIwIDIwIDQ2IDQ1IDQxIDJEIDQxIDUzIDRDIDJEIDQzIDcwIDZEIDQ3IDY1IDc0
ICAgIEZFQS1BU0wtQ3BtR2V0CiAgICA0MzMwOiA1MCA0MyA0OSA2NSA1MCA2RiA3NyA2NSA3MiA1
MyA3NCA2MSA3NCA2NSAyMCAyOCAgUENJZVBvd2VyU3RhdGUgKAogICAgNDM0MDogMzAgNzggMjUg
NTggMjkgMjAgM0QgMjAgMzAgNzggMjUgNTggMEEgMDAgNjggNjAgIDB4JVgpID0gMHglWC4uaGAK
ICAgIDQzNTA6IDAwIDAwIDAwIDAwIEE0IDYwIDE0IDQxIDBBIDREIDM2IDM1IDMwIDBBIDcwIDAw
ICAuLi4uLmAuQS5NNjUwLnAuCiAgICA0MzYwOiA2MCA3MCAwMCA2MSBBMCA0QSAwNCA5MiA5MyA2
OCAwQyBFRSBFRSBFRSBFRSA3MCAgYHAuYS5KLi4uaC4uLi4ucAogICAgNDM3MDogNEQgMzYgMzQg
MzYgNjggMDEgNjIgQTAgMzcgOTIgOTMgNjIgMDAgNzAgNEQgMzAgIE02NDZoLmIuNy4uYi5wTTAK
ICAgIDQzODA6IDM0IDQxIDY4IDcyIDYyIDBBIDA0IDAwIDYwIDdCIDYwIDBCIEZDIDdGIDYxIDdE
ICA0QWhyYi4uLmB7YC4uLmF9CiAgICA0MzkwOiA2MSA3QiA2OSAwQiBGRiA3RiAwMCA2MSA0RCAz
MCAzNCA0NCA2OCA3MiA2MiAwQSAgYXtpLi4uLmFNMDREaHJiLgogICAgNDNBMDogMDQgMDAgNjEg
NzAgNEQgMzAgMzQgNDEgNjggNzIgNjIgMEEgMDQgMDAgNjEgNEQgIC4uYXBNMDRBaHJiLi4uYU0K
ICAgIDQzQjA6IDM0IDM2IDMwIDBEIDIwIDIwIDQ2IDQ1IDQxIDJEIDQxIDUzIDRDIDJEIDQzIDcw
ICA0NjAuICBGRUEtQVNMLUNwCiAgICA0M0MwOiA2RCA1MyA2NSA3NCA1MCA0MyA0OSA2NSA1MCA2
RiA3NyA2NSA3MiA1MyA3NCA2MSAgbVNldFBDSWVQb3dlclN0YQogICAgNDNEMDogNzQgNjUgMjAg
MjggMzAgNzggMjUgNTggMkMgMjAgMzAgNzggMjUgNTggMjkgMjAgIHRlICgweCVYLCAweCVYKSAK
ICAgIDQzRTA6IDNEIDIwIDMwIDc4IDI1IDU4IDIwIDJEIDNFIDIwIDMwIDc4IDI1IDU4IDBBIDAw
ICA9IDB4JVggLT4gMHglWC4uCiAgICA0M0YwOiA2OCA2OSA2MCA2MSAwMCAwMCBBNCA2MCAxNCA0
NCAyQSA0RCAzNiAzNSAzMSAwQyAgaGlgYS4uLmAuRCpNNjUxLgogICAgNDQwMDogNzAgNEQgMzAg
MzQgNDIgNjggMDAgNjAgNzAgMEMgRkYgRkYgRkYgN0YgNjEgN0QgIHBNMDRCaC5gcC4uLi4uYX0K
ICAgIDQ0MTA6IDYxIDBDIDAwIDAwIDAwIDgwIDYxIEEwIDQwIDFBIDkwIDkwIDkyIDkzIDY5IDAw
ICBhLi4uLi5hLkAuLi4uLmkuCiAgICA0NDIwOiA5MiA5MyA2OCAwQyBFRSBFRSBFRSBFRSA5MCA5
MiA5MyA2MCAwMCA5MiA5MyA2MCAgLi5oLi4uLi4uLi5gLi4uYAogICAgNDQzMDogNjEgNEQgMzAg
MzQgNDUgNjkgNzIgNkEgMDAgMDAgNEQgMzAgMzQgNDIgNjggMEEgIGFNMDRFaXJqLi5NMDRCaC4K
ICAgIDQ0NDA6IDE4IDREIDMwIDM0IDQ1IDY5IDcyIDZBIDBBIDA0IDAwIDREIDMwIDM0IDQyIDY4
ICAuTTA0RWlyai4uLk0wNEJoCiAgICA0NDUwOiAwQSAxQyA0RCAzMCAzNCA0NSA2OSA3MiA2QSAw
QSAwOCAwMCA0RCAzMCAzNCA0MiAgLi5NMDRFaXJqLi4uTTA0QgogICAgNDQ2MDogNjggMEEgMjAg
NEQgMzAgMzQgNDUgNjkgNzIgNkEgMEEgMEMgMDAgNEQgMzAgMzQgIGguIE0wNEVpcmouLi5NMDQK
ICAgIDQ0NzA6IDQyIDY4IDBBIDI0IDREIDMwIDM0IDQ1IDY5IDcyIDZBIDBBIDEwIDAwIDREIDMw
ICBCaC4kTTA0RWlyai4uLk0wCiAgICA0NDgwOiAzNCA0MiA2OCAwQSAyOCA0RCAzMCAzNCA0NSA2
OSA3MiA2QSAwQSAxNCAwMCA0RCAgNEJoLihNMDRFaXJqLi4uTQogICAgNDQ5MDogMzAgMzQgNDIg
NjggMEEgMkMgNEQgMzAgMzQgNDQgNjkgNzIgNkEgMEEgMTggMDAgIDA0QmguLE0wNERpcmouLi4K
ICAgIDQ0QTA6IDREIDMwIDM0IDQxIDY4IDBBIDA0IDREIDMwIDM0IDQzIDY5IDcyIDZBIDBBIDFB
ICBNMDRBaC4uTTA0Q2lyai4uCiAgICA0NEIwOiAwMCA0RCAzMCAzNCAzOSA2OCAwQSAwQyA0RCAz
MCAzNCA0MyA2OSA3MiA2QSAwQSAgLk0wNDloLi5NMDRDaXJqLgogICAgNDRDMDogMUIgMDAgNEQg
MzAgMzQgMzkgNjggMEEgM0MgNzIgNjggNEQgMzYgMzQgMzYgNjggIC4uTTA0OWguPHJoTTY0NmgK
ICAgIDQ0RDA6IDAxIDYwIEEwIDE2IDkyIDkzIDYwIDY4IDREIDMwIDM0IDQ0IDY5IDcyIDZBIDBB
ICAuYC4uLi5gaE0wNERpcmouCiAgICA0NEUwOiAxQyAwMCA0RCAzMCAzNCA0MSA2MCAwQSAwNCBB
MSAwQyA0RCAzMCAzNCA0NCA2OSAgLi5NMDRBYC4uLi5NMDREaQogICAgNDRGMDogNzIgNkEgMEEg
MUMgMDAgMDAgQTAgNDEgMEMgOTMgNkIgMDEgNzIgNjggNEQgMzYgIHJqLi4uLi5BLi5rLnJoTTYK
ICAgIDQ1MDA6IDM0IDM2IDY4IDBBIDE1IDYwIEEwIDRDIDA2IDkyIDkzIDYwIDY4IDREIDMwIDM0
ICA0NmguLmAuTC4uLmBoTTA0CiAgICA0NTEwOiA0NSA2OSA3MiA2QSAwQSAyMCAwMCA0RCAzMCAz
NCA0MiA2MCAwQSAwOCA0RCAzMCAgRWlyai4gLk0wNEJgLi5NMAogICAgNDUyMDogMzQgNDUgNjkg
NzIgNkEgMEEgMjQgMDAgNEQgMzAgMzQgNDIgNjAgMEEgMEMgNEQgIDRFaXJqLiQuTTA0QmAuLk0K
ICAgIDQ1MzA6IDMwIDM0IDQ1IDY5IDcyIDZBIDBBIDI4IDAwIDREIDMwIDM0IDQyIDYwIDBBIDEw
ICAwNEVpcmouKC5NMDRCYC4uCiAgICA0NTQwOiA0RCAzMCAzNCA0NSA2OSA3MiA2QSAwQSAyQyAw
MCA0RCAzMCAzNCA0MiA2MCAwQSAgTTA0RWlyai4sLk0wNEJgLgogICAgNDU1MDogMTQgNEQgMzAg
MzQgNDUgNjkgNzIgNkEgMEEgMzAgMDAgNEQgMzAgMzQgNDIgNjAgIC5NMDRFaXJqLjAuTTA0QmAK
ICAgIDQ1NjA6IDBBIDE4IDREIDMwIDM0IDQ1IDY5IDcyIDZBIDBBIDM0IDAwIDREIDMwIDM0IDQy
ICAuLk0wNEVpcmouNC5NMDRCCiAgICA0NTcwOiA2MCAwQSAxQyBBMSA0NCAwNCA0RCAzMCAzNCA0
NSA2OSA3MiA2QSAwQSAyMCAwMCAgYC4uLkQuTTA0RWlyai4gLgogICAgNDU4MDogMDAgNEQgMzAg
MzQgNDUgNjkgNzIgNkEgMEEgMjQgMDAgMDAgNEQgMzAgMzQgNDUgIC5NMDRFaXJqLiQuLk0wNEUK
ICAgIDQ1OTA6IDY5IDcyIDZBIDBBIDI4IDAwIDAwIDREIDMwIDM0IDQ1IDY5IDcyIDZBIDBBIDJD
ICBpcmouKC4uTTA0RWlyai4sCiAgICA0NUEwOiAwMCAwMCA0RCAzMCAzNCA0NSA2OSA3MiA2QSAw
QSAzMCAwMCAwMCA0RCAzMCAzNCAgLi5NMDRFaXJqLjAuLk0wNAogICAgNDVCMDogNDUgNjkgNzIg
NkEgMEEgMzQgMDAgMDAgQTEgNDEgMEEgNEQgMzAgMzQgNDUgNjkgIEVpcmouNC4uLkEuTTA0RWkK
ICAgIDQ1QzA6IDcyIDZBIDAwIDAwIDAwIDREIDMwIDM0IDQ1IDY5IDcyIDZBIDBBIDA0IDAwIDAw
ICByai4uLk0wNEVpcmouLi4uCiAgICA0NUQwOiA0RCAzMCAzNCA0NSA2OSA3MiA2QSAwQSAwOCAw
MCAwMCA0RCAzMCAzNCA0NSA2OSAgTTA0RWlyai4uLi5NMDRFaQogICAgNDVFMDogNzIgNkEgMEEg
MEMgMDAgMDAgNEQgMzAgMzQgNDUgNjkgNzIgNkEgMEEgMTAgMDAgIHJqLi4uLk0wNEVpcmouLi4K
ICAgIDQ1RjA6IDAwIDREIDMwIDM0IDQ1IDY5IDcyIDZBIDBBIDE0IDAwIDAwIDREIDMwIDM0IDQ1
ICAuTTA0RWlyai4uLi5NMDRFCiAgICA0NjAwOiA2OSA3MiA2QSAwQSAxOCAwMCAwMCA0RCAzMCAz
NCA0NSA2OSA3MiA2QSAwQSAxQyAgaXJqLi4uLk0wNEVpcmouLgogICAgNDYxMDogMDAgMDAgQTAg
NDcgMDQgOTMgNkIgMDEgNEQgMzAgMzQgNDUgNjkgNzIgNkEgMEEgIC4uLkcuLmsuTTA0RWlyai4K
ICAgIDQ2MjA6IDIwIDAwIDAwIDREIDMwIDM0IDQ1IDY5IDcyIDZBIDBBIDI0IDAwIDAwIDREIDMw
ICAgLi5NMDRFaXJqLiQuLk0wCiAgICA0NjMwOiAzNCA0NSA2OSA3MiA2QSAwQSAyOCAwMCAwMCA0
RCAzMCAzNCA0NSA2OSA3MiA2QSAgNEVpcmouKC4uTTA0RWlyagogICAgNDY0MDogMEEgMkMgMDAg
MDAgNEQgMzAgMzQgNDUgNjkgNzIgNkEgMEEgMzAgMDAgMDAgNEQgIC4sLi5NMDRFaXJqLjAuLk0K
ICAgIDQ2NTA6IDMwIDM0IDQ0IDY5IDcyIDZBIDBBIDM0IDAwIDAwIDREIDM0IDM2IDMwIDBEIDIw
ICAwNERpcmouNC4uTTQ2MC4gCiAgICA0NjYwOiAyMCA0NiA0NSA0MSAyRCA0MSA1MyA0QyAyRCA0
MyA3MCA2RCA1MyA2MSA3NiA2NSAgIEZFQS1BU0wtQ3BtU2F2ZQogICAgNDY3MDogNTAgNjMgNjkg
NjUgNDIgNzIgNjkgNjQgNjcgNjUgNDQgNjEgNzQgNjEgMjAgMjggIFBjaWVCcmlkZ2VEYXRhICgK
ICAgIDQ2ODA6IDMwIDc4IDI1IDU4IDJDIDIwIDMwIDc4IDI1IDU4IDJDIDIwIDMwIDc4IDI1IDU4
ICAweCVYLCAweCVYLCAweCVYCiAgICA0NjkwOiAyQyAyMCAyNSA2NCAyOSAwQSAwMCA2OCA2OSA2
QSA2QiAwMCAwMCA1QiAwMSA0RCAgLCAlZCkuLmhpamsuLlsuTQogICAgNDZBMDogMzQgMzIgMzEg
MDAgMTQgNDQgMEMgNEQgMzQgMzIgMzIgMEMgNzAgNEQgMzAgMzQgIDQyMS4uRC5NNDIyLnBNMDQK
ICAgIDQ2QjA6IDM5IDREIDMxIDMyIDM4IDBBIDgxIDYwIEEwIDBBIDkzIDYwIDAwIEE0IDBDIEZG
ICA5TTEyOC4uYC4uLmAuLi4uCiAgICA0NkMwOiBGRiBGRiBGRiA3MiA0RCAzMCAzOCAzMyA3OSA2
MCAwQSAxNCAwMCA2MCA3MiAwQSAgLi4uck0wODN5YC4uLmByLgogICAgNDZEMDogRTAgNjAgNjAg
NUIgMjMgNEQgMzQgMzIgMzEgRkYgRkYgNUIgODAgNTYgNDEgNTIgIC5gYFsjTTQyMS4uWy5WQVIK
ICAgIDQ2RTA6IDREIDAwIDYwIDBBIDA4IDVCIDgxIDBEIDU2IDQxIDUyIDREIDAzIDAwIDAwIDU2
ICBNLmAuLlsuLlZBUk0uLi5WCiAgICA0NkYwOiA0MSA1MiAzMSAyMCA1QiA4NyAxMiA1NiA0MSA1
MiA0RCA1NiA0MSA1MiAzMSA2QiAgQVIxIFsuLlZBUk1WQVIxawogICAgNDcwMDogMDMgMDAgMjAg
NTYgNDEgNTIgMzIgMjAgNzAgNTYgNDEgNTIgMzEgNjEgNzAgNTYgIC4uIFZBUjIgcFZBUjFhcFYK
ICAgIDQ3MTA6IDQxIDUyIDMyIDYyIDcwIDYxIDU2IDQxIDUyIDMxIDVCIDI3IDREIDM0IDMyIDMx
ICBBUjJicGFWQVIxWydNNDIxCiAgICA0NzIwOiA0RCAzNCAzNiAzMCAwRCAyMCAyMCA0QiA0NSA1
MiAyRCA0MSA1MyA0QyAyRCA0MyAgTTQ2MC4gIEtFUi1BU0wtQwogICAgNDczMDogNzAgNkQgNTIg
NjUgNjEgNjQgNDIgNzggNjIgNTMgNkQgNkUgNTIgNjUgNjcgNjkgIHBtUmVhZEJ4YlNtblJlZ2kK
ICAgIDQ3NDA6IDczIDc0IDY1IDcyIDIwIDIwIDI4IDI1IDY0IDJDIDIwIDI1IDY0IDJDIDIwIDI1
ICBzdGVyICAoJWQsICVkLCAlCiAgICA0NzUwOiA2NCAyQyAyMCAzMCA3OCAyNSA1OCAyOSAyMCAz
RCAyMCAzMCA3OCAyNSA1OCAwQSAgZCwgMHglWCkgPSAweCVYLgogICAgNDc2MDogMDAgNjggNjkg
NkEgNkIgNjIgMDAgQTQgNjIgMTQgNEQgMEIgNEQgMzQgMzIgMzMgIC5oaWprYi4uYi5NLk00MjMK
ICAgIDQ3NzA6IDBEIDcwIDREIDMwIDM0IDM5IDREIDMxIDMyIDM4IDBBIDgxIDYwIEEwIDQ5IDBB
ICAucE0wNDlNMTI4Li5gLkkuCiAgICA0NzgwOiA5MiA5MyA2MCAwMCA0RCAzNCAzNiAzMCAwRCAy
MCAyMCA0QiA0NSA1MiAyRCA0MSAgLi5gLk00NjAuICBLRVItQQogICAgNDc5MDogNTMgNEMgMkQg
NDMgNzAgNkQgNTcgNzIgNjkgNzQgNjUgNDIgNzggNjIgNTMgNkQgIFNMLUNwbVdyaXRlQnhiU20K
ICAgIDQ3QTA6IDZFIDUyIDY1IDY3IDY5IDczIDc0IDY1IDcyIDIwIDI4IDI1IDY0IDJDIDIwIDI1
ICBuUmVnaXN0ZXIgKCVkLCAlCiAgICA0N0IwOiA2NCAyQyAyMCAyNSA2NCAyQyAyMCAzMCA3OCAy
NSA1OCAyQyAyMCAzMCA3OCAyNSAgZCwgJWQsIDB4JVgsIDB4JQogICAgNDdDMDogNTggMjkgMEEg
MDAgNjggNjkgNkEgNkIgNkMgMDAgNzIgNEQgMzAgMzggMzMgNzkgIFgpLi5oaWprbC5yTTA4M3kK
ICAgIDQ3RDA6IDYwIDBBIDE0IDAwIDYwIDcyIDBBIEUwIDYwIDYwIDVCIDIzIDREIDM0IDMyIDMx
ICBgLi4uYHIuLmBgWyNNNDIxCiAgICA0N0UwOiBGRiBGRiA1QiA4MCA1NiA0MSA1MiA0RCAwMCA2
MCAwQSAwOCA1QiA4MSAwRCA1NiAgLi5bLlZBUk0uYC4uWy4uVgogICAgNDdGMDogNDEgNTIgNEQg
MDMgMDAgMDAgNTYgNDEgNTIgMzEgMjAgNUIgODcgMTIgNTYgNDEgIEFSTS4uLlZBUjEgWy4uVkEK
ICAgIDQ4MDA6IDUyIDREIDU2IDQxIDUyIDMxIDZCIDAzIDAwIDIwIDU2IDQxIDUyIDMyIDIwIDcw
ICBSTVZBUjFrLi4gVkFSMiBwCiAgICA0ODEwOiA1NiA0MSA1MiAzMSA2MSA3MCA2QyA1NiA0MSA1
MiAzMiA3MCA2MSA1NiA0MSA1MiAgVkFSMWFwbFZBUjJwYVZBUgogICAgNDgyMDogMzEgNUIgMjcg
NEQgMzQgMzIgMzEgNUIgMDEgNEQgMzIgMzUgMzMgMDAgMTQgNEUgIDFbJ000MjFbLk0yNTMuLk4K
ICAgIDQ4MzA6IDEwIDREIDMyIDM0IDM5IDBDIEEwIDBEIDkzIDcyIDcyIDY4IDY5IDAwIDZBIDAw
ICAuTTI0OS4uLi5ycmhpLmouCiAgICA0ODQwOiAwMCA3MCAwMCA2MCBBMSAwQSA3MCA0RCAzMiAz
NSAzMiA2OCA2OSA2QSA2MCBBMCAgLnAuYC4ucE0yNTJoaWpgLgogICAgNDg1MDogMEUgOTMgNjAg
MEMgRkYgRkYgRkYgRkYgQTQgMEMgRkYgRkYgRkYgRkYgNzIgNEQgIC4uYC4uLi4uLi4uLi4uck0K
ICAgIDQ4NjA6IDMwIDM4IDMzIDc5IDYwIDBBIDE0IDAwIDYwIDcyIDBBIEI4IDYwIDYwIEEwIDFD
ICAwODN5YC4uLmByLi5gYC4uCiAgICA0ODcwOiA1QiAxMiA1QyAyRSA1RiA1MyA0MiA1RiA0MSA0
RCAzMCAzMCAwMCA1QiAyMyA1QyAgWy5cLl9TQl9BTTAwLlsjXAogICAgNDg4MDogMkUgNUYgNTMg
NDIgNUYgNDEgNEQgMzAgMzAgRkYgRkYgQTEgMDkgNUIgMjMgNEQgIC5fU0JfQU0wMC4uLi5bI00K
ICAgIDQ4OTA6IDMyIDM1IDMzIEZGIEZGIDVCIDgwIDU2IDQxIDUyIDREIDAwIDYwIDBBIDA4IDVC
ICAyNTMuLlsuVkFSTS5gLi5bCiAgICA0OEEwOiA4MSAwRCA1NiA0MSA1MiA0RCAwMyAwMCAwMCA1
NiA0MSA1MiAzMSAyMCA1QiA4NyAgLi5WQVJNLi4uVkFSMSBbLgogICAgNDhCMDogMTIgNTYgNDEg
NTIgNEQgNTYgNDEgNTIgMzEgNkIgMDMgMDAgMjAgNTYgNDEgNTIgIC5WQVJNVkFSMWsuLiBWQVIK
ICAgIDQ4QzA6IDMyIDIwIDcwIDU2IDQxIDUyIDMxIDYxIDcwIDU2IDQxIDUyIDMyIDYyIDcwIDYx
ICAyIHBWQVIxYXBWQVIyYnBhCiAgICA0OEQwOiA1NiA0MSA1MiAzMSBBMCAxQSA1QiAxMiA1QyAy
RSA1RiA1MyA0MiA1RiA0MSA0RCAgVkFSMS4uWy5cLl9TQl9BTQogICAgNDhFMDogMzAgMzAgMDAg
NUIgMjcgNUMgMkUgNUYgNTMgNDIgNUYgNDEgNEQgMzAgMzAgQTEgIDAwLlsnXC5fU0JfQU0wMC4K
ICAgIDQ4RjA6IDA3IDVCIDI3IDREIDMyIDM1IDMzIDREIDM0IDM2IDMwIDBEIDIwIDIwIDRCIDQ1
ICAuWydNMjUzTTQ2MC4gIEtFCiAgICA0OTAwOiA1MiAyRCA0MSA1MyA0QyAyRCA0MyA3MCA2RCA1
MiA2NSA2MSA2NCA1MyA2RCA2RSAgUi1BU0wtQ3BtUmVhZFNtbgogICAgNDkxMDogNTIgNjUgNjcg
NjkgNzMgNzQgNjUgNzIgMjAgMjAgMjggMjUgNjQgMkMgMjAgMjUgIFJlZ2lzdGVyICAoJWQsICUK
ICAgIDQ5MjA6IDY0IDJDIDIwIDI1IDY0IDJDIDIwIDMwIDc4IDI1IDU4IDI5IDIwIDNEIDIwIDMw
ICBkLCAlZCwgMHglWCkgPSAwCiAgICA0OTMwOiA3OCAyNSA1OCAwQSAwMCA2OCA2OSA2QSA2QiA2
MiAwMCBBNCA2MiAxNCA0NyAxMCAgeCVYLi5oaWprYi4uYi5HLgogICAgNDk0MDogNEQgMzIgMzUg
MzAgMEQgQTAgMEQgOTMgNzIgNzIgNjggNjkgMDAgNkEgMDAgMDAgIE0yNTAuLi4ucnJoaS5qLi4K
ICAgIDQ5NTA6IDcwIDAwIDYwIEExIDBBIDcwIDREIDMyIDM1IDMyIDY4IDY5IDZBIDYwIEEwIDQ2
ICBwLmAuLnBNMjUyaGlqYC5GCiAgICA0OTYwOiAwRSA5MiA5MyA2MCAwQyBGRiBGRiBGRiBGRiA0
RCAzNCAzNiAzMCAwRCAyMCAyMCAgLi4uYC4uLi4uTTQ2MC4gIAogICAgNDk3MDogNEIgNDUgNTIg
MkQgNDEgNTMgNEMgMkQgNDMgNzAgNkQgNTcgNzIgNjkgNzQgNjUgIEtFUi1BU0wtQ3BtV3JpdGUK
ICAgIDQ5ODA6IDUzIDZEIDZFIDUyIDY1IDY3IDY5IDczIDc0IDY1IDcyIDIwIDI4IDI1IDY0IDJD
ICBTbW5SZWdpc3RlciAoJWQsCiAgICA0OTkwOiAyMCAyNSA2NCAyQyAyMCAyNSA2NCAyQyAyMCAz
MCA3OCAyNSA1OCAyQyAyMCAzMCAgICVkLCAlZCwgMHglWCwgMAogICAgNDlBMDogNzggMjUgNTgg
MjkgMEEgMDAgNjggNjkgNkEgNkIgNkMgMDAgNzIgNEQgMzAgMzggIHglWCkuLmhpamtsLnJNMDgK
ICAgIDQ5QjA6IDMzIDc5IDYwIDBBIDE0IDAwIDYwIDcyIDBBIEI4IDYwIDYwIEEwIDFDIDVCIDEy
ICAzeWAuLi5gci4uYGAuLlsuCiAgICA0OUMwOiA1QyAyRSA1RiA1MyA0MiA1RiA0MSA0RCAzMCAz
MCAwMCA1QiAyMyA1QyAyRSA1RiAgXC5fU0JfQU0wMC5bI1wuXwogICAgNDlEMDogNTMgNDIgNUYg
NDEgNEQgMzAgMzAgRkYgRkYgQTEgMDkgNUIgMjMgNEQgMzIgMzUgIFNCX0FNMDAuLi4uWyNNMjUK
ICAgIDQ5RTA6IDMzIEZGIEZGIDVCIDgwIDU2IDQxIDUyIDREIDAwIDYwIDBBIDA4IDVCIDgxIDBE
ICAzLi5bLlZBUk0uYC4uWy4uCiAgICA0OUYwOiA1NiA0MSA1MiA0RCAwMyAwMCAwMCA1NiA0MSA1
MiAzMSAyMCA1QiA4NyAxMiA1NiAgVkFSTS4uLlZBUjEgWy4uVgogICAgNEEwMDogNDEgNTIgNEQg
NTYgNDEgNTIgMzEgNkIgMDMgMDAgMjAgNTYgNDEgNTIgMzIgMjAgIEFSTVZBUjFrLi4gVkFSMiAK
ICAgIDRBMTA6IDcwIDU2IDQxIDUyIDMxIDYxIDcwIDZDIDU2IDQxIDUyIDMyIDcwIDYxIDU2IDQx
ICBwVkFSMWFwbFZBUjJwYVZBCiAgICA0QTIwOiA1MiAzMSBBMCAxQSA1QiAxMiA1QyAyRSA1RiA1
MyA0MiA1RiA0MSA0RCAzMCAzMCAgUjEuLlsuXC5fU0JfQU0wMAogICAgNEEzMDogMDAgNUIgMjcg
NUMgMkUgNUYgNTMgNDIgNUYgNDEgNEQgMzAgMzAgQTEgMDcgNUIgIC5bJ1wuX1NCX0FNMDAuLlsK
ICAgIDRBNDA6IDI3IDREIDMyIDM1IDMzIDE0IDRFIDA2IDREIDMwIDMxIDMzIDBDIDcwIDREIDMw
ICAnTTI1My5OLk0wMTMucE0wCiAgICA0QTUwOiAzNCA0MiA2OCA2OSA2MSA3MCAwQyBGRiBGRiBG
RiA3RiA2NSA3RCA2NSAwQyAwMCAgNEJoaWFwLi4uLi5lfWUuLgogICAgNEE2MDogMDAgMDAgODAg
NjUgN0IgN0EgNjEgNkEgMDAgN0EgNjUgNzQgMEEgMjAgNkIgMDAgIC4uLmV7emFqLnpldC4gay4K
ICAgIDRBNzA6IDAwIDYyIDREIDM0IDM2IDMwIDBEIDIwIDIwIDRCIDQ1IDUyIDJEIDQxIDUzIDRD
ICAuYk00NjAuICBLRVItQVNMCiAgICA0QTgwOiAyRCA0MyA3MCA2RCA1MiA2NSA2MSA2NCA0RCA2
NSA2RCAzMyAzMiAyMCAyMCAyOCAgLUNwbVJlYWRNZW0zMiAgKAogICAgNEE5MDogMzAgNzggMjUg
NTggMkMgMjAgMzAgNzggMjUgNTggMkMgMjAgMjUgNjQgMkMgMjAgIDB4JVgsIDB4JVgsICVkLCAK
ICAgIDRBQTA6IDI1IDY0IDI5IDIwIDNEIDIwIDMwIDc4IDI1IDU4IDBBIDAwIDY4IDY5IDZBIDZC
ICAlZCkgPSAweCVYLi5oaWprCiAgICA0QUIwOiA2MiAwMCBBNCA2MiAxNCA0QyAwOCA0RCAzMCAz
MSAzNCAwRCA0RCAzNCAzNiAzMCAgYi4uYi5MLk0wMTQuTTQ2MAogICAgNEFDMDogMEQgMjAgMjAg
NEIgNDUgNTIgMkQgNDEgNTMgNEMgMkQgNDMgNzAgNkQgNTcgNzIgIC4gIEtFUi1BU0wtQ3BtV3IK
ICAgIDRBRDA6IDY5IDc0IDY1IDREIDY1IDZEIDMzIDMyIDIwIDI4IDMwIDc4IDI1IDU4IDJDIDIw
ICBpdGVNZW0zMiAoMHglWCwgCiAgICA0QUUwOiAzMCA3OCAyNSA1OCAyQyAyMCAyNSA2NCAyQyAy
MCAyNSA2NCAyQyAyMCAzMCA3OCAgMHglWCwgJWQsICVkLCAweAogICAgNEFGMDogMjUgNTggMjkg
MEEgMDAgNjggNjkgNkEgNkIgNkMgMDAgNzAgNEQgMzAgMzQgNDIgICVYKS4uaGlqa2wucE0wNEIK
ICAgIDRCMDA6IDY4IDY5IDYxIDcwIDBDIEZGIEZGIEZGIDdGIDY1IDdEIDY1IDBDIDAwIDAwIDAw
ICBoaWFwLi4uLi5lfWUuLi4uCiAgICA0QjEwOiA4MCA2NSA3MiA2QSA2QiA2MiA3NCAwQSAyMCA2
MiA2MiA3QSA3QiA3OSA2NSA2MiAgLmVyamtidC4gYmJ6e3llYgogICAgNEIyMDogMDAgNjUgMDAg
NjIgNjIgNzkgN0EgNjIgNkEgMDAgNkEgNjIgNzkgNkMgNkEgNjMgIC5lLmJieXpiai5qYnlsamMK
ICAgIDRCMzA6IDdEIDdCIDYxIDdGIDY1IDYyIDAwIDAwIDYzIDY0IDREIDMwIDM0IDQ1IDY4IDY5
ICB9e2EuZWIuLmNkTTA0RWhpCiAgICA0QjQwOiA2NCAxNCA0RiAwNSA0RCAzMCAzMSAzMSAwQyA3
MCA0RCAzMCAzNCAzOSA2OCA2OSAgZC5PLk0wMTEucE0wNDloaQogICAgNEI1MDogNjEgN0IgN0Eg
NjEgNkEgMDAgN0EgMEEgRkYgNzQgMEEgMDggNkIgMDAgMDAgNjIgIGF7emFqLnouLnQuLmsuLmIK
ICAgIDRCNjA6IDREIDM0IDM2IDMwIDBEIDIwIDIwIDRCIDQ1IDUyIDJEIDQxIDUzIDRDIDJEIDQz
ICBNNDYwLiAgS0VSLUFTTC1DCiAgICA0QjcwOiA3MCA2RCA1MiA2NSA2MSA2NCA0RCA2NSA2RCAz
OCAyMCAyMCAyOCAzMCA3OCAyNSAgcG1SZWFkTWVtOCAgKDB4JQogICAgNEI4MDogNTggMkMgMjAg
MzAgNzggMjUgNTggMkMgMjAgMjUgNjQgMkMgMjAgMjUgNjQgMjkgIFgsIDB4JVgsICVkLCAlZCkK
ICAgIDRCOTA6IDIwIDNEIDIwIDMwIDc4IDI1IDU4IDBBIDAwIDY4IDY5IDZBIDZCIDYyIDAwIEE0
ICAgPSAweCVYLi5oaWprYi4uCiAgICA0QkEwOiA2MiAxNCA0RiAwNyA0RCAzMCAzMSAzMiAwRCA0
RCAzNCAzNiAzMCAwRCAyMCAyMCAgYi5PLk0wMTIuTTQ2MC4gIAogICAgNEJCMDogNEIgNDUgNTIg
MkQgNDEgNTMgNEMgMkQgNDMgNzAgNkQgNTcgNzIgNjkgNzQgNjUgIEtFUi1BU0wtQ3BtV3JpdGUK
ICAgIDRCQzA6IDREIDY1IDZEIDM4IDIwIDI4IDMwIDc4IDI1IDU4IDJDIDIwIDMwIDc4IDI1IDU4
ICBNZW04ICgweCVYLCAweCVYCiAgICA0QkQwOiAyQyAyMCAyNSA2NCAyQyAyMCAyNSA2NCAyQyAy
MCAzMCA3OCAyNSA1OCAyOSAwQSAgLCAlZCwgJWQsIDB4JVgpLgogICAgNEJFMDogMDAgNjggNjkg
NkEgNkIgNkMgMDAgNzAgNEQgMzAgMzQgMzkgNjggNjkgNjEgNzIgIC5oaWprbC5wTTA0OWhpYXIK
ICAgIDRCRjA6IDZBIDZCIDYyIDc0IDBBIDA4IDYyIDYyIDdBIDdCIDc5IDBBIEZGIDYyIDAwIDBB
ICBqa2J0Li5iYnp7eS4uYi4uCiAgICA0QzAwOiBGRiAwMCA2MiA2MiA3OSA3QSA2MiA2QSAwMCA2
QSA2MiA3OSA2QyA2QSA2MyA3RCAgLi5iYnl6YmouamJ5bGpjfQogICAgNEMxMDogN0IgNjEgN0Yg
MEEgRkYgNjIgMDAgMDAgNjMgNjQgNEQgMzAgMzQgNDMgNjggNjkgIHthLi4uYi4uY2RNMDRDaGkK
ICAgIDRDMjA6IDY0IDE0IDQ0IDA4IDREIDMyIDM1IDMyIDBCIEEwIDQ2IDA3IDkyIDk1IDREIDMw
ICBkLkQuTTI1Mi4uRi4uLk0wCiAgICA0QzMwOiAzOCAzNSAwQSAwOCA3MCA0RCAzMiAzNSAzMSA2
MCBBMCA0NSAwNiA2MCA3MiA2MCAgODUuLnBNMjUxYC5FLmByYAogICAgNEM0MDogMEEgMTAgNjAg
NzAgMDAgNjEgNzAgMDAgNjIgQTIgNDYgMDUgOTIgOTMgNjIgMEEgIC4uYHAuYXAuYi5GLi4uYi4K
ICAgIDRDNTA6IEZGIDcwIDREIDMwIDMxIDMxIDcyIDYwIDYxIDAwIDAwIDAwIDBBIDA4IDYyIDcw
ICAucE0wMTFyYGEuLi4uLmJwCiAgICA0QzYwOiA0RCAzMCAzMSAzMSA3MiA2MCA2MSAwMCAwMSAw
MCAwQSAwOCA2MyA3MCA0RCAzMCAgTTAxMXJgYS4uLi4uY3BNMAogICAgNEM3MDogMzEgMzEgNzIg
NjAgNjEgMDAgMEEgMDIgMDAgMEEgMDggNjQgNzAgNEQgMzAgMzEgIDExcmBhLi4uLi4uZHBNMDEK
ICAgIDRDODA6IDMxIDcyIDYwIDYxIDAwIDBBIDAzIDAwIDBBIDA4IDY1IEEwIDBGIDkwIDkzIDYy
ICAxcmBhLi4uLi4uZS4uLi5iCiAgICA0QzkwOiA2OCA5MyA2MyA2OSBBMCAwNiA5MyA2NCA2QSBB
NCA2NSA3MiA2MSAwQSAwNiA2MSAgaC5jaS4uLmRqLmVyYS4uYQogICAgNENBMDogQTQgMEMgRkYg
RkYgRkYgRkYgMTQgMzUgNEQgMzYgMzIgMzQgMDkgNzAgMDAgNjAgIC4uLi4uLi41TTYyNC5wLmAK
ICAgIDRDQjA6IEEwIDI5IDkyIDkzIDREIDMyIDM1IDMxIDAwIDcyIDBBIDAzIDcyIDBBIDEwIDc3
ICAuKS4uTTI1MS5yLi5yLi53CiAgICA0Q0MwOiA2OCAwQSAwNiAwMCAwMCA2MSA3MCA0RCAzMCAz
NCAzOSA0RCAzMiAzNSAzMSA2MSAgaC4uLi5hcE0wNDlNMjUxYQogICAgNENEMDogNjAgQTAgMDgg
OTMgNjAgMEEgRkYgNzAgMDAgNjAgQTQgNjAgMTQgMzEgNEQgMzAgIGAuLi5gLi5wLmAuYC4xTTAK
ICAgIDRDRTA6IDM0IDM5IDBBIDcwIDAwIDYwIEEwIDI1IDkyIDkzIDY4IDAwIDcyIDY4IDY5IDYw
ICA0OS5wLmAuJS4uaC5yaGlgCiAgICA0Q0YwOiA1QiA4MCA1NiA0MSA1MiA0RCAwMCA2MCAwMSA1
QiA4MSAwQiA1NiA0MSA1MiA0RCAgWy5WQVJNLmAuWy4uVkFSTQogICAgNEQwMDogMDEgNTYgNDEg
NTIgNTIgMDggNzAgNTYgNDEgNTIgNTIgNjAgQTQgNjAgMTQgMzIgIC5WQVJSLnBWQVJSYC5gLjIK
ICAgIDREMTA6IDREIDMwIDM0IDQxIDBBIDcwIDAwIDYwIEEwIDI2IDkyIDkzIDY4IDAwIDcyIDY4
ICBNMDRBLnAuYC4mLi5oLnJoCiAgICA0RDIwOiA2OSA2MCA1QiA4MCA1NiA0MSA1MiA0RCAwMCA2
MCAwQSAwMiA1QiA4MSAwQiA1NiAgaWBbLlZBUk0uYC4uWy4uVgogICAgNEQzMDogNDEgNTIgNEQg
MDIgNTYgNDEgNTIgNTIgMTAgNzAgNTYgNDEgNTIgNTIgNjAgQTQgIEFSTS5WQVJSLnBWQVJSYC4K
ICAgIDRENDA6IDYwIDE0IDMyIDREIDMwIDM0IDQyIDBBIDcwIDAwIDYwIEEwIDI2IDkyIDkzIDY4
ICBgLjJNMDRCLnAuYC4mLi5oCiAgICA0RDUwOiAwMCA3MiA2OCA2OSA2MCA1QiA4MCA1NiA0MSA1
MiA0RCAwMCA2MCAwQSAwNCA1QiAgLnJoaWBbLlZBUk0uYC4uWwogICAgNEQ2MDogODEgMEIgNTYg
NDEgNTIgNEQgMDMgNTYgNDEgNTIgNTIgMjAgNzAgNTYgNDEgNTIgIC4uVkFSTS5WQVJSIHBWQVIK
ICAgIDRENzA6IDUyIDYwIEE0IDYwIDE0IDJDIDREIDMwIDM0IDQzIDBCIEEwIDI1IDkyIDkzIDY4
ICBSYC5gLixNMDRDLi4lLi5oCiAgICA0RDgwOiAwMCA3MiA2OCA2OSA2MCA1QiA4MCA1NiA0MSA1
MiA0RCAwMCA2MCAwMSA1QiA4MSAgLnJoaWBbLlZBUk0uYC5bLgogICAgNEQ5MDogMEIgNTYgNDEg
NTIgNEQgMDEgNTYgNDEgNTIgNTIgMDggNzAgNkEgNTYgNDEgNTIgIC5WQVJNLlZBUlIucGpWQVIK
ICAgIDREQTA6IDUyIDE0IDJEIDREIDMwIDM0IDQ0IDBCIEEwIDI2IDkyIDkzIDY4IDAwIDcyIDY4
ICBSLi1NMDRELi4mLi5oLnJoCiAgICA0REIwOiA2OSA2MCA1QiA4MCA1NiA0MSA1MiA0RCAwMCA2
MCAwQSAwMiA1QiA4MSAwQiA1NiAgaWBbLlZBUk0uYC4uWy4uVgogICAgNERDMDogNDEgNTIgNEQg
MDIgNTYgNDEgNTIgNTIgMTAgNzAgNkEgNTYgNDEgNTIgNTIgMTQgIEFSTS5WQVJSLnBqVkFSUi4K
ICAgIDRERDA6IDJEIDREIDMwIDM0IDQ1IDBCIEEwIDI2IDkyIDkzIDY4IDAwIDcyIDY4IDY5IDYw
ICAtTTA0RS4uJi4uaC5yaGlgCiAgICA0REUwOiA1QiA4MCA1NiA0MSA1MiA0RCAwMCA2MCAwQSAw
NCA1QiA4MSAwQiA1NiA0MSA1MiAgWy5WQVJNLmAuLlsuLlZBUgogICAgNERGMDogNEQgMDMgNTYg
NDEgNTIgNTIgMjAgNzAgNkEgNTYgNDEgNTIgNTIgMTQgNDMgMTcgIE0uVkFSUiBwalZBUlIuQy4K
ICAgIDRFMDA6IDREIDM2IDM0IDM0IDBCIDREIDM0IDM2IDMwIDBEIDIwIDIwIDRCIDQ1IDUyIDJE
ICBNNjQ0Lk00NjAuICBLRVItCiAgICA0RTEwOiA0MSA1MyA0QyAyRCA0MyA3MCA2RCA0NCA3NSA2
RCA3MCA0NCA2MSA3NCA2MSAyMCAgQVNMLUNwbUR1bXBEYXRhIAogICAgNEUyMDogMjggMzAgNzgg
MjUgNTggMkMgMjAgMzAgNzggMjUgNTggMkMgMjAgMzAgNzggMjUgICgweCVYLCAweCVYLCAweCUK
ICAgIDRFMzA6IDU4IDI5IDBBIDAwIDY4IDY5IDZBIDAwIDAwIDAwIEEwIDNFIDkwIDkyIDkzIDY5
ICBYKS4uaGlqLi4uLj4uLi5pCiAgICA0RTQwOiAwMSA5MCA5MiA5MyA2OSAwQSAwMiA5MiA5MyA2
OSAwQSAwNCA0RCAzNCAzNiAzMCAgLi4uLmkuLi4uaS4uTTQ2MAogICAgNEU1MDogMEQgMjAgMjAg
NDEgNzIgNjcgMzEgM0EgMjAgNEYgNkUgNjUgMjAgNDQgNjEgNzQgIC4gIEFyZzE6IE9uZSBEYXQK
ICAgIDRFNjA6IDYxIDIwIDU3IDY5IDY0IDc0IDY4IDIwIDY5IDczIDIwIDY5IDZDIDZDIDY1IDY3
ICBhIFdpZHRoIGlzIGlsbGVnCiAgICA0RTcwOiA2MSA2QyAwMCAwMCAwMCAwMCAwMCAwMCAwMCBB
MSA0QSAwRSBBMCAzNCA5NCA2QSAgYWwuLi4uLi4uLkouLjQuagogICAgNEU4MDogMEIgMDAgMTAg
NEQgMzQgMzYgMzAgMEQgMjAgMjAgNDEgNzIgNjcgMzIgM0EgMjAgIC4uLk00NjAuICBBcmcyOiAK
ICAgIDRFOTA6IDU0IDZGIDc0IDYxIDZDIDIwIDQ0IDYxIDc0IDYxIDIwIDUzIDY5IDdBIDY1IDIw
ICBUb3RhbCBEYXRhIFNpemUgCiAgICA0RUEwOiA2OSA3MyAyMCA2OSA2QyA2QyA2NSA2NyA2MSA2
QyAwMCAwMCAwMCAwMCAwMCAwMCAgaXMgaWxsZWdhbC4uLi4uLgogICAgNEVCMDogMDAgQTEgNDIg
MEIgNzAgMDAgNjAgNzAgNjggNjEgNEQgMzQgMzYgMzAgMEQgMjAgIC4uQi5wLmBwaGFNNDYwLiAK
ICAgIDRFQzA6IDIwIDMwIDc4IDI1IDU4IDNBIDAwIDYxIDAwIDAwIDAwIDAwIDAwIEEyIDQ2IDA5
ICAgMHglWDouYS4uLi4uLkYuCiAgICA0RUQwOiA5NSA2MCA2QSBBMCAxOSA5MyA2OSAwMSA0RCAz
NCAzNiAzMCAwRCAyMCAyMCAyNSAgLmBqLi4uaS5NNDYwLiAgJQogICAgNEVFMDogNTggMDAgNEQg
MzAgMzQgMzkgNjggNjAgMDAgMDAgMDAgMDAgMDAgQTEgMzkgQTAgIFguTTA0OWhgLi4uLi4uOS4K
ICAgIDRFRjA6IDFBIDkzIDY5IDBBIDAyIDREIDM0IDM2IDMwIDBEIDIwIDIwIDI1IDU4IDAwIDRE
ICAuLmkuLk00NjAuICAlWC5NCiAgICA0RjAwOiAzMCAzNCA0MSA2OCA2MCAwMCAwMCAwMCAwMCAw
MCBBMSAxQyBBMCAxQSA5MyA2OSAgMDRBaGAuLi4uLi4uLi4uaQogICAgNEYxMDogMEEgMDQgNEQg
MzQgMzYgMzAgMEQgMjAgMjAgMjUgNTggMDAgNEQgMzAgMzQgNDIgIC4uTTQ2MC4gICVYLk0wNEIK
ICAgIDRGMjA6IDY4IDYwIDAwIDAwIDAwIDAwIDAwIDcyIDYwIDY5IDYwIDcyIDY4IDYwIDYxIEEw
ICBoYC4uLi4ucmBpYHJoYGEuCiAgICA0RjMwOiAzNCA5MyA3QiA2MSAwQSAwRiAwMCAwMCA0RCAz
NCAzNiAzMCAwRCAwQSAwMCAwMCAgNC57YS4uLi5NNDYwLi4uLgogICAgNEY0MDogMDAgMDAgMDAg
MDAgMDAgQTAgMUUgOTUgNjAgNkEgNEQgMzQgMzYgMzAgMEQgMjAgIC4uLi4uLi4uYGpNNDYwLiAK
ICAgIDRGNTA6IDIwIDMwIDc4IDI1IDU4IDNBIDAwIDdCIDYxIDBDIEYwIEZGIEZGIEZGIDAwIDAw
ICAgMHglWDoue2EuLi4uLi4uCiAgICA0RjYwOiAwMCAwMCAwMCAwMCA0RCAzNCAzNiAzMCAwRCAw
QSAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLk00NjAuLi4uLi4uLgogICAgNEY3MDogMDAgMTQgM0Ig
NEQgMzQgMzEgMzIgMDkgN0EgNjggMEEgMUYgNjAgN0IgNjAgMDEgIC4uO000MTIuemguLmB7YC4K
ICAgIDRGODA6IDYwIDdBIDY4IDBBIDE4IDYxIDdCIDYxIDBBIDdGIDYxIDdBIDY4IDBBIDA0IDYz
ICBgemguLmF7YS4uYXpoLi5jCiAgICA0RjkwOiA3QiA2MyAwQSAwMyA2MyA3QiA2OCAwQSAwNyA2
NCA3MCA0RCAzNCAzMCAzOSA2MCAge2MuLmN7aC4uZHBNNDA5YAogICAgNEZBMDogNjEgNjMgNjUg
N0EgNjUgNjQgNjUgN0IgNjUgMDEgNjUgQTQgNjUgMTQgM0MgNEQgIGFjZXplZGV7ZS5lLmUuPE0K
ICAgIDRGQjA6IDM0IDQ1IDMzIDA5IDdBIDY4IDBBIDE1IDYwIDdCIDYwIDBBIDA3IDYwIDdBIDY4
ICA0RTMuemguLmB7YC4uYHpoCiAgICA0RkMwOiAwQSAxOCA2MSA3QiA2MSAwQSA3RiA2MSA3QSA2
OCAwQSAwNCA2MyA3QiA2MyAwQSAgLi5he2EuLmF6aC4uY3tjLgogICAgNEZEMDogMDMgNjMgN0Ig
NjggMEEgMDcgNjQgNzAgNEQgMzQgNDUgMzEgNjAgNjEgNjMgNjUgIC5je2guLmRwTTRFMWBhY2UK
ICAgIDRGRTA6IDdBIDY1IDY0IDY1IDdCIDY1IDAxIDY1IEE0IDY1IDE0IDQ3IDA3IDREIDM0IDMx
ICB6ZWRle2UuZS5lLkcuTTQxCiAgICA0RkYwOiAzMyAwQSA3QSA2OCAwQSAxRiA2MCA3QiA2MCAw
MSA2MCA3QSA2OCAwQSAxOCA2MSAgMy56aC4uYHtgLmB6aC4uYQogICAgNTAwMDogN0IgNjEgMEEg
N0YgNjEgN0EgNjggMEEgMDYgNjIgN0IgNjIgMEEgMDMgNjIgN0EgIHthLi5hemguLmJ7Yi4uYnoK
ICAgIDUwMTA6IDY4IDBBIDA0IDYzIDdCIDYzIDBBIDAzIDYzIDdCIDY4IDBBIDA3IDY0IDcwIDRE
ICBoLi5je2MuLmN7aC4uZHBNCiAgICA1MDIwOiAzNCAzMCAzOSA2MCA2MSA3MiA3NyA3MiA2MiAw
MSAwMCAwMSAwMCA2MyAwMCA2NSAgNDA5YGFyd3JiLi4uLmMuZQogICAgNTAzMDogNzAgNjUgNjYg
N0IgNjUgN0YgMEMgRkYgRkYgRkYgRkYgNzkgMDEgNjQgMDAgMDAgIHBlZntlLi4uLi4ueS5kLi4K
ICAgIDUwNDA6IDY1IDdEIDY1IDc5IDdCIDY5IDAxIDAwIDY0IDAwIDY1IEEwIDE2IDkyIDkzIDY1
ICBlfWV5e2kuLmQuZS4uLi5lCiAgICA1MDUwOiA2NiA0RCAzNCAzMSAzMCA2MCA2MSA3MiA3NyA3
MiA2MiAwMSAwMCAwMSAwMCA2MyAgZk00MTBgYXJ3cmIuLi4uYwogICAgNTA2MDogMDAgNjUgMTQg
NDggMDcgNEQgMzQgNDUgMzQgMEEgN0EgNjggMEEgMTUgNjAgN0IgIC5lLkguTTRFNC56aC4uYHsK
ICAgIDUwNzA6IDYwIDBBIDA3IDYwIDdBIDY4IDBBIDE4IDYxIDdCIDYxIDBBIDdGIDYxIDdBIDY4
ICBgLi5gemguLmF7YS4uYXpoCiAgICA1MDgwOiAwQSAwNiA2MiA3QiA2MiAwQSAwMyA2MiA3QSA2
OCAwQSAwNCA2MyA3QiA2MyAwQSAgLi5ie2IuLmJ6aC4uY3tjLgogICAgNTA5MDogMDMgNjMgN0Ig
NjggMEEgMDcgNjQgNzAgNEQgMzQgNDUgMzEgNjAgNjEgNzIgNzcgIC5je2guLmRwTTRFMWBhcncK
ICAgIDUwQTA6IDcyIDYyIDAxIDAwIDAxIDAwIDYzIDAwIDY1IDcwIDY1IDY2IDdCIDY1IDdGIDBD
ICByYi4uLi5jLmVwZWZ7ZS4uCiAgICA1MEIwOiBGRiBGRiBGRiBGRiA3OSAwMSA2NCAwMCAwMCA2
NSA3RCA2NSA3OSA3QiA2OSAwMSAgLi4uLnkuZC4uZX1leXtpLgogICAgNTBDMDogMDAgNjQgMDAg
NjUgQTAgMTYgOTIgOTMgNjUgNjYgNEQgMzQgNDUgMzIgNjAgNjEgIC5kLmUuLi4uZWZNNEUyYGEK
ICAgIDUwRDA6IDcyIDc3IDcyIDYyIDAxIDAwIDAxIDAwIDYzIDAwIDY1IDE0IDQ1IDRBIDREIDM0
ICByd3JiLi4uLmMuZS5FSk00CiAgICA1MEUwOiAzMyA0MSAwOSA3MCAwMCA2MCA3MCA0RCAzMCAz
NCA0MiA0RCAzMSAzMiAzOCAwQSAgM0EucC5gcE0wNEJNMTI4LgogICAgNTBGMDogMzMgNjEgNzAg
NEQgMzAgMzQgNDIgNEQgMzEgMzIgMzggMEEgNzIgNjIgQTAgNEYgIDNhcE0wNEJNMTI4LnJiLk8K
ICAgIDUxMDA6IDA2IDkxIDkzIDYxIDAwIDkzIDYyIDAwIDREIDM0IDM2IDMwIDBEIDIwIDIwIDRC
ICAuLi5hLi5iLk00NjAuICBLCiAgICA1MTEwOiA0NSA1MiAyRCA0MSA1MyA0QyAyRCA0MyA3MCA2
RCA0NyA2NSA3NCA1MCA3NCA0NyAgRVItQVNMLUNwbUdldFB0RwogICAgNTEyMDogNzAgNjkgNkYg
NEQgNkQgNjkgNkYgNDEgNjQgNjQgNzIgNjUgNzMgNzMgMjAgMjggIHBpb01taW9BZGRyZXNzICgK
ICAgIDUxMzA6IDI1IDY0IDI5IDIwIDIwIDRDIDZGIDYzIDYxIDZDIDMxIDIwIDNEIDIwIDMwIDc4
ICAlZCkgIExvY2FsMSA9IDB4CiAgICA1MTQwOiAyNSA1OCAyMCAyMCA0QyA2RiA2MyA2MSA2QyAz
MiAyMCAzRCAyMCAzMCA3OCAyNSAgJVggIExvY2FsMiA9IDB4JQogICAgNTE1MDogNTggMjAgMjAg
NDUgNTIgNTIgNEYgNTIgMjAgNDUgNTIgNTIgNEYgNTIgMjAgNDUgIFggIEVSUk9SIEVSUk9SIEUK
ICAgIDUxNjA6IDUyIDUyIDRGIDUyIDBBIDAwIDY4IDYxIDYyIDAwIDAwIDAwIEE0IDYwIDcwIDRE
ICBSUk9SLi5oYWIuLi4uYHBNCiAgICA1MTcwOiAzMCAzMSAzMSA2MiAwQSAxOSAwMCAwQSAwOCA2
MyBBMCA0NSAwNiA5MSA5MyA2MyAgMDExYi4uLi4uYy5FLi4uYwogICAgNTE4MDogMDAgOTMgNjMg
MEEgRkYgNEQgMzQgMzYgMzAgMEQgMjAgMjAgNEIgNDUgNTIgMkQgIC4uYy4uTTQ2MC4gIEtFUi0K
ICAgIDUxOTA6IDQxIDUzIDRDIDJEIDQzIDcwIDZEIDQ3IDY1IDc0IDUwIDc0IDQ3IDcwIDY5IDZG
ICBBU0wtQ3BtR2V0UHRHcGlvCiAgICA1MUEwOiA0RCA2RCA2OSA2RiA0MSA2NCA2NCA3MiA2NSA3
MyA3MyAyMCAyOCAyNSA2NCAyOSAgTW1pb0FkZHJlc3MgKCVkKQogICAgNTFCMDogMjAgMjAgNEMg
NkYgNjMgNjEgNkMgMzMgMjAgM0QgMjAgMzAgNzggMjUgNTggMjAgICAgTG9jYWwzID0gMHglWCAK
ICAgIDUxQzA6IDIwIDQ1IDUyIDUyIDRGIDUyIDIwIDQ1IDUyIDUyIDRGIDUyIDIwIDQ1IDUyIDUy
ICAgRVJST1IgRVJST1IgRVJSCiAgICA1MUQwOiA0RiA1MiAyMCAyRCAyMCAzMSAwQSAwMCA2OCA2
MyAwMCAwMCAwMCAwMCBBNCA2MCAgT1IgLSAxLi5oYy4uLi4uYAogICAgNTFFMDogNzIgNjEgNzkg
NjMgMEEgMTQgMDAgNjIgNzAgNEQgMzAgMzEgMzMgNjIgMEEgMDggIHJheWMuLi5icE0wMTNiLi4K
ICAgIDUxRjA6IDBBIDA4IDBBIDE4IDYzIEEwIDQ3IDA3IDkyIDkzIDYzIDBDIDAwIDA0IDA2IDAw
ICAuLi4uYy5HLi4uYy4uLi4uCiAgICA1MjAwOiBBMCA0MCAwNiA5MiA5NSA2OCAwQSAwOCA0RCAz
NCAzNiAzMCAwRCAyMCAyMCA0QiAgLkAuLi5oLi5NNDYwLiAgSwogICAgNTIxMDogNDUgNTIgMkQg
NDEgNTMgNEMgMkQgNDMgNzAgNkQgNDcgNjUgNzQgNTAgNzQgNDcgIEVSLUFTTC1DcG1HZXRQdEcK
ICAgIDUyMjA6IDcwIDY5IDZGIDREIDZEIDY5IDZGIDQxIDY0IDY0IDcyIDY1IDczIDczIDIwIDI4
ICBwaW9NbWlvQWRkcmVzcyAoCiAgICA1MjMwOiAyNSA2NCAyMCAzRSAzRCAyMCAzOCAyOSAyMCAy
MCA0RSA2RiA3NCAyMCA1MCA1MiAgJWQgPj0gOCkgIE5vdCBQUgogICAgNTI0MDogNEYgNEQgMzIg
MzEgMjAgMjAgNDUgNTIgNTIgNEYgNTIgMjAgNDUgNTIgNTIgNEYgIE9NMjEgIEVSUk9SIEVSUk8K
ICAgIDUyNTA6IDUyIDIwIDQ1IDUyIDUyIDRGIDUyIDBBIDAwIDY4IDAwIDAwIDAwIDAwIDAwIEE0
ICBSIEVSUk9SLi5oLi4uLi4uCiAgICA1MjYwOiA2MCA3MCAwQSAwMiA2MyA3MiA2MiA3OSA2MyAw
QSAwQyAwMCA2MiBBMSA0NiAxNyAgYHAuLmNyYnljLi4uYi5GLgogICAgNTI3MDogQTAgNDMgMTcg
OTIgOTUgNjggMEEgMTggNzAgNEQgMzAgMzQgMzkgNEQgMzEgMzIgIC5DLi4uaC4ucE0wNDlNMTIK
ICAgIDUyODA6IDM4IDBBIDkzIDY0IEEwIDRDIDA1IDkzIDY0IDAwIDREIDM0IDM2IDMwIDBEIDIw
ICA4Li5kLkwuLmQuTTQ2MC4gCiAgICA1MjkwOiAyMCA0QiA0NSA1MiAyRCA0MSA1MyA0QyAyRCA0
MyA3MCA2RCA0NyA2NSA3NCA1MCAgIEtFUi1BU0wtQ3BtR2V0UAogICAgNTJBMDogNzQgNDcgNzAg
NjkgNkYgNEQgNkQgNjkgNkYgNDEgNjQgNjQgNzIgNjUgNzMgNzMgIHRHcGlvTW1pb0FkZHJlc3MK
ICAgIDUyQjA6IDIwIDI4IDI1IDY0IDI5IDIwIDIwIDRDIDZGIDYzIDYxIDZDIDM0IDIwIDNEIDIw
ICAgKCVkKSAgTG9jYWw0ID0gCiAgICA1MkMwOiAzMCA3OCAyNSA1OCAyMCAyMCA0NSA1MiA1MiA0
RiA1MiAyMCA0NSA1MiA1MiA0RiAgMHglWCAgRVJST1IgRVJSTwogICAgNTJEMDogNTIgMjAgNDUg
NTIgNTIgNEYgNTIgMEEgMDAgNjggNjQgMDAgMDAgMDAgMDAgQTQgIFIgRVJST1IuLmhkLi4uLi4K
ICAgIDUyRTA6IDYwIEExIDA2IDdCIDY0IDBBIDFGIDY0IDcwIDREIDMwIDMxIDMxIDYyIDBBIDE5
ICBgLi57ZC4uZHBNMDExYi4uCiAgICA1MkYwOiAwMCAwQSAwOCA2MyBBMCA0NSAwNiA5MSA5MyA2
MyAwMCA5MyA2MyAwQSBGRiA0RCAgLi4uYy5FLi4uYy4uYy4uTQogICAgNTMwMDogMzQgMzYgMzAg
MEQgMjAgMjAgNEIgNDUgNTIgMkQgNDEgNTMgNEMgMkQgNDMgNzAgIDQ2MC4gIEtFUi1BU0wtQ3AK
ICAgIDUzMTA6IDZEIDQ3IDY1IDc0IDUwIDc0IDQ3IDcwIDY5IDZGIDREIDZEIDY5IDZGIDQxIDY0
ICBtR2V0UHRHcGlvTW1pb0FkCiAgICA1MzIwOiA2NCA3MiA2NSA3MyA3MyAyMCAyOCAyNSA2NCAy
OSAyMCAyMCA0QyA2RiA2MyA2MSAgZHJlc3MgKCVkKSAgTG9jYQogICAgNTMzMDogNkMgMzMgMjAg
M0QgMjAgMzAgNzggMjUgNTggMjAgMjAgNDUgNTIgNTIgNEYgNTIgIGwzID0gMHglWCAgRVJST1IK
ICAgIDUzNDA6IDIwIDQ1IDUyIDUyIDRGIDUyIDIwIDQ1IDUyIDUyIDRGIDUyIDIwIDJEIDIwIDMy
ICAgRVJST1IgRVJST1IgLSAyCiAgICA1MzUwOiAwQSAwMCA2OCA2MyAwMCAwMCAwMCAwMCBBNCA2
MCA3MiA2MSA3OSA2MyAwQSAxNCAgLi5oYy4uLi4uYHJheWMuLgogICAgNTM2MDogMDAgNjIgNzIg
NjIgNzkgNjQgMEEgMEYgMDAgNjIgNzAgNEQgMzAgMzEgMzEgNjIgIC5icmJ5ZC4uLmJwTTAxMWIK
ICAgIDUzNzA6IDBBIDE5IDAwIDBBIDA4IDYzIEEwIDQ1IDA2IDkxIDkzIDYzIDAwIDkzIDYzIDBB
ICAuLi4uLmMuRS4uLmMuLmMuCiAgICA1MzgwOiBGRiA0RCAzNCAzNiAzMCAwRCAyMCAyMCA0QiA0
NSA1MiAyRCA0MSA1MyA0QyAyRCAgLk00NjAuICBLRVItQVNMLQogICAgNTM5MDogNDMgNzAgNkQg
NDcgNjUgNzQgNTAgNzQgNDcgNzAgNjkgNkYgNEQgNkQgNjkgNkYgIENwbUdldFB0R3Bpb01taW8K
ICAgIDUzQTA6IDQxIDY0IDY0IDcyIDY1IDczIDczIDIwIDI4IDI1IDY0IDI5IDIwIDIwIDRDIDZG
ICBBZGRyZXNzICglZCkgIExvCiAgICA1M0IwOiA2MyA2MSA2QyAzMyAyMCAzRCAyMCAzMCA3OCAy
NSA1OCAyMCAyMCA0NSA1MiA1MiAgY2FsMyA9IDB4JVggIEVSUgogICAgNTNDMDogNEYgNTIgMjAg
NDUgNTIgNTIgNEYgNTIgMjAgNDUgNTIgNTIgNEYgNTIgMjAgMkQgIE9SIEVSUk9SIEVSUk9SIC0K
ICAgIDUzRDA6IDIwIDMzIDBBIDAwIDY4IDYzIDAwIDAwIDAwIDAwIEE0IDYwIDcyIDYxIDc5IDYz
ICAgMy4uaGMuLi4uLmByYXljCiAgICA1M0UwOiAwQSAxNCAwMCA2MiA3MCA0RCAzMCAzMSAzMSA2
MiAwQSAwNCAwMCAwQSAwOCA2MyAgLi4uYnBNMDExYi4uLi4uYwogICAgNTNGMDogQTAgNDUgMDYg
OTEgOTMgNjMgMDAgOTMgNjMgMEEgRkYgNEQgMzQgMzYgMzAgMEQgIC5FLi4uYy4uYy4uTTQ2MC4K
ICAgIDU0MDA6IDIwIDIwIDRCIDQ1IDUyIDJEIDQxIDUzIDRDIDJEIDQzIDcwIDZEIDQ3IDY1IDc0
ICAgIEtFUi1BU0wtQ3BtR2V0CiAgICA1NDEwOiA1MCA3NCA0NyA3MCA2OSA2RiA0RCA2RCA2OSA2
RiA0MSA2NCA2NCA3MiA2NSA3MyAgUHRHcGlvTW1pb0FkZHJlcwogICAgNTQyMDogNzMgMjAgMjgg
MjUgNjQgMjkgMjAgMjAgNEMgNkYgNjMgNjEgNkMgMzMgMjAgM0QgIHMgKCVkKSAgTG9jYWwzID0K
ICAgIDU0MzA6IDIwIDMwIDc4IDI1IDU4IDIwIDIwIDQ1IDUyIDUyIDRGIDUyIDIwIDQ1IDUyIDUy
ICAgMHglWCAgRVJST1IgRVJSCiAgICA1NDQwOiA0RiA1MiAyMCA0NSA1MiA1MiA0RiA1MiAyMCAy
RCAyMCAzNCAwQSAwMCA2OCA2MyAgT1IgRVJST1IgLSA0Li5oYwogICAgNTQ1MDogMDAgMDAgMDAg
MDAgQTQgNjAgQTAgNDYgMDYgOTIgOTMgN0IgNjMgMEEgMDIgMDAgIC4uLi4uYC5GLi4ue2MuLi4K
ICAgIDU0NjA6IDBBIDAyIDREIDM0IDM2IDMwIDBEIDIwIDIwIDRCIDQ1IDUyIDJEIDQxIDUzIDRD
ICAuLk00NjAuICBLRVItQVNMCiAgICA1NDcwOiAyRCA0MyA3MCA2RCA0NyA2NSA3NCA1MCA3NCA0
NyA3MCA2OSA2RiA0RCA2RCA2OSAgLUNwbUdldFB0R3Bpb01taQogICAgNTQ4MDogNkYgNDEgNjQg
NjQgNzIgNjUgNzMgNzMgMjAgMjggMjUgNjQgMjkgMjAgMjAgNEMgIG9BZGRyZXNzICglZCkgIEwK
ICAgIDU0OTA6IDZGIDYzIDYxIDZDIDMzIDIwIDNEIDIwIDMwIDc4IDI1IDU4IDIwIDIwIDQ1IDUy
ICBvY2FsMyA9IDB4JVggIEVSCiAgICA1NEEwOiA1MiA0RiA1MiAyMCA0NSA1MiA1MiA0RiA1MiAy
MCA0NSA1MiA1MiA0RiA1MiAyMCAgUk9SIEVSUk9SIEVSUk9SIAogICAgNTRCMDogMkQgMjAgMzUg
MEEgMDAgNjggNjMgMDAgMDAgMDAgMDAgQTQgNjAgNzAgNEQgMzAgIC0gNS4uaGMuLi4uLmBwTTAK
ICAgIDU0QzA6IDMxIDMzIDYyIDBBIDQwIDAwIDBBIDIwIDYzIDdCIDYzIDBDIEZCIEZGIEZGIEZG
ICAxM2IuQC4uIGN7Yy4uLi4uCiAgICA1NEQwOiA2MyBBMCA0OCAwNiA5MSA5MyA2MyAwMCA5MyA2
MyAwQyBGQiBGRiBGRiBGRiA0RCAgYy5ILi4uYy4uYy4uLi4uTQogICAgNTRFMDogMzQgMzYgMzAg
MEQgMjAgMjAgNEIgNDUgNTIgMkQgNDEgNTMgNEMgMkQgNDMgNzAgIDQ2MC4gIEtFUi1BU0wtQ3AK
ICAgIDU0RjA6IDZEIDQ3IDY1IDc0IDUwIDc0IDQ3IDcwIDY5IDZGIDREIDZEIDY5IDZGIDQxIDY0
ICBtR2V0UHRHcGlvTW1pb0FkCiAgICA1NTAwOiA2NCA3MiA2NSA3MyA3MyAyMCAyOCAyNSA2NCAy
OSAyMCAyMCA0QyA2RiA2MyA2MSAgZHJlc3MgKCVkKSAgTG9jYQogICAgNTUxMDogNkMgMzMgMjAg
M0QgMjAgMzAgNzggMjUgNTggMjAgMjAgNDUgNTIgNTIgNEYgNTIgIGwzID0gMHglWCAgRVJST1IK
ICAgIDU1MjA6IDIwIDQ1IDUyIDUyIDRGIDUyIDIwIDQ1IDUyIDUyIDRGIDUyIDIwIDJEIDIwIDM2
ICAgRVJST1IgRVJST1IgLSA2CiAgICA1NTMwOiAwQSAwMCA2OCA2MyAwMCAwMCAwMCAwMCBBNCA2
MCBBMSA0NiAwNCA0RCAzNCAzNiAgLi5oYy4uLi4uYC5GLk00NgogICAgNTU0MDogMzAgMEQgMjAg
MjAgNEIgNDUgNTIgMkQgNDEgNTMgNEMgMkQgNDMgNzAgNkQgNDcgIDAuICBLRVItQVNMLUNwbUcK
ICAgIDU1NTA6IDY1IDc0IDUwIDc0IDQ3IDcwIDY5IDZGIDREIDZEIDY5IDZGIDQxIDY0IDY0IDcy
ICBldFB0R3Bpb01taW9BZGRyCiAgICA1NTYwOiA2NSA3MyA3MyAyMCAyOCAyNSA2NCAyOSAyMCAy
MCA0QyA2RiA2MyA2MSA2QyAzMyAgZXNzICglZCkgIExvY2FsMwogICAgNTU3MDogMjAgM0QgMjAg
MzAgNzggMjUgNTggMEEgMDAgNjggNjMgMDAgMDAgMDAgMDAgQTQgICA9IDB4JVguLmhjLi4uLi4K
ICAgIDU1ODA6IDYzIDE0IDQ3IDBEIDREIDM0IDM0IDMwIDA5IDcwIDREIDM0IDMzIDQxIDY4IDYw
ICBjLkcuTTQ0MC5wTTQzQWhgCiAgICA1NTkwOiBBMCA0NiAwNSA5MyA2MCAwMCA0RCAzNCAzNiAz
MCAwRCAyMCAyMCA0QiA0NSA1MiAgLkYuLmAuTTQ2MC4gIEtFUgogICAgNTVBMDogMkQgNDEgNTMg
NEMgMkQgNDMgNzAgNkQgNTAgNzQgNTIgNjUgNjEgNjQgNDcgNzAgIC1BU0wtQ3BtUHRSZWFkR3AK
ICAgIDU1QjA6IDY5IDZGIDIwIDIwIDI4IDI1IDY0IDI5IDIwIDNEIDIwIDI1IDY0IDIwIDIwIDRE
ICBpbyAgKCVkKSA9ICVkICBNCiAgICA1NUMwOiA0RCA0OSA0RiAyMCAzRCAyMCAzMCA3OCAyNSA1
OCAyMCAyMCA0NSA1MiA1MiA0RiAgTUlPID0gMHglWCAgRVJSTwogICAgNTVEMDogNTIgMjAgNDUg
NTIgNTIgNEYgNTIgMjAgNDUgNTIgNTIgNEYgNTIgMEEgMDAgNjggIFIgRVJST1IgRVJST1IuLmgK
ICAgIDU1RTA6IDYwIDYwIDAwIDAwIDAwIEE0IDYwIEEwIDBCIDkyIDk1IDY4IDBBIDE4IDc0IDY4
ICBgYC4uLi5gLi4uLmguLnRoCiAgICA1NUYwOiAwQSAxOCA2MSBBMSAwNCA3MCA2OCA2MSA3MCA0
RCAzMCAzMSAzMyA2MCAwMCA2MSAgLi5hLi5waGFwTTAxM2AuYQogICAgNTYwMDogMDEgNjIgQTAg
MEQgOTMgNjIgMDEgNEQgMzAgMzEgMzQgNjAgMDAgNjEgMDEgMDAgIC5iLi4uYi5NMDE0YC5hLi4K
ICAgIDU2MTA6IDcwIDREIDMwIDMxIDMzIDYwIDBBIDA0IDYxIDAxIDYyIDREIDM0IDM2IDMwIDBE
ICBwTTAxM2AuLmEuYk00NjAuCiAgICA1NjIwOiAyMCAyMCA0QiA0NSA1MiAyRCA0MSA1MyA0QyAy
RCA0MyA3MCA2RCA1MCA3NCA1MiAgICBLRVItQVNMLUNwbVB0UgogICAgNTYzMDogNjUgNjEgNjQg
NDcgNzAgNjkgNkYgMjAgMjAgMjggMjUgNjQgMjkgMjAgM0QgMjAgIGVhZEdwaW8gICglZCkgPSAK
ICAgIDU2NDA6IDI1IDY0IDIwIDIwIDREIDREIDQ5IDRGIDIwIDNEIDIwIDMwIDc4IDI1IDU4IDBB
ICAlZCAgTU1JTyA9IDB4JVguCiAgICA1NjUwOiAwMCA2OCA2MiA2MCAwMCAwMCAwMCBBNCA2MiAx
NCA0MyAwRCA0RCAzNCAzNCAzMSAgLmhiYC4uLi5iLkMuTTQ0MQogICAgNTY2MDogMEEgNzAgNEQg
MzQgMzMgNDEgNjggNjAgQTAgNDQgMDUgOTMgNjAgMDAgNEQgMzQgIC5wTTQzQWhgLkQuLmAuTTQK
ICAgIDU2NzA6IDM2IDMwIDBEIDIwIDIwIDRCIDQ1IDUyIDJEIDQxIDUzIDRDIDJEIDQzIDcwIDZE
ICA2MC4gIEtFUi1BU0wtQ3BtCiAgICA1NjgwOiA1MCA3NCA1NyA3MiA2OSA3NCA2NSA0NyA3MCA2
OSA2RiAyMCAyOCAyNSA2NCAyQyAgUHRXcml0ZUdwaW8gKCVkLAogICAgNTY5MDogMjAgMjUgNjQg
MjkgMjAgMjAgMjAgNEQgNEQgNDkgNEYgMjAgM0QgMjAgMzAgNzggICAlZCkgICBNTUlPID0gMHgK
ICAgIDU2QTA6IDI1IDU4IDIwIDIwIDQ1IDUyIDUyIDRGIDUyIDIwIDQ1IDUyIDUyIDRGIDUyIDIw
ICAlWCAgRVJST1IgRVJST1IgCiAgICA1NkIwOiA0NSA1MiA1MiA0RiA1MiAwQSAwMCA2OCA2OSA2
MCAwMCAwMCAwMCBBMCAwQiA5MiAgRVJST1IuLmhpYC4uLi4uLgogICAgNTZDMDogOTUgNjggMEEg
MTggNzQgNjggMEEgMTggNjEgQTEgMDQgNzAgNjggNjEgNzAgNEQgIC5oLi50aC4uYS4ucGhhcE0K
ICAgIDU2RDA6IDMwIDMxIDMzIDYwIDAwIDYxIDAxIDYyIEEwIDBFIDkyIDkzIDYyIDAxIDREIDMw
ICAwMTNgLmEuYi4uLi5iLk0wCiAgICA1NkUwOiAzMSAzNCA2MCAwMCA2MSAwMSAwMSA0RCAzMCAz
MSAzNCA2MCAwQSAwOCA2MSAwMSAgMTRgLmEuLk0wMTRgLi5hLgogICAgNTZGMDogNjkgNEQgMzQg
MzYgMzAgMEQgMjAgMjAgNEIgNDUgNTIgMkQgNDEgNTMgNEMgMkQgIGlNNDYwLiAgS0VSLUFTTC0K
ICAgIDU3MDA6IDQzIDcwIDZEIDUwIDc0IDU3IDcyIDY5IDc0IDY1IDQ3IDcwIDY5IDZGIDIwIDI4
ICBDcG1QdFdyaXRlR3BpbyAoCiAgICA1NzEwOiAyNSA2NCAyQyAyMCAyNSA2NCAyOSAyMCAyMCAy
MCA0RCA0RCA0OSA0RiAyMCAzRCAgJWQsICVkKSAgIE1NSU8gPQogICAgNTcyMDogMjAgMzAgNzgg
MjUgNTggMEEgMDAgNjggNjkgNjAgMDAgMDAgMDAgMTQgNEIgMUIgICAweCVYLi5oaWAuLi4uSy4K
ICAgIDU3MzA6IDREIDMwIDMwIDM5IDA5IDdBIDY4IDBBIDA4IDYwIDdCIDYwIDBBIDA3IDYwIDdC
ICBNMDA5LnpoLi5ge2AuLmB7CiAgICA1NzQwOiA2OCAwQSBGRiA2MSA3MCAwMCA2MiBBMCA0QSAw
QiA5MSA5MyA2MCAwMCA5MyA2MCAgaC4uYXAuYi5KLi4uYC4uYAogICAgNTc1MDogMDEgQTAgNEIg
MDkgOTIgOTUgNEQgMzAgMzggMzUgMEEgMDIgQTAgM0UgOTMgN0IgIC4uSy4uLk0wODUuLi4+LnsK
ICAgIDU3NjA6IDY4IDBDIDAwIDAwIDAwIEY4IDAwIDAwIEEwIDFBIDkzIDYwIDAwIDcwIDREIDMw
ICBoLi4uLi4uLi4uLmAucE0wCiAgICA1NzcwOiAzMSAzMSA3MiA0RCAzMCAzOCAzNCAwQiAwMiAx
NSAwMCA3NyA2MSAwQSAwNCAwMCAgMTFyTTA4NC4uLi53YS4uLgogICAgNTc4MDogMDAgMDEgNjIg
QTEgMTcgNzAgNEQgMzAgMzEgMzEgNzIgNEQgMzAgMzggMzQgMEIgIC4uYi4ucE0wMTFyTTA4NC4K
ICAgIDU3OTA6IDAyIDEyIDAwIDc3IDYxIDBBIDA0IDAwIDAwIDAxIDYyIEExIDQxIDA1IDdBIDY4
ICAuLi53YS4uLi4uYi5BLnpoCiAgICA1N0EwOiAwQSAxRiA2MyA3QiA2MyAwMSA2MyA3QSA2OCAw
QSAxRCA2NCA3QiA2NCAwQSAwMyAgLi5je2MuY3poLi5ke2QuLgogICAgNTdCMDogNjQgN0EgNjgg
MEEgMUIgNjUgN0IgNjUgMEEgMDMgNjUgQTAgMTAgOTMgNjAgMDAgIGR6aC4uZXtlLi5lLi4uYC4K
ICAgIDU3QzA6IDcyIDBDIDAwIDI1IEQwIDAyIDc3IDYxIDBBIDA0IDAwIDY2IEExIDBEIDcyIDBD
ICByLi4lLi53YS4uLmYuLnIuCiAgICA1N0QwOiAwMCAyMiBEMCAwMiA3NyA2MSAwQSAwNCAwMCA2
NiA3MCA0RCAzMiAzNCAzOSA2MyAgLiIuLndhLi4uZnBNMjQ5YwogICAgNTdFMDogNjQgNjUgNjYg
NjIgN0EgNjIgMEEgMTAgNjIgN0IgNjIgMDEgNjIgQTEgMTQgNzAgIGRlZmJ6Yi4uYntiLmIuLnAK
ICAgIDU3RjA6IDREIDMwIDMxIDMxIDcyIDREIDMwIDM4IDM0IDBCIDAwIDAxIDAwIDYxIDBBIDA3
ICBNMDExck0wODQuLi4uYS4uCiAgICA1ODAwOiAwMSA2MiBBMSA0MyAwQiBBMCA0QiAwNSA5MSA5
MyA2MCAwQSAwNCA5MyA2MCAwQSAgLmIuQy4uSy4uLmAuLi5gLgogICAgNTgxMDogMDUgN0EgNjgg
MEEgMUYgNjMgN0IgNjMgMDEgNjMgN0EgNjggMEEgMUQgNjQgN0IgIC56aC4uY3tjLmN6aC4uZHsK
ICAgIDU4MjA6IDY0IDBBIDAzIDY0IDdBIDY4IDBBIDFCIDY1IDdCIDY1IDBBIDAzIDY1IEEwIDEx
ICBkLi5kemguLmV7ZS4uZS4uCiAgICA1ODMwOiA5MyA2MCAwQSAwNCA3MiAwQyAwMCAyNSBEMCAw
MiA3NyA2MSAwQSAwNCAwMCA2NiAgLmAuLnIuLiUuLndhLi4uZgogICAgNTg0MDogQTEgMEQgNzIg
MEMgMDAgMjIgRDAgMDIgNzcgNjEgMEEgMDQgMDAgNjYgNzAgNEQgIC4uci4uIi4ud2EuLi5mcE0K
ICAgIDU4NTA6IDM0IDMyIDMyIDYzIDY0IDY1IDY2IDYyIDdBIDYyIDBBIDEwIDYyIDdCIDYyIDAx
ICA0MjJjZGVmYnpiLi5ie2IuCiAgICA1ODYwOiA2MiBBMSA0NCAwNSBBMCAyNCA5MyA2MCAwQSAw
MiBBMCAxOCA5MyA0RCAzMCAzNCAgYi5ELi4kLmAuLi4uLk0wNAogICAgNTg3MDogMzkgNEQgMzEg
MzIgMzggMEEgNzcgMDEgNzAgNEQgMzAgMzMgMzggNzIgNjEgMEEgIDlNMTI4LncucE0wMzhyYS4K
ICAgIDU4ODA6IDA4IDAwIDYyIEExIDA1IDcwIDBBIEZGIDYyIEExIDJDIEEwIDBDIDkzIDYwIDBB
ICAuLmIuLnAuLmIuLC4uLmAuCiAgICA1ODkwOiAwMyA3MCA0RCAzNCAzNCAzMCA2MSA2MiBBMSAx
RCBBMCAwQyA5MyA2MCAwQSAwNiAgLnBNNDQwYWIuLi4uLmAuLgogICAgNThBMDogNzAgNEQgMzQg
MzEgMzIgNjggNjIgQTEgMEUgQTAgMEMgOTMgNjAgMEEgMDcgNzAgIHBNNDEyaGIuLi4uLmAuLnAK
ICAgIDU4QjA6IDREIDM0IDQ1IDMzIDY4IDYyIDREIDM0IDM2IDMwIDBEIDIwIDIwIDRCIDQ1IDUy
ICBNNEUzaGJNNDYwLiAgS0VSCiAgICA1OEMwOiAyRCA0MSA1MyA0QyAyRCA0MyA3MCA2RCA1MiA2
NSA2MSA2NCA0NyA3MCA2OSA2RiAgLUFTTC1DcG1SZWFkR3BpbwogICAgNThEMDogMjAgMjAgMjgg
MzAgNzggMjUgNTggMjkgMjAgM0QgMjAgMzAgNzggMjUgNTggMEEgICAgKDB4JVgpID0gMHglWC4K
ICAgIDU4RTA6IDAwIDY4IDYyIDAwIDAwIDAwIDAwIEE0IDYyIDE0IDQ3IDFGIDREIDMwIDMxIDMw
ICAuaGIuLi4uLmIuRy5NMDEwCiAgICA1OEYwOiAwQSA3QSA2OCAwQSAwOCA2MCA3QiA2MCAwQSAw
NyA2MCA3QiA2OCAwQSBGRiA2MSAgLnpoLi5ge2AuLmB7aC4uYQogICAgNTkwMDogNEQgMzQgMzYg
MzAgMEQgMjAgMjAgNEIgNDUgNTIgMkQgNDEgNTMgNEMgMkQgNDMgIE00NjAuICBLRVItQVNMLUMK
ICAgIDU5MTA6IDcwIDZEIDU3IDcyIDY5IDc0IDY1IDQ3IDcwIDY5IDZGIDIwIDI4IDMwIDc4IDI1
ICBwbVdyaXRlR3BpbyAoMHglCiAgICA1OTIwOiA1OCAyQyAyMCAzMCA3OCAyNSA1OCAyOSAwQSAw
MCA2OCA2OSAwMCAwMCAwMCAwMCAgWCwgMHglWCkuLmhpLi4uLgogICAgNTkzMDogQTAgNEUgMEUg
OTEgOTMgNjAgMDAgOTMgNjAgMDEgQTAgNEUgMEIgOTIgOTUgNEQgIC5OLi4uYC4uYC4uTi4uLk0K
ICAgIDU5NDA6IDMwIDM4IDM1IDBBIDAyIEEwIDQ5IDA0IDkzIDdCIDY4IDBDIDAwIDAwIDAwIEY4
ICAwODUuLi5JLi57aC4uLi4uCiAgICA1OTUwOiAwMCAwMCBBMCAxRiA5MyA2MCAwMCA0RCAzMCAz
MSAzMiA3MiA0RCAzMCAzOCAzNCAgLi4uLi5gLk0wMTJyTTA4NAogICAgNTk2MDogMEIgMDIgMTUg
MDAgNzcgNjEgMEEgMDQgMDAgMEEgMDYgMEEgMDIgN0QgMEEgMDIgIC4uLi53YS4uLi4uLi59Li4K
ICAgIDU5NzA6IDY5IDAwIEExIDFDIDREIDMwIDMxIDMyIDcyIDREIDMwIDM4IDM0IDBCIDAyIDEy
ICBpLi4uTTAxMnJNMDg0Li4uCiAgICA1OTgwOiAwMCA3NyA2MSAwQSAwNCAwMCAwQSAwNiAwQSAw
MiA3RCAwQSAwMiA2OSAwMCBBMSAgLndhLi4uLi4uLn0uLmkuLgogICAgNTk5MDogNDkgMDYgN0Eg
NjggMEEgMUYgNjMgN0IgNjMgMDEgNjMgN0EgNjggMEEgMUQgNjQgIEkuemguLmN7Yy5jemguLmQK
ICAgIDU5QTA6IDdCIDY0IDBBIDAzIDY0IDdBIDY4IDBBIDFCIDY1IDdCIDY1IDBBIDAzIDY1IEEw
ICB7ZC4uZHpoLi5le2UuLmUuCiAgICA1OUIwOiAxMCA5MyA2MCAwMCA3MiAwQyAwMCAyNSBEMCAw
MiA3NyA2MSAwQSAwNCAwMCA2NiAgLi5gLnIuLiUuLndhLi4uZgogICAgNTlDMDogQTEgMEQgNzIg
MEMgMDAgMjIgRDAgMDIgNzcgNjEgMEEgMDQgMDAgNjYgNzAgNEQgIC4uci4uIi4ud2EuLi5mcE0K
ICAgIDU5RDA6IDMyIDM0IDM5IDYzIDY0IDY1IDY2IDYyIDdCIDYyIDBDIEZGIEZGIDNGIENGIDYy
ICAyNDljZGVmYntiLi4uPy5iCiAgICA1OUUwOiA3RCA2MiAwQyAwMCAwMCA4MCAwMCA2MiA3RCA2
MiA3OSA2OSAwQSAxNiAwMCA2MiAgfWIuLi4uLmJ9YnlpLi4uYgogICAgNTlGMDogNEQgMzIgMzUg
MzAgNjMgNjQgNjUgNjYgNjIgQTEgMjUgNEQgMzAgMzEgMzIgNzIgIE0yNTBjZGVmYi4lTTAxMnIK
ICAgIDVBMDA6IDREIDMwIDM4IDM0IDBCIDAwIDAxIDAwIDYxIDBBIDA2IDAxIDY5IDREIDMwIDMx
ICBNMDg0Li4uLmEuLi5pTTAxCiAgICA1QTEwOiAzMiA3MiA0RCAzMCAzOCAzNCAwQiAwMCAwMSAw
MCA2MSAwQSAwNSAwMSAwMCBBMSAgMnJNMDg0Li4uLmEuLi4uLgogICAgNUEyMDogNDEgMEMgQTAg
NDMgMDcgOTEgOTMgNjAgMEEgMDQgOTMgNjAgMEEgMDUgN0EgNjggIEEuLkMuLi5gLi4uYC4uemgK
ICAgIDVBMzA6IDBBIDFGIDYzIDdCIDYzIDAxIDYzIDdBIDY4IDBBIDFEIDY0IDdCIDY0IDBBIDAz
ICAuLmN7Yy5jemguLmR7ZC4uCiAgICA1QTQwOiA2NCA3QSA2OCAwQSAxQiA2NSA3QiA2NSAwQSAw
MyA2NSBBMCAxMSA5MyA2MCAwQSAgZHpoLi5le2UuLmUuLi5gLgogICAgNUE1MDogMDQgNzIgMEMg
MDAgMjUgRDAgMDIgNzcgNjEgMEEgMDQgMDAgNjYgQTEgMEQgNzIgIC5yLi4lLi53YS4uLmYuLnIK
ICAgIDVBNjA6IDBDIDAwIDIyIEQwIDAyIDc3IDYxIDBBIDA0IDAwIDY2IDcwIDREIDM0IDMyIDMy
ICAuLiIuLndhLi4uZnBNNDIyCiAgICA1QTcwOiA2MyA2NCA2NSA2NiA2MiA3QiA2MiAwQyBGRiBG
RiAzRiBDRiA2MiA3RCA2MiAwQyAgY2RlZmJ7Yi4uLj8uYn1iLgogICAgNUE4MDogMDAgMDAgODAg
MDAgNjIgN0QgNjIgNzkgNjkgMEEgMTYgMDAgNjIgNEQgMzQgMzIgIC4uLi5ifWJ5aS4uLmJNNDIK
ICAgIDVBOTA6IDMzIDYzIDY0IDY1IDY2IDYyIEExIDRBIDA0IEEwIDFEIDkzIDYwIDBBIDAyIEEw
ICAzY2RlZmIuSi4uLi5gLi4uCiAgICA1QUEwOiAxNyA5MyA0RCAzMCAzNCAzOSA0RCAzMSAzMiAz
OCAwQSA3NyAwMSA0RCAzMCAzMyAgLi5NMDQ5TTEyOC53Lk0wMwogICAgNUFCMDogMzkgNzIgNjEg
MEEgMDggMDAgNjkgQTEgMjkgQTAgMEIgOTMgNjAgMEEgMDMgNEQgIDlyYS4uLmkuKS4uLmAuLk0K
ICAgIDVBQzA6IDM0IDM0IDMxIDYxIDY5IEExIDFCIEEwIDBCIDkzIDYwIDBBIDA2IDREIDM0IDMx
ICA0NDFhaS4uLi4uYC4uTTQxCiAgICA1QUQwOiAzMyA2OCA2OSBBMSAwRCBBMCAwQiA5MyA2MCAw
QSAwNyA0RCAzNCA0NSAzNCA2OCAgM2hpLi4uLi5gLi5NNEU0aAogICAgNUFFMDogNjkgMDggNEQg
MzAgMzMgMzcgMTEgMUEgMEEgMTcgN0UgODEgMDMgMTYgMDQgMTUgIGkuTTAzNy4uLi5+Li4uLi4K
ICAgIDVBRjA6IDBFIDA1IDAyIDIwIDA2IDA3IDEwIDExIDEyIDE4IDE3IDE5IDBCIDAxIDBGIDBE
ICAuLi4gLi4uLi4uLi4uLi4uCiAgICA1QjAwOiAwOSAwOCA0RCAzMiAzMiAzNyAxMSAxQiAwQSAx
OCA0MSA0MiAwMyAxNiAwNCAxNSAgLi5NMjI3Li4uLkFCLi4uLgogICAgNUIxMDogMEUgMDUgMDIg
NDQgMDYgMDcgMTAgMTEgMTIgMTggMTcgNDUgMEIgMDEgMEYgMEQgIC4uLkQuLi4uLi4uRS4uLi4K
ICAgIDVCMjA6IDA5IDA4IDA4IDREIDMzIDMyIDM5IDExIDFCIDBBIDE4IDU5IDVBIDAzIDE2IDA0
ICAuLi5NMzI5Li4uLllaLi4uCiAgICA1QjMwOiAxNSA1QiAwNSAwMiA1NiAwNiA0QyAxMCAxMSAx
MiAxOCAxNyA4MSA1NCAwMSAyOCAgLlsuLlYuTC4uLi4uLlQuKAogICAgNUI0MDogMDAgMDkgMDgg
MDggNEQgMzMgMzIgNDEgMTEgMUIgMEEgMTggNTkgNUEgMDMgMTYgIC4uLi5NMzJBLi4uLllaLi4K
ICAgIDVCNTA6IDA0IDE1IDVCIDA1IDAyIDU2IDA2IDRDIDEwIDExIDFEIDFFIDE3IDgxIDU0IDAx
ICAuLlsuLlYuTC4uLi4uLlQuCiAgICA1QjYwOiAyOCAwMCAwOSAwOCAwOCA0RCAzMyAzMyAzMCAx
MSAxQiAwQSAxOCA1OSA1QSAwMyAgKC4uLi5NMzMwLi4uLllaLgogICAgNUI3MDogMTYgMDQgMTUg
NUIgMDUgMDIgNTYgMDYgMDcgMTAgMTEgMTIgMTggMTcgODEgNTQgIC4uLlsuLlYuLi4uLi4uLlQK
ICAgIDVCODA6IDAxIDI4IDAwIDA5IDA4IDA4IDREIDMzIDMyIDQyIDExIDFCIDBBIDE4IDU5IDVB
ICAuKC4uLi5NMzJCLi4uLllaCiAgICA1QjkwOiAwMyAxNiAwNCAwQiA1QiAwNSAwMiAxRCAwNiAw
NyAxMCAxMSAxMiAxOCAxNyAyMCAgLi4uLlsuLi4uLi4uLi4uIAogICAgNUJBMDogNTQgMDEgMjgg
MDAgMDkgMDggMDggNEQgMzMgMzIgNDMgMTEgMUIgMEEgMTggNTkgIFQuKC4uLi5NMzJDLi4uLlkK
ICAgIDVCQjA6IDczIDAzIDE2IDA0IDE1IDc0IDA1IDAyIDU2IDA2IDRDIDEwIDExIDE4IDFBIDE3
ICBzLi4uLnQuLlYuTC4uLi4uCiAgICA1QkMwOiA4MSAxQyAwMSA2OCAwMCA2OSA2QSAxNCA0QiAy
NCA0RCAzMCAzMiAzOSAwOSBBMCAgLi4uaC5pai5LJE0wMjkuLgogICAgNUJEMDogMjQgOTMgNEQg
MzAgMzggMzUgMEEgMDIgQTQgNEQgMzAgMzEgMzEgNzIgNEQgMzAgICQuTTA4NS4uLk0wMTFyTTAK
ICAgIDVCRTA6IDM4IDM0IDBCIDAyIDE1IDAwIDc3IDgzIDg4IDREIDMwIDMzIDM3IDY4IDAwIDBB
ICA4NC4uLi53Li5NMDM3aC4uCiAgICA1QkYwOiAwNCAwMCAwMCAwMSBBMSA0QyAyMSBBMCAxQSA5
NSA0RCAzMCAzOCAzNSAwQSAwMiAgLi4uLi5MIS4uLk0wODUuLgogICAgNUMwMDogQTQgNEQgMzAg
MzEgMzEgNzIgNEQgMzAgMzggMzQgMEIgNjAgMDEgMDAgNjggMEEgIC5NMDExck0wODQuYC4uaC4K
ICAgIDVDMTA6IDA3IDAxIEExIDRFIDFGIEEwIDJDIDkwIDk0IDREIDMwIDM4IDM1IDBBIDAyIDk1
ICAuLi5OLi4sLi5NMDg1Li4uCiAgICA1QzIwOiA0RCAzMCAzOCAzNSAwQSAwOCBBNCA0RCAzMCAz
MSAzMSA3MiA0RCAzMCAzOCAzNCAgTTA4NS4uLk0wMTFyTTA4NAogICAgNUMzMDogMEIgMDIgMTUg
MDAgNzcgODMgODggNEQgMzIgMzIgMzcgNjggMDAgMEEgMDQgMDAgIC4uLi53Li5NMjI3aC4uLi4K
ICAgIDVDNDA6IDAwIDAxIEExIDRFIDFDIEEwIDI0IDkzIDREIDMwIDM4IDM1IDBBIDA4IEE0IDRE
ICAuLi5OLi4kLk0wODUuLi5NCiAgICA1QzUwOiAzMCAzMSAzMSA3MiA0RCAzMCAzOCAzNCAwQiAw
MiAxNSAwMCA3NyA4MyA4OCA0RCAgMDExck0wODQuLi4udy4uTQogICAgNUM2MDogMzMgMzIgMzkg
NjggMDAgMEEgMDQgMDAgMDAgMDEgQTEgNDYgMUEgQTAgMkMgOTEgIDMyOWguLi4uLi4uRi4uLC4K
ICAgIDVDNzA6IDkzIDREIDMwIDM4IDM1IDBBIDA5IDkzIDREIDMwIDM4IDM1IDBBIDBBIEE0IDRE
ICAuTTA4NS4uLk0wODUuLi5NCiAgICA1QzgwOiAzMCAzMSAzMSA3MiA0RCAzMCAzOCAzNCAwQiAw
MiAxNSAwMCA3NyA4MyA4OCA0RCAgMDExck0wODQuLi4udy4uTQogICAgNUM5MDogMzMgMzMgMzAg
NjggMDAgMEEgMDQgMDAgMDAgMDEgQTEgNDYgMTcgQTAgMkMgOTEgIDMzMGguLi4uLi4uRi4uLC4K
ICAgIDVDQTA6IDkzIDREIDMwIDM4IDM1IDBBIDBCIDkzIDREIDMwIDM4IDM1IDBBIDBDIEE0IDRE
ICAuTTA4NS4uLk0wODUuLi5NCiAgICA1Q0IwOiAzMCAzMSAzMSA3MiA0RCAzMCAzOCAzNCAwQiAw
MiAxNSAwMCA3NyA4MyA4OCA0RCAgMDExck0wODQuLi4udy4uTQogICAgNUNDMDogMzMgMzIgNDEg
NjggMDAgMEEgMDQgMDAgMDAgMDEgQTEgNDYgMTQgQTAgMkMgOTEgIDMyQWguLi4uLi4uRi4uLC4K
ICAgIDVDRDA6IDkzIDREIDMwIDM4IDM1IDBBIDBEIDkzIDREIDMwIDM4IDM1IDBBIDBFIEE0IDRE
ICAuTTA4NS4uLk0wODUuLi5NCiAgICA1Q0UwOiAzMCAzMSAzMSA3MiA0RCAzMCAzOCAzNCAwQiAw
MiAxNSAwMCA3NyA4MyA4OCA0RCAgMDExck0wODQuLi4udy4uTQogICAgNUNGMDogMzMgMzMgMzAg
NjggMDAgMEEgMDQgMDAgMDAgMDEgQTEgNDYgMTEgQTAgMjQgOTMgIDMzMGguLi4uLi4uRi4uJC4K
ICAgIDVEMDA6IDREIDMwIDM4IDM1IDBBIDBGIEE0IDREIDMwIDMxIDMxIDcyIDREIDMwIDM4IDM0
ICBNMDg1Li4uTTAxMXJNMDg0CiAgICA1RDEwOiAwQiAwMiAxNSAwMCA3NyA4MyA4OCA0RCAzMyAz
MiA0MiA2OCAwMCAwQSAwNCAwMCAgLi4uLncuLk0zMkJoLi4uLgogICAgNUQyMDogMDAgMDEgQTEg
NEUgMEUgQTAgMjQgOTMgNEQgMzAgMzggMzUgMEEgMTAgQTQgNEQgIC4uLk4uLiQuTTA4NS4uLk0K
ICAgIDVEMzA6IDMwIDMxIDMxIDcyIDREIDMwIDM4IDM0IDBCIDAyIDE1IDAwIDc3IDgzIDg4IDRE
ICAwMTFyTTA4NC4uLi53Li5NCiAgICA1RDQwOiAzMyAzMiA0MiA2OCAwMCAwQSAwNCAwMCAwMCAw
MSBBMSA0NiAwQyBBMCAyNCA5MyAgMzJCaC4uLi4uLi5GLi4kLgogICAgNUQ1MDogNEQgMzAgMzgg
MzUgMEEgMTIgQTQgNEQgMzAgMzEgMzEgNzIgNEQgMzAgMzggMzQgIE0wODUuLi5NMDExck0wODQK
ICAgIDVENjA6IDBCIDAyIDE1IDAwIDc3IDgzIDg4IDREIDMzIDMyIDQyIDY4IDAwIDBBIDA0IDAw
ICAuLi4udy4uTTMyQmguLi4uCiAgICA1RDcwOiAwMCAwMSBBMSA0RSAwOSBBMCAyNCA5MyA0RCAz
MCAzOCAzNSAwQSAxMyBBNCA0RCAgLi4uTi4uJC5NMDg1Li4uTQogICAgNUQ4MDogMzAgMzEgMzEg
NzIgNEQgMzAgMzggMzQgMEIgMDIgMTUgMDAgNzcgODMgODggNEQgIDAxMXJNMDg0Li4uLncuLk0K
ICAgIDVEOTA6IDMzIDMyIDQyIDY4IDAwIDBBIDA0IDAwIDAwIDAxIEExIDQ2IDA3IEEwIDI0IDkz
ICAzMkJoLi4uLi4uLkYuLiQuCiAgICA1REEwOiA0RCAzMCAzOCAzNSAwQSAxNCBBNCA0RCAzMCAz
MSAzMSA3MiA0RCAzMCAzOCAzNCAgTTA4NS4uLk0wMTFyTTA4NAogICAgNURCMDogMEIgMDIgMTUg
MDAgNzcgODMgODggNEQgMzMgMzIgNDIgNjggMDAgMEEgMDQgMDAgIC4uLi53Li5NMzJCaC4uLi4K
ICAgIDVEQzA6IDAwIDAxIEExIDRFIDA0IEEwIDI0IDkzIDREIDMwIDM4IDM1IDBBIDE1IEE0IDRE
ICAuLi5OLi4kLk0wODUuLi5NCiAgICA1REQwOiAzMCAzMSAzMSA3MiA0RCAzMCAzOCAzNCAwQiAw
MiAxNSAwMCA3NyA4MyA4OCA0RCAgMDExck0wODQuLi4udy4uTQogICAgNURFMDogMzMgMzIgNDIg
NjggMDAgMEEgMDQgMDAgMDAgMDEgQTEgMjYgQTAgMjQgOTMgNEQgIDMyQmguLi4uLi4uJi4kLk0K
ICAgIDVERjA6IDMwIDM4IDM1IDBBIDExIEE0IDREIDMwIDMxIDMxIDcyIDREIDMwIDM4IDM0IDBC
ICAwODUuLi5NMDExck0wODQuCiAgICA1RTAwOiAwMiAxNSAwMCA3NyA4MyA4OCA0RCAzMyAzMiA0
MyA2OCAwMCAwQSAwNCAwMCAwMCAgLi4udy4uTTMyQ2guLi4uLgogICAgNUUxMDogMDEgQTQgMDAg
MTQgMzMgNEQgMzAgMzMgMzEgMDkgNzAgNEQgMzAgMzEgMzEgNzIgIC4uLi4zTTAzMS5wTTAxMXIK
ICAgIDVFMjA6IDREIDMwIDM4IDM0IDBCIDQwIDAyIDAwIDY4IDAwIDBBIDA1IDYwIEE0IDREIDMw
ICBNMDg0LkAuLmguLi5gLk0wCiAgICA1RTMwOiAzMSAzMSA3MiA0RCAzMCAzOCAzNCAwQiAwOCAw
MiAwMCA3OCA2MCAwQSAwOCAwMCAgMTFyTTA4NC4uLi54YC4uLgogICAgNUU0MDogMDAgN0IgNjAg
MEEgMDcgMDAgMDEgMTQgMzMgNEQgMzAgMzMgMzIgMEEgNzAgNEQgIC57YC4uLi4uM00wMzIucE0K
ICAgIDVFNTA6IDMwIDMxIDMxIDcyIDREIDMwIDM4IDM0IDBCIDQwIDAyIDAwIDY4IDAwIDBBIDA1
ICAwMTFyTTA4NC5ALi5oLi4uCiAgICA1RTYwOiA2MCA0RCAzMCAzMSAzMiA3MiA0RCAzMCAzOCAz
NCAwQiAwOCAwMiAwMCA3OCA2MCAgYE0wMTJyTTA4NC4uLi54YAogICAgNUU3MDogMEEgMDggMDAg
MDAgN0IgNjAgMEEgMDcgMDAgMDEgNjkgMTQgNEYgMDYgNEQgMzQgIC4uLi57YC4uLi5pLk8uTTQK
ICAgIDVFODA6IDM3IDM3IDBBIEEwIDA2IDkzIDY5IDAwIEE0IDAwIDVCIDgwIDU2IDQxIDUyIDRE
ICA3Ny4uLi5pLi4uWy5WQVJNCiAgICA1RTkwOiAwMSA2OCAwQSAwOSA1QiA4MSAwRSA1NiA0MSA1
MiA0RCAwMSAwMCA0MCAwNCA1MyAgLmguLlsuLlZBUk0uLkAuUwogICAgNUVBMDogNEQgNDIgMzgg
MDggNzAgNjkgNjAgQTIgNDEgMDQgOTQgNjAgMDAgN0QgNTMgNEQgIE1COC5waWAuQS4uYC59U00K
ICAgIDVFQjA6IDQyIDM4IDBBIDQwIDUzIDREIDQyIDM4IEEwIDFBIDk1IDYwIDBDIEZGIEZGIEZG
ICBCOC5AU01COC4uLmAuLi4uCiAgICA1RUMwOiAwMCBBMCAwQyA5NCA2MCAwQSAwNSA3MCA3NCA2
MCAwQSAwNSAwMCA2MCBBMSAwNCAgLi4uLmAuLnB0YC4uLmAuLgogICAgNUVEMDogNzAgMDAgNjAg
NUIgMjEgMEEgMDUgNzAgNTMgNEQgNDIgMzggNjEgQTAgMEIgOTMgIHAuYFshLi5wU01COGEuLi4K
ICAgIDVFRTA6IDdCIDYxIDBBIDUwIDAwIDBBIDQwIEE0IDAwIEE0IDAxIDE0IDJCIDREIDM0IDM3
ICB7YS5QLi5ALi4uLi4rTTQ3CiAgICA1RUYwOiAzOCAwOSA1QiA4MCA1NiA0MSA1MiA0RCAwMSA2
OCAwQSAwOSA1QiA4MSAwRSA1NiAgOC5bLlZBUk0uaC4uWy4uVgogICAgNUYwMDogNDEgNTIgNEQg
MDEgMDAgNDAgMDQgNTMgNEQgNDIgMzggMDggN0QgNTMgNEQgNDIgIEFSTS4uQC5TTUI4Ln1TTUIK
ICAgIDVGMTA6IDM4IDBBIDgwIDUzIDREIDQyIDM4IDE0IDRGIDBGIDREIDM0IDM3IDM5IDBBIDVC
ICA4Li5TTUI4Lk8uTTQ3OS5bCiAgICA1RjIwOiA4MCA1NiA0MSA1MiA0RCAwMSA2OCAwQSAwMyA1
QiA4MSAxNSA1NiA0MSA1MiA0RCAgLlZBUk0uaC4uWy4uVkFSTQogICAgNUYzMDogMDEgNTMgNEQg
NDIgMzAgMDggNTMgNEQgNDIgMzEgMDggNTMgNEQgNDIgMzIgMDggIC5TTUIwLlNNQjEuU01CMi4K
ICAgIDVGNDA6IDcwIDY5IDYwIEEyIDRBIDA1IDk0IDYwIDAwIDcwIDBBIDY0IDYxIDcwIDAxIDYy
ICBwaWAuSi4uYC5wLmRhcC5iCiAgICA1RjUwOiBBMiAzQSA5MCA5NCA2MSAwMCA5MiA5MyA3QiA2
MiAwMSAwMCAwMCA3MCAwQSAxRiAgLjouLmEuLi57Yi4uLnAuLgogICAgNUY2MDogNTMgNEQgNDIg
MzAgQTAgMUEgOTUgNjAgMEMgRkYgRkYgRkYgMDAgQTAgMEMgOTQgIFNNQjAuLi5gLi4uLi4uLi4K
ICAgIDVGNzA6IDYwIDBBIDA1IDcwIDc0IDYwIDBBIDA1IDAwIDYwIEExIDA0IDcwIDAwIDYwIDc2
ICBgLi5wdGAuLi5gLi5wLmB2CiAgICA1RjgwOiA2MSA1QiAyMSAwQSAwNSA3MCA1MyA0RCA0MiAz
MCA2MiBBMCAwRiA5MiA5MyA3QiAgYVshLi5wU01CMGIuLi4uewogICAgNUY5MDogNjIgMDEgMDAg
MDAgNzAgMEEgMDIgNTMgNEQgNDIgMzIgQTEgMDIgQTUgQTAgMEQgIGIuLi5wLi5TTUIyLi4uLi4K
ICAgIDVGQTA6IDkyIDkzIDdCIDUzIDREIDQyIDMwIDAxIDAwIDAwIEE0IDAxIEEyIDRBIDA1IDk0
ICAuLntTTUIwLi4uLi4uSi4uCiAgICA1RkIwOiA2MCAwMCA3MCAwQSA2NCA2MSA3MCAwMSA2MiBB
MiAzQSA5MCA5NCA2MSAwMCA5MiAgYC5wLmRhcC5iLjouLmEuLgogICAgNUZDMDogOTMgN0IgNjIg
MDEgMDAgMDAgNzAgMEEgM0YgNTMgNEQgNDIgMzEgQTAgMUEgOTUgIC57Yi4uLnAuP1NNQjEuLi4K
ICAgIDVGRDA6IDYwIDBDIEZGIEZGIEZGIDAwIEEwIDBDIDk0IDYwIDBBIDA1IDcwIDc0IDYwIDBB
ICBgLi4uLi4uLi5gLi5wdGAuCiAgICA1RkUwOiAwNSAwMCA2MCBBMSAwNCA3MCAwMCA2MCA3NiA2
MSA1QiAyMSAwQSAwNSA3MCA1MyAgLi5gLi5wLmB2YVshLi5wUwogICAgNUZGMDogNEQgNDIgMzEg
NjIgQTAgMEYgOTIgOTMgN0IgNjIgMDEgMDAgMDAgNzAgMEEgMDIgIE1CMWIuLi4ue2IuLi5wLi4K
ICAgIDYwMDA6IDUzIDREIDQyIDMxIEExIDAyIEE1IEEwIDBEIDkyIDkzIDdCIDUzIDREIDQyIDMx
ICBTTUIxLi4uLi4uLntTTUIxCiAgICA2MDEwOiAwMSAwMCAwMCBBNCAwMSBBNCAwMCA1QiAwMSA0
RCAzNCAzMCAzOCAwMCAxNCA0MCAgLi4uLi4uLlsuTTQwOC4uQAogICAgNjAyMDogNkIgNEQgMzQg
MzcgNDEgMEUgNzAgMTEgMDMgMEEgMjIgNjAgOEMgNjAgMDAgNTMgIGtNNDdBLnAuLi4iYC5gLlMK
ICAgIDYwMzA6IDU0IDQxIDU0IDhDIDYwIDAxIDRDIDQ1IDRFIDVGIDhDIDYwIDBBIDAyIDQ0IDQx
ICBUQVQuYC5MRU5fLmAuLkRBCiAgICA2MDQwOiA1NCA0MiA4QiA2MCAwQSAwMiA0NCA0MSA1NCA1
NyA1QiAxMyA2MCAwQSAxMCAwQiAgVEIuYC4uREFUV1suYC4uLgogICAgNjA1MDogMDAgMDEgNDQg
NTQgNDIgNDYgNzAgMEEgRkYgNTMgNTQgNDEgNTQgNzAgMDAgNEMgIC4uRFRCRnAuLlNUQVRwLkwK
ICAgIDYwNjA6IDQ1IDRFIDVGIDcwIDAwIDQ0IDU0IDQyIDQ2IDREIDMwIDMwIDMwIDBCIEU1IDBE
ICBFTl9wLkRUQkZNMDAwLi4uCiAgICA2MDcwOiA0RCAzNCAzNiAzMCAwRCAyMCAyMCA0QiA0NSA1
MiAyRCA0MSA1MyA0QyAyRCA0MyAgTTQ2MC4gIEtFUi1BU0wtQwogICAgNjA4MDogNzAgNkQgNTMg
NkQgNjIgNzUgNzMgNDUgNzggNjUgNjMgNzUgNzQgNkYgNzIgMjAgIHBtU21idXNFeGVjdXRvciAK
ICAgIDYwOTA6IDI4IDUwIDZGIDcyIDc0IDI1IDY0IDJDIDIwIDY5IDczIDUyIDY1IDYxIDY0IDIw
ICAoUG9ydCVkLCBpc1JlYWQgCiAgICA2MEEwOiAyNSA2NCAyQyAyMCA1MCA2RiA3NCA2MyA2QyAy
MCAyNSA2NCAyQyAyMCA0NCA2NSAgJWQsIFBvdGNsICVkLCBEZQogICAgNjBCMDogNzYgNDEgNjQg
NjQgNzIgMjAgMzAgNzggMjUgNTggMkMgMjAgNDMgNkQgNjQgMjAgIHZBZGRyIDB4JVgsIENtZCAK
ICAgIDYwQzA6IDMwIDc4IDI1IDU4IDI5IDBBIDAwIDY4IDY5IDZBIDZCIDZDIDAwIDcwIDREIDMw
ICAweCVYKS4uaGlqa2wucE0wCiAgICA2MEQwOiAzNCAzOSA0RCAzMSAzMiAzOCAwQSA5NCA2MSBB
MCA0NiAwNCA5MSA5MCA5MiA5MyAgNDlNMTI4Li5hLkYuLi4uLgogICAgNjBFMDogNjggMDAgOTIg
OTMgNjggMDEgOTMgNjEgMDEgNzAgMEEgODAgNTMgNTQgNDEgNTQgIGguLi5oLi5hLnAuLlNUQVQK
ICAgIDYwRjA6IDREIDM0IDM1IDM5IDBEIDIwIDIwIDRCIDQ1IDUyIDJEIDQxIDUzIDRDIDJEIDQz
ICBNNDU5LiAgS0VSLUFTTC1DCiAgICA2MTAwOiA3MCA2RCA1MyA2RCA2MiA3NSA3MyA0NSA3OCA2
NSA2MyA3NSA3NCA2RiA3MiAyMCAgcG1TbWJ1c0V4ZWN1dG9yIAogICAgNjExMDogNzIgNjUgNzQg
NzUgNzIgNkUgMjAgMzAgNzggMzggMzAgMEEgMDAgMDAgQTQgNjAgIHJldHVybiAweDgwLi4uLmAK
ICAgIDYxMjA6IEEwIDQyIDA0IDkwIDkyIDkzIDY5IDAwIDkyIDkzIDY5IDAxIDcwIDBBIDgxIDUz
ICAuQi4uLi5pLi4uaS5wLi5TCiAgICA2MTMwOiA1NCA0MSA1NCA0RCAzNCAzNSAzOSAwRCAyMCAy
MCA0QiA0NSA1MiAyRCA0MSA1MyAgVEFUTTQ1OS4gIEtFUi1BUwogICAgNjE0MDogNEMgMkQgNDMg
NzAgNkQgNTMgNkQgNjIgNzUgNzMgNDUgNzggNjUgNjMgNzUgNzQgIEwtQ3BtU21idXNFeGVjdXQK
ICAgIDYxNTA6IDZGIDcyIDIwIDcyIDY1IDc0IDc1IDcyIDZFIDIwIDMwIDc4IDM4IDMxIDBBIDAw
ICBvciByZXR1cm4gMHg4MS4uCiAgICA2MTYwOiAwMCBBNCA2MCAwOCA1NiA0MSA0QyA1MCAxMiAw
QSAwNSAwMCAwMSAwQSAwMiAwQSAgLi5gLlZBTFAuLi4uLi4uLgogICAgNjE3MDogMDMgMEEgMDUg
QTAgNDUgMDQgOTMgODkgNTYgNDEgNEMgNTAgMDEgNkEgMDAgMDAgIC4uLi5FLi4uVkFMUC5qLi4K
ICAgIDYxODA6IDAwIEZGIDcwIDBBIDgyIDUzIDU0IDQxIDU0IDREIDM0IDM1IDM5IDBEIDIwIDIw
ICAuLnAuLlNUQVRNNDU5LiAgCiAgICA2MTkwOiA0QiA0NSA1MiAyRCA0MSA1MyA0QyAyRCA0MyA3
MCA2RCA1MyA2RCA2MiA3NSA3MyAgS0VSLUFTTC1DcG1TbWJ1cwogICAgNjFBMDogNDUgNzggNjUg
NjMgNzUgNzQgNkYgNzIgMjAgNzIgNjUgNzQgNzUgNzIgNkUgMjAgIEV4ZWN1dG9yIHJldHVybiAK
ICAgIDYxQjA6IDMwIDc4IDM4IDMyIDBBIDAwIDAwIEE0IDYwIEEwIDQ2IDA2IDkwIDkzIDY5IDAw
ICAweDgyLi4uLmAuRi4uLmkuCiAgICA2MUMwOiA5MyA2QSAwQSAwNSA3MCA2RCA2NyA3MCA4MyA4
OCA2NyAwMCAwMCA2MiBBMCA0MSAgLmouLnBtZ3AuLmcuLmIuQQogICAgNjFEMDogMDUgOTEgOTUg
NjIgMDEgOTQgNjIgMEEgMjAgNzAgMEEgODMgNTMgNTQgNDEgNTQgIC4uLmIuLmIuIHAuLlNUQVQK
ICAgIDYxRTA6IDREIDM0IDM2IDMwIDBEIDIwIDIwIDRCIDQ1IDUyIDJEIDQxIDUzIDRDIDJEIDQz
ICBNNDYwLiAgS0VSLUFTTC1DCiAgICA2MUYwOiA3MCA2RCA1MyA2RCA2MiA3NSA3MyA0NSA3OCA2
NSA2MyA3NSA3NCA2RiA3MiAyMCAgcG1TbWJ1c0V4ZWN1dG9yIAogICAgNjIwMDogNzIgNjUgNzQg
NzUgNzIgNkUgMjAgMzAgNzggMzggMzMgMkMgMjAgNEMgNjUgNkUgIHJldHVybiAweDgzLCBMZW4K
ICAgIDYyMTA6IDY3IDc0IDY4IDIwIDI1IDY0IDBBIDAwIDYyIDAwIDAwIDAwIDAwIDAwIEE0IDYw
ICBndGggJWQuLmIuLi4uLi5gCiAgICA2MjIwOiA1QiAyMyA0RCAzNCAzMCAzOCBGRiBGRiA3MiA0
RCAzNCAzMSAzNCA3OSA2OCAwQSAgWyNNNDA4Li5yTTQxNHloLgogICAgNjIzMDogMDUgMDAgNjQg
QTAgNDIgMDUgOTMgNjQgMDAgNUIgMjcgNEQgMzQgMzAgMzggNzAgIC4uZC5CLi5kLlsnTTQwOHAK
ICAgIDYyNDA6IDBBIDg0IDUzIDU0IDQxIDU0IDREIDM0IDM2IDMwIDBEIDIwIDIwIDRCIDQ1IDUy
ICAuLlNUQVRNNDYwLiAgS0VSCiAgICA2MjUwOiAyRCA0MSA1MyA0QyAyRCA0MyA3MCA2RCA1MyA2
RCA2MiA3NSA3MyA0NSA3OCA2NSAgLUFTTC1DcG1TbWJ1c0V4ZQogICAgNjI2MDogNjMgNzUgNzQg
NkYgNzIgMjAgNzIgNjUgNzQgNzUgNzIgNkUgMjAgMzAgNzggMzggIGN1dG9yIHJldHVybiAweDgK
ICAgIDYyNzA6IDM0IDJDIDIwIDRDIDZGIDYzIDYxIDZDIDM0IDIwIDI1IDY0IDBBIDAwIDY0IDAw
ICA0LCBMb2NhbDQgJWQuLmQuCiAgICA2MjgwOiAwMCAwMCAwMCAwMCBBNCA2MCA1QiA4MCA1NiA0
MSA1MiA0RCAwMSA2NCAwQSAwOSAgLi4uLi5gWy5WQVJNLmQuLgogICAgNjI5MDogNUIgODEgMzMg
NTYgNDEgNTIgNEQgMDEgNTMgNEQgNDIgMzAgMDggNTMgNEQgNDIgIFsuM1ZBUk0uU01CMC5TTUIK
ICAgIDYyQTA6IDMxIDA4IDUzIDREIDQyIDMyIDA4IDUzIDREIDQyIDMzIDA4IDUzIDREIDQyIDM0
ICAxLlNNQjIuU01CMy5TTUI0CiAgICA2MkIwOiAwOCA1MyA0RCA0MiAzNSAwOCA1MyA0RCA0MiAz
NiAwOCA1MyA0RCA0MiAzNyAwOCAgLlNNQjUuU01CNi5TTUI3LgogICAgNjJDMDogNTMgNEQgNDIg
MzggMDggNzAgNEQgMzAgMzQgMzkgNzIgNEQgMzAgMzggMzQgMEIgIFNNQjgucE0wNDlyTTA4NC4K
ICAgIDYyRDA6IDAwIDAzIDAwIDBBIDAyIDY1IEEwIDFEIDkzIDdCIDY1IDAxIDAwIDAwIDREIDMw
ICAuLi4uLmUuLi57ZS4uLk0wCiAgICA2MkUwOiAzMSAzMiA3MiA0RCAzMCAzOCAzNCAwQiAwMCAw
MyAwMCAwQSAwMiAwMCAwQSAwOCAgMTJyTTA4NC4uLi4uLi4uLgogICAgNjJGMDogN0QgNjUgMDEg
MDAgQTAgMTQgOTMgNjggMDEgNzAgNTMgNEQgNDIgMzIgNjYgNzAgIH1lLi4uLi5oLnBTTUIyZnAK
ICAgIDYzMDA6IDdCIDY2IDBBIDdGIDAwIDUzIDREIDQyIDMyIEEwIDREIDA2IDREIDM0IDM3IDM3
ICB7Zi4uLlNNQjIuTS5NNDc3CiAgICA2MzEwOiA2NCAwQiAyMCA0RSBBMCAwQSA5MyA2OCAwMSA3
MCA2NiA1MyA0RCA0MiAzMiBBMCAgZC4gTi4uLmgucGZTTUIyLgogICAgNjMyMDogMUEgOTMgN0Ig
NjUgMDEgMDAgMDAgNEQgMzAgMzEgMzIgNzIgNEQgMzAgMzggMzQgIC4ue2UuLi5NMDEyck0wODQK
ICAgIDYzMzA6IDBCIDAwIDAzIDAwIDBBIDAyIDAwIDBBIDA4IDY1IDVCIDI3IDREIDM0IDMwIDM4
ICAuLi4uLi4uLi5lWydNNDA4CiAgICA2MzQwOiA3MCAwQSA4NSA1MyA1NCA0MSA1NCA0RCAzNCAz
NSAzOSAwRCAyMCAyMCA0QiA0NSAgcC4uU1RBVE00NTkuICBLRQogICAgNjM1MDogNTIgMkQgNDEg
NTMgNEMgMkQgNDMgNzAgNkQgNTMgNkQgNjIgNzUgNzMgNDUgNzggIFItQVNMLUNwbVNtYnVzRXgK
ICAgIDYzNjA6IDY1IDYzIDc1IDc0IDZGIDcyIDIwIDcyIDY1IDc0IDc1IDcyIDZFIDIwIDMwIDc4
ICBlY3V0b3IgcmV0dXJuIDB4CiAgICA2MzcwOiAzOCAzNSAwQSAwMCAwMCBBNCA2MCBBMCA0MiAw
NyA0RCAzNCAzNyAzOSA2NCAwQiAgODUuLi4uYC5CLk00NzlkLgogICAgNjM4MDogMjAgNEUgQTAg
MEEgOTMgNjggMDEgNzAgNjYgNTMgNEQgNDIgMzIgQTAgMUEgOTMgICBOLi4uaC5wZlNNQjIuLi4K
ICAgIDYzOTA6IDdCIDY1IDAxIDAwIDAwIDREIDMwIDMxIDMyIDcyIDREIDMwIDM4IDM0IDBCIDAw
ICB7ZS4uLk0wMTJyTTA4NC4uCiAgICA2M0EwOiAwMyAwMCAwQSAwMiAwMCAwQSAwOCA2NSA0RCAz
NCAzNyAzOCA2NCA1QiAyNyA0RCAgLi4uLi4uLmVNNDc4ZFsnTQogICAgNjNCMDogMzQgMzAgMzgg
NzAgMEEgODYgNTMgNTQgNDEgNTQgNEQgMzQgMzUgMzkgMEQgMjAgIDQwOHAuLlNUQVRNNDU5LiAK
ICAgIDYzQzA6IDIwIDRCIDQ1IDUyIDJEIDQxIDUzIDRDIDJEIDQzIDcwIDZEIDUzIDZEIDYyIDc1
ICAgS0VSLUFTTC1DcG1TbWJ1CiAgICA2M0QwOiA3MyA0NSA3OCA2NSA2MyA3NSA3NCA2RiA3MiAy
MCA3MiA2NSA3NCA3NSA3MiA2RSAgc0V4ZWN1dG9yIHJldHVybgogICAgNjNFMDogMjAgMzAgNzgg
MzggMzYgMEEgMDAgMDAgQTQgNjAgNzAgNkQgNjcgNzAgMEEgMDMgICAweDg2Li4uLmBwbWdwLi4K
ICAgIDYzRjA6IDYzIEEyIDQxIDIxIDk0IDYzIDAwIDcwIDBBIDFGIDUzIDREIDQyIDMwIDdEIDc5
ICBjLkEhLmMucC4uU01CMH15CiAgICA2NDAwOiA2QiAwMSAwMCA2OSA1MyA0RCA0MiAzNCA3MCA2
QyA1MyA0RCA0MiAzMyA3MCA3OSAgay4uaVNNQjRwbFNNQjNweQogICAgNjQxMDogNkEgMEEgMDIg
MDAgNTMgNEQgNDIgMzIgNzAgNTMgNEQgNDIgMzIgNjEgQTAgNEMgIGouLi5TTUIycFNNQjJhLkwK
ICAgIDY0MjA6IDA1IDkzIDY5IDAwIEEwIDEzIDkxIDkzIDZBIDAxIDkzIDZBIDBBIDAyIDcwIDgz
ICAuLmkuLi4uLmouLmouLnAuCiAgICA2NDMwOiA4OCA2NyAwMSAwMCA1MyA0RCA0MiAzNSBBMCAx
QSA5MyA2QSAwQSAwMyA3MCA4MyAgLmcuLlNNQjUuLi5qLi5wLgogICAgNjQ0MDogODggNjcgMEEg
MDIgMDAgNTMgNEQgNDIgMzYgNzAgODMgODggNjcgMDEgMDAgNTMgIC5nLi4uU01CNnAuLmcuLlMK
ICAgIDY0NTA6IDREIDQyIDM1IEEwIDI3IDkzIDZBIDBBIDA1IDcwIDgzIDg4IDY3IDAwIDAwIDYy
ICBNQjUuJy5qLi5wLi5nLi5iCiAgICA2NDYwOiA3MCA2MiA1MyA0RCA0MiAzNSA3MCAwMSA2MSBB
MiAxMSA5MiA5NCA2MSA2MiA3MCAgcGJTTUI1cC5hLi4uLmFicAogICAgNjQ3MDogODMgODggNjcg
NjEgMDAgNTMgNEQgNDIgMzcgNzUgNjEgQTEgMTQgQTAgMTIgOTMgIC4uZ2EuU01CN3VhLi4uLi4K
ICAgIDY0ODA6IDZBIDBBIDA1IDcwIDgzIDg4IDY3IDAwIDAwIDYyIDcwIDYyIDUzIDREIDQyIDM1
ICBqLi5wLi5nLi5icGJTTUI1CiAgICA2NDkwOiA3RCA3OSA2QSAwQSAwMiAwMCAwQSA0MCA1MyA0
RCA0MiAzMiBBMCAwQSA5MyA2QSAgfXlqLi4uLkBTTUIyLi4uagogICAgNjRBMDogMEEgMDUgNzAg
MEIgNTggMUIgNjEgQTEgMDYgNzAgMEIgRTggMDMgNjEgNzAgMDEgIC4ucC5YLmEuLnAuLi5hcC4K
ICAgIDY0QjA6IDYyIEEyIDIxIDkwIDk0IDYxIDAwIDkzIDdCIDYyIDBBIDBFIDAwIDAwIEEwIDA4
ICBiLiEuLmEuLntiLi4uLi4uCiAgICA2NEMwOiA5MyA3QiA2MiAwMSAwMCAwMCBBNSA3NiA2MSA1
QiAyMSAwQSAwNSA3MCA1MyA0RCAgLntiLi4uLnZhWyEuLnBTTQogICAgNjREMDogNDIgMzAgNjIg
QTAgNEMgMDcgOTAgOTMgNjEgMDAgOTIgOTMgN0IgNjIgMDEgMDAgIEIwYi5MLi4uYS4uLntiLi4K
ICAgIDY0RTA6IDAwIDcwIDBBIDAyIDUzIDREIDQyIDMyIEEwIDBBIDkzIDY4IDAxIDcwIDY2IDUz
ICAucC4uU01CMi4uLmgucGZTCiAgICA2NEYwOiA0RCA0MiAzMiBBMCAxQSA5MyA3QiA2NSAwMSAw
MCAwMCA0RCAzMCAzMSAzMiA3MiAgTUIyLi4ue2UuLi5NMDEycgogICAgNjUwMDogNEQgMzAgMzgg
MzQgMEIgMDAgMDMgMDAgMEEgMDIgMDAgMEEgMDggNjUgNEQgMzQgIE0wODQuLi4uLi4uLi5lTTQK
ICAgIDY1MTA6IDM3IDM4IDY0IDVCIDI3IDREIDM0IDMwIDM4IDcwIDBBIDg3IDUzIDU0IDQxIDU0
ICA3OGRbJ000MDhwLi5TVEFUCiAgICA2NTIwOiA0RCAzNCAzNSAzOSAwRCAyMCAyMCA0QiA0NSA1
MiAyRCA0MSA1MyA0QyAyRCA0MyAgTTQ1OS4gIEtFUi1BU0wtQwogICAgNjUzMDogNzAgNkQgNTMg
NkQgNjIgNzUgNzMgNDUgNzggNjUgNjMgNzUgNzQgNkYgNzIgMjAgIHBtU21idXNFeGVjdXRvciAK
ICAgIDY1NDA6IDcyIDY1IDc0IDc1IDcyIDZFIDIwIDMwIDc4IDM4IDM3IDBBIDAwIDAwIEE0IDYw
ICByZXR1cm4gMHg4Ny4uLi5gCiAgICA2NTUwOiBBMCAwQyA5MiA5MyA3QiA2MiAwQSAwNCAwMCAw
MCA3MCAwMCA2MyBBMSA0NSAwQSAgLi4uLntiLi4uLnAuYy5FLgogICAgNjU2MDogQTAgMTIgOTIg
OTMgN0IgNjIgMEEgMDggMDAgMDAgNzAgMEEgMDggNTMgNEQgNDIgIC4uLi57Yi4uLi5wLi5TTUIK
ICAgIDY1NzA6IDMwIDc2IDYzIEExIDRGIDA4IDcwIDAwIDYzIDcwIDAwIDUzIDU0IDQxIDU0IEEw
ICAwdmMuTy5wLmNwLlNUQVQuCiAgICA2NTgwOiA0MyAwOCA5MiA5MyA2OSAwMCBBMCAxOCA5MSA5
MyA2QSAwMSA5MyA2QSAwQSAwMiAgQy4uLmkuLi4uLmouLmouLgogICAgNjU5MDogNzAgNTMgNEQg
NDIgMzUgNDQgNDEgNTQgNDIgNzAgMDEgNEMgNDUgNEUgNUYgQTAgIHBTTUI1REFUQnAuTEVOXy4K
ICAgIDY1QTA6IDIwIDkzIDZBIDBBIDAzIDcwIDUzIDREIDQyIDM2IDg4IDYwIDBBIDAzIDAwIDcw
ICAgLmouLnBTTUI2LmAuLi5wCiAgICA2NUIwOiA1MyA0RCA0MiAzNSA4OCA2MCAwQSAwMiAwMCA3
MCAwQSAwMiA0QyA0NSA0RSA1RiAgU01CNS5gLi4ucC4uTEVOXwogICAgNjVDMDogQTAgNDIgMDQg
OTMgNkEgMEEgMDUgNzAgNTMgNEQgNDIgMzIgNjIgNzAgNTMgNEQgIC5CLi5qLi5wU01CMmJwU00K
ICAgIDY1RDA6IDQyIDM1IDYyIEEwIDA5IDk0IDYyIDBBIDIwIDcwIDBBIDIwIDYyIDcwIDYyIDRD
ICBCNWIuLi5iLiBwLiBicGJMCiAgICA2NUUwOiA0NSA0RSA1RiA3MCAwQSAwMiA2MSA3MiA2MiAw
QSAwMiA2MiBBMiAxNiA5NSA2MSAgRU5fcC4uYXJiLi5iLi4uYQogICAgNjVGMDogNjIgNzAgMEEg
Q0MgODggNjAgNjEgMDAgNzAgNTMgNEQgNDIgMzcgODggNjAgNjEgIGJwLi4uYGEucFNNQjcuYGEK
ICAgIDY2MDA6IDAwIDc1IDYxIDcwIDdCIDUzIDREIDQyIDMwIDBBIDFEIDAwIDYxIDcwIDYxIDUz
ICAudWFwe1NNQjAuLi5hcGFTCiAgICA2NjEwOiA1NCA0MSA1NCA3MCAwQSAxRiA1MyA0RCA0MiAz
MCBBMCAwQSA5MyA2OCAwMSA3MCAgVEFUcC4uU01CMC4uLmgucAogICAgNjYyMDogNjYgNTMgNEQg
NDIgMzIgQTAgMUEgOTMgN0IgNjUgMDEgMDAgMDAgNEQgMzAgMzEgIGZTTUIyLi4ue2UuLi5NMDEK
ICAgIDY2MzA6IDMyIDcyIDREIDMwIDM4IDM0IDBCIDAwIDAzIDAwIDBBIDAyIDAwIDBBIDA4IDY1
ICAyck0wODQuLi4uLi4uLi5lCiAgICA2NjQwOiA0RCAzNCAzNyAzOCA2NCA1QiAyNyA0RCAzNCAz
MCAzOCA0RCAzNCAzNiAzMCAwRCAgTTQ3OGRbJ000MDhNNDYwLgogICAgNjY1MDogMjAgMjAgNEIg
NDUgNTIgMkQgNDEgNTMgNEMgMkQgNDMgNzAgNkQgNTMgNkQgNjIgICAgS0VSLUFTTC1DcG1TbWIK
ICAgIDY2NjA6IDc1IDczIDQ1IDc4IDY1IDYzIDc1IDc0IDZGIDcyIDIwIDcyIDY1IDc0IDc1IDcy
ICB1c0V4ZWN1dG9yIHJldHVyCiAgICA2NjcwOiA2RSAyMCA1MyA3NCAzQSAyMCAzMCA3OCAyNSA1
OCAyQyAyMCA0QyA2NSA2RSAyMCAgbiBTdDogMHglWCwgTGVuIAogICAgNjY4MDogMjUgNjQgMkMg
MjAgNDQgNjEgNzQgNjEgM0EgMjAgMzAgNzggMjUgNTggMkMgMjAgICVkLCBEYXRhOiAweCVYLCAK
ICAgIDY2OTA6IDMwIDc4IDI1IDU4IDJDIDIwIDMwIDc4IDI1IDU4IDJDIDIwIDMwIDc4IDI1IDU4
ICAweCVYLCAweCVYLCAweCVYCiAgICA2NkEwOiAyMCAyRSAyRSAyRSAwQSAwMCA1MyA1NCA0MSA1
NCA0QyA0NSA0RSA1RiA4MyA4OCAgIC4uLi4uU1RBVExFTl8uLgogICAgNjZCMDogNjAgMEEgMDIg
MDAgODMgODggNjAgMEEgMDMgMDAgODMgODggNjAgMEEgMDQgMDAgIGAuLi4uLmAuLi4uLmAuLi4K
ICAgIDY2QzA6IDgzIDg4IDYwIDBBIDA1IDAwIDREIDMwIDMwIDMwIDBCIEU2IDBEIEE0IDYwIDE0
ICAuLmAuLi5NMDAwLi4uLmAuCiAgICA2NkQwOiAxOCA0RCAzNCAzNyA0MiAwQiA3MCA0RCAzNCAz
NyA0MSA2OCA2OSAwMCA2QSAwMCAgLk00N0IucE00N0FoaS5qLgogICAgNjZFMDogMDAgNjAgQTQg
ODMgODggNjAgMDAgMDAgMTQgMzQgNEQgMzQgMzcgNDMgMEMgNzAgIC5gLi4uYC4uLjRNNDdDLnAK
ICAgIDY2RjA6IDExIDAzIDBBIDAyIDYwIDhDIDYwIDAwIDRDIDQ1IDRFIDVGIDhDIDYwIDAxIDQ0
ICAuLi4uYC5gLkxFTl8uYC5ECiAgICA2NzAwOiA0MSA1NCA0MiA3MCAwMSA0QyA0NSA0RSA1RiA3
MCA2QiA0NCA0MSA1NCA0MiA3MCAgQVRCcC5MRU5fcGtEQVRCcAogICAgNjcxMDogNEQgMzQgMzcg
NDEgNjggNjkgMDEgNkEgMDAgNjAgNjEgQTQgNjEgMTQgMzUgNEQgIE00N0FoaS5qLmBhLmEuNU0K
ICAgIDY3MjA6IDM0IDM3IDQ0IDBEIDcwIDExIDAzIDBBIDAyIDYwIDhDIDYwIDAwIDRDIDQ1IDRF
ICA0N0QucC4uLi5gLmAuTEVOCiAgICA2NzMwOiA1RiA4QyA2MCAwMSA0NCA0MSA1NCA0MiA3MCAw
MSA0QyA0NSA0RSA1RiA3MCA2QyAgXy5gLkRBVEJwLkxFTl9wbAogICAgNjc0MDogNDQgNDEgNTQg
NDIgNzAgNEQgMzQgMzcgNDEgNjggNjkgMEEgMDIgNkEgNkIgNjAgIERBVEJwTTQ3QWhpLi5qa2AK
ICAgIDY3NTA6IDYxIEE0IDYxIDE0IDQxIDA1IDREIDM0IDM3IDQ1IDBEIDcwIDExIDAzIDBBIDAz
ICBhLmEuQS5NNDdFLnAuLi4uCiAgICA2NzYwOiA2MCA4QyA2MCAwMCA0QyA0NSA0RSA1RiA4QyA2
MCAwMSA0NCA0MSA1NCA0QyA4QyAgYC5gLkxFTl8uYC5EQVRMLgogICAgNjc3MDogNjAgMEEgMDIg
NDQgNDEgNTQgNDggNzAgMEEgMDIgNEMgNDUgNEUgNUYgNzAgN0IgIGAuLkRBVEhwLi5MRU5fcHsK
ICAgIDY3ODA6IDZDIDBBIEZGIDAwIDQ0IDQxIDU0IDRDIDcwIDdCIDdBIDZDIDBBIDA4IDAwIDBB
ICBsLi4uREFUTHB7emwuLi4uCiAgICA2NzkwOiBGRiAwMCA0NCA0MSA1NCA0OCA3MCA0RCAzNCAz
NyA0MSA2OCA2OSAwQSAwMyA2QSAgLi5EQVRIcE00N0FoaS4uagogICAgNjdBMDogNkIgNjAgNjEg
QTQgNjEgMTQgMTUgNEQgMzQgMzcgNDYgMEQgNzAgNEQgMzQgMzcgIGtgYS5hLi5NNDdGLnBNNDcK
ICAgIDY3QjA6IDQxIDY4IDY5IDBBIDA1IDZBIDZCIDZDIDYxIEE0IDYxIDE0IDREIDQ3IDREIDM0
ICBBaGkuLmprbGEuYS5NR000CiAgICA2N0MwOiAzMCAzOSAwQiA3MCA0RCAzMCAzNCAzOSA0RCAz
MSAzMiAzOCAwQSA5NCA2MCBBMCAgMDkucE0wNDlNMTI4Li5gLgogICAgNjdEMDogNDggMDUgOTMg
NjAgMDEgNEQgMzQgMzYgMzAgMEQgMjAgMjAgNEIgNDUgNTIgMkQgIEguLmAuTTQ2MC4gIEtFUi0K
ICAgIDY3RTA6IDQxIDUzIDRDIDJEIDQzIDcwIDZEIDUyIDY1IDYxIDY0IDUzIDZEIDYyIDc1IDcz
ICBBU0wtQ3BtUmVhZFNtYnVzCiAgICA2N0YwOiA0MiA3OSA3NCA2NSAyMCAyOCAyNSA2NCAyQyAy
MCAzMCA3OCAyNSA1OCAyQyAyMCAgQnl0ZSAoJWQsIDB4JVgsIAogICAgNjgwMDogMzAgNzggMjUg
NTggMjkgMjAgM0QgMjAgMzAgMjAgNTMgNkQgNjIgNzUgNzMgMjAgIDB4JVgpID0gMCBTbWJ1cyAK
ICAgIDY4MTA6IDQxIDYzIDYzIDY1IDczIDczIDIwIDQ0IDY5IDczIDYxIDYyIDZDIDY1IDBBIDAw
ICBBY2Nlc3MgRGlzYWJsZS4uCiAgICA2ODIwOiA2OCA2OSA2QSAwMCAwMCAwMCBBNCAwMCA1QiAy
MyA0RCAzNCAzMCAzOCBGRiBGRiAgaGlqLi4uLi5bI000MDguLgogICAgNjgzMDogNzIgNEQgMzQg
MzEgMzQgNzkgNjggMEEgMDUgMDAgNjAgNUIgODAgNTYgNDEgNTIgIHJNNDE0eWguLi5gWy5WQVIK
ICAgIDY4NDA6IDREIDAxIDYwIDBBIDA5IDVCIDgxIDMzIDU2IDQxIDUyIDREIDAxIDUzIDREIDQy
ICBNLmAuLlsuM1ZBUk0uU01CCiAgICA2ODUwOiAzMCAwOCA1MyA0RCA0MiAzMSAwOCA1MyA0RCA0
MiAzMiAwOCA1MyA0RCA0MiAzMyAgMC5TTUIxLlNNQjIuU01CMwogICAgNjg2MDogMDggNTMgNEQg
NDIgMzQgMDggNTMgNEQgNDIgMzUgMDggNTMgNEQgNDIgMzYgMDggIC5TTUI0LlNNQjUuU01CNi4K
ICAgIDY4NzA6IDUzIDREIDQyIDM3IDA4IDUzIDREIDQyIDM4IDA4IDcwIDREIDMwIDM0IDM5IDcy
ICBTTUI3LlNNQjgucE0wNDlyCiAgICA2ODgwOiA0RCAzMCAzOCAzNCAwQiAwMCAwMyAwMCAwQSAw
MiA2NSBBMCAxRCA5MyA3QiA2NSAgTTA4NC4uLi4uLmUuLi57ZQogICAgNjg5MDogMDEgMDAgMDAg
NEQgMzAgMzEgMzIgNzIgNEQgMzAgMzggMzQgMEIgMDAgMDMgMDAgIC4uLk0wMTJyTTA4NC4uLi4K
ICAgIDY4QTA6IDBBIDAyIDAwIDBBIDA4IDdEIDY1IDAxIDAwIEEwIDE0IDkzIDY4IDAxIDcwIDUz
ICAuLi4uLn1lLi4uLi5oLnBTCiAgICA2OEIwOiA0RCA0MiAzMiA2NiA3MCA3QiA2NiAwQSA3RiAw
MCA1MyA0RCA0MiAzMiA3MCAwMCAgTUIyZnB7Zi4uLlNNQjJwLgogICAgNjhDMDogNjEgNzAgMEEg
NjQgNjIgQTIgMjkgOTAgOTQgNjIgMDAgOTIgOTMgN0IgNjEgMEEgIGFwLmRiLikuLmIuLi57YS4K
ICAgIDY4RDA6IDEwIDAwIDBBIDEwIDdEIDUzIDREIDQyIDM4IDBBIDEwIDUzIDREIDQyIDM4IDcw
ICAuLi4ufVNNQjguLlNNQjhwCiAgICA2OEUwOiA3NCA2MiAwMSAwMCA2MiA1QiAyMSAwQSAwNSA3
MCA1MyA0RCA0MiAzOCA2MSA3MCAgdGIuLmJbIS4ucFNNQjhhcAogICAgNjhGMDogMEEgMDMgNjMg
QTIgNDcgMDQgOTQgNjMgMDAgNzAgMDEgNjEgNzAgMEEgNjQgNjIgIC4uYy5HLi5jLnAuYXAuZGIK
ICAgIDY5MDA6IEEyIDIzIDkwIDk0IDYyIDAwIDkyIDkzIDdCIDYxIDAxIDAwIDAwIDcwIDBBIDFG
ICAuIy4uYi4uLnthLi4ucC4uCiAgICA2OTEwOiA1MyA0RCA0MiAzMCA3MCA3NCA2MiAwMSAwMCA2
MiA1QiAyMSAwQSAwNSA3MCA1MyAgU01CMHB0Yi4uYlshLi5wUwogICAgNjkyMDogNEQgNDIgMzAg
NjEgQTAgMTEgOTMgNjIgMDAgNzAgMEEgMDIgNTMgNEQgNDIgMzIgIE1CMGEuLi5iLnAuLlNNQjIK
ICAgIDY5MzA6IDcwIDc0IDYzIDAxIDAwIDYzIEExIDA0IDcwIDAwIDYzIEEwIDRCIDA3IDkwIDkz
ICBwdGMuLmMuLnAuYy5LLi4uCiAgICA2OTQwOiA2MiAwMCA5MyA2MyAwMCBBMCAwQSA5MyA2OCAw
MSA3MCA2NiA1MyA0RCA0MiAzMiAgYi4uYy4uLi5oLnBmU01CMgogICAgNjk1MDogQTAgMUEgOTMg
N0IgNjUgMDEgMDAgMDAgNEQgMzAgMzEgMzIgNzIgNEQgMzAgMzggIC4uLntlLi4uTTAxMnJNMDgK
ICAgIDY5NjA6IDM0IDBCIDAwIDAzIDAwIDBBIDAyIDAwIDBBIDA4IDY1IDVCIDI3IDREIDM0IDMw
ICA0Li4uLi4uLi4uZVsnTTQwCiAgICA2OTcwOiAzOCA0RCAzNCAzNiAzMCAwRCAyMCAyMCA0QiA0
NSA1MiAyRCA0MSA1MyA0QyAyRCAgOE00NjAuICBLRVItQVNMLQogICAgNjk4MDogNDMgNzAgNkQg
NTIgNjUgNjEgNjQgNTMgNkQgNjIgNzUgNzMgNDIgNzkgNzQgNjUgIENwbVJlYWRTbWJ1c0J5dGUK
ICAgIDY5OTA6IDIwIDI4IDI1IDY0IDJDIDIwIDMwIDc4IDI1IDU4IDJDIDIwIDMwIDc4IDI1IDU4
ICAgKCVkLCAweCVYLCAweCVYCiAgICA2OUEwOiAyOSAyMCAzRCAyMCAzMCAyMCA0NSA1MiA1MiA0
RiA1MiAyMCAzMSAwQSAwMCA2OCAgKSA9IDAgRVJST1IgMS4uaAogICAgNjlCMDogNjkgNkEgMDAg
MDAgMDAgQTQgMDAgNzAgMEEgMDMgNjMgQTIgNDcgMDQgOTQgNjMgIGlqLi4uLi5wLi5jLkcuLmMK
ICAgIDY5QzA6IDAwIDcwIDAxIDYxIDcwIDBBIDY0IDYyIEEyIDIzIDkwIDk0IDYyIDAwIDkyIDkz
ICAucC5hcC5kYi4jLi5iLi4uCiAgICA2OUQwOiA3QiA2MSAwMSAwMCAwMCA3MCAwQSAzRiA1MyA0
RCA0MiAzMSA3MCA3NCA2MiAwMSAge2EuLi5wLj9TTUIxcHRiLgogICAgNjlFMDogMDAgNjIgNUIg
MjEgMEEgMDUgNzAgNTMgNEQgNDIgMzEgNjEgQTAgMTEgOTMgNjIgIC5iWyEuLnBTTUIxYS4uLmIK
ICAgIDY5RjA6IDAwIDcwIDBBIDAyIDUzIDREIDQyIDMxIDcwIDc0IDYzIDAxIDAwIDYzIEExIDA0
ICAucC4uU01CMXB0Yy4uYy4uCiAgICA2QTAwOiA3MCAwMCA2MyBBMCA0QiAwNyA5MCA5MyA2MiAw
MCA5MyA2MyAwMCBBMCAwQSA5MyAgcC5jLksuLi5iLi5jLi4uLgogICAgNkExMDogNjggMDEgNzAg
NjYgNTMgNEQgNDIgMzIgQTAgMUEgOTMgN0IgNjUgMDEgMDAgMDAgIGgucGZTTUIyLi4ue2UuLi4K
ICAgIDZBMjA6IDREIDMwIDMxIDMyIDcyIDREIDMwIDM4IDM0IDBCIDAwIDAzIDAwIDBBIDAyIDAw
ICBNMDEyck0wODQuLi4uLi4uCiAgICA2QTMwOiAwQSAwOCA2NSA1QiAyNyA0RCAzNCAzMCAzOCA0
RCAzNCAzNiAzMCAwRCAyMCAyMCAgLi5lWydNNDA4TTQ2MC4gIAogICAgNkE0MDogNEIgNDUgNTIg
MkQgNDEgNTMgNEMgMkQgNDMgNzAgNkQgNTIgNjUgNjEgNjQgNTMgIEtFUi1BU0wtQ3BtUmVhZFMK
ICAgIDZBNTA6IDZEIDYyIDc1IDczIDQyIDc5IDc0IDY1IDIwIDI4IDI1IDY0IDJDIDIwIDMwIDc4
ICBtYnVzQnl0ZSAoJWQsIDB4CiAgICA2QTYwOiAyNSA1OCAyQyAyMCAzMCA3OCAyNSA1OCAyOSAy
MCAzRCAyMCAzMCAyMCA0NSA1MiAgJVgsIDB4JVgpID0gMCBFUgogICAgNkE3MDogNTIgNEYgNTIg
MjAgMzIgMEEgMDAgNjggNjkgNkEgMDAgMDAgMDAgQTQgMDAgNzAgIFJPUiAyLi5oaWouLi4uLnAK
ICAgIDZBODA6IDBBIDAzIDYzIEEyIDRFIDEyIDk0IDYzIDAwIDcwIDBBIDFGIDUzIDREIDQyIDMw
ICAuLmMuTi4uYy5wLi5TTUIwCiAgICA2QTkwOiA3RCA3OSA2OSAwMSAwMCAwMSA1MyA0RCA0MiAz
NCA3MCA2QSA1MyA0RCA0MiAzMyAgfXlpLi4uU01CNHBqU01CMwogICAgNkFBMDogNzAgMEEgMDgg
NTMgNEQgNDIgMzIgNzAgNTMgNEQgNDIgMzIgNjEgNzAgMEEgNDggIHAuLlNNQjJwU01CMmFwLkgK
ICAgIDZBQjA6IDUzIDREIDQyIDMyIDcwIDAxIDYxIDcwIDBCIEU4IDAzIDY0IEEyIDRFIDBCIDkw
ICBTTUIycC5hcC4uLmQuTi4uCiAgICA2QUMwOiA5NCA2NCAwMCA5MyA3QiA2MSAwQSAwRSAwMCAw
MCA3MCAwQiBFOCAwMyA2MiBBMiAgLmQuLnthLi4uLnAuLi5iLgogICAgNkFEMDogMUMgOTAgOTQg
NjIgMDAgOTIgOTMgN0IgNjEgMDEgMDAgMDAgNzAgNzQgNjIgMDEgIC4uLmIuLi57YS4uLnB0Yi4K
ICAgIDZBRTA6IDAwIDYyIDVCIDIxIDBBIDA1IDcwIDUzIDREIDQyIDMwIDYxIEEwIDRFIDA3IDkz
ICAuYlshLi5wU01CMGEuTi4uCiAgICA2QUYwOiA2MiAwMCA3MCAwQSAwMiA1MyA0RCA0MiAzMiBB
MCAwQSA5MyA2OCAwMSA3MCA2NiAgYi5wLi5TTUIyLi4uaC5wZgogICAgNkIwMDogNTMgNEQgNDIg
MzIgQTAgMUEgOTMgN0IgNjUgMDEgMDAgMDAgNEQgMzAgMzEgMzIgIFNNQjIuLi57ZS4uLk0wMTIK
ICAgIDZCMTA6IDcyIDREIDMwIDM4IDM0IDBCIDAwIDAzIDAwIDBBIDAyIDAwIDBBIDA4IDY1IDVC
ICByTTA4NC4uLi4uLi4uLmVbCiAgICA2QjIwOiAyNyA0RCAzNCAzMCAzOCA0RCAzNCAzNiAzMCAw
RCAyMCAyMCA0QiA0NSA1MiAyRCAgJ000MDhNNDYwLiAgS0VSLQogICAgNkIzMDogNDEgNTMgNEMg
MkQgNDMgNzAgNkQgNTIgNjUgNjEgNjQgNTMgNkQgNjIgNzUgNzMgIEFTTC1DcG1SZWFkU21idXMK
ICAgIDZCNDA6IDQyIDc5IDc0IDY1IDIwIDI4IDI1IDY0IDJDIDIwIDMwIDc4IDI1IDU4IDJDIDIw
ICBCeXRlICglZCwgMHglWCwgCiAgICA2QjUwOiAzMCA3OCAyNSA1OCAyOSAyMCAzRCAyMCAzMCAy
MCA0NSA1MiA1MiA0RiA1MiAyMCAgMHglWCkgPSAwIEVSUk9SIAogICAgNkI2MDogMzMgMEEgMDAg
NjggNjkgNkEgMDAgMDAgMDAgQTQgMDAgNzAgNzQgNjQgMDEgMDAgIDMuLmhpai4uLi4ucHRkLi4K
ICAgIDZCNzA6IDY0IDVCIDIxIDBBIDA1IDcwIDUzIDREIDQyIDMwIDYxIEEwIDBGIDkyIDkzIDdC
ICBkWyEuLnBTTUIwYS4uLi57CiAgICA2QjgwOiA2MSAwQSAwNCAwMCAwMCA3MCAwMCA2MyA3MCAw
MCA2NCBBMSAyNiBBMCAxOSA5MiAgYS4uLi5wLmNwLmQuJi4uLgogICAgNkI5MDogOTMgN0IgNjEg
MEEgMDggMDAgMDAgNzAgMEEgMDggNTMgNEQgNDIgMzAgNzAgNzQgIC57YS4uLi5wLi5TTUIwcHQK
ICAgIDZCQTA6IDYzIDAxIDAwIDYzIDcwIDAwIDY0IEExIDBBIDcwIDAwIDYzIDcwIDUzIDREIDQy
ICBjLi5jcC5kLi5wLmNwU01CCiAgICA2QkIwOiAzNSA2NCA3MCAwQSAxRiA1MyA0RCA0MiAzMCA3
RCA1MyA0RCA0MiAzOCAwQSAyMCAgNWRwLi5TTUIwfVNNQjguIAogICAgNkJDMDogNTMgNEQgNDIg
MzggQTAgMEEgOTMgNjggMDEgNzAgNjYgNTMgNEQgNDIgMzIgQTAgIFNNQjguLi5oLnBmU01CMi4K
ICAgIDZCRDA6IDFBIDkzIDdCIDY1IDAxIDAwIDAwIDREIDMwIDMxIDMyIDcyIDREIDMwIDM4IDM0
ICAuLntlLi4uTTAxMnJNMDg0CiAgICA2QkUwOiAwQiAwMCAwMyAwMCAwQSAwMiAwMCAwQSAwOCA2
NSA1QiAyNyA0RCAzNCAzMCAzOCAgLi4uLi4uLi4uZVsnTTQwOAogICAgNkJGMDogNEQgMzQgMzYg
MzAgMEQgMjAgMjAgNEIgNDUgNTIgMkQgNDEgNTMgNEMgMkQgNDMgIE00NjAuICBLRVItQVNMLUMK
ICAgIDZDMDA6IDcwIDZEIDUyIDY1IDYxIDY0IDUzIDZEIDYyIDc1IDczIDQyIDc5IDc0IDY1IDIw
ICBwbVJlYWRTbWJ1c0J5dGUgCiAgICA2QzEwOiAyOCAyNSA2NCAyQyAyMCAzMCA3OCAyNSA1OCAy
QyAyMCAzMCA3OCAyNSA1OCAyOSAgKCVkLCAweCVYLCAweCVYKQogICAgNkMyMDogMjAgM0QgMjAg
MzAgNzggMjUgNTggMjAgNTMgNzUgNjMgNjMgNjUgNzMgNzMgMEEgICA9IDB4JVggU3VjY2Vzcy4K
ICAgIDZDMzA6IDAwIDY4IDY5IDZBIDY0IDAwIDAwIEE0IDY0IDE0IDRCIDQ5IDREIDM0IDMxIDMw
ICAuaGlqZC4uLmQuS0lNNDEwCiAgICA2QzQwOiAwQyA3MCA0RCAzMCAzNCAzOSA0RCAzMSAzMiAz
OCAwQSA5NCA2MCBBMCA0RiAwNSAgLnBNMDQ5TTEyOC4uYC5PLgogICAgNkM1MDogOTMgNjAgMDEg
NEQgMzQgMzYgMzAgMEQgMjAgMjAgNEIgNDUgNTIgMkQgNDEgNTMgIC5gLk00NjAuICBLRVItQVMK
ICAgIDZDNjA6IDRDIDJEIDQzIDcwIDZEIDU3IDcyIDY5IDc0IDY1IDUzIDZEIDYyIDc1IDczIDQy
ICBMLUNwbVdyaXRlU21idXNCCiAgICA2QzcwOiA3OSA3NCA2NSAyMCAyOCAyNSA2NCAyQyAyMCAz
MCA3OCAyNSA1OCAyQyAyMCAzMCAgeXRlICglZCwgMHglWCwgMAogICAgNkM4MDogNzggMjUgNTgg
MkMgMjAgMzAgNzggMjUgNTggMjkgMjAgM0QgMjAgMzAgMjAgNTMgIHglWCwgMHglWCkgPSAwIFMK
ICAgIDZDOTA6IDZEIDYyIDc1IDczIDIwIDQxIDYzIDYzIDY1IDczIDczIDIwIDQ0IDY5IDczIDYx
ICBtYnVzIEFjY2VzcyBEaXNhCiAgICA2Q0EwOiA2MiA2QyA2NSAwQSAwMCA2OCA2OSA2QSA2QiAw
MCAwMCBBNCAwMCA1QiAyMyA0RCAgYmxlLi5oaWprLi4uLlsjTQogICAgNkNCMDogMzQgMzAgMzgg
RkYgRkYgNzIgNEQgMzQgMzEgMzQgNzkgNjggMEEgMDUgMDAgNjAgIDQwOC4uck00MTR5aC4uLmAK
ICAgIDZDQzA6IDVCIDgwIDU2IDQxIDUyIDREIDAxIDYwIDBBIDA5IDVCIDgxIDMzIDU2IDQxIDUy
ICBbLlZBUk0uYC4uWy4zVkFSCiAgICA2Q0QwOiA0RCAwMSA1MyA0RCA0MiAzMCAwOCA1MyA0RCA0
MiAzMSAwOCA1MyA0RCA0MiAzMiAgTS5TTUIwLlNNQjEuU01CMgogICAgNkNFMDogMDggNTMgNEQg
NDIgMzMgMDggNTMgNEQgNDIgMzQgMDggNTMgNEQgNDIgMzUgMDggIC5TTUIzLlNNQjQuU01CNS4K
ICAgIDZDRjA6IDUzIDREIDQyIDM2IDA4IDUzIDREIDQyIDM3IDA4IDUzIDREIDQyIDM4IDA4IDcw
ICBTTUI2LlNNQjcuU01COC5wCiAgICA2RDAwOiA0RCAzMCAzNCAzOSA3MiA0RCAzMCAzOCAzNCAw
QiAwMCAwMyAwMCAwQSAwMiA2NSAgTTA0OXJNMDg0Li4uLi4uZQogICAgNkQxMDogQTAgMUQgOTMg
N0IgNjUgMDEgMDAgMDAgNEQgMzAgMzEgMzIgNzIgNEQgMzAgMzggIC4uLntlLi4uTTAxMnJNMDgK
ICAgIDZEMjA6IDM0IDBCIDAwIDAzIDAwIDBBIDAyIDAwIDBBIDA4IDdEIDY1IDAxIDAwIEEwIDE0
ICA0Li4uLi4uLi4ufWUuLi4uCiAgICA2RDMwOiA5MyA2OCAwMSA3MCA1MyA0RCA0MiAzMiA2NiA3
MCA3QiA2NiAwQSA3RiAwMCA1MyAgLmgucFNNQjJmcHtmLi4uUwogICAgNkQ0MDogNEQgNDIgMzIg
NzAgMDAgNjEgNzAgMEEgNjQgNjIgQTIgMjkgOTAgOTQgNjIgMDAgIE1CMnAuYXAuZGIuKS4uYi4K
ICAgIDZENTA6IDkyIDkzIDdCIDYxIDBBIDEwIDAwIDBBIDEwIDdEIDUzIDREIDQyIDM4IDBBIDEw
ICAuLnthLi4uLi59U01COC4uCiAgICA2RDYwOiA1MyA0RCA0MiAzOCA3MCA3NCA2MiAwMSAwMCA2
MiA1QiAyMSAwQSAwNSA3MCA1MyAgU01COHB0Yi4uYlshLi5wUwogICAgNkQ3MDogNEQgNDIgMzgg
NjEgNzAgMEEgMDMgNjMgQTIgNDcgMDQgOTQgNjMgMDAgNzAgMDEgIE1COGFwLi5jLkcuLmMucC4K
ICAgIDZEODA6IDYxIDcwIDBBIDY0IDYyIEEyIDIzIDkwIDk0IDYyIDAwIDkyIDkzIDdCIDYxIDAx
ICBhcC5kYi4jLi5iLi4ue2EuCiAgICA2RDkwOiAwMCAwMCA3MCAwQSAxRiA1MyA0RCA0MiAzMCA3
MCA3NCA2MiAwMSAwMCA2MiA1QiAgLi5wLi5TTUIwcHRiLi5iWwogICAgNkRBMDogMjEgMEEgMDUg
NzAgNTMgNEQgNDIgMzAgNjEgQTAgMTEgOTMgNjIgMDAgNzAgMEEgICEuLnBTTUIwYS4uLmIucC4K
ICAgIDZEQjA6IDAyIDUzIDREIDQyIDMyIDcwIDc0IDYzIDAxIDAwIDYzIEExIDA0IDcwIDAwIDYz
ICAuU01CMnB0Yy4uYy4ucC5jCiAgICA2REMwOiBBMCA0MiAwOCA5MCA5MyA2MiAwMCA5MyA2MyAw
MCBBMCAwQSA5MyA2OCAwMSA3MCAgLkIuLi5iLi5jLi4uLmgucAogICAgNkREMDogNjYgNTMgNEQg
NDIgMzIgQTAgMUEgOTMgN0IgNjUgMDEgMDAgMDAgNEQgMzAgMzEgIGZTTUIyLi4ue2UuLi5NMDEK
ICAgIDZERTA6IDMyIDcyIDREIDMwIDM4IDM0IDBCIDAwIDAzIDAwIDBBIDAyIDAwIDBBIDA4IDY1
ICAyck0wODQuLi4uLi4uLi5lCiAgICA2REYwOiA1QiAyNyA0RCAzNCAzMCAzOCA0RCAzNCAzNiAz
MCAwRCAyMCAyMCA0QiA0NSA1MiAgWydNNDA4TTQ2MC4gIEtFUgogICAgNkUwMDogMkQgNDEgNTMg
NEMgMkQgNDMgNzAgNkQgNTcgNzIgNjkgNzQgNjUgNTMgNkQgNjIgIC1BU0wtQ3BtV3JpdGVTbWIK
ICAgIDZFMTA6IDc1IDczIDQyIDc5IDc0IDY1IDIwIDI4IDI1IDY0IDJDIDIwIDMwIDc4IDI1IDU4
ICB1c0J5dGUgKCVkLCAweCVYCiAgICA2RTIwOiAyQyAyMCAzMCA3OCAyNSA1OCAyQyAyMCAzMCA3
OCAyNSA1OCAyOSAyMCAzRCAyMCAgLCAweCVYLCAweCVYKSA9IAogICAgNkUzMDogMzAgMjAgNDUg
NTIgNTIgNEYgNTIgMjAgMzEgMEEgMDAgNjggNjkgNkEgNkIgMDAgIDAgRVJST1IgMS4uaGlqay4K
ICAgIDZFNDA6IDAwIEE0IDAwIDcwIDBBIDAzIDYzIEEyIDQ3IDA0IDk0IDYzIDAwIDcwIDAxIDYx
ICAuLi5wLi5jLkcuLmMucC5hCiAgICA2RTUwOiA3MCAwQSA2NCA2MiBBMiAyMyA5MCA5NCA2MiAw
MCA5MiA5MyA3QiA2MSAwMSAwMCAgcC5kYi4jLi5iLi4ue2EuLgogICAgNkU2MDogMDAgNzAgMEEg
M0YgNTMgNEQgNDIgMzEgNzAgNzQgNjIgMDEgMDAgNjIgNUIgMjEgIC5wLj9TTUIxcHRiLi5iWyEK
ICAgIDZFNzA6IDBBIDA1IDcwIDUzIDREIDQyIDMxIDYxIEEwIDExIDkzIDYyIDAwIDcwIDBBIDAy
ICAuLnBTTUIxYS4uLmIucC4uCiAgICA2RTgwOiA1MyA0RCA0MiAzMSA3MCA3NCA2MyAwMSAwMCA2
MyBBMSAwNCA3MCAwMCA2MyBBMCAgU01CMXB0Yy4uYy4ucC5jLgogICAgNkU5MDogNDIgMDggOTAg
OTMgNjIgMDAgOTMgNjMgMDAgQTAgMEEgOTMgNjggMDEgNzAgNjYgIEIuLi5iLi5jLi4uLmgucGYK
ICAgIDZFQTA6IDUzIDREIDQyIDMyIEEwIDFBIDkzIDdCIDY1IDAxIDAwIDAwIDREIDMwIDMxIDMy
ICBTTUIyLi4ue2UuLi5NMDEyCiAgICA2RUIwOiA3MiA0RCAzMCAzOCAzNCAwQiAwMCAwMyAwMCAw
QSAwMiAwMCAwQSAwOCA2NSA1QiAgck0wODQuLi4uLi4uLi5lWwogICAgNkVDMDogMjcgNEQgMzQg
MzAgMzggNEQgMzQgMzYgMzAgMEQgMjAgMjAgNEIgNDUgNTIgMkQgICdNNDA4TTQ2MC4gIEtFUi0K
ICAgIDZFRDA6IDQxIDUzIDRDIDJEIDQzIDcwIDZEIDU3IDcyIDY5IDc0IDY1IDUzIDZEIDYyIDc1
ICBBU0wtQ3BtV3JpdGVTbWJ1CiAgICA2RUUwOiA3MyA0MiA3OSA3NCA2NSAyMCAyOCAyNSA2NCAy
QyAyMCAzMCA3OCAyNSA1OCAyQyAgc0J5dGUgKCVkLCAweCVYLAogICAgNkVGMDogMjAgMzAgNzgg
MjUgNTggMkMgMjAgMzAgNzggMjUgNTggMjkgMjAgM0QgMjAgMzAgICAweCVYLCAweCVYKSA9IDAK
ICAgIDZGMDA6IDIwIDQ1IDUyIDUyIDRGIDUyIDIwIDMyIDBBIDAwIDY4IDY5IDZBIDZCIDAwIDAw
ICAgRVJST1IgMi4uaGlqay4uCiAgICA2RjEwOiBBNCAwMCA3MCAwQSAwMyA2MyBBMiA0NyAxMyA5
NCA2MyAwMCA3MCAwQSAxRiA1MyAgLi5wLi5jLkcuLmMucC4uUwogICAgNkYyMDogNEQgNDIgMzAg
NzAgNzkgNjkgMDEgMDAgNTMgNEQgNDIgMzQgNzAgNkEgNTMgNEQgIE1CMHB5aS4uU01CNHBqU00K
ICAgIDZGMzA6IDQyIDMzIDcwIDBBIDA4IDUzIDREIDQyIDMyIDcwIDUzIDREIDQyIDMyIDYxIDcw
ICBCM3AuLlNNQjJwU01CMmFwCiAgICA2RjQwOiA2QiA1MyA0RCA0MiAzNSA3MCAwQSA0OCA1MyA0
RCA0MiAzMiA3MCAwMSA2MSA3MCAga1NNQjVwLkhTTUIycC5hcAogICAgNkY1MDogMEIgRTggMDMg
NjQgQTIgNDUgMEMgOTAgOTQgNjQgMDAgOTMgN0IgNjEgMEEgMEUgIC4uLmQuRS4uLmQuLnthLi4K
ICAgIDZGNjA6IDAwIDAwIDcwIDBCIEU4IDAzIDYyIEEyIDFDIDkwIDk0IDYyIDAwIDkyIDkzIDdC
ICAuLnAuLi5iLi4uLmIuLi57CiAgICA2RjcwOiA2MSAwMSAwMCAwMCA3MCA3NCA2MiAwMSAwMCA2
MiA1QiAyMSAwQSAwNSA3MCA1MyAgYS4uLnB0Yi4uYlshLi5wUwogICAgNkY4MDogNEQgNDIgMzAg
NjEgQTAgNDUgMDggOTMgNjIgMDAgNzAgMEEgMDIgNTMgNEQgNDIgIE1CMGEuRS4uYi5wLi5TTUIK
ICAgIDZGOTA6IDMyIEEwIDBBIDkzIDY4IDAxIDcwIDY2IDUzIDREIDQyIDMyIEEwIDFBIDkzIDdC
ICAyLi4uaC5wZlNNQjIuLi57CiAgICA2RkEwOiA2NSAwMSAwMCAwMCA0RCAzMCAzMSAzMiA3MiA0
RCAzMCAzOCAzNCAwQiAwMCAwMyAgZS4uLk0wMTJyTTA4NC4uLgogICAgNkZCMDogMDAgMEEgMDIg
MDAgMEEgMDggNjUgNUIgMjcgNEQgMzQgMzAgMzggNEQgMzQgMzYgIC4uLi4uLmVbJ000MDhNNDYK
ICAgIDZGQzA6IDMwIDBEIDIwIDIwIDRCIDQ1IDUyIDJEIDQxIDUzIDRDIDJEIDQzIDcwIDZEIDU3
ICAwLiAgS0VSLUFTTC1DcG1XCiAgICA2RkQwOiA3MiA2OSA3NCA2NSA1MyA2RCA2MiA3NSA3MyA0
MiA3OSA3NCA2NSAyMCAyOCAyNSAgcml0ZVNtYnVzQnl0ZSAoJQogICAgNkZFMDogNjQgMkMgMjAg
MzAgNzggMjUgNTggMkMgMjAgMzAgNzggMjUgNTggMkMgMjAgMzAgIGQsIDB4JVgsIDB4JVgsIDAK
ICAgIDZGRjA6IDc4IDI1IDU4IDI5IDIwIDNEIDIwIDMwIDIwIDQ1IDUyIDUyIDRGIDUyIDIwIDMz
ICB4JVgpID0gMCBFUlJPUiAzCiAgICA3MDAwOiAwQSAwMCA2OCA2OSA2QSA2QiAwMCAwMCBBNCAw
MCA3MCA3NCA2NCAwMSAwMCA2NCAgLi5oaWprLi4uLnB0ZC4uZAogICAgNzAxMDogNUIgMjEgMEEg
MDUgNzAgNTMgNEQgNDIgMzAgNjEgQTAgMEYgOTIgOTMgN0IgNjEgIFshLi5wU01CMGEuLi4ue2EK
ICAgIDcwMjA6IDBBIDA0IDAwIDAwIDcwIDAwIDYzIDcwIDAwIDY0IEExIDIzIEEwIDE5IDkyIDkz
ICAuLi4ucC5jcC5kLiMuLi4uCiAgICA3MDMwOiA3QiA2MSAwQSAwOCAwMCAwMCA3MCAwQSAwOCA1
MyA0RCA0MiAzMCA3MCA3NCA2MyAge2EuLi4ucC4uU01CMHB0YwogICAgNzA0MDogMDEgMDAgNjMg
NzAgMDAgNjQgQTEgMDcgNzAgMDAgNjMgNzAgMDAgNjQgNzAgMEEgIC4uY3AuZC4ucC5jcC5kcC4K
ICAgIDcwNTA6IDFGIDUzIDREIDQyIDMwIDdEIDUzIDREIDQyIDM4IDBBIDIwIDUzIDREIDQyIDM4
ICAuU01CMH1TTUI4LiBTTUI4CiAgICA3MDYwOiBBMCAwQSA5MyA2OCAwMSA3MCA2NiA1MyA0RCA0
MiAzMiBBMCAxQSA5MyA3QiA2NSAgLi4uaC5wZlNNQjIuLi57ZQogICAgNzA3MDogMDEgMDAgMDAg
NEQgMzAgMzEgMzIgNzIgNEQgMzAgMzggMzQgMEIgMDAgMDMgMDAgIC4uLk0wMTJyTTA4NC4uLi4K
ICAgIDcwODA6IDBBIDAyIDAwIDBBIDA4IDY1IDVCIDI3IDREIDM0IDMwIDM4IDREIDM0IDM2IDMw
ICAuLi4uLmVbJ000MDhNNDYwCiAgICA3MDkwOiAwRCAyMCAyMCA0QiA0NSA1MiAyRCA0MSA1MyA0
QyAyRCA0MyA3MCA2RCA1NyA3MiAgLiAgS0VSLUFTTC1DcG1XcgogICAgNzBBMDogNjkgNzQgNjUg
NTMgNkQgNjIgNzUgNzMgNDIgNzkgNzQgNjUgMjAgMjggMjUgNjQgIGl0ZVNtYnVzQnl0ZSAoJWQK
ICAgIDcwQjA6IDJDIDIwIDMwIDc4IDI1IDU4IDJDIDIwIDMwIDc4IDI1IDU4IDJDIDIwIDMwIDc4
ICAsIDB4JVgsIDB4JVgsIDB4CiAgICA3MEMwOiAyNSA1OCAyOSAyMCA1MyA3NSA2MyA2MyA2NSA3
MyA3MyAwQSAwMCA2OCA2OSA2QSAgJVgpIFN1Y2Nlc3MuLmhpagogICAgNzBEMDogNkIgMDAgMDAg
QTQgNjQgMTQgNEIgMTQgNEQgMzQgNDYgMzEgMDkgNEQgMzQgMzYgIGsuLi5kLksuTTRGMS5NNDYK
ICAgIDcwRTA6IDMwIDBEIDIwIDIwIDRCIDQ1IDUyIDJEIDQxIDUzIDRDIDJEIDQzIDcwIDZEIDQz
ICAwLiAgS0VSLUFTTC1DcG1DCiAgICA3MEYwOiA2OCA2NSA2MyA2QiA0NSA3OCA3MCA2MSA2RSA2
NCA2NSA3MiA0OSA2RSA3MCA3NSAgaGVja0V4cGFuZGVySW5wdQogICAgNzEwMDogNzQgNDUgNzYg
NjUgNkUgNzQgMjAgMjggMzAgNzggMjUgNTggMjkgMjAgNTMgNzQgIHRFdmVudCAoMHglWCkgU3QK
ICAgIDcxMTA6IDYxIDcyIDc0IDBBIDAwIDY4IDAwIDAwIDAwIDAwIDAwIDcwIDAwIDY1IEEwIDRE
ICBhcnQuLmguLi4uLnAuZS5NCiAgICA3MTIwOiAwQiA5MCA5MiA5NSA2OCAwMCA5MiA5NCA2OCAw
QSAwMyA3MCA0RCAzNCA0NiAzMCAgLi4uLmguLi5oLi5wTTRGMAogICAgNzEzMDogNjAgQTAgNEEg
MEEgOTIgOTMgNjAgMDAgNzIgNjAgMEEgMTAgNjAgNzIgNjAgNzcgIGAuSi4uLmAucmAuLmByYHcK
ICAgIDcxNDA6IDY4IDBBIDI2IDAwIDYwIEEwIDQ2IDA5IDkzIDREIDMwIDM0IDM5IDYwIDAwIDY4
ICBoLiYuYC5GLi5NMDQ5YC5oCiAgICA3MTUwOiA3MCA0RCAzMCAzNCAzOSA2MCAwQSAxNSA2MSA3
MCA0RCAzMCAzNCAzOSA2MCAwQSAgcE0wNDlgLi5hcE0wNDlgLgogICAgNzE2MDogMTYgNjIgNzAg
NEQgMzAgMzQgMzkgNjAgMEEgMUUgNjMgNzAgNEQgMzQgMzAgMzkgIC5icE0wNDlgLi5jcE00MDkK
ICAgIDcxNzA6IDYxIDYyIDAwIDY0IDREIDMwIDM0IDQzIDYwIDBBIDFFIDY0IDdGIDYzIDY0IDY0
ICBhYi5kTTA0Q2AuLmQuY2RkCiAgICA3MTgwOiA3QiA2NCA0RCAzMCAzNCAzOSA2MCAwQSAxQyA2
NCA3RCA2NCA0RCAzMCAzNCAzOSAge2RNMDQ5YC4uZH1kTTA0OQogICAgNzE5MDogNjAgMEEgMUQg
NjQgQTAgNDMgMDQgOTIgOTUgNEQgMzAgMzQgMzkgNjAgMEEgMTcgIGAuLmQuQy4uLk0wNDlgLi4K
ICAgIDcxQTA6IDAxIDcwIDREIDMwIDM0IDM5IDYwIDBBIDI1IDYzIDcwIDREIDM0IDMwIDM5IDYx
ICAucE0wNDlgLiVjcE00MDlhCiAgICA3MUIwOiA2MiAwMSA2NSA0RCAzMCAzNCA0MyA2MCAwQSAy
NSA2NSA3RiA2MyA2NSA2NSA3QiAgYi5lTTA0Q2AuJWUuY2VlewogICAgNzFDMDogNjUgNEQgMzAg
MzQgMzkgNjAgMEEgMjMgNjUgN0QgNjUgNEQgMzAgMzQgMzkgNjAgIGVNMDQ5YC4jZX1lTTA0OWAK
ICAgIDcxRDA6IDBBIDI0IDY1IDc5IDY1IDBBIDA4IDY1IDdEIDY0IDY1IDY1IDREIDM0IDM2IDMw
ICAuJGV5ZS4uZX1kZWVNNDYwCiAgICA3MUUwOiAwRCAyMCAyMCA0QiA0NSA1MiAyRCA0MSA1MyA0
QyAyRCA0MyA3MCA2RCA0MyA2OCAgLiAgS0VSLUFTTC1DcG1DaAogICAgNzFGMDogNjUgNjMgNkIg
NDUgNzggNzAgNjEgNkUgNjQgNjUgNzIgNDkgNkUgNzAgNzUgNzQgIGVja0V4cGFuZGVySW5wdXQK
ICAgIDcyMDA6IDQ1IDc2IDY1IDZFIDc0IDIwIDI4IDMwIDc4IDI1IDU4IDI5IDIwIDNEIDIwIDMw
ICBFdmVudCAoMHglWCkgPSAwCiAgICA3MjEwOiA3OCAyNSA1OCAyMCA0NSA2RSA2NCAwQSAwMCA2
OCA2NSAwMCAwMCAwMCAwMCBBNCAgeCVYIEVuZC4uaGUuLi4uLgogICAgNzIyMDogNjUgNUIgMDEg
NEQgMzQgNDUgMzUgMDAgMDggNEQgMzQgNDUgMzcgMEEgNUEgMDggIGVbLk00RTUuLk00RTcuWi4K
ICAgIDcyMzA6IDREIDM0IDQ1IDM4IDBBIDVBIDA4IDREIDM0IDQ1IDM5IDBBIDVBIDA4IDREIDM0
ICBNNEU4LlouTTRFOS5aLk00CiAgICA3MjQwOiA0NSA0MSAwQyA1QSA1QSA1QSA1QSAwOCA0RCAz
NCA0NSA0MiAwQyA1QSA1QSA1QSAgRUEuWlpaWi5NNEVCLlpaWgogICAgNzI1MDogNUEgMDggNEQg
MzQgNDUgNDMgMTIgNDQgMTEgMDMgMEEgMDIgMTIgNDQgMDcgMDUgIFouTTRFQy5ELi4uLi5ELi4K
ICAgIDcyNjA6IDEyIDEwIDA3IDBBIDA2IDBBIDBGIDBBIDEzIDBBIDEwIDBBIDEyIDBBIDE0IDBB
ICAuLi4uLi4uLi4uLi4uLi4uCiAgICA3MjcwOiAxNSAxMiAxNyAwNiAwRCA0OSAzMiA0MyAzMCAw
MCAwQSA5MSAwQSA5MiAwMCAwQyAgLi4uLi5JMkMwLi4uLi4uLgogICAgNzI4MDogNEEgMUUgRDgg
RkUgMEMgMDAgMjAgREMgRkUgMTIgMTcgMDYgMEQgNDkgMzIgNDMgIEouLi4uLiAuLi4uLi5JMkMK
ICAgIDcyOTA6IDMxIDAwIDBBIDkzIDBBIDk0IDAwIDBDIDRDIDFFIEQ4IEZFIDBDIDAwIDMwIERD
ICAxLi4uLi4uLkwuLi4uLjAuCiAgICA3MkEwOiBGRSAxMiAxNyAwNiAwRCA0OSAzMiA0MyAzMiAw
MCAwQSA3MSAwQSA3MiAwMSAwQyAgLi4uLi5JMkMyLi5xLnIuLgogICAgNzJCMDogNEUgMUUgRDgg
RkUgMEMgMDAgNDAgREMgRkUgMTIgMTcgMDYgMEQgNDkgMzIgNDMgIE4uLi4uLkAuLi4uLi5JMkMK
ICAgIDcyQzA6IDMzIDAwIDBBIDEzIDBBIDE0IDAxIDBDIDUwIDFFIEQ4IEZFIDBDIDAwIDUwIERD
ICAzLi4uLi4uLlAuLi4uLlAuCiAgICA3MkQwOiBGRSAxMiA0OSAwOSAwNyAxMiAwNSAwMiAwMSAw
QSAxMSAxMiAxNyAwNiAwRCA0OSAgLi5JLi4uLi4uLi4uLi4uSQogICAgNzJFMDogMzIgNDMgMzAg
MDAgMEEgOTEgMEEgOTIgMDEgMEMgNEEgMUUgRDggRkUgMEMgMDAgIDJDMC4uLi4uLi5KLi4uLi4K
ICAgIDcyRjA6IDIwIERDIEZFIDEyIDE3IDA2IDBEIDQ5IDMyIDQzIDMxIDAwIDBBIDkzIDBBIDk0
ICAgLi4uLi4uSTJDMS4uLi4uCiAgICA3MzAwOiAwMSAwQyA0QyAxRSBEOCBGRSAwQyAwMCAzMCBE
QyBGRSAxMiAxNyAwNiAwRCA0OSAgLi5MLi4uLi4wLi4uLi4uSQogICAgNzMxMDogMzIgNDMgMzIg
MDAgMEEgOTUgMEEgOTYgMDEgMEMgNEUgMUUgRDggRkUgMEMgMDAgIDJDMi4uLi4uLi5OLi4uLi4K
ICAgIDczMjA6IDQwIERDIEZFIDEyIDE3IDA2IDBEIDQ5IDMyIDQzIDMzIDAwIDBBIDk3IDBBIDk4
ICBALi4uLi4uSTJDMy4uLi4uCiAgICA3MzMwOiAwMSAwQyA1MCAxRSBEOCBGRSAwQyAwMCA1MCBE
QyBGRSAxMiAxNyAwNiAwRCA0OSAgLi5QLi4uLi5QLi4uLi4uSQogICAgNzM0MDogMzIgNDMgMzQg
MDAgMEEgMEQgMEEgMEUgMDAgMEMgNTIgMUUgRDggRkUgMEMgMDAgIDJDNC4uLi4uLi5SLi4uLi4K
ICAgIDczNTA6IDYwIERDIEZFIDEyIDE3IDA2IDBEIDQ5IDMyIDQzIDM1IDAwIDBBIDEzIDBBIDE0
ICBgLi4uLi4uSTJDNS4uLi4uCiAgICA3MzYwOiAwMCAwQyA1NCAxRSBEOCBGRSAwQyAwMCBCMCBE
QyBGRSAxNCA0NyAxNCA0RCAzNCAgLi5ULi4uLi4uLi4uRy5NNAogICAgNzM3MDogNDUgMzYgMDkg
MDggNUYgNTQgNUYgMzAgMDAgNzAgNEQgMzAgMzggMzUgNjAgNzAgIEU2Li5fVF8wLnBNMDg1YHAK
ICAgIDczODA6IDgzIDg4IDREIDM0IDQ1IDQzIDAwIDAwIDYxIDcwIDAxIDYyIDcwIDAwIDY3IEEy
ICAuLk00RUMuLmFwLmJwLmcuCiAgICA3MzkwOiAzRCA5MiA5NCA2MiA2MSA3MCA4MyA4OCA0RCAz
NCA0NSA0MyA2MiAwMCA2MyA3MCAgPS4uYmFwLi5NNEVDYi5jcAogICAgNzNBMDogODMgODggNjMg
MDAgMDAgNjQgNzAgODMgODggNjQgMDAgMDAgNjUgNzAgMDEgNjYgIC4uYy4uZHAuLmQuLmVwLmYK
ICAgIDczQjA6IEEyIDE0IDkyIDk0IDY2IDY1IEEwIDBDIDkzIDgzIDg4IDY0IDY2IDAwIDYwIDcw
ICAuLi4uZmUuLi4uLmRmLmBwCiAgICA3M0MwOiAwMSA2NyBBNSA3NSA2NiBBMCAwNSA5MyAwMSA2
NyBBNSA3NSA2MiBBMCAwNiA5NCAgLmcudWYuLi4uZy51Yi4uLgogICAgNzNEMDogNjIgNjEgQTQg
MDAgNzAgMDEgNjIgNzAgODcgNjMgNjEgQTIgNEMgMDcgMDEgNzAgIGJhLi5wLmJwLmNhLkwuLnAK
ICAgIDczRTA6IDk5IDY4IDAwIDVGIDU0IDVGIDMwIEEwIDBGIDkzIDVGIDU0IDVGIDMwIDAwIDcw
ICAuaC5fVF8wLi4uX1RfMC5wCiAgICA3M0YwOiAwRCA0OSAzMiA0MyAzMCAwMCA2MCBBMSA0RiAw
NSBBMCAwRiA5MyA1RiA1NCA1RiAgLkkyQzAuYC5PLi4uLl9UXwogICAgNzQwMDogMzAgMDEgNzAg
MEQgNDkgMzIgNDMgMzEgMDAgNjAgQTEgNEMgMDQgQTAgMTAgOTMgIDAucC5JMkMxLmAuTC4uLi4K
ICAgIDc0MTA6IDVGIDU0IDVGIDMwIDBBIDAyIDcwIDBEIDQ5IDMyIDQzIDMyIDAwIDYwIEExIDM4
ICBfVF8wLi5wLkkyQzIuYC44CiAgICA3NDIwOiBBMCAxMCA5MyA1RiA1NCA1RiAzMCAwQSAwMyA3
MCAwRCA0OSAzMiA0MyAzMyAwMCAgLi4uX1RfMC4ucC5JMkMzLgogICAgNzQzMDogNjAgQTEgMjUg
QTAgMTAgOTMgNUYgNTQgNUYgMzAgMEEgMDQgNzAgMEQgNDkgMzIgIGAuJS4uLl9UXzAuLnAuSTIK
ICAgIDc0NDA6IDQzIDM0IDAwIDYwIEExIDEyIEEwIDEwIDkzIDVGIDU0IDVGIDMwIDBBIDA1IDcw
ICBDNC5gLi4uLi5fVF8wLi5wCiAgICA3NDUwOiAwRCA0OSAzMiA0MyAzNSAwMCA2MCBBNSBBMiAx
QiA5MiA5NCA2MiA2MSA3MCA4MyAgLkkyQzUuYC4uLi4uYmFwLgogICAgNzQ2MDogODggNjMgNjIg
MDAgNjQgNzAgODMgODggNjQgMDAgMDAgNjUgQTAgMDUgOTMgNjUgIC5jYi5kcC4uZC4uZS4uLmUK
ICAgIDc0NzA6IDYwIEE1IDc1IDYyIEEwIDA2IDk0IDYyIDYxIEE0IDAwIDcwIDgzIDg4IDY0IDAx
ICBgLnViLi4uYmEuLnAuLmQuCiAgICA3NDgwOiAwMCA0RCAzNCA0NSAzNyA3MCA4MyA4OCA2NCAw
QSAwMiAwMCA0RCAzNCA0NSAzOCAgLk00RTdwLi5kLi4uTTRFOAogICAgNzQ5MDogNzAgODMgODgg
NjQgMEEgMDMgMDAgNEQgMzQgNDUgMzkgNzAgODMgODggNjQgMEEgIHAuLmQuLi5NNEU5cC4uZC4K
ICAgIDc0QTA6IDA0IDAwIDREIDM0IDQ1IDQxIDcwIDgzIDg4IDY0IDBBIDA1IDAwIDREIDM0IDQ1
ICAuLk00RUFwLi5kLi4uTTRFCiAgICA3NEIwOiA0MiBBNCAwMSAxNCA0NiA2OSA0RCAzNCA0NSAz
MCAwRCA3MCA0RCAzNCA0NSAzNiAgQi4uLkZpTTRFMC5wTTRFNgogICAgNzRDMDogNjggNjAgQTAg
MDggOTMgNjAgMDAgQTQgMEIgMDAgRkYgMDggNTIgNTQgNDYgNDYgIGhgLi4uYC4uLi4uLlJURkYK
ICAgIDc0RDA6IDExIDA1IDBCIDAwIDAxIDAwIDcwIDREIDM0IDQ1IDQxIDYwIDcwIDREIDM0IDQ1
ICAuLi4uLi5wTTRFQWBwTTRFCiAgICA3NEUwOiA0MiA2MSA1QiA4MCA1NiA0MSA1MiAzMCAwMCA2
MCAwQSAwMiA1QiA4MSAyRSA1NiAgQmFbLlZBUjAuYC4uWy4uVgogICAgNzRGMDogNDEgNTIgMzAg
MDEgNDEgNDQgNTQgNDQgMDIgNDEgNDQgNTAgNTMgMDEgNDEgNDQgIEFSMC5BRFRELkFEUFMuQUQK
ICAgIDc1MDA6IDUwIDQ0IDAxIDQxIDQ0IDUzIDRGIDAxIDQxIDQ0IDUzIDQzIDAxIDQxIDQ0IDUz
ICBQRC5BRFNPLkFEU0MuQURTCiAgICA3NTEwOiA1MiAwMSA0MSA0NCA0OSA1MyAwMSA0MSA0NCA0
NCA1MyAwMyA1QiA4MCA1NiA0MSAgUi5BRElTLkFERFMuWy5WQQogICAgNzUyMDogNTIgMzEgMDAg
NjEgMEIgMDAgMDEgNUIgODEgNEMgMDggNTYgNDEgNTIgMzEgMDMgIFIxLmEuLi5bLkwuVkFSMS4K
ICAgIDc1MzA6IDQ5IDQzIDMwIDMwIDIwIDQ5IDQzIDMwIDM0IDIwIDAwIDQwIDA0IDQ5IDQzIDMx
ICBJQzAwIElDMDQgLkAuSUMxCiAgICA3NTQwOiAzMCAyMCA0OSA0MyAzMSAzNCAyMCA0OSA0MyAz
MSAzOCAyMCA0OSA0MyAzMSA0MyAgMCBJQzE0IElDMTggSUMxQwogICAgNzU1MDogMjAgNDkgNDMg
MzIgMzAgMjAgMDAgNDAgMDYgNDkgNDMgMzMgMzAgMjAgNDkgNDMgICBJQzIwIC5ALklDMzAgSUMK
ICAgIDc1NjA6IDMzIDM0IDIwIDQ5IDQzIDMzIDM4IDIwIDQ5IDQzIDMzIDQzIDIwIDQ5IDQzIDM0
ICAzNCBJQzM4IElDM0MgSUM0CiAgICA3NTcwOiAzMCAyMCA0OSA0MyAzNCAzNCAyMCA0OSA0MyAz
NCAzOCAyMCAwMCA0MCAwNCA0OSAgMCBJQzQ0IElDNDggLkAuSQogICAgNzU4MDogNDMgMzUgMzQg
MjAgMDAgNDAgMEEgNDkgNDMgMzYgNDMgMjAgNDkgNDMgMzcgMzAgIEM1NCAuQC5JQzZDIElDNzAK
ICAgIDc1OTA6IDIwIDQ5IDQzIDM3IDM0IDIwIDQ5IDQzIDM3IDM4IDIwIDQ5IDQzIDM3IDQzIDIw
ICAgSUM3NCBJQzc4IElDN0MgCiAgICA3NUEwOiA0OSA0MyAzOCAzMCAyMCAwMCA0MCAwQyA0OSA0
MyAzOSA0MyAyMCAwMCA0MCAyQSAgSUM4MCAuQC5JQzlDIC5AKgogICAgNzVCMDogNDkgNDMgNDYg
MzQgMjAgMDggNDIgNTUgNDYgNDYgMTEgMDYgMEEgMDMgMDAgMDAgIElDRjQgLkJVRkYuLi4uLi4K
ICAgIDc1QzA6IDAwIDhDIDQyIDU1IDQ2IDQ2IDAwIDQxIDRGIDQxIDQzIDhDIDQyIDU1IDQ2IDQ2
ICAuLkJVRkYuQU9BQy5CVUZGCiAgICA3NUQwOiAwMSA0OSA1MyA0MyA0QyA4QyA0MiA1NSA0NiA0
NiAwQSAwMiA0OSA1MyA0NCA0MSAgLklTQ0wuQlVGRi4uSVNEQQogICAgNzVFMDogNUIgMjMgNEQg
MzQgNDUgMzUgRkYgRkYgNzAgMEMgQTAgODYgMDEgMDAgNjEgNzAgIFsjTTRFNS4ucC4uLi4uYXAK
ICAgIDc1RjA6IDAwIDYwIDcwIDQxIDQ0IDU0IDQ0IDQxIDRGIDQxIDQzIDcwIDREIDMwIDMxIDMx
ICAuYHBBRFREQU9BQ3BNMDExCiAgICA3NjAwOiAwQyAwMCAwRCBEOCBGRSA0RCAzNCA0NSAzNyAw
MCAwQSAwOCA0OSA1MyA0MyA0QyAgLi4uLi5NNEU3Li4uSVNDTAogICAgNzYxMDogNzAgNEQgMzAg
MzEgMzEgMEMgMDAgMEQgRDggRkUgNEQgMzQgNDUgMzggMDAgMEEgIHBNMDExLi4uLi5NNEU4Li4K
ICAgIDc2MjA6IDA4IDQ5IDUzIDQ0IDQxIDREIDMwIDMxIDMyIDBDIDAwIDBEIEQ4IEZFIDREIDM0
ICAuSVNEQU0wMTIuLi4uLk00CiAgICA3NjMwOiA0NSAzNyAwMCAwQSAwOCA0RCAzNCA0NSAzOSA0
RCAzMCAzMSAzMiAwQyAwMCAwRCAgRTcuLi5NNEU5TTAxMi4uLgogICAgNzY0MDogRDggRkUgNEQg
MzQgNDUgMzggMDAgMEEgMDggNEQgMzQgNDUgMzkgNzAgNDEgNEYgIC4uTTRFOC4uLk00RTlwQU8K
ICAgIDc2NTA6IDQxIDQzIDYyIEEwIDM1IDkzIDYyIDBBIDAzIDcwIDAwIDQxIDQ0IDU0IDQ0IDcw
ICBBQ2IuNS5iLi5wLkFEVERwCiAgICA3NjYwOiAwMSA0MSA0NCA1MCA0NCA3MCA0MSA0NCA0NCA1
MyA2MyBBMiAxRCA5MiA5MyA2MyAgLkFEUERwQUREU2MuLi4uYwogICAgNzY3MDogMEEgMDcgNzYg
NjEgNUIgMjEgMEEgMEEgNzAgNDEgNDQgNDQgNTMgNjMgQTAgMEEgIC4udmFbIS4ucEFERFNjLi4K
ICAgIDc2ODA6IDkzIDYxIDAwIDcwIDBCIDAxIEZGIDYwIEE1IEEwIDQ3IDA1IDkzIDYwIDAwIDcw
ICAuYS5wLi4uYC4uRy4uYC5wCiAgICA3NjkwOiA0OSA0MyAzNyAzMCA2MiBBMiA0QiAwNCA5MyAw
QSAyMCA3QiA2MiAwQSAyMCAwMCAgSUM3MGIuSy4uLiB7Yi4gLgogICAgNzZBMDogQTAgMzQgOTMg
NjEgMDAgNEQgMzQgMzYgMzAgMEQgMjAgMjAgNDkgMzIgNjMgNTQgIC40LmEuTTQ2MC4gIEkyY1QK
ICAgIDc2QjA6IDY5IDZEIDY1IDZGIDc1IDc0IDIwIDY2IDZGIDcyIDIwIDQ5IDQ0IDQ1IDIwIDNB
ICBpbWVvdXQgZm9yIElERSA6CiAgICA3NkMwOiAyMCAyOCAzMCA3OCAyNSA1OCAyOSAwQSAwMCA2
MiAwMCAwMCAwMCAwMCAwMCA3MCAgICgweCVYKS4uYi4uLi4ucAogICAgNzZEMDogMEIgMDIgRkYg
NjAgQTUgNzAgNDkgNDMgMzcgMzAgNjIgNzYgNjEgNUIgMjEgMEEgIC4uLmAucElDNzBidmFbIS4K
ICAgIDc2RTA6IDBBIEEwIDQ0IDA2IDkzIDYwIDAwIDcwIDAwIDQ5IDQzIDM2IDQzIDcwIDQ5IDQz
ICAuLkQuLmAucC5JQzZDcElDCiAgICA3NkYwOiAzOSA0MyA2MiBBMiA0MiAwNSA5MiA5MyAwMCA3
QiA2MiAwMSAwMCBBMCAzQyA5MyAgOUNiLkIuLi4ue2IuLi48LgogICAgNzcwMDogNjEgMDAgNEQg
MzQgMzYgMzAgMEQgMjAgMjAgNDkgMzIgNjMgNTQgNjkgNkQgNjUgIGEuTTQ2MC4gIEkyY1RpbWUK
ICAgIDc3MTA6IDZGIDc1IDc0IDIwIDY2IDZGIDcyIDIwIDY2IDQ5IDMyIDYzIDQ0IDY5IDczIDYx
ICBvdXQgZm9yIGZJMmNEaXNhCiAgICA3NzIwOiA2MiA2QyA2NSAyMCAzQSAyMCAyOCAzMCA3OCAy
NSA1OCAyOSAwQSAwMCA2MiAwMCAgYmxlIDogKDB4JVgpLi5iLgogICAgNzczMDogMDAgMDAgMDAg
MDAgNzAgMEIgMDMgRkYgNjAgQTUgNzAgNDkgNDMgMzkgNDMgNjIgIC4uLi5wLi4uYC5wSUM5Q2IK
ICAgIDc3NDA6IDc2IDYxIDVCIDIxIDBBIDBBIEEwIDRBIDA0IDkzIDYwIDAwIDcwIDBBIDYzIDQ5
ICB2YVshLi4uSi4uYC5wLmNJCiAgICA3NzUwOiA0MyAzMCAzMCA3MCA2OSA0OSA0MyAzMCAzNCA3
MCAwQiA4NSAwMiA0OSA0MyAzMSAgQzAwcGlJQzA0cC4uLklDMQogICAgNzc2MDogMzQgNzAgMEIg
NTcgMDMgNDkgNDMgMzEgMzggNzAgMEMgNDAgMDAgNDAgMDAgNDkgIDRwLlcuSUMxOHAuQC5ALkkK
ICAgIDc3NzA6IDQzIDM3IDQzIDcwIDAwIDQ5IDQzIDMzIDM4IDcwIDAwIDQ5IDQzIDMzIDM0IDcw
ICBDN0NwLklDMzhwLklDMzRwCiAgICA3NzgwOiAwMCA0OSA0MyAzMyAzMCA3MCA0OSA0MyAzNCAz
MCA2MiA3MCA0OSA0MyAzNSAzNCAgLklDMzBwSUM0MGJwSUM1NAogICAgNzc5MDogNjIgQTAgNDEg
MDYgOTMgNjAgMDAgNzAgMDEgNDkgNDMgMzYgNDMgNzAgNDkgNDMgIGIuQS4uYC5wLklDNkNwSUMK
ICAgIDc3QTA6IDM5IDQzIDYyIEEyIDRGIDA0IDkzIDAwIDdCIDYyIDAxIDAwIEEwIDNBIDkzIDYx
ICA5Q2IuTy4uLntiLi4uOi5hCiAgICA3N0IwOiAwMCA0RCAzNCAzNiAzMCAwRCAyMCAyMCA0OSAz
MiA2MyA1NCA2OSA2RCA2NSA2RiAgLk00NjAuICBJMmNUaW1lbwogICAgNzdDMDogNzUgNzQgMjAg
NjYgNkYgNzIgMjAgNDkgMzIgNjMgNDUgNkUgNjEgNjIgNkMgNjUgIHV0IGZvciBJMmNFbmFibGUK
ICAgIDc3RDA6IDIwIDNBIDIwIDI4IDMwIDc4IDI1IDU4IDI5IDBBIDAwIDYyIDAwIDAwIDAwIDAw
ICAgOiAoMHglWCkuLmIuLi4uCiAgICA3N0UwOiAwMCA3MCAwQiAwNCBGRiA2MCBBNSA3MCA0OSA0
MyAzOSA0MyA2MiA3NiA2MSA1QiAgLnAuLi5gLnBJQzlDYnZhWwogICAgNzdGMDogMjEgMEEgMEEg
QTAgNDAgMUUgOTMgNjAgMDAgNzAgNkIgNjMgNzAgNkEgNjQgNzAgICEuLi5ALi5gLnBrY3BqZHAK
ICAgIDc4MDA6IDAwIDY1IDcwIDAwIDY2IDcwIDBBIDAyIDY3IEEyIDRBIDFDIDk0IDcyIDYzIDY0
ICAuZXAuZnAuLmcuSi4ucmNkCiAgICA3ODEwOiAwMCAwMCBBMCAzQSA5MyA2MSAwMCA0RCAzNCAz
NiAzMCAwRCAyMCAyMCA0OSAzMiAgLi4uOi5hLk00NjAuICBJMgogICAgNzgyMDogNjMgNTQgNjkg
NkQgNjUgNkYgNzUgNzQgMjAgNjYgNkYgNzIgMjAgNTQgNzggNTIgIGNUaW1lb3V0IGZvciBUeFIK
ICAgIDc4MzA6IDc4IDNBIDIwIDI4IDMwIDc4IDI1IDU4IDJDIDIwIDMwIDc4IDI1IDU4IDI5IDBB
ICB4OiAoMHglWCwgMHglWCkuCiAgICA3ODQwOiAwMCA2MyA2NCAwMCAwMCAwMCAwMCA3MCAwQiAw
NiBGRiA2MCBBNSA3MCA0OSA0MyAgLmNkLi4uLnAuLi5gLnBJQwogICAgNzg1MDogMzcgMzAgNjIg
QTAgMTYgOTIgOTMgN0IgNjIgMEEgMDggMDAgMDAgNzAgNDkgNDMgIDcwYi4uLi57Yi4uLi5wSUMK
ICAgIDc4NjA6IDMxIDMwIDYyIDc2IDYxIDVCIDIxIDBBIDBBIDlGIDcwIDQ5IDQzIDM3IDM0IDYy
ICAxMGJ2YVshLi4ucElDNzRiCiAgICA3ODcwOiBBMCAwQyA5MiA5MyA2MiAwMCA3NiA2MSA1QiAy
MSAwQSAwQSA5RiBBMCAxOCA5NCAgLi4uLmIudmFbIS4uLi4uLgogICAgNzg4MDogNjMgMDEgNzAg
N0IgOTkgODMgODggNkMgNjUgMDAgMDAgMEEgRkYgMDAgNDkgNDMgIGMucHsuLi5sZS4uLi4uSUMK
ICAgIDc4OTA6IDMxIDMwIDc2IDYzIDc1IDY1IEExIDQ1IDA3IEEwIDFEIDkwIDkzIDYzIDAxIDky
ICAxMHZjdWUuRS4uLi4uYy4uCiAgICA3OEEwOiA5MyA2NCAwMCA3MCA3QiA5OSA4MyA4OCA2QyA2
NSAwMCAwMCAwQSBGRiAwMCA0OSAgLmQucHsuLi5sZS4uLi4uSQogICAgNzhCMDogNDMgMzEgMzAg
NzYgNjMgNzUgNjUgQTEgNDQgMDUgQTAgMjEgOTAgOTMgNjMgMDEgIEMxMHZjdWUuRC4uIS4uYy4K
ICAgIDc4QzA6IDkzIDY0IDAwIDcwIDdEIDdCIDk5IDgzIDg4IDZDIDY1IDAwIDAwIDBBIEZGIDAw
ICAuZC5wfXsuLi5sZS4uLi4uCiAgICA3OEQwOiAwQiAwMCAwMiAwMCA0OSA0MyAzMSAzMCA3NiA2
MyA3NSA2NSBBMSAyRiBBMCAxNSAgLi4uLklDMTB2Y3VlLi8uLgogICAgNzhFMDogOTAgOTMgNjMg
MDAgOTQgNjQgMDEgNzAgMEIgMDAgMDEgNDkgNDMgMzEgMzAgNzAgIC4uYy4uZC5wLi4uSUMxMHAK
ICAgIDc4RjA6IDAxIDY2IDc2IDY0IEExIDE3IEEwIDE1IDkwIDkzIDYzIDAwIDkzIDY0IDAxIDcw
ICAuZnZkLi4uLi4uYy4uZC5wCiAgICA3OTAwOiAwQiAwMCAwMyA0OSA0MyAzMSAzMCA3MCAwMSA2
NiA3NiA2NCA3NiA2MSA1QiAyMSAgLi4uSUMxMHAuZnZkdmFbIQogICAgNzkxMDogMEEgMEEgNzAg
NDkgNDMgMzMgMzQgNjIgQTAgNDQgMDQgOTIgOTMgMDAgN0IgNjIgIC4ucElDMzRiLkQuLi4ue2IK
ICAgIDc5MjA6IDBBIDQwIDAwIDcwIDQ5IDQzIDM1IDM0IDY3IDcwIDQ5IDQzIDM4IDMwIDYyIDRE
ICAuQC5wSUM1NGdwSUM4MGJNCiAgICA3OTMwOiAzNCAzNiAzMCAwRCAyMCAyMCA0OSAzMiA2MyA1
NCA1OCAyMCA0MSA2MiA3MiA3NCAgNDYwLiAgSTJjVFggQWJydAogICAgNzk0MDogMjAgNTMgNkYg
NzUgNzIgNjMgNjUgM0EgMjAgMjggMzAgNzggMjUgNTggMjkgMEEgICBTb3VyY2U6ICgweCVYKS4K
ICAgIDc5NTA6IDAwIDYyIDAwIDAwIDAwIDAwIDAwIDcwIDBCIDA1IEZGIDYwIEE1IEEwIDQ4IDA1
ICAuYi4uLi4ucC4uLmAuLkguCiAgICA3OTYwOiA5MiA5MyA2NiAwMCA3MCA0OSA0MyAzNyAzMCA2
MiBBMiA0QiAwNCA5MiA5MyA3QiAgLi5mLnBJQzcwYi5LLi4uewogICAgNzk3MDogNjIgMEEgMDgg
MDAgMEEgMDggNzAgNDkgNDMgMzcgMzAgNjIgQTAgMzMgOTMgNjEgIGIuLi4uLnBJQzcwYi4zLmEK
ICAgIDc5ODA6IDAwIDREIDM0IDM2IDMwIDBEIDIwIDIwIDQ5IDMyIDYzIDU0IDY5IDZEIDY1IDZG
ICAuTTQ2MC4gIEkyY1RpbWVvCiAgICA3OTkwOiA3NSA3NCAyMCA2NiA2RiA3MiAyMCA1MiA3OCAy
MCAzQSAyMCAyOCAzMCA3OCAyNSAgdXQgZm9yIFJ4IDogKDB4JQogICAgNzlBMDogNTggMjkgMEEg
MDAgNjIgMDAgMDAgMDAgMDAgMDAgNzAgMEIgMDcgRkYgNjAgQTUgIFgpLi5iLi4uLi5wLi4uYC4K
ICAgIDc5QjA6IDc2IDYxIDVCIDIxIDBBIDBBIEEwIDFEIDkyIDkzIDY2IDAwIDcwIDQ5IDQzIDMx
ICB2YVshLi4uLi4uZi5wSUMxCiAgICA3OUMwOiAzMCA2MiA3MCA2MiA4OCA1MiA1NCA0NiA0NiA2
NyAwMCA3NiA2MSA1QiAyMSAwQSAgMGJwYi5SVEZGZy52YVshLgogICAgNzlEMDogMTQgNzAgMDAg
NjYgNUIgMjcgNEQgMzQgNDUgMzUgQTAgNDggMDUgOTMgNjAgMDAgIC5wLmZbJ000RTUuSC4uYC4K
ICAgIDc5RTA6IDcwIDQ5IDQzIDM3IDMwIDYyIEEyIDRDIDA0IDkzIDBBIDIwIDdCIDYyIDBBIDIw
ICBwSUM3MGIuTC4uLiB7Yi4gCiAgICA3OUYwOiAwMCBBMCAzNSA5MyA2MSAwMCA0RCAzNCAzNiAz
MCAwRCAyMCAyMCA0OSAzMiA2MyAgLi41LmEuTTQ2MC4gIEkyYwogICAgN0EwMDogNTQgNjkgNkQg
NjUgNkYgNzUgNzQgMjAgNjYgNkYgNzIgMjAgNDkgNDQgNDUgMzIgIFRpbWVvdXQgZm9yIElERTIK
ICAgIDdBMTA6IDIwIDNBIDIwIDI4IDMwIDc4IDI1IDU4IDI5IDBBIDAwIDYyIDAwIDAwIDAwIDAw
ICAgOiAoMHglWCkuLmIuLi4uCiAgICA3QTIwOiAwMCA3MCAwQiAwOCBGRiA2MCBBNSA3MCA0OSA0
MyAzNyAzMCA2MiA3NiA2MSA1QiAgLnAuLi5gLnBJQzcwYnZhWwogICAgN0EzMDogMjEgMEEgMEEg
QTAgNEMgMDYgOTAgOTQgNjAgMEIgMDQgRkYgOTUgNjAgMEIgMDggICEuLi5MLi4uYC4uLi5gLi4K
ICAgIDdBNDA6IEZGIDcwIDAwIDQ5IDQzIDM2IDQzIDcwIDQ5IDQzIDM5IDQzIDYyIEEyIDQyIDA1
ICAucC5JQzZDcElDOUNiLkIuCiAgICA3QTUwOiA5MiA5MyAwMCA3QiA2MiAwMSAwMCBBMCAzQyA5
MyA2MSAwMCA0RCAzNCAzNiAzMCAgLi4ue2IuLi48LmEuTTQ2MAogICAgN0E2MDogMEQgMjAgMjAg
NDkgMzIgNjMgNTQgNjkgNkQgNjUgNkYgNzUgNzQgMjAgNjYgNkYgIC4gIEkyY1RpbWVvdXQgZm8K
ICAgIDdBNzA6IDcyIDIwIDY2IDQ5IDMyIDYzIDQ0IDY5IDczIDYxIDYyIDZDIDY1IDIwIDNBIDIw
ICByIGZJMmNEaXNhYmxlIDogCiAgICA3QTgwOiAyOCAzMCA3OCAyNSA1OCAyOSAwQSAwMCA2MiAw
MCAwMCAwMCAwMCAwMCA3MCAwQiAgKDB4JVgpLi5iLi4uLi5wLgogICAgN0E5MDogMDkgRkYgNjAg
QTUgNzAgNDkgNDMgMzkgNDMgNjIgNzYgNjEgNUIgMjEgMEEgMEEgIC4uYC5wSUM5Q2J2YVshLi4K
ICAgIDdBQTA6IDcwIDQxIDRGIDQxIDQzIDYzIEEwIDQ2IDA2IDkzIDYzIDBBIDAzIDcwIDAwIDQx
ICBwQU9BQ2MuRi4uYy4ucC5BCiAgICA3QUIwOiA0NCA1MCA0NCA3MCA0MSA0NCA0NCA1MyA2MiBB
MiA0QyAwNCA5MiA5MyA2MiAwMCAgRFBEcEFERFNiLkwuLi5iLgogICAgN0FDMDogQTAgMzkgOTMg
NjEgMDAgNEQgMzQgMzYgMzAgMEQgMjAgMjAgNDkgMzIgNjMgNTQgIC45LmEuTTQ2MC4gIEkyY1QK
ICAgIDdBRDA6IDY5IDZEIDY1IDZGIDc1IDc0IDIwIDY2IDZGIDcyIDIwIDQxIDRGIDQxIDQzIDIw
ICBpbWVvdXQgZm9yIEFPQUMgCiAgICA3QUUwOiA0RiA2NiA2NiAyMCAzQSAyMCAyOCAzMCA3OCAy
NSA1OCAyOSAwQSAwMCA2MiAwMCAgT2ZmIDogKDB4JVgpLi5iLgogICAgN0FGMDogMDAgMDAgMDAg
MDAgNzAgMEIgMTAgRkYgNjAgQTUgNzYgNjEgNUIgMjEgMEEgMEEgIC4uLi5wLi4uYC52YVshLi4K
ICAgIDdCMDA6IDcwIDQxIDQ0IDQ0IDUzIDYyIDcwIDBBIDAzIDQxIDQ0IDU0IDQ0IDREIDMwIDMx
ICBwQUREU2JwLi5BRFRETTAxCiAgICA3QjEwOiAzMiAwQyAwMCAwRCBEOCBGRSA0RCAzNCA0NSAz
NyAwMCAwQSAwOCA0OSA1MyA0MyAgMi4uLi4uTTRFNy4uLklTQwogICAgN0IyMDogNEMgNEQgMzAg
MzEgMzIgMEMgMDAgMEQgRDggRkUgNEQgMzQgNDUgMzggMDAgMEEgIExNMDEyLi4uLi5NNEU4Li4K
ICAgIDdCMzA6IDA4IDQ5IDUzIDQ0IDQxIDhCIDUyIDU0IDQ2IDQ2IDAwIDUzIDU0IDQxIDU0IDcw
ICAuSVNEQS5SVEZGLlNUQVRwCiAgICA3QjQwOiA2MCA1MyA1NCA0MSA1NCBBNCA1MiA1NCA0NiA0
NiAxNCA0NiAwOSA0RCAzNCA0NSAgYFNUQVQuUlRGRi5GLk00RQogICAgN0I1MDogMzEgMEIgMDgg
NTIgNTQgNDYgNDYgMTEgMDUgMEIgMDAgMDEgMDAgMDggNTcgNTIgIDEuLlJURkYuLi4uLi4uV1IK
ICAgIDdCNjA6IDQ2IDQ2IDExIDAzIDAxIDAwIDhDIDU3IDUyIDQ2IDQ2IDAwIDU3IDQ0IDQxIDU0
ICBGRi4uLi4uV1JGRi5XREFUCiAgICA3QjcwOiA3MCA2QSA1NyA0NCA0MSA1NCA3MCA0RCAzNCA0
NSAzMCA2OCA2OSAwMSAwMSA1NyAgcGpXREFUcE00RTBoaS4uVwogICAgN0I4MDogNTIgNDYgNDYg
NTIgNTQgNDYgNDYgOEIgNTIgNTQgNDYgNDYgMDAgNTMgNTQgNDEgIFJGRlJURkYuUlRGRi5TVEEK
ICAgIDdCOTA6IDU0IDhDIDUyIDU0IDQ2IDQ2IDBBIDAyIDUyIDQ0IDQxIDU0IDcwIDUzIDU0IDQx
ICBULlJURkYuLlJEQVRwU1RBCiAgICA3QkEwOiA1NCA2MCA3MCA1MiA0NCA0MSA1NCA2MSA0RCAz
NCAzNiAzMCAwRCAyMCAyMCA1MiAgVGBwUkRBVGFNNDYwLiAgUgogICAgN0JCMDogNjUgNjEgNjQg
MjAgNDkgMzIgNDMgMjAgNDIgNzkgNzQgNjUgMjAgMjggMzAgNzggIGVhZCBJMkMgQnl0ZSAoMHgK
ICAgIDdCQzA6IDI1IDU4IDJDIDIwIDMwIDc4IDI1IDU4IDI5IDBBIDAwIDYwIDYxIDAwIDAwIDAw
ICAlWCwgMHglWCkuLmBhLi4uCiAgICA3QkQwOiAwMCBBMCAwRCA5MyA2MCAwMCBBNCA3QiA1MiA0
NCA0MSA1NCAwQSBGRiAwMCBBNCAgLi4uLmAuLntSREFULi4uLgogICAgN0JFMDogMDAgMTQgNDUg
MDcgNEQgMzQgNDUgMzIgMEMgMDggNTcgNTIgNDYgNDYgMTEgMDUgIC4uRS5NNEUyLi5XUkZGLi4K
ICAgIDdCRjA6IDBBIDAyIDAwIDAwIDhDIDU3IDUyIDQ2IDQ2IDAwIDU3IDQ0IDQxIDMxIDhDIDU3
ICAuLi4uLldSRkYuV0RBMS5XCiAgICA3QzAwOiA1MiA0NiA0NiAwMSA1NyA0NCA0MSAzMiA3MCA2
QSA1NyA0NCA0MSAzMSA3MCA3QiAgUkZGLldEQTJwaldEQTFwewogICAgN0MxMDogNkIgMEEgRkYg
MDAgNTcgNDQgNDEgMzIgNzAgNEQgMzQgNDUgMzAgNjggNjkgMDAgIGsuLi5XREEycE00RTBoaS4K
ICAgIDdDMjA6IDBBIDAyIDU3IDUyIDQ2IDQ2IDYwIDhCIDYwIDAwIDUzIDU0IDQxIDU0IDcwIDUz
ICAuLldSRkZgLmAuU1RBVHBTCiAgICA3QzMwOiA1NCA0MSA1NCA2MSA0RCAzNCAzNiAzMCAwRCAy
MCAyMCA1NyA3MiA2OSA3NCA2NSAgVEFUYU00NjAuICBXcml0ZQogICAgN0M0MDogMjAgNDkgMzIg
NDMgMjAgNDIgNzkgNzQgNjUgMjggMzAgNzggMjUgNTggMjkgMEEgICBJMkMgQnl0ZSgweCVYKS4K
ICAgIDdDNTA6IDAwIDYxIDAwIDAwIDAwIDAwIDAwIDEwIDQ3IDA4IDVDIDJFIDVGIDUzIDQyIDVG
ICAuYS4uLi4uLkcuXC5fU0JfCiAgICA3QzYwOiA0NyA1MCA0OSA0RiAxNCA0QSAwNyA1OCA0OSA0
RSA0OSAwMCA0RCAzNCAzNiAzMCAgR1BJTy5KLlhJTkkuTTQ2MAogICAgN0M3MDogMEQgMjAgMjAg
NEIgNDUgNTIgMkQgNDEgNTMgNEMgMkQgNUMgNUYgNTMgNDIgMkUgIC4gIEtFUi1BU0wtXF9TQi4K
ICAgIDdDODA6IDQ3IDUwIDQ5IDRGIDJFIDVGIDQ5IDRFIDQ5IDIwIDUzIDc0IDYxIDcyIDc0IDBB
ICBHUElPLl9JTkkgU3RhcnQuCiAgICA3QzkwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCBBMCAxRSA5
MiA5MyA0RCAzNCA0NiAzMCAwMCAgLi4uLi4uLi4uLi5NNEYwLgogICAgN0NBMDogNEQgMzQgNDYg
MzEgMDAgNEQgMzQgNDYgMzEgMDEgNEQgMzQgNDYgMzEgMEEgMDIgIE00RjEuTTRGMS5NNEYxLi4K
ICAgIDdDQjA6IDREIDM0IDQ2IDMxIDBBIDAzIDREIDM0IDM2IDMwIDBEIDIwIDIwIDRCIDQ1IDUy
ICBNNEYxLi5NNDYwLiAgS0VSCiAgICA3Q0MwOiAyRCA0MSA1MyA0QyAyRCA1QyA1RiA1MyA0MiAy
RSA0NyA1MCA0OSA0RiAyRSA1RiAgLUFTTC1cX1NCLkdQSU8uXwogICAgN0NEMDogNDkgNEUgNDkg
MjAgNDUgNkUgNjQgMEEgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMTAgIElOSSBFbmQuLi4uLi4uLi4K
ICAgIDdDRTA6IDhEIDkwIDAxIDVDIDVGIDQ3IDUwIDQ1IDE0IDRFIDVDIDUzIDQ5IDQ1IDMwIDA4
ICAuLi5cX0dQRS5OXFNJRTAuCiAgICA3Q0YwOiA0RCAzNCAzNiAzMCAwRCAyMCAyMCA0QiA0NSA1
MiAyRCA0MSA1MyA0QyAyRCA1QyAgTTQ2MC4gIEtFUi1BU0wtXAogICAgN0QwMDogNUYgNDcgNTAg
NDUgMkUgNTMgNDkgNDUgMzAgMjAgNTMgNzQgNjEgNzIgNzQgMEEgIF9HUEUuU0lFMCBTdGFydC4K
ICAgIDdEMTA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIEEwIDQyIDA0IDVCIDEyIDVDIDJFIDVGIDQ3
ICAuLi4uLi4uLkIuWy5cLl9HCiAgICA3RDIwOiA1MCA0NSA0MiA0OSA0NSAzMCAwMCA0RCAzNCAz
NiAzMCAwRCAyMCAyMCA0QiA0NSAgUEVCSUUwLk00NjAuICBLRQogICAgN0QzMDogNTIgMkQgNDEg
NTMgNEMgMkQgNDMgNjEgNkMgNkMgNkYgNzUgNzQgMjAgNUMgNUYgIFItQVNMLUNhbGxvdXQgXF8K
ICAgIDdENDA6IDQ3IDUwIDQ1IDJFIDQyIDQ5IDQ1IDMwIDBBIDAwIDAwIDAwIDAwIDAwIDAwIDAw
ICBHUEUuQklFMC4uLi4uLi4uCiAgICA3RDUwOiA1QyAyRSA1RiA0NyA1MCA0NSA0MiA0OSA0NSAz
MCA3MCA0RCAzNCA0NiAzMSAwMCAgXC5fR1BFQklFMHBNNEYxLgogICAgN0Q2MDogNjAgQTAgNEIg
MDQgOTMgN0IgNjAgMDEgMDAgMDEgQTAgNDIgMDQgNUIgMTIgNUMgIGAuSy4ue2AuLi4uQi5bLlwK
ICAgIDdENzA6IDJFIDVGIDQ3IDUwIDQ1IDUzIDUwIDMwIDMwIDAwIDREIDM0IDM2IDMwIDBEIDIw
ICAuX0dQRVNQMDAuTTQ2MC4gCiAgICA3RDgwOiAyMCA0QiA0NSA1MiAyRCA0MSA1MyA0QyAyRCA0
MyA2MSA2QyA2QyA2RiA3NSA3NCAgIEtFUi1BU0wtQ2FsbG91dAogICAgN0Q5MDogMjAgNUMgNUYg
NDcgNTAgNDUgMkUgNTMgNTAgMzAgMzAgMEEgMDAgMDAgMDAgMDAgICBcX0dQRS5TUDAwLi4uLi4K
ICAgIDdEQTA6IDAwIDAwIDAwIDVDIDJFIDVGIDQ3IDUwIDQ1IDUzIDUwIDMwIDMwIEEwIDREIDA0
ICAuLi5cLl9HUEVTUDAwLk0uCiAgICA3REIwOiA5MyA3QiA2MCAwQSAwMiAwMCAwQSAwMiBBMCA0
MiAwNCA1QiAxMiA1QyAyRSA1RiAgLntgLi4uLi4uQi5bLlwuXwogICAgN0RDMDogNDcgNTAgNDUg
NTMgNTAgMzAgMzEgMDAgNEQgMzQgMzYgMzAgMEQgMjAgMjAgNEIgIEdQRVNQMDEuTTQ2MC4gIEsK
ICAgIDdERDA6IDQ1IDUyIDJEIDQxIDUzIDRDIDJEIDQzIDYxIDZDIDZDIDZGIDc1IDc0IDIwIDVD
ICBFUi1BU0wtQ2FsbG91dCBcCiAgICA3REUwOiA1RiA0NyA1MCA0NSAyRSA1MyA1MCAzMCAzMSAw
QSAwMCAwMCAwMCAwMCAwMCAwMCAgX0dQRS5TUDAxLi4uLi4uLgogICAgN0RGMDogMDAgNUMgMkUg
NUYgNDcgNTAgNDUgNTMgNTAgMzAgMzEgQTAgNEQgMDQgOTMgN0IgIC5cLl9HUEVTUDAxLk0uLnsK
ICAgIDdFMDA6IDYwIDBBIDA0IDAwIDBBIDA0IEEwIDQyIDA0IDVCIDEyIDVDIDJFIDVGIDQ3IDUw
ICBgLi4uLi4uQi5bLlwuX0dQCiAgICA3RTEwOiA0NSA1MyA1MCAzMCAzMiAwMCA0RCAzNCAzNiAz
MCAwRCAyMCAyMCA0QiA0NSA1MiAgRVNQMDIuTTQ2MC4gIEtFUgogICAgN0UyMDogMkQgNDEgNTMg
NEMgMkQgNDMgNjEgNkMgNkMgNkYgNzUgNzQgMjAgNUMgNUYgNDcgIC1BU0wtQ2FsbG91dCBcX0cK
ICAgIDdFMzA6IDUwIDQ1IDJFIDUzIDUwIDMwIDMyIDBBIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDVD
ICBQRS5TUDAyLi4uLi4uLi5cCiAgICA3RTQwOiAyRSA1RiA0NyA1MCA0NSA1MyA1MCAzMCAzMiBB
MCA0RCAwNCA5MyA3QiA2MCAwQSAgLl9HUEVTUDAyLk0uLntgLgogICAgN0U1MDogMDggMDAgMEEg
MDggQTAgNDIgMDQgNUIgMTIgNUMgMkUgNUYgNDcgNTAgNDUgNTMgIC4uLi4uQi5bLlwuX0dQRVMK
ICAgIDdFNjA6IDUwIDMwIDMzIDAwIDREIDM0IDM2IDMwIDBEIDIwIDIwIDRCIDQ1IDUyIDJEIDQx
ICBQMDMuTTQ2MC4gIEtFUi1BCiAgICA3RTcwOiA1MyA0QyAyRCA0MyA2MSA2QyA2QyA2RiA3NSA3
NCAyMCA1QyA1RiA0NyA1MCA0NSAgU0wtQ2FsbG91dCBcX0dQRQogICAgN0U4MDogMkUgNTMgNTAg
MzAgMzMgMEEgMDAgMDAgMDAgMDAgMDAgMDAgMDAgNUMgMkUgNUYgIC5TUDAzLi4uLi4uLi5cLl8K
ICAgIDdFOTA6IDQ3IDUwIDQ1IDUzIDUwIDMwIDMzIEEwIDREIDA0IDkzIDdCIDYwIDBBIDEwIDAw
ICBHUEVTUDAzLk0uLntgLi4uCiAgICA3RUEwOiAwQSAxMCBBMCA0MiAwNCA1QiAxMiA1QyAyRSA1
RiA0NyA1MCA0NSA1MyA1MCAzMCAgLi4uQi5bLlwuX0dQRVNQMAogICAgN0VCMDogMzQgMDAgNEQg
MzQgMzYgMzAgMEQgMjAgMjAgNEIgNDUgNTIgMkQgNDEgNTMgNEMgIDQuTTQ2MC4gIEtFUi1BU0wK
ICAgIDdFQzA6IDJEIDQzIDYxIDZDIDZDIDZGIDc1IDc0IDIwIDVDIDVGIDQ3IDUwIDQ1IDJFIDUz
ICAtQ2FsbG91dCBcX0dQRS5TCiAgICA3RUQwOiA1MCAzMCAzNCAwQSAwMCAwMCAwMCAwMCAwMCAw
MCAwMCA1QyAyRSA1RiA0NyA1MCAgUDA0Li4uLi4uLi5cLl9HUAogICAgN0VFMDogNDUgNTMgNTAg
MzAgMzQgQTAgNEQgMDQgOTMgN0IgNjAgMEEgMjAgMDAgMEEgMjAgIEVTUDA0Lk0uLntgLiAuLiAK
ICAgIDdFRjA6IEEwIDQyIDA0IDVCIDEyIDVDIDJFIDVGIDQ3IDUwIDQ1IDUzIDUwIDMwIDM1IDAw
ICAuQi5bLlwuX0dQRVNQMDUuCiAgICA3RjAwOiA0RCAzNCAzNiAzMCAwRCAyMCAyMCA0QiA0NSA1
MiAyRCA0MSA1MyA0QyAyRCA0MyAgTTQ2MC4gIEtFUi1BU0wtQwogICAgN0YxMDogNjEgNkMgNkMg
NkYgNzUgNzQgMjAgNUMgNUYgNDcgNTAgNDUgMkUgNTMgNTAgMzAgIGFsbG91dCBcX0dQRS5TUDAK
ICAgIDdGMjA6IDM1IDBBIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDVDIDJFIDVGIDQ3IDUwIDQ1IDUz
ICA1Li4uLi4uLi5cLl9HUEVTCiAgICA3RjMwOiA1MCAzMCAzNSBBMCA0RCAwNCA5MyA3QiA2MCAw
QSA0MCAwMCAwQSA0MCBBMCA0MiAgUDA1Lk0uLntgLkAuLkAuQgogICAgN0Y0MDogMDQgNUIgMTIg
NUMgMkUgNUYgNDcgNTAgNDUgNTMgNTAgMzAgMzYgMDAgNEQgMzQgIC5bLlwuX0dQRVNQMDYuTTQK
ICAgIDdGNTA6IDM2IDMwIDBEIDIwIDIwIDRCIDQ1IDUyIDJEIDQxIDUzIDRDIDJEIDQzIDYxIDZD
ICA2MC4gIEtFUi1BU0wtQ2FsCiAgICA3RjYwOiA2QyA2RiA3NSA3NCAyMCA1QyA1RiA0NyA1MCA0
NSAyRSA1MyA1MCAzMCAzNiAwQSAgbG91dCBcX0dQRS5TUDA2LgogICAgN0Y3MDogMDAgMDAgMDAg
MDAgMDAgMDAgMDAgNUMgMkUgNUYgNDcgNTAgNDUgNTMgNTAgMzAgIC4uLi4uLi5cLl9HUEVTUDAK
ICAgIDdGODA6IDM2IEEwIDREIDA0IDkzIDdCIDYwIDBBIDgwIDAwIDBBIDgwIEEwIDQyIDA0IDVC
ICA2Lk0uLntgLi4uLi4uQi5bCiAgICA3RjkwOiAxMiA1QyAyRSA1RiA0NyA1MCA0NSA1MyA1MCAz
MCAzNyAwMCA0RCAzNCAzNiAzMCAgLlwuX0dQRVNQMDcuTTQ2MAogICAgN0ZBMDogMEQgMjAgMjAg
NEIgNDUgNTIgMkQgNDEgNTMgNEMgMkQgNDMgNjEgNkMgNkMgNkYgIC4gIEtFUi1BU0wtQ2FsbG8K
ICAgIDdGQjA6IDc1IDc0IDIwIDVDIDVGIDQ3IDUwIDQ1IDJFIDUzIDUwIDMwIDM3IDBBIDAwIDAw
ICB1dCBcX0dQRS5TUDA3Li4uCiAgICA3RkMwOiAwMCAwMCAwMCAwMCAwMCA1QyAyRSA1RiA0NyA1
MCA0NSA1MyA1MCAzMCAzNyBBMCAgLi4uLi5cLl9HUEVTUDA3LgogICAgN0ZEMDogNEYgMDQgOTMg
N0IgNjAgMEIgMDAgMDEgMDAgMEIgMDAgMDEgQTAgNDIgMDQgNUIgIE8uLntgLi4uLi4uLi5CLlsK
ICAgIDdGRTA6IDEyIDVDIDJFIDVGIDQ3IDUwIDQ1IDUzIDUwIDMxIDMwIDAwIDREIDM0IDM2IDMw
ICAuXC5fR1BFU1AxMC5NNDYwCiAgICA3RkYwOiAwRCAyMCAyMCA0QiA0NSA1MiAyRCA0MSA1MyA0
QyAyRCA0MyA2MSA2QyA2QyA2RiAgLiAgS0VSLUFTTC1DYWxsbwogICAgODAwMDogNzUgNzQgMjAg
NUMgNUYgNDcgNTAgNDUgMkUgNTMgNTAgMzEgMzAgMEEgMDAgMDAgIHV0IFxfR1BFLlNQMTAuLi4K
ICAgIDgwMTA6IDAwIDAwIDAwIDAwIDAwIDVDIDJFIDVGIDQ3IDUwIDQ1IDUzIDUwIDMxIDMwIEEw
ICAuLi4uLlwuX0dQRVNQMTAuCiAgICA4MDIwOiA0RiAwNCA5MyA3QiA2MCAwQiAwMCAwMiAwMCAw
QiAwMCAwMiBBMCA0MiAwNCA1QiAgTy4ue2AuLi4uLi4uLkIuWwogICAgODAzMDogMTIgNUMgMkUg
NUYgNDcgNTAgNDUgNTMgNTAgMzEgMzEgMDAgNEQgMzQgMzYgMzAgIC5cLl9HUEVTUDExLk00NjAK
ICAgIDgwNDA6IDBEIDIwIDIwIDRCIDQ1IDUyIDJEIDQxIDUzIDRDIDJEIDQzIDYxIDZDIDZDIDZG
ICAuICBLRVItQVNMLUNhbGxvCiAgICA4MDUwOiA3NSA3NCAyMCA1QyA1RiA0NyA1MCA0NSAyRSA1
MyA1MCAzMSAzMSAwQSAwMCAwMCAgdXQgXF9HUEUuU1AxMS4uLgogICAgODA2MDogMDAgMDAgMDAg
MDAgMDAgNUMgMkUgNUYgNDcgNTAgNDUgNTMgNTAgMzEgMzEgQTAgIC4uLi4uXC5fR1BFU1AxMS4K
ICAgIDgwNzA6IDRGIDA0IDkzIDdCIDYwIDBCIDAwIDA0IDAwIDBCIDAwIDA0IEEwIDQyIDA0IDVC
ICBPLi57YC4uLi4uLi4uQi5bCiAgICA4MDgwOiAxMiA1QyAyRSA1RiA0NyA1MCA0NSA1MyA1MCAz
MSAzMiAwMCA0RCAzNCAzNiAzMCAgLlwuX0dQRVNQMTIuTTQ2MAogICAgODA5MDogMEQgMjAgMjAg
NEIgNDUgNTIgMkQgNDEgNTMgNEMgMkQgNDMgNjEgNkMgNkMgNkYgIC4gIEtFUi1BU0wtQ2FsbG8K
ICAgIDgwQTA6IDc1IDc0IDIwIDVDIDVGIDQ3IDUwIDQ1IDJFIDUzIDUwIDMxIDMyIDBBIDAwIDAw
ICB1dCBcX0dQRS5TUDEyLi4uCiAgICA4MEIwOiAwMCAwMCAwMCAwMCAwMCA1QyAyRSA1RiA0NyA1
MCA0NSA1MyA1MCAzMSAzMiBBMCAgLi4uLi5cLl9HUEVTUDEyLgogICAgODBDMDogNEYgMDQgOTMg
N0IgNjAgMEIgMDAgMDggMDAgMEIgMDAgMDggQTAgNDIgMDQgNUIgIE8uLntgLi4uLi4uLi5CLlsK
ICAgIDgwRDA6IDEyIDVDIDJFIDVGIDQ3IDUwIDQ1IDUzIDUwIDMxIDMzIDAwIDREIDM0IDM2IDMw
ICAuXC5fR1BFU1AxMy5NNDYwCiAgICA4MEUwOiAwRCAyMCAyMCA0QiA0NSA1MiAyRCA0MSA1MyA0
QyAyRCA0MyA2MSA2QyA2QyA2RiAgLiAgS0VSLUFTTC1DYWxsbwogICAgODBGMDogNzUgNzQgMjAg
NUMgNUYgNDcgNTAgNDUgMkUgNTMgNTAgMzEgMzMgMEEgMDAgMDAgIHV0IFxfR1BFLlNQMTMuLi4K
ICAgIDgxMDA6IDAwIDAwIDAwIDAwIDAwIDVDIDJFIDVGIDQ3IDUwIDQ1IDUzIDUwIDMxIDMzIEEw
ICAuLi4uLlwuX0dQRVNQMTMuCiAgICA4MTEwOiA0RiAwNCA5MyA3QiA2MCAwQiAwMCAxMCAwMCAw
QiAwMCAxMCBBMCA0MiAwNCA1QiAgTy4ue2AuLi4uLi4uLkIuWwogICAgODEyMDogMTIgNUMgMkUg
NUYgNDcgNTAgNDUgNTMgNTAgMzEgMzQgMDAgNEQgMzQgMzYgMzAgIC5cLl9HUEVTUDE0Lk00NjAK
ICAgIDgxMzA6IDBEIDIwIDIwIDRCIDQ1IDUyIDJEIDQxIDUzIDRDIDJEIDQzIDYxIDZDIDZDIDZG
ICAuICBLRVItQVNMLUNhbGxvCiAgICA4MTQwOiA3NSA3NCAyMCA1QyA1RiA0NyA1MCA0NSAyRSA1
MyA1MCAzMSAzNCAwQSAwMCAwMCAgdXQgXF9HUEUuU1AxNC4uLgogICAgODE1MDogMDAgMDAgMDAg
MDAgMDAgNUMgMkUgNUYgNDcgNTAgNDUgNTMgNTAgMzEgMzQgQTAgIC4uLi4uXC5fR1BFU1AxNC4K
ICAgIDgxNjA6IDRGIDA0IDkzIDdCIDYwIDBCIDAwIDIwIDAwIDBCIDAwIDIwIEEwIDQyIDA0IDVC
ICBPLi57YC4uIC4uLiAuQi5bCiAgICA4MTcwOiAxMiA1QyAyRSA1RiA0NyA1MCA0NSA1MyA1MCAz
MSAzNSAwMCA0RCAzNCAzNiAzMCAgLlwuX0dQRVNQMTUuTTQ2MAogICAgODE4MDogMEQgMjAgMjAg
NEIgNDUgNTIgMkQgNDEgNTMgNEMgMkQgNDMgNjEgNkMgNkMgNkYgIC4gIEtFUi1BU0wtQ2FsbG8K
ICAgIDgxOTA6IDc1IDc0IDIwIDVDIDVGIDQ3IDUwIDQ1IDJFIDUzIDUwIDMxIDM1IDBBIDAwIDAw
ICB1dCBcX0dQRS5TUDE1Li4uCiAgICA4MUEwOiAwMCAwMCAwMCAwMCAwMCA1QyAyRSA1RiA0NyA1
MCA0NSA1MyA1MCAzMSAzNSBBMCAgLi4uLi5cLl9HUEVTUDE1LgogICAgODFCMDogNEYgMDQgOTMg
N0IgNjAgMEIgMDAgNDAgMDAgMEIgMDAgNDAgQTAgNDIgMDQgNUIgIE8uLntgLi5ALi4uQC5CLlsK
ICAgIDgxQzA6IDEyIDVDIDJFIDVGIDQ3IDUwIDQ1IDUzIDUwIDMxIDM2IDAwIDREIDM0IDM2IDMw
ICAuXC5fR1BFU1AxNi5NNDYwCiAgICA4MUQwOiAwRCAyMCAyMCA0QiA0NSA1MiAyRCA0MSA1MyA0
QyAyRCA0MyA2MSA2QyA2QyA2RiAgLiAgS0VSLUFTTC1DYWxsbwogICAgODFFMDogNzUgNzQgMjAg
NUMgNUYgNDcgNTAgNDUgMkUgNTMgNTAgMzEgMzYgMEEgMDAgMDAgIHV0IFxfR1BFLlNQMTYuLi4K
ICAgIDgxRjA6IDAwIDAwIDAwIDAwIDAwIDVDIDJFIDVGIDQ3IDUwIDQ1IDUzIDUwIDMxIDM2IEEw
ICAuLi4uLlwuX0dQRVNQMTYuCiAgICA4MjAwOiA0RiAwNCA5MyA3QiA2MCAwQiAwMCA4MCAwMCAw
QiAwMCA4MCBBMCA0MiAwNCA1QiAgTy4ue2AuLi4uLi4uLkIuWwogICAgODIxMDogMTIgNUMgMkUg
NUYgNDcgNTAgNDUgNTMgNTAgMzEgMzcgMDAgNEQgMzQgMzYgMzAgIC5cLl9HUEVTUDE3Lk00NjAK
ICAgIDgyMjA6IDBEIDIwIDIwIDRCIDQ1IDUyIDJEIDQxIDUzIDRDIDJEIDQzIDYxIDZDIDZDIDZG
ICAuICBLRVItQVNMLUNhbGxvCiAgICA4MjMwOiA3NSA3NCAyMCA1QyA1RiA0NyA1MCA0NSAyRSA1
MyA1MCAzMSAzNyAwQSAwMCAwMCAgdXQgXF9HUEUuU1AxNy4uLgogICAgODI0MDogMDAgMDAgMDAg
MDAgMDAgNUMgMkUgNUYgNDcgNTAgNDUgNTMgNTAgMzEgMzcgQTAgIC4uLi4uXC5fR1BFU1AxNy4K
ICAgIDgyNTA6IDQyIDA0IDVCIDEyIDVDIDJFIDVGIDQ3IDUwIDQ1IDQxIDQ5IDQ1IDMwIDAwIDRE
ICBCLlsuXC5fR1BFQUlFMC5NCiAgICA4MjYwOiAzNCAzNiAzMCAwRCAyMCAyMCA0QiA0NSA1MiAy
RCA0MSA1MyA0QyAyRCA0MyA2MSAgNDYwLiAgS0VSLUFTTC1DYQogICAgODI3MDogNkMgNkMgNkYg
NzUgNzQgMjAgNUMgNUYgNDcgNTAgNDUgMkUgNDEgNDkgNDUgMzAgIGxsb3V0IFxfR1BFLkFJRTAK
ICAgIDgyODA6IDBBIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDVDIDJFIDVGIDQ3IDUwIDQ1IDQxIDQ5
ICAuLi4uLi4uLlwuX0dQRUFJCiAgICA4MjkwOiA0NSAzMCA0RCAzNCAzNiAzMCAwRCAyMCAyMCA0
QiA0NSA1MiAyRCA0MSA1MyA0QyAgRTBNNDYwLiAgS0VSLUFTTAogICAgODJBMDogMkQgNUMgNUYg
NDcgNTAgNDUgMkUgNTMgNDkgNDUgMzAgMjAgNDUgNkUgNjQgMEEgIC1cX0dQRS5TSUUwIEVuZC4K
ICAgIDgyQjA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDE0IDRFIDVDIDUzIDQ5IDQ1IDMxIDA4IDRE
ICAuLi4uLi4uLk5cU0lFMS5NCiAgICA4MkMwOiAzNCAzNiAzMCAwRCAyMCAyMCA0QiA0NSA1MiAy
RCA0MSA1MyA0QyAyRCA1QyA1RiAgNDYwLiAgS0VSLUFTTC1cXwogICAgODJEMDogNDcgNTAgNDUg
MkUgNTMgNDkgNDUgMzEgMjAgNTMgNzQgNjEgNzIgNzQgMEEgMDAgIEdQRS5TSUUxIFN0YXJ0Li4K
ICAgIDgyRTA6IDAwIDAwIDAwIDAwIDAwIDAwIEEwIDQyIDA0IDVCIDEyIDVDIDJFIDVGIDQ3IDUw
ICAuLi4uLi4uQi5bLlwuX0dQCiAgICA4MkYwOiA0NSA0MiA0OSA0NSAzMSAwMCA0RCAzNCAzNiAz
MCAwRCAyMCAyMCA0QiA0NSA1MiAgRUJJRTEuTTQ2MC4gIEtFUgogICAgODMwMDogMkQgNDEgNTMg
NEMgMkQgNDMgNjEgNkMgNkMgNkYgNzUgNzQgMjAgNUMgNUYgNDcgIC1BU0wtQ2FsbG91dCBcX0cK
ICAgIDgzMTA6IDUwIDQ1IDJFIDQyIDQ5IDQ1IDMxIDBBIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDVD
ICBQRS5CSUUxLi4uLi4uLi5cCiAgICA4MzIwOiAyRSA1RiA0NyA1MCA0NSA0MiA0OSA0NSAzMSA3
MCA0RCAzNCA0NiAzMSAwMSA2MCAgLl9HUEVCSUUxcE00RjEuYAogICAgODMzMDogQTAgNEIgMDQg
OTMgN0IgNjAgMDEgMDAgMDEgQTAgNDIgMDQgNUIgMTIgNUMgMkUgIC5LLi57YC4uLi5CLlsuXC4K
ICAgIDgzNDA6IDVGIDQ3IDUwIDQ1IDUzIDUwIDMyIDMwIDAwIDREIDM0IDM2IDMwIDBEIDIwIDIw
ICBfR1BFU1AyMC5NNDYwLiAgCiAgICA4MzUwOiA0QiA0NSA1MiAyRCA0MSA1MyA0QyAyRCA0MyA2
MSA2QyA2QyA2RiA3NSA3NCAyMCAgS0VSLUFTTC1DYWxsb3V0IAogICAgODM2MDogNUMgNUYgNDcg
NTAgNDUgMkUgNTMgNTAgMzIgMzAgMEEgMDAgMDAgMDAgMDAgMDAgIFxfR1BFLlNQMjAuLi4uLi4K
ICAgIDgzNzA6IDAwIDAwIDVDIDJFIDVGIDQ3IDUwIDQ1IDUzIDUwIDMyIDMwIEEwIDREIDA0IDkz
ICAuLlwuX0dQRVNQMjAuTS4uCiAgICA4MzgwOiA3QiA2MCAwQSAwMiAwMCAwQSAwMiBBMCA0MiAw
NCA1QiAxMiA1QyAyRSA1RiA0NyAge2AuLi4uLi5CLlsuXC5fRwogICAgODM5MDogNTAgNDUgNTMg
NTAgMzIgMzEgMDAgNEQgMzQgMzYgMzAgMEQgMjAgMjAgNEIgNDUgIFBFU1AyMS5NNDYwLiAgS0UK
ICAgIDgzQTA6IDUyIDJEIDQxIDUzIDRDIDJEIDQzIDYxIDZDIDZDIDZGIDc1IDc0IDIwIDVDIDVG
ICBSLUFTTC1DYWxsb3V0IFxfCiAgICA4M0IwOiA0NyA1MCA0NSAyRSA1MyA1MCAzMiAzMSAwQSAw
MCAwMCAwMCAwMCAwMCAwMCAwMCAgR1BFLlNQMjEuLi4uLi4uLgogICAgODNDMDogNUMgMkUgNUYg
NDcgNTAgNDUgNTMgNTAgMzIgMzEgQTAgNEQgMDQgOTMgN0IgNjAgIFwuX0dQRVNQMjEuTS4ue2AK
ICAgIDgzRDA6IDBBIDA0IDAwIDBBIDA0IEEwIDQyIDA0IDVCIDEyIDVDIDJFIDVGIDQ3IDUwIDQ1
ICAuLi4uLi5CLlsuXC5fR1BFCiAgICA4M0UwOiA1MyA1MCAzMiAzMiAwMCA0RCAzNCAzNiAzMCAw
RCAyMCAyMCA0QiA0NSA1MiAyRCAgU1AyMi5NNDYwLiAgS0VSLQogICAgODNGMDogNDEgNTMgNEMg
MkQgNDMgNjEgNkMgNkMgNkYgNzUgNzQgMjAgNUMgNUYgNDcgNTAgIEFTTC1DYWxsb3V0IFxfR1AK
ICAgIDg0MDA6IDQ1IDJFIDUzIDUwIDMyIDMyIDBBIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDVDIDJF
ICBFLlNQMjIuLi4uLi4uLlwuCiAgICA4NDEwOiA1RiA0NyA1MCA0NSA1MyA1MCAzMiAzMiBBMCA0
RCAwNCA5MyA3QiA2MCAwQSAwOCAgX0dQRVNQMjIuTS4ue2AuLgogICAgODQyMDogMDAgMEEgMDgg
QTAgNDIgMDQgNUIgMTIgNUMgMkUgNUYgNDcgNTAgNDUgNTMgNTAgIC4uLi5CLlsuXC5fR1BFU1AK
ICAgIDg0MzA6IDMyIDMzIDAwIDREIDM0IDM2IDMwIDBEIDIwIDIwIDRCIDQ1IDUyIDJEIDQxIDUz
ICAyMy5NNDYwLiAgS0VSLUFTCiAgICA4NDQwOiA0QyAyRCA0MyA2MSA2QyA2QyA2RiA3NSA3NCAy
MCA1QyA1RiA0NyA1MCA0NSAyRSAgTC1DYWxsb3V0IFxfR1BFLgogICAgODQ1MDogNTMgNTAgMzIg
MzMgMEEgMDAgMDAgMDAgMDAgMDAgMDAgMDAgNUMgMkUgNUYgNDcgIFNQMjMuLi4uLi4uLlwuX0cK
ICAgIDg0NjA6IDUwIDQ1IDUzIDUwIDMyIDMzIEEwIDREIDA0IDkzIDdCIDYwIDBBIDEwIDAwIDBB
ICBQRVNQMjMuTS4ue2AuLi4uCiAgICA4NDcwOiAxMCBBMCA0MiAwNCA1QiAxMiA1QyAyRSA1RiA0
NyA1MCA0NSA1MyA1MCAzMiAzNCAgLi5CLlsuXC5fR1BFU1AyNAogICAgODQ4MDogMDAgNEQgMzQg
MzYgMzAgMEQgMjAgMjAgNEIgNDUgNTIgMkQgNDEgNTMgNEMgMkQgIC5NNDYwLiAgS0VSLUFTTC0K
ICAgIDg0OTA6IDQzIDYxIDZDIDZDIDZGIDc1IDc0IDIwIDVDIDVGIDQ3IDUwIDQ1IDJFIDUzIDUw
ICBDYWxsb3V0IFxfR1BFLlNQCiAgICA4NEEwOiAzMiAzNCAwQSAwMCAwMCAwMCAwMCAwMCAwMCAw
MCA1QyAyRSA1RiA0NyA1MCA0NSAgMjQuLi4uLi4uLlwuX0dQRQogICAgODRCMDogNTMgNTAgMzIg
MzQgQTAgNEQgMDQgOTMgN0IgNjAgMEEgMjAgMDAgMEEgMjAgQTAgIFNQMjQuTS4ue2AuIC4uIC4K
ICAgIDg0QzA6IDQyIDA0IDVCIDEyIDVDIDJFIDVGIDQ3IDUwIDQ1IDUzIDUwIDMyIDM1IDAwIDRE
ICBCLlsuXC5fR1BFU1AyNS5NCiAgICA4NEQwOiAzNCAzNiAzMCAwRCAyMCAyMCA0QiA0NSA1MiAy
RCA0MSA1MyA0QyAyRCA0MyA2MSAgNDYwLiAgS0VSLUFTTC1DYQogICAgODRFMDogNkMgNkMgNkYg
NzUgNzQgMjAgNUMgNUYgNDcgNTAgNDUgMkUgNTMgNTAgMzIgMzUgIGxsb3V0IFxfR1BFLlNQMjUK
ICAgIDg0RjA6IDBBIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDVDIDJFIDVGIDQ3IDUwIDQ1IDUzIDUw
ICAuLi4uLi4uLlwuX0dQRVNQCiAgICA4NTAwOiAzMiAzNSBBMCA0RCAwNCA5MyA3QiA2MCAwQSA0
MCAwMCAwQSA0MCBBMCA0MiAwNCAgMjUuTS4ue2AuQC4uQC5CLgogICAgODUxMDogNUIgMTIgNUMg
MkUgNUYgNDcgNTAgNDUgNTMgNTAgMzIgMzYgMDAgNEQgMzQgMzYgIFsuXC5fR1BFU1AyNi5NNDYK
ICAgIDg1MjA6IDMwIDBEIDIwIDIwIDRCIDQ1IDUyIDJEIDQxIDUzIDRDIDJEIDQzIDYxIDZDIDZD
ICAwLiAgS0VSLUFTTC1DYWxsCiAgICA4NTMwOiA2RiA3NSA3NCAyMCA1QyA1RiA0NyA1MCA0NSAy
RSA1MyA1MCAzMiAzNiAwQSAwMCAgb3V0IFxfR1BFLlNQMjYuLgogICAgODU0MDogMDAgMDAgMDAg
MDAgMDAgMDAgNUMgMkUgNUYgNDcgNTAgNDUgNTMgNTAgMzIgMzYgIC4uLi4uLlwuX0dQRVNQMjYK
ICAgIDg1NTA6IEEwIDREIDA0IDkzIDdCIDYwIDBBIDgwIDAwIDBBIDgwIEEwIDQyIDA0IDVCIDEy
ICAuTS4ue2AuLi4uLi5CLlsuCiAgICA4NTYwOiA1QyAyRSA1RiA0NyA1MCA0NSA1MyA1MCAzMiAz
NyAwMCA0RCAzNCAzNiAzMCAwRCAgXC5fR1BFU1AyNy5NNDYwLgogICAgODU3MDogMjAgMjAgNEIg
NDUgNTIgMkQgNDEgNTMgNEMgMkQgNDMgNjEgNkMgNkMgNkYgNzUgICAgS0VSLUFTTC1DYWxsb3UK
ICAgIDg1ODA6IDc0IDIwIDVDIDVGIDQ3IDUwIDQ1IDJFIDUzIDUwIDMyIDM3IDBBIDAwIDAwIDAw
ICB0IFxfR1BFLlNQMjcuLi4uCiAgICA4NTkwOiAwMCAwMCAwMCAwMCA1QyAyRSA1RiA0NyA1MCA0
NSA1MyA1MCAzMiAzNyBBMCA0RiAgLi4uLlwuX0dQRVNQMjcuTwogICAgODVBMDogMDQgOTMgN0Ig
NjAgMEIgMDAgMDEgMDAgMEIgMDAgMDEgQTAgNDIgMDQgNUIgMTIgIC4ue2AuLi4uLi4uLkIuWy4K
ICAgIDg1QjA6IDVDIDJFIDVGIDQ3IDUwIDQ1IDUzIDUwIDMzIDMwIDAwIDREIDM0IDM2IDMwIDBE
ICBcLl9HUEVTUDMwLk00NjAuCiAgICA4NUMwOiAyMCAyMCA0QiA0NSA1MiAyRCA0MSA1MyA0QyAy
RCA0MyA2MSA2QyA2QyA2RiA3NSAgICBLRVItQVNMLUNhbGxvdQogICAgODVEMDogNzQgMjAgNUMg
NUYgNDcgNTAgNDUgMkUgNTMgNTAgMzMgMzAgMEEgMDAgMDAgMDAgIHQgXF9HUEUuU1AzMC4uLi4K
ICAgIDg1RTA6IDAwIDAwIDAwIDAwIDVDIDJFIDVGIDQ3IDUwIDQ1IDUzIDUwIDMzIDMwIEEwIDRG
ICAuLi4uXC5fR1BFU1AzMC5PCiAgICA4NUYwOiAwNCA5MyA3QiA2MCAwQiAwMCAwMiAwMCAwQiAw
MCAwMiBBMCA0MiAwNCA1QiAxMiAgLi57YC4uLi4uLi4uQi5bLgogICAgODYwMDogNUMgMkUgNUYg
NDcgNTAgNDUgNTMgNTAgMzMgMzEgMDAgNEQgMzQgMzYgMzAgMEQgIFwuX0dQRVNQMzEuTTQ2MC4K
ICAgIDg2MTA6IDIwIDIwIDRCIDQ1IDUyIDJEIDQxIDUzIDRDIDJEIDQzIDYxIDZDIDZDIDZGIDc1
ICAgIEtFUi1BU0wtQ2FsbG91CiAgICA4NjIwOiA3NCAyMCA1QyA1RiA0NyA1MCA0NSAyRSA1MyA1
MCAzMyAzMSAwQSAwMCAwMCAwMCAgdCBcX0dQRS5TUDMxLi4uLgogICAgODYzMDogMDAgMDAgMDAg
MDAgNUMgMkUgNUYgNDcgNTAgNDUgNTMgNTAgMzMgMzEgQTAgNEYgIC4uLi5cLl9HUEVTUDMxLk8K
ICAgIDg2NDA6IDA0IDkzIDdCIDYwIDBCIDAwIDA0IDAwIDBCIDAwIDA0IEEwIDQyIDA0IDVCIDEy
ICAuLntgLi4uLi4uLi5CLlsuCiAgICA4NjUwOiA1QyAyRSA1RiA0NyA1MCA0NSA1MyA1MCAzMyAz
MiAwMCA0RCAzNCAzNiAzMCAwRCAgXC5fR1BFU1AzMi5NNDYwLgogICAgODY2MDogMjAgMjAgNEIg
NDUgNTIgMkQgNDEgNTMgNEMgMkQgNDMgNjEgNkMgNkMgNkYgNzUgICAgS0VSLUFTTC1DYWxsb3UK
ICAgIDg2NzA6IDc0IDIwIDVDIDVGIDQ3IDUwIDQ1IDJFIDUzIDUwIDMzIDMyIDBBIDAwIDAwIDAw
ICB0IFxfR1BFLlNQMzIuLi4uCiAgICA4NjgwOiAwMCAwMCAwMCAwMCA1QyAyRSA1RiA0NyA1MCA0
NSA1MyA1MCAzMyAzMiBBMCA0RiAgLi4uLlwuX0dQRVNQMzIuTwogICAgODY5MDogMDQgOTMgN0Ig
NjAgMEIgMDAgMDggMDAgMEIgMDAgMDggQTAgNDIgMDQgNUIgMTIgIC4ue2AuLi4uLi4uLkIuWy4K
ICAgIDg2QTA6IDVDIDJFIDVGIDQ3IDUwIDQ1IDUzIDUwIDMzIDMzIDAwIDREIDM0IDM2IDMwIDBE
ICBcLl9HUEVTUDMzLk00NjAuCiAgICA4NkIwOiAyMCAyMCA0QiA0NSA1MiAyRCA0MSA1MyA0QyAy
RCA0MyA2MSA2QyA2QyA2RiA3NSAgICBLRVItQVNMLUNhbGxvdQogICAgODZDMDogNzQgMjAgNUMg
NUYgNDcgNTAgNDUgMkUgNTMgNTAgMzMgMzMgMEEgMDAgMDAgMDAgIHQgXF9HUEUuU1AzMy4uLi4K
ICAgIDg2RDA6IDAwIDAwIDAwIDAwIDVDIDJFIDVGIDQ3IDUwIDQ1IDUzIDUwIDMzIDMzIEEwIDRG
ICAuLi4uXC5fR1BFU1AzMy5PCiAgICA4NkUwOiAwNCA5MyA3QiA2MCAwQiAwMCAxMCAwMCAwQiAw
MCAxMCBBMCA0MiAwNCA1QiAxMiAgLi57YC4uLi4uLi4uQi5bLgogICAgODZGMDogNUMgMkUgNUYg
NDcgNTAgNDUgNTMgNTAgMzMgMzQgMDAgNEQgMzQgMzYgMzAgMEQgIFwuX0dQRVNQMzQuTTQ2MC4K
ICAgIDg3MDA6IDIwIDIwIDRCIDQ1IDUyIDJEIDQxIDUzIDRDIDJEIDQzIDYxIDZDIDZDIDZGIDc1
ICAgIEtFUi1BU0wtQ2FsbG91CiAgICA4NzEwOiA3NCAyMCA1QyA1RiA0NyA1MCA0NSAyRSA1MyA1
MCAzMyAzNCAwQSAwMCAwMCAwMCAgdCBcX0dQRS5TUDM0Li4uLgogICAgODcyMDogMDAgMDAgMDAg
MDAgNUMgMkUgNUYgNDcgNTAgNDUgNTMgNTAgMzMgMzQgQTAgNEYgIC4uLi5cLl9HUEVTUDM0Lk8K
ICAgIDg3MzA6IDA0IDkzIDdCIDYwIDBCIDAwIDIwIDAwIDBCIDAwIDIwIEEwIDQyIDA0IDVCIDEy
ICAuLntgLi4gLi4uIC5CLlsuCiAgICA4NzQwOiA1QyAyRSA1RiA0NyA1MCA0NSA1MyA1MCAzMyAz
NSAwMCA0RCAzNCAzNiAzMCAwRCAgXC5fR1BFU1AzNS5NNDYwLgogICAgODc1MDogMjAgMjAgNEIg
NDUgNTIgMkQgNDEgNTMgNEMgMkQgNDMgNjEgNkMgNkMgNkYgNzUgICAgS0VSLUFTTC1DYWxsb3UK
ICAgIDg3NjA6IDc0IDIwIDVDIDVGIDQ3IDUwIDQ1IDJFIDUzIDUwIDMzIDM1IDBBIDAwIDAwIDAw
ICB0IFxfR1BFLlNQMzUuLi4uCiAgICA4NzcwOiAwMCAwMCAwMCAwMCA1QyAyRSA1RiA0NyA1MCA0
NSA1MyA1MCAzMyAzNSBBMCA0RiAgLi4uLlwuX0dQRVNQMzUuTwogICAgODc4MDogMDQgOTMgN0Ig
NjAgMEIgMDAgNDAgMDAgMEIgMDAgNDAgQTAgNDIgMDQgNUIgMTIgIC4ue2AuLkAuLi5ALkIuWy4K
ICAgIDg3OTA6IDVDIDJFIDVGIDQ3IDUwIDQ1IDUzIDUwIDMzIDM2IDAwIDREIDM0IDM2IDMwIDBE
ICBcLl9HUEVTUDM2Lk00NjAuCiAgICA4N0EwOiAyMCAyMCA0QiA0NSA1MiAyRCA0MSA1MyA0QyAy
RCA0MyA2MSA2QyA2QyA2RiA3NSAgICBLRVItQVNMLUNhbGxvdQogICAgODdCMDogNzQgMjAgNUMg
NUYgNDcgNTAgNDUgMkUgNTMgNTAgMzMgMzYgMEEgMDAgMDAgMDAgIHQgXF9HUEUuU1AzNi4uLi4K
ICAgIDg3QzA6IDAwIDAwIDAwIDAwIDVDIDJFIDVGIDQ3IDUwIDQ1IDUzIDUwIDMzIDM2IEEwIDRG
ICAuLi4uXC5fR1BFU1AzNi5PCiAgICA4N0QwOiAwNCA5MyA3QiA2MCAwQiAwMCA4MCAwMCAwQiAw
MCA4MCBBMCA0MiAwNCA1QiAxMiAgLi57YC4uLi4uLi4uQi5bLgogICAgODdFMDogNUMgMkUgNUYg
NDcgNTAgNDUgNTMgNTAgMzMgMzcgMDAgNEQgMzQgMzYgMzAgMEQgIFwuX0dQRVNQMzcuTTQ2MC4K
ICAgIDg3RjA6IDIwIDIwIDRCIDQ1IDUyIDJEIDQxIDUzIDRDIDJEIDQzIDYxIDZDIDZDIDZGIDc1
ICAgIEtFUi1BU0wtQ2FsbG91CiAgICA4ODAwOiA3NCAyMCA1QyA1RiA0NyA1MCA0NSAyRSA1MyA1
MCAzMyAzNyAwQSAwMCAwMCAwMCAgdCBcX0dQRS5TUDM3Li4uLgogICAgODgxMDogMDAgMDAgMDAg
MDAgNUMgMkUgNUYgNDcgNTAgNDUgNTMgNTAgMzMgMzcgQTAgNDIgIC4uLi5cLl9HUEVTUDM3LkIK
ICAgIDg4MjA6IDA0IDVCIDEyIDVDIDJFIDVGIDQ3IDUwIDQ1IDQxIDQ5IDQ1IDMxIDAwIDREIDM0
ICAuWy5cLl9HUEVBSUUxLk00CiAgICA4ODMwOiAzNiAzMCAwRCAyMCAyMCA0QiA0NSA1MiAyRCA0
MSA1MyA0QyAyRCA0MyA2MSA2QyAgNjAuICBLRVItQVNMLUNhbAogICAgODg0MDogNkMgNkYgNzUg
NzQgMjAgNUMgNUYgNDcgNTAgNDUgMkUgNDEgNDkgNDUgMzEgMEEgIGxvdXQgXF9HUEUuQUlFMS4K
ICAgIDg4NTA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDVDIDJFIDVGIDQ3IDUwIDQ1IDQxIDQ5IDQ1
ICAuLi4uLi4uXC5fR1BFQUlFCiAgICA4ODYwOiAzMSA0RCAzNCAzNiAzMCAwRCAyMCAyMCA0QiA0
NSA1MiAyRCA0MSA1MyA0QyAyRCAgMU00NjAuICBLRVItQVNMLQogICAgODg3MDogNUMgNUYgNDcg
NTAgNDUgMkUgNTMgNDkgNDUgMzEgMjAgNDUgNkUgNjQgMEEgMDAgIFxfR1BFLlNJRTEgRW5kLi4K
ICAgIDg4ODA6IDAwIDAwIDAwIDAwIDAwIDAwIDE0IDRGIDVDIDUzIDQ5IDQ1IDMyIDA4IDREIDM0
ICAuLi4uLi4uT1xTSUUyLk00CiAgICA4ODkwOiAzNiAzMCAwRCAyMCAyMCA0QiA0NSA1MiAyRCA0
MSA1MyA0QyAyRCA1QyA1RiA0NyAgNjAuICBLRVItQVNMLVxfRwogICAgODhBMDogNTAgNDUgMkUg
NTMgNDkgNDUgMzIgMjAgNTMgNzQgNjEgNzIgNzQgMEEgMDAgMDAgIFBFLlNJRTIgU3RhcnQuLi4K
ICAgIDg4QjA6IDAwIDAwIDAwIDAwIDAwIEEwIDQyIDA0IDVCIDEyIDVDIDJFIDVGIDQ3IDUwIDQ1
ICAuLi4uLi5CLlsuXC5fR1BFCiAgICA4OEMwOiA0MiA0OSA0NSAzMiAwMCA0RCAzNCAzNiAzMCAw
RCAyMCAyMCA0QiA0NSA1MiAyRCAgQklFMi5NNDYwLiAgS0VSLQogICAgODhEMDogNDEgNTMgNEMg
MkQgNDMgNjEgNkMgNkMgNkYgNzUgNzQgMjAgNUMgNUYgNDcgNTAgIEFTTC1DYWxsb3V0IFxfR1AK
ICAgIDg4RTA6IDQ1IDJFIDQyIDQ5IDQ1IDMyIDBBIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDVDIDJF
ICBFLkJJRTIuLi4uLi4uLlwuCiAgICA4OEYwOiA1RiA0NyA1MCA0NSA0MiA0OSA0NSAzMiA3MCA0
RCAzNCA0NiAzMSAwQSAwMiA2MCAgX0dQRUJJRTJwTTRGMS4uYAogICAgODkwMDogQTAgNEIgMDQg
OTMgN0IgNjAgMDEgMDAgMDEgQTAgNDIgMDQgNUIgMTIgNUMgMkUgIC5LLi57YC4uLi5CLlsuXC4K
ICAgIDg5MTA6IDVGIDQ3IDUwIDQ1IDUzIDUwIDM0IDMwIDAwIDREIDM0IDM2IDMwIDBEIDIwIDIw
ICBfR1BFU1A0MC5NNDYwLiAgCiAgICA4OTIwOiA0QiA0NSA1MiAyRCA0MSA1MyA0QyAyRCA0MyA2
MSA2QyA2QyA2RiA3NSA3NCAyMCAgS0VSLUFTTC1DYWxsb3V0IAogICAgODkzMDogNUMgNUYgNDcg
NTAgNDUgMkUgNTMgNTAgMzQgMzAgMEEgMDAgMDAgMDAgMDAgMDAgIFxfR1BFLlNQNDAuLi4uLi4K
ICAgIDg5NDA6IDAwIDAwIDVDIDJFIDVGIDQ3IDUwIDQ1IDUzIDUwIDM0IDMwIEEwIDREIDA0IDkz
ICAuLlwuX0dQRVNQNDAuTS4uCiAgICA4OTUwOiA3QiA2MCAwQSAwMiAwMCAwQSAwMiBBMCA0MiAw
NCA1QiAxMiA1QyAyRSA1RiA0NyAge2AuLi4uLi5CLlsuXC5fRwogICAgODk2MDogNTAgNDUgNTMg
NTAgMzQgMzEgMDAgNEQgMzQgMzYgMzAgMEQgMjAgMjAgNEIgNDUgIFBFU1A0MS5NNDYwLiAgS0UK
ICAgIDg5NzA6IDUyIDJEIDQxIDUzIDRDIDJEIDQzIDYxIDZDIDZDIDZGIDc1IDc0IDIwIDVDIDVG
ICBSLUFTTC1DYWxsb3V0IFxfCiAgICA4OTgwOiA0NyA1MCA0NSAyRSA1MyA1MCAzNCAzMSAwQSAw
MCAwMCAwMCAwMCAwMCAwMCAwMCAgR1BFLlNQNDEuLi4uLi4uLgogICAgODk5MDogNUMgMkUgNUYg
NDcgNTAgNDUgNTMgNTAgMzQgMzEgQTAgNEQgMDQgOTMgN0IgNjAgIFwuX0dQRVNQNDEuTS4ue2AK
ICAgIDg5QTA6IDBBIDA0IDAwIDBBIDA0IEEwIDQyIDA0IDVCIDEyIDVDIDJFIDVGIDQ3IDUwIDQ1
ICAuLi4uLi5CLlsuXC5fR1BFCiAgICA4OUIwOiA1MyA1MCAzNCAzMiAwMCA0RCAzNCAzNiAzMCAw
RCAyMCAyMCA0QiA0NSA1MiAyRCAgU1A0Mi5NNDYwLiAgS0VSLQogICAgODlDMDogNDEgNTMgNEMg
MkQgNDMgNjEgNkMgNkMgNkYgNzUgNzQgMjAgNUMgNUYgNDcgNTAgIEFTTC1DYWxsb3V0IFxfR1AK
ICAgIDg5RDA6IDQ1IDJFIDUzIDUwIDM0IDMyIDBBIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDVDIDJF
ICBFLlNQNDIuLi4uLi4uLlwuCiAgICA4OUUwOiA1RiA0NyA1MCA0NSA1MyA1MCAzNCAzMiBBMCA0
RCAwNCA5MyA3QiA2MCAwQSAwOCAgX0dQRVNQNDIuTS4ue2AuLgogICAgODlGMDogMDAgMEEgMDgg
QTAgNDIgMDQgNUIgMTIgNUMgMkUgNUYgNDcgNTAgNDUgNTMgNTAgIC4uLi5CLlsuXC5fR1BFU1AK
ICAgIDhBMDA6IDM0IDMzIDAwIDREIDM0IDM2IDMwIDBEIDIwIDIwIDRCIDQ1IDUyIDJEIDQxIDUz
ICA0My5NNDYwLiAgS0VSLUFTCiAgICA4QTEwOiA0QyAyRCA0MyA2MSA2QyA2QyA2RiA3NSA3NCAy
MCA1QyA1RiA0NyA1MCA0NSAyRSAgTC1DYWxsb3V0IFxfR1BFLgogICAgOEEyMDogNTMgNTAgMzQg
MzMgMEEgMDAgMDAgMDAgMDAgMDAgMDAgMDAgNUMgMkUgNUYgNDcgIFNQNDMuLi4uLi4uLlwuX0cK
ICAgIDhBMzA6IDUwIDQ1IDUzIDUwIDM0IDMzIEEwIDREIDA0IDkzIDdCIDYwIDBBIDEwIDAwIDBB
ICBQRVNQNDMuTS4ue2AuLi4uCiAgICA4QTQwOiAxMCBBMCA0MiAwNCA1QiAxMiA1QyAyRSA1RiA0
NyA1MCA0NSA1MyA1MCAzNCAzNCAgLi5CLlsuXC5fR1BFU1A0NAogICAgOEE1MDogMDAgNEQgMzQg
MzYgMzAgMEQgMjAgMjAgNEIgNDUgNTIgMkQgNDEgNTMgNEMgMkQgIC5NNDYwLiAgS0VSLUFTTC0K
ICAgIDhBNjA6IDQzIDYxIDZDIDZDIDZGIDc1IDc0IDIwIDVDIDVGIDQ3IDUwIDQ1IDJFIDUzIDUw
ICBDYWxsb3V0IFxfR1BFLlNQCiAgICA4QTcwOiAzNCAzNCAwQSAwMCAwMCAwMCAwMCAwMCAwMCAw
MCA1QyAyRSA1RiA0NyA1MCA0NSAgNDQuLi4uLi4uLlwuX0dQRQogICAgOEE4MDogNTMgNTAgMzQg
MzQgQTAgNEQgMDQgOTMgN0IgNjAgMEEgMjAgMDAgMEEgMjAgQTAgIFNQNDQuTS4ue2AuIC4uIC4K
ICAgIDhBOTA6IDQyIDA0IDVCIDEyIDVDIDJFIDVGIDQ3IDUwIDQ1IDUzIDUwIDM0IDM1IDAwIDRE
ICBCLlsuXC5fR1BFU1A0NS5NCiAgICA4QUEwOiAzNCAzNiAzMCAwRCAyMCAyMCA0QiA0NSA1MiAy
RCA0MSA1MyA0QyAyRCA0MyA2MSAgNDYwLiAgS0VSLUFTTC1DYQogICAgOEFCMDogNkMgNkMgNkYg
NzUgNzQgMjAgNUMgNUYgNDcgNTAgNDUgMkUgNTMgNTAgMzQgMzUgIGxsb3V0IFxfR1BFLlNQNDUK
ICAgIDhBQzA6IDBBIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDVDIDJFIDVGIDQ3IDUwIDQ1IDUzIDUw
ICAuLi4uLi4uLlwuX0dQRVNQCiAgICA4QUQwOiAzNCAzNSBBMCA0RCAwNCA5MyA3QiA2MCAwQSA0
MCAwMCAwQSA0MCBBMCA0MiAwNCAgNDUuTS4ue2AuQC4uQC5CLgogICAgOEFFMDogNUIgMTIgNUMg
MkUgNUYgNDcgNTAgNDUgNTMgNTAgMzQgMzYgMDAgNEQgMzQgMzYgIFsuXC5fR1BFU1A0Ni5NNDYK
ICAgIDhBRjA6IDMwIDBEIDIwIDIwIDRCIDQ1IDUyIDJEIDQxIDUzIDRDIDJEIDQzIDYxIDZDIDZD
ICAwLiAgS0VSLUFTTC1DYWxsCiAgICA4QjAwOiA2RiA3NSA3NCAyMCA1QyA1RiA0NyA1MCA0NSAy
RSA1MyA1MCAzNCAzNiAwQSAwMCAgb3V0IFxfR1BFLlNQNDYuLgogICAgOEIxMDogMDAgMDAgMDAg
MDAgMDAgMDAgNUMgMkUgNUYgNDcgNTAgNDUgNTMgNTAgMzQgMzYgIC4uLi4uLlwuX0dQRVNQNDYK
ICAgIDhCMjA6IEEwIDREIDA0IDkzIDdCIDYwIDBBIDgwIDAwIDBBIDgwIEEwIDQyIDA0IDVCIDEy
ICAuTS4ue2AuLi4uLi5CLlsuCiAgICA4QjMwOiA1QyAyRSA1RiA0NyA1MCA0NSA1MyA1MCAzNCAz
NyAwMCA0RCAzNCAzNiAzMCAwRCAgXC5fR1BFU1A0Ny5NNDYwLgogICAgOEI0MDogMjAgMjAgNEIg
NDUgNTIgMkQgNDEgNTMgNEMgMkQgNDMgNjEgNkMgNkMgNkYgNzUgICAgS0VSLUFTTC1DYWxsb3UK
ICAgIDhCNTA6IDc0IDIwIDVDIDVGIDQ3IDUwIDQ1IDJFIDUzIDUwIDM0IDM3IDBBIDAwIDAwIDAw
ICB0IFxfR1BFLlNQNDcuLi4uCiAgICA4QjYwOiAwMCAwMCAwMCAwMCA1QyAyRSA1RiA0NyA1MCA0
NSA1MyA1MCAzNCAzNyBBMCA0RiAgLi4uLlwuX0dQRVNQNDcuTwogICAgOEI3MDogMDQgOTMgN0Ig
NjAgMEIgMDAgMDEgMDAgMEIgMDAgMDEgQTAgNDIgMDQgNUIgMTIgIC4ue2AuLi4uLi4uLkIuWy4K
ICAgIDhCODA6IDVDIDJFIDVGIDQ3IDUwIDQ1IDUzIDUwIDM1IDMwIDAwIDREIDM0IDM2IDMwIDBE
ICBcLl9HUEVTUDUwLk00NjAuCiAgICA4QjkwOiAyMCAyMCA0QiA0NSA1MiAyRCA0MSA1MyA0QyAy
RCA0MyA2MSA2QyA2QyA2RiA3NSAgICBLRVItQVNMLUNhbGxvdQogICAgOEJBMDogNzQgMjAgNUMg
NUYgNDcgNTAgNDUgMkUgNTMgNTAgMzUgMzAgMEEgMDAgMDAgMDAgIHQgXF9HUEUuU1A1MC4uLi4K
ICAgIDhCQjA6IDAwIDAwIDAwIDAwIDVDIDJFIDVGIDQ3IDUwIDQ1IDUzIDUwIDM1IDMwIEEwIDRG
ICAuLi4uXC5fR1BFU1A1MC5PCiAgICA4QkMwOiAwNCA5MyA3QiA2MCAwQiAwMCAwMiAwMCAwQiAw
MCAwMiBBMCA0MiAwNCA1QiAxMiAgLi57YC4uLi4uLi4uQi5bLgogICAgOEJEMDogNUMgMkUgNUYg
NDcgNTAgNDUgNTMgNTAgMzUgMzEgMDAgNEQgMzQgMzYgMzAgMEQgIFwuX0dQRVNQNTEuTTQ2MC4K
ICAgIDhCRTA6IDIwIDIwIDRCIDQ1IDUyIDJEIDQxIDUzIDRDIDJEIDQzIDYxIDZDIDZDIDZGIDc1
ICAgIEtFUi1BU0wtQ2FsbG91CiAgICA4QkYwOiA3NCAyMCA1QyA1RiA0NyA1MCA0NSAyRSA1MyA1
MCAzNSAzMSAwQSAwMCAwMCAwMCAgdCBcX0dQRS5TUDUxLi4uLgogICAgOEMwMDogMDAgMDAgMDAg
MDAgNUMgMkUgNUYgNDcgNTAgNDUgNTMgNTAgMzUgMzEgQTAgNEYgIC4uLi5cLl9HUEVTUDUxLk8K
ICAgIDhDMTA6IDA0IDkzIDdCIDYwIDBCIDAwIDA0IDAwIDBCIDAwIDA0IEEwIDQyIDA0IDVCIDEy
ICAuLntgLi4uLi4uLi5CLlsuCiAgICA4QzIwOiA1QyAyRSA1RiA0NyA1MCA0NSA1MyA1MCAzNSAz
MiAwMCA0RCAzNCAzNiAzMCAwRCAgXC5fR1BFU1A1Mi5NNDYwLgogICAgOEMzMDogMjAgMjAgNEIg
NDUgNTIgMkQgNDEgNTMgNEMgMkQgNDMgNjEgNkMgNkMgNkYgNzUgICAgS0VSLUFTTC1DYWxsb3UK
ICAgIDhDNDA6IDc0IDIwIDVDIDVGIDQ3IDUwIDQ1IDJFIDUzIDUwIDM1IDMyIDBBIDAwIDAwIDAw
ICB0IFxfR1BFLlNQNTIuLi4uCiAgICA4QzUwOiAwMCAwMCAwMCAwMCA1QyAyRSA1RiA0NyA1MCA0
NSA1MyA1MCAzNSAzMiBBMCA0RiAgLi4uLlwuX0dQRVNQNTIuTwogICAgOEM2MDogMDQgOTMgN0Ig
NjAgMEIgMDAgMDggMDAgMEIgMDAgMDggQTAgNDIgMDQgNUIgMTIgIC4ue2AuLi4uLi4uLkIuWy4K
ICAgIDhDNzA6IDVDIDJFIDVGIDQ3IDUwIDQ1IDUzIDUwIDM1IDMzIDAwIDREIDM0IDM2IDMwIDBE
ICBcLl9HUEVTUDUzLk00NjAuCiAgICA4QzgwOiAyMCAyMCA0QiA0NSA1MiAyRCA0MSA1MyA0QyAy
RCA0MyA2MSA2QyA2QyA2RiA3NSAgICBLRVItQVNMLUNhbGxvdQogICAgOEM5MDogNzQgMjAgNUMg
NUYgNDcgNTAgNDUgMkUgNTMgNTAgMzUgMzMgMEEgMDAgMDAgMDAgIHQgXF9HUEUuU1A1My4uLi4K
ICAgIDhDQTA6IDAwIDAwIDAwIDAwIDVDIDJFIDVGIDQ3IDUwIDQ1IDUzIDUwIDM1IDMzIEEwIDRG
ICAuLi4uXC5fR1BFU1A1My5PCiAgICA4Q0IwOiAwNCA5MyA3QiA2MCAwQiAwMCAxMCAwMCAwQiAw
MCAxMCBBMCA0MiAwNCA1QiAxMiAgLi57YC4uLi4uLi4uQi5bLgogICAgOENDMDogNUMgMkUgNUYg
NDcgNTAgNDUgNTMgNTAgMzUgMzQgMDAgNEQgMzQgMzYgMzAgMEQgIFwuX0dQRVNQNTQuTTQ2MC4K
ICAgIDhDRDA6IDIwIDIwIDRCIDQ1IDUyIDJEIDQxIDUzIDRDIDJEIDQzIDYxIDZDIDZDIDZGIDc1
ICAgIEtFUi1BU0wtQ2FsbG91CiAgICA4Q0UwOiA3NCAyMCA1QyA1RiA0NyA1MCA0NSAyRSA1MyA1
MCAzNSAzNCAwQSAwMCAwMCAwMCAgdCBcX0dQRS5TUDU0Li4uLgogICAgOENGMDogMDAgMDAgMDAg
MDAgNUMgMkUgNUYgNDcgNTAgNDUgNTMgNTAgMzUgMzQgQTAgNEYgIC4uLi5cLl9HUEVTUDU0Lk8K
ICAgIDhEMDA6IDA0IDkzIDdCIDYwIDBCIDAwIDIwIDAwIDBCIDAwIDIwIEEwIDQyIDA0IDVCIDEy
ICAuLntgLi4gLi4uIC5CLlsuCiAgICA4RDEwOiA1QyAyRSA1RiA0NyA1MCA0NSA1MyA1MCAzNSAz
NSAwMCA0RCAzNCAzNiAzMCAwRCAgXC5fR1BFU1A1NS5NNDYwLgogICAgOEQyMDogMjAgMjAgNEIg
NDUgNTIgMkQgNDEgNTMgNEMgMkQgNDMgNjEgNkMgNkMgNkYgNzUgICAgS0VSLUFTTC1DYWxsb3UK
ICAgIDhEMzA6IDc0IDIwIDVDIDVGIDQ3IDUwIDQ1IDJFIDUzIDUwIDM1IDM1IDBBIDAwIDAwIDAw
ICB0IFxfR1BFLlNQNTUuLi4uCiAgICA4RDQwOiAwMCAwMCAwMCAwMCA1QyAyRSA1RiA0NyA1MCA0
NSA1MyA1MCAzNSAzNSBBMCA0RiAgLi4uLlwuX0dQRVNQNTUuTwogICAgOEQ1MDogMDQgOTMgN0Ig
NjAgMEIgMDAgNDAgMDAgMEIgMDAgNDAgQTAgNDIgMDQgNUIgMTIgIC4ue2AuLkAuLi5ALkIuWy4K
ICAgIDhENjA6IDVDIDJFIDVGIDQ3IDUwIDQ1IDUzIDUwIDM1IDM2IDAwIDREIDM0IDM2IDMwIDBE
ICBcLl9HUEVTUDU2Lk00NjAuCiAgICA4RDcwOiAyMCAyMCA0QiA0NSA1MiAyRCA0MSA1MyA0QyAy
RCA0MyA2MSA2QyA2QyA2RiA3NSAgICBLRVItQVNMLUNhbGxvdQogICAgOEQ4MDogNzQgMjAgNUMg
NUYgNDcgNTAgNDUgMkUgNTMgNTAgMzUgMzYgMEEgMDAgMDAgMDAgIHQgXF9HUEUuU1A1Ni4uLi4K
ICAgIDhEOTA6IDAwIDAwIDAwIDAwIDVDIDJFIDVGIDQ3IDUwIDQ1IDUzIDUwIDM1IDM2IEEwIDRG
ICAuLi4uXC5fR1BFU1A1Ni5PCiAgICA4REEwOiAwNCA5MyA3QiA2MCAwQiAwMCA4MCAwMCAwQiAw
MCA4MCBBMCA0MiAwNCA1QiAxMiAgLi57YC4uLi4uLi4uQi5bLgogICAgOERCMDogNUMgMkUgNUYg
NDcgNTAgNDUgNTMgNTAgMzUgMzcgMDAgNEQgMzQgMzYgMzAgMEQgIFwuX0dQRVNQNTcuTTQ2MC4K
ICAgIDhEQzA6IDIwIDIwIDRCIDQ1IDUyIDJEIDQxIDUzIDRDIDJEIDQzIDYxIDZDIDZDIDZGIDc1
ICAgIEtFUi1BU0wtQ2FsbG91CiAgICA4REQwOiA3NCAyMCA1QyA1RiA0NyA1MCA0NSAyRSA1MyA1
MCAzNSAzNyAwQSAwMCAwMCAwMCAgdCBcX0dQRS5TUDU3Li4uLgogICAgOERFMDogMDAgMDAgMDAg
MDAgNUMgMkUgNUYgNDcgNTAgNDUgNTMgNTAgMzUgMzcgQTAgNDIgIC4uLi5cLl9HUEVTUDU3LkIK
ICAgIDhERjA6IDA0IDVCIDEyIDVDIDJFIDVGIDQ3IDUwIDQ1IDQxIDQ5IDQ1IDMyIDAwIDREIDM0
ICAuWy5cLl9HUEVBSUUyLk00CiAgICA4RTAwOiAzNiAzMCAwRCAyMCAyMCA0QiA0NSA1MiAyRCA0
MSA1MyA0QyAyRCA0MyA2MSA2QyAgNjAuICBLRVItQVNMLUNhbAogICAgOEUxMDogNkMgNkYgNzUg
NzQgMjAgNUMgNUYgNDcgNTAgNDUgMkUgNDEgNDkgNDUgMzIgMEEgIGxvdXQgXF9HUEUuQUlFMi4K
ICAgIDhFMjA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDVDIDJFIDVGIDQ3IDUwIDQ1IDQxIDQ5IDQ1
ICAuLi4uLi4uXC5fR1BFQUlFCiAgICA4RTMwOiAzMiA0RCAzNCAzNiAzMCAwRCAyMCAyMCA0QiA0
NSA1MiAyRCA0MSA1MyA0QyAyRCAgMk00NjAuICBLRVItQVNMLQogICAgOEU0MDogNUMgNUYgNDcg
NTAgNDUgMkUgNTMgNDkgNDUgMzIgMjAgNDUgNkUgNjQgMEEgMDAgIFxfR1BFLlNJRTIgRW5kLi4K
ICAgIDhFNTA6IDAwIDAwIDAwIDAwIDAwIDAwIDE0IDRGIDVDIDUzIDQ5IDQ1IDMzIDA4IDREIDM0
ICAuLi4uLi4uT1xTSUUzLk00CiAgICA4RTYwOiAzNiAzMCAwRCAyMCAyMCA0QiA0NSA1MiAyRCA0
MSA1MyA0QyAyRCA1QyA1RiA0NyAgNjAuICBLRVItQVNMLVxfRwogICAgOEU3MDogNTAgNDUgMkUg
NTMgNDkgNDUgMzMgMjAgNTMgNzQgNjEgNzIgNzQgMEEgMDAgMDAgIFBFLlNJRTMgU3RhcnQuLi4K
ICAgIDhFODA6IDAwIDAwIDAwIDAwIDAwIEEwIDQyIDA0IDVCIDEyIDVDIDJFIDVGIDQ3IDUwIDQ1
ICAuLi4uLi5CLlsuXC5fR1BFCiAgICA4RTkwOiA0MiA0OSA0NSAzMyAwMCA0RCAzNCAzNiAzMCAw
RCAyMCAyMCA0QiA0NSA1MiAyRCAgQklFMy5NNDYwLiAgS0VSLQogICAgOEVBMDogNDEgNTMgNEMg
MkQgNDMgNjEgNkMgNkMgNkYgNzUgNzQgMjAgNUMgNUYgNDcgNTAgIEFTTC1DYWxsb3V0IFxfR1AK
ICAgIDhFQjA6IDQ1IDJFIDQyIDQ5IDQ1IDMzIDBBIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDVDIDJF
ICBFLkJJRTMuLi4uLi4uLlwuCiAgICA4RUMwOiA1RiA0NyA1MCA0NSA0MiA0OSA0NSAzMyA3MCA0
RCAzNCA0NiAzMSAwQSAwMyA2MCAgX0dQRUJJRTNwTTRGMS4uYAogICAgOEVEMDogQTAgNEIgMDQg
OTMgN0IgNjAgMDEgMDAgMDEgQTAgNDIgMDQgNUIgMTIgNUMgMkUgIC5LLi57YC4uLi5CLlsuXC4K
ICAgIDhFRTA6IDVGIDQ3IDUwIDQ1IDUzIDUwIDM2IDMwIDAwIDREIDM0IDM2IDMwIDBEIDIwIDIw
ICBfR1BFU1A2MC5NNDYwLiAgCiAgICA4RUYwOiA0QiA0NSA1MiAyRCA0MSA1MyA0QyAyRCA0MyA2
MSA2QyA2QyA2RiA3NSA3NCAyMCAgS0VSLUFTTC1DYWxsb3V0IAogICAgOEYwMDogNUMgNUYgNDcg
NTAgNDUgMkUgNTMgNTAgMzYgMzAgMEEgMDAgMDAgMDAgMDAgMDAgIFxfR1BFLlNQNjAuLi4uLi4K
ICAgIDhGMTA6IDAwIDAwIDVDIDJFIDVGIDQ3IDUwIDQ1IDUzIDUwIDM2IDMwIEEwIDREIDA0IDkz
ICAuLlwuX0dQRVNQNjAuTS4uCiAgICA4RjIwOiA3QiA2MCAwQSAwMiAwMCAwQSAwMiBBMCA0MiAw
NCA1QiAxMiA1QyAyRSA1RiA0NyAge2AuLi4uLi5CLlsuXC5fRwogICAgOEYzMDogNTAgNDUgNTMg
NTAgMzYgMzEgMDAgNEQgMzQgMzYgMzAgMEQgMjAgMjAgNEIgNDUgIFBFU1A2MS5NNDYwLiAgS0UK
ICAgIDhGNDA6IDUyIDJEIDQxIDUzIDRDIDJEIDQzIDYxIDZDIDZDIDZGIDc1IDc0IDIwIDVDIDVG
ICBSLUFTTC1DYWxsb3V0IFxfCiAgICA4RjUwOiA0NyA1MCA0NSAyRSA1MyA1MCAzNiAzMSAwQSAw
MCAwMCAwMCAwMCAwMCAwMCAwMCAgR1BFLlNQNjEuLi4uLi4uLgogICAgOEY2MDogNUMgMkUgNUYg
NDcgNTAgNDUgNTMgNTAgMzYgMzEgQTAgNEQgMDQgOTMgN0IgNjAgIFwuX0dQRVNQNjEuTS4ue2AK
ICAgIDhGNzA6IDBBIDA0IDAwIDBBIDA0IEEwIDQyIDA0IDVCIDEyIDVDIDJFIDVGIDQ3IDUwIDQ1
ICAuLi4uLi5CLlsuXC5fR1BFCiAgICA4RjgwOiA1MyA1MCAzNiAzMiAwMCA0RCAzNCAzNiAzMCAw
RCAyMCAyMCA0QiA0NSA1MiAyRCAgU1A2Mi5NNDYwLiAgS0VSLQogICAgOEY5MDogNDEgNTMgNEMg
MkQgNDMgNjEgNkMgNkMgNkYgNzUgNzQgMjAgNUMgNUYgNDcgNTAgIEFTTC1DYWxsb3V0IFxfR1AK
ICAgIDhGQTA6IDQ1IDJFIDUzIDUwIDM2IDMyIDBBIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDVDIDJF
ICBFLlNQNjIuLi4uLi4uLlwuCiAgICA4RkIwOiA1RiA0NyA1MCA0NSA1MyA1MCAzNiAzMiBBMCA0
RCAwNCA5MyA3QiA2MCAwQSAwOCAgX0dQRVNQNjIuTS4ue2AuLgogICAgOEZDMDogMDAgMEEgMDgg
QTAgNDIgMDQgNUIgMTIgNUMgMkUgNUYgNDcgNTAgNDUgNTMgNTAgIC4uLi5CLlsuXC5fR1BFU1AK
ICAgIDhGRDA6IDM2IDMzIDAwIDREIDM0IDM2IDMwIDBEIDIwIDIwIDRCIDQ1IDUyIDJEIDQxIDUz
ICA2My5NNDYwLiAgS0VSLUFTCiAgICA4RkUwOiA0QyAyRCA0MyA2MSA2QyA2QyA2RiA3NSA3NCAy
MCA1QyA1RiA0NyA1MCA0NSAyRSAgTC1DYWxsb3V0IFxfR1BFLgogICAgOEZGMDogNTMgNTAgMzYg
MzMgMEEgMDAgMDAgMDAgMDAgMDAgMDAgMDAgNUMgMkUgNUYgNDcgIFNQNjMuLi4uLi4uLlwuX0cK
ICAgIDkwMDA6IDUwIDQ1IDUzIDUwIDM2IDMzIEEwIDREIDA0IDkzIDdCIDYwIDBBIDEwIDAwIDBB
ICBQRVNQNjMuTS4ue2AuLi4uCiAgICA5MDEwOiAxMCBBMCA0MiAwNCA1QiAxMiA1QyAyRSA1RiA0
NyA1MCA0NSA1MyA1MCAzNiAzNCAgLi5CLlsuXC5fR1BFU1A2NAogICAgOTAyMDogMDAgNEQgMzQg
MzYgMzAgMEQgMjAgMjAgNEIgNDUgNTIgMkQgNDEgNTMgNEMgMkQgIC5NNDYwLiAgS0VSLUFTTC0K
ICAgIDkwMzA6IDQzIDYxIDZDIDZDIDZGIDc1IDc0IDIwIDVDIDVGIDQ3IDUwIDQ1IDJFIDUzIDUw
ICBDYWxsb3V0IFxfR1BFLlNQCiAgICA5MDQwOiAzNiAzNCAwQSAwMCAwMCAwMCAwMCAwMCAwMCAw
MCA1QyAyRSA1RiA0NyA1MCA0NSAgNjQuLi4uLi4uLlwuX0dQRQogICAgOTA1MDogNTMgNTAgMzYg
MzQgQTAgNEQgMDQgOTMgN0IgNjAgMEEgMjAgMDAgMEEgMjAgQTAgIFNQNjQuTS4ue2AuIC4uIC4K
ICAgIDkwNjA6IDQyIDA0IDVCIDEyIDVDIDJFIDVGIDQ3IDUwIDQ1IDUzIDUwIDM2IDM1IDAwIDRE
ICBCLlsuXC5fR1BFU1A2NS5NCiAgICA5MDcwOiAzNCAzNiAzMCAwRCAyMCAyMCA0QiA0NSA1MiAy
RCA0MSA1MyA0QyAyRCA0MyA2MSAgNDYwLiAgS0VSLUFTTC1DYQogICAgOTA4MDogNkMgNkMgNkYg
NzUgNzQgMjAgNUMgNUYgNDcgNTAgNDUgMkUgNTMgNTAgMzYgMzUgIGxsb3V0IFxfR1BFLlNQNjUK
ICAgIDkwOTA6IDBBIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDVDIDJFIDVGIDQ3IDUwIDQ1IDUzIDUw
ICAuLi4uLi4uLlwuX0dQRVNQCiAgICA5MEEwOiAzNiAzNSBBMCA0RCAwNCA5MyA3QiA2MCAwQSA0
MCAwMCAwQSA0MCBBMCA0MiAwNCAgNjUuTS4ue2AuQC4uQC5CLgogICAgOTBCMDogNUIgMTIgNUMg
MkUgNUYgNDcgNTAgNDUgNTMgNTAgMzYgMzYgMDAgNEQgMzQgMzYgIFsuXC5fR1BFU1A2Ni5NNDYK
ICAgIDkwQzA6IDMwIDBEIDIwIDIwIDRCIDQ1IDUyIDJEIDQxIDUzIDRDIDJEIDQzIDYxIDZDIDZD
ICAwLiAgS0VSLUFTTC1DYWxsCiAgICA5MEQwOiA2RiA3NSA3NCAyMCA1QyA1RiA0NyA1MCA0NSAy
RSA1MyA1MCAzNiAzNiAwQSAwMCAgb3V0IFxfR1BFLlNQNjYuLgogICAgOTBFMDogMDAgMDAgMDAg
MDAgMDAgMDAgNUMgMkUgNUYgNDcgNTAgNDUgNTMgNTAgMzYgMzYgIC4uLi4uLlwuX0dQRVNQNjYK
ICAgIDkwRjA6IEEwIDREIDA0IDkzIDdCIDYwIDBBIDgwIDAwIDBBIDgwIEEwIDQyIDA0IDVCIDEy
ICAuTS4ue2AuLi4uLi5CLlsuCiAgICA5MTAwOiA1QyAyRSA1RiA0NyA1MCA0NSA1MyA1MCAzNiAz
NyAwMCA0RCAzNCAzNiAzMCAwRCAgXC5fR1BFU1A2Ny5NNDYwLgogICAgOTExMDogMjAgMjAgNEIg
NDUgNTIgMkQgNDEgNTMgNEMgMkQgNDMgNjEgNkMgNkMgNkYgNzUgICAgS0VSLUFTTC1DYWxsb3UK
ICAgIDkxMjA6IDc0IDIwIDVDIDVGIDQ3IDUwIDQ1IDJFIDUzIDUwIDM2IDM3IDBBIDAwIDAwIDAw
ICB0IFxfR1BFLlNQNjcuLi4uCiAgICA5MTMwOiAwMCAwMCAwMCAwMCA1QyAyRSA1RiA0NyA1MCA0
NSA1MyA1MCAzNiAzNyBBMCA0RiAgLi4uLlwuX0dQRVNQNjcuTwogICAgOTE0MDogMDQgOTMgN0Ig
NjAgMEIgMDAgMDEgMDAgMEIgMDAgMDEgQTAgNDIgMDQgNUIgMTIgIC4ue2AuLi4uLi4uLkIuWy4K
ICAgIDkxNTA6IDVDIDJFIDVGIDQ3IDUwIDQ1IDUzIDUwIDM3IDMwIDAwIDREIDM0IDM2IDMwIDBE
ICBcLl9HUEVTUDcwLk00NjAuCiAgICA5MTYwOiAyMCAyMCA0QiA0NSA1MiAyRCA0MSA1MyA0QyAy
RCA0MyA2MSA2QyA2QyA2RiA3NSAgICBLRVItQVNMLUNhbGxvdQogICAgOTE3MDogNzQgMjAgNUMg
NUYgNDcgNTAgNDUgMkUgNTMgNTAgMzcgMzAgMEEgMDAgMDAgMDAgIHQgXF9HUEUuU1A3MC4uLi4K
ICAgIDkxODA6IDAwIDAwIDAwIDAwIDVDIDJFIDVGIDQ3IDUwIDQ1IDUzIDUwIDM3IDMwIEEwIDRG
ICAuLi4uXC5fR1BFU1A3MC5PCiAgICA5MTkwOiAwNCA5MyA3QiA2MCAwQiAwMCAwMiAwMCAwQiAw
MCAwMiBBMCA0MiAwNCA1QiAxMiAgLi57YC4uLi4uLi4uQi5bLgogICAgOTFBMDogNUMgMkUgNUYg
NDcgNTAgNDUgNTMgNTAgMzcgMzEgMDAgNEQgMzQgMzYgMzAgMEQgIFwuX0dQRVNQNzEuTTQ2MC4K
ICAgIDkxQjA6IDIwIDIwIDRCIDQ1IDUyIDJEIDQxIDUzIDRDIDJEIDQzIDYxIDZDIDZDIDZGIDc1
ICAgIEtFUi1BU0wtQ2FsbG91CiAgICA5MUMwOiA3NCAyMCA1QyA1RiA0NyA1MCA0NSAyRSA1MyA1
MCAzNyAzMSAwQSAwMCAwMCAwMCAgdCBcX0dQRS5TUDcxLi4uLgogICAgOTFEMDogMDAgMDAgMDAg
MDAgNUMgMkUgNUYgNDcgNTAgNDUgNTMgNTAgMzcgMzEgQTAgNEYgIC4uLi5cLl9HUEVTUDcxLk8K
ICAgIDkxRTA6IDA0IDkzIDdCIDYwIDBCIDAwIDA0IDAwIDBCIDAwIDA0IEEwIDQyIDA0IDVCIDEy
ICAuLntgLi4uLi4uLi5CLlsuCiAgICA5MUYwOiA1QyAyRSA1RiA0NyA1MCA0NSA1MyA1MCAzNyAz
MiAwMCA0RCAzNCAzNiAzMCAwRCAgXC5fR1BFU1A3Mi5NNDYwLgogICAgOTIwMDogMjAgMjAgNEIg
NDUgNTIgMkQgNDEgNTMgNEMgMkQgNDMgNjEgNkMgNkMgNkYgNzUgICAgS0VSLUFTTC1DYWxsb3UK
ICAgIDkyMTA6IDc0IDIwIDVDIDVGIDQ3IDUwIDQ1IDJFIDUzIDUwIDM3IDMyIDBBIDAwIDAwIDAw
ICB0IFxfR1BFLlNQNzIuLi4uCiAgICA5MjIwOiAwMCAwMCAwMCAwMCA1QyAyRSA1RiA0NyA1MCA0
NSA1MyA1MCAzNyAzMiBBMCA0RiAgLi4uLlwuX0dQRVNQNzIuTwogICAgOTIzMDogMDQgOTMgN0Ig
NjAgMEIgMDAgMDggMDAgMEIgMDAgMDggQTAgNDIgMDQgNUIgMTIgIC4ue2AuLi4uLi4uLkIuWy4K
ICAgIDkyNDA6IDVDIDJFIDVGIDQ3IDUwIDQ1IDUzIDUwIDM3IDMzIDAwIDREIDM0IDM2IDMwIDBE
ICBcLl9HUEVTUDczLk00NjAuCiAgICA5MjUwOiAyMCAyMCA0QiA0NSA1MiAyRCA0MSA1MyA0QyAy
RCA0MyA2MSA2QyA2QyA2RiA3NSAgICBLRVItQVNMLUNhbGxvdQogICAgOTI2MDogNzQgMjAgNUMg
NUYgNDcgNTAgNDUgMkUgNTMgNTAgMzcgMzMgMEEgMDAgMDAgMDAgIHQgXF9HUEUuU1A3My4uLi4K
ICAgIDkyNzA6IDAwIDAwIDAwIDAwIDVDIDJFIDVGIDQ3IDUwIDQ1IDUzIDUwIDM3IDMzIEEwIDRG
ICAuLi4uXC5fR1BFU1A3My5PCiAgICA5MjgwOiAwNCA5MyA3QiA2MCAwQiAwMCAxMCAwMCAwQiAw
MCAxMCBBMCA0MiAwNCA1QiAxMiAgLi57YC4uLi4uLi4uQi5bLgogICAgOTI5MDogNUMgMkUgNUYg
NDcgNTAgNDUgNTMgNTAgMzcgMzQgMDAgNEQgMzQgMzYgMzAgMEQgIFwuX0dQRVNQNzQuTTQ2MC4K
ICAgIDkyQTA6IDIwIDIwIDRCIDQ1IDUyIDJEIDQxIDUzIDRDIDJEIDQzIDYxIDZDIDZDIDZGIDc1
ICAgIEtFUi1BU0wtQ2FsbG91CiAgICA5MkIwOiA3NCAyMCA1QyA1RiA0NyA1MCA0NSAyRSA1MyA1
MCAzNyAzNCAwQSAwMCAwMCAwMCAgdCBcX0dQRS5TUDc0Li4uLgogICAgOTJDMDogMDAgMDAgMDAg
MDAgNUMgMkUgNUYgNDcgNTAgNDUgNTMgNTAgMzcgMzQgQTAgNEYgIC4uLi5cLl9HUEVTUDc0Lk8K
ICAgIDkyRDA6IDA0IDkzIDdCIDYwIDBCIDAwIDIwIDAwIDBCIDAwIDIwIEEwIDQyIDA0IDVCIDEy
ICAuLntgLi4gLi4uIC5CLlsuCiAgICA5MkUwOiA1QyAyRSA1RiA0NyA1MCA0NSA1MyA1MCAzNyAz
NSAwMCA0RCAzNCAzNiAzMCAwRCAgXC5fR1BFU1A3NS5NNDYwLgogICAgOTJGMDogMjAgMjAgNEIg
NDUgNTIgMkQgNDEgNTMgNEMgMkQgNDMgNjEgNkMgNkMgNkYgNzUgICAgS0VSLUFTTC1DYWxsb3UK
ICAgIDkzMDA6IDc0IDIwIDVDIDVGIDQ3IDUwIDQ1IDJFIDUzIDUwIDM3IDM1IDBBIDAwIDAwIDAw
ICB0IFxfR1BFLlNQNzUuLi4uCiAgICA5MzEwOiAwMCAwMCAwMCAwMCA1QyAyRSA1RiA0NyA1MCA0
NSA1MyA1MCAzNyAzNSBBMCA0RiAgLi4uLlwuX0dQRVNQNzUuTwogICAgOTMyMDogMDQgOTMgN0Ig
NjAgMEIgMDAgNDAgMDAgMEIgMDAgNDAgQTAgNDIgMDQgNUIgMTIgIC4ue2AuLkAuLi5ALkIuWy4K
ICAgIDkzMzA6IDVDIDJFIDVGIDQ3IDUwIDQ1IDUzIDUwIDM3IDM2IDAwIDREIDM0IDM2IDMwIDBE
ICBcLl9HUEVTUDc2Lk00NjAuCiAgICA5MzQwOiAyMCAyMCA0QiA0NSA1MiAyRCA0MSA1MyA0QyAy
RCA0MyA2MSA2QyA2QyA2RiA3NSAgICBLRVItQVNMLUNhbGxvdQogICAgOTM1MDogNzQgMjAgNUMg
NUYgNDcgNTAgNDUgMkUgNTMgNTAgMzcgMzYgMEEgMDAgMDAgMDAgIHQgXF9HUEUuU1A3Ni4uLi4K
ICAgIDkzNjA6IDAwIDAwIDAwIDAwIDVDIDJFIDVGIDQ3IDUwIDQ1IDUzIDUwIDM3IDM2IEEwIDRG
ICAuLi4uXC5fR1BFU1A3Ni5PCiAgICA5MzcwOiAwNCA5MyA3QiA2MCAwQiAwMCA4MCAwMCAwQiAw
MCA4MCBBMCA0MiAwNCA1QiAxMiAgLi57YC4uLi4uLi4uQi5bLgogICAgOTM4MDogNUMgMkUgNUYg
NDcgNTAgNDUgNTMgNTAgMzcgMzcgMDAgNEQgMzQgMzYgMzAgMEQgIFwuX0dQRVNQNzcuTTQ2MC4K
ICAgIDkzOTA6IDIwIDIwIDRCIDQ1IDUyIDJEIDQxIDUzIDRDIDJEIDQzIDYxIDZDIDZDIDZGIDc1
ICAgIEtFUi1BU0wtQ2FsbG91CiAgICA5M0EwOiA3NCAyMCA1QyA1RiA0NyA1MCA0NSAyRSA1MyA1
MCAzNyAzNyAwQSAwMCAwMCAwMCAgdCBcX0dQRS5TUDc3Li4uLgogICAgOTNCMDogMDAgMDAgMDAg
MDAgNUMgMkUgNUYgNDcgNTAgNDUgNTMgNTAgMzcgMzcgQTAgNDIgIC4uLi5cLl9HUEVTUDc3LkIK
ICAgIDkzQzA6IDA0IDVCIDEyIDVDIDJFIDVGIDQ3IDUwIDQ1IDQxIDQ5IDQ1IDMzIDAwIDREIDM0
ICAuWy5cLl9HUEVBSUUzLk00CiAgICA5M0QwOiAzNiAzMCAwRCAyMCAyMCA0QiA0NSA1MiAyRCA0
MSA1MyA0QyAyRCA0MyA2MSA2QyAgNjAuICBLRVItQVNMLUNhbAogICAgOTNFMDogNkMgNkYgNzUg
NzQgMjAgNUMgNUYgNDcgNTAgNDUgMkUgNDEgNDkgNDUgMzMgMEEgIGxvdXQgXF9HUEUuQUlFMy4K
ICAgIDkzRjA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDVDIDJFIDVGIDQ3IDUwIDQ1IDQxIDQ5IDQ1
ICAuLi4uLi4uXC5fR1BFQUlFCiAgICA5NDAwOiAzMyA0RCAzNCAzNiAzMCAwRCAyMCAyMCA0QiA0
NSA1MiAyRCA0MSA1MyA0QyAyRCAgM000NjAuICBLRVItQVNMLQogICAgOTQxMDogNUMgNUYgNDcg
NTAgNDUgMkUgNTMgNDkgNDUgMzMgMjAgNDUgNkUgNjQgMEEgMDAgIFxfR1BFLlNJRTMgRW5kLi4K
ICAgIDk0MjA6IDAwIDAwIDAwIDAwIDAwIDAwIDA4IDREIDM0IDQ0IDMyIDExIDAzIDBBIDA4IDE0
ICAuLi4uLi4uTTREMi4uLi4uCiAgICA5NDMwOiA0RCAxQiA1OCA0QyAzMCA0MiAwOCA3MCAxMSAw
MyAwQSAwOCA2MyA4QiA2MyAwMCAgTS5YTDBCLnAuLi4uYy5jLgogICAgOTQ0MDogNEQgMzIgMzUg
MzQgOEMgNjMgMEEgMDIgNEQgMzIgMzUgMzUgOEEgNjMgMEEgMDMgIE0yNTQuYy4uTTI1NS5jLi4K
ICAgIDk0NTA6IDREIDMyIDM1IDM2IDcwIDAwIDREIDMyIDM1IDM2IDcwIDBBIDA3IDREIDMyIDM1
ICBNMjU2cC5NMjU2cC4uTTI1CiAgICA5NDYwOiAzNCA3MCAwQSAzMCA0RCAzMiAzNSAzNSBBMCA0
NCAxOCA1QiAxMiA1QyAyRSA1RiAgNHAuME0yNTUuRC5bLlwuXwogICAgOTQ3MDogNTMgNDIgNUYg
NDEgNEMgNDkgNDIgMDAgNEQgMzQgMzYgMzAgMEQgMjAgMjAgNEIgIFNCX0FMSUIuTTQ2MC4gIEsK
ICAgIDk0ODA6IDQ1IDUyIDJEIDQxIDUzIDRDIDJEIDQzIDYxIDZDIDZDIDIwIDVDIDVGIDUzIDQy
ICBFUi1BU0wtQ2FsbCBcX1NCCiAgICA5NDkwOiAyRSA0MSA0QyA0OSA0MiAyMCAyOCAzMCA3OCAz
MCA0MyAyQyAyMCAzMCA3OCAyNSAgLkFMSUIgKDB4MEMsIDB4JQogICAgOTRBMDogNTggMjkgMEEg
MDAgNjMgMDAgMDAgMDAgMDAgMDAgNzAgNUMgMkUgNUYgNTMgNDIgIFgpLi5jLi4uLi5wXC5fU0IK
ICAgIDk0QjA6IDVGIDQxIDRDIDQ5IDQyIDBBIDBDIDYzIDY0IDcwIDY0IDREIDM0IDQ0IDMyIDhB
ICBfQUxJQi4uY2RwZE00RDIuCiAgICA5NEMwOiA0RCAzNCA0NCAzMiAwMCA0RCAzNCA0NCAzMCA4
QSA0RCAzNCA0NCAzMiAwQSAwNCAgTTREMi5NNEQwLk00RDIuLgogICAgOTREMDogNEQgMzQgNDQg
MzEgOTkgNEQgMzQgNDQgMzAgNjAgOTkgNEQgMzQgNDQgMzEgNjEgIE00RDEuTTREMGAuTTREMWEK
ICAgIDk0RTA6IDREIDM0IDM2IDMwIDBEIDIwIDIwIDRCIDQ1IDUyIDJEIDQxIDUzIDRDIDJEIDQx
ICBNNDYwLiAgS0VSLUFTTC1BCiAgICA5NEYwOiA0QyA0OSA0MiAyMCA1MiA2NSA3NCA3NSA3MiA2
RSAyMCA0NCA2MSA3NCA2MSAyMCAgTElCIFJldHVybiBEYXRhIAogICAgOTUwMDogMjggMzAgNzgg
MjUgNTggMkMgMjAgMzAgNzggMjUgNTggMjkgMEEgMDAgNjAgNjEgICgweCVYLCAweCVYKS4uYGEK
ICAgIDk1MTA6IDAwIDAwIDAwIDAwIEEwIDQyIDA2IDkzIDYwIDAwIEEwIDRDIDA1IDVCIDEyIDVD
ICAuLi4uLkIuLmAuLkwuWy5cCiAgICA5NTIwOiAyRSA1RiA1MyA0MiA1RiA0MSA1MCA0MSA0NCAw
MCA3MCA2MSA4OCA1QyAyRiAwMyAgLl9TQl9BUEFELnBhLlwvLgogICAgOTUzMDogNUYgNTMgNDIg
NUYgNDEgNTAgNDEgNDQgNEQgMzQgMzQgMzYgMDEgMDAgNEQgMzQgIF9TQl9BUEFETTQ0Ni4uTTQK
ICAgIDk1NDA6IDM2IDMwIDBEIDIwIDIwIDRCIDQ1IDUyIDJEIDQxIDUzIDRDIDJEIDRFIDZGIDc0
ICA2MC4gIEtFUi1BU0wtTm90CiAgICA5NTUwOiA2OSA2NiA3OSAyMCA1QyA1RiA1MyA0MiAyRSA0
MSA1MCA0MSA0NCAyMCAzMCA3OCAgaWZ5IFxfU0IuQVBBRCAweAogICAgOTU2MDogMzggMzAgMEEg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgODYgNUMgMkUgNUYgNTMgNDIgIDgwLi4uLi4uLi4uXC5fU0IK
ICAgIDk1NzA6IDVGIDQxIDUwIDQxIDQ0IDBBIDgwIEExIDQ1IDA3IEEwIDMwIDkzIDYwIDAxIDRE
ICBfQVBBRC4uLkUuLjAuYC5NCiAgICA5NTgwOiAzNCAzNiAzMCAwRCAyMCAyMCA0QiA0NSA1MiAy
RCA0MSA1MyA0QyAyRCA0RSA2RiAgNDYwLiAgS0VSLUFTTC1ObwogICAgOTU5MDogNzQgNjkgNjYg
NzkgMjAgNUMgNUYgNTMgNDIgMkUgNDEgNTAgNDEgNDQgMjAgMzAgIHRpZnkgXF9TQi5BUEFEIDAK
ICAgIDk1QTA6IDc4IDM4IDM0IDBBIDAwIDAwIDAwIDAwIDAwIDAwIDAwIEExIDQxIDA0IEEwIDNF
ICB4ODQuLi4uLi4uLi5BLi4+CiAgICA5NUIwOiA5MyA2MCAwQSAwMiA0RCAzNCAzNiAzMCAwRCAy
MCAyMCA0QiA0NSA1MiAyRCA0MSAgLmAuLk00NjAuICBLRVItQQogICAgOTVDMDogNTMgNEMgMkQg
NEUgNkYgNzQgNjkgNjYgNzkgMjAgNUMgNUYgNTMgNDIgMkUgNDEgIFNMLU5vdGlmeSBcX1NCLkEK
ICAgIDk1RDA6IDUwIDQxIDQ0IDIwIDMwIDc4IDM4IDM1IDBBIDAwIDAwIDAwIDAwIDAwIDAwIDAw
ICBQQUQgMHg4NS4uLi4uLi4uCiAgICA5NUUwOiBBMCAwQyA1QiAxMiA0RSA0NiA1MCA0MyAwMCA0
RSA0NiA1MCA0MyAxMCA0MSAyNCAgLi5bLk5GUEMuTkZQQy5BJAogICAgOTVGMDogNUMgNUYgNTMg
NDIgNUYgMDggNEQgNDEgNDMgNEYgMDAgNUIgODIgNDIgMjMgNDEgIFxfU0JfLk1BQ08uWy5CI0EK
ICAgIDk2MDA6IDUwIDQxIDQ0IDA4IDVGIDQ4IDQ5IDQ0IDBEIDQxIDQzIDUwIDQ5IDMwIDMwIDMw
ICBQQUQuX0hJRC5BQ1BJMDAwCiAgICA5NjEwOiA0MyAwMCAwOCA0RCAzNCAzNCAzNiAxMiAwNCAw
MiAwMSAwMCAxNCA0MCAwRCA1RiAgQy4uTTQ0Ni4uLi4uLkAuXwogICAgOTYyMDogNTMgNTQgNDEg
MDAgQTAgNDcgMDkgNUMgNUYgNEYgNTMgNDkgMEQgNTAgNzIgNkYgIFNUQS4uRy5cX09TSS5Qcm8K
ICAgIDk2MzA6IDYzIDY1IDczIDczIDZGIDcyIDIwIDQxIDY3IDY3IDcyIDY1IDY3IDYxIDc0IDZG
ICBjZXNzb3IgQWdncmVnYXRvCiAgICA5NjQwOiA3MiAyMCA0NCA2NSA3NiA2OSA2MyA2NSAwMCA3
MCA0RCAzMCAzNCA0MSA0RCAzMSAgciBEZXZpY2UucE0wNEFNMQogICAgOTY1MDogMzIgMzggMEEg
OTEgNjAgQTAgMzcgOTMgN0IgNjAgMEEgODAgMDAgMEEgODAgNEQgIDI4Li5gLjcue2AuLi4uLk0K
ICAgIDk2NjA6IDM0IDM2IDMwIDBEIDIwIDIwIDRCIDQ1IDUyIDJEIDQxIDUzIDRDIDJEIDVDIDVG
ICA0NjAuICBLRVItQVNMLVxfCiAgICA5NjcwOiA1MyA0MiAyRSA0MSA1MCA0MSA0NCAyRSA1RiA1
MyA1NCA0MSAyMCAzRCAyMCAzMCAgU0IuQVBBRC5fU1RBID0gMAogICAgOTY4MDogNzggNDYgMEEg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgQTQgMEEgMEYgQTEgMkUgNEQgIHhGLi4uLi4uLi4uLi4uLk0K
ICAgIDk2OTA6IDM0IDM2IDMwIDBEIDIwIDIwIDRCIDQ1IDUyIDJEIDQxIDUzIDRDIDJEIDVDIDVG
ICA0NjAuICBLRVItQVNMLVxfCiAgICA5NkEwOiA1MyA0MiAyRSA0MSA1MCA0MSA0NCAyRSA1RiA1
MyA1NCA0MSAyMCAzRCAyMCAzMCAgU0IuQVBBRC5fU1RBID0gMAogICAgOTZCMDogNzggMzAgMEEg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgQTQgMDAgQTEgMzAgNEQgMzQgIHgwLi4uLi4uLi4uLi4wTTQK
ICAgIDk2QzA6IDM2IDMwIDBEIDIwIDIwIDRCIDQ1IDUyIDJEIDQxIDUzIDRDIDJEIDMxIDJEIDVD
ICA2MC4gIEtFUi1BU0wtMS1cCiAgICA5NkQwOiA1RiA1MyA0MiAyRSA0MSA1MCA0MSA0NCAyRSA1
RiA1MyA1NCA0MSAyMCAzRCAyMCAgX1NCLkFQQUQuX1NUQSA9IAogICAgOTZFMDogMzAgNzggMzAg
MEEgMDAgMDAgMDAgMDAgMDAgMDAgMDAgQTQgMDAgMTQgNDMgMEQgIDB4MC4uLi4uLi4uLi4uQy4K
ICAgIDk2RjA6IDVGIDQ5IDRFIDQ5IDAwIDREIDM0IDM2IDMwIDBEIDIwIDIwIDRCIDQ1IDUyIDJE
ICBfSU5JLk00NjAuICBLRVItCiAgICA5NzAwOiA0MSA1MyA0QyAyRCA1QyA1RiA1MyA0MiAyRSA0
MSA1MCA0MSA0NCAyRSA1RiA0OSAgQVNMLVxfU0IuQVBBRC5fSQogICAgOTcxMDogNEUgNDkgMEEg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgNzAgNEQgMzAgMzQgNDEgNEQgIE5JLi4uLi4uLi5wTTA0QU0K
ICAgIDk3MjA6IDMxIDMyIDM4IDBBIDkxIDYwIEEwIDRBIDA5IDkwIDkzIDdCIDYwIDBBIEMwIDAw
ICAxMjguLmAuSi4uLntgLi4uCiAgICA5NzMwOiAwQSBDMCA5MiA5MyA3QiA2MCAwQiAwMCBGRiAw
MCAwQiAwMCBGRiA3MCAxMSAwMyAgLi4uLntgLi4uLi4uLnAuLgogICAgOTc0MDogMEEgMDggNjMg
OEIgNjMgMDAgNEQgMzIgMzUgMzQgOEMgNjMgMEEgMDIgNEQgMzIgIC4uYy5jLk0yNTQuYy4uTTIK
ICAgIDk3NTA6IDM1IDM1IDhBIDYzIDBBIDAzIDREIDMyIDM1IDM2IDcwIDdBIDYwIDBBIDA4IDAw
ICA1NS5jLi5NMjU2cHpgLi4uCiAgICA5NzYwOiA0RCAzMiAzNSAzNiA3MCAwQSAwNyA0RCAzMiAz
NSAzNCA3MCAwQSAzMSA0RCAzMiAgTTI1NnAuLk0yNTRwLjFNMgogICAgOTc3MDogMzUgMzUgQTAg
NEUgMDQgNUIgMTIgNUMgMkUgNUYgNTMgNDIgNUYgNDEgNEMgNDkgIDU1Lk4uWy5cLl9TQl9BTEkK
ICAgIDk3ODA6IDQyIDAwIDREIDM0IDM2IDMwIDBEIDIwIDIwIDRCIDQ1IDUyIDJEIDQxIDUzIDRD
ICBCLk00NjAuICBLRVItQVNMCiAgICA5NzkwOiAyRCA0MyA2MSA2QyA2QyAyMCA1QyA1RiA1MyA0
MiAyRSA0MSA0QyA0OSA0MiAyMCAgLUNhbGwgXF9TQi5BTElCIAogICAgOTdBMDogMjggMzAgNzgg
MzAgNDMgMkMgMjAgMzAgNzggMjUgNTggMjkgMEEgMDAgNjMgMDAgICgweDBDLCAweCVYKS4uYy4K
ICAgIDk3QjA6IDAwIDAwIDAwIDAwIDVDIDJFIDVGIDUzIDQyIDVGIDQxIDRDIDQ5IDQyIDBBIDBD
ICAuLi4uXC5fU0JfQUxJQi4uCiAgICA5N0MwOiA2MyAxNCA0RCAwNiA1RiA1MCA1NSA1MiAwMCA5
OSA4MyA4OCA0RCAzNCAzNCAzNiAgYy5NLl9QVVIuLi4uTTQ0NgogICAgOTdEMDogMDAgMDAgNjAg
OTkgODMgODggNEQgMzQgMzQgMzYgMDEgMDAgNjEgNEQgMzQgMzYgIC4uYC4uLk00NDYuLmFNNDYK
ICAgIDk3RTA6IDMwIDBEIDIwIDIwIDRCIDQ1IDUyIDJEIDQxIDUzIDRDIDJEIDVDIDVGIDUzIDQy
ICAwLiAgS0VSLUFTTC1cX1NCCiAgICA5N0YwOiAyRSA0MSA1MCA0MSA0NCAyRSA1RiA1MCA1NSA1
MiAyMCA1MiA2NSA3NCA3NSA3MiAgLkFQQUQuX1BVUiBSZXR1cgogICAgOTgwMDogNkUgMjAgNTAg
NjEgNjMgNkIgNjEgNjcgNjUgMjAgMjggMzIgMjkgMjAgMjggMzAgIG4gUGFja2FnZSAoMikgKDAK
ICAgIDk4MTA6IDc4IDI1IDU4IDJDIDIwIDMwIDc4IDI1IDU4IDI5IDIwIDc0IDZGIDIwIDRGIDUz
ICB4JVgsIDB4JVgpIHRvIE9TCiAgICA5ODIwOiA1MCA0RCAwQSAwMCA2MCA2MSAwMCAwMCAwMCAw
MCBBNCA0RCAzNCAzNCAzNiAgICAgUE0uLmBhLi4uLi5NNDQ2Cgo=
--0000000000006f57f0060f47a720
Content-Type: application/octet-stream; name="working-tables.dump"
Content-Disposition: attachment; filename="working-tables.dump"
Content-Transfer-Encoding: base64
Content-ID: <f_lrkc3la53>
X-Attachment-Id: f_lrkc3la53

U1NEVCBAIDB4MDAwMDAwMDAwMDAwMDAwMAogICAgMDAwMDogNTMgNTMgNDQgNTQgNTMgMUIgMDAg
MDAgMDIgODMgNDEgNEQgNDQgMDAgMDAgMDAgIFNTRFRTLi4uLi5BTUQuLi4KICAgIDAwMTA6IDQz
IDUwIDREIDUyIDQxIDUzIDAwIDAwIDAxIDAwIDAwIDAwIDQ5IDRFIDU0IDRDICBDUE1SQVMuLi4u
Li5JTlRMCiAgICAwMDIwOiAzMSAwMyAyMyAyMCBBMCA0MyBBMiAwMCAxNSA1QyAyRiAwMyA1RiA1
MyA0MiA1RiAgMS4jIC5DLi4uXC8uX1NCXwogICAgMDAzMDogNTMgMzAgNDQgMzAgNDQgMzAgNDEg
MzAgMDYgMDAgMTUgNUMgMkYgMDMgNUYgNTMgIFMwRDBEMEEwLi4uXC8uX1MKICAgIDAwNDA6IDQy
IDVGIDUzIDMwIDQ0IDMwIDQ0IDMwIDQxIDMxIDA2IDAwIDE1IDVDIDJGIDAzICBCX1MwRDBEMEEx
Li4uXC8uCiAgICAwMDUwOiA1RiA1MyA0MiA1RiA1MyAzMCA0NCAzMCA0NCAzMCA0MSAzMiAwNiAw
MCAxNSA1QyAgX1NCX1MwRDBEMEEyLi4uXAogICAgMDA2MDogMkYgMDMgNUYgNTMgNDIgNUYgNTMg
MzAgNDQgMzAgNDQgMzAgNDEgMzMgMDYgMDAgIC8uX1NCX1MwRDBEMEEzLi4KICAgIDAwNzA6IDE1
IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUzIDMwIDQ0IDMwIDQ0IDMwIDQxIDM0ICAuXC8uX1NCX1Mw
RDBEMEE0CiAgICAwMDgwOiAwNiAwMCAxNSA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MyAzMCA0NCAz
MCA0NCAzMCAgLi4uXC8uX1NCX1MwRDBEMAogICAgMDA5MDogNDEgMzUgMDYgMDAgMTUgNUMgMkYg
MDMgNUYgNTMgNDIgNUYgNTMgMzAgNDQgMzAgIEE1Li4uXC8uX1NCX1MwRDAKICAgIDAwQTA6IDQ0
IDMwIDQxIDM2IDA2IDAwIDE1IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUzIDMwICBEMEE2Li4uXC8u
X1NCX1MwCiAgICAwMEIwOiA0NCAzMCA0NCAzMCA0MSAzNyAwNiAwMCAxNSA1QyAyRiAwMyA1RiA1
MyA0MiA1RiAgRDBEMEE3Li4uXC8uX1NCXwogICAgMDBDMDogNTMgMzAgNDQgMzAgNDQgMzAgNDEg
MzggMDYgMDAgMTUgNUMgMkYgMDMgNUYgNTMgIFMwRDBEMEE4Li4uXC8uX1MKICAgIDAwRDA6IDQy
IDVGIDUzIDMwIDQ0IDMwIDQ0IDMwIDQyIDMwIDA2IDAwIDE1IDVDIDJGIDAzICBCX1MwRDBEMEIw
Li4uXC8uCiAgICAwMEUwOiA1RiA1MyA0MiA1RiA1MyAzMCA0NCAzMCA0NCAzMCA0MiAzMSAwNiAw
MCAxNSA1QyAgX1NCX1MwRDBEMEIxLi4uXAogICAgMDBGMDogMkYgMDMgNUYgNTMgNDIgNUYgNTMg
MzAgNDQgMzAgNDQgMzAgNDIgMzIgMDYgMDAgIC8uX1NCX1MwRDBEMEIyLi4KICAgIDAxMDA6IDE1
IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUzIDMwIDQ0IDMwIDQ0IDMwIDQyIDMzICAuXC8uX1NCX1Mw
RDBEMEIzCiAgICAwMTEwOiAwNiAwMCAxNSA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MyAzMCA0NCAz
MCA0NCAzMCAgLi4uXC8uX1NCX1MwRDBEMAogICAgMDEyMDogNDIgMzQgMDYgMDAgMTUgNUMgMkYg
MDMgNUYgNTMgNDIgNUYgNTMgMzAgNDQgMzAgIEI0Li4uXC8uX1NCX1MwRDAKICAgIDAxMzA6IDQ0
IDMwIDQyIDM1IDA2IDAwIDE1IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUzIDMwICBEMEI1Li4uXC8u
X1NCX1MwCiAgICAwMTQwOiA0NCAzMCA0NCAzMCA0MiAzNiAwNiAwMCAxNSA1QyAyRiAwMyA1RiA1
MyA0MiA1RiAgRDBEMEI2Li4uXC8uX1NCXwogICAgMDE1MDogNTMgMzAgNDQgMzAgNDQgMzAgNDIg
MzcgMDYgMDAgMTUgNUMgMkYgMDMgNUYgNTMgIFMwRDBEMEI3Li4uXC8uX1MKICAgIDAxNjA6IDQy
IDVGIDUzIDMwIDQ0IDMwIDQ0IDMwIDQyIDM4IDA2IDAwIDE1IDVDIDJGIDAzICBCX1MwRDBEMEI4
Li4uXC8uCiAgICAwMTcwOiA1RiA1MyA0MiA1RiA1MyAzMCA0NCAzMSA0NCAzMSA0MSAzMCAwNiAw
MCAxNSA1QyAgX1NCX1MwRDFEMUEwLi4uXAogICAgMDE4MDogMkYgMDMgNUYgNTMgNDIgNUYgNTMg
MzAgNDQgMzEgNDQgMzEgNDEgMzEgMDYgMDAgIC8uX1NCX1MwRDFEMUExLi4KICAgIDAxOTA6IDE1
IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUzIDMwIDQ0IDMxIDQ0IDMxIDQxIDMyICAuXC8uX1NCX1Mw
RDFEMUEyCiAgICAwMUEwOiAwNiAwMCAxNSA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MyAzMCA0NCAz
MSA0NCAzMSAgLi4uXC8uX1NCX1MwRDFEMQogICAgMDFCMDogNDEgMzMgMDYgMDAgMTUgNUMgMkYg
MDMgNUYgNTMgNDIgNUYgNTMgMzAgNDQgMzEgIEEzLi4uXC8uX1NCX1MwRDEKICAgIDAxQzA6IDQ0
IDMxIDQxIDM0IDA2IDAwIDE1IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUzIDMwICBEMUE0Li4uXC8u
X1NCX1MwCiAgICAwMUQwOiA0NCAzMSA0NCAzMSA0MSAzNSAwNiAwMCAxNSA1QyAyRiAwMyA1RiA1
MyA0MiA1RiAgRDFEMUE1Li4uXC8uX1NCXwogICAgMDFFMDogNTMgMzAgNDQgMzEgNDQgMzEgNDEg
MzYgMDYgMDAgMTUgNUMgMkYgMDMgNUYgNTMgIFMwRDFEMUE2Li4uXC8uX1MKICAgIDAxRjA6IDQy
IDVGIDUzIDMwIDQ0IDMxIDQ0IDMxIDQxIDM3IDA2IDAwIDE1IDVDIDJGIDAzICBCX1MwRDFEMUE3
Li4uXC8uCiAgICAwMjAwOiA1RiA1MyA0MiA1RiA1MyAzMCA0NCAzMSA0NCAzMSA0MSAzOCAwNiAw
MCAxNSA1QyAgX1NCX1MwRDFEMUE4Li4uXAogICAgMDIxMDogMkYgMDMgNUYgNTMgNDIgNUYgNTMg
MzAgNDQgMzEgNDQgMzEgNDIgMzAgMDYgMDAgIC8uX1NCX1MwRDFEMUIwLi4KICAgIDAyMjA6IDE1
IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUzIDMwIDQ0IDMxIDQ0IDMxIDQyIDMxICAuXC8uX1NCX1Mw
RDFEMUIxCiAgICAwMjMwOiAwNiAwMCAxNSA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MyAzMCA0NCAz
MSA0NCAzMSAgLi4uXC8uX1NCX1MwRDFEMQogICAgMDI0MDogNDIgMzIgMDYgMDAgMTUgNUMgMkYg
MDMgNUYgNTMgNDIgNUYgNTMgMzAgNDQgMzEgIEIyLi4uXC8uX1NCX1MwRDEKICAgIDAyNTA6IDQ0
IDMxIDQyIDMzIDA2IDAwIDE1IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUzIDMwICBEMUIzLi4uXC8u
X1NCX1MwCiAgICAwMjYwOiA0NCAzMSA0NCAzMSA0MiAzNCAwNiAwMCAxNSA1QyAyRiAwMyA1RiA1
MyA0MiA1RiAgRDFEMUI0Li4uXC8uX1NCXwogICAgMDI3MDogNTMgMzAgNDQgMzEgNDQgMzEgNDIg
MzUgMDYgMDAgMTUgNUMgMkYgMDMgNUYgNTMgIFMwRDFEMUI1Li4uXC8uX1MKICAgIDAyODA6IDQy
IDVGIDUzIDMwIDQ0IDMxIDQ0IDMxIDQyIDM2IDA2IDAwIDE1IDVDIDJGIDAzICBCX1MwRDFEMUI2
Li4uXC8uCiAgICAwMjkwOiA1RiA1MyA0MiA1RiA1MyAzMCA0NCAzMSA0NCAzMSA0MiAzNyAwNiAw
MCAxNSA1QyAgX1NCX1MwRDFEMUI3Li4uXAogICAgMDJBMDogMkYgMDMgNUYgNTMgNDIgNUYgNTMg
MzAgNDQgMzEgNDQgMzEgNDIgMzggMDYgMDAgIC8uX1NCX1MwRDFEMUI4Li4KICAgIDAyQjA6IDE1
IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUzIDMwIDQ0IDMyIDQ0IDMyIDQxIDMwICAuXC8uX1NCX1Mw
RDJEMkEwCiAgICAwMkMwOiAwNiAwMCAxNSA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MyAzMCA0NCAz
MiA0NCAzMiAgLi4uXC8uX1NCX1MwRDJEMgogICAgMDJEMDogNDEgMzEgMDYgMDAgMTUgNUMgMkYg
MDMgNUYgNTMgNDIgNUYgNTMgMzAgNDQgMzIgIEExLi4uXC8uX1NCX1MwRDIKICAgIDAyRTA6IDQ0
IDMyIDQxIDMyIDA2IDAwIDE1IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUzIDMwICBEMkEyLi4uXC8u
X1NCX1MwCiAgICAwMkYwOiA0NCAzMiA0NCAzMiA0MSAzMyAwNiAwMCAxNSA1QyAyRiAwMyA1RiA1
MyA0MiA1RiAgRDJEMkEzLi4uXC8uX1NCXwogICAgMDMwMDogNTMgMzAgNDQgMzIgNDQgMzIgNDEg
MzQgMDYgMDAgMTUgNUMgMkYgMDMgNUYgNTMgIFMwRDJEMkE0Li4uXC8uX1MKICAgIDAzMTA6IDQy
IDVGIDUzIDMwIDQ0IDMyIDQ0IDMyIDQxIDM1IDA2IDAwIDE1IDVDIDJGIDAzICBCX1MwRDJEMkE1
Li4uXC8uCiAgICAwMzIwOiA1RiA1MyA0MiA1RiA1MyAzMCA0NCAzMiA0NCAzMiA0MSAzNiAwNiAw
MCAxNSA1QyAgX1NCX1MwRDJEMkE2Li4uXAogICAgMDMzMDogMkYgMDMgNUYgNTMgNDIgNUYgNTMg
MzAgNDQgMzIgNDQgMzIgNDEgMzcgMDYgMDAgIC8uX1NCX1MwRDJEMkE3Li4KICAgIDAzNDA6IDE1
IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUzIDMwIDQ0IDMyIDQ0IDMyIDQxIDM4ICAuXC8uX1NCX1Mw
RDJEMkE4CiAgICAwMzUwOiAwNiAwMCAxNSA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MyAzMCA0NCAz
MiA0NCAzMiAgLi4uXC8uX1NCX1MwRDJEMgogICAgMDM2MDogNDIgMzAgMDYgMDAgMTUgNUMgMkYg
MDMgNUYgNTMgNDIgNUYgNTMgMzAgNDQgMzIgIEIwLi4uXC8uX1NCX1MwRDIKICAgIDAzNzA6IDQ0
IDMyIDQyIDMxIDA2IDAwIDE1IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUzIDMwICBEMkIxLi4uXC8u
X1NCX1MwCiAgICAwMzgwOiA0NCAzMiA0NCAzMiA0MiAzMiAwNiAwMCAxNSA1QyAyRiAwMyA1RiA1
MyA0MiA1RiAgRDJEMkIyLi4uXC8uX1NCXwogICAgMDM5MDogNTMgMzAgNDQgMzIgNDQgMzIgNDIg
MzMgMDYgMDAgMTUgNUMgMkYgMDMgNUYgNTMgIFMwRDJEMkIzLi4uXC8uX1MKICAgIDAzQTA6IDQy
IDVGIDUzIDMwIDQ0IDMyIDQ0IDMyIDQyIDM0IDA2IDAwIDE1IDVDIDJGIDAzICBCX1MwRDJEMkI0
Li4uXC8uCiAgICAwM0IwOiA1RiA1MyA0MiA1RiA1MyAzMCA0NCAzMiA0NCAzMiA0MiAzNSAwNiAw
MCAxNSA1QyAgX1NCX1MwRDJEMkI1Li4uXAogICAgMDNDMDogMkYgMDMgNUYgNTMgNDIgNUYgNTMg
MzAgNDQgMzIgNDQgMzIgNDIgMzYgMDYgMDAgIC8uX1NCX1MwRDJEMkI2Li4KICAgIDAzRDA6IDE1
IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUzIDMwIDQ0IDMyIDQ0IDMyIDQyIDM3ICAuXC8uX1NCX1Mw
RDJEMkI3CiAgICAwM0UwOiAwNiAwMCAxNSA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MyAzMCA0NCAz
MiA0NCAzMiAgLi4uXC8uX1NCX1MwRDJEMgogICAgMDNGMDogNDIgMzggMDYgMDAgMTUgNUMgMkYg
MDMgNUYgNTMgNDIgNUYgNTAgNDMgNDkgMzAgIEI4Li4uXC8uX1NCX1BDSTAKICAgIDA0MDA6IDQ0
IDMzIDQxIDMwIDA2IDAwIDE1IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzICBEM0EwLi4uXC8u
X1NCX1BDCiAgICAwNDEwOiA0OSAzMCA0NCAzMyA0MSAzMSAwNiAwMCAxNSA1QyAyRiAwMyA1RiA1
MyA0MiA1RiAgSTBEM0ExLi4uXC8uX1NCXwogICAgMDQyMDogNTAgNDMgNDkgMzAgNDQgMzMgNDEg
MzIgMDYgMDAgMTUgNUMgMkYgMDMgNUYgNTMgIFBDSTBEM0EyLi4uXC8uX1MKICAgIDA0MzA6IDQy
IDVGIDUwIDQzIDQ5IDMwIDQ0IDMzIDQxIDMzIDA2IDAwIDE1IDVDIDJGIDAzICBCX1BDSTBEM0Ez
Li4uXC8uCiAgICAwNDQwOiA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMCA0NCAzMyA0MSAzNCAwNiAw
MCAxNSA1QyAgX1NCX1BDSTBEM0E0Li4uXAogICAgMDQ1MDogMkYgMDMgNUYgNTMgNDIgNUYgNTAg
NDMgNDkgMzAgNDQgMzMgNDEgMzUgMDYgMDAgIC8uX1NCX1BDSTBEM0E1Li4KICAgIDA0NjA6IDE1
IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMwIDQ0IDMzIDQxIDM2ICAuXC8uX1NCX1BD
STBEM0E2CiAgICAwNDcwOiAwNiAwMCAxNSA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAz
MCA0NCAzMyAgLi4uXC8uX1NCX1BDSTBEMwogICAgMDQ4MDogNDEgMzcgMDYgMDAgMTUgNUMgMkYg
MDMgNUYgNTMgNDIgNUYgNTAgNDMgNDkgMzAgIEE3Li4uXC8uX1NCX1BDSTAKICAgIDA0OTA6IDQ0
IDMzIDQxIDM4IDA2IDAwIDE1IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzICBEM0E4Li4uXC8u
X1NCX1BDCiAgICAwNEEwOiA0OSAzMCA0NCAzMyA0MiAzMCAwNiAwMCAxNSA1QyAyRiAwMyA1RiA1
MyA0MiA1RiAgSTBEM0IwLi4uXC8uX1NCXwogICAgMDRCMDogNTAgNDMgNDkgMzAgNDQgMzMgNDIg
MzEgMDYgMDAgMTUgNUMgMkYgMDMgNUYgNTMgIFBDSTBEM0IxLi4uXC8uX1MKICAgIDA0QzA6IDQy
IDVGIDUwIDQzIDQ5IDMwIDQ0IDMzIDQyIDMyIDA2IDAwIDE1IDVDIDJGIDAzICBCX1BDSTBEM0Iy
Li4uXC8uCiAgICAwNEQwOiA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMCA0NCAzMyA0MiAzMyAwNiAw
MCAxNSA1QyAgX1NCX1BDSTBEM0IzLi4uXAogICAgMDRFMDogMkYgMDMgNUYgNTMgNDIgNUYgNTAg
NDMgNDkgMzAgNDQgMzMgNDIgMzQgMDYgMDAgIC8uX1NCX1BDSTBEM0I0Li4KICAgIDA0RjA6IDE1
IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMwIDQ0IDMzIDQyIDM1ICAuXC8uX1NCX1BD
STBEM0I1CiAgICAwNTAwOiAwNiAwMCAxNSA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAz
MCA0NCAzMyAgLi4uXC8uX1NCX1BDSTBEMwogICAgMDUxMDogNDIgMzYgMDYgMDAgMTUgNUMgMkYg
MDMgNUYgNTMgNDIgNUYgNTAgNDMgNDkgMzAgIEI2Li4uXC8uX1NCX1BDSTAKICAgIDA1MjA6IDQ0
IDMzIDQyIDM3IDA2IDAwIDE1IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzICBEM0I3Li4uXC8u
X1NCX1BDCiAgICAwNTMwOiA0OSAzMCA0NCAzMyA0MiAzOCAwNiAwMCAxNSA1QyAyRiAwMyA1RiA1
MyA0MiA1RiAgSTBEM0I4Li4uXC8uX1NCXwogICAgMDU0MDogNTMgMzEgNDQgMzAgNDQgMzQgNDEg
MzAgMDYgMDAgMTUgNUMgMkYgMDMgNUYgNTMgIFMxRDBENEEwLi4uXC8uX1MKICAgIDA1NTA6IDQy
IDVGIDUzIDMxIDQ0IDMwIDQ0IDM0IDQxIDMxIDA2IDAwIDE1IDVDIDJGIDAzICBCX1MxRDBENEEx
Li4uXC8uCiAgICAwNTYwOiA1RiA1MyA0MiA1RiA1MyAzMSA0NCAzMCA0NCAzNCA0MSAzMiAwNiAw
MCAxNSA1QyAgX1NCX1MxRDBENEEyLi4uXAogICAgMDU3MDogMkYgMDMgNUYgNTMgNDIgNUYgNTMg
MzEgNDQgMzAgNDQgMzQgNDEgMzMgMDYgMDAgIC8uX1NCX1MxRDBENEEzLi4KICAgIDA1ODA6IDE1
IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUzIDMxIDQ0IDMwIDQ0IDM0IDQxIDM0ICAuXC8uX1NCX1Mx
RDBENEE0CiAgICAwNTkwOiAwNiAwMCAxNSA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MyAzMSA0NCAz
MCA0NCAzNCAgLi4uXC8uX1NCX1MxRDBENAogICAgMDVBMDogNDEgMzUgMDYgMDAgMTUgNUMgMkYg
MDMgNUYgNTMgNDIgNUYgNTMgMzEgNDQgMzAgIEE1Li4uXC8uX1NCX1MxRDAKICAgIDA1QjA6IDQ0
IDM0IDQxIDM2IDA2IDAwIDE1IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUzIDMxICBENEE2Li4uXC8u
X1NCX1MxCiAgICAwNUMwOiA0NCAzMCA0NCAzNCA0MSAzNyAwNiAwMCAxNSA1QyAyRiAwMyA1RiA1
MyA0MiA1RiAgRDBENEE3Li4uXC8uX1NCXwogICAgMDVEMDogNTMgMzEgNDQgMzAgNDQgMzQgNDEg
MzggMDYgMDAgMTUgNUMgMkYgMDMgNUYgNTMgIFMxRDBENEE4Li4uXC8uX1MKICAgIDA1RTA6IDQy
IDVGIDUzIDMxIDQ0IDMwIDQ0IDM0IDQyIDMwIDA2IDAwIDE1IDVDIDJGIDAzICBCX1MxRDBENEIw
Li4uXC8uCiAgICAwNUYwOiA1RiA1MyA0MiA1RiA1MyAzMSA0NCAzMCA0NCAzNCA0MiAzMSAwNiAw
MCAxNSA1QyAgX1NCX1MxRDBENEIxLi4uXAogICAgMDYwMDogMkYgMDMgNUYgNTMgNDIgNUYgNTMg
MzEgNDQgMzAgNDQgMzQgNDIgMzIgMDYgMDAgIC8uX1NCX1MxRDBENEIyLi4KICAgIDA2MTA6IDE1
IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUzIDMxIDQ0IDMwIDQ0IDM0IDQyIDMzICAuXC8uX1NCX1Mx
RDBENEIzCiAgICAwNjIwOiAwNiAwMCAxNSA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MyAzMSA0NCAz
MCA0NCAzNCAgLi4uXC8uX1NCX1MxRDBENAogICAgMDYzMDogNDIgMzQgMDYgMDAgMTUgNUMgMkYg
MDMgNUYgNTMgNDIgNUYgNTMgMzEgNDQgMzAgIEI0Li4uXC8uX1NCX1MxRDAKICAgIDA2NDA6IDQ0
IDM0IDQyIDM1IDA2IDAwIDE1IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUzIDMxICBENEI1Li4uXC8u
X1NCX1MxCiAgICAwNjUwOiA0NCAzMCA0NCAzNCA0MiAzNiAwNiAwMCAxNSA1QyAyRiAwMyA1RiA1
MyA0MiA1RiAgRDBENEI2Li4uXC8uX1NCXwogICAgMDY2MDogNTMgMzEgNDQgMzAgNDQgMzQgNDIg
MzcgMDYgMDAgMTUgNUMgMkYgMDMgNUYgNTMgIFMxRDBENEI3Li4uXC8uX1MKICAgIDA2NzA6IDQy
IDVGIDUzIDMxIDQ0IDMwIDQ0IDM0IDQyIDM4IDA2IDAwIDE1IDVDIDJGIDAzICBCX1MxRDBENEI4
Li4uXC8uCiAgICAwNjgwOiA1RiA1MyA0MiA1RiA1MyAzMSA0NCAzMSA0NCAzNSA0MSAzMCAwNiAw
MCAxNSA1QyAgX1NCX1MxRDFENUEwLi4uXAogICAgMDY5MDogMkYgMDMgNUYgNTMgNDIgNUYgNTMg
MzEgNDQgMzEgNDQgMzUgNDEgMzEgMDYgMDAgIC8uX1NCX1MxRDFENUExLi4KICAgIDA2QTA6IDE1
IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUzIDMxIDQ0IDMxIDQ0IDM1IDQxIDMyICAuXC8uX1NCX1Mx
RDFENUEyCiAgICAwNkIwOiAwNiAwMCAxNSA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MyAzMSA0NCAz
MSA0NCAzNSAgLi4uXC8uX1NCX1MxRDFENQogICAgMDZDMDogNDEgMzMgMDYgMDAgMTUgNUMgMkYg
MDMgNUYgNTMgNDIgNUYgNTMgMzEgNDQgMzEgIEEzLi4uXC8uX1NCX1MxRDEKICAgIDA2RDA6IDQ0
IDM1IDQxIDM0IDA2IDAwIDE1IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUzIDMxICBENUE0Li4uXC8u
X1NCX1MxCiAgICAwNkUwOiA0NCAzMSA0NCAzNSA0MSAzNSAwNiAwMCAxNSA1QyAyRiAwMyA1RiA1
MyA0MiA1RiAgRDFENUE1Li4uXC8uX1NCXwogICAgMDZGMDogNTMgMzEgNDQgMzEgNDQgMzUgNDEg
MzYgMDYgMDAgMTUgNUMgMkYgMDMgNUYgNTMgIFMxRDFENUE2Li4uXC8uX1MKICAgIDA3MDA6IDQy
IDVGIDUzIDMxIDQ0IDMxIDQ0IDM1IDQxIDM3IDA2IDAwIDE1IDVDIDJGIDAzICBCX1MxRDFENUE3
Li4uXC8uCiAgICAwNzEwOiA1RiA1MyA0MiA1RiA1MyAzMSA0NCAzMSA0NCAzNSA0MSAzOCAwNiAw
MCAxNSA1QyAgX1NCX1MxRDFENUE4Li4uXAogICAgMDcyMDogMkYgMDMgNUYgNTMgNDIgNUYgNTMg
MzEgNDQgMzEgNDQgMzUgNDIgMzAgMDYgMDAgIC8uX1NCX1MxRDFENUIwLi4KICAgIDA3MzA6IDE1
IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUzIDMxIDQ0IDMxIDQ0IDM1IDQyIDMxICAuXC8uX1NCX1Mx
RDFENUIxCiAgICAwNzQwOiAwNiAwMCAxNSA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MyAzMSA0NCAz
MSA0NCAzNSAgLi4uXC8uX1NCX1MxRDFENQogICAgMDc1MDogNDIgMzIgMDYgMDAgMTUgNUMgMkYg
MDMgNUYgNTMgNDIgNUYgNTMgMzEgNDQgMzEgIEIyLi4uXC8uX1NCX1MxRDEKICAgIDA3NjA6IDQ0
IDM1IDQyIDMzIDA2IDAwIDE1IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUzIDMxICBENUIzLi4uXC8u
X1NCX1MxCiAgICAwNzcwOiA0NCAzMSA0NCAzNSA0MiAzNCAwNiAwMCAxNSA1QyAyRiAwMyA1RiA1
MyA0MiA1RiAgRDFENUI0Li4uXC8uX1NCXwogICAgMDc4MDogNTMgMzEgNDQgMzEgNDQgMzUgNDIg
MzUgMDYgMDAgMTUgNUMgMkYgMDMgNUYgNTMgIFMxRDFENUI1Li4uXC8uX1MKICAgIDA3OTA6IDQy
IDVGIDUzIDMxIDQ0IDMxIDQ0IDM1IDQyIDM2IDA2IDAwIDE1IDVDIDJGIDAzICBCX1MxRDFENUI2
Li4uXC8uCiAgICAwN0EwOiA1RiA1MyA0MiA1RiA1MyAzMSA0NCAzMSA0NCAzNSA0MiAzNyAwNiAw
MCAxNSA1QyAgX1NCX1MxRDFENUI3Li4uXAogICAgMDdCMDogMkYgMDMgNUYgNTMgNDIgNUYgNTMg
MzEgNDQgMzEgNDQgMzUgNDIgMzggMDYgMDAgIC8uX1NCX1MxRDFENUI4Li4KICAgIDA3QzA6IDE1
IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUzIDMxIDQ0IDMyIDQ0IDM2IDQxIDMwICAuXC8uX1NCX1Mx
RDJENkEwCiAgICAwN0QwOiAwNiAwMCAxNSA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MyAzMSA0NCAz
MiA0NCAzNiAgLi4uXC8uX1NCX1MxRDJENgogICAgMDdFMDogNDEgMzEgMDYgMDAgMTUgNUMgMkYg
MDMgNUYgNTMgNDIgNUYgNTMgMzEgNDQgMzIgIEExLi4uXC8uX1NCX1MxRDIKICAgIDA3RjA6IDQ0
IDM2IDQxIDMyIDA2IDAwIDE1IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUzIDMxICBENkEyLi4uXC8u
X1NCX1MxCiAgICAwODAwOiA0NCAzMiA0NCAzNiA0MSAzMyAwNiAwMCAxNSA1QyAyRiAwMyA1RiA1
MyA0MiA1RiAgRDJENkEzLi4uXC8uX1NCXwogICAgMDgxMDogNTMgMzEgNDQgMzIgNDQgMzYgNDEg
MzQgMDYgMDAgMTUgNUMgMkYgMDMgNUYgNTMgIFMxRDJENkE0Li4uXC8uX1MKICAgIDA4MjA6IDQy
IDVGIDUzIDMxIDQ0IDMyIDQ0IDM2IDQxIDM1IDA2IDAwIDE1IDVDIDJGIDAzICBCX1MxRDJENkE1
Li4uXC8uCiAgICAwODMwOiA1RiA1MyA0MiA1RiA1MyAzMSA0NCAzMiA0NCAzNiA0MSAzNiAwNiAw
MCAxNSA1QyAgX1NCX1MxRDJENkE2Li4uXAogICAgMDg0MDogMkYgMDMgNUYgNTMgNDIgNUYgNTMg
MzEgNDQgMzIgNDQgMzYgNDEgMzcgMDYgMDAgIC8uX1NCX1MxRDJENkE3Li4KICAgIDA4NTA6IDE1
IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUzIDMxIDQ0IDMyIDQ0IDM2IDQxIDM4ICAuXC8uX1NCX1Mx
RDJENkE4CiAgICAwODYwOiAwNiAwMCAxNSA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MyAzMSA0NCAz
MiA0NCAzNiAgLi4uXC8uX1NCX1MxRDJENgogICAgMDg3MDogNDIgMzAgMDYgMDAgMTUgNUMgMkYg
MDMgNUYgNTMgNDIgNUYgNTMgMzEgNDQgMzIgIEIwLi4uXC8uX1NCX1MxRDIKICAgIDA4ODA6IDQ0
IDM2IDQyIDMxIDA2IDAwIDE1IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUzIDMxICBENkIxLi4uXC8u
X1NCX1MxCiAgICAwODkwOiA0NCAzMiA0NCAzNiA0MiAzMiAwNiAwMCAxNSA1QyAyRiAwMyA1RiA1
MyA0MiA1RiAgRDJENkIyLi4uXC8uX1NCXwogICAgMDhBMDogNTMgMzEgNDQgMzIgNDQgMzYgNDIg
MzMgMDYgMDAgMTUgNUMgMkYgMDMgNUYgNTMgIFMxRDJENkIzLi4uXC8uX1MKICAgIDA4QjA6IDQy
IDVGIDUzIDMxIDQ0IDMyIDQ0IDM2IDQyIDM0IDA2IDAwIDE1IDVDIDJGIDAzICBCX1MxRDJENkI0
Li4uXC8uCiAgICAwOEMwOiA1RiA1MyA0MiA1RiA1MyAzMSA0NCAzMiA0NCAzNiA0MiAzNSAwNiAw
MCAxNSA1QyAgX1NCX1MxRDJENkI1Li4uXAogICAgMDhEMDogMkYgMDMgNUYgNTMgNDIgNUYgNTMg
MzEgNDQgMzIgNDQgMzYgNDIgMzYgMDYgMDAgIC8uX1NCX1MxRDJENkI2Li4KICAgIDA4RTA6IDE1
IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUzIDMxIDQ0IDMyIDQ0IDM2IDQyIDM3ICAuXC8uX1NCX1Mx
RDJENkI3CiAgICAwOEYwOiAwNiAwMCAxNSA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MyAzMSA0NCAz
MiA0NCAzNiAgLi4uXC8uX1NCX1MxRDJENgogICAgMDkwMDogNDIgMzggMDYgMDAgMTUgNUMgMkYg
MDMgNUYgNTMgNDIgNUYgNTMgMzEgNDQgMzMgIEI4Li4uXC8uX1NCX1MxRDMKICAgIDA5MTA6IDQ0
IDM3IDQxIDMwIDA2IDAwIDE1IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUzIDMxICBEN0EwLi4uXC8u
X1NCX1MxCiAgICAwOTIwOiA0NCAzMyA0NCAzNyA0MSAzMSAwNiAwMCAxNSA1QyAyRiAwMyA1RiA1
MyA0MiA1RiAgRDNEN0ExLi4uXC8uX1NCXwogICAgMDkzMDogNTMgMzEgNDQgMzMgNDQgMzcgNDEg
MzIgMDYgMDAgMTUgNUMgMkYgMDMgNUYgNTMgIFMxRDNEN0EyLi4uXC8uX1MKICAgIDA5NDA6IDQy
IDVGIDUzIDMxIDQ0IDMzIDQ0IDM3IDQxIDMzIDA2IDAwIDE1IDVDIDJGIDAzICBCX1MxRDNEN0Ez
Li4uXC8uCiAgICAwOTUwOiA1RiA1MyA0MiA1RiA1MyAzMSA0NCAzMyA0NCAzNyA0MSAzNCAwNiAw
MCAxNSA1QyAgX1NCX1MxRDNEN0E0Li4uXAogICAgMDk2MDogMkYgMDMgNUYgNTMgNDIgNUYgNTMg
MzEgNDQgMzMgNDQgMzcgNDEgMzUgMDYgMDAgIC8uX1NCX1MxRDNEN0E1Li4KICAgIDA5NzA6IDE1
IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUzIDMxIDQ0IDMzIDQ0IDM3IDQxIDM2ICAuXC8uX1NCX1Mx
RDNEN0E2CiAgICAwOTgwOiAwNiAwMCAxNSA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MyAzMSA0NCAz
MyA0NCAzNyAgLi4uXC8uX1NCX1MxRDNENwogICAgMDk5MDogNDEgMzcgMDYgMDAgMTUgNUMgMkYg
MDMgNUYgNTMgNDIgNUYgNTMgMzEgNDQgMzMgIEE3Li4uXC8uX1NCX1MxRDMKICAgIDA5QTA6IDQ0
IDM3IDQxIDM4IDA2IDAwIDE1IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUzIDMxICBEN0E4Li4uXC8u
X1NCX1MxCiAgICAwOUIwOiA0NCAzMyA0NCAzNyA0MiAzMCAwNiAwMCAxNSA1QyAyRiAwMyA1RiA1
MyA0MiA1RiAgRDNEN0IwLi4uXC8uX1NCXwogICAgMDlDMDogNTMgMzEgNDQgMzMgNDQgMzcgNDIg
MzEgMDYgMDAgMTUgNUMgMkYgMDMgNUYgNTMgIFMxRDNEN0IxLi4uXC8uX1MKICAgIDA5RDA6IDQy
IDVGIDUzIDMxIDQ0IDMzIDQ0IDM3IDQyIDMyIDA2IDAwIDE1IDVDIDJGIDAzICBCX1MxRDNEN0Iy
Li4uXC8uCiAgICAwOUUwOiA1RiA1MyA0MiA1RiA1MyAzMSA0NCAzMyA0NCAzNyA0MiAzMyAwNiAw
MCAxNSA1QyAgX1NCX1MxRDNEN0IzLi4uXAogICAgMDlGMDogMkYgMDMgNUYgNTMgNDIgNUYgNTMg
MzEgNDQgMzMgNDQgMzcgNDIgMzQgMDYgMDAgIC8uX1NCX1MxRDNEN0I0Li4KICAgIDBBMDA6IDE1
IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUzIDMxIDQ0IDMzIDQ0IDM3IDQyIDM1ICAuXC8uX1NCX1Mx
RDNEN0I1CiAgICAwQTEwOiAwNiAwMCAxNSA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MyAzMSA0NCAz
MyA0NCAzNyAgLi4uXC8uX1NCX1MxRDNENwogICAgMEEyMDogNDIgMzYgMDYgMDAgMTUgNUMgMkYg
MDMgNUYgNTMgNDIgNUYgNTMgMzEgNDQgMzMgIEI2Li4uXC8uX1NCX1MxRDMKICAgIDBBMzA6IDQ0
IDM3IDQyIDM3IDA2IDAwIDE1IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUzIDMxICBEN0I3Li4uXC8u
X1NCX1MxCiAgICAwQTQwOiA0NCAzMyA0NCAzNyA0MiAzOCAwNiAwMCAxMCA0OSBGRiA1QyA1RiA0
NyA1MCA0NSAgRDNEN0I4Li4uSS5cX0dQRQogICAgMEE1MDogMTQgNDEgRkYgNUYgNEMgMzEgMzQg
MDAgQTAgMTQgOTMgNDQgNTIgNTAgNEUgMDAgIC5BLl9MMTQuLi4uRFJQTi4KICAgIDBBNjA6IDg2
IDVDIDJFIDVGIDUzIDQyIDVGIDQxIDQ1IDUyIDUyIDBBIDgwIEExIDRFIEZDICAuXC5fU0JfQUVS
Ui4uLk4uCiAgICAwQTcwOiA5NiA0NCA1MiA1MCA0RSA2MCA3MCA5QyA2MCBGRiAwMCA2MSBBMCAx
QiA5MyA2MSAgLkRSUE5gcC5gLi5hLi4uYQogICAgMEE4MDogMEQgNDQgMzAgNDEgMzAgMDAgODYg
NUMgMkYgMDMgNUYgNTMgNDIgNUYgNTMgMzAgIC5EMEEwLi5cLy5fU0JfUzAKICAgIDBBOTA6IDQ0
IDMwIDQ0IDMwIDQxIDMwIDBBIDBGIEEwIDFCIDkzIDYxIDBEIDQ0IDMwIDQxICBEMEQwQTAuLi4u
LmEuRDBBCiAgICAwQUEwOiAzMSAwMCA4NiA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MyAzMCA0NCAz
MCA0NCAzMCAgMS4uXC8uX1NCX1MwRDBEMAogICAgMEFCMDogNDEgMzEgMEEgMEYgQTAgMUIgOTMg
NjEgMEQgNDQgMzAgNDEgMzIgMDAgODYgNUMgIEExLi4uLi5hLkQwQTIuLlwKICAgIDBBQzA6IDJG
IDAzIDVGIDUzIDQyIDVGIDUzIDMwIDQ0IDMwIDQ0IDMwIDQxIDMyIDBBIDBGICAvLl9TQl9TMEQw
RDBBMi4uCiAgICAwQUQwOiBBMCAxQiA5MyA2MSAwRCA0NCAzMCA0MSAzMyAwMCA4NiA1QyAyRiAw
MyA1RiA1MyAgLi4uYS5EMEEzLi5cLy5fUwogICAgMEFFMDogNDIgNUYgNTMgMzAgNDQgMzAgNDQg
MzAgNDEgMzMgMEEgMEYgQTAgMUIgOTMgNjEgIEJfUzBEMEQwQTMuLi4uLmEKICAgIDBBRjA6IDBE
IDQ0IDMwIDQxIDM0IDAwIDg2IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUzIDMwICAuRDBBNC4uXC8u
X1NCX1MwCiAgICAwQjAwOiA0NCAzMCA0NCAzMCA0MSAzNCAwQSAwRiBBMCAxQiA5MyA2MSAwRCA0
NCAzMCA0MSAgRDBEMEE0Li4uLi5hLkQwQQogICAgMEIxMDogMzUgMDAgODYgNUMgMkYgMDMgNUYg
NTMgNDIgNUYgNTMgMzAgNDQgMzAgNDQgMzAgIDUuLlwvLl9TQl9TMEQwRDAKICAgIDBCMjA6IDQx
IDM1IDBBIDBGIEEwIDFCIDkzIDYxIDBEIDQ0IDMwIDQxIDM2IDAwIDg2IDVDICBBNS4uLi4uYS5E
MEE2Li5cCiAgICAwQjMwOiAyRiAwMyA1RiA1MyA0MiA1RiA1MyAzMCA0NCAzMCA0NCAzMCA0MSAz
NiAwQSAwRiAgLy5fU0JfUzBEMEQwQTYuLgogICAgMEI0MDogQTAgMUIgOTMgNjEgMEQgNDQgMzAg
NDEgMzcgMDAgODYgNUMgMkYgMDMgNUYgNTMgIC4uLmEuRDBBNy4uXC8uX1MKICAgIDBCNTA6IDQy
IDVGIDUzIDMwIDQ0IDMwIDQ0IDMwIDQxIDM3IDBBIDBGIEEwIDFCIDkzIDYxICBCX1MwRDBEMEE3
Li4uLi5hCiAgICAwQjYwOiAwRCA0NCAzMCA0MSAzOCAwMCA4NiA1QyAyRiAwMyA1RiA1MyA0MiA1
RiA1MyAzMCAgLkQwQTguLlwvLl9TQl9TMAogICAgMEI3MDogNDQgMzAgNDQgMzAgNDEgMzggMEEg
MEYgQTAgMUIgOTMgNjEgMEQgNDQgMzAgNDIgIEQwRDBBOC4uLi4uYS5EMEIKICAgIDBCODA6IDMw
IDAwIDg2IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUzIDMwIDQ0IDMwIDQ0IDMwICAwLi5cLy5fU0Jf
UzBEMEQwCiAgICAwQjkwOiA0MiAzMCAwQSAwRiBBMCAxQiA5MyA2MSAwRCA0NCAzMCA0MiAzMSAw
MCA4NiA1QyAgQjAuLi4uLmEuRDBCMS4uXAogICAgMEJBMDogMkYgMDMgNUYgNTMgNDIgNUYgNTMg
MzAgNDQgMzAgNDQgMzAgNDIgMzEgMEEgMEYgIC8uX1NCX1MwRDBEMEIxLi4KICAgIDBCQjA6IEEw
IDFCIDkzIDYxIDBEIDQ0IDMwIDQyIDMyIDAwIDg2IDVDIDJGIDAzIDVGIDUzICAuLi5hLkQwQjIu
LlwvLl9TCiAgICAwQkMwOiA0MiA1RiA1MyAzMCA0NCAzMCA0NCAzMCA0MiAzMiAwQSAwRiBBMCAx
QiA5MyA2MSAgQl9TMEQwRDBCMi4uLi4uYQogICAgMEJEMDogMEQgNDQgMzAgNDIgMzMgMDAgODYg
NUMgMkYgMDMgNUYgNTMgNDIgNUYgNTMgMzAgIC5EMEIzLi5cLy5fU0JfUzAKICAgIDBCRTA6IDQ0
IDMwIDQ0IDMwIDQyIDMzIDBBIDBGIEEwIDFCIDkzIDYxIDBEIDQ0IDMwIDQyICBEMEQwQjMuLi4u
LmEuRDBCCiAgICAwQkYwOiAzNCAwMCA4NiA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MyAzMCA0NCAz
MCA0NCAzMCAgNC4uXC8uX1NCX1MwRDBEMAogICAgMEMwMDogNDIgMzQgMEEgMEYgQTAgMUIgOTMg
NjEgMEQgNDQgMzAgNDIgMzUgMDAgODYgNUMgIEI0Li4uLi5hLkQwQjUuLlwKICAgIDBDMTA6IDJG
IDAzIDVGIDUzIDQyIDVGIDUzIDMwIDQ0IDMwIDQ0IDMwIDQyIDM1IDBBIDBGICAvLl9TQl9TMEQw
RDBCNS4uCiAgICAwQzIwOiBBMCAxQiA5MyA2MSAwRCA0NCAzMCA0MiAzNiAwMCA4NiA1QyAyRiAw
MyA1RiA1MyAgLi4uYS5EMEI2Li5cLy5fUwogICAgMEMzMDogNDIgNUYgNTMgMzAgNDQgMzAgNDQg
MzAgNDIgMzYgMEEgMEYgQTAgMUIgOTMgNjEgIEJfUzBEMEQwQjYuLi4uLmEKICAgIDBDNDA6IDBE
IDQ0IDMwIDQyIDM3IDAwIDg2IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUzIDMwICAuRDBCNy4uXC8u
X1NCX1MwCiAgICAwQzUwOiA0NCAzMCA0NCAzMCA0MiAzNyAwQSAwRiBBMCAxQiA5MyA2MSAwRCA0
NCAzMCA0MiAgRDBEMEI3Li4uLi5hLkQwQgogICAgMEM2MDogMzggMDAgODYgNUMgMkYgMDMgNUYg
NTMgNDIgNUYgNTMgMzAgNDQgMzAgNDQgMzAgIDguLlwvLl9TQl9TMEQwRDAKICAgIDBDNzA6IDQy
IDM4IDBBIDBGIEEwIDFCIDkzIDYxIDBEIDQ0IDMxIDQxIDMwIDAwIDg2IDVDICBCOC4uLi4uYS5E
MUEwLi5cCiAgICAwQzgwOiAyRiAwMyA1RiA1MyA0MiA1RiA1MyAzMCA0NCAzMSA0NCAzMSA0MSAz
MCAwQSAwRiAgLy5fU0JfUzBEMUQxQTAuLgogICAgMEM5MDogQTAgMUIgOTMgNjEgMEQgNDQgMzEg
NDEgMzEgMDAgODYgNUMgMkYgMDMgNUYgNTMgIC4uLmEuRDFBMS4uXC8uX1MKICAgIDBDQTA6IDQy
IDVGIDUzIDMwIDQ0IDMxIDQ0IDMxIDQxIDMxIDBBIDBGIEEwIDFCIDkzIDYxICBCX1MwRDFEMUEx
Li4uLi5hCiAgICAwQ0IwOiAwRCA0NCAzMSA0MSAzMiAwMCA4NiA1QyAyRiAwMyA1RiA1MyA0MiA1
RiA1MyAzMCAgLkQxQTIuLlwvLl9TQl9TMAogICAgMENDMDogNDQgMzEgNDQgMzEgNDEgMzIgMEEg
MEYgQTAgMUIgOTMgNjEgMEQgNDQgMzEgNDEgIEQxRDFBMi4uLi4uYS5EMUEKICAgIDBDRDA6IDMz
IDAwIDg2IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUzIDMwIDQ0IDMxIDQ0IDMxICAzLi5cLy5fU0Jf
UzBEMUQxCiAgICAwQ0UwOiA0MSAzMyAwQSAwRiBBMCAxQiA5MyA2MSAwRCA0NCAzMSA0MSAzNCAw
MCA4NiA1QyAgQTMuLi4uLmEuRDFBNC4uXAogICAgMENGMDogMkYgMDMgNUYgNTMgNDIgNUYgNTMg
MzAgNDQgMzEgNDQgMzEgNDEgMzQgMEEgMEYgIC8uX1NCX1MwRDFEMUE0Li4KICAgIDBEMDA6IEEw
IDFCIDkzIDYxIDBEIDQ0IDMxIDQxIDM1IDAwIDg2IDVDIDJGIDAzIDVGIDUzICAuLi5hLkQxQTUu
LlwvLl9TCiAgICAwRDEwOiA0MiA1RiA1MyAzMCA0NCAzMSA0NCAzMSA0MSAzNSAwQSAwRiBBMCAx
QiA5MyA2MSAgQl9TMEQxRDFBNS4uLi4uYQogICAgMEQyMDogMEQgNDQgMzEgNDEgMzYgMDAgODYg
NUMgMkYgMDMgNUYgNTMgNDIgNUYgNTMgMzAgIC5EMUE2Li5cLy5fU0JfUzAKICAgIDBEMzA6IDQ0
IDMxIDQ0IDMxIDQxIDM2IDBBIDBGIEEwIDFCIDkzIDYxIDBEIDQ0IDMxIDQxICBEMUQxQTYuLi4u
LmEuRDFBCiAgICAwRDQwOiAzNyAwMCA4NiA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MyAzMCA0NCAz
MSA0NCAzMSAgNy4uXC8uX1NCX1MwRDFEMQogICAgMEQ1MDogNDEgMzcgMEEgMEYgQTAgMUIgOTMg
NjEgMEQgNDQgMzEgNDEgMzggMDAgODYgNUMgIEE3Li4uLi5hLkQxQTguLlwKICAgIDBENjA6IDJG
IDAzIDVGIDUzIDQyIDVGIDUzIDMwIDQ0IDMxIDQ0IDMxIDQxIDM4IDBBIDBGICAvLl9TQl9TMEQx
RDFBOC4uCiAgICAwRDcwOiBBMCAxQiA5MyA2MSAwRCA0NCAzMSA0MiAzMCAwMCA4NiA1QyAyRiAw
MyA1RiA1MyAgLi4uYS5EMUIwLi5cLy5fUwogICAgMEQ4MDogNDIgNUYgNTMgMzAgNDQgMzEgNDQg
MzEgNDIgMzAgMEEgMEYgQTAgMUIgOTMgNjEgIEJfUzBEMUQxQjAuLi4uLmEKICAgIDBEOTA6IDBE
IDQ0IDMxIDQyIDMxIDAwIDg2IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUzIDMwICAuRDFCMS4uXC8u
X1NCX1MwCiAgICAwREEwOiA0NCAzMSA0NCAzMSA0MiAzMSAwQSAwRiBBMCAxQiA5MyA2MSAwRCA0
NCAzMSA0MiAgRDFEMUIxLi4uLi5hLkQxQgogICAgMERCMDogMzIgMDAgODYgNUMgMkYgMDMgNUYg
NTMgNDIgNUYgNTMgMzAgNDQgMzEgNDQgMzEgIDIuLlwvLl9TQl9TMEQxRDEKICAgIDBEQzA6IDQy
IDMyIDBBIDBGIEEwIDFCIDkzIDYxIDBEIDQ0IDMxIDQyIDMzIDAwIDg2IDVDICBCMi4uLi4uYS5E
MUIzLi5cCiAgICAwREQwOiAyRiAwMyA1RiA1MyA0MiA1RiA1MyAzMCA0NCAzMSA0NCAzMSA0MiAz
MyAwQSAwRiAgLy5fU0JfUzBEMUQxQjMuLgogICAgMERFMDogQTAgMUIgOTMgNjEgMEQgNDQgMzEg
NDIgMzQgMDAgODYgNUMgMkYgMDMgNUYgNTMgIC4uLmEuRDFCNC4uXC8uX1MKICAgIDBERjA6IDQy
IDVGIDUzIDMwIDQ0IDMxIDQ0IDMxIDQyIDM0IDBBIDBGIEEwIDFCIDkzIDYxICBCX1MwRDFEMUI0
Li4uLi5hCiAgICAwRTAwOiAwRCA0NCAzMSA0MiAzNSAwMCA4NiA1QyAyRiAwMyA1RiA1MyA0MiA1
RiA1MyAzMCAgLkQxQjUuLlwvLl9TQl9TMAogICAgMEUxMDogNDQgMzEgNDQgMzEgNDIgMzUgMEEg
MEYgQTAgMUIgOTMgNjEgMEQgNDQgMzEgNDIgIEQxRDFCNS4uLi4uYS5EMUIKICAgIDBFMjA6IDM2
IDAwIDg2IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUzIDMwIDQ0IDMxIDQ0IDMxICA2Li5cLy5fU0Jf
UzBEMUQxCiAgICAwRTMwOiA0MiAzNiAwQSAwRiBBMCAxQiA5MyA2MSAwRCA0NCAzMSA0MiAzNyAw
MCA4NiA1QyAgQjYuLi4uLmEuRDFCNy4uXAogICAgMEU0MDogMkYgMDMgNUYgNTMgNDIgNUYgNTMg
MzAgNDQgMzEgNDQgMzEgNDIgMzcgMEEgMEYgIC8uX1NCX1MwRDFEMUI3Li4KICAgIDBFNTA6IEEw
IDFCIDkzIDYxIDBEIDQ0IDMxIDQyIDM4IDAwIDg2IDVDIDJGIDAzIDVGIDUzICAuLi5hLkQxQjgu
LlwvLl9TCiAgICAwRTYwOiA0MiA1RiA1MyAzMCA0NCAzMSA0NCAzMSA0MiAzOCAwQSAwRiBBMCAx
QiA5MyA2MSAgQl9TMEQxRDFCOC4uLi4uYQogICAgMEU3MDogMEQgNDQgMzIgNDEgMzAgMDAgODYg
NUMgMkYgMDMgNUYgNTMgNDIgNUYgNTMgMzAgIC5EMkEwLi5cLy5fU0JfUzAKICAgIDBFODA6IDQ0
IDMyIDQ0IDMyIDQxIDMwIDBBIDBGIEEwIDFCIDkzIDYxIDBEIDQ0IDMyIDQxICBEMkQyQTAuLi4u
LmEuRDJBCiAgICAwRTkwOiAzMSAwMCA4NiA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MyAzMCA0NCAz
MiA0NCAzMiAgMS4uXC8uX1NCX1MwRDJEMgogICAgMEVBMDogNDEgMzEgMEEgMEYgQTAgMUIgOTMg
NjEgMEQgNDQgMzIgNDEgMzIgMDAgODYgNUMgIEExLi4uLi5hLkQyQTIuLlwKICAgIDBFQjA6IDJG
IDAzIDVGIDUzIDQyIDVGIDUzIDMwIDQ0IDMyIDQ0IDMyIDQxIDMyIDBBIDBGICAvLl9TQl9TMEQy
RDJBMi4uCiAgICAwRUMwOiBBMCAxQiA5MyA2MSAwRCA0NCAzMiA0MSAzMyAwMCA4NiA1QyAyRiAw
MyA1RiA1MyAgLi4uYS5EMkEzLi5cLy5fUwogICAgMEVEMDogNDIgNUYgNTMgMzAgNDQgMzIgNDQg
MzIgNDEgMzMgMEEgMEYgQTAgMUIgOTMgNjEgIEJfUzBEMkQyQTMuLi4uLmEKICAgIDBFRTA6IDBE
IDQ0IDMyIDQxIDM0IDAwIDg2IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUzIDMwICAuRDJBNC4uXC8u
X1NCX1MwCiAgICAwRUYwOiA0NCAzMiA0NCAzMiA0MSAzNCAwQSAwRiBBMCAxQiA5MyA2MSAwRCA0
NCAzMiA0MSAgRDJEMkE0Li4uLi5hLkQyQQogICAgMEYwMDogMzUgMDAgODYgNUMgMkYgMDMgNUYg
NTMgNDIgNUYgNTMgMzAgNDQgMzIgNDQgMzIgIDUuLlwvLl9TQl9TMEQyRDIKICAgIDBGMTA6IDQx
IDM1IDBBIDBGIEEwIDFCIDkzIDYxIDBEIDQ0IDMyIDQxIDM2IDAwIDg2IDVDICBBNS4uLi4uYS5E
MkE2Li5cCiAgICAwRjIwOiAyRiAwMyA1RiA1MyA0MiA1RiA1MyAzMCA0NCAzMiA0NCAzMiA0MSAz
NiAwQSAwRiAgLy5fU0JfUzBEMkQyQTYuLgogICAgMEYzMDogQTAgMUIgOTMgNjEgMEQgNDQgMzIg
NDEgMzcgMDAgODYgNUMgMkYgMDMgNUYgNTMgIC4uLmEuRDJBNy4uXC8uX1MKICAgIDBGNDA6IDQy
IDVGIDUzIDMwIDQ0IDMyIDQ0IDMyIDQxIDM3IDBBIDBGIEEwIDFCIDkzIDYxICBCX1MwRDJEMkE3
Li4uLi5hCiAgICAwRjUwOiAwRCA0NCAzMiA0MSAzOCAwMCA4NiA1QyAyRiAwMyA1RiA1MyA0MiA1
RiA1MyAzMCAgLkQyQTguLlwvLl9TQl9TMAogICAgMEY2MDogNDQgMzIgNDQgMzIgNDEgMzggMEEg
MEYgQTAgMUIgOTMgNjEgMEQgNDQgMzIgNDIgIEQyRDJBOC4uLi4uYS5EMkIKICAgIDBGNzA6IDMw
IDAwIDg2IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUzIDMwIDQ0IDMyIDQ0IDMyICAwLi5cLy5fU0Jf
UzBEMkQyCiAgICAwRjgwOiA0MiAzMCAwQSAwRiBBMCAxQiA5MyA2MSAwRCA0NCAzMiA0MiAzMSAw
MCA4NiA1QyAgQjAuLi4uLmEuRDJCMS4uXAogICAgMEY5MDogMkYgMDMgNUYgNTMgNDIgNUYgNTMg
MzAgNDQgMzIgNDQgMzIgNDIgMzEgMEEgMEYgIC8uX1NCX1MwRDJEMkIxLi4KICAgIDBGQTA6IEEw
IDFCIDkzIDYxIDBEIDQ0IDMyIDQyIDMyIDAwIDg2IDVDIDJGIDAzIDVGIDUzICAuLi5hLkQyQjIu
LlwvLl9TCiAgICAwRkIwOiA0MiA1RiA1MyAzMCA0NCAzMiA0NCAzMiA0MiAzMiAwQSAwRiBBMCAx
QiA5MyA2MSAgQl9TMEQyRDJCMi4uLi4uYQogICAgMEZDMDogMEQgNDQgMzIgNDIgMzMgMDAgODYg
NUMgMkYgMDMgNUYgNTMgNDIgNUYgNTMgMzAgIC5EMkIzLi5cLy5fU0JfUzAKICAgIDBGRDA6IDQ0
IDMyIDQ0IDMyIDQyIDMzIDBBIDBGIEEwIDFCIDkzIDYxIDBEIDQ0IDMyIDQyICBEMkQyQjMuLi4u
LmEuRDJCCiAgICAwRkUwOiAzNCAwMCA4NiA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MyAzMCA0NCAz
MiA0NCAzMiAgNC4uXC8uX1NCX1MwRDJEMgogICAgMEZGMDogNDIgMzQgMEEgMEYgQTAgMUIgOTMg
NjEgMEQgNDQgMzIgNDIgMzUgMDAgODYgNUMgIEI0Li4uLi5hLkQyQjUuLlwKICAgIDEwMDA6IDJG
IDAzIDVGIDUzIDQyIDVGIDUzIDMwIDQ0IDMyIDQ0IDMyIDQyIDM1IDBBIDBGICAvLl9TQl9TMEQy
RDJCNS4uCiAgICAxMDEwOiBBMCAxQiA5MyA2MSAwRCA0NCAzMiA0MiAzNiAwMCA4NiA1QyAyRiAw
MyA1RiA1MyAgLi4uYS5EMkI2Li5cLy5fUwogICAgMTAyMDogNDIgNUYgNTMgMzAgNDQgMzIgNDQg
MzIgNDIgMzYgMEEgMEYgQTAgMUIgOTMgNjEgIEJfUzBEMkQyQjYuLi4uLmEKICAgIDEwMzA6IDBE
IDQ0IDMyIDQyIDM3IDAwIDg2IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUzIDMwICAuRDJCNy4uXC8u
X1NCX1MwCiAgICAxMDQwOiA0NCAzMiA0NCAzMiA0MiAzNyAwQSAwRiBBMCAxQiA5MyA2MSAwRCA0
NCAzMiA0MiAgRDJEMkI3Li4uLi5hLkQyQgogICAgMTA1MDogMzggMDAgODYgNUMgMkYgMDMgNUYg
NTMgNDIgNUYgNTMgMzAgNDQgMzIgNDQgMzIgIDguLlwvLl9TQl9TMEQyRDIKICAgIDEwNjA6IDQy
IDM4IDBBIDBGIEEwIDFCIDkzIDYxIDBEIDQ0IDMzIDQxIDMwIDAwIDg2IDVDICBCOC4uLi4uYS5E
M0EwLi5cCiAgICAxMDcwOiAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMCA0NCAzMyA0MSAz
MCAwQSAwRiAgLy5fU0JfUENJMEQzQTAuLgogICAgMTA4MDogQTAgMUIgOTMgNjEgMEQgNDQgMzMg
NDEgMzEgMDAgODYgNUMgMkYgMDMgNUYgNTMgIC4uLmEuRDNBMS4uXC8uX1MKICAgIDEwOTA6IDQy
IDVGIDUwIDQzIDQ5IDMwIDQ0IDMzIDQxIDMxIDBBIDBGIEEwIDFCIDkzIDYxICBCX1BDSTBEM0Ex
Li4uLi5hCiAgICAxMEEwOiAwRCA0NCAzMyA0MSAzMiAwMCA4NiA1QyAyRiAwMyA1RiA1MyA0MiA1
RiA1MCA0MyAgLkQzQTIuLlwvLl9TQl9QQwogICAgMTBCMDogNDkgMzAgNDQgMzMgNDEgMzIgMEEg
MEYgQTAgMUIgOTMgNjEgMEQgNDQgMzMgNDEgIEkwRDNBMi4uLi4uYS5EM0EKICAgIDEwQzA6IDMz
IDAwIDg2IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMwIDQ0IDMzICAzLi5cLy5fU0Jf
UENJMEQzCiAgICAxMEQwOiA0MSAzMyAwQSAwRiBBMCAxQiA5MyA2MSAwRCA0NCAzMyA0MSAzNCAw
MCA4NiA1QyAgQTMuLi4uLmEuRDNBNC4uXAogICAgMTBFMDogMkYgMDMgNUYgNTMgNDIgNUYgNTAg
NDMgNDkgMzAgNDQgMzMgNDEgMzQgMEEgMEYgIC8uX1NCX1BDSTBEM0E0Li4KICAgIDEwRjA6IEEw
IDFCIDkzIDYxIDBEIDQ0IDMzIDQxIDM1IDAwIDg2IDVDIDJGIDAzIDVGIDUzICAuLi5hLkQzQTUu
LlwvLl9TCiAgICAxMTAwOiA0MiA1RiA1MCA0MyA0OSAzMCA0NCAzMyA0MSAzNSAwQSAwRiBBMCAx
QiA5MyA2MSAgQl9QQ0kwRDNBNS4uLi4uYQogICAgMTExMDogMEQgNDQgMzMgNDEgMzYgMDAgODYg
NUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAgNDMgIC5EM0E2Li5cLy5fU0JfUEMKICAgIDExMjA6IDQ5
IDMwIDQ0IDMzIDQxIDM2IDBBIDBGIEEwIDFCIDkzIDYxIDBEIDQ0IDMzIDQxICBJMEQzQTYuLi4u
LmEuRDNBCiAgICAxMTMwOiAzNyAwMCA4NiA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAz
MCA0NCAzMyAgNy4uXC8uX1NCX1BDSTBEMwogICAgMTE0MDogNDEgMzcgMEEgMEYgQTAgMUIgOTMg
NjEgMEQgNDQgMzMgNDEgMzggMDAgODYgNUMgIEE3Li4uLi5hLkQzQTguLlwKICAgIDExNTA6IDJG
IDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMwIDQ0IDMzIDQxIDM4IDBBIDBGICAvLl9TQl9QQ0kw
RDNBOC4uCiAgICAxMTYwOiBBMCAxQiA5MyA2MSAwRCA0NCAzMyA0MiAzMCAwMCA4NiA1QyAyRiAw
MyA1RiA1MyAgLi4uYS5EM0IwLi5cLy5fUwogICAgMTE3MDogNDIgNUYgNTAgNDMgNDkgMzAgNDQg
MzMgNDIgMzAgMEEgMEYgQTAgMUIgOTMgNjEgIEJfUENJMEQzQjAuLi4uLmEKICAgIDExODA6IDBE
IDQ0IDMzIDQyIDMxIDAwIDg2IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzICAuRDNCMS4uXC8u
X1NCX1BDCiAgICAxMTkwOiA0OSAzMCA0NCAzMyA0MiAzMSAwQSAwRiBBMCAxQiA5MyA2MSAwRCA0
NCAzMyA0MiAgSTBEM0IxLi4uLi5hLkQzQgogICAgMTFBMDogMzIgMDAgODYgNUMgMkYgMDMgNUYg
NTMgNDIgNUYgNTAgNDMgNDkgMzAgNDQgMzMgIDIuLlwvLl9TQl9QQ0kwRDMKICAgIDExQjA6IDQy
IDMyIDBBIDBGIEEwIDFCIDkzIDYxIDBEIDQ0IDMzIDQyIDMzIDAwIDg2IDVDICBCMi4uLi4uYS5E
M0IzLi5cCiAgICAxMUMwOiAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMCA0NCAzMyA0MiAz
MyAwQSAwRiAgLy5fU0JfUENJMEQzQjMuLgogICAgMTFEMDogQTAgMUIgOTMgNjEgMEQgNDQgMzMg
NDIgMzQgMDAgODYgNUMgMkYgMDMgNUYgNTMgIC4uLmEuRDNCNC4uXC8uX1MKICAgIDExRTA6IDQy
IDVGIDUwIDQzIDQ5IDMwIDQ0IDMzIDQyIDM0IDBBIDBGIEEwIDFCIDkzIDYxICBCX1BDSTBEM0I0
Li4uLi5hCiAgICAxMUYwOiAwRCA0NCAzMyA0MiAzNSAwMCA4NiA1QyAyRiAwMyA1RiA1MyA0MiA1
RiA1MCA0MyAgLkQzQjUuLlwvLl9TQl9QQwogICAgMTIwMDogNDkgMzAgNDQgMzMgNDIgMzUgMEEg
MEYgQTAgMUIgOTMgNjEgMEQgNDQgMzMgNDIgIEkwRDNCNS4uLi4uYS5EM0IKICAgIDEyMTA6IDM2
IDAwIDg2IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMwIDQ0IDMzICA2Li5cLy5fU0Jf
UENJMEQzCiAgICAxMjIwOiA0MiAzNiAwQSAwRiBBMCAxQiA5MyA2MSAwRCA0NCAzMyA0MiAzNyAw
MCA4NiA1QyAgQjYuLi4uLmEuRDNCNy4uXAogICAgMTIzMDogMkYgMDMgNUYgNTMgNDIgNUYgNTAg
NDMgNDkgMzAgNDQgMzMgNDIgMzcgMEEgMEYgIC8uX1NCX1BDSTBEM0I3Li4KICAgIDEyNDA6IEEw
IDFCIDkzIDYxIDBEIDQ0IDMzIDQyIDM4IDAwIDg2IDVDIDJGIDAzIDVGIDUzICAuLi5hLkQzQjgu
LlwvLl9TCiAgICAxMjUwOiA0MiA1RiA1MCA0MyA0OSAzMCA0NCAzMyA0MiAzOCAwQSAwRiBBMCAx
QiA5MyA2MSAgQl9QQ0kwRDNCOC4uLi4uYQogICAgMTI2MDogMEQgNDQgMzQgNDEgMzAgMDAgODYg
NUMgMkYgMDMgNUYgNTMgNDIgNUYgNTMgMzEgIC5ENEEwLi5cLy5fU0JfUzEKICAgIDEyNzA6IDQ0
IDMwIDQ0IDM0IDQxIDMwIDBBIDBGIEEwIDFCIDkzIDYxIDBEIDQ0IDM0IDQxICBEMEQ0QTAuLi4u
LmEuRDRBCiAgICAxMjgwOiAzMSAwMCA4NiA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MyAzMSA0NCAz
MCA0NCAzNCAgMS4uXC8uX1NCX1MxRDBENAogICAgMTI5MDogNDEgMzEgMEEgMEYgQTAgMUIgOTMg
NjEgMEQgNDQgMzQgNDEgMzIgMDAgODYgNUMgIEExLi4uLi5hLkQ0QTIuLlwKICAgIDEyQTA6IDJG
IDAzIDVGIDUzIDQyIDVGIDUzIDMxIDQ0IDMwIDQ0IDM0IDQxIDMyIDBBIDBGICAvLl9TQl9TMUQw
RDRBMi4uCiAgICAxMkIwOiBBMCAxQiA5MyA2MSAwRCA0NCAzNCA0MSAzMyAwMCA4NiA1QyAyRiAw
MyA1RiA1MyAgLi4uYS5ENEEzLi5cLy5fUwogICAgMTJDMDogNDIgNUYgNTMgMzEgNDQgMzAgNDQg
MzQgNDEgMzMgMEEgMEYgQTAgMUIgOTMgNjEgIEJfUzFEMEQ0QTMuLi4uLmEKICAgIDEyRDA6IDBE
IDQ0IDM0IDQxIDM0IDAwIDg2IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUzIDMxICAuRDRBNC4uXC8u
X1NCX1MxCiAgICAxMkUwOiA0NCAzMCA0NCAzNCA0MSAzNCAwQSAwRiBBMCAxQiA5MyA2MSAwRCA0
NCAzNCA0MSAgRDBENEE0Li4uLi5hLkQ0QQogICAgMTJGMDogMzUgMDAgODYgNUMgMkYgMDMgNUYg
NTMgNDIgNUYgNTMgMzEgNDQgMzAgNDQgMzQgIDUuLlwvLl9TQl9TMUQwRDQKICAgIDEzMDA6IDQx
IDM1IDBBIDBGIEEwIDFCIDkzIDYxIDBEIDQ0IDM0IDQxIDM2IDAwIDg2IDVDICBBNS4uLi4uYS5E
NEE2Li5cCiAgICAxMzEwOiAyRiAwMyA1RiA1MyA0MiA1RiA1MyAzMSA0NCAzMCA0NCAzNCA0MSAz
NiAwQSAwRiAgLy5fU0JfUzFEMEQ0QTYuLgogICAgMTMyMDogQTAgMUIgOTMgNjEgMEQgNDQgMzQg
NDEgMzcgMDAgODYgNUMgMkYgMDMgNUYgNTMgIC4uLmEuRDRBNy4uXC8uX1MKICAgIDEzMzA6IDQy
IDVGIDUzIDMxIDQ0IDMwIDQ0IDM0IDQxIDM3IDBBIDBGIEEwIDFCIDkzIDYxICBCX1MxRDBENEE3
Li4uLi5hCiAgICAxMzQwOiAwRCA0NCAzNCA0MSAzOCAwMCA4NiA1QyAyRiAwMyA1RiA1MyA0MiA1
RiA1MyAzMSAgLkQ0QTguLlwvLl9TQl9TMQogICAgMTM1MDogNDQgMzAgNDQgMzQgNDEgMzggMEEg
MEYgQTAgMUIgOTMgNjEgMEQgNDQgMzQgNDIgIEQwRDRBOC4uLi4uYS5ENEIKICAgIDEzNjA6IDMw
IDAwIDg2IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUzIDMxIDQ0IDMwIDQ0IDM0ICAwLi5cLy5fU0Jf
UzFEMEQ0CiAgICAxMzcwOiA0MiAzMCAwQSAwRiBBMCAxQiA5MyA2MSAwRCA0NCAzNCA0MiAzMSAw
MCA4NiA1QyAgQjAuLi4uLmEuRDRCMS4uXAogICAgMTM4MDogMkYgMDMgNUYgNTMgNDIgNUYgNTMg
MzEgNDQgMzAgNDQgMzQgNDIgMzEgMEEgMEYgIC8uX1NCX1MxRDBENEIxLi4KICAgIDEzOTA6IEEw
IDFCIDkzIDYxIDBEIDQ0IDM0IDQyIDMyIDAwIDg2IDVDIDJGIDAzIDVGIDUzICAuLi5hLkQ0QjIu
LlwvLl9TCiAgICAxM0EwOiA0MiA1RiA1MyAzMSA0NCAzMCA0NCAzNCA0MiAzMiAwQSAwRiBBMCAx
QiA5MyA2MSAgQl9TMUQwRDRCMi4uLi4uYQogICAgMTNCMDogMEQgNDQgMzQgNDIgMzMgMDAgODYg
NUMgMkYgMDMgNUYgNTMgNDIgNUYgNTMgMzEgIC5ENEIzLi5cLy5fU0JfUzEKICAgIDEzQzA6IDQ0
IDMwIDQ0IDM0IDQyIDMzIDBBIDBGIEEwIDFCIDkzIDYxIDBEIDQ0IDM0IDQyICBEMEQ0QjMuLi4u
LmEuRDRCCiAgICAxM0QwOiAzNCAwMCA4NiA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MyAzMSA0NCAz
MCA0NCAzNCAgNC4uXC8uX1NCX1MxRDBENAogICAgMTNFMDogNDIgMzQgMEEgMEYgQTAgMUIgOTMg
NjEgMEQgNDQgMzQgNDIgMzUgMDAgODYgNUMgIEI0Li4uLi5hLkQ0QjUuLlwKICAgIDEzRjA6IDJG
IDAzIDVGIDUzIDQyIDVGIDUzIDMxIDQ0IDMwIDQ0IDM0IDQyIDM1IDBBIDBGICAvLl9TQl9TMUQw
RDRCNS4uCiAgICAxNDAwOiBBMCAxQiA5MyA2MSAwRCA0NCAzNCA0MiAzNiAwMCA4NiA1QyAyRiAw
MyA1RiA1MyAgLi4uYS5ENEI2Li5cLy5fUwogICAgMTQxMDogNDIgNUYgNTMgMzEgNDQgMzAgNDQg
MzQgNDIgMzYgMEEgMEYgQTAgMUIgOTMgNjEgIEJfUzFEMEQ0QjYuLi4uLmEKICAgIDE0MjA6IDBE
IDQ0IDM0IDQyIDM3IDAwIDg2IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUzIDMxICAuRDRCNy4uXC8u
X1NCX1MxCiAgICAxNDMwOiA0NCAzMCA0NCAzNCA0MiAzNyAwQSAwRiBBMCAxQiA5MyA2MSAwRCA0
NCAzNCA0MiAgRDBENEI3Li4uLi5hLkQ0QgogICAgMTQ0MDogMzggMDAgODYgNUMgMkYgMDMgNUYg
NTMgNDIgNUYgNTMgMzEgNDQgMzAgNDQgMzQgIDguLlwvLl9TQl9TMUQwRDQKICAgIDE0NTA6IDQy
IDM4IDBBIDBGIEEwIDFCIDkzIDYxIDBEIDQ0IDM1IDQxIDMwIDAwIDg2IDVDICBCOC4uLi4uYS5E
NUEwLi5cCiAgICAxNDYwOiAyRiAwMyA1RiA1MyA0MiA1RiA1MyAzMSA0NCAzMSA0NCAzNSA0MSAz
MCAwQSAwRiAgLy5fU0JfUzFEMUQ1QTAuLgogICAgMTQ3MDogQTAgMUIgOTMgNjEgMEQgNDQgMzUg
NDEgMzEgMDAgODYgNUMgMkYgMDMgNUYgNTMgIC4uLmEuRDVBMS4uXC8uX1MKICAgIDE0ODA6IDQy
IDVGIDUzIDMxIDQ0IDMxIDQ0IDM1IDQxIDMxIDBBIDBGIEEwIDFCIDkzIDYxICBCX1MxRDFENUEx
Li4uLi5hCiAgICAxNDkwOiAwRCA0NCAzNSA0MSAzMiAwMCA4NiA1QyAyRiAwMyA1RiA1MyA0MiA1
RiA1MyAzMSAgLkQ1QTIuLlwvLl9TQl9TMQogICAgMTRBMDogNDQgMzEgNDQgMzUgNDEgMzIgMEEg
MEYgQTAgMUIgOTMgNjEgMEQgNDQgMzUgNDEgIEQxRDVBMi4uLi4uYS5ENUEKICAgIDE0QjA6IDMz
IDAwIDg2IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUzIDMxIDQ0IDMxIDQ0IDM1ICAzLi5cLy5fU0Jf
UzFEMUQ1CiAgICAxNEMwOiA0MSAzMyAwQSAwRiBBMCAxQiA5MyA2MSAwRCA0NCAzNSA0MSAzNCAw
MCA4NiA1QyAgQTMuLi4uLmEuRDVBNC4uXAogICAgMTREMDogMkYgMDMgNUYgNTMgNDIgNUYgNTMg
MzEgNDQgMzEgNDQgMzUgNDEgMzQgMEEgMEYgIC8uX1NCX1MxRDFENUE0Li4KICAgIDE0RTA6IEEw
IDFCIDkzIDYxIDBEIDQ0IDM1IDQxIDM1IDAwIDg2IDVDIDJGIDAzIDVGIDUzICAuLi5hLkQ1QTUu
LlwvLl9TCiAgICAxNEYwOiA0MiA1RiA1MyAzMSA0NCAzMSA0NCAzNSA0MSAzNSAwQSAwRiBBMCAx
QiA5MyA2MSAgQl9TMUQxRDVBNS4uLi4uYQogICAgMTUwMDogMEQgNDQgMzUgNDEgMzYgMDAgODYg
NUMgMkYgMDMgNUYgNTMgNDIgNUYgNTMgMzEgIC5ENUE2Li5cLy5fU0JfUzEKICAgIDE1MTA6IDQ0
IDMxIDQ0IDM1IDQxIDM2IDBBIDBGIEEwIDFCIDkzIDYxIDBEIDQ0IDM1IDQxICBEMUQ1QTYuLi4u
LmEuRDVBCiAgICAxNTIwOiAzNyAwMCA4NiA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MyAzMSA0NCAz
MSA0NCAzNSAgNy4uXC8uX1NCX1MxRDFENQogICAgMTUzMDogNDEgMzcgMEEgMEYgQTAgMUIgOTMg
NjEgMEQgNDQgMzUgNDEgMzggMDAgODYgNUMgIEE3Li4uLi5hLkQ1QTguLlwKICAgIDE1NDA6IDJG
IDAzIDVGIDUzIDQyIDVGIDUzIDMxIDQ0IDMxIDQ0IDM1IDQxIDM4IDBBIDBGICAvLl9TQl9TMUQx
RDVBOC4uCiAgICAxNTUwOiBBMCAxQiA5MyA2MSAwRCA0NCAzNSA0MiAzMCAwMCA4NiA1QyAyRiAw
MyA1RiA1MyAgLi4uYS5ENUIwLi5cLy5fUwogICAgMTU2MDogNDIgNUYgNTMgMzEgNDQgMzEgNDQg
MzUgNDIgMzAgMEEgMEYgQTAgMUIgOTMgNjEgIEJfUzFEMUQ1QjAuLi4uLmEKICAgIDE1NzA6IDBE
IDQ0IDM1IDQyIDMxIDAwIDg2IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUzIDMxICAuRDVCMS4uXC8u
X1NCX1MxCiAgICAxNTgwOiA0NCAzMSA0NCAzNSA0MiAzMSAwQSAwRiBBMCAxQiA5MyA2MSAwRCA0
NCAzNSA0MiAgRDFENUIxLi4uLi5hLkQ1QgogICAgMTU5MDogMzIgMDAgODYgNUMgMkYgMDMgNUYg
NTMgNDIgNUYgNTMgMzEgNDQgMzEgNDQgMzUgIDIuLlwvLl9TQl9TMUQxRDUKICAgIDE1QTA6IDQy
IDMyIDBBIDBGIEEwIDFCIDkzIDYxIDBEIDQ0IDM1IDQyIDMzIDAwIDg2IDVDICBCMi4uLi4uYS5E
NUIzLi5cCiAgICAxNUIwOiAyRiAwMyA1RiA1MyA0MiA1RiA1MyAzMSA0NCAzMSA0NCAzNSA0MiAz
MyAwQSAwRiAgLy5fU0JfUzFEMUQ1QjMuLgogICAgMTVDMDogQTAgMUIgOTMgNjEgMEQgNDQgMzUg
NDIgMzQgMDAgODYgNUMgMkYgMDMgNUYgNTMgIC4uLmEuRDVCNC4uXC8uX1MKICAgIDE1RDA6IDQy
IDVGIDUzIDMxIDQ0IDMxIDQ0IDM1IDQyIDM0IDBBIDBGIEEwIDFCIDkzIDYxICBCX1MxRDFENUI0
Li4uLi5hCiAgICAxNUUwOiAwRCA0NCAzNSA0MiAzNSAwMCA4NiA1QyAyRiAwMyA1RiA1MyA0MiA1
RiA1MyAzMSAgLkQ1QjUuLlwvLl9TQl9TMQogICAgMTVGMDogNDQgMzEgNDQgMzUgNDIgMzUgMEEg
MEYgQTAgMUIgOTMgNjEgMEQgNDQgMzUgNDIgIEQxRDVCNS4uLi4uYS5ENUIKICAgIDE2MDA6IDM2
IDAwIDg2IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUzIDMxIDQ0IDMxIDQ0IDM1ICA2Li5cLy5fU0Jf
UzFEMUQ1CiAgICAxNjEwOiA0MiAzNiAwQSAwRiBBMCAxQiA5MyA2MSAwRCA0NCAzNSA0MiAzNyAw
MCA4NiA1QyAgQjYuLi4uLmEuRDVCNy4uXAogICAgMTYyMDogMkYgMDMgNUYgNTMgNDIgNUYgNTMg
MzEgNDQgMzEgNDQgMzUgNDIgMzcgMEEgMEYgIC8uX1NCX1MxRDFENUI3Li4KICAgIDE2MzA6IEEw
IDFCIDkzIDYxIDBEIDQ0IDM1IDQyIDM4IDAwIDg2IDVDIDJGIDAzIDVGIDUzICAuLi5hLkQ1Qjgu
LlwvLl9TCiAgICAxNjQwOiA0MiA1RiA1MyAzMSA0NCAzMSA0NCAzNSA0MiAzOCAwQSAwRiBBMCAx
QiA5MyA2MSAgQl9TMUQxRDVCOC4uLi4uYQogICAgMTY1MDogMEQgNDQgMzYgNDEgMzAgMDAgODYg
NUMgMkYgMDMgNUYgNTMgNDIgNUYgNTMgMzEgIC5ENkEwLi5cLy5fU0JfUzEKICAgIDE2NjA6IDQ0
IDMyIDQ0IDM2IDQxIDMwIDBBIDBGIEEwIDFCIDkzIDYxIDBEIDQ0IDM2IDQxICBEMkQ2QTAuLi4u
LmEuRDZBCiAgICAxNjcwOiAzMSAwMCA4NiA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MyAzMSA0NCAz
MiA0NCAzNiAgMS4uXC8uX1NCX1MxRDJENgogICAgMTY4MDogNDEgMzEgMEEgMEYgQTAgMUIgOTMg
NjEgMEQgNDQgMzYgNDEgMzIgMDAgODYgNUMgIEExLi4uLi5hLkQ2QTIuLlwKICAgIDE2OTA6IDJG
IDAzIDVGIDUzIDQyIDVGIDUzIDMxIDQ0IDMyIDQ0IDM2IDQxIDMyIDBBIDBGICAvLl9TQl9TMUQy
RDZBMi4uCiAgICAxNkEwOiBBMCAxQiA5MyA2MSAwRCA0NCAzNiA0MSAzMyAwMCA4NiA1QyAyRiAw
MyA1RiA1MyAgLi4uYS5ENkEzLi5cLy5fUwogICAgMTZCMDogNDIgNUYgNTMgMzEgNDQgMzIgNDQg
MzYgNDEgMzMgMEEgMEYgQTAgMUIgOTMgNjEgIEJfUzFEMkQ2QTMuLi4uLmEKICAgIDE2QzA6IDBE
IDQ0IDM2IDQxIDM0IDAwIDg2IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUzIDMxICAuRDZBNC4uXC8u
X1NCX1MxCiAgICAxNkQwOiA0NCAzMiA0NCAzNiA0MSAzNCAwQSAwRiBBMCAxQiA5MyA2MSAwRCA0
NCAzNiA0MSAgRDJENkE0Li4uLi5hLkQ2QQogICAgMTZFMDogMzUgMDAgODYgNUMgMkYgMDMgNUYg
NTMgNDIgNUYgNTMgMzEgNDQgMzIgNDQgMzYgIDUuLlwvLl9TQl9TMUQyRDYKICAgIDE2RjA6IDQx
IDM1IDBBIDBGIEEwIDFCIDkzIDYxIDBEIDQ0IDM2IDQxIDM2IDAwIDg2IDVDICBBNS4uLi4uYS5E
NkE2Li5cCiAgICAxNzAwOiAyRiAwMyA1RiA1MyA0MiA1RiA1MyAzMSA0NCAzMiA0NCAzNiA0MSAz
NiAwQSAwRiAgLy5fU0JfUzFEMkQ2QTYuLgogICAgMTcxMDogQTAgMUIgOTMgNjEgMEQgNDQgMzYg
NDEgMzcgMDAgODYgNUMgMkYgMDMgNUYgNTMgIC4uLmEuRDZBNy4uXC8uX1MKICAgIDE3MjA6IDQy
IDVGIDUzIDMxIDQ0IDMyIDQ0IDM2IDQxIDM3IDBBIDBGIEEwIDFCIDkzIDYxICBCX1MxRDJENkE3
Li4uLi5hCiAgICAxNzMwOiAwRCA0NCAzNiA0MSAzOCAwMCA4NiA1QyAyRiAwMyA1RiA1MyA0MiA1
RiA1MyAzMSAgLkQ2QTguLlwvLl9TQl9TMQogICAgMTc0MDogNDQgMzIgNDQgMzYgNDEgMzggMEEg
MEYgQTAgMUIgOTMgNjEgMEQgNDQgMzYgNDIgIEQyRDZBOC4uLi4uYS5ENkIKICAgIDE3NTA6IDMw
IDAwIDg2IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUzIDMxIDQ0IDMyIDQ0IDM2ICAwLi5cLy5fU0Jf
UzFEMkQ2CiAgICAxNzYwOiA0MiAzMCAwQSAwRiBBMCAxQiA5MyA2MSAwRCA0NCAzNiA0MiAzMSAw
MCA4NiA1QyAgQjAuLi4uLmEuRDZCMS4uXAogICAgMTc3MDogMkYgMDMgNUYgNTMgNDIgNUYgNTMg
MzEgNDQgMzIgNDQgMzYgNDIgMzEgMEEgMEYgIC8uX1NCX1MxRDJENkIxLi4KICAgIDE3ODA6IEEw
IDFCIDkzIDYxIDBEIDQ0IDM2IDQyIDMyIDAwIDg2IDVDIDJGIDAzIDVGIDUzICAuLi5hLkQ2QjIu
LlwvLl9TCiAgICAxNzkwOiA0MiA1RiA1MyAzMSA0NCAzMiA0NCAzNiA0MiAzMiAwQSAwRiBBMCAx
QiA5MyA2MSAgQl9TMUQyRDZCMi4uLi4uYQogICAgMTdBMDogMEQgNDQgMzYgNDIgMzMgMDAgODYg
NUMgMkYgMDMgNUYgNTMgNDIgNUYgNTMgMzEgIC5ENkIzLi5cLy5fU0JfUzEKICAgIDE3QjA6IDQ0
IDMyIDQ0IDM2IDQyIDMzIDBBIDBGIEEwIDFCIDkzIDYxIDBEIDQ0IDM2IDQyICBEMkQ2QjMuLi4u
LmEuRDZCCiAgICAxN0MwOiAzNCAwMCA4NiA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MyAzMSA0NCAz
MiA0NCAzNiAgNC4uXC8uX1NCX1MxRDJENgogICAgMTdEMDogNDIgMzQgMEEgMEYgQTAgMUIgOTMg
NjEgMEQgNDQgMzYgNDIgMzUgMDAgODYgNUMgIEI0Li4uLi5hLkQ2QjUuLlwKICAgIDE3RTA6IDJG
IDAzIDVGIDUzIDQyIDVGIDUzIDMxIDQ0IDMyIDQ0IDM2IDQyIDM1IDBBIDBGICAvLl9TQl9TMUQy
RDZCNS4uCiAgICAxN0YwOiBBMCAxQiA5MyA2MSAwRCA0NCAzNiA0MiAzNiAwMCA4NiA1QyAyRiAw
MyA1RiA1MyAgLi4uYS5ENkI2Li5cLy5fUwogICAgMTgwMDogNDIgNUYgNTMgMzEgNDQgMzIgNDQg
MzYgNDIgMzYgMEEgMEYgQTAgMUIgOTMgNjEgIEJfUzFEMkQ2QjYuLi4uLmEKICAgIDE4MTA6IDBE
IDQ0IDM2IDQyIDM3IDAwIDg2IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUzIDMxICAuRDZCNy4uXC8u
X1NCX1MxCiAgICAxODIwOiA0NCAzMiA0NCAzNiA0MiAzNyAwQSAwRiBBMCAxQiA5MyA2MSAwRCA0
NCAzNiA0MiAgRDJENkI3Li4uLi5hLkQ2QgogICAgMTgzMDogMzggMDAgODYgNUMgMkYgMDMgNUYg
NTMgNDIgNUYgNTMgMzEgNDQgMzIgNDQgMzYgIDguLlwvLl9TQl9TMUQyRDYKICAgIDE4NDA6IDQy
IDM4IDBBIDBGIEEwIDFCIDkzIDYxIDBEIDQ0IDM3IDQxIDMwIDAwIDg2IDVDICBCOC4uLi4uYS5E
N0EwLi5cCiAgICAxODUwOiAyRiAwMyA1RiA1MyA0MiA1RiA1MyAzMSA0NCAzMyA0NCAzNyA0MSAz
MCAwQSAwRiAgLy5fU0JfUzFEM0Q3QTAuLgogICAgMTg2MDogQTAgMUIgOTMgNjEgMEQgNDQgMzcg
NDEgMzEgMDAgODYgNUMgMkYgMDMgNUYgNTMgIC4uLmEuRDdBMS4uXC8uX1MKICAgIDE4NzA6IDQy
IDVGIDUzIDMxIDQ0IDMzIDQ0IDM3IDQxIDMxIDBBIDBGIEEwIDFCIDkzIDYxICBCX1MxRDNEN0Ex
Li4uLi5hCiAgICAxODgwOiAwRCA0NCAzNyA0MSAzMiAwMCA4NiA1QyAyRiAwMyA1RiA1MyA0MiA1
RiA1MyAzMSAgLkQ3QTIuLlwvLl9TQl9TMQogICAgMTg5MDogNDQgMzMgNDQgMzcgNDEgMzIgMEEg
MEYgQTAgMUIgOTMgNjEgMEQgNDQgMzcgNDEgIEQzRDdBMi4uLi4uYS5EN0EKICAgIDE4QTA6IDMz
IDAwIDg2IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUzIDMxIDQ0IDMzIDQ0IDM3ICAzLi5cLy5fU0Jf
UzFEM0Q3CiAgICAxOEIwOiA0MSAzMyAwQSAwRiBBMCAxQiA5MyA2MSAwRCA0NCAzNyA0MSAzNCAw
MCA4NiA1QyAgQTMuLi4uLmEuRDdBNC4uXAogICAgMThDMDogMkYgMDMgNUYgNTMgNDIgNUYgNTMg
MzEgNDQgMzMgNDQgMzcgNDEgMzQgMEEgMEYgIC8uX1NCX1MxRDNEN0E0Li4KICAgIDE4RDA6IEEw
IDFCIDkzIDYxIDBEIDQ0IDM3IDQxIDM1IDAwIDg2IDVDIDJGIDAzIDVGIDUzICAuLi5hLkQ3QTUu
LlwvLl9TCiAgICAxOEUwOiA0MiA1RiA1MyAzMSA0NCAzMyA0NCAzNyA0MSAzNSAwQSAwRiBBMCAx
QiA5MyA2MSAgQl9TMUQzRDdBNS4uLi4uYQogICAgMThGMDogMEQgNDQgMzcgNDEgMzYgMDAgODYg
NUMgMkYgMDMgNUYgNTMgNDIgNUYgNTMgMzEgIC5EN0E2Li5cLy5fU0JfUzEKICAgIDE5MDA6IDQ0
IDMzIDQ0IDM3IDQxIDM2IDBBIDBGIEEwIDFCIDkzIDYxIDBEIDQ0IDM3IDQxICBEM0Q3QTYuLi4u
LmEuRDdBCiAgICAxOTEwOiAzNyAwMCA4NiA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MyAzMSA0NCAz
MyA0NCAzNyAgNy4uXC8uX1NCX1MxRDNENwogICAgMTkyMDogNDEgMzcgMEEgMEYgQTAgMUIgOTMg
NjEgMEQgNDQgMzcgNDEgMzggMDAgODYgNUMgIEE3Li4uLi5hLkQ3QTguLlwKICAgIDE5MzA6IDJG
IDAzIDVGIDUzIDQyIDVGIDUzIDMxIDQ0IDMzIDQ0IDM3IDQxIDM4IDBBIDBGICAvLl9TQl9TMUQz
RDdBOC4uCiAgICAxOTQwOiBBMCAxQiA5MyA2MSAwRCA0NCAzNyA0MiAzMCAwMCA4NiA1QyAyRiAw
MyA1RiA1MyAgLi4uYS5EN0IwLi5cLy5fUwogICAgMTk1MDogNDIgNUYgNTMgMzEgNDQgMzMgNDQg
MzcgNDIgMzAgMEEgMEYgQTAgMUIgOTMgNjEgIEJfUzFEM0Q3QjAuLi4uLmEKICAgIDE5NjA6IDBE
IDQ0IDM3IDQyIDMxIDAwIDg2IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUzIDMxICAuRDdCMS4uXC8u
X1NCX1MxCiAgICAxOTcwOiA0NCAzMyA0NCAzNyA0MiAzMSAwQSAwRiBBMCAxQiA5MyA2MSAwRCA0
NCAzNyA0MiAgRDNEN0IxLi4uLi5hLkQ3QgogICAgMTk4MDogMzIgMDAgODYgNUMgMkYgMDMgNUYg
NTMgNDIgNUYgNTMgMzEgNDQgMzMgNDQgMzcgIDIuLlwvLl9TQl9TMUQzRDcKICAgIDE5OTA6IDQy
IDMyIDBBIDBGIEEwIDFCIDkzIDYxIDBEIDQ0IDM3IDQyIDMzIDAwIDg2IDVDICBCMi4uLi4uYS5E
N0IzLi5cCiAgICAxOUEwOiAyRiAwMyA1RiA1MyA0MiA1RiA1MyAzMSA0NCAzMyA0NCAzNyA0MiAz
MyAwQSAwRiAgLy5fU0JfUzFEM0Q3QjMuLgogICAgMTlCMDogQTAgMUIgOTMgNjEgMEQgNDQgMzcg
NDIgMzQgMDAgODYgNUMgMkYgMDMgNUYgNTMgIC4uLmEuRDdCNC4uXC8uX1MKICAgIDE5QzA6IDQy
IDVGIDUzIDMxIDQ0IDMzIDQ0IDM3IDQyIDM0IDBBIDBGIEEwIDFCIDkzIDYxICBCX1MxRDNEN0I0
Li4uLi5hCiAgICAxOUQwOiAwRCA0NCAzNyA0MiAzNSAwMCA4NiA1QyAyRiAwMyA1RiA1MyA0MiA1
RiA1MyAzMSAgLkQ3QjUuLlwvLl9TQl9TMQogICAgMTlFMDogNDQgMzMgNDQgMzcgNDIgMzUgMEEg
MEYgQTAgMUIgOTMgNjEgMEQgNDQgMzcgNDIgIEQzRDdCNS4uLi4uYS5EN0IKICAgIDE5RjA6IDM2
IDAwIDg2IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUzIDMxIDQ0IDMzIDQ0IDM3ICA2Li5cLy5fU0Jf
UzFEM0Q3CiAgICAxQTAwOiA0MiAzNiAwQSAwRiBBMCAxQiA5MyA2MSAwRCA0NCAzNyA0MiAzNyAw
MCA4NiA1QyAgQjYuLi4uLmEuRDdCNy4uXAogICAgMUExMDogMkYgMDMgNUYgNTMgNDIgNUYgNTMg
MzEgNDQgMzMgNDQgMzcgNDIgMzcgMEEgMEYgIC8uX1NCX1MxRDNEN0I3Li4KICAgIDFBMjA6IEEw
IDFCIDkzIDYxIDBEIDQ0IDM3IDQyIDM4IDAwIDg2IDVDIDJGIDAzIDVGIDUzICAuLi5hLkQ3Qjgu
LlwvLl9TCiAgICAxQTMwOiA0MiA1RiA1MyAzMSA0NCAzMyA0NCAzNyA0MiAzOCAwQSAwRiA3MCAw
MCA0NCA1MiAgQl9TMUQzRDdCOC4ucC5EUgogICAgMUE0MDogNTAgNEUgMTAgMjcgNUMgNUYgNTMg
NDIgNUYgNUIgODIgMUYgNDEgNDUgNTIgNTIgIFBOLidcX1NCX1suLkFFUlIKICAgIDFBNTA6IDA4
IDVGIDQ4IDQ5IDQ0IDBDIDQxIEQwIDBDIDMzIDA4IDVGIDU1IDQ5IDQ0IDAwICAuX0hJRC5BLi4z
Ll9VSUQuCiAgICAxQTYwOiAxNCAwOSA1RiA1MyA1NCA0MSAwMCBBNCAwQSAwRiA1QiA4MCA1MiA0
MSA1MyA0NCAgLi5fU1RBLi4uLlsuUkFTRAogICAgMUE3MDogMDAgMEMgMDAgNzAgMkQgQTggMEEg
MTAgNUIgODEgMUEgNTIgNDEgNTMgNDQgMDEgIC4uLnAtLi4uWy4uUkFTRC4KICAgIDFBODA6IDUw
IDUzIDQ5IDQ3IDIwIDUwIDU3IDRGIDQzIDIwIDUwIDRGIDUzIDUzIDIwIDUwICBQU0lHIFBXT0Mg
UE9TUyBQCiAgICAxQTkwOiA0RiA1MyA0MyAyMCA1QiA4MCA0RiA1MyA0OCA1MCAwMCAwQyAwMCA2
MCAyRCBBOCAgT1NDIFsuT1NIUC4uLmAtLgogICAgMUFBMDogMEEgMDIgNUIgODEgMTAgNEYgNTMg
NDggNTAgMDEgNDggNTAgNDggNEQgMDggNDEgIC4uWy4uT1NIUC5IUEhNLkEKICAgIDFBQjA6IDQ1
IDUyIDREIDA4IDVCIDgwIDUzIDREIDQyIDUzIDAwIDBDIDAwIDAwIEQ4IEZFICBFUk0uWy5TTUJT
Li4uLi4uCiAgICAxQUMwOiAwQyAwMCAwMCA4MCAwMCA1QiA4MSAwRiA1MyA0RCA0MiA1MyAwMSAw
MCA4MCBCNSAgLi4uLi5bLi5TTUJTLi4uLgogICAgMUFEMDogMDEgNTMgNEQgNDkgNTAgMDggNUIg
ODAgNTMgNTcgNTMgNEQgMDEgNTMgNEQgNDkgIC5TTUlQLlsuU1dTTS5TTUkKICAgIDFBRTA6IDUw
IDBBIDAyIDVCIDgxIDBCIDUzIDU3IDUzIDREIDAwIDUzIDREIDQ5IDUyIDEwICBQLi5bLi5TV1NN
LlNNSVIuCiAgICAxQUYwOiA1QiA4MCA0NSA0NCA1MyA0RCAwMCAwQyAwMCA1MCAyRCBBOCAwQSAw
RSA1QiA4MSAgWy5FRFNNLi4uUC0uLi5bLgogICAgMUIwMDogMjkgNDUgNDQgNTMgNEQgMDEgNDQg
NTMgNEQgNDkgMDggNDQgNTIgNTAgNDIgMDggIClFRFNNLkRTTUkuRFJQQi4KICAgIDFCMTA6IDQ0
IDUyIDUwIDQxIDIwIDQ0IDQ5IDQ0IDU4IDA4IDQ0IDQ2IDQ5IDRFIDA4IDQ0ICBEUlBBIERJRFgu
REZJTi5ECiAgICAxQjIwOiA0RiA1NSA1NCAxMCA0NCA1MiA1MCA0RSAyMCA1QiA4MCA0NSA0RiA1
MyA1NCAwMCAgT1VULkRSUE4gWy5FT1NULgogICAgMUIzMDogMEMgMDAgNDAgMkQgQTggMEEgMEEg
NUIgODEgMUEgNDUgNEYgNTMgNTQgMDEgNEYgIC4uQC0uLi5bLi5FT1NULk8KICAgIDFCNDA6IDUz
IDREIDQ5IDA4IDRGIDUyIDUwIDQyIDA4IDRGIDUyIDUwIDQxIDIwIDRGIDQxICBTTUkuT1JQQi5P
UlBBIE9BCiAgICAxQjUwOiA0NyAzMSAyMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRzEgCgpNQ0ZHIEAgMHgwMDAwMDAwMDAwMDAwMDAwCiAgICAwMDAwOiA0RCA0MyA0
NiA0NyAzQyAwMCAwMCAwMCAwMSAyRSA0MSA0RCA0NCAwMCA0MSAyMCAgTUNGRzwuLi4uLkFNRC5B
IAogICAgMDAxMDogNDEgMjAgNEQgMjAgNDkgMDAgMDAgMDAgMDEgMDAgMDAgMDAgNEQgNTMgNDYg
NTQgIEEgTSBJLi4uLi4uLk1TRlQKICAgIDAwMjA6IDEzIDAwIDAxIDAwIDAwIDAwIDAwIDAwIDAw
IDAwIDAwIDAwIDAwIDAwIDAwIEUwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwMDMwOiAwMCAwMCAw
MCAwMCAwMCAwMCAwMCBGRiAwMCAwMCAwMCAwMCAgICAgICAgICAgICAgLi4uLi4uLi4uLi4uCgpB
UElDIEAgMHgwMDAwMDAwMDAwMDAwMDAwCiAgICAwMDAwOiA0MSA1MCA0OSA0MyA4OCAxMCAwMCAw
MCAwNiBFMyA0MSA0RCA0NCAyMCAyMCAyMCAgQVBJQy4uLi4uLkFNRCAgIAogICAgMDAxMDogNDEg
MjAgNEQgMjAgNDkgMjAgMDAgMDAgMDEgMDAgMDAgMDAgNDEgNEQgNDkgMjAgIEEgTSBJIC4uLi4u
LkFNSSAKICAgIDAwMjA6IDEzIDAwIDAxIDAwIDAwIDAwIEUwIEZFIDAxIDAwIDAwIDAwIDA5IDEw
IDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwMDMwOiAwMCAwMCAwMCAwMCAwMSAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwOSAxMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMDA0MDogMDIg
MDAgMDAgMDAgMDEgMDAgMDAgMDAgMDIgMDAgMDAgMDAgMDkgMTAgMDAgMDAgIC4uLi4uLi4uLi4u
Li4uLi4KICAgIDAwNTA6IDA0IDAwIDAwIDAwIDAxIDAwIDAwIDAwIDA0IDAwIDAwIDAwIDA5IDEw
IDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwMDYwOiAwNiAwMCAwMCAwMCAwMSAwMCAwMCAw
MCAwNiAwMCAwMCAwMCAwOSAxMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMDA3MDogMDgg
MDAgMDAgMDAgMDEgMDAgMDAgMDAgMDggMDAgMDAgMDAgMDkgMTAgMDAgMDAgIC4uLi4uLi4uLi4u
Li4uLi4KICAgIDAwODA6IDBBIDAwIDAwIDAwIDAxIDAwIDAwIDAwIDBBIDAwIDAwIDAwIDA5IDEw
IDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwMDkwOiAxMCAwMCAwMCAwMCAwMSAwMCAwMCAw
MCAwQyAwMCAwMCAwMCAwOSAxMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMDBBMDogMTIg
MDAgMDAgMDAgMDEgMDAgMDAgMDAgMEUgMDAgMDAgMDAgMDkgMTAgMDAgMDAgIC4uLi4uLi4uLi4u
Li4uLi4KICAgIDAwQjA6IDE0IDAwIDAwIDAwIDAxIDAwIDAwIDAwIDEwIDAwIDAwIDAwIDA5IDEw
IDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwMEMwOiAxNiAwMCAwMCAwMCAwMSAwMCAwMCAw
MCAxMiAwMCAwMCAwMCAwOSAxMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMDBEMDogMTgg
MDAgMDAgMDAgMDEgMDAgMDAgMDAgMTQgMDAgMDAgMDAgMDkgMTAgMDAgMDAgIC4uLi4uLi4uLi4u
Li4uLi4KICAgIDAwRTA6IDFBIDAwIDAwIDAwIDAxIDAwIDAwIDAwIDE2IDAwIDAwIDAwIDA5IDEw
IDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwMEYwOiAyMCAwMCAwMCAwMCAwMSAwMCAwMCAw
MCAxOCAwMCAwMCAwMCAwOSAxMCAwMCAwMCAgIC4uLi4uLi4uLi4uLi4uLgogICAgMDEwMDogMjIg
MDAgMDAgMDAgMDEgMDAgMDAgMDAgMUEgMDAgMDAgMDAgMDkgMTAgMDAgMDAgICIuLi4uLi4uLi4u
Li4uLi4KICAgIDAxMTA6IDI0IDAwIDAwIDAwIDAxIDAwIDAwIDAwIDFDIDAwIDAwIDAwIDA5IDEw
IDAwIDAwICAkLi4uLi4uLi4uLi4uLi4uCiAgICAwMTIwOiAyNiAwMCAwMCAwMCAwMSAwMCAwMCAw
MCAxRSAwMCAwMCAwMCAwOSAxMCAwMCAwMCAgJi4uLi4uLi4uLi4uLi4uLgogICAgMDEzMDogMjgg
MDAgMDAgMDAgMDEgMDAgMDAgMDAgMjAgMDAgMDAgMDAgMDkgMTAgMDAgMDAgICguLi4uLi4uIC4u
Li4uLi4KICAgIDAxNDA6IDJBIDAwIDAwIDAwIDAxIDAwIDAwIDAwIDIyIDAwIDAwIDAwIDA5IDEw
IDAwIDAwICAqLi4uLi4uLiIuLi4uLi4uCiAgICAwMTUwOiAzMCAwMCAwMCAwMCAwMSAwMCAwMCAw
MCAyNCAwMCAwMCAwMCAwOSAxMCAwMCAwMCAgMC4uLi4uLi4kLi4uLi4uLgogICAgMDE2MDogMzIg
MDAgMDAgMDAgMDEgMDAgMDAgMDAgMjYgMDAgMDAgMDAgMDkgMTAgMDAgMDAgIDIuLi4uLi4uJi4u
Li4uLi4KICAgIDAxNzA6IDM0IDAwIDAwIDAwIDAxIDAwIDAwIDAwIDI4IDAwIDAwIDAwIDA5IDEw
IDAwIDAwICA0Li4uLi4uLiguLi4uLi4uCiAgICAwMTgwOiAzNiAwMCAwMCAwMCAwMSAwMCAwMCAw
MCAyQSAwMCAwMCAwMCAwOSAxMCAwMCAwMCAgNi4uLi4uLi4qLi4uLi4uLgogICAgMDE5MDogMzgg
MDAgMDAgMDAgMDEgMDAgMDAgMDAgMkMgMDAgMDAgMDAgMDkgMTAgMDAgMDAgIDguLi4uLi4uLC4u
Li4uLi4KICAgIDAxQTA6IDNBIDAwIDAwIDAwIDAxIDAwIDAwIDAwIDJFIDAwIDAwIDAwIDA5IDEw
IDAwIDAwICA6Li4uLi4uLi4uLi4uLi4uCiAgICAwMUIwOiAwMSAwMCAwMCAwMCAwMSAwMCAwMCAw
MCAwMSAwMCAwMCAwMCAwOSAxMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMDFDMDogMDMg
MDAgMDAgMDAgMDEgMDAgMDAgMDAgMDMgMDAgMDAgMDAgMDkgMTAgMDAgMDAgIC4uLi4uLi4uLi4u
Li4uLi4KICAgIDAxRDA6IDA1IDAwIDAwIDAwIDAxIDAwIDAwIDAwIDA1IDAwIDAwIDAwIDA5IDEw
IDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwMUUwOiAwNyAwMCAwMCAwMCAwMSAwMCAwMCAw
MCAwNyAwMCAwMCAwMCAwOSAxMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMDFGMDogMDkg
MDAgMDAgMDAgMDEgMDAgMDAgMDAgMDkgMDAgMDAgMDAgMDkgMTAgMDAgMDAgIC4uLi4uLi4uLi4u
Li4uLi4KICAgIDAyMDA6IDBCIDAwIDAwIDAwIDAxIDAwIDAwIDAwIDBCIDAwIDAwIDAwIDA5IDEw
IDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwMjEwOiAxMSAwMCAwMCAwMCAwMSAwMCAwMCAw
MCAwRCAwMCAwMCAwMCAwOSAxMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMDIyMDogMTMg
MDAgMDAgMDAgMDEgMDAgMDAgMDAgMEYgMDAgMDAgMDAgMDkgMTAgMDAgMDAgIC4uLi4uLi4uLi4u
Li4uLi4KICAgIDAyMzA6IDE1IDAwIDAwIDAwIDAxIDAwIDAwIDAwIDExIDAwIDAwIDAwIDA5IDEw
IDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwMjQwOiAxNyAwMCAwMCAwMCAwMSAwMCAwMCAw
MCAxMyAwMCAwMCAwMCAwOSAxMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMDI1MDogMTkg
MDAgMDAgMDAgMDEgMDAgMDAgMDAgMTUgMDAgMDAgMDAgMDkgMTAgMDAgMDAgIC4uLi4uLi4uLi4u
Li4uLi4KICAgIDAyNjA6IDFCIDAwIDAwIDAwIDAxIDAwIDAwIDAwIDE3IDAwIDAwIDAwIDA5IDEw
IDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwMjcwOiAyMSAwMCAwMCAwMCAwMSAwMCAwMCAw
MCAxOSAwMCAwMCAwMCAwOSAxMCAwMCAwMCAgIS4uLi4uLi4uLi4uLi4uLgogICAgMDI4MDogMjMg
MDAgMDAgMDAgMDEgMDAgMDAgMDAgMUIgMDAgMDAgMDAgMDkgMTAgMDAgMDAgICMuLi4uLi4uLi4u
Li4uLi4KICAgIDAyOTA6IDI1IDAwIDAwIDAwIDAxIDAwIDAwIDAwIDFEIDAwIDAwIDAwIDA5IDEw
IDAwIDAwICAlLi4uLi4uLi4uLi4uLi4uCiAgICAwMkEwOiAyNyAwMCAwMCAwMCAwMSAwMCAwMCAw
MCAxRiAwMCAwMCAwMCAwOSAxMCAwMCAwMCAgJy4uLi4uLi4uLi4uLi4uLgogICAgMDJCMDogMjkg
MDAgMDAgMDAgMDEgMDAgMDAgMDAgMjEgMDAgMDAgMDAgMDkgMTAgMDAgMDAgICkuLi4uLi4uIS4u
Li4uLi4KICAgIDAyQzA6IDJCIDAwIDAwIDAwIDAxIDAwIDAwIDAwIDIzIDAwIDAwIDAwIDA5IDEw
IDAwIDAwICArLi4uLi4uLiMuLi4uLi4uCiAgICAwMkQwOiAzMSAwMCAwMCAwMCAwMSAwMCAwMCAw
MCAyNSAwMCAwMCAwMCAwOSAxMCAwMCAwMCAgMS4uLi4uLi4lLi4uLi4uLgogICAgMDJFMDogMzMg
MDAgMDAgMDAgMDEgMDAgMDAgMDAgMjcgMDAgMDAgMDAgMDkgMTAgMDAgMDAgIDMuLi4uLi4uJy4u
Li4uLi4KICAgIDAyRjA6IDM1IDAwIDAwIDAwIDAxIDAwIDAwIDAwIDI5IDAwIDAwIDAwIDA5IDEw
IDAwIDAwICA1Li4uLi4uLikuLi4uLi4uCiAgICAwMzAwOiAzNyAwMCAwMCAwMCAwMSAwMCAwMCAw
MCAyQiAwMCAwMCAwMCAwOSAxMCAwMCAwMCAgNy4uLi4uLi4rLi4uLi4uLgogICAgMDMxMDogMzkg
MDAgMDAgMDAgMDEgMDAgMDAgMDAgMkQgMDAgMDAgMDAgMDkgMTAgMDAgMDAgIDkuLi4uLi4uLS4u
Li4uLi4KICAgIDAzMjA6IDNCIDAwIDAwIDAwIDAxIDAwIDAwIDAwIDJGIDAwIDAwIDAwIDA5IDEw
IDAwIDAwICA7Li4uLi4uLi8uLi4uLi4uCiAgICAwMzMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAzMCAwMCAwMCAwMCAwOSAxMCAwMCAwMCAgLi4uLi4uLi4wLi4uLi4uLgogICAgMDM0MDogMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMzEgMDAgMDAgMDAgMDkgMTAgMDAgMDAgIC4uLi4uLi4uMS4u
Li4uLi4KICAgIDAzNTA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDMyIDAwIDAwIDAwIDA5IDEw
IDAwIDAwICAuLi4uLi4uLjIuLi4uLi4uCiAgICAwMzYwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAzMyAwMCAwMCAwMCAwOSAxMCAwMCAwMCAgLi4uLi4uLi4zLi4uLi4uLgogICAgMDM3MDogMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMzQgMDAgMDAgMDAgMDkgMTAgMDAgMDAgIC4uLi4uLi4uNC4u
Li4uLi4KICAgIDAzODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDM1IDAwIDAwIDAwIDA5IDEw
IDAwIDAwICAuLi4uLi4uLjUuLi4uLi4uCiAgICAwMzkwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAzNiAwMCAwMCAwMCAwOSAxMCAwMCAwMCAgLi4uLi4uLi42Li4uLi4uLgogICAgMDNBMDogMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMzcgMDAgMDAgMDAgMDkgMTAgMDAgMDAgIC4uLi4uLi4uNy4u
Li4uLi4KICAgIDAzQjA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDM4IDAwIDAwIDAwIDA5IDEw
IDAwIDAwICAuLi4uLi4uLjguLi4uLi4uCiAgICAwM0MwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAzOSAwMCAwMCAwMCAwOSAxMCAwMCAwMCAgLi4uLi4uLi45Li4uLi4uLgogICAgMDNEMDogMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgM0EgMDAgMDAgMDAgMDkgMTAgMDAgMDAgIC4uLi4uLi4uOi4u
Li4uLi4KICAgIDAzRTA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDNCIDAwIDAwIDAwIDA5IDEw
IDAwIDAwICAuLi4uLi4uLjsuLi4uLi4uCiAgICAwM0YwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAzQyAwMCAwMCAwMCAwOSAxMCAwMCAwMCAgLi4uLi4uLi48Li4uLi4uLgogICAgMDQwMDogMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgM0QgMDAgMDAgMDAgMDkgMTAgMDAgMDAgIC4uLi4uLi4uPS4u
Li4uLi4KICAgIDA0MTA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDNFIDAwIDAwIDAwIDA5IDEw
IDAwIDAwICAuLi4uLi4uLj4uLi4uLi4uCiAgICAwNDIwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAzRiAwMCAwMCAwMCAwOSAxMCAwMCAwMCAgLi4uLi4uLi4/Li4uLi4uLgogICAgMDQzMDogMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgNDAgMDAgMDAgMDAgMDkgMTAgMDAgMDAgIC4uLi4uLi4uQC4u
Li4uLi4KICAgIDA0NDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDQxIDAwIDAwIDAwIDA5IDEw
IDAwIDAwICAuLi4uLi4uLkEuLi4uLi4uCiAgICAwNDUwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCA0MiAwMCAwMCAwMCAwOSAxMCAwMCAwMCAgLi4uLi4uLi5CLi4uLi4uLgogICAgMDQ2MDogMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgNDMgMDAgMDAgMDAgMDkgMTAgMDAgMDAgIC4uLi4uLi4uQy4u
Li4uLi4KICAgIDA0NzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDQ0IDAwIDAwIDAwIDA5IDEw
IDAwIDAwICAuLi4uLi4uLkQuLi4uLi4uCiAgICAwNDgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCA0NSAwMCAwMCAwMCAwOSAxMCAwMCAwMCAgLi4uLi4uLi5FLi4uLi4uLgogICAgMDQ5MDogMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgNDYgMDAgMDAgMDAgMDkgMTAgMDAgMDAgIC4uLi4uLi4uRi4u
Li4uLi4KICAgIDA0QTA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDQ3IDAwIDAwIDAwIDA5IDEw
IDAwIDAwICAuLi4uLi4uLkcuLi4uLi4uCiAgICAwNEIwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCA0OCAwMCAwMCAwMCAwOSAxMCAwMCAwMCAgLi4uLi4uLi5ILi4uLi4uLgogICAgMDRDMDogMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgNDkgMDAgMDAgMDAgMDkgMTAgMDAgMDAgIC4uLi4uLi4uSS4u
Li4uLi4KICAgIDA0RDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDRBIDAwIDAwIDAwIDA5IDEw
IDAwIDAwICAuLi4uLi4uLkouLi4uLi4uCiAgICAwNEUwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCA0QiAwMCAwMCAwMCAwOSAxMCAwMCAwMCAgLi4uLi4uLi5LLi4uLi4uLgogICAgMDRGMDogMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgNEMgMDAgMDAgMDAgMDkgMTAgMDAgMDAgIC4uLi4uLi4uTC4u
Li4uLi4KICAgIDA1MDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDREIDAwIDAwIDAwIDA5IDEw
IDAwIDAwICAuLi4uLi4uLk0uLi4uLi4uCiAgICAwNTEwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCA0RSAwMCAwMCAwMCAwOSAxMCAwMCAwMCAgLi4uLi4uLi5OLi4uLi4uLgogICAgMDUyMDogMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgNEYgMDAgMDAgMDAgMDkgMTAgMDAgMDAgIC4uLi4uLi4uTy4u
Li4uLi4KICAgIDA1MzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDUwIDAwIDAwIDAwIDA5IDEw
IDAwIDAwICAuLi4uLi4uLlAuLi4uLi4uCiAgICAwNTQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCA1MSAwMCAwMCAwMCAwOSAxMCAwMCAwMCAgLi4uLi4uLi5RLi4uLi4uLgogICAgMDU1MDogMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgNTIgMDAgMDAgMDAgMDkgMTAgMDAgMDAgIC4uLi4uLi4uUi4u
Li4uLi4KICAgIDA1NjA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDUzIDAwIDAwIDAwIDA5IDEw
IDAwIDAwICAuLi4uLi4uLlMuLi4uLi4uCiAgICAwNTcwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCA1NCAwMCAwMCAwMCAwOSAxMCAwMCAwMCAgLi4uLi4uLi5ULi4uLi4uLgogICAgMDU4MDogMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgNTUgMDAgMDAgMDAgMDkgMTAgMDAgMDAgIC4uLi4uLi4uVS4u
Li4uLi4KICAgIDA1OTA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDU2IDAwIDAwIDAwIDA5IDEw
IDAwIDAwICAuLi4uLi4uLlYuLi4uLi4uCiAgICAwNUEwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCA1NyAwMCAwMCAwMCAwOSAxMCAwMCAwMCAgLi4uLi4uLi5XLi4uLi4uLgogICAgMDVCMDogMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgNTggMDAgMDAgMDAgMDkgMTAgMDAgMDAgIC4uLi4uLi4uWC4u
Li4uLi4KICAgIDA1QzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDU5IDAwIDAwIDAwIDA5IDEw
IDAwIDAwICAuLi4uLi4uLlkuLi4uLi4uCiAgICAwNUQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCA1QSAwMCAwMCAwMCAwOSAxMCAwMCAwMCAgLi4uLi4uLi5aLi4uLi4uLgogICAgMDVFMDogMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgNUIgMDAgMDAgMDAgMDkgMTAgMDAgMDAgIC4uLi4uLi4uWy4u
Li4uLi4KICAgIDA1RjA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDVDIDAwIDAwIDAwIDA5IDEw
IDAwIDAwICAuLi4uLi4uLlwuLi4uLi4uCiAgICAwNjAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCA1RCAwMCAwMCAwMCAwOSAxMCAwMCAwMCAgLi4uLi4uLi5dLi4uLi4uLgogICAgMDYxMDogMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgNUUgMDAgMDAgMDAgMDkgMTAgMDAgMDAgIC4uLi4uLi4uXi4u
Li4uLi4KICAgIDA2MjA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDVGIDAwIDAwIDAwIDA5IDEw
IDAwIDAwICAuLi4uLi4uLl8uLi4uLi4uCiAgICAwNjMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCA2MCAwMCAwMCAwMCAwOSAxMCAwMCAwMCAgLi4uLi4uLi5gLi4uLi4uLgogICAgMDY0MDogMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgNjEgMDAgMDAgMDAgMDkgMTAgMDAgMDAgIC4uLi4uLi4uYS4u
Li4uLi4KICAgIDA2NTA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDYyIDAwIDAwIDAwIDA5IDEw
IDAwIDAwICAuLi4uLi4uLmIuLi4uLi4uCiAgICAwNjYwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCA2MyAwMCAwMCAwMCAwOSAxMCAwMCAwMCAgLi4uLi4uLi5jLi4uLi4uLgogICAgMDY3MDogMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgNjQgMDAgMDAgMDAgMDkgMTAgMDAgMDAgIC4uLi4uLi4uZC4u
Li4uLi4KICAgIDA2ODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDY1IDAwIDAwIDAwIDA5IDEw
IDAwIDAwICAuLi4uLi4uLmUuLi4uLi4uCiAgICAwNjkwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCA2NiAwMCAwMCAwMCAwOSAxMCAwMCAwMCAgLi4uLi4uLi5mLi4uLi4uLgogICAgMDZBMDogMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgNjcgMDAgMDAgMDAgMDkgMTAgMDAgMDAgIC4uLi4uLi4uZy4u
Li4uLi4KICAgIDA2QjA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDY4IDAwIDAwIDAwIDA5IDEw
IDAwIDAwICAuLi4uLi4uLmguLi4uLi4uCiAgICAwNkMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCA2OSAwMCAwMCAwMCAwOSAxMCAwMCAwMCAgLi4uLi4uLi5pLi4uLi4uLgogICAgMDZEMDogMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgNkEgMDAgMDAgMDAgMDkgMTAgMDAgMDAgIC4uLi4uLi4uai4u
Li4uLi4KICAgIDA2RTA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDZCIDAwIDAwIDAwIDA5IDEw
IDAwIDAwICAuLi4uLi4uLmsuLi4uLi4uCiAgICAwNkYwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCA2QyAwMCAwMCAwMCAwOSAxMCAwMCAwMCAgLi4uLi4uLi5sLi4uLi4uLgogICAgMDcwMDogMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgNkQgMDAgMDAgMDAgMDkgMTAgMDAgMDAgIC4uLi4uLi4ubS4u
Li4uLi4KICAgIDA3MTA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDZFIDAwIDAwIDAwIDA5IDEw
IDAwIDAwICAuLi4uLi4uLm4uLi4uLi4uCiAgICAwNzIwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCA2RiAwMCAwMCAwMCAwOSAxMCAwMCAwMCAgLi4uLi4uLi5vLi4uLi4uLgogICAgMDczMDogMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgNzAgMDAgMDAgMDAgMDkgMTAgMDAgMDAgIC4uLi4uLi4ucC4u
Li4uLi4KICAgIDA3NDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDcxIDAwIDAwIDAwIDA5IDEw
IDAwIDAwICAuLi4uLi4uLnEuLi4uLi4uCiAgICAwNzUwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCA3MiAwMCAwMCAwMCAwOSAxMCAwMCAwMCAgLi4uLi4uLi5yLi4uLi4uLgogICAgMDc2MDogMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgNzMgMDAgMDAgMDAgMDkgMTAgMDAgMDAgIC4uLi4uLi4ucy4u
Li4uLi4KICAgIDA3NzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDc0IDAwIDAwIDAwIDA5IDEw
IDAwIDAwICAuLi4uLi4uLnQuLi4uLi4uCiAgICAwNzgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCA3NSAwMCAwMCAwMCAwOSAxMCAwMCAwMCAgLi4uLi4uLi51Li4uLi4uLgogICAgMDc5MDogMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgNzYgMDAgMDAgMDAgMDkgMTAgMDAgMDAgIC4uLi4uLi4udi4u
Li4uLi4KICAgIDA3QTA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDc3IDAwIDAwIDAwIDA5IDEw
IDAwIDAwICAuLi4uLi4uLncuLi4uLi4uCiAgICAwN0IwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCA3OCAwMCAwMCAwMCAwOSAxMCAwMCAwMCAgLi4uLi4uLi54Li4uLi4uLgogICAgMDdDMDogMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgNzkgMDAgMDAgMDAgMDkgMTAgMDAgMDAgIC4uLi4uLi4ueS4u
Li4uLi4KICAgIDA3RDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDdBIDAwIDAwIDAwIDA5IDEw
IDAwIDAwICAuLi4uLi4uLnouLi4uLi4uCiAgICAwN0UwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCA3QiAwMCAwMCAwMCAwOSAxMCAwMCAwMCAgLi4uLi4uLi57Li4uLi4uLgogICAgMDdGMDogMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgN0MgMDAgMDAgMDAgMDkgMTAgMDAgMDAgIC4uLi4uLi4ufC4u
Li4uLi4KICAgIDA4MDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDdEIDAwIDAwIDAwIDA5IDEw
IDAwIDAwICAuLi4uLi4uLn0uLi4uLi4uCiAgICAwODEwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCA3RSAwMCAwMCAwMCAwOSAxMCAwMCAwMCAgLi4uLi4uLi5+Li4uLi4uLgogICAgMDgyMDogMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgN0YgMDAgMDAgMDAgMDkgMTAgMDAgMDAgIC4uLi4uLi4uLi4u
Li4uLi4KICAgIDA4MzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDgwIDAwIDAwIDAwIDA5IDEw
IDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwODQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCA4MSAwMCAwMCAwMCAwOSAxMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMDg1MDogMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgODIgMDAgMDAgMDAgMDkgMTAgMDAgMDAgIC4uLi4uLi4uLi4u
Li4uLi4KICAgIDA4NjA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDgzIDAwIDAwIDAwIDA5IDEw
IDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwODcwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCA4NCAwMCAwMCAwMCAwOSAxMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMDg4MDogMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgODUgMDAgMDAgMDAgMDkgMTAgMDAgMDAgIC4uLi4uLi4uLi4u
Li4uLi4KICAgIDA4OTA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDg2IDAwIDAwIDAwIDA5IDEw
IDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwOEEwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCA4NyAwMCAwMCAwMCAwOSAxMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMDhCMDogMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgODggMDAgMDAgMDAgMDkgMTAgMDAgMDAgIC4uLi4uLi4uLi4u
Li4uLi4KICAgIDA4QzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDg5IDAwIDAwIDAwIDA5IDEw
IDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwOEQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCA4QSAwMCAwMCAwMCAwOSAxMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMDhFMDogMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgOEIgMDAgMDAgMDAgMDkgMTAgMDAgMDAgIC4uLi4uLi4uLi4u
Li4uLi4KICAgIDA4RjA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDhDIDAwIDAwIDAwIDA5IDEw
IDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwOTAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCA4RCAwMCAwMCAwMCAwOSAxMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMDkxMDogMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgOEUgMDAgMDAgMDAgMDkgMTAgMDAgMDAgIC4uLi4uLi4uLi4u
Li4uLi4KICAgIDA5MjA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDhGIDAwIDAwIDAwIDA5IDEw
IDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwOTMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCA5MCAwMCAwMCAwMCAwOSAxMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMDk0MDogMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgOTEgMDAgMDAgMDAgMDkgMTAgMDAgMDAgIC4uLi4uLi4uLi4u
Li4uLi4KICAgIDA5NTA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDkyIDAwIDAwIDAwIDA5IDEw
IDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwOTYwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCA5MyAwMCAwMCAwMCAwOSAxMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMDk3MDogMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgOTQgMDAgMDAgMDAgMDkgMTAgMDAgMDAgIC4uLi4uLi4uLi4u
Li4uLi4KICAgIDA5ODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDk1IDAwIDAwIDAwIDA5IDEw
IDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwOTkwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCA5NiAwMCAwMCAwMCAwOSAxMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMDlBMDogMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgOTcgMDAgMDAgMDAgMDkgMTAgMDAgMDAgIC4uLi4uLi4uLi4u
Li4uLi4KICAgIDA5QjA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDk4IDAwIDAwIDAwIDA5IDEw
IDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwOUMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCA5OSAwMCAwMCAwMCAwOSAxMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMDlEMDogMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgOUEgMDAgMDAgMDAgMDkgMTAgMDAgMDAgIC4uLi4uLi4uLi4u
Li4uLi4KICAgIDA5RTA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDlCIDAwIDAwIDAwIDA5IDEw
IDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwOUYwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCA5QyAwMCAwMCAwMCAwOSAxMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMEEwMDogMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgOUQgMDAgMDAgMDAgMDkgMTAgMDAgMDAgIC4uLi4uLi4uLi4u
Li4uLi4KICAgIDBBMTA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDlFIDAwIDAwIDAwIDA5IDEw
IDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwQTIwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCA5RiAwMCAwMCAwMCAwOSAxMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMEEzMDogMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgQTAgMDAgMDAgMDAgMDkgMTAgMDAgMDAgIC4uLi4uLi4uLi4u
Li4uLi4KICAgIDBBNDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIEExIDAwIDAwIDAwIDA5IDEw
IDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwQTUwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCBBMiAwMCAwMCAwMCAwOSAxMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMEE2MDogMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgQTMgMDAgMDAgMDAgMDkgMTAgMDAgMDAgIC4uLi4uLi4uLi4u
Li4uLi4KICAgIDBBNzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIEE0IDAwIDAwIDAwIDA5IDEw
IDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwQTgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCBBNSAwMCAwMCAwMCAwOSAxMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMEE5MDogMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgQTYgMDAgMDAgMDAgMDkgMTAgMDAgMDAgIC4uLi4uLi4uLi4u
Li4uLi4KICAgIDBBQTA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIEE3IDAwIDAwIDAwIDA5IDEw
IDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwQUIwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCBBOCAwMCAwMCAwMCAwOSAxMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMEFDMDogMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgQTkgMDAgMDAgMDAgMDkgMTAgMDAgMDAgIC4uLi4uLi4uLi4u
Li4uLi4KICAgIDBBRDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIEFBIDAwIDAwIDAwIDA5IDEw
IDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwQUUwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCBBQiAwMCAwMCAwMCAwOSAxMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMEFGMDogMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgQUMgMDAgMDAgMDAgMDkgMTAgMDAgMDAgIC4uLi4uLi4uLi4u
Li4uLi4KICAgIDBCMDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIEFEIDAwIDAwIDAwIDA5IDEw
IDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwQjEwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCBBRSAwMCAwMCAwMCAwOSAxMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMEIyMDogMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgQUYgMDAgMDAgMDAgMDkgMTAgMDAgMDAgIC4uLi4uLi4uLi4u
Li4uLi4KICAgIDBCMzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIEIwIDAwIDAwIDAwIDA5IDEw
IDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwQjQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCBCMSAwMCAwMCAwMCAwOSAxMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMEI1MDogMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgQjIgMDAgMDAgMDAgMDkgMTAgMDAgMDAgIC4uLi4uLi4uLi4u
Li4uLi4KICAgIDBCNjA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIEIzIDAwIDAwIDAwIDA5IDEw
IDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwQjcwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCBCNCAwMCAwMCAwMCAwOSAxMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMEI4MDogMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgQjUgMDAgMDAgMDAgMDkgMTAgMDAgMDAgIC4uLi4uLi4uLi4u
Li4uLi4KICAgIDBCOTA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIEI2IDAwIDAwIDAwIDA5IDEw
IDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwQkEwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCBCNyAwMCAwMCAwMCAwOSAxMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMEJCMDogMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgQjggMDAgMDAgMDAgMDkgMTAgMDAgMDAgIC4uLi4uLi4uLi4u
Li4uLi4KICAgIDBCQzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIEI5IDAwIDAwIDAwIDA5IDEw
IDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwQkQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCBCQSAwMCAwMCAwMCAwOSAxMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMEJFMDogMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgQkIgMDAgMDAgMDAgMDkgMTAgMDAgMDAgIC4uLi4uLi4uLi4u
Li4uLi4KICAgIDBCRjA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIEJDIDAwIDAwIDAwIDA5IDEw
IDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwQzAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCBCRCAwMCAwMCAwMCAwOSAxMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMEMxMDogMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgQkUgMDAgMDAgMDAgMDkgMTAgMDAgMDAgIC4uLi4uLi4uLi4u
Li4uLi4KICAgIDBDMjA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIEJGIDAwIDAwIDAwIDA5IDEw
IDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwQzMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCBDMCAwMCAwMCAwMCAwOSAxMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMEM0MDogMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgQzEgMDAgMDAgMDAgMDkgMTAgMDAgMDAgIC4uLi4uLi4uLi4u
Li4uLi4KICAgIDBDNTA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIEMyIDAwIDAwIDAwIDA5IDEw
IDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwQzYwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCBDMyAwMCAwMCAwMCAwOSAxMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMEM3MDogMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgQzQgMDAgMDAgMDAgMDkgMTAgMDAgMDAgIC4uLi4uLi4uLi4u
Li4uLi4KICAgIDBDODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIEM1IDAwIDAwIDAwIDA5IDEw
IDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwQzkwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCBDNiAwMCAwMCAwMCAwOSAxMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMENBMDogMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgQzcgMDAgMDAgMDAgMDkgMTAgMDAgMDAgIC4uLi4uLi4uLi4u
Li4uLi4KICAgIDBDQjA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIEM4IDAwIDAwIDAwIDA5IDEw
IDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwQ0MwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCBDOSAwMCAwMCAwMCAwOSAxMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMENEMDogMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgQ0EgMDAgMDAgMDAgMDkgMTAgMDAgMDAgIC4uLi4uLi4uLi4u
Li4uLi4KICAgIDBDRTA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIENCIDAwIDAwIDAwIDA5IDEw
IDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwQ0YwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCBDQyAwMCAwMCAwMCAwOSAxMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMEQwMDogMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgQ0QgMDAgMDAgMDAgMDkgMTAgMDAgMDAgIC4uLi4uLi4uLi4u
Li4uLi4KICAgIDBEMTA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIENFIDAwIDAwIDAwIDA5IDEw
IDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwRDIwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCBDRiAwMCAwMCAwMCAwOSAxMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMEQzMDogMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgRDAgMDAgMDAgMDAgMDkgMTAgMDAgMDAgIC4uLi4uLi4uLi4u
Li4uLi4KICAgIDBENDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIEQxIDAwIDAwIDAwIDA5IDEw
IDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwRDUwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCBEMiAwMCAwMCAwMCAwOSAxMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMEQ2MDogMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgRDMgMDAgMDAgMDAgMDkgMTAgMDAgMDAgIC4uLi4uLi4uLi4u
Li4uLi4KICAgIDBENzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIEQ0IDAwIDAwIDAwIDA5IDEw
IDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwRDgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCBENSAwMCAwMCAwMCAwOSAxMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMEQ5MDogMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgRDYgMDAgMDAgMDAgMDkgMTAgMDAgMDAgIC4uLi4uLi4uLi4u
Li4uLi4KICAgIDBEQTA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIEQ3IDAwIDAwIDAwIDA5IDEw
IDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwREIwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCBEOCAwMCAwMCAwMCAwOSAxMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMERDMDogMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgRDkgMDAgMDAgMDAgMDkgMTAgMDAgMDAgIC4uLi4uLi4uLi4u
Li4uLi4KICAgIDBERDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIERBIDAwIDAwIDAwIDA5IDEw
IDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwREUwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCBEQiAwMCAwMCAwMCAwOSAxMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMERGMDogMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgREMgMDAgMDAgMDAgMDkgMTAgMDAgMDAgIC4uLi4uLi4uLi4u
Li4uLi4KICAgIDBFMDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIEREIDAwIDAwIDAwIDA5IDEw
IDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwRTEwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCBERSAwMCAwMCAwMCAwOSAxMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMEUyMDogMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgREYgMDAgMDAgMDAgMDkgMTAgMDAgMDAgIC4uLi4uLi4uLi4u
Li4uLi4KICAgIDBFMzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIEUwIDAwIDAwIDAwIDA5IDEw
IDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwRTQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCBFMSAwMCAwMCAwMCAwOSAxMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMEU1MDogMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgRTIgMDAgMDAgMDAgMDkgMTAgMDAgMDAgIC4uLi4uLi4uLi4u
Li4uLi4KICAgIDBFNjA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIEUzIDAwIDAwIDAwIDA5IDEw
IDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwRTcwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCBFNCAwMCAwMCAwMCAwOSAxMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMEU4MDogMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgRTUgMDAgMDAgMDAgMDkgMTAgMDAgMDAgIC4uLi4uLi4uLi4u
Li4uLi4KICAgIDBFOTA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIEU2IDAwIDAwIDAwIDA5IDEw
IDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwRUEwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCBFNyAwMCAwMCAwMCAwOSAxMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMEVCMDogMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgRTggMDAgMDAgMDAgMDkgMTAgMDAgMDAgIC4uLi4uLi4uLi4u
Li4uLi4KICAgIDBFQzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIEU5IDAwIDAwIDAwIDA5IDEw
IDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwRUQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCBFQSAwMCAwMCAwMCAwOSAxMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMEVFMDogMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgRUIgMDAgMDAgMDAgMDkgMTAgMDAgMDAgIC4uLi4uLi4uLi4u
Li4uLi4KICAgIDBFRjA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIEVDIDAwIDAwIDAwIDA5IDEw
IDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwRjAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCBFRCAwMCAwMCAwMCAwOSAxMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMEYxMDogMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgRUUgMDAgMDAgMDAgMDkgMTAgMDAgMDAgIC4uLi4uLi4uLi4u
Li4uLi4KICAgIDBGMjA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIEVGIDAwIDAwIDAwIDA5IDEw
IDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwRjMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCBGMCAwMCAwMCAwMCAwOSAxMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMEY0MDogMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgRjEgMDAgMDAgMDAgMDkgMTAgMDAgMDAgIC4uLi4uLi4uLi4u
Li4uLi4KICAgIDBGNTA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIEYyIDAwIDAwIDAwIDA5IDEw
IDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwRjYwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCBGMyAwMCAwMCAwMCAwOSAxMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMEY3MDogMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgRjQgMDAgMDAgMDAgMDkgMTAgMDAgMDAgIC4uLi4uLi4uLi4u
Li4uLi4KICAgIDBGODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIEY1IDAwIDAwIDAwIDA5IDEw
IDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwRjkwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCBGNiAwMCAwMCAwMCAwOSAxMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMEZBMDogMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgRjcgMDAgMDAgMDAgMDkgMTAgMDAgMDAgIC4uLi4uLi4uLi4u
Li4uLi4KICAgIDBGQjA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIEY4IDAwIDAwIDAwIDA5IDEw
IDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwRkMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCBGOSAwMCAwMCAwMCAwOSAxMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMEZEMDogMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgRkEgMDAgMDAgMDAgMDkgMTAgMDAgMDAgIC4uLi4uLi4uLi4u
Li4uLi4KICAgIDBGRTA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIEZCIDAwIDAwIDAwIDA5IDEw
IDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwRkYwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCBGQyAwMCAwMCAwMCAwOSAxMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMTAwMDogMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgRkQgMDAgMDAgMDAgMDkgMTAgMDAgMDAgIC4uLi4uLi4uLi4u
Li4uLi4KICAgIDEwMTA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIEZFIDAwIDAwIDAwIDA5IDEw
IDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAxMDIwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCBGRiAwMCAwMCAwMCAwQSAwQyAwRCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMTAzMDogRkYg
RkYgRkYgRkYgMDEgMDAgMDAgMDAgMDEgMEMgODAgMDAgMDAgMDAgQzAgRkUgIC4uLi4uLi4uLi4u
Li4uLi4KICAgIDEwNDA6IDAwIDAwIDAwIDAwIDAxIDBDIDgxIDAwIDAwIDAwIDE4IERGIDc4IDAw
IDAwIDAwICAuLi4uLi4uLi4uLi54Li4uCiAgICAxMDUwOiAwMSAwQyA4MiAwMCAwMCAwMCAxOCBE
MyA1OCAwMCAwMCAwMCAwMSAwQyA4MyAwMCAgLi4uLi4uLi5YLi4uLi4uLgogICAgMTA2MDogMDAg
MDAgMTggRjcgMTggMDAgMDAgMDAgMDEgMEMgODQgMDAgMDAgMDAgMTggQzkgIC4uLi4uLi4uLi4u
Li4uLi4KICAgIDEwNzA6IDM4IDAwIDAwIDAwIDAyIDBBIDAwIDAwIDAyIDAwIDAwIDAwIDAwIDAw
IDAyIDBBICA4Li4uLi4uLi4uLi4uLi4uCiAgICAxMDgwOiAwMCAwOSAwOSAwMCAwMCAwMCAwRiAw
MCAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uLi4uLi4KClNTRFQgQCAweDAwMDAwMDAwMDAw
MDAwMDAKICAgIDAwMDA6IDUzIDUzIDQ0IDU0IDY3IDAwIDAwIDAwIDAyIEZFIDQxIDREIDQ0IDAw
IDAwIDAwICBTU0RUZy4uLi4uQU1ELi4uCiAgICAwMDEwOiA0MyA1MCA0RCA0NCA1MyA0RCAwMCAw
MCAwMSAwMCAwMCAwMCA0OSA0RSA1NCA0QyAgQ1BNRFNNLi4uLi4uSU5UTAogICAgMDAyMDogMzEg
MDMgMjMgMjAgNUIgODAgNDMgNDQgNDkgNDQgMDAgMEMgMDAgQjAgNDUgQTkgIDEuIyBbLkNESUQu
Li4uRS4KICAgIDAwMzA6IDBBIDQwIDVCIDgxIDE0IDQzIDQ0IDQ5IDQ0IDAxIDREIDQxIDUzIDU0
IDQwIDA0ICAuQFsuLkNESUQuTUFTVEAuCiAgICAwMDQwOiA0MyA0NiA0QyA0NyAwOCAwMCA0OCAx
QiA1QiA4MCA0MyA0NCA1MyA1NCAwMCA0RCAgQ0ZMRy4uSC5bLkNEU1QuTQogICAgMDA1MDogNDEg
NTMgNTQgMEIgMDAgMjAgNUIgODEgMEYgNDMgNDQgNTMgNTQgMDEgMDAgMDAgIEFTVC4uIFsuLkNE
U1QuLi4KICAgIDAwNjA6IDQzIDU0IDQxIDQ3IDgwIDAwIDBDICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBDVEFHLi4uCgpITUFUIEAgMHgwMDAwMDAwMDAwMDAwMDAwCiAgICAwMDAwOiA0OCA0
RCA0MSA1NCBBNCAwMCAwMCAwMCAwMiBDQSA0MSA0RCA0NCAwMCAwMCAwMCAgSE1BVC4uLi4uLkFN
RC4uLgogICAgMDAxMDogNDEgNkQgNjQgNTQgNjEgNjIgNkMgNjUgMDEgMDAgMDAgMDAgNDEgNEQg
NDQgMjAgIEFtZFRhYmxlLi4uLkFNRCAKICAgIDAwMjA6IDAxIDAwIDAwIDAwIDAwIDAwIDAwIDAw
IDAwIDAwIDAwIDAwIDI4IDAwIDAwIDAwICAuLi4uLi4uLi4uLi4oLi4uCiAgICAwMDMwOiAwMSAw
MCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4u
Li4uLgogICAgMDA0MDogMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAg
MDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAgIDAwNTA6IDAxIDAwIDAwIDAwIDJBIDAwIDAwIDAw
IDAwIDAwIDAwIDAwIDAxIDAwIDAwIDAwICAuLi4uKi4uLi4uLi4uLi4uCiAgICAwMDYwOiAwMSAw
MCAwMCAwMCAwMCAwMCAwMCAwMCBFOCAwMyAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4u
Li4uLgogICAgMDA3MDogMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgNkUgMDAgMDEgMDAgMDAgMDAg
MkEgMDAgIC4uLi4uLi4ubi4uLi4uKi4KICAgIDAwODA6IDAwIDAwIDAwIDAzIDAwIDAwIDAxIDAw
IDAwIDAwIDAxIDAwIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwMDkwOiAwMCAw
MCA2NCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi5kLi4uLi4uLi4u
Li4uLgogICAgMDBBMDogMDAgMDAgNjAgMDMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC4uYC4KClZGQ1QgQCAweDAwMDAwMDAwMDAwMDAwMDAKICAgIDAwMDA6IDU2IDQ2IDQz
IDU0IDg0IEU2IDAwIDAwIDAxIEY5IDQxIDREIDQ0IDIwIDIwIDIwICBWRkNULi4uLi4uQU1EICAg
CiAgICAwMDEwOiA0MSAyMCA0RCAyMCA0OSAyMCAwMCAwMCAwMSAwMCAwMCAwMCA0MSA0RCA0NCAw
MCAgQSBNIEkgLi4uLi4uQU1ELgogICAgMDAyMDogNDcgNEYgNTAgMzEgMzIgOUIgQTMgNUQgQkQg
QzYgQ0YgNDkgOTUgQTYgRTggRTQgIEdPUDEyLi5dLi4uSS4uLi4KICAgIDAwMzA6IDJFIENEIDc5
IEE3IDRDIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAuLnkuTC4uLi4uLi4uLi4u
CiAgICAwMDQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMSAwMCAwMCAw
MCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMDA1MDogMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDIg
MTAgREYgNjcgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uZy4uLi4KICAgIDAwNjA6IDAxIDAwIDAw
IDAwIDAwIEU2IDAwIDAwIDU1IEFBIDczIEU5IEE1IDAyIDAwIDAwICAuLi4uLi4uLlUucy4uLi4u
CiAgICAwMDcwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMDA4MDogNDggMDIgMDAgMDAgMDAgMDAgNDkgNDIgNEQg
MTggMjYgOTMgMDAgMDAgMDAgMDAgIEguLi4uLklCTS4mLi4uLi4KICAgIDAwOTA6IDAwIDAwIDAw
IDAwIDAwIDAwIDAwIDA0IDIwIDM3IDM2IDMxIDMyIDM5IDM1IDM1ICAuLi4uLi4uLiA3NjEyOTU1
CiAgICAwMEEwOiAzMiAzMCAwMCAwMCAwMCAwMCAwMCAwMCA5RCAwMiAwMCAwMCAwMCAwMCAwMCAw
MCAgMjAuLi4uLi4uLi4uLi4uLgogICAgMDBCMDogMjQgMDIgMDAgMDAgMDAgMDAgMDAgMDAgMzAg
MzcgMkYgMzIgMzAgMkYgMzEgMzYgICQuLi4uLi4uMDcvMjAvMTYKICAgIDAwQzA6IDIwIDMwIDMx
IDNBIDM0IDM1IDAwIDAwIDM3IDAwIDAwIDAwIEU5IEIwIDAzIDAwICAgMDE6NDUuLjcuLi4uLi4u
CiAgICAwMEQwOiBFOSBCRiAwMyAwMCAwMCAwMCBGNCAwMCAwMCAxNyAwMCAwMCAwMCBEMCAwMSAw
MCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMDBFMDogMjYgNjggMjAgRTEgMDIgODAgN0UgMDAgQTIg
MTggNDUgMDIgMTIgMDAgMDAgMDAgICZoIC4uLn4uLi5FLi4uLi4KICAgIDAwRjA6IDAwIDAwIDAw
IDNDIDQwIDBFIDAyIDA3IDNDIDAxIDFBIDAwIDA0IDAwIDAwIDAwICAuLi48QC4uLjwuLi4uLi4u
CiAgICAwMTAwOiBFRSBBMCBGRiAwNiAwMCAwOCAzMCA0MCAwRSAwMSAwMCAwMCAwMCAwMCAwMCAw
MCAgLi4uLi4uMEAuLi4uLi4uLgogICAgMDExMDogMTQgMDMgMDAgMDAgMDAgMDAgMDAgMDAgQkUg
N0UgMTEgMDAgQjkgMDcgMUEgRDYgIC4uLi4uLi4uLn4uLi4uLi4KICAgIDAxMjA6IDUwIDJDIDAw
IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDBDIDQwIDQxIDQzICBQLC4uLi4uLi4uLi4uQEFD
CiAgICAwMTMwOiAwMCAwMCAwMCAwMCAxMCAwMCAwMCAwMCA0MiAwMCAwMCAwMCBGMCA3RCBDNiAw
NyAgLi4uLi4uLi5CLi4uLn0uLgogICAgMDE0MDogMjAgMDAgMjAgMDAgMTIgMDAgMEUgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgICAuIC4uLi4uLi4uLi4uLi4KICAgIDAxNTA6IDAwIDAwIDAw
IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDMxIDMxIDMzIDJEICAuLi4uLi4uLi4uLi4xMTMt
CiAgICAwMTYwOiA1NiAzMyAzNCAzMSAzMSAzMSAyRCA0NiAzMSAwMCA0NSA0QyA0QyA0NSA1MyA0
RCAgVjM0MTExLUYxLkVMTEVTTQogICAgMDE3MDogNDUgNTIgNDUgMDAgNTAgNDMgNDkgNUYgNDUg
NTggNTAgNTIgNDUgNTMgNTMgMDAgIEVSRS5QQ0lfRVhQUkVTUy4KICAgIDAxODA6IDQ3IDQ0IDQ0
IDUyIDM1IDAwIDBEIDBBIDMxIDMxIDMzIDJEIDREIDUzIDQ5IDU0ICBHRERSNS4uLjExMy1NU0lU
CiAgICAwMTkwOiA1NiAzMyAzNCAzMSA0RCA0OCAyRSAzMSAzNiAzMSAyMCAyMCAyMCAyMCAyMCAy
MCAgVjM0MU1ILjE2MSAgICAgIAogICAgMDFBMDogMjAgMjAgMjAgMjAgMjAgMjAgMjAgMjAgMjAg
MjAgMjAgMjAgMjAgMjAgMjAgMjAgICAgICAgICAgICAgICAgICAKICAgIDAxQjA6IDIwIDIwIDIw
IDIwIDIwIDIwIDIwIDIwIDIwIDIwIDIwIDIwIDIwIDIwIDIwIDIwICAgICAgICAgICAgICAgICAg
CiAgICAwMUMwOiAyMCAyMCAyMCAyMCAyMCAyMCAyMCAyMCAyMCAyMCAyMCAyMCAyMCAyMCAyMCAy
MCAgICAgICAgICAgICAgICAgIAogICAgMDFEMDogMjAgMjAgMjAgMjAgMEQgMEEgMDAgMEQgMEEg
MjAgMEQgMEEgMDAgMjggNDMgMjkgICAgICAuLi4uLiAuLi4oQykKICAgIDAxRTA6IDIwIDMxIDM5
IDM4IDM4IDJEIDMyIDMwIDMxIDMwIDJDIDIwIDQxIDY0IDc2IDYxICAgMTk4OC0yMDEwLCBBZHZh
CiAgICAwMUYwOiA2RSA2MyA2NSA2NCAyMCA0RCA2OSA2MyA3MiA2RiAyMCA0NCA2NSA3NiA2OSA2
MyAgbmNlZCBNaWNybyBEZXZpYwogICAgMDIwMDogNjUgNzMgMkMgMjAgNDkgNkUgNjMgMkUgMDAg
NDEgNTQgNEYgNEQgNDIgNDkgNEYgIGVzLCBJbmMuLkFUT01CSU8KICAgIDAyMTA6IDUzIDQyIDRC
IDJEIDQxIDREIDQ0IDIwIDU2IDQ1IDUyIDMwIDMxIDM1IDJFIDMwICBTQkstQU1EIFZFUjAxNS4w
CiAgICAwMjIwOiAzNSAzMCAyRSAzMCAzMCAzMCAyRSAzMCAzMCAzMCAyRSAzMCAzMCAzMCAzMCAz
MCAgNTAuMDAwLjAwMC4wMDAwMAogICAgMDIzMDogMzAgMDAgMzAgMzcgNzMgMkUgMzUgMzAgMzAg
MjAgMjAgMjAgMjAgMjAgMDAgMzEgIDAuMDdzLjUwMCAgICAgLjEKICAgIDAyNDA6IDMyIDM5IDMz
IDMzIDMzIDM1IDIwIDAwIDMzIDM1IDM0IDMwIDMzIDM0IDIwIDIwICAyOTMzMzUgLjM1NDAzNCAg
CiAgICAwMjUwOiAwMCAyMCAyMCAyMCAyMCAyMCAyMCAyMCAyMCAwMCA0RCA1MyA0OSA1RiA0NSA0
QyAgLiAgICAgICAgLk1TSV9FTAogICAgMDI2MDogNEMgNDUgNTMgNEQgNDUgNTIgNDUgNUYgNDQg
MzAgMzAgMzkgMzAgMzggNUYgNTggIExFU01FUkVfRDAwOTA4X1gKICAgIDAyNzA6IDU0IDVGIDQ3
IDQ0IDM1IDVGIDM0IDQ3IDQyIDVGIDQ4IDU5IDRFIDQ5IDU4IDVDICBUX0dENV80R0JfSFlOSVhc
CiAgICAwMjgwOiA2MyA2RiA2RSA2NiA2OSA2NyAyRSA2OCAwMCAwMCAwMCA5MCAyNCAwMCAwMSAw
MSAgY29uZmlnLmguLi4uJC4uLgogICAgMDI5MDogNDEgNTQgNEYgNEQgMDAgQzAgQzkgMDMgQ0Eg
MDEgNkQgMDIgMUUgMDEgRUUgMDMgIEFUT00uLi4uLi5tLi4uLi4KICAgIDAyQTA6IDAwIDAwIDAw
IDAwIDYyIDE0IDEzIDM0IDQ4IDAyIEZFIDk3IEE0IDk4IEEwIDAwICAuLi4uYi4uNEguLi4uLi4u
CiAgICAwMkIwOiA1MCA0MyA0OSA1MiAwMiAxMCBERiA2NyAwMCAwMCAxOCAwMCAwMCAwMCAwMCAw
MyAgUENJUi4uLmcuLi4uLi4uLgogICAgMDJDMDogNzMgMDAgMzIgMEYgMDAgMDAgMDAgMDAgNDEg
NEQgNDQgMjAgNDEgNTQgNEYgNEQgIHMuMi4uLi4uQU1EIEFUT00KICAgIDAyRDA6IDQyIDQ5IDRG
IDUzIDAwIEFBIDEyIDNBIDMwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICBCSU9TLi4uOjAuLi4uLi4u
CiAgICAwMkUwOiAwMCAxMCAzQSA2MCAxQSAyMiAzMSA2NyAwMyA4NyA1NSA4MSA5MyA5QSAzMyA2
RSAgLi46YC4iMWcuLlUuLi4zbgogICAgMDJGMDogN0MgMDEgMDAgMDAgMDAgMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgIHwuLi4uLi4uLi4uLi4uLi4KICAgIDAzMDA6IDAwIDAwIDAw
IDAwIDAwIDU2IDFFIDBFIDFGIEU4IERBIDJBIDgxIDREIDUwIDAwICAuLi4uLlYuLi4uLiouTVAu
CiAgICAwMzEwOiAyMCAxRiA1RSAxRSAwNiA2NiA1MCA2NiA1MSA2NiA1MiA2NiA1MyA2NiA1NSA2
NiAgIC5eLi5mUGZRZlJmU2ZVZgogICAgMDMyMDogNTYgNjYgNTcgMEUgMUYgQTMgMzggMDIgOEMg
MEUgMkMgMDIgQjIgMjAgRTggOUEgIFZmVy4uLjguLi4sLi4gLi4KICAgIDAzMzA6IDJFIDBCIEMw
IDc1IDE0IEEyIDAyIDAwIDY2IDVGIDY2IDVFIDY2IDVEIDY2IDVCICAuLi51Li4uLmZfZl5mXWZb
CiAgICAwMzQwOiA2NiA1QSA2NiA1OSA2NiA1OCAwNyAxRiBDQiBFOCBCNCAyRiBFOCA3QiAyRCAz
MiAgZlpmWWZYLi4uLi4vLnstMgogICAgMDM1MDogRDIgODkgMTYgM0EgMDIgQTEgMzggMDIgNjYg
QzEgQzAgMTAgQTEgMkMgMDIgRTggIC4uLjouLjguZi4uLi4sLi4KICAgIDAzNjA6IDE1IDA0IEU4
IDI4IDA0IEU4IEYwIDAzIEU4IDVFIDA1IEU4IDU1IDAzIEU4IDc1ICAuLi4oLi4uLi5eLi5VLi51
CiAgICAwMzcwOiAyQSBGNyA0NSA1MCAwMCAyMCA3NSAxMyBFOCAyMiAyQSAwQiBDMCA3NCAwQyBF
OCAgKi5FUC4gdS4uIiouLnQuLgogICAgMDM4MDogNDkgMDAgRTggQTEgNTggRTggRTUgMDMgRTgg
RTggNTggRTggQjkgMDAgQjQgODAgIEkuLi5YLi4uLi5YLi4uLi4KICAgIDAzOTA6IEU4IDZDIDJE
IDhBIEM3IDY2IEMxIEUwIDEwIDhBIEUzIEIwIDE0IDY2IDUwIEJCICAubC0uLmYuLi4uLi4uZlAu
CiAgICAwM0EwOiAwOCAwMCBFOCA4NiAyOCBBOCAwMSA2NiA1OCA3NCAwMiBCMCAyMCA2NiBBMyAy
NiAgLi4uLiguLmZYdC4uIGYuJgogICAgMDNCMDogOTMgRTggNzIgMDMgRTggRTAgMDMgRTggNkIg
MkYgNjYgNUYgNjYgNUUgNjYgNUQgIC4uci4uLi4uay9mX2ZeZl0KICAgIDAzQzA6IDY2IDVCIDY2
IDVBIDY2IDU5IDY2IDU4IDA3IDFGIENCIDJFIDhCIDFFIDJDIDAyICBmW2ZaZllmWC4uLi4uLiwu
CiAgICAwM0QwOiA4MyAzRSBEQiAwMyAwMCA3NSAwNCA4OSAxRSBEOSAwMyAxRSAyRSA4RSAxRSBE
MSAgLj4uLi51Li4uLi4uLi4uLgogICAgMDNFMDogMDMgOUMgRkEgNjYgQzcgMDYgMDggMDEgNjUg
RjAgMDAgRjAgQzcgMDYgNDAgMDAgIC4uLmYuLi4uZS4uLi4uQC4KICAgIDAzRjA6IEVFIDAzIDg5
IDFFIDQyIDAwIEM3IDA2IEI0IDAxIEVFIDAzIDg5IDFFIEI2IDAxICAuLi4uQi4uLi4uLi4uLi4u
CiAgICAwNDAwOiBDNyAwNiA3QyAwMCA0NCA2MSA4OSAxRSA3RSAwMCBDNyAwNiAwQyAwMSA1NyA2
NSAgLi58LkRhLi5+Li4uLi5XZQogICAgMDQxMDogODkgMUUgMEUgMDEgQzcgMDYgQTggMDQgODQg
NUIgODkgMUUgQUEgMDQgMkUgOEUgIC4uLi4uLi4uLlsuLi4uLi4KICAgIDA0MjA6IDFFIEQ5IDAz
IDhCIEMzIEEzIDg2IDVCIEEzIDk2IDVCIEEzIEE4IDVCIDlEIDFGICAuLi4uLi4uWy4uWy4uWy4u
CiAgICAwNDMwOiBDMyA1MCA0RCA0OSA0NCBFRSAwMyBBQSA0OCAwMCAwMCAwMCBBMCAwMCBCMCAw
MCAgLlBNSUQuLi5ILi4uLi4uLgogICAgMDQ0MDogQjggMDAgQzAgMDAgMDAgMDAgMDAgQkIgMDAg
MDAgRTggREUgMjcgNjYgQzEgRTggIC4uLi4uLi4uLi4uLidmLi4KICAgIDA0NTA6IDEwIEEzIDRF
IDAyIEMzIDAwIEU4IEE3IDJFIEU4IDUyIDAyIDc1IDFCIDJFIDNBICAuLk4uLi4uLi4uUi51Li46
CiAgICAwNDYwOiAyNiA0NiAwMiA3NSAwNSBFOCA0NyAwMCBFQiAxMSA4MCBGQyA0RiA3NSAwNSBF
OCAgJkYudS4uRy4uLi4uT3UuLgogICAgMDQ3MDogOTYgNDMgRUIgMDcgRTggRTUgNEEgRUIgMDIg
QjQgMDEgRTggQTcgMkUgQ0YgRTggIC5DLi4uLkouLi4uLi4uLi4KICAgIDA0ODA6IDdFIDJFIEU4
IDI5IDAyIDc1IDA1IEU4IDI1IDAwIEVCIDAyIEI0IDAxIEU4IDk0ICB+Li4pLnUuLiUuLi4uLi4u
CiAgICAwNDkwOiAyRSBDQiBFOCA2QiAyRSBFOCAxNiAwMiA3NSAwRiA4MCBGQyA0RiA3NSAwNSBF
OCAgLi4uay4uLi51Li4uT3UuLgogICAgMDRBMDogNjYgNDMgRUIgMDcgRTggQjUgNEEgRUIgMDIg
QjQgMDEgRTggNzcgMkUgQ0IgMUUgIGZDLi4uLkouLi4uLncuLi4KICAgIDA0QjA6IDA2IDY2IDUw
IDY2IDUxIDY2IDUyIDY2IDUzIDY2IDU1IDY2IDU2IDY2IDU3IDBFICAuZlBmUWZSZlNmVWZWZlcu
CiAgICAwNEMwOiAxRiAzQyAwNCA3NSAyMyBCQiAwQiAwMCBFOCA2MCAyNyA4RCAzNiAxQiAwMSA4
QSAgLjwudSMuLi4uYCcuNi4uLgogICAgMDREMDogM0MgODAgRUYgMzAgQjMgMDIgOEIgRUMgODkg
NUUgMEMgODkgNDYgMDQgNjYgQzEgIDwuLjAuLi4uLl4uLkYuZi4KICAgIDA0RTA6IEU4IDEwIDg5
IDQ2IDAwIEU5IEE0IDAxIDNDIDA1IDc1IDE4IEU4IDgxIDAyIEU4ICAuLi5GLi4uLjwudS4uLi4u
CiAgICAwNEYwOiBEOCAyQiA4QiBFQyA4OSA1NiAxMCA4OSA0NiAwMCA2NiBDMSBFOCAxMCA4OSA0
NiAgLisuLi5WLi5GLmYuLi4uRgogICAgMDUwMDogMDQgRTkgODggMDEgM0MgMDYgNzUgMzkgRTgg
NzMgMDIgNjYgRDEgRTAgOEIgRUMgIC4uLi48LnU5LnMuZi4uLi4KICAgIDA1MTA6IDg5IDQ2IDE0
IEJCIDAyIDAwIEU4IDEyIDI3IDg4IDQ2IDE4IEU4IDYzIDAyIDY2ICAuRi4uLi4uLicuRi4uYy5m
CiAgICAwNTIwOiAwQiBDMCAwRiA4NCA1RSAwMSA2NiA4OSA0NiAwQyBCQiAwNiAwMCBFOCBGQiAy
NiAgLi4uLl4uZi5GLi4uLi4uJgogICAgMDUzMDogMzMgQzAgNjYgODkgNDYgMDAgMkUgOEIgMTYg
NEUgMDIgODkgNTYgMTAgRTkgNEIgIDMuZi5GLi4uLk4uLlYuLksKICAgIDA1NDA6IDAxIDNDIDBC
IDc1IDI0IDBBIERCIDc1IDExIEI5IDgwIDAwIEJCIDAyIDAwIDhCICAuPC51JC4udS4uLi4uLi4u
CiAgICAwNTUwOiBFQyA4OSA1RSAwQyA4OSA0RSAxNCBFOSAzMiAwMSA4QSBDNyBFOCA0NSAwMSBF
OCAgLi5eLi5OLi4yLi4uLkUuLgogICAgMDU2MDogRTcgMEUgMEYgODQgMUUgMDEgRTkgMjMgMDEg
M0MgMTcgNzUgMjEgRTggNzIgMDYgIC4uLi4uLi4jLjwudSEuci4KICAgIDA1NzA6IDc0IDA2IEU4
IDY1IDBEIEU4IEM3IDE4IEU4IDkzIDA3IEU4IEJFIDBFIDMzIEM5ICB0Li5lLi4uLi4uLi4uLjMu
CiAgICAwNTgwOiA2NiBDMSBFOCAxMCAwQSBFOCA4QiBFQyA4OSA0RSAxNCBFOSBGRSAwMCAzQyAx
OCAgZi4uLi4uLi4uTi4uLi48LgogICAgMDU5MDogNzUgNkQgMEEgRkYgNzUgMTggRTggQTMgMDUg
OEIgRUMgODkgNDYgMEMgNjYgQzEgIHVtLi51Li4uLi4uLkYuZi4KICAgIDA1QTA6IEU4IDEwIDg5
IDQ2IDE0IEU4IDQ0IDA4IDg5IDRFIDEwIEU5IERFIDAwIDgwIEZGICAuLi5GLi5ELi5OLi4uLi4u
CiAgICAwNUIwOiAwRiA3NCAwRSAyMyBDOSAwRiA4NCBDQiAwMCBFOCBDRCAwNSBFOCAyMyAwNiA3
NSAgLnQuIy4uLi4uLi4uLiMudQogICAgMDVDMDogMkQgQkIgMDAgMUMgRTggRjUgMkMgNjYgMEIg
QzAgMEYgODQgQjYgMDAgRTggM0QgIC0uLi4uLixmLi4uLi4uLj0KICAgIDA1RDA6IDA3IDBCIEM5
IDBGIDg0IEFEIDAwIEJFIDAwIDFDIEU4IEQwIDAxIDBGIDg0IEEzICAuLi4uLi4uLi4uLi4uLi4u
CiAgICAwNUUwOiAwMCBCRSAwMCAxQyBCMCA0MCBFOCAyRCAwMiBFOCA1MCAwNSBFQiAwOSBFOCA0
NiAgLi4uLi5ALi0uLlAuLi4uRgogICAgMDVGMDogMDYgRTggOEUgMTggRTggMzIgMDYgOEIgRUMg
ODkgNDYgMEMgRTkgOEQgMDAgM0MgIC4uLi4uMi4uLi5GLi4uLjwKICAgIDA2MDA6IDE5IDc1IDA5
IEU4IDA1IDA2IEU4IDgwIDE4IEU5IDgwIDAwIDNDIDgyIDc1IDJDICAudS4uLi4uLi4uLi48LnUs
CiAgICAwNjEwOiA4MCBGQiAwMSA3NSAwRCA4QiBFQyBCRSA3NiAwNiA4OSA3NiAwMCA4QyA0RSAx
MCAgLi4udS4uLi52Li52Li5OLgogICAgMDYyMDogRUIgNkEgODAgRkIgMDUgNzUgMTUgMEEgRkYg
NzUgMEEgRTggODcgMDMgOEIgRUMgIC5qLi4udS4uLnUuLi4uLi4KICAgIDA2MzA6IDg5IDQ2IDE0
IEVCIDU3IEU4IDQzIDAzIDc0IDQyIEVCIDUwIDNDIDhFIDc1IDEyICAuRi4uVy5DLnRCLlA8LnUu
CiAgICAwNjQwOiA4MCBGRiAwMSA3NCAwOCA4MCBGRiAwMiA3NSAzMiA4MCBDMSAwMiBFOCBDQiAw
MyAgLi4udC4uLi51Mi4uLi4uLgogICAgMDY1MDogRUIgM0EgM0MgOEYgNzUgMjYgODAgRkYgMDUg
NzUgMDUgRTggMUQgMDYgRUIgMkMgIC46PC51Ji4uLnUuLi4uLiwKICAgIDA2NjA6IDgwIEZGIDA3
IDc1IDBBIEU4IDIxIDA2IDhCIEVDIDg4IDVFIDBDIEVCIDFEIDgwICAuLi51Li4hLi4uLl4uLi4u
CiAgICAwNjcwOiBGRiA4NSA3NSAwOCBFOCAwNCAwNiBFOCBGQSAxNyBFQiAxMCA4QiBFQyBDNiA0
NiAgLi51Li4uLi4uLi4uLi4uRgogICAgMDY4MDogMTkgMDIgRUIgMEYgOEIgRUMgQzYgNDYgMTkg
MDEgRUIgMDcgMzIgRTQgOEIgRUMgIC4uLi4uLi5GLi4uLjIuLi4KICAgIDA2OTA6IDg4IDY2IDE5
IDY2IDVGIDY2IDVFIDY2IDVEIDY2IDVCIDY2IDVBIDY2IDU5IDY2ICAuZi5mX2ZeZl1mW2ZaZllm
CiAgICAwNkEwOiA1OCAwNyAxRiBDMyA1MSA4QSBDOCBCOCAwMSAwMCBEMyBFMCA1OSBDMyA1MCAz
MiAgWC4uLlEuLi4uLi4uWS5QMgogICAgMDZCMDogQzAgNTMgQkIgMTUgMDAgRTggNzMgMjUgNUIg
M0MgRkYgNzQgMDQgMjQgMDMgMEEgIC5TLi4uLnMlWzwudC4kLi4KICAgIDA2QzA6IEMwIDU4IEMz
IEU4IDg1IDJDIEU4IEE2IDA2IEY3IEMxIDAyIDAwIDc0IDBFIDA2ICAuWC4uLiwuLi4uLi4udC4u
CiAgICAwNkQwOiAwRSAwNyA4RCAzRSA3NiAwNiBCOCAwMiAwMCBFOCBCRiAwNSAwNyBDMyAwMCAw
MCAgLi4uPnYuLi4uLi4uLi4uLgogICAgMDZFMDogMDAgMDAgMDcgMDAgMDggMDggMDggMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAgIDA2RjA6IDAwIDAwIDAw
IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDBDIDAxICAuLi4uLi4uLi4uLi4uLi4u
CiAgICAwNzAwOiBDMyAwMCA1MCA1MSBCMCBCNiBFNiA0MyBCMCAzMyBFNiA0MiBCMCAwNSBFNiA0
MiAgLi5QUS4uLkMuMy5CLi4uQgogICAgMDcxMDogRTQgNjEgOEEgRTAgMEMgMDMgRTYgNjEgOEEg
QzQgQjkgQzggMDAgRTggMkEgMjggIC5hLi4uLi5hLi4uLi4uKigKICAgIDA3MjA6IEU2IDYxIDU5
IDU4IEMzIDAwIDFFIDU2IDBFIDFGIDgwIDNFIDAyIDAwIDgwIDc2ICAuYVlYLi4uVi4uLj4uLi52
CiAgICAwNzMwOiAwNSBDNiAwNiAwMiAwMCA4MCA4QSAwRSAwMiAwMCBDMSBFMSAwOSBGQyBDNiAw
NiAgLi4uLi4uLi4uLi4uLi4uLgogICAgMDc0MDogMjEgMDAgMDAgMzMgRjYgMzIgRTQgQUMgMDIg
RTAgRTIgRkIgRjYgRDQgRkUgQzQgICEuLjMuMi4uLi4uLi4uLi4KICAgIDA3NTA6IDg4IDI2IDIx
IDAwIDVFIDFGIEMzIDAwIEU4IDA4IDI3IDc1IDAzIEU4IEIyIDI4ICAuJiEuXi4uLi4uJ3UuLi4o
CiAgICAwNzYwOiBFOCA0QiAyNyBFOCAxNSAyNyBFOCA0NiAyNiBFOCA2RSAwQiBDMyBCMCAwMSBD
MyAgLksnLi4nLkYmLm4uLi4uLgogICAgMDc3MDogQkIgMDEgMDAgRTggQTEgMjQgQzMgQkIgMDEg
MDAgRTggQTQgMjQgQzMgRTggNTcgIC4uLi4uJC4uLi4uLiQuLlcKICAgIDA3ODA6IDI4IEMzIDUz
IEJCIDA0IDAwIEU4IEEyIDI0IDMzIEMwIDVCIEMzIEU4IDIwIDI4ICAoLlMuLi4uLiQzLlsuLiAo
CiAgICAwNzkwOiBCQiAwQSAwMCBFOCA4QiAyNCBDMyBCQiAwQSAwMCBFOCA3QSAyNCA2NiA4QiBD
OCAgLi4uLi4kLi4uLi56JGYuLgogICAgMDdBMDogRTggMEQgMjggQkIgMEEgMDAgNjYgMkIgQzEg
RTggNzUgMjQgQzMgRTggMjkgMDAgIC4uKC4uLmYrLi51JC4uKS4KICAgIDA3QjA6IDBCIEM5IDc0
IDIyIEU4IDY0IDA2IEU4IDExIDE2IDY2IDUxIDY2IDhCIEM4IEJCICAuLnQiLmQuLi4uZlFmLi4u
CiAgICAwN0MwOiAwNyAwMCBFOCA1MiAyNCA2NiAyNSAwMCBGRSAwMCAwMCA2NiAwQiBDMSBFOCA1
MCAgLi4uUiRmJS4uLi5mLi4uUAogICAgMDdEMDogMjQgNjYgNTkgMEMgMDEgQzMgMzIgQzAgQzMg
RTggOUIgMDMgMEIgQzkgNzUgMEEgICRmWS4uLjIuLi4uLi4udS4KICAgIDA3RTA6IDMzIEQyIEU4
IEI4IDI1IDhCIEM4IEU4IDlGIDAzIDBCIEQxIEU4IEZEIDA1IDIzICAzLi4uJS4uLi4uLi4uLi4j
CiAgICAwN0YwOiBDQSA2NiBDMSBFNiAxMCAzMyBGNiBFOCA4NyAwQSA3NCAxNSBFOCA5QyAwQiA4
NSAgLmYuLi4zLi4uLnQuLi4uLgogICAgMDgwMDogQzEgNzQgRjQgNTEgRTggQTcgMTEgNTkgNzUg
RUQgRTggOEUgMEIgMzMgQzggRUIgIC50LlEuLi5ZdS4uLi4zLi4KICAgIDA4MTA6IEU2IDY2IEMx
IEVFIDEwIEMzIEE4IDEwIDc1IDVBIEU4IEMwIDE1IDY2IEMxIEU2ICAuZi4uLi4uLnVaLi4uZi4u
CiAgICAwODIwOiAxMCAzMyBGNiBFOCA1QiAwQSA3NCAyNCBFOCAyQiAwQSA3NCAwQiBFOCBCMCAw
QiAgLjMuLlsudCQuKy50Li4uLgogICAgMDgzMDogMjQgMDMgM0MgMDMgNzUgRUQgRUIgMEEgRTgg
QTUgMEIgQTggMDEgNzQgRTQgRTggICQuPC51Li4uLi4uLi50Li4KICAgIDA4NDA6IDEzIDA3IEU4
IEU5IDE2IEI1IDAwIEU4IDlEIDBCIEVCIEQ3IEU4IDdBIDAxIDMyICAuLi4uLi4uLi4uLi4uei4y
CiAgICAwODUwOiBDOSAzMyBGNiBFOCA2RiAwQSBFOCA1RiAxNiBFOCA4QiAyNiBGRSBDMSAzOCBD
MSAgLjMuLm8uLl8uLi4mLi44LgogICAgMDg2MDogNzIgRjEgNjYgQzEgRUUgMTAgRTggNkQgMTUg
QTggMjAgNzUgNTcgQTggNDAgNzUgIHIuZi4uLi5tLi4gdVcuQHUKICAgIDA4NzA6IDAzIEU4IDdD
IDFDIEU4IDU0IDE1IDBBIEMwIDc1IDE5IDMyIEM5IDMzIEY2IEU4ICAuLnwuLlQuLi51LjIuMy4u
CiAgICAwODgwOiA0MyAwQSAwQiBGNiA3NCAwNSBCNSAwMSBFOCAxQyAxRCBFOCA1OSAyNiBGRSBD
MSAgQy4uLnQuLi4uLi4uWSYuLgogICAgMDg5MDogMzggQzEgNzIgRUIgMzMgRjYgRTggREQgMDkg
NzQgMjYgRTggMjIgMEIgRTggRjggIDguci4zLi4uLnQmLiIuLi4KICAgIDA4QTA6IDIyIDc1IDE0
IEU4IEUzIDAzIDBBIERCIDc0IDBEIEU4IEE4IDA2IEU4IDdFIDE2ICAidS4uLi4uLnQuLi4uLn4u
CiAgICAwOEIwOiBCNSAwMCBFOCAzMiAwQiBFQiBERiBFOCA1NiAxNiBCNSAwMSBFOCAyOCAwQiBF
QiAgLi4uMi4uLi5WLi4uLiguLgogICAgMDhDMDogRDUgRTggMTIgMDEgQzMgRTggRDUgMjQgQzMg
RTggNzMgMTUgMzMgQzkgMzMgRDIgIC4uLi4uLi4kLi5zLjMuMy4KICAgIDA4RDA6IEU4IEI2IDAy
IDY2IDMzIEQyIDY2IDMzIEMwIEU4IDQzIDBCIEU4IDUzIDAwIEIxICAuLi5mMy5mMy4uQy4uUy4u
CiAgICAwOEUwOiBGRiBFOCA5NyAwMCAzMyBGNiBFOCA5OCAwOSA3NCAxMCBFOCBEMiAwQSBFOCBB
NCAgLi4uLjMuLi4udC4uLi4uLgogICAgMDhGMDogMjIgNzQgMDMgRTggQjUgMTYgRTggRTIgMTYg
RUIgRUIgQjMgMDEgRTggNjggMDIgICJ0Li4uLi4uLi4uLi4uaC4KICAgIDA5MDA6IEU4IDY5IDI1
IEU4IDk3IDI0IDBCIEMwIEMzIEU4IENFIDA5IEU4IDMwIDE1IDY2ICAuaSUuLiQuLi4uLi4uMC5m
CiAgICAwOTEwOiAzMyBDMCA2NiBCQSAwMCBGMCAwMCBGMCBFOCAzMCAwMiA1MSBCMSAwMSBFOCBE
QiAgMy5mLi4uLi4uMC5RLi4uLgogICAgMDkyMDogMDIgNTkgMzMgRjYgRTggNUEgMDkgNzQgMDUg
RTggN0YgMTYgRUIgRjYgRTggQ0YgIC5ZMy4uWi50Li4uLi4uLi4KICAgIDA5MzA6IDFCIEMzIEI4
IDAyIDAwIEU4IDJCIDA5IDc0IDQwIEIxIDA3IEU4IDkyIDIwIEU4ICAuLi4uLi4rLnRALi4uLiAu
CiAgICAwOTQwOiAzQiAwQiBBOCAwNCA3NSAxMiBFOCA0MCAyNyA4MyAzRCAwMCA3NSAwQSBFOCA0
QyAgOy4uLnUuLkAnLj0udS4uTAogICAgMDk1MDogMjQgODMgRTAgRkQgRTggNEYgMjQgQzMgNjYg
QkEgRkYgRkYgRkIgRkYgNjYgQjggICQuLi4uTyQuZi4uLi4uZi4KICAgIDA5NjA6IDAwIDAwIDA0
IDAwIEU4IEI4IDBBIEU4IERCIDBDIEU4IEFGIDI2IDhBIEM4IEJCICAuLi4uLi4uLi4uLi4mLi4u
CiAgICAwOTcwOiAwNCAwMCBFOCBBMiAyMiA4QSBFMSBFOCBBNyAyMiBDMyBFOCBCOSAyMiA3NCAz
NCAgLi4uLiIuLi4uIi4uLiJ0NAogICAgMDk4MDogMzggRTEgNzYgMDQgOEEgQ0MgRUIgMDYgMzgg
QzEgNzMgMDIgOEEgQzggQkIgMDIgIDgudi4uLi4uOC5zLi4uLi4KICAgIDA5OTA6IDAwIEU4IDgz
IDIyIDhBIEUxIEU4IDg4IDIyIEJCIDAyIDAwIEU4IDc4IDIyIDY2ICAuLi4iLi4uLiIuLi4ueCJm
CiAgICAwOUEwOiBDMSBFOCAxOCBBOCAyMCA3NSAwOCBCMSAwNCBFOCAyNSAyMCAwQyAwMSBDMyBF
OCAgLi4uLiB1Li4uLiUgLi4uLgogICAgMDlCMDogREUgMTQgMEMgMDEgQzMgNTEgRTggN0UgMjIg
NzQgMEMgOEEgQ0MgQkIgMDIgMDAgIC4uLi4uUS5+InQuLi4uLi4KICAgIDA5QzA6IEU4IDU0IDIy
IDhBIEM0IDhBIEUxIDU5IEMzIDMzIEY2IEU4IEE4IDA4IDc0IDA1ICAuVCIuLi4uWS4zLi4uLnQu
CiAgICAwOUQwOiBFOCBDNyAxNCBFQiBGNiBDMyAzMyBGNiBFOCA5QiAwOCA3NCAwNSBFOCBDOSAx
NCAgLi4uLi4uMy4uLi50Li4uLgogICAgMDlFMDogRUIgRjYgQzMgRTggREQgMjUgNzUgMUIgODAg
RjkgMDEgNzUgMTcgMzMgRjYgRTggIC4uLi4uJXUuLi4udS4zLi4KICAgIDA5RjA6IDg0IDA4IDc0
IDBDIDUxIEU4IDE4IDE1IEI1IDAxIEU4IEVBIDA5IDU5IEVCIEVGICAuLnQuUS4uLi4uLi4uWS4u
CiAgICAwQTAwOiBFOCBEMyBGRiBDMyBFOCBDMiBGRiAzMyBGNiBFOCA2QSAwOCA3NCAwQyA1MSBF
OCAgLi4uLi4uLjMuLmoudC5RLgogICAgMEExMDogOTkgMTUgQjUgMDAgRTggRDAgMDkgNTkgRUIg
RUYgQzMgQjggMDIgMDAgRTggNDIgIC4uLi4uLi5ZLi4uLi4uLkIKICAgIDBBMjA6IDA4IDc0IDAz
IEU4IEFCIDFGIEMzIEU4IDU1IDFCIDhCIEM4IDY2IEMxIEU4IDEwICAudC4uLi4uLlUuLi5mLi4u
CiAgICAwQTMwOiA4QiBEMCBDMyA4QSBDMyAyNCA4MCBFOCBBMyAxMyAzMiBDOSBCNSAxMCBFOCBG
NyAgLi4uLi4kLi4uLjIuLi4uLgogICAgMEE0MDogMUEgRTggQTMgMjQgRkUgQzEgMzggQzEgNzIg
RjIgQzMgRTggMUMgMTMgM0IgQzEgIC4uLiQuLjguci4uLi4uOy4KICAgIDBBNTA6IDdDIDNBIDhC
IEMxIEU4IDVDIDEzIEU4IDFEIDFEIDhCIEM4IDUxIEU4IDhDIDEzICB8Oi4uLlwuLi4uLi5RLi4u
CiAgICAwQTYwOiBFOCA1MCAxMyA1OSBFOCAxMCAxRCAzQiBDOCA3MiAwMiA4QiBDMSA4RCA1QyAw
NCAgLlAuWS4uLjsuci4uLi5cLgogICAgMEE3MDogRTggQzEgMjcgMzIgQzkgQjUgMEYgRTggQkUg
MUEgRTggNkEgMjQgRkUgQzEgMzggIC4uJzIuLi4uLi4uaiQuLjgKICAgIDBBODA6IEMxIDcyIEYy
IDhEIDVDIDA0IEU4IDMzIDI4IDBCIEMwIEMzIDMzIEMwIEMzIDUyICAuci4uXC4uMyguLi4zLi5S
CiAgICAwQTkwOiBFOCA5QyAwMCA4QSBDMiA4QiBEMSA2NiBDMSBFMiAxMCA4QSBEMCAzMiBDMCBC
OSAgLi4uLi4uLmYuLi4uLjIuLgogICAgMEFBMDogMDAgMDIgRTggQjEgMUMgNjYgQzEgRUEgMTAg
OEIgQ0EgNUEgRTggODAgMDAgRTggIC4uLi4uZi4uLi4uWi4uLi4KICAgIDBBQjA6IDBBIDI4IDY2
IEMxIEU4IDAyIDBBIEY2IDc1IDA0IDY2IEMxIEU4IDAyIDY3IDI2ICAuKGYuLi4uLnUuZi4uLmcm
CiAgICAwQUMwOiA4OCAwNyA2NiBDMSBFOCAwQSA2NyAyNiA4OCA0NyAwMSA2NiBDMSBFOCAwQSA2
NyAgLi5mLi4uZyYuRy5mLi4uZwogICAgMEFEMDogMjYgODggNDcgMDIgNjYgODMgQzcgMDQgODMg
QzMgMDQgRTIgRDIgQzMgNTEgRTggICYuRy5mLi4uLi4uLi4uUS4KICAgIDBBRTA6IDREIDAwIDUz
IDY3IDI2IDhBIDQ3IDAyIDY2IEMxIEUwIDBBIDY3IDI2IDhBIDQ3ICBNLlNnJi5HLmYuLi5nJi5H
CiAgICAwQUYwOiAwMSA2NiBDMSBFMCAwQSA2NyAyNiA4QSAwNyA2NiBDMSBFMCAwMiAwQSBGNiA3
NSAgLmYuLi5nJi4uZi4uLi4udQogICAgMEIwMDogMDQgNjYgQzEgRTAgMDIgRTggMTQgMjcgNjYg
ODMgQzcgMDQgODMgQzMgMDQgRTIgIC5mLi4uLi4nZi4uLi4uLi4KICAgIDBCMTA6IEQyIDVCIDU5
IDhBIEMyIDhCIEQxIDY2IEMxIEUyIDEwIDhBIEQwIEI5IDAwIDAzICAuW1kuLi4uZi4uLi4uLi4u
CiAgICAwQjIwOiA1MyBFOCAzMiAxQyA1QiBFOCBCRiAyMyBGRSBDMSAzOCBDMSA3MiBGMiBDMyBC
QiAgUy4yLlsuLiMuLjguci4uLgogICAgMEIzMDogMDAgMTggMzMgQzAgOEEgQzIgQzEgRTAgMDIg
MDMgRDggQzMgNTMgQkIgMDMgMDAgIC4uMy4uLi4uLi4uLlMuLi4KICAgIDBCNDA6IEU4IEQ0IDIw
IDY2IDI1IEZGIDBGIEZGIDBGIDVCIEMzIDUzIDY2IDUwIDY2IDUxICAuLiBmJS4uLi5bLlNmUGZR
CiAgICAwQjUwOiA2NiA4QiBDOCBCQiAwMyAwMCBFOCBCRSAyMCA2NiAyMyBDMiA2NiAwQiBDMSBF
OCAgZi4uLi4uLi4gZiMuZi4uLgogICAgMEI2MDogQkYgMjAgNjYgNTkgNjYgNTggNUIgQzMgQjgg
MkMgMDYgRjYgQzMgMDEgNzUgMDMgIC4gZllmWFsuLiwuLi4udS4KICAgIDBCNzA6IEI4IDBDIDA2
IEU4IDM3IDAwIEMzIEJCIDA1IDAwIEU4IDlBIDIwIDI1IEZGIDBGICAuLi4uNy4uLi4uLi4gJS4u
CiAgICAwQjgwOiA4QiBDOCA2NiBDMSBFMCAxMCA4QiBEMCBDMyBFOCAxMSAyMiAyMyBDOCA4MSBF
MiAgLi5mLi4uLi4uLi4iIy4uLgogICAgMEI5MDogMTUgMDEgMjMgRDEgNjYgQzEgRTIgMTAgOEIg
RDEgQkIgMDUgMDAgRTggNzcgMjAgIC4uIy5mLi4uLi4uLi4udyAKICAgIDBCQTA6IDY2IDI1IDAw
IEYwIEVBIEZFIDY2IDBCIEMyIEU4IDc1IDIwIEMzIDY2IDUwIDUzICBmJS4uLi5mLi4udSAuZlBT
CiAgICAwQkIwOiA1MSA2NiA1MiA2NiAzMyBEMiAzMyBEQiA4QSBEQyA4QSBFOCA4QSBDOCA4MCBF
MSAgUWZSZjMuMy4uLi4uLi4uLgogICAgMEJDMDogMUYgNjYgQkEgMDEgMDAgMDAgMDAgNjYgRDMg
RTIgRTggNEEgMjAgNjYgMEIgQzIgIC5mLi4uLi5mLi4uSiBmLi4KICAgIDBCRDA6IEY2IEM1IDIw
IDc1IDAzIDY2IDMzIEMyIEU4IDQ2IDIwIDY2IDVBIDU5IDVCIDY2ICAuLiB1LmYzLi5GIGZaWVtm
CiAgICAwQkUwOiA1OCBDMyA2NiA1MCA1MyBCQiAwNiAwMCBFOCAyQyAyMCBBOCAxMCA3NSAwOSBC
QiAgWC5mUFMuLi4uLCAuLnUuLgogICAgMEJGMDogRjAgMTYgRTggQzcgMjYgM0QgNUEgQTUgNUIg
NjYgNTggQzMgQjggMDQgMDYgODAgIC4uLi4mPVouW2ZYLi4uLi4KICAgIDBDMDA6IEYxIDAxIEMw
IEUxIDA1IDBBIEMxIEU4IEEzIEZGIEMzIDUzIDY2IDUwIEJCIEY4ICAuLi4uLi4uLi4uLlNmUC4u
CiAgICAwQzEwOiAxNiBFOCBBOCAyNiA4QSBDMSBFOCAwMyAyNiA2NiA1OCA1QiBDMyA1MyBCQiBG
OCAgLi4uJi4uLi4mZlhbLlMuLgogICAgMEMyMDogMTYgRTggOTggMjYgODMgRTAgMDEgNUIgQzMg
QkIgMDYgMDAgRTggRTggMUYgNjYgIC4uLiYuLi5bLi4uLi4uLmYKICAgIDBDMzA6IEMxIEU4IDEw
IDI1IEZGIDBGIEMzIEJCIDA2IDAwIEU4IERBIDFGIDY2IDI1IEZGICAuLi4lLi4uLi4uLi4uZiUu
CiAgICAwQzQwOiBGRiAwMCBGMCA2NiBDMSBFMiAxMCA2NiAwQiBDMiBFOCBENCAxRiBDMyA1MyA2
NiAgLi4uZi4uLmYuLi4uLi5TZgogICAgMEM1MDogNTAgQkIgMDcgMDAgRTggQzAgMUYgRjYgQzQg
MDEgNjYgNTggQjAgMDYgNzQgMDIgIFAuLi4uLi4uLi5mWC4udC4KICAgIDBDNjA6IEIwIDA4IDVC
IEMzIDUzIEJCIDA3IDAwIEU4IEFDIDFGIDgwIEU0IEZFIDgwIEZEICAuLlsuUy4uLi4uLi4uLi4u
CiAgICAwQzcwOiAwNiA3NCAwMyA4MCBDQyAwMSBFOCBBOCAxRiA1QiBDMyA1MyBCOCAwNiAwNiBD
MCAgLnQuLi4uLi4uWy5TLi4uLgogICAgMEM4MDogRTMgMDUgMEEgQzMgRTggMjYgRkYgNUIgQzMg
NjYgNTAgQkIgMDYgMDAgRTggODYgIC4uLi4uJi5bLmZQLi4uLi4KICAgIDBDOTA6IDFGIDI0IDQw
IEMwIEU4IDA2IDhBIEQ4IDY2IDU4IEMzIDU3IDY2IDUwIDY2IDMzICAuJEAuLi4uLmZYLldmUGYz
CiAgICAwQ0EwOiBDMCBCOSAwOCAwMCBGQyBGMyA2NiBBQiA2NiA1OCA1RiBFOCAzRSAwMSAwQiBD
MCAgLi4uLi4uZi5mWF8uPi4uLgogICAgMENCMDogNzUgMDkgRTggRTIgMDUgNzQgM0MgODUgQzEg
NzQgRjcgRTggQTUgMDUgOEQgOUMgIHUuLi4udDwuLnQuLi4uLi4KICAgIDBDQzA6IDZBIDAxIEU4
IEY3IDI1IDI2IDg5IDA1IDhEIDlDIDZFIDAxIEU4IEVEIDI1IDI2ICBqLi4uJSYuLi4ubi4uLiUm
CiAgICAwQ0QwOiA4OSA0NSAwMiA4RCA5QyBCNSAwMiBFOCBFMiAyNSAwMiBDMCAwNCAwNCAyNiA4
OCAgLkUuLi4uLi4uJS4uLi4mLgogICAgMENFMDogNDUgMDYgMjYgODggNDUgMDcgMjYgODggNDUg
MDggQjAgMDcgMjYgODggNDUgMDQgIEUuJi5FLiYuRS4uLiYuRS4KICAgIDBDRjA6IDBBIEMwIEMz
IDMyIEMwIEMzIEMzIDY2IDUwIDUzIDUxIDUyIDU2IDU3IEU4IEUxICAuLi4yLi4uZlBTUVJWVy4u
CiAgICAwRDAwOiBGRSA3NCAwMyBFOCBENCAwNSA1RiA1RSA1QSA1OSA1QiA2NiA1OCBDMyAzMyBD
OSAgLnQuLi4uX15aWVtmWC4zLgogICAgMEQxMDogRTggQjAgMjIgNzUgNDggNjYgQkEgRkYgRkYg
MEMgRkYgNjYgMzMgQzAgRTggRkUgIC4uInVIZi4uLi4uZjMuLi4KICAgIDBEMjA6IDA2IDMzIEY2
IEU4IDVCIDA1IDc0IDE4IEU4IDcwIDA2IEE5IEM4IDBFIDc0IEYzICAuMy4uWy50Li5wLi4uLnQu
CiAgICAwRDMwOiBFOCA0QSAwNyBBOCAwNCA3NSAwNCBBOCAxOCA3NCBFOCBFOCA3QiAwMCBFQiBF
MyAgLkouLi51Li4udC4uey4uLgogICAgMEQ0MDogRTggMkMgMDAgNzUgMDMgRTggQTQgMDAgMzMg
RjYgRTggMzQgMDUgNzQgMEUgRTggIC4sLnUuLi4uMy4uNC50Li4KICAgIDBENTA6IDQ5IDA2IDg1
IEMxIDc0IEY0IDUxIEU4IDAwIDA4IDU5IEVCIEVEIEMzIDhEIDVEICBJLi4udC5RLi4uWS4uLi5d
CiAgICAwRDYwOiAyOCA2NiBDMSBFMyAxMCA4RCA1QyAyOCBCOSA0OSAwMCBFOCBBMCAyMSBDMyA2
NiAgKGYuLi4uXCguSS4uLiEuZgogICAgMEQ3MDogNTAgNTMgNTIgNTYgMzMgQzkgMzMgRDIgOEQg
MzYgNDggMEQgRTggQkQgMDYgQTggIFBTUlYzLjMuLjZILi4uLi4KICAgIDBEODA6IDAzIDc0IDAz
IDgzIENBIDAxIDY2IEMxIEU4IDEwIDhBIDBDIDgwIEY5IEZGIDc0ICAudC4uLi5mLi4uLi4uLi50
CiAgICAwRDkwOiAxNSA2NiBBOSAwMSAwMCAwMCAwMCA3NCAwNyBCQiAwMSAwMCBEMyBFMyAwQiBE
MyAgLmYuLi4uLnQuLi4uLi4uLgogICAgMERBMDogNjYgRDEgRTggNDYgRUIgRTQgOEIgQ0EgMEIg
QzkgNUUgNUEgNUIgNjYgNTggQzMgIGYuLkYuLi4uLi5eWltmWC4KICAgIDBEQjA6IDAzIDA3IDAx
IDA1IDA2IDA5IDBBIDBCIEZGIDY2IDUwIDUzIDUxIEU4IERCIDA1ICAuLi4uLi4uLi5mUFNRLi4u
CiAgICAwREMwOiAwRiBCQyBEOCA4MSBDMyA3OCAwRCA4QSAwRiA2NiBCOCAwMSAwMCAwMCAwMCA2
NiAgLi4uLi54Li4uZi4uLi4uZgogICAgMEREMDogRDMgRTAgNjYgQkEgRkYgRkYgRkYgRkYgRTgg
NDQgMDYgNTkgNUIgNjYgNTggQzMgIC4uZi4uLi4uLkQuWVtmWC4KICAgIDBERTA6IDAxIDEyIDBC
IDEwIDA5IDEzIDE0IDExIDBDIDE1IDE2IDE3IDUwIDUzIDUyIEU4ICAuLi4uLi4uLi4uLi5QU1Iu
CiAgICAwREYwOiA3RCBGRiA3NSAxMyBCOSAwMSAwMCBFOCBBMyAxRiAyMyBDOCA3NSAxOSAzMyBD
MCAgfS51Li4uLi4uLiMudS4zLgogICAgMEUwMDogRTggOTQgMDQgOEIgQzggRUIgMTAgODMgRjkg
MDIgNzQgMEIgRTggN0EgRkUgODAgIC4uLi4uLi4uLi50Li56Li4KICAgIDBFMTA6IEZCIDAxIDc1
IDAzIDgzIEUxIEZEIDVBIDVCIDU4IEMzIDU2IDgzIEVDIDA0IDhCICAuLnUuLi4uWltYLlYuLi4u
CiAgICAwRTIwOiBFQyA2NiAzMyBDMCA2NiA4OSA0NiAwMCA2NiBCQSAwMCBGMCAwMCBGMCBFOCAx
QSAgLmYzLmYuRi5mLi4uLi4uLgogICAgMEUzMDogRkQgNjYgQzEgRTYgMTAgRTggNUYgMDQgMEIg
QzAgNzQgMUUgODUgQzEgNzQgRjUgIC5mLi4uLl8uLi50Li4udC4KICAgIDBFNDA6IDU1IEU4IDU2
IDAwIDVEIDc0IDA0IDMzIEM4IEVCIEVBIEU4IEMyIDA1IDY2IDNCICBVLlYuXXQuMy4uLi4uLmY7
CiAgICAwRTUwOiA1NiAwMCA3NiBFMSA2NiA4OSA1NiAwMCBFQiBEQiBFOCBERiBGQyA3NCAwNyA2
NiAgVi52LmYuVi4uLi4uLnQuZgogICAgMEU2MDogOEIgNDYgMDAgRTggMDUgMDAgODMgQzQgMDQg
NUUgQzMgMzMgRjYgNjYgNTAgRTggIC5GLi4uLi4uLl4uMy5mUC4KICAgIDBFNzA6IDA0IDA0IDY2
IDU4IDhEIDlDIEQ4IDAyIEU4IEExIDIzIDY2IDhCIEQwIEU4IEJCICAuLmZYLi4uLi4uI2YuLi4u
CiAgICAwRTgwOiBGQyBFOCAyNSAxOSA4RCA5QyAxQyAwMyBFOCAzMSAyNCAzOCBEMCA3NCAwQSA4
QSAgLi4lLi4uLi4uMSQ4LnQuLgogICAgMEU5MDogQzIgRTggODggMjMgQjAgMDIgRTggNjYgMDUg
QzMgNTAgNTEgRTggQzQgMDMgMzIgIC4uLiMuLi5mLi5QUS4uLjIKICAgIDBFQTA6IEMwIEU4IDVC
IDA1IEU4IDM5IDAzIEU4IEFCIDAwIDhEIDlDIDQwIDAzIEU4IDBCICAuLlsuLjkuLi4uLi5ALi4u
CiAgICAwRUIwOiAyNCAzOCBFOCA3NCAwQSA4QSBDNSBFOCA2MiAyMyBCMCAwMiBFOCA0MCAwNSBF
OCAgJDgudC4uLi5iIy4uLkAuLgogICAgMEVDMDogQkQgMDAgRTggRDggMDAgNzUgNzMgRTggOUUg
MDAgOEQgOUMgNEMgMDEgRTggRUIgIC4uLi4udXMuLi4uLkwuLi4KICAgIDBFRDA6IDIzIDhCIEM4
IDhCIEQzIDhEIDlDIDAwIDAzIEU4IEUwIDIzIDNCIEMxIDc0IDA1ICAjLi4uLi4uLi4uLiM7LnQu
CiAgICAwRUUwOiBCMCAwMiBFOCAxQSAwNSBFOCA2QyAwQSA4RCA5QyAwMCAwMyBFOCA5NyAxOCA4
RCAgLi4uLi4ubC4uLi4uLi4uLgogICAgMEVGMDogOUMgRDggMDIgRTggMjYgMjMgNjYgQzEgQ0Ug
MTAgOEIgRkUgNjYgQzEgQ0UgMTAgIC4uLi4mI2YuLi4uLmYuLi4KICAgIDBGMDA6IEU4IEM5IDAw
IEU4IEZGIDAwIEU4IDlCIDA0IDhBIEU5IDhEIDlDIERDIDAyIDMyICAuLi4uLi4uLi4uLi4uLi4y
CiAgICAwRjEwOiBDOSBFOCA0QyAyMyBFOCA4NCAwNCA2NiAyNSBGRiAwRiAwMCAwMCBFOCAwMCAw
NCAgLi5MIy4uLmYlLi4uLi4uLgogICAgMEYyMDogODAgRjkgMDEgNzUgMDQgNjYgQzEgRTAgMTAg
NTkgNTggNjYgQkEgRkYgRkYgRkYgIC4uLnUuZi4uLllYZi4uLi4KICAgIDBGMzA6IEZGIDY2IDMz
IEQwIEU4IDE0IEZDIDMzIEQyIEMzIEU4IDA1IDAwIDBDIDAxIDU5ICAuZjMuLi4uMy4uLi4uLi5Z
CiAgICAwRjQwOiA1OCBDMyA1MyA2NiA1MCA4RCA5QyBENCAwMiBFOCA3MCAyMyA4QSBDNCBFOCBD
QiAgWC5TZlAuLi4uLnAjLi4uLgogICAgMEY1MDogMjIgNjYgNTggNUIgQzMgNTMgNjYgNTAgOEQg
OUMgRDQgMDIgRTggNUQgMjMgOEEgICJmWFsuU2ZQLi4uLi5dIy4KICAgIDBGNjA6IEUwIEU4IEI4
IDIyIDY2IDU4IDVCIEMzIEU4IEQ1IDAzIEU4IDkwIDAzIDhBIEREICAuLi4iZlhbLi4uLi4uLi4u
CiAgICAwRjcwOiBFOCBEMyAxOSA4RCA5QyAzQyAwMyA4QSBFOSAzMiBDOSBFOCBFMiAyMiBDMyA4
MyAgLi4uLi48Li4uMi4uLiIuLgogICAgMEY4MDogRUMgMDggOEIgRUMgRTggQjkgMDMgRTggNzQg
MDMgRTggNUIgMTkgOEEgNkUgMDAgIC4uLi4uLi4udC4uWy4ubi4KICAgIDBGOTA6IDhEIDlDIDRD
IDAzIDMyIEM5IEU4IEM3IDIyIDgzIEM0IDA4IEMzIDMzIEM5IDU2ICAuLkwuMi4uLiIuLi4uMy5W
CiAgICAwRkEwOiBFOCAyMiAwMyAwQiBGNiA1RSA3NCAwQyBGRSBDMSBFOCAzQSAxRiAzOCBDMSA3
NSAgLiIuLi5edC4uLi46LjgudQogICAgMEZCMDogRUUgMEMgMDEgQzMgOEQgOUMgRDQgMDIgRTgg
MDEgMjMgMzggQzggNzQgMEEgOEEgIC4uLi4uLi4uLi4jOC50Li4KICAgIDBGQzA6IEMxIEU4IDU4
IDIyIEIwIDAyIEU4IDM2IDA0IDMyIEMwIEMzIEU4IDBBIDAwIDhEICAuLlgiLi4uNi4yLi4uLi4u
CiAgICAwRkQwOiA5QyBEMCAwMiAzMiBDOSBFOCA4OCAyMiBDMyA4RCAxRCBFOCBERSAyMiA2NiA4
QiAgLi4uMi4uLiIuLi4uLiJmLgogICAgMEZFMDogRDAgOEQgOUMgMDIgMDMgRTggRDQgMjIgNTEg
OEIgQzggOEQgOUMgMDYgMDMgRTggIC4uLi4uLi4iUS4uLi4uLi4KICAgIDBGRjA6IENBIDIyIDY2
IEMxIEUwIDEwIDhCIEMxIDU5IDY2IDNCIEMyIDc1IDA0IEI1IDAwICAuImYuLi4uLllmOy51Li4u
CiAgICAxMDAwOiBFQiAwMiBCNSAwMiBDMyBFOCA3NCAwMyA4RCA5QyA0MCAwMyBCMSAwMyBFOCA0
RiAgLi4uLi4udC4uLkAuLi4uTwogICAgMTAxMDogMjIgRTggQjkgMDYgOEQgOUMgNDAgMDMgQjEg
MDIgRTggNDMgMjIgRTggREUgMDIgICIuLi4uLkAuLi4uQyIuLi4KICAgIDEwMjA6IDgwIEZEIDAw
IDc1IDFEIEU4IDk0IDAwIDY2IDgxIEZBIEYwIEQyIDAwIDAwIDc1ICAuLi51Li4uLmYuLi4uLi51
CiAgICAxMDMwOiAwNiA2NiBCQSA3OCA2OSAwMCAwMCBFOCBCNSAwMCBFOCBFRSAwMCBFOCBCMiAw
MyAgLmYueGkuLi4uLi4uLi4uLgogICAgMTA0MDogRUIgMzggRTggODggMDMgRTggQUEgMDMgNjYg
NTIgRTggRkUgMDIgMEIgRDIgNzQgIC44Li4uLi4uZlIuLi4uLnQKICAgIDEwNTA6IDA3IEU4IEVB
IDE4IDY2IDVBIEVCIDIyIEU4IDY1IDAzIEU4IDZCIDFCIDY2IDVBICAuLi4uZlouIi5lLi5rLmZa
CiAgICAxMDYwOiA1MSBFOCA5QSAwMiA4MCBGRCAwMiA1OSA3NSAxMCBCNSAwNCA2NiA4MSBGQSA3
NCAgUS4uLi4uLll1Li4uZi4udAogICAgMTA3MDogNDAgMDAgMDAgNzYgMDUgQjUgMDggNjYgRDEg
RUEgOEQgOUMgNTQgMDMgNjYgOEIgIEAuLnYuLi5mLi4uLlQuZi4KICAgIDEwODA6IEMyIEU4IDk4
IDIxIDhEIDlDIDQwIDAzIEU4IDMxIDIyIDhBIEU1IEU4IDhDIDIxICAuLi4hLi5ALi4xIi4uLi4h
CiAgICAxMDkwOiBFOCAxRCAwMSA4RCA5QyA0OCAwMyAzMiBDOSBFOCBDNCAyMSBFOCBBMSAwMiBF
OCAgLi4uLi5ILjIuLi4hLi4uLgogICAgMTBBMDogNUMgMDIgRTggOUMgMTggOEQgOUMgNTggMDMg
MzIgQzkgRTggQjIgMjEgRTggOEYgIFwuLi4uLi5YLjIuLi4hLi4KICAgIDEwQjA6IDAyIEU4IDRB
IDAyIDhEIDlDIDYwIDAzIEU4IDQ4IDE4IEMzIDUzIDhEIDlDIDI5ICAuLkouLi5gLi5ILi5TLi4p
CiAgICAxMEMwOiAwMSBFOCBGOCAyMSA2NiAzMyBEMiAwQSBDMCA3NSAwNSBCQSA0OCAzRiA1QiBD
MyAgLi4uIWYzLi4udS4uSD9bLgogICAgMTBEMDogOEEgRDAgNjYgQjggOEMgMEEgMDAgMDAgRjcg
RTIgNjYgOEIgRjggRTggNjAgMDIgIC4uZi4uLi4uLi5mLi4uYC4KICAgIDEwRTA6IEIzIDAwIEU4
IDgyIDE3IDY2IDNCIEQ3IDc2IDAzIDY2IDhCIEQ3IDVCIEMzIEI3ICAuLi4uLmY7LnYuZi4uWy4u
CiAgICAxMEYwOiAwMSA1MyA4RCA5QyA0MiAwMyBFOCBDMyAyMSA4QSBDOCA1QiA2NiA1MiBFOCA4
MyAgLlMuLkIuLi4hLi5bZlIuLgogICAgMTEwMDogMDAgRTggQzkgMDIgNjYgM0IgRDEgNjYgNUEg
NzYgMDkgRDAgRTcgRTggMDcgMDAgIC4uLi5mOy5mWnYuLi4uLi4KICAgIDExMTA6IDM4IEVGIDcy
IEREIDhBIEVGIEMzIDUzIDhEIDlDIDJBIDAxIEU4IDlEIDIxIDI0ICA4LnIuLi4uUy4uKi4uLiEk
CiAgICAxMTIwOiAwRiA4QSBFOCAwQSBFRCA3NSAwMiBCNSAwMSA1QiBDMyA1MSA4MyBFQyAwOCA4
QiAgLi4uLi51Li4uWy5RLi4uLgogICAgMTEzMDogRUMgNjYgQzcgNDYgMDAgNDggM0YgNzggNjkg
NjYgQzcgNDYgMDQgRjAgRDIgMDAgIC5mLkYuSD94aWYuRi4uLi4KICAgIDExNDA6IDAwIEU4IDA3
IDAyIDBCIEQyIDc0IDAzIEU4IDA0IDE4IDhBIEZEIDUzIDhEIDlDICAuLi4uLi50Li4uLi4uUy4u
CiAgICAxMTUwOiA0MiAwMyBFOCA2NyAyMSA4QSBDOCA1QiBFOCA2MSBGRiA2NiAzMyBDMCA4QiA0
NiAgQi4uZyEuLlsuYS5mMy4uRgogICAgMTE2MDogMDAgNjYgM0IgQzIgNzMgMTkgNjYgOEIgRDAg
RTggMTggMDAgRTggNUUgMDIgNjYgIC5mOy5zLmYuLi4uLi5eLmYKICAgIDExNzA6IDNCIEQxIDcy
IDA1IDgzIEM1IDAyIEVCIEQ0IDY2IDMzIEQyIDhCIDU2IDAwIDgzICA7LnIuLi4uLi5mMy4uVi4u
CiAgICAxMTgwOiBDNCAwOCA1OSBDMyA2NiA1MiA1MiAzMiBFRCA4MyBDMSAwMiBCOCAwNiAwMCBG
NyAgLi5ZLmZSUjIuLi4uLi4uLgogICAgMTE5MDogRTEgNjYgMzMgQzkgOEIgQzggNUEgNTEgNjYg
MzMgQzAgOEIgQzIgOEEgQ0YgNjYgIC5mMy4uLlpRZjMuLi4uLmYKICAgIDExQTA6IEY3IEUxIDY2
IEMxIEUwIDAzIDU5IDY2IEY3IEYxIDY2IDhCIEM4IDY2IDVBIEMzICAuLmYuLi5ZZi4uZi4uZlou
CiAgICAxMUIwOiBFOCA5OCAwMSAwQiBEMiA3NCAwQiBFOCAxNiAwMCAwQSBFRCA3NSAxMSBFOCAw
OSAgLi4uLi50Li4uLi4udS4uLgogICAgMTFDMDogMTcgQzMgQjUgMDAgRTggRjkgMDEgRTggQ0Ig
MTkgNzUgMDMgRTggMDEgMDAgQzMgIC4uLi4uLi4uLi51Li4uLi4KICAgIDExRDA6IEI1IDAwIDhE
IDlDIDMxIDAxIEU4IEUzIDIwIEE4IDAxIDc0IDAyIEI1IDAxIEMzICAuLi4uMS4uLiAuLnQuLi4u
CiAgICAxMUUwOiA1MyBFOCA2NyAwMSA2NiBDMSBFMiAxMCBFOCA1NSAwMSA4RCA5QyBCOCAwMiBF
OCAgUy5nLmYuLi4uVS4uLi4uLgogICAgMTFGMDogQ0EgMjAgOEEgRTggRTggQTIgMTYgOEEgRUIg
NUIgQzMgNTcgNTMgNTMgRTggREYgIC4gLi4uLi4uLlsuV1NTLi4KICAgIDEyMDA6IEZGIEU4IDND
IDAxIDVCIEU4IDBCIDE3IDc0IDQ5IDgwIEZEIDAwIDc1IDI0IDUzICAuLjwuWy4uLnRJLi4udSRT
CiAgICAxMjEwOiBFOCBBOSBGRSBFOCBCNyAwNCA4QSBDRCBFOCBGQyBGRSA4QSBGRCBFOCA2NCBG
RiAgLi4uLi4uLi4uLi4uLi5kLgogICAgMTIyMDogNUIgRTggOTggMjAgNjYgMjUgRkYgRkYgMDAg
MDAgNjYgM0IgQzggNzMgMjEgMzIgIFsuLiBmJS4uLi5mOy5zITIKICAgIDEyMzA6IERCIEVCIDIw
IDgwIEZEIDAyIDc1IDE4IDUzIEU4IDg0IDAxIEU4IDY3IDE5IDVCICAuLiAuLi51LlMuLi4uZy5b
CiAgICAxMjQwOiA3NCAwRSA4RCAxRCBFOCA3NSAyMCAzRCA3NCA0MCA3NiAwNCAzMiBEQiBFQiAw
MyAgdC4uLi51ID10QHYuMi4uLgogICAgMTI1MDogODAgQ0IgMDEgNUIgNUYgQzMgNTMgRTggNDEg
MDEgOEIgRDggRTggREQgRjggODUgIC4uLltfLlMuQS4uLi4uLi4KICAgIDEyNjA6IEMzIDVCIEMz
IDUzIDhCIEYwIEU4IDM0IDFCIDIzIEYwIDc0IDA3IDhCIEM2IEU4ICAuWy5TLi4uNC4jLnQuLi4u
CiAgICAxMjcwOiBENSAxOSA4QiBGMyA1QiBDMyBFOCAwOCAwMCA3NCAwNSBFOCBEOCBGRiA3NCBG
NiAgLi4uLlsuLi4udC4uLi50LgogICAgMTI4MDogQzMgMzMgQzAgMEIgRjYgNzQgMDMgRTggMTEg
MDEgMzMgRjYgRTggMDggMDAgNzQgIC4zLi4udC4uLi4zLi4uLnQKICAgIDEyOTA6IDAzIEU4IENG
IEZGIDBCIEY2IEMzIDU3IDUzIEU4IDc1IDFCIDBCIEMwIDc0IDA5ICAuLi4uLi4uV1MudS4uLnQu
CiAgICAxMkEwOiA4QiAxRCA4MyBDNyAwMiAzQiBDMyA3NSBGNyA4QiAxRCA4MyBGQiBGRiA3NCAw
RSAgLi4uLi47LnUuLi4uLi50LgogICAgMTJCMDogODMgQzcgMDIgRTggRTcgMUEgODUgRDggNzQg
RUYgOEIgQzMgRUIgMDIgMzMgQzAgIC4uLi4uLi4udC4uLi4uMy4KICAgIDEyQzA6IDBCIEMwIDVC
IDVGIEMzIDUxIDMzIEY2IDhBIEU5IEU4IEE5IEZGIDc0IDA3IEU4ICAuLltfLlEzLi4uLi4udC4u
CiAgICAxMkQwOiA0RSAwMCAzOCBFOSA3NSBGNCAwQiBGNiA1OSBDMyAzMyBDMCBFOCBCOCBGRiA3
NCAgTi44LnUuLi5ZLjMuLi4udAogICAgMTJFMDogMTMgRTggN0YgRkYgOEIgREUgQjkgRkIgMDAg
RTggMEQgMUMgODMgQzYgMDggRTggIC4uLi4uLi4uLi4uLi4uLi4KICAgIDEyRjA6IDJFIDFBIEVC
IEU4IEJCIEYwIDE2IEI4IDVBIEE1IEU4IDM3IDFGIEMzIDUzIDY2ICAuLi4uLi4uLlouLjcuLlNm
CiAgICAxMzAwOiA1MCA4RCA5QyA0MCAwMyBFOCBCNCAxRiA4QSBFOCA2NiA1OCA1QiBDMyA4RCA5
QyAgUC4uQC4uLi4uLmZYWy4uLgogICAgMTMxMDogNjkgMDMgRTggQTcgMUYgQzMgOEQgOUMgNjQg
MDMgRTggOUYgMUYgMEIgQzAgQzMgIGkuLi4uLi4uZC4uLi4uLi4KICAgIDEzMjA6IDUzIDY2IDUw
IDhEIDlDIEQ0IDAyIEU4IDkyIDFGIDhBIEM4IDY2IDU4IDVCIEMzICBTZlAuLi4uLi4uLi5mWFsu
CiAgICAxMzMwOiA1MyA2NiA1MCA4RCA5QyBENSAwMiBFOCA4MiAxRiA4QSBDOCA2NiA1OCA1QiBD
MyAgU2ZQLi4uLi4uLi4uZlhbLgogICAgMTM0MDogNTMgOEQgNUMgMTQgRTggNzUgMUYgOEIgRDAg
NUIgQzMgNTMgNjYgNTAgOEQgNUMgIFMuXC4udS4uLlsuU2ZQLlwKICAgIDEzNTA6IDE2IEU4IDY4
IDFGIDhCIEQwIDY2IDU4IDVCIEMzIDUzIDY2IDUwIDhEIDlDIDUwICAuLmguLi5mWFsuU2ZQLi5Q
CiAgICAxMzYwOiAwMyBFOCA1OCAxRiA2NiA4QiBEMCA2NiA1OCA1QiBDMyA1MyA2NiA1MCA4RCA5
QyAgLi5YLmYuLmZYWy5TZlAuLgogICAgMTM3MDogNTQgMDMgRTggNDcgMUYgNjYgOEIgRDAgNjYg
NTggNUIgQzMgNTMgNjYgNTAgOEQgIFQuLkcuZi4uZlhbLlNmUC4KICAgIDEzODA6IDVDIDEwIEU4
IDM3IDFGIDhCIEM4IDY2IDU4IDVCIEMzIDY2IDUwIDUzIDhEIDlDICBcLi43Li4uZlhbLmZQUy4u
CiAgICAxMzkwOiA0MSAwMyBFOCAyNyAxRiA1QiA4QSBEOCA2NiA1OCBDMyA1MyA4RCA1QyAwOCBF
OCAgQS4uJy5bLi5mWC5TLlwuLgogICAgMTNBMDogMUEgMUYgNUIgQzMgNTMgNTAgOEQgOUMgNEMg
MDMgRTggMEYgMUYgOEEgQzggNTggIC4uWy5TUC4uTC4uLi4uLlgKICAgIDEzQjA6IDVCIEMzIDUz
IDUwIDhEIDlDIDREIDAzIEU4IDAxIDFGIDhBIEM4IDU4IDVCIEMzICBbLlNQLi5NLi4uLi4uWFsu
CiAgICAxM0MwOiA1MyA1MCA4RCA1QyAwQyBFOCBGNCAxRSA4QiBEMCA1OCA1QiBDMyA1MyA2NiA1
MCAgU1AuXC4uLi4uLlhbLlNmUAogICAgMTNEMDogOEQgOUMgMDAgMDMgRTggRTUgMUUgNjYgMzMg
RDIgOEIgRDAgNjYgNTggNUIgQzMgIC4uLi4uLi5mMy4uLmZYWy4KICAgIDEzRTA6IDhEIDVDIDA0
IEU4IEQ2IDFFIEMzIDUxIDhEIDVDIDA0IDMyIEM5IEU4IDcwIDFFICAuXC4uLi4uUS5cLjIuLnAu
CiAgICAxM0YwOiA1OSBDMyA4RCA5QyA1MCAwMyBFOCBDMyAxRSA4QiBDMiBFOCAxRSAxRSBDMyA1
MyAgWS4uLlAuLi4uLi4uLi4uUwogICAgMTQwMDogNTEgOEEgRTggRTggREEgRkYgMjQgRkQgMEEg
RTggRTggREEgRkYgNTkgNUIgQzMgIFEuLi4uLiQuLi4uLi5ZWy4KICAgIDE0MTA6IDY2IDUwIDhE
IDlDIEQ4IDAyIEU4IEEzIDFFIDY2IDhCIEQwIDY2IDU4IEMzIDUzICBmUC4uLi4uLi5mLi5mWC5T
CiAgICAxNDIwOiA2NiA1MCA2NiA1MSA2NiA4QiBDOCBCQiAwMCAwMCBFOCBFQSAxNyA2NiAyMyBD
MiAgZlBmUWYuLi4uLi4uLmYjLgogICAgMTQzMDogNjYgMEIgQzEgRTggRUIgMTcgNjYgNTkgNjYg
NTggNUIgQzMgQkIgMDAgMDAgRTggIGYuLi4uLmZZZlhbLi4uLi4KICAgIDE0NDA6IEQ1IDE3IDY2
IDI1IDAzIDAzIEZGIDAwIEMzIDU3IDBCIEMwIDc1IDEwIDMzIEY2ICAuLmYlLi4uLi5XLi51LjMu
CiAgICAxNDUwOiBFOCAyRSBGRSA3NCAyNiBFOCAyNSAwMCBBOCAwNCA3NCBGNCBFQiAxMyA4QiBD
OCAgLi4udCYuJS4uLnQuLi4uLgogICAgMTQ2MDogRTggM0EgMTkgMjMgQzEgNzQgMTQgRTggRjkg
RkQgRTggMTAgMDAgQTggMDQgNzQgIC46LiMudC4uLi4uLi4uLnQKICAgIDE0NzA6IDBBIDVGIDhE
IDVDIDI4IEU4IDJEIDA1IDBCIEY2IEMzIDVGIEMzIEU4IEZDIEZFICAuXy5cKC4tLi4uLl8uLi4u
CiAgICAxNDgwOiAwQSBDOSA3NCA3MiBFOCAzOSBGRiBFOCAxOCAxNyA3NCAzMCAwQSBFRCA3NCAx
MCAgLi50ci45Li4uLnQwLi50LgogICAgMTQ5MDogOEEgQ0QgQjUgMDIgRTggMkQgMUEgQjEgMDIg
OEQgOUMgNDggMDEgRTggQzAgMUQgIC4uLi4uLS4uLi4uSC4uLi4KICAgIDE0QTA6IEU4IDM0IDAy
IEE4IDA0IDc0IDE1IDhEIDVDIDI4IEU4IDU2IDAwIDc0IDBEIEU4ICAuNC4uLnQuLlwoLlYudC4u
CiAgICAxNEIwOiAwRSBGRiBFOCBFNCAxNiA3NCAzRiA4MCBGRCAwMiA3NCAzQSA4RCA1QyAyOCBF
OCAgLi4uLi50Py4uLnQ6LlwoLgogICAgMTRDMDogMzggMDAgRTggNjEgMEIgMzMgQzkgNTAgOEQg
OUMgMjggMDEgRTggRUQgMUQgNjYgIDguLmEuMy5QLi4oLi4uLmYKICAgIDE0RDA6IDBCIEMwIDc0
IDAzIEI5IDAwIDA4IDU4IDBBIEMwIDc1IDEzIDhEIDVDIDI4IEU4ICAuLnQuLi4uWC4udS4uXCgu
CiAgICAxNEUwOiAzRiAwMCA3NSAwQiA4MCBDRCAwMiBFOCAxOSAwMCA3NCAwMyA4MCBDRCAwNCA4
RCAgPy51Li4uLi4uLnQuLi4uLgogICAgMTRGMDogOUMgNDggMDEgRTggNkEgMUQgRTggREUgMDEg
QzMgNTEgQjkgNDkgMDAgRTggRjggIC5ILi5qLi4uLi5RLkkuLi4KICAgIDE1MDA6IDE5IDU5IEMz
IDUxIEU4IDFBIDAwIDc1IDE0IEU4IDlDIDAxIDNDIDAxIDc1IDBEICAuWS5RLi4udS4uLi48LnUu
CiAgICAxNTEwOiBCOSAyMCAwMCBFOCAyNyAwMCA3NSAwNSA4MCBDOSAwMSBFQiAwMiAzMyBDOSA1
OSAgLiAuLicudS4uLi4uLjMuWQogICAgMTUyMDogQzMgNTMgRTggOTcgMUQgNjYgM0QgMDAgRkYg
RkYgRkYgNzUgMEUgODMgQzMgMDQgIC5TLi4uZj0uLi4udS4uLi4KICAgIDE1MzA6IEU4IDg5IDFE
IDY2IDNEIEZGIEZGIEZGIDAwIDc1IDAwIDVCIEMzIDUwIDUyIDMyICAuLi5mPS4uLi51LlsuUFIy
CiAgICAxNTQwOiBEMiBFOCA3OCAxRCAwMiBEMCAwMiBENCA2NiBDMSBFOCAxMCAwMiBEMCAwMiBE
NCAgLi54Li4uLi5mLi4uLi4uLgogICAgMTU1MDogODMgQzMgMDQgRTIgRUMgMEEgRDIgNUEgNTgg
QzMgOEQgOUMgNEMgMDEgRTggMUYgIC4uLi4uLi5aWC4uLkwuLi4KICAgIDE1NjA6IDAxIEU4IDcz
IDAxIEI1IDEzIEE4IDA4IDc1IDBDIEU4IDUzIEZFIDhBIEVBIDgwICAuLnMuLi4uLnUuLlMuLi4u
CiAgICAxNTcwOiBGRCAxMyA3NSAwMiBCNSAwMyA4RCA5QyBCOCAwMiA2NiAzMyBDMCA4QSBDNSBF
OCAgLi51Li4uLi4uLmYzLi4uLgogICAgMTU4MDogOUEgMUMgRTggMTYgRkUgQTkgMTEgMDAgNzQg
MzcgQjUgMDEgRTggMjIgMDEgRTggIC4uLi4uLi4udDcuLi4iLi4KICAgIDE1OTA6IDQ1IDAxIEE4
IDA0IDc1IDE3IDU1IEJEIDAwIDAwIEI4IDYxIDQwIEU4IEYwIDAyICBFLi4udS5VLi4uLmFALi4u
CiAgICAxNUEwOiBCOCA0NSA0MCBFOCBFQSAwMiA1RCBCNSAwMiBFOCA4QSAwMCBDMyBFOCAyRiAw
MSAgLkVALi4uXS4uLi4uLi4vLgogICAgMTVCMDogQjUgMDIgOEQgNUMgMjggRTggREQgMDAgNzUg
MDIgQjUgMDEgRTggNzcgMDAgRUIgIC4uLlwoLi4udS4uLi53Li4KICAgIDE1QzA6IDY3IEE5IEM4
IDBFIDc0IDNFIEU4IDBFIDAxIEE4IDA4IDc0IDA4IDhEIDVDIDI4ICBnLi4udD4uLi4uLnQuLlwo
CiAgICAxNUQwOiBFOCBCNCAwMCA3NCBCNSBCNSAwMiBFOCBENyAwMCBFOCBGQSAwMCBBOCAwNCA3
NCAgLi4udC4uLi4uLi4uLi4udAogICAgMTVFMDogMEIgOEQgNUMgMjggRTggRjggMDAgRTggRjgg
MDIgRUIgMEEgOEQgOUMgNjggMDEgIC4uXCguLi4uLi4uLi4uaC4KICAgIDE1RjA6IEI4IDNDIDZB
IEU4IDYwIDA1IEU4IEQ0IDAwIDgwIEZEIDAwIDc1IDM3IEI1IDAyICAuPGouYC4uLi4uLi51Ny4u
CiAgICAxNjAwOiBFOCBDMCAwMCBDMyBBOSAyMiAwMCA3NCAyQyBCNSAwNCBFOCBBMyAwMCA4RCA5
QyAgLi4uLi4iLnQsLi4uLi4uLgogICAgMTYxMDogNjggMDEgNTYgRTggNzMgMUEgOEIgRjcgRTgg
NTggMDMgNUUgRTggMUIgMUEgRTggIGguVi5zLi4uLlguXi4uLi4KICAgIDE2MjA6IEExIDAwIDhE
IDVDIDI4IEU4IDQxIDFBIDhEIDlDIDY4IDAxIEU4IDRGIDAzIDY2ICAuLi5cKC5BLi4uaC4uTy5m
CiAgICAxNjMwOiA4QiBEMSBFOCBEMSAwNyBDMyA4RCA5QyBCNCAwMiBCMSAwMiBFOCAyMSAxQyBC
NSAgLi4uLi4uLi4uLi4uLiEuLgogICAgMTY0MDogMDIgRTggN0YgMDAgQzMgOEQgOUMgNEMgMDEg
RTggMzQgMDAgRTggODggMDAgQTggIC4uLi4uLi5MLi40Li4uLi4KICAgIDE2NTA6IDA0IDc0IDIz
IDhEIDVDIDI4IEU4IDg2IDAwIEU4IDJEIDFBIDhEIDlDIDY4IDAxICAudCMuXCguLi4uLS4uLmgu
CiAgICAxNjYwOiAwNiAwRSAwNyBCOSAwNyAwMCBFOCBDQSAxOCAwNyBFOCA2MCAwMCBFOCA1MCBG
RCAgLi4uLi4uLi4uLi5gLi5QLgogICAgMTY3MDogOEQgNUMgMjggRTggMUUgMUEgOEQgNUMgMjgg
RTggQ0QgMTkgRTggREIgRkUgQzMgIC5cKC4uLi5cKC4uLi4uLi4KICAgIDE2ODA6IEI5IDYxIDAw
IEU4IDczIDE4IEMzIDUzIDgxIEMzIDA1IDAxIEU4IDJEIDFDIDI0ICAuYS4ucy4uUy4uLi4uLS4k
CiAgICAxNjkwOiAwNiAzQyAwMiA1QiBDMyBFOCAxMCAwMCAzRCAwMSAwNCA3NSAwQSA1MyA4MyBD
MyAgLjwuWy4uLi49Li51LlMuLgogICAgMTZBMDogMTggRTggMTggMUMgNUIgQTggMDEgQzMgNTMg
ODMgQzMgMTIgRTggMEQgMUMgNUIgIC4uLi5bLi4uUy4uLi4uLlsKICAgIDE2QjA6IEMzIDhEIDlD
IEI0IDAyIDMyIEM5IEU4IEE2IDFCIEMzIDhEIDlDIEI0IDAyIEU4ICAuLi4uLjIuLi4uLi4uLi4u
CiAgICAxNkMwOiBGQSAxQiBDMyA4RCA5QyBCNCAwMiBCMSAwMSBFOCA5NCAxQiBDMyA4RCA5QyBC
NCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMTZEMDogMDIgQjEgMDEgRTggQTIgMUIgQzMgOEQgOUMg
NDggMDEgRTggREUgMUIgQzMgNTUgIC4uLi4uLi4uLkguLi4uLlUKICAgIDE2RTA6IDU3IDUxIEI5
IDA4IDAwIEJEIDAwIDAwIEJCIDA4IDAwIDJCIEQ5IEQxIEUzIDhEICBXUS4uLi4uLi4uLisuLi4u
CiAgICAxNkYwOiA1OCA0RSBFOCBDNyAxQiBFOCA5OCAwMSBFMiBFRSA4RCA1QyA0QiBFOCBCQyAx
QiAgWE4uLi4uLi4uLi5cSy4uLgogICAgMTcwMDogQjkgMDQgMDAgOEIgRDAgQkYgMDQgMTcgODUg
NTUgMDYgNzQgMTcgNjYgOEIgMDUgIC4uLi4uLi4uLlUudC5mLi4KICAgIDE3MTA6IDhEIDlBIEY0
IDAxIEU4IDA1IDFCIDhCIDQ1IDA0IDhEIDlBIEY4IDAxIEU4IDEzICAuLi4uLi4uLkUuLi4uLi4u
CiAgICAxNzIwOiAxQiA4MyBDNSAwOCA4MyBDNyAwOCBFMiBERiA4RCA3QyA1RSBCOSAwNCAwMCAz
MyAgLi4uLi4uLi4uLnxeLi4uMwogICAgMTczMDogRUQgOEIgREYgRTggODYgMUIgMEIgQzAgNzQg
MDkgRTggMTIgMDEgRTggNEMgMDAgIC4uLi4uLi4udC4uLi4uTC4KICAgIDE3NDA6IDgzIEM1IDFD
IDgzIEM3IDEyIEUyIEU5IDMyIEVEIEU4IDc2IEZGIDhEIDVDIDI4ICAuLi4uLi4uLjIuLnYuLlwo
CiAgICAxNzUwOiBFOCA1NSBGRiAzRCAwMSAwNCA3NSAxMCA4MyBDMyAxNCBFOCA1RSAxQiAyNCA3
MCAgLlUuPS4udS4uLi4uXi4kcAogICAgMTc2MDogQzAgRTggMDQgOEEgRTggRTggNUIgRkYgNTkg
NUYgNUQgQzMgMjAgMDMgNTggMDIgIC4uLi4uLlsuWV9dLiAuWC4KICAgIDE3NzA6IDNDIDAwIDAx
IDAwIDAwIDA0IDAwIDAzIDNDIDAwIDAwIDA4IDAwIDA1IDAwIDA0ICA8Li4uLi4uLjwuLi4uLi4u
CiAgICAxNzgwOiA0QiAwMCAwMCAwMSA4MCAwMiBFMCAwMSAzQyAwMCAyMCAwMCA1MSA4RCAxRCBF
OCAgSy4uLi4uLi48LiAuUS4uLgogICAgMTc5MDogMkEgMUIgOEQgOUEgNjggMDEgRTggOUIgMUEg
OEQgNUQgMDIgRTggMUQgMUIgOEQgICouLi5oLi4uLi5dLi4uLi4KICAgIDE3QTA6IDlBIDZBIDAx
IEU4IDg5IDAwIDhEIDVEIDA1IEU4IDEwIDFCIDhEIDlBIDZFIDAxICAuai4uLi4uXS4uLi4uLm4u
CiAgICAxN0IwOiBFOCA3QyAwMCA4RCA1RCAwOCBFOCAwMyAxQiA4QiBDOCA4QSBEQyA2NiBDMSBD
OCAgLnwuLl0uLi4uLi4uLmYuLgogICAgMTdDMDogMTAgOEEgRDAgODAgRTIgMEYgOEEgRjAgQzAg
RUUgMDQgOEEgRUMgQzAgRTUgMDYgIC4uLi4uLi4uLi4uLi4uLi4KICAgIDE3RDA6IDhBIEZDIEMw
IEU3IDA0IDgwIEU3IDAzIDgwIEU0IDBGIEMwIEU0IDA0IDBBIEQ0ICAuLi4uLi4uLi4uLi4uLi4u
CiAgICAxN0UwOiA4MCBFMiAzRiA4MCBFNCBDMCBDMCBFQyAwMiAwQSBGNCA4QiBDMyA4RCA5QSA3
NCAgLi4/Li4uLi4uLi4uLi4udAogICAgMTdGMDogMDEgRTggNDAgMUEgOEQgOUEgNzIgMDEgOEIg
QzEgRTggMzcgMUEgOEQgOUEgNzYgIC4uQC4uLnIuLi4uNy4uLnYKICAgIDE4MDA6IDAxIDMzIEMw
IDhBIEM2IEU4IDJDIDFBIDhEIDlBIDc4IDAxIDMzIEMwIDhBIEMyICAuMy4uLi4sLi4ueC4zLi4u
CiAgICAxODEwOiBFOCAyMSAxQSA4RCA1RCAwQyBFOCBBMyAxQSA4RCA5QSA3QSAwMSBFOCAwRiAw
MCAgLiEuLl0uLi4uLi56Li4uLgogICAgMTgyMDogOEQgNUQgMEYgRTggOTYgMUEgOEQgOUEgN0Ug
MDEgRTggMDcgMUEgNTkgQzMgOEIgIC5dLi4uLi4ufi4uLi5ZLi4KICAgIDE4MzA6IEM4IDhBIEQ0
IDY2IEMxIEM4IDEwIDhBIEYwIDgwIEU2IDBGIDhBIEU4IEMwIEVEICAuLi5mLi4uLi4uLi4uLi4u
CiAgICAxODQwOiAwNCA4QiBDMSBFOCBFRSAxOSA4MyBDMyAwMiA4QiBDMiBFOCBFNiAxOSBDMyA4
RCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMTg1MDogNUQgMTEgRTggNjcgMUEgOEEgRTAgQkEgMDYg
MDIgQzAgRTggMDcgNzQgMDMgODAgIF0uLmcuLi4uLi4uLi50Li4KICAgIDE4NjA6IENBIDgwIDhB
IEM0IEMwIEU4IDAzIDI0IDAzIDNDIDAyIDc1IDAzIDgwIENBIDQwICAuLi4uLi4uJC48LnUuLi5A
CiAgICAxODcwOiAzQyAwMyA3NSAxMiA4QSBDNCBEMCBFOCBBOCAwMSA3NCAwMyA4MCBFMiBGRCBB
OCAgPC51Li4uLi4uLnQuLi4uLgogICAgMTg4MDogMDIgNzQgMDMgODAgRTIgRkIgOEIgQzIgOEQg
OUEgODAgMDEgRTggQTUgMTkgQzMgIC50Li4uLi4uLi4uLi4uLi4KICAgIDE4OTA6IDNDIDAxIDc0
IDNEIDhCIEQwIDBGIEI2IEM2IDI0IDNGIDA0IDNDIDhEIDlBIEY4ICA8LnQ9Li4uLi4kPy48Li4u
CiAgICAxOEEwOiAwMSBFOCA5MCAxOSAwRiBCNiBDMiA4MyBDMCAxRiBDMSBFMCAwMyA4RCA5QSBG
NCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMThCMDogMDEgRTggODAgMTkgMEYgQjYgREUgQzEgRUIg
MDYgQzEgRTMgMDIgMkUgRjcgQTcgIC4uLi4uLi4uLi4uLi4uLi4KICAgIDE4QzA6IDZDIDE4IDJF
IEY3IEI3IDZBIDE4IDhEIDlBIEY2IDAxIEU4IDY2IDE5IDgzIEM1ICBsLi4uLmouLi4uLi5mLi4u
CiAgICAxOEQwOiAwOCBDMyAwMSAwMCAwMSAwMCAwNCAwMCAwMyAwMCAwNSAwMCAwNCAwMCAxMCAw
MCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMThFMDogMDkgMDAgNTcgOEQgOUMgNjggMDEgOEIgRkIg
OEIgREYgRTggOTAgMDAgMEIgQzkgIC4uVy4uaC4uLi4uLi4uLi4KICAgIDE4RjA6IDc0IDQ0IDhE
IDVEIDE4IEU4IEM0IDE5IEE4IDgwIDc0IDBEIDhCIERGIDU2IDhEICB0RC5dLi4uLi4udC4uLlYu
CiAgICAxOTAwOiAzNiBEMCAxOCBFOCA2RCAwMCA1RSBFQiAyOCA2NiA4QiBEMSBFOCBGNyAwNCA4
RCAgNi4uLm0uXi4oZi4uLi4uLgogICAgMTkxMDogOUMgQTYgMDAgRTggQTYgMTkgM0MgMDEgNzUg
MTcgNjYgODEgRjkgODAgMDcgMzggIC4uLi4uLjwudS5mLi4uLjgKICAgIDE5MjA6IDA0IDc0IDA5
IDY2IDgxIEY5IDAwIDA1IEQwIDAyIDc1IDA1IEI1IDAzIEU4IDgwICAudC5mLi4uLi4udS4uLi4u
CiAgICAxOTMwOiBGRCA4MyBDNyAxQyBFQiBCMyA1RiBDMyA4QyAwQSBEMCAwMiA4QSAwMCBFMCAw
MSAgLi4uLi4uXy4uLi4uLi4uLgogICAgMTk0MDogMkQgMDAgMTAgMDAgM0UgMDAgMDkgMDAgMDYg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgIC0uLi4+Li4uLi4uLi4uLi4KICAgIDE5NTA6IDA2IDAwIDAw
IDAwIDUwIDUzIDUxIEI5IDA3IDAwIDUzIDhCIERBIEU4IDVDIDE5ICAuLi4uUFNRLi4uUy4uLlwu
CiAgICAxOTYwOiA4MyBGOCAwMCA1QiA3NCAwOSA2NiBDMSBFMyAxMCA4QiBEQSBFOCA5RiAxNSA1
OSAgLi4uW3QuZi4uLi4uLi4uWQogICAgMTk3MDogNUIgNTggQzMgNTEgNTMgQjkgMDcgMDAgRTgg
QUMgMTUgNUIgNTkgQzMgNjYgNTAgIFtYLlFTLi4uLi4uW1kuZlAKICAgIDE5ODA6IDUzIDgzIEMz
IDA2IEU4IDM1IDE5IDVCIDhCIEM4IDY2IEMxIEUxIDEwIDUzIDgzICBTLi4uLjUuWy4uZi4uLlMu
CiAgICAxOTkwOiBDMyAwMiBFOCAyNyAxOSA4QiBDOCA1QiA2NiA1OCBDMyA4RCA5QyA0OCAwMSAz
MiAgLi4uJy4uLltmWC4uLkguMgogICAgMTlBMDogQzkgRTggQkMgMTggQzMgNTcgQjkgMjAgMDAg
RTggODcgMTUgNUYgQzMgRTggMEEgIC4uLi4uVy4gLi4uLl8uLi4KICAgIDE5QjA6IEZEIDNDIDAx
IDc1IDU3IDhEIDlDIEI2IDAyIEU4IDAwIDE5IEE4IDAyIDc0IDcxICAuPC51Vy4uLi4uLi4uLnRx
CiAgICAxOUMwOiA2NiBDMSBDRSAxMCBFOCAwNCAwNCA2NiBDMSBDRSAxMCAwQSBDMCA3NSAwRSA4
RCAgZi4uLi4uLmYuLi4uLnUuLgogICAgMTlEMDogOUMgNEMgMDEgQjggM0MgNkEgRTggN0QgMDEg
MEMgMDEgRUIgN0EgOEQgOUMgNjggIC5MLi48ai59Li4uLnouLmgKICAgIDE5RTA6IDAxIEIwIDAw
IEU4IDM2IDAxIDc1IDA3IEIwIDAwIEU4IERGIDAwIDc0IDY4IDhEICAuLi4uNi51Li4uLi4udGgu
CiAgICAxOUYwOiA5QyA2OCAwMSBCMCAwMSBFOCAyNCAwMSA3NSA1MiBCMCAwMSBFOCBCMCAwMCA3
NSAgLmguLi4uJC51Ui4uLi4udQogICAgMUEwMDogNTYgQjAgMDAgRTggQTkgMDAgRUIgNEYgMEIg
RjYgRUIgNEIgM0MgMDQgNzQgMjEgIFYuLi4uLi5PLi4uSzwudCEKICAgIDFBMTA6IDNDIDAzIDc0
IDFEIDY2IEMxIENFIDEwIEU4IEIwIDAzIDY2IEMxIENFIDEwIDBBICA8LnQuZi4uLi4uLmYuLi4u
CiAgICAxQTIwOiBDMCA3NCAwNyBCMCAwMSBFOCBBNCAwMCA3NSAyRCBCMCAwMCBFOCA5RCAwMCA3
NSAgLnQuLi4uLi51LS4uLi4udQogICAgMUEzMDogMjYgOEQgQkMgNjggMDEgOEQgMUQgRTggODIg
MTggMEIgQzAgNzQgMTkgOEIgREYgICYuLmguLi4uLi4uLnQuLi4KICAgIDFBNDA6IEIwIDAwIEU4
IEQ3IDAwIDc1IDA1IDgzIEM3IDFDIEVCIEU5IDhCIEQzIDhEIDlDICAuLi4uLnUuLi4uLi4uLi4u
CiAgICAxQTUwOiA0QyAwMSBFOCBGRiBGRSAwQiBGNiBDMyA1NyA1MyA1MSBFOCBEMSAxMyAzQiA1
NSAgTC4uLi4uLi5XU1EuLi47VQogICAgMUE2MDogMDIgNzUgMTggNjYgQzEgQ0EgMTAgOEIgREEg
NjYgQzEgQ0EgMTAgM0IgNUQgMDYgIC51LmYuLi4uLmYuLi47XS4KICAgIDFBNzA6IDc1IDA5IDBB
IEMwIDc0IDBFIDNBIDQ1IDFCIDc0IDA5IDgzIEM3IDFDIEUyIERFICB1Li4udC46RS50Li4uLi4u
CiAgICAxQTgwOiAzMyBEMiBFQiAwMiA4QiBENyAwQiBEMiA1OSA1QiA1RiBDMyA1MSA2NiA1MiBF
OCAgMy4uLi4uLi5ZW18uUWZSLgogICAgMUE5MDogOUQgMTMgM0EgNjUgMUEgNzUgMDkgMEEgQzAg
NzQgMEUgM0EgNDUgMUIgNzQgMDkgIC4uOmUudS4uLnQuOkUudC4KICAgIDFBQTA6IDgzIEM3IDFD
IEUyIEVEIDMzIEZGIEVCIDAwIDBCIEZGIDY2IDVBIDU5IEMzIDUxICAuLi4uLjMuLi4uLmZaWS5R
CiAgICAxQUIwOiBFOCA3QyAxMyA1NiA4RCA5QyA0QyAwMSA4QiBGNyBFOCBCNiBGRSA1RSBFOCA1
QiAgLnwuVi4uTC4uLi4uLl4uWwogICAgMUFDMDogMDAgNzUgMDcgODMgQzcgMUMgRTIgRUIgMzMg
RkYgNTkgQzMgOEQgQkMgRjQgMDEgIC51Li4uLi4uMy5ZLi4uLi4KICAgIDFBRDA6IDhBIEM4IDhE
IDFEIEU4IEU1IDE3IDBCIEMwIDc0IDQwIDY2IDUwIEU4IERCIEZCICAuLi4uLi4uLi50QGZQLi4u
CiAgICAxQUUwOiAzQyAwMSA2NiA1OCA3NCAwNSAzRCA0MCAwNiA3MyAyQiA2NiA4QiBEMCA4RCA1
RCAgPC5mWHQuPUAucytmLi4uXQogICAgMUFGMDogMDQgRTggQzggMTcgRTggNjEgRkYgNzQgMUQg
OEQgOUMgNEMgMDEgNTYgOEIgRjIgIC4uLi4uYS50Li4uTC5WLi4KICAgIDFCMDA6IEU4IDcwIEZF
IDVFIDUzIDhEIDlDIDYyIDAxIDMzIEMwIEU4IDI2IDE3IDVCIDhBICAucC5eUy4uYi4zLi4mLlsu
CiAgICAxQjEwOiBDMSBFOCAwOCAwMCA3NSAwNSA4MyBDNyAwOCBFQiBCNyBDMyA2NiA1MSA1MCA1
MyAgLi4uLnUuLi4uLi4uZlFQUwogICAgMUIyMDogNjYgQzEgQ0UgMTAgOEIgREUgNjYgQzEgQ0Ug
MTAgRTggOEYgMTcgNUIgNjYgOEIgIGYuLi4uLmYuLi4uLi5bZi4KICAgIDFCMzA6IEQwIEU4IDRB
IEZFIDU4IDNDIDAxIDc1IDBBIDY2IDNCIENBIDc1IDEzIEU4IEJBICAuLkouWDwudS5mOy51Li4u
CiAgICAxQjQwOiBGNiA3NSAxMCAzQiBDQSA3MiAwQSA2NiAzQiBDQSA3MiAwNSBFOCBBQyBGNiA3
NSAgLnUuOy5yLmY7LnIuLi4udQogICAgMUI1MDogMDIgMzIgQzAgNjYgNTkgQzMgNTYgNTcgRTgg
MzEgRkYgOEIgRjcgRTggMTMgRkUgIC4yLmZZLlZXLjEuLi4uLi4KICAgIDFCNjA6IDVGIDVFIEMz
IDY2IDUwIDUzIDY2IDUxIDUyIDU3IDU2IDUxIDhCIERFIEI5IDA4ICBfXi5mUFNmUVJXVlEuLi4u
CiAgICAxQjcwOiAwMCBFOCA4NSAxMyA1OSA4RCA1QyAwOCA4QiBDMSA2NiBDMSBFMCAxMCA4QSBD
MiAgLi4uLlkuXC4uLmYuLi4uLgogICAgMUI4MDogRTggOTkgMTYgRjYgQzIgMDMgNzUgMjQgOEIg
QzEgMjQgN0YgQkYgNDYgMUMgODAgIC4uLi4uLnUkLi4kLi5GLi4KICAgIDFCOTA6IDNEIEZGIDBG
IDg0IDBGIDAxIDNBIDA1IDc1IDBEIDY2IDhCIDQ1IDAxIDY2IEI5ICA9Li4uLi46LnUuZi5FLmYu
CiAgICAxQkEwOiAwMCAwNSAwMiAwMCBFOSA5NiAwMCA4MyBDNyAwNSBFQiBFMyBGNiBDMiAwMSA3
NCAgLi4uLi4uLi4uLi4uLi4udAogICAgMUJCMDogMjUgOEIgQzEgRTggNzAgMDEgMEYgODQgRUIg
MDAgMzMgQzkgOEEgQ0MgOEEgRDAgICUuLi5wLi4uLi4zLi4uLi4KICAgIDFCQzA6IDBBIEMwIDc1
IDEyIDhEIDVDIDA4IDY2IDI1IEZGIEZGIDAwIDAwIDY2IEMxIEUwICAuLnUuLlwuZiUuLi4uZi4u
CiAgICAxQkQwOiAwOCBFOCA0OCAxNiBFQiBCMiA4QSBFMSA4QSBDQSA4MCBFMSAwQyBDMCBFOSAw
MiAgLi5ILi4uLi4uLi4uLi4uLgogICAgMUJFMDogODAgRTIgRjAgQzAgRUEgMDQgOEEgRUEgODAg
RkMgNzAgNzIgMkEgODAgRkMgNzUgIC4uLi4uLi4uLi5wciouLnUKICAgIDFCRjA6IDczIDI1IDgw
IEVDIDcwIDhBIEM0IDMyIEU0IDUwIEU4IDMyIDAyIDhCIEQ4IDU4ICBzJS4ucC4uMi5QLjIuLi5Y
CiAgICAxQzAwOiAzOCBEOCA3MiAwNSAzMyBDMCBFOSA5QyAwMCBFOCAyQSAwMiBFOCBBRCAxNiAw
QiAgOC5yLjMuLi4uLiouLi4uLgogICAgMUMxMDogQzAgMEYgODQgOTAgMDAgRUIgMUIgMzIgQzAg
RTggNzAgRkUgMEYgODQgODUgMDAgIC4uLi4uLi4yLi5wLi4uLi4KICAgIDFDMjA6IDhEIDVDIDE2
IDhCIDA1IEU4IDBDIDE2IDhCIDQ1IDA2IDY2IEMxIEUwIDEwIDhCICAuXC4uLi4uLi5FLmYuLi4u
CiAgICAxQzMwOiA0NSAwMiA1MCBFOCA0MSAwQiA2NiBDMSBFMSAxMCA4QiBDOCA1OCA4RCAxQyBF
OCAgRS5QLkEuZi4uLi4uWC4uLgogICAgMUM0MDogREEgMTUgNjYgNTAgOEQgNUMgMDQgNjYgOEIg
QzEgRTggQ0YgMTUgNjYgNTggNjYgIC4uZlAuXC5mLi4uLi5mWGYKICAgIDFDNTA6IEMxIEU4IDEw
IDY2IDgxIEUxIEZGIEZGIDAwIDAwIDY2IEY3IEUxIDY2IDUwIDhEICAuLi5mLi4uLi4uZi4uZlAu
CiAgICAxQzYwOiA1QyAwNiBFOCA1NyAxNiA4QiBDOCA2NiA1OCA2NiBEMyBFMCA2NiBDMSBFOCAx
MCAgXC4uVy4uLmZYZi4uZi4uLgogICAgMUM3MDogNDAgOEQgNUMgMTQgRTggQkQgMTUgQkYgQTYg
MUMgODMgRjkgMDEgNzQgMTEgQkYgIEAuXC4uLi4uLi4uLi50Li4KICAgIDFDODA6IEFFIDFDIDgx
IEY5IDAxIDAxIDc0IDA4IEJGIEI2IDFDIDgzIEY5IDAyIDc1IDE1ICAuLi4uLi50Li4uLi4uLnUu
CiAgICAxQzkwOiA4RCA1QyAwQyA2NiA4QiAwNSBFOCA4MyAxNSA4RCA1QyAxMCA2NiA4QiA0NSAw
NCAgLlwuZi4uLi4uLlwuZi5FLgogICAgMUNBMDogRTggNzkgMTUgMEIgREIgNUUgNUYgNUEgNjYg
NTkgNUIgNjYgNTggQzMgMDAgNDAgIC55Li4uXl9aZllbZlguLkAKICAgIDFDQjA6IDAxIDkwIDAx
IDAxIDQwIDAxIDkwIDAxIDAyIDgwIDAyIDkwIDAxIDAzIDgwIDAyICAuLi4uQC4uLi4uLi4uLi4u
CiAgICAxQ0MwOiA5MCAwMSAwNCA0MCAwMSA5MCAwMSAwNSA0MCAwMSA5MCAwMSAwNiA4MCAwMiA5
MCAgLi4uQC4uLi5ALi4uLi4uLgogICAgMUNEMDogMDEgMDcgRDAgMDIgNUUgMDEgMEQgNDAgMDEg
OTAgMDEgMEUgODAgMDIgOTAgMDEgIC4uLi5eLi5ALi4uLi4uLi4KICAgIDFDRTA6IDBGIDgwIDAy
IDVFIDAxIDEwIDgwIDAyIDVFIDAxIDExIDgwIDAyIEUwIDAxIDEyICAuLi5eLi4uLl4uLi4uLi4u
CiAgICAxQ0YwOiA4MCAwMiBFMCAwMSAxMyA4MCAwMiA5MCAwMSAyMyAyMCAwNCA5MCAwMSAzMiAy
MCAgLi4uLi4uLi4uIyAuLi4yIAogICAgMUQwMDogMDQgQjAgMDIgMzMgMjAgMDQgQzAgMDIgNjIg
ODAgMDIgRTAgMDEgRkYgMDUgMEEgIC4uLjMgLi4uYi4uLi4uLi4KICAgIDFEMTA6IDA1IDA1IDA1
IDAwIDAwIDAwIDA1IDBCIDA2IDA1IDA1IDAwIDAwIDAwIDA4IDEwICAuLi4uLi4uLi4uLi4uLi4u
CiAgICAxRDIwOiAwOCAwOCAwOCAwMCAwMCAwMCA1NiBFOCBGRSAxMiA4MCBFNCAwMSAzQiAwNCA3
NCAgLi4uLi4uVi4uLi4uLjsudAogICAgMUQzMDogMDkgODMgQzYgMDQgRTIgRjcgMzMgQzAgRUIg
MDUgOEIgNDQgMDIgMEIgQzAgNUUgIC4uLi4uLjMuLi4uRC4uLl4KICAgIDFENDA6IEMzIDU3IDUz
IDUwIEU4IEUxIDEyIDgzIEU5IDBGIEU4IEUyIDAwIDgzIEY4IDA1ICAuV1NQLi4uLi4uLi4uLi4u
CiAgICAxRDUwOiA3NiAwMyBCOCAwNSAwMCAwMyBDOCBEMSBFMCAwMyBDOCBGQiBBNSA4MyBDNiAw
MiAgdi4uLi4uLi4uLi4uLi4uLgogICAgMUQ2MDogRTIgRkEgQjggRkYgRkYgQUIgNTggNUIgNUYg
QzMgNjYgNTMgNTEgNjYgNTIgRTggIC4uLi4uLlhbXy5mU1FmUi4KICAgIDFENzA6IDQxIDAwIEU4
IDc3IDAwIDY2IEMxIEU4IDEwIDY2IDBGIEI3IEQ4IDY2IEI4IDAwICBBLi53LmYuLi5mLi4uZi4u
CiAgICAxRDgwOiAwMCAwMCAwMyA2NiBEMyBFOCA2NiAzMyBEMiA2NiBGNyBGMyBFOCBFOCAwOSA2
NiAgLi4uZi4uZjMuZi4uLi4uZgogICAgMUQ5MDogNUEgNTkgNjYgNUIgQzMgNTMgNjYgNTAgQkIg
MDcgMDAgRTggNzkgMEUgMEEgQzAgIFpZZlsuU2ZQLi4uLnkuLi4KICAgIDFEQTA6IDY2IDU4IDVC
IEMzIDUzIDY2IDUwIEJCIDA3IDAwIEU4IDZBIDBFIEE4IDAxIDY2ICBmWFsuU2ZQLi4uLmouLi5m
CiAgICAxREIwOiA1OCA1QiBDMyA1MyA2NiA1MCA4RCA1QyAwNiBFOCAwMCAxNSA4QSBDOCA2NiA1
OCAgWFsuU2ZQLlwuLi4uLi5mWAogICAgMURDMDogNUIgQzMgNTEgQjkgMDggMDAgRTggNDUgMTEg
NTkgQzMgNTMgOEQgNUMgMDggRTggIFsuUS4uLi5FLlkuUy5cLi4KICAgIDFERDA6IEVBIDE0IDI0
IDAzIDVCIEMzIDhEIDVDIDA5IEU4IEUwIDE0IEMzIDUxIDUzIEIxICAuLiQuWy4uXC4uLi4uUVMu
CiAgICAxREUwOiAwMSA4QSBFOCA4RCA1QyAwOCBFOCA3NyAxNCA1QiA1OSBDMyA1MyA4RCAxQyBF
OCAgLi4uLlwuLncuW1kuUy4uLgogICAgMURGMDogQ0EgMTQgNUIgQzMgNTMgOEQgNUMgMDQgRTgg
QzEgMTQgNUIgQzMgNTMgOEQgNUMgIC4uWy5TLlwuLi4uWy5TLlwKICAgIDFFMDA6IDE2IEU4IEI4
IDE0IDVCIEMzIDUzIDY2IDUyIDMzIEMwIEU4IDRBIEZDIDY2IDVBICAuLi4uWy5TZlIzLi5KLmZa
CiAgICAxRTEwOiA3NSAxQiBFOCAzNCAwMCA3NCAxNiBFOCAxNSAwMCA0MCA4MyBGOCAwNSA3MyAw
RCAgdS4uNC50Li4uLkAuLi5zLgogICAgMUUyMDogRTggRjkgMTMgNDggRTggMEYgMDAgNjYgOEIg
QzIgRTggRUYgMTMgNUIgQzMgQkIgIC4uLkguLi5mLi4uLi5bLi4KICAgIDFFMzA6IDAwIDFFIEU4
IDg3IDE0IEMzIEJCIDA4IDFFIEMxIEUwIDAzIDAzIEQ4IEMzIEJCICAuLi4uLi4uLi4uLi4uLi4u
CiAgICAxRTQwOiAwMCAxRSBCOSAzMiAwMCBFOCBCMSAxMCBDMyA1MSBFOCBFMiBGRiAwQiBDMCA3
NCAgLi4uMi4uLi4uUS4uLi4udAogICAgMUU1MDogMTIgOEIgQzggQkIgMDggMUUgRTggNjMgMTQg
NjYgM0IgQzIgNzQgMDcgODMgQzMgIC4uLi4uLi5jLmY7LnQuLi4KICAgIDFFNjA6IDA4IEUyIEYz
IDBCIERCIDU5IEMzIEMzIEU4IDQyIEVEIDUxIEI5IDBCIDAxIEU4ICAuLi4uLlkuLi5CLlEuLi4u
CiAgICAxRTcwOiA1MiAxMCA1OSBDMyBCOCAyMiAwNiBFOCBFRSBGRiBDMyBCOCAzRiAwNiBFOCBF
NyAgUi5ZLi4iLi4uLi4uPy4uLgogICAgMUU4MDogRkYgQzMgQjggMjAgMDYgRTggRTAgRkYgQzMg
QjggMkUgMDYgRTggRDkgRkYgQzMgIC4uLiAuLi4uLi4uLi4uLi4KICAgIDFFOTA6IEI4IDNFIDA2
IEU4IEQyIEZGIEMzIDAwIEMzIDAwIEJCIDIwIERGIEU4IEMzIDM1ICAuPi4uLi4uLi4uLiAuLi41
CiAgICAxRUEwOiBFOCA3RCBGNCBCNSAwMSBFOCAyQiAwNyBDMyBCQiAwMCBERiBFOCBCNCAzNSBF
OCAgLn0uLi4uKy4uLi4uLi41LgogICAgMUVCMDogNkUgRjQgQjUgMDAgRTggMUMgMDcgQzMgODAg
RjkgMDAgNzUgMEEgRTggMkQgMTAgIG4uLi4uLi4uLi4udS4uLS4KICAgIDFFQzA6IDhBIEM4IEI1
IDAyIEU4IEU1IDA4IDBCIEY2IDc0IDI5IEU4IDUyIEY0IEI1IDAxICAuLi4uLi4uLi50KS5SLi4u
CiAgICAxRUQwOiBFOCAxNCAwNyA1NiAzMyBGNiBCNSAwMCBFOCA1RCAwNiA1RSBCNSAwMSBFOCBD
MyAgLi4uVjMuLi4uXS5eLi4uLgogICAgMUVFMDogRjQgRTggQzggMDggRTggN0YgMDkgRTggMzYg
RjQgOEQgOUMgMDAgMDMgRTggRkQgIC4uLi4uLi4uNi4uLi4uLi4KICAgIDFFRjA6IDA2IEU4IDQ2
IDA3IDY2IEMxIENFIDEwIEI1IDAxIEU4IDNCIDA2IEU4IEQ2IEZFICAuLkYuZi4uLi4uLjsuLi4u
CiAgICAxRjAwOiBBOCA0MCA3NSAwNyAzMiBDMCBCNSAwMSBFOCA0QiAwOCA2NiBDMSBDRSAxMCBD
MyAgLkB1LjIuLi4uSy5mLi4uLgogICAgMUYxMDogRTggMEQgRjQgQjUgMDEgRTggOTYgMDYgQjUg
MDAgRTggQ0EgMDYgRTggMkQgMDcgIC4uLi4uLi4uLi4uLi4uLS4KICAgIDFGMjA6IEIxIDBGIEU4
IDM2IDBBIEIxIDEwIEU4IDMxIDBBIEU4IDJCIDAwIEMzIEU4IDdBICAuLi42Li4uLjEuLisuLi56
CiAgICAxRjMwOiAwMCBFOCBGQyBGMyBCNSAwMCBFOCA3NSAwNiBCNSAwMCBFOCBBOSAwNiBFOCA3
MSAgLi4uLi4uLnUuLi4uLi4ucQogICAgMUY0MDogRjQgRTggQTkgMEYgMzggQzEgNzQgMEYgODAg
RjkgMDggNzIgMDUgODAgRjkgMEIgIC4uLi44LnQuLi4uci4uLi4KICAgIDFGNTA6IDc2IDA1IEI1
IDAzIEU4IDU1IDA4IEMzIDUzIDY2IDUwIEJCIDAyIDAwIEU4IEI2ICB2Li4uLlUuLlNmUC4uLi4u
CiAgICAxRjYwOiAwQyA2NiBBOSAwMCAwMCAwMSAwMCA2NiA1OCA1QiA3NSAzRSBFOCBEQyBGMyAw
QiAgLmYuLi4uLmZYW3U+Li4uLgogICAgMUY3MDogRDIgNzQgMEMgRTggNkEgRjQgM0MgMDEgNzQg
MDUgQjEgMEYgRTggMUEgMEEgQjEgIC50Li5qLjwudC4uLi4uLi4KICAgIDFGODA6IDBDIEU4IDc1
IDAwIEIxIDAxIEU4IDQ4IDBBIEU4IDcyIEYzIDgwIEZEIDAwIDc1ICAuLnUuLi4uSC4uci4uLi51
CiAgICAxRjkwOiAwRCBFOCBFNiAwMSBCMSAwRCBFOCBDMiAwOSBCMSAwMyBFOCA1QiAwMCBFOCBB
QSAgLi4uLi4uLi4uLi4uWy4uLgogICAgMUZBMDogRjMgMEIgRDIgNzQgMDUgQjEgMDEgRTggRUYg
MDkgQzMgRTggOUQgRjMgMEIgRDIgIC4uLnQuLi4uLi4uLi4uLi4KICAgIDFGQjA6IDc0IDA1IEIx
IDAwIEU4IEUyIDA5IEIxIDAyIEU4IDNEIDAwIEU4IDIxIEY0IEE4ICB0Li4uLi4uLi4uPS4uIS4u
CiAgICAxRkMwOiAwMSA3NCAwRCBFOCAzOCBGMyA4MCBGRCAwMCA3NSAwNSBCMCAwMiBFOCAxMiAw
NCAgLnQuLjguLi4udS4uLi4uLgogICAgMUZEMDogQjEgMDAgRTggRkMgMDkgQjEgMEQgRTggMUYg
MDAgQzMgQjEgMDcgRTggRjEgMDkgIC4uLi4uLi4uLi4uLi4uLi4KICAgIDFGRTA6IEU4IDY4IEYz
IDBCIEQyIDc1IDBDIEU4IEQ2IEYzIEU4IEE4IDBCIDc1IDA5IEU4ICAuaC4uLnUuLi4uLi4udS4u
CiAgICAxRkYwOiA5MCAwQSBDMyBCMSAwNyBFOCBBMSAwOSBDMyBFOCBDNCBGMyBFOCA5NiAwQiA3
NSAgLi4uLi4uLi4uLi4uLi4udQogICAgMjAwMDogMjQgNTEgRTggQ0MgMDkgNTkgODAgRjkgMEMg
NzUgMUEgMzMgRDIgNTYgODMgQzYgICRRLi4uWS4uLnUuMy5WLi4KICAgIDIwMTA6IDA4IEU4IEJG
IDBCIDVFIDBBIEMwIDc1IDBDIEI5IDBBIDAwIEU4IDJCIDBGIDQyICAuLi4uXi4udS4uLi4uKy5C
CiAgICAyMDIwOiA4MyBGQSAxRSA3NSBFOCBDMyA1NiA4MyBDNiAwOCBFOCA0NyAwQiA1RSBFOCAx
QSAgLi4udS4uVi4uLi5HLl4uLgogICAgMjAzMDogRjMgMEIgRDIgNzQgMDMgRTggQTEgMDggODAg
RkQgMDEgMEYgODQgRDEgMDAgODAgIC4uLnQuLi4uLi4uLi4uLi4KICAgIDIwNDA6IEZEIDAyIDBG
IDg1IEYyIDAwIEIxIDBDIEU4IEFFIEZGIDU2IDgzIEM2IDA4IEU4ICAuLi4uLi4uLi4uLlYuLi4u
CiAgICAyMDUwOiA4MSAwQiA1RSAwQSBDMCAwRiA4NCBERiAwMCBFOCBERiAwMCAwQSBEQiAwRiA4
NSAgLi5eLi4uLi4uLi4uLi4uLgogICAgMjA2MDogRDYgMDAgOEQgOUMgMzUgMDEgRTggNTMgMTIg
QTggMDEgNzQgMDMgRTggN0YgMDMgIC4uLi41Li5TLi4udC4uLi4KICAgIDIwNzA6IEU4IEQ4IEYy
IDBCIEQyIDc0IDA1IEIxIDE0IEU4IDFEIDA5IDY2IDMzIEM5IEU4ICAuLi4uLnQuLi4uLi5mMy4u
CiAgICAyMDgwOiBGQSBGMiA2NiBCQSA1MCAwMSA0MCA1MCA2NiBDMSBDOSAxMCA4QSBDMSA2NiBD
MSAgLi5mLlAuQFBmLi4uLi5mLgogICAgMjA5MDogQzkgMTAgRTggMzggMEEgMEYgODUgOUYgMDAg
NjYgQkEgNTAgMDEgNTAgNEYgNTIgIC4uLjguLi4uLmYuUC5QT1IKICAgIDIwQTA6IEU4IEE4IEYy
IDgwIEZBIDIyIDVBIDc0IDBEIDhEIDlDIDJEIDAxIEU4IDBDIDEyICAuLi4uLiJadC4uLi0uLi4u
CiAgICAyMEIwOiAyNCAwNiAzQyAwMiA3NSAwMiBCNiAwMiA4RCA1QyAyOCA2NiBDMSBDOSAxMCAw
MyAgJC48LnUuLi4uXChmLi4uLgogICAgMjBDMDogRDkgNjYgQzEgQzkgMTAgRTggMDUgMEEgNzUg
NkUgOEEgREYgMzIgRkYgNjYgQzEgIC5mLi4uLi4udW4uLjIuZi4KICAgIDIwRDA6IEM5IDEwIDAz
IENCIDY2IEMxIEM5IDEwIDY2IEJBIDUwIDAxIDEwIDMwIDMzIERCICAuLi4uZi4uLmYuUC4uMDMu
CiAgICAyMEUwOiBFOCBFQSAwOSA3NSA1MyA2NiBDMSBDOSAxMCA4QiBDMSA2NiBDMSBDOSAxMCAw
QiAgLi4udVNmLi4uLi5mLi4uLgogICAgMjBGMDogQzAgNzQgNDUgODMgRjggMTAgNzUgMEYgOEQg
NUMgMjggRTggQkUgMTEgNjYgMEIgIC50RS4uLnUuLlwoLi4uZi4KICAgIDIxMDA6IEMwIDBGIDg1
IDdEIEZGIEVCIDMxIDNEIDgwIDAwIDBGIDgyIDc0IEZGIEVCIDI1ICAuLi59Li4xPS4uLi50Li4l
CiAgICAyMTEwOiBFOCA2OSBGMiA4QSBFOSBCMSBBMCBCQSAwMCA4MCBCRiAzMiAwMCA4RCA1QyAy
OCAgLmkuLi4uLi4uLi4yLi5cKAogICAgMjEyMDogRTggN0YgMDkgODAgRkYgMDEgNzQgMEQgQjEg
QTIgOEQgNUMgMjggRTggNzIgMDkgIC4uLi4uLnQuLi4uXCguci4KICAgIDIxMzA6IDgwIEZGIDAx
IDc1IDAzIEIwIDAwIEMzIEIwIDAxIEMzIEU4IDJCIDAwIDc0IDBDICAuLi51Li4uLi4uLi4rLnQu
CiAgICAyMTQwOiBCMCAwMSBFOCA5RCAwMiA3NSAyMSBFOCAxRiAwMCA3NSAxQyA2NiBCQSAwQyAw
MCAgLi4uLi51IS4uLnUuZi4uLgogICAgMjE1MDogOTAgNDMgOEQgOUMgMzAgMDEgRTggNzQgMDkg
NjYgQkEgMjAgMDAgOTAgNDEgOEQgIC5DLi4wLi50LmYuIC4uQS4KICAgIDIxNjA6IDlDIDM0IDAx
IEU4IDY3IDA5IDMzIERCIEMzIEU4IDEwIEYyIDY2IEJBIDAwIDAwICAuNC4uZy4zLi4uLi5mLi4u
CiAgICAyMTcwOiA5MCA0NyA4RCA5QyAyOCAwMSBFOCA1NCAwOSBDMyBFOCA2MyBGMiAzQyAwMSA3
NSAgLkcuLiguLlQuLi5jLjwudQogICAgMjE4MDogMEUgRTggRUQgMDIgODAgRkQgMDEgNzUgMDYg
QjUgMDIgRTggMTIgMDMgQzMgOEQgIC4uLi4uLi51Li4uLi4uLi4KICAgIDIxOTA6IDlDIEFDIDAz
IEI5IDEwIDAwIEU4IDYwIDBEIEIwIDAxIEU4IDQ0IDAyIDc0IDA4ICAuLi4uLi4uYC4uLi5ELnQu
CiAgICAyMUEwOiBCNSAwNCBFOCAxMSAwMyBFOSAxOSAwMSBCMSAwOCBFOCBBRSAwNyBFOCA2NiAw
MiAgLi4uLi4uLi4uLi4uLi5mLgogICAgMjFCMDogQjEgMDkgRTggQTYgMDcgRTggQUMgMDEgOEQg
OUMgQjggMDMgNjYgMzMgQzAgRTggIC4uLi4uLi4uLi4uLmYzLi4KICAgIDIxQzA6IDVBIDEwIEU4
IDQ3IDAxIEI5IDkwIDAxIEU4IDc0IDBEIEIwIDAxIEU4IEY3IDAxICBaLi5HLi4uLi50Li4uLi4u
CiAgICAyMUQwOiBCNSAwMiBFOCBENSAwMiBFOCA1QiAwMSBFOCBFNyAwMiBFOCBDNyAwMSBCNSAw
MyAgLi4uLi4uWy4uLi4uLi4uLgogICAgMjFFMDogRTggQzcgMDIgMzMgQzkgRTggRTcgMDAgRjYg
QzUgMDEgNzUgMkUgQjUgMDIgRTggIC4uLjMuLi4uLi4udS4uLi4KICAgIDIxRjA6IEI4IDAyIEU4
IDA3IDAxIEY2IEM1IDA0IDc0IDA4IEI1IDAxIEU4IEI3IDAyIEU5ICAuLi4uLi4uLnQuLi4uLi4u
CiAgICAyMjAwOiBCRiAwMCA4QSBGRCA4MCBFNyAwMyBFOCBDRiAwMCA4MCBFMyAwMyAzOCBGQiA3
NSAgLi4uLi4uLi4uLi4uLjgudQogICAgMjIxMDogMDcgRTggMzMgMDEgMEYgODQgQTkgMDAgRTgg
NTQgMDEgRkUgQzEgRTggNkIgRjEgIC4uMy4uLi4uLlQuLi4uay4KICAgIDIyMjA6IDM4IEQ5IDc1
IEMxIDhEIDlDIEFDIDAzIEU4IDkxIDEwIDNDIDAzIDc0IDA1IEU4ICA4LnUuLi4uLi4uLjwudC4u
CiAgICAyMjMwOiBEQSAwMCBFQiBBMSA4RCA5QyBCMCAwMyA2NiAzMyBDMCBFOCBERSAwRiA4RCA5
QyAgLi4uLi4uLi5mMy4uLi4uLgogICAgMjI0MDogMkEgMDEgRTggNzcgMTAgQTggNDAgNzQgMEMg
QjEgMTMgRTggMEQgMDcgQjAgMDMgICouLncuLkB0Li4uLi4uLi4KICAgIDIyNTA6IEU4IDc0IDAx
IEVCIDBBIEIxIDBBIEU4IDAxIDA3IEIwIDAyIEU4IDY4IDAxIEI1ICAudC4uLi4uLi4uLi4uaC4u
CiAgICAyMjYwOiAwNCBFOCA0NiAwMiBFOCBDQyAwMCBFOCA1OCAwMiBFOCAzOCAwMSBCNSAwNSBF
OCAgLi5GLi4uLi5YLi44Li4uLgogICAgMjI3MDogMzggMDIgMzMgQzkgRTggNTggMDAgODAgRkQg
MDcgNzUgMDUgRTggNzMgMDAgNzUgIDguMy4uWC4uLi51Li5zLnUKICAgIDIyODA6IDI3IDUxIEI1
IDA0IEU4IDIzIDAyIDU5IEY2IEM1IDAxIDc1IDA3IEI1IDAzIEU4ICAnUS4uLiMuWS4uLnUuLi4u
CiAgICAyMjkwOiAyNCAwMiBFQiAyRCBFOCA2NSAwMCA4QSBENSBFOCBEMyAwMCBFOCA1RCAwMCAz
OCAgJC4uLS5lLi4uLi4uLl0uOAogICAgMjJBMDogRUEgNzUgMDUgRTggQTEgMDAgNzQgMTkgRkUg
QzEgRTggREUgRjAgMzggRDkgNzUgIC51Li4uLnQuLi4uLi44LnUKICAgIDIyQjA6IEMzIDhEIDlD
IEFDIDAzIEU4IDA0IDEwIDNDIDA0IDc1IDA1IEU4IDREIDAwIEVCICAuLi4uLi4uLjwudS4uTS4u
CiAgICAyMkMwOiBBMyBCMCAwMCBFOCAwMSAwMSBCMSAwQiBFOCA5MCAwNiBFOCBBMyAwMSBDMyA4
RCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMjJEMDogOUMgQzAgMDMgRTggMEYgMDAgOEEgRTggQzMg
NTMgOEQgOUMgQzQgMDMgRTggMDQgIC4uLi4uLi4uLlMuLi4uLi4KICAgIDIyRTA6IDAwIDVCIDhB
IEQ4IEMzIDUxIEU4IEQzIDBGIEMwIEUxIDAyIEQzIEU4IDI0IDBGICAuWy4uLlEuLi4uLi4uLiQu
CiAgICAyMkYwOiA1OSBDMyA4RCA5QyBDMiAwMyBFOCBDMyAwRiBBOCAwMSBDMyA4RCA5QyBCOCAw
MyAgWS4uLi4uLi4uLi4uLi4uLgogICAgMjMwMDogRTggNzUgMEYgQzMgOEQgOUMgQjggMDMgRTgg
NTUgMEYgQzMgMzMgQzkgMzMgRDIgIC51Li4uLi4uLlUuLjMuMy4KICAgIDIzMTA6IEU4IEU5IEZG
IDM4IEQ1IDc2IDAyIDhBIEQ1IEZFIEMxIEU4IDZEIEYwIDM4IEQ5ICAuLi44LnYuLi4uLi5tLjgu
CiAgICAyMzIwOiA3MiBFRSAzMyBDOSA4QSBFQSA4RCA5QyA1QyAwMyBFOCAzMyAwRiBCMSAwQiBF
OCAgci4zLi4uLi5cLi4zLi4uLgogICAgMjMzMDogOUYgMDYgQzMgRTggNDYgRjAgOEQgOUMgQjgg
MDMgRTggN0YgMEYgNjYgQkEgMDMgIC4uLi5GLi4uLi4uLi5mLi4KICAgIDIzNDA6IDAxIDgwIDgz
IEU4IDg3IDA3IEMzIDUxIDUzIDhEIDlDIEIwIDAzIEU4IDI4IDBGICAuLi4uLi4uUVMuLi4uLigu
CiAgICAyMzUwOiBGRSBDNSBFOCAwQiAwRiA4MCBGRCAwNiA3MiAwNyBCNSAwMiBFOCA1NyAwMSAz
MyAgLi4uLi4uLi5yLi4uLlcuMwogICAgMjM2MDogQzkgNUIgNTkgQzMgNjYgMzMgQzAgOEQgOUMg
QjAgMDMgRTggQUUgMEUgQzMgMzIgIC5bWS5mMy4uLi4uLi4uLjIKICAgIDIzNzA6IEVEIEU4IDY1
IEZGIDgwIEUzIDBDIEMwIEVCIDAyIEI3IDAzIDJBIEZCIEMwIEUzICAuLmUuLi4uLi4uLi4qLi4u
CiAgICAyMzgwOiAwMyA4QSBFQiA4MCBGQiAxOCA3MiAwMyA4MCBDRCAyMCBFOCA0QiBGRiA4MCBF
MyAgLi4uLi4uci4uLiAuSy4uLgogICAgMjM5MDogMDMgMzggRkIgNzIgMDIgOEEgREYgODAgRkIg
MDMgNzUgMDMgODAgQ0QgMDQgMEEgIC44LnIuLi4uLi51Li4uLi4KICAgIDIzQTA6IEVCIEU4IDYw
IEZGIEMzIEU4IEQ0IEVGIDhEIDlDIEMwIDAzIDY2IEJBIDAyIDAyICAuLmAuLi4uLi4uLi5mLi4u
CiAgICAyM0IwOiA5MCA0NSBFOCAxOCAwNyBDMyBFOCBDMyBFRiA2NiBCQSAwMCAwMSA5MCA0MiA4
RCAgLkUuLi4uLi4uZi4uLi5CLgogICAgMjNDMDogOUMgQjQgMDMgRTggMDcgMDcgQzMgRTggQjIg
RUYgNjYgQkEgMDIgMDEgODAgNTAgIC4uLi4uLi4uLi5mLi4uLlAKICAgIDIzRDA6IEU4IEZBIDA2
IEMzIEU4IDk0IEVGIDhCIEMyIDY2IDMzIEQyIEI5IDhDIDBBIEY3ICAuLi4uLi4uLi5mMy4uLi4u
CiAgICAyM0UwOiBGMSBDMyBFOCA5NyBFRiA2NiBCQSAwMCAwNiA4MCA1MCBFOCBERiAwNiBDMyBF
OCAgLi4uLi5mLi4uLlAuLi4uLgogICAgMjNGMDogOEEgRUYgNjYgQkEgMTEgMDEgODAgNTAgQjAg
MDQgRTggRDAgMDYgQzMgRTggN0IgIC4uZi4uLi5QLi4uLi4uLnsKICAgIDI0MDA6IEVGIDY2IEJB
IDAwIDA2IDkwIDQwIDhEIDlDIEM4IDAzIEU4IEJGIDA2IDhEIDlDICAuZi4uLi5ALi4uLi4uLi4u
CiAgICAyNDEwOiBDOCAwMyBFOCBBNyAwRSBDMyBFOCBCQiBGRiBFOCA2RiBFRiA4QSBFMyA4MCBD
QyAgLi4uLi4uLi4uLm8uLi4uLgogICAgMjQyMDogODAgNTAgRTggNTcgRUYgNTggNjYgQkEgMDAg
MDEgODAgNjEgRTggOUUgMDYgMzMgIC5QLlcuWGYuLi4uYS4uLjMKICAgIDI0MzA6IEM5IEU4IEUy
IEVFIDBCIEMwIDc0IDAyIEI1IDEwIDhEIDlDIEJDIDAzIEU4IDFGICAuLi4uLi50Li4uLi4uLi4u
CiAgICAyNDQwOiAwRSA4QSBDNSBFOCAzNiBFRiA2NiBCQSAwNyAwMSA4MCA1MCBFOCA3RSAwNiBF
OCAgLi4uLjYuZi4uLi5QLn4uLgogICAgMjQ1MDogNkUgRUYgRTggNDQgMDcgNzUgMTkgOEQgOUMg
NDggMDMgRTggNUUgMEUgMEEgQzAgIG4uLkQudS4uLkguLl4uLi4KICAgIDI0NjA6IDc0IDBFIEU4
IDE3IEVGIDY2IEJBIDBBIDAxIDgwIDUwIEIwIDAxIEU4IDVEIDA2ICB0Li4uLmYuLi4uUC4uLl0u
CiAgICAyNDcwOiBDMyBFOCA0MiBGRiBFOCAyRSBGRiBFOCA4NCBGRiAzQyAwMSA3NSAxQyBFOCA3
MSAgLi5CLi4uLi4uLjwudS4ucQogICAgMjQ4MDogRkUgNzQgMTcgMzMgQzkgRTggNDcgRkUgODAg
RkQgMDcgNzUgMEQgRkUgQzEgRTggIC50LjMuLkcuLi4udS4uLi4KICAgIDI0OTA6IEY5IEVFIDM4
IEQ5IDc1IEVGIEI1IDAxIEVCIDAyIEI1IDAwIEU4IDAxIDAwIEMzICAuLjgudS4uLi4uLi4uLi4u
CiAgICAyNEEwOiA4RCA5QyBBQyAwMyBCMSAwMiBFOCBCNyAwRCBDMyA1MSA4RCA5QyBBQyAwMyAz
MiAgLi4uLi4uLi4uLlEuLi4uMgogICAgMjRCMDogQzkgRTggQUMgMEQgNTkgQzMgNTEgOEQgOUMg
QUMgMDMgQjEgMDEgRTggQTAgMEQgIC4uLi5ZLlEuLi4uLi4uLi4KICAgIDI0QzA6IDU5IEMzIDhE
IDlDIDMyIDAxIEU4IEYzIDBEIDBBIEMwIDc1IDE1IEI5IDY0IDAwICBZLi4uMi4uLi4uLnUuLmQu
CiAgICAyNEQwOiA4RCA5QyBBQyAwMyBFOCBFNSAwRCAzQyAwMiA3NCAwMyBCOSA5MCAwMSBFOCA1
RSAgLi4uLi4uLjwudC4uLi4uXgogICAgMjRFMDogMEEgQzMgMzIgRTQgQjEgMDQgMzMgRDIgRjYg
RTEgOEIgQzggRTggNUIgMEEgQzMgIC4uMi4uLjMuLi4uLi5bLi4KICAgIDI0RjA6IDUxIDhEIDVD
IDE0IEU4IEM1IDBEIDY2IEMxIEUwIDEwIEU4IDk4IDAxIDU5IEMzICBRLlwuLi4uZi4uLi4uLlku
CiAgICAyNTAwOiAzMyBDOSBFOCBFMiAwOSAzOCBDMSA3MyAwNSBCNSAwMCBFOCBBNyAwMCBCNSAw
MCAgMy4uLi44LnMuLi4uLi4uLgogICAgMjUxMDogRTggOUIgMDAgRkUgQzEgRTggRDIgMDkgMzgg
QzEgNzIgRTYgQjEgMTQgOEEgRTkgIC4uLi4uLi4uOC5yLi4uLi4KICAgIDI1MjA6IEU4IENBIDA5
IDM4IEMxIDc0IDA1IEI1IDAzIEU4IDgwIDAyIEZFIEMxIEU4IEIzICAuLi44LnQuLi4uLi4uLi4u
CiAgICAyNTMwOiAwOSAwNCAxNCAzOCBDMSA3NiBFNyBDMyA4MyBFQyAwQyA4QiBFQyAwQiBGNiA3
NCAgLi4uOC52Li4uLi4uLi4udAogICAgMjU0MDogMjkgRTggQTggRjggNjYgQzEgQzggMTAgODAg
RkQgMTAgNzUgMDYgOEQgNUMgMTggICkuLi5mLi4uLi4udS4uXC4KICAgIDI1NTA6IEU4IDY5IDBE
IDY2IDg5IDQ2IDAwIDhEIDVDIDA0IEU4IDVGIDBEIDY2IDg5IDQ2ICAuaS5mLkYuLlwuLl8uZi5G
CiAgICAyNTYwOiAwNCA4RCA1QyAwOCBFOCA1NSAwRCA4OCA0NiAwQSA4OSA0RSAwOCA4QyBEMCA2
NiAgLi5cLi5VLi5GLi5OLi4uZgogICAgMjU3MDogQzEgRTAgMTAgOEIgQzQgQkIgMkIgMDAgRTgg
QzcgMDggODMgQzQgMEMgQzMgMzMgIC4uLi4uLisuLi4uLi4uLjMKICAgIDI1ODA6IERCIDgzIEVD
IDA4IDhCIEVDIDg5IDVFIDAwIDhDIEQwIDY2IEMxIEUwIDEwIDhCICAuLi4uLi4uXi4uLmYuLi4u
CiAgICAyNTkwOiBDNCBCQiAwMSAwMCBFOCBBQiAwOCA4QiBFQyA4QiA0RSAwMCA4QiA1NiAwMiA2
NiAgLi4uLi4uLi4uLk4uLlYuZgogICAgMjVBMDogOEIgNDYgMDQgODMgQzQgMDggQzMgQkIgMjUg
MDAgRTggMEYgMDAgQzMgQkIgMjMgIC5GLi4uLi4uJS4uLi4uLiMKICAgIDI1QjA6IDAwIEU4IDA4
IDAwIEMzIEJCIDBEIDAwIEU4IDAxIDAwIEMzIDgzIEVDIDA0IDhCICAuLi4uLi4uLi4uLi4uLi4u
CiAgICAyNUMwOiBFQyA4OSA0RSAwMCA4QyBEMCA2NiBDMSBFMCAxMCA4QiBDNCBFOCA3MyAwOCA4
MyAgLi5OLi4uZi4uLi4uLnMuLgogICAgMjVEMDogQzQgMDQgQzMgQkIgMjIgMDAgRTggRTMgRkYg
ODAgRkQgMDEgNzQgMDggQjUgMDEgIC4uLi4iLi4uLi4uLnQuLi4KICAgIDI1RTA6IEJCIDA2IDAw
IEU4IEQ2IEZGIEMzIEJCIDJDIDAwIEU4IENGIEZGIEMzIEU4IENCICAuLi4uLi4uLiwuLi4uLi4u
CiAgICAyNUYwOiAwQyA2NiBBOSAwMCAwMCBGRiBGRiA3NCA0MCA4MyBFQyAxOCA4QiBFQyA1NSA1
MSAgLmYuLi4uLnRALi4uLi5VUQogICAgMjYwMDogQjkgMDQgMDAgODMgQzMgMDIgRTggQjMgMEMg
NjYgODkgNDYgMDAgODMgQzUgMDQgIC4uLi4uLi4uLmYuRi4uLi4KICAgIDI2MTA6IDgzIEMzIDA0
IEUyIEYxIDgzIEMzIDA0IEU4IEExIDBDIDY2IEMxIEM4IDEwIDY2ICAuLi4uLi4uLi4uLmYuLi5m
CiAgICAyNjIwOiA4OSA0NiAwMCA1OSA1RCA4OCA0RSAxNCA4QyBEMCA2NiBDMSBFMCAxMCA4QiBD
NCAgLkYuWV0uTi4uLmYuLi4uLgogICAgMjYzMDogQkIgMzEgMDAgRTggMEMgMDggODMgQzQgMTgg
QzMgRTggRTMgRUMgOEQgOUMgRDAgIC4xLi4uLi4uLi4uLi4uLi4KICAgIDI2NDA6IDAyIEU4IDc4
IDBDIDhBIEU4IEJCIDIxIDAwIEU4IDcwIEZGIEMzIDhEIDlDIDNDICAuLnguLi4uIS4ucC4uLi48
CiAgICAyNjUwOiAwMyBFOCA2OCAwQyA4QSBGOCBFOCBBNSBFQyA4QSBERCA1MyA4RCA5QyA0MiAw
MyAgLi5oLi4uLi4uLi5TLi5CLgogICAgMjY2MDogRTggNTkgMEMgOEEgRTggNUIgRTggQjcgRUMg
RTggNTQgRUQgRTggMkEgMDUgNzUgIC5ZLi4uWy4uLi5ULi4qLnUKICAgIDI2NzA6IDAyIEIzIDAx
IDgzIEVDIDA0IDhCIEVDIDg4IDRFIDAwIDg4IDdFIDAxIDg4IDVFICAuLi4uLi4uLi5OLi5+Li5e
CiAgICAyNjgwOiAwMiA4OCA2RSAwMyA4QyBEMCA2NiBDMSBFMCAxMCA4QiBDNCBCQiAyQSAwMCBF
OCAgLi5uLi4uZi4uLi4uLiouLgogICAgMjY5MDogQjAgMDcgODMgQzQgMDQgQzMgODMgRUMgMTAg
OEIgRUMgNjYgOEIgQzggNjYgMzMgIC4uLi4uLi4uLi4uZi4uZjMKICAgIDI2QTA6IEMwIDY2IDg5
IDQ2IDA0IEJCIDAwIDE3IEU4IDcxIDBCIDY2IEI4IDAwIDgwIDIwICAuZi5GLi4uLi5xLmYuLi4g
CiAgICAyNkIwOiA1MCA2NiA4OSA0NiAwQyA2NiAzMyBDMCA2NiA4OSA0NiAwOCA1NiBFOCA1RCAw
NyAgUGYuRi5mMy5mLkYuVi5dLgogICAgMjZDMDogNjYgOEIgNDQgMDQgNjYgNTAgNjYgQzEgRTgg
MTYgODggNDYgMDggNjYgNTggNjYgIGYuRC5mUGYuLi4uRi5mWGYKICAgIDI2RDA6IEMxIEUwIDBB
IDY2IDA1IDAwIDE3IDAwIDAwIDY2IDg5IDQ2IDAwIDVFIDhDIEQwICAuLi5mLi4uLi5mLkYuXi4u
CiAgICAyNkUwOiA2NiBDMSBFMCAxMCA4QiBDNCBCQiAzNSAwMCBFOCA1NiAwNyA4QiBFQyA2NiBC
OCAgZi4uLi4uLjUuLlYuLi5mLgogICAgMjZGMDogMDAgODAgMDAgMDAgNjYgMkIgQzggNjYgODkg
NDYgMDQgNjYgMDUgMDAgMDAgMjAgIC4uLi5mKy5mLkYuZi4uLiAKICAgIDI3MDA6IDQwIDY2IDg5
IDQ2IDBDIDY2IDMzIEMwIDY2IDg5IDQ2IDA4IDY2IDg5IDQ2IDAwICBAZi5GLmYzLmYuRi5mLkYu
CiAgICAyNzEwOiA4QyBEMCA2NiBDMSBFMCAxMCA4QiBDNCBCQiAzNSAwMCBFOCAyNCAwNyA4QiBF
QyAgLi5mLi4uLi4uNS4uJC4uLgogICAgMjcyMDogNjYgOEIgNDYgMEMgNjYgMjUgRkYgRkYgMUYg
MDAgNjYgMDEgNDYgMDQgNjYgM0IgIGYuRi5mJS4uLi5mLkYuZjsKICAgIDI3MzA6IEM4IDc2IDFG
IDY2IDJCIEM4IDY2IDhCIDQ2IDA0IDY2IDNEIDAwIEZGIDAxIDAwICAudi5mKy5mLkYuZj0uLi4u
CiAgICAyNzQwOiA3NiAwNiA2NiBCOCAwMCBGRiAwMSAwMCA2NiAzQiBDOCA3MyBBRSA2NiA4QiBD
MSAgdi5mLi4uLi5mOy5zLmYuLgogICAgMjc1MDogRUIgQTkgODMgQzQgMTAgQzMgODMgRUMgMDgg
OEIgRUMgODkgNEUgMDAgNjYgODkgIC4uLi4uLi4uLi4uLk4uZi4KICAgIDI3NjA6IDU2IDAyIDg5
IDVFIDA2IDhDIEQwIDY2IEMxIEUwIDEwIDhCIEM0IEJCIDJEIDAwICBWLi5eLi4uZi4uLi4uLi0u
CiAgICAyNzcwOiBFOCBDRiAwNiA4MyBDNCAwOCBDMyAzRCBDMCA3RiA3NiAwNCBCOCBDMCA3RiBD
MyAgLi4uLi4uLj0uLnYuLi4uLgogICAgMjc4MDogODMgQzAgM0YgMjQgQzAgQzMgNTEgRTggMzIg
MEIgNjYgMzMgRDIgQjkgMEEgMDAgIC4uPyQuLlEuMi5mMy4uLi4KICAgIDI3OTA6IEY3IEYxIDhC
IEM4IEU4IDI1IDBCIDAzIEMxIDY2IDI1IEZGIEZGIDAwIDAwIDU5ICAuLi4uLiUuLi5mJS4uLi5Z
CiAgICAyN0EwOiAzRCAxMCAyNyA3MyAwMyBCOCAxMCAyNyBDMyAzMiBEMiBDMyA4MCBGRCAwMiA3
NSAgPS4ncy4uLicuMi4uLi4udQogICAgMjdCMDogMTkgRTggNUMgRUMgNjYgQkIgMDAgMDggMDAg
MDAgRTggODggMDAgNjYgMzMgRDIgIC4uXC5mLi4uLi4uLi5mMy4KICAgIDI3QzA6IDY2IEJCIDAx
IDA4IDAwIDAwIEU4IDdDIDAwIEMzIDgwIEZEIDAzIDc1IDEwIDY2ICBmLi4uLi4ufC4uLi4udS5m
CiAgICAyN0QwOiAzMyBDMCA4QSBDMSA2NiAzMyBEMiA2NiBCQiBGRiAwMCAwMCAwMCBFQiAzMCA1
MSAgMy4uLmYzLmYuLi4uLi4wUQogICAgMjdFMDogMzMgRDIgRTggMTkgRUIgOEEgRDUgNjYgQzEg
RTIgMTAgRTggNTIgRUIgOEEgRjIgIDMuLi4uLi5mLi4uLlIuLi4KICAgIDI3RjA6IDhBIEQxIDY2
IDhCIEMyIEU4IDkzIEVCIDgwIEZCIDA0IDc2IDA2IDY2IDBEIDAwICAuLmYuLi4uLi4uLnYuZi4u
CiAgICAyODAwOiAwMCAwMCAwOCBFOCBDNyBFQiBFOCAxNyBFQiA2NiAzMyBEQiA4QSBEOSA1OSA4
MyAgLi4uLi4uLi4uZjMuLi5ZLgogICAgMjgxMDogRUMgMTQgOEIgRUMgNjYgODkgNDYgMDQgNjYg
ODkgNUUgMDggNjYgOEIgQzIgNjYgIC4uLi5mLkYuZi5eLmYuLmYKICAgIDI4MjA6IDMzIEQyIDY2
IEJCIDY0IDAwIDAwIDAwIDY2IEY3IEUzIDY2IDg5IDQ2IDAwIEJCICAzLmYuZC4uLmYuLmYuRi4u
CiAgICAyODMwOiAwQyAwMCA4QyBEMCA2NiBDMSBFMCAxMCA4QiBDNCBFOCAwNSAwNiA4QiBFQyBC
MyAgLi4uLmYuLi4uLi4uLi4uLgogICAgMjg0MDogMDEgODMgQzQgMTQgQzMgODMgRUMgMTAgOEIg
RUMgNjYgODkgNTYgMDAgNjYgODkgIC4uLi4uLi4uLi5mLlYuZi4KICAgIDI4NTA6IDVFIDA0IEJC
IDJFIDAwIDhDIEQwIDY2IEMxIEUwIDEwIDhCIEM0IEU4IEUyIDA1ICBeLi4uLi4uZi4uLi4uLi4u
CiAgICAyODYwOiBCMyAwMSA4MyBDNCAxMCBDMyBDMyA1MyA1MSA2NiA1MCBCOSBBMCA4QyA4MCBG
QiAgLi4uLi4uLlNRZlAuLi4uLgogICAgMjg3MDogMDAgNzUgMUMgQjkgOTAgN0UgRTggNjAgMDUg
ODMgRTMgMDMgODAgRkIgMDMgNzUgIC51Li4ufi5gLi4uLi4uLnUKICAgIDI4ODA6IDBFIEU4IDM2
IDA2IDY2IDNEIDUwIEMzIDAwIDAwIDcyIDAzIEI5IEYwIEQyIDY2ICAuLjYuZj1QLi4uci4uLi5m
CiAgICAyODkwOiAzMyBEMiA4QiBEMSA2NiA1OCA1OSA1QiBDMyA2NiA1MiBCMyAxMCA4MCBGQSAx
NCAgMy4uLmZYWVsuZlIuLi4uLgogICAgMjhBMDogNzQgMjUgQjMgMEYgODAgRkEgMTUgNzQgMUUg
QjMgMDAgNjYgRjcgQzIgMDAgMDAgIHQlLi4uLi50Li4uZi4uLi4KICAgIDI4QjA6IEZGIEZGIDc1
IDEzIDgwIEZEIDEzIDc0IDBFIDgwIEZEIDE0IDc0IDA5IEIzIDAxICAuLnUuLi4udC4uLi50Li4u
CiAgICAyOEMwOiA4MCBGRCAwRSA3NCAwMiBCMyAwMiA2NiA1QSBDMyBCNSAxMSA4MCBGQSAyMyA3
NCAgLi4udC4uLmZaLi4uLi4jdAogICAgMjhEMDogMDcgODAgRkEgMjIgNzQgMDIgQjUgMDAgQzMg
QjUgMDIgODAgRkEgMjMgNzQgMDcgIC4uLiJ0Li4uLi4uLi4jdC4KICAgIDI4RTA6IDgwIEZBIDIy
IDc0IDAyIEIzIDAxIEMzIEIxIDAxIDgwIEZEIDAwIDc1IDA2IEM3ICAuLiJ0Li4uLi4uLi4udS4u
CiAgICAyOEYwOiA0NiAwMCAwQiAwMSBDMyA1MCAzMyBDMCBFOCA4OCAwMSAwNCAxNCA4OSA0NiAw
MCAgRi4uLi5QMy4uLi4uLi5GLgogICAgMjkwMDogNTggQzMgQzMgQzMgOEIgREEgQjcgMjIgODAg
RkUgMjEgNzQgMDIgQjcgMjEgQzMgIFguLi4uLi4iLi4hdC4uIS4KICAgIDI5MTA6IDBDIDAxIEMz
IEU4IEE2IDA5IDY2IEMxIEU4IDEwIDBCIEMwIDc0IDFBIDUzIDgzICAuLi4uLi5mLi4uLi50LlMu
CiAgICAyOTIwOiBDMyAwNiBFOCA5NyAwOSA1QiAzRCBFMCAwMSA3MiAwRCA1MyA4MyBDMyAxOCBF
OCAgLi4uLi5bPS4uci5TLi4uLgogICAgMjkzMDogOEEgMDkgNUIgQTkgMTAgMDAgNzQgMDMgMzIg
QzAgQzMgMEMgMDEgQzMgQjUgMEMgIC4uWy4uLnQuMi4uLi4uLi4KICAgIDI5NDA6IEMzIDMyIEVE
IEI1IDAyIEMzIDU3IEU4IDA0IDAxIDhCIDREIDA2IDVGIEMzIDgwICAuMi4uLi5XLi4uLk0uXy4u
CiAgICAyOTUwOiBGQSAyMiA3NSAwNSBDNyA0NiAwMCA3OCA2OSBDMyBDMyBFOCAwNyAwMSA4MCBG
RCAgLiJ1Li5GLnhpLi4uLi4uLgogICAgMjk2MDogRkYgNzQgMzUgODMgRUMgMEMgOEIgRUMgODgg
NEUgMDEgODggNkUgMDAgODAgRjkgIC50NS4uLi4uLk4uLm4uLi4KICAgIDI5NzA6IDBGIDc1IDA1
IEU4IDI0IDAwIEVCIDBGIDgwIEY5IDEwIDc1IDBBIDhEIDlDIDQ4ICAudS4uJC4uLi4uLnUuLi5I
CiAgICAyOTgwOiAwMyBFOCAzOCAwOSA4OCA0NiAwMiA4QyBEMCA2NiBDMSBFMCAxMCA4QiBDNCBC
QiAgLi44Li5GLi4uZi4uLi4uLgogICAgMjk5MDogMDQgMDAgRTggQUQgMDQgODMgQzQgMEMgQzMg
QzMgNjYgNTMgRTggQ0MgRTkgNjYgIC4uLi4uLi4uLi5mUy4uLmYKICAgIDI5QTA6IDhCIEMyIDY2
IDMzIEQyIDY2IEJCIDhDIDBBIDAwIDAwIDY2IEY3IEYzIDY2IDVCICAuLmYzLmYuLi4uLmYuLmZb
CiAgICAyOUIwOiA4QSBFOCA4OCA2RSAwOSA4RCA5QyA0MCAwMyBFOCAwMCAwOSA4OCA0NiAwMiA4
OCAgLi4ubi4uLkAuLi4uLkYuLgogICAgMjlDMDogNjYgMDMgNjYgQzEgRTggMTAgODggNDYgMDgg
RTggOEUgRTkgNjYgODkgNTYgMDQgIGYuZi4uLi5GLi4uLmYuVi4KICAgIDI5RDA6IEMzIDgwIEY5
IDA0IDc0IDAzIEU4IDY3IEU5IDgzIEVDIDEwIDhCIEVDIDgwIEY5ICAuLi4udC4uZy4uLi4uLi4u
CiAgICAyOUUwOiAwNCA3NSAwQSA4OCA0RSAwMSAzMiBDMCA4OCA0NiAwMCBFQiA0QyBFOCA5MyAw
MCAgLnUuLk4uMi4uRi4uTC4uLgogICAgMjlGMDogODggNDYgMDAgODggNEUgMDEgRTggQzcgRTkg
ODggNTYgMEEgODAgRjkgMDEgNzQgIC5GLi5OLi4uLi5WLi4uLnQKICAgIDJBMDA6IDExIDgwIEY5
IDBCIDc1IDMzIDhEIDlDIDVDIDAzIEU4IEFGIDA4IDg4IDQ2IDAyICAuLi4udTMuLlwuLi4uLkYu
CiAgICAyQTEwOiBFQiAyNyBFOCA2NyBFOSA4OCA2RSAwOCBFOCAzRiBFOSA2NiA4OSA1NiAwNCBF
OCAgLicuZy4ubi4uPy5mLlYuLgogICAgMkEyMDogNjkgRTkgODggNUUgMDMgRTggRDYgRTggODgg
NkUgMDIgNTEgRTggMzYgMDAgOEEgIGkuLl4uLi4uLm4uUS42Li4KICAgIDJBMzA6IENEIEIwIDAx
IEQyIEUwIDU5IDg4IDQ2IDA5IDhDIEQwIDY2IEMxIEUwIDEwIDhCICAuLi4uLlkuRi4uLmYuLi4u
CiAgICAyQTQwOiBDNCBCQiA0QyAwMCBFOCBGQiAwMyA4MyBDNCAxMCBDMyAzMiBFRCBDMyBFOCBE
NSAgLi5MLi4uLi4uLi4yLi4uLgogICAgMkE1MDogMDMgMDMgN0QgMDQgODMgM0QgRkYgNzQgMEIg
M0IgMTUgNzQgMDUgODMgQzcgMEEgIC4ufS4uPS50LjsudC4uLi4KICAgIDJBNjA6IEVCIEYyIDBC
IEZGIEMzIDhEIDlDIDNDIDAzIEU4IDUwIDA4IDMyIEVEIDNDIDAzICAuLi4uLi4uPC4uUC4yLjwu
CiAgICAyQTcwOiA3NCAwQyAzQyAwOSA3MiAwOSAzQyAwRSA3NyAwNSAyQyAwOCA4QSBFOCBDMyBC
NSAgdC48LnIuPC53LiwuLi4uLgogICAgMkE4MDogRkYgQzMgQzMgNTIgMzIgQzAgODAgRUUgMjEg
ODAgRkEgMUUgNzQgMTAgQjAgMDIgIC4uLlIyLi4uIS4uLnQuLi4KICAgIDJBOTA6IDgwIEZBIDIw
IDc0IDA5IEIwIDA0IDgwIEZBIDIxIDc0IDAyIEIwIDA2IDAyIEM2ICAuLiB0Li4uLi4hdC4uLi4u
CiAgICAyQUEwOiA1QSBDMyA4MyBFQyAwOCA4QiBFQyA4OSA3RSAwMCA4OSA1RSAwMiA4OSA1NiAw
NCAgWi4uLi4uLi5+Li5eLi5WLgogICAgMkFCMDogODkgNEUgMDYgOEMgRDAgNjYgQzEgRTAgMTAg
OEIgQzQgQkIgMzYgMDAgRTggODEgIC5OLi4uZi4uLi4uLjYuLi4KICAgIDJBQzA6IDAzIDhCIEVD
IDhCIDVFIDAyIDhBIDdFIDAxIDgzIEM0IDA4IEMzIDU2IDMzIEY2ICAuLi4uXi4ufi4uLi4uVjMu
CiAgICAyQUQwOiA2NiBGNyBDMiAwMCAwMCA4MCAwMCA3NSAwQSA1MCAzMyBDMCA4QSBDNiA4QiBG
MCAgZi4uLi4uLnUuUDMuLi4uLgogICAgMkFFMDogMzIgRjYgNTggNTMgQkIgMDQgM0UgRTggMzIg
MDcgNjYgOEIgQzIgQkIgMDAgM0UgIDIuWFMuLj4uMi5mLi4uLj4KICAgIDJBRjA6IEU4IDI5IDA3
IDVCIDY2IEY3IEMyIDAwIDAwIDEwIDAwIDc1IDAyIDMzIERCIDhCICAuKS5bZi4uLi4uLnUuMy4u
CiAgICAyQjAwOiBEMyA2NiBDMSBFMiAxMCBCQSAwMCAzRSA4MyBFQyAwOCA4QiBFQyA2NiA4OSA1
NiAgLmYuLi4uLj4uLi4uLmYuVgogICAgMkIxMDogMDAgODggNEUgMDQgOEEgQzUgRkUgQzggODgg
NDYgMDcgQzYgNDYgMDUgMDAgQzYgIC4uTi4uLi4uLkYuLkYuLi4KICAgIDJCMjA6IDQ2IDA2IDAw
IDhDIEQwIDY2IEMxIEUwIDEwIDhCIEM0IEJCIDRFIDAwIEU4IDExICBGLi4uLmYuLi4uLi5OLi4u
CiAgICAyQjMwOiAwMyA4QiBFQyA4QSA1RSAwNSA4QSA3RSAwNiA4MyBDNCAwOCAwQSBEQiA3NCAz
MiAgLi4uLl4uLn4uLi4uLi50MgogICAgMkI0MDogNTEgQjkgOTAgMDEgODAgRkIgMjAgNzQgMDUg
ODAgRkIgODAgNzUgMTMgQjkgMEEgIFEuLi4uLiB0Li4uLnUuLi4KICAgIDJCNTA6IDAwIDhCIEM2
IDBBIEMwIDc0IDBBIEI5IDkwIDAxIDNDIDAxIDc0IDAzIEI5IEU4ICAuLi4uLnQuLi4uPC50Li4u
CiAgICAyQjYwOiAwMyBFOCBEQiAwMyA1OSA4QiBDNiBGRSBDNCA4QiBGMCA4MCBGQyAwNiA3NiA5
OCAgLi4uLlkuLi4uLi4uLi52LgogICAgMkI3MDogMEEgREIgNUUgQzMgOEQgNUMgMDQgRTggNDIg
MDcgOEIgRDAgQjUgMDIgRTggMTQgIC4uXi4uXC4uQi4uLi4uLi4KICAgIDJCODA6IDAwIDc0IDEx
IEI1IDAxIDgwIEZBIDEzIDc1IDBBIEU4IDYxIDAwIDgwIEZBIDEzICAudC4uLi4uLnUuLmEuLi4u
CiAgICAyQjkwOiA3NSAwMiBCNSAwMiBDMyA4MCBGQSAxNCBDMyBFOCBGOSBGRiA3NCAwMyA4MCBG
QSAgdS4uLi4uLi4uLi4udC4uLgogICAgMkJBMDogMEUgQzMgODAgRkEgMDUgQzMgODAgRkEgMDIg
NzQgMDMgODAgRkEgMDQgQzMgODAgIC4uLi4uLi4uLnQuLi4uLi4KICAgIDJCQjA6IEZBIDAxIDc0
IDAzIDgwIEZBIDAyIEMzIDgwIEZBIDAyIDc1IDAzIEIyIDAxIEMzICAuLnQuLi4uLi4uLnUuLi4u
CiAgICAyQkMwOiA4MCBGQSAwNCA3NSAwMyBCMiAwMyBDMyBDMyBCNSAwOCBFOCBEOCBGRiA3NCAw
MiAgLi4udS4uLi4uLi4uLi50LgogICAgMkJEMDogQjUgMDQgQzMgOEQgNUMgMDkgRTggRTMgMDYg
OEEgQzggMEEgQzkgNzUgMDMgMzIgIC4uLi5cLi4uLi4uLi51LjIKICAgIDJCRTA6IEMwIEMzIEI1
IDAyIEU4IEREIDAyIDhBIEM1IDI0IDAyIEQwIEU4IEMzIDhEIDVDICAuLi4uLi4uLi4kLi4uLi5c
CiAgICAyQkYwOiAwOCBFOCBDOCAwNiA4QSBEMCBCNiAwMSA4MyBFQyAwOCA4QiBFQyA4OSA1NiAw
MiAgLi4uLi4uLi4uLi4uLi5WLgogICAgMkMwMDogOEMgRDAgNjYgQzEgRTAgMTAgOEIgQzQgQkIg
NEYgMDAgRTggMzQgMDIgOEIgRUMgIC4uZi4uLi4uLk8uLjQuLi4KICAgIDJDMTA6IDhBIDU2IDA0
IDgzIEM0IDA4IEMzIDUzIDgxIEMzIEM5IDA1IEU4IDZCIDA2IDVCICAuVi4uLi4uUy4uLi4uay5b
CiAgICAyQzIwOiBDMyA1MyA4MSBDMyBDOSAwNSBFOCBCQyAwNSA1QiBDMyA2NiA1MyA4MSBDMyAw
MCAgLlMuLi4uLi4uWy5mUy4uLgogICAgMkMzMDogMTAgRTggNTYgMDYgNjYgNUIgQzMgNTcgRTgg
QUIgMDEgOEEgNDUgMkQgQjQgRkYgIC4uVi5mWy5XLi4uLkUtLi4KICAgIDJDNDA6IEY3IDQ1IDUw
IDIwIDAwIDVGIEMzIDUwIDU2IDBGIEJDIEQ4IDhEIDM2IEVFIDJCICAuRVAgLl8uUFYuLi4uNi4r
CiAgICAyQzUwOiBFOCA4QyAwMyA1RSA1OCBDMyAwMCAyMCAwMCAyNCAwMCAwMCAwMCAyOCAwMCAy
QyAgLi4uXlguLiAuJC4uLiguLAogICAgMkM2MDogMDAgMzAgMDAgMzQgMDAgMzggMDAgMDAgMDAg
M0MgMDAgNDAgMDAgNDQgNTMgNTYgIC4wLjQuOC4uLjwuQC5EU1YKICAgIDJDNzA6IDUxIDhCIEY3
IEIzIDAwIEU4IDMwIDAwIDBCIEY2IDc0IDE2IDQ5IDBCIEM5IDc1ICBRLi4uLi4wLi4udC5JLi51
CiAgICAyQzgwOiAwNCAzMyBGRiBFQiAwRCA4QiBERiAwMyA3RCAwMiAzQiBGMyA3NCAwNCBFMiBG
NSAgLjMuLi4uLi59LjsudC4uLgogICAgMkM5MDogMzMgRkYgMEIgRkYgNTkgNUUgNUIgQzMgMEUg
MDAgMDAgMDAgMEEgMDAgMDYgMDAgIDMuLi5ZXlsuLi4uLi4uLi4KICAgIDJDQTA6IDA4IDAwIDBD
IDAwIDBFIDAwIDEwIDAwIDU2IDhEIDM2IDMwIDJDIEU4IDJGIDAzICAuLi4uLi4uLlYuNjAsLi8u
CiAgICAyQ0IwOiBFOCAzQyAwMSAwMyBERSA4QiAzRiAwQiBGRiA3NCAwQiAwMyBGRSAzMyBDOSA4
QSAgLjwuLi4uPy4udC4uLjMuLgogICAgMkNDMDogMEQgODMgQzcgMDQgMEIgRkYgNUUgQzMgNTEg
NTYgNTMgQzEgRUIgMEMgRTggRDcgIC4uLi4uLl4uUVZTLi4uLi4KICAgIDJDRDA6IEZGIDVCIDc1
IDA0IDMzIEZGIEVCIDBCIDNCIDFEIDc0IDA3IDgzIEM3IDA4IEUyICAuW3UuMy4uLjsudC4uLi4u
CiAgICAyQ0UwOiBGNyAzMyBGRiAwQiBGRiA1RSA1OSBDMyA1NyBFOCBEQyBGRiA3NSAwNCAzMyBE
QiAgLjMuLi5eWS5XLi4udS4zLgogICAgMkNGMDogNUYgQzMgRTggMDIgMDAgNUYgQzMgNTIgNTEg
OEIgNUQgMDQgMEIgREIgNzQgMUIgIF8uLi4uXy5SUS5dLi4udC4KICAgIDJEMDA6IDU2IEU4IEVC
IDAwIDAzIERFIDVFIDMzIEM5IDhBIDRGIDAxIDgwIDNGIEZGIDc0ICBWLi4uLi5eMy4uTy4uPy50
CiAgICAyRDEwOiAwOCAzQSAwNyA3NCAwNiAwMyBEOSBFQiBGMCAzMyBEQiAwQiBEQiA1OSA1QSBD
MyAgLjoudC4uLi4uMy4uLllaLgogICAgMkQyMDogNTAgOEQgMUMgRTggRjYgMDQgOEIgRDggRTgg
NzIgMDAgMjMgQzMgNzQgNkMgMzMgIFAuLi4uLi4uLnIuIy50bDMKICAgIDJEMzA6IEZGIEU4IDNB
IEZGIDBCIEZGIDc0IDYzIDM5IDA1IDc1IEY1IDY2IDMzIEMwIDhCICAuLjouLi50YzkudS5mMy4u
CiAgICAyRDQwOiA0NSAwOCA4QiA0RCAwMiA4MyBGOSAwQSA3NCAxOCA4QiA0RCAwQSA4QiBEMSA4
MSAgRS4uTS4uLi50Li5NLi4uLgogICAgMkQ1MDogRTIgMDAgNzAgODAgRkUgMjAgNzUgMEEgNjYg
QzEgQzggMTAgOEIgQzEgNjYgQzEgIC4ucC4uIHUuZi4uLi4uZi4KICAgIDJENjA6IEM4IDEwIDhE
IDVDIDBDIEU4IEI0IDA0IDY2IDMzIEMwIDhCIDQ1IDA0IDhEIDVDICAuLi5cLi4uLmYzLi5FLi5c
CiAgICAyRDcwOiAwNCBFOCBBOCAwNCAzMyBDOSA4QiBEOCA1MCBCMCAwMSBFOCA2QSBGRiA1OCA3
NCAgLi4uLjMuLi5QLi4uai5YdAogICAgMkQ4MDogMEYgOEEgNEYgMDIgOEIgRDggQjAgMDIgRTgg
NUQgRkYgNzQgMDMgOEEgNkYgMDIgIC4uTy4uLi4uLl0udC4uby4KICAgIDJEOTA6IDhEIDVDIDA4
IDY2IDMzIEMwIDhCIEMxIEU4IDgxIDA0IDU4IEMzIDU2IEU4IDRFICAuXC5mMy4uLi4uLlguVi5O
CiAgICAyREEwOiAwMCA4QiA0NCAwNCA1RSBDMyA1NiBFOCA0NSAwMCA4OSA0NCAwNCA1RSBDMyBD
MyAgLi5ELl4uVi5FLi5ELl4uLgogICAgMkRCMDogRTggMTUgRkYgNzQgMjMgNTYgOEIgNUQgMDIg
RTggMzMgMDAgMDMgREUgNUUgMEIgIC4uLnQjVi5dLi4zLi4uXi4KICAgIDJEQzA6IEMwIDc0IDA3
IEM2IDQ3IDAzIDAxIDg5IDQ3IDA0IDY2IEMxIEU4IDEwIDBCIEMwICAudC4uRy4uLkcuZi4uLi4u
CiAgICAyREQwOiA3NCAwNiBDNiAwNyAwMSA4OSA0NyAwMSBDMyA4QiBEQSBCMCAxNCBFOCAwOCBG
RiAgdC4uLi4uRy4uLi4uLi4uLgogICAgMkRFMDogNzQgMDMgOEIgNUYgMDIgQzMgQkYgNDQgMDIg
OEIgM0QgOEIgN0QgMEMgQzMgQkUgIHQuLl8uLi5ELi49Ln0uLi4KICAgIDJERjA6IDQ0IDAyIDhC
IDM0IDhCIDc0IDMwIEMzIDFFIDBFIDFGIEJGIDQ0IDAyIDhCIDNEICBELi40LnQwLi4uLi5ELi49
CiAgICAyRTAwOiA4QiA3RCAwRSA4MyBDNyAwNCAxRiBDMyBCRSA0NCAwMiA4QiAzNCA4QiA3NCAx
MCAgLn0uLi4uLi4uRC4uNC50LgogICAgMkUxMDogQzMgQkYgNDQgMDIgOEIgM0QgOEIgN0QgMjYg
ODMgQzcgMDQgQzMgQkUgNDQgMDIgIC4uRC4uPS59Ji4uLi4uRC4KICAgIDJFMjA6IDhCIDM0IDhC
IDc0IDFBIEMzIEJGIDQ0IDAyIDhCIDNEIDhCIDdEIDNBIEMzIEJGICAuNC50Li4uRC4uPS59Oi4u
CiAgICAyRTMwOiA0NCAwMiA4QiAzRCA4QiA3RCAwQSA4MyBDNyAwNCBCOSAwOCAwMCBDMyBFOCAw
MSAgRC4uPS59Li4uLi4uLi4uLgogICAgMkU0MDogMDAgQ0IgODMgRUMgMDYgOEIgRUMgODkgNDYg
MDAgNjYgMzMgQzAgQzYgNDYgMDQgIC4uLi4uLi4uRi5mMy4uRi4KICAgIDJFNTA6IDAwIDg5IDQ2
IDAyIDA2IDUyIDhBIEQzIDhCIEM1IEU4IDhCIDE2IDVBIDA3IDgzICAuLkYuLlIuLi4uLi4uWi4u
CiAgICAyRTYwOiBDNCAwNiBDMyBFOCA4MCBGRiBGNyA0NSA1MCAwMSAwMCBDMyBFOCA3NyBGRiA4
MyAgLi4uLi4uLkVQLi4uLncuLgogICAgMkU3MDogNEQgNTAgMDEgQzMgRTggNkYgRkYgODggNDUg
NTggQzMgNjYgNTMgODMgRUMgMjggIE1QLi4uby4uRVguZlMuLigKICAgIDJFODA6IDhCIEVDIDY2
IDg5IDVFIDAwIDY2IDg5IDRFIDA0IDhDIEQwIDY2IEMxIEUwIDEwICAuLmYuXi5mLk4uLi5mLi4u
CiAgICAyRTkwOiA4QiBDNCBCQiAwMCAwMCBFOCBBQSBGRiA4MyBDNCAyOCA2NiA1QiBFOCA0OCAw
MSAgLi4uLi4uLi4uLihmWy5ILgogICAgMkVBMDogQkIgMDQgMDAgRTggNzEgRkQgNjYgQzEgRTgg
MTAgRTggQzcgRkYgQzMgRTggMzUgIC4uLi5xLmYuLi4uLi4uLjUKICAgIDJFQjA6IEZGIDY2IDhC
IDVEIDA4IDY2IDhCIDREIDBDIEMzIDU3IEU4IDI4IEZGIDY2IDhCICAuZi5dLmYuTS4uVy4oLmYu
CiAgICAyRUMwOiA0NSAyOCA1RiBDMyA4MyBFQyAwNCA4QiBFQyA4OSA0RSAwMCA4QyBEMCA2NiBD
MSAgRShfLi4uLi4uLk4uLi5mLgogICAgMkVEMDogRTAgMTAgOEIgQzQgQkIgMzggMDAgRTggNjgg
RkYgOEIgRUMgOEEgNkUgMDIgODMgIC4uLi4uOC4uaC4uLi5uLi4KICAgIDJFRTA6IEM0IDA0IEMz
IEMzIEIwIDA2IEMzIEIwIDAyIEMzIEIwIDA2IEMzIEIwIDA4IEMzICAuLi4uLi4uLi4uLi4uLi4u
CiAgICAyRUYwOiBFOCBGMyBGRSA4QiA0NSA1NiAwQiBDMCBDMyA1MyA2NiA1MCA2NiAzMyBDMCBF
OCAgLi4uLkVWLi4uU2ZQZjMuLgogICAgMkYwMDogMUEgMDMgODMgQzMgMDQgRTIgRjggNjYgNTgg
NUIgQzMgMzIgQzAgQzMgRkMgRTggIC4uLi4uLi5mWFsuMi4uLi4KICAgIDJGMTA6IEFBIDAzIDY2
IEMxIENCIDEwIEU4IDAzIDAzIDY2IEMxIENCIDEwIDY2IDgxIEMzICAuLmYuLi4uLi5mLi4uZi4u
CiAgICAyRjIwOiAwNCAwMCAwNCAwMCBFMiBFOSBDMyBGQyA2NiBBRCBFOCBFRiAwMiA4MyBDMyAw
NCAgLi4uLi4uLi5mLi4uLi4uLgogICAgMkYzMDogRTIgRjYgQzMgRkMgRTggODUgMDMgNjYgQUIg
ODMgQzMgMDQgRTIgRjYgQzMgNjYgIC4uLi4uLi5mLi4uLi4uLmYKICAgIDJGNDA6IDUwIEI4IDE5
IDAwIEU4IDEwIDAwIDY2IDU4IEMzIDY2IDUwIEI4IEQ0IDMwIEQxICBQLi4uLi4uZlguZlAuLjAu
CiAgICAyRjUwOiBFMSBFOCAwMyAwMCA2NiA1OCBDMyA1MiBGNyBFMSA4QiBDQSBFOCA2QiAwMSA2
NiAgLi4uLmZYLlIuLi4uLmsuZgogICAgMkY2MDogNTMgOEIgRDkgNjYgQzEgRTMgMTAgOEIgRDgg
NjYgQjggMDQgQjEgMDMgMDAgQjIgIFMuLmYuLi4uLmYuLi4uLi4KICAgIDJGNzA6IDAwIDY2IEVG
IEIyIDA0IDY2IDMzIEMwIDY2IEVGIDY2IEI4IDA4IEIxIDAzIDAwICAuZi4uLmYzLmYuZi4uLi4u
CiAgICAyRjgwOiBCMiAwMCA2NiBFRiBCMiAwNCA2NiBFRCAzMyBDOSA2NiAwMyBEOCA3MyAwQSA2
NiAgLi5mLi4uZi4zLmYuLnMuZgogICAgMkY5MDogRUQgNjYgQTkgMDAgMDAgMDAgODAgNzUgRjYg
NjYgRUQgNjYgM0IgQzMgNzMgMEMgIC5mLi4uLi51LmYuZjsucy4KICAgIDJGQTA6IDY2IEMxIEU4
IDEwIDNCIEMxIDcyIDA0IDhCIEM4IEVCIEVEIDY2IDVCIDVBIEMzICBmLi4uOy5yLi4uLi5mW1ou
CiAgICAyRkIwOiBCQiA0MiBFQyBFOCBENCAwMiA2NiAzMyBEMiA2NiBCQiAxOSAwMCAwMCAwMCA2
NiAgLkIuLi4uZjMuZi4uLi4uZgogICAgMkZDMDogRjcgRjMgQzMgNjYgNTAgNTMgQkIgMDcgMDAg
RTggNEIgRkMgMjUgMDAgMDIgMzUgIC4uLmZQUy4uLi5LLiUuLjUKICAgIDJGRDA6IDAwIDAyIDBC
IEMwIDVCIDY2IDU4IEMzIEJCIDBBIDE1IEU4IEFDIDAyIEMzIDMyICAuLi4uW2ZYLi4uLi4uLi4y
CiAgICAyRkUwOiBGRiBEMSBFMyAwMyBGMyA4QiAxQyBDMyBFOCBFRCBGRiA2NiBDMSBFMCAwQSA2
NiAgLi4uLi4uLi4uLi5mLi4uZgogICAgMkZGMDogODMgRTggMjAgRTggMjcgRkUgNjYgODkgNDQg
MDQgQzcgNDQgMDggMjAgMDAgQzMgIC4uIC4nLmYuRC4uRC4gLi4KICAgIDMwMDA6IDU2IDFFIDBF
IDFGIEU4IDE2IEZFIDY2IDhCIDQ0IDA0IDY2IEMxIEUwIDBBIDFGICBWLi4uLi4uZi5ELmYuLi4u
CiAgICAzMDEwOiA1RSBDMyBDMyA1NyBFOCBDRiBGRCA4QiA0NSA1MiA1RiBDMyA1NiBFOCBFOCBG
RCAgXi4uVy4uLi5FUl8uVi4uLgogICAgMzAyMDogOEIgNEMgMjIgOEEgNDQgMjkgNUUgQzMgQkUg
NDQgMDIgOEIgMzQgOEIgNzQgMUUgIC5MIi5EKV4uLkQuLjQudC4KICAgIDMwMzA6IDgzIEM2IDA0
IEI5IDI5IDAwIEMzIDMzIEZGIEMzIDU2IEU4IENBIEZEIDhBIDZDICAuLi4uKS4uMy4uVi4uLi5s
CiAgICAzMDQwOiAyOCA4MCBFNSA3MCBDMCBFRCAwNCA1RSBDMyA1NiBFOCBCQiBGRCA1MyA4MSBD
MyAgKC4ucC4uLl4uVi4uLlMuLgogICAgMzA1MDogMDkgMDEgRTggNjcgMDIgOEEgRTggNUIgNTMg
ODEgQzMgMDAgMDEgRTggNUMgMDIgIC4uLmcuLi5bUy4uLi4uXC4KICAgIDMwNjA6IDVCIDhBIEM1
IDY2IDg5IDQ0IDNDIDVFIEMzIDU2IEU4IDlCIEZEIDY2IDhCIDQ0ICBbLi5mLkQ8Xi5WLi4uZi5E
CiAgICAzMDcwOiAzQyA1MyA4MSBDMyAwMCAwMSBFOCBBMyAwMSA1QiA1MyA4MSBDMyAwOCAwMSBC
MSAgPFMuLi4uLi4uW1MuLi4uLgogICAgMzA4MDogMDEgOEEgRTggRTggREEgMDEgNUIgNUUgQzMg
NTYgRTggN0IgRkQgOEIgRkUgODMgIC4uLi4uLlteLlYuey4uLi4KICAgIDMwOTA6IEM3IDA0IDVF
IEMzIDU2IEU4IDcwIEZEIDhBIDQ0IDI4IDgwIEZEIDAwIDc0IDBFICAuLl4uVi5wLi5EKC4uLnQu
CiAgICAzMEEwOiAyNCA4RiBDMCBFNSAwNCAwQSBDNSA4MCBGRCAyMCA3NSAwMiAwQyAwMiAyNCBG
RSAgJC4uLi4uLi4uIHUuLi4kLgogICAgMzBCMDogODEgN0MgMDQgMzQgMjEgNzYgMDIgMEMgMDEg
ODggNDQgMjggRTggRDYgRkEgNzUgIC58LjQhdi4uLi5EKC4uLnUKICAgIDMwQzA6IDA0IDgwIDRD
IDMwIDAxIDVFIEMzIDMyIEMwIEMzIDY2IDUwIDhDIEM4IDNEIDAwICAuLkwwLl4uMi4uZlAuLj0u
CiAgICAzMEQwOiBDMCA3NSAxMCBCQSBDMyAwMyBFQyA4QSBGMCAwQSBGNiA3NCAwNiBCMiA0QyA2
NiAgLnUuLi4uLi4uLi50Li5MZgogICAgMzBFMDogRUQgRUIgMTcgNTMgMkUgOEIgMUUgMzggMDIg
QjIgMjAgRTggREQgMDAgQTggMDEgIC4uLlMuLi44Li4gLi4uLi4KICAgIDMwRjA6IDc1IDA1IEIy
IDE0IEU4IEQ0IDAwIDhBIEY0IDVCIDMyIEQyIDY2IDU4IEMzIDJFICB1Li4uLi4uLi5bMi5mWC4u
CiAgICAzMTAwOiA4QiAxRSAzOCAwMiBDMyAwQiBDOSA3NSAxQSA0QiA3NCAxNiA0MyAzQiBEQSA3
NyAgLi44Li4uLnUuS3QuQzsudwogICAgMzExMDogMDkgOEIgQzggOEIgQzIgMkIgRDIgRjcgRjMg
OTEgRjcgRjMgOEIgREEgOEIgRDEgIC4uLi4uKy4uLi4uLi4uLi4KICAgIDMxMjA6IDJCIEM5IEMz
IDNCIENBIDcyIDFBIDc1IDEwIDNCIEQ4IDc3IDBDIDJCIEMzIDhCICArLi47LnIudS47LncuKy4u
CiAgICAzMTMwOiBEOCAyQiBDOSAyQiBEMiBCOCAwMSAwMCBDMyAyQiBDOSAyQiBEQiA5MyA4NyBD
QSAgLisuKy4uLi4uKy4rLi4uLgogICAgMzE0MDogQzMgNTUgNTYgMkIgRjYgOEIgRUUgMDMgREIg
MTMgQzkgNzIgMTEgNDUgM0IgQ0EgIC5VVisuLi4uLi4uci5FOy4KICAgIDMxNTA6IDcyIEY1IDc3
IDA0IDNCIEQ4IDc2IEVGIEY4IDEzIEY2IDREIDc4IDIwIEQxIEQ5ICByLncuOy52Li4uLk14IC4u
CiAgICAzMTYwOiBEMSBEQiAyQiBDMyAxQiBEMSBGNSA3MiBGMCAwMyBGNiA0RCA3OCAwQyBEMSBF
OSAgLi4rLi4uLnIuLi5NeC4uLgogICAgMzE3MDogRDEgREIgMDMgQzMgMTMgRDEgNzMgRjEgRUIg
REYgMDMgQzMgMTMgRDEgOEIgRDggIC4uLi4uLnMuLi4uLi4uLi4KICAgIDMxODA6IDhCIENBIDhC
IEM2IDMzIEQyIDVFIDVEIEMzIDkzIDUwIDkyIDBCIEMwIDc0IDAyICAuLi4uMy5eXS4uUC4uLnQu
CiAgICAzMTkwOiBGNyBFMiA5MSAwQiBDMCA3NCAwNCBGNyBFMyAwMyBDOCA1OCBGNyBFMyAwMyBE
MSAgLi4uLi50Li4uLi5YLi4uLgogICAgMzFBMDogQzMgNTIgNjYgNTAgQjQgODAgOEEgQzcgNjYg
QzEgRTAgMTAgOEEgRTMgOEEgQzIgIC5SZlAuLi4uZi4uLi4uLi4KICAgIDMxQjA6IDI0IEZDIEJB
IEY4IDBDIDY2IEVGIDY2IDU4IDVBIEMzIDUyIEJBIEZDIDBDIDY2ICAkLi4uLmYuZlhaLlIuLi5m
CiAgICAzMUMwOiBFRCA1QSBDMyA1MiBCQSBGQyAwQyA2NiBFRiA1QSBDMyBFOCAzMSBGRiA5QyBG
QSAgLlouUi4uLmYuWi4uMS4uLgogICAgMzFEMDogRTggQ0UgRkYgRTggRTUgRkYgOUQgQzMgRTgg
MjQgRkYgOUMgRkEgRTggQzEgRkYgIC4uLi4uLi4uLiQuLi4uLi4KICAgIDMxRTA6IEU4IEUwIEZG
IDlEIEMzIDUyIDY2IDUzIDY2IDUwIEU4IDA2IDAwIDY2IDU4IDY2ICAuLi4uLlJmU2ZQLi4uZlhm
CiAgICAzMUYwOiA1QiA1QSBDMyA2NiBDMSBFMyAxMCA2NiBDMSBFQiAwRSBFOCBDQyBGRSBFOCA3
NSAgW1ouZi4uLmYuLi4uLi4udQogICAgMzIwMDogMDEgQzMgNjYgNTAgNjYgQzEgRTMgMTAgNjYg
QzEgRUIgMTAgRTggRjEgRkQgNjYgIC4uZlBmLi4uZi4uLi4uLmYKICAgIDMyMTA6IDAzIEQ4IDY2
IDgxIENCIDAwIDAwIDAwIDgwIDY2IDU4IEMzIDUyIDY2IDUzIEU4ICAuLmYuLi4uLi5mWC5SZlMu
CiAgICAzMjIwOiAwNCAwMCA2NiA1QiA1QSBDMyA2NiA1MCBFOCA5RiBGRSBFOCBENCBGRiBFOCA0
NSAgLi5mW1ouZlAuLi4uLi4uRQogICAgMzIzMDogMDEgNjYgNTggQzMgNTIgNTEgNjYgNTMgNjYg
NTAgOEEgQ0IgODAgRTMgRkMgODAgIC5mWC5SUWZTZlAuLi4uLi4KICAgIDMyNDA6IEUxIDAzIEMw
IEUxIDAzIEU4IDgyIEZFIEU4IEI3IEZGIEU4IDBGIDAxIDY2IEQzICAuLi4uLi4uLi4uLi4uLmYu
CiAgICAzMjUwOiBDOCA1OCA1MCA2NiBEMyBDMCBFOCAxRCAwMSA2NiA1OCA2NiA1QiA1OSA1QSBD
MyAgLlhQZi4uLi4uZlhmW1laLgogICAgMzI2MDogNjYgNTAgNTEgQzAgRTEgMDMgRTggNTMgMDAg
NjYgRDMgQzggOEEgQzUgNjYgRDMgIGZQUS4uLi5TLmYuLi4uZi4KICAgIDMyNzA6IEMwIEU4IEE4
IEZGIDU5IDY2IDU4IEMzIDY2IDUwIDUxIEMwIEUxIDAzIEU4IDNCICAuLi4uWWZYLmZQUS4uLi47
CiAgICAzMjgwOiAwMCA2NiBEMyBDOCA1OSA4QSBFOCA2NiA1OCBDMyBFOCA1RiAwMCBDMyBFOCAz
OSAgLmYuLlkuLmZYLi5fLi4uOQogICAgMzI5MDogRkUgNjYgQzEgRTMgMTAgNjYgQzEgRUIgMEUg
RTggQzEgMDAgQzMgRTggMkEgRkUgIC5mLi4uZi4uLi4uLi4uKi4KICAgIDMyQTA6IDY2IEMxIEUz
IDAyIEU4IEI2IDAwIEMzIDUyIDY2IDUzIEU4IDA0IDAwIDY2IDVCICBmLi4uLi4uLlJmUy4uLmZb
CiAgICAzMkIwOiA1QSBDMyBFOCAxNSBGRSBFOCA0QSBGRiBFOCBBMiAwMCBDMyA1MSA2NiA1MiA4
QSAgWi4uLi4uSi4uLi4uUWZSLgogICAgMzJDMDogRUIgOEEgQ0IgODAgRTEgMDMgQzAgRTEgMDMg
ODAgRTMgRkMgRTggRDkgRkYgODAgIC4uLi4uLi4uLi4uLi4uLi4KICAgIDMyRDA6IEY5IDAwIDc0
IDE0IDY2IDhCIEQwIDgzIEMzIDA0IEU4IENCIEZGIDgzIEVCIDA0ICAuLnQuZi4uLi4uLi4uLi4u
CiAgICAzMkUwOiA2NiA5MiA2NiAwRiBBRCBEMCA4QSBERCA2NiA1QSA1OSBDMyA1MiA2NiA1MyBF
OCAgZi5mLi4uLi5mWlkuUmZTLgogICAgMzJGMDogOUMgRkYgNjYgNUIgNUEgQzMgNTIgNjYgNTMg
RTggQTEgRkYgNjYgNUIgNUEgQzMgIC4uZltaLlJmUy4uLmZbWi4KICAgIDMzMDA6IDY2IDUwIDU1
IDUyIDY2IDUwIDhCIEVDIDhCIDU2IDBDIDg5IDU2IDA4IEU4IEI5ICBmUFVSZlAuLi5WLi5WLi4u
CiAgICAzMzEwOiBGRCAyRSBBMSA4RCAwMiBCMiAxOCBFRiBCMiAwMCA2NiBFRCA2NiA4OSA0NiAw
QSAgLi4uLi4uLi4uLmYuZi5GLgogICAgMzMyMDogNjYgNTggNUEgNUQgQzMgNjYgNTAgNTUgNTIg
OEIgRUMgRTggOUMgRkQgQjIgMDAgIGZYWl0uZlBVUi4uLi4uLi4KICAgIDMzMzA6IDY2IDhCIDQ2
IDBBIDY2IEVGIDhCIDU2IDA4IDg5IDU2IDBDIDY2IDhCIDQ2IDA0ICBmLkYuZi4uVi4uVi5mLkYu
CiAgICAzMzQwOiA2NiA4OSA0NiAwOCA1QSA1RCA2NiA1OCA2NiA1OCBDMyA2NiA1MCA1MiBFOCA3
OSAgZi5GLlpdZlhmWC5mUFIueQogICAgMzM1MDogRkQgQjIgMTggNjYgRUQgMkUgQTMgOEQgMDIg
NUEgNjYgNTggQzMgNjYgODEgRkIgIC4uLmYuLi4uLlpmWC5mLi4KICAgIDMzNjA6IEZGIDAwIDAw
IDAwIDc3IDA0IDhBIEQzIEVCIDA5IDY2IDhCIEMzIEIyIDAwIDY2ICAuLi4udy4uLi4uZi4uLi5m
CiAgICAzMzcwOiBFRiBCMiAwNCA2NiBFRCBDMyA2NiA4MSBGQiBGRiAwMCAwMCAwMCA3NyAwNCA4
QSAgLi4uZi4uZi4uLi4uLncuLgogICAgMzM4MDogRDMgRUIgMEEgNjYgOTMgQjIgMDAgNjYgRUYg
NjYgOTMgQjIgMDQgNjYgRUYgQzMgIC4uLmYuLi5mLmYuLi5mLi4KICAgIDMzOTA6IEMzIEMzIEMz
IEMzIEMzIEMzIEMzIEMzIEMzIEMzIDU1IDhCIEVDIDUzIDUxIDhCICAuLi4uLi4uLi4uVS4uU1Eu
CiAgICAzM0EwOiBGMCAyNiA4QiA1QyAxNCAyNiA4QiA0QyAxNiBFOCAyOCAwMCA4RCA2NiBGQyA1
OSAgLiYuXC4mLkwuLiguLmYuWQogICAgMzNCMDogNUIgNUQgQzMgNTMgNTEgOEIgRjAgMjYgOEIg
NUMgMjQgMzMgQzkgRTggMTQgMDAgIFtdLlNRLi4mLlwkMy4uLi4KICAgIDMzQzA6IDU5IDVCIEMz
IDU1IDhCIEVDIDUzIDUxIDhCIEYwIDI2IDhCIDVDIDA4IDI2IDhCICBZWy5VLi5TUS4uJi5cLiYu
CiAgICAzM0QwOiA0QyAwQSBFQiBENSA1MiA1NiA1NyBDOCAwNiAwMCAwMCA4QiBGMCA4OSA0RSBG
RSAgTC4uLlJWVy4uLi4uLi5OLgogICAgMzNFMDogOEMgRDAgOEUgQzAgMjYgOEIgN0MgMjYgOEEg
NDUgMDEgMzIgRTQgQjkgMjAgMDAgIC4uLi4mLnwmLkUuMi4uIC4KICAgIDMzRjA6IDJCIEM4IEI4
IEZGIEZGIDhCIEQwIEUzIDA2IEQxIEVBIEQxIEQ4IEUyIEZBIDhBICArLi4uLi4uLi4uLi4uLi4u
CiAgICAzNDAwOiA0RCAwMyAzMiBFRCA4QiBGQSBFMyAwNiBEMSBFMCBEMSBENyBFMiBGQSBGNyBE
MCAgTS4yLi4uLi4uLi4uLi4uLgogICAgMzQxMDogRjcgRDcgMjYgMjEgNDQgMUMgMjYgMjEgN0Mg
MUUgOEMgRDAgOEUgQzAgMjYgOEIgIC4uJiFELiYhfC4uLi4uJi4KICAgIDM0MjA6IDdDIDI2IDhB
IDREIDAxIDMyIEVEIEI4IDIwIDAwIDJCIEMxIDhCIEM4IDY2IEM3ICB8Ji5NLjIuLiAuKy4uLmYu
CiAgICAzNDMwOiA0NiBGQSBGRiBGRiBGRiBGRiBFMyAwOCBEMSA2RSBGQyBEMSA1RSBGQSBFMiBG
OCAgRi4uLi4uLi4ubi4uXi4uLgogICAgMzQ0MDogOEEgNEQgMDIgMzIgRUQgOEIgQzMgOEIgNTYg
RkUgRTMgMDYgRDEgRUEgRDEgRDggIC5NLjIuLi4uVi4uLi4uLi4KICAgIDM0NTA6IEUyIEZBIDIz
IDQ2IEZBIDIzIDU2IEZDIDhBIDREIDAzIDMyIEVEIEUzIDA2IEQxICAuLiNGLiNWLi5NLjIuLi4u
CiAgICAzNDYwOiBFMCBEMSBEMiBFMiBGQSAyNiAwOSA0NCAxQyAyNiAwOSA1NCAxRSBDOSA1RiA1
RSAgLi4uLi4mLkQuJi5ULi5fXgogICAgMzQ3MDogNUEgQzMgNTUgOEIgRUMgNTMgNTEgNTIgNTcg
NTAgOEIgRDggMjYgOEIgN0YgMjYgIFouVS4uU1FSV1AuLiYuLiYKICAgIDM0ODA6IDhBIDQ1IDAx
IDMyIEU0IEI5IDIwIDAwIDJCIEM4IEI4IEZGIEZGIDhCIEQwIEUzICAuRS4yLi4gLisuLi4uLi4u
CiAgICAzNDkwOiAwNiBEMSBFQSBEMSBEOCBFMiBGQSA4QSA0RCAwMiA4OCA0RSBGNiBDNiA0NiBG
NyAgLi4uLi4uLi5NLi5OLi5GLgogICAgMzRBMDogMDAgOEIgRkEgOEIgNEUgRjYgRTMgMDYgRDEg
RTAgRDEgRDcgRTIgRkEgMjYgMDkgIC4uLi5OLi4uLi4uLi4uJi4KICAgIDM0QjA6IDQ3IDFDIDI2
IDA5IDdGIDFFIDhEIDY2IEY4IDVGIDVBIEU5IEYxIEZFIDUzIDUxICBHLiYuLi4uZi5fWi4uLlNR
CiAgICAzNEMwOiA1MiA1NyA4QiBEOCA4QyBEMCA4RSBDMCAyNiA4QiA3NyAyNiA4QSA0QyAwMSAz
MiAgUlcuLi4uLi4mLncmLkwuMgogICAgMzREMDogRUQgQjggMjAgMDAgMkIgQzEgOEIgQzggQkUg
RkYgRkYgOEIgRDYgRTMgMDYgRDEgIC4uIC4rLi4uLi4uLi4uLi4KICAgIDM0RTA6IEVBIEQxIERF
IEUyIEZBIDI2IDhCIDdGIDI2IDhBIDREIDAyIDMyIEVEIDhCIEM2ICAuLi4uLiYuLiYuTS4yLi4u
CiAgICAzNEYwOiBFMyAwNiBEMSBFMCBEMSBEMiBFMiBGQSBGNyBEMCBGNyBEMiAyNiAyMSA0NyAx
QyAgLi4uLi4uLi4uLi4uJiFHLgogICAgMzUwMDogMjYgMjEgNTcgMUUgNUYgRTkgQ0MgMDUgNTMg
NTYgOEIgRDggOEMgRDIgOEUgQzIgICYhVy5fLi4uU1YuLi4uLi4KICAgIDM1MTA6IDI2IDhCIDc3
IDI2IDgwIDNDIDAwIDc0IDczIDgwIDNDIDAxIDc1IDU4IDhBIDQ0ICAmLncmLjwudHMuPC51WC5E
CiAgICAzNTIwOiAwMSAzMiBFNCAyNiA4MyA3RiAxRSAwMCA3NSA0QyAyNiAzQiA0NyAxQyA3NSA0
NiAgLjIuJi4uLi51TCY7Ry51RgogICAgMzUzMDogOEEgMDQgNkIgRjAgMDMgOEEgODQgRTYgOTUg
MjYgMDEgNDcgMjYgOEMgRDAgOEUgIC4uay4uLi4uLiYuRyYuLi4KICAgIDM1NDA6IEMwIDI2IDhC
IDc3IDI2IDgwIDNDIDA5IDc0IDE3IDhBIDA0IDMyIEU0IDZCIEYwICAuJi53Ji48LnQuLi4yLmsu
CiAgICAzNTUwOiAwMyA4QiBDMyBGRiA5NCBFNCA5NSAyNiA4QiA3NyAyNiA4QSAwNCAzMiBFNCBF
QiAgLi4uLi4uLiYudyYuLjIuLgogICAgMzU2MDogRDEgOEIgNDQgMDEgMjYgMjkgNDcgMjYgMjYg
RkYgNDcgMjYgMjYgOEIgNDcgMUMgIC4uRC4mKUcmJi5HJiYuRy4KICAgIDM1NzA6IDI2IDhCIDc3
IDFFIEVCIDFBIDI2IDhCIDc3IDI2IDhBIDA0IDMyIEU0IDZCIEYwICAmLncuLi4mLncmLi4yLmsu
CiAgICAzNTgwOiAwMyA4QSA4NCBFNiA5NSAyNiAwMSA0NyAyNiBFOSA4MCBGRiAzMyBDMCAzMyBG
NiAgLi4uLi4mLkcmLi4uMy4zLgogICAgMzU5MDogOEIgRDYgNUUgNUIgQzMgNTMgNTEgNTIgNTYg
OEIgRDggOEQgNzcgMzUgMjYgOEIgIC4uXlsuU1FSVi4uLnc1Ji4KICAgIDM1QTA6IDU0IDAyIDI2
IDg5IDU3IDE0IDI2IEM3IDQ3IDE2IDAwIDAwIDhCIEYwIDI2IDhCICBULiYuVy4mLkcuLi4uLiYu
CiAgICAzNUIwOiA0NyAyMCAzMyBEMiAyNiAwMSA0NyAxNCAyNiAxMSA1NCAxNiA4QyBEMSA4RSBD
MSAgRyAzLiYuRy4mLlQuLi4uLgogICAgMzVDMDogMjYgRjYgNDcgMkYgMDYgMEYgODUgMEEgMDUg
MjYgODAgN0YgMzQgMDAgNzUgMjIgICYuRy8uLi4uLiYuLjQudSIKICAgIDM1RDA6IDI2IDhCIDc3
IDE2IDI2IDBCIDc3IDE0IDc1IDEwIDI2IEQxIDY3IDA4IDI2IEQxICAmLncuJi53LnUuJi5nLiYu
CiAgICAzNUUwOiA1NyAwQSAyNiBEMSA2NyAwOCAyNiBEMSA1NyAwQSA4QiBDMyBFOCA3OSAxMSBF
OSAgVy4mLmcuJi5XLi4uLnkuLgogICAgMzVGMDogRTEgMDQgMjYgOEEgNDcgMzQgMzIgRTQgMDUg
ODAgMDAgOTkgMjYgODkgNDcgMUMgIC4uJi5HNDIuLi4uLiYuRy4KICAgIDM2MDA6IDI2IDg5IDU3
IDFFIDhCIEMzIEU4IEZGIEZFIEU5IEM3IDA0IDUzIDU2IDhCIEQ4ICAmLlcuLi4uLi4uLi5TVi4u
CiAgICAzNjEwOiA4RCA3NyAzNSAyNiA4QSA0NCAwMiAzMiBFNCBDMSBFMCAwMiAyNiA4QiAzNyAy
NiAgLnc1Ji5ELjIuLi4uJi43JgogICAgMzYyMDogOEIgMzQgMDMgRjAgMjYgOEIgNDcgMDggMjYg
OEIgNUYgMEEgMjYgODkgMDQgMjYgIC40Li4mLkcuJi5fLiYuLiYKICAgIDM2MzA6IDg5IDVDIDAy
IDVFIDVCIEMzIDUzIDUyIDU2IDhCIEQ4IDhDIEQwIDhEIDc3IDM1ICAuXC5eWy5TUlYuLi4uLnc1
CiAgICAzNjQwOiA4RSBDMCAyNiA4QSA1NCAwMiA4MCBGQSA0MCA3MyAyMSAyNiA4QiA3NyAwMiAz
MiAgLi4mLlQuLi5AcyEmLncuMgogICAgMzY1MDogRjYgQzEgRTIgMDIgMjYgOEIgNzQgMDQgMDMg
RjIgMjYgOEIgNTcgMDggMjYgOEIgIC4uLi4mLnQuLi4mLlcuJi4KICAgIDM2NjA6IDQ3IDBBIDI2
IDg5IDE0IDI2IDg5IDQ0IDAyIEU5IDdGIDAwIDgwIEZBIDQxIDc1ICBHLiYuLiYuRC4uLi4uLkF1
CiAgICAzNjcwOiAxMiAyNiA4QiA0NyAwOCAyNiA4QiA1NyAwQSAyNiA4OSA0NyAxMCAyNiA4OSA1
NyAgLiYuRy4mLlcuJi5HLiYuVwogICAgMzY4MDogMTIgRUIgNjggODAgRkEgNDAgNzUgMTIgMjYg
OEIgNDcgMDggMjYgOEIgNTcgMEEgIC4uaC4uQHUuJi5HLiYuVy4KICAgIDM2OTA6IDI2IDg5IDQ3
IDBDIDI2IDg5IDU3IDBFIEVCIDUxIDgwIEZBIDQyIDc1IDBBIDI2ICAmLkcuJi5XLi5RLi5CdS4m
CiAgICAzNkEwOiA4QiA0NyAwOCAyNiA4OSA0NyAyMiBFQiA0MiA4MCBGQSA0MyA3NSAwQSAyNiA4
QSAgLkcuJi5HIi5CLi5DdS4mLgogICAgMzZCMDogNDcgMDggMjYgODggNDcgMzMgRUIgMzMgODAg
RkEgNDYgNzUgMTIgMjYgOEIgNTcgIEcuJi5HMy4zLi5GdS4mLlcKICAgIDM2QzA6IDA4IDI2IDhC
IDQ3IDBBIDI2IDg5IDU3IDE4IDI2IDg5IDQ3IDFBIEVCIDFDIDgwICAuJi5HLiYuVy4mLkcuLi4u
CiAgICAzNkQwOiBGQSA0NyA3NSAwQSAyNiA4QiA0NyAwOCAyNiA4OSA0NyAyNCBFQiAwRCA4MCBG
QSAgLkd1LiYuRy4mLkckLi4uLgogICAgMzZFMDogNDggNzUgMDggMjYgOEIgNDcgMDggMjYgODkg
NDcgMjAgNUUgNUEgNUIgQzMgNTMgIEh1LiYuRy4mLkcgXlpbLlMKICAgIDM2RjA6IDU2IDhCIEQ4
IDhEIDc3IDM1IDI2IDhBIDQ0IDAyIDMyIEU0IDI2IDg5IDQ3IDE0ICBWLi4udzUmLkQuMi4mLkcu
CiAgICAzNzAwOiAyNiBDNyA0NyAxNiAwMCAwMCA1RSA1QiBDMyA1MyA1NiA4QiBEOCAyNiA4QiA3
NyAgJi5HLi4uXlsuU1YuLiYudwogICAgMzcxMDogMDIgMjYgOEIgNzQgMDIgOEEgMDQgMzIgRTQg
MjYgODkgNDcgMTQgMjYgQzcgNDcgIC4mLnQuLi4yLiYuRy4mLkcKICAgIDM3MjA6IDE2IDAwIDAw
IDI2IDhCIDVGIDAyIDI2IEZGIDQ3IDAyIDVFIDVCIEMzIDUzIDU2ICAuLi4mLl8uJi5HLl5bLlNW
CiAgICAzNzMwOiA4QiBEOCAyNiA4QiA3NyAwMiAyNiA4QiA3NCAwMiA4QiAzNCAyNiA4OSA3NyAx
NCAgLi4mLncuJi50Li40Ji53LgogICAgMzc0MDogMjYgQzcgNDcgMTYgMDAgMDAgMjYgOEIgNUYg
MDIgMjYgODMgNDcgMDIgMDIgNUUgICYuRy4uLiYuXy4mLkcuLl4KICAgIDM3NTA6IDVCIEMzIDUz
IDU2IDhCIEQ4IDI2IDhCIDc3IDAyIDI2IDhCIDc0IDAyIDhCIDA0ICBbLlNWLi4mLncuJi50Li4u
CiAgICAzNzYwOiA4QiA3NCAwMiAyNiA4OSA0NyAxNCAyNiA4OSA3NyAxNiAyNiA4QiA1RiAwMiAy
NiAgLnQuJi5HLiYudy4mLl8uJgogICAgMzc3MDogODMgNDcgMDIgMDQgNUUgNUIgQzMgNTMgNTIg
NTYgOEIgRDggRTggNzAgRkYgOEIgIC5HLi5eWy5TUlYuLi5wLi4KICAgIDM3ODA6IEYzIDI2IDhC
IDQ3IDE4IDI2IDhCIDU3IDFBIEQxIEVBIEQxIEQ4IEQxIEVBIEQxICAuJi5HLiYuVy4uLi4uLi4u
CiAgICAzNzkwOiBEOCAyNiAwMSA0NyAxNCAyNiAxMSA1NCAxNiA4QiBDMyBFOCAyQiAxMCBFOSA0
QSAgLiYuRy4mLlQuLi4uKy4uSgogICAgMzdBMDogRkYgNTMgOEIgRDggMjYgOEIgNUYgMDIgMjYg
RkYgNDcgMDIgNUIgQzMgNTMgOEIgIC5TLi4mLl8uJi5HLlsuUy4KICAgIDM3QjA6IEQ4IDI2IDhC
IDVGIDAyIDI2IDgzIDQ3IDAyIDAyIDVCIEMzIDUzIDU2IDhCIEQ4ICAuJi5fLiYuRy4uWy5TVi4u
CiAgICAzN0MwOiBFOCA2QiBGRiA4QiBGMyAyNiA4QiA1NyAyMCAzMyBDMCAyNiAwMSA1NyAxNCAy
NiAgLmsuLi4mLlcgMy4mLlcuJgogICAgMzdEMDogMTEgNDQgMTYgOEMgRDIgOEUgQzIgMjYgOEIg
NDcgMkUgMzIgQzAgODAgRTQgMDYgIC5ELi4uLi4mLkcuMi4uLi4KICAgIDM3RTA6IDNEIDAwIDAy
IDc1IDA3IDMyIEU0IDMzIEQyIDVFIDVCIEMzIDI2IDhCIDQ3IDJFICA9Li51LjIuMy5eWy4mLkcu
CiAgICAzN0YwOiAzMiBDMCA4MCBFNCAwNiAzRCAwMCAwNCA3NCBFQiAyNiA4MCA3RiAzNCAwMCA3
NSAgMi4uLi49Li50LiYuLjQudQogICAgMzgwMDogMDggOEIgQzMgRTggMkYgMEYgNUUgNUIgQzMg
MjYgOEEgNDcgMzQgMzIgRTQgMjYgIC4uLi4vLl5bLiYuRzQyLiYKICAgIDM4MTA6IDg5IDQ3IDFD
IDI2IEM3IDQ3IDFFIDAwIDAwIDhCIEMzIEU4IEVBIEZDIDVFIDVCICAuRy4mLkcuLi4uLi4uLl5b
CiAgICAzODIwOiBDMyA1MyA4QiBEOCBFOCBFMiBGRSAyNiA4QiA0NyAxNCBDMSBFMCAwMiAyNiA4
QiAgLlMuLi4uLiYuRy4uLi4mLgogICAgMzgzMDogMUYgMjYgOEIgMUYgMDMgRDggMjYgOEIgMDcg
MjYgOEIgNTcgMDIgNUIgQzMgNDUgIC4mLi4uLiYuLiYuVy5bLkUKICAgIDM4NDA6IDM4IDNBIDM4
IDUwIDM4IDlGIDM4IDU2IDM4IDZFIDM4IDg4IDM4IDkzIDM4IDk5ICA4OjhQOC44VjhuOC44Ljgu
CiAgICAzODUwOiAzOCA1MyA1MSA1NiA4QiBEOCBFOCBCMCBGRSA4QyBEMiA4RSBDMiAyNiA4MyA3
RiAgOFNRVi4uLi4uLi4uLiYuLgogICAgMzg2MDogMTYgMDAgNzUgMjIgMjYgODMgN0YgMTQgNDAg
NzMgMUIgMjYgOEIgNzcgMDIgMjYgIC4udSImLi4uQHMuJi53LiYKICAgIDM4NzA6IDhCIDVGIDE0
IEMxIEUzIDAyIDI2IDhCIDQ0IDA0IDAzIEQ4IDI2IDhCIDA3IDI2ICAuXy4uLi4mLkQuLi4mLi4m
CiAgICAzODgwOiA4QiA1NyAwMiBFOSA3QiAwNSAyNiA4QiA3NyAxNCAyNiA4QiA0NyAxNiA4MyBD
NiAgLlcuLnsuJi53LiYuRy4uLgogICAgMzg5MDogQzAgODMgRDAgRkYgNzUgNzEgODMgRkUgMDgg
NzcgNkMgMDMgRjYgMkUgRkYgQTQgIC4uLi51cS4uLndsLi4uLi4KICAgIDM4QTA6IEQ3IDM3IDI2
IDhCIDQ3IDEwIDI2IDhCIDU3IDEyIEU5IDU0IDA1IDI2IDhCIDQ3ICAuNyYuRy4mLlcuLlQuJi5H
CiAgICAzOEIwOiAwQyAyNiA4QiA1NyAwRSBFOSA0OSAwNSAyNiA4QiA0NyAyMiBFQiA0QiAyNiA4
QSAgLiYuVy4uSS4mLkciLksmLgogICAgMzhDMDogNEYgMzMgMzIgRUQgQkIgMDEgMDAgMzMgRDIg
RTMgMDYgRDEgRTMgRDEgRDIgRTIgIE8zMi4uLi4zLi4uLi4uLi4KICAgIDM4RDA6IEZBIDhCIEMz
IEU5IDJCIDA1IDI2IDhBIDRGIDMzIDMyIEVEIEI4IDAxIDAwIDMzICAuLi4uKy4mLk8zMi4uLi4z
CiAgICAzOEUwOiBEMiBFMyAwNiBEMSBFMCBEMSBEMiBFMiBGQSBGNyBEMCBGNyBEMiBFOSAxMSAw
NSAgLi4uLi4uLi4uLi4uLi4uLgogICAgMzhGMDogMjYgOEIgNDcgMTggMjYgOEIgNTcgMUEgRTkg
MDYgMDUgMjYgOEIgNDcgMjQgRUIgICYuRy4mLlcuLi4uJi5HJC4KICAgIDM5MDA6IDA4IDI2IDhC
IDQ3IDIwIEVCIDAyIDMzIEMwIDMzIEQyIEU5IEYzIDA0IDUzIDU2ICAuJi5HIC4uMy4zLi4uLlNW
CiAgICAzOTEwOiA4QiBEOCBFOCBGNCBGRCA4QiBGMyAyNiA4QiA0NyAxOCAyNiA4QiA1NyAxQSBE
MSAgLi4uLi4uLiYuRy4mLlcuLgogICAgMzkyMDogRUEgRDEgRDggRDEgRUEgRDEgRDggMjYgMDEg
NDcgMTQgMjYgMTEgNTQgMTYgOEIgIC4uLi4uLi4mLkcuJi5ULi4KICAgIDM5MzA6IEMzIEU4IDE2
IDBFIDVFIDVCIEMzIDMzIEMwIDMzIEQyIEMzIDUzIDU2IDhCIEQ4ICAuLi4uXlsuMy4zLi5TVi4u
CiAgICAzOTQwOiBFOCBFQiBGRCAyNiA4QiA3NyAxNCAyNiAwMyA3NyAyMiA4QiAwNCA4QiA1NCAw
MiAgLi4uJi53LiYudyIuLi5ULgogICAgMzk1MDogNUUgNUIgQzMgNTMgOEIgRDggMjYgQzYgNDcg
MkIgMDQgRTggQUIgRkQgMjYgOEIgIF5bLlMuLiYuRysuLi4uJi4KICAgIDM5NjA6IDQ3IDE0IDI2
IDhCIDU3IDE2IDVCIEMzIDUzIDhCIEQ4IDI2IEM2IDQ3IDJCIDAxICBHLiYuVy5bLlMuLiYuRysu
CiAgICAzOTcwOiBFOCBCQiBGRCBFQiBFOSA1MyA4QiBEOCAyNiBDNiA0NyAyQiAwMCBFOCBEMiBG
RCAgLi4uLi5TLi4mLkcrLi4uLgogICAgMzk4MDogRUIgREMgNTMgOEIgRDggODMgQzMgMzUgMjYg
OEEgNUYgMDEgQzAgRUIgMDMgODAgIC4uUy4uLi41Ji5fLi4uLi4KICAgIDM5OTA6IEUzIDA3IDMy
IEZGIDAzIERCIEZGIDk3IDc0IDk1IDVCIEMzIDUzIDUyIDU2IDhCICAuLjIuLi4uLnQuWy5TUlYu
CiAgICAzOUEwOiBEOCAyNiA4QSA0NyAyQyAzMiBFNCA4QiBGMCAwMyBGMCA4QiBDMyBGRiA5NCA5
MCAgLiYuRywyLi4uLi4uLi4uLgogICAgMzlCMDogOTUgMjYgODkgNDcgMDggMjYgODkgNTcgMEEg
MjYgOEEgNDcgMkQgMzIgRTQgOEIgIC4mLkcuJi5XLiYuRy0yLi4KICAgIDM5QzA6IEYwIDAzIEYw
IDhCIEMzIEZGIDk0IEE4IDk1IDI2IDg5IDQ3IDA0IDI2IDg5IDU3ICAuLi4uLi4uLi4mLkcuJi5X
CiAgICAzOUQwOiAwNiBFOSAxNyBGRCA1MyA1MSA1NiA4QiBEOCAyNiA4QSA0RiAyQiAzMiBFRCA4
QiAgLi4uLlNRVi4uJi5PKzIuLgogICAgMzlFMDogRjEgOEEgOEMgRDggOTUgRTMgMEEgMjYgRDEg
NkYgMDYgMjYgRDEgNUYgMDQgRTIgIC4uLi4uLi4mLm8uJi5fLi4KICAgIDM5RjA6IEY2IDI2IDhB
IDRGIDJCIDMyIEVEIDhCIEYxIEMxIEU2IDAyIDhCIDhDIEI4IDk1ICAuJi5PKzIuLi4uLi4uLi4u
CiAgICAzQTAwOiA4QiBCNCBCQSA5NSAyNiAyMSA0RiAwNCAyNiAyMSA3NyAwNiAyNiA4QSA0RiAy
QSAgLi4uLiYhTy4mIXcuJi5PKgogICAgM0ExMDogMzIgRUQgOEIgRjEgOEEgOEMgRTAgOTUgRTMg
MEEgMjYgRDEgNjcgMDQgMjYgRDEgIDIuLi4uLi4uLi4mLmcuJi4KICAgIDNBMjA6IDU3IDA2IEUy
IEY2IDI2IDhCIDRGIDA4IDI2IDhCIDc3IDBBIDI2IDg5IDRGIDE0ICBXLi4uJi5PLiYudy4mLk8u
CiAgICAzQTMwOiAyNiA4OSA3NyAxNiBFOSBDQSAwMyA1MyA1MSA1MiA1NiA1NyA4QiBEOCA4QyBE
MCAgJi53Li4uLlNRUlZXLi4uLgogICAgM0E0MDogOEUgQzAgMjYgOEEgNDcgMkIgMzIgRTQgOEIg
RjAgQzEgRTYgMDIgMjYgOEEgNDcgIC4uJi5HKzIuLi4uLi4mLkcKICAgIDNBNTA6IDJBIDhCIEY4
IDhBIDhEIEUwIDk1IDMyIEVEIDhCIDg0IEI4IDk1IDhCIDk0IEJBICAqLi4uLi4uMi4uLi4uLi4u
CiAgICAzQTYwOiA5NSBFMyAwNiBEMSBFMCBEMSBEMiBFMiBGQSBGNyBEMCBGNyBEMiAyNiAyMSA0
NyAgLi4uLi4uLi4uLi4uLiYhRwogICAgM0E3MDogMTQgMjYgMjEgNTcgMTYgMjYgOEEgNDcgMkEg
MzIgRTQgOEIgRjAgOEEgOEMgRTAgIC4mIVcuJi5HKjIuLi4uLi4KICAgIDNBODA6IDk1IDMyIEVE
IEUzIDBBIDI2IEQxIDZGIDBBIDI2IEQxIDVGIDA4IEUyIEY2IDI2ICAuMi4uLiYuby4mLl8uLi4m
CiAgICAzQTkwOiA4QSA0NyAyQiA4QiBGMCBDMSBFNiAwMiA4QiA4NCBCOCA5NSA4QiA5NCBCQSA5
NSAgLkcrLi4uLi4uLi4uLi4uLgogICAgM0FBMDogMjYgMjEgNDcgMDggMjYgMjEgNTcgMEEgMjYg
OEEgNDcgMkEgMzIgRTQgOEIgRjAgICYhRy4mIVcuJi5HKjIuLi4KICAgIDNBQjA6IDhBIDhDIEUw
IDk1IDMyIEVEIEUzIDBBIDI2IEQxIDY3IDA4IDI2IEQxIDU3IDBBICAuLi4uMi4uLiYuZy4mLlcu
CiAgICAzQUMwOiBFMiBGNiAyNiA4QiA0NyAxNCAyNiA4QiA1NyAxNiAyNiAwOSA0NyAwOCAyNiAw
OSAgLi4mLkcuJi5XLiYuRy4mLgogICAgM0FEMDogNTcgMEEgNUYgNUUgNUEgNTkgNUIgQzMgNTMg
NTEgNTYgOEIgRDggMjYgOEEgNEYgIFcuX15aWVsuU1FWLi4mLk8KICAgIDNBRTA6IDJCIDMyIEVE
IDhCIEYxIDhBIDhDIEQ4IDk1IEUzIDBBIDI2IEQxIDZGIDA2IDI2ICArMi4uLi4uLi4uLiYuby4m
CiAgICAzQUYwOiBEMSA1RiAwNCBFMiBGNiAyNiA4QSA0RiAyQiAzMiBFRCA4QiBGMSBDMSBFNiAw
MiAgLl8uLi4mLk8rMi4uLi4uLgogICAgM0IwMDogOEIgOEMgQjggOTUgOEIgQjQgQkEgOTUgMjYg
MjEgNEYgMDQgMjYgMjEgNzcgMDYgIC4uLi4uLi4uJiFPLiYhdy4KICAgIDNCMTA6IDI2IDhBIDRG
IDJBIDMyIEVEIDhCIEYxIDhBIDhDIEUwIDk1IEUzIDBBIDI2IEQxICAmLk8qMi4uLi4uLi4uLiYu
CiAgICAzQjIwOiA2RiAwQSAyNiBEMSA1RiAwOCBFMiBGNiAyNiA4QSA0RiAyQiAzMiBFRCA4QiBG
MSAgby4mLl8uLi4mLk8rMi4uLgogICAgM0IzMDogQzEgRTYgMDIgOEIgOEMgQjggOTUgOEIgQjQg
QkEgOTUgMjYgMjEgNEYgMDggMjYgIC4uLi4uLi4uLi4uJiFPLiYKICAgIDNCNDA6IDIxIDc3IDBB
IEU5IEJCIDAyIDUxIDUyIDU3IDhCIEQ4IDhDIEQwIDhFIEMwIDI2ICAhdy4uLi5RUlcuLi4uLi4m
CiAgICAzQjUwOiA4MCA3RiAyQiAwMCA3NCAxQSAyNiA4QSA0NyAyQyAzMiBFNCA4QiBGMCAwMyBG
MCAgLi4rLnQuJi5HLDIuLi4uLgogICAgM0I2MDogOEIgQzMgRkYgOTQgOTAgOTUgMjYgODkgNDcg
MDggMjYgODkgNTcgMEEgRUIgMTAgIC4uLi4uLiYuRy4mLlcuLi4KICAgIDNCNzA6IDI2IDhBIDQ3
IDJDIDMyIEU0IDhCIEYwIDAzIEYwIDhCIEMzIEZGIDk0IDlDIDk1ICAmLkcsMi4uLi4uLi4uLi4u
CiAgICAzQjgwOiAyNiA4QSA0NyAyRCAzMiBFNCA4QiBGMCAwMyBGMCA4QiBDMyBGRiA5NCBBOCA5
NSAgJi5HLTIuLi4uLi4uLi4uLgogICAgM0I5MDogMjYgODkgNDcgMDQgMjYgODkgNTcgMDYgOEMg
RDIgOEUgQzIgMjYgODAgN0YgMkIgICYuRy4mLlcuLi4uLiYuLisKICAgIDNCQTA6IDAwIDc0IDRB
IDI2IDhBIDQ3IDJCIDMyIEU0IDhCIEYwIEMxIEU2IDAyIDI2IDhBICAudEomLkcrMi4uLi4uLiYu
CiAgICAzQkIwOiA0NyAyQSA4QiBGOCA4QSA4RCBFMCA5NSAzMiBFRCA4QiA4NCBCOCA5NSA4QiA5
NCAgRyouLi4uLi4yLi4uLi4uLgogICAgM0JDMDogQkEgOTUgRTMgMDYgRDEgRTAgRDEgRDIgRTIg
RkEgRjcgRDAgRjcgRDIgMjYgMjEgIC4uLi4uLi4uLi4uLi4uJiEKICAgIDNCRDA6IDQ3IDA4IDI2
IDIxIDU3IDBBIDhCIEMzIEU4IEY5IEZEIDI2IDhCIDQ3IDA0IDI2ICBHLiYhVy4uLi4uLiYuRy4m
CiAgICAzQkUwOiA4QiA1NyAwNiAyNiAwOSA0NyAwOCAyNiAwOSA1NyAwQSBFQiAxMCAyNiA4QiA1
NyAgLlcuJi5HLiYuVy4uLiYuVwogICAgM0JGMDogMDQgMjYgOEIgNDcgMDYgMjYgODkgNTcgMDgg
MjYgODkgNDcgMEEgMjYgOEEgNDcgIC4mLkcuJi5XLiYuRy4mLkcKICAgIDNDMDA6IDJDIDMyIEU0
IDhCIEYwIDAzIEYwIDhCIEMzIEZGIDk0IDg0IDk1IDVGIDVBIDU5ICAsMi4uLi4uLi4uLi4uX1pZ
CiAgICAzQzEwOiBDMyA1MyA1MSA1MiA1NiA1NyA4QiBEOCAyNiA4QSA0NyAyQSAzMiBFNCA4QiBG
MCAgLlNRUlZXLi4mLkcqMi4uLgogICAgM0MyMDogOEEgOEMgRTAgOTUgMzIgRUQgRTMgMEEgMjYg
RDEgNjcgMDQgMjYgRDEgNTcgMDYgIC4uLi4yLi4uJi5nLiYuVy4KICAgIDNDMzA6IEUyIEY2IDhD
IEQwIDhFIEMwIDI2IDhBIDQ3IDJCIDMyIEU0IDhCIEYwIEMxIEU2ICAuLi4uLi4mLkcrMi4uLi4u
CiAgICAzQzQwOiAwMiAyNiA4QSA0NyAyQSA4QiBGOCA4QSA4RCBFMCA5NSAzMiBFRCA4QiA4NCBC
OCAgLiYuRyouLi4uLi4yLi4uLgogICAgM0M1MDogOTUgOEIgOTQgQkEgOTUgRTMgMDYgRDEgRTAg
RDEgRDIgRTIgRkEgRjcgRDAgRjcgIC4uLi4uLi4uLi4uLi4uLi4KICAgIDNDNjA6IEQyIDI2IDA5
IDQ3IDA0IDI2IDA5IDU3IDA2IDI2IDhCIDQ3IDA0IDI2IDhCIDU3ICAuJi5HLiYuVy4mLkcuJi5X
CiAgICAzQzcwOiAwNiAyNiAyMSA0NyAwOCAyNiAyMSA1NyAwQSBFOSA1NiBGRSA1NSA4QiBFQyA1
MSAgLiYhRy4mIVcuLlYuVS4uUQogICAgM0M4MDogNTIgNTAgOEIgRDggMjYgOEEgNDcgMkMgMzIg
RTQgOEIgRjAgMDMgRjAgOEIgQzMgIFJQLi4mLkcsMi4uLi4uLi4KICAgIDNDOTA6IEZGIDk0IDkw
IDk1IDI2IDg5IDQ3IDA4IDI2IDg5IDU3IDBBIDI2IDhBIDQ3IDJCICAuLi4uJi5HLiYuVy4mLkcr
CiAgICAzQ0EwOiA4OCA0NiBGQSA4QiBDMyBFOCBEQSBGQyAyNiA4OSA0NyAwNCAyNiA4OSA1NyAw
NiAgLkYuLi4uLi4mLkcuJi5XLgogICAgM0NCMDogMjYgOEEgNEYgMkQgMzIgRUQgOEIgRjEgMDMg
RjEgOEIgQzMgRkYgOTQgQTggOTUgICYuTy0yLi4uLi4uLi4uLi4KICAgIDNDQzA6IDI2IDg5IDQ3
IDE0IDI2IDg5IDU3IDE2IDhCIEMzIEU4IDQ0IEZGIDhBIDQ2IEZBICAmLkcuJi5XLi4uLkQuLkYu
CiAgICAzQ0QwOiAzMiBFNCA4QiBGMCA4QSA4QyBEOCA5NSBFMyAwQSAyNiBEMSA2RiAxNiAyNiBE
MSAgMi4uLi4uLi4uLiYuby4mLgogICAgM0NFMDogNUYgMTQgRTIgRjYgMjYgOEEgNTcgMkIgMzIg
RjYgOEIgRjIgQzEgRTYgMDIgOEIgIF8uLi4mLlcrMi4uLi4uLi4KICAgIDNDRjA6IDg0IEI4IDk1
IDhCIDk0IEJBIDk1IDI2IDIxIDQ3IDE0IDI2IDIxIDU3IDE2IDI2ICAuLi4uLi4uJiFHLiYhVy4m
CiAgICAzRDAwOiA4QSA0NyAyQSAzMiBFNCA4QiBGMCA4QSA4QyBFMCA5NSAzMiBFRCBFMyAwQSAy
NiAgLkcqMi4uLi4uLi4yLi4uJgogICAgM0QxMDogRDEgNjcgMTQgMjYgRDEgNTcgMTYgRTIgRjYg
MjYgOEIgNDcgMTQgMjYgOEIgNTcgIC5nLiYuVy4uLiYuRy4mLlcKICAgIDNEMjA6IDE2IDI2IDA5
IDQ3IDA4IDI2IDA5IDU3IDBBIDI2IDhBIDQ3IDJDIDMyIEU0IDhCICAuJi5HLiYuVy4mLkcsMi4u
CiAgICAzRDMwOiBGMCAwMyBGMCA4QiBDMyBGRiA5NCA4NCA5NSA4RCA2NiBGQyA1QSA1OSA1RCBD
MyAgLi4uLi4uLi4uLmYuWlldLgogICAgM0Q0MDogNTEgOEIgRDggRTggNTYgRkMgMjYgOEEgNEYg
MkIgMzIgRUQgOEIgRjEgOEEgOEMgIFEuLi5WLiYuTysyLi4uLi4KICAgIDNENTA6IEQ4IDk1IEUz
IDBBIDI2IEQxIDZGIDA2IDI2IEQxIDVGIDA0IEUyIEY2IDhCIEMzICAuLi4uJi5vLiYuXy4uLi4u
CiAgICAzRDYwOiBFOCBBRSBGRSAyNiA4QSA0RiAyQyAzMiBFRCA4QiBGMSAwMyBGMSA4QiBDMyBG
RiAgLi4uJi5PLDIuLi4uLi4uLgogICAgM0Q3MDogOTQgODQgOTUgNTkgQzMgOEIgRDggRTggMjIg
RkMgOEIgQzMgRTggNTUgRkMgMjYgIC4uLlkuLi4uIi4uLi5VLiYKICAgIDNEODA6IDhCIDQ3IDA0
IDI2IDhCIDc3IDA2IDI2IDA5IDQ3IDA4IDI2IDA5IDc3IDBBIDI2ICAuRy4mLncuJi5HLiYudy4m
CiAgICAzRDkwOiA4QSA0NyAyQyAzMiBFNCA4QiBGMCAwMyBGMCA4QiBDMyBGRiA5NCA4NCA5NSBD
MyAgLkcsMi4uLi4uLi4uLi4uLgogICAgM0RBMDogNTMgNTYgOEIgRDggRTggRjUgRkIgOEIgQzMg
RTggMjggRkMgMjYgOEIgNDcgMDQgIFNWLi4uLi4uLi4oLiYuRy4KICAgIDNEQjA6IDI2IDhCIDc3
IDA2IDI2IDMxIDQ3IDA4IDI2IDMxIDc3IDBBIDI2IDhBIDQ3IDJDICAmLncuJjFHLiYxdy4mLkcs
CiAgICAzREMwOiAzMiBFNCA4QiBGMCAwMyBGMCA4QiBDMyBGRiA5NCA4NCA5NSA1RSA1QiBDMyA1
MyAgMi4uLi4uLi4uLi4uXlsuUwogICAgM0REMDogNTEgNTYgOEIgRDggRTggQzUgRkIgOEIgQzMg
RTggRjggRkIgMjYgOEIgNEYgMDQgIFFWLi4uLi4uLi4uLiYuTy4KICAgIDNERTA6IEUzIDBBIDI2
IEQxIDY3IDA4IDI2IEQxIDU3IDBBIEUyIEY2IDhCIEMzIEU4IDQ2ICAuLiYuZy4mLlcuLi4uLi5G
CiAgICAzREYwOiBGQyAyNiA4QSA0RiAyQyAzMiBFRCA4QiBGMSAwMyBGMSA4QiBDMyBGRiA5NCA4
NCAgLiYuTywyLi4uLi4uLi4uLgogICAgM0UwMDogOTUgNUUgNTkgNUIgQzMgNTMgNTEgNTYgOEIg
RDggRTggOEYgRkIgOEIgQzMgRTggIC5eWVsuU1FWLi4uLi4uLi4KICAgIDNFMTA6IEMyIEZCIDI2
IDhCIDRGIDA0IEUzIDBBIDI2IEQxIDZGIDBBIDI2IEQxIDVGIDA4ICAuLiYuTy4uLiYuby4mLl8u
CiAgICAzRTIwOiBFMiBGNiBFQiBDOCA1MiA4QiBEOCBFOCA3MiBGQiA4QiBDMyBFOCBBNSBGQiA4
QiAgLi4uLlIuLi5yLi4uLi4uLgogICAgM0UzMDogRjMgMjYgOEIgNDcgMDQgMjYgOEIgNTcgMDYg
MjYgMDEgNDcgMDggMjYgMTEgNTQgIC4mLkcuJi5XLiYuRy4mLlQKICAgIDNFNDA6IDBBIDhCIEMz
IEU4IEYxIEZCIDI2IDhBIDQ3IDJDIDMyIEU0IDhCIEYwIDAzIEYwICAuLi4uLi4mLkcsMi4uLi4u
CiAgICAzRTUwOiA4QiBDMyBGRiA5NCA4NCA5NSA1QSBDMyA1MiA4QiBEOCBFOCAzRSBGQiA4QiBD
MyAgLi4uLi4uWi5SLi4uPi4uLgogICAgM0U2MDogRTggNzEgRkIgOEIgRjMgMjYgOEIgNDcgMDQg
MjYgOEIgNTcgMDYgMjYgMjkgNDcgIC5xLi4uJi5HLiYuVy4mKUcKICAgIDNFNzA6IDA4IDI2IDE5
IDU0IDBBIEVCIENBIDUxIDUyIDhCIEYwIEU4IDFFIEZCIDhCIEM2ICAuJi5ULi4uUVIuLi4uLi4u
CiAgICAzRTgwOiBFOCA1NSBGQyAyNiA4QiA0NCAwOCAyNiA4QiA1NCAwQSAyNiA4QiA1QyAwNCAy
NiAgLlUuJi5ELiYuVC4mLlwuJgogICAgM0U5MDogOEIgNEMgMDYgRTggRjMgRjIgMjYgODkgNDQg
MEMgMjYgODkgNTQgMEUgNUEgNTkgIC5MLi4uLiYuRC4mLlQuWlkKICAgIDNFQTA6IEMzIDUyIDhC
IEQwIEU4IEY1IEZBIDhCIEMyIEU4IDJDIEZDIDhCIEMyIEU4IDVDICAuUi4uLi4uLi4uLC4uLi5c
CiAgICAzRUIwOiAwOCA1QSBDMyA1MSA1MiA1NyA4QiBGMCBFOCBFMSBGQSA4QiBDNiBFOCAxOCBG
QyAgLlouUVJXLi4uLi4uLi4uLgogICAgM0VDMDogMjYgOEIgNDQgMDggMjYgOEIgNTQgMEEgMjYg
OEIgNUMgMDQgMjYgOEIgNEMgMDYgICYuRC4mLlQuJi5cLiYuTC4KICAgIDNFRDA6IEU4IDMyIEYy
IDI2IDg5IDQ0IDBDIDI2IDg5IDU0IDBFIDhDIEQ3IDhFIEM3IDI2ICAuMi4mLkQuJi5ULi4uLi4m
CiAgICAzRUUwOiA4QiA0NCAwOCAyNiA4QiA1NCAwQSAyNiA4QiA1QyAwNCAyNiA4QiA0QyAwNiBF
OCAgLkQuJi5ULiYuXC4mLkwuLgogICAgM0VGMDogMTMgRjIgMjYgODkgNUMgMTAgMjYgODkgNEMg
MTIgRTkgMTAgRkQgNTIgOEIgRDAgIC4uJi5cLiYuTC4uLi5SLi4KICAgIDNGMDA6IEU4IDk5IEZB
IDhCIEMyIEU4IEQwIEZCIDhCIEMyIEU4IEQzIDA3IDVBIEMzIDUxICAuLi4uLi4uLi4uLi4uWi5R
CiAgICAzRjEwOiA1MiA4QiBEOCBFOCA4NiBGQSA4QiBDMyBFOCBCRCBGQiA4QyBEMSA4RSBDMSAy
NiAgUi4uLi4uLi4uLi4uLi4uJgogICAgM0YyMDogOEIgNDcgMDggMjYgOEIgNTcgMEEgMjYgM0Ig
NTcgMDYgNzUgMEUgMjYgM0IgNDcgIC5HLiYuVy4mO1cudS4mO0cKICAgIDNGMzA6IDA0IDc1IDA4
IDI2IEM2IDQ3IDMwIDAxIDVBIDU5IEMzIDhCIEQwIDI2IDhCIDQ3ICAudS4mLkcwLlpZLi4uJi5H
CiAgICAzRjQwOiAwQSAyNiAzQiA0NyAwNiA3MiAwOCA3NSAwQSAyNiAzQiA1NyAwNCA3MyAwNCAz
MyAgLiY7Ry5yLnUuJjtXLnMuMwogICAgM0Y1MDogQzAgRUIgMDMgQjggMDIgMDAgMjYgODggNDcg
MzAgNUEgNTkgQzMgNTEgNTIgNTcgIC4uLi4uLiYuRzBaWS5RUlcKICAgIDNGNjA6IDhCIEQ4IDI2
IDhBIDQ3IDJDIDMyIEU0IDhCIEYwIDAzIEYwIDhCIEMzIEZGIDk0ICAuLiYuRywyLi4uLi4uLi4u
CiAgICAzRjcwOiA5MCA5NSAyNiA4OSA0NyAwOCAyNiA4OSA1NyAwQSA4QyBEMCA4RSBDMCAyNiA4
QSAgLi4mLkcuJi5XLi4uLi4mLgogICAgM0Y4MDogNDcgMkIgMzIgRTQgOEIgRjAgQzEgRTYgMDIg
OEIgRjggOEEgOEQgRDggOTUgMzIgIEcrMi4uLi4uLi4uLi4uLjIKICAgIDNGOTA6IEVEIDhCIDg0
IEI4IDk1IDhCIDk0IEJBIDk1IEUzIDA2IEQxIEUwIEQxIEQyIEUyICAuLi4uLi4uLi4uLi4uLi4u
CiAgICAzRkEwOiBGQSBGNyBEMCBGNyBEMiAyNiAyMSA0NyAwOCAyNiAyMSA1NyAwQSBFOSA0RCBG
QyAgLi4uLi4mIUcuJiFXLi5NLgogICAgM0ZCMDogNTUgOEIgRUMgNTEgNTIgNTcgODMgRUMgMDYg
OEIgRDggMjYgOEEgNDcgMkIgMzIgIFUuLlFSVy4uLi4uJi5HKzIKICAgIDNGQzA6IEU0IDhCIEYw
IEMxIEU2IDAyIDhCIEY4IDhBIDhEIEQ4IDk1IDMyIEVEIDhCIDg0ICAuLi4uLi4uLi4uLi4yLi4u
CiAgICAzRkQwOiBCOCA5NSA4OSA0NiBGNCA4QiA4NCBCQSA5NSA4OSA0NiBGNiBFMyAwOCBEMSA2
NiAgLi4uRi4uLi4uLkYuLi4uZgogICAgM0ZFMDogRjQgRDEgNTYgRjYgRTIgRjggOEIgN0UgRjQg
OEIgNDYgRjYgODkgNDYgRjggMjYgIC4uVi4uLi5+Li5GLi5GLiYKICAgIDNGRjA6IDhBIDQ3IDJD
IDMyIEU0IDhCIEYwIDAzIEYwIDhCIEMzIEZGIDk0IDkwIDk1IDI2ICAuRywyLi4uLi4uLi4uLi4m
CiAgICA0MDAwOiA4OSA0NyAwOCAyNiA4OSA1NyAwQSA4QiBDMyBFOCA0NyBGOSAyNiA4OSA0NyAw
NCAgLkcuJi5XLi4uLkcuJi5HLgogICAgNDAxMDogMjYgODkgNTcgMDYgOEIgQzcgRjcgRDAgOEIg
NTYgRjYgRjcgRDIgMjYgMjMgNDcgICYuVy4uLi4uLlYuLi4mI0cKICAgIDQwMjA6IDA4IDI2IDIz
IDU3IDBBIDI2IDg5IDQ3IDE0IDI2IDg5IDU3IDE2IDI2IDIxIDdGICAuJiNXLiYuRy4mLlcuJiEu
CiAgICA0MDMwOiAwOCA4QiA0NiBGNiAyNiAyMSA0NyAwQSA4QyBEMSA4RCA3NyAzNSA4RSBDMSAy
NiAgLi5GLiYhRy4uLi53NS4uJgogICAgNDA0MDogODAgM0MgMTkgNzMgMTIgMjYgOEIgNEYgMDQg
RTMgMEEgMjYgRDEgNjcgMDggMjYgIC48LnMuJi5PLi4uJi5nLiYKICAgIDQwNTA6IEQxIDU3IDBB
IEUyIEY2IEVCIDEwIDI2IDhCIDRGIDA0IEUzIDBBIDI2IEQxIDZGICAuVy4uLi4uJi5PLi4uJi5v
CiAgICA0MDYwOiAwQSAyNiBEMSA1RiAwOCBFMiBGNiAyNiAyMSA3RiAwOCA4QiA0NiBGOCAyNiAy
MSAgLiYuXy4uLiYhLi4uRi4mIQogICAgNDA3MDogNDcgMEEgMjYgOEIgNTcgMTQgMjYgOEIgNDcg
MTYgMjYgMDkgNTcgMDggMjYgMDkgIEcuJi5XLiYuRy4mLlcuJi4KICAgIDQwODA6IDQ3IDBBIDI2
IDhBIDQ3IDJDIDMyIEU0IDhCIEYwIDAzIEYwIDhCIEMzIEZGIDk0ICBHLiYuRywyLi4uLi4uLi4u
CiAgICA0MDkwOiA4NCA5NSA4RCA2NiBGQSA1RiBFOSBBMyBGQyA1MiA4QiBEOCBFOCBGRCBGOCA4
QiAgLi4uZi5fLi4uUi4uLi4uLgogICAgNDBBMDogQzMgRTggMzQgRkEgMjYgOEIgNDcgMDggMjYg
OEIgNTcgMEEgMjYgODUgNTcgMDYgIC4uNC4mLkcuJi5XLiYuVy4KICAgIDQwQjA6IDc1IDA2IDI2
IDg1IDQ3IDA0IDc0IDA1IEI4IDAzIDAwIEVCIDAzIEI4IDAxIDAwICB1LiYuRy50Li4uLi4uLi4u
CiAgICA0MEMwOiAyNiA4OCA0NyAzMCA1QSBDMyA1MyA1MSA1MiA1NiA4QiBEOCAyNiA4QSA0RiAy
RCAgJi5HMFouU1FSVi4uJi5PLQogICAgNDBEMDogMzIgRUQgOEIgRjEgMDMgRjEgRkYgOTQgQTgg
OTUgMjYgODkgNDcgMDQgMjYgODkgIDIuLi4uLi4uLi4mLkcuJi4KICAgIDQwRTA6IDU3IDA2IDI2
IDhBIDQ3IDJCIDMyIEU0IDhCIEYwIDhBIDhDIEQ4IDk1IEUzIDBBICBXLiYuRysyLi4uLi4uLi4u
CiAgICA0MEYwOiAyNiBEMSA2RiAwNiAyNiBEMSA1RiAwNCBFMiBGNiAyNiA4QSA0NyAyQiA4QiBG
MCAgJi5vLiYuXy4uLiYuRysuLgogICAgNDEwMDogQzEgRTYgMDIgOEIgODQgQjggOTUgOEIgOTQg
QkEgOTUgMjYgMjEgNDcgMDQgMjYgIC4uLi4uLi4uLi4uJiFHLiYKICAgIDQxMTA6IDIxIDU3IDA2
IEU5IEJEIEY5IDUyIDhCIEQ4IEU4IEFBIEZGIDI2IDhCIDQ3IDA0ICAhVy4uLi5SLi4uLi4mLkcu
CiAgICA0MTIwOiAyNiA4QiA1NyAwNiAyNiA4OSA0NyAxOCAyNiA4OSA1NyAxQSA1QSBDMyA1MSA1
MiAgJi5XLiYuRy4mLlcuWi5RUgogICAgNDEzMDogOEIgRDggRTggOTEgRkYgOEMgRDAgOEUgQzAg
MjYgOEIgNzcgMDIgMjYgOEIgNzQgIC4uLi4uLi4uLiYudy4mLnQKICAgIDQxNDA6IDAyIDgxIDND
IDVBIDVBIDc0IDVCIDI2IDhCIDc3IDAyIDI2IDhCIDc0IDAyIDgwICAuLjxaWnRbJi53LiYudC4u
CiAgICA0MTUwOiAzQyA2MyA3NSBFMSAyNiA4QiA3NyAwMiAyNiBGRiA0NCAwMiA4QiBDMyBFOCAy
MSAgPGN1LiYudy4mLkQuLi4uIQogICAgNDE2MDogRjggMjYgODkgNDcgMDggMjYgODkgNTcgMEEg
OEIgQzMgRTggRkEgRjcgMjYgODkgIC4mLkcuJi5XLi4uLi4uJi4KICAgIDQxNzA6IDQ3IDE0IDI2
IDg5IDU3IDE2IDhDIEQxIDhFIEMxIDI2IDhCIDU3IDA0IDI2IDhCICBHLiYuVy4uLi4uJi5XLiYu
CiAgICA0MTgwOiA0NyAwNiAyNiAzQiA0NyAwQSA3NSBBRCAyNiAzQiA1NyAwOCA3NSBBNyAyNiA4
QiAgRy4mO0cudS4mO1cudS4mLgogICAgNDE5MDogNzcgMDIgMjYgOEIgMDQgMjYgMDMgNDcgMTQg
OEIgREUgMjYgODkgNDcgMDIgNUEgIHcuJi4uJi5HLi4uJi5HLloKICAgIDQxQTA6IDU5IEMzIDI2
IDhCIDVGIDAyIDI2IDgzIDQ3IDAyIDAyIDVBIDU5IEMzIDUyIDU3ICBZLiYuXy4mLkcuLlpZLlJX
CiAgICA0MUIwOiA4QiBEOCA4QyBEMCA4RSBDMCAyNiA4QiA3NyAwMiAyNiA4QiA3NCAwMiA4QSA1
NCAgLi4uLi4uJi53LiYudC4uVAogICAgNDFDMDogMDEgODQgRDIgNzUgMDggMjYgQzcgNDcgMjIg
MDAgMDAgRUIgMkYgODAgRkEgRkYgIC4uLnUuJi5HIi4uLi8uLi4KICAgIDQxRDA6IDc1IDE0IDI2
IDhCIDc3IDAyIDI2IDhCIDNGIDI2IDhCIDM0IDI2IDJCIDc1IDAyICB1LiYudy4mLj8mLjQmK3Uu
CiAgICA0MUUwOiAyNiA4OSA3NyAyMiBFQiAxNiAyNiA4QiAwNyBFOCBFMyAwMiA4QiBGMCA4QSBD
MiAgJi53Ii4uJi4uLi4uLi4uLgogICAgNDFGMDogMzIgRTQgMDMgQzAgMDMgRjAgOEIgMDQgMjYg
ODkgNDcgMjIgMjYgOEIgNUYgMDIgIDIuLi4uLi4uJi5HIiYuXy4KICAgIDQyMDA6IDI2IDgzIDQ3
IDAyIDAyIDVGIDVBIEMzIDhCIEQ4IDI2IDgwIDY3IDJGIEY5IDI2ICAmLkcuLl9aLi4uJi5nLy4m
CiAgICA0MjEwOiA4QiA3NyAwMiAyNiA4QiA3NCAwMiA4QSA0NCAwMSAyNiA4OCA0NyAzNCAyNiA4
QiAgLncuJi50Li5ELiYuRzQmLgogICAgNDIyMDogNUYgMDIgMjYgODMgNDcgMDIgMDMgQzMgOEIg
RDggMjYgOEIgNzcgMDIgMjYgOEIgIF8uJi5HLi4uLi4mLncuJi4KICAgIDQyMzA6IDc0IDAyIDhC
IDc0IDAxIDI2IDg5IDc3IDIwIEVCIEUzIDUzIDhCIEQ4IDI2IDhBICB0Li50LiYudyAuLlMuLiYu
CiAgICA0MjQwOiA0NyAyQyAzMiBFNCAyNCAwMyAyNiA4MCA2NyAyRiBGOSBDMSBFMCAwOSAyNiAw
OSAgRywyLiQuJi5nLy4uLi4mLgogICAgNDI1MDogNDcgMkUgRTkgNEYgRjUgOEIgRDggMjYgOEIg
NzcgMDIgMjYgOEIgNzQgMDIgOEEgIEcuLk8uLi4mLncuJi50Li4KICAgIDQyNjA6IDQ0IDAxIDMy
IEU0IDI2IDg5IDQ3IDA0IDI2IEM3IDQ3IDA2IDAwIDAwIDhCIEMzICBELjIuJi5HLiYuRy4uLi4u
CiAgICA0MjcwOiBFOCA0MCAwNCAyNiA4QiA1RiAwMiAyNiA4MyA0NyAwMiAwMiBDMyA4QiBEOCAy
NiAgLkAuJi5fLiYuRy4uLi4uJgogICAgNDI4MDogOEIgNzcgMDIgMjYgOEIgNzQgMDIgOEEgNDQg
MDEgMzIgRTQgMjYgODkgNDcgMDQgIC53LiYudC4uRC4yLiYuRy4KICAgIDQyOTA6IDI2IEM3IDQ3
IDA2IDAwIDAwIDhCIEMzIEU4IDA4IDA0IEVCIEQ2IDUzIDU2IDhCICAmLkcuLi4uLi4uLi4uU1Yu
CiAgICA0MkEwOiBEOCAyNiA4QiA3NyAwMiAyNiA4QiA3NCAwMiA4QSA0NCAwMSAzMiBFNCAyNiA4
OSAgLiYudy4mLnQuLkQuMi4mLgogICAgNDJCMDogNDcgMDQgMjYgQzcgNDcgMDYgMDAgMDAgOEIg
QzMgRTggMDYgMDQgRTkgODYgRjQgIEcuJi5HLi4uLi4uLi4uLi4KICAgIDQyQzA6IDUzIDU2IDhC
IEQ4IDI2IDhCIDc3IDAyIDI2IDhCIDc0IDAyIDhBIDQ0IDAxIDMyICBTVi4uJi53LiYudC4uRC4y
CiAgICA0MkQwOiBFNCAyNiA4OSA0NyAwNCAyNiBDNyA0NyAwNiAwMCAwMCA4QiBDMyBFOCBGMCAw
MyAgLiYuRy4mLkcuLi4uLi4uLgogICAgNDJFMDogRTkgNjMgRjQgNTMgNTYgOEIgRDggMjYgOEIg
NzcgMDIgOEIgREUgMjYgOEIgNUYgIC5jLlNWLi4mLncuLi4mLl8KICAgIDQyRjA6IDAyIDhCIDVG
IDAxIDgzIEMzIDAzIDI2IDAxIDVDIDAyIDVFIDVCIEMzIDUxIDUyICAuLl8uLi4uJi5cLl5bLlFS
CiAgICA0MzAwOiA4QiBEOCAyNiA4QiA3NyAwMiAyNiA4MyA0NCAwMiAwMiAyNiA4QiAwNyBFOCBB
MCAgLi4mLncuJi5ELi4mLi4uLgogICAgNDMxMDogMDEgOEIgQzggMjYgOEIgNzcgMjggOEEgNDQg
MDEgMzIgRTQgMDMgQzAgOEIgRjEgIC4uLiYudyguRC4yLi4uLi4KICAgIDQzMjA6IDAzIEYwIDgz
IDNDIDAwIDc0IDRGIDI2IDhCIDc3IDI4IDhBIDU0IDAxIDMyIEY2ICAuLi48LnRPJi53KC5ULjIu
CiAgICA0MzMwOiA4QiBDMyBFOCBCMCAwMSAyNiA4OCA0NyAzMSAyNiA4QiA3NyAwMiAyNiA4QiAz
NCAgLi4uLi4mLkcxJi53LiYuNAogICAgNDM0MDogOEIgNDQgMDQgQzEgRTggMDggMzIgRTQgMjQg
N0YgQzEgRTggMDIgMzIgRTQgMjQgIC5ELi4uLjIuJC4uLi4yLiQKICAgIDQzNTA6IDFGIDI2IDgw
IDY3IDJGIDA3IEMxIEUwIDBCIDI2IDA5IDQ3IDJFIDI2IDhCIDM3ICAuJi5nLy4uLi4mLkcuJi43
CiAgICA0MzYwOiAyNiA4QiA0NyAyRSBDMSBFOCAwQiBDMSBFMCAwMiAyNiAwMSAwNCAyNiBDNiA0
NyAgJi5HLi4uLi4uLiYuLiYuRwogICAgNDM3MDogMzIgMDEgMjYgODkgNEYgMjggNUEgNTkgQzMg
NTMgOEIgRDggMjYgQzYgNDcgMzIgIDIuJi5PKFpZLlMuLiYuRzIKICAgIDQzODA6IDgyIDVCIEMz
IDU3IDhCIEQ4IDhDIEQ2IDhFIEM2IDI2IDgwIDdGIDJDIDA1IDc0ICAuWy5XLi4uLi4uJi4uLC50
CiAgICA0MzkwOiAwQSAyNiA4QSA0NyAyQyAyNiAzQSA0NyAzMCA3NSAxRSAyNiA4QiA3NyAwMiAy
NiAgLiYuRywmOkcwdS4mLncuJgogICAgNDNBMDogOEIgNzQgMDIgMjYgOEIgN0YgMDIgMjYgOEIg
M0QgOEIgNzQgMDEgMDMgRjcgMjYgIC50LiYuLi4mLj0udC4uLiYKICAgIDQzQjA6IDhCIDVGIDAy
IDI2IDg5IDc3IDAyIDVGIEMzIDI2IDhCIDVGIDAyIDI2IDgzIDQ3ICAuXy4mLncuXy4mLl8uJi5H
CiAgICA0M0MwOiAwMiAwMyA1RiBDMyA1MyA1NiA1NyA4QiBEOCA4QyBENiA4RSBDNiAyNiA4MCA3
RiAgLi5fLlNWVy4uLi4uLiYuLgogICAgNDNEMDogMzAgMDEgNzQgMEEgMjYgOEEgNDcgMzAgMjYg
M0EgNDcgMkMgNzUgMjAgMjYgOEIgIDAudC4mLkcwJjpHLHUgJi4KICAgIDQzRTA6IDc3IDAyIDI2
IDhCIDc0IDAyIDI2IDhCIDdGIDAyIDI2IDhCIDNEIDhCIDc0IDAxICB3LiYudC4mLi4uJi49LnQu
CiAgICA0M0YwOiAwMyBGNyAyNiA4QiA1RiAwMiAyNiA4OSA3NyAwMiA1RiA1RSA1QiBDMyAyNiA4
QiAgLi4mLl8uJi53Ll9eWy4mLgogICAgNDQwMDogNUYgMDIgMjYgODMgNDcgMDIgMDMgRUIgRjEg
NTMgNTYgNTcgOEIgRDggOEMgRDAgIF8uJi5HLi4uLlNWVy4uLi4KICAgIDQ0MTA6IDhFIEMwIDI2
IDgwIDdGIDMwIDAxIDc0IEU1IEVCIEMzIDU1IDhCIEVDIDUzIDUxICAuLiYuLjAudC4uLlUuLlNR
CiAgICA0NDIwOiA1MiA1NyA4QiBEOCAyNiA4QiA3NyAwMiAyNiA4QiA3NCAwMiA4QSAwNCAyNiBD
NiAgUlcuLiYudy4mLnQuLi4mLgogICAgNDQzMDogNDcgM0QgMDAgOEMgRDEgOEUgQzEgMjYgODAg
N0YgM0QgMDggNzMgMjAgMjYgOEIgIEc9Li4uLi4mLi49LnMgJi4KICAgIDQ0NDA6IDc3IDAyIDI2
IDhBIDU3IDNEIDMyIEY2IDI2IDhCIDdDIDAyIDAzIEZBIDhCIEYzICB3LiYuVz0yLiYufC4uLi4u
CiAgICA0NDUwOiAwMyBGMiA4QSAxNSAyNiA4OCA1NCAzNSAyNiBGRSA0NyAzRCBFQiBENSAyNiA4
QiAgLi4uLiYuVDUmLkc9Li4mLgogICAgNDQ2MDogN0YgMDIgOEEgRDAgMzIgRjYgOEIgRjIgQzEg
RTYgMDIgOEEgOTQgMDUgOTYgMjYgIC4uLi4yLi4uLi4uLi4uLiYKICAgIDQ0NzA6IDAxIDU1IDAy
IDI2IDhCIDdGIDI4IDhBIDU1IDAxIDgwIEUyIDA3IDI2IDg4IDU3ICAuVS4mLi4oLlUuLi4uJi5X
CiAgICA0NDgwOiAyRCAyNiA4QiA3RiAyOCA4QSA1NSAwMSBDMCBFQSAwMyA4MCBFMiAwNyAyNiA4
OCAgLSYuLiguVS4uLi4uLi4mLgogICAgNDQ5MDogNTcgMkIgMjYgOEIgN0YgMjggOEEgNTUgMDEg
QzAgRUEgMDYgMjYgODggNTcgMkEgIFcrJi4uKC5VLi4uLiYuVyoKICAgIDQ0QTA6IDhBIDk0IDA0
IDk2IDI2IDg4IDU3IDJDIDhEIDY2IEY4IDVGIDVBIDU5IDVCIDVEICAuLi4uJi5XLC5mLl9aWVtd
CiAgICA0NEIwOiBDMyA1MyA1NiA4QiBEOCAyNiA4QiA3NyAwMiA4QiBDNiA4QiA3NCA0OCAwMyBG
MCAgLlNWLi4mLncuLi4udEguLgogICAgNDRDMDogOEIgRDggOEIgNzQgMUUgOEIgQzYgMDMgQzMg
ODMgQzAgMDQgNUUgNUIgQzMgNTMgIC4uLnQuLi4uLi4uLl5bLlMKICAgIDQ0RDA6IDU2IDhCIEQ4
IDI2IDhCIDc3IDAyIDhCIEM2IDhCIDc0IDQ4IDAzIEYwIDhCIEQ4ICBWLi4mLncuLi4udEguLi4u
CiAgICA0NEUwOiA4QiA3NCAyMCBFQiBFMCA4QSBDMiBDMyAxNiAwNyA1NSA4QiBFQyA1MyA1MSA1
NiAgLnQgLi4uLi4uLlUuLlNRVgogICAgNDRGMDogNTcgODMgRUMgNDAgOEIgRjggODkgNDYgQjgg
RTggRDMgRkYgOEIgRDggODkgNDYgIFcuLkAuLi5GLi4uLi4uLkYKICAgIDQ1MDA6IEUwIDI2IDhC
IDQ1IDAyIDhCIDVGIDJFIDAzIEQ4IDg5IDVFIERFIDgzIDQ2IERFICAuJi5FLi5fLi4uLl4uLkYu
CiAgICA0NTEwOiAwNCA4QiBDNyBFOCA5QiBGRiA4OSA0NiBFMCAzMiBGNiA4RCA0NiBCOCBFOCBD
NCAgLi4uLi4uLkYuMi4uRi4uLgogICAgNDUyMDogRkYgOEEgRDAgMzIgRjYgMDMgRDIgOEIgNUUg
RTAgMDMgREEgODMgM0YgMDAgMEYgIC4uLjIuLi4uXi4uLi4/Li4KICAgIDQ1MzA6IDg0IDY1IDAx
IDg4IDQ2IEU5IDgwIDY2IEU3IEY5IEM2IDQ2IEVDIDAwIEM3IDQ2ICAuZS4uRi4uZi4uLkYuLi5G
CiAgICA0NTQwOiBEOCAwMCAwMCA2NiBDNyA0NiBEMCAwMCAwMCAwMCAwMCBDNyA0NiBGNiAwMCAw
MCAgLi4uZi5GLi4uLi4uRi4uLgogICAgNDU1MDogQzYgNDYgRUEgMDEgRUIgMDYgM0MgMDEgMEYg
ODUgOEMgMDAgOEEgNTYgRTkgOEEgIC5GLi4uLjwuLi4uLi5WLi4KICAgIDQ1NjA6IEMyIDMyIEU0
IDAzIEMwIDhCIDVFIEUwIDAzIEQ4IDgzIDNGIDAwIDc0IDc1IDI2ICAuMi4uLi5eLi4uLj8udHUm
CiAgICA0NTcwOiA4QiA0NSAwMiA4QiAxRiAwMyBEOCA4QiA0NyAwNCAzMiBFNCA4QiBDOCA4MyBD
MSAgLkUuLi4uLi5HLjIuLi4uLgogICAgNDU4MDogMDkgMzIgRUQgODAgRTEgRkUgODMgRjkgMDAg
NzQgMDcgRDEgRTkgMzMgQzAgNTAgIC4yLi4uLi4uLnQuLi4zLlAKICAgIDQ1OTA6IEUyIEZEIDhC
IEM0IDhCIEQ4IDg5IDQ2IEJBIDg1IEMwIDc0IDQxIDgzIEMwIDA4ICAuLi4uLi4uRi4uLnRBLi4u
CiAgICA0NUEwOiAyNiA4OSA0NyAwNCA4QSBDMiAzMiBFNCAwMyBDMCA4QiA1RSBFMCAwMyBEOCAy
NiAgJi5HLi4uMi4uLi5eLi4uJgogICAgNDVCMDogOEIgNDUgMDIgMDMgMDcgOEIgNUUgQkEgMjYg
ODkgMDcgOEIgNUUgQkEgMjYgOEIgIC5FLi4uLl4uJi4uLl4uJi4KICAgIDQ1QzA6IDA3IDgzIEMw
IDA2IDI2IDg5IDQ3IDAyIDhCIDVFIEJBIDhCIDc2IEY2IDI2IDg5ICAuLi4uJi5HLi5eLi52LiYu
CiAgICA0NUQwOiA3NyAwNiA4QiA1RSBCQSA4OSA1RSBGNiBDNiA0NiBFQSAwMCBFQiAwQSBDNiA0
NiAgdy4uXi4uXi4uRi4uLi4uRgogICAgNDVFMDogRUEgODcgRUIgMDQgQzYgNDYgRUEgODMgOEEg
NDYgRUEgMzIgRTQgODMgRjggMTAgIC4uLi4uRi4uLkYuMi4uLi4KICAgIDQ1RjA6IDBGIDhGIDk5
IDAwIDg4IDY2IEVBIDhBIDQ2IEVBIDMyIEU0IDg1IEMwIDBGIDhGICAuLi4uLmYuLkYuMi4uLi4u
CiAgICA0NjAwOiA4MyAwMCA4QyBEMCA4QiA1RSBCQSA4RSBDMCAyNiA4QiA1RiAwMiA4OSA1RSBF
MCAgLi4uLi5eLi4uJi5fLi5eLgogICAgNDYxMDogOEIgNUUgQkEgMjYgOEIgNUYgMDIgODAgM0Yg
NUIgNzUgNEEgQzYgNDYgRUEgMTAgIC5eLiYuXy4uP1t1Si5GLi4KICAgIDQ2MjA6IDhCIDVFIEJB
IDI2IDhCIDVGIDA2IDg5IDVFIEY2IDhCIDVFIEJBIDI2IDhCIDFGICAuXi4mLl8uLl4uLl4uJi4u
CiAgICA0NjMwOiA4QiA0NyAwNCAzMiBFNCA4QiBDOCA4MyBDMSAwOSAzMiBFRCA4MCBFMSBGRSAw
MyAgLkcuMi4uLi4uLjIuLi4uLgogICAgNDY0MDogRTEgOEIgNUUgRjYgODkgNUUgQkEgODUgREIg
NzQgQUMgMjYgOEIgMUYgOEIgNDcgIC4uXi4uXi4uLnQuJi4uLkcKICAgIDQ2NTA6IDA0IEMxIEU4
IDA4IDMyIEU0IDI0IDdGIEMxIEU4IDAyIEMxIEUwIDAyIDhCIDVFICAuLi4uMi4kLi4uLi4uLi5e
CiAgICA0NjYwOiBCOCAyNiAyOSAwNyBFQiA5MSA4RCA0NiBCOCBFOCBBRiBGRCA4QSBEMCA4RCA0
NiAgLiYpLi4uLkYuLi4uLi4uRgogICAgNDY3MDogQjggRTggMkUgMDAgOEEgREEgMzIgRkYgQzEg
RTMgMDIgOEQgNDYgQjggRkYgOTcgIC4uLi4uLjIuLi4uLkYuLi4KICAgIDQ2ODA6IDAyIDk2IEU5
IDcyIEZGIDgzIDdFIEY2IDAwIDBGIDg1IEM5IEZFIDgwIDdFIEVBICAuLi5yLi5+Li4uLi4uLn4u
CiAgICA0NjkwOiAxMCA3NCAwNSA4QSA0NiBFQSBFQiAwMiAzMiBDMCA4RCA2NiBGOCA1RiA1RSBF
OSAgLnQuLkYuLi4yLi5mLl9eLgogICAgNDZBMDogMEIgRkUgQzMgNTMgNTEgOEIgRDggMjYgOEEg
NEYgMDQgMzIgRUQgRTggOEYgRTggIC4uLlNRLi4mLk8uMi4uLi4KICAgIDQ2QjA6IDU5IDVCIEMz
IDUzIDUxIDhCIEQ4IDI2IDhBIDRGIDA0IDMyIEVEIEU4IDhBIEU4ICBZWy5TUS4uJi5PLjIuLi4u
CiAgICA0NkMwOiA1OSA1QiBDMyA1MyA4QiBEOCAyNiA4QSA0NyAwNCAzMiBFNCBFNiA4MCA1QiBD
MyAgWVsuUy4uJi5HLjIuLi5bLgogICAgNDZEMDogNTMgNTEgOEIgRDggMjYgOEEgNEYgMDQgMzIg
RUQgRTggQkIgRDcgNTkgNUIgQzMgIFNRLi4mLk8uMi4uLi5ZWy4KICAgIDQ2RTA6IDUzIDhCIEQ4
IDY2IDUwIDY2IDUyIDY2IDUxIDY2IDI2IDhCIDQ3IDA4IDY2IDI2ICBTLi5mUGZSZlFmJi5HLmYm
CiAgICA0NkYwOiA4QiA1NyAxMCA2NiAyNiA4QiA0RiAwNCA2NiBGNyBGMSA2NiAyNiA4OSA0NyAw
QyAgLlcuZiYuTy5mLi5mJi5HLgogICAgNDcwMDogNjYgMjYgODkgNTcgMTAgNjYgNTkgNjYgNUEg
NjYgNTggNUIgQzMgNTMgOEIgRDggIGYmLlcuZllmWmZYWy5TLi4KICAgIDQ3MTA6IDY2IDUwIDY2
IDUyIDY2IDUxIDY2IDI2IDhCIDQ3IDA4IDY2IDI2IDhCIDRGIDA0ICBmUGZSZlFmJi5HLmYmLk8u
CiAgICA0NzIwOiA2NiBGNyBFMSA2NiAyNiA4OSA0NyAwQyA2NiAyNiA4OSA1NyAxMCA2NiA1OSA2
NiAgZi4uZiYuRy5mJi5XLmZZZgogICAgNDczMDogNUEgNjYgNTggNUIgQzMgNTMgNTcgOEIgRDgg
MjYgOEIgNUYgMTQgRTggNEUgRUIgIFpmWFsuU1cuLiYuXy4uTi4KICAgIDQ3NDA6IDhCIEQwIDY2
IEMxIEU4IDEwIDkyIDVGIDVCIEMzIDUzIDU3IDhCIEQ4IDI2IDhCICAuLmYuLi4uX1suU1cuLiYu
CiAgICA0NzUwOiA0NyAxNCAyNiA4QiA1NyAxNiA4QiBEOCA4NyBEMyA2NiBDMSBFMyAxMCA4QiBE
QSAgRy4mLlcuLi4uLmYuLi4uLgogICAgNDc2MDogQzEgRTMgMDIgRTggNEMgRUIgRUIgRDggNTMg
NTIgNTcgOEIgRDggMjYgOEIgNDcgIC4uLi5MLi4uU1JXLi4mLkcKICAgIDQ3NzA6IDA4IDI2IDhC
IDU3IDBBIDkyIDY2IEMxIEUwIDEwIDhCIEMyIDI2IDhCIDVGIDE0ICAuJi5XLi5mLi4uLi4mLl8u
CiAgICA0NzgwOiBFOCA3MCBFQSA1RiA1QSA1QiBDMyA1MyA1MiA4QiBEOCAyNiA4QiA0NyAxQyAy
NiAgLnAuX1pbLlNSLi4mLkcuJgogICAgNDc5MDogOEIgNTcgMUUgOTIgNjYgQzEgRTAgMTAgOEIg
QzIgMjYgOEIgNUYgMjYgOEIgNUYgIC5XLi5mLi4uLi4mLl8mLl8KICAgIDQ3QTA6IDAxIEU4IDRG
IEVBIDVBIDVCIEMzIDUzIDUyIDU2IDhCIEYwIDI2IDhCIDVDIDI2ICAuLk8uWlsuU1JWLi4mLlwm
CiAgICA0N0IwOiA4QiA1RiAwMSBFOCBEOCBFQSA4QiBEMCA2NiBDMSBFOCAxMCA5MiAyNiA4OSA0
NCAgLl8uLi4uLi5mLi4uLiYuRAogICAgNDdDMDogMUMgMjYgODkgNTQgMUUgNUUgNUEgNUIgQzMg
NTMgNTEgNTIgNTcgOEIgRDggMjYgIC4mLlQuXlpbLlNRUlcuLiYKICAgIDQ3RDA6IDhCIDQ3IDA4
IDI2IDhCIDU3IDBBIDkyIDY2IEMxIEUwIDEwIDhCIEMyIDhCIEM4ICAuRy4mLlcuLmYuLi4uLi4u
CiAgICA0N0UwOiAyNiA4QiA0NyAxNCAyNiA4QiA1NyAxNiA4QiBEOCA4NyBEMyA2NiBDMSBFMyAx
MCAgJi5HLiYuVy4uLi4uZi4uLgogICAgNDdGMDogOEIgREEgQzEgRTMgMDIgOEIgQzEgRTggMkMg
RUEgNUYgNUEgNTkgNUIgQzMgOEIgIC4uLi4uLi4uLC5fWllbLi4KICAgIDQ4MDA6IEQwIDY2IEMx
IEU4IDEwIDkyIEMzIDAwIDFFIDA2IDY2IDUwIDY2IDUxIDY2IDUyICAuZi4uLi4uLi4uZlBmUWZS
CiAgICA0ODEwOiA2NiA1MyA2NiA1NSA2NiA1NiA2NiA1NyAwRSAxRiAwQSBDMCA3NSAwNiBFOCAz
NyAgZlNmVWZWZlcuLi4udS4uNwogICAgNDgyMDogMDEgRTkgRDggMDAgM0MgMDEgNzUgMDYgRTgg
NjcgMDEgRTkgQ0UgMDAgM0MgMDIgIC4uLi48LnUuLmcuLi4uPC4KICAgIDQ4MzA6IDc1IDA2IEU4
IDlCIDAyIEU5IEM0IDAwIDNDIDAzIDc1IDBCIEU4IENGIDAzIDhCICB1Li4uLi4uLjwudS4uLi4u
CiAgICA0ODQwOiBFQyA4OSA1RSAwQyBFOSBCNSAwMCAzQyAwNCA3NSAwQiBFOCBERSAwMyA4QiBF
QyAgLi5eLi4uLjwudS4uLi4uLgogICAgNDg1MDogODkgNUUgMEMgRTkgQTYgMDAgM0MgMDUgNzUg
MEIgRTggMDkgMDUgOEIgRUMgODkgIC5eLi4uLjwudS4uLi4uLi4KICAgIDQ4NjA6IDU2IDEwIEU5
IDk3IDAwIDNDIDA2IDc1IDExIEU4IDg2IDA0IDhCIEVDIDg5IDVFICBWLi4uLjwudS4uLi4uLi5e
CiAgICA0ODcwOiAwQyA4OSA0RSAxNCA4OSA1NiAxMCBFOSA4MiAwMCAzQyAwNyA3NSAxMCBFOCA3
OCAgLi5OLi5WLi4uLjwudS4ueAogICAgNDg4MDogMDUgOEIgRUMgODggN0UgMEQgODkgNEUgMTQg
ODkgNTYgMTAgRUIgNkUgM0MgMDggIC4uLi5+Li5OLi5WLi5uPC4KICAgIDQ4OTA6IDc1IDBBIEU4
IEJCIDA0IDhCIEVDIDg4IDdFIDBEIEVCIDYwIDNDIDA5IDc1IDA1ICB1Li4uLi4uLn4uLmA8LnUu
CiAgICA0OEEwOiBFOCBCNCAwNSBFQiA1NyAzQyAwQSA3NSAxMCBFOCBGQyAwNSA4QiBFQyA4OSA0
RSAgLi4uLlc8LnUuLi4uLi4uTgogICAgNDhCMDogMTQgODkgN0UgMDAgOEMgNDYgMUMgRUIgNDMg
M0MgMEIgNzUgMEIgRTggRjYgMDUgIC4ufi4uRi4uQzwudS4uLi4KICAgIDQ4QzA6IDhCIEVDIDY2
IDg5IDRFIDE0IEVCIDM0IDNDIDEwIDc1IDBBIEU4IEY1IDA1IDhCICAuLmYuTi4uNDwudS4uLi4u
CiAgICA0OEQwOiBFQyA4OSA1RSAwQyBFQiAyNiAzQyAxMSA3NSAwRCBFOCAyMSAwNiA4QiBFQyA4
OSAgLi5eLi4mPC51Li4hLi4uLgogICAgNDhFMDogNUUgMEMgODkgNEUgMTQgRUIgMTUgM0MgMTUg
NzUgMEYgRTggNEMgMDYgOEIgRUMgIF4uLk4uLi48LnUuLkwuLi4KICAgIDQ4RjA6IDg5IDVFIDBD
IEVCIDA3IEI4IDRGIDAxIEVCIDAyIDMyIEMwIDhCIEVDIDg5IDQ2ICAuXi4uLi5PLi4uMi4uLi5G
CiAgICA0OTAwOiAxOCA2NiA1RiA2NiA1RSA2NiA1RCA2NiA1QiA2NiA1QSA2NiA1OSA2NiA1OCAw
NyAgLmZfZl5mXWZbZlpmWWZYLgogICAgNDkxMDogMUYgQzMgNTAgMUUgMkUgOEUgMUUgRDkgMDMg
OEMgRDggQTMgODYgNUIgQTMgOTYgIC4uUC4uLi4uLi4uLi5bLi4KICAgIDQ5MjA6IDVCIEEzIEE4
IDVCIDJFIDhFIDFFIEQxIDAzIEEzIEFBIDA0IDFGIDU4IENCIDAwICBbLi5bLi4uLi4uLi4uWC4u
CiAgICA0OTMwOiAzMCAzMSAyRSAzMCAzMCAwMCA1NiA0NSA1MyA0MSAwMCAwMyA2MCAwMiAwMCAw
MCAgMDEuMDAuVkVTQS4uYC4uLgogICAgNDk0MDogMDEgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAg
MDMgMzIgMEYgNzUgMDEgMDAgMDAgIC4uLi4uLi4uLi4yLnUuLi4KICAgIDQ5NTA6IDAyIDAxIDAw
IDAwIEM4IDQ4IDAwIDAwIEI5IDNGIDAwIDhCIERGIDgzIEM3IDA0ICAuLi4uLkguLi4/Li4uLi4u
CiAgICA0OTYwOiBGQyA2NiAzMyBDMCBGMyA2NiBBQiA4QiBGQiBCRSBDRSA0OCBCOSAyMiAwMCBG
MyAgLmYzLi5mLi4uLi5ILiIuLgogICAgNDk3MDogQTQgMDYgMUYgOEMgNEYgMDggOEMgNDcgMTAg
OEMgNEYgMTggOEMgNEYgMUMgOEMgIC4uLi5PLi5HLi5PLi5PLi4KICAgIDQ5ODA6IDRGIDIwIDgz
IEM3IDIyIDg5IDdGIDBFIDBFIDFGIEU4IEI0IEQzIEIwIDRGIDMyICBPIC4uIi4uLi4uLi4uLk8y
CiAgICA0OTkwOiBFNCBDMyA1NiA1MSA1NyBCOSAxMCAwMCA2NiAzMyBDMCBGMyA2NiBBQiA1RiA1
OSAgLi5WUVcuLi5mMy4uZi5fWQogICAgNDlBMDogOEMgREIgMDYgMUYgQzcgMDUgQkIgMDAgQzYg
NDUgMDIgMDcgQzcgNDUgMDQgNDAgIC4uLi4uLi4uLkUuLi5FLkAKICAgIDQ5QjA6IDAwIEM3IDQ1
IDA2IDQwIDAwIEM2IDQ1IDFCIDA0IEM2IDQ1IDE4IDAxIEM2IDQ1ICAuLkUuQC4uRS4uLkUuLi5F
CiAgICA0OUMwOiAxQSAwMSBDNiA0NSAxRSAwMSA2NiBDNyA0NSAzRSAwMCA4NCBENyAxNyA4RSBE
QiAgLi4uRS4uZi5FPi4uLi4uLgogICAgNDlEMDogRTggQUYgQkQgNjYgMEIgQzAgMEYgODQgRUUg
MDAgMDYgMUYgNjYgODkgNDUgMjggIC4uLmYuLi4uLi4uLmYuRSgKICAgIDQ5RTA6IDhDIEM4IDY2
IEMxIEUwIDEwIEI4IDVCIDREIDY2IDg5IDQ1IDBDIDgxIEY5IEZGICAuLmYuLi4uW01mLkUuLi4u
CiAgICA0OUYwOiA4MSAwRiA4NCBDRiAwMCA4MCBFNSAwMyBCMiAwMSA1MyA4RSBEQiBCRSA4MCAx
QyAgLi4uLi4uLi4uLlMuLi4uLgogICAgNEEwMDogRTggNjAgRDEgNUIgMDYgMUYgMEYgODQgQkUg
MDAgNTMgRTggREUgRDMgNjYgODkgIC5gLlsuLi4uLi5TLi4uZi4KICAgIDRBMTA6IDQ1IDEyIEM3
IDQ1IDE2IDA4IDEwIDhEIDVDIDBDIEU4IDlGIEU4IDY2IDg5IDQ1ICBFLi5FLi4uLlwuLi4uZi5F
CiAgICA0QTIwOiAxRiA2NiA4OSA0NSAzNiA4RCA1QyAxMCBFOCA5MSBFOCA2NiA4OSA0NSAyMyA2
NiAgLmYuRTYuXC4uLi5mLkUjZgogICAgNEEzMDogODkgNDUgM0EgOEQgNUMgMDggRTggODMgRTgg
MEEgQzAgNzUgMDQgNUIgRTkgODcgIC5FOi5cLi4uLi4udS5bLi4KICAgIDRBNDA6IDAwIEU4IEE4
IEQzIDY2IEMxIEU4IDEwIDNEIDU4IDAyIDc0IDBEIDNEIDVFIDAxICAuLi4uZi4uLj1YLnQuPV4u
CiAgICA0QTUwOiA3NCAwOCA3NyAwQSBDNiA0NSAxNyAwOCBFQiAwNCBDNiA0NSAxNyAwRSBFOCA1
MiAgdC53Li5FLi4uLi5FLi4uUgogICAgNEE2MDogRDMgODAgRjkgMDAgNzQgMDQgQzYgNDUgMUIg
MDYgMkUgQTEgRDMgMDMgODkgNDUgIC4uLi50Li5FLi4uLi4uLkUKICAgIDRBNzA6IDA4IDhEIDVD
IDA0IEU4IDQ1IEU4IDY2IDhCIEM4IDY2IEMxIEU5IDEwIEQzIEUwICAuLlwuLkUuZi4uZi4uLi4u
CiAgICA0QTgwOiA4OSA0NSAxMCA4OSA0NSAzMiBCMCAwOCBEMiBFMCA4OCA0NSAxOSA4RCA1QyAx
NCAgLkUuLkUyLi4uLi5FLi5cLgogICAgNEE5MDogRTggMjkgRTggNUIgM0QgMDAgMDMgNzcgMkYg
NTMgOEIgRDggQjggMDAgMDMgMzMgIC4pLls9Li53L1MuLi4uLjMKICAgIDRBQTA6IEQyIEY3IEYz
IDVCIEZFIEM4IDg4IDQ1IDFEIDg4IDQ1IDM1IDg4IDQ1IDM0IDhFICAuLi5bLi4uRS4uRTUuRTQu
CiAgICA0QUIwOiBEQiA1NyA1MyBCRSA4MCAxQyBFOCAyMCBCRCA1QiA1RiAwQiBDOSA3NSAwNSAw
NiAgLldTLi4uLiAuW18uLnUuLgogICAgNEFDMDogMUYgODMgMjUgRkUgMzIgRTQgRUIgMDIgQjQg
MDMgQjAgNEYgOEUgREIgNUUgQzMgIC4uJS4yLi4uLi4uTy4uXi4KICAgIDRBRDA6IDgxIEZCIEZG
IDgxIDc0IDZBIDBBIEZGIDc1IDA0IDhCIEMzIEVCIDIxIEY2IEM3ICAuLi4udGouLnUuLi4uIS4u
CiAgICA0QUUwOiAwOCA3NSA2MyA4QiBDQiBCMiAwMSBCRSAyMCAxQyBFOCA3NiBEMCA3NCA1NyBF
OCAgLnVjLi4uLi4gLi52LnRXLgogICAgNEFGMDogRDkgRDIgMEEgQzAgNzUgMEUgNjYgQzEgRTgg
MTAgODAgRTcgODAgMEEgQzcgRTggIC4uLi51LmYuLi4uLi4uLi4KICAgIDRCMDA6IDkzIDA0IEVC
IDNDIEU4IERCIEMwIDc0IDA1IEU4IEZEIEJEIEVCIDAwIEU4IEZEICAuLi48Li4udC4uLi4uLi4u
CiAgICA0QjEwOiBDMSBCRSAyMCAxQyBFOCA5NiBCQyA3NCAyRCBFOCBBNSAwMCBFOCAyQyAwMCA2
NiAgLi4gLi4uLnQtLi4uLiwuZgogICAgNEIyMDogQkIgMjAgMUMgMDAgMUMgRTggOUEgRDIgQkUg
MDAgMUMgRTggOUQgRDIgNjYgQzEgIC4gLi4uLi4uLi4uLi4uZi4KICAgIDRCMzA6IEU4IDEwIDhC
IEQ4IDMyIEMwIEY2IEM3IDgwIDc0IDAyIEIwIDQwIEU4IEQ2IEJDICAuLi4uMi4uLi50Li5ALi4u
CiAgICA0QjQwOiBCMCA0RiAzMiBFNCBFQiAwNCBCMCA0RiBCNCAwMyBDMyA1NiAwNiAzMyBDMCA4
RSAgLk8yLi4uLk8uLi5WLjMuLgogICAgNEI1MDogQzAgQkUgMjAgMUMgRTggOTUgRDIgOEIgQzgg
NjYgQzEgRTggMTAgOEIgRDAgQzEgIC4uIC4uLi4uLmYuLi4uLi4KICAgIDRCNjA6IEU5IDAzIDI2
IDg5IDBFIDRBIDA0IEMxIEVBIDA0IEZFIENBIDI2IDg4IDE2IDg0ICAuLiYuLkouLi4uLi4mLi4u
CiAgICA0QjcwOiAwNCAyNiBDNiAwNiA1MSAwNCAwMCAyNiBDNiAwNiA1MCAwNCAwMCAyNiBDNiAw
NiAgLiYuLlEuLiYuLlAuLiYuLgogICAgNEI4MDogNDkgMDQgNjIgMjYgQzcgMDYgNEMgMDQgMDAg
QTAgMjYgQzYgMDYgODUgMDQgMTAgIEkuYiYuLkwuLi4mLi4uLi4KICAgIDRCOTA6IDI2IEM3IDA2
IDBDIDAxIDU3IDY1IDhDIEM4IDI2IEEzIDBFIDAxIDA3IDVFIEMzICAmLi4uLldlLi4mLi4uLl4u
CiAgICA0QkEwOiAwMSAwRiAwMCAwQSAwMCAwMCAwMCAwMCAwMCA0MCAwNSAwRiBGRiAwMCAwMSAw
MiAgLi4uLi4uLi4uQC4uLi4uLgogICAgNEJCMDogMDMgMDQgMDUgMDYgMDcgMDggMDkgMEEgMEIg
MEMgMEQgMEUgMEYgMDEgMDAgMEYgIC4uLi4uLi4uLi4uLi4uLi4KICAgIDRCQzA6IDAwIEZDIEJB
IEM0IDAzIEI4IDAwIDAxIEVGIEI5IDA0IDAwIEI0IDAxIEJFIDM4ICAuLi4uLi4uLi4uLi4uLi44
CiAgICA0QkQwOiA0QiBBQyA4NiBFMCBFRiA4QSBFMCBGRSBDNCBFMiBGNiBCOCAwMCAwMyBFRiBC
OSAgSy4uLi4uLi4uLi4uLi4uLgogICAgNEJFMDogMDkgMDAgQkEgQ0UgMDMgMzIgRTQgQkUgM0Mg
NEIgOEEgQzQgRUUgQUMgNDIgRUUgIC4uLi4uMi4uPEsuLi4uQi4KICAgIDRCRjA6IDRBIEZFIEM0
IEUyIEY1IEJBIERBIDAzIEVDIEI5IDE0IDAwIEJBIEMwIDAzIDMyICBKLi4uLi4uLi4uLi4uLi4y
CiAgICA0QzAwOiBFNCBCRSA0NSA0QiA4QSBDNCBFRSBBQyBFRSBGRSBDNCBFMiBGNyBDMyBCRSAw
MCAgLi5FSy4uLi4uLi4uLi4uLgogICAgNEMxMDogMUMgRTggQjcgRDEgNjYgQzEgRTggMTAgOEIg
RDggRTggODcgRDEgNzUgMDUgRTggIC4uLi5mLi4uLi4uLi51Li4KICAgIDRDMjA6IDczIEQxIDc1
IDA0IEI4IDRGIDAwIEMzIEI4IDRGIDAzIEMzIDgzIEUxIDBGIDBGICBzLnUuLk8uLi5PLi4uLi4u
CiAgICA0QzMwOiA4NCBCQiAwMCAwQSBEMiA3NSAwQyBCOCAwMCAxQyBFOCAxRiAwMyA4MyBDMyAx
MSAgLi4uLi51Li4uLi4uLi4uLgogICAgNEM0MDogRTkgQTYgMDAgODAgRkEgMDEgNzUgMzMgOEIg
RkIgQkIgQzkgMDUgQjkgMDggMDAgIC4uLi4uLnUzLi4uLi4uLi4KICAgIDRDNTA6IEZDIEU4IDM2
IEU2IDY2IEFCIDQzIEUyIEY4IDY2IEMxIEU3IDEwIDY2IEMxIEVGICAuLjYuZi5DLi5mLi4uZi4u
CiAgICA0QzYwOiAxMCBCOSAwMCAwMSBCQSAwMCAwMSAwRSAxRiBFOCAyMyBCRSAwNiAxRiBCOCAw
MSAgLi4uLi4uLi4uLiMuLi4uLgogICAgNEM3MDogMUMgQjkgMDcgMDAgOEIgREYgRTggRTMgMDIg
RUIgNkUgODAgRkEgMDIgNzUgNkUgIC4uLi4uLi4uLi5uLi4udW4KICAgIDRDODA6IDhCIEYzIDA2
IDFGIEZDIEJCIEM5IDA1IEI5IDA4IDAwIDY2IEFEIEU4IDU1IEU1ICAuLi4uLi4uLi4uLmYuLlUu
CiAgICA0QzkwOiA0MyBFMiBGOCAwNiA1NiAwRSAxRiBCQiBEMCAwNSBFOCBFRCBFNSA4QSBEMCA4
MCAgQy4uLlYuLi4uLi4uLi4uLgogICAgNENBMDogRTIgMDMgNjYgQzEgRTggMTAgOEIgQzggQkUg
MDAgMUMgRTggQjUgQ0UgQkIgQ0UgIC4uZi4uLi4uLi4uLi4uLi4KICAgIDRDQjA6IDA1IEU4IEQ2
IEU1IDhCIEM4IDY2IEMxIEU4IDEwIDhCIEQwIEIwIDE4IEI3IDAxICAuLi4uLi5mLi4uLi4uLi4u
CiAgICA0Q0MwOiBFOCBFQyBCNyA1QiAwNyA1MyA4MSBDMyAwMCAwNCBCOCAwMiAxQyBCOSAwNyAw
MCAgLi4uWy5TLi4uLi4uLi4uLgogICAgNENEMDogRTggODkgMDIgNUUgOEIgRkUgNjYgQzEgRTcg
MTAgNjYgQzEgRUYgMTAgQjkgMDAgIC4uLl4uLmYuLi5mLi4uLi4KICAgIDRDRTA6IDAxIEJBIDAw
IDAxIDBFIDFGIEU4IEY1IEJEIEIwIDRGIDMyIEU0IEMzIDMyIEMwICAuLi4uLi4uLi4uTzIuLjIu
CiAgICA0Q0YwOiBDMyAwMCBFOCBBRiBEMCA3NCA1MyBCRSAwMCAxQyA4MCBGQiAwMCA3NCAxOCA4
MCAgLi4uLi50Uy4uLi4uLnQuLgogICAgNEQwMDogRkIgMDEgNzUgMDUgRTggRUQgRDAgRUIgMUQg
ODAgRkIgMDIgNzUgMTAgOEIgQzEgIC4udS4uLi4uLi4uLnUuLi4KICAgIDREMTA6IEU4IEEwIEQw
IEQzIEU4IDhCIEM4IEU4IDMxIEJEIDc0IDJFIEVCIDA4IDgwIEZCICAuLi4uLi4uLjEudC4uLi4u
CiAgICA0RDIwOiAwMyA3NSAyNCBFOCA0NCBEMCBFOCA4QSBEMCA4QiBEOCBEMyBFMyA1MCAzMyBD
MCAgLnUkLkQuLi4uLi4uLlAzLgogICAgNEQzMDogQkEgMDAgMDMgM0IgREEgNzcgMDUgQkEgRkYg
RkYgRUIgMDQgRjcgRjMgOEIgRDAgIC4uLjsudy4uLi4uLi4uLi4KICAgIDRENDA6IDU4IDhCIEM4
IEI4IDRGIDAwIEMzIDMyIEMwIEMzIEIwIDRGIEI0IDAzIEMzIDAwICBYLi4uTy4uMi4uLk8uLi4u
CiAgICA0RDUwOiAwQSBEQiA3NSAwNyA4QSBFRiBFOCAwQiBCRiBFQiAwNSBFOCBGMCBCRSA4QSBG
OCAgLi51Li4uLi4uLi4uLi4uLgogICAgNEQ2MDogQjAgNEYgMzIgRTQgQzMgMDAgRTggM0IgRDAg
NzQgMkMgQkUgMDAgMUMgRTggNUEgIC5PMi4uLi47LnQsLi4uLloKICAgIDRENzA6IEQwIDY2IEMx
IEU4IDEwIEY2IEM0IDQwIDc1IDFEIDBBIEZGIDc1IDA1IEU4IDFFICAuZi4uLi4uQHUuLi51Li4u
CiAgICA0RDgwOiAwMCBFQiAwRiA4MCBGRiAwMSA3NSAxNCBCQiAxMyAwMCBFOCBGQyBFNCBEMSBF
OCAgLi4uLi4udS4uLi4uLi4uLgogICAgNEQ5MDogOEIgRDAgQjAgNEYgMzIgRTQgQzMgQjAgNEYg
QjQgMDMgQzMgMzIgQzAgQzMgNTIgIC4uLk8yLi4uTy4uLjIuLlIKICAgIDREQTA6IDUzIDY2IDUw
IDgxIEUyIEZGIDAyIEQxIEUyIDhCIEMyIDQwIDY2IEMxIEUwIDEwICBTZlAuLi4uLi4uLkBmLi4u
CiAgICA0REIwOiA4QiBDMiBCQiAxMyAwMCBFOCAyRCBFNCBCQiAxMiAwMCBFOCAyNyBFNCA2NiA1
OCAgLi4uLi4uLS4uLi4uJy5mWAogICAgNERDMDogNUIgNUEgQzMgOUMgMUUgMDYgNjYgNTAgNjYg
NTEgNjYgNTIgNjYgNTMgNjYgNTUgIFtaLi4uLmZQZlFmUmZTZlUKICAgIDRERDA6IDY2IDU2IDY2
IDU3IDBFIDFGIEU4IDI3IEU1IEU4IDhBIEZGIEU4IDQ2IEU1IDhCICBmVmZXLi4uJy4uLi4uRi4u
CiAgICA0REUwOiBFQyA4OSA1NiAxMCA4OSA0NiAxOCA2NiA1RiA2NiA1RSA2NiA1RCA2NiA1QiA2
NiAgLi5WLi5GLmZfZl5mXWZbZgogICAgNERGMDogNUEgNjYgNTkgNjYgNTggMDcgMUYgOUQgQ0Ig
RTggQTggQ0YgNzQgNTQgRjYgQzMgIFpmWWZYLi4uLi4uLnRULi4KICAgIDRFMDA6IDdGIDc1IDM4
IDUzIEJFIDAwIDFDIEU4IEVBIENGIEY3IEUyIDY2IEMxIEUyIDEwICAudThTLi4uLi4uLi5mLi4u
CiAgICA0RTEwOiA4QiBEMCA2NiA4MSBFMSBGRiBGRiAwMCAwMCA2NiAwMyBEMSBFOCA5NCBDRiA4
MCAgLi5mLi4uLi4uZi4uLi4uLgogICAgNEUyMDogRTIgRkMgNjYgRDMgRTIgNjYgODEgRTIgRkYg
RkYgRkYgMDIgOEQgNUMgMTggNjYgIC4uZi4uZi4uLi4uLi5cLmYKICAgIDRFMzA6IDhCIEMyIEU4
IEU3IEUzIDVCIEU4IEZBIEJCIEVCIDBGIDgwIEZCIDgyIDc0IEMzICAuLi4uLlsuLi4uLi4uLnQu
CiAgICA0RTQwOiA4MCBGQiAwMSA3NSAwQSBFOCBERiBCQiAzMiBGRiBCMCA0RiAzMiBFNCBDMyAz
MiAgLi4udS4uLi4yLi5PMi4uMgogICAgNEU1MDogQzAgQzMgQjAgNEYgQjQgMDMgQzMgRTggNEEg
Q0YgNzQgNDcgODAgRkYgMjAgNzQgIC4uLk8uLi4uSi50Ry4uIHQKICAgIDRFNjA6IDA4IDY2IEMx
IEU3IDEwIDY2IEMxIEVGIDEwIDgxIEY5IDAwIDAxIDc3IDMxIDBBICAuZi4uLmYuLi4uLi4udzEu
CiAgICA0RTcwOiBEQiA3NCAwNSA4MCBGQiA4MCA3NSAxMCAzMiBGNiBFOCBEMSBCRCAzQyAwNiA3
NCAgLnQuLi4udS4yLi4uLjwudAogICAgNEU4MDogMDIgQjYgMDEgRTggNTggQkMgRUIgMTMgODAg
RkIgMDEgNzUgMTMgMzIgRjYgRTggIC4uLi5YLi4uLi4udS4yLi4KICAgIDRFOTA6IEJDIEJEIDND
IDA2IDc0IDAyIEI2IDAxIEU4IEY0IEJCIEIwIDRGIDMyIEU0IEMzICAuLjwudC4uLi4uLi5PMi4u
CiAgICA0RUEwOiAzMiBDMCBDMyBCMCA0RiBCNCAwMyBDMyAwRSAwNyBCRiAxRSA5MyAyRSA4QiAw
RSAgMi4uLk8uLi4uLi4uLi4uLgogICAgNEVCMDogMUMgOTMgQjggNEYgMDAgQzMgMEEgREIgNzUg
MDIgRUIgMDMgMzIgQzAgQzMgQjAgIC4uLk8uLi4udS4uLjIuLi4KICAgIDRFQzA6IDRGIEI0IDAz
IEMzIDBBIERCIDc1IDA2IEI3IDA0IEIzIDEwIEVCIDI3IDgwIEZCICBPLi4uLi51Li4uLi4uJy4u
CiAgICA0RUQwOiAwMSA3NSAxNSA1MyBCMSAwMSAwQSBGRiA3NCAwMiBCMSAwMCBFOCAyQyBCRCBF
OCAgLnUuUy4uLi50Li4uLiwuLgogICAgNEVFMDogMTUgQkUgRTggRkUgQkEgNUIgRUIgMEQgODAg
RkIgMDIgNzUgMEQgRTggMkQgQkQgIC4uLi4uWy4uLi4udS4uLS4KICAgIDRFRjA6IDhBIEY4IEMw
IEU3IDAyIEIwIDRGIDMyIEU0IEMzIEI4IDRGIDAzIEMzIDgwIEZCICAuLi4uLi5PMi4uLk8uLi4u
CiAgICA0RjAwOiAwMSA3NSAwOSAzMyBDMCBFOCA5MyBCRCA3NCAyQiBFQiAyNCA4MCBGQiAwNyA3
NSAgLnUuMy4uLi50Ky4kLi4udQogICAgNEYxMDogMjQgMEEgRkYgNzUgMEUgQjAgODIgRTggOTUg
QjUgMEEgQzkgNzQgMTIgQjkgMDMgICQuLnUuLi4uLi4uLnQuLi4KICAgIDRGMjA6IDAzIEVCIDBE
IDBCIEM5IEIxIDAwIDc0IDAyIEIxIDAzIEIwIDgyIEU4IDdGIEI1ICAuLi4uLi4udC4uLi4uLi4u
CiAgICA0RjMwOiBCMCA0RiAzMiBFNCBDMyBCMCA0RiBCNCAwMyBDMyA4MCBFMyAwMSAwQSBEQiA3
NSAgLk8yLi4uTy4uLi4uLi4udQogICAgNEY0MDogMDUgQkIgMDIgMDEgRUIgMEMgMzMgQzAgNTMg
RTggQUIgQkQgRTggRkEgQzQgNUIgIC4uLi4uLjMuUy4uLi4uLlsKICAgIDRGNTA6IDc0IDA1IEIw
IDRGIDMyIEU0IEMzIEIwIDRGIEI0IDAzIEMzIDgwIEZDIDFEIDcyICB0Li5PMi4uLk8uLi4uLi5y
CiAgICA0RjYwOiAwMyBDRCA0MiBDMyAxRSAwNiA2NiA1MCA2NiA1MSA2NiA1MiA2NiA1MyA2NiA1
NSAgLi5CLi4uZlBmUWZSZlNmVQogICAgNEY3MDogNjYgNTYgNjYgNTcgMEUgMUYgNTAgMEYgQjYg
QzQgRDEgRTAgOEIgRjAgNTggMkUgIGZWZlcuLlAuLi4uLi4uWC4KICAgIDRGODA6IEZGIDk0IDNF
IDRGIDY2IDVGIDY2IDVFIDY2IDVEIDY2IDVCIDY2IDVBIDY2IDU5ICAuLj5PZl9mXmZdZltmWmZZ
CiAgICA0RjkwOiA2NiA1OCAwNyAxRiBDMyAwRSAxRiA1MCAwRiBCNiBDNCBEMSBFMCA4QiBGMCA1
OCAgZlguLi4uLlAuLi4uLi4uWAogICAgNEZBMDogMkUgRkYgOTQgM0UgNEYgQzMgNzggNEYgQzIg
ODkgREIgODkgRjggODkgNkQgNTAgIC4uLj5PLnhPLi4uLi4ubVAKICAgIDRGQjA6IEZCIDgwIDJE
IDgxIEEwIDgxIDIzIDgyIEIxIDgzIEI1IDgzIEJFIDg2IDhGIDg3ICAuLi0uLi4jLi4uLi4uLi4u
CiAgICA0RkMwOiAxMiA4OCA3OSA4OCAxNCA4QSAzOSA4QSBFMiA4QyA4NiA1MiAyOSA5MSAyQyA0
RiAgLi55Li4uOS4uLi5SKS4sTwogICAgNEZEMDogMkMgNEYgMkMgNEYgMkMgNEYgMkMgNEYgMkMg
NEYgRjkgOTEgMzkgNzYgOEQgNzcgICxPLE8sTyxPLE8uLjl2LncKICAgIDRGRTA6IDJFIDhFIDFF
IEQxIDAzIDgwIDI2IDg3IDA0IEYzIDUwIDhBIEUwIDgwIEU0IDdGICAuLi4uLi4mLi4uUC4uLi4u
CiAgICA0RkYwOiBFOCBDNiAwMSAzQiBEMyA3NSAwMiA1OCBDMyBCQSBDQyAwMyBFQyBCMiBCNCBC
MSAgLi4uOy51LlguLi4uLi4uLgogICAgNTAwMDogMzAgMjYgRjYgNDcgMDkgMDEgNzQgMEMgQjIg
RDQgQjEgMjAgQTggMDEgNzUgNDkgIDAmLkcuLnQuLi4uIC4udUkKICAgIDUwMTA6IEI1IDA5IEVC
IDA2IEE4IDAxIDc0IDQxIEI1IDBCIDUzIEU4IDY3IDQyIDBBIEZGICAuLi4uLi50QS4uUy5nQi4u
CiAgICA1MDIwOiA1QiA3NSAwQiA4MCAyNiA4OCAwNCBGMCAwOCAyRSA4OCAwNCBFQiAyQiA1OCA4
MCAgW3UuLiYuLi4uLi4uLitYLgogICAgNTAzMDogMEUgODcgMDQgMDggODAgMjYgMTAgMDQgQ0Yg
MDggMEUgMTAgMDQgODkgMTYgNjMgIC4uLi4uJi4uLi4uLi4uLmMKICAgIDUwNDA6IDA0IEM3IDA2
IDg1IDA0IDA4IDAwIEM2IDA2IDg0IDA0IDE4IEM3IDA2IDBDIDAxICAuLi4uLi4uLi4uLi4uLi4u
CiAgICA1MDUwOiA0NCA1RCA4QyAwRSAwRSAwMSBDRCA0MiBDMyA4MCAyNiAxMCAwNCBDRiAwOCAw
RSAgRF0uLi4uLkIuLiYuLi4uLgogICAgNTA2MDogMTAgMDQgNTggNTMgNTAgMEUgMUYgMzMgQzkg
OEEgQzggQjIgMDggQkUgNDAgMUMgIC4uWFNQLi4zLi4uLi4uQC4KICAgIDUwNzA6IEU4IEYwIENB
IEU4IDZDIEJCIDc0IDA1IEU4IDhFIEI4IEVCIDAwIEU4IDhFIEJDICAuLi4ubC50Li4uLi4uLi4u
CiAgICA1MDgwOiBCRSA0MCAxQyBFOCAyNyBCNyA1OCA1QiAwRiA4NCA2QyBGRiAyRSA4RSAxRSBE
MSAgLkAuLicuWFsuLmwuLi4uLgogICAgNTA5MDogMDMgMEUgMDcgRTggNEIgMkEgMEUgMUYgNTMg
NjYgQkIgNDAgMUMgMDAgMUMgRTggIC4uLi5LKi4uU2YuQC4uLi4KICAgIDUwQTA6IDIwIENEIEJF
IDAwIDFDIEIwIDIwIEU4IDZDIEI3IDVCIDJFIDhFIDFFIEQxIDAzICAgLi4uLi4gLmwuWy4uLi4u
CiAgICA1MEIwOiAwRSAwNyBFOCA1NCAyRiBFOCAyNCAwMCBFOCAyMyAzRSBFOCBEMSAwMSBFOCA4
RSAgLi4uVC8uJC4uIz4uLi4uLgogICAgNTBDMDogMDEgRTggQTkgM0YgMEUgMUYgQkUgMDAgMUMg
QjAgMTAgRTggNDggQjcgRTggMkYgIC4uLj8uLi4uLi4uLkguLi8KICAgIDUwRDA6IDJGIEU4IDI3
IDJGIEMzIDhCIEVDIEM2IDQ2IDFCIDAwIEMzIEU4IDJGIDAwIEU4ICAvLicvLi4uLkYuLi4uLy4u
CiAgICA1MEUwOiAwQSAwMCBFOCBCRCAwMCBFOCA1MiAwMCBFOCA5NCAwQiBDMyA1MyA4MyBDMyAw
QSAgLi4uLi4uUi4uLi4uUy4uLgogICAgNTBGMDogOEIgMTYgNjMgMDQgQjkgMTkgMDAgQjggMTEg
MzAgRUYgMzIgQzAgMjYgOEEgMjcgIC4uYy4uLi4uLjAuMi4mLicKICAgIDUxMDA6IEVGIDQzIEZF
IEMwIEUyIEY3IDVCIDgwIEMyIDA2IDMyIEMwIEVFIEMzIDUzIEJBICAuQy4uLi5bLi4uMi4uLlMu
CiAgICA1MTEwOiBDNCAwMyA4MyBDMyAwNSBCOSAwNCAwMCBCMCAwMSAyNiA4QSAyNyAzQyAwMSA3
NSAgLi4uLi4uLi4uLiYuJzwudQogICAgNTEyMDogMDMgODAgQ0MgMjAgRUYgNDMgRkUgQzAgRTIg
RjAgNUIgMjYgOEEgNDcgMDkgQkEgIC4uLiAuQy4uLi5bJi5HLi4KICAgIDUxMzA6IEMyIDAzIEVF
IEIyIEM0IEI4IDAwIDAzIEVGIEMzIDhCIEYzIDgzIEM2IDIzIEJBICAuLi4uLi4uLi4uLi4uLiMu
CiAgICA1MTQwOiBEQSAwMyAyNiBGNiA0NyAwOSAwMSA3NSAwMiBCMiBCQSBGNiAwNiA4OSAwNCAw
OCAgLi4mLkcuLnUuLi4uLi4uLgogICAgNTE1MDogNzQgMUQgODMgQzYgMTAgRUMgQjkgMDQgMDAg
QjQgMTAgQjIgQzAgODAgRkMgMTEgIHQuLi4uLi4uLi4uLi4uLi4KICAgIDUxNjA6IDc0IDA3IDhB
IEM0IEVFIDI2IDhBIDA0IEVFIDQ2IEZFIEM0IEUyIEVGIEMzIDUzICB0Li4uLiYuLi5GLi4uLi5T
CiAgICA1MTcwOiBFQyA4QiBERSBCOSAxNCAwMCAzMiBFNCBCMiBDMCA4QSBDNCBFRSBGRSBDNCAy
NiAgLi4uLi4uMi4uLi4uLi4uJgogICAgNTE4MDogOEEgMDcgRUUgNDMgRTIgRjQgOEEgQzQgRUUg
MzIgQzAgRUUgMUUgMDYgRTggODEgIC4uLkMuLi4uLjIuLi4uLi4KICAgIDUxOTA6IDJFIDBCIEVE
IDc0IDA5IDFGIDFFIEI5IDEwIDAwIEYzIEE0IDQ2IEE0IDA3IDFGICAuLi50Li4uLi4uLi5GLi4u
CiAgICA1MUEwOiA1QiBDMyA1MyA4MyBDMyAzNyBCOSAwOSAwMCAzMiBDMCBCQSBDRSAwMyAyNiA4
QSAgWy5TLi43Li4uMi4uLi4mLgogICAgNTFCMDogMjcgRUYgNDMgRkUgQzAgRTIgRjcgNUIgQzMg
QkIgNDQgNTQgMEUgMDcgOEIgRDMgICcuQy4uLi5bLi5EVC4uLi4KICAgIDUxQzA6IDBBIEU0IDdE
IDAxIEMzIEU4IDAxIDAwIEMzIDMzIEY2IDgwIEZDIDAzIDdGIDNDICAuLn0uLi4uLi4zLi4uLi48
CiAgICA1MUQwOiA0QSBGNiAwNiA4OSAwNCAxMCA3NSAyMCBBMCA4OCAwNCAyNCAwRiAzQyAwMiA3
RSAgSi4uLi4udSAuLi4kLjwufgogICAgNTFFMDogMjQgM0MgMDggNzQgMjAgM0MgMDYgNzQgMUMg
M0MgMDcgNzQgMTggQjAgNDAgRjYgICQ8LnQgPC50LjwudC4uQC4KICAgIDUxRjA6IEU0IDAzIEQ4
IDgxIEMzIEMwIDA0IEMzIEIwIDQwIEQwIEVDIEY2IEU0IDAzIEQ4ICAuLi4uLi4uLi5ALi4uLi4u
CiAgICA1MjAwOiA4MSBDMyBDMCAwNSBDMyBCMCA0MCBGNiBFNCAwMyBEOCBDMyA4MCBGQyAwNyA3
NSAgLi4uLi4uQC4uLi4uLi4udQogICAgNTIxMDogMTEgRjYgMDYgODkgMDQgMTAgNzUgMDUgODEg
QzMgQzAgMDEgQzMgODEgQzMgNDAgIC4uLi4uLnUuLi4uLi4uLkAKICAgIDUyMjA6IDA2IEMzIEJG
IEM2IDUxIEJFIEU3IDUxIDMzIEM5IEU4IDRFIDAwIEMzIDA0IDAwICAuLi4uUS4uUTMuLk4uLi4u
CiAgICA1MjMwOiAwMSAwNSA0MCAwMSAwNiA4MCAwMSAwRCA0MCAwMyAwRSA4MCAwMyAwRiA0MCAw
NCAgLi5ALi4uLi5ALi4uLi5ALgogICAgNTI0MDogMTAgODAgMDQgMTEgODAgMDYgMTIgQzAgMDYg
MTMgMDAgMDcgNjIgMDAgMDIgNTMgIC4uLi4uLi4uLi4uLmIuLlMKICAgIDUyNTA6IDhBIDFFIDQ5
IDA0IDgwIEZCIDA3IDdGIDEwIDMyIEZGIEQxIEUzIDJFIDhCIDg3ICAuLkkuLi4uLi4yLi4uLi4u
CiAgICA1MjYwOiAwMyA1MiBBMiA2NSAwNCA4OCAyNiA2NiAwNCA1QiBDMyAyQyAzMCAyOCAzMCAy
RCAgLlIuZS4uJmYuWy4sMCgwLQogICAgNTI3MDogMzAgMjkgMzAgMkEgMzAgMkUgMzAgMUUgM0Yg
MjkgMzAgMkUgMzggMjUgNzUgMDcgIDApMCowLjAuPykwLjgldS4KICAgIDUyODA6IDJFIDAzIDVE
IDAxIDMzIEY2IEMzIDgzIEM3IDAzIDNCIEZFIDc1IEVEIEMzIDFFICAuLl0uMy4uLi4uOy51Li4u
CiAgICA1MjkwOiAwNiAyRSA4RSAxRSBEMSAwMyBGNiAwNiA4NyAwNCA4MCA3NSA0OSA4MyAzRSA0
QyAgLi4uLi4uLi4uLi51SS4+TAogICAgNTJBMDogMDQgMDAgNzQgNDIgQTAgNDkgMDQgQjkgMDAg
MjAgMkUgOEIgM0UgRDcgMDMgMjYgIC4udEIuSS4uLiAuLj4uLiYKICAgIDUyQjA6IEY2IDQ3IDMz
IDAxIDc1IDBFIDI2IEY2IDQ3IDA5IDAxIDc1IDFCIDJFIDhCIDNFICAuRzMudS4mLkcuLnUuLi4+
CiAgICA1MkMwOiBENSAwMyBFQiAxNCAzQyAwNiA3RSAwQiAyRSA4QiAzRSBEMyAwMyAyNiA4QSA2
NyAgLi4uLjwufi4uLj4uLiYuZwogICAgNTJEMDogMzcgQjUgNDAgNjYgMzMgQzAgRUIgMDYgNjYg
QjggMjAgMDcgMjAgMDcgOEUgQzcgIDcuQGYzLi4uZi4gLiAuLi4KICAgIDUyRTA6IDY2IDMzIEZG
IEYzIDY2IEFCIDgwIDI2IDg3IDA0IDdGIDA3IDFGIEMzIDJFIDhFICBmMy4uZi4uJi4uLi4uLi4u
CiAgICA1MkYwOiAxRSBEMSAwMyA4MCBGQiAxMCA3NSAwMyBFOSA3QSAwMSA4MCBGQiAyMCA3NSAw
MyAgLi4uLi4udS4uei4uLiB1LgogICAgNTMwMDogRTkgOUIgMDEgODAgRkIgMzIgNzUgMUYgQkEg
Q0MgMDMgMEEgQzAgNzUgMDkgRUMgIC4uLi4uMnUuLi4uLi51Li4KICAgIDUzMTA6IDBDIDAyIEIy
IEMyIEVFIEU5IEYzIDAwIEZFIEM4IDBGIDg1IEYzIDAwIEVDIDI0ICAuLi4uLi4uLi4uLi4uLi4k
CiAgICA1MzIwOiBGRCBCMiBDMiBFRSBFOSBFNCAwMCA4MCBGQiAzNSA3NSAyOCAzQyA4MCA3NSAw
OCAgLi4uLi4uLi4uNXUoPC51LgogICAgNTMzMDogODAgMEUgODkgMDQgNDAgRTkgRDMgMDAgRjYg
MDYgODkgMDQgNDAgMEYgODQgRDAgIC4uLi5ALi4uLi4uLkAuLi4KICAgIDUzNDA6IDAwIDBBIEMw
IDBGIDg0IENBIDAwIEZFIEM4IDc1IDA2IEU4IEQ4IDA4IEU5IEJBICAuLi4uLi4uLi51Li4uLi4u
CiAgICA1MzUwOiAwMCBFOSBCRCAwMCA4MCBGQiAzMCA3NCAwMyBFOSA5NiAwMCA1MCBFOCAyNSAz
RiAgLi4uLi4uMHQuLi4uUC4lPwogICAgNTM2MDogOEEgRUYgQkEgQ0MgMDMgRUMgOEEgQzggNTgg
MEEgQzAgNzUgMzAgQjcgMDggRjYgIC4uLi4uLi4uWC4udTAuLi4KICAgIDUzNzA6IEMxIDAxIDc1
IDEyIDBBIEVEIDc1IDBCIEEwIDEwIDA0IDI0IDMwIDNDIDMwIDc1ICAuLnUuLi51Li4uLiQwPDB1
CiAgICA1MzgwOiAxMCBCNyAwMiBFOSA4QiAwMCBBMCAxMCAwNCAyNCAzMCAzQyAzMCA3NSAwMiBC
NyAgLi4uLi4uLi4uJDA8MHUuLgogICAgNTM5MDogMDIgODAgMjYgODkgMDQgNkYgODAgMEUgODkg
MDQgODAgRUIgMzYgM0MgMDEgNzUgIC4uJi4uby4uLi4uLjY8LnUKICAgIDUzQTA6IDQxIDgwIDI2
IDg5IDA0IDZGIEI3IDA5IEY2IEMxIDAxIDc1IDE1IEI3IDBCIEEwICBBLiYuLm8uLi4uLnUuLi4u
CiAgICA1M0IwOiAxMCAwNCAyNCAzMCAzQyAzMCA3NCAxQiBCNyAwOSAwQSBFRCA3NCAxNSBCNyAw
NSAgLi4kMDwwdC4uLi4udC4uLgogICAgNTNDMDogRUIgMTEgQTAgMTAgMDQgMjQgMzAgM0MgMzAg
NzUgMDggQjcgMEIgMEEgRUQgNzQgIC4uLi4uJDA8MHUuLi4uLnQKICAgIDUzRDA6IDAyIEI3IDAz
IDhBIDFFIDg4IDA0IDgwIEUzIEYwIDBBIERGIDg4IDFFIDg4IDA0ICAuLi4uLi4uLi4uLi4uLi4u
CiAgICA1M0UwOiBFQiAyOSAzQyAwMiA3NSAyQiA4MCAyNiA4OSAwNCA2RiA4MCAwRSA4OSAwNCAx
MCAgLik8LnUrLiYuLm8uLi4uLgogICAgNTNGMDogRUIgQjQgODAgRkIgMzEgNzUgMUIgMEEgQzAg
NzQgMEIgM0MgMDEgNzUgMEMgODAgIC4uLi4xdS4uLnQuPC51Li4KICAgIDU0MDA6IDBFIDg5IDA0
IDA4IEVCIDA1IDgwIDI2IDg5IDA0IEY3IDhCIEVDIEM2IDQ2IDFBICAuLi4uLi4uJi4uLi4uLkYu
CiAgICA1NDEwOiAxMiBDMyA4MCBGQiAzMyA3NSAxNiAzQyAwMCA3NCAwQiAzQyAwMSA3NSBFQyA4
MCAgLi4uLjN1LjwudC48LnUuLgogICAgNTQyMDogMjYgODkgMDQgRkQgRUIgRTUgODAgMEUgODkg
MDQgMDIgRUIgREUgODAgRkIgMzQgICYuLi4uLi4uLi4uLi4uLjQKICAgIDU0MzA6IDc1IDE3IDND
IDAwIDc1IDA3IDgwIDI2IDg3IDA0IEZFIEVCIENFIDNDIDAxIDc1ICB1LjwudS4uJi4uLi4uPC51
CiAgICA1NDQwOiAwNyA4MCAwRSA4NyAwNCAwMSBFQiBDMyBDMyA4MCBGQiAzNiA3NSAyNiBCQiAy
MCAgLi4uLi4uLi4uLi42dSYuIAogICAgNTQ1MDogRkYgM0MgMDEgNzQgMDkgQkIgMDAgREYgM0Mg
MDAgNzQgMDIgRUIgQUQgRTggMDIgIC48LnQuLi4uPC50Li4uLi4KICAgIDU0NjA6IDAwIEVCIEE4
IDlDIEZBIEJBIEM0IDAzIEIwIDAxIEVFIDQyIEVDIDIyIEM3IDBBICAuLi4uLi4uLi4uLkIuIi4u
CiAgICA1NDcwOiBDMyBFRSA5RCBDMyBDMyBCMyAwMyBCNyAwMCBCQSBDQyAwMyBFQyBBOCAwMSA3
NSAgLi4uLi4uLi4uLi4uLi4udQogICAgNTQ4MDogMDIgQjcgMDEgQTAgODggMDQgOEEgRTAgQjEg
MDQgRDIgRUMgMjUgMEYgMEYgOEIgIC4uLi4uLi4uLi4uLiUuLi4KICAgIDU0OTA6IEM4IDhCIEVD
IDg5IDVFIDBFIDg5IDRFIDE2IEM2IDQ2IDFBIDEyIEMzIDlDIEZBICAuLi4uXi4uTi4uRi4uLi4u
CiAgICA1NEEwOiBDNyAwNiAxNCAwMCAyNiA3QiA4QyAwRSAxNiAwMCA5RCBDMyAyOCAxOCAwOCAw
MCAgLi4uLiZ7Li4uLi4uKC4uLgogICAgNTRCMDogMDggMDkgMDMgMDAgMDIgNjMgMkQgMjcgMjgg
OTAgMkIgQTAgQkYgMUYgMDAgQzcgIC4uLi4uYy0nKC4rLi4uLi4KICAgIDU0QzA6IDA2IDA3IDAw
IDAwIDAwIDAwIDlDIDhFIDhGIDE0IDFGIDk2IEI5IEEzIEZGIDAwICAuLi4uLi4uLi4uLi4uLi4u
CiAgICA1NEQwOiAwMSAwMiAwMyAwNCAwNSAwNiAwNyAxMCAxMSAxMiAxMyAxNCAxNSAxNiAxNyAw
OCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNTRFMDogMDAgMEYgMDAgMDAgMDAgMDAgMDAgMDAgMTAg
MEUgMDAgRkYgMjggMTggMDggMDAgIC4uLi4uLi4uLi4uLiguLi4KICAgIDU0RjA6IDA4IDA5IDAz
IDAwIDAyIDYzIDJEIDI3IDI4IDkwIDJCIEEwIEJGIDFGIDAwIEM3ICAuLi4uLmMtJyguKy4uLi4u
CiAgICA1NTAwOiAwNiAwNyAwMCAwMCAwMCAwMCA5QyA4RSA4RiAxNCAxRiA5NiBCOSBBMyBGRiAw
MCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNTUxMDogMDEgMDIgMDMgMDQgMDUgMDYgMDcgMTAgMTEg
MTIgMTMgMTQgMTUgMTYgMTcgMDggIC4uLi4uLi4uLi4uLi4uLi4KICAgIDU1MjA6IDAwIDBGIDAw
IDAwIDAwIDAwIDAwIDAwIDEwIDBFIDAwIEZGIDUwIDE4IDA4IDAwICAuLi4uLi4uLi4uLi5QLi4u
CiAgICA1NTMwOiAxMCAwMSAwMyAwMCAwMiA2MyA1RiA0RiA1MCA4MiA1NSA4MSBCRiAxRiAwMCBD
NyAgLi4uLi5jX09QLlUuLi4uLgogICAgNTU0MDogMDYgMDcgMDAgMDAgMDAgMDAgOUMgOEUgOEYg
MjggMUYgOTYgQjkgQTMgRkYgMDAgIC4uLi4uLi4uLiguLi4uLi4KICAgIDU1NTA6IDAxIDAyIDAz
IDA0IDA1IDA2IDA3IDEwIDExIDEyIDEzIDE0IDE1IDE2IDE3IDA4ICAuLi4uLi4uLi4uLi4uLi4u
CiAgICA1NTYwOiAwMCAwRiAwMCAwMCAwMCAwMCAwMCAwMCAxMCAwRSAwMCBGRiA1MCAxOCAwOCAw
MCAgLi4uLi4uLi4uLi4uUC4uLgogICAgNTU3MDogMTAgMDEgMDMgMDAgMDIgNjMgNUYgNEYgNTAg
ODIgNTUgODEgQkYgMUYgMDAgQzcgIC4uLi4uY19PUC5VLi4uLi4KICAgIDU1ODA6IDA2IDA3IDAw
IDAwIDAwIDAwIDlDIDhFIDhGIDI4IDFGIDk2IEI5IEEzIEZGIDAwICAuLi4uLi4uLi4oLi4uLi4u
CiAgICA1NTkwOiAwMSAwMiAwMyAwNCAwNSAwNiAwNyAxMCAxMSAxMiAxMyAxNCAxNSAxNiAxNyAw
OCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNTVBMDogMDAgMEYgMDAgMDAgMDAgMDAgMDAgMDAgMTAg
MEUgMDAgRkYgMjggMTggMDggMDAgIC4uLi4uLi4uLi4uLiguLi4KICAgIDU1QjA6IDQwIDA5IDAz
IDAwIDAyIDYzIDJEIDI3IDI4IDkwIDJCIDgwIEJGIDFGIDAwIEMxICBALi4uLmMtJyguKy4uLi4u
CiAgICA1NUMwOiAwMCAwMCAwMCAwMCAwMCAwMCA5QyA4RSA4RiAxNCAwMCA5NiBCOSBBMiBGRiAw
MCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNTVEMDogMTMgMTUgMTcgMDIgMDQgMDYgMDcgMTAgMTEg
MTIgMTMgMTQgMTUgMTYgMTcgMDEgIC4uLi4uLi4uLi4uLi4uLi4KICAgIDU1RTA6IDAwIDAzIDAw
IDAwIDAwIDAwIDAwIDAwIDMwIDBGIDAwIEZGIDI4IDE4IDA4IDAwICAuLi4uLi4uLjAuLi4oLi4u
CiAgICA1NUYwOiA0MCAwOSAwMyAwMCAwMiA2MyAyRCAyNyAyOCA5MCAyQiA4MCBCRiAxRiAwMCBD
MSAgQC4uLi5jLScoLisuLi4uLgogICAgNTYwMDogMDAgMDAgMDAgMDAgMDAgMDAgOUMgOEUgOEYg
MTQgMDAgOTYgQjkgQTIgRkYgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAgIDU2MTA6IDEzIDE1IDE3
IDAyIDA0IDA2IDA3IDEwIDExIDEyIDEzIDE0IDE1IDE2IDE3IDAxICAuLi4uLi4uLi4uLi4uLi4u
CiAgICA1NjIwOiAwMCAwMyAwMCAwMCAwMCAwMCAwMCAwMCAzMCAwRiAwMCBGRiA1MCAxOCAwOCAw
MCAgLi4uLi4uLi4wLi4uUC4uLgogICAgNTYzMDogNDAgMDEgMDEgMDAgMDYgNjMgNUYgNEYgNTAg
ODIgNTQgODAgQkYgMUYgMDAgQzEgIEAuLi4uY19PUC5ULi4uLi4KICAgIDU2NDA6IDAwIDAwIDAw
IDAwIDAwIDAwIDlDIDhFIDhGIDI4IDAwIDk2IEI5IEMyIEZGIDAwICAuLi4uLi4uLi4oLi4uLi4u
CiAgICA1NjUwOiAxNyAxNyAxNyAxNyAxNyAxNyAxNyAxNyAxNyAxNyAxNyAxNyAxNyAxNyAxNyAw
MSAgLi4uLi4uLi4uLi4uLi4uLgogICAgNTY2MDogMDAgMDEgMDAgMDAgMDAgMDAgMDAgMDAgMDAg
MEQgMDAgRkYgNTAgMTggMEUgMDAgIC4uLi4uLi4uLi4uLlAuLi4KICAgIDU2NzA6IDEwIDAwIDAz
IDAwIDAzIEE2IDVGIDRGIDUwIDgyIDU1IDgxIEJGIDFGIDAwIDREICAuLi4uLi5fT1AuVS4uLi5N
CiAgICA1NjgwOiAwQiAwQyAwMCAwMCAwMCAwMCA4MyA4NSA1RCAyOCAwRCA2MyBCQSBBMyBGRiAw
MCAgLi4uLi4uLi5dKC5jLi4uLgogICAgNTY5MDogMDggMDggMDggMDggMDggMDggMDggMTAgMTgg
MTggMTggMTggMTggMTggMTggMEUgIC4uLi4uLi4uLi4uLi4uLi4KICAgIDU2QTA6IDAwIDBGIDA4
IDAwIDAwIDAwIDAwIDAwIDEwIDBBIDAwIEZGIDUwIDFEIDEwIDAwICAuLi4uLi4uLi4uLi5QLi4u
CiAgICA1NkIwOiBBMCAwMSAwRiAwMCAwQSBFMyA1RiA0RiA1MCA4MiA1NCA4MCAwQiAzRSAwMCA0
MCAgLi4uLi4uX09QLlQuLj4uQAogICAgNTZDMDogMDAgMDAgMDAgMDAgMDAgMDAgRUEgOEMgREYg
NTAgMDAgRTcgMDQgRTMgRkYgMDAgIC4uLi4uLi4uLlAuLi4uLi4KICAgIDU2RDA6IDAxIDAyIDAz
IDA0IDA1IDA2IDA3IDA4IDA5IDBBIDBCIDBDIDBEIDBFIDBGIDAxICAuLi4uLi4uLi4uLi4uLi4u
CiAgICA1NkUwOiAwMCAwRiAwMCAxMCAwMCAwMCAwMCAwMCA0MCAwNSAwRiBGRiAwMCAwNSAxMSAx
QyAgLi4uLi4uLi5ALi4uLi4uLgogICAgNTZGMDogMDggMEIgMTQgMjggMEUgMTggMkQgMzIgMjAg
MjQgMzggM0YgMDAgMDUgMDggMEIgIC4uLiguLi0yICQ4Py4uLi4KICAgIDU3MDA6IDBFIDExIDE0
IDE4IDFDIDIwIDI0IDI4IDJEIDMyIDM4IDNGIDA3IDBDIDEwIDE1ICAuLi4uLiAkKC0yOD8uLi4u
CiAgICA1NzEwOiAxQSAxOCAxNiAxNSAxMyAxQyAyNSAyRiAzOCAzMyAyRSAyQSAyNSAyNyAyOSAy
QSAgLi4uLi4uJS84My4qJScpKgogICAgNTcyMDogMkMgMjMgMTkgMTAgMjMgMjUgMjcgMkEgMkMg
MkIgMkEgMjkgMjkgMkQgMzIgMzcgICwjLi4jJScqLCsqKSktMjcKICAgIDU3MzA6IDNCIDM5IDM3
IDM0IDMyIDMzIDM0IDM1IDM1IDMxIDJDIDI3IDJGIDMwIDMyIDMzICA7OTc0MjM0NTUxLCcvMDIz
CiAgICA1NzQwOiAzNCAzNCAzMyAzMyAzMiAzNSAzOCAzQSAzRCAzQyAzQSAzOSAzOCAzOCAzOSAz
OSAgNDQzMzI1ODo9PDo5ODg5OQogICAgNTc1MDogM0EgMzcgMzQgMzEgMDMgMDUgMDcgMDkgMEIg
MEIgMEEgMDkgMDggMEQgMTEgMTUgIDo3NDEuLi4uLi4uLi4uLi4KICAgIDU3NjA6IDE5IDE3IDE1
IDEzIDExIDExIDEyIDEzIDE0IDBGIDBCIDA3IDEwIDEwIDEyIDEzICAuLi4uLi4uLi4uLi4uLi4u
CiAgICA1NzcwOiAxNCAxMyAxMyAxMyAxMiAxNCAxNiAxOCAxQSAxOSAxOCAxNyAxNiAxNyAxNyAx
NyAgLi4uLi4uLi4uLi4uLi4uLgogICAgNTc4MDogMTggMTUgMTQgMTEgMTUgMTUgMTYgMTcgMTcg
MTcgMTcgMTcgMTYgMTggMTkgMUEgIC4uLi4uLi4uLi4uLi4uLi4KICAgIDU3OTA6IDFCIDFCIDFB
IDE5IDE5IDE5IDE5IDE5IDFBIDE4IDE3IDE2IDAyIDAzIDA0IDA1ICAuLi4uLi4uLi4uLi4uLi4u
CiAgICA1N0EwOiAwNyAwNiAwNiAwNSAwNSAwNyAwQSAwQyAwRSAwRCAwQyAwQiAwOSAwQSAwQSAw
QiAgLi4uLi4uLi4uLi4uLi4uLgogICAgNTdCMDogMEIgMDkgMDYgMDQgMDkgMDkgMEEgMEIgMEIg
MEIgMEIgMEIgMEEgMEMgMEQgMEUgIC4uLi4uLi4uLi4uLi4uLi4KICAgIDU3QzA6IDBGIDBGIDBF
IDBEIDBEIDBEIDBEIDBEIDBFIDBDIDBCIDBBIDBDIDBDIDBDIDBEICAuLi4uLi4uLi4uLi4uLi4u
CiAgICA1N0QwOiAwRCAwRCAwRCAwRCAwQyAwRCAwRSAwRiAwRiAwRiAwRiAwRSAwRSAwRSAwRSAw
RSAgLi4uLi4uLi4uLi4uLi4uLgogICAgNTdFMDogMEUgMEUgMEQgMEMgMDAgMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMjggMTggMDggMDAgIC4uLi4uLi4uLi4uLiguLi4KICAgIDU3RjA6IDIwIDA5IDBG
IDAwIDA2IDYzIDJEIDI3IDI4IDkwIDJCIDgwIEJGIDFGIDAwIEMwICAgLi4uLmMtJyguKy4uLi4u
CiAgICA1ODAwOiAwMCAwMCAwMCAwMCAwMCAwMCA5QyA4RSA4RiAxNCAwMCA5NiBCOSBFMyBGRiAw
MCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNTgxMDogMDEgMDIgMDMgMDQgMDUgMDYgMDcgMTAgMTEg
MTIgMTMgMTQgMTUgMTYgMTcgMDEgIC4uLi4uLi4uLi4uLi4uLi4KICAgIDU4MjA6IDAwIDBGIDAw
IDAwIDAwIDAwIDAwIDAwIDAwIDA1IDBGIEZGIDUwIDE4IDA4IDAwICAuLi4uLi4uLi4uLi5QLi4u
CiAgICA1ODMwOiA0MCAwMSAwRiAwMCAwNiA2MyA1RiA0RiA1MCA4MiA1NCA4MCBCRiAxRiAwMCBD
MCAgQC4uLi5jX09QLlQuLi4uLgogICAgNTg0MDogMDAgMDAgMDAgMDAgMDAgMDAgOUMgOEUgOEYg
MjggMDAgOTYgQjkgRTMgRkYgMDAgIC4uLi4uLi4uLiguLi4uLi4KICAgIDU4NTA6IDAxIDAyIDAz
IDA0IDA1IDA2IDA3IDEwIDExIDEyIDEzIDE0IDE1IDE2IDE3IDAxICAuLi4uLi4uLi4uLi4uLi4u
CiAgICA1ODYwOiAwMCAwRiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwNSAwRiBGRiAwMCAwNSAxMSAx
QyAgLi4uLi4uLi4uLi4uLi4uLgogICAgNTg3MDogMDggMEIgMjUgMjggMDIgMDcgMUIgMjAgMEYg
MTQgMjggMkMgMEMgMTEgMjUgMkEgIC4uJSguLi4gLi4oLC4uJSoKICAgIDU4ODA6IDE0IDFFIDMy
IDM2IDBGIDEzIDI3IDJDIDFCIDIwIDM0IDM5IDA2IDBCIDFGIDI0ICAuLjI2Li4nLC4gNDkuLi4k
CiAgICA1ODkwOiAxMyAxOCAyQyAzMCAwOSAwRCAyMSAyNiAxNSAxQSAyRSAzMyAxMyAxNyAyQiAz
MCAgLi4sMC4uISYuLi4zLi4rMAogICAgNThBMDogMUYgMjQgMzggM0QgMEUgMTggMkQgMzIgMjAg
MjQgMzggM0YgMDAgMDUgMTEgMUMgIC4kOD0uLi0yICQ4Py4uLi4KICAgIDU4QjA6IDA4IDBCIDE0
IDE4IDAwIDA1IDExIDFDIDA4IDBCIDE0IDE4IDBFIDE4IDJEIDMyICAuLi4uLi4uLi4uLi4uLi0y
CiAgICA1OEMwOiAyMCAyNCAzOCAzRiAwRSAxOCAyRCAzMiAyMCAyNCAzOCAzRiAwMCAwNSAxMSAx
QyAgICQ4Py4uLTIgJDg/Li4uLgogICAgNThEMDogMDggMEIgMTQgMTggMDAgMDUgMTEgMUMgMDgg
MEIgMTQgMTggMEUgMTggMkQgMzIgIC4uLi4uLi4uLi4uLi4uLTIKICAgIDU4RTA6IDIwIDI0IDM4
IDNGIDBFIDE4IDJEIDMyIDIwIDI0IDM4IDNGIDUwIDE4IDBFIDAwICAgJDg/Li4tMiAkOD9QLi4u
CiAgICA1OEYwOiA4MCAwMSAwRiAwMCAwNiBBMiA1RiA0RiA1MCA4MiA1NCA4MCBCRiAxRiAwMCA0
MCAgLi4uLi4uX09QLlQuLi4uQAogICAgNTkwMDogMDAgMDAgMDAgMDAgMDAgMDAgODMgODUgNUQg
MjggMEYgNjMgQkEgRTMgRkYgMDAgIC4uLi4uLi4uXSguYy4uLi4KICAgIDU5MTA6IDA4IDAwIDAw
IDE4IDE4IDAwIDAwIDAwIDA4IDAwIDAwIDAwIDE4IDAwIDAwIDBCICAuLi4uLi4uLi4uLi4uLi4u
CiAgICA1OTIwOiAwMCAwNSAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwNSAwNSBGRiA1MCAxOCAwRSAw
MCAgLi4uLi4uLi4uLi4uUC4uLgogICAgNTkzMDogODAgMDEgMEYgMDAgMDYgQTMgNUYgNEYgNTAg
ODIgNTQgODAgQkYgMUYgMDAgNDAgIC4uLi4uLl9PUC5ULi4uLkAKICAgIDU5NDA6IDAwIDAwIDAw
IDAwIDAwIDAwIDgzIDg1IDVEIDI4IDBGIDYzIEJBIEUzIEZGIDAwICAuLi4uLi4uLl0oLmMuLi4u
CiAgICA1OTUwOiAwMSAwMiAwMyAwNCAwNSAxNCAwNyAzOCAzOSAzQSAzQiAzQyAzRCAzRSAzRiAw
MSAgLi4uLi4uLjg5Ojs8PT4/LgogICAgNTk2MDogMDAgMEYgMDAgMDAgMDAgMDAgMDAgMDAgMDAg
MDUgMEYgRkYgMjggMTggMEUgMDAgIC4uLi4uLi4uLi4uLiguLi4KICAgIDU5NzA6IDA4IDA5IDAz
IDAwIDAyIEEzIDJEIDI3IDI4IDkwIDJCIEEwIEJGIDFGIDAwIDREICAuLi4uLi4tJyguKy4uLi5N
CiAgICA1OTgwOiAwQiAwQyAwMCAwMCAwMCAwMCA4MyA4NSA1RCAxNCAxRiA2MyBCQSBBMyBGRiAw
MCAgLi4uLi4uLi5dLi5jLi4uLgogICAgNTk5MDogMDEgMDIgMDMgMDQgMDUgMTQgMDcgMzggMzkg
M0EgM0IgM0MgM0QgM0UgM0YgMDggIC4uLi4uLi44OTo7PD0+Py4KICAgIDU5QTA6IDAwIDBGIDAw
IDAwIDAwIDAwIDAwIDAwIDEwIDBFIDAwIEZGIDI4IDE4IDBFIDAwICAuLi4uLi4uLi4uLi4oLi4u
CiAgICA1OUIwOiAwOCAwOSAwMyAwMCAwMiBBMyAyRCAyNyAyOCA5MCAyQiBBMCBCRiAxRiAwMCA0
RCAgLi4uLi4uLScoLisuLi4uTQogICAgNTlDMDogMEIgMEMgMDAgMDAgMDAgMDAgODMgODUgNUQg
MTQgMUYgNjMgQkEgQTMgRkYgMDAgIC4uLi4uLi4uXS4uYy4uLi4KICAgIDU5RDA6IDAxIDAyIDAz
IDA0IDA1IDE0IDA3IDM4IDM5IDNBIDNCIDNDIDNEIDNFIDNGIDA4ICAuLi4uLi4uODk6Ozw9Pj8u
CiAgICA1OUUwOiAwMCAwRiAwMCAwMCAwMCAwMCAwMCAwMCAxMCAwRSAwMCBGRiA1MCAxOCAwRSAw
MCAgLi4uLi4uLi4uLi4uUC4uLgogICAgNTlGMDogMTAgMDEgMDMgMDAgMDIgQTMgNUYgNEYgNTAg
ODIgNTUgODEgQkYgMUYgMDAgNEQgIC4uLi4uLl9PUC5VLi4uLk0KICAgIDVBMDA6IDBCIDBDIDAw
IDAwIDAwIDAwIDgzIDg1IDVEIDI4IDFGIDYzIEJBIEEzIEZGIDAwICAuLi4uLi4uLl0oLmMuLi4u
CiAgICA1QTEwOiAwMSAwMiAwMyAwNCAwNSAxNCAwNyAzOCAzOSAzQSAzQiAzQyAzRCAzRSAzRiAw
OCAgLi4uLi4uLjg5Ojs8PT4/LgogICAgNUEyMDogMDAgMEYgMDAgMDAgMDAgMDAgMDAgMDAgMTAg
MEUgMDAgRkYgNTAgMTggMEUgMDAgIC4uLi4uLi4uLi4uLlAuLi4KICAgIDVBMzA6IDEwIDAxIDAz
IDAwIDAyIEEzIDVGIDRGIDUwIDgyIDU1IDgxIEJGIDFGIDAwIDREICAuLi4uLi5fT1AuVS4uLi5N
CiAgICA1QTQwOiAwQiAwQyAwMCAwMCAwMCAwMCA4MyA4NSA1RCAyOCAxRiA2MyBCQSBBMyBGRiAw
MCAgLi4uLi4uLi5dKC5jLi4uLgogICAgNUE1MDogMDEgMDIgMDMgMDQgMDUgMTQgMDcgMzggMzkg
M0EgM0IgM0MgM0QgM0UgM0YgMDggIC4uLi4uLi44OTo7PD0+Py4KICAgIDVBNjA6IDAwIDBGIDAw
IDAwIDAwIDAwIDAwIDAwIDEwIDBFIDAwIEZGIDI4IDE4IDEwIDAwICAuLi4uLi4uLi4uLi4oLi4u
CiAgICA1QTcwOiAwOCAwOCAwMyAwMCAwMiA2NyAyRCAyNyAyOCA5MCAyQiBBMCBCRiAxRiAwMCA0
RiAgLi4uLi5nLScoLisuLi4uTwogICAgNUE4MDogMEQgMEUgMDAgMDAgMDAgMDAgOUMgOEUgOEYg
MTQgMUYgOTYgQjkgQTMgRkYgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAgIDVBOTA6IDAxIDAyIDAz
IDA0IDA1IDE0IDA3IDM4IDM5IDNBIDNCIDNDIDNEIDNFIDNGIDBDICAuLi4uLi4uODk6Ozw9Pj8u
CiAgICA1QUEwOiAwMCAwRiAwOCAwMCAwMCAwMCAwMCAwMCAxMCAwRSAwMCBGRiA1MCAxOCAxMCAw
MCAgLi4uLi4uLi4uLi4uUC4uLgogICAgNUFCMDogMTAgMDAgMDMgMDAgMDIgNjcgNUYgNEYgNTAg
ODIgNTUgODEgQkYgMUYgMDAgNEYgIC4uLi4uZ19PUC5VLi4uLk8KICAgIDVBQzA6IDBEIDBFIDAw
IDAwIDAwIDAwIDlDIDhFIDhGIDI4IDFGIDk2IEI5IEEzIEZGIDAwICAuLi4uLi4uLi4oLi4uLi4u
CiAgICA1QUQwOiAwMSAwMiAwMyAwNCAwNSAxNCAwNyAzOCAzOSAzQSAzQiAzQyAzRCAzRSAzRiAw
QyAgLi4uLi4uLjg5Ojs8PT4/LgogICAgNUFFMDogMDAgMEYgMDggMDAgMDAgMDAgMDAgMDAgMTAg
MEUgMDAgRkYgNTAgMTggMTAgMDAgIC4uLi4uLi4uLi4uLlAuLi4KICAgIDVBRjA6IDEwIDAwIDAz
IDAwIDAyIDY2IDVGIDRGIDUwIDgyIDU1IDgxIEJGIDFGIDAwIDRGICAuLi4uLmZfT1AuVS4uLi5P
CiAgICA1QjAwOiAwRCAwRSAwMCAwMCAwMCAwMCA5QyA4RSA4RiAyOCAwRiA5NiBCOSBBMyBGRiAw
MCAgLi4uLi4uLi4uKC4uLi4uLgogICAgNUIxMDogMDggMDggMDggMDggMDggMDggMDggMTAgMTgg
MTggMTggMTggMTggMTggMTggMEUgIC4uLi4uLi4uLi4uLi4uLi4KICAgIDVCMjA6IDAwIDBGIDA4
IDAwIDAwIDAwIDAwIDAwIDEwIDBBIDAwIEZGIDUwIDFEIDEwIDAwICAuLi4uLi4uLi4uLi5QLi4u
CiAgICA1QjMwOiBBMCAwMSAwRiAwMCAwNiBFMyA1RiA0RiA1MCA4MiA1NCA4MCAwQiAzRSAwMCA0
MCAgLi4uLi4uX09QLlQuLj4uQAogICAgNUI0MDogMDAgMDAgMDAgMDAgMDAgMDAgRUEgOEMgREYg
MjggMDAgRTcgMDQgQzMgRkYgMDAgIC4uLi4uLi4uLiguLi4uLi4KICAgIDVCNTA6IDNGIDNGIDNG
IDNGIDNGIDNGIDNGIDNGIDNGIDNGIDNGIDNGIDNGIDNGIDNGIDAxICA/Pz8/Pz8/Pz8/Pz8/Pz8u
CiAgICA1QjYwOiAwMCAwRiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwNSAwMSBGRiA1MCAxRCAxMCAw
MCAgLi4uLi4uLi4uLi4uUC4uLgogICAgNUI3MDogQTAgMDEgMEYgMDAgMDYgRTMgNUYgNEYgNTAg
ODIgNTQgODAgMEIgM0UgMDAgNDAgIC4uLi4uLl9PUC5ULi4+LkAKICAgIDVCODA6IDAwIDAwIDAw
IDAwIDAwIDAwIEVBIDhDIERGIDI4IDAwIEU3IDA0IEUzIEZGIDAwICAuLi4uLi4uLi4oLi4uLi4u
CiAgICA1QjkwOiAwMSAwMiAwMyAwNCAwNSAxNCAwNyAzOCAzOSAzQSAzQiAzQyAzRCAzRSAzRiAw
MSAgLi4uLi4uLjg5Ojs8PT4/LgogICAgNUJBMDogMDAgMEYgMDAgMDAgMDAgMDAgMDAgMDAgMDAg
MDUgMEYgRkYgMjggMTggMDggMDAgIC4uLi4uLi4uLi4uLiguLi4KICAgIDVCQjA6IDIwIDAxIDBG
IDAwIDBFIDYzIDVGIDRGIDUwIDgyIDU0IDgwIEJGIDFGIDAwIDQxICAgLi4uLmNfT1AuVC4uLi5B
CiAgICA1QkMwOiAwMCAwMCAwMCAwMCAwMCAwMCA5QyA4RSA4RiAyOCA0MCA5NiBCOSBBMyBGRiAw
MCAgLi4uLi4uLi4uKEAuLi4uLgogICAgNUJEMDogMDEgMDIgMDMgMDQgMDUgMDYgMDcgMDggMDkg
MEEgMEIgMEMgMEQgMEUgMEYgNDEgIC4uLi4uLi4uLi4uLi4uLkEKICAgIDVCRTA6IDAwIDBGIDAw
IDAwIDAwIDAwIDAwIDAwIDQwIDA1IDBGIEZGIDQ0IDU0IDAwIEMwICAuLi4uLi4uLkAuLi5EVC4u
CiAgICA1QkYwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCBBNCA1QiAwMCBD
MCAgLi4uLi4uLi4uLi4uLlsuLgogICAgNUMwMDogMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMUEgMDAgRjcgOTIgIC4uLi4uLi4uLi4uLi4uLi4KICAgIDVDMTA6IDAwIEMwIDAw
IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4u
CiAgICA1QzIwOiAwMCAwMCAwMCAwMCAwMCAwMCAxRSBFOCAxMCAwMCAyRSA4RSAxRSBEMSAwMyBF
OCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNUMzMDogQjMgMzYgRTggOEEgMzYgRTggNjggMUEgMUYg
QzMgMkUgOEUgMUUgRDEgMDMgQzcgIC42Li42LmguLi4uLi4uLi4KICAgIDVDNDA6IDA2IDg3IDA0
IDYwIEY5IEM2IDA2IDhBIDA0IDBCIEEwIDg5IDA0IDBDIDExIDI0ICAuLi5gLi4uLi4uLi4uLi4k
CiAgICA1QzUwOiAxNyBBMiA4OSAwNCBCNCAwMSBFOCA2NSAxRSBBMCA4OSAwNCA4MCAyNiAxMCAw
NCAgLi4uLi4uLmUuLi4uLiYuLgogICAgNUM2MDogQ0YgODAgMEUgMTAgMDQgMjAgQzcgMDYgNjMg
MDQgRDQgMDMgQjggMDMgMDAgRTggIC4uLi4uIC4uYy4uLi4uLi4KICAgIDVDNzA6IDIzIEYzIEMz
IDFFIDJFIDhFIDFFIEQxIDAzIDBFIDA3IEVCIDAwIDFGIEMzIEY2ICAjLi4uLi4uLi4uLi4uLi4u
CiAgICA1QzgwOiAwNiA4OSAwNCAwOCA3NCAwMSBDMyA1MyBCQSBDOCAwMyBFQyBCMCBGRiBCMiBD
NiAgLi4uLnQuLlMuLi4uLi4uLgogICAgNUM5MDogRUUgQjIgQzggODAgM0UgNjMgMDQgQjQgNzUg
MkYgQkUgRjggNUMgQjkgNDAgMDAgIC4uLi4+Yy4udS8uLlwuQC4KICAgIDVDQTA6IDMzIERCIDlD
IEZBIDhBIEMzIEVFIDhCIEZCIEMxIEVGIDAzIDgzIEU3IDAzIDAzICAzLi4uLi4uLi4uLi4uLi4u
CiAgICA1Q0IwOiBGRSAyRSA4QSAwNSA0MiBFRSAyRSA4QSA0NSAwNCBFRSAyRSA4QSA0NSAwOCBF
RSAgLi4uLkIuLi5FLi4uLkUuLgogICAgNUNDMDogRkUgQzMgNEEgRTIgREYgOUQgRTkgODUgMDAg
MjYgOEEgNDcgMkIgRjYgMDYgODkgIC4uSi4uLi4uLiYuRysuLi4KICAgIDVDRDA6IDA0IDA2IDc0
IDMxIEI5IEY4IDAwIEJGIDg0IDU2IDNDIDA4IDc0IDExIEI5IDQwICAuLnQxLi4uLi5WPC50Li5A
CiAgICA1Q0UwOiAwMCBCRiAwNCA1OCAzQyAzOCA3NCAwNyAzQyAzRiA3NCAwMyBCRiA0NCA1OCAz
MyAgLi4uWDw4dC48P3QuLkRYMwogICAgNUNGMDogREIgOUMgRkEgOEEgQzMgRUUgMkUgOEEgMDEg
NDIgRUUgRUUgRUUgRkUgQzMgNEEgIC4uLi4uLi4uLkIuLi4uLkoKICAgIDVEMDA6IEUyIEYxIDlE
IEVCIDQ5IDNDIDA4IDc0IDI1IDNDIDM4IDc0IDJFIDNDIDNGIDc0ICAuLi4uSTwudCU8OHQuPD90
CiAgICA1RDEwOiAyQSBCOSAwOCAwMCAzMyBEQiA1MSBFOCBERSBEMCBCOSAwOCAwMCBGNyBDMyAx
MCAgKi4uLjMuUS4uLi4uLi4uLgogICAgNUQyMDogMDAgNzQgMDMgODMgQzcgMTggRTggNjcgMDAg
NTkgRTIgRUEgRUIgMjAgRTggQzcgIC50Li4uLi5nLlkuLi4gLi4KICAgIDVEMzA6IEQwIEI5IDEw
IDAwIDMzIERCIEU4IDU3IDAwIEVCIDEzIEI5IDQwIDAwIDMzIERCICAuLi4uMy4uVy4uLi5ALjMu
CiAgICA1RDQwOiA1MSBFOCAyOCAwMCA4QSBDMyBFOCA3QSAyRiBGRSBDMyA1OSBFMiBGMiA1QiBD
MyAgUS4oLi4uLnovLi5ZLi5bLgogICAgNUQ1MDogMDAgMkEgMDAgMkEgMDAgMkEgMDAgMkEgMTUg
M0YgMTUgM0YgMTUgM0YgMTUgM0YgIC4qLiouKi4qLj8uPy4/Lj8KICAgIDVENjA6IDAwIDJBIDAw
IDNGIDAwIDJBIDAwIDNGIDAwIDJBIDAwIDNGIDhCIEZCIEMxIEVGICAuKi4/LiouPy4qLj8uLi4u
CiAgICA1RDcwOiAwMiA4MyBFNyAwRiAyRSA4QSBCNSBFOCA1QyA4QiBGQiBEMSBFRiA4MyBFNyAw
RiAgLi4uLi4uLi5cLi4uLi4uLgogICAgNUQ4MDogMkUgOEEgQUQgRTggNUMgOEIgRkIgODMgRTcg
MEYgMkUgOEEgOEQgRTggNUMgQzMgIC4uLi5cLi4uLi4uLi4uXC4KICAgIDVEOTA6IDlDIDhBIEMz
IEZBIEVFIDJFIDhBIDA1IDQyIEVFIDQ3IDJFIDhBIDA1IEVFIDQ3ICAuLi4uLi4uLkIuRy4uLi5H
CiAgICA1REEwOiAyRSA4QSAwNSBFRSA0NyBGRSBDMyA0QSBFMiBFNyA5RCBDMyAwMCAwMCAwMCAw
MCAgLi4uLkcuLkouLi4uLi4uLgogICAgNURCMDogMDAgMDAgMDAgMDAgN0UgODEgQTUgODEgQkQg
OTkgODEgN0UgN0MgRkUgRDYgQkEgIC4uLi5+Li4uLi4ufnwuLi4KICAgIDVEQzA6IEM2IEZFIDdD
IDAwIEM2IEVFIEZFIEZFIDdDIDM4IDEwIDAwIDEwIDM4IDdDIEZFICAuLnwuLi4uLnw4Li4uOHwu
CiAgICA1REQwOiA3QyAzOCAxMCAwMCAxMCAzOCAxMCBFRSBFRSAxMCAzOCAwMCAzOCA3QyBGRSBG
RSAgfDguLi44Li4uLjguOHwuLgogICAgNURFMDogNkMgMTAgMzggMDAgMDAgMTggM0MgN0UgM0Mg
MTggMDAgMDAgRkYgRTcgQzMgODEgIGwuOC4uLjx+PC4uLi4uLi4KICAgIDVERjA6IEMzIEU3IEZG
IEZGIDAwIDE4IDNDIDY2IDY2IDNDIDE4IDAwIEZGIEU3IEMzIDk5ICAuLi4uLi48ZmY8Li4uLi4u
CiAgICA1RTAwOiA5OSBDMyBFNyBGRiAxRSAwRSAxRSAzNiA3OCBDQyBDQyA3OCA3RSBDMyBDMyA3
RSAgLi4uLi4uLjZ4Li54fi4ufgogICAgNUUxMDogMTggN0UgMTggMTggMUUgMUEgMUUgMTggMTgg
NzAgRjAgNjAgM0UgM0UgMzYgMzYgIC5+Li4uLi4uLnAuYD4+NjYKICAgIDVFMjA6IEY2IDY2IDFF
IDBDIERCIDNDIDY2IEU3IDY2IDNDIERCIDAwIDgwIEMwIEYwIEY4ICAuZi4uLjxmLmY8Li4uLi4u
CiAgICA1RTMwOiBGMCBDMCA4MCAwMCAwMiAwNiAxRSAzRSAxRSAwNiAwMiAwMCAxOCAzQyA3RSAx
OCAgLi4uLi4uLj4uLi4uLjx+LgogICAgNUU0MDogN0UgM0MgMTggMDAgNjYgNjYgNjYgNjYgNjYg
MDAgNjYgMDAgN0YgREIgN0IgM0IgIH48Li5mZmZmZi5mLi4uezsKICAgIDVFNTA6IDFCIDFCIDFC
IDAwIDNDIDY2IDM4IDZDIDZDIDM4IENDIDc4IDAwIDAwIDAwIDAwICAuLi4uPGY4bGw4LnguLi4u
CiAgICA1RTYwOiBGRSBGRSBGRSAwMCAxOCAzQyA3RSAxOCA3RSAzQyAxOCA3RSAxOCAzQyA3RSAx
OCAgLi4uLi48fi5+PC5+Ljx+LgogICAgNUU3MDogMTggMTggMTggMDAgMTggMTggMTggMTggN0Ug
M0MgMTggMDAgMDAgMTggMUMgRkUgIC4uLi4uLi4ufjwuLi4uLi4KICAgIDVFODA6IDFDIDE4IDAw
IDAwIDAwIDMwIDcwIEZFIDcwIDMwIDAwIDAwIDAwIDAwIEMwIEMwICAuLi4uLjBwLnAwLi4uLi4u
CiAgICA1RTkwOiBDMCBGRSAwMCAwMCAwMCAyNCA2NiBGRiA2NiAyNCAwMCAwMCAwMCAxMCAzOCA3
QyAgLi4uLi4kZi5mJC4uLi44fAogICAgNUVBMDogN0MgRkUgMDAgMDAgMDAgRkUgN0MgN0MgMzgg
MTAgMDAgMDAgMDAgMDAgMDAgMDAgIHwuLi4uLnx8OC4uLi4uLi4KICAgIDVFQjA6IDAwIDAwIDAw
IDAwIDE4IDNDIDNDIDE4IDE4IDAwIDE4IDAwIDZDIDZDIDZDIDAwICAuLi4uLjw8Li4uLi5sbGwu
CiAgICA1RUMwOiAwMCAwMCAwMCAwMCA2QyA2QyBGRSA2QyBGRSA2QyA2QyAwMCAxOCA3RSBDMCA3
QyAgLi4uLmxsLmwubGwuLn4ufAogICAgNUVEMDogMDYgRkMgMTggMDAgMDAgQzYgMEMgMTggMzAg
NjAgQzYgMDAgMzggNkMgMzggNzYgIC4uLi4uLi4uMGAuLjhsOHYKICAgIDVFRTA6IENDIENDIDc2
IDAwIDE4IDE4IDMwIDAwIDAwIDAwIDAwIDAwIDE4IDMwIDYwIDYwICAuLnYuLi4wLi4uLi4uMGBg
CiAgICA1RUYwOiA2MCAzMCAxOCAwMCA2MCAzMCAxOCAxOCAxOCAzMCA2MCAwMCAwMCBFRSA3QyBG
RSAgYDAuLmAwLi4uMGAuLi58LgogICAgNUYwMDogN0MgRUUgMDAgMDAgMDAgMTggMTggN0UgMTgg
MTggMDAgMDAgMDAgMDAgMDAgMDAgIHwuLi4uLi5+Li4uLi4uLi4KICAgIDVGMTA6IDE4IDE4IDMw
IDAwIDAwIDAwIDAwIEZFIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAuLjAuLi4uLi4uLi4uLi4u
CiAgICA1RjIwOiAwMCAzOCAzOCAwMCAwNiAwQyAxOCAzMCA2MCBDMCA4MCAwMCA3QyBDNiBDRSBE
RSAgLjg4Li4uLjBgLi4ufC4uLgogICAgNUYzMDogRjYgRTYgN0MgMDAgMTggNzggMTggMTggMTgg
MTggN0UgMDAgN0MgQzYgMEMgMTggIC4ufC4ueC4uLi5+LnwuLi4KICAgIDVGNDA6IDMwIDY2IEZF
IDAwIDdDIEM2IDA2IDNDIDA2IEM2IDdDIDAwIDBDIDFDIDNDIDZDICAwZi4ufC4uPC4ufC4uLjxs
CiAgICA1RjUwOiBGRSAwQyAwQyAwMCBGRSBDMCBGQyAwNiAwNiBDNiA3QyAwMCA3QyBDNiBDMCBG
QyAgLi4uLi4uLi4uLnwufC4uLgogICAgNUY2MDogQzYgQzYgN0MgMDAgRkUgQzYgMDYgMEMgMTgg
MTggMTggMDAgN0MgQzYgQzYgN0MgIC4ufC4uLi4uLi4uLnwuLnwKICAgIDVGNzA6IEM2IEM2IDdD
IDAwIDdDIEM2IEM2IDdFIDA2IEM2IDdDIDAwIDAwIDFDIDFDIDAwICAuLnwufC4ufi4ufC4uLi4u
CiAgICA1RjgwOiAwMCAxQyAxQyAwMCAwMCAxOCAxOCAwMCAwMCAxOCAxOCAzMCAwQyAxOCAzMCA2
MCAgLi4uLi4uLi4uLi4wLi4wYAogICAgNUY5MDogMzAgMTggMEMgMDAgMDAgMDAgRkUgMDAgMDAg
RkUgMDAgMDAgNjAgMzAgMTggMEMgIDAuLi4uLi4uLi4uLmAwLi4KICAgIDVGQTA6IDE4IDMwIDYw
IDAwIDdDIEM2IDA2IDBDIDE4IDAwIDE4IDAwIDdDIEM2IEM2IERFICAuMGAufC4uLi4uLi58Li4u
CiAgICA1RkIwOiBEQyBDMCA3RSAwMCAzOCA2QyBDNiBDNiBGRSBDNiBDNiAwMCBGQyA2NiA2NiA3
QyAgLi5+LjhsLi4uLi4uLmZmfAogICAgNUZDMDogNjYgNjYgRkMgMDAgM0MgNjYgQzAgQzAgQzAg
NjYgM0MgMDAgRjggNkMgNjYgNjYgIGZmLi48Zi4uLmY8Li5sZmYKICAgIDVGRDA6IDY2IDZDIEY4
IDAwIEZFIEMyIEMwIEY4IEMwIEMyIEZFIDAwIEZFIDYyIDYwIDdDICBmbC4uLi4uLi4uLi4uYmB8
CiAgICA1RkUwOiA2MCA2MCBGMCAwMCA3QyBDNiBDMCBDMCBERSBDNiA3QyAwMCBDNiBDNiBDNiBG
RSAgYGAuLnwuLi4uLnwuLi4uLgogICAgNUZGMDogQzYgQzYgQzYgMDAgM0MgMTggMTggMTggMTgg
MTggM0MgMDAgM0MgMTggMTggMTggIC4uLi48Li4uLi48LjwuLi4KICAgIDYwMDA6IEQ4IEQ4IDcw
IDAwIEM2IENDIEQ4IEYwIEQ4IENDIEM2IDAwIEYwIDYwIDYwIDYwICAuLnAuLi4uLi4uLi4uYGBg
CiAgICA2MDEwOiA2MCA2MiBGRSAwMCBDNiBFRSBGRSBENiBENiBDNiBDNiAwMCBDNiBFNiBFNiBG
NiAgYGIuLi4uLi4uLi4uLi4uLgogICAgNjAyMDogREUgQ0UgQzYgMDAgN0MgQzYgQzYgQzYgQzYg
QzYgN0MgMDAgRkMgNjYgNjYgN0MgIC4uLi58Li4uLi58Li5mZnwKICAgIDYwMzA6IDYwIDYwIEYw
IDAwIDdDIEM2IEM2IEM2IEM2IEQ2IDdDIDA2IEZDIEM2IEM2IEZDICBgYC4ufC4uLi4ufC4uLi4u
CiAgICA2MDQwOiBEOCBDQyBDNiAwMCA3QyBDNiBDMCA3QyAwNiBDNiA3QyAwMCA3RSA1QSAxOCAx
OCAgLi4uLnwuLnwuLnwuflouLgogICAgNjA1MDogMTggMTggM0MgMDAgQzYgQzYgQzYgQzYgQzYg
QzYgN0MgMDAgQzYgQzYgQzYgQzYgIC4uPC4uLi4uLi58Li4uLi4KICAgIDYwNjA6IDZDIDM4IDEw
IDAwIEM2IEM2IEQ2IEQ2IEZFIEVFIEM2IDAwIEM2IDZDIDM4IDM4ICBsOC4uLi4uLi4uLi4ubDg4
CiAgICA2MDcwOiAzOCA2QyBDNiAwMCA2NiA2NiA2NiAzQyAxOCAxOCAzQyAwMCBGRSA4NiAwQyAx
OCAgOGwuLmZmZjwuLjwuLi4uLgogICAgNjA4MDogMzAgNjIgRkUgMDAgN0MgNjAgNjAgNjAgNjAg
NjAgN0MgMDAgQzAgNjAgMzAgMTggIDBiLi58YGBgYGB8Li5gMC4KICAgIDYwOTA6IDBDIDA2IDAy
IDAwIDdDIDBDIDBDIDBDIDBDIDBDIDdDIDAwIDEwIDM4IDZDIEM2ICAuLi4ufC4uLi4ufC4uOGwu
CiAgICA2MEEwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCBGRiAzMCAzMCAxOCAw
MCAgLi4uLi4uLi4uLi4uMDAuLgogICAgNjBCMDogMDAgMDAgMDAgMDAgMDAgMDAgNzggMEMgN0Mg
Q0MgN0UgMDAgRTAgNjAgN0MgNjYgIC4uLi4uLngufC5+Li5gfGYKICAgIDYwQzA6IDY2IDY2IEZD
IDAwIDAwIDAwIDdDIEM2IEMwIEM2IDdDIDAwIDFDIDBDIDdDIENDICBmZi4uLi58Li4ufC4uLnwu
CiAgICA2MEQwOiBDQyBDQyA3RSAwMCAwMCAwMCA3QyBDNiBGRSBDMCA3QyAwMCAxQyAzNiAzMCBG
QyAgLi5+Li4ufC4uLnwuLjYwLgogICAgNjBFMDogMzAgMzAgNzggMDAgMDAgMDAgNzYgQ0UgQzYg
N0UgMDYgN0MgRTAgNjAgN0MgNjYgIDAweC4uLnYuLn4ufC5gfGYKICAgIDYwRjA6IDY2IDY2IEU2
IDAwIDE4IDAwIDM4IDE4IDE4IDE4IDNDIDAwIDBDIDAwIDFDIDBDICBmZi4uLi44Li4uPC4uLi4u
CiAgICA2MTAwOiAwQyAwQyBDQyA3OCBFMCA2MCA2NiA2QyA3OCA2QyBFNiAwMCAxOCAxOCAxOCAx
OCAgLi4ueC5gZmx4bC4uLi4uLgogICAgNjExMDogMTggMTggMUMgMDAgMDAgMDAgNkMgRkUgRDYg
RDYgQzYgMDAgMDAgMDAgREMgNjYgIC4uLi4uLmwuLi4uLi4uLmYKICAgIDYxMjA6IDY2IDY2IDY2
IDAwIDAwIDAwIDdDIEM2IEM2IEM2IDdDIDAwIDAwIDAwIERDIDY2ICBmZmYuLi58Li4ufC4uLi5m
CiAgICA2MTMwOiA2NiA3QyA2MCBGMCAwMCAwMCA3NiBDQyBDQyA3QyAwQyAxRSAwMCAwMCBEQyA2
NiAgZnxgLi4udi4ufC4uLi4uZgogICAgNjE0MDogNjAgNjAgRjAgMDAgMDAgMDAgN0MgQzAgN0Mg
MDYgN0MgMDAgMzAgMzAgRkMgMzAgIGBgLi4uLnwufC58LjAwLjAKICAgIDYxNTA6IDMwIDM2IDFD
IDAwIDAwIDAwIENDIENDIENDIENDIDc2IDAwIDAwIDAwIEM2IEM2ICAwNi4uLi4uLi4udi4uLi4u
CiAgICA2MTYwOiA2QyAzOCAxMCAwMCAwMCAwMCBDNiBDNiBENiBGRSA2QyAwMCAwMCAwMCBDNiA2
QyAgbDguLi4uLi4uLmwuLi4ubAogICAgNjE3MDogMzggNkMgQzYgMDAgMDAgMDAgQzYgQzYgQ0Ug
NzYgMDYgN0MgMDAgMDAgRkMgOTggIDhsLi4uLi4uLnYufC4uLi4KICAgIDYxODA6IDMwIDY0IEZD
IDAwIDBFIDE4IDE4IDcwIDE4IDE4IDBFIDAwIDE4IDE4IDE4IDAwICAwZC4uLi4ucC4uLi4uLi4u
CiAgICA2MTkwOiAxOCAxOCAxOCAwMCA3MCAxOCAxOCAwRSAxOCAxOCA3MCAwMCA3NiBEQyAwMCAw
MCAgLi4uLnAuLi4uLnAudi4uLgogICAgNjFBMDogMDAgMDAgMDAgMDAgMDAgMTAgMzggMzggNkMg
NkMgRkUgMDAgM0MgNjYgQzAgNjYgIC4uLi4uLjg4bGwuLjxmLmYKICAgIDYxQjA6IDNDIDE4IEND
IDc4IDAwIEM2IDAwIEM2IEM2IENFIDc2IDAwIDBFIDAwIDdDIEM2ICA8Li54Li4uLi4udi4uLnwu
CiAgICA2MUMwOiBGRSBDMCA3QyAwMCA3QyBDNiA3OCAwQyA3QyBDQyA3RSAwMCBDNiAwMCA3OCAw
QyAgLi58LnwueC58Ln4uLi54LgogICAgNjFEMDogN0MgQ0MgN0UgMDAgRTAgMDAgNzggMEMgN0Mg
Q0MgN0UgMDAgMzggMzggNzggMEMgIHwufi4uLngufC5+Ljg4eC4KICAgIDYxRTA6IDdDIENDIDdF
IDAwIDAwIDAwIDdDIEMwIDdDIDE4IDZDIDM4IDdDIEM2IDdDIEM2ICB8Ln4uLi58LnwubDh8Lnwu
CiAgICA2MUYwOiBGRSBDMCA3QyAwMCBDNiAwMCA3QyBDNiBGRSBDMCA3QyAwMCBFMCAwMCA3QyBD
NiAgLi58Li4ufC4uLnwuLi58LgogICAgNjIwMDogRkUgQzAgN0MgMDAgNjYgMDAgMzggMTggMTgg
MTggM0MgMDAgN0MgQzYgMzggMTggIC4ufC5mLjguLi48LnwuOC4KICAgIDYyMTA6IDE4IDE4IDND
IDAwIDAwIDAwIDM4IDE4IDE4IDE4IDNDIDAwIEM2IDM4IDZDIEM2ICAuLjwuLi44Li4uPC4uOGwu
CiAgICA2MjIwOiBGRSBDNiBDNiAwMCAzOCAzOCAwMCA3QyBDNiBGRSBDNiAwMCAwRSAwMCBGRSBD
MCAgLi4uLjg4LnwuLi4uLi4uLgogICAgNjIzMDogRjggQzAgRkUgMDAgMDAgMDAgNkMgOUEgN0Ug
RDggNkUgMDAgN0UgRDggRDggRkUgIC4uLi4uLmwufi5uLn4uLi4KICAgIDYyNDA6IEQ4IEQ4IERF
IDAwIDdDIEM2IDAwIDdDIEM2IEM2IDdDIDAwIDAwIEM2IDAwIDdDICAuLi4ufC4ufC4ufC4uLi58
CiAgICA2MjUwOiBDNiBDNiA3QyAwMCAwMCBFMCAwMCA3QyBDNiBDNiA3QyAwMCA3QyBDNiAwMCBD
NiAgLi58Li4uLnwuLnwufC4uLgogICAgNjI2MDogQzYgQ0UgNzYgMDAgMDAgRTAgMDAgQzYgQzYg
Q0UgNzYgMDAgMTggMDAgM0MgMTggIC4udi4uLi4uLi52Li4uPC4KICAgIDYyNzA6IDE4IDE4IDND
IDAwIEM2IDM4IDZDIEM2IEM2IDZDIDM4IDAwIEM2IDAwIEM2IEM2ICAuLjwuLjhsLi5sOC4uLi4u
CiAgICA2MjgwOiBDNiBDNiA3QyAwMCAwMCAxOCA3RSBEOCBEOCA3RSAxOCAwMCAzOCA2QyA2MCBG
MCAgLi58Li4ufi4ufi4uOGxgLgogICAgNjI5MDogNjYgRjYgNkMgMDAgQzMgNjYgM0MgN0UgMTgg
M0MgMTggMDAgM0UgNjMgMzggMEUgIGYubC4uZjx+LjwuLj5jOC4KICAgIDYyQTA6IDYzIDNFIDAw
IDFDIDAwIDNFIDYxIDNDIDg2IDdDIDAwIDFDIDBFIDAwIDc4IDBDICBjPi4uLj5hPC58Li4uLngu
CiAgICA2MkIwOiA3QyBDQyA3RSAwMCAxQyAwMCAzOCAxOCAxOCAxOCAzQyAwMCAwMCAwRSAwMCA3
QyAgfC5+Li4uOC4uLjwuLi4ufAogICAgNjJDMDogQzYgQzYgN0MgMDAgMDAgMEUgMDAgQ0MgQ0Mg
REMgNzYgMDAgMDAgRkMgMDAgQkMgIC4ufC4uLi4uLi52Li4uLi4KICAgIDYyRDA6IDY2IDY2IEU2
IDAwIEZFIDAwIEM2IEU2IEY2IENFIEM2IDAwIDNFIDAwIDNFIDYwICBmZi4uLi4uLi4uLi4+Lj5g
CiAgICA2MkUwOiA2NyA2MyAzRCAwMCAzRSAwMCA3NiBDRSBDNiA3RSAwNiA3QyAxOCAwMCAxOCAz
MCAgZ2M9Lj4udi4ufi58Li4uMAogICAgNjJGMDogNjAgNjYgM0MgMDAgMDAgMDAgMDAgN0MgNjAg
NjAgMDAgMDAgMDAgMDAgMDAgN0MgIGBmPC4uLi58YGAuLi4uLnwKICAgIDYzMDA6IDBDIDBDIDAw
IDAwIEMwIENDIEQ4IDMwIDdDIDM2IDBDIDNFIEMwIENDIEQ4IDMwICAuLi4uLi4uMHw2Lj4uLi4w
CiAgICA2MzEwOiA2QyAzQyA3RSAwQyAxOCAwMCAxOCAxOCAzQyAzQyAxOCAwMCAwMCAzNiA2QyBE
OCAgbDx+Li4uLi48PC4uLjZsLgogICAgNjMyMDogNkMgMzYgMDAgMDAgMDAgRDggNkMgMzYgNkMg
RDggMDAgMDAgMjIgODggMjIgODggIGw2Li4uLmw2bC4uLiIuIi4KICAgIDYzMzA6IDIyIDg4IDIy
IDg4IDU1IEFBIDU1IEFBIDU1IEFBIDU1IEFBIEREIDc3IEREIDc3ICAiLiIuVS5VLlUuVS4udy53
CiAgICA2MzQwOiBERCA3NyBERCA3NyAxOCAxOCAxOCAxOCAxOCAxOCAxOCAxOCAxOCAxOCAxOCAx
OCAgLncudy4uLi4uLi4uLi4uLgogICAgNjM1MDogRjggMTggMTggMTggMTggMTggRjggMTggRjgg
MTggMTggMTggMzYgMzYgMzYgMzYgIC4uLi4uLi4uLi4uLjY2NjYKICAgIDYzNjA6IEY2IDM2IDM2
IDM2IDAwIDAwIDAwIDAwIEZFIDM2IDM2IDM2IDAwIDAwIEY4IDE4ICAuNjY2Li4uLi42NjYuLi4u
CiAgICA2MzcwOiBGOCAxOCAxOCAxOCAzNiAzNiBGNiAwNiBGNiAzNiAzNiAzNiAzNiAzNiAzNiAz
NiAgLi4uLjY2Li4uNjY2NjY2NgogICAgNjM4MDogMzYgMzYgMzYgMzYgMDAgMDAgRkUgMDYgRjYg
MzYgMzYgMzYgMzYgMzYgRjYgMDYgIDY2NjYuLi4uLjY2NjY2Li4KICAgIDYzOTA6IEZFIDAwIDAw
IDAwIDM2IDM2IDM2IDM2IEZFIDAwIDAwIDAwIDE4IDE4IEY4IDE4ICAuLi4uNjY2Ni4uLi4uLi4u
CiAgICA2M0EwOiBGOCAwMCAwMCAwMCAwMCAwMCAwMCAwMCBGOCAxOCAxOCAxOCAxOCAxOCAxOCAx
OCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNjNCMDogMUYgMDAgMDAgMDAgMTggMTggMTggMTggRkYg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAgIDYzQzA6IEZGIDE4IDE4
IDE4IDE4IDE4IDE4IDE4IDFGIDE4IDE4IDE4IDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4u
CiAgICA2M0QwOiBGRiAwMCAwMCAwMCAxOCAxOCAxOCAxOCBGRiAxOCAxOCAxOCAxOCAxOCAxRiAx
OCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNjNFMDogMUYgMTggMTggMTggMzYgMzYgMzYgMzYgMzcg
MzYgMzYgMzYgMzYgMzYgMzcgMzAgIC4uLi42NjY2NzY2NjY2NzAKICAgIDYzRjA6IDNGIDAwIDAw
IDAwIDAwIDAwIDNGIDMwIDM3IDM2IDM2IDM2IDM2IDM2IEY3IDAwICA/Li4uLi4/MDc2NjY2Ni4u
CiAgICA2NDAwOiBGRiAwMCAwMCAwMCAwMCAwMCBGRiAwMCBGNyAzNiAzNiAzNiAzNiAzNiAzNyAz
MCAgLi4uLi4uLi4uNjY2NjY3MAogICAgNjQxMDogMzcgMzYgMzYgMzYgMDAgMDAgRkYgMDAgRkYg
MDAgMDAgMDAgMzYgMzYgRjcgMDAgIDc2NjYuLi4uLi4uLjY2Li4KICAgIDY0MjA6IEY3IDM2IDM2
IDM2IDE4IDE4IEZGIDAwIEZGIDAwIDAwIDAwIDM2IDM2IDM2IDM2ICAuNjY2Li4uLi4uLi42NjY2
CiAgICA2NDMwOiBGRiAwMCAwMCAwMCAwMCAwMCBGRiAwMCBGRiAxOCAxOCAxOCAwMCAwMCAwMCAw
MCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNjQ0MDogRkYgMzYgMzYgMzYgMzYgMzYgMzYgMzYgM0Yg
MDAgMDAgMDAgMTggMTggMUYgMTggIC42NjY2NjY2Py4uLi4uLi4KICAgIDY0NTA6IDFGIDAwIDAw
IDAwIDAwIDAwIDFGIDE4IDFGIDE4IDE4IDE4IDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4u
CiAgICA2NDYwOiAzRiAzNiAzNiAzNiAzNiAzNiAzNiAzNiBGRiAzNiAzNiAzNiAxOCAxOCBGRiAx
OCAgPzY2NjY2NjYuNjY2Li4uLgogICAgNjQ3MDogRkYgMTggMTggMTggMTggMTggMTggMTggRjgg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAgIDY0ODA6IDFGIDE4IDE4
IDE4IEZGIEZGIEZGIEZGIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4u
CiAgICA2NDkwOiBGRiBGRiBGRiBGRiBGMCBGMCBGMCBGMCBGMCBGMCBGMCBGMCAwRiAwRiAwRiAw
RiAgLi4uLi4uLi4uLi4uLi4uLgogICAgNjRBMDogMEYgMEYgMEYgMEYgRkYgRkYgRkYgRkYgMDAg
MDAgMDAgMDAgMDAgMDAgNjYgREMgIC4uLi4uLi4uLi4uLi4uZi4KICAgIDY0QjA6IEQ4IERDIDY2
IDAwIDAwIDc4IENDIEY4IENDIEM2IENDIDAwIDAwIEZFIDYyIDYwICAuLmYuLnguLi4uLi4uLmJg
CiAgICA2NEMwOiA2MCA2MCBFMCAwMCAwMCBGRSA2QyA2QyA2QyA2QyA2QyAwMCBGRSBDNiA2MCAz
MCAgYGAuLi4ubGxsbGwuLi5gMAogICAgNjREMDogNjAgQzYgRkUgMDAgMDAgN0UgRDggQ0MgQ0Mg
RDggNzAgMDAgMDAgNjYgNjYgNjYgIGAuLi4ufi4uLi5wLi5mZmYKICAgIDY0RTA6IDY2IDdDIEMw
IDAwIDAwIDc2IERDIDE4IDE4IDE4IDM4IDAwIEZFIDM4IDZDIEM2ICBmfC4uLnYuLi4uOC4uOGwu
CiAgICA2NEYwOiA2QyAzOCBGRSAwMCAzOCA2QyBDNiBGRSBDNiA2QyAzOCAwMCAzOCA2QyBDNiBD
NiAgbDguLjhsLi4ubDguOGwuLgogICAgNjUwMDogNkMgNkMgRUUgMDAgM0UgNjAgMzggNjYgQzYg
Q0MgNzggMDAgMDAgMDAgN0UgREIgIGxsLi4+YDhmLi54Li4ufi4KICAgIDY1MTA6IERCIDdFIDAw
IDAwIDA2IDdDIERFIEY2IEU2IDdDIEMwIDAwIDM4IDYwIEMwIEY4ICAufi4uLnwuLi58Li44YC4u
CiAgICA2NTIwOiBDMCA2MCAzOCAwMCA3QyBDNiBDNiBDNiBDNiBDNiBDNiAwMCAwMCBGRSAwMCBG
RSAgLmA4LnwuLi4uLi4uLi4uLgogICAgNjUzMDogMDAgRkUgMDAgMDAgMTggMTggN0UgMTggMTgg
MDAgN0UgMDAgMzAgMTggMEMgMTggIC4uLi4uLn4uLi5+LjAuLi4KICAgIDY1NDA6IDMwIDAwIDdF
IDAwIDBDIDE4IDMwIDE4IDBDIDAwIDdFIDAwIDBDIDFFIDE4IDE4ICAwLn4uLi4wLi4ufi4uLi4u
CiAgICA2NTUwOiAxOCAxOCAxOCAxOCAxOCAxOCAxOCAxOCAxOCA3OCAzMCAwMCAwMCAwMCAxOCAw
MCAgLi4uLi4uLi4ueDAuLi4uLgogICAgNjU2MDogN0UgMDAgMTggMDAgMDAgNzYgREMgMDAgNzYg
REMgMDAgMDAgN0MgQzYgQzYgN0MgIH4uLi4udi4udi4uLnwuLnwKICAgIDY1NzA6IDAwIDAwIDAw
IDAwIDAwIDAwIDAwIDE4IDE4IDAwIDAwIDAwIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4u
CiAgICA2NTgwOiAxOCAwMCAwMCAwMCAxRiAxOCAxOCAxOCBGOCAzOCAxOCAwMCBEOCA2QyA2QyA2
QyAgLi4uLi4uLi4uOC4uLmxsbAogICAgNjU5MDogMDAgMDAgMDAgMDAgNzAgRDggMzAgRjggMDAg
MDAgMDAgMDAgMDAgMDAgN0MgN0MgIC4uLi5wLjAuLi4uLi4ufHwKICAgIDY1QTA6IDdDIDdDIDAw
IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDFEIDAwIDAwIDAwICB8fC4uLi4uLi4uLi4uLi4u
CiAgICA2NUIwOiAwMCAyNCA2NiBGRiA2NiAyNCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAxMCAwMCAw
MCAgLiRmLmYkLi4uLi4uLi4uLgogICAgNjVDMDogMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAgIDY1RDA6IDAwIDdFIDgx
IEE1IDgxIDgxIEJEIDk5IDgxIDgxIDdFIDAwIDAwIDAwIDAwIDAwICAufi4uLi4uLi4ufi4uLi4u
CiAgICA2NUUwOiAwMCA3QyBGRSBGRSBENiBGRSBGRSBCQSBDNiBGRSA3QyAwMCAwMCAwMCAwMCAw
MCAgLnwuLi4uLi4uLnwuLi4uLgogICAgNjVGMDogMDAgMDAgNkMgRUUgRkUgRkUgRkUgRkUgN0Mg
MzggMTAgMDAgMDAgMDAgMDAgMDAgIC4ubC4uLi4ufDguLi4uLi4KICAgIDY2MDA6IDAwIDAwIDEw
IDM4IDdDIEZFIDdDIDM4IDEwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAuLi44fC58OC4uLi4uLi4u
CiAgICA2NjEwOiAwMCAwMCAxMCAzOCAzOCAxMCA2QyBFRSA2QyAxMCAzOCAwMCAwMCAwMCAwMCAw
MCAgLi4uODgubC5sLjguLi4uLgogICAgNjYyMDogMDAgMTAgMzggN0MgN0MgRkUgRkUgRkUgNkMg
MTAgMzggMDAgMDAgMDAgMDAgMDAgIC4uOHx8Li4ubC44Li4uLi4KICAgIDY2MzA6IDAwIDAwIDAw
IDAwIDE4IDNDIDNDIDNDIDE4IDAwIDAwIDAwIDAwIDAwIDAwIEZGICAuLi4uLjw8PC4uLi4uLi4u
CiAgICA2NjQwOiBGRiBGRiBGRiBGRiBFNyBDMyBDMyBDMyBFNyBGRiBGRiBGRiBGRiBGRiBGRiAw
MCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNjY1MDogMDAgMDAgMDAgMTggM0MgNjYgNjYgNjYgM0Mg
MTggMDAgMDAgMDAgMDAgMDAgRkYgIC4uLi48ZmZmPC4uLi4uLi4KICAgIDY2NjA6IEZGIEZGIEZG
IEU3IEMzIDk5IDk5IDk5IEMzIEU3IEZGIEZGIEZGIEZGIEZGIDAwICAuLi4uLi4uLi4uLi4uLi4u
CiAgICA2NjcwOiAwMCAxRSAwRSAxRSAzNiA3OCBDQyBDQyBDQyBDQyA3OCAwMCAwMCAwMCAwMCAw
MCAgLi4uLjZ4Li4uLnguLi4uLgogICAgNjY4MDogMDAgM0MgNjYgNjYgNjYgM0MgMTggN0UgMTgg
MTggMTggMDAgMDAgMDAgMDAgMDAgIC48ZmZmPC5+Li4uLi4uLi4KICAgIDY2OTA6IDAwIDFFIDFB
IDFFIDE4IDE4IDE4IDE4IDc4IEY4IDcwIDAwIDAwIDAwIDAwIDAwICAuLi4uLi4uLngucC4uLi4u
CiAgICA2NkEwOiAwMCAzRSAzNiAzRSAzNiAzNiA3NiBGNiA2NiAwRSAxRSAwQyAwMCAwMCAwMCAw
MCAgLj42PjY2di5mLi4uLi4uLgogICAgNjZCMDogMDAgMTggREIgN0UgM0MgNjYgNjYgM0MgN0Ug
REIgMTggMDAgMDAgMDAgMDAgMDAgIC4uLn48ZmY8fi4uLi4uLi4KICAgIDY2QzA6IDAwIDAwIDgw
IEUwIEYwIEZDIEZFIEZDIEYwIEUwIDgwIDAwIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4u
CiAgICA2NkQwOiAwMCAwMCAwMiAwRSAzRSA3RSBGRSA3RSAzRSAwRSAwMiAwMCAwMCAwMCAwMCAw
MCAgLi4uLj5+Ln4+Li4uLi4uLgogICAgNjZFMDogMDAgMTggM0MgN0UgMTggMTggMTggMTggN0Ug
M0MgMTggMDAgMDAgMDAgMDAgMDAgIC4uPH4uLi4ufjwuLi4uLi4KICAgIDY2RjA6IDAwIDY2IDY2
IDY2IDY2IDY2IDY2IDY2IDAwIDY2IDY2IDAwIDAwIDAwIDAwIDAwICAuZmZmZmZmZi5mZi4uLi4u
CiAgICA2NzAwOiAwMCA3RiBEQiBEQiBEQiBEQiA3QiAxQiAxQiAxQiAxQiAwMCAwMCAwMCAwMCAw
MCAgLi4uLi4uey4uLi4uLi4uLgogICAgNjcxMDogMDAgN0MgQzYgQzYgNjAgN0MgRjYgREUgN0Mg
MEMgQzYgQzYgN0MgMDAgMDAgMDAgIC58Li5gfC4ufC4uLnwuLi4KICAgIDY3MjA6IDAwIDAwIDAw
IDAwIDAwIDAwIDAwIEZFIEZFIEZFIEZFIDAwIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4u
CiAgICA2NzMwOiAwMCAxOCAzQyA3RSAxOCAxOCAxOCA3RSAzQyAxOCA3RSAwMCAwMCAwMCAwMCAw
MCAgLi48fi4uLn48Ln4uLi4uLgogICAgNjc0MDogMDAgMTggM0MgN0UgMTggMTggMTggMTggMTgg
MTggMTggMDAgMDAgMDAgMDAgMDAgIC4uPH4uLi4uLi4uLi4uLi4KICAgIDY3NTA6IDAwIDE4IDE4
IDE4IDE4IDE4IDE4IDE4IDdFIDNDIDE4IDAwIDAwIDAwIDAwIDAwICAuLi4uLi4uLn48Li4uLi4u
CiAgICA2NzYwOiAwMCAwMCAwMCAwMCAwQyAwRSBGRiAwRSAwQyAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNjc3MDogMDAgMDAgMDAgMDAgMzAgNzAgRkUgNzAgMzAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4wcC5wMC4uLi4uLi4KICAgIDY3ODA6IDAwIDAwIDAw
IDAwIDAwIEMwIEMwIEMwIEZFIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4u
CiAgICA2NzkwOiAwMCAwMCAwMCAwMCAyNCA2NiBGRiA2NiAyNCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAgLi4uLiRmLmYkLi4uLi4uLgogICAgNjdBMDogMDAgMDAgMTAgMzggMzggMzggN0MgN0MgRkUg
RkUgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLjg4OHx8Li4uLi4uLi4KICAgIDY3QjA6IDAwIDAwIEZF
IEZFIDdDIDdDIDdDIDM4IDM4IDEwIDAwIDAwIDAwIDAwIDAwIDAwICAuLi4ufHx8ODguLi4uLi4u
CiAgICA2N0MwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNjdEMDogMDAgMTggM0MgM0MgM0MgM0MgMTggMTggMDAg
MTggMTggMDAgMDAgMDAgMDAgMDAgIC4uPDw8PC4uLi4uLi4uLi4KICAgIDY3RTA6IDM2IDM2IDM2
IDM2IDE0IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICA2NjY2Li4uLi4uLi4uLi4u
CiAgICA2N0YwOiAwMCA2QyA2QyA2QyBGRSA2QyA2QyBGRSA2QyA2QyA2QyAwMCAwMCAwMCAwMCAw
MCAgLmxsbC5sbC5sbGwuLi4uLgogICAgNjgwMDogMDAgMTggMTggN0MgQzYgQzAgNzggM0MgMDYg
QzYgN0MgMTggMTggMDAgMDAgMDAgIC4uLnwuLng8Li58Li4uLi4KICAgIDY4MTA6IDAwIDAwIDAw
IDAwIDYyIDY2IDBDIDE4IDMwIDY2IEM2IDAwIDAwIDAwIDAwIDAwICAuLi4uYmYuLjBmLi4uLi4u
CiAgICA2ODIwOiAwMCAzOCA2QyAzOCAzMCA3NiA3RSBDQyBDQyBDQyA3NiAwMCAwMCAwMCAwMCAw
MCAgLjhsODB2fi4uLnYuLi4uLgogICAgNjgzMDogMEMgMEMgMEMgMTggMDAgMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAgIDY4NDA6IDAwIDBDIDE4
IDMwIDMwIDMwIDMwIDMwIDMwIDE4IDBDIDAwIDAwIDAwIDAwIDAwICAuLi4wMDAwMDAuLi4uLi4u
CiAgICA2ODUwOiAwMCAzMCAxOCAwQyAwQyAwQyAwQyAwQyAwQyAxOCAzMCAwMCAwMCAwMCAwMCAw
MCAgLjAuLi4uLi4uLjAuLi4uLgogICAgNjg2MDogMDAgMDAgMDAgMDAgNkMgMzggRkUgMzggNkMg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi5sOC44bC4uLi4uLi4KICAgIDY4NzA6IDAwIDAwIDAw
IDAwIDE4IDE4IDdFIDE4IDE4IDAwIDAwIDAwIDAwIDAwIDAwIDAwICAuLi4uLi5+Li4uLi4uLi4u
CiAgICA2ODgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwQyAwQyAwQyAxOCAwMCAwMCAwMCAw
MCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNjg5MDogMDAgMDAgMDAgMDAgMDAgMDAgRkUgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAgIDY4QTA6IDAwIDAwIDAw
IDAwIDAwIDAwIDAwIDAwIDAwIDE4IDE4IDAwIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4u
CiAgICA2OEIwOiAwMCAwMCAwMCAwMiAwNiAwQyAxOCAzMCA2MCBDMCA4MCAwMCAwMCAwMCAwMCAw
MCAgLi4uLi4uLjBgLi4uLi4uLgogICAgNjhDMDogMDAgN0MgQzYgQzYgQ0UgREUgRjYgRTYgQzYg
QzYgN0MgMDAgMDAgMDAgMDAgMDAgIC58Li4uLi4uLi58Li4uLi4KICAgIDY4RDA6IDAwIDE4IDc4
IDE4IDE4IDE4IDE4IDE4IDE4IDE4IDdFIDAwIDAwIDAwIDAwIDAwICAuLnguLi4uLi4ufi4uLi4u
CiAgICA2OEUwOiAwMCA3QyBDNiBDNiAwNiAwQyAxOCAzMCA2MCBDNiBGRSAwMCAwMCAwMCAwMCAw
MCAgLnwuLi4uLjBgLi4uLi4uLgogICAgNjhGMDogMDAgN0MgQzYgMDYgMDYgM0MgMDYgMDYgMDYg
QzYgN0MgMDAgMDAgMDAgMDAgMDAgIC58Li4uPC4uLi58Li4uLi4KICAgIDY5MDA6IDAwIDBDIDFD
IDNDIDZDIENDIENDIEZFIDBDIDBDIDFFIDAwIDAwIDAwIDAwIDAwICAuLi48bC4uLi4uLi4uLi4u
CiAgICA2OTEwOiAwMCBGRSBDMCBDMCBDMCBGQyAwNiAwNiAwNiBDNiA3QyAwMCAwMCAwMCAwMCAw
MCAgLi4uLi4uLi4uLnwuLi4uLgogICAgNjkyMDogMDAgN0MgQzYgQzAgQzAgRkMgQzYgQzYgQzYg
QzYgN0MgMDAgMDAgMDAgMDAgMDAgIC58Li4uLi4uLi58Li4uLi4KICAgIDY5MzA6IDAwIEZFIEM2
IDA2IDBDIDE4IDMwIDMwIDMwIDMwIDMwIDAwIDAwIDAwIDAwIDAwICAuLi4uLi4wMDAwMC4uLi4u
CiAgICA2OTQwOiAwMCA3QyBDNiBDNiBDNiA3QyBDNiBDNiBDNiBDNiA3QyAwMCAwMCAwMCAwMCAw
MCAgLnwuLi58Li4uLnwuLi4uLgogICAgNjk1MDogMDAgN0MgQzYgQzYgQzYgQzYgN0UgMDYgMDYg
QzYgN0MgMDAgMDAgMDAgMDAgMDAgIC58Li4uLn4uLi58Li4uLi4KICAgIDY5NjA6IDAwIDAwIDAw
IDAwIDBDIDBDIDAwIDAwIDBDIDBDIDAwIDAwIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4u
CiAgICA2OTcwOiAwMCAwMCAwMCAwMCAwQyAwQyAwMCAwMCAwQyAwQyAwQyAxOCAwMCAwMCAwMCAw
MCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNjk4MDogMDAgMDAgMEMgMTggMzAgNjAgQzAgNjAgMzAg
MTggMEMgMDAgMDAgMDAgMDAgMDAgIC4uLi4wYC5gMC4uLi4uLi4KICAgIDY5OTA6IDAwIDAwIDAw
IDAwIDAwIEZFIDAwIEZFIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4u
CiAgICA2OUEwOiAwMCAwMCA2MCAzMCAxOCAwQyAwNiAwQyAxOCAzMCA2MCAwMCAwMCAwMCAwMCAw
MCAgLi5gMC4uLi4uMGAuLi4uLgogICAgNjlCMDogMDAgN0MgQzYgQzYgMEMgMTggMTggMTggMDAg
MTggMTggMDAgMDAgMDAgMDAgMDAgIC58Li4uLi4uLi4uLi4uLi4KICAgIDY5QzA6IDAwIDdDIEM2
IEM2IEM2IERFIERFIERFIERDIEMwIDdFIDAwIDAwIDAwIDAwIDAwICAufC4uLi4uLi4ufi4uLi4u
CiAgICA2OUQwOiAwMCAzOCA2QyBDNiBDNiBDNiBGRSBDNiBDNiBDNiBDNiAwMCAwMCAwMCAwMCAw
MCAgLjhsLi4uLi4uLi4uLi4uLgogICAgNjlFMDogMDAgRkMgNjYgNjYgNjYgN0MgNjYgNjYgNjYg
NjYgRkMgMDAgMDAgMDAgMDAgMDAgIC4uZmZmfGZmZmYuLi4uLi4KICAgIDY5RjA6IDAwIDNDIDY2
IEMyIEMwIEMwIEMwIEMwIEMyIDY2IDNDIDAwIDAwIDAwIDAwIDAwICAuPGYuLi4uLi5mPC4uLi4u
CiAgICA2QTAwOiAwMCBGOCA2QyA2NiA2NiA2NiA2NiA2NiA2NiA2QyBGOCAwMCAwMCAwMCAwMCAw
MCAgLi5sZmZmZmZmbC4uLi4uLgogICAgNkExMDogMDAgRkUgNjYgNjAgNjQgN0MgNjQgNjAgNjAg
NjYgRkUgMDAgMDAgMDAgMDAgMDAgIC4uZmBkfGRgYGYuLi4uLi4KICAgIDZBMjA6IDAwIEZFIDY2
IDYwIDY0IDdDIDY0IDYwIDYwIDYwIEYwIDAwIDAwIDAwIDAwIDAwICAuLmZgZHxkYGBgLi4uLi4u
CiAgICA2QTMwOiAwMCA3QyBDNiBDNiBDMCBDMCBDMCBDRSBDNiBDNiA3QyAwMCAwMCAwMCAwMCAw
MCAgLnwuLi4uLi4uLnwuLi4uLgogICAgNkE0MDogMDAgQzYgQzYgQzYgQzYgRkUgQzYgQzYgQzYg
QzYgQzYgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAgIDZBNTA6IDAwIDNDIDE4
IDE4IDE4IDE4IDE4IDE4IDE4IDE4IDNDIDAwIDAwIDAwIDAwIDAwICAuPC4uLi4uLi4uPC4uLi4u
CiAgICA2QTYwOiAwMCAzQyAxOCAxOCAxOCAxOCAxOCAxOCBEOCBEOCA3MCAwMCAwMCAwMCAwMCAw
MCAgLjwuLi4uLi4uLnAuLi4uLgogICAgNkE3MDogMDAgQzYgQzYgQ0MgRDggRjAgRjAgRDggQ0Mg
QzYgQzYgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAgIDZBODA6IDAwIEYwIDYw
IDYwIDYwIDYwIDYwIDYwIDYyIDY2IEZFIDAwIDAwIDAwIDAwIDAwICAuLmBgYGBgYGJmLi4uLi4u
CiAgICA2QTkwOiAwMCBDNiBDNiBFRSBFRSBGRSBENiBENiBENiBDNiBDNiAwMCAwMCAwMCAwMCAw
MCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNkFBMDogMDAgQzYgQzYgRTYgRTYgRjYgREUgQ0UgQ0Ug
QzYgQzYgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAgIDZBQjA6IDAwIDdDIEM2
IEM2IEM2IEM2IEM2IEM2IEM2IEM2IDdDIDAwIDAwIDAwIDAwIDAwICAufC4uLi4uLi4ufC4uLi4u
CiAgICA2QUMwOiAwMCBGQyA2NiA2NiA2NiA2NiA3QyA2MCA2MCA2MCBGMCAwMCAwMCAwMCAwMCAw
MCAgLi5mZmZmfGBgYC4uLi4uLgogICAgNkFEMDogMDAgN0MgQzYgQzYgQzYgQzYgQzYgQzYgRDYg
RDYgN0MgMDYgMDAgMDAgMDAgMDAgIC58Li4uLi4uLi58Li4uLi4KICAgIDZBRTA6IDAwIEZDIDY2
IDY2IDY2IDdDIDc4IDZDIDY2IDY2IEU2IDAwIDAwIDAwIDAwIDAwICAuLmZmZnx4bGZmLi4uLi4u
CiAgICA2QUYwOiAwMCA3QyBDNiBDMCBDMCA3MCAxQyAwNiAwNiBDNiA3QyAwMCAwMCAwMCAwMCAw
MCAgLnwuLi5wLi4uLnwuLi4uLgogICAgNkIwMDogMDAgN0UgNUEgMTggMTggMTggMTggMTggMTgg
MTggM0MgMDAgMDAgMDAgMDAgMDAgIC5+Wi4uLi4uLi48Li4uLi4KICAgIDZCMTA6IDAwIEM2IEM2
IEM2IEM2IEM2IEM2IEM2IEM2IEM2IDdDIDAwIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4ufC4uLi4u
CiAgICA2QjIwOiAwMCBDNiBDNiBDNiBDNiBDNiBDNiBDNiA2QyAzOCAxMCAwMCAwMCAwMCAwMCAw
MCAgLi4uLi4uLi5sOC4uLi4uLgogICAgNkIzMDogMDAgQzYgQzYgQzYgRDYgRDYgRDYgRkUgRUUg
QzYgQzYgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAgIDZCNDA6IDAwIEM2IEM2
IEM2IDZDIDM4IDM4IDZDIEM2IEM2IEM2IDAwIDAwIDAwIDAwIDAwICAuLi4ubDg4bC4uLi4uLi4u
CiAgICA2QjUwOiAwMCA2NiA2NiA2NiA2NiA2NiAzQyAxOCAxOCAxOCAzQyAwMCAwMCAwMCAwMCAw
MCAgLmZmZmZmPC4uLjwuLi4uLgogICAgNkI2MDogMDAgRkUgQzYgODYgMEMgMTggMzAgNjAgQzIg
QzYgRkUgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLjBgLi4uLi4uLi4KICAgIDZCNzA6IDAwIDdDIDYw
IDYwIDYwIDYwIDYwIDYwIDYwIDYwIDdDIDAwIDAwIDAwIDAwIDAwICAufGBgYGBgYGBgfC4uLi4u
CiAgICA2QjgwOiAwMCAwMCAwMCA4MCBDMCA2MCAzMCAxOCAwQyAwNiAwMiAwMCAwMCAwMCAwMCAw
MCAgLi4uLi5gMC4uLi4uLi4uLgogICAgNkI5MDogMDAgN0MgMEMgMEMgMEMgMEMgMEMgMEMgMEMg
MEMgN0MgMDAgMDAgMDAgMDAgMDAgIC58Li4uLi4uLi58Li4uLi4KICAgIDZCQTA6IDEwIDM4IDZD
IEM2IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAuOGwuLi4uLi4uLi4uLi4u
CiAgICA2QkIwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCBGRiAwMCAwMCAw
MCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNkJDMDogMTggMTggMTggMEMgMDAgMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAgIDZCRDA6IDAwIDAwIDAw
IDAwIDc4IDBDIDdDIENDIENDIERDIDc2IDAwIDAwIDAwIDAwIDAwICAuLi4ueC58Li4udi4uLi4u
CiAgICA2QkUwOiAwMCBFMCA2MCA2MCA3QyA2NiA2NiA2NiA2NiA2NiBGQyAwMCAwMCAwMCAwMCAw
MCAgLi5gYHxmZmZmZi4uLi4uLgogICAgNkJGMDogMDAgMDAgMDAgMDAgN0MgQzYgQzAgQzAgQzAg
QzYgN0MgMDAgMDAgMDAgMDAgMDAgIC4uLi58Li4uLi58Li4uLi4KICAgIDZDMDA6IDAwIDFDIDBD
IDBDIDdDIENDIENDIENDIENDIENDIDdFIDAwIDAwIDAwIDAwIDAwICAuLi4ufC4uLi4ufi4uLi4u
CiAgICA2QzEwOiAwMCAwMCAwMCAwMCA3QyBDNiBDNiBGRSBDMCBDNiA3QyAwMCAwMCAwMCAwMCAw
MCAgLi4uLnwuLi4uLnwuLi4uLgogICAgNkMyMDogMDAgMUMgMzYgMzAgMzAgRkMgMzAgMzAgMzAg
MzAgNzggMDAgMDAgMDAgMDAgMDAgIC4uNjAwLjAwMDB4Li4uLi4KICAgIDZDMzA6IDAwIDAwIDAw
IDAwIDc2IENFIEM2IEM2IENFIDc2IDA2IEM2IDdDIDAwIDAwIDAwICAuLi4udi4uLi52Li58Li4u
CiAgICA2QzQwOiAwMCBFMCA2MCA2MCA3QyA2NiA2NiA2NiA2NiA2NiBFNiAwMCAwMCAwMCAwMCAw
MCAgLi5gYHxmZmZmZi4uLi4uLgogICAgNkM1MDogMDAgMTggMTggMDAgMzggMTggMTggMTggMTgg
MTggM0MgMDAgMDAgMDAgMDAgMDAgIC4uLi44Li4uLi48Li4uLi4KICAgIDZDNjA6IDAwIDBDIDBD
IDAwIDFDIDBDIDBDIDBDIDBDIDBDIENDIENDIDc4IDAwIDAwIDAwICAuLi4uLi4uLi4uLi54Li4u
CiAgICA2QzcwOiAwMCBFMCA2MCA2MCA2NiA2NiA2QyA3OCA2QyA2NiBFNiAwMCAwMCAwMCAwMCAw
MCAgLi5gYGZmbHhsZi4uLi4uLgogICAgNkM4MDogMDAgMTggMTggMTggMTggMTggMTggMTggMTgg
MTggMUMgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAgIDZDOTA6IDAwIDAwIDAw
IDAwIDZDIEZFIEQ2IEQ2IEM2IEM2IEM2IDAwIDAwIDAwIDAwIDAwICAuLi4ubC4uLi4uLi4uLi4u
CiAgICA2Q0EwOiAwMCAwMCAwMCAwMCBEQyA2NiA2NiA2NiA2NiA2NiA2NiAwMCAwMCAwMCAwMCAw
MCAgLi4uLi5mZmZmZmYuLi4uLgogICAgNkNCMDogMDAgMDAgMDAgMDAgN0MgQzYgQzYgQzYgQzYg
QzYgN0MgMDAgMDAgMDAgMDAgMDAgIC4uLi58Li4uLi58Li4uLi4KICAgIDZDQzA6IDAwIDAwIDAw
IDAwIERDIDY2IDY2IDY2IDY2IDdDIDYwIDYwIEYwIDAwIDAwIDAwICAuLi4uLmZmZmZ8YGAuLi4u
CiAgICA2Q0QwOiAwMCAwMCAwMCAwMCA3NiBDQyBDQyBDQyBDQyA3QyAwQyAwQyAxRSAwMCAwMCAw
MCAgLi4uLnYuLi4ufC4uLi4uLgogICAgNkNFMDogMDAgMDAgMDAgMDAgREMgNjYgNjAgNjAgNjAg
NjAgRjAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uZmBgYGAuLi4uLi4KICAgIDZDRjA6IDAwIDAwIDAw
IDAwIDdDIEM2IEMwIDdDIDA2IEM2IDdDIDAwIDAwIDAwIDAwIDAwICAuLi4ufC4ufC4ufC4uLi4u
CiAgICA2RDAwOiAwMCAzMCAzMCAzMCBGQyAzMCAzMCAzMCAzMCAzNiAxQyAwMCAwMCAwMCAwMCAw
MCAgLjAwMC4wMDAwNi4uLi4uLgogICAgNkQxMDogMDAgMDAgMDAgMDAgQ0MgQ0MgQ0MgQ0MgQ0Mg
Q0MgNzYgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi52Li4uLi4KICAgIDZEMjA6IDAwIDAwIDAw
IDAwIEM2IEM2IEM2IEM2IDZDIDM4IDEwIDAwIDAwIDAwIDAwIDAwICAuLi4uLi4uLmw4Li4uLi4u
CiAgICA2RDMwOiAwMCAwMCAwMCAwMCBDNiBDNiBENiBENiBENiBGRSA2QyAwMCAwMCAwMCAwMCAw
MCAgLi4uLi4uLi4uLmwuLi4uLgogICAgNkQ0MDogMDAgMDAgMDAgMDAgQzYgQzYgNkMgMzggNkMg
QzYgQzYgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLmw4bC4uLi4uLi4KICAgIDZENTA6IDAwIDAwIDAw
IDAwIEM2IEM2IEM2IEM2IENFIDc2IDA2IEM2IDdDIDAwIDAwIDAwICAuLi4uLi4uLi52Li58Li4u
CiAgICA2RDYwOiAwMCAwMCAwMCAwMCBGRSA4NiAwQyAxOCAzMCA2MiBGRSAwMCAwMCAwMCAwMCAw
MCAgLi4uLi4uLi4wYi4uLi4uLgogICAgNkQ3MDogMDAgMEUgMTggMTggMTggNzAgMTggMTggMTgg
MTggMEUgMDAgMDAgMDAgMDAgMDAgIC4uLi4ucC4uLi4uLi4uLi4KICAgIDZEODA6IDAwIDE4IDE4
IDE4IDE4IDAwIDE4IDE4IDE4IDE4IDE4IDAwIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4u
CiAgICA2RDkwOiAwMCA3MCAxOCAxOCAxOCAwRSAxOCAxOCAxOCAxOCA3MCAwMCAwMCAwMCAwMCAw
MCAgLnAuLi4uLi4uLnAuLi4uLgogICAgNkRBMDogMDAgNzYgREMgMDAgMDAgMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgIC52Li4uLi4uLi4uLi4uLi4KICAgIDZEQjA6IDAwIDAwIDAw
IDAwIDEwIDM4IDM4IDZDIDZDIEZFIDAwIDAwIDAwIDAwIDAwIDAwICAuLi4uLjg4bGwuLi4uLi4u
CiAgICA2REMwOiAwMCAzQyA2NiBDMCBDMCBDMCBDNiA2NiAzQyAxOCAwQyBDQyAzOCAwMCAwMCAw
MCAgLjxmLi4uLmY8Li4uOC4uLgogICAgNkREMDogMDAgQzYgMDAgMDAgQzYgQzYgQzYgQzYgQzYg
Q0UgNzYgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi52Li4uLi4KICAgIDZERTA6IDBDIDE4IDMw
IDAwIDdDIEM2IEM2IEZFIEMwIEM2IDdDIDAwIDAwIDAwIDAwIDAwICAuLjAufC4uLi4ufC4uLi4u
CiAgICA2REYwOiAzMCA3OCBDQyAwMCA3OCAwQyA3QyBDQyBDQyBEQyA3NiAwMCAwMCAwMCAwMCAw
MCAgMHguLngufC4uLnYuLi4uLgogICAgNkUwMDogMDAgQ0MgMDAgMDAgNzggMEMgN0MgQ0MgQ0Mg
REMgNzYgMDAgMDAgMDAgMDAgMDAgIC4uLi54LnwuLi52Li4uLi4KICAgIDZFMTA6IDYwIDMwIDE4
IDAwIDc4IDBDIDdDIENDIENDIERDIDc2IDAwIDAwIDAwIDAwIDAwICBgMC4ueC58Li4udi4uLi4u
CiAgICA2RTIwOiAzOCA2QyAzOCAwMCA3OCAwQyA3QyBDQyBDQyBEQyA3NiAwMCAwMCAwMCAwMCAw
MCAgOGw4LngufC4uLnYuLi4uLgogICAgNkUzMDogMDAgMDAgMDAgN0MgQzYgQzAgQzAgQzYgN0Mg
MTggMEMgNkMgMzggMDAgMDAgMDAgIC4uLnwuLi4ufC4ubDguLi4KICAgIDZFNDA6IDMwIDc4IEND
IDAwIDdDIEM2IEM2IEZFIEMwIEM2IDdDIDAwIDAwIDAwIDAwIDAwICAweC4ufC4uLi4ufC4uLi4u
CiAgICA2RTUwOiAwMCBDQyAwMCAwMCA3QyBDNiBDNiBGRSBDMCBDNiA3QyAwMCAwMCAwMCAwMCAw
MCAgLi4uLnwuLi4uLnwuLi4uLgogICAgNkU2MDogMzAgMTggMEMgMDAgN0MgQzYgQzYgRkUgQzAg
QzYgN0MgMDAgMDAgMDAgMDAgMDAgIDAuLi58Li4uLi58Li4uLi4KICAgIDZFNzA6IDAwIDY2IDAw
IDAwIDM4IDE4IDE4IDE4IDE4IDE4IDNDIDAwIDAwIDAwIDAwIDAwICAuZi4uOC4uLi4uPC4uLi4u
CiAgICA2RTgwOiAxOCAzQyA2NiAwMCAzOCAxOCAxOCAxOCAxOCAxOCAzQyAwMCAwMCAwMCAwMCAw
MCAgLjxmLjguLi4uLjwuLi4uLgogICAgNkU5MDogMDAgMDAgMDAgMDAgMzggMTggMTggMTggMTgg
MTggM0MgMDAgMDAgMDAgMDAgMDAgIC4uLi44Li4uLi48Li4uLi4KICAgIDZFQTA6IEM2IDAwIDM4
IDZDIEM2IEM2IEM2IEZFIEM2IEM2IEM2IDAwIDAwIDAwIDAwIDM4ICAuLjhsLi4uLi4uLi4uLi44
CiAgICA2RUIwOiA2QyAzOCAwMCAzOCA2QyBDNiBDNiBGRSBDNiBDNiBDNiAwMCAwMCAwMCAwMCAw
QyAgbDguOGwuLi4uLi4uLi4uLgogICAgNkVDMDogMTggMzAgMDAgRkUgNjAgNjAgN0MgNjAgNjAg
NjAgRkUgMDAgMDAgMDAgMDAgMDAgIC4wLi5gYHxgYGAuLi4uLi4KICAgIDZFRDA6IDAwIDAwIDAw
IDY2IERCIDFCIDdGIEQ4IEQ4IERGIDc2IDAwIDAwIDAwIDAwIDAwICAuLi5mLi4uLi4udi4uLi4u
CiAgICA2RUUwOiAwMCA3RSBEOCBEOCBEOCBEOCBGRSBEOCBEOCBEOCBERSAwMCAwMCAwMCAwMCAw
MCAgLn4uLi4uLi4uLi4uLi4uLgogICAgNkVGMDogMzAgNzggQ0MgMDAgN0MgQzYgQzYgQzYgQzYg
QzYgN0MgMDAgMDAgMDAgMDAgMDAgIDB4Li58Li4uLi58Li4uLi4KICAgIDZGMDA6IDAwIEM2IDAw
IDAwIDdDIEM2IEM2IEM2IEM2IEM2IDdDIDAwIDAwIDAwIDAwIDAwICAuLi4ufC4uLi4ufC4uLi4u
CiAgICA2RjEwOiAzMCAxOCAwQyAwMCA3QyBDNiBDNiBDNiBDNiBDNiA3QyAwMCAwMCAwMCAwMCAw
MCAgMC4uLnwuLi4uLnwuLi4uLgogICAgNkYyMDogMzAgNzggQ0MgMDAgQzYgQzYgQzYgQzYgQzYg
Q0UgNzYgMDAgMDAgMDAgMDAgMDAgIDB4Li4uLi4uLi52Li4uLi4KICAgIDZGMzA6IDYwIDMwIDE4
IDAwIEM2IEM2IEM2IEM2IEM2IENFIDc2IDAwIDAwIDAwIDAwIDAwICBgMC4uLi4uLi4udi4uLi4u
CiAgICA2RjQwOiAxOCAwMCAzQyAxOCAxOCAxOCAxOCAxOCAxOCAxOCAzQyAwMCAwMCAwMCAwMCAw
MCAgLi48Li4uLi4uLjwuLi4uLgogICAgNkY1MDogQzYgMDAgN0MgQzYgQzYgQzYgQzYgQzYgQzYg
QzYgN0MgMDAgMDAgMDAgMDAgMDAgIC4ufC4uLi4uLi58Li4uLi4KICAgIDZGNjA6IEM2IDAwIEM2
IEM2IEM2IEM2IEM2IEM2IEM2IEM2IDdDIDAwIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4ufC4uLi4u
CiAgICA2RjcwOiAwMCAxOCAxOCA3QyBDNiBDMCBDMCBDNiA3QyAxOCAxOCAwMCAwMCAwMCAwMCAw
MCAgLi4ufC4uLi58Li4uLi4uLgogICAgNkY4MDogMzggNkMgNjAgNjAgRjAgNjAgNjAgNjAgNjYg
RjYgNkMgMDAgMDAgMDAgMDAgMDAgIDhsYGAuYGBgZi5sLi4uLi4KICAgIDZGOTA6IDY2IDY2IDY2
IDY2IDNDIDE4IDdFIDE4IDNDIDE4IDE4IDAwIDAwIDAwIDAwIDAwICBmZmZmPC5+LjwuLi4uLi4u
CiAgICA2RkEwOiAwMCAzRSA2MyA2MyAzMCAxQyAwNiA2MyA2MyAzRSAwMCAxQyAwMCAwMCAwMCAw
MCAgLj5jYzAuLmNjPi4uLi4uLgogICAgNkZCMDogMDAgMDAgMDAgMDAgM0UgNjMgMzggMEUgNjMg
M0UgMDAgMUMgMDAgMDAgMDAgMDAgIC4uLi4+YzguYz4uLi4uLi4KICAgIDZGQzA6IDBDIDE4IDMw
IDAwIDc4IDBDIDdDIENDIENDIERDIDc2IDAwIDAwIDAwIDAwIDAwICAuLjAueC58Li4udi4uLi4u
CiAgICA2RkQwOiAwQyAxOCAzMCAwMCAzOCAxOCAxOCAxOCAxOCAxOCAzQyAwMCAwMCAwMCAwMCAw
MCAgLi4wLjguLi4uLjwuLi4uLgogICAgNkZFMDogMEMgMTggMzAgMDAgN0MgQzYgQzYgQzYgQzYg
QzYgN0MgMDAgMDAgMDAgMDAgMDAgIC4uMC58Li4uLi58Li4uLi4KICAgIDZGRjA6IDE4IDMwIDYw
IDAwIENDIENDIENDIENDIENDIERDIDc2IDAwIDAwIDAwIDAwIDAwICAuMGAuLi4uLi4udi4uLi4u
CiAgICA3MDAwOiAwMCA3NiBEQyAwMCBCQyA2NiA2NiA2NiA2NiA2NiBFNiAwMCAwMCAwMCAwMCAw
MCAgLnYuLi5mZmZmZi4uLi4uLgogICAgNzAxMDogNzYgREMgMDAgQzYgQzYgRTYgRjYgREUgQ0Ug
QzYgQzYgMDAgMDAgMDAgMDAgMDAgIHYuLi4uLi4uLi4uLi4uLi4KICAgIDcwMjA6IDIxIDFFIDAw
IDFFIDMzIDYwIDYwIDY3IDYzIDMzIDFEIDAwIDAwIDAwIDAwIDAwICAhLi4uM2BgZ2MzLi4uLi4u
CiAgICA3MDMwOiA0MiAzQyAwMCAzQiA2NiA2NiA2NiAzRSAwNiA2NiAzQyAwMCAwMCAwMCAwMCAw
MCAgQjwuO2ZmZj4uZjwuLi4uLgogICAgNzA0MDogMDAgMzAgMzAgMDAgMzAgMzAgMzAgNjAgQzYg
QzYgN0MgMDAgMDAgMDAgMDAgMDAgIC4wMC4wMDBgLi58Li4uLi4KICAgIDcwNTA6IDAwIDAwIDAw
IDAwIDAwIDAwIDdFIDYwIDYwIDYwIDAwIDAwIDAwIDAwIDAwIDAwICAuLi4uLi5+YGBgLi4uLi4u
CiAgICA3MDYwOiAwMCAwMCAwMCAwMCAwMCAwMCA3RSAwNiAwNiAwNiAwMCAwMCAwMCAwMCAwMCAw
MCAgLi4uLi4ufi4uLi4uLi4uLgogICAgNzA3MDogNjAgNjAgNjIgNjYgNkMgMTggMzAgNjAgREMg
MzYgMEMgMTggM0UgMDAgMDAgMDAgIGBgYmZsLjBgLjYuLj4uLi4KICAgIDcwODA6IDYwIDYwIDYy
IDY2IDZDIDE4IDM2IDZFIERFIDM2IDdFIDA2IDA2IDAwIDAwIDAwICBgYGJmbC42bi42fi4uLi4u
CiAgICA3MDkwOiAwMCAxOCAxOCAwMCAxOCAxOCAzQyAzQyAzQyAzQyAxOCAwMCAwMCAwMCAwMCAw
MCAgLi4uLi4uPDw8PC4uLi4uLgogICAgNzBBMDogMDAgMDAgMDAgMDAgMzYgNkMgRDggNkMgMzYg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi42bC5sNi4uLi4uLi4KICAgIDcwQjA6IDAwIDAwIDAw
IDAwIEQ4IDZDIDM2IDZDIEQ4IDAwIDAwIDAwIDAwIDAwIDAwIDExICAuLi4uLmw2bC4uLi4uLi4u
CiAgICA3MEMwOiA0NCAxMSA0NCAxMSA0NCAxMSA0NCAxMSA0NCAxMSA0NCAxMSA0NCAxMSA0NCBB
QSAgRC5ELkQuRC5ELkQuRC5ELgogICAgNzBEMDogNTUgQUEgNTUgQUEgNTUgQUEgNTUgQUEgNTUg
QUEgNTUgQUEgNTUgQUEgNTUgREQgIFUuVS5VLlUuVS5VLlUuVS4KICAgIDcwRTA6IDc3IEREIDc3
IEREIDc3IEREIDc3IEREIDc3IEREIDc3IEREIDc3IEREIDc3IDE4ICB3Lncudy53Lncudy53Lncu
CiAgICA3MEYwOiAxOCAxOCAxOCAxOCAxOCAxOCAxOCAxOCAxOCAxOCAxOCAxOCAxOCAxOCAxOCAx
OCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNzEwMDogMTggMTggMTggMTggMTggMTggRjggMTggMTgg
MTggMTggMTggMTggMTggMTggMTggIC4uLi4uLi4uLi4uLi4uLi4KICAgIDcxMTA6IDE4IDE4IDE4
IDE4IEY4IDE4IEY4IDE4IDE4IDE4IDE4IDE4IDE4IDE4IDE4IDM2ICAuLi4uLi4uLi4uLi4uLi42
CiAgICA3MTIwOiAzNiAzNiAzNiAzNiAzNiAzNiBGNiAzNiAzNiAzNiAzNiAzNiAzNiAzNiAzNiAw
MCAgNjY2NjY2LjY2NjY2NjY2LgogICAgNzEzMDogMDAgMDAgMDAgMDAgMDAgMDAgRkUgMzYgMzYg
MzYgMzYgMzYgMzYgMzYgMzYgMDAgIC4uLi4uLi42NjY2NjY2Ni4KICAgIDcxNDA6IDAwIDAwIDAw
IDAwIEY4IDE4IEY4IDE4IDE4IDE4IDE4IDE4IDE4IDE4IDE4IDM2ICAuLi4uLi4uLi4uLi4uLi42
CiAgICA3MTUwOiAzNiAzNiAzNiAzNiBGNiAwNiBGNiAzNiAzNiAzNiAzNiAzNiAzNiAzNiAzNiAz
NiAgNjY2Ni4uLjY2NjY2NjY2NgogICAgNzE2MDogMzYgMzYgMzYgMzYgMzYgMzYgMzYgMzYgMzYg
MzYgMzYgMzYgMzYgMzYgMzYgMDAgIDY2NjY2NjY2NjY2NjY2Ni4KICAgIDcxNzA6IDAwIDAwIDAw
IDAwIEZFIDA2IEY2IDM2IDM2IDM2IDM2IDM2IDM2IDM2IDM2IDM2ICAuLi4uLi4uNjY2NjY2NjY2
CiAgICA3MTgwOiAzNiAzNiAzNiAzNiBGNiAwNiBGRSAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAz
NiAgNjY2Ni4uLi4uLi4uLi4uNgogICAgNzE5MDogMzYgMzYgMzYgMzYgMzYgMzYgRkUgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMTggIDY2NjY2Ni4uLi4uLi4uLi4KICAgIDcxQTA6IDE4IDE4IDE4
IDE4IEY4IDE4IEY4IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4u
CiAgICA3MUIwOiAwMCAwMCAwMCAwMCAwMCAwMCBGOCAxOCAxOCAxOCAxOCAxOCAxOCAxOCAxOCAx
OCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNzFDMDogMTggMTggMTggMTggMTggMTggMUYgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMTggIC4uLi4uLi4uLi4uLi4uLi4KICAgIDcxRDA6IDE4IDE4IDE4
IDE4IDE4IDE4IEZGIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4u
CiAgICA3MUUwOiAwMCAwMCAwMCAwMCAwMCAwMCBGRiAxOCAxOCAxOCAxOCAxOCAxOCAxOCAxOCAx
OCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNzFGMDogMTggMTggMTggMTggMTggMTggMUYgMTggMTgg
MTggMTggMTggMTggMTggMTggMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAgIDcyMDA6IDAwIDAwIDAw
IDAwIDAwIDAwIEZGIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDE4ICAuLi4uLi4uLi4uLi4uLi4u
CiAgICA3MjEwOiAxOCAxOCAxOCAxOCAxOCAxOCBGRiAxOCAxOCAxOCAxOCAxOCAxOCAxOCAxOCAx
OCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNzIyMDogMTggMTggMTggMTggMUYgMTggMUYgMTggMTgg
MTggMTggMTggMTggMTggMTggMzYgIC4uLi4uLi4uLi4uLi4uLjYKICAgIDcyMzA6IDM2IDM2IDM2
IDM2IDM2IDM2IDM3IDM2IDM2IDM2IDM2IDM2IDM2IDM2IDM2IDM2ICA2NjY2NjY3NjY2NjY2NjY2
CiAgICA3MjQwOiAzNiAzNiAzNiAzNiAzNyAzMCAzRiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAgNjY2NjcwPy4uLi4uLi4uLgogICAgNzI1MDogMDAgMDAgMDAgMDAgM0YgMzAgMzcgMzYgMzYg
MzYgMzYgMzYgMzYgMzYgMzYgMzYgIC4uLi4/MDc2NjY2NjY2NjYKICAgIDcyNjA6IDM2IDM2IDM2
IDM2IEY3IDAwIEZGIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICA2NjY2Li4uLi4uLi4uLi4u
CiAgICA3MjcwOiAwMCAwMCAwMCAwMCBGRiAwMCBGNyAzNiAzNiAzNiAzNiAzNiAzNiAzNiAzNiAz
NiAgLi4uLi4uLjY2NjY2NjY2NgogICAgNzI4MDogMzYgMzYgMzYgMzYgMzcgMzAgMzcgMzYgMzYg
MzYgMzYgMzYgMzYgMzYgMzYgMDAgIDY2NjY3MDc2NjY2NjY2Ni4KICAgIDcyOTA6IDAwIDAwIDAw
IDAwIEZGIDAwIEZGIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDM2ICAuLi4uLi4uLi4uLi4uLi42
CiAgICA3MkEwOiAzNiAzNiAzNiAzNiBGNyAwMCBGNyAzNiAzNiAzNiAzNiAzNiAzNiAzNiAzNiAx
OCAgNjY2Ni4uLjY2NjY2NjY2LgogICAgNzJCMDogMTggMTggMTggMTggRkYgMDAgRkYgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMzYgIC4uLi4uLi4uLi4uLi4uLjYKICAgIDcyQzA6IDM2IDM2IDM2
IDM2IDM2IDM2IEZGIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICA2NjY2NjYuLi4uLi4uLi4u
CiAgICA3MkQwOiAwMCAwMCAwMCAwMCBGRiAwMCBGRiAxOCAxOCAxOCAxOCAxOCAxOCAxOCAxOCAw
MCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNzJFMDogMDAgMDAgMDAgMDAgMDAgMDAgRkYgMzYgMzYg
MzYgMzYgMzYgMzYgMzYgMzYgMzYgIC4uLi4uLi42NjY2NjY2NjYKICAgIDcyRjA6IDM2IDM2IDM2
IDM2IDM2IDM2IDNGIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDE4ICA2NjY2NjY/Li4uLi4uLi4u
CiAgICA3MzAwOiAxOCAxOCAxOCAxOCAxRiAxOCAxRiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNzMxMDogMDAgMDAgMDAgMDAgMUYgMTggMUYgMTggMTgg
MTggMTggMTggMTggMTggMTggMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAgIDczMjA6IDAwIDAwIDAw
IDAwIDAwIDAwIDNGIDM2IDM2IDM2IDM2IDM2IDM2IDM2IDM2IDM2ICAuLi4uLi4/NjY2NjY2NjY2
CiAgICA3MzMwOiAzNiAzNiAzNiAzNiAzNiAzNiBGRiAzNiAzNiAzNiAzNiAzNiAzNiAzNiAzNiAx
OCAgNjY2NjY2LjY2NjY2NjY2LgogICAgNzM0MDogMTggMTggMTggMTggRkYgMTggRkYgMTggMTgg
MTggMTggMTggMTggMTggMTggMTggIC4uLi4uLi4uLi4uLi4uLi4KICAgIDczNTA6IDE4IDE4IDE4
IDE4IDE4IDE4IEY4IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4u
CiAgICA3MzYwOiAwMCAwMCAwMCAwMCAwMCAwMCAxRiAxOCAxOCAxOCAxOCAxOCAxOCAxOCAxOCBG
RiAgLi4uLi4uLi4uLi4uLi4uLgogICAgNzM3MDogRkYgRkYgRkYgRkYgRkYgRkYgRkYgRkYgRkYg
RkYgRkYgRkYgRkYgRkYgRkYgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAgIDczODA6IDAwIDAwIDAw
IDAwIDAwIDAwIDAwIEZGIEZGIEZGIEZGIEZGIEZGIEZGIEZGIEYwICAuLi4uLi4uLi4uLi4uLi4u
CiAgICA3MzkwOiBGMCBGMCBGMCBGMCBGMCBGMCBGMCBGMCBGMCBGMCBGMCBGMCBGMCBGMCBGMCAw
RiAgLi4uLi4uLi4uLi4uLi4uLgogICAgNzNBMDogMEYgMEYgMEYgMEYgMEYgMEYgMEYgMEYgMEYg
MEYgMEYgMEYgMEYgMEYgMEYgRkYgIC4uLi4uLi4uLi4uLi4uLi4KICAgIDczQjA6IEZGIEZGIEZG
IEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4u
CiAgICA3M0MwOiAwMCAwMCAwMCA3NiBEQyBEOCBEOCBEOCBEOCBEQyA3NiAwMCAwMCAwMCAwMCAw
MCAgLi4udi4uLi4uLnYuLi4uLgogICAgNzNEMDogMDAgNzggQ0MgQ0MgRDggRkMgQzYgQzYgQzYg
QzYgQ0MgMDAgMDAgMDAgMDAgMDAgIC54Li4uLi4uLi4uLi4uLi4KICAgIDczRTA6IDAwIEZFIDY2
IDYyIDYwIDYwIDYwIDYwIDYwIDYwIDYwIDAwIDAwIDAwIDAwIDAwICAuLmZiYGBgYGBgYC4uLi4u
CiAgICA3M0YwOiAwMCAwMCAwMCAwMCBGRSA2QyA2QyA2QyA2QyA2QyA2QyAwMCAwMCAwMCAwMCAw
MCAgLi4uLi5sbGxsbGwuLi4uLgogICAgNzQwMDogMDAgRkUgQzYgNjIgMzAgMTggMTggMzAgNjIg
QzYgRkUgMDAgMDAgMDAgMDAgMDAgIC4uLmIwLi4wYi4uLi4uLi4KICAgIDc0MTA6IDAwIDAwIDAw
IDAwIDdFIEQ4IENDIENDIENDIEQ4IDcwIDAwIDAwIDAwIDAwIDAwICAuLi4ufi4uLi4ucC4uLi4u
CiAgICA3NDIwOiAwMCAwMCAwMCA2NiA2NiA2NiA2NiA2NiA3QyA2MCBDMCA4MCAwMCAwMCAwMCAw
MCAgLi4uZmZmZmZ8YC4uLi4uLgogICAgNzQzMDogMDAgMDAgMDAgMDAgNzYgREMgMTggMTggMTgg
MTggMTggMDAgMDAgMDAgMDAgMDAgIC4uLi52Li4uLi4uLi4uLi4KICAgIDc0NDA6IDAwIEZFIDM4
IDM4IDZDIEM2IEM2IDZDIDM4IDM4IEZFIDAwIDAwIDAwIDAwIDAwICAuLjg4bC4ubDg4Li4uLi4u
CiAgICA3NDUwOiAwMCAwMCAzOCA2QyBDNiBDNiBGRSBDNiBDNiA2QyAzOCAwMCAwMCAwMCAwMCAw
MCAgLi44bC4uLi4ubDguLi4uLgogICAgNzQ2MDogMDAgMzggNkMgQzYgQzYgQzYgQzYgNkMgNkMg
NkMgRUUgMDAgMDAgMDAgMDAgMDAgIC44bC4uLi5sbGwuLi4uLi4KICAgIDc0NzA6IDAwIDNFIDYw
IDYwIDNDIDY2IEM2IEM2IEM2IENDIDc4IDAwIDAwIDAwIDAwIDAwICAuPmBgPGYuLi4ueC4uLi4u
CiAgICA3NDgwOiAwMCAwMCAwMCAwMCA3RSBEQiBEQiBEQiA3RSAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAgLi4uLn4uLi5+Li4uLi4uLgogICAgNzQ5MDogMDAgMDIgMDYgN0MgQ0UgREUgRjYgRjYgN0Mg
NjAgQzAgMDAgMDAgMDAgMDAgMDAgIC4uLnwuLi4ufGAuLi4uLi4KICAgIDc0QTA6IDAwIDAwIDFD
IDMwIDYwIDYwIDdDIDYwIDYwIDMwIDFDIDAwIDAwIDAwIDAwIDAwICAuLi4wYGB8YGAwLi4uLi4u
CiAgICA3NEIwOiAwMCA3QyBDNiBDNiBDNiBDNiBDNiBDNiBDNiBDNiBDNiAwMCAwMCAwMCAwMCAw
MCAgLnwuLi4uLi4uLi4uLi4uLgogICAgNzRDMDogMDAgMDAgMDAgRkUgMDAgMDAgRkUgMDAgMDAg
RkUgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAgIDc0RDA6IDAwIDAwIDAw
IDE4IDE4IDdFIDE4IDE4IDAwIDAwIDdFIDAwIDAwIDAwIDAwIDAwICAuLi4uLn4uLi4ufi4uLi4u
CiAgICA3NEUwOiAwMCAzMCAxOCAwQyAwNiAwQyAxOCAzMCAwMCAwMCA3RSAwMCAwMCAwMCAwMCAw
MCAgLjAuLi4uLjAuLn4uLi4uLgogICAgNzRGMDogMDAgMEMgMTggMzAgNjAgMzAgMTggMEMgMDAg
MDAgN0UgMDAgMDAgMDAgMDAgMDAgIC4uLjBgMC4uLi5+Li4uLi4KICAgIDc1MDA6IDAwIDAwIDAw
IDBDIDFFIDFBIDE4IDE4IDE4IDE4IDE4IDE4IDE4IDE4IDE4IDE4ICAuLi4uLi4uLi4uLi4uLi4u
CiAgICA3NTEwOiAxOCAxOCAxOCAxOCAxOCAxOCAxOCAxOCAxOCA1OCA3OCAzMCAwMCAwMCAwMCAw
MCAgLi4uLi4uLi4uWHgwLi4uLgogICAgNzUyMDogMDAgMDAgMDAgMTggMTggMDAgN0UgMDAgMTgg
MTggMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLn4uLi4uLi4uLi4KICAgIDc1MzA6IDAwIDAwIDAw
IDAwIDAwIDc2IERDIDAwIDc2IERDIDAwIDAwIDAwIDAwIDAwIDAwICAuLi4uLnYuLnYuLi4uLi4u
CiAgICA3NTQwOiAwMCA3OCBDQyBDQyA3OCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAgLnguLnguLi4uLi4uLi4uLgogICAgNzU1MDogMDAgMDAgMDAgMDAgMDAgMDAgMTggMTggMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAgIDc1NjA6IDAwIDAwIDAw
IDAwIDAwIDAwIDAwIDE4IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4u
CiAgICA3NTcwOiAwMCAxRiAxOCAxOCAxOCAxOCAxOCBEOCBEOCA3OCAzOCAxOCAwMCAwMCAwMCAw
MCAgLi4uLi4uLi4ueDguLi4uLgogICAgNzU4MDogMDAgRDggNkMgNkMgNkMgNkMgNkMgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4ubGxsbGwuLi4uLi4uLi4KICAgIDc1OTA6IDAwIDcwIEQ4
IDE4IDMwIDYwIEY4IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAucC4uMGAuLi4uLi4uLi4u
CiAgICA3NUEwOiAwMCAwMCAwMCAwMCA3RSA3RSA3RSA3RSA3RSA3RSAwMCAwMCAwMCAwMCAwMCAw
MCAgLi4uLn5+fn5+fi4uLi4uLgogICAgNzVCMDogMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMUQgIC4uLi4uLi4uLi4uLi4uLi4KICAgIDc1QzA6IDAwIDAwIDAw
IDAwIDAwIDI0IDY2IEZGIDY2IDI0IDAwIDAwIDAwIDAwIDAwIDAwICAuLi4uLiRmLmYkLi4uLi4u
CiAgICA3NUQwOiAyRiAwMCAwMCAwMCAwMSAwMyAwNiAwQyAxOCAzMCA2MCBDMCA4MCAwMCAwMCAw
MCAgLy4uLi4uLi4uMGAuLi4uLgogICAgNzVFMDogMDAgMzAgMDAgMDAgN0UgQzMgQzMgQzMgREIg
REIgQzMgQzMgQzMgN0UgMDAgMDAgIC4wLi5+Li4uLi4uLi5+Li4KICAgIDc1RjA6IDAwIDAwIDRE
IDAwIDAwIEMzIEMzIEU3IEZGIEZGIERCIERCIEMzIEMzIEMzIDAwICAuLk0uLi4uLi4uLi4uLi4u
CiAgICA3NjAwOiAwMCAwMCAwMCA1NCAwMCAwMCBGRiA5OSAxOCAxOCAxOCAxOCAxOCAxOCAxOCAz
QyAgLi4uVC4uLi4uLi4uLi4uPAogICAgNzYxMDogMDAgMDAgMDAgMDAgNTYgMDAgMDAgQzMgQzMg
QzMgQzMgQzMgQzMgQzMgNjYgM0MgIC4uLi5WLi4uLi4uLi4uZjwKICAgIDc2MjA6IDE4IDAwIDAw
IDAwIDAwIDU3IDAwIDAwIEMzIEMzIEMzIEMzIERCIERCIERCIERCICAuLi4uLlcuLi4uLi4uLi4u
CiAgICA3NjMwOiBGRiA2NiAwMCAwMCAwMCAwMCA1OCAwMCAwMCBDMyBDMyBDMyA2NiAzQyAzQyA2
NiAgLmYuLi4uWC4uLi4uZjw8ZgogICAgNzY0MDogQzMgQzMgQzMgMDAgMDAgMDAgMDAgNTkgMDAg
MDAgQzMgQzMgQzMgQzMgNjYgM0MgIC4uLi4uLi5ZLi4uLi4uZjwKICAgIDc2NTA6IDE4IDE4IDE4
IDNDIDAwIDAwIDAwIDAwIDVDIDAwIDAwIDAwIDgwIEMwIDYwIDMwICAuLi48Li4uLlwuLi4uLmAw
CiAgICA3NjYwOiAxOCAwQyAwNiAwMyAwMSAwMCAwMCAwMCAwMCA2RCAwMCAwMCAwMCAwMCAwMCA2
NiAgLi4uLi4uLi4ubS4uLi4uZgogICAgNzY3MDogRkYgREIgREIgREIgQzMgQzMgMDAgMDAgMDAg
MDAgNzYgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi52Li4uLi4KICAgIDc2ODA6IEMzIEMzIEMz
IEMzIDY2IDNDIDE4IDAwIDAwIDAwIDAwIDc3IDAwIDAwIDAwIDAwICAuLi4uZjwuLi4uLncuLi4u
CiAgICA3NjkwOiAwMCBDMyBDMyBEQiBEQiBEQiBGRiA2NiAwMCAwMCAwMCAwMCAwMCAwMCA1NyA2
NSAgLi4uLi4uLmYuLi4uLi5XZQogICAgNzZBMDogQzMgMEIgREIgNzQgMDMgRTkgNDYgMDEgNTcg
MzIgQzAgQjkgNDAgMDAgRjMgQUEgIC4uLnQuLkYuVzIuLkAuLi4KICAgIDc2QjA6IDVGIEJCIEU3
IDkyIDI2IDg5IDFEIDI2IDhDIDREIDAyIDJFIDhFIDFFIEQxIDAzICBfLi4uJi4uJi5NLi4uLi4u
CiAgICA3NkMwOiA1NyBCRSA0OSAwNCBCOSAxRSAwMCA4MyBDNyAwNCBGQyA4QSAwNCAyNiA4OCAw
NSAgVy5JLi4uLi4uLi4uLiYuLgogICAgNzZEMDogNDYgNDcgRTIgRjcgNUYgQTAgODQgMDQgRkUg
QzAgMjYgODggNDUgMjIgQTEgODUgIEZHLi5fLi4uLi4mLkUiLi4KICAgIDc2RTA6IDA0IDI2IDg5
IDQ1IDIzIDU3IEU4IDlDIDFCIDVGIDI2IDg4IDVEIDI1IDI2IDg4ICAuJi5FI1cuLi5fJi5dJSYu
CiAgICA3NkYwOiA3RCAyNiA4QSAxRSA0OSAwNCBFOCBGQyAwNSA3NCAwNSA4MCBGQiAxMyA3RiAx
RCAgfSYuLkkuLi4udC4uLi4uLgogICAgNzcwMDogMzIgRkYgRDEgRTMgMkUgOEEgODcgQkYgOTIg
MzIgRTQgMEEgQzAgNzQgMDEgNDAgIDIuLi4uLi4uLjIuLi50LkAKICAgIDc3MTA6IDI2IDg5IDQ1
IDI3IDJFIDhBIDg3IEMwIDkyIDI2IDg4IDQ1IDI5IEExIDg1IDA0ICAmLkUnLi4uLi4mLkUpLi4u
CiAgICA3NzIwOiA4QSAxNiA4NCAwNCBGRSBDMiBGNiBFMiBCMiAwMCAzRCBDOCAwMCA3RSAxNSBC
MiAgLi4uLi4uLi4uLj0uLn4uLgogICAgNzczMDogMDEgM0QgNUUgMDEgN0UgMEUgQjIgMDIgM0Qg
OTAgMDEgN0UgMDcgQjIgMDMgM0QgIC49Xi5+Li4uPS4ufi4uLj0KICAgIDc3NDA6IEUwIDAxIDdF
IDAwIDI2IDg4IDU1IDJBIDhBIDI2IDg3IDA0IDhBIEM0IDI0IDAxICAuLn4uJi5VKi4mLi4uLiQu
CiAgICA3NzUwOiBDMCBFMCAwNCA4MCBFNCAwMiBEMCBFNCAwQSBFMCA4MCBGNCAxMCBBMCA4OSAw
NCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNzc2MDogMjQgMEEgMEEgRTAgRTggOTQgMDggQjIgQzAg
QjAgMzAgRUUgNDIgRUMgMjQgMDggICQuLi4uLi4uLi4wLkIuJC4KICAgIDc3NzA6IEMwIEUwIDAy
IDBBIEM0IDBDIDAxIDI2IDg4IDQ1IDJEIEIwIDAzIDI2IDg4IDQ1ICAuLi4uLi4uJi5FLS4uJi5F
CiAgICA3NzgwOiAzMSBFOCA3NyAwOCAxRSAwNiAzMiBEMiBDNCAxRSBBOCAwNCA4QyBDMSA4QyBD
RSAgMS53Li4uMi4uLi4uLi4uLgogICAgNzc5MDogM0IgQ0UgNzQgMzQgMjYgQzUgNzcgMDQgOEMg
RDkgMEIgRjEgNzQgMDMgODAgQ0EgIDsudDQmLncuLi4uLnQuLi4KICAgIDc3QTA6IDEwIDI2IEM1
IDc3IDBDIDhDIEQ5IDBCIEYxIDc0IDAzIDgwIENBIDA4IDI2IEM1ICAuJi53Li4uLi50Li4uLiYu
CiAgICA3N0IwOiA3NyAwOCA4QyBEOSAwQiBGMSA3NCAwMyA4MCBDQSAwNCAyNiBDNSA3NyAxMCA4
QyAgdy4uLi4udC4uLi4mLncuLgogICAgNzdDMDogRDkgMEIgRjEgNzQgMDMgODAgQ0EgMDEgMDcg
MUYgMjYgODggNTUgMzIgQjAgMDMgIC4uLnQuLi4uLi4mLlUyLi4KICAgIDc3RDA6IEJBIEM0IDAz
IEU4IEU0IDA0IDhBIEUwIEMwIEVDIDAyIDhBIEQ0IDhBIEYyIEQwICAuLi4uLi4uLi4uLi4uLi4u
CiAgICA3N0UwOiBFRSA4MSBFMiAwNCAwNCAyNSAwMyAwMyAwQiBDMiAyNiA4OSA0NSAyQiA4QiBF
QyAgLi4uLi4lLi4uLiYuRSsuLgogICAgNzdGMDogQzYgNDYgMUEgMUIgQzMgMEEgQzAgNzQgMEYg
RkUgQzggNzQgMzYgRkUgQzggNzQgIC5GLi4uLi50Li4udDYuLnQKICAgIDc4MDA6IDU2IDhCIEVD
IEM2IDQ2IDFBIDAwIEMzIEI4IDIwIDAwIEY2IEMxIDAxIDc0IDAzICBWLi4uRi4uLi4gLi4uLnQu
CiAgICA3ODEwOiA4MyBDMCA2MCBGNiBDMSAwMiA3NCAwMyA4MyBDMCAzQSBGNiBDMSAwNCA3NCAw
MyAgLi5gLi4udC4uLjouLi50LgogICAgNzgyMDogMDUgMDMgMDMgODMgQzAgM0YgQzEgRTggMDYg
OEIgRUMgODkgNDYgMEUgQzYgNDYgIC4uLi4uPy4uLi4uLkYuLkYKICAgIDc4MzA6IDFBIDFDIEMz
IDhCIEZCIDgzIEM3IDIwIEY2IEMxIDAxIDc0IDAzIEU4IDg1IDAwICAuLi4uLi4uIC4uLnQuLi4u
CiAgICA3ODQwOiBGNiBDMSAwMiA3NCAwMyBFOCBFRiAwMCBGNiBDMSAwNCA3NCAwMyBFOCBGOCAw
MSAgLi4udC4uLi4uLi50Li4uLgogICAgNzg1MDogOEIgRUMgQzYgNDYgMUEgMUMgQzMgRjYgQzEg
MDEgNzQgMDYgRTggRDkgMTQgRTggIC4uLkYuLi4uLi50Li4uLi4KICAgIDc4NjA6IDI1IDAxIEY2
IEMxIDAyIDc0IDAzIEU4IDg1IDAxIEY2IEMxIDA0IDc0IDAzIEU4ICAlLi4uLnQuLi4uLi4udC4u
CiAgICA3ODcwOiAxMiAwMiBFQiBEQyA4QSBDNCBFRSA0MiBFQyBBQSBGRSBDNCA0QSBFMiBGNSBD
MyAgLi4uLi4uLkIuLi4uSi4uLgogICAgNzg4MDogRTggNkIgMDQgQkQgQzAgMDMgQjkgMTUgMDAg
MzIgRTQgRUMgODcgRUEgOEEgQzQgIC5rLi4uLi4uLjIuLi4uLi4KICAgIDc4OTA6IEVFIDQyIEVD
IEFBIEZFIEM0IDRBIDg3IEVBIEUyIEYwIEVDIDg3IEVBIEIwIDIwICAuQi4uLi5KLi4uLi4uLi4g
CiAgICA3OEEwOiBFRSBDMyAyNiA4QSAwNSA4OCAwNCA0NyA0NiBFMiBGNyBDMyAyNiA4QSAyNSBF
RiAgLi4mLi4uLkdGLi4uJi4lLgogICAgNzhCMDogNDcgRkUgQzAgRTIgRjcgQzMgQjIgQzAgOEEg
QzQgRUUgMjYgOEEgMDUgNDcgRkUgIEcuLi4uLi4uLi4uJi4uRy4KICAgIDc4QzA6IEM0IEVFIEUy
IEY0IEMzIDlDIEZBIDUxIDU3IDhCIEM3IDJCIEMzIDI2IDg5IDA3ICAuLi4uLi4uUVcuLisuJi4u
CiAgICA3OEQwOiA4QiBGNyBFOCAwQSAwNCBFQyAyNiA4OCA0NCAwMSAyNiA4OSA1NCA0MSBCMiBD
RSAgLi4uLi4uJi5ELiYuVEEuLgogICAgNzhFMDogRUMgMjYgODggNDQgMDIgQjIgQ0MgRUMgMjYg
ODggNDQgMDkgQjIgQ0EgRUMgMjYgIC4mLkQuLi4uJi5ELi4uLiYKICAgIDc4RjA6IDg4IDQ0IDA0
IEIyIEM0IEVDIDI2IDg4IDA0IDgzIEM3IDA1IEI5IDA0IDAwIEI0ICAuRC4uLi4mLi4uLi4uLi4u
CiAgICA3OTAwOiAwMSBFOCA3MCBGRiAyNiA4QSAwNCBFRSA4QiBGRSA4MyBDNyAwQSAyNiA4QiA1
NCAgLi5wLiYuLi4uLi4uLiYuVAogICAgNzkxMDogNDEgMzIgRTQgQjkgMTkgMDAgRTggNUIgRkYg
MjYgOEEgNDQgMDEgRUUgRTggNUYgIEEyLi4uLi5bLiYuRC4uLl8KICAgIDc5MjA6IEZGIEIyIENF
IDMyIEU0IEI5IDA5IDAwIEU4IDQ5IEZGIDI2IDhBIDQ0IDAyIEVFICAuLi4yLi4uLi5JLiYuRC4u
CiAgICA3OTMwOiA1RiA1OSA4MyBDNyA2MCA5RCBDMyA5QyBGQSA4QiBDNyAyQiBDMyAyNiA4OSA0
NyAgX1kuLmAuLi4uLi4rLiYuRwogICAgNzk0MDogMDIgNTEgNTcgMkUgOEUgMUUgRDEgMDMgQTAg
MTAgMDQgMjQgMzAgQUEgQkUgNDkgIC5RVy4uLi4uLi4uJDAuLkkKICAgIDc5NTA6IDA0IEI5IDFF
IDAwIEYzIEE0IEJFIDg0IDA0IEIxIDA3IEYzIEE0IEJFIEE4IDA0ICAuLi4uLi4uLi4uLi4uLi4u
CiAgICA3OTYwOiBCMSAwNCBGMyBBNCBCRSAxNCAwMCBCMSAwNCBGMyBBNCBCRSA3NCAwMCBCMSAw
NCAgLi4uLi4uLi4uLi4udC4uLgogICAgNzk3MDogRjMgQTQgQkUgN0MgMDAgQjEgMDQgRjMgQTQg
QkUgMEMgMDEgQjEgMDQgRjMgQTQgIC4uLnwuLi4uLi4uLi4uLi4KICAgIDc5ODA6IDVGIDU5IDgz
IEM3IDNBIDlEIEMzIDlDIEZBIDI2IDhCIDNGIDAzIEZCIDhCIEY3ICBfWS4uOi4uLi4mLj8uLi4u
CiAgICA3OTkwOiA1MSA4QiBGRSA4MyBDNyAwNSBCQSBDNCAwMyBCOCAwMCAwMSBFRiBCMCAwMSBC
OSAgUS4uLi4uLi4uLi4uLi4uLgogICAgNzlBMDogMDQgMDAgRTggMDcgRkYgNDcgQjIgQzIgMjYg
OEEgNDQgMDkgRUUgQjIgQzQgQjggIC4uLi4uRy4uJi5ELi4uLi4KICAgIDc5QjA6IDAwIDAzIEVG
IDI2IDhBIDA0IEVFIDI2IDhCIDU0IDQxIEI4IDExIDAwIEVGIEIxICAuLi4mLi4uJi5UQS4uLi4u
CiAgICA3OUMwOiAxOSAzMiBDMCBFOCBFNiBGRSAyNiA4QSA0NCAwMSBFRSA4MCBDMiAwNiAyNiA4
QSAgLjIuLi4uJi5ELi4uLi4mLgogICAgNzlEMDogNDQgMDQgRUUgRUMgQjEgMTUgMzIgRTQgRTgg
REIgRkUgQjAgMjAgRUUgQjEgMDkgIEQuLi4uLjIuLi4uLiAuLi4KICAgIDc5RTA6IDMyIEMwIEIy
IENFIEU4IEM1IEZFIDI2IDhBIDQ0IDAyIEVFIDU5IDlEIEMzIDlDICAyLi4uLi4uJi5ELi5ZLi4u
CiAgICA3OUYwOiBGQSAyNiA4QiA3RiAwMiAwMyBGQiAwNiA1MSAyRSA4RSAxRSBEMSAwMyAyNiA4
QSAgLiYuLi4uLi5RLi4uLi4mLgogICAgN0EwMDogMDUgODAgMjYgMTAgMDQgQ0YgMDggMDYgMTAg
MDQgNDcgQkUgNDkgMDQgQjkgMUUgIC4uJi4uLi4uLi5HLkkuLi4KICAgIDdBMTA6IDAwIEU4IDhF
IEZFIEJFIDg0IDA0IEIxIDA3IEU4IDg2IEZFIEJFIEE4IDA0IEIxICAuLi4uLi4uLi4uLi4uLi4u
CiAgICA3QTIwOiAwNCBFOCA3RSBGRSBCRSAxNCAwMCBCMSAwNCBFOCA3NiBGRSBCRSA3NCAwMCBC
MSAgLi5+Li4uLi4uLnYuLnQuLgogICAgN0EzMDogMDQgRTggNkUgRkUgQkUgN0MgMDAgQjEgMDQg
RTggNjYgRkUgQkUgMEMgMDEgQjEgIC4ubi4ufC4uLi5mLi4uLi4KICAgIDdBNDA6IDA0IEU4IDVF
IEZFIDU5IDA3IDlEIEMzIDlDIEZBIDhCIEM3IDJCIEMzIDI2IDg5ICAuLl4uWS4uLi4uLi4rLiYu
CiAgICA3QTUwOiA0NyAwNCBFOCBBNiAwNSBCMiBDMCBCMCAzNCBFRSA0MiBFQyAyNiA4OCAwNSBC
QSAgRy4uLi4uLi40LkIuJi4uLgogICAgN0E2MDogQzggMDMgRUMgMjYgODggNDUgMDEgNTAgNEEg
NEEgRUMgMjYgODggNDUgMDIgODMgIC4uLiYuRS5QSkouJi5FLi4KICAgIDdBNzA6IEM3IDAzIEI5
IDAwIDAzIDQyIDMyIEMwIEVFIDQyIDQyIEVDIEFBIEUyIEZDIDU4ICAuLi4uLkIyLi5CQi4uLi5Y
CiAgICA3QTgwOiA0QSBFRSA5RCBDMyA5QyBGQSAyNiA4QiA3NyAwNCAwMyBGMyBFOCA2QyAwNSBC
MiAgSi4uLi4uJi53Li4uLmwuLgogICAgN0E5MDogQzAgQjAgMzQgRUUgMjYgOEEgMDQgRUUgQkEg
QzYgMDMgMjYgOEEgNDQgMDIgRUUgIC4uNC4mLi4uLi4uJi5ELi4KICAgIDdBQTA6IDU2IDQyIDQy
IDgzIEM2IDAzIDMyIEMwIEVFIDQyIEI5IDAwIDAzIDI2IDhBIDA0ICBWQkIuLi4yLi5CLi4uJi4u
CiAgICA3QUIwOiBFRSA0NiBFMiBGOSA1RSBGRSBDQSAyNiA4QSA0NCAwMSBFRSA5RCBDMyBCQSBD
QyAgLkYuLl4uLiYuRC4uLi4uLgogICAgN0FDMDogMDMgRUMgMjQgRkUgMEEgQzQgQjIgQzIgRUUg
QzMgRTggNkIgMTIgQjIgQzAgODYgIC4uJC4uLi4uLi4uay4uLi4KICAgIDdBRDA6IEM0IEVFIEVC
IDAwIEVCIDAwIDg2IEM0IEVFIEVCIDAwIEVCIDAwIEIwIDIwIEVFICAuLi4uLi4uLi4uLi4uLiAu
CiAgICA3QUUwOiBDMyA1MCA4QSBFMCA4MCBFNCA4MCA4MCAyNiA4NyAwNCA3RiAwOCAyNiA4NyAw
NCAgLlAuLi4uLi4mLi4uLiYuLgogICAgN0FGMDogMjQgN0YgOEEgRTAgM0MgMDcgN0UgMUUgMjYg
RjYgNDcgMzMgMDEgNzUgMTcgM0MgICQuLi48Ln4uJi5HMy51LjwKICAgIDdCMDA6IDIzIDc0IDEz
IDNDIDMyIDc0IDBGIDNDIDMzIDc0IDBCIEI0IDAzIDI2IEY2IDQ3ICAjdC48MnQuPDN0Li4uJi5H
CiAgICA3QjEwOiAwOSAwMSA3NSAwMiBCNCAwNyA4OCAyNiA0OSAwNCBCQSBCNCAwMyA4MCAwRSA4
NyAgLi51Li4uLiZJLi4uLi4uLgogICAgN0IyMDogMDQgMDIgMjYgRjYgNDcgMDkgMDEgNzQgMDcg
QjIgRDQgODAgMjYgODcgMDQgRkQgIC4uJi5HLi50Li4uLiYuLi4KICAgIDdCMzA6IDg5IDE2IDYz
IDA0IEM3IDA2IDRFIDA0IDAwIDAwIEM2IDA2IDYyIDA0IDAwIEI5ICAuLmMuLi5OLi4uLi5iLi4u
CiAgICA3QjQwOiAwOCAwMCBCRiA1MCAwNCBGQyAwNiAxRSAwNyAzMyBDMCBGMyBBQiAwNyAyNiA4
QSAgLi4uUC4uLi4uMy4uLi4mLgogICAgN0I1MDogMDcgMzIgRTQgQTMgNEEgMDQgMjYgOEEgNDcg
MDEgQTIgODQgMDQgMjYgOEEgNDcgIC4yLi5KLiYuRy4uLi4mLkcKICAgIDdCNjA6IDAyIEEzIDg1
IDA0IDI2IDhCIDQ3IDAzIEEzIDRDIDA0IDI2IDhCIDQ3IDE0IDg2ICAuLi4uJi5HLi5MLiYuRy4u
CiAgICA3QjcwOiBDNCBBMyA2MCAwNCA1OCBDMyA1MiAzMiBFNCAzMyBEMiBCMCAwRCBDRCAxNyBG
NiAgLi5gLlguUjIuMy4uLi4uLgogICAgN0I4MDogQzQgMjkgNzUgMDggMzIgRTQgMzMgRDIgQjAg
MEEgQ0QgMTcgNUEgQzMgMDYgMUUgIC4pdS4yLjMuLi4uLlouLi4KICAgIDdCOTA6IDYwIDJFIDhF
IDFFIEQxIDAzIDJFIDgzIDBFIERCIDAzIDAwIDc1IDZFIDgwIDNFICBgLi4uLi4uLi4uLi51bi4+
CiAgICA3QkEwOiAwMCAwNSAwMSA3NCA2NyBDNiAwNiAwMCAwNSAwMSA4QSAxRSA2MiAwNCAzMiBG
RiAgLi4udGcuLi4uLi4uYi4yLgogICAgN0JCMDogRDEgRTMgOEIgRkIgOEIgODUgNTAgMDQgOEEg
M0UgNjIgMDQgNTAgMzIgRjYgOEEgIC4uLi4uLlAuLj5iLlAyLi4KICAgIDdCQzA6IDBFIDg0IDA0
IDMyIEVEIDQxIDUxIDhCIDBFIDRBIDA0IDMyIEQyIEU4IEE2IEZGICAuLi4yLkFRLi5KLjIuLi4u
CiAgICA3QkQwOiBGNiBDNCAyOSA3NSAzRCA1MSA1MiA4OSA5NSA1MCAwNCBCNCAwOCBFOCA3QyBE
MyAgLi4pdT1RUi4uUC4uLi58LgogICAgN0JFMDogMEEgQzAgNzUgMDIgQjAgMjAgMzMgRDIgMzIg
RTQgQ0QgMTcgRjYgQzQgMjkgNzUgIC4udS4uIDMuMi4uLi4uKXUKICAgIDdCRjA6IDFGIDVBIEZF
IEMyIDU5IEUyIERFIEZFIEM2IDU5IEUyIENBIEU4IDc3IEZGIDMyICAuWi4uWS4uLi5ZLi4udy4y
CiAgICA3QzAwOiBDMCBBMiAwMCAwNSA1OCA4OSA4NSA1MCAwNCBFOCBBRiAwMyA2MSAxRiAwNyBD
RiAgLi4uLlguLlAuLi4uYS4uLgogICAgN0MxMDogNUEgNTkgNTkgQjAgRkYgRUIgRUEgNTIgMkEg
RjUgMzggQzYgN0QgMDIgMzIgQzAgIFpZWS4uLi5SKi44Ln0uMi4KICAgIDdDMjA6IDJFIDhFIDA2
IEQzIDAzIDVBIEMzIEEwIDg1IDA0IEY2IEUzIDhBIEY3IDhCIEQ4ICAuLi4uLlouLi4uLi4uLi4u
CiAgICA3QzMwOiA4QiBDQSBCQSBDNCAwMyBCOCAwMiAwRiBFRiBCNCAwMiBFOCA2RCAwMCA4QiBE
MSAgLi4uLi4uLi4uLi4ubS4uLgogICAgN0M0MDogMzIgRUQgOEEgRTYgOEEgQzYgRjMgQUEgMDMg
RkQgOEEgQ0EgNEIgNzUgRjcgMzIgIDIuLi4uLi4uLi4uLkt1LjIKICAgIDdDNTA6IEU0IEU4IDU3
IDAwIEMzIDUzIDhBIDFFIDYyIDA0IDBCIEMwIDc1IDA0IDBBIERCICAuLlcuLlMuLmIuLi51Li4u
CiAgICA3QzYwOiA3NCAwMyBFOCAzNSAwMyA1QiA4QiBGOCAyQiBEMSA4MSBDMiAwMSAwMSA4QSBD
MyAgdC4uNS5bLi4rLi4uLi4uLgogICAgN0M3MDogMzIgRTQgQzMgOEEgQzYgMzIgRjYgMkIgRUEg
MEEgREIgNzQgMkEgMkEgQzMgRjYgIDIuLi4uMi4rLi4udCoqLi4KICAgIDdDODA6IDI2IDg1IDA0
IDhCIEM4IDUyIEI0IDAxIEU4IDIwIDAwIEIyIEM0IEI4IDAyIDBGICAmLi4uLlIuLi4gLi4uLi4u
CiAgICA3QzkwOiBFRiA1QSAxRSAwNiAxRiA4QiBDMSA4QiBDQSBGMyBBNCAwMyBGNSAwMyBGRCA0
OCAgLlouLi4uLi4uLi4uLi4uSAogICAgN0NBMDogNzUgRjUgMUYgRTggODEgRkYgQzMgOEEgRDgg
RUIgRjggQkEgQ0UgMDMgQjAgMDUgIHUuLi4uLi4uLi4uLi4uLi4KICAgIDdDQjA6IEVFIDQyIEVD
IDI0IEZDIDBBIEM0IEVFIDRBIEMzIDlDIEZBIEVFIDQyIEVCIDAwICAuQi4kLi4uLkouLi4uQi4u
CiAgICA3Q0MwOiBFQyA0QSA5RCBDMyAxRSAyRSA4RSAxRSBEMSAwMyA4QiAxNiA2MyAwNCA4MCBD
MiAgLkouLi4uLi4uLi4uYy4uLgogICAgN0NEMDogMDYgMUYgQzMgMUUgMkUgOEUgMUUgRDEgMDMg
OEIgMTYgNjMgMDQgMUYgQzMgNTAgIC4uLi4uLi4uLi4uYy4uLlAKICAgIDdDRTA6IEJBIENDIDAz
IEVDIEIyIEQ0IEE4IDAxIDc1IDAyIEIyIEI0IDU4IEMzIEU4IEVFICAuLi4uLi4uLnUuLi5YLi4u
CiAgICA3Q0YwOiBGRiA4MCBDMiAwNiBDMyAxRSAyRSA4RSAxRSBEMSAwMyA4MCAzRSA0OSAwNCAw
MyAgLi4uLi4uLi4uLi4uPkkuLgogICAgN0QwMDogNzQgMTMgODAgM0UgNDkgMDQgMDIgNzQgMEMg
ODAgM0UgNDkgMDQgMDEgNzQgMDUgIHQuLj5JLi50Li4+SS4udC4KICAgIDdEMTA6IDgwIDNFIDQ5
IDA0IDAwIDFGIEMzIDUwIDJFIDhFIDA2IEQ1IDAzIEEwIDEwIDA0ICAuPkkuLi4uUC4uLi4uLi4u
CiAgICA3RDIwOiAyNCAzMCAzQyAzMCA3NCAwNSAyRSA4RSAwNiBENyAwMyA1OCAwQiBDMCA3NCAw
MyAgJDA8MHQuLi4uLi5YLi50LgogICAgN0QzMDogRTggRTEgMDEgMDMgMDYgNEUgMDQgODEgQzIg
MDEgMDEgMkIgRDEgMzIgRUQgOEIgIC4uLi4uTi4uLi4uKy4yLi4KICAgIDdENDA6IDJFIDRBIDA0
IDhCIEY4IDhCIEYwIDhCIEM1IEY2IEUzIEQxIEUwIEQxIEU1IDBBICAuSi4uLi4uLi4uLi4uLi4u
CiAgICA3RDUwOiBEQiA3NSAwMiA4QSBERSAzOCBGMyA3RSAwMiA4QSBERSBDMyBGQyA4QSBEOCA4
QiAgLnUuLi44Ln4uLi4uLi4uLgogICAgN0Q2MDogQzEgRTggQjMgRkYgMDMgRjAgM0EgMTYgNEEg
MDQgNzQgMDYgMDYgMUYgRTggMUIgIC4uLi4uLjouSi50Li4uLi4KICAgIDdENzA6IDAwIEMzIDA2
IDFGIEU4IDQwIDAwIEMzIEZDIDhBIEQ4IDhBIEMxIDhBIEU2IEU4ICAuLi4uLkAuLi4uLi4uLi4u
CiAgICA3RDgwOiA5NSBGRiBGNyBERCAyQiBGMCAwNiAxRiBFOCAwMSAwMCBDMyA1MyA4QSBDRSAy
QSAgLi4uLisuLi4uLi4uUy4uKgogICAgN0Q5MDogQ0IgMzIgRUQgMzIgRjYgMkIgRUEgMkIgRUEg
RTMgMEUgOEEgRTEgOEIgQ0EgRjMgIC4yLjIuKy4rLi4uLi4uLi4KICAgIDdEQTA6IEE1IDAzIEY1
IDAzIEZEIEZFIENDIDc1IEY0IDU4IEIwIDIwIDhBIENBIEYzIEFCICAuLi4uLi4udS5YLiAuLi4u
CiAgICA3REIwOiAwMyBGRCBGRSBDQiA3NSBGNiBDMyA1MyA4QSBDNiAyQSBDMyA3NCAwNiBGNiBF
MiAgLi4uLnUuLlMuLioudC4uLgogICAgN0RDMDogOEIgQzggRjMgQTUgNTggOEIgQzggRjYgRTIg
OTEgQjAgMjAgRjMgQUIgQzMgOEIgIC4uLi5YLi4uLi4uIC4uLi4KICAgIDdERDA6IEQ4IEU4IDJF
IDAwIDJFIDhFIDFFIEQ3IDAzIDhBIEMzIDIyIERGIEQzIEUzIEE4ICAuLi4uLi4uLi4uLiIuLi4u
CiAgICA3REUwOiA4MCA3NCAwMyAzMCAxQyBDMyBGNiBENyA4QSAzNCAyMiBGNyAwQSBERSA4OCAx
QyAgLnQuMC4uLi4uNCIuLi4uLgogICAgN0RGMDogQzMgOEEgRkMgRTggMEMgMDAgMkUgOEUgMUUg
RDcgMDMgOEEgMDQgRDIgRTggMjIgIC4uLi4uLi4uLi4uLi4uLiIKICAgIDdFMDA6IEM3IEMzIEIw
IDI4IEY2IEUyIEY2IEMyIDAxIDc0IDAzIDA1IEQ4IDFGIDhCIEYxICAuLi4oLi4uLi50Li4uLi4u
CiAgICA3RTEwOiBDMSBFRSAwMiA4MCBGRiAwNSA3RiAwQyAwMyBGMCBGNiBEMSA4MCBFMSAwMyBE
MCAgLi4uLi4uLi4uLi4uLi4uLgogICAgN0UyMDogRTEgQjcgMDMgQzMgRDEgRUUgMDMgRjAgRjYg
RDEgODAgRTEgMDcgQjcgMDEgQzMgIC4uLi4uLi4uLi4uLi4uLi4KICAgIDdFMzA6IEZDIDhBIEQ4
IDJFIDhFIDA2IEQ3IDAzIDhCIEMxIEU4IDg2IDAwIDc1IDAyIDhBICAuLi4uLi4uLi4uLi4udS4u
CiAgICA3RTQwOiBERSAwMyBGMCBFOCAyNCAwMCBDMyBGQyA4QSBEOCAyRSA4RSAwNiBENyAwMyA4
QSAgLi4uLiQuLi4uLi4uLi4uLgogICAgN0U1MDogQzEgOEEgRTYgRTggNkQgMDAgNzUgMDIgOEEg
REUgRjcgREQgODEgQzYgRjAgMDAgIC4uLi5tLnUuLi4uLi4uLi4KICAgIDdFNjA6IDgxIEM3IEYw
IDAwIDJCIEYwIEU4IDAxIDAwIEMzIDhBIENFIDJBIENCIEUzIDJDICAuLi4uKy4uLi4uLi4qLi4s
CiAgICA3RTcwOiA1MSA4QSBDQSA1NiA1NyBEMSBFOSBGMyBBNSAxMyBDOSBGMyBBNCA4QSBDQSAy
QiAgUS4uVlcuLi4uLi4uLi4uKwogICAgN0U4MDogRjEgMkIgRjkgODEgQzYgMDAgMjAgODEgQzcg
MDAgMjAgRDEgRTkgRjMgQTUgMTMgIC4rLi4uLiAuLi4gLi4uLi4KICAgIDdFOTA6IEM5IEYzIEE0
IDVGIDVFIDAzIEY1IDAzIEZEIDU5IEUyIEQ0IDhBIEM3IDhBIEU3ICAuLi5fXi4uLi5ZLi4uLi4u
CiAgICA3RUEwOiA4QSBDQSA1NyBEMSBFOSBGMyBBQiAxMyBDOSBGMyBBQSA4QSBDQSAyQiBGOSA4
MSAgLi5XLi4uLi4uLi4uLisuLgogICAgN0VCMDogQzcgMDAgMjAgRDEgRTkgRjMgQUIgMTMgQzkg
RjMgQUEgNUYgMDMgRkQgRkUgQ0IgIC4uIC4uLi4uLi4uXy4uLi4KICAgIDdFQzA6IDc1IERFIEMz
IEU4IEIwIDAwIDgxIEMyIDAxIDAxIDJCIEQxIDM4IEYzIDc2IDAyICB1Li4uLi4uLi4uKy44LnYu
CiAgICA3RUQwOiAzMiBEQiA1MSBCMSAwMiBEMiBFNiBEMiBFMyA1OSAzMiBFRCBCRCA1MCAwMCA4
MCAgMi5RLi4uLi4uWTIuLlAuLgogICAgN0VFMDogM0UgNDkgMDQgMDYgNzQgMDQgRDAgRTIgRDEg
RTAgMDYgMUYgOEIgRjggOEIgRjAgID5JLi50Li4uLi4uLi4uLi4KICAgIDdFRjA6IEIwIDUwIEY2
IEUzIDBBIERCIEMzIDUyIDUzIDhBIERGIDMyIEZGIEQxIEUzIDhCICAuUC4uLi4uUlMuLjIuLi4u
CiAgICA3RjAwOiA4NyA1MCAwNCBFOCAwRSAwMCA1MCBEMSBFQiBBMSA0QyAwNCBGNyBFMyA1QiAw
MyAgLlAuLi4uUC4uLkwuLi5bLgogICAgN0YxMDogQzMgNUIgNUEgQzMgNTIgOEIgRDAgQTAgNEEg
MDQgRjYgRTQgMzIgRjYgMDMgQzIgIC5bWi5SLi4uSi4uLjIuLi4KICAgIDdGMjA6IEQxIEUwIDVB
IEMzIDhCIEU4IDgzIEU1IDBGIDJFIDhBIEE2IEQ0IDdFIDhCIEU4ICAuLlouLi4uLi4uLi4ufi4u
CiAgICA3RjMwOiBDMSBFRCAwNCA4MyBFNSAwRiAyRSA4QSA4NiBENCA3RSBDMyAwMCAwMyAwQyAw
RiAgLi4uLi4uLi4uLn4uLi4uLgogICAgN0Y0MDogMzAgMzMgM0MgM0YgQzAgQzMgQ0MgQ0YgRjAg
RjMgRkMgRkYgMjYgOEIgMDQgODYgIDAzPD8uLi4uLi4uLiYuLi4KICAgIDdGNTA6IEUwIEJBIDAw
IDgwIEY2IEM0IEMwIDc0IDAyIDBBIEQ2IEQwIEVFIEMxIEUwIDAyICAuLi4uLi4udC4uLi4uLi4u
CiAgICA3RjYwOiA3NSBGMiA4OCA1NiAwMCA0NSBDMyA4QiAxNiA2MyAwNCA4QSBDNSA4NiBFMCBF
RiAgdS4uVi5FLi4uYy4uLi4uLgogICAgN0Y3MDogOEEgRTEgRkUgQzAgRUYgQzMgNTIgOEIgRDAg
OEEgQzQgRjYgMjYgNEEgMDQgQzEgIC4uLi4uLlIuLi4uLiZKLi4KICAgIDdGODA6IEUwIDAyIDMy
IEY2IDAzIEMyIDVBIEMzIDUzIDhBIERGIDMyIEZGIEQxIEUzIDhCICAuLjIuLi5aLlMuLjIuLi4u
CiAgICA3RjkwOiA4NyA1MCAwNCBEMSBFQiBFOCAwMiAwMCA1QiBDMyA1MiA4QiBEMCAzMiBGNiA1
MiAgLlAuLi4uLi5bLlIuLjIuUgogICAgN0ZBMDogOEEgQzQgRjYgMjYgODUgMDQgRjcgMjYgNEEg
MDQgNUEgMDMgQzIgMEEgREIgNzQgIC4uLiYuLi4mSi5aLi4uLnQKICAgIDdGQjA6IDA4IDAzIDA2
IDRDIDA0IEZFIENCIDc1IEY4IDVBIEMzIDUyIDhCIEQwIEEwIDRBICAuLi5MLi4udS5aLlIuLi5K
CiAgICA3RkMwOiAwNCBGNiBFNCAzMiBGNiAwMyBDMiBEMSBFMCAwMyAwNiA0RSAwNCBEMSBGOCA4
QiAgLi4uMi4uLi4uLi5OLi4uLgogICAgN0ZEMDogQzggQjQgMEUgRTggOTEgRkYgNUEgQzMgOEIg
QzIgRjcgMjYgNEEgMDQgOEIgRjkgIC4uLi4uLlouLi4uJkouLi4KICAgIDdGRTA6IEMxIEVGIDAz
IDAzIEY4IDBBIEZGIDc0IDBBIDhBIEM3IDMyIEU0IEY3IDI2IDRDICAuLi4uLi4udC4uLjIuLiZM
CiAgICA3RkYwOiAwNCAwMyBGOCA4MCBFMSAwNyBCNCA4MCBEMiBFQyBDMyBFOCBGMCBGQyBFQyBD
MyAgLi4uLi4uLi4uLi4uLi4uLgogICAgODAwMDogRTggRjggRkYgQjIgQzAgQjAgMjAgRUUgQzMg
RTggRUYgRkYgQjIgQzAgMzIgQzAgIC4uLi4uLiAuLi4uLi4uMi4KICAgIDgwMTA6IEVFIEMzIEM0
IDNFIEE4IDA0IDI2IEM0IDdEIDA0IDhDIEM1IDBCIEVGIEMzIDUzICAuLi4+Li4mLn0uLi4uLi5T
CiAgICA4MDIwOiBCMCAwRSBFOCA5NSBGQyA4QSBFMCBCMCAwRiBFOCA4RSBGQyA4QiBEOCBCOCAw
RSAgLi4uLi4uLi4uLi4uLi4uLgogICAgODAzMDogQUEgRUYgQjggMEYgNTUgRUYgQjAgMEUgRTgg
N0YgRkMgM0MgQUEgNzQgMEQgQjAgIC4uLi5VLi4uLi4uPC50Li4KICAgIDgwNDA6IDBGIEU4IDc2
IEZDIDNDIDU1IDc0IDA0IDMyIEMwIDVCIEMzIEIwIDBFIDhBIEU3ICAuLnYuPFV0LjIuWy4uLi4u
CiAgICA4MDUwOiBFRiBGRSBDMCA4QSBFMyBFRiBCMCAwMSAwQSBDMCA1QiBDMyA4QSBFRSA4QSAz
NiAgLi4uLi4uLi4uLlsuLi4uNgogICAgODA2MDogODUgMDQgMDYgMUYgMEEgREIgNzQgMjUgOEEg
QzUgMkEgQzMgRjYgRTYgOEIgQzggIC4uLi4uLnQlLi4qLi4uLi4KICAgIDgwNzA6IDUyIDMyIEY2
IEMxIEUyIDAyIDhCIEMyIEQxIEUyIDJCIEQ1IDUxIDhCIEM4IEYzICBSMi4uLi4uLi4uKy5RLi4u
CiAgICA4MDgwOiBBNSAyQiBGQSAyQiBGMiA1OSBFMiBGNCA1QSBFOCAwNSAwMCBDMyA4QSBERCBF
QiAgLisuKy5ZLi5aLi4uLi4uLgogICAgODA5MDogRjggOEEgQzYgRjYgRTMgOEIgQzggOEEgQzcg
OEEgRTAgMzIgRjYgQzEgRTIgMDIgIC4uLi4uLi4uLi4uMi4uLi4KICAgIDgwQTA6IDhCIERBIEQx
IEUyIDhCIEYxIDJCIEQ1IDhCIENCIEYzIEFCIDJCIEZBIDRFIDc1ICAuLi4uLi4rLi4uLi4rLk51
CiAgICA4MEIwOiBGNyBDMyAyRSA4RSAxRSBEMSAwMyA4OSAwRSA2MCAwNCA4QSBDNSAyNCA2MCBB
OCAgLi4uLi4uLi4uYC4uLiRgLgogICAgODBDMDogMjAgNzQgMDYgQjkgMDAgMUUgRTkgOTQgMDAg
RjYgMDYgODcgMDQgMDEgMEYgODUgICB0Li4uLi4uLi4uLi4uLi4KICAgIDgwRDA6IDhCIDAwIDgw
IDNFIDQ5IDA0IDA3IDc0IDA2IEU4IDE5IEZDIDc0IDAxIEMzIEY2ICAuLi4+SS4udC4uLi50Li4u
CiAgICA4MEUwOiAwNiA4NyAwNCAwOCA3NCAwMyBDRCA0MiBDMyA4QSAzNiA4NSAwNCA4QSBENiBG
RSAgLi4uLnQuLkIuLjYuLi4uLgogICAgODBGMDogQ0EgMzggQ0QgN0UgMUYgMEEgQzkgNzQgNjQg
OEEgRTkgOEEgQ0UgRkUgQzkgRUIgIC44Ln4uLi50ZC4uLi4uLi4KICAgIDgxMDA6IDVDIDM4IEQx
IDc0IDU4IDhBIENFIDgwIEZEIDAzIDdDIDA0IDhBIEU5IEQwIEVEICBcOC50WC4uLi4ufC4uLi4u
CiAgICA4MTEwOiBGRSBDOSBFQiA0OSA4MCBGOSAwMyA3RSA0NCA4QSBFMSAyQSBFNSAwQSBFNCA3
NSAgLi4uSS4uLn5ELi4qLi4udQogICAgODEyMDogMEEgMzggQ0EgNzQgMzggRkUgQ0EgMzggQ0Eg
NzQgMzIgOEEgQzUgMEEgQzEgMzggIC44LnQ4Li44LnQyLi4uLjgKICAgIDgxMzA6IEYwIDdFIDBB
IDgwIEZDIDAyIDdFIDEyIDgwIEZEIDAyIDdGIEM4IDgwIEZDIDAzICAufi4uLi5+Li4uLi4uLi4u
CiAgICA4MTQwOiA3RCBCRiA4QSBENiBGRSBDQSAzOCBEMSA3NCAxMyA4QSBDRSBGRSBDOSBGRSBD
OSAgfS4uLi4uOC50Li4uLi4uLgogICAgODE1MDogOEEgRTkgMkEgRUMgODAgRkUgMDggN0YgMDQg
RkUgQzEgRkUgQzUgQjQgMEEgRTggIC4uKi4uLi4uLi4uLi4uLi4KICAgIDgxNjA6IDA1IEZFIEMz
IDJFIDhFIDFFIEQxIDAzIEEyIDYyIDA0IDMyIEU0IDhCIEYwIEY3ICAuLi4uLi4uLi5iLjIuLi4u
CiAgICA4MTcwOiAyNiA0QyAwNCBBMyA0RSAwNCA4QiBDOCBFOCA3QSBGQiA3NCAwNyA4MCAzRSA0
OSAgJkwuLk4uLi4uei50Li4+SQogICAgODE4MDogMDQgMDcgNzcgMDIgRDEgRjkgQjQgMEMgRTgg
REMgRkQgRDEgRTYgOEIgODQgNTAgIC4udy4uLi4uLi4uLi4uLlAKICAgIDgxOTA6IDA0IEU4IDI3
IEZFIEMzIDJFIDhFIDFFIEQxIDAzIDhBIDI2IDQ5IDA0IEU4IEY0ICAuLicuLi4uLi4uLiZJLi4u
CiAgICA4MUEwOiA5QiA3NCAwNyBDNyAwNiA1MCAwNCAwMCAwMCBDMyBFOCA0OCBGQiA3NCAwQiA4
MCAgLnQuLi5QLi4uLi5ILnQuLgogICAgODFCMDogRkMgMDcgNzQgMDYgNzcgMDggRTggNzcgRkMg
QzMgRTggOUYgRkIgQzMgODAgRkMgIC4udC53Li53Li4uLi4uLi4KICAgIDgxQzA6IDEzIDdDIDAz
IDc0IDFGIEMzIEU4IDRFIEZBIDhBIEQ4IDhCIEMxIEU4IDg1IEZBICAufC50Li4uTi4uLi4uLi4u
CiAgICA4MUQwOiA4QiAyRSA0QSAwNCA1MiBGNiAyNiA4NSAwNCBGNyBFNSA4QiBGNyAwMyBGMCA1
QSAgLi5KLlIuJi4uLi4uLi4uWgogICAgODFFMDogRTggOTAgRkEgQzMgRTggMzAgRkEgOEEgRDgg
OEIgQzEgRTggNjcgRkEgQzEgRTcgIC4uLi4uMC4uLi4uLmcuLi4KICAgIDgxRjA6IDAzIDUyIDhC
IDJFIDRBIDA0IEMxIEU1IDAzIEY3IDI2IDg1IDA0IEY3IEU1IDhCICAuUi4uSi4uLi4uJi4uLi4u
CiAgICA4MjAwOiBGNyAwMyBGMCA1QSBFOCA1NSBGRSBDMyAyRSA4RSAxRSBEMSAwMyA4QSAyNiA0
OSAgLi4uWi5VLi4uLi4uLi4mSQogICAgODIxMDogMDQgRTggRTEgRkEgNzQgMEMgODAgRkMgMDcg
NzQgMDcgNzcgNDAgODAgRkMgMDMgIC4uLi50Li4uLnQud0AuLi4KICAgIDgyMjA6IDdGIDA0IEU4
IDUzIEZCIEMzIEU4IDFFIEZDIEMzIEU4IEVBIEY5IDhBIEQ4IDhBICAuLi5TLi4uLi4uLi4uLi4u
CiAgICA4MjMwOiBDMSA4QSBFNiBGRSBDNCBFOCAxRCBGQSAyQiAzRSA0QSAwNCBDMSBFNyAwMyA1
MiAgLi4uLi4uLi4rPkouLi4uUgogICAgODI0MDogRjcgMjYgODUgMDQgRjcgMjYgNEEgMDQgQzEg
RTAgMDMgOEIgRjcgMkIgRjAgNUEgIC4mLi4uJkouLi4uLi4rLloKICAgIDgyNTA6IDhCIDJFIDRB
IDA0IEMxIEU1IDAzIEY3IEREIEU4IDAwIEZFIEMzIDgwIEZDIDEzICAuLkouLi4uLi4uLi4uLi4u
CiAgICA4MjYwOiA3QyAwMyA3NCBDNiBDMyBFOCBBRiBGOSA4QSBEOCA4QSBDMSA4QSBFNiBGRSBD
NCAgfC50Li4uLi4uLi4uLi4uLgogICAgODI3MDogRTggRTIgRjkgNTIgOEIgMkUgNEEgMDQgRjcg
MjYgODUgMDQgRjcgRTUgMkIgRkQgIC4uLlIuLkouLiYuLi4uKy4KICAgIDgyODA6IDhCIEY3IDJC
IEYwIDVBIEY3IEREIEU4IEU5IEY5IEMzIDJFIDhFIDFFIEQxIDAzICAuLisuWi4uLi4uLi4uLi4u
CiAgICA4MjkwOiAyRSA4RSAwNiBENyAwMyBFOCA1RCBGQSA3NCAxMSA4MCAzRSA0OSAwNCAwNyA3
QyAgLi4uLi4uXS50Li4+SS4ufAogICAgODJBMDogMTggMkUgOEUgMDYgRDUgMDMgNzQgMDMgRTkg
QjEgMDAgRTggNDkgRkMgOEIgRDggIC4uLi4uLnQuLi4uLkkuLi4KICAgIDgyQjA6IDI2IDhCIDA3
IDhCIEVDIDg5IDQ2IDFBIEMzIEExIDUwIDA0IEU4IEI3IEZDIDhCICAmLi4uLi5GLi4uUC4uLi4u
CiAgICA4MkMwOiBGMCBCQiAwOCAwMCAyQiBFMyA4QiBFQyA4MCAzRSA0OSAwNCAwNiA3NSAxRiBC
OSAgLi4uLisuLi4uPkkuLnUuLgogICAgODJEMDogMDQgMDAgMjYgOEEgMDQgODggNDYgMDAgNDUg
MjYgOEEgODQgMDAgMjAgODggNDYgIC4uJi4uLkYuRSYuLi4gLkYKICAgIDgyRTA6IDAwIDQ1IDgz
IEM2IDUwIEUyIEVCIEI4IDAwIDAyIEIyIDgwIEVCIDE3IEQxIEU2ICAuRS4uUC4uLi4uLi4uLi4u
CiAgICA4MkYwOiBCOSAwNCAwMCBFOCA1NiBGQyA4MSBDNiAwMCAyMCBFOCA0RiBGQyA4MSBFRSBC
MCAgLi4uLlYuLi4uIC5PLi4uLgogICAgODMwMDogMUYgRTIgRjAgRUIgRTIgMkIgRUIgQzQgM0Ug
MEMgMDEgMzIgRjYgODAgRkIgMEUgIC4uLi4uKy4uPi4uMi4uLi4KICAgIDgzMTA6IDc1IDA5IDI2
IDgzIDdEIEZFIDEwIDc1IDAyIEI2IDgwIDE2IDFGIDhCIEY1IDhCICB1LiYufS4udS4uLi4uLi4u
CiAgICA4MzIwOiBDQiBGNiBDNiA4MCA3NCAwMSA0NyA1NiA1NyBGMyBBNiA1RiA1RSA3NCAyMyBG
RSAgLi4uLnQuR1ZXLi5fXnQjLgogICAgODMzMDogQzAgMDMgRkIgRjYgQzYgODAgNzQgMDEgNDcg
RkUgQ0EgNzUgRTIgRkUgQ0MgNzQgIC4uLi4uLnQuRy4udS4uLnQKICAgIDgzNDA6IDBGIDJFIDhF
IDFFIEQxIDAzIEM0IDNFIDdDIDAwIEIwIDgwIEIyIDgwIEVCIENCICAuLi4uLi4uPnwuLi4uLi4u
CiAgICA4MzUwOiAzMiBDMCA4QiBFNSAwMyBFMyA4QiBFQyA4OSA0NiAxQSBDMyA4MCAzRSA0OSAw
NCAgMi4uLi4uLi4uRi4uLj5JLgogICAgODM2MDogMTMgN0MgMDUgNzUgMDIgRUIgNUEgQzMgMkUg
OEUgMDYgRDMgMDMgRTggMTggRkMgIC58LnUuLlouLi4uLi4uLi4KICAgIDgzNzA6IDhCIEYwIDhC
IDFFIDg1IDA0IDJCIEUzIDhCIEVDIEI4IDA1IDA4IEI5IDA1IDAwICAuLi4uLi4rLi4uLi4uLi4u
CiAgICA4MzgwOiBCQSBDRSAwMyA4MCAzRSA0OSAwNCAwRiA3MiAxQSBGNiAwNiA4NyAwNCA2MCA3
NSAgLi4uLj5JLi5yLi4uLi5gdQogICAgODM5MDogMTMgQjQgMEEgRjcgQzYgMDEgMDAgNzUgMDIg
QjQgMDUgQjAgMDcgRUYgQjggMDUgIC4uLi4uLi51Li4uLi4uLi4KICAgIDgzQTA6IDE4IEI5IDA1
IDAxIEVGIDUxIDhCIENCIDI2IDhBIDA0IEY2IEQwIDg4IDQ2IDAwICAuLi4uLlEuLiYuLi4uLkYu
CiAgICA4M0IwOiA0NSAwMyAzNiA0QSAwNCBFMiBGMSA1OCBFRiBCOCAwMCAwMSAzMiBEMiBFOSA0
NCAgRS42Si4uLlguLi4uMi4uRAogICAgODNDMDogRkYgMkUgOEUgMDYgRDMgMDMgQTEgNTAgMDQg
OEIgRDAgMzIgRjYgNTIgOEEgQzQgIC4uLi4uLi5QLi4uMi5SLi4KICAgIDgzRDA6IDMyIEU0IEY3
IDI2IDRBIDA0IEY3IDI2IDg1IDA0IDVBIDAzIEMyIDhCIEYwIDhCICAyLi4mSi4uJi4uWi4uLi4u
CiAgICA4M0UwOiAxRSA4NSAwNCAyQiBFMyA4QiBFQyA1MyA4QiAzRSA0QSAwNCA0RiBDMSBFNyAw
MyAgLi4uKy4uLlMuPkouTy4uLgogICAgODNGMDogQzEgRTYgMDMgQjkgMDggMDAgMzIgRTQgMjYg
OEEgMDQgRDAgRTQgMEEgQzAgNzQgIC4uLi4uLjIuJi4uLi4uLnQKICAgIDg0MDA6IDAzIDgwIEND
IDAxIDQ2IEUyIEYxIDg4IDY2IDAwIDQ1IDAzIEY3IDRCIDc1IEUzICAuLi4uRi4uLmYuRS4uS3Uu
CiAgICA4NDEwOiA1QiBCOCAwMCAwMSAzMiBEMiBFOSBFQyBGRSAzMyBFRCBFQiAwMyBCRCAwMSAw
MCAgWy4uLjIuLi4uMy4uLi4uLgogICAgODQyMDogMkUgOEUgMUUgRDEgMDMgMkUgOEUgMDYgRDcg
MDMgOEEgMjYgNDkgMDQgRTggQzQgIC4uLi4uLi4uLi4uJkkuLi4KICAgIDg0MzA6IEY4IDc0IDBG
IDJFIDhFIDA2IEQ1IDAzIDgwIEZDIDA3IDc0IDA1IDdDIDNEIEU5ICAudC4uLi4uLi4uLnQufD0u
CiAgICA4NDQwOiAwQiAwMiA4QSBFMyA4QiBGMCA4QSBERiAzMiBGRiBEMSBFMyA4QiA4NyA1MCAw
NCAgLi4uLi4uLi4yLi4uLi5QLgogICAgODQ1MDogOEIgRDAgQTAgNEEgMDQgRjYgRTQgMzIgRjYg
MDMgQzIgOEIgRjggRDEgRTcgMEEgIC4uLkouLi4yLi4uLi4uLi4KICAgIDg0NjA6IERCIDc0IDBC
IEQwIEVCIEExIDRDIDA0IDAzIEY4IEZFIENCIDc1IEZBIDhCIEM2ICAudC4uLi5MLi4uLi51Li4u
CiAgICA4NDcwOiAwQiBFRCA3NSAwMyBGMyBBQiBDMyBBQSA0NyBFMiBGQyBDMyA1MCAyRSA4RSAw
NiAgLi51Li4uLi5HLi4uUC4uLgogICAgODQ4MDogRDcgMDMgQTEgNTAgMDQgRTggRUUgRkEgOEIg
RjggQTAgNTAgMDQgOEEgMjYgNEEgIC4uLlAuLi4uLi4uUC4uJkoKICAgIDg0OTA6IDA0IDhCIEU4
IDU4IEE4IDgwIDc0IDA4IDI0IDdGIEM1IDM2IDdDIDAwIEVCIDA0ICAuLi5YLi50LiQuLjZ8Li4u
CiAgICA4NEEwOiBDNSAzNiAwQyAwMSA4QSBGQyAzMiBFNCBDMSBFMCAwMyAwMyBGMCA4MCBGRiAw
NiAgLjYuLi4uMi4uLi4uLi4uLgogICAgODRCMDogNzQgNjkgRDEgRTcgOEEgRjMgQjAgNTUgODAg
RTMgMDMgRjYgRTMgOEEgRDggOEEgIHRpLi4uLi5VLi4uLi4uLi4KICAgIDg0QzA6IEY4IDhCIEM1
IDUwIEIyIDA0IEY2IEM2IDgwIDc1IDI3IEFDIEU4IDU1IEZBIDIzICAuLi5QLi4uLi51Jy4uVS4j
CiAgICA4NEQwOiBDMyBBQiBBQyBFOCA0RSBGQSAyMyBDMyAyNiA4OSA4NSBGRSAxRiA4MyBDNyA0
RSAgLi4uLk4uIy4mLi4uLi4uTgogICAgODRFMDogRkUgQ0EgNzUgRTcgODMgRUUgMDggODEgRUYg
M0UgMDEgNTggRTggNzIgMDAgRTIgIC4udS4uLi4uLj4uWC5yLi4KICAgIDg0RjA6IEQyIEMzIEFD
IEU4IDJFIEZBIDIzIEMzIDI2IDMxIDA1IEFDIEU4IDI1IEZBIDIzICAuLi4uLi4jLiYxLi4uJS4j
CiAgICA4NTAwOiBDMyAyNiAzMSA4NSAwMCAyMCA4MyBDNyA1MCBGRSBDQSA3NSBFNSA4MyBFRSAw
OCAgLiYxLi4gLi5QLi51Li4uLgogICAgODUxMDogODEgRUYgM0UgMDEgNTggRTggNDkgMDAgRTIg
QTkgQzMgOEIgQzUgNTAgQjIgMDQgIC4uPi5YLkkuLi4uLi5QLi4KICAgIDg1MjA6IEY2IEMzIDgw
IDc0IDFGIEFDIDI2IDMwIDA1IEFDIDI2IDMwIDg1IDAwIDIwIDgzICAuLi50Li4mMC4uJjAuLiAu
CiAgICA4NTMwOiBDNyA1MCBGRSBDQSA3RiBFRiA4MyBFRSAwOCA4MSBFRiAzRiAwMSA1OCBFOCAy
MCAgLlAuLi4uLi4uLi4/LlguIAogICAgODU0MDogMDAgRTIgREEgQzMgQUMgQUEgQUMgMjYgODgg
ODUgRkYgMUYgODMgQzcgNEYgRkUgIC4uLi4uLi4mLi4uLi4uTy4KICAgIDg1NTA6IENBIDdGIEYx
IDgzIEVFIDA4IDgxIEVGIDNGIDAxIDU4IEU4IDAzIDAwIEUyIEJEICAuLi4uLi4uLj8uWC4uLi4u
CiAgICA4NTYwOiBDMyBGRSBDMCAzOCBFMCA3MiAwNiAzMiBDMCA4MSBDNyBGMCAwMCBDMyA4QSAx
NiAgLi4uOC5yLjIuLi4uLi4uLgogICAgODU3MDogODUgMDQgRjYgRTIgOEIgRjAgMzIgRjYgOEIg
RUEgNjYgMEYgQjYgMDYgNTEgMDQgIC4uLi4uLjIuLi5mLi4uUS4KICAgIDg1ODA6IEY2IEUyIDY2
IDBGIEI3IDE2IDRBIDA0IDgzIEZBIDY0IDc1IDAzIEJBIDY4IDAwICAuLmYuLi5KLi4uZHUuLmgu
CiAgICA4NTkwOiA4MyBGQSA1QSA3NSAwMyBCQSA2MCAwMCA4MSBGQSBBRiAwMCA3NSAwMyBCQSBC
MCAgLi5adS4uYC4uLi4udS4uLgogICAgODVBMDogMDAgNTIgRjcgRTIgNjYgMEYgQjcgRjggNjYg
MEYgQjYgMDYgNTAgMDQgNjYgMDMgIC5SLi5mLi4uZi4uLlAuZi4KICAgIDg1QjA6IEY4IDY2IEMx
IENGIDEwIDAzIEZBIDY2IEMxIEM3IDAzIDgxIENGIDAwIEZGIDY2ICAuZi4uLi4uZi4uLi4uLi5m
CiAgICA4NUMwOiBDMSBDNyAxMCA1QSA4QSBFMiA0QSBDMSBFMiAwMyBBMCA1MCAwNCA1MCBDNSAw
NiAgLi4uWi4uSi4uLi5QLlAuLgogICAgODVEMDogMEMgMDEgMDMgRjAgMkUgOEUgMDYgRDMgMDMg
NTggNTcgNTEgNTAgOUMgRkMgOEIgIC4uLi4uLi4uLlhXUVAuLi4KICAgIDg1RTA6IENEIEU4IDNC
IDAwIEI1IDA4IEFDIDhBIEUwIDhBIEM3IEQwIEU0IDczIDAyIDhBICAuLjsuLi4uLi4uLi4ucy4u
CiAgICA4NUYwOiBDMyAyNiA4OCAwNSA2NiA0NyBGRSBDRCA3NSBFRiA2NiAwMyBGQSBFMiBFMiA5
RCAgLiYuLmZHLi51LmYuLi4uLgogICAgODYwMDogNTggNTkgNUYgODMgQzcgMDggRkUgQzAgMzgg
RTAgNzIgMEUgNTEgMzIgQzAgOEIgIFhZXy4uLi4uOC5yLlEyLi4KICAgIDg2MTA6IENEIDQ5IDAz
IEZBIDgzIEM3IDA4IEUyIEY5IDU5IDJCIEY1IEUyIEJDIEMzIDA2ICAuSS4uLi4uLi5ZKy4uLi4u
CiAgICA4NjIwOiA1MiAzMyBDMCA4RSBDMCA2NiBDMSBDNyAxMCA4QiBDNyA2NiBDMSBDNyAxMCBF
OCAgUjMuLi5mLi4uLi5mLi4uLgogICAgODYzMDogNjMgOTcgNzQgMTYgMzggRTAgNzQgMTIgMEYg
QjYgRDAgRTggNjEgQzcgOEEgRTAgIGMudC44LnQuLi4uLmEuLi4KICAgIDg2NDA6IDY2IEMxIEM3
IDEwIDhCIEY4IDY2IEMxIEM3IDEwIDVBIDA3IEMzIDgwIEZDIDEzICBmLi4uLi5mLi4uWi4uLi4u
CiAgICA4NjUwOiA3QyAwQiAwRiA4NCAxOCBGRiA4MCBGQyA2MiAwRiA4NCAxMSBGRiBFOCAwMSAw
MCAgfC4uLi4uLi5iLi4uLi4uLgogICAgODY2MDogQzMgODAgRkMgMTEgNzUgMDYgODAgRTMgODAg
ODAgQ0IgMEYgNTAgNTMgOEEgREYgIC4uLi51Li4uLi4uLlBTLi4KICAgIDg2NzA6IDMyIEZGIEQx
IEUzIDhCIDk3IDUwIDA0IDVCIDJFIDhFIDA2IEQzIDAzIEU4IDA3ICAyLi4uLi5QLlsuLi4uLi4u
CiAgICA4NjgwOiBGOSA4QiBGOCA4QiAyRSA4NSAwNCA1OCAzMiBGNiA1MiA4QiAzNiA0QSAwNCA1
NiAgLi4uLi4uLlgyLlIuNkouVgogICAgODY5MDogOEEgMjYgODUgMDQgQzUgMzYgMEMgMDEgODAg
RkMgMEUgNzUgMDkgODMgN0MgRkUgIC4mLi4uNi4uLi4udS4ufC4KICAgIDg2QTA6IDEwIDc1IDAz
IEI0IDEwIDQ2IEY2IEU0IDAzIEYwIEI2IDAzIEY2IEMzIDgwIDc1ICAudS4uLkYuLi4uLi4uLi51
CiAgICA4NkIwOiA2RCBCMiBDNCBCOCAwMiAwRiBFRiA1QSA1OCA1MCA1MiA0QSA4QSBFMCA1NyA1
MSAgbS4uLi4uLlpYUFJKLi5XUQogICAgODZDMDogNTEgNTcgOEIgQ0QgMzIgQzAgQUEgMDMgRkEg
RTIgRkIgNUYgNDcgRkUgQzQgMzggIFFXLi4yLi4uLi4uX0cuLjgKICAgIDg2RDA6IEQ0IDc2IDBB
IDMyIEU0IDhCIENEIDQ5IDAzIEZBIDQ3IEUyIEZCIDU5IEUyIEUwICAudi4yLi4uSS4uRy4uWS4u
CiAgICA4NkUwOiA1OSA1RiBCQSBDNCAwMyBCMCAwMiA4QSBFMyBFRiA1QiA0QiA1QSA1MSA1NyA4
QiAgWV8uLi4uLi4uLltLWlFXLgogICAgODZGMDogQ0QgQUMgMjYgOEEgMjUgQUEgMDMgRkIgRTIg
RjcgNUYgNDcgMkIgRjUgNDIgM0IgIC4uJi4lLi4uLi5fRysuQjsKICAgIDg3MDA6IEQzIDc2IDBB
IDMzIEQyIDhCIENEIDQ5IDAzIEZCIDQ3IEUyIEZCIDU5IEUyIEREICAudi4zLi4uSS4uRy4uWS4u
CiAgICA4NzEwOiBCQSBDRSAwMyBCOCAwMyAwMCBFRiBCMiBDNCBCOCAwMiAwRiBFRiBDMyBCMiBD
RSAgLi4uLi4uLi4uLi4uLi4uLgogICAgODcyMDogQjggMDMgMTggRUYgRUIgQkMgMkUgOEUgMUUg
RDEgMDMgODAgM0UgNjMgMDQgQjQgIC4uLi4uLi4uLi4uLj5jLi4KICAgIDg3MzA6IDc0IDBCIEJB
IENDIDAzIEVDIEE4IDAxIDc1IDA0IENEIDQyIEMzIEMzIEU4IEQxICB0Li4uLi4uLnUuLkIuLi4u
CiAgICA4NzQwOiBGOCAwQSBGRiA3NSAxQyA4QSBFMyA4MCBFNCAxRiA4MCAyNiA2NiAwNCBFMCAw
OCAgLi4udS4uLi4uLi4mZi4uLgogICAgODc1MDogMjYgNjYgMDQgRTggMkQgMDAgOEEgMUUgNjYg
MDQgODAgRTMgMjAgQjEgMDUgRDIgICZmLi4tLi4uZi4uLiAuLi4KICAgIDg3NjA6IEVCIEU4IDkx
IEY1IDc0IDE5IEEwIDY2IDA0IDI0IERGIDgwIEUzIDAxIDc0IDAyICAuLi4udC4uZi4kLi4uLnQu
CiAgICA4NzcwOiAwQyAyMCBBMiA2NiAwNCAyNCAxMCAwQyAwMiAwQSBEOCBFOCA1MyAwMCBDMyBF
OCAgLiAuZi4kLi4uLi4uUy4uLgogICAgODc4MDogN0UgRjggQzMgNTMgNTAgODAgRTMgMEYgOEEg
RkIgRDAgRTMgODEgRTMgMTAgMDcgIH4uLlNQLi4uLi4uLi4uLi4KICAgIDg3OTA6IDBBIERGIEU4
IDYwIEY1IDc0IDBFIEI0IDAwIDhBIEMzIEU4IDJDIEYzIDBCIEVEICAuLi5gLnQuLi4uLi4sLi4u
CiAgICA4N0EwOiA3NCAwMyAyNiA4OCAxRCA4QSBDMyBFOCAwQiAwMCAwQiBFRCA3NCAwNCAyNiA4
OCAgdC4mLi4uLi4uLi4udC4mLgogICAgODdCMDogNUQgMTAgNTggNUIgQzMgOEEgRTAgMUUgMkUg
OEUgMUUgRDEgMDMgODAgM0UgNDkgIF0uWFsuLi4uLi4uLi4uPkkKICAgIDg3QzA6IDA0IDMzIDFG
IDdGIDA4IDhBIEM0IEI0IDExIEU4IEZFIEYyIEMzIEU4IDMwIEY4ICAuMy4uLi4uLi4uLi4uLjAu
CiAgICA4N0QwOiBDMyA5QyBGQSBFOCA2MiAwNSBCMiBDMCBCOSAwMyAwMCBCNCAwMSA4QSBDNCBF
RSAgLi4uLmIuLi4uLi4uLi4uLgogICAgODdFMDogOEEgQzMgRUUgMEIgRUQgNzQgMDQgNDcgMjYg
ODggMUQgRkUgQzQgODAgQzMgMDIgIC4uLi4udC5HJi4uLi4uLi4KICAgIDg3RjA6IEUyIEVCIEIw
IDIwIEVFIDlEIEMzIDJFIDhFIDFFIEQxIDAzIDhBIDI2IDQ5IDA0ICAuLi4gLi4uLi4uLi4uJkku
CiAgICA4ODAwOiBFOCBGMiBGNCA3NCAwQSA4MCBGQyAwNyA3NyAwNiA3NCAwMyBFOCBDMCBGNSBD
MyAgLi4udC4uLi53LnQuLi4uLgogICAgODgxMDogODAgRkMgMTMgN0MgMDMgNzQgNEMgQzMgOEEg
RDggRTggQkIgRjcgQkEgQ0UgMDMgIC4uLnwudEwuLi4uLi4uLi4KICAgIDg4MjA6IEIwIDA4IEVG
IDJFIDhFIDFFIEQzIDAzIEY2IEMzIDgwIDc1IDFDIEIyIEM0IEI4ICAuLi4uLi4uLi4uLnUuLi4u
CiAgICA4ODMwOiAwMiBGRiBFRiA4QSAyNSBDNiAwNSAwMCA4QSBFMyBFRiA4QSAyNSBCNCBGRiA4
OCAgLi4uLiUuLi4uLi4uJS4uLgogICAgODg0MDogMjUgRUYgQjIgQ0UgQjggMDggRkYgRUYgQzMg
QjggMDMgMTggRUYgQjIgQzQgQjAgICUuLi4uLi4uLi4uLi4uLi4KICAgIDg4NTA6IDAyIDhBIEUz
IEVGIDhBIDI1IEI0IEZGIDg4IDI1IEVGIEIyIENFIEI4IDAzIDAwICAuLi4uLiUuLi4lLi4uLi4u
CiAgICA4ODYwOiBFRiBFQiBFMSA1MCAyRSA4RSAwNiBEMyAwMyBBMSA0QSAwNCBDMSBFMCAwMyBG
NyAgLi4uUC4uLi4uLkouLi4uLgogICAgODg3MDogRTIgMDMgQzEgOEIgRjggNTggMjYgODggMDUg
QzMgMkUgOEUgMUUgRDEgMDMgOEEgIC4uLi4uWCYuLi4uLi4uLi4KICAgIDg4ODA6IDI2IDQ5IDA0
IEU4IDZGIEY0IDc0IDBGIDgwIEZDIDA3IDc3IDBCIDc0IDA4IEU4ICAmSS4uby50Li4uLncudC4u
CiAgICA4ODkwOiA1RiBGNSA4QiBFQyA4OSA0NiAxQSBDMyA4MCBGQyAxMyA3QyAwMyA3NCAyOSBD
MyAgXy4uLi5GLi4uLi58LnQpLgogICAgODhBMDogRTggMzUgRjcgOEEgQ0MgMkUgOEUgMUUgRDMg
MDMgQkEgQ0UgMDMgMzIgRkYgQjggIC41Li4uLi4uLi4uLi4yLi4KICAgIDg4QjA6IDA0IDAzIEVG
IEQwIEU3IDhBIDFEIDIyIEQ5IDc0IDAzIDgwIENGIDAxIEZFIENDICAuLi4uLi4uIi50Li4uLi4u
CiAgICA4OEMwOiA3RCBGMCA4QiBFQyA4OCA3RSAxQSBDMyBBMSA0QSAwNCBDMSBFMCAwMyBGNyBF
MiAgfS4uLi5+Li4uSi4uLi4uLgogICAgODhEMDogMDMgQzEgOEIgRjggMkUgOEUgMUUgRDMgMDMg
OEEgMDUgOEIgRUMgODggNDYgMUEgIC4uLi4uLi4uLi4uLi4uRi4KICAgIDg4RTA6IEMzIDJFIDhF
IDFFIEQxIDAzIDhBIDNFIDYyIDA0IDhBIENGIEQwIEUxIDMyIEVEICAuLi4uLi4uPmIuLi4uLjIu
CiAgICA4OEYwOiBCRSA1MCAwNCAwMyBGMSA4QiAxNCA4QSAwRSA0OSAwNCAzQyAwRCA3NiA0QSAy
RSAgLlAuLi4uLi4uSS48LnZKLgogICAgODkwMDogOEUgMDYgRDcgMDMgRTggRUUgRjMgNzUgMzMg
OEEgMUUgNEEgMDQgOEEgRjggOEEgIC4uLi4uLi51My4uSi4uLi4KICAgIDg5MTA6IEM2IEY2IEUz
IDhBIENBIDAzIEM4IEQxIEUxIDAzIDBFIDRFIDA0IDhCIEY5IDhBICAuLi4uLi4uLi4uLk4uLi4u
CiAgICA4OTIwOiBDNyBBQSBEMSBFOSA0MSBGRSBDMiAzOCBEQSA3MyA1OSA4OSAxNCA4QiAxNiA2
MyAgLi4uLkEuLjguc1kuLi4uYwogICAgODkzMDogMDQgQjAgMEUgOEEgRTUgRUYgOEEgRTEgRkUg
QzAgRUYgQzMgMkUgOEUgMDYgRDUgIC4uLi4uLi4uLi4uLi4uLi4KICAgIDg5NDA6IDAzIDgwIEY5
IDA3IDc0IEMzIEU5IDgzIDAwIDc1IDA0IDMyIEQyIEVCIDBGIDNDICAuLi4udC4uLi51LjIuLi48
CiAgICA4OTUwOiAwQSA3NSAxRCAzQSAzNiA4NCAwNCA3NSAwMyBFOSA5MyAwMCBGRSBDNiA4OSAx
NCAgLnUuOjYuLnUuLi4uLi4uLgogICAgODk2MDogRTggOTIgRjMgNzUgMDUgODAgRjkgMDcgN0Yg
MDUgOEIgQzIgRTggNEMgRjYgQzMgIC4uLnUuLi4uLi4uLi5MLi4KICAgIDg5NzA6IDNDIDA3IDc1
IDA0IEU4IDhCIDdEIEMzIDNDIDA4IDc1IDgzIDBBIEQyIDc0IERFICA8LnUuLi59LjwudS4uLnQu
CiAgICA4OTgwOiBGRSBDQSBFQiBEQSAzMiBGRiAzMiBEMiAyQiBDQiAzQSAzNiA4NCAwNCA3NCAw
NiAgLi4uLjIuMi4rLjo2Li50LgogICAgODk5MDogRkUgQzYgMDMgQ0IgRUIgOTUgODkgMTQgOEIg
MTYgNjMgMDQgQjAgMEUgOEEgRTUgIC4uLi4uLi4uLi5jLi4uLi4KICAgIDg5QTA6IEVGIDhBIEUx
IEZFIEMwIEVGIDJCIEZCIDJCIEZCIDI2IDhBIDY1IDAyIDUwIDhCICAuLi4uLi4rLisuJi5lLlAu
CiAgICA4OUIwOiAzRSA0RSAwNCA4QiBGMyBEMSBFNiAwMyBGNyBBMCA4NCAwNCBGNiBFMyA4QiBD
OCAgPk4uLi4uLi4uLi4uLi4uLgogICAgODlDMDogMDYgMUYgRjMgQTUgOEIgQ0IgNTggQjAgMjAg
RjMgQUIgQzMgQjkgMDEgMDAgQjQgIC4uLi4uLlguIC4uLi4uLi4KICAgIDg5RDA6IDBBIEU4IDg4
IEM1IEZFIEMyIDNBIDE2IDRBIDA0IDc0IDAzIDg5IDE0IEMzIDMyICAuLi4uLi46LkoudC4uLi4y
CiAgICA4OUUwOiBGRiAzMiBEMiA4OSAxNCAzQSAzNiA4NCAwNCA3NCAyRSBGRSBDNiBFQiBFRCA4
OSAgLjIuLi46Ni4udC4uLi4uLgogICAgODlGMDogMTQgMkUgOEUgMDYgRDcgMDMgRTggRkMgRjIg
NzQgMEUgMkUgOEUgMDYgRDUgMDMgIC4uLi4uLi4uLnQuLi4uLi4KICAgIDhBMDA6IDgwIEY5IDA3
IDc0IDA0IDMyIEZGIEVCIDEwIDhCIEMyIEU4IEFEIEY1IDhCIEY5ICAuLi50LjIuLi4uLi4uLi4u
CiAgICA4QTEwOiBEMSBFNyA0RiA4QiAxRSA0QSAwNCBFQiA5MSAzMyBDOSA4QSAzNiA4NCAwNCA4
QSAgLi5PLi5KLi4uMy4uNi4uLgogICAgOEEyMDogMTYgNEEgMDQgRkUgQ0EgQjAgMDEgRTkgNzAg
RjcgMkUgOEUgMUUgRDEgMDMgRjYgIC5KLi4uLi4ucC4uLi4uLi4KICAgIDhBMzA6IDA2IDg3IDA0
IDA4IDc0IDAzIENEIDQyIEMzIEU4IDc2IEY2IDhCIEVDIEM2IDQ2ICAuLi4udC4uQi4udi4uLi5G
CiAgICA4QTQwOiAxQiAwMCBDMyAyRSA4RSAxRSBEMSAwMyA4QSBERiAzMiBGRiBEMSBFMyA4OSA5
NyAgLi4uLi4uLi4uLjIuLi4uLgogICAgOEE1MDogNTAgMDQgRDAgRUIgMzggMUUgNjIgMDQgNzUg
MDUgOEIgQzIgRTggNUMgRjUgQzMgIFAuLi44LmIudS4uLi5cLi4KICAgIDhBNjA6IDJFIDhFIDFF
IEQxIDAzIDhBIERGIDMyIEZGIEQxIEUzIDhCIDk3IDUwIDA0IDhCICAuLi4uLi4uMi4uLi4uUC4u
CiAgICA4QTcwOiAwRSA2MCAwNCA4QiBFQyA4OSA0RSAxNiA4OSA1NiAxMiBDMyAyRSA4RSAxRSBE
MSAgLmAuLi4uTi4uVi4uLi4uLgogICAgOEE4MDogMDMgQTAgODcgMDQgMjQgODAgMEEgMDYgNDkg
MDQgOEEgMjYgNEEgMDQgOEEgM0UgIC4uLi4kLi4uSS4uJkouLj4KICAgIDhBOTA6IDYyIDA0IDhC
IEVDIDg5IDQ2IDFBIDg5IDVFIDBFIDg5IDRFIDE2IDg5IDU2IDEyICBiLi4uLkYuLl4uLk4uLlYu
CiAgICA4QUEwOiBDMyAyRSA4RSAxRSBEMSAwMyAzQyAwNCA3RiAxQiA1MCA1MiBCQSBDQyAwMyBF
QyAgLi4uLi4uPC4uLlBSLi4uLgogICAgOEFCMDogQTggMDEgNUEgNTggNzQgMDggODAgM0UgNjMg
MDQgRDQgNzQgMDggQzMgODAgM0UgIC4uWlh0Li4+Yy4udC4uLj4KICAgIDhBQzA6IDYzIDA0IEI0
IDc1IEY4IDNDIDFDIDczIEY0IDMyIEU0IDhCIEU4IEQxIEU1IDJFICBjLi51Ljwucy4yLi4uLi4u
CiAgICA4QUQwOiBGRiBBNiA2QyA4QSBBNCA4QSBDNCA4QSBENiA4QSAwQiA4QiA1NSA4QSA1NSA4
QSAgLi5sLi4uLi4uLi4uVS5VLgogICAgOEFFMDogNTUgOEEgMzAgOEIgNDggOEIgNEMgOEIgNTUg
OEEgNTUgOEEgNTUgOEEgNTUgOEEgIFUuMC5ILkwuVS5VLlUuVS4KICAgIDhBRjA6IDU1IDhBIDU1
IDhBIDdBIDhCIDU1IDhBIDdFIDhCIDk5IDhCIDU1IDhBIEQ4IDhCICBVLlUuei5VLn4uLi5VLi4u
CiAgICA4QjAwOiA1NSA4QSBFNiA4QiAwMSA4QyAwOCA4QyAxNCA4QyAzOCA4QyA4MCAzRSA0OSAw
NCAgVS4uLi4uLi4uLjguLj5JLgogICAgOEIxMDogMTMgNzQgMTUgRTggRkMgRjQgOEIgQzMgODYg
RTAgRTggQUQgRUYgMEIgRUQgNzQgIC50Li4uLi4uLi4uLi4uLnQKICAgIDhCMjA6IDA3IDhBIEM3
IDMyIEZGIDI2IDg4IDAxIEU4IEQwIEY0IEMzIEU4IEUzIEY0IDhBICAuLi4yLiYuLi4uLi4uLi4u
CiAgICA4QjMwOiBDNyBFOCA4MSBGQyAwQiBFRCA3NCBGMCAyNiA4OCA3RCAxMSBFQiBFQSA4MCAz
RSAgLi4uLi4udC4mLn0uLi4uPgogICAgOEI0MDogNDkgMDQgMTMgNzQgRTMgMDYgRTggQzkgRjQg
MUYgMEIgRUQgNzQgMDcgOEIgRjIgIEkuLnQuLi4uLi4uLnQuLi4KICAgIDhCNTA6IEI5IDExIDAw
IEYzIEE0IDhCIEYyIEU4IERFIDAxIDMyIEU0IEI5IDEwIDAwIEIyICAuLi4uLi4uLi4uMi4uLi4u
CiAgICA4QjYwOiBDMCA5QyBGQSA4QSBDNCBFRSBBQyBFRSA5RCBGRSBDNCBFMiBGNCBBQyBFOCA0
NCAgLi4uLi4uLi4uLi4uLi4uRAogICAgOEI3MDogRkMgRUIgQjUgODAgRkIgMDEgNzcgQjAgRTgg
ODAgRjQgQjIgQzAgQjAgMzAgRTggIC4uLi4uLncuLi4uLi4uMC4KICAgIDhCODA6IDM4IEYxIDI0
IEY3IDgwIDI2IDY1IDA0IERGIDgwIEZCIDAwIDc0IDA3IDBDIDA4ICA4LiQuLiZlLi4uLi50Li4u
CiAgICA4QjkwOiA4MCAwRSA2NSAwNCAyMCBFRSBFQiA5MCBFOCA5RCAwMSA4QSBDMyBCMiBDMCBF
OCAgLi5lLiAuLi4uLi4uLi4uLgogICAgOEJBMDogMTggRjEgOEIgQzggRUUgQjAgMjAgRUUgOEIg
RUMgODggNEUgMEYgRTkgNzggRkYgIC4uLi4uLiAuLi4uTi4ueC4KICAgIDhCQjA6IEIzIDExIEVC
IEU0IDhCIEZBIEU4IDQyIEY0IEI5IDEwIDAwIDMyIEU0IEIyIEMwICAuLi4uLi4uQi4uLi4yLi4u
CiAgICA4QkMwOiA4QSBDNCA5QyBGQSBFRSA0MiBFQyAyNiA4OCAwNSBGRSBDNCA0QSBFRSA5RCA0
NyAgLi4uLi5CLiYuLi4uSi4uRwogICAgOEJEMDogRTIgRUUgOUMgRkEgQjAgMTEgRUUgNDIgRUMg
OUQgMjYgODggMDUgRTggMjAgRjQgIC4uLi4uLi5CLi4mLi4uIC4KICAgIDhCRTA6IEVCIDVBIEU4
IENFIDAwIEMzIDhCIEZBIDUxIDhCIEMzIDI2IDhBIDM1IDI2IDhBICAuWi4uLi4uLlEuLiYuNSYu
CiAgICA4QkYwOiA2RCAwMSAyNiA4QSA0RCAwMiBFOCBDQSAwMCA4MyBDNyAwMyA0MyA1OSBFMiBF
OCAgbS4mLk0uLi4uLi4uQ1kuLgogICAgOEMwMDogQzMgMEEgREIgNzUgMUEgRTggRjMgRjMgQjIg
QzAgQjAgMzAgRTggQUIgRjAgMjQgIC4uLnUuLi4uLi4uMC4uLiQKICAgIDhDMTA6IDdGIEY2IEM3
IDAxIDc0IDAyIDBDIDgwIEI0IDMwIEU4IEFEIEVFIEVCIDFEIEZFICAuLi4udC4uLi4wLi4uLi4u
CiAgICA4QzIwOiBDQiA3NSAxQyBFOCBENSBGMyBCMiBDMCBCMCAzMCBFOCA4RCBGMCBFRSBBOCA4
MCAgLnUuLi4uLi4uMC4uLi4uLgogICAgOEMzMDogNzUgMDMgQzAgRTcgMDIgQjQgMzQgOEEgQzcg
RTggOEUgRUUgRTggQkMgRjMgQzMgIHUuLi4uLjQuLi4uLi4uLi4KICAgIDhDNDA6IDhBIEMzIEU4
IEQxIDAwIDhCIEVDIDg5IDRFIDE2IDg4IDc2IDEzIEMzIDhCIEZBICAuLi4uLi4uLk4uLnYuLi4u
CiAgICA4QzUwOiA1MSA4QiBDMyBFOCBDMyAwMCAyNiA4OCAzNSAyNiA4OCA2RCAwMSAyNiA4OCA0
RCAgUS4uLi4uJi41Ji5tLiYuTQogICAgOEM2MDogMDIgODMgQzcgMDMgNDMgNTkgRTIgRTggQzMg
QkEgQzYgMDMgOEEgQzMgRUUgQzMgIC4uLi5DWS4uLi4uLi4uLi4KICAgIDhDNzA6IEJBIEM2IDAz
IEVDIDMyIEU0IDhCIEVDIDg5IDQ2IDBFIEMzIEU4IDdDIEYzIEIyICAuLi4uMi4uLi5GLi4ufC4u
CiAgICA4QzgwOiBDMCBCMCAzNCBFOCAzNCBGMCA4QSBGOCBFRSBCMCAzMCBFOCAyQyBGMCBCMyAw
MSAgLi40LjQuLi4uLjAuLC4uLgogICAgOEM5MDogQTggODAgNzUgMDUgQjMgMDAgQzAgRUYgMDIg
OEIgRUMgODkgNUUgMEUgRUIgOUMgIC4udS4uLi4uLi4uLl4uLi4KICAgIDhDQTA6IDUxIDhCIEMz
IEU4IDczIDAwIEU4IDJBIDAwIDhBIEMzIEU4IDUyIDAwIDQzIDU5ICBRLi4ucy4uKi4uLi5SLkNZ
CiAgICA4Q0IwOiBFMiBFRSBDMyBGNiAwNiA4OSAwNCAwMiA3NCAwMyBFOCAxNiAwMCA4QSBDMyBF
OCAgLi4uLi4uLi50Li4uLi4uLgogICAgOENDMDogMzkgMDAgQzMgRjYgMDYgODkgMDQgMDIgNzQg
MDMgRTggMDYgMDAgOEEgQzMgRTggIDkuLi4uLi4udC4uLi4uLi4KICAgIDhDRDA6IDJFIDAwIEMz
IDUwIEIwIDFFIEY2IEU2IDUwIEIwIDNCIEY2IEU1IDUwIEIwIDBCICAuLi5QLi4uLlAuOy4uUC4u
CiAgICA4Q0UwOiBGNiBFMSA1OSAwMyBDMSA1OSAwMyBDMSBCMSA2NCBGNiBGMSA4MCBGQyAzMiA3
QyAgLi5ZLi5ZLi4uZC4uLi4yfAogICAgOENGMDogMDIgRkUgQzAgOEEgRjAgOEEgRTggOEEgQzgg
NTggQzMgNTIgRTggMzkgMDAgNUEgIC4uLi4uLi4uLlguUi45LloKICAgIDhEMDA6IDUzIDhCIERB
IEJBIEM4IDAzIDlDIEZBIEVFIDQyIDhBIEM3IEVFIDhBIEM1IEVFICBTLi4uLi4uLi5CLi4uLi4u
CiAgICA4RDEwOiA4QSBDMSBFRSA5RCA1QiBDMyBFOCAxRiAwMCA1MyA5QyBGQSBCQSBDNyAwMyBF
RSAgLi4uLlsuLi4uUy4uLi4uLgogICAgOEQyMDogNDIgNDIgRUMgOEEgRjggRUIgMDAgRUIgMDAg
RUMgOEEgRTggRUIgMDAgRUIgMDAgIEJCLi4uLi4uLi4uLi4uLi4KICAgIDhEMzA6IEVDIDhBIEM4
IDhBIEY3IDlEIDVCIEMzIDUwIDUxIEU4IEJFIEYyIEI5IEZGIDdGICAuLi4uLi5bLlBRLi4uLi4u
CiAgICA4RDQwOiBFQyBBOCAwOCA3NSAwMiBFMiBGOSA1OSA1OCBDMyAyRSA4RSAxRSBEMSAwMyA4
QiAgLi4udS4uLllYLi4uLi4uLgogICAgOEQ1MDogRjggMjQgMEYgODEgRTcgRjAgMDAgQzEgRUYg
MDMgODMgRkYgMDYgN0YgMTggMkUgIC4kLi4uLi4uLi4uLi4uLi4KICAgIDhENjA6IEZGIEE1IEZD
IDhDIDA0IDhEIDE5IDhEIEI3IDhEIDEzIDhFIDNDIDAzIDc0IDA4ICAuLi4uLi4uLi4uLi48LnQu
CiAgICA4RDcwOiAzQyAwNCA3RiAwMyBFOCBDRiAwMSBDMyBCQSBDNCAwMyBCMCAwMyA4QSBFMyBF
RiAgPC4uLi4uLi4uLi4uLi4uLgogICAgOEQ4MDogQzMgM0MgMDQgNzcgRjIgNTAgNTMgNTAgNTIg
OEIgMTYgNjMgMDQgQjAgMDcgRTggIC48LncuUFNQUi4uYy4uLi4KICAgIDhEOTA6IDI4IEVGIDhB
IEUwIEQwIEVDIDgwIEU0IDAxIEE4IDQwIDc0IDAzIDgwIENDIDAyICAoLi4uLi4uLi4uQHQuLi4u
CiAgICA4REEwOiBCMCAxMiBFOCAxNSBFRiA0MCBBMyA4NSAwNCBCMCAwOSBFOCAwQyBFRiBBOCA4
MCAgLi4uLi5ALi4uLi4uLi4uLgogICAgOERCMDogNzQgMDQgRDEgMkUgODUgMDQgQTEgODUgMDQg
OEIgRDAgM0QgRjQgMDEgNzMgMUIgIHQuLi4uLi4uLi4uPS4ucy4KICAgIDhEQzA6IEJBIEUwIDAx
IDNEIEMyIDAxIDczIDEzIEJBIDkwIDAxIDNEIDdDIDAxIDczIDBCICAuLi49Li5zLi4uLj18LnMu
CiAgICA4REQwOiBCQSA1RSAwMSAzRCA0QSAwMSA3MyAwMyBCQSBDOCAwMCA4OSAxNiA4NSAwNCA1
QSAgLl4uPUoucy4uLi4uLi4uWgogICAgOERFMDogNTggQzYgMDYgODQgMDQgRkYgRTggNUQgMDEg
NUIgNTggOEEgREYgMzIgRkYgMEEgIFguLi4uLi5dLltYLi4yLi4KICAgIDhERjA6IEMwIDc0IDBF
IEIzIDBFIDNDIDAxIDc0IDA4IEIzIDA4IDNDIDAyIDc0IDAyIEIzICAudC4uLjwudC4uLjwudC4u
CiAgICA4RTAwOiAxMCA4QSBDQiA4QSBFOSA4MSBFOSAwMSAwMiA4MCBGOSAwOCA3RSAwNCA4MSBF
OSAgLi4uLi4uLi4uLi4ufi4uLgogICAgOEUxMDogMDEgMDEgODcgMUUgODUgMDQgNTMgRTggOTgg
RjIgNUIgRTggODUgMDIgQzMgMEEgIC4uLi4uLlMuLi5bLi4uLi4KICAgIDhFMjA6IEMwIDc0IDEx
IEZFIEM4IDc0IDFBIEZFIEM4IDc0IDM4IEZFIEM4IDc0IDNDIEZFICAudC4uLnQuLi50OC4udDwu
CiAgICA4RTMwOiBDOCA3NCA0MCBDMyA4OSAyRSA3QyAwMCA4QyAwNiA3RSAwMCBDMyA4QyBDOCA4
RSAgLnRALi4ufC4uLn4uLi4uLgogICAgOEU0MDogQzAgRkUgQ0EgMEEgREIgNzQgMDcgMzIgRkYg
MkUgOEEgOTcgRjcgOEQgODkgMEUgIC4uLi4udC4yLi4uLi4uLi4KICAgIDhFNTA6IDg1IDA0IDg4
IDE2IDg0IDA0IDg5IDJFIDBDIDAxIDhDIDA2IDBFIDAxIEMzIDAwICAuLi4uLi4uLi4uLi4uLi4u
CiAgICA4RTYwOiAwRCAxOCAyQSBFOCAwOSAwMyBCOSAwRSAwMCBFQiBENiBCRCA0NCA1RCBCOSAw
OCAgLi4qLi4uLi4uLi4uRF0uLgogICAgOEU3MDogMDAgRUIgQ0EgQkQgNTcgNjUgQjkgMTAgMDAg
RUIgQzIgMEEgQzAgNzUgQkQgOEIgIC4uLi5XZS4uLi4uLi51Li4KICAgIDhFODA6IDBFIDg1IDA0
IDhBIDE2IDg0IDA0IDgwIEZGIDA3IDc3IDM1IDgwIEZGIDAxIDc3ICAuLi4uLi4uLi4udzUuLi53
CiAgICA4RTkwOiAxMCAwQSBGRiA3NSAwNiBDNCAyRSA3QyAwMCBFQiAyNiBDNCAyRSAwQyAwMSBF
QiAgLi4udS4uLnwuLiYuLi4uLgogICAgOEVBMDogMjAgODAgRkYgMDIgNzUgMEIgOEMgQ0QgOEUg
QzUgMkUgOEIgMkUgMzYgNzYgRUIgICAuLi51Li4uLi4uLi42di4KICAgIDhFQjA6IDEwIDBFIDA3
IDhBIERGIDMyIEZGIDgwIEVCIDAyIEQxIEUzIDJFIDhCIEFGIDZBICAuLi4uLjIuLi4uLi4uLi5q
CiAgICA4RUMwOiA4RSA4QiBDNSA4QiBFQyA4OSA0RSAxNiA4OSA1NiAxMiA4OSA0NiAwQSA4QyA0
NiAgLi4uLi4uTi4uVi4uRi4uRgogICAgOEVEMDogMUUgQzMgNTcgNjUgNDQgNUQgNDQgNjEgNDQg
NjUgNTcgNjUgNTcgNzUgNTMgMDYgIC4uV2VEXURhRGVXZVd1Uy4KICAgIDhFRTA6IDhBIDI2IDQ5
IDA0IEU4IEQyIEMyIDI2IDhBIDQ3IDAyIDI2IDhBIDY3IDMzIEY2ICAuJkkuLi4uJi5HLiYuZzMu
CiAgICA4RUYwOiBDNCAwMSA3NCAyMiBCRCA1NyA2NSAzQyAxMCA3RCAwRSBFOCA3MSAwMiA4QyAw
NiAgLi50Ii5XZTwufS4ucS4uLgogICAgOEYwMDogMEUgMDEgM0MgMEUgN0QgMDcgQkQgNDQgNUQg
OEMgMEUgMEUgMDEgODkgMkUgMEMgIC4uPC59Li5EXS4uLi4uLi4KICAgIDhGMTA6IDAxIEU4IDEw
IDAxIEVCIDJEIEI0IDg0IDNDIDEwIDdEIDEzIEI0IDgxIDNDIDBFICAuLi4uLi0uLjwufS4uLjwu
CiAgICA4RjIwOiA3NCAwRCA3RiAxNSBCNCAwMiAzQyAwOCA3NCAwNSA4MCBDQyA4MCBFQiAwQSAy
NiAgdC4uLi4uPC50Li4uLi4uJgogICAgOEYzMDogRjYgNDcgMDUgMDEgNzQgMDMgODAgRTQgN0Yg
ODYgQzQgMzIgREIgRTggMDYgMDAgIC5HLi50Li4uLi4uMi4uLi4KICAgIDhGNDA6IEU4IEM5IDAx
IDA3IDVCIEMzIDhCIEY4IDhCIEYyIEJBIENFIDAzIEVDIEI4IDA1ICAuLi4uWy4uLi4uLi4uLi4u
CiAgICA4RjUwOiAwMCBFRiBCOCAwNiAwNCBFRiBCMiBDNCBFQyBCOCAwMiAwNCBFRiBCOCAwNCAw
NyAgLi4uLi4uLi4uLi4uLi4uLgogICAgOEY2MDogRUYgOEIgRDYgOEIgQzcgNTAgMjQgN0YgMEEg
QzAgNzQgMjIgMEUgMDcgMzMgRDIgIC4uLi4uUCQuLi50Ii4uMy4KICAgIDhGNzA6IEI5IDAwIDAx
IDNDIDA0IDc1IDA3IEI3IDEwIEJEIDU3IDY1IEVCIDEwIEZFIEM4ICAuLi48LnUuLi4uV2UuLi4u
CiAgICA4RjgwOiA3NSAwNyBCNyAwRSBFOCBFOCAwMSBFQiAwNSBCNyAwOCBCRCA0NCA1RCBFOCAy
RCAgdS4uLi4uLi4uLi4uRF0uLQogICAgOEY5MDogMDAgNTggQTggODAgNzQgMDAgQkEgQzQgMDMg
QjggMDIgMDMgRUYgQjggMDQgMDIgIC5YLi50Li4uLi4uLi4uLi4KICAgIDhGQTA6IEVGIEIyIEND
IEVDIEE4IDAxIEI4IDA2IDBFIDc1IDAyIEI0IDBBIEIyIENFIDUwICAuLi4uLi4uLi51Li4uLi5Q
CiAgICA4RkIwOiBFQyA1OCBFRiBCMCAwNCBFRSAzMiBDMCBFRSBCOCAwNSAxMCBFRiBDMyBGQyAw
QiAgLlguLi4uMi4uLi4uLi4uLgogICAgOEZDMDogQzkgNzUgMDEgQzMgODAgRkYgMEUgNzUgMEEg
MjYgODMgN0UgRkUgMTAgNzUgMDMgIC51Li4uLi51LiYufi4udS4KICAgIDhGRDA6IDgwIENEIDgw
IDFFIDA2IDFGIDJFIDhFIDA2IEQzIDAzIDhCIEZBIEMxIEU3IDA1ICAuLi4uLi4uLi4uLi4uLi4u
CiAgICA4RkUwOiBCMCA0MCA1MyA4MCBFMyAwMyBGNiBFMyA1QiBGNiBDMyAwNCA3NCAwMiAwNCAy
MCAgLkBTLi4uLi5bLi4udC4uIAogICAgOEZGMDogODYgRTAgOEIgRDAgMDMgRkEgOEIgRjUgRTMg
MjggMzIgQzAgODYgRkIgMzIgRkYgIC4uLi4uLi4uLigyLi4uMi4KICAgIDkwMDA6IDUxIEY2IEM1
IDgwIDc0IDAxIDQ2IDhCIENCIEYzIEE0IDgzIEZCIDIwIDc0IDA3ICBRLi4udC5GLi4uLi4uIHQu
CiAgICA5MDEwOiBCOSAyMCAwMCAyQiBDQiBGMyBBQSA1OSBGNiBDNSA4MCA3NCAwMSA0NiBGRSBD
OSAgLiAuKy4uLlkuLi50LkYuLgogICAgOTAyMDogNzUgREUgMUYgQzMgOEEgMjYgNDkgMDQgNTAg
MDYgNTcgQzQgM0UgQTggMDQgMjYgIHUuLi4uJkkuUC5XLj4uLiYKICAgIDkwMzA6IEM0IDdEIDBD
IDhDIEM1IDBCIEVGIDc0IDMwIDhCIEVGIDgzIEM3IDA3IDI2IDhBICAufS4uLi4udDAuLi4uLiYu
CiAgICA5MDQwOiAwNSAzQyBGRiA3NCAyNCAzOCBFMCA3NCAwMyA0NyBFQiBGMiA4QiBGRCAyNiA4
QSAgLjwudCQ4LnQuRy4uLi4mLgogICAgOTA1MDogMDUgRkUgQzggQTIgODQgMDQgMjYgOEIgNDUg
MDEgQTMgODUgMDQgMjYgQzQgN0QgIC4uLi4uLiYuRS4uLi4mLn0KICAgIDkwNjA6IDAzIDg5IDNF
IDBDIDAxIDhDIDA2IDBFIDAxIDVGIDA3IDU4IEMzIDI2IEY2IDQ3ICAuLj4uLi4uLi5fLlguJi5H
CiAgICA5MDcwOiAzMyAwMSA3NCAwMSBDMyBDNCAxRSBBOCAwNCAyNiBDNCA1RiAwOCA4QyBDMCAw
QiAgMy50Li4uLi4uJi5fLi4uLgogICAgOTA4MDogQzMgNzQgMUYgQkYgMEIgMDAgMjYgOEEgMDEg
M0MgRkYgNzQgMTUgNDcgMzggMDYgIC50Li4uLiYuLjwudC5HOC4KICAgIDkwOTA6IDQ5IDA0IDc1
IEYyIDI2IDhBIDA3IDMyIEU0IDg3IDA2IDg1IDA0IDhCIEQ4IEU4ICBJLnUuJi4uMi4uLi4uLi4u
CiAgICA5MEEwOiAwMSAwMCBDMyA4QiAxNiA2MyAwNCA4QSAyNiA4NSAwNCBGRSBDQyA4MCBFNCAx
RiAgLi4uLi5jLi4mLi4uLi4uLgogICAgOTBCMDogOUMgRkEgODAgRkEgRDQgNzQgMEIgQjAgMTQg
RUUgNDIgRUMgMjQgRTAgMEEgQzQgIC4uLi4udC4uLi5CLiQuLi4KICAgIDkwQzA6IEVFIDRBIEIw
IDA5IEVFIDQyIEVDIDI0IEUwIDBBIEM0IEVFIDlEIDhBIEM4IDhCICAuSi4uLkIuJC4uLi4uLi4u
CiAgICA5MEQwOiBDMyA4QSAxNiA4NSAwNCBGNiBGMiA4MCAzRSA4NCAwNCBGRiA3NSAwNyBBMiA4
NCAgLi4uLi4uLi4+Li4udS4uLgogICAgOTBFMDogMDQgRkUgMEUgODQgMDQgRjYgRTIgRjYgQzEg
ODAgNzQgMDIgRDEgRTAgNDggOEEgIC4uLi4uLi4uLi50Li4uSC4KICAgIDkwRjA6IEUwIEIwIDEy
IDhCIDE2IDYzIDA0IEVGIEEwIDRBIDA0IDhBIDI2IDg0IDA0IEZFICAuLi4uLmMuLi5KLi4mLi4u
CiAgICA5MTAwOiBDNCBGNiBFNCBEMSBFMCAwNSAwMCAwMSBBMyA0QyAwNCBDMyA4QSAyNiA0OSAw
NCAgLi4uLi4uLi4uTC4uLiZJLgogICAgOTExMDogNTAgMDYgNTcgQzQgM0UgQTggMDQgMjYgQzQg
N0QgMDggOEMgQzUgMEIgRUYgNzQgIFAuVy4+Li4mLn0uLi4uLnQKICAgIDkxMjA6IDRBIDhCIEVG
IDgzIEM3IDBCIDI2IDhBIDA1IDNDIEZGIDc0IDNFIDM4IEUwIDc0ICBKLi4uLi4mLi48LnQ+OC50
CiAgICA5MTMwOiAwMyA0NyBFQiBGMiA4QiBGRCAyNiA4QSAzRCAyNiA4QSA1RCAwMSAyNiA4QiA0
RCAgLkcuLi4uJi49Ji5dLiYuTQogICAgOTE0MDogMDIgMjYgOEIgNTUgMDQgMjYgOEEgNDUgMEEg
M0MgRkYgNzQgMDIgRkUgQzggNTAgIC4mLlUuJi5FLjwudC4uLlAKICAgIDkxNTA6IEEwIDg0IDA0
IEZFIEMwIEY2IDI2IDg1IDA0IEEzIDg1IDA0IDU4IEEyIDg0IDA0ICAuLi4uLi4mLi4uLi5YLi4u
CiAgICA5MTYwOiAyNiBDNCA3RCAwNiA4QiBFRiAzMiBDMCBFOCBEQiBGRCA1RiAwNyA1OCBDMyA1
MCAgJi59Li4uMi4uLi5fLlguUAogICAgOTE3MDogNTMgNTEgNTIgMkUgQTEgREIgMDMgMEIgQzAg
NzQgMDkgMkUgOEIgMkUgMzYgNzYgIFNRUi4uLi4uLnQuLi4uNnYKICAgIDkxODA6IDBFIDA3IEVC
IDA4IEI4IDMwIDExIEI3IDAyIEU4IEQwIEJEIDVBIDU5IDVCIDU4ICAuLi4uLjAuLi4uLi5aWVtY
CiAgICA5MTkwOiBDMyAzQyAwNCA3QyAwMSBDMyBFMyBGRCA1MyAyRSA4RSAxRSBEMSAwMyA4NiBG
QiAgLjwufC4uLi5TLi4uLi4uLgogICAgOTFBMDogMzIgRkYgRDEgRTMgOEIgRkIgODEgQzcgNTAg
MDQgOEIgMzUgNUIgODkgMTUgNTYgIDIuLi4uLi4uUC4uNVsuLlYKICAgIDkxQjA6IDhCIEYwIDUx
IDUzIDI2IDhBIDQ2IDAwIDQ1IDNDIDBEIDdGIDFGIDc1IDA0IDMyICAuLlFTJi5GLkU8Li4udS4y
CiAgICA5MUMwOiBEMiBFQiA0MCAzQyAwQSA3NCAzMiAzQyAwNyA3NSAwNSBFOCAzNCA3NSBFQiA2
MiAgLi5APC50MjwudS4uNHUuYgogICAgOTFEMDogM0MgMDggNzUgMDggMEEgRDIgNzQgNUEgRkUg
Q0EgRUIgMjcgRjcgQzYgMDIgMDAgIDwudS4uLnRaLi4uJy4uLi4KICAgIDkxRTA6IDc0IDA1IDI2
IDhBIDVFIDAwIDQ1IEI5IDAxIDAwIEI0IDA5IEU4IDZEIEJEIEZFICB0LiYuXi5FLi4uLi4ubS4u
CiAgICA5MUYwOiBDMiAzQSAxNiA0QSAwNCA3MiAwQyAzMiBEMiA4OSAxNSAzQSAzNiA4NCAwNCA3
MyAgLjouSi5yLjIuLi46Ni4ucwogICAgOTIwMDogMDYgRkUgQzYgODkgMTUgRUIgMkIgNTAgRTgg
RUEgRUEgNzUgMDggQjggMDAgMDggIC4uLi4uLitQLi4udS4uLi4KICAgIDkyMTA6IEU4IDQ5IEJE
IEVCIDA5IDgwIDNFIDQ5IDA0IDA3IDc0IEYxIDMyIEU0IDg2IDNFICAuSS4uLi4+SS4udC4yLi4+
CiAgICA5MjIwOiA2MiAwNCA1MyA4QSBGQyA1NSBFOCAyNSAwMCA1RCA1QiA4NiAzRSA2MiAwNCA1
OCAgYi5TLi5VLiUuXVsuPmIuWAogICAgOTIzMDogOEIgMTUgNUIgNTkgRTIgMTUgNUEgRjcgQzYg
MDEgMDAgNzUgMDIgODkgMTUgOEIgIC4uW1kuLlouLi4udS4uLi4KICAgIDkyNDA6IDA1IDNBIDNF
IDYyIDA0IDc1IDAzIEU4IDcxIEVEIEMzIEU5IDY0IEZGIDMzIEM5ICAuOj5iLnUuLnEuLi5kLjMu
CiAgICA5MjUwOiA4QSAzNiA4NCAwNCA4QSAxNiA0QSAwNCBGRSBDQSBCOCAwMSAwNiBFOCBGQyBC
QyAgLjYuLi4uSi4uLi4uLi4uLgogICAgOTI2MDogQzMgMkUgOEUgMUUgRDEgMDMgMEEgQzAgNzUg
MEQgRTggMTggMDAgOEIgRUMgODkgIC4uLi4uLi4udS4uLi4uLi4KICAgIDkyNzA6IDVFIDBFIEM2
IDQ2IDFBIDFBIEMzIDNDIDAxIDc1IDA5IEU4IDQxIDAwIDhCIEVDICBeLi5GLi4uPC51Li5BLi4u
CiAgICA5MjgwOiBDNiA0NiAxQSAxQSBDMyBBMCA4QSAwNCBCRiBGNyA5MiAyRSAzQSAwNSA3MiAw
NCAgLkYuLi4uLi4uLi4uOi5yLgogICAgOTI5MDogQkIgRkYgRkYgQzMgMzIgRTQgRDEgRTAgMDMg
RjggMkUgOEIgNUQgMDQgMEEgREIgIC4uLi4yLi4uLi4uLl0uLi4KICAgIDkyQTA6IDc0IDA1IDBB
IEZGIDc1IDA0IEMzIDg2IEZCIEMzIEEwIDEwIDA0IDI0IDMwIDNDICB0Li4udS4uLi4uLi4uJDA8
CiAgICA5MkIwOiAzMCA3NCAwNiBGNiBDMyAwMSA3NSBFRiBDMyBGNiBDMyAwMSA3NCBFOSBDMyBC
RiAgMHQuLi4udS4uLi4udC4uLgogICAgOTJDMDogRjcgOTIgMkUgOEEgMEQgMzIgQzAgODMgQzcg
MDQgMkUgM0IgMUQgNzQgMTIgODYgIC4uLi4uMi4uLi4uOy50Li4KICAgIDkyRDA6IEZCIDJFIDNC
IDFEIDc0IDBCIDgzIEM3IDAyIEZFIEMwIDM4IEM4IDdFIEVCIEIwICAuLjsudC4uLi4uLjgufi4u
CiAgICA5MkUwOiBGRiBBMiA4QSAwNCBDMyBCQiAwOCAwMCBGNiAwNiA4OSAwNCAwMiA3NCAwRSBC
QiAgLi4uLi4uLi4uLi4uLnQuLgogICAgOTJGMDogMDcgMDAgQkEgQ0MgMDMgRUMgQTggMDEgNzQg
MTggQkIgMDggMDAgQkEgQjQgMDMgIC4uLi4uLi4udC4uLi4uLi4KICAgIDkzMDA6IEU4IDFDIEVE
IDc0IDIxIEI3IDAxIEU4IEM5IEU5IDgwIEZBIEQ0IDc0IDE3IDg2ICAuLi50IS4uLi4uLi4udC4u
CiAgICA5MzEwOiBGQiBDMyBCQSBENCAwMyBFOCAwNyBFRCA3NCAwQyBCNyAwMiBFOCBCNCBFOSA4
MCAgLi4uLi4uLi50Li4uLi4uLgogICAgOTMyMDogRkEgQjQgNzQgMDIgODYgRkIgQzMgMEYgMDgg
MEYgMDggMEYgMDggMEYgMDggMDMgIC4udC4uLi4uLi4uLi4uLi4KICAgIDkzMzA6IDAxIDAzIDAx
IDAxIDAxIDAwIDA4IDAxIDAxIDAxIDAxIDAxIDAxIDAxIDAxIDBGICAuLi4uLi4uLi4uLi4uLi4u
CiAgICA5MzQwOiAwMSAwRiAwOCAwRiAwNCAwMCAwMiAwRiAwMiAwMSAwMSAwRiAwMSBGRiAwMSBG
RiAgLi4uLi4uLi4uLi4uLi4uLgogICAgOTM1MDogRTAgMEYgMDAgMDAgMDAgMDAgMDcgMDIgMDgg
RkYgMEUgMDAgMDAgM0YgMDAgMTAgIC4uLi4uLi4uLi4uLi4/Li4KICAgIDkzNjA6IDAxIDA4IDAw
IDAwIDAwIDAwIDAxIDAwIDAyIDAyIDAxIDAwIDA0IDA0IDAxIDAwICAuLi4uLi4uLi4uLi4uLi4u
CiAgICA5MzcwOiAwNSAwMiAwNSAwMCAwNiAwMSAwNiAwNSAwNiAwMCAwOCAwMSAwOCAwMCAwNyAw
MiAgLi4uLi4uLi4uLi4uLi4uLgogICAgOTM4MDogMDcgMDYgMDcgMDAgNTUgMDIgMzQgMDAgOTAg
MDAgRDIgMDAgMDAgMDAgMDAgMDAgIC4uLi5VLjQuLi4uLi4uLi4KICAgIDkzOTA6IDAwIDAwIDVG
IDU3IEMzIDkwIDUwIDY2IDUyIEU4IEY0IEZGIEZGIEZGIDgxIEVGICAuLl9XLi5QZlIuLi4uLi4u
CiAgICA5M0EwOiAxMCAwMCAwMCAwMCAyRSA4QiAwNyA2NiBCQSBGOCAwQyBFRiA2NiBCQSBGQyAw
QyAgLi4uLi4uLmYuLi4uZi4uLgogICAgOTNCMDogRUQgMzIgQzAgNjYgOEIgRjggNjYgNUEgNTgg
QzMgNjYgQjggNEYgMDMgNjYgNTIgIC4yLmYuLmZaWC5mLk8uZlIKICAgIDkzQzA6IDY2IDU2IDUz
IDU3IDUwIDBBIEZGIDc1IDQ0IEU4IEM4IEZGIEZGIEZGIDY2IDMzICBmVlNXUC4udUQuLi4uLmYz
CiAgICA5M0QwOiBGNiA2NiBCQiBEMCAwNSBFOCAwMCAwMSAwMCAwMCBDMSBFOCAxMCBGNiBDNCA0
MCAgLmYuLi4uLi4uLi4uLi4uQAogICAgOTNFMDogNzUgMkIgNjYgODEgRTIgRkYgMDIgNjYgRDEg
RTIgNjYgOEIgQzIgNjYgNDAgQzEgIHUrZi4uLi5mLi5mLi5mQC4KICAgIDkzRjA6IEUwIDEwIDY2
IDhCIEMyIDY2IEJCIDEzIDAwIEU4IEU4IDAwIDAwIDAwIDY2IEJCICAuLmYuLmYuLi4uLi4uLmYu
CiAgICA5NDAwOiAxMiAwMCBFOCBERiAwMCAwMCAwMCA2NiA1OCAzMiBFNCA2NiA1MCA1OCA1RiA1
QiAgLi4uLi4uLmZYMi5mUFhfWwogICAgOTQxMDogNjYgNUUgNjYgNUEgQzMgOTAgNjYgQjggNEYg
MDMgNTIgNTEgNTMgNTcgNjYgNTYgIGZeZlouLmYuTy5SUVNXZlYKICAgIDk0MjA6IDUwIDhBIEZC
IDgwIEUzIDdGIDBBIERCIDc1IDI2IEU4IDY3IEZGIEZGIEZGIEMxICBQLi4uLi4uLnUmLmcuLi4u
CiAgICA5NDMwOiBFMiAxMCA2NiA4QiBEMSBDMSBFMiAwMiA2NiBCRSAwMCAwMCBFOCBDNyAwMCAw
MCAgLi5mLi4uLi5mLi4uLi4uLgogICAgOTQ0MDogMDAgNjYgQkUgMDAgMDIgRTggQkUgMDAgMDAg
MDAgNjYgNTggMzIgRTQgNjYgNTAgIC5mLi4uLi4uLi5mWDIuZlAKICAgIDk0NTA6IDU4IDY2IDVF
IDVGIDVCIDU5IDVBIEMzIDY2IEI4IDRGIDAzIDY2IDUxIDU3IDU2ICBYZl5fW1laLmYuTy5mUVdW
CiAgICA5NDYwOiA1MyA1MiA1MCA4QSBGQiA4MCBFMyA3RiAwQSBEQiA3NSAzOSA4QSBEQSA1NyA1
QSAgU1JQLi4uLi4uLnU5Li5XWgogICAgOTQ3MDogRTggMjEgRkYgRkYgRkYgNjYgMzMgRjYgNjYg
NTMgNjYgQkIgRDAgMDUgRTggNTcgIC4hLi4uZjMuZlNmLi4uLlcKICAgIDk0ODA6IDAwIDAwIDAw
IDgwIEU0IDAxIDY2IDVCIDgwIEU3IEZFIDBBIEZDIDY2IEJFIDAwICAuLi4uLi5mWy4uLi4uZi4u
CiAgICA5NDkwOiAwMCBFOCBERSAwMCAwMCAwMCA2NiBCRSAwMCAwMiBFOCBENSAwMCAwMCAwMCA2
NiAgLi4uLi4uZi4uLi4uLi4uZgogICAgOTRBMDogNTggMzIgRTQgNjYgNTAgNTggNUEgNUIgNUUg
NUYgNjYgNTkgQzMgOTAgNTMgNTAgIFgyLmZQWFpbXl9mWS4uU1AKICAgIDk0QjA6IDUxIEY2IEM3
IDgwIDc0IDIwIDY2IEJCIDlDIDFCIEU4IDFCIDAwIDAwIDAwIEE4ICBRLi4udCBmLi4uLi4uLi4u
CiAgICA5NEMwOiAwMSA3NCAxMyA2NiBCOSBGRiBGRiA2NiBCQiBBMyAxQiBFOCAwQSAwMCAwMCAw
MCAgLnQuZi4uLmYuLi4uLi4uLgogICAgOTREMDogQTggMDEgNzUgMDIgRTIgRjEgNTkgNTggNUIg
QzMgNjYgNTIgRTggMTEgMDAgMDAgIC4udS4uLllYWy5mUi4uLi4KICAgIDk0RTA6IDAwIEVEIDY2
IDVBIEMzIDkwIDY2IDUyIEU4IDA1IDAwIDAwIDAwIEVGIDY2IDVBICAuLmZaLi5mUi4uLi4uLmZa
CiAgICA5NEYwOiBDMyA5MCA2NiA4QiBENyA1MCAzMyBDMCA2NiA4QiBDMyA2NiAwMyBDNiBDMSBF
MCAgLi5mLi5QMy5mLi5mLi4uLgogICAgOTUwMDogMDIgRUYgNjYgODMgQzIgMDQgNTggQzMgNTIg
RTggQTAgRkYgRkYgRkYgODEgRTIgIC4uZi4uLlguUi4uLi4uLi4KICAgIDk1MTA6IEZGIEZGIEZG
IDAyIDY2IEJCIDA0IDFBIEU4IEJEIEZGIEZGIEZGIDI1IDAwIDAwICAuLi4uZi4uLi4uLi4uJS4u
CiAgICA5NTIwOiAwMCBGRCAwMyBDMiA2NiAyNSAwMCBGMCBFOCBCOSBGRiBGRiBGRiA2NiBCQiAw
NSAgLi4uLmYlLi4uLi4uLmYuLgogICAgOTUzMDogMUEgRTggQjAgRkYgRkYgRkYgNjYgODEgRTIg
RkYgMEYgNjYgQkIgMDEgMUEgRTggIC4uLi4uLmYuLi4uZi4uLi4KICAgIDk1NDA6IDk2IEZGIEZG
IEZGIDI0IDAzIDhBIEM4IDY2IEQzIEVBIDY2IEJCIDA2IDFBIEU4ICAuLi4uJC4uLmYuLmYuLi4u
CiAgICA5NTUwOiA4NiBGRiBGRiBGRiA2NiAwMyBDMiA2NiBCQiAwRCAxQSBFOCA4NiBGRiBGRiBG
RiAgLi4uLmYuLmYuLi4uLi4uLgogICAgOTU2MDogNjYgOEIgQzIgMjQgRkMgQzEgRTAgMTAgNjYg
QkIgNUMgMUIgRTggNzUgRkYgRkYgIGYuLiQuLi4uZi5cLi51Li4KICAgIDk1NzA6IEZGIDVBIEMz
IDkwIDUyIDY2IDUzIDY2IDUxIEU4IDMwIEZGIEZGIEZGIDMzIEMwICAuWi4uUmZTZlEuMC4uLjMu
CiAgICA5NTgwOiA4QSBDMyA2NiA1MyA2NiBCQiA3OSAxQSBFOCA1OSBGRiBGRiBGRiA2NiA1QiA2
NiAgLi5mU2YueS4uWS4uLmZbZgogICAgOTU5MDogNDkgNjYgODEgRTEgRkYgMDAgNjYgNDEgMzIg
QzAgNjYgNTMgNjYgQkIgNzggMUEgIElmLi4uLmZBMi5mU2YueC4KICAgIDk1QTA6IEU4IDQxIEZG
IEZGIEZGIDY2IDVCIDI2IDhBIDQyIDAyIEMxIEUwIDBBIDI2IDhBICAuQS4uLmZbJi5CLi4uLiYu
CiAgICA5NUIwOiA0MiAwMSBDMSBFMCAwQSAyNiA4QSAwMiBDMSBFMCAwMiBGNiBDNyAwMSA3NSAw
MyAgQi4uLi4mLi4uLi4uLi51LgogICAgOTVDMDogQzEgRTAgMDIgNjYgNTMgNjYgQkIgN0MgMUEg
RTggMTggRkYgRkYgRkYgNjYgNUIgIC4uLmZTZi58Li4uLi4uZlsKICAgIDk1RDA6IDgzIEMyIDA0
IEUyIEQyIDY2IDU5IDY2IDVCIDVBIEMzIDAwIDBEIDM5IDAwIDM5ICAuLi4uLmZZZltaLi4uOS45
CiAgICA5NUUwOiAwMCAzOSAwMCAzOSBFQiAzOCBFQiAzOCBFQiAzOCBFQiAzOCAyRCAzNSBBNCAz
NSAgLjkuOS44LjguOC44LTUuNQogICAgOTVGMDogQ0UgMzUgMEYgMzcgMEUgMzcgMEUgMzcgNTQg
MzcgQjkgMzcgRTkgMzcgQTYgMzggIC41LjcuNy43VDcuNy43LjgKICAgIDk2MDA6IENGIDM4IENG
IDM4IDQ2IDM3IDM5IDM3IDM5IDM3IDM5IDM3IDM5IDM3IDM5IDM3ICAuOC44Rjc5Nzk3OTc5Nzk3
CiAgICA5NjEwOiA1NCAzNyBCOSAzNyBFOSAzNyBBNiAzOCBENCAzOCAxQSAzOSBDRiAzOCBDRiAz
OCAgVDcuNy43LjguOC45LjguOAogICAgOTYyMDogRkYgRkYgRkYgRkYgRkYgRkYgMDAgMDAgRkYg
RkYgMDAgMDAgRkYgRkYgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAgIDk2MzA6IEZGIDAwIDAw
IDAwIEZGIDAwIDAwIDAwIEZGIDAwIDAwIDAwIEZGIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4u
CiAgICA5NjQwOiAwMCAwMCAwOCAxMCAwMCAwOCAxMCAxOCAwMCAwOCAxMCAxOCAzMSAzMyAwMSAz
MSAgLi4uLi4uLi4uLi4uMTMuMQogICAgOTY1MDogMzMgMDIgM0YgNDcgMDMgMUYgNDcgMDMgNTYg
MzQgMDMgMEEgMzQgMDMgMzIgMzMgIDMuP0cuLkcuVjQuLjQuMjMKICAgIDk2NjA6IDA0IDRCIDMz
IDA0IDVCIDMzIDA0IDMxIDMzIDAzIDAwIDAwIDAwIDAwIERFIDNBICAuSzMuWzMuMTMuLi4uLi46
CiAgICA5NjcwOiAwMCAwMiBERSAzQSAwMSAwMiBERSAzQSAwMiAwMiBERSAzQSAwMyAwMiBERSAz
QSAgLi4uOi4uLjouLi46Li4uOgogICAgOTY4MDogMDQgMDIgREUgM0EgMDUgMDIgRDggM0MgMDAg
MDIgRDggM0MgMDEgMDIgRDggM0MgIC4uLjouLi48Li4uPC4uLjwKICAgIDk2OTA6IDAyIDAyIEQ4
IDNDIDAzIDAyIEQ4IDNDIDA0IDAyIEQ4IDNDIDA1IDAyIDBEIDNEICAuLi48Li4uPC4uLjwuLi49
CiAgICA5NkEwOiAwMCAwMiAwRCAzRCAwMSAwMiAwRCAzRCAwMiAwMiAwRCAzRCAwMyAwMiAwRCAz
RCAgLi4uPS4uLj0uLi49Li4uPQogICAgOTZCMDogMDQgMDIgMEQgM0QgMDUgMDIgNDggM0YgMDAg
MDIgNDggM0YgMDEgMDIgNDggM0YgIC4uLj0uLkg/Li5IPy4uSD8KICAgIDk2QzA6IDAyIDAyIDQ4
IDNGIDAzIDAyIDQ4IDNGIDA0IDAyIDQ4IDNGIDA1IDAyIDQ4IDNGICAuLkg/Li5IPy4uSD8uLkg/
CiAgICA5NkQwOiAwMCAwMiA0OCAzRiAwMSAwMiA0OCAzRiAwMiAwMiA0OCAzRiAwMyAwMiA0OCAz
RiAgLi5IPy4uSD8uLkg/Li5IPwogICAgOTZFMDogMDQgMDIgNDggM0YgMDUgMDIgMEYgM0UgMDAg
MDIgMEYgM0UgMDEgMDIgMEYgM0UgIC4uSD8uLi4+Li4uPi4uLj4KICAgIDk2RjA6IDAyIDAyIDBG
IDNFIDAzIDAyIDBGIDNFIDA0IDAyIDBGIDNFIDA1IDAyIDRCIDNFICAuLi4+Li4uPi4uLj4uLks+
CiAgICA5NzAwOiAwMCAwMiA0QiAzRSAwMSAwMiA0QiAzRSAwMiAwMiA0QiAzRSAwMyAwMiA0QiAz
RSAgLi5LPi4uSz4uLks+Li5LPgogICAgOTcxMDogMDQgMDIgNEIgM0UgMDUgMDIgQkMgM0QgMDAg
MDIgQkMgM0QgMDEgMDIgQkMgM0QgIC4uSz4uLi49Li4uPS4uLj0KICAgIDk3MjA6IDAyIDAyIEJD
IDNEIDAzIDAyIEJDIDNEIDA0IDAyIEJDIDNEIDA1IDAyIEYwIDNEICAuLi49Li4uPS4uLj0uLi49
CiAgICA5NzMwOiAwMCAwMiBGMCAzRCAwMSAwMiBGMCAzRCAwMiAwMiBGMCAzRCAwMyAwMiBGMCAz
RCAgLi4uPS4uLj0uLi49Li4uPQogICAgOTc0MDogMDQgMDIgRjAgM0QgMDUgMDIgQTAgNDEgMDAg
MDAgRDMgNDEgMDEgMDAgRDMgNDEgIC4uLj0uLi5BLi4uQS4uLkEKICAgIDk3NTA6IDAyIDAwIEMw
IDQxIDAwIDAwIEFFIDQwIDAwIDAyIEE3IDNFIDAwIDAyIEE3IDNFICAuLi5BLi4uQC4uLj4uLi4+
CiAgICA5NzYwOiAwMSAwMiBBNyAzRSAwMiAwMiBBNyAzRSAwMyAwMiBBNyAzRSAwNCAwMiBBNyAz
RSAgLi4uPi4uLj4uLi4+Li4uPgogICAgOTc3MDogMDUgMDIgQzYgNDAgMDAgMDIgMUIgNDMgMDUg
MDAgMUIgNDMgMDEgMDAgMUIgNDMgIC4uLkAuLi5DLi4uQy4uLkMKICAgIDk3ODA6IDAwIDAwIDFC
IDQzIDAyIDAwIDVDIDQzIDAwIDAwIDVDIDQzIDAyIDAwIEExIDQzICAuLi5DLi5cQy4uXEMuLi5D
CiAgICA5NzkwOiAwMCAwMCAzMSA0MCAwMCAwMiAzMSA0MCAwMSAwMiAzMSA0MCAwMiAwMiAzMSA0
MCAgLi4xQC4uMUAuLjFALi4xQAogICAgOTdBMDogMDMgMDIgMzEgNDAgMDQgMDIgMzEgNDAgMDUg
MDIgRUQgNDEgMDAgMDAgMTUgNDIgIC4uMUAuLjFALi4uQS4uLkIKICAgIDk3QjA6IDAwIDAwIDk2
IDQyIDAwIDAwIDExIDQzIDAwIDAwIEY1IDNFIDAwIDAyIEY1IDNFICAuLi5CLi4uQy4uLj4uLi4+
CiAgICA5N0MwOiAwMSAwMiBGNSAzRSAwMiAwMiBGNSAzRSAwMyAwMiBGNSAzRSAwNCAwMiBGNSAz
RSAgLi4uPi4uLj4uLi4+Li4uPgogICAgOTdEMDogMDUgMDIgMTAgNDMgMDAgMDEgMTAgNDMgMDAg
MDEgMTQgM0MgMDAgMDIgMTQgM0MgIC4uLkMuLi5DLi4uPC4uLjwKICAgIDk3RTA6IDAxIDAyIDE0
IDNDIDAyIDAyIDE0IDNDIDAzIDAyIDE0IDNDIDA0IDAyIDE0IDNDICAuLi48Li4uPC4uLjwuLi48
CiAgICA5N0YwOiAwNSAwMiAzNSA0MiAwMCAwMCAxMSA0MyAwMCAwMCAxMSA0MyAwMCAwMCAxMSA0
MyAgLi41Qi4uLkMuLi5DLi4uQwogICAgOTgwMDogMDAgMDAgNDYgNDEgMDAgMDAgMzggM0QgMDAg
MDIgMzggM0QgMDEgMDIgMzggM0QgIC4uRkEuLjg9Li44PS4uOD0KICAgIDk4MTA6IDAyIDAyIDM4
IDNEIDAzIDAyIDM4IDNEIDA0IDAyIDM4IDNEIDA1IDAyIDY3IDNEICAuLjg9Li44PS4uOD0uLmc9
CiAgICA5ODIwOiAwMCAwMiA2NyAzRCAwMSAwMiA2NyAzRCAwMiAwMiA2NyAzRCAwMyAwMiA2NyAz
RCAgLi5nPS4uZz0uLmc9Li5nPQogICAgOTgzMDogMDQgMDIgNjcgM0QgMDUgMDIgOUQgM0QgMDAg
MDIgOUQgM0QgMDEgMDIgOUQgM0QgIC4uZz0uLi49Li4uPS4uLj0KICAgIDk4NDA6IDAyIDAyIDlE
IDNEIDAzIDAyIDlEIDNEIDA0IDAyIDlEIDNEIDA1IDAyIDU4IDQyICAuLi49Li4uPS4uLj0uLlhC
CiAgICA5ODUwOiAwMCAwMCA3QiA0MiAwMCAwMCAzOSAzRSAwMSAwMiAzOSAzRSAwMiAwMiA5NSAz
RSAgLi57Qi4uOT4uLjk+Li4uPgogICAgOTg2MDogMDEgMDIgOTUgM0UgMDIgMDIgQTYgMDAgMDEg
MDEgNDggQUIgQ0UgQUIgMjYgQUMgIC4uLj4uLi4uLi5ILi4uJi4KICAgIDk4NzA6IEZFIEM4IDJF
IEQzIERFIEFDIDAwIDAwIDA4IEM5IDAwIDAwIEVBIEFEIEVBIEFFICAuLi4uLi4uLi4uLi4uLi4u
CiAgICA5ODgwOiA5NiBCMCBCOCBCMSAwNiBCNiA5MiBCNyA5QSBCNyBBNCBEMCBENiBEMCBBRSBC
QiAgLi4uLi4uLi4uLi4uLi4uLgogICAgOTg5MDogQzAgQkMgRTIgQkMgMDAgMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAgIDk4QTA6IDcwIEJEIDAw
IDAwIDAwIDAwIEU2IERDIDdDIEREIDAwIDAwIDMwIEMwIEE4IEMwICBwLi4uLi4uLnwuLi4wLi4u
CiAgICA5OEIwOiAxQyBDMSAwMCAwMCA1QSBDMSA4NiBDMSAwMCAwMCBBOCBDMSBDMiBDMSA0MiBD
MiAgLi4uLlouLi4uLi4uLi5CLgogICAgOThDMDogMDggQzMgQjggQzQgMDYgQzUgMDAgRTMgRTAg
QzUgMUUgQzYgRUMgQzYgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAgIDk4RDA6IEVDIERGIDQw
IEM4IDMwIEUyIDIyIEM5IDA2IERGIDU0IENCIEI0IENCIEJFIENCICAuLkAuMC4iLi4uVC4uLi4u
CiAgICA5OEUwOiBDOCBDQiAwNCBDQyBCNCBDRCA5NiBENSBCQyBDRCAwQyBDRiAwQyBEMCAwMCAw
MCAgLi4uLi4uLi4uLi4uLi4uLgogICAgOThGMDogRTYgRDAgMDAgMDAgQkUgRTEgMDAgMDAgMjQg
QjggNUMgQkIgMDAgMDAgMDAgMDAgIC4uLi4uLi4uJC5cLi4uLi4KICAgIDk5MDA6IDAwIDAwIEMw
IEQ1IDA2IEQ3IDNFIERBIDhBIERDIEFBIEQyIDRBIDAwIDAxIDAxICAuLi4uLi4+Li4uLi5KLi4u
CiAgICA5OTEwOiAwMCAwMCAwMCAwMCAwMCAwMCBFRSA5OCBEMiA5OSAzRSA5QSA3MiA5QSAwMCAw
MCAgLi4uLi4uLi4uLj4uci4uLgogICAgOTkyMDogQkEgQUEgMDAgMDAgQzAgOUEgOUMgOUIgQTgg
OUIgQzggOUIgNzAgOUMgN0MgOUMgIC4uLi4uLi4uLi4uLnAufC4KICAgIDk5MzA6IDAwIDAwIEEy
IEFBIDAwIDAwIEIwIDlGIDAwIDAwIDAwIDAwIEI2IDlGIEU4IEEzICAuLi4uLi4uLi4uLi4uLi4u
CiAgICA5OTQwOiAxNCBBMSAwMCAwMCAxNiBBQSAzRSBBQSA2NiBBNCAwMCAwMCAwMCAwMCBDOCBB
OCAgLi4uLi4uPi5mLi4uLi4uLgogICAgOTk1MDogRDQgQTkgMDAgMDAgRjIgQUEgRTQgMDAgMDEg
MDIgNEUgMEMgODAgMDIgQzAgMDAgIC4uLi4uLi4uLi5OLi4uLi4KICAgIDk5NjA6IDkwIDAxIDJE
IDAwIDIwIDAwIDQwIDAwIDAxIDAwIDAzIDAwIDAwIDAwIDAwIDAwICAuLi0uIC5ALi4uLi4uLi4u
CiAgICA5OTcwOiAwMCAwMCAwMiAwMCBFNiA1NSBENiAwOSA4MCAwMiBBMCAwMCBFMCAwMSAyRCAw
MCAgLi4uLi5VLi4uLi4uLi4tLgogICAgOTk4MDogMTAgMDAgNjAgMDAgMEEgMDAgMDIgMDAgMDAg
MDAgMDAgMDAgMDggMDggMDYgMDAgIC4uYC4uLi4uLi4uLi4uLi4KICAgIDk5OTA6IDEyIDNDIEEw
IDBGIDIwIDAzIDAwIDAxIDU4IDAyIDFDIDAwIDI4IDAwIDgwIDAwICAuPC4uIC4uLlguLi4oLi4u
CiAgICA5OUEwOiAwMSAwMCAwNCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCA2QSAzQyA2NCAx
OSAgLi4uLi4uLi4uLi4uajxkLgogICAgOTlCMDogMDAgMDQgNDAgMDEgMDAgMDMgMjYgMDAgMTgg
MDAgODggMDAgMDMgMDAgMDYgMDAgIC4uQC4uLiYuLi4uLi4uLi4KICAgIDk5QzA6IDAwIDAwIDAw
IDAwIDAwIDAwIDA2IDAwIDU1IDNDIDMwIDJBIDAwIDA1IDA4IDAyICAuLi4uLi4uLlU8MCouLi4u
CiAgICA5OUQwOiBDMCAwMyAyOCAwMCA2MCAwMCA3MCAwMCAwMSAwMCAwMyAwMCAwMCAwMCAwMCAw
MCAgLi4oLmAucC4uLi4uLi4uLgogICAgOTlFMDogMDAgMDAgMDAgMDAgRTkgM0MgMzAgMkEgMDAg
MDUgOTggMDEgMDAgMDQgMkEgMDAgIC4uLi4uPDAqLi4uLi4uKi4KICAgIDk5RjA6IDMwIDAwIDcw
IDAwIDAxIDAwIDAzIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAwLnAuLi4uLi4uLi4uLi4u
CiAgICA5QTAwOiBFQSAzQyA4RiAyRiA3OCAwNSBEMCAwMSAxQSAwNCAyNyAwMCA1OCAwMCA5MCAw
MCAgLjwuL3guLi4uLicuWC4uLgogICAgOUExMDogMDMgMDAgMDQgMDAgMDAgMDAgMDAgMDAgMDAg
MDAgMDIgMDAgRUIgM0MgNDggM0YgIC4uLi4uLi4uLi4uLi48SD8KICAgIDlBMjA6IDQwIDA2IDMw
IDAyIEIwIDA0IDMyIDAwIDQwIDAwIEMwIDAwIDAxIDAwIDAzIDAwICBALjAuLi4yLkAuLi4uLi4u
CiAgICA5QTMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCBFQyAzQyA2QyAwMCAwMiAwMiAwMCAw
MCAgLi4uLi4uLi4uPGwuLi4uLgogICAgOUE0MDogMzIgMEYgMzAgNzUgMDAgMDAgMzAgNzUgMDAg
MDAgMDAgMDAgMDAgMDAgNDAgN0UgIDIuMHUuLjB1Li4uLi4uQH4KICAgIDlBNTA6IDA1IDAwIDAw
IDAwIDAwIDAwIDAwIDAwIDAwIDAwIEMwIDI3IDA5IDAwIDAwIDAwICAuLi4uLi4uLi4uLicuLi4u
CiAgICA5QTYwOiAwMCAwMCA5MiBGNCAwMCAwMCAwMCAwMCA4NCAwMyA5QSAwQiA3MCAxNyAwMCAw
MCAgLi4uLi4uLi4uLi4ucC4uLgogICAgOUE3MDogMDAgMDAgMjggODggMDQgMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uKC4uLi4uLi4uLi4uLi4KICAgIDlBODA6IDAwIDAwIDQw
IDlDIEM0IDA5IDEwIDI3IDUyIDAzIDFGIDQwIDEwIDI3IDEwIDI3ICAuLkAuLi4uJ1IuLkAuJy4n
CiAgICA5QTkwOiAxMCAyNyAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAgLicuLi4uLi4uLi4uLi4uLgogICAgOUFBMDogMDAgMDAgMDAgMDAgMDAgMDAgMzQgMDAgMDIg
MDEgMDAgMDAgMDAgMDAgMDAgMkEgIC4uLi4uLjQuLi4uLi4uLioKICAgIDlBQjA6IDAwIDJBIDAw
IDAwIDJBIDJBIDJBIDAwIDAwIDJBIDAwIDJBIDJBIDE1IDAwIDJBICAuKi4uKioqLi4qLioqLi4q
CiAgICA5QUMwOiAyQSAyQSAxNSAxNSAxNSAxNSAxNSAzRiAxNSAzRiAxNSAxNSAzRiAzRiAzRiAx
NSAgKiouLi4uLj8uPy4uPz8/LgogICAgOUFEMDogMTUgM0YgMTUgM0YgM0YgM0YgMTUgM0YgM0Yg
M0YgNEUgMDAgMDEgMDMgMDAgMDAgIC4/Lj8/Py4/Pz9OLi4uLi4KICAgIDlBRTA6IDAwIDAwIDAw
IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4u
CiAgICA5QUYwOiAwMCAwMCAwMCAwMCAwMCAwMCAwNiAwMCAwMCAwMCAwMCAwMCAyMCAwMCAwMCAw
MCAgLi4uLi4uLi4uLi4uIC4uLgogICAgOUIwMDogMDAgMDAgMUQgM0MgMDEgMDAgMDAgMDAgMDAg
MDAgMDAgNDggQzggMDAgMDcgNUEgIC4uLjwuLi4uLi4uSC4uLloKICAgIDlCMTA6IDVBIDA3IDdE
IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICBaLn0uLi4uLi4uLi4uLi4u
CiAgICA5QjIwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCBEQyAwMCAwMSAwMSA2OCA0OCA2QSA0
OCAgLi4uLi4uLi4uLi4uaEhqSAogICAgOUIzMDogNkIgNDggNjkgNDggNjggNDggNkEgNDggNkIg
NDggNjkgNDggOTAgMDAgMDAgMDAgIGtIaUhoSGpIa0hpSC4uLi4KICAgIDlCNDA6IDAwIDA4IDA4
IDA4IDA4IDAwIDAwIDZDIDQ4IDZFIDQ4IDZGIDQ4IDZEIDQ4IDZDICAuLi4uLi4ubEhuSG9IbUhs
CiAgICA5QjUwOiA0OCA2RSA0OCA2RiA0OCA2RCA0OCA5MSAwMCAwMCAwMCAwMCAwOCAwOCAwOCAw
OCAgSG5Ib0htSC4uLi4uLi4uLgogICAgOUI2MDogMDAgMDAgNzAgNDggNzIgNDggNzMgNDggNzEg
NDggNzAgNDggNzIgNDggNzMgNDggIC4ucEhySHNIcUhwSHJIc0gKICAgIDlCNzA6IDcxIDQ4IDky
IDAwIDAwIDAwIDAwIDA4IDA4IDA4IDA4IDAwIDAwIDc0IDQ4IDc2ICBxSC4uLi4uLi4uLi4udEh2
CiAgICA5QjgwOiA0OCA3NyA0OCA3NSA0OCA3NCA0OCA3NiA0OCA3NyA0OCA3NSA0OCA5MyAwMCAw
MCAgSHdIdUh0SHZId0h1SC4uLgogICAgOUI5MDogMDAgMDAgMDggMDggMDggMDggMDAgMDAgNzgg
NDggN0EgNDggN0IgNDggNzkgNDggIC4uLi4uLi4ueEh6SHtIeUgKICAgIDlCQTA6IDc4IDQ4IDdB
IDQ4IDdCIDQ4IDc5IDQ4IDk0IDAwIDAwIDAwIDAwIDA4IDA4IDA4ICB4SHpIe0h5SC4uLi4uLi4u
CiAgICA5QkIwOiAwOCAwMCAwMCA3QyA0OCA3RSA0OCA3RiA0OCA3RCA0OCA3QyA0OCA3RSA0OCA3
RiAgLi4ufEh+SC5IfUh8SH5ILgogICAgOUJDMDogNDggN0QgNDggOTUgMDAgMDAgMDAgMDAgMDgg
MDggMDggMDggMDAgMDAgOTggNDggIEh9SC4uLi4uLi4uLi4uLkgKICAgIDlCRDA6IDlBIDQ4IDlC
IDQ4IDk5IDQ4IDk4IDQ4IDlBIDQ4IDlCIDQ4IDk5IDQ4IDk2IDAwICAuSC5ILkguSC5ILkguSC4u
CiAgICA5QkUwOiAwMCAwMCAwMCAwMSAwMSAwMSAwMSAwMCAwMCA4MCA0OCA4MiA0OCA4MyA0OCA4
MSAgLi4uLi4uLi4uLkguSC5ILgogICAgOUJGMDogNDggODAgNDggODIgNDggODMgNDggODEgNDgg
OTcgMDAgMDAgMDAgMDAgMDggMDggIEguSC5ILkguSC4uLi4uLi4KICAgIDlDMDA6IDA4IDA4IDAw
IDAwIDBDIDAwIDAxIDA1IEUwIEZGIDNGIDAwIDIwIDAwIDIwIDAwICAuLi4uLi4uLi4uPy4gLiAu
CiAgICA5QzEwOiAyMCAwMCAwMSAwMSA4RCA0OCAwMCAwMSA4RCA0OCAwOCAwMiA4RCA0OCAxMCAw
MyAgIC4uLi5ILi4uSC4uLkguLgogICAgOUMyMDogOEQgNDggMTggMDQgOEQgNDggMUEgMDUgOEQg
NDggMUMgMDYgODMgMDEgMDUgM0QgIC5ILi4uSC4uLkguLi4uLj0KICAgIDlDMzA6IEE4IDAwIDAx
IDAxIDAwIDAxIDAyIEU2IDAxIDAxIDAyIDEyIDAzIDAxIDAyIDZBICAuLi4uLi4uLi4uLi4uLi5q
CiAgICA5QzQwOiAwNSAwMSAwMiA1NSAwNyAwMSAwMiBFQSAxMCAwMSAwNiAxMiAxMSAwMSAxNiAx
MiAgLi4uVS4uLi4uLi4uLi4uLgogICAgOUM1MDogMTMgMDEgMDYgNkEgMTQgMDEgMTYgNkEgMTYg
MDEgMDYgNTUgMTcgMDEgMTYgNTUgIC4uLmouLi5qLi4uVS4uLlUKICAgIDlDNjA6IDE5IDAxIDA2
IEVBIDFBIDAxIDE2IEVBIDYzIDAxIDAyIEU5IDY1IDAxIDE2IEU5ICAuLi4uLi4uLmMuLi5lLi4u
CiAgICA5QzcwOiA2NiAwMSAwQSBFOSAyMSAwMSAwQSAxMiAyMiAwMSAwQSA2QSAyMyAwMSAwQSA1
NSAgZi4uLiEuLi4iLi5qIy4uVQogICAgOUM4MDogMjQgMDEgMEEgRUEgNDMgMDEgMDIgRUIgNDUg
MDEgMTYgRUIgNDYgMDEgMEEgRUIgICQuLi5DLi4uRS4uLkYuLi4KICAgIDlDOTA6IDczIDAxIDAy
IEVDIDc1IDAxIDE2IEVDIDc2IDAxIDBBIEVDIEQxIDAxIDAyIDcwICBzLi4udS4uLnYuLi4uLi5w
CiAgICA5Q0EwOiBEMiAwMSAxNiA3MCBENCAwMSAwQSA3MCBENyAwMSAwMiA3MSBEOCAwMSAxNiA3
MSAgLi4ucC4uLnAuLi5xLi4ucQogICAgOUNCMDogRDkgMDEgMEEgNzEgRTEgMDEgMDIgNzIgRTIg
MDEgMTYgNzIgRTQgMDEgMEEgNzIgIC4uLnEuLi5yLi4uci4uLnIKICAgIDlDQzA6IEU3IDAxIDAy
IDczIEU4IDAxIDE2IDczIEU5IDAxIDBBIDczIEYzIDAxIDAyIDc0ICAuLi5zLi4ucy4uLnMuLi50
CiAgICA5Q0QwOiBGNSAwMSAxNiA3NCBGNiAwMSAwQSA3NCAwQyAwMCAwMiAwMSAwMSAwOCAwNCAw
OCAgLi4udC4uLnQuLi4uLi4uLgogICAgOUNFMDogMDkgMDEgMDIgMDggMzQgMDMgMDcgMDEgMDAg
NEQgMDAgNEQgMDYgMDAgMDAgN0YgIC4uLi40Li4uLk0uTS4uLi4KICAgIDlDRjA6IDI0IDAwIDAw
IDE5IDAwIDAwIDAwIDAwIDgwIDAyIDAxIDQwIDBEIDAzIDAwIEU4ICAkLi4uLi4uLi4uLkAuLi4u
CiAgICA5RDAwOiA2RSAwMyAwMCAzMiAwMCAzMiAwMCA0RCAwMCA5NCAwMiA4QiAwMiAwMCAwMCBC
NSAgbi4uMi4yLk0uLi4uLi4uLgogICAgOUQxMDogMDEgM0IgMDEgNzcgMDAgRjkgMDAgRDEgMDEg
RjkgMDIgMDAgMDAgQzQgMDIgMDAgIC47LncuLi4uLi4uLi4uLi4KICAgIDlEMjA6IDAwIDEzIDAz
IDJEIDAzIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAuLi4tLi4uLi4uLi4uLi4u
CiAgICA5RDMwOiAwMCAwMSAwMiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwOCAwMCAwMCAwMCAw
MCAgLi4uLi4uLi4uLi4uLi4uLgogICAgOUQ0MDogMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDcgMDAg
MDEgMDAgMDAgMDAgMDAgMDAgMDUgIC4uLi4uLi4uLi4uLi4uLi4KICAgIDlENTA6IDAwIDAwIDAw
IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDEwIDIwIDAzIDAwICAuLi4uLi4uLi4uLi4uIC4u
CiAgICA5RDYwOiAwMCAwMCAwMCAwMCAwMCAwMiBGRiAwMCAwMCAwMCAwMCAwMCAwMCAwMyBGRiAw
MCAgLi4uLi4uLi4uLi4uLi4uLgogICAgOUQ3MDogMDAgMDAgMDAgMDAgMDAgMDQgRkYgMDAgMDAg
MDAgMDAgMDAgMDAgMDUgRkYgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAgIDlEODA6IDAwIDAwIDAw
IDAwIDAwIDA2IEZGIDAwIDAwIDAwIDAwIDAwIDAwIDA3IEZGIDAwICAuLi4uLi4uLi4uLi4uLi4u
CiAgICA5RDkwOiAwMCAwMCAwMCAwMCAwMCAwOCBGRiAwMCAwMCAwMCAwMCAwMCAwMCA1MiAwMyAw
MCAgLi4uLi4uLi4uLi4uLlIuLgogICAgOURBMDogMDAgMDAgMDAgMDAgMDAgODQgMDMgMDAgMDAg
MDAgMDAgMDAgMDAgQjYgMDMgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAgIDlEQjA6IDAwIDAwIDAw
IDAwIDAwIEU4IDAzIDAwIDAwIDAwIDAwIDAwIDAwIDFBIDA0IDAwICAuLi4uLi4uLi4uLi4uLi4u
CiAgICA5REMwOiAwMCAwMCAwMCAwMCAwMCA0QyAwNCAwMCAwMCAwMCAwMCAwMCAwMCA3RSAwNCAw
MCAgLi4uLi5MLi4uLi4uLn4uLgogICAgOUREMDogMDAgMDAgMDAgMDAgMDAgQ0YgMDMgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDggODQgIC4uLi4uLi4uLi4uLi4uLi4KICAgIDlERTA6IDAzIDAwIDAw
IDAwIDAwIDAwIDAwIDAyIEZGIDAwIDAwIDAwIDAwIDAwIDAwIDAzICAuLi4uLi4uLi4uLi4uLi4u
CiAgICA5REYwOiBGRiAwMCAwMCAwMCAwMCAwMCAwMCAwNCBGRiAwMCAwMCAwMCAwMCAwMCAwMCAw
NSAgLi4uLi4uLi4uLi4uLi4uLgogICAgOUUwMDogRkYgMDAgMDAgMDAgMDAgMDAgMDAgMDYgRkYg
MDAgMDAgMDAgMDAgMDAgMDAgMDcgIC4uLi4uLi4uLi4uLi4uLi4KICAgIDlFMTA6IEZGIDAwIDAw
IDAwIDAwIDAwIDAwIDA4IEZGIDAwIDAwIDAwIDAwIDAwIDAwIDAxICAuLi4uLi4uLi4uLi4uLi4u
CiAgICA5RTIwOiAwOCAwMCAwMCAwMCAzMCA3NSAwMCAwMCAwMCAwMCAwMCA4MCAwMCAwMCAwMCAw
MCAgLi4uLjB1Li4uLi4uLi4uLgogICAgOUUzMDogMDEgRTYgRkYgODAgRUQgMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDIgIC4uLi4uLi4uLi4uLi4uLi4KICAgIDlFNDA6IEU2IEZGIDc4
IDYzIDAxIDAwIDAwIDAwIDAwIDAwIDg4IDEzIDAwIDAwIDAzIEU2ICAuLnhjLi4uLi4uLi4uLi4u
CiAgICA5RTUwOiBGRiBCNCBBNCAwMSAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwNCBFNiBG
RiAgLi4uLi4uLi4uLi4uLi4uLgogICAgOUU2MDogNDQgQkYgMDEgMDAgMDAgMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDUgRTYgRkYgM0MgIEQuLi4uLi4uLi4uLi4uLjwKICAgIDlFNzA6IEQxIDAxIDAw
IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDA2IEU2IEZGIEQwIEUyICAuLi4uLi4uLi4uLi4uLi4u
CiAgICA5RTgwOiAwMSAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwNyAwMCAwMCBGQyBGQyAw
MSAgLi4uLi4uLi4uLi4uLi4uLgogICAgOUU5MDogMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAg
MDAgMDIgMDAgNTIgMDMgMDAgMDAgIC4uLi4uLi4uLi4uLlIuLi4KICAgIDlFQTA6IEU4IDAzIDMw
IDc1IDAwIDAwIDAwIDAwIDBGIEI2IDAzIDAwIDAwIEU4IDAzIDk4ICAuLjB1Li4uLi4uLi4uLi4u
CiAgICA5RUIwOiBBQiAwMiAwMCAwMCAwMCAwMCAwOCAwMCAwMCAwMCA5MCBFMiAwMCAwMCBGOCAy
NCAgLi4uLi4uLi4uLi4uLi4uJAogICAgOUVDMDogMDEgMDAgMTggRjYgMDAgMDAgMDAgMDAgMDAg
MDAgQTggREUgMDAgMDAgMDggQjQgIC4uLi4uLi4uLi4uLi4uLi4KICAgIDlFRDA6IEZGIDE4IEY2
IDAwIDAwIDgwIDM4IDAxIDAwIDg4IDBEIDAxIDAwIDAwIDAwIDAwICAuLi4uLi44Li4uLi4uLi4u
CiAgICA5RUUwOiAwMCAwMCBGQSAwMCAwMCAwOSA5QiBGRiBBMCAwOSAwMSAwMCAwOCA0QyAwMSAw
MCAgLi4uLi4uLi4uLi4uLkwuLgogICAgOUVGMDogRjggMjQgMDEgMDAgMDAgMDAgMDAgMDAgNzAg
MTEgMDEgMDAgMEEgODIgRkYgMjggIC4kLi4uLi4ucC4uLi4uLigKICAgIDlGMDA6IDFEIDAxIDAw
IEE4IDVCIDAxIDAwIDY4IDNDIDAxIDAwIDAwIDAwIDAwIDAwIEUwICAuLi4uWy4uaDwuLi4uLi4u
CiAgICA5RjEwOiAyOCAwMSAwMCAwQiA2OSBGRiBDOCAyQyAwMSAwMCA2MCA2NyAwMSAwMCBGMCA0
RiAgKC4uLmkuLiwuLmBnLi4uTwogICAgOUYyMDogMDEgMDAgMDAgMDAgMDAgMDAgNjggM0MgMDEg
MDAgMEMgMzcgRkYgODAgMzggMDEgIC4uLi4uLmg8Li4uNy4uOC4KICAgIDlGMzA6IDAwIDE4IDcz
IDAxIDAwIDc4IDYzIDAxIDAwIDAwIDAwIDAwIDAwIDA4IDRDIDAxICAuLnMuLnhjLi4uLi4uLkwu
CiAgICA5RjQwOiAwMCAwRCAwNSBGRiAzOCA0NCAwMSAwMCBEMCA3RSAwMSAwMCAwMCA3NyAwMSAw
MCAgLi4uLjhELi4ufi4uLncuLgogICAgOUY1MDogMDAgMDAgMDAgMDAgQzAgNTcgMDEgMDAgMEUg
MDAgMDAgRjAgNEYgMDEgMDAgQTAgIC4uLi4uVy4uLi4uLk8uLi4KICAgIDlGNjA6IDg2IDAxIDAw
IEEwIDg2IDAxIDAwIDAwIDAwIDAwIDAwIDc4IDYzIDAxIDAwIDAxICAuLi4uLi4uLi4uLnhjLi4u
CiAgICA5RjcwOiAxNyAwMCAwMCAwMiAwMCAxRCAwMCAwMCAwOSAwMyBBMCAwRiA2NCAxOSAzNCAy
MSAgLi4uLi4uLi4uLi4uZC40IQogICAgOUY4MDogRDAgMDcgQTAgMEYgNzAgMTcgOTQgMkEgMDEg
NjQgMDAgRTQgMTIgNjAgMDkgNzggIC4uLi5wLi4qLmQuLi5gLngKICAgIDlGOTA6IDYzIDAxIDAw
IDQ5IDEyIDY0IDAwIDY0IDAwIDY0IDAwIDY0IDAwIDY0IDAwIDY0ICBjLi5JLmQuZC5kLmQuZC5k
CiAgICA5RkEwOiAwMCA2NCAwMCAwMSAzQiAzQyAwMCAwMCAwNCA2RSAwMCAwMCAwMCBCNCAwMCA2
RSAgLmQuLjs8Li4ubi4uLi4ubgogICAgOUZCMDogMDAgNkUgMDAgMDAgMDAgMDAgMDAgQjQgMDAg
NUEgMDAgMDAgMDAgMDAgMDAgNUUgIC5uLi4uLi4uLlouLi4uLl4KICAgIDlGQzA6IDAwIDAyIDAw
IDY5IDAwIDUwIDAwIDUwIDAwIDczIDAwIDczIDAwIDVGIDAwIDAwICAuLi5pLlAuUC5zLnMuXy4u
CiAgICA5RkQwOiAwMCA5MCAxMCA5NiAwMCA5MCAwMCAwMCAwNiAwMCAwMCAwMCAwMCAwMSAwNiAw
MCAgLi4uLi4uLi4uLi4uLi4uLgogICAgOUZFMDogMDAgMDEgMDEgMDAgMDEgMDEgMDEgMDAgMDIg
MDEgMDEgMDAgMDIgMDEgMDEgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAgIDlGRjA6IDAyIDAxIDAx
IDAwIDAyIDAxIDAxIDAxIDAzIDAwIDEwIDAwIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4u
CiAgICBBMDAwOiAwMCAwMCAxMCAwMCAwMCAwMCAwMCAwMCAwMCAwMiAxMCAwMCAwMCAwMCAwMCAw
MCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQTAxMDogMDAgMDAgMDEgMDAgMDAgMDAgMDAgMDAgMDUg
MDAgMDEgMDEgOTYgMDAgNUUgMDEgIC4uLi4uLi4uLi4uLi4uXi4KICAgIEEwMjA6IDAxIDAzIDg4
IDBFIDQ4IDAwIDAwIDAwIEZCIDAwIDAwIDAwIDEyIDAwIDAwIDAwICAuLi4uSC4uLi4uLi4uLi4u
CiAgICBBMDMwOiAwNSAwMSAwMCAwMCAwOCAwMCAwQSAwMCAxMyAzMSAwMCAxMSAyMSAyMSA4MCAw
MCAgLi4uLi4uLi4uMS4uISEuLgogICAgQTA0MDogMEEgMDAgMTMgMzIgMDAgMTEgMjEgMjIgMDAg
MDIgMEEgMDAgMEMgMzEgMDAgMTEgIC4uLjIuLiEiLi4uLi4xLi4KICAgIEEwNTA6IDIwIDIxIDAw
IDA0IDBBIDAwIDBDIDMyIDAwIDExIDIwIDIyIDAwIDA4IDBBIDAwICAgIS4uLi4uMi4uICIuLi4u
CiAgICBBMDYwOiAwNCAzMSAwMCAxMSAxRSAyMSAwNSAwMCAwMCAwMCAxMyAzMSA3NCAwMCA3QSAw
MCAgLjEuLi4hLi4uLi4xdC56LgogICAgQTA3MDogMDAgMDAgMTMgMzIgOEYgMDAgOTUgMDAgMDAg
MDAgMEMgMzEgQUEgMDAgQjAgMDAgIC4uLjIuLi4uLi4uMS4uLi4KICAgIEEwODA6IDAwIDAwIDBD
IDMyIEM1IDAwIENCIDAwIDAwIDAwIDA0IDMxIEUwIDAwIEU2IDAwICAuLi4yLi4uLi4uLjEuLi4u
CiAgICBBMDkwOiAwMCAwMCAwMSAyMSAyMSAwMCAwMCAwMCAwNCAwQyAwMSAwMCAxMCAwMiAwMCAw
MCAgLi4uISEuLi4uLi4uLi4uLgogICAgQTBBMDogMDggMDAgMDAgMDAgMDEgMDQgOTAgMDAgMDIg
MDQgMDYgMDAgRkYgMDEgMjEgMjIgIC4uLi4uLi4uLi4uLi4uISIKICAgIEEwQjA6IDAwIDAwIDAw
IDA0IDBDIDAxIDAwIDIwIDAyIDAwIDAwIDgwIDAwIDAwIDAwIDAxICAuLi4uLi4uIC4uLi4uLi4u
CiAgICBBMEMwOiAwNCA5MiAwMCAwMiAwNCAwNCAwMCBGRiAwMSAyMCAyMSAwMCAwMCAwMCAwNCAw
QyAgLi4uLi4uLi4uICEuLi4uLgogICAgQTBEMDogMDEgMDAgMzAgMDIgMDAgMDAgMDAgMDIgMDAg
MDAgMDEgMDQgOTEgMDAgMDIgMDQgIC4uMC4uLi4uLi4uLi4uLi4KICAgIEEwRTA6IDAxIDAwIEZG
IDAxIDIwIDIyIDAwIDAwIDAwIDA0IDBDIDAxIDAwIDQwIDAyIDAwICAuLi4uICIuLi4uLi4uQC4u
CiAgICBBMEYwOiAwMCAwMCAwNCAwMCAwMCAwMSAwNCA5MyAwMCAwMiAwNCAwNSAwMCBGRiAwMSAx
RSAgLi4uLi4uLi4uLi4uLi4uLgogICAgQTEwMDogMjEgMDAgMDAgMDAgMDQgMEMgMDEgMDAgNTAg
MDIgMDAgMDAgMDAgMDggMDAgMDAgICEuLi4uLi4uUC4uLi4uLi4KICAgIEExMTA6IDAxIDA0IDk1
IDAwIDAyIDA0IDAzIDAwIEZGIDA1IDAwIDAwIDAwIDIxIDIxIDI3ICAuLi4uLi4uLi4uLi4uISEn
CiAgICBBMTIwOiAwMSAyRCAwMSAwMCAwMCAyMSAyMiAzMiAwMSAzOCAwMSAwMCAwMCAyMCAyMSAz
RCAgLi0uLi4hIjIuOC4uLiAhPQogICAgQTEzMDogMDEgNDMgMDEgMDAgMDAgMjAgMjIgNDggMDEg
NEUgMDEgMDAgMDAgMUUgMjEgNTMgIC5DLi4uICJILk4uLi4uIVMKICAgIEExNDA6IDAxIDU5IDAx
IDAwIDAwIDAxIDAwIDExIDAxIDEzIDMxIDE0IDA0IDBGIDAwIEZGICAuWS4uLi4uLi4uMS4uLi4u
CiAgICBBMTUwOiAwMSAwMCAxMSAwMSAxMyAzMiAxNCAwNCAwRiAwMCBGRiAwMSAwMCAxMSAwMSAw
QyAgLi4uLi4yLi4uLi4uLi4uLgogICAgQTE2MDogMzEgMTQgMDQgMEYgMDAgRkYgMDEgMDAgMTEg
MDEgMEMgMzIgMTQgMDQgMEYgMDAgIDEuLi4uLi4uLi4uMi4uLi4KICAgIEExNzA6IEZGIDAxIDAw
IDExIDAxIDA0IDMxIDE0IDA0IDBGIDAwIEZGIEQ0IDAyIDAyIDAxICAuLi4uLi4xLi4uLi4uLi4u
CiAgICBBMTgwOiAxMCBENiBCNCAwMCAwMCA4MCAwMyAwMCA5OSAxRiAwMCAwMCAxNCAwMCAwMCAw
MCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQTE5MDogREMgMEMgMTQgMDAgMDAgMDAgRDUgMEMgMzMg
MDMgMDAgMDAgRDQgMEMgMDAgMDIgIC4uLi4uLi4uMy4uLi4uLi4KICAgIEExQTA6IDBDIDAwIDAw
IDBCIDI5IDAwIDIwIDBGIEQzIDBCIEUwIDFGIDEyIDAwIEVEIDA5ICAuLi4uKS4gLi4uLi4uLi4u
CiAgICBBMUIwOiAxMCBBOCAwOCAwMCA5MiAwOSAwMCAwNCAwQyAwMCA5NCAwOSAwMCAwNCAwQyAw
MCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQTFDMDogOTMgMDkgMDAgMDQgMEMgMDAgNkQgMDkgMUYg
MTAgMTQgMDEgMkUgMDggMDAgMDQgIC4uLi4uLm0uLi4uLi4uLi4KICAgIEExRDA6IDBDIDAwIDMw
IDA4IDgwIDBDIDBDIDAwIDJGIDA4IDAwIDA0IDBDIDAwIDRGIDA5ICAuLjAuLi4uLi8uLi4uLk8u
CiAgICBBMUUwOiBCNCAwMCAwMSAwMCAxRSAwOSAwMCAwNCAwQyAwMCBGMyAwOSAxQiA5MCAwMCAw
MCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQTFGMDogRTkgMDkgNUEgOEEgRkYgMDAgRUEgMDkgN0Eg
QUUgRkYgMDggRUUgMDkgMTAgMEMgIC4uWi4uLi4uei4uLi4uLi4KICAgIEEyMDA6IDAwIDAwIEVG
IDA5IDEwIDBDIDAwIDAwIEU1IDA5IEZDIEZEIEZDIEZDIEU2IDA5ICAuLi4uLi4uLi4uLi4uLi4u
CiAgICBBMjEwOiBGRCBGOCBGQyBGQyBFNyAwOSBGQyBGQyBGMyBGQyBFOCAwOSBGQyBGQyBGQyBG
NSAgLi4uLi4uLi4uLi4uLi4uLgogICAgQTIyMDogRjAgMDkgMDggNkYgQzMgMDAgRjEgMDkgMDUg
MjkgQzMgMDAgREEgMDkgMTEgNDAgIC4uLm8uLi4uLikuLi4uLkAKICAgIEEyMzA6IDA0IDAwIEQ2
IDA5IDAzIEY4IDZGIDAwIEYyIDA5IDEwIDEwIDg3IDAxIEY0IDA5ICAuLi4uLi5vLi4uLi4uLi4u
CiAgICBBMjQwOiA0NSA0RiA3MCAwOCBGNSAwOSAxNiAzQSAwMiAwMyBEQiAwOSAwMyAwMyAwMCAw
MCAgRU9wLi4uLjouLi4uLi4uLgogICAgQTI1MDogRTEgMDkgMDAgMDAgMDAgMDAgRTIgMDkgMDQg
MDAgMDAgMDAgNzQgMDkgQzkgMDAgIC4uLi4uLi4uLi4uLnQuLi4KICAgIEEyNjA6IDAwIDAwIDc2
IDA5IDAwIDMwIDAwIDAwIDdGIDA5IDQ5IDlBIDI0IDAwIDgwIDA5ICAuLnYuLjAuLi4uSS4kLi4u
CiAgICBBMjcwOiA1MSAxMiAyNSAwMiAzQiAwOCAxQyAzQyAwMCA3MCA1NiAwOCAzRiA0MCAwMCAw
MCAgUS4lLjsuLjwucFYuP0AuLgogICAgQTI4MDogNTcgMDggMTAgMTAgMDAgMDAgNUEgMDggOTcg
MDkgMDAgMDAgRTcgMEQgOTkgMDAgIFcuLi4uLlouLi4uLi4uLi4KICAgIEEyOTA6IEMxIDUwIEU4
IDBEIDk5IDAxIEMxIDUwIEU5IDBEIDg5IDAwIEMxIDUwIEVBIDBEICAuUC4uLi4uUC4uLi4uUC4u
CiAgICBBMkEwOiAxOSAwMyBDMSA1MCA1MSAwOCA5OSAwMCBDMSA1MCA1MiAwOCA5OSAwMCBDMSA1
MCAgLi4uUFEuLi4uUFIuLi4uUAogICAgQTJCMDogNTMgMDggOTkgMDAgQzEgNTAgNTQgMDggOTkg
MDAgQzEgNTAgNUMgMDggOTEgMDkgIFMuLi4uUFQuLi4uUFwuLi4KICAgIEEyQzA6IDAwIDAwIDgz
IDA4IDkxIDAxIDAwIDAwIDU5IDA4IDkxIDUxIDAwIDAwIDVCIDA4ICAuLi4uLi4uLlkuLlEuLlsu
CiAgICBBMkQwOiA5MSAyOSAwMCAwMCA1RCAwOCA5MSAwOSAwMCAwMCA1OCAwOCA5MSAwOSAwMCAw
MCAgLikuLl0uLi4uLlguLi4uLgogICAgQTJFMDogNjQgMDggMTMgMDAgMDAgMDAgODQgMDggOTUg
MDkgMDAgMDAgM0QgMDggNDkgOTIgIGQuLi4uLi4uLi4uLj0uSS4KICAgIEEyRjA6IDI0IDAwIDgw
IDA4IDkxIDA5IDAwIDAwIDM1IDA4IDFFIDAwIEY5IDAwIDQxIDA4ICAkLi4uLi4uLjUuLi4uLkEu
CiAgICBBMzAwOiAxMiA2OCA4RiBGOCA0MiAwOCAxMyA2QSA5MSBGNiA3NyAwOCA5MSAxMyAwMCAw
MCAgLmguLkIuLmouLncuLi4uLgogICAgQTMxMDogNzAgMDggMTEgMEIgMDAgMDAgRUIgMEQgM0Qg
OTAgODAgNDAgRUMgMEQgMzUgNTAgIHAuLi4uLi4uPS4uQC4uNVAKICAgIEEzMjA6IDU0IDQwIEVE
IDBEIDNEIDUwIDFDIDQwIEVFIDBEIDM1IEIwIDZBIDQwIDY2IDA4ICBUQC4uPVAuQC4uNS5qQGYu
CiAgICBBMzMwOiA0NSA5MCA4MCA0MCA2NyAwOCA1NSA1MCA4MCA0MCA2OCAwOCAzRCA1MCA0QyA0
MCAgRS4uQGcuVVAuQGguPVBMQAogICAgQTM0MDogNjkgMDggM0QgNzAgODAgNDAgNkQgMDggOTEg
MDkgMDEgMDAgNzEgMDggMTUgMjQgIGkuPXAuQG0uLi4uLnEuLiQKICAgIEEzNTA6IDAwIDAwIDg4
IDA4IDkxIDExIDAwIDAwIDc4IDA4IDkxIDEyIDAwIDAwIDZCIDA4ICAuLi4uLi4uLnguLi4uLmsu
CiAgICBBMzYwOiBBMSAwOSAwMCAwMCA3MiAwOCA5MSAwOSAwMCAwMCA2QyAwOCAwMSAwOSAwMCAw
MCAgLi4uLnIuLi4uLmwuLi4uLgogICAgQTM3MDogNzQgMDggOTUgNTEgMDAgMDAgNEQgMDggMTEg
MDkgMDAgMDAgNEUgMDggMTEgMkEgIHQuLlEuLk0uLi4uLk4uLioKICAgIEEzODA6IDAwIDAwIDcz
IDA4IDEzIDBGIDAwIDAwIDc1IDA4IDkxIDA5IDAwIDAwIDdEIDA4ICAuLnMuLi4uLnUuLi4uLn0u
CiAgICBBMzkwOiA5MSAwOSAwMCAwMCA4OSAwOCA5MSAwMSAwMCAwMCAzRSAwOCA0OSA5MiBDQyAw
MCAgLi4uLi4uLi4uLj4uSS4uLgogICAgQTNBMDogN0YgMDggOTEgMTEgMDAgMDAgN0UgMDggOTEg
MjEgMDMgMDAgNkYgMDggOTEgMjkgIC4uLi4uLn4uLiEuLm8uLikKICAgIEEzQjA6IDAwIDAwIDND
IDA4IDA3IDAwIDAwIDgwIDgxIDA5IDkxIDBDIDAwIDAwIDgyIDA5ICAuLjwuLi4uLi4uLi4uLi4u
CiAgICBBM0MwOiA5NSAwOSAwMCAwMCA4NSAwOSAxMSAwMSAwMCAwMCA4MyAwOSA5MSAwOSAwMCAw
MCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQTNEMDogODQgMDkgMTEgOEMgMDAgMDAgODYgMDkgOTEg
MDkgMDAgMDAgODcgMDkgMTEgMDkgIC4uLi4uLi4uLi4uLi4uLi4KICAgIEEzRTA6IDAwIDAwIDg4
IDA5IDkxIDg5IDAwIDAwIDdCIDA5IDkxIDQ5IDAwIDAwIDdDIDA5ICAuLi4uLi4uLnsuLkkuLnwu
CiAgICBBM0YwOiBBMSAwOSAwMCAwMCA3MCAwNSAwMCAwNCAwQyAwMCA4RSAwQyAwMCAwMCAwMCAw
MCAgLi4uLnAuLi4uLi4uLi4uLgogICAgQTQwMDogODMgMDggOTEgMDEgMDAgMDAgODQgMDggOTUg
MDkgMDAgMDAgODUgMDggOTcgMDkgIC4uLi4uLi4uLi4uLi4uLi4KICAgIEE0MTA6IDAwIDAwIDg4
IDA4IDkxIDExIDAwIDAwIDg5IDA4IDkxIDAxIDAwIDAwIDhBIDA4ICAuLi4uLi4uLi4uLi4uLi4u
CiAgICBBNDIwOiA5MyAwOSAwMCAwMCA1MCAwOCA5MSAwOSAwMiAwMCAzRiAwOCAyOCAyOCA3MiA3
MiAgLi4uLlAuLi4uLj8uKChycgogICAgQTQzMDogNDAgMDggNTAgNTAgMjggMjggNDMgMDggODAg
ODAgMDAgMDAgQ0QgMDkgMTAgMDAgIEAuUFAoKEMuLi4uLi4uLi4KICAgIEE0NDA6IDAwIDAwIEMw
IDA5IDQwIDBGIDUwIDAwIDYwIDA4IEUxIDA5IDAyIDAwIDAwIDAwICAuLi4uQC5QLmAuLi4uLi4u
CiAgICBBNDUwOiA3RCAwMCAwMSAwMSAwMSAwMiAwNCAyMCAwMCAwNiAyMCAwMCAwMCAwMyA5MSAw
QSAgfS4uLi4uLiAuLiAuLi4uLgogICAgQTQ2MDogMDIgOTIgMEEgMDkgMTAgMDAgMDEgODIgMDQg
MjAgMDAgMDYgMjAgMDAgMDAgMDMgIC4uLi4uLi4uLiAuLiAuLi4KICAgIEE0NzA6IDkxIDBBIDA4
IDIwIDAwIDAwIDAzIDkyIDBBIDA5IDI2IDAwIDAxIDAzIDAyIDBFICAuLi4gLi4uLi4uJi4uLi4u
CiAgICBBNDgwOiAwMCAwNiAxMCAwMCAwMCAwMyAwRSAwMCAwMiAwRiAwMCAwOSAzOCAwMCAwMSA4
MyAgLi4uLi4uLi4uLi4uOC4uLgogICAgQTQ5MDogMDIgMEUgMDAgMDYgMTAgMDAgMDAgMDMgMEUg
MDAgMDggMjAgMDAgMDAgMDMgMEYgIC4uLi4uLi4uLi4uIC4uLi4KICAgIEE0QTA6IDAwIDA5IDRF
IDAwIDAxIDA1IDAyIDgyIDAwIDA2IDEwIDAwIDAwIDAzIDgyIDAwICAuLk4uLi4uLi4uLi4uLi4u
CiAgICBBNEIwOiAwMiA4MyAwMCAwOSA2MCAwMCAwMSA4NSAwMiA4MiAwMCAwNiAxMCAwMCAwMCAw
MyAgLi4uLmAuLi4uLi4uLi4uLgogICAgQTRDMDogODIgMDAgMDggMjAgMDAgMDAgMDMgODMgMDAg
MDkgNzYgMDAgMDAgMDAgNjIgMDQgIC4uLiAuLi4uLi52Li4uYi4KICAgIEE0RDA6IDAyIDAyIDRD
IDAwIDVCIDAwIEZEIDAyIEIzIDAzIDJCIDAzIDAwIDAwIDAxIDAxICAuLkwuWy4uLi4uKy4uLi4u
CiAgICBBNEUwOiAwOCAwNCAzMiAxMCA1NCA3NiAzOCAwMCA2MiA2MCBGRiAwMCAwMCA1MCAwMyAw
NSAgLi4yLlR2OC5iYC4uLlAuLgogICAgQTRGMDogNTMgMDkgMDQgMDAgMDAgMDAgMDAgMTAgMDAg
MEIgMDAgNDAgMDAgNjEgNjYgMDIgIFMuLi4uLi4uLi4uQC5hZi4KICAgIEE1MDA6IDAyIDAwIDAw
IDAwIDAwIDAwIDQzIDY1IDA3IDAwIDAwIDAwIDAwIDAwIDQ4IDM1ICAuLi4uLi5DZS4uLi4uLkg1
CiAgICBBNTEwOiA0NyA0MyAzNCA0OCAzMiAzNCA0MSA0QSA1MiAwMCAwMyAwMCAwNCAwMCBGRiBG
RiAgR0M0SDI0QUpSLi4uLi4uLgogICAgQTUyMDogMDAgRkYgRkYgRkYgMDAgMDAgMDAgMDAgMDAg
MkEgMDAgMzQgMDAgMkYgMEEgMDQgIC4uLi4uLi4uLiouNC4vLi4KICAgIEE1MzA6IDMwIDBBIDAw
IEQ1IDBBIDA0IDJDIDBBIDA0IDI4IDBBIDA0IDI5IDBBIDA0IDJBICAwLi4uLi4sLi4oLi4pLi4q
CiAgICBBNTQwOiAwQSAwNCAyQiAwQSAwNCA4MSAwQSAwNCA4QiAwQSAwNCA1RiAwQSAwNCBERCAw
OSAgLi4rLi4uLi4uLi5fLi4uLgogICAgQTU1MDogODQgREUgMDkgODQgRkYgRkYgMDAgNDAgOUMg
MDAgMDAgNTUgNTAgMDAgMDAgMDAgIC4uLi4uLi5ALi4uVVAuLi4KICAgIEE1NjA6IDAwIDAwIDAw
IDIyIEREIDFDIDAwIDg0IDk0IDEyIDEyIEYwIDU0IDBCIDA3IDk1ICAuLi4iLi4uLi4uLi5ULi4u
CiAgICBBNTcwOiA4NCA3MSAwMiAwMCAyMCA0MSAwMCAxQiAwNCAxNCAyMCA5QSA4OCAwMCBBMCAw
MCAgLnEuLiBBLi4uLiAuLi4uLgogICAgQTU4MDogMDAgMzEgMjAgMDYgMDUgMEQgMEUgMjcgMEYg
MTYgMEUgODAgMzggMDEgMDAgNzcgIC4xIC4uLi4nLi4uLjguLncKICAgIEE1OTA6IDcwIDAwIDAw
IDAwIDAwIDAwIDAwIDIyIEREIDFDIDAwIEU3IEFDIDM1IDIyIDEwICBwLi4uLi4uIi4uLi4uNSIu
CiAgICBBNUEwOiA1NSAwRCAwQSAyMCBDNyBGMiAwNCAwMCAyNCA4MSAwMCAzNCAwOSAxNCAyMCA5
QSAgVS4uIC4uLi4kLi40Li4gLgogICAgQTVCMDogODggMDAgQTAgMDAgMDAgMzEgMjAgMEMgMDgg
MTcgMUIgNEYgMTcgMjEgMTAgOTAgIC4uLi4uMSAuLi4uTy4hLi4KICAgIEE1QzA6IDVGIDAxIDAw
IDc3IDcwIDAwIDAwIDAwIDAwIDAwIDAwIDIyIEREIDFDIDAwIDI5ICBfLi53cC4uLi4uLiIuLi4p
CiAgICBBNUQwOiAzMSA0NiAyNiAyMCA1NSAwRSAwQiBBMiAwNyA5MyAwNSAwMCAyNiBBMiAwMCAz
QyAgMUYmIFUuLi4uLi4uJi4uPAogICAgQTVFMDogMEEgMTQgMjAgQUEgODggMDAgQTAgMDAgMDAg
MzEgMjAgMEQgMEEgMUEgMUQgNTkgIC4uIC4uLi4uLjEgLi4uLlkKICAgIEE1RjA6IDE5IDIzIDEx
IEEwIDg2IDAxIDAwIDc3IDcwIDAwIDAwIDAwIDAwIDAwIDAwIDIyICAuIy4uLi4ud3AuLi4uLi4i
CiAgICBBNjAwOiBERCAxQyAwMCAyOSBCNSA0NiAyOSAzMCA1NSAwRSAwQyAyNCA0OCAyMyAwNiAw
MCAgLi4uKS5GKTBVLi4kSCMuLgogICAgQTYxMDogMjYgQTIgMDAgNDQgMEIgMTQgMjAgQUEgODgg
MDAgQTAgMDAgMDAgMzEgMjAgMEUgICYuLkQuLiAuLi4uLi4xIC4KICAgIEE2MjA6IDBBIDFDIDIw
IDYyIDFCIDI1IDExIDc0IEI3IDAxIDAwIDc3IDcwIDAwIDAwIDAwICAuLiBiLiUudC4uLndwLi4u
CiAgICBBNjMwOiAwMCAwMCAwMCAyMiBGRiAxQyAwMCA2QiBCRCA1NyAyRiA0MCA1NSAwRiAwRCAy
OCAgLi4uIi4uLmsuVy9AVS4uKAogICAgQTY0MDogQzkgRjMgMDYgMDAgNDggQzUgMDAgNEMgMEQg
MTQgMjAgNUEgODkgMDAgQTAgMDAgIC4uLi5ILi5MLi4gWi4uLi4KICAgIEE2NTA6IDAwIDMxIDIw
IDEwIDBDIDIwIDI0IDZGIDFFIDI5IDEyIDQ4IEU4IDAxIDAwIDc3ICAuMSAuLiAkby4pLkguLi53
CiAgICBBNjYwOiA3MCAwMCAwMCAwMCAwMCAwMCAwMCAyMiBGRiAxQyAwMCA4QyBDNSA1OCAzNCA2
MCAgcC4uLi4uLiIuLi4uLlg0YAogICAgQTY3MDogNTUgMEYgMEYgMkMgNEEgQjQgMDcgMDAgNDgg
QzUgMDAgNUMgMEYgMTQgMjAgNUEgIFUuLixKLi4uSC4uXC4uIFoKICAgIEE2ODA6IDg5IDAwIEEw
IDAwIDAwIDMxIDIwIDEyIDBEIDIzIDI4IDdCIDIyIDJEIDEzIDFDICAuLi4uLjEgLi4jKHsiLS4u
CiAgICBBNjkwOiAxOSAwMiAwMCA3NyA3MCAwMCAwMCAwMCAwMCAwMCAwMCAyMiAzMyA5RCAwMCBD
RSAgLi4ud3AuLi4uLi4iMy4uLgogICAgQTZBMDogQ0QgNTkgMzkgODAgNTUgMTEgMTEgQUUgOEEg
ODQgMDggMDAgNDggQzYgMDAgNkMgIC5ZOS5VLi4uLi4uLkguLmwKICAgIEE2QjA6IDAwIDE0IDIw
IDZBIDg5IDAwIEEwIDAyIDAwIDMxIDIwIDE0IDBGIDI2IDJCIDg4ICAuLiBqLi4uLi4xIC4uJisu
CiAgICBBNkMwOiAyNSAyRiAxNSBBNCAyQyAwMiAwMCA3NyA3MCAwMCAwMCAwMCAwMCAwMCAwMCAy
MiAgJS8uLiwuLndwLi4uLi4uIgogICAgQTZEMDogMzMgOUQgMDAgQ0UgNTEgNkEgM0IgODAgNTUg
MTEgMTEgMkYgQ0IgRDQgMDggMDAgIDMuLi5RajsuVS4uLy4uLi4KICAgIEE2RTA6IDRBIEU2IDAw
IDZDIDAwIDE0IDIwIDZBIDg5IDAwIEEwIDAyIDAwIDMxIDIwIDE1ICBKLi5sLi4gai4uLi4uMSAu
CiAgICBBNkYwOiAwRiAyNyAyRCA4RCAyNiAzMCAxNSBGMCA0OSAwMiAwMCA3NyA3MCAwMCAwMCAw
MCAgLictLiYwLi5JLi53cC4uLgogICAgQTcwMDogMDAgMDAgMDAgMjIgMzMgOUQgMDAgQ0UgNTEg
NkEgM0QgOTAgNTUgMTEgMTIgMzAgIC4uLiIzLi4uUWo9LlUuLjAKICAgIEE3MTA6IENCIDQ0IDA5
IDAwIDRBIEU2IDAwIDc0IDAxIDE0IDIwIDZBIDg5IDAwIEEwIDAyICAuRC4uSi4udC4uIGouLi4u
CiAgICBBNzIwOiAwMCAzMSAyMCAxNSAwRiAyOSAyRiA5NCAyNyAzMSAxNiBDNCA3QSAwMiAwMCA5
OSAgLjEgLi4pLy4nMS4uei4uLgogICAgQTczMDogOTAgMDAgMDAgMDAgMDAgMDAgMDAgMjIgNTUg
OUQgMDAgMTAgREUgN0IgNDQgODAgIC4uLi4uLi4iVS4uLi57RC4KICAgIEE3NDA6IDU1IDEzIDEy
IEI3IDhDIDQ1IDBBIDAwIDRDIDA2IDAxIDc1IDA0IDE0IDIwIDZBICBVLi4uLkUuLkwuLnUuLiBq
CiAgICBBNzUwOiA4OSAwMCBBMCAwMiAwMCAzMSAyMCAxOCAxMSAyRCAzNCBBNCAyQSAzOCAxNiA5
OCAgLi4uLi4xIC4uLTQuKjguLgogICAgQTc2MDogQUIgMDIgMDAgOTkgOTAgMDAgMDAgMDAgMDAg
MDAgMDAgMjIgNTUgOUQgMDAgMzEgIC4uLi4uLi4uLi4uIlUuLjEKICAgIEE3NzA6IDYyIDdDIDQ4
IDkwIDU1IDEzIDEzIDM5IENEIEQ1IDBBIDAwIDRDIDA2IDAxIDdEICBifEguVS4uOS4uLi5MLi59
CiAgICBBNzgwOiAwNSAxNCAyMCA2QSA4OSAwMCBBMCAwMiAwMCAzMSAyMCAxOSAxMiAzMCAzNyBB
RCAgLi4gai4uLi4uMSAuLjA3LgogICAgQTc5MDogMkMgM0EgMTcgNDAgMEQgMDMgMDAgQkIgQjAg
MDAgMDAgMDAgMDAgMDAgMDAgMjIgICw6LkAuLi4uLi4uLi4uLiIKICAgIEE3QTA6IDg4IDlEIDAw
IDczIEVFIDhEIDUzIDgwIDU1IDE1IDEzIDNFIENGIDU2IDBDIDAwICAuLi5zLi5TLlUuLj4uVi4u
CiAgICBBN0IwOiA0RSAyNiAwMSA3RSAwNSAxNCAyMCA2QSA4OSAwMCBBMCAwMiAwMCAzMSAyMCAx
QyAgTiYufi4uIGouLi4uLjEgLgogICAgQTdDMDogMTQgMzggNDAgQzUgMzAgM0YgMTcgMDAgMDAg
MDAgMDAgMDYgMDAgMDggMDAgMEUgIC44QC4wPy4uLi4uLi4uLi4KICAgIEE3RDA6IDAwIDQ0IEZG
IEZGIDAwIEZGIEZGIEZGIDAwIDFGIDAwIDAwIDAwIEZGIEZGIEZGICAuRC4uLi4uLi4uLi4uLi4u
CiAgICBBN0UwOiAwMSAxRiAwMCAwMCAwMCBGRiBGRiBGRiAwMiAxRiAwMCAwMCAwMCBGRiBGRiBG
RiAgLi4uLi4uLi4uLi4uLi4uLgogICAgQTdGMDogMDMgMUYgMDAgMDAgMDAgMDAgMDAgMDAgMDAg
RTEgQjQgODggRDYgOUIgMDAgQTUgIC4uLi4uLi4uLi4uLi4uLi4KICAgIEE4MDA6IDNGIDIxIDAw
IEZEIDAyIEQxIDAwIDgxIEY2IEQyIDAwIDg4IEQ2IDlCIDAwIDY2ICA/IS4uLi4uLi4uLi4uLi5m
CiAgICBBODEwOiAzRiAwNSAwMCBGNCA5QiA0MSAwMCBBNiBCMCBFNiAwMCA0RSAxRSA2RiAwNiBE
MSAgPy4uLi5BLi4uLi5OLm8uLgogICAgQTgyMDogMDAgNDIgRDYgRDMgMDAgQUMgM0YgMDUgMDAg
ODEgNTYgOUYgMDAgRTYgQkIgNDAgIC5CLi4uLj8uLi5WLi4uLkAKICAgIEE4MzA6IDAwIDE2IEIx
IEY0IDAwIDg4IEQ2IDlCIDAwIEU1IDNEIDI4IDAwIEUxIEIxIDExICAuLi4uLi4uLi4uPSguLi4u
CiAgICBBODQwOiBFNiBCMyAwMCBGNCAzQiAwNSAwMCA2RiAwNiBDQSAwMCA0MiBENiBEMyAwMCBC
QyAgLi4uLjsuLm8uLi5CLi4uLgogICAgQTg1MDogQUIgMjEgMDAgODggNzYgOTcgMDAgRTYgQkIg
MDggMDAgQTYgQjAgRjQgMDAgNEIgIC4hLi52Li4uLi4uLi4uLksKICAgIEE4NjA6IDFFIDRGIDA3
IEQxIDAwIEMyIEQyIEQzIDAwIDg4IEY2IEQyIDAwIEY0IDNCIDA1ICAuTy4uLi4uLi4uLi4uLjsu
CiAgICBBODcwOiAwMCA2NiAzRiAyMSAwMCBBNiA5MCBCRCAwMCA4MSA3NiBCMyAwMCBGNCAzQiAw
NSAgLmY/IS4uLi4uLnYuLi47LgogICAgQTg4MDogMDAgNEIgMDAgNUMgMDAgODAgMEEgMDQgOEMg
MEEgMDQgOTUgMEEgMDQgOTYgMEEgIC5LLlwuLi4uLi4uLi4uLi4KICAgIEE4OTA6IDA0IDk5IDBB
IDA0IDgyIDBBIDA0IDc0IDBBIDA0IDc1IDBBIDA0IDAwIDAwIDQ0ICAuLi4uLi4udC4udS4uLi5E
CiAgICBBOEEwOiAwMSAwMCA0NCAwMiAwMCA0NCAwMyAwMCA0NCAwNCAwMCA0NCAwNSAwMCA0NCAw
OSAgLi5ELi5ELi5ELi5ELi5ELgogICAgQThCMDogMDAgNDQgMEEgMDAgNDQgMEIgMDAgNDQgMEMg
MDAgNDQgMEQgMDAgNDQgMEYgMDAgIC5ELi5ELi5ELi5ELi5ELi4KICAgIEE4QzA6IDQ0IDRFIDBB
IDA0IDU0IDBBIDAwIDk3IDBBIDA0IDk4IDBBIDAwIEZGIEZGIDAwICBETi4uVC4uLi4uLi4uLi4u
CiAgICBBOEQwOiBGRiBGRiBGRiAwMCA3MiAyMSA2MCA1MCBGOCBDRiAwMCBFMCA1QSA0RSA2RiBB
MCAgLi4uLnIhYFAuLi4uWk5vLgogICAgQThFMDogMEMgRjAgOEMgMzAgMDAgRTAgMDMgNzAgMTMg
NDYgMDMgNjEgMDAgMDAgMDAgMDAgIC4uLjAuLi5wLkYuYS4uLi4KICAgIEE4RjA6IDY2IDY2IDAw
IDAwIEZGIEZGIDBDIDBDIDA0IDAwIDA1IDAzIDIwIDNDIDAwIDAwICBmZi4uLi4uLi4uLi4gPC4u
CiAgICBBOTAwOiAwMCAwMyAwMCA2MyAwNCAwNiAwMCAwMCAyMyAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAgLi4uYy4uLi4jLi4uLi4uLgogICAgQTkxMDogOTggMDAgMDIgMDAgODUgMDggMDAgMDAgMDAg
MDAgMUUgMDEgMzAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLjAuLi4KICAgIEE5MjA6IDAwIDAwIDAw
IDAwIEFBIEFBIEFBIDAwIDVEIEM3IDAyIDAwIDAwIDAwIDAwIDAwICAuLi4uLi4uLl0uLi4uLi4u
CiAgICBBOTMwOiAwQyAwMSAwMyAwNiBGQyBDQSAwMSAwMCA4MCAzOCAwMSAwMCAzOCAwMCAwNiAw
QSAgLi4uLi4uLi4uOC4uOC4uLgogICAgQTk0MDogNkEgMjQgMDkgMDAgODAgMUEgMDYgMDAgRTgg
MDMgMDAgMDAgMEMgMDEgMTggMDggIGokLi4uLi4uLi4uLi4uLi4KICAgIEE5NTA6IDIwIDAzIDAw
IDAwIEIwIDA0IDAwIDAwIDM4IEMxIDAxIDAwIDM4IEMxIDAxIDAwICAgLi4uLi4uLjguLi44Li4u
CiAgICBBOTYwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAzNCBDNCAwMSAw
MCAgLi4uLi4uLi4uLi4uNC4uLgogICAgQTk3MDogNDMgMDEgMDAgMDAgMDAgMDAgMDAgMDAgMDAg
MDAgMDAgMDAgQzAgRkYgMDggMEYgIEMuLi4uLi4uLi4uLi4uLi4KICAgIEE5ODA6IDA4IDMxIEFD
IDEwIDAwIDAwIDAwIDAwIDAwIDAwIDAxIDAwIDAwIDAwIDAwIDAwICAuMS4uLi4uLi4uLi4uLi4u
CiAgICBBOTkwOiAwMCAwMCAwMCAwMCA0QiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAyQiAwMCAwMCAw
MCAgLi4uLksuLi4uLi4uKy4uLgogICAgQTlBMDogMDAgMDAgMDAgMDAgMTAgMDAgMDAgMDAgMDAg
MDAgMDAgMDAgOUIgMDIgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAgIEE5QjA6IDAzIDAwIDAw
IDAwIEI4IDAxIDAwIDAwIDc2IDAyIDAwIDAwIDJBIDAzIDAwIDAwICAuLi4uLi4uLnYuLi4qLi4u
CiAgICBBOUMwOiA4NCAwMyAwMCAwMCBGQyAwMyAwMCAwMCA1NiAwNCAwMCAwMCBCQSAwNCAwMCAw
MCAgLi4uLi4uLi5WLi4uLi4uLgogICAgQTlEMDogMTQgMDUgMDAgMDAgMDAgMzUgMEMgMDAgMDAg
MzUgMEMgMDAgOTggRTAgMEUgMDAgIC4uLi4uNS4uLjUuLi4uLi4KICAgIEE5RTA6IDkwIDA1IDEw
IDAwIDM4IDY3IDEwIDAwIEUwIEM4IDEwIDAwIDg4IDJBIDExIDAwICAuLi4uOGcuLi4uLi4uKi4u
CiAgICBBOUYwOiAzMCA4QyAxMSAwMCBBNyAwMCAwMCAwMCBBMiAwNCAwMCAwMCBCRSAwMSAwMCAw
MCAgMC4uLi4uLi4uLi4uLi4uLgogICAgQUEwMDogMUIgMDAgMDAgMDAgMDAgMDAgMEMgMDUgRkUg
RkYgQjUgOUMgMDUgMDAgQ0UgRkYgIC4uLi4uLi4uLi4uLi4uLi4KICAgIEFBMTA6IEZGIEZGIDAw
IDAwIDAwIDAwIEYzIDBEIDAzIDAwIDgwIDYwIEZFIEZGIEZEIEY4ICAuLi4uLi4uLi4uLmAuLi4u
CiAgICBBQTIwOiBGRiBGRiAwQSAwMyBDRCBGRiBGRiBGRiAwMCAwMCAwMCAwMCA4QSAwMCBGMSBG
RiAgLi4uLi4uLi4uLi4uLi4uLgogICAgQUEzMDogRkYgRkYgNUMgMTIgMDAgMDEgMDAgMDEgMDAg
MDEgMDAgMDAgNDIgMDAgMDMgMDEgIC4uXC4uLi4uLi4uLkIuLi4KICAgIEFBNDA6IDAxIDAzIDBF
IDAwIDA4IDk2IDEwIDAwIDAwIDAwIDAwIDAwIEZGIDAwIDAxIDA3ICAuLi4uLi4uLi4uLi4uLi4u
CiAgICBBQTUwOiAwQyAwMCAwNiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwNCAwMCAyNCAwMCAwMCAw
NCAgLi4uLi4uLi4uLi4uJC4uLgogICAgQUE2MDogMDAgMDAgMDIgODAgMTAgMDAgMDAgMDAgMTAg
MDAgNTIgMDMgMDIgMDAgMDAgMDAgIC4uLi4uLi4uLi5SLi4uLi4KICAgIEFBNzA6IDg0IDAzIDAy
IDAwIDEwIDAwIEI2IDAzIDAwIDgwIDEwIDAwIEU4IDAzIDI4IDAwICAuLi4uLi4uLi4uLi4uLigu
CiAgICBBQTgwOiAwMyAwMSBGRiBGRiBGRiAwMCA0QiAwMCBCOCAwQiAwMSAwMCAwMCAwMCBGRiBG
RiAgLi4uLi4uSy4uLi4uLi4uLgogICAgQUE5MDogRkYgMDAgMzIgMDAgNEUgMEMgMDIgMDAgMDAg
MDAgRkYgRkYgRkYgMDAgN0MgMDEgIC4uMi5OLi4uLi4uLi4ufC4KICAgIEFBQTA6IDQ1IDBDIDA3
IDEyIDAwIDAwIDY0IDAwIDAyIDAzIDE0IDAwIDAwIDAwIEQ2IDJEICBFLi4uLi5kLi4uLi4uLi4t
CiAgICBBQUIwOiAwMCAwMCA3MCAwNiAwMiAwNiAwMCAwMCAwMCAwMCAxRSAyMSA1MiAwMCA0QyAw
MCAgLi5wLi4uLi4uLi4hUi5MLgogICAgQUFDMDogMDMgRkYgRkYgMDAgMUUgMjIgNTUgMDAgNEMg
MDAgMDkgRkYgRkYgMDAgMjAgMjEgIC4uLi4uIlUuTC4uLi4uICEKICAgIEFBRDA6IDU4IDAwIDRD
IDAwIDBBIEZGIEZGIDAwIDIwIDIyIDVCIDAwIDRDIDAwIDBCIEZGICBYLkwuLi4uLiAiWy5MLi4u
CiAgICBBQUUwOiBGRiAwMCAyMSAyMSA1RSAwMCA0QyAwMCAwQyBGRiBGRiAwMCAyMSAyMiA2MSAw
MCAgLi4hIV4uTC4uLi4uISJhLgogICAgQUFGMDogNEMgMDAgMEQgRkYgRkYgMDAgRkYgRkYgMTQg
MDQgRkYgMTUgMDQgRkYgMTYgMDQgIEwuLi4uLi4uLi4uLi4uLi4KICAgIEFCMDA6IEZGIDE3IDA0
IEZGIDE4IDA0IEZGIDE5IDA0IEZGIDE4IDAwIDAyIDAxIDAyIDAwICAuLi4uLi4uLi4uLi4uLi4u
CiAgICBBQjEwOiAwOCAwMCA4MCAwMCAwMCAwMiAwMCAwNCAwMCAwOCA0MCAwMCAwMSAwMCAxMCAw
MCAgLi4uLi4uLi4uLkAuLi4uLgogICAgQUIyMDogRkYgRkYgMzggMDAgMDIgMDEgMDQgNEEgMDAg
MDAgN0MgOTIgMDAgMDAgMDEgMDQgIC4uOC4uLi5KLi58Li4uLi4KICAgIEFCMzA6IDFFIDAwIDND
IDAwIDAwIDAwIEY4IDI0IDAxIDAwIDAxIDAzIDFFIDAwIDNDIDAwICAuLjwuLi4uJC4uLi4uLjwu
CiAgICBBQjQwOiAxRSAwMCBGMCA0OSAwMiAwMCAwMSAwMiAxRSAwMCAzQyAwMCAxRSAwMCBFMCA5
MyAgLi4uSS4uLi4uLjwuLi4uLgogICAgQUI1MDogMDQgMDAgMDEgMDEgMUUgMDAgMDAgMDAgMUUg
MDAgNTUgMDAgMDEgMDEgMDEgMTAgIC4uLi4uLi4uLi5VLi4uLi4KICAgIEFCNjA6IDAyIDAwIDc5
IDAyIDEwIDAwIDExIDAyIDAwIDAxIDAwIDIxIDAwIDAxIDAwIDI2ICAuLnkuLi4uLi4uLiEuLi4m
CiAgICBBQjcwOiA5MyAwNCAwMCA0NSAwMCAwMiAwMCA1MCAwMCAxNCAwMCA3MCAwMCA4NCAwMCA1
OCAgLi4uRS4uLlAuLi5wLi4uWAogICAgQUI4MDogMDIgMDIgMDAgNUQgMDIgMDEgMDAgMzggMDIg
MDIgMDAgM0EgMDIgMDIgMDAgM0MgIC4uLl0uLi44Li4uOi4uLjwKICAgIEFCOTA6IDAyIDAyIDAw
IDNFIDAyIDAyIDAwIDZEIDAyIDQwIDAwIDIyIDlBIDAyIDAwIDJBICAuLi4+Li4ubS5ALiIuLi4q
CiAgICBBQkEwOiA5QSAwMSAwMCBBMCA5QiAwOCAwMCBGOCBFNSAwOCAwMCAwMCAwMCAwMCAwMCAw
MCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQUJCMDogODUgMDAgMDEgMDIgMDAgMDggMDIgMDEgMDIg
MDAgNTIgNDcgNTIgMDIgMDIgNjUgIC4uLi4uLi4uLi5SR1IuLmUKICAgIEFCQzA6IDAyIDA3IDUy
IDBEIDU1IDAwIDAyIDUyIDBEIDUyIDIzIDJDIDI1IDAyIDAxIDNEICAuLlIuVS4uUi5SIywlLi49
CiAgICBBQkQwOiAyNSAwMiAwNiA0NSAxNyAwMCA1MSAwMiA1MiAzRCA1MiAzOSAwMiAwRCAwMiAw
MSAgJS4uRS4uUS5SPVI5Li4uLgogICAgQUJFMDogMDMgNTIgNDMgNjYgMDQgMDIgOEMgMDIgMkUg
MDAgMDIgMEQgMDIgMDEgMDAgNTIgIC5SQ2YuLi4uLi4uLi4uLlIKICAgIEFCRjA6IDQzIDAyIDA1
IDAyIDA0IDAwIDUyIDAzIDUyIDQzIDAyIEY5IDAyIDAxIDUyIDA1ICBDLi4uLi5SLlJDLi4uLlIu
CiAgICBBQzAwOiAwMiAwMSAwMiAwMCAwRSBFNSAwMiAwOCA1MiAwQSAwMiAwNSAwMiAwNCAwMCA1
MiAgLi4uLi4uLi5SLi4uLi4uUgogICAgQUMxMDogMDMgNTIgNDMgMDIgMDUgMDIgMzAgNzUgMDAg
NDAgNTIgMEIgMDIgMDUgMDIgMDQgIC5SQy4uLjB1LkBSLi4uLi4KICAgIEFDMjA6IDAwIDUyIDAz
IDUyIDQzIDAyIDAxIDAyIDAxIDBFIEU1IDAyIDA4IDUyIDBCIDBEICAuUi5SQy4uLi4uLi4uUi4u
CiAgICBBQzMwOiA2NSBEMCAwNSAwMiA1QiAwMCA1NyAwMCAwMSAwMiAwMCAwMCAzNyAwMCAwMCA1
MiAgZS4uLlsuVy4uLi4uNy4uUgogICAgQUM0MDogMTQgMDIgMDggMDAgMEQgMUEgMzIgMDggMDAg
MEIgMUEgMDIgODggMDAgMEUgMUEgIC4uLi4uLjIuLi4uLi4uLi4KICAgIEFDNTA6IDMyIDg4IDAw
IDBDIDFBIDAzIDAwIDQ2IDA0IDFBIDA5IDA1IDQ2IEZGIEZGIEZGICAyLi4uLi4uRi4uLi5GLi4u
CiAgICBBQzYwOiAwMiA1NiAwMCA0MCAwMyAyMCA0MCAwMSAxQSAwOSAyNSA0MCAwMyA3NSAwMiA0
NiAgLlYuQC4gQC4uLiVALnUuRgogICAgQUM3MDogNDAgMDMgMTggNDAgNUMgMUIgMkQgMDIgNDYg
NDAgMjcgMDAgNDYgMDYgMUEgMkQgIEAuLkBcLi0uRkAnLkYuLi0KICAgIEFDODA6IDA4IDQwIDVD
IDFCIDAyIDBBIDAxIDQxIDAyIDhBIDAxIDQwIDVCIDAwIEI3IDAwICAuQFwuLi4uQS4uLkBbLi4u
CiAgICBBQzkwOiAwMSAwMSAwNCAwMCAzNyAwMCAwMCAwMSAwNSAwRSAwMCAwMiAwMCA0MCAwMSAz
NyAgLi4uLjcuLi4uLi4uLkAuNwogICAgQUNBMDogMDMgMDAgNUMgMDUgMDIgMDAgRkMgN0YgRkYg
RkYgMDIgMDAgMDAgMDAgNUMgMDUgIC4uXC4uLi4uLi4uLi4uXC4KICAgIEFDQjA6IDEwIDAwIEZG
IEZGIDlEIEZGIDAwIDA5IDQxIDAwIDVDIDA1IDIxIDAwIDdGIEZGICAuLi4uLi4uLkEuXC4hLi4u
CiAgICBBQ0MwOiBGRiBGRiA4MCAwMCAwMCAwMCA1QyAwNSA0MCAwMCBCRSAzRiBGRiBGRiA0MCA0
MCAgLi4uLi4uXC5ALi4/Li5AQAogICAgQUNEMDogMDEgMDAgMzcgMDAgMDAgMDEgMDUgMEUgMDAg
NzAgMDAgMDEgMTAgMzcgMDMgMDAgIC4uNy4uLi4uLnAuLi43Li4KICAgIEFDRTA6IDAxIDA1IDcw
IDAwIDAwIDQwIDAwIDAxIDVDIDA1IEEwIDAwIDBGIEZGIEZFIERGICAuLnAuLkAuLlwuLi4uLi4u
CiAgICBBQ0YwOiAxMCAwMCAwMSA2MCA1QyAwNSBBMiAwMCA3RiBGMyA5NyBGRiA4NiAwNCA4OCA1
QSAgLi4uYFwuLi4uLi4uLi4uWgogICAgQUQwMDogNUMgMDUgQTQgMDAgMUIgRjAgRkYgRkYgMjAg
MEQgNDAgMDQgNUMgMDUgQjEgMDAgIFwuLi4uLi4uIC5ALlwuLi4KICAgIEFEMTA6IEZGIDJEIEZG
IEZGIDgwIDUwIDE4IDk2IDM3IDAwIDAwIDU0IDAwIDA2IDAwIDAxICAuLS4uLlAuLjcuLlQuLi4u
CiAgICBBRDIwOiAyNSBDNSAxNCAwMiAwMSAwNSBDMiAxNCA3RiAwMCAwMCAwMCAwMSAwNSBFOCAx
NSAgJS4uLi4uLi4uLi4uLi4uLgogICAgQUQzMDogNzAgM0QgMjkgMEEgMDEgMDUgRTkgMTUgOUMg
QTQgMEQgMjAgMDEgMDUgRUEgMTUgIHA9KS4uLi4uLi4uIC4uLi4KICAgIEFENDA6IDIwIDk1IDg3
IDAwIDVCIDAwIDBCIDAxIDAxIDAxIDA0IDAwIDM3IDAwIDAwIDAzICAgLi4uWy4uLi4uLi43Li4u
CiAgICBBRDUwOiAwMSAwMCAwMCA1NCAyMCAyNCAxNSAwMSAyNSAwMCAwOCAwRiAwMSAyNSAyOCAw
OCAgLi4uVCAkLi4lLi4uLiUoLgogICAgQUQ2MDogMEYgNUMgMjUgMkIgMDggRjggMDEgNTUgMDAg
MDAgNTIgMzQgNTIgM0UgMDMgMjQgIC5cJSsuLi5VLi5SNFI+LiQKICAgIEFENzA6IDQwIDBDIDAw
IDE1IDI1IDQwIDA0IDVDIDYyIDAxIDA4IDBGIDQwIDAxIDA0IEQ3ICBALi4uJUAuXGIuLi5ALi4u
CiAgICBBRDgwOiAwOSAyNCAwMCAwMSAwNCAwMiAwOCAwMCAwMCAwMSAwNCAxQyAwOCAyMCAwMCA2
NiAgLiQuLi4uLi4uLi4uLiAuZgogICAgQUQ5MDogMTggMkQgMEMgNDIgMTAgMDAgNTYgMDAgNDAg
MDMgMEMgNDAgMDAgMDAgM0UgMEQgIC4tLkIuLlYuQC4uQC4uPi4KICAgIEFEQTA6IDQwIDAwIDAw
IDQ0IDczIDAwIDAxIDAyIDAwIDAwIDQwIDAxIDA0IDAxIDAwIDAyICBALi5Ecy4uLi4uQC4uLi4u
CiAgICBBREIwOiAwMCAyRCAwRCA0MiAwNiAwMCA0MyA1MyAwMCAwRCAyNSA2OCAxNSAwMyA1NCAw
MCAgLi0uQi4uQ1MuLiVoLi5ULgogICAgQURDMDogMzQgRkUgMDEgMDUgMzUgRkUgMDMgMEEgMDMg
MEEgMDEgMDUgMzUgRkUgMDQgMEEgIDQuLi41Li4uLi4uLjUuLi4KICAgIEFERDA6IDA0IDBBIDAx
IDAwIDAzIDBBIDY5IDE1IDAxIDAwIDA0IDBBIDY5IDE1IDVDIDI1ICAuLi4uLi5pLi4uLi5pLlwl
CiAgICBBREUwOiBENSAwOSBGQiAwMSA1NCAwMCAzNCBGRSAwMSAwNSAzNSBGRSAwMyAwQSAwQyAw
MCAgLi4uLlQuNC4uLjUuLi4uLgogICAgQURGMDogMDEgMDUgMzUgRkUgMDQgMEEgMEMgMDAgNTIg
MEYgNjYgMUMgMkQgMEMgNDIgMEEgIC4uNS4uLi4uUi5mLi0uQi4KICAgIEFFMDA6IDAwIDU1IDAw
IDAwIDUyIDEyIDY2IDFDIDJEIDBDIDQyIDBDIDAwIDAyIDBEIDAwICAuVS4uUi5mLi0uQi4uLi4u
CiAgICBBRTEwOiAwMSAwMCA1MiAxRiA1MiAxRSAwMiAwNSAwMCAzMCA3NSAwMCAwMCA1MiAxMCA0
QyAgLi5SLlIuLi4uMHUuLlIuTAogICAgQUUyMDogRTUgMDAgMjAgNDQgRTUgMDAgMEQgMjUgODAg
MEEgMTggMDIgMjUgMDAgRkYgNTIgIC4uIEQuLi4lLi4uLiUuLlIKICAgIEFFMzA6IDQwIDRBIDY1
IDgwIDBBIDBGIDQ5IDA2IDAxIDUyIDAzIDAzIDIwIDAwIDgwIDBBICBASmUuLi5JLi5SLi4gLi4u
CiAgICBBRTQwOiAwOSAyNSAwMCBGQyA1MiAxRSA1QyAyMiA4MCAwQSAwMyAwMCA1MiAwNyA1MiA0
OCAgLiUuLlIuXCIuLi4uUi5SSAogICAgQUU1MDogNUIgMDAgRkYgMDAgMDIgMDEgMDAgMDQgMzcg
MDAgMDAgNjYgMEMgMDMgMEMgNDEgIFsuLi4uLi4uNy4uZi4uLkEKICAgIEFFNjA6IDAwIDAwIDJE
IDBBIDQxIDQyIDJEIDBEIDQyIDA0IDAwIDNEIDI0IDAwIDAzIDAwICAuLi0uQUItLkIuLj0kLi4u
CiAgICBBRTcwOiA0NCAzMCAwMCAyRCAwRCA0MiAwNCAwMCAzRSAwQSA0MiA0MSA0NCBGQiAwMCA0
MyAgRDAuLS5CLi4+LkJBRC4uQwogICAgQUU4MDogMTkgMDAgNTYgMDAgNDMgMDMgQTQgNDEgMDIg
MDAgMDMgRjIgNDEgNDEgMDMgMEMgIC4uVi5DLi5BLi4uLkFBLi4KICAgIEFFOTA6IDQxIDAwIDAw
IDNFIDBEIDQxIDAwIDAwIDQ0IEZCIDAwIDNFIDBEIDQxIDYxIDQ4ICBBLi4+LkEuLkQuLj4uQWFI
CiAgICBBRUEwOiA0OSA2QiAwMCAzRSBFNSA0MSAxMCA0NiA1RiAwMCAxQiAzRCA0MSAwMSA0MyA2
QiAgSWsuPi5BLkZfLi49QS5DawogICAgQUVCMDogMDAgMDkgRTUgNDEgMDMgMTUgM0QgNDEgMDIg
MkQgRTUgNDEgMEMgMDMgM0EgNDMgIC4uLkEuLj1BLi0uQS4uOkMKICAgIEFFQzA6IDQxIDU0IDAw
IDAwIDAwIDMzIDBEIDQxIDAxIDAwIDAxIDBBIDAwIDAwIDQxIDBEICBBVC4uLjMuQS4uLi4uLkEu
CiAgICBBRUQwOiAwMiAwMSAwMCA0NCAyRCAwRCA0MSAwMiAwMCAwMSAwQSAwMCAwMCA0MSAwMyAz
MiAgLi4uRC0uQS4uLi4uLkEuMgogICAgQUVFMDogNDMgNDEgNEIgRTUgMDAgMDEgNDkgRDcgMDAg
MDcgMDIgMDEgMDAgNDUgMkQgMEQgIENBSy4uLkkuLi4uLi5FLS4KICAgIEFFRjA6IDQxIDAxIDAw
IDAxIDBBIDAwIDAwIDQxIDRBIDAyIDAxIDAwIDQ0IDQ0IEI5IDAwICBBLi4uLi4uQUouLi5ERC4u
CiAgICBBRjAwOiAwMyAyOSA0MyAwMCAwRSBBMiAwMCA0NCA0MyBDMSAwMCAwMyAyOSA0MyAwMCAw
OCAgLilDLi4uLkRDLi4uKUMuLgogICAgQUYxMDogQTIgMDAgNDUgMzMgMEQgNDEgMDMgMDAgMDEg
MEEgMDAgMDAgNDEgMDMgM0EgNDMgIC4uRTMuQS4uLi4uLkEuOkMKICAgIEFGMjA6IDQxIDA3IDAy
IDAxIDAwIDQ1IDQzIEZBIDAwIDBEIDAyIDAxIDAwIDQ0IDMzIDBEICBBLi4uLkVDLi4uLi4uRDMu
CiAgICBBRjMwOiA0MSAwMSAwMCAwMSAwQSAwMCAwMCA0MSAzRCBBNSAwMCAwMSA0NCBGNSAwMCAw
NyAgQS4uLi4uLkE9Li4uRC4uLgogICAgQUY0MDogMDIgMDEgMDAgNDUgNDMgRkEgMDAgMEQgMDIg
MDEgMDAgNDQgNUIgNTUgMjAgMDAgIC4uLkVDLi4uLi4uRFtVIC4KICAgIEFGNTA6IDVCIDAwIEFD
IDAxIDAxIDAyIDE0IDAwIDM3IDAwIDAwIDRCIEU1IDAwIDA4IDQ0ICBbLi4uLi4uLjcuLksuLi5E
CiAgICBBRjYwOiAyMyAwMCAwMSAwNSA4MiAwMCA3MCAwMyAwMCA4MCAzQyAwNSA4MyAwMCAwMCAw
MCAgIy4uLi4ucC4uLjwuLi4uLgogICAgQUY3MDogMDIgMDAgNDYgNjggMDEgMDMgMDEgMDQgMDAg
MDIgRTUgMDAgMDEgNTIgM0MgMDEgIC4uRmguLi4uLi4uLi5SPC4KICAgIEFGODA6IDA1IDgyIDAw
IDQwIDAxIDUwIEMwIDBEIDI1IDgzIDAwIDA4IDY2IEZGIDJEIDBEICAuLi5ALlAuLiUuLi5mLi0u
CiAgICBBRjkwOiA0MiA2QyAwMSAwMSAwNSA4MiAwMCA0MCAwMyA1MCBDMCA0QSAyNSA4MyAwMCAw
MSAgQmwuLi4uLkAuUC5KJS4uLgogICAgQUZBMDogNDQgNTYgMDAgMkQgMEQgNDIgMjAgMDAgMDMg
MDQgMDAgMDggMDAgMDMgMDQgMDEgIERWLi0uQiAuLi4uLi4uLi4KICAgIEFGQjA6IDBDIDAwIDAz
IDA0IDAyIDEwIDAwIDAzIDA0IDAzIDE0IDAwIDAxIDA0IDgyIDAwICAuLi4uLi4uLi4uLi4uLi4u
CiAgICBBRkMwOiAwNCAwMCA0QSAwNSA4MyAwMCA4MCAwMCAwMCAwMCA0NCA5NyAwMCAyRCAwNSAw
MCAgLi5KLi4uLi4uLkQuLi0uLgogICAgQUZEMDogMTAgMDAgMDAgMDAgMkQgMDUgMDEgMTAgMDAg
MDAgMDAgMkQgMDUgMDIgMTAgMDAgIC4uLi4tLi4uLi4uLS4uLi4KICAgIEFGRTA6IDAwIDAwIDJE
IDA1IDAzIDEwIDAwIDAwIDAwIDRBIDI1IDgzIDAwIDAyIDQ0IEI4ICAuLi0uLi4uLi5KJS4uLkQu
CiAgICBBRkYwOiAwMCAwMSAwNCA4MiAwMCAxQyAwMCAwRCAyNSA4MyAwMCAxMCAwMSAwNCA4MiAw
MCAgLi4uLi4uLi4lLi4uLi4uLgogICAgQjAwMDogMDQgMDAgNEEgMjUgODMgMDAgMDEgNDQgQUEg
MDAgMDEgMDQgODIgMDAgMTggMDAgIC4uSiUuLi5ELi4uLi4uLi4KICAgIEIwMTA6IDAxIDIxIDgz
IDAwIDAyIDAxIDAyIDgyIDAwIDAwIDAxIDAxIDgzIDAwIDAxIDU2ICAuIS4uLi4uLi4uLi4uLi5W
CiAgICBCMDIwOiAwMCA0MCAwMyAyOSA0MCAwMiAxNSAyNSA0MCAwNiAwMSAwNCA4MiAwMCAwMCAw
MCAgLkAuKUAuLiVALi4uLi4uLgogICAgQjAzMDogNUMgOEEgODMgMDAgM0YgMDAgNDAgMDEgMDIg
ODIgMDAgMDEgMDEgOTkgODMgMDAgIFwuLi4/LkAuLi4uLi4uLi4KICAgIEIwNDA6IDA0IDAxIDAy
IDgyIDAwIDAzIDAxIDk5IDgzIDAwIDA1IDAxIDA0IDgyIDAwIDFDICAuLi4uLi4uLi4uLi4uLi4u
CiAgICBCMDUwOiAwMCAwRCBBNSA4MyAwMCAxMCAwMSAwMiA4MiAwMCAwMSAwRCBFNSA4MyAwMCAw
NCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQjA2MDogMDEgMDIgODIgMDAgMDIgMDEgMDEgODMgMDAg
MDMgMDEgMDIgODIgMDAgMDEgMDEgIC4uLi4uLi4uLi4uLi4uLi4KICAgIEIwNzA6IDA5IDgzIDAw
IDA1IDBEIEU1IDgzIDAwIDAyIDAxIDA0IDgyIDAwIDFDIDAwIDBEICAuLi4uLi4uLi4uLi4uLi4u
CiAgICBCMDgwOiAyNSA4MyAwMCAwMSAwMSAwNCA4MiAwMCAwNCAwMCA0QSAyNSA4MyAwMCAwMiA0
NCAgJS4uLi4uLi4uLkolLi4uRAogICAgQjA5MDogMzIgMDEgMDEgMDUgODIgMDAgNDAgMDEgNTAg
QzAgMDcgMjUgODMgMDAgRjcgMDIgIDIuLi4uLkAuUC4uJS4uLi4KICAgIEIwQTA6IDAyIDAwIDA0
IDRDIEU1IDA0IDA4IDQ5IDY4IDAxIDUyIDJGIDAyIDAxIDAxIDAwICAuLi5MLi4uSWguUi8uLi4u
CiAgICBCMEIwOiAwMiAwMiAwMCAwNCAwMiBFNSAwMCAwMiA1MiAzRiA1QiA3QSA0MCAwMCA2OCAw
MiAgLi4uLi4uLi5SP1t6QC5oLgogICAgQjBDMDogNTAgQzAgNzggMDIgNTAgQzAgOEMgMDIgNTAg
QzAgOTAgMDIgNTAgQzAgOTQgMDIgIFAueC5QLi4uUC4uLlAuLi4KICAgIEIwRDA6IDUwIEMwIDk4
IDAyIDUwIEMwIEFDIDAyIDUwIEMwIEIwIDAyIDUwIEMwIEU0IDAyICBQLi4uUC4uLlAuLi5QLi4u
CiAgICBCMEUwOiA1MCBDMCBGNCAwMiA1MCBDMCAwOCAwMyA1MCBDMCAwQyAwMyA1MCBDMCAxMCAw
MyAgUC4uLlAuLi5QLi4uUC4uLgogICAgQjBGMDogNTAgQzAgMTQgMDMgNTAgQzAgMjggMDMgNTAg
QzAgMkMgMDMgNTAgQzAgMjIgMDEgIFAuLi5QLiguUC4sLlAuIi4KICAgIEIxMDA6IDAyIDAxIDBD
IDA0IDM3IDAwIDAwIDVDIDI1IDJCIDA4IEY4IDAxIDU0IDIwIDI0ICAuLi4uNy4uXCUrLi4uVCAk
CiAgICBCMTEwOiAxNSAwNyAyNSBFQiAwOSBGRSA0QiBFNSAwMCA0MCA0NCBBMSAwMCAwMSAwNSA5
MSAgLi4lLi4uSy4uQEQuLi4uLgogICAgQjEyMDogMEEgMEQgMDAgMDAgMDAgMDMgQjAgMDEgOTIg
MEEgNTIgM0IgMDMgMDEgMDAgMDAgIC4uLi4uLi4uLi5SOy4uLi4KICAgIEIxMzA6IDU2IDM4IDAw
IDNFIDAxIDAwIDAxIDQ1IDYyIDAwIDNFIDAxIDAwIDAyIDQ1IDUzICBWOC4+Li4uRWIuPi4uLkVT
CiAgICBCMTQwOiAwMCAwMSAwNSA5MSAwQSAwRCAwMCAwMCAwMCAwNyBBNSA5MiAwQSBGNyA0MyBB
MSAgLi4uLi4uLi4uLi4uLi5DLgogICAgQjE1MDogMDAgMDEgMDUgOTEgMEEgMEQgMDAgMDAgMDAg
NTQgMzggOTIgMEEgNDMgQTEgMDAgIC4uLi4uLi4uLlQ4Li5DLi4KICAgIEIxNjA6IDAzIDAwIDAy
IDk2IDBBIDAzIEY4IDAxIDk5IDBBIDAxIDA1IDkxIDBBIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4u
CiAgICBCMTcwOiAwMCAwMCAwMyAwOCAwMSA5MiAwQSAwMSAwNSA5MSAwQSAwRCAwMCAwMCAwMCA1
QyAgLi4uLi4uLi4uLi4uLi4uXAogICAgQjE4MDogOEQgOTIgMEEgMDAgMDAgODAgMDAgMDcgRTUg
OTkgMEEgQkYgMDcgNjUgOTYgMEEgIC4uLi4uLi4uLi4uLi5lLi4KICAgIEIxOTA6IEYwIDAxIDA1
IDkxIDBBIDAwIDAwIDAwIDAwIDAxIDBEIDkyIDBBIDc3IDc3IDAyICAuLi4uLi4uLi4uLi4ud3cu
CiAgICBCMUEwOiAwMSAwMSAwMCA1MiAxMCAwMiAwMSAwMSAwMCAwMiBFNSAwMSAwMSA1MiAzRiA1
MiAgLi4uUi4uLi4uLi4uLlI/UgogICAgQjFCMDogMzAgMDIgRTUgMDEgMDIgMDIgMDEgMDIgMDAg
NTIgM0YgMDcgMjUgRjMgMDkgRkMgIDAuLi4uLi4uLlI/LiUuLi4KICAgIEIxQzA6IDU1IDAwIDAx
IDRBIDI1IDgwIDBBIDA4IDQ5IEQxIDAwIDAyIDI1IDAxIDA3IDUyICBVLi5KJS4uLkkuLi4lLi5S
CiAgICBCMUQwOiA0MCA0QiBFNSAwMCA0MCA0NCAxMiAwMSAwMSAwNSA5MSAwQSAwRCAwMCAwMCAw
MCAgQEsuLkBELi4uLi4uLi4uLgogICAgQjFFMDogNEMgQTUgMDEgODAgNDkgRUQgMDAgNTQgMzgg
OTIgMEEgMDEgQjIgOTIgMEEgMDEgIEwuLi5JLi5UOC4uLi4uLi4KICAgIEIxRjA6IDUyIDNCIDNF
IDAxIDAwIDAxIDQ2IDEyIDAxIDAxIEZBIDk5IDBBIDAxIDAxIDZBICBSOz4uLi5GLi4uLi4uLi5q
CiAgICBCMjAwOiA5NiAwQSAwMiAwMSAwNSA5MSAwQSAwMCAwMCAwMCAwMCAwMSAwQSA5MiAwQSAw
MSAgLi4uLi4uLi4uLi4uLi4uLgogICAgQjIxMDogMEQgMjUgRUIgMDkgMDEgMDcgMjUgMkIgMDgg
RjggMEQgMjUgMjQgMTUgMDMgNUIgIC4lLi4uLiUrLi4uJSQuLlsKICAgIEIyMjA6IDREIDA0IDAx
IDA3IDA4IDA4IDM3IDAwIDAwIDNEIDI1IDAxIEZGIDQ0IDE3IDA0ICBNLi4uLi43Li49JS4uRC4u
CiAgICBCMjMwOiAzRCAyNSAwMSAxOSA0NiAxMyAwNCAzRCAyNSAwMSAwMiA0NyAxMyAwNCAzRCAy
NSAgPSUuLkYuLj0lLi5HLi49JQogICAgQjI0MDogMDEgMTQgNDUgMTcgMDQgM0QgMDUgMDAgMDAg
MDAgMDAgMDAgNDQgREEgMDEgNEIgIC4uRS4uPS4uLi4uLkQuLksKICAgIEIyNTA6IEU1IDAxIDAy
IDQ5IDVEIDAwIDAyIEE5IDAyIDAyIDU1IDI4IDAyIDNEIDA1IDAwICAuLi5JXS4uLi4uVSguPS4u
CiAgICBCMjYwOiA0MCA0QiA0QyAwMCA0NSA1RCAwMCAwRCBBNSBDMiA5RCA0MCAwMyAyMSA0MSAw
MSAgQEtMLkVdLi4uLi5ALiFBLgogICAgQjI3MDogMzMgMjUgNDEgMTQgMDMgMjIgNDMgNDEgMEQg
RTIgQzEgNDggNDQgNjYgRkYgMkQgIDMlQS4uIkNBLi4uSERmLi0KICAgIEIyODA6IDBEIDQyIDJE
IDA0IDAzIDM5IDQwIDAxIDA5IDBEIDQwIDMwIDAwIDFCIDBEIDQwICAuQi0uLjlALi4uQDAuLi5A
CiAgICBCMjkwOiAwMiAyRCAwQSA0MiA0MCA1NiAwMCAwMCA1NiAwMCAwMSAwMiAwNSAwMyA0MCAw
MSAgLi0uQkBWLi5WLi4uLi5ALgogICAgQjJBMDogMDAgMDAgMDIgNjUgMDEgMDEgMjAgMDUgMDAg
MEEgMDAgMDAgMDAgMDMgMDIgNDYgIC4uLmUuLiAuLi4uLi4uLkYKICAgIEIyQjA6IDQwIDNEIDA1
IDAwIDgwIDhEIDVCIDAwIDQ3IEEyIDAwIDBFIEU1IDAxIDA4IDU1ICBAPS4uLi5bLkcuLi4uLi5V
CiAgICBCMkMwOiAyOCAwMSA0QiBFNSAwMSAwOCA0NCBBRCAwMCAxQiAwNSA0NiAwMSAzRSAwNSA0
NiAgKC5LLi4uRC4uLi5GLj4uRgogICAgQjJEMDogQTAgMkYgQzUgMDEgNDggQzIgMDAgMkMgNjUg
MDEgMDEgMTUgMDUgNDYgMDEgNDMgIC4vLi5ILi4sZS4uLi5GLkMKICAgIEIyRTA6IEFEIDAwIDE0
IDJEIDAxIDA1IDAzIDA1IDAxIDAwIDAwIDAxIDAwIDRCIEU1IDAxICAuLi4tLi4uLi4uLi4uSy4u
CiAgICBCMkYwOiAwMiA0OSAyOCAwMSAyNyAwNCA0NiAwMCAwMCAzRSAwNSA0MSAwMCAwMCAwMCAw
MCAgLkkoLicuRi4uPi5BLi4uLgogICAgQjMwMDogNDQgM0EgMDEgMDMgMDQgNDAgMDAgMDAgMDMg
MDIgMDAgNDEgMjcgMDIgNDAgNDEgIEQ6Li4uQC4uLi4uQScuQEEKICAgIEIzMTA6IDAzIDAyIDQw
IDAwIDNFIDA1IDQxIDAwIDAwIDAwIDAwIDQ5IEU4IDAwIDdDIDA1ICAuLkAuPi5BLi4uLkkuLnwu
CiAgICBCMzIwOiAwMCAwMCAwMCAwMSAwMCA3RSAwNCA0MCAwMCAwMCA3QyAwNCA0MCAwMCAwMCA3
RSAgLi4uLi5+LkAuLnwuQC4ufgogICAgQjMzMDogMDIgNDAgMDAgMDMgMDIgMDEgNDAgM0UgMDUg
MDEgMzMgRjMgMDAgMDAgNDggMjggIC5ALi4uLkA+Li4zLi4uSCgKICAgIEIzNDA6IDAxIDAzIDA1
IDAxIDAwIDAwIDAxIDAwIDI3IDA0IDQ2IDAwIDAwIDdDIDAyIDAxICAuLi4uLi4uLicuRi4ufC4u
CiAgICBCMzUwOiA0MSA3RSAwNCA0MCAwMCAwMCAwMyAwQSAwMCA0MCAyNyAwNCA0NiAwMCAwMCAw
MyAgQX4uQC4uLi4uQCcuRi4uLgogICAgQjM2MDogOEEgMDAgNDAgNTYgMTggMDEgNjYgRkYgMkQg
MEQgNDIgMjEgMDQgNTYgMDAgNDAgIC4uQFYuLmYuLS5CIS5WLkAKICAgIEIzNzA6IDAzIDIxIDQw
IDAxIDMzIDI1IDQwIDE0IDE1IDI1IDQwIDAxIDJEIDBBIDQyIDQwICAuIUAuMyVALi4lQC4tLkJA
CiAgICBCMzgwOiAwMyAwQyA0OCAwMCAwMCA0QSA2NSBFMiA0OCAxMCA0NCA5NSAwMiAwMyAzOSA0
MSAgLi5ILi5KZS5ILkQuLi45QQogICAgQjM5MDogMDEgMDkgMEQgNDEgMzAgMDAgMUIgMEQgNDEg
MDQgM0MgMjIgNUUgNDkgNDEgNDkgIC4uLkEwLi4uQS48Il5JQUkKICAgIEIzQTA6IEI5IDAxIDND
IDIxIDIzIDQ5IDAzIDQ5IEI5IDAxIDNDIDI5IDI1IDQ5IDAzIDQ5ICAuLjwhI0kuSS4uPCklSS5J
CiAgICBCM0IwOiBCOSAwMSAwMyAyMCA0MSA1RiA0OSAwOSAyNSA0MSBFMCAzRSAyOSA0MSAwMSA0
OSAgLi4uIEFfSS4lQS4+KUEuSQogICAgQjNDMDogQjkgMDEgNEIgRTUgMDEgNDAgNDkgOEQgMDIg
M0MgMDIgMjAgNDkgMDAgNDkgQjkgIC4uSy4uQEkuLjwuIEkuSS4KICAgIEIzRDA6IDAxIDNDIDBB
IDIyIDQ5IDAxIDQ0IEJEIDAxIDBFIEU1IDAxIDAxIDNBIDAwIDAwICAuPC4iSS5ELi4uLi4uOi4u
CiAgICBCM0UwOiA0QiBFNSAwMSAwMSA0NCBFQiAwMyA0QiBFNSAwMSAwMiA0OSBEQSAwMSAzRCAy
NSAgSy4uLkQuLksuLi5JLi49JQogICAgQjNGMDogMDIgMDUgNDYgREEgMDEgNTUgMjggMDIgNTIg
MjMgNTYgMDAgNDAgMDMgMjEgNDAgIC4uRi4uVSguUiNWLkAuIUAKICAgIEI0MDA6IDAxIDMzIDI1
IDQwIDE0IDAzIDBBIDQ4IDQwIDA3IDI1IDYwIDAxIEZFIDY2IEZGICAuMyVALi4uSEAuJWAuLmYu
CiAgICBCNDEwOiAyRCAwRCA0MiAyMSAwNCA1NiAwMCA0MCAwMyAyMSA0MCAwMSAzMyAyNSA0MCAx
NCAgLS5CIS5WLkAuIUAuMyVALgogICAgQjQyMDogMTUgMjUgNDAgMDEgMkQgMEEgNDIgNDAgMDMg
MEMgNDggMDAgMDAgMDcgNjUgMjMgIC4lQC4tLkJALi5ILi4uZSMKICAgIEI0MzA6IDQ5IEZFIDU0
IDAwIDIxIDQ5IDU0IDAwIDIyIDQ5IDA3IDY1IEUyIDQ4IEVGIDRBICBJLlQuIUlULiJJLmUuSC5K
CiAgICBCNDQwOiA2NSBFMiA0OCAyMCA0OSAxRiAwMiAwNyA2NSBGMiA0OCBFRiA0QSA2NSBGMiA0
OCAgZS5IIEkuLi5lLkguSmUuSAogICAgQjQ1MDogMjAgNDkgMkMgMDIgM0QgMDUgMDAgMDAgMDAg
MDAgMDAgNDkgOTUgMDIgNEEgQTUgICBJLC49Li4uLi4uSS4uSi4KICAgIEI0NjA6IEMxIDQ4IDgw
IDQ0IDY5IDAyIDU2IDAwIDQxIDVDIDI1IEUwIDQ4IEY4IDA2IDUxICAuSC5EaS5WLkFcJS5ILi5R
CiAgICBCNDcwOiAwMiA0QSA2NSBFMCA0OCAwMSA0NCA1MSAwMiAyRCBBNSA0MSAwMSAyRCAwRCA0
OCAgLkplLkguRFEuLS5BLi0uSAogICAgQjQ4MDogMTAgMDAgM0UgQTUgNDEgMDQgNDUgNDkgMDIg
NTYgMDggNDggMDMgMjEgNDEgMDEgIC4uPi5BLkVJLlYuSC4hQS4KICAgIEI0OTA6IDMzIDI1IDQx
IDE0IDAzIDIyIDQzIDQxIDA3IEUyIEMxIDQ4IDQ1IDRBIEU1IEMxICAzJUEuLiJDQS4uLkhFSi4u
CiAgICBCNEEwOiA0OCAzRiA0OSAxMyAwNCAwNyBBNSBDMiA5RCBCRiA0MyAxMyAwNCAwMSAwMiAy
MCAgSD9JLi4uLi4uLkMuLi4uIAogICAgQjRCMDogNDkgMDAgNDMgQUUgMDMgMDEgMDUgREEgNDgg
ODAgODggMDEgMDAgM0QgQTUgMDEgIEkuQy4uLi4uSC4uLi49Li4KICAgIEI0QzA6IDAwIDQ5IEI2
IDAyIDNEIDA1IDAwIEUwIDNCIDY2IDAwIDQ1IEI2IDAyIDA3IDI1ICAuSS4uPS4uLjtmLkUuLi4l
CiAgICBCNEQwOiBEQiA0OCBGRSA0MyBENiAwMiAwRCAyNSBEQiA0OCAwMSAzRCBBNSAwMSAwMiA0
OSAgLkguQy4uLiUuSC49Li4uSQogICAgQjRFMDogRDYgMDIgNEIgRTUgMDEgMDggNDQgRDYgMDIg
MDEgMDUgN0EgNDkgODAgODggMDEgIC4uSy4uLkQuLi4uekkuLi4KICAgIEI0RjA6IDAwIDBEIDI1
IDdCIDQ5IDAxIDBEIDI1IDVGIDQ5IDAxIDAzIDM5IDQwIDAxIDA5ICAuLiV7SS4uJV9JLi45QC4u
CiAgICBCNTAwOiAwRCA0MCAzMCAwMCAxQiAwRCA0MCAwNCAwMSAyMiA1RSA0OSA0MCAwRCA2NSA1
RiAgLkAwLi4uQC4uIl5JQC5lXwogICAgQjUxMDogNDkgODAgM0UgMjUgNDAgMDIgNDQgRkQgMDIg
MDMgNjUgNDAgMDQgNUMgNkEgNUYgIEkuPiVALkQuLi5lQC5cal8KICAgIEI1MjA6IDQ5IEZCIDQw
IDY2IEZGIDU2IDAwIDQwIDJEIDBEIDQyIDNEIDA0IDAzIDIxIDQwICBJLkBmLlYuQC0uQj0uLiFA
CiAgICBCNTMwOiAwMyAwOSAwRCA0MCAwMyAwMCAxNSAwRCA0MCAwMiAyRCAwQSA0MiA0MCAwMSAw
QyAgLi4uQC4uLi5ALi0uQkAuLgogICAgQjU0MDogMjQgNDkgMDAgMDAgMDEgRTQgMjYgNDkgMDIg
MDAgMEQgMjUgMjYgNDkgMDIgMDEgICRJLi4uLiZJLi4uJSZJLi4KICAgIEI1NTA6IDIxIDIzIDQ5
IDAzIDAxIEE1IDIzIDQ5IEU4IDAxIDAyIDIwIDQ5IDAwIDU0IDAwICAhI0kuLi4jSS4uLiBJLlQu
CiAgICBCNTYwOiAyMSA0OSAwMSAwMiAyMiA0OSAwMSA0QiBFNSAwMSAwOCA0NCA1NiAwMyAwNyA2
NSAgIUkuLiJJLksuLi5EVi4uZQogICAgQjU3MDogNUYgNDkgRkUgNDMgNUIgMDMgMEQgNjUgNUYg
NDkgMDEgNUMgMjkgNUYgNDkgMUYgIF9JLkNbLi5lX0kuXClfSS4KICAgIEI1ODA6IDAxIDAxIDhE
IDJCIDQ5IDIwIDAzIDAxIDI5IDI1IDQ5IDAzIDA3IDY1IDVGIDQ5ICAuLi4rSSAuLiklSS4uZV9J
CiAgICBCNTkwOiA3RiA1QyA2NSBFMiA0OCBFMyAwNCA0QSA2NSBFMiA0OCAyMCA0OSA3NyAwMyAw
RCAgLlxlLkguLkplLkggSXcuLgogICAgQjVBMDogNjUgRTIgNDggMTAgNEEgNjUgRTIgNDggMjAg
NDQgODQgMDMgNEIgRTUgMDEgMDIgIGUuSC5KZS5IIEQuLksuLi4KICAgIEI1QjA6IDQ5IEFFIDAz
IDVDIDY1IEYyIDQ4IEUzIDA0IDRBIDY1IEYyIDQ4IDIwIDQ5IDk5ICBJLi5cZS5ILi5KZS5IIEku
CiAgICBCNUMwOiAwMyAwRCA2NSBGMiA0OCAxMCA0QSA2NSBGMiA0OCAyMCA0NCBBNiAwMyAwMyAw
MSAgLi5lLkguSmUuSCBELi4uLgogICAgQjVEMDogMDAgMDIgMDIgQjEgMDIgMDEgNTIgNDEgMDIg
MDIgMDIgMDAgMEQgNjUgNUYgNDkgIC4uLi4uLlJBLi4uLi5lX0kKICAgIEI1RTA6IDQwIDRBIDY1
IDVGIDQ5IDIwIDQ0IEMxIDAzIDA3IDY1IDVGIDQ5IEJGIDU2IDAwICBASmVfSSBELi4uZV9JLlYu
CiAgICBCNUYwOiA0MCAwMyAyMSA0MCAwMSAzMyAyNSA0MCAxNCAwMyAwQSA0OCA0MCAwRCAyNSA2
MCAgQC4hQC4zJUAuLi5IQC4lYAogICAgQjYwMDogMDEgMDEgNTEgMDEgNEIgRTUgMDEgMDIgNDkg
MTMgMDQgM0EgMDAgMDAgM0QgMjUgIC4uUS5LLi4uSS4uOi4uPSUKICAgIEI2MTA6IDAyIDA1IDQ2
IDEzIDA0IDAyIDI1IDAzIDAyIDAyIEUxIDAzIDAyIDAyIDYxIDAzICAuLkYuLi4lLi4uLi4uLmEu
CiAgICBCNjIwOiAwMSAwMiBCOSAwMyAwMSAwOCBBNSAwMyAwNCAwRSBCMSAwMyAwMiAwMiAwMSAw
MiAgLi4uLi4uLi4uLi4uLi4uLgogICAgQjYzMDogMDAgNTIgMkUgM0EgMDAgMDAgNUIgMDIgMjUg
MDEgMEIgNDMgRUIgMDMgN0EgMkMgIC5SLjouLlsuJS4uQy4ueiwKICAgIEI2NDA6IDAwIDAwIDAw
IEEwIDAwIDQwIDUxIEUwIDUxIDgwIDUyIDIwIDUzIDQwIDQyIDBGICAuLi4uLkBRLlEuUiBTQEIu
CiAgICBCNjUwOiAwMCA0MCA0MiAwRiAwMCA0MCA0MiAwRiAwMCA0MCA0MiAwRiAwMCBBMSA4MyA2
NCAgLkBCLi5AQi4uQEIuLi4uZAogICAgQjY2MDogMDAgMjQgODMgMzIgMDAgQTMgNzYgMTkgMDAg
QTMgNzYgMEMgMDAgMDAgOEMgMDEgIC4kLjIuLnYuLi52Li4uLi4KICAgIEI2NzA6IDAyIDAxIDAw
IDAwIDM3IDAwIDAwIDNEIDY1IDAwIDA3IDQ0IEJDIDAwIDU2IDAwICAuLi4uNy4uPWUuLkQuLlYu
CiAgICBCNjgwOiA0MCAyMCAyNSAwMCAwMyAwMyAwQSA0OCA0MCAzRCA2NSAwMCAwMSA0NCBCQiAw
MCAgQCAlLi4uLkhAPWUuLkQuLgogICAgQjY5MDogNTYgMDggNDggMDMgMjEgNDggMDAgMDEgMEQg
RkEgMDIgMDIgMDAgNTIgMTQgMDEgIFYuSC4hSC4uLi4uLi5SLi4KICAgIEI2QTA6IDA1IDhEIDFB
IDAwIDAwIDQwIDAwIDAxIDI1IEJFIDFCIDAyIDAxIEE1IENDIDFBICAuLi4uLkAuLiUuLi4uLi4u
CiAgICBCNkIwOiBDMCAwMSAwRCA5MSAxQSA0NSAwMSA1QyAwNSBEQSAxQSBGMCBGRiBGRiBGRiAw
MiAgLi4uLi5FLlwuLi4uLi4uLgogICAgQjZDMDogMDAgMDAgMDAgMDcgMjUgMDMgMUIgRkIgMEQg
MjUgN0QgMUEgMDEgMDEgMDUgMzQgIC4uLi4lLi4uLiV9Li4uLjQKICAgIEI2RDA6IDFCIDAxIDAw
IDAwIDAwIDVDIDA1IDM2IDFCIEVFIEZFIDAwIDAwIDExIDAxIEZGICAuLi4uLlwuNi4uLi4uLi4u
CiAgICBCNkUwOiA3RiAwMSAyNSAzQSAxQiAxMSA1QyAwNSAzMiAxQiBGOCBGOCBGOCBGRiAwMCAw
MCAgLi4lOi4uXC4yLi4uLi4uLgogICAgQjZGMDogMDAgMDAgMDEgMEQgMzMgMUIgRkYgN0YgMDEg
MDUgQjMgMUIgMDcgNDAgMDAgMDAgIC4uLi4zLi4uLi4uLi5ALi4KICAgIEI3MDA6IDBEIEE1IEI2
IDFCIDAxIDAxIDA1IDMxIDFCIDAwIDA4IDAwIDA0IDAxIDBEIDg2ICAuLi4uLi4uMS4uLi4uLi4u
CiAgICBCNzEwOiAxQiAwNCAwMCAwMSAwRCBFNyAxQiAwMSAwMCA1QyAwNSAwMCAxQiBGRiBGRiBG
RCAgLi4uLi4uLi4uXC4uLi4uLgogICAgQjcyMDogRkYgMDAgMDAgMDIgMDAgM0EgMDAgMDAgNUIg
NUIgNUMgMDUgRjYgMDIgRkYgMDAgIC4uLi4uOi4uW1tcLi4uLi4KICAgIEI3MzA6IEZFIDlGIDA0
IEZDIDAwIDIwIDAxIDA1IEY5IDAyIDEwIDI3IDAyIDAwIDAxIDA1ICAuLi4uLiAuLi4uLicuLi4u
CiAgICBCNzQwOiAxNCAwMyAwMCAwOCAwMCAyMCAwMSAwNSAwQyAwMyAwMCA5MCAwMCAxMCAwMSAy
NSAgLi4uLi4gLi4uLi4uLi4uJQogICAgQjc1MDogMDkgMDEgMDEgMDEgMDUgM0IgMDEgNjQgMDIg
MTIgMDAgMDEgMDUgMzAgMDEgQTAgIC4uLi4uOy5kLi4uLi4wLi4KICAgIEI3NjA6IDg2IDExIDAw
IDAxIEU1IDA5IDE3IDY0IDAxIDA1IDIyIDE3IDAwIDAwIDlCIDAyICAuLi4uLi4uZC4uIi4uLi4u
CiAgICBCNzcwOiAwMSAwNSAwNiAxNyAyMSA4NCAyMCAwMCAwMSA4RCBFNSAxNyA2NCAwMCAwMSAy
NSAgLi4uLiEuIC4uLi4uZC4uJQogICAgQjc4MDogRTQgMTcgMDEgMDEgMDUgMzEgMDEgM0MgMDAg
MDEgMDggNUMgNjUgRDQgMDAgRkMgIC4uLi4uMS48Li4uXGUuLi4KICAgIEI3OTA6IDAyIDAxIDBE
IEZDIDAwIDAwIDAxIDAxIDA1IDJGIDQ4IDAwIDAwIDAwIDAwIDAxICAuLi4uLi4uLi4vSC4uLi4u
CiAgICBCN0EwOiAwNSAwNCA0OCAwMCAwMCAwMCAwMCAwMSAwNSAzQSA0OCAwRiAwMCAwMCAwMCAw
RCAgLi5ILi4uLi4uOkguLi4uLgogICAgQjdCMDogRTUgQ0IgMDUgMTAgMDEgMDUgRjggMTYgMDAg
MDAgMDAgMzAgMDEgMjUgMzIgMDEgIC4uLi4uLi4uLi4uMC4lMi4KICAgIEI3QzA6IDAwIDU1IDAw
IDAwIDUyIDRFIDAyIDI1IDAwIDA3IDUyIDMzIDAyIDBEIDAwIDAwICAuVS4uUk4uJS4uUjMuLi4u
CiAgICBCN0QwOiAwNyAwMiAwNSAwMCAwMCAwNyAwMCAwMCA1MiA0RCAyQyAyNSAwMCAwMSAzRCAy
NSAgLi4uLi4uLi5STSwlLi49JQogICAgQjdFMDogMDAgMDYgNDUgNkEgMDEgNjYgMTYgMDMgMEMg
NDEgMDQgMDAgNEMgMEQgNDEgMDIgIC4uRWouZi4uLkEuLkwuQS4KICAgIEI3RjA6IDAwIDQ0IEI3
IDAwIDBEIEE1IEM5IDA1IDA0IDVCIDA3IDAwIDAxIDAxIDAwIDAwICAuRC4uLi4uLi5bLi4uLi4u
CiAgICBCODAwOiA1QiAwMCA4QSAwMCAwMSAwMSAwMCAwMCAzNyAwMCAwMCAwMSAwNSAwMyAyQiA1
NCAgWy4uLi4uLi43Li4uLi4rVAogICAgQjgxMDogMTAgNzYgMzIgNTYgMDAgNDEgMDMgNTAgNDEg
OUYgMDMgNTYgMDAgNDAgNjYgRkYgIC52MlYuQS5QQS4uVi5AZi4KICAgIEI4MjA6IDJEIDBEIDQy
IDRBIDAwIDRDIDY1IDQxIDEwIDQ0IDQ2IDAwIDA5IDY1IDQxIDA3ICAtLkJKLkxlQS5ERi4uZUEu
CiAgICBCODMwOiAwMyAyQSA0MCA0MSAxNSAwRCA0MCAwMyAyRCAwQSA0MiA0MCAwMSAwNCAwMiAw
OCAgLipAQS4uQC4tLkJALi4uLgogICAgQjg0MDogMDAgMDAgMDEgMDQgMDMgMkIgMDQgMDAgNUIg
N0EgNDAgMDAgMjMgMTAgNTQgNzYgIC4uLi4uKy4uW3pALiMuVHYKICAgIEI4NTA6IDQ1IDEwIDc2
IDMyIDMyIDEwIDU0IDc2IDU0IDEwIDc2IDMyIDAzIDIxIDU0IDc2ICBFLnYyMi5UdlQudjIuIVR2
CiAgICBCODYwOiAwNSA0MSA3NiAzMiAxMyAyMCA1NCA3NiAxNSA0MCA3NiAzMiAzMiAxMCA0NSA3
NiAgLkF2Mi4gVHYuQHYyMi5FdgogICAgQjg3MDogNTQgMTAgNjcgMzIgMzIgMTAgNTQgNzYgNTQg
MTAgNzYgMzIgMzIgMTAgNjUgNDcgIFQuZzIyLlR2VC52MjIuZUcKICAgIEI4ODA6IDU0IDEwIDI3
IDYzIDMyIDEwIDc1IDQ2IDU0IDEwIDM3IDYyIDM3IDAzIDAxIDAxICBULidjMi51RlQuN2I3Li4u
CiAgICBCODkwOiAwOCAwMCAzNyAwMCAwMCAwMSAwNSA4MiAwMCAwMCAwMCAyMCBDMCAwNyBBNSA4
MyAgLi43Li4uLi4uLi4gLi4uLgogICAgQjhBMDogMDAgRkMgMDEgMDUgODIgMDAgMkMgMDEgNTAg
QzAgMzcgMDUgMDAgMDEgMEQgMkMgIC4uLi4uLiwuUC43Li4uLiwKICAgIEI4QjA6IDAxIDA2IDAy
IDAxIDA1IEE0IDAxIDA5IDAwIDQwIDAwIDAxIDA1IEEwIDAxIDAzICAuLi4uLi4uLi5ALi4uLi4u
CiAgICBCOEMwOiAwMCAwMCAwMCAwMSAwRCBCMCAwMSAwMiAwNCAwMSBFNSA5OCAwMSAwMCA0QSAy
NSAgLi4uLi4uLi4uLi4uLi5KJQogICAgQjhEMDogMDAgMDAgMDEgNDkgRTYgMDAgNUMgMjUgMEMg
MDAgODAgNjQgNUMgMjUgMTAgMDAgIC4uLkkuLlwlLi4uZFwlLi4KICAgIEI4RTA6IDgwIDY0IDVD
IDI1IDE0IDAwIDgwIDY0IDVDIDI1IDE4IDAwIDgwIDY0IDVDIDI1ICAuZFwlLi4uZFwlLi4uZFwl
CiAgICBCOEYwOiAxQyAwMCA4MCA2NCA1QyAyNSAyNCAwMCA4MCAxOCA1QyAyNSAyOCAwMCA4MCA2
NCAgLi4uZFwlJC4uLlwlKC4uZAogICAgQjkwMDogMEQgMjUgMkMgMDAgMDEgMEQgMjUgMjAgMDAg
MDEgMEQgMjUgMDAgMDAgMDEgMDEgIC4lLC4uLiUgLi4uJS4uLi4KICAgIEI5MTA6IDA1IEQ4IDAx
IEI4IDI5IEU4IDAwIDAxIDA1IERDIDAxIEI4IDI5IEU4IDAwIDAxICAuLi4uKS4uLi4uLi4pLi4u
CiAgICBCOTIwOiAwNSBFMCAwMSBCOCAyOSBFOCAwMCAwMSAwNSBFNCAwMSBCOCAyOSBFOCAwMCAw
MSAgLi4uLikuLi4uLi4uKS4uLgogICAgQjkzMDogRTUgMTQgMDIgNjQgMDEgMDUgNzQgMDEgMDAg
MDAgMjQgMDAgMzcgMDAgMDAgMDEgIC4uLmQuLnQuLi4kLjcuLi4KICAgIEI5NDA6IDA1IDgyIDAw
IDE0IDAwIDAwIEMwIDBEIDY1IDgzIDAwIDAxIDUxIEZBIDAxIDA1ICAuLi4uLi4uLmUuLi5RLi4u
CiAgICBCOTUwOiA4MiAwMCAwMCAwMCAwMCBDMCAwRCAyNSA4MyAwMCAwMSAwMSAwNSA4MiAwMCA3
MCAgLi4uLi4uLiUuLi4uLi4ucAogICAgQjk2MDogMDEgNTAgQzAgMzcgMDUgMDAgNTQgMDAgMTgg
MDEgMDEgMDUgQTggMDEgMjAgNDAgIC5QLjcuLlQuLi4uLi4uIEAKICAgIEI5NzA6IDAwIDAwIDAx
IEU1IDYwIDAyIDY0IDAxIEU1IERDIDAyIDY0IDAxIDI1IDQ0IDAzICAuLi4uYC5kLi4uLmQuJUQu
CiAgICBCOTgwOiAwMCAzNyAwMCAwMCAwNyBBNSA5NyAwMSBGNyA1NCAwMCA5MiAwMSAwMSAwNSA4
MiAgLjcuLi4uLi4uVC4uLi4uLgogICAgQjk5MDogMDAgNzggMDMgMjAgQzAgMDEgMEQgODMgMDAg
MTkgMDAgMDEgMDUgODIgMDAgMDAgIC54LiAuLi4uLi4uLi4uLi4KICAgIEI5QTA6IDAwIDYwIEMw
IDVDIDA1IDgzIDAwIEZEIEZGIEZGIEZGIDAyIDAwIDAwIDAwIDAxICAuYC5cLi4uLi4uLi4uLi4u
CiAgICBCOUIwOiAwNSA4MiAwMCAxMCAwMCAwMCBDMCAwMSAwNSA4MyAwMCAwMiAwMCA4MCAyQSAw
MSAgLi4uLi4uLi4uLi4uLi4qLgogICAgQjlDMDogMDUgODIgMDAgNzAgMDMgMDAgODAgM0MgMDUg
ODMgMDAgMDAgMDAgMDIgMDAgNDYgIC4uLnAuLi48Li4uLi4uLkYKICAgIEI5RDA6IDBCIDAzIDAx
IDA1IDgyIDAwIDYwIDAzIDIwIEMwIDM3IDA1IDAwIDVDIDA1IDYwICAuLi4uLi5gLiAuNy4uXC5g
CiAgICBCOUUwOiAwMyAxMCAwMSAxOCBGMCAyMCBBNCA2MiAwMCA1QyAwNSA2NCAwMyBGRiBGRiAw
MCAgLi4uLi4gLmIuXC5kLi4uLgogICAgQjlGMDogRkMgMDAgMDAgMDEgMDEgNUMgMDUgNkMgMDMg
MTAgMDEgMDggRjAgMjAgQTQgNjIgIC4uLi4uXC5sLi4uLi4gLmIKICAgIEJBMDA6IDAwIDVDIDA1
IDcwIDAzIEZGIEZGIDAwIEZDIDAwIDAwIDAxIDAxIDVDIDA1IDUwICAuXC5wLi4uLi4uLi4uXC5Q
CiAgICBCQTEwOiAwMyA4NyAwMCA3QyAwMCAxOSA1MiA5RCA3RiA1QyAwNSA1NCAwMyAwNyAwQyA4
MCAgLi4ufC4uUi4uXC5ULi4uLgogICAgQkEyMDogRkYgMzggMjAgMDEgMDAgNUMgMDUgRTQgMDEg
QkYgRkYgRkYgREYgQkYgRkYgMDEgIC44IC4uXC4uLi4uLi4uLi4KICAgIEJBMzA6IDIwIDVDIDA1
IDg0IDAwIEZGIEZEIEZGIEZGIEZGIDdEIEEwIDAwIDM3IDAwIDAwICAgXC4uLi4uLi4ufS4uNy4u
CiAgICBCQTQwOiAwMSAwNSA4MiAwMCAwNCAwMCAzMCBDMCAzNyAwNSAwMCAwMSAwNSAwNCAwMCAw
MiAgLi4uLi4uMC43Li4uLi4uLgogICAgQkE1MDogMDAgOTEgMDYgMDEgMDUgMEMgMDAgNjAgNkEg
MDAgMDggMDEgMDUgMTAgMDAgMDEgIC4uLi4uLi5gai4uLi4uLi4KICAgIEJBNjA6IDAwIDAwIDAw
IDAxIDA1IDFDIDAwIDREIDAwIEMwIEFDIDAxIDA1IDIwIDAwIEVDICAuLi4uLi4uTS4uLi4uIC4u
CiAgICBCQTcwOiBBNyA3OCAzMSAwMSAwNSAyNCAwMCAwMCAyMSAwMCAwMCAwMSAwNSAyOCAwMCBG
RiAgLngxLi4kLi4hLi4uLiguLgogICAgQkE4MDogRkYgRkYgRkYgMDEgMDUgNjQgMDAgOTYgNDMg
ODEgMDEgMDEgMDUgNjggMDAgODcgIC4uLi4uZC4uQy4uLi5oLi4KICAgIEJBOTA6IDI1IDA5IDQw
IDAxIDA1IDZDIDAwIDM1IDE0IEJGIDAyIDAxIDA1IDcwIDAwIDAxICAlLkAuLmwuNS4uLi4ucC4u
CiAgICBCQUEwOiA4MCAwMCAwMCAwMSAwNSAyQyAwMCAwMCAyMSAwMCAwMCAwMSAwNSAzMCAwMCBG
RiAgLi4uLi4sLi4hLi4uLjAuLgogICAgQkFCMDogRkYgRkYgRkYgMDEgMDUgMTAgMDAgMDEgMDAg
MDAgMDAgNEEgRTUgODAgMDAgMDQgIC4uLi4uLi4uLi4uSi4uLi4KICAgIEJBQzA6IDQ0IDUyIDAy
IDAxIDA1IDEwIDAwIDAxIDAwIDAwIDAyIDAzIDAwIDQxIDIwIDAwICBEUi4uLi4uLi4uLi4uQSAu
CiAgICBCQUQwOiA1NCAwMCAyMCAwMCA1MCAwOCAwRCAyNSAyNCAwMCAwMSA0MyA2MiAwMiAwMyAw
MCAgVC4gLlAuLiUkLi5DYi4uLgogICAgQkFFMDogNDEgMjAgMDAgNTQgMDAgMjAgMDAgNTAgMDgg
MEQgMjUgMkMgMDAgMDEgMDEgMDIgIEEgLlQuIC5QLi4lLC4uLi4KICAgIEJBRjA6IDIwIDAwIDQx
IDM3IDAwIDAwIDAzIDA1IDAwIDI0IDAwIDMwIEMwIDAzIDA1IDAxICAgLkE3Li4uLi4kLjAuLi4u
CiAgICBCQjAwOiA0NCAwMCAzMCBDMCAwMSAwNSA4MiAwMCA4MCAwMCAzMCBDMCAwMyAzOCA0MCA4
MyAgRC4wLi4uLi4uLjAuLjhALgogICAgQkIxMDogMDAgNEMgMjUgNDAgMDQgNDkgRTcgMDIgMDEg
MDIgODIgMDAgMDAgNEEgMjUgODMgIC5MJUAuSS4uLi4uLi5KJS4KICAgIEJCMjA6IDAwIDAxIDQ5
IEU3IDAyIDBEIDY1IDgzIDAwIDA0IDY2IEZGIDJEIDBEIDQyIDBGICAuLkkuLi5lLi4uZi4tLkIu
CiAgICBCQjMwOiAwMyA1NiAwMCA0MSAwMSAwMiA4MiAwMCAwMSA0QSAyNSA4MyAwMCAwMSA0OSBB
OCAgLlYuQS4uLi4uSiUuLi5JLgogICAgQkI0MDogMDIgMDEgMDIgODIgMDAgMDEgMDEgMDQgODMg
MDAgMDAgMDAgMkQgMEQgNDIgMDQgIC4uLi4uLi4uLi4uLi0uQi4KICAgIEJCNTA6IDAwIDJEIDI1
IDQxIDA0IDNFIDI1IDQxIDI4IDQ1IEE4IDAyIDAxIDAyIDgyIDAwICAuLSVBLj4lQShFLi4uLi4u
CiAgICBCQjYwOiAwMSA0QSAyNSA4MyAwMCAwMSA0OSBEMCAwMiAwMSAwMiA4MiAwMCAwMCAwNyA2
NSAgLkolLi4uSS4uLi4uLi4uZQogICAgQkI3MDogODMgMDAgRkIgMkQgMDUgMDAgMDggMDAgMDAg
MDAgMkQgMDUgMDEgMDggMDAgMDAgIC4uLi0uLi4uLi4tLi4uLi4KICAgIEJCODA6IDAwIDFCIDA1
IDQwIDAxIDNFIDA1IDAwIDJDIDAwIDMwIEMwIDQ0IDg1IDAyIDAxICAuLi5ALj4uLiwuMC5ELi4u
CiAgICBCQjkwOiAwNSBCRCAwMCAwMCA5RiAwMCAwMCA1QiA3QSAyOCAwMCAyNSAwMCAwMCAwMCA0
OSAgLi4uLi4uLlt6KC4lLi4uSQogICAgQkJBMDogMjAgMjAgMDAgNEQgNjAgNDYgMDAgNkQgNDAg
MjAgMDAgNzEgODAgNDAgMDAgNzUgICAgLk1gRi5tQCAucS5ALnUKICAgIEJCQjA6IDAwIDAwIDAw
IDc5IDAwIDAwIDAwIDdEIDAwIDY4IDAwIDAxIDQwIDBGIDAwIDBBICAuLi55Li4ufS5oLi5ALi4u
CiAgICBCQkMwOiAwMCAwMCAwMCAwMCA1MiAwMCAwMSAwMSAwMCAwMCAzNyAwMCAwMCA1MiAzRSAw
MyAgLi4uLlIuLi4uLjcuLlI+LgogICAgQkJEMDogMEMgNDEgMTQgMDAgMDEgMEEgMEEgMTUgNDEg
MzMgMEQgNDEgMDEgMDAgMUIgMEQgIC5BLi4uLi4uQTMuQS4uLi4KICAgIEJCRTA6IDQxIDA0IDE1
IDA1IDQxIDEwIDJEIDA1IDQxIDAwIEY0IDAwIEY0IDAxIDAyIDA5ICBBLi4uQS4tLkEuLi4uLi4u
CiAgICBCQkYwOiAwOCA0MSAzMyA4RCA0MSAwMCBGNCAxQiAxRCA0MSAwNyAwMSAxQSAwNiAwMCA0
MSAgLkEzLkEuLi4uQS4uLi4uQQogICAgQkMwMDogMDEgMDUgMDEgMEIgMDAgMDAgMDAgRjQgMDEg
MjUgQzkgMDAgRjQgMDEgMDUgQzQgIC4uLi4uLi4uLiUuLi4uLi4KICAgIEJDMTA6IDAwIDAwIDAw
IDAwIDAwIDVCIDExIDAxIDAxIDAxIDAwIDA0IDM3IDAwIDAwIDAzICAuLi4uLlsuLi4uLi43Li4u
CiAgICBCQzIwOiBGOSA0NiAwMCAwOCBFNSAwMCA3RiAwMyAwQSA0MSA0MiAyRCAwRCA0MSAwNCAw
MCAgLkYuLi4uLi4uQUItLkEuLgogICAgQkMzMDogMDMgOEMgNDEgMDIgMDAgMkQgMEMgNDIgMDAg
MDAgMkQgMEQgNDIgMDQgMDAgNTYgIC4uQS4uLS5CLi4tLkIuLlYKICAgIEJDNDA6IDMwIDQ2IDAz
IDA0IDQwIDAwIDAwIDNFIDA1IDQwIDAwIDAwIDAwIDAwIDQ0IDQ5ICAwRi4uQC4uPi5ALi4uLkRJ
CiAgICBCQzUwOiAwMCAzRCBGQSAwMCA0MCA0NCA1MCAwMCAzRSBBNSA0NiAwMSA0OSA1QiAwMCAz
MyAgLj0uLkBEUC4+LkYuSVsuMwogICAgQkM2MDogMUEgNDIgNDEgNDMgNjIgMDAgMDMgQTUgNDYg
MDEgM0QgMDIgMDAgNDAgNDcgNjIgIC5CQUNiLi4uRi49Li5AR2IKICAgIEJDNzA6IDAwIDJEIDFB
IDQyIDQxIDQzIDJDIDAwIDRDIEU1IDQ2IDgwIDQ0IDZBIDAwIDVCICAuLS5CQUMsLkwuRi5Eai5b
CiAgICBCQzgwOiAwMyA4QSA0MSA0MiA1NiAwMCA0MCAwMyAwQSA0MiA0MSAwMyA4QyA0MCAwMCAw
MCAgLi5BQlYuQC4uQkEuLkAuLgogICAgQkM5MDogM0UgOEQgNDAgRkYgRkYgNDQgMTAgMDEgMDMg
MjQgNDIgMDIgMDAgMDMgMjIgNDYgID4uQC4uRC4uLiRCLi4uIkYKICAgIEJDQTA6IDQyIDA5IDI1
IDQyIDNGIDNFIDI1IDQyIDA1IDQ5IEE2IDAwIDAzIDFBIDQwIDQwICBCLiVCPz4lQi5JLi4uLkBA
CiAgICBCQ0IwOiAwMyAwRCA0MiAwNCAwMCAyRCAxQSA0MiA0MSA0MyBFMSAwMCAzRSAyNSA0MiAw
NiAgLi5CLi4tLkJBQy4uPiVCLgogICAgQkNDMDogNDkgQ0QgMDAgMzMgMEQgNDEgMDMgMDAgNTYg
MDggNDIgMkQgMEQgNDAgMDEgMDAgIEkuLjMuQS4uVi5CLS5ALi4KICAgIEJDRDA6IDNFIDFBIDQw
IDQwIDQ3IDlGIDAwIDJEIDFBIDQyIDQxIDJEIDBEIDQxIDAzIDAwICA+LkBARy4uLS5CQS0uQS4u
CiAgICBCQ0UwOiA0MyAwNCAwMSAwMyAxQSA0MCA0MCAwOSAwRCA0MiAxRiAwMCAyRCAxQSA0MiA0
MSAgQy4uLi5AQC4uQi4uLS5CQQogICAgQkNGMDogNEMgMjUgNDYgODAgNDkgMDQgMDEgNTYgMTgg
NDAgNEMgMjUgNDYgNDAgNDkgRjkgIEwlRi5JLi5WLkBMJUZASS4KICAgIEJEMDA6IDAwIDAxIDAy
IDAwIDAwIDQwIDAxIDA0IDAxIDAwIDAwIDAwIDQzIDA0IDAxIDAxICAuLi4uLkAuLi4uLi5DLi4u
CiAgICBCRDEwOiAwMiA5MSAwQSA0MCAwMSAwNCA5MiAwQSAwMCAwMCAyRCAwRCA0MSAwMyAwMCAw
MyAgLi4uQC4uLi4uLi0uQS4uLgogICAgQkQyMDogOEEgNDEgNDIgNDMgNzEgMDAgNUIgMDAgMjEg
MDAgMDIgMDEgMDAgMDQgMzcgMDAgIC5BQkNxLlsuIS4uLi4uNy4KICAgIEJEMzA6IDAwIDAxIDAx
IEE0IDAwIDAxIDAxIDAxIDk0IDAwIDAwIDNDIDI1IDk1IDAwIDAxICAuLi4uLi4uLi4uLjwlLi4u
CiAgICBCRDQwOiA0OSAxMyAwMCAwMiAwMCAwMSBBNCAwMCA1QiAwMCA4RSAwMCAwMSAwMiAwMCAw
NCAgSS4uLi4uLi5bLi4uLi4uLgogICAgQkQ1MDogNjYgRkYgNTYgMDggNDcgMkQgMEQgNDIgNUMg
MDAgMDMgMjEgNDcgMDAgMDkgMjUgIGYuVi5HLS5CXC4uIUcuLiUKICAgIEJENjA6IDQ3IEYwIDQy
IDIyIDQ3IDYzIDAwIDQzIDAwIDYzIDgwIDM2IDAwIDYzIDYwIDNFICBHLkIiR2MuQy5jLjYuY2A+
CiAgICBCRDcwOiAwMCA2MyAyMCAyRSAwMCA1QSA1QSA1QiAyRCAwRCA0MiAyNiAwMCA0MyA0MyAw
MCAgLmMgLi5aWlstLkImLkNDLgogICAgQkQ4MDogMkQgMEQgNDIgMEMgMDAgNDMgNDMgMDAgMkQg
MEQgNDIgMTggMDAgMDMgMjEgNDcgIC0uQi4uQ0MuLS5CLi4uIUcKICAgIEJEOTA6IDAwIDA5IDI1
IDQ3IDA3IDJEIDBBIDQyIDQ3IDJEIDBBIDQyIDQ3IDAzIDBDIDQ4ICAuLiVHLi0uQkctLkJHLi5I
CiAgICBCREEwOiAwMCAwMCA1QiA3QSAzMiAwMCAwMCAwMCAwMCAwMiAwMCAwNCAwMCAyNiAwMCAy
OCAgLi5bejIuLi4uLi4uLiYuKAogICAgQkRCMDogMDAgMkEgMDAgMDAgMDIgMDAgMkMgMDAgMkQg
MDAgMkUgMDAgMkYgMDAgMDAgMDAgIC4qLi4uLiwuLS4uLi8uLi4KICAgIEJEQzA6IDAwIDAxIDAw
IDAyIDAwIDAzIDAwIDA0IDAwIDA1IDAwIDBBIDAwIDAwIEEwIDAwICAuLi4uLi4uLi4uLi4uLi4u
CiAgICBCREQwOiA0MCA1MSBFMCA1MSA4MCA1MiAyMCA1MyBCRiAwMiAwMiAwMiAxQyAwNCAyMCAw
NSAgQFEuUS5SIFMuLi4uLi4gLgogICAgQkRFMDogMDEgNjQgMDAgMDAgMDAgMDMgMDIgMDIgNDAg
NjYgMUYgMDIgMDQgMDEgMEMgMDAgIC5kLi4uLi4uQGYuLi4uLi4KICAgIEJERjA6IDUyIDQ1IDA4
IDA1IDAxIEZGIDAzIDAwIDAwIDNEIDBEIDAxIDAwIDAwIDQ5IDJGICBSRS4uLi4uLi49Li4uLkkv
CiAgICBCRTAwOiAwMCAwMiAwNCAwMCAyOCAwMCA1QiAwMiAwNCAwMSAxQyAwMCA1MiA0NSAwOCAw
NSAgLi4uLiguWy4uLi4uUkUuLgogICAgQkUxMDogMDEgRkYgMDAgMDAgMDAgMjAgMDUgMDEgQTAg
ODYgMDEgMDAgN0MgMDQgNDAgMjAgIC4uLi4uIC4uLi4uLnwuQCAKICAgIEJFMjA6IDAwIDdFIDA1
IDQwIEZGIDAwIDAwIDAwIDAzIDAyIDAxIDQwIDAzIDA0IDQwIDI0ICAufi5ALi4uLi4uLkAuLkAk
CiAgICBCRTMwOiAwMCAyMSAwNSA0MCBBMCA4NiAwMSAwMCAyRCAwMiAwMSA0MCAwMiBFNSAwMCAw
MSAgLiEuQC4uLi4tLi5ALi4uLgogICAgQkU0MDogNTYgMDAgMDMgMDIgMEQgMDMgMDIgMDAgNTYg
MDAgMDQgN0MgMDQgMDIgM0MgMDAgIFYuLi4uLi4uVi4ufC4uPC4KICAgIEJFNTA6IDdFIDA1IDQw
IDEwIDI3IDAwIDAwIDAyIDAyIDAxIDQwIDAyIDA0IDAyIDRDIDAwICB+LkAuJy4uLi4uQC4uLkwu
CiAgICBCRTYwOiAwMiBBNCAwMyA1NiAwMCAwMiBFNCAwMyA1QSAwMCA1MiAzNyAwMyAwMSAwNSAw
MSAgLi4uVi4uLi5aLlI3Li4uLgogICAgQkU3MDogMDMgNzEgMDMgMDMgMDMgMDQgNDAgNjQgMDAg
MjEgMDUgNDAgQTAgODYgMDEgMDAgIC5xLi4uLkBkLiEuQC4uLi4KICAgIEJFODA6IDAyIDAyIDAx
IDQwIDU1IDE4IDAzIDAyIDA0IDAyIDUwIDAwIDAyIEU0IDAzIDVCICAuLi5AVS4uLi4uUC4uLi5b
CiAgICBCRTkwOiAwMCA1MiAzNyA3QyAwNCAwMiA0MCAwMCA3RSAwNSA0MCAxMCAyNyAwMCAwMCAw
MiAgLlI3fC4uQC5+LkAuJy4uLgogICAgQkVBMDogMDIgMDIgNDAgMDIgRTQgMDMgNTcgMDAgNTIg
MzcgMDIgRTUgMDMgMDEgMDIgMDIgIC4uQC4uLlcuUjcuLi4uLi4KICAgIEJFQjA6IDAyIDAxIDUy
IDM3IDAzIDAxIDA2IDAxIDAzIEIxIDAzIDAzIDdDIDA1IDA2IEEwICAuLlI3Li4uLi4uLi58Li4u
CiAgICBCRUMwOiA4NiAwMSAwMCA3RSAwMiA0MCAwNSAwMyAwMiAwMyA0MCAwMyAwMiAwNSA0MCA0
MyAgLi4ufi5ALi4uLkAuLi5AQwogICAgQkVEMDogRkEgMDAgM0QgRTUgMDAgMDAgNDQgNjYgMDIg
M0UgMDQgMDMgMDQgMDAgNDcgMjEgIC4uPS4uLkRmLj4uLi4uRyEKICAgIEJFRTA6IDAxIDAzIDAy
IDAzIDA1IDNFIDA0IDAzIDA0IDAwIDQ3IDIxIDAxIDAzIDA0IDAzICAuLi4uLj4uLi4uRyEuLi4u
CiAgICBCRUYwOiAwNCAwMCAyRCAwNSAwMyA3MSAwMiAwMCAwMCAwMyAwNCA0MCA3QyAwMCAzRSAw
NSAgLi4tLi5xLi4uLi5AfC4+LgogICAgQkYwMDogNDAgMDAgMDAgMDAgMDAgNDQgRDkgMDEgMzMg
MDQgMDMgN0MgMDAgN0MgMDIgMDMgIEAuLi4uRC4uMy4ufC58Li4KICAgIEJGMTA6IDAzIDdFIDA1
IDQwIEEwIDg2IDAxIDAwIDAzIDAyIDQ2IDQwIDAyIDA0IDAxIDUwICAufi5ALi4uLi4uRkAuLi5Q
CiAgICBCRjIwOiAwMCAwMyAwNCA0MCA2NCAwMCAyMSAwNSA0MCBBMCA4NiAwMSAwMCAwMiAwMiAw
MiAgLi4uQGQuIS5ALi4uLi4uLgogICAgQkYzMDogNDAgMDIgMDUgMDMgMDIgMDAgMDAgMDAgMDIg
QTQgMDMgNUIgMDAgNTIgMzcgN0MgIEAuLi4uLi4uLi4uWy5SN3wKICAgIEJGNDA6IDA0IDAzIDRD
IDAwIDdFIDA1IDQwIEEwIDg2IDAxIDAwIDAyIDAyIDAyIDQwIDAyICAuLkwufi5ALi4uLi4uLkAu
CiAgICBCRjUwOiBFNCAwMyA1QSAwMCA1MiAzNyAwMiAwMiAwMiAwMSAwMiBFNSAwMyAwMSA1MiAz
NyAgLi5aLlI3Li4uLi4uLi5SNwogICAgQkY2MDogMDMgMDEgMDQgMDEgMDIgMDQgMDEgNDAgMDAg
MDIgQTQgMDMgNTcgMDAgN0MgMDQgIC4uLi4uLi5ALi4uLlcufC4KICAgIEJGNzA6IDAzIDNDIDAw
IDdFIDA1IDQwIEEwIDg2IDAxIDAwIDAyIDAyIDAyIDQwIDAyIEU0ICAuPC5+LkAuLi4uLi4uQC4u
CiAgICBCRjgwOiAwMyA1NiAwMCA1MiAzNyA3QyAwNSAwNCAxMCAyNyAwMCAwMCA3RSAwMSA0MCAw
MSAgLlYuUjd8Li4uJy4ufi5ALgogICAgQkY5MDogMDMgMDIgMDQgNDAgMDMgMDIgMDUgMDIgM0Ug
MDIgMDUgMDQgNDUgQ0UgMDEgMzMgIC4uLkAuLi4uPi4uLkUuLjMKICAgIEJGQTA6IDAyIDA1IDA0
IDQzIEUwIDAxIDMzIDAyIDA0IDA1IDAzIDAyIDA1IDA0IDQzIEUwICAuLi5DLi4zLi4uLi4uLkMu
CiAgICBCRkIwOiAwMSAwMyAwMiAwNCAwMiA1NiAwMCAwNSA3QyAwNCAwMiA3NCAwMCA3RSAwNSA0
MCAgLi4uLi5WLi58Li50Ln4uQAogICAgQkZDMDogMTAgMjcgMDAgMDAgMDMgMDIgMDQgNDAgN0Mg
MDIgNDAgNDAgMDIgMDIgMDEgNDAgIC4nLi4uLi5AfC5AQC4uLkAKICAgIEJGRDA6IDAyIDAyIDAy
IDQxIDdDIDA0IDAyIDc4IDAwIDdFIDA1IDQwIDEwIDI3IDAwIDAwICAuLi5BfC4ueC5+LkAuJy4u
CiAgICBCRkUwOiA3QyAwMiA0MCA0MCAwMiAyNSAwMyAwMSA1MiAzNyA3QyAwMiAwNSAwNSA1MiAz
NyAgfC5AQC4lLi5SN3wuLi5SNwogICAgQkZGMDogMDIgMjUgMDMgMDMgNTIgMzcgMDMgMDQgNDAg
NjggMDAgMjEgMDUgNDAgMEEgMDAgIC4lLi5SNy4uQGguIS5ALi4KICAgIEMwMDA6IDAwIDAwIDJD
IDAyIDAxIDQwIDdDIDA0IDAyIDZDIDAwIDdFIDA1IDQwIDEwIDI3ICAuLiwuLkB8Li5sLn4uQC4n
CiAgICBDMDEwOiAwMCAwMCAyQyAwMiAwMSA0MCA3QyAwNCAwMiA3MCAwMCA3RSAwNSA0MCAxMCAy
NyAgLi4sLi5AfC4ucC5+LkAuJwogICAgQzAyMDogMDAgMDAgMkMgMDIgMDEgNDAgMjYgMDUgMDEg
NjQgMDAgMDAgMDAgMjEgMDUgNDAgIC4uLC4uQCYuLmQuLi4hLkAKICAgIEMwMzA6IDY0IDAwIDAw
IDAwIDJEIDAyIDAyIDQwIDU1IDM4IDAwIDQzIDY4IDAwIDJEIDA1ICBkLi4uLS4uQFU4LkNoLi0u
CiAgICBDMDQwOiAwNSA3MCAwMiAwMCAwMCAyNyAwNSAwNSA3MSAwMiAwMCAwMCAyMSAwNSA0MCA3
MSAgLnAuLi4nLi5xLi4uIS5AcQogICAgQzA1MDogMDIgMDAgMDAgM0UgMDQgNDAgMDQgMDAgNDcg
ODkgMDIgMDIgMDQgMDAgMkMgMDAgIC4uLj4uQC4uRy4uLi4uLC4KICAgIEMwNjA6IDVCIDU2IDAw
IDAwIDAzIDMxIDAwIDAwIDMzIDI1IDAwIDAxIDAyIDAyIDAwIDQwICBbVi4uLjEuLjMlLi4uLi5A
CiAgICBDMDcwOiAwMyAwNCA0NiAwOCAwMCAwMyAwNCA0MCA4MCAwMCAxNSAyNSAwMCAwMiAyRCAw
QSAgLi5GLi4uLkAuLi4lLi4tLgogICAgQzA4MDogNDIgMDAgMjEgMDQgNDAgODQgMDAgMkQgMDIg
NDYgNDAgM0QgMDIgMDAgNDYgNDggIEIuIS5ALi4tLkZAPS4uRkgKICAgIEMwOTA6IEJFIDAyIDAy
IDAyIDAwIDQ2IDVCIDAwIDc4IDAwIDAxIDAxIDAwIDAwIDM3IDAwICAuLi4uLkZbLnguLi4uLjcu
CiAgICBDMEEwOiAwMCA1MiAxNCAwRCBBNSA1MSAxQiAwMSA1NCAyMCA1NCAxQiAwNyAyNSA0NCAx
QiAgLlIuLi5RLi5UIFQuLiVELgogICAgQzBCMDogRkUgNTQgMjAgNDUgMUIgNDIgMjkgMDAgNjMg
MDAgMzEgMDAgNjMgMDEgMzkgMDAgIC5UIEUuQikuYy4xLmMuOS4KICAgIEMwQzA6IDYzIDAyIDRE
IDAwIDVBIDVBIDQzIDcwIDAwIDAxIDI1IDQ1IDFCIDAyIDQzIDNFICBjLk0uWlpDcC4uJUUuLkM+
CiAgICBDMEQwOiAwMCAwMSAyNSA0NSAxQiAwMSA1NCAyMCA0MiAxQiA1NCAwMCA0MyAxQiA1NCAw
MCAgLi4lRS4uVCBCLlQuQy5ULgogICAgQzBFMDogNDcgMUIgNDMgNzAgMDAgMDEgMEQgNDMgMUIg
MDEgMDEgMDEgMDUgNDcgMUIgMDEgIEcuQ3AuLi5DLi4uLi5HLi4KICAgIEMwRjA6IDAwIDAxIDAw
IDBEIDY1IDQ4IDFCIDAxIDBEIDY1IDRCIDFCIDAxIDAxIDBEIDUzICAuLi4uZUguLi5lSy4uLi5T
CiAgICBDMTAwOiAxQiAxMCAxMCAwMSAyNSA0MiAxQiAwMSA1NCAzMCA1MSAxQiAzQSAwMCAwMCA1
QiAgLi4uLiVCLi5UMFEuOi4uWwogICAgQzExMDogNzQgMDAgMDEgMDEgMDAgMDAgMzcgMDAgMDAg
NEEgQTUgQ0IgMDUgMDEgNDQgMTUgIHQuLi4uLjcuLkouLi4uRC4KICAgIEMxMjA6IDAwIDAyIDY1
IDAwIDAxIDBFIDI1IDAwIDgwIDUyIDE0IDAzIDAwIDQ2IENDIDAwICAuLmUuLi4lLi5SLi4uRi4u
CiAgICBDMTMwOiAwOCAyNSAwMCAwRiA1MiAxNCA1NCAzMCA5RCAxQiAzQyA2OSA5RCAxQiAwMCA0
NCAgLiUuLlIuVDAuLjxpLi4uRAogICAgQzE0MDogNjUgMDAgMDEgNjkgOUQgMUIgMDAgM0QgNjUg
MDAgMDAgNDQgNjUgMDAgNEEgQTUgIGUuLmkuLi49ZS4uRGUuSi4KICAgIEMxNTA6IDlDIDFCIDAx
IDQ0IDY1IDAwIDRDIDI1IDQ2IDAxIDQ0IDY5IDAwIDRBIDI1IEEzICAuLi5EZS5MJUYuRGkuSiUu
CiAgICBDMTYwOiAxQiAwMSA0OSA0RCAwMCA0QSAyNSBBMyAxQiAwMSA0NCA1NSAwMCA0QSAyNSBB
MyAgLi5JTS5KJS4uLkRVLkolLgogICAgQzE3MDogMUIgMDEgNDkgNUQgMDAgM0EgMDAgMDAgNUIg
NEEgMjUgOUQgMUIgMDEgNDQgNjkgIC4uSV0uOi4uW0olLi4uRGkKICAgIEMxODA6IDAwIDQzIDY1
IDAwIDNFIDAwIDAxIDAxIDAwIDAwIDM3IDAwIDAwIDUyIDE0IDNEICAuQ2UuPi4uLi4uNy4uUi49
CiAgICBDMTkwOiA2NSAwMCAwMSA0NCAzMCAwMCAwRCA2NSA5QyAxQiAwMyAwNyAyNSA5QyAxQiBG
RSAgZS4uRDAuLmUuLi4uJS4uLgogICAgQzFBMDogNEEgQTUgOUMgMUIgMDEgNDkgMUMgMDAgMDcg
RTUgMDAgMUIgN0YgNTQgMjAgQTkgIEouLi4uSS4uLi4uLi5UIC4KICAgIEMxQjA6IDFCIDQzIDNB
IDAwIDBEIEU1IDAwIDFCIDgwIDBEIDI1IDlDIDFCIDAxIDNBIDAwICAuQzouLi4uLi4uJS4uLjou
CiAgICBDMUMwOiAwMCA1QiAyQyAwMCAwMiAwMSAwMCAwMCAzNyAwMCAwMCAzQyAyMSBGQyAwMCAw
MCAgLlssLi4uLi43Li48IS4uLgogICAgQzFEMDogNDkgMTkgMDAgMEQgQTUgQzAgMDAgMDEgNDMg
MjYgMDAgM0MgNjEgRkMgMDAgMDAgIEkuLi4uLi4uQyYuPGEuLi4KICAgIEMxRTA6IDQ5IDI2IDAw
IDBEIEE1IEMwIDAwIDAyIDBEIEE1IEMxIDAwIDAxIDVCIDIyIDAwICBJJi4uLi4uLi4uLi4uWyIu
CiAgICBDMUYwOiAwMSAwMSAwNCAwNCAwMyAzOSAwMCAwMCA1NSAzOCAwMCAyMCAwMiAwMCAwMCAw
MyAgLi4uLi45Li5VOC4gLi4uLgogICAgQzIwMDogMDQgNDEgMDAgMDAgNTYgMzggNDEgMjcgMDIg
NDAgNDEgMDIgRTIgMDAgNDAgNUIgIC5BLi5WOEEnLkBBLi4uQFsKICAgIEMyMTA6IDE5IDAwIDAx
IDAxIDAwIDA4IDM3IDAwIDAwIDUyIDE0IDAxIDAxIDVFIDFCIDAwICAuLi4uLi43Li5SLi4uXi4u
CiAgICBDMjIwOiAwMSAwMSA1RiAxQiAwMSAzQSAwMCAwMCA1QiAwMCA4MCAwMCAwMiAwMSAwMCAw
MCAgLi5fLi46Li5bLi4uLi4uLgogICAgQzIzMDogNTYgMDAgNDAgMDMgMzkgNDAgMDAgNTUgMzgg
MDAgNjYgRkYgMkQgMEQgNDIgNTAgIFYuQC45QC5VOC5mLi0uQlAKICAgIEMyNDA6IDAwIDNFIDBD
IDQwIDAyIDAwIDQ3IDI3IDAwIDJEIDBEIDQyIDA4IDAwIDQzIDE3ICAuPi5ALi5HJy4tLkIuLkMu
CiAgICBDMjUwOiAwMCAzMyAwQyA0MCAwNCAwMCAyMSAwQyA0MCAwNiAwMCAyRCAwQyA0MCAwMCAw
MCAgLjMuQC4uIS5ALi4tLkAuLgogICAgQzI2MDogNTYgMTggNDAgMDMgMDIgNDYgNDAgN0IgMDUg
MDAgNDAgNDIgMEYgMDAgN0UgMDIgIFYuQC4uRkB7Li5AQi4ufi4KICAgIEMyNzA6IDQwIDQ2IDAy
IDAyIDAwIDQwIDVCIDdBIDMwIDAwIDY0IDAwIDAwIDAwIDAwIDAwICBARi4uLkBbejAuZC4uLi4u
CiAgICBDMjgwOiAwMCAwMCBGRiBGRiAwNyAwMCAwMSAwMCAwMCAwMCBDOCAwMCAzRiAwMCAwOCAw
MCAgLi4uLi4uLi4uLi4uPy4uLgogICAgQzI5MDogMTkgMDAgNDAgMDYgNUYgMDAgNDAgMDAgMzIg
MDAgODAgMEMgN0UgMDAgNjAgMDAgIC4uQC5fLkAuMi4uLn4uYC4KICAgIEMyQTA6IDY0IDAwIDAw
IDMyIDdGIDAwIDdGIDAwIDY0IDAwIEM2IDAwIDAxIDAzIDA0IDAwICBkLi4yLi4uLmQuLi4uLi4u
CiAgICBDMkIwOiAzNyAwMCAwMCA1NiAwMCA0NiA1NiAwMCAwMCAwMyAyMSAwMCAwMCA1NSAyMCAw
MCAgNy4uVi5GVi4uLiEuLlUgLgogICAgQzJDMDogM0QgNjUgMDAgMDMgNDQgMkMgMDAgM0QgNjUg
MDAgMEQgNDYgQkIgMDAgMDIgMjkgID1lLi5ELC49ZS4uRi4uLikKICAgIEMyRDA6IDAwIDAwIDMy
IDI1IDAwIDA4IDBFIDI1IDAwIDYwIDUyIDE0IDVDIDIyIDAwIDRBICAuLjIlLi4uJS5gUi5cIi5K
CiAgICBDMkUwOiBGOCAwMCAwMiAyMiAwMCAwMCA1MiAxNCAwMyAwOCA0MSBDMCAxQSAwOSAwRCA0
MSAgLi4uIi4uUi4uLkEuLi4uQQogICAgQzJGMDogMDMgMDAgNjYgRkYgMkQgMEQgNDIgQzIgMDAg
MkQgMEEgNDIgNDEgMDMgMjQgMDAgIC4uZi4tLkIuLi0uQkEuJC4KICAgIEMzMDA6IDAwIDAwIDNE
IEUyIDAwIDAwIDQ4IEE3IDAwIDNFIDI1IDAwIDA0IDQ0IDc2IDAwICAuLj0uLi5ILi4+JS4uRHYu
CiAgICBDMzEwOiAwMyAyMiA0NiAwMCAzMyAyNSA0NiAwMSAxNSAyNSA0NiAwNCAwRiAyNSA0NiAw
MSAgLiJGLjMlRi4uJUYuLiVGLgogICAgQzMyMDogMzMgMzkgMDAgMDAgM0UgMjUgMDAgMDEgNDQg
OTMgMDAgM0UgMjUgMDAgMDIgNDQgIDM5Li4+JS4uRC4uPiUuLkQKICAgIEMzMzA6IDhDIDAwIDAz
IDI1IDQ2IDIxIDAzIDY1IDAwIDJGIDQzIDk3IDAwIDAzIDY1IDAwICAuLi4lRiEuZS4vQy4uLmUu
CiAgICBDMzQwOiAxMyAwMyA3OSA0NiAwMCAzMyA2NSA0NiAwMSAxNSAyRCA0NiAwMyAwRiA2NSA0
NiAgLi55Ri4zZUYuLi1GLi5lRgogICAgQzM1MDogMDEgNTIgMTQgMDEgMDIgRjIgMUIgNDYgMDEg
NTIgRUUgMUIgMDAgNTQgMDAgRjkgIC5SLi4uLi5GLlIuLi5ULi4KICAgIEMzNjA6IDFCIDU0IDAw
IEVEIDFCIDNBIDAwIDAwIDVCIDdBIDA0IDAwIDAzIDAyIDAxIDA0ICAuVC4uLjouLlt6Li4uLi4u
CiAgICBDMzcwOiBBRiAwMSAwMSAwNCAwMCAwOCAzNyAwMCAwMCAzRCA2NSAwMiAwMSA0OSA0NCAw
MSAgLi4uLi4uNy4uPWUuLklELgogICAgQzM4MDogNEIgQTUgMDIgMDMgNDkgNUQgMDAgMDIgMDUg
MDAgMDAgMDMgMDAgMDUgMDIgMDUgIEsuLi5JXS4uLi4uLi4uLi4KICAgIEMzOTA6IDAxIDAwIDA1
IDAyIDAwIDNDIDIxIEZDIDAwIDAyIDQ5IDU3IDAwIDAxIDhEIEMwICAuLi4uLjwhLi4uSVcuLi4u
CiAgICBDM0EwOiAwMCAwMCAwMiA1MSAwMiAwMSAwNSBDNiAwMCAwMCAwMCAxMCAwMCAwMSAwNSBD
OCAgLi4uUS4uLi4uLi4uLi4uLgogICAgQzNCMDogMDAgMDAgMDAgNTAgMDAgMDEgMEQgQzMgMDAg
MDIgMDAgNTQgMjAgQ0EgMDAgMDEgIC4uLlAuLi4uLi4uVCAuLi4KICAgIEMzQzA6IDA1IEMyIDAw
IDAwIDAxIDAwIDAwIDU2IDIwIDQwIDQzIDgzIDAwIDBFIDI1IDAyICAuLi4uLi4uViBAQy4uLiUu
CiAgICBDM0QwOiA4MCA1MiAxNCA1NCAwMCBDQyAwMCA1NiAwOCA0OCAwOCAyNSAwMiAwNyAwRCAy
NSAgLlIuVC4uLlYuSC4lLi4uJQogICAgQzNFMDogQ0EgMDAgMDEgMDEgMjUgQzIgMDAgMDEgNTQg
MDAgQzYgMDAgNTQgMDAgQzggMDAgIC4uLi4lLi4uVC4uLlQuLi4KICAgIEMzRjA6IDU2IDIwIDQw
IDNEIEE1IDAxIDAwIDQ5IDhGIDAwIDBEIDI1IEMyIDAwIDEwIDA3ICBWIEA9Li4uSS4uLiUuLi4u
CiAgICBDNDAwOiA2NSBEMCAwNSBGRSAzRCBBNSAwMSAwMSA0NyBBMCAwMCAwRCA2NSBEMCAwNSAw
MSAgZS4uLj0uLi5HLi4uZS4uLgogICAgQzQxMDogMDMgQTAgNDAgQzkgMDAgMDMgMDAgNDYgQzQg
MDAgMDMgMDIgNDEgNDYgMkQgMDAgIC4uQC4uLi5GLi4uLkFGLS4KICAgIEM0MjA6IDQ2IEM2IDAw
IDJEIDAwIDQxIEM4IDAwIDUyIDE0IDAxIDMyIDA3IDFBIDQwIDAxICBGLi4tLkEuLlIuLjIuLkAu
CiAgICBDNDMwOiAzMiAwOCAxQSA0MCAwMSAwMiAwNCAxQSA0NiAwMSAwMiAwNSAxQSA0MSA1NCAz
MCAgMi4uQC4uLi5GLi4uLkFUMAogICAgQzQ0MDogQzEgMUEgNTQgMDAgNUMgMUIgMDEgMDEgNUQg
MUIgMDAgNTQgMDggMDkgMUEgNTQgIC4uVC5cLi4uXS4uVC4uLlQKICAgIEM0NTA6IDA4IDBBIDFB
IDU0IDA4IDBCIDFBIDU0IDA4IDBDIDFBIDAxIDA5IDBFIDFBIDAwICAuLi5ULi4uVC4uLi4uLi4u
CiAgICBDNDYwOiAwMSAxOSAwRCAxQSAwMCA1QyAxOSAwMSAxQSBGQyBGOCAwMSA1QyBBNSAwMSAx
QSAgLi4uLi5cLi4uLi4uXC4uLgogICAgQzQ3MDogMEYgMTAgMDEgMDkgMDYgMUEgMDEgMDEgMjUg
MDAgMUEgMDEgMEQgMjUgQjMgMUIgIC4uLi4uLi4uJS4uLi4lLi4KICAgIEM0ODA6IDA0IDVDIDYy
IEIzIDFCIEZFIDQwIDU0IDIwIDM1IDFBIDU0IDIwIDNDIDFBIDU0ICAuXGIuLi5AVCA1LlQgPC5U
CiAgICBDNDkwOiAwMCBDQSAxQiA1NCAwMCBDOCAxQiA1NCAwMCBDQyAxQiA0QiBBNSAwMiAwMyA0
OSAgLi4uVC4uLlQuLi5LLi4uSQogICAgQzRBMDogNDAgMDEgMEUgMjUgMDIgODAgNTIgMTQgMDEg
MDUgQ0MgMDAgMDEgMDAgMDAgMDAgIEAuLiUuLlIuLi4uLi4uLi4KICAgIEM0QjA6IDNBIDAwIDAw
IDVCIDUyIDE0IDNEIDY1IDAyIDAwIDQ5IDYxIDAxIDU0IDIwIDAwICA6Li5bUi49ZS4uSWEuVCAu
CiAgICBDNEMwOiAxQSAzQSAwMCAwMCAzQyAyMSBGQyAwMCAwMiA0OSA2MCAwMSA1NCAwOCBDMSAw
MCAgLjouLjwhLi4uSWAuVC4uLgogICAgQzREMDogNUIgM0QgNjUgMDIgMTAgNDQgNkUgMDEgMDEg
MDkgMDYgMUEgMDEgNUIgMDMgMDAgIFs9ZS4uRG4uLi4uLi5bLi4KICAgIEM0RTA6IDQwIDA0IDFB
IDA5IDA1IDQwIDAwIDAwIDAwIEZEIDJEIDAxIDQwIDAwIDA5IDBEICBALi4uLkAuLi4uLS5ALi4u
CiAgICBDNEYwOiA0MCAwMCBGMCAwMSAwMiAwNCAxQSA0MCAwOCAwRCAwMCBGRiAwRiA1NiAwMCA0
MSAgQC4uLi4uLkAuLi4uLlYuQQogICAgQzUwMDogMDMgMzEgNDEgMDEgNzQgMEEgMDAgNDEgMkMg
MDkgMDEgMDAgMDggMjUgMDAgRkMgIC4xQS50Li5BLC4uLi4lLi4KICAgIEM1MTA6IDE0IDA1IDAw
IDEwIDAxIDAxIDVDIDFCIDAwIDAxIDA5IDBEIDFBIDAxIDVCIDAwICAuLi4uLi5cLi4uLi4uLlsu
CiAgICBDNTIwOiA0RSAwMCAwMSAwMSAwMCAwMCAzNyAwMCAwMCA1MiAxNCAwNyA2NSBCNiAxQiBG
RSAgTi4uLi4uNy4uUi4uZS4uLgogICAgQzUzMDogM0QgNjUgMDAgMDEgNDQgMzcgMDAgNTQgMzAg
NkUgMUEgNTQgMzAgMTEgMUEgNTQgID1lLi5ENy5UMG4uVDAuLlQKICAgIEM1NDA6IDIwIEI1IDFC
IDU0IDIwIEJEIDFCIDU0IDMwIEJEIDFCIDRBIDI1IEI2IDFCIDAxICAgLi5UIC4uVDAuLkolLi4u
CiAgICBDNTUwOiA0OSAyQiAwMCAzQSAwMCAwMCA1QiAwRCAyNSBCRCAxQiAwMSA1NCAwMCA5RSAx
QiAgSSsuOi4uWy4lLi4uVC4uLgogICAgQzU2MDogMDcgMjUgQzAgMUEgRjQgMEQgMjUgMDMgMUIg
MDQgM0EgMDAgMDAgNUIgRDkgMDAgIC4lLi4uLiUuLi46Li5bLi4KICAgIEM1NzA6IDAxIDAzIDAw
IDAwIDM3IDAwIDAwIDUyIDE0IDU0IDIwIDc4IDFBIDU0IDAwIDgwICAuLi4uNy4uUi5UIHguVC4u
CiAgICBDNTgwOiAxQSAzRCA2NSAwMCAwMSA0OSA5QSAwMCA0QSAyNSAwMSAxQSAwMyA0NCA1OSAw
MCAgLj1lLi5JLi5KJS4uLkRZLgogICAgQzU5MDogMEQgMjUgN0UgMUEgMDcgMDEgMjUgN0YgMUEg
MDEgNTEgMDEgNEEgMjUgN0YgMUEgIC4lfi4uLiUuLi5RLkolLi4KICAgIEM1QTA6IDAyIDQ0IDJD
IDAwIDU0IDIwIDdGIDFBIDU0IDA4IDgxIDFBIDU0IDA4IDgyIDFBICAuRCwuVCAuLlQuLi5ULi4u
CiAgICBDNUIwOiA1NCAwOCA4MyAxQSAwMSAwRCA4NCAxQSBGRiBGRiAwMSAwRCA4NSAxQSBGRiBG
RiAgVC4uLi4uLi4uLi4uLi4uLgogICAgQzVDMDogMDEgMEQgODYgMUEgRkYgRkYgNUIgNTQgMDAg
NzkgMUEgNjYgMDUgMkQgMEQgNDIgIC4uLi4uLltULnkuZi4tLkIKICAgIEM1RDA6IDA0IDAwIDU2
IDAwIDQxIDAzIDI0IDQwIDAwIDAwIDE1IDA1IDQwIDBBIDAzIDI0ICAuLlYuQS4kQC4uLi5ALi4k
CiAgICBDNUUwOiA0MCAwMSAwMCAxNSAwNSA0MCAwQSAwMyAyNCA0MCAwMiAwMCAxNSAwNSA0MCAw
NCAgQC4uLi5ALi4kQC4uLi5ALgogICAgQzVGMDogMDEgMDIgN0MgMUEgNDAgMkQgMEQgNDIgMDMg
MDAgMkQgMEQgNDEgMDEgMDAgM0UgIC4ufC5ALS5CLi4tLkEuLj4KICAgIEM2MDA6IDBEIDQxIDAw
IDAxIDQ1IDY3IDAwIDVCIDAxIDMxIDc5IDFBIDAwIDU2IDAwIDQxICAuQS4uRWcuWy4xeS4uVi5B
CiAgICBDNjEwOiAwMyAxOSA0MSAwMSAzQiAwMiA0MSAzRCA2NSAwMCAwMiA0OSBCQyAwMCAwMyAw
MCAgLi5BLjsuQT1lLi5JLi4uLgogICAgQzYyMDogNDAgN0MgMUEgMDQgMDIgMDAgNDAgNDMgQzUg
MDAgMDMgMDMgNDAgMDAgMDEgMDIgIEB8Li4uLkBDLi4uLkAuLi4KICAgIEM2MzA6IDdDIDFBIDQw
IDJEIDA1IDQ2IDA0IDAwIDAwIDAwIDJEIDhEIDQxIDAxIDAwIDNFICB8LkAtLkYuLi4uLS5BLi4+
CiAgICBDNjQwOiA4OSA0MSAwMSA0NSBBOSAwMCA1QiAwMCAzRCAwMCAwMSAwMSAwMCAwNCAzNyAw
MCAgLkEuRS4uWy49Li4uLi43LgogICAgQzY1MDogMDAgNTYgMDAgNDAgMDMgMzggNDAgOUEgMEEg
MjEgMDUgNDAgRTIgMDQgMDAgMDAgIC5WLkAuOEAuLiEuQC4uLi4KICAgIEM2NjA6IDAyIDAyIDAw
IDQwIDAzIDAwIDQwIDk5IDBBIDFCIDA1IDQwIDE0IDA5IDBEIDQwICAuLi5ALi5ALi4uLkAuLi5A
CiAgICBDNjcwOiAwNyAwMCAyMSAwNSA0MCAwOSAzRCAwMCAwMCAyNyAwNSA0MCA2NCAwMCAwMCAw
MCAgLi4hLkAuPS4uJy5AZC4uLgogICAgQzY4MDogMkMgMDIgMDAgNDAgNUIgMDAgQ0QgMDAgMDEg
MDEgMEMgMDAgMzcgMDAgMDAgMDEgICwuLkBbLi4uLi4uLjcuLi4KICAgIEM2OTA6IDA1IDgyIDAw
IDJDIDAwIDUwIEMwIDRBIDI1IDgzIDAwIDAxIDQ5IDMwIDAwIDAyICAuLi4sLlAuSiUuLi5JMC4u
CiAgICBDNkEwOiAwNSAwMCA0MCA3RSAwNSAwMCAwMSAwNSA4MiAwMCBCNCAwMCA1MCBDMCAwMiBF
OCAgLi5Afi4uLi4uLi4uUC4uLgogICAgQzZCMDogMDAgODMgMDAgNTIgMjkgNUIgMDMgMDUgMDAg
QUMgMDIgNTAgQzAgMDMgMDUgMDEgIC4uLlIpWy4uLi4uUC4uLi4KICAgIEM2QzA6IDhDIDAyIDUw
IEMwIDAzIDA1IDAyIDc4IDAyIDUwIEMwIDAxIDA1IDgyIDAwIDQwICAuLlAuLi4ueC5QLi4uLi5A
CiAgICBDNkQwOiAwMyA1MCBDMCA0QSAyNSA4MyAwMCAwMSA0NCA2QSAwMCAwMyAwNSAwMCAyOCAw
MyAgLlAuSiUuLi5Eai4uLi4oLgogICAgQzZFMDogNTAgQzAgMDMgMDUgMDEgMDggMDMgNTAgQzAg
MDMgMDUgMDIgRjQgMDIgNTAgQzAgIFAuLi4uLi5QLi4uLi4uUC4KICAgIEM2RjA6IDAxIDAyIDgy
IDAwIDAyIDRBIDA1IDgzIDAwIDgwIDAwIDAwIDAwIDQ0IDgxIDAwICAuLi4uLkouLi4uLi4uRC4u
CiAgICBDNzAwOiAyRCAwNSAwMSAxMCAwMCAwMCAwMCAwMSAwMiA4MiAwMCAwMSA1NiAwMCA0MCAw
MyAgLS4uLi4uLi4uLi4uVi5ALgogICAgQzcxMDogMTggNDAgODMgMDAgMjEgMDUgNDAgMTAgMjcg
MDAgMDAgMDMgMDIgNDYgNDAgNTYgIC5ALi4hLkAuJy4uLi5GQFYKICAgIEM3MjA6IDAwIDQwIDAz
IDA4IDQwIDgzIDAwIDIxIDA1IDQwIDEwIDI3IDAwIDAwIDI3IDA1ICAuQC4uQC4uIS5ALicuLicu
CiAgICBDNzMwOiA0MCAwMCAwMCAwMSAwMCAyRCAwMiA0NiA0MCAwMSAwMiA4MiAwMCAwMCA1NiAw
MCAgQC4uLi4tLkZALi4uLi5WLgogICAgQzc0MDogNDAgMDMgMjAgNDAgODMgMDAgMDkgMjUgNDAg
MEYgNzUgMDIgNDYgNDAgMDIgMDIgIEAuIEAuLi4lQC51LkZALi4KICAgIEM3NTA6IDAwIDQ2IDVC
IDAwIDUzIDAxIDAyIDAzIDAwIDE4IDM3IDAwIDAwIDY2IEZGIDJEICAuRlsuUy4uLi4uNy4uZi4t
CiAgICBDNzYwOiAwRCA0MiA0NyAwMSA1NSAyOCAwNSAyRCAwOSA0MiAwNSAyRCAwOSA0MiAwNSAw
MyAgLkJHLlUoLi0uQi4tLkIuLgogICAgQzc3MDogMEMgNDggMDAgMDAgMDMgMDkgNDEgMDMgMkQg
MTkgNDEgMDMgM0UgMEQgNDEgMDMgIC5ILi4uLkEuLS5BLj4uQS4KICAgIEM3ODA6IDAwIDQ2IDNG
IDAwIDVDIDA1IEIzIDFCIEZCIDBGIEYwIEZGIDAwIDMwIDAwIDAwICAuRj8uXC4uLi4uLi4uMC4u
CiAgICBDNzkwOiA0MyA0QiAwMCA1QyAwNSBCMyAxQiBGRiAwRiBGMCBGRiAwNCA0MCAwMCAwMCAw
MyAgQ0suXC4uLi4uLi4uQC4uLgogICAgQzdBMDogMDkgNDEgMDAgMkQgMTkgNDEgMDAgMzMgMEQg
NDEgMDEgMDAgMDEgMEEgODAgMUIgIC5BLi0uQS4zLkEuLi4uLi4KICAgIEM3QjA6IDQxIDU0IDA4
IDgyIDFCIDAxIDk5IDgyIDFCIDAyIDAzIDE5IDQxIDAwIDMzIDA5ICBBVC4uLi4uLi4uLi5BLjMu
CiAgICBDN0MwOiA0MSAwMiA1NiAxOCA0MSAwMyBCMSA0MSAwNCAzMyAxQSA0MSA0MSAwMSA4QSA4
MSAgQS5WLkEuLkEuMy5BQS4uLgogICAgQzdEMDogMUIgNDEgMDMgMTkgNDEgMDAgMzMgMDkgNDEg
MDIgMkQgMUEgNDEgNDEgMkQgMDkgIC5BLi5BLjMuQS4tLkFBLS4KICAgIEM3RTA6IDQxIDAwIDRC
IDI1IDA0IDEwIDQ0IDk5IDAwIDJEIDA5IDQxIDAwIDAxIDBBIDgxICBBLkslLi5ELi4tLkEuLi4u
CiAgICBDN0YwOiAxQiA0MSAwMyAyMSA0MSAwNCAwOSAyNSA0MSAwMiAxQiAyNSA0MSAwMSAwMSAy
MiAgLkEuIUEuLiVBLi4lQS4uIgogICAgQzgwMDogODMgMUIgNDEgNTQgMDAgNUUgMUIgMDEgMzEg
NUUgMUIgMDQgMDEgQjEgNUUgMUIgIC4uQVQuXi4uMV4uLi4uXi4KICAgIEM4MTA6IDA0IDAzIDA5
IDQxIDAxIDJEIDE5IDQxIDAxIDMzIDBEIDQxIDAxIDAwIDAxIDBBICAuLi5BLi0uQS4zLkEuLi4u
CiAgICBDODIwOiA4NyAxQiA0MSA1NCAwOCA4RSAxQiAwMSA5OSA4RSAxQiAwMyAwMyAxOSA0MSAw
MSAgLi5BVC4uLi4uLi4uLi5BLgogICAgQzgzMDogMzMgMDkgNDEgMDMgNTYgMTggNDEgMDMgQjkg
NDEgMDQgMzMgMUEgNDEgNDEgMDEgIDMuQS5WLkEuLkEuMy5BQS4KICAgIEM4NDA6IDhBIDhEIDFC
IDQxIDAzIDE5IDQxIDAxIDMzIDA5IDQxIDAzIDJEIDFBIDQxIDQxICAuLi5BLi5BLjMuQS4tLkFB
CiAgICBDODUwOiAyRCAwOSA0MSAwMSA0QiAyNSAwNCAyMCA0NCAwQiAwMSAyRCAwOSA0MSAwMSAw
MSAgLS5BLkslLiBELi4tLkEuLgogICAgQzg2MDogMEEgOEQgMUIgNDEgMDMgMjEgNDEgMDQgMDkg
MjUgNDEgMDQgMUIgMjUgNDEgMDIgIC4uLkEuIUEuLiVBLi4lQS4KICAgIEM4NzA6IDAxIDIyIDhG
IDFCIDQxIDU0IDAwIDVGIDFCIDAxIDM5IDVGIDFCIDA0IDAxIEI5ICAuIi4uQVQuXy4uOV8uLi4u
CiAgICBDODgwOiA1RiAxQiAwNCAwMyAyMSA0MSAwNCAwOSAyNSA0MSA4MCAxQiAyNSA0MSAwNyAw
MSAgXy4uLiFBLi4lQS4uJUEuLgogICAgQzg5MDogMjIgOUUgMUIgNDEgM0EgMDAgMDAgNUIgN0Eg
MEMgMDAgMDAgMDAgMDAgMDIgMDAgICIuLkE6Li5bei4uLi4uLi4KICAgIEM4QTA6IDA0IDAwIDI2
IDAwIDI4IDAwIDJBIDAwIEJFIDAwIDAxIDAxIDAwIDA0IDM3IDAwICAuLiYuKC4qLi4uLi4uLjcu
CiAgICBDOEIwOiAwMCAwMyBBMSA0MCAwMCAzRCBBNSAwMCAwMCA0OSA0OSAwMCA2NiAwNCAwMyAy
NCAgLi4uQC49Li4uSUkuZi4uJAogICAgQzhDMDogNDAgNTggMDAgM0UgMjUgNDAgRkYgNDkgQUUg
MDAgNTUgMDAgMDEgMDIgMjUgMDEgIEBYLj4lQC5JLi5VLi4uJS4KICAgIEM4RDA6IDI4IDUyIDA5
IDAyIDBEIDAxIDI5IDAxIDUyIDA5IDAyIDBEIDAxIDJBIDAyIDUyICAoUi4uLi4pLlIuLi4uKi5S
CiAgICBDOEUwOiAwOSAwMiAwRCAwMSAyQiAwMyA1MiAwOSAwMyBCMSA0MCAwMSAwMSBCMSAwQSAx
NSAgLi4uLisuUi4uLkAuLi4uLgogICAgQzhGMDogMDEgNjYgMUMgMDMgNjQgNDAgMTAgMDAgNTYg
MjAgNDAgMkQgMEQgNDIgMTQgMDAgIC5mLi5kQC4uViBALS5CLi4KICAgIEM5MDA6IDU0IDMwIENE
IDA1IDNFIEE0IDQwIDBBIDAwIDQ5IDkzIDAwIDNEIEE1IDAwIDAwICBUMC4uPi5ALi5JLi49Li4u
CiAgICBDOTEwOiA0NCBBRSAwMCAwMyAyNCA0MSAxQyAwMCAwMyA3MSA0MSAwMCAwOSAwRCA0MSAw
RiAgRC4uLiRBLi4ucUEuLi5BLgogICAgQzkyMDogMEYgM0UgNjIgNDEgNDEgNDkgOTMgMDAgMDEg
QTIgQ0QgMDUgNDAgMDEgNjQgODAgIC4+YkFBSS4uLi4uLkAuZC4KICAgIEM5MzA6IDBBIDFDIDAw
IDNEIEE0IDAwIDFDIDAwIDQ0IEFFIDAwIDJEIDBDIDQyIDA0IDAwICAuLi49Li4uLkQuLi0uQi4u
CiAgICBDOTQwOiAyRCAyNSA0MCAwMSAzRSA2MiA0MCA0MCA0OSA1QyAwMCAwMSBGMSAwQSAxNSAw
MCAgLSVALj5iQEBJXC4uLi4uLgogICAgQzk1MDogMEQgQTUgMEEgMTUgODAgNUIgMDEgQTIgQ0Qg
MDUgNDAgMDEgNjQgODAgMEEgMUMgIC4uLi4uWy4uLi5ALmQuLi4KICAgIEM5NjA6IDAwIDU0IDE4
IDBBIDE1IDVCIDBBIDAwIDAxIDAxIDA4IDAwIDM3IDAwIDAwIDVCICAuVC4uLlsuLi4uLi43Li5b
CiAgICBDOTcwOiAxQSAwMCAwMSAwMSAwMCAwNCAzNyAwMCAwMCAwMSAwNSBFNSAwOSBGQyBGRCBG
QyAgLi4uLi4uNy4uLi4uLi4uLgogICAgQzk4MDogRkMgMDEgMDUgRTYgMDkgRkQgRjggRkMgRkMg
NUIgMzEgMDIgMDEgMDEgMDAgMDggIC4uLi4uLi4uLlsxLi4uLi4KICAgIEM5OTA6IDM3IDAwIDAw
IDBEIDI1IEY0IDE2IDA4IDA3IDI1IDYyIDE4IEZFIDU2IDAwIDQxICA3Li4uJS4uLi4lYi4uVi5B
CiAgICBDOUEwOiAwMyAzOSA0MSAwMSAwOSAyNSA0MSAwRiAwMyAwQSA0MCA0MiA2NiBGRiAyRCAw
RCAgLjlBLi4lQS4uLkBCZi4tLgogICAgQzlCMDogNDIgMTEgMDIgMTUgMjUgNDEgMDIgMkQgMEEg
NDIgNDEgMDMgMEMgNDEgMDAgMDAgIEIuLi4lQS4tLkJBLi5BLi4KICAgIEM5QzA6IDAxIDAyIDAw
IDAwIDQxIDA3IEE1IDAxIDAwIEZFIDU0IDA4IDAxIDAwIDAxIDBDICAuLi4uQS4uLi4uVC4uLi4u
CiAgICBDOUQwOiBGQiAxNiAwMiAwMCAwMyAwQSA0MiA0MCAwMyAwNSA0MCA1MCBDMyAwMCAwMCA1
NiAgLi4uLi4uQkAuLkBQLi4uVgogICAgQzlFMDogMDAgNDEgMDMgMjEgNDEgMDAgMjcgMDIgNDAg
NDEgMDEgOEEgRjcgMTYgNDAgMDEgIC5BLiFBLicuQEEuLi4uQC4KICAgIEM5RjA6IDI1IEY3IDE2
IDAyIDBEIDI1IEY1IDE2IDAyIDAxIEE5IEY5IDE2IDAxIDRCIDI1ICAlLi4uLiUuLi4uLi4uLksl
CiAgICBDQTAwOiAwMSAwMSA0OSA3RiAwMCA1NCAzMCBGOSAxNiAwMSAwRCBGOSAxNiAwMCAzMSAy
QiAgLi5JLi5UMC4uLi4uLi4xKwogICAgQ0ExMDogQTUgRjkgMTYgMDEgNEIgMjUgMDEgMDIgNDQg
OTYgMDAgMkIgQTUgRjkgMTYgMDEgIC4uLi5LJS4uRC4uKy4uLi4KICAgIENBMjA6IDU2IDAwIDQx
IDAzIDcxIDQxIDAxIDBGIEU1IDQxIDgwIDAxIDAyIEZBIDE2IDQxICBWLkEucUEuLi5BLi4uLi5B
CiAgICBDQTMwOiAwMyA2OSA0MSAwMCAyRCBBNSA0MSAwMSAwMSAwMiBGQSAxNiA0MSA0QiAyNSAw
MSAgLmlBLi0uQS4uLi4uQUslLgogICAgQ0E0MDogMDIgNDQgQzYgMDAgNTYgMjggNDEgMkQgQTUg
NDEgMDEgMDEgMDIgRkEgMTYgNDEgIC5ELi5WKEEtLkEuLi4uLkEKICAgIENBNTA6IDRCIDI1IDAx
IDAxIDQ0IEU3IDAwIDAzIDcxIDQxIDAwIDJEIEE1IDQxIDAxIDAxICBLJS4uRC4uLnFBLi0uQS4u
CiAgICBDQTYwOiAwMiBGQSAxNiA0MSAwMyA3OSA0MSAwMCAyRCBBNSA0MSAwMSAwMSAwMiBGQSAx
NiAgLi4uQS55QS4tLkEuLi4uLgogICAgQ0E3MDogNDEgMEQgMjUgRjQgMTYgMDEgMDMgQTUgNDEg
MDEgNDMgQkEgMDEgMDMgMjkgNDAgIEEuJS4uLi4uQS5DLi4uKUAKICAgIENBODA6IDAxIDAzIDY1
IDQwIDAxIDAzIDk5IDQwIDAwIDU2IDAwIDQxIDAzIDcxIDQxIDAxICAuLmVALi4uQC5WLkEucUEu
CiAgICBDQTkwOiAwRiA2NSA0MSAwMSAwRiBFNSA0MSA4MCAwMSAwMiBGQSAxNiA0MSAwMSBBNSBG
OSAgLmVBLi4uQS4uLi4uQS4uLgogICAgQ0FBMDogMTYgMDQgM0QgNjUgMDEgMDQgNDcgMjggMDEg
MDEgMEQgRjkgMTYgMDEgMTMgNDMgIC4uPWUuLkcoLi4uLi4uLkMKICAgIENBQjA6IDU3IDAxIDAx
IEEyIEY5IDE2IDQwIDAxIDBEIEY5IDE2IDAxIDMxIDQzIDU3IDAxICBXLi4uLi5ALi4uLi4xQ1cu
CiAgICBDQUMwOiAwNyA2NSBGOSAxNiBFRiAwMSBBNSBGOSAxNiAwMyAzRSAyNSA0MCAwNCA0NiA1
NyAgLmUuLi4uLi4uLj4lQC5GVwogICAgQ0FEMDogMDEgMDEgQTIgRjkgMTYgNDAgMzEgQTUgRjkg
MTYgMDEgNUMgNjUgRjkgMTYgRkQgIC4uLi4uQDEuLi4uXGUuLi4KICAgIENBRTA6IDIwIDBEIDI1
IEY0IDE2IDAxIDAzIEE1IDQxIDAwIDQzIEJBIDAxIDAzIDA1IDQxICAgLiUuLi4uLkEuQy4uLi5B
CiAgICBDQUYwOiAwMSAwMCAwMCA4MCAwMyBBQSA0MSA0MCAwMSAwMiBGQSAxNiA0MSAzRCA2NSAw
MSAgLi4uLi4uQUAuLi4uQT1lLgogICAgQ0IwMDogMDEgNDkgODIgMDEgMDIgQTggMDAgRkEgMTYg
NDMgRjkgMDEgNTYgMDAgNDEgMDMgIC5JLi4uLi4uLkMuLlYuQS4KICAgIENCMTA6IDFBIDQxIDQw
IDNCIDAyIDQxIDAzIDI4IDQxIEZBIDE2IDAzIDY4IDQxIEZBIDE2ICAuQUA7LkEuKEEuLi5oQS4u
CiAgICBDQjIwOiAwMyBBOCA0MSBGQSAxNiAwMyBFOCA0MSBGQSAxNiAwNCAwMiAwMCA0MSA1NiAy
OCAgLi5BLi4uLkEuLi4uLkFWKAogICAgQ0IzMDogNDAgMkQgOEQgNDAgMDQgMDAgM0UgMjUgNDAg
MDQgNDcgRjkgMDEgMzMgMjUgNDAgIEAtLkAuLj4lQC5HLi4zJUAKICAgIENCNDA6IDA0IDQzIDM2
IDAxIDAyIDY1IDAwIDAyIDAzIDBEIDQxIDY0IDAwIDMzIDBEIDQxICAuQzYuLmUuLi4uQWQuMy5B
CiAgICBDQjUwOiAwMSAwMCAzRSAwRCA0MSAwMCAwMCA0NCBGOSAwMSA1MSA2NCA0QSAyNSBGNiAx
NiAgLi4+LkEuLkQuLlFkSiUuLgogICAgQ0I2MDogMTAgNDQgQzMgMDEgNEEgNjUgRjYgMTYgMDYg
NDkgRjkgMDEgMDIgNjUgMDAgMDEgIC5ELi5KZS4uLkkuLi5lLi4KICAgIENCNzA6IDBEIDI1IEY1
IDE2IDAyIDNFIEE1IDQxIDAwIDQ0IDYzIDAxIDRCIDI1IDAxIDAxICAuJS4uLj4uQS5EYy5LJS4u
CiAgICBDQjgwOiA0NCBGMyAwMCAwRCAyNSBGNSAxNiAwMiAwMSAyNSBGNCAxNiAwMiA1MSAwMSA1
NCAgRC4uLiUuLi4uJS4uLlEuVAogICAgQ0I5MDogMDAgRjQgMTYgNTQgMDAgRkIgMTYgNUIgN0Eg
MjAgMDAgNjggNDggMDEgMDAgNkMgIC4uLlQuLi5beiAuaEguLmwKICAgIENCQTA6IDQ4IDAzIDAy
IDcwIDQ4IDA1IDA0IDc0IDQ4IDQyIDQxIDc4IDQ4IDQ5IDQ4IDdDICBILi5wSC4udEhCQXhISUh8
CiAgICBDQkIwOiA0OCA0QiA0QSA5OCA0OCAyOSAyOCA4MCA0OCA0RCA0QyAwMCA1RiAwMCAwMiAw
MiAgSEtKLkgpKC5ITUwuXy4uLgogICAgQ0JDMDogMDAgMDQgMzcgMDAgMDAgM0QgNjUgMDAgMDEg
NDQgNTQgMDAgNTUgMzAgMDAgM0QgIC4uNy4uPWUuLkRULlUwLj0KICAgIENCRDA6IDI1IDAwIDA2
IDQ2IDUwIDAwIDMyIDI1IDAwIDAxIDIwIDI1IDAwIDA4IDU2IDA4ICAlLi5GUC4yJS4uICUuLlYu
CiAgICBDQkUwOiA0OCAwMyAyMiA0OCA0MCAwRCBBNSA5OSAxOCAwMSAwMiBBMCAwMCA5OCAxOCAw
OCAgSC4iSEAuLi4uLi4uLi4uLgogICAgQ0JGMDogQTUgMDAgMDMgNEEgMjUgOTggMTggMDIgNDQg
NEEgMDAgNUMgMEQgOTkgMTggRkYgIC4uLkolLi4uREouXC4uLi4KICAgIENDMDA6IEZFIDAxIDAw
IDQzIDUwIDAwIDBEIDBEIDk5IDE4IDAxIDAxIDNBIDAwIDAwIDVCICAuLi5DUC4uLi4uLi46Li5b
CiAgICBDQzEwOiAwRCA2NSBDRiAwNSAwOCAwRCAyNSA4MCAwMSAwMSA1QiAwMCAwQSAwMCAwMSAw
MiAgLmUuLi4uJS4uLlsuLi4uLgogICAgQ0MyMDogMDAgMDAgNUIgN0EgMDAgMDAgMEEgMDAgMDEg
MDEgMDAgMDQgNTUgMDAgMDAgNUIgIC4uW3ouLi4uLi4uLlUuLlsKICAgIENDMzA6IDNDIDAwIDAx
IDAxIDAwIDAwIDU1IDAwIDAwIDU1IDAwIDAxIDAxIDA1IDkxIDBBICA8Li4uLi5VLi5VLi4uLi4u
CiAgICBDQzQwOiAwMyAwMCAwMCAwMCAwMiAzOCAwMCA5MiAwQSAwMiAyMSAwMSAwMCAwOCAyNSAw
MCAgLi4uLi44Li4uLiEuLi4lLgogICAgQ0M1MDogMEYgMDggMjUgMDEgRjAgMjAgMDUgMDAgMjAg
NEUgMDAgMDAgMDIgMDIgMDAgNDAgIC4uJS4uIC4uIE4uLi4uLkAKICAgIENDNjA6IDIwIDA1IDAx
IEUyIDA0IDAwIDAwIDAyIDAyIDAxIDQwIDVCIEFGIDAxIDAxIDA2ICAgLi4uLi4uLi4uQFsuLi4u
CiAgICBDQzcwOiAwNCAxOCAwMyAwNSA0NiAwMCA1MSAyNSAwMiAzRCBFNSAwMCAwMSA0OSBGMyAw
MCAgLi4uLkYuUSUuPS4uLkkuLgogICAgQ0M4MDogNTUgMzggMDAgNjYgMDggMDMgMjQgNDEgMDQg
MDAgMkQgMEQgNDIgMDggMDAgNTUgIFU4LmYuLiRBLi4tLkIuLlUKICAgIENDOTA6IDAwIDAyIDNE
IDA0IDAwIDAwIDAwIDQ3IDQyIDAwIDJDIEE1IDAyIDAxIDJEIDBEICAuLj0uLi4uR0IuLC4uLi0u
CiAgICBDQ0EwOiA0MiAwQyAwMCAzRCBBMiAwMiA0MSA0NSAyNiAwMCA1NSAwMCAwMSA1QiAwMiAy
NCAgQi4uPS4uQUUmLlUuLlsuJAogICAgQ0NCMDogMDIgMDUgMDAgMDIgNjQgMDIgMDQgMDAgMDMg
MDEgNDYgMDAgNTYgMDAgNDAgMDMgIC4uLi5kLi4uLi5GLlYuQC4KICAgIENDQzA6IDIxIDQwIDAy
IDZGIDAyIDQ2IDQwIDdDIDA1IDQ2IDAwIDQwIDAwIDAwIDdFIDA1ICAhQC5vLkZAfC5GLkAuLn4u
CiAgICBDQ0QwOiA0MCBDNCAwOSAwMCAwMCAwMiAwMiAwMSA0MCAwMiBFNSAwMiAwMSA3QiAwNSAw
MSAgQC4uLi4uLi5ALi4uLnsuLgogICAgQ0NFMDogMzIgMDAgMDAgMDAgN0UgMDUgNDAgMTAgMjcg
MDAgMDAgN0MgMDUgNDAgNEUgMEMgIDIuLi5+LkAuJy4ufC5ATi4KICAgIENDRjA6IDAwIDAwIDdF
IDA1IDQwIDQwIDRCIDRDIDAwIDAyIDBBIDA1IDQwIDIxIDA1IDQwICAuLn4uQEBLTC4uLi5AIS5A
CiAgICBDRDAwOiA0MCA0QiA0QyAwMCAyNyAwNSA0MCA0RSAwQyAwMCAwMCAwMiAwMSAwMyAwMSAz
MiAgQEtMLicuQE4uLi4uLi4uMgogICAgQ0QxMDogMDIgMDMgNDAgMjEgMDUgNDYgRDAgMDcgMDAg
MDAgMjcgMDUgNDAgMTAgMjcgMDAgIC4uQCEuRi4uLi4nLkAuJy4KICAgIENEMjA6IDAwIDAzIDAy
IDAwIDQ2IDMzIDAyIDAwIDQwIDI3IDA1IDAwIDEwIDI3IDAwIDAwICAuLi4uRjMuLkAnLi4uJy4u
CiAgICBDRDMwOiAzRSAwQyA0MCAwNiAwMCA0OCBEMSAwMCAwMyAwQyA0MCAwNiAwMCA1NSAwMCAw
NCAgPi5ALi5ILi4uLkAuLlUuLgogICAgQ0Q0MDogMDIgOEEgMDQgNDAgMDMgMDEgNDAgMDEgMzMg
MDEgNDAgMDQgMjEgMDUgNDAgMzIgIC4uLkAuLkAuMy5ALiEuQDIKICAgIENENTA6IDAwIDAwIDAw
IDI3IDA1IDQwIDUwIEMzIDAwIDAwIDAyIDhBIDA1IDQwIDVCIDU1ICAuLi4nLkBQLi4uLi4uQFtV
CiAgICBDRDYwOiAzOCAwMCAwMyAwNSA0MCAwMCAzMiAwMCAwMCAzRCAwNSAwMCAwMCAwMCAwMCAw
MCAgOC4uLkAuMi4uPS4uLi4uLgogICAgQ0Q3MDogNDQgM0MgMDEgMDMgMDIgNDAgNDYgMkQgMDEg
NDAgMDAgMzMgMDUgNDAgMDEgMDAgIEQ8Li4uQEYtLkAuMy5ALi4KICAgIENEODA6IDAwIDAwIDI3
IDAxIDQwIDAwIDNFIDA1IDQwIDlDIDE4IDAwIDAwIDQ3IDJCIDAxICAuLicuQC4+LkAuLi4uRysu
CiAgICBDRDkwOiAwMyAwNSA0MCAwMCAzMiAwMCAwMCAzRSAwNSA0MCBDOCAwMCAwMCAwMCA0NiAz
QyAgLi5ALjIuLj4uQC4uLi5GPAogICAgQ0RBMDogMDEgMDMgMDUgNDAgQzggMDAgMDAgMDAgNjYg
RkYgMkQgMEQgNDIgOEYgMDEgM0UgIC4uLkAuLi4uZi4tLkIuLj4KICAgIENEQjA6IDBDIDQwIDAy
IDAwIDQ3IDUzIDAxIDJEIDBEIDQyIDA4IDAwIDQzIDQzIDAxIDMzICAuQC4uR1MuLS5CLi5DQy4z
CiAgICBDREMwOiAwQyA0MCAwMCAwMCAyRCAwQyA0MCAwNiAwMCAzMyAwRCA0MCAwMSAwMCAyNyAw
QyAgLkAuLi0uQC4uMy5ALi4nLgogICAgQ0REMDogNDAgMDYgMDAgMkQgMEMgNDAgMDQgMDAgMDIg
RTIgMDAgNDAgMzMgMEMgNDAgMDQgIEAuLi0uQC4uLi4uQDMuQC4KICAgIENERTA6IDAwIDIxIDBD
IDQwIDA2IDAwIDJEIDBDIDQwIDAwIDAwIDI3IDAyIDQ2IDQwIDAyICAuIS5ALi4tLkAuLicuRkAu
CiAgICBDREYwOiAwQSAwMCA0MCAwMiBCMiAwMCA0MCA1QiA3QSAyMCAwMCBDOCAwMCA0MCAwNiAw
OCAgLi5ALi4uQFt6IC4uLkAuLgogICAgQ0UwMDogMDAgMTkgMDAgNDAgMDYgODAgMEMgNDAgMDAg
MzIgMDAgODAgMEMgMzggMTggNjAgIC4uLkAuLi5ALjIuLi44LmAKICAgIENFMTA6IDAwIDY0IDAw
IDAwIDMyIDAwIDMyIDdGIDAwIDY0IDAwIDAwIDA3IDAwIDAyIDAxICAuZC4uMi4yLi5kLi4uLi4u
CiAgICBDRTIwOiAwMCAwMCA1QiAwMCA1MCAwMSAwMiAwMSAwNCAwNCAzNyAwMCAwMCA2NiAxQyAy
RCAgLi5bLlAuLi4uLjcuLmYuLQogICAgQ0UzMDogMEMgNDIgMDYgMDAgM0QgRTUgMDAgMDIgNDQg
NEIgMDAgM0QgRTUgMDAgMDMgNDQgIC5CLi49Li4uREsuPS4uLkQKICAgIENFNDA6IEY3IDAwIDAz
IDM4IDAwIDJGIDBBIDA5IDI1IDAwIDIwIDAyIDAxIDAxIDAwIDAyICAuLi44Li8uLiUuIC4uLi4u
CiAgICBDRTUwOiBGMCAwMSBDRCAwNSA1MiAxMiAwMSAwOCBBQiAwQSA4MSAwQSAwMSAxOCA4MyAw
QSAgLi4uLlIuLi4uLi4uLi4uLgogICAgQ0U2MDogODEgMEEgNUMgRTIgMkYgMEEgREYgMDAgNUMg
RTIgMzAgMEEgREYgMDAgNUIgMDIgIC4uXC4vLi4uXC4wLi4uWy4KICAgIENFNzA6IEYwIDAxIENE
IDA1IDBFIEU1IDAxIDgwIDUyIDEyIDAyIDAxIDAxIDAwIDAyIEU0ICAuLi4uLi4uLlIuLi4uLi4u
CiAgICBDRTgwOiAwMSAyQyAwMCA1MiAyNiAwMSAzOSBERCAwOSAwMSAwMiBFQyAwMSAyQyAwMCA1
MiAgLiwuUiYuOS4uLi4uLiwuUgogICAgQ0U5MDogMjYgMDEgNzkgREQgMDkgMDEgMDIgRjQgMDEg
MkMgMDAgNTIgMjYgMDEgQjkgREQgICYueS4uLi4uLiwuUiYuLi4KICAgIENFQTA6IDA5IDAxIDAy
IEZDIDAxIDJDIDAwIDUyIDI2IDAxIEY5IEREIDA5IDAxIDAyIEU0ICAuLi4uLiwuUiYuLi4uLi4u
CiAgICBDRUIwOiAwMSAzMCAwMCA1MiAyNiAwMSAzOSBERSAwOSAwMSAwMiBFQyAwMSAzMCAwMCA1
MiAgLjAuUiYuOS4uLi4uLjAuUgogICAgQ0VDMDogMjYgMDEgNzkgREUgMDkgMDEgMDIgRjQgMDEg
MzAgMDAgNTIgMjYgMDEgQjkgREUgICYueS4uLi4uLjAuUiYuLi4KICAgIENFRDA6IDA5IDAxIDAy
IEZDIDAxIDMwIDAwIDUyIDI2IDAxIEY5IERFIDA5IDAxIDMxIDA1ICAuLi4uLjAuUiYuLi4uLjEu
CiAgICBDRUUwOiBERSAwOSAwMSAwMSAwMSAwMCAwMiBFNSAwMSAwOCA1MiAyNiAzRCBFNSAwMSAw
NCAgLi4uLi4uLi4uLlImPS4uLgogICAgQ0VGMDogNDYgRDMgMDAgMDIgRTUgMDEgMDQgM0QgRTUg
MDEgMDggNDYgRTEgMDAgMzIgRTUgIEYuLi4uLi49Li4uRi4uMi4KICAgIENGMDA6IDAxIDA0IDQz
IEYwIDAwIDFBIDNEIDAxIDAxIDNEIEU1IDAxIDEyIDQ1IEYwIDAwICAuLkMuLi49Li49Li4uRS4u
CiAgICBDRjEwOiAwMiBFNSAwMSAxMiA1QyAzOSAwMiAwQSBFMCAwMSA1QiA1MiAzQiAwMyAwNSAw
MCAgLi4uLlw5Li4uLltSOy4uLgogICAgQ0YyMDogMTAgMDAgMDAgMDAgNTUgMzggMDAgM0QgMDEg
MDAgMDEgNDUgMUIgMDEgMDMgMEQgIC4uLi5VOC49Li4uRS4uLi4KICAgIENGMzA6IDAwIDE4IDAw
IDNEIDAxIDAwIDAyIDQ1IDFCIDAxIDAzIDBEIDAwIDIwIDAwIDAyICAuLi49Li4uRS4uLi4uIC4u
CiAgICBDRjQwOiAwMSAwMSAwMCAwMiBGMCAwMSBDRCAwNSAwRSBFNSAwMSA4MCA1MiAxMiA1NiAw
MCAgLi4uLi4uLi4uLi4uUi5WLgogICAgQ0Y1MDogNDEgMDEgMDIgOTEgMEEgMDAgMDEgMDQgOTIg
MEEgMTAgMDAgMkQgMDUgMDAgMDEgIEEuLi4uLi4uLi4uLi0uLi4KICAgIENGNjA6IDAwIDAwIDAw
IDJEIDI1IDQxIDAxIDJEIDBEIDQyIDA0IDAwIDNFIDI1IDQxIDA3ICAuLi4tJUEuLS5CLi4+JUEu
CiAgICBDRjcwOiA0NSAyRCAwMSA1QiAwMCAwMSAwMSAwMiAwNCAwNCAzNyAwMCAwMCAzRCAyNSAw
MCAgRS0uWy4uLi4uLjcuLj0lLgogICAgQ0Y4MDogRkYgNDkgRUMgMDAgMDIgMjAgMDAgODAgMEEg
NEEgMjUgODAgMEEgMDggNDkgMjYgIC5JLi4uIC4uLkolLi4uSSYKICAgIENGOTA6IDAwIDA4IDI1
IDAwIDEwIDA3IDI1IDgwIDBBIEVGIDAxIDA1IDMyIDBBIDA4IDAwICAuLiUuLi4lLi4uLi4yLi4u
CiAgICBDRkEwOiAwMCAwMCAwMSAwNSAzMiAwQSAxMCAwMCAwMCAwMCAwMSAwNSA4MiAwMCAxMCAw
MCAgLi4uLjIuLi4uLi4uLi4uLgogICAgQ0ZCMDogNjAgQzAgMDEgMDUgODMgMDAgMDAgODAgMDMg
MDAgMDEgMDUgODIgMDAgMTQgMDAgIGAuLi4uLi4uLi4uLi4uLi4KICAgIENGQzA6IDYwIEMwIDAz
IDAwIDQwIDgzIDAwIDY2IDE4IDNFIDA0IDQwIDA0IDAwIDQ5IEVCICBgLi4uQC4uZi4+LkAuLkku
CiAgICBDRkQwOiAwMCAwMyAwMCA0MCA4MyAwMCAwMyAwMCAwMCA4MyAwMCAwMyAwMCA0MSA4MyAw
MCAgLi4uQC4uLi4uLi4uLkEuLgogICAgQ0ZFMDogM0UgMDUgNDAgMDAgMDAgMDAgMDAgNDQgRUIg
MDAgMDEgMDAgOTEgMEEgODMgMDAgID4uQC4uLi5ELi4uLi4uLi4KICAgIENGRjA6IDAxIDAwIDky
IDBBIDgzIDAwIDMzIDBEIDQwIDAxIDAwIDNFIDBEIDQwIDAwIDAwICAuLi4uLi4zLkAuLj4uQC4u
CiAgICBEMDAwOiA0OSA3NiAwMCAwMSAwNSA2NCBDMCAwQyAwMiAwMCAwMCA1NCAwMCA2NSBDMCAw
MSAgSXYuLi5kLi4uLi5ULmUuLgogICAgRDAxMDogMDUgNjYgQzAgQ0MgMjggMDAgMDAgNTQgMDAg
NjcgQzAgMTUgMDUgMDAgMDIgMkQgIC5mLi4oLi5ULmcuLi4uLi0KICAgIEQwMjA6IDA1IDAwIDAw
IDAwIDAwIDdDIDAxIDAyIEU4IEMwIDAwIDUxIDMyIDRBIEU1IEEwICAuLi4uLnwuLi4uLlEySi4u
CiAgICBEMDMwOiAyMSA4MCA0OSBCOSAwMCAwMSAwNSAzMiAwQSAwOCAwMCAwMCAwMCAwMSAwNSAz
MiAgIS5JLi4uLjIuLi4uLi4uMgogICAgRDA0MDogMEEgMDQgMDAgMDAgMDAgMDEgMDUgMzIgMEEg
MDEgMDAgMDAgMDAgNTEgMzIgNTAgIC4uLi4uLi4yLi4uLi5RMlAKICAgIEQwNTA6IDAyIDRBIDI1
IDgwIDBBIDgwIDQ0IEREIDAwIDVDIDIxIDgwIDBBIEVGIDAwIDVCICAuSiUuLi5ELi5cIS4uLi5b
CiAgICBEMDYwOiAwMSA2NSBFNyAwQSBGRiAwMSAyMSBFNyAwQSAwMCAwMiAwNSAwMSAwNCAwMCAw
MCAgLmUuLi4uIS4uLi4uLi4uLgogICAgRDA3MDogMDAgNTIgMUYgNUIgOTggMDAgMDEgMDQgMDAg
MDAgMDMgMDUgNDAgN0MgMDEgMDAgIC5SLlsuLi4uLi4uLkB8Li4KICAgIEQwODA6IDAwIDNEIEE1
IDAwIDAwIDQ0IDE1IDAwIDVCIDAzIDAwIDQ2IDIwIDQ5IDdDIDAyICAuPS4uLkQuLlsuLkYgSXwu
CiAgICBEMDkwOiA0MCA0NiA3RSAwNSA0MCBBMCA4NiAwMSAwMCAwMyAwMCA0MSAyMyA0OSAwOSAw
NSAgQEZ+LkAuLi4uLi5BI0kuLgogICAgRDBBMDogNDEgMDMgMDAgMDAgMDAgNkYgMDIgNDAgNDEg
N0MgMDUgNDAgNDUgMEMgMDAgMDAgIEEuLi4uby5AQXwuQEUuLi4KICAgIEQwQjA6IDdFIDA1IDQw
IDQwIDRCIDRDIDAwIDNFIDA1IDQwIDAwIDAwIDAwIDAwIDQ5IDUxICB+LkBAS0wuPi5ALi4uLklR
CiAgICBEMEMwOiAwMCAwMyAyNSA0MCAwMSAwMSA4QSAyMiA0OSA0MCA3QyAwNSA0MCA0MCA0QiA0
QyAgLi4lQC4uLiJJQHwuQEBLTAogICAgRDBEMDogMDAgN0UgMDUgNDAgNDUgMEMgMDAgMDAgMDMg
MDAgNDEgMjMgNDkgMDkgMDUgNDEgIC5+LkBFLi4uLi5BI0kuLkEKICAgIEQwRTA6IDAzIDAwIDAw
IDAwIDc1IDAyIDQwIDQxIDAzIDAwIDQ2IDIwIDQ5IDQzIDg1IDAwICAuLi4udS5AQS4uRiBJQy4u
CiAgICBEMEYwOiAxQiAwNSA0MCAwMSAyQiAwMiAyMCA0OSA0MCAzMyAwMiA0NiA0MCAwMSAwMiAy
MSAgLi5ALisuIElAMy5GQC4uIQogICAgRDEwMDogNDkgNDYgNTEgMDEgMEQgNjUgMjMgNDkgMDEg
NTEgMDEgNUIgMzEgMDAgMDEgMDMgIElGUS4uZSNJLlEuWzEuLi4KICAgIEQxMTA6IDA0IDAwIDM3
IDAwIDAwIDU1IDM4IDAwIDI2IDA1IDAwIEUyIDA0IDAwIDAwIDAxICAuLjcuLlU4LiYuLi4uLi4u
CiAgICBEMTIwOiBFMiA5QSAwQSA0MCAyMSAwNSA0MSA2NCAwMCAwMCAwMCAyNyAwNSA0MCAwOSAz
RCAgLi4uQCEuQWQuLi4nLkAuPQogICAgRDEzMDogMDAgMDAgMTUgMjUgNDAgMDQgNUMgQTIgOTkg
MEEgOEYgNDAgNUIgMDAgMTAgMDAgIC4uLiVALlwuLi4uQFsuLi4KICAgIEQxNDA6IDAxIDAzIDAw
IDA4IDM3IDAwIDAwIDU1IDE4IDAwIDU1IDA4IDAxIDVCIEMzIDAxICAuLi4uNy4uVS4uVS4uWy4u
CiAgICBEMTUwOiAwMSAwNCAwMCAwNCAzNyAwMCAwMCAzRCA2NSAwMCAwOCA0OSAyMyAwMCAwMiAw
NSAgLi4uLjcuLj1lLi5JIy4uLgogICAgRDE2MDogMDEgMzggMDAgMDYgMEEgNTIgNDUgMDggMEQg
MDEgRkYgMDMgMDIgODkgMDAgMDEgIC44Li4uUkUuLi4uLi4uLi4KICAgIEQxNzA6IDVCIDNEIDY1
IDAwIDAzIDQ0IDcwIDAxIDAyIDAxIDAxIDAwIDAyIDY1IDAxIDA3ICBbPWUuLkRwLi4uLi4uZS4u
CiAgICBEMTgwOiA1MiA1MCAzRCAwNSAwMiAwMCAwMCAwMCAwMCA0NCAwQiAwMSAzNyAwMCAwMCAw
MSAgUlA9Li4uLi4uRC4uNy4uLgogICAgRDE5MDogMDUgODIgMDAgN0MgMDIgMjAgQzAgMDEgMDUg
ODIgMDAgOTQgMDIgMjAgQzAgNEEgIC4uLnwuIC4uLi4uLi4gLkoKICAgIEQxQTA6IEE1IDgzIDAw
IDA2IDQ5IDQ5IDAwIDAxIDA1IDgyIDAwIDdDIDAyIDIwIEMwIDBEICAuLi4uSUkuLi4uLnwuIC4u
CiAgICBEMUIwOiA2NSA4MyAwMCAwNCAwMSAwNSA4MiAwMCA3QyAwMiAyMCBDMCAwMyAwMCA0NiA4
MyAgZS4uLi4uLi58LiAuLi5GLgogICAgRDFDMDogMDAgMzcgMDAgMDAgMDEgMDUgODIgMDAgODAg
MDIgMjAgQzAgNUUgNjUgNDYgRkMgIC43Li4uLi4uLi4gLl5lRi4KICAgIEQxRDA6IDAxIDNEIDI1
IDAwIDAxIDQ0IDk2IDAwIDA5IDY1IDQ2IEZDIDAxIDA1IDgyIDAwICAuPSUuLkQuLi5lRi4uLi4u
CiAgICBEMUUwOiA4NCAwMiAyMCBDMCAzQyAwQyA4MyAwMCAwNCAwMCA0NCBDNiAwMCAwNyAwRCA4
MyAgLi4gLjwuLi4uLkQuLi4uLgogICAgRDFGMDogMDAgOUYgRkYgNTEgM0MgMDMgMEMgNDEgMDQg
MDAgNEMgMjUgNDEgMjAgNDkgQkUgIC4uLlE8Li5BLi5MJUEgSS4KICAgIEQyMDA6IDAwIDBGIDI1
IDQxIDIwIDAxIDBBIDgzIDAwIDQxIDUxIDNDIDAxIDBDIDgzIDAwICAuLiVBIC4uLi5BUTwuLi4u
CiAgICBEMjEwOiAwNCAwMCA1MSAzQyA1NiAwMCA0MCAwMyAxOSA0MCAwMCAyMSAwNSA0MCA2NCAw
MCAgLi5RPFYuQC4uQC4hLkBkLgogICAgRDIyMDogMDAgMDAgMDMgMDUgNDEgNzggNUQgMDIgMDAg
MzMgMDIgNDEgNDAgMjcgMDUgNDEgIC4uLi5BeF0uLjMuQUAnLkEKICAgIEQyMzA6IDcxIDAyIDAw
IDAwIDAzIDIyIDQ2IDQwIDAxIDA1IDgyIDAwIDdDIDAyIDIwIEMwICBxLi4uLiJGQC4uLi58LiAu
CiAgICBEMjQwOiAwMSAwMiA4MyAwMCA0NiAwMSAwNSA4MiAwMCA5NCAwMiAyMCBDMCA0QSBBNSA4
MyAgLi4uLkYuLi4uLi4gLkouLgogICAgRDI1MDogMDAgMDIgNDkgRjcgMDAgMzcgMDAgMDAgNUIg
MDIgMDEgMDEgMDAgNTIgNTAgM0QgIC4uSS4uNy4uWy4uLi5SUD0KICAgIEQyNjA6IDA1IDAyIDAw
IDAwIDAwIDAwIDQ0IDZDIDAxIDRCIEU1IDAyIDQwIDQ0IDJGIDAxICAuLi4uLi5EbC5LLi5ARC8u
CiAgICBEMjcwOiAwMSAwNSA4MiAwMCBGOCAwMSA2MCBDMCAwRCAyNSA4MyAwMCAxRiA0QiAyNSAw
MiAgLi4uLi4uYC4uJS4uLkslLgogICAgRDI4MDogODAgNDQgM0IgMDEgMEQgQTUgOTAgNDggMDEg
MDMgMDUgNDEgRkYgRkYgRkYgRkYgIC5EOy4uLi5ILi4uQS4uLi4KICAgIEQyOTA6IDY5IDAxIDQx
IDAyIDAxIDA1IDgyIDAwIEU0IDAxIDYwIEMwIDA5IDAwIDQxIDgzICBpLkEuLi4uLi4uYC4uLkEu
CiAgICBEMkEwOiAwMCAwRiAwMSA0MSAwMSAwMSAwMiA4MyAwMCA0MSAwMSAwNSA4MiAwMCBGNCAw
MSAgLi4uQS4uLi4uQS4uLi4uLgogICAgRDJCMDogNjAgQzAgMEQgMDEgODMgMDAgMDIgNTEgMzIg
NUIgNTUgMDAgMDAgNUIgMDIgMDEgIGAuLi4uLi5RMltVLi5bLi4KICAgIEQyQzA6IDAxIDAwIDUy
IDUwIDNEIDA1IDAyIDAwIDAwIDAwIDAwIDQ0IDZDIDAxIDAyIEU0ICAuLlJQPS4uLi4uLkRsLi4u
CiAgICBEMkQwOiAwMCAwNSAwMCAwMiBBNCAwMCAwNiAwMCAwMiAwRCAwMiAwMSAwMSAwMyAyNCA0
MSAgLi4uLi4uLi4uLi4uLi4kQQogICAgRDJFMDogMDggMDAgNEMgMjUgNDEgMDEgNDQgOUYgMDEg
MDIgNjUgMDIgMDIgMDIgMjUgMDEgIC4uTCVBLkQuLi5lLi4uJS4KICAgIEQyRjA6IDMyIDAyIDY0
IDAxIDBDIDAwIDAyIDhDIDAxIDBFIDAwIDNEIDY1IDAxIEZGIDQ0ICAyLmQuLi4uLi4uLj1lLi5E
CiAgICBEMzAwOiBDMiAwMSAwMiA5OSAwMiAwMCA1MiAzNiAyRCAwRCA0MiAwNCAwMCA0MyBBMyAw
MSAgLi4uLi4uUjYtLkIuLkMuLgogICAgRDMxMDogNUIgMDAgODMgMDAgMDEgMDMgMDQgMDAgMzcg
MDAgMDAgM0QgNjUgMDAgMDkgNDQgIFsuLi4uLi4uNy4uPWUuLkQKICAgIEQzMjA6IDgwIDAwIDAz
IDBBIDAwIDQyIDY2IDIwIDAzIDBDIDQxIDAwIDAwIDJEIDBBIDQxICAuLi4uLkJmIC4uQS4uLS5B
CiAgICBEMzMwOiA0MiAyRCAwRCA0MiAwNCAwMCAzRSAwQSA0MiA0MSA0NCA3QyAwMCAzRCAwQyAw
MCAgQi0uQi4uPi5CQUR8Lj0uLgogICAgRDM0MDogMDAgMDAgNDQgM0IgMDAgMkQgMEMgNDIgMDIg
MDAgNDMgMjQgMDAgMDIgMEEgMDEgIC4uRDsuLS5CLi5DJC4uLi4KICAgIEQzNTA6IDQyIDNEIDY1
IDAwIDAzIDQ0IDdCIDAwIDNEIDY1IDAwIDA3IDQ0IDdCIDAwIDAzICBCPWUuLkR7Lj1lLi5Eey4u
CiAgICBEMzYwOiBFNCA0MSAwNSAwMCAwMiAwNCAwMSAwOCAwMCAzRSBFNSA0MSAwMCA0NCA3QyAw
MCAgLkEuLi4uLi4uPi5BLkR8LgogICAgRDM3MDogM0QgOEMgMDAgMTAgMDAgNDcgNzIgMDAgMkQg
MEQgNDIgMDYgMDAgMzMgRTUgNDEgID0uLi4uR3IuLS5CLi4zLkEKICAgIEQzODA6IDAxIDQzIDU3
IDAwIDAyIDA0IDAwIDBDIDAwIDAzIDBBIDQyIDAwIDVCIDU1IDAwICAuQ1cuLi4uLi4uLkIuW1Uu
CiAgICBEMzkwOiAwMSA1QiA1MiAxQiA1QiAwMCA2NyAwMiAwMSAwNSAwMCAwMCAzNyAwMCAwMCAw
MyAgLltSLlsuZy4uLi4uNy4uLgogICAgRDNBMDogMjAgNDYgQ0YgMDUgMEUgMjUgMDAgNjAgNTIg
MTQgMDggMjUgMDAgMEYgNDIgMjkgICBGLi4uJS5gUi4uJS4uQikKICAgIEQzQjA6IDAwIDYzIDBG
IDU4IDAwIDYzIDExIDRFIDAxIDYzIDEyIENDIDAxIDYzIDAxIDI0ICAuYy5YLmMuTi5jLi4uYy4k
CiAgICBEM0MwOiAwMiA2MyAwMCA0RCAwMiA2MyAwOCAxOCAwMSA2MyAwOSBGOSAwMCA2MyAwQSAw
MCAgLmMuTS5jLi4uYy4uLmMuLgogICAgRDNEMDogMDEgNjMgMTMgMDggMDEgNjMgMTQgMTAgMDEg
NjMgMEIgMjAgMDEgNjMgMEMgMTQgIC5jLi4uYy4uLmMuIC5jLi4KICAgIEQzRTA6IDAyIDYzIDBE
IDI4IDAxIDYzIDEwIDQxIDAxIDVBIDVBIDQzIEY1IDAwIDU0IDAwICAuYy4oLmMuQS5aWkMuLlQu
CiAgICBEM0YwOiA3MiA0QSAzRCBBNSAwMCAwMCA0NCA3MSAwMCAzRCBBNSAwMCAwMiA0NCBFMyAw
MCAgcko9Li4uRHEuPS4uLkQuLgogICAgRDQwMDogM0QgQTUgMDAgMDUgNDkgRUIgMDAgNTQgMDgg
QTEgNEEgM0QgMjUgMDIgMDAgNDkgID0uLi5JLi5ULi5KPSUuLkkKICAgIEQ0MTA6IDgwIDAwIDAy
IDI1IDAyIDAyIDMyIDI1IDAyIDAxIDAxIEUxIEExIDRBIDAyIDRBICAuLi4lLi4yJS4uLi4uSi5K
CiAgICBENDIwOiAyNSBBNCA0QSAwMSA0OSBDNiAwMCA3QiAwNSAwMSAwMCA4MCAwMCAwMCA3RSAw
NSAgJS5KLkkuLnsuLi4uLi5+LgogICAgRDQzMDogNDAgOEMgMEEgMDAgMDAgNTYgMDAgNDYgMDMg
MjkgNDYgMDIgMjcgMDIgNDAgNDYgIEAuLi4uVi5GLilGLicuQEYKICAgIEQ0NDA6IDA3IDY1IEE4
IDRBIEZFIDAxIDA1IEE5IDRBIDAwIDgwIDAwIDAwIDAxIDAyIEFBICAuZS5KLi4uLkouLi4uLi4u
CiAgICBENDUwOiA0QSA0MCAwRCBFNSBBQiA0QSAxMCAwRCA2NSAwMCA0QSAwNCAwMiAyMCAwMCAw
MCAgSkAuLi5KLi5lLkouLiAuLgogICAgRDQ2MDogNEEgMDggMjUgMDAgMDcgMEUgMjUgMDAgMDAg
NTIgMTQgMTQgM0QgMDAgMDQgNUMgIEouJS4uLiUuLlIuLj0uLlwKICAgIEQ0NzA6IEI5IDlDIDFC
IDhGIDAwIDNBIDAwIDAwIDVCIDAxIDA1IDcyIDRBIDAxIDAwIDAwICAuLi4uLjouLlsuLnJKLi4u
CiAgICBENDgwOiAwMCAwNyBFNSAwMCA0QSAyRiAwRCA2NSAwMCA0QSAwNCAzQSAwMCAwMCA1QiA1
NCAgLi4uLkovLmUuSi46Li5bVAogICAgRDQ5MDogMjAgQjAgNEEgNDMgRjUgMDAgMDEgMjUgQjAg
NEEgMDEgNDMgRjUgMDAgMDEgMjUgICAuSkMuLi4lLkouQy4uLiUKICAgIEQ0QTA6IEIwIDRBIDAy
IDQzIEY1IDAwIDAxIDI1IEIwIDRBIDAzIDQzIEY1IDAwIDA3IDI1ICAuSi5DLi4uJS5KLkMuLi4l
CiAgICBENEIwOiBBMCA0QSBFRiA0MyBGNSAwMCAwRCAyNSBBMCA0QSAxMCA0MyBGNSAwMCAwRCA2
NSAgLkouQy4uLiUuSi5DLi4uZQogICAgRDRDMDogQTggNEEgMDEgNTEgMEEgMDcgMjUgQTUgNEEg
RkUgNTEgMEEgMDEgMEQgQTQgNEEgIC5KLlEuLiUuSi5RLi4uLkoKICAgIEQ0RDA6IDAxIDAyIDUx
IEM4IDQzIEY1IDAwIDBEIDI1IEI2IDRBIDEwIDAxIDMxIEE3IDRBICAuLlEuQy4uLiUuSi4uMS5K
CiAgICBENEUwOiAwMCA0MyBGNSAwMCAwMSAwRCAwMyA0QSAxRiAwMCAwMSA2OSA0NyA0QSAwMiA0
QyAgLkMuLi4uLkouLi5pR0ouTAogICAgRDRGMDogMjUgNDYgMTAgNDkgNzcgMDEgM0QgQTUgMDAg
MDMgNDkgNzcgMDEgNEEgMjUgMEQgICVGLkl3Lj0uLi5Jdy5KJS4KICAgIEQ1MDA6IDRBIDEwIDQ5
IDc3IDAxIDAxIEE1IDQ3IDRBIDAyIDQzIDdDIDAxIDAxIEIxIDQ3ICBKLkl3Li4uR0ouQ3wuLi5H
CiAgICBENTEwOiA0QSAwMCAzRCAyNSAwMiAwMCA0NCA5MSAwMSAzMiAyNSAwMiAwMSAxNCAyNSAw
MiAgSi49JS4uRC4uMiUuLi4lLgogICAgRDUyMDogMDQgNUMgRTEgNDcgNEEgOEYgMDIgM0QgRTUg
MDAgMDQgNDcgQTAgMDEgMEQgMjUgIC5cLkdKLi49Li4uRy4uLiUKICAgIEQ1MzA6IDQ3IDRBIDAx
IDQzIEE1IDAxIDA3IDI1IDQ3IDRBIEZFIDNEIEE1IDAwIDA1IDQ0ICBHSi5DLi4uJUdKLj0uLi5E
CiAgICBENTQwOiBCMyAwMSAzRCBBNSAwMCAwMCA0OSBDNCAwMSAwMiBBNSAwMCAwMCAwMyAzOSA0
MCAgLi49Li4uSS4uLi4uLi45QAogICAgRDU1MDogMDAgMzMgMjUgNDAgMDEgMDEgMjIgQTMgNEEg
NDAgMDIgRTAgMDIgNDggNEEgNDMgIC4zJUAuLiIuSkAuLi5ISkMKICAgIEQ1NjA6IEY1IDAwIDAy
IEUwIDAyIDQ4IDRBIDRCIEU1IDAyIDAxIDQ0IEY1IDAwIDAyIEIwICAuLi4uLkhKSy4uLkQuLi4u
CiAgICBENTcwOiAwMCA0NyA0QSAwMiBFNSAwMCAwNCA0QSAyNSA0NyA0QSAwMSA0NCBFRCAwMSAw
MiAgLkdKLi4uLkolR0ouRC4uLgogICAgRDU4MDogRTUgMDAgMDggM0QgQTUgMDAgMDIgNDQgRkIg
MDEgM0QgQTUgMDAgMDMgNDkgMDQgIC4uLj0uLi5ELi49Li4uSS4KICAgIEQ1OTA6IDAyIDU0IDAw
IDQ4IDRBIDUwIDAyIDQzIEY1IDAwIDAyIEE1IDAwIDAwIDAzIDMxICAuVC5ISlAuQy4uLi4uLi4x
CiAgICBENUEwOiA0MyAwMCA0QSA2MiA0NyA0QSA0NCA0NCBGNSAwMCA1NCAwOCBBNCA0QSA1MSBD
OCAgQy5KYkdKREQuLlQuLkpRLgogICAgRDVCMDogMEQgMjUgQTUgNEEgMDEgNTEgMzIgNDMgRjUg
MDAgMEQgMjUgNDggNEEgMDEgM0QgIC4lLkouUTJDLi4uJUhKLj0KICAgIEQ1QzA6IEE1IDAwIDAw
IDQ0IDM5IDAyIDAxIDBEIDc5IDRBIDBGIDAxIDQzIEY1IDAwIDAzICAuLi5EOS4uLnlKLi5DLi4u
CiAgICBENUQwOiAzOSA0MyAwMCAwMyAwMiA0MCA0NCAzMyAyNSA0MCAwMSAwMSAwQSA3OSA0QSA0
MCAgOUMuLi5ARDMlQC4uLnlKQAogICAgRDVFMDogNDMgRjUgMDAgNTQgMDAgNzkgNEEgMDcgMjUg
NDggNEEgRkUgMDcgMEQgNDcgNEEgIEMuLlQueUouJUhKLi4uR0oKICAgIEQ1RjA6IEZFIDgwIDU0
IDIwIEEwIDRBIDU0IDIwIEIwIDRBIDQzIEY1IDAwIDAwIDI5IDAwICAuLlQgLkpUIC5KQy4uLiku
CiAgICBENjAwOiAwMSAwMSAwMCAwMCAzNyAwMCAwMCA2NiAxQyAyRCAwRCA0MiAxNCAwMCAwMyAz
MCAgLi4uLjcuLmYuLS5CLi4uMAogICAgRDYxMDogNDAgQ0QgMDUgM0UgMjUgNDAgMDAgNDQgMjgg
MDAgMzMgMjUgNDAgMDEgMkQgMEMgIEAuLj4lQC5EKC4zJUAuLS4KICAgIEQ2MjA6IDQyIDA0IDAw
IDQzIDE1IDAwIDVCIDAwIDQ2IDAxIDAxIDA2IDAwIDAwIDM3IDAwICBCLi5DLi5bLkYuLi4uLjcu
CiAgICBENjMwOiAwMCA0MiAyOSAwMCA2MyAwNyAyNCAwMSA2MyAwMSAyNSAwMCA2MyAwMCBDMCAw
MCAgLkIpLmMuJC5jLiUuYy4uLgogICAgRDY0MDogNjMgMEIgMjcgMDEgNjMgMDQgMkMgMDEgNUEg
NUEgNDMgM0YgMDEgMDIgNjUgMDAgIGMuJy5jLiwuWlpDPy4uZS4KICAgIEQ2NTA6IDExIDUyIDA0
IDRCIEU1IDAyIDAxIDQ5IDIwIDAxIDAyIDY1IDAwIDBBIDU1IDA4ICAuUi5LLi4uSSAuLmUuLlUu
CiAgICBENjYwOiAwMiA1MiA0RCAzRCBFNSAwMCAwNCA0NyA1MCAwMCA2OCAyNSAwMCAwMSAwMiAy
NSAgLlJNPS4uLkdQLmglLi4uJQogICAgRDY3MDogMDIgMDEgNTIgNEQgNjggMjUgMDAgMDEgM0Qg
QTUgMDAgMDAgNDkgODIgMDAgMjAgIC4uUk1oJS4uPS4uLkkuLiAKICAgIEQ2ODA6IDA1IDAxIDY0
IDAwIDAwIDAwIDAyIDA1IDAxIDE0IDFFIDAwIDAyIDJDIDIxIDAxICAuLmQuLi4uLi4uLi4uLCEu
CiAgICBENjkwOiAwMCAwMiAwMSAwMiAwMCAwMiAwMiAwMCA0MCA1MiAwQyAyNiAwNSAwMCA2NCAw
MCAgLi4uLi4uLi5AUi4mLi5kLgogICAgRDZBMDogMDAgMDAgMDIgMDIgMDEgNDAgMDIgMDEgMDAg
MDIgMDIgNjUgMDAgMDEgNTUgMDggIC4uLi4uQC4uLi4uZS4uVS4KICAgIEQ2QjA6IDAyIDUyIDRE
IDNEIEU1IDAwIDA0IDQ3IEEwIDAwIDY4IDI1IDAwIDAxIDAyIDI1ICAuUk09Li4uRy4uaCUuLi4l
CiAgICBENkMwOiAwMiAwMSA1MiA0RCA2OCAyNSAwMCAwMSA1MSAwNSAwMiA2NSAwMCAwMSA1MiAw
NCAgLi5STWglLi5RLi5lLi5SLgogICAgRDZEMDogNTEgMEEgMDIgNjUgMDAgMDkgNTIgNEQgM0Qg
RTUgMDAgMDQgNDcgMjAgMDEgNjggIFEuLmUuLlJNPS4uLkcgLmgKICAgIEQ2RTA6IDI1IDAwIDAx
IDUyIDREIDQzIDIwIDAxIDAyIDY1IDAwIDEyIDUyIDA0IDRCIEU1ICAlLi5STUMgLi5lLi5SLksu
CiAgICBENkYwOiAwMiAwMSA0NCAyMCAwMSAwMiA2NSAwMCAwOCA1MiA0RCAzRCBFNSAwMCAwNCA0
NyAgLi5EIC4uZS4uUk09Li4uRwogICAgRDcwMDogRTQgMDAgNjggMjUgMDAgMDEgNTIgNEQgNjgg
MjUgMDAgMDEgMDIgNjUgMDAgMDAgIC4uaCUuLlJNaCUuLi5lLi4KICAgIEQ3MTA6IDUyIDA0IDAy
IDY1IDAwIDAwIDUyIDREIDNEIEU1IDAwIDA0IDQ3IDAxIDAxIDY4ICBSLi5lLi5STT0uLi5HLi5o
CiAgICBENzIwOiAyNSAwMCAwMSA1MiA0RCA2OCAyNSAwMCAwMSAzRCBBNSAwMCAwMCA0OSAyMCAw
MSAgJS4uUk1oJS4uPS4uLkkgLgogICAgRDczMDogMDIgMDEgMDIgMDAgMDIgMDUgMDEgMTQgMDAg
MDAgMDAgMkMgMjEgMDEgMDAgNTUgIC4uLi4uLi4uLi4uLCEuLlUKICAgIEQ3NDA6IDAwIDAwIDUy
IDBDIDAyIDAxIDAwIDAyIDNBIDAwIDAwIDVCIDQzIDIwIDAxIDUyICAuLlIuLi4uLjouLltDIC5S
CiAgICBENzUwOiA0RCA0MyAyMCAwMSA2NiAwNiAwMiAyOSAwMCAwMCAwMiA2OCAwMCBDQiAwNSAw
MiAgTUMgLmYuLikuLi5oLi4uLgogICAgRDc2MDogOEMgMDAgMzIgMDAgNTIgMzMgNUIgMDIgMjkg
MDAgMDAgNTIgMzMgNUIgMzggMDMgIC4uMi5SM1suKS4uUjNbOC4KICAgIEQ3NzA6IDAyIDAxIDAw
IDAwIDM3IDAwIDAwIDBFIDI1IDAwIDIwIDUyIDE0IDA4IDI1IDAwICAuLi4uNy4uLiUuIFIuLiUu
CiAgICBENzgwOiAwRiA0MiAyOSAwMCA2MyAwNyAzNSAwMCA2MyAwQSAzRCAwMCA2MyAwMSAyMSAw
MSAgLkIpLmMuNS5jLj0uYy4hLgogICAgRDc5MDogNjMgMDAgN0IgMDEgNjMgMDkgQkIgMDEgNjMg
MDggRTkgMDEgNjMgMEIgMDEgMDIgIGMuey5jLi4uYy4uLmMuLi4KICAgIEQ3QTA6IDVBIDVBIDVC
IDBEIDY1IEM0IDQ4IDA4IDQzIEFEIDAyIDAzIDBBIDQ2IDQ4IDY2ICBaWlsuZS5ILkMuLi4uRkhm
CiAgICBEN0IwOiBGRiAyRCAwRCA0MiAxQSAwMyA1NiAwMCA0MCAyMCAyNSAwMCAwNSAyRCAwQSA0
MiAgLi0uQi4uVi5AICUuLi0uQgogICAgRDdDMDogNDAgMjAgMjUgMDAgMDIgMDMgMEEgNDggNDAg
MDEgMDQgMDYgNDggMDAgMDAgMDEgIEAgJS4uLi5IQC4uLkguLi4KICAgIEQ3RDA6IDY0IDA1IDQ4
IDA0IDAwIDA3IEU1IDA1IDQ4IEZDIDA3IEE1IDA1IDQ4IDhGIDAzICBkLkguLi4uLkguLi4uSC4u
CiAgICBEN0UwOiAwQSA0OCA0NiA1NiAwMCA0MSAzRCBFNSAwMCAwNCA0NyA5NiAwMCAwMyAwNSA0
MSAgLkhGVi5BPS4uLkcuLi4uQQogICAgRDdGMDogMDAgODAgMDEgMDEgNEIgMjUgMDIgMDEgNDQg
OTYgMDAgMDkgNEQgNDEgN0YgRkYgIC4uLi5LJS4uRC4uLk1BLi4KICAgIEQ4MDA6IDAzIEU1IDQx
IDAyIDVDIEZBIEQzIDQ4IEZDIDQxIDVDIDUyIEM1IDQ4IDdGIEZFICAuLkEuXC4uSC5BXFIuSC4u
CiAgICBEODEwOiA0MSAzRCBBNSAwMCAwMCA0OSBDQyAwMCAwNyBBNSBDMSA0OCA3RiA2NiBGRiAy
RCAgQT0uLi5JLi4uLi5ILmYuLQogICAgRDgyMDogMEQgNDIgREUgMDIgMkQgMEQgNDIgMDYgMDAg
NTYgMDAgNDEgM0QgQTUgMDIgMTQgIC5CLi4tLkIuLlYuQT0uLi4KICAgIEQ4MzA6IDQ5IDQ5IDAy
IDAzIDI1IDQxIDIwIDQzIDQ5IDAyIDBEIEE1IEMxIDQ4IDgwIDY2ICBJSS4uJUEgQ0kuLi4uSC5m
CiAgICBEODQwOiBGRiAyRCAwRCA0MiBCNiAwMiAwMyAwNCA0MCAwMCAwMCAzRSAwNSA0MCAwMCAw
MCAgLi0uQi4uLi5ALi4+LkAuLgogICAgRDg1MDogMDAgMDAgNDQgQUQgMDIgMDMgMjEgNDMgMDAg
MDMgRTIgNDEgNDQgNEMgRTQgNDEgIC4uRC4uLiFDLi4uQURMLkEKICAgIEQ4NjA6IDA1IDAwIDQ0
IDA3IDAxIDNEIEE0IDAwIDA0IDAwIDQ5IDA3IDAxIDNEIDA0IDAxICAuLkQuLj0uLi4uSS4uPS4u
CiAgICBEODcwOiAwMCAwMCA0NyAwRiAwMSAyRCAwRCA0MiAwQyAwMCA0MyBEOCAwMCAwMyAwNCA0
MCAgLi5HLi4tLkIuLkMuLi4uQAogICAgRDg4MDogMDYgMDAgMDMgMjQgNDEgMEEgMDAgMDMgNjQg
NDEgMEIgMDAgNDMgNTIgMDIgMDcgIC4uLiRBLi4uZEEuLkNSLi4KICAgIEQ4OTA6IDY1IEM0IDQ4
IEY3IDAzIDBBIDQ2IDQ4IDU2IDAwIDQxIDNEIEU1IDAwIDA0IDQ3ICBlLkguLi5GSFYuQT0uLi5H
CiAgICBEOEEwOiAzQyAwMSAwNyAyNSBFMiA0OCBGOSA0MyA0MiAwMSA1QyAyNSBFMiA0OCBGOSAw
MiAgPC4uJS5ILkNCLlwlLkguLgogICAgRDhCMDogNEEgNjUgRTAgNDggMDEgNDQgNDIgMDEgMDcg
MjUgRTAgNDggRjggNEEgNjUgRTAgIEplLkguREIuLiUuSC5KZS4KICAgIEQ4QzA6IDQ4IDAxIDQ0
IDRGIDAxIDJEIEU1IDQxIDAxIDJEIDBEIDQ4IDEwIDAwIDNFIEU1ICBILkRPLi0uQS4tLkguLj4u
CiAgICBEOEQwOiA0MSAwNCA0NSAyRCAwMSAwMyAwQSA0OCA0NiAwRCAyNSBEMSA0OCAwMiA0QSAy
NSAgQS5FLS4uLkhGLiUuSC5KJQogICAgRDhFMDogRDEgNDggMDQgNDQgNzAgMDEgNDMgQUQgMDIg
MDcgMjUgRDEgNDggRkQgNEEgMjUgIC5ILkRwLkMuLi4lLkguSiUKICAgIEQ4RjA6IEQxIDQ4IDA0
IDQ5IDgwIDAxIDBEIDY1IEM0IDQ4IDA4IDU2IDAwIDQxIDRBIDY1ICAuSC5JLi4uZS5ILlYuQUpl
CiAgICBEOTAwOiBFMCA0OCAwMSA0NCA5MCAwMSA1QyAyNSBFMCA0OCBGOCAwNCA1MSAwMiA0QSA2
NSAgLkguRC4uXCUuSC4uUS5KZQogICAgRDkxMDogRTAgNDggMDEgNDQgQTAgMDEgMkQgQTUgNDEg
MDEgMkQgMEQgNDggMTAgMDAgM0UgIC5ILkQuLi0uQS4tLkguLj4KICAgIEQ5MjA6IEE1IDQxIDA0
IDQ1IDkwIDAxIDQzIEFEIDAyIDAzIDBBIDQ2IDQ4IDU2IDA4IDQ4ICAuQS5FLi5DLi4uLkZIVi5I
CiAgICBEOTMwOiAyMCAyNSAwMCAwMiAwMyAyMiA0OCA0MCAwRCAyNSAwNSA0OCAwMSAwRCBFNSAw
NiAgICUuLi4iSEAuJS5ILi4uLgogICAgRDk0MDogNDggMTAgMDMgMEEgNDggNDYgMEQgQTUgRDMg
NDggMDEgNTEgMTQgMEQgMjUgRDMgIEguLi5IRi4uLkguUS4uJS4KICAgIEQ5NTA6IDQ4IDAxIDUx
IDE0IDQzIEFEIDAyIDA3IEE1IEQzIDQ4IEZFIDU2IDAwIDQwIDIwICBILlEuQy4uLi4uSC5WLkAg
CiAgICBEOTYwOiAyNSAwMCAwMiAwMyAwQSA0OCA0MCAwNyBFNSAwNiA0OCBFRiA0MyBBRCAwMiAw
OCAgJS4uLi5IQC4uLkguQy4uLgogICAgRDk3MDogQTUgMDAgMUIgNjYgRkYgMkQgMEQgNDIgREUg
MDIgMDMgMjEgNDMgMDAgMDMgQTIgIC4uLmYuLS5CLi4uIUMuLi4KICAgIEQ5ODA6IDQwIDQ0IDAz
IDBDIDQwIDAyIDAwIDRDIEE0IDQwIDAwIDAwIDQ5IDI5IDAyIDJEICBARC4uQC4uTC5ALi5JKS4t
CiAgICBEOTkwOiAwQyA0MiAwNCAwMCA0MyAxNCAwMiAyRCAwRCA0MiAwNiAwMCAzRCBBNCAwMCAw
MCAgLkIuLkMuLi0uQi4uPS4uLgogICAgRDlBMDogMDAgNDQgNDkgMDIgMDMgMjQgNDEgMDAgMDAg
M0UgMjUgNDEgRkYgNDQgNDkgMDIgIC5ESS4uJEEuLj4lQS5ESS4KICAgIEQ5QjA6IDJEIDBBIDQy
IDQwIDQzIDJFIDAyIDAzIDA0IDQwIDAxIDAwIDAzIDY1IDQxIDA4ICAtLkJAQy4uLi5ALi4uZUEu
CiAgICBEOUMwOiAwMSAwQSBDMyA0OCA0MCAwMSAwNSBEQSA0OCA4OCA4OCAwMSAwMCAwMSBGMiBE
QiAgLi4uSEAuLi5ILi4uLi4uLgogICAgRDlEMDogNDggNDAgMDEgQkEgRTIgNDggNDAgMDEgQkEg
RjIgNDggNDAgMDEgQkEgMDIgNDkgIEhALi4uSEAuLi5IQC4uLkkKICAgIEQ5RTA6IDQwIDAxIEJB
IDEyIDQ5IDQwIDAxIDI1IEUxIDQ4IDIwIDAxIDI1IEYxIDQ4IDIwICBALi4uSUAuJS5IIC4lLkgg
CiAgICBEOUYwOiAwMSAyNSAwMSA0OSAyMCAwMSAyNSAxMSA0OSAyMCAwMSAyQSBFMSA0OCA0MSAw
MSAgLiUuSSAuJS5JIC4qLkhBLgogICAgREEwMDogMkEgRjEgNDggNDEgMDEgMkEgMDEgNDkgNDEg
MDEgMkEgMTEgNDkgNDEgM0QgNjUgICouSEEuKi5JQS4qLklBPWUKICAgIERBMTA6IDAwIDBCIDQ0
IEFEIDAyIDVDIEEyIEM4IDQ4IERGIDQxIDNBIDAwIDAwIDVCIDdBICAuLkQuLlwuLkguQTouLlt6
CiAgICBEQTIwOiA4NCAwMCAwQyAwMCBGRiBGRiBGRiAwMCAwMiAzRiAwMCAwMCAwMCA1RiAwMCAw
OCAgLi4uLi4uLi4uPy4uLl8uLgogICAgREEzMDogNDAgOUMgMDAgMDAgMDMgM0YgMDAgMDAgMDAg
NUYgMDAgMDggRkYgRkYgRkYgMDAgIEAuLi4uPy4uLl8uLi4uLi4KICAgIERBNDA6IDAzIDNGIDAw
IDAwIDJBIDU3IDIwIDEwIDAwIDAwIDAwIDAwIDNGIDAwIDA1IDAwICAuPy4uKlcgLi4uLi4/Li4u
CiAgICBEQTUwOiAzOSAwMCAwMCA0QiAwMCAwMCA4MCAwMSAzQSAwMCAwMCA4MCAwMiAxQiAwMCAw
MCAgOS4uSy4uLi46Li4uLi4uLgogICAgREE2MDogODAgMDMgMDAgMDAgMDAgODAgMDggMzQgMjUg
MDAgODAgMDkgMUMgMjUgMDAgODAgIC4uLi4uLi40JS4uLi4lLi4KICAgIERBNzA6IDBBIDAwIDFC
IDAwIDlGIDEwIDE0IDNGIDAwIDgwIDExIDAxIDM4IDAwIDlGIDE4ICAuLi4uLi4uPy4uLi44Li4u
CiAgICBEQTgwOiAwMCA0QSAwMCA5RiBGRiAwMCAwMCBGRiAwMyAwMiAwMSAwMCAwMSAwMyAwMiAw
MSAgLkouLi4uLi4uLi4uLi4uLgogICAgREE5MDogMDAgMDEgMDMgMDIgMDEgMDAgMDEgMDMgMDIg
MDEgMDAgMDEgMDMgMDIgMDEgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAgIERBQTA6IDAxIDAzIDAy
IDAxIDAwIDAxIDRDIDAyIDAxIDAyIDAwIDA4IDM3IDAwIDAwIDNEICAuLi4uLi5MLi4uLi43Li49
CiAgICBEQUIwOiAwRCAwMCAwMCAwMCA0NCBDRSAwMSA1NiAwMCA0MSAwMyAyMSA0MSAwMSAwOSAy
NSAgLi4uLkQuLlYuQS4hQS4uJQogICAgREFDMDogNDEgMEYgMTUgMEQgNDEgMDIgMDMgMEEgNDAg
NDIgNjYgRkYgMkQgMEQgNDIgMzQgIEEuLi5BLi4uQEJmLi0uQjQKICAgIERBRDA6IDAyIDJEIDBB
IDQyIDQxIDAzIDBDIDQ4IDAyIDAwIDBEIEE1IDY4IDQ4IDAxIDU0ICAuLS5CQS4uSC4uLi5oSC5U
CiAgICBEQUUwOiAwOCA2OCA0OCAwMyAwQyA0OCAwMCAwMCAwMyBGOSA0MSAwMSAxNSAzRCA0MSAw
NCAgLmhILi5ILi4uLkEuLj1BLgogICAgREFGMDogNUMgQkEgMDAgNUMgOEYgNDEgMDMgMEEgNDIg
NDAgNEEgMjUgMDAgNUMgMDEgNDkgIFwuLlwuQS4uQkBKJS5cLkkKICAgIERCMDA6IDgxIDAwIDBE
IDBEIDAwIDVDIDAxIDAxIDBEIDI1IDAwIDVDIDEwIDRBIDI1IDAwICAuLi4uLlwuLi4lLlwuSiUu
CiAgICBEQjEwOiA1QyAyMCA0NCA2NyAwMCAwNyAyNSAwMCA1QyBFRiA0QSAyNSAwMCA1QyAyMCA0
OSAgXCBEZy4uJS5cLkolLlwgSQogICAgREIyMDogNzQgMDAgMEQgMjUgMDMgNUMgNDAgNTYgMDAg
NDEgMDMgMDkgNDEgMDAgM0IgMDIgIHQuLiUuXEBWLkEuLkEuOy4KICAgIERCMzA6IDQxIDAzIDNC
IDQxIDAwIDFCIDI1IDQxIDA0IDAxIEEyIDAxIDVDIDQxIDAzIDY5ICBBLjtBLi4lQS4uLi5cQS5p
CiAgICBEQjQwOiA0MSAwMSAxNSAyRCA0MSAwNCAwMSAyQSAwMSA1QyA0MSA1NiAwMCA0MCAwRiBF
NSAgQS4uLUEuLiouXEFWLkAuLgogICAgREI1MDogNDAgODAgMDMgNzMgNDAgMDAgMDEgMDIgMDYg
NUMgNDAgNTYgMDAgNDAgMDMgNkIgIEAuLnNALi4uLlxAVi5ALmsKICAgIERCNjA6IDQwIDAwIDAx
IDAyIDA2IDVDIDQwIDAzIDYzIDQwIDAwIDAxIDAyIDA2IDVDIDQwICBALi4uLlxALmNALi4uLlxA
CiAgICBEQjcwOiAwMyA3QiA0MCAwMCAwOSA2NSA0MCAwRiAwMSAwMiAwNiA1QyA0MCAzRSAyNSA0
MSAgLntALi5lQC4uLi5cQD4lQQogICAgREI4MDogMDQgNDcgMTAgMDEgMzMgMjUgNDEgMDQgMkQg
MDUgNDYgMDQgMDAgMDAgMDAgMDMgIC5HLi4zJUEuLS5GLi4uLi4KICAgIERCOTA6IDYzIDQwIDAw
IDAxIDAyIDA2IDVDIDQwIDAzIDZCIDQwIDAwIDAxIDAyIDA2IDVDICBjQC4uLi5cQC5rQC4uLi5c
CiAgICBEQkEwOiA0MCAwMyA3MyA0MCAwMCAwMSAwMiAwNiA1QyA0MCAwMyA3QiA0MCAwMCAwMSAw
MiAgQC5zQC4uLi5cQC57QC4uLgogICAgREJCMDogMDYgNUMgNDAgNDMgRDcgMDAgMEQgMjUgMDMg
NUMgMDIgMEQgMjUgMDEgNUMgMDEgIC5cQEMuLi4lLlwuLiUuXC4KICAgIERCQzA6IDAzIDI5IDQw
IDAxIDIxIDI1IDQwIDBBIDJEIDI1IDQwIDMyIDRBIDI1IDA0IDVDICAuKUAuISVALi0lQDJKJS5c
CiAgICBEQkQwOiAwMSA0OSA0MiAwMSA1MSAwQSAzMyAyNSA0MCAwMSAzRSAyNSA0MCAwMCA0OSAy
NiAgLklCLlEuMyVALj4lQC5JJgogICAgREJFMDogMDEgMDIgNjUgMDEgMDEgNDMgQ0EgMDEgNEEg
MDUgMDQgNUMgRjAgOEYgRkYgMDAgIC4uZS4uQy4uSi4uXC4uLi4KICAgIERCRjA6IDQ0IDU0IDAx
IDAyIDY1IDAxIDAyIDQzIENBIDAxIDAxIDA1IDA2IDVDIDAxIDAwICBEVC4uZS4uQy4uLi4uXC4u
CiAgICBEQzAwOiAwMCA4MCAwMyAwMCA0MCAwNiA1QyAwMiA2QSAwMSA0MCAwMiBCOCAwMSAwNCA1
QyAgLi4uLkAuXC5qLkAuLi4uXAogICAgREMxMDogMDggQTUgMDEgMUYgM0QgQTUgMDEgMDAgNDYg
N0MgMDEgMDIgNjUgMDEgMDMgNDMgIC4uLi49Li4uRnwuLmUuLkMKICAgIERDMjA6IENBIDAxIDMy
IEE1IDAxIDAxIDNEIDhEIDAwIDAwIDAwIDQ0IENBIDAxIDNEIEE1ICAuLjIuLi49Li4uLkQuLj0u
CiAgICBEQzMwOiAwMSAwMCA0NCBDQSAwMSAwMyAzMSA0MSAwMSAwMyAxOSA0MCAwMCA1NiAxOCA0
MCAgLi5ELi4uMUEuLi5ALlYuQAogICAgREM0MDogM0IgMDIgNDAgMDMgMjggNDAgMDYgNUMgMDMg
NjggNDAgMDYgNUMgMDMgQTggNDAgIDsuQC4oQC5cLmhALlwuLkAKICAgIERDNTA6IDA2IDVDIDAz
IEU4IDQwIDA2IDVDIDA0IDAyIDAwIDQwIDNFIDI1IDQxIDA0IDQ3ICAuXC4uQC5cLi4uQD4lQS5H
CiAgICBEQzYwOiBDQSAwMSAzMyAyNSA0MSAwNCAyRCAwNSA0NiAwNCAwMCAwMCAwMCA0MyA5RCAw
MSAgLi4zJUEuLS5GLi4uLkMuLgogICAgREM3MDogM0EgMDAgMDAgNUIgNjYgRkYgMkQgMEQgNDIg
MzQgMDIgMDMgMEMgNDggMDAgMDAgIDouLltmLi0uQjQuLi5ILi4KICAgIERDODA6IDAxIDhEIDA4
IDVDIDMyIDAwIDAxIDA1IDA5IDVDIDAwIDFDIDAyIDAwIDAxIDA1ICAuLi5cMi4uLi5cLi4uLi4u
CiAgICBEQzkwOiAwQSA1QyAxMCAxMSAzRCAxMiAyRCAwRCA0MiAwNCAwMCAyQyAyNSAwMCAwMSAz
RCAgLlwuLj0uLS5CLi4sJS4uPQogICAgRENBMDogMjUgMDAgMDYgNDkgRDUgMDEgNTYgMDggNDgg
MDMgMjUgNDEgMTAgMEQgNjUgOTcgICUuLkkuLlYuSC4lQS4uZS4KICAgIERDQjA6IDQ4IDQwIDA3
IDY1IDk3IDQ4IEJGIDMzIDI1IDQxIDAxIDNFIDI1IDQxIDAwIDQ5ICBIQC5lLkguMyVBLj4lQS5J
CiAgICBEQ0MwOiAwNyAwMiAwRCAyNSAzQiA0OCAwMSA1NCAzMCAzQiA0OCAwRCAyNSAzQyA0OCAw
MSAgLi4uJTtILlQwO0guJTxILgogICAgRENEMDogNTQgMzAgM0MgNDggNTEgMzIgNUIgN0EgMTgg
MDAgMDAgMDAgMDAgMDAgMUMgMDAgIFQwPEhRMlt6Li4uLi4uLi4KICAgIERDRTA6IDA0IDAwIDM4
IDAwIDA4IDAwIDU0IDAwIDBDIDAwIDcwIDAwIDEwIDAwIDhDIDAwICAuLjguLi5ULi4ucC4uLi4u
CiAgICBEQ0YwOiAxNCAwMCA1QyAwMCAwMSAwMiAwMCAwNCAwMiAyNSAwMSAwNCAwMyAzMSA0MSAw
MCAgLi5cLi4uLi4uJS4uLjFBLgogICAgREQwMDogMDkgMEQgNDEgMEYgMDAgMTUgMEQgNDEgMDEg
NjYgRkYgMkQgMEQgNDIgNTAgMDAgIC4uQS4uLi5BLmYuLS5CUC4KICAgIEREMTA6IDJEIDBBIDQy
IDQxIDAzIDBDIDQ4IDAwIDAwIDA3IEE1IDY4IDQ4IEZFIDAxIDBEICAtLkJBLi5ILi4uLmhILi4u
CiAgICBERDIwOiA2OCA0OCAxMSAxMSA1MCAwMiA0QSAwRCA2QiA0OCAwMSAwMCA0OSA0MSAwMCAw
MiAgaEguLlAuSi5rSC4uSUEuLgogICAgREQzMDogMjUgMDEgMTMgNTQgMDggNjggNDggNTQgMDAg
NkEgNDggM0EgMDAgMDAgNUIgN0EgICUuLlQuaEhULmpIOi4uW3oKICAgIERENDA6IDBDIDAwIDAw
IDAwIDA0IDAwIDA4IDAwIDBDIDAwIDEwIDAwIDE0IDAwIDk2IDAwICAuLi4uLi4uLi4uLi4uLi4u
CiAgICBERDUwOiAwMSAwMSAwNCAwMCAzNyAwMCAwMCA1MiAzRSA1NSAwMCAwMCAwMiBFNCAwMCAx
NiAgLi4uLjcuLlI+VS4uLi4uLgogICAgREQ2MDogMDAgNjYgMUMgMkQgMEMgNDIgMDQgMDAgNTIg
MTIgNTIgM0UgMDEgMEMgRDggMDkgIC5mLi0uQi4uUi5SPi4uLi4KICAgIERENzA6IDA2IDAwIDAx
IDY0IDgwIDBBIDFDIDAwIDAyIDA1IDAwIDA4IDAwIDAwIDAwIDAyICAuLi5kLi4uLi4uLi4uLi4u
CiAgICBERDgwOiAwQyAwMSAwOCAwMCA1MiAxRiAwMyAwOCA0MSA4MCAwQSAwOSAwRCA0MSAwMyAw
MCAgLi4uLlIuLi5BLi4uLkEuLgogICAgREQ5MDogNjYgRkYgMkQgMEQgNDIgOTIgMDAgMkQgMEEg
NDIgNDEgMDMgMjQgNDEgMDAgMDAgIGYuLS5CLi4tLkJBLiRBLi4KICAgIEREQTA6IDAxIDA1IDgy
IDAwIDBDIDAwIDIwIEMwIDVDIDBBIDgzIDAwIDAwIEZDIDQxIDAyICAuLi4uLi4gLlwuLi4uLkEu
CiAgICBEREIwOiAwNSAwMCAzMCA3NSAwMCAwMyA1MiAzRiAwMiAwNSAwMCBBMCA4NiAwMSAwMyA1
MiAgLi4wdS4uUj8uLi4uLi4uUgogICAgRERDMDogM0YgMDIgMDUgMDAgNDggRTggMDEgMDMgNTIg
M0YgMDIgMDUgMDAgMzAgNzUgMDAgID8uLi5ILi4uUj8uLi4wdS4KICAgIERERDA6IDAzIDUyIDNG
IDAyIDA1IDAwIDk4IEFCIDAyIDAzIDUyIDNGIDVCIDdBIDA0IDAwICAuUj8uLi4uLi4uUj9bei4u
CiAgICBEREUwOiAxOCAxMCAwOCAwNCA4OSAwMSAwMSAwMSAwOCAwMCAzNyAwMCAwMCAwMyA4OCAw
MCAgLi4uLi4uLi4uLjcuLi4uLgogICAgRERGMDogMjggMDggMDMgMDkgMDAgMDAgMDMgMkEgNDEg
MDAgMDMgMjIgNDMgNDEgMDEgMjIgICguLi4uLi4qQS4uIkNBLiIKICAgIERFMDA6IDI4IDA4IDQ0
IDVDIDYyIDI4IDA4IEY4IDQxIDQyIDIyIDAwIDYzIDAxIDM5IDAwICAoLkRcYiguLkFCIi5jLjku
CiAgICBERTEwOiA2MyAwOCA3RSAwMCA2MyAwNCBFNCAwMCA1QSA1QSA0MyA4MyAwMSAwMSAyNCA5
MyAgYy5+LmMuLi5aWkMuLi4kLgogICAgREUyMDogMEEgMDAgMDAgMDEgMjQgOTQgMEEgMDEgMDAg
MDEgMDQgQTMgMEEgMDIgMDAgMDEgIC4uLi4kLi4uLi4uLi4uLi4KICAgIERFMzA6IDA0IEE0IDBB
IDA2IDAwIDAxIDA0IEE1IDBBIDBBIDAwIDAxIDA0IEE2IDBBIDBFICAuLi4uLi4uLi4uLi4uLi4u
CiAgICBERTQwOiAwMCAwMSAwNCBBNyAwQSAxMiAwMCAwMSAwNCBBOCAwQSAxNiAwMCAwMSAwNCBB
OSAgLi4uLi4uLi4uLi4uLi4uLgogICAgREU1MDogMEEgMUEgMDAgMDEgMDQgQUEgMEEgMUUgMDAg
MkQgMEQgNDIgMjIgMDAgNDMgNzggIC4uLi4uLi4uLi0uQiIuQ3gKICAgIERFNjA6IDAxIDVCIDIx
IDY1IDAwIDAyIDAzIDIyIDQzIDQwIDAzIDBBIDQxIDQ0IDUyIDNFICAuWyFlLi4uIkNALi5BRFI+
CiAgICBERTcwOiAzNyAwMiAwMCA0QyAwOSA0MSAwMSA0OSA5RSAwMCA1NCAyMCAwMCAwMCA1NCAz
MCAgNy4uTC5BLkkuLlQgLi5UMAogICAgREU4MDogMDAgMDAgMTUgMEQgNDEgMDEgNEMgMDkgNDEg
MDEgNDkgQjEgMDAgNTQgMjggMDAgIC4uLi5BLkwuQS5JLi5UKC4KICAgIERFOTA6IDAwIDU0IDM4
IDAwIDAwIDM3IDAwIDAwIDAzIDI0IDQwIDE2IDAwIDIxIDI1IDQwICAuVDguLjcuLi4kQC4uISVA
CiAgICBERUEwOiAwNCA1NSAwMCAwMCAwMiBFQSAwMCAwMCAyQyBFMiAwMCA0MCA2NiAxQyAwMyAw
QyAgLlUuLi4uLi4sLi5AZi4uLgogICAgREVCMDogNDAgMDggMDAgM0UgMEQgNDAgMDAgMDAgNDQg
REUgMDAgMkQgMEMgNDIgMDggMDAgIEAuLj4uQC4uRC4uLS5CLi4KICAgIERFQzA6IDUyIDEyIDM3
IDAwIDAwIDQzIDc4IDAxIDAxIDA1IDkxIDBBIDAwIDAwIDAwIDAwICBSLjcuLkN4Li4uLi4uLi4u
CiAgICBERUQwOiAzQyAwRCA5MiAwQSAwMCAwMCA0NCA3OCAwMSAzQyAyNSBFNyAwQSAwNyA0OSAx
NiAgPC4uLi4uRHguPCUuLi5JLgogICAgREVFMDogMDEgMDEgMDUgOTEgMEEgMEUgMDAgMDAgMDAg
MDMgMDAgMDEgOTIgMEEgNUMgMDUgIC4uLi4uLi4uLi4uLi4uXC4KICAgIERFRjA6IDkyIDBBIDAw
IEZGIDAwIEZGIDBGIDAwIEZGIDAwIDAxIDA1IDMyIDBBIDA1IDAwICAuLi4uLi4uLi4uLi4yLi4u
CiAgICBERjAwOiAwMCAwMCA1MSAwQSAwMSAwNSAzMiAwQSAwMSAwMCAwMCAwMCAwMyAwMCA0MSBF
NyAgLi5RLi4uMi4uLi4uLi5BLgogICAgREYxMDogMEEgM0UgNjIgNDEgNDEgNDkgMjggMDEgNTEg
MEEgM0UgMjUgNDEgMDAgNDQgNTEgIC4+YkFBSSguUS4+JUEuRFEKICAgIERGMjA6IDAxIDNFIDI1
IDQxIDA3IDQ5IDc4IDAxIDAxIDA1IDkxIDBBIDBFIDAwIDAwIDAwICAuPiVBLkl4Li4uLi4uLi4u
CiAgICBERjMwOiAwMSAwMiA5MiAwQSAwMSAwMSAwNSA5MSAwQSAwMyAwMCAwMCAwMCAwMyAzOCA0
MSAgLi4uLi4uLi4uLi4uLi44QQogICAgREY0MDogOTIgMEEgMTUgMjUgNDEgMDQgM0MgRTIgOUEg
MEEgNDEgNDUgNzggMDEgNEEgRTUgIC4uLiVBLjwuLi5BRXguSi4KICAgIERGNTA6IDk5IDBBIDA0
IDQ0IDc4IDAxIDVDIDI1IEYzIDA5IEZFIDIyIDJEIDY1IDAwIDAxICAuLi5EeC5cJS4uLiItZS4u
CiAgICBERjYwOiAzRSA2NSAwMCAwNCA0NSAxMiAwMCAwMSAxQSAyOCAwOCAwMCA1QiAwMCBFNSAw
MCAgPmUuLkUuLi4uKC4uWy4uLgogICAgREY3MDogMDIgMDIgMTQgMDAgM0QgMjUgMDIgMDEgNDQg
MUMgMDAgM0QgMjUgMDIgMDIgNDQgIC4uLi49JS4uRC4uPSUuLkQKICAgIERGODA6IDNFIDAwIDNE
IDI1IDAyIDAzIDQ0IDYzIDAwIDVCIDJDIDAyIDAxIDQxIDAzIDA1ICA+Lj0lLi5EYy5bLC4uQS4u
CiAgICBERjkwOiAwMCBGRiBGRiBGRiBGRiAzMyAwMiAwMCA0MCAzRSAwMSAwMCAwMCA0OCAzOSAw
MCAgLi4uLi4zLi5APi4uLkg5LgogICAgREZBMDogMkMgMDUgMDEgMDEgMDAgMDAgMDAgMkMgMDIg
MDAgNDAgNUIgM0QgQjkgMDIgMDIgICwuLi4uLi4sLi5AWz0uLi4KICAgIERGQjA6IDQ0IDVFIDAw
IDNEIDAxIDAwIDAxIDQ1IDUxIDAwIDMyIDAxIDAwIDAxIDVCIDMyICBEXi49Li4uRVEuMi4uLlsy
CiAgICBERkMwOiAwMSAwMSAwMCAwMiAwMSAwMCAwMSAwMiBCOSAwMiAwMiA1QiAyQyAwMSAwMCAw
MSAgLi4uLi4uLi4uLi5bLC4uLgogICAgREZEMDogNUIgM0QgMDUgMDAgMDAgMDAgMDAgMDAgNDkg
NzcgMDAgM0QgMDUgMDEgMDAgMDAgIFs9Li4uLi4uSXcuPS4uLi4KICAgIERGRTA6IDAwIDAwIDQ0
IEUwIDAwIDU2IDAwIDQzIDAzIDBEIDQwIDFGIDAwIDAzIDAxIDAwICAuLkQuLlYuQy4uQC4uLi4u
CiAgICBERkYwOiAwMCAzRCAwNSAwMSAwMCAwMCAwMCAwMCA0NCA5NSAwMCAwMyAwMSAwMCAwMSAw
MyAgLj0uLi4uLi5ELi4uLi4uLgogICAgRTAwMDogNjUgNDAgMjAgMDMgMjIgNDMgNDAgNEMgMDIg
MDAgNDQgNDkgQTcgMDAgMzMgMjUgIGVAIC4iQ0BMLi5ESS4uMyUKICAgIEUwMTA6IDQwIDAxIDQz
IDk1IDAwIDJEIDJBIDQwIDQwIDFCIDI1IDQwIDAxIDAzIDIyIDQzICBALkMuLi0qQEAuJUAuLiJD
CiAgICBFMDIwOiA0MCAwMyAwMiAwMCA0NCAwMyAwMSA0MSAwMSA3RCAwMiAwMCAwMCAyNyAwNSA0
MCAgQC4uLkQuLkEufS4uLicuQAogICAgRTAzMDogMDIgMDAgMDAgMDAgMkQgMDIgNDEgMDAgMUIg
MDUgNDEgMDEgMkQgMDIgNDEgNDAgIC4uLi4tLkEuLi5BLi0uQUAKICAgIEUwNDA6IDNFIDAyIDAw
IDQxIDQ0IEUwIDAwIDAzIDAyIDAwIDQxIDQzIEI3IDAwIDAyIDAyICA+Li5BRC4uLi4uQUMuLi4u
CiAgICBFMDUwOiAwMCAwMCA1QiAwMCBEMSAwMSAwMiAwMSAwNCAwNCAzNyAwMCAwMCA0MiAyMSAw
MCAgLi5bLi4uLi4uLjcuLkIhLgogICAgRTA2MDogNjMgMDcgMjkgMDAgNjMgMDMgNjYgMDAgNjMg
MDIgRDUgMDAgNjMgMDQgRkEgMDAgIGMuKS5jLmYuYy4uLmMuLi4KICAgIEUwNzA6IDYzIDBDIDg1
IDAxIDYzIDBEIEE4IDAxIDVBIDVBIDQzIEQwIDAxIDAxIDBEIDFEICBjLi4uYy4uLlpaQy4uLi4u
CiAgICBFMDgwOiA0OCA5RiAwRiAwMSAwNSAxRSA0OCAwMCAwMCAwMCAwMCAwMSAwNSAxRiA0OCA3
RCAgSC4uLi4uSC4uLi4uLi5IfQogICAgRTA5MDogMDAgMDAgMDAgNjYgMDYgMDEgNEMgMUYgNDgg
MzkgMDAgMDMgMjQgNDYgNDIgMDAgIC4uLmYuLkwuSDkuLiRGQi4KICAgIEUwQTA6IDNFIDI1IDQ2
IDAwIDQ0IDU4IDAwIDAxIDI1IDFGIDQ4IDAwIDRBIDI1IDFCIDQ4ICA+JUYuRFguLiUuSC5KJS5I
CiAgICBFMEIwOiAxMCA0OSBEMCAwMSAwRCBFNSAxQiA0OCAwMiA1QiA0QSBBNSBDQiAwNSAwMSA0
OSAgLkkuLi4uLkguW0ouLi4uSQogICAgRTBDMDogRDAgMDEgNEEgMjUgMUIgNDggMDEgNDQgRDAg
MDEgNEEgMjUgMUMgNDggMTAgNDQgIC4uSiUuSC5ELi5KJS5ILkQKICAgIEUwRDA6IDc2IDAwIDRB
IEU1IDFCIDQ4IDAyIDQ5IDkxIDAwIDRBIDI1IDFDIDQ4IDA4IDQ5ICB2LkouLkguSS4uSiUuSC5J
CiAgICBFMEUwOiBEMCAwMSA0MyBDNSAwMCA0QSBFNSAxQiA0OCAwMSA0OSBEMCAwMSA0QSAyNSAx
QiAgLi5DLi5KLi5ILkkuLkolLgogICAgRTBGMDogNDggMTAgNDQgQzUgMDAgMEQgQTUgMUIgNDgg
MDMgMEQgNjUgMUIgNDggMDMgMDEgIEguRC4uLi4uSC4uZS5ILi4KICAgIEUxMDA6IDBEIDFEIDQ4
IDAwIDAwIDVDIDI1IDFCIDQ4IEVGIDAxIDRBIDI1IDFDIDQ4IDEwICAuLkguLlwlLkguLkolLkgu
CiAgICBFMTEwOiA0NCBCNyAwMCAwMSAwRCAxRCA0OCA5RiAwRiAwNyBFNSAxQiA0OCBGQyAwRCBF
NSAgRC4uLi4uSC4uLi4uSC4uLgogICAgRTEyMDogMUYgNDggMDEgMEQgMjUgMUIgNDggMTEgNUIg
NjYgMDYgMDMgMjQgNDYgNDIgMDAgIC5ILi4lLkguW2YuLiRGQi4KICAgIEUxMzA6IDNFIDI1IDQ2
IDAwIDQ5IEQwIDAxIDRBIDI1IDFCIDQ4IDAxIDQ0IEQwIDAxIDRBICA+JUYuSS4uSiUuSC5ELi5K
CiAgICBFMTQwOiAyNSAxQyA0OCAxMCA0NCBFQiAwMCA1QyBFNSAxQiA0OCBGRSAwMiA1QiA0QSA2
NSAgJS5ILkQuLlwuLkguLltKZQogICAgRTE1MDogRDAgMDUgMDIgNDQgMDcgMDEgMEQgMjUgMjMg
NDggMDEgM0QgOEQgMDAgMDAgMDAgIC4uLkQuLi4lI0guPS4uLi4KICAgIEUxNjA6IDQ0IDg0IDAx
IDAzIDA1IDQ2IDgwIEYwIEZBIDAyIDU2IDAwIDQxIDAzIDE5IDQxICBELi4uLkYuLi4uVi5BLi5B
CiAgICBFMTcwOiAwMCAyMSAwNSA0MSBGRiAwRiAwMCAwMCAyNyAwMiA0NiA0MCAzRSAwNSA0MSAw
MCAgLiEuQS4uLi4nLkZAPi5BLgogICAgRTE4MDogMDAgMDAgMDAgNDQgMzcgMDEgMkQgMEQgNDAg
MDEgMDAgMDEgOEEgMUQgNDggNDAgIC4uLkQ3Li0uQC4uLi4uSEAKICAgIEUxOTA6IDU2IDAwIDQx
IDAzIDE5IDQxIDAwIDIxIDAyIDQwIDQxIDI3IDAyIDQ2IDQwIDAxICBWLkEuLkEuIS5AQScuRkAu
CiAgICBFMUEwOiBBNSAyMiA0OCAwQyAwMSAwQSAyMiA0OCA0MCAxNSAwNSA0MCAwNCA1NiAwMCA0
MSAgLiJILi4uIkhALi5ALlYuQQogICAgRTFCMDogMDMgMjkgNDEgMDAgMkQgMEQgNDEgMDEgMDAg
MjEgMDIgNDAgNDEgMUIgMDUgNDAgIC4pQS4tLkEuLiEuQEEuLkAKICAgIEUxQzA6IDA4IDAxIDBB
IDIwIDQ4IDQwIDBEIEU1IDIwIDQ4IEMwIDA3IDI1IDIzIDQ4IEZFICAuLi4gSEAuLiBILi4lI0gu
CiAgICBFMUQwOiA0QSA2NSAyMyA0OCAwMSA0OSA3QyAwMSA1QiA0QSAyNSAxQiA0OCAwMSA0NCA5
RCAgSmUjSC5JfC5bSiUuSC5ELgogICAgRTFFMDogMDEgNEEgMjUgMUIgNDggMTAgNDkgRDAgMDEg
NEEgMjUgMUMgNDggMTAgNDQgOTUgIC5KJS5ILkkuLkolLkguRC4KICAgIEUxRjA6IDAxIDA3IEU1
IDFGIDQ4IEZFIDBEIDI1IDFCIDQ4IDExIDVCIDRBIDI1IDFCIDQ4ICAuLi4uSC4uJS5ILltKJS5I
CiAgICBFMjAwOiAwMSA0NCBEMCAwMSA0QSAyNSAxQiA0OCAxMCA0NCBEMCAwMSA0QSAyNSAxQyA0
OCAgLkQuLkolLkguRC4uSiUuSAogICAgRTIxMDogMTAgNDQgQjggMDEgMDcgQTUgMUIgNDggRkMg
MDcgNjUgMUIgNDggRkMgNUMgMjUgIC5ELi4uLi5ILi5lLkguXCUKICAgIEUyMjA6IDFCIDQ4IEVG
IDAxIDVCIDAwIDcxIDAwIDAzIDAxIDA4IDAwIDM3IDAwIDAwIDU2ICAuSC4uWy5xLi4uLi43Li5W
CiAgICBFMjMwOiAwMCAwMSAzRCBFNSAwMCAyMCA0OCAxQiAwMCAwMyAzOSA0MyAwMCAwMyAwMiAw
MSAgLi49Li4gSC4uLjlDLi4uLgogICAgRTI0MDogNDQgMDMgMDUgMDAgMDAgMDAgMTAgQzAgMkQg
MDkgMDAgMDAgMDEgMDIgODIgMDAgIEQuLi4uLi4uLS4uLi4uLi4KICAgIEUyNTA6IDAwIDAzIDAw
IDQwIDgzIDAwIDU2IDAwIDQxIDAzIDMxIDQxIDAwIDc1IDAyIDQwICAuLi5ALi5WLkEuMUEudS5A
CiAgICBFMjYwOiA0MSAwMyAyNSA0MSAyMCAzMyAzMSA0MSAwMCAzRCBFMiAwMCA0MSA0NyA2MSAw
MCAgQS4lQSAzMUEuPS4uQUdhLgogICAgRTI3MDogMkQgMEQgMDAgMDQgMDAgMDEgMDIgODIgMDAg
MDAgMDIgMDAgMDAgODMgMDAgNkUgIC0uLi4uLi4uLi4uLi4uLm4KICAgIEUyODA6IDAyIDAwIDQx
IDBGIDAxIDQwIDAwIDAyIDAyIDAwIDQwIDMzIDA1IDAxIDAxIDAwICAuLkEuLkAuLi4uQDMuLi4u
CiAgICBFMjkwOiAwMCAwMCAwOCAwMiAwMCAwMSA1QiAwMCBDRiAwMCAwMyAwMSAwMCAxMCAzNyAw
MCAgLi4uLi4uWy4uLi4uLi43LgogICAgRTJBMDogMDAgNTYgMDAgNDAgNEEgMjUgMDAgRUMgMDEg
NDQgMzEgMDAgNEEgMjAgMDUgRUMgIC5WLkBKJS4uLkQxLkogLi4KICAgIEUyQjA6IDFFIDAwIDQ5
IDMxIDAwIDAzIDI1IDQwIDAxIDAxIDA1IDA1IEVDIDAzIDAwIDAwICAuLkkxLi4lQC4uLi4uLi4u
CiAgICBFMkMwOiAwMCA0QSA2NSAwNSBFQyAwRiA0OSAyOSAwMCAzRCA2NSAwMiAwMCA0OSAzRCAw
MCAgLkplLi4uSSkuPWUuLkk9LgogICAgRTJEMDogMkMgMjggMDIgMDkgMDggM0QgRTUgMDIgMDAg
NDkgNDkgMDAgMkMgQTggMDIgMDkgICwoLi4uPS4uLklJLiwuLi4KICAgIEUyRTA6IDA4IDNEIDY1
IDAyIDAyIDQ5IDZDIDAwIDAxIDA1IDgyIDAwIDEwIDAwIDYwIEMwICAuPWUuLklsLi4uLi4uLmAu
CiAgICBFMkYwOiAwMSAwMSA4MyAwMCAwMCAwMSAwNSA4MiAwMCAxNCAwMCA2MCBDMCAwMiAwNSAw
MCAgLi4uLi4uLi4uLi5gLi4uLgogICAgRTMwMDogMEMgMDIgMDAgMDAgM0QgRTUgMDIgMDMgNDkg
ODIgMDAgMDEgMDEgODIgMDAgMDEgIC4uLi49Li4uSS4uLi4uLi4KICAgIEUzMTA6IDAyIDA1IDAx
IDBDIDAyIDAwIDAwIDQzIDgyIDAwIDU0IDAwIDYzIEMwIDAxIDAxICAuLi4uLi4uQy4uVC5jLi4u
CiAgICBFMzIwOiA2NCBDMCAwMCAwMSAyMSA2NSBDMCAwMiAwMSAwMSA2NiBDMCAwMSAwMSAzMSA2
NyAgZC4uLiFlLi4uLmYuLi4xZwogICAgRTMzMDogQzAgMDIgMDEgMDEgRTggQzAgMDMgM0QgNjUg
MDIgMDEgNDQgQUYgMDAgM0QgRTUgIC4uLi4uLi49ZS4uRC4uPS4KICAgIEUzNDA6IDAyIDAxIDQ0
IEFGIDAwIDUxIDAyIDRBIEU1IEEwIDIxIDgwIDQ5IEFGIDAwIDNFICAuLkQuLlEuSi4uIS5JLi4+
CiAgICBFMzUwOiAyNSA0MCAwMSA0OSBDRSAwMCAwMSAwNSAwNSBFQyAwMSAwMCAwMCAwMCA0QSA2
NSAgJUAuSS4uLi4uLi4uLi5KZQogICAgRTM2MDogMDUgRUMgMEYgNDkgQzYgMDAgNUIgMDAgRjkg
MDIgMDIgMDEgMDAgMDAgMzcgMDAgIC4uLkkuLlsuLi4uLi4uNy4KICAgIEUzNzA6IDAwIDNEIDI1
IDAxIDAxIDQ0IDdCIDAwIDNEIDI1IDAxIDAyIDQ0IDY4IDAxIDNEICAuPSUuLkR7Lj0lLi5EaC49
CiAgICBFMzgwOiAyNSAwMSAwMCA0OSBDQSAwMiAzRCAwNSAwMCAwMCAwMCAwMCAwMCA0OSAzOSAw
MCAgJS4uSS4uPS4uLi4uLkk5LgogICAgRTM5MDogM0EgMDAgMDAgMEQgMjUgNjggMTggMDEgNEEg
NjUgNjggMTggMDEgNDQgMzAgMDAgIDouLi4laC4uSmVoLi5EMC4KICAgIEUzQTA6IDVCIDU0IDIw
IDY4IDE4IDUyIDNDIDAzIDAwIDQwIDI0IDAxIDNFIDM5IDQwIDAwICBbVCBoLlI8Li5AJC4+OUAu
CiAgICBFM0IwOiA0NCA3NyAwMCA0QSBBNSAyNCAwMSAwOCA0NCA0QiAwMCAwMyAzOSA0MCAwMCAz
RSAgRHcuSi4kLi5ESy4uOUAuPgogICAgRTNDMDogRTUgNDAgMDAgNDkgNjIgMDAgMDMgRTUgNDAg
MjAgMDEgMDIgMjQgMDEgNDAgNEEgIC5ALkliLi4uQCAuLiQuQEoKICAgIEUzRDA6IEE1IDI0IDAx
IDA4IDQ0IDY3IDAwIDRBIEE1IDI0IDAxIDEwIDQ0IDZGIDAwIDU1ICAuJC4uRGcuSi4kLi5Eby5V
CiAgICBFM0UwOiAzOCAwMCA1QiAzRCA2NSAwMSAwMiA0NCBENyAwMCAwMiAwNSAwMCA2MCBFQSAw
MCAgOC5bPWUuLkQuLi4uLmAuLgogICAgRTNGMDogMDAgNTIgM0MgM0MgRjkgMjQgMDEgMDAgNDQg
QzEgMDAgMDcgMjUgMTUgMDEgRkUgIC5SPDwuJC4uRC4uLiUuLi4KICAgIEU0MDA6IDRBIEE1IDI0
IDAxIDEwIDQ0IDk4IDAwIDAzIDAwIDQwIDI0IDAxIDAzIEY5IDQwICBKLiQuLkQuLi4uQCQuLi5A
CiAgICBFNDEwOiAwMCAzRSAyNSA0MCAwMCA0OSBCNCAwMCAwMyAyNSA0MCA2OCAwMSAwMiAyNCAw
MSAgLj4lQC5JLi4uJUBoLi4kLgogICAgRTQyMDogNDAgNEEgQTUgMjQgMDEgMTAgNDQgQjkgMDAg
NUQgMDUgMDAgMDAgMDAgMDAgRkYgIEBKLiQuLkQuLl0uLi4uLi4KICAgIEU0MzA6IDQwIDdFIDA1
IDAwIDUyIDI5IDA3IDBEIDE4IDAxIEY4IEZFIDQzIDNBIDAxIDAyICBAfi4uUikuLi4uLi5DOi4u
CiAgICBFNDQwOiAwNSAwMCAwMCA0NiBDMyAyMyAwNyAyNSAxNSAwMSBGRSA0QSBBNSAwMSAxNyAw
MyAgLi4uRi4jLiUuLi5KLi4uLgogICAgRTQ1MDogNDQgM0EgMDEgNTYgMDggNDAgMDMgMzEgNDAg
MDEgMTUgMEQgNDAgMEUgMEYgMEQgIEQ6LlYuQC4xQC4uLkAuLi4KICAgIEU0NjA6IDQwIDBGIDA0
IDAxIDBBIDE4IDE3IDQwIDVDIEIxIDE5IDE3IEZDIDAxIDUxIDA1ICBALi4uLi4uQFwuLi4uLlEu
CiAgICBFNDcwOiAwNyBBNSAwMSAxNyBGQyAwMSAyNSAwNSAxNyA0MCAwMSAwNSAwMiAxNyAwMCAw
MCAgLi4uLi4uJS4uQC4uLi4uLgogICAgRTQ4MDogM0MgMDAgMDEgNjUgMUMgMTcgMDEgNTQgMDgg
MDQgMTcgMDEgQTUgMDUgMTcgRTggIDwuLmUuLi5ULi4uLi4uLi4KICAgIEU0OTA6IDBEIEE1IDE5
IDE3IDEwIDRBIDY1IDI0IDE3IDAyIDQ0IDJEIDAxIDBEIDY1IDE5ICAuLi4uLkplJC4uRC0uLmUu
CiAgICBFNEEwOiAxNyAwMyAwMSAwMSA0MiAwMSAwMCAwMSAwMSA0NiAwMSAwMCAwMSAwMSA0QSAw
MSAgLi4uLkIuLi4uRi4uLi5KLgogICAgRTRCMDogMDAgMDEgMDEgNEUgMDEgMDAgMDEgMDEgNTIg
MDEgMDAgMDEgMDEgNTYgMDEgMDAgIC4uLk4uLi4uUi4uLi5WLi4KICAgIEU0QzA6IDNEIDY1IDAx
IDAyIDQ5IDY3IDAxIDVDIDBEIDE4IDAxIEY4IEZGIDAxIDAxIDVCICA9ZS4uSWcuXC4uLi4uLi5b
CiAgICBFNEQwOiA1NiAwMCA0MSAwMyAzMSA0MSAwMSAwOSAyNSA0MSAwMyAxNSAyNSA0MSAwMiA2
NiAgVi5BLjFBLi4lQS4uJUEuZgogICAgRTRFMDogRkYgMkQgMEQgNDIgRDEgMDIgMkQgMEEgNDIg
NDEgMjYgMDUgMDAgMEEgMDAgMDAgIC4tLkIuLi0uQkEmLi4uLi4KICAgIEU0RjA6IDAwIDAzIDA0
IDQxIDAwIDAwIDI3IDAyIDQxIDQwIDNFIDA1IDQwIDAwIDAwIDAxICAuLi5BLi4nLkFAPi5ALi4u
CiAgICBFNTAwOiAwMCA0NSBBMSAwMSAwMyAwRCA0MCBGRiBGRiA2NiBGRiAyRCAwRCA0MiBFMSAw
MiAgLkUuLi4uQC4uZi4tLkIuLgogICAgRTUxMDogNTYgMDAgNDEgMDMgMzkgNDEgMDEgMTUgMjUg
NDEgMDIgMkQgMEEgNDIgNDEgMDMgIFYuQS45QS4uJUEuLS5CQS4KICAgIEU1MjA6IDBDIDQ4IDAw
IDAwIDAxIDBBIDMwIDFCIDQwIDNBIDAwIDAwIDNEIDY1IDAxIDBCICAuSC4uLi4wLkA6Li49ZS4u
CiAgICBFNTMwOiA0OSAyQyAwMiAyMCAwNSAwMCA2NCAwMCAwMCAwMCAwMyAwQyA0OCAwMiAwMCAw
MyAgSSwuIC4uZC4uLi4uSC4uLgogICAgRTU0MDogMDAgNDEgNDAgMDEgMEYgMjUgNDEgMTAgMDkg
MEQgNDEgREYgRjcgNEIgQTUgMDEgIC5BQC4uJUEuLi5BLi5LLi4KICAgIEU1NTA6IDA0IDQ0IEYw
IDAxIDBGIDY1IDQxIDA4IDAzIDBDIDQ4IDAwIDAwIDRBIDA1IDlDICAuRC4uLmVBLi4uSC4uSi4u
CiAgICBFNTYwOiAxQiAwMSAwMCAwMCAwMCA0NCAxNSAwMiAwMyAwQyA0OCAwMiAwMCAzQyAwMiA0
MSAgLi4uLi5ELi4uLkguLjwuQQogICAgRTU3MDogMDEgNDAgNDkgMTUgMDIgM0MgMDIgNDAgMDEg
NDEgNDQgQ0EgMDIgMDMgMEMgNDggIC5ASS4uPC5ALkFELi4uLkgKICAgIEU1ODA6IDAyIDAwIDA3
IDI1IDQwIDAxIEVGIDAxIDAyIDQxIDAxIDQwIDAxIDBBIDQwIDAxICAuLi4lQC4uLi5BLkAuLkAu
CiAgICBFNTkwOiA0MSA0MyBDQSAwMiA1NiAwMCA0MCAwMyA4RCA0MCAwQyAwMCAzRCA2NSAwMSAx
OCAgQUMuLlYuQC4uQC4uPWUuLgogICAgRTVBMDogNDQgNEYgMDIgMDMgOEQgNDAgM0UgMDAgM0Qg
NjUgMDEgMTkgNDQgNEYgMDIgMDMgIERPLi4uQD4uPWUuLkRPLi4KICAgIEU1QjA6IEE5IDQwIDAx
IDMzIEE1IDQwIDE0IDAzIDMxIDQwIDAxIDA5IDI1IDQwIDAzIDE1ICAuQC4zLkAuLjFALi4lQC4u
CiAgICBFNUMwOiAyNSA0MCAwNCAwRiAwRCA0MCAwMSAwMSA0QiBBNSAwMSAwNCA0NCA2QyAwMiAw
RiAgJUAuLi5ALi5LLi4uRGwuLgogICAgRTVEMDogMEQgNDAgMDAgMDIgNTYgMDAgNDEgMDMgMjkg
NDEgMDEgMzMgMjUgNDEgMTQgMDMgIC5ALi5WLkEuKUEuMyVBLi4KICAgIEU1RTA6IDBDIDQ4IDAw
IDAwIDRBIDA1IDlDIDFCIDAxIDAwIDAwIDAwIDQ0IEE4IDAyIDAzICAuSC4uSi4uLi4uLi5ELi4u
CiAgICBFNUYwOiAwQyA0OCAwMiAwMCA0QSAyNSA0MCAwMSAxMCA0OSBBOCAwMiAzQyAyMiA0MyAw
MSAgLkguLkolQC4uSS4uPCJDLgogICAgRTYwMDogNDEgNDkgQTggMDIgMDMgMUEgNDggNDAgM0Mg
MEEgMDAgMDEgNDAgNDQgQ0EgMDIgIEFJLi4uLkhAPC4uLkBELi4KICAgIEU2MTA6IDAzIDFBIDQ4
IDQwIDA3IDI1IDAwIDAxIEZFIDAzIDBDIDQ4IDAyIDAwIDAxIDIyICAuLkhALiUuLi4uLkguLi4i
CiAgICBFNjIwOiA0MyAwMSA0MSAwNyAwRCA0MCAwMSBFRiBGNyAwMyAxQSA0OCA0MCAwMSAwQSAw
MCAgQy5BLi5ALi4uLi5IQC4uLgogICAgRTYzMDogMDEgNDAgM0EgMDAgMDAgNUIgN0EgMjggMDAg
MDAgQ0EgOUEgM0IgODAgN0MgODEgIC5AOi4uW3ooLi4uLjsufC4KICAgIEU2NDA6IDRBIDAwIDJG
IDY4IDU5IDAwIDk0IDM1IDc3IDAwIDAwIDAwIDAwIDAwIDAyIDA0ICBKLi9oWS4uNXcuLi4uLi4u
CiAgICBFNjUwOiAwMCAwMCAwNCAwOCAwMCAwMCAyNiAwQyAwMCAwMCAyOCAxMCAwMCAwMCAyQSAx
NCAgLi4uLi4uJi4uLiguLi4qLgogICAgRTY2MDogMDAgRkYgRkYgRkYgRkYgRkYgRkYgRkYgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAgIEU2NzA6IDAwIDAwIDAw
IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4u
CiAgICBFNjgwOiAwMCAwMCAwMCAwMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLi4uLgoKU1NEVCBAIDB4MDAwMDAwMDAwMDAwMDAwMAogICAgMDAwMDogNTMgNTMgNDQgNTQg
NEUgMDQgMDAgMDAgMDIgREYgNDEgNEQgNDQgMDAgNDEgNkQgIFNTRFROLi4uLi5BTUQuQW0KICAg
IDAwMTA6IDQxIDZEIDY0IDU0IDYxIDYyIDZDIDY1IDAxIDAwIDAwIDAwIDQ5IDRFIDU0IDRDICBB
bWRUYWJsZS4uLi5JTlRMCiAgICAwMDIwOiAzMSAwMyAyMyAyMCAxMCA0OSA0MiA1QyA1RiA1MyA0
MiA1RiAwOCA1NCA0NyA1MCAgMS4jIC5JQlxfU0JfLlRHUAogICAgMDAzMDogNDkgMEEgMEYgNUIg
ODIgNDcgMDUgNTAgNTQgNDkgNEYgMDggNUYgNDggNDkgNDQgIEkuLlsuRy5QVElPLl9ISUQKICAg
IDAwNDA6IDBEIDQxIDREIDQ0IDQ5IDQ2IDMwIDMzIDMxIDAwIDA4IDVGIDQzIDQ5IDQ0IDBEICAu
QU1ESUYwMzEuLl9DSUQuCiAgICAwMDUwOiA0MSA0RCA0NCA0OSA0NiAzMCAzMyAzMSAwMCAwOCA1
RiA1NSA0OSA0NCAwMCAxNCAgQU1ESUYwMzEuLl9VSUQuLgogICAgMDA2MDogMjIgNUYgNDMgNTIg
NTMgMDAgMDggNTIgNDIgNTUgNDYgMTEgMTEgMEEgMEUgODYgICJfQ1JTLi5SQlVGLi4uLi4KICAg
IDAwNzA6IDA5IDAwIDAxIDAwIDAwIEM0IEZFIDAwIDEwIDAwIDAwIDc5IDAwIEE0IDUyIDQyICAu
Li4uLi4uLi4uLnkuLlJCCiAgICAwMDgwOiA1NSA0NiAxNCAwOSA1RiA1MyA1NCA0MSAwMCBBNCAw
QSAwRiA1QiA4MiA0MCAzQyAgVUYuLl9TVEEuLi4uWy5APAogICAgMDA5MDogNDEgNTMgNEQgNTQg
MDggNUYgNDEgNDQgNTIgMDAgMDggNUYgNDggNDkgNDQgMEQgIEFTTVQuX0FEUi4uX0hJRC4KICAg
IDAwQTA6IDQxIDUzIDREIDU0IDMwIDMwIDMwIDMxIDAwIDA4IDVGIDQzIDQ5IDQ0IDBEIDQxICBB
U01UMDAwMS4uX0NJRC5BCiAgICAwMEIwOiA1MyA0RCA1NCAzMCAzMCAzMCAzMSAwMCAwOCA1RiA1
NSA0OSA0NCAwMCAxNCA0OSAgU01UMDAwMS4uX1VJRC4uSQogICAgMDBDMDogMzcgNUYgNDMgNTIg
NTMgMDAgMDggNTIgNDIgNTUgNDYgMTEgNDcgMzYgMEIgNjIgIDdfQ1JTLi5SQlVGLkc2LmIKICAg
IDAwRDA6IDAzIDhDIDIxIDAwIDAxIDAxIDAxIDAwIDAwIDAwIDAxIDAwIDAwIDAwIDAwIDE3ICAu
LiEuLi4uLi4uLi4uLi4uCiAgICAwMEUwOiAwMCAwMCAxOSAwMCAyMyAwMCAwMSAwMCAwMCAwMCA1
QyA1RiA1MyA0MiAyRSA1MCAgLi4uLiMuLi4uLlxfU0IuUAogICAgMDBGMDogNTQgNDkgNEYgMDAg
MDEgOEMgMjEgMDAgMDEgMDEgMDEgMDAgMDAgMDAgMDEgMDAgIFRJTy4uLiEuLi4uLi4uLi4KICAg
IDAxMDA6IDAwIDAwIDAwIDE3IDAwIDAwIDE5IDAwIDIzIDAwIDAxIDAwIDAxIDAwIDVDIDVGICAu
Li4uLi4uLiMuLi4uLlxfCiAgICAwMTEwOiA1MyA0MiAyRSA1MCA1NCA0OSA0RiAwMCAwMSA4QyAy
MSAwMCAwMSAwMSAwMSAwMCAgU0IuUFRJTy4uLiEuLi4uLgogICAgMDEyMDogMDAgMDAgMDEgMDAg
MDAgMDAgMDAgMTcgMDAgMDAgMTkgMDAgMjMgMDAgMDEgMDAgIC4uLi4uLi4uLi4uLiMuLi4KICAg
IDAxMzA6IDAyIDAwIDVDIDVGIDUzIDQyIDJFIDUwIDU0IDQ5IDRGIDAwIDAxIDhDIDIxIDAwICAu
LlxfU0IuUFRJTy4uLiEuCiAgICAwMTQwOiAwMSAwMSAwMSAwMCAwMCAwMCAwMSAwMCAwMCAwMCAw
MCAxNyAwMCAwMCAxOSAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMDE1MDogMjMgMDAgMDEgMDAg
MDMgMDAgNUMgNUYgNTMgNDIgMkUgNTAgNTQgNDkgNEYgMDAgICMuLi4uLlxfU0IuUFRJTy4KICAg
IDAxNjA6IDAxIDhDIDIxIDAwIDAxIDAxIDAxIDAwIDAwIDAwIDAxIDAwIDAwIDAwIDAwIDE3ICAu
LiEuLi4uLi4uLi4uLi4uCiAgICAwMTcwOiAwMCAwMCAxOSAwMCAyMyAwMCAwMSAwMCAwNCAwMCA1
QyA1RiA1MyA0MiAyRSA1MCAgLi4uLiMuLi4uLlxfU0IuUAogICAgMDE4MDogNTQgNDkgNEYgMDAg
MDEgOEMgMjEgMDAgMDEgMDEgMDEgMDAgMDAgMDAgMDEgMDAgIFRJTy4uLiEuLi4uLi4uLi4KICAg
IDAxOTA6IDAwIDAwIDAwIDE3IDAwIDAwIDE5IDAwIDIzIDAwIDAxIDAwIDA1IDAwIDVDIDVGICAu
Li4uLi4uLiMuLi4uLlxfCiAgICAwMUEwOiA1MyA0MiAyRSA1MCA1NCA0OSA0RiAwMCAwMSA4QyAy
MSAwMCAwMSAwMSAwMSAwMCAgU0IuUFRJTy4uLiEuLi4uLgogICAgMDFCMDogMDAgMDAgMDEgMDAg
MDAgMDAgMDAgMTcgMDAgMDAgMTkgMDAgMjMgMDAgMDEgMDAgIC4uLi4uLi4uLi4uLiMuLi4KICAg
IDAxQzA6IDA2IDAwIDVDIDVGIDUzIDQyIDJFIDUwIDU0IDQ5IDRGIDAwIDAxIDhDIDIxIDAwICAu
LlxfU0IuUFRJTy4uLiEuCiAgICAwMUQwOiAwMSAwMSAwMSAwMCAwMCAwMCAwMSAwMCAwMCAwMCAw
MCAxNyAwMCAwMCAxOSAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMDFFMDogMjMgMDAgMDEgMDAg
MDcgMDAgNUMgNUYgNTMgNDIgMkUgNTAgNTQgNDkgNEYgMDAgICMuLi4uLlxfU0IuUFRJTy4KICAg
IDAxRjA6IDAxIDhDIDIxIDAwIDAxIDAxIDAxIDAwIDAwIDAwIDAxIDAwIDAwIDAwIDAwIDE3ICAu
LiEuLi4uLi4uLi4uLi4uCiAgICAwMjAwOiAwMCAwMCAxOSAwMCAyMyAwMCAwMSAwMCAwOCAwMCA1
QyA1RiA1MyA0MiAyRSA1MCAgLi4uLiMuLi4uLlxfU0IuUAogICAgMDIxMDogNTQgNDkgNEYgMDAg
MDEgOEMgMjEgMDAgMDEgMDEgMDEgMDAgMDAgMDAgMDEgMDAgIFRJTy4uLiEuLi4uLi4uLi4KICAg
IDAyMjA6IDAwIDAwIDAwIDE3IDAwIDAwIDE5IDAwIDIzIDAwIDAxIDAwIDA5IDAwIDVDIDVGICAu
Li4uLi4uLiMuLi4uLlxfCiAgICAwMjMwOiA1MyA0MiAyRSA1MCA1NCA0OSA0RiAwMCAwMSA4QyAy
MSAwMCAwMSAwMSAwMSAwMCAgU0IuUFRJTy4uLiEuLi4uLgogICAgMDI0MDogMDAgMDAgMDEgMDAg
MDAgMDAgMDAgMTcgMDAgMDAgMTkgMDAgMjMgMDAgMDEgMDAgIC4uLi4uLi4uLi4uLiMuLi4KICAg
IDAyNTA6IDBBIDAwIDVDIDVGIDUzIDQyIDJFIDUwIDU0IDQ5IDRGIDAwIDAxIDhDIDIxIDAwICAu
LlxfU0IuUFRJTy4uLiEuCiAgICAwMjYwOiAwMSAwMSAwMSAwMCAwMCAwMCAwMSAwMCAwMCAwMCAw
MCAxNyAwMCAwMCAxOSAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMDI3MDogMjMgMDAgMDEgMDAg
MEIgMDAgNUMgNUYgNTMgNDIgMkUgNTAgNTQgNDkgNEYgMDAgICMuLi4uLlxfU0IuUFRJTy4KICAg
IDAyODA6IDAxIDhDIDIxIDAwIDAxIDAxIDAxIDAwIDAwIDAwIDAxIDAwIDAwIDAwIDAwIDE3ICAu
LiEuLi4uLi4uLi4uLi4uCiAgICAwMjkwOiAwMCAwMCAxOSAwMCAyMyAwMCAwMSAwMCAwQyAwMCA1
QyA1RiA1MyA0MiAyRSA1MCAgLi4uLiMuLi4uLlxfU0IuUAogICAgMDJBMDogNTQgNDkgNEYgMDAg
MDEgOEMgMjEgMDAgMDEgMDEgMDEgMDAgMDAgMDAgMDEgMDAgIFRJTy4uLiEuLi4uLi4uLi4KICAg
IDAyQjA6IDAwIDAwIDAwIDE3IDAwIDAwIDE5IDAwIDIzIDAwIDAxIDAwIDBEIDAwIDVDIDVGICAu
Li4uLi4uLiMuLi4uLlxfCiAgICAwMkMwOiA1MyA0MiAyRSA1MCA1NCA0OSA0RiAwMCAwMSA4QyAy
MSAwMCAwMSAwMSAwMSAwMCAgU0IuUFRJTy4uLiEuLi4uLgogICAgMDJEMDogMDAgMDAgMDEgMDAg
MDAgMDAgMDAgMTcgMDAgMDAgMTkgMDAgMjMgMDAgMDEgMDAgIC4uLi4uLi4uLi4uLiMuLi4KICAg
IDAyRTA6IDBFIDAwIDVDIDVGIDUzIDQyIDJFIDUwIDU0IDQ5IDRGIDAwIDAxIDhDIDIxIDAwICAu
LlxfU0IuUFRJTy4uLiEuCiAgICAwMkYwOiAwMSAwMSAwMSAwMCAwMCAwMCAwMSAwMCAwMCAwMCAw
MCAxNyAwMCAwMCAxOSAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMDMwMDogMjMgMDAgMDEgMDAg
MEYgMDAgNUMgNUYgNTMgNDIgMkUgNTAgNTQgNDkgNEYgMDAgICMuLi4uLlxfU0IuUFRJTy4KICAg
IDAzMTA6IDAxIDhDIDIxIDAwIDAxIDAxIDAxIDAwIDAwIDAwIDAxIDAwIDAwIDAwIDAwIDE3ICAu
LiEuLi4uLi4uLi4uLi4uCiAgICAwMzIwOiAwMCAwMCAxOSAwMCAyMyAwMCAwMSAwMCAxMCAwMCA1
QyA1RiA1MyA0MiAyRSA1MCAgLi4uLiMuLi4uLlxfU0IuUAogICAgMDMzMDogNTQgNDkgNEYgMDAg
MDEgOEMgMjEgMDAgMDEgMDEgMDEgMDAgMDAgMDAgMDEgMDAgIFRJTy4uLiEuLi4uLi4uLi4KICAg
IDAzNDA6IDAwIDAwIDAwIDE3IDAwIDAwIDE5IDAwIDIzIDAwIDAxIDAwIDExIDAwIDVDIDVGICAu
Li4uLi4uLiMuLi4uLlxfCiAgICAwMzUwOiA1MyA0MiAyRSA1MCA1NCA0OSA0RiAwMCAwMSA4QyAy
MSAwMCAwMSAwMSAwMSAwMCAgU0IuUFRJTy4uLiEuLi4uLgogICAgMDM2MDogMDAgMDAgMDEgMDAg
MDAgMDAgMDAgMTcgMDAgMDAgMTkgMDAgMjMgMDAgMDEgMDAgIC4uLi4uLi4uLi4uLiMuLi4KICAg
IDAzNzA6IDEyIDAwIDVDIDVGIDUzIDQyIDJFIDUwIDU0IDQ5IDRGIDAwIDAxIDhDIDIxIDAwICAu
LlxfU0IuUFRJTy4uLiEuCiAgICAwMzgwOiAwMSAwMSAwMSAwMCAwMCAwMCAwMSAwMCAwMCAwMCAw
MCAxNyAwMCAwMCAxOSAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMDM5MDogMjMgMDAgMDEgMDAg
MTMgMDAgNUMgNUYgNTMgNDIgMkUgNTAgNTQgNDkgNEYgMDAgICMuLi4uLlxfU0IuUFRJTy4KICAg
IDAzQTA6IDAxIDhDIDIxIDAwIDAxIDAxIDAxIDAwIDAwIDAwIDAxIDAwIDAwIDAwIDAwIDE3ICAu
LiEuLi4uLi4uLi4uLi4uCiAgICAwM0IwOiAwMCAwMCAxOSAwMCAyMyAwMCAwMSAwMCAxNCAwMCA1
QyA1RiA1MyA0MiAyRSA1MCAgLi4uLiMuLi4uLlxfU0IuUAogICAgMDNDMDogNTQgNDkgNEYgMDAg
MDEgOEMgMjEgMDAgMDEgMDEgMDEgMDAgMDAgMDAgMDEgMDAgIFRJTy4uLiEuLi4uLi4uLi4KICAg
IDAzRDA6IDAwIDAwIDAwIDE3IDAwIDAwIDE5IDAwIDIzIDAwIDAxIDAwIDE1IDAwIDVDIDVGICAu
Li4uLi4uLiMuLi4uLlxfCiAgICAwM0UwOiA1MyA0MiAyRSA1MCA1NCA0OSA0RiAwMCAwMSA4QyAy
MSAwMCAwMSAwMSAwMSAwMCAgU0IuUFRJTy4uLiEuLi4uLgogICAgMDNGMDogMDAgMDAgMDEgMDAg
MDAgMDAgMDAgMTcgMDAgMDAgMTkgMDAgMjMgMDAgMDEgMDAgIC4uLi4uLi4uLi4uLiMuLi4KICAg
IDA0MDA6IDE2IDAwIDVDIDVGIDUzIDQyIDJFIDUwIDU0IDQ5IDRGIDAwIDAxIDhDIDIxIDAwICAu
LlxfU0IuUFRJTy4uLiEuCiAgICAwNDEwOiAwMSAwMSAwMSAwMCAwMCAwMCAwMSAwMCAwMCAwMCAw
MCAxNyAwMCAwMCAxOSAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMDQyMDogMjMgMDAgMDEgMDAg
MTcgMDAgNUMgNUYgNTMgNDIgMkUgNTAgNTQgNDkgNEYgMDAgICMuLi4uLlxfU0IuUFRJTy4KICAg
IDA0MzA6IDAxIDc5IDAwIEE0IDUyIDQyIDU1IDQ2IDE0IDE1IDVGIDUzIDU0IDQxIDAwIEEwICAu
eS4uUkJVRi4uX1NUQS4uCiAgICAwNDQwOiAwQSA5MyA1NCA0NyA1MCA0OSAwMSBBNCAwQSAwRiBB
MSAwMyBBNCAwMCAgICAgICAgLi5UR1BJLi4uLi4uLi4KClNTRFQgQCAweDAwMDAwMDAwMDAwMDAw
MDAKICAgIDAwMDA6IDUzIDUzIDQ0IDU0IDBFIEE0IDAwIDAwIDAyIEMwIDQxIDREIDQ0IDAwIDAw
IDAwICBTU0RULi4uLi4uQU1ELi4uCiAgICAwMDEwOiA0MSA0RCA0NCAyMCA0MyA1MCA1NSAwMCAw
MSAwMCAwMCAwMCA0MSA0RCA0NCAyMCAgQU1EIENQVS4uLi4uQU1EIAogICAgMDAyMDogMDEgMDAg
MDAgMDAgMTAgNDcgMzUgNUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAgNEMgIC4uLi4uRzVcLy5fU0Jf
UEwKICAgIDAwMzA6IDU0IDQ2IDQzIDMwIDMwIDMwIDA4IDVGIDUwIDQzIDU0IDEyIDJDIDAyIDEx
IDE0ICBURkMwMDAuX1BDVC4sLi4uCiAgICAwMDQwOiAwQSAxMSA4MiAwQyAwMCA3RiA0MCAwMCAw
MCA2MiAwMCAwMSBDMCAwMCAwMCAwMCAgLi4uLi4uQC4uYi4uLi4uLgogICAgMDA1MDogMDAgNzkg
MDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgNDAgMDAgMDAgNjMgMDAgIC55Li4uLi4uLi4uQC4u
Yy4KICAgIDAwNjA6IDAxIEMwIDAwIDAwIDAwIDAwIDc5IDAwIDA4IDVGIDUwIDUzIDUzIDEyIDQ2
IDA2ICAuLi4uLi55Li5fUFNTLkYuCiAgICAwMDcwOiAwMyAxMiAyMCAwNiAwQyA2OCAxMCAwMCAw
MCAwQyBCMCAxMyAwMCAwMCAwQyAwMCAgLi4gLi5oLi4uLi4uLi4uLgogICAgMDA4MDogMDAgMDAg
MDAgMEMgMDAgMDAgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMEMgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDAwOTA6IDAwIDAwIDEyIDIwIDA2IDBDIDk4IDA4IDAwIDAwIDBDIDA0IDA2IDAwIDAw
IDBDICAuLi4gLi4uLi4uLi4uLi4uCiAgICAwMEEwOiAwMCAwMCAwMCAwMCAwQyAwMCAwMCAwMCAw
MCAwQyAwMSAwMCAwMCAwMCAwQyAwMSAgLi4uLi4uLi4uLi4uLi4uLgogICAgMDBCMDogMDAgMDAg
MDAgMTIgMjAgMDYgMEMgREMgMDUgMDAgMDAgMEMgQ0YgMDMgMDAgMDAgIC4uLi4gLi4uLi4uLi4u
Li4KICAgIDAwQzA6IDBDIDAwIDAwIDAwIDAwIDBDIDAwIDAwIDAwIDAwIDBDIDAyIDAwIDAwIDAw
IDBDICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwMEQwOiAwMiAwMCAwMCAwMCAwOCA1OCA1MCA1MyA1
MyAxMiA0QiAwRCAwMyAxMiA0NyAwNCAgLi4uLi5YUFNTLksuLi5HLgogICAgMDBFMDogMDggMEMg
NjggMTAgMDAgMDAgMEMgQjAgMTMgMDAgMDAgMEMgMDAgMDAgMDAgMDAgIC4uaC4uLi4uLi4uLi4u
Li4KICAgIDAwRjA6IDBDIDAwIDAwIDAwIDAwIDExIDBCIDBBIDA4IDAwIDAwIDAwIDAwIDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwMTAwOiAwMCAxMSAwQiAwQSAwOCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAxMSAwQiAwQSAgLi4uLi4uLi4uLi4uLi4uLgogICAgMDExMDogMDggMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMTEgMEIgMEEgMDggMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDAxMjA6IDAwIDAwIDAwIDAwIDAwIDEyIDQ3IDA0IDA4IDBDIDk4IDA4IDAwIDAwIDBD
IDA0ICAuLi4uLi5HLi4uLi4uLi4uCiAgICAwMTMwOiAwNiAwMCAwMCAwQyAwMCAwMCAwMCAwMCAw
QyAwMCAwMCAwMCAwMCAxMSAwQiAwQSAgLi4uLi4uLi4uLi4uLi4uLgogICAgMDE0MDogMDggMDEg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMTEgMEIgMEEgMDggMDEgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDAxNTA6IDAwIDAwIDAwIDAwIDAwIDExIDBCIDBBIDA4IDAwIDAwIDAwIDAwIDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwMTYwOiAwMCAxMSAwQiAwQSAwOCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAxMiA0NyAwNCAgLi4uLi4uLi4uLi4uLi5HLgogICAgMDE3MDogMDggMEMg
REMgMDUgMDAgMDAgMEMgQ0YgMDMgMDAgMDAgMEMgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDAxODA6IDBDIDAwIDAwIDAwIDAwIDExIDBCIDBBIDA4IDAyIDAwIDAwIDAwIDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwMTkwOiAwMCAxMSAwQiAwQSAwOCAwMiAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAxMSAwQiAwQSAgLi4uLi4uLi4uLi4uLi4uLgogICAgMDFBMDogMDggMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMTEgMEIgMEEgMDggMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDAxQjA6IDAwIDAwIDAwIDAwIDAwIDA4IDVGIDUwIDUzIDQ0IDEyIDE4IDAxIDEyIDE1
IDA1ICAuLi4uLi5fUFNELi4uLi4uCiAgICAwMUMwOiAwQSAwNSAwQSAwMCAwQyAwMCAwMCAwMCAw
MCAwQyBGRSAwMCAwMCAwMCAwQyAwMiAgLi4uLi4uLi4uLi4uLi4uLgogICAgMDFEMDogMDAgMDAg
MDAgMDggNTAgNTAgNDMgNTYgMEEgMDAgMTQgMEIgNUYgNTAgNTAgNDMgIC4uLi5QUENWLi4uLl9Q
UEMKICAgIDAxRTA6IDAwIEE0IDUwIDUwIDQzIDU2IDA4IDVGIDQzIDUwIDQzIDEyIDQwIDE5IDE3
IDBBICAuLlBQQ1YuX0NQQy5ALi4uCiAgICAwMUYwOiAxNyAwQSAwMyAxMSAxNCAwQSAxMSA4MiAw
QyAwMCA3RiAwOCAxOCAwNCBCMCAwMiAgLi4uLi4uLi4uLi4uLi4uLgogICAgMDIwMDogMDEgQzAg
MDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgIC4uLi4uLnkuLi4uLi4u
Li4KICAgIDAyMTA6IDA4IDEwIDA0IEIwIDAyIDAxIEMwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0
IDBBICAuLi4uLi4uLi4uLnkuLi4uCiAgICAwMjIwOiAxMSA4MiAwQyAwMCA3RiAwOCAwOCAwNCBC
MCAwMiAwMSBDMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMDIzMDogNzkgMDAg
MTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgMDggMDAgMDQgQjAgMDIgMDEgIHkuLi4uLi4uLi4uLi4u
Li4KICAgIDAyNDA6IEMwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0IDBBIDExIDgyIDBDIDAwIDAw
IDAwICAuLi4uLnkuLi4uLi4uLi4uCiAgICAwMjUwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCA3OSAwMCAxMSAxNCAwQSAxMSAgLi4uLi4uLi4uLnkuLi4uLgogICAgMDI2MDogODIgMEMg
MDAgN0YgMDggMTAgMDQgQjMgMDIgMDEgQzAgMDAgMDAgMDAgMDAgNzkgIC4uLi4uLi4uLi4uLi4u
LnkKICAgIDAyNzA6IDAwIDExIDE0IDBBIDExIDgyIDBDIDAwIDdGIDA4IDA4IDA0IEIzIDAyIDAx
IEMwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwMjgwOiAwMCAwMCAwMCAwMCA3OSAwMCAxMSAxNCAw
QSAxMSA4MiAwQyAwMCA3RiAwOCAwMCAgLi4uLnkuLi4uLi4uLi4uLgogICAgMDI5MDogMDQgQjMg
MDIgMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgIC4uLi4uLi4uLnkuLi4u
Li4KICAgIDAyQTA6IDBDIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDc5
IDAwICAuLi4uLi4uLi4uLi4uLnkuCiAgICAwMkIwOiAxMSAxNCAwQSAxMSA4MiAwQyAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMDJDMDogMDAgMDAg
MDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgMDAgMDAgMDAgMDAgIC4uLnkuLi4uLi4uLi4u
Li4KICAgIDAyRDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0IDBBIDExIDgy
IDBDICAuLi4uLi4uLnkuLi4uLi4uCiAgICAwMkUwOiAwMCA3RiA0MCAwMCAwNCBFNyAwMCAwMCAw
MCAwMCAwMCAwMCAwMCA3OSAwMCAxMSAgLi5ALi4uLi4uLi4uLnkuLgogICAgMDJGMDogMTQgMEEg
MTEgODIgMEMgMDAgN0YgNDAgMDAgMDQgRTggMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi5ALi4uLi4u
Li4KICAgIDAzMDA6IDAwIDAwIDc5IDAwIDExIDE0IDBBIDExIDgyIDBDIDAwIDdGIDAyIDAwIDA0
IEI0ICAuLnkuLi4uLi4uLi4uLi4uCiAgICAwMzEwOiAwMiAwMSBDMCAwMCAwMCAwMCAwMCA3OSAw
MCAxMSAxNCAwQSAxMSA4MiAwQyAwMCAgLi4uLi4uLnkuLi4uLi4uLgogICAgMDMyMDogN0YgMDEg
MDAgMDQgQjEgMDIgMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgMEMgMDEgIC4uLi4uLi4uLi4uLnku
Li4KICAgIDAzMzA6IDAwIDAwIDAwIDExIDE0IDBBIDExIDgyIDBDIDAwIDAwIDAwIDAwIDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwMzQwOiAwMCAwMCAwMCAwMCAwMCAwMCA3OSAwMCAx
MSAxNCAwQSAxMSA4MiAwQyAwMCA3RiAgLi4uLi4ueS4uLi4uLi4uLgogICAgMDM1MDogMDggMTgg
MDQgQjMgMDIgMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgIC4uLi4uLi4uLi4ueS4u
Li4KICAgIDAzNjA6IDExIDgyIDBDIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwMzcwOiA3OSAwMCAwQyAyMSAwMiAwMCAwMCAwQyA2
OSAxMCAwMCAwMCAxMCA0NyAzNSA1QyAgeS4uIS4uLi5pLi4uLkc1XAogICAgMDM4MDogMkYgMDMg
NUYgNTMgNDIgNUYgNTAgNEMgNTQgNDYgNDMgMzAgMzAgMzEgMDggNUYgIC8uX1NCX1BMVEZDMDAx
Ll8KICAgIDAzOTA6IDUwIDQzIDU0IDEyIDJDIDAyIDExIDE0IDBBIDExIDgyIDBDIDAwIDdGIDQw
IDAwICBQQ1QuLC4uLi4uLi4uLkAuCiAgICAwM0EwOiAwMCA2MiAwMCAwMSBDMCAwMCAwMCAwMCAw
MCA3OSAwMCAxMSAxNCAwQSAxMSA4MiAgLmIuLi4uLi4ueS4uLi4uLgogICAgMDNCMDogMEMgMDAg
N0YgNDAgMDAgMDAgNjMgMDAgMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgIC4uLkAuLmMuLi4uLi4u
eS4KICAgIDAzQzA6IDA4IDVGIDUwIDUzIDUzIDEyIDQ2IDA2IDAzIDEyIDIwIDA2IDBDIDY4IDEw
IDAwICAuX1BTUy5GLi4uIC4uaC4uCiAgICAwM0QwOiAwMCAwQyBCMCAxMyAwMCAwMCAwQyAwMCAw
MCAwMCAwMCAwQyAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMDNFMDogMEMgMDAg
MDAgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMTIgMjAgMDYgMEMgOTggMDggIC4uLi4uLi4uLi4uIC4u
Li4KICAgIDAzRjA6IDAwIDAwIDBDIDA0IDA2IDAwIDAwIDBDIDAwIDAwIDAwIDAwIDBDIDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwNDAwOiAwMCAwQyAwMSAwMCAwMCAwMCAwQyAwMSAw
MCAwMCAwMCAxMiAyMCAwNiAwQyBEQyAgLi4uLi4uLi4uLi4uIC4uLgogICAgMDQxMDogMDUgMDAg
MDAgMEMgQ0YgMDMgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMEMgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDA0MjA6IDAwIDAwIDBDIDAyIDAwIDAwIDAwIDBDIDAyIDAwIDAwIDAwIDA4IDU4IDUw
IDUzICAuLi4uLi4uLi4uLi4uWFBTCiAgICAwNDMwOiA1MyAxMiA0QiAwRCAwMyAxMiA0NyAwNCAw
OCAwQyA2OCAxMCAwMCAwMCAwQyBCMCAgUy5LLi4uRy4uLmguLi4uLgogICAgMDQ0MDogMTMgMDAg
MDAgMEMgMDAgMDAgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMTEgMEIgMEEgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDA0NTA6IDA4IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDExIDBCIDBBIDA4IDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwNDYwOiAwMCAwMCAwMCAwMCAwMCAxMSAwQiAwQSAw
OCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMDQ3MDogMDAgMTEg
MEIgMEEgMDggMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMTIgNDcgMDQgIC4uLi4uLi4uLi4uLi4u
Ry4KICAgIDA0ODA6IDA4IDBDIDk4IDA4IDAwIDAwIDBDIDA0IDA2IDAwIDAwIDBDIDAwIDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwNDkwOiAwQyAwMCAwMCAwMCAwMCAxMSAwQiAwQSAw
OCAwMSAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMDRBMDogMDAgMTEg
MEIgMEEgMDggMDEgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMTEgMEIgMEEgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDA0QjA6IDA4IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDExIDBCIDBBIDA4IDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwNEMwOiAwMCAwMCAwMCAwMCAwMCAxMiA0NyAwNCAw
OCAwQyBEQyAwNSAwMCAwMCAwQyBDRiAgLi4uLi4uRy4uLi4uLi4uLgogICAgMDREMDogMDMgMDAg
MDAgMEMgMDAgMDAgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMTEgMEIgMEEgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDA0RTA6IDA4IDAyIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDExIDBCIDBBIDA4IDAyIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwNEYwOiAwMCAwMCAwMCAwMCAwMCAxMSAwQiAwQSAw
OCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMDUwMDogMDAgMTEg
MEIgMEEgMDggMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDggNUYgNTAgIC4uLi4uLi4uLi4uLi4u
X1AKICAgIDA1MTA6IDUzIDQ0IDEyIDE4IDAxIDEyIDE1IDA1IDBBIDA1IDBBIDAwIDBDIDAwIDAw
IDAwICBTRC4uLi4uLi4uLi4uLi4uCiAgICAwNTIwOiAwMCAwQyBGRSAwMCAwMCAwMCAwQyAwMiAw
MCAwMCAwMCAwOCA1MCA1MCA0MyA1NiAgLi4uLi4uLi4uLi4uUFBDVgogICAgMDUzMDogMEEgMDAg
MTQgMEIgNUYgNTAgNTAgNDMgMDAgQTQgNTAgNTAgNDMgNTYgMDggNUYgIC4uLi5fUFBDLi5QUENW
Ll8KICAgIDA1NDA6IDQzIDUwIDQzIDEyIDQwIDE5IDE3IDBBIDE3IDBBIDAzIDExIDE0IDBBIDEx
IDgyICBDUEMuQC4uLi4uLi4uLi4uCiAgICAwNTUwOiAwQyAwMCA3RiAwOCAxOCAwNCBCMCAwMiAw
MSBDMCAwMCAwMCAwMCAwMCA3OSAwMCAgLi4uLi4uLi4uLi4uLi55LgogICAgMDU2MDogMTEgMTQg
MEEgMTEgODIgMEMgMDAgN0YgMDggMTAgMDQgQjAgMDIgMDEgQzAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDA1NzA6IDAwIDAwIDAwIDc5IDAwIDExIDE0IDBBIDExIDgyIDBDIDAwIDdGIDA4IDA4
IDA0ICAuLi55Li4uLi4uLi4uLi4uCiAgICAwNTgwOiBCMCAwMiAwMSBDMCAwMCAwMCAwMCAwMCA3
OSAwMCAxMSAxNCAwQSAxMSA4MiAwQyAgLi4uLi4uLi55Li4uLi4uLgogICAgMDU5MDogMDAgN0Yg
MDggMDAgMDQgQjAgMDIgMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgIC4uLi4uLi4uLi4uLi55
Li4KICAgIDA1QTA6IDE0IDBBIDExIDgyIDBDIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwNUIwOiAwMCAwMCA3OSAwMCAxMSAxNCAwQSAxMSA4
MiAwQyAwMCA3RiAwOCAxMCAwNCBCMyAgLi55Li4uLi4uLi4uLi4uLgogICAgMDVDMDogMDIgMDEg
QzAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgIC4uLi4uLi55Li4uLi4u
Li4KICAgIDA1RDA6IDdGIDA4IDA4IDA0IEIzIDAyIDAxIEMwIDAwIDAwIDAwIDAwIDc5IDAwIDEx
IDE0ICAuLi4uLi4uLi4uLi55Li4uCiAgICAwNUUwOiAwQSAxMSA4MiAwQyAwMCA3RiAwOCAwMCAw
NCBCMyAwMiAwMSBDMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMDVGMDogMDAgNzkg
MDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC55Li4uLi4uLi4uLi4u
Li4KICAgIDA2MDA6IDAwIDAwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0IDBBIDExIDgyIDBDIDAw
IDAwICAuLi4uLi55Li4uLi4uLi4uCiAgICAwNjEwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCA3OSAwMCAxMSAxNCAwQSAgLi4uLi4uLi4uLi55Li4uLgogICAgMDYyMDogMTEgODIg
MEMgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDA2MzA6IDc5IDAwIDExIDE0IDBBIDExIDgyIDBDIDAwIDdGIDQwIDAwIDA0IEU3IDAw
IDAwICB5Li4uLi4uLi4uQC4uLi4uCiAgICAwNjQwOiAwMCAwMCAwMCAwMCAwMCA3OSAwMCAxMSAx
NCAwQSAxMSA4MiAwQyAwMCA3RiA0MCAgLi4uLi55Li4uLi4uLi4uQAogICAgMDY1MDogMDAgMDQg
RTggMDAgMDAgMDAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgIC4uLi4uLi4uLi55Li4u
Li4KICAgIDA2NjA6IDgyIDBDIDAwIDdGIDAyIDAwIDA0IEI0IDAyIDAxIEMwIDAwIDAwIDAwIDAw
IDc5ICAuLi4uLi4uLi4uLi4uLi55CiAgICAwNjcwOiAwMCAxMSAxNCAwQSAxMSA4MiAwQyAwMCA3
RiAwMSAwMCAwNCBCMSAwMiAwMSBDMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMDY4MDogMDAgMDAg
MDAgMDAgNzkgMDAgMEMgMDEgMDAgMDAgMDAgMTEgMTQgMEEgMTEgODIgIC4uLi55Li4uLi4uLi4u
Li4KICAgIDA2OTA6IDBDIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDc5
IDAwICAuLi4uLi4uLi4uLi4uLnkuCiAgICAwNkEwOiAxMSAxNCAwQSAxMSA4MiAwQyAwMCA3RiAw
OCAxOCAwNCBCMyAwMiAwMSBDMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMDZCMDogMDAgMDAg
MDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgMDAgMDAgMDAgMDAgIC4uLnkuLi4uLi4uLi4u
Li4KICAgIDA2QzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDc5IDAwIDBDIDIxIDAyIDAwIDAw
IDBDICAuLi4uLi4uLnkuLiEuLi4uCiAgICAwNkQwOiA2OSAxMCAwMCAwMCAxMCA0NyAzNSA1QyAy
RiAwMyA1RiA1MyA0MiA1RiA1MCA0QyAgaS4uLi5HNVwvLl9TQl9QTAogICAgMDZFMDogNTQgNDYg
NDMgMzAgMzAgMzIgMDggNUYgNTAgNDMgNTQgMTIgMkMgMDIgMTEgMTQgIFRGQzAwMi5fUENULiwu
Li4KICAgIDA2RjA6IDBBIDExIDgyIDBDIDAwIDdGIDQwIDAwIDAwIDYyIDAwIDAxIEMwIDAwIDAw
IDAwICAuLi4uLi5ALi5iLi4uLi4uCiAgICAwNzAwOiAwMCA3OSAwMCAxMSAxNCAwQSAxMSA4MiAw
QyAwMCA3RiA0MCAwMCAwMCA2MyAwMCAgLnkuLi4uLi4uLi5ALi5jLgogICAgMDcxMDogMDEgQzAg
MDAgMDAgMDAgMDAgNzkgMDAgMDggNUYgNTAgNTMgNTMgMTIgNDYgMDYgIC4uLi4uLnkuLl9QU1Mu
Ri4KICAgIDA3MjA6IDAzIDEyIDIwIDA2IDBDIDY4IDEwIDAwIDAwIDBDIEIwIDEzIDAwIDAwIDBD
IDAwICAuLiAuLmguLi4uLi4uLi4uCiAgICAwNzMwOiAwMCAwMCAwMCAwQyAwMCAwMCAwMCAwMCAw
QyAwMCAwMCAwMCAwMCAwQyAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMDc0MDogMDAgMDAg
MTIgMjAgMDYgMEMgOTggMDggMDAgMDAgMEMgMDQgMDYgMDAgMDAgMEMgIC4uLiAuLi4uLi4uLi4u
Li4KICAgIDA3NTA6IDAwIDAwIDAwIDAwIDBDIDAwIDAwIDAwIDAwIDBDIDAxIDAwIDAwIDAwIDBD
IDAxICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwNzYwOiAwMCAwMCAwMCAxMiAyMCAwNiAwQyBEQyAw
NSAwMCAwMCAwQyBDRiAwMyAwMCAwMCAgLi4uLiAuLi4uLi4uLi4uLgogICAgMDc3MDogMEMgMDAg
MDAgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMEMgMDIgMDAgMDAgMDAgMEMgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDA3ODA6IDAyIDAwIDAwIDAwIDA4IDU4IDUwIDUzIDUzIDEyIDRCIDBEIDAzIDEyIDQ3
IDA0ICAuLi4uLlhQU1MuSy4uLkcuCiAgICAwNzkwOiAwOCAwQyA2OCAxMCAwMCAwMCAwQyBCMCAx
MyAwMCAwMCAwQyAwMCAwMCAwMCAwMCAgLi5oLi4uLi4uLi4uLi4uLgogICAgMDdBMDogMEMgMDAg
MDAgMDAgMDAgMTEgMEIgMEEgMDggMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDA3QjA6IDAwIDExIDBCIDBBIDA4IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDExIDBC
IDBBICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwN0MwOiAwOCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAxMSAwQiAwQSAwOCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMDdEMDogMDAgMDAg
MDAgMDAgMDAgMTIgNDcgMDQgMDggMEMgOTggMDggMDAgMDAgMEMgMDQgIC4uLi4uLkcuLi4uLi4u
Li4KICAgIDA3RTA6IDA2IDAwIDAwIDBDIDAwIDAwIDAwIDAwIDBDIDAwIDAwIDAwIDAwIDExIDBC
IDBBICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwN0YwOiAwOCAwMSAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAxMSAwQiAwQSAwOCAwMSAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMDgwMDogMDAgMDAg
MDAgMDAgMDAgMTEgMEIgMEEgMDggMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDA4MTA6IDAwIDExIDBCIDBBIDA4IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDEyIDQ3
IDA0ICAuLi4uLi4uLi4uLi4uLkcuCiAgICAwODIwOiAwOCAwQyBEQyAwNSAwMCAwMCAwQyBDRiAw
MyAwMCAwMCAwQyAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMDgzMDogMEMgMDAg
MDAgMDAgMDAgMTEgMEIgMEEgMDggMDIgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDA4NDA6IDAwIDExIDBCIDBBIDA4IDAyIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDExIDBC
IDBBICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwODUwOiAwOCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAxMSAwQiAwQSAwOCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMDg2MDogMDAgMDAg
MDAgMDAgMDAgMDggNUYgNTAgNTMgNDQgMTIgMTggMDEgMTIgMTUgMDUgIC4uLi4uLl9QU0QuLi4u
Li4KICAgIDA4NzA6IDBBIDA1IDBBIDAwIDBDIDAxIDAwIDAwIDAwIDBDIEZFIDAwIDAwIDAwIDBD
IDAyICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwODgwOiAwMCAwMCAwMCAwOCA1MCA1MCA0MyA1NiAw
QSAwMCAxNCAwQiA1RiA1MCA1MCA0MyAgLi4uLlBQQ1YuLi4uX1BQQwogICAgMDg5MDogMDAgQTQg
NTAgNTAgNDMgNTYgMDggNUYgNDMgNTAgNDMgMTIgNDAgMTkgMTcgMEEgIC4uUFBDVi5fQ1BDLkAu
Li4KICAgIDA4QTA6IDE3IDBBIDAzIDExIDE0IDBBIDExIDgyIDBDIDAwIDdGIDA4IDE4IDA0IEIw
IDAyICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwOEIwOiAwMSBDMCAwMCAwMCAwMCAwMCA3OSAwMCAx
MSAxNCAwQSAxMSA4MiAwQyAwMCA3RiAgLi4uLi4ueS4uLi4uLi4uLgogICAgMDhDMDogMDggMTAg
MDQgQjAgMDIgMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgIC4uLi4uLi4uLi4ueS4u
Li4KICAgIDA4RDA6IDExIDgyIDBDIDAwIDdGIDA4IDA4IDA0IEIwIDAyIDAxIEMwIDAwIDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwOEUwOiA3OSAwMCAxMSAxNCAwQSAxMSA4MiAwQyAw
MCA3RiAwOCAwMCAwNCBCMCAwMiAwMSAgeS4uLi4uLi4uLi4uLi4uLgogICAgMDhGMDogQzAgMDAg
MDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgMDAgMDAgIC4uLi4ueS4uLi4uLi4u
Li4KICAgIDA5MDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0IDBB
IDExICAuLi4uLi4uLi4ueS4uLi4uCiAgICAwOTEwOiA4MiAwQyAwMCA3RiAwOCAxMCAwNCBCMyAw
MiAwMSBDMCAwMCAwMCAwMCAwMCA3OSAgLi4uLi4uLi4uLi4uLi4ueQogICAgMDkyMDogMDAgMTEg
MTQgMEEgMTEgODIgMEMgMDAgN0YgMDggMDggMDQgQjMgMDIgMDEgQzAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDA5MzA6IDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0IDBBIDExIDgyIDBDIDAwIDdGIDA4
IDAwICAuLi4ueS4uLi4uLi4uLi4uCiAgICAwOTQwOiAwNCBCMyAwMiAwMSBDMCAwMCAwMCAwMCAw
MCA3OSAwMCAxMSAxNCAwQSAxMSA4MiAgLi4uLi4uLi4ueS4uLi4uLgogICAgMDk1MDogMEMgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgNzkgMDAgIC4uLi4uLi4uLi4uLi4u
eS4KICAgIDA5NjA6IDExIDE0IDBBIDExIDgyIDBDIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwOTcwOiAwMCAwMCAwMCA3OSAwMCAxMSAxNCAwQSAx
MSA4MiAwQyAwMCAwMCAwMCAwMCAwMCAgLi4ueS4uLi4uLi4uLi4uLgogICAgMDk4MDogMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgIC4uLi4uLi4ueS4uLi4u
Li4KICAgIDA5OTA6IDAwIDdGIDQwIDAwIDA0IEU3IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDc5IDAw
IDExICAuLkAuLi4uLi4uLi4ueS4uCiAgICAwOUEwOiAxNCAwQSAxMSA4MiAwQyAwMCA3RiA0MCAw
MCAwNCBFOCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLkAuLi4uLi4uLgogICAgMDlCMDogMDAgMDAg
NzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgMDIgMDAgMDQgQjQgIC4ueS4uLi4uLi4uLi4u
Li4KICAgIDA5QzA6IDAyIDAxIEMwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0IDBBIDExIDgyIDBD
IDAwICAuLi4uLi4ueS4uLi4uLi4uCiAgICAwOUQwOiA3RiAwMSAwMCAwNCBCMSAwMiAwMSBDMCAw
MCAwMCAwMCAwMCA3OSAwMCAwQyAwMSAgLi4uLi4uLi4uLi4ueS4uLgogICAgMDlFMDogMDAgMDAg
MDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDA5RjA6IDAwIDAwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0IDBBIDExIDgyIDBDIDAw
IDdGICAuLi4uLi55Li4uLi4uLi4uCiAgICAwQTAwOiAwOCAxOCAwNCBCMyAwMiAwMSBDMCAwMCAw
MCAwMCAwMCA3OSAwMCAxMSAxNCAwQSAgLi4uLi4uLi4uLi55Li4uLgogICAgMEExMDogMTEgODIg
MEMgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDBBMjA6IDc5IDAwIDBDIDIxIDAyIDAwIDAwIDBDIDY5IDEwIDAwIDAwIDEwIDQ3IDM1
IDVDICB5Li4hLi4uLmkuLi4uRzVcCiAgICAwQTMwOiAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0QyA1
NCA0NiA0MyAzMCAzMCAzMyAwOCA1RiAgLy5fU0JfUExURkMwMDMuXwogICAgMEE0MDogNTAgNDMg
NTQgMTIgMkMgMDIgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgNDAgMDAgIFBDVC4sLi4uLi4uLi4u
QC4KICAgIDBBNTA6IDAwIDYyIDAwIDAxIEMwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0IDBBIDEx
IDgyICAuYi4uLi4uLi55Li4uLi4uCiAgICAwQTYwOiAwQyAwMCA3RiA0MCAwMCAwMCA2MyAwMCAw
MSBDMCAwMCAwMCAwMCAwMCA3OSAwMCAgLi4uQC4uYy4uLi4uLi55LgogICAgMEE3MDogMDggNUYg
NTAgNTMgNTMgMTIgNDYgMDYgMDMgMTIgMjAgMDYgMEMgNjggMTAgMDAgIC5fUFNTLkYuLi4gLi5o
Li4KICAgIDBBODA6IDAwIDBDIEIwIDEzIDAwIDAwIDBDIDAwIDAwIDAwIDAwIDBDIDAwIDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwQTkwOiAwQyAwMCAwMCAwMCAwMCAwQyAwMCAwMCAw
MCAwMCAxMiAyMCAwNiAwQyA5OCAwOCAgLi4uLi4uLi4uLi4gLi4uLgogICAgMEFBMDogMDAgMDAg
MEMgMDQgMDYgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMEMgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDBBQjA6IDAwIDBDIDAxIDAwIDAwIDAwIDBDIDAxIDAwIDAwIDAwIDEyIDIwIDA2IDBD
IERDICAuLi4uLi4uLi4uLi4gLi4uCiAgICAwQUMwOiAwNSAwMCAwMCAwQyBDRiAwMyAwMCAwMCAw
QyAwMCAwMCAwMCAwMCAwQyAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMEFEMDogMDAgMDAg
MEMgMDIgMDAgMDAgMDAgMEMgMDIgMDAgMDAgMDAgMDggNTggNTAgNTMgIC4uLi4uLi4uLi4uLi5Y
UFMKICAgIDBBRTA6IDUzIDEyIDRCIDBEIDAzIDEyIDQ3IDA0IDA4IDBDIDY4IDEwIDAwIDAwIDBD
IEIwICBTLksuLi5HLi4uaC4uLi4uCiAgICAwQUYwOiAxMyAwMCAwMCAwQyAwMCAwMCAwMCAwMCAw
QyAwMCAwMCAwMCAwMCAxMSAwQiAwQSAgLi4uLi4uLi4uLi4uLi4uLgogICAgMEIwMDogMDggMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMTEgMEIgMEEgMDggMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDBCMTA6IDAwIDAwIDAwIDAwIDAwIDExIDBCIDBBIDA4IDAwIDAwIDAwIDAwIDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwQjIwOiAwMCAxMSAwQiAwQSAwOCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAxMiA0NyAwNCAgLi4uLi4uLi4uLi4uLi5HLgogICAgMEIzMDogMDggMEMg
OTggMDggMDAgMDAgMEMgMDQgMDYgMDAgMDAgMEMgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDBCNDA6IDBDIDAwIDAwIDAwIDAwIDExIDBCIDBBIDA4IDAxIDAwIDAwIDAwIDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwQjUwOiAwMCAxMSAwQiAwQSAwOCAwMSAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAxMSAwQiAwQSAgLi4uLi4uLi4uLi4uLi4uLgogICAgMEI2MDogMDggMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMTEgMEIgMEEgMDggMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDBCNzA6IDAwIDAwIDAwIDAwIDAwIDEyIDQ3IDA0IDA4IDBDIERDIDA1IDAwIDAwIDBD
IENGICAuLi4uLi5HLi4uLi4uLi4uCiAgICAwQjgwOiAwMyAwMCAwMCAwQyAwMCAwMCAwMCAwMCAw
QyAwMCAwMCAwMCAwMCAxMSAwQiAwQSAgLi4uLi4uLi4uLi4uLi4uLgogICAgMEI5MDogMDggMDIg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMTEgMEIgMEEgMDggMDIgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDBCQTA6IDAwIDAwIDAwIDAwIDAwIDExIDBCIDBBIDA4IDAwIDAwIDAwIDAwIDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwQkIwOiAwMCAxMSAwQiAwQSAwOCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwOCA1RiA1MCAgLi4uLi4uLi4uLi4uLi5fUAogICAgMEJDMDogNTMgNDQg
MTIgMTggMDEgMTIgMTUgMDUgMEEgMDUgMEEgMDAgMEMgMDEgMDAgMDAgIFNELi4uLi4uLi4uLi4u
Li4KICAgIDBCRDA6IDAwIDBDIEZFIDAwIDAwIDAwIDBDIDAyIDAwIDAwIDAwIDA4IDUwIDUwIDQz
IDU2ICAuLi4uLi4uLi4uLi5QUENWCiAgICAwQkUwOiAwQSAwMCAxNCAwQiA1RiA1MCA1MCA0MyAw
MCBBNCA1MCA1MCA0MyA1NiAwOCA1RiAgLi4uLl9QUEMuLlBQQ1YuXwogICAgMEJGMDogNDMgNTAg
NDMgMTIgNDAgMTkgMTcgMEEgMTcgMEEgMDMgMTEgMTQgMEEgMTEgODIgIENQQy5ALi4uLi4uLi4u
Li4KICAgIDBDMDA6IDBDIDAwIDdGIDA4IDE4IDA0IEIwIDAyIDAxIEMwIDAwIDAwIDAwIDAwIDc5
IDAwICAuLi4uLi4uLi4uLi4uLnkuCiAgICAwQzEwOiAxMSAxNCAwQSAxMSA4MiAwQyAwMCA3RiAw
OCAxMCAwNCBCMCAwMiAwMSBDMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMEMyMDogMDAgMDAg
MDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgMDggMDggMDQgIC4uLnkuLi4uLi4uLi4u
Li4KICAgIDBDMzA6IEIwIDAyIDAxIEMwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0IDBBIDExIDgy
IDBDICAuLi4uLi4uLnkuLi4uLi4uCiAgICAwQzQwOiAwMCA3RiAwOCAwMCAwNCBCMCAwMiAwMSBD
MCAwMCAwMCAwMCAwMCA3OSAwMCAxMSAgLi4uLi4uLi4uLi4uLnkuLgogICAgMEM1MDogMTQgMEEg
MTEgODIgMEMgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDBDNjA6IDAwIDAwIDc5IDAwIDExIDE0IDBBIDExIDgyIDBDIDAwIDdGIDA4IDEwIDA0
IEIzICAuLnkuLi4uLi4uLi4uLi4uCiAgICAwQzcwOiAwMiAwMSBDMCAwMCAwMCAwMCAwMCA3OSAw
MCAxMSAxNCAwQSAxMSA4MiAwQyAwMCAgLi4uLi4uLnkuLi4uLi4uLgogICAgMEM4MDogN0YgMDgg
MDggMDQgQjMgMDIgMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgIC4uLi4uLi4uLi4uLnku
Li4KICAgIDBDOTA6IDBBIDExIDgyIDBDIDAwIDdGIDA4IDAwIDA0IEIzIDAyIDAxIEMwIDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwQ0EwOiAwMCA3OSAwMCAxMSAxNCAwQSAxMSA4MiAw
QyAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLnkuLi4uLi4uLi4uLi4uLgogICAgMENCMDogMDAgMDAg
MDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgMDAgIC4uLi4uLnkuLi4uLi4u
Li4KICAgIDBDQzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0
IDBBICAuLi4uLi4uLi4uLnkuLi4uCiAgICAwQ0QwOiAxMSA4MiAwQyAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMENFMDogNzkgMDAg
MTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgNDAgMDAgMDQgRTcgMDAgMDAgIHkuLi4uLi4uLi5ALi4u
Li4KICAgIDBDRjA6IDAwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0IDBBIDExIDgyIDBDIDAwIDdG
IDQwICAuLi4uLnkuLi4uLi4uLi5ACiAgICAwRDAwOiAwMCAwNCBFOCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCA3OSAwMCAxMSAxNCAwQSAxMSAgLi4uLi4uLi4uLnkuLi4uLgogICAgMEQxMDogODIgMEMg
MDAgN0YgMDIgMDAgMDQgQjQgMDIgMDEgQzAgMDAgMDAgMDAgMDAgNzkgIC4uLi4uLi4uLi4uLi4u
LnkKICAgIDBEMjA6IDAwIDExIDE0IDBBIDExIDgyIDBDIDAwIDdGIDAxIDAwIDA0IEIxIDAyIDAx
IEMwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwRDMwOiAwMCAwMCAwMCAwMCA3OSAwMCAwQyAwMSAw
MCAwMCAwMCAxMSAxNCAwQSAxMSA4MiAgLi4uLnkuLi4uLi4uLi4uLgogICAgMEQ0MDogMEMgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgNzkgMDAgIC4uLi4uLi4uLi4uLi4u
eS4KICAgIDBENTA6IDExIDE0IDBBIDExIDgyIDBDIDAwIDdGIDA4IDE4IDA0IEIzIDAyIDAxIEMw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwRDYwOiAwMCAwMCAwMCA3OSAwMCAxMSAxNCAwQSAx
MSA4MiAwQyAwMCAwMCAwMCAwMCAwMCAgLi4ueS4uLi4uLi4uLi4uLgogICAgMEQ3MDogMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgNzkgMDAgMEMgMjEgMDIgMDAgMDAgMEMgIC4uLi4uLi4ueS4uIS4u
Li4KICAgIDBEODA6IDY5IDEwIDAwIDAwIDEwIDQ3IDM1IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUw
IDRDICBpLi4uLkc1XC8uX1NCX1BMCiAgICAwRDkwOiA1NCA0NiA0MyAzMCAzMCAzNCAwOCA1RiA1
MCA0MyA1NCAxMiAyQyAwMiAxMSAxNCAgVEZDMDA0Ll9QQ1QuLC4uLgogICAgMERBMDogMEEgMTEg
ODIgMEMgMDAgN0YgNDAgMDAgMDAgNjIgMDAgMDEgQzAgMDAgMDAgMDAgIC4uLi4uLkAuLmIuLi4u
Li4KICAgIDBEQjA6IDAwIDc5IDAwIDExIDE0IDBBIDExIDgyIDBDIDAwIDdGIDQwIDAwIDAwIDYz
IDAwICAueS4uLi4uLi4uLkAuLmMuCiAgICAwREMwOiAwMSBDMCAwMCAwMCAwMCAwMCA3OSAwMCAw
OCA1RiA1MCA1MyA1MyAxMiA0NiAwNiAgLi4uLi4ueS4uX1BTUy5GLgogICAgMEREMDogMDMgMTIg
MjAgMDYgMEMgNjggMTAgMDAgMDAgMEMgQjAgMTMgMDAgMDAgMEMgMDAgIC4uIC4uaC4uLi4uLi4u
Li4KICAgIDBERTA6IDAwIDAwIDAwIDBDIDAwIDAwIDAwIDAwIDBDIDAwIDAwIDAwIDAwIDBDIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwREYwOiAwMCAwMCAxMiAyMCAwNiAwQyA5OCAwOCAw
MCAwMCAwQyAwNCAwNiAwMCAwMCAwQyAgLi4uIC4uLi4uLi4uLi4uLgogICAgMEUwMDogMDAgMDAg
MDAgMDAgMEMgMDAgMDAgMDAgMDAgMEMgMDEgMDAgMDAgMDAgMEMgMDEgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDBFMTA6IDAwIDAwIDAwIDEyIDIwIDA2IDBDIERDIDA1IDAwIDAwIDBDIENGIDAzIDAw
IDAwICAuLi4uIC4uLi4uLi4uLi4uCiAgICAwRTIwOiAwQyAwMCAwMCAwMCAwMCAwQyAwMCAwMCAw
MCAwMCAwQyAwMiAwMCAwMCAwMCAwQyAgLi4uLi4uLi4uLi4uLi4uLgogICAgMEUzMDogMDIgMDAg
MDAgMDAgMDggNTggNTAgNTMgNTMgMTIgNEIgMEQgMDMgMTIgNDcgMDQgIC4uLi4uWFBTUy5LLi4u
Ry4KICAgIDBFNDA6IDA4IDBDIDY4IDEwIDAwIDAwIDBDIEIwIDEzIDAwIDAwIDBDIDAwIDAwIDAw
IDAwICAuLmguLi4uLi4uLi4uLi4uCiAgICAwRTUwOiAwQyAwMCAwMCAwMCAwMCAxMSAwQiAwQSAw
OCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMEU2MDogMDAgMTEg
MEIgMEEgMDggMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMTEgMEIgMEEgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDBFNzA6IDA4IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDExIDBCIDBBIDA4IDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwRTgwOiAwMCAwMCAwMCAwMCAwMCAxMiA0NyAwNCAw
OCAwQyA5OCAwOCAwMCAwMCAwQyAwNCAgLi4uLi4uRy4uLi4uLi4uLgogICAgMEU5MDogMDYgMDAg
MDAgMEMgMDAgMDAgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMTEgMEIgMEEgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDBFQTA6IDA4IDAxIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDExIDBCIDBBIDA4IDAxIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwRUIwOiAwMCAwMCAwMCAwMCAwMCAxMSAwQiAwQSAw
OCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMEVDMDogMDAgMTEg
MEIgMEEgMDggMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMTIgNDcgMDQgIC4uLi4uLi4uLi4uLi4u
Ry4KICAgIDBFRDA6IDA4IDBDIERDIDA1IDAwIDAwIDBDIENGIDAzIDAwIDAwIDBDIDAwIDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwRUUwOiAwQyAwMCAwMCAwMCAwMCAxMSAwQiAwQSAw
OCAwMiAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMEVGMDogMDAgMTEg
MEIgMEEgMDggMDIgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMTEgMEIgMEEgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDBGMDA6IDA4IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDExIDBCIDBBIDA4IDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwRjEwOiAwMCAwMCAwMCAwMCAwMCAwOCA1RiA1MCA1
MyA0NCAxMiAxOCAwMSAxMiAxNSAwNSAgLi4uLi4uX1BTRC4uLi4uLgogICAgMEYyMDogMEEgMDUg
MEEgMDAgMEMgMDIgMDAgMDAgMDAgMEMgRkUgMDAgMDAgMDAgMEMgMDIgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDBGMzA6IDAwIDAwIDAwIDA4IDUwIDUwIDQzIDU2IDBBIDAwIDE0IDBCIDVGIDUwIDUw
IDQzICAuLi4uUFBDVi4uLi5fUFBDCiAgICAwRjQwOiAwMCBBNCA1MCA1MCA0MyA1NiAwOCA1RiA0
MyA1MCA0MyAxMiA0MCAxOSAxNyAwQSAgLi5QUENWLl9DUEMuQC4uLgogICAgMEY1MDogMTcgMEEg
MDMgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgMDggMTggMDQgQjAgMDIgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDBGNjA6IDAxIEMwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0IDBBIDExIDgyIDBDIDAw
IDdGICAuLi4uLi55Li4uLi4uLi4uCiAgICAwRjcwOiAwOCAxMCAwNCBCMCAwMiAwMSBDMCAwMCAw
MCAwMCAwMCA3OSAwMCAxMSAxNCAwQSAgLi4uLi4uLi4uLi55Li4uLgogICAgMEY4MDogMTEgODIg
MEMgMDAgN0YgMDggMDggMDQgQjAgMDIgMDEgQzAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDBGOTA6IDc5IDAwIDExIDE0IDBBIDExIDgyIDBDIDAwIDdGIDA4IDAwIDA0IEIwIDAy
IDAxICB5Li4uLi4uLi4uLi4uLi4uCiAgICAwRkEwOiBDMCAwMCAwMCAwMCAwMCA3OSAwMCAxMSAx
NCAwQSAxMSA4MiAwQyAwMCAwMCAwMCAgLi4uLi55Li4uLi4uLi4uLgogICAgMEZCMDogMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgIC4uLi4uLi4uLi55Li4u
Li4KICAgIDBGQzA6IDgyIDBDIDAwIDdGIDA4IDEwIDA0IEIzIDAyIDAxIEMwIDAwIDAwIDAwIDAw
IDc5ICAuLi4uLi4uLi4uLi4uLi55CiAgICAwRkQwOiAwMCAxMSAxNCAwQSAxMSA4MiAwQyAwMCA3
RiAwOCAwOCAwNCBCMyAwMiAwMSBDMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMEZFMDogMDAgMDAg
MDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgMDggMDAgIC4uLi55Li4uLi4uLi4u
Li4KICAgIDBGRjA6IDA0IEIzIDAyIDAxIEMwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0IDBBIDEx
IDgyICAuLi4uLi4uLi55Li4uLi4uCiAgICAxMDAwOiAwQyAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCA3OSAwMCAgLi4uLi4uLi4uLi4uLi55LgogICAgMTAxMDogMTEgMTQg
MEEgMTEgODIgMEMgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDEwMjA6IDAwIDAwIDAwIDc5IDAwIDExIDE0IDBBIDExIDgyIDBDIDAwIDAwIDAwIDAw
IDAwICAuLi55Li4uLi4uLi4uLi4uCiAgICAxMDMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCA3
OSAwMCAxMSAxNCAwQSAxMSA4MiAwQyAgLi4uLi4uLi55Li4uLi4uLgogICAgMTA0MDogMDAgN0Yg
NDAgMDAgMDQgRTcgMDAgMDAgMDAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgIC4uQC4uLi4uLi4uLi55
Li4KICAgIDEwNTA6IDE0IDBBIDExIDgyIDBDIDAwIDdGIDQwIDAwIDA0IEU4IDAwIDAwIDAwIDAw
IDAwICAuLi4uLi4uQC4uLi4uLi4uCiAgICAxMDYwOiAwMCAwMCA3OSAwMCAxMSAxNCAwQSAxMSA4
MiAwQyAwMCA3RiAwMiAwMCAwNCBCNCAgLi55Li4uLi4uLi4uLi4uLgogICAgMTA3MDogMDIgMDEg
QzAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgIC4uLi4uLi55Li4uLi4u
Li4KICAgIDEwODA6IDdGIDAxIDAwIDA0IEIxIDAyIDAxIEMwIDAwIDAwIDAwIDAwIDc5IDAwIDBD
IDAxICAuLi4uLi4uLi4uLi55Li4uCiAgICAxMDkwOiAwMCAwMCAwMCAxMSAxNCAwQSAxMSA4MiAw
QyAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMTBBMDogMDAgMDAg
MDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgIC4uLi4uLnkuLi4uLi4u
Li4KICAgIDEwQjA6IDA4IDE4IDA0IEIzIDAyIDAxIEMwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0
IDBBICAuLi4uLi4uLi4uLnkuLi4uCiAgICAxMEMwOiAxMSA4MiAwQyAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMTBEMDogNzkgMDAg
MEMgMjEgMDIgMDAgMDAgMEMgNjkgMTAgMDAgMDAgMTAgNDcgMzUgNUMgIHkuLiEuLi4uaS4uLi5H
NVwKICAgIDEwRTA6IDJGIDAzIDVGIDUzIDQyIDVGIDUwIDRDIDU0IDQ2IDQzIDMwIDMwIDM1IDA4
IDVGICAvLl9TQl9QTFRGQzAwNS5fCiAgICAxMEYwOiA1MCA0MyA1NCAxMiAyQyAwMiAxMSAxNCAw
QSAxMSA4MiAwQyAwMCA3RiA0MCAwMCAgUENULiwuLi4uLi4uLi5ALgogICAgMTEwMDogMDAgNjIg
MDAgMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgIC5iLi4uLi4uLnkuLi4u
Li4KICAgIDExMTA6IDBDIDAwIDdGIDQwIDAwIDAwIDYzIDAwIDAxIEMwIDAwIDAwIDAwIDAwIDc5
IDAwICAuLi5ALi5jLi4uLi4uLnkuCiAgICAxMTIwOiAwOCA1RiA1MCA1MyA1MyAxMiA0NiAwNiAw
MyAxMiAyMCAwNiAwQyA2OCAxMCAwMCAgLl9QU1MuRi4uLiAuLmguLgogICAgMTEzMDogMDAgMEMg
QjAgMTMgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMEMgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDExNDA6IDBDIDAwIDAwIDAwIDAwIDBDIDAwIDAwIDAwIDAwIDEyIDIwIDA2IDBDIDk4
IDA4ICAuLi4uLi4uLi4uLiAuLi4uCiAgICAxMTUwOiAwMCAwMCAwQyAwNCAwNiAwMCAwMCAwQyAw
MCAwMCAwMCAwMCAwQyAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMTE2MDogMDAgMEMg
MDEgMDAgMDAgMDAgMEMgMDEgMDAgMDAgMDAgMTIgMjAgMDYgMEMgREMgIC4uLi4uLi4uLi4uLiAu
Li4KICAgIDExNzA6IDA1IDAwIDAwIDBDIENGIDAzIDAwIDAwIDBDIDAwIDAwIDAwIDAwIDBDIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAxMTgwOiAwMCAwMCAwQyAwMiAwMCAwMCAwMCAwQyAw
MiAwMCAwMCAwMCAwOCA1OCA1MCA1MyAgLi4uLi4uLi4uLi4uLlhQUwogICAgMTE5MDogNTMgMTIg
NEIgMEQgMDMgMTIgNDcgMDQgMDggMEMgNjggMTAgMDAgMDAgMEMgQjAgIFMuSy4uLkcuLi5oLi4u
Li4KICAgIDExQTA6IDEzIDAwIDAwIDBDIDAwIDAwIDAwIDAwIDBDIDAwIDAwIDAwIDAwIDExIDBC
IDBBICAuLi4uLi4uLi4uLi4uLi4uCiAgICAxMUIwOiAwOCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAxMSAwQiAwQSAwOCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMTFDMDogMDAgMDAg
MDAgMDAgMDAgMTEgMEIgMEEgMDggMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDExRDA6IDAwIDExIDBCIDBBIDA4IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDEyIDQ3
IDA0ICAuLi4uLi4uLi4uLi4uLkcuCiAgICAxMUUwOiAwOCAwQyA5OCAwOCAwMCAwMCAwQyAwNCAw
NiAwMCAwMCAwQyAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMTFGMDogMEMgMDAg
MDAgMDAgMDAgMTEgMEIgMEEgMDggMDEgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDEyMDA6IDAwIDExIDBCIDBBIDA4IDAxIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDExIDBC
IDBBICAuLi4uLi4uLi4uLi4uLi4uCiAgICAxMjEwOiAwOCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAxMSAwQiAwQSAwOCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMTIyMDogMDAgMDAg
MDAgMDAgMDAgMTIgNDcgMDQgMDggMEMgREMgMDUgMDAgMDAgMEMgQ0YgIC4uLi4uLkcuLi4uLi4u
Li4KICAgIDEyMzA6IDAzIDAwIDAwIDBDIDAwIDAwIDAwIDAwIDBDIDAwIDAwIDAwIDAwIDExIDBC
IDBBICAuLi4uLi4uLi4uLi4uLi4uCiAgICAxMjQwOiAwOCAwMiAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAxMSAwQiAwQSAwOCAwMiAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMTI1MDogMDAgMDAg
MDAgMDAgMDAgMTEgMEIgMEEgMDggMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDEyNjA6IDAwIDExIDBCIDBBIDA4IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDA4IDVG
IDUwICAuLi4uLi4uLi4uLi4uLl9QCiAgICAxMjcwOiA1MyA0NCAxMiAxOCAwMSAxMiAxNSAwNSAw
QSAwNSAwQSAwMCAwQyAwMiAwMCAwMCAgU0QuLi4uLi4uLi4uLi4uLgogICAgMTI4MDogMDAgMEMg
RkUgMDAgMDAgMDAgMEMgMDIgMDAgMDAgMDAgMDggNTAgNTAgNDMgNTYgIC4uLi4uLi4uLi4uLlBQ
Q1YKICAgIDEyOTA6IDBBIDAwIDE0IDBCIDVGIDUwIDUwIDQzIDAwIEE0IDUwIDUwIDQzIDU2IDA4
IDVGICAuLi4uX1BQQy4uUFBDVi5fCiAgICAxMkEwOiA0MyA1MCA0MyAxMiA0MCAxOSAxNyAwQSAx
NyAwQSAwMyAxMSAxNCAwQSAxMSA4MiAgQ1BDLkAuLi4uLi4uLi4uLgogICAgMTJCMDogMEMgMDAg
N0YgMDggMTggMDQgQjAgMDIgMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgIC4uLi4uLi4uLi4uLi4u
eS4KICAgIDEyQzA6IDExIDE0IDBBIDExIDgyIDBDIDAwIDdGIDA4IDEwIDA0IEIwIDAyIDAxIEMw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAxMkQwOiAwMCAwMCAwMCA3OSAwMCAxMSAxNCAwQSAx
MSA4MiAwQyAwMCA3RiAwOCAwOCAwNCAgLi4ueS4uLi4uLi4uLi4uLgogICAgMTJFMDogQjAgMDIg
MDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgIC4uLi4uLi4ueS4uLi4u
Li4KICAgIDEyRjA6IDAwIDdGIDA4IDAwIDA0IEIwIDAyIDAxIEMwIDAwIDAwIDAwIDAwIDc5IDAw
IDExICAuLi4uLi4uLi4uLi4ueS4uCiAgICAxMzAwOiAxNCAwQSAxMSA4MiAwQyAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMTMxMDogMDAgMDAg
NzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgMDggMTAgMDQgQjMgIC4ueS4uLi4uLi4uLi4u
Li4KICAgIDEzMjA6IDAyIDAxIEMwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0IDBBIDExIDgyIDBD
IDAwICAuLi4uLi4ueS4uLi4uLi4uCiAgICAxMzMwOiA3RiAwOCAwOCAwNCBCMyAwMiAwMSBDMCAw
MCAwMCAwMCAwMCA3OSAwMCAxMSAxNCAgLi4uLi4uLi4uLi4ueS4uLgogICAgMTM0MDogMEEgMTEg
ODIgMEMgMDAgN0YgMDggMDAgMDQgQjMgMDIgMDEgQzAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDEzNTA6IDAwIDc5IDAwIDExIDE0IDBBIDExIDgyIDBDIDAwIDAwIDAwIDAwIDAwIDAw
IDAwICAueS4uLi4uLi4uLi4uLi4uCiAgICAxMzYwOiAwMCAwMCAwMCAwMCAwMCAwMCA3OSAwMCAx
MSAxNCAwQSAxMSA4MiAwQyAwMCAwMCAgLi4uLi4ueS4uLi4uLi4uLgogICAgMTM3MDogMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgIC4uLi4uLi4uLi4ueS4u
Li4KICAgIDEzODA6IDExIDgyIDBDIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAxMzkwOiA3OSAwMCAxMSAxNCAwQSAxMSA4MiAwQyAw
MCA3RiA0MCAwMCAwNCBFNyAwMCAwMCAgeS4uLi4uLi4uLkAuLi4uLgogICAgMTNBMDogMDAgMDAg
MDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgNDAgIC4uLi4ueS4uLi4uLi4u
LkAKICAgIDEzQjA6IDAwIDA0IEU4IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0IDBB
IDExICAuLi4uLi4uLi4ueS4uLi4uCiAgICAxM0MwOiA4MiAwQyAwMCA3RiAwMiAwMCAwNCBCNCAw
MiAwMSBDMCAwMCAwMCAwMCAwMCA3OSAgLi4uLi4uLi4uLi4uLi4ueQogICAgMTNEMDogMDAgMTEg
MTQgMEEgMTEgODIgMEMgMDAgN0YgMDEgMDAgMDQgQjEgMDIgMDEgQzAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDEzRTA6IDAwIDAwIDAwIDAwIDc5IDAwIDBDIDAxIDAwIDAwIDAwIDExIDE0IDBBIDEx
IDgyICAuLi4ueS4uLi4uLi4uLi4uCiAgICAxM0YwOiAwQyAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCA3OSAwMCAgLi4uLi4uLi4uLi4uLi55LgogICAgMTQwMDogMTEgMTQg
MEEgMTEgODIgMEMgMDAgN0YgMDggMTggMDQgQjMgMDIgMDEgQzAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDE0MTA6IDAwIDAwIDAwIDc5IDAwIDExIDE0IDBBIDExIDgyIDBDIDAwIDAwIDAwIDAw
IDAwICAuLi55Li4uLi4uLi4uLi4uCiAgICAxNDIwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCA3
OSAwMCAwQyAyMSAwMiAwMCAwMCAwQyAgLi4uLi4uLi55Li4hLi4uLgogICAgMTQzMDogNjkgMTAg
MDAgMDAgMTAgNDcgMzUgNUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAgNEMgIGkuLi4uRzVcLy5fU0Jf
UEwKICAgIDE0NDA6IDU0IDQ2IDQzIDMwIDMwIDM2IDA4IDVGIDUwIDQzIDU0IDEyIDJDIDAyIDEx
IDE0ICBURkMwMDYuX1BDVC4sLi4uCiAgICAxNDUwOiAwQSAxMSA4MiAwQyAwMCA3RiA0MCAwMCAw
MCA2MiAwMCAwMSBDMCAwMCAwMCAwMCAgLi4uLi4uQC4uYi4uLi4uLgogICAgMTQ2MDogMDAgNzkg
MDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgNDAgMDAgMDAgNjMgMDAgIC55Li4uLi4uLi4uQC4u
Yy4KICAgIDE0NzA6IDAxIEMwIDAwIDAwIDAwIDAwIDc5IDAwIDA4IDVGIDUwIDUzIDUzIDEyIDQ2
IDA2ICAuLi4uLi55Li5fUFNTLkYuCiAgICAxNDgwOiAwMyAxMiAyMCAwNiAwQyA2OCAxMCAwMCAw
MCAwQyBCMCAxMyAwMCAwMCAwQyAwMCAgLi4gLi5oLi4uLi4uLi4uLgogICAgMTQ5MDogMDAgMDAg
MDAgMEMgMDAgMDAgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMEMgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDE0QTA6IDAwIDAwIDEyIDIwIDA2IDBDIDk4IDA4IDAwIDAwIDBDIDA0IDA2IDAwIDAw
IDBDICAuLi4gLi4uLi4uLi4uLi4uCiAgICAxNEIwOiAwMCAwMCAwMCAwMCAwQyAwMCAwMCAwMCAw
MCAwQyAwMSAwMCAwMCAwMCAwQyAwMSAgLi4uLi4uLi4uLi4uLi4uLgogICAgMTRDMDogMDAgMDAg
MDAgMTIgMjAgMDYgMEMgREMgMDUgMDAgMDAgMEMgQ0YgMDMgMDAgMDAgIC4uLi4gLi4uLi4uLi4u
Li4KICAgIDE0RDA6IDBDIDAwIDAwIDAwIDAwIDBDIDAwIDAwIDAwIDAwIDBDIDAyIDAwIDAwIDAw
IDBDICAuLi4uLi4uLi4uLi4uLi4uCiAgICAxNEUwOiAwMiAwMCAwMCAwMCAwOCA1OCA1MCA1MyA1
MyAxMiA0QiAwRCAwMyAxMiA0NyAwNCAgLi4uLi5YUFNTLksuLi5HLgogICAgMTRGMDogMDggMEMg
NjggMTAgMDAgMDAgMEMgQjAgMTMgMDAgMDAgMEMgMDAgMDAgMDAgMDAgIC4uaC4uLi4uLi4uLi4u
Li4KICAgIDE1MDA6IDBDIDAwIDAwIDAwIDAwIDExIDBCIDBBIDA4IDAwIDAwIDAwIDAwIDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAxNTEwOiAwMCAxMSAwQiAwQSAwOCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAxMSAwQiAwQSAgLi4uLi4uLi4uLi4uLi4uLgogICAgMTUyMDogMDggMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMTEgMEIgMEEgMDggMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDE1MzA6IDAwIDAwIDAwIDAwIDAwIDEyIDQ3IDA0IDA4IDBDIDk4IDA4IDAwIDAwIDBD
IDA0ICAuLi4uLi5HLi4uLi4uLi4uCiAgICAxNTQwOiAwNiAwMCAwMCAwQyAwMCAwMCAwMCAwMCAw
QyAwMCAwMCAwMCAwMCAxMSAwQiAwQSAgLi4uLi4uLi4uLi4uLi4uLgogICAgMTU1MDogMDggMDEg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMTEgMEIgMEEgMDggMDEgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDE1NjA6IDAwIDAwIDAwIDAwIDAwIDExIDBCIDBBIDA4IDAwIDAwIDAwIDAwIDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAxNTcwOiAwMCAxMSAwQiAwQSAwOCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAxMiA0NyAwNCAgLi4uLi4uLi4uLi4uLi5HLgogICAgMTU4MDogMDggMEMg
REMgMDUgMDAgMDAgMEMgQ0YgMDMgMDAgMDAgMEMgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDE1OTA6IDBDIDAwIDAwIDAwIDAwIDExIDBCIDBBIDA4IDAyIDAwIDAwIDAwIDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAxNUEwOiAwMCAxMSAwQiAwQSAwOCAwMiAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAxMSAwQiAwQSAgLi4uLi4uLi4uLi4uLi4uLgogICAgMTVCMDogMDggMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMTEgMEIgMEEgMDggMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDE1QzA6IDAwIDAwIDAwIDAwIDAwIDA4IDVGIDUwIDUzIDQ0IDEyIDE4IDAxIDEyIDE1
IDA1ICAuLi4uLi5fUFNELi4uLi4uCiAgICAxNUQwOiAwQSAwNSAwQSAwMCAwQyAwMyAwMCAwMCAw
MCAwQyBGRSAwMCAwMCAwMCAwQyAwMiAgLi4uLi4uLi4uLi4uLi4uLgogICAgMTVFMDogMDAgMDAg
MDAgMDggNTAgNTAgNDMgNTYgMEEgMDAgMTQgMEIgNUYgNTAgNTAgNDMgIC4uLi5QUENWLi4uLl9Q
UEMKICAgIDE1RjA6IDAwIEE0IDUwIDUwIDQzIDU2IDA4IDVGIDQzIDUwIDQzIDEyIDQwIDE5IDE3
IDBBICAuLlBQQ1YuX0NQQy5ALi4uCiAgICAxNjAwOiAxNyAwQSAwMyAxMSAxNCAwQSAxMSA4MiAw
QyAwMCA3RiAwOCAxOCAwNCBCMCAwMiAgLi4uLi4uLi4uLi4uLi4uLgogICAgMTYxMDogMDEgQzAg
MDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgIC4uLi4uLnkuLi4uLi4u
Li4KICAgIDE2MjA6IDA4IDEwIDA0IEIwIDAyIDAxIEMwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0
IDBBICAuLi4uLi4uLi4uLnkuLi4uCiAgICAxNjMwOiAxMSA4MiAwQyAwMCA3RiAwOCAwOCAwNCBC
MCAwMiAwMSBDMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMTY0MDogNzkgMDAg
MTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgMDggMDAgMDQgQjAgMDIgMDEgIHkuLi4uLi4uLi4uLi4u
Li4KICAgIDE2NTA6IEMwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0IDBBIDExIDgyIDBDIDAwIDAw
IDAwICAuLi4uLnkuLi4uLi4uLi4uCiAgICAxNjYwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCA3OSAwMCAxMSAxNCAwQSAxMSAgLi4uLi4uLi4uLnkuLi4uLgogICAgMTY3MDogODIgMEMg
MDAgN0YgMDggMTAgMDQgQjMgMDIgMDEgQzAgMDAgMDAgMDAgMDAgNzkgIC4uLi4uLi4uLi4uLi4u
LnkKICAgIDE2ODA6IDAwIDExIDE0IDBBIDExIDgyIDBDIDAwIDdGIDA4IDA4IDA0IEIzIDAyIDAx
IEMwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAxNjkwOiAwMCAwMCAwMCAwMCA3OSAwMCAxMSAxNCAw
QSAxMSA4MiAwQyAwMCA3RiAwOCAwMCAgLi4uLnkuLi4uLi4uLi4uLgogICAgMTZBMDogMDQgQjMg
MDIgMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgIC4uLi4uLi4uLnkuLi4u
Li4KICAgIDE2QjA6IDBDIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDc5
IDAwICAuLi4uLi4uLi4uLi4uLnkuCiAgICAxNkMwOiAxMSAxNCAwQSAxMSA4MiAwQyAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMTZEMDogMDAgMDAg
MDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgMDAgMDAgMDAgMDAgIC4uLnkuLi4uLi4uLi4u
Li4KICAgIDE2RTA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0IDBBIDExIDgy
IDBDICAuLi4uLi4uLnkuLi4uLi4uCiAgICAxNkYwOiAwMCA3RiA0MCAwMCAwNCBFNyAwMCAwMCAw
MCAwMCAwMCAwMCAwMCA3OSAwMCAxMSAgLi5ALi4uLi4uLi4uLnkuLgogICAgMTcwMDogMTQgMEEg
MTEgODIgMEMgMDAgN0YgNDAgMDAgMDQgRTggMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi5ALi4uLi4u
Li4KICAgIDE3MTA6IDAwIDAwIDc5IDAwIDExIDE0IDBBIDExIDgyIDBDIDAwIDdGIDAyIDAwIDA0
IEI0ICAuLnkuLi4uLi4uLi4uLi4uCiAgICAxNzIwOiAwMiAwMSBDMCAwMCAwMCAwMCAwMCA3OSAw
MCAxMSAxNCAwQSAxMSA4MiAwQyAwMCAgLi4uLi4uLnkuLi4uLi4uLgogICAgMTczMDogN0YgMDEg
MDAgMDQgQjEgMDIgMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgMEMgMDEgIC4uLi4uLi4uLi4uLnku
Li4KICAgIDE3NDA6IDAwIDAwIDAwIDExIDE0IDBBIDExIDgyIDBDIDAwIDAwIDAwIDAwIDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAxNzUwOiAwMCAwMCAwMCAwMCAwMCAwMCA3OSAwMCAx
MSAxNCAwQSAxMSA4MiAwQyAwMCA3RiAgLi4uLi4ueS4uLi4uLi4uLgogICAgMTc2MDogMDggMTgg
MDQgQjMgMDIgMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgIC4uLi4uLi4uLi4ueS4u
Li4KICAgIDE3NzA6IDExIDgyIDBDIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAxNzgwOiA3OSAwMCAwQyAyMSAwMiAwMCAwMCAwQyA2
OSAxMCAwMCAwMCAxMCA0NyAzNSA1QyAgeS4uIS4uLi5pLi4uLkc1XAogICAgMTc5MDogMkYgMDMg
NUYgNTMgNDIgNUYgNTAgNEMgNTQgNDYgNDMgMzAgMzAgMzcgMDggNUYgIC8uX1NCX1BMVEZDMDA3
Ll8KICAgIDE3QTA6IDUwIDQzIDU0IDEyIDJDIDAyIDExIDE0IDBBIDExIDgyIDBDIDAwIDdGIDQw
IDAwICBQQ1QuLC4uLi4uLi4uLkAuCiAgICAxN0IwOiAwMCA2MiAwMCAwMSBDMCAwMCAwMCAwMCAw
MCA3OSAwMCAxMSAxNCAwQSAxMSA4MiAgLmIuLi4uLi4ueS4uLi4uLgogICAgMTdDMDogMEMgMDAg
N0YgNDAgMDAgMDAgNjMgMDAgMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgIC4uLkAuLmMuLi4uLi4u
eS4KICAgIDE3RDA6IDA4IDVGIDUwIDUzIDUzIDEyIDQ2IDA2IDAzIDEyIDIwIDA2IDBDIDY4IDEw
IDAwICAuX1BTUy5GLi4uIC4uaC4uCiAgICAxN0UwOiAwMCAwQyBCMCAxMyAwMCAwMCAwQyAwMCAw
MCAwMCAwMCAwQyAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMTdGMDogMEMgMDAg
MDAgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMTIgMjAgMDYgMEMgOTggMDggIC4uLi4uLi4uLi4uIC4u
Li4KICAgIDE4MDA6IDAwIDAwIDBDIDA0IDA2IDAwIDAwIDBDIDAwIDAwIDAwIDAwIDBDIDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAxODEwOiAwMCAwQyAwMSAwMCAwMCAwMCAwQyAwMSAw
MCAwMCAwMCAxMiAyMCAwNiAwQyBEQyAgLi4uLi4uLi4uLi4uIC4uLgogICAgMTgyMDogMDUgMDAg
MDAgMEMgQ0YgMDMgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMEMgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDE4MzA6IDAwIDAwIDBDIDAyIDAwIDAwIDAwIDBDIDAyIDAwIDAwIDAwIDA4IDU4IDUw
IDUzICAuLi4uLi4uLi4uLi4uWFBTCiAgICAxODQwOiA1MyAxMiA0QiAwRCAwMyAxMiA0NyAwNCAw
OCAwQyA2OCAxMCAwMCAwMCAwQyBCMCAgUy5LLi4uRy4uLmguLi4uLgogICAgMTg1MDogMTMgMDAg
MDAgMEMgMDAgMDAgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMTEgMEIgMEEgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDE4NjA6IDA4IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDExIDBCIDBBIDA4IDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAxODcwOiAwMCAwMCAwMCAwMCAwMCAxMSAwQiAwQSAw
OCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMTg4MDogMDAgMTEg
MEIgMEEgMDggMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMTIgNDcgMDQgIC4uLi4uLi4uLi4uLi4u
Ry4KICAgIDE4OTA6IDA4IDBDIDk4IDA4IDAwIDAwIDBDIDA0IDA2IDAwIDAwIDBDIDAwIDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAxOEEwOiAwQyAwMCAwMCAwMCAwMCAxMSAwQiAwQSAw
OCAwMSAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMThCMDogMDAgMTEg
MEIgMEEgMDggMDEgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMTEgMEIgMEEgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDE4QzA6IDA4IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDExIDBCIDBBIDA4IDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAxOEQwOiAwMCAwMCAwMCAwMCAwMCAxMiA0NyAwNCAw
OCAwQyBEQyAwNSAwMCAwMCAwQyBDRiAgLi4uLi4uRy4uLi4uLi4uLgogICAgMThFMDogMDMgMDAg
MDAgMEMgMDAgMDAgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMTEgMEIgMEEgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDE4RjA6IDA4IDAyIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDExIDBCIDBBIDA4IDAyIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAxOTAwOiAwMCAwMCAwMCAwMCAwMCAxMSAwQiAwQSAw
OCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMTkxMDogMDAgMTEg
MEIgMEEgMDggMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDggNUYgNTAgIC4uLi4uLi4uLi4uLi4u
X1AKICAgIDE5MjA6IDUzIDQ0IDEyIDE4IDAxIDEyIDE1IDA1IDBBIDA1IDBBIDAwIDBDIDAzIDAw
IDAwICBTRC4uLi4uLi4uLi4uLi4uCiAgICAxOTMwOiAwMCAwQyBGRSAwMCAwMCAwMCAwQyAwMiAw
MCAwMCAwMCAwOCA1MCA1MCA0MyA1NiAgLi4uLi4uLi4uLi4uUFBDVgogICAgMTk0MDogMEEgMDAg
MTQgMEIgNUYgNTAgNTAgNDMgMDAgQTQgNTAgNTAgNDMgNTYgMDggNUYgIC4uLi5fUFBDLi5QUENW
Ll8KICAgIDE5NTA6IDQzIDUwIDQzIDEyIDQwIDE5IDE3IDBBIDE3IDBBIDAzIDExIDE0IDBBIDEx
IDgyICBDUEMuQC4uLi4uLi4uLi4uCiAgICAxOTYwOiAwQyAwMCA3RiAwOCAxOCAwNCBCMCAwMiAw
MSBDMCAwMCAwMCAwMCAwMCA3OSAwMCAgLi4uLi4uLi4uLi4uLi55LgogICAgMTk3MDogMTEgMTQg
MEEgMTEgODIgMEMgMDAgN0YgMDggMTAgMDQgQjAgMDIgMDEgQzAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDE5ODA6IDAwIDAwIDAwIDc5IDAwIDExIDE0IDBBIDExIDgyIDBDIDAwIDdGIDA4IDA4
IDA0ICAuLi55Li4uLi4uLi4uLi4uCiAgICAxOTkwOiBCMCAwMiAwMSBDMCAwMCAwMCAwMCAwMCA3
OSAwMCAxMSAxNCAwQSAxMSA4MiAwQyAgLi4uLi4uLi55Li4uLi4uLgogICAgMTlBMDogMDAgN0Yg
MDggMDAgMDQgQjAgMDIgMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgIC4uLi4uLi4uLi4uLi55
Li4KICAgIDE5QjA6IDE0IDBBIDExIDgyIDBDIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAxOUMwOiAwMCAwMCA3OSAwMCAxMSAxNCAwQSAxMSA4
MiAwQyAwMCA3RiAwOCAxMCAwNCBCMyAgLi55Li4uLi4uLi4uLi4uLgogICAgMTlEMDogMDIgMDEg
QzAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgIC4uLi4uLi55Li4uLi4u
Li4KICAgIDE5RTA6IDdGIDA4IDA4IDA0IEIzIDAyIDAxIEMwIDAwIDAwIDAwIDAwIDc5IDAwIDEx
IDE0ICAuLi4uLi4uLi4uLi55Li4uCiAgICAxOUYwOiAwQSAxMSA4MiAwQyAwMCA3RiAwOCAwMCAw
NCBCMyAwMiAwMSBDMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMUEwMDogMDAgNzkg
MDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC55Li4uLi4uLi4uLi4u
Li4KICAgIDFBMTA6IDAwIDAwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0IDBBIDExIDgyIDBDIDAw
IDAwICAuLi4uLi55Li4uLi4uLi4uCiAgICAxQTIwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCA3OSAwMCAxMSAxNCAwQSAgLi4uLi4uLi4uLi55Li4uLgogICAgMUEzMDogMTEgODIg
MEMgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDFBNDA6IDc5IDAwIDExIDE0IDBBIDExIDgyIDBDIDAwIDdGIDQwIDAwIDA0IEU3IDAw
IDAwICB5Li4uLi4uLi4uQC4uLi4uCiAgICAxQTUwOiAwMCAwMCAwMCAwMCAwMCA3OSAwMCAxMSAx
NCAwQSAxMSA4MiAwQyAwMCA3RiA0MCAgLi4uLi55Li4uLi4uLi4uQAogICAgMUE2MDogMDAgMDQg
RTggMDAgMDAgMDAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgIC4uLi4uLi4uLi55Li4u
Li4KICAgIDFBNzA6IDgyIDBDIDAwIDdGIDAyIDAwIDA0IEI0IDAyIDAxIEMwIDAwIDAwIDAwIDAw
IDc5ICAuLi4uLi4uLi4uLi4uLi55CiAgICAxQTgwOiAwMCAxMSAxNCAwQSAxMSA4MiAwQyAwMCA3
RiAwMSAwMCAwNCBCMSAwMiAwMSBDMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMUE5MDogMDAgMDAg
MDAgMDAgNzkgMDAgMEMgMDEgMDAgMDAgMDAgMTEgMTQgMEEgMTEgODIgIC4uLi55Li4uLi4uLi4u
Li4KICAgIDFBQTA6IDBDIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDc5
IDAwICAuLi4uLi4uLi4uLi4uLnkuCiAgICAxQUIwOiAxMSAxNCAwQSAxMSA4MiAwQyAwMCA3RiAw
OCAxOCAwNCBCMyAwMiAwMSBDMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMUFDMDogMDAgMDAg
MDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgMDAgMDAgMDAgMDAgIC4uLnkuLi4uLi4uLi4u
Li4KICAgIDFBRDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDc5IDAwIDBDIDIxIDAyIDAwIDAw
IDBDICAuLi4uLi4uLnkuLiEuLi4uCiAgICAxQUUwOiA2OSAxMCAwMCAwMCAxMCA0NyAzNSA1QyAy
RiAwMyA1RiA1MyA0MiA1RiA1MCA0QyAgaS4uLi5HNVwvLl9TQl9QTAogICAgMUFGMDogNTQgNDYg
NDMgMzAgMzAgMzggMDggNUYgNTAgNDMgNTQgMTIgMkMgMDIgMTEgMTQgIFRGQzAwOC5fUENULiwu
Li4KICAgIDFCMDA6IDBBIDExIDgyIDBDIDAwIDdGIDQwIDAwIDAwIDYyIDAwIDAxIEMwIDAwIDAw
IDAwICAuLi4uLi5ALi5iLi4uLi4uCiAgICAxQjEwOiAwMCA3OSAwMCAxMSAxNCAwQSAxMSA4MiAw
QyAwMCA3RiA0MCAwMCAwMCA2MyAwMCAgLnkuLi4uLi4uLi5ALi5jLgogICAgMUIyMDogMDEgQzAg
MDAgMDAgMDAgMDAgNzkgMDAgMDggNUYgNTAgNTMgNTMgMTIgNDYgMDYgIC4uLi4uLnkuLl9QU1Mu
Ri4KICAgIDFCMzA6IDAzIDEyIDIwIDA2IDBDIDY4IDEwIDAwIDAwIDBDIEIwIDEzIDAwIDAwIDBD
IDAwICAuLiAuLmguLi4uLi4uLi4uCiAgICAxQjQwOiAwMCAwMCAwMCAwQyAwMCAwMCAwMCAwMCAw
QyAwMCAwMCAwMCAwMCAwQyAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMUI1MDogMDAgMDAg
MTIgMjAgMDYgMEMgOTggMDggMDAgMDAgMEMgMDQgMDYgMDAgMDAgMEMgIC4uLiAuLi4uLi4uLi4u
Li4KICAgIDFCNjA6IDAwIDAwIDAwIDAwIDBDIDAwIDAwIDAwIDAwIDBDIDAxIDAwIDAwIDAwIDBD
IDAxICAuLi4uLi4uLi4uLi4uLi4uCiAgICAxQjcwOiAwMCAwMCAwMCAxMiAyMCAwNiAwQyBEQyAw
NSAwMCAwMCAwQyBDRiAwMyAwMCAwMCAgLi4uLiAuLi4uLi4uLi4uLgogICAgMUI4MDogMEMgMDAg
MDAgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMEMgMDIgMDAgMDAgMDAgMEMgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDFCOTA6IDAyIDAwIDAwIDAwIDA4IDU4IDUwIDUzIDUzIDEyIDRCIDBEIDAzIDEyIDQ3
IDA0ICAuLi4uLlhQU1MuSy4uLkcuCiAgICAxQkEwOiAwOCAwQyA2OCAxMCAwMCAwMCAwQyBCMCAx
MyAwMCAwMCAwQyAwMCAwMCAwMCAwMCAgLi5oLi4uLi4uLi4uLi4uLgogICAgMUJCMDogMEMgMDAg
MDAgMDAgMDAgMTEgMEIgMEEgMDggMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDFCQzA6IDAwIDExIDBCIDBBIDA4IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDExIDBC
IDBBICAuLi4uLi4uLi4uLi4uLi4uCiAgICAxQkQwOiAwOCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAxMSAwQiAwQSAwOCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMUJFMDogMDAgMDAg
MDAgMDAgMDAgMTIgNDcgMDQgMDggMEMgOTggMDggMDAgMDAgMEMgMDQgIC4uLi4uLkcuLi4uLi4u
Li4KICAgIDFCRjA6IDA2IDAwIDAwIDBDIDAwIDAwIDAwIDAwIDBDIDAwIDAwIDAwIDAwIDExIDBC
IDBBICAuLi4uLi4uLi4uLi4uLi4uCiAgICAxQzAwOiAwOCAwMSAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAxMSAwQiAwQSAwOCAwMSAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMUMxMDogMDAgMDAg
MDAgMDAgMDAgMTEgMEIgMEEgMDggMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDFDMjA6IDAwIDExIDBCIDBBIDA4IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDEyIDQ3
IDA0ICAuLi4uLi4uLi4uLi4uLkcuCiAgICAxQzMwOiAwOCAwQyBEQyAwNSAwMCAwMCAwQyBDRiAw
MyAwMCAwMCAwQyAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMUM0MDogMEMgMDAg
MDAgMDAgMDAgMTEgMEIgMEEgMDggMDIgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDFDNTA6IDAwIDExIDBCIDBBIDA4IDAyIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDExIDBC
IDBBICAuLi4uLi4uLi4uLi4uLi4uCiAgICAxQzYwOiAwOCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAxMSAwQiAwQSAwOCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMUM3MDogMDAgMDAg
MDAgMDAgMDAgMDggNUYgNTAgNTMgNDQgMTIgMTggMDEgMTIgMTUgMDUgIC4uLi4uLl9QU0QuLi4u
Li4KICAgIDFDODA6IDBBIDA1IDBBIDAwIDBDIDA0IDAwIDAwIDAwIDBDIEZFIDAwIDAwIDAwIDBD
IDAyICAuLi4uLi4uLi4uLi4uLi4uCiAgICAxQzkwOiAwMCAwMCAwMCAwOCA1MCA1MCA0MyA1NiAw
QSAwMCAxNCAwQiA1RiA1MCA1MCA0MyAgLi4uLlBQQ1YuLi4uX1BQQwogICAgMUNBMDogMDAgQTQg
NTAgNTAgNDMgNTYgMDggNUYgNDMgNTAgNDMgMTIgNDAgMTkgMTcgMEEgIC4uUFBDVi5fQ1BDLkAu
Li4KICAgIDFDQjA6IDE3IDBBIDAzIDExIDE0IDBBIDExIDgyIDBDIDAwIDdGIDA4IDE4IDA0IEIw
IDAyICAuLi4uLi4uLi4uLi4uLi4uCiAgICAxQ0MwOiAwMSBDMCAwMCAwMCAwMCAwMCA3OSAwMCAx
MSAxNCAwQSAxMSA4MiAwQyAwMCA3RiAgLi4uLi4ueS4uLi4uLi4uLgogICAgMUNEMDogMDggMTAg
MDQgQjAgMDIgMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgIC4uLi4uLi4uLi4ueS4u
Li4KICAgIDFDRTA6IDExIDgyIDBDIDAwIDdGIDA4IDA4IDA0IEIwIDAyIDAxIEMwIDAwIDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAxQ0YwOiA3OSAwMCAxMSAxNCAwQSAxMSA4MiAwQyAw
MCA3RiAwOCAwMCAwNCBCMCAwMiAwMSAgeS4uLi4uLi4uLi4uLi4uLgogICAgMUQwMDogQzAgMDAg
MDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgMDAgMDAgIC4uLi4ueS4uLi4uLi4u
Li4KICAgIDFEMTA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0IDBB
IDExICAuLi4uLi4uLi4ueS4uLi4uCiAgICAxRDIwOiA4MiAwQyAwMCA3RiAwOCAxMCAwNCBCMyAw
MiAwMSBDMCAwMCAwMCAwMCAwMCA3OSAgLi4uLi4uLi4uLi4uLi4ueQogICAgMUQzMDogMDAgMTEg
MTQgMEEgMTEgODIgMEMgMDAgN0YgMDggMDggMDQgQjMgMDIgMDEgQzAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDFENDA6IDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0IDBBIDExIDgyIDBDIDAwIDdGIDA4
IDAwICAuLi4ueS4uLi4uLi4uLi4uCiAgICAxRDUwOiAwNCBCMyAwMiAwMSBDMCAwMCAwMCAwMCAw
MCA3OSAwMCAxMSAxNCAwQSAxMSA4MiAgLi4uLi4uLi4ueS4uLi4uLgogICAgMUQ2MDogMEMgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgNzkgMDAgIC4uLi4uLi4uLi4uLi4u
eS4KICAgIDFENzA6IDExIDE0IDBBIDExIDgyIDBDIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAxRDgwOiAwMCAwMCAwMCA3OSAwMCAxMSAxNCAwQSAx
MSA4MiAwQyAwMCAwMCAwMCAwMCAwMCAgLi4ueS4uLi4uLi4uLi4uLgogICAgMUQ5MDogMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgIC4uLi4uLi4ueS4uLi4u
Li4KICAgIDFEQTA6IDAwIDdGIDQwIDAwIDA0IEU3IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDc5IDAw
IDExICAuLkAuLi4uLi4uLi4ueS4uCiAgICAxREIwOiAxNCAwQSAxMSA4MiAwQyAwMCA3RiA0MCAw
MCAwNCBFOCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLkAuLi4uLi4uLgogICAgMURDMDogMDAgMDAg
NzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgMDIgMDAgMDQgQjQgIC4ueS4uLi4uLi4uLi4u
Li4KICAgIDFERDA6IDAyIDAxIEMwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0IDBBIDExIDgyIDBD
IDAwICAuLi4uLi4ueS4uLi4uLi4uCiAgICAxREUwOiA3RiAwMSAwMCAwNCBCMSAwMiAwMSBDMCAw
MCAwMCAwMCAwMCA3OSAwMCAwQyAwMSAgLi4uLi4uLi4uLi4ueS4uLgogICAgMURGMDogMDAgMDAg
MDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDFFMDA6IDAwIDAwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0IDBBIDExIDgyIDBDIDAw
IDdGICAuLi4uLi55Li4uLi4uLi4uCiAgICAxRTEwOiAwOCAxOCAwNCBCMyAwMiAwMSBDMCAwMCAw
MCAwMCAwMCA3OSAwMCAxMSAxNCAwQSAgLi4uLi4uLi4uLi55Li4uLgogICAgMUUyMDogMTEgODIg
MEMgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDFFMzA6IDc5IDAwIDBDIDIxIDAyIDAwIDAwIDBDIDY5IDEwIDAwIDAwIDEwIDQ3IDM1
IDVDICB5Li4hLi4uLmkuLi4uRzVcCiAgICAxRTQwOiAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0QyA1
NCA0NiA0MyAzMCAzMCAzOSAwOCA1RiAgLy5fU0JfUExURkMwMDkuXwogICAgMUU1MDogNTAgNDMg
NTQgMTIgMkMgMDIgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgNDAgMDAgIFBDVC4sLi4uLi4uLi4u
QC4KICAgIDFFNjA6IDAwIDYyIDAwIDAxIEMwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0IDBBIDEx
IDgyICAuYi4uLi4uLi55Li4uLi4uCiAgICAxRTcwOiAwQyAwMCA3RiA0MCAwMCAwMCA2MyAwMCAw
MSBDMCAwMCAwMCAwMCAwMCA3OSAwMCAgLi4uQC4uYy4uLi4uLi55LgogICAgMUU4MDogMDggNUYg
NTAgNTMgNTMgMTIgNDYgMDYgMDMgMTIgMjAgMDYgMEMgNjggMTAgMDAgIC5fUFNTLkYuLi4gLi5o
Li4KICAgIDFFOTA6IDAwIDBDIEIwIDEzIDAwIDAwIDBDIDAwIDAwIDAwIDAwIDBDIDAwIDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAxRUEwOiAwQyAwMCAwMCAwMCAwMCAwQyAwMCAwMCAw
MCAwMCAxMiAyMCAwNiAwQyA5OCAwOCAgLi4uLi4uLi4uLi4gLi4uLgogICAgMUVCMDogMDAgMDAg
MEMgMDQgMDYgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMEMgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDFFQzA6IDAwIDBDIDAxIDAwIDAwIDAwIDBDIDAxIDAwIDAwIDAwIDEyIDIwIDA2IDBD
IERDICAuLi4uLi4uLi4uLi4gLi4uCiAgICAxRUQwOiAwNSAwMCAwMCAwQyBDRiAwMyAwMCAwMCAw
QyAwMCAwMCAwMCAwMCAwQyAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMUVFMDogMDAgMDAg
MEMgMDIgMDAgMDAgMDAgMEMgMDIgMDAgMDAgMDAgMDggNTggNTAgNTMgIC4uLi4uLi4uLi4uLi5Y
UFMKICAgIDFFRjA6IDUzIDEyIDRCIDBEIDAzIDEyIDQ3IDA0IDA4IDBDIDY4IDEwIDAwIDAwIDBD
IEIwICBTLksuLi5HLi4uaC4uLi4uCiAgICAxRjAwOiAxMyAwMCAwMCAwQyAwMCAwMCAwMCAwMCAw
QyAwMCAwMCAwMCAwMCAxMSAwQiAwQSAgLi4uLi4uLi4uLi4uLi4uLgogICAgMUYxMDogMDggMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMTEgMEIgMEEgMDggMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDFGMjA6IDAwIDAwIDAwIDAwIDAwIDExIDBCIDBBIDA4IDAwIDAwIDAwIDAwIDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAxRjMwOiAwMCAxMSAwQiAwQSAwOCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAxMiA0NyAwNCAgLi4uLi4uLi4uLi4uLi5HLgogICAgMUY0MDogMDggMEMg
OTggMDggMDAgMDAgMEMgMDQgMDYgMDAgMDAgMEMgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDFGNTA6IDBDIDAwIDAwIDAwIDAwIDExIDBCIDBBIDA4IDAxIDAwIDAwIDAwIDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAxRjYwOiAwMCAxMSAwQiAwQSAwOCAwMSAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAxMSAwQiAwQSAgLi4uLi4uLi4uLi4uLi4uLgogICAgMUY3MDogMDggMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMTEgMEIgMEEgMDggMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDFGODA6IDAwIDAwIDAwIDAwIDAwIDEyIDQ3IDA0IDA4IDBDIERDIDA1IDAwIDAwIDBD
IENGICAuLi4uLi5HLi4uLi4uLi4uCiAgICAxRjkwOiAwMyAwMCAwMCAwQyAwMCAwMCAwMCAwMCAw
QyAwMCAwMCAwMCAwMCAxMSAwQiAwQSAgLi4uLi4uLi4uLi4uLi4uLgogICAgMUZBMDogMDggMDIg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMTEgMEIgMEEgMDggMDIgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDFGQjA6IDAwIDAwIDAwIDAwIDAwIDExIDBCIDBBIDA4IDAwIDAwIDAwIDAwIDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAxRkMwOiAwMCAxMSAwQiAwQSAwOCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwOCA1RiA1MCAgLi4uLi4uLi4uLi4uLi5fUAogICAgMUZEMDogNTMgNDQg
MTIgMTggMDEgMTIgMTUgMDUgMEEgMDUgMEEgMDAgMEMgMDQgMDAgMDAgIFNELi4uLi4uLi4uLi4u
Li4KICAgIDFGRTA6IDAwIDBDIEZFIDAwIDAwIDAwIDBDIDAyIDAwIDAwIDAwIDA4IDUwIDUwIDQz
IDU2ICAuLi4uLi4uLi4uLi5QUENWCiAgICAxRkYwOiAwQSAwMCAxNCAwQiA1RiA1MCA1MCA0MyAw
MCBBNCA1MCA1MCA0MyA1NiAwOCA1RiAgLi4uLl9QUEMuLlBQQ1YuXwogICAgMjAwMDogNDMgNTAg
NDMgMTIgNDAgMTkgMTcgMEEgMTcgMEEgMDMgMTEgMTQgMEEgMTEgODIgIENQQy5ALi4uLi4uLi4u
Li4KICAgIDIwMTA6IDBDIDAwIDdGIDA4IDE4IDA0IEIwIDAyIDAxIEMwIDAwIDAwIDAwIDAwIDc5
IDAwICAuLi4uLi4uLi4uLi4uLnkuCiAgICAyMDIwOiAxMSAxNCAwQSAxMSA4MiAwQyAwMCA3RiAw
OCAxMCAwNCBCMCAwMiAwMSBDMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMjAzMDogMDAgMDAg
MDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgMDggMDggMDQgIC4uLnkuLi4uLi4uLi4u
Li4KICAgIDIwNDA6IEIwIDAyIDAxIEMwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0IDBBIDExIDgy
IDBDICAuLi4uLi4uLnkuLi4uLi4uCiAgICAyMDUwOiAwMCA3RiAwOCAwMCAwNCBCMCAwMiAwMSBD
MCAwMCAwMCAwMCAwMCA3OSAwMCAxMSAgLi4uLi4uLi4uLi4uLnkuLgogICAgMjA2MDogMTQgMEEg
MTEgODIgMEMgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDIwNzA6IDAwIDAwIDc5IDAwIDExIDE0IDBBIDExIDgyIDBDIDAwIDdGIDA4IDEwIDA0
IEIzICAuLnkuLi4uLi4uLi4uLi4uCiAgICAyMDgwOiAwMiAwMSBDMCAwMCAwMCAwMCAwMCA3OSAw
MCAxMSAxNCAwQSAxMSA4MiAwQyAwMCAgLi4uLi4uLnkuLi4uLi4uLgogICAgMjA5MDogN0YgMDgg
MDggMDQgQjMgMDIgMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgIC4uLi4uLi4uLi4uLnku
Li4KICAgIDIwQTA6IDBBIDExIDgyIDBDIDAwIDdGIDA4IDAwIDA0IEIzIDAyIDAxIEMwIDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAyMEIwOiAwMCA3OSAwMCAxMSAxNCAwQSAxMSA4MiAw
QyAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLnkuLi4uLi4uLi4uLi4uLgogICAgMjBDMDogMDAgMDAg
MDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgMDAgIC4uLi4uLnkuLi4uLi4u
Li4KICAgIDIwRDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0
IDBBICAuLi4uLi4uLi4uLnkuLi4uCiAgICAyMEUwOiAxMSA4MiAwQyAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMjBGMDogNzkgMDAg
MTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgNDAgMDAgMDQgRTcgMDAgMDAgIHkuLi4uLi4uLi5ALi4u
Li4KICAgIDIxMDA6IDAwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0IDBBIDExIDgyIDBDIDAwIDdG
IDQwICAuLi4uLnkuLi4uLi4uLi5ACiAgICAyMTEwOiAwMCAwNCBFOCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCA3OSAwMCAxMSAxNCAwQSAxMSAgLi4uLi4uLi4uLnkuLi4uLgogICAgMjEyMDogODIgMEMg
MDAgN0YgMDIgMDAgMDQgQjQgMDIgMDEgQzAgMDAgMDAgMDAgMDAgNzkgIC4uLi4uLi4uLi4uLi4u
LnkKICAgIDIxMzA6IDAwIDExIDE0IDBBIDExIDgyIDBDIDAwIDdGIDAxIDAwIDA0IEIxIDAyIDAx
IEMwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAyMTQwOiAwMCAwMCAwMCAwMCA3OSAwMCAwQyAwMSAw
MCAwMCAwMCAxMSAxNCAwQSAxMSA4MiAgLi4uLnkuLi4uLi4uLi4uLgogICAgMjE1MDogMEMgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgNzkgMDAgIC4uLi4uLi4uLi4uLi4u
eS4KICAgIDIxNjA6IDExIDE0IDBBIDExIDgyIDBDIDAwIDdGIDA4IDE4IDA0IEIzIDAyIDAxIEMw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAyMTcwOiAwMCAwMCAwMCA3OSAwMCAxMSAxNCAwQSAx
MSA4MiAwQyAwMCAwMCAwMCAwMCAwMCAgLi4ueS4uLi4uLi4uLi4uLgogICAgMjE4MDogMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgNzkgMDAgMEMgMjEgMDIgMDAgMDAgMEMgIC4uLi4uLi4ueS4uIS4u
Li4KICAgIDIxOTA6IDY5IDEwIDAwIDAwIDEwIDQ3IDM1IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUw
IDRDICBpLi4uLkc1XC8uX1NCX1BMCiAgICAyMUEwOiA1NCA0NiA0MyAzMCAzMCA0MSAwOCA1RiA1
MCA0MyA1NCAxMiAyQyAwMiAxMSAxNCAgVEZDMDBBLl9QQ1QuLC4uLgogICAgMjFCMDogMEEgMTEg
ODIgMEMgMDAgN0YgNDAgMDAgMDAgNjIgMDAgMDEgQzAgMDAgMDAgMDAgIC4uLi4uLkAuLmIuLi4u
Li4KICAgIDIxQzA6IDAwIDc5IDAwIDExIDE0IDBBIDExIDgyIDBDIDAwIDdGIDQwIDAwIDAwIDYz
IDAwICAueS4uLi4uLi4uLkAuLmMuCiAgICAyMUQwOiAwMSBDMCAwMCAwMCAwMCAwMCA3OSAwMCAw
OCA1RiA1MCA1MyA1MyAxMiA0NiAwNiAgLi4uLi4ueS4uX1BTUy5GLgogICAgMjFFMDogMDMgMTIg
MjAgMDYgMEMgNjggMTAgMDAgMDAgMEMgQjAgMTMgMDAgMDAgMEMgMDAgIC4uIC4uaC4uLi4uLi4u
Li4KICAgIDIxRjA6IDAwIDAwIDAwIDBDIDAwIDAwIDAwIDAwIDBDIDAwIDAwIDAwIDAwIDBDIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAyMjAwOiAwMCAwMCAxMiAyMCAwNiAwQyA5OCAwOCAw
MCAwMCAwQyAwNCAwNiAwMCAwMCAwQyAgLi4uIC4uLi4uLi4uLi4uLgogICAgMjIxMDogMDAgMDAg
MDAgMDAgMEMgMDAgMDAgMDAgMDAgMEMgMDEgMDAgMDAgMDAgMEMgMDEgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDIyMjA6IDAwIDAwIDAwIDEyIDIwIDA2IDBDIERDIDA1IDAwIDAwIDBDIENGIDAzIDAw
IDAwICAuLi4uIC4uLi4uLi4uLi4uCiAgICAyMjMwOiAwQyAwMCAwMCAwMCAwMCAwQyAwMCAwMCAw
MCAwMCAwQyAwMiAwMCAwMCAwMCAwQyAgLi4uLi4uLi4uLi4uLi4uLgogICAgMjI0MDogMDIgMDAg
MDAgMDAgMDggNTggNTAgNTMgNTMgMTIgNEIgMEQgMDMgMTIgNDcgMDQgIC4uLi4uWFBTUy5LLi4u
Ry4KICAgIDIyNTA6IDA4IDBDIDY4IDEwIDAwIDAwIDBDIEIwIDEzIDAwIDAwIDBDIDAwIDAwIDAw
IDAwICAuLmguLi4uLi4uLi4uLi4uCiAgICAyMjYwOiAwQyAwMCAwMCAwMCAwMCAxMSAwQiAwQSAw
OCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMjI3MDogMDAgMTEg
MEIgMEEgMDggMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMTEgMEIgMEEgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDIyODA6IDA4IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDExIDBCIDBBIDA4IDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAyMjkwOiAwMCAwMCAwMCAwMCAwMCAxMiA0NyAwNCAw
OCAwQyA5OCAwOCAwMCAwMCAwQyAwNCAgLi4uLi4uRy4uLi4uLi4uLgogICAgMjJBMDogMDYgMDAg
MDAgMEMgMDAgMDAgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMTEgMEIgMEEgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDIyQjA6IDA4IDAxIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDExIDBCIDBBIDA4IDAxIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAyMkMwOiAwMCAwMCAwMCAwMCAwMCAxMSAwQiAwQSAw
OCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMjJEMDogMDAgMTEg
MEIgMEEgMDggMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMTIgNDcgMDQgIC4uLi4uLi4uLi4uLi4u
Ry4KICAgIDIyRTA6IDA4IDBDIERDIDA1IDAwIDAwIDBDIENGIDAzIDAwIDAwIDBDIDAwIDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAyMkYwOiAwQyAwMCAwMCAwMCAwMCAxMSAwQiAwQSAw
OCAwMiAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMjMwMDogMDAgMTEg
MEIgMEEgMDggMDIgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMTEgMEIgMEEgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDIzMTA6IDA4IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDExIDBCIDBBIDA4IDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAyMzIwOiAwMCAwMCAwMCAwMCAwMCAwOCA1RiA1MCA1
MyA0NCAxMiAxOCAwMSAxMiAxNSAwNSAgLi4uLi4uX1BTRC4uLi4uLgogICAgMjMzMDogMEEgMDUg
MEEgMDAgMEMgMDUgMDAgMDAgMDAgMEMgRkUgMDAgMDAgMDAgMEMgMDIgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDIzNDA6IDAwIDAwIDAwIDA4IDUwIDUwIDQzIDU2IDBBIDAwIDE0IDBCIDVGIDUwIDUw
IDQzICAuLi4uUFBDVi4uLi5fUFBDCiAgICAyMzUwOiAwMCBBNCA1MCA1MCA0MyA1NiAwOCA1RiA0
MyA1MCA0MyAxMiA0MCAxOSAxNyAwQSAgLi5QUENWLl9DUEMuQC4uLgogICAgMjM2MDogMTcgMEEg
MDMgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgMDggMTggMDQgQjAgMDIgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDIzNzA6IDAxIEMwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0IDBBIDExIDgyIDBDIDAw
IDdGICAuLi4uLi55Li4uLi4uLi4uCiAgICAyMzgwOiAwOCAxMCAwNCBCMCAwMiAwMSBDMCAwMCAw
MCAwMCAwMCA3OSAwMCAxMSAxNCAwQSAgLi4uLi4uLi4uLi55Li4uLgogICAgMjM5MDogMTEgODIg
MEMgMDAgN0YgMDggMDggMDQgQjAgMDIgMDEgQzAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDIzQTA6IDc5IDAwIDExIDE0IDBBIDExIDgyIDBDIDAwIDdGIDA4IDAwIDA0IEIwIDAy
IDAxICB5Li4uLi4uLi4uLi4uLi4uCiAgICAyM0IwOiBDMCAwMCAwMCAwMCAwMCA3OSAwMCAxMSAx
NCAwQSAxMSA4MiAwQyAwMCAwMCAwMCAgLi4uLi55Li4uLi4uLi4uLgogICAgMjNDMDogMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgIC4uLi4uLi4uLi55Li4u
Li4KICAgIDIzRDA6IDgyIDBDIDAwIDdGIDA4IDEwIDA0IEIzIDAyIDAxIEMwIDAwIDAwIDAwIDAw
IDc5ICAuLi4uLi4uLi4uLi4uLi55CiAgICAyM0UwOiAwMCAxMSAxNCAwQSAxMSA4MiAwQyAwMCA3
RiAwOCAwOCAwNCBCMyAwMiAwMSBDMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMjNGMDogMDAgMDAg
MDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgMDggMDAgIC4uLi55Li4uLi4uLi4u
Li4KICAgIDI0MDA6IDA0IEIzIDAyIDAxIEMwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0IDBBIDEx
IDgyICAuLi4uLi4uLi55Li4uLi4uCiAgICAyNDEwOiAwQyAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCA3OSAwMCAgLi4uLi4uLi4uLi4uLi55LgogICAgMjQyMDogMTEgMTQg
MEEgMTEgODIgMEMgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDI0MzA6IDAwIDAwIDAwIDc5IDAwIDExIDE0IDBBIDExIDgyIDBDIDAwIDAwIDAwIDAw
IDAwICAuLi55Li4uLi4uLi4uLi4uCiAgICAyNDQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCA3
OSAwMCAxMSAxNCAwQSAxMSA4MiAwQyAgLi4uLi4uLi55Li4uLi4uLgogICAgMjQ1MDogMDAgN0Yg
NDAgMDAgMDQgRTcgMDAgMDAgMDAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgIC4uQC4uLi4uLi4uLi55
Li4KICAgIDI0NjA6IDE0IDBBIDExIDgyIDBDIDAwIDdGIDQwIDAwIDA0IEU4IDAwIDAwIDAwIDAw
IDAwICAuLi4uLi4uQC4uLi4uLi4uCiAgICAyNDcwOiAwMCAwMCA3OSAwMCAxMSAxNCAwQSAxMSA4
MiAwQyAwMCA3RiAwMiAwMCAwNCBCNCAgLi55Li4uLi4uLi4uLi4uLgogICAgMjQ4MDogMDIgMDEg
QzAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgIC4uLi4uLi55Li4uLi4u
Li4KICAgIDI0OTA6IDdGIDAxIDAwIDA0IEIxIDAyIDAxIEMwIDAwIDAwIDAwIDAwIDc5IDAwIDBD
IDAxICAuLi4uLi4uLi4uLi55Li4uCiAgICAyNEEwOiAwMCAwMCAwMCAxMSAxNCAwQSAxMSA4MiAw
QyAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMjRCMDogMDAgMDAg
MDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgIC4uLi4uLnkuLi4uLi4u
Li4KICAgIDI0QzA6IDA4IDE4IDA0IEIzIDAyIDAxIEMwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0
IDBBICAuLi4uLi4uLi4uLnkuLi4uCiAgICAyNEQwOiAxMSA4MiAwQyAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMjRFMDogNzkgMDAg
MEMgMjEgMDIgMDAgMDAgMEMgNjkgMTAgMDAgMDAgMTAgNDcgMzUgNUMgIHkuLiEuLi4uaS4uLi5H
NVwKICAgIDI0RjA6IDJGIDAzIDVGIDUzIDQyIDVGIDUwIDRDIDU0IDQ2IDQzIDMwIDMwIDQyIDA4
IDVGICAvLl9TQl9QTFRGQzAwQi5fCiAgICAyNTAwOiA1MCA0MyA1NCAxMiAyQyAwMiAxMSAxNCAw
QSAxMSA4MiAwQyAwMCA3RiA0MCAwMCAgUENULiwuLi4uLi4uLi5ALgogICAgMjUxMDogMDAgNjIg
MDAgMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgIC5iLi4uLi4uLnkuLi4u
Li4KICAgIDI1MjA6IDBDIDAwIDdGIDQwIDAwIDAwIDYzIDAwIDAxIEMwIDAwIDAwIDAwIDAwIDc5
IDAwICAuLi5ALi5jLi4uLi4uLnkuCiAgICAyNTMwOiAwOCA1RiA1MCA1MyA1MyAxMiA0NiAwNiAw
MyAxMiAyMCAwNiAwQyA2OCAxMCAwMCAgLl9QU1MuRi4uLiAuLmguLgogICAgMjU0MDogMDAgMEMg
QjAgMTMgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMEMgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDI1NTA6IDBDIDAwIDAwIDAwIDAwIDBDIDAwIDAwIDAwIDAwIDEyIDIwIDA2IDBDIDk4
IDA4ICAuLi4uLi4uLi4uLiAuLi4uCiAgICAyNTYwOiAwMCAwMCAwQyAwNCAwNiAwMCAwMCAwQyAw
MCAwMCAwMCAwMCAwQyAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMjU3MDogMDAgMEMg
MDEgMDAgMDAgMDAgMEMgMDEgMDAgMDAgMDAgMTIgMjAgMDYgMEMgREMgIC4uLi4uLi4uLi4uLiAu
Li4KICAgIDI1ODA6IDA1IDAwIDAwIDBDIENGIDAzIDAwIDAwIDBDIDAwIDAwIDAwIDAwIDBDIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAyNTkwOiAwMCAwMCAwQyAwMiAwMCAwMCAwMCAwQyAw
MiAwMCAwMCAwMCAwOCA1OCA1MCA1MyAgLi4uLi4uLi4uLi4uLlhQUwogICAgMjVBMDogNTMgMTIg
NEIgMEQgMDMgMTIgNDcgMDQgMDggMEMgNjggMTAgMDAgMDAgMEMgQjAgIFMuSy4uLkcuLi5oLi4u
Li4KICAgIDI1QjA6IDEzIDAwIDAwIDBDIDAwIDAwIDAwIDAwIDBDIDAwIDAwIDAwIDAwIDExIDBC
IDBBICAuLi4uLi4uLi4uLi4uLi4uCiAgICAyNUMwOiAwOCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAxMSAwQiAwQSAwOCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMjVEMDogMDAgMDAg
MDAgMDAgMDAgMTEgMEIgMEEgMDggMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDI1RTA6IDAwIDExIDBCIDBBIDA4IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDEyIDQ3
IDA0ICAuLi4uLi4uLi4uLi4uLkcuCiAgICAyNUYwOiAwOCAwQyA5OCAwOCAwMCAwMCAwQyAwNCAw
NiAwMCAwMCAwQyAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMjYwMDogMEMgMDAg
MDAgMDAgMDAgMTEgMEIgMEEgMDggMDEgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDI2MTA6IDAwIDExIDBCIDBBIDA4IDAxIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDExIDBC
IDBBICAuLi4uLi4uLi4uLi4uLi4uCiAgICAyNjIwOiAwOCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAxMSAwQiAwQSAwOCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMjYzMDogMDAgMDAg
MDAgMDAgMDAgMTIgNDcgMDQgMDggMEMgREMgMDUgMDAgMDAgMEMgQ0YgIC4uLi4uLkcuLi4uLi4u
Li4KICAgIDI2NDA6IDAzIDAwIDAwIDBDIDAwIDAwIDAwIDAwIDBDIDAwIDAwIDAwIDAwIDExIDBC
IDBBICAuLi4uLi4uLi4uLi4uLi4uCiAgICAyNjUwOiAwOCAwMiAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAxMSAwQiAwQSAwOCAwMiAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMjY2MDogMDAgMDAg
MDAgMDAgMDAgMTEgMEIgMEEgMDggMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDI2NzA6IDAwIDExIDBCIDBBIDA4IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDA4IDVG
IDUwICAuLi4uLi4uLi4uLi4uLl9QCiAgICAyNjgwOiA1MyA0NCAxMiAxOCAwMSAxMiAxNSAwNSAw
QSAwNSAwQSAwMCAwQyAwNSAwMCAwMCAgU0QuLi4uLi4uLi4uLi4uLgogICAgMjY5MDogMDAgMEMg
RkUgMDAgMDAgMDAgMEMgMDIgMDAgMDAgMDAgMDggNTAgNTAgNDMgNTYgIC4uLi4uLi4uLi4uLlBQ
Q1YKICAgIDI2QTA6IDBBIDAwIDE0IDBCIDVGIDUwIDUwIDQzIDAwIEE0IDUwIDUwIDQzIDU2IDA4
IDVGICAuLi4uX1BQQy4uUFBDVi5fCiAgICAyNkIwOiA0MyA1MCA0MyAxMiA0MCAxOSAxNyAwQSAx
NyAwQSAwMyAxMSAxNCAwQSAxMSA4MiAgQ1BDLkAuLi4uLi4uLi4uLgogICAgMjZDMDogMEMgMDAg
N0YgMDggMTggMDQgQjAgMDIgMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgIC4uLi4uLi4uLi4uLi4u
eS4KICAgIDI2RDA6IDExIDE0IDBBIDExIDgyIDBDIDAwIDdGIDA4IDEwIDA0IEIwIDAyIDAxIEMw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAyNkUwOiAwMCAwMCAwMCA3OSAwMCAxMSAxNCAwQSAx
MSA4MiAwQyAwMCA3RiAwOCAwOCAwNCAgLi4ueS4uLi4uLi4uLi4uLgogICAgMjZGMDogQjAgMDIg
MDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgIC4uLi4uLi4ueS4uLi4u
Li4KICAgIDI3MDA6IDAwIDdGIDA4IDAwIDA0IEIwIDAyIDAxIEMwIDAwIDAwIDAwIDAwIDc5IDAw
IDExICAuLi4uLi4uLi4uLi4ueS4uCiAgICAyNzEwOiAxNCAwQSAxMSA4MiAwQyAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMjcyMDogMDAgMDAg
NzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgMDggMTAgMDQgQjMgIC4ueS4uLi4uLi4uLi4u
Li4KICAgIDI3MzA6IDAyIDAxIEMwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0IDBBIDExIDgyIDBD
IDAwICAuLi4uLi4ueS4uLi4uLi4uCiAgICAyNzQwOiA3RiAwOCAwOCAwNCBCMyAwMiAwMSBDMCAw
MCAwMCAwMCAwMCA3OSAwMCAxMSAxNCAgLi4uLi4uLi4uLi4ueS4uLgogICAgMjc1MDogMEEgMTEg
ODIgMEMgMDAgN0YgMDggMDAgMDQgQjMgMDIgMDEgQzAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDI3NjA6IDAwIDc5IDAwIDExIDE0IDBBIDExIDgyIDBDIDAwIDAwIDAwIDAwIDAwIDAw
IDAwICAueS4uLi4uLi4uLi4uLi4uCiAgICAyNzcwOiAwMCAwMCAwMCAwMCAwMCAwMCA3OSAwMCAx
MSAxNCAwQSAxMSA4MiAwQyAwMCAwMCAgLi4uLi4ueS4uLi4uLi4uLgogICAgMjc4MDogMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgIC4uLi4uLi4uLi4ueS4u
Li4KICAgIDI3OTA6IDExIDgyIDBDIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAyN0EwOiA3OSAwMCAxMSAxNCAwQSAxMSA4MiAwQyAw
MCA3RiA0MCAwMCAwNCBFNyAwMCAwMCAgeS4uLi4uLi4uLkAuLi4uLgogICAgMjdCMDogMDAgMDAg
MDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgNDAgIC4uLi4ueS4uLi4uLi4u
LkAKICAgIDI3QzA6IDAwIDA0IEU4IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0IDBB
IDExICAuLi4uLi4uLi4ueS4uLi4uCiAgICAyN0QwOiA4MiAwQyAwMCA3RiAwMiAwMCAwNCBCNCAw
MiAwMSBDMCAwMCAwMCAwMCAwMCA3OSAgLi4uLi4uLi4uLi4uLi4ueQogICAgMjdFMDogMDAgMTEg
MTQgMEEgMTEgODIgMEMgMDAgN0YgMDEgMDAgMDQgQjEgMDIgMDEgQzAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDI3RjA6IDAwIDAwIDAwIDAwIDc5IDAwIDBDIDAxIDAwIDAwIDAwIDExIDE0IDBBIDEx
IDgyICAuLi4ueS4uLi4uLi4uLi4uCiAgICAyODAwOiAwQyAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCA3OSAwMCAgLi4uLi4uLi4uLi4uLi55LgogICAgMjgxMDogMTEgMTQg
MEEgMTEgODIgMEMgMDAgN0YgMDggMTggMDQgQjMgMDIgMDEgQzAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDI4MjA6IDAwIDAwIDAwIDc5IDAwIDExIDE0IDBBIDExIDgyIDBDIDAwIDAwIDAwIDAw
IDAwICAuLi55Li4uLi4uLi4uLi4uCiAgICAyODMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCA3
OSAwMCAwQyAyMSAwMiAwMCAwMCAwQyAgLi4uLi4uLi55Li4hLi4uLgogICAgMjg0MDogNjkgMTAg
MDAgMDAgMTAgNDcgMzUgNUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAgNEMgIGkuLi4uRzVcLy5fU0Jf
UEwKICAgIDI4NTA6IDU0IDQ2IDQzIDMwIDMwIDQzIDA4IDVGIDUwIDQzIDU0IDEyIDJDIDAyIDEx
IDE0ICBURkMwMEMuX1BDVC4sLi4uCiAgICAyODYwOiAwQSAxMSA4MiAwQyAwMCA3RiA0MCAwMCAw
MCA2MiAwMCAwMSBDMCAwMCAwMCAwMCAgLi4uLi4uQC4uYi4uLi4uLgogICAgMjg3MDogMDAgNzkg
MDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgNDAgMDAgMDAgNjMgMDAgIC55Li4uLi4uLi4uQC4u
Yy4KICAgIDI4ODA6IDAxIEMwIDAwIDAwIDAwIDAwIDc5IDAwIDA4IDVGIDUwIDUzIDUzIDEyIDQ2
IDA2ICAuLi4uLi55Li5fUFNTLkYuCiAgICAyODkwOiAwMyAxMiAyMCAwNiAwQyA2OCAxMCAwMCAw
MCAwQyBCMCAxMyAwMCAwMCAwQyAwMCAgLi4gLi5oLi4uLi4uLi4uLgogICAgMjhBMDogMDAgMDAg
MDAgMEMgMDAgMDAgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMEMgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDI4QjA6IDAwIDAwIDEyIDIwIDA2IDBDIDk4IDA4IDAwIDAwIDBDIDA0IDA2IDAwIDAw
IDBDICAuLi4gLi4uLi4uLi4uLi4uCiAgICAyOEMwOiAwMCAwMCAwMCAwMCAwQyAwMCAwMCAwMCAw
MCAwQyAwMSAwMCAwMCAwMCAwQyAwMSAgLi4uLi4uLi4uLi4uLi4uLgogICAgMjhEMDogMDAgMDAg
MDAgMTIgMjAgMDYgMEMgREMgMDUgMDAgMDAgMEMgQ0YgMDMgMDAgMDAgIC4uLi4gLi4uLi4uLi4u
Li4KICAgIDI4RTA6IDBDIDAwIDAwIDAwIDAwIDBDIDAwIDAwIDAwIDAwIDBDIDAyIDAwIDAwIDAw
IDBDICAuLi4uLi4uLi4uLi4uLi4uCiAgICAyOEYwOiAwMiAwMCAwMCAwMCAwOCA1OCA1MCA1MyA1
MyAxMiA0QiAwRCAwMyAxMiA0NyAwNCAgLi4uLi5YUFNTLksuLi5HLgogICAgMjkwMDogMDggMEMg
NjggMTAgMDAgMDAgMEMgQjAgMTMgMDAgMDAgMEMgMDAgMDAgMDAgMDAgIC4uaC4uLi4uLi4uLi4u
Li4KICAgIDI5MTA6IDBDIDAwIDAwIDAwIDAwIDExIDBCIDBBIDA4IDAwIDAwIDAwIDAwIDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAyOTIwOiAwMCAxMSAwQiAwQSAwOCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAxMSAwQiAwQSAgLi4uLi4uLi4uLi4uLi4uLgogICAgMjkzMDogMDggMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMTEgMEIgMEEgMDggMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDI5NDA6IDAwIDAwIDAwIDAwIDAwIDEyIDQ3IDA0IDA4IDBDIDk4IDA4IDAwIDAwIDBD
IDA0ICAuLi4uLi5HLi4uLi4uLi4uCiAgICAyOTUwOiAwNiAwMCAwMCAwQyAwMCAwMCAwMCAwMCAw
QyAwMCAwMCAwMCAwMCAxMSAwQiAwQSAgLi4uLi4uLi4uLi4uLi4uLgogICAgMjk2MDogMDggMDEg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMTEgMEIgMEEgMDggMDEgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDI5NzA6IDAwIDAwIDAwIDAwIDAwIDExIDBCIDBBIDA4IDAwIDAwIDAwIDAwIDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAyOTgwOiAwMCAxMSAwQiAwQSAwOCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAxMiA0NyAwNCAgLi4uLi4uLi4uLi4uLi5HLgogICAgMjk5MDogMDggMEMg
REMgMDUgMDAgMDAgMEMgQ0YgMDMgMDAgMDAgMEMgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDI5QTA6IDBDIDAwIDAwIDAwIDAwIDExIDBCIDBBIDA4IDAyIDAwIDAwIDAwIDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAyOUIwOiAwMCAxMSAwQiAwQSAwOCAwMiAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAxMSAwQiAwQSAgLi4uLi4uLi4uLi4uLi4uLgogICAgMjlDMDogMDggMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMTEgMEIgMEEgMDggMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDI5RDA6IDAwIDAwIDAwIDAwIDAwIDA4IDVGIDUwIDUzIDQ0IDEyIDE4IDAxIDEyIDE1
IDA1ICAuLi4uLi5fUFNELi4uLi4uCiAgICAyOUUwOiAwQSAwNSAwQSAwMCAwQyAwNiAwMCAwMCAw
MCAwQyBGRSAwMCAwMCAwMCAwQyAwMiAgLi4uLi4uLi4uLi4uLi4uLgogICAgMjlGMDogMDAgMDAg
MDAgMDggNTAgNTAgNDMgNTYgMEEgMDAgMTQgMEIgNUYgNTAgNTAgNDMgIC4uLi5QUENWLi4uLl9Q
UEMKICAgIDJBMDA6IDAwIEE0IDUwIDUwIDQzIDU2IDA4IDVGIDQzIDUwIDQzIDEyIDQwIDE5IDE3
IDBBICAuLlBQQ1YuX0NQQy5ALi4uCiAgICAyQTEwOiAxNyAwQSAwMyAxMSAxNCAwQSAxMSA4MiAw
QyAwMCA3RiAwOCAxOCAwNCBCMCAwMiAgLi4uLi4uLi4uLi4uLi4uLgogICAgMkEyMDogMDEgQzAg
MDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgIC4uLi4uLnkuLi4uLi4u
Li4KICAgIDJBMzA6IDA4IDEwIDA0IEIwIDAyIDAxIEMwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0
IDBBICAuLi4uLi4uLi4uLnkuLi4uCiAgICAyQTQwOiAxMSA4MiAwQyAwMCA3RiAwOCAwOCAwNCBC
MCAwMiAwMSBDMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMkE1MDogNzkgMDAg
MTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgMDggMDAgMDQgQjAgMDIgMDEgIHkuLi4uLi4uLi4uLi4u
Li4KICAgIDJBNjA6IEMwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0IDBBIDExIDgyIDBDIDAwIDAw
IDAwICAuLi4uLnkuLi4uLi4uLi4uCiAgICAyQTcwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCA3OSAwMCAxMSAxNCAwQSAxMSAgLi4uLi4uLi4uLnkuLi4uLgogICAgMkE4MDogODIgMEMg
MDAgN0YgMDggMTAgMDQgQjMgMDIgMDEgQzAgMDAgMDAgMDAgMDAgNzkgIC4uLi4uLi4uLi4uLi4u
LnkKICAgIDJBOTA6IDAwIDExIDE0IDBBIDExIDgyIDBDIDAwIDdGIDA4IDA4IDA0IEIzIDAyIDAx
IEMwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAyQUEwOiAwMCAwMCAwMCAwMCA3OSAwMCAxMSAxNCAw
QSAxMSA4MiAwQyAwMCA3RiAwOCAwMCAgLi4uLnkuLi4uLi4uLi4uLgogICAgMkFCMDogMDQgQjMg
MDIgMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgIC4uLi4uLi4uLnkuLi4u
Li4KICAgIDJBQzA6IDBDIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDc5
IDAwICAuLi4uLi4uLi4uLi4uLnkuCiAgICAyQUQwOiAxMSAxNCAwQSAxMSA4MiAwQyAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMkFFMDogMDAgMDAg
MDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgMDAgMDAgMDAgMDAgIC4uLnkuLi4uLi4uLi4u
Li4KICAgIDJBRjA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0IDBBIDExIDgy
IDBDICAuLi4uLi4uLnkuLi4uLi4uCiAgICAyQjAwOiAwMCA3RiA0MCAwMCAwNCBFNyAwMCAwMCAw
MCAwMCAwMCAwMCAwMCA3OSAwMCAxMSAgLi5ALi4uLi4uLi4uLnkuLgogICAgMkIxMDogMTQgMEEg
MTEgODIgMEMgMDAgN0YgNDAgMDAgMDQgRTggMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi5ALi4uLi4u
Li4KICAgIDJCMjA6IDAwIDAwIDc5IDAwIDExIDE0IDBBIDExIDgyIDBDIDAwIDdGIDAyIDAwIDA0
IEI0ICAuLnkuLi4uLi4uLi4uLi4uCiAgICAyQjMwOiAwMiAwMSBDMCAwMCAwMCAwMCAwMCA3OSAw
MCAxMSAxNCAwQSAxMSA4MiAwQyAwMCAgLi4uLi4uLnkuLi4uLi4uLgogICAgMkI0MDogN0YgMDEg
MDAgMDQgQjEgMDIgMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgMEMgMDEgIC4uLi4uLi4uLi4uLnku
Li4KICAgIDJCNTA6IDAwIDAwIDAwIDExIDE0IDBBIDExIDgyIDBDIDAwIDAwIDAwIDAwIDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAyQjYwOiAwMCAwMCAwMCAwMCAwMCAwMCA3OSAwMCAx
MSAxNCAwQSAxMSA4MiAwQyAwMCA3RiAgLi4uLi4ueS4uLi4uLi4uLgogICAgMkI3MDogMDggMTgg
MDQgQjMgMDIgMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgIC4uLi4uLi4uLi4ueS4u
Li4KICAgIDJCODA6IDExIDgyIDBDIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAyQjkwOiA3OSAwMCAwQyAyMSAwMiAwMCAwMCAwQyA2
OSAxMCAwMCAwMCAxMCA0NyAzNSA1QyAgeS4uIS4uLi5pLi4uLkc1XAogICAgMkJBMDogMkYgMDMg
NUYgNTMgNDIgNUYgNTAgNEMgNTQgNDYgNDMgMzAgMzAgNDQgMDggNUYgIC8uX1NCX1BMVEZDMDBE
Ll8KICAgIDJCQjA6IDUwIDQzIDU0IDEyIDJDIDAyIDExIDE0IDBBIDExIDgyIDBDIDAwIDdGIDQw
IDAwICBQQ1QuLC4uLi4uLi4uLkAuCiAgICAyQkMwOiAwMCA2MiAwMCAwMSBDMCAwMCAwMCAwMCAw
MCA3OSAwMCAxMSAxNCAwQSAxMSA4MiAgLmIuLi4uLi4ueS4uLi4uLgogICAgMkJEMDogMEMgMDAg
N0YgNDAgMDAgMDAgNjMgMDAgMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgIC4uLkAuLmMuLi4uLi4u
eS4KICAgIDJCRTA6IDA4IDVGIDUwIDUzIDUzIDEyIDQ2IDA2IDAzIDEyIDIwIDA2IDBDIDY4IDEw
IDAwICAuX1BTUy5GLi4uIC4uaC4uCiAgICAyQkYwOiAwMCAwQyBCMCAxMyAwMCAwMCAwQyAwMCAw
MCAwMCAwMCAwQyAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMkMwMDogMEMgMDAg
MDAgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMTIgMjAgMDYgMEMgOTggMDggIC4uLi4uLi4uLi4uIC4u
Li4KICAgIDJDMTA6IDAwIDAwIDBDIDA0IDA2IDAwIDAwIDBDIDAwIDAwIDAwIDAwIDBDIDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAyQzIwOiAwMCAwQyAwMSAwMCAwMCAwMCAwQyAwMSAw
MCAwMCAwMCAxMiAyMCAwNiAwQyBEQyAgLi4uLi4uLi4uLi4uIC4uLgogICAgMkMzMDogMDUgMDAg
MDAgMEMgQ0YgMDMgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMEMgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDJDNDA6IDAwIDAwIDBDIDAyIDAwIDAwIDAwIDBDIDAyIDAwIDAwIDAwIDA4IDU4IDUw
IDUzICAuLi4uLi4uLi4uLi4uWFBTCiAgICAyQzUwOiA1MyAxMiA0QiAwRCAwMyAxMiA0NyAwNCAw
OCAwQyA2OCAxMCAwMCAwMCAwQyBCMCAgUy5LLi4uRy4uLmguLi4uLgogICAgMkM2MDogMTMgMDAg
MDAgMEMgMDAgMDAgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMTEgMEIgMEEgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDJDNzA6IDA4IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDExIDBCIDBBIDA4IDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAyQzgwOiAwMCAwMCAwMCAwMCAwMCAxMSAwQiAwQSAw
OCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMkM5MDogMDAgMTEg
MEIgMEEgMDggMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMTIgNDcgMDQgIC4uLi4uLi4uLi4uLi4u
Ry4KICAgIDJDQTA6IDA4IDBDIDk4IDA4IDAwIDAwIDBDIDA0IDA2IDAwIDAwIDBDIDAwIDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAyQ0IwOiAwQyAwMCAwMCAwMCAwMCAxMSAwQiAwQSAw
OCAwMSAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMkNDMDogMDAgMTEg
MEIgMEEgMDggMDEgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMTEgMEIgMEEgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDJDRDA6IDA4IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDExIDBCIDBBIDA4IDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAyQ0UwOiAwMCAwMCAwMCAwMCAwMCAxMiA0NyAwNCAw
OCAwQyBEQyAwNSAwMCAwMCAwQyBDRiAgLi4uLi4uRy4uLi4uLi4uLgogICAgMkNGMDogMDMgMDAg
MDAgMEMgMDAgMDAgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMTEgMEIgMEEgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDJEMDA6IDA4IDAyIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDExIDBCIDBBIDA4IDAyIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAyRDEwOiAwMCAwMCAwMCAwMCAwMCAxMSAwQiAwQSAw
OCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMkQyMDogMDAgMTEg
MEIgMEEgMDggMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDggNUYgNTAgIC4uLi4uLi4uLi4uLi4u
X1AKICAgIDJEMzA6IDUzIDQ0IDEyIDE4IDAxIDEyIDE1IDA1IDBBIDA1IDBBIDAwIDBDIDA2IDAw
IDAwICBTRC4uLi4uLi4uLi4uLi4uCiAgICAyRDQwOiAwMCAwQyBGRSAwMCAwMCAwMCAwQyAwMiAw
MCAwMCAwMCAwOCA1MCA1MCA0MyA1NiAgLi4uLi4uLi4uLi4uUFBDVgogICAgMkQ1MDogMEEgMDAg
MTQgMEIgNUYgNTAgNTAgNDMgMDAgQTQgNTAgNTAgNDMgNTYgMDggNUYgIC4uLi5fUFBDLi5QUENW
Ll8KICAgIDJENjA6IDQzIDUwIDQzIDEyIDQwIDE5IDE3IDBBIDE3IDBBIDAzIDExIDE0IDBBIDEx
IDgyICBDUEMuQC4uLi4uLi4uLi4uCiAgICAyRDcwOiAwQyAwMCA3RiAwOCAxOCAwNCBCMCAwMiAw
MSBDMCAwMCAwMCAwMCAwMCA3OSAwMCAgLi4uLi4uLi4uLi4uLi55LgogICAgMkQ4MDogMTEgMTQg
MEEgMTEgODIgMEMgMDAgN0YgMDggMTAgMDQgQjAgMDIgMDEgQzAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDJEOTA6IDAwIDAwIDAwIDc5IDAwIDExIDE0IDBBIDExIDgyIDBDIDAwIDdGIDA4IDA4
IDA0ICAuLi55Li4uLi4uLi4uLi4uCiAgICAyREEwOiBCMCAwMiAwMSBDMCAwMCAwMCAwMCAwMCA3
OSAwMCAxMSAxNCAwQSAxMSA4MiAwQyAgLi4uLi4uLi55Li4uLi4uLgogICAgMkRCMDogMDAgN0Yg
MDggMDAgMDQgQjAgMDIgMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgIC4uLi4uLi4uLi4uLi55
Li4KICAgIDJEQzA6IDE0IDBBIDExIDgyIDBDIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAyREQwOiAwMCAwMCA3OSAwMCAxMSAxNCAwQSAxMSA4
MiAwQyAwMCA3RiAwOCAxMCAwNCBCMyAgLi55Li4uLi4uLi4uLi4uLgogICAgMkRFMDogMDIgMDEg
QzAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgIC4uLi4uLi55Li4uLi4u
Li4KICAgIDJERjA6IDdGIDA4IDA4IDA0IEIzIDAyIDAxIEMwIDAwIDAwIDAwIDAwIDc5IDAwIDEx
IDE0ICAuLi4uLi4uLi4uLi55Li4uCiAgICAyRTAwOiAwQSAxMSA4MiAwQyAwMCA3RiAwOCAwMCAw
NCBCMyAwMiAwMSBDMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMkUxMDogMDAgNzkg
MDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC55Li4uLi4uLi4uLi4u
Li4KICAgIDJFMjA6IDAwIDAwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0IDBBIDExIDgyIDBDIDAw
IDAwICAuLi4uLi55Li4uLi4uLi4uCiAgICAyRTMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCA3OSAwMCAxMSAxNCAwQSAgLi4uLi4uLi4uLi55Li4uLgogICAgMkU0MDogMTEgODIg
MEMgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDJFNTA6IDc5IDAwIDExIDE0IDBBIDExIDgyIDBDIDAwIDdGIDQwIDAwIDA0IEU3IDAw
IDAwICB5Li4uLi4uLi4uQC4uLi4uCiAgICAyRTYwOiAwMCAwMCAwMCAwMCAwMCA3OSAwMCAxMSAx
NCAwQSAxMSA4MiAwQyAwMCA3RiA0MCAgLi4uLi55Li4uLi4uLi4uQAogICAgMkU3MDogMDAgMDQg
RTggMDAgMDAgMDAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgIC4uLi4uLi4uLi55Li4u
Li4KICAgIDJFODA6IDgyIDBDIDAwIDdGIDAyIDAwIDA0IEI0IDAyIDAxIEMwIDAwIDAwIDAwIDAw
IDc5ICAuLi4uLi4uLi4uLi4uLi55CiAgICAyRTkwOiAwMCAxMSAxNCAwQSAxMSA4MiAwQyAwMCA3
RiAwMSAwMCAwNCBCMSAwMiAwMSBDMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMkVBMDogMDAgMDAg
MDAgMDAgNzkgMDAgMEMgMDEgMDAgMDAgMDAgMTEgMTQgMEEgMTEgODIgIC4uLi55Li4uLi4uLi4u
Li4KICAgIDJFQjA6IDBDIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDc5
IDAwICAuLi4uLi4uLi4uLi4uLnkuCiAgICAyRUMwOiAxMSAxNCAwQSAxMSA4MiAwQyAwMCA3RiAw
OCAxOCAwNCBCMyAwMiAwMSBDMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMkVEMDogMDAgMDAg
MDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgMDAgMDAgMDAgMDAgIC4uLnkuLi4uLi4uLi4u
Li4KICAgIDJFRTA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDc5IDAwIDBDIDIxIDAyIDAwIDAw
IDBDICAuLi4uLi4uLnkuLiEuLi4uCiAgICAyRUYwOiA2OSAxMCAwMCAwMCAxMCA0NyAzNSA1QyAy
RiAwMyA1RiA1MyA0MiA1RiA1MCA0QyAgaS4uLi5HNVwvLl9TQl9QTAogICAgMkYwMDogNTQgNDYg
NDMgMzAgMzAgNDUgMDggNUYgNTAgNDMgNTQgMTIgMkMgMDIgMTEgMTQgIFRGQzAwRS5fUENULiwu
Li4KICAgIDJGMTA6IDBBIDExIDgyIDBDIDAwIDdGIDQwIDAwIDAwIDYyIDAwIDAxIEMwIDAwIDAw
IDAwICAuLi4uLi5ALi5iLi4uLi4uCiAgICAyRjIwOiAwMCA3OSAwMCAxMSAxNCAwQSAxMSA4MiAw
QyAwMCA3RiA0MCAwMCAwMCA2MyAwMCAgLnkuLi4uLi4uLi5ALi5jLgogICAgMkYzMDogMDEgQzAg
MDAgMDAgMDAgMDAgNzkgMDAgMDggNUYgNTAgNTMgNTMgMTIgNDYgMDYgIC4uLi4uLnkuLl9QU1Mu
Ri4KICAgIDJGNDA6IDAzIDEyIDIwIDA2IDBDIDY4IDEwIDAwIDAwIDBDIEIwIDEzIDAwIDAwIDBD
IDAwICAuLiAuLmguLi4uLi4uLi4uCiAgICAyRjUwOiAwMCAwMCAwMCAwQyAwMCAwMCAwMCAwMCAw
QyAwMCAwMCAwMCAwMCAwQyAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMkY2MDogMDAgMDAg
MTIgMjAgMDYgMEMgOTggMDggMDAgMDAgMEMgMDQgMDYgMDAgMDAgMEMgIC4uLiAuLi4uLi4uLi4u
Li4KICAgIDJGNzA6IDAwIDAwIDAwIDAwIDBDIDAwIDAwIDAwIDAwIDBDIDAxIDAwIDAwIDAwIDBD
IDAxICAuLi4uLi4uLi4uLi4uLi4uCiAgICAyRjgwOiAwMCAwMCAwMCAxMiAyMCAwNiAwQyBEQyAw
NSAwMCAwMCAwQyBDRiAwMyAwMCAwMCAgLi4uLiAuLi4uLi4uLi4uLgogICAgMkY5MDogMEMgMDAg
MDAgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMEMgMDIgMDAgMDAgMDAgMEMgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDJGQTA6IDAyIDAwIDAwIDAwIDA4IDU4IDUwIDUzIDUzIDEyIDRCIDBEIDAzIDEyIDQ3
IDA0ICAuLi4uLlhQU1MuSy4uLkcuCiAgICAyRkIwOiAwOCAwQyA2OCAxMCAwMCAwMCAwQyBCMCAx
MyAwMCAwMCAwQyAwMCAwMCAwMCAwMCAgLi5oLi4uLi4uLi4uLi4uLgogICAgMkZDMDogMEMgMDAg
MDAgMDAgMDAgMTEgMEIgMEEgMDggMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDJGRDA6IDAwIDExIDBCIDBBIDA4IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDExIDBC
IDBBICAuLi4uLi4uLi4uLi4uLi4uCiAgICAyRkUwOiAwOCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAxMSAwQiAwQSAwOCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMkZGMDogMDAgMDAg
MDAgMDAgMDAgMTIgNDcgMDQgMDggMEMgOTggMDggMDAgMDAgMEMgMDQgIC4uLi4uLkcuLi4uLi4u
Li4KICAgIDMwMDA6IDA2IDAwIDAwIDBDIDAwIDAwIDAwIDAwIDBDIDAwIDAwIDAwIDAwIDExIDBC
IDBBICAuLi4uLi4uLi4uLi4uLi4uCiAgICAzMDEwOiAwOCAwMSAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAxMSAwQiAwQSAwOCAwMSAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMzAyMDogMDAgMDAg
MDAgMDAgMDAgMTEgMEIgMEEgMDggMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDMwMzA6IDAwIDExIDBCIDBBIDA4IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDEyIDQ3
IDA0ICAuLi4uLi4uLi4uLi4uLkcuCiAgICAzMDQwOiAwOCAwQyBEQyAwNSAwMCAwMCAwQyBDRiAw
MyAwMCAwMCAwQyAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMzA1MDogMEMgMDAg
MDAgMDAgMDAgMTEgMEIgMEEgMDggMDIgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDMwNjA6IDAwIDExIDBCIDBBIDA4IDAyIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDExIDBC
IDBBICAuLi4uLi4uLi4uLi4uLi4uCiAgICAzMDcwOiAwOCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAxMSAwQiAwQSAwOCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMzA4MDogMDAgMDAg
MDAgMDAgMDAgMDggNUYgNTAgNTMgNDQgMTIgMTggMDEgMTIgMTUgMDUgIC4uLi4uLl9QU0QuLi4u
Li4KICAgIDMwOTA6IDBBIDA1IDBBIDAwIDBDIDA3IDAwIDAwIDAwIDBDIEZFIDAwIDAwIDAwIDBD
IDAyICAuLi4uLi4uLi4uLi4uLi4uCiAgICAzMEEwOiAwMCAwMCAwMCAwOCA1MCA1MCA0MyA1NiAw
QSAwMCAxNCAwQiA1RiA1MCA1MCA0MyAgLi4uLlBQQ1YuLi4uX1BQQwogICAgMzBCMDogMDAgQTQg
NTAgNTAgNDMgNTYgMDggNUYgNDMgNTAgNDMgMTIgNDAgMTkgMTcgMEEgIC4uUFBDVi5fQ1BDLkAu
Li4KICAgIDMwQzA6IDE3IDBBIDAzIDExIDE0IDBBIDExIDgyIDBDIDAwIDdGIDA4IDE4IDA0IEIw
IDAyICAuLi4uLi4uLi4uLi4uLi4uCiAgICAzMEQwOiAwMSBDMCAwMCAwMCAwMCAwMCA3OSAwMCAx
MSAxNCAwQSAxMSA4MiAwQyAwMCA3RiAgLi4uLi4ueS4uLi4uLi4uLgogICAgMzBFMDogMDggMTAg
MDQgQjAgMDIgMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgIC4uLi4uLi4uLi4ueS4u
Li4KICAgIDMwRjA6IDExIDgyIDBDIDAwIDdGIDA4IDA4IDA0IEIwIDAyIDAxIEMwIDAwIDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAzMTAwOiA3OSAwMCAxMSAxNCAwQSAxMSA4MiAwQyAw
MCA3RiAwOCAwMCAwNCBCMCAwMiAwMSAgeS4uLi4uLi4uLi4uLi4uLgogICAgMzExMDogQzAgMDAg
MDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgMDAgMDAgIC4uLi4ueS4uLi4uLi4u
Li4KICAgIDMxMjA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0IDBB
IDExICAuLi4uLi4uLi4ueS4uLi4uCiAgICAzMTMwOiA4MiAwQyAwMCA3RiAwOCAxMCAwNCBCMyAw
MiAwMSBDMCAwMCAwMCAwMCAwMCA3OSAgLi4uLi4uLi4uLi4uLi4ueQogICAgMzE0MDogMDAgMTEg
MTQgMEEgMTEgODIgMEMgMDAgN0YgMDggMDggMDQgQjMgMDIgMDEgQzAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDMxNTA6IDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0IDBBIDExIDgyIDBDIDAwIDdGIDA4
IDAwICAuLi4ueS4uLi4uLi4uLi4uCiAgICAzMTYwOiAwNCBCMyAwMiAwMSBDMCAwMCAwMCAwMCAw
MCA3OSAwMCAxMSAxNCAwQSAxMSA4MiAgLi4uLi4uLi4ueS4uLi4uLgogICAgMzE3MDogMEMgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgNzkgMDAgIC4uLi4uLi4uLi4uLi4u
eS4KICAgIDMxODA6IDExIDE0IDBBIDExIDgyIDBDIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAzMTkwOiAwMCAwMCAwMCA3OSAwMCAxMSAxNCAwQSAx
MSA4MiAwQyAwMCAwMCAwMCAwMCAwMCAgLi4ueS4uLi4uLi4uLi4uLgogICAgMzFBMDogMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgIC4uLi4uLi4ueS4uLi4u
Li4KICAgIDMxQjA6IDAwIDdGIDQwIDAwIDA0IEU3IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDc5IDAw
IDExICAuLkAuLi4uLi4uLi4ueS4uCiAgICAzMUMwOiAxNCAwQSAxMSA4MiAwQyAwMCA3RiA0MCAw
MCAwNCBFOCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLkAuLi4uLi4uLgogICAgMzFEMDogMDAgMDAg
NzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgMDIgMDAgMDQgQjQgIC4ueS4uLi4uLi4uLi4u
Li4KICAgIDMxRTA6IDAyIDAxIEMwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0IDBBIDExIDgyIDBD
IDAwICAuLi4uLi4ueS4uLi4uLi4uCiAgICAzMUYwOiA3RiAwMSAwMCAwNCBCMSAwMiAwMSBDMCAw
MCAwMCAwMCAwMCA3OSAwMCAwQyAwMSAgLi4uLi4uLi4uLi4ueS4uLgogICAgMzIwMDogMDAgMDAg
MDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDMyMTA6IDAwIDAwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0IDBBIDExIDgyIDBDIDAw
IDdGICAuLi4uLi55Li4uLi4uLi4uCiAgICAzMjIwOiAwOCAxOCAwNCBCMyAwMiAwMSBDMCAwMCAw
MCAwMCAwMCA3OSAwMCAxMSAxNCAwQSAgLi4uLi4uLi4uLi55Li4uLgogICAgMzIzMDogMTEgODIg
MEMgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDMyNDA6IDc5IDAwIDBDIDIxIDAyIDAwIDAwIDBDIDY5IDEwIDAwIDAwIDEwIDQ3IDM1
IDVDICB5Li4hLi4uLmkuLi4uRzVcCiAgICAzMjUwOiAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0QyA1
NCA0NiA0MyAzMCAzMCA0NiAwOCA1RiAgLy5fU0JfUExURkMwMEYuXwogICAgMzI2MDogNTAgNDMg
NTQgMTIgMkMgMDIgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgNDAgMDAgIFBDVC4sLi4uLi4uLi4u
QC4KICAgIDMyNzA6IDAwIDYyIDAwIDAxIEMwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0IDBBIDEx
IDgyICAuYi4uLi4uLi55Li4uLi4uCiAgICAzMjgwOiAwQyAwMCA3RiA0MCAwMCAwMCA2MyAwMCAw
MSBDMCAwMCAwMCAwMCAwMCA3OSAwMCAgLi4uQC4uYy4uLi4uLi55LgogICAgMzI5MDogMDggNUYg
NTAgNTMgNTMgMTIgNDYgMDYgMDMgMTIgMjAgMDYgMEMgNjggMTAgMDAgIC5fUFNTLkYuLi4gLi5o
Li4KICAgIDMyQTA6IDAwIDBDIEIwIDEzIDAwIDAwIDBDIDAwIDAwIDAwIDAwIDBDIDAwIDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAzMkIwOiAwQyAwMCAwMCAwMCAwMCAwQyAwMCAwMCAw
MCAwMCAxMiAyMCAwNiAwQyA5OCAwOCAgLi4uLi4uLi4uLi4gLi4uLgogICAgMzJDMDogMDAgMDAg
MEMgMDQgMDYgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMEMgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDMyRDA6IDAwIDBDIDAxIDAwIDAwIDAwIDBDIDAxIDAwIDAwIDAwIDEyIDIwIDA2IDBD
IERDICAuLi4uLi4uLi4uLi4gLi4uCiAgICAzMkUwOiAwNSAwMCAwMCAwQyBDRiAwMyAwMCAwMCAw
QyAwMCAwMCAwMCAwMCAwQyAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMzJGMDogMDAgMDAg
MEMgMDIgMDAgMDAgMDAgMEMgMDIgMDAgMDAgMDAgMDggNTggNTAgNTMgIC4uLi4uLi4uLi4uLi5Y
UFMKICAgIDMzMDA6IDUzIDEyIDRCIDBEIDAzIDEyIDQ3IDA0IDA4IDBDIDY4IDEwIDAwIDAwIDBD
IEIwICBTLksuLi5HLi4uaC4uLi4uCiAgICAzMzEwOiAxMyAwMCAwMCAwQyAwMCAwMCAwMCAwMCAw
QyAwMCAwMCAwMCAwMCAxMSAwQiAwQSAgLi4uLi4uLi4uLi4uLi4uLgogICAgMzMyMDogMDggMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMTEgMEIgMEEgMDggMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDMzMzA6IDAwIDAwIDAwIDAwIDAwIDExIDBCIDBBIDA4IDAwIDAwIDAwIDAwIDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAzMzQwOiAwMCAxMSAwQiAwQSAwOCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAxMiA0NyAwNCAgLi4uLi4uLi4uLi4uLi5HLgogICAgMzM1MDogMDggMEMg
OTggMDggMDAgMDAgMEMgMDQgMDYgMDAgMDAgMEMgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDMzNjA6IDBDIDAwIDAwIDAwIDAwIDExIDBCIDBBIDA4IDAxIDAwIDAwIDAwIDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAzMzcwOiAwMCAxMSAwQiAwQSAwOCAwMSAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAxMSAwQiAwQSAgLi4uLi4uLi4uLi4uLi4uLgogICAgMzM4MDogMDggMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMTEgMEIgMEEgMDggMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDMzOTA6IDAwIDAwIDAwIDAwIDAwIDEyIDQ3IDA0IDA4IDBDIERDIDA1IDAwIDAwIDBD
IENGICAuLi4uLi5HLi4uLi4uLi4uCiAgICAzM0EwOiAwMyAwMCAwMCAwQyAwMCAwMCAwMCAwMCAw
QyAwMCAwMCAwMCAwMCAxMSAwQiAwQSAgLi4uLi4uLi4uLi4uLi4uLgogICAgMzNCMDogMDggMDIg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMTEgMEIgMEEgMDggMDIgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDMzQzA6IDAwIDAwIDAwIDAwIDAwIDExIDBCIDBBIDA4IDAwIDAwIDAwIDAwIDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAzM0QwOiAwMCAxMSAwQiAwQSAwOCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwOCA1RiA1MCAgLi4uLi4uLi4uLi4uLi5fUAogICAgMzNFMDogNTMgNDQg
MTIgMTggMDEgMTIgMTUgMDUgMEEgMDUgMEEgMDAgMEMgMDcgMDAgMDAgIFNELi4uLi4uLi4uLi4u
Li4KICAgIDMzRjA6IDAwIDBDIEZFIDAwIDAwIDAwIDBDIDAyIDAwIDAwIDAwIDA4IDUwIDUwIDQz
IDU2ICAuLi4uLi4uLi4uLi5QUENWCiAgICAzNDAwOiAwQSAwMCAxNCAwQiA1RiA1MCA1MCA0MyAw
MCBBNCA1MCA1MCA0MyA1NiAwOCA1RiAgLi4uLl9QUEMuLlBQQ1YuXwogICAgMzQxMDogNDMgNTAg
NDMgMTIgNDAgMTkgMTcgMEEgMTcgMEEgMDMgMTEgMTQgMEEgMTEgODIgIENQQy5ALi4uLi4uLi4u
Li4KICAgIDM0MjA6IDBDIDAwIDdGIDA4IDE4IDA0IEIwIDAyIDAxIEMwIDAwIDAwIDAwIDAwIDc5
IDAwICAuLi4uLi4uLi4uLi4uLnkuCiAgICAzNDMwOiAxMSAxNCAwQSAxMSA4MiAwQyAwMCA3RiAw
OCAxMCAwNCBCMCAwMiAwMSBDMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMzQ0MDogMDAgMDAg
MDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgMDggMDggMDQgIC4uLnkuLi4uLi4uLi4u
Li4KICAgIDM0NTA6IEIwIDAyIDAxIEMwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0IDBBIDExIDgy
IDBDICAuLi4uLi4uLnkuLi4uLi4uCiAgICAzNDYwOiAwMCA3RiAwOCAwMCAwNCBCMCAwMiAwMSBD
MCAwMCAwMCAwMCAwMCA3OSAwMCAxMSAgLi4uLi4uLi4uLi4uLnkuLgogICAgMzQ3MDogMTQgMEEg
MTEgODIgMEMgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDM0ODA6IDAwIDAwIDc5IDAwIDExIDE0IDBBIDExIDgyIDBDIDAwIDdGIDA4IDEwIDA0
IEIzICAuLnkuLi4uLi4uLi4uLi4uCiAgICAzNDkwOiAwMiAwMSBDMCAwMCAwMCAwMCAwMCA3OSAw
MCAxMSAxNCAwQSAxMSA4MiAwQyAwMCAgLi4uLi4uLnkuLi4uLi4uLgogICAgMzRBMDogN0YgMDgg
MDggMDQgQjMgMDIgMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgIC4uLi4uLi4uLi4uLnku
Li4KICAgIDM0QjA6IDBBIDExIDgyIDBDIDAwIDdGIDA4IDAwIDA0IEIzIDAyIDAxIEMwIDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAzNEMwOiAwMCA3OSAwMCAxMSAxNCAwQSAxMSA4MiAw
QyAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLnkuLi4uLi4uLi4uLi4uLgogICAgMzREMDogMDAgMDAg
MDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgMDAgIC4uLi4uLnkuLi4uLi4u
Li4KICAgIDM0RTA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0
IDBBICAuLi4uLi4uLi4uLnkuLi4uCiAgICAzNEYwOiAxMSA4MiAwQyAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMzUwMDogNzkgMDAg
MTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgNDAgMDAgMDQgRTcgMDAgMDAgIHkuLi4uLi4uLi5ALi4u
Li4KICAgIDM1MTA6IDAwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0IDBBIDExIDgyIDBDIDAwIDdG
IDQwICAuLi4uLnkuLi4uLi4uLi5ACiAgICAzNTIwOiAwMCAwNCBFOCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCA3OSAwMCAxMSAxNCAwQSAxMSAgLi4uLi4uLi4uLnkuLi4uLgogICAgMzUzMDogODIgMEMg
MDAgN0YgMDIgMDAgMDQgQjQgMDIgMDEgQzAgMDAgMDAgMDAgMDAgNzkgIC4uLi4uLi4uLi4uLi4u
LnkKICAgIDM1NDA6IDAwIDExIDE0IDBBIDExIDgyIDBDIDAwIDdGIDAxIDAwIDA0IEIxIDAyIDAx
IEMwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAzNTUwOiAwMCAwMCAwMCAwMCA3OSAwMCAwQyAwMSAw
MCAwMCAwMCAxMSAxNCAwQSAxMSA4MiAgLi4uLnkuLi4uLi4uLi4uLgogICAgMzU2MDogMEMgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgNzkgMDAgIC4uLi4uLi4uLi4uLi4u
eS4KICAgIDM1NzA6IDExIDE0IDBBIDExIDgyIDBDIDAwIDdGIDA4IDE4IDA0IEIzIDAyIDAxIEMw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAzNTgwOiAwMCAwMCAwMCA3OSAwMCAxMSAxNCAwQSAx
MSA4MiAwQyAwMCAwMCAwMCAwMCAwMCAgLi4ueS4uLi4uLi4uLi4uLgogICAgMzU5MDogMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgNzkgMDAgMEMgMjEgMDIgMDAgMDAgMEMgIC4uLi4uLi4ueS4uIS4u
Li4KICAgIDM1QTA6IDY5IDEwIDAwIDAwIDEwIDQ3IDM1IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUw
IDRDICBpLi4uLkc1XC8uX1NCX1BMCiAgICAzNUIwOiA1NCA0NiA0MyAzMCAzMSAzMCAwOCA1RiA1
MCA0MyA1NCAxMiAyQyAwMiAxMSAxNCAgVEZDMDEwLl9QQ1QuLC4uLgogICAgMzVDMDogMEEgMTEg
ODIgMEMgMDAgN0YgNDAgMDAgMDAgNjIgMDAgMDEgQzAgMDAgMDAgMDAgIC4uLi4uLkAuLmIuLi4u
Li4KICAgIDM1RDA6IDAwIDc5IDAwIDExIDE0IDBBIDExIDgyIDBDIDAwIDdGIDQwIDAwIDAwIDYz
IDAwICAueS4uLi4uLi4uLkAuLmMuCiAgICAzNUUwOiAwMSBDMCAwMCAwMCAwMCAwMCA3OSAwMCAw
OCA1RiA1MCA1MyA1MyAxMiA0NiAwNiAgLi4uLi4ueS4uX1BTUy5GLgogICAgMzVGMDogMDMgMTIg
MjAgMDYgMEMgNjggMTAgMDAgMDAgMEMgQjAgMTMgMDAgMDAgMEMgMDAgIC4uIC4uaC4uLi4uLi4u
Li4KICAgIDM2MDA6IDAwIDAwIDAwIDBDIDAwIDAwIDAwIDAwIDBDIDAwIDAwIDAwIDAwIDBDIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAzNjEwOiAwMCAwMCAxMiAyMCAwNiAwQyA5OCAwOCAw
MCAwMCAwQyAwNCAwNiAwMCAwMCAwQyAgLi4uIC4uLi4uLi4uLi4uLgogICAgMzYyMDogMDAgMDAg
MDAgMDAgMEMgMDAgMDAgMDAgMDAgMEMgMDEgMDAgMDAgMDAgMEMgMDEgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDM2MzA6IDAwIDAwIDAwIDEyIDIwIDA2IDBDIERDIDA1IDAwIDAwIDBDIENGIDAzIDAw
IDAwICAuLi4uIC4uLi4uLi4uLi4uCiAgICAzNjQwOiAwQyAwMCAwMCAwMCAwMCAwQyAwMCAwMCAw
MCAwMCAwQyAwMiAwMCAwMCAwMCAwQyAgLi4uLi4uLi4uLi4uLi4uLgogICAgMzY1MDogMDIgMDAg
MDAgMDAgMDggNTggNTAgNTMgNTMgMTIgNEIgMEQgMDMgMTIgNDcgMDQgIC4uLi4uWFBTUy5LLi4u
Ry4KICAgIDM2NjA6IDA4IDBDIDY4IDEwIDAwIDAwIDBDIEIwIDEzIDAwIDAwIDBDIDAwIDAwIDAw
IDAwICAuLmguLi4uLi4uLi4uLi4uCiAgICAzNjcwOiAwQyAwMCAwMCAwMCAwMCAxMSAwQiAwQSAw
OCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMzY4MDogMDAgMTEg
MEIgMEEgMDggMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMTEgMEIgMEEgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDM2OTA6IDA4IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDExIDBCIDBBIDA4IDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAzNkEwOiAwMCAwMCAwMCAwMCAwMCAxMiA0NyAwNCAw
OCAwQyA5OCAwOCAwMCAwMCAwQyAwNCAgLi4uLi4uRy4uLi4uLi4uLgogICAgMzZCMDogMDYgMDAg
MDAgMEMgMDAgMDAgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMTEgMEIgMEEgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDM2QzA6IDA4IDAxIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDExIDBCIDBBIDA4IDAxIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAzNkQwOiAwMCAwMCAwMCAwMCAwMCAxMSAwQiAwQSAw
OCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMzZFMDogMDAgMTEg
MEIgMEEgMDggMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMTIgNDcgMDQgIC4uLi4uLi4uLi4uLi4u
Ry4KICAgIDM2RjA6IDA4IDBDIERDIDA1IDAwIDAwIDBDIENGIDAzIDAwIDAwIDBDIDAwIDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAzNzAwOiAwQyAwMCAwMCAwMCAwMCAxMSAwQiAwQSAw
OCAwMiAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMzcxMDogMDAgMTEg
MEIgMEEgMDggMDIgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMTEgMEIgMEEgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDM3MjA6IDA4IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDExIDBCIDBBIDA4IDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAzNzMwOiAwMCAwMCAwMCAwMCAwMCAwOCA1RiA1MCA1
MyA0NCAxMiAxOCAwMSAxMiAxNSAwNSAgLi4uLi4uX1BTRC4uLi4uLgogICAgMzc0MDogMEEgMDUg
MEEgMDAgMEMgMDggMDAgMDAgMDAgMEMgRkUgMDAgMDAgMDAgMEMgMDIgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDM3NTA6IDAwIDAwIDAwIDA4IDUwIDUwIDQzIDU2IDBBIDAwIDE0IDBCIDVGIDUwIDUw
IDQzICAuLi4uUFBDVi4uLi5fUFBDCiAgICAzNzYwOiAwMCBBNCA1MCA1MCA0MyA1NiAwOCA1RiA0
MyA1MCA0MyAxMiA0MCAxOSAxNyAwQSAgLi5QUENWLl9DUEMuQC4uLgogICAgMzc3MDogMTcgMEEg
MDMgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgMDggMTggMDQgQjAgMDIgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDM3ODA6IDAxIEMwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0IDBBIDExIDgyIDBDIDAw
IDdGICAuLi4uLi55Li4uLi4uLi4uCiAgICAzNzkwOiAwOCAxMCAwNCBCMCAwMiAwMSBDMCAwMCAw
MCAwMCAwMCA3OSAwMCAxMSAxNCAwQSAgLi4uLi4uLi4uLi55Li4uLgogICAgMzdBMDogMTEgODIg
MEMgMDAgN0YgMDggMDggMDQgQjAgMDIgMDEgQzAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDM3QjA6IDc5IDAwIDExIDE0IDBBIDExIDgyIDBDIDAwIDdGIDA4IDAwIDA0IEIwIDAy
IDAxICB5Li4uLi4uLi4uLi4uLi4uCiAgICAzN0MwOiBDMCAwMCAwMCAwMCAwMCA3OSAwMCAxMSAx
NCAwQSAxMSA4MiAwQyAwMCAwMCAwMCAgLi4uLi55Li4uLi4uLi4uLgogICAgMzdEMDogMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgIC4uLi4uLi4uLi55Li4u
Li4KICAgIDM3RTA6IDgyIDBDIDAwIDdGIDA4IDEwIDA0IEIzIDAyIDAxIEMwIDAwIDAwIDAwIDAw
IDc5ICAuLi4uLi4uLi4uLi4uLi55CiAgICAzN0YwOiAwMCAxMSAxNCAwQSAxMSA4MiAwQyAwMCA3
RiAwOCAwOCAwNCBCMyAwMiAwMSBDMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMzgwMDogMDAgMDAg
MDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgMDggMDAgIC4uLi55Li4uLi4uLi4u
Li4KICAgIDM4MTA6IDA0IEIzIDAyIDAxIEMwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0IDBBIDEx
IDgyICAuLi4uLi4uLi55Li4uLi4uCiAgICAzODIwOiAwQyAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCA3OSAwMCAgLi4uLi4uLi4uLi4uLi55LgogICAgMzgzMDogMTEgMTQg
MEEgMTEgODIgMEMgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDM4NDA6IDAwIDAwIDAwIDc5IDAwIDExIDE0IDBBIDExIDgyIDBDIDAwIDAwIDAwIDAw
IDAwICAuLi55Li4uLi4uLi4uLi4uCiAgICAzODUwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCA3
OSAwMCAxMSAxNCAwQSAxMSA4MiAwQyAgLi4uLi4uLi55Li4uLi4uLgogICAgMzg2MDogMDAgN0Yg
NDAgMDAgMDQgRTcgMDAgMDAgMDAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgIC4uQC4uLi4uLi4uLi55
Li4KICAgIDM4NzA6IDE0IDBBIDExIDgyIDBDIDAwIDdGIDQwIDAwIDA0IEU4IDAwIDAwIDAwIDAw
IDAwICAuLi4uLi4uQC4uLi4uLi4uCiAgICAzODgwOiAwMCAwMCA3OSAwMCAxMSAxNCAwQSAxMSA4
MiAwQyAwMCA3RiAwMiAwMCAwNCBCNCAgLi55Li4uLi4uLi4uLi4uLgogICAgMzg5MDogMDIgMDEg
QzAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgIC4uLi4uLi55Li4uLi4u
Li4KICAgIDM4QTA6IDdGIDAxIDAwIDA0IEIxIDAyIDAxIEMwIDAwIDAwIDAwIDAwIDc5IDAwIDBD
IDAxICAuLi4uLi4uLi4uLi55Li4uCiAgICAzOEIwOiAwMCAwMCAwMCAxMSAxNCAwQSAxMSA4MiAw
QyAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMzhDMDogMDAgMDAg
MDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgIC4uLi4uLnkuLi4uLi4u
Li4KICAgIDM4RDA6IDA4IDE4IDA0IEIzIDAyIDAxIEMwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0
IDBBICAuLi4uLi4uLi4uLnkuLi4uCiAgICAzOEUwOiAxMSA4MiAwQyAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMzhGMDogNzkgMDAg
MEMgMjEgMDIgMDAgMDAgMEMgNjkgMTAgMDAgMDAgMTAgNDcgMzUgNUMgIHkuLiEuLi4uaS4uLi5H
NVwKICAgIDM5MDA6IDJGIDAzIDVGIDUzIDQyIDVGIDUwIDRDIDU0IDQ2IDQzIDMwIDMxIDMxIDA4
IDVGICAvLl9TQl9QTFRGQzAxMS5fCiAgICAzOTEwOiA1MCA0MyA1NCAxMiAyQyAwMiAxMSAxNCAw
QSAxMSA4MiAwQyAwMCA3RiA0MCAwMCAgUENULiwuLi4uLi4uLi5ALgogICAgMzkyMDogMDAgNjIg
MDAgMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgIC5iLi4uLi4uLnkuLi4u
Li4KICAgIDM5MzA6IDBDIDAwIDdGIDQwIDAwIDAwIDYzIDAwIDAxIEMwIDAwIDAwIDAwIDAwIDc5
IDAwICAuLi5ALi5jLi4uLi4uLnkuCiAgICAzOTQwOiAwOCA1RiA1MCA1MyA1MyAxMiA0NiAwNiAw
MyAxMiAyMCAwNiAwQyA2OCAxMCAwMCAgLl9QU1MuRi4uLiAuLmguLgogICAgMzk1MDogMDAgMEMg
QjAgMTMgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMEMgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDM5NjA6IDBDIDAwIDAwIDAwIDAwIDBDIDAwIDAwIDAwIDAwIDEyIDIwIDA2IDBDIDk4
IDA4ICAuLi4uLi4uLi4uLiAuLi4uCiAgICAzOTcwOiAwMCAwMCAwQyAwNCAwNiAwMCAwMCAwQyAw
MCAwMCAwMCAwMCAwQyAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMzk4MDogMDAgMEMg
MDEgMDAgMDAgMDAgMEMgMDEgMDAgMDAgMDAgMTIgMjAgMDYgMEMgREMgIC4uLi4uLi4uLi4uLiAu
Li4KICAgIDM5OTA6IDA1IDAwIDAwIDBDIENGIDAzIDAwIDAwIDBDIDAwIDAwIDAwIDAwIDBDIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAzOUEwOiAwMCAwMCAwQyAwMiAwMCAwMCAwMCAwQyAw
MiAwMCAwMCAwMCAwOCA1OCA1MCA1MyAgLi4uLi4uLi4uLi4uLlhQUwogICAgMzlCMDogNTMgMTIg
NEIgMEQgMDMgMTIgNDcgMDQgMDggMEMgNjggMTAgMDAgMDAgMEMgQjAgIFMuSy4uLkcuLi5oLi4u
Li4KICAgIDM5QzA6IDEzIDAwIDAwIDBDIDAwIDAwIDAwIDAwIDBDIDAwIDAwIDAwIDAwIDExIDBC
IDBBICAuLi4uLi4uLi4uLi4uLi4uCiAgICAzOUQwOiAwOCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAxMSAwQiAwQSAwOCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMzlFMDogMDAgMDAg
MDAgMDAgMDAgMTEgMEIgMEEgMDggMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDM5RjA6IDAwIDExIDBCIDBBIDA4IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDEyIDQ3
IDA0ICAuLi4uLi4uLi4uLi4uLkcuCiAgICAzQTAwOiAwOCAwQyA5OCAwOCAwMCAwMCAwQyAwNCAw
NiAwMCAwMCAwQyAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgM0ExMDogMEMgMDAg
MDAgMDAgMDAgMTEgMEIgMEEgMDggMDEgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDNBMjA6IDAwIDExIDBCIDBBIDA4IDAxIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDExIDBC
IDBBICAuLi4uLi4uLi4uLi4uLi4uCiAgICAzQTMwOiAwOCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAxMSAwQiAwQSAwOCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgM0E0MDogMDAgMDAg
MDAgMDAgMDAgMTIgNDcgMDQgMDggMEMgREMgMDUgMDAgMDAgMEMgQ0YgIC4uLi4uLkcuLi4uLi4u
Li4KICAgIDNBNTA6IDAzIDAwIDAwIDBDIDAwIDAwIDAwIDAwIDBDIDAwIDAwIDAwIDAwIDExIDBC
IDBBICAuLi4uLi4uLi4uLi4uLi4uCiAgICAzQTYwOiAwOCAwMiAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAxMSAwQiAwQSAwOCAwMiAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgM0E3MDogMDAgMDAg
MDAgMDAgMDAgMTEgMEIgMEEgMDggMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDNBODA6IDAwIDExIDBCIDBBIDA4IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDA4IDVG
IDUwICAuLi4uLi4uLi4uLi4uLl9QCiAgICAzQTkwOiA1MyA0NCAxMiAxOCAwMSAxMiAxNSAwNSAw
QSAwNSAwQSAwMCAwQyAwOCAwMCAwMCAgU0QuLi4uLi4uLi4uLi4uLgogICAgM0FBMDogMDAgMEMg
RkUgMDAgMDAgMDAgMEMgMDIgMDAgMDAgMDAgMDggNTAgNTAgNDMgNTYgIC4uLi4uLi4uLi4uLlBQ
Q1YKICAgIDNBQjA6IDBBIDAwIDE0IDBCIDVGIDUwIDUwIDQzIDAwIEE0IDUwIDUwIDQzIDU2IDA4
IDVGICAuLi4uX1BQQy4uUFBDVi5fCiAgICAzQUMwOiA0MyA1MCA0MyAxMiA0MCAxOSAxNyAwQSAx
NyAwQSAwMyAxMSAxNCAwQSAxMSA4MiAgQ1BDLkAuLi4uLi4uLi4uLgogICAgM0FEMDogMEMgMDAg
N0YgMDggMTggMDQgQjAgMDIgMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgIC4uLi4uLi4uLi4uLi4u
eS4KICAgIDNBRTA6IDExIDE0IDBBIDExIDgyIDBDIDAwIDdGIDA4IDEwIDA0IEIwIDAyIDAxIEMw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAzQUYwOiAwMCAwMCAwMCA3OSAwMCAxMSAxNCAwQSAx
MSA4MiAwQyAwMCA3RiAwOCAwOCAwNCAgLi4ueS4uLi4uLi4uLi4uLgogICAgM0IwMDogQjAgMDIg
MDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgIC4uLi4uLi4ueS4uLi4u
Li4KICAgIDNCMTA6IDAwIDdGIDA4IDAwIDA0IEIwIDAyIDAxIEMwIDAwIDAwIDAwIDAwIDc5IDAw
IDExICAuLi4uLi4uLi4uLi4ueS4uCiAgICAzQjIwOiAxNCAwQSAxMSA4MiAwQyAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgM0IzMDogMDAgMDAg
NzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgMDggMTAgMDQgQjMgIC4ueS4uLi4uLi4uLi4u
Li4KICAgIDNCNDA6IDAyIDAxIEMwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0IDBBIDExIDgyIDBD
IDAwICAuLi4uLi4ueS4uLi4uLi4uCiAgICAzQjUwOiA3RiAwOCAwOCAwNCBCMyAwMiAwMSBDMCAw
MCAwMCAwMCAwMCA3OSAwMCAxMSAxNCAgLi4uLi4uLi4uLi4ueS4uLgogICAgM0I2MDogMEEgMTEg
ODIgMEMgMDAgN0YgMDggMDAgMDQgQjMgMDIgMDEgQzAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDNCNzA6IDAwIDc5IDAwIDExIDE0IDBBIDExIDgyIDBDIDAwIDAwIDAwIDAwIDAwIDAw
IDAwICAueS4uLi4uLi4uLi4uLi4uCiAgICAzQjgwOiAwMCAwMCAwMCAwMCAwMCAwMCA3OSAwMCAx
MSAxNCAwQSAxMSA4MiAwQyAwMCAwMCAgLi4uLi4ueS4uLi4uLi4uLgogICAgM0I5MDogMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgIC4uLi4uLi4uLi4ueS4u
Li4KICAgIDNCQTA6IDExIDgyIDBDIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAzQkIwOiA3OSAwMCAxMSAxNCAwQSAxMSA4MiAwQyAw
MCA3RiA0MCAwMCAwNCBFNyAwMCAwMCAgeS4uLi4uLi4uLkAuLi4uLgogICAgM0JDMDogMDAgMDAg
MDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgNDAgIC4uLi4ueS4uLi4uLi4u
LkAKICAgIDNCRDA6IDAwIDA0IEU4IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0IDBB
IDExICAuLi4uLi4uLi4ueS4uLi4uCiAgICAzQkUwOiA4MiAwQyAwMCA3RiAwMiAwMCAwNCBCNCAw
MiAwMSBDMCAwMCAwMCAwMCAwMCA3OSAgLi4uLi4uLi4uLi4uLi4ueQogICAgM0JGMDogMDAgMTEg
MTQgMEEgMTEgODIgMEMgMDAgN0YgMDEgMDAgMDQgQjEgMDIgMDEgQzAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDNDMDA6IDAwIDAwIDAwIDAwIDc5IDAwIDBDIDAxIDAwIDAwIDAwIDExIDE0IDBBIDEx
IDgyICAuLi4ueS4uLi4uLi4uLi4uCiAgICAzQzEwOiAwQyAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCA3OSAwMCAgLi4uLi4uLi4uLi4uLi55LgogICAgM0MyMDogMTEgMTQg
MEEgMTEgODIgMEMgMDAgN0YgMDggMTggMDQgQjMgMDIgMDEgQzAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDNDMzA6IDAwIDAwIDAwIDc5IDAwIDExIDE0IDBBIDExIDgyIDBDIDAwIDAwIDAwIDAw
IDAwICAuLi55Li4uLi4uLi4uLi4uCiAgICAzQzQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCA3
OSAwMCAwQyAyMSAwMiAwMCAwMCAwQyAgLi4uLi4uLi55Li4hLi4uLgogICAgM0M1MDogNjkgMTAg
MDAgMDAgMTAgNDcgMzUgNUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAgNEMgIGkuLi4uRzVcLy5fU0Jf
UEwKICAgIDNDNjA6IDU0IDQ2IDQzIDMwIDMxIDMyIDA4IDVGIDUwIDQzIDU0IDEyIDJDIDAyIDEx
IDE0ICBURkMwMTIuX1BDVC4sLi4uCiAgICAzQzcwOiAwQSAxMSA4MiAwQyAwMCA3RiA0MCAwMCAw
MCA2MiAwMCAwMSBDMCAwMCAwMCAwMCAgLi4uLi4uQC4uYi4uLi4uLgogICAgM0M4MDogMDAgNzkg
MDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgNDAgMDAgMDAgNjMgMDAgIC55Li4uLi4uLi4uQC4u
Yy4KICAgIDNDOTA6IDAxIEMwIDAwIDAwIDAwIDAwIDc5IDAwIDA4IDVGIDUwIDUzIDUzIDEyIDQ2
IDA2ICAuLi4uLi55Li5fUFNTLkYuCiAgICAzQ0EwOiAwMyAxMiAyMCAwNiAwQyA2OCAxMCAwMCAw
MCAwQyBCMCAxMyAwMCAwMCAwQyAwMCAgLi4gLi5oLi4uLi4uLi4uLgogICAgM0NCMDogMDAgMDAg
MDAgMEMgMDAgMDAgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMEMgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDNDQzA6IDAwIDAwIDEyIDIwIDA2IDBDIDk4IDA4IDAwIDAwIDBDIDA0IDA2IDAwIDAw
IDBDICAuLi4gLi4uLi4uLi4uLi4uCiAgICAzQ0QwOiAwMCAwMCAwMCAwMCAwQyAwMCAwMCAwMCAw
MCAwQyAwMSAwMCAwMCAwMCAwQyAwMSAgLi4uLi4uLi4uLi4uLi4uLgogICAgM0NFMDogMDAgMDAg
MDAgMTIgMjAgMDYgMEMgREMgMDUgMDAgMDAgMEMgQ0YgMDMgMDAgMDAgIC4uLi4gLi4uLi4uLi4u
Li4KICAgIDNDRjA6IDBDIDAwIDAwIDAwIDAwIDBDIDAwIDAwIDAwIDAwIDBDIDAyIDAwIDAwIDAw
IDBDICAuLi4uLi4uLi4uLi4uLi4uCiAgICAzRDAwOiAwMiAwMCAwMCAwMCAwOCA1OCA1MCA1MyA1
MyAxMiA0QiAwRCAwMyAxMiA0NyAwNCAgLi4uLi5YUFNTLksuLi5HLgogICAgM0QxMDogMDggMEMg
NjggMTAgMDAgMDAgMEMgQjAgMTMgMDAgMDAgMEMgMDAgMDAgMDAgMDAgIC4uaC4uLi4uLi4uLi4u
Li4KICAgIDNEMjA6IDBDIDAwIDAwIDAwIDAwIDExIDBCIDBBIDA4IDAwIDAwIDAwIDAwIDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAzRDMwOiAwMCAxMSAwQiAwQSAwOCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAxMSAwQiAwQSAgLi4uLi4uLi4uLi4uLi4uLgogICAgM0Q0MDogMDggMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMTEgMEIgMEEgMDggMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDNENTA6IDAwIDAwIDAwIDAwIDAwIDEyIDQ3IDA0IDA4IDBDIDk4IDA4IDAwIDAwIDBD
IDA0ICAuLi4uLi5HLi4uLi4uLi4uCiAgICAzRDYwOiAwNiAwMCAwMCAwQyAwMCAwMCAwMCAwMCAw
QyAwMCAwMCAwMCAwMCAxMSAwQiAwQSAgLi4uLi4uLi4uLi4uLi4uLgogICAgM0Q3MDogMDggMDEg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMTEgMEIgMEEgMDggMDEgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDNEODA6IDAwIDAwIDAwIDAwIDAwIDExIDBCIDBBIDA4IDAwIDAwIDAwIDAwIDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAzRDkwOiAwMCAxMSAwQiAwQSAwOCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAxMiA0NyAwNCAgLi4uLi4uLi4uLi4uLi5HLgogICAgM0RBMDogMDggMEMg
REMgMDUgMDAgMDAgMEMgQ0YgMDMgMDAgMDAgMEMgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDNEQjA6IDBDIDAwIDAwIDAwIDAwIDExIDBCIDBBIDA4IDAyIDAwIDAwIDAwIDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAzREMwOiAwMCAxMSAwQiAwQSAwOCAwMiAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAxMSAwQiAwQSAgLi4uLi4uLi4uLi4uLi4uLgogICAgM0REMDogMDggMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMTEgMEIgMEEgMDggMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDNERTA6IDAwIDAwIDAwIDAwIDAwIDA4IDVGIDUwIDUzIDQ0IDEyIDE4IDAxIDEyIDE1
IDA1ICAuLi4uLi5fUFNELi4uLi4uCiAgICAzREYwOiAwQSAwNSAwQSAwMCAwQyAwOSAwMCAwMCAw
MCAwQyBGRSAwMCAwMCAwMCAwQyAwMiAgLi4uLi4uLi4uLi4uLi4uLgogICAgM0UwMDogMDAgMDAg
MDAgMDggNTAgNTAgNDMgNTYgMEEgMDAgMTQgMEIgNUYgNTAgNTAgNDMgIC4uLi5QUENWLi4uLl9Q
UEMKICAgIDNFMTA6IDAwIEE0IDUwIDUwIDQzIDU2IDA4IDVGIDQzIDUwIDQzIDEyIDQwIDE5IDE3
IDBBICAuLlBQQ1YuX0NQQy5ALi4uCiAgICAzRTIwOiAxNyAwQSAwMyAxMSAxNCAwQSAxMSA4MiAw
QyAwMCA3RiAwOCAxOCAwNCBCMCAwMiAgLi4uLi4uLi4uLi4uLi4uLgogICAgM0UzMDogMDEgQzAg
MDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgIC4uLi4uLnkuLi4uLi4u
Li4KICAgIDNFNDA6IDA4IDEwIDA0IEIwIDAyIDAxIEMwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0
IDBBICAuLi4uLi4uLi4uLnkuLi4uCiAgICAzRTUwOiAxMSA4MiAwQyAwMCA3RiAwOCAwOCAwNCBC
MCAwMiAwMSBDMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgM0U2MDogNzkgMDAg
MTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgMDggMDAgMDQgQjAgMDIgMDEgIHkuLi4uLi4uLi4uLi4u
Li4KICAgIDNFNzA6IEMwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0IDBBIDExIDgyIDBDIDAwIDAw
IDAwICAuLi4uLnkuLi4uLi4uLi4uCiAgICAzRTgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCA3OSAwMCAxMSAxNCAwQSAxMSAgLi4uLi4uLi4uLnkuLi4uLgogICAgM0U5MDogODIgMEMg
MDAgN0YgMDggMTAgMDQgQjMgMDIgMDEgQzAgMDAgMDAgMDAgMDAgNzkgIC4uLi4uLi4uLi4uLi4u
LnkKICAgIDNFQTA6IDAwIDExIDE0IDBBIDExIDgyIDBDIDAwIDdGIDA4IDA4IDA0IEIzIDAyIDAx
IEMwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAzRUIwOiAwMCAwMCAwMCAwMCA3OSAwMCAxMSAxNCAw
QSAxMSA4MiAwQyAwMCA3RiAwOCAwMCAgLi4uLnkuLi4uLi4uLi4uLgogICAgM0VDMDogMDQgQjMg
MDIgMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgIC4uLi4uLi4uLnkuLi4u
Li4KICAgIDNFRDA6IDBDIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDc5
IDAwICAuLi4uLi4uLi4uLi4uLnkuCiAgICAzRUUwOiAxMSAxNCAwQSAxMSA4MiAwQyAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgM0VGMDogMDAgMDAg
MDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgMDAgMDAgMDAgMDAgIC4uLnkuLi4uLi4uLi4u
Li4KICAgIDNGMDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0IDBBIDExIDgy
IDBDICAuLi4uLi4uLnkuLi4uLi4uCiAgICAzRjEwOiAwMCA3RiA0MCAwMCAwNCBFNyAwMCAwMCAw
MCAwMCAwMCAwMCAwMCA3OSAwMCAxMSAgLi5ALi4uLi4uLi4uLnkuLgogICAgM0YyMDogMTQgMEEg
MTEgODIgMEMgMDAgN0YgNDAgMDAgMDQgRTggMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi5ALi4uLi4u
Li4KICAgIDNGMzA6IDAwIDAwIDc5IDAwIDExIDE0IDBBIDExIDgyIDBDIDAwIDdGIDAyIDAwIDA0
IEI0ICAuLnkuLi4uLi4uLi4uLi4uCiAgICAzRjQwOiAwMiAwMSBDMCAwMCAwMCAwMCAwMCA3OSAw
MCAxMSAxNCAwQSAxMSA4MiAwQyAwMCAgLi4uLi4uLnkuLi4uLi4uLgogICAgM0Y1MDogN0YgMDEg
MDAgMDQgQjEgMDIgMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgMEMgMDEgIC4uLi4uLi4uLi4uLnku
Li4KICAgIDNGNjA6IDAwIDAwIDAwIDExIDE0IDBBIDExIDgyIDBDIDAwIDAwIDAwIDAwIDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAzRjcwOiAwMCAwMCAwMCAwMCAwMCAwMCA3OSAwMCAx
MSAxNCAwQSAxMSA4MiAwQyAwMCA3RiAgLi4uLi4ueS4uLi4uLi4uLgogICAgM0Y4MDogMDggMTgg
MDQgQjMgMDIgMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgIC4uLi4uLi4uLi4ueS4u
Li4KICAgIDNGOTA6IDExIDgyIDBDIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAzRkEwOiA3OSAwMCAwQyAyMSAwMiAwMCAwMCAwQyA2
OSAxMCAwMCAwMCAxMCA0NyAzNSA1QyAgeS4uIS4uLi5pLi4uLkc1XAogICAgM0ZCMDogMkYgMDMg
NUYgNTMgNDIgNUYgNTAgNEMgNTQgNDYgNDMgMzAgMzEgMzMgMDggNUYgIC8uX1NCX1BMVEZDMDEz
Ll8KICAgIDNGQzA6IDUwIDQzIDU0IDEyIDJDIDAyIDExIDE0IDBBIDExIDgyIDBDIDAwIDdGIDQw
IDAwICBQQ1QuLC4uLi4uLi4uLkAuCiAgICAzRkQwOiAwMCA2MiAwMCAwMSBDMCAwMCAwMCAwMCAw
MCA3OSAwMCAxMSAxNCAwQSAxMSA4MiAgLmIuLi4uLi4ueS4uLi4uLgogICAgM0ZFMDogMEMgMDAg
N0YgNDAgMDAgMDAgNjMgMDAgMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgIC4uLkAuLmMuLi4uLi4u
eS4KICAgIDNGRjA6IDA4IDVGIDUwIDUzIDUzIDEyIDQ2IDA2IDAzIDEyIDIwIDA2IDBDIDY4IDEw
IDAwICAuX1BTUy5GLi4uIC4uaC4uCiAgICA0MDAwOiAwMCAwQyBCMCAxMyAwMCAwMCAwQyAwMCAw
MCAwMCAwMCAwQyAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNDAxMDogMEMgMDAg
MDAgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMTIgMjAgMDYgMEMgOTggMDggIC4uLi4uLi4uLi4uIC4u
Li4KICAgIDQwMjA6IDAwIDAwIDBDIDA0IDA2IDAwIDAwIDBDIDAwIDAwIDAwIDAwIDBDIDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA0MDMwOiAwMCAwQyAwMSAwMCAwMCAwMCAwQyAwMSAw
MCAwMCAwMCAxMiAyMCAwNiAwQyBEQyAgLi4uLi4uLi4uLi4uIC4uLgogICAgNDA0MDogMDUgMDAg
MDAgMEMgQ0YgMDMgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMEMgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDQwNTA6IDAwIDAwIDBDIDAyIDAwIDAwIDAwIDBDIDAyIDAwIDAwIDAwIDA4IDU4IDUw
IDUzICAuLi4uLi4uLi4uLi4uWFBTCiAgICA0MDYwOiA1MyAxMiA0QiAwRCAwMyAxMiA0NyAwNCAw
OCAwQyA2OCAxMCAwMCAwMCAwQyBCMCAgUy5LLi4uRy4uLmguLi4uLgogICAgNDA3MDogMTMgMDAg
MDAgMEMgMDAgMDAgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMTEgMEIgMEEgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDQwODA6IDA4IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDExIDBCIDBBIDA4IDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA0MDkwOiAwMCAwMCAwMCAwMCAwMCAxMSAwQiAwQSAw
OCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNDBBMDogMDAgMTEg
MEIgMEEgMDggMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMTIgNDcgMDQgIC4uLi4uLi4uLi4uLi4u
Ry4KICAgIDQwQjA6IDA4IDBDIDk4IDA4IDAwIDAwIDBDIDA0IDA2IDAwIDAwIDBDIDAwIDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA0MEMwOiAwQyAwMCAwMCAwMCAwMCAxMSAwQiAwQSAw
OCAwMSAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNDBEMDogMDAgMTEg
MEIgMEEgMDggMDEgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMTEgMEIgMEEgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDQwRTA6IDA4IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDExIDBCIDBBIDA4IDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA0MEYwOiAwMCAwMCAwMCAwMCAwMCAxMiA0NyAwNCAw
OCAwQyBEQyAwNSAwMCAwMCAwQyBDRiAgLi4uLi4uRy4uLi4uLi4uLgogICAgNDEwMDogMDMgMDAg
MDAgMEMgMDAgMDAgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMTEgMEIgMEEgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDQxMTA6IDA4IDAyIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDExIDBCIDBBIDA4IDAyIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA0MTIwOiAwMCAwMCAwMCAwMCAwMCAxMSAwQiAwQSAw
OCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNDEzMDogMDAgMTEg
MEIgMEEgMDggMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDggNUYgNTAgIC4uLi4uLi4uLi4uLi4u
X1AKICAgIDQxNDA6IDUzIDQ0IDEyIDE4IDAxIDEyIDE1IDA1IDBBIDA1IDBBIDAwIDBDIDA5IDAw
IDAwICBTRC4uLi4uLi4uLi4uLi4uCiAgICA0MTUwOiAwMCAwQyBGRSAwMCAwMCAwMCAwQyAwMiAw
MCAwMCAwMCAwOCA1MCA1MCA0MyA1NiAgLi4uLi4uLi4uLi4uUFBDVgogICAgNDE2MDogMEEgMDAg
MTQgMEIgNUYgNTAgNTAgNDMgMDAgQTQgNTAgNTAgNDMgNTYgMDggNUYgIC4uLi5fUFBDLi5QUENW
Ll8KICAgIDQxNzA6IDQzIDUwIDQzIDEyIDQwIDE5IDE3IDBBIDE3IDBBIDAzIDExIDE0IDBBIDEx
IDgyICBDUEMuQC4uLi4uLi4uLi4uCiAgICA0MTgwOiAwQyAwMCA3RiAwOCAxOCAwNCBCMCAwMiAw
MSBDMCAwMCAwMCAwMCAwMCA3OSAwMCAgLi4uLi4uLi4uLi4uLi55LgogICAgNDE5MDogMTEgMTQg
MEEgMTEgODIgMEMgMDAgN0YgMDggMTAgMDQgQjAgMDIgMDEgQzAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDQxQTA6IDAwIDAwIDAwIDc5IDAwIDExIDE0IDBBIDExIDgyIDBDIDAwIDdGIDA4IDA4
IDA0ICAuLi55Li4uLi4uLi4uLi4uCiAgICA0MUIwOiBCMCAwMiAwMSBDMCAwMCAwMCAwMCAwMCA3
OSAwMCAxMSAxNCAwQSAxMSA4MiAwQyAgLi4uLi4uLi55Li4uLi4uLgogICAgNDFDMDogMDAgN0Yg
MDggMDAgMDQgQjAgMDIgMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgIC4uLi4uLi4uLi4uLi55
Li4KICAgIDQxRDA6IDE0IDBBIDExIDgyIDBDIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA0MUUwOiAwMCAwMCA3OSAwMCAxMSAxNCAwQSAxMSA4
MiAwQyAwMCA3RiAwOCAxMCAwNCBCMyAgLi55Li4uLi4uLi4uLi4uLgogICAgNDFGMDogMDIgMDEg
QzAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgIC4uLi4uLi55Li4uLi4u
Li4KICAgIDQyMDA6IDdGIDA4IDA4IDA0IEIzIDAyIDAxIEMwIDAwIDAwIDAwIDAwIDc5IDAwIDEx
IDE0ICAuLi4uLi4uLi4uLi55Li4uCiAgICA0MjEwOiAwQSAxMSA4MiAwQyAwMCA3RiAwOCAwMCAw
NCBCMyAwMiAwMSBDMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNDIyMDogMDAgNzkg
MDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC55Li4uLi4uLi4uLi4u
Li4KICAgIDQyMzA6IDAwIDAwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0IDBBIDExIDgyIDBDIDAw
IDAwICAuLi4uLi55Li4uLi4uLi4uCiAgICA0MjQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCA3OSAwMCAxMSAxNCAwQSAgLi4uLi4uLi4uLi55Li4uLgogICAgNDI1MDogMTEgODIg
MEMgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDQyNjA6IDc5IDAwIDExIDE0IDBBIDExIDgyIDBDIDAwIDdGIDQwIDAwIDA0IEU3IDAw
IDAwICB5Li4uLi4uLi4uQC4uLi4uCiAgICA0MjcwOiAwMCAwMCAwMCAwMCAwMCA3OSAwMCAxMSAx
NCAwQSAxMSA4MiAwQyAwMCA3RiA0MCAgLi4uLi55Li4uLi4uLi4uQAogICAgNDI4MDogMDAgMDQg
RTggMDAgMDAgMDAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgIC4uLi4uLi4uLi55Li4u
Li4KICAgIDQyOTA6IDgyIDBDIDAwIDdGIDAyIDAwIDA0IEI0IDAyIDAxIEMwIDAwIDAwIDAwIDAw
IDc5ICAuLi4uLi4uLi4uLi4uLi55CiAgICA0MkEwOiAwMCAxMSAxNCAwQSAxMSA4MiAwQyAwMCA3
RiAwMSAwMCAwNCBCMSAwMiAwMSBDMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNDJCMDogMDAgMDAg
MDAgMDAgNzkgMDAgMEMgMDEgMDAgMDAgMDAgMTEgMTQgMEEgMTEgODIgIC4uLi55Li4uLi4uLi4u
Li4KICAgIDQyQzA6IDBDIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDc5
IDAwICAuLi4uLi4uLi4uLi4uLnkuCiAgICA0MkQwOiAxMSAxNCAwQSAxMSA4MiAwQyAwMCA3RiAw
OCAxOCAwNCBCMyAwMiAwMSBDMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNDJFMDogMDAgMDAg
MDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgMDAgMDAgMDAgMDAgIC4uLnkuLi4uLi4uLi4u
Li4KICAgIDQyRjA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDc5IDAwIDBDIDIxIDAyIDAwIDAw
IDBDICAuLi4uLi4uLnkuLiEuLi4uCiAgICA0MzAwOiA2OSAxMCAwMCAwMCAxMCA0NyAzNSA1QyAy
RiAwMyA1RiA1MyA0MiA1RiA1MCA0QyAgaS4uLi5HNVwvLl9TQl9QTAogICAgNDMxMDogNTQgNDYg
NDMgMzAgMzEgMzQgMDggNUYgNTAgNDMgNTQgMTIgMkMgMDIgMTEgMTQgIFRGQzAxNC5fUENULiwu
Li4KICAgIDQzMjA6IDBBIDExIDgyIDBDIDAwIDdGIDQwIDAwIDAwIDYyIDAwIDAxIEMwIDAwIDAw
IDAwICAuLi4uLi5ALi5iLi4uLi4uCiAgICA0MzMwOiAwMCA3OSAwMCAxMSAxNCAwQSAxMSA4MiAw
QyAwMCA3RiA0MCAwMCAwMCA2MyAwMCAgLnkuLi4uLi4uLi5ALi5jLgogICAgNDM0MDogMDEgQzAg
MDAgMDAgMDAgMDAgNzkgMDAgMDggNUYgNTAgNTMgNTMgMTIgNDYgMDYgIC4uLi4uLnkuLl9QU1Mu
Ri4KICAgIDQzNTA6IDAzIDEyIDIwIDA2IDBDIDY4IDEwIDAwIDAwIDBDIEIwIDEzIDAwIDAwIDBD
IDAwICAuLiAuLmguLi4uLi4uLi4uCiAgICA0MzYwOiAwMCAwMCAwMCAwQyAwMCAwMCAwMCAwMCAw
QyAwMCAwMCAwMCAwMCAwQyAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNDM3MDogMDAgMDAg
MTIgMjAgMDYgMEMgOTggMDggMDAgMDAgMEMgMDQgMDYgMDAgMDAgMEMgIC4uLiAuLi4uLi4uLi4u
Li4KICAgIDQzODA6IDAwIDAwIDAwIDAwIDBDIDAwIDAwIDAwIDAwIDBDIDAxIDAwIDAwIDAwIDBD
IDAxICAuLi4uLi4uLi4uLi4uLi4uCiAgICA0MzkwOiAwMCAwMCAwMCAxMiAyMCAwNiAwQyBEQyAw
NSAwMCAwMCAwQyBDRiAwMyAwMCAwMCAgLi4uLiAuLi4uLi4uLi4uLgogICAgNDNBMDogMEMgMDAg
MDAgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMEMgMDIgMDAgMDAgMDAgMEMgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDQzQjA6IDAyIDAwIDAwIDAwIDA4IDU4IDUwIDUzIDUzIDEyIDRCIDBEIDAzIDEyIDQ3
IDA0ICAuLi4uLlhQU1MuSy4uLkcuCiAgICA0M0MwOiAwOCAwQyA2OCAxMCAwMCAwMCAwQyBCMCAx
MyAwMCAwMCAwQyAwMCAwMCAwMCAwMCAgLi5oLi4uLi4uLi4uLi4uLgogICAgNDNEMDogMEMgMDAg
MDAgMDAgMDAgMTEgMEIgMEEgMDggMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDQzRTA6IDAwIDExIDBCIDBBIDA4IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDExIDBC
IDBBICAuLi4uLi4uLi4uLi4uLi4uCiAgICA0M0YwOiAwOCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAxMSAwQiAwQSAwOCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNDQwMDogMDAgMDAg
MDAgMDAgMDAgMTIgNDcgMDQgMDggMEMgOTggMDggMDAgMDAgMEMgMDQgIC4uLi4uLkcuLi4uLi4u
Li4KICAgIDQ0MTA6IDA2IDAwIDAwIDBDIDAwIDAwIDAwIDAwIDBDIDAwIDAwIDAwIDAwIDExIDBC
IDBBICAuLi4uLi4uLi4uLi4uLi4uCiAgICA0NDIwOiAwOCAwMSAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAxMSAwQiAwQSAwOCAwMSAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNDQzMDogMDAgMDAg
MDAgMDAgMDAgMTEgMEIgMEEgMDggMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDQ0NDA6IDAwIDExIDBCIDBBIDA4IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDEyIDQ3
IDA0ICAuLi4uLi4uLi4uLi4uLkcuCiAgICA0NDUwOiAwOCAwQyBEQyAwNSAwMCAwMCAwQyBDRiAw
MyAwMCAwMCAwQyAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNDQ2MDogMEMgMDAg
MDAgMDAgMDAgMTEgMEIgMEEgMDggMDIgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDQ0NzA6IDAwIDExIDBCIDBBIDA4IDAyIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDExIDBC
IDBBICAuLi4uLi4uLi4uLi4uLi4uCiAgICA0NDgwOiAwOCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAxMSAwQiAwQSAwOCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNDQ5MDogMDAgMDAg
MDAgMDAgMDAgMDggNUYgNTAgNTMgNDQgMTIgMTggMDEgMTIgMTUgMDUgIC4uLi4uLl9QU0QuLi4u
Li4KICAgIDQ0QTA6IDBBIDA1IDBBIDAwIDBDIDBBIDAwIDAwIDAwIDBDIEZFIDAwIDAwIDAwIDBD
IDAyICAuLi4uLi4uLi4uLi4uLi4uCiAgICA0NEIwOiAwMCAwMCAwMCAwOCA1MCA1MCA0MyA1NiAw
QSAwMCAxNCAwQiA1RiA1MCA1MCA0MyAgLi4uLlBQQ1YuLi4uX1BQQwogICAgNDRDMDogMDAgQTQg
NTAgNTAgNDMgNTYgMDggNUYgNDMgNTAgNDMgMTIgNDAgMTkgMTcgMEEgIC4uUFBDVi5fQ1BDLkAu
Li4KICAgIDQ0RDA6IDE3IDBBIDAzIDExIDE0IDBBIDExIDgyIDBDIDAwIDdGIDA4IDE4IDA0IEIw
IDAyICAuLi4uLi4uLi4uLi4uLi4uCiAgICA0NEUwOiAwMSBDMCAwMCAwMCAwMCAwMCA3OSAwMCAx
MSAxNCAwQSAxMSA4MiAwQyAwMCA3RiAgLi4uLi4ueS4uLi4uLi4uLgogICAgNDRGMDogMDggMTAg
MDQgQjAgMDIgMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgIC4uLi4uLi4uLi4ueS4u
Li4KICAgIDQ1MDA6IDExIDgyIDBDIDAwIDdGIDA4IDA4IDA0IEIwIDAyIDAxIEMwIDAwIDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA0NTEwOiA3OSAwMCAxMSAxNCAwQSAxMSA4MiAwQyAw
MCA3RiAwOCAwMCAwNCBCMCAwMiAwMSAgeS4uLi4uLi4uLi4uLi4uLgogICAgNDUyMDogQzAgMDAg
MDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgMDAgMDAgIC4uLi4ueS4uLi4uLi4u
Li4KICAgIDQ1MzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0IDBB
IDExICAuLi4uLi4uLi4ueS4uLi4uCiAgICA0NTQwOiA4MiAwQyAwMCA3RiAwOCAxMCAwNCBCMyAw
MiAwMSBDMCAwMCAwMCAwMCAwMCA3OSAgLi4uLi4uLi4uLi4uLi4ueQogICAgNDU1MDogMDAgMTEg
MTQgMEEgMTEgODIgMEMgMDAgN0YgMDggMDggMDQgQjMgMDIgMDEgQzAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDQ1NjA6IDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0IDBBIDExIDgyIDBDIDAwIDdGIDA4
IDAwICAuLi4ueS4uLi4uLi4uLi4uCiAgICA0NTcwOiAwNCBCMyAwMiAwMSBDMCAwMCAwMCAwMCAw
MCA3OSAwMCAxMSAxNCAwQSAxMSA4MiAgLi4uLi4uLi4ueS4uLi4uLgogICAgNDU4MDogMEMgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgNzkgMDAgIC4uLi4uLi4uLi4uLi4u
eS4KICAgIDQ1OTA6IDExIDE0IDBBIDExIDgyIDBDIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA0NUEwOiAwMCAwMCAwMCA3OSAwMCAxMSAxNCAwQSAx
MSA4MiAwQyAwMCAwMCAwMCAwMCAwMCAgLi4ueS4uLi4uLi4uLi4uLgogICAgNDVCMDogMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgIC4uLi4uLi4ueS4uLi4u
Li4KICAgIDQ1QzA6IDAwIDdGIDQwIDAwIDA0IEU3IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDc5IDAw
IDExICAuLkAuLi4uLi4uLi4ueS4uCiAgICA0NUQwOiAxNCAwQSAxMSA4MiAwQyAwMCA3RiA0MCAw
MCAwNCBFOCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLkAuLi4uLi4uLgogICAgNDVFMDogMDAgMDAg
NzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgMDIgMDAgMDQgQjQgIC4ueS4uLi4uLi4uLi4u
Li4KICAgIDQ1RjA6IDAyIDAxIEMwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0IDBBIDExIDgyIDBD
IDAwICAuLi4uLi4ueS4uLi4uLi4uCiAgICA0NjAwOiA3RiAwMSAwMCAwNCBCMSAwMiAwMSBDMCAw
MCAwMCAwMCAwMCA3OSAwMCAwQyAwMSAgLi4uLi4uLi4uLi4ueS4uLgogICAgNDYxMDogMDAgMDAg
MDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDQ2MjA6IDAwIDAwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0IDBBIDExIDgyIDBDIDAw
IDdGICAuLi4uLi55Li4uLi4uLi4uCiAgICA0NjMwOiAwOCAxOCAwNCBCMyAwMiAwMSBDMCAwMCAw
MCAwMCAwMCA3OSAwMCAxMSAxNCAwQSAgLi4uLi4uLi4uLi55Li4uLgogICAgNDY0MDogMTEgODIg
MEMgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDQ2NTA6IDc5IDAwIDBDIDIxIDAyIDAwIDAwIDBDIDY5IDEwIDAwIDAwIDEwIDQ3IDM1
IDVDICB5Li4hLi4uLmkuLi4uRzVcCiAgICA0NjYwOiAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0QyA1
NCA0NiA0MyAzMCAzMSAzNSAwOCA1RiAgLy5fU0JfUExURkMwMTUuXwogICAgNDY3MDogNTAgNDMg
NTQgMTIgMkMgMDIgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgNDAgMDAgIFBDVC4sLi4uLi4uLi4u
QC4KICAgIDQ2ODA6IDAwIDYyIDAwIDAxIEMwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0IDBBIDEx
IDgyICAuYi4uLi4uLi55Li4uLi4uCiAgICA0NjkwOiAwQyAwMCA3RiA0MCAwMCAwMCA2MyAwMCAw
MSBDMCAwMCAwMCAwMCAwMCA3OSAwMCAgLi4uQC4uYy4uLi4uLi55LgogICAgNDZBMDogMDggNUYg
NTAgNTMgNTMgMTIgNDYgMDYgMDMgMTIgMjAgMDYgMEMgNjggMTAgMDAgIC5fUFNTLkYuLi4gLi5o
Li4KICAgIDQ2QjA6IDAwIDBDIEIwIDEzIDAwIDAwIDBDIDAwIDAwIDAwIDAwIDBDIDAwIDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA0NkMwOiAwQyAwMCAwMCAwMCAwMCAwQyAwMCAwMCAw
MCAwMCAxMiAyMCAwNiAwQyA5OCAwOCAgLi4uLi4uLi4uLi4gLi4uLgogICAgNDZEMDogMDAgMDAg
MEMgMDQgMDYgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMEMgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDQ2RTA6IDAwIDBDIDAxIDAwIDAwIDAwIDBDIDAxIDAwIDAwIDAwIDEyIDIwIDA2IDBD
IERDICAuLi4uLi4uLi4uLi4gLi4uCiAgICA0NkYwOiAwNSAwMCAwMCAwQyBDRiAwMyAwMCAwMCAw
QyAwMCAwMCAwMCAwMCAwQyAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNDcwMDogMDAgMDAg
MEMgMDIgMDAgMDAgMDAgMEMgMDIgMDAgMDAgMDAgMDggNTggNTAgNTMgIC4uLi4uLi4uLi4uLi5Y
UFMKICAgIDQ3MTA6IDUzIDEyIDRCIDBEIDAzIDEyIDQ3IDA0IDA4IDBDIDY4IDEwIDAwIDAwIDBD
IEIwICBTLksuLi5HLi4uaC4uLi4uCiAgICA0NzIwOiAxMyAwMCAwMCAwQyAwMCAwMCAwMCAwMCAw
QyAwMCAwMCAwMCAwMCAxMSAwQiAwQSAgLi4uLi4uLi4uLi4uLi4uLgogICAgNDczMDogMDggMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMTEgMEIgMEEgMDggMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDQ3NDA6IDAwIDAwIDAwIDAwIDAwIDExIDBCIDBBIDA4IDAwIDAwIDAwIDAwIDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA0NzUwOiAwMCAxMSAwQiAwQSAwOCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAxMiA0NyAwNCAgLi4uLi4uLi4uLi4uLi5HLgogICAgNDc2MDogMDggMEMg
OTggMDggMDAgMDAgMEMgMDQgMDYgMDAgMDAgMEMgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDQ3NzA6IDBDIDAwIDAwIDAwIDAwIDExIDBCIDBBIDA4IDAxIDAwIDAwIDAwIDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA0NzgwOiAwMCAxMSAwQiAwQSAwOCAwMSAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAxMSAwQiAwQSAgLi4uLi4uLi4uLi4uLi4uLgogICAgNDc5MDogMDggMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMTEgMEIgMEEgMDggMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDQ3QTA6IDAwIDAwIDAwIDAwIDAwIDEyIDQ3IDA0IDA4IDBDIERDIDA1IDAwIDAwIDBD
IENGICAuLi4uLi5HLi4uLi4uLi4uCiAgICA0N0IwOiAwMyAwMCAwMCAwQyAwMCAwMCAwMCAwMCAw
QyAwMCAwMCAwMCAwMCAxMSAwQiAwQSAgLi4uLi4uLi4uLi4uLi4uLgogICAgNDdDMDogMDggMDIg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMTEgMEIgMEEgMDggMDIgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDQ3RDA6IDAwIDAwIDAwIDAwIDAwIDExIDBCIDBBIDA4IDAwIDAwIDAwIDAwIDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA0N0UwOiAwMCAxMSAwQiAwQSAwOCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwOCA1RiA1MCAgLi4uLi4uLi4uLi4uLi5fUAogICAgNDdGMDogNTMgNDQg
MTIgMTggMDEgMTIgMTUgMDUgMEEgMDUgMEEgMDAgMEMgMEEgMDAgMDAgIFNELi4uLi4uLi4uLi4u
Li4KICAgIDQ4MDA6IDAwIDBDIEZFIDAwIDAwIDAwIDBDIDAyIDAwIDAwIDAwIDA4IDUwIDUwIDQz
IDU2ICAuLi4uLi4uLi4uLi5QUENWCiAgICA0ODEwOiAwQSAwMCAxNCAwQiA1RiA1MCA1MCA0MyAw
MCBBNCA1MCA1MCA0MyA1NiAwOCA1RiAgLi4uLl9QUEMuLlBQQ1YuXwogICAgNDgyMDogNDMgNTAg
NDMgMTIgNDAgMTkgMTcgMEEgMTcgMEEgMDMgMTEgMTQgMEEgMTEgODIgIENQQy5ALi4uLi4uLi4u
Li4KICAgIDQ4MzA6IDBDIDAwIDdGIDA4IDE4IDA0IEIwIDAyIDAxIEMwIDAwIDAwIDAwIDAwIDc5
IDAwICAuLi4uLi4uLi4uLi4uLnkuCiAgICA0ODQwOiAxMSAxNCAwQSAxMSA4MiAwQyAwMCA3RiAw
OCAxMCAwNCBCMCAwMiAwMSBDMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNDg1MDogMDAgMDAg
MDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgMDggMDggMDQgIC4uLnkuLi4uLi4uLi4u
Li4KICAgIDQ4NjA6IEIwIDAyIDAxIEMwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0IDBBIDExIDgy
IDBDICAuLi4uLi4uLnkuLi4uLi4uCiAgICA0ODcwOiAwMCA3RiAwOCAwMCAwNCBCMCAwMiAwMSBD
MCAwMCAwMCAwMCAwMCA3OSAwMCAxMSAgLi4uLi4uLi4uLi4uLnkuLgogICAgNDg4MDogMTQgMEEg
MTEgODIgMEMgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDQ4OTA6IDAwIDAwIDc5IDAwIDExIDE0IDBBIDExIDgyIDBDIDAwIDdGIDA4IDEwIDA0
IEIzICAuLnkuLi4uLi4uLi4uLi4uCiAgICA0OEEwOiAwMiAwMSBDMCAwMCAwMCAwMCAwMCA3OSAw
MCAxMSAxNCAwQSAxMSA4MiAwQyAwMCAgLi4uLi4uLnkuLi4uLi4uLgogICAgNDhCMDogN0YgMDgg
MDggMDQgQjMgMDIgMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgIC4uLi4uLi4uLi4uLnku
Li4KICAgIDQ4QzA6IDBBIDExIDgyIDBDIDAwIDdGIDA4IDAwIDA0IEIzIDAyIDAxIEMwIDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA0OEQwOiAwMCA3OSAwMCAxMSAxNCAwQSAxMSA4MiAw
QyAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLnkuLi4uLi4uLi4uLi4uLgogICAgNDhFMDogMDAgMDAg
MDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgMDAgIC4uLi4uLnkuLi4uLi4u
Li4KICAgIDQ4RjA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0
IDBBICAuLi4uLi4uLi4uLnkuLi4uCiAgICA0OTAwOiAxMSA4MiAwQyAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNDkxMDogNzkgMDAg
MTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgNDAgMDAgMDQgRTcgMDAgMDAgIHkuLi4uLi4uLi5ALi4u
Li4KICAgIDQ5MjA6IDAwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0IDBBIDExIDgyIDBDIDAwIDdG
IDQwICAuLi4uLnkuLi4uLi4uLi5ACiAgICA0OTMwOiAwMCAwNCBFOCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCA3OSAwMCAxMSAxNCAwQSAxMSAgLi4uLi4uLi4uLnkuLi4uLgogICAgNDk0MDogODIgMEMg
MDAgN0YgMDIgMDAgMDQgQjQgMDIgMDEgQzAgMDAgMDAgMDAgMDAgNzkgIC4uLi4uLi4uLi4uLi4u
LnkKICAgIDQ5NTA6IDAwIDExIDE0IDBBIDExIDgyIDBDIDAwIDdGIDAxIDAwIDA0IEIxIDAyIDAx
IEMwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA0OTYwOiAwMCAwMCAwMCAwMCA3OSAwMCAwQyAwMSAw
MCAwMCAwMCAxMSAxNCAwQSAxMSA4MiAgLi4uLnkuLi4uLi4uLi4uLgogICAgNDk3MDogMEMgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgNzkgMDAgIC4uLi4uLi4uLi4uLi4u
eS4KICAgIDQ5ODA6IDExIDE0IDBBIDExIDgyIDBDIDAwIDdGIDA4IDE4IDA0IEIzIDAyIDAxIEMw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA0OTkwOiAwMCAwMCAwMCA3OSAwMCAxMSAxNCAwQSAx
MSA4MiAwQyAwMCAwMCAwMCAwMCAwMCAgLi4ueS4uLi4uLi4uLi4uLgogICAgNDlBMDogMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgNzkgMDAgMEMgMjEgMDIgMDAgMDAgMEMgIC4uLi4uLi4ueS4uIS4u
Li4KICAgIDQ5QjA6IDY5IDEwIDAwIDAwIDEwIDQ3IDM1IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUw
IDRDICBpLi4uLkc1XC8uX1NCX1BMCiAgICA0OUMwOiA1NCA0NiA0MyAzMCAzMSAzNiAwOCA1RiA1
MCA0MyA1NCAxMiAyQyAwMiAxMSAxNCAgVEZDMDE2Ll9QQ1QuLC4uLgogICAgNDlEMDogMEEgMTEg
ODIgMEMgMDAgN0YgNDAgMDAgMDAgNjIgMDAgMDEgQzAgMDAgMDAgMDAgIC4uLi4uLkAuLmIuLi4u
Li4KICAgIDQ5RTA6IDAwIDc5IDAwIDExIDE0IDBBIDExIDgyIDBDIDAwIDdGIDQwIDAwIDAwIDYz
IDAwICAueS4uLi4uLi4uLkAuLmMuCiAgICA0OUYwOiAwMSBDMCAwMCAwMCAwMCAwMCA3OSAwMCAw
OCA1RiA1MCA1MyA1MyAxMiA0NiAwNiAgLi4uLi4ueS4uX1BTUy5GLgogICAgNEEwMDogMDMgMTIg
MjAgMDYgMEMgNjggMTAgMDAgMDAgMEMgQjAgMTMgMDAgMDAgMEMgMDAgIC4uIC4uaC4uLi4uLi4u
Li4KICAgIDRBMTA6IDAwIDAwIDAwIDBDIDAwIDAwIDAwIDAwIDBDIDAwIDAwIDAwIDAwIDBDIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA0QTIwOiAwMCAwMCAxMiAyMCAwNiAwQyA5OCAwOCAw
MCAwMCAwQyAwNCAwNiAwMCAwMCAwQyAgLi4uIC4uLi4uLi4uLi4uLgogICAgNEEzMDogMDAgMDAg
MDAgMDAgMEMgMDAgMDAgMDAgMDAgMEMgMDEgMDAgMDAgMDAgMEMgMDEgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDRBNDA6IDAwIDAwIDAwIDEyIDIwIDA2IDBDIERDIDA1IDAwIDAwIDBDIENGIDAzIDAw
IDAwICAuLi4uIC4uLi4uLi4uLi4uCiAgICA0QTUwOiAwQyAwMCAwMCAwMCAwMCAwQyAwMCAwMCAw
MCAwMCAwQyAwMiAwMCAwMCAwMCAwQyAgLi4uLi4uLi4uLi4uLi4uLgogICAgNEE2MDogMDIgMDAg
MDAgMDAgMDggNTggNTAgNTMgNTMgMTIgNEIgMEQgMDMgMTIgNDcgMDQgIC4uLi4uWFBTUy5LLi4u
Ry4KICAgIDRBNzA6IDA4IDBDIDY4IDEwIDAwIDAwIDBDIEIwIDEzIDAwIDAwIDBDIDAwIDAwIDAw
IDAwICAuLmguLi4uLi4uLi4uLi4uCiAgICA0QTgwOiAwQyAwMCAwMCAwMCAwMCAxMSAwQiAwQSAw
OCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNEE5MDogMDAgMTEg
MEIgMEEgMDggMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMTEgMEIgMEEgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDRBQTA6IDA4IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDExIDBCIDBBIDA4IDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA0QUIwOiAwMCAwMCAwMCAwMCAwMCAxMiA0NyAwNCAw
OCAwQyA5OCAwOCAwMCAwMCAwQyAwNCAgLi4uLi4uRy4uLi4uLi4uLgogICAgNEFDMDogMDYgMDAg
MDAgMEMgMDAgMDAgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMTEgMEIgMEEgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDRBRDA6IDA4IDAxIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDExIDBCIDBBIDA4IDAxIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA0QUUwOiAwMCAwMCAwMCAwMCAwMCAxMSAwQiAwQSAw
OCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNEFGMDogMDAgMTEg
MEIgMEEgMDggMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMTIgNDcgMDQgIC4uLi4uLi4uLi4uLi4u
Ry4KICAgIDRCMDA6IDA4IDBDIERDIDA1IDAwIDAwIDBDIENGIDAzIDAwIDAwIDBDIDAwIDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA0QjEwOiAwQyAwMCAwMCAwMCAwMCAxMSAwQiAwQSAw
OCAwMiAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNEIyMDogMDAgMTEg
MEIgMEEgMDggMDIgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMTEgMEIgMEEgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDRCMzA6IDA4IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDExIDBCIDBBIDA4IDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA0QjQwOiAwMCAwMCAwMCAwMCAwMCAwOCA1RiA1MCA1
MyA0NCAxMiAxOCAwMSAxMiAxNSAwNSAgLi4uLi4uX1BTRC4uLi4uLgogICAgNEI1MDogMEEgMDUg
MEEgMDAgMEMgMEIgMDAgMDAgMDAgMEMgRkUgMDAgMDAgMDAgMEMgMDIgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDRCNjA6IDAwIDAwIDAwIDA4IDUwIDUwIDQzIDU2IDBBIDAwIDE0IDBCIDVGIDUwIDUw
IDQzICAuLi4uUFBDVi4uLi5fUFBDCiAgICA0QjcwOiAwMCBBNCA1MCA1MCA0MyA1NiAwOCA1RiA0
MyA1MCA0MyAxMiA0MCAxOSAxNyAwQSAgLi5QUENWLl9DUEMuQC4uLgogICAgNEI4MDogMTcgMEEg
MDMgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgMDggMTggMDQgQjAgMDIgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDRCOTA6IDAxIEMwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0IDBBIDExIDgyIDBDIDAw
IDdGICAuLi4uLi55Li4uLi4uLi4uCiAgICA0QkEwOiAwOCAxMCAwNCBCMCAwMiAwMSBDMCAwMCAw
MCAwMCAwMCA3OSAwMCAxMSAxNCAwQSAgLi4uLi4uLi4uLi55Li4uLgogICAgNEJCMDogMTEgODIg
MEMgMDAgN0YgMDggMDggMDQgQjAgMDIgMDEgQzAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDRCQzA6IDc5IDAwIDExIDE0IDBBIDExIDgyIDBDIDAwIDdGIDA4IDAwIDA0IEIwIDAy
IDAxICB5Li4uLi4uLi4uLi4uLi4uCiAgICA0QkQwOiBDMCAwMCAwMCAwMCAwMCA3OSAwMCAxMSAx
NCAwQSAxMSA4MiAwQyAwMCAwMCAwMCAgLi4uLi55Li4uLi4uLi4uLgogICAgNEJFMDogMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgIC4uLi4uLi4uLi55Li4u
Li4KICAgIDRCRjA6IDgyIDBDIDAwIDdGIDA4IDEwIDA0IEIzIDAyIDAxIEMwIDAwIDAwIDAwIDAw
IDc5ICAuLi4uLi4uLi4uLi4uLi55CiAgICA0QzAwOiAwMCAxMSAxNCAwQSAxMSA4MiAwQyAwMCA3
RiAwOCAwOCAwNCBCMyAwMiAwMSBDMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNEMxMDogMDAgMDAg
MDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgMDggMDAgIC4uLi55Li4uLi4uLi4u
Li4KICAgIDRDMjA6IDA0IEIzIDAyIDAxIEMwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0IDBBIDEx
IDgyICAuLi4uLi4uLi55Li4uLi4uCiAgICA0QzMwOiAwQyAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCA3OSAwMCAgLi4uLi4uLi4uLi4uLi55LgogICAgNEM0MDogMTEgMTQg
MEEgMTEgODIgMEMgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDRDNTA6IDAwIDAwIDAwIDc5IDAwIDExIDE0IDBBIDExIDgyIDBDIDAwIDAwIDAwIDAw
IDAwICAuLi55Li4uLi4uLi4uLi4uCiAgICA0QzYwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCA3
OSAwMCAxMSAxNCAwQSAxMSA4MiAwQyAgLi4uLi4uLi55Li4uLi4uLgogICAgNEM3MDogMDAgN0Yg
NDAgMDAgMDQgRTcgMDAgMDAgMDAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgIC4uQC4uLi4uLi4uLi55
Li4KICAgIDRDODA6IDE0IDBBIDExIDgyIDBDIDAwIDdGIDQwIDAwIDA0IEU4IDAwIDAwIDAwIDAw
IDAwICAuLi4uLi4uQC4uLi4uLi4uCiAgICA0QzkwOiAwMCAwMCA3OSAwMCAxMSAxNCAwQSAxMSA4
MiAwQyAwMCA3RiAwMiAwMCAwNCBCNCAgLi55Li4uLi4uLi4uLi4uLgogICAgNENBMDogMDIgMDEg
QzAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgIC4uLi4uLi55Li4uLi4u
Li4KICAgIDRDQjA6IDdGIDAxIDAwIDA0IEIxIDAyIDAxIEMwIDAwIDAwIDAwIDAwIDc5IDAwIDBD
IDAxICAuLi4uLi4uLi4uLi55Li4uCiAgICA0Q0MwOiAwMCAwMCAwMCAxMSAxNCAwQSAxMSA4MiAw
QyAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNENEMDogMDAgMDAg
MDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgIC4uLi4uLnkuLi4uLi4u
Li4KICAgIDRDRTA6IDA4IDE4IDA0IEIzIDAyIDAxIEMwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0
IDBBICAuLi4uLi4uLi4uLnkuLi4uCiAgICA0Q0YwOiAxMSA4MiAwQyAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNEQwMDogNzkgMDAg
MEMgMjEgMDIgMDAgMDAgMEMgNjkgMTAgMDAgMDAgMTAgNDcgMzUgNUMgIHkuLiEuLi4uaS4uLi5H
NVwKICAgIDREMTA6IDJGIDAzIDVGIDUzIDQyIDVGIDUwIDRDIDU0IDQ2IDQzIDMwIDMxIDM3IDA4
IDVGICAvLl9TQl9QTFRGQzAxNy5fCiAgICA0RDIwOiA1MCA0MyA1NCAxMiAyQyAwMiAxMSAxNCAw
QSAxMSA4MiAwQyAwMCA3RiA0MCAwMCAgUENULiwuLi4uLi4uLi5ALgogICAgNEQzMDogMDAgNjIg
MDAgMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgIC5iLi4uLi4uLnkuLi4u
Li4KICAgIDRENDA6IDBDIDAwIDdGIDQwIDAwIDAwIDYzIDAwIDAxIEMwIDAwIDAwIDAwIDAwIDc5
IDAwICAuLi5ALi5jLi4uLi4uLnkuCiAgICA0RDUwOiAwOCA1RiA1MCA1MyA1MyAxMiA0NiAwNiAw
MyAxMiAyMCAwNiAwQyA2OCAxMCAwMCAgLl9QU1MuRi4uLiAuLmguLgogICAgNEQ2MDogMDAgMEMg
QjAgMTMgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMEMgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDRENzA6IDBDIDAwIDAwIDAwIDAwIDBDIDAwIDAwIDAwIDAwIDEyIDIwIDA2IDBDIDk4
IDA4ICAuLi4uLi4uLi4uLiAuLi4uCiAgICA0RDgwOiAwMCAwMCAwQyAwNCAwNiAwMCAwMCAwQyAw
MCAwMCAwMCAwMCAwQyAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNEQ5MDogMDAgMEMg
MDEgMDAgMDAgMDAgMEMgMDEgMDAgMDAgMDAgMTIgMjAgMDYgMEMgREMgIC4uLi4uLi4uLi4uLiAu
Li4KICAgIDREQTA6IDA1IDAwIDAwIDBDIENGIDAzIDAwIDAwIDBDIDAwIDAwIDAwIDAwIDBDIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA0REIwOiAwMCAwMCAwQyAwMiAwMCAwMCAwMCAwQyAw
MiAwMCAwMCAwMCAwOCA1OCA1MCA1MyAgLi4uLi4uLi4uLi4uLlhQUwogICAgNERDMDogNTMgMTIg
NEIgMEQgMDMgMTIgNDcgMDQgMDggMEMgNjggMTAgMDAgMDAgMEMgQjAgIFMuSy4uLkcuLi5oLi4u
Li4KICAgIDRERDA6IDEzIDAwIDAwIDBDIDAwIDAwIDAwIDAwIDBDIDAwIDAwIDAwIDAwIDExIDBC
IDBBICAuLi4uLi4uLi4uLi4uLi4uCiAgICA0REUwOiAwOCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAxMSAwQiAwQSAwOCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNERGMDogMDAgMDAg
MDAgMDAgMDAgMTEgMEIgMEEgMDggMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDRFMDA6IDAwIDExIDBCIDBBIDA4IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDEyIDQ3
IDA0ICAuLi4uLi4uLi4uLi4uLkcuCiAgICA0RTEwOiAwOCAwQyA5OCAwOCAwMCAwMCAwQyAwNCAw
NiAwMCAwMCAwQyAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNEUyMDogMEMgMDAg
MDAgMDAgMDAgMTEgMEIgMEEgMDggMDEgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDRFMzA6IDAwIDExIDBCIDBBIDA4IDAxIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDExIDBC
IDBBICAuLi4uLi4uLi4uLi4uLi4uCiAgICA0RTQwOiAwOCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAxMSAwQiAwQSAwOCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNEU1MDogMDAgMDAg
MDAgMDAgMDAgMTIgNDcgMDQgMDggMEMgREMgMDUgMDAgMDAgMEMgQ0YgIC4uLi4uLkcuLi4uLi4u
Li4KICAgIDRFNjA6IDAzIDAwIDAwIDBDIDAwIDAwIDAwIDAwIDBDIDAwIDAwIDAwIDAwIDExIDBC
IDBBICAuLi4uLi4uLi4uLi4uLi4uCiAgICA0RTcwOiAwOCAwMiAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAxMSAwQiAwQSAwOCAwMiAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNEU4MDogMDAgMDAg
MDAgMDAgMDAgMTEgMEIgMEEgMDggMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDRFOTA6IDAwIDExIDBCIDBBIDA4IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDA4IDVG
IDUwICAuLi4uLi4uLi4uLi4uLl9QCiAgICA0RUEwOiA1MyA0NCAxMiAxOCAwMSAxMiAxNSAwNSAw
QSAwNSAwQSAwMCAwQyAwQiAwMCAwMCAgU0QuLi4uLi4uLi4uLi4uLgogICAgNEVCMDogMDAgMEMg
RkUgMDAgMDAgMDAgMEMgMDIgMDAgMDAgMDAgMDggNTAgNTAgNDMgNTYgIC4uLi4uLi4uLi4uLlBQ
Q1YKICAgIDRFQzA6IDBBIDAwIDE0IDBCIDVGIDUwIDUwIDQzIDAwIEE0IDUwIDUwIDQzIDU2IDA4
IDVGICAuLi4uX1BQQy4uUFBDVi5fCiAgICA0RUQwOiA0MyA1MCA0MyAxMiA0MCAxOSAxNyAwQSAx
NyAwQSAwMyAxMSAxNCAwQSAxMSA4MiAgQ1BDLkAuLi4uLi4uLi4uLgogICAgNEVFMDogMEMgMDAg
N0YgMDggMTggMDQgQjAgMDIgMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgIC4uLi4uLi4uLi4uLi4u
eS4KICAgIDRFRjA6IDExIDE0IDBBIDExIDgyIDBDIDAwIDdGIDA4IDEwIDA0IEIwIDAyIDAxIEMw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA0RjAwOiAwMCAwMCAwMCA3OSAwMCAxMSAxNCAwQSAx
MSA4MiAwQyAwMCA3RiAwOCAwOCAwNCAgLi4ueS4uLi4uLi4uLi4uLgogICAgNEYxMDogQjAgMDIg
MDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgIC4uLi4uLi4ueS4uLi4u
Li4KICAgIDRGMjA6IDAwIDdGIDA4IDAwIDA0IEIwIDAyIDAxIEMwIDAwIDAwIDAwIDAwIDc5IDAw
IDExICAuLi4uLi4uLi4uLi4ueS4uCiAgICA0RjMwOiAxNCAwQSAxMSA4MiAwQyAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNEY0MDogMDAgMDAg
NzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgMDggMTAgMDQgQjMgIC4ueS4uLi4uLi4uLi4u
Li4KICAgIDRGNTA6IDAyIDAxIEMwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0IDBBIDExIDgyIDBD
IDAwICAuLi4uLi4ueS4uLi4uLi4uCiAgICA0RjYwOiA3RiAwOCAwOCAwNCBCMyAwMiAwMSBDMCAw
MCAwMCAwMCAwMCA3OSAwMCAxMSAxNCAgLi4uLi4uLi4uLi4ueS4uLgogICAgNEY3MDogMEEgMTEg
ODIgMEMgMDAgN0YgMDggMDAgMDQgQjMgMDIgMDEgQzAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDRGODA6IDAwIDc5IDAwIDExIDE0IDBBIDExIDgyIDBDIDAwIDAwIDAwIDAwIDAwIDAw
IDAwICAueS4uLi4uLi4uLi4uLi4uCiAgICA0RjkwOiAwMCAwMCAwMCAwMCAwMCAwMCA3OSAwMCAx
MSAxNCAwQSAxMSA4MiAwQyAwMCAwMCAgLi4uLi4ueS4uLi4uLi4uLgogICAgNEZBMDogMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgIC4uLi4uLi4uLi4ueS4u
Li4KICAgIDRGQjA6IDExIDgyIDBDIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA0RkMwOiA3OSAwMCAxMSAxNCAwQSAxMSA4MiAwQyAw
MCA3RiA0MCAwMCAwNCBFNyAwMCAwMCAgeS4uLi4uLi4uLkAuLi4uLgogICAgNEZEMDogMDAgMDAg
MDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgNDAgIC4uLi4ueS4uLi4uLi4u
LkAKICAgIDRGRTA6IDAwIDA0IEU4IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0IDBB
IDExICAuLi4uLi4uLi4ueS4uLi4uCiAgICA0RkYwOiA4MiAwQyAwMCA3RiAwMiAwMCAwNCBCNCAw
MiAwMSBDMCAwMCAwMCAwMCAwMCA3OSAgLi4uLi4uLi4uLi4uLi4ueQogICAgNTAwMDogMDAgMTEg
MTQgMEEgMTEgODIgMEMgMDAgN0YgMDEgMDAgMDQgQjEgMDIgMDEgQzAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDUwMTA6IDAwIDAwIDAwIDAwIDc5IDAwIDBDIDAxIDAwIDAwIDAwIDExIDE0IDBBIDEx
IDgyICAuLi4ueS4uLi4uLi4uLi4uCiAgICA1MDIwOiAwQyAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCA3OSAwMCAgLi4uLi4uLi4uLi4uLi55LgogICAgNTAzMDogMTEgMTQg
MEEgMTEgODIgMEMgMDAgN0YgMDggMTggMDQgQjMgMDIgMDEgQzAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDUwNDA6IDAwIDAwIDAwIDc5IDAwIDExIDE0IDBBIDExIDgyIDBDIDAwIDAwIDAwIDAw
IDAwICAuLi55Li4uLi4uLi4uLi4uCiAgICA1MDUwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCA3
OSAwMCAwQyAyMSAwMiAwMCAwMCAwQyAgLi4uLi4uLi55Li4hLi4uLgogICAgNTA2MDogNjkgMTAg
MDAgMDAgMTAgNDcgMzUgNUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAgNEMgIGkuLi4uRzVcLy5fU0Jf
UEwKICAgIDUwNzA6IDU0IDQ2IDQzIDMwIDMxIDM4IDA4IDVGIDUwIDQzIDU0IDEyIDJDIDAyIDEx
IDE0ICBURkMwMTguX1BDVC4sLi4uCiAgICA1MDgwOiAwQSAxMSA4MiAwQyAwMCA3RiA0MCAwMCAw
MCA2MiAwMCAwMSBDMCAwMCAwMCAwMCAgLi4uLi4uQC4uYi4uLi4uLgogICAgNTA5MDogMDAgNzkg
MDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgNDAgMDAgMDAgNjMgMDAgIC55Li4uLi4uLi4uQC4u
Yy4KICAgIDUwQTA6IDAxIEMwIDAwIDAwIDAwIDAwIDc5IDAwIDA4IDVGIDUwIDUzIDUzIDEyIDQ2
IDA2ICAuLi4uLi55Li5fUFNTLkYuCiAgICA1MEIwOiAwMyAxMiAyMCAwNiAwQyA2OCAxMCAwMCAw
MCAwQyBCMCAxMyAwMCAwMCAwQyAwMCAgLi4gLi5oLi4uLi4uLi4uLgogICAgNTBDMDogMDAgMDAg
MDAgMEMgMDAgMDAgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMEMgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDUwRDA6IDAwIDAwIDEyIDIwIDA2IDBDIDk4IDA4IDAwIDAwIDBDIDA0IDA2IDAwIDAw
IDBDICAuLi4gLi4uLi4uLi4uLi4uCiAgICA1MEUwOiAwMCAwMCAwMCAwMCAwQyAwMCAwMCAwMCAw
MCAwQyAwMSAwMCAwMCAwMCAwQyAwMSAgLi4uLi4uLi4uLi4uLi4uLgogICAgNTBGMDogMDAgMDAg
MDAgMTIgMjAgMDYgMEMgREMgMDUgMDAgMDAgMEMgQ0YgMDMgMDAgMDAgIC4uLi4gLi4uLi4uLi4u
Li4KICAgIDUxMDA6IDBDIDAwIDAwIDAwIDAwIDBDIDAwIDAwIDAwIDAwIDBDIDAyIDAwIDAwIDAw
IDBDICAuLi4uLi4uLi4uLi4uLi4uCiAgICA1MTEwOiAwMiAwMCAwMCAwMCAwOCA1OCA1MCA1MyA1
MyAxMiA0QiAwRCAwMyAxMiA0NyAwNCAgLi4uLi5YUFNTLksuLi5HLgogICAgNTEyMDogMDggMEMg
NjggMTAgMDAgMDAgMEMgQjAgMTMgMDAgMDAgMEMgMDAgMDAgMDAgMDAgIC4uaC4uLi4uLi4uLi4u
Li4KICAgIDUxMzA6IDBDIDAwIDAwIDAwIDAwIDExIDBCIDBBIDA4IDAwIDAwIDAwIDAwIDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA1MTQwOiAwMCAxMSAwQiAwQSAwOCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAxMSAwQiAwQSAgLi4uLi4uLi4uLi4uLi4uLgogICAgNTE1MDogMDggMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMTEgMEIgMEEgMDggMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDUxNjA6IDAwIDAwIDAwIDAwIDAwIDEyIDQ3IDA0IDA4IDBDIDk4IDA4IDAwIDAwIDBD
IDA0ICAuLi4uLi5HLi4uLi4uLi4uCiAgICA1MTcwOiAwNiAwMCAwMCAwQyAwMCAwMCAwMCAwMCAw
QyAwMCAwMCAwMCAwMCAxMSAwQiAwQSAgLi4uLi4uLi4uLi4uLi4uLgogICAgNTE4MDogMDggMDEg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMTEgMEIgMEEgMDggMDEgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDUxOTA6IDAwIDAwIDAwIDAwIDAwIDExIDBCIDBBIDA4IDAwIDAwIDAwIDAwIDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA1MUEwOiAwMCAxMSAwQiAwQSAwOCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAxMiA0NyAwNCAgLi4uLi4uLi4uLi4uLi5HLgogICAgNTFCMDogMDggMEMg
REMgMDUgMDAgMDAgMEMgQ0YgMDMgMDAgMDAgMEMgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDUxQzA6IDBDIDAwIDAwIDAwIDAwIDExIDBCIDBBIDA4IDAyIDAwIDAwIDAwIDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA1MUQwOiAwMCAxMSAwQiAwQSAwOCAwMiAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAxMSAwQiAwQSAgLi4uLi4uLi4uLi4uLi4uLgogICAgNTFFMDogMDggMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMTEgMEIgMEEgMDggMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDUxRjA6IDAwIDAwIDAwIDAwIDAwIDA4IDVGIDUwIDUzIDQ0IDEyIDE4IDAxIDEyIDE1
IDA1ICAuLi4uLi5fUFNELi4uLi4uCiAgICA1MjAwOiAwQSAwNSAwQSAwMCAwQyAwQyAwMCAwMCAw
MCAwQyBGRSAwMCAwMCAwMCAwQyAwMiAgLi4uLi4uLi4uLi4uLi4uLgogICAgNTIxMDogMDAgMDAg
MDAgMDggNTAgNTAgNDMgNTYgMEEgMDAgMTQgMEIgNUYgNTAgNTAgNDMgIC4uLi5QUENWLi4uLl9Q
UEMKICAgIDUyMjA6IDAwIEE0IDUwIDUwIDQzIDU2IDA4IDVGIDQzIDUwIDQzIDEyIDQwIDE5IDE3
IDBBICAuLlBQQ1YuX0NQQy5ALi4uCiAgICA1MjMwOiAxNyAwQSAwMyAxMSAxNCAwQSAxMSA4MiAw
QyAwMCA3RiAwOCAxOCAwNCBCMCAwMiAgLi4uLi4uLi4uLi4uLi4uLgogICAgNTI0MDogMDEgQzAg
MDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgIC4uLi4uLnkuLi4uLi4u
Li4KICAgIDUyNTA6IDA4IDEwIDA0IEIwIDAyIDAxIEMwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0
IDBBICAuLi4uLi4uLi4uLnkuLi4uCiAgICA1MjYwOiAxMSA4MiAwQyAwMCA3RiAwOCAwOCAwNCBC
MCAwMiAwMSBDMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNTI3MDogNzkgMDAg
MTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgMDggMDAgMDQgQjAgMDIgMDEgIHkuLi4uLi4uLi4uLi4u
Li4KICAgIDUyODA6IEMwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0IDBBIDExIDgyIDBDIDAwIDAw
IDAwICAuLi4uLnkuLi4uLi4uLi4uCiAgICA1MjkwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCA3OSAwMCAxMSAxNCAwQSAxMSAgLi4uLi4uLi4uLnkuLi4uLgogICAgNTJBMDogODIgMEMg
MDAgN0YgMDggMTAgMDQgQjMgMDIgMDEgQzAgMDAgMDAgMDAgMDAgNzkgIC4uLi4uLi4uLi4uLi4u
LnkKICAgIDUyQjA6IDAwIDExIDE0IDBBIDExIDgyIDBDIDAwIDdGIDA4IDA4IDA0IEIzIDAyIDAx
IEMwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA1MkMwOiAwMCAwMCAwMCAwMCA3OSAwMCAxMSAxNCAw
QSAxMSA4MiAwQyAwMCA3RiAwOCAwMCAgLi4uLnkuLi4uLi4uLi4uLgogICAgNTJEMDogMDQgQjMg
MDIgMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgIC4uLi4uLi4uLnkuLi4u
Li4KICAgIDUyRTA6IDBDIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDc5
IDAwICAuLi4uLi4uLi4uLi4uLnkuCiAgICA1MkYwOiAxMSAxNCAwQSAxMSA4MiAwQyAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNTMwMDogMDAgMDAg
MDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgMDAgMDAgMDAgMDAgIC4uLnkuLi4uLi4uLi4u
Li4KICAgIDUzMTA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0IDBBIDExIDgy
IDBDICAuLi4uLi4uLnkuLi4uLi4uCiAgICA1MzIwOiAwMCA3RiA0MCAwMCAwNCBFNyAwMCAwMCAw
MCAwMCAwMCAwMCAwMCA3OSAwMCAxMSAgLi5ALi4uLi4uLi4uLnkuLgogICAgNTMzMDogMTQgMEEg
MTEgODIgMEMgMDAgN0YgNDAgMDAgMDQgRTggMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi5ALi4uLi4u
Li4KICAgIDUzNDA6IDAwIDAwIDc5IDAwIDExIDE0IDBBIDExIDgyIDBDIDAwIDdGIDAyIDAwIDA0
IEI0ICAuLnkuLi4uLi4uLi4uLi4uCiAgICA1MzUwOiAwMiAwMSBDMCAwMCAwMCAwMCAwMCA3OSAw
MCAxMSAxNCAwQSAxMSA4MiAwQyAwMCAgLi4uLi4uLnkuLi4uLi4uLgogICAgNTM2MDogN0YgMDEg
MDAgMDQgQjEgMDIgMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgMEMgMDEgIC4uLi4uLi4uLi4uLnku
Li4KICAgIDUzNzA6IDAwIDAwIDAwIDExIDE0IDBBIDExIDgyIDBDIDAwIDAwIDAwIDAwIDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA1MzgwOiAwMCAwMCAwMCAwMCAwMCAwMCA3OSAwMCAx
MSAxNCAwQSAxMSA4MiAwQyAwMCA3RiAgLi4uLi4ueS4uLi4uLi4uLgogICAgNTM5MDogMDggMTgg
MDQgQjMgMDIgMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgIC4uLi4uLi4uLi4ueS4u
Li4KICAgIDUzQTA6IDExIDgyIDBDIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA1M0IwOiA3OSAwMCAwQyAyMSAwMiAwMCAwMCAwQyA2
OSAxMCAwMCAwMCAxMCA0NyAzNSA1QyAgeS4uIS4uLi5pLi4uLkc1XAogICAgNTNDMDogMkYgMDMg
NUYgNTMgNDIgNUYgNTAgNEMgNTQgNDYgNDMgMzAgMzEgMzkgMDggNUYgIC8uX1NCX1BMVEZDMDE5
Ll8KICAgIDUzRDA6IDUwIDQzIDU0IDEyIDJDIDAyIDExIDE0IDBBIDExIDgyIDBDIDAwIDdGIDQw
IDAwICBQQ1QuLC4uLi4uLi4uLkAuCiAgICA1M0UwOiAwMCA2MiAwMCAwMSBDMCAwMCAwMCAwMCAw
MCA3OSAwMCAxMSAxNCAwQSAxMSA4MiAgLmIuLi4uLi4ueS4uLi4uLgogICAgNTNGMDogMEMgMDAg
N0YgNDAgMDAgMDAgNjMgMDAgMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgIC4uLkAuLmMuLi4uLi4u
eS4KICAgIDU0MDA6IDA4IDVGIDUwIDUzIDUzIDEyIDQ2IDA2IDAzIDEyIDIwIDA2IDBDIDY4IDEw
IDAwICAuX1BTUy5GLi4uIC4uaC4uCiAgICA1NDEwOiAwMCAwQyBCMCAxMyAwMCAwMCAwQyAwMCAw
MCAwMCAwMCAwQyAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNTQyMDogMEMgMDAg
MDAgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMTIgMjAgMDYgMEMgOTggMDggIC4uLi4uLi4uLi4uIC4u
Li4KICAgIDU0MzA6IDAwIDAwIDBDIDA0IDA2IDAwIDAwIDBDIDAwIDAwIDAwIDAwIDBDIDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA1NDQwOiAwMCAwQyAwMSAwMCAwMCAwMCAwQyAwMSAw
MCAwMCAwMCAxMiAyMCAwNiAwQyBEQyAgLi4uLi4uLi4uLi4uIC4uLgogICAgNTQ1MDogMDUgMDAg
MDAgMEMgQ0YgMDMgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMEMgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDU0NjA6IDAwIDAwIDBDIDAyIDAwIDAwIDAwIDBDIDAyIDAwIDAwIDAwIDA4IDU4IDUw
IDUzICAuLi4uLi4uLi4uLi4uWFBTCiAgICA1NDcwOiA1MyAxMiA0QiAwRCAwMyAxMiA0NyAwNCAw
OCAwQyA2OCAxMCAwMCAwMCAwQyBCMCAgUy5LLi4uRy4uLmguLi4uLgogICAgNTQ4MDogMTMgMDAg
MDAgMEMgMDAgMDAgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMTEgMEIgMEEgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDU0OTA6IDA4IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDExIDBCIDBBIDA4IDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA1NEEwOiAwMCAwMCAwMCAwMCAwMCAxMSAwQiAwQSAw
OCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNTRCMDogMDAgMTEg
MEIgMEEgMDggMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMTIgNDcgMDQgIC4uLi4uLi4uLi4uLi4u
Ry4KICAgIDU0QzA6IDA4IDBDIDk4IDA4IDAwIDAwIDBDIDA0IDA2IDAwIDAwIDBDIDAwIDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA1NEQwOiAwQyAwMCAwMCAwMCAwMCAxMSAwQiAwQSAw
OCAwMSAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNTRFMDogMDAgMTEg
MEIgMEEgMDggMDEgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMTEgMEIgMEEgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDU0RjA6IDA4IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDExIDBCIDBBIDA4IDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA1NTAwOiAwMCAwMCAwMCAwMCAwMCAxMiA0NyAwNCAw
OCAwQyBEQyAwNSAwMCAwMCAwQyBDRiAgLi4uLi4uRy4uLi4uLi4uLgogICAgNTUxMDogMDMgMDAg
MDAgMEMgMDAgMDAgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMTEgMEIgMEEgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDU1MjA6IDA4IDAyIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDExIDBCIDBBIDA4IDAyIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA1NTMwOiAwMCAwMCAwMCAwMCAwMCAxMSAwQiAwQSAw
OCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNTU0MDogMDAgMTEg
MEIgMEEgMDggMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDggNUYgNTAgIC4uLi4uLi4uLi4uLi4u
X1AKICAgIDU1NTA6IDUzIDQ0IDEyIDE4IDAxIDEyIDE1IDA1IDBBIDA1IDBBIDAwIDBDIDBDIDAw
IDAwICBTRC4uLi4uLi4uLi4uLi4uCiAgICA1NTYwOiAwMCAwQyBGRSAwMCAwMCAwMCAwQyAwMiAw
MCAwMCAwMCAwOCA1MCA1MCA0MyA1NiAgLi4uLi4uLi4uLi4uUFBDVgogICAgNTU3MDogMEEgMDAg
MTQgMEIgNUYgNTAgNTAgNDMgMDAgQTQgNTAgNTAgNDMgNTYgMDggNUYgIC4uLi5fUFBDLi5QUENW
Ll8KICAgIDU1ODA6IDQzIDUwIDQzIDEyIDQwIDE5IDE3IDBBIDE3IDBBIDAzIDExIDE0IDBBIDEx
IDgyICBDUEMuQC4uLi4uLi4uLi4uCiAgICA1NTkwOiAwQyAwMCA3RiAwOCAxOCAwNCBCMCAwMiAw
MSBDMCAwMCAwMCAwMCAwMCA3OSAwMCAgLi4uLi4uLi4uLi4uLi55LgogICAgNTVBMDogMTEgMTQg
MEEgMTEgODIgMEMgMDAgN0YgMDggMTAgMDQgQjAgMDIgMDEgQzAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDU1QjA6IDAwIDAwIDAwIDc5IDAwIDExIDE0IDBBIDExIDgyIDBDIDAwIDdGIDA4IDA4
IDA0ICAuLi55Li4uLi4uLi4uLi4uCiAgICA1NUMwOiBCMCAwMiAwMSBDMCAwMCAwMCAwMCAwMCA3
OSAwMCAxMSAxNCAwQSAxMSA4MiAwQyAgLi4uLi4uLi55Li4uLi4uLgogICAgNTVEMDogMDAgN0Yg
MDggMDAgMDQgQjAgMDIgMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgIC4uLi4uLi4uLi4uLi55
Li4KICAgIDU1RTA6IDE0IDBBIDExIDgyIDBDIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA1NUYwOiAwMCAwMCA3OSAwMCAxMSAxNCAwQSAxMSA4
MiAwQyAwMCA3RiAwOCAxMCAwNCBCMyAgLi55Li4uLi4uLi4uLi4uLgogICAgNTYwMDogMDIgMDEg
QzAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgIC4uLi4uLi55Li4uLi4u
Li4KICAgIDU2MTA6IDdGIDA4IDA4IDA0IEIzIDAyIDAxIEMwIDAwIDAwIDAwIDAwIDc5IDAwIDEx
IDE0ICAuLi4uLi4uLi4uLi55Li4uCiAgICA1NjIwOiAwQSAxMSA4MiAwQyAwMCA3RiAwOCAwMCAw
NCBCMyAwMiAwMSBDMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNTYzMDogMDAgNzkg
MDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC55Li4uLi4uLi4uLi4u
Li4KICAgIDU2NDA6IDAwIDAwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0IDBBIDExIDgyIDBDIDAw
IDAwICAuLi4uLi55Li4uLi4uLi4uCiAgICA1NjUwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCA3OSAwMCAxMSAxNCAwQSAgLi4uLi4uLi4uLi55Li4uLgogICAgNTY2MDogMTEgODIg
MEMgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDU2NzA6IDc5IDAwIDExIDE0IDBBIDExIDgyIDBDIDAwIDdGIDQwIDAwIDA0IEU3IDAw
IDAwICB5Li4uLi4uLi4uQC4uLi4uCiAgICA1NjgwOiAwMCAwMCAwMCAwMCAwMCA3OSAwMCAxMSAx
NCAwQSAxMSA4MiAwQyAwMCA3RiA0MCAgLi4uLi55Li4uLi4uLi4uQAogICAgNTY5MDogMDAgMDQg
RTggMDAgMDAgMDAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgIC4uLi4uLi4uLi55Li4u
Li4KICAgIDU2QTA6IDgyIDBDIDAwIDdGIDAyIDAwIDA0IEI0IDAyIDAxIEMwIDAwIDAwIDAwIDAw
IDc5ICAuLi4uLi4uLi4uLi4uLi55CiAgICA1NkIwOiAwMCAxMSAxNCAwQSAxMSA4MiAwQyAwMCA3
RiAwMSAwMCAwNCBCMSAwMiAwMSBDMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNTZDMDogMDAgMDAg
MDAgMDAgNzkgMDAgMEMgMDEgMDAgMDAgMDAgMTEgMTQgMEEgMTEgODIgIC4uLi55Li4uLi4uLi4u
Li4KICAgIDU2RDA6IDBDIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDc5
IDAwICAuLi4uLi4uLi4uLi4uLnkuCiAgICA1NkUwOiAxMSAxNCAwQSAxMSA4MiAwQyAwMCA3RiAw
OCAxOCAwNCBCMyAwMiAwMSBDMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNTZGMDogMDAgMDAg
MDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgMDAgMDAgMDAgMDAgIC4uLnkuLi4uLi4uLi4u
Li4KICAgIDU3MDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDc5IDAwIDBDIDIxIDAyIDAwIDAw
IDBDICAuLi4uLi4uLnkuLiEuLi4uCiAgICA1NzEwOiA2OSAxMCAwMCAwMCAxMCA0NyAzNSA1QyAy
RiAwMyA1RiA1MyA0MiA1RiA1MCA0QyAgaS4uLi5HNVwvLl9TQl9QTAogICAgNTcyMDogNTQgNDYg
NDMgMzAgMzEgNDEgMDggNUYgNTAgNDMgNTQgMTIgMkMgMDIgMTEgMTQgIFRGQzAxQS5fUENULiwu
Li4KICAgIDU3MzA6IDBBIDExIDgyIDBDIDAwIDdGIDQwIDAwIDAwIDYyIDAwIDAxIEMwIDAwIDAw
IDAwICAuLi4uLi5ALi5iLi4uLi4uCiAgICA1NzQwOiAwMCA3OSAwMCAxMSAxNCAwQSAxMSA4MiAw
QyAwMCA3RiA0MCAwMCAwMCA2MyAwMCAgLnkuLi4uLi4uLi5ALi5jLgogICAgNTc1MDogMDEgQzAg
MDAgMDAgMDAgMDAgNzkgMDAgMDggNUYgNTAgNTMgNTMgMTIgNDYgMDYgIC4uLi4uLnkuLl9QU1Mu
Ri4KICAgIDU3NjA6IDAzIDEyIDIwIDA2IDBDIDY4IDEwIDAwIDAwIDBDIEIwIDEzIDAwIDAwIDBD
IDAwICAuLiAuLmguLi4uLi4uLi4uCiAgICA1NzcwOiAwMCAwMCAwMCAwQyAwMCAwMCAwMCAwMCAw
QyAwMCAwMCAwMCAwMCAwQyAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNTc4MDogMDAgMDAg
MTIgMjAgMDYgMEMgOTggMDggMDAgMDAgMEMgMDQgMDYgMDAgMDAgMEMgIC4uLiAuLi4uLi4uLi4u
Li4KICAgIDU3OTA6IDAwIDAwIDAwIDAwIDBDIDAwIDAwIDAwIDAwIDBDIDAxIDAwIDAwIDAwIDBD
IDAxICAuLi4uLi4uLi4uLi4uLi4uCiAgICA1N0EwOiAwMCAwMCAwMCAxMiAyMCAwNiAwQyBEQyAw
NSAwMCAwMCAwQyBDRiAwMyAwMCAwMCAgLi4uLiAuLi4uLi4uLi4uLgogICAgNTdCMDogMEMgMDAg
MDAgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMEMgMDIgMDAgMDAgMDAgMEMgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDU3QzA6IDAyIDAwIDAwIDAwIDA4IDU4IDUwIDUzIDUzIDEyIDRCIDBEIDAzIDEyIDQ3
IDA0ICAuLi4uLlhQU1MuSy4uLkcuCiAgICA1N0QwOiAwOCAwQyA2OCAxMCAwMCAwMCAwQyBCMCAx
MyAwMCAwMCAwQyAwMCAwMCAwMCAwMCAgLi5oLi4uLi4uLi4uLi4uLgogICAgNTdFMDogMEMgMDAg
MDAgMDAgMDAgMTEgMEIgMEEgMDggMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDU3RjA6IDAwIDExIDBCIDBBIDA4IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDExIDBC
IDBBICAuLi4uLi4uLi4uLi4uLi4uCiAgICA1ODAwOiAwOCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAxMSAwQiAwQSAwOCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNTgxMDogMDAgMDAg
MDAgMDAgMDAgMTIgNDcgMDQgMDggMEMgOTggMDggMDAgMDAgMEMgMDQgIC4uLi4uLkcuLi4uLi4u
Li4KICAgIDU4MjA6IDA2IDAwIDAwIDBDIDAwIDAwIDAwIDAwIDBDIDAwIDAwIDAwIDAwIDExIDBC
IDBBICAuLi4uLi4uLi4uLi4uLi4uCiAgICA1ODMwOiAwOCAwMSAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAxMSAwQiAwQSAwOCAwMSAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNTg0MDogMDAgMDAg
MDAgMDAgMDAgMTEgMEIgMEEgMDggMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDU4NTA6IDAwIDExIDBCIDBBIDA4IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDEyIDQ3
IDA0ICAuLi4uLi4uLi4uLi4uLkcuCiAgICA1ODYwOiAwOCAwQyBEQyAwNSAwMCAwMCAwQyBDRiAw
MyAwMCAwMCAwQyAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNTg3MDogMEMgMDAg
MDAgMDAgMDAgMTEgMEIgMEEgMDggMDIgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDU4ODA6IDAwIDExIDBCIDBBIDA4IDAyIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDExIDBC
IDBBICAuLi4uLi4uLi4uLi4uLi4uCiAgICA1ODkwOiAwOCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAxMSAwQiAwQSAwOCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNThBMDogMDAgMDAg
MDAgMDAgMDAgMDggNUYgNTAgNTMgNDQgMTIgMTggMDEgMTIgMTUgMDUgIC4uLi4uLl9QU0QuLi4u
Li4KICAgIDU4QjA6IDBBIDA1IDBBIDAwIDBDIDBEIDAwIDAwIDAwIDBDIEZFIDAwIDAwIDAwIDBD
IDAyICAuLi4uLi4uLi4uLi4uLi4uCiAgICA1OEMwOiAwMCAwMCAwMCAwOCA1MCA1MCA0MyA1NiAw
QSAwMCAxNCAwQiA1RiA1MCA1MCA0MyAgLi4uLlBQQ1YuLi4uX1BQQwogICAgNThEMDogMDAgQTQg
NTAgNTAgNDMgNTYgMDggNUYgNDMgNTAgNDMgMTIgNDAgMTkgMTcgMEEgIC4uUFBDVi5fQ1BDLkAu
Li4KICAgIDU4RTA6IDE3IDBBIDAzIDExIDE0IDBBIDExIDgyIDBDIDAwIDdGIDA4IDE4IDA0IEIw
IDAyICAuLi4uLi4uLi4uLi4uLi4uCiAgICA1OEYwOiAwMSBDMCAwMCAwMCAwMCAwMCA3OSAwMCAx
MSAxNCAwQSAxMSA4MiAwQyAwMCA3RiAgLi4uLi4ueS4uLi4uLi4uLgogICAgNTkwMDogMDggMTAg
MDQgQjAgMDIgMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgIC4uLi4uLi4uLi4ueS4u
Li4KICAgIDU5MTA6IDExIDgyIDBDIDAwIDdGIDA4IDA4IDA0IEIwIDAyIDAxIEMwIDAwIDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA1OTIwOiA3OSAwMCAxMSAxNCAwQSAxMSA4MiAwQyAw
MCA3RiAwOCAwMCAwNCBCMCAwMiAwMSAgeS4uLi4uLi4uLi4uLi4uLgogICAgNTkzMDogQzAgMDAg
MDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgMDAgMDAgIC4uLi4ueS4uLi4uLi4u
Li4KICAgIDU5NDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0IDBB
IDExICAuLi4uLi4uLi4ueS4uLi4uCiAgICA1OTUwOiA4MiAwQyAwMCA3RiAwOCAxMCAwNCBCMyAw
MiAwMSBDMCAwMCAwMCAwMCAwMCA3OSAgLi4uLi4uLi4uLi4uLi4ueQogICAgNTk2MDogMDAgMTEg
MTQgMEEgMTEgODIgMEMgMDAgN0YgMDggMDggMDQgQjMgMDIgMDEgQzAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDU5NzA6IDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0IDBBIDExIDgyIDBDIDAwIDdGIDA4
IDAwICAuLi4ueS4uLi4uLi4uLi4uCiAgICA1OTgwOiAwNCBCMyAwMiAwMSBDMCAwMCAwMCAwMCAw
MCA3OSAwMCAxMSAxNCAwQSAxMSA4MiAgLi4uLi4uLi4ueS4uLi4uLgogICAgNTk5MDogMEMgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgNzkgMDAgIC4uLi4uLi4uLi4uLi4u
eS4KICAgIDU5QTA6IDExIDE0IDBBIDExIDgyIDBDIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA1OUIwOiAwMCAwMCAwMCA3OSAwMCAxMSAxNCAwQSAx
MSA4MiAwQyAwMCAwMCAwMCAwMCAwMCAgLi4ueS4uLi4uLi4uLi4uLgogICAgNTlDMDogMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgIC4uLi4uLi4ueS4uLi4u
Li4KICAgIDU5RDA6IDAwIDdGIDQwIDAwIDA0IEU3IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDc5IDAw
IDExICAuLkAuLi4uLi4uLi4ueS4uCiAgICA1OUUwOiAxNCAwQSAxMSA4MiAwQyAwMCA3RiA0MCAw
MCAwNCBFOCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLkAuLi4uLi4uLgogICAgNTlGMDogMDAgMDAg
NzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgMDIgMDAgMDQgQjQgIC4ueS4uLi4uLi4uLi4u
Li4KICAgIDVBMDA6IDAyIDAxIEMwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0IDBBIDExIDgyIDBD
IDAwICAuLi4uLi4ueS4uLi4uLi4uCiAgICA1QTEwOiA3RiAwMSAwMCAwNCBCMSAwMiAwMSBDMCAw
MCAwMCAwMCAwMCA3OSAwMCAwQyAwMSAgLi4uLi4uLi4uLi4ueS4uLgogICAgNUEyMDogMDAgMDAg
MDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDVBMzA6IDAwIDAwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0IDBBIDExIDgyIDBDIDAw
IDdGICAuLi4uLi55Li4uLi4uLi4uCiAgICA1QTQwOiAwOCAxOCAwNCBCMyAwMiAwMSBDMCAwMCAw
MCAwMCAwMCA3OSAwMCAxMSAxNCAwQSAgLi4uLi4uLi4uLi55Li4uLgogICAgNUE1MDogMTEgODIg
MEMgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDVBNjA6IDc5IDAwIDBDIDIxIDAyIDAwIDAwIDBDIDY5IDEwIDAwIDAwIDEwIDQ3IDM1
IDVDICB5Li4hLi4uLmkuLi4uRzVcCiAgICA1QTcwOiAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0QyA1
NCA0NiA0MyAzMCAzMSA0MiAwOCA1RiAgLy5fU0JfUExURkMwMUIuXwogICAgNUE4MDogNTAgNDMg
NTQgMTIgMkMgMDIgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgNDAgMDAgIFBDVC4sLi4uLi4uLi4u
QC4KICAgIDVBOTA6IDAwIDYyIDAwIDAxIEMwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0IDBBIDEx
IDgyICAuYi4uLi4uLi55Li4uLi4uCiAgICA1QUEwOiAwQyAwMCA3RiA0MCAwMCAwMCA2MyAwMCAw
MSBDMCAwMCAwMCAwMCAwMCA3OSAwMCAgLi4uQC4uYy4uLi4uLi55LgogICAgNUFCMDogMDggNUYg
NTAgNTMgNTMgMTIgNDYgMDYgMDMgMTIgMjAgMDYgMEMgNjggMTAgMDAgIC5fUFNTLkYuLi4gLi5o
Li4KICAgIDVBQzA6IDAwIDBDIEIwIDEzIDAwIDAwIDBDIDAwIDAwIDAwIDAwIDBDIDAwIDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA1QUQwOiAwQyAwMCAwMCAwMCAwMCAwQyAwMCAwMCAw
MCAwMCAxMiAyMCAwNiAwQyA5OCAwOCAgLi4uLi4uLi4uLi4gLi4uLgogICAgNUFFMDogMDAgMDAg
MEMgMDQgMDYgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMEMgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDVBRjA6IDAwIDBDIDAxIDAwIDAwIDAwIDBDIDAxIDAwIDAwIDAwIDEyIDIwIDA2IDBD
IERDICAuLi4uLi4uLi4uLi4gLi4uCiAgICA1QjAwOiAwNSAwMCAwMCAwQyBDRiAwMyAwMCAwMCAw
QyAwMCAwMCAwMCAwMCAwQyAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNUIxMDogMDAgMDAg
MEMgMDIgMDAgMDAgMDAgMEMgMDIgMDAgMDAgMDAgMDggNTggNTAgNTMgIC4uLi4uLi4uLi4uLi5Y
UFMKICAgIDVCMjA6IDUzIDEyIDRCIDBEIDAzIDEyIDQ3IDA0IDA4IDBDIDY4IDEwIDAwIDAwIDBD
IEIwICBTLksuLi5HLi4uaC4uLi4uCiAgICA1QjMwOiAxMyAwMCAwMCAwQyAwMCAwMCAwMCAwMCAw
QyAwMCAwMCAwMCAwMCAxMSAwQiAwQSAgLi4uLi4uLi4uLi4uLi4uLgogICAgNUI0MDogMDggMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMTEgMEIgMEEgMDggMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDVCNTA6IDAwIDAwIDAwIDAwIDAwIDExIDBCIDBBIDA4IDAwIDAwIDAwIDAwIDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA1QjYwOiAwMCAxMSAwQiAwQSAwOCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAxMiA0NyAwNCAgLi4uLi4uLi4uLi4uLi5HLgogICAgNUI3MDogMDggMEMg
OTggMDggMDAgMDAgMEMgMDQgMDYgMDAgMDAgMEMgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDVCODA6IDBDIDAwIDAwIDAwIDAwIDExIDBCIDBBIDA4IDAxIDAwIDAwIDAwIDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA1QjkwOiAwMCAxMSAwQiAwQSAwOCAwMSAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAxMSAwQiAwQSAgLi4uLi4uLi4uLi4uLi4uLgogICAgNUJBMDogMDggMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMTEgMEIgMEEgMDggMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDVCQjA6IDAwIDAwIDAwIDAwIDAwIDEyIDQ3IDA0IDA4IDBDIERDIDA1IDAwIDAwIDBD
IENGICAuLi4uLi5HLi4uLi4uLi4uCiAgICA1QkMwOiAwMyAwMCAwMCAwQyAwMCAwMCAwMCAwMCAw
QyAwMCAwMCAwMCAwMCAxMSAwQiAwQSAgLi4uLi4uLi4uLi4uLi4uLgogICAgNUJEMDogMDggMDIg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMTEgMEIgMEEgMDggMDIgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDVCRTA6IDAwIDAwIDAwIDAwIDAwIDExIDBCIDBBIDA4IDAwIDAwIDAwIDAwIDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA1QkYwOiAwMCAxMSAwQiAwQSAwOCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwOCA1RiA1MCAgLi4uLi4uLi4uLi4uLi5fUAogICAgNUMwMDogNTMgNDQg
MTIgMTggMDEgMTIgMTUgMDUgMEEgMDUgMEEgMDAgMEMgMEQgMDAgMDAgIFNELi4uLi4uLi4uLi4u
Li4KICAgIDVDMTA6IDAwIDBDIEZFIDAwIDAwIDAwIDBDIDAyIDAwIDAwIDAwIDA4IDUwIDUwIDQz
IDU2ICAuLi4uLi4uLi4uLi5QUENWCiAgICA1QzIwOiAwQSAwMCAxNCAwQiA1RiA1MCA1MCA0MyAw
MCBBNCA1MCA1MCA0MyA1NiAwOCA1RiAgLi4uLl9QUEMuLlBQQ1YuXwogICAgNUMzMDogNDMgNTAg
NDMgMTIgNDAgMTkgMTcgMEEgMTcgMEEgMDMgMTEgMTQgMEEgMTEgODIgIENQQy5ALi4uLi4uLi4u
Li4KICAgIDVDNDA6IDBDIDAwIDdGIDA4IDE4IDA0IEIwIDAyIDAxIEMwIDAwIDAwIDAwIDAwIDc5
IDAwICAuLi4uLi4uLi4uLi4uLnkuCiAgICA1QzUwOiAxMSAxNCAwQSAxMSA4MiAwQyAwMCA3RiAw
OCAxMCAwNCBCMCAwMiAwMSBDMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNUM2MDogMDAgMDAg
MDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgMDggMDggMDQgIC4uLnkuLi4uLi4uLi4u
Li4KICAgIDVDNzA6IEIwIDAyIDAxIEMwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0IDBBIDExIDgy
IDBDICAuLi4uLi4uLnkuLi4uLi4uCiAgICA1QzgwOiAwMCA3RiAwOCAwMCAwNCBCMCAwMiAwMSBD
MCAwMCAwMCAwMCAwMCA3OSAwMCAxMSAgLi4uLi4uLi4uLi4uLnkuLgogICAgNUM5MDogMTQgMEEg
MTEgODIgMEMgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDVDQTA6IDAwIDAwIDc5IDAwIDExIDE0IDBBIDExIDgyIDBDIDAwIDdGIDA4IDEwIDA0
IEIzICAuLnkuLi4uLi4uLi4uLi4uCiAgICA1Q0IwOiAwMiAwMSBDMCAwMCAwMCAwMCAwMCA3OSAw
MCAxMSAxNCAwQSAxMSA4MiAwQyAwMCAgLi4uLi4uLnkuLi4uLi4uLgogICAgNUNDMDogN0YgMDgg
MDggMDQgQjMgMDIgMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgIC4uLi4uLi4uLi4uLnku
Li4KICAgIDVDRDA6IDBBIDExIDgyIDBDIDAwIDdGIDA4IDAwIDA0IEIzIDAyIDAxIEMwIDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA1Q0UwOiAwMCA3OSAwMCAxMSAxNCAwQSAxMSA4MiAw
QyAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLnkuLi4uLi4uLi4uLi4uLgogICAgNUNGMDogMDAgMDAg
MDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgMDAgIC4uLi4uLnkuLi4uLi4u
Li4KICAgIDVEMDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0
IDBBICAuLi4uLi4uLi4uLnkuLi4uCiAgICA1RDEwOiAxMSA4MiAwQyAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNUQyMDogNzkgMDAg
MTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgNDAgMDAgMDQgRTcgMDAgMDAgIHkuLi4uLi4uLi5ALi4u
Li4KICAgIDVEMzA6IDAwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0IDBBIDExIDgyIDBDIDAwIDdG
IDQwICAuLi4uLnkuLi4uLi4uLi5ACiAgICA1RDQwOiAwMCAwNCBFOCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCA3OSAwMCAxMSAxNCAwQSAxMSAgLi4uLi4uLi4uLnkuLi4uLgogICAgNUQ1MDogODIgMEMg
MDAgN0YgMDIgMDAgMDQgQjQgMDIgMDEgQzAgMDAgMDAgMDAgMDAgNzkgIC4uLi4uLi4uLi4uLi4u
LnkKICAgIDVENjA6IDAwIDExIDE0IDBBIDExIDgyIDBDIDAwIDdGIDAxIDAwIDA0IEIxIDAyIDAx
IEMwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA1RDcwOiAwMCAwMCAwMCAwMCA3OSAwMCAwQyAwMSAw
MCAwMCAwMCAxMSAxNCAwQSAxMSA4MiAgLi4uLnkuLi4uLi4uLi4uLgogICAgNUQ4MDogMEMgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgNzkgMDAgIC4uLi4uLi4uLi4uLi4u
eS4KICAgIDVEOTA6IDExIDE0IDBBIDExIDgyIDBDIDAwIDdGIDA4IDE4IDA0IEIzIDAyIDAxIEMw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA1REEwOiAwMCAwMCAwMCA3OSAwMCAxMSAxNCAwQSAx
MSA4MiAwQyAwMCAwMCAwMCAwMCAwMCAgLi4ueS4uLi4uLi4uLi4uLgogICAgNURCMDogMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgNzkgMDAgMEMgMjEgMDIgMDAgMDAgMEMgIC4uLi4uLi4ueS4uIS4u
Li4KICAgIDVEQzA6IDY5IDEwIDAwIDAwIDEwIDQ3IDM1IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUw
IDRDICBpLi4uLkc1XC8uX1NCX1BMCiAgICA1REQwOiA1NCA0NiA0MyAzMCAzMSA0MyAwOCA1RiA1
MCA0MyA1NCAxMiAyQyAwMiAxMSAxNCAgVEZDMDFDLl9QQ1QuLC4uLgogICAgNURFMDogMEEgMTEg
ODIgMEMgMDAgN0YgNDAgMDAgMDAgNjIgMDAgMDEgQzAgMDAgMDAgMDAgIC4uLi4uLkAuLmIuLi4u
Li4KICAgIDVERjA6IDAwIDc5IDAwIDExIDE0IDBBIDExIDgyIDBDIDAwIDdGIDQwIDAwIDAwIDYz
IDAwICAueS4uLi4uLi4uLkAuLmMuCiAgICA1RTAwOiAwMSBDMCAwMCAwMCAwMCAwMCA3OSAwMCAw
OCA1RiA1MCA1MyA1MyAxMiA0NiAwNiAgLi4uLi4ueS4uX1BTUy5GLgogICAgNUUxMDogMDMgMTIg
MjAgMDYgMEMgNjggMTAgMDAgMDAgMEMgQjAgMTMgMDAgMDAgMEMgMDAgIC4uIC4uaC4uLi4uLi4u
Li4KICAgIDVFMjA6IDAwIDAwIDAwIDBDIDAwIDAwIDAwIDAwIDBDIDAwIDAwIDAwIDAwIDBDIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA1RTMwOiAwMCAwMCAxMiAyMCAwNiAwQyA5OCAwOCAw
MCAwMCAwQyAwNCAwNiAwMCAwMCAwQyAgLi4uIC4uLi4uLi4uLi4uLgogICAgNUU0MDogMDAgMDAg
MDAgMDAgMEMgMDAgMDAgMDAgMDAgMEMgMDEgMDAgMDAgMDAgMEMgMDEgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDVFNTA6IDAwIDAwIDAwIDEyIDIwIDA2IDBDIERDIDA1IDAwIDAwIDBDIENGIDAzIDAw
IDAwICAuLi4uIC4uLi4uLi4uLi4uCiAgICA1RTYwOiAwQyAwMCAwMCAwMCAwMCAwQyAwMCAwMCAw
MCAwMCAwQyAwMiAwMCAwMCAwMCAwQyAgLi4uLi4uLi4uLi4uLi4uLgogICAgNUU3MDogMDIgMDAg
MDAgMDAgMDggNTggNTAgNTMgNTMgMTIgNEIgMEQgMDMgMTIgNDcgMDQgIC4uLi4uWFBTUy5LLi4u
Ry4KICAgIDVFODA6IDA4IDBDIDY4IDEwIDAwIDAwIDBDIEIwIDEzIDAwIDAwIDBDIDAwIDAwIDAw
IDAwICAuLmguLi4uLi4uLi4uLi4uCiAgICA1RTkwOiAwQyAwMCAwMCAwMCAwMCAxMSAwQiAwQSAw
OCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNUVBMDogMDAgMTEg
MEIgMEEgMDggMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMTEgMEIgMEEgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDVFQjA6IDA4IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDExIDBCIDBBIDA4IDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA1RUMwOiAwMCAwMCAwMCAwMCAwMCAxMiA0NyAwNCAw
OCAwQyA5OCAwOCAwMCAwMCAwQyAwNCAgLi4uLi4uRy4uLi4uLi4uLgogICAgNUVEMDogMDYgMDAg
MDAgMEMgMDAgMDAgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMTEgMEIgMEEgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDVFRTA6IDA4IDAxIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDExIDBCIDBBIDA4IDAxIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA1RUYwOiAwMCAwMCAwMCAwMCAwMCAxMSAwQiAwQSAw
OCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNUYwMDogMDAgMTEg
MEIgMEEgMDggMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMTIgNDcgMDQgIC4uLi4uLi4uLi4uLi4u
Ry4KICAgIDVGMTA6IDA4IDBDIERDIDA1IDAwIDAwIDBDIENGIDAzIDAwIDAwIDBDIDAwIDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA1RjIwOiAwQyAwMCAwMCAwMCAwMCAxMSAwQiAwQSAw
OCAwMiAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNUYzMDogMDAgMTEg
MEIgMEEgMDggMDIgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMTEgMEIgMEEgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDVGNDA6IDA4IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDExIDBCIDBBIDA4IDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA1RjUwOiAwMCAwMCAwMCAwMCAwMCAwOCA1RiA1MCA1
MyA0NCAxMiAxOCAwMSAxMiAxNSAwNSAgLi4uLi4uX1BTRC4uLi4uLgogICAgNUY2MDogMEEgMDUg
MEEgMDAgMEMgMEUgMDAgMDAgMDAgMEMgRkUgMDAgMDAgMDAgMEMgMDIgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDVGNzA6IDAwIDAwIDAwIDA4IDUwIDUwIDQzIDU2IDBBIDAwIDE0IDBCIDVGIDUwIDUw
IDQzICAuLi4uUFBDVi4uLi5fUFBDCiAgICA1RjgwOiAwMCBBNCA1MCA1MCA0MyA1NiAwOCA1RiA0
MyA1MCA0MyAxMiA0MCAxOSAxNyAwQSAgLi5QUENWLl9DUEMuQC4uLgogICAgNUY5MDogMTcgMEEg
MDMgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgMDggMTggMDQgQjAgMDIgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDVGQTA6IDAxIEMwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0IDBBIDExIDgyIDBDIDAw
IDdGICAuLi4uLi55Li4uLi4uLi4uCiAgICA1RkIwOiAwOCAxMCAwNCBCMCAwMiAwMSBDMCAwMCAw
MCAwMCAwMCA3OSAwMCAxMSAxNCAwQSAgLi4uLi4uLi4uLi55Li4uLgogICAgNUZDMDogMTEgODIg
MEMgMDAgN0YgMDggMDggMDQgQjAgMDIgMDEgQzAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDVGRDA6IDc5IDAwIDExIDE0IDBBIDExIDgyIDBDIDAwIDdGIDA4IDAwIDA0IEIwIDAy
IDAxICB5Li4uLi4uLi4uLi4uLi4uCiAgICA1RkUwOiBDMCAwMCAwMCAwMCAwMCA3OSAwMCAxMSAx
NCAwQSAxMSA4MiAwQyAwMCAwMCAwMCAgLi4uLi55Li4uLi4uLi4uLgogICAgNUZGMDogMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgIC4uLi4uLi4uLi55Li4u
Li4KICAgIDYwMDA6IDgyIDBDIDAwIDdGIDA4IDEwIDA0IEIzIDAyIDAxIEMwIDAwIDAwIDAwIDAw
IDc5ICAuLi4uLi4uLi4uLi4uLi55CiAgICA2MDEwOiAwMCAxMSAxNCAwQSAxMSA4MiAwQyAwMCA3
RiAwOCAwOCAwNCBCMyAwMiAwMSBDMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNjAyMDogMDAgMDAg
MDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgMDggMDAgIC4uLi55Li4uLi4uLi4u
Li4KICAgIDYwMzA6IDA0IEIzIDAyIDAxIEMwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0IDBBIDEx
IDgyICAuLi4uLi4uLi55Li4uLi4uCiAgICA2MDQwOiAwQyAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCA3OSAwMCAgLi4uLi4uLi4uLi4uLi55LgogICAgNjA1MDogMTEgMTQg
MEEgMTEgODIgMEMgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDYwNjA6IDAwIDAwIDAwIDc5IDAwIDExIDE0IDBBIDExIDgyIDBDIDAwIDAwIDAwIDAw
IDAwICAuLi55Li4uLi4uLi4uLi4uCiAgICA2MDcwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCA3
OSAwMCAxMSAxNCAwQSAxMSA4MiAwQyAgLi4uLi4uLi55Li4uLi4uLgogICAgNjA4MDogMDAgN0Yg
NDAgMDAgMDQgRTcgMDAgMDAgMDAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgIC4uQC4uLi4uLi4uLi55
Li4KICAgIDYwOTA6IDE0IDBBIDExIDgyIDBDIDAwIDdGIDQwIDAwIDA0IEU4IDAwIDAwIDAwIDAw
IDAwICAuLi4uLi4uQC4uLi4uLi4uCiAgICA2MEEwOiAwMCAwMCA3OSAwMCAxMSAxNCAwQSAxMSA4
MiAwQyAwMCA3RiAwMiAwMCAwNCBCNCAgLi55Li4uLi4uLi4uLi4uLgogICAgNjBCMDogMDIgMDEg
QzAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgIC4uLi4uLi55Li4uLi4u
Li4KICAgIDYwQzA6IDdGIDAxIDAwIDA0IEIxIDAyIDAxIEMwIDAwIDAwIDAwIDAwIDc5IDAwIDBD
IDAxICAuLi4uLi4uLi4uLi55Li4uCiAgICA2MEQwOiAwMCAwMCAwMCAxMSAxNCAwQSAxMSA4MiAw
QyAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNjBFMDogMDAgMDAg
MDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgIC4uLi4uLnkuLi4uLi4u
Li4KICAgIDYwRjA6IDA4IDE4IDA0IEIzIDAyIDAxIEMwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0
IDBBICAuLi4uLi4uLi4uLnkuLi4uCiAgICA2MTAwOiAxMSA4MiAwQyAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNjExMDogNzkgMDAg
MEMgMjEgMDIgMDAgMDAgMEMgNjkgMTAgMDAgMDAgMTAgNDcgMzUgNUMgIHkuLiEuLi4uaS4uLi5H
NVwKICAgIDYxMjA6IDJGIDAzIDVGIDUzIDQyIDVGIDUwIDRDIDU0IDQ2IDQzIDMwIDMxIDQ0IDA4
IDVGICAvLl9TQl9QTFRGQzAxRC5fCiAgICA2MTMwOiA1MCA0MyA1NCAxMiAyQyAwMiAxMSAxNCAw
QSAxMSA4MiAwQyAwMCA3RiA0MCAwMCAgUENULiwuLi4uLi4uLi5ALgogICAgNjE0MDogMDAgNjIg
MDAgMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgIC5iLi4uLi4uLnkuLi4u
Li4KICAgIDYxNTA6IDBDIDAwIDdGIDQwIDAwIDAwIDYzIDAwIDAxIEMwIDAwIDAwIDAwIDAwIDc5
IDAwICAuLi5ALi5jLi4uLi4uLnkuCiAgICA2MTYwOiAwOCA1RiA1MCA1MyA1MyAxMiA0NiAwNiAw
MyAxMiAyMCAwNiAwQyA2OCAxMCAwMCAgLl9QU1MuRi4uLiAuLmguLgogICAgNjE3MDogMDAgMEMg
QjAgMTMgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMEMgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDYxODA6IDBDIDAwIDAwIDAwIDAwIDBDIDAwIDAwIDAwIDAwIDEyIDIwIDA2IDBDIDk4
IDA4ICAuLi4uLi4uLi4uLiAuLi4uCiAgICA2MTkwOiAwMCAwMCAwQyAwNCAwNiAwMCAwMCAwQyAw
MCAwMCAwMCAwMCAwQyAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNjFBMDogMDAgMEMg
MDEgMDAgMDAgMDAgMEMgMDEgMDAgMDAgMDAgMTIgMjAgMDYgMEMgREMgIC4uLi4uLi4uLi4uLiAu
Li4KICAgIDYxQjA6IDA1IDAwIDAwIDBDIENGIDAzIDAwIDAwIDBDIDAwIDAwIDAwIDAwIDBDIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA2MUMwOiAwMCAwMCAwQyAwMiAwMCAwMCAwMCAwQyAw
MiAwMCAwMCAwMCAwOCA1OCA1MCA1MyAgLi4uLi4uLi4uLi4uLlhQUwogICAgNjFEMDogNTMgMTIg
NEIgMEQgMDMgMTIgNDcgMDQgMDggMEMgNjggMTAgMDAgMDAgMEMgQjAgIFMuSy4uLkcuLi5oLi4u
Li4KICAgIDYxRTA6IDEzIDAwIDAwIDBDIDAwIDAwIDAwIDAwIDBDIDAwIDAwIDAwIDAwIDExIDBC
IDBBICAuLi4uLi4uLi4uLi4uLi4uCiAgICA2MUYwOiAwOCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAxMSAwQiAwQSAwOCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNjIwMDogMDAgMDAg
MDAgMDAgMDAgMTEgMEIgMEEgMDggMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDYyMTA6IDAwIDExIDBCIDBBIDA4IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDEyIDQ3
IDA0ICAuLi4uLi4uLi4uLi4uLkcuCiAgICA2MjIwOiAwOCAwQyA5OCAwOCAwMCAwMCAwQyAwNCAw
NiAwMCAwMCAwQyAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNjIzMDogMEMgMDAg
MDAgMDAgMDAgMTEgMEIgMEEgMDggMDEgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDYyNDA6IDAwIDExIDBCIDBBIDA4IDAxIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDExIDBC
IDBBICAuLi4uLi4uLi4uLi4uLi4uCiAgICA2MjUwOiAwOCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAxMSAwQiAwQSAwOCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNjI2MDogMDAgMDAg
MDAgMDAgMDAgMTIgNDcgMDQgMDggMEMgREMgMDUgMDAgMDAgMEMgQ0YgIC4uLi4uLkcuLi4uLi4u
Li4KICAgIDYyNzA6IDAzIDAwIDAwIDBDIDAwIDAwIDAwIDAwIDBDIDAwIDAwIDAwIDAwIDExIDBC
IDBBICAuLi4uLi4uLi4uLi4uLi4uCiAgICA2MjgwOiAwOCAwMiAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAxMSAwQiAwQSAwOCAwMiAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNjI5MDogMDAgMDAg
MDAgMDAgMDAgMTEgMEIgMEEgMDggMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDYyQTA6IDAwIDExIDBCIDBBIDA4IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDA4IDVG
IDUwICAuLi4uLi4uLi4uLi4uLl9QCiAgICA2MkIwOiA1MyA0NCAxMiAxOCAwMSAxMiAxNSAwNSAw
QSAwNSAwQSAwMCAwQyAwRSAwMCAwMCAgU0QuLi4uLi4uLi4uLi4uLgogICAgNjJDMDogMDAgMEMg
RkUgMDAgMDAgMDAgMEMgMDIgMDAgMDAgMDAgMDggNTAgNTAgNDMgNTYgIC4uLi4uLi4uLi4uLlBQ
Q1YKICAgIDYyRDA6IDBBIDAwIDE0IDBCIDVGIDUwIDUwIDQzIDAwIEE0IDUwIDUwIDQzIDU2IDA4
IDVGICAuLi4uX1BQQy4uUFBDVi5fCiAgICA2MkUwOiA0MyA1MCA0MyAxMiA0MCAxOSAxNyAwQSAx
NyAwQSAwMyAxMSAxNCAwQSAxMSA4MiAgQ1BDLkAuLi4uLi4uLi4uLgogICAgNjJGMDogMEMgMDAg
N0YgMDggMTggMDQgQjAgMDIgMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgIC4uLi4uLi4uLi4uLi4u
eS4KICAgIDYzMDA6IDExIDE0IDBBIDExIDgyIDBDIDAwIDdGIDA4IDEwIDA0IEIwIDAyIDAxIEMw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA2MzEwOiAwMCAwMCAwMCA3OSAwMCAxMSAxNCAwQSAx
MSA4MiAwQyAwMCA3RiAwOCAwOCAwNCAgLi4ueS4uLi4uLi4uLi4uLgogICAgNjMyMDogQjAgMDIg
MDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgIC4uLi4uLi4ueS4uLi4u
Li4KICAgIDYzMzA6IDAwIDdGIDA4IDAwIDA0IEIwIDAyIDAxIEMwIDAwIDAwIDAwIDAwIDc5IDAw
IDExICAuLi4uLi4uLi4uLi4ueS4uCiAgICA2MzQwOiAxNCAwQSAxMSA4MiAwQyAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNjM1MDogMDAgMDAg
NzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgMDggMTAgMDQgQjMgIC4ueS4uLi4uLi4uLi4u
Li4KICAgIDYzNjA6IDAyIDAxIEMwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0IDBBIDExIDgyIDBD
IDAwICAuLi4uLi4ueS4uLi4uLi4uCiAgICA2MzcwOiA3RiAwOCAwOCAwNCBCMyAwMiAwMSBDMCAw
MCAwMCAwMCAwMCA3OSAwMCAxMSAxNCAgLi4uLi4uLi4uLi4ueS4uLgogICAgNjM4MDogMEEgMTEg
ODIgMEMgMDAgN0YgMDggMDAgMDQgQjMgMDIgMDEgQzAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDYzOTA6IDAwIDc5IDAwIDExIDE0IDBBIDExIDgyIDBDIDAwIDAwIDAwIDAwIDAwIDAw
IDAwICAueS4uLi4uLi4uLi4uLi4uCiAgICA2M0EwOiAwMCAwMCAwMCAwMCAwMCAwMCA3OSAwMCAx
MSAxNCAwQSAxMSA4MiAwQyAwMCAwMCAgLi4uLi4ueS4uLi4uLi4uLgogICAgNjNCMDogMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgIC4uLi4uLi4uLi4ueS4u
Li4KICAgIDYzQzA6IDExIDgyIDBDIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA2M0QwOiA3OSAwMCAxMSAxNCAwQSAxMSA4MiAwQyAw
MCA3RiA0MCAwMCAwNCBFNyAwMCAwMCAgeS4uLi4uLi4uLkAuLi4uLgogICAgNjNFMDogMDAgMDAg
MDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgNDAgIC4uLi4ueS4uLi4uLi4u
LkAKICAgIDYzRjA6IDAwIDA0IEU4IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0IDBB
IDExICAuLi4uLi4uLi4ueS4uLi4uCiAgICA2NDAwOiA4MiAwQyAwMCA3RiAwMiAwMCAwNCBCNCAw
MiAwMSBDMCAwMCAwMCAwMCAwMCA3OSAgLi4uLi4uLi4uLi4uLi4ueQogICAgNjQxMDogMDAgMTEg
MTQgMEEgMTEgODIgMEMgMDAgN0YgMDEgMDAgMDQgQjEgMDIgMDEgQzAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDY0MjA6IDAwIDAwIDAwIDAwIDc5IDAwIDBDIDAxIDAwIDAwIDAwIDExIDE0IDBBIDEx
IDgyICAuLi4ueS4uLi4uLi4uLi4uCiAgICA2NDMwOiAwQyAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCA3OSAwMCAgLi4uLi4uLi4uLi4uLi55LgogICAgNjQ0MDogMTEgMTQg
MEEgMTEgODIgMEMgMDAgN0YgMDggMTggMDQgQjMgMDIgMDEgQzAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDY0NTA6IDAwIDAwIDAwIDc5IDAwIDExIDE0IDBBIDExIDgyIDBDIDAwIDAwIDAwIDAw
IDAwICAuLi55Li4uLi4uLi4uLi4uCiAgICA2NDYwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCA3
OSAwMCAwQyAyMSAwMiAwMCAwMCAwQyAgLi4uLi4uLi55Li4hLi4uLgogICAgNjQ3MDogNjkgMTAg
MDAgMDAgMTAgNDcgMzUgNUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAgNEMgIGkuLi4uRzVcLy5fU0Jf
UEwKICAgIDY0ODA6IDU0IDQ2IDQzIDMwIDMxIDQ1IDA4IDVGIDUwIDQzIDU0IDEyIDJDIDAyIDEx
IDE0ICBURkMwMUUuX1BDVC4sLi4uCiAgICA2NDkwOiAwQSAxMSA4MiAwQyAwMCA3RiA0MCAwMCAw
MCA2MiAwMCAwMSBDMCAwMCAwMCAwMCAgLi4uLi4uQC4uYi4uLi4uLgogICAgNjRBMDogMDAgNzkg
MDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgNDAgMDAgMDAgNjMgMDAgIC55Li4uLi4uLi4uQC4u
Yy4KICAgIDY0QjA6IDAxIEMwIDAwIDAwIDAwIDAwIDc5IDAwIDA4IDVGIDUwIDUzIDUzIDEyIDQ2
IDA2ICAuLi4uLi55Li5fUFNTLkYuCiAgICA2NEMwOiAwMyAxMiAyMCAwNiAwQyA2OCAxMCAwMCAw
MCAwQyBCMCAxMyAwMCAwMCAwQyAwMCAgLi4gLi5oLi4uLi4uLi4uLgogICAgNjREMDogMDAgMDAg
MDAgMEMgMDAgMDAgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMEMgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDY0RTA6IDAwIDAwIDEyIDIwIDA2IDBDIDk4IDA4IDAwIDAwIDBDIDA0IDA2IDAwIDAw
IDBDICAuLi4gLi4uLi4uLi4uLi4uCiAgICA2NEYwOiAwMCAwMCAwMCAwMCAwQyAwMCAwMCAwMCAw
MCAwQyAwMSAwMCAwMCAwMCAwQyAwMSAgLi4uLi4uLi4uLi4uLi4uLgogICAgNjUwMDogMDAgMDAg
MDAgMTIgMjAgMDYgMEMgREMgMDUgMDAgMDAgMEMgQ0YgMDMgMDAgMDAgIC4uLi4gLi4uLi4uLi4u
Li4KICAgIDY1MTA6IDBDIDAwIDAwIDAwIDAwIDBDIDAwIDAwIDAwIDAwIDBDIDAyIDAwIDAwIDAw
IDBDICAuLi4uLi4uLi4uLi4uLi4uCiAgICA2NTIwOiAwMiAwMCAwMCAwMCAwOCA1OCA1MCA1MyA1
MyAxMiA0QiAwRCAwMyAxMiA0NyAwNCAgLi4uLi5YUFNTLksuLi5HLgogICAgNjUzMDogMDggMEMg
NjggMTAgMDAgMDAgMEMgQjAgMTMgMDAgMDAgMEMgMDAgMDAgMDAgMDAgIC4uaC4uLi4uLi4uLi4u
Li4KICAgIDY1NDA6IDBDIDAwIDAwIDAwIDAwIDExIDBCIDBBIDA4IDAwIDAwIDAwIDAwIDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA2NTUwOiAwMCAxMSAwQiAwQSAwOCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAxMSAwQiAwQSAgLi4uLi4uLi4uLi4uLi4uLgogICAgNjU2MDogMDggMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMTEgMEIgMEEgMDggMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDY1NzA6IDAwIDAwIDAwIDAwIDAwIDEyIDQ3IDA0IDA4IDBDIDk4IDA4IDAwIDAwIDBD
IDA0ICAuLi4uLi5HLi4uLi4uLi4uCiAgICA2NTgwOiAwNiAwMCAwMCAwQyAwMCAwMCAwMCAwMCAw
QyAwMCAwMCAwMCAwMCAxMSAwQiAwQSAgLi4uLi4uLi4uLi4uLi4uLgogICAgNjU5MDogMDggMDEg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMTEgMEIgMEEgMDggMDEgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDY1QTA6IDAwIDAwIDAwIDAwIDAwIDExIDBCIDBBIDA4IDAwIDAwIDAwIDAwIDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA2NUIwOiAwMCAxMSAwQiAwQSAwOCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAxMiA0NyAwNCAgLi4uLi4uLi4uLi4uLi5HLgogICAgNjVDMDogMDggMEMg
REMgMDUgMDAgMDAgMEMgQ0YgMDMgMDAgMDAgMEMgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDY1RDA6IDBDIDAwIDAwIDAwIDAwIDExIDBCIDBBIDA4IDAyIDAwIDAwIDAwIDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA2NUUwOiAwMCAxMSAwQiAwQSAwOCAwMiAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAxMSAwQiAwQSAgLi4uLi4uLi4uLi4uLi4uLgogICAgNjVGMDogMDggMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMTEgMEIgMEEgMDggMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDY2MDA6IDAwIDAwIDAwIDAwIDAwIDA4IDVGIDUwIDUzIDQ0IDEyIDE4IDAxIDEyIDE1
IDA1ICAuLi4uLi5fUFNELi4uLi4uCiAgICA2NjEwOiAwQSAwNSAwQSAwMCAwQyAwRiAwMCAwMCAw
MCAwQyBGRSAwMCAwMCAwMCAwQyAwMiAgLi4uLi4uLi4uLi4uLi4uLgogICAgNjYyMDogMDAgMDAg
MDAgMDggNTAgNTAgNDMgNTYgMEEgMDAgMTQgMEIgNUYgNTAgNTAgNDMgIC4uLi5QUENWLi4uLl9Q
UEMKICAgIDY2MzA6IDAwIEE0IDUwIDUwIDQzIDU2IDA4IDVGIDQzIDUwIDQzIDEyIDQwIDE5IDE3
IDBBICAuLlBQQ1YuX0NQQy5ALi4uCiAgICA2NjQwOiAxNyAwQSAwMyAxMSAxNCAwQSAxMSA4MiAw
QyAwMCA3RiAwOCAxOCAwNCBCMCAwMiAgLi4uLi4uLi4uLi4uLi4uLgogICAgNjY1MDogMDEgQzAg
MDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgIC4uLi4uLnkuLi4uLi4u
Li4KICAgIDY2NjA6IDA4IDEwIDA0IEIwIDAyIDAxIEMwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0
IDBBICAuLi4uLi4uLi4uLnkuLi4uCiAgICA2NjcwOiAxMSA4MiAwQyAwMCA3RiAwOCAwOCAwNCBC
MCAwMiAwMSBDMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNjY4MDogNzkgMDAg
MTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgMDggMDAgMDQgQjAgMDIgMDEgIHkuLi4uLi4uLi4uLi4u
Li4KICAgIDY2OTA6IEMwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0IDBBIDExIDgyIDBDIDAwIDAw
IDAwICAuLi4uLnkuLi4uLi4uLi4uCiAgICA2NkEwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCA3OSAwMCAxMSAxNCAwQSAxMSAgLi4uLi4uLi4uLnkuLi4uLgogICAgNjZCMDogODIgMEMg
MDAgN0YgMDggMTAgMDQgQjMgMDIgMDEgQzAgMDAgMDAgMDAgMDAgNzkgIC4uLi4uLi4uLi4uLi4u
LnkKICAgIDY2QzA6IDAwIDExIDE0IDBBIDExIDgyIDBDIDAwIDdGIDA4IDA4IDA0IEIzIDAyIDAx
IEMwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA2NkQwOiAwMCAwMCAwMCAwMCA3OSAwMCAxMSAxNCAw
QSAxMSA4MiAwQyAwMCA3RiAwOCAwMCAgLi4uLnkuLi4uLi4uLi4uLgogICAgNjZFMDogMDQgQjMg
MDIgMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgIC4uLi4uLi4uLnkuLi4u
Li4KICAgIDY2RjA6IDBDIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDc5
IDAwICAuLi4uLi4uLi4uLi4uLnkuCiAgICA2NzAwOiAxMSAxNCAwQSAxMSA4MiAwQyAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNjcxMDogMDAgMDAg
MDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgMDAgMDAgMDAgMDAgIC4uLnkuLi4uLi4uLi4u
Li4KICAgIDY3MjA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0IDBBIDExIDgy
IDBDICAuLi4uLi4uLnkuLi4uLi4uCiAgICA2NzMwOiAwMCA3RiA0MCAwMCAwNCBFNyAwMCAwMCAw
MCAwMCAwMCAwMCAwMCA3OSAwMCAxMSAgLi5ALi4uLi4uLi4uLnkuLgogICAgNjc0MDogMTQgMEEg
MTEgODIgMEMgMDAgN0YgNDAgMDAgMDQgRTggMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi5ALi4uLi4u
Li4KICAgIDY3NTA6IDAwIDAwIDc5IDAwIDExIDE0IDBBIDExIDgyIDBDIDAwIDdGIDAyIDAwIDA0
IEI0ICAuLnkuLi4uLi4uLi4uLi4uCiAgICA2NzYwOiAwMiAwMSBDMCAwMCAwMCAwMCAwMCA3OSAw
MCAxMSAxNCAwQSAxMSA4MiAwQyAwMCAgLi4uLi4uLnkuLi4uLi4uLgogICAgNjc3MDogN0YgMDEg
MDAgMDQgQjEgMDIgMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgMEMgMDEgIC4uLi4uLi4uLi4uLnku
Li4KICAgIDY3ODA6IDAwIDAwIDAwIDExIDE0IDBBIDExIDgyIDBDIDAwIDAwIDAwIDAwIDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA2NzkwOiAwMCAwMCAwMCAwMCAwMCAwMCA3OSAwMCAx
MSAxNCAwQSAxMSA4MiAwQyAwMCA3RiAgLi4uLi4ueS4uLi4uLi4uLgogICAgNjdBMDogMDggMTgg
MDQgQjMgMDIgMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgIC4uLi4uLi4uLi4ueS4u
Li4KICAgIDY3QjA6IDExIDgyIDBDIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA2N0MwOiA3OSAwMCAwQyAyMSAwMiAwMCAwMCAwQyA2
OSAxMCAwMCAwMCAxMCA0NyAzNSA1QyAgeS4uIS4uLi5pLi4uLkc1XAogICAgNjdEMDogMkYgMDMg
NUYgNTMgNDIgNUYgNTAgNEMgNTQgNDYgNDMgMzAgMzEgNDYgMDggNUYgIC8uX1NCX1BMVEZDMDFG
Ll8KICAgIDY3RTA6IDUwIDQzIDU0IDEyIDJDIDAyIDExIDE0IDBBIDExIDgyIDBDIDAwIDdGIDQw
IDAwICBQQ1QuLC4uLi4uLi4uLkAuCiAgICA2N0YwOiAwMCA2MiAwMCAwMSBDMCAwMCAwMCAwMCAw
MCA3OSAwMCAxMSAxNCAwQSAxMSA4MiAgLmIuLi4uLi4ueS4uLi4uLgogICAgNjgwMDogMEMgMDAg
N0YgNDAgMDAgMDAgNjMgMDAgMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgIC4uLkAuLmMuLi4uLi4u
eS4KICAgIDY4MTA6IDA4IDVGIDUwIDUzIDUzIDEyIDQ2IDA2IDAzIDEyIDIwIDA2IDBDIDY4IDEw
IDAwICAuX1BTUy5GLi4uIC4uaC4uCiAgICA2ODIwOiAwMCAwQyBCMCAxMyAwMCAwMCAwQyAwMCAw
MCAwMCAwMCAwQyAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNjgzMDogMEMgMDAg
MDAgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMTIgMjAgMDYgMEMgOTggMDggIC4uLi4uLi4uLi4uIC4u
Li4KICAgIDY4NDA6IDAwIDAwIDBDIDA0IDA2IDAwIDAwIDBDIDAwIDAwIDAwIDAwIDBDIDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA2ODUwOiAwMCAwQyAwMSAwMCAwMCAwMCAwQyAwMSAw
MCAwMCAwMCAxMiAyMCAwNiAwQyBEQyAgLi4uLi4uLi4uLi4uIC4uLgogICAgNjg2MDogMDUgMDAg
MDAgMEMgQ0YgMDMgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMEMgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDY4NzA6IDAwIDAwIDBDIDAyIDAwIDAwIDAwIDBDIDAyIDAwIDAwIDAwIDA4IDU4IDUw
IDUzICAuLi4uLi4uLi4uLi4uWFBTCiAgICA2ODgwOiA1MyAxMiA0QiAwRCAwMyAxMiA0NyAwNCAw
OCAwQyA2OCAxMCAwMCAwMCAwQyBCMCAgUy5LLi4uRy4uLmguLi4uLgogICAgNjg5MDogMTMgMDAg
MDAgMEMgMDAgMDAgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMTEgMEIgMEEgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDY4QTA6IDA4IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDExIDBCIDBBIDA4IDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA2OEIwOiAwMCAwMCAwMCAwMCAwMCAxMSAwQiAwQSAw
OCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNjhDMDogMDAgMTEg
MEIgMEEgMDggMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMTIgNDcgMDQgIC4uLi4uLi4uLi4uLi4u
Ry4KICAgIDY4RDA6IDA4IDBDIDk4IDA4IDAwIDAwIDBDIDA0IDA2IDAwIDAwIDBDIDAwIDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA2OEUwOiAwQyAwMCAwMCAwMCAwMCAxMSAwQiAwQSAw
OCAwMSAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNjhGMDogMDAgMTEg
MEIgMEEgMDggMDEgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMTEgMEIgMEEgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDY5MDA6IDA4IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDExIDBCIDBBIDA4IDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA2OTEwOiAwMCAwMCAwMCAwMCAwMCAxMiA0NyAwNCAw
OCAwQyBEQyAwNSAwMCAwMCAwQyBDRiAgLi4uLi4uRy4uLi4uLi4uLgogICAgNjkyMDogMDMgMDAg
MDAgMEMgMDAgMDAgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMTEgMEIgMEEgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDY5MzA6IDA4IDAyIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDExIDBCIDBBIDA4IDAyIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA2OTQwOiAwMCAwMCAwMCAwMCAwMCAxMSAwQiAwQSAw
OCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNjk1MDogMDAgMTEg
MEIgMEEgMDggMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDggNUYgNTAgIC4uLi4uLi4uLi4uLi4u
X1AKICAgIDY5NjA6IDUzIDQ0IDEyIDE4IDAxIDEyIDE1IDA1IDBBIDA1IDBBIDAwIDBDIDBGIDAw
IDAwICBTRC4uLi4uLi4uLi4uLi4uCiAgICA2OTcwOiAwMCAwQyBGRSAwMCAwMCAwMCAwQyAwMiAw
MCAwMCAwMCAwOCA1MCA1MCA0MyA1NiAgLi4uLi4uLi4uLi4uUFBDVgogICAgNjk4MDogMEEgMDAg
MTQgMEIgNUYgNTAgNTAgNDMgMDAgQTQgNTAgNTAgNDMgNTYgMDggNUYgIC4uLi5fUFBDLi5QUENW
Ll8KICAgIDY5OTA6IDQzIDUwIDQzIDEyIDQwIDE5IDE3IDBBIDE3IDBBIDAzIDExIDE0IDBBIDEx
IDgyICBDUEMuQC4uLi4uLi4uLi4uCiAgICA2OUEwOiAwQyAwMCA3RiAwOCAxOCAwNCBCMCAwMiAw
MSBDMCAwMCAwMCAwMCAwMCA3OSAwMCAgLi4uLi4uLi4uLi4uLi55LgogICAgNjlCMDogMTEgMTQg
MEEgMTEgODIgMEMgMDAgN0YgMDggMTAgMDQgQjAgMDIgMDEgQzAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDY5QzA6IDAwIDAwIDAwIDc5IDAwIDExIDE0IDBBIDExIDgyIDBDIDAwIDdGIDA4IDA4
IDA0ICAuLi55Li4uLi4uLi4uLi4uCiAgICA2OUQwOiBCMCAwMiAwMSBDMCAwMCAwMCAwMCAwMCA3
OSAwMCAxMSAxNCAwQSAxMSA4MiAwQyAgLi4uLi4uLi55Li4uLi4uLgogICAgNjlFMDogMDAgN0Yg
MDggMDAgMDQgQjAgMDIgMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgIC4uLi4uLi4uLi4uLi55
Li4KICAgIDY5RjA6IDE0IDBBIDExIDgyIDBDIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA2QTAwOiAwMCAwMCA3OSAwMCAxMSAxNCAwQSAxMSA4
MiAwQyAwMCA3RiAwOCAxMCAwNCBCMyAgLi55Li4uLi4uLi4uLi4uLgogICAgNkExMDogMDIgMDEg
QzAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgIC4uLi4uLi55Li4uLi4u
Li4KICAgIDZBMjA6IDdGIDA4IDA4IDA0IEIzIDAyIDAxIEMwIDAwIDAwIDAwIDAwIDc5IDAwIDEx
IDE0ICAuLi4uLi4uLi4uLi55Li4uCiAgICA2QTMwOiAwQSAxMSA4MiAwQyAwMCA3RiAwOCAwMCAw
NCBCMyAwMiAwMSBDMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNkE0MDogMDAgNzkg
MDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC55Li4uLi4uLi4uLi4u
Li4KICAgIDZBNTA6IDAwIDAwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0IDBBIDExIDgyIDBDIDAw
IDAwICAuLi4uLi55Li4uLi4uLi4uCiAgICA2QTYwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCA3OSAwMCAxMSAxNCAwQSAgLi4uLi4uLi4uLi55Li4uLgogICAgNkE3MDogMTEgODIg
MEMgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDZBODA6IDc5IDAwIDExIDE0IDBBIDExIDgyIDBDIDAwIDdGIDQwIDAwIDA0IEU3IDAw
IDAwICB5Li4uLi4uLi4uQC4uLi4uCiAgICA2QTkwOiAwMCAwMCAwMCAwMCAwMCA3OSAwMCAxMSAx
NCAwQSAxMSA4MiAwQyAwMCA3RiA0MCAgLi4uLi55Li4uLi4uLi4uQAogICAgNkFBMDogMDAgMDQg
RTggMDAgMDAgMDAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgIC4uLi4uLi4uLi55Li4u
Li4KICAgIDZBQjA6IDgyIDBDIDAwIDdGIDAyIDAwIDA0IEI0IDAyIDAxIEMwIDAwIDAwIDAwIDAw
IDc5ICAuLi4uLi4uLi4uLi4uLi55CiAgICA2QUMwOiAwMCAxMSAxNCAwQSAxMSA4MiAwQyAwMCA3
RiAwMSAwMCAwNCBCMSAwMiAwMSBDMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNkFEMDogMDAgMDAg
MDAgMDAgNzkgMDAgMEMgMDEgMDAgMDAgMDAgMTEgMTQgMEEgMTEgODIgIC4uLi55Li4uLi4uLi4u
Li4KICAgIDZBRTA6IDBDIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDc5
IDAwICAuLi4uLi4uLi4uLi4uLnkuCiAgICA2QUYwOiAxMSAxNCAwQSAxMSA4MiAwQyAwMCA3RiAw
OCAxOCAwNCBCMyAwMiAwMSBDMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNkIwMDogMDAgMDAg
MDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgMDAgMDAgMDAgMDAgIC4uLnkuLi4uLi4uLi4u
Li4KICAgIDZCMTA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDc5IDAwIDBDIDIxIDAyIDAwIDAw
IDBDICAuLi4uLi4uLnkuLiEuLi4uCiAgICA2QjIwOiA2OSAxMCAwMCAwMCAxMCA0NyAzNSA1QyAy
RiAwMyA1RiA1MyA0MiA1RiA1MCA0QyAgaS4uLi5HNVwvLl9TQl9QTAogICAgNkIzMDogNTQgNDYg
NDMgMzAgMzIgMzAgMDggNUYgNTAgNDMgNTQgMTIgMkMgMDIgMTEgMTQgIFRGQzAyMC5fUENULiwu
Li4KICAgIDZCNDA6IDBBIDExIDgyIDBDIDAwIDdGIDQwIDAwIDAwIDYyIDAwIDAxIEMwIDAwIDAw
IDAwICAuLi4uLi5ALi5iLi4uLi4uCiAgICA2QjUwOiAwMCA3OSAwMCAxMSAxNCAwQSAxMSA4MiAw
QyAwMCA3RiA0MCAwMCAwMCA2MyAwMCAgLnkuLi4uLi4uLi5ALi5jLgogICAgNkI2MDogMDEgQzAg
MDAgMDAgMDAgMDAgNzkgMDAgMDggNUYgNTAgNTMgNTMgMTIgNDYgMDYgIC4uLi4uLnkuLl9QU1Mu
Ri4KICAgIDZCNzA6IDAzIDEyIDIwIDA2IDBDIDY4IDEwIDAwIDAwIDBDIEIwIDEzIDAwIDAwIDBD
IDAwICAuLiAuLmguLi4uLi4uLi4uCiAgICA2QjgwOiAwMCAwMCAwMCAwQyAwMCAwMCAwMCAwMCAw
QyAwMCAwMCAwMCAwMCAwQyAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNkI5MDogMDAgMDAg
MTIgMjAgMDYgMEMgOTggMDggMDAgMDAgMEMgMDQgMDYgMDAgMDAgMEMgIC4uLiAuLi4uLi4uLi4u
Li4KICAgIDZCQTA6IDAwIDAwIDAwIDAwIDBDIDAwIDAwIDAwIDAwIDBDIDAxIDAwIDAwIDAwIDBD
IDAxICAuLi4uLi4uLi4uLi4uLi4uCiAgICA2QkIwOiAwMCAwMCAwMCAxMiAyMCAwNiAwQyBEQyAw
NSAwMCAwMCAwQyBDRiAwMyAwMCAwMCAgLi4uLiAuLi4uLi4uLi4uLgogICAgNkJDMDogMEMgMDAg
MDAgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMEMgMDIgMDAgMDAgMDAgMEMgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDZCRDA6IDAyIDAwIDAwIDAwIDA4IDU4IDUwIDUzIDUzIDEyIDRCIDBEIDAzIDEyIDQ3
IDA0ICAuLi4uLlhQU1MuSy4uLkcuCiAgICA2QkUwOiAwOCAwQyA2OCAxMCAwMCAwMCAwQyBCMCAx
MyAwMCAwMCAwQyAwMCAwMCAwMCAwMCAgLi5oLi4uLi4uLi4uLi4uLgogICAgNkJGMDogMEMgMDAg
MDAgMDAgMDAgMTEgMEIgMEEgMDggMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDZDMDA6IDAwIDExIDBCIDBBIDA4IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDExIDBC
IDBBICAuLi4uLi4uLi4uLi4uLi4uCiAgICA2QzEwOiAwOCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAxMSAwQiAwQSAwOCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNkMyMDogMDAgMDAg
MDAgMDAgMDAgMTIgNDcgMDQgMDggMEMgOTggMDggMDAgMDAgMEMgMDQgIC4uLi4uLkcuLi4uLi4u
Li4KICAgIDZDMzA6IDA2IDAwIDAwIDBDIDAwIDAwIDAwIDAwIDBDIDAwIDAwIDAwIDAwIDExIDBC
IDBBICAuLi4uLi4uLi4uLi4uLi4uCiAgICA2QzQwOiAwOCAwMSAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAxMSAwQiAwQSAwOCAwMSAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNkM1MDogMDAgMDAg
MDAgMDAgMDAgMTEgMEIgMEEgMDggMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDZDNjA6IDAwIDExIDBCIDBBIDA4IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDEyIDQ3
IDA0ICAuLi4uLi4uLi4uLi4uLkcuCiAgICA2QzcwOiAwOCAwQyBEQyAwNSAwMCAwMCAwQyBDRiAw
MyAwMCAwMCAwQyAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNkM4MDogMEMgMDAg
MDAgMDAgMDAgMTEgMEIgMEEgMDggMDIgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDZDOTA6IDAwIDExIDBCIDBBIDA4IDAyIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDExIDBC
IDBBICAuLi4uLi4uLi4uLi4uLi4uCiAgICA2Q0EwOiAwOCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAxMSAwQiAwQSAwOCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNkNCMDogMDAgMDAg
MDAgMDAgMDAgMDggNUYgNTAgNTMgNDQgMTIgMTggMDEgMTIgMTUgMDUgIC4uLi4uLl9QU0QuLi4u
Li4KICAgIDZDQzA6IDBBIDA1IDBBIDAwIDBDIDEwIDAwIDAwIDAwIDBDIEZFIDAwIDAwIDAwIDBD
IDAyICAuLi4uLi4uLi4uLi4uLi4uCiAgICA2Q0QwOiAwMCAwMCAwMCAwOCA1MCA1MCA0MyA1NiAw
QSAwMCAxNCAwQiA1RiA1MCA1MCA0MyAgLi4uLlBQQ1YuLi4uX1BQQwogICAgNkNFMDogMDAgQTQg
NTAgNTAgNDMgNTYgMDggNUYgNDMgNTAgNDMgMTIgNDAgMTkgMTcgMEEgIC4uUFBDVi5fQ1BDLkAu
Li4KICAgIDZDRjA6IDE3IDBBIDAzIDExIDE0IDBBIDExIDgyIDBDIDAwIDdGIDA4IDE4IDA0IEIw
IDAyICAuLi4uLi4uLi4uLi4uLi4uCiAgICA2RDAwOiAwMSBDMCAwMCAwMCAwMCAwMCA3OSAwMCAx
MSAxNCAwQSAxMSA4MiAwQyAwMCA3RiAgLi4uLi4ueS4uLi4uLi4uLgogICAgNkQxMDogMDggMTAg
MDQgQjAgMDIgMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgIC4uLi4uLi4uLi4ueS4u
Li4KICAgIDZEMjA6IDExIDgyIDBDIDAwIDdGIDA4IDA4IDA0IEIwIDAyIDAxIEMwIDAwIDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA2RDMwOiA3OSAwMCAxMSAxNCAwQSAxMSA4MiAwQyAw
MCA3RiAwOCAwMCAwNCBCMCAwMiAwMSAgeS4uLi4uLi4uLi4uLi4uLgogICAgNkQ0MDogQzAgMDAg
MDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgMDAgMDAgIC4uLi4ueS4uLi4uLi4u
Li4KICAgIDZENTA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0IDBB
IDExICAuLi4uLi4uLi4ueS4uLi4uCiAgICA2RDYwOiA4MiAwQyAwMCA3RiAwOCAxMCAwNCBCMyAw
MiAwMSBDMCAwMCAwMCAwMCAwMCA3OSAgLi4uLi4uLi4uLi4uLi4ueQogICAgNkQ3MDogMDAgMTEg
MTQgMEEgMTEgODIgMEMgMDAgN0YgMDggMDggMDQgQjMgMDIgMDEgQzAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDZEODA6IDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0IDBBIDExIDgyIDBDIDAwIDdGIDA4
IDAwICAuLi4ueS4uLi4uLi4uLi4uCiAgICA2RDkwOiAwNCBCMyAwMiAwMSBDMCAwMCAwMCAwMCAw
MCA3OSAwMCAxMSAxNCAwQSAxMSA4MiAgLi4uLi4uLi4ueS4uLi4uLgogICAgNkRBMDogMEMgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgNzkgMDAgIC4uLi4uLi4uLi4uLi4u
eS4KICAgIDZEQjA6IDExIDE0IDBBIDExIDgyIDBDIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA2REMwOiAwMCAwMCAwMCA3OSAwMCAxMSAxNCAwQSAx
MSA4MiAwQyAwMCAwMCAwMCAwMCAwMCAgLi4ueS4uLi4uLi4uLi4uLgogICAgNkREMDogMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgIC4uLi4uLi4ueS4uLi4u
Li4KICAgIDZERTA6IDAwIDdGIDQwIDAwIDA0IEU3IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDc5IDAw
IDExICAuLkAuLi4uLi4uLi4ueS4uCiAgICA2REYwOiAxNCAwQSAxMSA4MiAwQyAwMCA3RiA0MCAw
MCAwNCBFOCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLkAuLi4uLi4uLgogICAgNkUwMDogMDAgMDAg
NzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgMDIgMDAgMDQgQjQgIC4ueS4uLi4uLi4uLi4u
Li4KICAgIDZFMTA6IDAyIDAxIEMwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0IDBBIDExIDgyIDBD
IDAwICAuLi4uLi4ueS4uLi4uLi4uCiAgICA2RTIwOiA3RiAwMSAwMCAwNCBCMSAwMiAwMSBDMCAw
MCAwMCAwMCAwMCA3OSAwMCAwQyAwMSAgLi4uLi4uLi4uLi4ueS4uLgogICAgNkUzMDogMDAgMDAg
MDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDZFNDA6IDAwIDAwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0IDBBIDExIDgyIDBDIDAw
IDdGICAuLi4uLi55Li4uLi4uLi4uCiAgICA2RTUwOiAwOCAxOCAwNCBCMyAwMiAwMSBDMCAwMCAw
MCAwMCAwMCA3OSAwMCAxMSAxNCAwQSAgLi4uLi4uLi4uLi55Li4uLgogICAgNkU2MDogMTEgODIg
MEMgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDZFNzA6IDc5IDAwIDBDIDIxIDAyIDAwIDAwIDBDIDY5IDEwIDAwIDAwIDEwIDQ3IDM1
IDVDICB5Li4hLi4uLmkuLi4uRzVcCiAgICA2RTgwOiAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0QyA1
NCA0NiA0MyAzMCAzMiAzMSAwOCA1RiAgLy5fU0JfUExURkMwMjEuXwogICAgNkU5MDogNTAgNDMg
NTQgMTIgMkMgMDIgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgNDAgMDAgIFBDVC4sLi4uLi4uLi4u
QC4KICAgIDZFQTA6IDAwIDYyIDAwIDAxIEMwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0IDBBIDEx
IDgyICAuYi4uLi4uLi55Li4uLi4uCiAgICA2RUIwOiAwQyAwMCA3RiA0MCAwMCAwMCA2MyAwMCAw
MSBDMCAwMCAwMCAwMCAwMCA3OSAwMCAgLi4uQC4uYy4uLi4uLi55LgogICAgNkVDMDogMDggNUYg
NTAgNTMgNTMgMTIgNDYgMDYgMDMgMTIgMjAgMDYgMEMgNjggMTAgMDAgIC5fUFNTLkYuLi4gLi5o
Li4KICAgIDZFRDA6IDAwIDBDIEIwIDEzIDAwIDAwIDBDIDAwIDAwIDAwIDAwIDBDIDAwIDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA2RUUwOiAwQyAwMCAwMCAwMCAwMCAwQyAwMCAwMCAw
MCAwMCAxMiAyMCAwNiAwQyA5OCAwOCAgLi4uLi4uLi4uLi4gLi4uLgogICAgNkVGMDogMDAgMDAg
MEMgMDQgMDYgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMEMgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDZGMDA6IDAwIDBDIDAxIDAwIDAwIDAwIDBDIDAxIDAwIDAwIDAwIDEyIDIwIDA2IDBD
IERDICAuLi4uLi4uLi4uLi4gLi4uCiAgICA2RjEwOiAwNSAwMCAwMCAwQyBDRiAwMyAwMCAwMCAw
QyAwMCAwMCAwMCAwMCAwQyAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNkYyMDogMDAgMDAg
MEMgMDIgMDAgMDAgMDAgMEMgMDIgMDAgMDAgMDAgMDggNTggNTAgNTMgIC4uLi4uLi4uLi4uLi5Y
UFMKICAgIDZGMzA6IDUzIDEyIDRCIDBEIDAzIDEyIDQ3IDA0IDA4IDBDIDY4IDEwIDAwIDAwIDBD
IEIwICBTLksuLi5HLi4uaC4uLi4uCiAgICA2RjQwOiAxMyAwMCAwMCAwQyAwMCAwMCAwMCAwMCAw
QyAwMCAwMCAwMCAwMCAxMSAwQiAwQSAgLi4uLi4uLi4uLi4uLi4uLgogICAgNkY1MDogMDggMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMTEgMEIgMEEgMDggMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDZGNjA6IDAwIDAwIDAwIDAwIDAwIDExIDBCIDBBIDA4IDAwIDAwIDAwIDAwIDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA2RjcwOiAwMCAxMSAwQiAwQSAwOCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAxMiA0NyAwNCAgLi4uLi4uLi4uLi4uLi5HLgogICAgNkY4MDogMDggMEMg
OTggMDggMDAgMDAgMEMgMDQgMDYgMDAgMDAgMEMgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDZGOTA6IDBDIDAwIDAwIDAwIDAwIDExIDBCIDBBIDA4IDAxIDAwIDAwIDAwIDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA2RkEwOiAwMCAxMSAwQiAwQSAwOCAwMSAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAxMSAwQiAwQSAgLi4uLi4uLi4uLi4uLi4uLgogICAgNkZCMDogMDggMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMTEgMEIgMEEgMDggMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDZGQzA6IDAwIDAwIDAwIDAwIDAwIDEyIDQ3IDA0IDA4IDBDIERDIDA1IDAwIDAwIDBD
IENGICAuLi4uLi5HLi4uLi4uLi4uCiAgICA2RkQwOiAwMyAwMCAwMCAwQyAwMCAwMCAwMCAwMCAw
QyAwMCAwMCAwMCAwMCAxMSAwQiAwQSAgLi4uLi4uLi4uLi4uLi4uLgogICAgNkZFMDogMDggMDIg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMTEgMEIgMEEgMDggMDIgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDZGRjA6IDAwIDAwIDAwIDAwIDAwIDExIDBCIDBBIDA4IDAwIDAwIDAwIDAwIDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA3MDAwOiAwMCAxMSAwQiAwQSAwOCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwOCA1RiA1MCAgLi4uLi4uLi4uLi4uLi5fUAogICAgNzAxMDogNTMgNDQg
MTIgMTggMDEgMTIgMTUgMDUgMEEgMDUgMEEgMDAgMEMgMTAgMDAgMDAgIFNELi4uLi4uLi4uLi4u
Li4KICAgIDcwMjA6IDAwIDBDIEZFIDAwIDAwIDAwIDBDIDAyIDAwIDAwIDAwIDA4IDUwIDUwIDQz
IDU2ICAuLi4uLi4uLi4uLi5QUENWCiAgICA3MDMwOiAwQSAwMCAxNCAwQiA1RiA1MCA1MCA0MyAw
MCBBNCA1MCA1MCA0MyA1NiAwOCA1RiAgLi4uLl9QUEMuLlBQQ1YuXwogICAgNzA0MDogNDMgNTAg
NDMgMTIgNDAgMTkgMTcgMEEgMTcgMEEgMDMgMTEgMTQgMEEgMTEgODIgIENQQy5ALi4uLi4uLi4u
Li4KICAgIDcwNTA6IDBDIDAwIDdGIDA4IDE4IDA0IEIwIDAyIDAxIEMwIDAwIDAwIDAwIDAwIDc5
IDAwICAuLi4uLi4uLi4uLi4uLnkuCiAgICA3MDYwOiAxMSAxNCAwQSAxMSA4MiAwQyAwMCA3RiAw
OCAxMCAwNCBCMCAwMiAwMSBDMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNzA3MDogMDAgMDAg
MDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgMDggMDggMDQgIC4uLnkuLi4uLi4uLi4u
Li4KICAgIDcwODA6IEIwIDAyIDAxIEMwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0IDBBIDExIDgy
IDBDICAuLi4uLi4uLnkuLi4uLi4uCiAgICA3MDkwOiAwMCA3RiAwOCAwMCAwNCBCMCAwMiAwMSBD
MCAwMCAwMCAwMCAwMCA3OSAwMCAxMSAgLi4uLi4uLi4uLi4uLnkuLgogICAgNzBBMDogMTQgMEEg
MTEgODIgMEMgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDcwQjA6IDAwIDAwIDc5IDAwIDExIDE0IDBBIDExIDgyIDBDIDAwIDdGIDA4IDEwIDA0
IEIzICAuLnkuLi4uLi4uLi4uLi4uCiAgICA3MEMwOiAwMiAwMSBDMCAwMCAwMCAwMCAwMCA3OSAw
MCAxMSAxNCAwQSAxMSA4MiAwQyAwMCAgLi4uLi4uLnkuLi4uLi4uLgogICAgNzBEMDogN0YgMDgg
MDggMDQgQjMgMDIgMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgIC4uLi4uLi4uLi4uLnku
Li4KICAgIDcwRTA6IDBBIDExIDgyIDBDIDAwIDdGIDA4IDAwIDA0IEIzIDAyIDAxIEMwIDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA3MEYwOiAwMCA3OSAwMCAxMSAxNCAwQSAxMSA4MiAw
QyAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLnkuLi4uLi4uLi4uLi4uLgogICAgNzEwMDogMDAgMDAg
MDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgMDAgIC4uLi4uLnkuLi4uLi4u
Li4KICAgIDcxMTA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0
IDBBICAuLi4uLi4uLi4uLnkuLi4uCiAgICA3MTIwOiAxMSA4MiAwQyAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNzEzMDogNzkgMDAg
MTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgNDAgMDAgMDQgRTcgMDAgMDAgIHkuLi4uLi4uLi5ALi4u
Li4KICAgIDcxNDA6IDAwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0IDBBIDExIDgyIDBDIDAwIDdG
IDQwICAuLi4uLnkuLi4uLi4uLi5ACiAgICA3MTUwOiAwMCAwNCBFOCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCA3OSAwMCAxMSAxNCAwQSAxMSAgLi4uLi4uLi4uLnkuLi4uLgogICAgNzE2MDogODIgMEMg
MDAgN0YgMDIgMDAgMDQgQjQgMDIgMDEgQzAgMDAgMDAgMDAgMDAgNzkgIC4uLi4uLi4uLi4uLi4u
LnkKICAgIDcxNzA6IDAwIDExIDE0IDBBIDExIDgyIDBDIDAwIDdGIDAxIDAwIDA0IEIxIDAyIDAx
IEMwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA3MTgwOiAwMCAwMCAwMCAwMCA3OSAwMCAwQyAwMSAw
MCAwMCAwMCAxMSAxNCAwQSAxMSA4MiAgLi4uLnkuLi4uLi4uLi4uLgogICAgNzE5MDogMEMgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgNzkgMDAgIC4uLi4uLi4uLi4uLi4u
eS4KICAgIDcxQTA6IDExIDE0IDBBIDExIDgyIDBDIDAwIDdGIDA4IDE4IDA0IEIzIDAyIDAxIEMw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA3MUIwOiAwMCAwMCAwMCA3OSAwMCAxMSAxNCAwQSAx
MSA4MiAwQyAwMCAwMCAwMCAwMCAwMCAgLi4ueS4uLi4uLi4uLi4uLgogICAgNzFDMDogMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgNzkgMDAgMEMgMjEgMDIgMDAgMDAgMEMgIC4uLi4uLi4ueS4uIS4u
Li4KICAgIDcxRDA6IDY5IDEwIDAwIDAwIDEwIDQ3IDM1IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUw
IDRDICBpLi4uLkc1XC8uX1NCX1BMCiAgICA3MUUwOiA1NCA0NiA0MyAzMCAzMiAzMiAwOCA1RiA1
MCA0MyA1NCAxMiAyQyAwMiAxMSAxNCAgVEZDMDIyLl9QQ1QuLC4uLgogICAgNzFGMDogMEEgMTEg
ODIgMEMgMDAgN0YgNDAgMDAgMDAgNjIgMDAgMDEgQzAgMDAgMDAgMDAgIC4uLi4uLkAuLmIuLi4u
Li4KICAgIDcyMDA6IDAwIDc5IDAwIDExIDE0IDBBIDExIDgyIDBDIDAwIDdGIDQwIDAwIDAwIDYz
IDAwICAueS4uLi4uLi4uLkAuLmMuCiAgICA3MjEwOiAwMSBDMCAwMCAwMCAwMCAwMCA3OSAwMCAw
OCA1RiA1MCA1MyA1MyAxMiA0NiAwNiAgLi4uLi4ueS4uX1BTUy5GLgogICAgNzIyMDogMDMgMTIg
MjAgMDYgMEMgNjggMTAgMDAgMDAgMEMgQjAgMTMgMDAgMDAgMEMgMDAgIC4uIC4uaC4uLi4uLi4u
Li4KICAgIDcyMzA6IDAwIDAwIDAwIDBDIDAwIDAwIDAwIDAwIDBDIDAwIDAwIDAwIDAwIDBDIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA3MjQwOiAwMCAwMCAxMiAyMCAwNiAwQyA5OCAwOCAw
MCAwMCAwQyAwNCAwNiAwMCAwMCAwQyAgLi4uIC4uLi4uLi4uLi4uLgogICAgNzI1MDogMDAgMDAg
MDAgMDAgMEMgMDAgMDAgMDAgMDAgMEMgMDEgMDAgMDAgMDAgMEMgMDEgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDcyNjA6IDAwIDAwIDAwIDEyIDIwIDA2IDBDIERDIDA1IDAwIDAwIDBDIENGIDAzIDAw
IDAwICAuLi4uIC4uLi4uLi4uLi4uCiAgICA3MjcwOiAwQyAwMCAwMCAwMCAwMCAwQyAwMCAwMCAw
MCAwMCAwQyAwMiAwMCAwMCAwMCAwQyAgLi4uLi4uLi4uLi4uLi4uLgogICAgNzI4MDogMDIgMDAg
MDAgMDAgMDggNTggNTAgNTMgNTMgMTIgNEIgMEQgMDMgMTIgNDcgMDQgIC4uLi4uWFBTUy5LLi4u
Ry4KICAgIDcyOTA6IDA4IDBDIDY4IDEwIDAwIDAwIDBDIEIwIDEzIDAwIDAwIDBDIDAwIDAwIDAw
IDAwICAuLmguLi4uLi4uLi4uLi4uCiAgICA3MkEwOiAwQyAwMCAwMCAwMCAwMCAxMSAwQiAwQSAw
OCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNzJCMDogMDAgMTEg
MEIgMEEgMDggMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMTEgMEIgMEEgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDcyQzA6IDA4IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDExIDBCIDBBIDA4IDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA3MkQwOiAwMCAwMCAwMCAwMCAwMCAxMiA0NyAwNCAw
OCAwQyA5OCAwOCAwMCAwMCAwQyAwNCAgLi4uLi4uRy4uLi4uLi4uLgogICAgNzJFMDogMDYgMDAg
MDAgMEMgMDAgMDAgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMTEgMEIgMEEgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDcyRjA6IDA4IDAxIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDExIDBCIDBBIDA4IDAxIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA3MzAwOiAwMCAwMCAwMCAwMCAwMCAxMSAwQiAwQSAw
OCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNzMxMDogMDAgMTEg
MEIgMEEgMDggMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMTIgNDcgMDQgIC4uLi4uLi4uLi4uLi4u
Ry4KICAgIDczMjA6IDA4IDBDIERDIDA1IDAwIDAwIDBDIENGIDAzIDAwIDAwIDBDIDAwIDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA3MzMwOiAwQyAwMCAwMCAwMCAwMCAxMSAwQiAwQSAw
OCAwMiAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNzM0MDogMDAgMTEg
MEIgMEEgMDggMDIgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMTEgMEIgMEEgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDczNTA6IDA4IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDExIDBCIDBBIDA4IDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA3MzYwOiAwMCAwMCAwMCAwMCAwMCAwOCA1RiA1MCA1
MyA0NCAxMiAxOCAwMSAxMiAxNSAwNSAgLi4uLi4uX1BTRC4uLi4uLgogICAgNzM3MDogMEEgMDUg
MEEgMDAgMEMgMTEgMDAgMDAgMDAgMEMgRkUgMDAgMDAgMDAgMEMgMDIgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDczODA6IDAwIDAwIDAwIDA4IDUwIDUwIDQzIDU2IDBBIDAwIDE0IDBCIDVGIDUwIDUw
IDQzICAuLi4uUFBDVi4uLi5fUFBDCiAgICA3MzkwOiAwMCBBNCA1MCA1MCA0MyA1NiAwOCA1RiA0
MyA1MCA0MyAxMiA0MCAxOSAxNyAwQSAgLi5QUENWLl9DUEMuQC4uLgogICAgNzNBMDogMTcgMEEg
MDMgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgMDggMTggMDQgQjAgMDIgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDczQjA6IDAxIEMwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0IDBBIDExIDgyIDBDIDAw
IDdGICAuLi4uLi55Li4uLi4uLi4uCiAgICA3M0MwOiAwOCAxMCAwNCBCMCAwMiAwMSBDMCAwMCAw
MCAwMCAwMCA3OSAwMCAxMSAxNCAwQSAgLi4uLi4uLi4uLi55Li4uLgogICAgNzNEMDogMTEgODIg
MEMgMDAgN0YgMDggMDggMDQgQjAgMDIgMDEgQzAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDczRTA6IDc5IDAwIDExIDE0IDBBIDExIDgyIDBDIDAwIDdGIDA4IDAwIDA0IEIwIDAy
IDAxICB5Li4uLi4uLi4uLi4uLi4uCiAgICA3M0YwOiBDMCAwMCAwMCAwMCAwMCA3OSAwMCAxMSAx
NCAwQSAxMSA4MiAwQyAwMCAwMCAwMCAgLi4uLi55Li4uLi4uLi4uLgogICAgNzQwMDogMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgIC4uLi4uLi4uLi55Li4u
Li4KICAgIDc0MTA6IDgyIDBDIDAwIDdGIDA4IDEwIDA0IEIzIDAyIDAxIEMwIDAwIDAwIDAwIDAw
IDc5ICAuLi4uLi4uLi4uLi4uLi55CiAgICA3NDIwOiAwMCAxMSAxNCAwQSAxMSA4MiAwQyAwMCA3
RiAwOCAwOCAwNCBCMyAwMiAwMSBDMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNzQzMDogMDAgMDAg
MDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgMDggMDAgIC4uLi55Li4uLi4uLi4u
Li4KICAgIDc0NDA6IDA0IEIzIDAyIDAxIEMwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0IDBBIDEx
IDgyICAuLi4uLi4uLi55Li4uLi4uCiAgICA3NDUwOiAwQyAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCA3OSAwMCAgLi4uLi4uLi4uLi4uLi55LgogICAgNzQ2MDogMTEgMTQg
MEEgMTEgODIgMEMgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDc0NzA6IDAwIDAwIDAwIDc5IDAwIDExIDE0IDBBIDExIDgyIDBDIDAwIDAwIDAwIDAw
IDAwICAuLi55Li4uLi4uLi4uLi4uCiAgICA3NDgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCA3
OSAwMCAxMSAxNCAwQSAxMSA4MiAwQyAgLi4uLi4uLi55Li4uLi4uLgogICAgNzQ5MDogMDAgN0Yg
NDAgMDAgMDQgRTcgMDAgMDAgMDAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgIC4uQC4uLi4uLi4uLi55
Li4KICAgIDc0QTA6IDE0IDBBIDExIDgyIDBDIDAwIDdGIDQwIDAwIDA0IEU4IDAwIDAwIDAwIDAw
IDAwICAuLi4uLi4uQC4uLi4uLi4uCiAgICA3NEIwOiAwMCAwMCA3OSAwMCAxMSAxNCAwQSAxMSA4
MiAwQyAwMCA3RiAwMiAwMCAwNCBCNCAgLi55Li4uLi4uLi4uLi4uLgogICAgNzRDMDogMDIgMDEg
QzAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgIC4uLi4uLi55Li4uLi4u
Li4KICAgIDc0RDA6IDdGIDAxIDAwIDA0IEIxIDAyIDAxIEMwIDAwIDAwIDAwIDAwIDc5IDAwIDBD
IDAxICAuLi4uLi4uLi4uLi55Li4uCiAgICA3NEUwOiAwMCAwMCAwMCAxMSAxNCAwQSAxMSA4MiAw
QyAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNzRGMDogMDAgMDAg
MDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgIC4uLi4uLnkuLi4uLi4u
Li4KICAgIDc1MDA6IDA4IDE4IDA0IEIzIDAyIDAxIEMwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0
IDBBICAuLi4uLi4uLi4uLnkuLi4uCiAgICA3NTEwOiAxMSA4MiAwQyAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNzUyMDogNzkgMDAg
MEMgMjEgMDIgMDAgMDAgMEMgNjkgMTAgMDAgMDAgMTAgNDcgMzUgNUMgIHkuLiEuLi4uaS4uLi5H
NVwKICAgIDc1MzA6IDJGIDAzIDVGIDUzIDQyIDVGIDUwIDRDIDU0IDQ2IDQzIDMwIDMyIDMzIDA4
IDVGICAvLl9TQl9QTFRGQzAyMy5fCiAgICA3NTQwOiA1MCA0MyA1NCAxMiAyQyAwMiAxMSAxNCAw
QSAxMSA4MiAwQyAwMCA3RiA0MCAwMCAgUENULiwuLi4uLi4uLi5ALgogICAgNzU1MDogMDAgNjIg
MDAgMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgIC5iLi4uLi4uLnkuLi4u
Li4KICAgIDc1NjA6IDBDIDAwIDdGIDQwIDAwIDAwIDYzIDAwIDAxIEMwIDAwIDAwIDAwIDAwIDc5
IDAwICAuLi5ALi5jLi4uLi4uLnkuCiAgICA3NTcwOiAwOCA1RiA1MCA1MyA1MyAxMiA0NiAwNiAw
MyAxMiAyMCAwNiAwQyA2OCAxMCAwMCAgLl9QU1MuRi4uLiAuLmguLgogICAgNzU4MDogMDAgMEMg
QjAgMTMgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMEMgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDc1OTA6IDBDIDAwIDAwIDAwIDAwIDBDIDAwIDAwIDAwIDAwIDEyIDIwIDA2IDBDIDk4
IDA4ICAuLi4uLi4uLi4uLiAuLi4uCiAgICA3NUEwOiAwMCAwMCAwQyAwNCAwNiAwMCAwMCAwQyAw
MCAwMCAwMCAwMCAwQyAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNzVCMDogMDAgMEMg
MDEgMDAgMDAgMDAgMEMgMDEgMDAgMDAgMDAgMTIgMjAgMDYgMEMgREMgIC4uLi4uLi4uLi4uLiAu
Li4KICAgIDc1QzA6IDA1IDAwIDAwIDBDIENGIDAzIDAwIDAwIDBDIDAwIDAwIDAwIDAwIDBDIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA3NUQwOiAwMCAwMCAwQyAwMiAwMCAwMCAwMCAwQyAw
MiAwMCAwMCAwMCAwOCA1OCA1MCA1MyAgLi4uLi4uLi4uLi4uLlhQUwogICAgNzVFMDogNTMgMTIg
NEIgMEQgMDMgMTIgNDcgMDQgMDggMEMgNjggMTAgMDAgMDAgMEMgQjAgIFMuSy4uLkcuLi5oLi4u
Li4KICAgIDc1RjA6IDEzIDAwIDAwIDBDIDAwIDAwIDAwIDAwIDBDIDAwIDAwIDAwIDAwIDExIDBC
IDBBICAuLi4uLi4uLi4uLi4uLi4uCiAgICA3NjAwOiAwOCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAxMSAwQiAwQSAwOCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNzYxMDogMDAgMDAg
MDAgMDAgMDAgMTEgMEIgMEEgMDggMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDc2MjA6IDAwIDExIDBCIDBBIDA4IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDEyIDQ3
IDA0ICAuLi4uLi4uLi4uLi4uLkcuCiAgICA3NjMwOiAwOCAwQyA5OCAwOCAwMCAwMCAwQyAwNCAw
NiAwMCAwMCAwQyAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNzY0MDogMEMgMDAg
MDAgMDAgMDAgMTEgMEIgMEEgMDggMDEgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDc2NTA6IDAwIDExIDBCIDBBIDA4IDAxIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDExIDBC
IDBBICAuLi4uLi4uLi4uLi4uLi4uCiAgICA3NjYwOiAwOCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAxMSAwQiAwQSAwOCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNzY3MDogMDAgMDAg
MDAgMDAgMDAgMTIgNDcgMDQgMDggMEMgREMgMDUgMDAgMDAgMEMgQ0YgIC4uLi4uLkcuLi4uLi4u
Li4KICAgIDc2ODA6IDAzIDAwIDAwIDBDIDAwIDAwIDAwIDAwIDBDIDAwIDAwIDAwIDAwIDExIDBC
IDBBICAuLi4uLi4uLi4uLi4uLi4uCiAgICA3NjkwOiAwOCAwMiAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAxMSAwQiAwQSAwOCAwMiAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNzZBMDogMDAgMDAg
MDAgMDAgMDAgMTEgMEIgMEEgMDggMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDc2QjA6IDAwIDExIDBCIDBBIDA4IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDA4IDVG
IDUwICAuLi4uLi4uLi4uLi4uLl9QCiAgICA3NkMwOiA1MyA0NCAxMiAxOCAwMSAxMiAxNSAwNSAw
QSAwNSAwQSAwMCAwQyAxMSAwMCAwMCAgU0QuLi4uLi4uLi4uLi4uLgogICAgNzZEMDogMDAgMEMg
RkUgMDAgMDAgMDAgMEMgMDIgMDAgMDAgMDAgMDggNTAgNTAgNDMgNTYgIC4uLi4uLi4uLi4uLlBQ
Q1YKICAgIDc2RTA6IDBBIDAwIDE0IDBCIDVGIDUwIDUwIDQzIDAwIEE0IDUwIDUwIDQzIDU2IDA4
IDVGICAuLi4uX1BQQy4uUFBDVi5fCiAgICA3NkYwOiA0MyA1MCA0MyAxMiA0MCAxOSAxNyAwQSAx
NyAwQSAwMyAxMSAxNCAwQSAxMSA4MiAgQ1BDLkAuLi4uLi4uLi4uLgogICAgNzcwMDogMEMgMDAg
N0YgMDggMTggMDQgQjAgMDIgMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgIC4uLi4uLi4uLi4uLi4u
eS4KICAgIDc3MTA6IDExIDE0IDBBIDExIDgyIDBDIDAwIDdGIDA4IDEwIDA0IEIwIDAyIDAxIEMw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA3NzIwOiAwMCAwMCAwMCA3OSAwMCAxMSAxNCAwQSAx
MSA4MiAwQyAwMCA3RiAwOCAwOCAwNCAgLi4ueS4uLi4uLi4uLi4uLgogICAgNzczMDogQjAgMDIg
MDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgIC4uLi4uLi4ueS4uLi4u
Li4KICAgIDc3NDA6IDAwIDdGIDA4IDAwIDA0IEIwIDAyIDAxIEMwIDAwIDAwIDAwIDAwIDc5IDAw
IDExICAuLi4uLi4uLi4uLi4ueS4uCiAgICA3NzUwOiAxNCAwQSAxMSA4MiAwQyAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNzc2MDogMDAgMDAg
NzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgMDggMTAgMDQgQjMgIC4ueS4uLi4uLi4uLi4u
Li4KICAgIDc3NzA6IDAyIDAxIEMwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0IDBBIDExIDgyIDBD
IDAwICAuLi4uLi4ueS4uLi4uLi4uCiAgICA3NzgwOiA3RiAwOCAwOCAwNCBCMyAwMiAwMSBDMCAw
MCAwMCAwMCAwMCA3OSAwMCAxMSAxNCAgLi4uLi4uLi4uLi4ueS4uLgogICAgNzc5MDogMEEgMTEg
ODIgMEMgMDAgN0YgMDggMDAgMDQgQjMgMDIgMDEgQzAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDc3QTA6IDAwIDc5IDAwIDExIDE0IDBBIDExIDgyIDBDIDAwIDAwIDAwIDAwIDAwIDAw
IDAwICAueS4uLi4uLi4uLi4uLi4uCiAgICA3N0IwOiAwMCAwMCAwMCAwMCAwMCAwMCA3OSAwMCAx
MSAxNCAwQSAxMSA4MiAwQyAwMCAwMCAgLi4uLi4ueS4uLi4uLi4uLgogICAgNzdDMDogMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgIC4uLi4uLi4uLi4ueS4u
Li4KICAgIDc3RDA6IDExIDgyIDBDIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA3N0UwOiA3OSAwMCAxMSAxNCAwQSAxMSA4MiAwQyAw
MCA3RiA0MCAwMCAwNCBFNyAwMCAwMCAgeS4uLi4uLi4uLkAuLi4uLgogICAgNzdGMDogMDAgMDAg
MDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgNDAgIC4uLi4ueS4uLi4uLi4u
LkAKICAgIDc4MDA6IDAwIDA0IEU4IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0IDBB
IDExICAuLi4uLi4uLi4ueS4uLi4uCiAgICA3ODEwOiA4MiAwQyAwMCA3RiAwMiAwMCAwNCBCNCAw
MiAwMSBDMCAwMCAwMCAwMCAwMCA3OSAgLi4uLi4uLi4uLi4uLi4ueQogICAgNzgyMDogMDAgMTEg
MTQgMEEgMTEgODIgMEMgMDAgN0YgMDEgMDAgMDQgQjEgMDIgMDEgQzAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDc4MzA6IDAwIDAwIDAwIDAwIDc5IDAwIDBDIDAxIDAwIDAwIDAwIDExIDE0IDBBIDEx
IDgyICAuLi4ueS4uLi4uLi4uLi4uCiAgICA3ODQwOiAwQyAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCA3OSAwMCAgLi4uLi4uLi4uLi4uLi55LgogICAgNzg1MDogMTEgMTQg
MEEgMTEgODIgMEMgMDAgN0YgMDggMTggMDQgQjMgMDIgMDEgQzAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDc4NjA6IDAwIDAwIDAwIDc5IDAwIDExIDE0IDBBIDExIDgyIDBDIDAwIDAwIDAwIDAw
IDAwICAuLi55Li4uLi4uLi4uLi4uCiAgICA3ODcwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCA3
OSAwMCAwQyAyMSAwMiAwMCAwMCAwQyAgLi4uLi4uLi55Li4hLi4uLgogICAgNzg4MDogNjkgMTAg
MDAgMDAgMTAgNDcgMzUgNUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAgNEMgIGkuLi4uRzVcLy5fU0Jf
UEwKICAgIDc4OTA6IDU0IDQ2IDQzIDMwIDMyIDM0IDA4IDVGIDUwIDQzIDU0IDEyIDJDIDAyIDEx
IDE0ICBURkMwMjQuX1BDVC4sLi4uCiAgICA3OEEwOiAwQSAxMSA4MiAwQyAwMCA3RiA0MCAwMCAw
MCA2MiAwMCAwMSBDMCAwMCAwMCAwMCAgLi4uLi4uQC4uYi4uLi4uLgogICAgNzhCMDogMDAgNzkg
MDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgNDAgMDAgMDAgNjMgMDAgIC55Li4uLi4uLi4uQC4u
Yy4KICAgIDc4QzA6IDAxIEMwIDAwIDAwIDAwIDAwIDc5IDAwIDA4IDVGIDUwIDUzIDUzIDEyIDQ2
IDA2ICAuLi4uLi55Li5fUFNTLkYuCiAgICA3OEQwOiAwMyAxMiAyMCAwNiAwQyA2OCAxMCAwMCAw
MCAwQyBCMCAxMyAwMCAwMCAwQyAwMCAgLi4gLi5oLi4uLi4uLi4uLgogICAgNzhFMDogMDAgMDAg
MDAgMEMgMDAgMDAgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMEMgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDc4RjA6IDAwIDAwIDEyIDIwIDA2IDBDIDk4IDA4IDAwIDAwIDBDIDA0IDA2IDAwIDAw
IDBDICAuLi4gLi4uLi4uLi4uLi4uCiAgICA3OTAwOiAwMCAwMCAwMCAwMCAwQyAwMCAwMCAwMCAw
MCAwQyAwMSAwMCAwMCAwMCAwQyAwMSAgLi4uLi4uLi4uLi4uLi4uLgogICAgNzkxMDogMDAgMDAg
MDAgMTIgMjAgMDYgMEMgREMgMDUgMDAgMDAgMEMgQ0YgMDMgMDAgMDAgIC4uLi4gLi4uLi4uLi4u
Li4KICAgIDc5MjA6IDBDIDAwIDAwIDAwIDAwIDBDIDAwIDAwIDAwIDAwIDBDIDAyIDAwIDAwIDAw
IDBDICAuLi4uLi4uLi4uLi4uLi4uCiAgICA3OTMwOiAwMiAwMCAwMCAwMCAwOCA1OCA1MCA1MyA1
MyAxMiA0QiAwRCAwMyAxMiA0NyAwNCAgLi4uLi5YUFNTLksuLi5HLgogICAgNzk0MDogMDggMEMg
NjggMTAgMDAgMDAgMEMgQjAgMTMgMDAgMDAgMEMgMDAgMDAgMDAgMDAgIC4uaC4uLi4uLi4uLi4u
Li4KICAgIDc5NTA6IDBDIDAwIDAwIDAwIDAwIDExIDBCIDBBIDA4IDAwIDAwIDAwIDAwIDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA3OTYwOiAwMCAxMSAwQiAwQSAwOCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAxMSAwQiAwQSAgLi4uLi4uLi4uLi4uLi4uLgogICAgNzk3MDogMDggMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMTEgMEIgMEEgMDggMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDc5ODA6IDAwIDAwIDAwIDAwIDAwIDEyIDQ3IDA0IDA4IDBDIDk4IDA4IDAwIDAwIDBD
IDA0ICAuLi4uLi5HLi4uLi4uLi4uCiAgICA3OTkwOiAwNiAwMCAwMCAwQyAwMCAwMCAwMCAwMCAw
QyAwMCAwMCAwMCAwMCAxMSAwQiAwQSAgLi4uLi4uLi4uLi4uLi4uLgogICAgNzlBMDogMDggMDEg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMTEgMEIgMEEgMDggMDEgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDc5QjA6IDAwIDAwIDAwIDAwIDAwIDExIDBCIDBBIDA4IDAwIDAwIDAwIDAwIDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA3OUMwOiAwMCAxMSAwQiAwQSAwOCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAxMiA0NyAwNCAgLi4uLi4uLi4uLi4uLi5HLgogICAgNzlEMDogMDggMEMg
REMgMDUgMDAgMDAgMEMgQ0YgMDMgMDAgMDAgMEMgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDc5RTA6IDBDIDAwIDAwIDAwIDAwIDExIDBCIDBBIDA4IDAyIDAwIDAwIDAwIDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA3OUYwOiAwMCAxMSAwQiAwQSAwOCAwMiAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAxMSAwQiAwQSAgLi4uLi4uLi4uLi4uLi4uLgogICAgN0EwMDogMDggMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMTEgMEIgMEEgMDggMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDdBMTA6IDAwIDAwIDAwIDAwIDAwIDA4IDVGIDUwIDUzIDQ0IDEyIDE4IDAxIDEyIDE1
IDA1ICAuLi4uLi5fUFNELi4uLi4uCiAgICA3QTIwOiAwQSAwNSAwQSAwMCAwQyAxMiAwMCAwMCAw
MCAwQyBGRSAwMCAwMCAwMCAwQyAwMiAgLi4uLi4uLi4uLi4uLi4uLgogICAgN0EzMDogMDAgMDAg
MDAgMDggNTAgNTAgNDMgNTYgMEEgMDAgMTQgMEIgNUYgNTAgNTAgNDMgIC4uLi5QUENWLi4uLl9Q
UEMKICAgIDdBNDA6IDAwIEE0IDUwIDUwIDQzIDU2IDA4IDVGIDQzIDUwIDQzIDEyIDQwIDE5IDE3
IDBBICAuLlBQQ1YuX0NQQy5ALi4uCiAgICA3QTUwOiAxNyAwQSAwMyAxMSAxNCAwQSAxMSA4MiAw
QyAwMCA3RiAwOCAxOCAwNCBCMCAwMiAgLi4uLi4uLi4uLi4uLi4uLgogICAgN0E2MDogMDEgQzAg
MDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgIC4uLi4uLnkuLi4uLi4u
Li4KICAgIDdBNzA6IDA4IDEwIDA0IEIwIDAyIDAxIEMwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0
IDBBICAuLi4uLi4uLi4uLnkuLi4uCiAgICA3QTgwOiAxMSA4MiAwQyAwMCA3RiAwOCAwOCAwNCBC
MCAwMiAwMSBDMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgN0E5MDogNzkgMDAg
MTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgMDggMDAgMDQgQjAgMDIgMDEgIHkuLi4uLi4uLi4uLi4u
Li4KICAgIDdBQTA6IEMwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0IDBBIDExIDgyIDBDIDAwIDAw
IDAwICAuLi4uLnkuLi4uLi4uLi4uCiAgICA3QUIwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCA3OSAwMCAxMSAxNCAwQSAxMSAgLi4uLi4uLi4uLnkuLi4uLgogICAgN0FDMDogODIgMEMg
MDAgN0YgMDggMTAgMDQgQjMgMDIgMDEgQzAgMDAgMDAgMDAgMDAgNzkgIC4uLi4uLi4uLi4uLi4u
LnkKICAgIDdBRDA6IDAwIDExIDE0IDBBIDExIDgyIDBDIDAwIDdGIDA4IDA4IDA0IEIzIDAyIDAx
IEMwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA3QUUwOiAwMCAwMCAwMCAwMCA3OSAwMCAxMSAxNCAw
QSAxMSA4MiAwQyAwMCA3RiAwOCAwMCAgLi4uLnkuLi4uLi4uLi4uLgogICAgN0FGMDogMDQgQjMg
MDIgMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgIC4uLi4uLi4uLnkuLi4u
Li4KICAgIDdCMDA6IDBDIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDc5
IDAwICAuLi4uLi4uLi4uLi4uLnkuCiAgICA3QjEwOiAxMSAxNCAwQSAxMSA4MiAwQyAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgN0IyMDogMDAgMDAg
MDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgMDAgMDAgMDAgMDAgIC4uLnkuLi4uLi4uLi4u
Li4KICAgIDdCMzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0IDBBIDExIDgy
IDBDICAuLi4uLi4uLnkuLi4uLi4uCiAgICA3QjQwOiAwMCA3RiA0MCAwMCAwNCBFNyAwMCAwMCAw
MCAwMCAwMCAwMCAwMCA3OSAwMCAxMSAgLi5ALi4uLi4uLi4uLnkuLgogICAgN0I1MDogMTQgMEEg
MTEgODIgMEMgMDAgN0YgNDAgMDAgMDQgRTggMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi5ALi4uLi4u
Li4KICAgIDdCNjA6IDAwIDAwIDc5IDAwIDExIDE0IDBBIDExIDgyIDBDIDAwIDdGIDAyIDAwIDA0
IEI0ICAuLnkuLi4uLi4uLi4uLi4uCiAgICA3QjcwOiAwMiAwMSBDMCAwMCAwMCAwMCAwMCA3OSAw
MCAxMSAxNCAwQSAxMSA4MiAwQyAwMCAgLi4uLi4uLnkuLi4uLi4uLgogICAgN0I4MDogN0YgMDEg
MDAgMDQgQjEgMDIgMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgMEMgMDEgIC4uLi4uLi4uLi4uLnku
Li4KICAgIDdCOTA6IDAwIDAwIDAwIDExIDE0IDBBIDExIDgyIDBDIDAwIDAwIDAwIDAwIDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA3QkEwOiAwMCAwMCAwMCAwMCAwMCAwMCA3OSAwMCAx
MSAxNCAwQSAxMSA4MiAwQyAwMCA3RiAgLi4uLi4ueS4uLi4uLi4uLgogICAgN0JCMDogMDggMTgg
MDQgQjMgMDIgMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgIC4uLi4uLi4uLi4ueS4u
Li4KICAgIDdCQzA6IDExIDgyIDBDIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA3QkQwOiA3OSAwMCAwQyAyMSAwMiAwMCAwMCAwQyA2
OSAxMCAwMCAwMCAxMCA0NyAzNSA1QyAgeS4uIS4uLi5pLi4uLkc1XAogICAgN0JFMDogMkYgMDMg
NUYgNTMgNDIgNUYgNTAgNEMgNTQgNDYgNDMgMzAgMzIgMzUgMDggNUYgIC8uX1NCX1BMVEZDMDI1
Ll8KICAgIDdCRjA6IDUwIDQzIDU0IDEyIDJDIDAyIDExIDE0IDBBIDExIDgyIDBDIDAwIDdGIDQw
IDAwICBQQ1QuLC4uLi4uLi4uLkAuCiAgICA3QzAwOiAwMCA2MiAwMCAwMSBDMCAwMCAwMCAwMCAw
MCA3OSAwMCAxMSAxNCAwQSAxMSA4MiAgLmIuLi4uLi4ueS4uLi4uLgogICAgN0MxMDogMEMgMDAg
N0YgNDAgMDAgMDAgNjMgMDAgMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgIC4uLkAuLmMuLi4uLi4u
eS4KICAgIDdDMjA6IDA4IDVGIDUwIDUzIDUzIDEyIDQ2IDA2IDAzIDEyIDIwIDA2IDBDIDY4IDEw
IDAwICAuX1BTUy5GLi4uIC4uaC4uCiAgICA3QzMwOiAwMCAwQyBCMCAxMyAwMCAwMCAwQyAwMCAw
MCAwMCAwMCAwQyAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgN0M0MDogMEMgMDAg
MDAgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMTIgMjAgMDYgMEMgOTggMDggIC4uLi4uLi4uLi4uIC4u
Li4KICAgIDdDNTA6IDAwIDAwIDBDIDA0IDA2IDAwIDAwIDBDIDAwIDAwIDAwIDAwIDBDIDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA3QzYwOiAwMCAwQyAwMSAwMCAwMCAwMCAwQyAwMSAw
MCAwMCAwMCAxMiAyMCAwNiAwQyBEQyAgLi4uLi4uLi4uLi4uIC4uLgogICAgN0M3MDogMDUgMDAg
MDAgMEMgQ0YgMDMgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMEMgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDdDODA6IDAwIDAwIDBDIDAyIDAwIDAwIDAwIDBDIDAyIDAwIDAwIDAwIDA4IDU4IDUw
IDUzICAuLi4uLi4uLi4uLi4uWFBTCiAgICA3QzkwOiA1MyAxMiA0QiAwRCAwMyAxMiA0NyAwNCAw
OCAwQyA2OCAxMCAwMCAwMCAwQyBCMCAgUy5LLi4uRy4uLmguLi4uLgogICAgN0NBMDogMTMgMDAg
MDAgMEMgMDAgMDAgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMTEgMEIgMEEgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDdDQjA6IDA4IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDExIDBCIDBBIDA4IDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA3Q0MwOiAwMCAwMCAwMCAwMCAwMCAxMSAwQiAwQSAw
OCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgN0NEMDogMDAgMTEg
MEIgMEEgMDggMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMTIgNDcgMDQgIC4uLi4uLi4uLi4uLi4u
Ry4KICAgIDdDRTA6IDA4IDBDIDk4IDA4IDAwIDAwIDBDIDA0IDA2IDAwIDAwIDBDIDAwIDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA3Q0YwOiAwQyAwMCAwMCAwMCAwMCAxMSAwQiAwQSAw
OCAwMSAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgN0QwMDogMDAgMTEg
MEIgMEEgMDggMDEgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMTEgMEIgMEEgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDdEMTA6IDA4IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDExIDBCIDBBIDA4IDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA3RDIwOiAwMCAwMCAwMCAwMCAwMCAxMiA0NyAwNCAw
OCAwQyBEQyAwNSAwMCAwMCAwQyBDRiAgLi4uLi4uRy4uLi4uLi4uLgogICAgN0QzMDogMDMgMDAg
MDAgMEMgMDAgMDAgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMTEgMEIgMEEgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDdENDA6IDA4IDAyIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDExIDBCIDBBIDA4IDAyIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA3RDUwOiAwMCAwMCAwMCAwMCAwMCAxMSAwQiAwQSAw
OCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgN0Q2MDogMDAgMTEg
MEIgMEEgMDggMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDggNUYgNTAgIC4uLi4uLi4uLi4uLi4u
X1AKICAgIDdENzA6IDUzIDQ0IDEyIDE4IDAxIDEyIDE1IDA1IDBBIDA1IDBBIDAwIDBDIDEyIDAw
IDAwICBTRC4uLi4uLi4uLi4uLi4uCiAgICA3RDgwOiAwMCAwQyBGRSAwMCAwMCAwMCAwQyAwMiAw
MCAwMCAwMCAwOCA1MCA1MCA0MyA1NiAgLi4uLi4uLi4uLi4uUFBDVgogICAgN0Q5MDogMEEgMDAg
MTQgMEIgNUYgNTAgNTAgNDMgMDAgQTQgNTAgNTAgNDMgNTYgMDggNUYgIC4uLi5fUFBDLi5QUENW
Ll8KICAgIDdEQTA6IDQzIDUwIDQzIDEyIDQwIDE5IDE3IDBBIDE3IDBBIDAzIDExIDE0IDBBIDEx
IDgyICBDUEMuQC4uLi4uLi4uLi4uCiAgICA3REIwOiAwQyAwMCA3RiAwOCAxOCAwNCBCMCAwMiAw
MSBDMCAwMCAwMCAwMCAwMCA3OSAwMCAgLi4uLi4uLi4uLi4uLi55LgogICAgN0RDMDogMTEgMTQg
MEEgMTEgODIgMEMgMDAgN0YgMDggMTAgMDQgQjAgMDIgMDEgQzAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDdERDA6IDAwIDAwIDAwIDc5IDAwIDExIDE0IDBBIDExIDgyIDBDIDAwIDdGIDA4IDA4
IDA0ICAuLi55Li4uLi4uLi4uLi4uCiAgICA3REUwOiBCMCAwMiAwMSBDMCAwMCAwMCAwMCAwMCA3
OSAwMCAxMSAxNCAwQSAxMSA4MiAwQyAgLi4uLi4uLi55Li4uLi4uLgogICAgN0RGMDogMDAgN0Yg
MDggMDAgMDQgQjAgMDIgMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgIC4uLi4uLi4uLi4uLi55
Li4KICAgIDdFMDA6IDE0IDBBIDExIDgyIDBDIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA3RTEwOiAwMCAwMCA3OSAwMCAxMSAxNCAwQSAxMSA4
MiAwQyAwMCA3RiAwOCAxMCAwNCBCMyAgLi55Li4uLi4uLi4uLi4uLgogICAgN0UyMDogMDIgMDEg
QzAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgIC4uLi4uLi55Li4uLi4u
Li4KICAgIDdFMzA6IDdGIDA4IDA4IDA0IEIzIDAyIDAxIEMwIDAwIDAwIDAwIDAwIDc5IDAwIDEx
IDE0ICAuLi4uLi4uLi4uLi55Li4uCiAgICA3RTQwOiAwQSAxMSA4MiAwQyAwMCA3RiAwOCAwMCAw
NCBCMyAwMiAwMSBDMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgN0U1MDogMDAgNzkg
MDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC55Li4uLi4uLi4uLi4u
Li4KICAgIDdFNjA6IDAwIDAwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0IDBBIDExIDgyIDBDIDAw
IDAwICAuLi4uLi55Li4uLi4uLi4uCiAgICA3RTcwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCA3OSAwMCAxMSAxNCAwQSAgLi4uLi4uLi4uLi55Li4uLgogICAgN0U4MDogMTEgODIg
MEMgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDdFOTA6IDc5IDAwIDExIDE0IDBBIDExIDgyIDBDIDAwIDdGIDQwIDAwIDA0IEU3IDAw
IDAwICB5Li4uLi4uLi4uQC4uLi4uCiAgICA3RUEwOiAwMCAwMCAwMCAwMCAwMCA3OSAwMCAxMSAx
NCAwQSAxMSA4MiAwQyAwMCA3RiA0MCAgLi4uLi55Li4uLi4uLi4uQAogICAgN0VCMDogMDAgMDQg
RTggMDAgMDAgMDAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgIC4uLi4uLi4uLi55Li4u
Li4KICAgIDdFQzA6IDgyIDBDIDAwIDdGIDAyIDAwIDA0IEI0IDAyIDAxIEMwIDAwIDAwIDAwIDAw
IDc5ICAuLi4uLi4uLi4uLi4uLi55CiAgICA3RUQwOiAwMCAxMSAxNCAwQSAxMSA4MiAwQyAwMCA3
RiAwMSAwMCAwNCBCMSAwMiAwMSBDMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgN0VFMDogMDAgMDAg
MDAgMDAgNzkgMDAgMEMgMDEgMDAgMDAgMDAgMTEgMTQgMEEgMTEgODIgIC4uLi55Li4uLi4uLi4u
Li4KICAgIDdFRjA6IDBDIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDc5
IDAwICAuLi4uLi4uLi4uLi4uLnkuCiAgICA3RjAwOiAxMSAxNCAwQSAxMSA4MiAwQyAwMCA3RiAw
OCAxOCAwNCBCMyAwMiAwMSBDMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgN0YxMDogMDAgMDAg
MDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgMDAgMDAgMDAgMDAgIC4uLnkuLi4uLi4uLi4u
Li4KICAgIDdGMjA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDc5IDAwIDBDIDIxIDAyIDAwIDAw
IDBDICAuLi4uLi4uLnkuLiEuLi4uCiAgICA3RjMwOiA2OSAxMCAwMCAwMCAxMCA0NyAzNSA1QyAy
RiAwMyA1RiA1MyA0MiA1RiA1MCA0QyAgaS4uLi5HNVwvLl9TQl9QTAogICAgN0Y0MDogNTQgNDYg
NDMgMzAgMzIgMzYgMDggNUYgNTAgNDMgNTQgMTIgMkMgMDIgMTEgMTQgIFRGQzAyNi5fUENULiwu
Li4KICAgIDdGNTA6IDBBIDExIDgyIDBDIDAwIDdGIDQwIDAwIDAwIDYyIDAwIDAxIEMwIDAwIDAw
IDAwICAuLi4uLi5ALi5iLi4uLi4uCiAgICA3RjYwOiAwMCA3OSAwMCAxMSAxNCAwQSAxMSA4MiAw
QyAwMCA3RiA0MCAwMCAwMCA2MyAwMCAgLnkuLi4uLi4uLi5ALi5jLgogICAgN0Y3MDogMDEgQzAg
MDAgMDAgMDAgMDAgNzkgMDAgMDggNUYgNTAgNTMgNTMgMTIgNDYgMDYgIC4uLi4uLnkuLl9QU1Mu
Ri4KICAgIDdGODA6IDAzIDEyIDIwIDA2IDBDIDY4IDEwIDAwIDAwIDBDIEIwIDEzIDAwIDAwIDBD
IDAwICAuLiAuLmguLi4uLi4uLi4uCiAgICA3RjkwOiAwMCAwMCAwMCAwQyAwMCAwMCAwMCAwMCAw
QyAwMCAwMCAwMCAwMCAwQyAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgN0ZBMDogMDAgMDAg
MTIgMjAgMDYgMEMgOTggMDggMDAgMDAgMEMgMDQgMDYgMDAgMDAgMEMgIC4uLiAuLi4uLi4uLi4u
Li4KICAgIDdGQjA6IDAwIDAwIDAwIDAwIDBDIDAwIDAwIDAwIDAwIDBDIDAxIDAwIDAwIDAwIDBD
IDAxICAuLi4uLi4uLi4uLi4uLi4uCiAgICA3RkMwOiAwMCAwMCAwMCAxMiAyMCAwNiAwQyBEQyAw
NSAwMCAwMCAwQyBDRiAwMyAwMCAwMCAgLi4uLiAuLi4uLi4uLi4uLgogICAgN0ZEMDogMEMgMDAg
MDAgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMEMgMDIgMDAgMDAgMDAgMEMgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDdGRTA6IDAyIDAwIDAwIDAwIDA4IDU4IDUwIDUzIDUzIDEyIDRCIDBEIDAzIDEyIDQ3
IDA0ICAuLi4uLlhQU1MuSy4uLkcuCiAgICA3RkYwOiAwOCAwQyA2OCAxMCAwMCAwMCAwQyBCMCAx
MyAwMCAwMCAwQyAwMCAwMCAwMCAwMCAgLi5oLi4uLi4uLi4uLi4uLgogICAgODAwMDogMEMgMDAg
MDAgMDAgMDAgMTEgMEIgMEEgMDggMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDgwMTA6IDAwIDExIDBCIDBBIDA4IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDExIDBC
IDBBICAuLi4uLi4uLi4uLi4uLi4uCiAgICA4MDIwOiAwOCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAxMSAwQiAwQSAwOCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgODAzMDogMDAgMDAg
MDAgMDAgMDAgMTIgNDcgMDQgMDggMEMgOTggMDggMDAgMDAgMEMgMDQgIC4uLi4uLkcuLi4uLi4u
Li4KICAgIDgwNDA6IDA2IDAwIDAwIDBDIDAwIDAwIDAwIDAwIDBDIDAwIDAwIDAwIDAwIDExIDBC
IDBBICAuLi4uLi4uLi4uLi4uLi4uCiAgICA4MDUwOiAwOCAwMSAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAxMSAwQiAwQSAwOCAwMSAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgODA2MDogMDAgMDAg
MDAgMDAgMDAgMTEgMEIgMEEgMDggMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDgwNzA6IDAwIDExIDBCIDBBIDA4IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDEyIDQ3
IDA0ICAuLi4uLi4uLi4uLi4uLkcuCiAgICA4MDgwOiAwOCAwQyBEQyAwNSAwMCAwMCAwQyBDRiAw
MyAwMCAwMCAwQyAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgODA5MDogMEMgMDAg
MDAgMDAgMDAgMTEgMEIgMEEgMDggMDIgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDgwQTA6IDAwIDExIDBCIDBBIDA4IDAyIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDExIDBC
IDBBICAuLi4uLi4uLi4uLi4uLi4uCiAgICA4MEIwOiAwOCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAxMSAwQiAwQSAwOCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgODBDMDogMDAgMDAg
MDAgMDAgMDAgMDggNUYgNTAgNTMgNDQgMTIgMTggMDEgMTIgMTUgMDUgIC4uLi4uLl9QU0QuLi4u
Li4KICAgIDgwRDA6IDBBIDA1IDBBIDAwIDBDIDEzIDAwIDAwIDAwIDBDIEZFIDAwIDAwIDAwIDBD
IDAyICAuLi4uLi4uLi4uLi4uLi4uCiAgICA4MEUwOiAwMCAwMCAwMCAwOCA1MCA1MCA0MyA1NiAw
QSAwMCAxNCAwQiA1RiA1MCA1MCA0MyAgLi4uLlBQQ1YuLi4uX1BQQwogICAgODBGMDogMDAgQTQg
NTAgNTAgNDMgNTYgMDggNUYgNDMgNTAgNDMgMTIgNDAgMTkgMTcgMEEgIC4uUFBDVi5fQ1BDLkAu
Li4KICAgIDgxMDA6IDE3IDBBIDAzIDExIDE0IDBBIDExIDgyIDBDIDAwIDdGIDA4IDE4IDA0IEIw
IDAyICAuLi4uLi4uLi4uLi4uLi4uCiAgICA4MTEwOiAwMSBDMCAwMCAwMCAwMCAwMCA3OSAwMCAx
MSAxNCAwQSAxMSA4MiAwQyAwMCA3RiAgLi4uLi4ueS4uLi4uLi4uLgogICAgODEyMDogMDggMTAg
MDQgQjAgMDIgMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgIC4uLi4uLi4uLi4ueS4u
Li4KICAgIDgxMzA6IDExIDgyIDBDIDAwIDdGIDA4IDA4IDA0IEIwIDAyIDAxIEMwIDAwIDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA4MTQwOiA3OSAwMCAxMSAxNCAwQSAxMSA4MiAwQyAw
MCA3RiAwOCAwMCAwNCBCMCAwMiAwMSAgeS4uLi4uLi4uLi4uLi4uLgogICAgODE1MDogQzAgMDAg
MDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgMDAgMDAgIC4uLi4ueS4uLi4uLi4u
Li4KICAgIDgxNjA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0IDBB
IDExICAuLi4uLi4uLi4ueS4uLi4uCiAgICA4MTcwOiA4MiAwQyAwMCA3RiAwOCAxMCAwNCBCMyAw
MiAwMSBDMCAwMCAwMCAwMCAwMCA3OSAgLi4uLi4uLi4uLi4uLi4ueQogICAgODE4MDogMDAgMTEg
MTQgMEEgMTEgODIgMEMgMDAgN0YgMDggMDggMDQgQjMgMDIgMDEgQzAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDgxOTA6IDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0IDBBIDExIDgyIDBDIDAwIDdGIDA4
IDAwICAuLi4ueS4uLi4uLi4uLi4uCiAgICA4MUEwOiAwNCBCMyAwMiAwMSBDMCAwMCAwMCAwMCAw
MCA3OSAwMCAxMSAxNCAwQSAxMSA4MiAgLi4uLi4uLi4ueS4uLi4uLgogICAgODFCMDogMEMgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgNzkgMDAgIC4uLi4uLi4uLi4uLi4u
eS4KICAgIDgxQzA6IDExIDE0IDBBIDExIDgyIDBDIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA4MUQwOiAwMCAwMCAwMCA3OSAwMCAxMSAxNCAwQSAx
MSA4MiAwQyAwMCAwMCAwMCAwMCAwMCAgLi4ueS4uLi4uLi4uLi4uLgogICAgODFFMDogMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgIC4uLi4uLi4ueS4uLi4u
Li4KICAgIDgxRjA6IDAwIDdGIDQwIDAwIDA0IEU3IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDc5IDAw
IDExICAuLkAuLi4uLi4uLi4ueS4uCiAgICA4MjAwOiAxNCAwQSAxMSA4MiAwQyAwMCA3RiA0MCAw
MCAwNCBFOCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLkAuLi4uLi4uLgogICAgODIxMDogMDAgMDAg
NzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgMDIgMDAgMDQgQjQgIC4ueS4uLi4uLi4uLi4u
Li4KICAgIDgyMjA6IDAyIDAxIEMwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0IDBBIDExIDgyIDBD
IDAwICAuLi4uLi4ueS4uLi4uLi4uCiAgICA4MjMwOiA3RiAwMSAwMCAwNCBCMSAwMiAwMSBDMCAw
MCAwMCAwMCAwMCA3OSAwMCAwQyAwMSAgLi4uLi4uLi4uLi4ueS4uLgogICAgODI0MDogMDAgMDAg
MDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDgyNTA6IDAwIDAwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0IDBBIDExIDgyIDBDIDAw
IDdGICAuLi4uLi55Li4uLi4uLi4uCiAgICA4MjYwOiAwOCAxOCAwNCBCMyAwMiAwMSBDMCAwMCAw
MCAwMCAwMCA3OSAwMCAxMSAxNCAwQSAgLi4uLi4uLi4uLi55Li4uLgogICAgODI3MDogMTEgODIg
MEMgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDgyODA6IDc5IDAwIDBDIDIxIDAyIDAwIDAwIDBDIDY5IDEwIDAwIDAwIDEwIDQ3IDM1
IDVDICB5Li4hLi4uLmkuLi4uRzVcCiAgICA4MjkwOiAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0QyA1
NCA0NiA0MyAzMCAzMiAzNyAwOCA1RiAgLy5fU0JfUExURkMwMjcuXwogICAgODJBMDogNTAgNDMg
NTQgMTIgMkMgMDIgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgNDAgMDAgIFBDVC4sLi4uLi4uLi4u
QC4KICAgIDgyQjA6IDAwIDYyIDAwIDAxIEMwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0IDBBIDEx
IDgyICAuYi4uLi4uLi55Li4uLi4uCiAgICA4MkMwOiAwQyAwMCA3RiA0MCAwMCAwMCA2MyAwMCAw
MSBDMCAwMCAwMCAwMCAwMCA3OSAwMCAgLi4uQC4uYy4uLi4uLi55LgogICAgODJEMDogMDggNUYg
NTAgNTMgNTMgMTIgNDYgMDYgMDMgMTIgMjAgMDYgMEMgNjggMTAgMDAgIC5fUFNTLkYuLi4gLi5o
Li4KICAgIDgyRTA6IDAwIDBDIEIwIDEzIDAwIDAwIDBDIDAwIDAwIDAwIDAwIDBDIDAwIDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA4MkYwOiAwQyAwMCAwMCAwMCAwMCAwQyAwMCAwMCAw
MCAwMCAxMiAyMCAwNiAwQyA5OCAwOCAgLi4uLi4uLi4uLi4gLi4uLgogICAgODMwMDogMDAgMDAg
MEMgMDQgMDYgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMEMgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDgzMTA6IDAwIDBDIDAxIDAwIDAwIDAwIDBDIDAxIDAwIDAwIDAwIDEyIDIwIDA2IDBD
IERDICAuLi4uLi4uLi4uLi4gLi4uCiAgICA4MzIwOiAwNSAwMCAwMCAwQyBDRiAwMyAwMCAwMCAw
QyAwMCAwMCAwMCAwMCAwQyAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgODMzMDogMDAgMDAg
MEMgMDIgMDAgMDAgMDAgMEMgMDIgMDAgMDAgMDAgMDggNTggNTAgNTMgIC4uLi4uLi4uLi4uLi5Y
UFMKICAgIDgzNDA6IDUzIDEyIDRCIDBEIDAzIDEyIDQ3IDA0IDA4IDBDIDY4IDEwIDAwIDAwIDBD
IEIwICBTLksuLi5HLi4uaC4uLi4uCiAgICA4MzUwOiAxMyAwMCAwMCAwQyAwMCAwMCAwMCAwMCAw
QyAwMCAwMCAwMCAwMCAxMSAwQiAwQSAgLi4uLi4uLi4uLi4uLi4uLgogICAgODM2MDogMDggMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMTEgMEIgMEEgMDggMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDgzNzA6IDAwIDAwIDAwIDAwIDAwIDExIDBCIDBBIDA4IDAwIDAwIDAwIDAwIDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA4MzgwOiAwMCAxMSAwQiAwQSAwOCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAxMiA0NyAwNCAgLi4uLi4uLi4uLi4uLi5HLgogICAgODM5MDogMDggMEMg
OTggMDggMDAgMDAgMEMgMDQgMDYgMDAgMDAgMEMgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDgzQTA6IDBDIDAwIDAwIDAwIDAwIDExIDBCIDBBIDA4IDAxIDAwIDAwIDAwIDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA4M0IwOiAwMCAxMSAwQiAwQSAwOCAwMSAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAxMSAwQiAwQSAgLi4uLi4uLi4uLi4uLi4uLgogICAgODNDMDogMDggMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMTEgMEIgMEEgMDggMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDgzRDA6IDAwIDAwIDAwIDAwIDAwIDEyIDQ3IDA0IDA4IDBDIERDIDA1IDAwIDAwIDBD
IENGICAuLi4uLi5HLi4uLi4uLi4uCiAgICA4M0UwOiAwMyAwMCAwMCAwQyAwMCAwMCAwMCAwMCAw
QyAwMCAwMCAwMCAwMCAxMSAwQiAwQSAgLi4uLi4uLi4uLi4uLi4uLgogICAgODNGMDogMDggMDIg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMTEgMEIgMEEgMDggMDIgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDg0MDA6IDAwIDAwIDAwIDAwIDAwIDExIDBCIDBBIDA4IDAwIDAwIDAwIDAwIDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA4NDEwOiAwMCAxMSAwQiAwQSAwOCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwOCA1RiA1MCAgLi4uLi4uLi4uLi4uLi5fUAogICAgODQyMDogNTMgNDQg
MTIgMTggMDEgMTIgMTUgMDUgMEEgMDUgMEEgMDAgMEMgMTMgMDAgMDAgIFNELi4uLi4uLi4uLi4u
Li4KICAgIDg0MzA6IDAwIDBDIEZFIDAwIDAwIDAwIDBDIDAyIDAwIDAwIDAwIDA4IDUwIDUwIDQz
IDU2ICAuLi4uLi4uLi4uLi5QUENWCiAgICA4NDQwOiAwQSAwMCAxNCAwQiA1RiA1MCA1MCA0MyAw
MCBBNCA1MCA1MCA0MyA1NiAwOCA1RiAgLi4uLl9QUEMuLlBQQ1YuXwogICAgODQ1MDogNDMgNTAg
NDMgMTIgNDAgMTkgMTcgMEEgMTcgMEEgMDMgMTEgMTQgMEEgMTEgODIgIENQQy5ALi4uLi4uLi4u
Li4KICAgIDg0NjA6IDBDIDAwIDdGIDA4IDE4IDA0IEIwIDAyIDAxIEMwIDAwIDAwIDAwIDAwIDc5
IDAwICAuLi4uLi4uLi4uLi4uLnkuCiAgICA4NDcwOiAxMSAxNCAwQSAxMSA4MiAwQyAwMCA3RiAw
OCAxMCAwNCBCMCAwMiAwMSBDMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgODQ4MDogMDAgMDAg
MDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgMDggMDggMDQgIC4uLnkuLi4uLi4uLi4u
Li4KICAgIDg0OTA6IEIwIDAyIDAxIEMwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0IDBBIDExIDgy
IDBDICAuLi4uLi4uLnkuLi4uLi4uCiAgICA4NEEwOiAwMCA3RiAwOCAwMCAwNCBCMCAwMiAwMSBD
MCAwMCAwMCAwMCAwMCA3OSAwMCAxMSAgLi4uLi4uLi4uLi4uLnkuLgogICAgODRCMDogMTQgMEEg
MTEgODIgMEMgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDg0QzA6IDAwIDAwIDc5IDAwIDExIDE0IDBBIDExIDgyIDBDIDAwIDdGIDA4IDEwIDA0
IEIzICAuLnkuLi4uLi4uLi4uLi4uCiAgICA4NEQwOiAwMiAwMSBDMCAwMCAwMCAwMCAwMCA3OSAw
MCAxMSAxNCAwQSAxMSA4MiAwQyAwMCAgLi4uLi4uLnkuLi4uLi4uLgogICAgODRFMDogN0YgMDgg
MDggMDQgQjMgMDIgMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgIC4uLi4uLi4uLi4uLnku
Li4KICAgIDg0RjA6IDBBIDExIDgyIDBDIDAwIDdGIDA4IDAwIDA0IEIzIDAyIDAxIEMwIDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA4NTAwOiAwMCA3OSAwMCAxMSAxNCAwQSAxMSA4MiAw
QyAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLnkuLi4uLi4uLi4uLi4uLgogICAgODUxMDogMDAgMDAg
MDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgMDAgIC4uLi4uLnkuLi4uLi4u
Li4KICAgIDg1MjA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0
IDBBICAuLi4uLi4uLi4uLnkuLi4uCiAgICA4NTMwOiAxMSA4MiAwQyAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgODU0MDogNzkgMDAg
MTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgNDAgMDAgMDQgRTcgMDAgMDAgIHkuLi4uLi4uLi5ALi4u
Li4KICAgIDg1NTA6IDAwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0IDBBIDExIDgyIDBDIDAwIDdG
IDQwICAuLi4uLnkuLi4uLi4uLi5ACiAgICA4NTYwOiAwMCAwNCBFOCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCA3OSAwMCAxMSAxNCAwQSAxMSAgLi4uLi4uLi4uLnkuLi4uLgogICAgODU3MDogODIgMEMg
MDAgN0YgMDIgMDAgMDQgQjQgMDIgMDEgQzAgMDAgMDAgMDAgMDAgNzkgIC4uLi4uLi4uLi4uLi4u
LnkKICAgIDg1ODA6IDAwIDExIDE0IDBBIDExIDgyIDBDIDAwIDdGIDAxIDAwIDA0IEIxIDAyIDAx
IEMwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA4NTkwOiAwMCAwMCAwMCAwMCA3OSAwMCAwQyAwMSAw
MCAwMCAwMCAxMSAxNCAwQSAxMSA4MiAgLi4uLnkuLi4uLi4uLi4uLgogICAgODVBMDogMEMgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgNzkgMDAgIC4uLi4uLi4uLi4uLi4u
eS4KICAgIDg1QjA6IDExIDE0IDBBIDExIDgyIDBDIDAwIDdGIDA4IDE4IDA0IEIzIDAyIDAxIEMw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA4NUMwOiAwMCAwMCAwMCA3OSAwMCAxMSAxNCAwQSAx
MSA4MiAwQyAwMCAwMCAwMCAwMCAwMCAgLi4ueS4uLi4uLi4uLi4uLgogICAgODVEMDogMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgNzkgMDAgMEMgMjEgMDIgMDAgMDAgMEMgIC4uLi4uLi4ueS4uIS4u
Li4KICAgIDg1RTA6IDY5IDEwIDAwIDAwIDEwIDQ3IDM1IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUw
IDRDICBpLi4uLkc1XC8uX1NCX1BMCiAgICA4NUYwOiA1NCA0NiA0MyAzMCAzMiAzOCAwOCA1RiA1
MCA0MyA1NCAxMiAyQyAwMiAxMSAxNCAgVEZDMDI4Ll9QQ1QuLC4uLgogICAgODYwMDogMEEgMTEg
ODIgMEMgMDAgN0YgNDAgMDAgMDAgNjIgMDAgMDEgQzAgMDAgMDAgMDAgIC4uLi4uLkAuLmIuLi4u
Li4KICAgIDg2MTA6IDAwIDc5IDAwIDExIDE0IDBBIDExIDgyIDBDIDAwIDdGIDQwIDAwIDAwIDYz
IDAwICAueS4uLi4uLi4uLkAuLmMuCiAgICA4NjIwOiAwMSBDMCAwMCAwMCAwMCAwMCA3OSAwMCAw
OCA1RiA1MCA1MyA1MyAxMiA0NiAwNiAgLi4uLi4ueS4uX1BTUy5GLgogICAgODYzMDogMDMgMTIg
MjAgMDYgMEMgNjggMTAgMDAgMDAgMEMgQjAgMTMgMDAgMDAgMEMgMDAgIC4uIC4uaC4uLi4uLi4u
Li4KICAgIDg2NDA6IDAwIDAwIDAwIDBDIDAwIDAwIDAwIDAwIDBDIDAwIDAwIDAwIDAwIDBDIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA4NjUwOiAwMCAwMCAxMiAyMCAwNiAwQyA5OCAwOCAw
MCAwMCAwQyAwNCAwNiAwMCAwMCAwQyAgLi4uIC4uLi4uLi4uLi4uLgogICAgODY2MDogMDAgMDAg
MDAgMDAgMEMgMDAgMDAgMDAgMDAgMEMgMDEgMDAgMDAgMDAgMEMgMDEgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDg2NzA6IDAwIDAwIDAwIDEyIDIwIDA2IDBDIERDIDA1IDAwIDAwIDBDIENGIDAzIDAw
IDAwICAuLi4uIC4uLi4uLi4uLi4uCiAgICA4NjgwOiAwQyAwMCAwMCAwMCAwMCAwQyAwMCAwMCAw
MCAwMCAwQyAwMiAwMCAwMCAwMCAwQyAgLi4uLi4uLi4uLi4uLi4uLgogICAgODY5MDogMDIgMDAg
MDAgMDAgMDggNTggNTAgNTMgNTMgMTIgNEIgMEQgMDMgMTIgNDcgMDQgIC4uLi4uWFBTUy5LLi4u
Ry4KICAgIDg2QTA6IDA4IDBDIDY4IDEwIDAwIDAwIDBDIEIwIDEzIDAwIDAwIDBDIDAwIDAwIDAw
IDAwICAuLmguLi4uLi4uLi4uLi4uCiAgICA4NkIwOiAwQyAwMCAwMCAwMCAwMCAxMSAwQiAwQSAw
OCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgODZDMDogMDAgMTEg
MEIgMEEgMDggMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMTEgMEIgMEEgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDg2RDA6IDA4IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDExIDBCIDBBIDA4IDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA4NkUwOiAwMCAwMCAwMCAwMCAwMCAxMiA0NyAwNCAw
OCAwQyA5OCAwOCAwMCAwMCAwQyAwNCAgLi4uLi4uRy4uLi4uLi4uLgogICAgODZGMDogMDYgMDAg
MDAgMEMgMDAgMDAgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMTEgMEIgMEEgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDg3MDA6IDA4IDAxIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDExIDBCIDBBIDA4IDAxIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA4NzEwOiAwMCAwMCAwMCAwMCAwMCAxMSAwQiAwQSAw
OCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgODcyMDogMDAgMTEg
MEIgMEEgMDggMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMTIgNDcgMDQgIC4uLi4uLi4uLi4uLi4u
Ry4KICAgIDg3MzA6IDA4IDBDIERDIDA1IDAwIDAwIDBDIENGIDAzIDAwIDAwIDBDIDAwIDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA4NzQwOiAwQyAwMCAwMCAwMCAwMCAxMSAwQiAwQSAw
OCAwMiAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgODc1MDogMDAgMTEg
MEIgMEEgMDggMDIgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMTEgMEIgMEEgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDg3NjA6IDA4IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDExIDBCIDBBIDA4IDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA4NzcwOiAwMCAwMCAwMCAwMCAwMCAwOCA1RiA1MCA1
MyA0NCAxMiAxOCAwMSAxMiAxNSAwNSAgLi4uLi4uX1BTRC4uLi4uLgogICAgODc4MDogMEEgMDUg
MEEgMDAgMEMgMTQgMDAgMDAgMDAgMEMgRkUgMDAgMDAgMDAgMEMgMDIgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDg3OTA6IDAwIDAwIDAwIDA4IDUwIDUwIDQzIDU2IDBBIDAwIDE0IDBCIDVGIDUwIDUw
IDQzICAuLi4uUFBDVi4uLi5fUFBDCiAgICA4N0EwOiAwMCBBNCA1MCA1MCA0MyA1NiAwOCA1RiA0
MyA1MCA0MyAxMiA0MCAxOSAxNyAwQSAgLi5QUENWLl9DUEMuQC4uLgogICAgODdCMDogMTcgMEEg
MDMgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgMDggMTggMDQgQjAgMDIgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDg3QzA6IDAxIEMwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0IDBBIDExIDgyIDBDIDAw
IDdGICAuLi4uLi55Li4uLi4uLi4uCiAgICA4N0QwOiAwOCAxMCAwNCBCMCAwMiAwMSBDMCAwMCAw
MCAwMCAwMCA3OSAwMCAxMSAxNCAwQSAgLi4uLi4uLi4uLi55Li4uLgogICAgODdFMDogMTEgODIg
MEMgMDAgN0YgMDggMDggMDQgQjAgMDIgMDEgQzAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDg3RjA6IDc5IDAwIDExIDE0IDBBIDExIDgyIDBDIDAwIDdGIDA4IDAwIDA0IEIwIDAy
IDAxICB5Li4uLi4uLi4uLi4uLi4uCiAgICA4ODAwOiBDMCAwMCAwMCAwMCAwMCA3OSAwMCAxMSAx
NCAwQSAxMSA4MiAwQyAwMCAwMCAwMCAgLi4uLi55Li4uLi4uLi4uLgogICAgODgxMDogMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgIC4uLi4uLi4uLi55Li4u
Li4KICAgIDg4MjA6IDgyIDBDIDAwIDdGIDA4IDEwIDA0IEIzIDAyIDAxIEMwIDAwIDAwIDAwIDAw
IDc5ICAuLi4uLi4uLi4uLi4uLi55CiAgICA4ODMwOiAwMCAxMSAxNCAwQSAxMSA4MiAwQyAwMCA3
RiAwOCAwOCAwNCBCMyAwMiAwMSBDMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgODg0MDogMDAgMDAg
MDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgMDggMDAgIC4uLi55Li4uLi4uLi4u
Li4KICAgIDg4NTA6IDA0IEIzIDAyIDAxIEMwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0IDBBIDEx
IDgyICAuLi4uLi4uLi55Li4uLi4uCiAgICA4ODYwOiAwQyAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCA3OSAwMCAgLi4uLi4uLi4uLi4uLi55LgogICAgODg3MDogMTEgMTQg
MEEgMTEgODIgMEMgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDg4ODA6IDAwIDAwIDAwIDc5IDAwIDExIDE0IDBBIDExIDgyIDBDIDAwIDAwIDAwIDAw
IDAwICAuLi55Li4uLi4uLi4uLi4uCiAgICA4ODkwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCA3
OSAwMCAxMSAxNCAwQSAxMSA4MiAwQyAgLi4uLi4uLi55Li4uLi4uLgogICAgODhBMDogMDAgN0Yg
NDAgMDAgMDQgRTcgMDAgMDAgMDAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgIC4uQC4uLi4uLi4uLi55
Li4KICAgIDg4QjA6IDE0IDBBIDExIDgyIDBDIDAwIDdGIDQwIDAwIDA0IEU4IDAwIDAwIDAwIDAw
IDAwICAuLi4uLi4uQC4uLi4uLi4uCiAgICA4OEMwOiAwMCAwMCA3OSAwMCAxMSAxNCAwQSAxMSA4
MiAwQyAwMCA3RiAwMiAwMCAwNCBCNCAgLi55Li4uLi4uLi4uLi4uLgogICAgODhEMDogMDIgMDEg
QzAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgIC4uLi4uLi55Li4uLi4u
Li4KICAgIDg4RTA6IDdGIDAxIDAwIDA0IEIxIDAyIDAxIEMwIDAwIDAwIDAwIDAwIDc5IDAwIDBD
IDAxICAuLi4uLi4uLi4uLi55Li4uCiAgICA4OEYwOiAwMCAwMCAwMCAxMSAxNCAwQSAxMSA4MiAw
QyAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgODkwMDogMDAgMDAg
MDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgIC4uLi4uLnkuLi4uLi4u
Li4KICAgIDg5MTA6IDA4IDE4IDA0IEIzIDAyIDAxIEMwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0
IDBBICAuLi4uLi4uLi4uLnkuLi4uCiAgICA4OTIwOiAxMSA4MiAwQyAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgODkzMDogNzkgMDAg
MEMgMjEgMDIgMDAgMDAgMEMgNjkgMTAgMDAgMDAgMTAgNDcgMzUgNUMgIHkuLiEuLi4uaS4uLi5H
NVwKICAgIDg5NDA6IDJGIDAzIDVGIDUzIDQyIDVGIDUwIDRDIDU0IDQ2IDQzIDMwIDMyIDM5IDA4
IDVGICAvLl9TQl9QTFRGQzAyOS5fCiAgICA4OTUwOiA1MCA0MyA1NCAxMiAyQyAwMiAxMSAxNCAw
QSAxMSA4MiAwQyAwMCA3RiA0MCAwMCAgUENULiwuLi4uLi4uLi5ALgogICAgODk2MDogMDAgNjIg
MDAgMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgIC5iLi4uLi4uLnkuLi4u
Li4KICAgIDg5NzA6IDBDIDAwIDdGIDQwIDAwIDAwIDYzIDAwIDAxIEMwIDAwIDAwIDAwIDAwIDc5
IDAwICAuLi5ALi5jLi4uLi4uLnkuCiAgICA4OTgwOiAwOCA1RiA1MCA1MyA1MyAxMiA0NiAwNiAw
MyAxMiAyMCAwNiAwQyA2OCAxMCAwMCAgLl9QU1MuRi4uLiAuLmguLgogICAgODk5MDogMDAgMEMg
QjAgMTMgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMEMgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDg5QTA6IDBDIDAwIDAwIDAwIDAwIDBDIDAwIDAwIDAwIDAwIDEyIDIwIDA2IDBDIDk4
IDA4ICAuLi4uLi4uLi4uLiAuLi4uCiAgICA4OUIwOiAwMCAwMCAwQyAwNCAwNiAwMCAwMCAwQyAw
MCAwMCAwMCAwMCAwQyAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgODlDMDogMDAgMEMg
MDEgMDAgMDAgMDAgMEMgMDEgMDAgMDAgMDAgMTIgMjAgMDYgMEMgREMgIC4uLi4uLi4uLi4uLiAu
Li4KICAgIDg5RDA6IDA1IDAwIDAwIDBDIENGIDAzIDAwIDAwIDBDIDAwIDAwIDAwIDAwIDBDIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA4OUUwOiAwMCAwMCAwQyAwMiAwMCAwMCAwMCAwQyAw
MiAwMCAwMCAwMCAwOCA1OCA1MCA1MyAgLi4uLi4uLi4uLi4uLlhQUwogICAgODlGMDogNTMgMTIg
NEIgMEQgMDMgMTIgNDcgMDQgMDggMEMgNjggMTAgMDAgMDAgMEMgQjAgIFMuSy4uLkcuLi5oLi4u
Li4KICAgIDhBMDA6IDEzIDAwIDAwIDBDIDAwIDAwIDAwIDAwIDBDIDAwIDAwIDAwIDAwIDExIDBC
IDBBICAuLi4uLi4uLi4uLi4uLi4uCiAgICA4QTEwOiAwOCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAxMSAwQiAwQSAwOCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgOEEyMDogMDAgMDAg
MDAgMDAgMDAgMTEgMEIgMEEgMDggMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDhBMzA6IDAwIDExIDBCIDBBIDA4IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDEyIDQ3
IDA0ICAuLi4uLi4uLi4uLi4uLkcuCiAgICA4QTQwOiAwOCAwQyA5OCAwOCAwMCAwMCAwQyAwNCAw
NiAwMCAwMCAwQyAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgOEE1MDogMEMgMDAg
MDAgMDAgMDAgMTEgMEIgMEEgMDggMDEgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDhBNjA6IDAwIDExIDBCIDBBIDA4IDAxIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDExIDBC
IDBBICAuLi4uLi4uLi4uLi4uLi4uCiAgICA4QTcwOiAwOCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAxMSAwQiAwQSAwOCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgOEE4MDogMDAgMDAg
MDAgMDAgMDAgMTIgNDcgMDQgMDggMEMgREMgMDUgMDAgMDAgMEMgQ0YgIC4uLi4uLkcuLi4uLi4u
Li4KICAgIDhBOTA6IDAzIDAwIDAwIDBDIDAwIDAwIDAwIDAwIDBDIDAwIDAwIDAwIDAwIDExIDBC
IDBBICAuLi4uLi4uLi4uLi4uLi4uCiAgICA4QUEwOiAwOCAwMiAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAxMSAwQiAwQSAwOCAwMiAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgOEFCMDogMDAgMDAg
MDAgMDAgMDAgMTEgMEIgMEEgMDggMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDhBQzA6IDAwIDExIDBCIDBBIDA4IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDA4IDVG
IDUwICAuLi4uLi4uLi4uLi4uLl9QCiAgICA4QUQwOiA1MyA0NCAxMiAxOCAwMSAxMiAxNSAwNSAw
QSAwNSAwQSAwMCAwQyAxNCAwMCAwMCAgU0QuLi4uLi4uLi4uLi4uLgogICAgOEFFMDogMDAgMEMg
RkUgMDAgMDAgMDAgMEMgMDIgMDAgMDAgMDAgMDggNTAgNTAgNDMgNTYgIC4uLi4uLi4uLi4uLlBQ
Q1YKICAgIDhBRjA6IDBBIDAwIDE0IDBCIDVGIDUwIDUwIDQzIDAwIEE0IDUwIDUwIDQzIDU2IDA4
IDVGICAuLi4uX1BQQy4uUFBDVi5fCiAgICA4QjAwOiA0MyA1MCA0MyAxMiA0MCAxOSAxNyAwQSAx
NyAwQSAwMyAxMSAxNCAwQSAxMSA4MiAgQ1BDLkAuLi4uLi4uLi4uLgogICAgOEIxMDogMEMgMDAg
N0YgMDggMTggMDQgQjAgMDIgMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgIC4uLi4uLi4uLi4uLi4u
eS4KICAgIDhCMjA6IDExIDE0IDBBIDExIDgyIDBDIDAwIDdGIDA4IDEwIDA0IEIwIDAyIDAxIEMw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA4QjMwOiAwMCAwMCAwMCA3OSAwMCAxMSAxNCAwQSAx
MSA4MiAwQyAwMCA3RiAwOCAwOCAwNCAgLi4ueS4uLi4uLi4uLi4uLgogICAgOEI0MDogQjAgMDIg
MDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgIC4uLi4uLi4ueS4uLi4u
Li4KICAgIDhCNTA6IDAwIDdGIDA4IDAwIDA0IEIwIDAyIDAxIEMwIDAwIDAwIDAwIDAwIDc5IDAw
IDExICAuLi4uLi4uLi4uLi4ueS4uCiAgICA4QjYwOiAxNCAwQSAxMSA4MiAwQyAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgOEI3MDogMDAgMDAg
NzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgMDggMTAgMDQgQjMgIC4ueS4uLi4uLi4uLi4u
Li4KICAgIDhCODA6IDAyIDAxIEMwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0IDBBIDExIDgyIDBD
IDAwICAuLi4uLi4ueS4uLi4uLi4uCiAgICA4QjkwOiA3RiAwOCAwOCAwNCBCMyAwMiAwMSBDMCAw
MCAwMCAwMCAwMCA3OSAwMCAxMSAxNCAgLi4uLi4uLi4uLi4ueS4uLgogICAgOEJBMDogMEEgMTEg
ODIgMEMgMDAgN0YgMDggMDAgMDQgQjMgMDIgMDEgQzAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDhCQjA6IDAwIDc5IDAwIDExIDE0IDBBIDExIDgyIDBDIDAwIDAwIDAwIDAwIDAwIDAw
IDAwICAueS4uLi4uLi4uLi4uLi4uCiAgICA4QkMwOiAwMCAwMCAwMCAwMCAwMCAwMCA3OSAwMCAx
MSAxNCAwQSAxMSA4MiAwQyAwMCAwMCAgLi4uLi4ueS4uLi4uLi4uLgogICAgOEJEMDogMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgIC4uLi4uLi4uLi4ueS4u
Li4KICAgIDhCRTA6IDExIDgyIDBDIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA4QkYwOiA3OSAwMCAxMSAxNCAwQSAxMSA4MiAwQyAw
MCA3RiA0MCAwMCAwNCBFNyAwMCAwMCAgeS4uLi4uLi4uLkAuLi4uLgogICAgOEMwMDogMDAgMDAg
MDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgNDAgIC4uLi4ueS4uLi4uLi4u
LkAKICAgIDhDMTA6IDAwIDA0IEU4IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0IDBB
IDExICAuLi4uLi4uLi4ueS4uLi4uCiAgICA4QzIwOiA4MiAwQyAwMCA3RiAwMiAwMCAwNCBCNCAw
MiAwMSBDMCAwMCAwMCAwMCAwMCA3OSAgLi4uLi4uLi4uLi4uLi4ueQogICAgOEMzMDogMDAgMTEg
MTQgMEEgMTEgODIgMEMgMDAgN0YgMDEgMDAgMDQgQjEgMDIgMDEgQzAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDhDNDA6IDAwIDAwIDAwIDAwIDc5IDAwIDBDIDAxIDAwIDAwIDAwIDExIDE0IDBBIDEx
IDgyICAuLi4ueS4uLi4uLi4uLi4uCiAgICA4QzUwOiAwQyAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCA3OSAwMCAgLi4uLi4uLi4uLi4uLi55LgogICAgOEM2MDogMTEgMTQg
MEEgMTEgODIgMEMgMDAgN0YgMDggMTggMDQgQjMgMDIgMDEgQzAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDhDNzA6IDAwIDAwIDAwIDc5IDAwIDExIDE0IDBBIDExIDgyIDBDIDAwIDAwIDAwIDAw
IDAwICAuLi55Li4uLi4uLi4uLi4uCiAgICA4QzgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCA3
OSAwMCAwQyAyMSAwMiAwMCAwMCAwQyAgLi4uLi4uLi55Li4hLi4uLgogICAgOEM5MDogNjkgMTAg
MDAgMDAgMTAgNDcgMzUgNUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAgNEMgIGkuLi4uRzVcLy5fU0Jf
UEwKICAgIDhDQTA6IDU0IDQ2IDQzIDMwIDMyIDQxIDA4IDVGIDUwIDQzIDU0IDEyIDJDIDAyIDEx
IDE0ICBURkMwMkEuX1BDVC4sLi4uCiAgICA4Q0IwOiAwQSAxMSA4MiAwQyAwMCA3RiA0MCAwMCAw
MCA2MiAwMCAwMSBDMCAwMCAwMCAwMCAgLi4uLi4uQC4uYi4uLi4uLgogICAgOENDMDogMDAgNzkg
MDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgNDAgMDAgMDAgNjMgMDAgIC55Li4uLi4uLi4uQC4u
Yy4KICAgIDhDRDA6IDAxIEMwIDAwIDAwIDAwIDAwIDc5IDAwIDA4IDVGIDUwIDUzIDUzIDEyIDQ2
IDA2ICAuLi4uLi55Li5fUFNTLkYuCiAgICA4Q0UwOiAwMyAxMiAyMCAwNiAwQyA2OCAxMCAwMCAw
MCAwQyBCMCAxMyAwMCAwMCAwQyAwMCAgLi4gLi5oLi4uLi4uLi4uLgogICAgOENGMDogMDAgMDAg
MDAgMEMgMDAgMDAgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMEMgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDhEMDA6IDAwIDAwIDEyIDIwIDA2IDBDIDk4IDA4IDAwIDAwIDBDIDA0IDA2IDAwIDAw
IDBDICAuLi4gLi4uLi4uLi4uLi4uCiAgICA4RDEwOiAwMCAwMCAwMCAwMCAwQyAwMCAwMCAwMCAw
MCAwQyAwMSAwMCAwMCAwMCAwQyAwMSAgLi4uLi4uLi4uLi4uLi4uLgogICAgOEQyMDogMDAgMDAg
MDAgMTIgMjAgMDYgMEMgREMgMDUgMDAgMDAgMEMgQ0YgMDMgMDAgMDAgIC4uLi4gLi4uLi4uLi4u
Li4KICAgIDhEMzA6IDBDIDAwIDAwIDAwIDAwIDBDIDAwIDAwIDAwIDAwIDBDIDAyIDAwIDAwIDAw
IDBDICAuLi4uLi4uLi4uLi4uLi4uCiAgICA4RDQwOiAwMiAwMCAwMCAwMCAwOCA1OCA1MCA1MyA1
MyAxMiA0QiAwRCAwMyAxMiA0NyAwNCAgLi4uLi5YUFNTLksuLi5HLgogICAgOEQ1MDogMDggMEMg
NjggMTAgMDAgMDAgMEMgQjAgMTMgMDAgMDAgMEMgMDAgMDAgMDAgMDAgIC4uaC4uLi4uLi4uLi4u
Li4KICAgIDhENjA6IDBDIDAwIDAwIDAwIDAwIDExIDBCIDBBIDA4IDAwIDAwIDAwIDAwIDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA4RDcwOiAwMCAxMSAwQiAwQSAwOCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAxMSAwQiAwQSAgLi4uLi4uLi4uLi4uLi4uLgogICAgOEQ4MDogMDggMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMTEgMEIgMEEgMDggMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDhEOTA6IDAwIDAwIDAwIDAwIDAwIDEyIDQ3IDA0IDA4IDBDIDk4IDA4IDAwIDAwIDBD
IDA0ICAuLi4uLi5HLi4uLi4uLi4uCiAgICA4REEwOiAwNiAwMCAwMCAwQyAwMCAwMCAwMCAwMCAw
QyAwMCAwMCAwMCAwMCAxMSAwQiAwQSAgLi4uLi4uLi4uLi4uLi4uLgogICAgOERCMDogMDggMDEg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMTEgMEIgMEEgMDggMDEgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDhEQzA6IDAwIDAwIDAwIDAwIDAwIDExIDBCIDBBIDA4IDAwIDAwIDAwIDAwIDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA4REQwOiAwMCAxMSAwQiAwQSAwOCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAxMiA0NyAwNCAgLi4uLi4uLi4uLi4uLi5HLgogICAgOERFMDogMDggMEMg
REMgMDUgMDAgMDAgMEMgQ0YgMDMgMDAgMDAgMEMgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDhERjA6IDBDIDAwIDAwIDAwIDAwIDExIDBCIDBBIDA4IDAyIDAwIDAwIDAwIDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA4RTAwOiAwMCAxMSAwQiAwQSAwOCAwMiAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAxMSAwQiAwQSAgLi4uLi4uLi4uLi4uLi4uLgogICAgOEUxMDogMDggMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMTEgMEIgMEEgMDggMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDhFMjA6IDAwIDAwIDAwIDAwIDAwIDA4IDVGIDUwIDUzIDQ0IDEyIDE4IDAxIDEyIDE1
IDA1ICAuLi4uLi5fUFNELi4uLi4uCiAgICA4RTMwOiAwQSAwNSAwQSAwMCAwQyAxNSAwMCAwMCAw
MCAwQyBGRSAwMCAwMCAwMCAwQyAwMiAgLi4uLi4uLi4uLi4uLi4uLgogICAgOEU0MDogMDAgMDAg
MDAgMDggNTAgNTAgNDMgNTYgMEEgMDAgMTQgMEIgNUYgNTAgNTAgNDMgIC4uLi5QUENWLi4uLl9Q
UEMKICAgIDhFNTA6IDAwIEE0IDUwIDUwIDQzIDU2IDA4IDVGIDQzIDUwIDQzIDEyIDQwIDE5IDE3
IDBBICAuLlBQQ1YuX0NQQy5ALi4uCiAgICA4RTYwOiAxNyAwQSAwMyAxMSAxNCAwQSAxMSA4MiAw
QyAwMCA3RiAwOCAxOCAwNCBCMCAwMiAgLi4uLi4uLi4uLi4uLi4uLgogICAgOEU3MDogMDEgQzAg
MDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgIC4uLi4uLnkuLi4uLi4u
Li4KICAgIDhFODA6IDA4IDEwIDA0IEIwIDAyIDAxIEMwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0
IDBBICAuLi4uLi4uLi4uLnkuLi4uCiAgICA4RTkwOiAxMSA4MiAwQyAwMCA3RiAwOCAwOCAwNCBC
MCAwMiAwMSBDMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgOEVBMDogNzkgMDAg
MTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgMDggMDAgMDQgQjAgMDIgMDEgIHkuLi4uLi4uLi4uLi4u
Li4KICAgIDhFQjA6IEMwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0IDBBIDExIDgyIDBDIDAwIDAw
IDAwICAuLi4uLnkuLi4uLi4uLi4uCiAgICA4RUMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCA3OSAwMCAxMSAxNCAwQSAxMSAgLi4uLi4uLi4uLnkuLi4uLgogICAgOEVEMDogODIgMEMg
MDAgN0YgMDggMTAgMDQgQjMgMDIgMDEgQzAgMDAgMDAgMDAgMDAgNzkgIC4uLi4uLi4uLi4uLi4u
LnkKICAgIDhFRTA6IDAwIDExIDE0IDBBIDExIDgyIDBDIDAwIDdGIDA4IDA4IDA0IEIzIDAyIDAx
IEMwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA4RUYwOiAwMCAwMCAwMCAwMCA3OSAwMCAxMSAxNCAw
QSAxMSA4MiAwQyAwMCA3RiAwOCAwMCAgLi4uLnkuLi4uLi4uLi4uLgogICAgOEYwMDogMDQgQjMg
MDIgMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgIC4uLi4uLi4uLnkuLi4u
Li4KICAgIDhGMTA6IDBDIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDc5
IDAwICAuLi4uLi4uLi4uLi4uLnkuCiAgICA4RjIwOiAxMSAxNCAwQSAxMSA4MiAwQyAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgOEYzMDogMDAgMDAg
MDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgMDAgMDAgMDAgMDAgIC4uLnkuLi4uLi4uLi4u
Li4KICAgIDhGNDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0IDBBIDExIDgy
IDBDICAuLi4uLi4uLnkuLi4uLi4uCiAgICA4RjUwOiAwMCA3RiA0MCAwMCAwNCBFNyAwMCAwMCAw
MCAwMCAwMCAwMCAwMCA3OSAwMCAxMSAgLi5ALi4uLi4uLi4uLnkuLgogICAgOEY2MDogMTQgMEEg
MTEgODIgMEMgMDAgN0YgNDAgMDAgMDQgRTggMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi5ALi4uLi4u
Li4KICAgIDhGNzA6IDAwIDAwIDc5IDAwIDExIDE0IDBBIDExIDgyIDBDIDAwIDdGIDAyIDAwIDA0
IEI0ICAuLnkuLi4uLi4uLi4uLi4uCiAgICA4RjgwOiAwMiAwMSBDMCAwMCAwMCAwMCAwMCA3OSAw
MCAxMSAxNCAwQSAxMSA4MiAwQyAwMCAgLi4uLi4uLnkuLi4uLi4uLgogICAgOEY5MDogN0YgMDEg
MDAgMDQgQjEgMDIgMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgMEMgMDEgIC4uLi4uLi4uLi4uLnku
Li4KICAgIDhGQTA6IDAwIDAwIDAwIDExIDE0IDBBIDExIDgyIDBDIDAwIDAwIDAwIDAwIDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA4RkIwOiAwMCAwMCAwMCAwMCAwMCAwMCA3OSAwMCAx
MSAxNCAwQSAxMSA4MiAwQyAwMCA3RiAgLi4uLi4ueS4uLi4uLi4uLgogICAgOEZDMDogMDggMTgg
MDQgQjMgMDIgMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgIC4uLi4uLi4uLi4ueS4u
Li4KICAgIDhGRDA6IDExIDgyIDBDIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA4RkUwOiA3OSAwMCAwQyAyMSAwMiAwMCAwMCAwQyA2
OSAxMCAwMCAwMCAxMCA0NyAzNSA1QyAgeS4uIS4uLi5pLi4uLkc1XAogICAgOEZGMDogMkYgMDMg
NUYgNTMgNDIgNUYgNTAgNEMgNTQgNDYgNDMgMzAgMzIgNDIgMDggNUYgIC8uX1NCX1BMVEZDMDJC
Ll8KICAgIDkwMDA6IDUwIDQzIDU0IDEyIDJDIDAyIDExIDE0IDBBIDExIDgyIDBDIDAwIDdGIDQw
IDAwICBQQ1QuLC4uLi4uLi4uLkAuCiAgICA5MDEwOiAwMCA2MiAwMCAwMSBDMCAwMCAwMCAwMCAw
MCA3OSAwMCAxMSAxNCAwQSAxMSA4MiAgLmIuLi4uLi4ueS4uLi4uLgogICAgOTAyMDogMEMgMDAg
N0YgNDAgMDAgMDAgNjMgMDAgMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgIC4uLkAuLmMuLi4uLi4u
eS4KICAgIDkwMzA6IDA4IDVGIDUwIDUzIDUzIDEyIDQ2IDA2IDAzIDEyIDIwIDA2IDBDIDY4IDEw
IDAwICAuX1BTUy5GLi4uIC4uaC4uCiAgICA5MDQwOiAwMCAwQyBCMCAxMyAwMCAwMCAwQyAwMCAw
MCAwMCAwMCAwQyAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgOTA1MDogMEMgMDAg
MDAgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMTIgMjAgMDYgMEMgOTggMDggIC4uLi4uLi4uLi4uIC4u
Li4KICAgIDkwNjA6IDAwIDAwIDBDIDA0IDA2IDAwIDAwIDBDIDAwIDAwIDAwIDAwIDBDIDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA5MDcwOiAwMCAwQyAwMSAwMCAwMCAwMCAwQyAwMSAw
MCAwMCAwMCAxMiAyMCAwNiAwQyBEQyAgLi4uLi4uLi4uLi4uIC4uLgogICAgOTA4MDogMDUgMDAg
MDAgMEMgQ0YgMDMgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMEMgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDkwOTA6IDAwIDAwIDBDIDAyIDAwIDAwIDAwIDBDIDAyIDAwIDAwIDAwIDA4IDU4IDUw
IDUzICAuLi4uLi4uLi4uLi4uWFBTCiAgICA5MEEwOiA1MyAxMiA0QiAwRCAwMyAxMiA0NyAwNCAw
OCAwQyA2OCAxMCAwMCAwMCAwQyBCMCAgUy5LLi4uRy4uLmguLi4uLgogICAgOTBCMDogMTMgMDAg
MDAgMEMgMDAgMDAgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMTEgMEIgMEEgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDkwQzA6IDA4IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDExIDBCIDBBIDA4IDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA5MEQwOiAwMCAwMCAwMCAwMCAwMCAxMSAwQiAwQSAw
OCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgOTBFMDogMDAgMTEg
MEIgMEEgMDggMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMTIgNDcgMDQgIC4uLi4uLi4uLi4uLi4u
Ry4KICAgIDkwRjA6IDA4IDBDIDk4IDA4IDAwIDAwIDBDIDA0IDA2IDAwIDAwIDBDIDAwIDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA5MTAwOiAwQyAwMCAwMCAwMCAwMCAxMSAwQiAwQSAw
OCAwMSAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgOTExMDogMDAgMTEg
MEIgMEEgMDggMDEgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMTEgMEIgMEEgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDkxMjA6IDA4IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDExIDBCIDBBIDA4IDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA5MTMwOiAwMCAwMCAwMCAwMCAwMCAxMiA0NyAwNCAw
OCAwQyBEQyAwNSAwMCAwMCAwQyBDRiAgLi4uLi4uRy4uLi4uLi4uLgogICAgOTE0MDogMDMgMDAg
MDAgMEMgMDAgMDAgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMTEgMEIgMEEgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDkxNTA6IDA4IDAyIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDExIDBCIDBBIDA4IDAyIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA5MTYwOiAwMCAwMCAwMCAwMCAwMCAxMSAwQiAwQSAw
OCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgOTE3MDogMDAgMTEg
MEIgMEEgMDggMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDggNUYgNTAgIC4uLi4uLi4uLi4uLi4u
X1AKICAgIDkxODA6IDUzIDQ0IDEyIDE4IDAxIDEyIDE1IDA1IDBBIDA1IDBBIDAwIDBDIDE1IDAw
IDAwICBTRC4uLi4uLi4uLi4uLi4uCiAgICA5MTkwOiAwMCAwQyBGRSAwMCAwMCAwMCAwQyAwMiAw
MCAwMCAwMCAwOCA1MCA1MCA0MyA1NiAgLi4uLi4uLi4uLi4uUFBDVgogICAgOTFBMDogMEEgMDAg
MTQgMEIgNUYgNTAgNTAgNDMgMDAgQTQgNTAgNTAgNDMgNTYgMDggNUYgIC4uLi5fUFBDLi5QUENW
Ll8KICAgIDkxQjA6IDQzIDUwIDQzIDEyIDQwIDE5IDE3IDBBIDE3IDBBIDAzIDExIDE0IDBBIDEx
IDgyICBDUEMuQC4uLi4uLi4uLi4uCiAgICA5MUMwOiAwQyAwMCA3RiAwOCAxOCAwNCBCMCAwMiAw
MSBDMCAwMCAwMCAwMCAwMCA3OSAwMCAgLi4uLi4uLi4uLi4uLi55LgogICAgOTFEMDogMTEgMTQg
MEEgMTEgODIgMEMgMDAgN0YgMDggMTAgMDQgQjAgMDIgMDEgQzAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDkxRTA6IDAwIDAwIDAwIDc5IDAwIDExIDE0IDBBIDExIDgyIDBDIDAwIDdGIDA4IDA4
IDA0ICAuLi55Li4uLi4uLi4uLi4uCiAgICA5MUYwOiBCMCAwMiAwMSBDMCAwMCAwMCAwMCAwMCA3
OSAwMCAxMSAxNCAwQSAxMSA4MiAwQyAgLi4uLi4uLi55Li4uLi4uLgogICAgOTIwMDogMDAgN0Yg
MDggMDAgMDQgQjAgMDIgMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgIC4uLi4uLi4uLi4uLi55
Li4KICAgIDkyMTA6IDE0IDBBIDExIDgyIDBDIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA5MjIwOiAwMCAwMCA3OSAwMCAxMSAxNCAwQSAxMSA4
MiAwQyAwMCA3RiAwOCAxMCAwNCBCMyAgLi55Li4uLi4uLi4uLi4uLgogICAgOTIzMDogMDIgMDEg
QzAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgIC4uLi4uLi55Li4uLi4u
Li4KICAgIDkyNDA6IDdGIDA4IDA4IDA0IEIzIDAyIDAxIEMwIDAwIDAwIDAwIDAwIDc5IDAwIDEx
IDE0ICAuLi4uLi4uLi4uLi55Li4uCiAgICA5MjUwOiAwQSAxMSA4MiAwQyAwMCA3RiAwOCAwMCAw
NCBCMyAwMiAwMSBDMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgOTI2MDogMDAgNzkg
MDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC55Li4uLi4uLi4uLi4u
Li4KICAgIDkyNzA6IDAwIDAwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0IDBBIDExIDgyIDBDIDAw
IDAwICAuLi4uLi55Li4uLi4uLi4uCiAgICA5MjgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCA3OSAwMCAxMSAxNCAwQSAgLi4uLi4uLi4uLi55Li4uLgogICAgOTI5MDogMTEgODIg
MEMgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDkyQTA6IDc5IDAwIDExIDE0IDBBIDExIDgyIDBDIDAwIDdGIDQwIDAwIDA0IEU3IDAw
IDAwICB5Li4uLi4uLi4uQC4uLi4uCiAgICA5MkIwOiAwMCAwMCAwMCAwMCAwMCA3OSAwMCAxMSAx
NCAwQSAxMSA4MiAwQyAwMCA3RiA0MCAgLi4uLi55Li4uLi4uLi4uQAogICAgOTJDMDogMDAgMDQg
RTggMDAgMDAgMDAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgIC4uLi4uLi4uLi55Li4u
Li4KICAgIDkyRDA6IDgyIDBDIDAwIDdGIDAyIDAwIDA0IEI0IDAyIDAxIEMwIDAwIDAwIDAwIDAw
IDc5ICAuLi4uLi4uLi4uLi4uLi55CiAgICA5MkUwOiAwMCAxMSAxNCAwQSAxMSA4MiAwQyAwMCA3
RiAwMSAwMCAwNCBCMSAwMiAwMSBDMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgOTJGMDogMDAgMDAg
MDAgMDAgNzkgMDAgMEMgMDEgMDAgMDAgMDAgMTEgMTQgMEEgMTEgODIgIC4uLi55Li4uLi4uLi4u
Li4KICAgIDkzMDA6IDBDIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDc5
IDAwICAuLi4uLi4uLi4uLi4uLnkuCiAgICA5MzEwOiAxMSAxNCAwQSAxMSA4MiAwQyAwMCA3RiAw
OCAxOCAwNCBCMyAwMiAwMSBDMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgOTMyMDogMDAgMDAg
MDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgMDAgMDAgMDAgMDAgIC4uLnkuLi4uLi4uLi4u
Li4KICAgIDkzMzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDc5IDAwIDBDIDIxIDAyIDAwIDAw
IDBDICAuLi4uLi4uLnkuLiEuLi4uCiAgICA5MzQwOiA2OSAxMCAwMCAwMCAxMCA0NyAzNSA1QyAy
RiAwMyA1RiA1MyA0MiA1RiA1MCA0QyAgaS4uLi5HNVwvLl9TQl9QTAogICAgOTM1MDogNTQgNDYg
NDMgMzAgMzIgNDMgMDggNUYgNTAgNDMgNTQgMTIgMkMgMDIgMTEgMTQgIFRGQzAyQy5fUENULiwu
Li4KICAgIDkzNjA6IDBBIDExIDgyIDBDIDAwIDdGIDQwIDAwIDAwIDYyIDAwIDAxIEMwIDAwIDAw
IDAwICAuLi4uLi5ALi5iLi4uLi4uCiAgICA5MzcwOiAwMCA3OSAwMCAxMSAxNCAwQSAxMSA4MiAw
QyAwMCA3RiA0MCAwMCAwMCA2MyAwMCAgLnkuLi4uLi4uLi5ALi5jLgogICAgOTM4MDogMDEgQzAg
MDAgMDAgMDAgMDAgNzkgMDAgMDggNUYgNTAgNTMgNTMgMTIgNDYgMDYgIC4uLi4uLnkuLl9QU1Mu
Ri4KICAgIDkzOTA6IDAzIDEyIDIwIDA2IDBDIDY4IDEwIDAwIDAwIDBDIEIwIDEzIDAwIDAwIDBD
IDAwICAuLiAuLmguLi4uLi4uLi4uCiAgICA5M0EwOiAwMCAwMCAwMCAwQyAwMCAwMCAwMCAwMCAw
QyAwMCAwMCAwMCAwMCAwQyAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgOTNCMDogMDAgMDAg
MTIgMjAgMDYgMEMgOTggMDggMDAgMDAgMEMgMDQgMDYgMDAgMDAgMEMgIC4uLiAuLi4uLi4uLi4u
Li4KICAgIDkzQzA6IDAwIDAwIDAwIDAwIDBDIDAwIDAwIDAwIDAwIDBDIDAxIDAwIDAwIDAwIDBD
IDAxICAuLi4uLi4uLi4uLi4uLi4uCiAgICA5M0QwOiAwMCAwMCAwMCAxMiAyMCAwNiAwQyBEQyAw
NSAwMCAwMCAwQyBDRiAwMyAwMCAwMCAgLi4uLiAuLi4uLi4uLi4uLgogICAgOTNFMDogMEMgMDAg
MDAgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMEMgMDIgMDAgMDAgMDAgMEMgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDkzRjA6IDAyIDAwIDAwIDAwIDA4IDU4IDUwIDUzIDUzIDEyIDRCIDBEIDAzIDEyIDQ3
IDA0ICAuLi4uLlhQU1MuSy4uLkcuCiAgICA5NDAwOiAwOCAwQyA2OCAxMCAwMCAwMCAwQyBCMCAx
MyAwMCAwMCAwQyAwMCAwMCAwMCAwMCAgLi5oLi4uLi4uLi4uLi4uLgogICAgOTQxMDogMEMgMDAg
MDAgMDAgMDAgMTEgMEIgMEEgMDggMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDk0MjA6IDAwIDExIDBCIDBBIDA4IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDExIDBC
IDBBICAuLi4uLi4uLi4uLi4uLi4uCiAgICA5NDMwOiAwOCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAxMSAwQiAwQSAwOCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgOTQ0MDogMDAgMDAg
MDAgMDAgMDAgMTIgNDcgMDQgMDggMEMgOTggMDggMDAgMDAgMEMgMDQgIC4uLi4uLkcuLi4uLi4u
Li4KICAgIDk0NTA6IDA2IDAwIDAwIDBDIDAwIDAwIDAwIDAwIDBDIDAwIDAwIDAwIDAwIDExIDBC
IDBBICAuLi4uLi4uLi4uLi4uLi4uCiAgICA5NDYwOiAwOCAwMSAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAxMSAwQiAwQSAwOCAwMSAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgOTQ3MDogMDAgMDAg
MDAgMDAgMDAgMTEgMEIgMEEgMDggMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDk0ODA6IDAwIDExIDBCIDBBIDA4IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDEyIDQ3
IDA0ICAuLi4uLi4uLi4uLi4uLkcuCiAgICA5NDkwOiAwOCAwQyBEQyAwNSAwMCAwMCAwQyBDRiAw
MyAwMCAwMCAwQyAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgOTRBMDogMEMgMDAg
MDAgMDAgMDAgMTEgMEIgMEEgMDggMDIgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDk0QjA6IDAwIDExIDBCIDBBIDA4IDAyIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDExIDBC
IDBBICAuLi4uLi4uLi4uLi4uLi4uCiAgICA5NEMwOiAwOCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAxMSAwQiAwQSAwOCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgOTREMDogMDAgMDAg
MDAgMDAgMDAgMDggNUYgNTAgNTMgNDQgMTIgMTggMDEgMTIgMTUgMDUgIC4uLi4uLl9QU0QuLi4u
Li4KICAgIDk0RTA6IDBBIDA1IDBBIDAwIDBDIDE2IDAwIDAwIDAwIDBDIEZFIDAwIDAwIDAwIDBD
IDAyICAuLi4uLi4uLi4uLi4uLi4uCiAgICA5NEYwOiAwMCAwMCAwMCAwOCA1MCA1MCA0MyA1NiAw
QSAwMCAxNCAwQiA1RiA1MCA1MCA0MyAgLi4uLlBQQ1YuLi4uX1BQQwogICAgOTUwMDogMDAgQTQg
NTAgNTAgNDMgNTYgMDggNUYgNDMgNTAgNDMgMTIgNDAgMTkgMTcgMEEgIC4uUFBDVi5fQ1BDLkAu
Li4KICAgIDk1MTA6IDE3IDBBIDAzIDExIDE0IDBBIDExIDgyIDBDIDAwIDdGIDA4IDE4IDA0IEIw
IDAyICAuLi4uLi4uLi4uLi4uLi4uCiAgICA5NTIwOiAwMSBDMCAwMCAwMCAwMCAwMCA3OSAwMCAx
MSAxNCAwQSAxMSA4MiAwQyAwMCA3RiAgLi4uLi4ueS4uLi4uLi4uLgogICAgOTUzMDogMDggMTAg
MDQgQjAgMDIgMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgIC4uLi4uLi4uLi4ueS4u
Li4KICAgIDk1NDA6IDExIDgyIDBDIDAwIDdGIDA4IDA4IDA0IEIwIDAyIDAxIEMwIDAwIDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA5NTUwOiA3OSAwMCAxMSAxNCAwQSAxMSA4MiAwQyAw
MCA3RiAwOCAwMCAwNCBCMCAwMiAwMSAgeS4uLi4uLi4uLi4uLi4uLgogICAgOTU2MDogQzAgMDAg
MDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgMDAgMDAgIC4uLi4ueS4uLi4uLi4u
Li4KICAgIDk1NzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0IDBB
IDExICAuLi4uLi4uLi4ueS4uLi4uCiAgICA5NTgwOiA4MiAwQyAwMCA3RiAwOCAxMCAwNCBCMyAw
MiAwMSBDMCAwMCAwMCAwMCAwMCA3OSAgLi4uLi4uLi4uLi4uLi4ueQogICAgOTU5MDogMDAgMTEg
MTQgMEEgMTEgODIgMEMgMDAgN0YgMDggMDggMDQgQjMgMDIgMDEgQzAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDk1QTA6IDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0IDBBIDExIDgyIDBDIDAwIDdGIDA4
IDAwICAuLi4ueS4uLi4uLi4uLi4uCiAgICA5NUIwOiAwNCBCMyAwMiAwMSBDMCAwMCAwMCAwMCAw
MCA3OSAwMCAxMSAxNCAwQSAxMSA4MiAgLi4uLi4uLi4ueS4uLi4uLgogICAgOTVDMDogMEMgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgNzkgMDAgIC4uLi4uLi4uLi4uLi4u
eS4KICAgIDk1RDA6IDExIDE0IDBBIDExIDgyIDBDIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA5NUUwOiAwMCAwMCAwMCA3OSAwMCAxMSAxNCAwQSAx
MSA4MiAwQyAwMCAwMCAwMCAwMCAwMCAgLi4ueS4uLi4uLi4uLi4uLgogICAgOTVGMDogMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgIC4uLi4uLi4ueS4uLi4u
Li4KICAgIDk2MDA6IDAwIDdGIDQwIDAwIDA0IEU3IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDc5IDAw
IDExICAuLkAuLi4uLi4uLi4ueS4uCiAgICA5NjEwOiAxNCAwQSAxMSA4MiAwQyAwMCA3RiA0MCAw
MCAwNCBFOCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLkAuLi4uLi4uLgogICAgOTYyMDogMDAgMDAg
NzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgMDIgMDAgMDQgQjQgIC4ueS4uLi4uLi4uLi4u
Li4KICAgIDk2MzA6IDAyIDAxIEMwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0IDBBIDExIDgyIDBD
IDAwICAuLi4uLi4ueS4uLi4uLi4uCiAgICA5NjQwOiA3RiAwMSAwMCAwNCBCMSAwMiAwMSBDMCAw
MCAwMCAwMCAwMCA3OSAwMCAwQyAwMSAgLi4uLi4uLi4uLi4ueS4uLgogICAgOTY1MDogMDAgMDAg
MDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDk2NjA6IDAwIDAwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0IDBBIDExIDgyIDBDIDAw
IDdGICAuLi4uLi55Li4uLi4uLi4uCiAgICA5NjcwOiAwOCAxOCAwNCBCMyAwMiAwMSBDMCAwMCAw
MCAwMCAwMCA3OSAwMCAxMSAxNCAwQSAgLi4uLi4uLi4uLi55Li4uLgogICAgOTY4MDogMTEgODIg
MEMgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDk2OTA6IDc5IDAwIDBDIDIxIDAyIDAwIDAwIDBDIDY5IDEwIDAwIDAwIDEwIDQ3IDM1
IDVDICB5Li4hLi4uLmkuLi4uRzVcCiAgICA5NkEwOiAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0QyA1
NCA0NiA0MyAzMCAzMiA0NCAwOCA1RiAgLy5fU0JfUExURkMwMkQuXwogICAgOTZCMDogNTAgNDMg
NTQgMTIgMkMgMDIgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgNDAgMDAgIFBDVC4sLi4uLi4uLi4u
QC4KICAgIDk2QzA6IDAwIDYyIDAwIDAxIEMwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0IDBBIDEx
IDgyICAuYi4uLi4uLi55Li4uLi4uCiAgICA5NkQwOiAwQyAwMCA3RiA0MCAwMCAwMCA2MyAwMCAw
MSBDMCAwMCAwMCAwMCAwMCA3OSAwMCAgLi4uQC4uYy4uLi4uLi55LgogICAgOTZFMDogMDggNUYg
NTAgNTMgNTMgMTIgNDYgMDYgMDMgMTIgMjAgMDYgMEMgNjggMTAgMDAgIC5fUFNTLkYuLi4gLi5o
Li4KICAgIDk2RjA6IDAwIDBDIEIwIDEzIDAwIDAwIDBDIDAwIDAwIDAwIDAwIDBDIDAwIDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA5NzAwOiAwQyAwMCAwMCAwMCAwMCAwQyAwMCAwMCAw
MCAwMCAxMiAyMCAwNiAwQyA5OCAwOCAgLi4uLi4uLi4uLi4gLi4uLgogICAgOTcxMDogMDAgMDAg
MEMgMDQgMDYgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMEMgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDk3MjA6IDAwIDBDIDAxIDAwIDAwIDAwIDBDIDAxIDAwIDAwIDAwIDEyIDIwIDA2IDBD
IERDICAuLi4uLi4uLi4uLi4gLi4uCiAgICA5NzMwOiAwNSAwMCAwMCAwQyBDRiAwMyAwMCAwMCAw
QyAwMCAwMCAwMCAwMCAwQyAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgOTc0MDogMDAgMDAg
MEMgMDIgMDAgMDAgMDAgMEMgMDIgMDAgMDAgMDAgMDggNTggNTAgNTMgIC4uLi4uLi4uLi4uLi5Y
UFMKICAgIDk3NTA6IDUzIDEyIDRCIDBEIDAzIDEyIDQ3IDA0IDA4IDBDIDY4IDEwIDAwIDAwIDBD
IEIwICBTLksuLi5HLi4uaC4uLi4uCiAgICA5NzYwOiAxMyAwMCAwMCAwQyAwMCAwMCAwMCAwMCAw
QyAwMCAwMCAwMCAwMCAxMSAwQiAwQSAgLi4uLi4uLi4uLi4uLi4uLgogICAgOTc3MDogMDggMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMTEgMEIgMEEgMDggMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDk3ODA6IDAwIDAwIDAwIDAwIDAwIDExIDBCIDBBIDA4IDAwIDAwIDAwIDAwIDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA5NzkwOiAwMCAxMSAwQiAwQSAwOCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAxMiA0NyAwNCAgLi4uLi4uLi4uLi4uLi5HLgogICAgOTdBMDogMDggMEMg
OTggMDggMDAgMDAgMEMgMDQgMDYgMDAgMDAgMEMgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDk3QjA6IDBDIDAwIDAwIDAwIDAwIDExIDBCIDBBIDA4IDAxIDAwIDAwIDAwIDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA5N0MwOiAwMCAxMSAwQiAwQSAwOCAwMSAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAxMSAwQiAwQSAgLi4uLi4uLi4uLi4uLi4uLgogICAgOTdEMDogMDggMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMTEgMEIgMEEgMDggMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDk3RTA6IDAwIDAwIDAwIDAwIDAwIDEyIDQ3IDA0IDA4IDBDIERDIDA1IDAwIDAwIDBD
IENGICAuLi4uLi5HLi4uLi4uLi4uCiAgICA5N0YwOiAwMyAwMCAwMCAwQyAwMCAwMCAwMCAwMCAw
QyAwMCAwMCAwMCAwMCAxMSAwQiAwQSAgLi4uLi4uLi4uLi4uLi4uLgogICAgOTgwMDogMDggMDIg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMTEgMEIgMEEgMDggMDIgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDk4MTA6IDAwIDAwIDAwIDAwIDAwIDExIDBCIDBBIDA4IDAwIDAwIDAwIDAwIDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA5ODIwOiAwMCAxMSAwQiAwQSAwOCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwOCA1RiA1MCAgLi4uLi4uLi4uLi4uLi5fUAogICAgOTgzMDogNTMgNDQg
MTIgMTggMDEgMTIgMTUgMDUgMEEgMDUgMEEgMDAgMEMgMTYgMDAgMDAgIFNELi4uLi4uLi4uLi4u
Li4KICAgIDk4NDA6IDAwIDBDIEZFIDAwIDAwIDAwIDBDIDAyIDAwIDAwIDAwIDA4IDUwIDUwIDQz
IDU2ICAuLi4uLi4uLi4uLi5QUENWCiAgICA5ODUwOiAwQSAwMCAxNCAwQiA1RiA1MCA1MCA0MyAw
MCBBNCA1MCA1MCA0MyA1NiAwOCA1RiAgLi4uLl9QUEMuLlBQQ1YuXwogICAgOTg2MDogNDMgNTAg
NDMgMTIgNDAgMTkgMTcgMEEgMTcgMEEgMDMgMTEgMTQgMEEgMTEgODIgIENQQy5ALi4uLi4uLi4u
Li4KICAgIDk4NzA6IDBDIDAwIDdGIDA4IDE4IDA0IEIwIDAyIDAxIEMwIDAwIDAwIDAwIDAwIDc5
IDAwICAuLi4uLi4uLi4uLi4uLnkuCiAgICA5ODgwOiAxMSAxNCAwQSAxMSA4MiAwQyAwMCA3RiAw
OCAxMCAwNCBCMCAwMiAwMSBDMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgOTg5MDogMDAgMDAg
MDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgMDggMDggMDQgIC4uLnkuLi4uLi4uLi4u
Li4KICAgIDk4QTA6IEIwIDAyIDAxIEMwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0IDBBIDExIDgy
IDBDICAuLi4uLi4uLnkuLi4uLi4uCiAgICA5OEIwOiAwMCA3RiAwOCAwMCAwNCBCMCAwMiAwMSBD
MCAwMCAwMCAwMCAwMCA3OSAwMCAxMSAgLi4uLi4uLi4uLi4uLnkuLgogICAgOThDMDogMTQgMEEg
MTEgODIgMEMgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDk4RDA6IDAwIDAwIDc5IDAwIDExIDE0IDBBIDExIDgyIDBDIDAwIDdGIDA4IDEwIDA0
IEIzICAuLnkuLi4uLi4uLi4uLi4uCiAgICA5OEUwOiAwMiAwMSBDMCAwMCAwMCAwMCAwMCA3OSAw
MCAxMSAxNCAwQSAxMSA4MiAwQyAwMCAgLi4uLi4uLnkuLi4uLi4uLgogICAgOThGMDogN0YgMDgg
MDggMDQgQjMgMDIgMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgIC4uLi4uLi4uLi4uLnku
Li4KICAgIDk5MDA6IDBBIDExIDgyIDBDIDAwIDdGIDA4IDAwIDA0IEIzIDAyIDAxIEMwIDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA5OTEwOiAwMCA3OSAwMCAxMSAxNCAwQSAxMSA4MiAw
QyAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLnkuLi4uLi4uLi4uLi4uLgogICAgOTkyMDogMDAgMDAg
MDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgMDAgIC4uLi4uLnkuLi4uLi4u
Li4KICAgIDk5MzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0
IDBBICAuLi4uLi4uLi4uLnkuLi4uCiAgICA5OTQwOiAxMSA4MiAwQyAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgOTk1MDogNzkgMDAg
MTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgNDAgMDAgMDQgRTcgMDAgMDAgIHkuLi4uLi4uLi5ALi4u
Li4KICAgIDk5NjA6IDAwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0IDBBIDExIDgyIDBDIDAwIDdG
IDQwICAuLi4uLnkuLi4uLi4uLi5ACiAgICA5OTcwOiAwMCAwNCBFOCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCA3OSAwMCAxMSAxNCAwQSAxMSAgLi4uLi4uLi4uLnkuLi4uLgogICAgOTk4MDogODIgMEMg
MDAgN0YgMDIgMDAgMDQgQjQgMDIgMDEgQzAgMDAgMDAgMDAgMDAgNzkgIC4uLi4uLi4uLi4uLi4u
LnkKICAgIDk5OTA6IDAwIDExIDE0IDBBIDExIDgyIDBDIDAwIDdGIDAxIDAwIDA0IEIxIDAyIDAx
IEMwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA5OUEwOiAwMCAwMCAwMCAwMCA3OSAwMCAwQyAwMSAw
MCAwMCAwMCAxMSAxNCAwQSAxMSA4MiAgLi4uLnkuLi4uLi4uLi4uLgogICAgOTlCMDogMEMgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgNzkgMDAgIC4uLi4uLi4uLi4uLi4u
eS4KICAgIDk5QzA6IDExIDE0IDBBIDExIDgyIDBDIDAwIDdGIDA4IDE4IDA0IEIzIDAyIDAxIEMw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA5OUQwOiAwMCAwMCAwMCA3OSAwMCAxMSAxNCAwQSAx
MSA4MiAwQyAwMCAwMCAwMCAwMCAwMCAgLi4ueS4uLi4uLi4uLi4uLgogICAgOTlFMDogMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgNzkgMDAgMEMgMjEgMDIgMDAgMDAgMEMgIC4uLi4uLi4ueS4uIS4u
Li4KICAgIDk5RjA6IDY5IDEwIDAwIDAwIDEwIDQ3IDM1IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUw
IDRDICBpLi4uLkc1XC8uX1NCX1BMCiAgICA5QTAwOiA1NCA0NiA0MyAzMCAzMiA0NSAwOCA1RiA1
MCA0MyA1NCAxMiAyQyAwMiAxMSAxNCAgVEZDMDJFLl9QQ1QuLC4uLgogICAgOUExMDogMEEgMTEg
ODIgMEMgMDAgN0YgNDAgMDAgMDAgNjIgMDAgMDEgQzAgMDAgMDAgMDAgIC4uLi4uLkAuLmIuLi4u
Li4KICAgIDlBMjA6IDAwIDc5IDAwIDExIDE0IDBBIDExIDgyIDBDIDAwIDdGIDQwIDAwIDAwIDYz
IDAwICAueS4uLi4uLi4uLkAuLmMuCiAgICA5QTMwOiAwMSBDMCAwMCAwMCAwMCAwMCA3OSAwMCAw
OCA1RiA1MCA1MyA1MyAxMiA0NiAwNiAgLi4uLi4ueS4uX1BTUy5GLgogICAgOUE0MDogMDMgMTIg
MjAgMDYgMEMgNjggMTAgMDAgMDAgMEMgQjAgMTMgMDAgMDAgMEMgMDAgIC4uIC4uaC4uLi4uLi4u
Li4KICAgIDlBNTA6IDAwIDAwIDAwIDBDIDAwIDAwIDAwIDAwIDBDIDAwIDAwIDAwIDAwIDBDIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA5QTYwOiAwMCAwMCAxMiAyMCAwNiAwQyA5OCAwOCAw
MCAwMCAwQyAwNCAwNiAwMCAwMCAwQyAgLi4uIC4uLi4uLi4uLi4uLgogICAgOUE3MDogMDAgMDAg
MDAgMDAgMEMgMDAgMDAgMDAgMDAgMEMgMDEgMDAgMDAgMDAgMEMgMDEgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDlBODA6IDAwIDAwIDAwIDEyIDIwIDA2IDBDIERDIDA1IDAwIDAwIDBDIENGIDAzIDAw
IDAwICAuLi4uIC4uLi4uLi4uLi4uCiAgICA5QTkwOiAwQyAwMCAwMCAwMCAwMCAwQyAwMCAwMCAw
MCAwMCAwQyAwMiAwMCAwMCAwMCAwQyAgLi4uLi4uLi4uLi4uLi4uLgogICAgOUFBMDogMDIgMDAg
MDAgMDAgMDggNTggNTAgNTMgNTMgMTIgNEIgMEQgMDMgMTIgNDcgMDQgIC4uLi4uWFBTUy5LLi4u
Ry4KICAgIDlBQjA6IDA4IDBDIDY4IDEwIDAwIDAwIDBDIEIwIDEzIDAwIDAwIDBDIDAwIDAwIDAw
IDAwICAuLmguLi4uLi4uLi4uLi4uCiAgICA5QUMwOiAwQyAwMCAwMCAwMCAwMCAxMSAwQiAwQSAw
OCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgOUFEMDogMDAgMTEg
MEIgMEEgMDggMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMTEgMEIgMEEgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDlBRTA6IDA4IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDExIDBCIDBBIDA4IDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA5QUYwOiAwMCAwMCAwMCAwMCAwMCAxMiA0NyAwNCAw
OCAwQyA5OCAwOCAwMCAwMCAwQyAwNCAgLi4uLi4uRy4uLi4uLi4uLgogICAgOUIwMDogMDYgMDAg
MDAgMEMgMDAgMDAgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMTEgMEIgMEEgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDlCMTA6IDA4IDAxIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDExIDBCIDBBIDA4IDAxIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA5QjIwOiAwMCAwMCAwMCAwMCAwMCAxMSAwQiAwQSAw
OCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgOUIzMDogMDAgMTEg
MEIgMEEgMDggMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMTIgNDcgMDQgIC4uLi4uLi4uLi4uLi4u
Ry4KICAgIDlCNDA6IDA4IDBDIERDIDA1IDAwIDAwIDBDIENGIDAzIDAwIDAwIDBDIDAwIDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA5QjUwOiAwQyAwMCAwMCAwMCAwMCAxMSAwQiAwQSAw
OCAwMiAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgOUI2MDogMDAgMTEg
MEIgMEEgMDggMDIgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMTEgMEIgMEEgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDlCNzA6IDA4IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDExIDBCIDBBIDA4IDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA5QjgwOiAwMCAwMCAwMCAwMCAwMCAwOCA1RiA1MCA1
MyA0NCAxMiAxOCAwMSAxMiAxNSAwNSAgLi4uLi4uX1BTRC4uLi4uLgogICAgOUI5MDogMEEgMDUg
MEEgMDAgMEMgMTcgMDAgMDAgMDAgMEMgRkUgMDAgMDAgMDAgMEMgMDIgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDlCQTA6IDAwIDAwIDAwIDA4IDUwIDUwIDQzIDU2IDBBIDAwIDE0IDBCIDVGIDUwIDUw
IDQzICAuLi4uUFBDVi4uLi5fUFBDCiAgICA5QkIwOiAwMCBBNCA1MCA1MCA0MyA1NiAwOCA1RiA0
MyA1MCA0MyAxMiA0MCAxOSAxNyAwQSAgLi5QUENWLl9DUEMuQC4uLgogICAgOUJDMDogMTcgMEEg
MDMgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgMDggMTggMDQgQjAgMDIgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDlCRDA6IDAxIEMwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0IDBBIDExIDgyIDBDIDAw
IDdGICAuLi4uLi55Li4uLi4uLi4uCiAgICA5QkUwOiAwOCAxMCAwNCBCMCAwMiAwMSBDMCAwMCAw
MCAwMCAwMCA3OSAwMCAxMSAxNCAwQSAgLi4uLi4uLi4uLi55Li4uLgogICAgOUJGMDogMTEgODIg
MEMgMDAgN0YgMDggMDggMDQgQjAgMDIgMDEgQzAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDlDMDA6IDc5IDAwIDExIDE0IDBBIDExIDgyIDBDIDAwIDdGIDA4IDAwIDA0IEIwIDAy
IDAxICB5Li4uLi4uLi4uLi4uLi4uCiAgICA5QzEwOiBDMCAwMCAwMCAwMCAwMCA3OSAwMCAxMSAx
NCAwQSAxMSA4MiAwQyAwMCAwMCAwMCAgLi4uLi55Li4uLi4uLi4uLgogICAgOUMyMDogMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgIC4uLi4uLi4uLi55Li4u
Li4KICAgIDlDMzA6IDgyIDBDIDAwIDdGIDA4IDEwIDA0IEIzIDAyIDAxIEMwIDAwIDAwIDAwIDAw
IDc5ICAuLi4uLi4uLi4uLi4uLi55CiAgICA5QzQwOiAwMCAxMSAxNCAwQSAxMSA4MiAwQyAwMCA3
RiAwOCAwOCAwNCBCMyAwMiAwMSBDMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgOUM1MDogMDAgMDAg
MDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgMDggMDAgIC4uLi55Li4uLi4uLi4u
Li4KICAgIDlDNjA6IDA0IEIzIDAyIDAxIEMwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0IDBBIDEx
IDgyICAuLi4uLi4uLi55Li4uLi4uCiAgICA5QzcwOiAwQyAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCA3OSAwMCAgLi4uLi4uLi4uLi4uLi55LgogICAgOUM4MDogMTEgMTQg
MEEgMTEgODIgMEMgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDlDOTA6IDAwIDAwIDAwIDc5IDAwIDExIDE0IDBBIDExIDgyIDBDIDAwIDAwIDAwIDAw
IDAwICAuLi55Li4uLi4uLi4uLi4uCiAgICA5Q0EwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCA3
OSAwMCAxMSAxNCAwQSAxMSA4MiAwQyAgLi4uLi4uLi55Li4uLi4uLgogICAgOUNCMDogMDAgN0Yg
NDAgMDAgMDQgRTcgMDAgMDAgMDAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgIC4uQC4uLi4uLi4uLi55
Li4KICAgIDlDQzA6IDE0IDBBIDExIDgyIDBDIDAwIDdGIDQwIDAwIDA0IEU4IDAwIDAwIDAwIDAw
IDAwICAuLi4uLi4uQC4uLi4uLi4uCiAgICA5Q0QwOiAwMCAwMCA3OSAwMCAxMSAxNCAwQSAxMSA4
MiAwQyAwMCA3RiAwMiAwMCAwNCBCNCAgLi55Li4uLi4uLi4uLi4uLgogICAgOUNFMDogMDIgMDEg
QzAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgIC4uLi4uLi55Li4uLi4u
Li4KICAgIDlDRjA6IDdGIDAxIDAwIDA0IEIxIDAyIDAxIEMwIDAwIDAwIDAwIDAwIDc5IDAwIDBD
IDAxICAuLi4uLi4uLi4uLi55Li4uCiAgICA5RDAwOiAwMCAwMCAwMCAxMSAxNCAwQSAxMSA4MiAw
QyAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgOUQxMDogMDAgMDAg
MDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgIC4uLi4uLnkuLi4uLi4u
Li4KICAgIDlEMjA6IDA4IDE4IDA0IEIzIDAyIDAxIEMwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0
IDBBICAuLi4uLi4uLi4uLnkuLi4uCiAgICA5RDMwOiAxMSA4MiAwQyAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgOUQ0MDogNzkgMDAg
MEMgMjEgMDIgMDAgMDAgMEMgNjkgMTAgMDAgMDAgMTAgNDcgMzUgNUMgIHkuLiEuLi4uaS4uLi5H
NVwKICAgIDlENTA6IDJGIDAzIDVGIDUzIDQyIDVGIDUwIDRDIDU0IDQ2IDQzIDMwIDMyIDQ2IDA4
IDVGICAvLl9TQl9QTFRGQzAyRi5fCiAgICA5RDYwOiA1MCA0MyA1NCAxMiAyQyAwMiAxMSAxNCAw
QSAxMSA4MiAwQyAwMCA3RiA0MCAwMCAgUENULiwuLi4uLi4uLi5ALgogICAgOUQ3MDogMDAgNjIg
MDAgMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgIC5iLi4uLi4uLnkuLi4u
Li4KICAgIDlEODA6IDBDIDAwIDdGIDQwIDAwIDAwIDYzIDAwIDAxIEMwIDAwIDAwIDAwIDAwIDc5
IDAwICAuLi5ALi5jLi4uLi4uLnkuCiAgICA5RDkwOiAwOCA1RiA1MCA1MyA1MyAxMiA0NiAwNiAw
MyAxMiAyMCAwNiAwQyA2OCAxMCAwMCAgLl9QU1MuRi4uLiAuLmguLgogICAgOURBMDogMDAgMEMg
QjAgMTMgMDAgMDAgMEMgMDAgMDAgMDAgMDAgMEMgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDlEQjA6IDBDIDAwIDAwIDAwIDAwIDBDIDAwIDAwIDAwIDAwIDEyIDIwIDA2IDBDIDk4
IDA4ICAuLi4uLi4uLi4uLiAuLi4uCiAgICA5REMwOiAwMCAwMCAwQyAwNCAwNiAwMCAwMCAwQyAw
MCAwMCAwMCAwMCAwQyAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgOUREMDogMDAgMEMg
MDEgMDAgMDAgMDAgMEMgMDEgMDAgMDAgMDAgMTIgMjAgMDYgMEMgREMgIC4uLi4uLi4uLi4uLiAu
Li4KICAgIDlERTA6IDA1IDAwIDAwIDBDIENGIDAzIDAwIDAwIDBDIDAwIDAwIDAwIDAwIDBDIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA5REYwOiAwMCAwMCAwQyAwMiAwMCAwMCAwMCAwQyAw
MiAwMCAwMCAwMCAwOCA1OCA1MCA1MyAgLi4uLi4uLi4uLi4uLlhQUwogICAgOUUwMDogNTMgMTIg
NEIgMEQgMDMgMTIgNDcgMDQgMDggMEMgNjggMTAgMDAgMDAgMEMgQjAgIFMuSy4uLkcuLi5oLi4u
Li4KICAgIDlFMTA6IDEzIDAwIDAwIDBDIDAwIDAwIDAwIDAwIDBDIDAwIDAwIDAwIDAwIDExIDBC
IDBBICAuLi4uLi4uLi4uLi4uLi4uCiAgICA5RTIwOiAwOCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAxMSAwQiAwQSAwOCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgOUUzMDogMDAgMDAg
MDAgMDAgMDAgMTEgMEIgMEEgMDggMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDlFNDA6IDAwIDExIDBCIDBBIDA4IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDEyIDQ3
IDA0ICAuLi4uLi4uLi4uLi4uLkcuCiAgICA5RTUwOiAwOCAwQyA5OCAwOCAwMCAwMCAwQyAwNCAw
NiAwMCAwMCAwQyAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgOUU2MDogMEMgMDAg
MDAgMDAgMDAgMTEgMEIgMEEgMDggMDEgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDlFNzA6IDAwIDExIDBCIDBBIDA4IDAxIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDExIDBC
IDBBICAuLi4uLi4uLi4uLi4uLi4uCiAgICA5RTgwOiAwOCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAxMSAwQiAwQSAwOCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgOUU5MDogMDAgMDAg
MDAgMDAgMDAgMTIgNDcgMDQgMDggMEMgREMgMDUgMDAgMDAgMEMgQ0YgIC4uLi4uLkcuLi4uLi4u
Li4KICAgIDlFQTA6IDAzIDAwIDAwIDBDIDAwIDAwIDAwIDAwIDBDIDAwIDAwIDAwIDAwIDExIDBC
IDBBICAuLi4uLi4uLi4uLi4uLi4uCiAgICA5RUIwOiAwOCAwMiAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAxMSAwQiAwQSAwOCAwMiAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgOUVDMDogMDAgMDAg
MDAgMDAgMDAgMTEgMEIgMEEgMDggMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDlFRDA6IDAwIDExIDBCIDBBIDA4IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDA4IDVG
IDUwICAuLi4uLi4uLi4uLi4uLl9QCiAgICA5RUUwOiA1MyA0NCAxMiAxOCAwMSAxMiAxNSAwNSAw
QSAwNSAwQSAwMCAwQyAxNyAwMCAwMCAgU0QuLi4uLi4uLi4uLi4uLgogICAgOUVGMDogMDAgMEMg
RkUgMDAgMDAgMDAgMEMgMDIgMDAgMDAgMDAgMDggNTAgNTAgNDMgNTYgIC4uLi4uLi4uLi4uLlBQ
Q1YKICAgIDlGMDA6IDBBIDAwIDE0IDBCIDVGIDUwIDUwIDQzIDAwIEE0IDUwIDUwIDQzIDU2IDA4
IDVGICAuLi4uX1BQQy4uUFBDVi5fCiAgICA5RjEwOiA0MyA1MCA0MyAxMiA0MCAxOSAxNyAwQSAx
NyAwQSAwMyAxMSAxNCAwQSAxMSA4MiAgQ1BDLkAuLi4uLi4uLi4uLgogICAgOUYyMDogMEMgMDAg
N0YgMDggMTggMDQgQjAgMDIgMDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgIC4uLi4uLi4uLi4uLi4u
eS4KICAgIDlGMzA6IDExIDE0IDBBIDExIDgyIDBDIDAwIDdGIDA4IDEwIDA0IEIwIDAyIDAxIEMw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICA5RjQwOiAwMCAwMCAwMCA3OSAwMCAxMSAxNCAwQSAx
MSA4MiAwQyAwMCA3RiAwOCAwOCAwNCAgLi4ueS4uLi4uLi4uLi4uLgogICAgOUY1MDogQjAgMDIg
MDEgQzAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgIC4uLi4uLi4ueS4uLi4u
Li4KICAgIDlGNjA6IDAwIDdGIDA4IDAwIDA0IEIwIDAyIDAxIEMwIDAwIDAwIDAwIDAwIDc5IDAw
IDExICAuLi4uLi4uLi4uLi4ueS4uCiAgICA5RjcwOiAxNCAwQSAxMSA4MiAwQyAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgOUY4MDogMDAgMDAg
NzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgMDggMTAgMDQgQjMgIC4ueS4uLi4uLi4uLi4u
Li4KICAgIDlGOTA6IDAyIDAxIEMwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0IDBBIDExIDgyIDBD
IDAwICAuLi4uLi4ueS4uLi4uLi4uCiAgICA5RkEwOiA3RiAwOCAwOCAwNCBCMyAwMiAwMSBDMCAw
MCAwMCAwMCAwMCA3OSAwMCAxMSAxNCAgLi4uLi4uLi4uLi4ueS4uLgogICAgOUZCMDogMEEgMTEg
ODIgMEMgMDAgN0YgMDggMDAgMDQgQjMgMDIgMDEgQzAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDlGQzA6IDAwIDc5IDAwIDExIDE0IDBBIDExIDgyIDBDIDAwIDAwIDAwIDAwIDAwIDAw
IDAwICAueS4uLi4uLi4uLi4uLi4uCiAgICA5RkQwOiAwMCAwMCAwMCAwMCAwMCAwMCA3OSAwMCAx
MSAxNCAwQSAxMSA4MiAwQyAwMCAwMCAgLi4uLi4ueS4uLi4uLi4uLgogICAgOUZFMDogMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgIC4uLi4uLi4uLi4ueS4u
Li4KICAgIDlGRjA6IDExIDgyIDBDIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICBBMDAwOiA3OSAwMCAxMSAxNCAwQSAxMSA4MiAwQyAw
MCA3RiA0MCAwMCAwNCBFNyAwMCAwMCAgeS4uLi4uLi4uLkAuLi4uLgogICAgQTAxMDogMDAgMDAg
MDAgMDAgMDAgNzkgMDAgMTEgMTQgMEEgMTEgODIgMEMgMDAgN0YgNDAgIC4uLi4ueS4uLi4uLi4u
LkAKICAgIEEwMjA6IDAwIDA0IEU4IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDc5IDAwIDExIDE0IDBB
IDExICAuLi4uLi4uLi4ueS4uLi4uCiAgICBBMDMwOiA4MiAwQyAwMCA3RiAwMiAwMCAwNCBCNCAw
MiAwMSBDMCAwMCAwMCAwMCAwMCA3OSAgLi4uLi4uLi4uLi4uLi4ueQogICAgQTA0MDogMDAgMTEg
MTQgMEEgMTEgODIgMEMgMDAgN0YgMDEgMDAgMDQgQjEgMDIgMDEgQzAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIEEwNTA6IDAwIDAwIDAwIDAwIDc5IDAwIDBDIDAxIDAwIDAwIDAwIDExIDE0IDBBIDEx
IDgyICAuLi4ueS4uLi4uLi4uLi4uCiAgICBBMDYwOiAwQyAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCA3OSAwMCAgLi4uLi4uLi4uLi4uLi55LgogICAgQTA3MDogMTEgMTQg
MEEgMTEgODIgMEMgMDAgN0YgMDggMTggMDQgQjMgMDIgMDEgQzAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIEEwODA6IDAwIDAwIDAwIDc5IDAwIDExIDE0IDBBIDExIDgyIDBDIDAwIDAwIDAwIDAw
IDAwICAuLi55Li4uLi4uLi4uLi4uCiAgICBBMDkwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCA3
OSAwMCAwQyAyMSAwMiAwMCAwMCAwQyAgLi4uLi4uLi55Li4hLi4uLgogICAgQTBBMDogNjkgMTAg
MDAgMDAgMTQgQzkgMzYgMDAgMDAgNEUgNDYgNTAgNDMgMDAgODYgNUMgIGkuLi4uLjYuLk5GUEMu
LlwKICAgIEEwQjA6IDJGIDAzIDVGIDUzIDQyIDVGIDUwIDRDIDU0IDQ2IDQzIDMwIDMwIDMwIDBB
IDg1ICAvLl9TQl9QTFRGQzAwMC4uCiAgICBBMEMwOiA4NiA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1
MCA0QyA1NCA0NiA0MyAzMCAzMCAzMSAgLlwvLl9TQl9QTFRGQzAwMQogICAgQTBEMDogMEEgODUg
ODYgNUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAgNEMgNTQgNDYgNDMgMzAgIC4uLlwvLl9TQl9QTFRG
QzAKICAgIEEwRTA6IDMwIDMyIDBBIDg1IDg2IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDRDIDU0
IDQ2ICAwMi4uLlwvLl9TQl9QTFRGCiAgICBBMEYwOiA0MyAzMCAzMCAzMyAwQSA4NSA4NiA1QyAy
RiAwMyA1RiA1MyA0MiA1RiA1MCA0QyAgQzAwMy4uLlwvLl9TQl9QTAogICAgQTEwMDogNTQgNDYg
NDMgMzAgMzAgMzQgMEEgODUgODYgNUMgMkYgMDMgNUYgNTMgNDIgNUYgIFRGQzAwNC4uLlwvLl9T
Ql8KICAgIEExMTA6IDUwIDRDIDU0IDQ2IDQzIDMwIDMwIDM1IDBBIDg1IDg2IDVDIDJGIDAzIDVG
IDUzICBQTFRGQzAwNS4uLlwvLl9TCiAgICBBMTIwOiA0MiA1RiA1MCA0QyA1NCA0NiA0MyAzMCAz
MCAzNiAwQSA4NSA4NiA1QyAyRiAwMyAgQl9QTFRGQzAwNi4uLlwvLgogICAgQTEzMDogNUYgNTMg
NDIgNUYgNTAgNEMgNTQgNDYgNDMgMzAgMzAgMzcgMEEgODUgODYgNUMgIF9TQl9QTFRGQzAwNy4u
LlwKICAgIEExNDA6IDJGIDAzIDVGIDUzIDQyIDVGIDUwIDRDIDU0IDQ2IDQzIDMwIDMwIDM4IDBB
IDg1ICAvLl9TQl9QTFRGQzAwOC4uCiAgICBBMTUwOiA4NiA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1
MCA0QyA1NCA0NiA0MyAzMCAzMCAzOSAgLlwvLl9TQl9QTFRGQzAwOQogICAgQTE2MDogMEEgODUg
ODYgNUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAgNEMgNTQgNDYgNDMgMzAgIC4uLlwvLl9TQl9QTFRG
QzAKICAgIEExNzA6IDMwIDQxIDBBIDg1IDg2IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDRDIDU0
IDQ2ICAwQS4uLlwvLl9TQl9QTFRGCiAgICBBMTgwOiA0MyAzMCAzMCA0MiAwQSA4NSA4NiA1QyAy
RiAwMyA1RiA1MyA0MiA1RiA1MCA0QyAgQzAwQi4uLlwvLl9TQl9QTAogICAgQTE5MDogNTQgNDYg
NDMgMzAgMzAgNDMgMEEgODUgODYgNUMgMkYgMDMgNUYgNTMgNDIgNUYgIFRGQzAwQy4uLlwvLl9T
Ql8KICAgIEExQTA6IDUwIDRDIDU0IDQ2IDQzIDMwIDMwIDQ0IDBBIDg1IDg2IDVDIDJGIDAzIDVG
IDUzICBQTFRGQzAwRC4uLlwvLl9TCiAgICBBMUIwOiA0MiA1RiA1MCA0QyA1NCA0NiA0MyAzMCAz
MCA0NSAwQSA4NSA4NiA1QyAyRiAwMyAgQl9QTFRGQzAwRS4uLlwvLgogICAgQTFDMDogNUYgNTMg
NDIgNUYgNTAgNEMgNTQgNDYgNDMgMzAgMzAgNDYgMEEgODUgODYgNUMgIF9TQl9QTFRGQzAwRi4u
LlwKICAgIEExRDA6IDJGIDAzIDVGIDUzIDQyIDVGIDUwIDRDIDU0IDQ2IDQzIDMwIDMxIDMwIDBB
IDg1ICAvLl9TQl9QTFRGQzAxMC4uCiAgICBBMUUwOiA4NiA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1
MCA0QyA1NCA0NiA0MyAzMCAzMSAzMSAgLlwvLl9TQl9QTFRGQzAxMQogICAgQTFGMDogMEEgODUg
ODYgNUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAgNEMgNTQgNDYgNDMgMzAgIC4uLlwvLl9TQl9QTFRG
QzAKICAgIEEyMDA6IDMxIDMyIDBBIDg1IDg2IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDRDIDU0
IDQ2ICAxMi4uLlwvLl9TQl9QTFRGCiAgICBBMjEwOiA0MyAzMCAzMSAzMyAwQSA4NSA4NiA1QyAy
RiAwMyA1RiA1MyA0MiA1RiA1MCA0QyAgQzAxMy4uLlwvLl9TQl9QTAogICAgQTIyMDogNTQgNDYg
NDMgMzAgMzEgMzQgMEEgODUgODYgNUMgMkYgMDMgNUYgNTMgNDIgNUYgIFRGQzAxNC4uLlwvLl9T
Ql8KICAgIEEyMzA6IDUwIDRDIDU0IDQ2IDQzIDMwIDMxIDM1IDBBIDg1IDg2IDVDIDJGIDAzIDVG
IDUzICBQTFRGQzAxNS4uLlwvLl9TCiAgICBBMjQwOiA0MiA1RiA1MCA0QyA1NCA0NiA0MyAzMCAz
MSAzNiAwQSA4NSA4NiA1QyAyRiAwMyAgQl9QTFRGQzAxNi4uLlwvLgogICAgQTI1MDogNUYgNTMg
NDIgNUYgNTAgNEMgNTQgNDYgNDMgMzAgMzEgMzcgMEEgODUgODYgNUMgIF9TQl9QTFRGQzAxNy4u
LlwKICAgIEEyNjA6IDJGIDAzIDVGIDUzIDQyIDVGIDUwIDRDIDU0IDQ2IDQzIDMwIDMxIDM4IDBB
IDg1ICAvLl9TQl9QTFRGQzAxOC4uCiAgICBBMjcwOiA4NiA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1
MCA0QyA1NCA0NiA0MyAzMCAzMSAzOSAgLlwvLl9TQl9QTFRGQzAxOQogICAgQTI4MDogMEEgODUg
ODYgNUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAgNEMgNTQgNDYgNDMgMzAgIC4uLlwvLl9TQl9QTFRG
QzAKICAgIEEyOTA6IDMxIDQxIDBBIDg1IDg2IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDRDIDU0
IDQ2ICAxQS4uLlwvLl9TQl9QTFRGCiAgICBBMkEwOiA0MyAzMCAzMSA0MiAwQSA4NSA4NiA1QyAy
RiAwMyA1RiA1MyA0MiA1RiA1MCA0QyAgQzAxQi4uLlwvLl9TQl9QTAogICAgQTJCMDogNTQgNDYg
NDMgMzAgMzEgNDMgMEEgODUgODYgNUMgMkYgMDMgNUYgNTMgNDIgNUYgIFRGQzAxQy4uLlwvLl9T
Ql8KICAgIEEyQzA6IDUwIDRDIDU0IDQ2IDQzIDMwIDMxIDQ0IDBBIDg1IDg2IDVDIDJGIDAzIDVG
IDUzICBQTFRGQzAxRC4uLlwvLl9TCiAgICBBMkQwOiA0MiA1RiA1MCA0QyA1NCA0NiA0MyAzMCAz
MSA0NSAwQSA4NSA4NiA1QyAyRiAwMyAgQl9QTFRGQzAxRS4uLlwvLgogICAgQTJFMDogNUYgNTMg
NDIgNUYgNTAgNEMgNTQgNDYgNDMgMzAgMzEgNDYgMEEgODUgODYgNUMgIF9TQl9QTFRGQzAxRi4u
LlwKICAgIEEyRjA6IDJGIDAzIDVGIDUzIDQyIDVGIDUwIDRDIDU0IDQ2IDQzIDMwIDMyIDMwIDBB
IDg1ICAvLl9TQl9QTFRGQzAyMC4uCiAgICBBMzAwOiA4NiA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1
MCA0QyA1NCA0NiA0MyAzMCAzMiAzMSAgLlwvLl9TQl9QTFRGQzAyMQogICAgQTMxMDogMEEgODUg
ODYgNUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAgNEMgNTQgNDYgNDMgMzAgIC4uLlwvLl9TQl9QTFRG
QzAKICAgIEEzMjA6IDMyIDMyIDBBIDg1IDg2IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDRDIDU0
IDQ2ICAyMi4uLlwvLl9TQl9QTFRGCiAgICBBMzMwOiA0MyAzMCAzMiAzMyAwQSA4NSA4NiA1QyAy
RiAwMyA1RiA1MyA0MiA1RiA1MCA0QyAgQzAyMy4uLlwvLl9TQl9QTAogICAgQTM0MDogNTQgNDYg
NDMgMzAgMzIgMzQgMEEgODUgODYgNUMgMkYgMDMgNUYgNTMgNDIgNUYgIFRGQzAyNC4uLlwvLl9T
Ql8KICAgIEEzNTA6IDUwIDRDIDU0IDQ2IDQzIDMwIDMyIDM1IDBBIDg1IDg2IDVDIDJGIDAzIDVG
IDUzICBQTFRGQzAyNS4uLlwvLl9TCiAgICBBMzYwOiA0MiA1RiA1MCA0QyA1NCA0NiA0MyAzMCAz
MiAzNiAwQSA4NSA4NiA1QyAyRiAwMyAgQl9QTFRGQzAyNi4uLlwvLgogICAgQTM3MDogNUYgNTMg
NDIgNUYgNTAgNEMgNTQgNDYgNDMgMzAgMzIgMzcgMEEgODUgODYgNUMgIF9TQl9QTFRGQzAyNy4u
LlwKICAgIEEzODA6IDJGIDAzIDVGIDUzIDQyIDVGIDUwIDRDIDU0IDQ2IDQzIDMwIDMyIDM4IDBB
IDg1ICAvLl9TQl9QTFRGQzAyOC4uCiAgICBBMzkwOiA4NiA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1
MCA0QyA1NCA0NiA0MyAzMCAzMiAzOSAgLlwvLl9TQl9QTFRGQzAyOQogICAgQTNBMDogMEEgODUg
ODYgNUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAgNEMgNTQgNDYgNDMgMzAgIC4uLlwvLl9TQl9QTFRG
QzAKICAgIEEzQjA6IDMyIDQxIDBBIDg1IDg2IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDRDIDU0
IDQ2ICAyQS4uLlwvLl9TQl9QTFRGCiAgICBBM0MwOiA0MyAzMCAzMiA0MiAwQSA4NSA4NiA1QyAy
RiAwMyA1RiA1MyA0MiA1RiA1MCA0QyAgQzAyQi4uLlwvLl9TQl9QTAogICAgQTNEMDogNTQgNDYg
NDMgMzAgMzIgNDMgMEEgODUgODYgNUMgMkYgMDMgNUYgNTMgNDIgNUYgIFRGQzAyQy4uLlwvLl9T
Ql8KICAgIEEzRTA6IDUwIDRDIDU0IDQ2IDQzIDMwIDMyIDQ0IDBBIDg1IDg2IDVDIDJGIDAzIDVG
IDUzICBQTFRGQzAyRC4uLlwvLl9TCiAgICBBM0YwOiA0MiA1RiA1MCA0QyA1NCA0NiA0MyAzMCAz
MiA0NSAwQSA4NSA4NiA1QyAyRiAwMyAgQl9QTFRGQzAyRS4uLlwvLgogICAgQTQwMDogNUYgNTMg
NDIgNUYgNTAgNEMgNTQgNDYgNDMgMzAgMzIgNDYgMEEgODUgICAgICAgIF9TQl9QTFRGQzAyRi4u
CgpTU0RUIEAgMHgwMDAwMDAwMDAwMDAwMDAwCiAgICAwMDAwOiA1MyA1MyA0NCA1NCA2QSAwOSAw
MCAwMCAwMiA3RCA0MSA0RCA0NCAwMCAwMCAwMCAgU1NEVGouLi4ufUFNRC4uLgogICAgMDAxMDog
NDMgNTAgNEQgNEQgNTMgNEYgNTMgNDMgMDEgMDAgMDAgMDAgNDkgNEUgNTQgNEMgIENQTU1TT1ND
Li4uLklOVEwKICAgIDAwMjA6IDMxIDAzIDIzIDIwIEEwIDQ4IDQ1IDAwIDE1IDVDIDREIDMxIDMx
IDM1IDAzIDAwICAxLiMgLkhFLi5cTTExNS4uCiAgICAwMDMwOiAxNSA1QyA0RCAzMSAzMSAzNiAw
RSAwMCAxNSA1QyA0RCAzMSAzMSAzNyAwRSAwMCAgLlxNMTE2Li4uXE0xMTcuLgogICAgMDA0MDog
MTUgNUMgNEQgMzEgMzEgMzggMEUgMDAgMTUgNUMgNEQgMzEgMzEgMzkgMEUgMDAgIC5cTTExOC4u
LlxNMTE5Li4KICAgIDAwNTA6IDE1IDVDIDREIDMxIDMyIDMwIDBFIDAwIDE1IDVDIDREIDMwIDMz
IDM3IDA2IDAwICAuXE0xMjAuLi5cTTAzNy4uCiAgICAwMDYwOiAxNSA1QyA0RCAzMiAzMiAzNyAw
NiAwMCAxNSA1QyA0RCAzMyAzMiAzOSAwNiAwMCAgLlxNMjI3Li4uXE0zMjkuLgogICAgMDA3MDog
MTUgNUMgNEQgMzMgMzIgNDEgMDYgMDAgMTUgNUMgNEQgMzMgMzIgNDIgMDYgMDAgIC5cTTMyQS4u
LlxNMzJCLi4KICAgIDAwODA6IDE1IDVDIDREIDMzIDMyIDQzIDA2IDAwIDE1IDVDIDREIDMzIDMz
IDMwIDA2IDAwICAuXE0zMkMuLi5cTTMzMC4uCiAgICAwMDkwOiAxNSA1QyA0RCAzMCAzOCAzMiAw
NSAwMCAxNSA1QyA0RCAzMCAzOCAzMyAwNSAwMCAgLlxNMDgyLi4uXE0wODMuLgogICAgMDBBMDog
MTUgNUMgNEQgMzAgMzggMzQgMDUgMDAgMTUgNUMgNEQgMzAgMzggMzUgMDUgMDAgIC5cTTA4NC4u
LlxNMDg1Li4KICAgIDAwQjA6IDE1IDVDIDREIDMyIDMyIDMxIDA1IDAwIDE1IDVDIDREIDMwIDM4
IDM2IDA1IDAwICAuXE0yMjEuLi5cTTA4Ni4uCiAgICAwMEMwOiAxNSA1QyA0RCAzMiAzMiAzOSAw
NSAwMCAxNSA1QyA0RCAzMiAzMyAzMSAwNSAwMCAgLlxNMjI5Li4uXE0yMzEuLgogICAgMDBEMDog
MTUgNUMgNEQgMzIgMzMgMzUgMDUgMDAgMTUgNUMgNEQgMzIgMzMgMzMgMDUgMDAgIC5cTTIzNS4u
LlxNMjMzLi4KICAgIDAwRTA6IDE1IDVDIDREIDMwIDM4IDM3IDA1IDAwIDE1IDVDIDREIDMwIDM4
IDM4IDA1IDAwICAuXE0wODcuLi5cTTA4OC4uCiAgICAwMEYwOiAxNSA1QyA0RCAzMCAzOCAzOSAw
NSAwMCAxNSA1QyA0RCAzMCAzOSAzMCAwNSAwMCAgLlxNMDg5Li4uXE0wOTAuLgogICAgMDEwMDog
MTUgNUMgNEQgMzAgMzkgMzEgMDUgMDAgMTUgNUMgNEQgMzAgMzkgMzIgMDUgMDAgIC5cTTA5MS4u
LlxNMDkyLi4KICAgIDAxMTA6IDE1IDVDIDREIDMwIDM5IDMzIDA1IDAwIDE1IDVDIDREIDMwIDM5
IDM0IDA1IDAwICAuXE0wOTMuLi5cTTA5NC4uCiAgICAwMTIwOiAxNSA1QyA0RCAzMCAzOSAzNSAw
NSAwMCAxNSA1QyA0RCAzMCAzOSAzNiAwNSAwMCAgLlxNMDk1Li4uXE0wOTYuLgogICAgMDEzMDog
MTUgNUMgNEQgMzAgMzkgMzcgMDUgMDAgMTUgNUMgNEQgMzAgMzkgMzggMDUgMDAgIC5cTTA5Ny4u
LlxNMDk4Li4KICAgIDAxNDA6IDE1IDVDIDREIDMwIDM5IDM5IDA1IDAwIDE1IDVDIDREIDMxIDMw
IDMwIDA1IDAwICAuXE0wOTkuLi5cTTEwMC4uCiAgICAwMTUwOiAxNSA1QyA0RCAzMSAzMCAzMSAw
NSAwMCAxNSA1QyA0RCAzMSAzMCAzMiAwNSAwMCAgLlxNMTAxLi4uXE0xMDIuLgogICAgMDE2MDog
MTUgNUMgNEQgMzEgMzAgMzMgMDUgMDAgMTUgNUMgNEQgMzEgMzAgMzQgMDUgMDAgIC5cTTEwMy4u
LlxNMTA0Li4KICAgIDAxNzA6IDE1IDVDIDREIDMxIDMwIDM1IDA1IDAwIDE1IDVDIDREIDMxIDMw
IDM2IDA1IDAwICAuXE0xMDUuLi5cTTEwNi4uCiAgICAwMTgwOiAxNSA1QyA0RCAzMSAzMCAzNyAw
NSAwMCAxNSA1QyA0RCAzMSAzMiAzOCAwNSAwMCAgLlxNMTA3Li4uXE0xMjguLgogICAgMDE5MDog
MTUgNUMgNEQgMzEgMzAgMzggMDUgMDAgMTUgNUMgNEQgMzEgMzAgMzkgMDUgMDAgIC5cTTEwOC4u
LlxNMTA5Li4KICAgIDAxQTA6IDE1IDVDIDREIDMxIDMxIDMwIDA1IDAwIDE1IDVDIDREIDMxIDMy
IDMyIDA1IDAwICAuXE0xMTAuLi5cTTEyMi4uCiAgICAwMUIwOiAxNSA1QyA0RCAzMSAzMyAzMSAw
NSAwMCAxNSA1QyA0RCAzMSAzMyAzMiAwNSAwMCAgLlxNMTMxLi4uXE0xMzIuLgogICAgMDFDMDog
MTUgNUMgNEQgMzIgMzIgMzYgMDUgMDAgMTUgNUMgNEQgMzEgMzMgMzMgMDUgMDAgIC5cTTIyNi4u
LlxNMTMzLi4KICAgIDAxRDA6IDE1IDVDIDREIDMxIDMzIDM0IDA1IDAwIDE1IDVDIDREIDMxIDMz
IDM1IDA1IDAwICAuXE0xMzQuLi5cTTEzNS4uCiAgICAwMUUwOiAxNSA1QyA0RCAzMSAzMyAzNiAw
NSAwMCAxNSA1QyA0RCAzMiAzMiAzMCAwNSAwMCAgLlxNMTM2Li4uXE0yMjAuLgogICAgMDFGMDog
MTUgNUMgNEQgMzIgMzMgMzIgMDggMDMgMTUgNUMgNEQgMzAgMzQgMzYgMDEgMDAgIC5cTTIzMi4u
LlxNMDQ2Li4KICAgIDAyMDA6IDE1IDVDIDREIDMwIDM0IDM3IDAxIDAwIDE1IDVDIDREIDMwIDM0
IDM5IDA4IDAyICAuXE0wNDcuLi5cTTA0OS4uCiAgICAwMjEwOiAxNSA1QyA0RCAzMiAzNSAzMSAw
NSAwMCAxNSA1QyA0RCAzMyAzMSAzMCAwNSAwMCAgLlxNMjUxLi4uXE0zMTAuLgogICAgMDIyMDog
MTUgNUMgNEQgMzMgMzEgNDMgMDUgMDAgMTUgNUMgNEQgMzMgMzIgMzAgMDUgMDAgIC5cTTMxQy4u
LlxNMzIwLi4KICAgIDAyMzA6IDE1IDVDIDREIDMzIDMyIDMxIDA1IDAwIDE1IDVDIDREIDMzIDMy
IDMyIDA1IDAwICAuXE0zMjEuLi5cTTMyMi4uCiAgICAwMjQwOiAxNSA1QyA0RCAzMyAzMiAzMyAw
NSAwMCAxNSA1QyA0RCAzMyAzMiAzNCAwNSAwMCAgLlxNMzIzLi4uXE0zMjQuLgogICAgMDI1MDog
MTUgNUMgNEQgMzMgMzIgMzUgMDUgMDAgMTUgNUMgNEQgMzMgMzIgMzYgMDUgMDAgIC5cTTMyNS4u
LlxNMzI2Li4KICAgIDAyNjA6IDE1IDVDIDREIDMzIDMyIDM3IDA1IDAwIDE1IDVDIDREIDMzIDMy
IDM4IDA1IDAwICAuXE0zMjcuLi5cTTMyOC4uCiAgICAwMjcwOiAxNSA1QyA0RCAzMiAzOCAzMCAw
NSAwMCAxNSA1QyA0RCAzMiAzOSAzMCAwNSAwMCAgLlxNMjgwLi4uXE0yOTAuLgogICAgMDI4MDog
MTUgNUMgNEQgMzMgMzcgMzggMDUgMDAgMTUgNUMgNEQgMzMgMzcgMzkgMDUgMDAgIC5cTTM3OC4u
LlxNMzc5Li4KICAgIDAyOTA6IDE1IDVDIDREIDMzIDM4IDMwIDA1IDAwIDE1IDVDIDREIDMzIDM4
IDMxIDA1IDAwICAuXE0zODAuLi5cTTM4MS4uCiAgICAwMkEwOiAxNSA1QyA0RCAzMyAzOCAzMiAw
NSAwMCAxNSA1QyA0RCAzMyAzOCAzMyAwNSAwMCAgLlxNMzgyLi4uXE0zODMuLgogICAgMDJCMDog
MTUgNUMgNEQgMzMgMzggMzQgMDUgMDAgMTUgNUMgNEQgMzMgMzggMzUgMDUgMDAgIC5cTTM4NC4u
LlxNMzg1Li4KICAgIDAyQzA6IDE1IDVDIDREIDMzIDM4IDM2IDA1IDAwIDE1IDVDIDREIDMzIDM4
IDM3IDA1IDAwICAuXE0zODYuLi5cTTM4Ny4uCiAgICAwMkQwOiAxNSA1QyA0RCAzMyAzOCAzOCAw
NSAwMCAxNSA1QyA0RCAzMyAzOCAzOSAwNSAwMCAgLlxNMzg4Li4uXE0zODkuLgogICAgMDJFMDog
MTUgNUMgNEQgMzMgMzkgMzAgMDUgMDAgMTUgNUMgNEQgMzMgMzkgMzEgMDUgMDAgIC5cTTM5MC4u
LlxNMzkxLi4KICAgIDAyRjA6IDE1IDVDIDREIDMzIDM5IDMyIDA1IDAwIDE1IDVDIDREIDMzIDMz
IDMxIDA1IDAwICAuXE0zOTIuLi5cTTMzMS4uCiAgICAwMzAwOiAxNSA1QyA0RCAzNiAzMiAzMCAw
NSAwMCAxNSA1QyA0RCAzNCAzMCAzNCAwMyAwMCAgLlxNNjIwLi4uXE00MDQuLgogICAgMDMxMDog
MTUgNUMgNEQgMzQgMzAgMzggMDkgMDAgMTUgNUMgNEQgMzQgMzEgMzQgMDUgMDAgIC5cTTQwOC4u
LlxNNDE0Li4KICAgIDAzMjA6IDE1IDVDIDREIDM0IDM0IDM0IDA1IDAwIDE1IDVDIDREIDM0IDM1
IDMzIDA1IDAwICAuXE00NDQuLi5cTTQ1My4uCiAgICAwMzMwOiAxNSA1QyA0RCAzNCAzNSAzNCAw
NSAwMCAxNSA1QyA0RCAzNCAzNSAzNSAwNSAwMCAgLlxNNDU0Li4uXE00NTUuLgogICAgMDM0MDog
MTUgNUMgNEQgMzQgMzUgMzYgMDUgMDAgMTUgNUMgNEQgMzQgMzUgMzcgMDUgMDAgIC5cTTQ1Ni4u
LlxNNDU3Li4KICAgIDAzNTA6IDE1IDVDIDREIDM0IDM2IDMwIDA4IDA3IDE1IDVDIDREIDM0IDM0
IDM5IDA1IDAwICAuXE00NjAuLi5cTTQ0OS4uCiAgICAwMzYwOiAxNSA1QyA0RCAzNCA0MyAzMCAw
NSAwMCAxNSA1QyA0RCAzMiAzMyA0MSAwNSAwMCAgLlxNNEMwLi4uXE0yM0EuLgogICAgMDM3MDog
MTUgNUMgNEQgMzQgNDYgMzAgMDUgMDAgMTUgNUMgNEQgMzYgMzEgMzAgMDUgMDAgIC5cTTRGMC4u
LlxNNjEwLi4KICAgIDAzODA6IDE1IDVDIDREIDMyIDM5IDQxIDA1IDAwIDE1IDVDIDREIDM2IDMz
IDMxIDA1IDAwICAuXE0yOUEuLi5cTTYzMS4uCiAgICAwMzkwOiAxNSA1QyA0RCAzNiAzNSAzMiAw
NSAwMCAxNSA1QyA0RCAzMCAzNSAzMCAwNiAwMCAgLlxNNjUyLi4uXE0wNTAuLgogICAgMDNBMDog
MTUgNUMgNEQgMzAgMzUgMzEgMDYgMDAgMTUgNUMgNEQgMzAgMzUgMzIgMDYgMDAgIC5cTTA1MS4u
LlxNMDUyLi4KICAgIDAzQjA6IDE1IDVDIDREIDMwIDM1IDMzIDA2IDAwIDE1IDVDIDREIDMwIDM1
IDM0IDA2IDAwICAuXE0wNTMuLi5cTTA1NC4uCiAgICAwM0MwOiAxNSA1QyA0RCAzMCAzNSAzNSAw
NiAwMCAxNSA1QyA0RCAzMCAzNSAzNiAwNiAwMCAgLlxNMDU1Li4uXE0wNTYuLgogICAgMDNEMDog
MTUgNUMgNEQgMzAgMzUgMzcgMDYgMDAgMTUgNUMgNEQgMzAgMzUgMzggMDYgMDAgIC5cTTA1Ny4u
LlxNMDU4Li4KICAgIDAzRTA6IDE1IDVDIDREIDMwIDM1IDM5IDA2IDAwIDE1IDVDIDREIDMwIDM2
IDMyIDA2IDAwICAuXE0wNTkuLi5cTTA2Mi4uCiAgICAwM0YwOiAxNSA1QyA0RCAzMCAzNiAzOCAw
NiAwMCAxNSA1QyA0RCAzMCAzNiAzOSAwNiAwMCAgLlxNMDY4Li4uXE0wNjkuLgogICAgMDQwMDog
MTUgNUMgNEQgMzAgMzcgMzAgMDYgMDAgMTUgNUMgNEQgMzAgMzcgMzEgMDYgMDAgIC5cTTA3MC4u
LlxNMDcxLi4KICAgIDA0MTA6IDE1IDVDIDREIDMwIDM3IDMyIDA2IDAwIDE1IDVDIDREIDMwIDM3
IDM0IDA2IDAwICAuXE0wNzIuLi5cTTA3NC4uCiAgICAwNDIwOiAxNSA1QyA0RCAzMCAzNyAzNSAw
NiAwMCAxNSA1QyA0RCAzMCAzNyAzNiAwNiAwMCAgLlxNMDc1Li4uXE0wNzYuLgogICAgMDQzMDog
MTUgNUMgNEQgMzAgMzcgMzcgMDYgMDAgMTUgNUMgNEQgMzAgMzcgMzggMDYgMDAgIC5cTTA3Ny4u
LlxNMDc4Li4KICAgIDA0NDA6IDE1IDVDIDREIDMwIDM3IDM5IDA2IDAwIDE1IDVDIDREIDMwIDM4
IDMwIDA2IDAwICAuXE0wNzkuLi5cTTA4MC4uCiAgICAwNDUwOiAxNSA1QyA0RCAzMCAzOCAzMSAw
NiAwMCAxNSA1QyA0RCAzMSAzMiAzNyAwNiAwMCAgLlxNMDgxLi4uXE0xMjcuLgogICAgMDQ2MDog
MTUgNUMgNDQgNDkgNEQgNTMgMDEgMDAgMTUgNUMgNDQgNDQgNDUgNTAgMDEgMDAgIC5cRElNUy4u
LlxEREVQLi4KICAgIDA0NzA6IDE1IDVDIDJFIDVGIDUzIDQyIDVGIDREIDM2IDMyIDM1IDA4IDAy
IDEwIDRDIDRFICAuXC5fU0JfTTYyNS4uLkxOCiAgICAwNDgwOiA1QyA1RiA1MyA0MiA1RiAwOCA0
RCAzNiAzMyAzMCAwQiA1NSA1NSAwOCA1NSAzNCAgXF9TQl8uTTYzMC5VVS5VNAogICAgMDQ5MDog
NTAgNDMgMEEgRkYgMTQgNDUgNEQgNUYgNEYgNTMgNDMgMEMgMDggNEQgNTMgNDQgIFBDLi4uRU1f
T1NDLi5NU0QKICAgIDA0QTA6IDQyIDAwIDhBIDY4IDAwIDU1IDQ5IDQ0IDMwIDhBIDZCIDAwIDQz
IDQ0IDU3IDMxICBCLi5oLlVJRDAuay5DRFcxCiAgICAwNEIwOiBBMCAwRSA5MiA5NSA2QSAwQSAw
MiA4QSA2QiAwQSAwNCA0MyA0NCA1NyAzMiBBMCAgLi4uLmouLi5rLi5DRFcyLgogICAgMDRDMDog
MEUgOTIgOTUgNkEgMEEgMDMgOEEgNkIgMEEgMDggNDMgNDQgNTcgMzMgQTAgNDggIC4uLmouLi5r
Li5DRFczLkgKICAgIDA0RDA6IDA0IDkzIDZBIDAxIDREIDM0IDM2IDMwIDBEIDIwIDIwIDQ2IDQ1
IDQxIDJEIDQxICAuLmouTTQ2MC4gIEZFQS1BCiAgICAwNEUwOiA1MyA0QyAyRCA1QyA1RiA1MyA0
MiAyRSA1RiA0RiA1MyA0MyAyMCA1NSA1NSA0OSAgU0wtXF9TQi5fT1NDIFVVSQogICAgMDRGMDog
NDQgMjAgMzAgNzggMjUgNTggMjAgNTMgNzQgNjEgNzIgNzQgMjAgMjAgNDMgNDQgIEQgMHglWCBT
dGFydCAgQ0QKICAgIDA1MDA6IDU3IDMxIDIwIDNEIDIwIDMwIDc4IDI1IDU4IDBBIDAwIDU1IDQ5
IDQ0IDMwIDQzICBXMSA9IDB4JVguLlVJRDBDCiAgICAwNTEwOiA0NCA1NyAzMSAwMCAwMCAwMCAw
MCBBMSA0QiAwQyBBMCA0RSAwNSA5MyA2QSAwQSAgRFcxLi4uLi5LLi5OLi5qLgogICAgMDUyMDog
MDIgNzAgNDMgNDQgNTcgMzIgNjIgNEQgMzQgMzYgMzAgMEQgMjAgMjAgNDYgNDUgIC5wQ0RXMmJN
NDYwLiAgRkUKICAgIDA1MzA6IDQxIDJEIDQxIDUzIDRDIDJEIDVDIDVGIDUzIDQyIDJFIDVGIDRG
IDUzIDQzIDIwICBBLUFTTC1cX1NCLl9PU0MgCiAgICAwNTQwOiA1NSA1NSA0OSA0NCAyMCAzMCA3
OCAyNSA1OCAyMCA1MyA3NCA2MSA3MiA3NCAyMCAgVVVJRCAweCVYIFN0YXJ0IAogICAgMDU1MDog
MjAgNDMgNDQgNTcgMzEgMjAgM0QgMjAgMzAgNzggMjUgNTggMjAgNDMgNDQgNTcgICBDRFcxID0g
MHglWCBDRFcKICAgIDA1NjA6IDMyIDIwIDNEIDIwIDMwIDc4IDI1IDU4IDBBIDAwIDU1IDQ5IDQ0
IDMwIDQzIDQ0ICAyID0gMHglWC4uVUlEMENECiAgICAwNTcwOiA1NyAzMSA0MyA0NCA1NyAzMiAw
MCAwMCAwMCBBMSA0OSAwNiA3MCA0MyA0NCA1NyAgVzFDRFcyLi4uLkkucENEVwogICAgMDU4MDog
MzMgNjMgNEQgMzQgMzYgMzAgMEQgMjAgMjAgNDYgNDUgNDEgMkQgNDEgNTMgNEMgIDNjTTQ2MC4g
IEZFQS1BU0wKICAgIDA1OTA6IDJEIDVDIDVGIDUzIDQyIDJFIDVGIDRGIDUzIDQzIDIwIDU1IDU1
IDQ5IDQ0IDIwICAtXF9TQi5fT1NDIFVVSUQgCiAgICAwNUEwOiAzMCA3OCAyNSA1OCAyMCA1MyA3
NCA2MSA3MiA3NCAyMCAyMCA0MyA0NCA1NyAzMSAgMHglWCBTdGFydCAgQ0RXMQogICAgMDVCMDog
MjAgM0QgMjAgMzAgNzggMjUgNTggMjAgNDMgNDQgNTcgMzIgMjAgM0QgMjAgMzAgICA9IDB4JVgg
Q0RXMiA9IDAKICAgIDA1QzA6IDc4IDI1IDU4IDIwIDQzIDQ0IDU3IDMzIDIwIDNEIDIwIDMwIDc4
IDI1IDU4IDBBICB4JVggQ0RXMyA9IDB4JVguCiAgICAwNUQwOiAwMCA1NSA0OSA0NCAzMCA0MyA0
NCA1NyAzMSA0MyA0NCA1NyAzMiA0MyA0NCA1NyAgLlVJRDBDRFcxQ0RXMkNEVwogICAgMDVFMDog
MzMgMDAgMDAgQTAgNDkgMTAgOTMgNjggMTEgMTMgMEEgMTAgM0EgRDEgQTAgMjMgIDMuLi5JLi5o
Li4uLjouLiMKICAgIDA1RjA6IEFCIDI2IDZDIDQ4IDlDIDVGIDBGIEZBIDUyIDVBIDU3IDVBIEEw
IDQzIDBFIDkzICAuJmxILl8uLlJaV1ouQy4uCiAgICAwNjAwOiA2OSAwMSA3MCAwMCA2NSBBMCAy
OSA5MiA5MyA1QyAyRSA1RiA1MyA0MiA1RiA1NSAgaS5wLmUuKS4uXC5fU0JfVQogICAgMDYxMDog
MzQgNTAgNDMgMEEgRkYgN0IgNUMgMkUgNUYgNTMgNDIgNUYgNTUgMzQgNTAgNDMgIDRQQy4ue1wu
X1NCX1U0UEMKICAgIDA2MjA6IDBBIDBGIDY1IDdCIDYzIDBDIEYwIEZGIEZGIEZGIDYzIDdEIDYz
IDY1IDYzIEExICAuLmV7Yy4uLi4uY31jZWMuCiAgICAwNjMwOiA0NCAwOCBBMCA0MSAwOCA5MCA1
QiAxMiA1QyAyRSA1RiA1MyA0MiA1RiA0RCAzNiAgRC4uQS4uWy5cLl9TQl9NNgogICAgMDY0MDog
MzIgMzUgMDAgOTIgOTMgNEQgMzYgMzIgMzAgMDAgQTAgNDkgMDYgOTIgOTMgNEQgIDI1Li4uTTYy
MC4uSS4uLk0KICAgIDA2NTA6IDMwIDM0IDM5IDREIDM2IDMyIDMwIDBBIDEwIDAwIEEwIDJEIDkz
IDVDIDJFIDVGICAwNDlNNjIwLi4uLi0uXC5fCiAgICAwNjYwOiA1MyA0MiA1RiA0RCAzNiAzMyAz
MCAwQiA1NSA1NSA3MCA1QyAyRSA1RiA1MyA0MiAgU0JfTTYzMC5VVXBcLl9TQgogICAgMDY3MDog
NUYgNEQgMzYgMzIgMzUgMEIgODAgMDEgMEIgRTggMDMgNjEgNzAgNjEgNUMgMkUgIF9NNjI1Li4u
Li4uYXBhXC4KICAgIDA2ODA6IDVGIDUzIDQyIDVGIDREIDM2IDMzIDMwIEExIDBEIDcwIDVDIDJF
IDVGIDUzIDQyICBfU0JfTTYzMC4ucFwuX1NCCiAgICAwNjkwOiA1RiA0RCAzNiAzMyAzMCA2MSBB
MCAxRCA5MyA3QiA2MSAwQSBGRiAwMCAwMCA3QiAgX002MzBhLi4ue2EuLi4uewogICAgMDZBMDog
N0EgNjEgMEEgMTAgMDAgMEEgMEYgNjUgN0IgNjMgMEMgRjAgRkYgRkYgRkYgNjMgIHphLi4uLi5l
e2MuLi4uLmMKICAgIDA2QjA6IDdEIDYzIDY1IDYzIEEwIDBGIDkzIDY1IDAwIDdEIDQzIDQ0IDU3
IDMxIDBBIDA0ICB9Y2VjLi4uZS59Q0RXMS4uCiAgICAwNkMwOiA0MyA0NCA1NyAzMSBBMSAxQiBB
MCAxOSA5MiA5MyA2MyA0MyA0NCA1NyAzMyA3MCAgQ0RXMS4uLi4uLmNDRFczcAogICAgMDZEMDog
NjMgNDMgNDQgNTcgMzMgN0QgNDMgNDQgNTcgMzEgMEEgMTAgNDMgNDQgNTcgMzEgIGNDRFczfUNE
VzEuLkNEVzEKICAgIDA2RTA6IEExIDBDIDdEIDQzIDQ0IDU3IDMxIDBBIDA4IDQzIDQ0IDU3IDMx
IEExIDQxIDE3ICAuLn1DRFcxLi5DRFcxLkEuCiAgICAwNkYwOiBBMCA0MSAxNiA5MyA2OCAxMSAx
MyAwQSAxMCA2RSBCMCAxMSAwOCAyNyA0QSBGOSAgLkEuLmguLi4ubi4uLidKLgogICAgMDcwMDog
NDQgOEQgNjAgM0MgQkIgQzIgMkUgN0IgNDggQTAgNEIgMTMgOTMgNjkgMDEgQTAgIEQuYDwuLi57
SC5LLi5pLi4KICAgIDA3MTA6IDRDIDA2IDkwIDVCIDEyIDVDIDQ0IDQ5IDREIDUzIDAwIDVCIDEy
IDVDIDQ0IDQ0ICBMLi5bLlxESU1TLlsuXERECiAgICAwNzIwOiA0NSA1MCAwMCBBMCA0OCAwNSA5
MCA5MyA1QyA0NCA0NCA0NSA1MCAwMSA5MyA3QiAgRVAuLkguLi5cRERFUC4uewogICAgMDczMDog
NDMgNDQgNTcgMzIgMEMgMDAgMDAgMDQgMDAgMDAgMEMgMDAgMDAgMDQgMDAgNEQgIENEVzIuLi4u
Li4uLi4uLk0KICAgIDA3NDA6IDM0IDM2IDMwIDBEIDIwIDIwIDIwIDIwIDQ0IDY5IDczIDYxIDYy
IDZDIDY1IDIwICA0NjAuICAgIERpc2FibGUgCiAgICAwNzUwOiA1NSA1MyA0MiAzNCAyMCA0MSA0
MyA1MCA0OSAyMCA1RiA0NCA0NSA1MCAwQSAwMCAgVVNCNCBBQ1BJIF9ERVAuLgogICAgMDc2MDog
MDAgMDAgMDAgMDAgMDAgMDAgNzAgNUMgNDQgNDkgNEQgNTMgNjEgNEQgMzIgMzMgIC4uLi4uLnBc
RElNU2FNMjMKICAgIDA3NzA6IDMyIDYxIDBBIDU1IDAwIDcwIDAwIDVDIDQ0IDQ0IDQ1IDUwIDdE
IDYyIDBBIDA0ICAyYS5VLnAuXERERVB9Yi4uCiAgICAwNzgwOiA2MiBBMCAwRiA5MyA0RCA1MyA0
NCA0MiAwMSA3QiA2MiAwQyA3RiBGRiBGRiBGRiAgYi4uLk1TREIue2IuLi4uLgogICAgMDc5MDog
NjIgQTAgMTEgOTIgOTMgNTUgMzQgNTAgNDMgMEEgRkYgN0QgNjIgMEMgMDAgMDAgIGIuLi4uVTRQ
Qy4ufWIuLi4KICAgIDA3QTA6IDA0IDAwIDYyIEExIDJGIEEwIDJEIDkyIDkzIDREIDM2IDMyIDMw
IDAwIEEwIDI0ICAuLmIuLy4tLi5NNjIwLi4kCiAgICAwN0IwOiA5MiA5MyA0RCAzMCAzNCAzOSA0
RCAzNiAzMiAzMCAwQSAxMCAwMCBBMCAxNSA5MyAgLi5NMDQ5TTYyMC4uLi4uLgogICAgMDdDMDog
NEQgMzAgMzQgMzkgNEQgMzYgMzIgMzAgMEEgNDUgMDAgN0IgNjIgMEMgRkYgRkYgIE0wNDlNNjIw
LkUue2IuLi4KICAgIDA3RDA6IEZCIEZGIDYyIEEwIDE5IDkyIDkzIDYyIDQzIDQ0IDU3IDMyIDcw
IDYyIDQzIDQ0ICAuLmIuLi4uYkNEVzJwYkNECiAgICAwN0UwOiA1NyAzMiA3RCA0MyA0NCA1NyAz
MSAwQSAxMCA0MyA0NCA1NyAzMSBBMCA0NyAwNSAgVzJ9Q0RXMS4uQ0RXMS5HLgogICAgMDdGMDog
OTAgOTIgOTMgN0IgNDMgNDQgNTcgMzEgMDEgMDAgMDEgNUIgMTIgNUMgMkUgNUYgIC4uLntDRFcx
Li4uWy5cLl8KICAgIDA4MDA6IDUzIDQyIDVGIDREIDM2IDMyIDM1IDAwIEEwIDNDIDkyIDkzIDRE
IDM2IDMyIDMwICBTQl9NNjI1Li48Li5NNjIwCiAgICAwODEwOiAwMCBBMCAzMyA5MiA5MyA0RCAz
MCAzNCAzOSA0RCAzNiAzMiAzMCAwQSAxMCAwMCAgLi4zLi5NMDQ5TTYyMC4uLgogICAgMDgyMDog
NzAgNEQgMzAgMzQgMzkgNEQgMzYgMzIgMzAgMEEgNDMgNjQgNzAgNUMgMkUgNUYgIHBNMDQ5TTYy
MC5DZHBcLl8KICAgIDA4MzA6IDUzIDQyIDVGIDREIDM2IDMyIDM1IDcyIDBCIDAyIDAxIDc5IDY0
IDBBIDEwIDAwICBTQl9NNjI1ci4uLnlkLi4uCiAgICAwODQwOiAwMCAwQiBFOCAwMyA2MSBBMSAw
QyA3RCA0MyA0NCA1NyAzMSAwQSAwOCA0MyA0NCAgLi4uLmEuLn1DRFcxLi5DRAogICAgMDg1MDog
NTcgMzEgQTEgMEMgN0QgNDMgNDQgNTcgMzEgMEEgMDQgNDMgNDQgNTcgMzEgQTAgIFcxLi59Q0RX
MS4uQ0RXMS4KICAgIDA4NjA6IDQ4IDA0IDkzIDZBIDAxIDREIDM0IDM2IDMwIDBEIDIwIDIwIDQ2
IDQ1IDQxIDJEICBILi5qLk00NjAuICBGRUEtCiAgICAwODcwOiA0MSA1MyA0QyAyRCA1QyA1RiA1
MyA0MiAyRSA1RiA0RiA1MyA0MyAyMCA1NSA1NSAgQVNMLVxfU0IuX09TQyBVVQogICAgMDg4MDog
NDkgNDQgMjAgMzAgNzggMjUgNTggMjAgNTIgNjUgNzQgNzUgNzIgNkUgMjAgNDMgIElEIDB4JVgg
UmV0dXJuIEMKICAgIDA4OTA6IDQ0IDU3IDMxIDIwIDNEIDIwIDMwIDc4IDI1IDU4IDBBIDAwIDU1
IDQ5IDQ0IDMwICBEVzEgPSAweCVYLi5VSUQwCiAgICAwOEEwOiA0MyA0NCA1NyAzMSAwMCAwMCAw
MCAwMCBBMSA0RiAwQiBBMCA0OCAwNSA5MyA2QSAgQ0RXMS4uLi4uTy4uSC4uagogICAgMDhCMDog
MEEgMDIgNEQgMzQgMzYgMzAgMEQgMjAgMjAgNDYgNDUgNDEgMkQgNDEgNTMgNEMgIC4uTTQ2MC4g
IEZFQS1BU0wKICAgIDA4QzA6IDJEIDVDIDVGIDUzIDQyIDJFIDVGIDRGIDUzIDQzIDIwIDU1IDU1
IDQ5IDQ0IDIwICAtXF9TQi5fT1NDIFVVSUQgCiAgICAwOEQwOiAzMCA3OCAyNSA1OCAyMCA1MiA2
NSA3NCA3NSA3MiA2RSAyMCA0MyA0NCA1NyAzMSAgMHglWCBSZXR1cm4gQ0RXMQogICAgMDhFMDog
MjAgM0QgMjAgMzAgNzggMjUgNTggMjAgNDMgNDQgNTcgMzIgMjAgM0QgMjAgMzAgICA9IDB4JVgg
Q0RXMiA9IDAKICAgIDA4RjA6IDc4IDI1IDU4IDBBIDAwIDU1IDQ5IDQ0IDMwIDQzIDQ0IDU3IDMx
IDQzIDQ0IDU3ICB4JVguLlVJRDBDRFcxQ0RXCiAgICAwOTAwOiAzMiAwMCAwMCAwMCBBMSA0MyAw
NiA0RCAzNCAzNiAzMCAwRCAyMCAyMCA0NiA0NSAgMi4uLi5DLk00NjAuICBGRQogICAgMDkxMDog
NDEgMkQgNDEgNTMgNEMgMkQgNUMgNUYgNTMgNDIgMkUgNUYgNEYgNTMgNDMgMjAgIEEtQVNMLVxf
U0IuX09TQyAKICAgIDA5MjA6IDU1IDU1IDQ5IDQ0IDIwIDMwIDc4IDI1IDU4IDIwIDUyIDY1IDc0
IDc1IDcyIDZFICBVVUlEIDB4JVggUmV0dXJuCiAgICAwOTMwOiAyMCA0MyA0NCA1NyAzMSAyMCAz
RCAyMCAzMCA3OCAyNSA1OCAyMCA0MyA0NCA1NyAgIENEVzEgPSAweCVYIENEVwogICAgMDk0MDog
MzIgMjAgM0QgMjAgMzAgNzggMjUgNTggMjAgNDMgNDQgNTcgMzMgMjAgM0QgMjAgIDIgPSAweCVY
IENEVzMgPSAKICAgIDA5NTA6IDMwIDc4IDI1IDU4IDBBIDAwIDU1IDQ5IDQ0IDMwIDQzIDQ0IDU3
IDMxIDQzIDQ0ICAweCVYLi5VSUQwQ0RXMUNECiAgICAwOTYwOiA1NyAzMiA0MyA0NCA1NyAzMyAw
MCAwMCBBNCA2QiAgICAgICAgICAgICAgICAgICAgVzJDRFczLi4uawoKRVJTVCBAIDB4MDAwMDAw
MDAwMDAwMDAwMAogICAgMDAwMDogNDUgNTIgNTMgNTQgMzAgMDIgMDAgMDAgMDEgRTEgNDEgNEQg
NDkgNDUgNTIgMDAgIEVSU1QwLi4uLi5BTUlFUi4KICAgIDAwMTA6IDQxIDREIDQ5IDJFIDQ1IDUy
IDUzIDU0IDAwIDAwIDAwIDAwIDQxIDREIDQ5IDJFICBBTUkuRVJTVC4uLi5BTUkuCiAgICAwMDIw
OiAwMCAwMCAwMCAwMCAwQyAwMCAwMCAwMCAwMCAwMCAwMCAwMCAxMCAwMCAwMCAwMCAgLi4uLi4u
Li4uLi4uLi4uLgogICAgMDAzMDogMDAgMDMgMDAgMDAgMDAgMDggMDAgMDEgMTggQjAgNDggQTQg
MDAgMDAgMDAgMDAgIC4uLi4uLi4uLi5ILi4uLi4KICAgIDAwNDA6IDAwIDAwIDAwIDAwIDAwIDAw
IDAwIDAwIEZGIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwMDUw
OiAwMSAwMyAwMCAwMCAwMCAwOCAwMCAwMSAxOCBCMCA0OCBBNCAwMCAwMCAwMCAwMCAgLi4uLi4u
Li4uLkguLi4uLgogICAgMDA2MDogMDEgMDAgMDAgMDAgMDAgMDAgMDAgMDAgRkYgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAgIDAwNzA6IDAyIDAzIDAwIDAwIDAwIDA4
IDAwIDAxIDE4IEIwIDQ4IEE0IDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uSC4uLi4uCiAgICAwMDgw
OiAwMiAwMCAwMCAwMCAwMCAwMCAwMCAwMCBGRiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4u
Li4uLi4uLi4uLgogICAgMDA5MDogMDMgMDMgMDAgMDAgMDAgMDggMDAgMDEgMTkgQjAgNDggQTQg
MDAgMDAgMDAgMDAgIC4uLi4uLi4uLi5ILi4uLi4KICAgIDAwQTA6IDAzIDAwIDAwIDAwIDAwIDAw
IDAwIDAwIEZGIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwMEIw
OiAwNCAwMiAwMCAwMCAwMCAyMCAwMCAwMyAxQyBCMCA0OCBBNCAwMCAwMCAwMCAwMCAgLi4uLi4g
Li4uLkguLi4uLgogICAgMDBDMDogMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgRkYgRkYgRkYgRkYg
MDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAgIDAwRDA6IDA1IDAzIDAwIDAwIDAxIDA4
IDAwIDAxIEIyIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwMEUw
OiA3MCAwMCAwMCAwMCAwMCAwMCAwMCAwMCBGRiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgcC4uLi4u
Li4uLi4uLi4uLgogICAgMDBGMDogMDYgMDEgMDAgMDAgMDAgMDggMDAgMDEgMjAgQjAgNDggQTQg
MDAgMDAgMDAgMDAgIC4uLi4uLi4uIC5ILi4uLi4KICAgIDAxMDA6IDAxIDAwIDAwIDAwIDAwIDAw
IDAwIDAwIEZGIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwMTEw
OiAwNyAwMCAwMCAwMCAwMCAwOCAwMCAwMSAyMSBCMCA0OCBBNCAwMCAwMCAwMCAwMCAgLi4uLi4u
Li4hLkguLi4uLgogICAgMDEyMDogMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgRkYgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAgIDAxMzA6IDA4IDAwIDAwIDAwIDAwIDQw
IDAwIDA0IDI4IEIwIDQ4IEE0IDAwIDAwIDAwIDAwICAuLi4uLkAuLiguSC4uLi4uCiAgICAwMTQw
OiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCBGRiBGRiBGRiBGRiBGRiBGRiBGRiBGRiAgLi4uLi4u
Li4uLi4uLi4uLgogICAgMDE1MDogMDkgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMzAgQjAgNDggQTQg
MDAgMDAgMDAgMDAgIC4uLi4uQC4uMC5ILi4uLi4KICAgIDAxNjA6IDAwIDAwIDAwIDAwIDAwIDAw
IDAwIDAwIEZGIEZGIEZGIEZGIEZGIEZGIEZGIEZGICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwMTcw
OiAwQSAwMCAwMCAwMCAwMCAxMCAwMCAwMiAzOCBCMCA0OCBBNCAwMCAwMCAwMCAwMCAgLi4uLi4u
Li44LkguLi4uLgogICAgMDE4MDogMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgRkYgRkYgMDAgMDAg
MDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAgIDAxOTA6IDBCIDAzIDAwIDAwIDAwIDA4
IDAwIDAxIDE4IEIwIDQ4IEE0IDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uSC4uLi4uCiAgICAwMUEw
OiAwQiAwMCAwMCAwMCAwMCAwMCAwMCAwMCBGRiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4u
Li4uLi4uLi4uLgogICAgMDFCMDogMEMgMDQgMDAgMDAgMDAgMDggMDAgMDEgMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAgIDAxQzA6IDAwIDAwIDAwIDAwIDAwIDAw
IDAwIDAwIEZGIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwMUQw
OiAwRCAwMCAwMCAwMCAwMCA0MCAwMCAwNCA0MCBCMCA0OCBBNCAwMCAwMCAwMCAwMCAgLi4uLi5A
Li5ALkguLi4uLgogICAgMDFFMDogMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgRkYgRkYgRkYgRkYg
RkYgRkYgRkYgRkYgIC4uLi4uLi4uLi4uLi4uLi4KICAgIDAxRjA6IDBFIDAwIDAwIDAwIDAwIDIw
IDAwIDAzIDQ4IEIwIDQ4IEE0IDAwIDAwIDAwIDAwICAuLi4uLiAuLkguSC4uLi4uCiAgICAwMjAw
OiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCBGRiBGRiBGRiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4u
Li4uLi4uLi4uLgogICAgMDIxMDogMEYgMDAgMDAgMDAgMDAgMDggMDAgMDEgNEMgQjAgNDggQTQg
MDAgMDAgMDAgMDAgIC4uLi4uLi4uTC5ILi4uLi4KICAgIDAyMjA6IDAwIDAwIDAwIDAwIDAwIDAw
IDAwIDAwIEZGIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCgpJVlJTIEAg
MHgwMDAwMDAwMDAwMDAwMDAwCiAgICAwMDAwOiA0OSA1NiA1MiA1MyBFOCAwMSAwMCAwMCAwMiBC
QSA0MSA0RCA0NCAyMCAyMCAwMCAgSVZSUy4uLi4uLkFNRCAgLgogICAgMDAxMDogNDEgNkQgNjQg
NTQgNjEgNjIgNkMgNjUgMDEgMDAgMDAgMDAgNDEgNEQgNDQgMjAgIEFtZFRhYmxlLi4uLkFNRCAK
ICAgIDAwMjA6IDAxIDAwIDAwIDAwIDYxIDM0IDIwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAw
ICAuLi4uYTQgLi4uLi4uLi4uCiAgICAwMDMwOiAxMCBCMCAyOCAwMCAwMiBDMCA0MCAwMCAwMCAw
MCAxMCBERiAwMCAwMCAwMCAwMCAgLi4oLi4uQC4uLi4uLi4uLgogICAgMDA0MDogMDAgMDAgMDAg
MDAgNkYgOEYgMDQgOTAgMDMgMDMgQzAgMDAgMDQgRkUgRkYgMDAgIC4uLi5vLi4uLi4uLi4uLi4K
ICAgIDAwNTA6IDQ4IDAwIDAwIDAwIDgxIDAxIEMwIDAxIDExIDMwIDM4IDAwIDAyIEMwIDQwIDAw
ICBILi4uLi4uLi4wOC4uLkAuCiAgICAwMDYwOiAwMCAwMCAxMCBERiAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCA4MCAwNCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMDA3MDogRkUgNUEgMjkg
QTIgMkYgNzMgQkYgMjUgMUQgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC5aKS4vcy4lLi4uLi4uLi4K
ICAgIDAwODA6IDAzIDAzIEMwIDAwIDA0IEZFIEZGIDAwIDQ4IDAwIDAwIDAwIDgxIDAxIEMwIDAx
ICAuLi4uLi4uLkguLi4uLi4uCiAgICAwMDkwOiAxMCBCMCAyOCAwMCAwMiA4MCA0MCAwMCAwMCAw
MCAxMCBEMyAwMCAwMCAwMCAwMCAgLi4oLi4uQC4uLi4uLi4uLgogICAgMDBBMDogMDAgMDAgMDAg
MDAgNkYgOEYgMDQgOTAgMDMgMDMgODAgMDAgMDQgRkUgQkYgMDAgIC4uLi5vLi4uLi4uLi4uLi4K
ICAgIDAwQjA6IDQ4IDAwIDAwIDAwIDgyIDAxIDgwIDAxIDExIDMwIDM4IDAwIDAyIDgwIDQwIDAw
ICBILi4uLi4uLi4wOC4uLkAuCiAgICAwMEMwOiAwMCAwMCAxMCBEMyAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCA4MCAwNCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMDBEMDogRkUgNUEgMjkg
QTIgMkYgNzMgQkYgMjUgMUQgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC5aKS4vcy4lLi4uLi4uLi4K
ICAgIDAwRTA6IDAzIDAzIDgwIDAwIDA0IEZFIEJGIDAwIDQ4IDAwIDAwIDAwIDgyIDAxIDgwIDAx
ICAuLi4uLi4uLkguLi4uLi4uCiAgICAwMEYwOiAxMCBCMCA0NCAwMCAwMiAwMCA0MCAwMCAwMCAw
MCAxMCBGNyAwMCAwMCAwMCAwMCAgLi5ELi4uQC4uLi4uLi4uLgogICAgMDEwMDogMDAgMDAgMDAg
MDAgNkYgOEYgMDQgOTAgMDMgMDMgMDAgMDAgMDQgRkUgM0YgMDAgIC4uLi5vLi4uLi4uLi4uPy4K
ICAgIDAxMTA6IDQzIDAwIEZGIDAwIDAwIEE1IDAwIDAwIDA0IEZGIEZGIDAwIDQ4IDAwIDAwIDAw
ICBDLi4uLi4uLi4uLi5ILi4uCiAgICAwMTIwOiAwMCBBMCAwMCAwMiA0OCAwMCAwMCBENyA4MCBB
MCAwMCAwMSA0OCAwMCAwMCAwMCAgLi4uLkguLi4uLi4uSC4uLgogICAgMDEzMDogODMgMDEgMDAg
MDEgMTEgMzAgNTQgMDAgMDIgMDAgNDAgMDAgMDAgMDAgMTAgRjcgIC4uLi4uMFQuLi5ALi4uLi4K
ICAgIDAxNDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDgwIDA0IDAwIEZFIDVBIDI5IEEy
ICAuLi4uLi4uLi4uLi4uWikuCiAgICAwMTUwOiAyRiA3MyBCRiAyNSAxRCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMyAwMyAwMCAwMCAgL3MuJS4uLi4uLi4uLi4uLgogICAgMDE2MDogMDQgRkUgM0Yg
MDAgNDMgMDAgRkYgMDAgMDAgQTUgMDAgMDAgMDQgRkYgRkYgMDAgIC4uPy5DLi4uLi4uLi4uLi4K
ICAgIDAxNzA6IDQ4IDAwIDAwIDAwIDAwIEEwIDAwIDAyIDQ4IDAwIDAwIEQ3IDgwIEEwIDAwIDAx
ICBILi4uLi4uLkguLi4uLi4uCiAgICAwMTgwOiA0OCAwMCAwMCAwMCA4MyAwMSAwMCAwMSAxMCBC
MCAyOCAwMCAwMiA0MCA0MCAwMCAgSC4uLi4uLi4uLiguLkBALgogICAgMDE5MDogMDAgMDAgMTAg
QzkgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgNkYgOEYgMDQgOTAgIC4uLi4uLi4uLi4uLm8uLi4K
ICAgIDAxQTA6IDAzIDAzIDQwIDAwIDA0IEZFIDdGIDAwIDQ4IDAwIDAwIDAwIDg0IDAxIDQwIDAx
ICAuLkAuLi4uLkguLi4uLkAuCiAgICAwMUIwOiAxMSAzMCAzOCAwMCAwMiA0MCA0MCAwMCAwMCAw
MCAxMCBDOSAwMCAwMCAwMCAwMCAgLjA4Li5AQC4uLi4uLi4uLgogICAgMDFDMDogMDAgMDAgMDAg
MDAgMDAgODAgMDQgMDAgRkUgNUEgMjkgQTIgMkYgNzMgQkYgMjUgIC4uLi4uLi4uLlopLi9zLiUK
ICAgIDAxRDA6IDFEIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAzIDAzIDQwIDAwIDA0IEZFIDdGIDAw
ICAuLi4uLi4uLi4uQC4uLi4uCiAgICAwMUUwOiA0OCAwMCAwMCAwMCA4NCAwMSA0MCAwMSAgICAg
ICAgICAgICAgICAgICAgICAgICAgSC4uLi4uQC4KCkRTRFQgQCAweDAwMDAwMDAwMDAwMDAwMDAK
ICAgIDAwMDA6IDQ0IDUzIDQ0IDU0IEY2IEQyIDAwIDAwIDAyIDE0IDQxIDREIDQ0IDIwIDIwIDIw
ICBEU0RULi4uLi4uQU1EICAgCiAgICAwMDEwOiA0MSAyMCA0RCAyMCA0OSAyMCAwMCAwMCAwMSAw
MCAwMCAwMCA0OSA0RSA1NCA0QyAgQSBNIEkgLi4uLi4uSU5UTAogICAgMDAyMDogMzEgMDMgMjMg
MjAgQTAgNEQgNTMgMDAgMTUgNUMgMkYgMDMgNUYgNTMgNDIgNUYgIDEuIyAuTVMuLlwvLl9TQl8K
ICAgIDAwMzA6IDUwIDQzIDQ5IDMzIDUwIDRGIDUzIDUzIDA1IDAwIDE1IDVDIDJGIDAzIDVGIDUz
ICBQQ0kzUE9TUy4uLlwvLl9TCiAgICAwMDQwOiA0MiA1RiA1MCA0MyA0OSAzMyA1MCA0RiA1MyA0
MyAwNSAwMCAxNSA1QyAyRiAwMyAgQl9QQ0kzUE9TQy4uLlwvLgogICAgMDA1MDogNUYgNTMgNDIg
NUYgNTAgNDMgNDkgMzIgNTAgNEYgNTMgNTMgMDUgMDAgMTUgNUMgIF9TQl9QQ0kyUE9TUy4uLlwK
ICAgIDAwNjA6IDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMyIDUwIDRGIDUzIDQzIDA1IDAw
ICAvLl9TQl9QQ0kyUE9TQy4uCiAgICAwMDcwOiAxNSA1QyAyRSA1RiA1MyA0MiA1RiA0MSA1MCA1
NCA1MyAwOCAwMSAxNSA1QyAyRSAgLlwuX1NCX0FQVFMuLi5cLgogICAgMDA4MDogNUYgNTMgNDIg
NUYgNDEgNTcgNDEgNEIgMDggMDEgMTUgNUMgMkYgMDMgNUYgNTMgIF9TQl9BV0FLLi4uXC8uX1MK
ICAgIDAwOTA6IDQyIDVGIDUwIDQzIDQ5IDMwIDUwIDRGIDUzIDUzIDA1IDAwIDE1IDVDIDJGIDAz
ICBCX1BDSTBQT1NTLi4uXC8uCiAgICAwMEEwOiA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMCA1MCA0
RiA1MyA0MyAwNSAwMCAxNSA1QyAgX1NCX1BDSTBQT1NDLi4uXAogICAgMDBCMDogMkYgMDMgNUYg
NTMgNDIgNUYgNTAgNDMgNDkgMzEgNTAgNEYgNTMgNTMgMDUgMDAgIC8uX1NCX1BDSTFQT1NTLi4K
ICAgIDAwQzA6IDE1IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMxIDUwIDRGIDUzIDQz
ICAuXC8uX1NCX1BDSTFQT1NDCiAgICAwMEQwOiAwNSAwMCAxNSA1QyA0RCAzMSAzMSAzNSAwMyAw
MCAxNSA1QyA0RCAzMSAzMSAzNiAgLi4uXE0xMTUuLi5cTTExNgogICAgMDBFMDogMEUgMDAgMTUg
NUMgNEQgMzEgMzEgMzcgMEUgMDAgMTUgNUMgNEQgMzEgMzEgMzggIC4uLlxNMTE3Li4uXE0xMTgK
ICAgIDAwRjA6IDBFIDAwIDE1IDVDIDREIDMxIDMxIDM5IDBFIDAwIDE1IDVDIDREIDMxIDMyIDMw
ICAuLi5cTTExOS4uLlxNMTIwCiAgICAwMTAwOiAwRSAwMCAxNSA1QyA0RCAzMCAzMyAzNyAwNiAw
MCAxNSA1QyA0RCAzMiAzMiAzNyAgLi4uXE0wMzcuLi5cTTIyNwogICAgMDExMDogMDYgMDAgMTUg
NUMgNEQgMzMgMzIgMzkgMDYgMDAgMTUgNUMgNEQgMzMgMzIgNDEgIC4uLlxNMzI5Li4uXE0zMkEK
ICAgIDAxMjA6IDA2IDAwIDE1IDVDIDREIDMzIDMyIDQyIDA2IDAwIDE1IDVDIDREIDMzIDMyIDQz
ICAuLi5cTTMyQi4uLlxNMzJDCiAgICAwMTMwOiAwNiAwMCAxNSA1QyA0RCAzMyAzMyAzMCAwNiAw
MCAxNSA1QyA0RCAzMCAzOCAzMiAgLi4uXE0zMzAuLi5cTTA4MgogICAgMDE0MDogMDUgMDAgMTUg
NUMgNEQgMzAgMzggMzMgMDUgMDAgMTUgNUMgNEQgMzAgMzggMzQgIC4uLlxNMDgzLi4uXE0wODQK
ICAgIDAxNTA6IDA1IDAwIDE1IDVDIDREIDMwIDM4IDM1IDA1IDAwIDE1IDVDIDREIDMyIDMyIDMx
ICAuLi5cTTA4NS4uLlxNMjIxCiAgICAwMTYwOiAwNSAwMCAxNSA1QyA0RCAzMCAzOCAzNiAwNSAw
MCAxNSA1QyA0RCAzMiAzMiAzOSAgLi4uXE0wODYuLi5cTTIyOQogICAgMDE3MDogMDUgMDAgMTUg
NUMgNEQgMzIgMzMgMzEgMDUgMDAgMTUgNUMgNEQgMzIgMzMgMzUgIC4uLlxNMjMxLi4uXE0yMzUK
ICAgIDAxODA6IDA1IDAwIDE1IDVDIDREIDMyIDMzIDMzIDA1IDAwIDE1IDVDIDREIDMwIDM4IDM3
ICAuLi5cTTIzMy4uLlxNMDg3CiAgICAwMTkwOiAwNSAwMCAxNSA1QyA0RCAzMCAzOCAzOCAwNSAw
MCAxNSA1QyA0RCAzMCAzOCAzOSAgLi4uXE0wODguLi5cTTA4OQogICAgMDFBMDogMDUgMDAgMTUg
NUMgNEQgMzAgMzkgMzAgMDUgMDAgMTUgNUMgNEQgMzAgMzkgMzEgIC4uLlxNMDkwLi4uXE0wOTEK
ICAgIDAxQjA6IDA1IDAwIDE1IDVDIDREIDMwIDM5IDMyIDA1IDAwIDE1IDVDIDREIDMwIDM5IDMz
ICAuLi5cTTA5Mi4uLlxNMDkzCiAgICAwMUMwOiAwNSAwMCAxNSA1QyA0RCAzMCAzOSAzNCAwNSAw
MCAxNSA1QyA0RCAzMCAzOSAzNSAgLi4uXE0wOTQuLi5cTTA5NQogICAgMDFEMDogMDUgMDAgMTUg
NUMgNEQgMzAgMzkgMzYgMDUgMDAgMTUgNUMgNEQgMzAgMzkgMzcgIC4uLlxNMDk2Li4uXE0wOTcK
ICAgIDAxRTA6IDA1IDAwIDE1IDVDIDREIDMwIDM5IDM4IDA1IDAwIDE1IDVDIDREIDMwIDM5IDM5
ICAuLi5cTTA5OC4uLlxNMDk5CiAgICAwMUYwOiAwNSAwMCAxNSA1QyA0RCAzMSAzMCAzMCAwNSAw
MCAxNSA1QyA0RCAzMSAzMCAzMSAgLi4uXE0xMDAuLi5cTTEwMQogICAgMDIwMDogMDUgMDAgMTUg
NUMgNEQgMzEgMzAgMzIgMDUgMDAgMTUgNUMgNEQgMzEgMzAgMzMgIC4uLlxNMTAyLi4uXE0xMDMK
ICAgIDAyMTA6IDA1IDAwIDE1IDVDIDREIDMxIDMwIDM0IDA1IDAwIDE1IDVDIDREIDMxIDMwIDM1
ICAuLi5cTTEwNC4uLlxNMTA1CiAgICAwMjIwOiAwNSAwMCAxNSA1QyA0RCAzMSAzMCAzNiAwNSAw
MCAxNSA1QyA0RCAzMSAzMCAzNyAgLi4uXE0xMDYuLi5cTTEwNwogICAgMDIzMDogMDUgMDAgMTUg
NUMgNEQgMzEgMzIgMzggMDUgMDAgMTUgNUMgNEQgMzEgMzAgMzggIC4uLlxNMTI4Li4uXE0xMDgK
ICAgIDAyNDA6IDA1IDAwIDE1IDVDIDREIDMxIDMwIDM5IDA1IDAwIDE1IDVDIDREIDMxIDMxIDMw
ICAuLi5cTTEwOS4uLlxNMTEwCiAgICAwMjUwOiAwNSAwMCAxNSA1QyA0RCAzMSAzMiAzMiAwNSAw
MCAxNSA1QyA0RCAzMSAzMyAzMSAgLi4uXE0xMjIuLi5cTTEzMQogICAgMDI2MDogMDUgMDAgMTUg
NUMgNEQgMzEgMzMgMzIgMDUgMDAgMTUgNUMgNEQgMzIgMzIgMzYgIC4uLlxNMTMyLi4uXE0yMjYK
ICAgIDAyNzA6IDA1IDAwIDE1IDVDIDREIDMxIDMzIDMzIDA1IDAwIDE1IDVDIDREIDMxIDMzIDM0
ICAuLi5cTTEzMy4uLlxNMTM0CiAgICAwMjgwOiAwNSAwMCAxNSA1QyA0RCAzMSAzMyAzNSAwNSAw
MCAxNSA1QyA0RCAzMSAzMyAzNiAgLi4uXE0xMzUuLi5cTTEzNgogICAgMDI5MDogMDUgMDAgMTUg
NUMgNEQgMzIgMzIgMzAgMDUgMDAgMTUgNUMgNEQgMzAgMzQgMzYgIC4uLlxNMjIwLi4uXE0wNDYK
ICAgIDAyQTA6IDAxIDAwIDE1IDVDIDREIDMwIDM0IDM3IDAxIDAwIDE1IDVDIDREIDMyIDM1IDMx
ICAuLi5cTTA0Ny4uLlxNMjUxCiAgICAwMkIwOiAwNSAwMCAxNSA1QyA0RCAzMyAzMSAzMCAwNSAw
MCAxNSA1QyA0RCAzMyAzMSA0MyAgLi4uXE0zMTAuLi5cTTMxQwogICAgMDJDMDogMDUgMDAgMTUg
NUMgNEQgMzMgMzIgMzAgMDUgMDAgMTUgNUMgNEQgMzMgMzIgMzEgIC4uLlxNMzIwLi4uXE0zMjEK
ICAgIDAyRDA6IDA1IDAwIDE1IDVDIDREIDMzIDMyIDMyIDA1IDAwIDE1IDVDIDREIDMzIDMyIDMz
ICAuLi5cTTMyMi4uLlxNMzIzCiAgICAwMkUwOiAwNSAwMCAxNSA1QyA0RCAzMyAzMiAzNCAwNSAw
MCAxNSA1QyA0RCAzMyAzMiAzNSAgLi4uXE0zMjQuLi5cTTMyNQogICAgMDJGMDogMDUgMDAgMTUg
NUMgNEQgMzMgMzIgMzYgMDUgMDAgMTUgNUMgNEQgMzMgMzIgMzcgIC4uLlxNMzI2Li4uXE0zMjcK
ICAgIDAzMDA6IDA1IDAwIDE1IDVDIDREIDMzIDMyIDM4IDA1IDAwIDE1IDVDIDREIDMyIDM4IDMw
ICAuLi5cTTMyOC4uLlxNMjgwCiAgICAwMzEwOiAwNSAwMCAxNSA1QyA0RCAzMiAzOSAzMCAwNSAw
MCAxNSA1QyA0RCAzMyAzNyAzOCAgLi4uXE0yOTAuLi5cTTM3OAogICAgMDMyMDogMDUgMDAgMTUg
NUMgNEQgMzMgMzcgMzkgMDUgMDAgMTUgNUMgNEQgMzMgMzggMzAgIC4uLlxNMzc5Li4uXE0zODAK
ICAgIDAzMzA6IDA1IDAwIDE1IDVDIDREIDMzIDM4IDMxIDA1IDAwIDE1IDVDIDREIDMzIDM4IDMy
ICAuLi5cTTM4MS4uLlxNMzgyCiAgICAwMzQwOiAwNSAwMCAxNSA1QyA0RCAzMyAzOCAzMyAwNSAw
MCAxNSA1QyA0RCAzMyAzOCAzNCAgLi4uXE0zODMuLi5cTTM4NAogICAgMDM1MDogMDUgMDAgMTUg
NUMgNEQgMzMgMzggMzUgMDUgMDAgMTUgNUMgNEQgMzMgMzggMzYgIC4uLlxNMzg1Li4uXE0zODYK
ICAgIDAzNjA6IDA1IDAwIDE1IDVDIDREIDMzIDM4IDM3IDA1IDAwIDE1IDVDIDREIDMzIDM4IDM4
ICAuLi5cTTM4Ny4uLlxNMzg4CiAgICAwMzcwOiAwNSAwMCAxNSA1QyA0RCAzMyAzOCAzOSAwNSAw
MCAxNSA1QyA0RCAzMyAzOSAzMCAgLi4uXE0zODkuLi5cTTM5MAogICAgMDM4MDogMDUgMDAgMTUg
NUMgNEQgMzMgMzkgMzEgMDUgMDAgMTUgNUMgNEQgMzMgMzkgMzIgIC4uLlxNMzkxLi4uXE0zOTIK
ICAgIDAzOTA6IDA1IDAwIDE1IDVDIDREIDMzIDMzIDMxIDA1IDAwIDE1IDVDIDREIDM2IDMyIDMw
ICAuLi5cTTMzMS4uLlxNNjIwCiAgICAwM0EwOiAwNSAwMCAxNSA1QyA0RCAzNCAzMCAzNCAwMyAw
MCAxNSA1QyA0RCAzNCAzMCAzOCAgLi4uXE00MDQuLi5cTTQwOAogICAgMDNCMDogMDkgMDAgMTUg
NUMgNEQgMzQgMzEgMzQgMDUgMDAgMTUgNUMgNEQgMzQgMzQgMzQgIC4uLlxNNDE0Li4uXE00NDQK
ICAgIDAzQzA6IDA1IDAwIDE1IDVDIDREIDM0IDM1IDMzIDA1IDAwIDE1IDVDIDREIDM0IDM1IDM0
ICAuLi5cTTQ1My4uLlxNNDU0CiAgICAwM0QwOiAwNSAwMCAxNSA1QyA0RCAzNCAzNSAzNSAwNSAw
MCAxNSA1QyA0RCAzNCAzNSAzNiAgLi4uXE00NTUuLi5cTTQ1NgogICAgMDNFMDogMDUgMDAgMTUg
NUMgNEQgMzQgMzUgMzcgMDUgMDAgMTUgNUMgNEQgMzQgMzQgMzkgIC4uLlxNNDU3Li4uXE00NDkK
ICAgIDAzRjA6IDA1IDAwIDE1IDVDIDREIDM0IDQzIDMwIDA1IDAwIDE1IDVDIDREIDMyIDMzIDQx
ICAuLi5cTTRDMC4uLlxNMjNBCiAgICAwNDAwOiAwNSAwMCAxNSA1QyA0RCAzNCA0NiAzMCAwNSAw
MCAxNSA1QyA0RCAzNiAzMSAzMCAgLi4uXE00RjAuLi5cTTYxMAogICAgMDQxMDogMDUgMDAgMTUg
NUMgNEQgMzYgMzAgMzAgMDggMDIgMTUgNUMgNEQgMzYgMzAgMzEgIC4uLlxNNjAwLi4uXE02MDEK
ICAgIDA0MjA6IDA4IDA2IDE1IDVDIDREIDMyIDM5IDQxIDA1IDAwIDE1IDVDIDREIDM2IDMzIDMx
ICAuLi5cTTI5QS4uLlxNNjMxCiAgICAwNDMwOiAwNSAwMCAxNSA1QyA0RCAzNiAzNSAzMiAwNSAw
MCAxNSA1QyA0RCAzMCAzNSAzMCAgLi4uXE02NTIuLi5cTTA1MAogICAgMDQ0MDogMDYgMDAgMTUg
NUMgNEQgMzAgMzUgMzEgMDYgMDAgMTUgNUMgNEQgMzAgMzUgMzIgIC4uLlxNMDUxLi4uXE0wNTIK
ICAgIDA0NTA6IDA2IDAwIDE1IDVDIDREIDMwIDM1IDMzIDA2IDAwIDE1IDVDIDREIDMwIDM1IDM0
ICAuLi5cTTA1My4uLlxNMDU0CiAgICAwNDYwOiAwNiAwMCAxNSA1QyA0RCAzMCAzNSAzNSAwNiAw
MCAxNSA1QyA0RCAzMCAzNSAzNiAgLi4uXE0wNTUuLi5cTTA1NgogICAgMDQ3MDogMDYgMDAgMTUg
NUMgNEQgMzAgMzUgMzcgMDYgMDAgMTUgNUMgNEQgMzAgMzUgMzggIC4uLlxNMDU3Li4uXE0wNTgK
ICAgIDA0ODA6IDA2IDAwIDE1IDVDIDREIDMwIDM1IDM5IDA2IDAwIDE1IDVDIDREIDMwIDM2IDMy
ICAuLi5cTTA1OS4uLlxNMDYyCiAgICAwNDkwOiAwNiAwMCAxNSA1QyA0RCAzMCAzNiAzOCAwNiAw
MCAxNSA1QyA0RCAzMCAzNiAzOSAgLi4uXE0wNjguLi5cTTA2OQogICAgMDRBMDogMDYgMDAgMTUg
NUMgNEQgMzAgMzcgMzAgMDYgMDAgMTUgNUMgNEQgMzAgMzcgMzEgIC4uLlxNMDcwLi4uXE0wNzEK
ICAgIDA0QjA6IDA2IDAwIDE1IDVDIDREIDMwIDM3IDMyIDA2IDAwIDE1IDVDIDREIDMwIDM3IDM0
ICAuLi5cTTA3Mi4uLlxNMDc0CiAgICAwNEMwOiAwNiAwMCAxNSA1QyA0RCAzMCAzNyAzNSAwNiAw
MCAxNSA1QyA0RCAzMCAzNyAzNiAgLi4uXE0wNzUuLi5cTTA3NgogICAgMDREMDogMDYgMDAgMTUg
NUMgNEQgMzAgMzcgMzcgMDYgMDAgMTUgNUMgNEQgMzAgMzcgMzggIC4uLlxNMDc3Li4uXE0wNzgK
ICAgIDA0RTA6IDA2IDAwIDE1IDVDIDREIDMwIDM3IDM5IDA2IDAwIDE1IDVDIDREIDMwIDM4IDMw
ICAuLi5cTTA3OS4uLlxNMDgwCiAgICAwNEYwOiAwNiAwMCAxNSA1QyA0RCAzMCAzOCAzMSAwNiAw
MCAxNSA1QyA0RCAzMSAzMiAzNyAgLi4uXE0wODEuLi5cTTEyNwogICAgMDUwMDogMDYgMDAgMTUg
NUMgNEQgNTAgNTQgNTMgMDggMDEgMTUgNUMgNEQgNTcgNDEgNEIgIC4uLlxNUFRTLi4uXE1XQUsK
ICAgIDA1MTA6IDA4IDAxIDE1IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMwIDUwIDUw
ICAuLi5cLy5fU0JfUENJMFBQCiAgICAwNTIwOiA0RCA0NSAwOCAwMCAxNSA1QyAyRiAwMyA1RiA1
MyA0MiA1RiA1MCA0MyA0OSAzMSAgTUUuLi5cLy5fU0JfUENJMQogICAgMDUzMDogNTAgNTAgNEQg
NDUgMDggMDAgMTUgNUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAgNDMgIFBQTUUuLi5cLy5fU0JfUEMK
ICAgIDA1NDA6IDQ5IDMyIDUwIDUwIDREIDQ1IDA4IDAwIDE1IDVDIDJGIDAzIDVGIDUzIDQyIDVG
ICBJMlBQTUUuLi5cLy5fU0JfCiAgICAwNTUwOiA1MCA0MyA0OSAzMyA1MCA1MCA0RCA0NSAwOCAw
MCAxNSA1QyA0MyA1MiA0MiA0OSAgUENJM1BQTUUuLi5cQ1JCSQogICAgMDU2MDogMDAgMDAgMDgg
NDUgNEUgNTQgNEIgMEEgODcgMDggNDUgNTggNTQgNEIgMEEgQUEgIC4uLkVOVEsuLi5FWFRLLi4K
ICAgIDA1NzA6IDA4IDQ5IDRGIDMxIDQyIDBCIDkwIDAyIDA4IDQ5IDRGIDMxIDRDIDBBIDEwIDA4
ICAuSU8xQi4uLi5JTzFMLi4uCiAgICAwNTgwOiA0OSA0RiAzMiA0MiAwQiBBMCAwMiAwOCA0OSA0
RiAzMiA0QyAwQSAxMCAwOCA0OSAgSU8yQi4uLi5JTzJMLi4uSQogICAgMDU5MDogNEYgMzMgNDIg
MEIgOTAgMDIgMDggNDkgNEYgMzMgNEMgMEEgMTAgMDggNDkgNEYgIE8zQi4uLi5JTzNMLi4uSU8K
ICAgIDA1QTA6IDM0IDQyIDBCIEEwIDAyIDA4IDQ5IDRGIDM0IDRDIDBBIDEwIDA4IDUzIDUwIDMx
ICA0Qi4uLi5JTzRMLi4uU1AxCiAgICAwNUIwOiA0RiAwQSAyRSAwOCA0QiA0MiA0NiA0NyAwMCAw
OCA0RCA1MyA0NiA0NyAwMCAwOCAgTy4uLktCRkcuLk1TRkcuLgogICAgMDVDMDogNDkgNEYgNDUg
NTMgMDAgMDggNTAgNDUgNDIgNEMgMEMgMDAgMDAgMDAgMTAgMDggIElPRVMuLlBFQkwuLi4uLi4K
ICAgIDA1RDA6IDRFIDQyIDU0IDUzIDBCIDAwIDUwIDA4IDQzIDUwIDU2IDQ0IDAxIDA4IDUzIDRE
ICBOQlRTLi5QLkNQVkQuLlNNCiAgICAwNUUwOiA0MiA0MiAwQiAyMCAwQiAwOCA1MyA0RCA0MiA0
QyAwQSAyMCAwOCA1MyA0RCA0MiAgQkIuIC4uU01CTC4gLlNNQgogICAgMDVGMDogMzAgMEIgMDAg
MEIgMDggNTMgNEQgNDIgNEQgMEEgMTAgMDggNTAgNEQgNDIgNTMgIDAuLi4uU01CTS4uLlBNQlMK
ICAgIDA2MDA6IDBCIDAwIDA4IDA4IDUwIDREIDRDIDRFIDBBIEEwIDA4IDUzIDREIDQ5IDRGIDBB
ICAuLi4uUE1MTi4uLlNNSU8uCiAgICAwNjEwOiBCMiAwOCA0NyA1MCA0MiA1MyAwMCAwOCA0NyA1
MCA0QyA0RSAwMCAwOCA0MSA1MCAgLi5HUEJTLi5HUExOLi5BUAogICAgMDYyMDogNDMgNDIgMEMg
MDAgMDAgQzAgRkUgMDggNDEgNTAgNDMgNEMgMEIgMDAgMTAgMDggIENCLi4uLi4uQVBDTC4uLi4K
ICAgIDA2MzA6IDQ4IDUwIDU0IDQyIDBDIDAwIDAwIEQwIEZFIDA4IDU3IDQ0IDU0IDQyIDAwIDA4
ICBIUFRCLi4uLi4uV0RUQi4uCiAgICAwNjQwOiA1NyA0NCA1NCA0QyAwMCAwOCA0NyA0OSA0RiA0
MiAwQyAwMCAxNSBEOCBGRSAwOCAgV0RUTC4uR0lPQi4uLi4uLgogICAgMDY1MDogNDkgNEYgNEQg
NDIgMEMgMDAgMEQgRDggRkUgMDggNTMgNTMgNEQgNDIgMEMgMDAgIElPTUIuLi4uLi5TU01CLi4K
ICAgIDA2NjA6IDAyIEQ4IEZFIDA4IDU1IDU0IDQ0IDQyIDAwIDA4IDRFIDQyIDU0IDUwIDBDIDAw
ICAuLi4uVVREQi4uTkJUUC4uCiAgICAwNjcwOiAwMCBDMyBGRSAwOCA0MSA1MyA1MyA0MiAwMCAw
OCA0MSA0RiA1NCA0MiAwMCAwOCAgLi4uLkFTU0IuLkFPVEIuLgogICAgMDY4MDogNDEgNDEgNTgg
NDIgMDAgMDggNTAgNDUgNDggNTAgMDEgMDggNTMgNDggNTAgNDMgIEFBWEIuLlBFSFAuLlNIUEMK
ICAgIDA2OTA6IDAxIDA4IDUwIDQ1IDUwIDREIDAxIDA4IDUwIDQ1IDQ1IDUyIDAxIDA4IDUwIDQ1
ICAuLlBFUE0uLlBFRVIuLlBFCiAgICAwNkEwOiA0MyA1MyAwMSAwOCA0OSA1NCA0QiA0NSAwMCAw
OCA1MCA0NSA0MiA1MyAwQyAwMCAgQ1MuLklUS0UuLlBFQlMuLgogICAgMDZCMDogMDAgMDAgRTAg
MDggNTAgNDUgNEMgNEUgMEMgMDAgMDAgMDAgMTAgMDggNDMgNTMgIC4uLi5QRUxOLi4uLi4uQ1MK
ICAgIDA2QzA6IDREIDQ5IDBBIDYxIDA4IDQ0IDUzIDUzIDUwIDAwIDA4IDQ2IDQ4IDUwIDUwIDAx
ICBNSS5hLkRTU1AuLkZIUFAuCiAgICAwNkQwOiAwOCA1MyA0RCA0OSA0MSAwQSBCMiAwOCA1MyA0
RCA0OSA0MiAwQSBCMyAwOCA0RiAgLlNNSUEuLi5TTUlCLi4uTwogICAgMDZFMDogNDYgNTMgNTQg
MEEgMzUgMDggNTQgNTIgNTMgNTQgMEEgMDIgMDggNTQgNDMgNEQgIEZTVC41LlRSU1QuLi5UQ00K
ICAgIDA2RjA6IDQ2IDAwIDA4IDU0IDREIDQ2IDMxIDAwIDA4IDU0IDREIDQ2IDMyIDAwIDA4IDU0
ICBGLi5UTUYxLi5UTUYyLi5UCiAgICAwNzAwOiA0RCA0NiAzMyAwMCAwOCA1NCA1NCA1MCA0NiAw
MSAwOCA0NCA1NCA1MCA1NCAwMCAgTUYzLi5UVFBGLi5EVFBULgogICAgMDcxMDogMDggNTQgNTQg
NDQgNTAgMDAgMDggNTQgNTAgNEQgNDIgMEMgRkYgRkYgRkYgRkYgIC5UVERQLi5UUE1CLi4uLi4K
ICAgIDA3MjA6IDA4IDU0IDUwIDQyIDUzIDBCIDAwIDEwIDA4IDU0IDUwIDREIDQzIDBDIEZGIEZG
ICAuVFBCUy4uLi5UUE1DLi4uCiAgICAwNzMwOiBGRiBGRiAwOCA1NCA1MCA0MyA1MyAwQiAwMCAx
MCAwOCA1NCA1MCA0RCA0RCAwQyAgLi4uVFBDUy4uLi5UUE1NLgogICAgMDc0MDogMDAgMDAgRDQg
RkUgMDggNDYgNTQgNTAgNEQgMEMgRkYgRkYgRkYgRkYgMDggNTAgIC4uLi4uRlRQTS4uLi4uLlAK
ICAgIDA3NTA6IDUwIDQ5IDREIDBDIDE4IEVBIDQ3IEE5IDA4IDUwIDUwIDQ5IDRDIDBBIDFDIDA4
ICBQSU0uLi5HLi5QUElMLi4uCiAgICAwNzYwOiA0MSA0RCA0NCA1NCAwMCAwOCA1NCA1MCA0RCA0
NiAwMCAwOCA1MCA1MCA0OSA1NiAgQU1EVC4uVFBNRi4uUFBJVgogICAgMDc3MDogMDAgMDggNEQg
NDIgNDUgNDMgMDAgMTQgMjcgNUYgNTAgNDkgNDMgMDEgQTAgMUIgIC4uTUJFQy4uJ19QSUMuLi4K
ICAgIDA3ODA6IDY4IDVDIDJFIDVGIDUzIDQyIDVGIDQ0IDUzIDUwIDQ5IDVDIDJGIDAzIDVGIDUz
ICBoXC5fU0JfRFNQSVwvLl9TCiAgICAwNzkwOiA0MiA1RiA1MCA0MyA0OSAzMCA0RSA0MSA1MCA0
NSA1MCA1OCA1OCA1OCA2OCAwOCAgQl9QQ0kwTkFQRVBYWFhoLgogICAgMDdBMDogNTAgNDkgNDMg
NEQgMDAgMTQgMUYgNTAgNTggNTggNTggMDEgQTAgMDkgNjggNzAgIFBJQ00uLi5QWFhYLi4uaHAK
ICAgIDA3QjA6IDBBIEFBIDQ0IDQyIDQ3IDM4IEExIDA4IDcwIDBBIEFDIDQ0IDQyIDQ3IDM4IDcw
ICAuLkRCRzguLnAuLkRCRzhwCiAgICAwN0MwOiA2OCA1MCA0OSA0MyA0RCAwOCA0RiA1MyA1NiA1
MiBGRiAxNCA0NSAyOCA0RiA1MyAgaFBJQ00uT1NWUi4uRShPUwogICAgMDdEMDogNDYgNEMgMDAg
QTAgMEQgOTIgOTMgNEYgNTMgNTYgNTIgRkYgQTQgNEYgNTMgNTYgIEZMLi4uLi5PU1ZSLi5PU1YK
ICAgIDA3RTA6IDUyIEEwIDBFIDkzIDUwIDQ5IDQzIDREIDAwIDcwIDBBIEFDIDQ0IDQyIDQ3IDM4
ICBSLi4uUElDTS5wLi5EQkc4CiAgICAwN0YwOiA3MCAwQSAwMyA0RiA1MyA1NiA1MiBBMCA0QSAx
NiA1QiAxMiA1QyA1RiA0RiA1MyAgcC4uT1NWUi5KLlsuXF9PUwogICAgMDgwMDogNDkgMDAgQTAg
MUEgNUYgNEYgNTMgNDkgMEQgNTcgNjkgNkUgNjQgNkYgNzcgNzMgIEkuLi5fT1NJLldpbmRvd3MK
ICAgIDA4MTA6IDIwIDMyIDMwIDMwIDMxIDAwIDcwIDBBIDA0IDRGIDUzIDU2IDUyIEEwIDFDIDVG
ICAgMjAwMS5wLi5PU1ZSLi5fCiAgICAwODIwOiA0RiA1MyA0OSAwRCA1NyA2OSA2RSA2NCA2RiA3
NyA3MyAyMCAzMiAzMCAzMCAzMSAgT1NJLldpbmRvd3MgMjAwMQogICAgMDgzMDogMkUgMzEgMDAg
NzAgMEEgMDUgNEYgNTMgNTYgNTIgQTAgMTUgNUYgNEYgNTMgNDkgIC4xLnAuLk9TVlIuLl9PU0kK
ICAgIDA4NDA6IDBEIDQ2IDcyIDY1IDY1IDQyIDUzIDQ0IDAwIDcwIDBBIDA2IDRGIDUzIDU2IDUy
ICAuRnJlZUJTRC5wLi5PU1ZSCiAgICAwODUwOiBBMCAxMyA1RiA0RiA1MyA0OSAwRCA0OCA1MCAy
RCA1NSA1OCAwMCA3MCAwQSAwNyAgLi5fT1NJLkhQLVVYLnAuLgogICAgMDg2MDogNEYgNTMgNTYg
NTIgQTAgMTUgNUYgNEYgNTMgNDkgMEQgNEYgNzAgNjUgNkUgNTYgIE9TVlIuLl9PU0kuT3BlblYK
ICAgIDA4NzA6IDREIDUzIDAwIDcwIDBBIDA4IDRGIDUzIDU2IDUyIEEwIDFFIDVGIDRGIDUzIDQ5
ICBNUy5wLi5PU1ZSLi5fT1NJCiAgICAwODgwOiAwRCA1NyA2OSA2RSA2NCA2RiA3NyA3MyAyMCAz
MiAzMCAzMCAzMSAyMCA1MyA1MCAgLldpbmRvd3MgMjAwMSBTUAogICAgMDg5MDogMzEgMDAgNzAg
MEEgMDkgNEYgNTMgNTYgNTIgQTAgMUUgNUYgNEYgNTMgNDkgMEQgIDEucC4uT1NWUi4uX09TSS4K
ICAgIDA4QTA6IDU3IDY5IDZFIDY0IDZGIDc3IDczIDIwIDMyIDMwIDMwIDMxIDIwIDUzIDUwIDMy
ICBXaW5kb3dzIDIwMDEgU1AyCiAgICAwOEIwOiAwMCA3MCAwQSAwQSA0RiA1MyA1NiA1MiBBMCAx
RSA1RiA0RiA1MyA0OSAwRCA1NyAgLnAuLk9TVlIuLl9PU0kuVwogICAgMDhDMDogNjkgNkUgNjQg
NkYgNzcgNzMgMjAgMzIgMzAgMzAgMzEgMjAgNTMgNTAgMzMgMDAgIGluZG93cyAyMDAxIFNQMy4K
ICAgIDA4RDA6IDcwIDBBIDBCIDRGIDUzIDU2IDUyIEEwIDFBIDVGIDRGIDUzIDQ5IDBEIDU3IDY5
ICBwLi5PU1ZSLi5fT1NJLldpCiAgICAwOEUwOiA2RSA2NCA2RiA3NyA3MyAyMCAzMiAzMCAzMCAz
NiAwMCA3MCAwQSAwQyA0RiA1MyAgbmRvd3MgMjAwNi5wLi5PUwogICAgMDhGMDogNTYgNTIgQTAg
MUUgNUYgNEYgNTMgNDkgMEQgNTcgNjkgNkUgNjQgNkYgNzcgNzMgIFZSLi5fT1NJLldpbmRvd3MK
ICAgIDA5MDA6IDIwIDMyIDMwIDMwIDM2IDIwIDUzIDUwIDMxIDAwIDcwIDBBIDBEIDRGIDUzIDU2
ICAgMjAwNiBTUDEucC4uT1NWCiAgICAwOTEwOiA1MiBBMCAxQSA1RiA0RiA1MyA0OSAwRCA1NyA2
OSA2RSA2NCA2RiA3NyA3MyAyMCAgUi4uX09TSS5XaW5kb3dzIAogICAgMDkyMDogMzIgMzAgMzAg
MzkgMDAgNzAgMEEgMEUgNEYgNTMgNTYgNTIgQTAgMUEgNUYgNEYgIDIwMDkucC4uT1NWUi4uX08K
ICAgIDA5MzA6IDUzIDQ5IDBEIDU3IDY5IDZFIDY0IDZGIDc3IDczIDIwIDMyIDMwIDMxIDMyIDAw
ICBTSS5XaW5kb3dzIDIwMTIuCiAgICAwOTQwOiA3MCAwQSAwRiA0RiA1MyA1NiA1MiBBMCAxQSA1
RiA0RiA1MyA0OSAwRCA1NyA2OSAgcC4uT1NWUi4uX09TSS5XaQogICAgMDk1MDogNkUgNjQgNkYg
NzcgNzMgMjAgMzIgMzAgMzEgMzMgMDAgNzAgMEEgMTAgNEYgNTMgIG5kb3dzIDIwMTMucC4uT1MK
ICAgIDA5NjA6IDU2IDUyIEExIDQ5IDBFIEEwIDI1IDREIDQzIDU0IDQ4IDVGIDRGIDUzIDVGIDBE
ICBWUi5JLi4lTUNUSF9PU18uCiAgICAwOTcwOiA0RCA2OSA2MyA3MiA2RiA3MyA2RiA2NiA3NCAy
MCA1NyA2OSA2RSA2NCA2RiA3NyAgTWljcm9zb2Z0IFdpbmRvdwogICAgMDk4MDogNzMgMjAgNEUg
NTQgMDAgNzAgMDAgNEYgNTMgNTYgNTIgQTAgMjIgNEQgNDMgNTQgIHMgTlQucC5PU1ZSLiJNQ1QK
ICAgIDA5OTA6IDQ4IDVGIDRGIDUzIDVGIDBEIDREIDY5IDYzIDcyIDZGIDczIDZGIDY2IDc0IDIw
ICBIX09TXy5NaWNyb3NvZnQgCiAgICAwOUEwOiA1NyA2OSA2RSA2NCA2RiA3NyA3MyAwMCA3MCAw
MSA0RiA1MyA1NiA1MiBBMCAzOSAgV2luZG93cy5wLk9TVlIuOQogICAgMDlCMDogNEQgNDMgNTQg
NDggNUYgNEYgNTMgNUYgMEQgNEQgNjkgNjMgNzIgNkYgNzMgNkYgIE1DVEhfT1NfLk1pY3Jvc28K
ICAgIDA5QzA6IDY2IDc0IDIwIDU3IDY5IDZFIDY0IDZGIDc3IDczIDREIDQ1IDNBIDIwIDREIDY5
ICBmdCBXaW5kb3dzTUU6IE1pCiAgICAwOUQwOiA2QyA2QyA2NSA2RSA2RSA2OSA3NSA2RCAyMCA0
NSA2NCA2OSA3NCA2OSA2RiA2RSAgbGxlbm5pdW0gRWRpdGlvbgogICAgMDlFMDogMDAgNzAgMEEg
MDIgNEYgNTMgNTYgNTIgQTAgMTcgNEQgNDMgNTQgNDggNUYgNEYgIC5wLi5PU1ZSLi5NQ1RIX08K
ICAgIDA5RjA6IDUzIDVGIDBEIDRDIDY5IDZFIDc1IDc4IDAwIDcwIDBBIDAzIDRGIDUzIDU2IDUy
ICBTXy5MaW51eC5wLi5PU1ZSCiAgICAwQTAwOiBBMCAxOSA0RCA0MyA1NCA0OCA1RiA0RiA1MyA1
RiAwRCA0NiA3MiA2NSA2NSA0MiAgLi5NQ1RIX09TXy5GcmVlQgogICAgMEExMDogNTMgNDQgMDAg
NzAgMEEgMDYgNEYgNTMgNTYgNTIgQTAgMTcgNEQgNDMgNTQgNDggIFNELnAuLk9TVlIuLk1DVEgK
ICAgIDBBMjA6IDVGIDRGIDUzIDVGIDBEIDQ4IDUwIDJEIDU1IDU4IDAwIDcwIDBBIDA3IDRGIDUz
ICBfT1NfLkhQLVVYLnAuLk9TCiAgICAwQTMwOiA1NiA1MiBBMCAxOSA0RCA0MyA1NCA0OCA1RiA0
RiA1MyA1RiAwRCA0RiA3MCA2NSAgVlIuLk1DVEhfT1NfLk9wZQogICAgMEE0MDogNkUgNTYgNEQg
NTMgMDAgNzAgMEEgMDggNEYgNTMgNTYgNTIgQTQgNEYgNTMgNTYgIG5WTVMucC4uT1NWUi5PU1YK
ICAgIDBBNTA6IDUyIDE0IDRFIDA0IDREIDQzIDU0IDQ4IDAyIEEwIDA4IDk1IDg3IDY4IDg3IDY5
ICBSLk4uTUNUSC4uLi4uaC5pCiAgICAwQTYwOiBBNCAwMCA3MiA4NyA2OCAwMSA2MCAwOCA0MiA1
NSA0NiAzMCAxMSAwMiA2MCAwOCAgLi5yLmguYC5CVUYwLi5gLgogICAgMEE3MDogNDIgNTUgNDYg
MzEgMTEgMDIgNjAgNzAgNjggNDIgNTUgNDYgMzAgNzAgNjkgNDIgIEJVRjEuLmBwaEJVRjBwaUIK
ICAgIDBBODA6IDU1IDQ2IDMxIEEyIDFBIDYwIDc2IDYwIEEwIDE1IDkyIDkzIDgzIDg4IDQyIDU1
ICBVRjEuLmB2YC4uLi4uLkJVCiAgICAwQTkwOiA0NiAzMCA2MCAwMCA4MyA4OCA0MiA1NSA0NiAz
MSA2MCAwMCBBNCAwMCBBNCAwMSAgRjBgLi4uQlVGMWAuLi4uLgogICAgMEFBMDogMDggNTAgNTIg
NTcgNTAgMTIgMDQgMDIgMDAgMDAgMTQgNEIgMDcgNDcgNTAgNTIgIC5QUldQLi4uLi4uSy5HUFIK
ICAgIDBBQjA6IDU3IDAyIDcwIDY4IDg4IDUwIDUyIDU3IDUwIDAwIDAwIDcwIDc5IDUzIDUzIDMx
ICBXLnBoLlBSV1AuLnB5U1MxCiAgICAwQUMwOiA1RiAwMSAwMCA2MCA3RCA2MCA3OSA1MyA1MyAz
MiA1RiAwQSAwMiAwMCA2MCA3RCAgXy4uYH1geVNTMl8uLi5gfQogICAgMEFEMDogNjAgNzkgNTMg
NTMgMzMgNUYgMEEgMDMgMDAgNjAgN0QgNjAgNzkgNTMgNTMgMzQgIGB5U1MzXy4uLmB9YHlTUzQK
ICAgIDBBRTA6IDVGIDBBIDA0IDAwIDYwIEEwIDExIDdCIDc5IDAxIDY5IDAwIDYwIDAwIDcwIDY5
ICBfLi4uYC4ue3kuaS5gLnBpCiAgICAwQUYwOiA4OCA1MCA1MiA1NyA1MCAwMSAwMCBBMSAyOSA3
QSA2MCAwMSA2MCBBMCAxOCA5MSAgLlBSV1AuLi4pemAuYC4uLgogICAgMEIwMDogOTMgNEYgNTMg
NDYgNEMgMDEgOTMgNEYgNTMgNDYgNEMgMEEgMDIgODEgNjAgODggIC5PU0ZMLi5PU0ZMLi4uYC4K
ICAgIDBCMTA6IDUwIDUyIDU3IDUwIDAxIDAwIEExIDBBIDgyIDYwIDg4IDUwIDUyIDU3IDUwIDAx
ICBQUldQLi4uLi5gLlBSV1AuCiAgICAwQjIwOiAwMCBBNCA1MCA1MiA1NyA1MCAwOCA1NyA0MSA0
QiA1MCAxMiAwNCAwMiAwMCAwMCAgLi5QUldQLldBS1AuLi4uLgogICAgMEIzMDogMTQgMjQgNTUg
NTAgNTcgNTAgMDEgQTAgMTIgODMgODggNTcgNDEgNEIgNTAgMDAgIC4kVVBXUC4uLi4uV0FLUC4K
ICAgIDBCNDA6IDAwIDcwIDAwIDg4IDU3IDQxIDRCIDUwIDAxIDAwIEExIDBBIDcwIDY4IDg4IDU3
ICAucC4uV0FLUC4uLi5waC5XCiAgICAwQjUwOiA0MSA0QiA1MCAwMSAwMCA1QiA4MCA0NCA0NSA0
MiAzMCAwMSAwQSA4MCAwMSA1QiAgQUtQLi5bLkRFQjAuLi4uWwogICAgMEI2MDogODEgMEIgNDQg
NDUgNDIgMzAgMDEgNDQgNDIgNDcgMzggMDggNUIgODAgNDQgNDUgIC4uREVCMC5EQkc4LlsuREUK
ICAgIDBCNzA6IDQyIDMxIDAxIDBBIDkwIDBBIDAyIDVCIDgxIDBCIDQ0IDQ1IDQyIDMxIDAyIDQ0
ICBCMS4uLi4uWy4uREVCMS5ECiAgICAwQjgwOiA0MiA0NyAzOSAxMCAwOCA1MyA1MyAzMSA1RiAw
MCAwOCA1MyA1MyAzMiA1RiAwMCAgQkc5Li5TUzFfLi5TUzJfLgogICAgMEI5MDogMDggNTMgNTMg
MzMgNUYgMDEgMDggNTMgNTMgMzQgNUYgMDEgMDggNDkgNEYgNTMgIC5TUzNfLi5TUzRfLi5JT1MK
ICAgIDBCQTA6IDU0IDBCIDAxIDAwIDA4IDU0IDRGIDUwIDREIDBDIDAwIDAwIDAwIDAwIDA4IDUy
ICBULi4uLlRPUE0uLi4uLi5SCiAgICAwQkIwOiA0RiA0RCA1MyAwQyAwMCAwMCBFMCBGRiAwOCA1
NiA0NyA0MSA0NiAwMSA1QiA4MCAgT01TLi4uLi4uVkdBRi5bLgogICAgMEJDMDogNDQgNDUgNDIg
MzIgMDEgMEEgODAgMEEgMDIgNUIgODEgMEIgNDQgNDUgNDIgMzIgIERFQjIuLi4uLlsuLkRFQjIK
ICAgIDBCRDA6IDAyIDUwIDM4IDMwIDQ4IDEwIDA4IDRGIDUzIDU0IDU5IEZGIDVCIDgwIDQxIDQz
ICAuUDgwSC4uT1NUWS5bLkFDCiAgICAwQkUwOiA0RCA1MyAwMSAwQSA3MiAwQSAwMiA1QiA4MSAx
MCA0MSA0MyA0RCA1MyAwMSA0MSAgTVMuLnIuLlsuLkFDTVMuQQogICAgMEJGMDogNDMgNEQgNTgg
MDggNDEgNDMgNEQgNDEgMDggNUIgODYgMTIgNDEgNDMgNEQgNTggIENNWC5BQ01BLlsuLkFDTVgK
ICAgIDBDMDA6IDQxIDQzIDREIDQxIDAxIDAwIDQ4IDVDIDQ5IDREIDQ1IDRFIDA4IDVCIDgwIDUw
ICBBQ01BLi5IXElNRU4uWy5QCiAgICAwQzEwOiA1MyA0RCA0OSAwMSA1MyA0RCA0OSA0RiAwQSAw
MiA1QiA4MSAxMCA1MCA1MyA0RCAgU01JLlNNSU8uLlsuLlBTTQogICAgMEMyMDogNDkgMDEgNDEg
NTAgNEQgNDMgMDggNDEgNTAgNEQgNDQgMDggNUIgODAgNTAgNEQgIEkuQVBNQy5BUE1ELlsuUE0K
ICAgIDBDMzA6IDUyIDQ3IDAwIDBDIDAwIDAzIEQ4IEZFIDBCIDAwIDAxIDVCIDgxIDI3IDUwIDRE
ICBSRy4uLi4uLi4uLlsuJ1BNCiAgICAwQzQwOiA1MiA0NyAwMCAwMCAwNiA0OCA1MCA0NSA0RSAw
MSAwMCA0OSAyRiA1MCAzMSA0NSAgUkcuLi5IUEVOLi5JL1AxRQogICAgMEM1MDogNDIgMTAgMDAg
NDAgMEYgNTMgNDkgMzMgNTIgMDEgMDAgNEYgMzcgMDAgMDMgNTIgIEIuLkAuU0kzUi4uTzcuLlIK
ICAgIDBDNjA6IDUzIDU0IDU1IDAxIDVCIDgwIDQ3IDUzIDREIDREIDAwIDBDIDAwIDAwIEQ4IEZF
ICBTVFUuWy5HU01NLi4uLi4uCiAgICAwQzcwOiAwQiAwMCAxMCA1QiA4MSAzNyA0NyA1MyA0RCA0
RCAwMCAwMCA4MCA0NCAwMSAwMCAgLi4uWy43R1NNTS4uLkQuLgogICAgMEM4MDogMDEgNDMgNEMg
NTAgNTMgMDEgMDAgNEUgMDYgMDAgMDcgNTQgNEQgNTMgNDUgMDEgIC5DTFBTLi5OLi4uVE1TRS4K
ICAgIDBDOTA6IDAwIDQ4IDBDIDAwIDAyIDUzIDRDIDUwIDUzIDAyIDAwIDQ0IDg1IDAwIDA2IDUw
ICAuSC4uLlNMUFMuLkQuLi5QCiAgICAwQ0EwOiA1NyA0NCA0NSAwMSAwMCA0MSAxNCA0MiA0QyA0
RSA0QiAwMiA1QiA4MCA1MCAzMSAgV0RFLi5BLkJMTksuWy5QMQogICAgMENCMDogNDUgMzAgMDEg
NTAgMzEgNDUgNDIgMEEgMDQgNUIgODEgMUQgNTAgMzEgNDUgMzAgIEUwLlAxRUIuLlsuLlAxRTAK
ICAgIDBDQzA6IDAxIDAwIDA4IDAwIDA2IDUwIDQ1IDU3IDUzIDAxIDU3IDUzIDU0IDQxIDAxIDAw
ICAuLi4uLlBFV1MuV1NUQS4uCiAgICAwQ0QwOiAwOCAwMCAwNiA1MCA0NSA1NyA0NCAwMSA1QiA4
MCA0OSA0RiA0MyA0MyAwMSA1MCAgLi4uUEVXRC5bLklPQ0MuUAogICAgMENFMDogNEQgNDIgNTMg
MEEgODAgNUIgODEgMEYgNDkgNEYgNDMgNDMgMDEgMDAgMDggMDAgIE1CUy4uWy4uSU9DQy4uLi4K
ICAgIDBDRjA6IDAyIDUyIDU0IDQzIDUzIDAxIDE0IDRGIDA2IDUzIDUwIDU0IDUzIDAxIDcwIDY4
ICAuUlRDUy4uTy5TUFRTLnBoCiAgICAwRDAwOiA1MCAzOCAzMCA0OCBBMCAwQiA5MyA2OCAwQSAw
MyA3MCAwMSA0MiA0QyA0RSA0QiAgUDgwSC4uLmguLnAuQkxOSwogICAgMEQxMDogQTAgMTAgOTEg
OTMgNjggMEEgMDQgOTMgNjggMEEgMDUgNzAgMDAgNDIgNEMgNEUgIC4uLi5oLi4uaC4ucC5CTE4K
ICAgIDBEMjA6IDRCIEEwIDBCIDkzIDY4IDBBIDAzIDcwIDAwIDUyIDUzIDU0IDU1IDcwIDAxIDQz
ICBLLi4uaC4ucC5SU1RVcC5DCiAgICAwRDMwOiA0QyA1MCA1MyA3MCAwMSA1MyA0QyA1MCA1MyA3
MCA1MCA0NSA1NyA1MyA1MCA0NSAgTFBTcC5TTFBTcFBFV1NQRQogICAgMEQ0MDogNTcgNTMgQTAg
MEIgOTMgNjggMEEgMDMgNzAgMDEgNTMgNEMgNTAgNTMgQTAgMTEgIFdTLi4uaC4ucC5TTFBTLi4K
ICAgIDBENTA6IDkzIDY4IDBBIDA0IDcwIDAxIDUzIDRDIDUwIDUzIDcwIDAxIDUyIDUzIDU0IDU1
ICAuaC4ucC5TTFBTcC5SU1RVCiAgICAwRDYwOiBBMCAwNSA5MyA2OCAwQSAwNSAxNCA0QiAwNiA1
MyA1NyA0MSA0QiAwMSA3MCAwQSAgLi4uaC4uLksuU1dBSy5wLgogICAgMEQ3MDogMDMgNDIgNEMg
NEUgNEIgQTAgMEIgOTMgNjggMEEgMDMgNzAgMDEgNTIgNTMgNTQgIC5CTE5LLi4uaC4ucC5SU1QK
ICAgIDBEODA6IDU1IDcwIDUwIDQ1IDU3IDUzIDUwIDQ1IDU3IDUzIDcwIDAwIDUwIDQ1IDU3IDQ0
ICBVcFBFV1NQRVdTcC5QRVdECiAgICAwRDkwOiBBMCAwRiA1MCA0OSA0MyA0RCA1QyAyRSA1RiA1
MyA0MiA1RiA0NCA1MyA1MCA0OSAgLi5QSUNNXC5fU0JfRFNQSQogICAgMERBMDogQTAgMEIgNTQg
NEQgNTMgNDUgNzAgMDAgNTQgNEQgNTMgNDUgQTAgMTIgOTMgNjggIC4uVE1TRXAuVE1TRS4uLmgK
ICAgIDBEQjA6IDBBIDAzIDg2IDVDIDJFIDVGIDUzIDQyIDVGIDUwIDU3IDUyIDQyIDBBIDAyIEEw
ICAuLi5cLl9TQl9QV1JCLi4uCiAgICAwREMwOiAxMiA5MyA2OCAwQSAwNCA4NiA1QyAyRSA1RiA1
MyA0MiA1RiA1MCA1NyA1MiA0MiAgLi5oLi4uXC5fU0JfUFdSQgogICAgMEREMDogMEEgMDIgMTAg
MDUgNUYgNDcgNTAgNDUgMTAgOEQgMjcgMDMgNUYgNTMgNDIgNUYgIC4uLi5fR1BFLi4nLl9TQl8K
ICAgIDBERTA6IDA4IDUwIDUyIDUzIDQxIDExIDA5IDBBIDA2IDIzIEIwIENDIDE4IDc5IDAwIDA2
ICAuUFJTQS4uLi4jLi4ueS4uCiAgICAwREYwOiA1MCA1MiA1MyA0MSA1MCA1MiA1MyA0MiAwNiA1
MCA1MiA1MyA0MSA1MCA1MiA1MyAgUFJTQVBSU0IuUFJTQVBSUwogICAgMEUwMDogNDMgMDYgNTAg
NTIgNTMgNDEgNTAgNTIgNTMgNDQgMDYgNTAgNTIgNTMgNDEgNTAgIEMuUFJTQVBSU0QuUFJTQVAK
ICAgIDBFMTA6IDUyIDUzIDQ1IDA2IDUwIDUyIDUzIDQxIDUwIDUyIDUzIDQ2IDA2IDUwIDUyIDUz
ICBSU0UuUFJTQVBSU0YuUFJTCiAgICAwRTIwOiA0MSA1MCA1MiA1MyA0NyAwNiA1MCA1MiA1MyA0
MSA1MCA1MiA1MyA0OCAwOCA1MCAgQVBSU0cuUFJTQVBSU0guUAogICAgMEUzMDogNDQgNDUgMzAg
MTIgMEUgMDEgMTIgMEIgMDQgMEIgRkYgRkYgMDAgNEMgNEUgNEIgIERFMC4uLi4uLi4uLi5MTksK
ICAgIDBFNDA6IDQxIDAwIDA4IDQxIDUyIDQ1IDMwIDEyIDBDIDAxIDEyIDA5IDA0IDBCIEZGIEZG
ICBBLi5BUkUwLi4uLi4uLi4uCiAgICAwRTUwOiAwMCAwMCAwQSA5OCAwOCA1MCA0NCA0NSAzMSAx
MiAwRSAwMSAxMiAwQiAwNCAwQiAgLi4uLi5QREUxLi4uLi4uLgogICAgMEU2MDogRkYgRkYgMDAg
NEMgNEUgNEIgNDEgMDAgMDggNDEgNTIgNDUgMzEgMTIgMEMgMDEgIC4uLkxOS0EuLkFSRTEuLi4K
ICAgIDBFNzA6IDEyIDA5IDA0IDBCIEZGIEZGIDAwIDAwIDBBIDk4IDA4IDUwIDQ0IDQ1IDMyIDEy
ICAuLi4uLi4uLi4uLlBERTIuCiAgICAwRTgwOiAwRSAwMSAxMiAwQiAwNCAwQiBGRiBGRiAwMCA0
QyA0RSA0QiA0MSAwMCAwOCA0MSAgLi4uLi4uLi4uTE5LQS4uQQogICAgMEU5MDogNTIgNDUgMzIg
MTIgMEMgMDEgMTIgMDkgMDQgMEIgRkYgRkYgMDAgMDAgMEEgOTggIFJFMi4uLi4uLi4uLi4uLi4K
ICAgIDBFQTA6IDA4IDUwIDQ0IDQ1IDMzIDEyIDBFIDAxIDEyIDBCIDA0IDBCIEZGIEZGIDAwIDRD
ICAuUERFMy4uLi4uLi4uLi5MCiAgICAwRUIwOiA0RSA0QiA0MSAwMCAwOCA0MSA1MiA0NSAzMyAx
MiAwQyAwMSAxMiAwOSAwNCAwQiAgTktBLi5BUkUzLi4uLi4uLgogICAgMEVDMDogRkYgRkYgMDAg
MDAgMEEgOTggMDggNTAgNDQgNDUgMzQgMTIgMEUgMDEgMTIgMEIgIC4uLi4uLi5QREU0Li4uLi4K
ICAgIDBFRDA6IDA0IDBCIEZGIEZGIDAwIDRDIDRFIDRCIDQxIDAwIDA4IDQxIDUyIDQ1IDM0IDEy
ICAuLi4uLkxOS0EuLkFSRTQuCiAgICAwRUUwOiAwQyAwMSAxMiAwOSAwNCAwQiBGRiBGRiAwMCAw
MCAwQSA5OCAwOCA1MCA0NCA0NSAgLi4uLi4uLi4uLi4uLlBERQogICAgMEVGMDogMzUgMTIgMEUg
MDEgMTIgMEIgMDQgMEIgRkYgRkYgMDAgNEMgNEUgNEIgNDEgMDAgIDUuLi4uLi4uLi4uTE5LQS4K
ICAgIDBGMDA6IDA4IDQxIDUyIDQ1IDM1IDEyIDBDIDAxIDEyIDA5IDA0IDBCIEZGIEZGIDAwIDAw
ICAuQVJFNS4uLi4uLi4uLi4uCiAgICAwRjEwOiAwQSA5OCAwOCA1MCA0NCA0NSAzNiAxMiAwRSAw
MSAxMiAwQiAwNCAwQiBGRiBGRiAgLi4uUERFNi4uLi4uLi4uLgogICAgMEYyMDogMDAgNEMgNEUg
NEIgNDEgMDAgMDggNDEgNTIgNDUgMzYgMTIgMEMgMDEgMTIgMDkgIC5MTktBLi5BUkU2Li4uLi4K
ICAgIDBGMzA6IDA0IDBCIEZGIEZGIDAwIDAwIDBBIDk4IDA4IDUwIDQ0IDQ1IDM3IDEyIDBFIDAx
ICAuLi4uLi4uLi5QREU3Li4uCiAgICAwRjQwOiAxMiAwQiAwNCAwQiBGRiBGRiAwMCA0QyA0RSA0
QiA0MSAwMCAwOCA0MSA1MiA0NSAgLi4uLi4uLkxOS0EuLkFSRQogICAgMEY1MDogMzcgMTIgMEMg
MDEgMTIgMDkgMDQgMEIgRkYgRkYgMDAgMDAgMEEgOTggMDggNTAgIDcuLi4uLi4uLi4uLi4uLlAK
ICAgIDBGNjA6IDQ0IDQ1IDM4IDEyIDBFIDAxIDEyIDBCIDA0IDBCIEZGIEZGIDAwIDRDIDRFIDRC
ICBERTguLi4uLi4uLi4uTE5LCiAgICAwRjcwOiA0MSAwMCAwOCA0MSA1MiA0NSAzOCAxMiAwQyAw
MSAxMiAwOSAwNCAwQiBGRiBGRiAgQS4uQVJFOC4uLi4uLi4uLgogICAgMEY4MDogMDAgMDAgMEEg
OTggMDggNTAgNDQgNDUgMzkgMTIgMEUgMDEgMTIgMEIgMDQgMEIgIC4uLi4uUERFOS4uLi4uLi4K
ICAgIDBGOTA6IEZGIEZGIDAwIDRDIDRFIDRCIDQxIDAwIDA4IDQxIDUyIDQ1IDM5IDEyIDBDIDAx
ICAuLi5MTktBLi5BUkU5Li4uCiAgICAwRkEwOiAxMiAwOSAwNCAwQiBGRiBGRiAwMCAwMCAwQSA5
OCAwOCA1MCA0NCA0NSA0MSAxMiAgLi4uLi4uLi4uLi5QREVBLgogICAgMEZCMDogMEUgMDEgMTIg
MEIgMDQgMEIgRkYgRkYgMDAgNEMgNEUgNEIgNDEgMDAgMDggNDEgIC4uLi4uLi4uLkxOS0EuLkEK
ICAgIDBGQzA6IDUyIDQ1IDQxIDEyIDBDIDAxIDEyIDA5IDA0IDBCIEZGIEZGIDAwIDAwIDBBIDk4
ICBSRUEuLi4uLi4uLi4uLi4uCiAgICAwRkQwOiAwOCA1MCA0NCA0NSA0MiAxMiAwRSAwMSAxMiAw
QiAwNCAwQiBGRiBGRiAwMCA0QyAgLlBERUIuLi4uLi4uLi4uTAogICAgMEZFMDogNEUgNEIgNDEg
MDAgMDggNDEgNTIgNDUgNDIgMTIgMEMgMDEgMTIgMDkgMDQgMEIgIE5LQS4uQVJFQi4uLi4uLi4K
ICAgIDBGRjA6IEZGIEZGIDAwIDAwIDBBIDk4IDA4IDUwIDQ0IDQ1IDQzIDEyIDBFIDAxIDEyIDBC
ICAuLi4uLi4uUERFQy4uLi4uCiAgICAxMDAwOiAwNCAwQiBGRiBGRiAwMCA0QyA0RSA0QiA0MSAw
MCAwOCA0MSA1MiA0NSA0MyAxMiAgLi4uLi5MTktBLi5BUkVDLgogICAgMTAxMDogMEMgMDEgMTIg
MDkgMDQgMEIgRkYgRkYgMDAgMDAgMEEgOTggMDggNTAgNDQgNDUgIC4uLi4uLi4uLi4uLi5QREUK
ICAgIDEwMjA6IDQ0IDEyIDBFIDAxIDEyIDBCIDA0IDBCIEZGIEZGIDAwIDRDIDRFIDRCIDQxIDAw
ICBELi4uLi4uLi4uLkxOS0EuCiAgICAxMDMwOiAwOCA0MSA1MiA0NSA0NCAxMiAwQyAwMSAxMiAw
OSAwNCAwQiBGRiBGRiAwMCAwMCAgLkFSRUQuLi4uLi4uLi4uLgogICAgMTA0MDogMEEgOTggMDgg
NTAgNDQgNDUgNDUgMTIgMEUgMDEgMTIgMEIgMDQgMEIgRkYgRkYgIC4uLlBERUUuLi4uLi4uLi4K
ICAgIDEwNTA6IDAwIDRDIDRFIDRCIDQxIDAwIDA4IDQxIDUyIDQ1IDQ1IDEyIDBDIDAxIDEyIDA5
ICAuTE5LQS4uQVJFRS4uLi4uCiAgICAxMDYwOiAwNCAwQiBGRiBGRiAwMCAwMCAwQSA5OCAwOCA1
MCA0NCA0NSA0NiAxMiAwRSAwMSAgLi4uLi4uLi4uUERFRi4uLgogICAgMTA3MDogMTIgMEIgMDQg
MEIgRkYgRkYgMDAgNEMgNEUgNEIgNDEgMDAgMDggNDEgNTIgNDUgIC4uLi4uLi5MTktBLi5BUkUK
ICAgIDEwODA6IDQ2IDEyIDBDIDAxIDEyIDA5IDA0IDBCIEZGIEZGIDAwIDAwIDBBIDk4IDA4IDUw
ICBGLi4uLi4uLi4uLi4uLi5QCiAgICAxMDkwOiA0NCAzMCAzMyAxMiA0MSAxMSAxMyAxMiAwQiAw
NCAwQiBGRiBGRiAwMCA0QyA0RSAgRDAzLkEuLi4uLi4uLi5MTgogICAgMTBBMDogNEIgNDIgMDAg
MTIgMEQgMDQgMEMgRkYgRkYgMDEgMDAgMDAgNEMgNEUgNEIgNDEgIEtCLi4uLi4uLi4uLkxOS0EK
ICAgIDEwQjA6IDAwIDEyIDBEIDA0IDBDIEZGIEZGIDAxIDAwIDAxIDRDIDRFIDRCIDQxIDAwIDEy
ICAuLi4uLi4uLi4uTE5LQS4uCiAgICAxMEMwOiAwRSAwNCAwQyBGRiBGRiAwMSAwMCAwQSAwMiA0
QyA0RSA0QiA0MSAwMCAxMiAwRSAgLi4uLi4uLi4uTE5LQS4uLgogICAgMTBEMDogMDQgMEMgRkYg
RkYgMDEgMDAgMEEgMDMgNEMgNEUgNEIgNDEgMDAgMTIgMEQgMDQgIC4uLi4uLi4uTE5LQS4uLi4K
ICAgIDEwRTA6IDBDIEZGIEZGIDAyIDAwIDAwIDRDIDRFIDRCIDQxIDAwIDEyIDBEIDA0IDBDIEZG
ICAuLi4uLi5MTktBLi4uLi4uCiAgICAxMEYwOiBGRiAwMiAwMCAwMSA0QyA0RSA0QiA0MSAwMCAx
MiAwRCAwNCAwQyBGRiBGRiAwMyAgLi4uLkxOS0EuLi4uLi4uLgogICAgMTEwMDogMDAgMDAgNEMg
NEUgNEIgNDIgMDAgMTIgMEQgMDQgMEMgRkYgRkYgMDMgMDAgMDEgIC4uTE5LQi4uLi4uLi4uLi4K
ICAgIDExMTA6IDRDIDRFIDRCIDQyIDAwIDEyIDBFIDA0IDBDIEZGIEZGIDAzIDAwIDBBIDAyIDRD
ICBMTktCLi4uLi4uLi4uLi5MCiAgICAxMTIwOiA0RSA0QiA0MiAwMCAxMiAwRSAwNCAwQyBGRiBG
RiAwMyAwMCAwQSAwMyA0QyA0RSAgTktCLi4uLi4uLi4uLi5MTgogICAgMTEzMDogNEIgNDIgMDAg
MTIgMEQgMDQgMEMgRkYgRkYgMDQgMDAgMDAgNEMgNEUgNEIgNDIgIEtCLi4uLi4uLi4uLkxOS0IK
ICAgIDExNDA6IDAwIDEyIDBEIDA0IDBDIEZGIEZGIDA0IDAwIDAxIDRDIDRFIDRCIDQyIDAwIDEy
ICAuLi4uLi4uLi4uTE5LQi4uCiAgICAxMTUwOiAwRCAwNCAwQyBGRiBGRiAwNSAwMCAwMCA0QyA0
RSA0QiA0MyAwMCAxMiAwRCAwNCAgLi4uLi4uLi5MTktDLi4uLgogICAgMTE2MDogMEMgRkYgRkYg
MDUgMDAgMDEgNEMgNEUgNEIgNDMgMDAgMTIgMEUgMDQgMEMgRkYgIC4uLi4uLkxOS0MuLi4uLi4K
ICAgIDExNzA6IEZGIDA1IDAwIDBBIDAyIDRDIDRFIDRCIDQzIDAwIDEyIDBFIDA0IDBDIEZGIEZG
ICAuLi4uLkxOS0MuLi4uLi4uCiAgICAxMTgwOiAwNSAwMCAwQSAwMyA0QyA0RSA0QiA0MyAwMCAx
MiAwRCAwNCAwQyBGRiBGRiAwNyAgLi4uLkxOS0MuLi4uLi4uLgogICAgMTE5MDogMDAgMDAgNEMg
NEUgNEIgNDQgMDAgMTIgMEQgMDQgMEMgRkYgRkYgMDcgMDAgMDEgIC4uTE5LRC4uLi4uLi4uLi4K
ICAgIDExQTA6IDRDIDRFIDRCIDQ0IDAwIDA4IDQxIDUyIDMwIDMzIDEyIDRCIDBFIDEzIDEyIDA5
ICBMTktELi5BUjAzLksuLi4uCiAgICAxMUIwOiAwNCAwQiBGRiBGRiAwMCAwMCAwQSA3OSAxMiAw
QiAwNCAwQyBGRiBGRiAwMSAwMCAgLi4uLi4uLnkuLi4uLi4uLgogICAgMTFDMDogMDAgMDAgMEEg
NzggMTIgMEIgMDQgMEMgRkYgRkYgMDEgMDAgMDEgMDAgMEEgNzggIC4uLnguLi4uLi4uLi4uLngK
ICAgIDExRDA6IDEyIDBDIDA0IDBDIEZGIEZGIDAxIDAwIDBBIDAyIDAwIDBBIDc4IDEyIDBDIDA0
ICAuLi4uLi4uLi4uLi54Li4uCiAgICAxMUUwOiAwQyBGRiBGRiAwMSAwMCAwQSAwMyAwMCAwQSA3
OCAxMiAwQiAwNCAwQyBGRiBGRiAgLi4uLi4uLi4ueC4uLi4uLgogICAgMTFGMDogMDIgMDAgMDAg
MDAgMEEgNzggMTIgMEIgMDQgMEMgRkYgRkYgMDIgMDAgMDEgMDAgIC4uLi4ueC4uLi4uLi4uLi4K
ICAgIDEyMDA6IDBBIDc4IDEyIDBCIDA0IDBDIEZGIEZGIDAzIDAwIDAwIDAwIDBBIDc5IDEyIDBC
ICAueC4uLi4uLi4uLi4ueS4uCiAgICAxMjEwOiAwNCAwQyBGRiBGRiAwMyAwMCAwMSAwMCAwQSA3
OSAxMiAwQyAwNCAwQyBGRiBGRiAgLi4uLi4uLi4ueS4uLi4uLgogICAgMTIyMDogMDMgMDAgMEEg
MDIgMDAgMEEgNzkgMTIgMEMgMDQgMEMgRkYgRkYgMDMgMDAgMEEgIC4uLi4uLnkuLi4uLi4uLi4K
ICAgIDEyMzA6IDAzIDAwIDBBIDc5IDEyIDBCIDA0IDBDIEZGIEZGIDA0IDAwIDAwIDAwIDBBIDc5
ICAuLi55Li4uLi4uLi4uLi55CiAgICAxMjQwOiAxMiAwQiAwNCAwQyBGRiBGRiAwNCAwMCAwMSAw
MCAwQSA3OSAxMiAwQiAwNCAwQyAgLi4uLi4uLi4uLi55Li4uLgogICAgMTI1MDogRkYgRkYgMDUg
MDAgMDAgMDAgMEEgN0EgMTIgMEIgMDQgMEMgRkYgRkYgMDUgMDAgIC4uLi4uLi56Li4uLi4uLi4K
ICAgIDEyNjA6IDAxIDAwIDBBIDdBIDEyIDBDIDA0IDBDIEZGIEZGIDA1IDAwIDBBIDAyIDAwIDBB
ICAuLi56Li4uLi4uLi4uLi4uCiAgICAxMjcwOiA3QSAxMiAwQyAwNCAwQyBGRiBGRiAwNSAwMCAw
QSAwMyAwMCAwQSA3QSAxMiAwQiAgei4uLi4uLi4uLi4uLnouLgogICAgMTI4MDogMDQgMEMgRkYg
RkYgMDcgMDAgMDAgMDAgMEEgN0IgMTIgMEIgMDQgMEMgRkYgRkYgIC4uLi4uLi4uLnsuLi4uLi4K
ICAgIDEyOTA6IDA3IDAwIDAxIDAwIDBBIDdCIDA4IDUwIDMwIDMyIDM1IDEyIDM0IDA0IDEyIDBC
ICAuLi4uLnsuUDAyNS40Li4uCiAgICAxMkEwOiAwNCAwQiBGRiBGRiAwMCA0QyA0RSA0QiA0MSAw
MCAxMiAwQiAwNCAwQiBGRiBGRiAgLi4uLi5MTktBLi4uLi4uLgogICAgMTJCMDogMDEgNEMgNEUg
NEIgNDIgMDAgMTIgMEMgMDQgMEIgRkYgRkYgMEEgMDIgNEMgNEUgIC5MTktCLi4uLi4uLi4uTE4K
ICAgIDEyQzA6IDRCIDQzIDAwIDEyIDBDIDA0IDBCIEZGIEZGIDBBIDAzIDRDIDRFIDRCIDQ0IDAw
ICBLQy4uLi4uLi4uLkxOS0QuCiAgICAxMkQwOiAwOCA0NyAzMCAzMiAzNSAxMiAyQyAwNCAxMiAw
OSAwNCAwQiBGRiBGRiAwMCAwMCAgLkcwMjUuLC4uLi4uLi4uLgogICAgMTJFMDogMEEgNzggMTIg
MDkgMDQgMEIgRkYgRkYgMDEgMDAgMEEgNzkgMTIgMEEgMDQgMEIgIC54Li4uLi4uLi4ueS4uLi4K
ICAgIDEyRjA6IEZGIEZGIDBBIDAyIDAwIDBBIDdBIDEyIDBBIDA0IDBCIEZGIEZGIDBBIDAzIDAw
ICAuLi4uLi56Li4uLi4uLi4uCiAgICAxMzAwOiAwQSA3QiAwOCA1MCAzMCAzMiAzNiAxMiAzNCAw
NCAxMiAwQiAwNCAwQiBGRiBGRiAgLnsuUDAyNi40Li4uLi4uLgogICAgMTMxMDogMDAgNEMgNEUg
NEIgNDUgMDAgMTIgMEIgMDQgMEIgRkYgRkYgMDEgNEMgNEUgNEIgIC5MTktFLi4uLi4uLi5MTksK
ICAgIDEzMjA6IDQ2IDAwIDEyIDBDIDA0IDBCIEZGIEZGIDBBIDAyIDRDIDRFIDRCIDQ3IDAwIDEy
ICBGLi4uLi4uLi4uTE5LRy4uCiAgICAxMzMwOiAwQyAwNCAwQiBGRiBGRiAwQSAwMyA0QyA0RSA0
QiA0OCAwMCAwOCA0NyAzMCAzMiAgLi4uLi4uLkxOS0guLkcwMgogICAgMTM0MDogMzYgMTIgMkMg
MDQgMTIgMDkgMDQgMEIgRkYgRkYgMDAgMDAgMEEgN0MgMTIgMDkgIDYuLC4uLi4uLi4uLi58Li4K
ICAgIDEzNTA6IDA0IDBCIEZGIEZGIDAxIDAwIDBBIDdEIDEyIDBBIDA0IDBCIEZGIEZGIDBBIDAy
ICAuLi4uLi4ufS4uLi4uLi4uCiAgICAxMzYwOiAwMCAwQSA3RSAxMiAwQSAwNCAwQiBGRiBGRiAw
QSAwMyAwMCAwQSA3RiAwOCA1MCAgLi5+Li4uLi4uLi4uLi4uUAogICAgMTM3MDogMzAgMzIgMzcg
MTIgMzQgMDQgMTIgMEIgMDQgMEIgRkYgRkYgMDAgNEMgNEUgNEIgIDAyNy40Li4uLi4uLi5MTksK
ICAgIDEzODA6IDQxIDAwIDEyIDBCIDA0IDBCIEZGIEZGIDAxIDRDIDRFIDRCIDQyIDAwIDEyIDBD
ICBBLi4uLi4uLi5MTktCLi4uCiAgICAxMzkwOiAwNCAwQiBGRiBGRiAwQSAwMiA0QyA0RSA0QiA0
MyAwMCAxMiAwQyAwNCAwQiBGRiAgLi4uLi4uTE5LQy4uLi4uLgogICAgMTNBMDogRkYgMEEgMDMg
NEMgNEUgNEIgNDQgMDAgMDggNDcgMzAgMzIgMzcgMTIgMkMgMDQgIC4uLkxOS0QuLkcwMjcuLC4K
ICAgIDEzQjA6IDEyIDA5IDA0IDBCIEZGIEZGIDAwIDAwIDBBIDgwIDEyIDA5IDA0IDBCIEZGIEZG
ICAuLi4uLi4uLi4uLi4uLi4uCiAgICAxM0MwOiAwMSAwMCAwQSA4MSAxMiAwQSAwNCAwQiBGRiBG
RiAwQSAwMiAwMCAwQSA4MiAxMiAgLi4uLi4uLi4uLi4uLi4uLgogICAgMTNEMDogMEEgMDQgMEIg
RkYgRkYgMEEgMDMgMDAgMEEgODMgMDggNTAgMzAgMzIgMzggMTIgIC4uLi4uLi4uLi4uUDAyOC4K
ICAgIDEzRTA6IDM0IDA0IDEyIDBCIDA0IDBCIEZGIEZGIDAwIDRDIDRFIDRCIDQ1IDAwIDEyIDBC
ICA0Li4uLi4uLi5MTktFLi4uCiAgICAxM0YwOiAwNCAwQiBGRiBGRiAwMSA0QyA0RSA0QiA0NiAw
MCAxMiAwQyAwNCAwQiBGRiBGRiAgLi4uLi5MTktGLi4uLi4uLgogICAgMTQwMDogMEEgMDIgNEMg
NEUgNEIgNDcgMDAgMTIgMEMgMDQgMEIgRkYgRkYgMEEgMDMgNEMgIC4uTE5LRy4uLi4uLi4uLkwK
ICAgIDE0MTA6IDRFIDRCIDQ4IDAwIDA4IDQ3IDMwIDMyIDM4IDEyIDJDIDA0IDEyIDA5IDA0IDBC
ICBOS0guLkcwMjguLC4uLi4uCiAgICAxNDIwOiBGRiBGRiAwMCAwMCAwQSA4NCAxMiAwOSAwNCAw
QiBGRiBGRiAwMSAwMCAwQSA4NSAgLi4uLi4uLi4uLi4uLi4uLgogICAgMTQzMDogMTIgMEEgMDQg
MEIgRkYgRkYgMEEgMDIgMDAgMEEgODYgMTIgMEEgMDQgMEIgRkYgIC4uLi4uLi4uLi4uLi4uLi4K
ICAgIDE0NDA6IEZGIDBBIDAzIDAwIDBBIDg3IDA4IDUwIDMwIDMyIDM5IDEyIDM0IDA0IDEyIDBC
ICAuLi4uLi4uUDAyOS40Li4uCiAgICAxNDUwOiAwNCAwQiBGRiBGRiAwMCA0QyA0RSA0QiA0MSAw
MCAxMiAwQiAwNCAwQiBGRiBGRiAgLi4uLi5MTktBLi4uLi4uLgogICAgMTQ2MDogMDEgNEMgNEUg
NEIgNDIgMDAgMTIgMEMgMDQgMEIgRkYgRkYgMEEgMDIgNEMgNEUgIC5MTktCLi4uLi4uLi4uTE4K
ICAgIDE0NzA6IDRCIDQzIDAwIDEyIDBDIDA0IDBCIEZGIEZGIDBBIDAzIDRDIDRFIDRCIDQ0IDAw
ICBLQy4uLi4uLi4uLkxOS0QuCiAgICAxNDgwOiAwOCA0NyAzMCAzMiAzOSAxMiAyQyAwNCAxMiAw
OSAwNCAwQiBGRiBGRiAwMCAwMCAgLkcwMjkuLC4uLi4uLi4uLgogICAgMTQ5MDogMEEgODggMTIg
MDkgMDQgMEIgRkYgRkYgMDEgMDAgMEEgODkgMTIgMEEgMDQgMEIgIC4uLi4uLi4uLi4uLi4uLi4K
ICAgIDE0QTA6IEZGIEZGIDBBIDAyIDAwIDBBIDhBIDEyIDBBIDA0IDBCIEZGIEZGIDBBIDAzIDAw
ICAuLi4uLi4uLi4uLi4uLi4uCiAgICAxNEIwOiAwQSA4QiAwOCA1MCAzMCAzMiA0MSAxMiAzNCAw
NCAxMiAwQiAwNCAwQiBGRiBGRiAgLi4uUDAyQS40Li4uLi4uLgogICAgMTRDMDogMDAgNEMgNEUg
NEIgNDMgMDAgMTIgMEIgMDQgMEIgRkYgRkYgMDEgNEMgNEUgNEIgIC5MTktDLi4uLi4uLi5MTksK
ICAgIDE0RDA6IDQ0IDAwIDEyIDBDIDA0IDBCIEZGIEZGIDBBIDAyIDRDIDRFIDRCIDQxIDAwIDEy
ICBELi4uLi4uLi4uTE5LQS4uCiAgICAxNEUwOiAwQyAwNCAwQiBGRiBGRiAwQSAwMyA0QyA0RSA0
QiA0MiAwMCAwOCA0NyAzMCAzMiAgLi4uLi4uLkxOS0IuLkcwMgogICAgMTRGMDogNDEgMTIgMkMg
MDQgMTIgMDkgMDQgMEIgRkYgRkYgMDAgMDAgMEEgOEEgMTIgMDkgIEEuLC4uLi4uLi4uLi4uLi4K
ICAgIDE1MDA6IDA0IDBCIEZGIEZGIDAxIDAwIDBBIDhCIDEyIDBBIDA0IDBCIEZGIEZGIDBBIDAy
ICAuLi4uLi4uLi4uLi4uLi4uCiAgICAxNTEwOiAwMCAwQSA4OCAxMiAwQSAwNCAwQiBGRiBGRiAw
QSAwMyAwMCAwQSA4OSAwOCA1MCAgLi4uLi4uLi4uLi4uLi4uUAogICAgMTUyMDogMzAgMzIgNDIg
MTIgMzQgMDQgMTIgMEIgMDQgMEIgRkYgRkYgMDAgNEMgNEUgNEIgIDAyQi40Li4uLi4uLi5MTksK
ICAgIDE1MzA6IDQ3IDAwIDEyIDBCIDA0IDBCIEZGIEZGIDAxIDRDIDRFIDRCIDQ4IDAwIDEyIDBD
ICBHLi4uLi4uLi5MTktILi4uCiAgICAxNTQwOiAwNCAwQiBGRiBGRiAwQSAwMiA0QyA0RSA0QiA0
NSAwMCAxMiAwQyAwNCAwQiBGRiAgLi4uLi4uTE5LRS4uLi4uLgogICAgMTU1MDogRkYgMEEgMDMg
NEMgNEUgNEIgNDYgMDAgMDggNDcgMzAgMzIgNDIgMTIgMkMgMDQgIC4uLkxOS0YuLkcwMkIuLC4K
ICAgIDE1NjA6IDEyIDA5IDA0IDBCIEZGIEZGIDAwIDAwIDBBIDg2IDEyIDA5IDA0IDBCIEZGIEZG
ICAuLi4uLi4uLi4uLi4uLi4uCiAgICAxNTcwOiAwMSAwMCAwQSA4NyAxMiAwQSAwNCAwQiBGRiBG
RiAwQSAwMiAwMCAwQSA4NCAxMiAgLi4uLi4uLi4uLi4uLi4uLgogICAgMTU4MDogMEEgMDQgMEIg
RkYgRkYgMEEgMDMgMDAgMEEgODUgMDggNTAgMzAgMzIgNDMgMTIgIC4uLi4uLi4uLi4uUDAyQy4K
ICAgIDE1OTA6IDM0IDA0IDEyIDBCIDA0IDBCIEZGIEZGIDAwIDRDIDRFIDRCIDQzIDAwIDEyIDBC
ICA0Li4uLi4uLi5MTktDLi4uCiAgICAxNUEwOiAwNCAwQiBGRiBGRiAwMSA0QyA0RSA0QiA0NCAw
MCAxMiAwQyAwNCAwQiBGRiBGRiAgLi4uLi5MTktELi4uLi4uLgogICAgMTVCMDogMEEgMDIgNEMg
NEUgNEIgNDEgMDAgMTIgMEMgMDQgMEIgRkYgRkYgMEEgMDMgNEMgIC4uTE5LQS4uLi4uLi4uLkwK
ICAgIDE1QzA6IDRFIDRCIDQyIDAwIDA4IDQ3IDMwIDMyIDQzIDEyIDJDIDA0IDEyIDA5IDA0IDBC
ICBOS0IuLkcwMkMuLC4uLi4uCiAgICAxNUQwOiBGRiBGRiAwMCAwMCAwQSA4MiAxMiAwOSAwNCAw
QiBGRiBGRiAwMSAwMCAwQSA4MyAgLi4uLi4uLi4uLi4uLi4uLgogICAgMTVFMDogMTIgMEEgMDQg
MEIgRkYgRkYgMEEgMDIgMDAgMEEgODAgMTIgMEEgMDQgMEIgRkYgIC4uLi4uLi4uLi4uLi4uLi4K
ICAgIDE1RjA6IEZGIDBBIDAzIDAwIDBBIDgxIDA4IDUwIDMwIDMyIDQ0IDEyIDM0IDA0IDEyIDBC
ICAuLi4uLi4uUDAyRC40Li4uCiAgICAxNjAwOiAwNCAwQiBGRiBGRiAwMCA0QyA0RSA0QiA0NyAw
MCAxMiAwQiAwNCAwQiBGRiBGRiAgLi4uLi5MTktHLi4uLi4uLgogICAgMTYxMDogMDEgNEMgNEUg
NEIgNDggMDAgMTIgMEMgMDQgMEIgRkYgRkYgMEEgMDIgNEMgNEUgIC5MTktILi4uLi4uLi4uTE4K
ICAgIDE2MjA6IDRCIDQ1IDAwIDEyIDBDIDA0IDBCIEZGIEZGIDBBIDAzIDRDIDRFIDRCIDQ2IDAw
ICBLRS4uLi4uLi4uLkxOS0YuCiAgICAxNjMwOiAwOCA0NyAzMCAzMiA0NCAxMiAyQyAwNCAxMiAw
OSAwNCAwQiBGRiBGRiAwMCAwMCAgLkcwMkQuLC4uLi4uLi4uLgogICAgMTY0MDogMEEgN0UgMTIg
MDkgMDQgMEIgRkYgRkYgMDEgMDAgMEEgN0YgMTIgMEEgMDQgMEIgIC5+Li4uLi4uLi4uLi4uLi4K
ICAgIDE2NTA6IEZGIEZGIDBBIDAyIDAwIDBBIDdDIDEyIDBBIDA0IDBCIEZGIEZGIDBBIDAzIDAw
ICAuLi4uLi58Li4uLi4uLi4uCiAgICAxNjYwOiAwQSA3RCAwOCA1MCAzMCAzMiA0NSAxMiAzNCAw
NCAxMiAwQiAwNCAwQiBGRiBGRiAgLn0uUDAyRS40Li4uLi4uLgogICAgMTY3MDogMDAgNEMgNEUg
NEIgNDMgMDAgMTIgMEIgMDQgMEIgRkYgRkYgMDEgNEMgNEUgNEIgIC5MTktDLi4uLi4uLi5MTksK
ICAgIDE2ODA6IDQ0IDAwIDEyIDBDIDA0IDBCIEZGIEZGIDBBIDAyIDRDIDRFIDRCIDQxIDAwIDEy
ICBELi4uLi4uLi4uTE5LQS4uCiAgICAxNjkwOiAwQyAwNCAwQiBGRiBGRiAwQSAwMyA0QyA0RSA0
QiA0MiAwMCAwOCA0NyAzMCAzMiAgLi4uLi4uLkxOS0IuLkcwMgogICAgMTZBMDogNDUgMTIgMkMg
MDQgMTIgMDkgMDQgMEIgRkYgRkYgMDAgMDAgMEEgN0EgMTIgMDkgIEUuLC4uLi4uLi4uLi56Li4K
ICAgIDE2QjA6IDA0IDBCIEZGIEZGIDAxIDAwIDBBIDdCIDEyIDBBIDA0IDBCIEZGIEZGIDBBIDAy
ICAuLi4uLi4uey4uLi4uLi4uCiAgICAxNkMwOiAwMCAwQSA3OCAxMiAwQSAwNCAwQiBGRiBGRiAw
QSAwMyAwMCAwQSA3OSAwOCA1MCAgLi54Li4uLi4uLi4uLnkuUAogICAgMTZEMDogMzAgMzIgNDYg
MTIgMzQgMDQgMTIgMEIgMDQgMEIgRkYgRkYgMDAgNEMgNEUgNEIgIDAyRi40Li4uLi4uLi5MTksK
ICAgIDE2RTA6IDQyIDAwIDEyIDBCIDA0IDBCIEZGIEZGIDAxIDRDIDRFIDRCIDQzIDAwIDEyIDBD
ICBCLi4uLi4uLi5MTktDLi4uCiAgICAxNkYwOiAwNCAwQiBGRiBGRiAwQSAwMiA0QyA0RSA0QiA0
NCAwMCAxMiAwQyAwNCAwQiBGRiAgLi4uLi4uTE5LRC4uLi4uLgogICAgMTcwMDogRkYgMEEgMDMg
NEMgNEUgNEIgNDEgMDAgMDggNDcgMzAgMzIgNDYgMTIgMkMgMDQgIC4uLkxOS0EuLkcwMkYuLC4K
ICAgIDE3MTA6IDEyIDA5IDA0IDBCIEZGIEZGIDAwIDAwIDBBIDc5IDEyIDA5IDA0IDBCIEZGIEZG
ICAuLi4uLi4uLi55Li4uLi4uCiAgICAxNzIwOiAwMSAwMCAwQSA3QSAxMiAwQSAwNCAwQiBGRiBG
RiAwQSAwMiAwMCAwQSA3QiAxMiAgLi4uei4uLi4uLi4uLi57LgogICAgMTczMDogMEEgMDQgMEIg
RkYgRkYgMEEgMDMgMDAgMEEgNzggMDggNTAgMzAgMzMgMzAgMTIgIC4uLi4uLi4uLnguUDAzMC4K
ICAgIDE3NDA6IDM0IDA0IDEyIDBCIDA0IDBCIEZGIEZGIDAwIDRDIDRFIDRCIDQ2IDAwIDEyIDBC
ICA0Li4uLi4uLi5MTktGLi4uCiAgICAxNzUwOiAwNCAwQiBGRiBGRiAwMSA0QyA0RSA0QiA0NyAw
MCAxMiAwQyAwNCAwQiBGRiBGRiAgLi4uLi5MTktHLi4uLi4uLgogICAgMTc2MDogMEEgMDIgNEMg
NEUgNEIgNDggMDAgMTIgMEMgMDQgMEIgRkYgRkYgMEEgMDMgNEMgIC4uTE5LSC4uLi4uLi4uLkwK
ICAgIDE3NzA6IDRFIDRCIDQ1IDAwIDA4IDQ3IDMwIDMzIDMwIDEyIDJDIDA0IDEyIDA5IDA0IDBC
ICBOS0UuLkcwMzAuLC4uLi4uCiAgICAxNzgwOiBGRiBGRiAwMCAwMCAwQSA3RCAxMiAwOSAwNCAw
QiBGRiBGRiAwMSAwMCAwQSA3RSAgLi4uLi59Li4uLi4uLi4ufgogICAgMTc5MDogMTIgMEEgMDQg
MEIgRkYgRkYgMEEgMDIgMDAgMEEgN0YgMTIgMEEgMDQgMEIgRkYgIC4uLi4uLi4uLi4uLi4uLi4K
ICAgIDE3QTA6IEZGIDBBIDAzIDAwIDBBIDdDIDA4IDUwIDMwIDMzIDMxIDEyIDM0IDA0IDEyIDBC
ICAuLi4uLnwuUDAzMS40Li4uCiAgICAxN0IwOiAwNCAwQiBGRiBGRiAwMCA0QyA0RSA0QiA0MiAw
MCAxMiAwQiAwNCAwQiBGRiBGRiAgLi4uLi5MTktCLi4uLi4uLgogICAgMTdDMDogMDEgNEMgNEUg
NEIgNDMgMDAgMTIgMEMgMDQgMEIgRkYgRkYgMEEgMDIgNEMgNEUgIC5MTktDLi4uLi4uLi4uTE4K
ICAgIDE3RDA6IDRCIDQ0IDAwIDEyIDBDIDA0IDBCIEZGIEZGIDBBIDAzIDRDIDRFIDRCIDQxIDAw
ICBLRC4uLi4uLi4uLkxOS0EuCiAgICAxN0UwOiAwOCA0NyAzMCAzMyAzMSAxMiAyQyAwNCAxMiAw
OSAwNCAwQiBGRiBGRiAwMCAwMCAgLkcwMzEuLC4uLi4uLi4uLgogICAgMTdGMDogMEEgODEgMTIg
MDkgMDQgMEIgRkYgRkYgMDEgMDAgMEEgODIgMTIgMEEgMDQgMEIgIC4uLi4uLi4uLi4uLi4uLi4K
ICAgIDE4MDA6IEZGIEZGIDBBIDAyIDAwIDBBIDgzIDEyIDBBIDA0IDBCIEZGIEZGIDBBIDAzIDAw
ICAuLi4uLi4uLi4uLi4uLi4uCiAgICAxODEwOiAwQSA4MCAwOCA1MCAzMCAzMyAzMiAxMiAzNCAw
NCAxMiAwQiAwNCAwQiBGRiBGRiAgLi4uUDAzMi40Li4uLi4uLgogICAgMTgyMDogMDAgNEMgNEUg
NEIgNDYgMDAgMTIgMEIgMDQgMEIgRkYgRkYgMDEgNEMgNEUgNEIgIC5MTktGLi4uLi4uLi5MTksK
ICAgIDE4MzA6IDQ3IDAwIDEyIDBDIDA0IDBCIEZGIEZGIDBBIDAyIDRDIDRFIDRCIDQ4IDAwIDEy
ICBHLi4uLi4uLi4uTE5LSC4uCiAgICAxODQwOiAwQyAwNCAwQiBGRiBGRiAwQSAwMyA0QyA0RSA0
QiA0NSAwMCAwOCA0NyAzMCAzMyAgLi4uLi4uLkxOS0UuLkcwMwogICAgMTg1MDogMzIgMTIgMkMg
MDQgMTIgMDkgMDQgMEIgRkYgRkYgMDAgMDAgMEEgODUgMTIgMDkgIDIuLC4uLi4uLi4uLi4uLi4K
ICAgIDE4NjA6IDA0IDBCIEZGIEZGIDAxIDAwIDBBIDg2IDEyIDBBIDA0IDBCIEZGIEZGIDBBIDAy
ICAuLi4uLi4uLi4uLi4uLi4uCiAgICAxODcwOiAwMCAwQSA4NyAxMiAwQSAwNCAwQiBGRiBGRiAw
QSAwMyAwMCAwQSA4NCAwOCA1MCAgLi4uLi4uLi4uLi4uLi4uUAogICAgMTg4MDogMzAgMzMgMzMg
MTIgMzQgMDQgMTIgMEIgMDQgMEIgRkYgRkYgMDAgNEMgNEUgNEIgIDAzMy40Li4uLi4uLi5MTksK
ICAgIDE4OTA6IDQyIDAwIDEyIDBCIDA0IDBCIEZGIEZGIDAxIDRDIDRFIDRCIDQzIDAwIDEyIDBD
ICBCLi4uLi4uLi5MTktDLi4uCiAgICAxOEEwOiAwNCAwQiBGRiBGRiAwQSAwMiA0QyA0RSA0QiA0
NCAwMCAxMiAwQyAwNCAwQiBGRiAgLi4uLi4uTE5LRC4uLi4uLgogICAgMThCMDogRkYgMEEgMDMg
NEMgNEUgNEIgNDEgMDAgMDggNDcgMzAgMzMgMzMgMTIgMkMgMDQgIC4uLkxOS0EuLkcwMzMuLC4K
ICAgIDE4QzA6IDEyIDA5IDA0IDBCIEZGIEZGIDAwIDAwIDBBIDg5IDEyIDA5IDA0IDBCIEZGIEZG
ICAuLi4uLi4uLi4uLi4uLi4uCiAgICAxOEQwOiAwMSAwMCAwQSA4QSAxMiAwQSAwNCAwQiBGRiBG
RiAwQSAwMiAwMCAwQSA4QiAxMiAgLi4uLi4uLi4uLi4uLi4uLgogICAgMThFMDogMEEgMDQgMEIg
RkYgRkYgMEEgMDMgMDAgMEEgODggMDggNTAgMzAgMzMgMzQgMTIgIC4uLi4uLi4uLi4uUDAzNC4K
ICAgIDE4RjA6IDM0IDA0IDEyIDBCIDA0IDBCIEZGIEZGIDAwIDRDIDRFIDRCIDQ0IDAwIDEyIDBC
ICA0Li4uLi4uLi5MTktELi4uCiAgICAxOTAwOiAwNCAwQiBGRiBGRiAwMSA0QyA0RSA0QiA0MSAw
MCAxMiAwQyAwNCAwQiBGRiBGRiAgLi4uLi5MTktBLi4uLi4uLgogICAgMTkxMDogMEEgMDIgNEMg
NEUgNEIgNDIgMDAgMTIgMEMgMDQgMEIgRkYgRkYgMEEgMDMgNEMgIC4uTE5LQi4uLi4uLi4uLkwK
ICAgIDE5MjA6IDRFIDRCIDQzIDAwIDA4IDQ3IDMwIDMzIDM0IDEyIDJDIDA0IDEyIDA5IDA0IDBC
ICBOS0MuLkcwMzQuLC4uLi4uCiAgICAxOTMwOiBGRiBGRiAwMCAwMCAwQSA4QiAxMiAwOSAwNCAw
QiBGRiBGRiAwMSAwMCAwQSA4OCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMTk0MDogMTIgMEEgMDQg
MEIgRkYgRkYgMEEgMDIgMDAgMEEgODkgMTIgMEEgMDQgMEIgRkYgIC4uLi4uLi4uLi4uLi4uLi4K
ICAgIDE5NTA6IEZGIDBBIDAzIDAwIDBBIDhBIDA4IDUwIDMwIDMzIDM1IDEyIDM0IDA0IDEyIDBC
ICAuLi4uLi4uUDAzNS40Li4uCiAgICAxOTYwOiAwNCAwQiBGRiBGRiAwMCA0QyA0RSA0QiA0OCAw
MCAxMiAwQiAwNCAwQiBGRiBGRiAgLi4uLi5MTktILi4uLi4uLgogICAgMTk3MDogMDEgNEMgNEUg
NEIgNDUgMDAgMTIgMEMgMDQgMEIgRkYgRkYgMEEgMDIgNEMgNEUgIC5MTktFLi4uLi4uLi4uTE4K
ICAgIDE5ODA6IDRCIDQ2IDAwIDEyIDBDIDA0IDBCIEZGIEZGIDBBIDAzIDRDIDRFIDRCIDQ3IDAw
ICBLRi4uLi4uLi4uLkxOS0cuCiAgICAxOTkwOiAwOCA0NyAzMCAzMyAzNSAxMiAyQyAwNCAxMiAw
OSAwNCAwQiBGRiBGRiAwMCAwMCAgLkcwMzUuLC4uLi4uLi4uLgogICAgMTlBMDogMEEgODcgMTIg
MDkgMDQgMEIgRkYgRkYgMDEgMDAgMEEgODQgMTIgMEEgMDQgMEIgIC4uLi4uLi4uLi4uLi4uLi4K
ICAgIDE5QjA6IEZGIEZGIDBBIDAyIDAwIDBBIDg1IDEyIDBBIDA0IDBCIEZGIEZGIDBBIDAzIDAw
ICAuLi4uLi4uLi4uLi4uLi4uCiAgICAxOUMwOiAwQSA4NiAwOCA1MCAzMCAzMyAzNiAxMiAzNCAw
NCAxMiAwQiAwNCAwQiBGRiBGRiAgLi4uUDAzNi40Li4uLi4uLgogICAgMTlEMDogMDAgNEMgNEUg
NEIgNDQgMDAgMTIgMEIgMDQgMEIgRkYgRkYgMDEgNEMgNEUgNEIgIC5MTktELi4uLi4uLi5MTksK
ICAgIDE5RTA6IDQxIDAwIDEyIDBDIDA0IDBCIEZGIEZGIDBBIDAyIDRDIDRFIDRCIDQyIDAwIDEy
ICBBLi4uLi4uLi4uTE5LQi4uCiAgICAxOUYwOiAwQyAwNCAwQiBGRiBGRiAwQSAwMyA0QyA0RSA0
QiA0MyAwMCAwOCA0NyAzMCAzMyAgLi4uLi4uLkxOS0MuLkcwMwogICAgMUEwMDogMzYgMTIgMkMg
MDQgMTIgMDkgMDQgMEIgRkYgRkYgMDAgMDAgMEEgODMgMTIgMDkgIDYuLC4uLi4uLi4uLi4uLi4K
ICAgIDFBMTA6IDA0IDBCIEZGIEZGIDAxIDAwIDBBIDgwIDEyIDBBIDA0IDBCIEZGIEZGIDBBIDAy
ICAuLi4uLi4uLi4uLi4uLi4uCiAgICAxQTIwOiAwMCAwQSA4MSAxMiAwQSAwNCAwQiBGRiBGRiAw
QSAwMyAwMCAwQSA4MiAwOCA1MCAgLi4uLi4uLi4uLi4uLi4uUAogICAgMUEzMDogMzAgMzMgMzcg
MTIgMzQgMDQgMTIgMEIgMDQgMEIgRkYgRkYgMDAgNEMgNEUgNEIgIDAzNy40Li4uLi4uLi5MTksK
ICAgIDFBNDA6IDQ4IDAwIDEyIDBCIDA0IDBCIEZGIEZGIDAxIDRDIDRFIDRCIDQ1IDAwIDEyIDBD
ICBILi4uLi4uLi5MTktFLi4uCiAgICAxQTUwOiAwNCAwQiBGRiBGRiAwQSAwMiA0QyA0RSA0QiA0
NiAwMCAxMiAwQyAwNCAwQiBGRiAgLi4uLi4uTE5LRi4uLi4uLgogICAgMUE2MDogRkYgMEEgMDMg
NEMgNEUgNEIgNDcgMDAgMDggNDcgMzAgMzMgMzcgMTIgMkMgMDQgIC4uLkxOS0cuLkcwMzcuLC4K
ICAgIDFBNzA6IDEyIDA5IDA0IDBCIEZGIEZGIDAwIDAwIDBBIDdGIDEyIDA5IDA0IDBCIEZGIEZG
ICAuLi4uLi4uLi4uLi4uLi4uCiAgICAxQTgwOiAwMSAwMCAwQSA3QyAxMiAwQSAwNCAwQiBGRiBG
RiAwQSAwMiAwMCAwQSA3RCAxMiAgLi4ufC4uLi4uLi4uLi59LgogICAgMUE5MDogMEEgMDQgMEIg
RkYgRkYgMEEgMDMgMDAgMEEgN0UgMDggNTAgMzAgMzMgMzggMTIgIC4uLi4uLi4uLn4uUDAzOC4K
ICAgIDFBQTA6IDM0IDA0IDEyIDBCIDA0IDBCIEZGIEZGIDAwIDRDIDRFIDRCIDQ0IDAwIDEyIDBC
ICA0Li4uLi4uLi5MTktELi4uCiAgICAxQUIwOiAwNCAwQiBGRiBGRiAwMSA0QyA0RSA0QiA0MSAw
MCAxMiAwQyAwNCAwQiBGRiBGRiAgLi4uLi5MTktBLi4uLi4uLgogICAgMUFDMDogMEEgMDIgNEMg
NEUgNEIgNDIgMDAgMTIgMEMgMDQgMEIgRkYgRkYgMEEgMDMgNEMgIC4uTE5LQi4uLi4uLi4uLkwK
ICAgIDFBRDA6IDRFIDRCIDQzIDAwIDA4IDQ3IDMwIDMzIDM4IDEyIDJDIDA0IDEyIDA5IDA0IDBC
ICBOS0MuLkcwMzguLC4uLi4uCiAgICAxQUUwOiBGRiBGRiAwMCAwMCAwQSA3QiAxMiAwOSAwNCAw
QiBGRiBGRiAwMSAwMCAwQSA3OCAgLi4uLi57Li4uLi4uLi4ueAogICAgMUFGMDogMTIgMEEgMDQg
MEIgRkYgRkYgMEEgMDIgMDAgMEEgNzkgMTIgMEEgMDQgMEIgRkYgIC4uLi4uLi4uLi55Li4uLi4K
ICAgIDFCMDA6IEZGIDBBIDAzIDAwIDBBIDdBIDA4IDUwIDMwIDMzIDM5IDEyIDM0IDA0IDEyIDBC
ICAuLi4uLnouUDAzOS40Li4uCiAgICAxQjEwOiAwNCAwQiBGRiBGRiAwMCA0QyA0RSA0QiA0MSAw
MCAxMiAwQiAwNCAwQiBGRiBGRiAgLi4uLi5MTktBLi4uLi4uLgogICAgMUIyMDogMDEgNEMgNEUg
NEIgNDIgMDAgMTIgMEMgMDQgMEIgRkYgRkYgMEEgMDIgNEMgNEUgIC5MTktCLi4uLi4uLi4uTE4K
ICAgIDFCMzA6IDRCIDQzIDAwIDEyIDBDIDA0IDBCIEZGIEZGIDBBIDAzIDRDIDRFIDRCIDQ0IDAw
ICBLQy4uLi4uLi4uLkxOS0QuCiAgICAxQjQwOiAwOCA0NyAzMCAzMyAzOSAxMiAyQyAwNCAxMiAw
OSAwNCAwQiBGRiBGRiAwMCAwMCAgLkcwMzkuLC4uLi4uLi4uLgogICAgMUI1MDogMEEgNzggMTIg
MDkgMDQgMEIgRkYgRkYgMDEgMDAgMEEgNzkgMTIgMEEgMDQgMEIgIC54Li4uLi4uLi4ueS4uLi4K
ICAgIDFCNjA6IEZGIEZGIDBBIDAyIDAwIDBBIDdBIDEyIDBBIDA0IDBCIEZGIEZGIDBBIDAzIDAw
ICAuLi4uLi56Li4uLi4uLi4uCiAgICAxQjcwOiAwQSA3QiAwOCA1MCAzMCAzMyA0MSAxMiAzNCAw
NCAxMiAwQiAwNCAwQiBGRiBGRiAgLnsuUDAzQS40Li4uLi4uLgogICAgMUI4MDogMDAgNEMgNEUg
NEIgNDUgMDAgMTIgMEIgMDQgMEIgRkYgRkYgMDEgNEMgNEUgNEIgIC5MTktFLi4uLi4uLi5MTksK
ICAgIDFCOTA6IDQ2IDAwIDEyIDBDIDA0IDBCIEZGIEZGIDBBIDAyIDRDIDRFIDRCIDQ3IDAwIDEy
ICBGLi4uLi4uLi4uTE5LRy4uCiAgICAxQkEwOiAwQyAwNCAwQiBGRiBGRiAwQSAwMyA0QyA0RSA0
QiA0OCAwMCAwOCA0NyAzMCAzMyAgLi4uLi4uLkxOS0guLkcwMwogICAgMUJCMDogNDEgMTIgMkMg
MDQgMTIgMDkgMDQgMEIgRkYgRkYgMDAgMDAgMEEgN0MgMTIgMDkgIEEuLC4uLi4uLi4uLi58Li4K
ICAgIDFCQzA6IDA0IDBCIEZGIEZGIDAxIDAwIDBBIDdEIDEyIDBBIDA0IDBCIEZGIEZGIDBBIDAy
ICAuLi4uLi4ufS4uLi4uLi4uCiAgICAxQkQwOiAwMCAwQSA3RSAxMiAwQSAwNCAwQiBGRiBGRiAw
QSAwMyAwMCAwQSA3RiAwOCA1MCAgLi5+Li4uLi4uLi4uLi4uUAogICAgMUJFMDogMzAgMzMgNDIg
MTIgMzQgMDQgMTIgMEIgMDQgMEIgRkYgRkYgMDAgNEMgNEUgNEIgIDAzQi40Li4uLi4uLi5MTksK
ICAgIDFCRjA6IDQxIDAwIDEyIDBCIDA0IDBCIEZGIEZGIDAxIDRDIDRFIDRCIDQyIDAwIDEyIDBD
ICBBLi4uLi4uLi5MTktCLi4uCiAgICAxQzAwOiAwNCAwQiBGRiBGRiAwQSAwMiA0QyA0RSA0QiA0
MyAwMCAxMiAwQyAwNCAwQiBGRiAgLi4uLi4uTE5LQy4uLi4uLgogICAgMUMxMDogRkYgMEEgMDMg
NEMgNEUgNEIgNDQgMDAgMDggNDcgMzAgMzMgNDIgMTIgMkMgMDQgIC4uLkxOS0QuLkcwM0IuLC4K
ICAgIDFDMjA6IDEyIDA5IDA0IDBCIEZGIEZGIDAwIDAwIDBBIDgwIDEyIDA5IDA0IDBCIEZGIEZG
ICAuLi4uLi4uLi4uLi4uLi4uCiAgICAxQzMwOiAwMSAwMCAwQSA4MSAxMiAwQSAwNCAwQiBGRiBG
RiAwQSAwMiAwMCAwQSA4MiAxMiAgLi4uLi4uLi4uLi4uLi4uLgogICAgMUM0MDogMEEgMDQgMEIg
RkYgRkYgMEEgMDMgMDAgMEEgODMgMDggNTAgMzAgMzQgMzQgMTIgIC4uLi4uLi4uLi4uUDA0NC4K
ICAgIDFDNTA6IDM0IDA0IDEyIDBCIDA0IDBCIEZGIEZGIDAwIDRDIDRFIDRCIDQ1IDAwIDEyIDBC
ICA0Li4uLi4uLi5MTktFLi4uCiAgICAxQzYwOiAwNCAwQiBGRiBGRiAwMSA0QyA0RSA0QiA0NiAw
MCAxMiAwQyAwNCAwQiBGRiBGRiAgLi4uLi5MTktGLi4uLi4uLgogICAgMUM3MDogMEEgMDIgNEMg
NEUgNEIgNDcgMDAgMTIgMEMgMDQgMEIgRkYgRkYgMEEgMDMgNEMgIC4uTE5LRy4uLi4uLi4uLkwK
ICAgIDFDODA6IDRFIDRCIDQ4IDAwIDA4IDQ3IDMwIDM0IDM0IDEyIDJDIDA0IDEyIDA5IDA0IDBC
ICBOS0guLkcwNDQuLC4uLi4uCiAgICAxQzkwOiBGRiBGRiAwMCAwMCAwQSA4NCAxMiAwOSAwNCAw
QiBGRiBGRiAwMSAwMCAwQSA4NSAgLi4uLi4uLi4uLi4uLi4uLgogICAgMUNBMDogMTIgMEEgMDQg
MEIgRkYgRkYgMEEgMDIgMDAgMEEgODYgMTIgMEEgMDQgMEIgRkYgIC4uLi4uLi4uLi4uLi4uLi4K
ICAgIDFDQjA6IEZGIDBBIDAzIDAwIDBBIDg3IDA4IDUwIDQ0IDMwIDMyIDEyIDQxIDExIDEzIDEy
ICAuLi4uLi4uUEQwMi5BLi4uCiAgICAxQ0MwOiAwQiAwNCAwQiBGRiBGRiAwMCA0QyA0RSA0QiA0
MiAwMCAxMiAwRCAwNCAwQyBGRiAgLi4uLi4uTE5LQi4uLi4uLgogICAgMUNEMDogRkYgMDEgMDAg
MDAgNEMgNEUgNEIgNDEgMDAgMTIgMEQgMDQgMEMgRkYgRkYgMDEgIC4uLi5MTktBLi4uLi4uLi4K
ICAgIDFDRTA6IDAwIDAxIDRDIDRFIDRCIDQxIDAwIDEyIDBFIDA0IDBDIEZGIEZGIDAxIDAwIDBB
ICAuLkxOS0EuLi4uLi4uLi4uCiAgICAxQ0YwOiAwMiA0QyA0RSA0QiA0MSAwMCAxMiAwRSAwNCAw
QyBGRiBGRiAwMSAwMCAwQSAwMyAgLkxOS0EuLi4uLi4uLi4uLgogICAgMUQwMDogNEMgNEUgNEIg
NDEgMDAgMTIgMEQgMDQgMEMgRkYgRkYgMDIgMDAgMDAgNEMgNEUgIExOS0EuLi4uLi4uLi4uTE4K
ICAgIDFEMTA6IDRCIDQxIDAwIDEyIDBEIDA0IDBDIEZGIEZGIDAyIDAwIDAxIDRDIDRFIDRCIDQx
ICBLQS4uLi4uLi4uLi5MTktBCiAgICAxRDIwOiAwMCAxMiAwRCAwNCAwQyBGRiBGRiAwMyAwMCAw
MCA0QyA0RSA0QiA0MiAwMCAxMiAgLi4uLi4uLi4uLkxOS0IuLgogICAgMUQzMDogMEQgMDQgMEMg
RkYgRkYgMDMgMDAgMDEgNEMgNEUgNEIgNDIgMDAgMTIgMEUgMDQgIC4uLi4uLi4uTE5LQi4uLi4K
ICAgIDFENDA6IDBDIEZGIEZGIDAzIDAwIDBBIDAyIDRDIDRFIDRCIDQyIDAwIDEyIDBFIDA0IDBD
ICAuLi4uLi4uTE5LQi4uLi4uCiAgICAxRDUwOiBGRiBGRiAwMyAwMCAwQSAwMyA0QyA0RSA0QiA0
MiAwMCAxMiAwRCAwNCAwQyBGRiAgLi4uLi4uTE5LQi4uLi4uLgogICAgMUQ2MDogRkYgMDQgMDAg
MDAgNEMgNEUgNEIgNDIgMDAgMTIgMEQgMDQgMEMgRkYgRkYgMDQgIC4uLi5MTktCLi4uLi4uLi4K
ICAgIDFENzA6IDAwIDAxIDRDIDRFIDRCIDQyIDAwIDEyIDBEIDA0IDBDIEZGIEZGIDA1IDAwIDAw
ICAuLkxOS0IuLi4uLi4uLi4uCiAgICAxRDgwOiA0QyA0RSA0QiA0MyAwMCAxMiAwRCAwNCAwQyBG
RiBGRiAwNSAwMCAwMSA0QyA0RSAgTE5LQy4uLi4uLi4uLi5MTgogICAgMUQ5MDogNEIgNDMgMDAg
MTIgMEUgMDQgMEMgRkYgRkYgMDUgMDAgMEEgMDIgNEMgNEUgNEIgIEtDLi4uLi4uLi4uLi5MTksK
ICAgIDFEQTA6IDQzIDAwIDEyIDBFIDA0IDBDIEZGIEZGIDA1IDAwIDBBIDAzIDRDIDRFIDRCIDQz
ICBDLi4uLi4uLi4uLi5MTktDCiAgICAxREIwOiAwMCAxMiAwRCAwNCAwQyBGRiBGRiAwNyAwMCAw
MCA0QyA0RSA0QiA0NCAwMCAxMiAgLi4uLi4uLi4uLkxOS0QuLgogICAgMURDMDogMEQgMDQgMEMg
RkYgRkYgMDcgMDAgMDEgNEMgNEUgNEIgNDQgMDAgMDggNDEgNTIgIC4uLi4uLi4uTE5LRC4uQVIK
ICAgIDFERDA6IDMwIDMyIDEyIDRCIDBFIDEzIDEyIDA5IDA0IDBCIEZGIEZGIDAwIDAwIDBBIDU5
ICAwMi5LLi4uLi4uLi4uLi5ZCiAgICAxREUwOiAxMiAwQiAwNCAwQyBGRiBGRiAwMSAwMCAwMCAw
MCAwQSA1OCAxMiAwQiAwNCAwQyAgLi4uLi4uLi4uLi5YLi4uLgogICAgMURGMDogRkYgRkYgMDEg
MDAgMDEgMDAgMEEgNTggMTIgMEMgMDQgMEMgRkYgRkYgMDEgMDAgIC4uLi4uLi5YLi4uLi4uLi4K
ICAgIDFFMDA6IDBBIDAyIDAwIDBBIDU4IDEyIDBDIDA0IDBDIEZGIEZGIDAxIDAwIDBBIDAzIDAw
ICAuLi4uWC4uLi4uLi4uLi4uCiAgICAxRTEwOiAwQSA1OCAxMiAwQiAwNCAwQyBGRiBGRiAwMiAw
MCAwMCAwMCAwQSA1OCAxMiAwQiAgLlguLi4uLi4uLi4uLlguLgogICAgMUUyMDogMDQgMEMgRkYg
RkYgMDIgMDAgMDEgMDAgMEEgNTggMTIgMEIgMDQgMEMgRkYgRkYgIC4uLi4uLi4uLlguLi4uLi4K
ICAgIDFFMzA6IDAzIDAwIDAwIDAwIDBBIDU5IDEyIDBCIDA0IDBDIEZGIEZGIDAzIDAwIDAxIDAw
ICAuLi4uLlkuLi4uLi4uLi4uCiAgICAxRTQwOiAwQSA1OSAxMiAwQyAwNCAwQyBGRiBGRiAwMyAw
MCAwQSAwMiAwMCAwQSA1OSAxMiAgLlkuLi4uLi4uLi4uLi5ZLgogICAgMUU1MDogMEMgMDQgMEMg
RkYgRkYgMDMgMDAgMEEgMDMgMDAgMEEgNTkgMTIgMEIgMDQgMEMgIC4uLi4uLi4uLi4uWS4uLi4K
ICAgIDFFNjA6IEZGIEZGIDA0IDAwIDAwIDAwIDBBIDU5IDEyIDBCIDA0IDBDIEZGIEZGIDA0IDAw
ICAuLi4uLi4uWS4uLi4uLi4uCiAgICAxRTcwOiAwMSAwMCAwQSA1OSAxMiAwQiAwNCAwQyBGRiBG
RiAwNSAwMCAwMCAwMCAwQSA1QSAgLi4uWS4uLi4uLi4uLi4uWgogICAgMUU4MDogMTIgMEIgMDQg
MEMgRkYgRkYgMDUgMDAgMDEgMDAgMEEgNUEgMTIgMEMgMDQgMEMgIC4uLi4uLi4uLi4uWi4uLi4K
ICAgIDFFOTA6IEZGIEZGIDA1IDAwIDBBIDAyIDAwIDBBIDVBIDEyIDBDIDA0IDBDIEZGIEZGIDA1
ICAuLi4uLi4uLlouLi4uLi4uCiAgICAxRUEwOiAwMCAwQSAwMyAwMCAwQSA1QSAxMiAwQiAwNCAw
QyBGRiBGRiAwNyAwMCAwMCAwMCAgLi4uLi5aLi4uLi4uLi4uLgogICAgMUVCMDogMEEgNUIgMTIg
MEIgMDQgMEMgRkYgRkYgMDcgMDAgMDEgMDAgMEEgNUIgMDggNTAgIC5bLi4uLi4uLi4uLi5bLlAK
ICAgIDFFQzA6IDMwIDM0IDQxIDEyIDM0IDA0IDEyIDBCIDA0IDBCIEZGIEZGIDAwIDRDIDRFIDRC
ICAwNEEuNC4uLi4uLi4uTE5LCiAgICAxRUQwOiA0MSAwMCAxMiAwQiAwNCAwQiBGRiBGRiAwMSA0
QyA0RSA0QiA0MiAwMCAxMiAwQyAgQS4uLi4uLi4uTE5LQi4uLgogICAgMUVFMDogMDQgMEIgRkYg
RkYgMEEgMDIgNEMgNEUgNEIgNDMgMDAgMTIgMEMgMDQgMEIgRkYgIC4uLi4uLkxOS0MuLi4uLi4K
ICAgIDFFRjA6IEZGIDBBIDAzIDRDIDRFIDRCIDQ0IDAwIDA4IDQ3IDMwIDM0IDQxIDEyIDJDIDA0
ICAuLi5MTktELi5HMDRBLiwuCiAgICAxRjAwOiAxMiAwOSAwNCAwQiBGRiBGRiAwMCAwMCAwQSA1
OCAxMiAwOSAwNCAwQiBGRiBGRiAgLi4uLi4uLi4uWC4uLi4uLgogICAgMUYxMDogMDEgMDAgMEEg
NTkgMTIgMEEgMDQgMEIgRkYgRkYgMEEgMDIgMDAgMEEgNUEgMTIgIC4uLlkuLi4uLi4uLi4uWi4K
ICAgIDFGMjA6IDBBIDA0IDBCIEZGIEZGIDBBIDAzIDAwIDBBIDVCIDA4IDUwIDMwIDM0IDQyIDEy
ICAuLi4uLi4uLi5bLlAwNEIuCiAgICAxRjMwOiAzNCAwNCAxMiAwQiAwNCAwQiBGRiBGRiAwMCA0
QyA0RSA0QiA0NSAwMCAxMiAwQiAgNC4uLi4uLi4uTE5LRS4uLgogICAgMUY0MDogMDQgMEIgRkYg
RkYgMDEgNEMgNEUgNEIgNDYgMDAgMTIgMEMgMDQgMEIgRkYgRkYgIC4uLi4uTE5LRi4uLi4uLi4K
ICAgIDFGNTA6IDBBIDAyIDRDIDRFIDRCIDQ3IDAwIDEyIDBDIDA0IDBCIEZGIEZGIDBBIDAzIDRD
ICAuLkxOS0cuLi4uLi4uLi5MCiAgICAxRjYwOiA0RSA0QiA0OCAwMCAwOCA0NyAzMCAzNCA0MiAx
MiAyQyAwNCAxMiAwOSAwNCAwQiAgTktILi5HMDRCLiwuLi4uLgogICAgMUY3MDogRkYgRkYgMDAg
MDAgMEEgNUMgMTIgMDkgMDQgMEIgRkYgRkYgMDEgMDAgMEEgNUQgIC4uLi4uXC4uLi4uLi4uLl0K
ICAgIDFGODA6IDEyIDBBIDA0IDBCIEZGIEZGIDBBIDAyIDAwIDBBIDVFIDEyIDBBIDA0IDBCIEZG
ICAuLi4uLi4uLi4uXi4uLi4uCiAgICAxRjkwOiBGRiAwQSAwMyAwMCAwQSA1RiAwOCA1MCAzMCAz
NCA0MyAxMiAzNCAwNCAxMiAwQiAgLi4uLi5fLlAwNEMuNC4uLgogICAgMUZBMDogMDQgMEIgRkYg
RkYgMDAgNEMgNEUgNEIgNDEgMDAgMTIgMEIgMDQgMEIgRkYgRkYgIC4uLi4uTE5LQS4uLi4uLi4K
ICAgIDFGQjA6IDAxIDRDIDRFIDRCIDQyIDAwIDEyIDBDIDA0IDBCIEZGIEZGIDBBIDAyIDRDIDRF
ICAuTE5LQi4uLi4uLi4uLkxOCiAgICAxRkMwOiA0QiA0MyAwMCAxMiAwQyAwNCAwQiBGRiBGRiAw
QSAwMyA0QyA0RSA0QiA0NCAwMCAgS0MuLi4uLi4uLi5MTktELgogICAgMUZEMDogMDggNDcgMzAg
MzQgNDMgMTIgMkMgMDQgMTIgMDkgMDQgMEIgRkYgRkYgMDAgMDAgIC5HMDRDLiwuLi4uLi4uLi4K
ICAgIDFGRTA6IDBBIDYwIDEyIDA5IDA0IDBCIEZGIEZGIDAxIDAwIDBBIDYxIDEyIDBBIDA0IDBC
ICAuYC4uLi4uLi4uLmEuLi4uCiAgICAxRkYwOiBGRiBGRiAwQSAwMiAwMCAwQSA2MiAxMiAwQSAw
NCAwQiBGRiBGRiAwQSAwMyAwMCAgLi4uLi4uYi4uLi4uLi4uLgogICAgMjAwMDogMEEgNjMgMDgg
NTAgMzAgMzQgNDQgMTIgMzQgMDQgMTIgMEIgMDQgMEIgRkYgRkYgIC5jLlAwNEQuNC4uLi4uLi4K
ICAgIDIwMTA6IDAwIDRDIDRFIDRCIDQ1IDAwIDEyIDBCIDA0IDBCIEZGIEZGIDAxIDRDIDRFIDRC
ICAuTE5LRS4uLi4uLi4uTE5LCiAgICAyMDIwOiA0NiAwMCAxMiAwQyAwNCAwQiBGRiBGRiAwQSAw
MiA0QyA0RSA0QiA0NyAwMCAxMiAgRi4uLi4uLi4uLkxOS0cuLgogICAgMjAzMDogMEMgMDQgMEIg
RkYgRkYgMEEgMDMgNEMgNEUgNEIgNDggMDAgMDggNDcgMzAgMzQgIC4uLi4uLi5MTktILi5HMDQK
ICAgIDIwNDA6IDQ0IDEyIDJDIDA0IDEyIDA5IDA0IDBCIEZGIEZGIDAwIDAwIDBBIDY0IDEyIDA5
ICBELiwuLi4uLi4uLi4uZC4uCiAgICAyMDUwOiAwNCAwQiBGRiBGRiAwMSAwMCAwQSA2NSAxMiAw
QSAwNCAwQiBGRiBGRiAwQSAwMiAgLi4uLi4uLmUuLi4uLi4uLgogICAgMjA2MDogMDAgMEEgNjYg
MTIgMEEgMDQgMEIgRkYgRkYgMEEgMDMgMDAgMEEgNjcgMDggNTAgIC4uZi4uLi4uLi4uLi5nLlAK
ICAgIDIwNzA6IDMwIDM0IDQ1IDEyIDM0IDA0IDEyIDBCIDA0IDBCIEZGIEZGIDAwIDRDIDRFIDRC
ICAwNEUuNC4uLi4uLi4uTE5LCiAgICAyMDgwOiA0MSAwMCAxMiAwQiAwNCAwQiBGRiBGRiAwMSA0
QyA0RSA0QiA0MiAwMCAxMiAwQyAgQS4uLi4uLi4uTE5LQi4uLgogICAgMjA5MDogMDQgMEIgRkYg
RkYgMEEgMDIgNEMgNEUgNEIgNDMgMDAgMTIgMEMgMDQgMEIgRkYgIC4uLi4uLkxOS0MuLi4uLi4K
ICAgIDIwQTA6IEZGIDBBIDAzIDRDIDRFIDRCIDQ0IDAwIDA4IDQ3IDMwIDM0IDQ1IDEyIDJDIDA0
ICAuLi5MTktELi5HMDRFLiwuCiAgICAyMEIwOiAxMiAwOSAwNCAwQiBGRiBGRiAwMCAwMCAwQSA2
OCAxMiAwOSAwNCAwQiBGRiBGRiAgLi4uLi4uLi4uaC4uLi4uLgogICAgMjBDMDogMDEgMDAgMEEg
NjkgMTIgMEEgMDQgMEIgRkYgRkYgMEEgMDIgMDAgMEEgNkEgMTIgIC4uLmkuLi4uLi4uLi4uai4K
ICAgIDIwRDA6IDBBIDA0IDBCIEZGIEZGIDBBIDAzIDAwIDBBIDZCIDA4IDUwIDMwIDM0IDQ2IDEy
ICAuLi4uLi4uLi5rLlAwNEYuCiAgICAyMEUwOiAzNCAwNCAxMiAwQiAwNCAwQiBGRiBGRiAwMCA0
QyA0RSA0QiA0MyAwMCAxMiAwQiAgNC4uLi4uLi4uTE5LQy4uLgogICAgMjBGMDogMDQgMEIgRkYg
RkYgMDEgNEMgNEUgNEIgNDQgMDAgMTIgMEMgMDQgMEIgRkYgRkYgIC4uLi4uTE5LRC4uLi4uLi4K
ICAgIDIxMDA6IDBBIDAyIDRDIDRFIDRCIDQxIDAwIDEyIDBDIDA0IDBCIEZGIEZGIDBBIDAzIDRD
ICAuLkxOS0EuLi4uLi4uLi5MCiAgICAyMTEwOiA0RSA0QiA0MiAwMCAwOCA0NyAzMCAzNCA0NiAx
MiAyQyAwNCAxMiAwOSAwNCAwQiAgTktCLi5HMDRGLiwuLi4uLgogICAgMjEyMDogRkYgRkYgMDAg
MDAgMEEgNkEgMTIgMDkgMDQgMEIgRkYgRkYgMDEgMDAgMEEgNkIgIC4uLi4uai4uLi4uLi4uLmsK
ICAgIDIxMzA6IDEyIDBBIDA0IDBCIEZGIEZGIDBBIDAyIDAwIDBBIDY4IDEyIDBBIDA0IDBCIEZG
ICAuLi4uLi4uLi4uaC4uLi4uCiAgICAyMTQwOiBGRiAwQSAwMyAwMCAwQSA2OSAwOCA1MCAzMCAz
NSAzMCAxMiAzNCAwNCAxMiAwQiAgLi4uLi5pLlAwNTAuNC4uLgogICAgMjE1MDogMDQgMEIgRkYg
RkYgMDAgNEMgNEUgNEIgNDcgMDAgMTIgMEIgMDQgMEIgRkYgRkYgIC4uLi4uTE5LRy4uLi4uLi4K
ICAgIDIxNjA6IDAxIDRDIDRFIDRCIDQ4IDAwIDEyIDBDIDA0IDBCIEZGIEZGIDBBIDAyIDRDIDRF
ICAuTE5LSC4uLi4uLi4uLkxOCiAgICAyMTcwOiA0QiA0NSAwMCAxMiAwQyAwNCAwQiBGRiBGRiAw
QSAwMyA0QyA0RSA0QiA0NiAwMCAgS0UuLi4uLi4uLi5MTktGLgogICAgMjE4MDogMDggNDcgMzAg
MzUgMzAgMTIgMkMgMDQgMTIgMDkgMDQgMEIgRkYgRkYgMDAgMDAgIC5HMDUwLiwuLi4uLi4uLi4K
ICAgIDIxOTA6IDBBIDY2IDEyIDA5IDA0IDBCIEZGIEZGIDAxIDAwIDBBIDY3IDEyIDBBIDA0IDBC
ICAuZi4uLi4uLi4uLmcuLi4uCiAgICAyMUEwOiBGRiBGRiAwQSAwMiAwMCAwQSA2NCAxMiAwQSAw
NCAwQiBGRiBGRiAwQSAwMyAwMCAgLi4uLi4uZC4uLi4uLi4uLgogICAgMjFCMDogMEEgNjUgMDgg
NTAgMzAgMzUgMzEgMTIgMzQgMDQgMTIgMEIgMDQgMEIgRkYgRkYgIC5lLlAwNTEuNC4uLi4uLi4K
ICAgIDIxQzA6IDAwIDRDIDRFIDRCIDQzIDAwIDEyIDBCIDA0IDBCIEZGIEZGIDAxIDRDIDRFIDRC
ICAuTE5LQy4uLi4uLi4uTE5LCiAgICAyMUQwOiA0NCAwMCAxMiAwQyAwNCAwQiBGRiBGRiAwQSAw
MiA0QyA0RSA0QiA0MSAwMCAxMiAgRC4uLi4uLi4uLkxOS0EuLgogICAgMjFFMDogMEMgMDQgMEIg
RkYgRkYgMEEgMDMgNEMgNEUgNEIgNDIgMDAgMDggNDcgMzAgMzUgIC4uLi4uLi5MTktCLi5HMDUK
ICAgIDIxRjA6IDMxIDEyIDJDIDA0IDEyIDA5IDA0IDBCIEZGIEZGIDAwIDAwIDBBIDYyIDEyIDA5
ICAxLiwuLi4uLi4uLi4uYi4uCiAgICAyMjAwOiAwNCAwQiBGRiBGRiAwMSAwMCAwQSA2MyAxMiAw
QSAwNCAwQiBGRiBGRiAwQSAwMiAgLi4uLi4uLmMuLi4uLi4uLgogICAgMjIxMDogMDAgMEEgNjAg
MTIgMEEgMDQgMEIgRkYgRkYgMEEgMDMgMDAgMEEgNjEgMDggNTAgIC4uYC4uLi4uLi4uLi5hLlAK
ICAgIDIyMjA6IDMwIDM1IDMyIDEyIDM0IDA0IDEyIDBCIDA0IDBCIEZGIEZGIDAwIDRDIDRFIDRC
ICAwNTIuNC4uLi4uLi4uTE5LCiAgICAyMjMwOiA0NyAwMCAxMiAwQiAwNCAwQiBGRiBGRiAwMSA0
QyA0RSA0QiA0OCAwMCAxMiAwQyAgRy4uLi4uLi4uTE5LSC4uLgogICAgMjI0MDogMDQgMEIgRkYg
RkYgMEEgMDIgNEMgNEUgNEIgNDUgMDAgMTIgMEMgMDQgMEIgRkYgIC4uLi4uLkxOS0UuLi4uLi4K
ICAgIDIyNTA6IEZGIDBBIDAzIDRDIDRFIDRCIDQ2IDAwIDA4IDQ3IDMwIDM1IDMyIDEyIDJDIDA0
ICAuLi5MTktGLi5HMDUyLiwuCiAgICAyMjYwOiAxMiAwOSAwNCAwQiBGRiBGRiAwMCAwMCAwQSA1
RSAxMiAwOSAwNCAwQiBGRiBGRiAgLi4uLi4uLi4uXi4uLi4uLgogICAgMjI3MDogMDEgMDAgMEEg
NUYgMTIgMEEgMDQgMEIgRkYgRkYgMEEgMDIgMDAgMEEgNUMgMTIgIC4uLl8uLi4uLi4uLi4uXC4K
ICAgIDIyODA6IDBBIDA0IDBCIEZGIEZGIDBBIDAzIDAwIDBBIDVEIDA4IDUwIDMwIDM1IDMzIDEy
ICAuLi4uLi4uLi5dLlAwNTMuCiAgICAyMjkwOiAzNCAwNCAxMiAwQiAwNCAwQiBGRiBGRiAwMCA0
QyA0RSA0QiA0MyAwMCAxMiAwQiAgNC4uLi4uLi4uTE5LQy4uLgogICAgMjJBMDogMDQgMEIgRkYg
RkYgMDEgNEMgNEUgNEIgNDQgMDAgMTIgMEMgMDQgMEIgRkYgRkYgIC4uLi4uTE5LRC4uLi4uLi4K
ICAgIDIyQjA6IDBBIDAyIDRDIDRFIDRCIDQxIDAwIDEyIDBDIDA0IDBCIEZGIEZGIDBBIDAzIDRD
ICAuLkxOS0EuLi4uLi4uLi5MCiAgICAyMkMwOiA0RSA0QiA0MiAwMCAwOCA0NyAzMCAzNSAzMyAx
MiAyQyAwNCAxMiAwOSAwNCAwQiAgTktCLi5HMDUzLiwuLi4uLgogICAgMjJEMDogRkYgRkYgMDAg
MDAgMEEgNUEgMTIgMDkgMDQgMEIgRkYgRkYgMDEgMDAgMEEgNUIgIC4uLi4uWi4uLi4uLi4uLlsK
ICAgIDIyRTA6IDEyIDBBIDA0IDBCIEZGIEZGIDBBIDAyIDAwIDBBIDU4IDEyIDBBIDA0IDBCIEZG
ICAuLi4uLi4uLi4uWC4uLi4uCiAgICAyMkYwOiBGRiAwQSAwMyAwMCAwQSA1OSAwOCA1MCAzMCAz
NSAzNCAxMiAzNCAwNCAxMiAwQiAgLi4uLi5ZLlAwNTQuNC4uLgogICAgMjMwMDogMDQgMEIgRkYg
RkYgMDAgNEMgNEUgNEIgNDIgMDAgMTIgMEIgMDQgMEIgRkYgRkYgIC4uLi4uTE5LQi4uLi4uLi4K
ICAgIDIzMTA6IDAxIDRDIDRFIDRCIDQzIDAwIDEyIDBDIDA0IDBCIEZGIEZGIDBBIDAyIDRDIDRF
ICAuTE5LQy4uLi4uLi4uLkxOCiAgICAyMzIwOiA0QiA0NCAwMCAxMiAwQyAwNCAwQiBGRiBGRiAw
QSAwMyA0QyA0RSA0QiA0MSAwMCAgS0QuLi4uLi4uLi5MTktBLgogICAgMjMzMDogMDggNDcgMzAg
MzUgMzQgMTIgMkMgMDQgMTIgMDkgMDQgMEIgRkYgRkYgMDAgMDAgIC5HMDU0LiwuLi4uLi4uLi4K
ICAgIDIzNDA6IDBBIDU5IDEyIDA5IDA0IDBCIEZGIEZGIDAxIDAwIDBBIDVBIDEyIDBBIDA0IDBC
ICAuWS4uLi4uLi4uLlouLi4uCiAgICAyMzUwOiBGRiBGRiAwQSAwMiAwMCAwQSA1QiAxMiAwQSAw
NCAwQiBGRiBGRiAwQSAwMyAwMCAgLi4uLi4uWy4uLi4uLi4uLgogICAgMjM2MDogMEEgNTggMDgg
NTAgMzAgMzUgMzUgMTIgMzQgMDQgMTIgMEIgMDQgMEIgRkYgRkYgIC5YLlAwNTUuNC4uLi4uLi4K
ICAgIDIzNzA6IDAwIDRDIDRFIDRCIDQ2IDAwIDEyIDBCIDA0IDBCIEZGIEZGIDAxIDRDIDRFIDRC
ICAuTE5LRi4uLi4uLi4uTE5LCiAgICAyMzgwOiA0NyAwMCAxMiAwQyAwNCAwQiBGRiBGRiAwQSAw
MiA0QyA0RSA0QiA0OCAwMCAxMiAgRy4uLi4uLi4uLkxOS0guLgogICAgMjM5MDogMEMgMDQgMEIg
RkYgRkYgMEEgMDMgNEMgNEUgNEIgNDUgMDAgMDggNDcgMzAgMzUgIC4uLi4uLi5MTktFLi5HMDUK
ICAgIDIzQTA6IDM1IDEyIDJDIDA0IDEyIDA5IDA0IDBCIEZGIEZGIDAwIDAwIDBBIDVEIDEyIDA5
ICA1LiwuLi4uLi4uLi4uXS4uCiAgICAyM0IwOiAwNCAwQiBGRiBGRiAwMSAwMCAwQSA1RSAxMiAw
QSAwNCAwQiBGRiBGRiAwQSAwMiAgLi4uLi4uLl4uLi4uLi4uLgogICAgMjNDMDogMDAgMEEgNUYg
MTIgMEEgMDQgMEIgRkYgRkYgMEEgMDMgMDAgMEEgNUMgMDggNTAgIC4uXy4uLi4uLi4uLi5cLlAK
ICAgIDIzRDA6IDMwIDM1IDM2IDEyIDM0IDA0IDEyIDBCIDA0IDBCIEZGIEZGIDAwIDRDIDRFIDRC
ICAwNTYuNC4uLi4uLi4uTE5LCiAgICAyM0UwOiA0MiAwMCAxMiAwQiAwNCAwQiBGRiBGRiAwMSA0
QyA0RSA0QiA0MyAwMCAxMiAwQyAgQi4uLi4uLi4uTE5LQy4uLgogICAgMjNGMDogMDQgMEIgRkYg
RkYgMEEgMDIgNEMgNEUgNEIgNDQgMDAgMTIgMEMgMDQgMEIgRkYgIC4uLi4uLkxOS0QuLi4uLi4K
ICAgIDI0MDA6IEZGIDBBIDAzIDRDIDRFIDRCIDQxIDAwIDA4IDQ3IDMwIDM1IDM2IDEyIDJDIDA0
ICAuLi5MTktBLi5HMDU2LiwuCiAgICAyNDEwOiAxMiAwOSAwNCAwQiBGRiBGRiAwMCAwMCAwQSA2
MSAxMiAwOSAwNCAwQiBGRiBGRiAgLi4uLi4uLi4uYS4uLi4uLgogICAgMjQyMDogMDEgMDAgMEEg
NjIgMTIgMEEgMDQgMEIgRkYgRkYgMEEgMDIgMDAgMEEgNjMgMTIgIC4uLmIuLi4uLi4uLi4uYy4K
ICAgIDI0MzA6IDBBIDA0IDBCIEZGIEZGIDBBIDAzIDAwIDBBIDYwIDA4IDUwIDMwIDM1IDM3IDEy
ICAuLi4uLi4uLi5gLlAwNTcuCiAgICAyNDQwOiAzNCAwNCAxMiAwQiAwNCAwQiBGRiBGRiAwMCA0
QyA0RSA0QiA0NiAwMCAxMiAwQiAgNC4uLi4uLi4uTE5LRi4uLgogICAgMjQ1MDogMDQgMEIgRkYg
RkYgMDEgNEMgNEUgNEIgNDcgMDAgMTIgMEMgMDQgMEIgRkYgRkYgIC4uLi4uTE5LRy4uLi4uLi4K
ICAgIDI0NjA6IDBBIDAyIDRDIDRFIDRCIDQ4IDAwIDEyIDBDIDA0IDBCIEZGIEZGIDBBIDAzIDRD
ICAuLkxOS0guLi4uLi4uLi5MCiAgICAyNDcwOiA0RSA0QiA0NSAwMCAwOCA0NyAzMCAzNSAzNyAx
MiAyQyAwNCAxMiAwOSAwNCAwQiAgTktFLi5HMDU3LiwuLi4uLgogICAgMjQ4MDogRkYgRkYgMDAg
MDAgMEEgNjUgMTIgMDkgMDQgMEIgRkYgRkYgMDEgMDAgMEEgNjYgIC4uLi4uZS4uLi4uLi4uLmYK
ICAgIDI0OTA6IDEyIDBBIDA0IDBCIEZGIEZGIDBBIDAyIDAwIDBBIDY3IDEyIDBBIDA0IDBCIEZG
ICAuLi4uLi4uLi4uZy4uLi4uCiAgICAyNEEwOiBGRiAwQSAwMyAwMCAwQSA2NCAwOCA1MCAzMCAz
NSAzOCAxMiAzNCAwNCAxMiAwQiAgLi4uLi5kLlAwNTguNC4uLgogICAgMjRCMDogMDQgMEIgRkYg
RkYgMDAgNEMgNEUgNEIgNDIgMDAgMTIgMEIgMDQgMEIgRkYgRkYgIC4uLi4uTE5LQi4uLi4uLi4K
ICAgIDI0QzA6IDAxIDRDIDRFIDRCIDQzIDAwIDEyIDBDIDA0IDBCIEZGIEZGIDBBIDAyIDRDIDRF
ICAuTE5LQy4uLi4uLi4uLkxOCiAgICAyNEQwOiA0QiA0NCAwMCAxMiAwQyAwNCAwQiBGRiBGRiAw
QSAwMyA0QyA0RSA0QiA0MSAwMCAgS0QuLi4uLi4uLi5MTktBLgogICAgMjRFMDogMDggNDcgMzAg
MzUgMzggMTIgMkMgMDQgMTIgMDkgMDQgMEIgRkYgRkYgMDAgMDAgIC5HMDU4LiwuLi4uLi4uLi4K
ICAgIDI0RjA6IDBBIDY5IDEyIDA5IDA0IDBCIEZGIEZGIDAxIDAwIDBBIDZBIDEyIDBBIDA0IDBC
ICAuaS4uLi4uLi4uLmouLi4uCiAgICAyNTAwOiBGRiBGRiAwQSAwMiAwMCAwQSA2QiAxMiAwQSAw
NCAwQiBGRiBGRiAwQSAwMyAwMCAgLi4uLi4uay4uLi4uLi4uLgogICAgMjUxMDogMEEgNjggMDgg
NTAgMzAgMzUgMzkgMTIgMzQgMDQgMTIgMEIgMDQgMEIgRkYgRkYgIC5oLlAwNTkuNC4uLi4uLi4K
ICAgIDI1MjA6IDAwIDRDIDRFIDRCIDQ0IDAwIDEyIDBCIDA0IDBCIEZGIEZGIDAxIDRDIDRFIDRC
ICAuTE5LRC4uLi4uLi4uTE5LCiAgICAyNTMwOiA0MSAwMCAxMiAwQyAwNCAwQiBGRiBGRiAwQSAw
MiA0QyA0RSA0QiA0MiAwMCAxMiAgQS4uLi4uLi4uLkxOS0IuLgogICAgMjU0MDogMEMgMDQgMEIg
RkYgRkYgMEEgMDMgNEMgNEUgNEIgNDMgMDAgMDggNDcgMzAgMzUgIC4uLi4uLi5MTktDLi5HMDUK
ICAgIDI1NTA6IDM5IDEyIDJDIDA0IDEyIDA5IDA0IDBCIEZGIEZGIDAwIDAwIDBBIDZCIDEyIDA5
ICA5LiwuLi4uLi4uLi4uay4uCiAgICAyNTYwOiAwNCAwQiBGRiBGRiAwMSAwMCAwQSA2OCAxMiAw
QSAwNCAwQiBGRiBGRiAwQSAwMiAgLi4uLi4uLmguLi4uLi4uLgogICAgMjU3MDogMDAgMEEgNjkg
MTIgMEEgMDQgMEIgRkYgRkYgMEEgMDMgMDAgMEEgNkEgMDggNTAgIC4uaS4uLi4uLi4uLi5qLlAK
ICAgIDI1ODA6IDMwIDM1IDQxIDEyIDM0IDA0IDEyIDBCIDA0IDBCIEZGIEZGIDAwIDRDIDRFIDRC
ICAwNUEuNC4uLi4uLi4uTE5LCiAgICAyNTkwOiA0OCAwMCAxMiAwQiAwNCAwQiBGRiBGRiAwMSA0
QyA0RSA0QiA0NSAwMCAxMiAwQyAgSC4uLi4uLi4uTE5LRS4uLgogICAgMjVBMDogMDQgMEIgRkYg
RkYgMEEgMDIgNEMgNEUgNEIgNDYgMDAgMTIgMEMgMDQgMEIgRkYgIC4uLi4uLkxOS0YuLi4uLi4K
ICAgIDI1QjA6IEZGIDBBIDAzIDRDIDRFIDRCIDQ3IDAwIDA4IDQ3IDMwIDM1IDQxIDEyIDJDIDA0
ICAuLi5MTktHLi5HMDVBLiwuCiAgICAyNUMwOiAxMiAwOSAwNCAwQiBGRiBGRiAwMCAwMCAwQSA2
NyAxMiAwOSAwNCAwQiBGRiBGRiAgLi4uLi4uLi4uZy4uLi4uLgogICAgMjVEMDogMDEgMDAgMEEg
NjQgMTIgMEEgMDQgMEIgRkYgRkYgMEEgMDIgMDAgMEEgNjUgMTIgIC4uLmQuLi4uLi4uLi4uZS4K
ICAgIDI1RTA6IDBBIDA0IDBCIEZGIEZGIDBBIDAzIDAwIDBBIDY2IDA4IDUwIDMwIDM1IDQyIDEy
ICAuLi4uLi4uLi5mLlAwNUIuCiAgICAyNUYwOiAzNCAwNCAxMiAwQiAwNCAwQiBGRiBGRiAwMCA0
QyA0RSA0QiA0NCAwMCAxMiAwQiAgNC4uLi4uLi4uTE5LRC4uLgogICAgMjYwMDogMDQgMEIgRkYg
RkYgMDEgNEMgNEUgNEIgNDEgMDAgMTIgMEMgMDQgMEIgRkYgRkYgIC4uLi4uTE5LQS4uLi4uLi4K
ICAgIDI2MTA6IDBBIDAyIDRDIDRFIDRCIDQyIDAwIDEyIDBDIDA0IDBCIEZGIEZGIDBBIDAzIDRD
ICAuLkxOS0IuLi4uLi4uLi5MCiAgICAyNjIwOiA0RSA0QiA0MyAwMCAwOCA0NyAzMCAzNSA0MiAx
MiAyQyAwNCAxMiAwOSAwNCAwQiAgTktDLi5HMDVCLiwuLi4uLgogICAgMjYzMDogRkYgRkYgMDAg
MDAgMEEgNjMgMTIgMDkgMDQgMEIgRkYgRkYgMDEgMDAgMEEgNjAgIC4uLi4uYy4uLi4uLi4uLmAK
ICAgIDI2NDA6IDEyIDBBIDA0IDBCIEZGIEZGIDBBIDAyIDAwIDBBIDYxIDEyIDBBIDA0IDBCIEZG
ICAuLi4uLi4uLi4uYS4uLi4uCiAgICAyNjUwOiBGRiAwQSAwMyAwMCAwQSA2MiAwOCA1MCAzMCAz
NSA0MyAxMiAzNCAwNCAxMiAwQiAgLi4uLi5iLlAwNUMuNC4uLgogICAgMjY2MDogMDQgMEIgRkYg
RkYgMDAgNEMgNEUgNEIgNDggMDAgMTIgMEIgMDQgMEIgRkYgRkYgIC4uLi4uTE5LSC4uLi4uLi4K
ICAgIDI2NzA6IDAxIDRDIDRFIDRCIDQ1IDAwIDEyIDBDIDA0IDBCIEZGIEZGIDBBIDAyIDRDIDRF
ICAuTE5LRS4uLi4uLi4uLkxOCiAgICAyNjgwOiA0QiA0NiAwMCAxMiAwQyAwNCAwQiBGRiBGRiAw
QSAwMyA0QyA0RSA0QiA0NyAwMCAgS0YuLi4uLi4uLi5MTktHLgogICAgMjY5MDogMDggNDcgMzAg
MzUgNDMgMTIgMkMgMDQgMTIgMDkgMDQgMEIgRkYgRkYgMDAgMDAgIC5HMDVDLiwuLi4uLi4uLi4K
ICAgIDI2QTA6IDBBIDVGIDEyIDA5IDA0IDBCIEZGIEZGIDAxIDAwIDBBIDVDIDEyIDBBIDA0IDBC
ICAuXy4uLi4uLi4uLlwuLi4uCiAgICAyNkIwOiBGRiBGRiAwQSAwMiAwMCAwQSA1RCAxMiAwQSAw
NCAwQiBGRiBGRiAwQSAwMyAwMCAgLi4uLi4uXS4uLi4uLi4uLgogICAgMjZDMDogMEEgNUUgMDgg
NTAgMzAgMzUgNDQgMTIgMzQgMDQgMTIgMEIgMDQgMEIgRkYgRkYgIC5eLlAwNUQuNC4uLi4uLi4K
ICAgIDI2RDA6IDAwIDRDIDRFIDRCIDQ0IDAwIDEyIDBCIDA0IDBCIEZGIEZGIDAxIDRDIDRFIDRC
ICAuTE5LRC4uLi4uLi4uTE5LCiAgICAyNkUwOiA0MSAwMCAxMiAwQyAwNCAwQiBGRiBGRiAwQSAw
MiA0QyA0RSA0QiA0MiAwMCAxMiAgQS4uLi4uLi4uLkxOS0IuLgogICAgMjZGMDogMEMgMDQgMEIg
RkYgRkYgMEEgMDMgNEMgNEUgNEIgNDMgMDAgMDggNDcgMzAgMzUgIC4uLi4uLi5MTktDLi5HMDUK
ICAgIDI3MDA6IDQ0IDEyIDJDIDA0IDEyIDA5IDA0IDBCIEZGIEZGIDAwIDAwIDBBIDVCIDEyIDA5
ICBELiwuLi4uLi4uLi4uWy4uCiAgICAyNzEwOiAwNCAwQiBGRiBGRiAwMSAwMCAwQSA1OCAxMiAw
QSAwNCAwQiBGRiBGRiAwQSAwMiAgLi4uLi4uLlguLi4uLi4uLgogICAgMjcyMDogMDAgMEEgNTkg
MTIgMEEgMDQgMEIgRkYgRkYgMEEgMDMgMDAgMEEgNUEgMDggNTAgIC4uWS4uLi4uLi4uLi5aLlAK
ICAgIDI3MzA6IDMwIDM1IDQ1IDEyIDM0IDA0IDEyIDBCIDA0IDBCIEZGIEZGIDAwIDRDIDRFIDRC
ICAwNUUuNC4uLi4uLi4uTE5LCiAgICAyNzQwOiA0MSAwMCAxMiAwQiAwNCAwQiBGRiBGRiAwMSA0
QyA0RSA0QiA0MiAwMCAxMiAwQyAgQS4uLi4uLi4uTE5LQi4uLgogICAgMjc1MDogMDQgMEIgRkYg
RkYgMEEgMDIgNEMgNEUgNEIgNDMgMDAgMTIgMEMgMDQgMEIgRkYgIC4uLi4uLkxOS0MuLi4uLi4K
ICAgIDI3NjA6IEZGIDBBIDAzIDRDIDRFIDRCIDQ0IDAwIDA4IDQ3IDMwIDM1IDQ1IDEyIDJDIDA0
ICAuLi5MTktELi5HMDVFLiwuCiAgICAyNzcwOiAxMiAwOSAwNCAwQiBGRiBGRiAwMCAwMCAwQSA1
OCAxMiAwOSAwNCAwQiBGRiBGRiAgLi4uLi4uLi4uWC4uLi4uLgogICAgMjc4MDogMDEgMDAgMEEg
NTkgMTIgMEEgMDQgMEIgRkYgRkYgMEEgMDIgMDAgMEEgNUEgMTIgIC4uLlkuLi4uLi4uLi4uWi4K
ICAgIDI3OTA6IDBBIDA0IDBCIEZGIEZGIDBBIDAzIDAwIDBBIDVCIDA4IDUwIDMwIDM1IDQ2IDEy
ICAuLi4uLi4uLi5bLlAwNUYuCiAgICAyN0EwOiAzNCAwNCAxMiAwQiAwNCAwQiBGRiBGRiAwMCA0
QyA0RSA0QiA0NSAwMCAxMiAwQiAgNC4uLi4uLi4uTE5LRS4uLgogICAgMjdCMDogMDQgMEIgRkYg
RkYgMDEgNEMgNEUgNEIgNDYgMDAgMTIgMEMgMDQgMEIgRkYgRkYgIC4uLi4uTE5LRi4uLi4uLi4K
ICAgIDI3QzA6IDBBIDAyIDRDIDRFIDRCIDQ3IDAwIDEyIDBDIDA0IDBCIEZGIEZGIDBBIDAzIDRD
ICAuLkxOS0cuLi4uLi4uLi5MCiAgICAyN0QwOiA0RSA0QiA0OCAwMCAwOCA0NyAzMCAzNSA0NiAx
MiAyQyAwNCAxMiAwOSAwNCAwQiAgTktILi5HMDVGLiwuLi4uLgogICAgMjdFMDogRkYgRkYgMDAg
MDAgMEEgNUMgMTIgMDkgMDQgMEIgRkYgRkYgMDEgMDAgMEEgNUQgIC4uLi4uXC4uLi4uLi4uLl0K
ICAgIDI3RjA6IDEyIDBBIDA0IDBCIEZGIEZGIDBBIDAyIDAwIDBBIDVFIDEyIDBBIDA0IDBCIEZG
ICAuLi4uLi4uLi4uXi4uLi4uCiAgICAyODAwOiBGRiAwQSAwMyAwMCAwQSA1RiAwOCA1MCAzMCAz
NiAzMCAxMiAzNCAwNCAxMiAwQiAgLi4uLi5fLlAwNjAuNC4uLgogICAgMjgxMDogMDQgMEIgRkYg
RkYgMDAgNEMgNEUgNEIgNDEgMDAgMTIgMEIgMDQgMEIgRkYgRkYgIC4uLi4uTE5LQS4uLi4uLi4K
ICAgIDI4MjA6IDAxIDRDIDRFIDRCIDQyIDAwIDEyIDBDIDA0IDBCIEZGIEZGIDBBIDAyIDRDIDRF
ICAuTE5LQi4uLi4uLi4uLkxOCiAgICAyODMwOiA0QiA0MyAwMCAxMiAwQyAwNCAwQiBGRiBGRiAw
QSAwMyA0QyA0RSA0QiA0NCAwMCAgS0MuLi4uLi4uLi5MTktELgogICAgMjg0MDogMDggNDcgMzAg
MzYgMzAgMTIgMkMgMDQgMTIgMDkgMDQgMEIgRkYgRkYgMDAgMDAgIC5HMDYwLiwuLi4uLi4uLi4K
ICAgIDI4NTA6IDBBIDYwIDEyIDA5IDA0IDBCIEZGIEZGIDAxIDAwIDBBIDYxIDEyIDBBIDA0IDBC
ICAuYC4uLi4uLi4uLmEuLi4uCiAgICAyODYwOiBGRiBGRiAwQSAwMiAwMCAwQSA2MiAxMiAwQSAw
NCAwQiBGRiBGRiAwQSAwMyAwMCAgLi4uLi4uYi4uLi4uLi4uLgogICAgMjg3MDogMEEgNjMgMDgg
NTAgNDQgMzAgMzAgMTIgNDEgMTEgMTMgMTIgMEIgMDQgMEIgRkYgIC5jLlBEMDAuQS4uLi4uLi4K
ICAgIDI4ODA6IEZGIDAwIDRDIDRFIDRCIDQyIDAwIDEyIDBEIDA0IDBDIEZGIEZGIDAxIDAwIDAw
ICAuLkxOS0IuLi4uLi4uLi4uCiAgICAyODkwOiA0QyA0RSA0QiA0MSAwMCAxMiAwRCAwNCAwQyBG
RiBGRiAwMSAwMCAwMSA0QyA0RSAgTE5LQS4uLi4uLi4uLi5MTgogICAgMjhBMDogNEIgNDEgMDAg
MTIgMEUgMDQgMEMgRkYgRkYgMDEgMDAgMEEgMDIgNEMgNEUgNEIgIEtBLi4uLi4uLi4uLi5MTksK
ICAgIDI4QjA6IDQxIDAwIDEyIDBFIDA0IDBDIEZGIEZGIDAxIDAwIDBBIDAzIDRDIDRFIDRCIDQx
ICBBLi4uLi4uLi4uLi5MTktBCiAgICAyOEMwOiAwMCAxMiAwRCAwNCAwQyBGRiBGRiAwMiAwMCAw
MCA0QyA0RSA0QiA0MSAwMCAxMiAgLi4uLi4uLi4uLkxOS0EuLgogICAgMjhEMDogMEQgMDQgMEMg
RkYgRkYgMDIgMDAgMDEgNEMgNEUgNEIgNDEgMDAgMTIgMEQgMDQgIC4uLi4uLi4uTE5LQS4uLi4K
ICAgIDI4RTA6IDBDIEZGIEZGIDAzIDAwIDAwIDRDIDRFIDRCIDQyIDAwIDEyIDBEIDA0IDBDIEZG
ICAuLi4uLi5MTktCLi4uLi4uCiAgICAyOEYwOiBGRiAwMyAwMCAwMSA0QyA0RSA0QiA0MiAwMCAx
MiAwRSAwNCAwQyBGRiBGRiAwMyAgLi4uLkxOS0IuLi4uLi4uLgogICAgMjkwMDogMDAgMEEgMDIg
NEMgNEUgNEIgNDIgMDAgMTIgMEUgMDQgMEMgRkYgRkYgMDMgMDAgIC4uLkxOS0IuLi4uLi4uLi4K
ICAgIDI5MTA6IDBBIDAzIDRDIDRFIDRCIDQyIDAwIDEyIDBEIDA0IDBDIEZGIEZGIDA0IDAwIDAw
ICAuLkxOS0IuLi4uLi4uLi4uCiAgICAyOTIwOiA0QyA0RSA0QiA0MiAwMCAxMiAwRCAwNCAwQyBG
RiBGRiAwNCAwMCAwMSA0QyA0RSAgTE5LQi4uLi4uLi4uLi5MTgogICAgMjkzMDogNEIgNDIgMDAg
MTIgMEQgMDQgMEMgRkYgRkYgMDUgMDAgMDAgNEMgNEUgNEIgNDMgIEtCLi4uLi4uLi4uLkxOS0MK
ICAgIDI5NDA6IDAwIDEyIDBEIDA0IDBDIEZGIEZGIDA1IDAwIDAxIDRDIDRFIDRCIDQzIDAwIDEy
ICAuLi4uLi4uLi4uTE5LQy4uCiAgICAyOTUwOiAwRSAwNCAwQyBGRiBGRiAwNSAwMCAwQSAwMiA0
QyA0RSA0QiA0MyAwMCAxMiAwRSAgLi4uLi4uLi4uTE5LQy4uLgogICAgMjk2MDogMDQgMEMgRkYg
RkYgMDUgMDAgMEEgMDMgNEMgNEUgNEIgNDMgMDAgMTIgMEQgMDQgIC4uLi4uLi4uTE5LQy4uLi4K
ICAgIDI5NzA6IDBDIEZGIEZGIDA3IDAwIDAwIDRDIDRFIDRCIDQ0IDAwIDEyIDBEIDA0IDBDIEZG
ICAuLi4uLi5MTktELi4uLi4uCiAgICAyOTgwOiBGRiAwNyAwMCAwMSA0QyA0RSA0QiA0NCAwMCAw
OCA0MSA1MiAzMCAzMCAxMiA0QiAgLi4uLkxOS0QuLkFSMDAuSwogICAgMjk5MDogMEUgMTMgMTIg
MDkgMDQgMEIgRkYgRkYgMDAgMDAgMEEgMTkgMTIgMEIgMDQgMEMgIC4uLi4uLi4uLi4uLi4uLi4K
ICAgIDI5QTA6IEZGIEZGIDAxIDAwIDAwIDAwIDBBIDE4IDEyIDBCIDA0IDBDIEZGIEZGIDAxIDAw
ICAuLi4uLi4uLi4uLi4uLi4uCiAgICAyOUIwOiAwMSAwMCAwQSAxOCAxMiAwQyAwNCAwQyBGRiBG
RiAwMSAwMCAwQSAwMiAwMCAwQSAgLi4uLi4uLi4uLi4uLi4uLgogICAgMjlDMDogMTggMTIgMEMg
MDQgMEMgRkYgRkYgMDEgMDAgMEEgMDMgMDAgMEEgMTggMTIgMEIgIC4uLi4uLi4uLi4uLi4uLi4K
ICAgIDI5RDA6IDA0IDBDIEZGIEZGIDAyIDAwIDAwIDAwIDBBIDE4IDEyIDBCIDA0IDBDIEZGIEZG
ICAuLi4uLi4uLi4uLi4uLi4uCiAgICAyOUUwOiAwMiAwMCAwMSAwMCAwQSAxOCAxMiAwQiAwNCAw
QyBGRiBGRiAwMyAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMjlGMDogMEEgMTkgMTIg
MEIgMDQgMEMgRkYgRkYgMDMgMDAgMDEgMDAgMEEgMTkgMTIgMEMgIC4uLi4uLi4uLi4uLi4uLi4K
ICAgIDJBMDA6IDA0IDBDIEZGIEZGIDAzIDAwIDBBIDAyIDAwIDBBIDE5IDEyIDBDIDA0IDBDIEZG
ICAuLi4uLi4uLi4uLi4uLi4uCiAgICAyQTEwOiBGRiAwMyAwMCAwQSAwMyAwMCAwQSAxOSAxMiAw
QiAwNCAwQyBGRiBGRiAwNCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMkEyMDogMDAgMDAgMEEg
MTkgMTIgMEIgMDQgMEMgRkYgRkYgMDQgMDAgMDEgMDAgMEEgMTkgIC4uLi4uLi4uLi4uLi4uLi4K
ICAgIDJBMzA6IDEyIDBCIDA0IDBDIEZGIEZGIDA1IDAwIDAwIDAwIDBBIDFBIDEyIDBCIDA0IDBD
ICAuLi4uLi4uLi4uLi4uLi4uCiAgICAyQTQwOiBGRiBGRiAwNSAwMCAwMSAwMCAwQSAxQSAxMiAw
QyAwNCAwQyBGRiBGRiAwNSAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMkE1MDogMEEgMDIgMDAg
MEEgMUEgMTIgMEMgMDQgMEMgRkYgRkYgMDUgMDAgMEEgMDMgMDAgIC4uLi4uLi4uLi4uLi4uLi4K
ICAgIDJBNjA6IDBBIDFBIDEyIDBCIDA0IDBDIEZGIEZGIDA3IDAwIDAwIDAwIDBBIDFCIDEyIDBC
ICAuLi4uLi4uLi4uLi4uLi4uCiAgICAyQTcwOiAwNCAwQyBGRiBGRiAwNyAwMCAwMSAwMCAwQSAx
QiAwOCA1MCAzMCAzNiAzOSAxMiAgLi4uLi4uLi4uLi5QMDY5LgogICAgMkE4MDogMzQgMDQgMTIg
MEIgMDQgMEIgRkYgRkYgMDAgNEMgNEUgNEIgNDEgMDAgMTIgMEIgIDQuLi4uLi4uLkxOS0EuLi4K
ICAgIDJBOTA6IDA0IDBCIEZGIEZGIDAxIDRDIDRFIDRCIDQyIDAwIDEyIDBDIDA0IDBCIEZGIEZG
ICAuLi4uLkxOS0IuLi4uLi4uCiAgICAyQUEwOiAwQSAwMiA0QyA0RSA0QiA0MyAwMCAxMiAwQyAw
NCAwQiBGRiBGRiAwQSAwMyA0QyAgLi5MTktDLi4uLi4uLi4uTAogICAgMkFCMDogNEUgNEIgNDQg
MDAgMDggNDcgMzAgMzYgMzkgMTIgMkMgMDQgMTIgMDkgMDQgMEIgIE5LRC4uRzA2OS4sLi4uLi4K
ICAgIDJBQzA6IEZGIEZGIDAwIDAwIDBBIDE4IDEyIDA5IDA0IDBCIEZGIEZGIDAxIDAwIDBBIDE5
ICAuLi4uLi4uLi4uLi4uLi4uCiAgICAyQUQwOiAxMiAwQSAwNCAwQiBGRiBGRiAwQSAwMiAwMCAw
QSAxQSAxMiAwQSAwNCAwQiBGRiAgLi4uLi4uLi4uLi4uLi4uLgogICAgMkFFMDogRkYgMEEgMDMg
MDAgMEEgMUIgMDggNTAgMzAgMzYgNDEgMTIgMzQgMDQgMTIgMEIgIC4uLi4uLi5QMDZBLjQuLi4K
ICAgIDJBRjA6IDA0IDBCIEZGIEZGIDAwIDRDIDRFIDRCIDQ1IDAwIDEyIDBCIDA0IDBCIEZGIEZG
ICAuLi4uLkxOS0UuLi4uLi4uCiAgICAyQjAwOiAwMSA0QyA0RSA0QiA0NiAwMCAxMiAwQyAwNCAw
QiBGRiBGRiAwQSAwMiA0QyA0RSAgLkxOS0YuLi4uLi4uLi5MTgogICAgMkIxMDogNEIgNDcgMDAg
MTIgMEMgMDQgMEIgRkYgRkYgMEEgMDMgNEMgNEUgNEIgNDggMDAgIEtHLi4uLi4uLi4uTE5LSC4K
ICAgIDJCMjA6IDA4IDQ3IDMwIDM2IDQxIDEyIDJDIDA0IDEyIDA5IDA0IDBCIEZGIEZGIDAwIDAw
ICAuRzA2QS4sLi4uLi4uLi4uCiAgICAyQjMwOiAwQSAxQyAxMiAwOSAwNCAwQiBGRiBGRiAwMSAw
MCAwQSAxRCAxMiAwQSAwNCAwQiAgLi4uLi4uLi4uLi4uLi4uLgogICAgMkI0MDogRkYgRkYgMEEg
MDIgMDAgMEEgMUUgMTIgMEEgMDQgMEIgRkYgRkYgMEEgMDMgMDAgIC4uLi4uLi4uLi4uLi4uLi4K
ICAgIDJCNTA6IDBBIDFGIDA4IDUwIDMwIDM2IDQyIDEyIDM0IDA0IDEyIDBCIDA0IDBCIEZGIEZG
ICAuLi5QMDZCLjQuLi4uLi4uCiAgICAyQjYwOiAwMCA0QyA0RSA0QiA0MSAwMCAxMiAwQiAwNCAw
QiBGRiBGRiAwMSA0QyA0RSA0QiAgLkxOS0EuLi4uLi4uLkxOSwogICAgMkI3MDogNDIgMDAgMTIg
MEMgMDQgMEIgRkYgRkYgMEEgMDIgNEMgNEUgNEIgNDMgMDAgMTIgIEIuLi4uLi4uLi5MTktDLi4K
ICAgIDJCODA6IDBDIDA0IDBCIEZGIEZGIDBBIDAzIDRDIDRFIDRCIDQ0IDAwIDA4IDQ3IDMwIDM2
ICAuLi4uLi4uTE5LRC4uRzA2CiAgICAyQjkwOiA0MiAxMiAyQyAwNCAxMiAwOSAwNCAwQiBGRiBG
RiAwMCAwMCAwQSAyMCAxMiAwOSAgQi4sLi4uLi4uLi4uLiAuLgogICAgMkJBMDogMDQgMEIgRkYg
RkYgMDEgMDAgMEEgMjEgMTIgMEEgMDQgMEIgRkYgRkYgMEEgMDIgIC4uLi4uLi4hLi4uLi4uLi4K
ICAgIDJCQjA6IDAwIDBBIDIyIDEyIDBBIDA0IDBCIEZGIEZGIDBBIDAzIDAwIDBBIDIzIDA4IDUw
ICAuLiIuLi4uLi4uLi4uIy5QCiAgICAyQkMwOiAzMCAzNiA0MyAxMiAzNCAwNCAxMiAwQiAwNCAw
QiBGRiBGRiAwMCA0QyA0RSA0QiAgMDZDLjQuLi4uLi4uLkxOSwogICAgMkJEMDogNDUgMDAgMTIg
MEIgMDQgMEIgRkYgRkYgMDEgNEMgNEUgNEIgNDYgMDAgMTIgMEMgIEUuLi4uLi4uLkxOS0YuLi4K
ICAgIDJCRTA6IDA0IDBCIEZGIEZGIDBBIDAyIDRDIDRFIDRCIDQ3IDAwIDEyIDBDIDA0IDBCIEZG
ICAuLi4uLi5MTktHLi4uLi4uCiAgICAyQkYwOiBGRiAwQSAwMyA0QyA0RSA0QiA0OCAwMCAwOCA0
NyAzMCAzNiA0MyAxMiAyQyAwNCAgLi4uTE5LSC4uRzA2Qy4sLgogICAgMkMwMDogMTIgMDkgMDQg
MEIgRkYgRkYgMDAgMDAgMEEgMjQgMTIgMDkgMDQgMEIgRkYgRkYgIC4uLi4uLi4uLiQuLi4uLi4K
ICAgIDJDMTA6IDAxIDAwIDBBIDI1IDEyIDBBIDA0IDBCIEZGIEZGIDBBIDAyIDAwIDBBIDI2IDEy
ICAuLi4lLi4uLi4uLi4uLiYuCiAgICAyQzIwOiAwQSAwNCAwQiBGRiBGRiAwQSAwMyAwMCAwQSAy
NyAwOCA1MCAzMCAzNiA0NCAxMiAgLi4uLi4uLi4uJy5QMDZELgogICAgMkMzMDogMzQgMDQgMTIg
MEIgMDQgMEIgRkYgRkYgMDAgNEMgNEUgNEIgNDEgMDAgMTIgMEIgIDQuLi4uLi4uLkxOS0EuLi4K
ICAgIDJDNDA6IDA0IDBCIEZGIEZGIDAxIDRDIDRFIDRCIDQyIDAwIDEyIDBDIDA0IDBCIEZGIEZG
ICAuLi4uLkxOS0IuLi4uLi4uCiAgICAyQzUwOiAwQSAwMiA0QyA0RSA0QiA0MyAwMCAxMiAwQyAw
NCAwQiBGRiBGRiAwQSAwMyA0QyAgLi5MTktDLi4uLi4uLi4uTAogICAgMkM2MDogNEUgNEIgNDQg
MDAgMDggNDcgMzAgMzYgNDQgMTIgMkMgMDQgMTIgMDkgMDQgMEIgIE5LRC4uRzA2RC4sLi4uLi4K
ICAgIDJDNzA6IEZGIEZGIDAwIDAwIDBBIDI4IDEyIDA5IDA0IDBCIEZGIEZGIDAxIDAwIDBBIDI5
ICAuLi4uLiguLi4uLi4uLi4pCiAgICAyQzgwOiAxMiAwQSAwNCAwQiBGRiBGRiAwQSAwMiAwMCAw
QSAyQSAxMiAwQSAwNCAwQiBGRiAgLi4uLi4uLi4uLiouLi4uLgogICAgMkM5MDogRkYgMEEgMDMg
MDAgMEEgMkIgMDggNTAgMzAgMzYgNDUgMTIgMzQgMDQgMTIgMEIgIC4uLi4uKy5QMDZFLjQuLi4K
ICAgIDJDQTA6IDA0IDBCIEZGIEZGIDAwIDRDIDRFIDRCIDQzIDAwIDEyIDBCIDA0IDBCIEZGIEZG
ICAuLi4uLkxOS0MuLi4uLi4uCiAgICAyQ0IwOiAwMSA0QyA0RSA0QiA0NCAwMCAxMiAwQyAwNCAw
QiBGRiBGRiAwQSAwMiA0QyA0RSAgLkxOS0QuLi4uLi4uLi5MTgogICAgMkNDMDogNEIgNDEgMDAg
MTIgMEMgMDQgMEIgRkYgRkYgMEEgMDMgNEMgNEUgNEIgNDIgMDAgIEtBLi4uLi4uLi4uTE5LQi4K
ICAgIDJDRDA6IDA4IDQ3IDMwIDM2IDQ1IDEyIDJDIDA0IDEyIDA5IDA0IDBCIEZGIEZGIDAwIDAw
ICAuRzA2RS4sLi4uLi4uLi4uCiAgICAyQ0UwOiAwQSAyQSAxMiAwOSAwNCAwQiBGRiBGRiAwMSAw
MCAwQSAyQiAxMiAwQSAwNCAwQiAgLiouLi4uLi4uLi4rLi4uLgogICAgMkNGMDogRkYgRkYgMEEg
MDIgMDAgMEEgMjggMTIgMEEgMDQgMEIgRkYgRkYgMEEgMDMgMDAgIC4uLi4uLiguLi4uLi4uLi4K
ICAgIDJEMDA6IDBBIDI5IDA4IDUwIDMwIDM2IDQ2IDEyIDM0IDA0IDEyIDBCIDA0IDBCIEZGIEZG
ICAuKS5QMDZGLjQuLi4uLi4uCiAgICAyRDEwOiAwMCA0QyA0RSA0QiA0NyAwMCAxMiAwQiAwNCAw
QiBGRiBGRiAwMSA0QyA0RSA0QiAgLkxOS0cuLi4uLi4uLkxOSwogICAgMkQyMDogNDggMDAgMTIg
MEMgMDQgMEIgRkYgRkYgMEEgMDIgNEMgNEUgNEIgNDUgMDAgMTIgIEguLi4uLi4uLi5MTktFLi4K
ICAgIDJEMzA6IDBDIDA0IDBCIEZGIEZGIDBBIDAzIDRDIDRFIDRCIDQ2IDAwIDA4IDQ3IDMwIDM2
ICAuLi4uLi4uTE5LRi4uRzA2CiAgICAyRDQwOiA0NiAxMiAyQyAwNCAxMiAwOSAwNCAwQiBGRiBG
RiAwMCAwMCAwQSAyNiAxMiAwOSAgRi4sLi4uLi4uLi4uLiYuLgogICAgMkQ1MDogMDQgMEIgRkYg
RkYgMDEgMDAgMEEgMjcgMTIgMEEgMDQgMEIgRkYgRkYgMEEgMDIgIC4uLi4uLi4nLi4uLi4uLi4K
ICAgIDJENjA6IDAwIDBBIDI0IDEyIDBBIDA0IDBCIEZGIEZGIDBBIDAzIDAwIDBBIDI1IDA4IDUw
ICAuLiQuLi4uLi4uLi4uJS5QCiAgICAyRDcwOiAzMCAzNyAzMCAxMiAzNCAwNCAxMiAwQiAwNCAw
QiBGRiBGRiAwMCA0QyA0RSA0QiAgMDcwLjQuLi4uLi4uLkxOSwogICAgMkQ4MDogNDMgMDAgMTIg
MEIgMDQgMEIgRkYgRkYgMDEgNEMgNEUgNEIgNDQgMDAgMTIgMEMgIEMuLi4uLi4uLkxOS0QuLi4K
ICAgIDJEOTA6IDA0IDBCIEZGIEZGIDBBIDAyIDRDIDRFIDRCIDQxIDAwIDEyIDBDIDA0IDBCIEZG
ICAuLi4uLi5MTktBLi4uLi4uCiAgICAyREEwOiBGRiAwQSAwMyA0QyA0RSA0QiA0MiAwMCAwOCA0
NyAzMCAzNyAzMCAxMiAyQyAwNCAgLi4uTE5LQi4uRzA3MC4sLgogICAgMkRCMDogMTIgMDkgMDQg
MEIgRkYgRkYgMDAgMDAgMEEgMjIgMTIgMDkgMDQgMEIgRkYgRkYgIC4uLi4uLi4uLiIuLi4uLi4K
ICAgIDJEQzA6IDAxIDAwIDBBIDIzIDEyIDBBIDA0IDBCIEZGIEZGIDBBIDAyIDAwIDBBIDIwIDEy
ICAuLi4jLi4uLi4uLi4uLiAuCiAgICAyREQwOiAwQSAwNCAwQiBGRiBGRiAwQSAwMyAwMCAwQSAy
MSAwOCA1MCAzMCAzNyAzMSAxMiAgLi4uLi4uLi4uIS5QMDcxLgogICAgMkRFMDogMzQgMDQgMTIg
MEIgMDQgMEIgRkYgRkYgMDAgNEMgNEUgNEIgNDcgMDAgMTIgMEIgIDQuLi4uLi4uLkxOS0cuLi4K
ICAgIDJERjA6IDA0IDBCIEZGIEZGIDAxIDRDIDRFIDRCIDQ4IDAwIDEyIDBDIDA0IDBCIEZGIEZG
ICAuLi4uLkxOS0guLi4uLi4uCiAgICAyRTAwOiAwQSAwMiA0QyA0RSA0QiA0NSAwMCAxMiAwQyAw
NCAwQiBGRiBGRiAwQSAwMyA0QyAgLi5MTktFLi4uLi4uLi4uTAogICAgMkUxMDogNEUgNEIgNDYg
MDAgMDggNDcgMzAgMzcgMzEgMTIgMkMgMDQgMTIgMDkgMDQgMEIgIE5LRi4uRzA3MS4sLi4uLi4K
ICAgIDJFMjA6IEZGIEZGIDAwIDAwIDBBIDFFIDEyIDA5IDA0IDBCIEZGIEZGIDAxIDAwIDBBIDFG
ICAuLi4uLi4uLi4uLi4uLi4uCiAgICAyRTMwOiAxMiAwQSAwNCAwQiBGRiBGRiAwQSAwMiAwMCAw
QSAxQyAxMiAwQSAwNCAwQiBGRiAgLi4uLi4uLi4uLi4uLi4uLgogICAgMkU0MDogRkYgMEEgMDMg
MDAgMEEgMUQgMDggNTAgMzAgMzcgMzIgMTIgMzQgMDQgMTIgMEIgIC4uLi4uLi5QMDcyLjQuLi4K
ICAgIDJFNTA6IDA0IDBCIEZGIEZGIDAwIDRDIDRFIDRCIDQzIDAwIDEyIDBCIDA0IDBCIEZGIEZG
ICAuLi4uLkxOS0MuLi4uLi4uCiAgICAyRTYwOiAwMSA0QyA0RSA0QiA0NCAwMCAxMiAwQyAwNCAw
QiBGRiBGRiAwQSAwMiA0QyA0RSAgLkxOS0QuLi4uLi4uLi5MTgogICAgMkU3MDogNEIgNDEgMDAg
MTIgMEMgMDQgMEIgRkYgRkYgMEEgMDMgNEMgNEUgNEIgNDIgMDAgIEtBLi4uLi4uLi4uTE5LQi4K
ICAgIDJFODA6IDA4IDQ3IDMwIDM3IDMyIDEyIDJDIDA0IDEyIDA5IDA0IDBCIEZGIEZGIDAwIDAw
ICAuRzA3Mi4sLi4uLi4uLi4uCiAgICAyRTkwOiAwQSAxQSAxMiAwOSAwNCAwQiBGRiBGRiAwMSAw
MCAwQSAxQiAxMiAwQSAwNCAwQiAgLi4uLi4uLi4uLi4uLi4uLgogICAgMkVBMDogRkYgRkYgMEEg
MDIgMDAgMEEgMTggMTIgMEEgMDQgMEIgRkYgRkYgMEEgMDMgMDAgIC4uLi4uLi4uLi4uLi4uLi4K
ICAgIDJFQjA6IDBBIDE5IDA4IDUwIDMwIDM3IDMzIDEyIDM0IDA0IDEyIDBCIDA0IDBCIEZGIEZG
ICAuLi5QMDczLjQuLi4uLi4uCiAgICAyRUMwOiAwMCA0QyA0RSA0QiA0MiAwMCAxMiAwQiAwNCAw
QiBGRiBGRiAwMSA0QyA0RSA0QiAgLkxOS0IuLi4uLi4uLkxOSwogICAgMkVEMDogNDMgMDAgMTIg
MEMgMDQgMEIgRkYgRkYgMEEgMDIgNEMgNEUgNEIgNDQgMDAgMTIgIEMuLi4uLi4uLi5MTktELi4K
ICAgIDJFRTA6IDBDIDA0IDBCIEZGIEZGIDBBIDAzIDRDIDRFIDRCIDQxIDAwIDA4IDQ3IDMwIDM3
ICAuLi4uLi4uTE5LQS4uRzA3CiAgICAyRUYwOiAzMyAxMiAyQyAwNCAxMiAwOSAwNCAwQiBGRiBG
RiAwMCAwMCAwQSAxOSAxMiAwOSAgMy4sLi4uLi4uLi4uLi4uLgogICAgMkYwMDogMDQgMEIgRkYg
RkYgMDEgMDAgMEEgMUEgMTIgMEEgMDQgMEIgRkYgRkYgMEEgMDIgIC4uLi4uLi4uLi4uLi4uLi4K
ICAgIDJGMTA6IDAwIDBBIDFCIDEyIDBBIDA0IDBCIEZGIEZGIDBBIDAzIDAwIDBBIDE4IDA4IDUw
ICAuLi4uLi4uLi4uLi4uLi5QCiAgICAyRjIwOiAzMCAzNyAzNCAxMiAzNCAwNCAxMiAwQiAwNCAw
QiBGRiBGRiAwMCA0QyA0RSA0QiAgMDc0LjQuLi4uLi4uLkxOSwogICAgMkYzMDogNDYgMDAgMTIg
MEIgMDQgMEIgRkYgRkYgMDEgNEMgNEUgNEIgNDcgMDAgMTIgMEMgIEYuLi4uLi4uLkxOS0cuLi4K
ICAgIDJGNDA6IDA0IDBCIEZGIEZGIDBBIDAyIDRDIDRFIDRCIDQ4IDAwIDEyIDBDIDA0IDBCIEZG
ICAuLi4uLi5MTktILi4uLi4uCiAgICAyRjUwOiBGRiAwQSAwMyA0QyA0RSA0QiA0NSAwMCAwOCA0
NyAzMCAzNyAzNCAxMiAyQyAwNCAgLi4uTE5LRS4uRzA3NC4sLgogICAgMkY2MDogMTIgMDkgMDQg
MEIgRkYgRkYgMDAgMDAgMEEgMUQgMTIgMDkgMDQgMEIgRkYgRkYgIC4uLi4uLi4uLi4uLi4uLi4K
ICAgIDJGNzA6IDAxIDAwIDBBIDFFIDEyIDBBIDA0IDBCIEZGIEZGIDBBIDAyIDAwIDBBIDFGIDEy
ICAuLi4uLi4uLi4uLi4uLi4uCiAgICAyRjgwOiAwQSAwNCAwQiBGRiBGRiAwQSAwMyAwMCAwQSAx
QyAwOCA1MCAzMCAzNyAzNSAxMiAgLi4uLi4uLi4uLi5QMDc1LgogICAgMkY5MDogMzQgMDQgMTIg
MEIgMDQgMEIgRkYgRkYgMDAgNEMgNEUgNEIgNDIgMDAgMTIgMEIgIDQuLi4uLi4uLkxOS0IuLi4K
ICAgIDJGQTA6IDA0IDBCIEZGIEZGIDAxIDRDIDRFIDRCIDQzIDAwIDEyIDBDIDA0IDBCIEZGIEZG
ICAuLi4uLkxOS0MuLi4uLi4uCiAgICAyRkIwOiAwQSAwMiA0QyA0RSA0QiA0NCAwMCAxMiAwQyAw
NCAwQiBGRiBGRiAwQSAwMyA0QyAgLi5MTktELi4uLi4uLi4uTAogICAgMkZDMDogNEUgNEIgNDEg
MDAgMDggNDcgMzAgMzcgMzUgMTIgMkMgMDQgMTIgMDkgMDQgMEIgIE5LQS4uRzA3NS4sLi4uLi4K
ICAgIDJGRDA6IEZGIEZGIDAwIDAwIDBBIDIxIDEyIDA5IDA0IDBCIEZGIEZGIDAxIDAwIDBBIDIy
ICAuLi4uLiEuLi4uLi4uLi4iCiAgICAyRkUwOiAxMiAwQSAwNCAwQiBGRiBGRiAwQSAwMiAwMCAw
QSAyMyAxMiAwQSAwNCAwQiBGRiAgLi4uLi4uLi4uLiMuLi4uLgogICAgMkZGMDogRkYgMEEgMDMg
MDAgMEEgMjAgMDggNTAgMzAgMzcgMzYgMTIgMzQgMDQgMTIgMEIgIC4uLi4uIC5QMDc2LjQuLi4K
ICAgIDMwMDA6IDA0IDBCIEZGIEZGIDAwIDRDIDRFIDRCIDQ2IDAwIDEyIDBCIDA0IDBCIEZGIEZG
ICAuLi4uLkxOS0YuLi4uLi4uCiAgICAzMDEwOiAwMSA0QyA0RSA0QiA0NyAwMCAxMiAwQyAwNCAw
QiBGRiBGRiAwQSAwMiA0QyA0RSAgLkxOS0cuLi4uLi4uLi5MTgogICAgMzAyMDogNEIgNDggMDAg
MTIgMEMgMDQgMEIgRkYgRkYgMEEgMDMgNEMgNEUgNEIgNDUgMDAgIEtILi4uLi4uLi4uTE5LRS4K
ICAgIDMwMzA6IDA4IDQ3IDMwIDM3IDM2IDEyIDJDIDA0IDEyIDA5IDA0IDBCIEZGIEZGIDAwIDAw
ICAuRzA3Ni4sLi4uLi4uLi4uCiAgICAzMDQwOiAwQSAyNSAxMiAwOSAwNCAwQiBGRiBGRiAwMSAw
MCAwQSAyNiAxMiAwQSAwNCAwQiAgLiUuLi4uLi4uLi4mLi4uLgogICAgMzA1MDogRkYgRkYgMEEg
MDIgMDAgMEEgMjcgMTIgMEEgMDQgMEIgRkYgRkYgMEEgMDMgMDAgIC4uLi4uLicuLi4uLi4uLi4K
ICAgIDMwNjA6IDBBIDI0IDA4IDUwIDMwIDM3IDM3IDEyIDM0IDA0IDEyIDBCIDA0IDBCIEZGIEZG
ICAuJC5QMDc3LjQuLi4uLi4uCiAgICAzMDcwOiAwMCA0QyA0RSA0QiA0MiAwMCAxMiAwQiAwNCAw
QiBGRiBGRiAwMSA0QyA0RSA0QiAgLkxOS0IuLi4uLi4uLkxOSwogICAgMzA4MDogNDMgMDAgMTIg
MEMgMDQgMEIgRkYgRkYgMEEgMDIgNEMgNEUgNEIgNDQgMDAgMTIgIEMuLi4uLi4uLi5MTktELi4K
ICAgIDMwOTA6IDBDIDA0IDBCIEZGIEZGIDBBIDAzIDRDIDRFIDRCIDQxIDAwIDA4IDQ3IDMwIDM3
ICAuLi4uLi4uTE5LQS4uRzA3CiAgICAzMEEwOiAzNyAxMiAyQyAwNCAxMiAwOSAwNCAwQiBGRiBG
RiAwMCAwMCAwQSAyOSAxMiAwOSAgNy4sLi4uLi4uLi4uLikuLgogICAgMzBCMDogMDQgMEIgRkYg
RkYgMDEgMDAgMEEgMkEgMTIgMEEgMDQgMEIgRkYgRkYgMEEgMDIgIC4uLi4uLi4qLi4uLi4uLi4K
ICAgIDMwQzA6IDAwIDBBIDJCIDEyIDBBIDA0IDBCIEZGIEZGIDBBIDAzIDAwIDBBIDI4IDA4IDUw
ICAuLisuLi4uLi4uLi4uKC5QCiAgICAzMEQwOiAzMCAzNyAzOCAxMiAzNCAwNCAxMiAwQiAwNCAw
QiBGRiBGRiAwMCA0QyA0RSA0QiAgMDc4LjQuLi4uLi4uLkxOSwogICAgMzBFMDogNDQgMDAgMTIg
MEIgMDQgMEIgRkYgRkYgMDEgNEMgNEUgNEIgNDEgMDAgMTIgMEMgIEQuLi4uLi4uLkxOS0EuLi4K
ICAgIDMwRjA6IDA0IDBCIEZGIEZGIDBBIDAyIDRDIDRFIDRCIDQyIDAwIDEyIDBDIDA0IDBCIEZG
ICAuLi4uLi5MTktCLi4uLi4uCiAgICAzMTAwOiBGRiAwQSAwMyA0QyA0RSA0QiA0MyAwMCAwOCA0
NyAzMCAzNyAzOCAxMiAyQyAwNCAgLi4uTE5LQy4uRzA3OC4sLgogICAgMzExMDogMTIgMDkgMDQg
MEIgRkYgRkYgMDAgMDAgMEEgMkIgMTIgMDkgMDQgMEIgRkYgRkYgIC4uLi4uLi4uLisuLi4uLi4K
ICAgIDMxMjA6IDAxIDAwIDBBIDI4IDEyIDBBIDA0IDBCIEZGIEZGIDBBIDAyIDAwIDBBIDI5IDEy
ICAuLi4oLi4uLi4uLi4uLikuCiAgICAzMTMwOiAwQSAwNCAwQiBGRiBGRiAwQSAwMyAwMCAwQSAy
QSAwOCA1MCAzMCAzNyAzOSAxMiAgLi4uLi4uLi4uKi5QMDc5LgogICAgMzE0MDogMzQgMDQgMTIg
MEIgMDQgMEIgRkYgRkYgMDAgNEMgNEUgNEIgNDggMDAgMTIgMEIgIDQuLi4uLi4uLkxOS0guLi4K
ICAgIDMxNTA6IDA0IDBCIEZGIEZGIDAxIDRDIDRFIDRCIDQ1IDAwIDEyIDBDIDA0IDBCIEZGIEZG
ICAuLi4uLkxOS0UuLi4uLi4uCiAgICAzMTYwOiAwQSAwMiA0QyA0RSA0QiA0NiAwMCAxMiAwQyAw
NCAwQiBGRiBGRiAwQSAwMyA0QyAgLi5MTktGLi4uLi4uLi4uTAogICAgMzE3MDogNEUgNEIgNDcg
MDAgMDggNDcgMzAgMzcgMzkgMTIgMkMgMDQgMTIgMDkgMDQgMEIgIE5LRy4uRzA3OS4sLi4uLi4K
ICAgIDMxODA6IEZGIEZGIDAwIDAwIDBBIDI3IDEyIDA5IDA0IDBCIEZGIEZGIDAxIDAwIDBBIDI0
ICAuLi4uLicuLi4uLi4uLi4kCiAgICAzMTkwOiAxMiAwQSAwNCAwQiBGRiBGRiAwQSAwMiAwMCAw
QSAyNSAxMiAwQSAwNCAwQiBGRiAgLi4uLi4uLi4uLiUuLi4uLgogICAgMzFBMDogRkYgMEEgMDMg
MDAgMEEgMjYgMDggNTAgMzAgMzcgNDEgMTIgMzQgMDQgMTIgMEIgIC4uLi4uJi5QMDdBLjQuLi4K
ICAgIDMxQjA6IDA0IDBCIEZGIEZGIDAwIDRDIDRFIDRCIDQ0IDAwIDEyIDBCIDA0IDBCIEZGIEZG
ICAuLi4uLkxOS0QuLi4uLi4uCiAgICAzMUMwOiAwMSA0QyA0RSA0QiA0MSAwMCAxMiAwQyAwNCAw
QiBGRiBGRiAwQSAwMiA0QyA0RSAgLkxOS0EuLi4uLi4uLi5MTgogICAgMzFEMDogNEIgNDIgMDAg
MTIgMEMgMDQgMEIgRkYgRkYgMEEgMDMgNEMgNEUgNEIgNDMgMDAgIEtCLi4uLi4uLi4uTE5LQy4K
ICAgIDMxRTA6IDA4IDQ3IDMwIDM3IDQxIDEyIDJDIDA0IDEyIDA5IDA0IDBCIEZGIEZGIDAwIDAw
ICAuRzA3QS4sLi4uLi4uLi4uCiAgICAzMUYwOiAwQSAyMyAxMiAwOSAwNCAwQiBGRiBGRiAwMSAw
MCAwQSAyMCAxMiAwQSAwNCAwQiAgLiMuLi4uLi4uLi4gLi4uLgogICAgMzIwMDogRkYgRkYgMEEg
MDIgMDAgMEEgMjEgMTIgMEEgMDQgMEIgRkYgRkYgMEEgMDMgMDAgIC4uLi4uLiEuLi4uLi4uLi4K
ICAgIDMyMTA6IDBBIDIyIDA4IDUwIDMwIDM3IDQyIDEyIDM0IDA0IDEyIDBCIDA0IDBCIEZGIEZG
ICAuIi5QMDdCLjQuLi4uLi4uCiAgICAzMjIwOiAwMCA0QyA0RSA0QiA0OCAwMCAxMiAwQiAwNCAw
QiBGRiBGRiAwMSA0QyA0RSA0QiAgLkxOS0guLi4uLi4uLkxOSwogICAgMzIzMDogNDUgMDAgMTIg
MEMgMDQgMEIgRkYgRkYgMEEgMDIgNEMgNEUgNEIgNDYgMDAgMTIgIEUuLi4uLi4uLi5MTktGLi4K
ICAgIDMyNDA6IDBDIDA0IDBCIEZGIEZGIDBBIDAzIDRDIDRFIDRCIDQ3IDAwIDA4IDQ3IDMwIDM3
ICAuLi4uLi4uTE5LRy4uRzA3CiAgICAzMjUwOiA0MiAxMiAyQyAwNCAxMiAwOSAwNCAwQiBGRiBG
RiAwMCAwMCAwQSAxRiAxMiAwOSAgQi4sLi4uLi4uLi4uLi4uLgogICAgMzI2MDogMDQgMEIgRkYg
RkYgMDEgMDAgMEEgMUMgMTIgMEEgMDQgMEIgRkYgRkYgMEEgMDIgIC4uLi4uLi4uLi4uLi4uLi4K
ICAgIDMyNzA6IDAwIDBBIDFEIDEyIDBBIDA0IDBCIEZGIEZGIDBBIDAzIDAwIDBBIDFFIDA4IDUw
ICAuLi4uLi4uLi4uLi4uLi5QCiAgICAzMjgwOiAzMCAzNyA0MyAxMiAzNCAwNCAxMiAwQiAwNCAw
QiBGRiBGRiAwMCA0QyA0RSA0QiAgMDdDLjQuLi4uLi4uLkxOSwogICAgMzI5MDogNDQgMDAgMTIg
MEIgMDQgMEIgRkYgRkYgMDEgNEMgNEUgNEIgNDEgMDAgMTIgMEMgIEQuLi4uLi4uLkxOS0EuLi4K
ICAgIDMyQTA6IDA0IDBCIEZGIEZGIDBBIDAyIDRDIDRFIDRCIDQyIDAwIDEyIDBDIDA0IDBCIEZG
ICAuLi4uLi5MTktCLi4uLi4uCiAgICAzMkIwOiBGRiAwQSAwMyA0QyA0RSA0QiA0MyAwMCAwOCA0
NyAzMCAzNyA0MyAxMiAyQyAwNCAgLi4uTE5LQy4uRzA3Qy4sLgogICAgMzJDMDogMTIgMDkgMDQg
MEIgRkYgRkYgMDAgMDAgMEEgMUIgMTIgMDkgMDQgMEIgRkYgRkYgIC4uLi4uLi4uLi4uLi4uLi4K
ICAgIDMyRDA6IDAxIDAwIDBBIDE4IDEyIDBBIDA0IDBCIEZGIEZGIDBBIDAyIDAwIDBBIDE5IDEy
ICAuLi4uLi4uLi4uLi4uLi4uCiAgICAzMkUwOiAwQSAwNCAwQiBGRiBGRiAwQSAwMyAwMCAwQSAx
QSAwOCA1MCAzMCAzNyA0NCAxMiAgLi4uLi4uLi4uLi5QMDdELgogICAgMzJGMDogMzQgMDQgMTIg
MEIgMDQgMEIgRkYgRkYgMDAgNEMgNEUgNEIgNDEgMDAgMTIgMEIgIDQuLi4uLi4uLkxOS0EuLi4K
ICAgIDMzMDA6IDA0IDBCIEZGIEZGIDAxIDRDIDRFIDRCIDQyIDAwIDEyIDBDIDA0IDBCIEZGIEZG
ICAuLi4uLkxOS0IuLi4uLi4uCiAgICAzMzEwOiAwQSAwMiA0QyA0RSA0QiA0MyAwMCAxMiAwQyAw
NCAwQiBGRiBGRiAwQSAwMyA0QyAgLi5MTktDLi4uLi4uLi4uTAogICAgMzMyMDogNEUgNEIgNDQg
MDAgMDggNDcgMzAgMzcgNDQgMTIgMkMgMDQgMTIgMDkgMDQgMEIgIE5LRC4uRzA3RC4sLi4uLi4K
ICAgIDMzMzA6IEZGIEZGIDAwIDAwIDBBIDE4IDEyIDA5IDA0IDBCIEZGIEZGIDAxIDAwIDBBIDE5
ICAuLi4uLi4uLi4uLi4uLi4uCiAgICAzMzQwOiAxMiAwQSAwNCAwQiBGRiBGRiAwQSAwMiAwMCAw
QSAxQSAxMiAwQSAwNCAwQiBGRiAgLi4uLi4uLi4uLi4uLi4uLgogICAgMzM1MDogRkYgMEEgMDMg
MDAgMEEgMUIgMDggNTAgMzAgMzcgNDUgMTIgMzQgMDQgMTIgMEIgIC4uLi4uLi5QMDdFLjQuLi4K
ICAgIDMzNjA6IDA0IDBCIEZGIEZGIDAwIDRDIDRFIDRCIDQ1IDAwIDEyIDBCIDA0IDBCIEZGIEZG
ICAuLi4uLkxOS0UuLi4uLi4uCiAgICAzMzcwOiAwMSA0QyA0RSA0QiA0NiAwMCAxMiAwQyAwNCAw
QiBGRiBGRiAwQSAwMiA0QyA0RSAgLkxOS0YuLi4uLi4uLi5MTgogICAgMzM4MDogNEIgNDcgMDAg
MTIgMEMgMDQgMEIgRkYgRkYgMEEgMDMgNEMgNEUgNEIgNDggMDAgIEtHLi4uLi4uLi4uTE5LSC4K
ICAgIDMzOTA6IDA4IDQ3IDMwIDM3IDQ1IDEyIDJDIDA0IDEyIDA5IDA0IDBCIEZGIEZGIDAwIDAw
ICAuRzA3RS4sLi4uLi4uLi4uCiAgICAzM0EwOiAwQSAxQyAxMiAwOSAwNCAwQiBGRiBGRiAwMSAw
MCAwQSAxRCAxMiAwQSAwNCAwQiAgLi4uLi4uLi4uLi4uLi4uLgogICAgMzNCMDogRkYgRkYgMEEg
MDIgMDAgMEEgMUUgMTIgMEEgMDQgMEIgRkYgRkYgMEEgMDMgMDAgIC4uLi4uLi4uLi4uLi4uLi4K
ICAgIDMzQzA6IDBBIDFGIDA4IDUwIDMwIDM3IDQ2IDEyIDM0IDA0IDEyIDBCIDA0IDBCIEZGIEZG
ICAuLi5QMDdGLjQuLi4uLi4uCiAgICAzM0QwOiAwMCA0QyA0RSA0QiA0MSAwMCAxMiAwQiAwNCAw
QiBGRiBGRiAwMSA0QyA0RSA0QiAgLkxOS0EuLi4uLi4uLkxOSwogICAgMzNFMDogNDIgMDAgMTIg
MEMgMDQgMEIgRkYgRkYgMEEgMDIgNEMgNEUgNEIgNDMgMDAgMTIgIEIuLi4uLi4uLi5MTktDLi4K
ICAgIDMzRjA6IDBDIDA0IDBCIEZGIEZGIDBBIDAzIDRDIDRFIDRCIDQ0IDAwIDA4IDQ3IDMwIDM3
ICAuLi4uLi4uTE5LRC4uRzA3CiAgICAzNDAwOiA0NiAxMiAyQyAwNCAxMiAwOSAwNCAwQiBGRiBG
RiAwMCAwMCAwQSAyMCAxMiAwOSAgRi4sLi4uLi4uLi4uLiAuLgogICAgMzQxMDogMDQgMEIgRkYg
RkYgMDEgMDAgMEEgMjEgMTIgMEEgMDQgMEIgRkYgRkYgMEEgMDIgIC4uLi4uLi4hLi4uLi4uLi4K
ICAgIDM0MjA6IDAwIDBBIDIyIDEyIDBBIDA0IDBCIEZGIEZGIDBBIDAzIDAwIDBBIDIzIDA4IDUw
ICAuLiIuLi4uLi4uLi4uIy5QCiAgICAzNDMwOiAzMCAzOCAzOCAxMiAzNCAwNCAxMiAwQiAwNCAw
QiBGRiBGRiAwMCA0QyA0RSA0QiAgMDg4LjQuLi4uLi4uLkxOSwogICAgMzQ0MDogNDUgMDAgMTIg
MEIgMDQgMEIgRkYgRkYgMDEgNEMgNEUgNEIgNDYgMDAgMTIgMEMgIEUuLi4uLi4uLkxOS0YuLi4K
ICAgIDM0NTA6IDA0IDBCIEZGIEZGIDBBIDAyIDRDIDRFIDRCIDQ3IDAwIDEyIDBDIDA0IDBCIEZG
ICAuLi4uLi5MTktHLi4uLi4uCiAgICAzNDYwOiBGRiAwQSAwMyA0QyA0RSA0QiA0OCAwMCAwOCA0
NyAzMCAzOCAzOCAxMiAyQyAwNCAgLi4uTE5LSC4uRzA4OC4sLgogICAgMzQ3MDogMTIgMDkgMDQg
MEIgRkYgRkYgMDAgMDAgMEEgMjQgMTIgMDkgMDQgMEIgRkYgRkYgIC4uLi4uLi4uLiQuLi4uLi4K
ICAgIDM0ODA6IDAxIDAwIDBBIDI1IDEyIDBBIDA0IDBCIEZGIEZGIDBBIDAyIDAwIDBBIDI2IDEy
ICAuLi4lLi4uLi4uLi4uLiYuCiAgICAzNDkwOiAwQSAwNCAwQiBGRiBGRiAwQSAwMyAwMCAwQSAy
NyAwOCA1MCA0NCAzMCAzMSAxMiAgLi4uLi4uLi4uJy5QRDAxLgogICAgMzRBMDogNDEgMTEgMTMg
MTIgMEIgMDQgMEIgRkYgRkYgMDAgNEMgNEUgNEIgNDIgMDAgMTIgIEEuLi4uLi4uLi5MTktCLi4K
ICAgIDM0QjA6IDBEIDA0IDBDIEZGIEZGIDAxIDAwIDAwIDRDIDRFIDRCIDQxIDAwIDEyIDBEIDA0
ICAuLi4uLi4uLkxOS0EuLi4uCiAgICAzNEMwOiAwQyBGRiBGRiAwMSAwMCAwMSA0QyA0RSA0QiA0
MSAwMCAxMiAwRSAwNCAwQyBGRiAgLi4uLi4uTE5LQS4uLi4uLgogICAgMzREMDogRkYgMDEgMDAg
MEEgMDIgNEMgNEUgNEIgNDEgMDAgMTIgMEUgMDQgMEMgRkYgRkYgIC4uLi4uTE5LQS4uLi4uLi4K
ICAgIDM0RTA6IDAxIDAwIDBBIDAzIDRDIDRFIDRCIDQxIDAwIDEyIDBEIDA0IDBDIEZGIEZGIDAy
ICAuLi4uTE5LQS4uLi4uLi4uCiAgICAzNEYwOiAwMCAwMCA0QyA0RSA0QiA0MSAwMCAxMiAwRCAw
NCAwQyBGRiBGRiAwMiAwMCAwMSAgLi5MTktBLi4uLi4uLi4uLgogICAgMzUwMDogNEMgNEUgNEIg
NDEgMDAgMTIgMEQgMDQgMEMgRkYgRkYgMDMgMDAgMDAgNEMgNEUgIExOS0EuLi4uLi4uLi4uTE4K
ICAgIDM1MTA6IDRCIDQyIDAwIDEyIDBEIDA0IDBDIEZGIEZGIDAzIDAwIDAxIDRDIDRFIDRCIDQy
ICBLQi4uLi4uLi4uLi5MTktCCiAgICAzNTIwOiAwMCAxMiAwRSAwNCAwQyBGRiBGRiAwMyAwMCAw
QSAwMiA0QyA0RSA0QiA0MiAwMCAgLi4uLi4uLi4uLi5MTktCLgogICAgMzUzMDogMTIgMEUgMDQg
MEMgRkYgRkYgMDMgMDAgMEEgMDMgNEMgNEUgNEIgNDIgMDAgMTIgIC4uLi4uLi4uLi5MTktCLi4K
ICAgIDM1NDA6IDBEIDA0IDBDIEZGIEZGIDA0IDAwIDAwIDRDIDRFIDRCIDQyIDAwIDEyIDBEIDA0
ICAuLi4uLi4uLkxOS0IuLi4uCiAgICAzNTUwOiAwQyBGRiBGRiAwNCAwMCAwMSA0QyA0RSA0QiA0
MiAwMCAxMiAwRCAwNCAwQyBGRiAgLi4uLi4uTE5LQi4uLi4uLgogICAgMzU2MDogRkYgMDUgMDAg
MDAgNEMgNEUgNEIgNDMgMDAgMTIgMEQgMDQgMEMgRkYgRkYgMDUgIC4uLi5MTktDLi4uLi4uLi4K
ICAgIDM1NzA6IDAwIDAxIDRDIDRFIDRCIDQzIDAwIDEyIDBFIDA0IDBDIEZGIEZGIDA1IDAwIDBB
ICAuLkxOS0MuLi4uLi4uLi4uCiAgICAzNTgwOiAwMiA0QyA0RSA0QiA0MyAwMCAxMiAwRSAwNCAw
QyBGRiBGRiAwNSAwMCAwQSAwMyAgLkxOS0MuLi4uLi4uLi4uLgogICAgMzU5MDogNEMgNEUgNEIg
NDMgMDAgMTIgMEQgMDQgMEMgRkYgRkYgMDcgMDAgMDAgNEMgNEUgIExOS0MuLi4uLi4uLi4uTE4K
ICAgIDM1QTA6IDRCIDQ0IDAwIDEyIDBEIDA0IDBDIEZGIEZGIDA3IDAwIDAxIDRDIDRFIDRCIDQ0
ICBLRC4uLi4uLi4uLi5MTktECiAgICAzNUIwOiAwMCAwOCA0MSA1MiAzMCAzMSAxMiA0QiAwRSAx
MyAxMiAwOSAwNCAwQiBGRiBGRiAgLi5BUjAxLksuLi4uLi4uLgogICAgMzVDMDogMDAgMDAgMEEg
MzkgMTIgMEIgMDQgMEMgRkYgRkYgMDEgMDAgMDAgMDAgMEEgMzggIC4uLjkuLi4uLi4uLi4uLjgK
ICAgIDM1RDA6IDEyIDBCIDA0IDBDIEZGIEZGIDAxIDAwIDAxIDAwIDBBIDM4IDEyIDBDIDA0IDBD
ICAuLi4uLi4uLi4uLjguLi4uCiAgICAzNUUwOiBGRiBGRiAwMSAwMCAwQSAwMiAwMCAwQSAzOCAx
MiAwQyAwNCAwQyBGRiBGRiAwMSAgLi4uLi4uLi44Li4uLi4uLgogICAgMzVGMDogMDAgMEEgMDMg
MDAgMEEgMzggMTIgMEIgMDQgMEMgRkYgRkYgMDIgMDAgMDAgMDAgIC4uLi4uOC4uLi4uLi4uLi4K
ICAgIDM2MDA6IDBBIDM4IDEyIDBCIDA0IDBDIEZGIEZGIDAyIDAwIDAxIDAwIDBBIDM4IDEyIDBC
ICAuOC4uLi4uLi4uLi4uOC4uCiAgICAzNjEwOiAwNCAwQyBGRiBGRiAwMyAwMCAwMCAwMCAwQSAz
OSAxMiAwQiAwNCAwQyBGRiBGRiAgLi4uLi4uLi4uOS4uLi4uLgogICAgMzYyMDogMDMgMDAgMDEg
MDAgMEEgMzkgMTIgMEMgMDQgMEMgRkYgRkYgMDMgMDAgMEEgMDIgIC4uLi4uOS4uLi4uLi4uLi4K
ICAgIDM2MzA6IDAwIDBBIDM5IDEyIDBDIDA0IDBDIEZGIEZGIDAzIDAwIDBBIDAzIDAwIDBBIDM5
ICAuLjkuLi4uLi4uLi4uLi45CiAgICAzNjQwOiAxMiAwQiAwNCAwQyBGRiBGRiAwNCAwMCAwMCAw
MCAwQSAzOSAxMiAwQiAwNCAwQyAgLi4uLi4uLi4uLi45Li4uLgogICAgMzY1MDogRkYgRkYgMDQg
MDAgMDEgMDAgMEEgMzkgMTIgMEIgMDQgMEMgRkYgRkYgMDUgMDAgIC4uLi4uLi45Li4uLi4uLi4K
ICAgIDM2NjA6IDAwIDAwIDBBIDNBIDEyIDBCIDA0IDBDIEZGIEZGIDA1IDAwIDAxIDAwIDBBIDNB
ICAuLi46Li4uLi4uLi4uLi46CiAgICAzNjcwOiAxMiAwQyAwNCAwQyBGRiBGRiAwNSAwMCAwQSAw
MiAwMCAwQSAzQSAxMiAwQyAwNCAgLi4uLi4uLi4uLi4uOi4uLgogICAgMzY4MDogMEMgRkYgRkYg
MDUgMDAgMEEgMDMgMDAgMEEgM0EgMTIgMEIgMDQgMEMgRkYgRkYgIC4uLi4uLi4uLjouLi4uLi4K
ICAgIDM2OTA6IDA3IDAwIDAwIDAwIDBBIDNCIDEyIDBCIDA0IDBDIEZGIEZGIDA3IDAwIDAxIDAw
ICAuLi4uLjsuLi4uLi4uLi4uCiAgICAzNkEwOiAwQSAzQiAwOCA1MCAzMCAzOCA0NiAxMiAzNCAw
NCAxMiAwQiAwNCAwQiBGRiBGRiAgLjsuUDA4Ri40Li4uLi4uLgogICAgMzZCMDogMDAgNEMgNEUg
NEIgNDEgMDAgMTIgMEIgMDQgMEIgRkYgRkYgMDEgNEMgNEUgNEIgIC5MTktBLi4uLi4uLi5MTksK
ICAgIDM2QzA6IDQyIDAwIDEyIDBDIDA0IDBCIEZGIEZGIDBBIDAyIDRDIDRFIDRCIDQzIDAwIDEy
ICBCLi4uLi4uLi4uTE5LQy4uCiAgICAzNkQwOiAwQyAwNCAwQiBGRiBGRiAwQSAwMyA0QyA0RSA0
QiA0NCAwMCAwOCA0NyAzMCAzOCAgLi4uLi4uLkxOS0QuLkcwOAogICAgMzZFMDogNDYgMTIgMkMg
MDQgMTIgMDkgMDQgMEIgRkYgRkYgMDAgMDAgMEEgMzggMTIgMDkgIEYuLC4uLi4uLi4uLi44Li4K
ICAgIDM2RjA6IDA0IDBCIEZGIEZGIDAxIDAwIDBBIDM5IDEyIDBBIDA0IDBCIEZGIEZGIDBBIDAy
ICAuLi4uLi4uOS4uLi4uLi4uCiAgICAzNzAwOiAwMCAwQSAzQSAxMiAwQSAwNCAwQiBGRiBGRiAw
QSAwMyAwMCAwQSAzQiAwOCA1MCAgLi46Li4uLi4uLi4uLjsuUAogICAgMzcxMDogMzAgMzkgMzAg
MTIgMzQgMDQgMTIgMEIgMDQgMEIgRkYgRkYgMDAgNEMgNEUgNEIgIDA5MC40Li4uLi4uLi5MTksK
ICAgIDM3MjA6IDQ1IDAwIDEyIDBCIDA0IDBCIEZGIEZGIDAxIDRDIDRFIDRCIDQ2IDAwIDEyIDBD
ICBFLi4uLi4uLi5MTktGLi4uCiAgICAzNzMwOiAwNCAwQiBGRiBGRiAwQSAwMiA0QyA0RSA0QiA0
NyAwMCAxMiAwQyAwNCAwQiBGRiAgLi4uLi4uTE5LRy4uLi4uLgogICAgMzc0MDogRkYgMEEgMDMg
NEMgNEUgNEIgNDggMDAgMDggNDcgMzAgMzkgMzAgMTIgMkMgMDQgIC4uLkxOS0guLkcwOTAuLC4K
ICAgIDM3NTA6IDEyIDA5IDA0IDBCIEZGIEZGIDAwIDAwIDBBIDNDIDEyIDA5IDA0IDBCIEZGIEZG
ICAuLi4uLi4uLi48Li4uLi4uCiAgICAzNzYwOiAwMSAwMCAwQSAzRCAxMiAwQSAwNCAwQiBGRiBG
RiAwQSAwMiAwMCAwQSAzRSAxMiAgLi4uPS4uLi4uLi4uLi4+LgogICAgMzc3MDogMEEgMDQgMEIg
RkYgRkYgMEEgMDMgMDAgMEEgM0YgMDggNTAgMzAgMzkgMzEgMTIgIC4uLi4uLi4uLj8uUDA5MS4K
ICAgIDM3ODA6IDM0IDA0IDEyIDBCIDA0IDBCIEZGIEZGIDAwIDRDIDRFIDRCIDQxIDAwIDEyIDBC
ICA0Li4uLi4uLi5MTktBLi4uCiAgICAzNzkwOiAwNCAwQiBGRiBGRiAwMSA0QyA0RSA0QiA0MiAw
MCAxMiAwQyAwNCAwQiBGRiBGRiAgLi4uLi5MTktCLi4uLi4uLgogICAgMzdBMDogMEEgMDIgNEMg
NEUgNEIgNDMgMDAgMTIgMEMgMDQgMEIgRkYgRkYgMEEgMDMgNEMgIC4uTE5LQy4uLi4uLi4uLkwK
ICAgIDM3QjA6IDRFIDRCIDQ0IDAwIDA4IDQ3IDMwIDM5IDMxIDEyIDJDIDA0IDEyIDA5IDA0IDBC
ICBOS0QuLkcwOTEuLC4uLi4uCiAgICAzN0MwOiBGRiBGRiAwMCAwMCAwQSA0MCAxMiAwOSAwNCAw
QiBGRiBGRiAwMSAwMCAwQSA0MSAgLi4uLi5ALi4uLi4uLi4uQQogICAgMzdEMDogMTIgMEEgMDQg
MEIgRkYgRkYgMEEgMDIgMDAgMEEgNDIgMTIgMEEgMDQgMEIgRkYgIC4uLi4uLi4uLi5CLi4uLi4K
ICAgIDM3RTA6IEZGIDBBIDAzIDAwIDBBIDQzIDA4IDUwIDMwIDM5IDMyIDEyIDM0IDA0IDEyIDBC
ICAuLi4uLkMuUDA5Mi40Li4uCiAgICAzN0YwOiAwNCAwQiBGRiBGRiAwMCA0QyA0RSA0QiA0NSAw
MCAxMiAwQiAwNCAwQiBGRiBGRiAgLi4uLi5MTktFLi4uLi4uLgogICAgMzgwMDogMDEgNEMgNEUg
NEIgNDYgMDAgMTIgMEMgMDQgMEIgRkYgRkYgMEEgMDIgNEMgNEUgIC5MTktGLi4uLi4uLi4uTE4K
ICAgIDM4MTA6IDRCIDQ3IDAwIDEyIDBDIDA0IDBCIEZGIEZGIDBBIDAzIDRDIDRFIDRCIDQ4IDAw
ICBLRy4uLi4uLi4uLkxOS0guCiAgICAzODIwOiAwOCA0NyAzMCAzOSAzMiAxMiAyQyAwNCAxMiAw
OSAwNCAwQiBGRiBGRiAwMCAwMCAgLkcwOTIuLC4uLi4uLi4uLgogICAgMzgzMDogMEEgNDQgMTIg
MDkgMDQgMEIgRkYgRkYgMDEgMDAgMEEgNDUgMTIgMEEgMDQgMEIgIC5ELi4uLi4uLi4uRS4uLi4K
ICAgIDM4NDA6IEZGIEZGIDBBIDAyIDAwIDBBIDQ2IDEyIDBBIDA0IDBCIEZGIEZGIDBBIDAzIDAw
ICAuLi4uLi5GLi4uLi4uLi4uCiAgICAzODUwOiAwQSA0NyAwOCA1MCAzMCAzOSAzMyAxMiAzNCAw
NCAxMiAwQiAwNCAwQiBGRiBGRiAgLkcuUDA5My40Li4uLi4uLgogICAgMzg2MDogMDAgNEMgNEUg
NEIgNDEgMDAgMTIgMEIgMDQgMEIgRkYgRkYgMDEgNEMgNEUgNEIgIC5MTktBLi4uLi4uLi5MTksK
ICAgIDM4NzA6IDQyIDAwIDEyIDBDIDA0IDBCIEZGIEZGIDBBIDAyIDRDIDRFIDRCIDQzIDAwIDEy
ICBCLi4uLi4uLi4uTE5LQy4uCiAgICAzODgwOiAwQyAwNCAwQiBGRiBGRiAwQSAwMyA0QyA0RSA0
QiA0NCAwMCAwOCA0NyAzMCAzOSAgLi4uLi4uLkxOS0QuLkcwOQogICAgMzg5MDogMzMgMTIgMkMg
MDQgMTIgMDkgMDQgMEIgRkYgRkYgMDAgMDAgMEEgNDggMTIgMDkgIDMuLC4uLi4uLi4uLi5ILi4K
ICAgIDM4QTA6IDA0IDBCIEZGIEZGIDAxIDAwIDBBIDQ5IDEyIDBBIDA0IDBCIEZGIEZGIDBBIDAy
ICAuLi4uLi4uSS4uLi4uLi4uCiAgICAzOEIwOiAwMCAwQSA0QSAxMiAwQSAwNCAwQiBGRiBGRiAw
QSAwMyAwMCAwQSA0QiAwOCA1MCAgLi5KLi4uLi4uLi4uLksuUAogICAgMzhDMDogMzAgMzkgMzQg
MTIgMzQgMDQgMTIgMEIgMDQgMEIgRkYgRkYgMDAgNEMgNEUgNEIgIDA5NC40Li4uLi4uLi5MTksK
ICAgIDM4RDA6IDQzIDAwIDEyIDBCIDA0IDBCIEZGIEZGIDAxIDRDIDRFIDRCIDQ0IDAwIDEyIDBD
ICBDLi4uLi4uLi5MTktELi4uCiAgICAzOEUwOiAwNCAwQiBGRiBGRiAwQSAwMiA0QyA0RSA0QiA0
MSAwMCAxMiAwQyAwNCAwQiBGRiAgLi4uLi4uTE5LQS4uLi4uLgogICAgMzhGMDogRkYgMEEgMDMg
NEMgNEUgNEIgNDIgMDAgMDggNDcgMzAgMzkgMzQgMTIgMkMgMDQgIC4uLkxOS0IuLkcwOTQuLC4K
ICAgIDM5MDA6IDEyIDA5IDA0IDBCIEZGIEZGIDAwIDAwIDBBIDRBIDEyIDA5IDA0IDBCIEZGIEZG
ICAuLi4uLi4uLi5KLi4uLi4uCiAgICAzOTEwOiAwMSAwMCAwQSA0QiAxMiAwQSAwNCAwQiBGRiBG
RiAwQSAwMiAwMCAwQSA0OCAxMiAgLi4uSy4uLi4uLi4uLi5ILgogICAgMzkyMDogMEEgMDQgMEIg
RkYgRkYgMEEgMDMgMDAgMEEgNDkgMDggNTAgMzAgMzkgMzUgMTIgIC4uLi4uLi4uLkkuUDA5NS4K
ICAgIDM5MzA6IDM0IDA0IDEyIDBCIDA0IDBCIEZGIEZGIDAwIDRDIDRFIDRCIDQ3IDAwIDEyIDBC
ICA0Li4uLi4uLi5MTktHLi4uCiAgICAzOTQwOiAwNCAwQiBGRiBGRiAwMSA0QyA0RSA0QiA0OCAw
MCAxMiAwQyAwNCAwQiBGRiBGRiAgLi4uLi5MTktILi4uLi4uLgogICAgMzk1MDogMEEgMDIgNEMg
NEUgNEIgNDUgMDAgMTIgMEMgMDQgMEIgRkYgRkYgMEEgMDMgNEMgIC4uTE5LRS4uLi4uLi4uLkwK
ICAgIDM5NjA6IDRFIDRCIDQ2IDAwIDA4IDQ3IDMwIDM5IDM1IDEyIDJDIDA0IDEyIDA5IDA0IDBC
ICBOS0YuLkcwOTUuLC4uLi4uCiAgICAzOTcwOiBGRiBGRiAwMCAwMCAwQSA0NiAxMiAwOSAwNCAw
QiBGRiBGRiAwMSAwMCAwQSA0NyAgLi4uLi5GLi4uLi4uLi4uRwogICAgMzk4MDogMTIgMEEgMDQg
MEIgRkYgRkYgMEEgMDIgMDAgMEEgNDQgMTIgMEEgMDQgMEIgRkYgIC4uLi4uLi4uLi5ELi4uLi4K
ICAgIDM5OTA6IEZGIDBBIDAzIDAwIDBBIDQ1IDA4IDUwIDMwIDM5IDM2IDEyIDM0IDA0IDEyIDBC
ICAuLi4uLkUuUDA5Ni40Li4uCiAgICAzOUEwOiAwNCAwQiBGRiBGRiAwMCA0QyA0RSA0QiA0MyAw
MCAxMiAwQiAwNCAwQiBGRiBGRiAgLi4uLi5MTktDLi4uLi4uLgogICAgMzlCMDogMDEgNEMgNEUg
NEIgNDQgMDAgMTIgMEMgMDQgMEIgRkYgRkYgMEEgMDIgNEMgNEUgIC5MTktELi4uLi4uLi4uTE4K
ICAgIDM5QzA6IDRCIDQxIDAwIDEyIDBDIDA0IDBCIEZGIEZGIDBBIDAzIDRDIDRFIDRCIDQyIDAw
ICBLQS4uLi4uLi4uLkxOS0IuCiAgICAzOUQwOiAwOCA0NyAzMCAzOSAzNiAxMiAyQyAwNCAxMiAw
OSAwNCAwQiBGRiBGRiAwMCAwMCAgLkcwOTYuLC4uLi4uLi4uLgogICAgMzlFMDogMEEgNDIgMTIg
MDkgMDQgMEIgRkYgRkYgMDEgMDAgMEEgNDMgMTIgMEEgMDQgMEIgIC5CLi4uLi4uLi4uQy4uLi4K
ICAgIDM5RjA6IEZGIEZGIDBBIDAyIDAwIDBBIDQwIDEyIDBBIDA0IDBCIEZGIEZGIDBBIDAzIDAw
ICAuLi4uLi5ALi4uLi4uLi4uCiAgICAzQTAwOiAwQSA0MSAwOCA1MCAzMCAzOSAzNyAxMiAzNCAw
NCAxMiAwQiAwNCAwQiBGRiBGRiAgLkEuUDA5Ny40Li4uLi4uLgogICAgM0ExMDogMDAgNEMgNEUg
NEIgNDcgMDAgMTIgMEIgMDQgMEIgRkYgRkYgMDEgNEMgNEUgNEIgIC5MTktHLi4uLi4uLi5MTksK
ICAgIDNBMjA6IDQ4IDAwIDEyIDBDIDA0IDBCIEZGIEZGIDBBIDAyIDRDIDRFIDRCIDQ1IDAwIDEy
ICBILi4uLi4uLi4uTE5LRS4uCiAgICAzQTMwOiAwQyAwNCAwQiBGRiBGRiAwQSAwMyA0QyA0RSA0
QiA0NiAwMCAwOCA0NyAzMCAzOSAgLi4uLi4uLkxOS0YuLkcwOQogICAgM0E0MDogMzcgMTIgMkMg
MDQgMTIgMDkgMDQgMEIgRkYgRkYgMDAgMDAgMEEgM0UgMTIgMDkgIDcuLC4uLi4uLi4uLi4+Li4K
ICAgIDNBNTA6IDA0IDBCIEZGIEZGIDAxIDAwIDBBIDNGIDEyIDBBIDA0IDBCIEZGIEZGIDBBIDAy
ICAuLi4uLi4uPy4uLi4uLi4uCiAgICAzQTYwOiAwMCAwQSAzQyAxMiAwQSAwNCAwQiBGRiBGRiAw
QSAwMyAwMCAwQSAzRCAwOCA1MCAgLi48Li4uLi4uLi4uLj0uUAogICAgM0E3MDogMzAgMzkgMzgg
MTIgMzQgMDQgMTIgMEIgMDQgMEIgRkYgRkYgMDAgNEMgNEUgNEIgIDA5OC40Li4uLi4uLi5MTksK
ICAgIDNBODA6IDQzIDAwIDEyIDBCIDA0IDBCIEZGIEZGIDAxIDRDIDRFIDRCIDQ0IDAwIDEyIDBD
ICBDLi4uLi4uLi5MTktELi4uCiAgICAzQTkwOiAwNCAwQiBGRiBGRiAwQSAwMiA0QyA0RSA0QiA0
MSAwMCAxMiAwQyAwNCAwQiBGRiAgLi4uLi4uTE5LQS4uLi4uLgogICAgM0FBMDogRkYgMEEgMDMg
NEMgNEUgNEIgNDIgMDAgMDggNDcgMzAgMzkgMzggMTIgMkMgMDQgIC4uLkxOS0IuLkcwOTguLC4K
ICAgIDNBQjA6IDEyIDA5IDA0IDBCIEZGIEZGIDAwIDAwIDBBIDNBIDEyIDA5IDA0IDBCIEZGIEZG
ICAuLi4uLi4uLi46Li4uLi4uCiAgICAzQUMwOiAwMSAwMCAwQSAzQiAxMiAwQSAwNCAwQiBGRiBG
RiAwQSAwMiAwMCAwQSAzOCAxMiAgLi4uOy4uLi4uLi4uLi44LgogICAgM0FEMDogMEEgMDQgMEIg
RkYgRkYgMEEgMDMgMDAgMEEgMzkgMDggNTAgMzAgMzkgMzkgMTIgIC4uLi4uLi4uLjkuUDA5OS4K
ICAgIDNBRTA6IDM0IDA0IDEyIDBCIDA0IDBCIEZGIEZGIDAwIDRDIDRFIDRCIDQyIDAwIDEyIDBC
ICA0Li4uLi4uLi5MTktCLi4uCiAgICAzQUYwOiAwNCAwQiBGRiBGRiAwMSA0QyA0RSA0QiA0MyAw
MCAxMiAwQyAwNCAwQiBGRiBGRiAgLi4uLi5MTktDLi4uLi4uLgogICAgM0IwMDogMEEgMDIgNEMg
NEUgNEIgNDQgMDAgMTIgMEMgMDQgMEIgRkYgRkYgMEEgMDMgNEMgIC4uTE5LRC4uLi4uLi4uLkwK
ICAgIDNCMTA6IDRFIDRCIDQxIDAwIDA4IDQ3IDMwIDM5IDM5IDEyIDJDIDA0IDEyIDA5IDA0IDBC
ICBOS0EuLkcwOTkuLC4uLi4uCiAgICAzQjIwOiBGRiBGRiAwMCAwMCAwQSAzOSAxMiAwOSAwNCAw
QiBGRiBGRiAwMSAwMCAwQSAzQSAgLi4uLi45Li4uLi4uLi4uOgogICAgM0IzMDogMTIgMEEgMDQg
MEIgRkYgRkYgMEEgMDIgMDAgMEEgM0IgMTIgMEEgMDQgMEIgRkYgIC4uLi4uLi4uLi47Li4uLi4K
ICAgIDNCNDA6IEZGIDBBIDAzIDAwIDBBIDM4IDA4IDUwIDMwIDM5IDQxIDEyIDM0IDA0IDEyIDBC
ICAuLi4uLjguUDA5QS40Li4uCiAgICAzQjUwOiAwNCAwQiBGRiBGRiAwMCA0QyA0RSA0QiA0NiAw
MCAxMiAwQiAwNCAwQiBGRiBGRiAgLi4uLi5MTktGLi4uLi4uLgogICAgM0I2MDogMDEgNEMgNEUg
NEIgNDcgMDAgMTIgMEMgMDQgMEIgRkYgRkYgMEEgMDIgNEMgNEUgIC5MTktHLi4uLi4uLi4uTE4K
ICAgIDNCNzA6IDRCIDQ4IDAwIDEyIDBDIDA0IDBCIEZGIEZGIDBBIDAzIDRDIDRFIDRCIDQ1IDAw
ICBLSC4uLi4uLi4uLkxOS0UuCiAgICAzQjgwOiAwOCA0NyAzMCAzOSA0MSAxMiAyQyAwNCAxMiAw
OSAwNCAwQiBGRiBGRiAwMCAwMCAgLkcwOUEuLC4uLi4uLi4uLgogICAgM0I5MDogMEEgM0QgMTIg
MDkgMDQgMEIgRkYgRkYgMDEgMDAgMEEgM0UgMTIgMEEgMDQgMEIgIC49Li4uLi4uLi4uPi4uLi4K
ICAgIDNCQTA6IEZGIEZGIDBBIDAyIDAwIDBBIDNGIDEyIDBBIDA0IDBCIEZGIEZGIDBBIDAzIDAw
ICAuLi4uLi4/Li4uLi4uLi4uCiAgICAzQkIwOiAwQSAzQyAwOCA1MCAzMCAzOSA0MiAxMiAzNCAw
NCAxMiAwQiAwNCAwQiBGRiBGRiAgLjwuUDA5Qi40Li4uLi4uLgogICAgM0JDMDogMDAgNEMgNEUg
NEIgNDIgMDAgMTIgMEIgMDQgMEIgRkYgRkYgMDEgNEMgNEUgNEIgIC5MTktCLi4uLi4uLi5MTksK
ICAgIDNCRDA6IDQzIDAwIDEyIDBDIDA0IDBCIEZGIEZGIDBBIDAyIDRDIDRFIDRCIDQ0IDAwIDEy
ICBDLi4uLi4uLi4uTE5LRC4uCiAgICAzQkUwOiAwQyAwNCAwQiBGRiBGRiAwQSAwMyA0QyA0RSA0
QiA0MSAwMCAwOCA0NyAzMCAzOSAgLi4uLi4uLkxOS0EuLkcwOQogICAgM0JGMDogNDIgMTIgMkMg
MDQgMTIgMDkgMDQgMEIgRkYgRkYgMDAgMDAgMEEgNDEgMTIgMDkgIEIuLC4uLi4uLi4uLi5BLi4K
ICAgIDNDMDA6IDA0IDBCIEZGIEZGIDAxIDAwIDBBIDQyIDEyIDBBIDA0IDBCIEZGIEZGIDBBIDAy
ICAuLi4uLi4uQi4uLi4uLi4uCiAgICAzQzEwOiAwMCAwQSA0MyAxMiAwQSAwNCAwQiBGRiBGRiAw
QSAwMyAwMCAwQSA0MCAwOCA1MCAgLi5DLi4uLi4uLi4uLkAuUAogICAgM0MyMDogMzAgMzkgNDMg
MTIgMzQgMDQgMTIgMEIgMDQgMEIgRkYgRkYgMDAgNEMgNEUgNEIgIDA5Qy40Li4uLi4uLi5MTksK
ICAgIDNDMzA6IDQ2IDAwIDEyIDBCIDA0IDBCIEZGIEZGIDAxIDRDIDRFIDRCIDQ3IDAwIDEyIDBD
ICBGLi4uLi4uLi5MTktHLi4uCiAgICAzQzQwOiAwNCAwQiBGRiBGRiAwQSAwMiA0QyA0RSA0QiA0
OCAwMCAxMiAwQyAwNCAwQiBGRiAgLi4uLi4uTE5LSC4uLi4uLgogICAgM0M1MDogRkYgMEEgMDMg
NEMgNEUgNEIgNDUgMDAgMDggNDcgMzAgMzkgNDMgMTIgMkMgMDQgIC4uLkxOS0UuLkcwOUMuLC4K
ICAgIDNDNjA6IDEyIDA5IDA0IDBCIEZGIEZGIDAwIDAwIDBBIDQ1IDEyIDA5IDA0IDBCIEZGIEZG
ICAuLi4uLi4uLi5FLi4uLi4uCiAgICAzQzcwOiAwMSAwMCAwQSA0NiAxMiAwQSAwNCAwQiBGRiBG
RiAwQSAwMiAwMCAwQSA0NyAxMiAgLi4uRi4uLi4uLi4uLi5HLgogICAgM0M4MDogMEEgMDQgMEIg
RkYgRkYgMEEgMDMgMDAgMEEgNDQgMDggNTAgMzAgMzkgNDQgMTIgIC4uLi4uLi4uLkQuUDA5RC4K
ICAgIDNDOTA6IDM0IDA0IDEyIDBCIDA0IDBCIEZGIEZGIDAwIDRDIDRFIDRCIDQyIDAwIDEyIDBC
ICA0Li4uLi4uLi5MTktCLi4uCiAgICAzQ0EwOiAwNCAwQiBGRiBGRiAwMSA0QyA0RSA0QiA0MyAw
MCAxMiAwQyAwNCAwQiBGRiBGRiAgLi4uLi5MTktDLi4uLi4uLgogICAgM0NCMDogMEEgMDIgNEMg
NEUgNEIgNDQgMDAgMTIgMEMgMDQgMEIgRkYgRkYgMEEgMDMgNEMgIC4uTE5LRC4uLi4uLi4uLkwK
ICAgIDNDQzA6IDRFIDRCIDQxIDAwIDA4IDQ3IDMwIDM5IDQ0IDEyIDJDIDA0IDEyIDA5IDA0IDBC
ICBOS0EuLkcwOUQuLC4uLi4uCiAgICAzQ0QwOiBGRiBGRiAwMCAwMCAwQSA0OSAxMiAwOSAwNCAw
QiBGRiBGRiAwMSAwMCAwQSA0QSAgLi4uLi5JLi4uLi4uLi4uSgogICAgM0NFMDogMTIgMEEgMDQg
MEIgRkYgRkYgMEEgMDIgMDAgMEEgNEIgMTIgMEEgMDQgMEIgRkYgIC4uLi4uLi4uLi5LLi4uLi4K
ICAgIDNDRjA6IEZGIDBBIDAzIDAwIDBBIDQ4IDA4IDUwIDMwIDM5IDQ1IDEyIDM0IDA0IDEyIDBC
ICAuLi4uLkguUDA5RS40Li4uCiAgICAzRDAwOiAwNCAwQiBGRiBGRiAwMCA0QyA0RSA0QiA0NCAw
MCAxMiAwQiAwNCAwQiBGRiBGRiAgLi4uLi5MTktELi4uLi4uLgogICAgM0QxMDogMDEgNEMgNEUg
NEIgNDEgMDAgMTIgMEMgMDQgMEIgRkYgRkYgMEEgMDIgNEMgNEUgIC5MTktBLi4uLi4uLi4uTE4K
ICAgIDNEMjA6IDRCIDQyIDAwIDEyIDBDIDA0IDBCIEZGIEZGIDBBIDAzIDRDIDRFIDRCIDQzIDAw
ICBLQi4uLi4uLi4uLkxOS0MuCiAgICAzRDMwOiAwOCA0NyAzMCAzOSA0NSAxMiAyQyAwNCAxMiAw
OSAwNCAwQiBGRiBGRiAwMCAwMCAgLkcwOUUuLC4uLi4uLi4uLgogICAgM0Q0MDogMEEgNEIgMTIg
MDkgMDQgMEIgRkYgRkYgMDEgMDAgMEEgNDggMTIgMEEgMDQgMEIgIC5LLi4uLi4uLi4uSC4uLi4K
ICAgIDNENTA6IEZGIEZGIDBBIDAyIDAwIDBBIDQ5IDEyIDBBIDA0IDBCIEZGIEZGIDBBIDAzIDAw
ICAuLi4uLi5JLi4uLi4uLi4uCiAgICAzRDYwOiAwQSA0QSAwOCA1MCAzMCAzOSA0NiAxMiAzNCAw
NCAxMiAwQiAwNCAwQiBGRiBGRiAgLkouUDA5Ri40Li4uLi4uLgogICAgM0Q3MDogMDAgNEMgNEUg
NEIgNDggMDAgMTIgMEIgMDQgMEIgRkYgRkYgMDEgNEMgNEUgNEIgIC5MTktILi4uLi4uLi5MTksK
ICAgIDNEODA6IDQ1IDAwIDEyIDBDIDA0IDBCIEZGIEZGIDBBIDAyIDRDIDRFIDRCIDQ2IDAwIDEy
ICBFLi4uLi4uLi4uTE5LRi4uCiAgICAzRDkwOiAwQyAwNCAwQiBGRiBGRiAwQSAwMyA0QyA0RSA0
QiA0NyAwMCAwOCA0NyAzMCAzOSAgLi4uLi4uLkxOS0cuLkcwOQogICAgM0RBMDogNDYgMTIgMkMg
MDQgMTIgMDkgMDQgMEIgRkYgRkYgMDAgMDAgMEEgNDcgMTIgMDkgIEYuLC4uLi4uLi4uLi5HLi4K
ICAgIDNEQjA6IDA0IDBCIEZGIEZGIDAxIDAwIDBBIDQ0IDEyIDBBIDA0IDBCIEZGIEZGIDBBIDAy
ICAuLi4uLi4uRC4uLi4uLi4uCiAgICAzREMwOiAwMCAwQSA0NSAxMiAwQSAwNCAwQiBGRiBGRiAw
QSAwMyAwMCAwQSA0NiAwOCA1MCAgLi5FLi4uLi4uLi4uLkYuUAogICAgM0REMDogMzAgNDEgMzAg
MTIgMzQgMDQgMTIgMEIgMDQgMEIgRkYgRkYgMDAgNEMgNEUgNEIgIDBBMC40Li4uLi4uLi5MTksK
ICAgIDNERTA6IDQ0IDAwIDEyIDBCIDA0IDBCIEZGIEZGIDAxIDRDIDRFIDRCIDQxIDAwIDEyIDBD
ICBELi4uLi4uLi5MTktBLi4uCiAgICAzREYwOiAwNCAwQiBGRiBGRiAwQSAwMiA0QyA0RSA0QiA0
MiAwMCAxMiAwQyAwNCAwQiBGRiAgLi4uLi4uTE5LQi4uLi4uLgogICAgM0UwMDogRkYgMEEgMDMg
NEMgNEUgNEIgNDMgMDAgMDggNDcgMzAgNDEgMzAgMTIgMkMgMDQgIC4uLkxOS0MuLkcwQTAuLC4K
ICAgIDNFMTA6IDEyIDA5IDA0IDBCIEZGIEZGIDAwIDAwIDBBIDQzIDEyIDA5IDA0IDBCIEZGIEZG
ICAuLi4uLi4uLi5DLi4uLi4uCiAgICAzRTIwOiAwMSAwMCAwQSA0MCAxMiAwQSAwNCAwQiBGRiBG
RiAwQSAwMiAwMCAwQSA0MSAxMiAgLi4uQC4uLi4uLi4uLi5BLgogICAgM0UzMDogMEEgMDQgMEIg
RkYgRkYgMEEgMDMgMDAgMEEgNDIgMDggNTAgMzAgNDEgMzEgMTIgIC4uLi4uLi4uLkIuUDBBMS4K
ICAgIDNFNDA6IDM0IDA0IDEyIDBCIDA0IDBCIEZGIEZGIDAwIDRDIDRFIDRCIDQ4IDAwIDEyIDBC
ICA0Li4uLi4uLi5MTktILi4uCiAgICAzRTUwOiAwNCAwQiBGRiBGRiAwMSA0QyA0RSA0QiA0NSAw
MCAxMiAwQyAwNCAwQiBGRiBGRiAgLi4uLi5MTktFLi4uLi4uLgogICAgM0U2MDogMEEgMDIgNEMg
NEUgNEIgNDYgMDAgMTIgMEMgMDQgMEIgRkYgRkYgMEEgMDMgNEMgIC4uTE5LRi4uLi4uLi4uLkwK
ICAgIDNFNzA6IDRFIDRCIDQ3IDAwIDA4IDQ3IDMwIDQxIDMxIDEyIDJDIDA0IDEyIDA5IDA0IDBC
ICBOS0cuLkcwQTEuLC4uLi4uCiAgICAzRTgwOiBGRiBGRiAwMCAwMCAwQSAzRiAxMiAwOSAwNCAw
QiBGRiBGRiAwMSAwMCAwQSAzQyAgLi4uLi4/Li4uLi4uLi4uPAogICAgM0U5MDogMTIgMEEgMDQg
MEIgRkYgRkYgMEEgMDIgMDAgMEEgM0QgMTIgMEEgMDQgMEIgRkYgIC4uLi4uLi4uLi49Li4uLi4K
ICAgIDNFQTA6IEZGIDBBIDAzIDAwIDBBIDNFIDA4IDUwIDMwIDQxIDMyIDEyIDM0IDA0IDEyIDBC
ICAuLi4uLj4uUDBBMi40Li4uCiAgICAzRUIwOiAwNCAwQiBGRiBGRiAwMCA0QyA0RSA0QiA0NCAw
MCAxMiAwQiAwNCAwQiBGRiBGRiAgLi4uLi5MTktELi4uLi4uLgogICAgM0VDMDogMDEgNEMgNEUg
NEIgNDEgMDAgMTIgMEMgMDQgMEIgRkYgRkYgMEEgMDIgNEMgNEUgIC5MTktBLi4uLi4uLi4uTE4K
ICAgIDNFRDA6IDRCIDQyIDAwIDEyIDBDIDA0IDBCIEZGIEZGIDBBIDAzIDRDIDRFIDRCIDQzIDAw
ICBLQi4uLi4uLi4uLkxOS0MuCiAgICAzRUUwOiAwOCA0NyAzMCA0MSAzMiAxMiAyQyAwNCAxMiAw
OSAwNCAwQiBGRiBGRiAwMCAwMCAgLkcwQTIuLC4uLi4uLi4uLgogICAgM0VGMDogMEEgM0IgMTIg
MDkgMDQgMEIgRkYgRkYgMDEgMDAgMEEgMzggMTIgMEEgMDQgMEIgIC47Li4uLi4uLi4uOC4uLi4K
ICAgIDNGMDA6IEZGIEZGIDBBIDAyIDAwIDBBIDM5IDEyIDBBIDA0IDBCIEZGIEZGIDBBIDAzIDAw
ICAuLi4uLi45Li4uLi4uLi4uCiAgICAzRjEwOiAwQSAzQSAwOCA1MCAzMCA0MSAzMyAxMiAzNCAw
NCAxMiAwQiAwNCAwQiBGRiBGRiAgLjouUDBBMy40Li4uLi4uLgogICAgM0YyMDogMDAgNEMgNEUg
NEIgNDEgMDAgMTIgMEIgMDQgMEIgRkYgRkYgMDEgNEMgNEUgNEIgIC5MTktBLi4uLi4uLi5MTksK
ICAgIDNGMzA6IDQyIDAwIDEyIDBDIDA0IDBCIEZGIEZGIDBBIDAyIDRDIDRFIDRCIDQzIDAwIDEy
ICBCLi4uLi4uLi4uTE5LQy4uCiAgICAzRjQwOiAwQyAwNCAwQiBGRiBGRiAwQSAwMyA0QyA0RSA0
QiA0NCAwMCAwOCA0NyAzMCA0MSAgLi4uLi4uLkxOS0QuLkcwQQogICAgM0Y1MDogMzMgMTIgMkMg
MDQgMTIgMDkgMDQgMEIgRkYgRkYgMDAgMDAgMEEgMzggMTIgMDkgIDMuLC4uLi4uLi4uLi44Li4K
ICAgIDNGNjA6IDA0IDBCIEZGIEZGIDAxIDAwIDBBIDM5IDEyIDBBIDA0IDBCIEZGIEZGIDBBIDAy
ICAuLi4uLi4uOS4uLi4uLi4uCiAgICAzRjcwOiAwMCAwQSAzQSAxMiAwQSAwNCAwQiBGRiBGRiAw
QSAwMyAwMCAwQSAzQiAwOCA1MCAgLi46Li4uLi4uLi4uLjsuUAogICAgM0Y4MDogMzAgNDEgMzQg
MTIgMzQgMDQgMTIgMEIgMDQgMEIgRkYgRkYgMDAgNEMgNEUgNEIgIDBBNC40Li4uLi4uLi5MTksK
ICAgIDNGOTA6IDQ1IDAwIDEyIDBCIDA0IDBCIEZGIEZGIDAxIDRDIDRFIDRCIDQ2IDAwIDEyIDBD
ICBFLi4uLi4uLi5MTktGLi4uCiAgICAzRkEwOiAwNCAwQiBGRiBGRiAwQSAwMiA0QyA0RSA0QiA0
NyAwMCAxMiAwQyAwNCAwQiBGRiAgLi4uLi4uTE5LRy4uLi4uLgogICAgM0ZCMDogRkYgMEEgMDMg
NEMgNEUgNEIgNDggMDAgMDggNDcgMzAgNDEgMzQgMTIgMkMgMDQgIC4uLkxOS0guLkcwQTQuLC4K
ICAgIDNGQzA6IDEyIDA5IDA0IDBCIEZGIEZGIDAwIDAwIDBBIDNDIDEyIDA5IDA0IDBCIEZGIEZG
ICAuLi4uLi4uLi48Li4uLi4uCiAgICAzRkQwOiAwMSAwMCAwQSAzRCAxMiAwQSAwNCAwQiBGRiBG
RiAwQSAwMiAwMCAwQSAzRSAxMiAgLi4uPS4uLi4uLi4uLi4+LgogICAgM0ZFMDogMEEgMDQgMEIg
RkYgRkYgMEEgMDMgMDAgMEEgM0YgMDggNTAgMzAgNDEgMzUgMTIgIC4uLi4uLi4uLj8uUDBBNS4K
ICAgIDNGRjA6IDM0IDA0IDEyIDBCIDA0IDBCIEZGIEZGIDAwIDRDIDRFIDRCIDQxIDAwIDEyIDBC
ICA0Li4uLi4uLi5MTktBLi4uCiAgICA0MDAwOiAwNCAwQiBGRiBGRiAwMSA0QyA0RSA0QiA0MiAw
MCAxMiAwQyAwNCAwQiBGRiBGRiAgLi4uLi5MTktCLi4uLi4uLgogICAgNDAxMDogMEEgMDIgNEMg
NEUgNEIgNDMgMDAgMTIgMEMgMDQgMEIgRkYgRkYgMEEgMDMgNEMgIC4uTE5LQy4uLi4uLi4uLkwK
ICAgIDQwMjA6IDRFIDRCIDQ0IDAwIDA4IDQ3IDMwIDQxIDM1IDEyIDJDIDA0IDEyIDA5IDA0IDBC
ICBOS0QuLkcwQTUuLC4uLi4uCiAgICA0MDMwOiBGRiBGRiAwMCAwMCAwQSA0MCAxMiAwOSAwNCAw
QiBGRiBGRiAwMSAwMCAwQSA0MSAgLi4uLi5ALi4uLi4uLi4uQQogICAgNDA0MDogMTIgMEEgMDQg
MEIgRkYgRkYgMEEgMDIgMDAgMEEgNDIgMTIgMEEgMDQgMEIgRkYgIC4uLi4uLi4uLi5CLi4uLi4K
ICAgIDQwNTA6IEZGIDBBIDAzIDAwIDBBIDQzIDEwIDhBIEI2IDA1IDVGIDUzIDQyIDVGIDVCIDgy
ICAuLi4uLkMuLi4uX1NCX1suCiAgICA0MDYwOiA4NCA4NSAwMSA1MCA0MyA0OSAzMyAwOCA1RiA0
OCA0OSA0NCAwQyA0MSBEMCAwQSAgLi4uUENJMy5fSElELkEuLgogICAgNDA3MDogMDggMDggNUYg
NDMgNDkgNDQgMEMgNDEgRDAgMEEgMDMgMDggNUYgNDEgNDQgNTIgIC4uX0NJRC5BLi4uLl9BRFIK
ICAgIDQwODA6IDAwIDE0IDBBIDVFIDQyIDRFIDMwIDMzIDAwIEE0IDBBIDAzIDE0IDBCIDVGIDQy
ICAuLi5eQk4wMy4uLi4uLl9CCiAgICA0MDkwOiA0MiA0RSAwMCBBNCA0MiA0RSAzMCAzMyAwOCA1
RiA1NSA0OSA0NCAwQSAwMyAxNCAgQk4uLkJOMDMuX1VJRC4uLgogICAgNDBBMDogMTYgNUYgNTAg
NTIgNTQgMDAgQTAgMEEgNTAgNDkgNDMgNEQgQTQgNDEgNTIgMzAgIC5fUFJULi4uUElDTS5BUjAK
ICAgIDQwQjA6IDMzIEE0IDUwIDQ0IDMwIDMzIDA4IDQzIDUwIDUyIDQyIDAxIDA4IDRDIDU2IDQ3
ICAzLlBEMDMuQ1BSQi4uTFZHCiAgICA0MEMwOiA0MSAwQSAwMCAwOCA1MyA1NCA0MSA1NiAwQSAw
RiAwOCA0MiA1MiA0MiA1RiAwQiAgQS4uLlNUQVYuLi5CUkJfLgogICAgNDBEMDogQzAgMDAgMDgg
NDIgNTIgNEMgNUYgMEIgNDAgMDAgMDggNDkgNEYgNDIgNUYgMEIgIC4uLkJSTF8uQC4uSU9CXy4K
ICAgIDQwRTA6IDAwIEEwIDA4IDQ5IDRGIDRDIDVGIDBCIDAwIDYwIDA4IDREIDQyIDQyIDVGIDBD
ICAuLi5JT0xfLi5gLk1CQl8uCiAgICA0MEYwOiAwMCAwMCAwMCBENCAwOCA0RCA0MiA0QyA1RiAw
QyAwMCAwMCAwMCAwMiAwOCA0RCAgLi4uLi5NQkxfLi4uLi4uTQogICAgNDEwMDogNDEgNDIgNEMg
MEUgMDAgMDAgNDAgMjAgMDAgMDEgMDAgMDAgMDggNEQgNDEgNDIgIEFCTC4uLkAgLi4uLi5NQUIK
ICAgIDQxMTA6IDQ4IDBDIDAwIDAwIDAxIDAwIDA4IDREIDQxIDREIDRDIDBDIDAwIDAwIDAxIDAw
ICBILi4uLi4uTUFNTC4uLi4uCiAgICA0MTIwOiAwOCA0RCA0MSA0RCA0OCAwQyAwMCAwMCAwMSAw
MCAwOCA0RCA0MSA0QyA0QyAwRSAgLk1BTUguLi4uLi5NQUxMLgogICAgNDEzMDogMDAgMDAgMDAg
OTMgNTkgMDAgMDAgMDAgMDggNEQgNDEgNEMgNDggMEMgMDAgMDAgIC4uLi5ZLi4uLk1BTEguLi4K
ICAgIDQxNDA6IDAxIDAwIDA4IDUwIDUyIDU4IDREIDBCIDAwIDAwIDA4IDQzIDUyIDUzIDMyIDEx
ICAuLi5QUlhNLi4uLkNSUzIuCiAgICA0MTUwOiA0OCAwOSAwQSA5NCA4OCAwRCAwMCAwMiAwQyAw
MCAwMCAwMCA4MCAwMCBGRiAwMCAgSC4uLi4uLi4uLi4uLi4uLgogICAgNDE2MDogMDAgMDAgODAg
MDAgODggMEQgMDAgMDEgMEMgMDMgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4K
ICAgIDQxNzA6IDAwIDAwIDAwIDAwIDg4IDBEIDAwIDAxIDBDIDAzIDAwIDAwIDAwIDAwIDAwIDAw
ICAuLi4uLi4uLi4uLi4uLi4uCiAgICA0MTgwOiAwMCAwMCAwMCAwMCA4NyAxNyAwMCAwMCAwQyAw
MyAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNDE5MDogMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgODcgMTcgIC4uLi4uLi4uLi4uLi4uLi4K
ICAgIDQxQTA6IDAwIDAwIDBDIDAzIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDgwIEZGIEZGIEZGIEZG
ICAuLi4uLi4uLi4uLi4uLi4uCiAgICA0MUIwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCA4MCA4QSAy
QiAwMCAwMCAwQyAwMyAwMCAwMCAgLi4uLi4uLi4uKy4uLi4uLgogICAgNDFDMDogMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4K
ICAgIDQxRDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAw
ICAuLi4uLi4uLi4uLi4uLi4uCiAgICA0MUUwOiAwMCAwMCAwMCAwMCAwMCAwMCA3OSAwMCAxNCAw
QiA1RiA1MyA1NCA0MSAwMCBBNCAgLi4uLi4ueS4uLl9TVEEuLgogICAgNDFGMDogNTMgNTQgNDEg
NTYgMTQgNEEgMTkgNUYgNDMgNTIgNTMgMDggOEIgNDMgNTIgNTMgIFNUQVYuSi5fQ1JTLi5DUlMK
ICAgIDQyMDA6IDMyIDBBIDA4IDREIDQ5IDRFIDMyIDhCIDQzIDUyIDUzIDMyIDBBIDBBIDREIDQx
ICAyLi5NSU4yLkNSUzIuLk1BCiAgICA0MjEwOiA1OCAzMiA4QiA0MyA1MiA1MyAzMiAwQSAwRSA0
QyA0NSA0RSAzMiA3MCA0MiA1MiAgWDIuQ1JTMi4uTEVOMnBCUgogICAgNDIyMDogNDIgNUYgNEQg
NDkgNEUgMzIgNzAgNDIgNTIgNEMgNUYgNEMgNDUgNEUgMzIgNzAgIEJfTUlOMnBCUkxfTEVOMnAK
ICAgIDQyMzA6IDRDIDQ1IDRFIDMyIDYxIDcyIDREIDQ5IDRFIDMyIDc2IDYxIDREIDQxIDU4IDMy
ICBMRU4yYXJNSU4ydmFNQVgyCiAgICA0MjQwOiA4QiA0MyA1MiA1MyAzMiAwQSAyOCA0RCA0OSA0
RSAzNCA4QiA0MyA1MiA1MyAzMiAgLkNSUzIuKE1JTjQuQ1JTMgogICAgNDI1MDogMEEgMkEgNEQg
NDEgNTggMzQgOEIgNDMgNTIgNTMgMzIgMEEgMkUgNEMgNDUgNEUgIC4qTUFYNC5DUlMyLi5MRU4K
ICAgIDQyNjA6IDM0IDcwIDQ5IDRGIDQyIDVGIDREIDQ5IDRFIDM0IDcwIDQ5IDRGIDRDIDVGIDRD
ICA0cElPQl9NSU40cElPTF9MCiAgICA0MjcwOiA0NSA0RSAzNCA3MCA0QyA0NSA0RSAzNCA2MSA3
MiA0RCA0OSA0RSAzNCA3NiA2MSAgRU40cExFTjRhck1JTjR2YQogICAgNDI4MDogNEQgNDEgNTgg
MzQgQTAgNEQgMDcgNEMgNTYgNDcgNDEgOEIgNDMgNTIgNTMgMzIgIE1BWDQuTS5MVkdBLkNSUzIK
ICAgIDQyOTA6IDBBIDE4IDQ5IDREIDRFIDMyIDhCIDQzIDUyIDUzIDMyIDBBIDFBIDQ5IDREIDU4
ICAuLklNTjIuQ1JTMi4uSU1YCiAgICA0MkEwOiAzMiA4QiA0MyA1MiA1MyAzMiAwQSAxRSA0OSA0
QyA0RSAzMiA3MCAwQiBCMCAwMyAgMi5DUlMyLi5JTE4ycC4uLgogICAgNDJCMDogNDkgNEQgNEUg
MzIgNzAgMEIgREYgMDMgNDkgNEQgNTggMzIgNzAgMEEgMzAgNDkgIElNTjJwLi4uSU1YMnAuMEkK
ICAgIDQyQzA6IDRDIDRFIDMyIDhBIDQzIDUyIDUzIDMyIDBBIDNBIDU2IDREIDRFIDMyIDhBIDQz
ICBMTjIuQ1JTMi46Vk1OMi5DCiAgICA0MkQwOiA1MiA1MyAzMiAwQSAzRSA1NiA0RCA1OCAzMiA4
QSA0MyA1MiA1MyAzMiAwQSA0NiAgUlMyLj5WTVgyLkNSUzIuRgogICAgNDJFMDogNTYgNEMgNEUg
MzIgNzAgMEMgMDAgMDAgMEEgMDAgNTYgNEQgNEUgMzIgNzAgMEMgIFZMTjJwLi4uLi5WTU4ycC4K
ICAgIDQyRjA6IEZGIEZGIDBCIDAwIDU2IDREIDU4IDMyIDcwIDBDIDAwIDAwIDAyIDAwIDU2IDRD
ICAuLi4uVk1YMnAuLi4uLlZMCiAgICA0MzAwOiA0RSAzMiA4QSA0MyA1MiA1MyAzMiAwQSA1NCA0
RCA0OSA0RSAzNSA4QSA0MyA1MiAgTjIuQ1JTMi5UTUlONS5DUgogICAgNDMxMDogNTMgMzIgMEEg
NTggNEQgNDEgNTggMzUgOEEgNDMgNTIgNTMgMzIgMEEgNjAgNEMgIFMyLlhNQVg1LkNSUzIuYEwK
ICAgIDQzMjA6IDQ1IDRFIDM1IDcwIDREIDQyIDQyIDVGIDREIDQ5IDRFIDM1IDcwIDREIDQyIDRD
ICBFTjVwTUJCX01JTjVwTUJMCiAgICA0MzMwOiA1RiA0QyA0NSA0RSAzNSA3MCA0QyA0NSA0RSAz
NSA2MSA3MiA0RCA0OSA0RSAzNSAgX0xFTjVwTEVONWFyTUlONQogICAgNDM0MDogNzYgNjEgNEQg
NDEgNTggMzUgOEYgNDMgNTIgNTMgMzIgMEEgNzIgNEQgNDkgNEUgIHZhTUFYNS5DUlMyLnJNSU4K
ICAgIDQzNTA6IDM5IDhGIDQzIDUyIDUzIDMyIDBBIDdBIDREIDQxIDU4IDM5IDhGIDQzIDUyIDUz
ICA5LkNSUzIuek1BWDkuQ1JTCiAgICA0MzYwOiAzMiAwQSA4QSA0QyA0NSA0RSAzOSA3MCA0RCA0
MSA0MiA0QyA0RCA0OSA0RSAzOSAgMi4uTEVOOXBNQUJMTUlOOQogICAgNDM3MDogNzAgNEQgNDEg
NEMgNEMgNEMgNDUgNEUgMzkgNzAgNEMgNDUgNEUgMzkgNjAgNzIgIHBNQUxMTEVOOXBMRU45YHIK
ICAgIDQzODA6IDREIDQ5IDRFIDM5IDc2IDYwIDREIDQxIDU4IDM5IEE0IDQzIDUyIDUzIDMyIDE0
ICBNSU45dmBNQVg5LkNSUzIuCiAgICA0MzkwOiA0MiAxMyA1RiA0RiA1MyA0MyAwQyAwOCA1MyA1
NSA1MCA1MCAwMCAwOCA0MyA1NCAgQi5fT1NDLi5TVVBQLi5DVAogICAgNDNBMDogNTIgNEMgMDAg
OEEgNkIgMDAgNDMgNDQgNTcgMzEgOEEgNkIgMEEgMDQgNDMgNDQgIFJMLi5rLkNEVzEuay4uQ0QK
ICAgIDQzQjA6IDU3IDMyIDhBIDZCIDBBIDA4IDQzIDQ0IDU3IDMzIEEwIDQ4IDBGIDkzIDY4IDEx
ICBXMi5rLi5DRFczLkguLmguCiAgICA0M0MwOiAxMyAwQSAxMCA1QiA0RCBEQiAzMyBGNyAxRiAx
QyA0MCA5NiA1NyA3NCA0MSBDMCAgLi4uW00uMy4uLkAuV3RBLgogICAgNDNEMDogM0QgRDcgNjYg
NzAgNDMgNDQgNTcgMzIgNTMgNTUgNTAgNTAgNzAgNDMgNDQgNTcgID0uZnBDRFcyU1VQUHBDRFcK
ICAgIDQzRTA6IDMzIDQzIDU0IDUyIDRDIEEwIDE4IDkyIDkzIDdCIDUzIDU1IDUwIDUwIDBBIDE2
ICAzQ1RSTC4uLi57U1VQUC4uCiAgICA0M0YwOiAwMCAwQSAxNiA3QiA0MyA1NCA1MiA0QyAwQSAx
RSA0MyA1NCA1MiA0QyBBMCAxMSAgLi4ue0NUUkwuLkNUUkwuLgogICAgNDQwMDogOTIgNTAgNDUg
NDggNTAgN0IgNDMgNTQgNTIgNEMgMEEgMUUgNDMgNTQgNTIgNEMgIC5QRUhQe0NUUkwuLkNUUkwK
ICAgIDQ0MTA6IEEwIDExIDkyIDUzIDQ4IDUwIDQzIDdCIDQzIDU0IDUyIDRDIDBBIDFEIDQzIDU0
ICAuLi5TSFBDe0NUUkwuLkNUCiAgICA0NDIwOiA1MiA0QyBBMCAxMSA5MiA1MCA0NSA1MCA0RCA3
QiA0MyA1NCA1MiA0QyAwQSAxQiAgUkwuLi5QRVBNe0NUUkwuLgogICAgNDQzMDogNDMgNTQgNTIg
NEMgQTAgMTEgOTIgNTAgNDUgNDUgNTIgN0IgNDMgNTQgNTIgNEMgIENUUkwuLi5QRUVSe0NUUkwK
ICAgIDQ0NDA6IDBBIDE1IDQzIDU0IDUyIDRDIEEwIDExIDkyIDUwIDQ1IDQzIDUzIDdCIDQzIDU0
ICAuLkNUUkwuLi5QRUNTe0NUCiAgICA0NDUwOiA1MiA0QyAwQSAwRiA0MyA1NCA1MiA0QyBBMCAx
MCA5MiA5MyA2OSAwMSA3RCA0MyAgUkwuLkNUUkwuLi4uaS59QwogICAgNDQ2MDogNDQgNTcgMzEg
MEEgMDggNDMgNDQgNTcgMzEgQTAgMTUgNUIgMTIgNTAgNEYgNTMgIERXMS4uQ0RXMS4uWy5QT1MK
ICAgIDQ0NzA6IDQzIDAwIDdCIDQzIDU0IDUyIDRDIDUwIDRGIDUzIDQzIDQzIDU0IDUyIDRDIEEw
ICBDLntDVFJMUE9TQ0NUUkwuCiAgICA0NDgwOiAxNiA5MiA5MyA0MyA0NCA1NyAzMyA0MyA1NCA1
MiA0QyA3RCA0MyA0NCA1NyAzMSAgLi4uQ0RXM0NUUkx9Q0RXMQogICAgNDQ5MDogMEEgMTAgNDMg
NDQgNTcgMzEgNzAgNDMgNTQgNTIgNEMgNDMgNDQgNTcgMzMgQTAgIC4uQ0RXMXBDVFJMQ0RXMy4K
ICAgIDQ0QTA6IDExIDVCIDEyIDUwIDRGIDUzIDUzIDAwIDcwIDUzIDU1IDUwIDUwIDUwIDRGIDUz
ICAuWy5QT1NTLnBTVVBQUE9TCiAgICA0NEIwOiA1MyBBNCA2QiBBMSAwRSA3RCA0MyA0NCA1NyAz
MSAwQSAwNCA0MyA0NCA1NyAzMSAgUy5rLi59Q0RXMS4uQ0RXMQogICAgNDRDMDogQTQgNkIgNUIg
ODIgMEMgNDQgMzAgMzIgMzMgMDggNUYgNDEgNDQgNTIgMEEgMDIgIC5rWy4uRDAyMy5fQURSLi4K
ICAgIDQ0RDA6IDVCIDgyIDBDIDQ0IDMwIDMyIDM0IDA4IDVGIDQxIDQ0IDUyIDBBIDAzIDVCIDgy
ICBbLi5EMDI0Ll9BRFIuLlsuCiAgICA0NEUwOiA0NiAwNCA0NyA1MCA1MCAzMCAwOCA1RiA0MSA0
NCA1MiAwQyAwMSAwMCAwMSAwMCAgRi5HUFAwLl9BRFIuLi4uLgogICAgNDRGMDogMTQgMEYgNUYg
NTAgNTIgNTcgMDAgQTQgNDcgNTAgNTIgNTcgMEEgMDggMEEgMDQgIC4uX1BSVy4uR1BSVy4uLi4K
ICAgIDQ1MDA6IDE0IDE2IDVGIDUwIDUyIDU0IDAwIEEwIDBBIDUwIDQ5IDQzIDREIEE0IDQ3IDMw
ICAuLl9QUlQuLi5QSUNNLkcwCiAgICA0NTEwOiAzMiAzNSBBNCA1MCAzMCAzMiAzNSA1QiA4MiAw
RCA0NCAzMCA0MiAzMyAwOCA1RiAgMjUuUDAyNVsuLkQwQjMuXwogICAgNDUyMDogNDEgNDQgNTIg
MEIgRkYgRkYgNUIgODIgNDYgMDQgNDcgNTAgNTAgMzEgMDggNUYgIEFEUi4uLlsuRi5HUFAxLl8K
ICAgIDQ1MzA6IDQxIDQ0IDUyIDBDIDAyIDAwIDAxIDAwIDE0IDBGIDVGIDUwIDUyIDU3IDAwIEE0
ICBBRFIuLi4uLi4uX1BSVy4uCiAgICA0NTQwOiA0NyA1MCA1MiA1NyAwQSAwOCAwQSAwNCAxNCAx
NiA1RiA1MCA1MiA1NCAwMCBBMCAgR1BSVy4uLi4uLl9QUlQuLgogICAgNDU1MDogMEEgNTAgNDkg
NDMgNEQgQTQgNDcgMzAgMzIgMzYgQTQgNTAgMzAgMzIgMzYgNUIgIC5QSUNNLkcwMjYuUDAyNlsK
ICAgIDQ1NjA6IDgyIDBEIDQ0IDMwIDQyIDM0IDA4IDVGIDQxIDQ0IDUyIDBCIEZGIEZGIDVCIDgy
ICAuLkQwQjQuX0FEUi4uLlsuCiAgICA0NTcwOiA0NiAwNCA0NyA1MCA1MCAzMiAwOCA1RiA0MSA0
NCA1MiAwQyAwMyAwMCAwMSAwMCAgRi5HUFAyLl9BRFIuLi4uLgogICAgNDU4MDogMTQgMEYgNUYg
NTAgNTIgNTcgMDAgQTQgNDcgNTAgNTIgNTcgMEEgMDggMEEgMDQgIC4uX1BSVy4uR1BSVy4uLi4K
ICAgIDQ1OTA6IDE0IDE2IDVGIDUwIDUyIDU0IDAwIEEwIDBBIDUwIDQ5IDQzIDREIEE0IDQ3IDMw
ICAuLl9QUlQuLi5QSUNNLkcwCiAgICA0NUEwOiAzMiAzNyBBNCA1MCAzMCAzMiAzNyA1QiA4MiAw
RCA0NCAzMCA0MiAzNSAwOCA1RiAgMjcuUDAyN1suLkQwQjUuXwogICAgNDVCMDogNDEgNDQgNTIg
MEIgRkYgRkYgNUIgODIgNDYgMDQgNDcgNTAgNTAgMzMgMDggNUYgIEFEUi4uLlsuRi5HUFAzLl8K
ICAgIDQ1QzA6IDQxIDQ0IDUyIDBDIDA0IDAwIDAxIDAwIDE0IDBGIDVGIDUwIDUyIDU3IDAwIEE0
ICBBRFIuLi4uLi4uX1BSVy4uCiAgICA0NUQwOiA0NyA1MCA1MiA1NyAwQSAwOCAwQSAwNCAxNCAx
NiA1RiA1MCA1MiA1NCAwMCBBMCAgR1BSVy4uLi4uLl9QUlQuLgogICAgNDVFMDogMEEgNTAgNDkg
NDMgNEQgQTQgNDcgMzAgMzIgMzggQTQgNTAgMzAgMzIgMzggNUIgIC5QSUNNLkcwMjguUDAyOFsK
ICAgIDQ1RjA6IDgyIDBEIDQ0IDMwIDQyIDM2IDA4IDVGIDQxIDQ0IDUyIDBCIEZGIEZGIDVCIDgy
ICAuLkQwQjYuX0FEUi4uLlsuCiAgICA0NjAwOiA0NiAwNCA0NyA1MCA1MCAzNCAwOCA1RiA0MSA0
NCA1MiAwQyAwNSAwMCAwMSAwMCAgRi5HUFA0Ll9BRFIuLi4uLgogICAgNDYxMDogMTQgMEYgNUYg
NTAgNTIgNTcgMDAgQTQgNDcgNTAgNTIgNTcgMEEgMDggMEEgMDQgIC4uX1BSVy4uR1BSVy4uLi4K
ICAgIDQ2MjA6IDE0IDE2IDVGIDUwIDUyIDU0IDAwIEEwIDBBIDUwIDQ5IDQzIDREIEE0IDQ3IDMw
ICAuLl9QUlQuLi5QSUNNLkcwCiAgICA0NjMwOiAzMiAzOSBBNCA1MCAzMCAzMiAzOSA1QiA4MiAw
RCA0NCAzMCA0MiAzNyAwOCA1RiAgMjkuUDAyOVsuLkQwQjcuXwogICAgNDY0MDogNDEgNDQgNTIg
MEIgRkYgRkYgNUIgODIgNDYgMDQgNDcgNTAgNTAgMzUgMDggNUYgIEFEUi4uLlsuRi5HUFA1Ll8K
ICAgIDQ2NTA6IDQxIDQ0IDUyIDBDIDA2IDAwIDAxIDAwIDE0IDBGIDVGIDUwIDUyIDU3IDAwIEE0
ICBBRFIuLi4uLi4uX1BSVy4uCiAgICA0NjYwOiA0NyA1MCA1MiA1NyAwQSAwOCAwQSAwNCAxNCAx
NiA1RiA1MCA1MiA1NCAwMCBBMCAgR1BSVy4uLi4uLl9QUlQuLgogICAgNDY3MDogMEEgNTAgNDkg
NDMgNEQgQTQgNDcgMzAgMzIgNDEgQTQgNTAgMzAgMzIgNDEgNUIgIC5QSUNNLkcwMkEuUDAyQVsK
ICAgIDQ2ODA6IDgyIDBEIDQ0IDMwIDQyIDM4IDA4IDVGIDQxIDQ0IDUyIDBCIEZGIEZGIDVCIDgy
ICAuLkQwQjguX0FEUi4uLlsuCiAgICA0NjkwOiA0NiAwNCA0NyA1MCA1MCAzNiAwOCA1RiA0MSA0
NCA1MiAwQyAwNyAwMCAwMSAwMCAgRi5HUFA2Ll9BRFIuLi4uLgogICAgNDZBMDogMTQgMEYgNUYg
NTAgNTIgNTcgMDAgQTQgNDcgNTAgNTIgNTcgMEEgMDggMEEgMDQgIC4uX1BSVy4uR1BSVy4uLi4K
ICAgIDQ2QjA6IDE0IDE2IDVGIDUwIDUyIDU0IDAwIEEwIDBBIDUwIDQ5IDQzIDREIEE0IDQ3IDMw
ICAuLl9QUlQuLi5QSUNNLkcwCiAgICA0NkMwOiAzMiA0MiBBNCA1MCAzMCAzMiA0MiA1QiA4MiAw
RCA0NCAzMCA0MiAzOSAwOCA1RiAgMkIuUDAyQlsuLkQwQjkuXwogICAgNDZEMDogNDEgNDQgNTIg
MEIgRkYgRkYgNUIgODIgNDYgMDQgNDcgNTAgNTAgMzcgMDggNUYgIEFEUi4uLlsuRi5HUFA3Ll8K
ICAgIDQ2RTA6IDQxIDQ0IDUyIDBDIDAxIDAwIDAyIDAwIDE0IDBGIDVGIDUwIDUyIDU3IDAwIEE0
ICBBRFIuLi4uLi4uX1BSVy4uCiAgICA0NkYwOiA0NyA1MCA1MiA1NyAwQSAwOCAwQSAwNCAxNCAx
NiA1RiA1MCA1MiA1NCAwMCBBMCAgR1BSVy4uLi4uLl9QUlQuLgogICAgNDcwMDogMEEgNTAgNDkg
NDMgNEQgQTQgNDcgMzAgMzIgNDMgQTQgNTAgMzAgMzIgNDMgNUIgIC5QSUNNLkcwMkMuUDAyQ1sK
ICAgIDQ3MTA6IDgyIDBEIDQ0IDMwIDQyIDQxIDA4IDVGIDQxIDQ0IDUyIDBCIEZGIEZGIDVCIDgy
ICAuLkQwQkEuX0FEUi4uLlsuCiAgICA0NzIwOiA0NiAwNCA0NyA1MCA1MCAzOCAwOCA1RiA0MSA0
NCA1MiAwQyAwMiAwMCAwMiAwMCAgRi5HUFA4Ll9BRFIuLi4uLgogICAgNDczMDogMTQgMEYgNUYg
NTAgNTIgNTcgMDAgQTQgNDcgNTAgNTIgNTcgMEEgMDggMEEgMDQgIC4uX1BSVy4uR1BSVy4uLi4K
ICAgIDQ3NDA6IDE0IDE2IDVGIDUwIDUyIDU0IDAwIEEwIDBBIDUwIDQ5IDQzIDREIEE0IDQ3IDMw
ICAuLl9QUlQuLi5QSUNNLkcwCiAgICA0NzUwOiAzMiA0NCBBNCA1MCAzMCAzMiA0NCA1QiA4MiAw
RCA0NCAzMCA0MiA0NCAwOCA1RiAgMkQuUDAyRFsuLkQwQkQuXwogICAgNDc2MDogNDEgNDQgNTIg
MEIgRkYgRkYgNUIgODIgNDYgMDQgNDcgNTAgNTAgMzkgMDggNUYgIEFEUi4uLlsuRi5HUFA5Ll8K
ICAgIDQ3NzA6IDQxIDQ0IDUyIDBDIDAxIDAwIDAzIDAwIDE0IDBGIDVGIDUwIDUyIDU3IDAwIEE0
ICBBRFIuLi4uLi4uX1BSVy4uCiAgICA0NzgwOiA0NyA1MCA1MiA1NyAwQSAwOCAwQSAwNCAxNCAx
NiA1RiA1MCA1MiA1NCAwMCBBMCAgR1BSVy4uLi4uLl9QUlQuLgogICAgNDc5MDogMEEgNTAgNDkg
NDMgNEQgQTQgNDcgMzAgMzIgNDUgQTQgNTAgMzAgMzIgNDUgNUIgIC5QSUNNLkcwMkUuUDAyRVsK
ICAgIDQ3QTA6IDgyIDBEIDQ0IDMwIDQxIDQyIDA4IDVGIDQxIDQ0IDUyIDBCIEZGIEZGIDVCIDgy
ICAuLkQwQUIuX0FEUi4uLlsuCiAgICA0N0IwOiA0NiAwNCA0NyA1MCA1MCA0MSAwOCA1RiA0MSA0
NCA1MiAwQyAwMiAwMCAwMyAwMCAgRi5HUFBBLl9BRFIuLi4uLgogICAgNDdDMDogMTQgMEYgNUYg
NTAgNTIgNTcgMDAgQTQgNDcgNTAgNTIgNTcgMEEgMDggMEEgMDQgIC4uX1BSVy4uR1BSVy4uLi4K
ICAgIDQ3RDA6IDE0IDE2IDVGIDUwIDUyIDU0IDAwIEEwIDBBIDUwIDQ5IDQzIDREIEE0IDQ3IDMw
ICAuLl9QUlQuLi5QSUNNLkcwCiAgICA0N0UwOiAzMiA0NiBBNCA1MCAzMCAzMiA0NiA1QiA4MiAw
RCA0NCAzMCA0MSA0MyAwOCA1RiAgMkYuUDAyRlsuLkQwQUMuXwogICAgNDdGMDogNDEgNDQgNTIg
MEIgRkYgRkYgNUIgODIgNDYgMDQgNDcgNTAgNTAgNDIgMDggNUYgIEFEUi4uLlsuRi5HUFBCLl8K
ICAgIDQ4MDA6IDQxIDQ0IDUyIDBDIDAzIDAwIDAzIDAwIDE0IDBGIDVGIDUwIDUyIDU3IDAwIEE0
ICBBRFIuLi4uLi4uX1BSVy4uCiAgICA0ODEwOiA0NyA1MCA1MiA1NyAwQSAwOCAwQSAwNCAxNCAx
NiA1RiA1MCA1MiA1NCAwMCBBMCAgR1BSVy4uLi4uLl9QUlQuLgogICAgNDgyMDogMEEgNTAgNDkg
NDMgNEQgQTQgNDcgMzAgMzMgMzAgQTQgNTAgMzAgMzMgMzAgNUIgIC5QSUNNLkcwMzAuUDAzMFsK
ICAgIDQ4MzA6IDgyIDBEIDQ0IDMwIDQxIDQ0IDA4IDVGIDQxIDQ0IDUyIDBCIEZGIEZGIDVCIDgy
ICAuLkQwQUQuX0FEUi4uLlsuCiAgICA0ODQwOiA0NiAwNCA0NyA1MCA1MCA0MyAwOCA1RiA0MSA0
NCA1MiAwQyAwNCAwMCAwMyAwMCAgRi5HUFBDLl9BRFIuLi4uLgogICAgNDg1MDogMTQgMEYgNUYg
NTAgNTIgNTcgMDAgQTQgNDcgNTAgNTIgNTcgMEEgMDggMEEgMDQgIC4uX1BSVy4uR1BSVy4uLi4K
ICAgIDQ4NjA6IDE0IDE2IDVGIDUwIDUyIDU0IDAwIEEwIDBBIDUwIDQ5IDQzIDREIEE0IDQ3IDMw
ICAuLl9QUlQuLi5QSUNNLkcwCiAgICA0ODcwOiAzMyAzMSBBNCA1MCAzMCAzMyAzMSA1QiA4MiAw
RCA0NCAzMCA0MSA0NSAwOCA1RiAgMzEuUDAzMVsuLkQwQUUuXwogICAgNDg4MDogNDEgNDQgNTIg
MEIgRkYgRkYgNUIgODIgNDYgMDQgNDcgNTAgNTAgNDQgMDggNUYgIEFEUi4uLlsuRi5HUFBELl8K
ICAgIDQ4OTA6IDQxIDQ0IDUyIDBDIDA1IDAwIDAzIDAwIDE0IDBGIDVGIDUwIDUyIDU3IDAwIEE0
ICBBRFIuLi4uLi4uX1BSVy4uCiAgICA0OEEwOiA0NyA1MCA1MiA1NyAwQSAwOCAwQSAwNCAxNCAx
NiA1RiA1MCA1MiA1NCAwMCBBMCAgR1BSVy4uLi4uLl9QUlQuLgogICAgNDhCMDogMEEgNTAgNDkg
NDMgNEQgQTQgNDcgMzAgMzMgMzIgQTQgNTAgMzAgMzMgMzIgNUIgIC5QSUNNLkcwMzIuUDAzMlsK
ICAgIDQ4QzA6IDgyIDBEIDQ0IDMwIDQxIDQ2IDA4IDVGIDQxIDQ0IDUyIDBCIEZGIEZGIDVCIDgy
ICAuLkQwQUYuX0FEUi4uLlsuCiAgICA0OEQwOiA0NiAwNCA0NyA1MCA1MCA0NSAwOCA1RiA0MSA0
NCA1MiAwQyAwNiAwMCAwMyAwMCAgRi5HUFBFLl9BRFIuLi4uLgogICAgNDhFMDogMTQgMEYgNUYg
NTAgNTIgNTcgMDAgQTQgNDcgNTAgNTIgNTcgMEEgMDggMEEgMDQgIC4uX1BSVy4uR1BSVy4uLi4K
ICAgIDQ4RjA6IDE0IDE2IDVGIDUwIDUyIDU0IDAwIEEwIDBBIDUwIDQ5IDQzIDREIEE0IDQ3IDMw
ICAuLl9QUlQuLi5QSUNNLkcwCiAgICA0OTAwOiAzMyAzMyBBNCA1MCAzMCAzMyAzMyA1QiA4MiAw
RCA0NCAzMCA0MiAzMCAwOCA1RiAgMzMuUDAzM1suLkQwQjAuXwogICAgNDkxMDogNDEgNDQgNTIg
MEIgRkYgRkYgNUIgODIgNDYgMDQgNDcgNTAgNTAgNDYgMDggNUYgIEFEUi4uLlsuRi5HUFBGLl8K
ICAgIDQ5MjA6IDQxIDQ0IDUyIDBDIDA3IDAwIDAzIDAwIDE0IDBGIDVGIDUwIDUyIDU3IDAwIEE0
ICBBRFIuLi4uLi4uX1BSVy4uCiAgICA0OTMwOiA0NyA1MCA1MiA1NyAwQSAwOCAwQSAwNCAxNCAx
NiA1RiA1MCA1MiA1NCAwMCBBMCAgR1BSVy4uLi4uLl9QUlQuLgogICAgNDk0MDogMEEgNTAgNDkg
NDMgNEQgQTQgNDcgMzAgMzMgMzQgQTQgNTAgMzAgMzMgMzQgNUIgIC5QSUNNLkcwMzQuUDAzNFsK
ICAgIDQ5NTA6IDgyIDBEIDQ0IDMwIDQyIDMxIDA4IDVGIDQxIDQ0IDUyIDBCIEZGIEZGIDVCIDgy
ICAuLkQwQjEuX0FEUi4uLlsuCiAgICA0OTYwOiA0NiAwNCA0NyA1MCA1MCA0NyAwOCA1RiA0MSA0
NCA1MiAwQyAwMSAwMCAwNCAwMCAgRi5HUFBHLl9BRFIuLi4uLgogICAgNDk3MDogMTQgMEYgNUYg
NTAgNTIgNTcgMDAgQTQgNDcgNTAgNTIgNTcgMEEgMDggMEEgMDQgIC4uX1BSVy4uR1BSVy4uLi4K
ICAgIDQ5ODA6IDE0IDE2IDVGIDUwIDUyIDU0IDAwIEEwIDBBIDUwIDQ5IDQzIDREIEE0IDQ3IDMw
ICAuLl9QUlQuLi5QSUNNLkcwCiAgICA0OTkwOiAzMyAzNSBBNCA1MCAzMCAzMyAzNSA1QiA4MiAw
RCA0NCAzMCA0MiAzMiAwOCA1RiAgMzUuUDAzNVsuLkQwQjIuXwogICAgNDlBMDogNDEgNDQgNTIg
MEIgRkYgRkYgNUIgODIgNDYgMDQgNDcgNTAgNTAgNDggMDggNUYgIEFEUi4uLlsuRi5HUFBILl8K
ICAgIDQ5QjA6IDQxIDQ0IDUyIDBDIDAyIDAwIDA0IDAwIDE0IDBGIDVGIDUwIDUyIDU3IDAwIEE0
ICBBRFIuLi4uLi4uX1BSVy4uCiAgICA0OUMwOiA0NyA1MCA1MiA1NyAwQSAwOCAwQSAwNCAxNCAx
NiA1RiA1MCA1MiA1NCAwMCBBMCAgR1BSVy4uLi4uLl9QUlQuLgogICAgNDlEMDogMEEgNTAgNDkg
NDMgNEQgQTQgNDcgMzAgMzMgMzYgQTQgNTAgMzAgMzMgMzYgNUIgIC5QSUNNLkcwMzYuUDAzNlsK
ICAgIDQ5RTA6IDgyIDBEIDQ0IDMwIDQyIDQ1IDA4IDVGIDQxIDQ0IDUyIDBCIEZGIEZGIDVCIDgy
ICAuLkQwQkUuX0FEUi4uLlsuCiAgICA0OUYwOiA0NiAwNCA0NyA1MCAzMSAzNSAwOCA1RiA0MSA0
NCA1MiAwQyAwMSAwMCAwNSAwMCAgRi5HUDE1Ll9BRFIuLi4uLgogICAgNEEwMDogMTQgMEYgNUYg
NTAgNTIgNTcgMDAgQTQgNDcgNTAgNTIgNTcgMEEgMDggMEEgMDQgIC4uX1BSVy4uR1BSVy4uLi4K
ICAgIDRBMTA6IDE0IDE2IDVGIDUwIDUyIDU0IDAwIEEwIDBBIDUwIDQ5IDQzIDREIEE0IDQ3IDMw
ICAuLl9QUlQuLi5QSUNNLkcwCiAgICA0QTIwOiAzMyAzNyBBNCA1MCAzMCAzMyAzNyA1QiA4MiAw
RCA0NCAzMCA0MiA0MiAwOCA1RiAgMzcuUDAzN1suLkQwQkIuXwogICAgNEEzMDogNDEgNDQgNTIg
MEIgRkYgRkYgNUIgODIgNDYgMDQgNDcgNTAgMzIgMzUgMDggNUYgIEFEUi4uLlsuRi5HUDI1Ll8K
ICAgIDRBNDA6IDQxIDQ0IDUyIDBDIDAyIDAwIDA1IDAwIDE0IDBGIDVGIDUwIDUyIDU3IDAwIEE0
ICBBRFIuLi4uLi4uX1BSVy4uCiAgICA0QTUwOiA0NyA1MCA1MiA1NyAwQSAwOCAwQSAwNCAxNCAx
NiA1RiA1MCA1MiA1NCAwMCBBMCAgR1BSVy4uLi4uLl9QUlQuLgogICAgNEE2MDogMEEgNTAgNDkg
NDMgNEQgQTQgNDcgMzAgMzMgMzggQTQgNTAgMzAgMzMgMzggNUIgIC5QSUNNLkcwMzguUDAzOFsK
ICAgIDRBNzA6IDgyIDBEIDQ0IDMwIDQyIDQzIDA4IDVGIDQxIDQ0IDUyIDBCIEZGIEZGIDVCIDgy
ICAuLkQwQkMuX0FEUi4uLlsuCiAgICA0QTgwOiA0NiAwNCA0NyA1MCAzMyAzNSAwOCA1RiA0MSA0
NCA1MiAwQyAwMyAwMCAwNSAwMCAgRi5HUDM1Ll9BRFIuLi4uLgogICAgNEE5MDogMTQgMEYgNUYg
NTAgNTIgNTcgMDAgQTQgNDcgNTAgNTIgNTcgMEEgMDggMEEgMDQgIC4uX1BSVy4uR1BSVy4uLi4K
ICAgIDRBQTA6IDE0IDE2IDVGIDUwIDUyIDU0IDAwIEEwIDBBIDUwIDQ5IDQzIDREIEE0IDQ3IDMw
ICAuLl9QUlQuLi5QSUNNLkcwCiAgICA0QUIwOiAzMyAzOSBBNCA1MCAzMCAzMyAzOSA1QiA4MiAw
RCA0NCAzMCA0MiA0NiAwOCA1RiAgMzkuUDAzOVsuLkQwQkYuXwogICAgNEFDMDogNDEgNDQgNTIg
MEIgRkYgRkYgNUIgODIgNDYgMDQgNDcgNTAgMzQgMzUgMDggNUYgIEFEUi4uLlsuRi5HUDQ1Ll8K
ICAgIDRBRDA6IDQxIDQ0IDUyIDBDIDA0IDAwIDA1IDAwIDE0IDBGIDVGIDUwIDUyIDU3IDAwIEE0
ICBBRFIuLi4uLi4uX1BSVy4uCiAgICA0QUUwOiA0NyA1MCA1MiA1NyAwQSAwOCAwQSAwNCAxNCAx
NiA1RiA1MCA1MiA1NCAwMCBBMCAgR1BSVy4uLi4uLl9QUlQuLgogICAgNEFGMDogMEEgNTAgNDkg
NDMgNEQgQTQgNDcgMzAgMzMgNDEgQTQgNTAgMzAgMzMgNDEgNUIgIC5QSUNNLkcwM0EuUDAzQVsK
ICAgIDRCMDA6IDgyIDBEIDQ0IDMwIDQzIDMwIDA4IDVGIDQxIDQ0IDUyIDBCIEZGIEZGIDVCIDgy
ICAuLkQwQzAuX0FEUi4uLlsuCiAgICA0QjEwOiA0NSAwQSA0NyA1MCAzMSAzNyAwOCA1RiA0MSA0
NCA1MiAwQyAwMSAwMCAwNyAwMCAgRS5HUDE3Ll9BRFIuLi4uLgogICAgNEIyMDogMTQgMEYgNUYg
NTAgNTIgNTcgMDAgQTQgNDcgNTAgNTIgNTcgMEEgMEIgMEEgMDQgIC4uX1BSVy4uR1BSVy4uLi4K
ICAgIDRCMzA6IDE0IDE2IDVGIDUwIDUyIDU0IDAwIEEwIDBBIDUwIDQ5IDQzIDREIEE0IDQ3IDMw
ICAuLl9QUlQuLi5QSUNNLkcwCiAgICA0QjQwOiAzMyA0MiBBNCA1MCAzMCAzMyA0MiA1QiA4MiAw
QiA0NCAzMCAzMyA0MyAwOCA1RiAgM0IuUDAzQlsuLkQwM0MuXwogICAgNEI1MDogNDEgNDQgNTIg
MDAgNUIgODIgMEIgNDQgMzAgMzMgNDQgMDggNUYgNDEgNDQgNTIgIEFEUi5bLi5EMDNELl9BRFIK
ICAgIDRCNjA6IDAxIDVCIDgyIDBDIDQ0IDMwIDMzIDQ1IDA4IDVGIDQxIDQ0IDUyIDBBIDAyIDVC
ICAuWy4uRDAzRS5fQURSLi5bCiAgICA0QjcwOiA4MiAwQyA0NCAzMCAzMyA0NiAwOCA1RiA0MSA0
NCA1MiAwQSAwMyA1QiA4MiAwQyAgLi5EMDNGLl9BRFIuLlsuLgogICAgNEI4MDogNTggNDggNDMg
MzAgMDggNUYgNDEgNDQgNTIgMEEgMDQgNUIgODIgMEMgNDQgMzAgIFhIQzAuX0FEUi4uWy4uRDAK
ICAgIDRCOTA6IDM0IDMxIDA4IDVGIDQxIDQ0IDUyIDBBIDA1IDVCIDgyIDBDIDQ0IDMwIDM0IDMy
ICA0MS5fQURSLi5bLi5EMDQyCiAgICA0QkEwOiAwOCA1RiA0MSA0NCA1MiAwQSAwNiA1QiA4MiAw
QyA0NCAzMCAzNCAzMyAwOCA1RiAgLl9BRFIuLlsuLkQwNDMuXwogICAgNEJCMDogNDEgNDQgNTIg
MEEgMDcgNUIgODIgNEQgQ0YgNDcgNTAgMzIgMzcgMDggNUYgNDEgIEFEUi4uWy5NLkdQMjcuX0EK
ICAgIDRCQzA6IDQ0IDUyIDBDIDAyIDAwIDA3IDAwIDE0IDBGIDVGIDUwIDUyIDU3IDAwIEE0IDQ3
ICBEUi4uLi4uLi5fUFJXLi5HCiAgICA0QkQwOiA1MCA1MiA1NyAwQSAwQiAwQSAwNCAxNCAxNiA1
RiA1MCA1MiA1NCAwMCBBMCAwQSAgUFJXLi4uLi4uX1BSVC4uLgogICAgNEJFMDogNTAgNDkgNDMg
NEQgQTQgNDcgMzAgMzQgMzQgQTQgNTAgMzAgMzQgMzQgNUIgODIgIFBJQ00uRzA0NC5QMDQ0Wy4K
ICAgIDRCRjA6IDQxIDY2IDUzIDQxIDU0IDQxIDA4IDVGIDQxIDQ0IDUyIDAwIDA4IDQyIDM1IDQ1
ICBBZlNBVEEuX0FEUi4uQjVFCiAgICA0QzAwOiA0RSAwMCAwOCA0MiA0MSA1RiAzNSAwMCAwOCA1
MyA0MiA0MSA1MiAwQyAwMCBGMCAgTi4uQkFfNS4uU0JBUi4uLgogICAgNEMxMDogQjYgRjAgMDgg
NEYgNTMgNTYgNTIgMDAgNUIgODAgNTMgNDEgNTQgNTggMDIgMDAgIC4uLk9TVlIuWy5TQVRYLi4K
ICAgIDRDMjA6IDBBIDQ0IDVCIDgxIDQzIDA0IDUzIDQxIDU0IDU4IDAwIDU2IDQ5IDQ0IDQ5IDIw
ICAuRFsuQy5TQVRYLlZJREkgCiAgICA0QzMwOiAwMCAzMCA1MyA1NCA0MyA0QyAxMCAwMCA0MCAw
QyA0MiA0MSAzMCAzNSAyMCAwMCAgLjBTVENMLi5ALkJBMDUgLgogICAgNEM0MDogNDAgMEMgNTcg
NTQgNDUgNEUgMDEgMDAgMEYgNDQgNDkgNTMgMzAgMDEgNDQgNDkgIEAuV1RFTi4uLkRJUzAuREkK
ICAgIDRDNTA6IDUzIDMxIDAxIDQ0IDQ5IDUzIDMyIDAxIDQ0IDQ5IDUzIDMzIDAxIDQ0IDQ5IDUz
ICBTMS5ESVMyLkRJUzMuRElTCiAgICA0QzYwOiAzNCAwMSA0NCA0OSA1MyAzNSAwMSA1QiA4MSAw
RSA1MyA0MSA1NCA1OCAwMCAwMCAgNC5ESVM1LlsuLlNBVFguLgogICAgNEM3MDogNDAgMjEgNDQg
NDkgNTMgNTAgMDYgMTQgMzkgNDcgNDIgNDEgNDEgMDggNzAgNDIgIEAhRElTUC4uOUdCQUEucEIK
ICAgIDRDODA6IDQxIDMwIDM1IDQyIDQxIDVGIDM1IEEwIDFDIDkxIDkzIDQyIDQxIDVGIDM1IEZG
ICBBMDVCQV81Li4uLkJBXzUuCiAgICA0QzkwOiA5MiA5MyA1MyA1NCA0MyA0QyAwQiAwMSAwMSA3
MCAwMCA0MiAzNSA0NSA0RSBBNCAgLi5TVENMLi4ucC5CNUVOLgogICAgNENBMDogNTMgNDIgNDEg
NTIgQTEgMEMgNzAgMDEgNDIgMzUgNDUgNEUgQTQgNDIgNDEgNUYgIFNCQVIuLnAuQjVFTi5CQV8K
ICAgIDRDQjA6IDM1IDVCIDgwIDQyIDQxIDUyIDM1IDAwIDQ3IDQyIDQxIDQxIDBCIDAwIDEwIDVC
ICA1Wy5CQVI1LkdCQUEuLi5bCiAgICA0Q0MwOiA4MSA0MSAxMiA0MiA0MSA1MiAzNSAwMCA0RSA0
RiA1MCA1NCAwNSAwMCA0QiAwNSAgLkEuQkFSNS5OT1BULi5LLgogICAgNENEMDogNTAgNTQgNDkg
MzAgMDEgNTAgNTQgNDkgMzEgMDEgNTAgNTQgNDkgMzIgMDEgNTAgIFBUSTAuUFRJMS5QVEkyLlAK
ICAgIDRDRTA6IDU0IDQ5IDMzIDAxIDUwIDU0IDQ5IDM0IDAxIDUwIDU0IDQ5IDM1IDAxIDUwIDU0
ICBUSTMuUFRJNC5QVEk1LlBUCiAgICA0Q0YwOiA0OSAzNiAwMSA1MCA1NCA0OSAzNyAwMSAwMCA0
OCA4NSA0MyA1MyA1NCAzMCAwMSAgSTYuUFRJNy4uSC5DU1QwLgogICAgNEQwMDogMDAgNEYgMDMg
MDAgMDcgNDIgNTMgNTkgMzAgMDEgMDAgMzggNDQgNDUgNTQgMzAgIC5PLi4uQlNZMC4uOERFVDAK
ICAgIDREMTA6IDA0IDAwIDA0IDQ5IDUwIDREIDMwIDA0IDAwIDE0IDQ0IDQ0IDQ5IDMwIDA0IDAw
ICAuLi5JUE0wLi4uRERJMC4uCiAgICA0RDIwOiA0QyAzNSA0MyA1MyA1NCAzMSAwMSAwMCA0RiAw
MyAwMCAwNyA0MiA1MyA1OSAzMSAgTDVDU1QxLi5PLi4uQlNZMQogICAgNEQzMDogMDEgMDAgMzgg
NDQgNDUgNTQgMzEgMDQgMDAgMDQgNDkgNTAgNEQgMzEgMDQgMDAgIC4uOERFVDEuLi5JUE0xLi4K
ICAgIDRENDA6IDE0IDQ0IDQ0IDQ5IDMxIDA0IDAwIDRDIDM1IDQzIDUzIDU0IDMyIDAxIDAwIDRG
ICAuRERJMS4uTDVDU1QyLi5PCiAgICA0RDUwOiAwMyAwMCAwNyA0MiA1MyA1OSAzMiAwMSAwMCAz
OCA0NCA0NSA1NCAzMiAwNCAwMCAgLi4uQlNZMi4uOERFVDIuLgogICAgNEQ2MDogMDQgNDkgNTAg
NEQgMzIgMDQgMDAgMTQgNDQgNDQgNDkgMzIgMDQgMDAgNEMgMzUgIC5JUE0yLi4uRERJMi4uTDUK
ICAgIDRENzA6IDQzIDUzIDU0IDMzIDAxIDAwIDRGIDAzIDAwIDA3IDQyIDUzIDU5IDMzIDAxIDAw
ICBDU1QzLi5PLi4uQlNZMy4uCiAgICA0RDgwOiAzOCA0NCA0NSA1NCAzMyAwNCAwMCAwNCA0OSA1
MCA0RCAzMyAwNCAwMCAxNCA0NCAgOERFVDMuLi5JUE0zLi4uRAogICAgNEQ5MDogNDQgNDkgMzMg
MDQgMDAgNEMgMzUgNDMgNTMgNTQgMzQgMDEgMDAgNEYgMDMgMDAgIERJMy4uTDVDU1Q0Li5PLi4K
ICAgIDREQTA6IDA3IDQyIDUzIDU5IDM0IDAxIDAwIDM4IDQ0IDQ1IDU0IDM0IDA0IDAwIDA0IDQ5
ICAuQlNZNC4uOERFVDQuLi5JCiAgICA0REIwOiA1MCA0RCAzNCAwNCAwMCAxNCA0NCA0NCA0OSAz
NCAwNCAwMCA0QyAzNSA0MyA1MyAgUE00Li4uRERJNC4uTDVDUwogICAgNERDMDogNTQgMzUgMDEg
MDAgNEYgMDMgMDAgMDcgNDIgNTMgNTkgMzUgMDEgMDAgMzggNDQgIFQ1Li5PLi4uQlNZNS4uOEQK
ICAgIDRERDA6IDQ1IDU0IDM1IDA0IDAwIDA0IDQ5IDUwIDREIDM1IDA0IDAwIDE0IDQ0IDQ0IDQ5
ICBFVDUuLi5JUE01Li4uRERJCiAgICA0REUwOiAzNSAwNCA1QiA4MSAwRSA0MiA0MSA1MiAzNSAw
MCAwMCA0MCAwNiA1MCA1NCA0OSAgNS5bLi5CQVI1Li5ALlBUSQogICAgNERGMDogNUYgMDYgMTQg
MEEgNUYgNDkgNEUgNDkgMDAgNDcgNDIgNDEgNDEgNUIgODIgNEEgIF8uLi5fSU5JLkdCQUFbLkoK
ICAgIDRFMDA6IDE5IDUwIDUyIDQ5IDQ0IDA4IDVGIDQxIDQ0IDUyIDAwIDA4IDUzIDUwIDU0IDRE
ICAuUFJJRC5fQURSLi5TUFRNCiAgICA0RTEwOiAxMSAxNyAwQSAxNCA3OCAwMCAwMCAwMCAwRiAw
MCAwMCAwMCA3OCAwMCAwMCAwMCAgLi4uLnguLi4uLi4ueC4uLgogICAgNEUyMDogMEYgMDAgMDAg
MDAgMUYgMDAgMDAgMDAgMTQgMEIgNUYgNDcgNTQgNEQgMDAgQTQgIC4uLi4uLi4uLi5fR1RNLi4K
ICAgIDRFMzA6IDUzIDUwIDU0IDREIDE0IDBDIDVGIDUzIDU0IDREIDAzIDcwIDY4IDUzIDUwIDU0
ICBTUFRNLi5fU1RNLnBoU1BUCiAgICA0RTQwOiA0RCAxNCAzQSA1RiA1MCA1MyAzMCAwMCA0NyA0
MiA0MSA0MSBBMCAyRiA5MCA5MSAgTS46X1BTMC5HQkFBLi8uLgogICAgNEU1MDogOTIgOTUgNEYg
NTMgNTYgNTIgMEEgMEMgOTMgNEYgNTMgNTYgNTIgMDAgNDIgMzUgIC4uT1NWUi4uLk9TVlIuQjUK
ICAgIDRFNjA6IDQ1IDRFIEEwIDE5IDQ5IDUwIDREIDMyIDcwIDBBIDMyIDYwIEEyIDBGIDkwIDkz
ICBFTi4uSVBNMnAuMmAuLi4uCiAgICA0RTcwOiA0MiA1MyA1OSAzMiAwMSA2MCA1QiAyMiAwQSBG
QSA3NiA2MCAxNCAwNiA1RiA1MCAgQlNZMi5gWyIuLnZgLi5fUAogICAgNEU4MDogNTMgMzMgMDAg
NUIgODIgNDkgMDggNTAgNUYgNDQgMzAgMDggNUYgNDEgNDQgNTIgIFMzLlsuSS5QX0QwLl9BRFIK
ICAgIDRFOTA6IDAwIDE0IDI0IDVGIDUzIDU0IDQxIDAwIDQ3IDQyIDQxIDQxIEEwIDA5IDkzIDQy
ICAuLiRfU1RBLkdCQUEuLi5CCiAgICA0RUEwOiAzNSA0NSA0RSAwMCBBNCAwMCBBMCAwQiA5MyA0
NCA0NSA1NCAzMCAwQSAwMyBBNCAgNUVOLi4uLi4uREVUMC4uLgogICAgNEVCMDogMEEgMEYgQTEg
MDMgQTQgMDAgMDggNTMgMzEgMzIgNTAgMDAgMTQgMzQgNUYgNTAgIC4uLi4uLi5TMTJQLi40X1AK
ICAgIDRFQzA6IDUzIDMwIDAwIDQ3IDQyIDQxIDQxIEEwIDI5IDkwIDkwIDk1IDRGIDUzIDU2IDUy
ICBTMC5HQkFBLikuLi5PU1ZSCiAgICA0RUQwOiAwQSAwQyA5MiA5MyA0RiA1MyA1NiA1MiAwMCA0
MiAzNSA0NSA0RSA3MCAwQSAzMiAgLi4uLk9TVlIuQjVFTnAuMgogICAgNEVFMDogNjAgQTIgMEYg
OTAgOTMgNDIgNTMgNTkgMzAgMDEgNjAgNUIgMjIgMEEgRkEgNzYgIGAuLi4uQlNZMC5gWyIuLnYK
ICAgIDRFRjA6IDYwIDE0IDA2IDVGIDUwIDUzIDMzIDAwIDE0IDE1IDVGIDQ3IDU0IDQ2IDAwIDcw
ICBgLi5fUFMzLi4uX0dURi5wCiAgICA0RjAwOiAxMSAwQSAwQSAwNyAwMyA0NiAwMCAwMCAwMCBB
MCBFRiA2MCBBNCA2MCA1QiA4MiAgLi4uLi5GLi4uLi5gLmBbLgogICAgNEYxMDogNDkgMDggNTAg
NUYgNDQgMzEgMDggNUYgNDEgNDQgNTIgMDEgMTQgMjQgNUYgNTMgIEkuUF9EMS5fQURSLi4kX1MK
ICAgIDRGMjA6IDU0IDQxIDAwIDQ3IDQyIDQxIDQxIEEwIDA5IDkzIDQyIDM1IDQ1IDRFIDAwIEE0
ICBUQS5HQkFBLi4uQjVFTi4uCiAgICA0RjMwOiAwMCBBMCAwQiA5MyA0NCA0NSA1NCAzMiAwQSAw
MyBBNCAwQSAwRiBBMSAwMyBBNCAgLi4uLkRFVDIuLi4uLi4uLgogICAgNEY0MDogMDAgMDggNTMg
MzEgMzIgNTAgMDAgMTQgMzQgNUYgNTAgNTMgMzAgMDAgNDcgNDIgIC4uUzEyUC4uNF9QUzAuR0IK
ICAgIDRGNTA6IDQxIDQxIEEwIDI5IDkwIDkwIDk1IDRGIDUzIDU2IDUyIDBBIDBDIDkyIDkzIDRG
ICBBQS4pLi4uT1NWUi4uLi5PCiAgICA0RjYwOiA1MyA1NiA1MiAwMCA0MiAzNSA0NSA0RSA3MCAw
QSAzMiA2MCBBMiAwRiA5MCA5MyAgU1ZSLkI1RU5wLjJgLi4uLgogICAgNEY3MDogNDIgNTMgNTkg
MzIgMDEgNjAgNUIgMjIgMEEgRkEgNzYgNjAgMTQgMDYgNUYgNTAgIEJTWTIuYFsiLi52YC4uX1AK
ICAgIDRGODA6IDUzIDMzIDAwIDE0IDE1IDVGIDQ3IDU0IDQ2IDAwIDcwIDExIDBBIDBBIDA3IDAz
ICBTMy4uLl9HVEYucC4uLi4uCiAgICA0RjkwOiA0NiAwMCAwMCAwMCBBMCBFRiA2MCBBNCA2MCA1
QiA4MiA0QiAxQSA1MyA0NSA0MyAgRi4uLi4uYC5gWy5LLlNFQwogICAgNEZBMDogNDQgMDggNUYg
NDEgNDQgNTIgMEEgMDIgMDggNTMgNTAgNTQgNEQgMTEgMTcgMEEgIEQuX0FEUi4uLlNQVE0uLi4K
ICAgIDRGQjA6IDE0IDc4IDAwIDAwIDAwIDBGIDAwIDAwIDAwIDc4IDAwIDAwIDAwIDBGIDAwIDAw
ICAueC4uLi4uLi54Li4uLi4uCiAgICA0RkMwOiAwMCAxRiAwMCAwMCAwMCAxNCAwQiA1RiA0NyA1
NCA0RCAwMCBBNCA1MyA1MCA1NCAgLi4uLi4uLl9HVE0uLlNQVAogICAgNEZEMDogNEQgMTQgMEMg
NUYgNTMgNTQgNEQgMDMgNzAgNjggNTMgNTAgNTQgNEQgMTQgNDYgIE0uLl9TVE0ucGhTUFRNLkYK
ICAgIDRGRTA6IDA1IDVGIDUwIDUzIDMwIDAwIDQ3IDQyIDQxIDQxIEEwIDRBIDA0IDkwIDkxIDky
ICAuX1BTMC5HQkFBLkouLi4uCiAgICA0RkYwOiA5NSA0RiA1MyA1NiA1MiAwQSAwQyA5MyA0RiA1
MyA1NiA1MiAwMCA0MiAzNSA0NSAgLk9TVlIuLi5PU1ZSLkI1RQogICAgNTAwMDogNEUgQTAgMTkg
NDkgNTAgNEQgMzEgNzAgMEEgMzIgNjAgQTIgMEYgOTAgOTMgNDIgIE4uLklQTTFwLjJgLi4uLkIK
ICAgIDUwMTA6IDUzIDU5IDMxIDAxIDYwIDVCIDIyIDBBIEZBIDc2IDYwIEEwIDE5IDQ5IDUwIDRE
ICBTWTEuYFsiLi52YC4uSVBNCiAgICA1MDIwOiAzMyA3MCAwQSAzMiA2MCBBMiAwRiA5MCA5MyA0
MiA1MyA1OSAzMyAwMSA2MCA1QiAgM3AuMmAuLi4uQlNZMy5gWwogICAgNTAzMDogMjIgMEEgRkEg
NzYgNjAgMTQgMDYgNUYgNTAgNTMgMzMgMDAgNUIgODIgNDMgMDggICIuLnZgLi5fUFMzLlsuQy4K
ICAgIDUwNDA6IDUzIDVGIDQ0IDMwIDA4IDVGIDQxIDQ0IDUyIDAwIDE0IDI0IDVGIDUzIDU0IDQx
ICBTX0QwLl9BRFIuLiRfU1RBCiAgICA1MDUwOiAwMCA0NyA0MiA0MSA0MSBBMCAwOSA5MyA0MiAz
NSA0NSA0RSAwMCBBNCAwMCBBMCAgLkdCQUEuLi5CNUVOLi4uLgogICAgNTA2MDogMEIgOTMgNDQg
NDUgNTQgMzEgMEEgMDMgQTQgMEEgMEYgQTEgMDMgQTQgMDAgMTQgIC4uREVUMS4uLi4uLi4uLi4K
ICAgIDUwNzA6IDM0IDVGIDUwIDUzIDMwIDAwIDQ3IDQyIDQxIDQxIEEwIDI5IDkwIDkwIDk1IDRG
ICA0X1BTMC5HQkFBLikuLi5PCiAgICA1MDgwOiA1MyA1NiA1MiAwQSAwQyA5MiA5MyA0RiA1MyA1
NiA1MiAwMCA0MiAzNSA0NSA0RSAgU1ZSLi4uLk9TVlIuQjVFTgogICAgNTA5MDogNzAgMEEgMzIg
NjAgQTIgMEYgOTAgOTMgNDIgNTMgNTkgMzEgMDEgNjAgNUIgMjIgIHAuMmAuLi4uQlNZMS5gWyIK
ICAgIDUwQTA6IDBBIEZBIDc2IDYwIDE0IDA2IDVGIDUwIDUzIDMzIDAwIDE0IDE1IDVGIDQ3IDU0
ICAuLnZgLi5fUFMzLi4uX0dUCiAgICA1MEIwOiA0NiAwMCA3MCAxMSAwQSAwQSAwNyAwMyA0NiAw
MCAwMCAwMCBBMCBFRiA2MCBBNCAgRi5wLi4uLi5GLi4uLi5gLgogICAgNTBDMDogNjAgNUIgODIg
NDMgMDggNTMgNUYgNDQgMzEgMDggNUYgNDEgNDQgNTIgMDEgMTQgIGBbLkMuU19EMS5fQURSLi4K
ICAgIDUwRDA6IDI0IDVGIDUzIDU0IDQxIDAwIDQ3IDQyIDQxIDQxIEEwIDA5IDkzIDQyIDM1IDQ1
ICAkX1NUQS5HQkFBLi4uQjVFCiAgICA1MEUwOiA0RSAwMCBBNCAwMCBBMCAwQiA5MyA0NCA0NSA1
NCAzMyAwQSAwMyBBNCAwQSAwRiAgTi4uLi4uLkRFVDMuLi4uLgogICAgNTBGMDogQTEgMDMgQTQg
MDAgMTQgMzQgNUYgNTAgNTMgMzAgMDAgNDcgNDIgNDEgNDEgQTAgIC4uLi4uNF9QUzAuR0JBQS4K
ICAgIDUxMDA6IDI5IDkwIDkwIDk1IDRGIDUzIDU2IDUyIDBBIDBDIDkyIDkzIDRGIDUzIDU2IDUy
ICApLi4uT1NWUi4uLi5PU1ZSCiAgICA1MTEwOiAwMCA0MiAzNSA0NSA0RSA3MCAwQSAzMiA2MCBB
MiAwRiA5MCA5MyA0MiA1MyA1OSAgLkI1RU5wLjJgLi4uLkJTWQogICAgNTEyMDogMzMgMDEgNjAg
NUIgMjIgMEEgRkEgNzYgNjAgMTQgMDYgNUYgNTAgNTMgMzMgMDAgIDMuYFsiLi52YC4uX1BTMy4K
ICAgIDUxMzA6IDE0IDE1IDVGIDQ3IDU0IDQ2IDAwIDcwIDExIDBBIDBBIDA3IDAzIDQ2IDAwIDAw
ICAuLl9HVEYucC4uLi4uRi4uCiAgICA1MTQwOiAwMCBBMCBFRiA2MCBBNCA2MCAxNCA0QSAxMCA0
NSA0RSA1MCA1RiAwMiBBMCAwQyAgLi4uYC5gLkouRU5QXy4uLgogICAgNTE1MDogOTMgNjggMDAg
NzAgODAgNjkgMDAgNDQgNDkgNTMgMzAgQTEgNEYgMDQgQTAgMEMgIC5oLnAuaS5ESVMwLk8uLi4K
ICAgIDUxNjA6IDkzIDY4IDAxIDcwIDgwIDY5IDAwIDQ0IDQ5IDUzIDMxIEExIDNGIEEwIDBEIDkz
ICAuaC5wLmkuRElTMS4/Li4uCiAgICA1MTcwOiA2OCAwQSAwMiA3MCA4MCA2OSAwMCA0NCA0OSA1
MyAzMiBBMSAyRiBBMCAwRCA5MyAgaC4ucC5pLkRJUzIuLy4uLgogICAgNTE4MDogNjggMEEgMDMg
NzAgODAgNjkgMDAgNDQgNDkgNTMgMzMgQTEgMUYgQTAgMEQgOTMgIGguLnAuaS5ESVMzLi4uLi4K
ICAgIDUxOTA6IDY4IDBBIDA0IDcwIDgwIDY5IDAwIDQ0IDQ5IDUzIDM0IEExIDBGIEEwIDBEIDkz
ICBoLi5wLmkuRElTNC4uLi4uCiAgICA1MUEwOiA2OCAwQSAwNSA3MCA4MCA2OSAwMCA0NCA0OSA1
MyAzNSA3MCAwMSA1NyA1NCA0NSAgaC4ucC5pLkRJUzVwLldURQogICAgNTFCMDogNEUgQTAgMEEg
OTMgNjggMDAgNzAgNjkgNTAgNTQgNDkgMzAgQTEgNDUgMDQgQTAgIE4uLi5oLnBpUFRJMC5FLi4K
ICAgIDUxQzA6IDBBIDkzIDY4IDAxIDcwIDY5IDUwIDU0IDQ5IDMxIEExIDM3IEEwIDBCIDkzIDY4
ICAuLmgucGlQVEkxLjcuLi5oCiAgICA1MUQwOiAwQSAwMiA3MCA2OSA1MCA1NCA0OSAzMiBBMSAy
OSBBMCAwQiA5MyA2OCAwQSAwMyAgLi5waVBUSTIuKS4uLmguLgogICAgNTFFMDogNzAgNjkgNTAg
NTQgNDkgMzMgQTEgMUIgQTAgMEIgOTMgNjggMEEgMDQgNzAgNjkgIHBpUFRJMy4uLi4uaC4ucGkK
ICAgIDUxRjA6IDUwIDU0IDQ5IDM0IEExIDBEIEEwIDBCIDkzIDY4IDBBIDA1IDcwIDY5IDUwIDU0
ICBQVEk0Li4uLi5oLi5waVBUCiAgICA1MjAwOiA0OSAzNSBBMCAwRSA5MyA0NCA0OSA1MyA1MCAw
QSAzRiA3MCAwMSA1MCA1NCA0OSAgSTUuLi5ESVNQLj9wLlBUSQogICAgNTIxMDogMzAgQTEgMUEg
QTAgMTggOTAgNDQgNDkgNTMgMzAgN0YgN0IgNDQgNDkgNTMgNTAgIDAuLi4uLkRJUzAue0RJU1AK
ICAgIDUyMjA6IDBBIDNFIDAwIDBBIDNFIDAwIDcwIDAwIDUwIDU0IDQ5IDMwIDcwIDUwIDU0IDQ5
ICAuPi4uPi5wLlBUSTBwUFRJCiAgICA1MjMwOiA1RiA2MCA3MCAwMCA2MSBBMiAwRSA2MCBBMCAw
NyA3QiA2MCAwMSAwMCA3NSA2MSAgX2BwLmEuLmAuLntgLi51YQogICAgNTI0MDogN0EgNjAgMDEg
NjAgNzAgNzYgNjEgNEUgNEYgNTAgNTQgNzAgMDAgNTcgNTQgNDUgIHpgLmBwdmFOT1BUcC5XVEUK
ICAgIDUyNTA6IDRFIDVCIDgyIDQxIDY2IDUzIDQxIDU0IDMyIDA4IDVGIDQxIDQ0IDUyIDAxIDA4
ICBOWy5BZlNBVDIuX0FEUi4uCiAgICA1MjYwOiA0MiAzNSA0NSA0RSAwMCAwOCA0MiA0MSA1RiAz
NSAwMCAwOCA1MyA0MiA0MSA1MiAgQjVFTi4uQkFfNS4uU0JBUgogICAgNTI3MDogMEMgMDAgRjAg
QjYgRjAgMDggNEYgNTMgNTYgNTIgMDAgNUIgODAgNTMgNDEgNTQgIC4uLi4uLk9TVlIuWy5TQVQK
ICAgIDUyODA6IDU4IDAyIDAwIDBBIDQ0IDVCIDgxIDQzIDA0IDUzIDQxIDU0IDU4IDAwIDU2IDQ5
ICBYLi4uRFsuQy5TQVRYLlZJCiAgICA1MjkwOiA0NCA0OSAyMCAwMCAzMCA1MyA1NCA0MyA0QyAx
MCAwMCA0MCAwQyA0MiA0MSAzMCAgREkgLjBTVENMLi5ALkJBMAogICAgNTJBMDogMzUgMjAgMDAg
NDAgMEMgNTcgNTQgNDUgNEUgMDEgMDAgMEYgNDQgNDkgNTMgMzAgIDUgLkAuV1RFTi4uLkRJUzAK
ICAgIDUyQjA6IDAxIDQ0IDQ5IDUzIDMxIDAxIDQ0IDQ5IDUzIDMyIDAxIDQ0IDQ5IDUzIDMzIDAx
ICAuRElTMS5ESVMyLkRJUzMuCiAgICA1MkMwOiA0NCA0OSA1MyAzNCAwMSA0NCA0OSA1MyAzNSAw
MSA1QiA4MSAwRSA1MyA0MSA1NCAgRElTNC5ESVM1LlsuLlNBVAogICAgNTJEMDogNTggMDAgMDAg
NDAgMjEgNDQgNDkgNTMgNTAgMDYgMTQgMzkgNDcgNDIgNDEgNDEgIFguLkAhRElTUC4uOUdCQUEK
ICAgIDUyRTA6IDA4IDcwIDQyIDQxIDMwIDM1IDQyIDQxIDVGIDM1IEEwIDFDIDkxIDkzIDQyIDQx
ICAucEJBMDVCQV81Li4uLkJBCiAgICA1MkYwOiA1RiAzNSBGRiA5MiA5MyA1MyA1NCA0MyA0QyAw
QiAwMSAwMSA3MCAwMCA0MiAzNSAgXzUuLi5TVENMLi4ucC5CNQogICAgNTMwMDogNDUgNEUgQTQg
NTMgNDIgNDEgNTIgQTEgMEMgNzAgMDEgNDIgMzUgNDUgNEUgQTQgIEVOLlNCQVIuLnAuQjVFTi4K
ICAgIDUzMTA6IDQyIDQxIDVGIDM1IDVCIDgwIDQyIDQxIDUyIDM1IDAwIDQ3IDQyIDQxIDQxIDBC
ICBCQV81Wy5CQVI1LkdCQUEuCiAgICA1MzIwOiAwMCAxMCA1QiA4MSA0MSAxMiA0MiA0MSA1MiAz
NSAwMCA0RSA0RiA1MCA1NCAwNSAgLi5bLkEuQkFSNS5OT1BULgogICAgNTMzMDogMDAgNEIgMDUg
NTAgNTQgNDkgMzAgMDEgNTAgNTQgNDkgMzEgMDEgNTAgNTQgNDkgIC5LLlBUSTAuUFRJMS5QVEkK
ICAgIDUzNDA6IDMyIDAxIDUwIDU0IDQ5IDMzIDAxIDUwIDU0IDQ5IDM0IDAxIDUwIDU0IDQ5IDM1
ICAyLlBUSTMuUFRJNC5QVEk1CiAgICA1MzUwOiAwMSA1MCA1NCA0OSAzNiAwMSA1MCA1NCA0OSAz
NyAwMSAwMCA0OCA4NSA0MyA1MyAgLlBUSTYuUFRJNy4uSC5DUwogICAgNTM2MDogNTQgMzAgMDEg
MDAgNEYgMDMgMDAgMDcgNDIgNTMgNTkgMzAgMDEgMDAgMzggNDQgIFQwLi5PLi4uQlNZMC4uOEQK
ICAgIDUzNzA6IDQ1IDU0IDMwIDA0IDAwIDA0IDQ5IDUwIDREIDMwIDA0IDAwIDE0IDQ0IDQ0IDQ5
ICBFVDAuLi5JUE0wLi4uRERJCiAgICA1MzgwOiAzMCAwNCAwMCA0QyAzNSA0MyA1MyA1NCAzMSAw
MSAwMCA0RiAwMyAwMCAwNyA0MiAgMC4uTDVDU1QxLi5PLi4uQgogICAgNTM5MDogNTMgNTkgMzEg
MDEgMDAgMzggNDQgNDUgNTQgMzEgMDQgMDAgMDQgNDkgNTAgNEQgIFNZMS4uOERFVDEuLi5JUE0K
ICAgIDUzQTA6IDMxIDA0IDAwIDE0IDQ0IDQ0IDQ5IDMxIDA0IDAwIDRDIDM1IDQzIDUzIDU0IDMy
ICAxLi4uRERJMS4uTDVDU1QyCiAgICA1M0IwOiAwMSAwMCA0RiAwMyAwMCAwNyA0MiA1MyA1OSAz
MiAwMSAwMCAzOCA0NCA0NSA1NCAgLi5PLi4uQlNZMi4uOERFVAogICAgNTNDMDogMzIgMDQgMDAg
MDQgNDkgNTAgNEQgMzIgMDQgMDAgMTQgNDQgNDQgNDkgMzIgMDQgIDIuLi5JUE0yLi4uRERJMi4K
ICAgIDUzRDA6IDAwIDRDIDM1IDQzIDUzIDU0IDMzIDAxIDAwIDRGIDAzIDAwIDA3IDQyIDUzIDU5
ICAuTDVDU1QzLi5PLi4uQlNZCiAgICA1M0UwOiAzMyAwMSAwMCAzOCA0NCA0NSA1NCAzMyAwNCAw
MCAwNCA0OSA1MCA0RCAzMyAwNCAgMy4uOERFVDMuLi5JUE0zLgogICAgNTNGMDogMDAgMTQgNDQg
NDQgNDkgMzMgMDQgMDAgNEMgMzUgNDMgNTMgNTQgMzQgMDEgMDAgIC4uRERJMy4uTDVDU1Q0Li4K
ICAgIDU0MDA6IDRGIDAzIDAwIDA3IDQyIDUzIDU5IDM0IDAxIDAwIDM4IDQ0IDQ1IDU0IDM0IDA0
ICBPLi4uQlNZNC4uOERFVDQuCiAgICA1NDEwOiAwMCAwNCA0OSA1MCA0RCAzNCAwNCAwMCAxNCA0
NCA0NCA0OSAzNCAwNCAwMCA0QyAgLi5JUE00Li4uRERJNC4uTAogICAgNTQyMDogMzUgNDMgNTMg
NTQgMzUgMDEgMDAgNEYgMDMgMDAgMDcgNDIgNTMgNTkgMzUgMDEgIDVDU1Q1Li5PLi4uQlNZNS4K
ICAgIDU0MzA6IDAwIDM4IDQ0IDQ1IDU0IDM1IDA0IDAwIDA0IDQ5IDUwIDREIDM1IDA0IDAwIDE0
ICAuOERFVDUuLi5JUE01Li4uCiAgICA1NDQwOiA0NCA0NCA0OSAzNSAwNCA1QiA4MSAwRSA0MiA0
MSA1MiAzNSAwMCAwMCA0MCAwNiAgRERJNS5bLi5CQVI1Li5ALgogICAgNTQ1MDogNTAgNTQgNDkg
NUYgMDYgMTQgMEEgNUYgNDkgNEUgNDkgMDAgNDcgNDIgNDEgNDEgIFBUSV8uLi5fSU5JLkdCQUEK
ICAgIDU0NjA6IDVCIDgyIDRBIDE5IDUwIDUyIDQ5IDQ0IDA4IDVGIDQxIDQ0IDUyIDAwIDA4IDUz
ICBbLkouUFJJRC5fQURSLi5TCiAgICA1NDcwOiA1MCA1NCA0RCAxMSAxNyAwQSAxNCA3OCAwMCAw
MCAwMCAwRiAwMCAwMCAwMCA3OCAgUFRNLi4uLnguLi4uLi4ueAogICAgNTQ4MDogMDAgMDAgMDAg
MEYgMDAgMDAgMDAgMUYgMDAgMDAgMDAgMTQgMEIgNUYgNDcgNTQgIC4uLi4uLi4uLi4uLi5fR1QK
ICAgIDU0OTA6IDREIDAwIEE0IDUzIDUwIDU0IDREIDE0IDBDIDVGIDUzIDU0IDREIDAzIDcwIDY4
ICBNLi5TUFRNLi5fU1RNLnBoCiAgICA1NEEwOiA1MyA1MCA1NCA0RCAxNCAzQSA1RiA1MCA1MyAz
MCAwMCA0NyA0MiA0MSA0MSBBMCAgU1BUTS46X1BTMC5HQkFBLgogICAgNTRCMDogMkYgOTAgOTEg
OTIgOTUgNEYgNTMgNTYgNTIgMEEgMEMgOTMgNEYgNTMgNTYgNTIgIC8uLi4uT1NWUi4uLk9TVlIK
ICAgIDU0QzA6IDAwIDQyIDM1IDQ1IDRFIEEwIDE5IDQ5IDUwIDREIDMyIDcwIDBBIDMyIDYwIEEy
ICAuQjVFTi4uSVBNMnAuMmAuCiAgICA1NEQwOiAwRiA5MCA5MyA0MiA1MyA1OSAzMiAwMSA2MCA1
QiAyMiAwQSBGQSA3NiA2MCAxNCAgLi4uQlNZMi5gWyIuLnZgLgogICAgNTRFMDogMDYgNUYgNTAg
NTMgMzMgMDAgNUIgODIgNDkgMDggNTAgNUYgNDQgMzAgMDggNUYgIC5fUFMzLlsuSS5QX0QwLl8K
ICAgIDU0RjA6IDQxIDQ0IDUyIDAwIDE0IDI0IDVGIDUzIDU0IDQxIDAwIDQ3IDQyIDQxIDQxIEEw
ICBBRFIuLiRfU1RBLkdCQUEuCiAgICA1NTAwOiAwOSA5MyA0MiAzNSA0NSA0RSAwMCBBNCAwMCBB
MCAwQiA5MyA0NCA0NSA1NCAzMCAgLi5CNUVOLi4uLi4uREVUMAogICAgNTUxMDogMEEgMDMgQTQg
MEEgMEYgQTEgMDMgQTQgMDAgMDggNTMgMzEgMzIgNTAgMDAgMTQgIC4uLi4uLi4uLi5TMTJQLi4K
ICAgIDU1MjA6IDM0IDVGIDUwIDUzIDMwIDAwIDQ3IDQyIDQxIDQxIEEwIDI5IDkwIDkwIDk1IDRG
ICA0X1BTMC5HQkFBLikuLi5PCiAgICA1NTMwOiA1MyA1NiA1MiAwQSAwQyA5MiA5MyA0RiA1MyA1
NiA1MiAwMCA0MiAzNSA0NSA0RSAgU1ZSLi4uLk9TVlIuQjVFTgogICAgNTU0MDogNzAgMEEgMzIg
NjAgQTIgMEYgOTAgOTMgNDIgNTMgNTkgMzAgMDEgNjAgNUIgMjIgIHAuMmAuLi4uQlNZMC5gWyIK
ICAgIDU1NTA6IDBBIEZBIDc2IDYwIDE0IDA2IDVGIDUwIDUzIDMzIDAwIDE0IDE1IDVGIDQ3IDU0
ICAuLnZgLi5fUFMzLi4uX0dUCiAgICA1NTYwOiA0NiAwMCA3MCAxMSAwQSAwQSAwNyAwMyA0NiAw
MCAwMCAwMCBBMCBFRiA2MCBBNCAgRi5wLi4uLi5GLi4uLi5gLgogICAgNTU3MDogNjAgNUIgODIg
NDkgMDggNTAgNUYgNDQgMzEgMDggNUYgNDEgNDQgNTIgMDEgMTQgIGBbLkkuUF9EMS5fQURSLi4K
ICAgIDU1ODA6IDI0IDVGIDUzIDU0IDQxIDAwIDQ3IDQyIDQxIDQxIEEwIDA5IDkzIDQyIDM1IDQ1
ICAkX1NUQS5HQkFBLi4uQjVFCiAgICA1NTkwOiA0RSAwMCBBNCAwMCBBMCAwQiA5MyA0NCA0NSA1
NCAzMiAwQSAwMyBBNCAwQSAwRiAgTi4uLi4uLkRFVDIuLi4uLgogICAgNTVBMDogQTEgMDMgQTQg
MDAgMDggNTMgMzEgMzIgNTAgMDAgMTQgMzQgNUYgNTAgNTMgMzAgIC4uLi4uUzEyUC4uNF9QUzAK
ICAgIDU1QjA6IDAwIDQ3IDQyIDQxIDQxIEEwIDI5IDkwIDkwIDk1IDRGIDUzIDU2IDUyIDBBIDBD
ICAuR0JBQS4pLi4uT1NWUi4uCiAgICA1NUMwOiA5MiA5MyA0RiA1MyA1NiA1MiAwMCA0MiAzNSA0
NSA0RSA3MCAwQSAzMiA2MCBBMiAgLi5PU1ZSLkI1RU5wLjJgLgogICAgNTVEMDogMEYgOTAgOTMg
NDIgNTMgNTkgMzIgMDEgNjAgNUIgMjIgMEEgRkEgNzYgNjAgMTQgIC4uLkJTWTIuYFsiLi52YC4K
ICAgIDU1RTA6IDA2IDVGIDUwIDUzIDMzIDAwIDE0IDE1IDVGIDQ3IDU0IDQ2IDAwIDcwIDExIDBB
ICAuX1BTMy4uLl9HVEYucC4uCiAgICA1NUYwOiAwQSAwNyAwMyA0NiAwMCAwMCAwMCBBMCBFRiA2
MCBBNCA2MCA1QiA4MiA0QiAxQSAgLi4uRi4uLi4uYC5gWy5LLgogICAgNTYwMDogNTMgNDUgNDMg
NDQgMDggNUYgNDEgNDQgNTIgMEEgMDIgMDggNTMgNTAgNTQgNEQgIFNFQ0QuX0FEUi4uLlNQVE0K
ICAgIDU2MTA6IDExIDE3IDBBIDE0IDc4IDAwIDAwIDAwIDBGIDAwIDAwIDAwIDc4IDAwIDAwIDAw
ICAuLi4ueC4uLi4uLi54Li4uCiAgICA1NjIwOiAwRiAwMCAwMCAwMCAxRiAwMCAwMCAwMCAxNCAw
QiA1RiA0NyA1NCA0RCAwMCBBNCAgLi4uLi4uLi4uLl9HVE0uLgogICAgNTYzMDogNTMgNTAgNTQg
NEQgMTQgMEMgNUYgNTMgNTQgNEQgMDMgNzAgNjggNTMgNTAgNTQgIFNQVE0uLl9TVE0ucGhTUFQK
ICAgIDU2NDA6IDREIDE0IDQ2IDA1IDVGIDUwIDUzIDMwIDAwIDQ3IDQyIDQxIDQxIEEwIDRBIDA0
ICBNLkYuX1BTMC5HQkFBLkouCiAgICA1NjUwOiA5MCA5MSA5MiA5NSA0RiA1MyA1NiA1MiAwQSAw
QyA5MyA0RiA1MyA1NiA1MiAwMCAgLi4uLk9TVlIuLi5PU1ZSLgogICAgNTY2MDogNDIgMzUgNDUg
NEUgQTAgMTkgNDkgNTAgNEQgMzEgNzAgMEEgMzIgNjAgQTIgMEYgIEI1RU4uLklQTTFwLjJgLi4K
ICAgIDU2NzA6IDkwIDkzIDQyIDUzIDU5IDMxIDAxIDYwIDVCIDIyIDBBIEZBIDc2IDYwIEEwIDE5
ICAuLkJTWTEuYFsiLi52YC4uCiAgICA1NjgwOiA0OSA1MCA0RCAzMyA3MCAwQSAzMiA2MCBBMiAw
RiA5MCA5MyA0MiA1MyA1OSAzMyAgSVBNM3AuMmAuLi4uQlNZMwogICAgNTY5MDogMDEgNjAgNUIg
MjIgMEEgRkEgNzYgNjAgMTQgMDYgNUYgNTAgNTMgMzMgMDAgNUIgIC5gWyIuLnZgLi5fUFMzLlsK
ICAgIDU2QTA6IDgyIDQzIDA4IDUzIDVGIDQ0IDMwIDA4IDVGIDQxIDQ0IDUyIDAwIDE0IDI0IDVG
ICAuQy5TX0QwLl9BRFIuLiRfCiAgICA1NkIwOiA1MyA1NCA0MSAwMCA0NyA0MiA0MSA0MSBBMCAw
OSA5MyA0MiAzNSA0NSA0RSAwMCAgU1RBLkdCQUEuLi5CNUVOLgogICAgNTZDMDogQTQgMDAgQTAg
MEIgOTMgNDQgNDUgNTQgMzEgMEEgMDMgQTQgMEEgMEYgQTEgMDMgIC4uLi4uREVUMS4uLi4uLi4K
ICAgIDU2RDA6IEE0IDAwIDE0IDM0IDVGIDUwIDUzIDMwIDAwIDQ3IDQyIDQxIDQxIEEwIDI5IDkw
ICAuLi40X1BTMC5HQkFBLikuCiAgICA1NkUwOiA5MCA5NSA0RiA1MyA1NiA1MiAwQSAwQyA5MiA5
MyA0RiA1MyA1NiA1MiAwMCA0MiAgLi5PU1ZSLi4uLk9TVlIuQgogICAgNTZGMDogMzUgNDUgNEUg
NzAgMEEgMzIgNjAgQTIgMEYgOTAgOTMgNDIgNTMgNTkgMzEgMDEgIDVFTnAuMmAuLi4uQlNZMS4K
ICAgIDU3MDA6IDYwIDVCIDIyIDBBIEZBIDc2IDYwIDE0IDA2IDVGIDUwIDUzIDMzIDAwIDE0IDE1
ICBgWyIuLnZgLi5fUFMzLi4uCiAgICA1NzEwOiA1RiA0NyA1NCA0NiAwMCA3MCAxMSAwQSAwQSAw
NyAwMyA0NiAwMCAwMCAwMCBBMCAgX0dURi5wLi4uLi5GLi4uLgogICAgNTcyMDogRUYgNjAgQTQg
NjAgNUIgODIgNDMgMDggNTMgNUYgNDQgMzEgMDggNUYgNDEgNDQgIC5gLmBbLkMuU19EMS5fQUQK
ICAgIDU3MzA6IDUyIDAxIDE0IDI0IDVGIDUzIDU0IDQxIDAwIDQ3IDQyIDQxIDQxIEEwIDA5IDkz
ICBSLi4kX1NUQS5HQkFBLi4uCiAgICA1NzQwOiA0MiAzNSA0NSA0RSAwMCBBNCAwMCBBMCAwQiA5
MyA0NCA0NSA1NCAzMyAwQSAwMyAgQjVFTi4uLi4uLkRFVDMuLgogICAgNTc1MDogQTQgMEEgMEYg
QTEgMDMgQTQgMDAgMTQgMzQgNUYgNTAgNTMgMzAgMDAgNDcgNDIgIC4uLi4uLi4uNF9QUzAuR0IK
ICAgIDU3NjA6IDQxIDQxIEEwIDI5IDkwIDkwIDk1IDRGIDUzIDU2IDUyIDBBIDBDIDkyIDkzIDRG
ICBBQS4pLi4uT1NWUi4uLi5PCiAgICA1NzcwOiA1MyA1NiA1MiAwMCA0MiAzNSA0NSA0RSA3MCAw
QSAzMiA2MCBBMiAwRiA5MCA5MyAgU1ZSLkI1RU5wLjJgLi4uLgogICAgNTc4MDogNDIgNTMgNTkg
MzMgMDEgNjAgNUIgMjIgMEEgRkEgNzYgNjAgMTQgMDYgNUYgNTAgIEJTWTMuYFsiLi52YC4uX1AK
ICAgIDU3OTA6IDUzIDMzIDAwIDE0IDE1IDVGIDQ3IDU0IDQ2IDAwIDcwIDExIDBBIDBBIDA3IDAz
ICBTMy4uLl9HVEYucC4uLi4uCiAgICA1N0EwOiA0NiAwMCAwMCAwMCBBMCBFRiA2MCBBNCA2MCAx
NCA0QSAxMCA0NSA0RSA1MCA1RiAgRi4uLi4uYC5gLkouRU5QXwogICAgNTdCMDogMDIgQTAgMEMg
OTMgNjggMDAgNzAgODAgNjkgMDAgNDQgNDkgNTMgMzAgQTEgNEYgIC4uLi5oLnAuaS5ESVMwLk8K
ICAgIDU3QzA6IDA0IEEwIDBDIDkzIDY4IDAxIDcwIDgwIDY5IDAwIDQ0IDQ5IDUzIDMxIEExIDNG
ICAuLi4uaC5wLmkuRElTMS4/CiAgICA1N0QwOiBBMCAwRCA5MyA2OCAwQSAwMiA3MCA4MCA2OSAw
MCA0NCA0OSA1MyAzMiBBMSAyRiAgLi4uaC4ucC5pLkRJUzIuLwogICAgNTdFMDogQTAgMEQgOTMg
NjggMEEgMDMgNzAgODAgNjkgMDAgNDQgNDkgNTMgMzMgQTEgMUYgIC4uLmguLnAuaS5ESVMzLi4K
ICAgIDU3RjA6IEEwIDBEIDkzIDY4IDBBIDA0IDcwIDgwIDY5IDAwIDQ0IDQ5IDUzIDM0IEExIDBG
ICAuLi5oLi5wLmkuRElTNC4uCiAgICA1ODAwOiBBMCAwRCA5MyA2OCAwQSAwNSA3MCA4MCA2OSAw
MCA0NCA0OSA1MyAzNSA3MCAwMSAgLi4uaC4ucC5pLkRJUzVwLgogICAgNTgxMDogNTcgNTQgNDUg
NEUgQTAgMEEgOTMgNjggMDAgNzAgNjkgNTAgNTQgNDkgMzAgQTEgIFdURU4uLi5oLnBpUFRJMC4K
ICAgIDU4MjA6IDQ1IDA0IEEwIDBBIDkzIDY4IDAxIDcwIDY5IDUwIDU0IDQ5IDMxIEExIDM3IEEw
ICBFLi4uLmgucGlQVEkxLjcuCiAgICA1ODMwOiAwQiA5MyA2OCAwQSAwMiA3MCA2OSA1MCA1NCA0
OSAzMiBBMSAyOSBBMCAwQiA5MyAgLi5oLi5waVBUSTIuKS4uLgogICAgNTg0MDogNjggMEEgMDMg
NzAgNjkgNTAgNTQgNDkgMzMgQTEgMUIgQTAgMEIgOTMgNjggMEEgIGguLnBpUFRJMy4uLi4uaC4K
ICAgIDU4NTA6IDA0IDcwIDY5IDUwIDU0IDQ5IDM0IEExIDBEIEEwIDBCIDkzIDY4IDBBIDA1IDcw
ICAucGlQVEk0Li4uLi5oLi5wCiAgICA1ODYwOiA2OSA1MCA1NCA0OSAzNSBBMCAwRSA5MyA0NCA0
OSA1MyA1MCAwQSAzRiA3MCAwMSAgaVBUSTUuLi5ESVNQLj9wLgogICAgNTg3MDogNTAgNTQgNDkg
MzAgQTEgMUEgQTAgMTggOTAgNDQgNDkgNTMgMzAgN0YgN0IgNDQgIFBUSTAuLi4uLkRJUzAue0QK
ICAgIDU4ODA6IDQ5IDUzIDUwIDBBIDNFIDAwIDBBIDNFIDAwIDcwIDAwIDUwIDU0IDQ5IDMwIDcw
ICBJU1AuPi4uPi5wLlBUSTBwCiAgICA1ODkwOiA1MCA1NCA0OSA1RiA2MCA3MCAwMCA2MSBBMiAw
RSA2MCBBMCAwNyA3QiA2MCAwMSAgUFRJX2BwLmEuLmAuLntgLgogICAgNThBMDogMDAgNzUgNjEg
N0EgNjAgMDEgNjAgNzAgNzYgNjEgNEUgNEYgNTAgNTQgNzAgMDAgIC51YXpgLmBwdmFOT1BUcC4K
ICAgIDU4QjA6IDU3IDU0IDQ1IDRFIDVCIDgyIDRDIEIzIDUwIDQzIDQ5IDMyIDA4IDVGIDQ4IDQ5
ICBXVEVOWy5MLlBDSTIuX0hJCiAgICA1OEMwOiA0NCAwQyA0MSBEMCAwQSAwOCAwOCA1RiA0MyA0
OSA0NCAwQyA0MSBEMCAwQSAwMyAgRC5BLi4uLl9DSUQuQS4uLgogICAgNThEMDogMDggNUYgNDEg
NDQgNTIgMDAgMTQgMEEgNUUgNDIgNEUgMzAgMzIgMDAgQTQgMEEgIC5fQURSLi4uXkJOMDIuLi4K
ICAgIDU4RTA6IDAyIDE0IDBCIDVGIDQyIDQyIDRFIDAwIEE0IDQyIDRFIDMwIDMyIDA4IDVGIDU1
ICAuLi5fQkJOLi5CTjAyLl9VCiAgICA1OEYwOiA0OSA0NCAwQSAwMiAxNCAxNiA1RiA1MCA1MiA1
NCAwMCBBMCAwQSA1MCA0OSA0MyAgSUQuLi4uX1BSVC4uLlBJQwogICAgNTkwMDogNEQgQTQgNDEg
NTIgMzAgMzIgQTQgNTAgNDQgMzAgMzIgMDggNDMgNTAgNTIgNDIgIE0uQVIwMi5QRDAyLkNQUkIK
ICAgIDU5MTA6IDAxIDA4IDRDIDU2IDQ3IDQxIDBBIDAwIDA4IDUzIDU0IDQxIDU2IDBBIDBGIDA4
ICAuLkxWR0EuLi5TVEFWLi4uCiAgICA1OTIwOiA0MiA1MiA0MiA1RiAwQiA4MCAwMCAwOCA0MiA1
MiA0QyA1RiAwQiA0MCAwMCAwOCAgQlJCXy4uLi5CUkxfLkAuLgogICAgNTkzMDogNDkgNEYgNDIg
NUYgMEIgMDAgNzAgMDggNDkgNEYgNEMgNUYgMEIgMDAgMzAgMDggIElPQl8uLnAuSU9MXy4uMC4K
ICAgIDU5NDA6IDREIDQyIDQyIDVGIDBDIDAwIDAwIDAwIENBIDA4IDREIDQyIDRDIDVGIDBDIDAw
ICBNQkJfLi4uLi4uTUJMXy4uCiAgICA1OTUwOiAwMCAwMCAwMSAwOCA0RCA0MSA0MiA0QyAwRSAw
MCAwMCA0MCAyMCBDMCAwMiAwMCAgLi4uLk1BQkwuLi5AIC4uLgogICAgNTk2MDogMDAgMDggNEQg
NDEgNDIgNDggMEMgMDAgMDAgMDEgMDAgMDggNEQgNDEgNEQgNEMgIC4uTUFCSC4uLi4uLk1BTUwK
ICAgIDU5NzA6IDBDIDAwIDAwIDAxIDAwIDA4IDREIDQxIDREIDQ4IDBDIDAwIDAwIDAxIDAwIDA4
ICAuLi4uLi5NQU1ILi4uLi4uCiAgICA1OTgwOiA0RCA0MSA0QyA0QyAwRSAwMCAwMCAwMCA5MyA1
OSAwMCAwMCAwMCAwOCA0RCA0MSAgTUFMTC4uLi4uWS4uLi5NQQogICAgNTk5MDogNEMgNDggMEMg
MDAgMDAgMDEgMDAgMDggNTAgNTIgNTggNEQgMEIgMDAgMDAgMDggIExILi4uLi4uUFJYTS4uLi4K
ICAgIDU5QTA6IDQzIDUyIDUzIDMyIDExIDQ4IDA5IDBBIDk0IDg4IDBEIDAwIDAyIDBDIDAwIDAw
ICBDUlMyLkguLi4uLi4uLi4uCiAgICA1OUIwOiAwMCA4MCAwMCBGRiAwMCAwMCAwMCA4MCAwMCA4
OCAwRCAwMCAwMSAwQyAwMyAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNTlDMDogMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgODggMEQgMDAgMDEgMEMgMDMgMDAgIC4uLi4uLi4uLi4uLi4uLi4K
ICAgIDU5RDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDg3IDE3IDAwIDAwIDBDIDAzIDAw
ICAuLi4uLi4uLi4uLi4uLi4uCiAgICA1OUUwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNTlGMDogMDAgMDAgMDAg
ODcgMTcgMDAgMDAgMEMgMDMgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4K
ICAgIDVBMDA6IDgwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDgwIDhBIDJCIDAw
ICAuLi4uLi4uLi4uLi4uLisuCiAgICA1QTEwOiAwMCAwQyAwMyAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNUEyMDogMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4K
ICAgIDVBMzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDc5IDAwIDE0IDBCIDVG
ICAuLi4uLi4uLi4uLnkuLi5fCiAgICA1QTQwOiA1MyA1NCA0MSAwMCBBNCA1MyA1NCA0MSA1NiAx
NCA0QSAxOSA1RiA0MyA1MiA1MyAgU1RBLi5TVEFWLkouX0NSUwogICAgNUE1MDogMDggOEIgNDMg
NTIgNTMgMzIgMEEgMDggNEQgNDkgNEUgMzIgOEIgNDMgNTIgNTMgIC4uQ1JTMi4uTUlOMi5DUlMK
ICAgIDVBNjA6IDMyIDBBIDBBIDREIDQxIDU4IDMyIDhCIDQzIDUyIDUzIDMyIDBBIDBFIDRDIDQ1
ICAyLi5NQVgyLkNSUzIuLkxFCiAgICA1QTcwOiA0RSAzMiA3MCA0MiA1MiA0MiA1RiA0RCA0OSA0
RSAzMiA3MCA0MiA1MiA0QyA1RiAgTjJwQlJCX01JTjJwQlJMXwogICAgNUE4MDogNEMgNDUgNEUg
MzIgNzAgNEMgNDUgNEUgMzIgNjEgNzIgNEQgNDkgNEUgMzIgNzYgIExFTjJwTEVOMmFyTUlOMnYK
ICAgIDVBOTA6IDYxIDREIDQxIDU4IDMyIDhCIDQzIDUyIDUzIDMyIDBBIDI4IDREIDQ5IDRFIDM0
ICBhTUFYMi5DUlMyLihNSU40CiAgICA1QUEwOiA4QiA0MyA1MiA1MyAzMiAwQSAyQSA0RCA0MSA1
OCAzNCA4QiA0MyA1MiA1MyAzMiAgLkNSUzIuKk1BWDQuQ1JTMgogICAgNUFCMDogMEEgMkUgNEMg
NDUgNEUgMzQgNzAgNDkgNEYgNDIgNUYgNEQgNDkgNEUgMzQgNzAgIC4uTEVONHBJT0JfTUlONHAK
ICAgIDVBQzA6IDQ5IDRGIDRDIDVGIDRDIDQ1IDRFIDM0IDcwIDRDIDQ1IDRFIDM0IDYxIDcyIDRE
ICBJT0xfTEVONHBMRU40YXJNCiAgICA1QUQwOiA0OSA0RSAzNCA3NiA2MSA0RCA0MSA1OCAzNCBB
MCA0RCAwNyA0QyA1NiA0NyA0MSAgSU40dmFNQVg0Lk0uTFZHQQogICAgNUFFMDogOEIgNDMgNTIg
NTMgMzIgMEEgMTggNDkgNEQgNEUgMzIgOEIgNDMgNTIgNTMgMzIgIC5DUlMyLi5JTU4yLkNSUzIK
ICAgIDVBRjA6IDBBIDFBIDQ5IDREIDU4IDMyIDhCIDQzIDUyIDUzIDMyIDBBIDFFIDQ5IDRDIDRF
ICAuLklNWDIuQ1JTMi4uSUxOCiAgICA1QjAwOiAzMiA3MCAwQiBCMCAwMyA0OSA0RCA0RSAzMiA3
MCAwQiBERiAwMyA0OSA0RCA1OCAgMnAuLi5JTU4ycC4uLklNWAogICAgNUIxMDogMzIgNzAgMEEg
MzAgNDkgNEMgNEUgMzIgOEEgNDMgNTIgNTMgMzIgMEEgM0EgNTYgIDJwLjBJTE4yLkNSUzIuOlYK
ICAgIDVCMjA6IDREIDRFIDMyIDhBIDQzIDUyIDUzIDMyIDBBIDNFIDU2IDREIDU4IDMyIDhBIDQz
ICBNTjIuQ1JTMi4+Vk1YMi5DCiAgICA1QjMwOiA1MiA1MyAzMiAwQSA0NiA1NiA0QyA0RSAzMiA3
MCAwQyAwMCAwMCAwQSAwMCA1NiAgUlMyLkZWTE4ycC4uLi4uVgogICAgNUI0MDogNEQgNEUgMzIg
NzAgMEMgRkYgRkYgMEIgMDAgNTYgNEQgNTggMzIgNzAgMEMgMDAgIE1OMnAuLi4uLlZNWDJwLi4K
ICAgIDVCNTA6IDAwIDAyIDAwIDU2IDRDIDRFIDMyIDhBIDQzIDUyIDUzIDMyIDBBIDU0IDREIDQ5
ICAuLi5WTE4yLkNSUzIuVE1JCiAgICA1QjYwOiA0RSAzNSA4QSA0MyA1MiA1MyAzMiAwQSA1OCA0
RCA0MSA1OCAzNSA4QSA0MyA1MiAgTjUuQ1JTMi5YTUFYNS5DUgogICAgNUI3MDogNTMgMzIgMEEg
NjAgNEMgNDUgNEUgMzUgNzAgNEQgNDIgNDIgNUYgNEQgNDkgNEUgIFMyLmBMRU41cE1CQl9NSU4K
ICAgIDVCODA6IDM1IDcwIDREIDQyIDRDIDVGIDRDIDQ1IDRFIDM1IDcwIDRDIDQ1IDRFIDM1IDYx
ICA1cE1CTF9MRU41cExFTjVhCiAgICA1QjkwOiA3MiA0RCA0OSA0RSAzNSA3NiA2MSA0RCA0MSA1
OCAzNSA4RiA0MyA1MiA1MyAzMiAgck1JTjV2YU1BWDUuQ1JTMgogICAgNUJBMDogMEEgNzIgNEQg
NDkgNEUgMzkgOEYgNDMgNTIgNTMgMzIgMEEgN0EgNEQgNDEgNTggIC5yTUlOOS5DUlMyLnpNQVgK
ICAgIDVCQjA6IDM5IDhGIDQzIDUyIDUzIDMyIDBBIDhBIDRDIDQ1IDRFIDM5IDcwIDREIDQxIDQy
ICA5LkNSUzIuLkxFTjlwTUFCCiAgICA1QkMwOiA0QyA0RCA0OSA0RSAzOSA3MCA0RCA0MSA0QyA0
QyA0QyA0NSA0RSAzOSA3MCA0QyAgTE1JTjlwTUFMTExFTjlwTAogICAgNUJEMDogNDUgNEUgMzkg
NjAgNzIgNEQgNDkgNEUgMzkgNzYgNjAgNEQgNDEgNTggMzkgQTQgIEVOOWByTUlOOXZgTUFYOS4K
ICAgIDVCRTA6IDQzIDUyIDUzIDMyIDE0IDQyIDEzIDVGIDRGIDUzIDQzIDBDIDA4IDUzIDU1IDUw
ICBDUlMyLkIuX09TQy4uU1VQCiAgICA1QkYwOiA1MCAwMCAwOCA0MyA1NCA1MiA0QyAwMCA4QSA2
QiAwMCA0MyA0NCA1NyAzMSA4QSAgUC4uQ1RSTC4uay5DRFcxLgogICAgNUMwMDogNkIgMEEgMDQg
NDMgNDQgNTcgMzIgOEEgNkIgMEEgMDggNDMgNDQgNTcgMzMgQTAgIGsuLkNEVzIuay4uQ0RXMy4K
ICAgIDVDMTA6IDQ4IDBGIDkzIDY4IDExIDEzIDBBIDEwIDVCIDREIERCIDMzIEY3IDFGIDFDIDQw
ICBILi5oLi4uLltNLjMuLi5ACiAgICA1QzIwOiA5NiA1NyA3NCA0MSBDMCAzRCBENyA2NiA3MCA0
MyA0NCA1NyAzMiA1MyA1NSA1MCAgLld0QS49LmZwQ0RXMlNVUAogICAgNUMzMDogNTAgNzAgNDMg
NDQgNTcgMzMgNDMgNTQgNTIgNEMgQTAgMTggOTIgOTMgN0IgNTMgIFBwQ0RXM0NUUkwuLi4ue1MK
ICAgIDVDNDA6IDU1IDUwIDUwIDBBIDE2IDAwIDBBIDE2IDdCIDQzIDU0IDUyIDRDIDBBIDFFIDQz
ICBVUFAuLi4uLntDVFJMLi5DCiAgICA1QzUwOiA1NCA1MiA0QyBBMCAxMSA5MiA1MCA0NSA0OCA1
MCA3QiA0MyA1NCA1MiA0QyAwQSAgVFJMLi4uUEVIUHtDVFJMLgogICAgNUM2MDogMUUgNDMgNTQg
NTIgNEMgQTAgMTEgOTIgNTMgNDggNTAgNDMgN0IgNDMgNTQgNTIgIC5DVFJMLi4uU0hQQ3tDVFIK
ICAgIDVDNzA6IDRDIDBBIDFEIDQzIDU0IDUyIDRDIEEwIDExIDkyIDUwIDQ1IDUwIDREIDdCIDQz
ICBMLi5DVFJMLi4uUEVQTXtDCiAgICA1QzgwOiA1NCA1MiA0QyAwQSAxQiA0MyA1NCA1MiA0QyBB
MCAxMSA5MiA1MCA0NSA0NSA1MiAgVFJMLi5DVFJMLi4uUEVFUgogICAgNUM5MDogN0IgNDMgNTQg
NTIgNEMgMEEgMTUgNDMgNTQgNTIgNEMgQTAgMTEgOTIgNTAgNDUgIHtDVFJMLi5DVFJMLi4uUEUK
ICAgIDVDQTA6IDQzIDUzIDdCIDQzIDU0IDUyIDRDIDBBIDBGIDQzIDU0IDUyIDRDIEEwIDEwIDky
ICBDU3tDVFJMLi5DVFJMLi4uCiAgICA1Q0IwOiA5MyA2OSAwMSA3RCA0MyA0NCA1NyAzMSAwQSAw
OCA0MyA0NCA1NyAzMSBBMCAxNSAgLmkufUNEVzEuLkNEVzEuLgogICAgNUNDMDogNUIgMTIgNTAg
NEYgNTMgNDMgMDAgN0IgNDMgNTQgNTIgNEMgNTAgNEYgNTMgNDMgIFsuUE9TQy57Q1RSTFBPU0MK
ICAgIDVDRDA6IDQzIDU0IDUyIDRDIEEwIDE2IDkyIDkzIDQzIDQ0IDU3IDMzIDQzIDU0IDUyIDRD
ICBDVFJMLi4uLkNEVzNDVFJMCiAgICA1Q0UwOiA3RCA0MyA0NCA1NyAzMSAwQSAxMCA0MyA0NCA1
NyAzMSA3MCA0MyA1NCA1MiA0QyAgfUNEVzEuLkNEVzFwQ1RSTAogICAgNUNGMDogNDMgNDQgNTcg
MzMgQTAgMTEgNUIgMTIgNTAgNEYgNTMgNTMgMDAgNzAgNTMgNTUgIENEVzMuLlsuUE9TUy5wU1UK
ICAgIDVEMDA6IDUwIDUwIDUwIDRGIDUzIDUzIEE0IDZCIEExIDBFIDdEIDQzIDQ0IDU3IDMxIDBB
ICBQUFBPU1Muay4ufUNEVzEuCiAgICA1RDEwOiAwNCA0MyA0NCA1NyAzMSBBNCA2QiA1QiA4MiAw
QyA0NCAzMCAzNCAzOCAwOCA1RiAgLkNEVzEua1suLkQwNDguXwogICAgNUQyMDogNDEgNDQgNTIg
MEEgMDIgNUIgODIgMEMgNDQgMzAgMzQgMzkgMDggNUYgNDEgNDQgIEFEUi4uWy4uRDA0OS5fQUQK
ICAgIDVEMzA6IDUyIDBBIDAzIDVCIDgyIDQ2IDA0IDQ3IDUwIDUwIDMwIDA4IDVGIDQxIDQ0IDUy
ICBSLi5bLkYuR1BQMC5fQURSCiAgICA1RDQwOiAwQyAwMSAwMCAwMSAwMCAxNCAwRiA1RiA1MCA1
MiA1NyAwMCBBNCA0NyA1MCA1MiAgLi4uLi4uLl9QUlcuLkdQUgogICAgNUQ1MDogNTcgMEEgMDgg
MEEgMDQgMTQgMTYgNUYgNTAgNTIgNTQgMDAgQTAgMEEgNTAgNDkgIFcuLi4uLi5fUFJULi4uUEkK
ICAgIDVENjA6IDQzIDREIEE0IDQ3IDMwIDM0IDQxIEE0IDUwIDMwIDM0IDQxIDVCIDgyIDBEIDQ0
ICBDTS5HMDRBLlAwNEFbLi5ECiAgICA1RDcwOiAzMCA0MyAzMSAwOCA1RiA0MSA0NCA1MiAwQiBG
RiBGRiA1QiA4MiA0NiAwNCA0NyAgMEMxLl9BRFIuLi5bLkYuRwogICAgNUQ4MDogNTAgNTAgMzEg
MDggNUYgNDEgNDQgNTIgMEMgMDIgMDAgMDEgMDAgMTQgMEYgNUYgIFBQMS5fQURSLi4uLi4uLl8K
ICAgIDVEOTA6IDUwIDUyIDU3IDAwIEE0IDQ3IDUwIDUyIDU3IDBBIDA4IDBBIDA0IDE0IDE2IDVG
ICBQUlcuLkdQUlcuLi4uLi5fCiAgICA1REEwOiA1MCA1MiA1NCAwMCBBMCAwQSA1MCA0OSA0MyA0
RCBBNCA0NyAzMCAzNCA0MiBBNCAgUFJULi4uUElDTS5HMDRCLgogICAgNURCMDogNTAgMzAgMzQg
NDIgNUIgODIgMEQgNDQgMzAgNDMgMzIgMDggNUYgNDEgNDQgNTIgIFAwNEJbLi5EMEMyLl9BRFIK
ICAgIDVEQzA6IDBCIEZGIEZGIDVCIDgyIDQ2IDA0IDQ3IDUwIDUwIDMyIDA4IDVGIDQxIDQ0IDUy
ICAuLi5bLkYuR1BQMi5fQURSCiAgICA1REQwOiAwQyAwMyAwMCAwMSAwMCAxNCAwRiA1RiA1MCA1
MiA1NyAwMCBBNCA0NyA1MCA1MiAgLi4uLi4uLl9QUlcuLkdQUgogICAgNURFMDogNTcgMEEgMDgg
MEEgMDQgMTQgMTYgNUYgNTAgNTIgNTQgMDAgQTAgMEEgNTAgNDkgIFcuLi4uLi5fUFJULi4uUEkK
ICAgIDVERjA6IDQzIDREIEE0IDQ3IDMwIDM0IDQzIEE0IDUwIDMwIDM0IDQzIDVCIDgyIDBEIDQ0
ICBDTS5HMDRDLlAwNENbLi5ECiAgICA1RTAwOiAzMCA0MyAzMyAwOCA1RiA0MSA0NCA1MiAwQiBG
RiBGRiA1QiA4MiA0NiAwNCA0NyAgMEMzLl9BRFIuLi5bLkYuRwogICAgNUUxMDogNTAgNTAgMzMg
MDggNUYgNDEgNDQgNTIgMEMgMDQgMDAgMDEgMDAgMTQgMEYgNUYgIFBQMy5fQURSLi4uLi4uLl8K
ICAgIDVFMjA6IDUwIDUyIDU3IDAwIEE0IDQ3IDUwIDUyIDU3IDBBIDA4IDBBIDA0IDE0IDE2IDVG
ICBQUlcuLkdQUlcuLi4uLi5fCiAgICA1RTMwOiA1MCA1MiA1NCAwMCBBMCAwQSA1MCA0OSA0MyA0
RCBBNCA0NyAzMCAzNCA0NCBBNCAgUFJULi4uUElDTS5HMDRELgogICAgNUU0MDogNTAgMzAgMzQg
NDQgNUIgODIgMEQgNDQgMzAgNDMgMzQgMDggNUYgNDEgNDQgNTIgIFAwNERbLi5EMEM0Ll9BRFIK
ICAgIDVFNTA6IDBCIEZGIEZGIDVCIDgyIDQ2IDA0IDQ3IDUwIDUwIDM0IDA4IDVGIDQxIDQ0IDUy
ICAuLi5bLkYuR1BQNC5fQURSCiAgICA1RTYwOiAwQyAwNSAwMCAwMSAwMCAxNCAwRiA1RiA1MCA1
MiA1NyAwMCBBNCA0NyA1MCA1MiAgLi4uLi4uLl9QUlcuLkdQUgogICAgNUU3MDogNTcgMEEgMDgg
MEEgMDQgMTQgMTYgNUYgNTAgNTIgNTQgMDAgQTAgMEEgNTAgNDkgIFcuLi4uLi5fUFJULi4uUEkK
ICAgIDVFODA6IDQzIDREIEE0IDQ3IDMwIDM0IDQ1IEE0IDUwIDMwIDM0IDQ1IDVCIDgyIDBEIDQ0
ICBDTS5HMDRFLlAwNEVbLi5ECiAgICA1RTkwOiAzMCA0MyAzNSAwOCA1RiA0MSA0NCA1MiAwQiBG
RiBGRiA1QiA4MiA0NiAwNCA0NyAgMEM1Ll9BRFIuLi5bLkYuRwogICAgNUVBMDogNTAgNTAgMzUg
MDggNUYgNDEgNDQgNTIgMEMgMDYgMDAgMDEgMDAgMTQgMEYgNUYgIFBQNS5fQURSLi4uLi4uLl8K
ICAgIDVFQjA6IDUwIDUyIDU3IDAwIEE0IDQ3IDUwIDUyIDU3IDBBIDA4IDBBIDA0IDE0IDE2IDVG
ICBQUlcuLkdQUlcuLi4uLi5fCiAgICA1RUMwOiA1MCA1MiA1NCAwMCBBMCAwQSA1MCA0OSA0MyA0
RCBBNCA0NyAzMCAzNCA0NiBBNCAgUFJULi4uUElDTS5HMDRGLgogICAgNUVEMDogNTAgMzAgMzQg
NDYgNUIgODIgMEQgNDQgMzAgNDMgMzYgMDggNUYgNDEgNDQgNTIgIFAwNEZbLi5EMEM2Ll9BRFIK
ICAgIDVFRTA6IDBCIEZGIEZGIDVCIDgyIDQ2IDA0IDQ3IDUwIDUwIDM2IDA4IDVGIDQxIDQ0IDUy
ICAuLi5bLkYuR1BQNi5fQURSCiAgICA1RUYwOiAwQyAwNyAwMCAwMSAwMCAxNCAwRiA1RiA1MCA1
MiA1NyAwMCBBNCA0NyA1MCA1MiAgLi4uLi4uLl9QUlcuLkdQUgogICAgNUYwMDogNTcgMEEgMDgg
MEEgMDQgMTQgMTYgNUYgNTAgNTIgNTQgMDAgQTAgMEEgNTAgNDkgIFcuLi4uLi5fUFJULi4uUEkK
ICAgIDVGMTA6IDQzIDREIEE0IDQ3IDMwIDM1IDMwIEE0IDUwIDMwIDM1IDMwIDVCIDgyIDBEIDQ0
ICBDTS5HMDUwLlAwNTBbLi5ECiAgICA1RjIwOiAzMCA0MyAzNyAwOCA1RiA0MSA0NCA1MiAwQiBG
RiBGRiA1QiA4MiA0NiAwNCA0NyAgMEM3Ll9BRFIuLi5bLkYuRwogICAgNUYzMDogNTAgNTAgMzcg
MDggNUYgNDEgNDQgNTIgMEMgMDEgMDAgMDIgMDAgMTQgMEYgNUYgIFBQNy5fQURSLi4uLi4uLl8K
ICAgIDVGNDA6IDUwIDUyIDU3IDAwIEE0IDQ3IDUwIDUyIDU3IDBBIDA4IDBBIDA0IDE0IDE2IDVG
ICBQUlcuLkdQUlcuLi4uLi5fCiAgICA1RjUwOiA1MCA1MiA1NCAwMCBBMCAwQSA1MCA0OSA0MyA0
RCBBNCA0NyAzMCAzNSAzMSBBNCAgUFJULi4uUElDTS5HMDUxLgogICAgNUY2MDogNTAgMzAgMzUg
MzEgNUIgODIgMEQgNDQgMzAgNDMgMzggMDggNUYgNDEgNDQgNTIgIFAwNTFbLi5EMEM4Ll9BRFIK
ICAgIDVGNzA6IDBCIEZGIEZGIDVCIDgyIDQ2IDA0IDQ3IDUwIDUwIDM4IDA4IDVGIDQxIDQ0IDUy
ICAuLi5bLkYuR1BQOC5fQURSCiAgICA1RjgwOiAwQyAwMiAwMCAwMiAwMCAxNCAwRiA1RiA1MCA1
MiA1NyAwMCBBNCA0NyA1MCA1MiAgLi4uLi4uLl9QUlcuLkdQUgogICAgNUY5MDogNTcgMEEgMDgg
MEEgMDQgMTQgMTYgNUYgNTAgNTIgNTQgMDAgQTAgMEEgNTAgNDkgIFcuLi4uLi5fUFJULi4uUEkK
ICAgIDVGQTA6IDQzIDREIEE0IDQ3IDMwIDM1IDMyIEE0IDUwIDMwIDM1IDMyIDVCIDgyIDBEIDQ0
ICBDTS5HMDUyLlAwNTJbLi5ECiAgICA1RkIwOiAzMCA0MyAzOSAwOCA1RiA0MSA0NCA1MiAwQiBG
RiBGRiA1QiA4MiA0NiAwNCA0NyAgMEM5Ll9BRFIuLi5bLkYuRwogICAgNUZDMDogNTAgNTAgMzkg
MDggNUYgNDEgNDQgNTIgMEMgMDEgMDAgMDMgMDAgMTQgMEYgNUYgIFBQOS5fQURSLi4uLi4uLl8K
ICAgIDVGRDA6IDUwIDUyIDU3IDAwIEE0IDQ3IDUwIDUyIDU3IDBBIDA4IDBBIDA0IDE0IDE2IDVG
ICBQUlcuLkdQUlcuLi4uLi5fCiAgICA1RkUwOiA1MCA1MiA1NCAwMCBBMCAwQSA1MCA0OSA0MyA0
RCBBNCA0NyAzMCAzNSAzMyBBNCAgUFJULi4uUElDTS5HMDUzLgogICAgNUZGMDogNTAgMzAgMzUg
MzMgNUIgODIgMEQgNDQgMzAgNDMgNDEgMDggNUYgNDEgNDQgNTIgIFAwNTNbLi5EMENBLl9BRFIK
ICAgIDYwMDA6IDBCIEZGIEZGIDVCIDgyIDQ2IDA0IDQ3IDUwIDUwIDQxIDA4IDVGIDQxIDQ0IDUy
ICAuLi5bLkYuR1BQQS5fQURSCiAgICA2MDEwOiAwQyAwMiAwMCAwMyAwMCAxNCAwRiA1RiA1MCA1
MiA1NyAwMCBBNCA0NyA1MCA1MiAgLi4uLi4uLl9QUlcuLkdQUgogICAgNjAyMDogNTcgMEEgMDgg
MEEgMDQgMTQgMTYgNUYgNTAgNTIgNTQgMDAgQTAgMEEgNTAgNDkgIFcuLi4uLi5fUFJULi4uUEkK
ICAgIDYwMzA6IDQzIDREIEE0IDQ3IDMwIDM1IDM0IEE0IDUwIDMwIDM1IDM0IDVCIDgyIDBEIDQ0
ICBDTS5HMDU0LlAwNTRbLi5ECiAgICA2MDQwOiAzMCA0MyA0MiAwOCA1RiA0MSA0NCA1MiAwQiBG
RiBGRiA1QiA4MiA0NiAwNCA0NyAgMENCLl9BRFIuLi5bLkYuRwogICAgNjA1MDogNTAgNTAgNDIg
MDggNUYgNDEgNDQgNTIgMEMgMDMgMDAgMDMgMDAgMTQgMEYgNUYgIFBQQi5fQURSLi4uLi4uLl8K
ICAgIDYwNjA6IDUwIDUyIDU3IDAwIEE0IDQ3IDUwIDUyIDU3IDBBIDA4IDBBIDA0IDE0IDE2IDVG
ICBQUlcuLkdQUlcuLi4uLi5fCiAgICA2MDcwOiA1MCA1MiA1NCAwMCBBMCAwQSA1MCA0OSA0MyA0
RCBBNCA0NyAzMCAzNSAzNSBBNCAgUFJULi4uUElDTS5HMDU1LgogICAgNjA4MDogNTAgMzAgMzUg
MzUgNUIgODIgMEQgNDQgMzAgNDMgNDMgMDggNUYgNDEgNDQgNTIgIFAwNTVbLi5EMENDLl9BRFIK
ICAgIDYwOTA6IDBCIEZGIEZGIDVCIDgyIDQ2IDA0IDQ3IDUwIDUwIDQzIDA4IDVGIDQxIDQ0IDUy
ICAuLi5bLkYuR1BQQy5fQURSCiAgICA2MEEwOiAwQyAwNCAwMCAwMyAwMCAxNCAwRiA1RiA1MCA1
MiA1NyAwMCBBNCA0NyA1MCA1MiAgLi4uLi4uLl9QUlcuLkdQUgogICAgNjBCMDogNTcgMEEgMDgg
MEEgMDQgMTQgMTYgNUYgNTAgNTIgNTQgMDAgQTAgMEEgNTAgNDkgIFcuLi4uLi5fUFJULi4uUEkK
ICAgIDYwQzA6IDQzIDREIEE0IDQ3IDMwIDM1IDM2IEE0IDUwIDMwIDM1IDM2IDVCIDgyIDBEIDQ0
ICBDTS5HMDU2LlAwNTZbLi5ECiAgICA2MEQwOiAzMCA0MyA0NCAwOCA1RiA0MSA0NCA1MiAwQiBG
RiBGRiA1QiA4MiA0NiAwNCA0NyAgMENELl9BRFIuLi5bLkYuRwogICAgNjBFMDogNTAgNTAgNDQg
MDggNUYgNDEgNDQgNTIgMEMgMDUgMDAgMDMgMDAgMTQgMEYgNUYgIFBQRC5fQURSLi4uLi4uLl8K
ICAgIDYwRjA6IDUwIDUyIDU3IDAwIEE0IDQ3IDUwIDUyIDU3IDBBIDA4IDBBIDA0IDE0IDE2IDVG
ICBQUlcuLkdQUlcuLi4uLi5fCiAgICA2MTAwOiA1MCA1MiA1NCAwMCBBMCAwQSA1MCA0OSA0MyA0
RCBBNCA0NyAzMCAzNSAzNyBBNCAgUFJULi4uUElDTS5HMDU3LgogICAgNjExMDogNTAgMzAgMzUg
MzcgNUIgODIgMEQgNDQgMzAgNDMgNDUgMDggNUYgNDEgNDQgNTIgIFAwNTdbLi5EMENFLl9BRFIK
ICAgIDYxMjA6IDBCIEZGIEZGIDVCIDgyIDQ2IDA0IDQ3IDUwIDUwIDQ1IDA4IDVGIDQxIDQ0IDUy
ICAuLi5bLkYuR1BQRS5fQURSCiAgICA2MTMwOiAwQyAwNiAwMCAwMyAwMCAxNCAwRiA1RiA1MCA1
MiA1NyAwMCBBNCA0NyA1MCA1MiAgLi4uLi4uLl9QUlcuLkdQUgogICAgNjE0MDogNTcgMEEgMDgg
MEEgMDQgMTQgMTYgNUYgNTAgNTIgNTQgMDAgQTAgMEEgNTAgNDkgIFcuLi4uLi5fUFJULi4uUEkK
ICAgIDYxNTA6IDQzIDREIEE0IDQ3IDMwIDM1IDM4IEE0IDUwIDMwIDM1IDM4IDVCIDgyIDBEIDQ0
ICBDTS5HMDU4LlAwNThbLi5ECiAgICA2MTYwOiAzMCA0MyA0NiAwOCA1RiA0MSA0NCA1MiAwQiBG
RiBGRiA1QiA4MiA0NiAwNCA0NyAgMENGLl9BRFIuLi5bLkYuRwogICAgNjE3MDogNTAgNTAgNDYg
MDggNUYgNDEgNDQgNTIgMEMgMDcgMDAgMDMgMDAgMTQgMEYgNUYgIFBQRi5fQURSLi4uLi4uLl8K
ICAgIDYxODA6IDUwIDUyIDU3IDAwIEE0IDQ3IDUwIDUyIDU3IDBBIDA4IDBBIDA0IDE0IDE2IDVG
ICBQUlcuLkdQUlcuLi4uLi5fCiAgICA2MTkwOiA1MCA1MiA1NCAwMCBBMCAwQSA1MCA0OSA0MyA0
RCBBNCA0NyAzMCAzNSAzOSBBNCAgUFJULi4uUElDTS5HMDU5LgogICAgNjFBMDogNTAgMzAgMzUg
MzkgNUIgODIgMEQgNDQgMzAgNDQgMzAgMDggNUYgNDEgNDQgNTIgIFAwNTlbLi5EMEQwLl9BRFIK
ICAgIDYxQjA6IDBCIEZGIEZGIDVCIDgyIDQ2IDA0IDQ3IDUwIDUwIDQ3IDA4IDVGIDQxIDQ0IDUy
ICAuLi5bLkYuR1BQRy5fQURSCiAgICA2MUMwOiAwQyAwMSAwMCAwNCAwMCAxNCAwRiA1RiA1MCA1
MiA1NyAwMCBBNCA0NyA1MCA1MiAgLi4uLi4uLl9QUlcuLkdQUgogICAgNjFEMDogNTcgMEEgMDgg
MEEgMDQgMTQgMTYgNUYgNTAgNTIgNTQgMDAgQTAgMEEgNTAgNDkgIFcuLi4uLi5fUFJULi4uUEkK
ICAgIDYxRTA6IDQzIDREIEE0IDQ3IDMwIDM1IDQxIEE0IDUwIDMwIDM1IDQxIDVCIDgyIDBEIDQ0
ICBDTS5HMDVBLlAwNUFbLi5ECiAgICA2MUYwOiAzMCA0NCAzMSAwOCA1RiA0MSA0NCA1MiAwQiBG
RiBGRiA1QiA4MiA0NiAwNCA0NyAgMEQxLl9BRFIuLi5bLkYuRwogICAgNjIwMDogNTAgNTAgNDgg
MDggNUYgNDEgNDQgNTIgMEMgMDIgMDAgMDQgMDAgMTQgMEYgNUYgIFBQSC5fQURSLi4uLi4uLl8K
ICAgIDYyMTA6IDUwIDUyIDU3IDAwIEE0IDQ3IDUwIDUyIDU3IDBBIDA4IDBBIDA0IDE0IDE2IDVG
ICBQUlcuLkdQUlcuLi4uLi5fCiAgICA2MjIwOiA1MCA1MiA1NCAwMCBBMCAwQSA1MCA0OSA0MyA0
RCBBNCA0NyAzMCAzNSA0MiBBNCAgUFJULi4uUElDTS5HMDVCLgogICAgNjIzMDogNTAgMzAgMzUg
NDIgNUIgODIgMEQgNDQgMzAgNDQgMzIgMDggNUYgNDEgNDQgNTIgIFAwNUJbLi5EMEQyLl9BRFIK
ICAgIDYyNDA6IDBCIEZGIEZGIDVCIDgyIDQ2IDA0IDQ3IDUwIDMxIDM1IDA4IDVGIDQxIDQ0IDUy
ICAuLi5bLkYuR1AxNS5fQURSCiAgICA2MjUwOiAwQyAwMSAwMCAwNSAwMCAxNCAwRiA1RiA1MCA1
MiA1NyAwMCBBNCA0NyA1MCA1MiAgLi4uLi4uLl9QUlcuLkdQUgogICAgNjI2MDogNTcgMEEgMDgg
MEEgMDQgMTQgMTYgNUYgNTAgNTIgNTQgMDAgQTAgMEEgNTAgNDkgIFcuLi4uLi5fUFJULi4uUEkK
ICAgIDYyNzA6IDQzIDREIEE0IDQ3IDMwIDM1IDQzIEE0IDUwIDMwIDM1IDQzIDVCIDgyIDBEIDQ0
ICBDTS5HMDVDLlAwNUNbLi5ECiAgICA2MjgwOiAzMCA0NCAzMyAwOCA1RiA0MSA0NCA1MiAwQiBG
RiBGRiA1QiA4MiA0NiAwNCA0NyAgMEQzLl9BRFIuLi5bLkYuRwogICAgNjI5MDogNTAgMzIgMzUg
MDggNUYgNDEgNDQgNTIgMEMgMDIgMDAgMDUgMDAgMTQgMEYgNUYgIFAyNS5fQURSLi4uLi4uLl8K
ICAgIDYyQTA6IDUwIDUyIDU3IDAwIEE0IDQ3IDUwIDUyIDU3IDBBIDA4IDBBIDA0IDE0IDE2IDVG
ICBQUlcuLkdQUlcuLi4uLi5fCiAgICA2MkIwOiA1MCA1MiA1NCAwMCBBMCAwQSA1MCA0OSA0MyA0
RCBBNCA0NyAzMCAzNSA0NCBBNCAgUFJULi4uUElDTS5HMDVELgogICAgNjJDMDogNTAgMzAgMzUg
NDQgNUIgODIgMEQgNDQgMzAgNDQgMzQgMDggNUYgNDEgNDQgNTIgIFAwNURbLi5EMEQ0Ll9BRFIK
ICAgIDYyRDA6IDBCIEZGIEZGIDVCIDgyIDQ2IDA0IDQ3IDUwIDMzIDM1IDA4IDVGIDQxIDQ0IDUy
ICAuLi5bLkYuR1AzNS5fQURSCiAgICA2MkUwOiAwQyAwMyAwMCAwNSAwMCAxNCAwRiA1RiA1MCA1
MiA1NyAwMCBBNCA0NyA1MCA1MiAgLi4uLi4uLl9QUlcuLkdQUgogICAgNjJGMDogNTcgMEEgMDgg
MEEgMDQgMTQgMTYgNUYgNTAgNTIgNTQgMDAgQTAgMEEgNTAgNDkgIFcuLi4uLi5fUFJULi4uUEkK
ICAgIDYzMDA6IDQzIDREIEE0IDQ3IDMwIDM1IDQ1IEE0IDUwIDMwIDM1IDQ1IDVCIDgyIDBEIDQ0
ICBDTS5HMDVFLlAwNUVbLi5ECiAgICA2MzEwOiAzMCA0NCAzNSAwOCA1RiA0MSA0NCA1MiAwQiBG
RiBGRiA1QiA4MiA0NiAwNCA0NyAgMEQ1Ll9BRFIuLi5bLkYuRwogICAgNjMyMDogNTAgMzQgMzUg
MDggNUYgNDEgNDQgNTIgMEMgMDQgMDAgMDUgMDAgMTQgMEYgNUYgIFA0NS5fQURSLi4uLi4uLl8K
ICAgIDYzMzA6IDUwIDUyIDU3IDAwIEE0IDQ3IDUwIDUyIDU3IDBBIDA4IDBBIDA0IDE0IDE2IDVG
ICBQUlcuLkdQUlcuLi4uLi5fCiAgICA2MzQwOiA1MCA1MiA1NCAwMCBBMCAwQSA1MCA0OSA0MyA0
RCBBNCA0NyAzMCAzNSA0NiBBNCAgUFJULi4uUElDTS5HMDVGLgogICAgNjM1MDogNTAgMzAgMzUg
NDYgNUIgODIgMEQgNDQgMzAgNDQgMzYgMDggNUYgNDEgNDQgNTIgIFAwNUZbLi5EMEQ2Ll9BRFIK
ICAgIDYzNjA6IDBCIEZGIEZGIDVCIDgyIDRDIDA3IDQ3IDUwIDMxIDM3IDA4IDVGIDQxIDQ0IDUy
ICAuLi5bLkwuR1AxNy5fQURSCiAgICA2MzcwOiAwQyAwMSAwMCAwNyAwMCAxNCAwRiA1RiA1MCA1
MiA1NyAwMCBBNCA0NyA1MCA1MiAgLi4uLi4uLl9QUlcuLkdQUgogICAgNjM4MDogNTcgMEEgMEIg
MEEgMDQgMTQgMTYgNUYgNTAgNTIgNTQgMDAgQTAgMEEgNTAgNDkgIFcuLi4uLi5fUFJULi4uUEkK
ICAgIDYzOTA6IDQzIDREIEE0IDQ3IDMwIDM2IDMwIEE0IDUwIDMwIDM2IDMwIDVCIDgyIDBCIDQ0
ICBDTS5HMDYwLlAwNjBbLi5ECiAgICA2M0EwOiAzMCAzNiAzMSAwOCA1RiA0MSA0NCA1MiAwMCA1
QiA4MiAwQiA0NCAzMCAzNiAzMiAgMDYxLl9BRFIuWy4uRDA2MgogICAgNjNCMDogMDggNUYgNDEg
NDQgNTIgMDEgNUIgODIgMEMgNDQgMzAgMzYgMzMgMDggNUYgNDEgIC5fQURSLlsuLkQwNjMuX0EK
ICAgIDYzQzA6IDQ0IDUyIDBBIDAyIDVCIDgyIDBDIDQ0IDMwIDM2IDM0IDA4IDVGIDQxIDQ0IDUy
ICBEUi4uWy4uRDA2NC5fQURSCiAgICA2M0QwOiAwQSAwMyA1QiA4MiAwRCA0NCAzMCA0NCAzNyAw
OCA1RiA0MSA0NCA1MiAwQiBGRiAgLi5bLi5EMEQ3Ll9BRFIuLgogICAgNjNFMDogRkYgNUIgODIg
MEYgNDcgNTAgMzIgMzcgMDggNUYgNDEgNDQgNTIgMEMgMDIgMDAgIC5bLi5HUDI3Ll9BRFIuLi4K
ICAgIDYzRjA6IDA3IDAwIDVCIDgyIDgwIENBIDAyIDUwIDQzIDQ5IDMwIDA4IDVGIDQ4IDQ5IDQ0
ICAuLlsuLi4uUENJMC5fSElECiAgICA2NDAwOiAwQyA0MSBEMCAwQSAwOCAwOCA1RiA0MyA0OSA0
NCAwQyA0MSBEMCAwQSAwMyAwOCAgLkEuLi4uX0NJRC5BLi4uLgogICAgNjQxMDogNUYgNDEgNDQg
NTIgMDAgMTQgMDkgNUUgNDIgNEUgMzAgMzAgMDAgQTQgMDAgMTQgIF9BRFIuLi5eQk4wMC4uLi4K
ICAgIDY0MjA6IDBCIDVGIDQyIDQyIDRFIDAwIEE0IDQyIDRFIDMwIDMwIDA4IDVGIDU1IDQ5IDQ0
ICAuX0JCTi4uQk4wMC5fVUlECiAgICA2NDMwOiAwMCAxNCAxNiA1RiA1MCA1MiA1NCAwMCBBMCAw
QSA1MCA0OSA0MyA0RCBBNCA0MSAgLi4uX1BSVC4uLlBJQ00uQQogICAgNjQ0MDogNTIgMzAgMzAg
QTQgNTAgNDQgMzAgMzAgNUIgODAgNEUgNDEgNTAgNDMgMDIgMEEgIFIwMC5QRDAwWy5OQVBDLi4K
ICAgIDY0NTA6IEI0IDBBIDBDIDVCIDgxIDE1IDRFIDQxIDUwIDQzIDAzIDRFIDQxIDQ1IDU4IDIw
ICAuLi5bLi5OQVBDLk5BRVggCiAgICA2NDYwOiA0RSA0MSA1MCA1OCAyMCA0RSA0MSA1MCA0NCAy
MCA1QiAwMSA0RSA0MSA1MCA0RCAgTkFQWCBOQVBEIFsuTkFQTQogICAgNjQ3MDogMDAgMTQgNEMg
MDggNEUgNDEgNTAgNDUgMDAgNUIgMjMgNEUgNDEgNTAgNEQgRkYgIC4uTC5OQVBFLlsjTkFQTS4K
ICAgIDY0ODA6IEZGIDcwIDAwIDRFIDQxIDQ1IDU4IDcwIDBDIDg0IDQxIDAwIDQ5IDRFIDQxIDUw
ICAucC5OQUVYcC4uQS5JTkFQCiAgICA2NDkwOiA1OCA3MCA0RSA0MSA1MCA0NCA2MCA3QSA2MCAw
QSAwOCA2MCA3QiA2MCAwQSAwRiAgWHBOQVBEYHpgLi5ge2AuLgogICAgNjRBMDogNjAgQTIgNDAg
MDUgOTIgOTUgNjAgMDEgNzAgMDAgNEUgNDEgNDUgNTggNzQgNjAgIGAuQC4uLmAucC5OQUVYdGAK
ICAgIDY0QjA6IDAxIDYxIDc3IDYxIDBDIDAwIDAwIDEwIDAwIDYxIEEwIDEzIDk0IDYwIDBBIDA0
ICAuYXdhLi4uLi5hLi4uYC4uCiAgICA2NEMwOiA3MCAwMSA0RSA0MSA0NSA1OCA3NCA2MSAwQyAw
MCAwMCA0MCAwMCA2MSA3MiA2MSAgcC5OQUVYdGEuLi5ALmFyYQogICAgNjREMDogMEMgMDAgMDAg
MzAgMTQgNjEgNzAgNjEgNEUgNDEgNTAgNTggNzAgNEUgNDEgNTAgIC4uLjAuYXBhTkFQWHBOQVAK
ICAgIDY0RTA6IDQ0IDYyIDdCIDYyIDBDIEVGIEZGIEZGIEZGIDYyIDcwIDYyIDRFIDQxIDUwIDQ0
ICBEYntiLi4uLi5icGJOQVBECiAgICA2NEYwOiA3NiA2MCA3MCAwMCA0RSA0MSA0NSA1OCA1QiAy
NyA0RSA0MSA1MCA0RCA1QiA4MiAgdmBwLk5BRVhbJ05BUE1bLgogICAgNjUwMDogNDkgMDYgNDEg
NEQgNDQgNEUgMDggNUYgNDggNDkgNDQgMEMgNDEgRDAgMEMgMDEgIEkuQU1ETi5fSElELkEuLi4K
ICAgIDY1MTA6IDA4IDVGIDU1IDQ5IDQ0IDBBIEM4IDA4IDVGIDUzIDU0IDQxIDBBIDBGIDA4IDRF
ICAuX1VJRC4uLl9TVEEuLi5OCiAgICA2NTIwOiA1MCA1NCA1MiAxMSAxMSAwQSAwRSA4NiAwOSAw
MCAwMSAwMCAwMCAwMCAwMCAwMCAgUFRSLi4uLi4uLi4uLi4uLgogICAgNjUzMDogMDAgMDAgMDAg
NzkgMDAgMTQgMzMgNUYgNDMgNTIgNTMgMDAgOEEgNEUgNTAgNTQgIC4uLnkuLjNfQ1JTLi5OUFQK
ICAgIDY1NDA6IDUyIDBBIDA4IDUwIDRDIDVGIDVGIDhBIDRFIDUwIDU0IDUyIDBBIDA0IDUwIDQy
ICBSLi5QTF9fLk5QVFIuLlBCCiAgICA2NTUwOiA1RiA1RiA3MCA1MCA0NSA0MiA1MyA1MCA0MiA1
RiA1RiA3MCA1MCA0NSA0MiA0QyAgX19wUEVCU1BCX19wUEVCTAogICAgNjU2MDogNTAgNEMgNUYg
NUYgQTQgNEUgNTAgNTQgNTIgMTQgMEIgNEUgNTAgNTQgNTMgMDEgIFBMX18uTlBUUi4uTlBUUy4K
ICAgIDY1NzA6IDQxIDUwIDU0IDUzIDY4IDE0IDE1IDRFIDU3IDQxIDRCIDAxIDQxIDU3IDQxIDRC
ICBBUFRTaC4uTldBSy5BV0FLCiAgICA2NTgwOiA2OCBBMCAwOSA1MCA0OSA0MyA0RCA0RSA0MSA1
MCA0NSAwOCA0MyA1MCA1MiA0MiAgaC4uUElDTU5BUEUuQ1BSQgogICAgNjU5MDogMDEgMDggNEMg
NTYgNDcgNDEgMEEgMDEgMDggNTMgNTQgNDEgNTYgMEEgMEYgMDggIC4uTFZHQS4uLlNUQVYuLi4K
ICAgIDY1QTA6IDQyIDUyIDQyIDVGIDBCIDAwIDAwIDA4IDQyIDUyIDRDIDVGIDBCIDQwIDAwIDA4
ICBCUkJfLi4uLkJSTF8uQC4uCiAgICA2NUIwOiA1MCA1MiA1OCA0RCAwQiAwMCAwMCAwOCA0OSA0
RiA0MiA1RiAwQiAwMCAxMCAwOCAgUFJYTS4uLi5JT0JfLi4uLgogICAgNjVDMDogNDkgNEYgNEMg
NUYgMEIgMDAgMzAgMDggNEQgNDIgNDIgNUYgMEMgMDAgMDAgMDAgIElPTF8uLjAuTUJCXy4uLi4K
ICAgIDY1RDA6IEYwIDA4IDREIDQyIDRDIDVGIDBDIDAwIDAwIDAwIDAxIDA4IDREIDQxIDQyIDRD
ICAuLk1CTF8uLi4uLi5NQUJMCiAgICA2NUUwOiAwRSAwMCAwMCA0MCAyMCA4MCAwNCAwMCAwMCAw
OCA0RCA0MSA0MiA0OCAwQyAwMCAgLi4uQCAuLi4uLk1BQkguLgogICAgNjVGMDogMDAgMDEgMDAg
MDggNEQgNDEgNEQgNEMgMEMgMDAgMDAgMDEgMDAgMDggNEQgNDEgIC4uLi5NQU1MLi4uLi4uTUEK
ICAgIDY2MDA6IDREIDQ4IDBDIDAwIDAwIDAxIDAwIDA4IDREIDQxIDRDIDRDIDBFIDAwIDAwIDAw
ICBNSC4uLi4uLk1BTEwuLi4uCiAgICA2NjEwOiA5MyA1OSAwMCAwMCAwMCAwOCA0RCA0MSA0QyA0
OCAwQyAwMCAwMCAwMSAwMCAwOCAgLlkuLi4uTUFMSC4uLi4uLgogICAgNjYyMDogNDMgNTIgNTMg
MzEgMTEgNEEgMEUgMEEgRTYgODggMEQgMDAgMDIgMEMgMDAgMDAgIENSUzEuSi4uLi4uLi4uLi4K
ICAgIDY2MzA6IDAwIDAwIDAwIDdGIDAwIDAwIDAwIDgwIDAwIDQ3IDAxIEY4IDBDIEY4IDBDIDAx
ICAuLi4uLi4uLi5HLi4uLi4uCiAgICA2NjQwOiAwOCA4OCAwRCAwMCAwMSAwQyAwMyAwMCAwMCAw
MCAwMCBGRiAwMiAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNjY1MDogMDMgODggMEQg
MDAgMDEgMEMgMDMgMDAgMDAgMDAgMDMgQUYgMDMgMDAgMDAgQjAgIC4uLi4uLi4uLi4uLi4uLi4K
ICAgIDY2NjA6IDAwIDg4IDBEIDAwIDAxIDBDIDAzIDAwIDAwIEUwIDAzIEY3IDBDIDAwIDAwIDE4
ICAuLi4uLi4uLi4uLi4uLi4uCiAgICA2NjcwOiAwOSA4OCAwRCAwMCAwMSAwQyAwMyAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNjY4MDogMDAgODggMEQg
MDAgMDEgMEMgMDMgMDAgMDAgMDAgMEQgRkYgMEYgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4K
ICAgIDY2OTA6IDAzIDg3IDE3IDAwIDAwIDBDIDAzIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAw
ICAuLi4uLi4uLi4uLi4uLi4uCiAgICA2NkEwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCA4NyAxNyAwMCAwMCAwQyAgLi4uLi4uLi4uLi4uLi4uLgogICAgNjZCMDogMDEgMDAgMDAg
MDAgMDAgMDAgMDAgMEMgMDAgRkYgRkYgMEQgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4K
ICAgIDY2QzA6IDAwIDAwIDAwIDAyIDAwIDg3IDE3IDAwIDAwIDBDIDAzIDAwIDAwIDAwIDAwIDAw
ICAuLi4uLi4uLi4uLi4uLi4uCiAgICA2NkQwOiAwMCAwMCAwMiBGRiBGRiBERiBGRiAwMCAwMCAw
MCAwMCAwMCAwMCBFMCBGRCA4QSAgLi4uLi4uLi4uLi4uLi4uLgogICAgNjZFMDogMkIgMDAgMDAg
MEMgMDMgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgICsuLi4uLi4uLi4uLi4uLi4K
ICAgIDY2RjA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAw
ICAuLi4uLi4uLi4uLi4uLi4uCiAgICA2NzAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCA3OSAwMCAwOCAgLi4uLi4uLi4uLi4uLnkuLgogICAgNjcxMDogNDMgNTIgNTMg
MzIgMTEgNDggMDkgMEEgOTQgODggMEQgMDAgMDIgMEMgMDAgMDAgIENSUzIuSC4uLi4uLi4uLi4K
ICAgIDY3MjA6IDAwIDgwIDAwIEZGIDAwIDAwIDAwIDgwIDAwIDg4IDBEIDAwIDAxIDBDIDAzIDAw
ICAuLi4uLi4uLi4uLi4uLi4uCiAgICA2NzMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCA4
OCAwRCAwMCAwMSAwQyAwMyAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNjc0MDogMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgODcgMTcgMDAgMDAgMEMgMDMgMDAgIC4uLi4uLi4uLi4uLi4uLi4K
ICAgIDY3NTA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAw
ICAuLi4uLi4uLi4uLi4uLi4uCiAgICA2NzYwOiAwMCAwMCAwMCA4NyAxNyAwMCAwMCAwQyAwMyAw
MCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNjc3MDogODAgRkYgRkYg
RkYgRkYgMDAgMDAgMDAgMDAgMDAgMDAgMDAgODAgOEEgMkIgMDAgIC4uLi4uLi4uLi4uLi4uKy4K
ICAgIDY3ODA6IDAwIDBDIDAzIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAw
ICAuLi4uLi4uLi4uLi4uLi4uCiAgICA2NzkwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNjdBMDogMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgNzkgMDAgMTQgMEIgNUYgIC4uLi4uLi4uLi4ueS4uLl8K
ICAgIDY3QjA6IDUzIDU0IDQxIDAwIEE0IDUzIDU0IDQxIDU2IDE0IDQ4IDNCIDVGIDQzIDUyIDUz
ICBTVEEuLlNUQVYuSDtfQ1JTCiAgICA2N0MwOiAwOCBBMCA0QSAyMSA0MyA1MCA1MiA0MiA4QiA0
MyA1MiA1MyAzMSAwQSAwOCA0RCAgLi5KIUNQUkIuQ1JTMS4uTQogICAgNjdEMDogNDkgNEUgMzAg
OEIgNDMgNTIgNTMgMzEgMEEgMEEgNEQgNDEgNTggMzAgOEIgNDMgIElOMC5DUlMxLi5NQVgwLkMK
ICAgIDY3RTA6IDUyIDUzIDMxIDBBIDBFIDRDIDQ1IDRFIDMwIDcwIDQyIDUyIDQyIDVGIDREIDQ5
ICBSUzEuLkxFTjBwQlJCX01JCiAgICA2N0YwOiA0RSAzMCA3MCA0MiA1MiA0QyA1RiA0QyA0NSA0
RSAzMCA3MCA0QyA0NSA0RSAzMCAgTjBwQlJMX0xFTjBwTEVOMAogICAgNjgwMDogNjAgNzIgNEQg
NDkgNEUgMzAgNzYgNjAgNEQgNDEgNTggMzAgQTAgNDkgMDYgOTEgIGByTUlOMHZgTUFYMC5JLi4K
ICAgIDY4MTA6IDkxIDkzIDQ5IDQ1IDUyIDMwIDAxIDkzIDQ5IDQ1IDUyIDMxIDAxIDkxIDkzIDQ5
ICAuLklFUjAuLklFUjEuLi5JCiAgICA2ODIwOiA0NSA1MiAzMiAwMSA5MyA0OSA0NSA1MiAzMyAw
MSA4QiA0MyA1MiA1MyAzMSAwQSAgRVIyLi5JRVIzLi5DUlMxLgogICAgNjgzMDogMjIgNDkgNDIg
NTggMzEgOEIgNDMgNTIgNTMgMzEgMEEgMjYgNDkgNDIgNEMgMzEgICJJQlgxLkNSUzEuJklCTDEK
ICAgIDY4NDA6IDcwIDBCIEU3IDAyIDQ5IDQyIDU4IDMxIDcwIDBCIEU4IDAyIDQ5IDQyIDRDIDMx
ICBwLi4uSUJYMXAuLi5JQkwxCiAgICA2ODUwOiA4QiA0MyA1MiA1MyAzMSAwQSA0MCA0OSA0MiA0
RCAzMiA4QiA0MyA1MiA1MyAzMSAgLkNSUzEuQElCTTIuQ1JTMQogICAgNjg2MDogMEEgNDYgNDkg
NDIgNEMgMzIgNzAgMEIgMDAgMDQgNDkgNDIgNEQgMzIgNzAgMEIgIC5GSUJMMnAuLi5JQk0ycC4K
ICAgIDY4NzA6IEY4IDA4IDQ5IDQyIDRDIDMyIDhCIDQzIDUyIDUzIDMxIDBBIDYwIDREIDQ5IDRF
ICAuLklCTDIuQ1JTMS5gTUlOCiAgICA2ODgwOiAzMSA4QiA0MyA1MiA1MyAzMSAwQSA2MiA0RCA0
MSA1OCAzMSA4QiA0MyA1MiA1MyAgMS5DUlMxLmJNQVgxLkNSUwogICAgNjg5MDogMzEgMEEgNjYg
NEMgNDUgNEUgMzEgNzAgNDkgNEYgNDIgNUYgNEQgNDkgNEUgMzEgIDEuZkxFTjFwSU9CX01JTjEK
ICAgIDY4QTA6IDcwIDQ5IDRGIDRDIDVGIDRDIDQ1IDRFIDMxIDcwIDRDIDQ1IDRFIDMxIDYwIDcy
ICBwSU9MX0xFTjFwTEVOMWByCiAgICA2OEIwOiA0RCA0OSA0RSAzMSA3NiA2MCA0RCA0MSA1OCAz
MSBBMCA0NCAwOSA5MSA5MyA0QyAgTUlOMXZgTUFYMS5ELi4uTAogICAgNjhDMDogNTYgNDcgNDEg
MDEgOTMgNEMgNTYgNDcgNDEgMEEgNTUgQTAgNDMgMDggNTYgNDcgIFZHQS4uTFZHQS5VLkMuVkcK
ICAgIDY4RDA6IDQxIDQ2IDhCIDQzIDUyIDUzIDMxIDBBIDUwIDQ5IDREIDRFIDMxIDhCIDQzIDUy
ICBBRi5DUlMxLlBJTU4xLkNSCiAgICA2OEUwOiA1MyAzMSAwQSA1MiA0OSA0RCA1OCAzMSA4QiA0
MyA1MiA1MyAzMSAwQSA1NiA0OSAgUzEuUklNWDEuQ1JTMS5WSQogICAgNjhGMDogNEMgNEUgMzEg
NzAgMEIgQjAgMDMgNDkgNEQgNEUgMzEgNzAgMEIgREYgMDMgNDkgIExOMXAuLi5JTU4xcC4uLkkK
ICAgIDY5MDA6IDREIDU4IDMxIDcwIDBBIDMwIDQ5IDRDIDRFIDMxIDhBIDQzIDUyIDUzIDMxIDBB
ICBNWDFwLjBJTE4xLkNSUzEuCiAgICA2OTEwOiA3MiA1NiA0RCA0RSAzMSA4QSA0MyA1MiA1MyAz
MSAwQSA3NiA1NiA0RCA1OCAzMSAgclZNTjEuQ1JTMS52Vk1YMQogICAgNjkyMDogOEEgNDMgNTIg
NTMgMzEgMEEgN0UgNTYgNEMgNEUgMzEgNzAgMEMgMDAgMDAgMEEgIC5DUlMxLn5WTE4xcC4uLi4K
ICAgIDY5MzA6IDAwIDU2IDREIDRFIDMxIDcwIDBDIEZGIEZGIDBCIDAwIDU2IDREIDU4IDMxIDcw
ICAuVk1OMXAuLi4uLlZNWDFwCiAgICA2OTQwOiAwQyAwMCAwMCAwMiAwMCA1NiA0QyA0RSAzMSA3
MCAwMCA1NiA0NyA0MSA0NiA4QSAgLi4uLi5WTE4xcC5WR0FGLgogICAgNjk1MDogNDMgNTIgNTMg
MzEgMEEgQTYgNEQgNDkgNEUgMzMgOEEgNDMgNTIgNTMgMzEgMEEgIENSUzEuLk1JTjMuQ1JTMS4K
ICAgIDY5NjA6IEFBIDREIDQxIDU4IDMzIDhBIDQzIDUyIDUzIDMxIDBBIEIyIDRDIDQ1IDRFIDMz
ICAuTUFYMy5DUlMxLi5MRU4zCiAgICA2OTcwOiA3MCA0RCA0MiA0MiA1RiA0RCA0OSA0RSAzMyA3
MCA0RCA0MiA0QyA1RiA0QyA0NSAgcE1CQl9NSU4zcE1CTF9MRQogICAgNjk4MDogNEUgMzMgNzAg
NEMgNDUgNEUgMzMgNjAgNzIgNEQgNDkgNEUgMzMgNzYgNjAgNEQgIE4zcExFTjNgck1JTjN2YE0K
ICAgIDY5OTA6IDQxIDU4IDMzIDhGIDQzIDUyIDUzIDMxIDBBIEM0IDREIDQ5IDRFIDM4IDhGIDQz
ICBBWDMuQ1JTMS4uTUlOOC5DCiAgICA2OUEwOiA1MiA1MyAzMSAwQSBDQyA0RCA0MSA1OCAzOCA4
RiA0MyA1MiA1MyAzMSAwQSBEQyAgUlMxLi5NQVg4LkNSUzEuLgogICAgNjlCMDogNEMgNDUgNEUg
MzggNzAgNEQgNDEgNDIgNEMgNEQgNDkgNEUgMzggNzAgNEQgNDEgIExFTjhwTUFCTE1JTjhwTUEK
ICAgIDY5QzA6IDRDIDRDIDRDIDQ1IDRFIDM4IDcwIDRDIDQ1IDRFIDM4IDYwIDcyIDREIDQ5IDRF
ICBMTExFTjhwTEVOOGByTUlOCiAgICA2OUQwOiAzOCA3NiA2MCA0RCA0MSA1OCAzOCBBNCA0MyA1
MiA1MyAzMSBBMSA0NSAxOSA4QiAgOHZgTUFYOC5DUlMxLkUuLgogICAgNjlFMDogNDMgNTIgNTMg
MzIgMEEgMDggNEQgNDkgNEUgMzIgOEIgNDMgNTIgNTMgMzIgMEEgIENSUzIuLk1JTjIuQ1JTMi4K
ICAgIDY5RjA6IDBBIDREIDQxIDU4IDMyIDhCIDQzIDUyIDUzIDMyIDBBIDBFIDRDIDQ1IDRFIDMy
ICAuTUFYMi5DUlMyLi5MRU4yCiAgICA2QTAwOiA3MCA0MiA1MiA0MiA1RiA0RCA0OSA0RSAzMiA3
MCA0MiA1MiA0QyA1RiA0QyA0NSAgcEJSQl9NSU4ycEJSTF9MRQogICAgNkExMDogNEUgMzIgNzAg
NEMgNDUgNEUgMzIgNjEgNzIgNEQgNDkgNEUgMzIgNzYgNjEgNEQgIE4ycExFTjJhck1JTjJ2YU0K
ICAgIDZBMjA6IDQxIDU4IDMyIDhCIDQzIDUyIDUzIDMyIDBBIDI4IDREIDQ5IDRFIDM0IDhCIDQz
ICBBWDIuQ1JTMi4oTUlONC5DCiAgICA2QTMwOiA1MiA1MyAzMiAwQSAyQSA0RCA0MSA1OCAzNCA4
QiA0MyA1MiA1MyAzMiAwQSAyRSAgUlMyLipNQVg0LkNSUzIuLgogICAgNkE0MDogNEMgNDUgNEUg
MzQgNzAgNDkgNEYgNDIgNUYgNEQgNDkgNEUgMzQgNzAgNDkgNEYgIExFTjRwSU9CX01JTjRwSU8K
ICAgIDZBNTA6IDRDIDVGIDRDIDQ1IDRFIDM0IDcwIDRDIDQ1IDRFIDM0IDYxIDcyIDREIDQ5IDRF
ICBMX0xFTjRwTEVONGFyTUlOCiAgICA2QTYwOiAzNCA3NiA2MSA0RCA0MSA1OCAzNCBBMCA0RCAw
NyA0QyA1NiA0NyA0MSA4QiA0MyAgNHZhTUFYNC5NLkxWR0EuQwogICAgNkE3MDogNTIgNTMgMzIg
MEEgMTggNDkgNEQgNEUgMzIgOEIgNDMgNTIgNTMgMzIgMEEgMUEgIFJTMi4uSU1OMi5DUlMyLi4K
ICAgIDZBODA6IDQ5IDREIDU4IDMyIDhCIDQzIDUyIDUzIDMyIDBBIDFFIDQ5IDRDIDRFIDMyIDcw
ICBJTVgyLkNSUzIuLklMTjJwCiAgICA2QTkwOiAwQiBCMCAwMyA0OSA0RCA0RSAzMiA3MCAwQiBE
RiAwMyA0OSA0RCA1OCAzMiA3MCAgLi4uSU1OMnAuLi5JTVgycAogICAgNkFBMDogMEEgMzAgNDkg
NEMgNEUgMzIgOEEgNDMgNTIgNTMgMzIgMEEgM0EgNTYgNEQgNEUgIC4wSUxOMi5DUlMyLjpWTU4K
ICAgIDZBQjA6IDMyIDhBIDQzIDUyIDUzIDMyIDBBIDNFIDU2IDREIDU4IDMyIDhBIDQzIDUyIDUz
ICAyLkNSUzIuPlZNWDIuQ1JTCiAgICA2QUMwOiAzMiAwQSA0NiA1NiA0QyA0RSAzMiA3MCAwQyAw
MCAwMCAwQSAwMCA1NiA0RCA0RSAgMi5GVkxOMnAuLi4uLlZNTgogICAgNkFEMDogMzIgNzAgMEMg
RkYgRkYgMEIgMDAgNTYgNEQgNTggMzIgNzAgMEMgMDAgMDAgMDIgIDJwLi4uLi5WTVgycC4uLi4K
ICAgIDZBRTA6IDAwIDU2IDRDIDRFIDMyIDhBIDQzIDUyIDUzIDMyIDBBIDU0IDREIDQ5IDRFIDM1
ICAuVkxOMi5DUlMyLlRNSU41CiAgICA2QUYwOiA4QSA0MyA1MiA1MyAzMiAwQSA1OCA0RCA0MSA1
OCAzNSA4QSA0MyA1MiA1MyAzMiAgLkNSUzIuWE1BWDUuQ1JTMgogICAgNkIwMDogMEEgNjAgNEMg
NDUgNEUgMzUgNzAgNEQgNDIgNDIgNUYgNEQgNDkgNEUgMzUgNzAgIC5gTEVONXBNQkJfTUlONXAK
ICAgIDZCMTA6IDREIDQyIDRDIDVGIDRDIDQ1IDRFIDM1IDcwIDRDIDQ1IDRFIDM1IDYxIDcyIDRE
ICBNQkxfTEVONXBMRU41YXJNCiAgICA2QjIwOiA0OSA0RSAzNSA3NiA2MSA0RCA0MSA1OCAzNSA4
RiA0MyA1MiA1MyAzMiAwQSA3MiAgSU41dmFNQVg1LkNSUzIucgogICAgNkIzMDogNEQgNDkgNEUg
MzkgOEYgNDMgNTIgNTMgMzIgMEEgN0EgNEQgNDEgNTggMzkgOEYgIE1JTjkuQ1JTMi56TUFYOS4K
ICAgIDZCNDA6IDQzIDUyIDUzIDMyIDBBIDhBIDRDIDQ1IDRFIDM5IDcwIDREIDQxIDQyIDRDIDRE
ICBDUlMyLi5MRU45cE1BQkxNCiAgICA2QjUwOiA0OSA0RSAzOSA3MCA0RCA0MSA0QyA0QyA0QyA0
NSA0RSAzOSA3MCA0QyA0NSA0RSAgSU45cE1BTExMRU45cExFTgogICAgNkI2MDogMzkgNjAgNzIg
NEQgNDkgNEUgMzkgNzYgNjAgNEQgNDEgNTggMzkgQTQgNDMgNTIgIDlgck1JTjl2YE1BWDkuQ1IK
ICAgIDZCNzA6IDUzIDMyIDE0IDQyIDEzIDVGIDRGIDUzIDQzIDBDIDA4IDUzIDU1IDUwIDUwIDAw
ICBTMi5CLl9PU0MuLlNVUFAuCiAgICA2QjgwOiAwOCA0MyA1NCA1MiA0QyAwMCA4QSA2QiAwMCA0
MyA0NCA1NyAzMSA4QSA2QiAwQSAgLkNUUkwuLmsuQ0RXMS5rLgogICAgNkI5MDogMDQgNDMgNDQg
NTcgMzIgOEEgNkIgMEEgMDggNDMgNDQgNTcgMzMgQTAgNDggMEYgIC5DRFcyLmsuLkNEVzMuSC4K
ICAgIDZCQTA6IDkzIDY4IDExIDEzIDBBIDEwIDVCIDREIERCIDMzIEY3IDFGIDFDIDQwIDk2IDU3
ICAuaC4uLi5bTS4zLi4uQC5XCiAgICA2QkIwOiA3NCA0MSBDMCAzRCBENyA2NiA3MCA0MyA0NCA1
NyAzMiA1MyA1NSA1MCA1MCA3MCAgdEEuPS5mcENEVzJTVVBQcAogICAgNkJDMDogNDMgNDQgNTcg
MzMgNDMgNTQgNTIgNEMgQTAgMTggOTIgOTMgN0IgNTMgNTUgNTAgIENEVzNDVFJMLi4uLntTVVAK
ICAgIDZCRDA6IDUwIDBBIDE2IDAwIDBBIDE2IDdCIDQzIDU0IDUyIDRDIDBBIDFFIDQzIDU0IDUy
ICBQLi4uLi57Q1RSTC4uQ1RSCiAgICA2QkUwOiA0QyBBMCAxMSA5MiA1MCA0NSA0OCA1MCA3QiA0
MyA1NCA1MiA0QyAwQSAxRSA0MyAgTC4uLlBFSFB7Q1RSTC4uQwogICAgNkJGMDogNTQgNTIgNEMg
QTAgMTEgOTIgNTMgNDggNTAgNDMgN0IgNDMgNTQgNTIgNEMgMEEgIFRSTC4uLlNIUEN7Q1RSTC4K
ICAgIDZDMDA6IDFEIDQzIDU0IDUyIDRDIEEwIDExIDkyIDUwIDQ1IDUwIDREIDdCIDQzIDU0IDUy
ICAuQ1RSTC4uLlBFUE17Q1RSCiAgICA2QzEwOiA0QyAwQSAxQiA0MyA1NCA1MiA0QyBBMCAxMSA5
MiA1MCA0NSA0NSA1MiA3QiA0MyAgTC4uQ1RSTC4uLlBFRVJ7QwogICAgNkMyMDogNTQgNTIgNEMg
MEEgMTUgNDMgNTQgNTIgNEMgQTAgMTEgOTIgNTAgNDUgNDMgNTMgIFRSTC4uQ1RSTC4uLlBFQ1MK
ICAgIDZDMzA6IDdCIDQzIDU0IDUyIDRDIDBBIDBGIDQzIDU0IDUyIDRDIEEwIDEwIDkyIDkzIDY5
ICB7Q1RSTC4uQ1RSTC4uLi5pCiAgICA2QzQwOiAwMSA3RCA0MyA0NCA1NyAzMSAwQSAwOCA0MyA0
NCA1NyAzMSBBMCAxNSA1QiAxMiAgLn1DRFcxLi5DRFcxLi5bLgogICAgNkM1MDogNTAgNEYgNTMg
NDMgMDAgN0IgNDMgNTQgNTIgNEMgNTAgNEYgNTMgNDMgNDMgNTQgIFBPU0Mue0NUUkxQT1NDQ1QK
ICAgIDZDNjA6IDUyIDRDIEEwIDE2IDkyIDkzIDQzIDQ0IDU3IDMzIDQzIDU0IDUyIDRDIDdEIDQz
ICBSTC4uLi5DRFczQ1RSTH1DCiAgICA2QzcwOiA0NCA1NyAzMSAwQSAxMCA0MyA0NCA1NyAzMSA3
MCA0MyA1NCA1MiA0QyA0MyA0NCAgRFcxLi5DRFcxcENUUkxDRAogICAgNkM4MDogNTcgMzMgQTAg
MTEgNUIgMTIgNTAgNEYgNTMgNTMgMDAgNzAgNTMgNTUgNTAgNTAgIFczLi5bLlBPU1MucFNVUFAK
ICAgIDZDOTA6IDUwIDRGIDUzIDUzIEE0IDZCIEExIDBFIDdEIDQzIDQ0IDU3IDMxIDBBIDA0IDQz
ICBQT1NTLmsuLn1DRFcxLi5DCiAgICA2Q0EwOiA0NCA1NyAzMSBBNCA2QiA1QiA4MiAwQyA0NCAz
MCAzNiAzNyAwOCA1RiA0MSA0NCAgRFcxLmtbLi5EMDY3Ll9BRAogICAgNkNCMDogNTIgMEEgMDIg
NUIgODIgMEMgNDQgMzAgMzYgMzggMDggNUYgNDEgNDQgNTIgMEEgIFIuLlsuLkQwNjguX0FEUi4K
ICAgIDZDQzA6IDAzIDVCIDgyIDQ2IDA0IDQ3IDUwIDUwIDMwIDA4IDVGIDQxIDQ0IDUyIDBDIDAx
ICAuWy5GLkdQUDAuX0FEUi4uCiAgICA2Q0QwOiAwMCAwMSAwMCAxNCAwRiA1RiA1MCA1MiA1NyAw
MCBBNCA0NyA1MCA1MiA1NyAwQSAgLi4uLi5fUFJXLi5HUFJXLgogICAgNkNFMDogMDggMEEgMDQg
MTQgMTYgNUYgNTAgNTIgNTQgMDAgQTAgMEEgNTAgNDkgNDMgNEQgIC4uLi4uX1BSVC4uLlBJQ00K
ICAgIDZDRjA6IEE0IDQ3IDMwIDM2IDM5IEE0IDUwIDMwIDM2IDM5IDVCIDgyIDBEIDQ0IDMwIDQ0
ICAuRzA2OS5QMDY5Wy4uRDBECiAgICA2RDAwOiAzOCAwOCA1RiA0MSA0NCA1MiAwQiBGRiBGRiA1
QiA4MiAzNSA0NyA1MCA1MCAzMSAgOC5fQURSLi4uWy41R1BQMQogICAgNkQxMDogMDggNUYgNDEg
NDQgNTIgMEMgMDIgMDAgMDEgMDAgMTQgMTYgNUYgNTAgNTIgNTQgIC5fQURSLi4uLi4uLl9QUlQK
ICAgIDZEMjA6IDAwIEEwIDBBIDUwIDQ5IDQzIDREIEE0IDQ3IDMwIDM2IDQxIEE0IDUwIDMwIDM2
ICAuLi5QSUNNLkcwNkEuUDA2CiAgICA2RDMwOiA0MSA1QiA4MiAwRCA0NCAzMCA0NCAzOSAwOCA1
RiA0MSA0NCA1MiAwQiBGRiBGRiAgQVsuLkQwRDkuX0FEUi4uLgogICAgNkQ0MDogNUIgODIgNDYg
MDQgNDcgNTAgNTAgMzIgMDggNUYgNDEgNDQgNTIgMEMgMDMgMDAgIFsuRi5HUFAyLl9BRFIuLi4K
ICAgIDZENTA6IDAxIDAwIDE0IDBGIDVGIDUwIDUyIDU3IDAwIEE0IDQ3IDUwIDUyIDU3IDBBIDA4
ICAuLi4uX1BSVy4uR1BSVy4uCiAgICA2RDYwOiAwQSAwNCAxNCAxNiA1RiA1MCA1MiA1NCAwMCBB
MCAwQSA1MCA0OSA0MyA0RCBBNCAgLi4uLl9QUlQuLi5QSUNNLgogICAgNkQ3MDogNDcgMzAgMzYg
NDIgQTQgNTAgMzAgMzYgNDIgNUIgODIgMEQgNDQgMzAgNDQgNDEgIEcwNkIuUDA2QlsuLkQwREEK
ICAgIDZEODA6IDA4IDVGIDQxIDQ0IDUyIDBCIEZGIEZGIDVCIDgyIDQ2IDA0IDQ3IDUwIDUwIDMz
ICAuX0FEUi4uLlsuRi5HUFAzCiAgICA2RDkwOiAwOCA1RiA0MSA0NCA1MiAwQyAwNCAwMCAwMSAw
MCAxNCAwRiA1RiA1MCA1MiA1NyAgLl9BRFIuLi4uLi4uX1BSVwogICAgNkRBMDogMDAgQTQgNDcg
NTAgNTIgNTcgMEEgMDggMEEgMDQgMTQgMTYgNUYgNTAgNTIgNTQgIC4uR1BSVy4uLi4uLl9QUlQK
ICAgIDZEQjA6IDAwIEEwIDBBIDUwIDQ5IDQzIDREIEE0IDQ3IDMwIDM2IDQzIEE0IDUwIDMwIDM2
ICAuLi5QSUNNLkcwNkMuUDA2CiAgICA2REMwOiA0MyA1QiA4MiAwRCA0NCAzMCA0NCA0MiAwOCA1
RiA0MSA0NCA1MiAwQiBGRiBGRiAgQ1suLkQwREIuX0FEUi4uLgogICAgNkREMDogNUIgODIgNDYg
MDQgNDcgNTAgNTAgMzQgMDggNUYgNDEgNDQgNTIgMEMgMDUgMDAgIFsuRi5HUFA0Ll9BRFIuLi4K
ICAgIDZERTA6IDAxIDAwIDE0IDBGIDVGIDUwIDUyIDU3IDAwIEE0IDQ3IDUwIDUyIDU3IDBBIDA4
ICAuLi4uX1BSVy4uR1BSVy4uCiAgICA2REYwOiAwQSAwNCAxNCAxNiA1RiA1MCA1MiA1NCAwMCBB
MCAwQSA1MCA0OSA0MyA0RCBBNCAgLi4uLl9QUlQuLi5QSUNNLgogICAgNkUwMDogNDcgMzAgMzYg
NDQgQTQgNTAgMzAgMzYgNDQgNUIgODIgMEQgNDQgMzAgNDQgNDMgIEcwNkQuUDA2RFsuLkQwREMK
ICAgIDZFMTA6IDA4IDVGIDQxIDQ0IDUyIDBCIEZGIEZGIDVCIDgyIDQ2IDA0IDQ3IDUwIDUwIDM1
ICAuX0FEUi4uLlsuRi5HUFA1CiAgICA2RTIwOiAwOCA1RiA0MSA0NCA1MiAwQyAwNiAwMCAwMSAw
MCAxNCAwRiA1RiA1MCA1MiA1NyAgLl9BRFIuLi4uLi4uX1BSVwogICAgNkUzMDogMDAgQTQgNDcg
NTAgNTIgNTcgMEEgMDggMEEgMDQgMTQgMTYgNUYgNTAgNTIgNTQgIC4uR1BSVy4uLi4uLl9QUlQK
ICAgIDZFNDA6IDAwIEEwIDBBIDUwIDQ5IDQzIDREIEE0IDQ3IDMwIDM2IDQ1IEE0IDUwIDMwIDM2
ICAuLi5QSUNNLkcwNkUuUDA2CiAgICA2RTUwOiA0NSA1QiA4MiAwRCA0NCAzMCA0NCA0NCAwOCA1
RiA0MSA0NCA1MiAwQiBGRiBGRiAgRVsuLkQwREQuX0FEUi4uLgogICAgNkU2MDogNUIgODIgNDYg
MDQgNDcgNTAgNTAgMzYgMDggNUYgNDEgNDQgNTIgMEMgMDcgMDAgIFsuRi5HUFA2Ll9BRFIuLi4K
ICAgIDZFNzA6IDAxIDAwIDE0IDBGIDVGIDUwIDUyIDU3IDAwIEE0IDQ3IDUwIDUyIDU3IDBBIDA4
ICAuLi4uX1BSVy4uR1BSVy4uCiAgICA2RTgwOiAwQSAwNCAxNCAxNiA1RiA1MCA1MiA1NCAwMCBB
MCAwQSA1MCA0OSA0MyA0RCBBNCAgLi4uLl9QUlQuLi5QSUNNLgogICAgNkU5MDogNDcgMzAgMzYg
NDYgQTQgNTAgMzAgMzYgNDYgNUIgODIgMEQgNDQgMzAgNDQgNDUgIEcwNkYuUDA2RlsuLkQwREUK
ICAgIDZFQTA6IDA4IDVGIDQxIDQ0IDUyIDBCIEZGIEZGIDVCIDgyIDQ2IDA0IDQ3IDUwIDUwIDM3
ICAuX0FEUi4uLlsuRi5HUFA3CiAgICA2RUIwOiAwOCA1RiA0MSA0NCA1MiAwQyAwMSAwMCAwMiAw
MCAxNCAwRiA1RiA1MCA1MiA1NyAgLl9BRFIuLi4uLi4uX1BSVwogICAgNkVDMDogMDAgQTQgNDcg
NTAgNTIgNTcgMEEgMDggMEEgMDQgMTQgMTYgNUYgNTAgNTIgNTQgIC4uR1BSVy4uLi4uLl9QUlQK
ICAgIDZFRDA6IDAwIEEwIDBBIDUwIDQ5IDQzIDREIEE0IDQ3IDMwIDM3IDMwIEE0IDUwIDMwIDM3
ICAuLi5QSUNNLkcwNzAuUDA3CiAgICA2RUUwOiAzMCA1QiA4MiAwRCA0NCAzMCA0NCA0NiAwOCA1
RiA0MSA0NCA1MiAwQiBGRiBGRiAgMFsuLkQwREYuX0FEUi4uLgogICAgNkVGMDogNUIgODIgNDYg
MDQgNDcgNTAgNTAgMzggMDggNUYgNDEgNDQgNTIgMEMgMDIgMDAgIFsuRi5HUFA4Ll9BRFIuLi4K
ICAgIDZGMDA6IDAyIDAwIDE0IDBGIDVGIDUwIDUyIDU3IDAwIEE0IDQ3IDUwIDUyIDU3IDBBIDA4
ICAuLi4uX1BSVy4uR1BSVy4uCiAgICA2RjEwOiAwQSAwNCAxNCAxNiA1RiA1MCA1MiA1NCAwMCBB
MCAwQSA1MCA0OSA0MyA0RCBBNCAgLi4uLl9QUlQuLi5QSUNNLgogICAgNkYyMDogNDcgMzAgMzcg
MzEgQTQgNTAgMzAgMzcgMzEgNUIgODIgMEQgNDQgMzAgNDUgMzggIEcwNzEuUDA3MVsuLkQwRTgK
ICAgIDZGMzA6IDA4IDVGIDQxIDQ0IDUyIDBCIEZGIEZGIDVCIDgyIDQ2IDA0IDQ3IDUwIDUwIDM5
ICAuX0FEUi4uLlsuRi5HUFA5CiAgICA2RjQwOiAwOCA1RiA0MSA0NCA1MiAwQyAwMSAwMCAwMyAw
MCAxNCAwRiA1RiA1MCA1MiA1NyAgLl9BRFIuLi4uLi4uX1BSVwogICAgNkY1MDogMDAgQTQgNDcg
NTAgNTIgNTcgMEEgMDggMEEgMDQgMTQgMTYgNUYgNTAgNTIgNTQgIC4uR1BSVy4uLi4uLl9QUlQK
ICAgIDZGNjA6IDAwIEEwIDBBIDUwIDQ5IDQzIDREIEE0IDQ3IDMwIDM3IDMyIEE0IDUwIDMwIDM3
ICAuLi5QSUNNLkcwNzIuUDA3CiAgICA2RjcwOiAzMiA1QiA4MiAwRCA0NCAzMCA0NSAzMCAwOCA1
RiA0MSA0NCA1MiAwQiBGRiBGRiAgMlsuLkQwRTAuX0FEUi4uLgogICAgNkY4MDogNUIgODIgNDYg
MDQgNDcgNTAgNTAgNDEgMDggNUYgNDEgNDQgNTIgMEMgMDIgMDAgIFsuRi5HUFBBLl9BRFIuLi4K
ICAgIDZGOTA6IDAzIDAwIDE0IDBGIDVGIDUwIDUyIDU3IDAwIEE0IDQ3IDUwIDUyIDU3IDBBIDA4
ICAuLi4uX1BSVy4uR1BSVy4uCiAgICA2RkEwOiAwQSAwNCAxNCAxNiA1RiA1MCA1MiA1NCAwMCBB
MCAwQSA1MCA0OSA0MyA0RCBBNCAgLi4uLl9QUlQuLi5QSUNNLgogICAgNkZCMDogNDcgMzAgMzcg
MzMgQTQgNTAgMzAgMzcgMzMgNUIgODIgMEQgNDQgMzAgNDUgMzEgIEcwNzMuUDA3M1suLkQwRTEK
ICAgIDZGQzA6IDA4IDVGIDQxIDQ0IDUyIDBCIEZGIEZGIDVCIDgyIDQ2IDA0IDQ3IDUwIDUwIDQy
ICAuX0FEUi4uLlsuRi5HUFBCCiAgICA2RkQwOiAwOCA1RiA0MSA0NCA1MiAwQyAwMyAwMCAwMyAw
MCAxNCAwRiA1RiA1MCA1MiA1NyAgLl9BRFIuLi4uLi4uX1BSVwogICAgNkZFMDogMDAgQTQgNDcg
NTAgNTIgNTcgMEEgMDggMEEgMDQgMTQgMTYgNUYgNTAgNTIgNTQgIC4uR1BSVy4uLi4uLl9QUlQK
ICAgIDZGRjA6IDAwIEEwIDBBIDUwIDQ5IDQzIDREIEE0IDQ3IDMwIDM3IDM0IEE0IDUwIDMwIDM3
ICAuLi5QSUNNLkcwNzQuUDA3CiAgICA3MDAwOiAzNCA1QiA4MiAwRCA0NCAzMCA0NSAzMiAwOCA1
RiA0MSA0NCA1MiAwQiBGRiBGRiAgNFsuLkQwRTIuX0FEUi4uLgogICAgNzAxMDogNUIgODIgNDYg
MDQgNDcgNTAgNTAgNDMgMDggNUYgNDEgNDQgNTIgMEMgMDQgMDAgIFsuRi5HUFBDLl9BRFIuLi4K
ICAgIDcwMjA6IDAzIDAwIDE0IDBGIDVGIDUwIDUyIDU3IDAwIEE0IDQ3IDUwIDUyIDU3IDBBIDA4
ICAuLi4uX1BSVy4uR1BSVy4uCiAgICA3MDMwOiAwQSAwNCAxNCAxNiA1RiA1MCA1MiA1NCAwMCBB
MCAwQSA1MCA0OSA0MyA0RCBBNCAgLi4uLl9QUlQuLi5QSUNNLgogICAgNzA0MDogNDcgMzAgMzcg
MzUgQTQgNTAgMzAgMzcgMzUgNUIgODIgMEQgNDQgMzAgNDUgMzMgIEcwNzUuUDA3NVsuLkQwRTMK
ICAgIDcwNTA6IDA4IDVGIDQxIDQ0IDUyIDBCIEZGIEZGIDVCIDgyIDQ2IDA0IDQ3IDUwIDUwIDQ0
ICAuX0FEUi4uLlsuRi5HUFBECiAgICA3MDYwOiAwOCA1RiA0MSA0NCA1MiAwQyAwNSAwMCAwMyAw
MCAxNCAwRiA1RiA1MCA1MiA1NyAgLl9BRFIuLi4uLi4uX1BSVwogICAgNzA3MDogMDAgQTQgNDcg
NTAgNTIgNTcgMEEgMDggMEEgMDQgMTQgMTYgNUYgNTAgNTIgNTQgIC4uR1BSVy4uLi4uLl9QUlQK
ICAgIDcwODA6IDAwIEEwIDBBIDUwIDQ5IDQzIDREIEE0IDQ3IDMwIDM3IDM2IEE0IDUwIDMwIDM3
ICAuLi5QSUNNLkcwNzYuUDA3CiAgICA3MDkwOiAzNiA1QiA4MiAwRCA0NCAzMCA0NSAzNCAwOCA1
RiA0MSA0NCA1MiAwQiBGRiBGRiAgNlsuLkQwRTQuX0FEUi4uLgogICAgNzBBMDogNUIgODIgNDYg
MDQgNDcgNTAgNTAgNDUgMDggNUYgNDEgNDQgNTIgMEMgMDYgMDAgIFsuRi5HUFBFLl9BRFIuLi4K
ICAgIDcwQjA6IDAzIDAwIDE0IDBGIDVGIDUwIDUyIDU3IDAwIEE0IDQ3IDUwIDUyIDU3IDBBIDA4
ICAuLi4uX1BSVy4uR1BSVy4uCiAgICA3MEMwOiAwQSAwNCAxNCAxNiA1RiA1MCA1MiA1NCAwMCBB
MCAwQSA1MCA0OSA0MyA0RCBBNCAgLi4uLl9QUlQuLi5QSUNNLgogICAgNzBEMDogNDcgMzAgMzcg
MzcgQTQgNTAgMzAgMzcgMzcgNUIgODIgMEQgNDQgMzAgNDUgMzUgIEcwNzcuUDA3N1suLkQwRTUK
ICAgIDcwRTA6IDA4IDVGIDQxIDQ0IDUyIDBCIEZGIEZGIDVCIDgyIDQ2IDA0IDQ3IDUwIDUwIDQ2
ICAuX0FEUi4uLlsuRi5HUFBGCiAgICA3MEYwOiAwOCA1RiA0MSA0NCA1MiAwQyAwNyAwMCAwMyAw
MCAxNCAwRiA1RiA1MCA1MiA1NyAgLl9BRFIuLi4uLi4uX1BSVwogICAgNzEwMDogMDAgQTQgNDcg
NTAgNTIgNTcgMEEgMDggMEEgMDQgMTQgMTYgNUYgNTAgNTIgNTQgIC4uR1BSVy4uLi4uLl9QUlQK
ICAgIDcxMTA6IDAwIEEwIDBBIDUwIDQ5IDQzIDREIEE0IDQ3IDMwIDM3IDM4IEE0IDUwIDMwIDM3
ICAuLi5QSUNNLkcwNzguUDA3CiAgICA3MTIwOiAzOCA1QiA4MiAwRCA0NCAzMCA0NSAzNiAwOCA1
RiA0MSA0NCA1MiAwQiBGRiBGRiAgOFsuLkQwRTYuX0FEUi4uLgogICAgNzEzMDogNUIgODIgNDYg
MDQgNDcgNTAgNTAgNDcgMDggNUYgNDEgNDQgNTIgMEMgMDEgMDAgIFsuRi5HUFBHLl9BRFIuLi4K
ICAgIDcxNDA6IDA0IDAwIDE0IDBGIDVGIDUwIDUyIDU3IDAwIEE0IDQ3IDUwIDUyIDU3IDBBIDA4
ICAuLi4uX1BSVy4uR1BSVy4uCiAgICA3MTUwOiAwQSAwNCAxNCAxNiA1RiA1MCA1MiA1NCAwMCBB
MCAwQSA1MCA0OSA0MyA0RCBBNCAgLi4uLl9QUlQuLi5QSUNNLgogICAgNzE2MDogNDcgMzAgMzcg
MzkgQTQgNTAgMzAgMzcgMzkgNUIgODIgMEQgNDQgMzAgNDUgMzcgIEcwNzkuUDA3OVsuLkQwRTcK
ICAgIDcxNzA6IDA4IDVGIDQxIDQ0IDUyIDBCIEZGIEZGIDVCIDgyIDQ2IDA0IDQ3IDUwIDUwIDQ4
ICAuX0FEUi4uLlsuRi5HUFBICiAgICA3MTgwOiAwOCA1RiA0MSA0NCA1MiAwQyAwMiAwMCAwNCAw
MCAxNCAwRiA1RiA1MCA1MiA1NyAgLl9BRFIuLi4uLi4uX1BSVwogICAgNzE5MDogMDAgQTQgNDcg
NTAgNTIgNTcgMEEgMDggMEEgMDQgMTQgMTYgNUYgNTAgNTIgNTQgIC4uR1BSVy4uLi4uLl9QUlQK
ICAgIDcxQTA6IDAwIEEwIDBBIDUwIDQ5IDQzIDREIEE0IDQ3IDMwIDM3IDQxIEE0IDUwIDMwIDM3
ICAuLi5QSUNNLkcwN0EuUDA3CiAgICA3MUIwOiA0MSA1QiA4MiAwRCA0NCAzMCA0NSAzOSAwOCA1
RiA0MSA0NCA1MiAwQiBGRiBGRiAgQVsuLkQwRTkuX0FEUi4uLgogICAgNzFDMDogNUIgODIgNDQg
MDQgNDcgNTAgMzEgMzUgMDggNUYgNDEgNDQgNTIgMEMgMDEgMDAgIFsuRC5HUDE1Ll9BRFIuLi4K
ICAgIDcxRDA6IDA1IDAwIDE0IDBGIDVGIDUwIDUyIDU3IDAwIEE0IDQ3IDUwIDUyIDU3IDBBIDA4
ICAuLi4uX1BSVy4uR1BSVy4uCiAgICA3MUUwOiAwQSAwNCAxNCAxNiA1RiA1MCA1MiA1NCAwMCBB
MCAwQSA1MCA0OSA0MyA0RCBBNCAgLi4uLl9QUlQuLi5QSUNNLgogICAgNzFGMDogNDcgMzAgMzcg
NDIgQTQgNTAgMzAgMzcgNDIgNUIgODIgMEIgNDQgMzAgNDUgNDQgIEcwN0IuUDA3QlsuLkQwRUQK
ICAgIDcyMDA6IDA4IDVGIDQxIDQ0IDUyIDAwIDVCIDgyIDQ2IDA0IDQ3IDUwIDMyIDM1IDA4IDVG
ICAuX0FEUi5bLkYuR1AyNS5fCiAgICA3MjEwOiA0MSA0NCA1MiAwQyAwMiAwMCAwNSAwMCAxNCAw
RiA1RiA1MCA1MiA1NyAwMCBBNCAgQURSLi4uLi4uLl9QUlcuLgogICAgNzIyMDogNDcgNTAgNTIg
NTcgMEEgMDggMEEgMDQgMTQgMTYgNUYgNTAgNTIgNTQgMDAgQTAgIEdQUlcuLi4uLi5fUFJULi4K
ICAgIDcyMzA6IDBBIDUwIDQ5IDQzIDREIEE0IDQ3IDMwIDM3IDQzIEE0IDUwIDMwIDM3IDQzIDVC
ICAuUElDTS5HMDdDLlAwN0NbCiAgICA3MjQwOiA4MiAwRCA0NCAzMCA0NSA0MSAwOCA1RiA0MSA0
NCA1MiAwQiBGRiBGRiA1QiA4MiAgLi5EMEVBLl9BRFIuLi5bLgogICAgNzI1MDogNDYgMDQgNDcg
NTAgMzMgMzUgMDggNUYgNDEgNDQgNTIgMEMgMDMgMDAgMDUgMDAgIEYuR1AzNS5fQURSLi4uLi4K
ICAgIDcyNjA6IDE0IDBGIDVGIDUwIDUyIDU3IDAwIEE0IDQ3IDUwIDUyIDU3IDBBIDA4IDBBIDA0
ICAuLl9QUlcuLkdQUlcuLi4uCiAgICA3MjcwOiAxNCAxNiA1RiA1MCA1MiA1NCAwMCBBMCAwQSA1
MCA0OSA0MyA0RCBBNCA0NyAzMCAgLi5fUFJULi4uUElDTS5HMAogICAgNzI4MDogMzcgNDQgQTQg
NTAgMzAgMzcgNDQgNUIgODIgMEQgNDQgMzAgNDUgNDIgMDggNUYgIDdELlAwN0RbLi5EMEVCLl8K
ICAgIDcyOTA6IDQxIDQ0IDUyIDBCIEZGIEZGIDVCIDgyIDQ2IDA0IDQ3IDUwIDM0IDM1IDA4IDVG
ICBBRFIuLi5bLkYuR1A0NS5fCiAgICA3MkEwOiA0MSA0NCA1MiAwQyAwNCAwMCAwNSAwMCAxNCAw
RiA1RiA1MCA1MiA1NyAwMCBBNCAgQURSLi4uLi4uLl9QUlcuLgogICAgNzJCMDogNDcgNTAgNTIg
NTcgMEEgMDggMEEgMDQgMTQgMTYgNUYgNTAgNTIgNTQgMDAgQTAgIEdQUlcuLi4uLi5fUFJULi4K
ICAgIDcyQzA6IDBBIDUwIDQ5IDQzIDREIEE0IDQ3IDMwIDM3IDQ1IEE0IDUwIDMwIDM3IDQ1IDVC
ICAuUElDTS5HMDdFLlAwN0VbCiAgICA3MkQwOiA4MiAwRCA0NCAzMCA0NSA0MyAwOCA1RiA0MSA0
NCA1MiAwQiBGRiBGRiA1QiA4MiAgLi5EMEVDLl9BRFIuLi5bLgogICAgNzJFMDogNEQgMTAgNDcg
NTAgMzEgMzcgMDggNUYgNDEgNDQgNTIgMEMgMDEgMDAgMDcgMDAgIE0uR1AxNy5fQURSLi4uLi4K
ICAgIDcyRjA6IDE0IDBGIDVGIDUwIDUyIDU3IDAwIEE0IDQ3IDUwIDUyIDU3IDBBIDBCIDBBIDA0
ICAuLl9QUlcuLkdQUlcuLi4uCiAgICA3MzAwOiAxNCAxNiA1RiA1MCA1MiA1NCAwMCBBMCAwQSA1
MCA0OSA0MyA0RCBBNCA0NyAzMCAgLi5fUFJULi4uUElDTS5HMAogICAgNzMxMDogMzcgNDYgQTQg
NTAgMzAgMzcgNDYgNUIgODIgMEIgNDQgMzAgMzggMzAgMDggNUYgIDdGLlAwN0ZbLi5EMDgwLl8K
ICAgIDczMjA6IDQxIDQ0IDUyIDAwIDVCIDgyIDBCIDQ0IDMwIDM4IDMxIDA4IDVGIDQxIDQ0IDUy
ICBBRFIuWy4uRDA4MS5fQURSCiAgICA3MzMwOiAwMSA1QiA4MiAwQyA0NCAzMCAzOCAzMiAwOCA1
RiA0MSA0NCA1MiAwQSAwMiA1QiAgLlsuLkQwODIuX0FEUi4uWwogICAgNzM0MDogODIgMEMgNDQg
MzAgMzggMzMgMDggNUYgNDEgNDQgNTIgMEEgMDMgNUIgODIgMEMgIC4uRDA4My5fQURSLi5bLi4K
ICAgIDczNTA6IDU4IDQ4IDQzIDMwIDA4IDVGIDQxIDQ0IDUyIDBBIDA0IDVCIDgyIDQ0IDA3IDUw
ICBYSEMwLl9BRFIuLlsuRC5QCiAgICA3MzYwOiA1MyA1MCA1RiAwOCA1RiA0MSA0NCA1MiAwQSAw
NSAwOCA1RiA0OCA0OSA0NCAwQyAgU1BfLl9BRFIuLi5fSElELgogICAgNzM3MDogNDEgRDAgMEMg
MDIgMDggNTAgNTMgNTAgNDIgMEMgMDAgMDAgMjAgREYgMDggNUYgIEEuLi4uUFNQQi4uLiAuLl8K
ICAgIDczODA6IDUzIDU0IDQxIDBBIDBGIDA4IDQzIDUyIDUzIDVGIDExIDExIDBBIDBFIDg2IDA5
ICBTVEEuLi5DUlNfLi4uLi4uCiAgICA3MzkwOiAwMCAwMSAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCA3OSAwMCAxNCAzNCA1RiA0MyAgLi4uLi4uLi4uLnkuLjRfQwogICAgNzNBMDogNTIgNTMgMDAg
OEEgNDMgNTIgNTMgNUYgMEEgMDQgNTAgNDIgNDEgNTMgOEEgNDMgIFJTLi5DUlNfLi5QQkFTLkMK
ICAgIDczQjA6IDUyIDUzIDVGIDBBIDA4IDUwIDRDIDQ1IDRFIDcwIDUwIDUzIDUwIDQyIDUwIDQy
ICBSU18uLlBMRU5wUFNQQlBCCiAgICA3M0MwOiA0MSA1MyA3MCAwQyAwMCAwMCAxMCAwMCA1MCA0
QyA0NSA0RSBBNCA0MyA1MiA1MyAgQVNwLi4uLi5QTEVOLkNSUwogICAgNzNEMDogNUYgNUIgODIg
MEMgNDEgNDMgNTAgNUYgMDggNUYgNDEgNDQgNTIgMEEgMDYgNUIgIF9bLi5BQ1BfLl9BRFIuLlsK
ICAgIDczRTA6IDgyIDBDIDQxIDVBIDQxIDRDIDA4IDVGIDQxIDQ0IDUyIDBBIDA3IDVCIDgyIDRE
ICAuLkFaQUwuX0FEUi4uWy5NCiAgICA3M0YwOiBDRSA0NyA1MCAzMiAzNyAwOCA1RiA0MSA0NCA1
MiAwQyAwMiAwMCAwNyAwMCAxNCAgLkdQMjcuX0FEUi4uLi4uLgogICAgNzQwMDogMTYgNUYgNTAg
NTIgNTQgMDAgQTAgMEEgNTAgNDkgNDMgNEQgQTQgNDcgMzAgMzggIC5fUFJULi4uUElDTS5HMDgK
ICAgIDc0MTA6IDM4IEE0IDUwIDMwIDM4IDM4IDVCIDgyIDQxIDY2IDUzIDQxIDU0IDQxIDA4IDVG
ICA4LlAwODhbLkFmU0FUQS5fCiAgICA3NDIwOiA0MSA0NCA1MiAwMCAwOCA0MiAzNSA0NSA0RSAw
MCAwOCA0MiA0MSA1RiAzNSAwMCAgQURSLi5CNUVOLi5CQV81LgogICAgNzQzMDogMDggNTMgNDIg
NDEgNTIgMEMgMDAgRjAgQjYgRjAgMDggNEYgNTMgNTYgNTIgMDAgIC5TQkFSLi4uLi4uT1NWUi4K
ICAgIDc0NDA6IDVCIDgwIDUzIDQxIDU0IDU4IDAyIDAwIDBBIDQ0IDVCIDgxIDQzIDA0IDUzIDQx
ICBbLlNBVFguLi5EWy5DLlNBCiAgICA3NDUwOiA1NCA1OCAwMCA1NiA0OSA0NCA0OSAyMCAwMCAz
MCA1MyA1NCA0MyA0QyAxMCAwMCAgVFguVklESSAuMFNUQ0wuLgogICAgNzQ2MDogNDAgMEMgNDIg
NDEgMzAgMzUgMjAgMDAgNDAgMEMgNTcgNTQgNDUgNEUgMDEgMDAgIEAuQkEwNSAuQC5XVEVOLi4K
ICAgIDc0NzA6IDBGIDQ0IDQ5IDUzIDMwIDAxIDQ0IDQ5IDUzIDMxIDAxIDQ0IDQ5IDUzIDMyIDAx
ICAuRElTMC5ESVMxLkRJUzIuCiAgICA3NDgwOiA0NCA0OSA1MyAzMyAwMSA0NCA0OSA1MyAzNCAw
MSA0NCA0OSA1MyAzNSAwMSA1QiAgRElTMy5ESVM0LkRJUzUuWwogICAgNzQ5MDogODEgMEUgNTMg
NDEgNTQgNTggMDAgMDAgNDAgMjEgNDQgNDkgNTMgNTAgMDYgMTQgIC4uU0FUWC4uQCFESVNQLi4K
ICAgIDc0QTA6IDM5IDQ3IDQyIDQxIDQxIDA4IDcwIDQyIDQxIDMwIDM1IDQyIDQxIDVGIDM1IEEw
ICA5R0JBQS5wQkEwNUJBXzUuCiAgICA3NEIwOiAxQyA5MSA5MyA0MiA0MSA1RiAzNSBGRiA5MiA5
MyA1MyA1NCA0MyA0QyAwQiAwMSAgLi4uQkFfNS4uLlNUQ0wuLgogICAgNzRDMDogMDEgNzAgMDAg
NDIgMzUgNDUgNEUgQTQgNTMgNDIgNDEgNTIgQTEgMEMgNzAgMDEgIC5wLkI1RU4uU0JBUi4ucC4K
ICAgIDc0RDA6IDQyIDM1IDQ1IDRFIEE0IDQyIDQxIDVGIDM1IDVCIDgwIDQyIDQxIDUyIDM1IDAw
ICBCNUVOLkJBXzVbLkJBUjUuCiAgICA3NEUwOiA0NyA0MiA0MSA0MSAwQiAwMCAxMCA1QiA4MSA0
MSAxMiA0MiA0MSA1MiAzNSAwMCAgR0JBQS4uLlsuQS5CQVI1LgogICAgNzRGMDogNEUgNEYgNTAg
NTQgMDUgMDAgNEIgMDUgNTAgNTQgNDkgMzAgMDEgNTAgNTQgNDkgIE5PUFQuLksuUFRJMC5QVEkK
ICAgIDc1MDA6IDMxIDAxIDUwIDU0IDQ5IDMyIDAxIDUwIDU0IDQ5IDMzIDAxIDUwIDU0IDQ5IDM0
ICAxLlBUSTIuUFRJMy5QVEk0CiAgICA3NTEwOiAwMSA1MCA1NCA0OSAzNSAwMSA1MCA1NCA0OSAz
NiAwMSA1MCA1NCA0OSAzNyAwMSAgLlBUSTUuUFRJNi5QVEk3LgogICAgNzUyMDogMDAgNDggODUg
NDMgNTMgNTQgMzAgMDEgMDAgNEYgMDMgMDAgMDcgNDIgNTMgNTkgIC5ILkNTVDAuLk8uLi5CU1kK
ICAgIDc1MzA6IDMwIDAxIDAwIDM4IDQ0IDQ1IDU0IDMwIDA0IDAwIDA0IDQ5IDUwIDREIDMwIDA0
ICAwLi44REVUMC4uLklQTTAuCiAgICA3NTQwOiAwMCAxNCA0NCA0NCA0OSAzMCAwNCAwMCA0QyAz
NSA0MyA1MyA1NCAzMSAwMSAwMCAgLi5EREkwLi5MNUNTVDEuLgogICAgNzU1MDogNEYgMDMgMDAg
MDcgNDIgNTMgNTkgMzEgMDEgMDAgMzggNDQgNDUgNTQgMzEgMDQgIE8uLi5CU1kxLi44REVUMS4K
ICAgIDc1NjA6IDAwIDA0IDQ5IDUwIDREIDMxIDA0IDAwIDE0IDQ0IDQ0IDQ5IDMxIDA0IDAwIDRD
ICAuLklQTTEuLi5EREkxLi5MCiAgICA3NTcwOiAzNSA0MyA1MyA1NCAzMiAwMSAwMCA0RiAwMyAw
MCAwNyA0MiA1MyA1OSAzMiAwMSAgNUNTVDIuLk8uLi5CU1kyLgogICAgNzU4MDogMDAgMzggNDQg
NDUgNTQgMzIgMDQgMDAgMDQgNDkgNTAgNEQgMzIgMDQgMDAgMTQgIC44REVUMi4uLklQTTIuLi4K
ICAgIDc1OTA6IDQ0IDQ0IDQ5IDMyIDA0IDAwIDRDIDM1IDQzIDUzIDU0IDMzIDAxIDAwIDRGIDAz
ICBEREkyLi5MNUNTVDMuLk8uCiAgICA3NUEwOiAwMCAwNyA0MiA1MyA1OSAzMyAwMSAwMCAzOCA0
NCA0NSA1NCAzMyAwNCAwMCAwNCAgLi5CU1kzLi44REVUMy4uLgogICAgNzVCMDogNDkgNTAgNEQg
MzMgMDQgMDAgMTQgNDQgNDQgNDkgMzMgMDQgMDAgNEMgMzUgNDMgIElQTTMuLi5EREkzLi5MNUMK
ICAgIDc1QzA6IDUzIDU0IDM0IDAxIDAwIDRGIDAzIDAwIDA3IDQyIDUzIDU5IDM0IDAxIDAwIDM4
ICBTVDQuLk8uLi5CU1k0Li44CiAgICA3NUQwOiA0NCA0NSA1NCAzNCAwNCAwMCAwNCA0OSA1MCA0
RCAzNCAwNCAwMCAxNCA0NCA0NCAgREVUNC4uLklQTTQuLi5ERAogICAgNzVFMDogNDkgMzQgMDQg
MDAgNEMgMzUgNDMgNTMgNTQgMzUgMDEgMDAgNEYgMDMgMDAgMDcgIEk0Li5MNUNTVDUuLk8uLi4K
ICAgIDc1RjA6IDQyIDUzIDU5IDM1IDAxIDAwIDM4IDQ0IDQ1IDU0IDM1IDA0IDAwIDA0IDQ5IDUw
ICBCU1k1Li44REVUNS4uLklQCiAgICA3NjAwOiA0RCAzNSAwNCAwMCAxNCA0NCA0NCA0OSAzNSAw
NCA1QiA4MSAwRSA0MiA0MSA1MiAgTTUuLi5EREk1LlsuLkJBUgogICAgNzYxMDogMzUgMDAgMDAg
NDAgMDYgNTAgNTQgNDkgNUYgMDYgMTQgMEEgNUYgNDkgNEUgNDkgIDUuLkAuUFRJXy4uLl9JTkkK
ICAgIDc2MjA6IDAwIDQ3IDQyIDQxIDQxIDVCIDgyIDRBIDE5IDUwIDUyIDQ5IDQ0IDA4IDVGIDQx
ICAuR0JBQVsuSi5QUklELl9BCiAgICA3NjMwOiA0NCA1MiAwMCAwOCA1MyA1MCA1NCA0RCAxMSAx
NyAwQSAxNCA3OCAwMCAwMCAwMCAgRFIuLlNQVE0uLi4ueC4uLgogICAgNzY0MDogMEYgMDAgMDAg
MDAgNzggMDAgMDAgMDAgMEYgMDAgMDAgMDAgMUYgMDAgMDAgMDAgIC4uLi54Li4uLi4uLi4uLi4K
ICAgIDc2NTA6IDE0IDBCIDVGIDQ3IDU0IDREIDAwIEE0IDUzIDUwIDU0IDREIDE0IDBDIDVGIDUz
ICAuLl9HVE0uLlNQVE0uLl9TCiAgICA3NjYwOiA1NCA0RCAwMyA3MCA2OCA1MyA1MCA1NCA0RCAx
NCAzQSA1RiA1MCA1MyAzMCAwMCAgVE0ucGhTUFRNLjpfUFMwLgogICAgNzY3MDogNDcgNDIgNDEg
NDEgQTAgMkYgOTAgOTEgOTIgOTUgNEYgNTMgNTYgNTIgMEEgMEMgIEdCQUEuLy4uLi5PU1ZSLi4K
ICAgIDc2ODA6IDkzIDRGIDUzIDU2IDUyIDAwIDQyIDM1IDQ1IDRFIEEwIDE5IDQ5IDUwIDREIDMy
ICAuT1NWUi5CNUVOLi5JUE0yCiAgICA3NjkwOiA3MCAwQSAzMiA2MCBBMiAwRiA5MCA5MyA0MiA1
MyA1OSAzMiAwMSA2MCA1QiAyMiAgcC4yYC4uLi5CU1kyLmBbIgogICAgNzZBMDogMEEgRkEgNzYg
NjAgMTQgMDYgNUYgNTAgNTMgMzMgMDAgNUIgODIgNDkgMDggNTAgIC4udmAuLl9QUzMuWy5JLlAK
ICAgIDc2QjA6IDVGIDQ0IDMwIDA4IDVGIDQxIDQ0IDUyIDAwIDE0IDI0IDVGIDUzIDU0IDQxIDAw
ICBfRDAuX0FEUi4uJF9TVEEuCiAgICA3NkMwOiA0NyA0MiA0MSA0MSBBMCAwOSA5MyA0MiAzNSA0
NSA0RSAwMCBBNCAwMCBBMCAwQiAgR0JBQS4uLkI1RU4uLi4uLgogICAgNzZEMDogOTMgNDQgNDUg
NTQgMzAgMEEgMDMgQTQgMEEgMEYgQTEgMDMgQTQgMDAgMDggNTMgIC5ERVQwLi4uLi4uLi4uLlMK
ICAgIDc2RTA6IDMxIDMyIDUwIDAwIDE0IDM0IDVGIDUwIDUzIDMwIDAwIDQ3IDQyIDQxIDQxIEEw
ICAxMlAuLjRfUFMwLkdCQUEuCiAgICA3NkYwOiAyOSA5MCA5MCA5NSA0RiA1MyA1NiA1MiAwQSAw
QyA5MiA5MyA0RiA1MyA1NiA1MiAgKS4uLk9TVlIuLi4uT1NWUgogICAgNzcwMDogMDAgNDIgMzUg
NDUgNEUgNzAgMEEgMzIgNjAgQTIgMEYgOTAgOTMgNDIgNTMgNTkgIC5CNUVOcC4yYC4uLi5CU1kK
ICAgIDc3MTA6IDMwIDAxIDYwIDVCIDIyIDBBIEZBIDc2IDYwIDE0IDA2IDVGIDUwIDUzIDMzIDAw
ICAwLmBbIi4udmAuLl9QUzMuCiAgICA3NzIwOiAxNCAxNSA1RiA0NyA1NCA0NiAwMCA3MCAxMSAw
QSAwQSAwNyAwMyA0NiAwMCAwMCAgLi5fR1RGLnAuLi4uLkYuLgogICAgNzczMDogMDAgQTAgRUYg
NjAgQTQgNjAgNUIgODIgNDkgMDggNTAgNUYgNDQgMzEgMDggNUYgIC4uLmAuYFsuSS5QX0QxLl8K
ICAgIDc3NDA6IDQxIDQ0IDUyIDAxIDE0IDI0IDVGIDUzIDU0IDQxIDAwIDQ3IDQyIDQxIDQxIEEw
ICBBRFIuLiRfU1RBLkdCQUEuCiAgICA3NzUwOiAwOSA5MyA0MiAzNSA0NSA0RSAwMCBBNCAwMCBB
MCAwQiA5MyA0NCA0NSA1NCAzMiAgLi5CNUVOLi4uLi4uREVUMgogICAgNzc2MDogMEEgMDMgQTQg
MEEgMEYgQTEgMDMgQTQgMDAgMDggNTMgMzEgMzIgNTAgMDAgMTQgIC4uLi4uLi4uLi5TMTJQLi4K
ICAgIDc3NzA6IDM0IDVGIDUwIDUzIDMwIDAwIDQ3IDQyIDQxIDQxIEEwIDI5IDkwIDkwIDk1IDRG
ICA0X1BTMC5HQkFBLikuLi5PCiAgICA3NzgwOiA1MyA1NiA1MiAwQSAwQyA5MiA5MyA0RiA1MyA1
NiA1MiAwMCA0MiAzNSA0NSA0RSAgU1ZSLi4uLk9TVlIuQjVFTgogICAgNzc5MDogNzAgMEEgMzIg
NjAgQTIgMEYgOTAgOTMgNDIgNTMgNTkgMzIgMDEgNjAgNUIgMjIgIHAuMmAuLi4uQlNZMi5gWyIK
ICAgIDc3QTA6IDBBIEZBIDc2IDYwIDE0IDA2IDVGIDUwIDUzIDMzIDAwIDE0IDE1IDVGIDQ3IDU0
ICAuLnZgLi5fUFMzLi4uX0dUCiAgICA3N0IwOiA0NiAwMCA3MCAxMSAwQSAwQSAwNyAwMyA0NiAw
MCAwMCAwMCBBMCBFRiA2MCBBNCAgRi5wLi4uLi5GLi4uLi5gLgogICAgNzdDMDogNjAgNUIgODIg
NEIgMUEgNTMgNDUgNDMgNDQgMDggNUYgNDEgNDQgNTIgMEEgMDIgIGBbLksuU0VDRC5fQURSLi4K
ICAgIDc3RDA6IDA4IDUzIDUwIDU0IDREIDExIDE3IDBBIDE0IDc4IDAwIDAwIDAwIDBGIDAwIDAw
ICAuU1BUTS4uLi54Li4uLi4uCiAgICA3N0UwOiAwMCA3OCAwMCAwMCAwMCAwRiAwMCAwMCAwMCAx
RiAwMCAwMCAwMCAxNCAwQiA1RiAgLnguLi4uLi4uLi4uLi4uXwogICAgNzdGMDogNDcgNTQgNEQg
MDAgQTQgNTMgNTAgNTQgNEQgMTQgMEMgNUYgNTMgNTQgNEQgMDMgIEdUTS4uU1BUTS4uX1NUTS4K
ICAgIDc4MDA6IDcwIDY4IDUzIDUwIDU0IDREIDE0IDQ2IDA1IDVGIDUwIDUzIDMwIDAwIDQ3IDQy
ICBwaFNQVE0uRi5fUFMwLkdCCiAgICA3ODEwOiA0MSA0MSBBMCA0QSAwNCA5MCA5MSA5MiA5NSA0
RiA1MyA1NiA1MiAwQSAwQyA5MyAgQUEuSi4uLi4uT1NWUi4uLgogICAgNzgyMDogNEYgNTMgNTYg
NTIgMDAgNDIgMzUgNDUgNEUgQTAgMTkgNDkgNTAgNEQgMzEgNzAgIE9TVlIuQjVFTi4uSVBNMXAK
ICAgIDc4MzA6IDBBIDMyIDYwIEEyIDBGIDkwIDkzIDQyIDUzIDU5IDMxIDAxIDYwIDVCIDIyIDBB
ICAuMmAuLi4uQlNZMS5gWyIuCiAgICA3ODQwOiBGQSA3NiA2MCBBMCAxOSA0OSA1MCA0RCAzMyA3
MCAwQSAzMiA2MCBBMiAwRiA5MCAgLnZgLi5JUE0zcC4yYC4uLgogICAgNzg1MDogOTMgNDIgNTMg
NTkgMzMgMDEgNjAgNUIgMjIgMEEgRkEgNzYgNjAgMTQgMDYgNUYgIC5CU1kzLmBbIi4udmAuLl8K
ICAgIDc4NjA6IDUwIDUzIDMzIDAwIDVCIDgyIDQzIDA4IDUzIDVGIDQ0IDMwIDA4IDVGIDQxIDQ0
ICBQUzMuWy5DLlNfRDAuX0FECiAgICA3ODcwOiA1MiAwMCAxNCAyNCA1RiA1MyA1NCA0MSAwMCA0
NyA0MiA0MSA0MSBBMCAwOSA5MyAgUi4uJF9TVEEuR0JBQS4uLgogICAgNzg4MDogNDIgMzUgNDUg
NEUgMDAgQTQgMDAgQTAgMEIgOTMgNDQgNDUgNTQgMzEgMEEgMDMgIEI1RU4uLi4uLi5ERVQxLi4K
ICAgIDc4OTA6IEE0IDBBIDBGIEExIDAzIEE0IDAwIDE0IDM0IDVGIDUwIDUzIDMwIDAwIDQ3IDQy
ICAuLi4uLi4uLjRfUFMwLkdCCiAgICA3OEEwOiA0MSA0MSBBMCAyOSA5MCA5MCA5NSA0RiA1MyA1
NiA1MiAwQSAwQyA5MiA5MyA0RiAgQUEuKS4uLk9TVlIuLi4uTwogICAgNzhCMDogNTMgNTYgNTIg
MDAgNDIgMzUgNDUgNEUgNzAgMEEgMzIgNjAgQTIgMEYgOTAgOTMgIFNWUi5CNUVOcC4yYC4uLi4K
ICAgIDc4QzA6IDQyIDUzIDU5IDMxIDAxIDYwIDVCIDIyIDBBIEZBIDc2IDYwIDE0IDA2IDVGIDUw
ICBCU1kxLmBbIi4udmAuLl9QCiAgICA3OEQwOiA1MyAzMyAwMCAxNCAxNSA1RiA0NyA1NCA0NiAw
MCA3MCAxMSAwQSAwQSAwNyAwMyAgUzMuLi5fR1RGLnAuLi4uLgogICAgNzhFMDogNDYgMDAgMDAg
MDAgQTAgRUYgNjAgQTQgNjAgNUIgODIgNDMgMDggNTMgNUYgNDQgIEYuLi4uLmAuYFsuQy5TX0QK
ICAgIDc4RjA6IDMxIDA4IDVGIDQxIDQ0IDUyIDAxIDE0IDI0IDVGIDUzIDU0IDQxIDAwIDQ3IDQy
ICAxLl9BRFIuLiRfU1RBLkdCCiAgICA3OTAwOiA0MSA0MSBBMCAwOSA5MyA0MiAzNSA0NSA0RSAw
MCBBNCAwMCBBMCAwQiA5MyA0NCAgQUEuLi5CNUVOLi4uLi4uRAogICAgNzkxMDogNDUgNTQgMzMg
MEEgMDMgQTQgMEEgMEYgQTEgMDMgQTQgMDAgMTQgMzQgNUYgNTAgIEVUMy4uLi4uLi4uLi40X1AK
ICAgIDc5MjA6IDUzIDMwIDAwIDQ3IDQyIDQxIDQxIEEwIDI5IDkwIDkwIDk1IDRGIDUzIDU2IDUy
ICBTMC5HQkFBLikuLi5PU1ZSCiAgICA3OTMwOiAwQSAwQyA5MiA5MyA0RiA1MyA1NiA1MiAwMCA0
MiAzNSA0NSA0RSA3MCAwQSAzMiAgLi4uLk9TVlIuQjVFTnAuMgogICAgNzk0MDogNjAgQTIgMEYg
OTAgOTMgNDIgNTMgNTkgMzMgMDEgNjAgNUIgMjIgMEEgRkEgNzYgIGAuLi4uQlNZMy5gWyIuLnYK
ICAgIDc5NTA6IDYwIDE0IDA2IDVGIDUwIDUzIDMzIDAwIDE0IDE1IDVGIDQ3IDU0IDQ2IDAwIDcw
ICBgLi5fUFMzLi4uX0dURi5wCiAgICA3OTYwOiAxMSAwQSAwQSAwNyAwMyA0NiAwMCAwMCAwMCBB
MCBFRiA2MCBBNCA2MCAxNCA0QSAgLi4uLi5GLi4uLi5gLmAuSgogICAgNzk3MDogMTAgNDUgNEUg
NTAgNUYgMDIgQTAgMEMgOTMgNjggMDAgNzAgODAgNjkgMDAgNDQgIC5FTlBfLi4uLmgucC5pLkQK
ICAgIDc5ODA6IDQ5IDUzIDMwIEExIDRGIDA0IEEwIDBDIDkzIDY4IDAxIDcwIDgwIDY5IDAwIDQ0
ICBJUzAuTy4uLi5oLnAuaS5ECiAgICA3OTkwOiA0OSA1MyAzMSBBMSAzRiBBMCAwRCA5MyA2OCAw
QSAwMiA3MCA4MCA2OSAwMCA0NCAgSVMxLj8uLi5oLi5wLmkuRAogICAgNzlBMDogNDkgNTMgMzIg
QTEgMkYgQTAgMEQgOTMgNjggMEEgMDMgNzAgODAgNjkgMDAgNDQgIElTMi4vLi4uaC4ucC5pLkQK
ICAgIDc5QjA6IDQ5IDUzIDMzIEExIDFGIEEwIDBEIDkzIDY4IDBBIDA0IDcwIDgwIDY5IDAwIDQ0
ICBJUzMuLi4uLmguLnAuaS5ECiAgICA3OUMwOiA0OSA1MyAzNCBBMSAwRiBBMCAwRCA5MyA2OCAw
QSAwNSA3MCA4MCA2OSAwMCA0NCAgSVM0Li4uLi5oLi5wLmkuRAogICAgNzlEMDogNDkgNTMgMzUg
NzAgMDEgNTcgNTQgNDUgNEUgQTAgMEEgOTMgNjggMDAgNzAgNjkgIElTNXAuV1RFTi4uLmgucGkK
ICAgIDc5RTA6IDUwIDU0IDQ5IDMwIEExIDQ1IDA0IEEwIDBBIDkzIDY4IDAxIDcwIDY5IDUwIDU0
ICBQVEkwLkUuLi4uaC5waVBUCiAgICA3OUYwOiA0OSAzMSBBMSAzNyBBMCAwQiA5MyA2OCAwQSAw
MiA3MCA2OSA1MCA1NCA0OSAzMiAgSTEuNy4uLmguLnBpUFRJMgogICAgN0EwMDogQTEgMjkgQTAg
MEIgOTMgNjggMEEgMDMgNzAgNjkgNTAgNTQgNDkgMzMgQTEgMUIgIC4pLi4uaC4ucGlQVEkzLi4K
ICAgIDdBMTA6IEEwIDBCIDkzIDY4IDBBIDA0IDcwIDY5IDUwIDU0IDQ5IDM0IEExIDBEIEEwIDBC
ICAuLi5oLi5waVBUSTQuLi4uCiAgICA3QTIwOiA5MyA2OCAwQSAwNSA3MCA2OSA1MCA1NCA0OSAz
NSBBMCAwRSA5MyA0NCA0OSA1MyAgLmguLnBpUFRJNS4uLkRJUwogICAgN0EzMDogNTAgMEEgM0Yg
NzAgMDEgNTAgNTQgNDkgMzAgQTEgMUEgQTAgMTggOTAgNDQgNDkgIFAuP3AuUFRJMC4uLi4uREkK
ICAgIDdBNDA6IDUzIDMwIDdGIDdCIDQ0IDQ5IDUzIDUwIDBBIDNFIDAwIDBBIDNFIDAwIDcwIDAw
ICBTMC57RElTUC4+Li4+LnAuCiAgICA3QTUwOiA1MCA1NCA0OSAzMCA3MCA1MCA1NCA0OSA1RiA2
MCA3MCAwMCA2MSBBMiAwRSA2MCAgUFRJMHBQVElfYHAuYS4uYAogICAgN0E2MDogQTAgMDcgN0Ig
NjAgMDEgMDAgNzUgNjEgN0EgNjAgMDEgNjAgNzAgNzYgNjEgNEUgIC4ue2AuLnVhemAuYHB2YU4K
ICAgIDdBNzA6IDRGIDUwIDU0IDcwIDAwIDU3IDU0IDQ1IDRFIDVCIDgyIDQxIDY2IDUzIDQxIDU0
ICBPUFRwLldURU5bLkFmU0FUCiAgICA3QTgwOiAzMiAwOCA1RiA0MSA0NCA1MiAwMCAwOCA0MiAz
NSA0NSA0RSAwMCAwOCA0MiA0MSAgMi5fQURSLi5CNUVOLi5CQQogICAgN0E5MDogNUYgMzUgMDAg
MDggNTMgNDIgNDEgNTIgMEMgMDAgRjAgQjYgRjAgMDggNEYgNTMgIF81Li5TQkFSLi4uLi4uT1MK
ICAgIDdBQTA6IDU2IDUyIDAwIDVCIDgwIDUzIDQxIDU0IDU4IDAyIDAwIDBBIDQ0IDVCIDgxIDQz
ICBWUi5bLlNBVFguLi5EWy5DCiAgICA3QUIwOiAwNCA1MyA0MSA1NCA1OCAwMCA1NiA0OSA0NCA0
OSAyMCAwMCAzMCA1MyA1NCA0MyAgLlNBVFguVklESSAuMFNUQwogICAgN0FDMDogNEMgMTAgMDAg
NDAgMEMgNDIgNDEgMzAgMzUgMjAgMDAgNDAgMEMgNTcgNTQgNDUgIEwuLkAuQkEwNSAuQC5XVEUK
ICAgIDdBRDA6IDRFIDAxIDAwIDBGIDQ0IDQ5IDUzIDMwIDAxIDQ0IDQ5IDUzIDMxIDAxIDQ0IDQ5
ICBOLi4uRElTMC5ESVMxLkRJCiAgICA3QUUwOiA1MyAzMiAwMSA0NCA0OSA1MyAzMyAwMSA0NCA0
OSA1MyAzNCAwMSA0NCA0OSA1MyAgUzIuRElTMy5ESVM0LkRJUwogICAgN0FGMDogMzUgMDEgNUIg
ODEgMEUgNTMgNDEgNTQgNTggMDAgMDAgNDAgMjEgNDQgNDkgNTMgIDUuWy4uU0FUWC4uQCFESVMK
ICAgIDdCMDA6IDUwIDA2IDE0IDM5IDQ3IDQyIDQxIDQxIDA4IDcwIDQyIDQxIDMwIDM1IDQyIDQx
ICBQLi45R0JBQS5wQkEwNUJBCiAgICA3QjEwOiA1RiAzNSBBMCAxQyA5MSA5MyA0MiA0MSA1RiAz
NSBGRiA5MiA5MyA1MyA1NCA0MyAgXzUuLi4uQkFfNS4uLlNUQwogICAgN0IyMDogNEMgMEIgMDEg
MDEgNzAgMDAgNDIgMzUgNDUgNEUgQTQgNTMgNDIgNDEgNTIgQTEgIEwuLi5wLkI1RU4uU0JBUi4K
ICAgIDdCMzA6IDBDIDcwIDAxIDQyIDM1IDQ1IDRFIEE0IDQyIDQxIDVGIDM1IDVCIDgwIDQyIDQx
ICAucC5CNUVOLkJBXzVbLkJBCiAgICA3QjQwOiA1MiAzNSAwMCA0NyA0MiA0MSA0MSAwQiAwMCAx
MCA1QiA4MSA0MSAxMiA0MiA0MSAgUjUuR0JBQS4uLlsuQS5CQQogICAgN0I1MDogNTIgMzUgMDAg
NEUgNEYgNTAgNTQgMDUgMDAgNEIgMDUgNTAgNTQgNDkgMzAgMDEgIFI1Lk5PUFQuLksuUFRJMC4K
ICAgIDdCNjA6IDUwIDU0IDQ5IDMxIDAxIDUwIDU0IDQ5IDMyIDAxIDUwIDU0IDQ5IDMzIDAxIDUw
ICBQVEkxLlBUSTIuUFRJMy5QCiAgICA3QjcwOiA1NCA0OSAzNCAwMSA1MCA1NCA0OSAzNSAwMSA1
MCA1NCA0OSAzNiAwMSA1MCA1NCAgVEk0LlBUSTUuUFRJNi5QVAogICAgN0I4MDogNDkgMzcgMDEg
MDAgNDggODUgNDMgNTMgNTQgMzAgMDEgMDAgNEYgMDMgMDAgMDcgIEk3Li5ILkNTVDAuLk8uLi4K
ICAgIDdCOTA6IDQyIDUzIDU5IDMwIDAxIDAwIDM4IDQ0IDQ1IDU0IDMwIDA0IDAwIDA0IDQ5IDUw
ICBCU1kwLi44REVUMC4uLklQCiAgICA3QkEwOiA0RCAzMCAwNCAwMCAxNCA0NCA0NCA0OSAzMCAw
NCAwMCA0QyAzNSA0MyA1MyA1NCAgTTAuLi5EREkwLi5MNUNTVAogICAgN0JCMDogMzEgMDEgMDAg
NEYgMDMgMDAgMDcgNDIgNTMgNTkgMzEgMDEgMDAgMzggNDQgNDUgIDEuLk8uLi5CU1kxLi44REUK
ICAgIDdCQzA6IDU0IDMxIDA0IDAwIDA0IDQ5IDUwIDREIDMxIDA0IDAwIDE0IDQ0IDQ0IDQ5IDMx
ICBUMS4uLklQTTEuLi5EREkxCiAgICA3QkQwOiAwNCAwMCA0QyAzNSA0MyA1MyA1NCAzMiAwMSAw
MCA0RiAwMyAwMCAwNyA0MiA1MyAgLi5MNUNTVDIuLk8uLi5CUwogICAgN0JFMDogNTkgMzIgMDEg
MDAgMzggNDQgNDUgNTQgMzIgMDQgMDAgMDQgNDkgNTAgNEQgMzIgIFkyLi44REVUMi4uLklQTTIK
ICAgIDdCRjA6IDA0IDAwIDE0IDQ0IDQ0IDQ5IDMyIDA0IDAwIDRDIDM1IDQzIDUzIDU0IDMzIDAx
ICAuLi5EREkyLi5MNUNTVDMuCiAgICA3QzAwOiAwMCA0RiAwMyAwMCAwNyA0MiA1MyA1OSAzMyAw
MSAwMCAzOCA0NCA0NSA1NCAzMyAgLk8uLi5CU1kzLi44REVUMwogICAgN0MxMDogMDQgMDAgMDQg
NDkgNTAgNEQgMzMgMDQgMDAgMTQgNDQgNDQgNDkgMzMgMDQgMDAgIC4uLklQTTMuLi5EREkzLi4K
ICAgIDdDMjA6IDRDIDM1IDQzIDUzIDU0IDM0IDAxIDAwIDRGIDAzIDAwIDA3IDQyIDUzIDU5IDM0
ICBMNUNTVDQuLk8uLi5CU1k0CiAgICA3QzMwOiAwMSAwMCAzOCA0NCA0NSA1NCAzNCAwNCAwMCAw
NCA0OSA1MCA0RCAzNCAwNCAwMCAgLi44REVUNC4uLklQTTQuLgogICAgN0M0MDogMTQgNDQgNDQg
NDkgMzQgMDQgMDAgNEMgMzUgNDMgNTMgNTQgMzUgMDEgMDAgNEYgIC5EREk0Li5MNUNTVDUuLk8K
ICAgIDdDNTA6IDAzIDAwIDA3IDQyIDUzIDU5IDM1IDAxIDAwIDM4IDQ0IDQ1IDU0IDM1IDA0IDAw
ICAuLi5CU1k1Li44REVUNS4uCiAgICA3QzYwOiAwNCA0OSA1MCA0RCAzNSAwNCAwMCAxNCA0NCA0
NCA0OSAzNSAwNCA1QiA4MSAwRSAgLklQTTUuLi5EREk1LlsuLgogICAgN0M3MDogNDIgNDEgNTIg
MzUgMDAgMDAgNDAgMDYgNTAgNTQgNDkgNUYgMDYgMTQgMEEgNUYgIEJBUjUuLkAuUFRJXy4uLl8K
ICAgIDdDODA6IDQ5IDRFIDQ5IDAwIDQ3IDQyIDQxIDQxIDVCIDgyIDRBIDE5IDUwIDUyIDQ5IDQ0
ICBJTkkuR0JBQVsuSi5QUklECiAgICA3QzkwOiAwOCA1RiA0MSA0NCA1MiAwMCAwOCA1MyA1MCA1
NCA0RCAxMSAxNyAwQSAxNCA3OCAgLl9BRFIuLlNQVE0uLi4ueAogICAgN0NBMDogMDAgMDAgMDAg
MEYgMDAgMDAgMDAgNzggMDAgMDAgMDAgMEYgMDAgMDAgMDAgMUYgIC4uLi4uLi54Li4uLi4uLi4K
ICAgIDdDQjA6IDAwIDAwIDAwIDE0IDBCIDVGIDQ3IDU0IDREIDAwIEE0IDUzIDUwIDU0IDREIDE0
ICAuLi4uLl9HVE0uLlNQVE0uCiAgICA3Q0MwOiAwQyA1RiA1MyA1NCA0RCAwMyA3MCA2OCA1MyA1
MCA1NCA0RCAxNCAzQSA1RiA1MCAgLl9TVE0ucGhTUFRNLjpfUAogICAgN0NEMDogNTMgMzAgMDAg
NDcgNDIgNDEgNDEgQTAgMkYgOTAgOTEgOTIgOTUgNEYgNTMgNTYgIFMwLkdCQUEuLy4uLi5PU1YK
ICAgIDdDRTA6IDUyIDBBIDBDIDkzIDRGIDUzIDU2IDUyIDAwIDQyIDM1IDQ1IDRFIEEwIDE5IDQ5
ICBSLi4uT1NWUi5CNUVOLi5JCiAgICA3Q0YwOiA1MCA0RCAzMiA3MCAwQSAzMiA2MCBBMiAwRiA5
MCA5MyA0MiA1MyA1OSAzMiAwMSAgUE0ycC4yYC4uLi5CU1kyLgogICAgN0QwMDogNjAgNUIgMjIg
MEEgRkEgNzYgNjAgMTQgMDYgNUYgNTAgNTMgMzMgMDAgNUIgODIgIGBbIi4udmAuLl9QUzMuWy4K
ICAgIDdEMTA6IDQ5IDA4IDUwIDVGIDQ0IDMwIDA4IDVGIDQxIDQ0IDUyIDAwIDE0IDI0IDVGIDUz
ICBJLlBfRDAuX0FEUi4uJF9TCiAgICA3RDIwOiA1NCA0MSAwMCA0NyA0MiA0MSA0MSBBMCAwOSA5
MyA0MiAzNSA0NSA0RSAwMCBBNCAgVEEuR0JBQS4uLkI1RU4uLgogICAgN0QzMDogMDAgQTAgMEIg
OTMgNDQgNDUgNTQgMzAgMEEgMDMgQTQgMEEgMEYgQTEgMDMgQTQgIC4uLi5ERVQwLi4uLi4uLi4K
ICAgIDdENDA6IDAwIDA4IDUzIDMxIDMyIDUwIDAwIDE0IDM0IDVGIDUwIDUzIDMwIDAwIDQ3IDQy
ICAuLlMxMlAuLjRfUFMwLkdCCiAgICA3RDUwOiA0MSA0MSBBMCAyOSA5MCA5MCA5NSA0RiA1MyA1
NiA1MiAwQSAwQyA5MiA5MyA0RiAgQUEuKS4uLk9TVlIuLi4uTwogICAgN0Q2MDogNTMgNTYgNTIg
MDAgNDIgMzUgNDUgNEUgNzAgMEEgMzIgNjAgQTIgMEYgOTAgOTMgIFNWUi5CNUVOcC4yYC4uLi4K
ICAgIDdENzA6IDQyIDUzIDU5IDMwIDAxIDYwIDVCIDIyIDBBIEZBIDc2IDYwIDE0IDA2IDVGIDUw
ICBCU1kwLmBbIi4udmAuLl9QCiAgICA3RDgwOiA1MyAzMyAwMCAxNCAxNSA1RiA0NyA1NCA0NiAw
MCA3MCAxMSAwQSAwQSAwNyAwMyAgUzMuLi5fR1RGLnAuLi4uLgogICAgN0Q5MDogNDYgMDAgMDAg
MDAgQTAgRUYgNjAgQTQgNjAgNUIgODIgNDkgMDggNTAgNUYgNDQgIEYuLi4uLmAuYFsuSS5QX0QK
ICAgIDdEQTA6IDMxIDA4IDVGIDQxIDQ0IDUyIDAxIDE0IDI0IDVGIDUzIDU0IDQxIDAwIDQ3IDQy
ICAxLl9BRFIuLiRfU1RBLkdCCiAgICA3REIwOiA0MSA0MSBBMCAwOSA5MyA0MiAzNSA0NSA0RSAw
MCBBNCAwMCBBMCAwQiA5MyA0NCAgQUEuLi5CNUVOLi4uLi4uRAogICAgN0RDMDogNDUgNTQgMzIg
MEEgMDMgQTQgMEEgMEYgQTEgMDMgQTQgMDAgMDggNTMgMzEgMzIgIEVUMi4uLi4uLi4uLi5TMTIK
ICAgIDdERDA6IDUwIDAwIDE0IDM0IDVGIDUwIDUzIDMwIDAwIDQ3IDQyIDQxIDQxIEEwIDI5IDkw
ICBQLi40X1BTMC5HQkFBLikuCiAgICA3REUwOiA5MCA5NSA0RiA1MyA1NiA1MiAwQSAwQyA5MiA5
MyA0RiA1MyA1NiA1MiAwMCA0MiAgLi5PU1ZSLi4uLk9TVlIuQgogICAgN0RGMDogMzUgNDUgNEUg
NzAgMEEgMzIgNjAgQTIgMEYgOTAgOTMgNDIgNTMgNTkgMzIgMDEgIDVFTnAuMmAuLi4uQlNZMi4K
ICAgIDdFMDA6IDYwIDVCIDIyIDBBIEZBIDc2IDYwIDE0IDA2IDVGIDUwIDUzIDMzIDAwIDE0IDE1
ICBgWyIuLnZgLi5fUFMzLi4uCiAgICA3RTEwOiA1RiA0NyA1NCA0NiAwMCA3MCAxMSAwQSAwQSAw
NyAwMyA0NiAwMCAwMCAwMCBBMCAgX0dURi5wLi4uLi5GLi4uLgogICAgN0UyMDogRUYgNjAgQTQg
NjAgNUIgODIgNEIgMUEgNTMgNDUgNDMgNDQgMDggNUYgNDEgNDQgIC5gLmBbLksuU0VDRC5fQUQK
ICAgIDdFMzA6IDUyIDBBIDAyIDA4IDUzIDUwIDU0IDREIDExIDE3IDBBIDE0IDc4IDAwIDAwIDAw
ICBSLi4uU1BUTS4uLi54Li4uCiAgICA3RTQwOiAwRiAwMCAwMCAwMCA3OCAwMCAwMCAwMCAwRiAw
MCAwMCAwMCAxRiAwMCAwMCAwMCAgLi4uLnguLi4uLi4uLi4uLgogICAgN0U1MDogMTQgMEIgNUYg
NDcgNTQgNEQgMDAgQTQgNTMgNTAgNTQgNEQgMTQgMEMgNUYgNTMgIC4uX0dUTS4uU1BUTS4uX1MK
ICAgIDdFNjA6IDU0IDREIDAzIDcwIDY4IDUzIDUwIDU0IDREIDE0IDQ2IDA1IDVGIDUwIDUzIDMw
ICBUTS5waFNQVE0uRi5fUFMwCiAgICA3RTcwOiAwMCA0NyA0MiA0MSA0MSBBMCA0QSAwNCA5MCA5
MSA5MiA5NSA0RiA1MyA1NiA1MiAgLkdCQUEuSi4uLi4uT1NWUgogICAgN0U4MDogMEEgMEMgOTMg
NEYgNTMgNTYgNTIgMDAgNDIgMzUgNDUgNEUgQTAgMTkgNDkgNTAgIC4uLk9TVlIuQjVFTi4uSVAK
ICAgIDdFOTA6IDREIDMxIDcwIDBBIDMyIDYwIEEyIDBGIDkwIDkzIDQyIDUzIDU5IDMxIDAxIDYw
ICBNMXAuMmAuLi4uQlNZMS5gCiAgICA3RUEwOiA1QiAyMiAwQSBGQSA3NiA2MCBBMCAxOSA0OSA1
MCA0RCAzMyA3MCAwQSAzMiA2MCAgWyIuLnZgLi5JUE0zcC4yYAogICAgN0VCMDogQTIgMEYgOTAg
OTMgNDIgNTMgNTkgMzMgMDEgNjAgNUIgMjIgMEEgRkEgNzYgNjAgIC4uLi5CU1kzLmBbIi4udmAK
ICAgIDdFQzA6IDE0IDA2IDVGIDUwIDUzIDMzIDAwIDVCIDgyIDQzIDA4IDUzIDVGIDQ0IDMwIDA4
ICAuLl9QUzMuWy5DLlNfRDAuCiAgICA3RUQwOiA1RiA0MSA0NCA1MiAwMCAxNCAyNCA1RiA1MyA1
NCA0MSAwMCA0NyA0MiA0MSA0MSAgX0FEUi4uJF9TVEEuR0JBQQogICAgN0VFMDogQTAgMDkgOTMg
NDIgMzUgNDUgNEUgMDAgQTQgMDAgQTAgMEIgOTMgNDQgNDUgNTQgIC4uLkI1RU4uLi4uLi5ERVQK
ICAgIDdFRjA6IDMxIDBBIDAzIEE0IDBBIDBGIEExIDAzIEE0IDAwIDE0IDM0IDVGIDUwIDUzIDMw
ICAxLi4uLi4uLi4uLjRfUFMwCiAgICA3RjAwOiAwMCA0NyA0MiA0MSA0MSBBMCAyOSA5MCA5MCA5
NSA0RiA1MyA1NiA1MiAwQSAwQyAgLkdCQUEuKS4uLk9TVlIuLgogICAgN0YxMDogOTIgOTMgNEYg
NTMgNTYgNTIgMDAgNDIgMzUgNDUgNEUgNzAgMEEgMzIgNjAgQTIgIC4uT1NWUi5CNUVOcC4yYC4K
ICAgIDdGMjA6IDBGIDkwIDkzIDQyIDUzIDU5IDMxIDAxIDYwIDVCIDIyIDBBIEZBIDc2IDYwIDE0
ICAuLi5CU1kxLmBbIi4udmAuCiAgICA3RjMwOiAwNiA1RiA1MCA1MyAzMyAwMCAxNCAxNSA1RiA0
NyA1NCA0NiAwMCA3MCAxMSAwQSAgLl9QUzMuLi5fR1RGLnAuLgogICAgN0Y0MDogMEEgMDcgMDMg
NDYgMDAgMDAgMDAgQTAgRUYgNjAgQTQgNjAgNUIgODIgNDMgMDggIC4uLkYuLi4uLmAuYFsuQy4K
ICAgIDdGNTA6IDUzIDVGIDQ0IDMxIDA4IDVGIDQxIDQ0IDUyIDAxIDE0IDI0IDVGIDUzIDU0IDQx
ICBTX0QxLl9BRFIuLiRfU1RBCiAgICA3RjYwOiAwMCA0NyA0MiA0MSA0MSBBMCAwOSA5MyA0MiAz
NSA0NSA0RSAwMCBBNCAwMCBBMCAgLkdCQUEuLi5CNUVOLi4uLgogICAgN0Y3MDogMEIgOTMgNDQg
NDUgNTQgMzMgMEEgMDMgQTQgMEEgMEYgQTEgMDMgQTQgMDAgMTQgIC4uREVUMy4uLi4uLi4uLi4K
ICAgIDdGODA6IDM0IDVGIDUwIDUzIDMwIDAwIDQ3IDQyIDQxIDQxIEEwIDI5IDkwIDkwIDk1IDRG
ICA0X1BTMC5HQkFBLikuLi5PCiAgICA3RjkwOiA1MyA1NiA1MiAwQSAwQyA5MiA5MyA0RiA1MyA1
NiA1MiAwMCA0MiAzNSA0NSA0RSAgU1ZSLi4uLk9TVlIuQjVFTgogICAgN0ZBMDogNzAgMEEgMzIg
NjAgQTIgMEYgOTAgOTMgNDIgNTMgNTkgMzMgMDEgNjAgNUIgMjIgIHAuMmAuLi4uQlNZMy5gWyIK
ICAgIDdGQjA6IDBBIEZBIDc2IDYwIDE0IDA2IDVGIDUwIDUzIDMzIDAwIDE0IDE1IDVGIDQ3IDU0
ICAuLnZgLi5fUFMzLi4uX0dUCiAgICA3RkMwOiA0NiAwMCA3MCAxMSAwQSAwQSAwNyAwMyA0NiAw
MCAwMCAwMCBBMCBFRiA2MCBBNCAgRi5wLi4uLi5GLi4uLi5gLgogICAgN0ZEMDogNjAgMTQgNEEg
MTAgNDUgNEUgNTAgNUYgMDIgQTAgMEMgOTMgNjggMDAgNzAgODAgIGAuSi5FTlBfLi4uLmgucC4K
ICAgIDdGRTA6IDY5IDAwIDQ0IDQ5IDUzIDMwIEExIDRGIDA0IEEwIDBDIDkzIDY4IDAxIDcwIDgw
ICBpLkRJUzAuTy4uLi5oLnAuCiAgICA3RkYwOiA2OSAwMCA0NCA0OSA1MyAzMSBBMSAzRiBBMCAw
RCA5MyA2OCAwQSAwMiA3MCA4MCAgaS5ESVMxLj8uLi5oLi5wLgogICAgODAwMDogNjkgMDAgNDQg
NDkgNTMgMzIgQTEgMkYgQTAgMEQgOTMgNjggMEEgMDMgNzAgODAgIGkuRElTMi4vLi4uaC4ucC4K
ICAgIDgwMTA6IDY5IDAwIDQ0IDQ5IDUzIDMzIEExIDFGIEEwIDBEIDkzIDY4IDBBIDA0IDcwIDgw
ICBpLkRJUzMuLi4uLmguLnAuCiAgICA4MDIwOiA2OSAwMCA0NCA0OSA1MyAzNCBBMSAwRiBBMCAw
RCA5MyA2OCAwQSAwNSA3MCA4MCAgaS5ESVM0Li4uLi5oLi5wLgogICAgODAzMDogNjkgMDAgNDQg
NDkgNTMgMzUgNzAgMDEgNTcgNTQgNDUgNEUgQTAgMEEgOTMgNjggIGkuRElTNXAuV1RFTi4uLmgK
ICAgIDgwNDA6IDAwIDcwIDY5IDUwIDU0IDQ5IDMwIEExIDQ1IDA0IEEwIDBBIDkzIDY4IDAxIDcw
ICAucGlQVEkwLkUuLi4uaC5wCiAgICA4MDUwOiA2OSA1MCA1NCA0OSAzMSBBMSAzNyBBMCAwQiA5
MyA2OCAwQSAwMiA3MCA2OSA1MCAgaVBUSTEuNy4uLmguLnBpUAogICAgODA2MDogNTQgNDkgMzIg
QTEgMjkgQTAgMEIgOTMgNjggMEEgMDMgNzAgNjkgNTAgNTQgNDkgIFRJMi4pLi4uaC4ucGlQVEkK
ICAgIDgwNzA6IDMzIEExIDFCIEEwIDBCIDkzIDY4IDBBIDA0IDcwIDY5IDUwIDU0IDQ5IDM0IEEx
ICAzLi4uLi5oLi5waVBUSTQuCiAgICA4MDgwOiAwRCBBMCAwQiA5MyA2OCAwQSAwNSA3MCA2OSA1
MCA1NCA0OSAzNSBBMCAwRSA5MyAgLi4uLmguLnBpUFRJNS4uLgogICAgODA5MDogNDQgNDkgNTMg
NTAgMEEgM0YgNzAgMDEgNTAgNTQgNDkgMzAgQTEgMUEgQTAgMTggIERJU1AuP3AuUFRJMC4uLi4K
ICAgIDgwQTA6IDkwIDQ0IDQ5IDUzIDMwIDdGIDdCIDQ0IDQ5IDUzIDUwIDBBIDNFIDAwIDBBIDNF
ICAuRElTMC57RElTUC4+Li4+CiAgICA4MEIwOiAwMCA3MCAwMCA1MCA1NCA0OSAzMCA3MCA1MCA1
NCA0OSA1RiA2MCA3MCAwMCA2MSAgLnAuUFRJMHBQVElfYHAuYQogICAgODBDMDogQTIgMEUgNjAg
QTAgMDcgN0IgNjAgMDEgMDAgNzUgNjEgN0EgNjAgMDEgNjAgNzAgIC4uYC4ue2AuLnVhemAuYHAK
ICAgIDgwRDA6IDc2IDYxIDRFIDRGIDUwIDU0IDcwIDAwIDU3IDU0IDQ1IDRFIDVCIDgyIDBGIDUz
ICB2YU5PUFRwLldURU5bLi5TCiAgICA4MEUwOiA0RCA0MiA1MiAwOCA1RiA0MSA0NCA1MiAwQyAw
MCAwMCAxNCAwMCA1QiA4MiA0NCAgTUJSLl9BRFIuLi4uLlsuRAogICAgODBGMDogRjkgNTMgNDIg
NTIgNDcgMDggNUYgNDEgNDQgNTIgMEMgMDMgMDAgMTQgMDAgNUIgIC5TQlJHLl9BRFIuLi4uLlsK
ICAgIDgxMDA6IDgyIDJCIDUwIDQ5IDQzIDVGIDA4IDVGIDQ4IDQ5IDQ0IDBCIDQxIEQwIDA4IDVG
ICAuK1BJQ18uX0hJRC5BLi5fCiAgICA4MTEwOiA0MyA1MiA1MyAxMSAxOCAwQSAxNSA0NyAwMSAy
MCAwMCAyMCAwMCAwMCAwMiA0NyAgQ1JTLi4uLkcuIC4gLi4uRwogICAgODEyMDogMDEgQTAgMDAg
QTAgMDAgMDAgMDIgMjIgMDQgMDAgNzkgMDAgNUIgODIgNEUgMDQgIC4uLi4uLi4iLi55LlsuTi4K
ICAgIDgxMzA6IDQ0IDREIDQxIDQ0IDA4IDVGIDQ4IDQ5IDQ0IDBDIDQxIEQwIDAyIDAwIDA4IDVG
ICBETUFELl9ISUQuQS4uLi5fCiAgICA4MTQwOiA0MyA1MiA1MyAxMSAzOCAwQSAzNSAyQSAxMCAw
NCA0NyAwMSAwMCAwMCAwMCAwMCAgQ1JTLjguNSouLkcuLi4uLgogICAgODE1MDogMDAgMTAgNDcg
MDEgODEgMDAgODEgMDAgMDAgMDMgNDcgMDEgODcgMDAgODcgMDAgIC4uRy4uLi4uLi5HLi4uLi4K
ICAgIDgxNjA6IDAwIDAxIDQ3IDAxIDg5IDAwIDg5IDAwIDAwIDAzIDQ3IDAxIDhGIDAwIDhGIDAw
ICAuLkcuLi4uLi4uRy4uLi4uCiAgICA4MTcwOiAwMCAwMSA0NyAwMSBDMCAwMCBDMCAwMCAwMCAy
MCA3OSAwMCA1QiA4MiAyNSA1NCAgLi5HLi4uLi4uIHkuWy4lVAogICAgODE4MDogNEQgNTIgNUYg
MDggNUYgNDggNDkgNDQgMEMgNDEgRDAgMDEgMDAgMDggNUYgNDMgIE1SXy5fSElELkEuLi4uX0MK
ICAgIDgxOTA6IDUyIDUzIDExIDEwIDBBIDBEIDQ3IDAxIDQwIDAwIDQwIDAwIDAwIDA0IDIyIDAx
ICBSUy4uLi5HLkAuQC4uLiIuCiAgICA4MUEwOiAwMCA3OSAwMCA1QiA4MiA0MiAwNSA1MiA1NCA0
MyAzMCAwOCA1RiA0OCA0OSA0NCAgLnkuWy5CLlJUQzAuX0hJRAogICAgODFCMDogMEMgNDEgRDAg
MEIgMDAgMDggNDIgNTUgNDYgMzAgMTEgMEQgMEEgMEEgNDcgMDEgIC5BLi4uLkJVRjAuLi4uRy4K
ICAgIDgxQzA6IDcwIDAwIDcwIDAwIDAwIDAyIDc5IDAwIDA4IDQyIDU1IDQ2IDMxIDExIDEwIDBB
ICBwLnAuLi55Li5CVUYxLi4uCiAgICA4MUQwOiAwRCA0NyAwMSA3MCAwMCA3MCAwMCAwMCAwMiAy
MiAwMCAwMSA3OSAwMCAxNCAxOCAgLkcucC5wLi4uIi4ueS4uLgogICAgODFFMDogNUYgNDMgNTIg
NTMgMDggQTAgMEMgOTMgNDggNTAgNDUgNEUgMDEgQTQgNDIgNTUgIF9DUlMuLi4uSFBFTi4uQlUK
ICAgIDgxRjA6IDQ2IDMwIEE0IDQyIDU1IDQ2IDMxIDVCIDgyIDIyIDUzIDUwIDRCIDUyIDA4IDVG
ICBGMC5CVUYxWy4iU1BLUi5fCiAgICA4MjAwOiA0OCA0OSA0NCAwQyA0MSBEMCAwOCAwMCAwOCA1
RiA0MyA1MiA1MyAxMSAwRCAwQSAgSElELkEuLi4uX0NSUy4uLgogICAgODIxMDogMEEgNDcgMDEg
NjEgMDAgNjEgMDAgMDAgMDEgNzkgMDAgNUIgODAgNTMgNEQgNDkgIC5HLmEuYS4uLnkuWy5TTUkK
ICAgIDgyMjA6IDMwIDAxIDUzIDREIDQ5IDRGIDAxIDVCIDgxIDBCIDUzIDREIDQ5IDMwIDAxIDUz
ICAwLlNNSU8uWy4uU01JMC5TCiAgICA4MjMwOiA0RCA0OSA0MyAwOCAxMCA0NyAzMCA1QyA1RiA1
MyA0MiA1RiAxMCA0RiAyRiA1MCAgTUlDLi5HMFxfU0JfLk8vUAogICAgODI0MDogNDMgNDkgMzAg
NUIgODIgNDcgMkYgNTMgMzkgMzAgMzAgMDggNUYgNDggNDkgNDQgIENJMFsuRy9TOTAwLl9ISUQK
ICAgIDgyNTA6IDBDIDQxIEQwIDBDIDAyIDA4IDVGIDU1IDQ5IDQ0IDBCIDAwIDA3IDA4IDVGIDUz
ICAuQS4uLi5fVUlELi4uLl9TCiAgICA4MjYwOiA1NCA0MSAwQSAwRiAwOCA0MyA1MiA1MyA1RiAx
MSA0MyAxNSAwQiA0RSAwMSA0NyAgVEEuLi5DUlNfLkMuLk4uRwogICAgODI3MDogMDEgMTAgMDAg
MTAgMDAgMDAgMTAgNDcgMDEgMjIgMDAgMjIgMDAgMDAgMUUgNDcgIC4uLi4uLi5HLiIuIi4uLkcK
ICAgIDgyODA6IDAxIDYzIDAwIDYzIDAwIDAwIDAxIDQ3IDAxIDY1IDAwIDY1IDAwIDAwIDAxIDQ3
ICAuYy5jLi4uRy5lLmUuLi5HCiAgICA4MjkwOiAwMSA2NyAwMCA2NyAwMCAwMCAwOSA0NyAwMSA3
MiAwMCA3MiAwMCAwMCAwRSA0NyAgLmcuZy4uLkcuci5yLi4uRwogICAgODJBMDogMDEgODAgMDAg
ODAgMDAgMDAgMDEgNDcgMDEgODQgMDAgODQgMDAgMDAgMDMgNDcgIC4uLi4uLi5HLi4uLi4uLkcK
ICAgIDgyQjA6IDAxIDg4IDAwIDg4IDAwIDAwIDAxIDQ3IDAxIDhDIDAwIDhDIDAwIDAwIDAzIDQ3
ICAuLi4uLi4uRy4uLi4uLi5HCiAgICA4MkMwOiAwMSA5MCAwMCA5MCAwMCAwMCAxMCA0NyAwMSBB
MiAwMCBBMiAwMCAwMCAxRSA0NyAgLi4uLi4uLkcuLi4uLi4uRwogICAgODJEMDogMDEgQjEgMDAg
QjEgMDAgMDAgMDEgNDcgMDEgRTAgMDAgRTAgMDAgMDAgMTAgNDcgIC4uLi4uLi5HLi4uLi4uLkcK
ICAgIDgyRTA6IDAxIEQwIDA0IEQwIDA0IDAwIDAyIDQ3IDAxIDBCIDA0IDBCIDA0IDAwIDAxIDQ3
ICAuLi4uLi4uRy4uLi4uLi5HCiAgICA4MkYwOiAwMSBENiAwNCBENiAwNCAwMCAwMSA0NyAwMSAw
MCAwQyAwMCAwQyAwMCAwMiA0NyAgLi4uLi4uLkcuLi4uLi4uRwogICAgODMwMDogMDEgMTQgMEMg
MTQgMEMgMDAgMDEgNDcgMDEgNTAgMEMgNTAgMEMgMDAgMDIgNDcgIC4uLi4uLi5HLlAuUC4uLkcK
ICAgIDgzMTA6IDAxIDUyIDBDIDUyIDBDIDAwIDAxIDQ3IDAxIDZDIDBDIDZDIDBDIDAwIDAxIDQ3
ICAuUi5SLi4uRy5sLmwuLi5HCiAgICA4MzIwOiAwMSA2RiAwQyA2RiAwQyAwMCAwMSA0NyAwMSBE
OCAwQyBEOCAwQyAwMCAwOCA0NyAgLm8uby4uLkcuLi4uLi4uRwogICAgODMzMDogMDEgMDAgMDAg
MDAgMDAgMDAgMDAgNDcgMDEgMDAgMDAgMDAgMDAgMDAgMDAgNDcgIC4uLi4uLi5HLi4uLi4uLkcK
ICAgIDgzNDA6IDAxIDAwIDAwIDAwIDAwIDAwIDAwIDQ3IDAxIDAwIDA5IDAwIDA5IDAwIDEwIDQ3
ICAuLi4uLi4uRy4uLi4uLi5HCiAgICA4MzUwOiAwMSAxMCAwOSAxMCAwOSAwMCAxMCA0NyAwMSA2
MCAwMCA2MCAwMCAwMCAwMCA0NyAgLi4uLi4uLkcuYC5gLi4uRwogICAgODM2MDogMDEgNjQgMDAg
NjQgMDAgMDAgMDAgODYgMDkgMDAgMDEgMDAgMDAgMDAgMDAgMDAgIC5kLmQuLi4uLi4uLi4uLi4K
ICAgIDgzNzA6IDAwIDAwIDAwIDg2IDA5IDAwIDAxIDAwIDAwIERDIEZFIDAwIDEwIDAwIDAwIDg2
ICAuLi4uLi4uLi4uLi4uLi4uCiAgICA4MzgwOiAwOSAwMCAwMSAwMCAwMCBFMCBGRSAwMCAxMCAw
MCAwMCA4NiAwOSAwMCAwMSAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgODM5MDogMDAgRDggRkUg
MDAgMDAgMDEgMDAgODYgMDkgMDAgMDEgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4K
ICAgIDgzQTA6IDAwIDAwIDAwIDg2IDA5IDAwIDAxIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDg2
ICAuLi4uLi4uLi4uLi4uLi4uCiAgICA4M0IwOiAwOSAwMCAwMSAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCA3OSAwMCAxNCA0RSAxNyAgLi4uLi4uLi4uLi55Li5OLgogICAgODNDMDogNUYgNDMgNTIg
NTMgMDAgOEIgNDMgNTIgNTMgNUYgMEEgQzIgNTAgNDIgNDIgNUYgIF9DUlMuLkNSU18uLlBCQl8K
ICAgIDgzRDA6IDhCIDQzIDUyIDUzIDVGIDBBIEM0IDUwIDQyIDQ4IDVGIDhDIDQzIDUyIDUzIDVG
ICAuQ1JTXy4uUEJIXy5DUlNfCiAgICA4M0UwOiAwQSBDNyA1MCA0RCA0QyA1RiA3MCA1MCA0RCA0
MiA1MyA1MCA0MiA0MiA1RiA3MCAgLi5QTUxfcFBNQlNQQkJfcAogICAgODNGMDogNTAgNEQgNDIg
NTMgNTAgNDIgNDggNUYgNzAgNTAgNEQgNEMgNEUgNTAgNEQgNEMgIFBNQlNQQkhfcFBNTE5QTUwK
ICAgIDg0MDA6IDVGIEEwIDRFIDA3IDUzIDREIDQyIDQyIDhCIDQzIDUyIDUzIDVGIDBBIEQyIDUz
ICBfLk4uU01CQi5DUlNfLi5TCiAgICA4NDEwOiA0RCA0MiAzMSA4QiA0MyA1MiA1MyA1RiAwQSBE
NCA1MyA0RCA0OCAzMSA4QyA0MyAgTUIxLkNSU18uLlNNSDEuQwogICAgODQyMDogNTIgNTMgNUYg
MEEgRDcgNTMgNEQgNEMgMzEgNzAgNTMgNEQgNDIgNDIgNTMgNEQgIFJTXy4uU01MMXBTTUJCU00K
ICAgIDg0MzA6IDQyIDMxIDcwIDUzIDREIDQyIDQyIDUzIDREIDQ4IDMxIDcwIDUzIDREIDQyIDRD
ICBCMXBTTUJCU01IMXBTTUJMCiAgICA4NDQwOiA1MyA0RCA0QyAzMSA4QiA0MyA1MiA1MyA1RiAw
QSBDQSA1MyA0RCA0MiA1QSA4QiAgU01MMS5DUlNfLi5TTUJaLgogICAgODQ1MDogNDMgNTIgNTMg
NUYgMEEgQ0MgNTMgNEQgNDggMzAgOEMgNDMgNTIgNTMgNUYgMEEgIENSU18uLlNNSDAuQ1JTXy4K
ICAgIDg0NjA6IENGIDUzIDREIDRDIDMwIDcwIDUzIDREIDQyIDMwIDUzIDREIDQyIDVBIDcwIDUz
ICAuU01MMHBTTUIwU01CWnBTCiAgICA4NDcwOiA0RCA0MiAzMCA1MyA0RCA0OCAzMCA3MCA1MyA0
RCA0MiA0RCA1MyA0RCA0QyAzMCAgTUIwU01IMHBTTUJNU01MMAogICAgODQ4MDogQTAgMkUgNDEg
NTAgNDMgNDIgOEEgNDMgNTIgNTMgNUYgMEEgRkMgNDEgNTAgNDIgIC4uQVBDQi5DUlNfLi5BUEIK
ICAgIDg0OTA6IDVGIDhBIDQzIDUyIDUzIDVGIDBCIDAwIDAxIDQxIDUwIDRDIDVGIDcwIDQxIDUw
ICBfLkNSU18uLi5BUExfcEFQCiAgICA4NEEwOiA0MyA0MiA0MSA1MCA0MiA1RiA3MCA0MSA1MCA0
MyA0QyA0MSA1MCA0QyA1RiA4QSAgQ0JBUEJfcEFQQ0xBUExfLgogICAgODRCMDogNDMgNTIgNTMg
NUYgMEIgMkMgMDEgNTMgNTAgNDkgNDIgOEEgNDMgNTIgNTMgNUYgIENSU18uLC5TUElCLkNSU18K
ICAgIDg0QzA6IDBCIDMwIDAxIDUzIDUwIDQ5IDRDIDcwIDBDIDAwIDAwIEMxIEZFIDUzIDUwIDQ5
ICAuMC5TUElMcC4uLi4uU1BJCiAgICA4NEQwOiA0MiA3MCAwQiAwMCAxMCA1MyA1MCA0OSA0QyBB
MCAzMSA1NyA0NCA1NCA0MiA4QSAgQnAuLi5TUElMLjFXRFRCLgogICAgODRFMDogNDMgNTIgNTMg
NUYgMEIgMzggMDEgNTcgNDQgNTQgNDIgOEEgNDMgNTIgNTMgNUYgIENSU18uOC5XRFRCLkNSU18K
ICAgIDg0RjA6IDBCIDNDIDAxIDU3IDQ0IDU0IDRDIDcwIDVDIDU3IDQ0IDU0IDQyIDU3IDQ0IDU0
ICAuPC5XRFRMcFxXRFRCV0RUCiAgICA4NTAwOiA0MiA3MCA1QyA1NyA0NCA1NCA0QyA1NyA0NCA1
NCA0QyA4QSA0MyA1MiA1MyA1RiAgQnBcV0RUTFdEVEwuQ1JTXwogICAgODUxMDogMEIgNDQgMDEg
NTIgNEYgNEQgNDIgOEEgNDMgNTIgNTMgNUYgMEIgNDggMDEgNTIgIC5ELlJPTUIuQ1JTXy5ILlIK
ICAgIDg1MjA6IDRGIDREIDRDIDcwIDBDIDAwIDAwIDAwIEZGIDUyIDRGIDREIDQyIDcwIDBDIDAw
ICBPTUxwLi4uLi5ST01CcC4uCiAgICA4NTMwOiAwMCAwMCAwMSA1MiA0RiA0RCA0QyBBNCA0MyA1
MiA1MyA1RiAxMCAzMiA1QyA1RiAgLi4uUk9NTC5DUlNfLjJcXwogICAgODU0MDogNTMgNDIgNUYg
MTAgMkIgNTAgNDMgNDkgMzAgMTAgMjUgNTMgNDIgNTIgNDcgMTQgIFNCXy4rUENJMC4lU0JSRy4K
ICAgIDg1NTA6IDBGIDUyIDUyIDQ5IDRGIDA0IDcwIDBEIDUyIDUyIDQ5IDRGIDAwIDVCIDMxIDE0
ICAuUlJJTy5wLlJSSU8uWzEuCiAgICA4NTYwOiAwRiA1MiA0NCA0RCA0MSAwMyA3MCAwRCA3MiA0
NCA0RCA0MSAwMCA1QiAzMSA1QiAgLlJETUEucC5yRE1BLlsxWwogICAgODU3MDogODIgNDcgQTAg
NTMgNDkgNEYgMzEgMDggNUYgNDggNDkgNDQgMEMgNDEgRDAgMEMgIC5HLlNJTzEuX0hJRC5BLi4K
ICAgIDg1ODA6IDAyIDA4IDVGIDU1IDQ5IDQ0IDAwIDA4IDQzIDUyIDUzIDVGIDExIDJEIDBBIDJB
ICAuLl9VSUQuLkNSU18uLS4qCiAgICA4NTkwOiA0NyAwMSAwMCAwMCAwMCAwMCAwMCAwMCA0NyAw
MSAwMCAwMCAwMCAwMCAwMCAwMCAgRy4uLi4uLi5HLi4uLi4uLgogICAgODVBMDogNDcgMDEgMDAg
MDAgMDAgMDAgMDAgMDAgNDcgMDEgMDAgMDAgMDAgMDAgMDAgMDAgIEcuLi4uLi4uRy4uLi4uLi4K
ICAgIDg1QjA6IDQ3IDAxIDAwIDAwIDAwIDAwIDAwIDAwIDc5IDAwIDE0IDQ1IDE2IDVGIDQzIDUy
ICBHLi4uLi4uLnkuLkUuX0NSCiAgICA4NUMwOiA1MyAwMCBBMCA0QyAwNCA5MCA5NSA1MyA1MCAz
MSA0RiAwQiBGMCAwMyA5NCA1MyAgUy4uTC4uLlNQMU8uLi4uUwogICAgODVEMDogNTAgMzEgNEYg
MEEgRjAgOEIgNDMgNTIgNTMgNUYgMEEgMDIgNDcgNTAgNDkgMzAgIFAxTy4uLkNSU18uLkdQSTAK
ICAgIDg1RTA6IDhCIDQzIDUyIDUzIDVGIDBBIDA0IDQ3IDUwIDQ5IDMxIDhDIDQzIDUyIDUzIDVG
ICAuQ1JTXy4uR1BJMS5DUlNfCiAgICA4NUYwOiAwQSAwNyA0NyA1MCA0OSA0QyA3MCA1MyA1MCAz
MSA0RiA0NyA1MCA0OSAzMCA3MCAgLi5HUElMcFNQMU9HUEkwcAogICAgODYwMDogNTMgNTAgMzEg
NEYgNDcgNTAgNDkgMzEgNzAgMEEgMDIgNDcgNTAgNDkgNEMgQTAgIFNQMU9HUEkxcC4uR1BJTC4K
ICAgIDg2MTA6IDQyIDA0IDQ5IDRGIDMxIDQyIDhCIDQzIDUyIDUzIDVGIDBBIDBBIDQ3IDUwIDMx
ICBCLklPMUIuQ1JTXy4uR1AxCiAgICA4NjIwOiAzMCA4QiA0MyA1MiA1MyA1RiAwQSAwQyA0NyA1
MCAzMSAzMSA4QyA0MyA1MiA1MyAgMC5DUlNfLi5HUDExLkNSUwogICAgODYzMDogNUYgMEEgMEYg
NDcgNTAgNEMgMzEgNzAgNDkgNEYgMzEgNDIgNDcgNTAgMzEgMzAgIF8uLkdQTDFwSU8xQkdQMTAK
ICAgIDg2NDA6IDcwIDQ5IDRGIDMxIDQyIDQ3IDUwIDMxIDMxIDcwIDQ5IDRGIDMxIDRDIDQ3IDUw
ICBwSU8xQkdQMTFwSU8xTEdQCiAgICA4NjUwOiA0QyAzMSBBMCA0MiAwNCA0OSA0RiAzMiA0MiA4
QiA0MyA1MiA1MyA1RiAwQSAxMiAgTDEuQi5JTzJCLkNSU18uLgogICAgODY2MDogNDcgNTAgMzIg
MzAgOEIgNDMgNTIgNTMgNUYgMEEgMTQgNDcgNTAgMzIgMzEgOEMgIEdQMjAuQ1JTXy4uR1AyMS4K
ICAgIDg2NzA6IDQzIDUyIDUzIDVGIDBBIDE3IDQ3IDUwIDRDIDMyIDcwIDQ5IDRGIDMyIDQyIDQ3
ICBDUlNfLi5HUEwycElPMkJHCiAgICA4NjgwOiA1MCAzMiAzMCA3MCA0OSA0RiAzMiA0MiA0NyA1
MCAzMiAzMSA3MCA0OSA0RiAzMiAgUDIwcElPMkJHUDIxcElPMgogICAgODY5MDogNEMgNDcgNTAg
NEMgMzIgQTAgNDIgMDQgNDkgNEYgMzMgNDIgOEIgNDMgNTIgNTMgIExHUEwyLkIuSU8zQi5DUlMK
ICAgIDg2QTA6IDVGIDBBIDFBIDQ3IDUwIDMzIDMwIDhCIDQzIDUyIDUzIDVGIDBBIDFDIDQ3IDUw
ICBfLi5HUDMwLkNSU18uLkdQCiAgICA4NkIwOiAzMyAzMSA4QyA0MyA1MiA1MyA1RiAwQSAxRiA0
NyA1MCA0QyAzMyA3MCA0OSA0RiAgMzEuQ1JTXy4uR1BMM3BJTwogICAgODZDMDogMzMgNDIgNDcg
NTAgMzMgMzAgNzAgNDkgNEYgMzMgNDIgNDcgNTAgMzMgMzEgNzAgIDNCR1AzMHBJTzNCR1AzMXAK
ICAgIDg2RDA6IDQ5IDRGIDMzIDRDIDQ3IDUwIDRDIDMzIEEwIDQyIDA0IDQ5IDRGIDM0IDQyIDhC
ICBJTzNMR1BMMy5CLklPNEIuCiAgICA4NkUwOiA0MyA1MiA1MyA1RiAwQSAyMiA0NyA1MCAzNCAz
MCA4QiA0MyA1MiA1MyA1RiAwQSAgQ1JTXy4iR1A0MC5DUlNfLgogICAgODZGMDogMjQgNDcgNTAg
MzQgMzEgOEMgNDMgNTIgNTMgNUYgMEEgMjcgNDcgNTAgNEMgMzQgICRHUDQxLkNSU18uJ0dQTDQK
ICAgIDg3MDA6IDcwIDQ5IDRGIDM0IDQyIDQ3IDUwIDM0IDMwIDcwIDQ5IDRGIDM0IDQyIDQ3IDUw
ICBwSU80QkdQNDBwSU80QkdQCiAgICA4NzEwOiAzNCAzMSA3MCA0OSA0RiAzNCA0QyA0NyA1MCA0
QyAzNCBBNCA0MyA1MiA1MyA1RiAgNDFwSU80TEdQTDQuQ1JTXwogICAgODcyMDogMDggNDQgNDMg
NDEgNTQgMTIgMkIgMTUgMEEgMDIgMEEgMDMgMDEgMEEgRkYgMEEgIC5EQ0FULisuLi4uLi4uLi4K
ICAgIDg3MzA6IEZGIDBBIEZGIDBBIEZGIDBBIEZGIDBBIEZGIDBBIEZGIDBBIDA1IDBBIEZGIDBB
ICAuLi4uLi4uLi4uLi4uLi4uCiAgICA4NzQwOiBGRiAwQSBGRiAwQSAwNSAwQSBGRiAwQSAwNiAw
QSBGRiAwQSBGRiAwQSBGRiAwQSAgLi4uLi4uLi4uLi4uLi4uLgogICAgODc1MDogRkYgNUIgMDEg
NEQgNTUgNTQgMzAgMDAgMTQgMjYgNDUgNEUgNDYgNDcgMDEgNUIgIC5bLk1VVDAuLiZFTkZHLlsK
ICAgIDg3NjA6IDIzIDREIDU1IDU0IDMwIEZGIDBGIDcwIDQ1IDRFIDU0IDRCIDQ5IDRFIDQ0IDU4
ICAjTVVUMC4ucEVOVEtJTkRYCiAgICA4NzcwOiA3MCA0NSA0RSA1NCA0QiA0OSA0RSA0NCA1OCA3
MCA2OCA0QyA0NCA0RSA1RiAxNCAgcEVOVEtJTkRYcGhMRE5fLgogICAgODc4MDogMTUgNDUgNTgg
NDYgNDcgMDAgNzAgNDUgNTggNTQgNEIgNDkgNEUgNDQgNTggNUIgIC5FWEZHLnBFWFRLSU5EWFsK
ICAgIDg3OTA6IDI3IDREIDU1IDU0IDMwIDE0IDFEIDRDIDUwIDU0IDREIDAxIDQ1IDRFIDQ2IDQ3
ICAnTVVUMC4uTFBUTS5FTkZHCiAgICA4N0EwOiA0MyA0NyA0QyA0NCA2OCA3QiA0RiA1MCA1NCAz
MCAwQSAwMiA2MCA0NSA1OCA0NiAgQ0dMRGh7T1BUMC4uYEVYRgogICAgODdCMDogNDcgQTQgNjAg
MTQgMkMgNTUgNDggNDkgNDQgMDEgNDUgNEUgNDYgNDcgNDMgNDcgIEcuYC4sVUhJRC5FTkZHQ0cK
ICAgIDg3QzA6IDRDIDQ0IDY4IDdCIDRGIDUwIDU0IDMxIDBBIDEwIDYwIDQ1IDU4IDQ2IDQ3IEEw
ICBMRGh7T1BUMS4uYEVYRkcuCiAgICA4N0QwOiAwOCA2MCBBNCAwQyA0MSBEMCAwNSAxMCBBMSAw
NyBBNCAwQyA0MSBEMCAwNSAwMSAgLmAuLkEuLi4uLi4uQS4uLgogICAgODdFMDogNUIgODAgNDkg
NEYgNDkgNDQgMDEgNTMgNTAgMzEgNEYgMEEgMDIgNUIgODEgMTAgIFsuSU9JRC5TUDFPLi5bLi4K
ICAgIDg3RjA6IDQ5IDRGIDQ5IDQ0IDAxIDQ5IDRFIDQ0IDU4IDA4IDQ0IDQxIDU0IDQxIDA4IDVC
ICBJT0lELklORFguREFUQS5bCiAgICA4ODAwOiA4NiA0RCAwRSA0OSA0RSA0NCA1OCA0NCA0MSA1
NCA0MSAwMSAwMCAzOCA0QyA0NCAgLk0uSU5EWERBVEEuLjhMRAogICAgODgxMDogNEUgNUYgMDgg
MDAgNDggMEMgNTMgNDMgNDYgMzEgMDggMDAgMDAgNTMgNDMgNDYgIE5fLi5ILlNDRjEuLi5TQ0YK
ICAgIDg4MjA6IDMyIDA4IDAwIDAwIDUzIDQzIDQ2IDMzIDA4IDAwIDAwIDUzIDQzIDQ2IDM0IDA4
ICAyLi4uU0NGMy4uLlNDRjQuCiAgICA4ODMwOiAwMCAwMCA1MyA0MyA0NiAzNSAwOCAwMCAwMCA1
MyA0MyA0NiAzNiAwOCAwMCAxMCAgLi5TQ0Y1Li4uU0NGNi4uLgogICAgODg0MDogNDMgNEIgNDMg
NDYgMDggMDAgMTggNDMgNTIgMzIgNDQgMDggMDAgMDggNTMgNDMgIENLQ0YuLi5DUjJELi4uU0MK
ICAgIDg4NTA6IDQ2IDQ2IDA4IDAwIDAwIDQxIDQzIDU0IDUyIDA4IDAwIDQ4IDE3IDQ5IDRGIDQx
ICBGRi4uLkFDVFIuLkguSU9BCiAgICA4ODYwOiA0OCAwOCA0OSA0RiA0MSA0QyAwOCA0OSA0RiA0
OCAzMiAwOCA0OSA0RiA0QyAzMiAgSC5JT0FMLklPSDIuSU9MMgogICAgODg3MDogMDggMDAgNDAg
MDYgNDkgNEUgNTQgNTIgMDQgNDkgNEUgNTQgNTQgMDQgMDAgMTggIC4uQC5JTlRSLklOVFQuLi4K
ICAgIDg4ODA6IDQ0IDREIDQzIDQ4IDA4IDAwIDQ4IDM1IDUyIDQ3IDQ1IDMwIDA4IDUyIDQ3IDQ1
ICBETUNILi5INVJHRTAuUkdFCiAgICA4ODkwOiAzMSAwOCA1MiA0NyA0NSAzMiAwOCA1MiA0NyA0
NSAzMyAwOCA1MiA0NyA0NSAzNCAgMS5SR0UyLlJHRTMuUkdFNAogICAgODhBMDogMDggNTIgNDcg
NDUgMzUgMDggNTIgNDcgNDUgMzYgMDggNTIgNDcgNDUgMzcgMDggIC5SR0U1LlJHRTYuUkdFNy4K
ICAgIDg4QjA6IDUyIDQ3IDQ1IDM4IDA4IDUyIDQ3IDQ1IDM5IDA4IDAwIDMwIDRGIDUwIDU0IDMw
ICBSR0U4LlJHRTkuLjBPUFQwCiAgICA4OEMwOiAwOCA0RiA1MCA1NCAzMSAwOCA0RiA1MCA1NCAz
MiAwOCA0RiA1MCA1NCAzMyAwOCAgLk9QVDEuT1BUMi5PUFQzLgogICAgODhEMDogNEYgNTAgNTQg
MzQgMDggNEYgNTAgNTQgMzUgMDggNEYgNTAgNTQgMzYgMDggNEYgIE9QVDQuT1BUNS5PUFQ2Lk8K
ICAgIDg4RTA6IDUwIDU0IDM3IDA4IDRGIDUwIDU0IDM4IDA4IDRGIDUwIDU0IDM5IDA4IDE0IDBG
ICBQVDcuT1BUOC5PUFQ5Li4uCiAgICA4OEYwOiA0MyA0NyA0QyA0NCAwMSBBNCA4MyA4OCA0NCA0
MyA0MSA1NCA2OCAwMCAxNCA0RSAgQ0dMRC4uLi5EQ0FUaC4uTgogICAgODkwMDogMDUgNDQgNTMg
NTQgNDEgMDEgNDUgNEUgNDYgNDcgNDMgNDcgNEMgNDQgNjggNzAgIC5EU1RBLkVORkdDR0xEaHAK
ICAgIDg5MTA6IDQxIDQzIDU0IDUyIDYwIDQ1IDU4IDQ2IDQ3IEEwIDA3IDkzIDYwIDBBIEZGIEE0
ICBBQ1RSYEVYRkcuLi5gLi4uCiAgICA4OTIwOiAwMCA3QiA2MCAwMSA2MCBBMCAxMiA5NSA2OCAw
QSAxMCA3RCA0OSA0RiA1MyA1NCAgLntgLmAuLi5oLi59SU9TVAogICAgODkzMDogNzkgNjAgNjgg
MDAgNDkgNEYgNTMgNTQgQTAgMDUgNjAgQTQgMEEgMEYgQTEgMUUgIHlgaC5JT1NULi5gLi4uLi4K
ICAgIDg5NDA6IEEwIDE4IDk1IDY4IDBBIDEwIEEwIDBFIDdCIDc5IDAxIDY4IDAwIDQ5IDRGIDUz
ICAuLi5oLi4uLnt5LmguSU9TCiAgICA4OTUwOiA1NCAwMCBBNCAwQSAwRCBBMSAwMyBBNCAwMCBB
MSAwMyBBNCAwMCAxNCA0NiAwNiAgVC4uLi4uLi4uLi4uLi5GLgogICAgODk2MDogNDUgNTMgNTQg
NDEgMDEgNDUgNEUgNDYgNDcgNDMgNDcgNEMgNDQgNjggNzAgNDEgIEVTVEEuRU5GR0NHTERocEEK
ICAgIDg5NzA6IDQzIDU0IDUyIDYwIDQ1IDU4IDQ2IDQ3IEEwIDA3IDkzIDYwIDBBIEZGIEE0IDAw
ICBDVFJgRVhGRy4uLmAuLi4uCiAgICA4OTgwOiA3QiA2MCAwMSA2MCBBMCAxNiA5NCA2OCAwQSAw
RiA3RCA0OSA0RiA0NSA1MyA3OSAge2AuYC4uLmguLn1JT0VTeQogICAgODk5MDogNjAgN0IgNjgg
MEEgMEYgMDAgMDAgNDkgNEYgNDUgNTMgQTAgMDUgNjAgQTQgMEEgIGB7aC4uLi5JT0VTLi5gLi4K
ICAgIDg5QTA6IDBGIEExIDIyIEEwIDFDIDk0IDY4IDBBIDBGIEEwIDEyIDdCIDc5IDAxIDdCIDY4
ICAuLiIuLi5oLi4uLnt5LntoCiAgICA4OUIwOiAwQSAwRiAwMCAwMCA0OSA0RiA0NSA1MyAwMCBB
NCAwQSAwRCBBMSAwMyBBNCAwMCAgLi4uLklPRVMuLi4uLi4uLgogICAgODlDMDogQTEgMDMgQTQg
MDAgMTQgNEYgMDQgNDQgNDMgNEUgNTQgMDIgNDUgNEUgNDYgNDcgIC4uLi4uTy5EQ05ULkVORkcK
ICAgIDg5RDA6IDQzIDQ3IDRDIDQ0IDY4IEEwIDFDIDkwIDk1IDQ0IDREIDQzIDQ4IDBBIDA0IDky
ICBDR0xEaC4uLi5ETUNILi4uCiAgICA4OUUwOiA5MyA3QiA0NCA0RCA0MyA0OCAwQSAwMyA2MSAw
MCA1MiA0NCA0RCA0MSA2OCA2OSAgLntETUNILi5hLlJETUFoaQogICAgODlGMDogNzUgNjEgNzAg
NjkgNDEgNDMgNTQgNTIgNzkgNDkgNEYgNDEgNDggMEEgMDggNjEgIHVhcGlBQ1RSeUlPQUguLmEK
ICAgIDhBMDA6IDdEIDQ5IDRGIDQxIDRDIDYxIDYxIDUyIDUyIDQ5IDRGIDY4IDY5IDYxIDBBIDA4
ICB9SU9BTGFhUlJJT2hpYS4uCiAgICA4QTEwOiA0NSA1OCA0NiA0NyAwOCA0MyA1MiA1MyAzMSAx
MSAxMyAwQSAxMCA0NyAwMSAwMCAgRVhGRy5DUlMxLi4uLkcuLgogICAgOEEyMDogMDAgMDAgMDAg
MDEgMDAgMjIgMDAgMDAgMkEgMDAgMDAgNzkgMDAgOEIgNDMgNTIgIC4uLi4uIi4uKi4ueS4uQ1IK
ICAgIDhBMzA6IDUzIDMxIDBBIDA5IDQ5IDUyIDUxIDREIDhDIDQzIDUyIDUzIDMxIDBBIDBDIDQ0
ICBTMS4uSVJRTS5DUlMxLi5ECiAgICA4QTQwOiA0RCA0MSA0RCA4QiA0MyA1MiA1MyAzMSAwQSAw
MiA0OSA0RiAzMSAzMSA4QiA0MyAgTUFNLkNSUzEuLklPMTEuQwogICAgOEE1MDogNTIgNTMgMzEg
MEEgMDQgNDkgNEYgMzEgMzIgOEMgNDMgNTIgNTMgMzEgMEEgMDcgIFJTMS4uSU8xMi5DUlMxLi4K
ICAgIDhBNjA6IDRDIDQ1IDRFIDMxIDA4IDQzIDUyIDUzIDMyIDExIDFCIDBBIDE4IDQ3IDAxIDAw
ICBMRU4xLkNSUzIuLi4uRy4uCiAgICA4QTcwOiAwMCAwMCAwMCAwMSAwMCA0NyAwMSAwMCAwMCAw
MCAwMCAwMSAwMCAyMiAwMCAwMCAgLi4uLi5HLi4uLi4uLiIuLgogICAgOEE4MDogMkEgMDAgMDAg
NzkgMDAgOEIgNDMgNTIgNTMgMzIgMEEgMTEgNDkgNTIgNTEgNDUgICouLnkuLkNSUzIuLklSUUUK
ICAgIDhBOTA6IDhDIDQzIDUyIDUzIDMyIDBBIDE0IDQ0IDREIDQxIDQ1IDhCIDQzIDUyIDUzIDMy
ICAuQ1JTMi4uRE1BRS5DUlMyCiAgICA4QUEwOiAwQSAwMiA0OSA0RiAzMiAzMSA4QiA0MyA1MiA1
MyAzMiAwQSAwNCA0OSA0RiAzMiAgLi5JTzIxLkNSUzIuLklPMgogICAgOEFCMDogMzIgOEMgNDMg
NTIgNTMgMzIgMEEgMDcgNEMgNDUgNEUgMzIgOEIgNDMgNTIgNTMgIDIuQ1JTMi4uTEVOMi5DUlMK
ICAgIDhBQzA6IDMyIDBBIDBBIDQ5IDRGIDMzIDMxIDhCIDQzIDUyIDUzIDMyIDBBIDBDIDQ5IDRG
ICAyLi5JTzMxLkNSUzIuLklPCiAgICA4QUQwOiAzMyAzMiA4QyA0MyA1MiA1MyAzMiAwQSAwRiA0
QyA0NSA0RSAzMyAwOCA0MyA1MiAgMzIuQ1JTMi4uTEVOMy5DUgogICAgOEFFMDogNTMgMzMgMTEg
MTQgMEEgMTEgNDcgMDEgMDAgMDAgMDAgMDAgMDEgMDAgMjMgMDAgIFMzLi4uLkcuLi4uLi4uIy4K
ICAgIDhBRjA6IDAwIDE4IDJBIDAwIDAwIDc5IDAwIDhCIDQzIDUyIDUzIDMzIDBBIDA5IDQ5IDUy
ICAuLiouLnkuLkNSUzMuLklSCiAgICA4QjAwOiA1MSA1NCA4QyA0MyA1MiA1MyAzMyAwQSAwQiA0
OSA1MiA1MSA1MyA4QyA0MyA1MiAgUVQuQ1JTMy4uSVJRUy5DUgogICAgOEIxMDogNTMgMzMgMEEg
MEQgNDQgNEQgNDEgNTQgOEIgNDMgNTIgNTMgMzMgMEEgMDIgNDkgIFMzLi5ETUFULkNSUzMuLkkK
ICAgIDhCMjA6IDRGIDM0IDMxIDhCIDQzIDUyIDUzIDMzIDBBIDA0IDQ5IDRGIDM0IDMyIDhDIDQz
ICBPNDEuQ1JTMy4uSU80Mi5DCiAgICA4QjMwOiA1MiA1MyAzMyAwQSAwNyA0QyA0NSA0RSAzNCAx
NCA0RCAwNyA0NCA0MyA1MiA1MyAgUlMzLi5MRU40Lk0uRENSUwogICAgOEI0MDogMDIgNDUgNEUg
NDYgNDcgNDMgNDcgNEMgNDQgNjggNzkgNDkgNEYgNDEgNDggMEEgIC5FTkZHQ0dMRGh5SU9BSC4K
ICAgIDhCNTA6IDA4IDQ5IDRGIDMxIDMxIDdEIDQ5IDRGIDQxIDRDIDQ5IDRGIDMxIDMxIDQ5IDRG
ICAuSU8xMX1JT0FMSU8xMUlPCiAgICA4QjYwOiAzMSAzMSA3MCA0OSA0RiAzMSAzMSA0OSA0RiAz
MSAzMiA3MCAwQSAwOCA0QyA0NSAgMTFwSU8xMUlPMTJwLi5MRQogICAgOEI3MDogNEUgMzEgQTAg
MEYgNDkgNEUgNTQgNTIgNzkgMDEgNDkgNEUgNTQgNTIgNDkgNTIgIE4xLi5JTlRSeS5JTlRSSVIK
ICAgIDhCODA6IDUxIDREIEExIDA3IDcwIDAwIDQ5IDUyIDUxIDREIEEwIDEyIDkxIDk0IDQ0IDRE
ICBRTS4ucC5JUlFNLi4uLkRNCiAgICA4QjkwOiA0MyA0OCAwQSAwMyA5MyA2OSAwMCA3MCAwMCA0
NCA0RCA0MSA0RCBBMSAxMCA3QiAgQ0guLi5pLnAuRE1BTS4uewogICAgOEJBMDogNDQgNEQgNDMg
NDggMEEgMDMgNjEgNzkgMDEgNjEgNDQgNEQgNDEgNEQgNDUgNTggIERNQ0guLmF5LmFETUFNRVgK
ICAgIDhCQjA6IDQ2IDQ3IEE0IDQzIDUyIDUzIDMxIDE0IDQ1IDBBIDQ0IDQzIDUyIDMyIDAyIDQ1
ICBGRy5DUlMxLkUuRENSMi5FCiAgICA4QkMwOiA0RSA0NiA0NyA0MyA0NyA0QyA0NCA2OCA3OSA0
OSA0RiA0MSA0OCAwQSAwOCA0OSAgTkZHQ0dMRGh5SU9BSC4uSQogICAgOEJEMDogNEYgMzIgMzEg
N0QgNDkgNEYgNDEgNEMgNDkgNEYgMzIgMzEgNDkgNEYgMzIgMzEgIE8yMX1JT0FMSU8yMUlPMjEK
ICAgIDhCRTA6IDcwIDQ5IDRGIDMyIDMxIDQ5IDRGIDMyIDMyIDcwIDBBIDA4IDRDIDQ1IDRFIDMy
ICBwSU8yMUlPMjJwLi5MRU4yCiAgICA4QkYwOiA3OSA0OSA0RiA0OCAzMiAwQSAwOCA0OSA0RiAz
MyAzMSA3RCA0OSA0RiA0QyAzMiAgeUlPSDIuLklPMzF9SU9MMgogICAgOEMwMDogNDkgNEYgMzMg
MzEgNDkgNEYgMzMgMzEgNzAgNDkgNEYgMzMgMzEgNDkgNEYgMzMgIElPMzFJTzMxcElPMzFJTzMK
ICAgIDhDMTA6IDMyIDcwIDBBIDA4IDRDIDQ1IDRFIDMzIEEwIDBGIDQ5IDRFIDU0IDUyIDc5IDAx
ICAycC4uTEVOMy4uSU5UUnkuCiAgICA4QzIwOiA0OSA0RSA1NCA1MiA0OSA1MiA1MSA0NSBBMSAw
NyA3MCAwMCA0OSA1MiA1MSA0NSAgSU5UUklSUUUuLnAuSVJRRQogICAgOEMzMDogQTAgMTIgOTEg
OTQgNDQgNEQgNDMgNDggMEEgMDMgOTMgNjkgMDAgNzAgMDAgNDQgIC4uLi5ETUNILi4uaS5wLkQK
ICAgIDhDNDA6IDREIDQxIDQ1IEExIDEwIDdCIDQ0IDREIDQzIDQ4IDBBIDAzIDYxIDc5IDAxIDYx
ICBNQUUuLntETUNILi5heS5hCiAgICA4QzUwOiA0NCA0RCA0MSA0NSA0NSA1OCA0NiA0NyBBNCA0
MyA1MiA1MyAzMiAxNCA0RCAwNyAgRE1BRUVYRkcuQ1JTMi5NLgogICAgOEM2MDogNDQgNDMgNTIg
MzMgMDIgNDUgNEUgNDYgNDcgNDMgNDcgNEMgNDQgNjggNzkgNDkgIERDUjMuRU5GR0NHTERoeUkK
ICAgIDhDNzA6IDRGIDQxIDQ4IDBBIDA4IDQ5IDRGIDM0IDMxIDdEIDQ5IDRGIDQxIDRDIDQ5IDRG
ICBPQUguLklPNDF9SU9BTElPCiAgICA4QzgwOiAzNCAzMSA0OSA0RiAzNCAzMSA3MCA0OSA0RiAz
NCAzMSA0OSA0RiAzNCAzMiA3MCAgNDFJTzQxcElPNDFJTzQycAogICAgOEM5MDogMEEgMDggNEMg
NDUgNEUgMzQgQTAgMEYgNDkgNEUgNTQgNTIgNzkgMDEgNDkgNEUgIC4uTEVONC4uSU5UUnkuSU4K
ICAgIDhDQTA6IDU0IDUyIDQ5IDUyIDUxIDU0IEExIDA3IDcwIDAwIDQ5IDUyIDUxIDU0IEEwIDEy
ICBUUklSUVQuLnAuSVJRVC4uCiAgICA4Q0IwOiA5MSA5NCA0NCA0RCA0MyA0OCAwQSAwMyA5MyA2
OSAwMCA3MCAwMCA0NCA0RCA0MSAgLi5ETUNILi4uaS5wLkRNQQogICAgOENDMDogNTQgQTEgMTAg
N0IgNDQgNEQgNDMgNDggMEEgMDMgNjEgNzkgMDEgNjEgNDQgNEQgIFQuLntETUNILi5heS5hRE0K
ICAgIDhDRDA6IDQxIDU0IDQ1IDU4IDQ2IDQ3IEE0IDQzIDUyIDUzIDMzIDE0IDQ1IDA5IDQ0IDUz
ICBBVEVYRkcuQ1JTMy5FLkRTCiAgICA4Q0UwOiA1MiA1MyAwMiBBMCAxMiA3QiA5MyA2OSAwQSAw
MiA0QyA1MCA1NCA0RCA2OSAwMCAgUlMuLi57LmkuLkxQVE1pLgogICAgOENGMDogNDQgNTMgNTIg
MzIgNjggNjkgQTEgNEEgMDcgOEIgNjggMEEgMDkgNDkgNTIgNTEgIERTUjJoaS5KLi5oLi5JUlEK
ICAgIDhEMDA6IDREIDhDIDY4IDBBIDBDIDQ0IDREIDQxIDREIDhCIDY4IDBBIDAyIDQ5IDRGIDMx
ICBNLmguLkRNQU0uaC4uSU8xCiAgICA4RDEwOiAzMSA0NSA0RSA0NiA0NyA0MyA0NyA0QyA0NCA2
OSA3QiA0OSA0RiAzMSAzMSAwQSAgMUVORkdDR0xEaXtJTzExLgogICAgOEQyMDogRkYgNDkgNEYg
NDEgNEMgN0EgNDkgNEYgMzEgMzEgMEEgMDggNDkgNEYgNDEgNDggIC5JT0FMeklPMTEuLklPQUgK
ICAgIDhEMzA6IEEwIDEyIDQ5IDUyIDUxIDREIDgyIDQ5IDUyIDUxIDREIDYwIDc0IDYwIDAxIDQ5
ICAuLklSUU0uSVJRTWB0YC5JCiAgICA4RDQwOiA0RSA1NCA1MiBBMSAwNyA3MCAwMCA0OSA0RSA1
NCA1MiBBMCAxMiA0NCA0RCA0MSAgTlRSLi5wLklOVFIuLkRNQQogICAgOEQ1MDogNEQgODIgNDQg
NEQgNDEgNEQgNjAgNzQgNjAgMDEgNDQgNEQgNDMgNDggQTEgMDggIE0uRE1BTWB0YC5ETUNILi4K
ICAgIDhENjA6IDcwIDBBIDA0IDQ0IDREIDQzIDQ4IDQ1IDU4IDQ2IDQ3IDQ0IDQzIDRFIDU0IDY5
ICBwLi5ETUNIRVhGR0RDTlRpCiAgICA4RDcwOiAwMSAxNCA0RCAwOSA0NCA1MyA1MiAzMiAwMiA4
QiA2OCAwQSAxMSA0OSA1MiA1MSAgLi5NLkRTUjIuLmguLklSUQogICAgOEQ4MDogNDUgOEMgNjgg
MEEgMTQgNDQgNEQgNDEgNDUgOEIgNjggMEEgMDIgNDkgNEYgMzIgIEUuaC4uRE1BRS5oLi5JTzIK
ICAgIDhEOTA6IDMxIDhCIDY4IDBBIDBBIDQ5IDRGIDMzIDMxIDQ1IDRFIDQ2IDQ3IDQzIDQ3IDRD
ICAxLmguLklPMzFFTkZHQ0dMCiAgICA4REEwOiA0NCA2OSA3QiA0OSA0RiAzMiAzMSAwQSBGRiA0
OSA0RiA0MSA0QyA3QSA0OSA0RiAgRGl7SU8yMS4uSU9BTHpJTwogICAgOERCMDogMzIgMzEgMEEg
MDggNDkgNEYgNDEgNDggN0IgNDkgNEYgMzMgMzEgMEEgRkYgNDkgIDIxLi5JT0FIe0lPMzEuLkkK
ICAgIDhEQzA6IDRGIDRDIDMyIDdBIDQ5IDRGIDMzIDMxIDBBIDA4IDQ5IDRGIDQ4IDMyIEEwIDEy
ICBPTDJ6SU8zMS4uSU9IMi4uCiAgICA4REQwOiA0OSA1MiA1MSA0NSA4MiA0OSA1MiA1MSA0NSA2
MCA3NCA2MCAwMSA0OSA0RSA1NCAgSVJRRS5JUlFFYHRgLklOVAogICAgOERFMDogNTIgQTEgMDcg
NzAgMDAgNDkgNEUgNTQgNTIgQTAgMTIgNDQgNEQgNDEgNDUgODIgIFIuLnAuSU5UUi4uRE1BRS4K
ICAgIDhERjA6IDQ0IDREIDQxIDQ1IDYwIDc0IDYwIDAxIDQ0IDREIDQzIDQ4IEExIDA4IDcwIDBB
ICBETUFFYHRgLkRNQ0guLnAuCiAgICA4RTAwOiAwNCA0NCA0RCA0MyA0OCA0NSA1OCA0NiA0NyA0
NCA0MyA0RSA1NCA2OSAwMSAxNCAgLkRNQ0hFWEZHRENOVGkuLgogICAgOEUxMDogNDcgMDggNDQg
NTMgNTIgMzMgMDIgOEIgNjggMEEgMDIgNDkgNEYgMzQgMzEgOEIgIEcuRFNSMy4uaC4uSU80MS4K
ICAgIDhFMjA6IDY4IDBBIDA5IDQ5IDUyIDUxIDU0IDhDIDY4IDBBIDBCIDQ5IDUyIDUxIDUzIDhD
ICBoLi5JUlFULmguLklSUVMuCiAgICA4RTMwOiA2OCAwQSAwRCA0NCA0RCA0MSA1NCA0NSA0RSA0
NiA0NyA0MyA0NyA0QyA0NCA2OSAgaC4uRE1BVEVORkdDR0xEaQogICAgOEU0MDogN0IgNDkgNEYg
MzQgMzEgMEEgRkYgNDkgNEYgNDEgNEMgN0EgNDkgNEYgMzQgMzEgIHtJTzQxLi5JT0FMeklPNDEK
ICAgIDhFNTA6IDBBIDA4IDQ5IDRGIDQxIDQ4IEEwIDEyIDQ5IDUyIDUxIDU0IDgyIDQ5IDUyIDUx
ICAuLklPQUguLklSUVQuSVJRCiAgICA4RTYwOiA1NCA2MCA3NCA2MCAwMSA0OSA0RSA1NCA1MiBB
MSAwNyA3MCAwMCA0OSA0RSA1NCAgVGB0YC5JTlRSLi5wLklOVAogICAgOEU3MDogNTIgQTAgMTIg
NDQgNEQgNDEgNTQgODIgNDQgNEQgNDEgNTQgNjAgNzQgNjAgMDEgIFIuLkRNQVQuRE1BVGB0YC4K
ICAgIDhFODA6IDQ0IDREIDQzIDQ4IEExIDA4IDcwIDBBIDA0IDQ0IDREIDQzIDQ4IDQ1IDU4IDQ2
ICBETUNILi5wLi5ETUNIRVhGCiAgICA4RTkwOiA0NyA0NCA0MyA0RSA1NCA2OSAwMSAwOCA1MCA0
RCA0NiA0NyAwMCAxNCA0NSAwOCAgR0RDTlRpLi5QTUZHLi5FLgogICAgOEVBMDogNTMgNDkgNEYg
NTMgMDEgNzAgMEQgNTMgNDkgNEYgNTMgMDAgNUIgMzEgQTAgNDQgIFNJT1MucC5TSU9TLlsxLkQK
ICAgIDhFQjA6IDA3IDkyIDkzIDBBIDA1IDY4IDQ1IDRFIDQ2IDQ3IDBBIDBBIDcwIDAwIDRGIDUw
ICAuLi4uLmhFTkZHLi5wLk9QCiAgICA4RUMwOiA1NCAzNiA3MCAwMCA0RiA1MCA1NCAzNyBBMCAx
MCA0QiA0MiA0NiA0NyA3RCA0RiAgVDZwLk9QVDcuLktCRkd9TwogICAgOEVEMDogNTAgNTQgMzYg
MEEgMTAgNEYgNTAgNTQgMzYgQTEgMEMgN0IgNEYgNTAgNTQgMzYgIFBUNi4uT1BUNi4ue09QVDYK
ICAgIDhFRTA6IDBBIEVGIDRGIDUwIDU0IDM2IEEwIDEwIDREIDUzIDQ2IDQ3IDdEIDRGIDUwIDU0
ICAuLk9QVDYuLk1TRkd9T1BUCiAgICA4RUYwOiAzNiAwQSAyMCA0RiA1MCA1NCAzNiBBMSAwQyA3
QiA0RiA1MCA1NCAzNiAwQSBERiAgNi4gT1BUNi4ue09QVDYuLgogICAgOEYwMDogNEYgNTAgNTQg
MzYgNzAgMEEgRkYgNEYgNTAgNTQgMzMgNzAgMEEgRkYgNEYgNTAgIE9QVDZwLi5PUFQzcC4uT1AK
ICAgIDhGMTA6IDU0IDM0IDdEIDAxIDRGIDUwIDU0IDMyIDYwIDcwIDYwIDRGIDUwIDU0IDMyIDQ1
ICBUNH0uT1BUMmBwYE9QVDJFCiAgICA4RjIwOiA1OCA0NiA0NyAxNCAzRCA1MyA0OSA0RiA1NyAw
MSA3MCAwRCA1MyA0OSA0RiA1NyAgWEZHLj1TSU9XLnAuU0lPVwogICAgOEYzMDogMDAgNUIgMzEg
NDUgNEUgNDYgNDcgMEEgMEEgNzAgMEEgRkYgNEYgNTAgNTQgMzMgIC5bMUVORkcuLnAuLk9QVDMK
ICAgIDhGNDA6IDcwIDBBIEZGIDRGIDUwIDU0IDM0IDdCIDRGIDUwIDU0IDM2IDBBIENGIDRGIDUw
ICBwLi5PUFQ0e09QVDYuLk9QCiAgICA4RjUwOiA1NCAzNiA3QiA0RiA1MCA1NCAzMiAwQSBGRSA0
RiA1MCA1NCAzMiA0NSA1OCA0NiAgVDZ7T1BUMi4uT1BUMkVYRgogICAgOEY2MDogNDcgMTQgMDYg
NTMgNDkgNEYgNDggMDAgMTQgMEYgNUYgNTAgNTIgNTcgMDAgQTQgIEcuLlNJT0guLi5fUFJXLi4K
ICAgIDhGNzA6IDQ3IDUwIDUyIDU3IDBBIDFEIDBBIDAzIDVCIDgyIDQyIDBFIDU1IDQxIDUyIDMx
ICBHUFJXLi4uLlsuQi5VQVIxCiAgICA4RjgwOiAwOCA1RiA0OCA0OSA0NCAwQyA0MSBEMCAwNSAw
MSAwOCA1RiA1NSA0OSA0NCAwMCAgLl9ISUQuQS4uLi5fVUlELgogICAgOEY5MDogMDggNEMgNDQg
NEUgNUYgMEEgMDIgMTQgMTMgNUYgNTMgNTQgNDEgMDAgQTQgNUUgIC5MRE5fLi4uLl9TVEEuLl4K
ICAgIDhGQTA6IDVFIDJFIDUzIDQ5IDRGIDMxIDQ0IDUzIDU0IDQxIDAwIDE0IDEzIDVGIDQ0IDQ5
ICBeLlNJTzFEU1RBLi4uX0RJCiAgICA4RkIwOiA1MyAwMCA1RSA1RSAyRSA1MyA0OSA0RiAzMSA0
NCA0MyA0RSA1NCAwMCAwMCAxNCAgUy5eXi5TSU8xRENOVC4uLgogICAgOEZDMDogMTQgNUYgNDMg
NTIgNTMgMDAgQTQgNUUgNUUgMkUgNTMgNDkgNEYgMzEgNDQgNDMgIC5fQ1JTLi5eXi5TSU8xREMK
ICAgIDhGRDA6IDUyIDUzIDAwIDAwIDE0IDEzIDVGIDUzIDUyIDUzIDAxIDVFIDVFIDJFIDUzIDQ5
ICBSUy4uLi5fU1JTLl5eLlNJCiAgICA4RkUwOiA0RiAzMSA0NCA1MyA1MiA1MyA2OCAwMCAwOCA1
RiA0NCA0NCA0RSAwRCA0MyA0RiAgTzFEU1JTaC4uX0RETi5DTwogICAgOEZGMDogNEQgMzEgMDAg
MDggNUYgNTAgNTIgNTMgMTEgNDMgMDUgMEEgNEYgMzEgMDAgNDcgIE0xLi5fUFJTLkMuLk8xLkcK
ICAgIDkwMDA6IDAxIEY4IDAzIEY4IDAzIDAxIDA4IDIyIDEwIDAwIDJBIDAwIDAwIDMwIDQ3IDAx
ICAuLi4uLi4uIi4uKi4uMEcuCiAgICA5MDEwOiBGOCAwMyBGOCAwMyAwMSAwOCAyMiAxMCAwMCAy
QSAwMCAwMCAzMCA0NyAwMSBGOCAgLi4uLi4uIi4uKi4uMEcuLgogICAgOTAyMDogMDIgRjggMDIg
MDEgMDggMjIgMDggMDAgMkEgMDAgMDAgMzAgNDcgMDEgRTggMDMgIC4uLi4uIi4uKi4uMEcuLi4K
ICAgIDkwMzA6IEU4IDAzIDAxIDA4IDIyIDEwIDAwIDJBIDAwIDAwIDMwIDQ3IDAxIEU4IDAyIEU4
ICAuLi4uIi4uKi4uMEcuLi4uCiAgICA5MDQwOiAwMiAwMSAwOCAyMiAwOCAwMCAyQSAwMCAwMCAz
OCA3OSAwMCAxNCAwRiA1RiA1MCAgLi4uIi4uKi4uOHkuLi5fUAogICAgOTA1MDogNTIgNTcgMDAg
QTQgNDcgNTAgNTIgNTcgMEEgMDMgMEEgMDQgNUIgODIgMjUgNDggIFJXLi5HUFJXLi4uLlsuJUgK
ICAgIDkwNjA6IDQ4IDREIDQ0IDA4IDVGIDQ4IDQ5IDQ0IDBDIDQxIEQwIDBDIDA4IDA4IDVGIDU1
ICBITUQuX0hJRC5BLi4uLl9VCiAgICA5MDcwOiA0OSA0NCAwMSAwOCA0QyA0NCA0RSA1RiAwQSAw
QiAxNCAwOCA1RiA1MyA1NCA0MSAgSUQuLkxETl8uLi4uX1NUQQogICAgOTA4MDogMDAgQTQgMDAg
NUIgODIgMEYgNDQgMzAgMzAgMzggMDggNUYgNDEgNDQgNTIgMEMgIC4uLlsuLkQwMDguX0FEUi4K
ICAgIDkwOTA6IDA2IDAwIDE0IDAwIDVCIDgyIDRCIEIyIDUwIDQzIDQ5IDMxIDA4IDVGIDQ4IDQ5
ICAuLi4uWy5LLlBDSTEuX0hJCiAgICA5MEEwOiA0NCAwQyA0MSBEMCAwQSAwOCAwOCA1RiA0MyA0
OSA0NCAwQyA0MSBEMCAwQSAwMyAgRC5BLi4uLl9DSUQuQS4uLgogICAgOTBCMDogMDggNUYgNDEg
NDQgNTIgMDAgMTQgMDkgNUUgNDIgNEUgMzAgMzEgMDAgQTQgMDEgIC5fQURSLi4uXkJOMDEuLi4K
ICAgIDkwQzA6IDE0IDBCIDVGIDQyIDQyIDRFIDAwIEE0IDQyIDRFIDMwIDMxIDA4IDVGIDU1IDQ5
ICAuLl9CQk4uLkJOMDEuX1VJCiAgICA5MEQwOiA0NCAwMSAxNCAxNiA1RiA1MCA1MiA1NCAwMCBB
MCAwQSA1MCA0OSA0MyA0RCBBNCAgRC4uLl9QUlQuLi5QSUNNLgogICAgOTBFMDogNDEgNTIgMzAg
MzEgQTQgNTAgNDQgMzAgMzEgMDggNDMgNTAgNTIgNDIgMDEgMDggIEFSMDEuUEQwMS5DUFJCLi4K
ICAgIDkwRjA6IDRDIDU2IDQ3IDQxIDBBIDAwIDA4IDUzIDU0IDQxIDU2IDBBIDBGIDA4IDQyIDUy
ICBMVkdBLi4uU1RBVi4uLkJSCiAgICA5MTAwOiA0MiA1RiAwQiA0MCAwMCAwOCA0MiA1MiA0QyA1
RiAwQiA0MCAwMCAwOCA0OSA0RiAgQl8uQC4uQlJMXy5ALi5JTwogICAgOTExMDogNDIgNUYgMEIg
MDAgNDAgMDggNDkgNEYgNEMgNUYgMEIgMDAgMzAgMDggNEQgNDIgIEJfLi5ALklPTF8uLjAuTUIK
ICAgIDkxMjA6IDQyIDVGIDBDIDAwIDAwIDAwIEMwIDA4IDREIDQyIDRDIDVGIDBDIDAwIDAwIDAw
ICBCXy4uLi4uLk1CTF8uLi4uCiAgICA5MTMwOiAwMSAwOCA0RCA0MSA0MiA0QyAwRSAwMCAwMCA0
MCAyMCA0MCAwNiAwMCAwMCAwOCAgLi5NQUJMLi4uQCBALi4uLgogICAgOTE0MDogNEQgNDEgNDIg
NDggMEMgMDAgMDAgMDEgMDAgMDggNEQgNDEgNEQgNEMgMEMgMDAgIE1BQkguLi4uLi5NQU1MLi4K
ICAgIDkxNTA6IDAwIDAxIDAwIDA4IDREIDQxIDREIDQ4IDBDIDAwIDAwIDAxIDAwIDA4IDREIDQx
ICAuLi4uTUFNSC4uLi4uLk1BCiAgICA5MTYwOiA0QyA0QyAwRSAwMCAwMCAwMCA5MyA1OSAwMCAw
MCAwMCAwOCA0RCA0MSA0QyA0OCAgTEwuLi4uLlkuLi4uTUFMSAogICAgOTE3MDogMEMgMDAgMDAg
MDEgMDAgMDggNTAgNTIgNTggNEQgMEIgMDAgMDAgMDggNDMgNTIgIC4uLi4uLlBSWE0uLi4uQ1IK
ICAgIDkxODA6IDUzIDMyIDExIDQ4IDA5IDBBIDk0IDg4IDBEIDAwIDAyIDBDIDAwIDAwIDAwIDgw
ICBTMi5ILi4uLi4uLi4uLi4uCiAgICA5MTkwOiAwMCBGRiAwMCAwMCAwMCA4MCAwMCA4OCAwRCAw
MCAwMSAwQyAwMyAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgOTFBMDogMDAgMDAgMDAg
MDAgMDAgMDAgMDAgODggMEQgMDAgMDEgMEMgMDMgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4K
ICAgIDkxQjA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDg3IDE3IDAwIDAwIDBDIDAzIDAwIDAwIDAw
ICAuLi4uLi4uLi4uLi4uLi4uCiAgICA5MUMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgOTFEMDogMDAgODcgMTcg
MDAgMDAgMEMgMDMgMDAgMDAgMDAgMDAgMDAgMDAgMDAgODAgRkYgIC4uLi4uLi4uLi4uLi4uLi4K
ICAgIDkxRTA6IEZGIEZGIEZGIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDgwIDhBIDJCIDAwIDAwIDBD
ICAuLi4uLi4uLi4uLi4rLi4uCiAgICA5MUYwOiAwMyAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgOTIwMDogMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4K
ICAgIDkyMTA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDc5IDAwIDE0IDBCIDVGIDUzIDU0
ICAuLi4uLi4uLi55Li4uX1NUCiAgICA5MjIwOiA0MSAwMCBBNCA1MyA1NCA0MSA1NiAxNCA0QSAx
OSA1RiA0MyA1MiA1MyAwOCA4QiAgQS4uU1RBVi5KLl9DUlMuLgogICAgOTIzMDogNDMgNTIgNTMg
MzIgMEEgMDggNEQgNDkgNEUgMzIgOEIgNDMgNTIgNTMgMzIgMEEgIENSUzIuLk1JTjIuQ1JTMi4K
ICAgIDkyNDA6IDBBIDREIDQxIDU4IDMyIDhCIDQzIDUyIDUzIDMyIDBBIDBFIDRDIDQ1IDRFIDMy
ICAuTUFYMi5DUlMyLi5MRU4yCiAgICA5MjUwOiA3MCA0MiA1MiA0MiA1RiA0RCA0OSA0RSAzMiA3
MCA0MiA1MiA0QyA1RiA0QyA0NSAgcEJSQl9NSU4ycEJSTF9MRQogICAgOTI2MDogNEUgMzIgNzAg
NEMgNDUgNEUgMzIgNjEgNzIgNEQgNDkgNEUgMzIgNzYgNjEgNEQgIE4ycExFTjJhck1JTjJ2YU0K
ICAgIDkyNzA6IDQxIDU4IDMyIDhCIDQzIDUyIDUzIDMyIDBBIDI4IDREIDQ5IDRFIDM0IDhCIDQz
ICBBWDIuQ1JTMi4oTUlONC5DCiAgICA5MjgwOiA1MiA1MyAzMiAwQSAyQSA0RCA0MSA1OCAzNCA4
QiA0MyA1MiA1MyAzMiAwQSAyRSAgUlMyLipNQVg0LkNSUzIuLgogICAgOTI5MDogNEMgNDUgNEUg
MzQgNzAgNDkgNEYgNDIgNUYgNEQgNDkgNEUgMzQgNzAgNDkgNEYgIExFTjRwSU9CX01JTjRwSU8K
ICAgIDkyQTA6IDRDIDVGIDRDIDQ1IDRFIDM0IDcwIDRDIDQ1IDRFIDM0IDYxIDcyIDREIDQ5IDRF
ICBMX0xFTjRwTEVONGFyTUlOCiAgICA5MkIwOiAzNCA3NiA2MSA0RCA0MSA1OCAzNCBBMCA0RCAw
NyA0QyA1NiA0NyA0MSA4QiA0MyAgNHZhTUFYNC5NLkxWR0EuQwogICAgOTJDMDogNTIgNTMgMzIg
MEEgMTggNDkgNEQgNEUgMzIgOEIgNDMgNTIgNTMgMzIgMEEgMUEgIFJTMi4uSU1OMi5DUlMyLi4K
ICAgIDkyRDA6IDQ5IDREIDU4IDMyIDhCIDQzIDUyIDUzIDMyIDBBIDFFIDQ5IDRDIDRFIDMyIDcw
ICBJTVgyLkNSUzIuLklMTjJwCiAgICA5MkUwOiAwQiBCMCAwMyA0OSA0RCA0RSAzMiA3MCAwQiBE
RiAwMyA0OSA0RCA1OCAzMiA3MCAgLi4uSU1OMnAuLi5JTVgycAogICAgOTJGMDogMEEgMzAgNDkg
NEMgNEUgMzIgOEEgNDMgNTIgNTMgMzIgMEEgM0EgNTYgNEQgNEUgIC4wSUxOMi5DUlMyLjpWTU4K
ICAgIDkzMDA6IDMyIDhBIDQzIDUyIDUzIDMyIDBBIDNFIDU2IDREIDU4IDMyIDhBIDQzIDUyIDUz
ICAyLkNSUzIuPlZNWDIuQ1JTCiAgICA5MzEwOiAzMiAwQSA0NiA1NiA0QyA0RSAzMiA3MCAwQyAw
MCAwMCAwQSAwMCA1NiA0RCA0RSAgMi5GVkxOMnAuLi4uLlZNTgogICAgOTMyMDogMzIgNzAgMEMg
RkYgRkYgMEIgMDAgNTYgNEQgNTggMzIgNzAgMEMgMDAgMDAgMDIgIDJwLi4uLi5WTVgycC4uLi4K
ICAgIDkzMzA6IDAwIDU2IDRDIDRFIDMyIDhBIDQzIDUyIDUzIDMyIDBBIDU0IDREIDQ5IDRFIDM1
ICAuVkxOMi5DUlMyLlRNSU41CiAgICA5MzQwOiA4QSA0MyA1MiA1MyAzMiAwQSA1OCA0RCA0MSA1
OCAzNSA4QSA0MyA1MiA1MyAzMiAgLkNSUzIuWE1BWDUuQ1JTMgogICAgOTM1MDogMEEgNjAgNEMg
NDUgNEUgMzUgNzAgNEQgNDIgNDIgNUYgNEQgNDkgNEUgMzUgNzAgIC5gTEVONXBNQkJfTUlONXAK
ICAgIDkzNjA6IDREIDQyIDRDIDVGIDRDIDQ1IDRFIDM1IDcwIDRDIDQ1IDRFIDM1IDYxIDcyIDRE
ICBNQkxfTEVONXBMRU41YXJNCiAgICA5MzcwOiA0OSA0RSAzNSA3NiA2MSA0RCA0MSA1OCAzNSA4
RiA0MyA1MiA1MyAzMiAwQSA3MiAgSU41dmFNQVg1LkNSUzIucgogICAgOTM4MDogNEQgNDkgNEUg
MzkgOEYgNDMgNTIgNTMgMzIgMEEgN0EgNEQgNDEgNTggMzkgOEYgIE1JTjkuQ1JTMi56TUFYOS4K
ICAgIDkzOTA6IDQzIDUyIDUzIDMyIDBBIDhBIDRDIDQ1IDRFIDM5IDcwIDREIDQxIDQyIDRDIDRE
ICBDUlMyLi5MRU45cE1BQkxNCiAgICA5M0EwOiA0OSA0RSAzOSA3MCA0RCA0MSA0QyA0QyA0QyA0
NSA0RSAzOSA3MCA0QyA0NSA0RSAgSU45cE1BTExMRU45cExFTgogICAgOTNCMDogMzkgNjAgNzIg
NEQgNDkgNEUgMzkgNzYgNjAgNEQgNDEgNTggMzkgQTQgNDMgNTIgIDlgck1JTjl2YE1BWDkuQ1IK
ICAgIDkzQzA6IDUzIDMyIDE0IDQyIDEzIDVGIDRGIDUzIDQzIDBDIDA4IDUzIDU1IDUwIDUwIDAw
ICBTMi5CLl9PU0MuLlNVUFAuCiAgICA5M0QwOiAwOCA0MyA1NCA1MiA0QyAwMCA4QSA2QiAwMCA0
MyA0NCA1NyAzMSA4QSA2QiAwQSAgLkNUUkwuLmsuQ0RXMS5rLgogICAgOTNFMDogMDQgNDMgNDQg
NTcgMzIgOEEgNkIgMEEgMDggNDMgNDQgNTcgMzMgQTAgNDggMEYgIC5DRFcyLmsuLkNEVzMuSC4K
ICAgIDkzRjA6IDkzIDY4IDExIDEzIDBBIDEwIDVCIDREIERCIDMzIEY3IDFGIDFDIDQwIDk2IDU3
ICAuaC4uLi5bTS4zLi4uQC5XCiAgICA5NDAwOiA3NCA0MSBDMCAzRCBENyA2NiA3MCA0MyA0NCA1
NyAzMiA1MyA1NSA1MCA1MCA3MCAgdEEuPS5mcENEVzJTVVBQcAogICAgOTQxMDogNDMgNDQgNTcg
MzMgNDMgNTQgNTIgNEMgQTAgMTggOTIgOTMgN0IgNTMgNTUgNTAgIENEVzNDVFJMLi4uLntTVVAK
ICAgIDk0MjA6IDUwIDBBIDE2IDAwIDBBIDE2IDdCIDQzIDU0IDUyIDRDIDBBIDFFIDQzIDU0IDUy
ICBQLi4uLi57Q1RSTC4uQ1RSCiAgICA5NDMwOiA0QyBBMCAxMSA5MiA1MCA0NSA0OCA1MCA3QiA0
MyA1NCA1MiA0QyAwQSAxRSA0MyAgTC4uLlBFSFB7Q1RSTC4uQwogICAgOTQ0MDogNTQgNTIgNEMg
QTAgMTEgOTIgNTMgNDggNTAgNDMgN0IgNDMgNTQgNTIgNEMgMEEgIFRSTC4uLlNIUEN7Q1RSTC4K
ICAgIDk0NTA6IDFEIDQzIDU0IDUyIDRDIEEwIDExIDkyIDUwIDQ1IDUwIDREIDdCIDQzIDU0IDUy
ICAuQ1RSTC4uLlBFUE17Q1RSCiAgICA5NDYwOiA0QyAwQSAxQiA0MyA1NCA1MiA0QyBBMCAxMSA5
MiA1MCA0NSA0NSA1MiA3QiA0MyAgTC4uQ1RSTC4uLlBFRVJ7QwogICAgOTQ3MDogNTQgNTIgNEMg
MEEgMTUgNDMgNTQgNTIgNEMgQTAgMTEgOTIgNTAgNDUgNDMgNTMgIFRSTC4uQ1RSTC4uLlBFQ1MK
ICAgIDk0ODA6IDdCIDQzIDU0IDUyIDRDIDBBIDBGIDQzIDU0IDUyIDRDIEEwIDEwIDkyIDkzIDY5
ICB7Q1RSTC4uQ1RSTC4uLi5pCiAgICA5NDkwOiAwMSA3RCA0MyA0NCA1NyAzMSAwQSAwOCA0MyA0
NCA1NyAzMSBBMCAxNSA1QiAxMiAgLn1DRFcxLi5DRFcxLi5bLgogICAgOTRBMDogNTAgNEYgNTMg
NDMgMDAgN0IgNDMgNTQgNTIgNEMgNTAgNEYgNTMgNDMgNDMgNTQgIFBPU0Mue0NUUkxQT1NDQ1QK
ICAgIDk0QjA6IDUyIDRDIEEwIDE2IDkyIDkzIDQzIDQ0IDU3IDMzIDQzIDU0IDUyIDRDIDdEIDQz
ICBSTC4uLi5DRFczQ1RSTH1DCiAgICA5NEMwOiA0NCA1NyAzMSAwQSAxMCA0MyA0NCA1NyAzMSA3
MCA0MyA1NCA1MiA0QyA0MyA0NCAgRFcxLi5DRFcxcENUUkxDRAogICAgOTREMDogNTcgMzMgQTAg
MTEgNUIgMTIgNTAgNEYgNTMgNTMgMDAgNzAgNTMgNTUgNTAgNTAgIFczLi5bLlBPU1MucFNVUFAK
ICAgIDk0RTA6IDUwIDRGIDUzIDUzIEE0IDZCIEExIDBFIDdEIDQzIDQ0IDU3IDMxIDBBIDA0IDQz
ICBQT1NTLmsuLn1DRFcxLi5DCiAgICA5NEYwOiA0NCA1NyAzMSBBNCA2QiA1QiA4MiAwQyA0NCAz
MCAzOCA0MyAwOCA1RiA0MSA0NCAgRFcxLmtbLi5EMDhDLl9BRAogICAgOTUwMDogNTIgMEEgMDIg
NUIgODIgMEMgNDQgMzAgMzggNDQgMDggNUYgNDEgNDQgNTIgMEEgIFIuLlsuLkQwOEQuX0FEUi4K
ICAgIDk1MTA6IDAzIDVCIDgyIDQ2IDA0IDQ3IDUwIDUwIDMwIDA4IDVGIDQxIDQ0IDUyIDBDIDAx
ICAuWy5GLkdQUDAuX0FEUi4uCiAgICA5NTIwOiAwMCAwMSAwMCAxNCAwRiA1RiA1MCA1MiA1NyAw
MCBBNCA0NyA1MCA1MiA1NyAwQSAgLi4uLi5fUFJXLi5HUFJXLgogICAgOTUzMDogMDggMEEgMDQg
MTQgMTYgNUYgNTAgNTIgNTQgMDAgQTAgMEEgNTAgNDkgNDMgNEQgIC4uLi4uX1BSVC4uLlBJQ00K
ICAgIDk1NDA6IEE0IDQ3IDMwIDM4IDQ2IEE0IDUwIDMwIDM4IDQ2IDVCIDgyIDBEIDQ0IDMwIDQ2
ICAuRzA4Ri5QMDhGWy4uRDBGCiAgICA5NTUwOiAzNiAwOCA1RiA0MSA0NCA1MiAwQiBGRiBGRiA1
QiA4MiA0NiAwNCA0NyA1MCA1MCAgNi5fQURSLi4uWy5GLkdQUAogICAgOTU2MDogMzEgMDggNUYg
NDEgNDQgNTIgMEMgMDIgMDAgMDEgMDAgMTQgMEYgNUYgNTAgNTIgIDEuX0FEUi4uLi4uLi5fUFIK
ICAgIDk1NzA6IDU3IDAwIEE0IDQ3IDUwIDUyIDU3IDBBIDA4IDBBIDA0IDE0IDE2IDVGIDUwIDUy
ICBXLi5HUFJXLi4uLi4uX1BSCiAgICA5NTgwOiA1NCAwMCBBMCAwQSA1MCA0OSA0MyA0RCBBNCA0
NyAzMCAzOSAzMCBBNCA1MCAzMCAgVC4uLlBJQ00uRzA5MC5QMAogICAgOTU5MDogMzkgMzAgNUIg
ODIgMEQgNDQgMzAgNDYgMzcgMDggNUYgNDEgNDQgNTIgMEIgRkYgIDkwWy4uRDBGNy5fQURSLi4K
ICAgIDk1QTA6IEZGIDVCIDgyIDQ2IDA0IDQ3IDUwIDUwIDMyIDA4IDVGIDQxIDQ0IDUyIDBDIDAz
ICAuWy5GLkdQUDIuX0FEUi4uCiAgICA5NUIwOiAwMCAwMSAwMCAxNCAwRiA1RiA1MCA1MiA1NyAw
MCBBNCA0NyA1MCA1MiA1NyAwQSAgLi4uLi5fUFJXLi5HUFJXLgogICAgOTVDMDogMDggMEEgMDQg
MTQgMTYgNUYgNTAgNTIgNTQgMDAgQTAgMEEgNTAgNDkgNDMgNEQgIC4uLi4uX1BSVC4uLlBJQ00K
ICAgIDk1RDA6IEE0IDQ3IDMwIDM5IDMxIEE0IDUwIDMwIDM5IDMxIDVCIDgyIDBEIDQ0IDMwIDQ2
ICAuRzA5MS5QMDkxWy4uRDBGCiAgICA5NUUwOiAzOCAwOCA1RiA0MSA0NCA1MiAwQiBGRiBGRiA1
QiA4MiA0NiAwNCA0NyA1MCA1MCAgOC5fQURSLi4uWy5GLkdQUAogICAgOTVGMDogMzMgMDggNUYg
NDEgNDQgNTIgMEMgMDQgMDAgMDEgMDAgMTQgMEYgNUYgNTAgNTIgIDMuX0FEUi4uLi4uLi5fUFIK
ICAgIDk2MDA6IDU3IDAwIEE0IDQ3IDUwIDUyIDU3IDBBIDA4IDBBIDA0IDE0IDE2IDVGIDUwIDUy
ICBXLi5HUFJXLi4uLi4uX1BSCiAgICA5NjEwOiA1NCAwMCBBMCAwQSA1MCA0OSA0MyA0RCBBNCA0
NyAzMCAzOSAzMiBBNCA1MCAzMCAgVC4uLlBJQ00uRzA5Mi5QMAogICAgOTYyMDogMzkgMzIgNUIg
ODIgMEQgNDQgMzAgNDYgMzkgMDggNUYgNDEgNDQgNTIgMEIgRkYgIDkyWy4uRDBGOS5fQURSLi4K
ICAgIDk2MzA6IEZGIDVCIDgyIDQ2IDA0IDQ3IDUwIDUwIDM0IDA4IDVGIDQxIDQ0IDUyIDBDIDA1
ICAuWy5GLkdQUDQuX0FEUi4uCiAgICA5NjQwOiAwMCAwMSAwMCAxNCAwRiA1RiA1MCA1MiA1NyAw
MCBBNCA0NyA1MCA1MiA1NyAwQSAgLi4uLi5fUFJXLi5HUFJXLgogICAgOTY1MDogMDggMEEgMDQg
MTQgMTYgNUYgNTAgNTIgNTQgMDAgQTAgMEEgNTAgNDkgNDMgNEQgIC4uLi4uX1BSVC4uLlBJQ00K
ICAgIDk2NjA6IEE0IDQ3IDMwIDM5IDMzIEE0IDUwIDMwIDM5IDMzIDVCIDgyIDBEIDQ0IDMwIDQ2
ICAuRzA5My5QMDkzWy4uRDBGCiAgICA5NjcwOiA0MSAwOCA1RiA0MSA0NCA1MiAwQiBGRiBGRiA1
QiA4MiA0NiAwNCA0NyA1MCA1MCAgQS5fQURSLi4uWy5GLkdQUAogICAgOTY4MDogMzUgMDggNUYg
NDEgNDQgNTIgMEMgMDYgMDAgMDEgMDAgMTQgMEYgNUYgNTAgNTIgIDUuX0FEUi4uLi4uLi5fUFIK
ICAgIDk2OTA6IDU3IDAwIEE0IDQ3IDUwIDUyIDU3IDBBIDA4IDBBIDA0IDE0IDE2IDVGIDUwIDUy
ICBXLi5HUFJXLi4uLi4uX1BSCiAgICA5NkEwOiA1NCAwMCBBMCAwQSA1MCA0OSA0MyA0RCBBNCA0
NyAzMCAzOSAzNCBBNCA1MCAzMCAgVC4uLlBJQ00uRzA5NC5QMAogICAgOTZCMDogMzkgMzQgNUIg
ODIgMEQgNDQgMzAgNDYgNDIgMDggNUYgNDEgNDQgNTIgMEIgRkYgIDk0Wy4uRDBGQi5fQURSLi4K
ICAgIDk2QzA6IEZGIDVCIDgyIDQ2IDA0IDQ3IDUwIDUwIDM2IDA4IDVGIDQxIDQ0IDUyIDBDIDA3
ICAuWy5GLkdQUDYuX0FEUi4uCiAgICA5NkQwOiAwMCAwMSAwMCAxNCAwRiA1RiA1MCA1MiA1NyAw
MCBBNCA0NyA1MCA1MiA1NyAwQSAgLi4uLi5fUFJXLi5HUFJXLgogICAgOTZFMDogMDggMEEgMDQg
MTQgMTYgNUYgNTAgNTIgNTQgMDAgQTAgMEEgNTAgNDkgNDMgNEQgIC4uLi4uX1BSVC4uLlBJQ00K
ICAgIDk2RjA6IEE0IDQ3IDMwIDM5IDM1IEE0IDUwIDMwIDM5IDM1IDVCIDgyIDBEIDQ0IDMwIDQ2
ICAuRzA5NS5QMDk1Wy4uRDBGCiAgICA5NzAwOiA0MyAwOCA1RiA0MSA0NCA1MiAwQiBGRiBGRiA1
QiA4MiA0NiAwNCA0NyA1MCA1MCAgQy5fQURSLi4uWy5GLkdQUAogICAgOTcxMDogMzcgMDggNUYg
NDEgNDQgNTIgMEMgMDEgMDAgMDIgMDAgMTQgMEYgNUYgNTAgNTIgIDcuX0FEUi4uLi4uLi5fUFIK
ICAgIDk3MjA6IDU3IDAwIEE0IDQ3IDUwIDUyIDU3IDBBIDA4IDBBIDA0IDE0IDE2IDVGIDUwIDUy
ICBXLi5HUFJXLi4uLi4uX1BSCiAgICA5NzMwOiA1NCAwMCBBMCAwQSA1MCA0OSA0MyA0RCBBNCA0
NyAzMCAzOSAzNiBBNCA1MCAzMCAgVC4uLlBJQ00uRzA5Ni5QMAogICAgOTc0MDogMzkgMzYgNUIg
ODIgMEQgNDQgMzAgNDYgNDQgMDggNUYgNDEgNDQgNTIgMEIgRkYgIDk2Wy4uRDBGRC5fQURSLi4K
ICAgIDk3NTA6IEZGIDVCIDgyIDQ2IDA0IDQ3IDUwIDUwIDM4IDA4IDVGIDQxIDQ0IDUyIDBDIDAy
ICAuWy5GLkdQUDguX0FEUi4uCiAgICA5NzYwOiAwMCAwMiAwMCAxNCAwRiA1RiA1MCA1MiA1NyAw
MCBBNCA0NyA1MCA1MiA1NyAwQSAgLi4uLi5fUFJXLi5HUFJXLgogICAgOTc3MDogMDggMEEgMDQg
MTQgMTYgNUYgNTAgNTIgNTQgMDAgQTAgMEEgNTAgNDkgNDMgNEQgIC4uLi4uX1BSVC4uLlBJQ00K
ICAgIDk3ODA6IEE0IDQ3IDMwIDM5IDM3IEE0IDUwIDMwIDM5IDM3IDVCIDgyIDBEIDQ0IDMwIDQ2
ICAuRzA5Ny5QMDk3Wy4uRDBGCiAgICA5NzkwOiA0NSAwOCA1RiA0MSA0NCA1MiAwQiBGRiBGRiA1
QiA4MiA0NiAwNCA0NyA1MCA1MCAgRS5fQURSLi4uWy5GLkdQUAogICAgOTdBMDogMzkgMDggNUYg
NDEgNDQgNTIgMEMgMDEgMDAgMDMgMDAgMTQgMEYgNUYgNTAgNTIgIDkuX0FEUi4uLi4uLi5fUFIK
ICAgIDk3QjA6IDU3IDAwIEE0IDQ3IDUwIDUyIDU3IDBBIDA4IDBBIDA0IDE0IDE2IDVGIDUwIDUy
ICBXLi5HUFJXLi4uLi4uX1BSCiAgICA5N0MwOiA1NCAwMCBBMCAwQSA1MCA0OSA0MyA0RCBBNCA0
NyAzMCAzOSAzOCBBNCA1MCAzMCAgVC4uLlBJQ00uRzA5OC5QMAogICAgOTdEMDogMzkgMzggNUIg
ODIgMEQgNDQgMzAgNDUgNDUgMDggNUYgNDEgNDQgNTIgMEIgRkYgIDk4Wy4uRDBFRS5fQURSLi4K
ICAgIDk3RTA6IEZGIDVCIDgyIDQ2IDA0IDQ3IDUwIDUwIDQxIDA4IDVGIDQxIDQ0IDUyIDBDIDAy
ICAuWy5GLkdQUEEuX0FEUi4uCiAgICA5N0YwOiAwMCAwMyAwMCAxNCAwRiA1RiA1MCA1MiA1NyAw
MCBBNCA0NyA1MCA1MiA1NyAwQSAgLi4uLi5fUFJXLi5HUFJXLgogICAgOTgwMDogMDggMEEgMDQg
MTQgMTYgNUYgNTAgNTIgNTQgMDAgQTAgMEEgNTAgNDkgNDMgNEQgIC4uLi4uX1BSVC4uLlBJQ00K
ICAgIDk4MTA6IEE0IDQ3IDMwIDM5IDM5IEE0IDUwIDMwIDM5IDM5IDVCIDgyIDBEIDQ0IDMwIDQ1
ICAuRzA5OS5QMDk5Wy4uRDBFCiAgICA5ODIwOiA0NiAwOCA1RiA0MSA0NCA1MiAwQiBGRiBGRiA1
QiA4MiA0NiAwNCA0NyA1MCA1MCAgRi5fQURSLi4uWy5GLkdQUAogICAgOTgzMDogNDIgMDggNUYg
NDEgNDQgNTIgMEMgMDMgMDAgMDMgMDAgMTQgMEYgNUYgNTAgNTIgIEIuX0FEUi4uLi4uLi5fUFIK
ICAgIDk4NDA6IDU3IDAwIEE0IDQ3IDUwIDUyIDU3IDBBIDA4IDBBIDA0IDE0IDE2IDVGIDUwIDUy
ICBXLi5HUFJXLi4uLi4uX1BSCiAgICA5ODUwOiA1NCAwMCBBMCAwQSA1MCA0OSA0MyA0RCBBNCA0
NyAzMCAzOSA0MSBBNCA1MCAzMCAgVC4uLlBJQ00uRzA5QS5QMAogICAgOTg2MDogMzkgNDEgNUIg
ODIgMEQgNDQgMzAgNDYgMzAgMDggNUYgNDEgNDQgNTIgMEIgRkYgIDlBWy4uRDBGMC5fQURSLi4K
ICAgIDk4NzA6IEZGIDVCIDgyIDQ2IDA0IDQ3IDUwIDUwIDQzIDA4IDVGIDQxIDQ0IDUyIDBDIDA0
ICAuWy5GLkdQUEMuX0FEUi4uCiAgICA5ODgwOiAwMCAwMyAwMCAxNCAwRiA1RiA1MCA1MiA1NyAw
MCBBNCA0NyA1MCA1MiA1NyAwQSAgLi4uLi5fUFJXLi5HUFJXLgogICAgOTg5MDogMDggMEEgMDQg
MTQgMTYgNUYgNTAgNTIgNTQgMDAgQTAgMEEgNTAgNDkgNDMgNEQgIC4uLi4uX1BSVC4uLlBJQ00K
ICAgIDk4QTA6IEE0IDQ3IDMwIDM5IDQyIEE0IDUwIDMwIDM5IDQyIDVCIDgyIDBEIDQ0IDMwIDQ2
ICAuRzA5Qi5QMDlCWy4uRDBGCiAgICA5OEIwOiAzMSAwOCA1RiA0MSA0NCA1MiAwQiBGRiBGRiA1
QiA4MiA0NiAwNCA0NyA1MCA1MCAgMS5fQURSLi4uWy5GLkdQUAogICAgOThDMDogNDQgMDggNUYg
NDEgNDQgNTIgMEMgMDUgMDAgMDMgMDAgMTQgMEYgNUYgNTAgNTIgIEQuX0FEUi4uLi4uLi5fUFIK
ICAgIDk4RDA6IDU3IDAwIEE0IDQ3IDUwIDUyIDU3IDBBIDA4IDBBIDA0IDE0IDE2IDVGIDUwIDUy
ICBXLi5HUFJXLi4uLi4uX1BSCiAgICA5OEUwOiA1NCAwMCBBMCAwQSA1MCA0OSA0MyA0RCBBNCA0
NyAzMCAzOSA0MyBBNCA1MCAzMCAgVC4uLlBJQ00uRzA5Qy5QMAogICAgOThGMDogMzkgNDMgNUIg
ODIgMEQgNDQgMzAgNDYgMzIgMDggNUYgNDEgNDQgNTIgMEIgRkYgIDlDWy4uRDBGMi5fQURSLi4K
ICAgIDk5MDA6IEZGIDVCIDgyIDQ2IDA0IDQ3IDUwIDUwIDQ1IDA4IDVGIDQxIDQ0IDUyIDBDIDA2
ICAuWy5GLkdQUEUuX0FEUi4uCiAgICA5OTEwOiAwMCAwMyAwMCAxNCAwRiA1RiA1MCA1MiA1NyAw
MCBBNCA0NyA1MCA1MiA1NyAwQSAgLi4uLi5fUFJXLi5HUFJXLgogICAgOTkyMDogMDggMEEgMDQg
MTQgMTYgNUYgNTAgNTIgNTQgMDAgQTAgMEEgNTAgNDkgNDMgNEQgIC4uLi4uX1BSVC4uLlBJQ00K
ICAgIDk5MzA6IEE0IDQ3IDMwIDM5IDQ0IEE0IDUwIDMwIDM5IDQ0IDVCIDgyIDBEIDQ0IDMwIDQ2
ICAuRzA5RC5QMDlEWy4uRDBGCiAgICA5OTQwOiAzMyAwOCA1RiA0MSA0NCA1MiAwQiBGRiBGRiA1
QiA4MiA0NiAwNCA0NyA1MCA1MCAgMy5fQURSLi4uWy5GLkdQUAogICAgOTk1MDogNDYgMDggNUYg
NDEgNDQgNTIgMEMgMDcgMDAgMDMgMDAgMTQgMEYgNUYgNTAgNTIgIEYuX0FEUi4uLi4uLi5fUFIK
ICAgIDk5NjA6IDU3IDAwIEE0IDQ3IDUwIDUyIDU3IDBBIDA4IDBBIDA0IDE0IDE2IDVGIDUwIDUy
ICBXLi5HUFJXLi4uLi4uX1BSCiAgICA5OTcwOiA1NCAwMCBBMCAwQSA1MCA0OSA0MyA0RCBBNCA0
NyAzMCAzOSA0NSBBNCA1MCAzMCAgVC4uLlBJQ00uRzA5RS5QMAogICAgOTk4MDogMzkgNDUgNUIg
ODIgMEQgNDQgMzAgNDYgMzQgMDggNUYgNDEgNDQgNTIgMEIgRkYgIDlFWy4uRDBGNC5fQURSLi4K
ICAgIDk5OTA6IEZGIDVCIDgyIDQ2IDA0IDQ3IDUwIDUwIDQ3IDA4IDVGIDQxIDQ0IDUyIDBDIDAx
ICAuWy5GLkdQUEcuX0FEUi4uCiAgICA5OUEwOiAwMCAwNCAwMCAxNCAwRiA1RiA1MCA1MiA1NyAw
MCBBNCA0NyA1MCA1MiA1NyAwQSAgLi4uLi5fUFJXLi5HUFJXLgogICAgOTlCMDogMDggMEEgMDQg
MTQgMTYgNUYgNTAgNTIgNTQgMDAgQTAgMEEgNTAgNDkgNDMgNEQgIC4uLi4uX1BSVC4uLlBJQ00K
ICAgIDk5QzA6IEE0IDQ3IDMwIDM5IDQ2IEE0IDUwIDMwIDM5IDQ2IDVCIDgyIDBEIDQ0IDMwIDQ2
ICAuRzA5Ri5QMDlGWy4uRDBGCiAgICA5OUQwOiAzNSAwOCA1RiA0MSA0NCA1MiAwQiBGRiBGRiA1
QiA4MiA0NiAwNCA0NyA1MCA1MCAgNS5fQURSLi4uWy5GLkdQUAogICAgOTlFMDogNDggMDggNUYg
NDEgNDQgNTIgMEMgMDIgMDAgMDQgMDAgMTQgMEYgNUYgNTAgNTIgIEguX0FEUi4uLi4uLi5fUFIK
ICAgIDk5RjA6IDU3IDAwIEE0IDQ3IDUwIDUyIDU3IDBBIDA4IDBBIDA0IDE0IDE2IDVGIDUwIDUy
ICBXLi5HUFJXLi4uLi4uX1BSCiAgICA5QTAwOiA1NCAwMCBBMCAwQSA1MCA0OSA0MyA0RCBBNCA0
NyAzMCA0MSAzMCBBNCA1MCAzMCAgVC4uLlBJQ00uRzBBMC5QMAogICAgOUExMDogNDEgMzAgNUIg
ODIgMEQgNDQgMzAgNDYgNDYgMDggNUYgNDEgNDQgNTIgMEIgRkYgIEEwWy4uRDBGRi5fQURSLi4K
ICAgIDlBMjA6IEZGIDVCIDgyIDQ2IDA0IDQ3IDUwIDMxIDM1IDA4IDVGIDQxIDQ0IDUyIDBDIDAx
ICAuWy5GLkdQMTUuX0FEUi4uCiAgICA5QTMwOiAwMCAwNSAwMCAxNCAwRiA1RiA1MCA1MiA1NyAw
MCBBNCA0NyA1MCA1MiA1NyAwQSAgLi4uLi5fUFJXLi5HUFJXLgogICAgOUE0MDogMDggMEEgMDQg
MTQgMTYgNUYgNTAgNTIgNTQgMDAgQTAgMEEgNTAgNDkgNDMgNEQgIC4uLi4uX1BSVC4uLlBJQ00K
ICAgIDlBNTA6IEE0IDQ3IDMwIDQxIDMxIEE0IDUwIDMwIDQxIDMxIDVCIDgyIDBEIDQ0IDMwIDMw
ICAuRzBBMS5QMEExWy4uRDAwCiAgICA5QTYwOiAzMCAwOCA1RiA0MSA0NCA1MiAwQiBGRiBGRiA1
QiA4MiA0NiAwNCA0NyA1MCAzMiAgMC5fQURSLi4uWy5GLkdQMgogICAgOUE3MDogMzUgMDggNUYg
NDEgNDQgNTIgMEMgMDIgMDAgMDUgMDAgMTQgMEYgNUYgNTAgNTIgIDUuX0FEUi4uLi4uLi5fUFIK
ICAgIDlBODA6IDU3IDAwIEE0IDQ3IDUwIDUyIDU3IDBBIDA4IDBBIDA0IDE0IDE2IDVGIDUwIDUy
ICBXLi5HUFJXLi4uLi4uX1BSCiAgICA5QTkwOiA1NCAwMCBBMCAwQSA1MCA0OSA0MyA0RCBBNCA0
NyAzMCA0MSAzMiBBNCA1MCAzMCAgVC4uLlBJQ00uRzBBMi5QMAogICAgOUFBMDogNDEgMzIgNUIg
ODIgMEQgNDQgMzAgMzAgMzEgMDggNUYgNDEgNDQgNTIgMEIgRkYgIEEyWy4uRDAwMS5fQURSLi4K
ICAgIDlBQjA6IEZGIDVCIDgyIDQ2IDA0IDQ3IDUwIDMzIDM1IDA4IDVGIDQxIDQ0IDUyIDBDIDAz
ICAuWy5GLkdQMzUuX0FEUi4uCiAgICA5QUMwOiAwMCAwNSAwMCAxNCAwRiA1RiA1MCA1MiA1NyAw
MCBBNCA0NyA1MCA1MiA1NyAwQSAgLi4uLi5fUFJXLi5HUFJXLgogICAgOUFEMDogMDggMEEgMDQg
MTQgMTYgNUYgNTAgNTIgNTQgMDAgQTAgMEEgNTAgNDkgNDMgNEQgIC4uLi4uX1BSVC4uLlBJQ00K
ICAgIDlBRTA6IEE0IDQ3IDMwIDQxIDMzIEE0IDUwIDMwIDQxIDMzIDVCIDgyIDBEIDQ0IDMwIDMw
ICAuRzBBMy5QMEEzWy4uRDAwCiAgICA5QUYwOiAzMiAwOCA1RiA0MSA0NCA1MiAwQiBGRiBGRiA1
QiA4MiA0NiAwNCA0NyA1MCAzNCAgMi5fQURSLi4uWy5GLkdQNAogICAgOUIwMDogMzUgMDggNUYg
NDEgNDQgNTIgMEMgMDQgMDAgMDUgMDAgMTQgMEYgNUYgNTAgNTIgIDUuX0FEUi4uLi4uLi5fUFIK
ICAgIDlCMTA6IDU3IDAwIEE0IDQ3IDUwIDUyIDU3IDBBIDA4IDBBIDA0IDE0IDE2IDVGIDUwIDUy
ICBXLi5HUFJXLi4uLi4uX1BSCiAgICA5QjIwOiA1NCAwMCBBMCAwQSA1MCA0OSA0MyA0RCBBNCA0
NyAzMCA0MSAzNCBBNCA1MCAzMCAgVC4uLlBJQ00uRzBBNC5QMAogICAgOUIzMDogNDEgMzQgNUIg
ODIgMEQgNDQgMzAgMzAgMzMgMDggNUYgNDEgNDQgNTIgMEIgRkYgIEE0Wy4uRDAwMy5fQURSLi4K
ICAgIDlCNDA6IEZGIDVCIDgyIDREIDA2IDQ3IDUwIDMxIDM3IDA4IDVGIDQxIDQ0IDUyIDBDIDAx
ICAuWy5NLkdQMTcuX0FEUi4uCiAgICA5QjUwOiAwMCAwNyAwMCAxNCAwRiA1RiA1MCA1MiA1NyAw
MCBBNCA0NyA1MCA1MiA1NyAwQSAgLi4uLi5fUFJXLi5HUFJXLgogICAgOUI2MDogMEIgMEEgMDQg
MTQgMTYgNUYgNTAgNTIgNTQgMDAgQTAgMEEgNTAgNDkgNDMgNEQgIC4uLi4uX1BSVC4uLlBJQ00K
ICAgIDlCNzA6IEE0IDQ3IDMwIDQxIDM1IEE0IDUwIDMwIDQxIDM1IDVCIDgyIDBCIDQ0IDMwIDQx
ICAuRzBBNS5QMEE1Wy4uRDBBCiAgICA5QjgwOiAzNiAwOCA1RiA0MSA0NCA1MiAwMCA1QiA4MiAw
QiA0NCAzMCA0MSAzNyAwOCA1RiAgNi5fQURSLlsuLkQwQTcuXwogICAgOUI5MDogNDEgNDQgNTIg
MDEgNUIgODIgMEMgNDQgMzAgNDEgMzggMDggNUYgNDEgNDQgNTIgIEFEUi5bLi5EMEE4Ll9BRFIK
ICAgIDlCQTA6IDBBIDAyIDVCIDgyIDBDIDQ0IDMwIDQxIDM5IDA4IDVGIDQxIDQ0IDUyIDBBIDAz
ICAuLlsuLkQwQTkuX0FEUi4uCiAgICA5QkIwOiA1QiA4MiAwRiA0NyA1MCAzMiAzNyAwOCA1RiA0
MSA0NCA1MiAwQyAwMiAwMCAwNyAgWy4uR1AyNy5fQURSLi4uLgogICAgOUJDMDogMDAgMTAgNDgg
NkEgNUYgNDcgNTAgNDUgMTQgNDIgNjMgNUYgNEMgMzAgMzggMDAgIC4uSGpfR1BFLkJjX0wwOC4K
ICAgIDlCRDA6IDg2IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMzIDQ3IDUwIDUwIDMw
ICAuXC8uX1NCX1BDSTNHUFAwCiAgICA5QkUwOiAwQSAwMiA4NiA1QyAyRiAwMyA1RiA1MyA0MiA1
RiA1MCA0MyA0OSAzMyA0NyA1MCAgLi4uXC8uX1NCX1BDSTNHUAogICAgOUJGMDogNTAgMzEgMEEg
MDIgODYgNUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAgNDMgNDkgMzMgIFAxLi4uXC8uX1NCX1BDSTMK
ICAgIDlDMDA6IDQ3IDUwIDUwIDMyIDBBIDAyIDg2IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQz
ICBHUFAyLi4uXC8uX1NCX1BDCiAgICA5QzEwOiA0OSAzMyA0NyA1MCA1MCAzMyAwQSAwMiA4NiA1
QyAyRiAwMyA1RiA1MyA0MiA1RiAgSTNHUFAzLi4uXC8uX1NCXwogICAgOUMyMDogNTAgNDMgNDkg
MzMgNDcgNTAgNTAgMzQgMEEgMDIgODYgNUMgMkYgMDMgNUYgNTMgIFBDSTNHUFA0Li4uXC8uX1MK
ICAgIDlDMzA6IDQyIDVGIDUwIDQzIDQ5IDMzIDQ3IDUwIDUwIDM1IDBBIDAyIDg2IDVDIDJGIDAz
ICBCX1BDSTNHUFA1Li4uXC8uCiAgICA5QzQwOiA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMyA0NyA1
MCA1MCAzNiAwQSAwMiA4NiA1QyAgX1NCX1BDSTNHUFA2Li4uXAogICAgOUM1MDogMkYgMDMgNUYg
NTMgNDIgNUYgNTAgNDMgNDkgMzMgNDcgNTAgNTAgMzcgMEEgMDIgIC8uX1NCX1BDSTNHUFA3Li4K
ICAgIDlDNjA6IDg2IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMzIDQ3IDUwIDUwIDM4
ICAuXC8uX1NCX1BDSTNHUFA4CiAgICA5QzcwOiAwQSAwMiA4NiA1QyAyRiAwMyA1RiA1MyA0MiA1
RiA1MCA0MyA0OSAzMyA0NyA1MCAgLi4uXC8uX1NCX1BDSTNHUAogICAgOUM4MDogNTAgMzkgMEEg
MDIgODYgNUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAgNDMgNDkgMzMgIFA5Li4uXC8uX1NCX1BDSTMK
ICAgIDlDOTA6IDQ3IDUwIDUwIDQxIDBBIDAyIDg2IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQz
ICBHUFBBLi4uXC8uX1NCX1BDCiAgICA5Q0EwOiA0OSAzMyA0NyA1MCA1MCA0MiAwQSAwMiA4NiA1
QyAyRiAwMyA1RiA1MyA0MiA1RiAgSTNHUFBCLi4uXC8uX1NCXwogICAgOUNCMDogNTAgNDMgNDkg
MzMgNDcgNTAgNTAgNDMgMEEgMDIgODYgNUMgMkYgMDMgNUYgNTMgIFBDSTNHUFBDLi4uXC8uX1MK
ICAgIDlDQzA6IDQyIDVGIDUwIDQzIDQ5IDMzIDQ3IDUwIDUwIDQ0IDBBIDAyIDg2IDVDIDJGIDAz
ICBCX1BDSTNHUFBELi4uXC8uCiAgICA5Q0QwOiA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMyA0NyA1
MCA1MCA0NSAwQSAwMiA4NiA1QyAgX1NCX1BDSTNHUFBFLi4uXAogICAgOUNFMDogMkYgMDMgNUYg
NTMgNDIgNUYgNTAgNDMgNDkgMzMgNDcgNTAgNTAgNDYgMEEgMDIgIC8uX1NCX1BDSTNHUFBGLi4K
ICAgIDlDRjA6IDg2IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMzIDQ3IDUwIDUwIDQ3
ICAuXC8uX1NCX1BDSTNHUFBHCiAgICA5RDAwOiAwQSAwMiA4NiA1QyAyRiAwMyA1RiA1MyA0MiA1
RiA1MCA0MyA0OSAzMyA0NyA1MCAgLi4uXC8uX1NCX1BDSTNHUAogICAgOUQxMDogNTAgNDggMEEg
MDIgODYgNUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAgNDMgNDkgMzMgIFBILi4uXC8uX1NCX1BDSTMK
ICAgIDlEMjA6IDQ3IDUwIDMxIDM1IDBBIDAyIDg2IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQz
ICBHUDE1Li4uXC8uX1NCX1BDCiAgICA5RDMwOiA0OSAzMyA0NyA1MCAzMiAzNSAwQSAwMiA4NiA1
QyAyRiAwMyA1RiA1MyA0MiA1RiAgSTNHUDI1Li4uXC8uX1NCXwogICAgOUQ0MDogNTAgNDMgNDkg
MzMgNDcgNTAgMzMgMzUgMEEgMDIgODYgNUMgMkYgMDMgNUYgNTMgIFBDSTNHUDM1Li4uXC8uX1MK
ICAgIDlENTA6IDQyIDVGIDUwIDQzIDQ5IDMzIDQ3IDUwIDM0IDM1IDBBIDAyIDg2IDVDIDJGIDAz
ICBCX1BDSTNHUDQ1Li4uXC8uCiAgICA5RDYwOiA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMiA0NyA1
MCA1MCAzMCAwQSAwMiA4NiA1QyAgX1NCX1BDSTJHUFAwLi4uXAogICAgOUQ3MDogMkYgMDMgNUYg
NTMgNDIgNUYgNTAgNDMgNDkgMzIgNDcgNTAgNTAgMzEgMEEgMDIgIC8uX1NCX1BDSTJHUFAxLi4K
ICAgIDlEODA6IDg2IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMyIDQ3IDUwIDUwIDMy
ICAuXC8uX1NCX1BDSTJHUFAyCiAgICA5RDkwOiAwQSAwMiA4NiA1QyAyRiAwMyA1RiA1MyA0MiA1
RiA1MCA0MyA0OSAzMiA0NyA1MCAgLi4uXC8uX1NCX1BDSTJHUAogICAgOURBMDogNTAgMzMgMEEg
MDIgODYgNUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAgNDMgNDkgMzIgIFAzLi4uXC8uX1NCX1BDSTIK
ICAgIDlEQjA6IDQ3IDUwIDUwIDM0IDBBIDAyIDg2IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQz
ICBHUFA0Li4uXC8uX1NCX1BDCiAgICA5REMwOiA0OSAzMiA0NyA1MCA1MCAzNSAwQSAwMiA4NiA1
QyAyRiAwMyA1RiA1MyA0MiA1RiAgSTJHUFA1Li4uXC8uX1NCXwogICAgOUREMDogNTAgNDMgNDkg
MzIgNDcgNTAgNTAgMzYgMEEgMDIgODYgNUMgMkYgMDMgNUYgNTMgIFBDSTJHUFA2Li4uXC8uX1MK
ICAgIDlERTA6IDQyIDVGIDUwIDQzIDQ5IDMyIDQ3IDUwIDUwIDM3IDBBIDAyIDg2IDVDIDJGIDAz
ICBCX1BDSTJHUFA3Li4uXC8uCiAgICA5REYwOiA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMiA0NyA1
MCA1MCAzOCAwQSAwMiA4NiA1QyAgX1NCX1BDSTJHUFA4Li4uXAogICAgOUUwMDogMkYgMDMgNUYg
NTMgNDIgNUYgNTAgNDMgNDkgMzIgNDcgNTAgNTAgMzkgMEEgMDIgIC8uX1NCX1BDSTJHUFA5Li4K
ICAgIDlFMTA6IDg2IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMyIDQ3IDUwIDUwIDQx
ICAuXC8uX1NCX1BDSTJHUFBBCiAgICA5RTIwOiAwQSAwMiA4NiA1QyAyRiAwMyA1RiA1MyA0MiA1
RiA1MCA0MyA0OSAzMiA0NyA1MCAgLi4uXC8uX1NCX1BDSTJHUAogICAgOUUzMDogNTAgNDIgMEEg
MDIgODYgNUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAgNDMgNDkgMzIgIFBCLi4uXC8uX1NCX1BDSTIK
ICAgIDlFNDA6IDQ3IDUwIDUwIDQzIDBBIDAyIDg2IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQz
ICBHUFBDLi4uXC8uX1NCX1BDCiAgICA5RTUwOiA0OSAzMiA0NyA1MCA1MCA0NCAwQSAwMiA4NiA1
QyAyRiAwMyA1RiA1MyA0MiA1RiAgSTJHUFBELi4uXC8uX1NCXwogICAgOUU2MDogNTAgNDMgNDkg
MzIgNDcgNTAgNTAgNDUgMEEgMDIgODYgNUMgMkYgMDMgNUYgNTMgIFBDSTJHUFBFLi4uXC8uX1MK
ICAgIDlFNzA6IDQyIDVGIDUwIDQzIDQ5IDMyIDQ3IDUwIDUwIDQ2IDBBIDAyIDg2IDVDIDJGIDAz
ICBCX1BDSTJHUFBGLi4uXC8uCiAgICA5RTgwOiA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMiA0NyA1
MCA1MCA0NyAwQSAwMiA4NiA1QyAgX1NCX1BDSTJHUFBHLi4uXAogICAgOUU5MDogMkYgMDMgNUYg
NTMgNDIgNUYgNTAgNDMgNDkgMzIgNDcgNTAgNTAgNDggMEEgMDIgIC8uX1NCX1BDSTJHUFBILi4K
ICAgIDlFQTA6IDg2IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMyIDQ3IDUwIDMxIDM1
ICAuXC8uX1NCX1BDSTJHUDE1CiAgICA5RUIwOiAwQSAwMiA4NiA1QyAyRiAwMyA1RiA1MyA0MiA1
RiA1MCA0MyA0OSAzMiA0NyA1MCAgLi4uXC8uX1NCX1BDSTJHUAogICAgOUVDMDogMzIgMzUgMEEg
MDIgODYgNUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAgNDMgNDkgMzIgIDI1Li4uXC8uX1NCX1BDSTIK
ICAgIDlFRDA6IDQ3IDUwIDMzIDM1IDBBIDAyIDg2IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQz
ICBHUDM1Li4uXC8uX1NCX1BDCiAgICA5RUUwOiA0OSAzMiA0NyA1MCAzNCAzNSAwQSAwMiA4NiA1
QyAyRiAwMyA1RiA1MyA0MiA1RiAgSTJHUDQ1Li4uXC8uX1NCXwogICAgOUVGMDogNTAgNDMgNDkg
MzAgNDcgNTAgNTAgMzAgMEEgMDIgODYgNUMgMkYgMDMgNUYgNTMgIFBDSTBHUFAwLi4uXC8uX1MK
ICAgIDlGMDA6IDQyIDVGIDUwIDQzIDQ5IDMwIDQ3IDUwIDUwIDMyIDBBIDAyIDg2IDVDIDJGIDAz
ICBCX1BDSTBHUFAyLi4uXC8uCiAgICA5RjEwOiA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMCA0NyA1
MCA1MCAzMyAwQSAwMiA4NiA1QyAgX1NCX1BDSTBHUFAzLi4uXAogICAgOUYyMDogMkYgMDMgNUYg
NTMgNDIgNUYgNTAgNDMgNDkgMzAgNDcgNTAgNTAgMzQgMEEgMDIgIC8uX1NCX1BDSTBHUFA0Li4K
ICAgIDlGMzA6IDg2IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMwIDQ3IDUwIDUwIDM1
ICAuXC8uX1NCX1BDSTBHUFA1CiAgICA5RjQwOiAwQSAwMiA4NiA1QyAyRiAwMyA1RiA1MyA0MiA1
RiA1MCA0MyA0OSAzMCA0NyA1MCAgLi4uXC8uX1NCX1BDSTBHUAogICAgOUY1MDogNTAgMzYgMEEg
MDIgODYgNUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAgNDMgNDkgMzAgIFA2Li4uXC8uX1NCX1BDSTAK
ICAgIDlGNjA6IDQ3IDUwIDUwIDM3IDBBIDAyIDg2IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQz
ICBHUFA3Li4uXC8uX1NCX1BDCiAgICA5RjcwOiA0OSAzMCA0NyA1MCA1MCAzOCAwQSAwMiA4NiA1
QyAyRiAwMyA1RiA1MyA0MiA1RiAgSTBHUFA4Li4uXC8uX1NCXwogICAgOUY4MDogNTAgNDMgNDkg
MzAgNDcgNTAgNTAgMzkgMEEgMDIgODYgNUMgMkYgMDMgNUYgNTMgIFBDSTBHUFA5Li4uXC8uX1MK
ICAgIDlGOTA6IDQyIDVGIDUwIDQzIDQ5IDMwIDQ3IDUwIDUwIDQxIDBBIDAyIDg2IDVDIDJGIDAz
ICBCX1BDSTBHUFBBLi4uXC8uCiAgICA5RkEwOiA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMCA0NyA1
MCA1MCA0MiAwQSAwMiA4NiA1QyAgX1NCX1BDSTBHUFBCLi4uXAogICAgOUZCMDogMkYgMDMgNUYg
NTMgNDIgNUYgNTAgNDMgNDkgMzAgNDcgNTAgNTAgNDMgMEEgMDIgIC8uX1NCX1BDSTBHUFBDLi4K
ICAgIDlGQzA6IDg2IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMwIDQ3IDUwIDUwIDQ0
ICAuXC8uX1NCX1BDSTBHUFBECiAgICA5RkQwOiAwQSAwMiA4NiA1QyAyRiAwMyA1RiA1MyA0MiA1
RiA1MCA0MyA0OSAzMCA0NyA1MCAgLi4uXC8uX1NCX1BDSTBHUAogICAgOUZFMDogNTAgNDUgMEEg
MDIgODYgNUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAgNDMgNDkgMzAgIFBFLi4uXC8uX1NCX1BDSTAK
ICAgIDlGRjA6IDQ3IDUwIDUwIDQ2IDBBIDAyIDg2IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQz
ICBHUFBGLi4uXC8uX1NCX1BDCiAgICBBMDAwOiA0OSAzMCA0NyA1MCA1MCA0NyAwQSAwMiA4NiA1
QyAyRiAwMyA1RiA1MyA0MiA1RiAgSTBHUFBHLi4uXC8uX1NCXwogICAgQTAxMDogNTAgNDMgNDkg
MzAgNDcgNTAgNTAgNDggMEEgMDIgODYgNUMgMkYgMDMgNUYgNTMgIFBDSTBHUFBILi4uXC8uX1MK
ICAgIEEwMjA6IDQyIDVGIDUwIDQzIDQ5IDMwIDQ3IDUwIDMxIDM1IDBBIDAyIDg2IDVDIDJGIDAz
ICBCX1BDSTBHUDE1Li4uXC8uCiAgICBBMDMwOiA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMCA0NyA1
MCAzMiAzNSAwQSAwMiA4NiA1QyAgX1NCX1BDSTBHUDI1Li4uXAogICAgQTA0MDogMkYgMDMgNUYg
NTMgNDIgNUYgNTAgNDMgNDkgMzAgNDcgNTAgMzMgMzUgMEEgMDIgIC8uX1NCX1BDSTBHUDM1Li4K
ICAgIEEwNTA6IDg2IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMwIDQ3IDUwIDM0IDM1
ICAuXC8uX1NCX1BDSTBHUDQ1CiAgICBBMDYwOiAwQSAwMiA4NiA1QyAyRiAwMyA1RiA1MyA0MiA1
RiA1MCA0MyA0OSAzMSA0NyA1MCAgLi4uXC8uX1NCX1BDSTFHUAogICAgQTA3MDogNTAgMzAgMEEg
MDIgODYgNUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAgNDMgNDkgMzEgIFAwLi4uXC8uX1NCX1BDSTEK
ICAgIEEwODA6IDQ3IDUwIDUwIDMxIDBBIDAyIDg2IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQz
ICBHUFAxLi4uXC8uX1NCX1BDCiAgICBBMDkwOiA0OSAzMSA0NyA1MCA1MCAzMiAwQSAwMiA4NiA1
QyAyRiAwMyA1RiA1MyA0MiA1RiAgSTFHUFAyLi4uXC8uX1NCXwogICAgQTBBMDogNTAgNDMgNDkg
MzEgNDcgNTAgNTAgMzMgMEEgMDIgODYgNUMgMkYgMDMgNUYgNTMgIFBDSTFHUFAzLi4uXC8uX1MK
ICAgIEEwQjA6IDQyIDVGIDUwIDQzIDQ5IDMxIDQ3IDUwIDUwIDM0IDBBIDAyIDg2IDVDIDJGIDAz
ICBCX1BDSTFHUFA0Li4uXC8uCiAgICBBMEMwOiA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMSA0NyA1
MCA1MCAzNSAwQSAwMiA4NiA1QyAgX1NCX1BDSTFHUFA1Li4uXAogICAgQTBEMDogMkYgMDMgNUYg
NTMgNDIgNUYgNTAgNDMgNDkgMzEgNDcgNTAgNTAgMzYgMEEgMDIgIC8uX1NCX1BDSTFHUFA2Li4K
ICAgIEEwRTA6IDg2IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMxIDQ3IDUwIDUwIDM3
ICAuXC8uX1NCX1BDSTFHUFA3CiAgICBBMEYwOiAwQSAwMiA4NiA1QyAyRiAwMyA1RiA1MyA0MiA1
RiA1MCA0MyA0OSAzMSA0NyA1MCAgLi4uXC8uX1NCX1BDSTFHUAogICAgQTEwMDogNTAgMzggMEEg
MDIgODYgNUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAgNDMgNDkgMzEgIFA4Li4uXC8uX1NCX1BDSTEK
ICAgIEExMTA6IDQ3IDUwIDUwIDM5IDBBIDAyIDg2IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQz
ICBHUFA5Li4uXC8uX1NCX1BDCiAgICBBMTIwOiA0OSAzMSA0NyA1MCA1MCA0MSAwQSAwMiA4NiA1
QyAyRiAwMyA1RiA1MyA0MiA1RiAgSTFHUFBBLi4uXC8uX1NCXwogICAgQTEzMDogNTAgNDMgNDkg
MzEgNDcgNTAgNTAgNDIgMEEgMDIgODYgNUMgMkYgMDMgNUYgNTMgIFBDSTFHUFBCLi4uXC8uX1MK
ICAgIEExNDA6IDQyIDVGIDUwIDQzIDQ5IDMxIDQ3IDUwIDUwIDQzIDBBIDAyIDg2IDVDIDJGIDAz
ICBCX1BDSTFHUFBDLi4uXC8uCiAgICBBMTUwOiA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMSA0NyA1
MCA1MCA0NCAwQSAwMiA4NiA1QyAgX1NCX1BDSTFHUFBELi4uXAogICAgQTE2MDogMkYgMDMgNUYg
NTMgNDIgNUYgNTAgNDMgNDkgMzEgNDcgNTAgNTAgNDUgMEEgMDIgIC8uX1NCX1BDSTFHUFBFLi4K
ICAgIEExNzA6IDg2IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMxIDQ3IDUwIDUwIDQ2
ICAuXC8uX1NCX1BDSTFHUFBGCiAgICBBMTgwOiAwQSAwMiA4NiA1QyAyRiAwMyA1RiA1MyA0MiA1
RiA1MCA0MyA0OSAzMSA0NyA1MCAgLi4uXC8uX1NCX1BDSTFHUAogICAgQTE5MDogNTAgNDcgMEEg
MDIgODYgNUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAgNDMgNDkgMzEgIFBHLi4uXC8uX1NCX1BDSTEK
ICAgIEExQTA6IDQ3IDUwIDUwIDQ4IDBBIDAyIDg2IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQz
ICBHUFBILi4uXC8uX1NCX1BDCiAgICBBMUIwOiA0OSAzMSA0NyA1MCAzMSAzNSAwQSAwMiA4NiA1
QyAyRiAwMyA1RiA1MyA0MiA1RiAgSTFHUDE1Li4uXC8uX1NCXwogICAgQTFDMDogNTAgNDMgNDkg
MzEgNDcgNTAgMzIgMzUgMEEgMDIgODYgNUMgMkYgMDMgNUYgNTMgIFBDSTFHUDI1Li4uXC8uX1MK
ICAgIEExRDA6IDQyIDVGIDUwIDQzIDQ5IDMxIDQ3IDUwIDMzIDM1IDBBIDAyIDg2IDVDIDJGIDAz
ICBCX1BDSTFHUDM1Li4uXC8uCiAgICBBMUUwOiA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMSA0NyA1
MCAzNCAzNSAwQSAwMiA4NiA1QyAgX1NCX1BDSTFHUDQ1Li4uXAogICAgQTFGMDogMkUgNUYgNTMg
NDIgNUYgNTAgNTcgNTIgNDIgMEEgMDIgMTQgNEUgMDYgNUYgNEMgIC5fU0JfUFdSQi4uLk4uX0wK
ICAgIEEyMDA6IDMwIDQyIDAwIDg2IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMzIDQ3
ICAwQi4uXC8uX1NCX1BDSTNHCiAgICBBMjEwOiA1MCAzMSAzNyAwQSAwMiA4NiA1QyAyRiAwMyA1
RiA1MyA0MiA1RiA1MCA0MyA0OSAgUDE3Li4uXC8uX1NCX1BDSQogICAgQTIyMDogMzMgNDcgNTAg
MzIgMzcgMEEgMDIgODYgNUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAgIDNHUDI3Li4uXC8uX1NCX1AK
ICAgIEEyMzA6IDQzIDQ5IDMyIDQ3IDUwIDMxIDM3IDBBIDAyIDg2IDVDIDJGIDAzIDVGIDUzIDQy
ICBDSTJHUDE3Li4uXC8uX1NCCiAgICBBMjQwOiA1RiA1MCA0MyA0OSAzMCA0NyA1MCAzMSAzNyAw
QSAwMiA4NiA1QyAyRiAwMyA1RiAgX1BDSTBHUDE3Li4uXC8uXwogICAgQTI1MDogNTMgNDIgNUYg
NTAgNDMgNDkgMzEgNDcgNTAgMzEgMzcgMEEgMDIgODYgNUMgMkUgIFNCX1BDSTFHUDE3Li4uXC4K
ICAgIEEyNjA6IDVGIDUzIDQyIDVGIDUwIDU3IDUyIDQyIDBBIDAyIDEwIDI0IDVGIDUzIDQyIDVG
ICBfU0JfUFdSQi4uLiRfU0JfCiAgICBBMjcwOiA1QiA4MiAxRCA1MCA1NyA1MiA0MiAwOCA1RiA0
OCA0OSA0NCAwQyA0MSBEMCAwQyAgWy4uUFdSQi5fSElELkEuLgogICAgQTI4MDogMEMgMDggNUYg
NTUgNDkgNDQgMEEgQUEgMDggNUYgNTMgNTQgNDEgMEEgMEIgMDggIC4uX1VJRC4uLl9TVEEuLi4K
ICAgIEEyOTA6IDVGIDUzIDMwIDVGIDEyIDA2IDA0IDAwIDAwIDAwIDAwIDA4IDVGIDUzIDMzIDVG
ICBfUzBfLi4uLi4uLi5fUzNfCiAgICBBMkEwOiAxMiAwNyAwNCAwQSAwMyAwMCAwMCAwMCAwOCA1
RiA1MyAzNCA1RiAxMiAwNyAwNCAgLi4uLi4uLi4uX1M0Xy4uLgogICAgQTJCMDogMEEgMDQgMDAg
MDAgMDAgMDggNUYgNTMgMzUgNUYgMTIgMDcgMDQgMEEgMDUgMDAgIC4uLi4uLl9TNV8uLi4uLi4K
ICAgIEEyQzA6IDAwIDAwIDE0IDQyIDA1IDVGIDUwIDU0IDUzIDAxIEEwIDRBIDA0IDY4IDRDIDQ1
ICAuLi5CLl9QVFMuLkouaExFCiAgICBBMkQwOiA0NCA1MyA2OCA1QyAyRiAwMyA1RiA1MyA0MiA1
RiA1NCA1MCA0RCA1RiA1NCA1MCAgRFNoXC8uX1NCX1RQTV9UUAogICAgQTJFMDogNTQgNTMgNjgg
NEQgNTAgNTQgNTMgNjggNTMgNTAgNTQgNTMgNjggNUMgMkYgMDMgIFRTaE1QVFNoU1BUU2hcLy4K
ICAgIEEyRjA6IDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMwIDRFIDUwIDU0IDUzIDY4IDVDIDJGIDA1
ICBfU0JfUENJME5QVFNoXC8uCiAgICBBMzAwOiA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMCA1MyA0
MiA1MiA0NyA1MyA0OSA0RiAzMSAgX1NCX1BDSTBTQlJHU0lPMQogICAgQTMxMDogNTMgNDkgNEYg
NTMgNjggMTQgNDMgMDUgNUYgNTcgNDEgNEIgMDEgNUMgMkYgMDUgIFNJT1NoLkMuX1dBSy5cLy4K
ICAgIEEzMjA6IDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMwIDUzIDQyIDUyIDQ3IDUzIDQ5IDRGIDMx
ICBfU0JfUENJMFNCUkdTSU8xCiAgICBBMzMwOiA1MyA0OSA0RiA1NyA2OCA3OSA2OCAwQSAwNCA0
NCA0MiA0NyAzOCA1QyAyRiAwMyAgU0lPV2h5aC4uREJHOFwvLgogICAgQTM0MDogNUYgNTMgNDIg
NUYgNTAgNDMgNDkgMzAgNEUgNTcgNDEgNEIgNjggNzkgNjggMEEgIF9TQl9QQ0kwTldBS2h5aC4K
ICAgIEEzNTA6IDA0IDQ0IDQyIDQ3IDM4IDUzIDU3IDQxIDRCIDY4IDREIDU3IDQxIDRCIDY4IDRD
ICAuREJHOFNXQUtoTVdBS2hMCiAgICBBMzYwOiA0NSA0NCA1NyA2OCBBNCA1NyA0MSA0QiA1MCAx
MCAyMiAyRSA1RiA1MyA0MiA1RiAgRURXaC5XQUtQLiIuX1NCXwogICAgQTM3MDogNTAgNDMgNDkg
MzMgMTQgMEIgNDIgNEUgMzAgMzMgMDAgQTQgNDIgNTIgNDIgNUYgIFBDSTMuLkJOMDMuLkJSQl8K
ICAgIEEzODA6IDE0IDBCIDVGIDUwIDU4IDREIDAwIEE0IDUwIDUyIDU4IDREIDEwIDIyIDJFIDVG
ICAuLl9QWE0uLlBSWE0uIi5fCiAgICBBMzkwOiA1MyA0MiA1RiA1MCA0MyA0OSAzMiAxNCAwQiA0
MiA0RSAzMCAzMiAwMCBBNCA0MiAgU0JfUENJMi4uQk4wMi4uQgogICAgQTNBMDogNTIgNDIgNUYg
MTQgMEIgNUYgNTAgNTggNEQgMDAgQTQgNTAgNTIgNTggNEQgMTAgIFJCXy4uX1BYTS4uUFJYTS4K
ICAgIEEzQjA6IDIyIDJFIDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMxIDE0IDBCIDQyIDRFIDMwIDMx
ICAiLl9TQl9QQ0kxLi5CTjAxCiAgICBBM0MwOiAwMCBBNCA0MiA1MiA0MiA1RiAxNCAwQiA1RiA1
MCA1OCA0RCAwMCBBNCA1MCA1MiAgLi5CUkJfLi5fUFhNLi5QUgogICAgQTNEMDogNTggNEQgMTAg
MjIgMkUgNUYgNTMgNDIgNUYgNTAgNDMgNDkgMzAgMTQgMEIgNDIgIFhNLiIuX1NCX1BDSTAuLkIK
ICAgIEEzRTA6IDRFIDMwIDMwIDAwIEE0IDQyIDUyIDQyIDVGIDE0IDBCIDVGIDUwIDU4IDREIDAw
ICBOMDAuLkJSQl8uLl9QWE0uCiAgICBBM0YwOiBBNCA1MCA1MiA1OCA0RCAxMCA0OSA2MyA1RiA1
MyA0MiA1RiA1QiA4MCA1MCA0OSAgLlBSWE0uSWNfU0JfWy5QSQogICAgQTQwMDogNTIgNTEgMDEg
MEIgMDAgMEMgMEEgMDIgNUIgODEgMTAgNTAgNDkgNTIgNTEgMDEgIFJRLi4uLi4uWy4uUElSUS4K
ICAgIEE0MTA6IDUwIDQ5IDQ0IDU4IDA4IDUwIDQ0IDQxIDU0IDA4IDVCIDg2IDRFIDBDIDUwIDQ5
ICBQSURYLlBEQVQuWy5OLlBJCiAgICBBNDIwOiA0NCA1OCA1MCA0NCA0MSA1NCAwMSA1MCA0OSA1
MiA0MSAwOCA1MCA0OSA1MiA0MiAgRFhQREFULlBJUkEuUElSQgogICAgQTQzMDogMDggNTAgNDkg
NTIgNDMgMDggNTAgNDkgNTIgNDQgMDggNTAgNDkgNTIgNDUgMDggIC5QSVJDLlBJUkQuUElSRS4K
ICAgIEE0NDA6IDUwIDQ5IDUyIDQ2IDA4IDUwIDQ5IDUyIDQ3IDA4IDUwIDQ5IDUyIDQ4IDA4IDAw
ICBQSVJGLlBJUkcuUElSSC4uCiAgICBBNDUwOiAyMCA1MyA0OSA1MiA0MSAwOCA1MyA0OSA1MiA0
MiAwOCA1MyA0OSA1MiA0MyAwOCAgIFNJUkEuU0lSQi5TSVJDLgogICAgQTQ2MDogNTMgNDkgNTIg
NDQgMDggNTAgNDkgNTIgNTMgMDggMDAgMTAgNDggNDQgNDEgNDQgIFNJUkQuUElSUy4uLkhEQUQK
ICAgIEE0NzA6IDA4IDAwIDE4IDUzIDQ0IDQzIDRDIDA4IDAwIDEwIDUzIDQ0IDQ5IDRGIDA4IDAw
ICAuLi5TRENMLi4uU0RJTy4uCiAgICBBNDgwOiA0OCAwQSA1NSA1MyA0MiAzMSAwOCAwMCAxOCA1
NSA1MyA0MiAzMyAwOCAwMCA0MCAgSC5VU0IxLi4uVVNCMy4uQAogICAgQTQ5MDogMDYgNTMgNDEg
NTQgNDEgMDggMDAgNDAgMTAgNDcgNDkgNEYgNDMgMDggMDAgNDggIC5TQVRBLi5ALkdJT0MuLkgK
ICAgIEE0QTA6IDA2IDQ5IDMyIDQzIDMwIDA4IDQ5IDMyIDQzIDMxIDA4IDQ5IDMyIDQzIDMyIDA4
ICAuSTJDMC5JMkMxLkkyQzIuCiAgICBBNEIwOiA0OSAzMiA0MyAzMyAwOCA1NSA1MiA1NCAzMCAw
OCA1NSA1MiA1NCAzMSAwOCAwMCAgSTJDMy5VUlQwLlVSVDEuLgogICAgQTRDMDogNDAgMDUgNDEg
NDkgNTIgNDEgMDggNDEgNDkgNTIgNDIgMDggNDEgNDkgNTIgNDMgIEAuQUlSQS5BSVJCLkFJUkMK
ICAgIEE0RDA6IDA4IDQxIDQ5IDUyIDQ0IDA4IDQxIDQ5IDUyIDQ1IDA4IDQxIDQ5IDUyIDQ2IDA4
ICAuQUlSRC5BSVJFLkFJUkYuCiAgICBBNEUwOiA0MSA0OSA1MiA0NyAwOCA0MSA0OSA1MiA0OCAw
OCA1QiA4MCA0QiA0MiA0NCA0NCAgQUlSRy5BSVJILlsuS0JERAogICAgQTRGMDogMDEgMEEgNjQg
MDEgNUIgODEgMEIgNEIgNDIgNDQgNDQgMDEgNDkgNEYgMzYgMzQgIC4uZC5bLi5LQkRELklPNjQK
ICAgIEE1MDA6IDA4IDE0IDRGIDA3IDQ0IDUzIDUwIDQ5IDAwIDQ5IDRFIDU0IDQxIDBBIDFGIDQ5
ICAuLk8uRFNQSS5JTlRBLi5JCiAgICBBNTEwOiA0RSA1NCA0MiAwQSAxRiA0OSA0RSA1NCA0MyAw
QSAxRiA0OSA0RSA1NCA0NCAwQSAgTlRCLi5JTlRDLi5JTlRELgogICAgQTUyMDogMUYgNzAgNDkg
NEYgMzYgMzQgNjEgNzAgMEEgMUYgNTAgNDkgNTIgNDUgNzAgMEEgIC5wSU82NGFwLi5QSVJFcC4K
ICAgIEE1MzA6IDFGIDUwIDQ5IDUyIDQ2IDcwIDBBIDFGIDUwIDQ5IDUyIDQ3IDcwIDBBIDFGIDUw
ICAuUElSRnAuLlBJUkdwLi5QCiAgICBBNTQwOiA0OSA1MiA0OCA3MCA0OSA0RiAzNiAzNCA2MSA3
MCAwQSAxMCA0MSA0OSA1MiA0MSAgSVJIcElPNjRhcC4uQUlSQQogICAgQTU1MDogNzAgMEEgMTEg
NDEgNDkgNTIgNDIgNzAgMEEgMTIgNDEgNDkgNTIgNDMgNzAgMEEgIHAuLkFJUkJwLi5BSVJDcC4K
ICAgIEE1NjA6IDEzIDQxIDQ5IDUyIDQ0IDcwIDBBIDE0IDQxIDQ5IDUyIDQ1IDcwIDBBIDE1IDQx
ICAuQUlSRHAuLkFJUkVwLi5BCiAgICBBNTcwOiA0OSA1MiA0NiA3MCAwQSAxNiA0MSA0OSA1MiA0
NyA3MCAwQSAxNyA0MSA0OSA1MiAgSVJGcC4uQUlSR3AuLkFJUgogICAgQTU4MDogNDggMTQgMTIg
NDkgNEUgNTQgNDEgMDEgNzAgNjggNTAgNDkgNTIgNDEgNzAgNjggIEguLklOVEEucGhQSVJBcGgK
ICAgIEE1OTA6IDQ4IDQ0IDQxIDQ0IDE0IDBDIDQ5IDRFIDU0IDQyIDAxIDcwIDY4IDUwIDQ5IDUy
ICBIREFELi5JTlRCLnBoUElSCiAgICBBNUEwOiA0MiAxNCAxOCA0OSA0RSA1NCA0MyAwMSA3MCA2
OCA1MCA0OSA1MiA0MyA3MCA2OCAgQi4uSU5UQy5waFBJUkNwaAogICAgQTVCMDogNTUgNTMgNDIg
MzEgNzAgNjggNTUgNTMgNDIgMzMgMTQgMTIgNDkgNEUgNTQgNDQgIFVTQjFwaFVTQjMuLklOVEQK
ICAgIEE1QzA6IDAxIDcwIDY4IDUwIDQ5IDUyIDQ0IDcwIDY4IDUzIDQxIDU0IDQxIDA4IDQyIDU1
ICAucGhQSVJEcGhTQVRBLkJVCiAgICBBNUQwOiA0NiA0MSAxMSAwOSAwQSAwNiAyMyAwMCA4MCAx
OCA3OSAwMCAwOCA0OSA1MCA1MiAgRkEuLi4uIy4uLnkuLklQUgogICAgQTVFMDogNDEgMTEgMDkg
MEEgMDYgMjMgMjAgMEMgMTggNzkgMDAgMDggNDkgNTAgNTIgNDIgIEEuLi4uIyAuLnkuLklQUkIK
ICAgIEE1RjA6IDExIDA5IDBBIDA2IDIzIDIwIDBDIDE4IDc5IDAwIDA4IDQ5IDUwIDUyIDQzIDEx
ICAuLi4uIyAuLnkuLklQUkMuCiAgICBBNjAwOiAwOSAwQSAwNiAyMyAyMCAwQyAxOCA3OSAwMCAw
OCA0OSA1MCA1MiA0NCAxMSAwOSAgLi4uIyAuLnkuLklQUkQuLgogICAgQTYxMDogMEEgMDYgMjMg
MjAgMEMgMTggNzkgMDAgNUIgODIgNEYgMDcgNEMgNEUgNEIgNDEgIC4uIyAuLnkuWy5PLkxOS0EK
ICAgIEE2MjA6IDA4IDVGIDQ4IDQ5IDQ0IDBDIDQxIEQwIDBDIDBGIDA4IDVGIDU1IDQ5IDQ0IDAx
ICAuX0hJRC5BLi4uLl9VSUQuCiAgICBBNjMwOiAxNCAxNCA1RiA1MyA1NCA0MSAwMCBBMCAwOCA1
MCA0OSA1MiA0MSBBNCAwQSAwQiAgLi5fU1RBLi4uUElSQS4uLgogICAgQTY0MDogQTEgMDQgQTQg
MEEgMDkgMTQgMEIgNUYgNTAgNTIgNTMgMDAgQTQgNTAgNTIgNTMgIC4uLi4uLi5fUFJTLi5QUlMK
ICAgIEE2NTA6IDQxIDE0IDBDIDVGIDQ0IDQ5IDUzIDAwIDQ5IDRFIDU0IDQxIDBBIDFGIDE0IDFG
ICBBLi5fRElTLklOVEEuLi4uCiAgICBBNjYwOiA1RiA0MyA1MiA1MyAwMCA4QiA0MiA1NSA0NiA0
MSAwMSA0OSA1MiA1MSA1OCA3OSAgX0NSUy4uQlVGQS5JUlFYeQogICAgQTY3MDogMDEgNTAgNDkg
NTIgNDEgNDkgNTIgNTEgNTggQTQgNDIgNTUgNDYgNDEgMTQgMUEgIC5QSVJBSVJRWC5CVUZBLi4K
ICAgIEE2ODA6IDVGIDUzIDUyIDUzIDAxIDhCIDY4IDAxIDQ5IDUyIDQxIDVGIDgyIDQ5IDUyIDQx
ICBfU1JTLi5oLklSQV8uSVJBCiAgICBBNjkwOiA1RiA2MCA3NiA2MCA0OSA0RSA1NCA0MSA2MCA1
QiA4MiA0MCAwOCA0QyA0RSA0QiAgX2B2YElOVEFgWy5ALkxOSwogICAgQTZBMDogNDIgMDggNUYg
NDggNDkgNDQgMEMgNDEgRDAgMEMgMEYgMDggNUYgNTUgNDkgNDQgIEIuX0hJRC5BLi4uLl9VSUQK
ICAgIEE2QjA6IDBBIDAyIDE0IDE0IDVGIDUzIDU0IDQxIDAwIEEwIDA4IDUwIDQ5IDUyIDQyIEE0
ICAuLi4uX1NUQS4uLlBJUkIuCiAgICBBNkMwOiAwQSAwQiBBMSAwNCBBNCAwQSAwOSAxNCAwQiA1
RiA1MCA1MiA1MyAwMCBBNCA1MCAgLi4uLi4uLi4uX1BSUy4uUAogICAgQTZEMDogNTIgNTMgNDIg
MTQgMEMgNUYgNDQgNDkgNTMgMDAgNDkgNEUgNTQgNDIgMEEgMUYgIFJTQi4uX0RJUy5JTlRCLi4K
ICAgIEE2RTA6IDE0IDFGIDVGIDQzIDUyIDUzIDAwIDhCIDQyIDU1IDQ2IDQxIDAxIDQ5IDUyIDUx
ICAuLl9DUlMuLkJVRkEuSVJRCiAgICBBNkYwOiA1OCA3OSAwMSA1MCA0OSA1MiA0MiA0OSA1MiA1
MSA1OCBBNCA0MiA1NSA0NiA0MSAgWHkuUElSQklSUVguQlVGQQogICAgQTcwMDogMTQgMUEgNUYg
NTMgNTIgNTMgMDEgOEIgNjggMDEgNDkgNTIgNDEgNUYgODIgNDkgIC4uX1NSUy4uaC5JUkFfLkkK
ICAgIEE3MTA6IDUyIDQxIDVGIDYwIDc2IDYwIDQ5IDRFIDU0IDQyIDYwIDVCIDgyIDQwIDA4IDRD
ICBSQV9gdmBJTlRCYFsuQC5MCiAgICBBNzIwOiA0RSA0QiA0MyAwOCA1RiA0OCA0OSA0NCAwQyA0
MSBEMCAwQyAwRiAwOCA1RiA1NSAgTktDLl9ISUQuQS4uLi5fVQogICAgQTczMDogNDkgNDQgMEEg
MDMgMTQgMTQgNUYgNTMgNTQgNDEgMDAgQTAgMDggNTAgNDkgNTIgIElELi4uLl9TVEEuLi5QSVIK
ICAgIEE3NDA6IDQzIEE0IDBBIDBCIEExIDA0IEE0IDBBIDA5IDE0IDBCIDVGIDUwIDUyIDUzIDAw
ICBDLi4uLi4uLi4uLl9QUlMuCiAgICBBNzUwOiBBNCA1MCA1MiA1MyA0MyAxNCAwQyA1RiA0NCA0
OSA1MyAwMCA0OSA0RSA1NCA0MyAgLlBSU0MuLl9ESVMuSU5UQwogICAgQTc2MDogMEEgMUYgMTQg
MUYgNUYgNDMgNTIgNTMgMDAgOEIgNDIgNTUgNDYgNDEgMDEgNDkgIC4uLi5fQ1JTLi5CVUZBLkkK
ICAgIEE3NzA6IDUyIDUxIDU4IDc5IDAxIDUwIDQ5IDUyIDQzIDQ5IDUyIDUxIDU4IEE0IDQyIDU1
ICBSUVh5LlBJUkNJUlFYLkJVCiAgICBBNzgwOiA0NiA0MSAxNCAxQSA1RiA1MyA1MiA1MyAwMSA4
QiA2OCAwMSA0OSA1MiA0MSA1RiAgRkEuLl9TUlMuLmguSVJBXwogICAgQTc5MDogODIgNDkgNTIg
NDEgNUYgNjAgNzYgNjAgNDkgNEUgNTQgNDMgNjAgNUIgODIgNDAgIC5JUkFfYHZgSU5UQ2BbLkAK
ICAgIEE3QTA6IDA4IDRDIDRFIDRCIDQ0IDA4IDVGIDQ4IDQ5IDQ0IDBDIDQxIEQwIDBDIDBGIDA4
ICAuTE5LRC5fSElELkEuLi4uCiAgICBBN0IwOiA1RiA1NSA0OSA0NCAwQSAwNCAxNCAxNCA1RiA1
MyA1NCA0MSAwMCBBMCAwOCA1MCAgX1VJRC4uLi5fU1RBLi4uUAogICAgQTdDMDogNDkgNTIgNDQg
QTQgMEEgMEIgQTEgMDQgQTQgMEEgMDkgMTQgMEIgNUYgNTAgNTIgIElSRC4uLi4uLi4uLi5fUFIK
ICAgIEE3RDA6IDUzIDAwIEE0IDUwIDUyIDUzIDQ0IDE0IDBDIDVGIDQ0IDQ5IDUzIDAwIDQ5IDRF
ICBTLi5QUlNELi5fRElTLklOCiAgICBBN0UwOiA1NCA0NCAwQSAxRiAxNCAxRiA1RiA0MyA1MiA1
MyAwMCA4QiA0MiA1NSA0NiA0MSAgVEQuLi4uX0NSUy4uQlVGQQogICAgQTdGMDogMDEgNDkgNTIg
NTEgNTggNzkgMDEgNTAgNDkgNTIgNDQgNDkgNTIgNTEgNTggQTQgIC5JUlFYeS5QSVJESVJRWC4K
ICAgIEE4MDA6IDQyIDU1IDQ2IDQxIDE0IDFBIDVGIDUzIDUyIDUzIDAxIDhCIDY4IDAxIDQ5IDUy
ICBCVUZBLi5fU1JTLi5oLklSCiAgICBBODEwOiA0MSA1RiA4MiA0OSA1MiA0MSA1RiA2MCA3NiA2
MCA0OSA0RSA1NCA0NCA2MCA1QiAgQV8uSVJBX2B2YElOVERgWwogICAgQTgyMDogODIgNDIgMDgg
NEMgNEUgNEIgNDUgMDggNUYgNDggNDkgNDQgMEMgNDEgRDAgMEMgIC5CLkxOS0UuX0hJRC5BLi4K
ICAgIEE4MzA6IDBGIDA4IDVGIDU1IDQ5IDQ0IDBBIDA1IDE0IDE0IDVGIDUzIDU0IDQxIDAwIEEw
ICAuLl9VSUQuLi4uX1NUQS4uCiAgICBBODQwOiAwOCA1MCA0OSA1MiA0NSBBNCAwQSAwQiBBMSAw
NCBBNCAwQSAwOSAxNCAwQiA1RiAgLlBJUkUuLi4uLi4uLi4uXwogICAgQTg1MDogNTAgNTIgNTMg
MDAgQTQgNTAgNTIgNTMgNDUgMTQgMEQgNUYgNDQgNDkgNTMgMDAgIFBSUy4uUFJTRS4uX0RJUy4K
ICAgIEE4NjA6IDcwIDBBIDFGIDUwIDQ5IDUyIDQ1IDE0IDFGIDVGIDQzIDUyIDUzIDAwIDhCIDQy
ICBwLi5QSVJFLi5fQ1JTLi5CCiAgICBBODcwOiA1NSA0NiA0MSAwMSA0OSA1MiA1MSA1OCA3OSAw
MSA1MCA0OSA1MiA0NSA0OSA1MiAgVUZBLklSUVh5LlBJUkVJUgogICAgQTg4MDogNTEgNTggQTQg
NDIgNTUgNDYgNDEgMTQgMUIgNUYgNTMgNTIgNTMgMDEgOEIgNjggIFFYLkJVRkEuLl9TUlMuLmgK
ICAgIEE4OTA6IDAxIDQ5IDUyIDQxIDVGIDgyIDUwIDQ5IDUyIDQ1IDYwIDc2IDYwIDcwIDYwIDUw
ICAuSVJBXy5QSVJFYHZgcGBQCiAgICBBOEEwOiA0OSA1MiA0NSA1QiA4MiA0MiAwOCA0QyA0RSA0
QiA0NiAwOCA1RiA0OCA0OSA0NCAgSVJFWy5CLkxOS0YuX0hJRAogICAgQThCMDogMEMgNDEgRDAg
MEMgMEYgMDggNUYgNTUgNDkgNDQgMEEgMDYgMTQgMTQgNUYgNTMgIC5BLi4uLl9VSUQuLi4uX1MK
ICAgIEE4QzA6IDU0IDQxIDAwIEEwIDA4IDUwIDQ5IDUyIDQ2IEE0IDBBIDBCIEExIDA0IEE0IDBB
ICBUQS4uLlBJUkYuLi4uLi4uCiAgICBBOEQwOiAwOSAxNCAwQiA1RiA1MCA1MiA1MyAwMCBBNCA1
MCA1MiA1MyA0NiAxNCAwRCA1RiAgLi4uX1BSUy4uUFJTRi4uXwogICAgQThFMDogNDQgNDkgNTMg
MDAgNzAgMEEgMUYgNTAgNDkgNTIgNDYgMTQgMUYgNUYgNDMgNTIgIERJUy5wLi5QSVJGLi5fQ1IK
ICAgIEE4RjA6IDUzIDAwIDhCIDQyIDU1IDQ2IDQxIDAxIDQ5IDUyIDUxIDU4IDc5IDAxIDUwIDQ5
ICBTLi5CVUZBLklSUVh5LlBJCiAgICBBOTAwOiA1MiA0NiA0OSA1MiA1MSA1OCBBNCA0MiA1NSA0
NiA0MSAxNCAxQiA1RiA1MyA1MiAgUkZJUlFYLkJVRkEuLl9TUgogICAgQTkxMDogNTMgMDEgOEIg
NjggMDEgNDkgNTIgNDEgNUYgODIgNDkgNTIgNDEgNUYgNjAgNzYgIFMuLmguSVJBXy5JUkFfYHYK
ICAgIEE5MjA6IDYwIDcwIDYwIDUwIDQ5IDUyIDQ2IDVCIDgyIDQyIDA4IDRDIDRFIDRCIDQ3IDA4
ICBgcGBQSVJGWy5CLkxOS0cuCiAgICBBOTMwOiA1RiA0OCA0OSA0NCAwQyA0MSBEMCAwQyAwRiAw
OCA1RiA1NSA0OSA0NCAwQSAwNyAgX0hJRC5BLi4uLl9VSUQuLgogICAgQTk0MDogMTQgMTQgNUYg
NTMgNTQgNDEgMDAgQTAgMDggNTAgNDkgNTIgNDcgQTQgMEEgMEIgIC4uX1NUQS4uLlBJUkcuLi4K
ICAgIEE5NTA6IEExIDA0IEE0IDBBIDA5IDE0IDBCIDVGIDUwIDUyIDUzIDAwIEE0IDUwIDUyIDUz
ICAuLi4uLi4uX1BSUy4uUFJTCiAgICBBOTYwOiA0NyAxNCAwRCA1RiA0NCA0OSA1MyAwMCA3MCAw
QSAxRiA1MCA0OSA1MiA0NyAxNCAgRy4uX0RJUy5wLi5QSVJHLgogICAgQTk3MDogMUYgNUYgNDMg
NTIgNTMgMDAgOEIgNDIgNTUgNDYgNDEgMDEgNDkgNTIgNTEgNTggIC5fQ1JTLi5CVUZBLklSUVgK
ICAgIEE5ODA6IDc5IDAxIDUwIDQ5IDUyIDQ3IDQ5IDUyIDUxIDU4IEE0IDQyIDU1IDQ2IDQxIDE0
ICB5LlBJUkdJUlFYLkJVRkEuCiAgICBBOTkwOiAxQiA1RiA1MyA1MiA1MyAwMSA4QiA2OCAwMSA0
OSA1MiA0MSA1RiA4MiA0OSA1MiAgLl9TUlMuLmguSVJBXy5JUgogICAgQTlBMDogNDEgNUYgNjAg
NzYgNjAgNzAgNjAgNTAgNDkgNTIgNDcgNUIgODIgNDIgMDggNEMgIEFfYHZgcGBQSVJHWy5CLkwK
ICAgIEE5QjA6IDRFIDRCIDQ4IDA4IDVGIDQ4IDQ5IDQ0IDBDIDQxIEQwIDBDIDBGIDA4IDVGIDU1
ICBOS0guX0hJRC5BLi4uLl9VCiAgICBBOUMwOiA0OSA0NCAwQSAwOCAxNCAxNCA1RiA1MyA1NCA0
MSAwMCBBMCAwOCA1MCA0OSA1MiAgSUQuLi4uX1NUQS4uLlBJUgogICAgQTlEMDogNDggQTQgMEEg
MEIgQTEgMDQgQTQgMEEgMDkgMTQgMEIgNUYgNTAgNTIgNTMgMDAgIEguLi4uLi4uLi4uX1BSUy4K
ICAgIEE5RTA6IEE0IDUwIDUyIDUzIDQ4IDE0IDBEIDVGIDQ0IDQ5IDUzIDAwIDcwIDBBIDFGIDUw
ICAuUFJTSC4uX0RJUy5wLi5QCiAgICBBOUYwOiA0OSA1MiA0OCAxNCAxRiA1RiA0MyA1MiA1MyAw
MCA4QiA0MiA1NSA0NiA0MSAwMSAgSVJILi5fQ1JTLi5CVUZBLgogICAgQUEwMDogNDkgNTIgNTEg
NTggNzkgMDEgNTAgNDkgNTIgNDggNDkgNTIgNTEgNTggQTQgNDIgIElSUVh5LlBJUkhJUlFYLkIK
ICAgIEFBMTA6IDU1IDQ2IDQxIDE0IDFCIDVGIDUzIDUyIDUzIDAxIDhCIDY4IDAxIDQ5IDUyIDQx
ICBVRkEuLl9TUlMuLmguSVJBCiAgICBBQTIwOiA1RiA4MiA0OSA1MiA0MSA1RiA2MCA3NiA2MCA3
MCA2MCA1MCA0OSA1MiA0OCA1QiAgXy5JUkFfYHZgcGBQSVJIWwogICAgQUEzMDogODIgNEYgMDUg
NDggNTAgNDUgNTQgMDggNUYgNDggNDkgNDQgMEMgNDEgRDAgMDEgIC5PLkhQRVQuX0hJRC5BLi4K
ICAgIEFBNDA6IDAzIDE0IDI1IDVGIDUzIDU0IDQxIDAwIEEwIDFDIDkzIDQ4IDUwIDQ1IDRFIDAx
ICAuLiVfU1RBLi4uLkhQRU4uCiAgICBBQTUwOiBBMCAwQyA5MiA5NSA0RiA1MyA1NiA1MiAwQSAw
QyBBNCAwQSAwRiA3MCAwMCA0OCAgLi4uLk9TVlIuLi4uLnAuSAogICAgQUE2MDogNTAgNDUgNEUg
QTQgMDEgQTQgMDEgMTQgMjggNUYgNDMgNTIgNTMgMDAgMDggNDIgIFBFTi4uLi4uKF9DUlMuLkIK
ICAgIEFBNzA6IDU1IDQ2IDMwIDExIDE3IDBBIDE0IDIyIDAxIDAwIDIyIDAwIDAxIDg2IDA5IDAw
ICBVRjAuLi4uIi4uIi4uLi4uCiAgICBBQTgwOiAwMCAwMCAwMCBEMCBGRSAwMCAwNCAwMCAwMCA3
OSAwMCBBNCA0MiA1NSA0NiAzMCAgLi4uLi4uLi4ueS4uQlVGMAogICAgQUE5MDogMTAgNEYgNEUg
MkYgMDMgNUYgNTMgNDIgNUYgNTAgNDMgNDkgMzEgNDcgNTAgNTAgIC5PTi8uX1NCX1BDSTFHUFAK
ICAgIEFBQTA6IDQyIDVCIDgyIDREIDREIDU1IDUwIDMwIDMwIDA4IDVGIDQxIDQ0IDUyIDAwIDVC
ICBCWy5NTVVQMDAuX0FEUi5bCiAgICBBQUIwOiA4MiAzMCA0NCA1MCAzMCAzMCAwOCA1RiA0MSA0
NCA1MiAwMCAwOCA1RiA1MCA1MiAgLjBEUDAwLl9BRFIuLl9QUgogICAgQUFDMDogNTcgMTIgMDYg
MDIgMEEgMDggMEEgMDQgNUIgODIgMTcgNEMgNEUgMzAgMzAgMDggIFcuLi4uLi4uWy4uTE4wMC4K
ICAgIEFBRDA6IDVGIDQxIDQ0IDUyIDAwIDA4IDVGIDUwIDUyIDU3IDEyIDA2IDAyIDBBIDA4IDBB
ICBfQURSLi5fUFJXLi4uLi4uCiAgICBBQUUwOiAwNCA1QiA4MiAwRiA0NCA1MCAzMiAzMCAwOCA1
RiA0MSA0NCA1MiAwQyAwMCAwMCAgLlsuLkRQMjAuX0FEUi4uLgogICAgQUFGMDogMDQgMDAgNUIg
ODIgMEYgNDQgNTAgMzIgMzggMDggNUYgNDEgNDQgNTIgMEMgMDAgIC4uWy4uRFAyOC5fQURSLi4K
ICAgIEFCMDA6IDAwIDA1IDAwIDVCIDgyIDBGIDQ0IDUwIDMzIDMwIDA4IDVGIDQxIDQ0IDUyIDBD
ICAuLi5bLi5EUDMwLl9BRFIuCiAgICBBQjEwOiAwMCAwMCAwNiAwMCA1QiA4MiAwRiA0NCA1MCAz
MyAzOCAwOCA1RiA0MSA0NCA1MiAgLi4uLlsuLkRQMzguX0FEUgogICAgQUIyMDogMEMgMDAgMDAg
MDcgMDAgNUIgODIgMzQgNDQgNTAgMzQgMzAgMDggNUYgNDEgNDQgIC4uLi4uWy40RFA0MC5fQUQK
ICAgIEFCMzA6IDUyIDBDIDAwIDAwIDA4IDAwIDA4IDVGIDUwIDUyIDU3IDEyIDA2IDAyIDBBIDA4
ICBSLi4uLi4uX1BSVy4uLi4uCiAgICBBQjQwOiAwQSAwNCA1QiA4MiAxNyA1NyA0RSAzMCAzMCAw
OCA1RiA0MSA0NCA1MiAwMCAwOCAgLi5bLi5XTjAwLl9BRFIuLgogICAgQUI1MDogNUYgNTAgNTIg
NTcgMTIgMDYgMDIgMEEgMDggMEEgMDQgNUIgODIgMzQgNDQgNTAgIF9QUlcuLi4uLi4uWy40RFAK
ICAgIEFCNjA6IDM4IDM4IDA4IDVGIDQxIDQ0IDUyIDBDIDAwIDAwIDBCIDAwIDA4IDVGIDUwIDUy
ICA4OC5fQURSLi4uLi4uX1BSCiAgICBBQjcwOiA1NyAxMiAwNiAwMiAwQSAwOCAwQSAwNCA1QiA4
MiAxNyA0QyA0RSAzMCAzMCAwOCAgVy4uLi4uLi5bLi5MTjAwLgogICAgQUI4MDogNUYgNDEgNDQg
NTIgMDAgMDggNUYgNTAgNTIgNTcgMTIgMDYgMDIgMEEgMDggMEEgIF9BRFIuLl9QUlcuLi4uLi4K
ICAgIEFCOTA6IDA0IDVCIDgyIDRGIDNDIDQ0IDUwIDM2IDMwIDA4IDVGIDQxIDQ0IDUyIDBDIDAw
ICAuWy5PPERQNjAuX0FEUi4uCiAgICBBQkEwOiAwMCAwQyAwMCAwOCA1RiA1MCA1MiA1NyAxMiAw
NiAwMiAwQSAwOCAwQSAwNCA1QiAgLi4uLl9QUlcuLi4uLi4uWwogICAgQUJCMDogODIgNDEgM0Ig
NTggNDggMzAgMzAgMDggNUYgNDEgNDQgNTIgMDAgMDggNUYgNTAgIC5BO1hIMDAuX0FEUi4uX1AK
ICAgIEFCQzA6IDUyIDU3IDEyIDA2IDAyIDBBIDA4IDBBIDA0IDVCIDgyIDQ3IDM5IDUyIDQ4IDU1
ICBSVy4uLi4uLi5bLkc5UkhVCiAgICBBQkQwOiA0MiAwOCA1RiA0MSA0NCA1MiAwMCA1QiA4MiAz
MCA1MyA1MyAzMCAzMSAwOCA1RiAgQi5fQURSLlsuMFNTMDEuXwogICAgQUJFMDogNDEgNDQgNTIg
MDEgMTQgMEUgNUYgNTUgNTAgNDMgMDAgQTQgNEQgMzYgMzAgMzAgIEFEUi4uLl9VUEMuLk02MDAK
ICAgIEFCRjA6IDAxIDBBIDA5IDE0IDE1IDVGIDUwIDRDIDQ0IDAwIEE0IDREIDM2IDMwIDMxIDAx
ICAuLi4uLl9QTEQuLk02MDEuCiAgICBBQzAwOiAwMSAwQiAwMSAwMSAwQSAwMyAwQSAxNSAwMCA1
QiA4MiAzMSA0OCA1MyAzMCAzMSAgLi4uLi4uLi4uWy4xSFMwMQogICAgQUMxMDogMDggNUYgNDEg
NDQgNTIgMEEgMDcgMTQgMEUgNUYgNTUgNTAgNDMgMDAgQTQgNEQgIC5fQURSLi4uLl9VUEMuLk0K
ICAgIEFDMjA6IDM2IDMwIDMwIDAxIDBBIDA5IDE0IDE1IDVGIDUwIDRDIDQ0IDAwIEE0IDREIDM2
ICA2MDAuLi4uLl9QTEQuLk02CiAgICBBQzMwOiAzMCAzMSAwMSAwMSAwQiAwMSAwMSAwQSAwMyAw
QSAxNSAwMCA1QiA4MiAzMSA1MyAgMDEuLi4uLi4uLi4uWy4xUwogICAgQUM0MDogNTMgMzAgMzIg
MDggNUYgNDEgNDQgNTIgMEEgMDIgMTQgMEUgNUYgNTUgNTAgNDMgIFMwMi5fQURSLi4uLl9VUEMK
ICAgIEFDNTA6IDAwIEE0IDREIDM2IDMwIDMwIDAxIDBBIDA5IDE0IDE1IDVGIDUwIDRDIDQ0IDAw
ICAuLk02MDAuLi4uLl9QTEQuCiAgICBBQzYwOiBBNCA0RCAzNiAzMCAzMSAwMSAwMSAwQiAwMiAw
MSAwQSAwMyAwQSAxNSAwMCA1QiAgLk02MDEuLi4uLi4uLi4uWwogICAgQUM3MDogODIgMzEgNDgg
NTMgMzAgMzIgMDggNUYgNDEgNDQgNTIgMEEgMDggMTQgMEUgNUYgIC4xSFMwMi5fQURSLi4uLl8K
ICAgIEFDODA6IDU1IDUwIDQzIDAwIEE0IDREIDM2IDMwIDMwIDAxIDBBIDA5IDE0IDE1IDVGIDUw
ICBVUEMuLk02MDAuLi4uLl9QCiAgICBBQzkwOiA0QyA0NCAwMCBBNCA0RCAzNiAzMCAzMSAwMSAw
MSAwQiAwMiAwMSAwQSAwMyAwQSAgTEQuLk02MDEuLi4uLi4uLgogICAgQUNBMDogMTUgMDAgNUIg
ODIgMzEgNTMgNTMgMzAgMzMgMDggNUYgNDEgNDQgNTIgMEEgMDMgIC4uWy4xU1MwMy5fQURSLi4K
ICAgIEFDQjA6IDE0IDBFIDVGIDU1IDUwIDQzIDAwIEE0IDREIDM2IDMwIDMwIDAxIDBBIDAzIDE0
ICAuLl9VUEMuLk02MDAuLi4uCiAgICBBQ0MwOiAxNSA1RiA1MCA0QyA0NCAwMCBBNCA0RCAzNiAz
MCAzMSAwMCAwMSAwQiAwMyAwMSAgLl9QTEQuLk02MDEuLi4uLgogICAgQUNEMDogMEEgMDMgMEEg
MTUgMDAgNUIgODIgMzAgNDggNTMgMzAgMzMgMDggNUYgNDEgNDQgIC4uLi4uWy4wSFMwMy5fQUQK
ICAgIEFDRTA6IDUyIDBBIDA5IDE0IDBEIDVGIDU1IDUwIDQzIDAwIEE0IDREIDM2IDMwIDMwIDAx
ICBSLi4uLl9VUEMuLk02MDAuCiAgICBBQ0YwOiAwMCAxNCAxNSA1RiA1MCA0QyA0NCAwMCBBNCA0
RCAzNiAzMCAzMSAwMCAwMSAwQiAgLi4uX1BMRC4uTTYwMS4uLgogICAgQUQwMDogMDMgMDEgMEEg
MDMgMEEgMTUgMDAgNUIgODIgMzEgNTMgNTMgMzAgMzQgMDggNUYgIC4uLi4uLi5bLjFTUzA0Ll8K
ICAgIEFEMTA6IDQxIDQ0IDUyIDBBIDA0IDE0IDBFIDVGIDU1IDUwIDQzIDAwIEE0IDREIDM2IDMw
ICBBRFIuLi4uX1VQQy4uTTYwCiAgICBBRDIwOiAzMCAwMSAwQSAwMyAxNCAxNSA1RiA1MCA0QyA0
NCAwMCBBNCA0RCAzNiAzMCAzMSAgMC4uLi4uX1BMRC4uTTYwMQogICAgQUQzMDogMDAgMDEgMEIg
MDQgMDEgMEEgMDMgMEEgMTUgMDAgNUIgODIgMzAgNDggNTMgMzAgIC4uLi4uLi4uLi5bLjBIUzAK
ICAgIEFENDA6IDM0IDA4IDVGIDQxIDQ0IDUyIDBBIDBBIDE0IDBEIDVGIDU1IDUwIDQzIDAwIEE0
ICA0Ll9BRFIuLi4uX1VQQy4uCiAgICBBRDUwOiA0RCAzNiAzMCAzMCAwMSAwMCAxNCAxNSA1RiA1
MCA0QyA0NCAwMCBBNCA0RCAzNiAgTTYwMC4uLi5fUExELi5NNgogICAgQUQ2MDogMzAgMzEgMDAg
MDEgMEIgMDMgMDEgMEEgMDMgMEEgMTUgMDAgNUIgODIgMzEgNTMgIDAxLi4uLi4uLi4uLlsuMVMK
ICAgIEFENzA6IDUzIDMwIDM1IDA4IDVGIDQxIDQ0IDUyIDBBIDA1IDE0IDBFIDVGIDU1IDUwIDQz
ICBTMDUuX0FEUi4uLi5fVVBDCiAgICBBRDgwOiAwMCBBNCA0RCAzNiAzMCAzMCAwMSAwQSAwMyAx
NCAxNSA1RiA1MCA0QyA0NCAwMCAgLi5NNjAwLi4uLi5fUExELgogICAgQUQ5MDogQTQgNEQgMzYg
MzAgMzEgMDAgMDEgMEIgMDQgMDEgMEEgMDMgMEEgMTUgMDAgNUIgIC5NNjAxLi4uLi4uLi4uLlsK
ICAgIEFEQTA6IDgyIDMwIDQ4IDUzIDMwIDM1IDA4IDVGIDQxIDQ0IDUyIDBBIDBCIDE0IDBEIDVG
ICAuMEhTMDUuX0FEUi4uLi5fCiAgICBBREIwOiA1NSA1MCA0MyAwMCBBNCA0RCAzNiAzMCAzMCAw
MSAwMCAxNCAxNSA1RiA1MCA0QyAgVVBDLi5NNjAwLi4uLl9QTAogICAgQURDMDogNDQgMDAgQTQg
NEQgMzYgMzAgMzEgMDAgMDEgMEIgMDQgMDEgMEEgMDMgMEEgMTUgIEQuLk02MDEuLi4uLi4uLi4K
ICAgIEFERDA6IDAwIDVCIDgyIDMxIDUzIDUzIDMwIDM2IDA4IDVGIDQxIDQ0IDUyIDBBIDA2IDE0
ICAuWy4xU1MwNi5fQURSLi4uCiAgICBBREUwOiAwRSA1RiA1NSA1MCA0MyAwMCBBNCA0RCAzNiAz
MCAzMCAwMSAwQSAwMyAxNCAxNSAgLl9VUEMuLk02MDAuLi4uLgogICAgQURGMDogNUYgNTAgNEMg
NDQgMDAgQTQgNEQgMzYgMzAgMzEgMDAgMDEgMEIgMDUgMDEgMEEgIF9QTEQuLk02MDEuLi4uLi4K
ICAgIEFFMDA6IDAzIDBBIDE1IDAwIDVCIDgyIDMwIDQ4IDUzIDMwIDM2IDA4IDVGIDQxIDQ0IDUy
ICAuLi4uWy4wSFMwNi5fQURSCiAgICBBRTEwOiAwQSAwQyAxNCAwRCA1RiA1NSA1MCA0MyAwMCBB
NCA0RCAzNiAzMCAzMCAwMSAwMCAgLi4uLl9VUEMuLk02MDAuLgogICAgQUUyMDogMTQgMTUgNUYg
NTAgNEMgNDQgMDAgQTQgNEQgMzYgMzAgMzEgMDAgMDEgMEIgMDUgIC4uX1BMRC4uTTYwMS4uLi4K
ICAgIEFFMzA6IDAxIDBBIDAzIDBBIDE1IDAwIDVCIDgyIDMwIDQ4IDUzIDMwIDM3IDA4IDVGIDQx
ICAuLi4uLi5bLjBIUzA3Ll9BCiAgICBBRTQwOiA0NCA1MiAwQSAwRCAxNCAwRCA1RiA1NSA1MCA0
MyAwMCBBNCA0RCAzNiAzMCAzMCAgRFIuLi4uX1VQQy4uTTYwMAogICAgQUU1MDogMDEgMDAgMTQg
MTUgNUYgNTAgNEMgNDQgMDAgQTQgNEQgMzYgMzAgMzEgMDAgMDEgIC4uLi5fUExELi5NNjAxLi4K
ICAgIEFFNjA6IDBCIDBBIDAxIDBBIDAzIDBBIDE1IDAwIDVCIDgyIDMwIDQ4IDUzIDMwIDM4IDA4
ICAuLi4uLi4uLlsuMEhTMDguCiAgICBBRTcwOiA1RiA0MSA0NCA1MiAwQSAwRSAxNCAwRCA1RiA1
NSA1MCA0MyAwMCBBNCA0RCAzNiAgX0FEUi4uLi5fVVBDLi5NNgogICAgQUU4MDogMzAgMzAgMDEg
MDAgMTQgMTUgNUYgNTAgNEMgNDQgMDAgQTQgNEQgMzYgMzAgMzEgIDAwLi4uLl9QTEQuLk02MDEK
ICAgIEFFOTA6IDAwIDAxIDBCIDBCIDAxIDBBIDAzIDBBIDE1IDAwIDVCIDgyIDMwIDQ4IDUzIDMw
ICAuLi4uLi4uLi4uWy4wSFMwCiAgICBBRUEwOiAzOSAwOCA1RiA0MSA0NCA1MiAwQSAwRiAxNCAw
RCA1RiA1NSA1MCA0MyAwMCBBNCAgOS5fQURSLi4uLl9VUEMuLgogICAgQUVCMDogNEQgMzYgMzAg
MzAgMDAgMDAgMTQgMTUgNUYgNTAgNEMgNDQgMDAgQTQgNEQgMzYgIE02MDAuLi4uX1BMRC4uTTYK
ICAgIEFFQzA6IDMwIDMxIDAwIDAwIDBCIDBDIDAxIDBBIDAzIDBBIDE1IDAwIDVCIDgyIDMwIDQ4
ICAwMS4uLi4uLi4uLi5bLjBICiAgICBBRUQwOiA1MyAzMSAzMCAwOCA1RiA0MSA0NCA1MiAwQSAx
MCAxNCAwRCA1RiA1NSA1MCA0MyAgUzEwLl9BRFIuLi4uX1VQQwogICAgQUVFMDogMDAgQTQgNEQg
MzYgMzAgMzAgMDAgMDAgMTQgMTUgNUYgNTAgNEMgNDQgMDAgQTQgIC4uTTYwMC4uLi5fUExELi4K
ICAgIEFFRjA6IDREIDM2IDMwIDMxIDAwIDAwIDBCIDBEIDAxIDBBIDAzIDBBIDE1IDAwIDVCIDgy
ICBNNjAxLi4uLi4uLi4uLlsuCiAgICBBRjAwOiAzMCA0OCA1MyAzMSAzMSAwOCA1RiA0MSA0NCA1
MiAwQSAxMSAxNCAwRCA1RiA1NSAgMEhTMTEuX0FEUi4uLi5fVQogICAgQUYxMDogNTAgNDMgMDAg
QTQgNEQgMzYgMzAgMzAgMDEgMDAgMTQgMTUgNUYgNTAgNEMgNDQgIFBDLi5NNjAwLi4uLl9QTEQK
ICAgIEFGMjA6IDAwIEE0IDREIDM2IDMwIDMxIDAwIDAxIDBCIDBFIDAxIDBBIDAzIDBBIDE1IDAw
ICAuLk02MDEuLi4uLi4uLi4uCiAgICBBRjMwOiA1QiA4MiAzMCA0OCA1MyAzMSAzMiAwOCA1RiA0
MSA0NCA1MiAwQSAxMiAxNCAwRCAgWy4wSFMxMi5fQURSLi4uLgogICAgQUY0MDogNUYgNTUgNTAg
NDMgMDAgQTQgNEQgMzYgMzAgMzAgMDEgMDAgMTQgMTUgNUYgNTAgIF9VUEMuLk02MDAuLi4uX1AK
ICAgIEFGNTA6IDRDIDQ0IDAwIEE0IDREIDM2IDMwIDMxIDAwIDAxIDBCIDBGIDAxIDBBIDAzIDBB
ICBMRC4uTTYwMS4uLi4uLi4uCiAgICBBRjYwOiAxNSAwMCA1QiA4MiAxQyA0NCA1MCAzNiAzOCAw
OCA1RiA0MSA0NCA1MiAwQyAwMCAgLi5bLi5EUDY4Ll9BRFIuLgogICAgQUY3MDogMDAgMEQgMDAg
NUIgODIgMEIgNTMgNDEgMzAgMzAgMDggNUYgNDEgNDQgNTIgMDAgIC4uLlsuLlNBMDAuX0FEUi4K
ICAgIEFGODA6IDEwIDRBIDA5IDVGIDQ3IDUwIDQ1IDE0IDQzIDA5IDVGIDQ1IDMxIDMwIDAwIEEw
ICAuSi5fR1BFLkMuX0UxMC4uCiAgICBBRjkwOiAyMiA1QiAxMiA1QyAyRiAwMyA1RiA1MyA0MiA1
RiA1MCA0MyA0OSAzMCA1MCA1MCAgIlsuXC8uX1NCX1BDSTBQUAogICAgQUZBMDogNEQgNDUgMDAg
NUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAgNDMgNDkgMzAgNTAgNTAgIE1FLlwvLl9TQl9QQ0kwUFAK
ICAgIEFGQjA6IDREIDQ1IEEwIDIyIDVCIDEyIDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5
ICBNRS4iWy5cLy5fU0JfUENJCiAgICBBRkMwOiAzMSA1MCA1MCA0RCA0NSAwMCA1QyAyRiAwMyA1
RiA1MyA0MiA1RiA1MCA0MyA0OSAgMVBQTUUuXC8uX1NCX1BDSQogICAgQUZEMDogMzEgNTAgNTAg
NEQgNDUgQTAgMjIgNUIgMTIgNUMgMkYgMDMgNUYgNTMgNDIgNUYgIDFQUE1FLiJbLlwvLl9TQl8K
ICAgIEFGRTA6IDUwIDQzIDQ5IDMyIDUwIDUwIDREIDQ1IDAwIDVDIDJGIDAzIDVGIDUzIDQyIDVG
ICBQQ0kyUFBNRS5cLy5fU0JfCiAgICBBRkYwOiA1MCA0MyA0OSAzMiA1MCA1MCA0RCA0NSBBMCAy
MiA1QiAxMiA1QyAyRiAwMyA1RiAgUENJMlBQTUUuIlsuXC8uXwogICAgQjAwMDogNTMgNDIgNUYg
NTAgNDMgNDkgMzMgNTAgNTAgNEQgNDUgMDAgNUMgMkYgMDMgNUYgIFNCX1BDSTNQUE1FLlwvLl8K
ICAgIEIwMTA6IDUzIDQyIDVGIDUwIDQzIDQ5IDMzIDUwIDUwIDREIDQ1IDA4IDU0IDUzIDRGIDUz
ICBTQl9QQ0kzUFBNRS5UU09TCiAgICBCMDIwOiAwQSA3NSBBMCAzRiA1QiAxMiA1QyA1RiA0RiA1
MyA0OSAwMCBBMCAxQSA1RiA0RiAgLnUuP1suXF9PU0kuLi5fTwogICAgQjAzMDogNTMgNDkgMEQg
NTcgNjkgNkUgNjQgNkYgNzcgNzMgMjAgMzIgMzAgMzAgMzkgMDAgIFNJLldpbmRvd3MgMjAwOS4K
ICAgIEIwNDA6IDcwIDBBIDUwIDU0IDUzIDRGIDUzIEEwIDFBIDVGIDRGIDUzIDQ5IDBEIDU3IDY5
ICBwLlBUU09TLi5fT1NJLldpCiAgICBCMDUwOiA2RSA2NCA2RiA3NyA3MyAyMCAzMiAzMCAzMSAz
NSAwMCA3MCAwQSA3MCA1NCA1MyAgbmRvd3MgMjAxNS5wLnBUUwogICAgQjA2MDogNEYgNTMgMTAg
NDggRjcgNUYgNTMgNDIgNUYgNUIgODAgNDUgNDMgNEQgNDMgMDEgIE9TLkguX1NCX1suRUNNQy4K
ICAgIEIwNzA6IDBBIDcyIDBBIDAyIDVCIDgxIDEwIDQ1IDQzIDREIDQzIDAwIDQ1IDQzIDREIDQ5
ICAuci4uWy4uRUNNQy5FQ01JCiAgICBCMDgwOiAwOCA0NSA0MyA0RCA0NCAwOCA1QiA4NiAxMiA0
NSA0MyA0RCA0OSA0NSA0MyA0RCAgLkVDTUQuWy4uRUNNSUVDTQogICAgQjA5MDogNDQgMDEgMDAg
NDAgMDQgNDYgNTIgNTQgNDIgMjAgNUIgODAgNDYgNTIgNTQgNTAgIEQuLkAuRlJUQiBbLkZSVFAK
ICAgIEIwQTA6IDAwIDQ2IDUyIDU0IDQyIDBCIDAwIDAxIDVCIDgxIDQ2IDEyIDQ2IDUyIDU0IDUw
ICAuRlJUQi4uLlsuRi5GUlRQCiAgICBCMEIwOiAwMCA1MCA0NSA0MiA0MSA0MCAwNCAwMCAwMCAw
MCAwNCA0QyA1MCA0MyA0NSAwMSAgLlBFQkFALi4uLi5MUENFLgogICAgQjBDMDogNDkgNDMgMzAg
NDUgMDEgNDkgNDMgMzEgNDUgMDEgNDkgNDMgMzIgNDUgMDEgNDkgIElDMEUuSUMxRS5JQzJFLkkK
ICAgIEIwRDA6IDQzIDMzIDQ1IDAxIDQ5IDQzIDM0IDQ1IDAxIDQ5IDQzIDM1IDQ1IDAxIDU1IDU0
ICBDM0UuSUM0RS5JQzVFLlVUCiAgICBCMEUwOiAzMCA0NSAwMSA1NSA1NCAzMSA0NSAwMSAwMCAw
MSAwMCAwMSA1MyA1NCA1RiA0NSAgMEUuVVQxRS4uLi4uU1RfRQogICAgQjBGMDogMDEgNTUgNTQg
MzIgNDUgMDEgMDAgMDEgNDUgNEQgNEQgNDQgMDIgMDAgMDMgNTggIC5VVDJFLi4uRU1NRC4uLlgK
ICAgIEIxMDA6IDQ4IDQzIDQ1IDAxIDAwIDAxIDAwIDAxIDU1IDU0IDMzIDQ1IDAxIDQ1IDUzIDUw
ICBIQ0UuLi4uLlVUM0UuRVNQCiAgICBCMTEwOiA0OSAwMSA0NSA0RCA0RCA0NSAwMSAwMCAwMyA1
MCA0MyA0NSA0NiAwMSAwMCAwNCAgSS5FTU1FLi4uUENFRi4uLgogICAgQjEyMDogNDkgNDMgMzAg
NDQgMDEgNDkgNDMgMzEgNDQgMDEgNDkgNDMgMzIgNDQgMDEgNDkgIElDMEQuSUMxRC5JQzJELkkK
ICAgIEIxMzA6IDQzIDMzIDQ0IDAxIDQ5IDQzIDM0IDQ0IDAxIDQ5IDQzIDM1IDQ0IDAxIDU1IDU0
ICBDM0QuSUM0RC5JQzVELlVUCiAgICBCMTQwOiAzMCA0NCAwMSA1NSA1NCAzMSA0NCAwMSAwMCAw
MSAwMCAwMSA1MyA1NCA1RiA0NCAgMEQuVVQxRC4uLi4uU1RfRAogICAgQjE1MDogMDEgNTUgNTQg
MzIgNDQgMDEgMDAgMDEgNDUgNDggNDMgNDQgMDEgMDAgMDQgNTggIC5VVDJELi4uRUhDRC4uLlgK
ICAgIEIxNjA6IDQ4IDQzIDQ0IDAxIDUzIDQ0IDVGIDQ0IDAxIDAwIDAxIDU1IDU0IDMzIDQ0IDAx
ICBIQ0QuU0RfRC4uLlVUM0QuCiAgICBCMTcwOiAwMCAwMSA0NSA0RCA0NCAzMyAwMSAwMCAwMiA1
MyAzMCAzMyA0NCAwMSAwMCAwMCAgLi5FTUQzLi4uUzAzRC4uLgogICAgQjE4MDogNDYgNTcgMzAg
MzAgMTAgNDYgNTcgMzAgMzEgMjAgNDYgNTcgMzAgMzIgMTAgNDYgIEZXMDAuRlcwMSBGVzAyLkYK
ICAgIEIxOTA6IDU3IDMwIDMzIDIwIDUzIDQ0IDUzIDMwIDA4IDUzIDQ0IDUzIDMxIDA4IDAwIDQw
ICBXMDMgU0RTMC5TRFMxLi5ACiAgICBCMUEwOiAwOCA1NSA1NCAzMCA0OSAwMSA1NSA1NCAzMSA0
OSAwMSA1NSA1NCAzMiA0OSAwMSAgLlVUMEkuVVQxSS5VVDJJLgogICAgQjFCMDogNTUgNTQgMzMg
NDkgMDEgNTUgNTQgMzQgNDkgMDEgMDAgMDMgNTUgNEMgMzAgNDkgIFVUM0kuVVQ0SS4uLlVMMEkK
ICAgIEIxQzA6IDAxIDU1IDRDIDMxIDQ5IDAxIDU1IDRDIDMyIDQ5IDAxIDU1IDRDIDMzIDQ5IDAx
ICAuVUwxSS5VTDJJLlVMM0kuCiAgICBCMUQwOiA1QiA4MCA0NiA0MyA0NiA0NyAwMCA1MCA0NSA0
MiA0MSAwQyAwMCAwMCAwMCAwMSAgWy5GQ0ZHLlBFQkEuLi4uLgogICAgQjFFMDogNUIgODEgMkIg
NDYgNDMgNDYgNDcgMDMgMDAgQzAgMjIgMTggMDUgNDkgNTAgNDQgIFsuK0ZDRkcuLi4iLi5JUEQK
ICAgIEIxRjA6IDQ1IDIwIDAwIDAwIDQ5IDREIDUwIDQ1IDIwIDAwIDQwIDE2IDAwIDAyIDRDIDQ0
ICBFIC4uSU1QRSAuQC4uLkxECiAgICBCMjAwOiA1MSAzMCAwMSAwMCA0NSAyOSAwMCAwNyA0MSA1
NSA1MyA1MyAwMSA1QiA4MCA0OSAgUTAuLkUpLi5BVVNTLlsuSQogICAgQjIxMDogNEYgNEQgNTgg
MDAgMEMgMDAgMEQgRDggRkUgMEIgMDAgMDEgNUIgODEgNDUgMDcgIE9NWC4uLi4uLi4uLlsuRS4K
ICAgIEIyMjA6IDQ5IDRGIDREIDU4IDAwIDAwIDQ4IDBBIDQ5IDREIDMxIDM1IDA4IDAwIDAwIDQ5
ICBJT01YLi5ILklNMTUuLi5JCiAgICBCMjMwOiA0RCAzMSAzNiAwOCAwMCA0MCAwNCA0OSA0RCAz
MSA0NiAwOCAwMCAwMCA0OSA0RCAgTTE2Li5ALklNMUYuLi5JTQogICAgQjI0MDogMzIgMzAgMDgg
MDAgNDggMTEgNDkgNEQgMzQgMzQgMDggMDAgMDggNDkgNEQgMzQgIDIwLi5ILklNNDQuLi5JTTQK
ICAgIEIyNTA6IDM2IDA4IDAwIDE4IDQ5IDREIDM0IDQxIDA4IDAwIDAwIDQ5IDREIDM0IDQyIDA4
ICA2Li4uSU00QS4uLklNNEIuCiAgICBCMjYwOiAwMCA0OCAwNSA0OSA0RCAzNSAzNyAwOCAwMCAw
MCA0OSA0RCAzNSAzOCAwOCAwMCAgLkguSU01Ny4uLklNNTguLgogICAgQjI3MDogNDggMDcgNDkg
NEQgMzYgMzggMDggMDAgMDAgNDkgNEQgMzYgMzkgMDggMDAgMDAgIEguSU02OC4uLklNNjkuLi4K
ICAgIEIyODA6IDQ5IDREIDM2IDQxIDA4IDAwIDAwIDQ5IDREIDM2IDQyIDA4IDAwIDA4IDQ5IDRE
ICBJTTZBLi4uSU02Qi4uLklNCiAgICBCMjkwOiAzNiA0NCAwOCA1QiA4MCA0NiA0MSA0MyA1MiAw
MCAwQyAwMCAxRSBEOCBGRSAwQiAgNkQuWy5GQUNSLi4uLi4uLgogICAgQjJBMDogMDAgMDEgNUIg
ODEgMkEgNDYgNDEgNDMgNTIgMDAgMDAgNDAgNDAgMDAgMUMgNTIgIC4uWy4qRkFDUi4uQEAuLlIK
ICAgIEIyQjA6IDQ0IDMyIDM4IDAxIDAwIDAxIDUyIDUxIDU0IDU5IDAxIDAwIDAxIDAwIDFDIDUz
ICBEMjguLi5SUVRZLi4uLi5TCiAgICBCMkMwOiA0NCAzMiAzOCAwMSAwMCAwMSAwMCA0MiAwQyA1
MCA0MyAzMSA0MSAwMSA1QiA4MCAgRDI4Li4uLkIuUEMxQS5bLgogICAgQjJEMDogNDUgNEQgNEQg
NTggMDAgMEMgMDAgNTggREQgRkUgMEIgMzAgMDEgNUIgODEgMjEgIEVNTVguLi5YLi4uMC5bLiEK
ICAgIEIyRTA6IDQ1IDREIDREIDU4IDAwIDAwIDQwIDY4IDAwIDExIDQ2IDQzIDMxIDM4IDAxIDQ2
ICBFTU1YLi5AaC4uRkMxOC5GCiAgICBCMkYwOiA0MyAzMyAzMyAwMSAwMCAwNyA0MyA0NCA1RiA1
NCAwMSA1NyA1MCA1RiA1NCAwMSAgQzMzLi4uQ0RfVC5XUF9ULgogICAgQjMwMDogNUIgODAgNDUg
NEQgNEQgNDIgMDAgMEMgMDAgNTggREQgRkUgMEIgMzAgMDEgNUIgIFsuRU1NQi4uLlguLi4wLlsK
ICAgIEIzMTA6IDgxIDJDIDQ1IDREIDREIDQyIDAwIDAwIDQwIDUyIDQ1IDMwIDQxIDM0IDIwIDAw
ICAuLEVNTUIuLkBSRTBBNCAuCiAgICBCMzIwOiAwMCA0NSAzMCA0MSAzOCAyMCAwMCAyMCA0NSAz
MCA0MiAzMCAyMCAwMCA0MCAwRSAgLkUwQTggLiBFMEIwIC5ALgogICAgQjMzMDogNDUgMzAgNDQg
MzAgMjAgMDAgNDAgMjEgNDUgMzEgMzEgMzYgMjAgMDggNTMgNTYgIEUwRDAgLkAhRTExNiAuU1YK
ICAgIEIzNDA6IDQyIDQ2IDExIDA1IDBCIDAwIDAxIDAwIDhBIDUzIDU2IDQyIDQ2IDAwIDUzIDMw
ICBCRi4uLi4uLi5TVkJGLlMwCiAgICBCMzUwOiA0MSAzNCA4QSA1MyA1NiA0MiA0NiAwQSAwNCA1
MyAzMCA0MSAzOCA4QSA1MyA1NiAgQTQuU1ZCRi4uUzBBOC5TVgogICAgQjM2MDogNDIgNDYgMEEg
MDggNTMgMzAgNDIgMzAgOEEgNTMgNTYgNDIgNDYgMEEgMEMgNTMgIEJGLi5TMEIwLlNWQkYuLlMK
ICAgIEIzNzA6IDMwIDQ0IDMwIDhBIDUzIDU2IDQyIDQ2IDBBIDEwIDUzIDMxIDMxIDM2IDE0IDJB
ICAwRDAuU1ZCRi4uUzExNi4qCiAgICBCMzgwOiA1MyA0NSA0MyA1MiAwOCA3MCA0NSAzMSAzMSAz
NiA1MyAzMSAzMSAzNiA3MCAwMCAgU0VDUi5wRTExNlMxMTZwLgogICAgQjM5MDogNTIgNTEgNTQg
NTkgNzAgMDEgNTIgNDQgMzIgMzggNzAgNTMgNDQgMzIgMzggNjAgIFJRVFlwLlJEMjhwU0QyOGAK
ICAgIEIzQTA6IEEyIDA4IDYwIDcwIDUzIDQ0IDMyIDM4IDYwIDE0IDBGIDUyIDQ1IDQzIDUyIDA4
ICAuLmBwU0QyOGAuLlJFQ1IuCiAgICBCM0IwOiA3MCA1MyAzMSAzMSAzNiA0NSAzMSAzMSAzNiA1
QiA4MCA0QyA1NSA0OSA0NSAwMCAgcFMxMTZFMTE2Wy5MVUlFLgogICAgQjNDMDogMEMgMjAgMDAg
REMgRkUgMEEgMDQgNUIgODEgNDMgMDQgNEMgNTUgNDkgNDUgMDAgIC4gLi4uLi5bLkMuTFVJRS4K
ICAgIEIzRDA6IDQ5IDQ1IDUyIDMwIDAxIDQ5IDQ1IDUyIDMxIDAxIDQ5IDQ1IDUyIDMyIDAxIDQ5
ICBJRVIwLklFUjEuSUVSMi5JCiAgICBCM0UwOiA0NSA1MiAzMyAwMSA1NSA0RiA0QyAzMCAwMSA1
NSA0RiA0QyAzMSAwMSA1NSA0RiAgRVIzLlVPTDAuVU9MMS5VTwogICAgQjNGMDogNEMgMzIgMDEg
NTUgNEYgNEMgMzMgMDEgNTcgNTUgNTIgMzAgMDIgNTcgNTUgNTIgIEwyLlVPTDMuV1VSMC5XVVIK
ICAgIEI0MDA6IDMxIDAyIDU3IDU1IDUyIDMyIDAyIDU3IDU1IDUyIDMzIDAyIDE0IDQ3IDA1IDQ2
ICAxLldVUjIuV1VSMy4uRy5GCiAgICBCNDEwOiA1MiA0OSA0OSAwOSBBMCAwOSA5MyA2OCAwMCBB
NCA0OSA0OSA0MyAzMCBBMSA0NSAgUklJLi4uLmguLklJQzAuRQogICAgQjQyMDogMDQgQTAgMDkg
OTMgNjggMDEgQTQgNDkgNDkgNDMgMzEgQTEgMzggQTAgMEEgOTMgIC4uLi5oLi5JSUMxLjguLi4K
ICAgIEI0MzA6IDY4IDBBIDAyIEE0IDQ5IDQ5IDQzIDMyIEExIDJCIEEwIDBBIDkzIDY4IDBBIDAz
ICBoLi4uSUlDMi4rLi4uaC4uCiAgICBCNDQwOiBBNCA0OSA0OSA0MyAzMyBBMSAxRSBBMCAwQSA5
MyA2OCAwQSAwNCBBNCA0OSA0OSAgLklJQzMuLi4uLmguLi5JSQogICAgQjQ1MDogNDMgMzQgQTEg
MTEgQTAgMEEgOTMgNjggMEEgMDUgQTQgNDkgNDkgNDMgMzUgQTEgIEM0Li4uLi5oLi4uSUlDNS4K
ICAgIEI0NjA6IDA0IEE0IDBBIDBBIDE0IDNCIDQ2IDUyIDU1IDQ5IDA5IEEwIDA5IDkzIDY4IDAw
ICAuLi4uLjtGUlVJLi4uLmguCiAgICBCNDcwOiBBNCA0OSA1NSA0MSAzMCBBMSAyQSBBMCAwOSA5
MyA2OCAwMSBBNCA0OSA1NSA0MSAgLklVQTAuKi4uLmguLklVQQogICAgQjQ4MDogMzEgQTEgMUUg
QTAgMEEgOTMgNjggMEEgMDIgQTQgNDkgNTUgNDEgMzIgQTEgMTEgIDEuLi4uLmguLi5JVUEyLi4K
ICAgIEI0OTA6IEEwIDBBIDkzIDY4IDBBIDAzIEE0IDQ5IDU1IDQxIDMzIEExIDA0IEE0IDBBIDAz
ICAuLi5oLi4uSVVBMy4uLi4uCiAgICBCNEEwOiAxNCA0NCAwNSA0NiA1NSA0OSA0RiAwOSBBMCAx
MSA5MyA0OSA0NSA1MiAzMCAwMSAgLkQuRlVJTy4uLi5JRVIwLgogICAgQjRCMDogQTAgMDkgOTMg
NTcgNTUgNTIgMzAgNjggQTQgMDAgQTAgMTEgOTMgNDkgNDUgNTIgIC4uLldVUjBoLi4uLi5JRVIK
ICAgIEI0QzA6IDMxIDAxIEEwIDA5IDkzIDU3IDU1IDUyIDMxIDY4IEE0IDAxIEEwIDEyIDkzIDQ5
ICAxLi4uLldVUjFoLi4uLi5JCiAgICBCNEQwOiA0NSA1MiAzMiAwMSBBMCAwQSA5MyA1NyA1NSA1
MiAzMiA2OCBBNCAwQSAwMiBBMCAgRVIyLi4uLldVUjJoLi4uLgogICAgQjRFMDogMTIgOTMgNDkg
NDUgNTIgMzMgMDEgQTAgMEEgOTMgNTcgNTUgNTIgMzMgNjggQTQgIC4uSUVSMy4uLi5XVVIzaC4K
ICAgIEI0RjA6IDBBIDAzIEE0IDBBIDBGIDE0IDRCIDA2IDUzIDUyIDQxIDQ0IDBBIDc5IDY4IDAx
ICAuLi4uLi5LLlNSQUQueWguCiAgICBCNTAwOiA2MCA3MiA2MCAwQyA0MCAxRSBEOCBGRSA2MCA1
QiA4MCA0MSA0NCA0MyA1MiAwMCAgYHJgLkAuLi5gWy5BRENSLgogICAgQjUxMDogNjAgMEEgMDIg
NUIgODEgMkUgNDEgNDQgNDMgNTIgMDEgNDEgNDQgNTQgNDQgMDIgIGAuLlsuLkFEQ1IuQURURC4K
ICAgIEI1MjA6IDQxIDQ0IDUwIDUzIDAxIDQxIDQ0IDUwIDQ0IDAxIDQxIDQ0IDUzIDRGIDAxIDQx
ICBBRFBTLkFEUEQuQURTTy5BCiAgICBCNTMwOiA0NCA1MyA0MyAwMSA0MSA0NCA1MyA1MiAwMSA0
MSA0NCA0OSA1MyAwMSA0MSA0NCAgRFNDLkFEU1IuQURJUy5BRAogICAgQjU0MDogNDQgNTMgMDMg
NzAgMDEgNDEgNDQgNDkgNTMgNzAgMDAgNDEgNDQgNTMgNTIgNUIgIERTLnAuQURJU3AuQURTUlsK
ICAgIEI1NTA6IDIxIDY5IDcwIDAxIDQxIDQ0IDUzIDUyIDcwIDAwIDQxIDQ0IDQ5IDUzIDVCIDIx
ICAhaXAuQURTUnAuQURJU1shCiAgICBCNTYwOiA2OSAxNCA0MCAwQSA0NCA1MyA0MSA0NCAwQSA3
OSA2OCAwMSA2MCA3MiA2MCAwQyAgaS5ALkRTQUQueWguYHJgLgogICAgQjU3MDogNDAgMUUgRDgg
RkUgNjAgNUIgODAgNDEgNDQgNDMgNTIgMDAgNjAgMEEgMDIgNUIgIEAuLi5gWy5BRENSLmAuLlsK
ICAgIEI1ODA6IDgxIDJFIDQxIDQ0IDQzIDUyIDAxIDQxIDQ0IDU0IDQ0IDAyIDQxIDQ0IDUwIDUz
ICAuLkFEQ1IuQURURC5BRFBTCiAgICBCNTkwOiAwMSA0MSA0NCA1MCA0NCAwMSA0MSA0NCA1MyA0
RiAwMSA0MSA0NCA1MyA0MyAwMSAgLkFEUEQuQURTTy5BRFNDLgogICAgQjVBMDogNDEgNDQgNTMg
NTIgMDEgNDEgNDQgNDkgNTMgMDEgNDEgNDQgNDQgNTMgMDMgQTAgIEFEU1IuQURJUy5BRERTLi4K
ICAgIEI1QjA6IDQyIDA1IDkyIDkzIDY4IDQxIDQ0IDU0IDQ0IEEwIDIzIDkzIDY5IDAwIDcwIDAw
ICBCLi4uaEFEVEQuIy5pLnAuCiAgICBCNUMwOiA0MSA0NCA1NCA0NCA3MCAwMSA0MSA0NCA1MCA0
NCA3MCA0MSA0NCA0NCA1MyA2MCAgQURURHAuQURQRHBBRERTYAogICAgQjVEMDogQTIgMEMgOTIg
OTMgNjAgMEEgMDcgNzAgNDEgNDQgNDQgNTMgNjAgQTAgMjQgOTMgIC4uLi5gLi5wQUREU2AuJC4K
ICAgIEI1RTA6IDY5IDBBIDAzIDcwIDAwIDQxIDQ0IDUwIDQ0IDcwIDQxIDQ0IDQ0IDUzIDYwIEEy
ICBpLi5wLkFEUERwQUREU2AuCiAgICBCNUYwOiAwQiA5MiA5MyA2MCAwMCA3MCA0MSA0NCA0NCA1
MyA2MCA3MCAwQSAwMyA0MSA0NCAgLi4uYC5wQUREU2BwLi5BRAogICAgQjYwMDogNTQgNDQgMTQg
NDUgMEUgNDggNTMgNDEgNDQgMEEgNzkgNjggMDEgNjAgNzIgNjAgIFRELkUuSFNBRC55aC5gcmAK
ICAgIEI2MTA6IDBDIDQwIDFFIEQ4IEZFIDYwIDVCIDgwIDQxIDQ0IDQzIDUyIDAwIDYwIDBBIDAy
ICAuQC4uLmBbLkFEQ1IuYC4uCiAgICBCNjIwOiA1QiA4MSAyRSA0MSA0NCA0MyA1MiAwMSA0MSA0
NCA1NCA0NCAwMiA0MSA0NCA1MCAgWy4uQURDUi5BRFRELkFEUAogICAgQjYzMDogNTMgMDEgNDEg
NDQgNTAgNDQgMDEgNDEgNDQgNTMgNEYgMDEgNDEgNDQgNTMgNDMgIFMuQURQRC5BRFNPLkFEU0MK
ICAgIEI2NDA6IDAxIDQxIDQ0IDUzIDUyIDAxIDQxIDQ0IDQ5IDUzIDAxIDQxIDQ0IDQ0IDUzIDAz
ICAuQURTUi5BRElTLkFERFMuCiAgICBCNjUwOiBBMCA0NyAwOSA5MiA5MyA2OSA0MSA0NCA1NCA0
NCBBMCA0NiAwNCA5MyA2OSAwMCAgLkcuLi5pQURURC5GLi5pLgogICAgQjY2MDogNzAgMDEgNTAg
NDMgMzEgNDEgNzAgMDAgNDEgNDQgNTQgNDQgNzAgMDEgNDEgNDQgIHAuUEMxQXAuQURURHAuQUQK
ICAgIEI2NzA6IDUwIDQ0IDcwIDQxIDQ0IDQ0IDUzIDYwIEEyIDBDIDkyIDkzIDYwIDBBIDA3IDcw
ICBQRHBBRERTYC4uLi5gLi5wCiAgICBCNjgwOiA0MSA0NCA0NCA1MyA2MCA3MCAwMSA1MiA1MSA1
NCA1OSA3MCAwMSA1MiA0NCAzMiAgQUREU2BwLlJRVFlwLlJEMgogICAgQjY5MDogMzggNzAgNTMg
NDQgMzIgMzggNjAgQTIgMDkgOTIgNjAgNzAgNTMgNDQgMzIgMzggIDhwU0QyOGAuLi5gcFNEMjgK
ICAgIEI2QTA6IDYwIEEwIDQ2IDA0IDkzIDY5IDBBIDAzIDcwIDAwIDUyIDUxIDU0IDU5IDcwIDAx
ICBgLkYuLmkuLnAuUlFUWXAuCiAgICBCNkIwOiA1MiA0NCAzMiAzOCA3MCA1MyA0NCAzMiAzOCA2
MCBBMiAwOCA2MCA3MCA1MyA0NCAgUkQyOHBTRDI4YC4uYHBTRAogICAgQjZDMDogMzIgMzggNjAg
NzAgMDAgNDEgNDQgNTAgNDQgNzAgNDEgNDQgNDQgNTMgNjAgQTIgIDI4YHAuQURQRHBBRERTYC4K
ICAgIEI2RDA6IDBCIDkyIDkzIDYwIDAwIDcwIDQxIDQ0IDQ0IDUzIDYwIDcwIDBBIDAzIDQxIDQ0
ICAuLi5gLnBBRERTYHAuLkFECiAgICBCNkUwOiA1NCA0NCA3MCAwMCA1MCA0MyAzMSA0MSA1QiA4
MCA0NiA1MCA0OSA0MyAwMSAwQiAgVERwLlBDMUFbLkZQSUMuLgogICAgQjZGMDogMDAgMEMgMEEg
MDIgNUIgODEgMTAgNDYgNTAgNDkgNDMgMDAgNDYgNTAgNDkgNDkgIC4uLi5bLi5GUElDLkZQSUkK
ICAgIEI3MDA6IDA4IDQ2IDUwIDQ5IDQ0IDA4IDVCIDg2IDNGIDQ2IDUwIDQ5IDQ5IDQ2IDUwIDQ5
ICAuRlBJRC5bLj9GUElJRlBJCiAgICBCNzEwOiA0NCAwMSAwMCA0MCA3OCA0OSA0OSA0MyAzMCAw
OCA0OSA0OSA0MyAzMSAwOCA0OSAgRC4uQHhJSUMwLklJQzEuSQogICAgQjcyMDogNDkgNDMgMzIg
MDggNDkgNDkgNDMgMzMgMDggNDkgNTUgNDEgMzAgMDggNDkgNTUgIElDMi5JSUMzLklVQTAuSVUK
ICAgIEI3MzA6IDQxIDMxIDA4IDQ5IDQ5IDQzIDM0IDA4IDQ5IDQ5IDQzIDM1IDA4IDQ5IDU1IDQx
ICBBMS5JSUM0LklJQzUuSVVBCiAgICBCNzQwOiAzMiAwOCA0OSA1NSA0MSAzMyAwOCA1QiA4MiA0
RSAwNiA0NyA1MCA0OSA0RiAwOCAgMi5JVUEzLlsuTi5HUElPLgogICAgQjc1MDogNUYgNDggNDkg
NDQgMEQgNDEgNEQgNDQgNDkgMzAgMzAgMzMgMzAgMDAgMDggNUYgIF9ISUQuQU1ESTAwMzAuLl8K
ICAgIEI3NjA6IDQzIDQ5IDQ0IDBEIDQxIDREIDQ0IDQ5IDMwIDMwIDMzIDMwIDAwIDA4IDVGIDU1
ICBDSUQuQU1ESTAwMzAuLl9VCiAgICBCNzcwOiA0OSA0NCAwMCAxNCAyQiA1RiA0MyA1MiA1MyAw
MCAwOCA1MiA0MiA1NSA0NiAxMSAgSUQuLitfQ1JTLi5SQlVGLgogICAgQjc4MDogMUEgMEEgMTcg
ODkgMDYgMDAgMEQgMDEgMDcgMDAgMDAgMDAgODYgMDkgMDAgMDEgIC4uLi4uLi4uLi4uLi4uLi4K
ICAgIEI3OTA6IDAwIDE1IEQ4IEZFIDAwIDA0IDAwIDAwIDc5IDAwIEE0IDUyIDQyIDU1IDQ2IDE0
ICAuLi4uLi4uLnkuLlJCVUYuCiAgICBCN0EwOiAxNyA1RiA1MyA1NCA0MSAwMCBBMCAwQyA5MiA5
NSA1NCA1MyA0RiA1MyAwQSA3MCAgLl9TVEEuLi4uLlRTT1MucAogICAgQjdCMDogQTQgMEEgMEYg
QTEgMDMgQTQgMDAgNUIgODIgMUUgNTAgNTAgNEIgNDcgMDggNUYgIC4uLi4uLi5bLi5QUEtHLl8K
ICAgIEI3QzA6IDQ4IDQ5IDQ0IDBEIDQxIDREIDQ0IDQ5IDMwIDMwIDM1IDMyIDAwIDE0IDA5IDVG
ICBISUQuQU1ESTAwNTIuLi5fCiAgICBCN0QwOiA1MyA1NCA0MSAwMCBBNCAwQSAwRiA1QiA4MiA0
MiAwQSA0NiA1NSA1MiAzMCAwOCAgU1RBLi4uLlsuQi5GVVIwLgogICAgQjdFMDogNUYgNDggNDkg
NDQgMEQgNDEgNEQgNDQgNDkgMzAgMzAgMzIgMzAgMDAgMDggNUYgIF9ISUQuQU1ESTAwMjAuLl8K
ICAgIEI3RjA6IDU1IDQ5IDQ0IDAwIDE0IDRDIDA0IDVGIDQzIDUyIDUzIDA4IDA4IDQyIDU1IDQ2
ICBVSUQuLkwuX0NSUy4uQlVGCiAgICBCODAwOiAzMCAxMSAyNiAwQSAyMyA4OSAwNiAwMCAwMyAw
MSAwMyAwMCAwMCAwMCA4NiAwOSAgMC4mLiMuLi4uLi4uLi4uLgogICAgQjgxMDogMDAgMDEgMDAg
OTAgREMgRkUgMDAgMTAgMDAgMDAgODYgMDkgMDAgMDEgMDAgNzAgIC4uLi4uLi4uLi4uLi4uLnAK
ICAgIEI4MjA6IERDIEZFIDAwIDEwIDAwIDAwIDc5IDAwIDhCIDQyIDU1IDQ2IDMwIDBBIDA1IDQ5
ICAuLi4uLi55Li5CVUYwLi5JCiAgICBCODMwOiA1MiA1MSA1NyA3MCA0OSA1NSA0MSAzMCA0OSA1
MiA1MSA1NyBBNCA0MiA1NSA0NiAgUlFXcElVQTBJUlFXLkJVRgogICAgQjg0MDogMzAgMTQgMzkg
NUYgNTMgNTQgNDEgMDAgNzAgMDAgNjAgNzAgNDYgNTUgNDkgNEYgIDAuOV9TVEEucC5gcEZVSU8K
ICAgIEI4NTA6IDAwIDYxIEEwIDFCIDkyIDk1IDU0IDUzIDRGIDUzIDBBIDcwIEEwIDExIDkzIDU1
ICAuYS4uLi5UU09TLnAuLi5VCiAgICBCODYwOiA1NCAzMCA0NSAwMSBBMCAwOSA5MyA2MSAwQSAw
RiA3MCAwQSAwRiA2MCBBMCAwQSAgVDBFLi4uLmEuLnAuLmAuLgogICAgQjg3MDogOTMgNTUgNTQg
MzAgNDkgMDEgNzAgMDAgNjAgQTQgNjAgNUIgODIgNDIgMEEgNDYgIC5VVDBJLnAuYC5gWy5CLkYK
ICAgIEI4ODA6IDU1IDUyIDMxIDA4IDVGIDQ4IDQ5IDQ0IDBEIDQxIDREIDQ0IDQ5IDMwIDMwIDMy
ICBVUjEuX0hJRC5BTURJMDAyCiAgICBCODkwOiAzMCAwMCAwOCA1RiA1NSA0OSA0NCAwMSAxNCA0
QyAwNCA1RiA0MyA1MiA1MyAwOCAgMC4uX1VJRC4uTC5fQ1JTLgogICAgQjhBMDogMDggNDIgNTUg
NDYgMzAgMTEgMjYgMEEgMjMgODkgMDYgMDAgMDMgMDEgMEUgMDAgIC5CVUYwLiYuIy4uLi4uLi4K
ICAgIEI4QjA6IDAwIDAwIDg2IDA5IDAwIDAxIDAwIEEwIERDIEZFIDAwIDEwIDAwIDAwIDg2IDA5
ICAuLi4uLi4uLi4uLi4uLi4uCiAgICBCOEMwOiAwMCAwMSAwMCA4MCBEQyBGRSAwMCAxMCAwMCAw
MCA3OSAwMCA4QiA0MiA1NSA0NiAgLi4uLi4uLi4uLnkuLkJVRgogICAgQjhEMDogMzAgMEEgMDUg
NDkgNTIgNTEgNTcgNzAgNDkgNTUgNDEgMzEgNDkgNTIgNTEgNTcgIDAuLklSUVdwSVVBMUlSUVcK
ICAgIEI4RTA6IEE0IDQyIDU1IDQ2IDMwIDE0IDM5IDVGIDUzIDU0IDQxIDAwIDcwIDAwIDYwIDcw
ICAuQlVGMC45X1NUQS5wLmBwCiAgICBCOEYwOiA0NiA1NSA0OSA0RiAwMSA2MSBBMCAxQiA5MiA5
NSA1NCA1MyA0RiA1MyAwQSA3MCAgRlVJTy5hLi4uLlRTT1MucAogICAgQjkwMDogQTAgMTEgOTMg
NTUgNTQgMzEgNDUgMDEgQTAgMDkgOTMgNjEgMEEgMEYgNzAgMEEgIC4uLlVUMUUuLi4uYS4ucC4K
ICAgIEI5MTA6IDBGIDYwIEEwIDBBIDkzIDU1IDU0IDMxIDQ5IDAxIDcwIDAwIDYwIEE0IDYwIDVC
ICAuYC4uLlVUMUkucC5gLmBbCiAgICBCOTIwOiA4MiA0NCAwQSA0NiA1NSA1MiAzMiAwOCA1RiA0
OCA0OSA0NCAwRCA0MSA0RCA0NCAgLkQuRlVSMi5fSElELkFNRAogICAgQjkzMDogNDkgMzAgMzAg
MzIgMzAgMDAgMDggNUYgNTUgNDkgNDQgMEEgMDIgMTQgNEMgMDQgIEkwMDIwLi5fVUlELi4uTC4K
ICAgIEI5NDA6IDVGIDQzIDUyIDUzIDA4IDA4IDQyIDU1IDQ2IDMwIDExIDI2IDBBIDIzIDg5IDA2
ICBfQ1JTLi5CVUYwLiYuIy4uCiAgICBCOTUwOiAwMCAwMyAwMSAwNSAwMCAwMCAwMCA4NiAwOSAw
MCAwMSAwMCBFMCBEQyBGRSAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQjk2MDogMTAgMDAgMDAg
ODYgMDkgMDAgMDEgMDAgQzAgREMgRkUgMDAgMTAgMDAgMDAgNzkgIC4uLi4uLi4uLi4uLi4uLnkK
ICAgIEI5NzA6IDAwIDhCIDQyIDU1IDQ2IDMwIDBBIDA1IDQ5IDUyIDUxIDU3IDcwIDQ5IDU1IDQx
ICAuLkJVRjAuLklSUVdwSVVBCiAgICBCOTgwOiAzMiA0OSA1MiA1MSA1NyBBNCA0MiA1NSA0NiAz
MCAxNCAzQSA1RiA1MyA1NCA0MSAgMklSUVcuQlVGMC46X1NUQQogICAgQjk5MDogMDAgNzAgMDAg
NjAgNzAgNDYgNTUgNDkgNEYgMEEgMDIgNjEgQTAgMUIgOTIgOTUgIC5wLmBwRlVJTy4uYS4uLi4K
ICAgIEI5QTA6IDU0IDUzIDRGIDUzIDBBIDcwIEEwIDExIDkzIDU1IDU0IDMyIDQ1IDAxIEEwIDA5
ICBUU09TLnAuLi5VVDJFLi4uCiAgICBCOUIwOiA5MyA2MSAwQSAwRiA3MCAwQSAwRiA2MCBBMCAw
QSA5MyA1NSA1NCAzMiA0OSAwMSAgLmEuLnAuLmAuLi5VVDJJLgogICAgQjlDMDogNzAgMDAgNjAg
QTQgNjAgNUIgODIgNDQgMEEgNDYgNTUgNTIgMzMgMDggNUYgNDggIHAuYC5gWy5ELkZVUjMuX0gK
ICAgIEI5RDA6IDQ5IDQ0IDBEIDQxIDREIDQ0IDQ5IDMwIDMwIDMyIDMwIDAwIDA4IDVGIDU1IDQ5
ICBJRC5BTURJMDAyMC4uX1VJCiAgICBCOUUwOiA0NCAwQSAwMyAxNCA0QyAwNCA1RiA0MyA1MiA1
MyAwOCAwOCA0MiA1NSA0NiAzMCAgRC4uLkwuX0NSUy4uQlVGMAogICAgQjlGMDogMTEgMjYgMEEg
MjMgODkgMDYgMDAgMDMgMDEgMEYgMDAgMDAgMDAgODYgMDkgMDAgIC4mLiMuLi4uLi4uLi4uLi4K
ICAgIEJBMDA6IDAxIDAwIEYwIERDIEZFIDAwIDEwIDAwIDAwIDg2IDA5IDAwIDAxIDAwIEQwIERD
ICAuLi4uLi4uLi4uLi4uLi4uCiAgICBCQTEwOiBGRSAwMCAxMCAwMCAwMCA3OSAwMCA4QiA0MiA1
NSA0NiAzMCAwQSAwNSA0OSA1MiAgLi4uLi55Li5CVUYwLi5JUgogICAgQkEyMDogNTEgNTcgNzAg
NDkgNTUgNDEgMzMgNDkgNTIgNTEgNTcgQTQgNDIgNTUgNDYgMzAgIFFXcElVQTNJUlFXLkJVRjAK
ICAgIEJBMzA6IDE0IDNBIDVGIDUzIDU0IDQxIDAwIDcwIDAwIDYwIDcwIDQ2IDU1IDQ5IDRGIDBB
ICAuOl9TVEEucC5gcEZVSU8uCiAgICBCQTQwOiAwMyA2MSBBMCAxQiA5MiA5NSA1NCA1MyA0RiA1
MyAwQSA3MCBBMCAxMSA5MyA1NSAgLmEuLi4uVFNPUy5wLi4uVQogICAgQkE1MDogNTQgMzMgNDUg
MDEgQTAgMDkgOTMgNjEgMEEgMEYgNzAgMEEgMEYgNjAgQTAgMEEgIFQzRS4uLi5hLi5wLi5gLi4K
ICAgIEJBNjA6IDkzIDU1IDU0IDMzIDQ5IDAxIDcwIDAwIDYwIEE0IDYwIDVCIDgyIDRDIDA4IDQ5
ICAuVVQzSS5wLmAuYFsuTC5JCiAgICBCQTcwOiAzMiA0MyA0MSAwOCA1RiA0OCA0OSA0NCAwRCA0
MSA0RCA0NCA0OSAzMCAzMCAzMSAgMkNBLl9ISUQuQU1ESTAwMQogICAgQkE4MDogMzAgMDAgMDgg
NUYgNTUgNDkgNDQgMDAgMTQgM0YgNUYgNDMgNTIgNTMgMDggMDggIDAuLl9VSUQuLj9fQ1JTLi4K
ICAgIEJBOTA6IDQyIDU1IDQ2IDMwIDExIDFBIDBBIDE3IDg5IDA2IDAwIDAzIDAxIDBBIDAwIDAw
ICBCVUYwLi4uLi4uLi4uLi4uCiAgICBCQUEwOiAwMCA4NiAwOSAwMCAwMSAwMCAyMCBEQyBGRSAw
MCAxMCAwMCAwMCA3OSAwMCA4QiAgLi4uLi4uIC4uLi4uLnkuLgogICAgQkFCMDogNDIgNTUgNDYg
MzAgMEEgMDUgNDkgNTIgNTEgNTcgNzAgNDkgNDkgNDMgMzAgNDkgIEJVRjAuLklSUVdwSUlDMEkK
ICAgIEJBQzA6IDUyIDUxIDU3IEE0IDQyIDU1IDQ2IDMwIDE0IDIxIDVGIDUzIDU0IDQxIDAwIEEw
ICBSUVcuQlVGMC4hX1NUQS4uCiAgICBCQUQwOiAxNiA5MiA5NSA1NCA1MyA0RiA1MyAwQSA3MCBB
MCAwQSA5MyA0OSA0MyAzMCA0NSAgLi4uVFNPUy5wLi4uSUMwRQogICAgQkFFMDogMDEgQTQgMEEg
MEYgQTQgMDAgQTEgMDMgQTQgMDAgMTQgMEUgNTIgNTMgNDUgNTQgIC4uLi4uLi4uLi4uLlJTRVQK
ICAgIEJBRjA6IDAwIDUzIDUyIDQxIDQ0IDBBIDA1IDBBIEM4IDVCIDgyIDRDIDA4IDQ5IDMyIDQz
ICAuU1JBRC4uLi5bLkwuSTJDCiAgICBCQjAwOiA0MiAwOCA1RiA0OCA0OSA0NCAwRCA0MSA0RCA0
NCA0OSAzMCAzMCAzMSAzMCAwMCAgQi5fSElELkFNREkwMDEwLgogICAgQkIxMDogMDggNUYgNTUg
NDkgNDQgMDEgMTQgM0YgNUYgNDMgNTIgNTMgMDggMDggNDIgNTUgIC5fVUlELi4/X0NSUy4uQlUK
ICAgIEJCMjA6IDQ2IDMwIDExIDFBIDBBIDE3IDg5IDA2IDAwIDAzIDAxIDBCIDAwIDAwIDAwIDg2
ICBGMC4uLi4uLi4uLi4uLi4uCiAgICBCQjMwOiAwOSAwMCAwMSAwMCAzMCBEQyBGRSAwMCAxMCAw
MCAwMCA3OSAwMCA4QiA0MiA1NSAgLi4uLjAuLi4uLi55Li5CVQogICAgQkI0MDogNDYgMzAgMEEg
MDUgNDkgNTIgNTEgNTcgNzAgNDkgNDkgNDMgMzEgNDkgNTIgNTEgIEYwLi5JUlFXcElJQzFJUlEK
ICAgIEJCNTA6IDU3IEE0IDQyIDU1IDQ2IDMwIDE0IDIxIDVGIDUzIDU0IDQxIDAwIEEwIDE2IDky
ICBXLkJVRjAuIV9TVEEuLi4uCiAgICBCQjYwOiA5NSA1NCA1MyA0RiA1MyAwQSA3MCBBMCAwQSA5
MyA0OSA0MyAzMSA0NSAwMSBBNCAgLlRTT1MucC4uLklDMUUuLgogICAgQkI3MDogMEEgMEYgQTQg
MDAgQTEgMDMgQTQgMDAgMTQgMEUgNTIgNTMgNDUgNTQgMDAgNTMgIC4uLi4uLi4uLi5SU0VULlMK
ICAgIEJCODA6IDUyIDQxIDQ0IDBBIDA2IDBBIEM4IDVCIDgyIDREIDA4IDQ5IDMyIDQzIDQzIDA4
ICBSQUQuLi4uWy5NLkkyQ0MuCiAgICBCQjkwOiA1RiA0OCA0OSA0NCAwRCA0MSA0RCA0NCA0OSAz
MCAzMCAzMSAzMCAwMCAwOCA1RiAgX0hJRC5BTURJMDAxMC4uXwogICAgQkJBMDogNTUgNDkgNDQg
MEEgMDIgMTQgM0YgNUYgNDMgNTIgNTMgMDggMDggNDIgNTUgNDYgIFVJRC4uLj9fQ1JTLi5CVUYK
ICAgIEJCQjA6IDMwIDExIDFBIDBBIDE3IDg5IDA2IDAwIDAzIDAxIDA0IDAwIDAwIDAwIDg2IDA5
ICAwLi4uLi4uLi4uLi4uLi4uCiAgICBCQkMwOiAwMCAwMSAwMCA0MCBEQyBGRSAwMCAxMCAwMCAw
MCA3OSAwMCA4QiA0MiA1NSA0NiAgLi4uQC4uLi4uLnkuLkJVRgogICAgQkJEMDogMzAgMEEgMDUg
NDkgNTIgNTEgNTcgNzAgNDkgNDkgNDMgMzIgNDkgNTIgNTEgNTcgIDAuLklSUVdwSUlDMklSUVcK
ICAgIEJCRTA6IEE0IDQyIDU1IDQ2IDMwIDE0IDIxIDVGIDUzIDU0IDQxIDAwIEEwIDE2IDkyIDk1
ICAuQlVGMC4hX1NUQS4uLi4uCiAgICBCQkYwOiA1NCA1MyA0RiA1MyAwQSA3MCBBMCAwQSA5MyA0
OSA0MyAzMiA0NSAwMSBBNCAwQSAgVFNPUy5wLi4uSUMyRS4uLgogICAgQkMwMDogMEYgQTQgMDAg
QTEgMDMgQTQgMDAgMTQgMEUgNTIgNTMgNDUgNTQgMDAgNTMgNTIgIC4uLi4uLi4uLlJTRVQuU1IK
ICAgIEJDMTA6IDQxIDQ0IDBBIDA3IDBBIEM4IDVCIDgyIDREIDA4IDQ5IDMyIDQzIDQ0IDA4IDVG
ICBBRC4uLi5bLk0uSTJDRC5fCiAgICBCQzIwOiA0OCA0OSA0NCAwRCA0MSA0RCA0NCA0OSAzMCAz
MCAzMSAzMCAwMCAwOCA1RiA1NSAgSElELkFNREkwMDEwLi5fVQogICAgQkMzMDogNDkgNDQgMEEg
MDMgMTQgM0YgNUYgNDMgNTIgNTMgMDggMDggNDIgNTUgNDYgMzAgIElELi4uP19DUlMuLkJVRjAK
ICAgIEJDNDA6IDExIDFBIDBBIDE3IDg5IDA2IDAwIDAzIDAxIDA2IDAwIDAwIDAwIDg2IDA5IDAw
ICAuLi4uLi4uLi4uLi4uLi4uCiAgICBCQzUwOiAwMSAwMCA1MCBEQyBGRSAwMCAxMCAwMCAwMCA3
OSAwMCA4QiA0MiA1NSA0NiAzMCAgLi5QLi4uLi4ueS4uQlVGMAogICAgQkM2MDogMEEgMDUgNDkg
NTIgNTEgNTcgNzAgNDkgNDkgNDMgMzMgNDkgNTIgNTEgNTcgQTQgIC4uSVJRV3BJSUMzSVJRVy4K
ICAgIEJDNzA6IDQyIDU1IDQ2IDMwIDE0IDIxIDVGIDUzIDU0IDQxIDAwIEEwIDE2IDkyIDk1IDU0
ICBCVUYwLiFfU1RBLi4uLi5UCiAgICBCQzgwOiA1MyA0RiA1MyAwQSA3MCBBMCAwQSA5MyA0OSA0
MyAzMyA0NSAwMSBBNCAwQSAwRiAgU09TLnAuLi5JQzNFLi4uLgogICAgQkM5MDogQTQgMDAgQTEg
MDMgQTQgMDAgMTQgMEUgNTIgNTMgNDUgNTQgMDAgNTMgNTIgNDEgIC4uLi4uLi4uUlNFVC5TUkEK
ICAgIEJDQTA6IDQ0IDBBIDA4IDBBIEM4IDVCIDgyIDREIDA4IDQ5IDMyIDQzIDQ1IDA4IDVGIDQ4
ICBELi4uLlsuTS5JMkNFLl9ICiAgICBCQ0IwOiA0OSA0NCAwRCA0MSA0RCA0NCA0OSAzMCAzMCAz
MSAzMCAwMCAwOCA1RiA1NSA0OSAgSUQuQU1ESTAwMTAuLl9VSQogICAgQkNDMDogNDQgMEEgMDQg
MTQgM0YgNUYgNDMgNTIgNTMgMDggMDggNDIgNTUgNDYgMzAgMTEgIEQuLi4/X0NSUy4uQlVGMC4K
ICAgIEJDRDA6IDFBIDBBIDE3IDg5IDA2IDAwIDAzIDAxIDE2IDAwIDAwIDAwIDg2IDA5IDAwIDAx
ICAuLi4uLi4uLi4uLi4uLi4uCiAgICBCQ0UwOiAwMCA2MCBEQyBGRSAwMCAxMCAwMCAwMCA3OSAw
MCA4QiA0MiA1NSA0NiAzMCAwQSAgLmAuLi4uLi55Li5CVUYwLgogICAgQkNGMDogMDUgNDkgNTIg
NTEgNTcgNzAgNDkgNDkgNDMgMzQgNDkgNTIgNTEgNTcgQTQgNDIgIC5JUlFXcElJQzRJUlFXLkIK
ICAgIEJEMDA6IDU1IDQ2IDMwIDE0IDIxIDVGIDUzIDU0IDQxIDAwIEEwIDE2IDkyIDk1IDU0IDUz
ICBVRjAuIV9TVEEuLi4uLlRTCiAgICBCRDEwOiA0RiA1MyAwQSA3MCBBMCAwQSA5MyA0OSA0MyAz
NCA0NSAwMSBBNCAwQSAwRiBBNCAgT1MucC4uLklDNEUuLi4uLgogICAgQkQyMDogMDAgQTEgMDMg
QTQgMDAgMTQgMEUgNTIgNTMgNDUgNTQgMDAgNTMgNTIgNDEgNDQgIC4uLi4uLi5SU0VULlNSQUQK
ICAgIEJEMzA6IDBBIDA5IDBBIEM4IDVCIDgyIDREIDA4IDQ5IDMyIDQzIDQ2IDA4IDVGIDQ4IDQ5
ICAuLi4uWy5NLkkyQ0YuX0hJCiAgICBCRDQwOiA0NCAwRCA0MSA0RCA0NCA0OSAzMCAzMCAzMSAz
MCAwMCAwOCA1RiA1NSA0OSA0NCAgRC5BTURJMDAxMC4uX1VJRAogICAgQkQ1MDogMEEgMDUgMTQg
M0YgNUYgNDMgNTIgNTMgMDggMDggNDIgNTUgNDYgMzAgMTEgMUEgIC4uLj9fQ1JTLi5CVUYwLi4K
ICAgIEJENjA6IDBBIDE3IDg5IDA2IDAwIDAzIDAxIDE3IDAwIDAwIDAwIDg2IDA5IDAwIDAxIDAw
ICAuLi4uLi4uLi4uLi4uLi4uCiAgICBCRDcwOiBCMCBEQyBGRSAwMCAxMCAwMCAwMCA3OSAwMCA4
QiA0MiA1NSA0NiAzMCAwQSAwNSAgLi4uLi4uLnkuLkJVRjAuLgogICAgQkQ4MDogNDkgNTIgNTEg
NTcgNzAgNDkgNDkgNDMgMzUgNDkgNTIgNTEgNTcgQTQgNDIgNTUgIElSUVdwSUlDNUlSUVcuQlUK
ICAgIEJEOTA6IDQ2IDMwIDE0IDIxIDVGIDUzIDU0IDQxIDAwIEEwIDE2IDkyIDk1IDU0IDUzIDRG
ICBGMC4hX1NUQS4uLi4uVFNPCiAgICBCREEwOiA1MyAwQSA3MCBBMCAwQSA5MyA0OSA0MyAzNSA0
NSAwMSBBNCAwQSAwRiBBNCAwMCAgUy5wLi4uSUM1RS4uLi4uLgogICAgQkRCMDogQTEgMDMgQTQg
MDAgMTQgMEUgNTIgNTMgNDUgNTQgMDAgNTMgNTIgNDEgNDQgMEEgIC4uLi4uLlJTRVQuU1JBRC4K
ICAgIEJEQzA6IDBBIDBBIEM4IDE0IDRBIDA3IDQ1IDUwIDQ5IDRFIDAwIDcwIDAwIDQ5IDUwIDQ0
ICAuLi4uSi5FUElOLnAuSVBECiAgICBCREQwOiA0NSA3MCAwMCA0OSA0RCA1MCA0NSA3MCAwMSA0
OSA0RCAzMSAzNSA3MCAwMSA0OSAgRXAuSU1QRXAuSU0xNXAuSQogICAgQkRFMDogNEQgMzEgMzYg
NzAgMDEgNDkgNEQgMzIgMzAgNzAgMDEgNDkgNEQgMzQgMzQgNzAgIE0xNnAuSU0yMHAuSU00NHAK
ICAgIEJERjA6IDAxIDQ5IDREIDM0IDM2IDcwIDAxIDQ5IDREIDM2IDM4IDcwIDAxIDQ5IDREIDM2
ICAuSU00NnAuSU02OHAuSU02CiAgICBCRTAwOiAzOSA3MCAwMSA0OSA0RCAzNiA0MSA3MCAwMSA0
OSA0RCAzNiA0MiA3MCAwMSA0OSAgOXAuSU02QXAuSU02QnAuSQogICAgQkUxMDogNEQgMzEgNDYg
QTAgMjYgOTIgOTMgNDUgNEQgNEQgNDQgMDEgNzAgMDEgNDkgNEQgIE0xRi4mLi5FTU1ELnAuSU0K
ICAgIEJFMjA6IDM0IDQxIDcwIDAxIDQ5IDREIDM1IDM4IDcwIDAxIDQ5IDREIDM0IDQyIDcwIDAx
ICA0QXAuSU01OHAuSU00QnAuCiAgICBCRTMwOiA0OSA0RCAzNSAzNyA3MCAwMSA0OSA0RCAzNiA0
NCA1MyA0NSA0MyA1MiAwOCA0RSAgSU01N3AuSU02RFNFQ1IuTgogICAgQkU0MDogNDMgNTIgNTMg
MTEgMUEgMEEgMTcgODkgMDYgMDAgMEQgMDEgMDUgMDAgMDAgMDAgIENSUy4uLi4uLi4uLi4uLi4K
ICAgIEJFNTA6IDg2IDA5IDAwIDAxIDAwIDUwIEREIEZFIDAwIDEwIDAwIDAwIDc5IDAwIDA4IDQ0
ICAuLi4uLlAuLi4uLi55Li5ECiAgICBCRTYwOiA0MyA1MiA1MyAxMSA0MSAwNiAwQSA1RCA4OSAw
NiAwMCAwRCAwMSAwNSAwMCAwMCAgQ1JTLkEuLl0uLi4uLi4uLgogICAgQkU3MDogMDAgODYgMDkg
MDAgMDEgMDAgNTAgREQgRkUgMDAgMTAgMDAgMDAgOEMgMjAgMDAgIC4uLi4uLlAuLi4uLi4uIC4K
ICAgIEJFODA6IDAxIDAwIDAxIDAwIDFEIDAwIDAxIDAwIDAwIEI4IDBCIDE3IDAwIDAwIDE5IDAw
ICAuLi4uLi4uLi4uLi4uLi4uCiAgICBCRTkwOiAyMyAwMCAwMCAwMCA0NCAwMCA1QyA1RiA1MyA0
MiAyRSA0NyA1MCA0OSA0RiAwMCAgIy4uLkQuXF9TQi5HUElPLgogICAgQkVBMDogOEMgMjAgMDAg
MDEgMDEgMDEgMDAgMDggMDAgMDEgMDAgMDAgMDAgMDAgMTcgMDAgIC4gLi4uLi4uLi4uLi4uLi4K
ICAgIEJFQjA6IDAwIDE5IDAwIDIzIDAwIDAwIDAwIDQ0IDAwIDVDIDVGIDUzIDQyIDJFIDQ3IDUw
ICAuLi4jLi4uRC5cX1NCLkdQCiAgICBCRUMwOiA0OSA0RiAwMCA3OSAwMCAwOCA0MSA0OCA0OSA0
NCAwRCA0MSA0RCA0NCA0OSAzMCAgSU8ueS4uQUhJRC5BTURJMAogICAgQkVEMDogMzAgMzQgMzAg
MDAgMDggNDEgNDMgNDkgNDQgMEQgNDEgNEQgNDQgNDkgMzAgMzAgIDA0MC4uQUNJRC5BTURJMDAK
ICAgIEJFRTA6IDM0IDMwIDAwIDA4IDUzIDQ4IDQ5IDQ0IDBDIDQxIEQwIDBEIDQwIDA4IDUzIDQz
ICA0MC4uU0hJRC5BLi5ALlNDCiAgICBCRUYwOiA0OSA0NCAwRCA1MCA0MyA0OSA1QyA0MyA0MyA1
RiAzMCAzOCAzMCAzNSAzMCAzMSAgSUQuUENJXENDXzA4MDUwMQogICAgQkYwMDogMDAgNUIgODIg
NDggMEQgNDUgNEQgNEQgMzAgMTQgMTggNUYgNDggNDkgNDQgMDggIC5bLkguRU1NMC4uX0hJRC4K
ICAgIEJGMTA6IEEwIDBBIDQ1IDREIDREIDQ0IEE0IDUzIDQ4IDQ5IDQ0IEExIDA2IEE0IDQxIDQ4
ICAuLkVNTUQuU0hJRC4uLkFICiAgICBCRjIwOiA0OSA0NCAxNCAxOCA1RiA0MyA0OSA0NCAwOCBB
MCAwQSA0NSA0RCA0RCA0NCBBNCAgSUQuLl9DSUQuLi5FTU1ELgogICAgQkYzMDogNTMgNDMgNDkg
NDQgQTEgMDYgQTQgNDEgNDMgNDkgNDQgMDggNUYgNTUgNDkgNDQgIFNDSUQuLi5BQ0lELl9VSUQK
ICAgIEJGNDA6IDAwIDE0IDE4IDVGIDQzIDUyIDUzIDA4IEEwIDBBIDQ1IDREIDQ0IDMzIEE0IDQ0
ICAuLi5fQ1JTLi4uRU1EMy5ECiAgICBCRjUwOiA0MyA1MiA1MyBBMSAwNiBBNCA0RSA0MyA1MiA1
MyAxNCAxRiA1RiA1MyA1NCA0MSAgQ1JTLi4uTkNSUy4uX1NUQQogICAgQkY2MDogMDAgQTAgMTQg
OTIgOTUgNTQgNTMgNEYgNTMgMEEgNzAgQTAgMDggNDUgNEQgNEQgIC4uLi4uVFNPUy5wLi5FTU0K
ICAgIEJGNzA6IDQ1IEE0IDBBIDBGIEE0IDAwIEExIDAzIEE0IDAwIDE0IDEwIDVGIDQ5IDRFIDQ5
ICBFLi4uLi4uLi4uLi5fSU5JCiAgICBCRjgwOiAwMCBBMCAwOSA0NSA0RCA0RCA0NSA0NSA1MCA0
OSA0RSAxNCAxOCA1RiA1MyAzMCAgLi4uRU1NRUVQSU4uLl9TMAogICAgQkY5MDogNTcgMDAgQTAg
MEQgOTAgNDUgNEQgNDQgMzMgNDUgNEQgNEQgNDUgQTQgMEEgMDQgIFcuLi4uRU1EM0VNTUUuLi4K
ICAgIEJGQTA6IEExIDAzIEE0IDAwIDE0IDFDIDVGIDUwIDUzIDMwIDAwIEEwIDE1IDkwIDQ1IDRE
ICAuLi4uLi5fUFMwLi4uLkVNCiAgICBCRkIwOiA0NCAzMyA0NSA0RCA0RCA0NSA0OCA1MyA0MSA0
NCAwQSAxQyAwMCA1MiA0NSA0MyAgRDNFTU1FSFNBRC4uLlJFQwogICAgQkZDMDogNTIgMTQgMTkg
NUYgNTAgNTMgMzMgMDAgQTAgMTIgOTAgNDUgNEQgNDQgMzMgNDUgIFIuLl9QUzMuLi4uRU1EM0UK
ICAgIEJGRDA6IDREIDREIDQ1IDQ4IDUzIDQxIDQ0IDBBIDFDIDBBIDAzIDEwIDQ4IDVCIDJFIDVG
ICBNTUVIU0FELi4uLi5IWy5fCiAgICBCRkUwOiA1MyA0MiA1RiA1MCA0MyA0OSAzMCA1QiA4MiA0
NyAxNiA1NSA0MSA1MiAzMSAwOCAgU0JfUENJMFsuRy5VQVIxLgogICAgQkZGMDogNUYgNDggNDkg
NDQgMEMgNDEgRDAgMDUgMDAgMDggNUYgNTUgNDkgNDQgMDEgMDggIF9ISUQuQS4uLi5fVUlELi4K
ICAgIEMwMDA6IDVGIDQ0IDQ0IDRFIDBEIDQzIDRGIDREIDMxIDAwIDE0IDI4IDVGIDUzIDU0IDQx
ICBfREROLkNPTTEuLihfU1RBCiAgICBDMDEwOiAwMCA3MCAwMCA2MCA3MCA0NiA1NSA0OSA0RiAw
MCA2MSBBMCAwQSA5MiA5MyA2MSAgLnAuYHBGVUlPLmEuLi4uYQogICAgQzAyMDogMEEgMEYgNzAg
MEEgMEYgNjAgQTAgMEEgOTMgNTUgNEMgMzAgNDkgMDEgNzAgMDAgIC4ucC4uYC4uLlVMMEkucC4K
ICAgIEMwMzA6IDYwIEE0IDYwIDE0IDRDIDExIDVGIDQzIDUyIDUzIDA4IDA4IDVGIDU0IDVGIDMw
ICBgLmAuTC5fQ1JTLi5fVF8wCiAgICBDMDQwOiAwMCAwOCA0MiA1NSA0NiAzMCAxMSAxMCAwQSAw
RCA0NyAwMSBFOCAwMiBFOCAwMiAgLi5CVUYwLi4uLkcuLi4uLgogICAgQzA1MDogMDEgMDggMjIg
MDggMDAgNzkgMDAgOEMgNDIgNTUgNDYgMzAgMEEgMDIgNDkgNEYgIC4uIi4ueS4uQlVGMC4uSU8K
ICAgIEMwNjA6IDRDIDRGIDhDIDQyIDU1IDQ2IDMwIDBBIDAzIDQ5IDRGIDQ4IDQ5IDhDIDQyIDU1
ICBMTy5CVUYwLi5JT0hJLkJVCiAgICBDMDcwOiA0NiAzMCAwQSAwNCA0OSA0RiA1MiA0QyA4QyA0
MiA1NSA0NiAzMCAwQSAwNSA0OSAgRjAuLklPUkwuQlVGMC4uSQogICAgQzA4MDogNEYgNTIgNDgg
OEIgNDIgNTUgNDYgMzAgMEEgMDkgNDkgNTIgNTEgNEMgNzAgNDYgIE9SSC5CVUYwLi5JUlFMcEYK
ICAgIEMwOTA6IDU1IDQ5IDRGIDAwIDYwIEEyIDQ2IDBBIDAxIDcwIDk5IDYwIDAwIDVGIDU0IDVG
ICBVSU8uYC5GLi5wLmAuX1RfCiAgICBDMEEwOiAzMCBBMCAyMyA5MyA1RiA1NCA1RiAzMCAwMCA3
MCAwQSBFOCA0OSA0RiA0QyA0RiAgMC4jLl9UXzAucC4uSU9MTwogICAgQzBCMDogNzAgMEEgMDIg
NDkgNEYgNDggNDkgNzAgMEEgRTggNDkgNEYgNTIgNEMgNzAgMEEgIHAuLklPSElwLi5JT1JMcC4K
ICAgIEMwQzA6IDAyIDQ5IDRGIDUyIDQ4IEExIDQ1IDA3IEEwIDIzIDkzIDVGIDU0IDVGIDMwIDAx
ICAuSU9SSC5FLi4jLl9UXzAuCiAgICBDMEQwOiA3MCAwQSBGOCA0OSA0RiA0QyA0RiA3MCAwQSAw
MiA0OSA0RiA0OCA0OSA3MCAwQSAgcC4uSU9MT3AuLklPSElwLgogICAgQzBFMDogRjggNDkgNEYg
NTIgNEMgNzAgMEEgMDIgNDkgNEYgNTIgNDggQTEgNEUgMDQgQTAgIC5JT1JMcC4uSU9SSC5OLi4K
ICAgIEMwRjA6IDI0IDkzIDVGIDU0IDVGIDMwIDBBIDAyIDcwIDBBIEU4IDQ5IDRGIDRDIDRGIDcw
ICAkLl9UXzAuLnAuLklPTE9wCiAgICBDMTAwOiAwQSAwMyA0OSA0RiA0OCA0OSA3MCAwQSBFOCA0
OSA0RiA1MiA0QyA3MCAwQSAwMyAgLi5JT0hJcC4uSU9STHAuLgogICAgQzExMDogNDkgNEYgNTIg
NDggQTEgMjYgQTAgMjQgOTMgNUYgNTQgNUYgMzAgMEEgMDMgNzAgIElPUkguJi4kLl9UXzAuLnAK
ICAgIEMxMjA6IDBBIEY4IDQ5IDRGIDRDIDRGIDcwIDBBIDAzIDQ5IDRGIDQ4IDQ5IDcwIDBBIEY4
ICAuLklPTE9wLi5JT0hJcC4uCiAgICBDMTMwOiA0OSA0RiA1MiA0QyA3MCAwQSAwMyA0OSA0RiA1
MiA0OCBBNSA3OSAwMSA3QiA0NiAgSU9STHAuLklPUkgueS57RgogICAgQzE0MDogNTIgNTUgNDkg
MDAgMEEgMEYgMDAgNDkgNTIgNTEgNEMgQTQgNDIgNTUgNDYgMzAgIFJVSS4uLi5JUlFMLkJVRjAK
ICAgIEMxNTA6IDVCIDgyIDQ4IDE2IDU1IDQxIDUyIDMyIDA4IDVGIDQ4IDQ5IDQ0IDBDIDQxIEQw
ICBbLkguVUFSMi5fSElELkEuCiAgICBDMTYwOiAwNSAwMCAwOCA1RiA1NSA0OSA0NCAwQSAwMiAw
OCA1RiA0NCA0NCA0RSAwRCA0MyAgLi4uX1VJRC4uLl9ERE4uQwogICAgQzE3MDogNEYgNEQgMzIg
MDAgMTQgMjggNUYgNTMgNTQgNDEgMDAgNzAgMDAgNjAgNzAgNDYgIE9NMi4uKF9TVEEucC5gcEYK
ICAgIEMxODA6IDU1IDQ5IDRGIDAxIDYxIEEwIDBBIDkyIDkzIDYxIDBBIDBGIDcwIDBBIDBGIDYw
ICBVSU8uYS4uLi5hLi5wLi5gCiAgICBDMTkwOiBBMCAwQSA5MyA1NSA0QyAzMSA0OSAwMSA3MCAw
MCA2MCBBNCA2MCAxNCA0QyAxMSAgLi4uVUwxSS5wLmAuYC5MLgogICAgQzFBMDogNUYgNDMgNTIg
NTMgMDggMDggNUYgNTQgNUYgMzAgMDAgMDggNDIgNTUgNDYgMzAgIF9DUlMuLl9UXzAuLkJVRjAK
ICAgIEMxQjA6IDExIDEwIDBBIDBEIDQ3IDAxIEY4IDAyIEY4IDAyIDAxIDA4IDIyIDEwIDAwIDc5
ICAuLi4uRy4uLi4uLi4iLi55CiAgICBDMUMwOiAwMCA4QyA0MiA1NSA0NiAzMCAwQSAwMiA0OSA0
RiA0QyA0RiA4QyA0MiA1NSA0NiAgLi5CVUYwLi5JT0xPLkJVRgogICAgQzFEMDogMzAgMEEgMDMg
NDkgNEYgNDggNDkgOEMgNDIgNTUgNDYgMzAgMEEgMDQgNDkgNEYgIDAuLklPSEkuQlVGMC4uSU8K
ICAgIEMxRTA6IDUyIDRDIDhDIDQyIDU1IDQ2IDMwIDBBIDA1IDQ5IDRGIDUyIDQ4IDhCIDQyIDU1
ICBSTC5CVUYwLi5JT1JILkJVCiAgICBDMUYwOiA0NiAzMCAwQSAwOSA0OSA1MiA1MSA0QyA3MCA0
NiA1NSA0OSA0RiAwMSA2MCBBMiAgRjAuLklSUUxwRlVJTy5gLgogICAgQzIwMDogNDYgMEEgMDEg
NzAgOTkgNjAgMDAgNUYgNTQgNUYgMzAgQTAgMjMgOTMgNUYgNTQgIEYuLnAuYC5fVF8wLiMuX1QK
ICAgIEMyMTA6IDVGIDMwIDAwIDcwIDBBIEU4IDQ5IDRGIDRDIDRGIDcwIDBBIDAyIDQ5IDRGIDQ4
ICBfMC5wLi5JT0xPcC4uSU9ICiAgICBDMjIwOiA0OSA3MCAwQSBFOCA0OSA0RiA1MiA0QyA3MCAw
QSAwMiA0OSA0RiA1MiA0OCBBMSAgSXAuLklPUkxwLi5JT1JILgogICAgQzIzMDogNDUgMDcgQTAg
MjMgOTMgNUYgNTQgNUYgMzAgMDEgNzAgMEEgRjggNDkgNEYgNEMgIEUuLiMuX1RfMC5wLi5JT0wK
ICAgIEMyNDA6IDRGIDcwIDBBIDAyIDQ5IDRGIDQ4IDQ5IDcwIDBBIEY4IDQ5IDRGIDUyIDRDIDcw
ICBPcC4uSU9ISXAuLklPUkxwCiAgICBDMjUwOiAwQSAwMiA0OSA0RiA1MiA0OCBBMSA0RSAwNCBB
MCAyNCA5MyA1RiA1NCA1RiAzMCAgLi5JT1JILk4uLiQuX1RfMAogICAgQzI2MDogMEEgMDIgNzAg
MEEgRTggNDkgNEYgNEMgNEYgNzAgMEEgMDMgNDkgNEYgNDggNDkgIC4ucC4uSU9MT3AuLklPSEkK
ICAgIEMyNzA6IDcwIDBBIEU4IDQ5IDRGIDUyIDRDIDcwIDBBIDAzIDQ5IDRGIDUyIDQ4IEExIDI2
ICBwLi5JT1JMcC4uSU9SSC4mCiAgICBDMjgwOiBBMCAyNCA5MyA1RiA1NCA1RiAzMCAwQSAwMyA3
MCAwQSBGOCA0OSA0RiA0QyA0RiAgLiQuX1RfMC4ucC4uSU9MTwogICAgQzI5MDogNzAgMEEgMDMg
NDkgNEYgNDggNDkgNzAgMEEgRjggNDkgNEYgNTIgNEMgNzAgMEEgIHAuLklPSElwLi5JT1JMcC4K
ICAgIEMyQTA6IDAzIDQ5IDRGIDUyIDQ4IEE1IDc5IDAxIDdCIDQ2IDUyIDU1IDQ5IDAxIDBBIDBG
ICAuSU9SSC55LntGUlVJLi4uCiAgICBDMkIwOiAwMCA0OSA1MiA1MSA0QyBBNCA0MiA1NSA0NiAz
MCA1QiA4MiA0QiAxNiA1NSA0MSAgLklSUUwuQlVGMFsuSy5VQQogICAgQzJDMDogNTIgMzMgMDgg
NUYgNDggNDkgNDQgMEMgNDEgRDAgMDUgMDAgMDggNUYgNTUgNDkgIFIzLl9ISUQuQS4uLi5fVUkK
ICAgIEMyRDA6IDQ0IDBBIDAzIDA4IDVGIDQ0IDQ0IDRFIDBEIDQzIDRGIDREIDMzIDAwIDE0IDI5
ICBELi4uX0RETi5DT00zLi4pCiAgICBDMkUwOiA1RiA1MyA1NCA0MSAwMCA3MCAwMCA2MCA3MCA0
NiA1NSA0OSA0RiAwQSAwMiA2MSAgX1NUQS5wLmBwRlVJTy4uYQogICAgQzJGMDogQTAgMEEgOTIg
OTMgNjEgMEEgMEYgNzAgMEEgMEYgNjAgQTAgMEEgOTMgNTUgNEMgIC4uLi5hLi5wLi5gLi4uVUwK
ICAgIEMzMDA6IDMyIDQ5IDAxIDcwIDAwIDYwIEE0IDYwIDE0IDRFIDExIDVGIDQzIDUyIDUzIDA4
ICAySS5wLmAuYC5OLl9DUlMuCiAgICBDMzEwOiAwOCA1RiA1NCA1RiAzMCAwMCAwOCA0MiA1NSA0
NiAzMCAxMSAxMCAwQSAwRCA0NyAgLl9UXzAuLkJVRjAuLi4uRwogICAgQzMyMDogMDEgRTggMDMg
RTggMDMgMDEgMDggMjIgMDggMDAgNzkgMDAgOEMgNDIgNTUgNDYgIC4uLi4uLi4iLi55Li5CVUYK
ICAgIEMzMzA6IDMwIDBBIDAyIDQ5IDRGIDRDIDRGIDhDIDQyIDU1IDQ2IDMwIDBBIDAzIDQ5IDRG
ICAwLi5JT0xPLkJVRjAuLklPCiAgICBDMzQwOiA0OCA0OSA4QyA0MiA1NSA0NiAzMCAwQSAwNCA0
OSA0RiA1MiA0QyA4QyA0MiA1NSAgSEkuQlVGMC4uSU9STC5CVQogICAgQzM1MDogNDYgMzAgMEEg
MDUgNDkgNEYgNTIgNDggOEIgNDIgNTUgNDYgMzAgMEEgMDkgNDkgIEYwLi5JT1JILkJVRjAuLkkK
ICAgIEMzNjA6IDUyIDUxIDRDIDcwIDQ2IDU1IDQ5IDRGIDBBIDAyIDYwIEEyIDQ2IDBBIDAxIDcw
ICBSUUxwRlVJTy4uYC5GLi5wCiAgICBDMzcwOiA5OSA2MCAwMCA1RiA1NCA1RiAzMCBBMCAyMyA5
MyA1RiA1NCA1RiAzMCAwMCA3MCAgLmAuX1RfMC4jLl9UXzAucAogICAgQzM4MDogMEEgRTggNDkg
NEYgNEMgNEYgNzAgMEEgMDIgNDkgNEYgNDggNDkgNzAgMEEgRTggIC4uSU9MT3AuLklPSElwLi4K
ICAgIEMzOTA6IDQ5IDRGIDUyIDRDIDcwIDBBIDAyIDQ5IDRGIDUyIDQ4IEExIDQ1IDA3IEEwIDIz
ICBJT1JMcC4uSU9SSC5FLi4jCiAgICBDM0EwOiA5MyA1RiA1NCA1RiAzMCAwMSA3MCAwQSBGOCA0
OSA0RiA0QyA0RiA3MCAwQSAwMiAgLl9UXzAucC4uSU9MT3AuLgogICAgQzNCMDogNDkgNEYgNDgg
NDkgNzAgMEEgRjggNDkgNEYgNTIgNEMgNzAgMEEgMDIgNDkgNEYgIElPSElwLi5JT1JMcC4uSU8K
ICAgIEMzQzA6IDUyIDQ4IEExIDRFIDA0IEEwIDI0IDkzIDVGIDU0IDVGIDMwIDBBIDAyIDcwIDBB
ICBSSC5OLi4kLl9UXzAuLnAuCiAgICBDM0QwOiBFOCA0OSA0RiA0QyA0RiA3MCAwQSAwMyA0OSA0
RiA0OCA0OSA3MCAwQSBFOCA0OSAgLklPTE9wLi5JT0hJcC4uSQogICAgQzNFMDogNEYgNTIgNEMg
NzAgMEEgMDMgNDkgNEYgNTIgNDggQTEgMjYgQTAgMjQgOTMgNUYgIE9STHAuLklPUkguJi4kLl8K
ICAgIEMzRjA6IDU0IDVGIDMwIDBBIDAzIDcwIDBBIEY4IDQ5IDRGIDRDIDRGIDcwIDBBIDAzIDQ5
ICBUXzAuLnAuLklPTE9wLi5JCiAgICBDNDAwOiA0RiA0OCA0OSA3MCAwQSBGOCA0OSA0RiA1MiA0
QyA3MCAwQSAwMyA0OSA0RiA1MiAgT0hJcC4uSU9STHAuLklPUgogICAgQzQxMDogNDggQTUgNzkg
MDEgN0IgNDYgNTIgNTUgNDkgMEEgMDIgMEEgMEYgMDAgNDkgNTIgIEgueS57RlJVSS4uLi4uSVIK
ICAgIEM0MjA6IDUxIDRDIEE0IDQyIDU1IDQ2IDMwIDVCIDgyIDRCIDE2IDU1IDQxIDUyIDM0IDA4
ICBRTC5CVUYwWy5LLlVBUjQuCiAgICBDNDMwOiA1RiA0OCA0OSA0NCAwQyA0MSBEMCAwNSAwMCAw
OCA1RiA1NSA0OSA0NCAwQSAwNCAgX0hJRC5BLi4uLl9VSUQuLgogICAgQzQ0MDogMDggNUYgNDQg
NDQgNEUgMEQgNDMgNEYgNEQgMzQgMDAgMTQgMjkgNUYgNTMgNTQgIC5fREROLkNPTTQuLilfU1QK
ICAgIEM0NTA6IDQxIDAwIDcwIDAwIDYwIDcwIDQ2IDU1IDQ5IDRGIDBBIDAzIDYxIEEwIDBBIDky
ICBBLnAuYHBGVUlPLi5hLi4uCiAgICBDNDYwOiA5MyA2MSAwQSAwRiA3MCAwQSAwRiA2MCBBMCAw
QSA5MyA1NSA0QyAzMyA0OSAwMSAgLmEuLnAuLmAuLi5VTDNJLgogICAgQzQ3MDogNzAgMDAgNjAg
QTQgNjAgMTQgNEUgMTEgNUYgNDMgNTIgNTMgMDggMDggNUYgNTQgIHAuYC5gLk4uX0NSUy4uX1QK
ICAgIEM0ODA6IDVGIDMwIDAwIDA4IDQyIDU1IDQ2IDMwIDExIDEwIDBBIDBEIDQ3IDAxIEY4IDAz
ICBfMC4uQlVGMC4uLi5HLi4uCiAgICBDNDkwOiBGOCAwMyAwMSAwOCAyMiAxMCAwMCA3OSAwMCA4
QyA0MiA1NSA0NiAzMCAwQSAwMiAgLi4uLiIuLnkuLkJVRjAuLgogICAgQzRBMDogNDkgNEYgNEMg
NEYgOEMgNDIgNTUgNDYgMzAgMEEgMDMgNDkgNEYgNDggNDkgOEMgIElPTE8uQlVGMC4uSU9ISS4K
ICAgIEM0QjA6IDQyIDU1IDQ2IDMwIDBBIDA0IDQ5IDRGIDUyIDRDIDhDIDQyIDU1IDQ2IDMwIDBB
ICBCVUYwLi5JT1JMLkJVRjAuCiAgICBDNEMwOiAwNSA0OSA0RiA1MiA0OCA4QiA0MiA1NSA0NiAz
MCAwQSAwOSA0OSA1MiA1MSA0QyAgLklPUkguQlVGMC4uSVJRTAogICAgQzREMDogNzAgNDYgNTUg
NDkgNEYgMEEgMDMgNjAgQTIgNDYgMEEgMDEgNzAgOTkgNjAgMDAgIHBGVUlPLi5gLkYuLnAuYC4K
ICAgIEM0RTA6IDVGIDU0IDVGIDMwIEEwIDIzIDkzIDVGIDU0IDVGIDMwIDAwIDcwIDBBIEU4IDQ5
ICBfVF8wLiMuX1RfMC5wLi5JCiAgICBDNEYwOiA0RiA0QyA0RiA3MCAwQSAwMiA0OSA0RiA0OCA0
OSA3MCAwQSBFOCA0OSA0RiA1MiAgT0xPcC4uSU9ISXAuLklPUgogICAgQzUwMDogNEMgNzAgMEEg
MDIgNDkgNEYgNTIgNDggQTEgNDUgMDcgQTAgMjMgOTMgNUYgNTQgIExwLi5JT1JILkUuLiMuX1QK
ICAgIEM1MTA6IDVGIDMwIDAxIDcwIDBBIEY4IDQ5IDRGIDRDIDRGIDcwIDBBIDAyIDQ5IDRGIDQ4
ICBfMC5wLi5JT0xPcC4uSU9ICiAgICBDNTIwOiA0OSA3MCAwQSBGOCA0OSA0RiA1MiA0QyA3MCAw
QSAwMiA0OSA0RiA1MiA0OCBBMSAgSXAuLklPUkxwLi5JT1JILgogICAgQzUzMDogNEUgMDQgQTAg
MjQgOTMgNUYgNTQgNUYgMzAgMEEgMDIgNzAgMEEgRTggNDkgNEYgIE4uLiQuX1RfMC4ucC4uSU8K
ICAgIEM1NDA6IDRDIDRGIDcwIDBBIDAzIDQ5IDRGIDQ4IDQ5IDcwIDBBIEU4IDQ5IDRGIDUyIDRD
ICBMT3AuLklPSElwLi5JT1JMCiAgICBDNTUwOiA3MCAwQSAwMyA0OSA0RiA1MiA0OCBBMSAyNiBB
MCAyNCA5MyA1RiA1NCA1RiAzMCAgcC4uSU9SSC4mLiQuX1RfMAogICAgQzU2MDogMEEgMDMgNzAg
MEEgRjggNDkgNEYgNEMgNEYgNzAgMEEgMDMgNDkgNEYgNDggNDkgIC4ucC4uSU9MT3AuLklPSEkK
ICAgIEM1NzA6IDcwIDBBIEY4IDQ5IDRGIDUyIDRDIDcwIDBBIDAzIDQ5IDRGIDUyIDQ4IEE1IDc5
ICBwLi5JT1JMcC4uSU9SSC55CiAgICBDNTgwOiAwMSA3QiA0NiA1MiA1NSA0OSAwQSAwMyAwQSAw
RiAwMCA0OSA1MiA1MSA0QyBBNCAgLntGUlVJLi4uLi5JUlFMLgogICAgQzU5MDogNDIgNTUgNDYg
MzAgNUIgODIgNEQgNTQgMkUgNUYgNTMgNDIgNUYgNTQgNTAgNEQgIEJVRjBbLk1ULl9TQl9UUE0K
ICAgIEM1QTA6IDVGIDA4IDU0IDREIDUyIDUxIDBDIEZGIEZGIEZGIEZGIDA4IDU0IDRDIDU2IDRD
ICBfLlRNUlEuLi4uLi5UTFZMCiAgICBDNUIwOiAwQyBGRiBGRiBGRiBGRiAxNCAyRiA1RiA0OCA0
OSA0NCAwMCBBMCAwQiA1NCA0MyAgLi4uLi4uL19ISUQuLi5UQwogICAgQzVDMDogNEQgNDYgQTQg
MEMgNjkgMzQgMDEgMDEgQTEgMUMgQTAgMEQgOTMgNTQgNTQgNDQgIE1GLi5pNC4uLi4uLi5UVEQK
ICAgIEM1RDA6IDUwIDAwIEE0IDBDIDQxIEQwIDBDIDMxIEExIDBDIEE0IDBEIDREIDUzIDQ2IDU0
ICBQLi4uQS4uMS4uLi5NU0ZUCiAgICBDNUUwOiAzMCAzMSAzMCAzMSAwMCA1QiA4MCA1NCA0RCA0
RCA0MiAwMCAwQyAwMCAwMCBENCAgMDEwMS5bLlRNTUIuLi4uLgogICAgQzVGMDogRkUgMEIgMDAg
NTAgNUIgODEgNDEgMDQgNTQgNEQgNEQgNDIgMTEgNDEgNDMgNDMgIC4uLlBbLkEuVE1NQi5BQ0MK
ICAgIEM2MDA6IDMwIDA4IDAwIDM4IDQ5IDRFIDU0IDQ1IDIwIDQ5IDRFIDU0IDU2IDA4IDAwIDE4
ICAwLi44SU5URSBJTlRWLi4uCiAgICBDNjEwOiA0OSA0RSA1NCA1MyAyMCA0OSA0RSA1NCA0NiAy
MCA1NCA1MyA1NCA1MyAyMCAwMCAgSU5UUyBJTlRGIFRTVFMgLgogICAgQzYyMDogNDAgMDQgNDYg
NDkgNDYgNEYgMjAgMDAgNDAgMDQgNDkgNDQgNTQgNDYgMjAgMDAgIEAuRklGTyAuQC5JRFRGIC4K
ICAgIEM2MzA6IDQwIDBDIDUzIDQzIDREIDQ0IDIwIDE0IDQ3IDA1IDVGIDUzIDU0IDUyIDAwIEEw
ICBALlNDTUQgLkcuX1NUUi4uCiAgICBDNjQwOiAyQSA5MyA1NCA1NCA0NCA1MCAwMCBBNCAxMSAy
MSAwQSAxRSA1NCAwMCA1MCAwMCAgKi5UVERQLi4uIS4uVC5QLgogICAgQzY1MDogNEQgMDAgMjAg
MDAgMzEgMDAgMkUgMDAgMzIgMDAgMjAgMDAgNDQgMDAgNjUgMDAgIE0uIC4xLi4uMi4gLkQuZS4K
ICAgIEM2NjA6IDc2IDAwIDY5IDAwIDYzIDAwIDY1IDAwIDAwIDAwIEExIDI0IEE0IDExIDIxIDBB
ICB2LmkuYy5lLi4uLiQuLiEuCiAgICBDNjcwOiAxRSA1NCAwMCA1MCAwMCA0RCAwMCAyMCAwMCAz
MiAwMCAyRSAwMCAzMCAwMCAyMCAgLlQuUC5NLiAuMi4uLjAuIAogICAgQzY4MDogMDAgNDQgMDAg
NjUgMDAgNzYgMDAgNjkgMDAgNjMgMDAgNjUgMDAgMDAgMDAgMDggIC5ELmUudi5pLmMuZS4uLi4K
ICAgIEM2OTA6IDVGIDU1IDQ5IDQ0IDAxIDA4IDQzIDUyIDUzIDU0IDExIDFEIDBBIDFBIDg2IDA5
ICBfVUlELi5DUlNULi4uLi4uCiAgICBDNkEwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAxMCAwMCAw
MCA4NiAwOSAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQzZCMDogRDcgRkUgMDAg
MTAgMDAgMDAgNzkgMDAgMDggNDMgNTIgNTMgNDQgMTEgMTEgMEEgIC4uLi4uLnkuLkNSU0QuLi4K
ICAgIEM2QzA6IDBFIDg2IDA5IDAwIDAxIDAwIDAwIEQ0IEZFIDAwIDUwIDAwIDAwIDc5IDAwIDA4
ICAuLi4uLi4uLi4uUC4ueS4uCiAgICBDNkQwOiA0MyA1MiA0OSA0NCAxMSAxMSAwQSAwRSA4NiAw
OSAwMCAwMSAwMCAwMCBENCBGRSAgQ1JJRC4uLi4uLi4uLi4uLgogICAgQzZFMDogMDAgNTAgMDAg
MDAgNzkgMDAgMDggNDMgNTIgNDUgNDkgMTEgMzQgMEEgMzEgODYgIC5QLi55Li5DUkVJLjQuMS4K
ICAgIEM2RjA6IDA5IDAwIDAxIDAwIDAwIEQ0IEZFIDAwIDUwIDAwIDAwIDhDIDIwIDAwIDAxIDAw
ICAuLi4uLi4uLlAuLi4gLi4uCiAgICBDNzAwOiAwMSAwMCAxMiAwMCAwMyAwMCAwMCAwMCAwMCAx
NyAwMCAwMCAxOSAwMCAyMyAwMCAgLi4uLi4uLi4uLi4uLi4jLgogICAgQzcxMDogMDAgMDAgMDAg
MDAgNUMgNUYgNTMgNDIgMkUgNDcgNTAgNDkgNEYgMDAgNzkgMDAgIC4uLi5cX1NCLkdQSU8ueS4K
ICAgIEM3MjA6IDE0IDQxIDE1IDVGIDQzIDUyIDUzIDA4IEEwIDREIDA1IDkzIDQxIDREIDQ0IDU0
ICAuQS5fQ1JTLi5NLi5BTURUCiAgICBDNzMwOiAwMSA4QSA0MyA1MiA1MyA1NCAwQSAwNCA0RCA1
NCA0NiA0MiA4QSA0MyA1MiA1MyAgLi5DUlNULi5NVEZCLkNSUwogICAgQzc0MDogNTQgMEEgMDgg
NEMgNTQgNDYgNDIgNzAgNTQgNTAgNEQgNDIgNEQgNTQgNDYgNDIgIFQuLkxURkJwVFBNQk1URkIK
ICAgIEM3NTA6IDcwIDU0IDUwIDQyIDUzIDRDIDU0IDQ2IDQyIDhBIDQzIDUyIDUzIDU0IDBBIDEw
ICBwVFBCU0xURkIuQ1JTVC4uCiAgICBDNzYwOiA0RCA1NCA0NiA0MyA4QSA0MyA1MiA1MyA1NCAw
QSAxNCA0QyA1NCA0NiA0MyA3MCAgTVRGQy5DUlNULi5MVEZDcAogICAgQzc3MDogNTQgNTAgNEQg
NDMgNEQgNTQgNDYgNDMgNzAgNTQgNTAgNDMgNTMgNEMgNTQgNDYgIFRQTUNNVEZDcFRQQ1NMVEYK
ICAgIEM3ODA6IDQzIEE0IDQzIDUyIDUzIDU0IEExIDQ2IDBFIEEwIDM0IDkzIDQ0IDU0IDUwIDU0
ICBDLkNSU1QuRi4uNC5EVFBUCiAgICBDNzkwOiAwMSA4QSA0MyA1MiA1MyA0NCAwQSAwNCA0RCA1
NCA0NiA0NSA4QSA0MyA1MiA1MyAgLi5DUlNELi5NVEZFLkNSUwogICAgQzdBMDogNDQgMEEgMDgg
NEMgNTQgNDYgNDUgNzAgMEMgMDAgMDAgRDQgRkUgNEQgNTQgNDYgIEQuLkxURkVwLi4uLi5NVEYK
ICAgIEM3QjA6IDQ1IDcwIDBCIDAwIDUwIDRDIDU0IDQ2IDQ1IEE0IDQzIDUyIDUzIDQ0IEExIDRE
ICBFcC4uUExURkUuQ1JTRC5NCiAgICBDN0MwOiAwOSBBMCA0NyAwNyA5MyA1NCA1NCA1MCA0NiAw
MSBBMCAzRiA5MSA5MyA1NCA0RCAgLi5HLi5UVFBGLi4/Li5UTQogICAgQzdEMDogNTIgNTEgMDAg
OTMgNTQgNEQgNTIgNTEgMEMgRkYgRkYgRkYgRkYgOEEgNDMgNTIgIFJRLi5UTVJRLi4uLi4uQ1IK
ICAgIEM3RTA6IDQ5IDQ0IDBBIDA0IDREIDU0IDQ2IDQ0IDhBIDQzIDUyIDQ5IDQ0IDBBIDA4IDRD
ICBJRC4uTVRGRC5DUklELi5MCiAgICBDN0YwOiA1NCA0NiA0NCA3MCAwQyAwMCAwMCBENCBGRSA0
RCA1NCA0NiA0NCA3MCAwQiAwMCAgVEZEcC4uLi4uTVRGRHAuLgogICAgQzgwMDogNTAgNEMgNTQg
NDYgNDQgQTQgNDMgNTIgNDkgNDQgQTEgMkUgOEIgNDMgNTIgNDUgIFBMVEZELkNSSUQuLi5DUkUK
ICAgIEM4MTA6IDQ5IDBBIDIzIDRDIDQ5IDUyIDUxIDhEIDQzIDUyIDQ1IDQ5IDBBIDk5IDRDIDRD
ICBJLiNMSVJRLkNSRUkuLkxMCiAgICBDODIwOiA1NiA0QyA3MCA1NCA0RCA1MiA1MSA0QyA0OSA1
MiA1MSA3MCA1NCA0QyA1NiA0QyAgVkxwVE1SUUxJUlFwVExWTAogICAgQzgzMDogNEMgNEMgNTYg
NEMgQTQgNDMgNTIgNDUgNDkgQTEgMjIgQTAgMjAgOTMgNTQgNTQgIExMVkwuQ1JFSS4iLiAuVFQK
ICAgIEM4NDA6IDUwIDQ2IDAwIDhBIDQzIDUyIDUzIDU0IDBBIDEwIDREIDU0IDQ2IDQ2IDcwIDQ2
ICBQRi4uQ1JTVC4uTVRGRnBGCiAgICBDODUwOiA1NCA1MCA0RCA0RCA1NCA0NiA0NiBBNCA0MyA1
MiA1MyA1NCA3MCAwMCA0RCA1NCAgVFBNTVRGRi5DUlNUcC5NVAogICAgQzg2MDogNDYgNDUgNzAg
MDAgNEMgNTQgNDYgNDUgQTQgNDMgNTIgNDkgNDQgQTQgNDMgNTIgIEZFcC5MVEZFLkNSSUQuQ1IK
ICAgIEM4NzA6IDQ5IDQ0IDE0IDRGIDBFIDVGIDUzIDUyIDUzIDA5IEEwIDQ3IDBFIDkwIDkyIDkz
ICBJRC5PLl9TUlMuLkcuLi4uCiAgICBDODgwOiA1NCA0RCA1MiA1MSAwMCA5MiA5MyA1NCA0RCA1
MiA1MSAwQyBGRiBGRiBGRiBGRiAgVE1SUS4uLlRNUlEuLi4uLgogICAgQzg5MDogOEIgNjggMEEg
MjMgNDkgNTIgNTEgMzAgOEIgNDMgNTIgNDUgNDkgMEEgMjMgNEMgIC5oLiNJUlEwLkNSRUkuI0wK
ICAgIEM4QTA6IDQ5IDUyIDUxIDcwIDQ5IDUyIDUxIDMwIDRDIDQ5IDUyIDUxIDcwIDQ5IDUyIDUx
ICBJUlFwSVJRMExJUlFwSVJRCiAgICBDOEIwOiAzMCA1NCA0RCA1MiA1MSA4RCA2OCAwQSA5OCA0
OSA1NCA1MiA0NyA4RCA0MyA1MiAgMFRNUlEuaC4uSVRSRy5DUgogICAgQzhDMDogNDUgNDkgMEEg
OTggNEMgNTQgNTIgNDcgNzAgNDkgNTQgNTIgNDcgNEMgNTQgNTIgIEVJLi5MVFJHcElUUkdMVFIK
ICAgIEM4RDA6IDQ3IDhEIDY4IDBBIDk5IDQ5IDRDIDU2IDRDIDhEIDQzIDUyIDQ1IDQ5IDBBIDk5
ICBHLmguLklMVkwuQ1JFSS4uCiAgICBDOEUwOiA0QyA0QyA1NiA0QyA3MCA0OSA0QyA1NiA0QyA0
QyA0QyA1NiA0QyBBMCA0NCAwNyAgTExWTHBJTFZMTExWTC5ELgogICAgQzhGMDogOTEgOTMgN0Ig
NDkgNDQgNTQgNDYgMEEgMEYgMDAgMDAgOTMgN0IgNDkgNDQgNTQgIC4ue0lEVEYuLi4uLntJRFQK
ICAgIEM5MDA6IDQ2IDBBIDBGIDAwIDBBIDBGIEEwIDE1IDk1IDQ5IDUyIDUxIDMwIDBBIDEwIDcw
ICBGLi4uLi4uLi5JUlEwLi5wCiAgICBDOTEwOiA3QiA0OSA1MiA1MSAzMCAwQSAwRiAwMCA0OSA0
RSA1NCA1NiBBMCAxMiA5MyA0OSAge0lSUTAuLi5JTlRWLi4uSQogICAgQzkyMDogNTQgNTIgNDcg
MDEgN0QgNDkgNEUgNTQgNDUgMEEgMTAgNDkgNEUgNTQgNDUgQTEgIFRSRy59SU5URS4uSU5URS4K
ICAgIEM5MzA6IDBGIDdCIDQ5IDRFIDU0IDQ1IDBDIEVGIEZGIEZGIEZGIDQ5IDRFIDU0IDQ1IEEw
ICAue0lOVEUuLi4uLklOVEUuCiAgICBDOTQwOiAxMiA5MyA0OSA0QyA1NiA0QyAwMCA3RCA0OSA0
RSA1NCA0NSAwQSAwOCA0OSA0RSAgLi5JTFZMLn1JTlRFLi5JTgogICAgQzk1MDogNTQgNDUgQTEg
MEYgN0IgNDkgNEUgNTQgNDUgMEMgRjcgRkYgRkYgRkYgNDkgNEUgIFRFLi57SU5URS4uLi4uSU4K
ICAgIEM5NjA6IDU0IDQ1IDVCIDgwIDQzIDUyIDQyIDQ0IDAwIDU0IDUwIDREIDREIDBBIDQ4IDVC
ICBURVsuQ1JCRC5UUE1NLkhbCiAgICBDOTcwOiA4MSAxQyA0MyA1MiA0MiA0NCAwMCAwMCAyMCA0
OCA0NSA1MiA1MiAyMCAwMCA0MCAgLi5DUkJELi4gSEVSUiAuQAogICAgQzk4MDogMUMgNDggNDMg
NEQgNDQgMjAgMDAgMDAgNDggNTMgNTQgNTMgMjAgMTQgMzAgNUYgIC5IQ01EIC4uSFNUUyAuMF8K
ICAgIEM5OTA6IDUzIDU0IDQxIDAwIEEwIDEyIDkzIDU0IDU0IDQ0IDUwIDAwIEEwIDA4IDU0IDUw
ICBTVEEuLi4uVFREUC4uLlRQCiAgICBDOUEwOiA0RCA0NiBBNCAwQSAwRiBBNCAwMCBBMSAxNCBB
MCAxMiA5MyA1NCA1NCA0NCA1MCAgTUYuLi4uLi4uLi4uVFREUAogICAgQzlCMDogMDEgQTAgMDgg
NTQgNTAgNEQgNDYgQTQgMEEgMEYgQTQgMDAgQTQgMDAgMTQgNDQgIC4uLlRQTUYuLi4uLi4uLkQK
ICAgIEM5QzA6IDBDIDUzIDU0IDUyIDU0IDBCIDA4IDVGIDU0IDVGIDMwIDAwIDVCIDgwIDU0IDUw
ICAuU1RSVC4uX1RfMC5bLlRQCiAgICBDOUQwOiA0RCA1MiAwMCA0NiA1NCA1MCA0RCAwQiAwMCAx
MCA1QiA4MSAxNCA1NCA1MCA0RCAgTVIuRlRQTS4uLlsuLlRQTQogICAgQzlFMDogNTIgMDAgMDAg
MjAgNDYgNDUgNTIgNTIgMjAgMDAgMjAgNDIgNDUgNDcgNEUgMjAgIFIuLiBGRVJSIC4gQkVHTiAK
ICAgIEM5RjA6IDA4IDU0IDQ5IDREIDUyIDAwIEEwIDA3IDkyIDkzIDk5IDY4IDAwIDAwIEEyIDQy
ICAuVElNUi4uLi4uLmguLi5CCiAgICBDQTAwOiAwOCAwMSA3MCA5OSA2OSAwMCA1RiA1NCA1RiAz
MCBBMCAwQyA5MyA1RiA1NCA1RiAgLi5wLmkuX1RfMC4uLl9UXwogICAgQ0ExMDogMzAgMDAgQTQg
MTEgMDMgMDEgMDMgQTEgNDggMDYgQTAgNDUgMDYgOTMgNUYgNTQgIDAuLi4uLi4uSC4uRS4uX1QK
ICAgIENBMjA6IDVGIDMwIDAxIDcwIDAwIDU0IDQ5IDREIDUyIEEwIDI4IDkzIDQxIDREIDQ0IDU0
ICBfMC5wLlRJTVIuKC5BTURUCiAgICBDQTMwOiAwMSBBMiAyMCA5MCA5MyA0MiA0NSA0NyA0RSAw
MSA5NSA1NCA0OSA0RCA1MiAwQiAgLi4gLi5CRUdOLi5USU1SLgogICAgQ0E0MDogMDAgMDIgQTAg
MEYgOTMgNDIgNDUgNDcgNEUgMDEgNUIgMjIgMDEgNzUgNTQgNDkgIC4uLi4uQkVHTi5bIi51VEkK
ICAgIENBNTA6IDREIDUyIEExIDJCIEEwIDFCIDkzIDdEIDdCIDQ4IDUzIDU0IDUzIDBBIDAyIDAw
ICBNUi4rLi4ufXtIU1RTLi4uCiAgICBDQTYwOiA3QiA0OCA1MyA1NCA1MyAwMSAwMCAwMCAwQSAw
MyA3MCAwMSA0OCA0MyA0RCA0NCAge0hTVFMuLi4uLnAuSENNRAogICAgQ0E3MDogQTEgMEQgNzAg
MDEgNDYgNDUgNTIgNTIgNzAgMDAgNDIgNDUgNDcgNEUgQTQgMDAgIC4ucC5GRVJScC5CRUdOLi4K
ICAgIENBODA6IEE1IEE0IDAxIDE0IDRGIDA1IDQzIDUyIDU5IDQ2IDBCIDA4IDVGIDU0IDVGIDMw
ICAuLi4uTy5DUllGLi5fVF8wCiAgICBDQTkwOiAwMCBBMCAwNyA5MiA5MyA5OSA2OCAwMCAwMSBB
MiA0NCAwNCAwMSA3MCA5OSA2OSAgLi4uLi4uaC4uLkQuLnAuaQogICAgQ0FBMDogMDAgNUYgNTQg
NUYgMzAgQTAgMEMgOTMgNUYgNTQgNUYgMzAgMDAgQTQgMTEgMDMgIC5fVF8wLi4uX1RfMC4uLi4K
ICAgIENBQjA6IDAxIDAzIEExIDJBIEEwIDI4IDkzIDVGIDU0IDVGIDMwIDAxIDA4IDU0IDUwIDRE
ICAuLi4qLiguX1RfMC4uVFBNCiAgICBDQUMwOiA1NiAxMiAwOSAwMiAwMSAxMiAwNSAwMiAwMSAw
QSAyMCBBMCAwQyA5MyA1RiA1MyAgVi4uLi4uLi4uLiAuLi5fUwogICAgQ0FEMDogNTQgNDEgMDAg
QTQgMTIgMDMgMDEgMDAgQTQgNTQgNTAgNEQgNTYgQTUgQTQgMTEgIFRBLi4uLi4uLlRQTVYuLi4K
ICAgIENBRTA6IDAzIDAxIDAwIDEwIDRDIDM0IDJFIDVGIDUzIDQyIDVGIDU0IDUwIDREIDVGIDVC
ICAuLi4uTDQuX1NCX1RQTV9bCiAgICBDQUYwOiA4MCA1NCA1MyA0RCA0OSAwMSA1MyA0RCA0OSA0
MSAwQSAwMiA1QiA4MSAwQiA1NCAgLlRTTUkuU01JQS4uWy4uVAogICAgQ0IwMDogNTMgNEQgNDkg
MDIgNTMgNEQgNDkgNUYgMTAgNUIgODAgNDEgNTQgNEUgNTYgMDAgIFNNSS5TTUlfLlsuQVROVi4K
ICAgIENCMTA6IDUwIDUwIDQ5IDREIDUwIDUwIDQ5IDRDIDVCIDgxIDI5IDQxIDU0IDRFIDU2IDAw
ICBQUElNUFBJTFsuKUFUTlYuCiAgICBDQjIwOiA1MiA1MSA1MyA1NCAyMCA1MiA0MyA0RSA1NCAy
MCA0NSA1MiA1MiA0RiAyMCA0NiAgUlFTVCBSQ05UIEVSUk8gRgogICAgQ0IzMDogNEMgNDEgNDcg
MjAgNEQgNDkgNTMgNDMgMjAgNEYgNTAgNTQgNEUgMjAgNTMgNTIgIExBRyBNSVNDIE9QVE4gU1IK
ICAgIENCNDA6IDUzIDUwIDIwIDE0IDQwIDI4IDVGIDQ0IDUzIDREIDBDIDA4IDVGIDU0IDVGIDMx
ICBTUCAuQChfRFNNLi5fVF8xCiAgICBDQjUwOiAwMCAwOCA1RiA1NCA1RiAzMCAwMCBBMCA0NyAx
QiA5MyA2OCAxMSAxMyAwQSAxMCAgLi5fVF8wLi5HLi5oLi4uLgogICAgQ0I2MDogQTYgRkEgREQg
M0QgMUIgMzYgQjQgNEUgQTQgMjQgOEQgMTAgMDggOUQgMTYgNTMgIC4uLj0uNi5OLiQuLi4uLlMK
ICAgIENCNzA6IEEyIDRFIDE5IDAxIDcwIDk5IDZBIDAwIDVGIDU0IDVGIDMwIEEwIDBFIDkzIDVG
ICAuTi4ucC5qLl9UXzAuLi5fCiAgICBDQjgwOiA1NCA1RiAzMCAwMCBBNCAxMSAwNSAwQSAwMiBG
RiAwMSBBMSA0MiAxOCBBMCAxRCAgVF8wLi4uLi4uLi4uQi4uLgogICAgQ0I5MDogOTMgNUYgNTQg
NUYgMzAgMDEgQTAgMEQgOTMgNTAgNTAgNDkgNTYgMDAgQTQgMEQgIC5fVF8wLi4uLlBQSVYuLi4K
ICAgIENCQTA6IDMxIDJFIDMyIDAwIEExIDA3IEE0IDBEIDMxIDJFIDMzIDAwIEExIDQxIDE2IEEw
ICAxLjIuLi4uLjEuMy4uQS4uCiAgICBDQkIwOiAzQyA5MyA1RiA1NCA1RiAzMCAwQSAwMiA3MCA4
MyA4OCA2QiAwMCAwMCA1MiA1MSAgPC5fVF8wLi5wLi5rLi5SUQogICAgQ0JDMDogNTMgNTQgNzAg
MDAgNTMgNTIgNTMgNTAgNzAgMEEgMDIgNDYgNEMgNDEgNDcgNzAgIFNUcC5TUlNQcC4uRkxBR3AK
ICAgIENCRDA6IDRGIDQ2IDUzIDU0IDU0IDREIDQ2IDMxIDcwIDAwIDUzIDUyIDUzIDUwIDcwIDU0
ICBPRlNUVE1GMXAuU1JTUHBUCiAgICBDQkUwOiA0RCA0NiAzMSA1MyA0RCA0OSA1RiBBNCA1MyA1
MiA1MyA1MCBBMSA0MSAxMiBBMCAgTUYxU01JXy5TUlNQLkEuLgogICAgQ0JGMDogMjMgOTMgNUYg
NTQgNUYgMzAgMEEgMDMgMDggNTAgNTAgNDkgMzEgMTIgMDQgMDIgICMuX1RfMC4uLlBQSTEuLi4K
ICAgIENDMDA6IDAwIDAwIDcwIDUyIDUxIDUzIDU0IDg4IDUwIDUwIDQ5IDMxIDAxIDAwIEE0IDUw
ICAuLnBSUVNULlBQSTEuLi5QCiAgICBDQzEwOiA1MCA0OSAzMSBBMSA0QSAwRiBBMCAwRCA5MyA1
RiA1NCA1RiAzMCAwQSAwNCBBNCAgUEkxLkouLi4uX1RfMC4uLgogICAgQ0MyMDogNTQgNTIgNTMg
NTQgQTEgNDkgMEUgQTAgNDggMDQgOTMgNUYgNTQgNUYgMzAgMEEgIFRSU1QuSS4uSC4uX1RfMC4K
ICAgIENDMzA6IDA1IDA4IDUwIDUwIDQ5IDMyIDEyIDA1IDAzIDAwIDAwIDAwIDcwIDAwIDUzIDUy
ICAuLlBQSTIuLi4uLi5wLlNSCiAgICBDQzQwOiA1MyA1MCA3MCAwQSAwNSA0NiA0QyA0MSA0NyA3
MCA0RiA0NiA1MyA1NCA1MyA0RCAgU1BwLi5GTEFHcE9GU1RTTQogICAgQ0M1MDogNDkgNUYgNzAg
NTIgNDMgNEUgNTQgODggNTAgNTAgNDkgMzIgMDEgMDAgNzAgNDUgIElfcFJDTlQuUFBJMi4ucEUK
ICAgIENDNjA6IDUyIDUyIDRGIDg4IDUwIDUwIDQ5IDMyIDBBIDAyIDAwIEE0IDUwIDUwIDQ5IDMy
ICBSUk8uUFBJMi4uLi5QUEkyCiAgICBDQzcwOiBBMSA0RCAwOSBBMCAwQiA5MyA1RiA1NCA1RiAz
MCAwQSAwNiBBNCAwQSAwMyBBMSAgLk0uLi4uX1RfMC4uLi4uLgogICAgQ0M4MDogNEUgMDggQTAg
NDAgMDUgOTMgNUYgNTQgNUYgMzAgMEEgMDcgNzAgODMgODggNkIgIE4uLkAuLl9UXzAuLnAuLmsK
ICAgIENDOTA6IDAwIDAwIDUyIDUxIDUzIDU0IDcwIDBBIDA3IDQ2IDRDIDQxIDQ3IDcwIDAwIDRG
ICAuLlJRU1RwLi5GTEFHcC5PCiAgICBDQ0EwOiA1MCA1NCA0RSBBMCAxMiA5MyA1MiA1MSA1MyA1
NCAwQSAxNyA5OSA4MyA4OCA2QiAgUFROLi4uUlFTVC4uLi4uawogICAgQ0NCMDogMDEgMDAgNEYg
NTAgNTQgNEUgNzAgNEYgNDYgNTMgNTQgNTQgNEQgNDYgMzEgNzAgIC4uT1BUTnBPRlNUVE1GMXAK
ICAgIENDQzA6IDAwIDUzIDUyIDUzIDUwIDcwIDU0IDREIDQ2IDMxIDUzIDREIDQ5IDVGIEE0IDUz
ICAuU1JTUHBUTUYxU01JXy5TCiAgICBDQ0QwOiA1MiA1MyA1MCBBMSAzQSBBMCAzNiA5MyA1RiA1
NCA1RiAzMCAwQSAwOCA3MCA4MyAgUlNQLjouNi5fVF8wLi5wLgogICAgQ0NFMDogODggNkIgMDAg
MDAgNTIgNTEgNTMgNTQgNzAgMEEgMDggNDYgNEMgNDEgNDcgNzAgIC5rLi5SUVNUcC4uRkxBR3AK
ICAgIENDRjA6IDRGIDQ2IDUzIDU0IDU0IDREIDQ2IDMxIDcwIDAwIDUzIDUyIDUzIDUwIDcwIDU0
ICBPRlNUVE1GMXAuU1JTUHBUCiAgICBDRDAwOiA0RCA0NiAzMSA1MyA0RCA0OSA1RiBBNCA1MyA1
MiA1MyA1MCBBMSAwMSBBNSBBMSAgTUYxU01JXy5TUlNQLi4uLgogICAgQ0QxMDogNEYgMDYgQTAg
NEMgMDYgOTMgNjggMTEgMTMgMEEgMTAgRUQgNTQgNjAgMzcgMTMgIE8uLkwuLmguLi4uLlRgNy4K
ICAgIENEMjA6IENDIDc1IDQ2IDkwIDFDIDQ3IDU2IEQ3IEYyIEQ0IDVEIEEyIDQzIDA1IDAxIDcw
ICAudUYuLkdWLi4uXS5DLi5wCiAgICBDRDMwOiA5OSA2QSAwMCA1RiA1NCA1RiAzMSBBMCAwQyA5
MyA1RiA1NCA1RiAzMSAwMCBBNCAgLmouX1RfMS4uLl9UXzEuLgogICAgQ0Q0MDogMTEgMDMgMDEg
MDMgQTEgMzkgQTAgMzUgOTMgNUYgNTQgNUYgMzEgMDEgNzAgODMgIC4uLi4uOS41Ll9UXzEucC4K
ICAgIENENTA6IDg4IDZCIDAwIDAwIDUyIDUxIDUzIDU0IDcwIDBBIDA5IDQ2IDRDIDQxIDQ3IDcw
ICAuay4uUlFTVHAuLkZMQUdwCiAgICBDRDYwOiA0RiA0NiA1MyA1NCA1NCA0RCA0NiAzMSA3MCAw
MCA1MyA1MiA1MyA1MCA3MCA1NCAgT0ZTVFRNRjFwLlNSU1BwVAogICAgQ0Q3MDogNEQgNDYgMzEg
NTMgNEQgNDkgNUYgQTQgNTMgNTIgNTMgNTAgQTEgMDEgQTUgQTAgIE1GMVNNSV8uU1JTUC4uLi4K
ICAgIENEODA6IDFGIDkzIDY4IDExIDEzIDBBIDEwIEE1IDE2IDhFIENGIEU4IEMxIDI1IDRFIEI3
ICAuLmguLi4uLi4uLi4uJU4uCiAgICBDRDkwOiAxMiA0RiA1NCBBOSA2NyAwMiBDOCBBNCA0MyA1
MiA1OSA0NiA2OSA2QSA2QiBBMCAgLk9ULmcuLi5DUllGaWprLgogICAgQ0RBMDogMUYgOTMgNjgg
MTEgMTMgMEEgMTAgQUIgNkMgQkYgNkIgNjMgNTQgMTQgNDcgQjcgIC4uaC4uLi4ubC5rY1QuRy4K
ICAgIENEQjA6IENEIEYwIDIwIDNDIDAzIDY4IEQ0IEE0IDUzIDU0IDUyIDU0IDY5IDZBIDZCIEE0
ICAuLiA8LmguLlNUUlRpamsuCiAgICBDREMwOiAxMSAwMyAwMSAwMCAxNCA0QiAwNiA1NCA1MCA1
NCA1MyAwOSAwOCA1RiA1NCA1RiAgLi4uLi5LLlRQVFMuLl9UXwogICAgQ0REMDogMzAgMDAgQTIg
NDggMDUgMDEgNzAgOTkgNjggMDAgNUYgNTQgNUYgMzAgQTAgMjQgIDAuLkguLnAuaC5fVF8wLiQK
ICAgIENERTA6IDkzIDVGIDU0IDVGIDMwIDBBIDA0IDcwIDAwIDUyIDUxIDUzIDU0IDcwIDBBIDA5
ICAuX1RfMC4ucC5SUVNUcC4uCiAgICBDREYwOiA0NiA0QyA0MSA0NyA3MCAwMCA1MyA1MiA1MyA1
MCA3MCA0RiA0NiA1MyA1NCA1MyAgRkxBR3AuU1JTUHBPRlNUUwogICAgQ0UwMDogNEQgNDkgNUYg
QTEgMjYgQTAgMjQgOTMgNUYgNTQgNUYgMzAgMEEgMDUgNzAgMDAgIE1JXy4mLiQuX1RfMC4ucC4K
ICAgIENFMTA6IDUyIDUxIDUzIDU0IDcwIDBBIDA5IDQ2IDRDIDQxIDQ3IDcwIDAwIDUzIDUyIDUz
ICBSUVNUcC4uRkxBR3AuU1JTCiAgICBDRTIwOiA1MCA3MCA0RiA0NiA1MyA1NCA1MyA0RCA0OSA1
RiBBNSA1QiAyMiAwQiAyQyAwMSAgUHBPRlNUU01JXy5bIi4sLgogICAgQ0UzMDogMTAgMDUgNUYg
NDcgNTAgNDUgMDggNDIgNTIgNDUgNTYgMEEgMDIgMDggNEYgNDIgIC4uX0dQRS5CUkVWLi4uT0IK
ICAgIENFNDA6IDQ0IDUwIDBBIDAxIDA4IDQyIDRDIDQ1IDQ0IDBBIDAxIDA4IDQzIDRDIDQ1IDQ0
ICBEUC4uLkJMRUQuLi5DTEVECiAgICBDRTUwOiAwQSAwMSAxNCA0MiAwRCA0NCA0MiA0NyA0QyAw
MSBBMCA0NiAwNiA5MyA2OCAwMSAgLi4uQi5EQkdMLi5GLi5oLgogICAgQ0U2MDogNUMgMkYgMDUg
NUYgNTMgNDIgNUYgNTAgNDMgNDkgMzAgNTMgNDIgNTIgNDcgNTMgIFwvLl9TQl9QQ0kwU0JSR1MK
ICAgIENFNzA6IDQ5IDRGIDMxIDQ1IDRFIDQ2IDQ3IDBBIDA4IDdEIDVDIDJGIDA1IDVGIDUzIDQy
ICBJTzFFTkZHLi59XC8uX1NCCiAgICBDRTgwOiA1RiA1MCA0MyA0OSAzMCA1MyA0MiA1MiA0NyA1
MyA0OSA0RiAzMSA1MyA0MyA0NiAgX1BDSTBTQlJHU0lPMVNDRgogICAgQ0U5MDogNDYgMEEgMDIg
NUMgMkYgMDUgNUYgNTMgNDIgNUYgNTAgNDMgNDkgMzAgNTMgNDIgIEYuLlwvLl9TQl9QQ0kwU0IK
ICAgIENFQTA6IDUyIDQ3IDUzIDQ5IDRGIDMxIDUzIDQzIDQ2IDQ2IDVDIDJGIDA1IDVGIDUzIDQy
ICBSR1NJTzFTQ0ZGXC8uX1NCCiAgICBDRUIwOiA1RiA1MCA0MyA0OSAzMCA1MyA0MiA1MiA0NyA1
MyA0OSA0RiAzMSA0NSA1OCA0NiAgX1BDSTBTQlJHU0lPMUVYRgogICAgQ0VDMDogNDcgQTEgNDMg
MDYgNUMgMkYgMDUgNUYgNTMgNDIgNUYgNTAgNDMgNDkgMzAgNTMgIEcuQy5cLy5fU0JfUENJMFMK
ICAgIENFRDA6IDQyIDUyIDQ3IDUzIDQ5IDRGIDMxIDQ1IDRFIDQ2IDQ3IDBBIDA4IDdCIDVDIDJG
ICBCUkdTSU8xRU5GRy4ue1wvCiAgICBDRUUwOiAwNSA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMCA1
MyA0MiA1MiA0NyA1MyA0OSA0RiAgLl9TQl9QQ0kwU0JSR1NJTwogICAgQ0VGMDogMzEgNTMgNDMg
NDYgNDYgMEEgRkQgNUMgMkYgMDUgNUYgNTMgNDIgNUYgNTAgNDMgIDFTQ0ZGLi5cLy5fU0JfUEMK
ICAgIENGMDA6IDQ5IDMwIDUzIDQyIDUyIDQ3IDUzIDQ5IDRGIDMxIDUzIDQzIDQ2IDQ2IDVDIDJG
ICBJMFNCUkdTSU8xU0NGRlwvCiAgICBDRjEwOiAwNSA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMCA1
MyA0MiA1MiA0NyA1MyA0OSA0RiAgLl9TQl9QQ0kwU0JSR1NJTwogICAgQ0YyMDogMzEgNDUgNTgg
NDYgNDcgMTQgNDUgMjIgNDIgNTQgNEUgNEMgMDEgQTAgNDMgMTEgIDFFWEZHLkUiQlROTC4uQy4K
ICAgIENGMzA6IDkzIDY4IDAxIEEwIDQ5IDBBIDkzIDQyIDUyIDQ1IDU2IDBBIDAyIDVDIDJGIDA1
ICAuaC4uSS4uQlJFVi4uXC8uCiAgICBDRjQwOiA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMCA1MyA0
MiA1MiA0NyA1MyA0OSA0RiAzMSAgX1NCX1BDSTBTQlJHU0lPMQogICAgQ0Y1MDogNDUgNEUgNDYg
NDcgMEEgMDcgN0IgNUMgMkYgMDUgNUYgNTMgNDIgNUYgNTAgNDMgIEVORkcuLntcLy5fU0JfUEMK
ICAgIENGNjA6IDQ5IDMwIDUzIDQyIDUyIDQ3IDUzIDQ5IDRGIDMxIDUyIDQ3IDQ1IDM4IDBFIEY3
ICBJMFNCUkdTSU8xUkdFOC4uCiAgICBDRjcwOiBGRiBGRiBGRiBGRiBGRiBGRiBGRiA1QyAyRiAw
NSA1RiA1MyA0MiA1RiA1MCA0MyAgLi4uLi4uLlwvLl9TQl9QQwogICAgQ0Y4MDogNDkgMzAgNTMg
NDIgNTIgNDcgNTMgNDkgNEYgMzEgNTIgNDcgNDUgMzggN0IgNUMgIEkwU0JSR1NJTzFSR0U4e1wK
ICAgIENGOTA6IDJGIDA1IDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMwIDUzIDQyIDUyIDQ3IDUzIDQ5
ICAvLl9TQl9QQ0kwU0JSR1NJCiAgICBDRkEwOiA0RiAzMSA1MiA0NyA0NSAzOSAwRSBGNyBGRiBG
RiBGRiBGRiBGRiBGRiBGRiA1QyAgTzFSR0U5Li4uLi4uLi4uXAogICAgQ0ZCMDogMkYgMDUgNUYg
NTMgNDIgNUYgNTAgNDMgNDkgMzAgNTMgNDIgNTIgNDcgNTMgNDkgIC8uX1NCX1BDSTBTQlJHU0kK
ICAgIENGQzA6IDRGIDMxIDUyIDQ3IDQ1IDM5IDVDIDJGIDA1IDVGIDUzIDQyIDVGIDUwIDQzIDQ5
ICBPMVJHRTlcLy5fU0JfUENJCiAgICBDRkQwOiAzMCA1MyA0MiA1MiA0NyA1MyA0OSA0RiAzMSA0
NSA1OCA0NiA0NyBBMSA0MyAwNiAgMFNCUkdTSU8xRVhGRy5DLgogICAgQ0ZFMDogNUMgMkYgMDUg
NUYgNTMgNDIgNUYgNTAgNDMgNDkgMzAgNTMgNDIgNTIgNDcgNTMgIFwvLl9TQl9QQ0kwU0JSR1MK
ICAgIENGRjA6IDQ5IDRGIDMxIDQ1IDRFIDQ2IDQ3IDBBIDA4IDdCIDVDIDJGIDA1IDVGIDUzIDQy
ICBJTzFFTkZHLi57XC8uX1NCCiAgICBEMDAwOiA1RiA1MCA0MyA0OSAzMCA1MyA0MiA1MiA0NyA1
MyA0OSA0RiAzMSA1MiA0NyA0NSAgX1BDSTBTQlJHU0lPMVJHRQogICAgRDAxMDogMzEgMEEgRjcg
NUMgMkYgMDUgNUYgNTMgNDIgNUYgNTAgNDMgNDkgMzAgNTMgNDIgIDEuLlwvLl9TQl9QQ0kwU0IK
ICAgIEQwMjA6IDUyIDQ3IDUzIDQ5IDRGIDMxIDUyIDQ3IDQ1IDMxIDVDIDJGIDA1IDVGIDUzIDQy
ICBSR1NJTzFSR0UxXC8uX1NCCiAgICBEMDMwOiA1RiA1MCA0MyA0OSAzMCA1MyA0MiA1MiA0NyA1
MyA0OSA0RiAzMSA0NSA1OCA0NiAgX1BDSTBTQlJHU0lPMUVYRgogICAgRDA0MDogNDcgQTEgNDkg
MTAgQTAgNDIgMEEgOTMgNDIgNTIgNDUgNTYgMEEgMDIgNUMgMkYgIEcuSS4uQi4uQlJFVi4uXC8K
ICAgIEQwNTA6IDA1IDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMwIDUzIDQyIDUyIDQ3IDUzIDQ5IDRG
ICAuX1NCX1BDSTBTQlJHU0lPCiAgICBEMDYwOiAzMSA0NSA0RSA0NiA0NyAwQSAwNyA3QiA1QyAy
RiAwNSA1RiA1MyA0MiA1RiA1MCAgMUVORkcuLntcLy5fU0JfUAogICAgRDA3MDogNDMgNDkgMzAg
NTMgNDIgNTIgNDcgNTMgNDkgNEYgMzEgNTIgNDcgNDUgMzggMEUgIENJMFNCUkdTSU8xUkdFOC4K
ICAgIEQwODA6IEY3IEZGIEZGIEZGIEZGIEZGIEZGIEZGIDVDIDJGIDA1IDVGIDUzIDQyIDVGIDUw
ICAuLi4uLi4uLlwvLl9TQl9QCiAgICBEMDkwOiA0MyA0OSAzMCA1MyA0MiA1MiA0NyA1MyA0OSA0
RiAzMSA1MiA0NyA0NSAzOCA3RCAgQ0kwU0JSR1NJTzFSR0U4fQogICAgRDBBMDogNUMgMkYgMDUg
NUYgNTMgNDIgNUYgNTAgNDMgNDkgMzAgNTMgNDIgNTIgNDcgNTMgIFwvLl9TQl9QQ0kwU0JSR1MK
ICAgIEQwQjA6IDQ5IDRGIDMxIDUyIDQ3IDQ1IDM5IDBBIDA4IDVDIDJGIDA1IDVGIDUzIDQyIDVG
ICBJTzFSR0U5Li5cLy5fU0JfCiAgICBEMEMwOiA1MCA0MyA0OSAzMCA1MyA0MiA1MiA0NyA1MyA0
OSA0RiAzMSA1MiA0NyA0NSAzOSAgUENJMFNCUkdTSU8xUkdFOQogICAgRDBEMDogNUMgMkYgMDUg
NUYgNTMgNDIgNUYgNTAgNDMgNDkgMzAgNTMgNDIgNTIgNDcgNTMgIFwvLl9TQl9QQ0kwU0JSR1MK
ICAgIEQwRTA6IDQ5IDRGIDMxIDQ1IDU4IDQ2IDQ3IEExIDQzIDA2IDVDIDJGIDA1IDVGIDUzIDQy
ICBJTzFFWEZHLkMuXC8uX1NCCiAgICBEMEYwOiA1RiA1MCA0MyA0OSAzMCA1MyA0MiA1MiA0NyA1
MyA0OSA0RiAzMSA0NSA0RSA0NiAgX1BDSTBTQlJHU0lPMUVORgogICAgRDEwMDogNDcgMEEgMDgg
N0QgNUMgMkYgMDUgNUYgNTMgNDIgNUYgNTAgNDMgNDkgMzAgNTMgIEcuLn1cLy5fU0JfUENJMFMK
ICAgIEQxMTA6IDQyIDUyIDQ3IDUzIDQ5IDRGIDMxIDUyIDQ3IDQ1IDMxIDBBIDA4IDVDIDJGIDA1
ICBCUkdTSU8xUkdFMS4uXC8uCiAgICBEMTIwOiA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMCA1MyA0
MiA1MiA0NyA1MyA0OSA0RiAzMSAgX1NCX1BDSTBTQlJHU0lPMQogICAgRDEzMDogNTIgNDcgNDUg
MzEgNUMgMkYgMDUgNUYgNTMgNDIgNUYgNTAgNDMgNDkgMzAgNTMgIFJHRTFcLy5fU0JfUENJMFMK
ICAgIEQxNDA6IDQyIDUyIDQ3IDUzIDQ5IDRGIDMxIDQ1IDU4IDQ2IDQ3IDE0IDQzIDEwIDQzIDQz
ICBCUkdTSU8xRVhGRy5DLkNDCiAgICBEMTUwOiA0RCA0QyAwMSBBMCA0NiAwNiA5MyA2OCAwMSA1
QyAyRiAwNSA1RiA1MyA0MiA1RiAgTUwuLkYuLmguXC8uX1NCXwogICAgRDE2MDogNTAgNDMgNDkg
MzAgNTMgNDIgNTIgNDcgNTMgNDkgNEYgMzEgNDUgNEUgNDYgNDcgIFBDSTBTQlJHU0lPMUVORkcK
ICAgIEQxNzA6IDBBIDA3IDdEIDVDIDJGIDA1IDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMwIDUzIDQy
ICAuLn1cLy5fU0JfUENJMFNCCiAgICBEMTgwOiA1MiA0NyA1MyA0OSA0RiAzMSA1MiA0NyA0NSAz
MCAwQSAwMiA1QyAyRiAwNSA1RiAgUkdTSU8xUkdFMC4uXC8uXwogICAgRDE5MDogNTMgNDIgNUYg
NTAgNDMgNDkgMzAgNTMgNDIgNTIgNDcgNTMgNDkgNEYgMzEgNTIgIFNCX1BDSTBTQlJHU0lPMVIK
ICAgIEQxQTA6IDQ3IDQ1IDMwIDVDIDJGIDA1IDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMwIDUzIDQy
ICBHRTBcLy5fU0JfUENJMFNCCiAgICBEMUIwOiA1MiA0NyA1MyA0OSA0RiAzMSA0NSA1OCA0NiA0
NyBBMSA0NCAwOSA1QyAyRiAwNSAgUkdTSU8xRVhGRy5ELlwvLgogICAgRDFDMDogNUYgNTMgNDIg
NUYgNTAgNDMgNDkgMzAgNTMgNDIgNTIgNDcgNTMgNDkgNEYgMzEgIF9TQl9QQ0kwU0JSR1NJTzEK
ICAgIEQxRDA6IDQ1IDRFIDQ2IDQ3IDBBIDA3IDdCIDVDIDJGIDA1IDVGIDUzIDQyIDVGIDUwIDQz
ICBFTkZHLi57XC8uX1NCX1BDCiAgICBEMUUwOiA0OSAzMCA1MyA0MiA1MiA0NyA1MyA0OSA0RiAz
MSA1MiA0NyA0NSAzMCAwQSBGRCAgSTBTQlJHU0lPMVJHRTAuLgogICAgRDFGMDogNUMgMkYgMDUg
NUYgNTMgNDIgNUYgNTAgNDMgNDkgMzAgNTMgNDIgNTIgNDcgNTMgIFwvLl9TQl9QQ0kwU0JSR1MK
ICAgIEQyMDA6IDQ5IDRGIDMxIDUyIDQ3IDQ1IDMwIDdCIDVDIDJGIDA1IDVGIDUzIDQyIDVGIDUw
ICBJTzFSR0Uwe1wvLl9TQl9QCiAgICBEMjEwOiA0MyA0OSAzMCA1MyA0MiA1MiA0NyA1MyA0OSA0
RiAzMSA1MiA0NyA0NSAzMSAwQSAgQ0kwU0JSR1NJTzFSR0UxLgogICAgRDIyMDogRkQgNUMgMkYg
MDUgNUYgNTMgNDIgNUYgNTAgNDMgNDkgMzAgNTMgNDIgNTIgNDcgIC5cLy5fU0JfUENJMFNCUkcK
ICAgIEQyMzA6IDUzIDQ5IDRGIDMxIDUyIDQ3IDQ1IDMxIDVDIDJGIDA1IDVGIDUzIDQyIDVGIDUw
ICBTSU8xUkdFMVwvLl9TQl9QCiAgICBEMjQwOiA0MyA0OSAzMCA1MyA0MiA1MiA0NyA1MyA0OSA0
RiAzMSA0NSA1OCA0NiA0NyAxNCAgQ0kwU0JSR1NJTzFFWEZHLgogICAgRDI1MDogNDMgMDQgNEMg
NDUgNDQgNTMgMDEgQTAgMEMgOTMgNDIgNEMgNDUgNDQgMDEgNDQgIEMuTEVEUy4uLi5CTEVELkQK
ICAgIEQyNjA6IDQyIDQ3IDRDIDAxIEExIDA2IDQ0IDQyIDQ3IDRDIDAwIEEwIDBDIDkzIDQyIDRD
ICBCR0wuLi5EQkdMLi4uLkJMCiAgICBEMjcwOiA0NSA0NCAwMSA0MiA1NCA0RSA0QyAwMSBBMSAw
NiA0MiA1NCA0RSA0QyAwMCBBMCAgRUQuQlROTC4uLkJUTkwuLgogICAgRDI4MDogMEMgOTMgNDMg
NEMgNDUgNDQgMDEgNDMgNDMgNEQgNEMgMDEgQTEgMDYgNDMgNDMgIC4uQ0xFRC5DQ01MLi4uQ0MK
ICAgIEQyOTA6IDREIDRDIDAwIDE0IDE1IDRDIDQ1IDQ0IDU3IDAxIDQ0IDQyIDQ3IDRDIDAwIDQy
ICBNTC4uLkxFRFcuREJHTC5CCiAgICBEMkEwOiA1NCA0RSA0QyAwMCA0MyA0MyA0RCA0QyAwMCAx
MCA0QyAwNCAyRiAwNiA1RiA1MyAgVE5MLkNDTUwuLkwuLy5fUwogICAgRDJCMDogNDIgNUYgNTAg
NDMgNDkgMzEgNDcgNTAgNTAgNDIgNTUgNTAgMzAgMzAgNDQgNTAgIEJfUENJMUdQUEJVUDAwRFAK
ICAgIEQyQzA6IDMwIDMwIDRDIDRFIDMwIDMwIDE0IDJGIDREIDU0IDQzIDRDIDA4IDA4IDVBIDQ2
ICAwMExOMDAuL01UQ0wuLlpGCiAgICBEMkQwOiA1NyA0NiAxMiAxRSAxMyAwQSA0RCAwQSA1NCAw
QSA0MyAwQSA0QyAwQSAwMiAwMSAgV0YuLi4uTS5ULkMuTC4uLgogICAgRDJFMDogMEEgRkYgMEEg
RkYgMEEgRkYgMEEgRkYgMDAgMDAgMDEgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4K
ICAgIEQyRjA6IDAwIEE0IDVBIDQ2IDU3IDQ2ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAuLlpGV0YKClNTRFQgQCAweDAwMDAwMDAwMDAwMDAwMDAKICAgIDAwMDA6IDUzIDUzIDQ0IDU0
IDQ4IDI0IDAwIDAwIDAyIEE5IDQxIDREIDQ0IDAwIDAwIDAwICBTU0RUSCQuLi4uQU1ELi4uCiAg
ICAwMDEwOiA0NyA1MCA1MCA1RiA1MCA0RCA0NSA1RiAwMSAwMCAwMCAwMCA0OSA0RSA1NCA0QyAg
R1BQX1BNRV8uLi4uSU5UTAogICAgMDAyMDogMzEgMDMgMjMgMjAgQTAgNDggNjAgMDAgMTUgNUMg
NEQgMzAgMzEgMzcgMDggMDYgIDEuIyAuSGAuLlxNMDE3Li4KICAgIDAwMzA6IDE1IDVDIDREIDMw
IDMxIDM4IDA4IDA3IDE1IDVDIDREIDMxIDMxIDM1IDAzIDAwICAuXE0wMTguLi5cTTExNS4uCiAg
ICAwMDQwOiAxNSA1QyA0RCAzMSAzMSAzNiAwRSAwMCAxNSA1QyA0RCAzMSAzMSAzNyAwRSAwMCAg
LlxNMTE2Li4uXE0xMTcuLgogICAgMDA1MDogMTUgNUMgNEQgMzEgMzEgMzggMEUgMDAgMTUgNUMg
NEQgMzEgMzEgMzkgMEUgMDAgIC5cTTExOC4uLlxNMTE5Li4KICAgIDAwNjA6IDE1IDVDIDREIDMx
IDMyIDMwIDBFIDAwIDE1IDVDIDREIDMwIDMzIDM3IDA2IDAwICAuXE0xMjAuLi5cTTAzNy4uCiAg
ICAwMDcwOiAxNSA1QyA0RCAzMiAzMiAzNyAwNiAwMCAxNSA1QyA0RCAzMyAzMiAzOSAwNiAwMCAg
LlxNMjI3Li4uXE0zMjkuLgogICAgMDA4MDogMTUgNUMgNEQgMzMgMzIgNDEgMDYgMDAgMTUgNUMg
NEQgMzMgMzIgNDIgMDYgMDAgIC5cTTMyQS4uLlxNMzJCLi4KICAgIDAwOTA6IDE1IDVDIDREIDMz
IDMyIDQzIDA2IDAwIDE1IDVDIDREIDMzIDMzIDMwIDA2IDAwICAuXE0zMkMuLi5cTTMzMC4uCiAg
ICAwMEEwOiAxNSA1QyA0RCAzMCAzOCAzMiAwNSAwMCAxNSA1QyA0RCAzMCAzOCAzMyAwNSAwMCAg
LlxNMDgyLi4uXE0wODMuLgogICAgMDBCMDogMTUgNUMgNEQgMzAgMzggMzQgMDUgMDAgMTUgNUMg
NEQgMzAgMzggMzUgMDUgMDAgIC5cTTA4NC4uLlxNMDg1Li4KICAgIDAwQzA6IDE1IDVDIDREIDMy
IDMyIDMxIDA1IDAwIDE1IDVDIDREIDMwIDM4IDM2IDA1IDAwICAuXE0yMjEuLi5cTTA4Ni4uCiAg
ICAwMEQwOiAxNSA1QyA0RCAzMiAzMiAzOSAwNSAwMCAxNSA1QyA0RCAzMiAzMyAzMSAwNSAwMCAg
LlxNMjI5Li4uXE0yMzEuLgogICAgMDBFMDogMTUgNUMgNEQgMzIgMzMgMzUgMDUgMDAgMTUgNUMg
NEQgMzIgMzMgMzMgMDUgMDAgIC5cTTIzNS4uLlxNMjMzLi4KICAgIDAwRjA6IDE1IDVDIDREIDMw
IDM4IDM3IDA1IDAwIDE1IDVDIDREIDMwIDM4IDM4IDA1IDAwICAuXE0wODcuLi5cTTA4OC4uCiAg
ICAwMTAwOiAxNSA1QyA0RCAzMCAzOCAzOSAwNSAwMCAxNSA1QyA0RCAzMCAzOSAzMCAwNSAwMCAg
LlxNMDg5Li4uXE0wOTAuLgogICAgMDExMDogMTUgNUMgNEQgMzAgMzkgMzEgMDUgMDAgMTUgNUMg
NEQgMzAgMzkgMzIgMDUgMDAgIC5cTTA5MS4uLlxNMDkyLi4KICAgIDAxMjA6IDE1IDVDIDREIDMw
IDM5IDMzIDA1IDAwIDE1IDVDIDREIDMwIDM5IDM0IDA1IDAwICAuXE0wOTMuLi5cTTA5NC4uCiAg
ICAwMTMwOiAxNSA1QyA0RCAzMCAzOSAzNSAwNSAwMCAxNSA1QyA0RCAzMCAzOSAzNiAwNSAwMCAg
LlxNMDk1Li4uXE0wOTYuLgogICAgMDE0MDogMTUgNUMgNEQgMzAgMzkgMzcgMDUgMDAgMTUgNUMg
NEQgMzAgMzkgMzggMDUgMDAgIC5cTTA5Ny4uLlxNMDk4Li4KICAgIDAxNTA6IDE1IDVDIDREIDMw
IDM5IDM5IDA1IDAwIDE1IDVDIDREIDMxIDMwIDMwIDA1IDAwICAuXE0wOTkuLi5cTTEwMC4uCiAg
ICAwMTYwOiAxNSA1QyA0RCAzMSAzMCAzMSAwNSAwMCAxNSA1QyA0RCAzMSAzMCAzMiAwNSAwMCAg
LlxNMTAxLi4uXE0xMDIuLgogICAgMDE3MDogMTUgNUMgNEQgMzEgMzAgMzMgMDUgMDAgMTUgNUMg
NEQgMzEgMzAgMzQgMDUgMDAgIC5cTTEwMy4uLlxNMTA0Li4KICAgIDAxODA6IDE1IDVDIDREIDMx
IDMwIDM1IDA1IDAwIDE1IDVDIDREIDMxIDMwIDM2IDA1IDAwICAuXE0xMDUuLi5cTTEwNi4uCiAg
ICAwMTkwOiAxNSA1QyA0RCAzMSAzMCAzNyAwNSAwMCAxNSA1QyA0RCAzMSAzMiAzOCAwNSAwMCAg
LlxNMTA3Li4uXE0xMjguLgogICAgMDFBMDogMTUgNUMgNEQgMzEgMzAgMzggMDUgMDAgMTUgNUMg
NEQgMzEgMzAgMzkgMDUgMDAgIC5cTTEwOC4uLlxNMTA5Li4KICAgIDAxQjA6IDE1IDVDIDREIDMx
IDMxIDMwIDA1IDAwIDE1IDVDIDREIDMxIDMyIDMyIDA1IDAwICAuXE0xMTAuLi5cTTEyMi4uCiAg
ICAwMUMwOiAxNSA1QyA0RCAzMSAzMyAzMSAwNSAwMCAxNSA1QyA0RCAzMSAzMyAzMiAwNSAwMCAg
LlxNMTMxLi4uXE0xMzIuLgogICAgMDFEMDogMTUgNUMgNEQgMzIgMzIgMzYgMDUgMDAgMTUgNUMg
NEQgMzEgMzMgMzMgMDUgMDAgIC5cTTIyNi4uLlxNMTMzLi4KICAgIDAxRTA6IDE1IDVDIDREIDMx
IDMzIDM0IDA1IDAwIDE1IDVDIDREIDMxIDMzIDM1IDA1IDAwICAuXE0xMzQuLi5cTTEzNS4uCiAg
ICAwMUYwOiAxNSA1QyA0RCAzMSAzMyAzNiAwNSAwMCAxNSA1QyA0RCAzMiAzMiAzMCAwNSAwMCAg
LlxNMTM2Li4uXE0yMjAuLgogICAgMDIwMDogMTUgNUMgNEQgMzAgMzQgMzYgMDEgMDAgMTUgNUMg
NEQgMzAgMzQgMzcgMDEgMDAgIC5cTTA0Ni4uLlxNMDQ3Li4KICAgIDAyMTA6IDE1IDVDIDREIDMw
IDM0IDM5IDA4IDAyIDE1IDVDIDREIDMyIDM1IDMxIDA1IDAwICAuXE0wNDkuLi5cTTI1MS4uCiAg
ICAwMjIwOiAxNSA1QyA0RCAzMyAzMSAzMCAwNSAwMCAxNSA1QyA0RCAzMyAzMSA0MyAwNSAwMCAg
LlxNMzEwLi4uXE0zMUMuLgogICAgMDIzMDogMTUgNUMgNEQgMzMgMzIgMzAgMDUgMDAgMTUgNUMg
NEQgMzMgMzIgMzEgMDUgMDAgIC5cTTMyMC4uLlxNMzIxLi4KICAgIDAyNDA6IDE1IDVDIDREIDMz
IDMyIDMyIDA1IDAwIDE1IDVDIDREIDMzIDMyIDMzIDA1IDAwICAuXE0zMjIuLi5cTTMyMy4uCiAg
ICAwMjUwOiAxNSA1QyA0RCAzMyAzMiAzNCAwNSAwMCAxNSA1QyA0RCAzMyAzMiAzNSAwNSAwMCAg
LlxNMzI0Li4uXE0zMjUuLgogICAgMDI2MDogMTUgNUMgNEQgMzMgMzIgMzYgMDUgMDAgMTUgNUMg
NEQgMzMgMzIgMzcgMDUgMDAgIC5cTTMyNi4uLlxNMzI3Li4KICAgIDAyNzA6IDE1IDVDIDREIDMz
IDMyIDM4IDA1IDAwIDE1IDVDIDREIDMyIDM4IDMwIDA1IDAwICAuXE0zMjguLi5cTTI4MC4uCiAg
ICAwMjgwOiAxNSA1QyA0RCAzMiAzOSAzMCAwNSAwMCAxNSA1QyA0RCAzMyAzNyAzOCAwNSAwMCAg
LlxNMjkwLi4uXE0zNzguLgogICAgMDI5MDogMTUgNUMgNEQgMzMgMzcgMzkgMDUgMDAgMTUgNUMg
NEQgMzMgMzggMzAgMDUgMDAgIC5cTTM3OS4uLlxNMzgwLi4KICAgIDAyQTA6IDE1IDVDIDREIDMz
IDM4IDMxIDA1IDAwIDE1IDVDIDREIDMzIDM4IDMyIDA1IDAwICAuXE0zODEuLi5cTTM4Mi4uCiAg
ICAwMkIwOiAxNSA1QyA0RCAzMyAzOCAzMyAwNSAwMCAxNSA1QyA0RCAzMyAzOCAzNCAwNSAwMCAg
LlxNMzgzLi4uXE0zODQuLgogICAgMDJDMDogMTUgNUMgNEQgMzMgMzggMzUgMDUgMDAgMTUgNUMg
NEQgMzMgMzggMzYgMDUgMDAgIC5cTTM4NS4uLlxNMzg2Li4KICAgIDAyRDA6IDE1IDVDIDREIDMz
IDM4IDM3IDA1IDAwIDE1IDVDIDREIDMzIDM4IDM4IDA1IDAwICAuXE0zODcuLi5cTTM4OC4uCiAg
ICAwMkUwOiAxNSA1QyA0RCAzMyAzOCAzOSAwNSAwMCAxNSA1QyA0RCAzMyAzOSAzMCAwNSAwMCAg
LlxNMzg5Li4uXE0zOTAuLgogICAgMDJGMDogMTUgNUMgNEQgMzMgMzkgMzEgMDUgMDAgMTUgNUMg
NEQgMzMgMzkgMzIgMDUgMDAgIC5cTTM5MS4uLlxNMzkyLi4KICAgIDAzMDA6IDE1IDVDIDREIDMz
IDMzIDMxIDA1IDAwIDE1IDVDIDREIDM2IDMyIDMwIDA1IDAwICAuXE0zMzEuLi5cTTYyMC4uCiAg
ICAwMzEwOiAxNSA1QyA0RCAzNCAzMCAzNCAwMyAwMCAxNSA1QyA0RCAzNCAzMCAzOCAwOSAwMCAg
LlxNNDA0Li4uXE00MDguLgogICAgMDMyMDogMTUgNUMgNEQgMzQgMzEgMzQgMDUgMDAgMTUgNUMg
NEQgMzQgMzQgMzQgMDUgMDAgIC5cTTQxNC4uLlxNNDQ0Li4KICAgIDAzMzA6IDE1IDVDIDREIDM0
IDM1IDMzIDA1IDAwIDE1IDVDIDREIDM0IDM1IDM0IDA1IDAwICAuXE00NTMuLi5cTTQ1NC4uCiAg
ICAwMzQwOiAxNSA1QyA0RCAzNCAzNSAzNSAwNSAwMCAxNSA1QyA0RCAzNCAzNSAzNiAwNSAwMCAg
LlxNNDU1Li4uXE00NTYuLgogICAgMDM1MDogMTUgNUMgNEQgMzQgMzUgMzcgMDUgMDAgMTUgNUMg
NEQgMzQgMzYgMzAgMDggMDcgIC5cTTQ1Ny4uLlxNNDYwLi4KICAgIDAzNjA6IDE1IDVDIDREIDM0
IDM0IDM5IDA1IDAwIDE1IDVDIDREIDM0IDQzIDMwIDA1IDAwICAuXE00NDkuLi5cTTRDMC4uCiAg
ICAwMzcwOiAxNSA1QyA0RCAzMiAzMyA0MSAwNSAwMCAxNSA1QyA0RCAzNCA0NiAzMCAwNSAwMCAg
LlxNMjNBLi4uXE00RjAuLgogICAgMDM4MDogMTUgNUMgNEQgMzYgMzEgMzAgMDUgMDAgMTUgNUMg
NEQgMzIgMzkgNDEgMDUgMDAgIC5cTTYxMC4uLlxNMjlBLi4KICAgIDAzOTA6IDE1IDVDIDREIDM2
IDMzIDMxIDA1IDAwIDE1IDVDIDREIDM2IDM1IDMyIDA1IDAwICAuXE02MzEuLi5cTTY1Mi4uCiAg
ICAwM0EwOiAxNSA1QyA0RCAzMCAzNSAzMCAwNiAwMCAxNSA1QyA0RCAzMCAzNSAzMSAwNiAwMCAg
LlxNMDUwLi4uXE0wNTEuLgogICAgMDNCMDogMTUgNUMgNEQgMzAgMzUgMzIgMDYgMDAgMTUgNUMg
NEQgMzAgMzUgMzMgMDYgMDAgIC5cTTA1Mi4uLlxNMDUzLi4KICAgIDAzQzA6IDE1IDVDIDREIDMw
IDM1IDM0IDA2IDAwIDE1IDVDIDREIDMwIDM1IDM1IDA2IDAwICAuXE0wNTQuLi5cTTA1NS4uCiAg
ICAwM0QwOiAxNSA1QyA0RCAzMCAzNSAzNiAwNiAwMCAxNSA1QyA0RCAzMCAzNSAzNyAwNiAwMCAg
LlxNMDU2Li4uXE0wNTcuLgogICAgMDNFMDogMTUgNUMgNEQgMzAgMzUgMzggMDYgMDAgMTUgNUMg
NEQgMzAgMzUgMzkgMDYgMDAgIC5cTTA1OC4uLlxNMDU5Li4KICAgIDAzRjA6IDE1IDVDIDREIDMw
IDM2IDMyIDA2IDAwIDE1IDVDIDREIDMwIDM2IDM4IDA2IDAwICAuXE0wNjIuLi5cTTA2OC4uCiAg
ICAwNDAwOiAxNSA1QyA0RCAzMCAzNiAzOSAwNiAwMCAxNSA1QyA0RCAzMCAzNyAzMCAwNiAwMCAg
LlxNMDY5Li4uXE0wNzAuLgogICAgMDQxMDogMTUgNUMgNEQgMzAgMzcgMzEgMDYgMDAgMTUgNUMg
NEQgMzAgMzcgMzIgMDYgMDAgIC5cTTA3MS4uLlxNMDcyLi4KICAgIDA0MjA6IDE1IDVDIDREIDMw
IDM3IDM0IDA2IDAwIDE1IDVDIDREIDMwIDM3IDM1IDA2IDAwICAuXE0wNzQuLi5cTTA3NS4uCiAg
ICAwNDMwOiAxNSA1QyA0RCAzMCAzNyAzNiAwNiAwMCAxNSA1QyA0RCAzMCAzNyAzNyAwNiAwMCAg
LlxNMDc2Li4uXE0wNzcuLgogICAgMDQ0MDogMTUgNUMgNEQgMzAgMzcgMzggMDYgMDAgMTUgNUMg
NEQgMzAgMzcgMzkgMDYgMDAgIC5cTTA3OC4uLlxNMDc5Li4KICAgIDA0NTA6IDE1IDVDIDREIDMw
IDM4IDMwIDA2IDAwIDE1IDVDIDREIDMwIDM4IDMxIDA2IDAwICAuXE0wODAuLi5cTTA4MS4uCiAg
ICAwNDYwOiAxNSA1QyA0RCAzMSAzMiAzNyAwNiAwMCAxNSA1QyA1RiA0MiA0MiA0RSAwMSAwMCAg
LlxNMTI3Li4uXF9CQk4uLgogICAgMDQ3MDogMTUgNUMgMkUgNUYgNTMgNDIgNUYgNTAgNDMgNDkg
MzIgMDYgMDAgMTUgNUMgMkYgIC5cLl9TQl9QQ0kyLi4uXC8KICAgIDA0ODA6IDAzIDVGIDUzIDQy
IDVGIDUwIDQzIDQ5IDMyIDQ3IDUwIDUwIDMwIDA2IDAwIDE1ICAuX1NCX1BDSTJHUFAwLi4uCiAg
ICAwNDkwOiA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMiA0NyA1MCA1MCAzMSAwNiAg
XC8uX1NCX1BDSTJHUFAxLgogICAgMDRBMDogMDAgMTUgNUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAg
NDMgNDkgMzIgNDcgNTAgNTAgIC4uXC8uX1NCX1BDSTJHUFAKICAgIDA0QjA6IDMyIDA2IDAwIDE1
IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMyIDQ3ICAyLi4uXC8uX1NCX1BDSTJHCiAg
ICAwNEMwOiA1MCA1MCAzMyAwNiAwMCAxNSA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAg
UFAzLi4uXC8uX1NCX1BDSQogICAgMDREMDogMzIgNDcgNTAgNTAgMzQgMDYgMDAgMTUgNUMgMkYg
MDMgNUYgNTMgNDIgNUYgNTAgIDJHUFA0Li4uXC8uX1NCX1AKICAgIDA0RTA6IDQzIDQ5IDMyIDQ3
IDUwIDUwIDM1IDA2IDAwIDE1IDVDIDJGIDAzIDVGIDUzIDQyICBDSTJHUFA1Li4uXC8uX1NCCiAg
ICAwNEYwOiA1RiA1MCA0MyA0OSAzMiA0NyA1MCA1MCAzNiAwNiAwMCAxNSA1QyAyRiAwMyA1RiAg
X1BDSTJHUFA2Li4uXC8uXwogICAgMDUwMDogNTMgNDIgNUYgNTAgNDMgNDkgMzIgNDcgNTAgNTAg
MzcgMDYgMDAgMTUgNUMgMkYgIFNCX1BDSTJHUFA3Li4uXC8KICAgIDA1MTA6IDAzIDVGIDUzIDQy
IDVGIDUwIDQzIDQ5IDMyIDQ3IDUwIDUwIDM4IDA2IDAwIDE1ICAuX1NCX1BDSTJHUFA4Li4uCiAg
ICAwNTIwOiA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMiA0NyA1MCA1MCAzOSAwNiAg
XC8uX1NCX1BDSTJHUFA5LgogICAgMDUzMDogMDAgMTUgNUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAg
NDMgNDkgMzIgNDcgNTAgNTAgIC4uXC8uX1NCX1BDSTJHUFAKICAgIDA1NDA6IDQxIDA2IDAwIDE1
IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMyIDQ3ICBBLi4uXC8uX1NCX1BDSTJHCiAg
ICAwNTUwOiA1MCA1MCA0MiAwNiAwMCAxNSA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAg
UFBCLi4uXC8uX1NCX1BDSQogICAgMDU2MDogMzIgNDcgNTAgNTAgNDMgMDYgMDAgMTUgNUMgMkYg
MDMgNUYgNTMgNDIgNUYgNTAgIDJHUFBDLi4uXC8uX1NCX1AKICAgIDA1NzA6IDQzIDQ5IDMyIDQ3
IDUwIDUwIDQ0IDA2IDAwIDE1IDVDIDJGIDAzIDVGIDUzIDQyICBDSTJHUFBELi4uXC8uX1NCCiAg
ICAwNTgwOiA1RiA1MCA0MyA0OSAzMiA0NyA1MCA1MCA0NSAwNiAwMCAxNSA1QyAyRiAwMyA1RiAg
X1BDSTJHUFBFLi4uXC8uXwogICAgMDU5MDogNTMgNDIgNUYgNTAgNDMgNDkgMzIgNDcgNTAgNTAg
NDYgMDYgMDAgMTUgNUMgMkYgIFNCX1BDSTJHUFBGLi4uXC8KICAgIDA1QTA6IDAzIDVGIDUzIDQy
IDVGIDUwIDQzIDQ5IDMyIDQ3IDUwIDUwIDQ3IDA2IDAwIDE1ICAuX1NCX1BDSTJHUFBHLi4uCiAg
ICAwNUIwOiA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMiA0NyA1MCA1MCA0OCAwNiAg
XC8uX1NCX1BDSTJHUFBILgogICAgMDVDMDogMDAgMTUgNUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAg
NDMgNDkgMzIgNDcgNTAgMzEgIC4uXC8uX1NCX1BDSTJHUDEKICAgIDA1RDA6IDM1IDA2IDAwIDE1
IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMyIDQ3ICA1Li4uXC8uX1NCX1BDSTJHCiAg
ICAwNUUwOiA1MCAzMiAzNSAwNiAwMCAxNSA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAg
UDI1Li4uXC8uX1NCX1BDSQogICAgMDVGMDogMzIgNDcgNTAgMzMgMzUgMDYgMDAgMTUgNUMgMkYg
MDMgNUYgNTMgNDIgNUYgNTAgIDJHUDM1Li4uXC8uX1NCX1AKICAgIDA2MDA6IDQzIDQ5IDMyIDQ3
IDUwIDM0IDM1IDA2IDAwIDE1IDVDIDJGIDAzIDVGIDUzIDQyICBDSTJHUDQ1Li4uXC8uX1NCCiAg
ICAwNjEwOiA1RiA1MCA0MyA0OSAzMiA0NyA1MCAzMSAzNyAwNiAwMCAxNSA1QyAyRiAwMyA1RiAg
X1BDSTJHUDE3Li4uXC8uXwogICAgMDYyMDogNTMgNDIgNUYgNTAgNDMgNDkgMzIgNDcgNTAgMzIg
MzcgMDYgMDAgMTAgOEEgRTEgIFNCX1BDSTJHUDI3Li4uLi4KICAgIDA2MzA6IDAxIDVDIDJFIDVG
IDUzIDQyIDVGIDUwIDQzIDQ5IDMyIDA4IDQ1IDU0IDUwIDMwICAuXC5fU0JfUENJMi5FVFAwCiAg
ICAwNjQwOiAwQSA1NSAwOCA0NSA1NCA1MCAzMSAwQSA1NSAwOCA0NSA1NCA1MCAzMiAwQSA1NSAg
LlUuRVRQMS5VLkVUUDIuVQogICAgMDY1MDogMDggNDUgNTQgNTAgMzMgMEEgNTUgMDggNDUgNTQg
NTAgMzQgMEEgNTUgMDggNDUgIC5FVFAzLlUuRVRQNC5VLkUKICAgIDA2NjA6IDU0IDUwIDM1IDBB
IDU1IDA4IDQ1IDU0IDUwIDM2IDBBIDU1IDA4IDQ1IDU0IDUwICBUUDUuVS5FVFA2LlUuRVRQCiAg
ICAwNjcwOiAzNyAwQSA1NSAwOCA0NSA1NCA1MCAzOCAwQSA1NSAwOCA0NSA1NCA1MCAzOSAwQSAg
Ny5VLkVUUDguVS5FVFA5LgogICAgMDY4MDogNTUgMDggNDUgNTQgNTAgNDEgMEEgNTUgMDggNDUg
NTQgNTAgNDIgMEEgNTUgMDggIFUuRVRQQS5VLkVUUEIuVS4KICAgIDA2OTA6IDQ1IDU0IDUwIDQz
IDBBIDU1IDA4IDQ1IDU0IDUwIDQ0IDBBIDU1IDA4IDQ1IDU0ICBFVFBDLlUuRVRQRC5VLkVUCiAg
ICAwNkEwOiA1MCA0NSAwQSA1NSAwOCA0NSA1NCA1MCA0NiAwQSA1NSAwOCA0NSA1NCA1MCA0NyAg
UEUuVS5FVFBGLlUuRVRQRwogICAgMDZCMDogMEEgNTUgMDggNDUgNTQgNTAgNDggMEEgNTUgMDgg
NDUgNTQgMzEgMzUgMEEgNTUgIC5VLkVUUEguVS5FVDE1LlUKICAgIDA2QzA6IDA4IDQ1IDU0IDMy
IDM1IDBBIDU1IDA4IDQ1IDU0IDMzIDM1IDBBIDU1IDA4IDQ1ICAuRVQyNS5VLkVUMzUuVS5FCiAg
ICAwNkQwOiA1NCAzNCAzNSAwQSA1NSAwOCA0NSA1NCAzMSAzNyAwQSA1NSAwOCA0NSA1NCAzMiAg
VDQ1LlUuRVQxNy5VLkVUMgogICAgMDZFMDogMzcgMEEgNTUgMTQgODQgRDYgMDEgNTAgNTAgNEQg
NDUgMDAgNEQgMzQgMzYgMzAgIDcuVS4uLi5QUE1FLk00NjAKICAgIDA2RjA6IDBEIDIwIDIwIDRG
IDQ1IDREIDJEIDQxIDUzIDRDIDJEIDVDIDVGIDUzIDQyIDJFICAuICBPRU0tQVNMLVxfU0IuCiAg
ICAwNzAwOiA1MCA0MyA0OSAzMiAyRSA1MCA1MCA0RCA0NSAwQSAwMCAwMCAwMCAwMCAwMCAwMCAg
UENJMi5QUE1FLi4uLi4uLgogICAgMDcxMDogMDAgQTAgNEYgMTggOTIgOTMgNUMgMkYgMDMgNUYg
NTMgNDIgNUYgNTAgNDMgNDkgIC4uTy4uLlwvLl9TQl9QQ0kKICAgIDA3MjA6IDMyIDQ1IDU0IDUw
IDMwIDBBIEZGIDcwIDdBIDREIDMwIDMxIDM3IDVGIDQyIDQyICAyRVRQMC4ucHpNMDE3X0JCCiAg
ICAwNzMwOiA0RSAwMSAwMSAwQSA3OCAwMCAwQSAxOCAwQSAxMCAwMCA1QyAyRiAwMyA1RiA1MyAg
Ti4uLnguLi4uLi5cLy5fUwogICAgMDc0MDogNDIgNUYgNTAgNDMgNDkgMzIgNDUgNTQgNTAgMzAg
QTAgNDYgMTUgOTEgOTMgNUMgIEJfUENJMkVUUDAuRi4uLlwKICAgIDA3NTA6IDJGIDAzIDVGIDUz
IDQyIDVGIDUwIDQzIDQ5IDMyIDQ1IDU0IDUwIDMwIDAxIDkzICAvLl9TQl9QQ0kyRVRQMC4uCiAg
ICAwNzYwOiA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMiA0NSA1NCA1MCAzMCAwQSAg
XC8uX1NCX1BDSTJFVFAwLgogICAgMDc3MDogMDMgQTAgNEYgMTIgNUIgMTIgNUMgMkYgMDMgNUYg
NTMgNDIgNUYgNTAgNDMgNDkgIC4uTy5bLlwvLl9TQl9QQ0kKICAgIDA3ODA6IDMyIDQ3IDUwIDUw
IDMwIDAwIEEwIDQ5IDA2IDkyIDkzIDREIDM2IDMyIDMwIDAwICAyR1BQMC4uSS4uLk02MjAuCiAg
ICAwNzkwOiBBMCA0RiAwNSA5MyA0RCAzMCAzNCAzOSA0RCAzNiAzMiAzMCAwQSAxMCAwMSBBMCAg
Lk8uLk0wNDlNNjIwLi4uLgogICAgMDdBMDogNDAgMDUgOTMgN0IgNEQgMzAgMzQgMzkgNEQgMzYg
MzIgMzAgMEEgNTIgMEEgMDIgIEAuLntNMDQ5TTYyMC5SLi4KICAgIDA3QjA6IDAwIDAwIDREIDM0
IDM2IDMwIDBEIDIwIDIwIDIwIDIwIDRFIDZGIDc0IDY5IDY2ICAuLk00NjAuICAgIE5vdGlmCiAg
ICAwN0MwOiA3OSAyMCAyOCA1QyA1RiA1MyA0MiAyRSA1MCA0MyA0OSAzMiAyRSA0NyA1MCA1MCAg
eSAoXF9TQi5QQ0kyLkdQUAogICAgMDdEMDogMzAgMkMgMjAgMzAgNzggMzAgMjkgMEEgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgODYgIDAsIDB4MCkuLi4uLi4uLi4KICAgIDA3RTA6IDVDIDJGIDAzIDVG
IDUzIDQyIDVGIDUwIDQzIDQ5IDMyIDQ3IDUwIDUwIDMwIDAwICBcLy5fU0JfUENJMkdQUDAuCiAg
ICAwN0YwOiA0RCAzNCAzNiAzMCAwRCAyMCAyMCAyMCAyMCA0RSA2RiA3NCA2OSA2NiA3OSAyMCAg
TTQ2MC4gICAgTm90aWZ5IAogICAgMDgwMDogMjggNUMgNUYgNTMgNDIgMkUgNTAgNDMgNDkgMzIg
MkUgNDcgNTAgNTAgMzAgMkMgIChcX1NCLlBDSTIuR1BQMCwKICAgIDA4MTA6IDIwIDMwIDc4IDMy
IDI5IDBBIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDg2IDVDIDJGICAgMHgyKS4uLi4uLi4uLlwvCiAg
ICAwODIwOiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMiA0NyA1MCA1MCAzMCAwQSAwMiA1QiAg
Ll9TQl9QQ0kyR1BQMC4uWwogICAgMDgzMDogMjIgMEEgNjQgNzAgNEQgMzAgMzEgMzcgNUYgNDIg
NDIgNEUgMDEgMDEgMEEgNzggICIuZHBNMDE3X0JCTi4uLngKICAgIDA4NDA6IDAwIDBBIDIwIDYw
IEEwIDRDIDA1IDkyIDkzIDdCIDYwIDBDIDAwIDAwIDAzIDAwICAuLiBgLkwuLi57YC4uLi4uCiAg
ICAwODUwOiAwMCAwMCA0RCAzMCAzMSAzOCA1RiA0MiA0MiA0RSAwMSAwMSAwQSA3OCAwMCAwQSAg
Li5NMDE4X0JCTi4uLnguLgogICAgMDg2MDogMjAgNjAgNzAgNEQgMzAgMzEgMzcgNUYgNDIgNDIg
NEUgMDEgMDEgMEEgNzggMDAgICBgcE0wMTdfQkJOLi4ueC4KICAgIDA4NzA6IDBBIDIwIDYwIEEw
IDJEIDkyIDkzIDdCIDYwIDBDIDAwIDAwIDAzIDAwIDAwIDAwICAuIGAuLS4ue2AuLi4uLi4uCiAg
ICAwODgwOiA0RCAzMCAzMSAzOCA1RiA0MiA0MiA0RSAwMSAwMSAwQSA3OCAwMCAwQSAyMCA2MCAg
TTAxOF9CQk4uLi54Li4gYAogICAgMDg5MDogNzAgNEQgMzAgMzEgMzcgNUYgNDIgNDIgNEUgMDEg
MDEgMEEgNzggMDAgMEEgMjAgIHBNMDE3X0JCTi4uLnguLiAKICAgIDA4QTA6IDYwIEEwIDRCIDEy
IDkyIDkzIDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5ICBgLksuLi5cLy5fU0JfUENJCiAg
ICAwOEIwOiAzMiA0NSA1NCA1MCAzMSAwQSBGRiA3MCA3QSA0RCAzMCAzMSAzNyA1RiA0MiA0MiAg
MkVUUDEuLnB6TTAxN19CQgogICAgMDhDMDogNEUgMDEgMEEgMDIgMEEgNzggMDAgMEEgMTggMEEg
MTAgMDAgNUMgMkYgMDMgNUYgIE4uLi4ueC4uLi4uLlwvLl8KICAgIDA4RDA6IDUzIDQyIDVGIDUw
IDQzIDQ5IDMyIDQ1IDU0IDUwIDMxIEEwIDQxIDBGIDkxIDkzICBTQl9QQ0kyRVRQMS5BLi4uCiAg
ICAwOEUwOiA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMiA0NSA1NCA1MCAzMSAwMSAg
XC8uX1NCX1BDSTJFVFAxLgogICAgMDhGMDogOTMgNUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAgNDMg
NDkgMzIgNDUgNTQgNTAgMzEgIC5cLy5fU0JfUENJMkVUUDEKICAgIDA5MDA6IDBBIDAzIEEwIDRB
IDBDIDVCIDEyIDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzICAuLi5KLlsuXC8uX1NCX1BDCiAg
ICAwOTEwOiA0OSAzMiA0NyA1MCA1MCAzMSAwMCA0RCAzNCAzNiAzMCAwRCAyMCAyMCAyMCAyMCAg
STJHUFAxLk00NjAuICAgIAogICAgMDkyMDogNEUgNkYgNzQgNjkgNjYgNzkgMjAgMjggNUMgNUYg
NTMgNDIgMkUgNTAgNDMgNDkgIE5vdGlmeSAoXF9TQi5QQ0kKICAgIDA5MzA6IDMyIDJFIDQ3IDUw
IDUwIDMxIDJDIDIwIDMwIDc4IDMyIDI5IDBBIDAwIDAwIDAwICAyLkdQUDEsIDB4MikuLi4uCiAg
ICAwOTQwOiAwMCAwMCAwMCAwMCA4NiA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMiAg
Li4uLi5cLy5fU0JfUENJMgogICAgMDk1MDogNDcgNTAgNTAgMzEgMEEgMDIgNUIgMjIgMEEgNjQg
NzAgNEQgMzAgMzEgMzcgNUYgIEdQUDEuLlsiLmRwTTAxN18KICAgIDA5NjA6IDQyIDQyIDRFIDAx
IDBBIDAyIDBBIDc4IDAwIDBBIDIwIDYwIEEwIDQwIDA2IDkyICBCQk4uLi4ueC4uIGAuQC4uCiAg
ICAwOTcwOiA5MyA3QiA2MCAwQyAwMCAwMCAwMyAwMCAwMCAwMCA0RCAzMCAzMSAzOCA1RiA0MiAg
LntgLi4uLi4uLk0wMThfQgogICAgMDk4MDogNDIgNEUgMDEgMEEgMDIgMEEgNzggMDAgMEEgMjAg
NjAgNzAgNEQgMzAgMzEgMzcgIEJOLi4uLnguLiBgcE0wMTcKICAgIDA5OTA6IDVGIDQyIDQyIDRF
IDAxIDBBIDAyIDBBIDc4IDAwIDBBIDIwIDYwIEEwIDJGIDkyICBfQkJOLi4uLnguLiBgLi8uCiAg
ICAwOUEwOiA5MyA3QiA2MCAwQyAwMCAwMCAwMyAwMCAwMCAwMCA0RCAzMCAzMSAzOCA1RiA0MiAg
LntgLi4uLi4uLk0wMThfQgogICAgMDlCMDogNDIgNEUgMDEgMEEgMDIgMEEgNzggMDAgMEEgMjAg
NjAgNzAgNEQgMzAgMzEgMzcgIEJOLi4uLnguLiBgcE0wMTcKICAgIDA5QzA6IDVGIDQyIDQyIDRF
IDAxIDBBIDAyIDBBIDc4IDAwIDBBIDIwIDYwIEEwIDRCIDEyICBfQkJOLi4uLnguLiBgLksuCiAg
ICAwOUQwOiA5MiA5MyA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMiA0NSA1NCA1MCAg
Li5cLy5fU0JfUENJMkVUUAogICAgMDlFMDogMzIgMEEgRkYgNzAgN0EgNEQgMzAgMzEgMzcgNUYg
NDIgNDIgNEUgMDEgMEEgMDMgIDIuLnB6TTAxN19CQk4uLi4KICAgIDA5RjA6IDBBIDc4IDAwIDBB
IDE4IDBBIDEwIDAwIDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwICAueC4uLi4uLlwvLl9TQl9QCiAg
ICAwQTAwOiA0MyA0OSAzMiA0NSA1NCA1MCAzMiBBMCA0MSAwRiA5MSA5MyA1QyAyRiAwMyA1RiAg
Q0kyRVRQMi5BLi4uXC8uXwogICAgMEExMDogNTMgNDIgNUYgNTAgNDMgNDkgMzIgNDUgNTQgNTAg
MzIgMDEgOTMgNUMgMkYgMDMgIFNCX1BDSTJFVFAyLi5cLy4KICAgIDBBMjA6IDVGIDUzIDQyIDVG
IDUwIDQzIDQ5IDMyIDQ1IDU0IDUwIDMyIDBBIDAzIEEwIDRBICBfU0JfUENJMkVUUDIuLi5KCiAg
ICAwQTMwOiAwQyA1QiAxMiA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMiA0NyA1MCAg
LlsuXC8uX1NCX1BDSTJHUAogICAgMEE0MDogNTAgMzIgMDAgNEQgMzQgMzYgMzAgMEQgMjAgMjAg
MjAgMjAgNEUgNkYgNzQgNjkgIFAyLk00NjAuICAgIE5vdGkKICAgIDBBNTA6IDY2IDc5IDIwIDI4
IDVDIDVGIDUzIDQyIDJFIDUwIDQzIDQ5IDMyIDJFIDQ3IDUwICBmeSAoXF9TQi5QQ0kyLkdQCiAg
ICAwQTYwOiA1MCAzMiAyQyAyMCAzMCA3OCAzMiAyOSAwQSAwMCAwMCAwMCAwMCAwMCAwMCAwMCAg
UDIsIDB4MikuLi4uLi4uLgogICAgMEE3MDogODYgNUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAgNDMg
NDkgMzIgNDcgNTAgNTAgMzIgIC5cLy5fU0JfUENJMkdQUDIKICAgIDBBODA6IDBBIDAyIDVCIDIy
IDBBIDY0IDcwIDREIDMwIDMxIDM3IDVGIDQyIDQyIDRFIDAxICAuLlsiLmRwTTAxN19CQk4uCiAg
ICAwQTkwOiAwQSAwMyAwQSA3OCAwMCAwQSAyMCA2MCBBMCA0MCAwNiA5MiA5MyA3QiA2MCAwQyAg
Li4ueC4uIGAuQC4uLntgLgogICAgMEFBMDogMDAgMDAgMDMgMDAgMDAgMDAgNEQgMzAgMzEgMzgg
NUYgNDIgNDIgNEUgMDEgMEEgIC4uLi4uLk0wMThfQkJOLi4KICAgIDBBQjA6IDAzIDBBIDc4IDAw
IDBBIDIwIDYwIDcwIDREIDMwIDMxIDM3IDVGIDQyIDQyIDRFICAuLnguLiBgcE0wMTdfQkJOCiAg
ICAwQUMwOiAwMSAwQSAwMyAwQSA3OCAwMCAwQSAyMCA2MCBBMCAyRiA5MiA5MyA3QiA2MCAwQyAg
Li4uLnguLiBgLi8uLntgLgogICAgMEFEMDogMDAgMDAgMDMgMDAgMDAgMDAgNEQgMzAgMzEgMzgg
NUYgNDIgNDIgNEUgMDEgMEEgIC4uLi4uLk0wMThfQkJOLi4KICAgIDBBRTA6IDAzIDBBIDc4IDAw
IDBBIDIwIDYwIDcwIDREIDMwIDMxIDM3IDVGIDQyIDQyIDRFICAuLnguLiBgcE0wMTdfQkJOCiAg
ICAwQUYwOiAwMSAwQSAwMyAwQSA3OCAwMCAwQSAyMCA2MCBBMCA0QiAxMiA5MiA5MyA1QyAyRiAg
Li4uLnguLiBgLksuLi5cLwogICAgMEIwMDogMDMgNUYgNTMgNDIgNUYgNTAgNDMgNDkgMzIgNDUg
NTQgNTAgMzMgMEEgRkYgNzAgIC5fU0JfUENJMkVUUDMuLnAKICAgIDBCMTA6IDdBIDREIDMwIDMx
IDM3IDVGIDQyIDQyIDRFIDAxIDBBIDA0IDBBIDc4IDAwIDBBICB6TTAxN19CQk4uLi4ueC4uCiAg
ICAwQjIwOiAxOCAwQSAxMCAwMCA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMiA0NSAg
Li4uLlwvLl9TQl9QQ0kyRQogICAgMEIzMDogNTQgNTAgMzMgQTAgNDEgMEYgOTEgOTMgNUMgMkYg
MDMgNUYgNTMgNDIgNUYgNTAgIFRQMy5BLi4uXC8uX1NCX1AKICAgIDBCNDA6IDQzIDQ5IDMyIDQ1
IDU0IDUwIDMzIDAxIDkzIDVDIDJGIDAzIDVGIDUzIDQyIDVGICBDSTJFVFAzLi5cLy5fU0JfCiAg
ICAwQjUwOiA1MCA0MyA0OSAzMiA0NSA1NCA1MCAzMyAwQSAwMyBBMCA0QSAwQyA1QiAxMiA1QyAg
UENJMkVUUDMuLi5KLlsuXAogICAgMEI2MDogMkYgMDMgNUYgNTMgNDIgNUYgNTAgNDMgNDkgMzIg
NDcgNTAgNTAgMzMgMDAgNEQgIC8uX1NCX1BDSTJHUFAzLk0KICAgIDBCNzA6IDM0IDM2IDMwIDBE
IDIwIDIwIDIwIDIwIDRFIDZGIDc0IDY5IDY2IDc5IDIwIDI4ICA0NjAuICAgIE5vdGlmeSAoCiAg
ICAwQjgwOiA1QyA1RiA1MyA0MiAyRSA1MCA0MyA0OSAzMiAyRSA0NyA1MCA1MCAzMyAyQyAyMCAg
XF9TQi5QQ0kyLkdQUDMsIAogICAgMEI5MDogMzAgNzggMzIgMjkgMEEgMDAgMDAgMDAgMDAgMDAg
MDAgMDAgODYgNUMgMkYgMDMgIDB4MikuLi4uLi4uLi5cLy4KICAgIDBCQTA6IDVGIDUzIDQyIDVG
IDUwIDQzIDQ5IDMyIDQ3IDUwIDUwIDMzIDBBIDAyIDVCIDIyICBfU0JfUENJMkdQUDMuLlsiCiAg
ICAwQkIwOiAwQSA2NCA3MCA0RCAzMCAzMSAzNyA1RiA0MiA0MiA0RSAwMSAwQSAwNCAwQSA3OCAg
LmRwTTAxN19CQk4uLi4ueAogICAgMEJDMDogMDAgMEEgMjAgNjAgQTAgNDAgMDYgOTIgOTMgN0Ig
NjAgMEMgMDAgMDAgMDMgMDAgIC4uIGAuQC4uLntgLi4uLi4KICAgIDBCRDA6IDAwIDAwIDREIDMw
IDMxIDM4IDVGIDQyIDQyIDRFIDAxIDBBIDA0IDBBIDc4IDAwICAuLk0wMThfQkJOLi4uLnguCiAg
ICAwQkUwOiAwQSAyMCA2MCA3MCA0RCAzMCAzMSAzNyA1RiA0MiA0MiA0RSAwMSAwQSAwNCAwQSAg
LiBgcE0wMTdfQkJOLi4uLgogICAgMEJGMDogNzggMDAgMEEgMjAgNjAgQTAgMkYgOTIgOTMgN0Ig
NjAgMEMgMDAgMDAgMDMgMDAgIHguLiBgLi8uLntgLi4uLi4KICAgIDBDMDA6IDAwIDAwIDREIDMw
IDMxIDM4IDVGIDQyIDQyIDRFIDAxIDBBIDA0IDBBIDc4IDAwICAuLk0wMThfQkJOLi4uLnguCiAg
ICAwQzEwOiAwQSAyMCA2MCA3MCA0RCAzMCAzMSAzNyA1RiA0MiA0MiA0RSAwMSAwQSAwNCAwQSAg
LiBgcE0wMTdfQkJOLi4uLgogICAgMEMyMDogNzggMDAgMEEgMjAgNjAgQTAgNEIgMTIgOTIgOTMg
NUMgMkYgMDMgNUYgNTMgNDIgIHguLiBgLksuLi5cLy5fU0IKICAgIDBDMzA6IDVGIDUwIDQzIDQ5
IDMyIDQ1IDU0IDUwIDM0IDBBIEZGIDcwIDdBIDREIDMwIDMxICBfUENJMkVUUDQuLnB6TTAxCiAg
ICAwQzQwOiAzNyA1RiA0MiA0MiA0RSAwMSAwQSAwNSAwQSA3OCAwMCAwQSAxOCAwQSAxMCAwMCAg
N19CQk4uLi4ueC4uLi4uLgogICAgMEM1MDogNUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAgNDMgNDkg
MzIgNDUgNTQgNTAgMzQgQTAgIFwvLl9TQl9QQ0kyRVRQNC4KICAgIDBDNjA6IDQxIDBGIDkxIDkz
IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMyIDQ1ICBBLi4uXC8uX1NCX1BDSTJFCiAg
ICAwQzcwOiA1NCA1MCAzNCAwMSA5MyA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMiAg
VFA0Li5cLy5fU0JfUENJMgogICAgMEM4MDogNDUgNTQgNTAgMzQgMEEgMDMgQTAgNEEgMEMgNUIg
MTIgNUMgMkYgMDMgNUYgNTMgIEVUUDQuLi5KLlsuXC8uX1MKICAgIDBDOTA6IDQyIDVGIDUwIDQz
IDQ5IDMyIDQ3IDUwIDUwIDM0IDAwIDREIDM0IDM2IDMwIDBEICBCX1BDSTJHUFA0Lk00NjAuCiAg
ICAwQ0EwOiAyMCAyMCAyMCAyMCA0RSA2RiA3NCA2OSA2NiA3OSAyMCAyOCA1QyA1RiA1MyA0MiAg
ICAgIE5vdGlmeSAoXF9TQgogICAgMENCMDogMkUgNTAgNDMgNDkgMzIgMkUgNDcgNTAgNTAgMzQg
MkMgMjAgMzAgNzggMzIgMjkgIC5QQ0kyLkdQUDQsIDB4MikKICAgIDBDQzA6IDBBIDAwIDAwIDAw
IDAwIDAwIDAwIDAwIDg2IDVDIDJGIDAzIDVGIDUzIDQyIDVGICAuLi4uLi4uLi5cLy5fU0JfCiAg
ICAwQ0QwOiA1MCA0MyA0OSAzMiA0NyA1MCA1MCAzNCAwQSAwMiA1QiAyMiAwQSA2NCA3MCA0RCAg
UENJMkdQUDQuLlsiLmRwTQogICAgMENFMDogMzAgMzEgMzcgNUYgNDIgNDIgNEUgMDEgMEEgMDUg
MEEgNzggMDAgMEEgMjAgNjAgIDAxN19CQk4uLi4ueC4uIGAKICAgIDBDRjA6IEEwIDQwIDA2IDky
IDkzIDdCIDYwIDBDIDAwIDAwIDAzIDAwIDAwIDAwIDREIDMwICAuQC4uLntgLi4uLi4uLk0wCiAg
ICAwRDAwOiAzMSAzOCA1RiA0MiA0MiA0RSAwMSAwQSAwNSAwQSA3OCAwMCAwQSAyMCA2MCA3MCAg
MThfQkJOLi4uLnguLiBgcAogICAgMEQxMDogNEQgMzAgMzEgMzcgNUYgNDIgNDIgNEUgMDEgMEEg
MDUgMEEgNzggMDAgMEEgMjAgIE0wMTdfQkJOLi4uLnguLiAKICAgIDBEMjA6IDYwIEEwIDJGIDky
IDkzIDdCIDYwIDBDIDAwIDAwIDAzIDAwIDAwIDAwIDREIDMwICBgLi8uLntgLi4uLi4uLk0wCiAg
ICAwRDMwOiAzMSAzOCA1RiA0MiA0MiA0RSAwMSAwQSAwNSAwQSA3OCAwMCAwQSAyMCA2MCA3MCAg
MThfQkJOLi4uLnguLiBgcAogICAgMEQ0MDogNEQgMzAgMzEgMzcgNUYgNDIgNDIgNEUgMDEgMEEg
MDUgMEEgNzggMDAgMEEgMjAgIE0wMTdfQkJOLi4uLnguLiAKICAgIDBENTA6IDYwIEEwIDRCIDEy
IDkyIDkzIDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5ICBgLksuLi5cLy5fU0JfUENJCiAg
ICAwRDYwOiAzMiA0NSA1NCA1MCAzNSAwQSBGRiA3MCA3QSA0RCAzMCAzMSAzNyA1RiA0MiA0MiAg
MkVUUDUuLnB6TTAxN19CQgogICAgMEQ3MDogNEUgMDEgMEEgMDYgMEEgNzggMDAgMEEgMTggMEEg
MTAgMDAgNUMgMkYgMDMgNUYgIE4uLi4ueC4uLi4uLlwvLl8KICAgIDBEODA6IDUzIDQyIDVGIDUw
IDQzIDQ5IDMyIDQ1IDU0IDUwIDM1IEEwIDQxIDBGIDkxIDkzICBTQl9QQ0kyRVRQNS5BLi4uCiAg
ICAwRDkwOiA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMiA0NSA1NCA1MCAzNSAwMSAg
XC8uX1NCX1BDSTJFVFA1LgogICAgMERBMDogOTMgNUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAgNDMg
NDkgMzIgNDUgNTQgNTAgMzUgIC5cLy5fU0JfUENJMkVUUDUKICAgIDBEQjA6IDBBIDAzIEEwIDRB
IDBDIDVCIDEyIDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzICAuLi5KLlsuXC8uX1NCX1BDCiAg
ICAwREMwOiA0OSAzMiA0NyA1MCA1MCAzNSAwMCA0RCAzNCAzNiAzMCAwRCAyMCAyMCAyMCAyMCAg
STJHUFA1Lk00NjAuICAgIAogICAgMEREMDogNEUgNkYgNzQgNjkgNjYgNzkgMjAgMjggNUMgNUYg
NTMgNDIgMkUgNTAgNDMgNDkgIE5vdGlmeSAoXF9TQi5QQ0kKICAgIDBERTA6IDMyIDJFIDQ3IDUw
IDUwIDM1IDJDIDIwIDMwIDc4IDMyIDI5IDBBIDAwIDAwIDAwICAyLkdQUDUsIDB4MikuLi4uCiAg
ICAwREYwOiAwMCAwMCAwMCAwMCA4NiA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMiAg
Li4uLi5cLy5fU0JfUENJMgogICAgMEUwMDogNDcgNTAgNTAgMzUgMEEgMDIgNUIgMjIgMEEgNjQg
NzAgNEQgMzAgMzEgMzcgNUYgIEdQUDUuLlsiLmRwTTAxN18KICAgIDBFMTA6IDQyIDQyIDRFIDAx
IDBBIDA2IDBBIDc4IDAwIDBBIDIwIDYwIEEwIDQwIDA2IDkyICBCQk4uLi4ueC4uIGAuQC4uCiAg
ICAwRTIwOiA5MyA3QiA2MCAwQyAwMCAwMCAwMyAwMCAwMCAwMCA0RCAzMCAzMSAzOCA1RiA0MiAg
LntgLi4uLi4uLk0wMThfQgogICAgMEUzMDogNDIgNEUgMDEgMEEgMDYgMEEgNzggMDAgMEEgMjAg
NjAgNzAgNEQgMzAgMzEgMzcgIEJOLi4uLnguLiBgcE0wMTcKICAgIDBFNDA6IDVGIDQyIDQyIDRF
IDAxIDBBIDA2IDBBIDc4IDAwIDBBIDIwIDYwIEEwIDJGIDkyICBfQkJOLi4uLnguLiBgLi8uCiAg
ICAwRTUwOiA5MyA3QiA2MCAwQyAwMCAwMCAwMyAwMCAwMCAwMCA0RCAzMCAzMSAzOCA1RiA0MiAg
LntgLi4uLi4uLk0wMThfQgogICAgMEU2MDogNDIgNEUgMDEgMEEgMDYgMEEgNzggMDAgMEEgMjAg
NjAgNzAgNEQgMzAgMzEgMzcgIEJOLi4uLnguLiBgcE0wMTcKICAgIDBFNzA6IDVGIDQyIDQyIDRF
IDAxIDBBIDA2IDBBIDc4IDAwIDBBIDIwIDYwIEEwIDRCIDEyICBfQkJOLi4uLnguLiBgLksuCiAg
ICAwRTgwOiA5MiA5MyA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMiA0NSA1NCA1MCAg
Li5cLy5fU0JfUENJMkVUUAogICAgMEU5MDogMzYgMEEgRkYgNzAgN0EgNEQgMzAgMzEgMzcgNUYg
NDIgNDIgNEUgMDEgMEEgMDcgIDYuLnB6TTAxN19CQk4uLi4KICAgIDBFQTA6IDBBIDc4IDAwIDBB
IDE4IDBBIDEwIDAwIDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwICAueC4uLi4uLlwvLl9TQl9QCiAg
ICAwRUIwOiA0MyA0OSAzMiA0NSA1NCA1MCAzNiBBMCA0MSAwRiA5MSA5MyA1QyAyRiAwMyA1RiAg
Q0kyRVRQNi5BLi4uXC8uXwogICAgMEVDMDogNTMgNDIgNUYgNTAgNDMgNDkgMzIgNDUgNTQgNTAg
MzYgMDEgOTMgNUMgMkYgMDMgIFNCX1BDSTJFVFA2Li5cLy4KICAgIDBFRDA6IDVGIDUzIDQyIDVG
IDUwIDQzIDQ5IDMyIDQ1IDU0IDUwIDM2IDBBIDAzIEEwIDRBICBfU0JfUENJMkVUUDYuLi5KCiAg
ICAwRUUwOiAwQyA1QiAxMiA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMiA0NyA1MCAg
LlsuXC8uX1NCX1BDSTJHUAogICAgMEVGMDogNTAgMzYgMDAgNEQgMzQgMzYgMzAgMEQgMjAgMjAg
MjAgMjAgNEUgNkYgNzQgNjkgIFA2Lk00NjAuICAgIE5vdGkKICAgIDBGMDA6IDY2IDc5IDIwIDI4
IDVDIDVGIDUzIDQyIDJFIDUwIDQzIDQ5IDMyIDJFIDQ3IDUwICBmeSAoXF9TQi5QQ0kyLkdQCiAg
ICAwRjEwOiA1MCAzNiAyQyAyMCAzMCA3OCAzMiAyOSAwQSAwMCAwMCAwMCAwMCAwMCAwMCAwMCAg
UDYsIDB4MikuLi4uLi4uLgogICAgMEYyMDogODYgNUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAgNDMg
NDkgMzIgNDcgNTAgNTAgMzYgIC5cLy5fU0JfUENJMkdQUDYKICAgIDBGMzA6IDBBIDAyIDVCIDIy
IDBBIDY0IDcwIDREIDMwIDMxIDM3IDVGIDQyIDQyIDRFIDAxICAuLlsiLmRwTTAxN19CQk4uCiAg
ICAwRjQwOiAwQSAwNyAwQSA3OCAwMCAwQSAyMCA2MCBBMCA0MCAwNiA5MiA5MyA3QiA2MCAwQyAg
Li4ueC4uIGAuQC4uLntgLgogICAgMEY1MDogMDAgMDAgMDMgMDAgMDAgMDAgNEQgMzAgMzEgMzgg
NUYgNDIgNDIgNEUgMDEgMEEgIC4uLi4uLk0wMThfQkJOLi4KICAgIDBGNjA6IDA3IDBBIDc4IDAw
IDBBIDIwIDYwIDcwIDREIDMwIDMxIDM3IDVGIDQyIDQyIDRFICAuLnguLiBgcE0wMTdfQkJOCiAg
ICAwRjcwOiAwMSAwQSAwNyAwQSA3OCAwMCAwQSAyMCA2MCBBMCAyRiA5MiA5MyA3QiA2MCAwQyAg
Li4uLnguLiBgLi8uLntgLgogICAgMEY4MDogMDAgMDAgMDMgMDAgMDAgMDAgNEQgMzAgMzEgMzgg
NUYgNDIgNDIgNEUgMDEgMEEgIC4uLi4uLk0wMThfQkJOLi4KICAgIDBGOTA6IDA3IDBBIDc4IDAw
IDBBIDIwIDYwIDcwIDREIDMwIDMxIDM3IDVGIDQyIDQyIDRFICAuLnguLiBgcE0wMTdfQkJOCiAg
ICAwRkEwOiAwMSAwQSAwNyAwQSA3OCAwMCAwQSAyMCA2MCBBMCA0NiAxOSA5MiA5MyA1QyAyRiAg
Li4uLnguLiBgLkYuLi5cLwogICAgMEZCMDogMDMgNUYgNTMgNDIgNUYgNTAgNDMgNDkgMzIgNDUg
NTQgNTAgMzcgMEEgRkYgNzAgIC5fU0JfUENJMkVUUDcuLnAKICAgIDBGQzA6IDdBIDREIDMwIDMx
IDM3IDVGIDQyIDQyIDRFIDBBIDAyIDAxIDBBIDc4IDAwIDBBICB6TTAxN19CQk4uLi4ueC4uCiAg
ICAwRkQwOiAxOCAwQSAxMCAwMCA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMiA0NSAg
Li4uLlwvLl9TQl9QQ0kyRQogICAgMEZFMDogNTQgNTAgMzcgQTAgNEMgMTUgOTEgOTMgNUMgMkYg
MDMgNUYgNTMgNDIgNUYgNTAgIFRQNy5MLi4uXC8uX1NCX1AKICAgIDBGRjA6IDQzIDQ5IDMyIDQ1
IDU0IDUwIDM3IDAxIDkzIDVDIDJGIDAzIDVGIDUzIDQyIDVGICBDSTJFVFA3Li5cLy5fU0JfCiAg
ICAxMDAwOiA1MCA0MyA0OSAzMiA0NSA1NCA1MCAzNyAwQSAwMyBBMCA0NSAxMyA1QiAxMiA1QyAg
UENJMkVUUDcuLi5FLlsuXAogICAgMTAxMDogMkYgMDMgNUYgNTMgNDIgNUYgNTAgNDMgNDkgMzIg
NDcgNTAgNTAgMzcgMDAgQTAgIC8uX1NCX1BDSTJHUFA3Li4KICAgIDEwMjA6IDRBIDA2IDkyIDkz
IDREIDM2IDMyIDMwIDAwIEEwIDQwIDA2IDkzIDREIDMwIDM0ICBKLi4uTTYyMC4uQC4uTTA0CiAg
ICAxMDMwOiAzOSA0RCAzNiAzMiAzMCAwQSAxMCAwQSAwMiBBMCA0MCAwNSA5MyA3QiA0RCAzMCAg
OU02MjAuLi4uLkAuLntNMAogICAgMTA0MDogMzQgMzkgNEQgMzYgMzIgMzAgMEEgNTIgMEEgMDIg
MDAgMDAgNEQgMzQgMzYgMzAgIDQ5TTYyMC5SLi4uLk00NjAKICAgIDEwNTA6IDBEIDIwIDIwIDIw
IDIwIDRFIDZGIDc0IDY5IDY2IDc5IDIwIDI4IDVDIDVGIDUzICAuICAgIE5vdGlmeSAoXF9TCiAg
ICAxMDYwOiA0MiAyRSA1MCA0MyA0OSAzMiAyRSA0NyA1MCA1MCAzNyAyQyAyMCAzMCA3OCAzMCAg
Qi5QQ0kyLkdQUDcsIDB4MAogICAgMTA3MDogMjkgMEEgMDAgMDAgMDAgMDAgMDAgMDAgMDAgODYg
NUMgMkYgMDMgNUYgNTMgNDIgICkuLi4uLi4uLi5cLy5fU0IKICAgIDEwODA6IDVGIDUwIDQzIDQ5
IDMyIDQ3IDUwIDUwIDM3IDAwIDREIDM0IDM2IDMwIDBEIDIwICBfUENJMkdQUDcuTTQ2MC4gCiAg
ICAxMDkwOiAyMCAyMCAyMCA0RSA2RiA3NCA2OSA2NiA3OSAyMCAyOCA1QyA1RiA1MyA0MiAyRSAg
ICAgTm90aWZ5IChcX1NCLgogICAgMTBBMDogNTAgNDMgNDkgMzIgMkUgNDcgNTAgNTAgMzcgMkMg
MjAgMzAgNzggMzIgMjkgMEEgIFBDSTIuR1BQNywgMHgyKS4KICAgIDEwQjA6IDAwIDAwIDAwIDAw
IDAwIDAwIDAwIDg2IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwICAuLi4uLi4uLlwvLl9TQl9QCiAg
ICAxMEMwOiA0MyA0OSAzMiA0NyA1MCA1MCAzNyAwQSAwMiA1QiAyMiAwQSA2NCA3MCA0RCAzMCAg
Q0kyR1BQNy4uWyIuZHBNMAogICAgMTBEMDogMzEgMzcgNUYgNDIgNDIgNEUgMEEgMDIgMDEgMEEg
NzggMDAgMEEgMjAgNjAgQTAgIDE3X0JCTi4uLi54Li4gYC4KICAgIDEwRTA6IDQwIDA2IDkyIDkz
IDdCIDYwIDBDIDAwIDAwIDAzIDAwIDAwIDAwIDREIDMwIDMxICBALi4ue2AuLi4uLi4uTTAxCiAg
ICAxMEYwOiAzOCA1RiA0MiA0MiA0RSAwQSAwMiAwMSAwQSA3OCAwMCAwQSAyMCA2MCA3MCA0RCAg
OF9CQk4uLi4ueC4uIGBwTQogICAgMTEwMDogMzAgMzEgMzcgNUYgNDIgNDIgNEUgMEEgMDIgMDEg
MEEgNzggMDAgMEEgMjAgNjAgIDAxN19CQk4uLi4ueC4uIGAKICAgIDExMTA6IEEwIDJGIDkyIDkz
IDdCIDYwIDBDIDAwIDAwIDAzIDAwIDAwIDAwIDREIDMwIDMxICAuLy4ue2AuLi4uLi4uTTAxCiAg
ICAxMTIwOiAzOCA1RiA0MiA0MiA0RSAwQSAwMiAwMSAwQSA3OCAwMCAwQSAyMCA2MCA3MCA0RCAg
OF9CQk4uLi4ueC4uIGBwTQogICAgMTEzMDogMzAgMzEgMzcgNUYgNDIgNDIgNEUgMEEgMDIgMDEg
MEEgNzggMDAgMEEgMjAgNjAgIDAxN19CQk4uLi4ueC4uIGAKICAgIDExNDA6IEEwIDQxIDEzIDky
IDkzIDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMyICAuQS4uLlwvLl9TQl9QQ0kyCiAg
ICAxMTUwOiA0NSA1NCA1MCAzOCAwQSBGRiA3MCA3QSA0RCAzMCAzMSAzNyA1RiA0MiA0MiA0RSAg
RVRQOC4ucHpNMDE3X0JCTgogICAgMTE2MDogMEEgMDIgMEEgMDIgMEEgNzggMDAgMEEgMTggMEEg
MTAgMDAgNUMgMkYgMDMgNUYgIC4uLi4ueC4uLi4uLlwvLl8KICAgIDExNzA6IDUzIDQyIDVGIDUw
IDQzIDQ5IDMyIDQ1IDU0IDUwIDM4IEEwIDQ2IDBGIDkxIDkzICBTQl9QQ0kyRVRQOC5GLi4uCiAg
ICAxMTgwOiA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMiA0NSA1NCA1MCAzOCAwMSAg
XC8uX1NCX1BDSTJFVFA4LgogICAgMTE5MDogOTMgNUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAgNDMg
NDkgMzIgNDUgNTQgNTAgMzggIC5cLy5fU0JfUENJMkVUUDgKICAgIDExQTA6IDBBIDAzIEEwIDRG
IDBDIDVCIDEyIDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzICAuLi5PLlsuXC8uX1NCX1BDCiAg
ICAxMUIwOiA0OSAzMiA0NyA1MCA1MCAzOCAwMCA0RCAzNCAzNiAzMCAwRCAyMCAyMCAyMCAyMCAg
STJHUFA4Lk00NjAuICAgIAogICAgMTFDMDogNEUgNkYgNzQgNjkgNjYgNzkgMjAgMjggNUMgNUYg
NTMgNDIgMkUgNTAgNDMgNDkgIE5vdGlmeSAoXF9TQi5QQ0kKICAgIDExRDA6IDMyIDJFIDQ3IDUw
IDUwIDM4IDJDIDIwIDMwIDc4IDMyIDI5IDBBIDAwIDAwIDAwICAyLkdQUDgsIDB4MikuLi4uCiAg
ICAxMUUwOiAwMCAwMCAwMCAwMCA4NiA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMiAg
Li4uLi5cLy5fU0JfUENJMgogICAgMTFGMDogNDcgNTAgNTAgMzggMEEgMDIgNUIgMjIgMEEgNjQg
NzAgNEQgMzAgMzEgMzcgNUYgIEdQUDguLlsiLmRwTTAxN18KICAgIDEyMDA6IDQyIDQyIDRFIDBB
IDAyIDBBIDAyIDBBIDc4IDAwIDBBIDIwIDYwIEEwIDQ0IDA2ICBCQk4uLi4uLnguLiBgLkQuCiAg
ICAxMjEwOiA5MiA5MyA3QiA2MCAwQyAwMCAwMCAwMyAwMCAwMCAwMCA0RCAzMCAzMSAzOCA1RiAg
Li57YC4uLi4uLi5NMDE4XwogICAgMTIyMDogNDIgNDIgNEUgMEEgMDIgMEEgMDIgMEEgNzggMDAg
MEEgMjAgNjAgNzAgNEQgMzAgIEJCTi4uLi4ueC4uIGBwTTAKICAgIDEyMzA6IDMxIDM3IDVGIDQy
IDQyIDRFIDBBIDAyIDBBIDAyIDBBIDc4IDAwIDBBIDIwIDYwICAxN19CQk4uLi4uLnguLiBgCiAg
ICAxMjQwOiBBMCAzMSA5MiA5MyA3QiA2MCAwQyAwMCAwMCAwMyAwMCAwMCAwMCA0RCAzMCAzMSAg
LjEuLntgLi4uLi4uLk0wMQogICAgMTI1MDogMzggNUYgNDIgNDIgNEUgMEEgMDIgMEEgMDIgMEEg
NzggMDAgMEEgMjAgNjAgNzAgIDhfQkJOLi4uLi54Li4gYHAKICAgIDEyNjA6IDREIDMwIDMxIDM3
IDVGIDQyIDQyIDRFIDBBIDAyIDBBIDAyIDBBIDc4IDAwIDBBICBNMDE3X0JCTi4uLi4ueC4uCiAg
ICAxMjcwOiAyMCA2MCBBMCA0QiAxMiA5MiA5MyA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0MyAg
IGAuSy4uLlwvLl9TQl9QQwogICAgMTI4MDogNDkgMzIgNDUgNTQgNTAgMzkgMEEgRkYgNzAgN0Eg
NEQgMzAgMzEgMzcgNUYgNDIgIEkyRVRQOS4ucHpNMDE3X0IKICAgIDEyOTA6IDQyIDRFIDBBIDAz
IDAxIDBBIDc4IDAwIDBBIDE4IDBBIDEwIDAwIDVDIDJGIDAzICBCTi4uLi54Li4uLi4uXC8uCiAg
ICAxMkEwOiA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMiA0NSA1NCA1MCAzOSBBMCA0MSAwRiA5MSAg
X1NCX1BDSTJFVFA5LkEuLgogICAgMTJCMDogOTMgNUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAgNDMg
NDkgMzIgNDUgNTQgNTAgMzkgIC5cLy5fU0JfUENJMkVUUDkKICAgIDEyQzA6IDAxIDkzIDVDIDJG
IDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMyIDQ1IDU0IDUwICAuLlwvLl9TQl9QQ0kyRVRQCiAg
ICAxMkQwOiAzOSAwQSAwMyBBMCA0QSAwQyA1QiAxMiA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCAg
OS4uLkouWy5cLy5fU0JfUAogICAgMTJFMDogNDMgNDkgMzIgNDcgNTAgNTAgMzkgMDAgNEQgMzQg
MzYgMzAgMEQgMjAgMjAgMjAgIENJMkdQUDkuTTQ2MC4gICAKICAgIDEyRjA6IDIwIDRFIDZGIDc0
IDY5IDY2IDc5IDIwIDI4IDVDIDVGIDUzIDQyIDJFIDUwIDQzICAgTm90aWZ5IChcX1NCLlBDCiAg
ICAxMzAwOiA0OSAzMiAyRSA0NyA1MCA1MCAzOSAyQyAyMCAzMCA3OCAzMiAyOSAwQSAwMCAwMCAg
STIuR1BQOSwgMHgyKS4uLgogICAgMTMxMDogMDAgMDAgMDAgMDAgMDAgODYgNUMgMkYgMDMgNUYg
NTMgNDIgNUYgNTAgNDMgNDkgIC4uLi4uLlwvLl9TQl9QQ0kKICAgIDEzMjA6IDMyIDQ3IDUwIDUw
IDM5IDBBIDAyIDVCIDIyIDBBIDY0IDcwIDREIDMwIDMxIDM3ICAyR1BQOS4uWyIuZHBNMDE3CiAg
ICAxMzMwOiA1RiA0MiA0MiA0RSAwQSAwMyAwMSAwQSA3OCAwMCAwQSAyMCA2MCBBMCA0MCAwNiAg
X0JCTi4uLi54Li4gYC5ALgogICAgMTM0MDogOTIgOTMgN0IgNjAgMEMgMDAgMDAgMDMgMDAgMDAg
MDAgNEQgMzAgMzEgMzggNUYgIC4ue2AuLi4uLi4uTTAxOF8KICAgIDEzNTA6IDQyIDQyIDRFIDBB
IDAzIDAxIDBBIDc4IDAwIDBBIDIwIDYwIDcwIDREIDMwIDMxICBCQk4uLi4ueC4uIGBwTTAxCiAg
ICAxMzYwOiAzNyA1RiA0MiA0MiA0RSAwQSAwMyAwMSAwQSA3OCAwMCAwQSAyMCA2MCBBMCAyRiAg
N19CQk4uLi4ueC4uIGAuLwogICAgMTM3MDogOTIgOTMgN0IgNjAgMEMgMDAgMDAgMDMgMDAgMDAg
MDAgNEQgMzAgMzEgMzggNUYgIC4ue2AuLi4uLi4uTTAxOF8KICAgIDEzODA6IDQyIDQyIDRFIDBB
IDAzIDAxIDBBIDc4IDAwIDBBIDIwIDYwIDcwIDREIDMwIDMxICBCQk4uLi4ueC4uIGBwTTAxCiAg
ICAxMzkwOiAzNyA1RiA0MiA0MiA0RSAwQSAwMyAwMSAwQSA3OCAwMCAwQSAyMCA2MCBBMCA0MSAg
N19CQk4uLi4ueC4uIGAuQQogICAgMTNBMDogMTMgOTIgOTMgNUMgMkYgMDMgNUYgNTMgNDIgNUYg
NTAgNDMgNDkgMzIgNDUgNTQgIC4uLlwvLl9TQl9QQ0kyRVQKICAgIDEzQjA6IDUwIDQxIDBBIEZG
IDcwIDdBIDREIDMwIDMxIDM3IDVGIDQyIDQyIDRFIDBBIDAzICBQQS4ucHpNMDE3X0JCTi4uCiAg
ICAxM0MwOiAwQSAwMiAwQSA3OCAwMCAwQSAxOCAwQSAxMCAwMCA1QyAyRiAwMyA1RiA1MyA0MiAg
Li4ueC4uLi4uLlwvLl9TQgogICAgMTNEMDogNUYgNTAgNDMgNDkgMzIgNDUgNTQgNTAgNDEgQTAg
NDYgMEYgOTEgOTMgNUMgMkYgIF9QQ0kyRVRQQS5GLi4uXC8KICAgIDEzRTA6IDAzIDVGIDUzIDQy
IDVGIDUwIDQzIDQ5IDMyIDQ1IDU0IDUwIDQxIDAxIDkzIDVDICAuX1NCX1BDSTJFVFBBLi5cCiAg
ICAxM0YwOiAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMiA0NSA1NCA1MCA0MSAwQSAwMyAg
Ly5fU0JfUENJMkVUUEEuLgogICAgMTQwMDogQTAgNEYgMEMgNUIgMTIgNUMgMkYgMDMgNUYgNTMg
NDIgNUYgNTAgNDMgNDkgMzIgIC5PLlsuXC8uX1NCX1BDSTIKICAgIDE0MTA6IDQ3IDUwIDUwIDQx
IDAwIDREIDM0IDM2IDMwIDBEIDIwIDIwIDIwIDIwIDRFIDZGICBHUFBBLk00NjAuICAgIE5vCiAg
ICAxNDIwOiA3NCA2OSA2NiA3OSAyMCAyOCA1QyA1RiA1MyA0MiAyRSA1MCA0MyA0OSAzMiAyRSAg
dGlmeSAoXF9TQi5QQ0kyLgogICAgMTQzMDogNDcgNTAgNTAgNDEgMkMgMjAgMzAgNzggMzIgMjkg
MEEgMDAgMDAgMDAgMDAgMDAgIEdQUEEsIDB4MikuLi4uLi4KICAgIDE0NDA6IDAwIDAwIDg2IDVD
IDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMyIDQ3IDUwICAuLi5cLy5fU0JfUENJMkdQCiAg
ICAxNDUwOiA1MCA0MSAwQSAwMiA1QiAyMiAwQSA2NCA3MCA0RCAzMCAzMSAzNyA1RiA0MiA0MiAg
UEEuLlsiLmRwTTAxN19CQgogICAgMTQ2MDogNEUgMEEgMDMgMEEgMDIgMEEgNzggMDAgMEEgMjAg
NjAgQTAgNDQgMDYgOTIgOTMgIE4uLi4uLnguLiBgLkQuLi4KICAgIDE0NzA6IDdCIDYwIDBDIDAw
IDAwIDAzIDAwIDAwIDAwIDREIDMwIDMxIDM4IDVGIDQyIDQyICB7YC4uLi4uLi5NMDE4X0JCCiAg
ICAxNDgwOiA0RSAwQSAwMyAwQSAwMiAwQSA3OCAwMCAwQSAyMCA2MCA3MCA0RCAzMCAzMSAzNyAg
Ti4uLi4ueC4uIGBwTTAxNwogICAgMTQ5MDogNUYgNDIgNDIgNEUgMEEgMDMgMEEgMDIgMEEgNzgg
MDAgMEEgMjAgNjAgQTAgMzEgIF9CQk4uLi4uLnguLiBgLjEKICAgIDE0QTA6IDkyIDkzIDdCIDYw
IDBDIDAwIDAwIDAzIDAwIDAwIDAwIDREIDMwIDMxIDM4IDVGICAuLntgLi4uLi4uLk0wMThfCiAg
ICAxNEIwOiA0MiA0MiA0RSAwQSAwMyAwQSAwMiAwQSA3OCAwMCAwQSAyMCA2MCA3MCA0RCAzMCAg
QkJOLi4uLi54Li4gYHBNMAogICAgMTRDMDogMzEgMzcgNUYgNDIgNDIgNEUgMEEgMDMgMEEgMDIg
MEEgNzggMDAgMEEgMjAgNjAgIDE3X0JCTi4uLi4ueC4uIGAKICAgIDE0RDA6IEEwIDQxIDEzIDky
IDkzIDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMyICAuQS4uLlwvLl9TQl9QQ0kyCiAg
ICAxNEUwOiA0NSA1NCA1MCA0MiAwQSBGRiA3MCA3QSA0RCAzMCAzMSAzNyA1RiA0MiA0MiA0RSAg
RVRQQi4ucHpNMDE3X0JCTgogICAgMTRGMDogMEEgMDMgMEEgMDMgMEEgNzggMDAgMEEgMTggMEEg
MTAgMDAgNUMgMkYgMDMgNUYgIC4uLi4ueC4uLi4uLlwvLl8KICAgIDE1MDA6IDUzIDQyIDVGIDUw
IDQzIDQ5IDMyIDQ1IDU0IDUwIDQyIEEwIDQ2IDBGIDkxIDkzICBTQl9QQ0kyRVRQQi5GLi4uCiAg
ICAxNTEwOiA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMiA0NSA1NCA1MCA0MiAwMSAg
XC8uX1NCX1BDSTJFVFBCLgogICAgMTUyMDogOTMgNUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAgNDMg
NDkgMzIgNDUgNTQgNTAgNDIgIC5cLy5fU0JfUENJMkVUUEIKICAgIDE1MzA6IDBBIDAzIEEwIDRG
IDBDIDVCIDEyIDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzICAuLi5PLlsuXC8uX1NCX1BDCiAg
ICAxNTQwOiA0OSAzMiA0NyA1MCA1MCA0MiAwMCA0RCAzNCAzNiAzMCAwRCAyMCAyMCAyMCAyMCAg
STJHUFBCLk00NjAuICAgIAogICAgMTU1MDogNEUgNkYgNzQgNjkgNjYgNzkgMjAgMjggNUMgNUYg
NTMgNDIgMkUgNTAgNDMgNDkgIE5vdGlmeSAoXF9TQi5QQ0kKICAgIDE1NjA6IDMyIDJFIDQ3IDUw
IDUwIDQyIDJDIDIwIDMwIDc4IDMyIDI5IDBBIDAwIDAwIDAwICAyLkdQUEIsIDB4MikuLi4uCiAg
ICAxNTcwOiAwMCAwMCAwMCAwMCA4NiA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMiAg
Li4uLi5cLy5fU0JfUENJMgogICAgMTU4MDogNDcgNTAgNTAgNDIgMEEgMDIgNUIgMjIgMEEgNjQg
NzAgNEQgMzAgMzEgMzcgNUYgIEdQUEIuLlsiLmRwTTAxN18KICAgIDE1OTA6IDQyIDQyIDRFIDBB
IDAzIDBBIDAzIDBBIDc4IDAwIDBBIDIwIDYwIEEwIDQ0IDA2ICBCQk4uLi4uLnguLiBgLkQuCiAg
ICAxNUEwOiA5MiA5MyA3QiA2MCAwQyAwMCAwMCAwMyAwMCAwMCAwMCA0RCAzMCAzMSAzOCA1RiAg
Li57YC4uLi4uLi5NMDE4XwogICAgMTVCMDogNDIgNDIgNEUgMEEgMDMgMEEgMDMgMEEgNzggMDAg
MEEgMjAgNjAgNzAgNEQgMzAgIEJCTi4uLi4ueC4uIGBwTTAKICAgIDE1QzA6IDMxIDM3IDVGIDQy
IDQyIDRFIDBBIDAzIDBBIDAzIDBBIDc4IDAwIDBBIDIwIDYwICAxN19CQk4uLi4uLnguLiBgCiAg
ICAxNUQwOiBBMCAzMSA5MiA5MyA3QiA2MCAwQyAwMCAwMCAwMyAwMCAwMCAwMCA0RCAzMCAzMSAg
LjEuLntgLi4uLi4uLk0wMQogICAgMTVFMDogMzggNUYgNDIgNDIgNEUgMEEgMDMgMEEgMDMgMEEg
NzggMDAgMEEgMjAgNjAgNzAgIDhfQkJOLi4uLi54Li4gYHAKICAgIDE1RjA6IDREIDMwIDMxIDM3
IDVGIDQyIDQyIDRFIDBBIDAzIDBBIDAzIDBBIDc4IDAwIDBBICBNMDE3X0JCTi4uLi4ueC4uCiAg
ICAxNjAwOiAyMCA2MCBBMCA0MSAxMyA5MiA5MyA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0MyAg
IGAuQS4uLlwvLl9TQl9QQwogICAgMTYxMDogNDkgMzIgNDUgNTQgNTAgNDMgMEEgRkYgNzAgN0Eg
NEQgMzAgMzEgMzcgNUYgNDIgIEkyRVRQQy4ucHpNMDE3X0IKICAgIDE2MjA6IDQyIDRFIDBBIDAz
IDBBIDA0IDBBIDc4IDAwIDBBIDE4IDBBIDEwIDAwIDVDIDJGICBCTi4uLi4ueC4uLi4uLlwvCiAg
ICAxNjMwOiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMiA0NSA1NCA1MCA0MyBBMCA0NiAwRiAg
Ll9TQl9QQ0kyRVRQQy5GLgogICAgMTY0MDogOTEgOTMgNUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAg
NDMgNDkgMzIgNDUgNTQgNTAgIC4uXC8uX1NCX1BDSTJFVFAKICAgIDE2NTA6IDQzIDAxIDkzIDVD
IDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMyIDQ1IDU0ICBDLi5cLy5fU0JfUENJMkVUCiAg
ICAxNjYwOiA1MCA0MyAwQSAwMyBBMCA0RiAwQyA1QiAxMiA1QyAyRiAwMyA1RiA1MyA0MiA1RiAg
UEMuLi5PLlsuXC8uX1NCXwogICAgMTY3MDogNTAgNDMgNDkgMzIgNDcgNTAgNTAgNDMgMDAgNEQg
MzQgMzYgMzAgMEQgMjAgMjAgIFBDSTJHUFBDLk00NjAuICAKICAgIDE2ODA6IDIwIDIwIDRFIDZG
IDc0IDY5IDY2IDc5IDIwIDI4IDVDIDVGIDUzIDQyIDJFIDUwICAgIE5vdGlmeSAoXF9TQi5QCiAg
ICAxNjkwOiA0MyA0OSAzMiAyRSA0NyA1MCA1MCA0MyAyQyAyMCAzMCA3OCAzMiAyOSAwQSAwMCAg
Q0kyLkdQUEMsIDB4MikuLgogICAgMTZBMDogMDAgMDAgMDAgMDAgMDAgMDAgODYgNUMgMkYgMDMg
NUYgNTMgNDIgNUYgNTAgNDMgIC4uLi4uLi5cLy5fU0JfUEMKICAgIDE2QjA6IDQ5IDMyIDQ3IDUw
IDUwIDQzIDBBIDAyIDVCIDIyIDBBIDY0IDcwIDREIDMwIDMxICBJMkdQUEMuLlsiLmRwTTAxCiAg
ICAxNkMwOiAzNyA1RiA0MiA0MiA0RSAwQSAwMyAwQSAwNCAwQSA3OCAwMCAwQSAyMCA2MCBBMCAg
N19CQk4uLi4uLnguLiBgLgogICAgMTZEMDogNDQgMDYgOTIgOTMgN0IgNjAgMEMgMDAgMDAgMDMg
MDAgMDAgMDAgNEQgMzAgMzEgIEQuLi57YC4uLi4uLi5NMDEKICAgIDE2RTA6IDM4IDVGIDQyIDQy
IDRFIDBBIDAzIDBBIDA0IDBBIDc4IDAwIDBBIDIwIDYwIDcwICA4X0JCTi4uLi4ueC4uIGBwCiAg
ICAxNkYwOiA0RCAzMCAzMSAzNyA1RiA0MiA0MiA0RSAwQSAwMyAwQSAwNCAwQSA3OCAwMCAwQSAg
TTAxN19CQk4uLi4uLnguLgogICAgMTcwMDogMjAgNjAgQTAgMzEgOTIgOTMgN0IgNjAgMEMgMDAg
MDAgMDMgMDAgMDAgMDAgNEQgICBgLjEuLntgLi4uLi4uLk0KICAgIDE3MTA6IDMwIDMxIDM4IDVG
IDQyIDQyIDRFIDBBIDAzIDBBIDA0IDBBIDc4IDAwIDBBIDIwICAwMThfQkJOLi4uLi54Li4gCiAg
ICAxNzIwOiA2MCA3MCA0RCAzMCAzMSAzNyA1RiA0MiA0MiA0RSAwQSAwMyAwQSAwNCAwQSA3OCAg
YHBNMDE3X0JCTi4uLi4ueAogICAgMTczMDogMDAgMEEgMjAgNjAgQTAgNDEgMTMgOTIgOTMgNUMg
MkYgMDMgNUYgNTMgNDIgNUYgIC4uIGAuQS4uLlwvLl9TQl8KICAgIDE3NDA6IDUwIDQzIDQ5IDMy
IDQ1IDU0IDUwIDQ0IDBBIEZGIDcwIDdBIDREIDMwIDMxIDM3ICBQQ0kyRVRQRC4ucHpNMDE3CiAg
ICAxNzUwOiA1RiA0MiA0MiA0RSAwQSAwMyAwQSAwNSAwQSA3OCAwMCAwQSAxOCAwQSAxMCAwMCAg
X0JCTi4uLi4ueC4uLi4uLgogICAgMTc2MDogNUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAgNDMgNDkg
MzIgNDUgNTQgNTAgNDQgQTAgIFwvLl9TQl9QQ0kyRVRQRC4KICAgIDE3NzA6IDQ2IDBGIDkxIDkz
IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMyIDQ1ICBGLi4uXC8uX1NCX1BDSTJFCiAg
ICAxNzgwOiA1NCA1MCA0NCAwMSA5MyA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMiAg
VFBELi5cLy5fU0JfUENJMgogICAgMTc5MDogNDUgNTQgNTAgNDQgMEEgMDMgQTAgNEYgMEMgNUIg
MTIgNUMgMkYgMDMgNUYgNTMgIEVUUEQuLi5PLlsuXC8uX1MKICAgIDE3QTA6IDQyIDVGIDUwIDQz
IDQ5IDMyIDQ3IDUwIDUwIDQ0IDAwIDREIDM0IDM2IDMwIDBEICBCX1BDSTJHUFBELk00NjAuCiAg
ICAxN0IwOiAyMCAyMCAyMCAyMCA0RSA2RiA3NCA2OSA2NiA3OSAyMCAyOCA1QyA1RiA1MyA0MiAg
ICAgIE5vdGlmeSAoXF9TQgogICAgMTdDMDogMkUgNTAgNDMgNDkgMzIgMkUgNDcgNTAgNTAgNDQg
MkMgMjAgMzAgNzggMzIgMjkgIC5QQ0kyLkdQUEQsIDB4MikKICAgIDE3RDA6IDBBIDAwIDAwIDAw
IDAwIDAwIDAwIDAwIDg2IDVDIDJGIDAzIDVGIDUzIDQyIDVGICAuLi4uLi4uLi5cLy5fU0JfCiAg
ICAxN0UwOiA1MCA0MyA0OSAzMiA0NyA1MCA1MCA0NCAwQSAwMiA1QiAyMiAwQSA2NCA3MCA0RCAg
UENJMkdQUEQuLlsiLmRwTQogICAgMTdGMDogMzAgMzEgMzcgNUYgNDIgNDIgNEUgMEEgMDMgMEEg
MDUgMEEgNzggMDAgMEEgMjAgIDAxN19CQk4uLi4uLnguLiAKICAgIDE4MDA6IDYwIEEwIDQ0IDA2
IDkyIDkzIDdCIDYwIDBDIDAwIDAwIDAzIDAwIDAwIDAwIDREICBgLkQuLi57YC4uLi4uLi5NCiAg
ICAxODEwOiAzMCAzMSAzOCA1RiA0MiA0MiA0RSAwQSAwMyAwQSAwNSAwQSA3OCAwMCAwQSAyMCAg
MDE4X0JCTi4uLi4ueC4uIAogICAgMTgyMDogNjAgNzAgNEQgMzAgMzEgMzcgNUYgNDIgNDIgNEUg
MEEgMDMgMEEgMDUgMEEgNzggIGBwTTAxN19CQk4uLi4uLngKICAgIDE4MzA6IDAwIDBBIDIwIDYw
IEEwIDMxIDkyIDkzIDdCIDYwIDBDIDAwIDAwIDAzIDAwIDAwICAuLiBgLjEuLntgLi4uLi4uCiAg
ICAxODQwOiAwMCA0RCAzMCAzMSAzOCA1RiA0MiA0MiA0RSAwQSAwMyAwQSAwNSAwQSA3OCAwMCAg
Lk0wMThfQkJOLi4uLi54LgogICAgMTg1MDogMEEgMjAgNjAgNzAgNEQgMzAgMzEgMzcgNUYgNDIg
NDIgNEUgMEEgMDMgMEEgMDUgIC4gYHBNMDE3X0JCTi4uLi4KICAgIDE4NjA6IDBBIDc4IDAwIDBB
IDIwIDYwIEEwIDQxIDEzIDkyIDkzIDVDIDJGIDAzIDVGIDUzICAueC4uIGAuQS4uLlwvLl9TCiAg
ICAxODcwOiA0MiA1RiA1MCA0MyA0OSAzMiA0NSA1NCA1MCA0NSAwQSBGRiA3MCA3QSA0RCAzMCAg
Ql9QQ0kyRVRQRS4ucHpNMAogICAgMTg4MDogMzEgMzcgNUYgNDIgNDIgNEUgMEEgMDMgMEEgMDYg
MEEgNzggMDAgMEEgMTggMEEgIDE3X0JCTi4uLi4ueC4uLi4KICAgIDE4OTA6IDEwIDAwIDVDIDJG
IDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMyIDQ1IDU0IDUwICAuLlwvLl9TQl9QQ0kyRVRQCiAg
ICAxOEEwOiA0NSBBMCA0NiAwRiA5MSA5MyA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAg
RS5GLi4uXC8uX1NCX1BDSQogICAgMThCMDogMzIgNDUgNTQgNTAgNDUgMDEgOTMgNUMgMkYgMDMg
NUYgNTMgNDIgNUYgNTAgNDMgIDJFVFBFLi5cLy5fU0JfUEMKICAgIDE4QzA6IDQ5IDMyIDQ1IDU0
IDUwIDQ1IDBBIDAzIEEwIDRGIDBDIDVCIDEyIDVDIDJGIDAzICBJMkVUUEUuLi5PLlsuXC8uCiAg
ICAxOEQwOiA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMiA0NyA1MCA1MCA0NSAwMCA0RCAzNCAzNiAg
X1NCX1BDSTJHUFBFLk00NgogICAgMThFMDogMzAgMEQgMjAgMjAgMjAgMjAgNEUgNkYgNzQgNjkg
NjYgNzkgMjAgMjggNUMgNUYgIDAuICAgIE5vdGlmeSAoXF8KICAgIDE4RjA6IDUzIDQyIDJFIDUw
IDQzIDQ5IDMyIDJFIDQ3IDUwIDUwIDQ1IDJDIDIwIDMwIDc4ICBTQi5QQ0kyLkdQUEUsIDB4CiAg
ICAxOTAwOiAzMiAyOSAwQSAwMCAwMCAwMCAwMCAwMCAwMCAwMCA4NiA1QyAyRiAwMyA1RiA1MyAg
MikuLi4uLi4uLi5cLy5fUwogICAgMTkxMDogNDIgNUYgNTAgNDMgNDkgMzIgNDcgNTAgNTAgNDUg
MEEgMDIgNUIgMjIgMEEgNjQgIEJfUENJMkdQUEUuLlsiLmQKICAgIDE5MjA6IDcwIDREIDMwIDMx
IDM3IDVGIDQyIDQyIDRFIDBBIDAzIDBBIDA2IDBBIDc4IDAwICBwTTAxN19CQk4uLi4uLnguCiAg
ICAxOTMwOiAwQSAyMCA2MCBBMCA0NCAwNiA5MiA5MyA3QiA2MCAwQyAwMCAwMCAwMyAwMCAwMCAg
LiBgLkQuLi57YC4uLi4uLgogICAgMTk0MDogMDAgNEQgMzAgMzEgMzggNUYgNDIgNDIgNEUgMEEg
MDMgMEEgMDYgMEEgNzggMDAgIC5NMDE4X0JCTi4uLi4ueC4KICAgIDE5NTA6IDBBIDIwIDYwIDcw
IDREIDMwIDMxIDM3IDVGIDQyIDQyIDRFIDBBIDAzIDBBIDA2ICAuIGBwTTAxN19CQk4uLi4uCiAg
ICAxOTYwOiAwQSA3OCAwMCAwQSAyMCA2MCBBMCAzMSA5MiA5MyA3QiA2MCAwQyAwMCAwMCAwMyAg
LnguLiBgLjEuLntgLi4uLgogICAgMTk3MDogMDAgMDAgMDAgNEQgMzAgMzEgMzggNUYgNDIgNDIg
NEUgMEEgMDMgMEEgMDYgMEEgIC4uLk0wMThfQkJOLi4uLi4KICAgIDE5ODA6IDc4IDAwIDBBIDIw
IDYwIDcwIDREIDMwIDMxIDM3IDVGIDQyIDQyIDRFIDBBIDAzICB4Li4gYHBNMDE3X0JCTi4uCiAg
ICAxOTkwOiAwQSAwNiAwQSA3OCAwMCAwQSAyMCA2MCBBMCA0MSAxMyA5MiA5MyA1QyAyRiAwMyAg
Li4ueC4uIGAuQS4uLlwvLgogICAgMTlBMDogNUYgNTMgNDIgNUYgNTAgNDMgNDkgMzIgNDUgNTQg
NTAgNDYgMEEgRkYgNzAgN0EgIF9TQl9QQ0kyRVRQRi4ucHoKICAgIDE5QjA6IDREIDMwIDMxIDM3
IDVGIDQyIDQyIDRFIDBBIDAzIDBBIDA3IDBBIDc4IDAwIDBBICBNMDE3X0JCTi4uLi4ueC4uCiAg
ICAxOUMwOiAxOCAwQSAxMCAwMCA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMiA0NSAg
Li4uLlwvLl9TQl9QQ0kyRQogICAgMTlEMDogNTQgNTAgNDYgQTAgNDYgMEYgOTEgOTMgNUMgMkYg
MDMgNUYgNTMgNDIgNUYgNTAgIFRQRi5GLi4uXC8uX1NCX1AKICAgIDE5RTA6IDQzIDQ5IDMyIDQ1
IDU0IDUwIDQ2IDAxIDkzIDVDIDJGIDAzIDVGIDUzIDQyIDVGICBDSTJFVFBGLi5cLy5fU0JfCiAg
ICAxOUYwOiA1MCA0MyA0OSAzMiA0NSA1NCA1MCA0NiAwQSAwMyBBMCA0RiAwQyA1QiAxMiA1QyAg
UENJMkVUUEYuLi5PLlsuXAogICAgMUEwMDogMkYgMDMgNUYgNTMgNDIgNUYgNTAgNDMgNDkgMzIg
NDcgNTAgNTAgNDYgMDAgNEQgIC8uX1NCX1BDSTJHUFBGLk0KICAgIDFBMTA6IDM0IDM2IDMwIDBE
IDIwIDIwIDIwIDIwIDRFIDZGIDc0IDY5IDY2IDc5IDIwIDI4ICA0NjAuICAgIE5vdGlmeSAoCiAg
ICAxQTIwOiA1QyA1RiA1MyA0MiAyRSA1MCA0MyA0OSAzMiAyRSA0NyA1MCA1MCA0NiAyQyAyMCAg
XF9TQi5QQ0kyLkdQUEYsIAogICAgMUEzMDogMzAgNzggMzIgMjkgMEEgMDAgMDAgMDAgMDAgMDAg
MDAgMDAgODYgNUMgMkYgMDMgIDB4MikuLi4uLi4uLi5cLy4KICAgIDFBNDA6IDVGIDUzIDQyIDVG
IDUwIDQzIDQ5IDMyIDQ3IDUwIDUwIDQ2IDBBIDAyIDVCIDIyICBfU0JfUENJMkdQUEYuLlsiCiAg
ICAxQTUwOiAwQSA2NCA3MCA0RCAzMCAzMSAzNyA1RiA0MiA0MiA0RSAwQSAwMyAwQSAwNyAwQSAg
LmRwTTAxN19CQk4uLi4uLgogICAgMUE2MDogNzggMDAgMEEgMjAgNjAgQTAgNDQgMDYgOTIgOTMg
N0IgNjAgMEMgMDAgMDAgMDMgIHguLiBgLkQuLi57YC4uLi4KICAgIDFBNzA6IDAwIDAwIDAwIDRE
IDMwIDMxIDM4IDVGIDQyIDQyIDRFIDBBIDAzIDBBIDA3IDBBICAuLi5NMDE4X0JCTi4uLi4uCiAg
ICAxQTgwOiA3OCAwMCAwQSAyMCA2MCA3MCA0RCAzMCAzMSAzNyA1RiA0MiA0MiA0RSAwQSAwMyAg
eC4uIGBwTTAxN19CQk4uLgogICAgMUE5MDogMEEgMDcgMEEgNzggMDAgMEEgMjAgNjAgQTAgMzEg
OTIgOTMgN0IgNjAgMEMgMDAgIC4uLnguLiBgLjEuLntgLi4KICAgIDFBQTA6IDAwIDAzIDAwIDAw
IDAwIDREIDMwIDMxIDM4IDVGIDQyIDQyIDRFIDBBIDAzIDBBICAuLi4uLk0wMThfQkJOLi4uCiAg
ICAxQUIwOiAwNyAwQSA3OCAwMCAwQSAyMCA2MCA3MCA0RCAzMCAzMSAzNyA1RiA0MiA0MiA0RSAg
Li54Li4gYHBNMDE3X0JCTgogICAgMUFDMDogMEEgMDMgMEEgMDcgMEEgNzggMDAgMEEgMjAgNjAg
QTAgNEIgMTIgOTIgOTMgNUMgIC4uLi4ueC4uIGAuSy4uLlwKICAgIDFBRDA6IDJGIDAzIDVGIDUz
IDQyIDVGIDUwIDQzIDQ5IDMyIDQ1IDU0IDUwIDQ3IDBBIEZGICAvLl9TQl9QQ0kyRVRQRy4uCiAg
ICAxQUUwOiA3MCA3QSA0RCAzMCAzMSAzNyA1RiA0MiA0MiA0RSAwQSAwNCAwMSAwQSA3OCAwMCAg
cHpNMDE3X0JCTi4uLi54LgogICAgMUFGMDogMEEgMTggMEEgMTAgMDAgNUMgMkYgMDMgNUYgNTMg
NDIgNUYgNTAgNDMgNDkgMzIgIC4uLi4uXC8uX1NCX1BDSTIKICAgIDFCMDA6IDQ1IDU0IDUwIDQ3
IEEwIDQxIDBGIDkxIDkzIDVDIDJGIDAzIDVGIDUzIDQyIDVGICBFVFBHLkEuLi5cLy5fU0JfCiAg
ICAxQjEwOiA1MCA0MyA0OSAzMiA0NSA1NCA1MCA0NyAwMSA5MyA1QyAyRiAwMyA1RiA1MyA0MiAg
UENJMkVUUEcuLlwvLl9TQgogICAgMUIyMDogNUYgNTAgNDMgNDkgMzIgNDUgNTQgNTAgNDcgMEEg
MDMgQTAgNEEgMEMgNUIgMTIgIF9QQ0kyRVRQRy4uLkouWy4KICAgIDFCMzA6IDVDIDJGIDAzIDVG
IDUzIDQyIDVGIDUwIDQzIDQ5IDMyIDQ3IDUwIDUwIDQ3IDAwICBcLy5fU0JfUENJMkdQUEcuCiAg
ICAxQjQwOiA0RCAzNCAzNiAzMCAwRCAyMCAyMCAyMCAyMCA0RSA2RiA3NCA2OSA2NiA3OSAyMCAg
TTQ2MC4gICAgTm90aWZ5IAogICAgMUI1MDogMjggNUMgNUYgNTMgNDIgMkUgNTAgNDMgNDkgMzIg
MkUgNDcgNTAgNTAgNDcgMkMgIChcX1NCLlBDSTIuR1BQRywKICAgIDFCNjA6IDIwIDMwIDc4IDMy
IDI5IDBBIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDg2IDVDIDJGICAgMHgyKS4uLi4uLi4uLlwvCiAg
ICAxQjcwOiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMiA0NyA1MCA1MCA0NyAwQSAwMiA1QiAg
Ll9TQl9QQ0kyR1BQRy4uWwogICAgMUI4MDogMjIgMEEgNjQgNzAgNEQgMzAgMzEgMzcgNUYgNDIg
NDIgNEUgMEEgMDQgMDEgMEEgICIuZHBNMDE3X0JCTi4uLi4KICAgIDFCOTA6IDc4IDAwIDBBIDIw
IDYwIEEwIDQwIDA2IDkyIDkzIDdCIDYwIDBDIDAwIDAwIDAzICB4Li4gYC5ALi4ue2AuLi4uCiAg
ICAxQkEwOiAwMCAwMCAwMCA0RCAzMCAzMSAzOCA1RiA0MiA0MiA0RSAwQSAwNCAwMSAwQSA3OCAg
Li4uTTAxOF9CQk4uLi4ueAogICAgMUJCMDogMDAgMEEgMjAgNjAgNzAgNEQgMzAgMzEgMzcgNUYg
NDIgNDIgNEUgMEEgMDQgMDEgIC4uIGBwTTAxN19CQk4uLi4KICAgIDFCQzA6IDBBIDc4IDAwIDBB
IDIwIDYwIEEwIDJGIDkyIDkzIDdCIDYwIDBDIDAwIDAwIDAzICAueC4uIGAuLy4ue2AuLi4uCiAg
ICAxQkQwOiAwMCAwMCAwMCA0RCAzMCAzMSAzOCA1RiA0MiA0MiA0RSAwQSAwNCAwMSAwQSA3OCAg
Li4uTTAxOF9CQk4uLi4ueAogICAgMUJFMDogMDAgMEEgMjAgNjAgNzAgNEQgMzAgMzEgMzcgNUYg
NDIgNDIgNEUgMEEgMDQgMDEgIC4uIGBwTTAxN19CQk4uLi4KICAgIDFCRjA6IDBBIDc4IDAwIDBB
IDIwIDYwIEEwIDQxIDEzIDkyIDkzIDVDIDJGIDAzIDVGIDUzICAueC4uIGAuQS4uLlwvLl9TCiAg
ICAxQzAwOiA0MiA1RiA1MCA0MyA0OSAzMiA0NSA1NCA1MCA0OCAwQSBGRiA3MCA3QSA0RCAzMCAg
Ql9QQ0kyRVRQSC4ucHpNMAogICAgMUMxMDogMzEgMzcgNUYgNDIgNDIgNEUgMEEgMDQgMEEgMDIg
MEEgNzggMDAgMEEgMTggMEEgIDE3X0JCTi4uLi4ueC4uLi4KICAgIDFDMjA6IDEwIDAwIDVDIDJG
IDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMyIDQ1IDU0IDUwICAuLlwvLl9TQl9QQ0kyRVRQCiAg
ICAxQzMwOiA0OCBBMCA0NiAwRiA5MSA5MyA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAg
SC5GLi4uXC8uX1NCX1BDSQogICAgMUM0MDogMzIgNDUgNTQgNTAgNDggMDEgOTMgNUMgMkYgMDMg
NUYgNTMgNDIgNUYgNTAgNDMgIDJFVFBILi5cLy5fU0JfUEMKICAgIDFDNTA6IDQ5IDMyIDQ1IDU0
IDUwIDQ4IDBBIDAzIEEwIDRGIDBDIDVCIDEyIDVDIDJGIDAzICBJMkVUUEguLi5PLlsuXC8uCiAg
ICAxQzYwOiA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMiA0NyA1MCA1MCA0OCAwMCA0RCAzNCAzNiAg
X1NCX1BDSTJHUFBILk00NgogICAgMUM3MDogMzAgMEQgMjAgMjAgMjAgMjAgNEUgNkYgNzQgNjkg
NjYgNzkgMjAgMjggNUMgNUYgIDAuICAgIE5vdGlmeSAoXF8KICAgIDFDODA6IDUzIDQyIDJFIDUw
IDQzIDQ5IDMyIDJFIDQ3IDUwIDUwIDQ4IDJDIDIwIDMwIDc4ICBTQi5QQ0kyLkdQUEgsIDB4CiAg
ICAxQzkwOiAzMiAyOSAwQSAwMCAwMCAwMCAwMCAwMCAwMCAwMCA4NiA1QyAyRiAwMyA1RiA1MyAg
MikuLi4uLi4uLi5cLy5fUwogICAgMUNBMDogNDIgNUYgNTAgNDMgNDkgMzIgNDcgNTAgNTAgNDgg
MEEgMDIgNUIgMjIgMEEgNjQgIEJfUENJMkdQUEguLlsiLmQKICAgIDFDQjA6IDcwIDREIDMwIDMx
IDM3IDVGIDQyIDQyIDRFIDBBIDA0IDBBIDAyIDBBIDc4IDAwICBwTTAxN19CQk4uLi4uLnguCiAg
ICAxQ0MwOiAwQSAyMCA2MCBBMCA0NCAwNiA5MiA5MyA3QiA2MCAwQyAwMCAwMCAwMyAwMCAwMCAg
LiBgLkQuLi57YC4uLi4uLgogICAgMUNEMDogMDAgNEQgMzAgMzEgMzggNUYgNDIgNDIgNEUgMEEg
MDQgMEEgMDIgMEEgNzggMDAgIC5NMDE4X0JCTi4uLi4ueC4KICAgIDFDRTA6IDBBIDIwIDYwIDcw
IDREIDMwIDMxIDM3IDVGIDQyIDQyIDRFIDBBIDA0IDBBIDAyICAuIGBwTTAxN19CQk4uLi4uCiAg
ICAxQ0YwOiAwQSA3OCAwMCAwQSAyMCA2MCBBMCAzMSA5MiA5MyA3QiA2MCAwQyAwMCAwMCAwMyAg
LnguLiBgLjEuLntgLi4uLgogICAgMUQwMDogMDAgMDAgMDAgNEQgMzAgMzEgMzggNUYgNDIgNDIg
NEUgMEEgMDQgMEEgMDIgMEEgIC4uLk0wMThfQkJOLi4uLi4KICAgIDFEMTA6IDc4IDAwIDBBIDIw
IDYwIDcwIDREIDMwIDMxIDM3IDVGIDQyIDQyIDRFIDBBIDA0ICB4Li4gYHBNMDE3X0JCTi4uCiAg
ICAxRDIwOiAwQSAwMiAwQSA3OCAwMCAwQSAyMCA2MCBBMCA0QiAxMiA5MiA5MyA1QyAyRiAwMyAg
Li4ueC4uIGAuSy4uLlwvLgogICAgMUQzMDogNUYgNTMgNDIgNUYgNTAgNDMgNDkgMzIgNDUgNTQg
MzEgMzUgMEEgRkYgNzAgN0EgIF9TQl9QQ0kyRVQxNS4ucHoKICAgIDFENDA6IDREIDMwIDMxIDM3
IDVGIDQyIDQyIDRFIDBBIDA1IDAxIDBBIDc4IDAwIDBBIDE4ICBNMDE3X0JCTi4uLi54Li4uCiAg
ICAxRDUwOiAwQSAxMCAwMCA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMiA0NSA1NCAg
Li4uXC8uX1NCX1BDSTJFVAogICAgMUQ2MDogMzEgMzUgQTAgNDEgMEYgOTEgOTMgNUMgMkYgMDMg
NUYgNTMgNDIgNUYgNTAgNDMgIDE1LkEuLi5cLy5fU0JfUEMKICAgIDFENzA6IDQ5IDMyIDQ1IDU0
IDMxIDM1IDAxIDkzIDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwICBJMkVUMTUuLlwvLl9TQl9QCiAg
ICAxRDgwOiA0MyA0OSAzMiA0NSA1NCAzMSAzNSAwQSAwMyBBMCA0QSAwQyA1QiAxMiA1QyAyRiAg
Q0kyRVQxNS4uLkouWy5cLwogICAgMUQ5MDogMDMgNUYgNTMgNDIgNUYgNTAgNDMgNDkgMzIgNDcg
NTAgMzEgMzUgMDAgNEQgMzQgIC5fU0JfUENJMkdQMTUuTTQKICAgIDFEQTA6IDM2IDMwIDBEIDIw
IDIwIDIwIDIwIDRFIDZGIDc0IDY5IDY2IDc5IDIwIDI4IDVDICA2MC4gICAgTm90aWZ5IChcCiAg
ICAxREIwOiA1RiA1MyA0MiAyRSA1MCA0MyA0OSAzMiAyRSA0NyA1MCAzMSAzNSAyQyAyMCAzMCAg
X1NCLlBDSTIuR1AxNSwgMAogICAgMURDMDogNzggMzIgMjkgMEEgMDAgMDAgMDAgMDAgMDAgMDAg
MDAgODYgNUMgMkYgMDMgNUYgIHgyKS4uLi4uLi4uLlwvLl8KICAgIDFERDA6IDUzIDQyIDVGIDUw
IDQzIDQ5IDMyIDQ3IDUwIDMxIDM1IDBBIDAyIDVCIDIyIDBBICBTQl9QQ0kyR1AxNS4uWyIuCiAg
ICAxREUwOiA2NCA3MCA0RCAzMCAzMSAzNyA1RiA0MiA0MiA0RSAwQSAwNSAwMSAwQSA3OCAwMCAg
ZHBNMDE3X0JCTi4uLi54LgogICAgMURGMDogMEEgMjAgNjAgQTAgNDAgMDYgOTIgOTMgN0IgNjAg
MEMgMDAgMDAgMDMgMDAgMDAgIC4gYC5ALi4ue2AuLi4uLi4KICAgIDFFMDA6IDAwIDREIDMwIDMx
IDM4IDVGIDQyIDQyIDRFIDBBIDA1IDAxIDBBIDc4IDAwIDBBICAuTTAxOF9CQk4uLi4ueC4uCiAg
ICAxRTEwOiAyMCA2MCA3MCA0RCAzMCAzMSAzNyA1RiA0MiA0MiA0RSAwQSAwNSAwMSAwQSA3OCAg
IGBwTTAxN19CQk4uLi4ueAogICAgMUUyMDogMDAgMEEgMjAgNjAgQTAgMkYgOTIgOTMgN0IgNjAg
MEMgMDAgMDAgMDMgMDAgMDAgIC4uIGAuLy4ue2AuLi4uLi4KICAgIDFFMzA6IDAwIDREIDMwIDMx
IDM4IDVGIDQyIDQyIDRFIDBBIDA1IDAxIDBBIDc4IDAwIDBBICAuTTAxOF9CQk4uLi4ueC4uCiAg
ICAxRTQwOiAyMCA2MCA3MCA0RCAzMCAzMSAzNyA1RiA0MiA0MiA0RSAwQSAwNSAwMSAwQSA3OCAg
IGBwTTAxN19CQk4uLi4ueAogICAgMUU1MDogMDAgMEEgMjAgNjAgQTAgNDEgMTMgOTIgOTMgNUMg
MkYgMDMgNUYgNTMgNDIgNUYgIC4uIGAuQS4uLlwvLl9TQl8KICAgIDFFNjA6IDUwIDQzIDQ5IDMy
IDQ1IDU0IDMyIDM1IDBBIEZGIDcwIDdBIDREIDMwIDMxIDM3ICBQQ0kyRVQyNS4ucHpNMDE3CiAg
ICAxRTcwOiA1RiA0MiA0MiA0RSAwQSAwNSAwQSAwMiAwQSA3OCAwMCAwQSAxOCAwQSAxMCAwMCAg
X0JCTi4uLi4ueC4uLi4uLgogICAgMUU4MDogNUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAgNDMgNDkg
MzIgNDUgNTQgMzIgMzUgQTAgIFwvLl9TQl9QQ0kyRVQyNS4KICAgIDFFOTA6IDQ2IDBGIDkxIDkz
IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMyIDQ1ICBGLi4uXC8uX1NCX1BDSTJFCiAg
ICAxRUEwOiA1NCAzMiAzNSAwMSA5MyA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMiAg
VDI1Li5cLy5fU0JfUENJMgogICAgMUVCMDogNDUgNTQgMzIgMzUgMEEgMDMgQTAgNEYgMEMgNUIg
MTIgNUMgMkYgMDMgNUYgNTMgIEVUMjUuLi5PLlsuXC8uX1MKICAgIDFFQzA6IDQyIDVGIDUwIDQz
IDQ5IDMyIDQ3IDUwIDMyIDM1IDAwIDREIDM0IDM2IDMwIDBEICBCX1BDSTJHUDI1Lk00NjAuCiAg
ICAxRUQwOiAyMCAyMCAyMCAyMCA0RSA2RiA3NCA2OSA2NiA3OSAyMCAyOCA1QyA1RiA1MyA0MiAg
ICAgIE5vdGlmeSAoXF9TQgogICAgMUVFMDogMkUgNTAgNDMgNDkgMzIgMkUgNDcgNTAgMzIgMzUg
MkMgMjAgMzAgNzggMzIgMjkgIC5QQ0kyLkdQMjUsIDB4MikKICAgIDFFRjA6IDBBIDAwIDAwIDAw
IDAwIDAwIDAwIDAwIDg2IDVDIDJGIDAzIDVGIDUzIDQyIDVGICAuLi4uLi4uLi5cLy5fU0JfCiAg
ICAxRjAwOiA1MCA0MyA0OSAzMiA0NyA1MCAzMiAzNSAwQSAwMiA1QiAyMiAwQSA2NCA3MCA0RCAg
UENJMkdQMjUuLlsiLmRwTQogICAgMUYxMDogMzAgMzEgMzcgNUYgNDIgNDIgNEUgMEEgMDUgMEEg
MDIgMEEgNzggMDAgMEEgMjAgIDAxN19CQk4uLi4uLnguLiAKICAgIDFGMjA6IDYwIEEwIDQ0IDA2
IDkyIDkzIDdCIDYwIDBDIDAwIDAwIDAzIDAwIDAwIDAwIDREICBgLkQuLi57YC4uLi4uLi5NCiAg
ICAxRjMwOiAzMCAzMSAzOCA1RiA0MiA0MiA0RSAwQSAwNSAwQSAwMiAwQSA3OCAwMCAwQSAyMCAg
MDE4X0JCTi4uLi4ueC4uIAogICAgMUY0MDogNjAgNzAgNEQgMzAgMzEgMzcgNUYgNDIgNDIgNEUg
MEEgMDUgMEEgMDIgMEEgNzggIGBwTTAxN19CQk4uLi4uLngKICAgIDFGNTA6IDAwIDBBIDIwIDYw
IEEwIDMxIDkyIDkzIDdCIDYwIDBDIDAwIDAwIDAzIDAwIDAwICAuLiBgLjEuLntgLi4uLi4uCiAg
ICAxRjYwOiAwMCA0RCAzMCAzMSAzOCA1RiA0MiA0MiA0RSAwQSAwNSAwQSAwMiAwQSA3OCAwMCAg
Lk0wMThfQkJOLi4uLi54LgogICAgMUY3MDogMEEgMjAgNjAgNzAgNEQgMzAgMzEgMzcgNUYgNDIg
NDIgNEUgMEEgMDUgMEEgMDIgIC4gYHBNMDE3X0JCTi4uLi4KICAgIDFGODA6IDBBIDc4IDAwIDBB
IDIwIDYwIEEwIDQxIDEzIDkyIDkzIDVDIDJGIDAzIDVGIDUzICAueC4uIGAuQS4uLlwvLl9TCiAg
ICAxRjkwOiA0MiA1RiA1MCA0MyA0OSAzMiA0NSA1NCAzMyAzNSAwQSBGRiA3MCA3QSA0RCAzMCAg
Ql9QQ0kyRVQzNS4ucHpNMAogICAgMUZBMDogMzEgMzcgNUYgNDIgNDIgNEUgMEEgMDUgMEEgMDMg
MEEgNzggMDAgMEEgMTggMEEgIDE3X0JCTi4uLi4ueC4uLi4KICAgIDFGQjA6IDEwIDAwIDVDIDJG
IDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMyIDQ1IDU0IDMzICAuLlwvLl9TQl9QQ0kyRVQzCiAg
ICAxRkMwOiAzNSBBMCA0NiAwRiA5MSA5MyA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAg
NS5GLi4uXC8uX1NCX1BDSQogICAgMUZEMDogMzIgNDUgNTQgMzMgMzUgMDEgOTMgNUMgMkYgMDMg
NUYgNTMgNDIgNUYgNTAgNDMgIDJFVDM1Li5cLy5fU0JfUEMKICAgIDFGRTA6IDQ5IDMyIDQ1IDU0
IDMzIDM1IDBBIDAzIEEwIDRGIDBDIDVCIDEyIDVDIDJGIDAzICBJMkVUMzUuLi5PLlsuXC8uCiAg
ICAxRkYwOiA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMiA0NyA1MCAzMyAzNSAwMCA0RCAzNCAzNiAg
X1NCX1BDSTJHUDM1Lk00NgogICAgMjAwMDogMzAgMEQgMjAgMjAgMjAgMjAgNEUgNkYgNzQgNjkg
NjYgNzkgMjAgMjggNUMgNUYgIDAuICAgIE5vdGlmeSAoXF8KICAgIDIwMTA6IDUzIDQyIDJFIDUw
IDQzIDQ5IDMyIDJFIDQ3IDUwIDMzIDM1IDJDIDIwIDMwIDc4ICBTQi5QQ0kyLkdQMzUsIDB4CiAg
ICAyMDIwOiAzMiAyOSAwQSAwMCAwMCAwMCAwMCAwMCAwMCAwMCA4NiA1QyAyRiAwMyA1RiA1MyAg
MikuLi4uLi4uLi5cLy5fUwogICAgMjAzMDogNDIgNUYgNTAgNDMgNDkgMzIgNDcgNTAgMzMgMzUg
MEEgMDIgNUIgMjIgMEEgNjQgIEJfUENJMkdQMzUuLlsiLmQKICAgIDIwNDA6IDcwIDREIDMwIDMx
IDM3IDVGIDQyIDQyIDRFIDBBIDA1IDBBIDAzIDBBIDc4IDAwICBwTTAxN19CQk4uLi4uLnguCiAg
ICAyMDUwOiAwQSAyMCA2MCBBMCA0NCAwNiA5MiA5MyA3QiA2MCAwQyAwMCAwMCAwMyAwMCAwMCAg
LiBgLkQuLi57YC4uLi4uLgogICAgMjA2MDogMDAgNEQgMzAgMzEgMzggNUYgNDIgNDIgNEUgMEEg
MDUgMEEgMDMgMEEgNzggMDAgIC5NMDE4X0JCTi4uLi4ueC4KICAgIDIwNzA6IDBBIDIwIDYwIDcw
IDREIDMwIDMxIDM3IDVGIDQyIDQyIDRFIDBBIDA1IDBBIDAzICAuIGBwTTAxN19CQk4uLi4uCiAg
ICAyMDgwOiAwQSA3OCAwMCAwQSAyMCA2MCBBMCAzMSA5MiA5MyA3QiA2MCAwQyAwMCAwMCAwMyAg
LnguLiBgLjEuLntgLi4uLgogICAgMjA5MDogMDAgMDAgMDAgNEQgMzAgMzEgMzggNUYgNDIgNDIg
NEUgMEEgMDUgMEEgMDMgMEEgIC4uLk0wMThfQkJOLi4uLi4KICAgIDIwQTA6IDc4IDAwIDBBIDIw
IDYwIDcwIDREIDMwIDMxIDM3IDVGIDQyIDQyIDRFIDBBIDA1ICB4Li4gYHBNMDE3X0JCTi4uCiAg
ICAyMEIwOiAwQSAwMyAwQSA3OCAwMCAwQSAyMCA2MCBBMCA0MSAxMyA5MiA5MyA1QyAyRiAwMyAg
Li4ueC4uIGAuQS4uLlwvLgogICAgMjBDMDogNUYgNTMgNDIgNUYgNTAgNDMgNDkgMzIgNDUgNTQg
MzQgMzUgMEEgRkYgNzAgN0EgIF9TQl9QQ0kyRVQ0NS4ucHoKICAgIDIwRDA6IDREIDMwIDMxIDM3
IDVGIDQyIDQyIDRFIDBBIDA1IDBBIDA0IDBBIDc4IDAwIDBBICBNMDE3X0JCTi4uLi4ueC4uCiAg
ICAyMEUwOiAxOCAwQSAxMCAwMCA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMiA0NSAg
Li4uLlwvLl9TQl9QQ0kyRQogICAgMjBGMDogNTQgMzQgMzUgQTAgNDYgMEYgOTEgOTMgNUMgMkYg
MDMgNUYgNTMgNDIgNUYgNTAgIFQ0NS5GLi4uXC8uX1NCX1AKICAgIDIxMDA6IDQzIDQ5IDMyIDQ1
IDU0IDM0IDM1IDAxIDkzIDVDIDJGIDAzIDVGIDUzIDQyIDVGICBDSTJFVDQ1Li5cLy5fU0JfCiAg
ICAyMTEwOiA1MCA0MyA0OSAzMiA0NSA1NCAzNCAzNSAwQSAwMyBBMCA0RiAwQyA1QiAxMiA1QyAg
UENJMkVUNDUuLi5PLlsuXAogICAgMjEyMDogMkYgMDMgNUYgNTMgNDIgNUYgNTAgNDMgNDkgMzIg
NDcgNTAgMzQgMzUgMDAgNEQgIC8uX1NCX1BDSTJHUDQ1Lk0KICAgIDIxMzA6IDM0IDM2IDMwIDBE
IDIwIDIwIDIwIDIwIDRFIDZGIDc0IDY5IDY2IDc5IDIwIDI4ICA0NjAuICAgIE5vdGlmeSAoCiAg
ICAyMTQwOiA1QyA1RiA1MyA0MiAyRSA1MCA0MyA0OSAzMiAyRSA0NyA1MCAzNCAzNSAyQyAyMCAg
XF9TQi5QQ0kyLkdQNDUsIAogICAgMjE1MDogMzAgNzggMzIgMjkgMEEgMDAgMDAgMDAgMDAgMDAg
MDAgMDAgODYgNUMgMkYgMDMgIDB4MikuLi4uLi4uLi5cLy4KICAgIDIxNjA6IDVGIDUzIDQyIDVG
IDUwIDQzIDQ5IDMyIDQ3IDUwIDM0IDM1IDBBIDAyIDVCIDIyICBfU0JfUENJMkdQNDUuLlsiCiAg
ICAyMTcwOiAwQSA2NCA3MCA0RCAzMCAzMSAzNyA1RiA0MiA0MiA0RSAwQSAwNSAwQSAwNCAwQSAg
LmRwTTAxN19CQk4uLi4uLgogICAgMjE4MDogNzggMDAgMEEgMjAgNjAgQTAgNDQgMDYgOTIgOTMg
N0IgNjAgMEMgMDAgMDAgMDMgIHguLiBgLkQuLi57YC4uLi4KICAgIDIxOTA6IDAwIDAwIDAwIDRE
IDMwIDMxIDM4IDVGIDQyIDQyIDRFIDBBIDA1IDBBIDA0IDBBICAuLi5NMDE4X0JCTi4uLi4uCiAg
ICAyMUEwOiA3OCAwMCAwQSAyMCA2MCA3MCA0RCAzMCAzMSAzNyA1RiA0MiA0MiA0RSAwQSAwNSAg
eC4uIGBwTTAxN19CQk4uLgogICAgMjFCMDogMEEgMDQgMEEgNzggMDAgMEEgMjAgNjAgQTAgMzEg
OTIgOTMgN0IgNjAgMEMgMDAgIC4uLnguLiBgLjEuLntgLi4KICAgIDIxQzA6IDAwIDAzIDAwIDAw
IDAwIDREIDMwIDMxIDM4IDVGIDQyIDQyIDRFIDBBIDA1IDBBICAuLi4uLk0wMThfQkJOLi4uCiAg
ICAyMUQwOiAwNCAwQSA3OCAwMCAwQSAyMCA2MCA3MCA0RCAzMCAzMSAzNyA1RiA0MiA0MiA0RSAg
Li54Li4gYHBNMDE3X0JCTgogICAgMjFFMDogMEEgMDUgMEEgMDQgMEEgNzggMDAgMEEgMjAgNjAg
QTAgNEIgMTIgOTIgOTMgNUMgIC4uLi4ueC4uIGAuSy4uLlwKICAgIDIxRjA6IDJGIDAzIDVGIDUz
IDQyIDVGIDUwIDQzIDQ5IDMyIDQ1IDU0IDMxIDM3IDBBIEZGICAvLl9TQl9QQ0kyRVQxNy4uCiAg
ICAyMjAwOiA3MCA3QSA0RCAzMCAzMSAzNyA1RiA0MiA0MiA0RSAwQSAwNyAwMSAwQSA3OCAwMCAg
cHpNMDE3X0JCTi4uLi54LgogICAgMjIxMDogMEEgMTggMEEgMTAgMDAgNUMgMkYgMDMgNUYgNTMg
NDIgNUYgNTAgNDMgNDkgMzIgIC4uLi4uXC8uX1NCX1BDSTIKICAgIDIyMjA6IDQ1IDU0IDMxIDM3
IEEwIDQxIDBGIDkxIDkzIDVDIDJGIDAzIDVGIDUzIDQyIDVGICBFVDE3LkEuLi5cLy5fU0JfCiAg
ICAyMjMwOiA1MCA0MyA0OSAzMiA0NSA1NCAzMSAzNyAwMSA5MyA1QyAyRiAwMyA1RiA1MyA0MiAg
UENJMkVUMTcuLlwvLl9TQgogICAgMjI0MDogNUYgNTAgNDMgNDkgMzIgNDUgNTQgMzEgMzcgMEEg
MDMgQTAgNEEgMEMgNUIgMTIgIF9QQ0kyRVQxNy4uLkouWy4KICAgIDIyNTA6IDVDIDJGIDAzIDVG
IDUzIDQyIDVGIDUwIDQzIDQ5IDMyIDQ3IDUwIDMxIDM3IDAwICBcLy5fU0JfUENJMkdQMTcuCiAg
ICAyMjYwOiA0RCAzNCAzNiAzMCAwRCAyMCAyMCAyMCAyMCA0RSA2RiA3NCA2OSA2NiA3OSAyMCAg
TTQ2MC4gICAgTm90aWZ5IAogICAgMjI3MDogMjggNUMgNUYgNTMgNDIgMkUgNTAgNDMgNDkgMzIg
MkUgNDcgNTAgMzEgMzcgMkMgIChcX1NCLlBDSTIuR1AxNywKICAgIDIyODA6IDIwIDMwIDc4IDMy
IDI5IDBBIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDg2IDVDIDJGICAgMHgyKS4uLi4uLi4uLlwvCiAg
ICAyMjkwOiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMiA0NyA1MCAzMSAzNyAwQSAwMiA1QiAg
Ll9TQl9QQ0kyR1AxNy4uWwogICAgMjJBMDogMjIgMEEgNjQgNzAgNEQgMzAgMzEgMzcgNUYgNDIg
NDIgNEUgMEEgMDcgMDEgMEEgICIuZHBNMDE3X0JCTi4uLi4KICAgIDIyQjA6IDc4IDAwIDBBIDIw
IDYwIEEwIDQwIDA2IDkyIDkzIDdCIDYwIDBDIDAwIDAwIDAzICB4Li4gYC5ALi4ue2AuLi4uCiAg
ICAyMkMwOiAwMCAwMCAwMCA0RCAzMCAzMSAzOCA1RiA0MiA0MiA0RSAwQSAwNyAwMSAwQSA3OCAg
Li4uTTAxOF9CQk4uLi4ueAogICAgMjJEMDogMDAgMEEgMjAgNjAgNzAgNEQgMzAgMzEgMzcgNUYg
NDIgNDIgNEUgMEEgMDcgMDEgIC4uIGBwTTAxN19CQk4uLi4KICAgIDIyRTA6IDBBIDc4IDAwIDBB
IDIwIDYwIEEwIDJGIDkyIDkzIDdCIDYwIDBDIDAwIDAwIDAzICAueC4uIGAuLy4ue2AuLi4uCiAg
ICAyMkYwOiAwMCAwMCAwMCA0RCAzMCAzMSAzOCA1RiA0MiA0MiA0RSAwQSAwNyAwMSAwQSA3OCAg
Li4uTTAxOF9CQk4uLi4ueAogICAgMjMwMDogMDAgMEEgMjAgNjAgNzAgNEQgMzAgMzEgMzcgNUYg
NDIgNDIgNEUgMEEgMDcgMDEgIC4uIGBwTTAxN19CQk4uLi4KICAgIDIzMTA6IDBBIDc4IDAwIDBB
IDIwIDYwIEEwIDQxIDEzIDkyIDkzIDVDIDJGIDAzIDVGIDUzICAueC4uIGAuQS4uLlwvLl9TCiAg
ICAyMzIwOiA0MiA1RiA1MCA0MyA0OSAzMiA0NSA1NCAzMiAzNyAwQSBGRiA3MCA3QSA0RCAzMCAg
Ql9QQ0kyRVQyNy4ucHpNMAogICAgMjMzMDogMzEgMzcgNUYgNDIgNDIgNEUgMEEgMDcgMEEgMDIg
MEEgNzggMDAgMEEgMTggMEEgIDE3X0JCTi4uLi4ueC4uLi4KICAgIDIzNDA6IDEwIDAwIDVDIDJG
IDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMyIDQ1IDU0IDMyICAuLlwvLl9TQl9QQ0kyRVQyCiAg
ICAyMzUwOiAzNyBBMCA0NiAwRiA5MSA5MyA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAg
Ny5GLi4uXC8uX1NCX1BDSQogICAgMjM2MDogMzIgNDUgNTQgMzIgMzcgMDEgOTMgNUMgMkYgMDMg
NUYgNTMgNDIgNUYgNTAgNDMgIDJFVDI3Li5cLy5fU0JfUEMKICAgIDIzNzA6IDQ5IDMyIDQ1IDU0
IDMyIDM3IDBBIDAzIEEwIDRGIDBDIDVCIDEyIDVDIDJGIDAzICBJMkVUMjcuLi5PLlsuXC8uCiAg
ICAyMzgwOiA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMiA0NyA1MCAzMiAzNyAwMCA0RCAzNCAzNiAg
X1NCX1BDSTJHUDI3Lk00NgogICAgMjM5MDogMzAgMEQgMjAgMjAgMjAgMjAgNEUgNkYgNzQgNjkg
NjYgNzkgMjAgMjggNUMgNUYgIDAuICAgIE5vdGlmeSAoXF8KICAgIDIzQTA6IDUzIDQyIDJFIDUw
IDQzIDQ5IDMyIDJFIDQ3IDUwIDMyIDM3IDJDIDIwIDMwIDc4ICBTQi5QQ0kyLkdQMjcsIDB4CiAg
ICAyM0IwOiAzMiAyOSAwQSAwMCAwMCAwMCAwMCAwMCAwMCAwMCA4NiA1QyAyRiAwMyA1RiA1MyAg
MikuLi4uLi4uLi5cLy5fUwogICAgMjNDMDogNDIgNUYgNTAgNDMgNDkgMzIgNDcgNTAgMzIgMzcg
MEEgMDIgNUIgMjIgMEEgNjQgIEJfUENJMkdQMjcuLlsiLmQKICAgIDIzRDA6IDcwIDREIDMwIDMx
IDM3IDVGIDQyIDQyIDRFIDBBIDA3IDBBIDAyIDBBIDc4IDAwICBwTTAxN19CQk4uLi4uLnguCiAg
ICAyM0UwOiAwQSAyMCA2MCBBMCA0NCAwNiA5MiA5MyA3QiA2MCAwQyAwMCAwMCAwMyAwMCAwMCAg
LiBgLkQuLi57YC4uLi4uLgogICAgMjNGMDogMDAgNEQgMzAgMzEgMzggNUYgNDIgNDIgNEUgMEEg
MDcgMEEgMDIgMEEgNzggMDAgIC5NMDE4X0JCTi4uLi4ueC4KICAgIDI0MDA6IDBBIDIwIDYwIDcw
IDREIDMwIDMxIDM3IDVGIDQyIDQyIDRFIDBBIDA3IDBBIDAyICAuIGBwTTAxN19CQk4uLi4uCiAg
ICAyNDEwOiAwQSA3OCAwMCAwQSAyMCA2MCBBMCAzMSA5MiA5MyA3QiA2MCAwQyAwMCAwMCAwMyAg
LnguLiBgLjEuLntgLi4uLgogICAgMjQyMDogMDAgMDAgMDAgNEQgMzAgMzEgMzggNUYgNDIgNDIg
NEUgMEEgMDcgMEEgMDIgMEEgIC4uLk0wMThfQkJOLi4uLi4KICAgIDI0MzA6IDc4IDAwIDBBIDIw
IDYwIDcwIDREIDMwIDMxIDM3IDVGIDQyIDQyIDRFIDBBIDA3ICB4Li4gYHBNMDE3X0JCTi4uCiAg
ICAyNDQwOiAwQSAwMiAwQSA3OCAwMCAwQSAyMCA2MCAgICAgICAgICAgICAgICAgICAgICAgICAg
Li4ueC4uIGAKCldTTVQgQCAweDAwMDAwMDAwMDAwMDAwMDAKICAgIDAwMDA6IDU3IDUzIDREIDU0
IDI4IDAwIDAwIDAwIDAxIDEwIDQxIDREIDQ0IDIwIDIwIDIwICBXU01UKC4uLi4uQU1EICAgCiAg
ICAwMDEwOiA0MSAyMCA0RCAyMCA0OSAyMCAwMCAwMCAwMSAwMCAwMCAwMCA0MSA0RCA0OSAyMCAg
QSBNIEkgLi4uLi4uQU1JIAogICAgMDAyMDogMTMgMDAgMDEgMDAgMDcgMDAgMDAgMDAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC4uLi4uLi4uCgpTU0RUIEAgMHgwMDAwMDAwMDAwMDAwMDAwCiAg
ICAwMDAwOiA1MyA1MyA0NCA1NCA4NyAyMyAwMCAwMCAwMiAwRiA0MSA0RCA0NCAwMCAwMCAwMCAg
U1NEVC4jLi4uLkFNRC4uLgogICAgMDAxMDogNDEgNEYgNDQgMjAgMjAgMjAgMjAgMjAgMDEgMDAg
MDAgMDAgNDkgNEUgNTQgNEMgIEFPRCAgICAgLi4uLklOVEwKICAgIDAwMjA6IDMxIDAzIDIzIDIw
IDA4IDRGIDQyIDQ5IDQ0IDEyIDQ0IDM5IEMxIDBBIDQwIDBDICAxLiMgLk9CSUQuRDkuLkAuCiAg
ICAwMDMwOiAwMSAwMCAwNCAwMCAwQyAwMiAwMCAwNCAwMCAwQyAyNyAwMCAwMiAwMCAwQyAyNiAg
Li4uLi4uLi4uLicuLi4uJgogICAgMDA0MDogMDAgMDIgMDAgMEMgMDEgMDAgMDIgMDAgMEMgMDIg
MDAgMDIgMDAgMEMgMDYgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAgIDAwNTA6IDAyIDAwIDBDIDA1
IDAwIDAyIDAwIDBDIDA5IDAwIDAyIDAwIDBDIDEwIDAwIDAyICAuLi4uLi4uLi4uLi4uLi4uCiAg
ICAwMDYwOiAwMCAwQyAwQiAwMCAwMiAwMCAwQyAxNSAwMCAwMiAwMCAwQyAwRiAwMCAwMiAwMCAg
Li4uLi4uLi4uLi4uLi4uLgogICAgMDA3MDogMEMgMEUgMDAgMDIgMDAgMEMgMEQgMDAgMDIgMDAg
MEMgMTIgMDAgMDIgMDAgMEMgIC4uLi4uLi4uLi4uLi4uLi4KICAgIDAwODA6IDExIDAwIDAyIDAw
IDBDIDE3IDAwIDAyIDAwIDBDIDE2IDAwIDAyIDAwIDBDIDE4ICAuLi4uLi4uLi4uLi4uLi4uCiAg
ICAwMDkwOiAwMCAwMiAwMCAwQyAxOSAwMCAwMiAwMCAwQyAxQiAwMCAwMiAwMCAwQyAxQSAwMCAg
Li4uLi4uLi4uLi4uLi4uLgogICAgMDBBMDogMDIgMDAgMEMgMUMgMDAgMDIgMDAgMEMgMUQgMDAg
MDIgMDAgMEMgMUYgMDAgMDIgIC4uLi4uLi4uLi4uLi4uLi4KICAgIDAwQjA6IDAwIDBDIDFFIDAw
IDAyIDAwIDBDIDJEIDAwIDAyIDAwIDBDIDA3IDAwIDAyIDAwICAuLi4uLi4uLS4uLi4uLi4uCiAg
ICAwMEMwOiAwQyAyMyAwMCAwMiAwMCAwQyAyNCAwMCAwMiAwMCAwQyAyNSAwMCAwMiAwMCAwQyAg
LiMuLi4uJC4uLi4lLi4uLgogICAgMDBEMDogMzYgMDAgMDIgMDAgMEMgMzMgMDAgMDIgMDAgMEMg
MzUgMDAgMDIgMDAgMEMgMDEgIDYuLi4uMy4uLi41Li4uLi4KICAgIDAwRTA6IDAwIDAzIDAwIDBD
IDMxIDAwIDAyIDAwIDBDIDMyIDAwIDAyIDAwIDBDIDM0IDAwICAuLi4uMS4uLi4yLi4uLjQuCiAg
ICAwMEYwOiAwMiAwMCAwQyAzMCAwMCAwMiAwMCAwQyAzOCAwMCAwMiAwMCAwMCAwMCAwMCAwMCAg
Li4uMC4uLi44Li4uLi4uLgogICAgMDEwMDogMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAgIDAxMTA6IDAwIDAwIDAwIDAw
IDAwIDAxIDAwIDAwIDAxIDAxIDAxIDAxIDAxIDAxIDAxIDAxICAuLi4uLi4uLi4uLi4uLi4uCiAg
ICAwMTIwOiAwMSAwMSAwMSAwMSAwMSAwMSAwMSAwMSAwMSAwMSAwMSAwMSAwMSAwMSAwMCAwMCAg
Li4uLi4uLi4uLi4uLi4uLgogICAgMDEzMDogMDEgMDEgMDAgMDEgMDAgMDAgMDEgMDAgMDEgMDEg
MDEgMDEgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAgIDAxNDA6IDAwIDAwIDAwIDAw
IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAg
ICAwMTUwOiAwMCAwMCAwMCAwRCA0MyA2RiA2RCA2RCA2MSA2RSA2NCAyMCA0MiA3NSA2NiA2NiAg
Li4uLkNvbW1hbmQgQnVmZgogICAgMDE2MDogNjUgNzIgMjAgNTMgNzQgNjEgNzIgNzQgMDAgMEQg
NDMgNkYgNkQgNkQgNjEgNkUgIGVyIFN0YXJ0Li5Db21tYW4KICAgIDAxNzA6IDY0IDIwIDQyIDc1
IDY2IDY2IDY1IDcyIDIwIDQ1IDZFIDY0IDAwIDBEIDUzIDZGICBkIEJ1ZmZlciBFbmQuLlNvCiAg
ICAwMTgwOiA2NiA3NCA3NyA2MSA3MiA2NSAyMCA0NCA2RiA3NyA2RSA2MyA2RiA3MiA2NSAyMCAg
ZnR3YXJlIERvd25jb3JlIAogICAgMDE5MDogNDMgNkYgNkUgNjYgNjkgNjcgMDAgMEQgNTMgNjUg
NzQgMjAgNTMgNEQgNTQgNDUgIENvbmZpZy4uU2V0IFNNVEUKICAgIDAxQTA6IDZFIDAwIDBEIDUz
IDY1IDc0IDIwIDREIDY1IDZEIDIwIDQzIDZDIDZGIDYzIDZCICBuLi5TZXQgTWVtIENsb2NrCiAg
ICAwMUIwOiAwMCAwRCA1MyA2NSA3NCAyMCA1NCA2MyA2QyAwMCAwRCA1MyA2NSA3NCAyMCA1NCAg
Li5TZXQgVGNsLi5TZXQgVAogICAgMDFDMDogNzIgNzAgMDAgMEQgNTMgNjUgNzQgMjAgNTQgNzIg
NjEgNzMgMDAgMEQgNTMgNjUgIHJwLi5TZXQgVHJhcy4uU2UKICAgIDAxRDA6IDc0IDIwIDU0IDcy
IDYzIDAwIDBEIDUzIDY1IDc0IDIwIDU0IDc3IDcyIDAwIDBEICB0IFRyYy4uU2V0IFR3ci4uCiAg
ICAwMUUwOiA1MyA2NSA3NCAyMCA1NCA3MiA2NiA2MyAzMiAwMCAwRCA1MyA2NSA3NCAyMCA1NCAg
U2V0IFRyZmMyLi5TZXQgVAogICAgMDFGMDogNzIgNzQgNzAgMDAgMEQgNTMgNjUgNzQgMjAgNTQg
NzIgNzIgNjQgNEMgMDAgMEQgIHJ0cC4uU2V0IFRycmRMLi4KICAgIDAyMDA6IDUzIDY1IDc0IDIw
IDU0IDcyIDcyIDY0IDUzIDAwIDBEIDUzIDY1IDc0IDIwIDU0ICBTZXQgVHJyZFMuLlNldCBUCiAg
ICAwMjEwOiA2NiA2MSA3NyAwMCAwRCA1MyA2NSA3NCAyMCA1NCA3NyA3NCA3MiA0QyAwMCAwRCAg
ZmF3Li5TZXQgVHd0ckwuLgogICAgMDIyMDogNTMgNjUgNzQgMjAgNTQgNzcgNzQgNzIgNTMgMDAg
MEQgNTMgNjUgNzQgMjAgNTQgIFNldCBUd3RyUy4uU2V0IFQKICAgIDAyMzA6IDcyIDY0IDcyIDY0
IDUzIDYzIDRDIDAwIDBEIDUzIDY1IDc0IDIwIDU0IDcyIDY0ICByZHJkU2NMLi5TZXQgVHJkCiAg
ICAwMjQwOiA3MiA2NCA1MyA2MyAwMCAwRCA1MyA2NSA3NCAyMCA1NCA3MiA2NCA3MiA2NCA1MyAg
cmRTYy4uU2V0IFRyZHJkUwogICAgMDI1MDogNjQgMDAgMEQgNTMgNjUgNzQgMjAgNTQgNzIgNjQg
NzIgNjQgNDQgNjQgMDAgMEQgIGQuLlNldCBUcmRyZERkLi4KICAgIDAyNjA6IDUzIDY1IDc0IDIw
IDU0IDc3IDcyIDc3IDcyIDUzIDYzIDRDIDAwIDBEIDUzIDY1ICBTZXQgVHdyd3JTY0wuLlNlCiAg
ICAwMjcwOiA3NCAyMCA1NCA3NyA3MiA3NyA3MiA1MyA2MyAwMCAwRCA1MyA2NSA3NCAyMCA1NCAg
dCBUd3J3clNjLi5TZXQgVAogICAgMDI4MDogNzcgNzIgNzcgNzIgNTMgNjQgMDAgMEQgNTMgNjUg
NzQgMjAgNTQgNzcgNzIgNzcgIHdyd3JTZC4uU2V0IFR3cncKICAgIDAyOTA6IDcyIDQ0IDY0IDAw
IDBEIDUzIDY1IDc0IDIwIDU0IDc3IDcyIDcyIDY0IDAwIDBEICByRGQuLlNldCBUd3JyZC4uCiAg
ICAwMkEwOiA1MyA2NSA3NCAyMCA1NCA3MiA2NCA3NyA3MiAwMCAwRCA1MyA2NSA3NCAyMCA0MyAg
U2V0IFRyZHdyLi5TZXQgQwogICAgMDJCMDogNjEgNjQgNDIgNzUgNzMgNDEgNjQgNjQgNzIgNDMg
NkQgNjQgNDQgNzIgNzYgNTMgIGFkQnVzQWRkckNtZERydlMKICAgIDAyQzA6IDc0IDcyIDY1IDZF
IDAwIDBEIDUzIDY1IDc0IDIwIDUwIDcyIDZGIDYzIDRGIDQ0ICB0cmVuLi5TZXQgUHJvY09ECiAg
ICAwMkQwOiA1NCAwMCAwRCA1MyA2NSA3NCAyMCA1MiA3NCA3NCA1NyA3MiAwMCAwRCA1MyA2NSAg
VC4uU2V0IFJ0dFdyLi5TZQogICAgMDJFMDogNzQgMjAgNTIgNzQgNzQgNTAgNjEgNzIgNkIgMDAg
MEQgNTMgNjUgNzQgMjAgNTAgIHQgUnR0UGFyay4uU2V0IFAKICAgIDAyRjA6IDZGIDc3IDY1IDcy
IDQ0IDc3IDZGIDZFIDQ1IDZFIDAwIDBEIDUzIDY1IDc0IDIwICBvd2VyRHdvbkVuLi5TZXQgCiAg
ICAwMzAwOiA0MyA0MyA0QyA0QiAyMCA0NiA2RCA2MSA3OCAwMCAwRCA1MyA2NSA3NCAyMCA0NiAg
Q0NMSyBGbWF4Li5TZXQgRgogICAgMDMxMDogNDMgNEMgNEIgMjAgNEYgNDMgMjAgNEQgNkYgNjQg
NjUgMDAgMEQgNTMgNjUgNzQgIENMSyBPQyBNb2RlLi5TZXQKICAgIDAzMjA6IDIwIDQ2IDQzIDRD
IDRCIDIwIDQ2IDcyIDY1IDcxIDc1IDY1IDZFIDYzIDc5IDAwICAgRkNMSyBGcmVxdWVuY3kuCiAg
ICAwMzMwOiAwRCA1MyA2NSA3NCAyMCA1NiA0NCA0NCA0OSA0RiAwMCAwRCA1MyA2NSA3NCAyMCAg
LlNldCBWRERJTy4uU2V0IAogICAgMDM0MDogNDkgNkUgNzQgNjUgNzIgNkMgNjUgNjEgNzYgNjUg
MjAgNEQgNkYgNjQgNjUgMDAgIEludGVybGVhdmUgTW9kZS4KICAgIDAzNTA6IDBEIDUzIDY1IDc0
IDIwIDQ5IDZFIDc0IDY1IDcyIDZDIDY1IDYxIDc2IDY1IDIwICAuU2V0IEludGVybGVhdmUgCiAg
ICAwMzYwOiA1MyA2OSA3QSA2NSAwMCAwRCA1MyA2NSA3NCAyMCA1MyA0RiA0MyAyMCA1NiA0OSAg
U2l6ZS4uU2V0IFNPQyBWSQogICAgMDM3MDogNDQgMDAgMEQgNTMgNjUgNzQgMjAgNDMgNEMgNDQg
NEYgNUYgNTYgNDQgNDQgNTAgIEQuLlNldCBDTERPX1ZERFAKICAgIDAzODA6IDAwIDBEIDUzIDY1
IDc0IDIwIDQzIDRDIDQ0IDRGIDIwIDU2IDQ0IDQ0IDQ3IDAwICAuLlNldCBDTERPIFZEREcuCiAg
ICAwMzkwOiAwRCAwMCAwRCAwMCAwRCAwMCAwRCAwMCAwRCAwMCAwRCAwMCAwRCAwMCAwRCAwMCAg
Li4uLi4uLi4uLi4uLi4uLgogICAgMDNBMDogMEQgMDAgMEQgMDAgMEQgMDAgMEQgMDAgMEQgMDAg
MEQgMDAgMEQgMDAgMEQgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAgIDAzQjA6IDBEIDAwIDBEIDAw
IDBEIDAwIDBEIDAwIDBEIDAwIDBEIDAwIDBEIDAwIDA4IDRGICAuLi4uLi4uLi4uLi4uLi5PCiAg
ICAwM0MwOiA0MiA0OSA0NSAxMiA0RiAzMiBDMSAwQSA0MCAwQyAwMyAwMCAwMSAwMCAwQyAwNCAg
QklFLk8yLi5ALi4uLi4uLgogICAgMDNEMDogMDAgMDEgMDAgMEMgMDUgMDAgMDEgMDAgMEMgMDYg
MDAgMDEgMDAgMEMgMDcgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAgIDAzRTA6IDAxIDAwIDBDIDA4
IDAwIDAxIDAwIDBDIDBBIDAwIDA1IDAwIDBDIDNCIDAwIDAyICAuLi4uLi4uLi4uLi4uOy4uCiAg
ICAwM0YwOiAwMCAwQyAzQyAwMCAwMiAwMCAwQyAzRCAwMCAwMiAwMCAwQyA0MSAwMCAwMiAwMCAg
Li48Li4uLj0uLi4uQS4uLgogICAgMDQwMDogMEMgNDIgMDAgMDIgMDAgMEMgM0UgMDAgMDIgMDAg
MEMgM0YgMDAgMDIgMDAgMEMgIC5CLi4uLj4uLi4uPy4uLi4KICAgIDA0MTA6IDQwIDAwIDAyIDAw
IDBDIDAxIDAwIDA1IDAwIDBDIDAyIDAwIDA1IDAwIDBDIDAzICBALi4uLi4uLi4uLi4uLi4uCiAg
ICAwNDIwOiAwMCAwNSAwMCAwQyAwNCAwMCAwNSAwMCAwQyAwNyAwMCAwMyAwMCAwQyAwMyAwMCAg
Li4uLi4uLi4uLi4uLi4uLgogICAgMDQzMDogMDMgMDAgMEMgMDQgMDAgMDMgMDAgMEMgNDMgMDAg
MDIgMDAgMEMgMDYgMDAgMDMgIC4uLi4uLi4uQy4uLi4uLi4KICAgIDA0NDA6IDAwIDBDIDBCIDAw
IDA1IDAwIDBDIDQ0IDAwIDAyIDAwIDBDIDQ4IDAwIDAyIDAwICAuLi4uLi4uRC4uLi5ILi4uCiAg
ICAwNDUwOiAwQyAwNiAwMCAwNSAwMCAwQyAwMSAwMCAwNiAwMCAwQyAwOCAwMCAwNSAwMCAwMCAg
Li4uLi4uLi4uLi4uLi4uLgogICAgMDQ2MDogMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAgIDA0NzA6IDAwIDAwIDAwIDAw
IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAg
ICAwNDgwOiAwMCAwMSAwMSAwMSAwMSAwMSAwMSAwMSAwMSAwMSAwMSAwMCAwMCAwMSAwMSAwMSAg
Li4uLi4uLi4uLi4uLi4uLgogICAgMDQ5MDogMDEgMDEgMDEgMDEgMDEgMDEgMDEgMDEgMDEgMDEg
MDAgMDAgMDAgMDEgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAgIDA0QTA6IDAwIDAwIDAwIDAw
IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAg
ICAwNEIwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAg
Li4uLi4uLi4uLi4uLi4uLgogICAgMDRDMDogMDAgMEQgNDcgNjUgNzQgMjAgNEYgNDMgMjAgNDQg
NjkgNzMgNjEgNjIgNkMgNjUgIC4uR2V0IE9DIERpc2FibGUKICAgIDA0RDA6IDAwIDBEIDQ3IDY1
IDc0IDIwIDRGIDQzIDIwIDU2IDZGIDZDIDc0IDYxIDY3IDY1ICAuLkdldCBPQyBWb2x0YWdlCiAg
ICAwNEUwOiAyMCA0RCA2MSA3OCAwMCAwRCA0NyA2NSA3NCAyMCA0RiA0MyAyMCA0NiA3MiA2NSAg
IE1heC4uR2V0IE9DIEZyZQogICAgMDRGMDogNzEgNzUgNjUgNkUgNjMgNzkgMjAgNEQgNjEgNzgg
MDAgMEQgNDcgNjUgNzQgMjAgIHF1ZW5jeSBNYXguLkdldCAKICAgIDA1MDA6IDQ3IDQ2IDU4IDIw
IDRGIDQzIDIwIDU2IDZGIDZDIDc0IDYxIDY3IDY1IDIwIDREICBHRlggT0MgVm9sdGFnZSBNCiAg
ICAwNTEwOiA2MSA3OCAwMCAwRCA0NyA2NSA3NCAyMCA0NyA0NiA1OCAyMCA0RiA0MyAyMCA0NiAg
YXguLkdldCBHRlggT0MgRgogICAgMDUyMDogNzIgNjUgNzEgNzUgNjUgNkUgNjMgNzkgMjAgNEQg
NjEgNzggMDAgMEQgNDcgNjUgIHJlcXVlbmN5IE1heC4uR2UKICAgIDA1MzA6IDc0IDIwIDQ5IDZF
IDc0IDY1IDcyIDZDIDY1IDc2IDYxIDY5IDZFIDY3IDIwIDQzICB0IEludGVybGV2YWluZyBDCiAg
ICAwNTQwOiA2MSA3MCAwMCAwRCA1MyA2NSA3NCAyMCA0MyA3NSA3MiA3NiA2NSAyMCA0RiA3MCAg
YXAuLlNldCBDdXJ2ZSBPcAogICAgMDU1MDogNzQgNjkgNkQgNjkgN0EgNjUgNzIgMDAgMEQgNTMg
NjUgNzQgMjAgNTQgNzIgNjMgIHRpbWl6ZXIuLlNldCBUcmMKICAgIDA1NjA6IDY0IDAwIDBEIDUz
IDY1IDc0IDIwIDU0IDcyIDY2IDYzIDMxIDAwIDBEIDUzIDY1ICBkLi5TZXQgVHJmYzEuLlNlCiAg
ICAwNTcwOiA3NCAyMCA1NCA3MiA2NiA2MyA1MyA2MiAwMCAwRCA1MyA2NSA3NCAyMCA1MCA3MiAg
dCBUcmZjU2IuLlNldCBQcgogICAgMDU4MDogNkYgNjMgNDQgNjEgNzQgNjEgNDQgNzIgNjkgNzYg
NjUgNTMgNzQgNzIgNjUgNkUgIG9jRGF0YURyaXZlU3RyZW4KICAgIDA1OTA6IDY3IDc0IDY4IDAw
IDBEIDUzIDY1IDc0IDIwIDQ0IDUyIDQxIDREIDQ0IDYxIDc0ICBndGguLlNldCBEUkFNRGF0CiAg
ICAwNUEwOiA2MSA0NCA3MiA2OSA3NiA2NSA1MyA3NCA3MiA2NSA2RSA2NyA3NCA2OCAwMCAwRCAg
YURyaXZlU3RyZW5ndGguLgogICAgMDVCMDogNTMgNjUgNzQgMjAgNTIgNzQgNzQgNEUgNkYgNkQg
NTcgNzIgMDAgMEQgNTMgNjUgIFNldCBSdHROb21Xci4uU2UKICAgIDA1QzA6IDc0IDIwIDUyIDc0
IDc0IDRFIDZGIDZEIDUyIDY0IDAwIDBEIDUzIDY1IDc0IDIwICB0IFJ0dE5vbVJkLi5TZXQgCiAg
ICAwNUQwOiA1MiA3NCA3NCA1MCA2MSA3MiA2QiA0NCA3MSA3MyAwMCAwRCA1MyA2NSA3NCAyMCAg
UnR0UGFya0Rxcy4uU2V0IAogICAgMDVFMDogNTAgNTAgNTQgMjAgNEMgNjkgNkQgNjkgNzQgMDAg
MEQgNTMgNjUgNzQgMjAgNTQgIFBQVCBMaW1pdC4uU2V0IFQKICAgIDA1RjA6IDQ0IDQzIDIwIDRD
IDY5IDZEIDY5IDc0IDAwIDBEIDUzIDY1IDc0IDIwIDQ1IDQ0ICBEQyBMaW1pdC4uU2V0IEVECiAg
ICAwNjAwOiA0MyAyMCA0QyA2OSA2RCA2OSA3NCAwMCAwRCA1MyA2NSA3NCAyMCA1MyA2MyA2MSAg
QyBMaW1pdC4uU2V0IFNjYQogICAgMDYxMDogNkMgNjEgNzIgMDAgMEQgNTMgNjUgNzQgMjAgNDQg
NDkgNEQgNEQgMjAgNTYgNDQgIGxhci4uU2V0IERJTU0gVkQKICAgIDA2MjA6IDQ0IDUxIDAwIDBE
IDUzIDY1IDc0IDIwIDU2IDUwIDUwIDAwIDBEIDUzIDY1IDc0ICBEUS4uU2V0IFZQUC4uU2V0CiAg
ICAwNjMwOiAyMCA0MSA1MCA1NSAyMCA1NiA0NCA0NCA0OSA0RiAwMCAwRCA1MyA2NSA3NCAyMCAg
IEFQVSBWRERJTy4uU2V0IAogICAgMDY0MDogNEMgNDMgNEMgNEIgMjAgNDYgNzIgNjUgNzEgMDAg
MEQgNTMgNjUgNzQgMjAgNTYgIExDTEsgRnJlcS4uU2V0IFYKICAgIDA2NTA6IDQ0IDQ0IDVGIDRE
IDQ5IDUzIDQzIDAwIDBEIDUzIDY1IDc0IDIwIDU2IDQ0IDQ0ICBERF9NSVNDLi5TZXQgVkRECiAg
ICAwNjYwOiA0NyAyMCA0OSA0RiA0NCAwMCAwRCA1MyA2NSA3NCAyMCA1NSA0MyA0QyA0QiAyMCAg
RyBJT0QuLlNldCBVQ0xLIAogICAgMDY3MDogNDQgNDkgNTYgMzEgMDAgMEQgNTIgNjUgNzMgNjUg
NzQgMjAgNEQgNjUgNkQgMjAgIERJVjEuLlJlc2V0IE1lbSAKICAgIDA2ODA6IDUwIDYxIDcyIDYx
IDAwIDBEIDUzIDY1IDc0IDIwIDQ3IDYxIDZEIDY1IDIwIDREICBQYXJhLi5TZXQgR2FtZSBNCiAg
ICAwNjkwOiA2RiA2NCA2NSAwMCAwRCA1MyA2NSA3NCAyMCA0RiA0MyAyMCA0NiA3NSA3MyA2NSAg
b2RlLi5TZXQgT0MgRnVzZQogICAgMDZBMDogMDAgMEQgNTMgNjUgNzQgMjAgNEUgNTAgNTMgMjAg
NEQgNkYgNjQgNjUgMDAgMEQgIC4uU2V0IE5QUyBNb2RlLi4KICAgIDA2QjA6IDAwIDBEIDAwIDBE
IDAwIDBEIDAwIDBEIDAwIDBEIDAwIDBEIDAwIDBEIDAwIDBEICAuLi4uLi4uLi4uLi4uLi4uCiAg
ICAwNkMwOiAwMCAwRCAwMCAwRCAwMCAwRCAwMCAwRCAwMCAwRCAwMCAwRCAwMCAwRCAwMCAwRCAg
Li4uLi4uLi4uLi4uLi4uLgogICAgMDZEMDogMDAgMEQgMDAgMEQgMDAgMEQgMDAgMEQgMDAgMEQg
MDAgMEQgMDAgMEQgMDAgMEQgIC4uLi4uLi4uLi4uLi4uLi4KICAgIDA2RTA6IDAwIDBEIDAwIDBE
IDAwIDBEIDAwIDBEIDAwIDBEIDAwIDBEIDAwIDBEIDAwIDBEICAuLi4uLi4uLi4uLi4uLi4uCiAg
ICAwNkYwOiAwMCAwRCAwMCAwOCA0RiA0MiA0OSA1NCAxMiA0OCBCRCA0NiAwQSA0NSAxMiAyQiAg
Li4uLk9CSVQuSC5GLkUuKwogICAgMDcwMDogMDQgMEMgMDggMDAgMDUgMDAgMDAgMEEgNDYgMTEg
MjAgMEIgOUMgMDEgMDggMDAgIC4uLi4uLi4uRi4gLi4uLi4KICAgIDA3MTA6IDA1IDAwIDAxIDAw
IDAwIDAwIDA0IDAwIDAwIDAwIDAxIDAwIDAwIDAwIDAyIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAg
ICAwNzIwOiAwMCAwMCAwMyAwMCAwMCAwMCBGRiAwMCAwMCAwMCAxMiAyMiAwNCAwQyAwMSAwMCAg
Li4uLi4uLi4uLi4iLi4uLgogICAgMDczMDogMDYgMDAgMDEgMEEgNDUgMTEgMTcgMEEgMTQgMDEg
MDAgMDYgMDAgMDEgMDAgMDAgIC4uLi5FLi4uLi4uLi4uLi4KICAgIDA3NDA6IDAwIDAwIDAwIDAw
IDAwIDA3IDAwIDAwIDAwIDAxIDAwIDAwIDAwIDEyIDIzIDA0ICAuLi4uLi4uLi4uLi4uLiMuCiAg
ICAwNzUwOiAwQyAwNiAwMCAwNSAwMCAwMCAwQSA0NCAxMSAxOCAwQiA5QyAwMSAwNiAwMCAwNSAg
Li4uLi4uLkQuLi4uLi4uLgogICAgMDc2MDogMDAgMDAgMDAgMDAgMDAgMDIgMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDEgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAgIDA3NzA6IDAwIDEyIDFGIDA0
IDBDIDQ4IDAwIDAyIDAwIDAwIDBBIDQzIDExIDE0IDBCIDlDICAuLi4uLkguLi4uLkMuLi4uCiAg
ICAwNzgwOiAwMSA0OCAwMCAwMiAwMCAwMCAwMCAwMCAwMCAwMSAwMCAwMCAwMCAwMSAwMCAwMCAg
LkguLi4uLi4uLi4uLi4uLgogICAgMDc5MDogMDAgMTIgMjMgMDQgMEMgNDQgMDAgMDIgMDAgMDAg
MEEgNDIgMTEgMTggMEIgOUMgIC4uIy4uRC4uLi4uQi4uLi4KICAgIDA3QTA6IDAxIDQ0IDAwIDAy
IDAwIDAxIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDAwIDAwIDAwICAuRC4uLi4uLi4uLi4uLi4uCiAg
ICAwN0IwOiAwMCAwMSAwMCAwMCAwMCAxMiAyMiAwNCAwQyAwQiAwMCAwNSAwMCAwMSAwQSA0MSAg
Li4uLi4uIi4uLi4uLi4uQQogICAgMDdDMDogMTEgMTcgMEEgMTQgMEIgMDAgMDUgMDAgMDAgMDAg
MDAgMDAgNTggMDIgMDAgMDAgIC4uLi4uLi4uLi4uLlguLi4KICAgIDA3RDA6IERDIDA1IDAwIDAw
IDBBIDAwIDAwIDAwIDEyIDIyIDA0IDBDIDM4IDAwIDAyIDAwICAuLi4uLi4uLi4iLi44Li4uCiAg
ICAwN0UwOiAwMSAwQSA0MCAxMSAxNyAwQSAxNCAzOCAwMCAwMiAwMCAwMCAwMCAwMCAwMCA1OCAg
Li5ALi4uLjguLi4uLi4uWAogICAgMDdGMDogMDIgMDAgMDAgREMgMDUgMDAgMDAgMEEgMDAgMDAg
MDAgMTIgMjIgMDQgMEMgMDYgIC4uLi4uLi4uLi4uLiIuLi4KICAgIDA4MDA6IDAwIDAzIDAwIDAx
IDBBIDNGIDExIDE3IDBBIDE0IDA2IDAwIDAzIDAwIDAwIDAwICAuLi4uLj8uLi4uLi4uLi4uCiAg
ICAwODEwOiAwMCAwMCBGNCAwMSAwMCAwMCBFMCAxNSAwMCAwMCAwQSAwMCAwMCAwMCAxMiAyMiAg
Li4uLi4uLi4uLi4uLi4uIgogICAgMDgyMDogMDQgMEMgNDMgMDAgMDIgMDAgMDEgMEEgM0UgMTEg
MTcgMEEgMTQgNDMgMDAgMDIgIC4uQy4uLi4uPi4uLi5DLi4KICAgIDA4MzA6IDAwIDAwIDAwIDAw
IDAwIDc5IDAzIDAwIDAwIEM0IDA5IDAwIDAwIDAxIDAwIDAwICAuLi4uLnkuLi4uLi4uLi4uCiAg
ICAwODQwOiAwMCAxMiAyMiAwNCAwQyAzMCAwMCAwMiAwMCAwMSAwQSAzRCAxMSAxNyAwQSAxNCAg
Li4iLi4wLi4uLi49Li4uLgogICAgMDg1MDogMzAgMDAgMDIgMDAgMDAgMDAgMDAgMDAgMDAgMDAg
MDAgMDAgRDAgMDcgMDAgMDAgIDAuLi4uLi4uLi4uLi4uLi4KICAgIDA4NjA6IDAxIDAwIDAwIDAw
IDEyIDIyIDA0IDBDIDM0IDAwIDAyIDAwIDAxIDBBIDNDIDExICAuLi4uLiIuLjQuLi4uLjwuCiAg
ICAwODcwOiAxNyAwQSAxNCAzNCAwMCAwMiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCBEMyAg
Li4uNC4uLi4uLi4uLi4uLgogICAgMDg4MDogMDAgMDAgMDAgMDEgMDAgMDAgMDAgMTIgMjIgMDQg
MEMgMzIgMDAgMDIgMDAgMDEgIC4uLi4uLi4uIi4uMi4uLi4KICAgIDA4OTA6IDBBIDNCIDExIDE3
IDBBIDE0IDMyIDAwIDAyIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAuOy4uLi4yLi4uLi4uLi4uCiAg
ICAwOEEwOiAwMCAwMCAwMyAwMCAwMCAwMCAwMSAwMCAwMCAwMCAxMiAxRiAwNCAwQyAzMSAwMCAg
Li4uLi4uLi4uLi4uLi4xLgogICAgMDhCMDogMDIgMDAgMDAgMEEgM0EgMTEgMTQgMEIgOUMgMDEg
MzEgMDAgMDIgMDAgMDAgMDAgIC4uLi46Li4uLi4xLi4uLi4KICAgIDA4QzA6IDAwIDAwIDAxIDAw
IDAwIDAwIDAwIDAwIDAwIDAwIDEyIDIyIDA0IDBDIDA0IDAwICAuLi4uLi4uLi4uLiIuLi4uCiAg
ICAwOEQwOiAwMyAwMCAwMSAwQSAzOSAxMSAxNyAwQSAxNCAwNCAwMCAwMyAwMCAwMCAwMCAwMCAg
Li4uLjkuLi4uLi4uLi4uLgogICAgMDhFMDogMDAgQkMgMDIgMDAgMDAgNkMgMEEgMDAgMDAgMDIg
MDAgMDAgMDAgMTIgMjIgMDQgIC4uLi4ubC4uLi4uLi4uIi4KICAgIDA4RjA6IDBDIDAzIDAwIDAz
IDAwIDAxIDBBIDM4IDExIDE3IDBBIDE0IDAzIDAwIDAzIDAwICAuLi4uLi4uOC4uLi4uLi4uCiAg
ICAwOTAwOiAwOCAwNyAwMCAwMCBEQyAwNSAwMCAwMCA1MiAwOCAwMCAwMCAwQSAwMCAwMCAwMCAg
Li4uLi4uLi5SLi4uLi4uLgogICAgMDkxMDogMTIgMjIgMDQgMEMgMDcgMDAgMDMgMDAgMDEgMEEg
MzcgMTEgMTcgMEEgMTQgMDcgIC4iLi4uLi4uLi43Li4uLi4KICAgIDA5MjA6IDAwIDAzIDAwIDRD
IDA0IDAwIDAwIDIwIDAzIDAwIDAwIDk2IDA1IDAwIDAwIDBBICAuLi5MLi4uIC4uLi4uLi4uCiAg
ICAwOTMwOiAwMCAwMCAwMCAxMiAyMiAwNCAwQyAwMSAwMCAwMyAwMCAwMSAwQSAzNiAxMSAxNyAg
Li4uLiIuLi4uLi4uLjYuLgogICAgMDk0MDogMEEgMTQgMDEgMDAgMDMgMDAgNEMgMDQgMDAgMDAg
MjAgMDMgMDAgMDAgOTYgMDUgIC4uLi4uLkwuLi4gLi4uLi4KICAgIDA5NTA6IDAwIDAwIDBBIDAw
IDAwIDAwIDEyIDQ1IDE1IDA0IDBDIDM1IDAwIDAyIDAwIDAwICAuLi4uLi4uRS4uLjUuLi4uCiAg
ICAwOTYwOiAwQSAzNSAxMSA0OSAxNCAwQiA5QyAwMSAzNSAwMCAwMiAwMCAwMCAwMCAwMCAwMCAg
LjUuSS4uLi41Li4uLi4uLgogICAgMDk3MDogNEUgMDAgMDAgMDAgNjQgMDAgMDAgMDAgQzggMDAg
MDAgMDAgNEQgMDEgMDAgMDAgIE4uLi5kLi4uLi4uLk0uLi4KICAgIDA5ODA6IDkwIDAxIDAwIDAw
IEY0IDAxIDAwIDAwIDE1IDAyIDAwIDAwIDlCIDAyIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAg
ICAwOTkwOiAyMCAwMyAwMCAwMCBBNSAwMyAwMCAwMCAxQSAwNCAwMCAwMCAyQSAwNCAwMCAwMCAg
IC4uLi4uLi4uLi4uKi4uLgogICAgMDlBMDogMkIgMDQgMDAgMDAgNEMgMDQgMDAgMDAgNjAgMDQg
MDAgMDAgNzcgMDQgMDAgMDAgICsuLi5MLi4uYC4uLncuLi4KICAgIDA5QjA6IEIwIDA0IDAwIDAw
IEUyIDA0IDAwIDAwIEU5IDA0IDAwIDAwIDAwIDA1IDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAg
ICAwOUMwOiAxNCAwNSAwMCAwMCAyOCAwNSAwMCAwMCAzNSAwNSAwMCAwMCA1NyAwNSAwMCAwMCAg
Li4uLiguLi41Li4uVy4uLgogICAgMDlEMDogNUIgMDUgMDAgMDAgNzggMDUgMDAgMDAgOTkgMDUg
MDAgMDAgQTAgMDUgMDAgMDAgIFsuLi54Li4uLi4uLi4uLi4KICAgIDA5RTA6IEJCIDA1IDAwIDAw
IENEIDA1IDAwIDAwIERDIDA1IDAwIDAwIEZEIDA1IDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAg
ICAwOUYwOiAxOCAwNiAwMCAwMCAxRiAwNiAwMCAwMCA0MCAwNiAwMCAwMCA2MSAwNiAwMCAwMCAg
Li4uLi4uLi5ALi4uYS4uLgogICAgMEEwMDogNzIgMDYgMDAgMDAgODMgMDYgMDAgMDAgOTAgMDYg
MDAgMDAgQTQgMDYgMDAgMDAgIHIuLi4uLi4uLi4uLi4uLi4KICAgIDBBMTA6IEM1IDA2IDAwIDAw
IEQ2IDA2IDAwIDAwIEUwIDA2IDAwIDAwIEU3IDA2IDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAg
ICAwQTIwOiAwOCAwNyAwMCAwMCAyOSAwNyAwMCAwMCA0QiAwNyAwMCAwMCA2QyAwNyAwMCAwMCAg
Li4uLikuLi5LLi4ubC4uLgogICAgMEEzMDogODAgMDcgMDAgMDAgOEQgMDcgMDAgMDAgOUUgMDcg
MDAgMDAgQTggMDcgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAgIDBBNDA6IEFGIDA3IDAwIDAw
IEQwIDA3IDAwIDAwIEYxIDA3IDAwIDAwIDEzIDA4IDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAg
ICAwQTUwOiAzNCAwOCAwMCAwMCA1NSAwOCAwMCAwMCA3NyAwOCAwMCAwMCA5OCAwOCAwMCAwMCAg
NC4uLlUuLi53Li4uLi4uLgogICAgMEE2MDogQjkgMDggMDAgMDAgREIgMDggMDAgMDAgRkMgMDgg
MDAgMDAgMUQgMDkgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAgIDBBNzA6IDNGIDA5IDAwIDAw
IDYwIDA5IDAwIDAwIDgxIDA5IDAwIDAwIEEzIDA5IDAwIDAwICA/Li4uYC4uLi4uLi4uLi4uCiAg
ICAwQTgwOiBDNCAwOSAwMCAwMCBGNiAwOSAwMCAwMCAyOCAwQSAwMCAwMCA1QSAwQSAwMCAwMCAg
Li4uLi4uLi4oLi4uWi4uLgogICAgMEE5MDogOEMgMEEgMDAgMDAgQkUgMEEgMDAgMDAgRjAgMEEg
MDAgMDAgMjIgMEIgMDAgMDAgIC4uLi4uLi4uLi4uLiIuLi4KICAgIDBBQTA6IDU0IDBCIDAwIDAw
IDg2IDBCIDAwIDAwIEI4IDBCIDAwIDAwIDEyIDIzIDA0IDBDICBULi4uLi4uLi4uLi4uIy4uCiAg
ICAwQUIwOiAzMyAwMCAwMiAwMCAwMCAwQSAzNCAxMSAxOCAwQiA5QyAwMSAzMyAwMCAwMiAwMCAg
My4uLi4uNC4uLi4uMy4uLgogICAgMEFDMDogMDAgMDAgMDAgMDAgMDIgMDAgMDAgMDAgMDAgMDAg
MDAgMDAgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAgIDBBRDA6IDEyIDIyIDA0IDBD
IDM2IDAwIDAyIDAwIDAxIDBBIDMzIDExIDE3IDBBIDE0IDM2ICAuIi4uNi4uLi4uMy4uLi42CiAg
ICAwQUUwOiAwMCAwMiAwMCAwMCAwMCAwMCAwMCAyQSAxMiAwMCAwMCBEQSAxNiAwMCAwMCAxOSAg
Li4uLi4uLiouLi4uLi4uLgogICAgMEFGMDogMDAgMDAgMDAgMTIgMjIgMDQgMEMgMDQgMDAgMDUg
MDAgMDEgMEEgMzIgMTEgMTcgIC4uLi4iLi4uLi4uLi4yLi4KICAgIDBCMDA6IDBBIDE0IDA0IDAw
IDA1IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIEU4IDAzICAuLi4uLi4uLi4uLi4uLi4uCiAg
ICAwQjEwOiAwMCAwMCA2NCAwMCAwMCAwMCAxMiAyMiAwNCAwQyAwMyAwMCAwNSAwMCAwMSAwQSAg
Li5kLi4uLiIuLi4uLi4uLgogICAgMEIyMDogMzEgMTEgMTcgMEEgMTQgMDMgMDAgMDUgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgIDEuLi4uLi4uLi4uLi4uLi4KICAgIDBCMzA6IDAwIDIwIEExIDA3
IDAwIDAxIDAwIDAwIDAwIDEyIDIyIDA0IDBDIDAyIDAwIDA1ICAuIC4uLi4uLi4uIi4uLi4uCiAg
ICAwQjQwOiAwMCAwMSAwQSAzMCAxMSAxNyAwQSAxNCAwMiAwMCAwNSAwMCAwMCAwMCAwMCAwMCAg
Li4uMC4uLi4uLi4uLi4uLgogICAgMEI1MDogMDAgMDAgMDAgMDAgRTAgMDQgMDcgMDAgMDEgMDAg
MDAgMDAgMTIgMjIgMDQgMEMgIC4uLi4uLi4uLi4uLi4iLi4KICAgIDBCNjA6IDAxIDAwIDA1IDAw
IDAxIDBBIDJGIDExIDE3IDBBIDE0IDAxIDAwIDA1IDAwIDAwICAuLi4uLi4vLi4uLi4uLi4uCiAg
ICAwQjcwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCA4MCA4NCAxRSAwMCAwMSAwMCAwMCAwMCAxMiAg
Li4uLi4uLi4uLi4uLi4uLgogICAgMEI4MDogMjMgMDQgMEMgMjUgMDAgMDIgMDAgMDAgMEEgMkUg
MTEgMTggMEIgOUMgMDEgMjUgICMuLiUuLi4uLi4uLi4uLiUKICAgIDBCOTA6IDAwIDAyIDAwIDAw
IDAwIDAwIDAwIDAyIDAwIDAwIDAwIDAxIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAg
ICAwQkEwOiAwMCAwMCAwMCAxMiAyMiAwNCAwQyA0MCAwMCAwMiAwMCAwMSAwQSAyRCAxMSAxNyAg
Li4uLiIuLkAuLi4uLi0uLgogICAgMEJCMDogMEEgMTQgNDAgMDAgMDIgMDAgMDMgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDcgMDAgIC4uQC4uLi4uLi4uLi4uLi4KICAgIDBCQzA6IDAwIDAwIDAxIDAw
IDAwIDAwIDEyIDIyIDA0IDBDIDI0IDAwIDAyIDAwIDAxIDBBICAuLi4uLi4uIi4uJC4uLi4uCiAg
ICAwQkQwOiAyQyAxMSAxNyAwQSAxNCAyNCAwMCAwMiAwMCAwNCAwMCAwMCAwMCAwMCAwMCAwMCAg
LC4uLi4kLi4uLi4uLi4uLgogICAgMEJFMDogMDAgMDcgMDAgMDAgMDAgMDEgMDAgMDAgMDAgMTIg
MjIgMDQgMEMgMjMgMDAgMDIgIC4uLi4uLi4uLi4iLi4jLi4KICAgIDBCRjA6IDAwIDAxIDBBIDJC
IDExIDE3IDBBIDE0IDIzIDAwIDAyIDAwIDAxIDAwIDAwIDAwICAuLi4rLi4uLiMuLi4uLi4uCiAg
ICAwQzAwOiAwMCAwMCAwMCAwMCAwNyAwMCAwMCAwMCAwMSAwMCAwMCAwMCAxMiAyMiAwNCAwQyAg
Li4uLi4uLi4uLi4uLiIuLgogICAgMEMxMDogM0YgMDAgMDIgMDAgMDEgMEEgMkEgMTEgMTcgMEEg
MTQgM0YgMDAgMDIgMDAgMDAgID8uLi4uLiouLi4uPy4uLi4KICAgIDBDMjA6IDAwIDAwIDAwIDAw
IDAwIDAwIDAwIDA3IDAwIDAwIDAwIDAxIDAwIDAwIDAwIDEyICAuLi4uLi4uLi4uLi4uLi4uCiAg
ICAwQzMwOiAyMiAwNCAwQyAzRSAwMCAwMiAwMCAwMSAwQSAyOSAxMSAxNyAwQSAxNCAzRSAwMCAg
Ii4uPi4uLi4uKS4uLi4+LgogICAgMEM0MDogMDIgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAg
MDcgMDAgMDAgMDAgMDEgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAgIDBDNTA6IDAwIDAwIDEyIDI3
IDA0IDBDIDQyIDAwIDAyIDAwIDAwIDBBIDI4IDExIDFDIDBCICAuLi4nLi5CLi4uLi4oLi4uCiAg
ICAwQzYwOiA5QyAwMSA0MiAwMCAwMiAwMCAwMCAwMCAwMCAwMCAwMyAwMCAwMCAwMCAwMCAwMCAg
Li5CLi4uLi4uLi4uLi4uLgogICAgMEM3MDogMDAgMDAgMDEgMDAgMDAgMDAgMDIgMDAgMDAgMDAg
MTIgNEQgMDYgMDQgMEMgMDcgIC4uLi4uLi4uLi4uTS4uLi4KICAgIDBDODA6IDAwIDAyIDAwIDAw
IDBBIDI3IDExIDQxIDA2IDBCIDlDIDAxIDA3IDAwIDAyIDAwICAuLi4uLicuQS4uLi4uLi4uCiAg
ICAwQzkwOiAwNyAwMCAwMCAwMCAxNCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMSAwMCAwMCAwMCAg
Li4uLi4uLi4uLi4uLi4uLgogICAgMENBMDogMDIgMDAgMDAgMDAgMDMgMDAgMDAgMDAgMDQgMDAg
MDAgMDAgMDUgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAgIDBDQjA6IDA2IDAwIDAwIDAw
IDA3IDAwIDAwIDAwIDBDIDAwIDAwIDAwIDBEIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAg
ICAwQ0MwOiAwRSAwMCAwMCAwMCAwRiAwMCAwMCAwMCAxQyAwMCAwMCAwMCAxRCAwMCAwMCAwMCAg
Li4uLi4uLi4uLi4uLi4uLgogICAgMENEMDogMUUgMDAgMDAgMDAgMUYgMDAgMDAgMDAgM0MgMDAg
MDAgMDAgM0QgMDAgMDAgMDAgIC4uLi4uLi4uPC4uLj0uLi4KICAgIDBDRTA6IDNFIDAwIDAwIDAw
IDNGIDAwIDAwIDAwIDEyIDNCIDA0IDBDIDQxIDAwIDAyIDAwICA+Li4uPy4uLi47Li5BLi4uCiAg
ICAwQ0YwOiAwMCAwQSAyNiAxMSAzMCAwQiA5QyAwMSA0MSAwMCAwMiAwMCAxRSAwMCAwMCAwMCAg
Li4mLjAuLi5BLi4uLi4uLgogICAgMEQwMDogMDggMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDIgMDAg
MDAgMDAgMDQgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAgIDBEMTA6IDA2IDAwIDAwIDAw
IDBDIDAwIDAwIDAwIDBFIDAwIDAwIDAwIDFDIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAg
ICAwRDIwOiAxRSAwMCAwMCAwMCAxMiAyQiAwNCAwQyAyRCAwMCAwMiAwMCAwMCAwQSAyNSAxMSAg
Li4uLi4rLi4tLi4uLi4lLgogICAgMEQzMDogMjAgMEIgOUMgMDEgMkQgMDAgMDIgMDAgMjggMDAg
MDAgMDAgMDQgMDAgMDAgMDAgICAuLi4tLi4uKC4uLi4uLi4KICAgIDBENDA6IDFFIDAwIDAwIDAw
IDI4IDAwIDAwIDAwIDNDIDAwIDAwIDAwIDc4IDAwIDAwIDAwICAuLi4uKC4uLjwuLi54Li4uCiAg
ICAwRDUwOiAxMiAyMiAwNCAwQyAxRSAwMCAwMiAwMCAwMSAwQSAyNCAxMSAxNyAwQSAxNCAxRSAg
LiIuLi4uLi4uLiQuLi4uLgogICAgMEQ2MDogMDAgMDIgMDAgMTMgMDAgMDAgMDAgMDEgMDAgMDAg
MDAgMUYgMDAgMDAgMDAgMDEgIC4uLi4uLi4uLi4uLi4uLi4KICAgIDBENzA6IDAwIDAwIDAwIDEy
IDIyIDA0IDBDIDFGIDAwIDAyIDAwIDAxIDBBIDIzIDExIDE3ICAuLi4uIi4uLi4uLi4uIy4uCiAg
ICAwRDgwOiAwQSAxNCAxRiAwMCAwMiAwMCAwNSAwMCAwMCAwMCAwMSAwMCAwMCAwMCAwRiAwMCAg
Li4uLi4uLi4uLi4uLi4uLgogICAgMEQ5MDogMDAgMDAgMDEgMDAgMDAgMDAgMTIgMjIgMDQgMEMg
MUQgMDAgMDIgMDAgMDEgMEEgIC4uLi4uLi4iLi4uLi4uLi4KICAgIDBEQTA6IDIyIDExIDE3IDBB
IDE0IDFEIDAwIDAyIDAwIDA5IDAwIDAwIDAwIDAxIDAwIDAwICAiLi4uLi4uLi4uLi4uLi4uCiAg
ICAwREIwOiAwMCAwRiAwMCAwMCAwMCAwMSAwMCAwMCAwMCAxMiAyMiAwNCAwQyAxQyAwMCAwMiAg
Li4uLi4uLi4uLiIuLi4uLgogICAgMERDMDogMDAgMDEgMEEgMjEgMTEgMTcgMEEgMTQgMUMgMDAg
MDIgMDAgMDkgMDAgMDAgMDAgIC4uLiEuLi4uLi4uLi4uLi4KICAgIDBERDA6IDAxIDAwIDAwIDAw
IDBGIDAwIDAwIDAwIDAxIDAwIDAwIDAwIDEyIDIyIDA0IDBDICAuLi4uLi4uLi4uLi4uIi4uCiAg
ICAwREUwOiAxQSAwMCAwMiAwMCAwMSAwQSAyMCAxMSAxNyAwQSAxNCAxQSAwMCAwMiAwMCAwMSAg
Li4uLi4uIC4uLi4uLi4uLgogICAgMERGMDogMDAgMDAgMDAgMDEgMDAgMDAgMDAgMEYgMDAgMDAg
MDAgMDEgMDAgMDAgMDAgMTIgIC4uLi4uLi4uLi4uLi4uLi4KICAgIDBFMDA6IDIyIDA0IDBDIDFC
IDAwIDAyIDAwIDAxIDBBIDFGIDExIDE3IDBBIDE0IDFCIDAwICAiLi4uLi4uLi4uLi4uLi4uCiAg
ICAwRTEwOiAwMiAwMCAyOSAwMCAwMCAwMCAwMSAwMCAwMCAwMCAzRiAwMCAwMCAwMCAwMSAwMCAg
Li4pLi4uLi4uLj8uLi4uLgogICAgMEUyMDogMDAgMDAgMTIgMjIgMDQgMEMgMTkgMDAgMDIgMDAg
MDEgMEEgMUUgMTEgMTcgMEEgIC4uLiIuLi4uLi4uLi4uLi4KICAgIDBFMzA6IDE0IDE5IDAwIDAy
IDAwIDA4IDAwIDAwIDAwIDAxIDAwIDAwIDAwIDBGIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAg
ICAwRTQwOiAwMCAwMSAwMCAwMCAwMCAxMiAyMiAwNCAwQyAxOCAwMCAwMiAwMCAwMSAwQSAxRCAg
Li4uLi4uIi4uLi4uLi4uLgogICAgMEU1MDogMTEgMTcgMEEgMTQgMTggMDAgMDIgMDAgMDggMDAg
MDAgMDAgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAgIDBFNjA6IDBGIDAwIDAwIDAw
IDAxIDAwIDAwIDAwIDEyIDIyIDA0IDBDIDE2IDAwIDAyIDAwICAuLi4uLi4uLi4iLi4uLi4uCiAg
ICAwRTcwOiAwMSAwQSAxQyAxMSAxNyAwQSAxNCAxNiAwMCAwMiAwMCAwMSAwMCAwMCAwMCAwMSAg
Li4uLi4uLi4uLi4uLi4uLgogICAgMEU4MDogMDAgMDAgMDAgMEYgMDAgMDAgMDAgMDEgMDAgMDAg
MDAgMTIgMjIgMDQgMEMgMTcgIC4uLi4uLi4uLi4uLiIuLi4KICAgIDBFOTA6IDAwIDAyIDAwIDAx
IDBBIDFCIDExIDE3IDBBIDE0IDE3IDAwIDAyIDAwIDA1IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAg
ICAwRUEwOiAwMCAwMCAwMSAwMCAwMCAwMCAwRiAwMCAwMCAwMCAwMSAwMCAwMCAwMCAxMiAyMiAg
Li4uLi4uLi4uLi4uLi4uIgogICAgMEVCMDogMDQgMEMgMTEgMDAgMDIgMDAgMDEgMEEgMUEgMTEg
MTcgMEEgMTQgMTEgMDAgMDIgIC4uLi4uLi4uLi4uLi4uLi4KICAgIDBFQzA6IDAwIDA2IDAwIDAw
IDAwIDAyIDAwIDAwIDAwIDEwIDAwIDAwIDAwIDAxIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAg
ICAwRUQwOiAwMCAxMiAyMiAwNCAwQyAxMiAwMCAwMiAwMCAwMSAwQSAxOSAxMSAxNyAwQSAxNCAg
Li4iLi4uLi4uLi4uLi4uLgogICAgMEVFMDogMTIgMDAgMDIgMDAgMTggMDAgMDAgMDAgMDIgMDAg
MDAgMDAgMzAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLjAuLi4KICAgIDBFRjA6IDAxIDAwIDAwIDAw
IDEyIDIyIDA0IDBDIDBEIDAwIDAyIDAwIDAxIDBBIDE4IDExICAuLi4uLiIuLi4uLi4uLi4uCiAg
ICAwRjAwOiAxNyAwQSAxNCAwRCAwMCAwMiAwMCAyMCAwMCAwMCAwMCAwNiAwMCAwMCAwMCA1MCAg
Li4uLi4uLiAuLi4uLi4uUAogICAgMEYxMDogMDAgMDAgMDAgMDEgMDAgMDAgMDAgMTIgMjIgMDQg
MEMgMEUgMDAgMDIgMDAgMDEgIC4uLi4uLi4uIi4uLi4uLi4KICAgIDBGMjA6IDBBIDE3IDExIDE3
IDBBIDE0IDBFIDAwIDAyIDAwIDA4IDAwIDAwIDAwIDA0IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAg
ICAwRjMwOiAwMCAwMCAxNCAwMCAwMCAwMCAwMSAwMCAwMCAwMCAxMiAyMiAwNCAwQyAwRiAwMCAg
Li4uLi4uLi4uLi4iLi4uLgogICAgMEY0MDogMDIgMDAgMDEgMEEgMTYgMTEgMTcgMEEgMTQgMEYg
MDAgMDIgMDAgMEMgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAgIDBGNTA6IDAwIDA0IDAwIDAw
IDAwIDIwIDAwIDAwIDAwIDAxIDAwIDAwIDAwIDEyIDIyIDA0ICAuLi4uLiAuLi4uLi4uLiIuCiAg
ICAwRjYwOiAwQyAxNSAwMCAwMiAwMCAwMSAwQSAxNSAxMSAxNyAwQSAxNCAxNSAwMCAwMiAwMCAg
Li4uLi4uLi4uLi4uLi4uLgogICAgMEY3MDogMTIgMDAgMDAgMDAgMDUgMDAgMDAgMDAgMUYgMDAg
MDAgMDAgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAgIDBGODA6IDEyIDIyIDA0IDBD
IDNEIDAwIDAyIDAwIDAxIDBBIDE0IDExIDE3IDBBIDE0IDNEICAuIi4uPS4uLi4uLi4uLi49CiAg
ICAwRjkwOiAwMCAwMiAwMCAzOCAwMSAwMCAwMCAzMiAwMCAwMCAwMCBGRiAwNyAwMCAwMCAwMSAg
Li4uOC4uLjIuLi4uLi4uLgogICAgMEZBMDogMDAgMDAgMDAgMTIgMjIgMDQgMEMgMEIgMDAgMDIg
MDAgMDEgMEEgMTMgMTEgMTcgIC4uLi4iLi4uLi4uLi4uLi4KICAgIDBGQjA6IDBBIDE0IDBCIDAw
IDAyIDAwIDgwIDAxIDAwIDAwIDMyIDAwIDAwIDAwIEZGIDBGICAuLi4uLi4uLi4uMi4uLi4uCiAg
ICAwRkMwOiAwMCAwMCAwMSAwMCAwMCAwMCAxMiAyMiAwNCAwQyAzQyAwMCAwMiAwMCAwMSAwQSAg
Li4uLi4uLiIuLjwuLi4uLgogICAgMEZEMDogMTIgMTEgMTcgMEEgMTQgM0MgMDAgMDIgMDAgQzQg
MDIgMDAgMDAgMzIgMDAgMDAgIC4uLi4uPC4uLi4uLi4yLi4KICAgIDBGRTA6IDAwIEZGIDBGIDAw
IDAwIDAxIDAwIDAwIDAwIDEyIDIyIDA0IDBDIDEwIDAwIDAyICAuLi4uLi4uLi4uIi4uLi4uCiAg
ICAwRkYwOiAwMCAwMSAwQSAxMSAxMSAxNyAwQSAxNCAxMCAwMCAwMiAwMCA0OCAwMCAwMCAwMCAg
Li4uLi4uLi4uLi4uSC4uLgogICAgMTAwMDogMzAgMDAgMDAgMDAgODQgMDAgMDAgMDAgMDYgMDAg
MDAgMDAgMTIgMjIgMDQgMEMgIDAuLi4uLi4uLi4uLi4iLi4KICAgIDEwMTA6IDA5IDAwIDAyIDAw
IDAxIDBBIDEwIDExIDE3IDBBIDE0IDA5IDAwIDAyIDAwIDc0ICAuLi4uLi4uLi4uLi4uLi50CiAg
ICAxMDIwOiAwMCAwMCAwMCAxRCAwMCAwMCAwMCBGRiAwMCAwMCAwMCAwMSAwMCAwMCAwMCAxMiAg
Li4uLi4uLi4uLi4uLi4uLgogICAgMTAzMDogMjIgMDQgMEMgMDUgMDAgMDIgMDAgMDEgMEEgMEYg
MTEgMTcgMEEgMTQgMDUgMDAgICIuLi4uLi4uLi4uLi4uLi4KICAgIDEwNDA6IDAyIDAwIDREIDAw
IDAwIDAwIDE1IDAwIDAwIDAwIDdFIDAwIDAwIDAwIDAxIDAwICAuLk0uLi4uLi4ufi4uLi4uCiAg
ICAxMDUwOiAwMCAwMCAxMiAyMiAwNCAwQyAwNiAwMCAwMiAwMCAwMSAwQSAwRSAxMSAxNyAwQSAg
Li4uIi4uLi4uLi4uLi4uLgogICAgMTA2MDogMTQgMDYgMDAgMDIgMDAgMjcgMDAgMDAgMDAgMDgg
MDAgMDAgMDAgM0UgMDAgMDAgIC4uLi4uJy4uLi4uLi4+Li4KICAgIDEwNzA6IDAwIDAxIDAwIDAw
IDAwIDEyIDIyIDA0IDBDIDNCIDAwIDAyIDAwIDAxIDBBIDBEICAuLi4uLi4iLi47Li4uLi4uCiAg
ICAxMDgwOiAxMSAxNyAwQSAxNCAzQiAwMCAwMiAwMCAyNyAwMCAwMCAwMCAwOCAwMCAwMCAwMCAg
Li4uLjsuLi4nLi4uLi4uLgogICAgMTA5MDogM0UgMDAgMDAgMDAgMDEgMDAgMDAgMDAgMTIgMjIg
MDQgMEMgMDIgMDAgMDIgMDAgID4uLi4uLi4uLiIuLi4uLi4KICAgIDEwQTA6IDAxIDBBIDBDIDEx
IDE3IDBBIDE0IDAyIDAwIDAyIDAwIDI4IDAwIDAwIDAwIDE2ICAuLi4uLi4uLi4uLiguLi4uCiAg
ICAxMEIwOiAwMCAwMCAwMCAzRSAwMCAwMCAwMCAwMiAwMCAwMCAwMCAxMiA0OSAwRCAwNCAwQyAg
Li4uPi4uLi4uLi4uSS4uLgogICAgMTBDMDogMDEgMDAgMDIgMDAgMDAgMEEgMEIgMTEgNEQgMEMg
MEIgOUMgMDEgMDEgMDAgMDIgIC4uLi4uLi4uTS4uLi4uLi4KICAgIDEwRDA6IDAwIDYwIDA5IDAw
IDAwIDJGIDAwIDAwIDAwIEU4IDAzIDAwIDAwIEIwIDA0IDAwICAuYC4uLi8uLi4uLi4uLi4uCiAg
ICAxMEUwOiAwMCA0MCAwNiAwMCAwMCBBNCAwNiAwMCAwMCAwOCAwNyAwMCAwMCA2QyAwNyAwMCAg
LkAuLi4uLi4uLi4uLmwuLgogICAgMTBGMDogMDAgRDAgMDcgMDAgMDAgMzQgMDggMDAgMDAgOTgg
MDggMDAgMDAgRkMgMDggMDAgIC4uLi4uNC4uLi4uLi4uLi4KICAgIDExMDA6IDAwIDYwIDA5IDAw
IDAwIEM0IDA5IDAwIDAwIDI4IDBBIDAwIDAwIDhDIDBBIDAwICAuYC4uLi4uLi4oLi4uLi4uCiAg
ICAxMTEwOiAwMCBGMCAwQSAwMCAwMCA1NCAwQiAwMCAwMCBCOCAwQiAwMCAwMCAxQyAwQyAwMCAg
Li4uLi5ULi4uLi4uLi4uLgogICAgMTEyMDogMDAgODAgMEMgMDAgMDAgRTQgMEMgMDAgMDAgNDgg
MEQgMDAgMDAgQUMgMEQgMDAgIC4uLi4uLi4uLkguLi4uLi4KICAgIDExMzA6IDAwIDEwIDBFIDAw
IDAwIDc0IDBFIDAwIDAwIEQ4IDBFIDAwIDAwIDNDIDBGIDAwICAuLi4uLnQuLi4uLi4uPC4uCiAg
ICAxMTQwOiAwMCBBMCAwRiAwMCAwMCAwNCAxMCAwMCAwMCA2OCAxMCAwMCAwMCBDQyAxMCAwMCAg
Li4uLi4uLi4uaC4uLi4uLgogICAgMTE1MDogMDAgMzAgMTEgMDAgMDAgOTQgMTEgMDAgMDAgRjgg
MTEgMDAgMDAgNUMgMTIgMDAgIC4wLi4uLi4uLi4uLi5cLi4KICAgIDExNjA6IDAwIEMwIDEyIDAw
IDAwIDI0IDEzIDAwIDAwIDg4IDEzIDAwIDAwIEVDIDEzIDAwICAuLi4uLiQuLi4uLi4uLi4uCiAg
ICAxMTcwOiAwMCA1MCAxNCAwMCAwMCBCNCAxNCAwMCAwMCAxOCAxNSAwMCAwMCA3QyAxNSAwMCAg
LlAuLi4uLi4uLi4uLnwuLgogICAgMTE4MDogMDAgRTAgMTUgMDAgMDAgNDQgMTYgMDAgMDAgQTgg
MTYgMDAgMDAgMEMgMTcgMDAgIC4uLi4uRC4uLi4uLi4uLi4KICAgIDExOTA6IDAwIDcwIDE3IDAw
IDAwIDEyIDIzIDA0IDBDIDI2IDAwIDAyIDAwIDAwIDBBIDBBICAucC4uLi4jLi4mLi4uLi4uCiAg
ICAxMUEwOiAxMSAxOCAwQiA5QyAwMSAyNiAwMCAwMiAwMCAwMSAwMCAwMCAwMCAwMiAwMCAwMCAg
Li4uLi4mLi4uLi4uLi4uLgogICAgMTFCMDogMDAgMDAgMDAgMDAgMDAgMDEgMDAgMDAgMDAgMTIg
MjIgMDQgMEMgMEEgMDAgMDUgIC4uLi4uLi4uLi4iLi4uLi4KICAgIDExQzA6IDAwIDAxIDBBIDA5
IDExIDE3IDBBIDE0IDBBIDAwIDA1IDAwIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAg
ICAxMUQwOiAwMCAwMCAwMCAwMCAzMiAwMCAwMCAwMCAwMSAwMCAwMCAwMCAxMiAyMiAwNCAwQyAg
Li4uLjIuLi4uLi4uLiIuLgogICAgMTFFMDogMjcgMDAgMDIgMDAgMDEgMEEgMDggMTEgMTcgMEEg
MTQgMjcgMDAgMDIgMDAgMDAgICcuLi4uLi4uLi4uJy4uLi4KICAgIDExRjA6IDAwIDAwIDAwIDAw
IDAwIDAwIDAwIEZGIEZGIEZGIEZGIDAxIDAwIDAwIDAwIDEyICAuLi4uLi4uLi4uLi4uLi4uCiAg
ICAxMjAwOiAyMiAwNCAwQyAwOCAwMCAwMSAwMCAwMSAwQSAwNyAxMSAxNyAwQSAxNCAwOCAwMCAg
Ii4uLi4uLi4uLi4uLi4uLgogICAgMTIxMDogMDEgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAg
RkYgRkYgRkYgRkYgMDEgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAgIDEyMjA6IDAwIDAwIDEyIDIy
IDA0IDBDIDA3IDAwIDAxIDAwIDAxIDBBIDA2IDExIDE3IDBBICAuLi4iLi4uLi4uLi4uLi4uCiAg
ICAxMjMwOiAxNCAwNyAwMCAwMSAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCBGRiBGRiBGRiAg
Li4uLi4uLi4uLi4uLi4uLgogICAgMTI0MDogRkYgMDEgMDAgMDAgMDAgMTIgMjIgMDQgMEMgMDYg
MDAgMDEgMDAgMDEgMEEgMDUgIC4uLi4uLiIuLi4uLi4uLi4KICAgIDEyNTA6IDExIDE3IDBBIDE0
IDA2IDAwIDAxIDAwIEYwIDBBIDAwIDAwIDAwIDAwIDAwIDAwICAuLi4uLi4uLi4uLi4uLi4uCiAg
ICAxMjYwOiBGRiBGRiBGRiBGRiAwMSAwMCAwMCAwMCAxMiAyMiAwNCAwQyAwNSAwMCAwMSAwMCAg
Li4uLi4uLi4uIi4uLi4uLgogICAgMTI3MDogMDEgMEEgMDQgMTEgMTcgMEEgMTQgMDUgMDAgMDEg
MDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAgIDEyODA6IDAwIDAwIDAwIEZG
IEZGIEZGIEZGIDAxIDAwIDAwIDAwIDEyIDIyIDA0IDBDIDA0ICAuLi4uLi4uLi4uLi4iLi4uCiAg
ICAxMjkwOiAwMCAwMSAwMCAwMSAwQSAwMyAxMSAxNyAwQSAxNCAwNCAwMCAwMSAwMCBGMCAwQSAg
Li4uLi4uLi4uLi4uLi4uLgogICAgMTJBMDogMDAgMDAgMDAgMDAgMDAgMDAgRkYgRkYgRkYgRkYg
MDEgMDAgMDAgMDAgMTIgMjIgIC4uLi4uLi4uLi4uLi4uLiIKICAgIDEyQjA6IDA0IDBDIDAzIDAw
IDAxIDAwIDAxIDBBIDAyIDExIDE3IDBBIDE0IDAzIDAwIDAxICAuLi4uLi4uLi4uLi4uLi4uCiAg
ICAxMkMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCBGRiBGRiBGRiBGRiAwMSAwMCAwMCAg
Li4uLi4uLi4uLi4uLi4uLgogICAgMTJEMDogMDAgQTAgMUEgMDAgMTUgNUMgNEYgNDIgNDkgNDQg
MDQgMDAgMTUgNUMgNEYgNDIgIC4uLi4uXE9CSUQuLi5cT0IKICAgIDEyRTA6IDQ5IDQ1IDA0IDAw
IDE1IDVDIDRGIDQyIDQ5IDU0IDA0IDAwIDEwIDhBIDA5IDAxICBJRS4uLlxPQklULi4uLi4uCiAg
ICAxMkYwOiA1QyAwMCAwOCA0NyA0NiAzMCAzMSAwMCAwOCA0MSA1MyA0RCA0OSAwQiBCMiAwMCAg
XC4uR0YwMS4uQVNNSS4uLgogICAgMTMwMDogMDggNDkgNTMgNEQgNDkgMEEgOUQgMDggNDEgNEYg
NDQgNTYgMEEgMDYgNUIgODAgIC5JU01JLi4uQU9EVi4uWy4KICAgIDEzMTA6IDQxIDRGIDQ0IDQ1
IDAwIDBDIDE4IEYwIDQ1IEE5IDBCIEFDIDI0IDVCIDgxIDM1ICBBT0RFLi4uLkUuLi4kWy41CiAg
ICAxMzIwOiA0MSA0RiA0NCA0NSAwMCA0RiA1NSA1NCA0MiA0MCA2MiA0MSA1MSA1NiA1MyAyMCAg
QU9ERS5PVVRCQGJBUVZTIAogICAgMTMzMDogNTMgNDMgNEQgNDkgMjAgNTMgNDMgNEQgNDQgMjAg
NDQgNTMgNTAgNDQgODAgQTIgIFNDTUkgU0NNRCBEU1BELi4KICAgIDEzNDA6IDEwIDUyIDQ1IDUz
IDU2IDQwIDA2IDUyIDREIDUwIDQ0IDQwIDQ2IDU3IDQzIDRFICAuUkVTVkAuUk1QREBGV0NOCiAg
ICAxMzUwOiA1MyA4MCAwMCAwMSA1QiA4MiA4MSAwMyAwMSA0MSA0RiA0NCA1RiAwOCA1RiA0OCAg
Uy4uLlsuLi4uQU9EXy5fSAogICAgMTM2MDogNDkgNDQgMEMgNDEgRDAgMEMgMTQgMDggNUYgNTUg
NDkgNDQgMEQgNDEgNEYgNDQgIElELkEuLi4uX1VJRC5BT0QKICAgIDEzNzA6IDAwIDE0IDE1IDQx
IDREIDMwIDMxIDAwIDcwIDQxIDUxIDU2IDUzIDQxIDRGIDQ0ICAuLi5BTTAxLnBBUVZTQU9ECiAg
ICAxMzgwOiA1NiBBNCA1QyA0MSA0RiA0NCA1NiAxNCAxNiA0MSA0RCAzMCAzMiAwMCBBMCAwRCAg
Vi5cQU9EVi4uQU0wMi4uLgogICAgMTM5MDogOTMgNDcgNDYgMzAgMzEgMDAgNzAgMDEgNDcgNDYg
MzAgMzEgQTQgMDAgMTQgMEMgIC5HRjAxLnAuR0YwMS4uLi4KICAgIDEzQTA6IDQxIDREIDMwIDMz
IDAwIEE0IDVDIDRGIDQyIDQ5IDQ0IDE0IDQ0IDBCIDQxIDREICBBTTAzLi5cT0JJRC5ELkFNCiAg
ICAxM0IwOiAzMCAzNCAwMSAwOCA0QyA0RiA0NCA1NCAxMSAwNSAwQiA5QyAwMSAwMCAwOCA1NCAg
MDQuLkxPRFQuLi4uLi4uVAogICAgMTNDMDogNDUgNEQgNTAgMTEgMDUgMEIgMDAgMDIgMDAgNzAg
NjggNjAgNzAgODMgODggNUMgIEVNUC4uLi4uLnBoYHAuLlwKICAgIDEzRDA6IDRGIDQyIDQ5IDU0
IDAwIDAwIDYxIDcwIDAxIDYyIEEyIDQwIDA4IDkyIDk0IDYyICBPQklULi5hcC5iLkAuLi5iCiAg
ICAxM0UwOiA2MSA3MCA4MyA4OCA4MyA4OCA1QyA0RiA0MiA0OSA1NCA2MiAwMCAwMCAwMCA2MyAg
YXAuLi4uXE9CSVRiLi4uYwogICAgMTNGMDogNzAgODMgODggODMgODggNUMgNEYgNDIgNDkgNTQg
NjIgMDAgMDEgMDAgNjQgQTAgIHAuLi4uXE9CSVRiLi4uZC4KICAgIDE0MDA6IDQ5IDA1IDkwIDkz
IDYzIDYwIDkzIDY0IDAwIDcwIDgzIDg4IDgzIDg4IDVDIDRGICBJLi4uY2AuZC5wLi4uLlxPCiAg
ICAxNDEwOiA0MiA0OSA1NCA2MiAwMCAwQSAwMyAwMCA0QyA0RiA0NCA1NCA3MCA1NyA0MyA0RSAg
QklUYi4uLi5MT0RUcFdDTgogICAgMTQyMDogNTMgNTQgNDUgNEQgNTAgNzAgODMgODggODMgODgg
NUMgNEYgNDIgNDkgNTQgNjIgIFNURU1QcC4uLi5cT0JJVGIKICAgIDE0MzA6IDAwIDBBIDAyIDAw
IDY1IDc3IDY1IDBBIDA0IDY1IDhBIDU0IDQ1IDREIDUwIDY1ICAuLi4uZXdlLi5lLlRFTVBlCiAg
ICAxNDQwOiA1NCA0NSA0RCAzMSA4QSA0QyA0RiA0NCA1NCAwQSAwNCA0MyA1MiA1NSA1NCA3MCAg
VEVNMS5MT0RULi5DUlVUcAogICAgMTQ1MDogNTQgNDUgNEQgMzEgNDMgNTIgNTUgNTQgQTUgNzUg
NjIgQTQgNEMgNEYgNDQgNTQgIFRFTTFDUlVULnViLkxPRFQKICAgIDE0NjA6IDVCIDgwIDUwIDUz
IDREIDQ5IDAxIDQxIDUzIDREIDQ5IDBBIDAyIDVCIDgxIDBCICBbLlBTTUkuQVNNSS4uWy4uCiAg
ICAxNDcwOiA1MCA1MyA0RCA0OSAwMCA0MSA1MyA0RCA0RiAwOCA1QiAwMSA1MyA0RCA0QyA0RiAg
UFNNSS5BU01PLlsuU01MTwogICAgMTQ4MDogMDAgMTQgNDkgMDQgNDEgNEQgMzAgMzUgMDEgMDgg
NEMgNEYgNDQgNTQgMTEgMDQgIC4uSS5BTTA1Li5MT0RULi4KICAgIDE0OTA6IDBBIEM4IDAwIDhB
IDY4IDAwIDQ0IDQzIDREIDQ5IDhBIDY4IDBBIDA0IDQ0IDQzICAuLi4uaC5EQ01JLmguLkRDCiAg
ICAxNEEwOiA0RCA0NCA3MCA0NCA0MyA0RCA0OSA1MyA0MyA0RCA0OSA3MCA0NCA0MyA0RCA0NCAg
TURwRENNSVNDTUlwRENNRAogICAgMTRCMDogNTMgNDMgNEQgNDQgNzAgNDkgNTMgNEQgNDkgNDEg
NTMgNEQgNEYgNzAgNEYgNTUgIFNDTURwSVNNSUFTTU9wT1UKICAgIDE0QzA6IDU0IDQyIDRDIDRG
IDQ0IDU0IEE0IDRDIDRGIDQ0IDU0IDE0IDQyIDBDIDQxIDREICBUQkxPRFQuTE9EVC5CLkFNCiAg
ICAxNEQwOiAzMCAzNiAwMSAwOCA0QyA0RiA0NCA1NCAxMSAxMyAwQSAxNCAwMCAwMCAwMCAwMCAg
MDYuLkxPRFQuLi4uLi4uLgogICAgMTRFMDogMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAg
MDAgMDAgMDggNTQgNDUgNEQgIC4uLi4uLi4uLi4uLi5URU0KICAgIDE0RjA6IDUwIDExIDA1IDBC
IDAwIDAyIDAwIDcwIDY4IDYwIDcwIDgzIDg4IDVDIDRGIDQyICBQLi4uLi4ucGhgcC4uXE9CCiAg
ICAxNTAwOiA0OSA1NCAwMCAwMCA2MSA3MCAwMSA2MiBBMiA0MCAwOCA5MiA5NCA2MiA2MSA3MCAg
SVQuLmFwLmIuQC4uLmJhcAogICAgMTUxMDogODMgODggODMgODggNUMgNEYgNDIgNDkgNTQgNjIg
MDAgMDAgMDAgNjMgNzAgODMgIC4uLi5cT0JJVGIuLi5jcC4KICAgIDE1MjA6IDg4IDgzIDg4IDVD
IDRGIDQyIDQ5IDU0IDYyIDAwIDAxIDAwIDY0IEEwIDQ5IDA1ICAuLi5cT0JJVGIuLi5kLkkuCiAg
ICAxNTMwOiA5MCA5MyA2MyA2MCA5MyA2NCAwMSA3MCA4MyA4OCA4MyA4OCA1QyA0RiA0MiA0OSAg
Li5jYC5kLnAuLi4uXE9CSQogICAgMTU0MDogNTQgNjIgMDAgMEEgMDMgMDAgNEMgNEYgNDQgNTQg
NzAgNTcgNDMgNEUgNTMgNTQgIFRiLi4uLkxPRFRwV0NOU1QKICAgIDE1NTA6IDQ1IDREIDUwIDcw
IDgzIDg4IDgzIDg4IDVDIDRGIDQyIDQ5IDU0IDYyIDAwIDBBICBFTVBwLi4uLlxPQklUYi4uCiAg
ICAxNTYwOiAwMiAwMCA2NSA3NyA2NSAwQSAwNCA2NSA4QSA1NCA0NSA0RCA1MCA2NSA1NCA0NSAg
Li5ld2UuLmUuVEVNUGVURQogICAgMTU3MDogNEQgMzEgOEEgNEMgNEYgNDQgNTQgMEEgMDQgNDMg
NTIgNTUgNTQgNzAgNTQgNDUgIE0xLkxPRFQuLkNSVVRwVEUKICAgIDE1ODA6IDREIDMxIDQzIDUy
IDU1IDU0IEE1IDc1IDYyIEE0IDRDIDRGIDQ0IDU0IDE0IDQxICBNMUNSVVQudWIuTE9EVC5BCiAg
ICAxNTkwOiAwNiA0MSA0RCAzMCAzNyAwMSAwOCA0MiA1MyA1MCA0NCAxMSAwNCAwQiAxNCAwMiAg
LkFNMDcuLkJTUEQuLi4uLgogICAgMTVBMDogQTAgMEEgOTQgNjggMEEgMEYgQTQgNDIgNTMgNTAg
NDQgQTAgMTIgOTMgNjggMDAgIC4uLmguLi5CU1BELi4uaC4KICAgIDE1QjA6IDcwIDQ0IDUzIDUw
IDQ0IDQyIDUzIDUwIDQ0IEE0IDQyIDUzIDUwIDQ0IDcwIDAwICBwRFNQREJTUEQuQlNQRHAuCiAg
ICAxNUMwOiA2MCA3MiA2MCA3NyA2OCAwQiAxNCAwMiAwMCA2MCA3MCAwQiAxNCAwMiA2MSA3MCAg
YHJgd2guLi4uYHAuLi5hcAogICAgMTVEMDogMDAgNjIgQTIgMTggNjEgNzAgODMgODggNDQgNTMg
NTAgNDQgNjAgMDAgODggNDIgIC5iLi5hcC4uRFNQRGAuLkIKICAgIDE1RTA6IDUzIDUwIDQ0IDYy
IDAwIDc2IDYxIDc1IDYwIDc1IDYyIEE0IDQyIDUzIDUwIDQ0ICBTUERiLnZhdWB1Yi5CU1BECiAg
ICAxNUYwOiAxNCAwQyA0MSA0RCAzMCAzOCAwMCBBNCA1QyA0RiA0MiA0OSA0NSAxNCAxRCA0MSAg
Li5BTTA4Li5cT0JJRS4uQQogICAgMTYwMDogNEQgMzAgMzkgMDAgMDggNTQgNDUgNEQgNTAgMTEg
MDMgMEEgOEMgNzAgNTIgNEQgIE0wOS4uVEVNUC4uLi5wUk0KICAgIDE2MTA6IDUwIDQ0IDU0IDQ1
IDREIDUwIEE0IDU0IDQ1IDREIDUwIDA4IDVGIDU3IDQ0IDQ3ICBQRFRFTVAuVEVNUC5fV0RHCiAg
ICAxNjIwOiAxMSAyQiAwQSAyOCA2QSAwRiBCQyBBQiBBMSA4RSBEMSAxMSAwMCBBMCBDOSAwNiAg
LisuKGouLi4uLi4uLi4uLgogICAgMTYzMDogMjkgMTAgMDAgMDAgNDEgNDEgMDEgMDIgMjEgMTIg
OTAgMDUgNjYgRDUgRDEgMTEgICkuLi5BQS4uIS4uLmYuLi4KICAgIDE2NDA6IEIyIEYwIDAwIEEw
IEM5IDA2IDI5IDEwIDQyIDQxIDAxIDAwIDE0IDRGIDBBIDU3ICAuLi4uLi4pLkJBLi4uTy5XCiAg
ICAxNjUwOiA0RCA0MSA0MSAwMyBBMCA0NSAwQSA5MyA2OCAwMCBBMCAxOCA5MSA5MSA5MiA5MyAg
TUFBLi5FLi5oLi4uLi4uLgogICAgMTY2MDogNjkgMDEgOTIgOTMgNjkgMEEgMDIgOTIgOTMgNjkg
MEEgMDYgOEEgNkEgMDAgNTcgIGkuLi5pLi4uLmkuLi5qLlcKICAgIDE2NzA6IDQ5IDQ5IDQ0IEEw
IDA5IDkzIDY5IDAxIEE0IDQxIDREIDMwIDMxIEExIDRDIDA3ICBJSUQuLi5pLi5BTTAxLkwuCiAg
ICAxNjgwOiBBMCAwQSA5MyA2OSAwQSAwMiBBNCA0MSA0RCAzMCAzMiBBMSA0RSAwNiBBMCAwQSAg
Li4uaS4uLkFNMDIuTi4uLgogICAgMTY5MDogOTMgNjkgMEEgMDMgQTQgNDEgNEQgMzAgMzMgQTEg
NDAgMDYgQTAgMEUgOTMgNjkgIC5pLi4uQU0wMy5ALi4uLmkKICAgIDE2QTA6IDBBIDA0IEE0IDQx
IDREIDMwIDM0IDU3IDQ5IDQ5IDQ0IEExIDRFIDA0IEEwIDBCICAuLi5BTTA0V0lJRC5OLi4uCiAg
ICAxNkIwOiA5MyA2OSAwQSAwNSBBNCA0MSA0RCAzMCAzNSA2QSBBMSAzRiBBMCAwRSA5MyA2OSAg
LmkuLi5BTTA1ai4/Li4uaQogICAgMTZDMDogMEEgMDYgQTQgNDEgNEQgMzAgMzYgNTcgNDkgNDkg
NDQgQTEgMkUgQTAgMEUgOTMgIC4uLkFNMDZXSUlELi4uLi4KICAgIDE2RDA6IDY5IDBBIDA3IEE0
IDQxIDREIDMwIDM3IDU3IDQ5IDQ5IDQ0IEExIDFEIEEwIDBBICBpLi4uQU0wN1dJSUQuLi4uCiAg
ICAxNkUwOiA5MyA2OSAwQSAwOCBBNCA0MSA0RCAzMCAzOCBBMSAxMCBBMCAwQSA5MyA2OSAwQSAg
LmkuLi5BTTA4Li4uLi5pLgogICAgMTZGMDogMDkgQTQgNDEgNEQgMzAgMzkgQTEgMDMgQTQgMDAg
QTQgMDAgMDggNTcgNTEgNDIgIC4uQU0wOS4uLi4uLi5XUUIKICAgIDE3MDA6IDQxIDExIDQ1IEM4
IDBCIDgwIDBDIDQ2IDRGIDREIDQyIDAxIDAwIDAwIDAwIDcwICBBLkUuLi4uRk9NQi4uLi5wCiAg
ICAxNzEwOiAwQyAwMCAwMCA2QyA0NSAwMCAwMCA0NCA1MyAwMCAwMSAxQSA3RCBEQSA1NCAxOCAg
Li4ubEUuLkRTLi4ufS5ULgogICAgMTcyMDogRDQgQTEgMDAgMDEgMDYgMTggNDIgMTAgMTEgMTAg
MjIgMjEgMzAgMzQgMzIgMEIgIC4uLi4uLkIuLi4iITA0Mi4KICAgIDE3MzA6IDAzIDYzIDA0IDhB
IDBCIDIxIDA3IDEwIDEyIDA3IDg1IDEyIDAyIEExIEZFIDA0ICAuYy4uLiEuLi4uLi4uLi4uCiAg
ICAxNzQwOiBGMiAyQiAwMCBFMSAxNiBDQSAxNCA2MCA1MCA4MCA1MyAwNCAxMSBGNCAyQSBDMCAg
LisuLi4uLmBQLlMuLi4qLgogICAgMTc1MDogQTYgMDAgOTMgMDIgMkMgMEEgRDAgMkUgQzAgQjIg
MDAgREQgMDIgQTQgQzMgMTIgIC4uLi4sLi4uLi4uLi4uLi4KICAgIDE3NjA6IDkxIEUwIDI4IDMx
IEUwIDI4IDlEIEQ4IEMyIDBEIDFCIEJDIDUwIDE0IENEIDIwICAuLigxLiguLi4uLi5QLi4gCiAg
ICAxNzcwOiA0QSA4MiBDQSAwNSBGOCA0NiAxMCA3OCBCOSAwMiAyNCA0RiA0MCA5QSAwNSAxOCAg
Si4uLi5GLnguLiRPQC4uLgogICAgMTc4MDogMTYgNjAgNUQgODAgRUMgMjEgNTAgQTkgNDMgNDAg
QzkgMTkgMDIgNkEgMDAgQUQgIC5gXS4uIVAuQ0AuLi5qLi4KICAgIDE3OTA6IDRFIDQwIEY4IDk1
IDRFIDA5IDQ5IDEwIENFIDU4IEM1IEUzIDZCIDE2IDREIENGICBOQC4uTi5JLi5YLi5rLk0uCiAg
ICAxN0EwOiA0OSBDRSAzMSBFNCA3OCA1QyBFOCA0MSBGMCA1MCAxQSA0MCA5OCBGQyAyMSAyQiAg
SS4xLnhcLkEuUC5ALi4hKwogICAgMTdCMDogMDYgMEMgNEEgQzIgNTggQTggOEIgNTEgQTMgNDYg
Q0EgMDYgNjQgODggRDIgNDYgIC4uSi5YLi5RLkYuLmQuLkYKICAgIDE3QzA6IDhEIDFFIEQwIEY5
IDFEIEM5IEQ5IDFEIEREIDkxIDI0IDMwIEVBIDMxIDFEIDYzICAuLi4uLi4uLi4uJDAuMS5jCiAg
ICAxN0QwOiA2MSAzMyAxMiA2QSA4QyBFNiBBMCA0OCBCOCA0MSBBMyAyNSBDMiA2QSA1QyBCMSAg
YTMuai4uLkguQS4lLmpcLgogICAgMTdFMDogQ0YgQ0MgQzIgODcgMjUgOEMgMjMgMzggQjAgODMg
QjUgNjggMTggQTEgMTUgMDQgIC4uLi4lLiM4Li4uaC4uLi4KICAgIDE3RjA6IEE3IDQxIDFDIDQ1
IDk0IDMwIDBDIENGIDk4IDgxIDhFIDkyIDIxIDg1IDA5IDdBICAuQS5FLjAuLi4uLi4hLi56CiAg
ICAxODAwOiAwMiA0MSA0RSA5RSA2MSAxOSBFMiAwQyAzOCA1NiA4QyA1MCAyMSAzMSAwMyAwOSAg
LkFOLmEuLi44Vi5QITEuLgogICAgMTgxMDogRkUgRkYgM0YgODEgQUUgMzEgRTQgMTkgODggREMg
MDMgNEUgMjAgNDggRjQgMjggIC4uPy4uMS4uLi4uTiBILigKICAgIDE4MjA6IEMxIDhEIDZCIDU0
IDM2IEE2IEIzIEMxIDBEIENDIDA0IDcxIDBFIDBGIDIzIDAzICAuLmtUNi4uLi4uLnEuLiMuCiAg
ICAxODMwOiA0MiAxMyA4OCAxRiAzQiA3QyAwMiBCQiAzRiAwRSA0OCAyMSA4MiAyRSAwNCA2NyAg
Qi4uLjt8Li4/LkghLi4uZwogICAgMTg0MDogNUEgQTMgMDAgNkIgNjcgMDcgRDkgODIgRDAgNTkg
MjAgNTYgNjMgMjggODIgODggIFouLmtnLi4uLlkgVmMoLi4KICAgIDE4NTA6IDEwIDM0IDhBIEYx
IDIyIDg0IDBBIDExIDI1IEVBIDM5IDA3IEE5IDREIDgwIDMyICAuNC4uIi4uLiUuOS4uTS4yCiAg
ICAxODYwOiAxMCBBMSAwNSAzMyAwMiBCMyA3RiAwNiA2MCAxNiAyMCBGRSAwOCAyQyBFMSA0NCAg
Li4uMy4uLi5gLiAuLiwuRAogICAgMTg3MDogMjAgMjMgQTMgQTEgODcgMDUgOUYgMDQgRDggMDEg
QzEgRjMgMzkgMzUgMTMgMzggICAjLi4uLi4uLi4uLjk1LjgKICAgIDE4ODA6IDMwIDg0IDc4IDI1
IDQwIEQ0IEQxIDgyIDEyIDU4IENBIEQxIDgwIEQ4IDFFIDk4ICAwLnglQC4uLi5YLi4uLi4uCiAg
ICAxODkwOiBFRSAwMSA0NyA3OCBFRSBCRSAxQyA5QyA5QSA3RiAxQSA5RSBFNiA0MyAwMiA2NiAg
Li5HeC4uLi4uLi4uLkMuZgogICAgMThBMDogODggMUUgRUIgNDEgMDQgM0MgNDQgNzYgNEEgMzAg
MjAgREUgRkIgQjUgODAgOEMgIC4uLkEuPER2SjAgLi4uLi4KICAgIDE4QjA6IEUwIDI1IEMxIDgw
IDlFIEM0IDAzIDAyIDU4IDBFIDFBIDA3IDdFIDQyIDE1IERGICAuJS4uLi4uLlguLi5+Qi4uCiAg
ICAxOEMwOiAwMSBFOCA5MSA4MCBDRCAyOCBCRSAwOSBDQSAzQSAzRSBBMCBFNyAxQyBFRCBEOSAg
Li4uLi4oLi4uOj4uLi4uLgogICAgMThEMDogRTEgNjUgQTEgRDkgMkIgMDYgMjEgNzggMEQgRjAg
NEQgQzEgQTcgMTEgOEIgNUEgIC5lLi4rLiF4Li5NLi4uLloKICAgIDE4RTA6IDlEIDlDIEFDIENB
IDIzIEE2IEUwIDFFIDAyIDk3IDAxIEE3IEExIDdCIEJDIEUwICAuLi4uIy4uLi4uLi4uey4uCiAg
ICAxOEYwOiA1MCAzMCA1RSBGQSBGRiAxRiAyRiBCOCBFNyA3NSBCQyA2MCAzOSAyNiAzQyA2QyAg
UDBeLi4uLy4udS5gOSY8bAogICAgMTkwMDogNTQgMDUgQTEgNDEgMUMgNzAgRjMgMDMgMjAgNTcg
MEIgOEYgOTggQ0QgRTUgQUMgIFQuLkEucC4uIFcuLi4uLi4KICAgIDE5MTA6IEQ4IDExIDg1IDBG
IDhGIDBGIEMzIDIzIDdFIDZGIDI4IDE2IDQ0IDAyIDIxIDc0ICAuLi4uLi4uI35vKC5ELiF0CiAg
ICAxOTIwOiA2NiAzOCA3MiBCMCAzOCAzQiA0MSA4OCBDMCBEMiA4NiA4RSAxRSBCMiA0NyBGNSAg
ZjhyLjg7QS4uLi4uLi5HLgogICAgMTkzMDogMTIgNjMgOEMgMjcgMDIgQTMgOUUgRDIgRDEgODMg
MEYgRDAgQTMgMDcgN0MgRkUgIC5jLicuLi4uLi4uLi4ufC4KICAgIDE5NDA6IEZGIDQ3IDhGIDkz
IDM0IDY2IDg5IDE4IDNEIEZBIDFDIEUxIEU5IEJDIEZEIEYwICAuRy4uNGYuLj0uLi4uLi4uCiAg
ICAxOTUwOiBBMyA0OCAwMiBDNyA4NyBEMCBFOCBDMSA3MyBGQSBGMSBFOCBDMSAzRiA0NiA4RiAg
LkguLi4uLi5zLi4uLj9GLgogICAgMTk2MDogMUUgM0MgNjMgMzggMzcgREMgRDUgQzYgMjMgMDcg
RkIgNzggRjEgRjIgOEUgNUIgIC48Yzg3Li4uIy4ueC4uLlsKICAgIDE5NzA6IEEwIEYwIDM5IDdC
IDMyIDgwIEY3IDIwIERDIDc5IDBCIEI4IDhDIDgwIENCIDNEICAuLjl7Mi4uIC55Li4uLi49CiAg
ICAxOTgwOiA1NyBBMSAwNCAxRSBBRCA0MCBGQiBGRiAzRiA1QSAwMSA0QyBCOCAzRiBCQyA1QSAg
Vy4uLi5ALi4/Wi5MLj8uWgogICAgMTk5MDogM0QgNUEgODEgM0QgRTIgNzMgNDAgM0YgMDIgQzcg
ODYgOTAgOTMgQTMgMTUgRUEgID1aLj0uc0A/Li4uLi4uLi4KICAgIDE5QTA6IDY0IDg0IDBCIDdB
IEIwIDAyIEJBIDA3IDBEIERDIEYxIDAwIENFIEZGIEZGIDc4ICBkLi56Li4uLi4uLi4uLi54CiAg
ICAxOUIwOiBDMCAwNyBDNiA0RiAyRiBFMCAzQiBCMyA3OCBBQyAzOCA2OCA4NiA3OSAyMCBBNyAg
Li4uTy8uOy54LjhoLnkgLgogICAgMTlDMDogRTYgNkIgMjAgMEIgM0IgNUEgNTAgMUQgQUIgODAg
QzMgQjkgMTIgMzcgNUEgQjggIC5rIC47WlAuLi4uLi43Wi4KICAgIDE5RDA6IDQzIEMzIDhGIDE3
IDdDIDIyIDRFIDUyIDNFIEQ0IDQxIDNGIDgwIDdBIEJDIEUwICBDLi4ufCJOUj4uQT8uei4uCiAg
ICAxOUUwOiAzOSA0OCAwMSA4NyA0MyAxRCBGOCBGRSBGRiA4NyAzQSAzOCA0MyAwNiA5RiBCQyAg
OUguLkMuLi4uLjo4Qy4uLgogICAgMTlGMDogQjMgMTggRkEgM0MgRTMgMjkgRDQgN0EgODkgMjEg
QjAgMDcgRTQgOTMgNDggOTAgIC4uLjwuKS56LiEuLi4uSC4KICAgIDFBMDA6IDEzIDg5IDcwIDJF
IDNFIDhEIDgxIEVEIDAwIDA1IDFDIDRFIDYzIEUwIEI5IEE0ICAuLnAuPi4uLi4uLk5jLi4uCiAg
ICAxQTEwOiBCMCBEQiAxOCAxOCAwRSA1MSBGMCAyNiBFNSBGMSA4MyBFRiBENCA4NCAzQiA0NCAg
Li4uLi5RLiYuLi4uLi47RAogICAgMUEyMDogQzEgRjMgMzggMjQgMjEgOUYgQzcgNEIgMDAgRUUg
MUUgODUgM0YgNDcgODEgRjcgIC4uOCQhLi5LLi4uLj9HLi4KICAgIDFBMzA6IEZGIDdGIDhFIDgy
IDI3IDZCIEExIEY0IDEwIDY1IDIxIDMwIEE4IDczIDE0IEMwICAuLi4uJ2suLi5lITAucy4uCiAg
ICAxQTQwOiAxNCA2RiBCNyAwRCBERCBBMiA3QyAxQiA3OCAxQSA3OCA4RCA4OCBGMiAxQyBFNSAg
Lm8uLi4ufC54LnguLi4uLgogICAgMUE1MDogOEIgRDQgMEIgNDEgODQgMjggQzcgN0IgMDIgMTEg
MUUgQTYgM0MgRTEgMzAgRTEgIC4uLkEuKC57Li4uLjwuMC4KICAgIDFBNjA6IDRFIDM2IENBIDRC
IDQzIDE4IDQzIEM3IDBBIDE0IDM5IDdFIDA4IDVGIDJBIDdDICBONi5LQy5DLi4uOX4uXyp8CiAg
ICAxQTcwOiA4RSA2MiA1MSBDRSAwMyBGQSAxMSBGOCBGQyA2MSAyMyA2NyAxMSBENCA0OSBDMCAg
LmJRLi4uLi4uYSNnLi5JLgogICAgMUE4MDogODcgMEUgMEYgRUEgMDkgMDEgMTMgRkEgNjAgMDgg
QUEgRkYgRkYgNDkgMEEgMzggIC4uLi4uLi4uYC4uLi5JLjgKICAgIDFBOTA6IDFGIDQwIEUwIDg1
IDNDIEYzIDgyIEVFIDQ0IDBGIDhFIDMzIDYxIEU0IEI4IDBGICAuQC4uPC4uLkQuLjNhLi4uCiAg
ICAxQUEwOiAzNCBEOCBCMyAwNyBGMCA5MSA3NiBGMCA0MCA4OSAzOSA3QiAwMCBCQSBGRSBGRiAg
NC4uLi4udi5ALjl7Li4uLgogICAgMUFCMDogNjcgMEYgQzAgQzIgNjUgRTMgREQgQzMgOTcgOUUg
MzMgN0QgRjYgRjAgNUMgREYgIGcuLi5lLi4uLi4zfS4uXC4KICAgIDFBQzA6IDM5IDdDIDJBIDM0
IDhBIDIxIERFIDNGIDdDIDI4IDg4IDEyIEYxIDVDIEEzIDFDICA5fCo0LiEuP3woLi4uXC4uCiAg
ICAxQUQwOiA3MiA5NCBCOCAxMSBDMiAzQyAxRSAxQSAyNyA0NiBBOCAwOCAwQyBGNCBEOSA4MyAg
ci4uLi48Li4nRi4uLi4uLgogICAgMUFFMDogQzUgMzkgN0IgNDAgQzUgM0UgOUIgMzcgOEUgMDgg
QUYgMDEgRTcgNzggM0UgM0UgIC45e0AuPi43Li4uLi54Pj4KICAgIDFBRjA6IDdCIDAwIERFIEE0
IDNDIEZEIDc0IEY2IDAwIEQ3IDA5IDE4IDc3IEY2IEMwIEZEICB7Li4uPC50Li4uLi53Li4uCiAg
ICAxQjAwOiBGRiBDRiAxRSBCOCA3MSA2MyA0RiAxRiBDMCA0RSA4NCA4NyBBMyAwNyAyNiBGNiAg
Li4uLnFjTy4uTi4uLi4mLgogICAgMUIxMDogRjkgMTYgQTAgRDAgRTEgRTMgRjkgMTYgQUMgRkYg
RkYgODMgMTQgMTcgRkUgQjIgIC4uLi4uLi4uLi4uLi4uLi4KICAgIDFCMjA6IEQ0IEE3IEMwIEMx
IDBGIEE5IEU4IEUxIEY4IDM4IDg3IDM5IEUwIDAyIDZDIDNFICAuLi4uLi4uLi44LjkuLmw+CiAg
ICAxQjMwOiA1QSBGQiBGRiA3RiBCNCBDNiAwMyA4NyBGNCA1MSAwMSA2QyBDNyA1QiBFMCA3MCAg
Wi4uLi4uLi4uUS5sLlsucAogICAgMUI0MDogNTQgMDAgQ0YgQzAgRjggNTggODEgQzUgQzQgMUUg
NUQgOEUgMTUgNkMgODcgNUEgIFQuLi4uWC4uLi5dLi5sLloKICAgIDFCNTA6IEUwIDMwIDU2IDMw
IDBEIDhDIDhEIDE1IDdDIDEyIDhFIEQ1IEU4IDMxIEZBIEQ2ICAuMFYwLi4uLnwuLi4uMS4uCiAg
ICAxQjYwOiA3MyA0MCA5RSA0NyA4NCBCMCBCRSBDMiAyNCA3MCA1QyAwOCBGRCBGRiA4NyAwQiAg
c0AuRy4uLi4kcFwuLi4uLgogICAgMUI3MDogMUUgNTAgMEYgMTcgRkMgRjIgODYgMEIgOUEgQjEg
QzEgMTkgMzEgRjggNEUgNUUgIC5QLi4uLi4uLi4uLjEuTl4KICAgIDFCODA6IDNFIDA2IDgzIEU1
IDEyIEMxIENFIDAyIDZDIDNBIEY4IDlCIDMwIEZFIEM4IDA1ICA+Li4uLi4uLmw6Li4wLi4uCiAg
ICAxQjkwOiA4QyAwMiA5OCAwMCA2MSAzMiA0RiAwNyA5MiAwQyA4MyAzQSA3MiAwMSBBNyAxMCAg
Li4uLmEyTy4uLi46ci4uLgogICAgMUJBMDogMDcgMDIgMjggRkYgRkYgMjMgMTcgRjAgNTMgM0Eg
MjUgNEQgRkEgRkQgMUIgNzcgIC4uKC4uIy4uUzolTS4uLncKICAgIDFCQjA6IENDIDAyIDFCIEMy
IDYzIDE2IEJGIDMwIEZBIDk4IDA1IDQ2IDMxIDRCIEQxIDU4ICAuLi4uYy4uMC4uLkYxSy5YCiAg
ICAxQkMwOiAyQyBFNyBDQyBFOCA1MyAwNyBFQSA2QyBFMSAzMyBDMCAxOSAxRSBEOCBCMyBDNiAg
LC4uLlMuLmwuMy4uLi4uLgogICAgMUJEMDogRjEgOUUgNDIgRUQgQzMgMjQgNzMgRjUgNzUgRkQg
MDkgODAgOUYgMUIgN0QgRDYgIC4uQi4uJHMudS4uLi4ufS4KICAgIDFCRTA6IDAyIEFFIDI3IDg0
IDY3IDJEIEYwIERDIDA3IDdDIDBEIEUwIDEzIDM5IDNFIDM4ICAuLicuZy0uLi58Li4uOT44CiAg
ICAxQkYwOiBFNyA0NiBGMCBGQyBGRiBDRiA1MiA5NiAzNSA2RSBCNCAyNCAxMCAxRCAzMiAyMiAg
LkYuLi4uUi41bi4kLi4yIgogICAgMUMwMDogOUUgRTkgNDEgQkMgRDYgRjkgMDQgRkMgOEEgMTAg
RkIgMUQgQzMgMzcgMDUgNEYgIC4uQS4uLi4uLi4uLi43Lk8KICAgIDFDMTA6IEM0IEY3IDNBIDEz
IDhDIDdFIEVDIDAyIEJBIEE3IDE0IERDIEMwIEUxIDhFIDBGICAuLjouLn4uLi4uLi4uLi4uCiAg
ICAxQzIwOiA3NyBBNCBDMCAwRiAxMSBDRSBEOCBDMSAyNSBGQyAxNCA4QiAzRSA0MiBGMCA2MSAg
dy4uLi4uLi4lLi4uPkIuYQogICAgMUMzMDogNjAgQjEgMDMgQkYgMTMgNjAgRTQgNDEgRUIgMjQg
MEIgOUUgMzMgMTggNzAgODggIGAuLi4uYC5BLiQuLjMucC4KICAgIDFDNDA6IDMwIDc0IEQwIERD
IDQ0IENFIEUyIEZGIDFGIDJDIDRFIEI0IDkzIDM4IDlGIDQ4ICAwdC4uRC4uLi4sTi4uOC5ICiAg
ICAxQzUwOiBFNyAxNyAyQyA0QSA3NSAzMyA4NyAwMCA3NCA5MCAzOCA5QyAzNyAxRiA4RiBDRSAg
Li4sSnUzLi50LjguNy4uLgogICAgMUM2MDogMzAgQkUgNjEgQjIgN0IgMDAgQkYgRUYgNzggMkUg
MDcgRTYgRTMgMkQgQkMgMjMgIDAuYS57Li4ueC4uLi4tLiMKICAgIDFDNzA6IDgzIDBGIDAzIEUw
IDEyIDNEIDdFIDI5IDM5IDBDIEEwIDA2IDY5IEQ4IEQzIDM5ICAuLi4uLj1+KTkuLi5pLi45CiAg
ICAxQzgwOiBGRCAwMyAzQiBCMiBFNiBFMSAzNSBBQSBENyAxRCA5RiA4QyAxRSAwNSBDMCA3NiAg
Li47Li4uNS4uLi4uLi4udgogICAgMUM5MDogNDQgMDMgMEUgMDEgOEUgMDIgNDAgNjggOUEgMzgg
OUMgRTMgQzQgMUMgNUYgN0QgIEQuLi4uLkBoLjguLi4uX30KICAgIDFDQTA6IDBGIDYyIEQ3IDE1
IDYzIEJFIDUxIDU1IDdGIDEyIDgwIDdFIEY4IDAyIENGIEZGICAuYi4uYy5RVS4uLn4uLi4uCiAg
ICAxQ0IwOiBGRiBGMiBGMyBGQSA5MyBDMCA0MiA4RiAwMiA1MCBBMCA1RiBCRCA3QyBBQiA3OSAg
Li4uLi4uQi4uUC5fLnwueQogICAgMUNDMDogNTYgNjAgQjggQTcgNzQgNTYgMDkgMkMgRTkgMjgg
MDAgQUEgRTMgMUIgNzAgQjggIFZgLi50Vi4sLiguLi4ucC4KICAgIDFDRDA6IDQ5IDNEIDBBIDgw
IDdGIDhBIDBDIEU0IDE4IEIxIEY3IDBCIDdFIDZBIEIzIENCICBJPS4uLi4uLi4uLi5+ai4uCiAg
ICAxQ0UwOiA0MyAwMCBEMCAzOSA0QyA5MSA0MyAwMCA2QSA5OCA5RSAzNiAzRiBDRSBGMiAxMyAg
Qy4uOUwuQy5qLi42Py4uLgogICAgMUNGMDogMDAgNzggNDAgN0QgMDIgMDAgRkYgQkQgRDcgMjcg
MDAgMzggRkYgRkYgMTMgMDAgIC54QH0uLi4uLicuOC4uLi4KICAgIDFEMDA6IEZFIDhBIDgyIDFG
IDFEIDZFIEUwIEYwIDhFIDFDIDNFIEE1IDgwIEVCIEM4IDg4ICAuLi4uLm4uLi4uPi4uLi4uCiAg
ICAxRDEwOiAzQiAxNyBDMiAxQiAxMiAzQiAxMCAwMiBDMyBBMCA3QSA4RSA4NCBGNCA3MCAyMCAg
Oy4uLi47Li4uLnouLi5wIAogICAgMUQyMDogNTEgRUIgQTQgMzAgM0UgMEQgRjggNDAgMDggRjcg
RTQgNjUgMzggM0UgNDIgMEYgIFEuLjA+Li5ALi4uZTg+Qi4KICAgIDFEMzA6IEZEIDIxIEUyIEM5
IEM3IEY3IDAzIDRGIEVFIEM5IDEwIEM2IDM5IEMxIDc3IDE1ICAuIS4uLi4uTy4uLi45LncuCiAg
ICAxRDQwOiA3NiAzNyA3QiBENiBGMyBCOSBDQSAwNCAzRSAyQyAzMCAzNCA3RSA0QyAwNCBFQiAg
djd7Li4uLi4+LDA0fkwuLgogICAgMUQ1MDogOEQgQzEgODcgNjcgQjAgREMgMTEgMzEgNTggQ0Yg
MUQgMzYgMkEgRTAgRkYgN0YgIC4uLmcuLi4xWC4uNiouLi4KICAgIDFENjA6IDRCIEY3IDVEIEM2
IEJFIDg2IEExIDNCIEE3IDBGIDcxIEJFIDc0IEYwIEUzIDNBICBLLl0uLi4uOy4ucS50Li46CiAg
ICAxRDcwOiBFRSA3NCAwOCAyRSBFQyA2NyA3QSBCMCA4NyAzQSA3MCBEMiA0OCBBMyA0MSAxRCAg
LnQuLi5nei4uOnAuSC5BLgogICAgMUQ4MDogMTUgN0MgMjggRjAgMzEgQzUgMDMgN0MgQTkgRjAg
MDkgQzUgRDMgN0EgNUMgNzggIC58KC4xLi58Li4uLi56XHgKICAgIDFEOTA6IDFBIEYwIEI4IEQ5
IDM1IEMxIDFGIDA0IDFGIDBGIEYwIDA3IDg4IDgwIEFGIDM3ICAuLi4uNS4uLi4uLi4uLi43CiAg
ICAxREEwOiAzRSA3QSBDMCAzOSA4MiBFMCA4RiAyQSBGMCBDNyBFMyA2MyA4MCA4RiBCNSA1QyAg
PnouOS4uLiouLi5jLi4uXAogICAgMURCMDogRkUgMjAgNTAgMDcgNzggM0UgRDIgRDMgN0EgMUIg
RjAgMjEgRTEgQjAgRDggMDkgIC4gUC54Pi4uei4uIS4uLi4KICAgIDFEQzA6IDg2IDhGIDA3IEZD
IDA3IEIyIDg3IDBDIDVGIDE5IDNDIDVGIDFGIEREIEIxIDQ3ICAuLi4uLi4uLl8uPF8uLi5HCiAg
ICAxREQwOiAxMCA3OCBCNyAwRSAxRiAxQSA0MiAzRCA3NSA3OCAwNiBFRiAxNyAzRSA4MSA2MCAg
LnguLi4uQj11eC4uLj4uYAogICAgMURFMDogRkYgRkYgMjcgMTAgNzAgNDcgNzEgMDMgRjEgNzMg
NkIgQTEgRUIgOTQgOEQgQjMgIC4uJy5wR3EuLnNrLi4uLi4KICAgIDFERjA6IDBFIDNEIDBGIDU4
IEVFIDAxIDQxIEQ3IDA4IENDIDBEIDIyIDg4IDhGIDQ1IEJFICAuPS5YLi5BLi4uLiIuLkUuCiAg
ICAxRTAwOiA1MSAzMCA4MiAwMiAwMSA3NSBGOCAzNCA4NCBBNSA1MSA0OCAxOCA4NCA0NiBFNCAg
UTAuLi51LjQuLlFILi5GLgogICAgMUUxMDogQTMgMDcgODEgQTMgMjAgMUUgQkQgNjMgMUUgQ0Yg
RDEgNDMgRjUgMzEgQzAgOTMgIC4uLi4gLi5jLi4uQy4xLi4KICAgIDFFMjA6IEMwIDg1IDNBIEE0
IEQxIEUzIDAyIDFFIEVGIDg4IDRFIENEIEQzIEYwIEQ4IDcxICAuLjouLi4uLi4uTi4uLi5xCiAg
ICAxRTMwOiAyNyAwRiBCOCBFMyBDMCA5RiA3NiBGMCAxNyA4MCA1NyAyMCAxMyBCMCA1MyAzNSAg
Jy4uLi4udi4uLlcgLi5TNQogICAgMUU0MDogRjggMDQgMUUgMEUgNDAgMDEgRTQgRkIgODAgMEYg
M0MgQ0YgMDQgNkMgMEUgMjEgIC4uLi5ALi4uLi48Li5sLiEKICAgIDFFNTA6IEMyIDQ0IDMzIDND
IDI2IEYwIDMxIDhDIDlFIDg2IDNDIDJFIDNFIDRBIDlGIDYxICAuRDM8Ji4xLi4uPC4+Si5hCiAg
ICAxRTYwOiBEOCAwOSBDRSBENyA2MiAwRiBGMCBFNSBFMCBCOSAxNiAwMyBFQiA3MSA3MyA1OCAg
Li4uLmIuLi4uLi4uLnFzWAogICAgMUU3MDogQTMgM0QgRUUgRkEgOEEgRjAgRkYgN0YgOTggRjMg
QTEgQ0IgNTcgMjcgQzMgRkEgIC49Li4uLi4uLi4uLlcnLi4KICAgIDFFODA6IEU0IDAxIDhFIEIz
IDE0IEZDIEExIEUyIENFIDAyIDcwIDBGIEU0IDZDIDBFIDRGICAuLi4uLi4uLi4ucC4ubC5PCiAg
ICAxRTkwOiAwMyA3OCA5OSA4NyAwOCBENCA0MCAyQyA3MiA4MSAzQSBBRSA3OCAyNCAyNiBGMCAg
LnguLi4uQCxyLjoueCQmLgogICAgMUVBMDogNTEgRDEgMDcgMDggN0UgN0UgRjAgMDEgRDcgMDcg
MDggMkUgMDQgOEUgODIgRjggIFEuLi5+fi4uLi4uLi4uLi4KICAgIDFFQjA6IDAwIEUxIDkwIDEw
IDNBIEU3IEUyIDhFIDAzIDNFIEMwIDMwIDg4IDA3IDgzIDA3ICAuLi4uOi4uLi4+LjAuLi4uCiAg
ICAxRUMwOiA1NiA3NiA5NCBGMSAwMSAwMiA3OCA4QyAwMyA3RiA4MCA4MCA3QiBGQSAwMiBENyAg
VnYuLi4ueC4uLi4uey4uLgogICAgMUVEMDogRjkgMDEgNzggMDQgM0YgM0YgQTAgRkYgRkYgRTcg
MDcgRjggODcgNTMgN0UgN0UgIC4ueC4/Py4uLi4uLi5Tfn4KICAgIDFFRTA6IDAwIDlFIDAzIDdD
IDE0IDAwIENCIDk5IDhDIENEIEUxIEE1IEU2IEI1IEQzIDg3ICAuLi58Li4uLi4uLi4uLi4uCiAg
ICAxRUYwOiAyMSA3NiA5QyA2NyA0NyA3QSBBRSA2QiAwNCAyNCBFMiAxOSAwMiAzNSAwOCBDNyAg
IXYuZ0d6LmsuJC4uLjUuLgogICAgMUYwMDogMzkgMzYgRTggMzggQzEgNkUgRDkgMEYgNDEgNTUg
QTMgMDggREUgQjcgMDIgMTYgIDk2Ljgubi4uQVUuLi4uLi4KICAgIDFGMTA6IEUxIDE4IDgxIDEy
IDRGIDIxIEU5IEM3IDA4IDk0IDU4IDM4IDBBIEUyIDUxIEZCICAuLi4uTyEuLi4uWDguLlEuCiAg
ICAxRjIwOiAyMCA2MSAxQiBDNyAwOCBENCAxOCAzRCBCMCA3NyAzQiA3NiAxNCBFMCBBNyAwOCAg
IGEuLi4uLj0udzt2Li4uLgogICAgMUYzMDogRjggQTcgMzAgREMgRDEgMDMgMUMgMTcgQjEgNDMg
M0IgQkIgNDcgNEMgNjMgOUUgIC4uMC4uLi4uLkM7LkdMYy4KICAgIDFGNDA6IDQxIEM0IDA4IEFG
IEFFIDQ2IEYzIDE4IDcxIEU3IDREIDVGIDBGIDdEIEE0IEYwICBBLi4uLkYuLnEuTV8ufS4uCiAg
ICAxRjUwOiBBMSAxRCA3MyBBNCA4MCBGNyBGRiAyNyBGMCBCOSAxMSA3NyBBNCA4MCAzMyA5MyAg
Li5zLi4uLicuLi53Li4zLgogICAgMUY2MDogRjMgQzAgREMgNDEgOEYgMjUgQkMgQUYgODUgRjgg
ODMgMDUgRjAgMzggMkUgRjkgIC4uLkEuJS4uLi4uLi44Li4KICAgIDFGNzA6IDYwIDAxIDJFIDQ4
IDFGIDJDIDgwIEVCIEY5IEMwIEE3IDAzIEIwIDVFIEM4IEY4ICBgLi5ILiwuLi4uLi4uXi4uCiAg
ICAxRjgwOiBGRCAwMCBDNiAwOSAwMyBDNiBGOSAwMCA3MyBDMyA3MCBBQyA5NSBFQSA4NCA4MSAg
Li4uLi4uLi5zLnAuLi4uLgogICAgMUY5MDogOEIgRjUgQTAgRDAgNDAgRDggRjAgOUUgN0YgOUUg
MEMgRjkgNjEgODYgNDUgODEgIC4uLi5ALi4uLi4uLmEuRS4KICAgIDFGQTA6IEQzIEQxIEMyIDI3
IDBCIDg3IEEwIEQwIDQxIENDIDI3IDBDIDJFIEU2IDg0IDQxICAuLi4nLi4uLkEuJy4uLi5BCiAg
ICAxRkIwOiA0MSAwQyBFOCBBNCAxMCBGQSBGRiA5RiBDMyA3MCBBNyA0RCAxRiAxQiA1OCBCOCAg
QS4uLi4uLi4ucC5NLi5YLgogICAgMUZDMDogRkIgMDUgOUQgOEIgRTcgQ0MgRjEgN0MgMEUgMzEg
QUMgNkYgMjYgRTAgQjkgNTIgIC4uLi4uLi58LjEubyYuLlIKICAgIDFGRDA6IEIwIDMzIDhGIDJG
IDA0IEJFIDREIEYyIDAzIDI3IDNCIDE2IDE4IEU1IDc4IDVGICAuMy4vLi5NLi4nOy4uLnhfCiAg
ICAxRkUwOiAwQiBBRCBFNiBBRSA4MCA5QSAxMSA4NiBDMCAwMyBGNiA0OSAwQyA0QyBGQSA2RSAg
Li4uLi4uLi4uLi5JLkwubgogICAgMUZGMDogMTQgMjAgNDcgRTcgNjcgNkUgOEYgOUUgMUYgMDAg
N0MgQjQgRTMgQTMgNzcgNkMgIC4gRy5nbi4uLi58Li4ud2wKICAgIDIwMDA6IDA4IDFEIDU3IEUw
IDFFIEVFIDdDIDg2IDAyIEJFIDAzIEYzIDBDIDlGIDUwIEMwICAuLlcuLi58Li4uLi4uLlAuCiAg
ICAyMDEwOiA3NSA3RiBFMCBFNyBDMiBGRiBGRiBGQiAwMyBFNiAyQyAwQyBFMyA5NCAwMiAzQyAg
dS4uLi4uLi4uLiwuLi4uPAogICAgMjAyMDogNDYgRUYgNTMgMEEgQjggMEUgMDAgM0UgQTUgMDAg
RDcgMzkgM0UgQzggODMgMDcgIEYuUy4uLi4+Li4uOT4uLi4KICAgIDIwMzA6IEM1IEY3IDVGIDRG
IEM0IEM2IDg3IDRGIDJGIDI4IDFFIENCIDlCIDM3IDBGIDc1ICAuLl9PLi4uTy8oLi4uNy51CiAg
ICAyMDQwOiAzNiA0MSA0NyA3QiAzRCA2OCBEMCAwRiAyQSA5RSA3RCBGOCBFMyA4QiBGMCA3QyAg
NkFHez1oLi4qLn0uLi4ufAogICAgMjA1MDogRUEgNzEgQjEgMzggNjcgMTMgNTQgMTAgMEEgMUQg
M0IgN0QgOUMgRTAgOTIgOEUgIC5xLjhnLlQuLi47fS4uLi4KICAgIDIwNjA6IDEzIDE0IEM0IDgw
IENFIDdCIEM0IEYzIDIxIDFFIDdEIEVBIEYzIDJEIEUxIDM4ICAuLi4uLnsuLiEufS4uLS44CiAg
ICAyMDcwOiA5RSA0MCAxMiBDQyA3NyAxMiBBMCA5NyAxMyA3OCBBNyA3MSBEQyA0OCA3MSBGRiAg
LkAuLncuLi4ueC5xLkhxLgogICAgMjA4MDogRkYgQ0IgMDkgOEMgMDMgOEQgNjcgQzEgMTAgREUg
QUMgRDkgNzEgMUQgMUUgOEMgIC4uLi4uLmcuLi4uLnEuLi4KICAgIDIwOTA6IEFGIDI3IDMwIEVG
IDc5IEUwIDNBIDlFIDAwIDBCIDk5IDA3IDAwIEQ0IEIxIEQxICAuJzAueS46Li4uLi4uLi4uCiAg
ICAyMEEwOiAwNyA0NyA3RSAwMCA3MCBFOCBFMyAwOSA3QSAyNiAzRSAxNiAzRCA5NSBGOCAwMiAg
Lkd+LnAuLi56Jj4uPS4uLgogICAgMjBCMDogQzAgQ0YgNkUgM0EgOUYgODAgRTIgOUMgMDkgOUUg
NzEgQjAgMkIgMDAgRkUgODQgIC4ubjouLi4uLi5xLisuLi4KICAgIDIwQzA6IDAyIEZCIDQ4IDA2
IEJFIDg5IEY4IDU0IDcxIDIwIEQ4IEQzIDA5IEY4IEZFIEZGICAuLkguLi4uVHEgLi4uLi4uCiAg
ICAyMEQwOiAyNyA1OSBFMCAwMSBDQiA0RiBCMiA4MCA4RiBEQiAwOCA3NiAxNiBDRiAyNCA4QyAg
J1kuLi5PLi4uLi52Li4kLgogICAgMjBFMDogNjAgRTQgQTMgMDkgRUEgODggRUMgQTAgQTcgMzAg
QzQgMzggMUYgMkIgOEMgMTEgIGAuLi4uLi4uLjAuOC4rLi4KICAgIDIwRjA6IEI5IEY4IDUxIDZC
IDMyIDNFIDlCIEY5IEIyIENFIDBFIDNGIDM4IDgyIDgxIDBFICAuLlFrMj4uLi4uLj84Li4uCiAg
ICAyMTAwOiAyOCBBOCBFMyA5OCBDRiA2MiA4MCBCMyBGRiBGRiA1OSAwQyBGOCA5RiBERCAzRCAg
KC4uLi5iLi4uLlkuLi4uPQogICAgMjExMDogN0EgN0UgNkMgRTcgMjAgMUUgQkQgQzMgOUYgQzUg
QTAgODcgM0QgOEIgMDEgNkQgIHp+bC4gLi4uLi4uLj0uLm0KICAgIDIxMjA6IEMxIDY3IDMxIDUw
IERFIDIyIEUwIDlFIDQxIDgxIEQ3IERBIDdDIDQyIDgxIEZGICAuZzFQLiIuLkEuLi58Qi4uCiAg
ICAyMTMwOiBGRiAzRiBBMSBFMCBFRSAwQyAzRSBBMSAwMCBENyAyMyAwMCBFRSAwQyAwQSA4RSAg
Lj8uLi4uPi4uLiMuLi4uLgogICAgMjE0MDogMTMgMDAgRjMgNzUgMDMgQTAgMjAgOEYgMDAgRjgg
MkIgQkMgMEYgMjYgQjggNzggIC4uLnUuLiAuLi4rLi4mLngKICAgIDIxNTA6IDI3IDE1IDE0IDg3
IEUzIDlEIDU0IDEwIDUzIDg5IEZDIEQ2IEUyIDA5IDg0IDNGICAnLi4uLi5ULlMuLi4uLi4/CiAg
ICAyMTYwOiBCOCAzOCBFRiA2NyBGQyA1NCAwNiA0MyBENCBDMSAwMiAyNSBFMyA2MCA0MSA0MSAg
LjguZy5ULkMuLi4lLmBBQQogICAgMjE3MDogMEMgRTggOEMgQTcgMTQgRjQgQTkgOEMgNUYgNDYg
M0MgQjAgMDQgMzMgNUQgNTMgIC4uLi4uLi4uX0Y8Li4zXVMKICAgIDIxODA6IEEwIDVGIDQwIDcw
IDAzIDg2IDBCIEY2IDIwIDYxIDg0IEQ3IDY0IENGIDAzIDczICAuX0BwLi4uLiBhLi5kLi5zCiAg
ICAyMTkwOiA0NCAwMSAxNiBGRiBGRiAyMyAwQSBGMCA5MCAzQyA3NCA5NCBDOCBBMSA1MyAxMCAg
RC4uLi4jLi4uPHQuLi5TLgogICAgMjFBMDogMEYgREQgMzQgM0UgQTIgRTAgQzYgQ0EgMkUgMDQg
QjAgQTIgOUUgNTIgNDAgMjEgIC4uND4uLi4uLi4uLi5SQCEKICAgIDIxQjA6IDcyIEY4IEEwIDE5
IEM3IEQxIDNEIEY1IDc4IDFFIEZDIDRFIEVDIDYzIDFFIERDICByLi4uLi49LnguLk4uYy4uCiAg
ICAyMUMwOiA5MyAwQSBFRSBENCA4OCAzQiBBOSA4MCA2MSA4RSBEOCA1MyAxOSBGMCAzQSA4MiAg
Li4uLi47Li5hLi5TLi46LgogICAgMjFEMDogODIgQ0YgQzMgMjEgMDUgMTQgRkYgRkYgMjMgMjgg
NzAgM0UgQTQgRjAgNjMgMDYgIC4uLiEuLi4uIyhwPi4uYy4KICAgIDIxRTA6IEU2IDZBIEMwIDhG
IEEwIDk4IDk4IENGIDA3IDlEIDRGIEY4IEQxIEMwIDgxIDVFICAuai4uLi4uLi4uTy4uLi5eCiAg
ICAyMUYwOiAwNSAwMiA2NyA2NyA3RCBEQyBFNSBDMCAyNyAwQyAxMyA4QyA3MCA5QSBBMCAxMCAg
Li5nZ30uLi4nLi4ucC4uLgogICAgMjIwMDogMTYgNEYgMjEgRTkgODcgMEEgOTQgNTggMzggMEEg
RTIgNDMgODUgODUgMUMgMkEgIC5PIS4uLi5YOC4uQy4uLioKICAgIDIyMTA6IEQwIEM3IDI4IDdD
IEYwIDEzIDA1IDI4IDJFIDAwIDhGIEVDIEUwIEJEIEFGIEUzICAuLih8Li4uKC4uLi4uLi4uCiAg
ICAyMjIwOiAwNyA4OSBCQiBBOCA3OCBDOCAzRSBCMCA2MyBFNiBFOSBBMyAwNSAzQyAwMiA5RiAg
Li4uLnguPi5jLi4uLjwuLgogICAgMjIzMDogMUUgQzEgMDcgRUYgQzMgMTQgRUUgRkYgN0YgOTgg
MDIgMkUgNjcgM0QgMUYgMkMgIC4uLi4uLi4uLi4uLmc9LiwKICAgIDIyNDA6IEMwIDA1IEVFIDgz
IDA1IDcwIEJEIEZEIEY4IDc0IDAwIEQ2IEQxIDFFIEYzIEY5ICAuLi4uLnAuLi50Li4uLi4uCiAg
ICAyMjUwOiBDNiA3OSAzRiA4MCA3MSA1MyA3OSA4OCBGNCAzRCBDMCBGOCBFQyA3QyA4MCBCRCAg
Lnk/LnFTeS4uPS4uLnwuLgogICAgMjI2MDogMTIgRjkgRUMgQTAgMzMgMDYgNkEgMzggM0UgNTcg
NzggMjQgRUMgMDIgNzAgQUUgIC4uLi4zLmo4Pld4JC4ucC4KICAgIDIyNzA6IDNFIDUwIEUxIDBF
IDdEIDNFIDYyIEYwIDIzIEJEIDRGIEI5IEUwIDNBIDYyIEUwICA+UC4ufT5iLiMuTy4uOmIuCiAg
ICAyMjgwOiA0MyAxRSAzMSA0MCBGMSBGRiAzRiA0MCBFMCA0NiAwRCA4RSBDOSAzRCAyMiA5QyAg
Qy4xQC4uP0AuRi4uLj0iLgogICAgMjI5MDogRjIgOTkgRTIgMEUgMTYgQzAgNjUgMUUgRUMgNjAg
MDEgQkMgMjIgMUYgODAgNDAgIC4uLi4uLmUuLmAuLiIuLkAKICAgIDIyQTA6IDY3IEUyIDYwIDAx
IDc0IENGIDA0IEMwIDQxIEExIDREIDlGIDFBIDhEIDVBIDM1ICBnLmAudC4uLkEuTS4uLlo1CiAg
ICAyMkIwOiAyOCA1MyBBMyA0QyA4MyA1QSA3RCAyQSAzNSA0NiBGMCBEQyBFMyBCNSA2QSBCMCAg
KFMuTC5afSo1Ri4uLi5qLgogICAgMjJDMDogMEUgRjUgNjYgMTAgODggRTMgQUUgNTggMDMgMjYg
MEYgMjcgRkQgRkYgNDEgMkMgIC4uZi4uLi5YLiYuJy4uQSwKICAgIDIyRDA6IDQ0IDA1IDA4IDkz
IEIxIDJFIDgxIDU4IENBIEJBIDA0IDYyIEExIEVGIDA4IDgxICBELi4uLi4uWC4uLmIuLi4uCiAg
ICAyMkUwOiAzOCBDOCA2QiA0MCAyMCA4RSBGNyBENiAxMyA4OCA4MyA2QSAwMSA2MSAzMSBCRCAg
OC5rQCAuLi4uLi5qLmExLgogICAgMjJGMDogODAgQjAgNzAgNkIgMTMgODggMjMgOTkgMTkgMEEg
RkQgRDYgMDkgQzQgNjEgRUQgIC4ucGsuLiMuLi4uLi4uYS4KICAgIDIzMDA6IDgwIDMwIDA5IDdF
IDQwIDk4IEY0IDA1IDBCIDhDIDE4IDAyIDYxIEEyIDFDIDgxICAuMC5+QC4uLi4uLi5hLi4uCiAg
ICAyMzEwOiAzMCA5MSA5MiA4NiA0NCAzRCA4MSBCMCAxOCAyMCA1NCA5MCBBOSBEMyBCRSA0MCAg
MC4uLkQ9Li4uIFQuLi4uQAogICAgMjMyMDogMjQgMEYgNDQgNDAgMTYgRUMgMEEgODggQzkgMDcg
MTEgOTAgNDMgREIgMDIgNjIgICQuREAuLi4uLi4uLkMuLmIKICAgIDIzMzA6IDEyIDdFIDIyIDAy
IDcyIDg2IDI3IEIyIDgwIDFDIDA4IDQ0IDQwIDhFIEI1IDVFICAufiIuci4nLi4uLkRALi5eCiAg
ICAyMzQwOiAwMSAzOSAyNCA4OCA4MCAyQyA1MCAxQSAxMCA1MyAwQiAyMiAyMCAwQiBCNyAwNiAg
LjkkLi4sUC4uUy4iIC4uLgogICAgMjM1MDogQzQgNjIgODAgMDggQzggQzkgQkQgMDEgMzEgMTkg
QUYgNTcgMDEgNTkgOEMgMzkgIC5iLi4uLi4uMS4uVy5ZLjkKICAgIDIzNjA6IDIwIDI2IDBEIDQ0
IDQwIDRFIEU3IDBFIDg4IDQ1IDA1IDExIDkwIEUzIENCIDAzICAgJi5EQE4uLi5FLi4uLi4uCiAg
ICAyMzcwOiA2MiA2MiBFQyAwRCA5OCBGQSAwMyA2MiAwMSA0MSAwNCA2NCA4OSAwRiA5OCA0MCAg
YmIuLi4uLmIuQS5kLi4uQAogICAgMjM4MDogNDQgMzAgODggODAgRkMgRkYgMDcgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEQwLi4uLi4KClNTRFQgQCAweDAwMDAwMDAwMDAwMDAwMDAKICAg
IDAwMDA6IDUzIDUzIDQ0IDU0IDQ4IDI0IDAwIDAwIDAyIDM3IDQxIDREIDQ0IDAwIDAwIDAwICBT
U0RUSCQuLi43QU1ELi4uCiAgICAwMDEwOiA0NyA1MCA1MCA1RiA1MCA0RCA0NSA1RiAwMSAwMCAw
MCAwMCA0OSA0RSA1NCA0QyAgR1BQX1BNRV8uLi4uSU5UTAogICAgMDAyMDogMzEgMDMgMjMgMjAg
QTAgNDggNjAgMDAgMTUgNUMgNEQgMzAgMzEgMzcgMDggMDYgIDEuIyAuSGAuLlxNMDE3Li4KICAg
IDAwMzA6IDE1IDVDIDREIDMwIDMxIDM4IDA4IDA3IDE1IDVDIDREIDMxIDMxIDM1IDAzIDAwICAu
XE0wMTguLi5cTTExNS4uCiAgICAwMDQwOiAxNSA1QyA0RCAzMSAzMSAzNiAwRSAwMCAxNSA1QyA0
RCAzMSAzMSAzNyAwRSAwMCAgLlxNMTE2Li4uXE0xMTcuLgogICAgMDA1MDogMTUgNUMgNEQgMzEg
MzEgMzggMEUgMDAgMTUgNUMgNEQgMzEgMzEgMzkgMEUgMDAgIC5cTTExOC4uLlxNMTE5Li4KICAg
IDAwNjA6IDE1IDVDIDREIDMxIDMyIDMwIDBFIDAwIDE1IDVDIDREIDMwIDMzIDM3IDA2IDAwICAu
XE0xMjAuLi5cTTAzNy4uCiAgICAwMDcwOiAxNSA1QyA0RCAzMiAzMiAzNyAwNiAwMCAxNSA1QyA0
RCAzMyAzMiAzOSAwNiAwMCAgLlxNMjI3Li4uXE0zMjkuLgogICAgMDA4MDogMTUgNUMgNEQgMzMg
MzIgNDEgMDYgMDAgMTUgNUMgNEQgMzMgMzIgNDIgMDYgMDAgIC5cTTMyQS4uLlxNMzJCLi4KICAg
IDAwOTA6IDE1IDVDIDREIDMzIDMyIDQzIDA2IDAwIDE1IDVDIDREIDMzIDMzIDMwIDA2IDAwICAu
XE0zMkMuLi5cTTMzMC4uCiAgICAwMEEwOiAxNSA1QyA0RCAzMCAzOCAzMiAwNSAwMCAxNSA1QyA0
RCAzMCAzOCAzMyAwNSAwMCAgLlxNMDgyLi4uXE0wODMuLgogICAgMDBCMDogMTUgNUMgNEQgMzAg
MzggMzQgMDUgMDAgMTUgNUMgNEQgMzAgMzggMzUgMDUgMDAgIC5cTTA4NC4uLlxNMDg1Li4KICAg
IDAwQzA6IDE1IDVDIDREIDMyIDMyIDMxIDA1IDAwIDE1IDVDIDREIDMwIDM4IDM2IDA1IDAwICAu
XE0yMjEuLi5cTTA4Ni4uCiAgICAwMEQwOiAxNSA1QyA0RCAzMiAzMiAzOSAwNSAwMCAxNSA1QyA0
RCAzMiAzMyAzMSAwNSAwMCAgLlxNMjI5Li4uXE0yMzEuLgogICAgMDBFMDogMTUgNUMgNEQgMzIg
MzMgMzUgMDUgMDAgMTUgNUMgNEQgMzIgMzMgMzMgMDUgMDAgIC5cTTIzNS4uLlxNMjMzLi4KICAg
IDAwRjA6IDE1IDVDIDREIDMwIDM4IDM3IDA1IDAwIDE1IDVDIDREIDMwIDM4IDM4IDA1IDAwICAu
XE0wODcuLi5cTTA4OC4uCiAgICAwMTAwOiAxNSA1QyA0RCAzMCAzOCAzOSAwNSAwMCAxNSA1QyA0
RCAzMCAzOSAzMCAwNSAwMCAgLlxNMDg5Li4uXE0wOTAuLgogICAgMDExMDogMTUgNUMgNEQgMzAg
MzkgMzEgMDUgMDAgMTUgNUMgNEQgMzAgMzkgMzIgMDUgMDAgIC5cTTA5MS4uLlxNMDkyLi4KICAg
IDAxMjA6IDE1IDVDIDREIDMwIDM5IDMzIDA1IDAwIDE1IDVDIDREIDMwIDM5IDM0IDA1IDAwICAu
XE0wOTMuLi5cTTA5NC4uCiAgICAwMTMwOiAxNSA1QyA0RCAzMCAzOSAzNSAwNSAwMCAxNSA1QyA0
RCAzMCAzOSAzNiAwNSAwMCAgLlxNMDk1Li4uXE0wOTYuLgogICAgMDE0MDogMTUgNUMgNEQgMzAg
MzkgMzcgMDUgMDAgMTUgNUMgNEQgMzAgMzkgMzggMDUgMDAgIC5cTTA5Ny4uLlxNMDk4Li4KICAg
IDAxNTA6IDE1IDVDIDREIDMwIDM5IDM5IDA1IDAwIDE1IDVDIDREIDMxIDMwIDMwIDA1IDAwICAu
XE0wOTkuLi5cTTEwMC4uCiAgICAwMTYwOiAxNSA1QyA0RCAzMSAzMCAzMSAwNSAwMCAxNSA1QyA0
RCAzMSAzMCAzMiAwNSAwMCAgLlxNMTAxLi4uXE0xMDIuLgogICAgMDE3MDogMTUgNUMgNEQgMzEg
MzAgMzMgMDUgMDAgMTUgNUMgNEQgMzEgMzAgMzQgMDUgMDAgIC5cTTEwMy4uLlxNMTA0Li4KICAg
IDAxODA6IDE1IDVDIDREIDMxIDMwIDM1IDA1IDAwIDE1IDVDIDREIDMxIDMwIDM2IDA1IDAwICAu
XE0xMDUuLi5cTTEwNi4uCiAgICAwMTkwOiAxNSA1QyA0RCAzMSAzMCAzNyAwNSAwMCAxNSA1QyA0
RCAzMSAzMiAzOCAwNSAwMCAgLlxNMTA3Li4uXE0xMjguLgogICAgMDFBMDogMTUgNUMgNEQgMzEg
MzAgMzggMDUgMDAgMTUgNUMgNEQgMzEgMzAgMzkgMDUgMDAgIC5cTTEwOC4uLlxNMTA5Li4KICAg
IDAxQjA6IDE1IDVDIDREIDMxIDMxIDMwIDA1IDAwIDE1IDVDIDREIDMxIDMyIDMyIDA1IDAwICAu
XE0xMTAuLi5cTTEyMi4uCiAgICAwMUMwOiAxNSA1QyA0RCAzMSAzMyAzMSAwNSAwMCAxNSA1QyA0
RCAzMSAzMyAzMiAwNSAwMCAgLlxNMTMxLi4uXE0xMzIuLgogICAgMDFEMDogMTUgNUMgNEQgMzIg
MzIgMzYgMDUgMDAgMTUgNUMgNEQgMzEgMzMgMzMgMDUgMDAgIC5cTTIyNi4uLlxNMTMzLi4KICAg
IDAxRTA6IDE1IDVDIDREIDMxIDMzIDM0IDA1IDAwIDE1IDVDIDREIDMxIDMzIDM1IDA1IDAwICAu
XE0xMzQuLi5cTTEzNS4uCiAgICAwMUYwOiAxNSA1QyA0RCAzMSAzMyAzNiAwNSAwMCAxNSA1QyA0
RCAzMiAzMiAzMCAwNSAwMCAgLlxNMTM2Li4uXE0yMjAuLgogICAgMDIwMDogMTUgNUMgNEQgMzAg
MzQgMzYgMDEgMDAgMTUgNUMgNEQgMzAgMzQgMzcgMDEgMDAgIC5cTTA0Ni4uLlxNMDQ3Li4KICAg
IDAyMTA6IDE1IDVDIDREIDMwIDM0IDM5IDA4IDAyIDE1IDVDIDREIDMyIDM1IDMxIDA1IDAwICAu
XE0wNDkuLi5cTTI1MS4uCiAgICAwMjIwOiAxNSA1QyA0RCAzMyAzMSAzMCAwNSAwMCAxNSA1QyA0
RCAzMyAzMSA0MyAwNSAwMCAgLlxNMzEwLi4uXE0zMUMuLgogICAgMDIzMDogMTUgNUMgNEQgMzMg
MzIgMzAgMDUgMDAgMTUgNUMgNEQgMzMgMzIgMzEgMDUgMDAgIC5cTTMyMC4uLlxNMzIxLi4KICAg
IDAyNDA6IDE1IDVDIDREIDMzIDMyIDMyIDA1IDAwIDE1IDVDIDREIDMzIDMyIDMzIDA1IDAwICAu
XE0zMjIuLi5cTTMyMy4uCiAgICAwMjUwOiAxNSA1QyA0RCAzMyAzMiAzNCAwNSAwMCAxNSA1QyA0
RCAzMyAzMiAzNSAwNSAwMCAgLlxNMzI0Li4uXE0zMjUuLgogICAgMDI2MDogMTUgNUMgNEQgMzMg
MzIgMzYgMDUgMDAgMTUgNUMgNEQgMzMgMzIgMzcgMDUgMDAgIC5cTTMyNi4uLlxNMzI3Li4KICAg
IDAyNzA6IDE1IDVDIDREIDMzIDMyIDM4IDA1IDAwIDE1IDVDIDREIDMyIDM4IDMwIDA1IDAwICAu
XE0zMjguLi5cTTI4MC4uCiAgICAwMjgwOiAxNSA1QyA0RCAzMiAzOSAzMCAwNSAwMCAxNSA1QyA0
RCAzMyAzNyAzOCAwNSAwMCAgLlxNMjkwLi4uXE0zNzguLgogICAgMDI5MDogMTUgNUMgNEQgMzMg
MzcgMzkgMDUgMDAgMTUgNUMgNEQgMzMgMzggMzAgMDUgMDAgIC5cTTM3OS4uLlxNMzgwLi4KICAg
IDAyQTA6IDE1IDVDIDREIDMzIDM4IDMxIDA1IDAwIDE1IDVDIDREIDMzIDM4IDMyIDA1IDAwICAu
XE0zODEuLi5cTTM4Mi4uCiAgICAwMkIwOiAxNSA1QyA0RCAzMyAzOCAzMyAwNSAwMCAxNSA1QyA0
RCAzMyAzOCAzNCAwNSAwMCAgLlxNMzgzLi4uXE0zODQuLgogICAgMDJDMDogMTUgNUMgNEQgMzMg
MzggMzUgMDUgMDAgMTUgNUMgNEQgMzMgMzggMzYgMDUgMDAgIC5cTTM4NS4uLlxNMzg2Li4KICAg
IDAyRDA6IDE1IDVDIDREIDMzIDM4IDM3IDA1IDAwIDE1IDVDIDREIDMzIDM4IDM4IDA1IDAwICAu
XE0zODcuLi5cTTM4OC4uCiAgICAwMkUwOiAxNSA1QyA0RCAzMyAzOCAzOSAwNSAwMCAxNSA1QyA0
RCAzMyAzOSAzMCAwNSAwMCAgLlxNMzg5Li4uXE0zOTAuLgogICAgMDJGMDogMTUgNUMgNEQgMzMg
MzkgMzEgMDUgMDAgMTUgNUMgNEQgMzMgMzkgMzIgMDUgMDAgIC5cTTM5MS4uLlxNMzkyLi4KICAg
IDAzMDA6IDE1IDVDIDREIDMzIDMzIDMxIDA1IDAwIDE1IDVDIDREIDM2IDMyIDMwIDA1IDAwICAu
XE0zMzEuLi5cTTYyMC4uCiAgICAwMzEwOiAxNSA1QyA0RCAzNCAzMCAzNCAwMyAwMCAxNSA1QyA0
RCAzNCAzMCAzOCAwOSAwMCAgLlxNNDA0Li4uXE00MDguLgogICAgMDMyMDogMTUgNUMgNEQgMzQg
MzEgMzQgMDUgMDAgMTUgNUMgNEQgMzQgMzQgMzQgMDUgMDAgIC5cTTQxNC4uLlxNNDQ0Li4KICAg
IDAzMzA6IDE1IDVDIDREIDM0IDM1IDMzIDA1IDAwIDE1IDVDIDREIDM0IDM1IDM0IDA1IDAwICAu
XE00NTMuLi5cTTQ1NC4uCiAgICAwMzQwOiAxNSA1QyA0RCAzNCAzNSAzNSAwNSAwMCAxNSA1QyA0
RCAzNCAzNSAzNiAwNSAwMCAgLlxNNDU1Li4uXE00NTYuLgogICAgMDM1MDogMTUgNUMgNEQgMzQg
MzUgMzcgMDUgMDAgMTUgNUMgNEQgMzQgMzYgMzAgMDggMDcgIC5cTTQ1Ny4uLlxNNDYwLi4KICAg
IDAzNjA6IDE1IDVDIDREIDM0IDM0IDM5IDA1IDAwIDE1IDVDIDREIDM0IDQzIDMwIDA1IDAwICAu
XE00NDkuLi5cTTRDMC4uCiAgICAwMzcwOiAxNSA1QyA0RCAzMiAzMyA0MSAwNSAwMCAxNSA1QyA0
RCAzNCA0NiAzMCAwNSAwMCAgLlxNMjNBLi4uXE00RjAuLgogICAgMDM4MDogMTUgNUMgNEQgMzYg
MzEgMzAgMDUgMDAgMTUgNUMgNEQgMzIgMzkgNDEgMDUgMDAgIC5cTTYxMC4uLlxNMjlBLi4KICAg
IDAzOTA6IDE1IDVDIDREIDM2IDMzIDMxIDA1IDAwIDE1IDVDIDREIDM2IDM1IDMyIDA1IDAwICAu
XE02MzEuLi5cTTY1Mi4uCiAgICAwM0EwOiAxNSA1QyA0RCAzMCAzNSAzMCAwNiAwMCAxNSA1QyA0
RCAzMCAzNSAzMSAwNiAwMCAgLlxNMDUwLi4uXE0wNTEuLgogICAgMDNCMDogMTUgNUMgNEQgMzAg
MzUgMzIgMDYgMDAgMTUgNUMgNEQgMzAgMzUgMzMgMDYgMDAgIC5cTTA1Mi4uLlxNMDUzLi4KICAg
IDAzQzA6IDE1IDVDIDREIDMwIDM1IDM0IDA2IDAwIDE1IDVDIDREIDMwIDM1IDM1IDA2IDAwICAu
XE0wNTQuLi5cTTA1NS4uCiAgICAwM0QwOiAxNSA1QyA0RCAzMCAzNSAzNiAwNiAwMCAxNSA1QyA0
RCAzMCAzNSAzNyAwNiAwMCAgLlxNMDU2Li4uXE0wNTcuLgogICAgMDNFMDogMTUgNUMgNEQgMzAg
MzUgMzggMDYgMDAgMTUgNUMgNEQgMzAgMzUgMzkgMDYgMDAgIC5cTTA1OC4uLlxNMDU5Li4KICAg
IDAzRjA6IDE1IDVDIDREIDMwIDM2IDMyIDA2IDAwIDE1IDVDIDREIDMwIDM2IDM4IDA2IDAwICAu
XE0wNjIuLi5cTTA2OC4uCiAgICAwNDAwOiAxNSA1QyA0RCAzMCAzNiAzOSAwNiAwMCAxNSA1QyA0
RCAzMCAzNyAzMCAwNiAwMCAgLlxNMDY5Li4uXE0wNzAuLgogICAgMDQxMDogMTUgNUMgNEQgMzAg
MzcgMzEgMDYgMDAgMTUgNUMgNEQgMzAgMzcgMzIgMDYgMDAgIC5cTTA3MS4uLlxNMDcyLi4KICAg
IDA0MjA6IDE1IDVDIDREIDMwIDM3IDM0IDA2IDAwIDE1IDVDIDREIDMwIDM3IDM1IDA2IDAwICAu
XE0wNzQuLi5cTTA3NS4uCiAgICAwNDMwOiAxNSA1QyA0RCAzMCAzNyAzNiAwNiAwMCAxNSA1QyA0
RCAzMCAzNyAzNyAwNiAwMCAgLlxNMDc2Li4uXE0wNzcuLgogICAgMDQ0MDogMTUgNUMgNEQgMzAg
MzcgMzggMDYgMDAgMTUgNUMgNEQgMzAgMzcgMzkgMDYgMDAgIC5cTTA3OC4uLlxNMDc5Li4KICAg
IDA0NTA6IDE1IDVDIDREIDMwIDM4IDMwIDA2IDAwIDE1IDVDIDREIDMwIDM4IDMxIDA2IDAwICAu
XE0wODAuLi5cTTA4MS4uCiAgICAwNDYwOiAxNSA1QyA0RCAzMSAzMiAzNyAwNiAwMCAxNSA1QyA1
RiA0MiA0MiA0RSAwMSAwMCAgLlxNMTI3Li4uXF9CQk4uLgogICAgMDQ3MDogMTUgNUMgMkUgNUYg
NTMgNDIgNUYgNTAgNDMgNDkgMzAgMDYgMDAgMTUgNUMgMkYgIC5cLl9TQl9QQ0kwLi4uXC8KICAg
IDA0ODA6IDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMwIDQ3IDUwIDUwIDMwIDA2IDAwIDE1ICAu
X1NCX1BDSTBHUFAwLi4uCiAgICAwNDkwOiA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAz
MCA0NyA1MCA1MCAzMSAwNiAgXC8uX1NCX1BDSTBHUFAxLgogICAgMDRBMDogMDAgMTUgNUMgMkYg
MDMgNUYgNTMgNDIgNUYgNTAgNDMgNDkgMzAgNDcgNTAgNTAgIC4uXC8uX1NCX1BDSTBHUFAKICAg
IDA0QjA6IDMyIDA2IDAwIDE1IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMwIDQ3ICAy
Li4uXC8uX1NCX1BDSTBHCiAgICAwNEMwOiA1MCA1MCAzMyAwNiAwMCAxNSA1QyAyRiAwMyA1RiA1
MyA0MiA1RiA1MCA0MyA0OSAgUFAzLi4uXC8uX1NCX1BDSQogICAgMDREMDogMzAgNDcgNTAgNTAg
MzQgMDYgMDAgMTUgNUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAgIDBHUFA0Li4uXC8uX1NCX1AKICAg
IDA0RTA6IDQzIDQ5IDMwIDQ3IDUwIDUwIDM1IDA2IDAwIDE1IDVDIDJGIDAzIDVGIDUzIDQyICBD
STBHUFA1Li4uXC8uX1NCCiAgICAwNEYwOiA1RiA1MCA0MyA0OSAzMCA0NyA1MCA1MCAzNiAwNiAw
MCAxNSA1QyAyRiAwMyA1RiAgX1BDSTBHUFA2Li4uXC8uXwogICAgMDUwMDogNTMgNDIgNUYgNTAg
NDMgNDkgMzAgNDcgNTAgNTAgMzcgMDYgMDAgMTUgNUMgMkYgIFNCX1BDSTBHUFA3Li4uXC8KICAg
IDA1MTA6IDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMwIDQ3IDUwIDUwIDM4IDA2IDAwIDE1ICAu
X1NCX1BDSTBHUFA4Li4uCiAgICAwNTIwOiA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAz
MCA0NyA1MCA1MCAzOSAwNiAgXC8uX1NCX1BDSTBHUFA5LgogICAgMDUzMDogMDAgMTUgNUMgMkYg
MDMgNUYgNTMgNDIgNUYgNTAgNDMgNDkgMzAgNDcgNTAgNTAgIC4uXC8uX1NCX1BDSTBHUFAKICAg
IDA1NDA6IDQxIDA2IDAwIDE1IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMwIDQ3ICBB
Li4uXC8uX1NCX1BDSTBHCiAgICAwNTUwOiA1MCA1MCA0MiAwNiAwMCAxNSA1QyAyRiAwMyA1RiA1
MyA0MiA1RiA1MCA0MyA0OSAgUFBCLi4uXC8uX1NCX1BDSQogICAgMDU2MDogMzAgNDcgNTAgNTAg
NDMgMDYgMDAgMTUgNUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAgIDBHUFBDLi4uXC8uX1NCX1AKICAg
IDA1NzA6IDQzIDQ5IDMwIDQ3IDUwIDUwIDQ0IDA2IDAwIDE1IDVDIDJGIDAzIDVGIDUzIDQyICBD
STBHUFBELi4uXC8uX1NCCiAgICAwNTgwOiA1RiA1MCA0MyA0OSAzMCA0NyA1MCA1MCA0NSAwNiAw
MCAxNSA1QyAyRiAwMyA1RiAgX1BDSTBHUFBFLi4uXC8uXwogICAgMDU5MDogNTMgNDIgNUYgNTAg
NDMgNDkgMzAgNDcgNTAgNTAgNDYgMDYgMDAgMTUgNUMgMkYgIFNCX1BDSTBHUFBGLi4uXC8KICAg
IDA1QTA6IDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMwIDQ3IDUwIDUwIDQ3IDA2IDAwIDE1ICAu
X1NCX1BDSTBHUFBHLi4uCiAgICAwNUIwOiA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAz
MCA0NyA1MCA1MCA0OCAwNiAgXC8uX1NCX1BDSTBHUFBILgogICAgMDVDMDogMDAgMTUgNUMgMkYg
MDMgNUYgNTMgNDIgNUYgNTAgNDMgNDkgMzAgNDcgNTAgMzEgIC4uXC8uX1NCX1BDSTBHUDEKICAg
IDA1RDA6IDM1IDA2IDAwIDE1IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMwIDQ3ICA1
Li4uXC8uX1NCX1BDSTBHCiAgICAwNUUwOiA1MCAzMiAzNSAwNiAwMCAxNSA1QyAyRiAwMyA1RiA1
MyA0MiA1RiA1MCA0MyA0OSAgUDI1Li4uXC8uX1NCX1BDSQogICAgMDVGMDogMzAgNDcgNTAgMzMg
MzUgMDYgMDAgMTUgNUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAgIDBHUDM1Li4uXC8uX1NCX1AKICAg
IDA2MDA6IDQzIDQ5IDMwIDQ3IDUwIDM0IDM1IDA2IDAwIDE1IDVDIDJGIDAzIDVGIDUzIDQyICBD
STBHUDQ1Li4uXC8uX1NCCiAgICAwNjEwOiA1RiA1MCA0MyA0OSAzMCA0NyA1MCAzMSAzNyAwNiAw
MCAxNSA1QyAyRiAwMyA1RiAgX1BDSTBHUDE3Li4uXC8uXwogICAgMDYyMDogNTMgNDIgNUYgNTAg
NDMgNDkgMzAgNDcgNTAgMzIgMzcgMDYgMDAgMTAgOEEgRTEgIFNCX1BDSTBHUDI3Li4uLi4KICAg
IDA2MzA6IDAxIDVDIDJFIDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMwIDA4IDQ1IDU0IDUwIDMwICAu
XC5fU0JfUENJMC5FVFAwCiAgICAwNjQwOiAwQSA1NSAwOCA0NSA1NCA1MCAzMSAwQSA1NSAwOCA0
NSA1NCA1MCAzMiAwQSA1NSAgLlUuRVRQMS5VLkVUUDIuVQogICAgMDY1MDogMDggNDUgNTQgNTAg
MzMgMEEgNTUgMDggNDUgNTQgNTAgMzQgMEEgNTUgMDggNDUgIC5FVFAzLlUuRVRQNC5VLkUKICAg
IDA2NjA6IDU0IDUwIDM1IDBBIDU1IDA4IDQ1IDU0IDUwIDM2IDBBIDU1IDA4IDQ1IDU0IDUwICBU
UDUuVS5FVFA2LlUuRVRQCiAgICAwNjcwOiAzNyAwQSA1NSAwOCA0NSA1NCA1MCAzOCAwQSA1NSAw
OCA0NSA1NCA1MCAzOSAwQSAgNy5VLkVUUDguVS5FVFA5LgogICAgMDY4MDogNTUgMDggNDUgNTQg
NTAgNDEgMEEgNTUgMDggNDUgNTQgNTAgNDIgMEEgNTUgMDggIFUuRVRQQS5VLkVUUEIuVS4KICAg
IDA2OTA6IDQ1IDU0IDUwIDQzIDBBIDU1IDA4IDQ1IDU0IDUwIDQ0IDBBIDU1IDA4IDQ1IDU0ICBF
VFBDLlUuRVRQRC5VLkVUCiAgICAwNkEwOiA1MCA0NSAwQSA1NSAwOCA0NSA1NCA1MCA0NiAwQSA1
NSAwOCA0NSA1NCA1MCA0NyAgUEUuVS5FVFBGLlUuRVRQRwogICAgMDZCMDogMEEgNTUgMDggNDUg
NTQgNTAgNDggMEEgNTUgMDggNDUgNTQgMzEgMzUgMEEgNTUgIC5VLkVUUEguVS5FVDE1LlUKICAg
IDA2QzA6IDA4IDQ1IDU0IDMyIDM1IDBBIDU1IDA4IDQ1IDU0IDMzIDM1IDBBIDU1IDA4IDQ1ICAu
RVQyNS5VLkVUMzUuVS5FCiAgICAwNkQwOiA1NCAzNCAzNSAwQSA1NSAwOCA0NSA1NCAzMSAzNyAw
QSA1NSAwOCA0NSA1NCAzMiAgVDQ1LlUuRVQxNy5VLkVUMgogICAgMDZFMDogMzcgMEEgNTUgMTQg
ODQgRDYgMDEgNTAgNTAgNEQgNDUgMDAgNEQgMzQgMzYgMzAgIDcuVS4uLi5QUE1FLk00NjAKICAg
IDA2RjA6IDBEIDIwIDIwIDRGIDQ1IDREIDJEIDQxIDUzIDRDIDJEIDVDIDVGIDUzIDQyIDJFICAu
ICBPRU0tQVNMLVxfU0IuCiAgICAwNzAwOiA1MCA0MyA0OSAzMCAyRSA1MCA1MCA0RCA0NSAwQSAw
MCAwMCAwMCAwMCAwMCAwMCAgUENJMC5QUE1FLi4uLi4uLgogICAgMDcxMDogMDAgQTAgNEYgMTgg
OTIgOTMgNUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAgNDMgNDkgIC4uTy4uLlwvLl9TQl9QQ0kKICAg
IDA3MjA6IDMwIDQ1IDU0IDUwIDMwIDBBIEZGIDcwIDdBIDREIDMwIDMxIDM3IDVGIDQyIDQyICAw
RVRQMC4ucHpNMDE3X0JCCiAgICAwNzMwOiA0RSAwMSAwMSAwQSA3OCAwMCAwQSAxOCAwQSAxMCAw
MCA1QyAyRiAwMyA1RiA1MyAgTi4uLnguLi4uLi5cLy5fUwogICAgMDc0MDogNDIgNUYgNTAgNDMg
NDkgMzAgNDUgNTQgNTAgMzAgQTAgNDYgMTUgOTEgOTMgNUMgIEJfUENJMEVUUDAuRi4uLlwKICAg
IDA3NTA6IDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMwIDQ1IDU0IDUwIDMwIDAxIDkzICAv
Ll9TQl9QQ0kwRVRQMC4uCiAgICAwNzYwOiA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAz
MCA0NSA1NCA1MCAzMCAwQSAgXC8uX1NCX1BDSTBFVFAwLgogICAgMDc3MDogMDMgQTAgNEYgMTIg
NUIgMTIgNUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAgNDMgNDkgIC4uTy5bLlwvLl9TQl9QQ0kKICAg
IDA3ODA6IDMwIDQ3IDUwIDUwIDMwIDAwIEEwIDQ5IDA2IDkyIDkzIDREIDM2IDMyIDMwIDAwICAw
R1BQMC4uSS4uLk02MjAuCiAgICAwNzkwOiBBMCA0RiAwNSA5MyA0RCAzMCAzNCAzOSA0RCAzNiAz
MiAzMCAwQSAxMCAwMSBBMCAgLk8uLk0wNDlNNjIwLi4uLgogICAgMDdBMDogNDAgMDUgOTMgN0Ig
NEQgMzAgMzQgMzkgNEQgMzYgMzIgMzAgMEEgNTIgMEEgMDIgIEAuLntNMDQ5TTYyMC5SLi4KICAg
IDA3QjA6IDAwIDAwIDREIDM0IDM2IDMwIDBEIDIwIDIwIDIwIDIwIDRFIDZGIDc0IDY5IDY2ICAu
Lk00NjAuICAgIE5vdGlmCiAgICAwN0MwOiA3OSAyMCAyOCA1QyA1RiA1MyA0MiAyRSA1MCA0MyA0
OSAzMCAyRSA0NyA1MCA1MCAgeSAoXF9TQi5QQ0kwLkdQUAogICAgMDdEMDogMzAgMkMgMjAgMzAg
NzggMzAgMjkgMEEgMDAgMDAgMDAgMDAgMDAgMDAgMDAgODYgIDAsIDB4MCkuLi4uLi4uLi4KICAg
IDA3RTA6IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMwIDQ3IDUwIDUwIDMwIDAwICBc
Ly5fU0JfUENJMEdQUDAuCiAgICAwN0YwOiA0RCAzNCAzNiAzMCAwRCAyMCAyMCAyMCAyMCA0RSA2
RiA3NCA2OSA2NiA3OSAyMCAgTTQ2MC4gICAgTm90aWZ5IAogICAgMDgwMDogMjggNUMgNUYgNTMg
NDIgMkUgNTAgNDMgNDkgMzAgMkUgNDcgNTAgNTAgMzAgMkMgIChcX1NCLlBDSTAuR1BQMCwKICAg
IDA4MTA6IDIwIDMwIDc4IDMyIDI5IDBBIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDg2IDVDIDJGICAg
MHgyKS4uLi4uLi4uLlwvCiAgICAwODIwOiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMCA0NyA1
MCA1MCAzMCAwQSAwMiA1QiAgLl9TQl9QQ0kwR1BQMC4uWwogICAgMDgzMDogMjIgMEEgNjQgNzAg
NEQgMzAgMzEgMzcgNUYgNDIgNDIgNEUgMDEgMDEgMEEgNzggICIuZHBNMDE3X0JCTi4uLngKICAg
IDA4NDA6IDAwIDBBIDIwIDYwIEEwIDRDIDA1IDkyIDkzIDdCIDYwIDBDIDAwIDAwIDAzIDAwICAu
LiBgLkwuLi57YC4uLi4uCiAgICAwODUwOiAwMCAwMCA0RCAzMCAzMSAzOCA1RiA0MiA0MiA0RSAw
MSAwMSAwQSA3OCAwMCAwQSAgLi5NMDE4X0JCTi4uLnguLgogICAgMDg2MDogMjAgNjAgNzAgNEQg
MzAgMzEgMzcgNUYgNDIgNDIgNEUgMDEgMDEgMEEgNzggMDAgICBgcE0wMTdfQkJOLi4ueC4KICAg
IDA4NzA6IDBBIDIwIDYwIEEwIDJEIDkyIDkzIDdCIDYwIDBDIDAwIDAwIDAzIDAwIDAwIDAwICAu
IGAuLS4ue2AuLi4uLi4uCiAgICAwODgwOiA0RCAzMCAzMSAzOCA1RiA0MiA0MiA0RSAwMSAwMSAw
QSA3OCAwMCAwQSAyMCA2MCAgTTAxOF9CQk4uLi54Li4gYAogICAgMDg5MDogNzAgNEQgMzAgMzEg
MzcgNUYgNDIgNDIgNEUgMDEgMDEgMEEgNzggMDAgMEEgMjAgIHBNMDE3X0JCTi4uLnguLiAKICAg
IDA4QTA6IDYwIEEwIDRCIDEyIDkyIDkzIDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5ICBg
LksuLi5cLy5fU0JfUENJCiAgICAwOEIwOiAzMCA0NSA1NCA1MCAzMSAwQSBGRiA3MCA3QSA0RCAz
MCAzMSAzNyA1RiA0MiA0MiAgMEVUUDEuLnB6TTAxN19CQgogICAgMDhDMDogNEUgMDEgMEEgMDIg
MEEgNzggMDAgMEEgMTggMEEgMTAgMDAgNUMgMkYgMDMgNUYgIE4uLi4ueC4uLi4uLlwvLl8KICAg
IDA4RDA6IDUzIDQyIDVGIDUwIDQzIDQ5IDMwIDQ1IDU0IDUwIDMxIEEwIDQxIDBGIDkxIDkzICBT
Ql9QQ0kwRVRQMS5BLi4uCiAgICAwOEUwOiA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAz
MCA0NSA1NCA1MCAzMSAwMSAgXC8uX1NCX1BDSTBFVFAxLgogICAgMDhGMDogOTMgNUMgMkYgMDMg
NUYgNTMgNDIgNUYgNTAgNDMgNDkgMzAgNDUgNTQgNTAgMzEgIC5cLy5fU0JfUENJMEVUUDEKICAg
IDA5MDA6IDBBIDAzIEEwIDRBIDBDIDVCIDEyIDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzICAu
Li5KLlsuXC8uX1NCX1BDCiAgICAwOTEwOiA0OSAzMCA0NyA1MCA1MCAzMSAwMCA0RCAzNCAzNiAz
MCAwRCAyMCAyMCAyMCAyMCAgSTBHUFAxLk00NjAuICAgIAogICAgMDkyMDogNEUgNkYgNzQgNjkg
NjYgNzkgMjAgMjggNUMgNUYgNTMgNDIgMkUgNTAgNDMgNDkgIE5vdGlmeSAoXF9TQi5QQ0kKICAg
IDA5MzA6IDMwIDJFIDQ3IDUwIDUwIDMxIDJDIDIwIDMwIDc4IDMyIDI5IDBBIDAwIDAwIDAwICAw
LkdQUDEsIDB4MikuLi4uCiAgICAwOTQwOiAwMCAwMCAwMCAwMCA4NiA1QyAyRiAwMyA1RiA1MyA0
MiA1RiA1MCA0MyA0OSAzMCAgLi4uLi5cLy5fU0JfUENJMAogICAgMDk1MDogNDcgNTAgNTAgMzEg
MEEgMDIgNUIgMjIgMEEgNjQgNzAgNEQgMzAgMzEgMzcgNUYgIEdQUDEuLlsiLmRwTTAxN18KICAg
IDA5NjA6IDQyIDQyIDRFIDAxIDBBIDAyIDBBIDc4IDAwIDBBIDIwIDYwIEEwIDQwIDA2IDkyICBC
Qk4uLi4ueC4uIGAuQC4uCiAgICAwOTcwOiA5MyA3QiA2MCAwQyAwMCAwMCAwMyAwMCAwMCAwMCA0
RCAzMCAzMSAzOCA1RiA0MiAgLntgLi4uLi4uLk0wMThfQgogICAgMDk4MDogNDIgNEUgMDEgMEEg
MDIgMEEgNzggMDAgMEEgMjAgNjAgNzAgNEQgMzAgMzEgMzcgIEJOLi4uLnguLiBgcE0wMTcKICAg
IDA5OTA6IDVGIDQyIDQyIDRFIDAxIDBBIDAyIDBBIDc4IDAwIDBBIDIwIDYwIEEwIDJGIDkyICBf
QkJOLi4uLnguLiBgLi8uCiAgICAwOUEwOiA5MyA3QiA2MCAwQyAwMCAwMCAwMyAwMCAwMCAwMCA0
RCAzMCAzMSAzOCA1RiA0MiAgLntgLi4uLi4uLk0wMThfQgogICAgMDlCMDogNDIgNEUgMDEgMEEg
MDIgMEEgNzggMDAgMEEgMjAgNjAgNzAgNEQgMzAgMzEgMzcgIEJOLi4uLnguLiBgcE0wMTcKICAg
IDA5QzA6IDVGIDQyIDQyIDRFIDAxIDBBIDAyIDBBIDc4IDAwIDBBIDIwIDYwIEEwIDRCIDEyICBf
QkJOLi4uLnguLiBgLksuCiAgICAwOUQwOiA5MiA5MyA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0
MyA0OSAzMCA0NSA1NCA1MCAgLi5cLy5fU0JfUENJMEVUUAogICAgMDlFMDogMzIgMEEgRkYgNzAg
N0EgNEQgMzAgMzEgMzcgNUYgNDIgNDIgNEUgMDEgMEEgMDMgIDIuLnB6TTAxN19CQk4uLi4KICAg
IDA5RjA6IDBBIDc4IDAwIDBBIDE4IDBBIDEwIDAwIDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwICAu
eC4uLi4uLlwvLl9TQl9QCiAgICAwQTAwOiA0MyA0OSAzMCA0NSA1NCA1MCAzMiBBMCA0MSAwRiA5
MSA5MyA1QyAyRiAwMyA1RiAgQ0kwRVRQMi5BLi4uXC8uXwogICAgMEExMDogNTMgNDIgNUYgNTAg
NDMgNDkgMzAgNDUgNTQgNTAgMzIgMDEgOTMgNUMgMkYgMDMgIFNCX1BDSTBFVFAyLi5cLy4KICAg
IDBBMjA6IDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMwIDQ1IDU0IDUwIDMyIDBBIDAzIEEwIDRBICBf
U0JfUENJMEVUUDIuLi5KCiAgICAwQTMwOiAwQyA1QiAxMiA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1
MCA0MyA0OSAzMCA0NyA1MCAgLlsuXC8uX1NCX1BDSTBHUAogICAgMEE0MDogNTAgMzIgMDAgNEQg
MzQgMzYgMzAgMEQgMjAgMjAgMjAgMjAgNEUgNkYgNzQgNjkgIFAyLk00NjAuICAgIE5vdGkKICAg
IDBBNTA6IDY2IDc5IDIwIDI4IDVDIDVGIDUzIDQyIDJFIDUwIDQzIDQ5IDMwIDJFIDQ3IDUwICBm
eSAoXF9TQi5QQ0kwLkdQCiAgICAwQTYwOiA1MCAzMiAyQyAyMCAzMCA3OCAzMiAyOSAwQSAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgUDIsIDB4MikuLi4uLi4uLgogICAgMEE3MDogODYgNUMgMkYgMDMg
NUYgNTMgNDIgNUYgNTAgNDMgNDkgMzAgNDcgNTAgNTAgMzIgIC5cLy5fU0JfUENJMEdQUDIKICAg
IDBBODA6IDBBIDAyIDVCIDIyIDBBIDY0IDcwIDREIDMwIDMxIDM3IDVGIDQyIDQyIDRFIDAxICAu
LlsiLmRwTTAxN19CQk4uCiAgICAwQTkwOiAwQSAwMyAwQSA3OCAwMCAwQSAyMCA2MCBBMCA0MCAw
NiA5MiA5MyA3QiA2MCAwQyAgLi4ueC4uIGAuQC4uLntgLgogICAgMEFBMDogMDAgMDAgMDMgMDAg
MDAgMDAgNEQgMzAgMzEgMzggNUYgNDIgNDIgNEUgMDEgMEEgIC4uLi4uLk0wMThfQkJOLi4KICAg
IDBBQjA6IDAzIDBBIDc4IDAwIDBBIDIwIDYwIDcwIDREIDMwIDMxIDM3IDVGIDQyIDQyIDRFICAu
LnguLiBgcE0wMTdfQkJOCiAgICAwQUMwOiAwMSAwQSAwMyAwQSA3OCAwMCAwQSAyMCA2MCBBMCAy
RiA5MiA5MyA3QiA2MCAwQyAgLi4uLnguLiBgLi8uLntgLgogICAgMEFEMDogMDAgMDAgMDMgMDAg
MDAgMDAgNEQgMzAgMzEgMzggNUYgNDIgNDIgNEUgMDEgMEEgIC4uLi4uLk0wMThfQkJOLi4KICAg
IDBBRTA6IDAzIDBBIDc4IDAwIDBBIDIwIDYwIDcwIDREIDMwIDMxIDM3IDVGIDQyIDQyIDRFICAu
LnguLiBgcE0wMTdfQkJOCiAgICAwQUYwOiAwMSAwQSAwMyAwQSA3OCAwMCAwQSAyMCA2MCBBMCA0
QiAxMiA5MiA5MyA1QyAyRiAgLi4uLnguLiBgLksuLi5cLwogICAgMEIwMDogMDMgNUYgNTMgNDIg
NUYgNTAgNDMgNDkgMzAgNDUgNTQgNTAgMzMgMEEgRkYgNzAgIC5fU0JfUENJMEVUUDMuLnAKICAg
IDBCMTA6IDdBIDREIDMwIDMxIDM3IDVGIDQyIDQyIDRFIDAxIDBBIDA0IDBBIDc4IDAwIDBBICB6
TTAxN19CQk4uLi4ueC4uCiAgICAwQjIwOiAxOCAwQSAxMCAwMCA1QyAyRiAwMyA1RiA1MyA0MiA1
RiA1MCA0MyA0OSAzMCA0NSAgLi4uLlwvLl9TQl9QQ0kwRQogICAgMEIzMDogNTQgNTAgMzMgQTAg
NDEgMEYgOTEgOTMgNUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAgIFRQMy5BLi4uXC8uX1NCX1AKICAg
IDBCNDA6IDQzIDQ5IDMwIDQ1IDU0IDUwIDMzIDAxIDkzIDVDIDJGIDAzIDVGIDUzIDQyIDVGICBD
STBFVFAzLi5cLy5fU0JfCiAgICAwQjUwOiA1MCA0MyA0OSAzMCA0NSA1NCA1MCAzMyAwQSAwMyBB
MCA0QSAwQyA1QiAxMiA1QyAgUENJMEVUUDMuLi5KLlsuXAogICAgMEI2MDogMkYgMDMgNUYgNTMg
NDIgNUYgNTAgNDMgNDkgMzAgNDcgNTAgNTAgMzMgMDAgNEQgIC8uX1NCX1BDSTBHUFAzLk0KICAg
IDBCNzA6IDM0IDM2IDMwIDBEIDIwIDIwIDIwIDIwIDRFIDZGIDc0IDY5IDY2IDc5IDIwIDI4ICA0
NjAuICAgIE5vdGlmeSAoCiAgICAwQjgwOiA1QyA1RiA1MyA0MiAyRSA1MCA0MyA0OSAzMCAyRSA0
NyA1MCA1MCAzMyAyQyAyMCAgXF9TQi5QQ0kwLkdQUDMsIAogICAgMEI5MDogMzAgNzggMzIgMjkg
MEEgMDAgMDAgMDAgMDAgMDAgMDAgMDAgODYgNUMgMkYgMDMgIDB4MikuLi4uLi4uLi5cLy4KICAg
IDBCQTA6IDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMwIDQ3IDUwIDUwIDMzIDBBIDAyIDVCIDIyICBf
U0JfUENJMEdQUDMuLlsiCiAgICAwQkIwOiAwQSA2NCA3MCA0RCAzMCAzMSAzNyA1RiA0MiA0MiA0
RSAwMSAwQSAwNCAwQSA3OCAgLmRwTTAxN19CQk4uLi4ueAogICAgMEJDMDogMDAgMEEgMjAgNjAg
QTAgNDAgMDYgOTIgOTMgN0IgNjAgMEMgMDAgMDAgMDMgMDAgIC4uIGAuQC4uLntgLi4uLi4KICAg
IDBCRDA6IDAwIDAwIDREIDMwIDMxIDM4IDVGIDQyIDQyIDRFIDAxIDBBIDA0IDBBIDc4IDAwICAu
Lk0wMThfQkJOLi4uLnguCiAgICAwQkUwOiAwQSAyMCA2MCA3MCA0RCAzMCAzMSAzNyA1RiA0MiA0
MiA0RSAwMSAwQSAwNCAwQSAgLiBgcE0wMTdfQkJOLi4uLgogICAgMEJGMDogNzggMDAgMEEgMjAg
NjAgQTAgMkYgOTIgOTMgN0IgNjAgMEMgMDAgMDAgMDMgMDAgIHguLiBgLi8uLntgLi4uLi4KICAg
IDBDMDA6IDAwIDAwIDREIDMwIDMxIDM4IDVGIDQyIDQyIDRFIDAxIDBBIDA0IDBBIDc4IDAwICAu
Lk0wMThfQkJOLi4uLnguCiAgICAwQzEwOiAwQSAyMCA2MCA3MCA0RCAzMCAzMSAzNyA1RiA0MiA0
MiA0RSAwMSAwQSAwNCAwQSAgLiBgcE0wMTdfQkJOLi4uLgogICAgMEMyMDogNzggMDAgMEEgMjAg
NjAgQTAgNEIgMTIgOTIgOTMgNUMgMkYgMDMgNUYgNTMgNDIgIHguLiBgLksuLi5cLy5fU0IKICAg
IDBDMzA6IDVGIDUwIDQzIDQ5IDMwIDQ1IDU0IDUwIDM0IDBBIEZGIDcwIDdBIDREIDMwIDMxICBf
UENJMEVUUDQuLnB6TTAxCiAgICAwQzQwOiAzNyA1RiA0MiA0MiA0RSAwMSAwQSAwNSAwQSA3OCAw
MCAwQSAxOCAwQSAxMCAwMCAgN19CQk4uLi4ueC4uLi4uLgogICAgMEM1MDogNUMgMkYgMDMgNUYg
NTMgNDIgNUYgNTAgNDMgNDkgMzAgNDUgNTQgNTAgMzQgQTAgIFwvLl9TQl9QQ0kwRVRQNC4KICAg
IDBDNjA6IDQxIDBGIDkxIDkzIDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMwIDQ1ICBB
Li4uXC8uX1NCX1BDSTBFCiAgICAwQzcwOiA1NCA1MCAzNCAwMSA5MyA1QyAyRiAwMyA1RiA1MyA0
MiA1RiA1MCA0MyA0OSAzMCAgVFA0Li5cLy5fU0JfUENJMAogICAgMEM4MDogNDUgNTQgNTAgMzQg
MEEgMDMgQTAgNEEgMEMgNUIgMTIgNUMgMkYgMDMgNUYgNTMgIEVUUDQuLi5KLlsuXC8uX1MKICAg
IDBDOTA6IDQyIDVGIDUwIDQzIDQ5IDMwIDQ3IDUwIDUwIDM0IDAwIDREIDM0IDM2IDMwIDBEICBC
X1BDSTBHUFA0Lk00NjAuCiAgICAwQ0EwOiAyMCAyMCAyMCAyMCA0RSA2RiA3NCA2OSA2NiA3OSAy
MCAyOCA1QyA1RiA1MyA0MiAgICAgIE5vdGlmeSAoXF9TQgogICAgMENCMDogMkUgNTAgNDMgNDkg
MzAgMkUgNDcgNTAgNTAgMzQgMkMgMjAgMzAgNzggMzIgMjkgIC5QQ0kwLkdQUDQsIDB4MikKICAg
IDBDQzA6IDBBIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDg2IDVDIDJGIDAzIDVGIDUzIDQyIDVGICAu
Li4uLi4uLi5cLy5fU0JfCiAgICAwQ0QwOiA1MCA0MyA0OSAzMCA0NyA1MCA1MCAzNCAwQSAwMiA1
QiAyMiAwQSA2NCA3MCA0RCAgUENJMEdQUDQuLlsiLmRwTQogICAgMENFMDogMzAgMzEgMzcgNUYg
NDIgNDIgNEUgMDEgMEEgMDUgMEEgNzggMDAgMEEgMjAgNjAgIDAxN19CQk4uLi4ueC4uIGAKICAg
IDBDRjA6IEEwIDQwIDA2IDkyIDkzIDdCIDYwIDBDIDAwIDAwIDAzIDAwIDAwIDAwIDREIDMwICAu
QC4uLntgLi4uLi4uLk0wCiAgICAwRDAwOiAzMSAzOCA1RiA0MiA0MiA0RSAwMSAwQSAwNSAwQSA3
OCAwMCAwQSAyMCA2MCA3MCAgMThfQkJOLi4uLnguLiBgcAogICAgMEQxMDogNEQgMzAgMzEgMzcg
NUYgNDIgNDIgNEUgMDEgMEEgMDUgMEEgNzggMDAgMEEgMjAgIE0wMTdfQkJOLi4uLnguLiAKICAg
IDBEMjA6IDYwIEEwIDJGIDkyIDkzIDdCIDYwIDBDIDAwIDAwIDAzIDAwIDAwIDAwIDREIDMwICBg
Li8uLntgLi4uLi4uLk0wCiAgICAwRDMwOiAzMSAzOCA1RiA0MiA0MiA0RSAwMSAwQSAwNSAwQSA3
OCAwMCAwQSAyMCA2MCA3MCAgMThfQkJOLi4uLnguLiBgcAogICAgMEQ0MDogNEQgMzAgMzEgMzcg
NUYgNDIgNDIgNEUgMDEgMEEgMDUgMEEgNzggMDAgMEEgMjAgIE0wMTdfQkJOLi4uLnguLiAKICAg
IDBENTA6IDYwIEEwIDRCIDEyIDkyIDkzIDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5ICBg
LksuLi5cLy5fU0JfUENJCiAgICAwRDYwOiAzMCA0NSA1NCA1MCAzNSAwQSBGRiA3MCA3QSA0RCAz
MCAzMSAzNyA1RiA0MiA0MiAgMEVUUDUuLnB6TTAxN19CQgogICAgMEQ3MDogNEUgMDEgMEEgMDYg
MEEgNzggMDAgMEEgMTggMEEgMTAgMDAgNUMgMkYgMDMgNUYgIE4uLi4ueC4uLi4uLlwvLl8KICAg
IDBEODA6IDUzIDQyIDVGIDUwIDQzIDQ5IDMwIDQ1IDU0IDUwIDM1IEEwIDQxIDBGIDkxIDkzICBT
Ql9QQ0kwRVRQNS5BLi4uCiAgICAwRDkwOiA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAz
MCA0NSA1NCA1MCAzNSAwMSAgXC8uX1NCX1BDSTBFVFA1LgogICAgMERBMDogOTMgNUMgMkYgMDMg
NUYgNTMgNDIgNUYgNTAgNDMgNDkgMzAgNDUgNTQgNTAgMzUgIC5cLy5fU0JfUENJMEVUUDUKICAg
IDBEQjA6IDBBIDAzIEEwIDRBIDBDIDVCIDEyIDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzICAu
Li5KLlsuXC8uX1NCX1BDCiAgICAwREMwOiA0OSAzMCA0NyA1MCA1MCAzNSAwMCA0RCAzNCAzNiAz
MCAwRCAyMCAyMCAyMCAyMCAgSTBHUFA1Lk00NjAuICAgIAogICAgMEREMDogNEUgNkYgNzQgNjkg
NjYgNzkgMjAgMjggNUMgNUYgNTMgNDIgMkUgNTAgNDMgNDkgIE5vdGlmeSAoXF9TQi5QQ0kKICAg
IDBERTA6IDMwIDJFIDQ3IDUwIDUwIDM1IDJDIDIwIDMwIDc4IDMyIDI5IDBBIDAwIDAwIDAwICAw
LkdQUDUsIDB4MikuLi4uCiAgICAwREYwOiAwMCAwMCAwMCAwMCA4NiA1QyAyRiAwMyA1RiA1MyA0
MiA1RiA1MCA0MyA0OSAzMCAgLi4uLi5cLy5fU0JfUENJMAogICAgMEUwMDogNDcgNTAgNTAgMzUg
MEEgMDIgNUIgMjIgMEEgNjQgNzAgNEQgMzAgMzEgMzcgNUYgIEdQUDUuLlsiLmRwTTAxN18KICAg
IDBFMTA6IDQyIDQyIDRFIDAxIDBBIDA2IDBBIDc4IDAwIDBBIDIwIDYwIEEwIDQwIDA2IDkyICBC
Qk4uLi4ueC4uIGAuQC4uCiAgICAwRTIwOiA5MyA3QiA2MCAwQyAwMCAwMCAwMyAwMCAwMCAwMCA0
RCAzMCAzMSAzOCA1RiA0MiAgLntgLi4uLi4uLk0wMThfQgogICAgMEUzMDogNDIgNEUgMDEgMEEg
MDYgMEEgNzggMDAgMEEgMjAgNjAgNzAgNEQgMzAgMzEgMzcgIEJOLi4uLnguLiBgcE0wMTcKICAg
IDBFNDA6IDVGIDQyIDQyIDRFIDAxIDBBIDA2IDBBIDc4IDAwIDBBIDIwIDYwIEEwIDJGIDkyICBf
QkJOLi4uLnguLiBgLi8uCiAgICAwRTUwOiA5MyA3QiA2MCAwQyAwMCAwMCAwMyAwMCAwMCAwMCA0
RCAzMCAzMSAzOCA1RiA0MiAgLntgLi4uLi4uLk0wMThfQgogICAgMEU2MDogNDIgNEUgMDEgMEEg
MDYgMEEgNzggMDAgMEEgMjAgNjAgNzAgNEQgMzAgMzEgMzcgIEJOLi4uLnguLiBgcE0wMTcKICAg
IDBFNzA6IDVGIDQyIDQyIDRFIDAxIDBBIDA2IDBBIDc4IDAwIDBBIDIwIDYwIEEwIDRCIDEyICBf
QkJOLi4uLnguLiBgLksuCiAgICAwRTgwOiA5MiA5MyA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0
MyA0OSAzMCA0NSA1NCA1MCAgLi5cLy5fU0JfUENJMEVUUAogICAgMEU5MDogMzYgMEEgRkYgNzAg
N0EgNEQgMzAgMzEgMzcgNUYgNDIgNDIgNEUgMDEgMEEgMDcgIDYuLnB6TTAxN19CQk4uLi4KICAg
IDBFQTA6IDBBIDc4IDAwIDBBIDE4IDBBIDEwIDAwIDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwICAu
eC4uLi4uLlwvLl9TQl9QCiAgICAwRUIwOiA0MyA0OSAzMCA0NSA1NCA1MCAzNiBBMCA0MSAwRiA5
MSA5MyA1QyAyRiAwMyA1RiAgQ0kwRVRQNi5BLi4uXC8uXwogICAgMEVDMDogNTMgNDIgNUYgNTAg
NDMgNDkgMzAgNDUgNTQgNTAgMzYgMDEgOTMgNUMgMkYgMDMgIFNCX1BDSTBFVFA2Li5cLy4KICAg
IDBFRDA6IDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMwIDQ1IDU0IDUwIDM2IDBBIDAzIEEwIDRBICBf
U0JfUENJMEVUUDYuLi5KCiAgICAwRUUwOiAwQyA1QiAxMiA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1
MCA0MyA0OSAzMCA0NyA1MCAgLlsuXC8uX1NCX1BDSTBHUAogICAgMEVGMDogNTAgMzYgMDAgNEQg
MzQgMzYgMzAgMEQgMjAgMjAgMjAgMjAgNEUgNkYgNzQgNjkgIFA2Lk00NjAuICAgIE5vdGkKICAg
IDBGMDA6IDY2IDc5IDIwIDI4IDVDIDVGIDUzIDQyIDJFIDUwIDQzIDQ5IDMwIDJFIDQ3IDUwICBm
eSAoXF9TQi5QQ0kwLkdQCiAgICAwRjEwOiA1MCAzNiAyQyAyMCAzMCA3OCAzMiAyOSAwQSAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgUDYsIDB4MikuLi4uLi4uLgogICAgMEYyMDogODYgNUMgMkYgMDMg
NUYgNTMgNDIgNUYgNTAgNDMgNDkgMzAgNDcgNTAgNTAgMzYgIC5cLy5fU0JfUENJMEdQUDYKICAg
IDBGMzA6IDBBIDAyIDVCIDIyIDBBIDY0IDcwIDREIDMwIDMxIDM3IDVGIDQyIDQyIDRFIDAxICAu
LlsiLmRwTTAxN19CQk4uCiAgICAwRjQwOiAwQSAwNyAwQSA3OCAwMCAwQSAyMCA2MCBBMCA0MCAw
NiA5MiA5MyA3QiA2MCAwQyAgLi4ueC4uIGAuQC4uLntgLgogICAgMEY1MDogMDAgMDAgMDMgMDAg
MDAgMDAgNEQgMzAgMzEgMzggNUYgNDIgNDIgNEUgMDEgMEEgIC4uLi4uLk0wMThfQkJOLi4KICAg
IDBGNjA6IDA3IDBBIDc4IDAwIDBBIDIwIDYwIDcwIDREIDMwIDMxIDM3IDVGIDQyIDQyIDRFICAu
LnguLiBgcE0wMTdfQkJOCiAgICAwRjcwOiAwMSAwQSAwNyAwQSA3OCAwMCAwQSAyMCA2MCBBMCAy
RiA5MiA5MyA3QiA2MCAwQyAgLi4uLnguLiBgLi8uLntgLgogICAgMEY4MDogMDAgMDAgMDMgMDAg
MDAgMDAgNEQgMzAgMzEgMzggNUYgNDIgNDIgNEUgMDEgMEEgIC4uLi4uLk0wMThfQkJOLi4KICAg
IDBGOTA6IDA3IDBBIDc4IDAwIDBBIDIwIDYwIDcwIDREIDMwIDMxIDM3IDVGIDQyIDQyIDRFICAu
LnguLiBgcE0wMTdfQkJOCiAgICAwRkEwOiAwMSAwQSAwNyAwQSA3OCAwMCAwQSAyMCA2MCBBMCA0
NiAxOSA5MiA5MyA1QyAyRiAgLi4uLnguLiBgLkYuLi5cLwogICAgMEZCMDogMDMgNUYgNTMgNDIg
NUYgNTAgNDMgNDkgMzAgNDUgNTQgNTAgMzcgMEEgRkYgNzAgIC5fU0JfUENJMEVUUDcuLnAKICAg
IDBGQzA6IDdBIDREIDMwIDMxIDM3IDVGIDQyIDQyIDRFIDBBIDAyIDAxIDBBIDc4IDAwIDBBICB6
TTAxN19CQk4uLi4ueC4uCiAgICAwRkQwOiAxOCAwQSAxMCAwMCA1QyAyRiAwMyA1RiA1MyA0MiA1
RiA1MCA0MyA0OSAzMCA0NSAgLi4uLlwvLl9TQl9QQ0kwRQogICAgMEZFMDogNTQgNTAgMzcgQTAg
NEMgMTUgOTEgOTMgNUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAgIFRQNy5MLi4uXC8uX1NCX1AKICAg
IDBGRjA6IDQzIDQ5IDMwIDQ1IDU0IDUwIDM3IDAxIDkzIDVDIDJGIDAzIDVGIDUzIDQyIDVGICBD
STBFVFA3Li5cLy5fU0JfCiAgICAxMDAwOiA1MCA0MyA0OSAzMCA0NSA1NCA1MCAzNyAwQSAwMyBB
MCA0NSAxMyA1QiAxMiA1QyAgUENJMEVUUDcuLi5FLlsuXAogICAgMTAxMDogMkYgMDMgNUYgNTMg
NDIgNUYgNTAgNDMgNDkgMzAgNDcgNTAgNTAgMzcgMDAgQTAgIC8uX1NCX1BDSTBHUFA3Li4KICAg
IDEwMjA6IDRBIDA2IDkyIDkzIDREIDM2IDMyIDMwIDAwIEEwIDQwIDA2IDkzIDREIDMwIDM0ICBK
Li4uTTYyMC4uQC4uTTA0CiAgICAxMDMwOiAzOSA0RCAzNiAzMiAzMCAwQSAxMCAwQSAwMiBBMCA0
MCAwNSA5MyA3QiA0RCAzMCAgOU02MjAuLi4uLkAuLntNMAogICAgMTA0MDogMzQgMzkgNEQgMzYg
MzIgMzAgMEEgNTIgMEEgMDIgMDAgMDAgNEQgMzQgMzYgMzAgIDQ5TTYyMC5SLi4uLk00NjAKICAg
IDEwNTA6IDBEIDIwIDIwIDIwIDIwIDRFIDZGIDc0IDY5IDY2IDc5IDIwIDI4IDVDIDVGIDUzICAu
ICAgIE5vdGlmeSAoXF9TCiAgICAxMDYwOiA0MiAyRSA1MCA0MyA0OSAzMCAyRSA0NyA1MCA1MCAz
NyAyQyAyMCAzMCA3OCAzMCAgQi5QQ0kwLkdQUDcsIDB4MAogICAgMTA3MDogMjkgMEEgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgODYgNUMgMkYgMDMgNUYgNTMgNDIgICkuLi4uLi4uLi5cLy5fU0IKICAg
IDEwODA6IDVGIDUwIDQzIDQ5IDMwIDQ3IDUwIDUwIDM3IDAwIDREIDM0IDM2IDMwIDBEIDIwICBf
UENJMEdQUDcuTTQ2MC4gCiAgICAxMDkwOiAyMCAyMCAyMCA0RSA2RiA3NCA2OSA2NiA3OSAyMCAy
OCA1QyA1RiA1MyA0MiAyRSAgICAgTm90aWZ5IChcX1NCLgogICAgMTBBMDogNTAgNDMgNDkgMzAg
MkUgNDcgNTAgNTAgMzcgMkMgMjAgMzAgNzggMzIgMjkgMEEgIFBDSTAuR1BQNywgMHgyKS4KICAg
IDEwQjA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDg2IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwICAu
Li4uLi4uLlwvLl9TQl9QCiAgICAxMEMwOiA0MyA0OSAzMCA0NyA1MCA1MCAzNyAwQSAwMiA1QiAy
MiAwQSA2NCA3MCA0RCAzMCAgQ0kwR1BQNy4uWyIuZHBNMAogICAgMTBEMDogMzEgMzcgNUYgNDIg
NDIgNEUgMEEgMDIgMDEgMEEgNzggMDAgMEEgMjAgNjAgQTAgIDE3X0JCTi4uLi54Li4gYC4KICAg
IDEwRTA6IDQwIDA2IDkyIDkzIDdCIDYwIDBDIDAwIDAwIDAzIDAwIDAwIDAwIDREIDMwIDMxICBA
Li4ue2AuLi4uLi4uTTAxCiAgICAxMEYwOiAzOCA1RiA0MiA0MiA0RSAwQSAwMiAwMSAwQSA3OCAw
MCAwQSAyMCA2MCA3MCA0RCAgOF9CQk4uLi4ueC4uIGBwTQogICAgMTEwMDogMzAgMzEgMzcgNUYg
NDIgNDIgNEUgMEEgMDIgMDEgMEEgNzggMDAgMEEgMjAgNjAgIDAxN19CQk4uLi4ueC4uIGAKICAg
IDExMTA6IEEwIDJGIDkyIDkzIDdCIDYwIDBDIDAwIDAwIDAzIDAwIDAwIDAwIDREIDMwIDMxICAu
Ly4ue2AuLi4uLi4uTTAxCiAgICAxMTIwOiAzOCA1RiA0MiA0MiA0RSAwQSAwMiAwMSAwQSA3OCAw
MCAwQSAyMCA2MCA3MCA0RCAgOF9CQk4uLi4ueC4uIGBwTQogICAgMTEzMDogMzAgMzEgMzcgNUYg
NDIgNDIgNEUgMEEgMDIgMDEgMEEgNzggMDAgMEEgMjAgNjAgIDAxN19CQk4uLi4ueC4uIGAKICAg
IDExNDA6IEEwIDQxIDEzIDkyIDkzIDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMwICAu
QS4uLlwvLl9TQl9QQ0kwCiAgICAxMTUwOiA0NSA1NCA1MCAzOCAwQSBGRiA3MCA3QSA0RCAzMCAz
MSAzNyA1RiA0MiA0MiA0RSAgRVRQOC4ucHpNMDE3X0JCTgogICAgMTE2MDogMEEgMDIgMEEgMDIg
MEEgNzggMDAgMEEgMTggMEEgMTAgMDAgNUMgMkYgMDMgNUYgIC4uLi4ueC4uLi4uLlwvLl8KICAg
IDExNzA6IDUzIDQyIDVGIDUwIDQzIDQ5IDMwIDQ1IDU0IDUwIDM4IEEwIDQ2IDBGIDkxIDkzICBT
Ql9QQ0kwRVRQOC5GLi4uCiAgICAxMTgwOiA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAz
MCA0NSA1NCA1MCAzOCAwMSAgXC8uX1NCX1BDSTBFVFA4LgogICAgMTE5MDogOTMgNUMgMkYgMDMg
NUYgNTMgNDIgNUYgNTAgNDMgNDkgMzAgNDUgNTQgNTAgMzggIC5cLy5fU0JfUENJMEVUUDgKICAg
IDExQTA6IDBBIDAzIEEwIDRGIDBDIDVCIDEyIDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzICAu
Li5PLlsuXC8uX1NCX1BDCiAgICAxMUIwOiA0OSAzMCA0NyA1MCA1MCAzOCAwMCA0RCAzNCAzNiAz
MCAwRCAyMCAyMCAyMCAyMCAgSTBHUFA4Lk00NjAuICAgIAogICAgMTFDMDogNEUgNkYgNzQgNjkg
NjYgNzkgMjAgMjggNUMgNUYgNTMgNDIgMkUgNTAgNDMgNDkgIE5vdGlmeSAoXF9TQi5QQ0kKICAg
IDExRDA6IDMwIDJFIDQ3IDUwIDUwIDM4IDJDIDIwIDMwIDc4IDMyIDI5IDBBIDAwIDAwIDAwICAw
LkdQUDgsIDB4MikuLi4uCiAgICAxMUUwOiAwMCAwMCAwMCAwMCA4NiA1QyAyRiAwMyA1RiA1MyA0
MiA1RiA1MCA0MyA0OSAzMCAgLi4uLi5cLy5fU0JfUENJMAogICAgMTFGMDogNDcgNTAgNTAgMzgg
MEEgMDIgNUIgMjIgMEEgNjQgNzAgNEQgMzAgMzEgMzcgNUYgIEdQUDguLlsiLmRwTTAxN18KICAg
IDEyMDA6IDQyIDQyIDRFIDBBIDAyIDBBIDAyIDBBIDc4IDAwIDBBIDIwIDYwIEEwIDQ0IDA2ICBC
Qk4uLi4uLnguLiBgLkQuCiAgICAxMjEwOiA5MiA5MyA3QiA2MCAwQyAwMCAwMCAwMyAwMCAwMCAw
MCA0RCAzMCAzMSAzOCA1RiAgLi57YC4uLi4uLi5NMDE4XwogICAgMTIyMDogNDIgNDIgNEUgMEEg
MDIgMEEgMDIgMEEgNzggMDAgMEEgMjAgNjAgNzAgNEQgMzAgIEJCTi4uLi4ueC4uIGBwTTAKICAg
IDEyMzA6IDMxIDM3IDVGIDQyIDQyIDRFIDBBIDAyIDBBIDAyIDBBIDc4IDAwIDBBIDIwIDYwICAx
N19CQk4uLi4uLnguLiBgCiAgICAxMjQwOiBBMCAzMSA5MiA5MyA3QiA2MCAwQyAwMCAwMCAwMyAw
MCAwMCAwMCA0RCAzMCAzMSAgLjEuLntgLi4uLi4uLk0wMQogICAgMTI1MDogMzggNUYgNDIgNDIg
NEUgMEEgMDIgMEEgMDIgMEEgNzggMDAgMEEgMjAgNjAgNzAgIDhfQkJOLi4uLi54Li4gYHAKICAg
IDEyNjA6IDREIDMwIDMxIDM3IDVGIDQyIDQyIDRFIDBBIDAyIDBBIDAyIDBBIDc4IDAwIDBBICBN
MDE3X0JCTi4uLi4ueC4uCiAgICAxMjcwOiAyMCA2MCBBMCA0QiAxMiA5MiA5MyA1QyAyRiAwMyA1
RiA1MyA0MiA1RiA1MCA0MyAgIGAuSy4uLlwvLl9TQl9QQwogICAgMTI4MDogNDkgMzAgNDUgNTQg
NTAgMzkgMEEgRkYgNzAgN0EgNEQgMzAgMzEgMzcgNUYgNDIgIEkwRVRQOS4ucHpNMDE3X0IKICAg
IDEyOTA6IDQyIDRFIDBBIDAzIDAxIDBBIDc4IDAwIDBBIDE4IDBBIDEwIDAwIDVDIDJGIDAzICBC
Ti4uLi54Li4uLi4uXC8uCiAgICAxMkEwOiA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMCA0NSA1NCA1
MCAzOSBBMCA0MSAwRiA5MSAgX1NCX1BDSTBFVFA5LkEuLgogICAgMTJCMDogOTMgNUMgMkYgMDMg
NUYgNTMgNDIgNUYgNTAgNDMgNDkgMzAgNDUgNTQgNTAgMzkgIC5cLy5fU0JfUENJMEVUUDkKICAg
IDEyQzA6IDAxIDkzIDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMwIDQ1IDU0IDUwICAu
LlwvLl9TQl9QQ0kwRVRQCiAgICAxMkQwOiAzOSAwQSAwMyBBMCA0QSAwQyA1QiAxMiA1QyAyRiAw
MyA1RiA1MyA0MiA1RiA1MCAgOS4uLkouWy5cLy5fU0JfUAogICAgMTJFMDogNDMgNDkgMzAgNDcg
NTAgNTAgMzkgMDAgNEQgMzQgMzYgMzAgMEQgMjAgMjAgMjAgIENJMEdQUDkuTTQ2MC4gICAKICAg
IDEyRjA6IDIwIDRFIDZGIDc0IDY5IDY2IDc5IDIwIDI4IDVDIDVGIDUzIDQyIDJFIDUwIDQzICAg
Tm90aWZ5IChcX1NCLlBDCiAgICAxMzAwOiA0OSAzMCAyRSA0NyA1MCA1MCAzOSAyQyAyMCAzMCA3
OCAzMiAyOSAwQSAwMCAwMCAgSTAuR1BQOSwgMHgyKS4uLgogICAgMTMxMDogMDAgMDAgMDAgMDAg
MDAgODYgNUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAgNDMgNDkgIC4uLi4uLlwvLl9TQl9QQ0kKICAg
IDEzMjA6IDMwIDQ3IDUwIDUwIDM5IDBBIDAyIDVCIDIyIDBBIDY0IDcwIDREIDMwIDMxIDM3ICAw
R1BQOS4uWyIuZHBNMDE3CiAgICAxMzMwOiA1RiA0MiA0MiA0RSAwQSAwMyAwMSAwQSA3OCAwMCAw
QSAyMCA2MCBBMCA0MCAwNiAgX0JCTi4uLi54Li4gYC5ALgogICAgMTM0MDogOTIgOTMgN0IgNjAg
MEMgMDAgMDAgMDMgMDAgMDAgMDAgNEQgMzAgMzEgMzggNUYgIC4ue2AuLi4uLi4uTTAxOF8KICAg
IDEzNTA6IDQyIDQyIDRFIDBBIDAzIDAxIDBBIDc4IDAwIDBBIDIwIDYwIDcwIDREIDMwIDMxICBC
Qk4uLi4ueC4uIGBwTTAxCiAgICAxMzYwOiAzNyA1RiA0MiA0MiA0RSAwQSAwMyAwMSAwQSA3OCAw
MCAwQSAyMCA2MCBBMCAyRiAgN19CQk4uLi4ueC4uIGAuLwogICAgMTM3MDogOTIgOTMgN0IgNjAg
MEMgMDAgMDAgMDMgMDAgMDAgMDAgNEQgMzAgMzEgMzggNUYgIC4ue2AuLi4uLi4uTTAxOF8KICAg
IDEzODA6IDQyIDQyIDRFIDBBIDAzIDAxIDBBIDc4IDAwIDBBIDIwIDYwIDcwIDREIDMwIDMxICBC
Qk4uLi4ueC4uIGBwTTAxCiAgICAxMzkwOiAzNyA1RiA0MiA0MiA0RSAwQSAwMyAwMSAwQSA3OCAw
MCAwQSAyMCA2MCBBMCA0MSAgN19CQk4uLi4ueC4uIGAuQQogICAgMTNBMDogMTMgOTIgOTMgNUMg
MkYgMDMgNUYgNTMgNDIgNUYgNTAgNDMgNDkgMzAgNDUgNTQgIC4uLlwvLl9TQl9QQ0kwRVQKICAg
IDEzQjA6IDUwIDQxIDBBIEZGIDcwIDdBIDREIDMwIDMxIDM3IDVGIDQyIDQyIDRFIDBBIDAzICBQ
QS4ucHpNMDE3X0JCTi4uCiAgICAxM0MwOiAwQSAwMiAwQSA3OCAwMCAwQSAxOCAwQSAxMCAwMCA1
QyAyRiAwMyA1RiA1MyA0MiAgLi4ueC4uLi4uLlwvLl9TQgogICAgMTNEMDogNUYgNTAgNDMgNDkg
MzAgNDUgNTQgNTAgNDEgQTAgNDYgMEYgOTEgOTMgNUMgMkYgIF9QQ0kwRVRQQS5GLi4uXC8KICAg
IDEzRTA6IDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMwIDQ1IDU0IDUwIDQxIDAxIDkzIDVDICAu
X1NCX1BDSTBFVFBBLi5cCiAgICAxM0YwOiAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMCA0
NSA1NCA1MCA0MSAwQSAwMyAgLy5fU0JfUENJMEVUUEEuLgogICAgMTQwMDogQTAgNEYgMEMgNUIg
MTIgNUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAgNDMgNDkgMzAgIC5PLlsuXC8uX1NCX1BDSTAKICAg
IDE0MTA6IDQ3IDUwIDUwIDQxIDAwIDREIDM0IDM2IDMwIDBEIDIwIDIwIDIwIDIwIDRFIDZGICBH
UFBBLk00NjAuICAgIE5vCiAgICAxNDIwOiA3NCA2OSA2NiA3OSAyMCAyOCA1QyA1RiA1MyA0MiAy
RSA1MCA0MyA0OSAzMCAyRSAgdGlmeSAoXF9TQi5QQ0kwLgogICAgMTQzMDogNDcgNTAgNTAgNDEg
MkMgMjAgMzAgNzggMzIgMjkgMEEgMDAgMDAgMDAgMDAgMDAgIEdQUEEsIDB4MikuLi4uLi4KICAg
IDE0NDA6IDAwIDAwIDg2IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMwIDQ3IDUwICAu
Li5cLy5fU0JfUENJMEdQCiAgICAxNDUwOiA1MCA0MSAwQSAwMiA1QiAyMiAwQSA2NCA3MCA0RCAz
MCAzMSAzNyA1RiA0MiA0MiAgUEEuLlsiLmRwTTAxN19CQgogICAgMTQ2MDogNEUgMEEgMDMgMEEg
MDIgMEEgNzggMDAgMEEgMjAgNjAgQTAgNDQgMDYgOTIgOTMgIE4uLi4uLnguLiBgLkQuLi4KICAg
IDE0NzA6IDdCIDYwIDBDIDAwIDAwIDAzIDAwIDAwIDAwIDREIDMwIDMxIDM4IDVGIDQyIDQyICB7
YC4uLi4uLi5NMDE4X0JCCiAgICAxNDgwOiA0RSAwQSAwMyAwQSAwMiAwQSA3OCAwMCAwQSAyMCA2
MCA3MCA0RCAzMCAzMSAzNyAgTi4uLi4ueC4uIGBwTTAxNwogICAgMTQ5MDogNUYgNDIgNDIgNEUg
MEEgMDMgMEEgMDIgMEEgNzggMDAgMEEgMjAgNjAgQTAgMzEgIF9CQk4uLi4uLnguLiBgLjEKICAg
IDE0QTA6IDkyIDkzIDdCIDYwIDBDIDAwIDAwIDAzIDAwIDAwIDAwIDREIDMwIDMxIDM4IDVGICAu
LntgLi4uLi4uLk0wMThfCiAgICAxNEIwOiA0MiA0MiA0RSAwQSAwMyAwQSAwMiAwQSA3OCAwMCAw
QSAyMCA2MCA3MCA0RCAzMCAgQkJOLi4uLi54Li4gYHBNMAogICAgMTRDMDogMzEgMzcgNUYgNDIg
NDIgNEUgMEEgMDMgMEEgMDIgMEEgNzggMDAgMEEgMjAgNjAgIDE3X0JCTi4uLi4ueC4uIGAKICAg
IDE0RDA6IEEwIDQxIDEzIDkyIDkzIDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMwICAu
QS4uLlwvLl9TQl9QQ0kwCiAgICAxNEUwOiA0NSA1NCA1MCA0MiAwQSBGRiA3MCA3QSA0RCAzMCAz
MSAzNyA1RiA0MiA0MiA0RSAgRVRQQi4ucHpNMDE3X0JCTgogICAgMTRGMDogMEEgMDMgMEEgMDMg
MEEgNzggMDAgMEEgMTggMEEgMTAgMDAgNUMgMkYgMDMgNUYgIC4uLi4ueC4uLi4uLlwvLl8KICAg
IDE1MDA6IDUzIDQyIDVGIDUwIDQzIDQ5IDMwIDQ1IDU0IDUwIDQyIEEwIDQ2IDBGIDkxIDkzICBT
Ql9QQ0kwRVRQQi5GLi4uCiAgICAxNTEwOiA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAz
MCA0NSA1NCA1MCA0MiAwMSAgXC8uX1NCX1BDSTBFVFBCLgogICAgMTUyMDogOTMgNUMgMkYgMDMg
NUYgNTMgNDIgNUYgNTAgNDMgNDkgMzAgNDUgNTQgNTAgNDIgIC5cLy5fU0JfUENJMEVUUEIKICAg
IDE1MzA6IDBBIDAzIEEwIDRGIDBDIDVCIDEyIDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzICAu
Li5PLlsuXC8uX1NCX1BDCiAgICAxNTQwOiA0OSAzMCA0NyA1MCA1MCA0MiAwMCA0RCAzNCAzNiAz
MCAwRCAyMCAyMCAyMCAyMCAgSTBHUFBCLk00NjAuICAgIAogICAgMTU1MDogNEUgNkYgNzQgNjkg
NjYgNzkgMjAgMjggNUMgNUYgNTMgNDIgMkUgNTAgNDMgNDkgIE5vdGlmeSAoXF9TQi5QQ0kKICAg
IDE1NjA6IDMwIDJFIDQ3IDUwIDUwIDQyIDJDIDIwIDMwIDc4IDMyIDI5IDBBIDAwIDAwIDAwICAw
LkdQUEIsIDB4MikuLi4uCiAgICAxNTcwOiAwMCAwMCAwMCAwMCA4NiA1QyAyRiAwMyA1RiA1MyA0
MiA1RiA1MCA0MyA0OSAzMCAgLi4uLi5cLy5fU0JfUENJMAogICAgMTU4MDogNDcgNTAgNTAgNDIg
MEEgMDIgNUIgMjIgMEEgNjQgNzAgNEQgMzAgMzEgMzcgNUYgIEdQUEIuLlsiLmRwTTAxN18KICAg
IDE1OTA6IDQyIDQyIDRFIDBBIDAzIDBBIDAzIDBBIDc4IDAwIDBBIDIwIDYwIEEwIDQ0IDA2ICBC
Qk4uLi4uLnguLiBgLkQuCiAgICAxNUEwOiA5MiA5MyA3QiA2MCAwQyAwMCAwMCAwMyAwMCAwMCAw
MCA0RCAzMCAzMSAzOCA1RiAgLi57YC4uLi4uLi5NMDE4XwogICAgMTVCMDogNDIgNDIgNEUgMEEg
MDMgMEEgMDMgMEEgNzggMDAgMEEgMjAgNjAgNzAgNEQgMzAgIEJCTi4uLi4ueC4uIGBwTTAKICAg
IDE1QzA6IDMxIDM3IDVGIDQyIDQyIDRFIDBBIDAzIDBBIDAzIDBBIDc4IDAwIDBBIDIwIDYwICAx
N19CQk4uLi4uLnguLiBgCiAgICAxNUQwOiBBMCAzMSA5MiA5MyA3QiA2MCAwQyAwMCAwMCAwMyAw
MCAwMCAwMCA0RCAzMCAzMSAgLjEuLntgLi4uLi4uLk0wMQogICAgMTVFMDogMzggNUYgNDIgNDIg
NEUgMEEgMDMgMEEgMDMgMEEgNzggMDAgMEEgMjAgNjAgNzAgIDhfQkJOLi4uLi54Li4gYHAKICAg
IDE1RjA6IDREIDMwIDMxIDM3IDVGIDQyIDQyIDRFIDBBIDAzIDBBIDAzIDBBIDc4IDAwIDBBICBN
MDE3X0JCTi4uLi4ueC4uCiAgICAxNjAwOiAyMCA2MCBBMCA0MSAxMyA5MiA5MyA1QyAyRiAwMyA1
RiA1MyA0MiA1RiA1MCA0MyAgIGAuQS4uLlwvLl9TQl9QQwogICAgMTYxMDogNDkgMzAgNDUgNTQg
NTAgNDMgMEEgRkYgNzAgN0EgNEQgMzAgMzEgMzcgNUYgNDIgIEkwRVRQQy4ucHpNMDE3X0IKICAg
IDE2MjA6IDQyIDRFIDBBIDAzIDBBIDA0IDBBIDc4IDAwIDBBIDE4IDBBIDEwIDAwIDVDIDJGICBC
Ti4uLi4ueC4uLi4uLlwvCiAgICAxNjMwOiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMCA0NSA1
NCA1MCA0MyBBMCA0NiAwRiAgLl9TQl9QQ0kwRVRQQy5GLgogICAgMTY0MDogOTEgOTMgNUMgMkYg
MDMgNUYgNTMgNDIgNUYgNTAgNDMgNDkgMzAgNDUgNTQgNTAgIC4uXC8uX1NCX1BDSTBFVFAKICAg
IDE2NTA6IDQzIDAxIDkzIDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMwIDQ1IDU0ICBD
Li5cLy5fU0JfUENJMEVUCiAgICAxNjYwOiA1MCA0MyAwQSAwMyBBMCA0RiAwQyA1QiAxMiA1QyAy
RiAwMyA1RiA1MyA0MiA1RiAgUEMuLi5PLlsuXC8uX1NCXwogICAgMTY3MDogNTAgNDMgNDkgMzAg
NDcgNTAgNTAgNDMgMDAgNEQgMzQgMzYgMzAgMEQgMjAgMjAgIFBDSTBHUFBDLk00NjAuICAKICAg
IDE2ODA6IDIwIDIwIDRFIDZGIDc0IDY5IDY2IDc5IDIwIDI4IDVDIDVGIDUzIDQyIDJFIDUwICAg
IE5vdGlmeSAoXF9TQi5QCiAgICAxNjkwOiA0MyA0OSAzMCAyRSA0NyA1MCA1MCA0MyAyQyAyMCAz
MCA3OCAzMiAyOSAwQSAwMCAgQ0kwLkdQUEMsIDB4MikuLgogICAgMTZBMDogMDAgMDAgMDAgMDAg
MDAgMDAgODYgNUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAgNDMgIC4uLi4uLi5cLy5fU0JfUEMKICAg
IDE2QjA6IDQ5IDMwIDQ3IDUwIDUwIDQzIDBBIDAyIDVCIDIyIDBBIDY0IDcwIDREIDMwIDMxICBJ
MEdQUEMuLlsiLmRwTTAxCiAgICAxNkMwOiAzNyA1RiA0MiA0MiA0RSAwQSAwMyAwQSAwNCAwQSA3
OCAwMCAwQSAyMCA2MCBBMCAgN19CQk4uLi4uLnguLiBgLgogICAgMTZEMDogNDQgMDYgOTIgOTMg
N0IgNjAgMEMgMDAgMDAgMDMgMDAgMDAgMDAgNEQgMzAgMzEgIEQuLi57YC4uLi4uLi5NMDEKICAg
IDE2RTA6IDM4IDVGIDQyIDQyIDRFIDBBIDAzIDBBIDA0IDBBIDc4IDAwIDBBIDIwIDYwIDcwICA4
X0JCTi4uLi4ueC4uIGBwCiAgICAxNkYwOiA0RCAzMCAzMSAzNyA1RiA0MiA0MiA0RSAwQSAwMyAw
QSAwNCAwQSA3OCAwMCAwQSAgTTAxN19CQk4uLi4uLnguLgogICAgMTcwMDogMjAgNjAgQTAgMzEg
OTIgOTMgN0IgNjAgMEMgMDAgMDAgMDMgMDAgMDAgMDAgNEQgICBgLjEuLntgLi4uLi4uLk0KICAg
IDE3MTA6IDMwIDMxIDM4IDVGIDQyIDQyIDRFIDBBIDAzIDBBIDA0IDBBIDc4IDAwIDBBIDIwICAw
MThfQkJOLi4uLi54Li4gCiAgICAxNzIwOiA2MCA3MCA0RCAzMCAzMSAzNyA1RiA0MiA0MiA0RSAw
QSAwMyAwQSAwNCAwQSA3OCAgYHBNMDE3X0JCTi4uLi4ueAogICAgMTczMDogMDAgMEEgMjAgNjAg
QTAgNDEgMTMgOTIgOTMgNUMgMkYgMDMgNUYgNTMgNDIgNUYgIC4uIGAuQS4uLlwvLl9TQl8KICAg
IDE3NDA6IDUwIDQzIDQ5IDMwIDQ1IDU0IDUwIDQ0IDBBIEZGIDcwIDdBIDREIDMwIDMxIDM3ICBQ
Q0kwRVRQRC4ucHpNMDE3CiAgICAxNzUwOiA1RiA0MiA0MiA0RSAwQSAwMyAwQSAwNSAwQSA3OCAw
MCAwQSAxOCAwQSAxMCAwMCAgX0JCTi4uLi4ueC4uLi4uLgogICAgMTc2MDogNUMgMkYgMDMgNUYg
NTMgNDIgNUYgNTAgNDMgNDkgMzAgNDUgNTQgNTAgNDQgQTAgIFwvLl9TQl9QQ0kwRVRQRC4KICAg
IDE3NzA6IDQ2IDBGIDkxIDkzIDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMwIDQ1ICBG
Li4uXC8uX1NCX1BDSTBFCiAgICAxNzgwOiA1NCA1MCA0NCAwMSA5MyA1QyAyRiAwMyA1RiA1MyA0
MiA1RiA1MCA0MyA0OSAzMCAgVFBELi5cLy5fU0JfUENJMAogICAgMTc5MDogNDUgNTQgNTAgNDQg
MEEgMDMgQTAgNEYgMEMgNUIgMTIgNUMgMkYgMDMgNUYgNTMgIEVUUEQuLi5PLlsuXC8uX1MKICAg
IDE3QTA6IDQyIDVGIDUwIDQzIDQ5IDMwIDQ3IDUwIDUwIDQ0IDAwIDREIDM0IDM2IDMwIDBEICBC
X1BDSTBHUFBELk00NjAuCiAgICAxN0IwOiAyMCAyMCAyMCAyMCA0RSA2RiA3NCA2OSA2NiA3OSAy
MCAyOCA1QyA1RiA1MyA0MiAgICAgIE5vdGlmeSAoXF9TQgogICAgMTdDMDogMkUgNTAgNDMgNDkg
MzAgMkUgNDcgNTAgNTAgNDQgMkMgMjAgMzAgNzggMzIgMjkgIC5QQ0kwLkdQUEQsIDB4MikKICAg
IDE3RDA6IDBBIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDg2IDVDIDJGIDAzIDVGIDUzIDQyIDVGICAu
Li4uLi4uLi5cLy5fU0JfCiAgICAxN0UwOiA1MCA0MyA0OSAzMCA0NyA1MCA1MCA0NCAwQSAwMiA1
QiAyMiAwQSA2NCA3MCA0RCAgUENJMEdQUEQuLlsiLmRwTQogICAgMTdGMDogMzAgMzEgMzcgNUYg
NDIgNDIgNEUgMEEgMDMgMEEgMDUgMEEgNzggMDAgMEEgMjAgIDAxN19CQk4uLi4uLnguLiAKICAg
IDE4MDA6IDYwIEEwIDQ0IDA2IDkyIDkzIDdCIDYwIDBDIDAwIDAwIDAzIDAwIDAwIDAwIDREICBg
LkQuLi57YC4uLi4uLi5NCiAgICAxODEwOiAzMCAzMSAzOCA1RiA0MiA0MiA0RSAwQSAwMyAwQSAw
NSAwQSA3OCAwMCAwQSAyMCAgMDE4X0JCTi4uLi4ueC4uIAogICAgMTgyMDogNjAgNzAgNEQgMzAg
MzEgMzcgNUYgNDIgNDIgNEUgMEEgMDMgMEEgMDUgMEEgNzggIGBwTTAxN19CQk4uLi4uLngKICAg
IDE4MzA6IDAwIDBBIDIwIDYwIEEwIDMxIDkyIDkzIDdCIDYwIDBDIDAwIDAwIDAzIDAwIDAwICAu
LiBgLjEuLntgLi4uLi4uCiAgICAxODQwOiAwMCA0RCAzMCAzMSAzOCA1RiA0MiA0MiA0RSAwQSAw
MyAwQSAwNSAwQSA3OCAwMCAgLk0wMThfQkJOLi4uLi54LgogICAgMTg1MDogMEEgMjAgNjAgNzAg
NEQgMzAgMzEgMzcgNUYgNDIgNDIgNEUgMEEgMDMgMEEgMDUgIC4gYHBNMDE3X0JCTi4uLi4KICAg
IDE4NjA6IDBBIDc4IDAwIDBBIDIwIDYwIEEwIDQxIDEzIDkyIDkzIDVDIDJGIDAzIDVGIDUzICAu
eC4uIGAuQS4uLlwvLl9TCiAgICAxODcwOiA0MiA1RiA1MCA0MyA0OSAzMCA0NSA1NCA1MCA0NSAw
QSBGRiA3MCA3QSA0RCAzMCAgQl9QQ0kwRVRQRS4ucHpNMAogICAgMTg4MDogMzEgMzcgNUYgNDIg
NDIgNEUgMEEgMDMgMEEgMDYgMEEgNzggMDAgMEEgMTggMEEgIDE3X0JCTi4uLi4ueC4uLi4KICAg
IDE4OTA6IDEwIDAwIDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMwIDQ1IDU0IDUwICAu
LlwvLl9TQl9QQ0kwRVRQCiAgICAxOEEwOiA0NSBBMCA0NiAwRiA5MSA5MyA1QyAyRiAwMyA1RiA1
MyA0MiA1RiA1MCA0MyA0OSAgRS5GLi4uXC8uX1NCX1BDSQogICAgMThCMDogMzAgNDUgNTQgNTAg
NDUgMDEgOTMgNUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAgNDMgIDBFVFBFLi5cLy5fU0JfUEMKICAg
IDE4QzA6IDQ5IDMwIDQ1IDU0IDUwIDQ1IDBBIDAzIEEwIDRGIDBDIDVCIDEyIDVDIDJGIDAzICBJ
MEVUUEUuLi5PLlsuXC8uCiAgICAxOEQwOiA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMCA0NyA1MCA1
MCA0NSAwMCA0RCAzNCAzNiAgX1NCX1BDSTBHUFBFLk00NgogICAgMThFMDogMzAgMEQgMjAgMjAg
MjAgMjAgNEUgNkYgNzQgNjkgNjYgNzkgMjAgMjggNUMgNUYgIDAuICAgIE5vdGlmeSAoXF8KICAg
IDE4RjA6IDUzIDQyIDJFIDUwIDQzIDQ5IDMwIDJFIDQ3IDUwIDUwIDQ1IDJDIDIwIDMwIDc4ICBT
Qi5QQ0kwLkdQUEUsIDB4CiAgICAxOTAwOiAzMiAyOSAwQSAwMCAwMCAwMCAwMCAwMCAwMCAwMCA4
NiA1QyAyRiAwMyA1RiA1MyAgMikuLi4uLi4uLi5cLy5fUwogICAgMTkxMDogNDIgNUYgNTAgNDMg
NDkgMzAgNDcgNTAgNTAgNDUgMEEgMDIgNUIgMjIgMEEgNjQgIEJfUENJMEdQUEUuLlsiLmQKICAg
IDE5MjA6IDcwIDREIDMwIDMxIDM3IDVGIDQyIDQyIDRFIDBBIDAzIDBBIDA2IDBBIDc4IDAwICBw
TTAxN19CQk4uLi4uLnguCiAgICAxOTMwOiAwQSAyMCA2MCBBMCA0NCAwNiA5MiA5MyA3QiA2MCAw
QyAwMCAwMCAwMyAwMCAwMCAgLiBgLkQuLi57YC4uLi4uLgogICAgMTk0MDogMDAgNEQgMzAgMzEg
MzggNUYgNDIgNDIgNEUgMEEgMDMgMEEgMDYgMEEgNzggMDAgIC5NMDE4X0JCTi4uLi4ueC4KICAg
IDE5NTA6IDBBIDIwIDYwIDcwIDREIDMwIDMxIDM3IDVGIDQyIDQyIDRFIDBBIDAzIDBBIDA2ICAu
IGBwTTAxN19CQk4uLi4uCiAgICAxOTYwOiAwQSA3OCAwMCAwQSAyMCA2MCBBMCAzMSA5MiA5MyA3
QiA2MCAwQyAwMCAwMCAwMyAgLnguLiBgLjEuLntgLi4uLgogICAgMTk3MDogMDAgMDAgMDAgNEQg
MzAgMzEgMzggNUYgNDIgNDIgNEUgMEEgMDMgMEEgMDYgMEEgIC4uLk0wMThfQkJOLi4uLi4KICAg
IDE5ODA6IDc4IDAwIDBBIDIwIDYwIDcwIDREIDMwIDMxIDM3IDVGIDQyIDQyIDRFIDBBIDAzICB4
Li4gYHBNMDE3X0JCTi4uCiAgICAxOTkwOiAwQSAwNiAwQSA3OCAwMCAwQSAyMCA2MCBBMCA0MSAx
MyA5MiA5MyA1QyAyRiAwMyAgLi4ueC4uIGAuQS4uLlwvLgogICAgMTlBMDogNUYgNTMgNDIgNUYg
NTAgNDMgNDkgMzAgNDUgNTQgNTAgNDYgMEEgRkYgNzAgN0EgIF9TQl9QQ0kwRVRQRi4ucHoKICAg
IDE5QjA6IDREIDMwIDMxIDM3IDVGIDQyIDQyIDRFIDBBIDAzIDBBIDA3IDBBIDc4IDAwIDBBICBN
MDE3X0JCTi4uLi4ueC4uCiAgICAxOUMwOiAxOCAwQSAxMCAwMCA1QyAyRiAwMyA1RiA1MyA0MiA1
RiA1MCA0MyA0OSAzMCA0NSAgLi4uLlwvLl9TQl9QQ0kwRQogICAgMTlEMDogNTQgNTAgNDYgQTAg
NDYgMEYgOTEgOTMgNUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAgIFRQRi5GLi4uXC8uX1NCX1AKICAg
IDE5RTA6IDQzIDQ5IDMwIDQ1IDU0IDUwIDQ2IDAxIDkzIDVDIDJGIDAzIDVGIDUzIDQyIDVGICBD
STBFVFBGLi5cLy5fU0JfCiAgICAxOUYwOiA1MCA0MyA0OSAzMCA0NSA1NCA1MCA0NiAwQSAwMyBB
MCA0RiAwQyA1QiAxMiA1QyAgUENJMEVUUEYuLi5PLlsuXAogICAgMUEwMDogMkYgMDMgNUYgNTMg
NDIgNUYgNTAgNDMgNDkgMzAgNDcgNTAgNTAgNDYgMDAgNEQgIC8uX1NCX1BDSTBHUFBGLk0KICAg
IDFBMTA6IDM0IDM2IDMwIDBEIDIwIDIwIDIwIDIwIDRFIDZGIDc0IDY5IDY2IDc5IDIwIDI4ICA0
NjAuICAgIE5vdGlmeSAoCiAgICAxQTIwOiA1QyA1RiA1MyA0MiAyRSA1MCA0MyA0OSAzMCAyRSA0
NyA1MCA1MCA0NiAyQyAyMCAgXF9TQi5QQ0kwLkdQUEYsIAogICAgMUEzMDogMzAgNzggMzIgMjkg
MEEgMDAgMDAgMDAgMDAgMDAgMDAgMDAgODYgNUMgMkYgMDMgIDB4MikuLi4uLi4uLi5cLy4KICAg
IDFBNDA6IDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMwIDQ3IDUwIDUwIDQ2IDBBIDAyIDVCIDIyICBf
U0JfUENJMEdQUEYuLlsiCiAgICAxQTUwOiAwQSA2NCA3MCA0RCAzMCAzMSAzNyA1RiA0MiA0MiA0
RSAwQSAwMyAwQSAwNyAwQSAgLmRwTTAxN19CQk4uLi4uLgogICAgMUE2MDogNzggMDAgMEEgMjAg
NjAgQTAgNDQgMDYgOTIgOTMgN0IgNjAgMEMgMDAgMDAgMDMgIHguLiBgLkQuLi57YC4uLi4KICAg
IDFBNzA6IDAwIDAwIDAwIDREIDMwIDMxIDM4IDVGIDQyIDQyIDRFIDBBIDAzIDBBIDA3IDBBICAu
Li5NMDE4X0JCTi4uLi4uCiAgICAxQTgwOiA3OCAwMCAwQSAyMCA2MCA3MCA0RCAzMCAzMSAzNyA1
RiA0MiA0MiA0RSAwQSAwMyAgeC4uIGBwTTAxN19CQk4uLgogICAgMUE5MDogMEEgMDcgMEEgNzgg
MDAgMEEgMjAgNjAgQTAgMzEgOTIgOTMgN0IgNjAgMEMgMDAgIC4uLnguLiBgLjEuLntgLi4KICAg
IDFBQTA6IDAwIDAzIDAwIDAwIDAwIDREIDMwIDMxIDM4IDVGIDQyIDQyIDRFIDBBIDAzIDBBICAu
Li4uLk0wMThfQkJOLi4uCiAgICAxQUIwOiAwNyAwQSA3OCAwMCAwQSAyMCA2MCA3MCA0RCAzMCAz
MSAzNyA1RiA0MiA0MiA0RSAgLi54Li4gYHBNMDE3X0JCTgogICAgMUFDMDogMEEgMDMgMEEgMDcg
MEEgNzggMDAgMEEgMjAgNjAgQTAgNEIgMTIgOTIgOTMgNUMgIC4uLi4ueC4uIGAuSy4uLlwKICAg
IDFBRDA6IDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMwIDQ1IDU0IDUwIDQ3IDBBIEZGICAv
Ll9TQl9QQ0kwRVRQRy4uCiAgICAxQUUwOiA3MCA3QSA0RCAzMCAzMSAzNyA1RiA0MiA0MiA0RSAw
QSAwNCAwMSAwQSA3OCAwMCAgcHpNMDE3X0JCTi4uLi54LgogICAgMUFGMDogMEEgMTggMEEgMTAg
MDAgNUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAgNDMgNDkgMzAgIC4uLi4uXC8uX1NCX1BDSTAKICAg
IDFCMDA6IDQ1IDU0IDUwIDQ3IEEwIDQxIDBGIDkxIDkzIDVDIDJGIDAzIDVGIDUzIDQyIDVGICBF
VFBHLkEuLi5cLy5fU0JfCiAgICAxQjEwOiA1MCA0MyA0OSAzMCA0NSA1NCA1MCA0NyAwMSA5MyA1
QyAyRiAwMyA1RiA1MyA0MiAgUENJMEVUUEcuLlwvLl9TQgogICAgMUIyMDogNUYgNTAgNDMgNDkg
MzAgNDUgNTQgNTAgNDcgMEEgMDMgQTAgNEEgMEMgNUIgMTIgIF9QQ0kwRVRQRy4uLkouWy4KICAg
IDFCMzA6IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMwIDQ3IDUwIDUwIDQ3IDAwICBc
Ly5fU0JfUENJMEdQUEcuCiAgICAxQjQwOiA0RCAzNCAzNiAzMCAwRCAyMCAyMCAyMCAyMCA0RSA2
RiA3NCA2OSA2NiA3OSAyMCAgTTQ2MC4gICAgTm90aWZ5IAogICAgMUI1MDogMjggNUMgNUYgNTMg
NDIgMkUgNTAgNDMgNDkgMzAgMkUgNDcgNTAgNTAgNDcgMkMgIChcX1NCLlBDSTAuR1BQRywKICAg
IDFCNjA6IDIwIDMwIDc4IDMyIDI5IDBBIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDg2IDVDIDJGICAg
MHgyKS4uLi4uLi4uLlwvCiAgICAxQjcwOiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMCA0NyA1
MCA1MCA0NyAwQSAwMiA1QiAgLl9TQl9QQ0kwR1BQRy4uWwogICAgMUI4MDogMjIgMEEgNjQgNzAg
NEQgMzAgMzEgMzcgNUYgNDIgNDIgNEUgMEEgMDQgMDEgMEEgICIuZHBNMDE3X0JCTi4uLi4KICAg
IDFCOTA6IDc4IDAwIDBBIDIwIDYwIEEwIDQwIDA2IDkyIDkzIDdCIDYwIDBDIDAwIDAwIDAzICB4
Li4gYC5ALi4ue2AuLi4uCiAgICAxQkEwOiAwMCAwMCAwMCA0RCAzMCAzMSAzOCA1RiA0MiA0MiA0
RSAwQSAwNCAwMSAwQSA3OCAgLi4uTTAxOF9CQk4uLi4ueAogICAgMUJCMDogMDAgMEEgMjAgNjAg
NzAgNEQgMzAgMzEgMzcgNUYgNDIgNDIgNEUgMEEgMDQgMDEgIC4uIGBwTTAxN19CQk4uLi4KICAg
IDFCQzA6IDBBIDc4IDAwIDBBIDIwIDYwIEEwIDJGIDkyIDkzIDdCIDYwIDBDIDAwIDAwIDAzICAu
eC4uIGAuLy4ue2AuLi4uCiAgICAxQkQwOiAwMCAwMCAwMCA0RCAzMCAzMSAzOCA1RiA0MiA0MiA0
RSAwQSAwNCAwMSAwQSA3OCAgLi4uTTAxOF9CQk4uLi4ueAogICAgMUJFMDogMDAgMEEgMjAgNjAg
NzAgNEQgMzAgMzEgMzcgNUYgNDIgNDIgNEUgMEEgMDQgMDEgIC4uIGBwTTAxN19CQk4uLi4KICAg
IDFCRjA6IDBBIDc4IDAwIDBBIDIwIDYwIEEwIDQxIDEzIDkyIDkzIDVDIDJGIDAzIDVGIDUzICAu
eC4uIGAuQS4uLlwvLl9TCiAgICAxQzAwOiA0MiA1RiA1MCA0MyA0OSAzMCA0NSA1NCA1MCA0OCAw
QSBGRiA3MCA3QSA0RCAzMCAgQl9QQ0kwRVRQSC4ucHpNMAogICAgMUMxMDogMzEgMzcgNUYgNDIg
NDIgNEUgMEEgMDQgMEEgMDIgMEEgNzggMDAgMEEgMTggMEEgIDE3X0JCTi4uLi4ueC4uLi4KICAg
IDFDMjA6IDEwIDAwIDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMwIDQ1IDU0IDUwICAu
LlwvLl9TQl9QQ0kwRVRQCiAgICAxQzMwOiA0OCBBMCA0NiAwRiA5MSA5MyA1QyAyRiAwMyA1RiA1
MyA0MiA1RiA1MCA0MyA0OSAgSC5GLi4uXC8uX1NCX1BDSQogICAgMUM0MDogMzAgNDUgNTQgNTAg
NDggMDEgOTMgNUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAgNDMgIDBFVFBILi5cLy5fU0JfUEMKICAg
IDFDNTA6IDQ5IDMwIDQ1IDU0IDUwIDQ4IDBBIDAzIEEwIDRGIDBDIDVCIDEyIDVDIDJGIDAzICBJ
MEVUUEguLi5PLlsuXC8uCiAgICAxQzYwOiA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMCA0NyA1MCA1
MCA0OCAwMCA0RCAzNCAzNiAgX1NCX1BDSTBHUFBILk00NgogICAgMUM3MDogMzAgMEQgMjAgMjAg
MjAgMjAgNEUgNkYgNzQgNjkgNjYgNzkgMjAgMjggNUMgNUYgIDAuICAgIE5vdGlmeSAoXF8KICAg
IDFDODA6IDUzIDQyIDJFIDUwIDQzIDQ5IDMwIDJFIDQ3IDUwIDUwIDQ4IDJDIDIwIDMwIDc4ICBT
Qi5QQ0kwLkdQUEgsIDB4CiAgICAxQzkwOiAzMiAyOSAwQSAwMCAwMCAwMCAwMCAwMCAwMCAwMCA4
NiA1QyAyRiAwMyA1RiA1MyAgMikuLi4uLi4uLi5cLy5fUwogICAgMUNBMDogNDIgNUYgNTAgNDMg
NDkgMzAgNDcgNTAgNTAgNDggMEEgMDIgNUIgMjIgMEEgNjQgIEJfUENJMEdQUEguLlsiLmQKICAg
IDFDQjA6IDcwIDREIDMwIDMxIDM3IDVGIDQyIDQyIDRFIDBBIDA0IDBBIDAyIDBBIDc4IDAwICBw
TTAxN19CQk4uLi4uLnguCiAgICAxQ0MwOiAwQSAyMCA2MCBBMCA0NCAwNiA5MiA5MyA3QiA2MCAw
QyAwMCAwMCAwMyAwMCAwMCAgLiBgLkQuLi57YC4uLi4uLgogICAgMUNEMDogMDAgNEQgMzAgMzEg
MzggNUYgNDIgNDIgNEUgMEEgMDQgMEEgMDIgMEEgNzggMDAgIC5NMDE4X0JCTi4uLi4ueC4KICAg
IDFDRTA6IDBBIDIwIDYwIDcwIDREIDMwIDMxIDM3IDVGIDQyIDQyIDRFIDBBIDA0IDBBIDAyICAu
IGBwTTAxN19CQk4uLi4uCiAgICAxQ0YwOiAwQSA3OCAwMCAwQSAyMCA2MCBBMCAzMSA5MiA5MyA3
QiA2MCAwQyAwMCAwMCAwMyAgLnguLiBgLjEuLntgLi4uLgogICAgMUQwMDogMDAgMDAgMDAgNEQg
MzAgMzEgMzggNUYgNDIgNDIgNEUgMEEgMDQgMEEgMDIgMEEgIC4uLk0wMThfQkJOLi4uLi4KICAg
IDFEMTA6IDc4IDAwIDBBIDIwIDYwIDcwIDREIDMwIDMxIDM3IDVGIDQyIDQyIDRFIDBBIDA0ICB4
Li4gYHBNMDE3X0JCTi4uCiAgICAxRDIwOiAwQSAwMiAwQSA3OCAwMCAwQSAyMCA2MCBBMCA0QiAx
MiA5MiA5MyA1QyAyRiAwMyAgLi4ueC4uIGAuSy4uLlwvLgogICAgMUQzMDogNUYgNTMgNDIgNUYg
NTAgNDMgNDkgMzAgNDUgNTQgMzEgMzUgMEEgRkYgNzAgN0EgIF9TQl9QQ0kwRVQxNS4ucHoKICAg
IDFENDA6IDREIDMwIDMxIDM3IDVGIDQyIDQyIDRFIDBBIDA1IDAxIDBBIDc4IDAwIDBBIDE4ICBN
MDE3X0JCTi4uLi54Li4uCiAgICAxRDUwOiAwQSAxMCAwMCA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1
MCA0MyA0OSAzMCA0NSA1NCAgLi4uXC8uX1NCX1BDSTBFVAogICAgMUQ2MDogMzEgMzUgQTAgNDEg
MEYgOTEgOTMgNUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAgNDMgIDE1LkEuLi5cLy5fU0JfUEMKICAg
IDFENzA6IDQ5IDMwIDQ1IDU0IDMxIDM1IDAxIDkzIDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwICBJ
MEVUMTUuLlwvLl9TQl9QCiAgICAxRDgwOiA0MyA0OSAzMCA0NSA1NCAzMSAzNSAwQSAwMyBBMCA0
QSAwQyA1QiAxMiA1QyAyRiAgQ0kwRVQxNS4uLkouWy5cLwogICAgMUQ5MDogMDMgNUYgNTMgNDIg
NUYgNTAgNDMgNDkgMzAgNDcgNTAgMzEgMzUgMDAgNEQgMzQgIC5fU0JfUENJMEdQMTUuTTQKICAg
IDFEQTA6IDM2IDMwIDBEIDIwIDIwIDIwIDIwIDRFIDZGIDc0IDY5IDY2IDc5IDIwIDI4IDVDICA2
MC4gICAgTm90aWZ5IChcCiAgICAxREIwOiA1RiA1MyA0MiAyRSA1MCA0MyA0OSAzMCAyRSA0NyA1
MCAzMSAzNSAyQyAyMCAzMCAgX1NCLlBDSTAuR1AxNSwgMAogICAgMURDMDogNzggMzIgMjkgMEEg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgODYgNUMgMkYgMDMgNUYgIHgyKS4uLi4uLi4uLlwvLl8KICAg
IDFERDA6IDUzIDQyIDVGIDUwIDQzIDQ5IDMwIDQ3IDUwIDMxIDM1IDBBIDAyIDVCIDIyIDBBICBT
Ql9QQ0kwR1AxNS4uWyIuCiAgICAxREUwOiA2NCA3MCA0RCAzMCAzMSAzNyA1RiA0MiA0MiA0RSAw
QSAwNSAwMSAwQSA3OCAwMCAgZHBNMDE3X0JCTi4uLi54LgogICAgMURGMDogMEEgMjAgNjAgQTAg
NDAgMDYgOTIgOTMgN0IgNjAgMEMgMDAgMDAgMDMgMDAgMDAgIC4gYC5ALi4ue2AuLi4uLi4KICAg
IDFFMDA6IDAwIDREIDMwIDMxIDM4IDVGIDQyIDQyIDRFIDBBIDA1IDAxIDBBIDc4IDAwIDBBICAu
TTAxOF9CQk4uLi4ueC4uCiAgICAxRTEwOiAyMCA2MCA3MCA0RCAzMCAzMSAzNyA1RiA0MiA0MiA0
RSAwQSAwNSAwMSAwQSA3OCAgIGBwTTAxN19CQk4uLi4ueAogICAgMUUyMDogMDAgMEEgMjAgNjAg
QTAgMkYgOTIgOTMgN0IgNjAgMEMgMDAgMDAgMDMgMDAgMDAgIC4uIGAuLy4ue2AuLi4uLi4KICAg
IDFFMzA6IDAwIDREIDMwIDMxIDM4IDVGIDQyIDQyIDRFIDBBIDA1IDAxIDBBIDc4IDAwIDBBICAu
TTAxOF9CQk4uLi4ueC4uCiAgICAxRTQwOiAyMCA2MCA3MCA0RCAzMCAzMSAzNyA1RiA0MiA0MiA0
RSAwQSAwNSAwMSAwQSA3OCAgIGBwTTAxN19CQk4uLi4ueAogICAgMUU1MDogMDAgMEEgMjAgNjAg
QTAgNDEgMTMgOTIgOTMgNUMgMkYgMDMgNUYgNTMgNDIgNUYgIC4uIGAuQS4uLlwvLl9TQl8KICAg
IDFFNjA6IDUwIDQzIDQ5IDMwIDQ1IDU0IDMyIDM1IDBBIEZGIDcwIDdBIDREIDMwIDMxIDM3ICBQ
Q0kwRVQyNS4ucHpNMDE3CiAgICAxRTcwOiA1RiA0MiA0MiA0RSAwQSAwNSAwQSAwMiAwQSA3OCAw
MCAwQSAxOCAwQSAxMCAwMCAgX0JCTi4uLi4ueC4uLi4uLgogICAgMUU4MDogNUMgMkYgMDMgNUYg
NTMgNDIgNUYgNTAgNDMgNDkgMzAgNDUgNTQgMzIgMzUgQTAgIFwvLl9TQl9QQ0kwRVQyNS4KICAg
IDFFOTA6IDQ2IDBGIDkxIDkzIDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMwIDQ1ICBG
Li4uXC8uX1NCX1BDSTBFCiAgICAxRUEwOiA1NCAzMiAzNSAwMSA5MyA1QyAyRiAwMyA1RiA1MyA0
MiA1RiA1MCA0MyA0OSAzMCAgVDI1Li5cLy5fU0JfUENJMAogICAgMUVCMDogNDUgNTQgMzIgMzUg
MEEgMDMgQTAgNEYgMEMgNUIgMTIgNUMgMkYgMDMgNUYgNTMgIEVUMjUuLi5PLlsuXC8uX1MKICAg
IDFFQzA6IDQyIDVGIDUwIDQzIDQ5IDMwIDQ3IDUwIDMyIDM1IDAwIDREIDM0IDM2IDMwIDBEICBC
X1BDSTBHUDI1Lk00NjAuCiAgICAxRUQwOiAyMCAyMCAyMCAyMCA0RSA2RiA3NCA2OSA2NiA3OSAy
MCAyOCA1QyA1RiA1MyA0MiAgICAgIE5vdGlmeSAoXF9TQgogICAgMUVFMDogMkUgNTAgNDMgNDkg
MzAgMkUgNDcgNTAgMzIgMzUgMkMgMjAgMzAgNzggMzIgMjkgIC5QQ0kwLkdQMjUsIDB4MikKICAg
IDFFRjA6IDBBIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDg2IDVDIDJGIDAzIDVGIDUzIDQyIDVGICAu
Li4uLi4uLi5cLy5fU0JfCiAgICAxRjAwOiA1MCA0MyA0OSAzMCA0NyA1MCAzMiAzNSAwQSAwMiA1
QiAyMiAwQSA2NCA3MCA0RCAgUENJMEdQMjUuLlsiLmRwTQogICAgMUYxMDogMzAgMzEgMzcgNUYg
NDIgNDIgNEUgMEEgMDUgMEEgMDIgMEEgNzggMDAgMEEgMjAgIDAxN19CQk4uLi4uLnguLiAKICAg
IDFGMjA6IDYwIEEwIDQ0IDA2IDkyIDkzIDdCIDYwIDBDIDAwIDAwIDAzIDAwIDAwIDAwIDREICBg
LkQuLi57YC4uLi4uLi5NCiAgICAxRjMwOiAzMCAzMSAzOCA1RiA0MiA0MiA0RSAwQSAwNSAwQSAw
MiAwQSA3OCAwMCAwQSAyMCAgMDE4X0JCTi4uLi4ueC4uIAogICAgMUY0MDogNjAgNzAgNEQgMzAg
MzEgMzcgNUYgNDIgNDIgNEUgMEEgMDUgMEEgMDIgMEEgNzggIGBwTTAxN19CQk4uLi4uLngKICAg
IDFGNTA6IDAwIDBBIDIwIDYwIEEwIDMxIDkyIDkzIDdCIDYwIDBDIDAwIDAwIDAzIDAwIDAwICAu
LiBgLjEuLntgLi4uLi4uCiAgICAxRjYwOiAwMCA0RCAzMCAzMSAzOCA1RiA0MiA0MiA0RSAwQSAw
NSAwQSAwMiAwQSA3OCAwMCAgLk0wMThfQkJOLi4uLi54LgogICAgMUY3MDogMEEgMjAgNjAgNzAg
NEQgMzAgMzEgMzcgNUYgNDIgNDIgNEUgMEEgMDUgMEEgMDIgIC4gYHBNMDE3X0JCTi4uLi4KICAg
IDFGODA6IDBBIDc4IDAwIDBBIDIwIDYwIEEwIDQxIDEzIDkyIDkzIDVDIDJGIDAzIDVGIDUzICAu
eC4uIGAuQS4uLlwvLl9TCiAgICAxRjkwOiA0MiA1RiA1MCA0MyA0OSAzMCA0NSA1NCAzMyAzNSAw
QSBGRiA3MCA3QSA0RCAzMCAgQl9QQ0kwRVQzNS4ucHpNMAogICAgMUZBMDogMzEgMzcgNUYgNDIg
NDIgNEUgMEEgMDUgMEEgMDMgMEEgNzggMDAgMEEgMTggMEEgIDE3X0JCTi4uLi4ueC4uLi4KICAg
IDFGQjA6IDEwIDAwIDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMwIDQ1IDU0IDMzICAu
LlwvLl9TQl9QQ0kwRVQzCiAgICAxRkMwOiAzNSBBMCA0NiAwRiA5MSA5MyA1QyAyRiAwMyA1RiA1
MyA0MiA1RiA1MCA0MyA0OSAgNS5GLi4uXC8uX1NCX1BDSQogICAgMUZEMDogMzAgNDUgNTQgMzMg
MzUgMDEgOTMgNUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAgNDMgIDBFVDM1Li5cLy5fU0JfUEMKICAg
IDFGRTA6IDQ5IDMwIDQ1IDU0IDMzIDM1IDBBIDAzIEEwIDRGIDBDIDVCIDEyIDVDIDJGIDAzICBJ
MEVUMzUuLi5PLlsuXC8uCiAgICAxRkYwOiA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMCA0NyA1MCAz
MyAzNSAwMCA0RCAzNCAzNiAgX1NCX1BDSTBHUDM1Lk00NgogICAgMjAwMDogMzAgMEQgMjAgMjAg
MjAgMjAgNEUgNkYgNzQgNjkgNjYgNzkgMjAgMjggNUMgNUYgIDAuICAgIE5vdGlmeSAoXF8KICAg
IDIwMTA6IDUzIDQyIDJFIDUwIDQzIDQ5IDMwIDJFIDQ3IDUwIDMzIDM1IDJDIDIwIDMwIDc4ICBT
Qi5QQ0kwLkdQMzUsIDB4CiAgICAyMDIwOiAzMiAyOSAwQSAwMCAwMCAwMCAwMCAwMCAwMCAwMCA4
NiA1QyAyRiAwMyA1RiA1MyAgMikuLi4uLi4uLi5cLy5fUwogICAgMjAzMDogNDIgNUYgNTAgNDMg
NDkgMzAgNDcgNTAgMzMgMzUgMEEgMDIgNUIgMjIgMEEgNjQgIEJfUENJMEdQMzUuLlsiLmQKICAg
IDIwNDA6IDcwIDREIDMwIDMxIDM3IDVGIDQyIDQyIDRFIDBBIDA1IDBBIDAzIDBBIDc4IDAwICBw
TTAxN19CQk4uLi4uLnguCiAgICAyMDUwOiAwQSAyMCA2MCBBMCA0NCAwNiA5MiA5MyA3QiA2MCAw
QyAwMCAwMCAwMyAwMCAwMCAgLiBgLkQuLi57YC4uLi4uLgogICAgMjA2MDogMDAgNEQgMzAgMzEg
MzggNUYgNDIgNDIgNEUgMEEgMDUgMEEgMDMgMEEgNzggMDAgIC5NMDE4X0JCTi4uLi4ueC4KICAg
IDIwNzA6IDBBIDIwIDYwIDcwIDREIDMwIDMxIDM3IDVGIDQyIDQyIDRFIDBBIDA1IDBBIDAzICAu
IGBwTTAxN19CQk4uLi4uCiAgICAyMDgwOiAwQSA3OCAwMCAwQSAyMCA2MCBBMCAzMSA5MiA5MyA3
QiA2MCAwQyAwMCAwMCAwMyAgLnguLiBgLjEuLntgLi4uLgogICAgMjA5MDogMDAgMDAgMDAgNEQg
MzAgMzEgMzggNUYgNDIgNDIgNEUgMEEgMDUgMEEgMDMgMEEgIC4uLk0wMThfQkJOLi4uLi4KICAg
IDIwQTA6IDc4IDAwIDBBIDIwIDYwIDcwIDREIDMwIDMxIDM3IDVGIDQyIDQyIDRFIDBBIDA1ICB4
Li4gYHBNMDE3X0JCTi4uCiAgICAyMEIwOiAwQSAwMyAwQSA3OCAwMCAwQSAyMCA2MCBBMCA0MSAx
MyA5MiA5MyA1QyAyRiAwMyAgLi4ueC4uIGAuQS4uLlwvLgogICAgMjBDMDogNUYgNTMgNDIgNUYg
NTAgNDMgNDkgMzAgNDUgNTQgMzQgMzUgMEEgRkYgNzAgN0EgIF9TQl9QQ0kwRVQ0NS4ucHoKICAg
IDIwRDA6IDREIDMwIDMxIDM3IDVGIDQyIDQyIDRFIDBBIDA1IDBBIDA0IDBBIDc4IDAwIDBBICBN
MDE3X0JCTi4uLi4ueC4uCiAgICAyMEUwOiAxOCAwQSAxMCAwMCA1QyAyRiAwMyA1RiA1MyA0MiA1
RiA1MCA0MyA0OSAzMCA0NSAgLi4uLlwvLl9TQl9QQ0kwRQogICAgMjBGMDogNTQgMzQgMzUgQTAg
NDYgMEYgOTEgOTMgNUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAgIFQ0NS5GLi4uXC8uX1NCX1AKICAg
IDIxMDA6IDQzIDQ5IDMwIDQ1IDU0IDM0IDM1IDAxIDkzIDVDIDJGIDAzIDVGIDUzIDQyIDVGICBD
STBFVDQ1Li5cLy5fU0JfCiAgICAyMTEwOiA1MCA0MyA0OSAzMCA0NSA1NCAzNCAzNSAwQSAwMyBB
MCA0RiAwQyA1QiAxMiA1QyAgUENJMEVUNDUuLi5PLlsuXAogICAgMjEyMDogMkYgMDMgNUYgNTMg
NDIgNUYgNTAgNDMgNDkgMzAgNDcgNTAgMzQgMzUgMDAgNEQgIC8uX1NCX1BDSTBHUDQ1Lk0KICAg
IDIxMzA6IDM0IDM2IDMwIDBEIDIwIDIwIDIwIDIwIDRFIDZGIDc0IDY5IDY2IDc5IDIwIDI4ICA0
NjAuICAgIE5vdGlmeSAoCiAgICAyMTQwOiA1QyA1RiA1MyA0MiAyRSA1MCA0MyA0OSAzMCAyRSA0
NyA1MCAzNCAzNSAyQyAyMCAgXF9TQi5QQ0kwLkdQNDUsIAogICAgMjE1MDogMzAgNzggMzIgMjkg
MEEgMDAgMDAgMDAgMDAgMDAgMDAgMDAgODYgNUMgMkYgMDMgIDB4MikuLi4uLi4uLi5cLy4KICAg
IDIxNjA6IDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMwIDQ3IDUwIDM0IDM1IDBBIDAyIDVCIDIyICBf
U0JfUENJMEdQNDUuLlsiCiAgICAyMTcwOiAwQSA2NCA3MCA0RCAzMCAzMSAzNyA1RiA0MiA0MiA0
RSAwQSAwNSAwQSAwNCAwQSAgLmRwTTAxN19CQk4uLi4uLgogICAgMjE4MDogNzggMDAgMEEgMjAg
NjAgQTAgNDQgMDYgOTIgOTMgN0IgNjAgMEMgMDAgMDAgMDMgIHguLiBgLkQuLi57YC4uLi4KICAg
IDIxOTA6IDAwIDAwIDAwIDREIDMwIDMxIDM4IDVGIDQyIDQyIDRFIDBBIDA1IDBBIDA0IDBBICAu
Li5NMDE4X0JCTi4uLi4uCiAgICAyMUEwOiA3OCAwMCAwQSAyMCA2MCA3MCA0RCAzMCAzMSAzNyA1
RiA0MiA0MiA0RSAwQSAwNSAgeC4uIGBwTTAxN19CQk4uLgogICAgMjFCMDogMEEgMDQgMEEgNzgg
MDAgMEEgMjAgNjAgQTAgMzEgOTIgOTMgN0IgNjAgMEMgMDAgIC4uLnguLiBgLjEuLntgLi4KICAg
IDIxQzA6IDAwIDAzIDAwIDAwIDAwIDREIDMwIDMxIDM4IDVGIDQyIDQyIDRFIDBBIDA1IDBBICAu
Li4uLk0wMThfQkJOLi4uCiAgICAyMUQwOiAwNCAwQSA3OCAwMCAwQSAyMCA2MCA3MCA0RCAzMCAz
MSAzNyA1RiA0MiA0MiA0RSAgLi54Li4gYHBNMDE3X0JCTgogICAgMjFFMDogMEEgMDUgMEEgMDQg
MEEgNzggMDAgMEEgMjAgNjAgQTAgNEIgMTIgOTIgOTMgNUMgIC4uLi4ueC4uIGAuSy4uLlwKICAg
IDIxRjA6IDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMwIDQ1IDU0IDMxIDM3IDBBIEZGICAv
Ll9TQl9QQ0kwRVQxNy4uCiAgICAyMjAwOiA3MCA3QSA0RCAzMCAzMSAzNyA1RiA0MiA0MiA0RSAw
QSAwNyAwMSAwQSA3OCAwMCAgcHpNMDE3X0JCTi4uLi54LgogICAgMjIxMDogMEEgMTggMEEgMTAg
MDAgNUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAgNDMgNDkgMzAgIC4uLi4uXC8uX1NCX1BDSTAKICAg
IDIyMjA6IDQ1IDU0IDMxIDM3IEEwIDQxIDBGIDkxIDkzIDVDIDJGIDAzIDVGIDUzIDQyIDVGICBF
VDE3LkEuLi5cLy5fU0JfCiAgICAyMjMwOiA1MCA0MyA0OSAzMCA0NSA1NCAzMSAzNyAwMSA5MyA1
QyAyRiAwMyA1RiA1MyA0MiAgUENJMEVUMTcuLlwvLl9TQgogICAgMjI0MDogNUYgNTAgNDMgNDkg
MzAgNDUgNTQgMzEgMzcgMEEgMDMgQTAgNEEgMEMgNUIgMTIgIF9QQ0kwRVQxNy4uLkouWy4KICAg
IDIyNTA6IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMwIDQ3IDUwIDMxIDM3IDAwICBc
Ly5fU0JfUENJMEdQMTcuCiAgICAyMjYwOiA0RCAzNCAzNiAzMCAwRCAyMCAyMCAyMCAyMCA0RSA2
RiA3NCA2OSA2NiA3OSAyMCAgTTQ2MC4gICAgTm90aWZ5IAogICAgMjI3MDogMjggNUMgNUYgNTMg
NDIgMkUgNTAgNDMgNDkgMzAgMkUgNDcgNTAgMzEgMzcgMkMgIChcX1NCLlBDSTAuR1AxNywKICAg
IDIyODA6IDIwIDMwIDc4IDMyIDI5IDBBIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDg2IDVDIDJGICAg
MHgyKS4uLi4uLi4uLlwvCiAgICAyMjkwOiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMCA0NyA1
MCAzMSAzNyAwQSAwMiA1QiAgLl9TQl9QQ0kwR1AxNy4uWwogICAgMjJBMDogMjIgMEEgNjQgNzAg
NEQgMzAgMzEgMzcgNUYgNDIgNDIgNEUgMEEgMDcgMDEgMEEgICIuZHBNMDE3X0JCTi4uLi4KICAg
IDIyQjA6IDc4IDAwIDBBIDIwIDYwIEEwIDQwIDA2IDkyIDkzIDdCIDYwIDBDIDAwIDAwIDAzICB4
Li4gYC5ALi4ue2AuLi4uCiAgICAyMkMwOiAwMCAwMCAwMCA0RCAzMCAzMSAzOCA1RiA0MiA0MiA0
RSAwQSAwNyAwMSAwQSA3OCAgLi4uTTAxOF9CQk4uLi4ueAogICAgMjJEMDogMDAgMEEgMjAgNjAg
NzAgNEQgMzAgMzEgMzcgNUYgNDIgNDIgNEUgMEEgMDcgMDEgIC4uIGBwTTAxN19CQk4uLi4KICAg
IDIyRTA6IDBBIDc4IDAwIDBBIDIwIDYwIEEwIDJGIDkyIDkzIDdCIDYwIDBDIDAwIDAwIDAzICAu
eC4uIGAuLy4ue2AuLi4uCiAgICAyMkYwOiAwMCAwMCAwMCA0RCAzMCAzMSAzOCA1RiA0MiA0MiA0
RSAwQSAwNyAwMSAwQSA3OCAgLi4uTTAxOF9CQk4uLi4ueAogICAgMjMwMDogMDAgMEEgMjAgNjAg
NzAgNEQgMzAgMzEgMzcgNUYgNDIgNDIgNEUgMEEgMDcgMDEgIC4uIGBwTTAxN19CQk4uLi4KICAg
IDIzMTA6IDBBIDc4IDAwIDBBIDIwIDYwIEEwIDQxIDEzIDkyIDkzIDVDIDJGIDAzIDVGIDUzICAu
eC4uIGAuQS4uLlwvLl9TCiAgICAyMzIwOiA0MiA1RiA1MCA0MyA0OSAzMCA0NSA1NCAzMiAzNyAw
QSBGRiA3MCA3QSA0RCAzMCAgQl9QQ0kwRVQyNy4ucHpNMAogICAgMjMzMDogMzEgMzcgNUYgNDIg
NDIgNEUgMEEgMDcgMEEgMDIgMEEgNzggMDAgMEEgMTggMEEgIDE3X0JCTi4uLi4ueC4uLi4KICAg
IDIzNDA6IDEwIDAwIDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMwIDQ1IDU0IDMyICAu
LlwvLl9TQl9QQ0kwRVQyCiAgICAyMzUwOiAzNyBBMCA0NiAwRiA5MSA5MyA1QyAyRiAwMyA1RiA1
MyA0MiA1RiA1MCA0MyA0OSAgNy5GLi4uXC8uX1NCX1BDSQogICAgMjM2MDogMzAgNDUgNTQgMzIg
MzcgMDEgOTMgNUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAgNDMgIDBFVDI3Li5cLy5fU0JfUEMKICAg
IDIzNzA6IDQ5IDMwIDQ1IDU0IDMyIDM3IDBBIDAzIEEwIDRGIDBDIDVCIDEyIDVDIDJGIDAzICBJ
MEVUMjcuLi5PLlsuXC8uCiAgICAyMzgwOiA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMCA0NyA1MCAz
MiAzNyAwMCA0RCAzNCAzNiAgX1NCX1BDSTBHUDI3Lk00NgogICAgMjM5MDogMzAgMEQgMjAgMjAg
MjAgMjAgNEUgNkYgNzQgNjkgNjYgNzkgMjAgMjggNUMgNUYgIDAuICAgIE5vdGlmeSAoXF8KICAg
IDIzQTA6IDUzIDQyIDJFIDUwIDQzIDQ5IDMwIDJFIDQ3IDUwIDMyIDM3IDJDIDIwIDMwIDc4ICBT
Qi5QQ0kwLkdQMjcsIDB4CiAgICAyM0IwOiAzMiAyOSAwQSAwMCAwMCAwMCAwMCAwMCAwMCAwMCA4
NiA1QyAyRiAwMyA1RiA1MyAgMikuLi4uLi4uLi5cLy5fUwogICAgMjNDMDogNDIgNUYgNTAgNDMg
NDkgMzAgNDcgNTAgMzIgMzcgMEEgMDIgNUIgMjIgMEEgNjQgIEJfUENJMEdQMjcuLlsiLmQKICAg
IDIzRDA6IDcwIDREIDMwIDMxIDM3IDVGIDQyIDQyIDRFIDBBIDA3IDBBIDAyIDBBIDc4IDAwICBw
TTAxN19CQk4uLi4uLnguCiAgICAyM0UwOiAwQSAyMCA2MCBBMCA0NCAwNiA5MiA5MyA3QiA2MCAw
QyAwMCAwMCAwMyAwMCAwMCAgLiBgLkQuLi57YC4uLi4uLgogICAgMjNGMDogMDAgNEQgMzAgMzEg
MzggNUYgNDIgNDIgNEUgMEEgMDcgMEEgMDIgMEEgNzggMDAgIC5NMDE4X0JCTi4uLi4ueC4KICAg
IDI0MDA6IDBBIDIwIDYwIDcwIDREIDMwIDMxIDM3IDVGIDQyIDQyIDRFIDBBIDA3IDBBIDAyICAu
IGBwTTAxN19CQk4uLi4uCiAgICAyNDEwOiAwQSA3OCAwMCAwQSAyMCA2MCBBMCAzMSA5MiA5MyA3
QiA2MCAwQyAwMCAwMCAwMyAgLnguLiBgLjEuLntgLi4uLgogICAgMjQyMDogMDAgMDAgMDAgNEQg
MzAgMzEgMzggNUYgNDIgNDIgNEUgMEEgMDcgMEEgMDIgMEEgIC4uLk0wMThfQkJOLi4uLi4KICAg
IDI0MzA6IDc4IDAwIDBBIDIwIDYwIDcwIDREIDMwIDMxIDM3IDVGIDQyIDQyIDRFIDBBIDA3ICB4
Li4gYHBNMDE3X0JCTi4uCiAgICAyNDQwOiAwQSAwMiAwQSA3OCAwMCAwQSAyMCA2MCAgICAgICAg
ICAgICAgICAgICAgICAgICAgLi4ueC4uIGAKCkhFU1QgQCAweDAwMDAwMDAwMDAwMDAwMDAKICAg
IDAwMDA6IDQ4IDQ1IDUzIDU0IDE0IDBBIDAzIDAwIDAxIDg3IDQxIDREIDQ0IDIwIDIwIDIwICBI
RVNULi4uLi4uQU1EICAgCiAgICAwMDEwOiA0MSA0RCA0NCAyMCA0OCA0NSA1MyA1NCAwMSAwMCAw
MCAwMCA0MSA0RCA0NCAyMCAgQU1EIEhFU1QuLi4uQU1EIAogICAgMDAyMDogMDEgMDAgMDAgMDAg
MEQgMEMgMDAgMDAgMDAgMDAgMDEgMDAgMDAgMDAgMDQgMDEgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDAwMzA6IDAxIDAwIDAwIDAwIDAxIDAwIDAwIDAwIDIwIDAxIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLiAuLi4uLi4uCiAgICAwMDQwOiBFRiBGRiBGRiBGRiAwMCAwMCAwMCAwMCAyMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4gLi4uLi4uLgogICAgMDA1MDogMDAgMDAgMDIgMDAg
MDAgMjAgMDAgQzAgRkYgRkYgRkYgRkYgRkYgRkYgRkYgRkYgIC4uLi4uIC4uLi4uLi4uLi4KICAg
IDAwNjA6IDAxIDIwIDAwIEMwIDAyIDIwIDAwIEMwIDAzIDIwIDAwIEMwIDAxIDAwIDAyIDAwICAu
IC4uLiAuLi4gLi4uLi4uCiAgICAwMDcwOiAxMCAyMCAwMCBDMCBGRiBGRiBGRiBGRiBGRiBGRiBG
RiBGRiAxMSAyMCAwMCBDMCAgLiAuLi4uLi4uLi4uLiAuLgogICAgMDA4MDogMTIgMjAgMDAgQzAg
MTMgMjAgMDAgQzAgMDIgMDAgMDIgMDAgMjAgMjAgMDAgQzAgIC4gLi4uIC4uLi4uLiAgLi4KICAg
IDAwOTA6IEZGIEZGIEZGIEZGIEZGIEZGIEZGIEZGIDIxIDIwIDAwIEMwIDIyIDIwIDAwIEMwICAu
Li4uLi4uLiEgLi4iIC4uCiAgICAwMEEwOiAyMyAyMCAwMCBDMCAwMyAwMCAwMiAwMCAzMCAyMCAw
MCBDMCBGRiBGRiBGRiBGRiAgIyAuLi4uLi4wIC4uLi4uLgogICAgMDBCMDogRkYgRkYgRkYgRkYg
MzEgMjAgMDAgQzAgMzIgMjAgMDAgQzAgMzMgMjAgMDAgQzAgIC4uLi4xIC4uMiAuLjMgLi4KICAg
IDAwQzA6IDA0IDAwIDAyIDAwIDQwIDIwIDAwIEMwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uQCAuLi4uLi4uLi4uCiAgICAwMEQwOiA0MSAyMCAwMCBDMCA0MiAyMCAwMCBDMCA0MyAyMCAw
MCBDMCAwNSAwMCAwMiAwMCAgQSAuLkIgLi5DIC4uLi4uLgogICAgMDBFMDogNTAgMjAgMDAgQzAg
RkYgRkYgRkYgRkYgRkYgRkYgRkYgRkYgNTEgMjAgMDAgQzAgIFAgLi4uLi4uLi4uLlEgLi4KICAg
IDAwRjA6IDUyIDIwIDAwIEMwIDUzIDIwIDAwIEMwIDA2IDAwIDAyIDAwIDYwIDIwIDAwIEMwICBS
IC4uUyAuLi4uLi5gIC4uCiAgICAwMTAwOiBGRiBGRiBGRiBGRiBGRiBGRiBGRiBGRiA2MSAyMCAw
MCBDMCA2MiAyMCAwMCBDMCAgLi4uLi4uLi5hIC4uYiAuLgogICAgMDExMDogNjMgMjAgMDAgQzAg
MDcgMDAgMDIgMDAgNzAgMjAgMDAgQzAgRkYgRkYgRkYgRkYgIGMgLi4uLi4ucCAuLi4uLi4KICAg
IDAxMjA6IEZGIEZGIEZGIEZGIDcxIDIwIDAwIEMwIDcyIDIwIDAwIEMwIDczIDIwIDAwIEMwICAu
Li4ucSAuLnIgLi5zIC4uCiAgICAwMTMwOiAwOCAwMCAwMiAwMCA4MCAyMCAwMCBDMCBGRiBGRiBG
RiBGRiBGRiBGRiBGRiBGRiAgLi4uLi4gLi4uLi4uLi4uLgogICAgMDE0MDogODEgMjAgMDAgQzAg
ODIgMjAgMDAgQzAgODMgMjAgMDAgQzAgMDkgMDAgMDIgMDAgIC4gLi4uIC4uLiAuLi4uLi4KICAg
IDAxNTA6IDkwIDIwIDAwIEMwIEZGIEZGIEZGIEZGIEZGIEZGIEZGIEZGIDkxIDIwIDAwIEMwICAu
IC4uLi4uLi4uLi4uIC4uCiAgICAwMTYwOiA5MiAyMCAwMCBDMCA5MyAyMCAwMCBDMCAwQSAwMCAw
MiAwMCBBMCAyMCAwMCBDMCAgLiAuLi4gLi4uLi4uLiAuLgogICAgMDE3MDogRkYgRkYgRkYgRkYg
RkYgRkYgRkYgRkYgQTEgMjAgMDAgQzAgQTIgMjAgMDAgQzAgIC4uLi4uLi4uLiAuLi4gLi4KICAg
IDAxODA6IEEzIDIwIDAwIEMwIDBCIDAwIDAyIDAwIEIwIDIwIDAwIEMwIEZGIEZGIEZGIEZGICAu
IC4uLi4uLi4gLi4uLi4uCiAgICAwMTkwOiBGRiBGRiBGRiBGRiBCMSAyMCAwMCBDMCBCMiAyMCAw
MCBDMCBCMyAyMCAwMCBDMCAgLi4uLi4gLi4uIC4uLiAuLgogICAgMDFBMDogMEMgMDAgMDIgMDAg
QzAgMjAgMDAgQzAgRkYgRkYgRkYgRkYgRkYgRkYgRkYgRkYgIC4uLi4uIC4uLi4uLi4uLi4KICAg
IDAxQjA6IEMxIDIwIDAwIEMwIEMyIDIwIDAwIEMwIEMzIDIwIDAwIEMwIDBEIDAwIDAyIDAwICAu
IC4uLiAuLi4gLi4uLi4uCiAgICAwMUMwOiBEMCAyMCAwMCBDMCBGRiBGRiBGRiBGRiBGRiBGRiBG
RiBGRiBEMSAyMCAwMCBDMCAgLiAuLi4uLi4uLi4uLiAuLgogICAgMDFEMDogRDIgMjAgMDAgQzAg
RDMgMjAgMDAgQzAgMEUgMDAgMDIgMDAgRTAgMjAgMDAgQzAgIC4gLi4uIC4uLi4uLi4gLi4KICAg
IDAxRTA6IEZGIEZGIEZGIEZGIEZGIEZGIEZGIEZGIEUxIDIwIDAwIEMwIEUyIDIwIDAwIEMwICAu
Li4uLi4uLi4gLi4uIC4uCiAgICAwMUYwOiBFMyAyMCAwMCBDMCAwRiAwMCAwMiAwMCBGMCAyMCAw
MCBDMCBGRiBGRiBGRiBGRiAgLiAuLi4uLi4uIC4uLi4uLgogICAgMDIwMDogRkYgRkYgRkYgRkYg
RjEgMjAgMDAgQzAgRjIgMjAgMDAgQzAgRjMgMjAgMDAgQzAgIC4uLi4uIC4uLiAuLi4gLi4KICAg
IDAyMTA6IDEwIDAwIDAyIDAwIDAwIDIxIDAwIEMwIEZGIEZGIEZGIEZGIEZGIEZGIEZGIEZGICAu
Li4uLiEuLi4uLi4uLi4uCiAgICAwMjIwOiAwMSAyMSAwMCBDMCAwMiAyMSAwMCBDMCAwMyAyMSAw
MCBDMCAxMSAwMCAwMiAwMCAgLiEuLi4hLi4uIS4uLi4uLgogICAgMDIzMDogMTAgMjEgMDAgQzAg
RkYgRkYgRkYgRkYgRkYgRkYgRkYgRkYgMTEgMjEgMDAgQzAgIC4hLi4uLi4uLi4uLi4hLi4KICAg
IDAyNDA6IDEyIDIxIDAwIEMwIDEzIDIxIDAwIEMwIDEyIDAwIDAyIDAwIDIwIDIxIDAwIEMwICAu
IS4uLiEuLi4uLi4gIS4uCiAgICAwMjUwOiBGRiBGRiBGRiBGRiBGRiBGRiBGRiBGRiAyMSAyMSAw
MCBDMCAyMiAyMSAwMCBDMCAgLi4uLi4uLi4hIS4uIiEuLgogICAgMDI2MDogMjMgMjEgMDAgQzAg
MTMgMDAgMDIgMDAgMzAgMjEgMDAgQzAgRkYgRkYgRkYgRkYgICMhLi4uLi4uMCEuLi4uLi4KICAg
IDAyNzA6IEZGIEZGIEZGIEZGIDMxIDIxIDAwIEMwIDMyIDIxIDAwIEMwIDMzIDIxIDAwIEMwICAu
Li4uMSEuLjIhLi4zIS4uCiAgICAwMjgwOiAxNCAwMCAwMiAwMCA0MCAyMSAwMCBDMCBGRiBGRiBG
RiBGRiBGRiBGRiBGRiBGRiAgLi4uLkAhLi4uLi4uLi4uLgogICAgMDI5MDogNDEgMjEgMDAgQzAg
NDIgMjEgMDAgQzAgNDMgMjEgMDAgQzAgMTUgMDAgMDIgMDAgIEEhLi5CIS4uQyEuLi4uLi4KICAg
IDAyQTA6IDUwIDIxIDAwIEMwIEZGIEZGIEZGIEZGIEZGIEZGIEZGIEZGIDUxIDIxIDAwIEMwICBQ
IS4uLi4uLi4uLi5RIS4uCiAgICAwMkIwOiA1MiAyMSAwMCBDMCA1MyAyMSAwMCBDMCAxNiAwMCAw
MiAwMCA2MCAyMSAwMCBDMCAgUiEuLlMhLi4uLi4uYCEuLgogICAgMDJDMDogRkYgRkYgRkYgRkYg
RkYgRkYgRkYgRkYgNjEgMjEgMDAgQzAgNjIgMjEgMDAgQzAgIC4uLi4uLi4uYSEuLmIhLi4KICAg
IDAyRDA6IDYzIDIxIDAwIEMwIDE3IDAwIDAyIDAwIDcwIDIxIDAwIEMwIEZGIEZGIEZGIEZGICBj
IS4uLi4uLnAhLi4uLi4uCiAgICAwMkUwOiBGRiBGRiBGRiBGRiA3MSAyMSAwMCBDMCA3MiAyMSAw
MCBDMCA3MyAyMSAwMCBDMCAgLi4uLnEhLi5yIS4ucyEuLgogICAgMDJGMDogMTggMDAgMDIgMDAg
ODAgMjEgMDAgQzAgRkYgRkYgRkYgRkYgRkYgRkYgRkYgRkYgIC4uLi4uIS4uLi4uLi4uLi4KICAg
IDAzMDA6IDgxIDIxIDAwIEMwIDgyIDIxIDAwIEMwIDgzIDIxIDAwIEMwIDE5IDAwIDAyIDAwICAu
IS4uLiEuLi4hLi4uLi4uCiAgICAwMzEwOiA5MCAyMSAwMCBDMCBGRiBGRiBGRiBGRiBGRiBGRiBG
RiBGRiA5MSAyMSAwMCBDMCAgLiEuLi4uLi4uLi4uLiEuLgogICAgMDMyMDogOTIgMjEgMDAgQzAg
OTMgMjEgMDAgQzAgMUEgMDAgMDIgMDAgQTAgMjEgMDAgQzAgIC4hLi4uIS4uLi4uLi4hLi4KICAg
IDAzMzA6IEZGIEZGIEZGIEZGIEZGIEZGIEZGIEZGIEExIDIxIDAwIEMwIEEyIDIxIDAwIEMwICAu
Li4uLi4uLi4hLi4uIS4uCiAgICAwMzQwOiBBMyAyMSAwMCBDMCAxQiAwMCAwMiAwMCBCMCAyMSAw
MCBDMCBGRiBGRiBGRiBGRiAgLiEuLi4uLi4uIS4uLi4uLgogICAgMDM1MDogRkYgRkYgRkYgRkYg
QjEgMjEgMDAgQzAgQjIgMjEgMDAgQzAgQjMgMjEgMDAgQzAgIC4uLi4uIS4uLiEuLi4hLi4KICAg
IDAzNjA6IDFDIDAwIDAyIDAwIEMwIDIxIDAwIEMwIEZGIEZGIEZGIEZGIEZGIEZGIEZGIEZGICAu
Li4uLiEuLi4uLi4uLi4uCiAgICAwMzcwOiBDMSAyMSAwMCBDMCBDMiAyMSAwMCBDMCBDMyAyMSAw
MCBDMCAxRCAwMCAwMiAwMCAgLiEuLi4hLi4uIS4uLi4uLgogICAgMDM4MDogRDAgMjEgMDAgQzAg
RkYgRkYgRkYgRkYgRkYgRkYgRkYgRkYgRDEgMjEgMDAgQzAgIC4hLi4uLi4uLi4uLi4hLi4KICAg
IDAzOTA6IEQyIDIxIDAwIEMwIEQzIDIxIDAwIEMwIDFFIDAwIDAyIDAwIEUwIDIxIDAwIEMwICAu
IS4uLiEuLi4uLi4uIS4uCiAgICAwM0EwOiBGRiBGRiBGRiBGRiBGRiBGRiBGRiBGRiBFMSAyMSAw
MCBDMCBFMiAyMSAwMCBDMCAgLi4uLi4uLi4uIS4uLiEuLgogICAgMDNCMDogRTMgMjEgMDAgQzAg
MUYgMDAgMDIgMDAgRjAgMjEgMDAgQzAgRkYgRkYgRkYgRkYgIC4hLi4uLi4uLiEuLi4uLi4KICAg
IDAzQzA6IEZGIEZGIEZGIEZGIEYxIDIxIDAwIEMwIEYyIDIxIDAwIEMwIEYzIDIxIDAwIEMwICAu
Li4uLiEuLi4hLi4uIS4uCiAgICAwM0QwOiAwMSAwMCAwMiAwMCAwMCAwMCAwNCAwMSAwMSAwMCAw
MCAwMCAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMDNFMDogMDAgMUMgMDAgMDAg
ODggMTMgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDAzRjA6IDAwIDAwIDAwIDAwIDAxIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDIwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4gLi4uCiAgICAwNDAwOiAwMCAwMCAwMiAwMCAwMCAyMCAwMCBDMCBGRiBGRiBG
RiBGRiBGRiBGRiBGRiBGRiAgLi4uLi4gLi4uLi4uLi4uLgogICAgMDQxMDogMDEgMjAgMDAgQzAg
MDIgMjAgMDAgQzAgMDMgMjAgMDAgQzAgMDEgMDAgMDIgMDAgIC4gLi4uIC4uLiAuLi4uLi4KICAg
IDA0MjA6IDEwIDIwIDAwIEMwIEZGIEZGIEZGIEZGIEZGIEZGIEZGIEZGIDExIDIwIDAwIEMwICAu
IC4uLi4uLi4uLi4uIC4uCiAgICAwNDMwOiAxMiAyMCAwMCBDMCAxMyAyMCAwMCBDMCAwMiAwMCAw
MiAwMCAyMCAyMCAwMCBDMCAgLiAuLi4gLi4uLi4uICAuLgogICAgMDQ0MDogRkYgRkYgRkYgRkYg
RkYgRkYgRkYgRkYgMjEgMjAgMDAgQzAgMjIgMjAgMDAgQzAgIC4uLi4uLi4uISAuLiIgLi4KICAg
IDA0NTA6IDIzIDIwIDAwIEMwIDAzIDAwIDAyIDAwIDMwIDIwIDAwIEMwIEZGIEZGIEZGIEZGICAj
IC4uLi4uLjAgLi4uLi4uCiAgICAwNDYwOiBGRiBGRiBGRiBGRiAzMSAyMCAwMCBDMCAzMiAyMCAw
MCBDMCAzMyAyMCAwMCBDMCAgLi4uLjEgLi4yIC4uMyAuLgogICAgMDQ3MDogMDQgMDAgMDIgMDAg
NDAgMjAgMDAgQzAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi5AIC4uLi4uLi4uLi4KICAg
IDA0ODA6IDQxIDIwIDAwIEMwIDQyIDIwIDAwIEMwIDQzIDIwIDAwIEMwIDA1IDAwIDAyIDAwICBB
IC4uQiAuLkMgLi4uLi4uCiAgICAwNDkwOiA1MCAyMCAwMCBDMCBGRiBGRiBGRiBGRiBGRiBGRiBG
RiBGRiA1MSAyMCAwMCBDMCAgUCAuLi4uLi4uLi4uUSAuLgogICAgMDRBMDogNTIgMjAgMDAgQzAg
NTMgMjAgMDAgQzAgMDYgMDAgMDIgMDAgNjAgMjAgMDAgQzAgIFIgLi5TIC4uLi4uLmAgLi4KICAg
IDA0QjA6IEZGIEZGIEZGIEZGIEZGIEZGIEZGIEZGIDYxIDIwIDAwIEMwIDYyIDIwIDAwIEMwICAu
Li4uLi4uLmEgLi5iIC4uCiAgICAwNEMwOiA2MyAyMCAwMCBDMCAwNyAwMCAwMiAwMCA3MCAyMCAw
MCBDMCBGRiBGRiBGRiBGRiAgYyAuLi4uLi5wIC4uLi4uLgogICAgMDREMDogRkYgRkYgRkYgRkYg
NzEgMjAgMDAgQzAgNzIgMjAgMDAgQzAgNzMgMjAgMDAgQzAgIC4uLi5xIC4uciAuLnMgLi4KICAg
IDA0RTA6IDA4IDAwIDAyIDAwIDgwIDIwIDAwIEMwIEZGIEZGIEZGIEZGIEZGIEZGIEZGIEZGICAu
Li4uLiAuLi4uLi4uLi4uCiAgICAwNEYwOiA4MSAyMCAwMCBDMCA4MiAyMCAwMCBDMCA4MyAyMCAw
MCBDMCAwOSAwMCAwMiAwMCAgLiAuLi4gLi4uIC4uLi4uLgogICAgMDUwMDogOTAgMjAgMDAgQzAg
RkYgRkYgRkYgRkYgRkYgRkYgRkYgRkYgOTEgMjAgMDAgQzAgIC4gLi4uLi4uLi4uLi4gLi4KICAg
IDA1MTA6IDkyIDIwIDAwIEMwIDkzIDIwIDAwIEMwIDBBIDAwIDAyIDAwIEEwIDIwIDAwIEMwICAu
IC4uLiAuLi4uLi4uIC4uCiAgICAwNTIwOiBGRiBGRiBGRiBGRiBGRiBGRiBGRiBGRiBBMSAyMCAw
MCBDMCBBMiAyMCAwMCBDMCAgLi4uLi4uLi4uIC4uLiAuLgogICAgMDUzMDogQTMgMjAgMDAgQzAg
MEIgMDAgMDIgMDAgQjAgMjAgMDAgQzAgRkYgRkYgRkYgRkYgIC4gLi4uLi4uLiAuLi4uLi4KICAg
IDA1NDA6IEZGIEZGIEZGIEZGIEIxIDIwIDAwIEMwIEIyIDIwIDAwIEMwIEIzIDIwIDAwIEMwICAu
Li4uLiAuLi4gLi4uIC4uCiAgICAwNTUwOiAwQyAwMCAwMiAwMCBDMCAyMCAwMCBDMCBGRiBGRiBG
RiBGRiBGRiBGRiBGRiBGRiAgLi4uLi4gLi4uLi4uLi4uLgogICAgMDU2MDogQzEgMjAgMDAgQzAg
QzIgMjAgMDAgQzAgQzMgMjAgMDAgQzAgMEQgMDAgMDIgMDAgIC4gLi4uIC4uLiAuLi4uLi4KICAg
IDA1NzA6IEQwIDIwIDAwIEMwIEZGIEZGIEZGIEZGIEZGIEZGIEZGIEZGIEQxIDIwIDAwIEMwICAu
IC4uLi4uLi4uLi4uIC4uCiAgICAwNTgwOiBEMiAyMCAwMCBDMCBEMyAyMCAwMCBDMCAwRSAwMCAw
MiAwMCBFMCAyMCAwMCBDMCAgLiAuLi4gLi4uLi4uLiAuLgogICAgMDU5MDogRkYgRkYgRkYgRkYg
RkYgRkYgRkYgRkYgRTEgMjAgMDAgQzAgRTIgMjAgMDAgQzAgIC4uLi4uLi4uLiAuLi4gLi4KICAg
IDA1QTA6IEUzIDIwIDAwIEMwIDBGIDAwIDAyIDAwIEYwIDIwIDAwIEMwIEZGIEZGIEZGIEZGICAu
IC4uLi4uLi4gLi4uLi4uCiAgICAwNUIwOiBGRiBGRiBGRiBGRiBGMSAyMCAwMCBDMCBGMiAyMCAw
MCBDMCBGMyAyMCAwMCBDMCAgLi4uLi4gLi4uIC4uLiAuLgogICAgMDVDMDogMTAgMDAgMDIgMDAg
MDAgMjEgMDAgQzAgRkYgRkYgRkYgRkYgRkYgRkYgRkYgRkYgIC4uLi4uIS4uLi4uLi4uLi4KICAg
IDA1RDA6IDAxIDIxIDAwIEMwIDAyIDIxIDAwIEMwIDAzIDIxIDAwIEMwIDExIDAwIDAyIDAwICAu
IS4uLiEuLi4hLi4uLi4uCiAgICAwNUUwOiAxMCAyMSAwMCBDMCBGRiBGRiBGRiBGRiBGRiBGRiBG
RiBGRiAxMSAyMSAwMCBDMCAgLiEuLi4uLi4uLi4uLiEuLgogICAgMDVGMDogMTIgMjEgMDAgQzAg
MTMgMjEgMDAgQzAgMTIgMDAgMDIgMDAgMjAgMjEgMDAgQzAgIC4hLi4uIS4uLi4uLiAhLi4KICAg
IDA2MDA6IEZGIEZGIEZGIEZGIEZGIEZGIEZGIEZGIDIxIDIxIDAwIEMwIDIyIDIxIDAwIEMwICAu
Li4uLi4uLiEhLi4iIS4uCiAgICAwNjEwOiAyMyAyMSAwMCBDMCAxMyAwMCAwMiAwMCAzMCAyMSAw
MCBDMCBGRiBGRiBGRiBGRiAgIyEuLi4uLi4wIS4uLi4uLgogICAgMDYyMDogRkYgRkYgRkYgRkYg
MzEgMjEgMDAgQzAgMzIgMjEgMDAgQzAgMzMgMjEgMDAgQzAgIC4uLi4xIS4uMiEuLjMhLi4KICAg
IDA2MzA6IDE0IDAwIDAyIDAwIDQwIDIxIDAwIEMwIEZGIEZGIEZGIEZGIEZGIEZGIEZGIEZGICAu
Li4uQCEuLi4uLi4uLi4uCiAgICAwNjQwOiA0MSAyMSAwMCBDMCA0MiAyMSAwMCBDMCA0MyAyMSAw
MCBDMCAxNSAwMCAwMiAwMCAgQSEuLkIhLi5DIS4uLi4uLgogICAgMDY1MDogNTAgMjEgMDAgQzAg
RkYgRkYgRkYgRkYgRkYgRkYgRkYgRkYgNTEgMjEgMDAgQzAgIFAhLi4uLi4uLi4uLlEhLi4KICAg
IDA2NjA6IDUyIDIxIDAwIEMwIDUzIDIxIDAwIEMwIDE2IDAwIDAyIDAwIDYwIDIxIDAwIEMwICBS
IS4uUyEuLi4uLi5gIS4uCiAgICAwNjcwOiBGRiBGRiBGRiBGRiBGRiBGRiBGRiBGRiA2MSAyMSAw
MCBDMCA2MiAyMSAwMCBDMCAgLi4uLi4uLi5hIS4uYiEuLgogICAgMDY4MDogNjMgMjEgMDAgQzAg
MTcgMDAgMDIgMDAgNzAgMjEgMDAgQzAgRkYgRkYgRkYgRkYgIGMhLi4uLi4ucCEuLi4uLi4KICAg
IDA2OTA6IEZGIEZGIEZGIEZGIDcxIDIxIDAwIEMwIDcyIDIxIDAwIEMwIDczIDIxIDAwIEMwICAu
Li4ucSEuLnIhLi5zIS4uCiAgICAwNkEwOiAxOCAwMCAwMiAwMCA4MCAyMSAwMCBDMCBGRiBGRiBG
RiBGRiBGRiBGRiBGRiBGRiAgLi4uLi4hLi4uLi4uLi4uLgogICAgMDZCMDogODEgMjEgMDAgQzAg
ODIgMjEgMDAgQzAgODMgMjEgMDAgQzAgMTkgMDAgMDIgMDAgIC4hLi4uIS4uLiEuLi4uLi4KICAg
IDA2QzA6IDkwIDIxIDAwIEMwIEZGIEZGIEZGIEZGIEZGIEZGIEZGIEZGIDkxIDIxIDAwIEMwICAu
IS4uLi4uLi4uLi4uIS4uCiAgICAwNkQwOiA5MiAyMSAwMCBDMCA5MyAyMSAwMCBDMCAxQSAwMCAw
MiAwMCBBMCAyMSAwMCBDMCAgLiEuLi4hLi4uLi4uLiEuLgogICAgMDZFMDogRkYgRkYgRkYgRkYg
RkYgRkYgRkYgRkYgQTEgMjEgMDAgQzAgQTIgMjEgMDAgQzAgIC4uLi4uLi4uLiEuLi4hLi4KICAg
IDA2RjA6IEEzIDIxIDAwIEMwIDFCIDAwIDAyIDAwIEIwIDIxIDAwIEMwIEZGIEZGIEZGIEZGICAu
IS4uLi4uLi4hLi4uLi4uCiAgICAwNzAwOiBGRiBGRiBGRiBGRiBCMSAyMSAwMCBDMCBCMiAyMSAw
MCBDMCBCMyAyMSAwMCBDMCAgLi4uLi4hLi4uIS4uLiEuLgogICAgMDcxMDogMUMgMDAgMDIgMDAg
QzAgMjEgMDAgQzAgRkYgRkYgRkYgRkYgRkYgRkYgRkYgRkYgIC4uLi4uIS4uLi4uLi4uLi4KICAg
IDA3MjA6IEMxIDIxIDAwIEMwIEMyIDIxIDAwIEMwIEMzIDIxIDAwIEMwIDFEIDAwIDAyIDAwICAu
IS4uLiEuLi4hLi4uLi4uCiAgICAwNzMwOiBEMCAyMSAwMCBDMCBGRiBGRiBGRiBGRiBGRiBGRiBG
RiBGRiBEMSAyMSAwMCBDMCAgLiEuLi4uLi4uLi4uLiEuLgogICAgMDc0MDogRDIgMjEgMDAgQzAg
RDMgMjEgMDAgQzAgMUUgMDAgMDIgMDAgRTAgMjEgMDAgQzAgIC4hLi4uIS4uLi4uLi4hLi4KICAg
IDA3NTA6IEZGIEZGIEZGIEZGIEZGIEZGIEZGIEZGIEUxIDIxIDAwIEMwIEUyIDIxIDAwIEMwICAu
Li4uLi4uLi4hLi4uIS4uCiAgICAwNzYwOiBFMyAyMSAwMCBDMCAxRiAwMCAwMiAwMCBGMCAyMSAw
MCBDMCBGRiBGRiBGRiBGRiAgLiEuLi4uLi4uIS4uLi4uLgogICAgMDc3MDogRkYgRkYgRkYgRkYg
RjEgMjEgMDAgQzAgRjIgMjEgMDAgQzAgRjMgMjEgMDAgQzAgIC4uLi4uIS4uLiEuLi4hLi4KICAg
IDA3ODA6IDA5IDAwIDAxIDAzIEZGIEZGIDAwIDAxIDAxIDAwIDAwIDAwIDEwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAwNzkwOiAwMCAxMCAwMCAwMCAwMCA0MCAwMCAwNCA5OCA2OSA0
RSBBNiAwMCAwMCAwMCAwMCAgLi4uLi5ALi4uaU4uLi4uLgogICAgMDdBMDogMDAgMUMgMDAgMDAg
ODggMTMgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDA3QjA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDEwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAwN0MwOiAwOSAwMCAwMCAwMyBGRiBGRiAwMCAwMSAwMSAwMCAw
MCAwMCAxMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMDdEMDogMDAgMTAgMDAgMDAg
MDAgNDAgMDAgMDQgOTggNkMgNEUgQTYgMDAgMDAgMDAgMDAgIC4uLi4uQC4uLmxOLi4uLi4KICAg
IDA3RTA6IDA0IDFDIDAwIDAwIDg4IDEzIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAwN0YwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAxMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMDgwMDogMDYgMDAgMDAgMDEg
MDAgMDAgMDMgMDEgMDEgMDAgMDAgMDAgMTAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDA4MTA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDA3IDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAwODIwOiAzMCA2MCA0RiAwNyAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgMGBPLi4uLi4uLi4uLi4uLgogICAgMDgzMDogMDcgMDAgMDEgMDEg
MDAgMDAgMDMgMDEgMDEgMDAgMDAgMDAgMTAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDA4NDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDA3IDAwIDAwIDAwIDAwIDAwIDEwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAwODUwOiAzMCA2MCA0RiAwNyAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwOCAwMCAwMiAwMSAgMGBPLi4uLi4uLi4uLi4uLgogICAgMDg2MDogMDAgMDAgMDMgMDEg
MDEgMDAgMDAgMDAgMTAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDA4NzA6IDAwIDAwIDAwIDAwIDA3IDAwIDAwIDAwIDAwIDAwIDEwIDAwIDMwIDYwIDRGIDA3ICAu
Li4uLi4uLi4uLi4wYE8uCiAgICAwODgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAx
MCAwMCAzMCA2MCA0RiAwNyAgLi4uLi4uLi4uLi4uMGBPLgogICAgMDg5MDogMDAgMDAgMDAgMDAg
MDkgMDAgMDAgMDIgMDAgMDEgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDA4QTA6IDEwIDAwIDAwIDAwIDAwIDEwIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDY0IDRFIEE2ICAu
Li4uLi4uLi5ALi4uZE4uCiAgICAwOEIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCA4OCAxMyAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMDhDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDA4RDA6IDAwIDEwIDAwIDAwIDA5IDAwIDAxIDAyIDAwIDAxIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAwOEUwOiAxMCAwMCAwMCAwMCAwMCAxMCAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA2NyA0RSBBNiAgLi4uLi4uLi4uQC4uLmdOLgogICAgMDhGMDogMDAgMDAgMDAgMDAg
MDQgMUMgMDAgMDAgODggMTMgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDA5MDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAwOTEwOiAwMCAxMCAwMCAwMCAwOSAwMCAwMiAwMiAwMSAwMSAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMDkyMDogMTAgMDAgMDAgMDAg
MDAgMTAgMDAgMDAgMDAgNDAgMDAgMDQgMTggNjggNEUgQTYgIC4uLi4uLi4uLkAuLi5oTi4KICAg
IDA5MzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIDg4IDEzIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAwOTQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMDk1MDogMDAgMTAgMDAgMDAg
MDkgMDAgMDMgMDIgMDEgMDEgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDA5NjA6IDEwIDAwIDAwIDAwIDAwIDEwIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDY1IDRFIEE2ICAu
Li4uLi4uLi5ALi4uZU4uCiAgICAwOTcwOiAwMCAwMCAwMCAwMCAwNCAxQyAwMCAwMCA4OCAxMyAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMDk4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDA5OTA6IDAwIDEwIDAwIDAwIDA5IDAwIDA0IDAyIDAyIDAxIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAwOUEwOiAxMCAwMCAwMCAwMCAwMCAxMCAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA2NyA0RSBBNiAgLi4uLi4uLi4uQC4uLmdOLgogICAgMDlCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgODggMTMgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDA5QzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAwOUQwOiAwMCAxMCAwMCAwMCAwOSAwMCAwNSAwMiAwMiAwMSAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMDlFMDogMTAgMDAgMDAgMDAg
MDAgMTAgMDAgMDAgMDAgNDAgMDAgMDQgOTggNjUgNEUgQTYgIC4uLi4uLi4uLkAuLi5lTi4KICAg
IDA5RjA6IDAwIDAwIDAwIDAwIDA0IDFDIDAwIDAwIDg4IDEzIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAwQTAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMEExMDogMDAgMTAgMDAgMDAg
MDkgMDAgMDAgMTAgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDBBMjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDQxIDQ5IEE2ICAu
Li4uLi4uLi5ALi4uQUkuCiAgICAwQTMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMEE0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDBBNTA6IDAwIDAyIDAwIDAwIDA5IDAwIDAxIDEwIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAwQTYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA0QiA0OSBBNiAgLi4uLi4uLi4uQC4uLktJLgogICAgMEE3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDBBODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAwQTkwOiAwMCAwMiAwMCAwMCAwOSAwMCAwMiAxMCAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMEFBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggNEIgNDkgQTYgIC4uLi4uLi4uLkAuLi5LSS4KICAg
IDBBQjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAwQUMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMEFEMDogMDAgMDIgMDAgMDAg
MDkgMDAgMDMgMTAgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDBBRTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDQ4IDQ5IEE2ICAu
Li4uLi4uLi5ALi4uSEkuCiAgICAwQUYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMEIwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDBCMTA6IDAwIDAyIDAwIDAwIDA5IDAwIDA0IDEwIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAwQjIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA0QSA0OSBBNiAgLi4uLi4uLi4uQC4uLkpJLgogICAgMEIzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDBCNDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAwQjUwOiAwMCAwMiAwMCAwMCAwOSAwMCAwNSAxMCAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMEI2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggNDkgNDkgQTYgIC4uLi4uLi4uLkAuLi5JSS4KICAg
IDBCNzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAwQjgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMEI5MDogMDAgMDIgMDAgMDAg
MDkgMDAgMDYgMTAgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDBCQTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDQ5IDQ5IEE2ICAu
Li4uLi4uLi5ALi4uSUkuCiAgICAwQkIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMEJDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDBCRDA6IDAwIDAyIDAwIDAwIDA5IDAwIDA3IDEwIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAwQkUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA0QSA0OSBBNiAgLi4uLi4uLi4uQC4uLkpJLgogICAgMEJGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDBDMDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAwQzEwOiAwMCAwMiAwMCAwMCAwOSAwMCAwOCAxMCAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMEMyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggNDIgNDkgQTYgIC4uLi4uLi4uLkAuLi5CSS4KICAg
IDBDMzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAwQzQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMEM1MDogMDAgMDIgMDAgMDAg
MDkgMDAgMDkgMTAgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDBDNjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDQ4IDQ5IEE2ICAu
Li4uLi4uLi5ALi4uSEkuCiAgICAwQzcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMEM4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDBDOTA6IDAwIDAyIDAwIDAwIDA5IDAwIDBBIDEwIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAwQ0EwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA0NiA0OSBBNiAgLi4uLi4uLi4uQC4uLkZJLgogICAgMENCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDBDQzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAwQ0QwOiAwMCAwMiAwMCAwMCAwOSAwMCAwQiAxMCAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMENFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggNDcgNDkgQTYgIC4uLi4uLi4uLkAuLi5HSS4KICAg
IDBDRjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAwRDAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMEQxMDogMDAgMDIgMDAgMDAg
MDkgMDAgMEMgMTAgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDBEMjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDQ3IDQ5IEE2ICAu
Li4uLi4uLi5ALi4uR0kuCiAgICAwRDMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMEQ0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDBENTA6IDAwIDAyIDAwIDAwIDA5IDAwIDBEIDEwIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAwRDYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA0MiA0OSBBNiAgLi4uLi4uLi4uQC4uLkJJLgogICAgMEQ3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDBEODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAwRDkwOiAwMCAwMiAwMCAwMCAwOSAwMCAwRSAxMCAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMERBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggNDUgNDkgQTYgIC4uLi4uLi4uLkAuLi5FSS4KICAg
IDBEQjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAwREMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMEREMDogMDAgMDIgMDAgMDAg
MDkgMDAgMEYgMTAgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDBERTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDQ2IDQ5IEE2ICAu
Li4uLi4uLi5ALi4uRkkuCiAgICAwREYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMEUwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDBFMTA6IDAwIDAyIDAwIDAwIDA5IDAwIDEwIDEwIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAwRTIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA0MyA0OSBBNiAgLi4uLi4uLi4uQC4uLkNJLgogICAgMEUzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDBFNDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAwRTUwOiAwMCAwMiAwMCAwMCAwOSAwMCAxMSAxMCAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMEU2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggNDUgNDkgQTYgIC4uLi4uLi4uLkAuLi5FSS4KICAg
IDBFNzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAwRTgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMEU5MDogMDAgMDIgMDAgMDAg
MDkgMDAgMTIgMTAgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDBFQTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDQzIDQ5IEE2ICAu
Li4uLi4uLi5ALi4uQ0kuCiAgICAwRUIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMEVDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDBFRDA6IDAwIDAyIDAwIDAwIDA5IDAwIDEzIDEwIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAwRUUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA0NCA0OSBBNiAgLi4uLi4uLi4uQC4uLkRJLgogICAgMEVGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDBGMDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAwRjEwOiAwMCAwMiAwMCAwMCAwOSAwMCAxNCAxMCAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMEYyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggNDQgNDkgQTYgIC4uLi4uLi4uLkAuLi5ESS4KICAg
IDBGMzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAwRjQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMEY1MDogMDAgMDIgMDAgMDAg
MDkgMDAgMTUgMTAgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDBGNjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDUwIDRCIEE2ICAu
Li4uLi4uLi5ALi4uUEsuCiAgICAwRjcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMEY4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDBGOTA6IDAwIDAyIDAwIDAwIDA5IDAwIDE2IDEwIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAwRkEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA1RiA0QiBBNiAgLi4uLi4uLi4uQC4uLl9LLgogICAgMEZCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDBGQzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAwRkQwOiAwMCAwMiAwMCAwMCAwOSAwMCAxNyAxMCAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMEZFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggNUYgNEIgQTYgIC4uLi4uLi4uLkAuLi5fSy4KICAg
IDBGRjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAxMDAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMTAxMDogMDAgMDIgMDAgMDAg
MDkgMDAgMTggMTAgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDEwMjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDVCIDRCIEE2ICAu
Li4uLi4uLi5ALi4uW0suCiAgICAxMDMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMTA0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDEwNTA6IDAwIDAyIDAwIDAwIDA5IDAwIDE5IDEwIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAxMDYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA1RSA0QiBBNiAgLi4uLi4uLi4uQC4uLl5LLgogICAgMTA3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDEwODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAxMDkwOiAwMCAwMiAwMCAwMCAwOSAwMCAxQSAxMCAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMTBBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggNUUgNEIgQTYgIC4uLi4uLi4uLkAuLi5eSy4KICAg
IDEwQjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAxMEMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMTBEMDogMDAgMDIgMDAgMDAg
MDkgMDAgMUIgMTAgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDEwRTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDVCIDRCIEE2ICAu
Li4uLi4uLi5ALi4uW0suCiAgICAxMEYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMTEwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDExMTA6IDAwIDAyIDAwIDAwIDA5IDAwIDFDIDEwIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAxMTIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA1RCA0QiBBNiAgLi4uLi4uLi4uQC4uLl1LLgogICAgMTEzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDExNDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAxMTUwOiAwMCAwMiAwMCAwMCAwOSAwMCAxRCAxMCAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMTE2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggNUMgNEIgQTYgIC4uLi4uLi4uLkAuLi5cSy4KICAg
IDExNzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAxMTgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMTE5MDogMDAgMDIgMDAgMDAg
MDkgMDAgMUUgMTAgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDExQTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDVDIDRCIEE2ICAu
Li4uLi4uLi5ALi4uXEsuCiAgICAxMUIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMTFDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDExRDA6IDAwIDAyIDAwIDAwIDA5IDAwIDFGIDEwIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAxMUUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA1RCA0QiBBNiAgLi4uLi4uLi4uQC4uLl1LLgogICAgMTFGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDEyMDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAxMjEwOiAwMCAwMiAwMCAwMCAwOSAwMCAyMCAxMCAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uIC4uLi4uLi4uLgogICAgMTIyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggNTAgNEIgQTYgIC4uLi4uLi4uLkAuLi5QSy4KICAg
IDEyMzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAxMjQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMTI1MDogMDAgMDIgMDAgMDAg
MDkgMDAgMjEgMTAgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLiEuLi4uLi4uLi4KICAg
IDEyNjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDVBIDRCIEE2ICAu
Li4uLi4uLi5ALi4uWksuCiAgICAxMjcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMTI4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDEyOTA6IDAwIDAyIDAwIDAwIDA5IDAwIDIyIDEwIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4iLi4uLi4uLi4uCiAgICAxMkEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA1QSA0QiBBNiAgLi4uLi4uLi4uQC4uLlpLLgogICAgMTJCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDEyQzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAxMkQwOiAwMCAwMiAwMCAwMCAwOSAwMCAyMyAxMCAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uIy4uLi4uLi4uLgogICAgMTJFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggNTcgNEIgQTYgIC4uLi4uLi4uLkAuLi5XSy4KICAg
IDEyRjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAxMzAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMTMxMDogMDAgMDIgMDAgMDAg
MDkgMDAgMjQgMTAgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLiQuLi4uLi4uLi4KICAg
IDEzMjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDU5IDRCIEE2ICAu
Li4uLi4uLi5ALi4uWUsuCiAgICAxMzMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMTM0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDEzNTA6IDAwIDAyIDAwIDAwIDA5IDAwIDI1IDEwIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4lLi4uLi4uLi4uCiAgICAxMzYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA1OCA0QiBBNiAgLi4uLi4uLi4uQC4uLlhLLgogICAgMTM3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDEzODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAxMzkwOiAwMCAwMiAwMCAwMCAwOSAwMCAyNiAxMCAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uJi4uLi4uLi4uLgogICAgMTNBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggNTggNEIgQTYgIC4uLi4uLi4uLkAuLi5YSy4KICAg
IDEzQjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAxM0MwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMTNEMDogMDAgMDIgMDAgMDAg
MDkgMDAgMjcgMTAgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLicuLi4uLi4uLi4KICAg
IDEzRTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDU5IDRCIEE2ICAu
Li4uLi4uLi5ALi4uWUsuCiAgICAxM0YwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMTQwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDE0MTA6IDAwIDAyIDAwIDAwIDA5IDAwIDI4IDEwIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4oLi4uLi4uLi4uCiAgICAxNDIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA1MSA0QiBBNiAgLi4uLi4uLi4uQC4uLlFLLgogICAgMTQzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDE0NDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAxNDUwOiAwMCAwMiAwMCAwMCAwOSAwMCAyOSAxMCAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uKS4uLi4uLi4uLgogICAgMTQ2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggNTcgNEIgQTYgIC4uLi4uLi4uLkAuLi5XSy4KICAg
IDE0NzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAxNDgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMTQ5MDogMDAgMDIgMDAgMDAg
MDkgMDAgMkEgMTAgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLiouLi4uLi4uLi4KICAg
IDE0QTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDU1IDRCIEE2ICAu
Li4uLi4uLi5ALi4uVUsuCiAgICAxNEIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMTRDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDE0RDA6IDAwIDAyIDAwIDAwIDA5IDAwIDJCIDEwIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4rLi4uLi4uLi4uCiAgICAxNEUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA1NiA0QiBBNiAgLi4uLi4uLi4uQC4uLlZLLgogICAgMTRGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDE1MDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAxNTEwOiAwMCAwMiAwMCAwMCAwOSAwMCAyQyAxMCAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLC4uLi4uLi4uLgogICAgMTUyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggNTYgNEIgQTYgIC4uLi4uLi4uLkAuLi5WSy4KICAg
IDE1MzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAxNTQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMTU1MDogMDAgMDIgMDAgMDAg
MDkgMDAgMkQgMTAgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi0uLi4uLi4uLi4KICAg
IDE1NjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDUxIDRCIEE2ICAu
Li4uLi4uLi5ALi4uUUsuCiAgICAxNTcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMTU4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDE1OTA6IDAwIDAyIDAwIDAwIDA5IDAwIDJFIDEwIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAxNUEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA1NCA0QiBBNiAgLi4uLi4uLi4uQC4uLlRLLgogICAgMTVCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDE1QzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAxNUQwOiAwMCAwMiAwMCAwMCAwOSAwMCAyRiAxMCAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLy4uLi4uLi4uLgogICAgMTVFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggNTUgNEIgQTYgIC4uLi4uLi4uLkAuLi5VSy4KICAg
IDE1RjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAxNjAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMTYxMDogMDAgMDIgMDAgMDAg
MDkgMDAgMzAgMTAgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLjAuLi4uLi4uLi4KICAg
IDE2MjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDUyIDRCIEE2ICAu
Li4uLi4uLi5ALi4uUksuCiAgICAxNjMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMTY0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDE2NTA6IDAwIDAyIDAwIDAwIDA5IDAwIDMxIDEwIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4xLi4uLi4uLi4uCiAgICAxNjYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA1NCA0QiBBNiAgLi4uLi4uLi4uQC4uLlRLLgogICAgMTY3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDE2ODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAxNjkwOiAwMCAwMiAwMCAwMCAwOSAwMCAzMiAxMCAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uMi4uLi4uLi4uLgogICAgMTZBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggNTIgNEIgQTYgIC4uLi4uLi4uLkAuLi5SSy4KICAg
IDE2QjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAxNkMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMTZEMDogMDAgMDIgMDAgMDAg
MDkgMDAgMzMgMTAgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLjMuLi4uLi4uLi4KICAg
IDE2RTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDUzIDRCIEE2ICAu
Li4uLi4uLi5ALi4uU0suCiAgICAxNkYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMTcwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDE3MTA6IDAwIDAyIDAwIDAwIDA5IDAwIDM0IDEwIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi40Li4uLi4uLi4uCiAgICAxNzIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA1MyA0QiBBNiAgLi4uLi4uLi4uQC4uLlNLLgogICAgMTczMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDE3NDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAxNzUwOiAwMCAwMiAwMCAwMCAwOSAwMCAzNSAxMCAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uNS4uLi4uLi4uLgogICAgMTc2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggNDAgNEIgQTYgIC4uLi4uLi4uLkAuLi5ASy4KICAg
IDE3NzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAxNzgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMTc5MDogMDAgMDIgMDAgMDAg
MDkgMDAgMzYgMTAgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLjYuLi4uLi4uLi4KICAg
IDE3QTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDRGIDRCIEE2ICAu
Li4uLi4uLi5ALi4uT0suCiAgICAxN0IwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMTdDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDE3RDA6IDAwIDAyIDAwIDAwIDA5IDAwIDM3IDEwIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi43Li4uLi4uLi4uCiAgICAxN0UwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA0RiA0QiBBNiAgLi4uLi4uLi4uQC4uLk9LLgogICAgMTdGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDE4MDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAxODEwOiAwMCAwMiAwMCAwMCAwOSAwMCAzOCAxMCAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uOC4uLi4uLi4uLgogICAgMTgyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggNEIgNEIgQTYgIC4uLi4uLi4uLkAuLi5LSy4KICAg
IDE4MzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAxODQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMTg1MDogMDAgMDIgMDAgMDAg
MDkgMDAgMzkgMTAgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLjkuLi4uLi4uLi4KICAg
IDE4NjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDRFIDRCIEE2ICAu
Li4uLi4uLi5ALi4uTksuCiAgICAxODcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMTg4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDE4OTA6IDAwIDAyIDAwIDAwIDA5IDAwIDNBIDEwIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi46Li4uLi4uLi4uCiAgICAxOEEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA0RSA0QiBBNiAgLi4uLi4uLi4uQC4uLk5LLgogICAgMThCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDE4QzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAxOEQwOiAwMCAwMiAwMCAwMCAwOSAwMCAzQiAxMCAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uOy4uLi4uLi4uLgogICAgMThFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggNEIgNEIgQTYgIC4uLi4uLi4uLkAuLi5LSy4KICAg
IDE4RjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAxOTAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMTkxMDogMDAgMDIgMDAgMDAg
MDkgMDAgM0MgMTAgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLjwuLi4uLi4uLi4KICAg
IDE5MjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDREIDRCIEE2ICAu
Li4uLi4uLi5ALi4uTUsuCiAgICAxOTMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMTk0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDE5NTA6IDAwIDAyIDAwIDAwIDA5IDAwIDNEIDEwIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi49Li4uLi4uLi4uCiAgICAxOTYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA0QyA0QiBBNiAgLi4uLi4uLi4uQC4uLkxLLgogICAgMTk3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDE5ODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAxOTkwOiAwMCAwMiAwMCAwMCAwOSAwMCAzRSAxMCAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uPi4uLi4uLi4uLgogICAgMTlBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggNEMgNEIgQTYgIC4uLi4uLi4uLkAuLi5MSy4KICAg
IDE5QjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAxOUMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMTlEMDogMDAgMDIgMDAgMDAg
MDkgMDAgM0YgMTAgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLj8uLi4uLi4uLi4KICAg
IDE5RTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDREIDRCIEE2ICAu
Li4uLi4uLi5ALi4uTUsuCiAgICAxOUYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMUEwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDFBMTA6IDAwIDAyIDAwIDAwIDA5IDAwIDQwIDEwIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5ALi4uLi4uLi4uCiAgICAxQTIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA0MCA0QiBBNiAgLi4uLi4uLi4uQC4uLkBLLgogICAgMUEzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDFBNDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAxQTUwOiAwMCAwMiAwMCAwMCAwOSAwMCA0MSAxMCAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uQS4uLi4uLi4uLgogICAgMUE2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggNEEgNEIgQTYgIC4uLi4uLi4uLkAuLi5KSy4KICAg
IDFBNzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAxQTgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMUE5MDogMDAgMDIgMDAgMDAg
MDkgMDAgNDIgMTAgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLkIuLi4uLi4uLi4KICAg
IDFBQTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDRBIDRCIEE2ICAu
Li4uLi4uLi5ALi4uSksuCiAgICAxQUIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMUFDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDFBRDA6IDAwIDAyIDAwIDAwIDA5IDAwIDQzIDEwIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5DLi4uLi4uLi4uCiAgICAxQUUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA0NyA0QiBBNiAgLi4uLi4uLi4uQC4uLkdLLgogICAgMUFGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDFCMDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAxQjEwOiAwMCAwMiAwMCAwMCAwOSAwMCA0NCAxMCAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uRC4uLi4uLi4uLgogICAgMUIyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggNDkgNEIgQTYgIC4uLi4uLi4uLkAuLi5JSy4KICAg
IDFCMzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAxQjQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMUI1MDogMDAgMDIgMDAgMDAg
MDkgMDAgNDUgMTAgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLkUuLi4uLi4uLi4KICAg
IDFCNjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDQ4IDRCIEE2ICAu
Li4uLi4uLi5ALi4uSEsuCiAgICAxQjcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMUI4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDFCOTA6IDAwIDAyIDAwIDAwIDA5IDAwIDQ2IDEwIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5GLi4uLi4uLi4uCiAgICAxQkEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA0OCA0QiBBNiAgLi4uLi4uLi4uQC4uLkhLLgogICAgMUJCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDFCQzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAxQkQwOiAwMCAwMiAwMCAwMCAwOSAwMCA0NyAxMCAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uRy4uLi4uLi4uLgogICAgMUJFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggNDkgNEIgQTYgIC4uLi4uLi4uLkAuLi5JSy4KICAg
IDFCRjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAxQzAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMUMxMDogMDAgMDIgMDAgMDAg
MDkgMDAgNDggMTAgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLkguLi4uLi4uLi4KICAg
IDFDMjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDQxIDRCIEE2ICAu
Li4uLi4uLi5ALi4uQUsuCiAgICAxQzMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMUM0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDFDNTA6IDAwIDAyIDAwIDAwIDA5IDAwIDQ5IDEwIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5JLi4uLi4uLi4uCiAgICAxQzYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA0NyA0QiBBNiAgLi4uLi4uLi4uQC4uLkdLLgogICAgMUM3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDFDODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAxQzkwOiAwMCAwMiAwMCAwMCAwOSAwMCA0QSAxMCAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uSi4uLi4uLi4uLgogICAgMUNBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggNDUgNEIgQTYgIC4uLi4uLi4uLkAuLi5FSy4KICAg
IDFDQjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAxQ0MwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMUNEMDogMDAgMDIgMDAgMDAg
MDkgMDAgNEIgMTAgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLksuLi4uLi4uLi4KICAg
IDFDRTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDQ2IDRCIEE2ICAu
Li4uLi4uLi5ALi4uRksuCiAgICAxQ0YwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMUQwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDFEMTA6IDAwIDAyIDAwIDAwIDA5IDAwIDRDIDEwIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5MLi4uLi4uLi4uCiAgICAxRDIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA0NiA0QiBBNiAgLi4uLi4uLi4uQC4uLkZLLgogICAgMUQzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDFENDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAxRDUwOiAwMCAwMiAwMCAwMCAwOSAwMCA0RCAxMCAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uTS4uLi4uLi4uLgogICAgMUQ2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggNDEgNEIgQTYgIC4uLi4uLi4uLkAuLi5BSy4KICAg
IDFENzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAxRDgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMUQ5MDogMDAgMDIgMDAgMDAg
MDkgMDAgNEUgMTAgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLk4uLi4uLi4uLi4KICAg
IDFEQTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDQ0IDRCIEE2ICAu
Li4uLi4uLi5ALi4uREsuCiAgICAxREIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMURDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDFERDA6IDAwIDAyIDAwIDAwIDA5IDAwIDRGIDEwIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5PLi4uLi4uLi4uCiAgICAxREUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA0NSA0QiBBNiAgLi4uLi4uLi4uQC4uLkVLLgogICAgMURGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDFFMDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAxRTEwOiAwMCAwMiAwMCAwMCAwOSAwMCA1MCAxMCAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uUC4uLi4uLi4uLgogICAgMUUyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggNDIgNEIgQTYgIC4uLi4uLi4uLkAuLi5CSy4KICAg
IDFFMzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAxRTQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMUU1MDogMDAgMDIgMDAgMDAg
MDkgMDAgNTEgMTAgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLlEuLi4uLi4uLi4KICAg
IDFFNjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDQ0IDRCIEE2ICAu
Li4uLi4uLi5ALi4uREsuCiAgICAxRTcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMUU4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDFFOTA6IDAwIDAyIDAwIDAwIDA5IDAwIDUyIDEwIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5SLi4uLi4uLi4uCiAgICAxRUEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA0MiA0QiBBNiAgLi4uLi4uLi4uQC4uLkJLLgogICAgMUVCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDFFQzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAxRUQwOiAwMCAwMiAwMCAwMCAwOSAwMCA1MyAxMCAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uUy4uLi4uLi4uLgogICAgMUVFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggNDMgNEIgQTYgIC4uLi4uLi4uLkAuLi5DSy4KICAg
IDFFRjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAxRjAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMUYxMDogMDAgMDIgMDAgMDAg
MDkgMDAgNTQgMTAgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLlQuLi4uLi4uLi4KICAg
IDFGMjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDQzIDRCIEE2ICAu
Li4uLi4uLi5ALi4uQ0suCiAgICAxRjMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMUY0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDFGNTA6IDAwIDAyIDAwIDAwIDA5IDAwIDU1IDEwIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5VLi4uLi4uLi4uCiAgICAxRjYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA3MCA0NSBBNCAgLi4uLi4uLi4uQC4uLnBFLgogICAgMUY3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDFGODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAxRjkwOiAwMCAwMiAwMCAwMCAwOSAwMCA1NiAxMCAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uVi4uLi4uLi4uLgogICAgMUZBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggN0YgNDUgQTQgIC4uLi4uLi4uLkAuLi4uRS4KICAg
IDFGQjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAxRkMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMUZEMDogMDAgMDIgMDAgMDAg
MDkgMDAgNTcgMTAgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLlcuLi4uLi4uLi4KICAg
IDFGRTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDdGIDQ1IEE0ICAu
Li4uLi4uLi5ALi4uLkUuCiAgICAxRkYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMjAwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDIwMTA6IDAwIDAyIDAwIDAwIDA5IDAwIDU4IDEwIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5YLi4uLi4uLi4uCiAgICAyMDIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA3QiA0NSBBNCAgLi4uLi4uLi4uQC4uLntFLgogICAgMjAzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDIwNDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAyMDUwOiAwMCAwMiAwMCAwMCAwOSAwMCA1OSAxMCAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uWS4uLi4uLi4uLgogICAgMjA2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggN0UgNDUgQTQgIC4uLi4uLi4uLkAuLi5+RS4KICAg
IDIwNzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAyMDgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMjA5MDogMDAgMDIgMDAgMDAg
MDkgMDAgNUEgMTAgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLlouLi4uLi4uLi4KICAg
IDIwQTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDdFIDQ1IEE0ICAu
Li4uLi4uLi5ALi4ufkUuCiAgICAyMEIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMjBDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDIwRDA6IDAwIDAyIDAwIDAwIDA5IDAwIDVCIDEwIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5bLi4uLi4uLi4uCiAgICAyMEUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA3QiA0NSBBNCAgLi4uLi4uLi4uQC4uLntFLgogICAgMjBGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDIxMDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAyMTEwOiAwMCAwMiAwMCAwMCAwOSAwMCA1QyAxMCAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uXC4uLi4uLi4uLgogICAgMjEyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggN0QgNDUgQTQgIC4uLi4uLi4uLkAuLi59RS4KICAg
IDIxMzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAyMTQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMjE1MDogMDAgMDIgMDAgMDAg
MDkgMDAgNUQgMTAgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLl0uLi4uLi4uLi4KICAg
IDIxNjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDdDIDQ1IEE0ICAu
Li4uLi4uLi5ALi4ufEUuCiAgICAyMTcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMjE4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDIxOTA6IDAwIDAyIDAwIDAwIDA5IDAwIDVFIDEwIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5eLi4uLi4uLi4uCiAgICAyMUEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA3QyA0NSBBNCAgLi4uLi4uLi4uQC4uLnxFLgogICAgMjFCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDIxQzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAyMUQwOiAwMCAwMiAwMCAwMCAwOSAwMCA1RiAxMCAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uXy4uLi4uLi4uLgogICAgMjFFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggN0QgNDUgQTQgIC4uLi4uLi4uLkAuLi59RS4KICAg
IDIxRjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAyMjAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMjIxMDogMDAgMDIgMDAgMDAg
MDkgMDAgNjAgMTAgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLmAuLi4uLi4uLi4KICAg
IDIyMjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDcwIDQ1IEE0ICAu
Li4uLi4uLi5ALi4ucEUuCiAgICAyMjMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMjI0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDIyNTA6IDAwIDAyIDAwIDAwIDA5IDAwIDYxIDEwIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5hLi4uLi4uLi4uCiAgICAyMjYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA3QSA0NSBBNCAgLi4uLi4uLi4uQC4uLnpFLgogICAgMjI3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDIyODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAyMjkwOiAwMCAwMiAwMCAwMCAwOSAwMCA2MiAxMCAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uYi4uLi4uLi4uLgogICAgMjJBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggN0EgNDUgQTQgIC4uLi4uLi4uLkAuLi56RS4KICAg
IDIyQjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAyMkMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMjJEMDogMDAgMDIgMDAgMDAg
MDkgMDAgNjMgMTAgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLmMuLi4uLi4uLi4KICAg
IDIyRTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDc3IDQ1IEE0ICAu
Li4uLi4uLi5ALi4ud0UuCiAgICAyMkYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMjMwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDIzMTA6IDAwIDAyIDAwIDAwIDA5IDAwIDY0IDEwIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5kLi4uLi4uLi4uCiAgICAyMzIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA3OSA0NSBBNCAgLi4uLi4uLi4uQC4uLnlFLgogICAgMjMzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDIzNDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAyMzUwOiAwMCAwMiAwMCAwMCAwOSAwMCA2NSAxMCAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uZS4uLi4uLi4uLgogICAgMjM2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggNzggNDUgQTQgIC4uLi4uLi4uLkAuLi54RS4KICAg
IDIzNzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAyMzgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMjM5MDogMDAgMDIgMDAgMDAg
MDkgMDAgNjYgMTAgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLmYuLi4uLi4uLi4KICAg
IDIzQTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDc4IDQ1IEE0ICAu
Li4uLi4uLi5ALi4ueEUuCiAgICAyM0IwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMjNDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDIzRDA6IDAwIDAyIDAwIDAwIDA5IDAwIDY3IDEwIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5nLi4uLi4uLi4uCiAgICAyM0UwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA3OSA0NSBBNCAgLi4uLi4uLi4uQC4uLnlFLgogICAgMjNGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDI0MDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAyNDEwOiAwMCAwMiAwMCAwMCAwOSAwMCA2OCAxMCAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uaC4uLi4uLi4uLgogICAgMjQyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggNzEgNDUgQTQgIC4uLi4uLi4uLkAuLi5xRS4KICAg
IDI0MzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAyNDQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMjQ1MDogMDAgMDIgMDAgMDAg
MDkgMDAgNjkgMTAgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLmkuLi4uLi4uLi4KICAg
IDI0NjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDc3IDQ1IEE0ICAu
Li4uLi4uLi5ALi4ud0UuCiAgICAyNDcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMjQ4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDI0OTA6IDAwIDAyIDAwIDAwIDA5IDAwIDZBIDEwIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5qLi4uLi4uLi4uCiAgICAyNEEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA3NSA0NSBBNCAgLi4uLi4uLi4uQC4uLnVFLgogICAgMjRCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDI0QzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAyNEQwOiAwMCAwMiAwMCAwMCAwOSAwMCA2QiAxMCAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uay4uLi4uLi4uLgogICAgMjRFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggNzYgNDUgQTQgIC4uLi4uLi4uLkAuLi52RS4KICAg
IDI0RjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAyNTAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMjUxMDogMDAgMDIgMDAgMDAg
MDkgMDAgNkMgMTAgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLmwuLi4uLi4uLi4KICAg
IDI1MjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDc2IDQ1IEE0ICAu
Li4uLi4uLi5ALi4udkUuCiAgICAyNTMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMjU0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDI1NTA6IDAwIDAyIDAwIDAwIDA5IDAwIDZEIDEwIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5tLi4uLi4uLi4uCiAgICAyNTYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA3MSA0NSBBNCAgLi4uLi4uLi4uQC4uLnFFLgogICAgMjU3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDI1ODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAyNTkwOiAwMCAwMiAwMCAwMCAwOSAwMCA2RSAxMCAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4ubi4uLi4uLi4uLgogICAgMjVBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggNzQgNDUgQTQgIC4uLi4uLi4uLkAuLi50RS4KICAg
IDI1QjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAyNUMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMjVEMDogMDAgMDIgMDAgMDAg
MDkgMDAgNkYgMTAgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLm8uLi4uLi4uLi4KICAg
IDI1RTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDc1IDQ1IEE0ICAu
Li4uLi4uLi5ALi4udUUuCiAgICAyNUYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMjYwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDI2MTA6IDAwIDAyIDAwIDAwIDA5IDAwIDcwIDEwIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5wLi4uLi4uLi4uCiAgICAyNjIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA3MiA0NSBBNCAgLi4uLi4uLi4uQC4uLnJFLgogICAgMjYzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDI2NDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAyNjUwOiAwMCAwMiAwMCAwMCAwOSAwMCA3MSAxMCAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4ucS4uLi4uLi4uLgogICAgMjY2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggNzQgNDUgQTQgIC4uLi4uLi4uLkAuLi50RS4KICAg
IDI2NzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAyNjgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMjY5MDogMDAgMDIgMDAgMDAg
MDkgMDAgNzIgMTAgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLnIuLi4uLi4uLi4KICAg
IDI2QTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDcyIDQ1IEE0ICAu
Li4uLi4uLi5ALi4uckUuCiAgICAyNkIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMjZDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDI2RDA6IDAwIDAyIDAwIDAwIDA5IDAwIDczIDEwIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5zLi4uLi4uLi4uCiAgICAyNkUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA3MyA0NSBBNCAgLi4uLi4uLi4uQC4uLnNFLgogICAgMjZGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDI3MDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAyNzEwOiAwMCAwMiAwMCAwMCAwOSAwMCA3NCAxMCAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4udC4uLi4uLi4uLgogICAgMjcyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggNzMgNDUgQTQgIC4uLi4uLi4uLkAuLi5zRS4KICAg
IDI3MzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAyNzQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMjc1MDogMDAgMDIgMDAgMDAg
MDkgMDAgNzUgMTAgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLnUuLi4uLi4uLi4KICAg
IDI3NjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDYwIDQ1IEE0ICAu
Li4uLi4uLi5ALi4uYEUuCiAgICAyNzcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMjc4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDI3OTA6IDAwIDAyIDAwIDAwIDA5IDAwIDc2IDEwIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi52Li4uLi4uLi4uCiAgICAyN0EwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA2RiA0NSBBNCAgLi4uLi4uLi4uQC4uLm9FLgogICAgMjdCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDI3QzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAyN0QwOiAwMCAwMiAwMCAwMCAwOSAwMCA3NyAxMCAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4udy4uLi4uLi4uLgogICAgMjdFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggNkYgNDUgQTQgIC4uLi4uLi4uLkAuLi5vRS4KICAg
IDI3RjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAyODAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMjgxMDogMDAgMDIgMDAgMDAg
MDkgMDAgNzggMTAgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLnguLi4uLi4uLi4KICAg
IDI4MjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDZCIDQ1IEE0ICAu
Li4uLi4uLi5ALi4ua0UuCiAgICAyODMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMjg0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDI4NTA6IDAwIDAyIDAwIDAwIDA5IDAwIDc5IDEwIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi55Li4uLi4uLi4uCiAgICAyODYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA2RSA0NSBBNCAgLi4uLi4uLi4uQC4uLm5FLgogICAgMjg3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDI4ODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAyODkwOiAwMCAwMiAwMCAwMCAwOSAwMCA3QSAxMCAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uei4uLi4uLi4uLgogICAgMjhBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggNkUgNDUgQTQgIC4uLi4uLi4uLkAuLi5uRS4KICAg
IDI4QjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAyOEMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMjhEMDogMDAgMDIgMDAgMDAg
MDkgMDAgN0IgMTAgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLnsuLi4uLi4uLi4KICAg
IDI4RTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDZCIDQ1IEE0ICAu
Li4uLi4uLi5ALi4ua0UuCiAgICAyOEYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMjkwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDI5MTA6IDAwIDAyIDAwIDAwIDA5IDAwIDdDIDEwIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi58Li4uLi4uLi4uCiAgICAyOTIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA2RCA0NSBBNCAgLi4uLi4uLi4uQC4uLm1FLgogICAgMjkzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDI5NDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAyOTUwOiAwMCAwMiAwMCAwMCAwOSAwMCA3RCAxMCAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4ufS4uLi4uLi4uLgogICAgMjk2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggNkMgNDUgQTQgIC4uLi4uLi4uLkAuLi5sRS4KICAg
IDI5NzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAyOTgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMjk5MDogMDAgMDIgMDAgMDAg
MDkgMDAgN0UgMTAgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLn4uLi4uLi4uLi4KICAg
IDI5QTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDZDIDQ1IEE0ICAu
Li4uLi4uLi5ALi4ubEUuCiAgICAyOUIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMjlDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDI5RDA6IDAwIDAyIDAwIDAwIDA5IDAwIDdGIDEwIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAyOUUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA2RCA0NSBBNCAgLi4uLi4uLi4uQC4uLm1FLgogICAgMjlGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDJBMDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAyQTEwOiAwMCAwMiAwMCAwMCAwOSAwMCA4MCAxMCAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMkEyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggNjAgNDUgQTQgIC4uLi4uLi4uLkAuLi5gRS4KICAg
IDJBMzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAyQTQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMkE1MDogMDAgMDIgMDAgMDAg
MDkgMDAgODEgMTAgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDJBNjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDZBIDQ1IEE0ICAu
Li4uLi4uLi5ALi4uakUuCiAgICAyQTcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMkE4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDJBOTA6IDAwIDAyIDAwIDAwIDA5IDAwIDgyIDEwIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAyQUEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA2QSA0NSBBNCAgLi4uLi4uLi4uQC4uLmpFLgogICAgMkFCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDJBQzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAyQUQwOiAwMCAwMiAwMCAwMCAwOSAwMCA4MyAxMCAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMkFFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggNjcgNDUgQTQgIC4uLi4uLi4uLkAuLi5nRS4KICAg
IDJBRjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAyQjAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMkIxMDogMDAgMDIgMDAgMDAg
MDkgMDAgODQgMTAgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDJCMjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDY5IDQ1IEE0ICAu
Li4uLi4uLi5ALi4uaUUuCiAgICAyQjMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMkI0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDJCNTA6IDAwIDAyIDAwIDAwIDA5IDAwIDg1IDEwIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAyQjYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA2OCA0NSBBNCAgLi4uLi4uLi4uQC4uLmhFLgogICAgMkI3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDJCODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAyQjkwOiAwMCAwMiAwMCAwMCAwOSAwMCA4NiAxMCAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMkJBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggNjggNDUgQTQgIC4uLi4uLi4uLkAuLi5oRS4KICAg
IDJCQjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAyQkMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMkJEMDogMDAgMDIgMDAgMDAg
MDkgMDAgODcgMTAgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDJCRTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDY5IDQ1IEE0ICAu
Li4uLi4uLi5ALi4uaUUuCiAgICAyQkYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMkMwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDJDMTA6IDAwIDAyIDAwIDAwIDA5IDAwIDg4IDEwIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAyQzIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA2MSA0NSBBNCAgLi4uLi4uLi4uQC4uLmFFLgogICAgMkMzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDJDNDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAyQzUwOiAwMCAwMiAwMCAwMCAwOSAwMCA4OSAxMCAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMkM2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggNjcgNDUgQTQgIC4uLi4uLi4uLkAuLi5nRS4KICAg
IDJDNzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAyQzgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMkM5MDogMDAgMDIgMDAgMDAg
MDkgMDAgOEEgMTAgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDJDQTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDY1IDQ1IEE0ICAu
Li4uLi4uLi5ALi4uZUUuCiAgICAyQ0IwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMkNDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDJDRDA6IDAwIDAyIDAwIDAwIDA5IDAwIDhCIDEwIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAyQ0UwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA2NiA0NSBBNCAgLi4uLi4uLi4uQC4uLmZFLgogICAgMkNGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDJEMDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAyRDEwOiAwMCAwMiAwMCAwMCAwOSAwMCA4QyAxMCAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMkQyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggNjYgNDUgQTQgIC4uLi4uLi4uLkAuLi5mRS4KICAg
IDJEMzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAyRDQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMkQ1MDogMDAgMDIgMDAgMDAg
MDkgMDAgOEQgMTAgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDJENjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDYxIDQ1IEE0ICAu
Li4uLi4uLi5ALi4uYUUuCiAgICAyRDcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMkQ4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDJEOTA6IDAwIDAyIDAwIDAwIDA5IDAwIDhFIDEwIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAyREEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA2NCA0NSBBNCAgLi4uLi4uLi4uQC4uLmRFLgogICAgMkRCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDJEQzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAyREQwOiAwMCAwMiAwMCAwMCAwOSAwMCA4RiAxMCAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMkRFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggNjUgNDUgQTQgIC4uLi4uLi4uLkAuLi5lRS4KICAg
IDJERjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAyRTAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMkUxMDogMDAgMDIgMDAgMDAg
MDkgMDAgOTAgMTAgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDJFMjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDYyIDQ1IEE0ICAu
Li4uLi4uLi5ALi4uYkUuCiAgICAyRTMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMkU0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDJFNTA6IDAwIDAyIDAwIDAwIDA5IDAwIDkxIDEwIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAyRTYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA2NCA0NSBBNCAgLi4uLi4uLi4uQC4uLmRFLgogICAgMkU3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDJFODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAyRTkwOiAwMCAwMiAwMCAwMCAwOSAwMCA5MiAxMCAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMkVBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggNjIgNDUgQTQgIC4uLi4uLi4uLkAuLi5iRS4KICAg
IDJFQjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAyRUMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMkVEMDogMDAgMDIgMDAgMDAg
MDkgMDAgOTMgMTAgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDJFRTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDYzIDQ1IEE0ICAu
Li4uLi4uLi5ALi4uY0UuCiAgICAyRUYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMkYwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDJGMTA6IDAwIDAyIDAwIDAwIDA5IDAwIDk0IDEwIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAyRjIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA2MyA0NSBBNCAgLi4uLi4uLi4uQC4uLmNFLgogICAgMkYzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDJGNDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAyRjUwOiAwMCAwMiAwMCAwMCAwOSAwMCA5NSAxMCAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMkY2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggNTAgNDUgQTQgIC4uLi4uLi4uLkAuLi5QRS4KICAg
IDJGNzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAyRjgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMkY5MDogMDAgMDIgMDAgMDAg
MDkgMDAgOTYgMTAgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDJGQTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDVGIDQ1IEE0ICAu
Li4uLi4uLi5ALi4uX0UuCiAgICAyRkIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMkZDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDJGRDA6IDAwIDAyIDAwIDAwIDA5IDAwIDk3IDEwIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAyRkUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA1RiA0NSBBNCAgLi4uLi4uLi4uQC4uLl9FLgogICAgMkZGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDMwMDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAzMDEwOiAwMCAwMiAwMCAwMCAwOSAwMCA5OCAxMCAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMzAyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggNUIgNDUgQTQgIC4uLi4uLi4uLkAuLi5bRS4KICAg
IDMwMzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAzMDQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMzA1MDogMDAgMDIgMDAgMDAg
MDkgMDAgOTkgMTAgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDMwNjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDVFIDQ1IEE0ICAu
Li4uLi4uLi5ALi4uXkUuCiAgICAzMDcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMzA4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDMwOTA6IDAwIDAyIDAwIDAwIDA5IDAwIDlBIDEwIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAzMEEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA1RSA0NSBBNCAgLi4uLi4uLi4uQC4uLl5FLgogICAgMzBCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDMwQzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAzMEQwOiAwMCAwMiAwMCAwMCAwOSAwMCA5QiAxMCAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMzBFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggNUIgNDUgQTQgIC4uLi4uLi4uLkAuLi5bRS4KICAg
IDMwRjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAzMTAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMzExMDogMDAgMDIgMDAgMDAg
MDkgMDAgOUMgMTAgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDMxMjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDVEIDQ1IEE0ICAu
Li4uLi4uLi5ALi4uXUUuCiAgICAzMTMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMzE0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDMxNTA6IDAwIDAyIDAwIDAwIDA5IDAwIDlEIDEwIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAzMTYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA1QyA0NSBBNCAgLi4uLi4uLi4uQC4uLlxFLgogICAgMzE3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDMxODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAzMTkwOiAwMCAwMiAwMCAwMCAwOSAwMCA5RSAxMCAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMzFBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggNUMgNDUgQTQgIC4uLi4uLi4uLkAuLi5cRS4KICAg
IDMxQjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAzMUMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMzFEMDogMDAgMDIgMDAgMDAg
MDkgMDAgOUYgMTAgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDMxRTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDVEIDQ1IEE0ICAu
Li4uLi4uLi5ALi4uXUUuCiAgICAzMUYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMzIwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDMyMTA6IDAwIDAyIDAwIDAwIDA5IDAwIEEwIDEwIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAzMjIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA1MCA0NSBBNCAgLi4uLi4uLi4uQC4uLlBFLgogICAgMzIzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDMyNDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAzMjUwOiAwMCAwMiAwMCAwMCAwOSAwMCBBMSAxMCAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMzI2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggNUEgNDUgQTQgIC4uLi4uLi4uLkAuLi5aRS4KICAg
IDMyNzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAzMjgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMzI5MDogMDAgMDIgMDAgMDAg
MDkgMDAgQTIgMTAgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDMyQTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDVBIDQ1IEE0ICAu
Li4uLi4uLi5ALi4uWkUuCiAgICAzMkIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMzJDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDMyRDA6IDAwIDAyIDAwIDAwIDA5IDAwIEEzIDEwIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAzMkUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA1NyA0NSBBNCAgLi4uLi4uLi4uQC4uLldFLgogICAgMzJGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDMzMDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAzMzEwOiAwMCAwMiAwMCAwMCAwOSAwMCBBNCAxMCAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMzMyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggNTkgNDUgQTQgIC4uLi4uLi4uLkAuLi5ZRS4KICAg
IDMzMzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAzMzQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMzM1MDogMDAgMDIgMDAgMDAg
MDkgMDAgQTUgMTAgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDMzNjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDU4IDQ1IEE0ICAu
Li4uLi4uLi5ALi4uWEUuCiAgICAzMzcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMzM4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDMzOTA6IDAwIDAyIDAwIDAwIDA5IDAwIEE2IDEwIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAzM0EwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA1OCA0NSBBNCAgLi4uLi4uLi4uQC4uLlhFLgogICAgMzNCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDMzQzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAzM0QwOiAwMCAwMiAwMCAwMCAwOSAwMCBBNyAxMCAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMzNFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggNTkgNDUgQTQgIC4uLi4uLi4uLkAuLi5ZRS4KICAg
IDMzRjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAzNDAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMzQxMDogMDAgMDIgMDAgMDAg
MDkgMDAgQTggMTAgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDM0MjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDUxIDQ1IEE0ICAu
Li4uLi4uLi5ALi4uUUUuCiAgICAzNDMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMzQ0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDM0NTA6IDAwIDAyIDAwIDAwIDA5IDAwIEE5IDEwIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAzNDYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA1NyA0NSBBNCAgLi4uLi4uLi4uQC4uLldFLgogICAgMzQ3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDM0ODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAzNDkwOiAwMCAwMiAwMCAwMCAwOSAwMCBBQSAxMCAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMzRBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggNTUgNDUgQTQgIC4uLi4uLi4uLkAuLi5VRS4KICAg
IDM0QjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAzNEMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMzREMDogMDAgMDIgMDAgMDAg
MDkgMDAgQUIgMTAgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDM0RTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDU2IDQ1IEE0ICAu
Li4uLi4uLi5ALi4uVkUuCiAgICAzNEYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMzUwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDM1MTA6IDAwIDAyIDAwIDAwIDA5IDAwIEFDIDEwIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAzNTIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA1NiA0NSBBNCAgLi4uLi4uLi4uQC4uLlZFLgogICAgMzUzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDM1NDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAzNTUwOiAwMCAwMiAwMCAwMCAwOSAwMCBBRCAxMCAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMzU2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggNTEgNDUgQTQgIC4uLi4uLi4uLkAuLi5RRS4KICAg
IDM1NzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAzNTgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMzU5MDogMDAgMDIgMDAgMDAg
MDkgMDAgQUUgMTAgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDM1QTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDU0IDQ1IEE0ICAu
Li4uLi4uLi5ALi4uVEUuCiAgICAzNUIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMzVDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDM1RDA6IDAwIDAyIDAwIDAwIDA5IDAwIEFGIDEwIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAzNUUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA1NSA0NSBBNCAgLi4uLi4uLi4uQC4uLlVFLgogICAgMzVGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDM2MDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAzNjEwOiAwMCAwMiAwMCAwMCAwOSAwMCBCMCAxMCAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMzYyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggNTIgNDUgQTQgIC4uLi4uLi4uLkAuLi5SRS4KICAg
IDM2MzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAzNjQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMzY1MDogMDAgMDIgMDAgMDAg
MDkgMDAgQjEgMTAgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDM2NjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDU0IDQ1IEE0ICAu
Li4uLi4uLi5ALi4uVEUuCiAgICAzNjcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMzY4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDM2OTA6IDAwIDAyIDAwIDAwIDA5IDAwIEIyIDEwIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAzNkEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA1MiA0NSBBNCAgLi4uLi4uLi4uQC4uLlJFLgogICAgMzZCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDM2QzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAzNkQwOiAwMCAwMiAwMCAwMCAwOSAwMCBCMyAxMCAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMzZFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggNTMgNDUgQTQgIC4uLi4uLi4uLkAuLi5TRS4KICAg
IDM2RjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAzNzAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMzcxMDogMDAgMDIgMDAgMDAg
MDkgMDAgQjQgMTAgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDM3MjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDUzIDQ1IEE0ICAu
Li4uLi4uLi5ALi4uU0UuCiAgICAzNzMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMzc0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDM3NTA6IDAwIDAyIDAwIDAwIDA5IDAwIEI1IDEwIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAzNzYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA0MCA0NSBBNCAgLi4uLi4uLi4uQC4uLkBFLgogICAgMzc3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDM3ODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAzNzkwOiAwMCAwMiAwMCAwMCAwOSAwMCBCNiAxMCAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMzdBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggNEYgNDUgQTQgIC4uLi4uLi4uLkAuLi5PRS4KICAg
IDM3QjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAzN0MwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMzdEMDogMDAgMDIgMDAgMDAg
MDkgMDAgQjcgMTAgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDM3RTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDRGIDQ1IEE0ICAu
Li4uLi4uLi5ALi4uT0UuCiAgICAzN0YwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMzgwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDM4MTA6IDAwIDAyIDAwIDAwIDA5IDAwIEI4IDEwIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAzODIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA0QiA0NSBBNCAgLi4uLi4uLi4uQC4uLktFLgogICAgMzgzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDM4NDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAzODUwOiAwMCAwMiAwMCAwMCAwOSAwMCBCOSAxMCAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMzg2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggNEUgNDUgQTQgIC4uLi4uLi4uLkAuLi5ORS4KICAg
IDM4NzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAzODgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMzg5MDogMDAgMDIgMDAgMDAg
MDkgMDAgQkEgMTAgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDM4QTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDRFIDQ1IEE0ICAu
Li4uLi4uLi5ALi4uTkUuCiAgICAzOEIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMzhDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDM4RDA6IDAwIDAyIDAwIDAwIDA5IDAwIEJCIDEwIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAzOEUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA0QiA0NSBBNCAgLi4uLi4uLi4uQC4uLktFLgogICAgMzhGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDM5MDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAzOTEwOiAwMCAwMiAwMCAwMCAwOSAwMCBCQyAxMCAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMzkyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggNEQgNDUgQTQgIC4uLi4uLi4uLkAuLi5NRS4KICAg
IDM5MzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAzOTQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMzk1MDogMDAgMDIgMDAgMDAg
MDkgMDAgQkQgMTAgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDM5NjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDRDIDQ1IEE0ICAu
Li4uLi4uLi5ALi4uTEUuCiAgICAzOTcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMzk4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDM5OTA6IDAwIDAyIDAwIDAwIDA5IDAwIEJFIDEwIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAzOUEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA0QyA0NSBBNCAgLi4uLi4uLi4uQC4uLkxFLgogICAgMzlCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDM5QzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAzOUQwOiAwMCAwMiAwMCAwMCAwOSAwMCBCRiAxMCAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMzlFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggNEQgNDUgQTQgIC4uLi4uLi4uLkAuLi5NRS4KICAg
IDM5RjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAzQTAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgM0ExMDogMDAgMDIgMDAgMDAg
MDkgMDAgQzAgMTAgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDNBMjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDQwIDQ1IEE0ICAu
Li4uLi4uLi5ALi4uQEUuCiAgICAzQTMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgM0E0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDNBNTA6IDAwIDAyIDAwIDAwIDA5IDAwIEMxIDEwIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAzQTYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA0QSA0NSBBNCAgLi4uLi4uLi4uQC4uLkpFLgogICAgM0E3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDNBODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAzQTkwOiAwMCAwMiAwMCAwMCAwOSAwMCBDMiAxMCAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgM0FBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggNEEgNDUgQTQgIC4uLi4uLi4uLkAuLi5KRS4KICAg
IDNBQjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAzQUMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgM0FEMDogMDAgMDIgMDAgMDAg
MDkgMDAgQzMgMTAgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDNBRTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDQ3IDQ1IEE0ICAu
Li4uLi4uLi5ALi4uR0UuCiAgICAzQUYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgM0IwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDNCMTA6IDAwIDAyIDAwIDAwIDA5IDAwIEM0IDEwIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAzQjIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA0OSA0NSBBNCAgLi4uLi4uLi4uQC4uLklFLgogICAgM0IzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDNCNDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAzQjUwOiAwMCAwMiAwMCAwMCAwOSAwMCBDNSAxMCAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgM0I2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggNDggNDUgQTQgIC4uLi4uLi4uLkAuLi5IRS4KICAg
IDNCNzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAzQjgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgM0I5MDogMDAgMDIgMDAgMDAg
MDkgMDAgQzYgMTAgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDNCQTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDQ4IDQ1IEE0ICAu
Li4uLi4uLi5ALi4uSEUuCiAgICAzQkIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgM0JDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDNCRDA6IDAwIDAyIDAwIDAwIDA5IDAwIEM3IDEwIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAzQkUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA0OSA0NSBBNCAgLi4uLi4uLi4uQC4uLklFLgogICAgM0JGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDNDMDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAzQzEwOiAwMCAwMiAwMCAwMCAwOSAwMCBDOCAxMCAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgM0MyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggNDEgNDUgQTQgIC4uLi4uLi4uLkAuLi5BRS4KICAg
IDNDMzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAzQzQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgM0M1MDogMDAgMDIgMDAgMDAg
MDkgMDAgQzkgMTAgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDNDNjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDQ3IDQ1IEE0ICAu
Li4uLi4uLi5ALi4uR0UuCiAgICAzQzcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgM0M4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDNDOTA6IDAwIDAyIDAwIDAwIDA5IDAwIENBIDEwIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAzQ0EwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA0NSA0NSBBNCAgLi4uLi4uLi4uQC4uLkVFLgogICAgM0NCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDNDQzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAzQ0QwOiAwMCAwMiAwMCAwMCAwOSAwMCBDQiAxMCAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgM0NFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggNDYgNDUgQTQgIC4uLi4uLi4uLkAuLi5GRS4KICAg
IDNDRjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAzRDAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgM0QxMDogMDAgMDIgMDAgMDAg
MDkgMDAgQ0MgMTAgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDNEMjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDQ2IDQ1IEE0ICAu
Li4uLi4uLi5ALi4uRkUuCiAgICAzRDMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgM0Q0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDNENTA6IDAwIDAyIDAwIDAwIDA5IDAwIENEIDEwIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAzRDYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA0MSA0NSBBNCAgLi4uLi4uLi4uQC4uLkFFLgogICAgM0Q3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDNEODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAzRDkwOiAwMCAwMiAwMCAwMCAwOSAwMCBDRSAxMCAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgM0RBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggNDQgNDUgQTQgIC4uLi4uLi4uLkAuLi5ERS4KICAg
IDNEQjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAzREMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgM0REMDogMDAgMDIgMDAgMDAg
MDkgMDAgQ0YgMTAgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDNERTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDQ1IDQ1IEE0ICAu
Li4uLi4uLi5ALi4uRUUuCiAgICAzREYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgM0UwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDNFMTA6IDAwIDAyIDAwIDAwIDA5IDAwIEQwIDEwIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAzRTIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA0MiA0NSBBNCAgLi4uLi4uLi4uQC4uLkJFLgogICAgM0UzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDNFNDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAzRTUwOiAwMCAwMiAwMCAwMCAwOSAwMCBEMSAxMCAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgM0U2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggNDQgNDUgQTQgIC4uLi4uLi4uLkAuLi5ERS4KICAg
IDNFNzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAzRTgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgM0U5MDogMDAgMDIgMDAgMDAg
MDkgMDAgRDIgMTAgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDNFQTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDQyIDQ1IEE0ICAu
Li4uLi4uLi5ALi4uQkUuCiAgICAzRUIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgM0VDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDNFRDA6IDAwIDAyIDAwIDAwIDA5IDAwIEQzIDEwIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAzRUUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA0MyA0NSBBNCAgLi4uLi4uLi4uQC4uLkNFLgogICAgM0VGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDNGMDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAzRjEwOiAwMCAwMiAwMCAwMCAwOSAwMCBENCAxMCAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgM0YyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggNDMgNDUgQTQgIC4uLi4uLi4uLkAuLi5DRS4KICAg
IDNGMzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAzRjQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgM0Y1MDogMDAgMDIgMDAgMDAg
MDkgMDAgRDUgMTAgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDNGNjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDMwIDQ1IEE0ICAu
Li4uLi4uLi5ALi4uMEUuCiAgICAzRjcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgM0Y4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDNGOTA6IDAwIDAyIDAwIDAwIDA5IDAwIEQ2IDEwIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAzRkEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCAzRiA0NSBBNCAgLi4uLi4uLi4uQC4uLj9FLgogICAgM0ZCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDNGQzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICAzRkQwOiAwMCAwMiAwMCAwMCAwOSAwMCBENyAxMCAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgM0ZFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggM0YgNDUgQTQgIC4uLi4uLi4uLkAuLi4/RS4KICAg
IDNGRjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA0MDAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNDAxMDogMDAgMDIgMDAgMDAg
MDkgMDAgRDggMTAgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDQwMjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDNCIDQ1IEE0ICAu
Li4uLi4uLi5ALi4uO0UuCiAgICA0MDMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNDA0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDQwNTA6IDAwIDAyIDAwIDAwIDA5IDAwIEQ5IDEwIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA0MDYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCAzRSA0NSBBNCAgLi4uLi4uLi4uQC4uLj5FLgogICAgNDA3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDQwODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA0MDkwOiAwMCAwMiAwMCAwMCAwOSAwMCBEQSAxMCAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNDBBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggM0UgNDUgQTQgIC4uLi4uLi4uLkAuLi4+RS4KICAg
IDQwQjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA0MEMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNDBEMDogMDAgMDIgMDAgMDAg
MDkgMDAgREIgMTAgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDQwRTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDNCIDQ1IEE0ICAu
Li4uLi4uLi5ALi4uO0UuCiAgICA0MEYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNDEwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDQxMTA6IDAwIDAyIDAwIDAwIDA5IDAwIERDIDEwIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA0MTIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCAzRCA0NSBBNCAgLi4uLi4uLi4uQC4uLj1FLgogICAgNDEzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDQxNDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA0MTUwOiAwMCAwMiAwMCAwMCAwOSAwMCBERCAxMCAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNDE2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggM0MgNDUgQTQgIC4uLi4uLi4uLkAuLi48RS4KICAg
IDQxNzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA0MTgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNDE5MDogMDAgMDIgMDAgMDAg
MDkgMDAgREUgMTAgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDQxQTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDNDIDQ1IEE0ICAu
Li4uLi4uLi5ALi4uPEUuCiAgICA0MUIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNDFDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDQxRDA6IDAwIDAyIDAwIDAwIDA5IDAwIERGIDEwIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA0MUUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCAzRCA0NSBBNCAgLi4uLi4uLi4uQC4uLj1FLgogICAgNDFGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDQyMDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA0MjEwOiAwMCAwMiAwMCAwMCAwOSAwMCBFMCAxMCAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNDIyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggMzAgNDUgQTQgIC4uLi4uLi4uLkAuLi4wRS4KICAg
IDQyMzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA0MjQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNDI1MDogMDAgMDIgMDAgMDAg
MDkgMDAgRTEgMTAgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDQyNjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDNBIDQ1IEE0ICAu
Li4uLi4uLi5ALi4uOkUuCiAgICA0MjcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNDI4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDQyOTA6IDAwIDAyIDAwIDAwIDA5IDAwIEUyIDEwIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA0MkEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCAzQSA0NSBBNCAgLi4uLi4uLi4uQC4uLjpFLgogICAgNDJCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDQyQzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA0MkQwOiAwMCAwMiAwMCAwMCAwOSAwMCBFMyAxMCAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNDJFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggMzcgNDUgQTQgIC4uLi4uLi4uLkAuLi43RS4KICAg
IDQyRjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA0MzAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNDMxMDogMDAgMDIgMDAgMDAg
MDkgMDAgRTQgMTAgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDQzMjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDM5IDQ1IEE0ICAu
Li4uLi4uLi5ALi4uOUUuCiAgICA0MzMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNDM0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDQzNTA6IDAwIDAyIDAwIDAwIDA5IDAwIEU1IDEwIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA0MzYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCAzOCA0NSBBNCAgLi4uLi4uLi4uQC4uLjhFLgogICAgNDM3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDQzODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA0MzkwOiAwMCAwMiAwMCAwMCAwOSAwMCBFNiAxMCAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNDNBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggMzggNDUgQTQgIC4uLi4uLi4uLkAuLi44RS4KICAg
IDQzQjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA0M0MwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNDNEMDogMDAgMDIgMDAgMDAg
MDkgMDAgRTcgMTAgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDQzRTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDM5IDQ1IEE0ICAu
Li4uLi4uLi5ALi4uOUUuCiAgICA0M0YwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNDQwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDQ0MTA6IDAwIDAyIDAwIDAwIDA5IDAwIEU4IDEwIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA0NDIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCAzMSA0NSBBNCAgLi4uLi4uLi4uQC4uLjFFLgogICAgNDQzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDQ0NDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA0NDUwOiAwMCAwMiAwMCAwMCAwOSAwMCBFOSAxMCAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNDQ2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggMzcgNDUgQTQgIC4uLi4uLi4uLkAuLi43RS4KICAg
IDQ0NzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA0NDgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNDQ5MDogMDAgMDIgMDAgMDAg
MDkgMDAgRUEgMTAgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDQ0QTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDM1IDQ1IEE0ICAu
Li4uLi4uLi5ALi4uNUUuCiAgICA0NEIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNDRDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDQ0RDA6IDAwIDAyIDAwIDAwIDA5IDAwIEVCIDEwIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA0NEUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCAzNiA0NSBBNCAgLi4uLi4uLi4uQC4uLjZFLgogICAgNDRGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDQ1MDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA0NTEwOiAwMCAwMiAwMCAwMCAwOSAwMCBFQyAxMCAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNDUyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggMzYgNDUgQTQgIC4uLi4uLi4uLkAuLi42RS4KICAg
IDQ1MzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA0NTQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNDU1MDogMDAgMDIgMDAgMDAg
MDkgMDAgRUQgMTAgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDQ1NjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDMxIDQ1IEE0ICAu
Li4uLi4uLi5ALi4uMUUuCiAgICA0NTcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNDU4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDQ1OTA6IDAwIDAyIDAwIDAwIDA5IDAwIEVFIDEwIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA0NUEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCAzNCA0NSBBNCAgLi4uLi4uLi4uQC4uLjRFLgogICAgNDVCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDQ1QzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA0NUQwOiAwMCAwMiAwMCAwMCAwOSAwMCBFRiAxMCAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNDVFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggMzUgNDUgQTQgIC4uLi4uLi4uLkAuLi41RS4KICAg
IDQ1RjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA0NjAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNDYxMDogMDAgMDIgMDAgMDAg
MDkgMDAgRjAgMTAgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDQ2MjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDMyIDQ1IEE0ICAu
Li4uLi4uLi5ALi4uMkUuCiAgICA0NjMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNDY0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDQ2NTA6IDAwIDAyIDAwIDAwIDA5IDAwIEYxIDEwIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA0NjYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCAzNCA0NSBBNCAgLi4uLi4uLi4uQC4uLjRFLgogICAgNDY3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDQ2ODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA0NjkwOiAwMCAwMiAwMCAwMCAwOSAwMCBGMiAxMCAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNDZBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggMzIgNDUgQTQgIC4uLi4uLi4uLkAuLi4yRS4KICAg
IDQ2QjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA0NkMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNDZEMDogMDAgMDIgMDAgMDAg
MDkgMDAgRjMgMTAgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDQ2RTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDMzIDQ1IEE0ICAu
Li4uLi4uLi5ALi4uM0UuCiAgICA0NkYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNDcwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDQ3MTA6IDAwIDAyIDAwIDAwIDA5IDAwIEY0IDEwIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA0NzIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCAzMyA0NSBBNCAgLi4uLi4uLi4uQC4uLjNFLgogICAgNDczMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDQ3NDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA0NzUwOiAwMCAwMiAwMCAwMCAwOSAwMCBGNSAxMCAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNDc2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggMjAgNDUgQTQgIC4uLi4uLi4uLkAuLi4gRS4KICAg
IDQ3NzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA0NzgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNDc5MDogMDAgMDIgMDAgMDAg
MDkgMDAgRjYgMTAgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDQ3QTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDJGIDQ1IEE0ICAu
Li4uLi4uLi5ALi4uL0UuCiAgICA0N0IwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNDdDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDQ3RDA6IDAwIDAyIDAwIDAwIDA5IDAwIEY3IDEwIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA0N0UwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCAyRiA0NSBBNCAgLi4uLi4uLi4uQC4uLi9FLgogICAgNDdGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDQ4MDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA0ODEwOiAwMCAwMiAwMCAwMCAwOSAwMCBGOCAxMCAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNDgyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggMkIgNDUgQTQgIC4uLi4uLi4uLkAuLi4rRS4KICAg
IDQ4MzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA0ODQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNDg1MDogMDAgMDIgMDAgMDAg
MDkgMDAgRjkgMTAgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDQ4NjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDJFIDQ1IEE0ICAu
Li4uLi4uLi5ALi4uLkUuCiAgICA0ODcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNDg4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDQ4OTA6IDAwIDAyIDAwIDAwIDA5IDAwIEZBIDEwIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA0OEEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCAyRSA0NSBBNCAgLi4uLi4uLi4uQC4uLi5FLgogICAgNDhCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDQ4QzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA0OEQwOiAwMCAwMiAwMCAwMCAwOSAwMCBGQiAxMCAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNDhFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggMkIgNDUgQTQgIC4uLi4uLi4uLkAuLi4rRS4KICAg
IDQ4RjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA0OTAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNDkxMDogMDAgMDIgMDAgMDAg
MDkgMDAgRkMgMTAgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDQ5MjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDJEIDQ1IEE0ICAu
Li4uLi4uLi5ALi4uLUUuCiAgICA0OTMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNDk0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDQ5NTA6IDAwIDAyIDAwIDAwIDA5IDAwIEZEIDEwIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA0OTYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCAyQyA0NSBBNCAgLi4uLi4uLi4uQC4uLixFLgogICAgNDk3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDQ5ODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA0OTkwOiAwMCAwMiAwMCAwMCAwOSAwMCBGRSAxMCAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNDlBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggMkMgNDUgQTQgIC4uLi4uLi4uLkAuLi4sRS4KICAg
IDQ5QjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA0OUMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNDlEMDogMDAgMDIgMDAgMDAg
MDkgMDAgRkYgMTAgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDQ5RTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDJEIDQ1IEE0ICAu
Li4uLi4uLi5ALi4uLUUuCiAgICA0OUYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNEEwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDRBMTA6IDAwIDAyIDAwIDAwIDA5IDAwIDAwIDExIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA0QTIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCAyMCA0NSBBNCAgLi4uLi4uLi4uQC4uLiBFLgogICAgNEEzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDRBNDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA0QTUwOiAwMCAwMiAwMCAwMCAwOSAwMCAwMSAxMSAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNEE2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggMkEgNDUgQTQgIC4uLi4uLi4uLkAuLi4qRS4KICAg
IDRBNzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA0QTgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNEE5MDogMDAgMDIgMDAgMDAg
MDkgMDAgMDIgMTEgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDRBQTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDJBIDQ1IEE0ICAu
Li4uLi4uLi5ALi4uKkUuCiAgICA0QUIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNEFDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDRBRDA6IDAwIDAyIDAwIDAwIDA5IDAwIDAzIDExIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA0QUUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCAyNyA0NSBBNCAgLi4uLi4uLi4uQC4uLidFLgogICAgNEFGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDRCMDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA0QjEwOiAwMCAwMiAwMCAwMCAwOSAwMCAwNCAxMSAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNEIyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggMjkgNDUgQTQgIC4uLi4uLi4uLkAuLi4pRS4KICAg
IDRCMzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA0QjQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNEI1MDogMDAgMDIgMDAgMDAg
MDkgMDAgMDUgMTEgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDRCNjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDI4IDQ1IEE0ICAu
Li4uLi4uLi5ALi4uKEUuCiAgICA0QjcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNEI4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDRCOTA6IDAwIDAyIDAwIDAwIDA5IDAwIDA2IDExIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA0QkEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCAyOCA0NSBBNCAgLi4uLi4uLi4uQC4uLihFLgogICAgNEJCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDRCQzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA0QkQwOiAwMCAwMiAwMCAwMCAwOSAwMCAwNyAxMSAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNEJFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggMjkgNDUgQTQgIC4uLi4uLi4uLkAuLi4pRS4KICAg
IDRCRjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA0QzAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNEMxMDogMDAgMDIgMDAgMDAg
MDkgMDAgMDggMTEgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDRDMjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDIxIDQ1IEE0ICAu
Li4uLi4uLi5ALi4uIUUuCiAgICA0QzMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNEM0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDRDNTA6IDAwIDAyIDAwIDAwIDA5IDAwIDA5IDExIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA0QzYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCAyNyA0NSBBNCAgLi4uLi4uLi4uQC4uLidFLgogICAgNEM3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDRDODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA0QzkwOiAwMCAwMiAwMCAwMCAwOSAwMCAwQSAxMSAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNENBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggMjUgNDUgQTQgIC4uLi4uLi4uLkAuLi4lRS4KICAg
IDRDQjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA0Q0MwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNENEMDogMDAgMDIgMDAgMDAg
MDkgMDAgMEIgMTEgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDRDRTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDI2IDQ1IEE0ICAu
Li4uLi4uLi5ALi4uJkUuCiAgICA0Q0YwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNEQwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDREMTA6IDAwIDAyIDAwIDAwIDA5IDAwIDBDIDExIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA0RDIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCAyNiA0NSBBNCAgLi4uLi4uLi4uQC4uLiZFLgogICAgNEQzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDRENDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA0RDUwOiAwMCAwMiAwMCAwMCAwOSAwMCAwRCAxMSAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNEQ2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggMjEgNDUgQTQgIC4uLi4uLi4uLkAuLi4hRS4KICAg
IDRENzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA0RDgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNEQ5MDogMDAgMDIgMDAgMDAg
MDkgMDAgMEUgMTEgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDREQTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDI0IDQ1IEE0ICAu
Li4uLi4uLi5ALi4uJEUuCiAgICA0REIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNERDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDRERDA6IDAwIDAyIDAwIDAwIDA5IDAwIDBGIDExIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA0REUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCAyNSA0NSBBNCAgLi4uLi4uLi4uQC4uLiVFLgogICAgNERGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDRFMDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA0RTEwOiAwMCAwMiAwMCAwMCAwOSAwMCAxMCAxMSAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNEUyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggMjIgNDUgQTQgIC4uLi4uLi4uLkAuLi4iRS4KICAg
IDRFMzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA0RTQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNEU1MDogMDAgMDIgMDAgMDAg
MDkgMDAgMTEgMTEgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDRFNjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDI0IDQ1IEE0ICAu
Li4uLi4uLi5ALi4uJEUuCiAgICA0RTcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNEU4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDRFOTA6IDAwIDAyIDAwIDAwIDA5IDAwIDEyIDExIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA0RUEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCAyMiA0NSBBNCAgLi4uLi4uLi4uQC4uLiJFLgogICAgNEVCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDRFQzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA0RUQwOiAwMCAwMiAwMCAwMCAwOSAwMCAxMyAxMSAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNEVFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggMjMgNDUgQTQgIC4uLi4uLi4uLkAuLi4jRS4KICAg
IDRFRjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA0RjAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNEYxMDogMDAgMDIgMDAgMDAg
MDkgMDAgMTQgMTEgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDRGMjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDIzIDQ1IEE0ICAu
Li4uLi4uLi5ALi4uI0UuCiAgICA0RjMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNEY0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDRGNTA6IDAwIDAyIDAwIDAwIDA5IDAwIDE1IDExIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA0RjYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCAxMCA0NSBBNCAgLi4uLi4uLi4uQC4uLi5FLgogICAgNEY3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDRGODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA0RjkwOiAwMCAwMiAwMCAwMCAwOSAwMCAxNiAxMSAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNEZBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggMUYgNDUgQTQgIC4uLi4uLi4uLkAuLi4uRS4KICAg
IDRGQjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA0RkMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNEZEMDogMDAgMDIgMDAgMDAg
MDkgMDAgMTcgMTEgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDRGRTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDFGIDQ1IEE0ICAu
Li4uLi4uLi5ALi4uLkUuCiAgICA0RkYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNTAwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDUwMTA6IDAwIDAyIDAwIDAwIDA5IDAwIDE4IDExIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA1MDIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCAxQiA0NSBBNCAgLi4uLi4uLi4uQC4uLi5FLgogICAgNTAzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDUwNDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA1MDUwOiAwMCAwMiAwMCAwMCAwOSAwMCAxOSAxMSAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNTA2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggMUUgNDUgQTQgIC4uLi4uLi4uLkAuLi4uRS4KICAg
IDUwNzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA1MDgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNTA5MDogMDAgMDIgMDAgMDAg
MDkgMDAgMUEgMTEgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDUwQTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDFFIDQ1IEE0ICAu
Li4uLi4uLi5ALi4uLkUuCiAgICA1MEIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNTBDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDUwRDA6IDAwIDAyIDAwIDAwIDA5IDAwIDFCIDExIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA1MEUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCAxQiA0NSBBNCAgLi4uLi4uLi4uQC4uLi5FLgogICAgNTBGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDUxMDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA1MTEwOiAwMCAwMiAwMCAwMCAwOSAwMCAxQyAxMSAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNTEyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggMUQgNDUgQTQgIC4uLi4uLi4uLkAuLi4uRS4KICAg
IDUxMzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA1MTQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNTE1MDogMDAgMDIgMDAgMDAg
MDkgMDAgMUQgMTEgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDUxNjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDFDIDQ1IEE0ICAu
Li4uLi4uLi5ALi4uLkUuCiAgICA1MTcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNTE4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDUxOTA6IDAwIDAyIDAwIDAwIDA5IDAwIDFFIDExIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA1MUEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCAxQyA0NSBBNCAgLi4uLi4uLi4uQC4uLi5FLgogICAgNTFCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDUxQzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA1MUQwOiAwMCAwMiAwMCAwMCAwOSAwMCAxRiAxMSAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNTFFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggMUQgNDUgQTQgIC4uLi4uLi4uLkAuLi4uRS4KICAg
IDUxRjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA1MjAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNTIxMDogMDAgMDIgMDAgMDAg
MDkgMDAgMjAgMTEgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLiAuLi4uLi4uLi4KICAg
IDUyMjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDEwIDQ1IEE0ICAu
Li4uLi4uLi5ALi4uLkUuCiAgICA1MjMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNTI0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDUyNTA6IDAwIDAyIDAwIDAwIDA5IDAwIDIxIDExIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4hLi4uLi4uLi4uCiAgICA1MjYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCAxQSA0NSBBNCAgLi4uLi4uLi4uQC4uLi5FLgogICAgNTI3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDUyODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA1MjkwOiAwMCAwMiAwMCAwMCAwOSAwMCAyMiAxMSAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uIi4uLi4uLi4uLgogICAgNTJBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggMUEgNDUgQTQgIC4uLi4uLi4uLkAuLi4uRS4KICAg
IDUyQjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA1MkMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNTJEMDogMDAgMDIgMDAgMDAg
MDkgMDAgMjMgMTEgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLiMuLi4uLi4uLi4KICAg
IDUyRTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDE3IDQ1IEE0ICAu
Li4uLi4uLi5ALi4uLkUuCiAgICA1MkYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNTMwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDUzMTA6IDAwIDAyIDAwIDAwIDA5IDAwIDI0IDExIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4kLi4uLi4uLi4uCiAgICA1MzIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCAxOSA0NSBBNCAgLi4uLi4uLi4uQC4uLi5FLgogICAgNTMzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDUzNDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA1MzUwOiAwMCAwMiAwMCAwMCAwOSAwMCAyNSAxMSAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uJS4uLi4uLi4uLgogICAgNTM2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggMTggNDUgQTQgIC4uLi4uLi4uLkAuLi4uRS4KICAg
IDUzNzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA1MzgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNTM5MDogMDAgMDIgMDAgMDAg
MDkgMDAgMjYgMTEgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLiYuLi4uLi4uLi4KICAg
IDUzQTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDE4IDQ1IEE0ICAu
Li4uLi4uLi5ALi4uLkUuCiAgICA1M0IwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNTNDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDUzRDA6IDAwIDAyIDAwIDAwIDA5IDAwIDI3IDExIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4nLi4uLi4uLi4uCiAgICA1M0UwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCAxOSA0NSBBNCAgLi4uLi4uLi4uQC4uLi5FLgogICAgNTNGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDU0MDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA1NDEwOiAwMCAwMiAwMCAwMCAwOSAwMCAyOCAxMSAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uKC4uLi4uLi4uLgogICAgNTQyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggMTEgNDUgQTQgIC4uLi4uLi4uLkAuLi4uRS4KICAg
IDU0MzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA1NDQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNTQ1MDogMDAgMDIgMDAgMDAg
MDkgMDAgMjkgMTEgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLikuLi4uLi4uLi4KICAg
IDU0NjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDE3IDQ1IEE0ICAu
Li4uLi4uLi5ALi4uLkUuCiAgICA1NDcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNTQ4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDU0OTA6IDAwIDAyIDAwIDAwIDA5IDAwIDJBIDExIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4qLi4uLi4uLi4uCiAgICA1NEEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCAxNSA0NSBBNCAgLi4uLi4uLi4uQC4uLi5FLgogICAgNTRCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDU0QzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA1NEQwOiAwMCAwMiAwMCAwMCAwOSAwMCAyQiAxMSAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uKy4uLi4uLi4uLgogICAgNTRFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggMTYgNDUgQTQgIC4uLi4uLi4uLkAuLi4uRS4KICAg
IDU0RjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA1NTAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNTUxMDogMDAgMDIgMDAgMDAg
MDkgMDAgMkMgMTEgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLiwuLi4uLi4uLi4KICAg
IDU1MjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDE2IDQ1IEE0ICAu
Li4uLi4uLi5ALi4uLkUuCiAgICA1NTMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNTU0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDU1NTA6IDAwIDAyIDAwIDAwIDA5IDAwIDJEIDExIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4tLi4uLi4uLi4uCiAgICA1NTYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCAxMSA0NSBBNCAgLi4uLi4uLi4uQC4uLi5FLgogICAgNTU3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDU1ODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA1NTkwOiAwMCAwMiAwMCAwMCAwOSAwMCAyRSAxMSAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNTVBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggMTQgNDUgQTQgIC4uLi4uLi4uLkAuLi4uRS4KICAg
IDU1QjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA1NUMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNTVEMDogMDAgMDIgMDAgMDAg
MDkgMDAgMkYgMTEgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi8uLi4uLi4uLi4KICAg
IDU1RTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDE1IDQ1IEE0ICAu
Li4uLi4uLi5ALi4uLkUuCiAgICA1NUYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNTYwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDU2MTA6IDAwIDAyIDAwIDAwIDA5IDAwIDMwIDExIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4wLi4uLi4uLi4uCiAgICA1NjIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCAxMiA0NSBBNCAgLi4uLi4uLi4uQC4uLi5FLgogICAgNTYzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDU2NDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA1NjUwOiAwMCAwMiAwMCAwMCAwOSAwMCAzMSAxMSAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uMS4uLi4uLi4uLgogICAgNTY2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggMTQgNDUgQTQgIC4uLi4uLi4uLkAuLi4uRS4KICAg
IDU2NzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA1NjgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNTY5MDogMDAgMDIgMDAgMDAg
MDkgMDAgMzIgMTEgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLjIuLi4uLi4uLi4KICAg
IDU2QTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDEyIDQ1IEE0ICAu
Li4uLi4uLi5ALi4uLkUuCiAgICA1NkIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNTZDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDU2RDA6IDAwIDAyIDAwIDAwIDA5IDAwIDMzIDExIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4zLi4uLi4uLi4uCiAgICA1NkUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCAxMyA0NSBBNCAgLi4uLi4uLi4uQC4uLi5FLgogICAgNTZGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDU3MDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA1NzEwOiAwMCAwMiAwMCAwMCAwOSAwMCAzNCAxMSAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uNC4uLi4uLi4uLgogICAgNTcyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggMTMgNDUgQTQgIC4uLi4uLi4uLkAuLi4uRS4KICAg
IDU3MzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA1NzQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNTc1MDogMDAgMDIgMDAgMDAg
MDkgMDAgMzUgMTEgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLjUuLi4uLi4uLi4KICAg
IDU3NjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDAwIDQ1IEE0ICAu
Li4uLi4uLi5ALi4uLkUuCiAgICA1NzcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNTc4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDU3OTA6IDAwIDAyIDAwIDAwIDA5IDAwIDM2IDExIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi42Li4uLi4uLi4uCiAgICA1N0EwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCAwRiA0NSBBNCAgLi4uLi4uLi4uQC4uLi5FLgogICAgNTdCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDU3QzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA1N0QwOiAwMCAwMiAwMCAwMCAwOSAwMCAzNyAxMSAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uNy4uLi4uLi4uLgogICAgNTdFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggMEYgNDUgQTQgIC4uLi4uLi4uLkAuLi4uRS4KICAg
IDU3RjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA1ODAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNTgxMDogMDAgMDIgMDAgMDAg
MDkgMDAgMzggMTEgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLjguLi4uLi4uLi4KICAg
IDU4MjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDBCIDQ1IEE0ICAu
Li4uLi4uLi5ALi4uLkUuCiAgICA1ODMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNTg0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDU4NTA6IDAwIDAyIDAwIDAwIDA5IDAwIDM5IDExIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi45Li4uLi4uLi4uCiAgICA1ODYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCAwRSA0NSBBNCAgLi4uLi4uLi4uQC4uLi5FLgogICAgNTg3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDU4ODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA1ODkwOiAwMCAwMiAwMCAwMCAwOSAwMCAzQSAxMSAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uOi4uLi4uLi4uLgogICAgNThBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggMEUgNDUgQTQgIC4uLi4uLi4uLkAuLi4uRS4KICAg
IDU4QjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA1OEMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNThEMDogMDAgMDIgMDAgMDAg
MDkgMDAgM0IgMTEgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLjsuLi4uLi4uLi4KICAg
IDU4RTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDBCIDQ1IEE0ICAu
Li4uLi4uLi5ALi4uLkUuCiAgICA1OEYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNTkwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDU5MTA6IDAwIDAyIDAwIDAwIDA5IDAwIDNDIDExIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi48Li4uLi4uLi4uCiAgICA1OTIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCAwRCA0NSBBNCAgLi4uLi4uLi4uQC4uLi5FLgogICAgNTkzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDU5NDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA1OTUwOiAwMCAwMiAwMCAwMCAwOSAwMCAzRCAxMSAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uPS4uLi4uLi4uLgogICAgNTk2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggMEMgNDUgQTQgIC4uLi4uLi4uLkAuLi4uRS4KICAg
IDU5NzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA1OTgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNTk5MDogMDAgMDIgMDAgMDAg
MDkgMDAgM0UgMTEgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLj4uLi4uLi4uLi4KICAg
IDU5QTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDBDIDQ1IEE0ICAu
Li4uLi4uLi5ALi4uLkUuCiAgICA1OUIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNTlDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDU5RDA6IDAwIDAyIDAwIDAwIDA5IDAwIDNGIDExIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4/Li4uLi4uLi4uCiAgICA1OUUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCAwRCA0NSBBNCAgLi4uLi4uLi4uQC4uLi5FLgogICAgNTlGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDVBMDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA1QTEwOiAwMCAwMiAwMCAwMCAwOSAwMCA0MCAxMSAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uQC4uLi4uLi4uLgogICAgNUEyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggMDAgNDUgQTQgIC4uLi4uLi4uLkAuLi4uRS4KICAg
IDVBMzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA1QTQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNUE1MDogMDAgMDIgMDAgMDAg
MDkgMDAgNDEgMTEgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLkEuLi4uLi4uLi4KICAg
IDVBNjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDBBIDQ1IEE0ICAu
Li4uLi4uLi5ALi4uLkUuCiAgICA1QTcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNUE4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDVBOTA6IDAwIDAyIDAwIDAwIDA5IDAwIDQyIDExIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5CLi4uLi4uLi4uCiAgICA1QUEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCAwQSA0NSBBNCAgLi4uLi4uLi4uQC4uLi5FLgogICAgNUFCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDVBQzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA1QUQwOiAwMCAwMiAwMCAwMCAwOSAwMCA0MyAxMSAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uQy4uLi4uLi4uLgogICAgNUFFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggMDcgNDUgQTQgIC4uLi4uLi4uLkAuLi4uRS4KICAg
IDVBRjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA1QjAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNUIxMDogMDAgMDIgMDAgMDAg
MDkgMDAgNDQgMTEgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLkQuLi4uLi4uLi4KICAg
IDVCMjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDA5IDQ1IEE0ICAu
Li4uLi4uLi5ALi4uLkUuCiAgICA1QjMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNUI0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDVCNTA6IDAwIDAyIDAwIDAwIDA5IDAwIDQ1IDExIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5FLi4uLi4uLi4uCiAgICA1QjYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCAwOCA0NSBBNCAgLi4uLi4uLi4uQC4uLi5FLgogICAgNUI3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDVCODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA1QjkwOiAwMCAwMiAwMCAwMCAwOSAwMCA0NiAxMSAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uRi4uLi4uLi4uLgogICAgNUJBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggMDggNDUgQTQgIC4uLi4uLi4uLkAuLi4uRS4KICAg
IDVCQjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA1QkMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNUJEMDogMDAgMDIgMDAgMDAg
MDkgMDAgNDcgMTEgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLkcuLi4uLi4uLi4KICAg
IDVCRTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDA5IDQ1IEE0ICAu
Li4uLi4uLi5ALi4uLkUuCiAgICA1QkYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNUMwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDVDMTA6IDAwIDAyIDAwIDAwIDA5IDAwIDQ4IDExIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5ILi4uLi4uLi4uCiAgICA1QzIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCAwMSA0NSBBNCAgLi4uLi4uLi4uQC4uLi5FLgogICAgNUMzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDVDNDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA1QzUwOiAwMCAwMiAwMCAwMCAwOSAwMCA0OSAxMSAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uSS4uLi4uLi4uLgogICAgNUM2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggMDcgNDUgQTQgIC4uLi4uLi4uLkAuLi4uRS4KICAg
IDVDNzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA1QzgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNUM5MDogMDAgMDIgMDAgMDAg
MDkgMDAgNEEgMTEgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLkouLi4uLi4uLi4KICAg
IDVDQTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDA1IDQ1IEE0ICAu
Li4uLi4uLi5ALi4uLkUuCiAgICA1Q0IwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNUNDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDVDRDA6IDAwIDAyIDAwIDAwIDA5IDAwIDRCIDExIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5LLi4uLi4uLi4uCiAgICA1Q0UwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCAwNiA0NSBBNCAgLi4uLi4uLi4uQC4uLi5FLgogICAgNUNGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDVEMDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA1RDEwOiAwMCAwMiAwMCAwMCAwOSAwMCA0QyAxMSAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uTC4uLi4uLi4uLgogICAgNUQyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggMDYgNDUgQTQgIC4uLi4uLi4uLkAuLi4uRS4KICAg
IDVEMzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA1RDQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNUQ1MDogMDAgMDIgMDAgMDAg
MDkgMDAgNEQgMTEgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLk0uLi4uLi4uLi4KICAg
IDVENjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDAxIDQ1IEE0ICAu
Li4uLi4uLi5ALi4uLkUuCiAgICA1RDcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNUQ4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDVEOTA6IDAwIDAyIDAwIDAwIDA5IDAwIDRFIDExIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5OLi4uLi4uLi4uCiAgICA1REEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCAwNCA0NSBBNCAgLi4uLi4uLi4uQC4uLi5FLgogICAgNURCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDVEQzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA1REQwOiAwMCAwMiAwMCAwMCAwOSAwMCA0RiAxMSAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uTy4uLi4uLi4uLgogICAgNURFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggMDUgNDUgQTQgIC4uLi4uLi4uLkAuLi4uRS4KICAg
IDVERjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA1RTAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNUUxMDogMDAgMDIgMDAgMDAg
MDkgMDAgNTAgMTEgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLlAuLi4uLi4uLi4KICAg
IDVFMjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDAyIDQ1IEE0ICAu
Li4uLi4uLi5ALi4uLkUuCiAgICA1RTMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNUU0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDVFNTA6IDAwIDAyIDAwIDAwIDA5IDAwIDUxIDExIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5RLi4uLi4uLi4uCiAgICA1RTYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCAwNCA0NSBBNCAgLi4uLi4uLi4uQC4uLi5FLgogICAgNUU3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDVFODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA1RTkwOiAwMCAwMiAwMCAwMCAwOSAwMCA1MiAxMSAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uUi4uLi4uLi4uLgogICAgNUVBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggMDIgNDUgQTQgIC4uLi4uLi4uLkAuLi4uRS4KICAg
IDVFQjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA1RUMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNUVEMDogMDAgMDIgMDAgMDAg
MDkgMDAgNTMgMTEgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLlMuLi4uLi4uLi4KICAg
IDVFRTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDAzIDQ1IEE0ICAu
Li4uLi4uLi5ALi4uLkUuCiAgICA1RUYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNUYwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDVGMTA6IDAwIDAyIDAwIDAwIDA5IDAwIDU0IDExIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5ULi4uLi4uLi4uCiAgICA1RjIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCAwMyA0NSBBNCAgLi4uLi4uLi4uQC4uLi5FLgogICAgNUYzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDVGNDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA1RjUwOiAwMCAwMiAwMCAwMCAwOSAwMCA1NSAxMSAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uVS4uLi4uLi4uLgogICAgNUY2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggRjAgNDQgQTQgIC4uLi4uLi4uLkAuLi4uRC4KICAg
IDVGNzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA1RjgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNUY5MDogMDAgMDIgMDAgMDAg
MDkgMDAgNTYgMTEgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLlYuLi4uLi4uLi4KICAg
IDVGQTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IEZGIDQ0IEE0ICAu
Li4uLi4uLi5ALi4uLkQuCiAgICA1RkIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNUZDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDVGRDA6IDAwIDAyIDAwIDAwIDA5IDAwIDU3IDExIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5XLi4uLi4uLi4uCiAgICA1RkUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCBGRiA0NCBBNCAgLi4uLi4uLi4uQC4uLi5ELgogICAgNUZGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDYwMDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA2MDEwOiAwMCAwMiAwMCAwMCAwOSAwMCA1OCAxMSAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uWC4uLi4uLi4uLgogICAgNjAyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggRkIgNDQgQTQgIC4uLi4uLi4uLkAuLi4uRC4KICAg
IDYwMzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA2MDQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNjA1MDogMDAgMDIgMDAgMDAg
MDkgMDAgNTkgMTEgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLlkuLi4uLi4uLi4KICAg
IDYwNjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IEZFIDQ0IEE0ICAu
Li4uLi4uLi5ALi4uLkQuCiAgICA2MDcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNjA4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDYwOTA6IDAwIDAyIDAwIDAwIDA5IDAwIDVBIDExIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5aLi4uLi4uLi4uCiAgICA2MEEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCBGRSA0NCBBNCAgLi4uLi4uLi4uQC4uLi5ELgogICAgNjBCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDYwQzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA2MEQwOiAwMCAwMiAwMCAwMCAwOSAwMCA1QiAxMSAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uWy4uLi4uLi4uLgogICAgNjBFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggRkIgNDQgQTQgIC4uLi4uLi4uLkAuLi4uRC4KICAg
IDYwRjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA2MTAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNjExMDogMDAgMDIgMDAgMDAg
MDkgMDAgNUMgMTEgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLlwuLi4uLi4uLi4KICAg
IDYxMjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IEZEIDQ0IEE0ICAu
Li4uLi4uLi5ALi4uLkQuCiAgICA2MTMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNjE0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDYxNTA6IDAwIDAyIDAwIDAwIDA5IDAwIDVEIDExIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5dLi4uLi4uLi4uCiAgICA2MTYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBGQyA0NCBBNCAgLi4uLi4uLi4uQC4uLi5ELgogICAgNjE3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDYxODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA2MTkwOiAwMCAwMiAwMCAwMCAwOSAwMCA1RSAxMSAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uXi4uLi4uLi4uLgogICAgNjFBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggRkMgNDQgQTQgIC4uLi4uLi4uLkAuLi4uRC4KICAg
IDYxQjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA2MUMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNjFEMDogMDAgMDIgMDAgMDAg
MDkgMDAgNUYgMTEgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLl8uLi4uLi4uLi4KICAg
IDYxRTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IEZEIDQ0IEE0ICAu
Li4uLi4uLi5ALi4uLkQuCiAgICA2MUYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNjIwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDYyMTA6IDAwIDAyIDAwIDAwIDA5IDAwIDYwIDExIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5gLi4uLi4uLi4uCiAgICA2MjIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCBGMCA0NCBBNCAgLi4uLi4uLi4uQC4uLi5ELgogICAgNjIzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDYyNDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA2MjUwOiAwMCAwMiAwMCAwMCAwOSAwMCA2MSAxMSAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uYS4uLi4uLi4uLgogICAgNjI2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggRkEgNDQgQTQgIC4uLi4uLi4uLkAuLi4uRC4KICAg
IDYyNzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA2MjgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNjI5MDogMDAgMDIgMDAgMDAg
MDkgMDAgNjIgMTEgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLmIuLi4uLi4uLi4KICAg
IDYyQTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IEZBIDQ0IEE0ICAu
Li4uLi4uLi5ALi4uLkQuCiAgICA2MkIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNjJDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDYyRDA6IDAwIDAyIDAwIDAwIDA5IDAwIDYzIDExIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5jLi4uLi4uLi4uCiAgICA2MkUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCBGNyA0NCBBNCAgLi4uLi4uLi4uQC4uLi5ELgogICAgNjJGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDYzMDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA2MzEwOiAwMCAwMiAwMCAwMCAwOSAwMCA2NCAxMSAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uZC4uLi4uLi4uLgogICAgNjMyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggRjkgNDQgQTQgIC4uLi4uLi4uLkAuLi4uRC4KICAg
IDYzMzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA2MzQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNjM1MDogMDAgMDIgMDAgMDAg
MDkgMDAgNjUgMTEgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLmUuLi4uLi4uLi4KICAg
IDYzNjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IEY4IDQ0IEE0ICAu
Li4uLi4uLi5ALi4uLkQuCiAgICA2MzcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNjM4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDYzOTA6IDAwIDAyIDAwIDAwIDA5IDAwIDY2IDExIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5mLi4uLi4uLi4uCiAgICA2M0EwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCBGOCA0NCBBNCAgLi4uLi4uLi4uQC4uLi5ELgogICAgNjNCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDYzQzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA2M0QwOiAwMCAwMiAwMCAwMCAwOSAwMCA2NyAxMSAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uZy4uLi4uLi4uLgogICAgNjNFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggRjkgNDQgQTQgIC4uLi4uLi4uLkAuLi4uRC4KICAg
IDYzRjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA2NDAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNjQxMDogMDAgMDIgMDAgMDAg
MDkgMDAgNjggMTEgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLmguLi4uLi4uLi4KICAg
IDY0MjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IEYxIDQ0IEE0ICAu
Li4uLi4uLi5ALi4uLkQuCiAgICA2NDMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNjQ0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDY0NTA6IDAwIDAyIDAwIDAwIDA5IDAwIDY5IDExIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5pLi4uLi4uLi4uCiAgICA2NDYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBGNyA0NCBBNCAgLi4uLi4uLi4uQC4uLi5ELgogICAgNjQ3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDY0ODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA2NDkwOiAwMCAwMiAwMCAwMCAwOSAwMCA2QSAxMSAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uai4uLi4uLi4uLgogICAgNjRBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggRjUgNDQgQTQgIC4uLi4uLi4uLkAuLi4uRC4KICAg
IDY0QjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA2NEMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNjREMDogMDAgMDIgMDAgMDAg
MDkgMDAgNkIgMTEgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLmsuLi4uLi4uLi4KICAg
IDY0RTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IEY2IDQ0IEE0ICAu
Li4uLi4uLi5ALi4uLkQuCiAgICA2NEYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNjUwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDY1MTA6IDAwIDAyIDAwIDAwIDA5IDAwIDZDIDExIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5sLi4uLi4uLi4uCiAgICA2NTIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCBGNiA0NCBBNCAgLi4uLi4uLi4uQC4uLi5ELgogICAgNjUzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDY1NDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA2NTUwOiAwMCAwMiAwMCAwMCAwOSAwMCA2RCAxMSAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4ubS4uLi4uLi4uLgogICAgNjU2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggRjEgNDQgQTQgIC4uLi4uLi4uLkAuLi4uRC4KICAg
IDY1NzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA2NTgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNjU5MDogMDAgMDIgMDAgMDAg
MDkgMDAgNkUgMTEgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLm4uLi4uLi4uLi4KICAg
IDY1QTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IEY0IDQ0IEE0ICAu
Li4uLi4uLi5ALi4uLkQuCiAgICA2NUIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNjVDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDY1RDA6IDAwIDAyIDAwIDAwIDA5IDAwIDZGIDExIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5vLi4uLi4uLi4uCiAgICA2NUUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBGNSA0NCBBNCAgLi4uLi4uLi4uQC4uLi5ELgogICAgNjVGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDY2MDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA2NjEwOiAwMCAwMiAwMCAwMCAwOSAwMCA3MCAxMSAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4ucC4uLi4uLi4uLgogICAgNjYyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggRjIgNDQgQTQgIC4uLi4uLi4uLkAuLi4uRC4KICAg
IDY2MzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA2NjQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNjY1MDogMDAgMDIgMDAgMDAg
MDkgMDAgNzEgMTEgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLnEuLi4uLi4uLi4KICAg
IDY2NjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IEY0IDQ0IEE0ICAu
Li4uLi4uLi5ALi4uLkQuCiAgICA2NjcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNjY4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDY2OTA6IDAwIDAyIDAwIDAwIDA5IDAwIDcyIDExIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5yLi4uLi4uLi4uCiAgICA2NkEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCBGMiA0NCBBNCAgLi4uLi4uLi4uQC4uLi5ELgogICAgNjZCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDY2QzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA2NkQwOiAwMCAwMiAwMCAwMCAwOSAwMCA3MyAxMSAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4ucy4uLi4uLi4uLgogICAgNjZFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggRjMgNDQgQTQgIC4uLi4uLi4uLkAuLi4uRC4KICAg
IDY2RjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA2NzAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNjcxMDogMDAgMDIgMDAgMDAg
MDkgMDAgNzQgMTEgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLnQuLi4uLi4uLi4KICAg
IDY3MjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IEYzIDQ0IEE0ICAu
Li4uLi4uLi5ALi4uLkQuCiAgICA2NzMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNjc0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDY3NTA6IDAwIDAyIDAwIDAwIDA5IDAwIDc1IDExIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi51Li4uLi4uLi4uCiAgICA2NzYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBFMCA0NCBBNCAgLi4uLi4uLi4uQC4uLi5ELgogICAgNjc3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDY3ODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA2NzkwOiAwMCAwMiAwMCAwMCAwOSAwMCA3NiAxMSAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4udi4uLi4uLi4uLgogICAgNjdBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggRUYgNDQgQTQgIC4uLi4uLi4uLkAuLi4uRC4KICAg
IDY3QjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA2N0MwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNjdEMDogMDAgMDIgMDAgMDAg
MDkgMDAgNzcgMTEgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLncuLi4uLi4uLi4KICAg
IDY3RTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IEVGIDQ0IEE0ICAu
Li4uLi4uLi5ALi4uLkQuCiAgICA2N0YwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNjgwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDY4MTA6IDAwIDAyIDAwIDAwIDA5IDAwIDc4IDExIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi54Li4uLi4uLi4uCiAgICA2ODIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBFQiA0NCBBNCAgLi4uLi4uLi4uQC4uLi5ELgogICAgNjgzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDY4NDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA2ODUwOiAwMCAwMiAwMCAwMCAwOSAwMCA3OSAxMSAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4ueS4uLi4uLi4uLgogICAgNjg2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggRUUgNDQgQTQgIC4uLi4uLi4uLkAuLi4uRC4KICAg
IDY4NzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA2ODgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNjg5MDogMDAgMDIgMDAgMDAg
MDkgMDAgN0EgMTEgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLnouLi4uLi4uLi4KICAg
IDY4QTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IEVFIDQ0IEE0ICAu
Li4uLi4uLi5ALi4uLkQuCiAgICA2OEIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNjhDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDY4RDA6IDAwIDAyIDAwIDAwIDA5IDAwIDdCIDExIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi57Li4uLi4uLi4uCiAgICA2OEUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCBFQiA0NCBBNCAgLi4uLi4uLi4uQC4uLi5ELgogICAgNjhGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDY5MDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA2OTEwOiAwMCAwMiAwMCAwMCAwOSAwMCA3QyAxMSAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4ufC4uLi4uLi4uLgogICAgNjkyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggRUQgNDQgQTQgIC4uLi4uLi4uLkAuLi4uRC4KICAg
IDY5MzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA2OTQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNjk1MDogMDAgMDIgMDAgMDAg
MDkgMDAgN0QgMTEgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLn0uLi4uLi4uLi4KICAg
IDY5NjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IEVDIDQ0IEE0ICAu
Li4uLi4uLi5ALi4uLkQuCiAgICA2OTcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNjk4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDY5OTA6IDAwIDAyIDAwIDAwIDA5IDAwIDdFIDExIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5+Li4uLi4uLi4uCiAgICA2OUEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCBFQyA0NCBBNCAgLi4uLi4uLi4uQC4uLi5ELgogICAgNjlCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDY5QzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA2OUQwOiAwMCAwMiAwMCAwMCAwOSAwMCA3RiAxMSAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNjlFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggRUQgNDQgQTQgIC4uLi4uLi4uLkAuLi4uRC4KICAg
IDY5RjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA2QTAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNkExMDogMDAgMDIgMDAgMDAg
MDkgMDAgODAgMTEgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDZBMjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IEUwIDQ0IEE0ICAu
Li4uLi4uLi5ALi4uLkQuCiAgICA2QTMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNkE0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDZBNTA6IDAwIDAyIDAwIDAwIDA5IDAwIDgxIDExIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA2QTYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBFQSA0NCBBNCAgLi4uLi4uLi4uQC4uLi5ELgogICAgNkE3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDZBODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA2QTkwOiAwMCAwMiAwMCAwMCAwOSAwMCA4MiAxMSAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNkFBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggRUEgNDQgQTQgIC4uLi4uLi4uLkAuLi4uRC4KICAg
IDZBQjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA2QUMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNkFEMDogMDAgMDIgMDAgMDAg
MDkgMDAgODMgMTEgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDZBRTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IEU3IDQ0IEE0ICAu
Li4uLi4uLi5ALi4uLkQuCiAgICA2QUYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNkIwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDZCMTA6IDAwIDAyIDAwIDAwIDA5IDAwIDg0IDExIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA2QjIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCBFOSA0NCBBNCAgLi4uLi4uLi4uQC4uLi5ELgogICAgNkIzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDZCNDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA2QjUwOiAwMCAwMiAwMCAwMCAwOSAwMCA4NSAxMSAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNkI2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggRTggNDQgQTQgIC4uLi4uLi4uLkAuLi4uRC4KICAg
IDZCNzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA2QjgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNkI5MDogMDAgMDIgMDAgMDAg
MDkgMDAgODYgMTEgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDZCQTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IEU4IDQ0IEE0ICAu
Li4uLi4uLi5ALi4uLkQuCiAgICA2QkIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNkJDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDZCRDA6IDAwIDAyIDAwIDAwIDA5IDAwIDg3IDExIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA2QkUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBFOSA0NCBBNCAgLi4uLi4uLi4uQC4uLi5ELgogICAgNkJGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDZDMDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA2QzEwOiAwMCAwMiAwMCAwMCAwOSAwMCA4OCAxMSAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNkMyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggRTEgNDQgQTQgIC4uLi4uLi4uLkAuLi4uRC4KICAg
IDZDMzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA2QzQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNkM1MDogMDAgMDIgMDAgMDAg
MDkgMDAgODkgMTEgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDZDNjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IEU3IDQ0IEE0ICAu
Li4uLi4uLi5ALi4uLkQuCiAgICA2QzcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNkM4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDZDOTA6IDAwIDAyIDAwIDAwIDA5IDAwIDhBIDExIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA2Q0EwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCBFNSA0NCBBNCAgLi4uLi4uLi4uQC4uLi5ELgogICAgNkNCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDZDQzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA2Q0QwOiAwMCAwMiAwMCAwMCAwOSAwMCA4QiAxMSAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNkNFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggRTYgNDQgQTQgIC4uLi4uLi4uLkAuLi4uRC4KICAg
IDZDRjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA2RDAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNkQxMDogMDAgMDIgMDAgMDAg
MDkgMDAgOEMgMTEgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDZEMjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IEU2IDQ0IEE0ICAu
Li4uLi4uLi5ALi4uLkQuCiAgICA2RDMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNkQ0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDZENTA6IDAwIDAyIDAwIDAwIDA5IDAwIDhEIDExIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA2RDYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCBFMSA0NCBBNCAgLi4uLi4uLi4uQC4uLi5ELgogICAgNkQ3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDZEODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA2RDkwOiAwMCAwMiAwMCAwMCAwOSAwMCA4RSAxMSAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNkRBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggRTQgNDQgQTQgIC4uLi4uLi4uLkAuLi4uRC4KICAg
IDZEQjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA2REMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNkREMDogMDAgMDIgMDAgMDAg
MDkgMDAgOEYgMTEgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDZERTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IEU1IDQ0IEE0ICAu
Li4uLi4uLi5ALi4uLkQuCiAgICA2REYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNkUwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDZFMTA6IDAwIDAyIDAwIDAwIDA5IDAwIDkwIDExIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA2RTIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBFMiA0NCBBNCAgLi4uLi4uLi4uQC4uLi5ELgogICAgNkUzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDZFNDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA2RTUwOiAwMCAwMiAwMCAwMCAwOSAwMCA5MSAxMSAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNkU2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggRTQgNDQgQTQgIC4uLi4uLi4uLkAuLi4uRC4KICAg
IDZFNzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA2RTgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNkU5MDogMDAgMDIgMDAgMDAg
MDkgMDAgOTIgMTEgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDZFQTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IEUyIDQ0IEE0ICAu
Li4uLi4uLi5ALi4uLkQuCiAgICA2RUIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNkVDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDZFRDA6IDAwIDAyIDAwIDAwIDA5IDAwIDkzIDExIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA2RUUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBFMyA0NCBBNCAgLi4uLi4uLi4uQC4uLi5ELgogICAgNkVGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDZGMDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA2RjEwOiAwMCAwMiAwMCAwMCAwOSAwMCA5NCAxMSAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNkYyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggRTMgNDQgQTQgIC4uLi4uLi4uLkAuLi4uRC4KICAg
IDZGMzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA2RjQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNkY1MDogMDAgMDIgMDAgMDAg
MDkgMDAgOTUgMTEgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDZGNjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IEQwIDQ0IEE0ICAu
Li4uLi4uLi5ALi4uLkQuCiAgICA2RjcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNkY4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDZGOTA6IDAwIDAyIDAwIDAwIDA5IDAwIDk2IDExIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA2RkEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBERiA0NCBBNCAgLi4uLi4uLi4uQC4uLi5ELgogICAgNkZCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDZGQzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA2RkQwOiAwMCAwMiAwMCAwMCAwOSAwMCA5NyAxMSAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNkZFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggREYgNDQgQTQgIC4uLi4uLi4uLkAuLi4uRC4KICAg
IDZGRjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA3MDAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNzAxMDogMDAgMDIgMDAgMDAg
MDkgMDAgOTggMTEgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDcwMjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IERCIDQ0IEE0ICAu
Li4uLi4uLi5ALi4uLkQuCiAgICA3MDMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNzA0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDcwNTA6IDAwIDAyIDAwIDAwIDA5IDAwIDk5IDExIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA3MDYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBERSA0NCBBNCAgLi4uLi4uLi4uQC4uLi5ELgogICAgNzA3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDcwODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA3MDkwOiAwMCAwMiAwMCAwMCAwOSAwMCA5QSAxMSAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNzBBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggREUgNDQgQTQgIC4uLi4uLi4uLkAuLi4uRC4KICAg
IDcwQjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA3MEMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNzBEMDogMDAgMDIgMDAgMDAg
MDkgMDAgOUIgMTEgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDcwRTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IERCIDQ0IEE0ICAu
Li4uLi4uLi5ALi4uLkQuCiAgICA3MEYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNzEwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDcxMTA6IDAwIDAyIDAwIDAwIDA5IDAwIDlDIDExIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA3MTIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCBERCA0NCBBNCAgLi4uLi4uLi4uQC4uLi5ELgogICAgNzEzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDcxNDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA3MTUwOiAwMCAwMiAwMCAwMCAwOSAwMCA5RCAxMSAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNzE2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggREMgNDQgQTQgIC4uLi4uLi4uLkAuLi4uRC4KICAg
IDcxNzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA3MTgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNzE5MDogMDAgMDIgMDAgMDAg
MDkgMDAgOUUgMTEgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDcxQTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IERDIDQ0IEE0ICAu
Li4uLi4uLi5ALi4uLkQuCiAgICA3MUIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNzFDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDcxRDA6IDAwIDAyIDAwIDAwIDA5IDAwIDlGIDExIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA3MUUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBERCA0NCBBNCAgLi4uLi4uLi4uQC4uLi5ELgogICAgNzFGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDcyMDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA3MjEwOiAwMCAwMiAwMCAwMCAwOSAwMCBBMCAxMSAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNzIyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggRDAgNDQgQTQgIC4uLi4uLi4uLkAuLi4uRC4KICAg
IDcyMzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA3MjQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNzI1MDogMDAgMDIgMDAgMDAg
MDkgMDAgQTEgMTEgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDcyNjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IERBIDQ0IEE0ICAu
Li4uLi4uLi5ALi4uLkQuCiAgICA3MjcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNzI4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDcyOTA6IDAwIDAyIDAwIDAwIDA5IDAwIEEyIDExIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA3MkEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCBEQSA0NCBBNCAgLi4uLi4uLi4uQC4uLi5ELgogICAgNzJCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDcyQzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA3MkQwOiAwMCAwMiAwMCAwMCAwOSAwMCBBMyAxMSAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNzJFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggRDcgNDQgQTQgIC4uLi4uLi4uLkAuLi4uRC4KICAg
IDcyRjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA3MzAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNzMxMDogMDAgMDIgMDAgMDAg
MDkgMDAgQTQgMTEgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDczMjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IEQ5IDQ0IEE0ICAu
Li4uLi4uLi5ALi4uLkQuCiAgICA3MzMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNzM0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDczNTA6IDAwIDAyIDAwIDAwIDA5IDAwIEE1IDExIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA3MzYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBEOCA0NCBBNCAgLi4uLi4uLi4uQC4uLi5ELgogICAgNzM3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDczODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA3MzkwOiAwMCAwMiAwMCAwMCAwOSAwMCBBNiAxMSAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNzNBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggRDggNDQgQTQgIC4uLi4uLi4uLkAuLi4uRC4KICAg
IDczQjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA3M0MwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNzNEMDogMDAgMDIgMDAgMDAg
MDkgMDAgQTcgMTEgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDczRTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IEQ5IDQ0IEE0ICAu
Li4uLi4uLi5ALi4uLkQuCiAgICA3M0YwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNzQwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDc0MTA6IDAwIDAyIDAwIDAwIDA5IDAwIEE4IDExIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA3NDIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBEMSA0NCBBNCAgLi4uLi4uLi4uQC4uLi5ELgogICAgNzQzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDc0NDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA3NDUwOiAwMCAwMiAwMCAwMCAwOSAwMCBBOSAxMSAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNzQ2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggRDcgNDQgQTQgIC4uLi4uLi4uLkAuLi4uRC4KICAg
IDc0NzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA3NDgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNzQ5MDogMDAgMDIgMDAgMDAg
MDkgMDAgQUEgMTEgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDc0QTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IEQ1IDQ0IEE0ICAu
Li4uLi4uLi5ALi4uLkQuCiAgICA3NEIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNzRDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDc0RDA6IDAwIDAyIDAwIDAwIDA5IDAwIEFCIDExIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA3NEUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBENiA0NCBBNCAgLi4uLi4uLi4uQC4uLi5ELgogICAgNzRGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDc1MDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA3NTEwOiAwMCAwMiAwMCAwMCAwOSAwMCBBQyAxMSAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNzUyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggRDYgNDQgQTQgIC4uLi4uLi4uLkAuLi4uRC4KICAg
IDc1MzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA3NTQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNzU1MDogMDAgMDIgMDAgMDAg
MDkgMDAgQUQgMTEgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDc1NjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IEQxIDQ0IEE0ICAu
Li4uLi4uLi5ALi4uLkQuCiAgICA3NTcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNzU4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDc1OTA6IDAwIDAyIDAwIDAwIDA5IDAwIEFFIDExIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA3NUEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCBENCA0NCBBNCAgLi4uLi4uLi4uQC4uLi5ELgogICAgNzVCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDc1QzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA3NUQwOiAwMCAwMiAwMCAwMCAwOSAwMCBBRiAxMSAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNzVFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggRDUgNDQgQTQgIC4uLi4uLi4uLkAuLi4uRC4KICAg
IDc1RjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA3NjAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNzYxMDogMDAgMDIgMDAgMDAg
MDkgMDAgQjAgMTEgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDc2MjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IEQyIDQ0IEE0ICAu
Li4uLi4uLi5ALi4uLkQuCiAgICA3NjMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNzY0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDc2NTA6IDAwIDAyIDAwIDAwIDA5IDAwIEIxIDExIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA3NjYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBENCA0NCBBNCAgLi4uLi4uLi4uQC4uLi5ELgogICAgNzY3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDc2ODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA3NjkwOiAwMCAwMiAwMCAwMCAwOSAwMCBCMiAxMSAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNzZBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggRDIgNDQgQTQgIC4uLi4uLi4uLkAuLi4uRC4KICAg
IDc2QjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA3NkMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNzZEMDogMDAgMDIgMDAgMDAg
MDkgMDAgQjMgMTEgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDc2RTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IEQzIDQ0IEE0ICAu
Li4uLi4uLi5ALi4uLkQuCiAgICA3NkYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNzcwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDc3MTA6IDAwIDAyIDAwIDAwIDA5IDAwIEI0IDExIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA3NzIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCBEMyA0NCBBNCAgLi4uLi4uLi4uQC4uLi5ELgogICAgNzczMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDc3NDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA3NzUwOiAwMCAwMiAwMCAwMCAwOSAwMCBCNSAxMSAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNzc2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggQzAgNDQgQTQgIC4uLi4uLi4uLkAuLi4uRC4KICAg
IDc3NzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA3NzgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNzc5MDogMDAgMDIgMDAgMDAg
MDkgMDAgQjYgMTEgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDc3QTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IENGIDQ0IEE0ICAu
Li4uLi4uLi5ALi4uLkQuCiAgICA3N0IwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNzdDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDc3RDA6IDAwIDAyIDAwIDAwIDA5IDAwIEI3IDExIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA3N0UwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCBDRiA0NCBBNCAgLi4uLi4uLi4uQC4uLi5ELgogICAgNzdGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDc4MDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA3ODEwOiAwMCAwMiAwMCAwMCAwOSAwMCBCOCAxMSAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNzgyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggQ0IgNDQgQTQgIC4uLi4uLi4uLkAuLi4uRC4KICAg
IDc4MzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA3ODQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNzg1MDogMDAgMDIgMDAgMDAg
MDkgMDAgQjkgMTEgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDc4NjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IENFIDQ0IEE0ICAu
Li4uLi4uLi5ALi4uLkQuCiAgICA3ODcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNzg4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDc4OTA6IDAwIDAyIDAwIDAwIDA5IDAwIEJBIDExIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA3OEEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCBDRSA0NCBBNCAgLi4uLi4uLi4uQC4uLi5ELgogICAgNzhCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDc4QzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA3OEQwOiAwMCAwMiAwMCAwMCAwOSAwMCBCQiAxMSAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNzhFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggQ0IgNDQgQTQgIC4uLi4uLi4uLkAuLi4uRC4KICAg
IDc4RjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA3OTAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNzkxMDogMDAgMDIgMDAgMDAg
MDkgMDAgQkMgMTEgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDc5MjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IENEIDQ0IEE0ICAu
Li4uLi4uLi5ALi4uLkQuCiAgICA3OTMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNzk0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDc5NTA6IDAwIDAyIDAwIDAwIDA5IDAwIEJEIDExIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA3OTYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBDQyA0NCBBNCAgLi4uLi4uLi4uQC4uLi5ELgogICAgNzk3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDc5ODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA3OTkwOiAwMCAwMiAwMCAwMCAwOSAwMCBCRSAxMSAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNzlBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggQ0MgNDQgQTQgIC4uLi4uLi4uLkAuLi4uRC4KICAg
IDc5QjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA3OUMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgNzlEMDogMDAgMDIgMDAgMDAg
MDkgMDAgQkYgMTEgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDc5RTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IENEIDQ0IEE0ICAu
Li4uLi4uLi5ALi4uLkQuCiAgICA3OUYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgN0EwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDdBMTA6IDAwIDAyIDAwIDAwIDA5IDAwIEMwIDExIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA3QTIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCBDMCA0NCBBNCAgLi4uLi4uLi4uQC4uLi5ELgogICAgN0EzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDdBNDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA3QTUwOiAwMCAwMiAwMCAwMCAwOSAwMCBDMSAxMSAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgN0E2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggQ0EgNDQgQTQgIC4uLi4uLi4uLkAuLi4uRC4KICAg
IDdBNzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA3QTgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgN0E5MDogMDAgMDIgMDAgMDAg
MDkgMDAgQzIgMTEgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDdBQTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IENBIDQ0IEE0ICAu
Li4uLi4uLi5ALi4uLkQuCiAgICA3QUIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgN0FDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDdBRDA6IDAwIDAyIDAwIDAwIDA5IDAwIEMzIDExIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA3QUUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCBDNyA0NCBBNCAgLi4uLi4uLi4uQC4uLi5ELgogICAgN0FGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDdCMDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA3QjEwOiAwMCAwMiAwMCAwMCAwOSAwMCBDNCAxMSAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgN0IyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggQzkgNDQgQTQgIC4uLi4uLi4uLkAuLi4uRC4KICAg
IDdCMzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA3QjQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgN0I1MDogMDAgMDIgMDAgMDAg
MDkgMDAgQzUgMTEgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDdCNjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IEM4IDQ0IEE0ICAu
Li4uLi4uLi5ALi4uLkQuCiAgICA3QjcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgN0I4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDdCOTA6IDAwIDAyIDAwIDAwIDA5IDAwIEM2IDExIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA3QkEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCBDOCA0NCBBNCAgLi4uLi4uLi4uQC4uLi5ELgogICAgN0JCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDdCQzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA3QkQwOiAwMCAwMiAwMCAwMCAwOSAwMCBDNyAxMSAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgN0JFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggQzkgNDQgQTQgIC4uLi4uLi4uLkAuLi4uRC4KICAg
IDdCRjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA3QzAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgN0MxMDogMDAgMDIgMDAgMDAg
MDkgMDAgQzggMTEgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDdDMjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IEMxIDQ0IEE0ICAu
Li4uLi4uLi5ALi4uLkQuCiAgICA3QzMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgN0M0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDdDNTA6IDAwIDAyIDAwIDAwIDA5IDAwIEM5IDExIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA3QzYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBDNyA0NCBBNCAgLi4uLi4uLi4uQC4uLi5ELgogICAgN0M3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDdDODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA3QzkwOiAwMCAwMiAwMCAwMCAwOSAwMCBDQSAxMSAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgN0NBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggQzUgNDQgQTQgIC4uLi4uLi4uLkAuLi4uRC4KICAg
IDdDQjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA3Q0MwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgN0NEMDogMDAgMDIgMDAgMDAg
MDkgMDAgQ0IgMTEgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDdDRTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IEM2IDQ0IEE0ICAu
Li4uLi4uLi5ALi4uLkQuCiAgICA3Q0YwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgN0QwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDdEMTA6IDAwIDAyIDAwIDAwIDA5IDAwIENDIDExIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA3RDIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCBDNiA0NCBBNCAgLi4uLi4uLi4uQC4uLi5ELgogICAgN0QzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDdENDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA3RDUwOiAwMCAwMiAwMCAwMCAwOSAwMCBDRCAxMSAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgN0Q2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggQzEgNDQgQTQgIC4uLi4uLi4uLkAuLi4uRC4KICAg
IDdENzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA3RDgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgN0Q5MDogMDAgMDIgMDAgMDAg
MDkgMDAgQ0UgMTEgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDdEQTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IEM0IDQ0IEE0ICAu
Li4uLi4uLi5ALi4uLkQuCiAgICA3REIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgN0RDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDdERDA6IDAwIDAyIDAwIDAwIDA5IDAwIENGIDExIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA3REUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBDNSA0NCBBNCAgLi4uLi4uLi4uQC4uLi5ELgogICAgN0RGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDdFMDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA3RTEwOiAwMCAwMiAwMCAwMCAwOSAwMCBEMCAxMSAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgN0UyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggQzIgNDQgQTQgIC4uLi4uLi4uLkAuLi4uRC4KICAg
IDdFMzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA3RTQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgN0U1MDogMDAgMDIgMDAgMDAg
MDkgMDAgRDEgMTEgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDdFNjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IEM0IDQ0IEE0ICAu
Li4uLi4uLi5ALi4uLkQuCiAgICA3RTcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgN0U4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDdFOTA6IDAwIDAyIDAwIDAwIDA5IDAwIEQyIDExIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA3RUEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCBDMiA0NCBBNCAgLi4uLi4uLi4uQC4uLi5ELgogICAgN0VCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDdFQzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA3RUQwOiAwMCAwMiAwMCAwMCAwOSAwMCBEMyAxMSAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgN0VFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggQzMgNDQgQTQgIC4uLi4uLi4uLkAuLi4uRC4KICAg
IDdFRjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA3RjAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgN0YxMDogMDAgMDIgMDAgMDAg
MDkgMDAgRDQgMTEgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDdGMjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IEMzIDQ0IEE0ICAu
Li4uLi4uLi5ALi4uLkQuCiAgICA3RjMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgN0Y0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDdGNTA6IDAwIDAyIDAwIDAwIDA5IDAwIEQ1IDExIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA3RjYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBCMCA0NCBBNCAgLi4uLi4uLi4uQC4uLi5ELgogICAgN0Y3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDdGODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA3RjkwOiAwMCAwMiAwMCAwMCAwOSAwMCBENiAxMSAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgN0ZBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggQkYgNDQgQTQgIC4uLi4uLi4uLkAuLi4uRC4KICAg
IDdGQjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA3RkMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgN0ZEMDogMDAgMDIgMDAgMDAg
MDkgMDAgRDcgMTEgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDdGRTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IEJGIDQ0IEE0ICAu
Li4uLi4uLi5ALi4uLkQuCiAgICA3RkYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgODAwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDgwMTA6IDAwIDAyIDAwIDAwIDA5IDAwIEQ4IDExIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA4MDIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBCQiA0NCBBNCAgLi4uLi4uLi4uQC4uLi5ELgogICAgODAzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDgwNDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA4MDUwOiAwMCAwMiAwMCAwMCAwOSAwMCBEOSAxMSAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgODA2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggQkUgNDQgQTQgIC4uLi4uLi4uLkAuLi4uRC4KICAg
IDgwNzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA4MDgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgODA5MDogMDAgMDIgMDAgMDAg
MDkgMDAgREEgMTEgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDgwQTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IEJFIDQ0IEE0ICAu
Li4uLi4uLi5ALi4uLkQuCiAgICA4MEIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgODBDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDgwRDA6IDAwIDAyIDAwIDAwIDA5IDAwIERCIDExIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA4MEUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCBCQiA0NCBBNCAgLi4uLi4uLi4uQC4uLi5ELgogICAgODBGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDgxMDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA4MTEwOiAwMCAwMiAwMCAwMCAwOSAwMCBEQyAxMSAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgODEyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggQkQgNDQgQTQgIC4uLi4uLi4uLkAuLi4uRC4KICAg
IDgxMzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA4MTQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgODE1MDogMDAgMDIgMDAgMDAg
MDkgMDAgREQgMTEgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDgxNjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IEJDIDQ0IEE0ICAu
Li4uLi4uLi5ALi4uLkQuCiAgICA4MTcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgODE4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDgxOTA6IDAwIDAyIDAwIDAwIDA5IDAwIERFIDExIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA4MUEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCBCQyA0NCBBNCAgLi4uLi4uLi4uQC4uLi5ELgogICAgODFCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDgxQzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA4MUQwOiAwMCAwMiAwMCAwMCAwOSAwMCBERiAxMSAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgODFFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggQkQgNDQgQTQgIC4uLi4uLi4uLkAuLi4uRC4KICAg
IDgxRjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA4MjAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgODIxMDogMDAgMDIgMDAgMDAg
MDkgMDAgRTAgMTEgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDgyMjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IEIwIDQ0IEE0ICAu
Li4uLi4uLi5ALi4uLkQuCiAgICA4MjMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgODI0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDgyNTA6IDAwIDAyIDAwIDAwIDA5IDAwIEUxIDExIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA4MjYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBCQSA0NCBBNCAgLi4uLi4uLi4uQC4uLi5ELgogICAgODI3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDgyODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA4MjkwOiAwMCAwMiAwMCAwMCAwOSAwMCBFMiAxMSAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgODJBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggQkEgNDQgQTQgIC4uLi4uLi4uLkAuLi4uRC4KICAg
IDgyQjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA4MkMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgODJEMDogMDAgMDIgMDAgMDAg
MDkgMDAgRTMgMTEgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDgyRTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IEI3IDQ0IEE0ICAu
Li4uLi4uLi5ALi4uLkQuCiAgICA4MkYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgODMwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDgzMTA6IDAwIDAyIDAwIDAwIDA5IDAwIEU0IDExIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA4MzIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCBCOSA0NCBBNCAgLi4uLi4uLi4uQC4uLi5ELgogICAgODMzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDgzNDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA4MzUwOiAwMCAwMiAwMCAwMCAwOSAwMCBFNSAxMSAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgODM2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggQjggNDQgQTQgIC4uLi4uLi4uLkAuLi4uRC4KICAg
IDgzNzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA4MzgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgODM5MDogMDAgMDIgMDAgMDAg
MDkgMDAgRTYgMTEgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDgzQTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IEI4IDQ0IEE0ICAu
Li4uLi4uLi5ALi4uLkQuCiAgICA4M0IwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgODNDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDgzRDA6IDAwIDAyIDAwIDAwIDA5IDAwIEU3IDExIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA4M0UwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBCOSA0NCBBNCAgLi4uLi4uLi4uQC4uLi5ELgogICAgODNGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDg0MDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA4NDEwOiAwMCAwMiAwMCAwMCAwOSAwMCBFOCAxMSAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgODQyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggQjEgNDQgQTQgIC4uLi4uLi4uLkAuLi4uRC4KICAg
IDg0MzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA4NDQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgODQ1MDogMDAgMDIgMDAgMDAg
MDkgMDAgRTkgMTEgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDg0NjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IEI3IDQ0IEE0ICAu
Li4uLi4uLi5ALi4uLkQuCiAgICA4NDcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgODQ4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDg0OTA6IDAwIDAyIDAwIDAwIDA5IDAwIEVBIDExIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA4NEEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCBCNSA0NCBBNCAgLi4uLi4uLi4uQC4uLi5ELgogICAgODRCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDg0QzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA4NEQwOiAwMCAwMiAwMCAwMCAwOSAwMCBFQiAxMSAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgODRFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggQjYgNDQgQTQgIC4uLi4uLi4uLkAuLi4uRC4KICAg
IDg0RjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA4NTAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgODUxMDogMDAgMDIgMDAgMDAg
MDkgMDAgRUMgMTEgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDg1MjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IEI2IDQ0IEE0ICAu
Li4uLi4uLi5ALi4uLkQuCiAgICA4NTMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgODU0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDg1NTA6IDAwIDAyIDAwIDAwIDA5IDAwIEVEIDExIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA4NTYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCBCMSA0NCBBNCAgLi4uLi4uLi4uQC4uLi5ELgogICAgODU3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDg1ODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA4NTkwOiAwMCAwMiAwMCAwMCAwOSAwMCBFRSAxMSAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgODVBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggQjQgNDQgQTQgIC4uLi4uLi4uLkAuLi4uRC4KICAg
IDg1QjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA4NUMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgODVEMDogMDAgMDIgMDAgMDAg
MDkgMDAgRUYgMTEgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDg1RTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IEI1IDQ0IEE0ICAu
Li4uLi4uLi5ALi4uLkQuCiAgICA4NUYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgODYwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDg2MTA6IDAwIDAyIDAwIDAwIDA5IDAwIEYwIDExIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA4NjIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBCMiA0NCBBNCAgLi4uLi4uLi4uQC4uLi5ELgogICAgODYzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDg2NDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA4NjUwOiAwMCAwMiAwMCAwMCAwOSAwMCBGMSAxMSAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgODY2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggQjQgNDQgQTQgIC4uLi4uLi4uLkAuLi4uRC4KICAg
IDg2NzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA4NjgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgODY5MDogMDAgMDIgMDAgMDAg
MDkgMDAgRjIgMTEgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDg2QTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IEIyIDQ0IEE0ICAu
Li4uLi4uLi5ALi4uLkQuCiAgICA4NkIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgODZDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDg2RDA6IDAwIDAyIDAwIDAwIDA5IDAwIEYzIDExIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA4NkUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBCMyA0NCBBNCAgLi4uLi4uLi4uQC4uLi5ELgogICAgODZGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDg3MDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA4NzEwOiAwMCAwMiAwMCAwMCAwOSAwMCBGNCAxMSAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgODcyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggQjMgNDQgQTQgIC4uLi4uLi4uLkAuLi4uRC4KICAg
IDg3MzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA4NzQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgODc1MDogMDAgMDIgMDAgMDAg
MDkgMDAgRjUgMTEgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDg3NjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IEEwIDQ0IEE0ICAu
Li4uLi4uLi5ALi4uLkQuCiAgICA4NzcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgODc4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDg3OTA6IDAwIDAyIDAwIDAwIDA5IDAwIEY2IDExIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA4N0EwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBBRiA0NCBBNCAgLi4uLi4uLi4uQC4uLi5ELgogICAgODdCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDg3QzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA4N0QwOiAwMCAwMiAwMCAwMCAwOSAwMCBGNyAxMSAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgODdFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggQUYgNDQgQTQgIC4uLi4uLi4uLkAuLi4uRC4KICAg
IDg3RjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA4ODAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgODgxMDogMDAgMDIgMDAgMDAg
MDkgMDAgRjggMTEgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDg4MjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IEFCIDQ0IEE0ICAu
Li4uLi4uLi5ALi4uLkQuCiAgICA4ODMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgODg0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDg4NTA6IDAwIDAyIDAwIDAwIDA5IDAwIEY5IDExIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA4ODYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBBRSA0NCBBNCAgLi4uLi4uLi4uQC4uLi5ELgogICAgODg3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDg4ODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA4ODkwOiAwMCAwMiAwMCAwMCAwOSAwMCBGQSAxMSAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgODhBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggQUUgNDQgQTQgIC4uLi4uLi4uLkAuLi4uRC4KICAg
IDg4QjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA4OEMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgODhEMDogMDAgMDIgMDAgMDAg
MDkgMDAgRkIgMTEgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDg4RTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IEFCIDQ0IEE0ICAu
Li4uLi4uLi5ALi4uLkQuCiAgICA4OEYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgODkwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDg5MTA6IDAwIDAyIDAwIDAwIDA5IDAwIEZDIDExIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA4OTIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCBBRCA0NCBBNCAgLi4uLi4uLi4uQC4uLi5ELgogICAgODkzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDg5NDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA4OTUwOiAwMCAwMiAwMCAwMCAwOSAwMCBGRCAxMSAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgODk2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggQUMgNDQgQTQgIC4uLi4uLi4uLkAuLi4uRC4KICAg
IDg5NzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA4OTgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgODk5MDogMDAgMDIgMDAgMDAg
MDkgMDAgRkUgMTEgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDg5QTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IEFDIDQ0IEE0ICAu
Li4uLi4uLi5ALi4uLkQuCiAgICA4OUIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgODlDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDg5RDA6IDAwIDAyIDAwIDAwIDA5IDAwIEZGIDExIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA4OUUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBBRCA0NCBBNCAgLi4uLi4uLi4uQC4uLi5ELgogICAgODlGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDhBMDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA4QTEwOiAwMCAwMiAwMCAwMCAwOSAwMCAwMCAxMiAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgOEEyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggQTAgNDQgQTQgIC4uLi4uLi4uLkAuLi4uRC4KICAg
IDhBMzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA4QTQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgOEE1MDogMDAgMDIgMDAgMDAg
MDkgMDAgMDEgMTIgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDhBNjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IEFBIDQ0IEE0ICAu
Li4uLi4uLi5ALi4uLkQuCiAgICA4QTcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgOEE4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDhBOTA6IDAwIDAyIDAwIDAwIDA5IDAwIDAyIDEyIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA4QUEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCBBQSA0NCBBNCAgLi4uLi4uLi4uQC4uLi5ELgogICAgOEFCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDhBQzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA4QUQwOiAwMCAwMiAwMCAwMCAwOSAwMCAwMyAxMiAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgOEFFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggQTcgNDQgQTQgIC4uLi4uLi4uLkAuLi4uRC4KICAg
IDhBRjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA4QjAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgOEIxMDogMDAgMDIgMDAgMDAg
MDkgMDAgMDQgMTIgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDhCMjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IEE5IDQ0IEE0ICAu
Li4uLi4uLi5ALi4uLkQuCiAgICA4QjMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgOEI0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDhCNTA6IDAwIDAyIDAwIDAwIDA5IDAwIDA1IDEyIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA4QjYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBBOCA0NCBBNCAgLi4uLi4uLi4uQC4uLi5ELgogICAgOEI3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDhCODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA4QjkwOiAwMCAwMiAwMCAwMCAwOSAwMCAwNiAxMiAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgOEJBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggQTggNDQgQTQgIC4uLi4uLi4uLkAuLi4uRC4KICAg
IDhCQjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA4QkMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgOEJEMDogMDAgMDIgMDAgMDAg
MDkgMDAgMDcgMTIgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDhCRTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IEE5IDQ0IEE0ICAu
Li4uLi4uLi5ALi4uLkQuCiAgICA4QkYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgOEMwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDhDMTA6IDAwIDAyIDAwIDAwIDA5IDAwIDA4IDEyIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA4QzIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBBMSA0NCBBNCAgLi4uLi4uLi4uQC4uLi5ELgogICAgOEMzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDhDNDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA4QzUwOiAwMCAwMiAwMCAwMCAwOSAwMCAwOSAxMiAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgOEM2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggQTcgNDQgQTQgIC4uLi4uLi4uLkAuLi4uRC4KICAg
IDhDNzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA4QzgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgOEM5MDogMDAgMDIgMDAgMDAg
MDkgMDAgMEEgMTIgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDhDQTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IEE1IDQ0IEE0ICAu
Li4uLi4uLi5ALi4uLkQuCiAgICA4Q0IwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgOENDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDhDRDA6IDAwIDAyIDAwIDAwIDA5IDAwIDBCIDEyIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA4Q0UwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBBNiA0NCBBNCAgLi4uLi4uLi4uQC4uLi5ELgogICAgOENGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDhEMDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA4RDEwOiAwMCAwMiAwMCAwMCAwOSAwMCAwQyAxMiAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgOEQyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggQTYgNDQgQTQgIC4uLi4uLi4uLkAuLi4uRC4KICAg
IDhEMzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA4RDQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgOEQ1MDogMDAgMDIgMDAgMDAg
MDkgMDAgMEQgMTIgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDhENjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IEExIDQ0IEE0ICAu
Li4uLi4uLi5ALi4uLkQuCiAgICA4RDcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgOEQ4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDhEOTA6IDAwIDAyIDAwIDAwIDA5IDAwIDBFIDEyIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA4REEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCBBNCA0NCBBNCAgLi4uLi4uLi4uQC4uLi5ELgogICAgOERCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDhEQzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA4REQwOiAwMCAwMiAwMCAwMCAwOSAwMCAwRiAxMiAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgOERFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggQTUgNDQgQTQgIC4uLi4uLi4uLkAuLi4uRC4KICAg
IDhERjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA4RTAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgOEUxMDogMDAgMDIgMDAgMDAg
MDkgMDAgMTAgMTIgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDhFMjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IEEyIDQ0IEE0ICAu
Li4uLi4uLi5ALi4uLkQuCiAgICA4RTMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgOEU0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDhFNTA6IDAwIDAyIDAwIDAwIDA5IDAwIDExIDEyIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA4RTYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBBNCA0NCBBNCAgLi4uLi4uLi4uQC4uLi5ELgogICAgOEU3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDhFODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA4RTkwOiAwMCAwMiAwMCAwMCAwOSAwMCAxMiAxMiAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgOEVBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggQTIgNDQgQTQgIC4uLi4uLi4uLkAuLi4uRC4KICAg
IDhFQjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA4RUMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgOEVEMDogMDAgMDIgMDAgMDAg
MDkgMDAgMTMgMTIgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDhFRTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IEEzIDQ0IEE0ICAu
Li4uLi4uLi5ALi4uLkQuCiAgICA4RUYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgOEYwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDhGMTA6IDAwIDAyIDAwIDAwIDA5IDAwIDE0IDEyIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA4RjIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCBBMyA0NCBBNCAgLi4uLi4uLi4uQC4uLi5ELgogICAgOEYzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDhGNDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA4RjUwOiAwMCAwMiAwMCAwMCAwOSAwMCAxNSAxMiAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgOEY2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggOTAgNDQgQTQgIC4uLi4uLi4uLkAuLi4uRC4KICAg
IDhGNzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA4RjgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgOEY5MDogMDAgMDIgMDAgMDAg
MDkgMDAgMTYgMTIgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDhGQTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDlGIDQ0IEE0ICAu
Li4uLi4uLi5ALi4uLkQuCiAgICA4RkIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgOEZDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDhGRDA6IDAwIDAyIDAwIDAwIDA5IDAwIDE3IDEyIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA4RkUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA5RiA0NCBBNCAgLi4uLi4uLi4uQC4uLi5ELgogICAgOEZGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDkwMDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA5MDEwOiAwMCAwMiAwMCAwMCAwOSAwMCAxOCAxMiAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgOTAyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggOUIgNDQgQTQgIC4uLi4uLi4uLkAuLi4uRC4KICAg
IDkwMzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA5MDQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgOTA1MDogMDAgMDIgMDAgMDAg
MDkgMDAgMTkgMTIgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDkwNjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDlFIDQ0IEE0ICAu
Li4uLi4uLi5ALi4uLkQuCiAgICA5MDcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgOTA4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDkwOTA6IDAwIDAyIDAwIDAwIDA5IDAwIDFBIDEyIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA5MEEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA5RSA0NCBBNCAgLi4uLi4uLi4uQC4uLi5ELgogICAgOTBCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDkwQzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA5MEQwOiAwMCAwMiAwMCAwMCAwOSAwMCAxQiAxMiAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgOTBFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggOUIgNDQgQTQgIC4uLi4uLi4uLkAuLi4uRC4KICAg
IDkwRjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA5MTAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgOTExMDogMDAgMDIgMDAgMDAg
MDkgMDAgMUMgMTIgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDkxMjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDlEIDQ0IEE0ICAu
Li4uLi4uLi5ALi4uLkQuCiAgICA5MTMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgOTE0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDkxNTA6IDAwIDAyIDAwIDAwIDA5IDAwIDFEIDEyIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA5MTYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA5QyA0NCBBNCAgLi4uLi4uLi4uQC4uLi5ELgogICAgOTE3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDkxODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA5MTkwOiAwMCAwMiAwMCAwMCAwOSAwMCAxRSAxMiAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgOTFBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggOUMgNDQgQTQgIC4uLi4uLi4uLkAuLi4uRC4KICAg
IDkxQjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA5MUMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgOTFEMDogMDAgMDIgMDAgMDAg
MDkgMDAgMUYgMTIgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDkxRTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDlEIDQ0IEE0ICAu
Li4uLi4uLi5ALi4uLkQuCiAgICA5MUYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgOTIwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDkyMTA6IDAwIDAyIDAwIDAwIDA5IDAwIDIwIDEyIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4gLi4uLi4uLi4uCiAgICA5MjIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA5MCA0NCBBNCAgLi4uLi4uLi4uQC4uLi5ELgogICAgOTIzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDkyNDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA5MjUwOiAwMCAwMiAwMCAwMCAwOSAwMCAyMSAxMiAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uIS4uLi4uLi4uLgogICAgOTI2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggOUEgNDQgQTQgIC4uLi4uLi4uLkAuLi4uRC4KICAg
IDkyNzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA5MjgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgOTI5MDogMDAgMDIgMDAgMDAg
MDkgMDAgMjIgMTIgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLiIuLi4uLi4uLi4KICAg
IDkyQTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDlBIDQ0IEE0ICAu
Li4uLi4uLi5ALi4uLkQuCiAgICA5MkIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgOTJDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDkyRDA6IDAwIDAyIDAwIDAwIDA5IDAwIDIzIDEyIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4jLi4uLi4uLi4uCiAgICA5MkUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA5NyA0NCBBNCAgLi4uLi4uLi4uQC4uLi5ELgogICAgOTJGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDkzMDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA5MzEwOiAwMCAwMiAwMCAwMCAwOSAwMCAyNCAxMiAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uJC4uLi4uLi4uLgogICAgOTMyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggOTkgNDQgQTQgIC4uLi4uLi4uLkAuLi4uRC4KICAg
IDkzMzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA5MzQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgOTM1MDogMDAgMDIgMDAgMDAg
MDkgMDAgMjUgMTIgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLiUuLi4uLi4uLi4KICAg
IDkzNjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDk4IDQ0IEE0ICAu
Li4uLi4uLi5ALi4uLkQuCiAgICA5MzcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgOTM4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDkzOTA6IDAwIDAyIDAwIDAwIDA5IDAwIDI2IDEyIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4mLi4uLi4uLi4uCiAgICA5M0EwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA5OCA0NCBBNCAgLi4uLi4uLi4uQC4uLi5ELgogICAgOTNCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDkzQzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA5M0QwOiAwMCAwMiAwMCAwMCAwOSAwMCAyNyAxMiAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uJy4uLi4uLi4uLgogICAgOTNFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggOTkgNDQgQTQgIC4uLi4uLi4uLkAuLi4uRC4KICAg
IDkzRjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA5NDAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgOTQxMDogMDAgMDIgMDAgMDAg
MDkgMDAgMjggMTIgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLiguLi4uLi4uLi4KICAg
IDk0MjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDkxIDQ0IEE0ICAu
Li4uLi4uLi5ALi4uLkQuCiAgICA5NDMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgOTQ0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDk0NTA6IDAwIDAyIDAwIDAwIDA5IDAwIDI5IDEyIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4pLi4uLi4uLi4uCiAgICA5NDYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA5NyA0NCBBNCAgLi4uLi4uLi4uQC4uLi5ELgogICAgOTQ3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDk0ODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA5NDkwOiAwMCAwMiAwMCAwMCAwOSAwMCAyQSAxMiAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uKi4uLi4uLi4uLgogICAgOTRBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggOTUgNDQgQTQgIC4uLi4uLi4uLkAuLi4uRC4KICAg
IDk0QjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA5NEMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgOTREMDogMDAgMDIgMDAgMDAg
MDkgMDAgMkIgMTIgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLisuLi4uLi4uLi4KICAg
IDk0RTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDk2IDQ0IEE0ICAu
Li4uLi4uLi5ALi4uLkQuCiAgICA5NEYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgOTUwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDk1MTA6IDAwIDAyIDAwIDAwIDA5IDAwIDJDIDEyIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4sLi4uLi4uLi4uCiAgICA5NTIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA5NiA0NCBBNCAgLi4uLi4uLi4uQC4uLi5ELgogICAgOTUzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDk1NDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA5NTUwOiAwMCAwMiAwMCAwMCAwOSAwMCAyRCAxMiAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLS4uLi4uLi4uLgogICAgOTU2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggOTEgNDQgQTQgIC4uLi4uLi4uLkAuLi4uRC4KICAg
IDk1NzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA5NTgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgOTU5MDogMDAgMDIgMDAgMDAg
MDkgMDAgMkUgMTIgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDk1QTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDk0IDQ0IEE0ICAu
Li4uLi4uLi5ALi4uLkQuCiAgICA5NUIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgOTVDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDk1RDA6IDAwIDAyIDAwIDAwIDA5IDAwIDJGIDEyIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4vLi4uLi4uLi4uCiAgICA5NUUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA5NSA0NCBBNCAgLi4uLi4uLi4uQC4uLi5ELgogICAgOTVGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDk2MDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA5NjEwOiAwMCAwMiAwMCAwMCAwOSAwMCAzMCAxMiAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uMC4uLi4uLi4uLgogICAgOTYyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggOTIgNDQgQTQgIC4uLi4uLi4uLkAuLi4uRC4KICAg
IDk2MzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA5NjQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgOTY1MDogMDAgMDIgMDAgMDAg
MDkgMDAgMzEgMTIgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLjEuLi4uLi4uLi4KICAg
IDk2NjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDk0IDQ0IEE0ICAu
Li4uLi4uLi5ALi4uLkQuCiAgICA5NjcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgOTY4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDk2OTA6IDAwIDAyIDAwIDAwIDA5IDAwIDMyIDEyIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4yLi4uLi4uLi4uCiAgICA5NkEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA5MiA0NCBBNCAgLi4uLi4uLi4uQC4uLi5ELgogICAgOTZCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDk2QzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA5NkQwOiAwMCAwMiAwMCAwMCAwOSAwMCAzMyAxMiAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uMy4uLi4uLi4uLgogICAgOTZFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggOTMgNDQgQTQgIC4uLi4uLi4uLkAuLi4uRC4KICAg
IDk2RjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA5NzAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgOTcxMDogMDAgMDIgMDAgMDAg
MDkgMDAgMzQgMTIgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLjQuLi4uLi4uLi4KICAg
IDk3MjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDkzIDQ0IEE0ICAu
Li4uLi4uLi5ALi4uLkQuCiAgICA5NzMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgOTc0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDk3NTA6IDAwIDAyIDAwIDAwIDA5IDAwIDM1IDEyIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi41Li4uLi4uLi4uCiAgICA5NzYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA4MCA0NCBBNCAgLi4uLi4uLi4uQC4uLi5ELgogICAgOTc3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDk3ODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA5NzkwOiAwMCAwMiAwMCAwMCAwOSAwMCAzNiAxMiAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uNi4uLi4uLi4uLgogICAgOTdBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggOEYgNDQgQTQgIC4uLi4uLi4uLkAuLi4uRC4KICAg
IDk3QjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA5N0MwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgOTdEMDogMDAgMDIgMDAgMDAg
MDkgMDAgMzcgMTIgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLjcuLi4uLi4uLi4KICAg
IDk3RTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDhGIDQ0IEE0ICAu
Li4uLi4uLi5ALi4uLkQuCiAgICA5N0YwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgOTgwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDk4MTA6IDAwIDAyIDAwIDAwIDA5IDAwIDM4IDEyIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi44Li4uLi4uLi4uCiAgICA5ODIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA4QiA0NCBBNCAgLi4uLi4uLi4uQC4uLi5ELgogICAgOTgzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDk4NDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA5ODUwOiAwMCAwMiAwMCAwMCAwOSAwMCAzOSAxMiAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uOS4uLi4uLi4uLgogICAgOTg2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggOEUgNDQgQTQgIC4uLi4uLi4uLkAuLi4uRC4KICAg
IDk4NzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA5ODgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgOTg5MDogMDAgMDIgMDAgMDAg
MDkgMDAgM0EgMTIgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLjouLi4uLi4uLi4KICAg
IDk4QTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDhFIDQ0IEE0ICAu
Li4uLi4uLi5ALi4uLkQuCiAgICA5OEIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgOThDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDk4RDA6IDAwIDAyIDAwIDAwIDA5IDAwIDNCIDEyIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi47Li4uLi4uLi4uCiAgICA5OEUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA4QiA0NCBBNCAgLi4uLi4uLi4uQC4uLi5ELgogICAgOThGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDk5MDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA5OTEwOiAwMCAwMiAwMCAwMCAwOSAwMCAzQyAxMiAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uPC4uLi4uLi4uLgogICAgOTkyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggOEQgNDQgQTQgIC4uLi4uLi4uLkAuLi4uRC4KICAg
IDk5MzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA5OTQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgOTk1MDogMDAgMDIgMDAgMDAg
MDkgMDAgM0QgMTIgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLj0uLi4uLi4uLi4KICAg
IDk5NjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDhDIDQ0IEE0ICAu
Li4uLi4uLi5ALi4uLkQuCiAgICA5OTcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgOTk4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDk5OTA6IDAwIDAyIDAwIDAwIDA5IDAwIDNFIDEyIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4+Li4uLi4uLi4uCiAgICA5OUEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA4QyA0NCBBNCAgLi4uLi4uLi4uQC4uLi5ELgogICAgOTlCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDk5QzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA5OUQwOiAwMCAwMiAwMCAwMCAwOSAwMCAzRiAxMiAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uPy4uLi4uLi4uLgogICAgOTlFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggOEQgNDQgQTQgIC4uLi4uLi4uLkAuLi4uRC4KICAg
IDk5RjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA5QTAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgOUExMDogMDAgMDIgMDAgMDAg
MDkgMDAgNDAgMTIgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLkAuLi4uLi4uLi4KICAg
IDlBMjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDgwIDQ0IEE0ICAu
Li4uLi4uLi5ALi4uLkQuCiAgICA5QTMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgOUE0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDlBNTA6IDAwIDAyIDAwIDAwIDA5IDAwIDQxIDEyIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5BLi4uLi4uLi4uCiAgICA5QTYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA4QSA0NCBBNCAgLi4uLi4uLi4uQC4uLi5ELgogICAgOUE3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDlBODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA5QTkwOiAwMCAwMiAwMCAwMCAwOSAwMCA0MiAxMiAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uQi4uLi4uLi4uLgogICAgOUFBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggOEEgNDQgQTQgIC4uLi4uLi4uLkAuLi4uRC4KICAg
IDlBQjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA5QUMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgOUFEMDogMDAgMDIgMDAgMDAg
MDkgMDAgNDMgMTIgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLkMuLi4uLi4uLi4KICAg
IDlBRTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDg3IDQ0IEE0ICAu
Li4uLi4uLi5ALi4uLkQuCiAgICA5QUYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgOUIwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDlCMTA6IDAwIDAyIDAwIDAwIDA5IDAwIDQ0IDEyIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5ELi4uLi4uLi4uCiAgICA5QjIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA4OSA0NCBBNCAgLi4uLi4uLi4uQC4uLi5ELgogICAgOUIzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDlCNDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA5QjUwOiAwMCAwMiAwMCAwMCAwOSAwMCA0NSAxMiAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uRS4uLi4uLi4uLgogICAgOUI2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggODggNDQgQTQgIC4uLi4uLi4uLkAuLi4uRC4KICAg
IDlCNzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA5QjgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgOUI5MDogMDAgMDIgMDAgMDAg
MDkgMDAgNDYgMTIgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLkYuLi4uLi4uLi4KICAg
IDlCQTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDg4IDQ0IEE0ICAu
Li4uLi4uLi5ALi4uLkQuCiAgICA5QkIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgOUJDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDlCRDA6IDAwIDAyIDAwIDAwIDA5IDAwIDQ3IDEyIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5HLi4uLi4uLi4uCiAgICA5QkUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA4OSA0NCBBNCAgLi4uLi4uLi4uQC4uLi5ELgogICAgOUJGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDlDMDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA5QzEwOiAwMCAwMiAwMCAwMCAwOSAwMCA0OCAxMiAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uSC4uLi4uLi4uLgogICAgOUMyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggODEgNDQgQTQgIC4uLi4uLi4uLkAuLi4uRC4KICAg
IDlDMzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA5QzQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgOUM1MDogMDAgMDIgMDAgMDAg
MDkgMDAgNDkgMTIgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLkkuLi4uLi4uLi4KICAg
IDlDNjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDg3IDQ0IEE0ICAu
Li4uLi4uLi5ALi4uLkQuCiAgICA5QzcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgOUM4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDlDOTA6IDAwIDAyIDAwIDAwIDA5IDAwIDRBIDEyIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5KLi4uLi4uLi4uCiAgICA5Q0EwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA4NSA0NCBBNCAgLi4uLi4uLi4uQC4uLi5ELgogICAgOUNCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDlDQzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA5Q0QwOiAwMCAwMiAwMCAwMCAwOSAwMCA0QiAxMiAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uSy4uLi4uLi4uLgogICAgOUNFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggODYgNDQgQTQgIC4uLi4uLi4uLkAuLi4uRC4KICAg
IDlDRjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA5RDAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgOUQxMDogMDAgMDIgMDAgMDAg
MDkgMDAgNEMgMTIgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLkwuLi4uLi4uLi4KICAg
IDlEMjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDg2IDQ0IEE0ICAu
Li4uLi4uLi5ALi4uLkQuCiAgICA5RDMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgOUQ0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDlENTA6IDAwIDAyIDAwIDAwIDA5IDAwIDREIDEyIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5NLi4uLi4uLi4uCiAgICA5RDYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA4MSA0NCBBNCAgLi4uLi4uLi4uQC4uLi5ELgogICAgOUQ3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDlEODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA5RDkwOiAwMCAwMiAwMCAwMCAwOSAwMCA0RSAxMiAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uTi4uLi4uLi4uLgogICAgOURBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggODQgNDQgQTQgIC4uLi4uLi4uLkAuLi4uRC4KICAg
IDlEQjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA5REMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgOUREMDogMDAgMDIgMDAgMDAg
MDkgMDAgNEYgMTIgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLk8uLi4uLi4uLi4KICAg
IDlERTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDg1IDQ0IEE0ICAu
Li4uLi4uLi5ALi4uLkQuCiAgICA5REYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgOUUwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDlFMTA6IDAwIDAyIDAwIDAwIDA5IDAwIDUwIDEyIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5QLi4uLi4uLi4uCiAgICA5RTIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA4MiA0NCBBNCAgLi4uLi4uLi4uQC4uLi5ELgogICAgOUUzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDlFNDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA5RTUwOiAwMCAwMiAwMCAwMCAwOSAwMCA1MSAxMiAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uUS4uLi4uLi4uLgogICAgOUU2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggODQgNDQgQTQgIC4uLi4uLi4uLkAuLi4uRC4KICAg
IDlFNzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA5RTgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgOUU5MDogMDAgMDIgMDAgMDAg
MDkgMDAgNTIgMTIgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLlIuLi4uLi4uLi4KICAg
IDlFQTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDgyIDQ0IEE0ICAu
Li4uLi4uLi5ALi4uLkQuCiAgICA5RUIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgOUVDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDlFRDA6IDAwIDAyIDAwIDAwIDA5IDAwIDUzIDEyIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5TLi4uLi4uLi4uCiAgICA5RUUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA4MyA0NCBBNCAgLi4uLi4uLi4uQC4uLi5ELgogICAgOUVGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDlGMDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA5RjEwOiAwMCAwMiAwMCAwMCAwOSAwMCA1NCAxMiAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uVC4uLi4uLi4uLgogICAgOUYyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggODMgNDQgQTQgIC4uLi4uLi4uLkAuLi4uRC4KICAg
IDlGMzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA5RjQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgOUY1MDogMDAgMDIgMDAgMDAg
MDkgMDAgNTUgMTIgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLlUuLi4uLi4uLi4KICAg
IDlGNjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDcwIDQ0IEE0ICAu
Li4uLi4uLi5ALi4ucEQuCiAgICA5RjcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgOUY4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDlGOTA6IDAwIDAyIDAwIDAwIDA5IDAwIDU2IDEyIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5WLi4uLi4uLi4uCiAgICA5RkEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA3RiA0NCBBNCAgLi4uLi4uLi4uQC4uLi5ELgogICAgOUZCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IDlGQzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICA5RkQwOiAwMCAwMiAwMCAwMCAwOSAwMCA1NyAxMiAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uVy4uLi4uLi4uLgogICAgOUZFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggN0YgNDQgQTQgIC4uLi4uLi4uLkAuLi4uRC4KICAg
IDlGRjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBBMDAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQTAxMDogMDAgMDIgMDAgMDAg
MDkgMDAgNTggMTIgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLlguLi4uLi4uLi4KICAg
IEEwMjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDdCIDQ0IEE0ICAu
Li4uLi4uLi5ALi4ue0QuCiAgICBBMDMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQTA0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEEwNTA6IDAwIDAyIDAwIDAwIDA5IDAwIDU5IDEyIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5ZLi4uLi4uLi4uCiAgICBBMDYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA3RSA0NCBBNCAgLi4uLi4uLi4uQC4uLn5ELgogICAgQTA3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEEwODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBBMDkwOiAwMCAwMiAwMCAwMCAwOSAwMCA1QSAxMiAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uWi4uLi4uLi4uLgogICAgQTBBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggN0UgNDQgQTQgIC4uLi4uLi4uLkAuLi5+RC4KICAg
IEEwQjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBBMEMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQTBEMDogMDAgMDIgMDAgMDAg
MDkgMDAgNUIgMTIgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLlsuLi4uLi4uLi4KICAg
IEEwRTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDdCIDQ0IEE0ICAu
Li4uLi4uLi5ALi4ue0QuCiAgICBBMEYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQTEwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEExMTA6IDAwIDAyIDAwIDAwIDA5IDAwIDVDIDEyIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5cLi4uLi4uLi4uCiAgICBBMTIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA3RCA0NCBBNCAgLi4uLi4uLi4uQC4uLn1ELgogICAgQTEzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEExNDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBBMTUwOiAwMCAwMiAwMCAwMCAwOSAwMCA1RCAxMiAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uXS4uLi4uLi4uLgogICAgQTE2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggN0MgNDQgQTQgIC4uLi4uLi4uLkAuLi58RC4KICAg
IEExNzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBBMTgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQTE5MDogMDAgMDIgMDAgMDAg
MDkgMDAgNUUgMTIgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLl4uLi4uLi4uLi4KICAg
IEExQTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDdDIDQ0IEE0ICAu
Li4uLi4uLi5ALi4ufEQuCiAgICBBMUIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQTFDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEExRDA6IDAwIDAyIDAwIDAwIDA5IDAwIDVGIDEyIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5fLi4uLi4uLi4uCiAgICBBMUUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA3RCA0NCBBNCAgLi4uLi4uLi4uQC4uLn1ELgogICAgQTFGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEEyMDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBBMjEwOiAwMCAwMiAwMCAwMCAwOSAwMCA2MCAxMiAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uYC4uLi4uLi4uLgogICAgQTIyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggNzAgNDQgQTQgIC4uLi4uLi4uLkAuLi5wRC4KICAg
IEEyMzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBBMjQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQTI1MDogMDAgMDIgMDAgMDAg
MDkgMDAgNjEgMTIgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLmEuLi4uLi4uLi4KICAg
IEEyNjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDdBIDQ0IEE0ICAu
Li4uLi4uLi5ALi4uekQuCiAgICBBMjcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQTI4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEEyOTA6IDAwIDAyIDAwIDAwIDA5IDAwIDYyIDEyIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5iLi4uLi4uLi4uCiAgICBBMkEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA3QSA0NCBBNCAgLi4uLi4uLi4uQC4uLnpELgogICAgQTJCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEEyQzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBBMkQwOiAwMCAwMiAwMCAwMCAwOSAwMCA2MyAxMiAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uYy4uLi4uLi4uLgogICAgQTJFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggNzcgNDQgQTQgIC4uLi4uLi4uLkAuLi53RC4KICAg
IEEyRjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBBMzAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQTMxMDogMDAgMDIgMDAgMDAg
MDkgMDAgNjQgMTIgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLmQuLi4uLi4uLi4KICAg
IEEzMjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDc5IDQ0IEE0ICAu
Li4uLi4uLi5ALi4ueUQuCiAgICBBMzMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQTM0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEEzNTA6IDAwIDAyIDAwIDAwIDA5IDAwIDY1IDEyIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5lLi4uLi4uLi4uCiAgICBBMzYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA3OCA0NCBBNCAgLi4uLi4uLi4uQC4uLnhELgogICAgQTM3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEEzODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBBMzkwOiAwMCAwMiAwMCAwMCAwOSAwMCA2NiAxMiAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uZi4uLi4uLi4uLgogICAgQTNBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggNzggNDQgQTQgIC4uLi4uLi4uLkAuLi54RC4KICAg
IEEzQjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBBM0MwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQTNEMDogMDAgMDIgMDAgMDAg
MDkgMDAgNjcgMTIgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLmcuLi4uLi4uLi4KICAg
IEEzRTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDc5IDQ0IEE0ICAu
Li4uLi4uLi5ALi4ueUQuCiAgICBBM0YwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQTQwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEE0MTA6IDAwIDAyIDAwIDAwIDA5IDAwIDY4IDEyIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5oLi4uLi4uLi4uCiAgICBBNDIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA3MSA0NCBBNCAgLi4uLi4uLi4uQC4uLnFELgogICAgQTQzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEE0NDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBBNDUwOiAwMCAwMiAwMCAwMCAwOSAwMCA2OSAxMiAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uaS4uLi4uLi4uLgogICAgQTQ2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggNzcgNDQgQTQgIC4uLi4uLi4uLkAuLi53RC4KICAg
IEE0NzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBBNDgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQTQ5MDogMDAgMDIgMDAgMDAg
MDkgMDAgNkEgMTIgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLmouLi4uLi4uLi4KICAg
IEE0QTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDc1IDQ0IEE0ICAu
Li4uLi4uLi5ALi4udUQuCiAgICBBNEIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQTRDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEE0RDA6IDAwIDAyIDAwIDAwIDA5IDAwIDZCIDEyIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5rLi4uLi4uLi4uCiAgICBBNEUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA3NiA0NCBBNCAgLi4uLi4uLi4uQC4uLnZELgogICAgQTRGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEE1MDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBBNTEwOiAwMCAwMiAwMCAwMCAwOSAwMCA2QyAxMiAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4ubC4uLi4uLi4uLgogICAgQTUyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggNzYgNDQgQTQgIC4uLi4uLi4uLkAuLi52RC4KICAg
IEE1MzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBBNTQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQTU1MDogMDAgMDIgMDAgMDAg
MDkgMDAgNkQgMTIgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLm0uLi4uLi4uLi4KICAg
IEE1NjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDcxIDQ0IEE0ICAu
Li4uLi4uLi5ALi4ucUQuCiAgICBBNTcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQTU4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEE1OTA6IDAwIDAyIDAwIDAwIDA5IDAwIDZFIDEyIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5uLi4uLi4uLi4uCiAgICBBNUEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA3NCA0NCBBNCAgLi4uLi4uLi4uQC4uLnRELgogICAgQTVCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEE1QzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBBNUQwOiAwMCAwMiAwMCAwMCAwOSAwMCA2RiAxMiAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uby4uLi4uLi4uLgogICAgQTVFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggNzUgNDQgQTQgIC4uLi4uLi4uLkAuLi51RC4KICAg
IEE1RjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBBNjAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQTYxMDogMDAgMDIgMDAgMDAg
MDkgMDAgNzAgMTIgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLnAuLi4uLi4uLi4KICAg
IEE2MjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDcyIDQ0IEE0ICAu
Li4uLi4uLi5ALi4uckQuCiAgICBBNjMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQTY0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEE2NTA6IDAwIDAyIDAwIDAwIDA5IDAwIDcxIDEyIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5xLi4uLi4uLi4uCiAgICBBNjYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA3NCA0NCBBNCAgLi4uLi4uLi4uQC4uLnRELgogICAgQTY3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEE2ODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBBNjkwOiAwMCAwMiAwMCAwMCAwOSAwMCA3MiAxMiAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uci4uLi4uLi4uLgogICAgQTZBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggNzIgNDQgQTQgIC4uLi4uLi4uLkAuLi5yRC4KICAg
IEE2QjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBBNkMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQTZEMDogMDAgMDIgMDAgMDAg
MDkgMDAgNzMgMTIgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLnMuLi4uLi4uLi4KICAg
IEE2RTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDczIDQ0IEE0ICAu
Li4uLi4uLi5ALi4uc0QuCiAgICBBNkYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQTcwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEE3MTA6IDAwIDAyIDAwIDAwIDA5IDAwIDc0IDEyIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi50Li4uLi4uLi4uCiAgICBBNzIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA3MyA0NCBBNCAgLi4uLi4uLi4uQC4uLnNELgogICAgQTczMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEE3NDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBBNzUwOiAwMCAwMiAwMCAwMCAwOSAwMCA3NSAxMiAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4udS4uLi4uLi4uLgogICAgQTc2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggNjAgNDQgQTQgIC4uLi4uLi4uLkAuLi5gRC4KICAg
IEE3NzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBBNzgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQTc5MDogMDAgMDIgMDAgMDAg
MDkgMDAgNzYgMTIgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLnYuLi4uLi4uLi4KICAg
IEE3QTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDZGIDQ0IEE0ICAu
Li4uLi4uLi5ALi4ub0QuCiAgICBBN0IwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQTdDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEE3RDA6IDAwIDAyIDAwIDAwIDA5IDAwIDc3IDEyIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi53Li4uLi4uLi4uCiAgICBBN0UwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA2RiA0NCBBNCAgLi4uLi4uLi4uQC4uLm9ELgogICAgQTdGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEE4MDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBBODEwOiAwMCAwMiAwMCAwMCAwOSAwMCA3OCAxMiAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4ueC4uLi4uLi4uLgogICAgQTgyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggNkIgNDQgQTQgIC4uLi4uLi4uLkAuLi5rRC4KICAg
IEE4MzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBBODQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQTg1MDogMDAgMDIgMDAgMDAg
MDkgMDAgNzkgMTIgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLnkuLi4uLi4uLi4KICAg
IEE4NjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDZFIDQ0IEE0ICAu
Li4uLi4uLi5ALi4ubkQuCiAgICBBODcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQTg4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEE4OTA6IDAwIDAyIDAwIDAwIDA5IDAwIDdBIDEyIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi56Li4uLi4uLi4uCiAgICBBOEEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA2RSA0NCBBNCAgLi4uLi4uLi4uQC4uLm5ELgogICAgQThCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEE4QzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBBOEQwOiAwMCAwMiAwMCAwMCAwOSAwMCA3QiAxMiAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uey4uLi4uLi4uLgogICAgQThFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggNkIgNDQgQTQgIC4uLi4uLi4uLkAuLi5rRC4KICAg
IEE4RjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBBOTAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQTkxMDogMDAgMDIgMDAgMDAg
MDkgMDAgN0MgMTIgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLnwuLi4uLi4uLi4KICAg
IEE5MjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDZEIDQ0IEE0ICAu
Li4uLi4uLi5ALi4ubUQuCiAgICBBOTMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQTk0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEE5NTA6IDAwIDAyIDAwIDAwIDA5IDAwIDdEIDEyIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi59Li4uLi4uLi4uCiAgICBBOTYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA2QyA0NCBBNCAgLi4uLi4uLi4uQC4uLmxELgogICAgQTk3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEE5ODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBBOTkwOiAwMCAwMiAwMCAwMCAwOSAwMCA3RSAxMiAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4ufi4uLi4uLi4uLgogICAgQTlBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggNkMgNDQgQTQgIC4uLi4uLi4uLkAuLi5sRC4KICAg
IEE5QjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBBOUMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQTlEMDogMDAgMDIgMDAgMDAg
MDkgMDAgN0YgMTIgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEE5RTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDZEIDQ0IEE0ICAu
Li4uLi4uLi5ALi4ubUQuCiAgICBBOUYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQUEwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEFBMTA6IDAwIDAyIDAwIDAwIDA5IDAwIDgwIDEyIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBBQTIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA2MCA0NCBBNCAgLi4uLi4uLi4uQC4uLmBELgogICAgQUEzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEFBNDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBBQTUwOiAwMCAwMiAwMCAwMCAwOSAwMCA4MSAxMiAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQUE2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggNkEgNDQgQTQgIC4uLi4uLi4uLkAuLi5qRC4KICAg
IEFBNzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBBQTgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQUE5MDogMDAgMDIgMDAgMDAg
MDkgMDAgODIgMTIgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEFBQTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDZBIDQ0IEE0ICAu
Li4uLi4uLi5ALi4uakQuCiAgICBBQUIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQUFDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEFBRDA6IDAwIDAyIDAwIDAwIDA5IDAwIDgzIDEyIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBBQUUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA2NyA0NCBBNCAgLi4uLi4uLi4uQC4uLmdELgogICAgQUFGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEFCMDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBBQjEwOiAwMCAwMiAwMCAwMCAwOSAwMCA4NCAxMiAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQUIyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggNjkgNDQgQTQgIC4uLi4uLi4uLkAuLi5pRC4KICAg
IEFCMzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBBQjQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQUI1MDogMDAgMDIgMDAgMDAg
MDkgMDAgODUgMTIgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEFCNjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDY4IDQ0IEE0ICAu
Li4uLi4uLi5ALi4uaEQuCiAgICBBQjcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQUI4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEFCOTA6IDAwIDAyIDAwIDAwIDA5IDAwIDg2IDEyIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBBQkEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA2OCA0NCBBNCAgLi4uLi4uLi4uQC4uLmhELgogICAgQUJCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEFCQzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBBQkQwOiAwMCAwMiAwMCAwMCAwOSAwMCA4NyAxMiAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQUJFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggNjkgNDQgQTQgIC4uLi4uLi4uLkAuLi5pRC4KICAg
IEFCRjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBBQzAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQUMxMDogMDAgMDIgMDAgMDAg
MDkgMDAgODggMTIgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEFDMjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDYxIDQ0IEE0ICAu
Li4uLi4uLi5ALi4uYUQuCiAgICBBQzMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQUM0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEFDNTA6IDAwIDAyIDAwIDAwIDA5IDAwIDg5IDEyIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBBQzYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA2NyA0NCBBNCAgLi4uLi4uLi4uQC4uLmdELgogICAgQUM3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEFDODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBBQzkwOiAwMCAwMiAwMCAwMCAwOSAwMCA4QSAxMiAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQUNBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggNjUgNDQgQTQgIC4uLi4uLi4uLkAuLi5lRC4KICAg
IEFDQjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBBQ0MwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQUNEMDogMDAgMDIgMDAgMDAg
MDkgMDAgOEIgMTIgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEFDRTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDY2IDQ0IEE0ICAu
Li4uLi4uLi5ALi4uZkQuCiAgICBBQ0YwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQUQwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEFEMTA6IDAwIDAyIDAwIDAwIDA5IDAwIDhDIDEyIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBBRDIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA2NiA0NCBBNCAgLi4uLi4uLi4uQC4uLmZELgogICAgQUQzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEFENDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBBRDUwOiAwMCAwMiAwMCAwMCAwOSAwMCA4RCAxMiAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQUQ2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggNjEgNDQgQTQgIC4uLi4uLi4uLkAuLi5hRC4KICAg
IEFENzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBBRDgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQUQ5MDogMDAgMDIgMDAgMDAg
MDkgMDAgOEUgMTIgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEFEQTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDY0IDQ0IEE0ICAu
Li4uLi4uLi5ALi4uZEQuCiAgICBBREIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQURDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEFERDA6IDAwIDAyIDAwIDAwIDA5IDAwIDhGIDEyIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBBREUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA2NSA0NCBBNCAgLi4uLi4uLi4uQC4uLmVELgogICAgQURGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEFFMDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBBRTEwOiAwMCAwMiAwMCAwMCAwOSAwMCA5MCAxMiAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQUUyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggNjIgNDQgQTQgIC4uLi4uLi4uLkAuLi5iRC4KICAg
IEFFMzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBBRTQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQUU1MDogMDAgMDIgMDAgMDAg
MDkgMDAgOTEgMTIgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEFFNjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDY0IDQ0IEE0ICAu
Li4uLi4uLi5ALi4uZEQuCiAgICBBRTcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQUU4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEFFOTA6IDAwIDAyIDAwIDAwIDA5IDAwIDkyIDEyIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBBRUEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA2MiA0NCBBNCAgLi4uLi4uLi4uQC4uLmJELgogICAgQUVCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEFFQzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBBRUQwOiAwMCAwMiAwMCAwMCAwOSAwMCA5MyAxMiAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQUVFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggNjMgNDQgQTQgIC4uLi4uLi4uLkAuLi5jRC4KICAg
IEFFRjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBBRjAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQUYxMDogMDAgMDIgMDAgMDAg
MDkgMDAgOTQgMTIgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEFGMjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDYzIDQ0IEE0ICAu
Li4uLi4uLi5ALi4uY0QuCiAgICBBRjMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQUY0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEFGNTA6IDAwIDAyIDAwIDAwIDA5IDAwIDk1IDEyIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBBRjYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA1MCA0NCBBNCAgLi4uLi4uLi4uQC4uLlBELgogICAgQUY3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEFGODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBBRjkwOiAwMCAwMiAwMCAwMCAwOSAwMCA5NiAxMiAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQUZBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggNUYgNDQgQTQgIC4uLi4uLi4uLkAuLi5fRC4KICAg
IEFGQjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBBRkMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQUZEMDogMDAgMDIgMDAgMDAg
MDkgMDAgOTcgMTIgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEFGRTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDVGIDQ0IEE0ICAu
Li4uLi4uLi5ALi4uX0QuCiAgICBBRkYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQjAwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEIwMTA6IDAwIDAyIDAwIDAwIDA5IDAwIDk4IDEyIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBCMDIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA1QiA0NCBBNCAgLi4uLi4uLi4uQC4uLltELgogICAgQjAzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEIwNDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBCMDUwOiAwMCAwMiAwMCAwMCAwOSAwMCA5OSAxMiAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQjA2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggNUUgNDQgQTQgIC4uLi4uLi4uLkAuLi5eRC4KICAg
IEIwNzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBCMDgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQjA5MDogMDAgMDIgMDAgMDAg
MDkgMDAgOUEgMTIgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEIwQTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDVFIDQ0IEE0ICAu
Li4uLi4uLi5ALi4uXkQuCiAgICBCMEIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQjBDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEIwRDA6IDAwIDAyIDAwIDAwIDA5IDAwIDlCIDEyIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBCMEUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA1QiA0NCBBNCAgLi4uLi4uLi4uQC4uLltELgogICAgQjBGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEIxMDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBCMTEwOiAwMCAwMiAwMCAwMCAwOSAwMCA5QyAxMiAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQjEyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggNUQgNDQgQTQgIC4uLi4uLi4uLkAuLi5dRC4KICAg
IEIxMzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBCMTQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQjE1MDogMDAgMDIgMDAgMDAg
MDkgMDAgOUQgMTIgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEIxNjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDVDIDQ0IEE0ICAu
Li4uLi4uLi5ALi4uXEQuCiAgICBCMTcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQjE4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEIxOTA6IDAwIDAyIDAwIDAwIDA5IDAwIDlFIDEyIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBCMUEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA1QyA0NCBBNCAgLi4uLi4uLi4uQC4uLlxELgogICAgQjFCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEIxQzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBCMUQwOiAwMCAwMiAwMCAwMCAwOSAwMCA5RiAxMiAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQjFFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggNUQgNDQgQTQgIC4uLi4uLi4uLkAuLi5dRC4KICAg
IEIxRjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBCMjAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQjIxMDogMDAgMDIgMDAgMDAg
MDkgMDAgQTAgMTIgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEIyMjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDUwIDQ0IEE0ICAu
Li4uLi4uLi5ALi4uUEQuCiAgICBCMjMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQjI0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEIyNTA6IDAwIDAyIDAwIDAwIDA5IDAwIEExIDEyIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBCMjYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA1QSA0NCBBNCAgLi4uLi4uLi4uQC4uLlpELgogICAgQjI3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEIyODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBCMjkwOiAwMCAwMiAwMCAwMCAwOSAwMCBBMiAxMiAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQjJBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggNUEgNDQgQTQgIC4uLi4uLi4uLkAuLi5aRC4KICAg
IEIyQjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBCMkMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQjJEMDogMDAgMDIgMDAgMDAg
MDkgMDAgQTMgMTIgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEIyRTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDU3IDQ0IEE0ICAu
Li4uLi4uLi5ALi4uV0QuCiAgICBCMkYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQjMwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEIzMTA6IDAwIDAyIDAwIDAwIDA5IDAwIEE0IDEyIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBCMzIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA1OSA0NCBBNCAgLi4uLi4uLi4uQC4uLllELgogICAgQjMzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEIzNDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBCMzUwOiAwMCAwMiAwMCAwMCAwOSAwMCBBNSAxMiAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQjM2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggNTggNDQgQTQgIC4uLi4uLi4uLkAuLi5YRC4KICAg
IEIzNzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBCMzgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQjM5MDogMDAgMDIgMDAgMDAg
MDkgMDAgQTYgMTIgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEIzQTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDU4IDQ0IEE0ICAu
Li4uLi4uLi5ALi4uWEQuCiAgICBCM0IwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQjNDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEIzRDA6IDAwIDAyIDAwIDAwIDA5IDAwIEE3IDEyIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBCM0UwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA1OSA0NCBBNCAgLi4uLi4uLi4uQC4uLllELgogICAgQjNGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEI0MDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBCNDEwOiAwMCAwMiAwMCAwMCAwOSAwMCBBOCAxMiAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQjQyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggNTEgNDQgQTQgIC4uLi4uLi4uLkAuLi5RRC4KICAg
IEI0MzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBCNDQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQjQ1MDogMDAgMDIgMDAgMDAg
MDkgMDAgQTkgMTIgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEI0NjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDU3IDQ0IEE0ICAu
Li4uLi4uLi5ALi4uV0QuCiAgICBCNDcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQjQ4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEI0OTA6IDAwIDAyIDAwIDAwIDA5IDAwIEFBIDEyIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBCNEEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA1NSA0NCBBNCAgLi4uLi4uLi4uQC4uLlVELgogICAgQjRCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEI0QzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBCNEQwOiAwMCAwMiAwMCAwMCAwOSAwMCBBQiAxMiAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQjRFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggNTYgNDQgQTQgIC4uLi4uLi4uLkAuLi5WRC4KICAg
IEI0RjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBCNTAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQjUxMDogMDAgMDIgMDAgMDAg
MDkgMDAgQUMgMTIgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEI1MjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDU2IDQ0IEE0ICAu
Li4uLi4uLi5ALi4uVkQuCiAgICBCNTMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQjU0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEI1NTA6IDAwIDAyIDAwIDAwIDA5IDAwIEFEIDEyIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBCNTYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA1MSA0NCBBNCAgLi4uLi4uLi4uQC4uLlFELgogICAgQjU3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEI1ODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBCNTkwOiAwMCAwMiAwMCAwMCAwOSAwMCBBRSAxMiAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQjVBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggNTQgNDQgQTQgIC4uLi4uLi4uLkAuLi5URC4KICAg
IEI1QjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBCNUMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQjVEMDogMDAgMDIgMDAgMDAg
MDkgMDAgQUYgMTIgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEI1RTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDU1IDQ0IEE0ICAu
Li4uLi4uLi5ALi4uVUQuCiAgICBCNUYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQjYwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEI2MTA6IDAwIDAyIDAwIDAwIDA5IDAwIEIwIDEyIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBCNjIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA1MiA0NCBBNCAgLi4uLi4uLi4uQC4uLlJELgogICAgQjYzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEI2NDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBCNjUwOiAwMCAwMiAwMCAwMCAwOSAwMCBCMSAxMiAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQjY2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggNTQgNDQgQTQgIC4uLi4uLi4uLkAuLi5URC4KICAg
IEI2NzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBCNjgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQjY5MDogMDAgMDIgMDAgMDAg
MDkgMDAgQjIgMTIgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEI2QTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDUyIDQ0IEE0ICAu
Li4uLi4uLi5ALi4uUkQuCiAgICBCNkIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQjZDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEI2RDA6IDAwIDAyIDAwIDAwIDA5IDAwIEIzIDEyIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBCNkUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA1MyA0NCBBNCAgLi4uLi4uLi4uQC4uLlNELgogICAgQjZGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEI3MDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBCNzEwOiAwMCAwMiAwMCAwMCAwOSAwMCBCNCAxMiAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQjcyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggNTMgNDQgQTQgIC4uLi4uLi4uLkAuLi5TRC4KICAg
IEI3MzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBCNzQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQjc1MDogMDAgMDIgMDAgMDAg
MDkgMDAgQjUgMTIgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEI3NjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IEQwIDMzIEE0ICAu
Li4uLi4uLi5ALi4uLjMuCiAgICBCNzcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQjc4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEI3OTA6IDAwIDAyIDAwIDAwIDA5IDAwIEI2IDEyIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBCN0EwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBERiAzMyBBNCAgLi4uLi4uLi4uQC4uLi4zLgogICAgQjdCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEI3QzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBCN0QwOiAwMCAwMiAwMCAwMCAwOSAwMCBCNyAxMiAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQjdFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggREYgMzMgQTQgIC4uLi4uLi4uLkAuLi4uMy4KICAg
IEI3RjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBCODAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQjgxMDogMDAgMDIgMDAgMDAg
MDkgMDAgQjggMTIgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEI4MjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IERCIDMzIEE0ICAu
Li4uLi4uLi5ALi4uLjMuCiAgICBCODMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQjg0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEI4NTA6IDAwIDAyIDAwIDAwIDA5IDAwIEI5IDEyIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBCODYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBERSAzMyBBNCAgLi4uLi4uLi4uQC4uLi4zLgogICAgQjg3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEI4ODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBCODkwOiAwMCAwMiAwMCAwMCAwOSAwMCBCQSAxMiAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQjhBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggREUgMzMgQTQgIC4uLi4uLi4uLkAuLi4uMy4KICAg
IEI4QjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBCOEMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQjhEMDogMDAgMDIgMDAgMDAg
MDkgMDAgQkIgMTIgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEI4RTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IERCIDMzIEE0ICAu
Li4uLi4uLi5ALi4uLjMuCiAgICBCOEYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQjkwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEI5MTA6IDAwIDAyIDAwIDAwIDA5IDAwIEJDIDEyIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBCOTIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCBERCAzMyBBNCAgLi4uLi4uLi4uQC4uLi4zLgogICAgQjkzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEI5NDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBCOTUwOiAwMCAwMiAwMCAwMCAwOSAwMCBCRCAxMiAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQjk2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggREMgMzMgQTQgIC4uLi4uLi4uLkAuLi4uMy4KICAg
IEI5NzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBCOTgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQjk5MDogMDAgMDIgMDAgMDAg
MDkgMDAgQkUgMTIgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEI5QTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IERDIDMzIEE0ICAu
Li4uLi4uLi5ALi4uLjMuCiAgICBCOUIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQjlDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEI5RDA6IDAwIDAyIDAwIDAwIDA5IDAwIEJGIDEyIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBCOUUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBERCAzMyBBNCAgLi4uLi4uLi4uQC4uLi4zLgogICAgQjlGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEJBMDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBCQTEwOiAwMCAwMiAwMCAwMCAwOSAwMCBDMCAxMiAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQkEyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggRDAgMzMgQTQgIC4uLi4uLi4uLkAuLi4uMy4KICAg
IEJBMzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBCQTQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQkE1MDogMDAgMDIgMDAgMDAg
MDkgMDAgQzEgMTIgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEJBNjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IERBIDMzIEE0ICAu
Li4uLi4uLi5ALi4uLjMuCiAgICBCQTcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQkE4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEJBOTA6IDAwIDAyIDAwIDAwIDA5IDAwIEMyIDEyIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBCQUEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCBEQSAzMyBBNCAgLi4uLi4uLi4uQC4uLi4zLgogICAgQkFCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEJBQzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBCQUQwOiAwMCAwMiAwMCAwMCAwOSAwMCBDMyAxMiAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQkFFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggRDcgMzMgQTQgIC4uLi4uLi4uLkAuLi4uMy4KICAg
IEJBRjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBCQjAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQkIxMDogMDAgMDIgMDAgMDAg
MDkgMDAgQzQgMTIgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEJCMjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IEQ5IDMzIEE0ICAu
Li4uLi4uLi5ALi4uLjMuCiAgICBCQjMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQkI0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEJCNTA6IDAwIDAyIDAwIDAwIDA5IDAwIEM1IDEyIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBCQjYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBEOCAzMyBBNCAgLi4uLi4uLi4uQC4uLi4zLgogICAgQkI3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEJCODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBCQjkwOiAwMCAwMiAwMCAwMCAwOSAwMCBDNiAxMiAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQkJBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggRDggMzMgQTQgIC4uLi4uLi4uLkAuLi4uMy4KICAg
IEJCQjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBCQkMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQkJEMDogMDAgMDIgMDAgMDAg
MDkgMDAgQzcgMTIgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEJCRTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IEQ5IDMzIEE0ICAu
Li4uLi4uLi5ALi4uLjMuCiAgICBCQkYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQkMwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEJDMTA6IDAwIDAyIDAwIDAwIDA5IDAwIEM4IDEyIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBCQzIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBEMSAzMyBBNCAgLi4uLi4uLi4uQC4uLi4zLgogICAgQkMzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEJDNDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBCQzUwOiAwMCAwMiAwMCAwMCAwOSAwMCBDOSAxMiAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQkM2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggRDcgMzMgQTQgIC4uLi4uLi4uLkAuLi4uMy4KICAg
IEJDNzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBCQzgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQkM5MDogMDAgMDIgMDAgMDAg
MDkgMDAgQ0EgMTIgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEJDQTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IEQ1IDMzIEE0ICAu
Li4uLi4uLi5ALi4uLjMuCiAgICBCQ0IwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQkNDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEJDRDA6IDAwIDAyIDAwIDAwIDA5IDAwIENCIDEyIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBCQ0UwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBENiAzMyBBNCAgLi4uLi4uLi4uQC4uLi4zLgogICAgQkNGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEJEMDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBCRDEwOiAwMCAwMiAwMCAwMCAwOSAwMCBDQyAxMiAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQkQyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggRDYgMzMgQTQgIC4uLi4uLi4uLkAuLi4uMy4KICAg
IEJEMzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBCRDQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQkQ1MDogMDAgMDIgMDAgMDAg
MDkgMDAgQ0QgMTIgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEJENjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IEQxIDMzIEE0ICAu
Li4uLi4uLi5ALi4uLjMuCiAgICBCRDcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQkQ4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEJEOTA6IDAwIDAyIDAwIDAwIDA5IDAwIENFIDEyIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBCREEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCBENCAzMyBBNCAgLi4uLi4uLi4uQC4uLi4zLgogICAgQkRCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEJEQzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBCREQwOiAwMCAwMiAwMCAwMCAwOSAwMCBDRiAxMiAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQkRFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggRDUgMzMgQTQgIC4uLi4uLi4uLkAuLi4uMy4KICAg
IEJERjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBCRTAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQkUxMDogMDAgMDIgMDAgMDAg
MDkgMDAgRDAgMTIgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEJFMjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IEQyIDMzIEE0ICAu
Li4uLi4uLi5ALi4uLjMuCiAgICBCRTMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQkU0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEJFNTA6IDAwIDAyIDAwIDAwIDA5IDAwIEQxIDEyIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBCRTYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBENCAzMyBBNCAgLi4uLi4uLi4uQC4uLi4zLgogICAgQkU3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEJFODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBCRTkwOiAwMCAwMiAwMCAwMCAwOSAwMCBEMiAxMiAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQkVBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggRDIgMzMgQTQgIC4uLi4uLi4uLkAuLi4uMy4KICAg
IEJFQjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBCRUMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQkVEMDogMDAgMDIgMDAgMDAg
MDkgMDAgRDMgMTIgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEJFRTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IEQzIDMzIEE0ICAu
Li4uLi4uLi5ALi4uLjMuCiAgICBCRUYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQkYwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEJGMTA6IDAwIDAyIDAwIDAwIDA5IDAwIEQ0IDEyIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBCRjIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCBEMyAzMyBBNCAgLi4uLi4uLi4uQC4uLi4zLgogICAgQkYzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEJGNDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBCRjUwOiAwMCAwMiAwMCAwMCAwOSAwMCBENSAxMiAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQkY2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggQzAgMzMgQTQgIC4uLi4uLi4uLkAuLi4uMy4KICAg
IEJGNzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBCRjgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQkY5MDogMDAgMDIgMDAgMDAg
MDkgMDAgRDYgMTIgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEJGQTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IENGIDMzIEE0ICAu
Li4uLi4uLi5ALi4uLjMuCiAgICBCRkIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQkZDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEJGRDA6IDAwIDAyIDAwIDAwIDA5IDAwIEQ3IDEyIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBCRkUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCBDRiAzMyBBNCAgLi4uLi4uLi4uQC4uLi4zLgogICAgQkZGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEMwMDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBDMDEwOiAwMCAwMiAwMCAwMCAwOSAwMCBEOCAxMiAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQzAyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggQ0IgMzMgQTQgIC4uLi4uLi4uLkAuLi4uMy4KICAg
IEMwMzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBDMDQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQzA1MDogMDAgMDIgMDAgMDAg
MDkgMDAgRDkgMTIgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEMwNjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IENFIDMzIEE0ICAu
Li4uLi4uLi5ALi4uLjMuCiAgICBDMDcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQzA4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEMwOTA6IDAwIDAyIDAwIDAwIDA5IDAwIERBIDEyIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBDMEEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCBDRSAzMyBBNCAgLi4uLi4uLi4uQC4uLi4zLgogICAgQzBCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEMwQzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBDMEQwOiAwMCAwMiAwMCAwMCAwOSAwMCBEQiAxMiAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQzBFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggQ0IgMzMgQTQgIC4uLi4uLi4uLkAuLi4uMy4KICAg
IEMwRjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBDMTAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQzExMDogMDAgMDIgMDAgMDAg
MDkgMDAgREMgMTIgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEMxMjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IENEIDMzIEE0ICAu
Li4uLi4uLi5ALi4uLjMuCiAgICBDMTMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQzE0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEMxNTA6IDAwIDAyIDAwIDAwIDA5IDAwIEREIDEyIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBDMTYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBDQyAzMyBBNCAgLi4uLi4uLi4uQC4uLi4zLgogICAgQzE3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEMxODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBDMTkwOiAwMCAwMiAwMCAwMCAwOSAwMCBERSAxMiAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQzFBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggQ0MgMzMgQTQgIC4uLi4uLi4uLkAuLi4uMy4KICAg
IEMxQjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBDMUMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQzFEMDogMDAgMDIgMDAgMDAg
MDkgMDAgREYgMTIgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEMxRTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IENEIDMzIEE0ICAu
Li4uLi4uLi5ALi4uLjMuCiAgICBDMUYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQzIwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEMyMTA6IDAwIDAyIDAwIDAwIDA5IDAwIEUwIDEyIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBDMjIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCBDMCAzMyBBNCAgLi4uLi4uLi4uQC4uLi4zLgogICAgQzIzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEMyNDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBDMjUwOiAwMCAwMiAwMCAwMCAwOSAwMCBFMSAxMiAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQzI2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggQ0EgMzMgQTQgIC4uLi4uLi4uLkAuLi4uMy4KICAg
IEMyNzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBDMjgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQzI5MDogMDAgMDIgMDAgMDAg
MDkgMDAgRTIgMTIgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEMyQTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IENBIDMzIEE0ICAu
Li4uLi4uLi5ALi4uLjMuCiAgICBDMkIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQzJDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEMyRDA6IDAwIDAyIDAwIDAwIDA5IDAwIEUzIDEyIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBDMkUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCBDNyAzMyBBNCAgLi4uLi4uLi4uQC4uLi4zLgogICAgQzJGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEMzMDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBDMzEwOiAwMCAwMiAwMCAwMCAwOSAwMCBFNCAxMiAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQzMyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggQzkgMzMgQTQgIC4uLi4uLi4uLkAuLi4uMy4KICAg
IEMzMzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBDMzQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQzM1MDogMDAgMDIgMDAgMDAg
MDkgMDAgRTUgMTIgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEMzNjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IEM4IDMzIEE0ICAu
Li4uLi4uLi5ALi4uLjMuCiAgICBDMzcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQzM4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEMzOTA6IDAwIDAyIDAwIDAwIDA5IDAwIEU2IDEyIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBDM0EwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCBDOCAzMyBBNCAgLi4uLi4uLi4uQC4uLi4zLgogICAgQzNCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEMzQzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBDM0QwOiAwMCAwMiAwMCAwMCAwOSAwMCBFNyAxMiAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQzNFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggQzkgMzMgQTQgIC4uLi4uLi4uLkAuLi4uMy4KICAg
IEMzRjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBDNDAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQzQxMDogMDAgMDIgMDAgMDAg
MDkgMDAgRTggMTIgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEM0MjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IEMxIDMzIEE0ICAu
Li4uLi4uLi5ALi4uLjMuCiAgICBDNDMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQzQ0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEM0NTA6IDAwIDAyIDAwIDAwIDA5IDAwIEU5IDEyIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBDNDYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBDNyAzMyBBNCAgLi4uLi4uLi4uQC4uLi4zLgogICAgQzQ3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEM0ODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBDNDkwOiAwMCAwMiAwMCAwMCAwOSAwMCBFQSAxMiAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQzRBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggQzUgMzMgQTQgIC4uLi4uLi4uLkAuLi4uMy4KICAg
IEM0QjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBDNEMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQzREMDogMDAgMDIgMDAgMDAg
MDkgMDAgRUIgMTIgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEM0RTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IEM2IDMzIEE0ICAu
Li4uLi4uLi5ALi4uLjMuCiAgICBDNEYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQzUwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEM1MTA6IDAwIDAyIDAwIDAwIDA5IDAwIEVDIDEyIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBDNTIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCBDNiAzMyBBNCAgLi4uLi4uLi4uQC4uLi4zLgogICAgQzUzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEM1NDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBDNTUwOiAwMCAwMiAwMCAwMCAwOSAwMCBFRCAxMiAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQzU2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggQzEgMzMgQTQgIC4uLi4uLi4uLkAuLi4uMy4KICAg
IEM1NzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBDNTgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQzU5MDogMDAgMDIgMDAgMDAg
MDkgMDAgRUUgMTIgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEM1QTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IEM0IDMzIEE0ICAu
Li4uLi4uLi5ALi4uLjMuCiAgICBDNUIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQzVDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEM1RDA6IDAwIDAyIDAwIDAwIDA5IDAwIEVGIDEyIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBDNUUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBDNSAzMyBBNCAgLi4uLi4uLi4uQC4uLi4zLgogICAgQzVGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEM2MDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBDNjEwOiAwMCAwMiAwMCAwMCAwOSAwMCBGMCAxMiAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQzYyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggQzIgMzMgQTQgIC4uLi4uLi4uLkAuLi4uMy4KICAg
IEM2MzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBDNjQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQzY1MDogMDAgMDIgMDAgMDAg
MDkgMDAgRjEgMTIgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEM2NjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IEM0IDMzIEE0ICAu
Li4uLi4uLi5ALi4uLjMuCiAgICBDNjcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQzY4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEM2OTA6IDAwIDAyIDAwIDAwIDA5IDAwIEYyIDEyIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBDNkEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCBDMiAzMyBBNCAgLi4uLi4uLi4uQC4uLi4zLgogICAgQzZCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEM2QzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBDNkQwOiAwMCAwMiAwMCAwMCAwOSAwMCBGMyAxMiAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQzZFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggQzMgMzMgQTQgIC4uLi4uLi4uLkAuLi4uMy4KICAg
IEM2RjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBDNzAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQzcxMDogMDAgMDIgMDAgMDAg
MDkgMDAgRjQgMTIgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEM3MjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IEMzIDMzIEE0ICAu
Li4uLi4uLi5ALi4uLjMuCiAgICBDNzMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQzc0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEM3NTA6IDAwIDAyIDAwIDAwIDA5IDAwIEY1IDEyIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBDNzYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBCMCAzMyBBNCAgLi4uLi4uLi4uQC4uLi4zLgogICAgQzc3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEM3ODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBDNzkwOiAwMCAwMiAwMCAwMCAwOSAwMCBGNiAxMiAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQzdBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggQkYgMzMgQTQgIC4uLi4uLi4uLkAuLi4uMy4KICAg
IEM3QjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBDN0MwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQzdEMDogMDAgMDIgMDAgMDAg
MDkgMDAgRjcgMTIgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEM3RTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IEJGIDMzIEE0ICAu
Li4uLi4uLi5ALi4uLjMuCiAgICBDN0YwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQzgwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEM4MTA6IDAwIDAyIDAwIDAwIDA5IDAwIEY4IDEyIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBDODIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBCQiAzMyBBNCAgLi4uLi4uLi4uQC4uLi4zLgogICAgQzgzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEM4NDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBDODUwOiAwMCAwMiAwMCAwMCAwOSAwMCBGOSAxMiAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQzg2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggQkUgMzMgQTQgIC4uLi4uLi4uLkAuLi4uMy4KICAg
IEM4NzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBDODgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQzg5MDogMDAgMDIgMDAgMDAg
MDkgMDAgRkEgMTIgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEM4QTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IEJFIDMzIEE0ICAu
Li4uLi4uLi5ALi4uLjMuCiAgICBDOEIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQzhDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEM4RDA6IDAwIDAyIDAwIDAwIDA5IDAwIEZCIDEyIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBDOEUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCBCQiAzMyBBNCAgLi4uLi4uLi4uQC4uLi4zLgogICAgQzhGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEM5MDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBDOTEwOiAwMCAwMiAwMCAwMCAwOSAwMCBGQyAxMiAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQzkyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggQkQgMzMgQTQgIC4uLi4uLi4uLkAuLi4uMy4KICAg
IEM5MzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBDOTQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQzk1MDogMDAgMDIgMDAgMDAg
MDkgMDAgRkQgMTIgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEM5NjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IEJDIDMzIEE0ICAu
Li4uLi4uLi5ALi4uLjMuCiAgICBDOTcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQzk4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEM5OTA6IDAwIDAyIDAwIDAwIDA5IDAwIEZFIDEyIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBDOUEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCBCQyAzMyBBNCAgLi4uLi4uLi4uQC4uLi4zLgogICAgQzlCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEM5QzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBDOUQwOiAwMCAwMiAwMCAwMCAwOSAwMCBGRiAxMiAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQzlFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggQkQgMzMgQTQgIC4uLi4uLi4uLkAuLi4uMy4KICAg
IEM5RjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBDQTAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQ0ExMDogMDAgMDIgMDAgMDAg
MDkgMDAgMDAgMTMgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IENBMjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IEIwIDMzIEE0ICAu
Li4uLi4uLi5ALi4uLjMuCiAgICBDQTMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQ0E0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IENBNTA6IDAwIDAyIDAwIDAwIDA5IDAwIDAxIDEzIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBDQTYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBCQSAzMyBBNCAgLi4uLi4uLi4uQC4uLi4zLgogICAgQ0E3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IENBODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBDQTkwOiAwMCAwMiAwMCAwMCAwOSAwMCAwMiAxMyAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQ0FBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggQkEgMzMgQTQgIC4uLi4uLi4uLkAuLi4uMy4KICAg
IENBQjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBDQUMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQ0FEMDogMDAgMDIgMDAgMDAg
MDkgMDAgMDMgMTMgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IENBRTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IEI3IDMzIEE0ICAu
Li4uLi4uLi5ALi4uLjMuCiAgICBDQUYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQ0IwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IENCMTA6IDAwIDAyIDAwIDAwIDA5IDAwIDA0IDEzIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBDQjIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCBCOSAzMyBBNCAgLi4uLi4uLi4uQC4uLi4zLgogICAgQ0IzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IENCNDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBDQjUwOiAwMCAwMiAwMCAwMCAwOSAwMCAwNSAxMyAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQ0I2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggQjggMzMgQTQgIC4uLi4uLi4uLkAuLi4uMy4KICAg
IENCNzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBDQjgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQ0I5MDogMDAgMDIgMDAgMDAg
MDkgMDAgMDYgMTMgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IENCQTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IEI4IDMzIEE0ICAu
Li4uLi4uLi5ALi4uLjMuCiAgICBDQkIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQ0JDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IENCRDA6IDAwIDAyIDAwIDAwIDA5IDAwIDA3IDEzIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBDQkUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBCOSAzMyBBNCAgLi4uLi4uLi4uQC4uLi4zLgogICAgQ0JGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IENDMDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBDQzEwOiAwMCAwMiAwMCAwMCAwOSAwMCAwOCAxMyAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQ0MyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggQjEgMzMgQTQgIC4uLi4uLi4uLkAuLi4uMy4KICAg
IENDMzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBDQzQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQ0M1MDogMDAgMDIgMDAgMDAg
MDkgMDAgMDkgMTMgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IENDNjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IEI3IDMzIEE0ICAu
Li4uLi4uLi5ALi4uLjMuCiAgICBDQzcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQ0M4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IENDOTA6IDAwIDAyIDAwIDAwIDA5IDAwIDBBIDEzIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBDQ0EwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCBCNSAzMyBBNCAgLi4uLi4uLi4uQC4uLi4zLgogICAgQ0NCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IENDQzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBDQ0QwOiAwMCAwMiAwMCAwMCAwOSAwMCAwQiAxMyAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQ0NFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggQjYgMzMgQTQgIC4uLi4uLi4uLkAuLi4uMy4KICAg
IENDRjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBDRDAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQ0QxMDogMDAgMDIgMDAgMDAg
MDkgMDAgMEMgMTMgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IENEMjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IEI2IDMzIEE0ICAu
Li4uLi4uLi5ALi4uLjMuCiAgICBDRDMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQ0Q0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IENENTA6IDAwIDAyIDAwIDAwIDA5IDAwIDBEIDEzIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBDRDYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCBCMSAzMyBBNCAgLi4uLi4uLi4uQC4uLi4zLgogICAgQ0Q3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IENEODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBDRDkwOiAwMCAwMiAwMCAwMCAwOSAwMCAwRSAxMyAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQ0RBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggQjQgMzMgQTQgIC4uLi4uLi4uLkAuLi4uMy4KICAg
IENEQjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBDREMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQ0REMDogMDAgMDIgMDAgMDAg
MDkgMDAgMEYgMTMgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IENERTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IEI1IDMzIEE0ICAu
Li4uLi4uLi5ALi4uLjMuCiAgICBDREYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQ0UwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IENFMTA6IDAwIDAyIDAwIDAwIDA5IDAwIDEwIDEzIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBDRTIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBCMiAzMyBBNCAgLi4uLi4uLi4uQC4uLi4zLgogICAgQ0UzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IENFNDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBDRTUwOiAwMCAwMiAwMCAwMCAwOSAwMCAxMSAxMyAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQ0U2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggQjQgMzMgQTQgIC4uLi4uLi4uLkAuLi4uMy4KICAg
IENFNzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBDRTgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQ0U5MDogMDAgMDIgMDAgMDAg
MDkgMDAgMTIgMTMgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IENFQTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IEIyIDMzIEE0ICAu
Li4uLi4uLi5ALi4uLjMuCiAgICBDRUIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQ0VDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IENFRDA6IDAwIDAyIDAwIDAwIDA5IDAwIDEzIDEzIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBDRUUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBCMyAzMyBBNCAgLi4uLi4uLi4uQC4uLi4zLgogICAgQ0VGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IENGMDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBDRjEwOiAwMCAwMiAwMCAwMCAwOSAwMCAxNCAxMyAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQ0YyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggQjMgMzMgQTQgIC4uLi4uLi4uLkAuLi4uMy4KICAg
IENGMzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBDRjQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQ0Y1MDogMDAgMDIgMDAgMDAg
MDkgMDAgMTUgMTMgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IENGNjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IEEwIDMzIEE0ICAu
Li4uLi4uLi5ALi4uLjMuCiAgICBDRjcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQ0Y4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IENGOTA6IDAwIDAyIDAwIDAwIDA5IDAwIDE2IDEzIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBDRkEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBBRiAzMyBBNCAgLi4uLi4uLi4uQC4uLi4zLgogICAgQ0ZCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IENGQzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBDRkQwOiAwMCAwMiAwMCAwMCAwOSAwMCAxNyAxMyAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgQ0ZFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggQUYgMzMgQTQgIC4uLi4uLi4uLkAuLi4uMy4KICAg
IENGRjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBEMDAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgRDAxMDogMDAgMDIgMDAgMDAg
MDkgMDAgMTggMTMgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEQwMjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IEFCIDMzIEE0ICAu
Li4uLi4uLi5ALi4uLjMuCiAgICBEMDMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgRDA0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEQwNTA6IDAwIDAyIDAwIDAwIDA5IDAwIDE5IDEzIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBEMDYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBBRSAzMyBBNCAgLi4uLi4uLi4uQC4uLi4zLgogICAgRDA3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEQwODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBEMDkwOiAwMCAwMiAwMCAwMCAwOSAwMCAxQSAxMyAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgRDBBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggQUUgMzMgQTQgIC4uLi4uLi4uLkAuLi4uMy4KICAg
IEQwQjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBEMEMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgRDBEMDogMDAgMDIgMDAgMDAg
MDkgMDAgMUIgMTMgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEQwRTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IEFCIDMzIEE0ICAu
Li4uLi4uLi5ALi4uLjMuCiAgICBEMEYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgRDEwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEQxMTA6IDAwIDAyIDAwIDAwIDA5IDAwIDFDIDEzIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBEMTIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCBBRCAzMyBBNCAgLi4uLi4uLi4uQC4uLi4zLgogICAgRDEzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEQxNDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBEMTUwOiAwMCAwMiAwMCAwMCAwOSAwMCAxRCAxMyAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgRDE2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggQUMgMzMgQTQgIC4uLi4uLi4uLkAuLi4uMy4KICAg
IEQxNzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBEMTgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgRDE5MDogMDAgMDIgMDAgMDAg
MDkgMDAgMUUgMTMgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEQxQTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IEFDIDMzIEE0ICAu
Li4uLi4uLi5ALi4uLjMuCiAgICBEMUIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgRDFDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEQxRDA6IDAwIDAyIDAwIDAwIDA5IDAwIDFGIDEzIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBEMUUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBBRCAzMyBBNCAgLi4uLi4uLi4uQC4uLi4zLgogICAgRDFGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEQyMDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBEMjEwOiAwMCAwMiAwMCAwMCAwOSAwMCAyMCAxMyAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uIC4uLi4uLi4uLgogICAgRDIyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggQTAgMzMgQTQgIC4uLi4uLi4uLkAuLi4uMy4KICAg
IEQyMzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBEMjQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgRDI1MDogMDAgMDIgMDAgMDAg
MDkgMDAgMjEgMTMgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLiEuLi4uLi4uLi4KICAg
IEQyNjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IEFBIDMzIEE0ICAu
Li4uLi4uLi5ALi4uLjMuCiAgICBEMjcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgRDI4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEQyOTA6IDAwIDAyIDAwIDAwIDA5IDAwIDIyIDEzIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4iLi4uLi4uLi4uCiAgICBEMkEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCBBQSAzMyBBNCAgLi4uLi4uLi4uQC4uLi4zLgogICAgRDJCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEQyQzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBEMkQwOiAwMCAwMiAwMCAwMCAwOSAwMCAyMyAxMyAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uIy4uLi4uLi4uLgogICAgRDJFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggQTcgMzMgQTQgIC4uLi4uLi4uLkAuLi4uMy4KICAg
IEQyRjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBEMzAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgRDMxMDogMDAgMDIgMDAgMDAg
MDkgMDAgMjQgMTMgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLiQuLi4uLi4uLi4KICAg
IEQzMjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IEE5IDMzIEE0ICAu
Li4uLi4uLi5ALi4uLjMuCiAgICBEMzMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgRDM0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEQzNTA6IDAwIDAyIDAwIDAwIDA5IDAwIDI1IDEzIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4lLi4uLi4uLi4uCiAgICBEMzYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBBOCAzMyBBNCAgLi4uLi4uLi4uQC4uLi4zLgogICAgRDM3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEQzODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBEMzkwOiAwMCAwMiAwMCAwMCAwOSAwMCAyNiAxMyAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uJi4uLi4uLi4uLgogICAgRDNBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggQTggMzMgQTQgIC4uLi4uLi4uLkAuLi4uMy4KICAg
IEQzQjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBEM0MwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgRDNEMDogMDAgMDIgMDAgMDAg
MDkgMDAgMjcgMTMgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLicuLi4uLi4uLi4KICAg
IEQzRTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IEE5IDMzIEE0ICAu
Li4uLi4uLi5ALi4uLjMuCiAgICBEM0YwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgRDQwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEQ0MTA6IDAwIDAyIDAwIDAwIDA5IDAwIDI4IDEzIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4oLi4uLi4uLi4uCiAgICBENDIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBBMSAzMyBBNCAgLi4uLi4uLi4uQC4uLi4zLgogICAgRDQzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEQ0NDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBENDUwOiAwMCAwMiAwMCAwMCAwOSAwMCAyOSAxMyAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uKS4uLi4uLi4uLgogICAgRDQ2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggQTcgMzMgQTQgIC4uLi4uLi4uLkAuLi4uMy4KICAg
IEQ0NzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBENDgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgRDQ5MDogMDAgMDIgMDAgMDAg
MDkgMDAgMkEgMTMgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLiouLi4uLi4uLi4KICAg
IEQ0QTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IEE1IDMzIEE0ICAu
Li4uLi4uLi5ALi4uLjMuCiAgICBENEIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgRDRDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEQ0RDA6IDAwIDAyIDAwIDAwIDA5IDAwIDJCIDEzIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4rLi4uLi4uLi4uCiAgICBENEUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBBNiAzMyBBNCAgLi4uLi4uLi4uQC4uLi4zLgogICAgRDRGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEQ1MDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBENTEwOiAwMCAwMiAwMCAwMCAwOSAwMCAyQyAxMyAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLC4uLi4uLi4uLgogICAgRDUyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggQTYgMzMgQTQgIC4uLi4uLi4uLkAuLi4uMy4KICAg
IEQ1MzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBENTQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgRDU1MDogMDAgMDIgMDAgMDAg
MDkgMDAgMkQgMTMgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi0uLi4uLi4uLi4KICAg
IEQ1NjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IEExIDMzIEE0ICAu
Li4uLi4uLi5ALi4uLjMuCiAgICBENTcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgRDU4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEQ1OTA6IDAwIDAyIDAwIDAwIDA5IDAwIDJFIDEzIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBENUEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCBBNCAzMyBBNCAgLi4uLi4uLi4uQC4uLi4zLgogICAgRDVCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEQ1QzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBENUQwOiAwMCAwMiAwMCAwMCAwOSAwMCAyRiAxMyAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLy4uLi4uLi4uLgogICAgRDVFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggQTUgMzMgQTQgIC4uLi4uLi4uLkAuLi4uMy4KICAg
IEQ1RjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBENjAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgRDYxMDogMDAgMDIgMDAgMDAg
MDkgMDAgMzAgMTMgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLjAuLi4uLi4uLi4KICAg
IEQ2MjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IEEyIDMzIEE0ICAu
Li4uLi4uLi5ALi4uLjMuCiAgICBENjMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgRDY0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEQ2NTA6IDAwIDAyIDAwIDAwIDA5IDAwIDMxIDEzIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4xLi4uLi4uLi4uCiAgICBENjYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBBNCAzMyBBNCAgLi4uLi4uLi4uQC4uLi4zLgogICAgRDY3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEQ2ODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBENjkwOiAwMCAwMiAwMCAwMCAwOSAwMCAzMiAxMyAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uMi4uLi4uLi4uLgogICAgRDZBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggQTIgMzMgQTQgIC4uLi4uLi4uLkAuLi4uMy4KICAg
IEQ2QjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBENkMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgRDZEMDogMDAgMDIgMDAgMDAg
MDkgMDAgMzMgMTMgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLjMuLi4uLi4uLi4KICAg
IEQ2RTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IEEzIDMzIEE0ICAu
Li4uLi4uLi5ALi4uLjMuCiAgICBENkYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgRDcwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEQ3MTA6IDAwIDAyIDAwIDAwIDA5IDAwIDM0IDEzIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi40Li4uLi4uLi4uCiAgICBENzIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCBBMyAzMyBBNCAgLi4uLi4uLi4uQC4uLi4zLgogICAgRDczMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEQ3NDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBENzUwOiAwMCAwMiAwMCAwMCAwOSAwMCAzNSAxMyAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uNS4uLi4uLi4uLgogICAgRDc2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggOTAgMzMgQTQgIC4uLi4uLi4uLkAuLi4uMy4KICAg
IEQ3NzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBENzgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgRDc5MDogMDAgMDIgMDAgMDAg
MDkgMDAgMzYgMTMgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLjYuLi4uLi4uLi4KICAg
IEQ3QTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDlGIDMzIEE0ICAu
Li4uLi4uLi5ALi4uLjMuCiAgICBEN0IwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgRDdDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEQ3RDA6IDAwIDAyIDAwIDAwIDA5IDAwIDM3IDEzIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi43Li4uLi4uLi4uCiAgICBEN0UwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA5RiAzMyBBNCAgLi4uLi4uLi4uQC4uLi4zLgogICAgRDdGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEQ4MDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBEODEwOiAwMCAwMiAwMCAwMCAwOSAwMCAzOCAxMyAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uOC4uLi4uLi4uLgogICAgRDgyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggOUIgMzMgQTQgIC4uLi4uLi4uLkAuLi4uMy4KICAg
IEQ4MzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBEODQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgRDg1MDogMDAgMDIgMDAgMDAg
MDkgMDAgMzkgMTMgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLjkuLi4uLi4uLi4KICAg
IEQ4NjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDlFIDMzIEE0ICAu
Li4uLi4uLi5ALi4uLjMuCiAgICBEODcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgRDg4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEQ4OTA6IDAwIDAyIDAwIDAwIDA5IDAwIDNBIDEzIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi46Li4uLi4uLi4uCiAgICBEOEEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA5RSAzMyBBNCAgLi4uLi4uLi4uQC4uLi4zLgogICAgRDhCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEQ4QzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBEOEQwOiAwMCAwMiAwMCAwMCAwOSAwMCAzQiAxMyAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uOy4uLi4uLi4uLgogICAgRDhFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggOUIgMzMgQTQgIC4uLi4uLi4uLkAuLi4uMy4KICAg
IEQ4RjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBEOTAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgRDkxMDogMDAgMDIgMDAgMDAg
MDkgMDAgM0MgMTMgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLjwuLi4uLi4uLi4KICAg
IEQ5MjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDlEIDMzIEE0ICAu
Li4uLi4uLi5ALi4uLjMuCiAgICBEOTMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgRDk0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEQ5NTA6IDAwIDAyIDAwIDAwIDA5IDAwIDNEIDEzIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi49Li4uLi4uLi4uCiAgICBEOTYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA5QyAzMyBBNCAgLi4uLi4uLi4uQC4uLi4zLgogICAgRDk3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEQ5ODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBEOTkwOiAwMCAwMiAwMCAwMCAwOSAwMCAzRSAxMyAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uPi4uLi4uLi4uLgogICAgRDlBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggOUMgMzMgQTQgIC4uLi4uLi4uLkAuLi4uMy4KICAg
IEQ5QjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBEOUMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgRDlEMDogMDAgMDIgMDAgMDAg
MDkgMDAgM0YgMTMgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLj8uLi4uLi4uLi4KICAg
IEQ5RTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDlEIDMzIEE0ICAu
Li4uLi4uLi5ALi4uLjMuCiAgICBEOUYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgREEwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IERBMTA6IDAwIDAyIDAwIDAwIDA5IDAwIDQwIDEzIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5ALi4uLi4uLi4uCiAgICBEQTIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA5MCAzMyBBNCAgLi4uLi4uLi4uQC4uLi4zLgogICAgREEzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IERBNDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBEQTUwOiAwMCAwMiAwMCAwMCAwOSAwMCA0MSAxMyAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uQS4uLi4uLi4uLgogICAgREE2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggOUEgMzMgQTQgIC4uLi4uLi4uLkAuLi4uMy4KICAg
IERBNzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBEQTgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgREE5MDogMDAgMDIgMDAgMDAg
MDkgMDAgNDIgMTMgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLkIuLi4uLi4uLi4KICAg
IERBQTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDlBIDMzIEE0ICAu
Li4uLi4uLi5ALi4uLjMuCiAgICBEQUIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgREFDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IERBRDA6IDAwIDAyIDAwIDAwIDA5IDAwIDQzIDEzIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5DLi4uLi4uLi4uCiAgICBEQUUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA5NyAzMyBBNCAgLi4uLi4uLi4uQC4uLi4zLgogICAgREFGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IERCMDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBEQjEwOiAwMCAwMiAwMCAwMCAwOSAwMCA0NCAxMyAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uRC4uLi4uLi4uLgogICAgREIyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggOTkgMzMgQTQgIC4uLi4uLi4uLkAuLi4uMy4KICAg
IERCMzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBEQjQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgREI1MDogMDAgMDIgMDAgMDAg
MDkgMDAgNDUgMTMgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLkUuLi4uLi4uLi4KICAg
IERCNjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDk4IDMzIEE0ICAu
Li4uLi4uLi5ALi4uLjMuCiAgICBEQjcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgREI4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IERCOTA6IDAwIDAyIDAwIDAwIDA5IDAwIDQ2IDEzIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5GLi4uLi4uLi4uCiAgICBEQkEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA5OCAzMyBBNCAgLi4uLi4uLi4uQC4uLi4zLgogICAgREJCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IERCQzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBEQkQwOiAwMCAwMiAwMCAwMCAwOSAwMCA0NyAxMyAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uRy4uLi4uLi4uLgogICAgREJFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggOTkgMzMgQTQgIC4uLi4uLi4uLkAuLi4uMy4KICAg
IERCRjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBEQzAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgREMxMDogMDAgMDIgMDAgMDAg
MDkgMDAgNDggMTMgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLkguLi4uLi4uLi4KICAg
IERDMjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDkxIDMzIEE0ICAu
Li4uLi4uLi5ALi4uLjMuCiAgICBEQzMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgREM0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IERDNTA6IDAwIDAyIDAwIDAwIDA5IDAwIDQ5IDEzIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5JLi4uLi4uLi4uCiAgICBEQzYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA5NyAzMyBBNCAgLi4uLi4uLi4uQC4uLi4zLgogICAgREM3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IERDODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBEQzkwOiAwMCAwMiAwMCAwMCAwOSAwMCA0QSAxMyAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uSi4uLi4uLi4uLgogICAgRENBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggOTUgMzMgQTQgIC4uLi4uLi4uLkAuLi4uMy4KICAg
IERDQjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBEQ0MwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgRENEMDogMDAgMDIgMDAgMDAg
MDkgMDAgNEIgMTMgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLksuLi4uLi4uLi4KICAg
IERDRTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDk2IDMzIEE0ICAu
Li4uLi4uLi5ALi4uLjMuCiAgICBEQ0YwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgREQwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEREMTA6IDAwIDAyIDAwIDAwIDA5IDAwIDRDIDEzIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5MLi4uLi4uLi4uCiAgICBERDIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA5NiAzMyBBNCAgLi4uLi4uLi4uQC4uLi4zLgogICAgREQzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IERENDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBERDUwOiAwMCAwMiAwMCAwMCAwOSAwMCA0RCAxMyAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uTS4uLi4uLi4uLgogICAgREQ2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggOTEgMzMgQTQgIC4uLi4uLi4uLkAuLi4uMy4KICAg
IERENzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBERDgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgREQ5MDogMDAgMDIgMDAgMDAg
MDkgMDAgNEUgMTMgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLk4uLi4uLi4uLi4KICAg
IEREQTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDk0IDMzIEE0ICAu
Li4uLi4uLi5ALi4uLjMuCiAgICBEREIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgRERDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IERERDA6IDAwIDAyIDAwIDAwIDA5IDAwIDRGIDEzIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5PLi4uLi4uLi4uCiAgICBEREUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA5NSAzMyBBNCAgLi4uLi4uLi4uQC4uLi4zLgogICAgRERGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IERFMDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBERTEwOiAwMCAwMiAwMCAwMCAwOSAwMCA1MCAxMyAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uUC4uLi4uLi4uLgogICAgREUyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggOTIgMzMgQTQgIC4uLi4uLi4uLkAuLi4uMy4KICAg
IERFMzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBERTQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgREU1MDogMDAgMDIgMDAgMDAg
MDkgMDAgNTEgMTMgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLlEuLi4uLi4uLi4KICAg
IERFNjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDk0IDMzIEE0ICAu
Li4uLi4uLi5ALi4uLjMuCiAgICBERTcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgREU4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IERFOTA6IDAwIDAyIDAwIDAwIDA5IDAwIDUyIDEzIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5SLi4uLi4uLi4uCiAgICBERUEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA5MiAzMyBBNCAgLi4uLi4uLi4uQC4uLi4zLgogICAgREVCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IERFQzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBERUQwOiAwMCAwMiAwMCAwMCAwOSAwMCA1MyAxMyAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uUy4uLi4uLi4uLgogICAgREVFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggOTMgMzMgQTQgIC4uLi4uLi4uLkAuLi4uMy4KICAg
IERFRjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBERjAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgREYxMDogMDAgMDIgMDAgMDAg
MDkgMDAgNTQgMTMgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLlQuLi4uLi4uLi4KICAg
IERGMjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDkzIDMzIEE0ICAu
Li4uLi4uLi5ALi4uLjMuCiAgICBERjMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgREY0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IERGNTA6IDAwIDAyIDAwIDAwIDA5IDAwIDU1IDEzIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5VLi4uLi4uLi4uCiAgICBERjYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA4MCAzMyBBNCAgLi4uLi4uLi4uQC4uLi4zLgogICAgREY3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IERGODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBERjkwOiAwMCAwMiAwMCAwMCAwOSAwMCA1NiAxMyAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uVi4uLi4uLi4uLgogICAgREZBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggOEYgMzMgQTQgIC4uLi4uLi4uLkAuLi4uMy4KICAg
IERGQjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBERkMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgREZEMDogMDAgMDIgMDAgMDAg
MDkgMDAgNTcgMTMgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLlcuLi4uLi4uLi4KICAg
IERGRTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDhGIDMzIEE0ICAu
Li4uLi4uLi5ALi4uLjMuCiAgICBERkYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgRTAwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEUwMTA6IDAwIDAyIDAwIDAwIDA5IDAwIDU4IDEzIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5YLi4uLi4uLi4uCiAgICBFMDIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA4QiAzMyBBNCAgLi4uLi4uLi4uQC4uLi4zLgogICAgRTAzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEUwNDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBFMDUwOiAwMCAwMiAwMCAwMCAwOSAwMCA1OSAxMyAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uWS4uLi4uLi4uLgogICAgRTA2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggOEUgMzMgQTQgIC4uLi4uLi4uLkAuLi4uMy4KICAg
IEUwNzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBFMDgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgRTA5MDogMDAgMDIgMDAgMDAg
MDkgMDAgNUEgMTMgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLlouLi4uLi4uLi4KICAg
IEUwQTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDhFIDMzIEE0ICAu
Li4uLi4uLi5ALi4uLjMuCiAgICBFMEIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgRTBDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEUwRDA6IDAwIDAyIDAwIDAwIDA5IDAwIDVCIDEzIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5bLi4uLi4uLi4uCiAgICBFMEUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA4QiAzMyBBNCAgLi4uLi4uLi4uQC4uLi4zLgogICAgRTBGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEUxMDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBFMTEwOiAwMCAwMiAwMCAwMCAwOSAwMCA1QyAxMyAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uXC4uLi4uLi4uLgogICAgRTEyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggOEQgMzMgQTQgIC4uLi4uLi4uLkAuLi4uMy4KICAg
IEUxMzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBFMTQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgRTE1MDogMDAgMDIgMDAgMDAg
MDkgMDAgNUQgMTMgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLl0uLi4uLi4uLi4KICAg
IEUxNjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDhDIDMzIEE0ICAu
Li4uLi4uLi5ALi4uLjMuCiAgICBFMTcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgRTE4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEUxOTA6IDAwIDAyIDAwIDAwIDA5IDAwIDVFIDEzIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5eLi4uLi4uLi4uCiAgICBFMUEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA4QyAzMyBBNCAgLi4uLi4uLi4uQC4uLi4zLgogICAgRTFCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEUxQzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBFMUQwOiAwMCAwMiAwMCAwMCAwOSAwMCA1RiAxMyAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uXy4uLi4uLi4uLgogICAgRTFFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggOEQgMzMgQTQgIC4uLi4uLi4uLkAuLi4uMy4KICAg
IEUxRjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBFMjAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgRTIxMDogMDAgMDIgMDAgMDAg
MDkgMDAgNjAgMTMgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLmAuLi4uLi4uLi4KICAg
IEUyMjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDgwIDMzIEE0ICAu
Li4uLi4uLi5ALi4uLjMuCiAgICBFMjMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgRTI0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEUyNTA6IDAwIDAyIDAwIDAwIDA5IDAwIDYxIDEzIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5hLi4uLi4uLi4uCiAgICBFMjYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA4QSAzMyBBNCAgLi4uLi4uLi4uQC4uLi4zLgogICAgRTI3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEUyODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBFMjkwOiAwMCAwMiAwMCAwMCAwOSAwMCA2MiAxMyAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uYi4uLi4uLi4uLgogICAgRTJBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggOEEgMzMgQTQgIC4uLi4uLi4uLkAuLi4uMy4KICAg
IEUyQjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBFMkMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgRTJEMDogMDAgMDIgMDAgMDAg
MDkgMDAgNjMgMTMgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLmMuLi4uLi4uLi4KICAg
IEUyRTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDg3IDMzIEE0ICAu
Li4uLi4uLi5ALi4uLjMuCiAgICBFMkYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgRTMwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEUzMTA6IDAwIDAyIDAwIDAwIDA5IDAwIDY0IDEzIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5kLi4uLi4uLi4uCiAgICBFMzIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA4OSAzMyBBNCAgLi4uLi4uLi4uQC4uLi4zLgogICAgRTMzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEUzNDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBFMzUwOiAwMCAwMiAwMCAwMCAwOSAwMCA2NSAxMyAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uZS4uLi4uLi4uLgogICAgRTM2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggODggMzMgQTQgIC4uLi4uLi4uLkAuLi4uMy4KICAg
IEUzNzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBFMzgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgRTM5MDogMDAgMDIgMDAgMDAg
MDkgMDAgNjYgMTMgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLmYuLi4uLi4uLi4KICAg
IEUzQTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDg4IDMzIEE0ICAu
Li4uLi4uLi5ALi4uLjMuCiAgICBFM0IwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgRTNDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEUzRDA6IDAwIDAyIDAwIDAwIDA5IDAwIDY3IDEzIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5nLi4uLi4uLi4uCiAgICBFM0UwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA4OSAzMyBBNCAgLi4uLi4uLi4uQC4uLi4zLgogICAgRTNGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEU0MDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBFNDEwOiAwMCAwMiAwMCAwMCAwOSAwMCA2OCAxMyAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uaC4uLi4uLi4uLgogICAgRTQyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggODEgMzMgQTQgIC4uLi4uLi4uLkAuLi4uMy4KICAg
IEU0MzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBFNDQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgRTQ1MDogMDAgMDIgMDAgMDAg
MDkgMDAgNjkgMTMgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLmkuLi4uLi4uLi4KICAg
IEU0NjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDg3IDMzIEE0ICAu
Li4uLi4uLi5ALi4uLjMuCiAgICBFNDcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgRTQ4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEU0OTA6IDAwIDAyIDAwIDAwIDA5IDAwIDZBIDEzIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5qLi4uLi4uLi4uCiAgICBFNEEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA4NSAzMyBBNCAgLi4uLi4uLi4uQC4uLi4zLgogICAgRTRCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEU0QzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBFNEQwOiAwMCAwMiAwMCAwMCAwOSAwMCA2QiAxMyAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uay4uLi4uLi4uLgogICAgRTRFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggODYgMzMgQTQgIC4uLi4uLi4uLkAuLi4uMy4KICAg
IEU0RjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBFNTAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgRTUxMDogMDAgMDIgMDAgMDAg
MDkgMDAgNkMgMTMgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLmwuLi4uLi4uLi4KICAg
IEU1MjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDg2IDMzIEE0ICAu
Li4uLi4uLi5ALi4uLjMuCiAgICBFNTMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgRTU0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEU1NTA6IDAwIDAyIDAwIDAwIDA5IDAwIDZEIDEzIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5tLi4uLi4uLi4uCiAgICBFNTYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA4MSAzMyBBNCAgLi4uLi4uLi4uQC4uLi4zLgogICAgRTU3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEU1ODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBFNTkwOiAwMCAwMiAwMCAwMCAwOSAwMCA2RSAxMyAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4ubi4uLi4uLi4uLgogICAgRTVBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggODQgMzMgQTQgIC4uLi4uLi4uLkAuLi4uMy4KICAg
IEU1QjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBFNUMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgRTVEMDogMDAgMDIgMDAgMDAg
MDkgMDAgNkYgMTMgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLm8uLi4uLi4uLi4KICAg
IEU1RTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDg1IDMzIEE0ICAu
Li4uLi4uLi5ALi4uLjMuCiAgICBFNUYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgRTYwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEU2MTA6IDAwIDAyIDAwIDAwIDA5IDAwIDcwIDEzIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5wLi4uLi4uLi4uCiAgICBFNjIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA4MiAzMyBBNCAgLi4uLi4uLi4uQC4uLi4zLgogICAgRTYzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEU2NDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBFNjUwOiAwMCAwMiAwMCAwMCAwOSAwMCA3MSAxMyAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4ucS4uLi4uLi4uLgogICAgRTY2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggODQgMzMgQTQgIC4uLi4uLi4uLkAuLi4uMy4KICAg
IEU2NzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBFNjgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgRTY5MDogMDAgMDIgMDAgMDAg
MDkgMDAgNzIgMTMgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLnIuLi4uLi4uLi4KICAg
IEU2QTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDgyIDMzIEE0ICAu
Li4uLi4uLi5ALi4uLjMuCiAgICBFNkIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgRTZDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEU2RDA6IDAwIDAyIDAwIDAwIDA5IDAwIDczIDEzIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5zLi4uLi4uLi4uCiAgICBFNkUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA4MyAzMyBBNCAgLi4uLi4uLi4uQC4uLi4zLgogICAgRTZGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEU3MDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBFNzEwOiAwMCAwMiAwMCAwMCAwOSAwMCA3NCAxMyAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4udC4uLi4uLi4uLgogICAgRTcyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggODMgMzMgQTQgIC4uLi4uLi4uLkAuLi4uMy4KICAg
IEU3MzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBFNzQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgRTc1MDogMDAgMDIgMDAgMDAg
MDkgMDAgNzUgMTMgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLnUuLi4uLi4uLi4KICAg
IEU3NjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDcwIDMzIEE0ICAu
Li4uLi4uLi5ALi4ucDMuCiAgICBFNzcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgRTc4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEU3OTA6IDAwIDAyIDAwIDAwIDA5IDAwIDc2IDEzIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi52Li4uLi4uLi4uCiAgICBFN0EwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA3RiAzMyBBNCAgLi4uLi4uLi4uQC4uLi4zLgogICAgRTdCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEU3QzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBFN0QwOiAwMCAwMiAwMCAwMCAwOSAwMCA3NyAxMyAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4udy4uLi4uLi4uLgogICAgRTdFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggN0YgMzMgQTQgIC4uLi4uLi4uLkAuLi4uMy4KICAg
IEU3RjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBFODAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgRTgxMDogMDAgMDIgMDAgMDAg
MDkgMDAgNzggMTMgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLnguLi4uLi4uLi4KICAg
IEU4MjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDdCIDMzIEE0ICAu
Li4uLi4uLi5ALi4uezMuCiAgICBFODMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgRTg0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEU4NTA6IDAwIDAyIDAwIDAwIDA5IDAwIDc5IDEzIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi55Li4uLi4uLi4uCiAgICBFODYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA3RSAzMyBBNCAgLi4uLi4uLi4uQC4uLn4zLgogICAgRTg3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEU4ODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBFODkwOiAwMCAwMiAwMCAwMCAwOSAwMCA3QSAxMyAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uei4uLi4uLi4uLgogICAgRThBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggN0UgMzMgQTQgIC4uLi4uLi4uLkAuLi5+My4KICAg
IEU4QjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBFOEMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgRThEMDogMDAgMDIgMDAgMDAg
MDkgMDAgN0IgMTMgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLnsuLi4uLi4uLi4KICAg
IEU4RTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDdCIDMzIEE0ICAu
Li4uLi4uLi5ALi4uezMuCiAgICBFOEYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgRTkwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEU5MTA6IDAwIDAyIDAwIDAwIDA5IDAwIDdDIDEzIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi58Li4uLi4uLi4uCiAgICBFOTIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA3RCAzMyBBNCAgLi4uLi4uLi4uQC4uLn0zLgogICAgRTkzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEU5NDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBFOTUwOiAwMCAwMiAwMCAwMCAwOSAwMCA3RCAxMyAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4ufS4uLi4uLi4uLgogICAgRTk2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggN0MgMzMgQTQgIC4uLi4uLi4uLkAuLi58My4KICAg
IEU5NzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBFOTgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgRTk5MDogMDAgMDIgMDAgMDAg
MDkgMDAgN0UgMTMgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLn4uLi4uLi4uLi4KICAg
IEU5QTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDdDIDMzIEE0ICAu
Li4uLi4uLi5ALi4ufDMuCiAgICBFOUIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgRTlDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEU5RDA6IDAwIDAyIDAwIDAwIDA5IDAwIDdGIDEzIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBFOUUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA3RCAzMyBBNCAgLi4uLi4uLi4uQC4uLn0zLgogICAgRTlGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEVBMDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBFQTEwOiAwMCAwMiAwMCAwMCAwOSAwMCA4MCAxMyAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgRUEyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggNzAgMzMgQTQgIC4uLi4uLi4uLkAuLi5wMy4KICAg
IEVBMzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBFQTQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgRUE1MDogMDAgMDIgMDAgMDAg
MDkgMDAgODEgMTMgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEVBNjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDdBIDMzIEE0ICAu
Li4uLi4uLi5ALi4uejMuCiAgICBFQTcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgRUE4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEVBOTA6IDAwIDAyIDAwIDAwIDA5IDAwIDgyIDEzIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBFQUEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA3QSAzMyBBNCAgLi4uLi4uLi4uQC4uLnozLgogICAgRUFCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEVBQzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBFQUQwOiAwMCAwMiAwMCAwMCAwOSAwMCA4MyAxMyAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgRUFFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggNzcgMzMgQTQgIC4uLi4uLi4uLkAuLi53My4KICAg
IEVBRjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBFQjAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgRUIxMDogMDAgMDIgMDAgMDAg
MDkgMDAgODQgMTMgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEVCMjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDc5IDMzIEE0ICAu
Li4uLi4uLi5ALi4ueTMuCiAgICBFQjMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgRUI0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEVCNTA6IDAwIDAyIDAwIDAwIDA5IDAwIDg1IDEzIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBFQjYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA3OCAzMyBBNCAgLi4uLi4uLi4uQC4uLngzLgogICAgRUI3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEVCODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBFQjkwOiAwMCAwMiAwMCAwMCAwOSAwMCA4NiAxMyAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgRUJBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggNzggMzMgQTQgIC4uLi4uLi4uLkAuLi54My4KICAg
IEVCQjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBFQkMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgRUJEMDogMDAgMDIgMDAgMDAg
MDkgMDAgODcgMTMgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEVCRTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDc5IDMzIEE0ICAu
Li4uLi4uLi5ALi4ueTMuCiAgICBFQkYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgRUMwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEVDMTA6IDAwIDAyIDAwIDAwIDA5IDAwIDg4IDEzIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBFQzIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA3MSAzMyBBNCAgLi4uLi4uLi4uQC4uLnEzLgogICAgRUMzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEVDNDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBFQzUwOiAwMCAwMiAwMCAwMCAwOSAwMCA4OSAxMyAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgRUM2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggNzcgMzMgQTQgIC4uLi4uLi4uLkAuLi53My4KICAg
IEVDNzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBFQzgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgRUM5MDogMDAgMDIgMDAgMDAg
MDkgMDAgOEEgMTMgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEVDQTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDc1IDMzIEE0ICAu
Li4uLi4uLi5ALi4udTMuCiAgICBFQ0IwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgRUNDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEVDRDA6IDAwIDAyIDAwIDAwIDA5IDAwIDhCIDEzIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBFQ0UwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA3NiAzMyBBNCAgLi4uLi4uLi4uQC4uLnYzLgogICAgRUNGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEVEMDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBFRDEwOiAwMCAwMiAwMCAwMCAwOSAwMCA4QyAxMyAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgRUQyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggNzYgMzMgQTQgIC4uLi4uLi4uLkAuLi52My4KICAg
IEVEMzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBFRDQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgRUQ1MDogMDAgMDIgMDAgMDAg
MDkgMDAgOEQgMTMgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEVENjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDcxIDMzIEE0ICAu
Li4uLi4uLi5ALi4ucTMuCiAgICBFRDcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgRUQ4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEVEOTA6IDAwIDAyIDAwIDAwIDA5IDAwIDhFIDEzIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBFREEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA3NCAzMyBBNCAgLi4uLi4uLi4uQC4uLnQzLgogICAgRURCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEVEQzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBFREQwOiAwMCAwMiAwMCAwMCAwOSAwMCA4RiAxMyAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgRURFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggNzUgMzMgQTQgIC4uLi4uLi4uLkAuLi51My4KICAg
IEVERjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBFRTAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgRUUxMDogMDAgMDIgMDAgMDAg
MDkgMDAgOTAgMTMgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEVFMjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDcyIDMzIEE0ICAu
Li4uLi4uLi5ALi4ucjMuCiAgICBFRTMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgRUU0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEVFNTA6IDAwIDAyIDAwIDAwIDA5IDAwIDkxIDEzIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBFRTYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA3NCAzMyBBNCAgLi4uLi4uLi4uQC4uLnQzLgogICAgRUU3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEVFODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBFRTkwOiAwMCAwMiAwMCAwMCAwOSAwMCA5MiAxMyAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgRUVBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggNzIgMzMgQTQgIC4uLi4uLi4uLkAuLi5yMy4KICAg
IEVFQjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBFRUMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgRUVEMDogMDAgMDIgMDAgMDAg
MDkgMDAgOTMgMTMgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEVFRTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDczIDMzIEE0ICAu
Li4uLi4uLi5ALi4uczMuCiAgICBFRUYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgRUYwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEVGMTA6IDAwIDAyIDAwIDAwIDA5IDAwIDk0IDEzIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBFRjIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA3MyAzMyBBNCAgLi4uLi4uLi4uQC4uLnMzLgogICAgRUYzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEVGNDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBFRjUwOiAwMCAwMiAwMCAwMCAwOSAwMCA5NSAxMyAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgRUY2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggNjAgMzMgQTQgIC4uLi4uLi4uLkAuLi5gMy4KICAg
IEVGNzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBFRjgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgRUY5MDogMDAgMDIgMDAgMDAg
MDkgMDAgOTYgMTMgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEVGQTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDZGIDMzIEE0ICAu
Li4uLi4uLi5ALi4ubzMuCiAgICBFRkIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgRUZDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEVGRDA6IDAwIDAyIDAwIDAwIDA5IDAwIDk3IDEzIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBFRkUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA2RiAzMyBBNCAgLi4uLi4uLi4uQC4uLm8zLgogICAgRUZGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEYwMDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBGMDEwOiAwMCAwMiAwMCAwMCAwOSAwMCA5OCAxMyAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgRjAyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggNkIgMzMgQTQgIC4uLi4uLi4uLkAuLi5rMy4KICAg
IEYwMzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBGMDQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgRjA1MDogMDAgMDIgMDAgMDAg
MDkgMDAgOTkgMTMgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEYwNjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDZFIDMzIEE0ICAu
Li4uLi4uLi5ALi4ubjMuCiAgICBGMDcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgRjA4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEYwOTA6IDAwIDAyIDAwIDAwIDA5IDAwIDlBIDEzIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBGMEEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA2RSAzMyBBNCAgLi4uLi4uLi4uQC4uLm4zLgogICAgRjBCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEYwQzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBGMEQwOiAwMCAwMiAwMCAwMCAwOSAwMCA5QiAxMyAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgRjBFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggNkIgMzMgQTQgIC4uLi4uLi4uLkAuLi5rMy4KICAg
IEYwRjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBGMTAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgRjExMDogMDAgMDIgMDAgMDAg
MDkgMDAgOUMgMTMgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEYxMjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDZEIDMzIEE0ICAu
Li4uLi4uLi5ALi4ubTMuCiAgICBGMTMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgRjE0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEYxNTA6IDAwIDAyIDAwIDAwIDA5IDAwIDlEIDEzIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBGMTYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA2QyAzMyBBNCAgLi4uLi4uLi4uQC4uLmwzLgogICAgRjE3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEYxODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBGMTkwOiAwMCAwMiAwMCAwMCAwOSAwMCA5RSAxMyAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgRjFBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggNkMgMzMgQTQgIC4uLi4uLi4uLkAuLi5sMy4KICAg
IEYxQjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBGMUMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgRjFEMDogMDAgMDIgMDAgMDAg
MDkgMDAgOUYgMTMgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEYxRTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDZEIDMzIEE0ICAu
Li4uLi4uLi5ALi4ubTMuCiAgICBGMUYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgRjIwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEYyMTA6IDAwIDAyIDAwIDAwIDA5IDAwIEEwIDEzIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBGMjIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA2MCAzMyBBNCAgLi4uLi4uLi4uQC4uLmAzLgogICAgRjIzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEYyNDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBGMjUwOiAwMCAwMiAwMCAwMCAwOSAwMCBBMSAxMyAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgRjI2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggNkEgMzMgQTQgIC4uLi4uLi4uLkAuLi5qMy4KICAg
IEYyNzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBGMjgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgRjI5MDogMDAgMDIgMDAgMDAg
MDkgMDAgQTIgMTMgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEYyQTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDZBIDMzIEE0ICAu
Li4uLi4uLi5ALi4uajMuCiAgICBGMkIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgRjJDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEYyRDA6IDAwIDAyIDAwIDAwIDA5IDAwIEEzIDEzIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBGMkUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA2NyAzMyBBNCAgLi4uLi4uLi4uQC4uLmczLgogICAgRjJGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEYzMDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBGMzEwOiAwMCAwMiAwMCAwMCAwOSAwMCBBNCAxMyAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgRjMyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggNjkgMzMgQTQgIC4uLi4uLi4uLkAuLi5pMy4KICAg
IEYzMzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBGMzQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgRjM1MDogMDAgMDIgMDAgMDAg
MDkgMDAgQTUgMTMgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEYzNjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDY4IDMzIEE0ICAu
Li4uLi4uLi5ALi4uaDMuCiAgICBGMzcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgRjM4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEYzOTA6IDAwIDAyIDAwIDAwIDA5IDAwIEE2IDEzIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBGM0EwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA2OCAzMyBBNCAgLi4uLi4uLi4uQC4uLmgzLgogICAgRjNCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEYzQzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBGM0QwOiAwMCAwMiAwMCAwMCAwOSAwMCBBNyAxMyAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgRjNFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggNjkgMzMgQTQgIC4uLi4uLi4uLkAuLi5pMy4KICAg
IEYzRjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBGNDAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgRjQxMDogMDAgMDIgMDAgMDAg
MDkgMDAgQTggMTMgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEY0MjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDYxIDMzIEE0ICAu
Li4uLi4uLi5ALi4uYTMuCiAgICBGNDMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgRjQ0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEY0NTA6IDAwIDAyIDAwIDAwIDA5IDAwIEE5IDEzIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBGNDYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA2NyAzMyBBNCAgLi4uLi4uLi4uQC4uLmczLgogICAgRjQ3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEY0ODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBGNDkwOiAwMCAwMiAwMCAwMCAwOSAwMCBBQSAxMyAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgRjRBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggNjUgMzMgQTQgIC4uLi4uLi4uLkAuLi5lMy4KICAg
IEY0QjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBGNEMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgRjREMDogMDAgMDIgMDAgMDAg
MDkgMDAgQUIgMTMgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEY0RTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDY2IDMzIEE0ICAu
Li4uLi4uLi5ALi4uZjMuCiAgICBGNEYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgRjUwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEY1MTA6IDAwIDAyIDAwIDAwIDA5IDAwIEFDIDEzIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBGNTIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA2NiAzMyBBNCAgLi4uLi4uLi4uQC4uLmYzLgogICAgRjUzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEY1NDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBGNTUwOiAwMCAwMiAwMCAwMCAwOSAwMCBBRCAxMyAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgRjU2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggNjEgMzMgQTQgIC4uLi4uLi4uLkAuLi5hMy4KICAg
IEY1NzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBGNTgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgRjU5MDogMDAgMDIgMDAgMDAg
MDkgMDAgQUUgMTMgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEY1QTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDY0IDMzIEE0ICAu
Li4uLi4uLi5ALi4uZDMuCiAgICBGNUIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgRjVDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEY1RDA6IDAwIDAyIDAwIDAwIDA5IDAwIEFGIDEzIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBGNUUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA2NSAzMyBBNCAgLi4uLi4uLi4uQC4uLmUzLgogICAgRjVGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEY2MDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBGNjEwOiAwMCAwMiAwMCAwMCAwOSAwMCBCMCAxMyAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgRjYyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggNjIgMzMgQTQgIC4uLi4uLi4uLkAuLi5iMy4KICAg
IEY2MzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBGNjQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgRjY1MDogMDAgMDIgMDAgMDAg
MDkgMDAgQjEgMTMgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEY2NjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDY0IDMzIEE0ICAu
Li4uLi4uLi5ALi4uZDMuCiAgICBGNjcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgRjY4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEY2OTA6IDAwIDAyIDAwIDAwIDA5IDAwIEIyIDEzIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBGNkEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA2MiAzMyBBNCAgLi4uLi4uLi4uQC4uLmIzLgogICAgRjZCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEY2QzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBGNkQwOiAwMCAwMiAwMCAwMCAwOSAwMCBCMyAxMyAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgRjZFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggNjMgMzMgQTQgIC4uLi4uLi4uLkAuLi5jMy4KICAg
IEY2RjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBGNzAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgRjcxMDogMDAgMDIgMDAgMDAg
MDkgMDAgQjQgMTMgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEY3MjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDYzIDMzIEE0ICAu
Li4uLi4uLi5ALi4uYzMuCiAgICBGNzMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgRjc0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEY3NTA6IDAwIDAyIDAwIDAwIDA5IDAwIEI1IDEzIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBGNzYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA1MCAzMyBBNCAgLi4uLi4uLi4uQC4uLlAzLgogICAgRjc3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEY3ODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBGNzkwOiAwMCAwMiAwMCAwMCAwOSAwMCBCNiAxMyAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgRjdBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggNUYgMzMgQTQgIC4uLi4uLi4uLkAuLi5fMy4KICAg
IEY3QjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBGN0MwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgRjdEMDogMDAgMDIgMDAgMDAg
MDkgMDAgQjcgMTMgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEY3RTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDVGIDMzIEE0ICAu
Li4uLi4uLi5ALi4uXzMuCiAgICBGN0YwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgRjgwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEY4MTA6IDAwIDAyIDAwIDAwIDA5IDAwIEI4IDEzIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBGODIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA1QiAzMyBBNCAgLi4uLi4uLi4uQC4uLlszLgogICAgRjgzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEY4NDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBGODUwOiAwMCAwMiAwMCAwMCAwOSAwMCBCOSAxMyAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgRjg2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggNUUgMzMgQTQgIC4uLi4uLi4uLkAuLi5eMy4KICAg
IEY4NzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBGODgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgRjg5MDogMDAgMDIgMDAgMDAg
MDkgMDAgQkEgMTMgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEY4QTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDVFIDMzIEE0ICAu
Li4uLi4uLi5ALi4uXjMuCiAgICBGOEIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgRjhDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEY4RDA6IDAwIDAyIDAwIDAwIDA5IDAwIEJCIDEzIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBGOEUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA1QiAzMyBBNCAgLi4uLi4uLi4uQC4uLlszLgogICAgRjhGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEY5MDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBGOTEwOiAwMCAwMiAwMCAwMCAwOSAwMCBCQyAxMyAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgRjkyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggNUQgMzMgQTQgIC4uLi4uLi4uLkAuLi5dMy4KICAg
IEY5MzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBGOTQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgRjk1MDogMDAgMDIgMDAgMDAg
MDkgMDAgQkQgMTMgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEY5NjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDVDIDMzIEE0ICAu
Li4uLi4uLi5ALi4uXDMuCiAgICBGOTcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgRjk4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEY5OTA6IDAwIDAyIDAwIDAwIDA5IDAwIEJFIDEzIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBGOUEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA1QyAzMyBBNCAgLi4uLi4uLi4uQC4uLlwzLgogICAgRjlCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEY5QzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBGOUQwOiAwMCAwMiAwMCAwMCAwOSAwMCBCRiAxMyAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgRjlFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggNUQgMzMgQTQgIC4uLi4uLi4uLkAuLi5dMy4KICAg
IEY5RjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBGQTAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgRkExMDogMDAgMDIgMDAgMDAg
MDkgMDAgQzAgMTMgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEZBMjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDUwIDMzIEE0ICAu
Li4uLi4uLi5ALi4uUDMuCiAgICBGQTMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgRkE0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEZBNTA6IDAwIDAyIDAwIDAwIDA5IDAwIEMxIDEzIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBGQTYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA1QSAzMyBBNCAgLi4uLi4uLi4uQC4uLlozLgogICAgRkE3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEZBODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBGQTkwOiAwMCAwMiAwMCAwMCAwOSAwMCBDMiAxMyAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgRkFBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggNUEgMzMgQTQgIC4uLi4uLi4uLkAuLi5aMy4KICAg
IEZBQjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBGQUMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgRkFEMDogMDAgMDIgMDAgMDAg
MDkgMDAgQzMgMTMgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEZBRTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDU3IDMzIEE0ICAu
Li4uLi4uLi5ALi4uVzMuCiAgICBGQUYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgRkIwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEZCMTA6IDAwIDAyIDAwIDAwIDA5IDAwIEM0IDEzIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBGQjIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA1OSAzMyBBNCAgLi4uLi4uLi4uQC4uLlkzLgogICAgRkIzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEZCNDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBGQjUwOiAwMCAwMiAwMCAwMCAwOSAwMCBDNSAxMyAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgRkI2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggNTggMzMgQTQgIC4uLi4uLi4uLkAuLi5YMy4KICAg
IEZCNzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBGQjgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgRkI5MDogMDAgMDIgMDAgMDAg
MDkgMDAgQzYgMTMgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEZCQTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDU4IDMzIEE0ICAu
Li4uLi4uLi5ALi4uWDMuCiAgICBGQkIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgRkJDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEZCRDA6IDAwIDAyIDAwIDAwIDA5IDAwIEM3IDEzIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBGQkUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA1OSAzMyBBNCAgLi4uLi4uLi4uQC4uLlkzLgogICAgRkJGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEZDMDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBGQzEwOiAwMCAwMiAwMCAwMCAwOSAwMCBDOCAxMyAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgRkMyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggNTEgMzMgQTQgIC4uLi4uLi4uLkAuLi5RMy4KICAg
IEZDMzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBGQzQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgRkM1MDogMDAgMDIgMDAgMDAg
MDkgMDAgQzkgMTMgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEZDNjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDU3IDMzIEE0ICAu
Li4uLi4uLi5ALi4uVzMuCiAgICBGQzcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgRkM4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEZDOTA6IDAwIDAyIDAwIDAwIDA5IDAwIENBIDEzIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBGQ0EwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA1NSAzMyBBNCAgLi4uLi4uLi4uQC4uLlUzLgogICAgRkNCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEZDQzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBGQ0QwOiAwMCAwMiAwMCAwMCAwOSAwMCBDQiAxMyAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgRkNFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggNTYgMzMgQTQgIC4uLi4uLi4uLkAuLi5WMy4KICAg
IEZDRjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBGRDAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgRkQxMDogMDAgMDIgMDAgMDAg
MDkgMDAgQ0MgMTMgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEZEMjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDU2IDMzIEE0ICAu
Li4uLi4uLi5ALi4uVjMuCiAgICBGRDMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgRkQ0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEZENTA6IDAwIDAyIDAwIDAwIDA5IDAwIENEIDEzIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBGRDYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA1MSAzMyBBNCAgLi4uLi4uLi4uQC4uLlEzLgogICAgRkQ3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEZEODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBGRDkwOiAwMCAwMiAwMCAwMCAwOSAwMCBDRSAxMyAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgRkRBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggNTQgMzMgQTQgIC4uLi4uLi4uLkAuLi5UMy4KICAg
IEZEQjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBGREMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgRkREMDogMDAgMDIgMDAgMDAg
MDkgMDAgQ0YgMTMgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEZERTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDU1IDMzIEE0ICAu
Li4uLi4uLi5ALi4uVTMuCiAgICBGREYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgRkUwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEZFMTA6IDAwIDAyIDAwIDAwIDA5IDAwIEQwIDEzIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBGRTIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA1MiAzMyBBNCAgLi4uLi4uLi4uQC4uLlIzLgogICAgRkUzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEZFNDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBGRTUwOiAwMCAwMiAwMCAwMCAwOSAwMCBEMSAxMyAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgRkU2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggNTQgMzMgQTQgIC4uLi4uLi4uLkAuLi5UMy4KICAg
IEZFNzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBGRTgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgRkU5MDogMDAgMDIgMDAgMDAg
MDkgMDAgRDIgMTMgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEZFQTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDUyIDMzIEE0ICAu
Li4uLi4uLi5ALi4uUjMuCiAgICBGRUIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgRkVDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEZFRDA6IDAwIDAyIDAwIDAwIDA5IDAwIEQzIDEzIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBGRUUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA1MyAzMyBBNCAgLi4uLi4uLi4uQC4uLlMzLgogICAgRkVGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEZGMDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBGRjEwOiAwMCAwMiAwMCAwMCAwOSAwMCBENCAxMyAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgRkYyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggNTMgMzMgQTQgIC4uLi4uLi4uLkAuLi5TMy4KICAg
IEZGMzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBGRjQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgRkY1MDogMDAgMDIgMDAgMDAg
MDkgMDAgRDUgMTMgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEZGNjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDQwIDMzIEE0ICAu
Li4uLi4uLi5ALi4uQDMuCiAgICBGRjcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgRkY4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEZGOTA6IDAwIDAyIDAwIDAwIDA5IDAwIEQ2IDEzIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBGRkEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA0RiAzMyBBNCAgLi4uLi4uLi4uQC4uLk8zLgogICAgRkZCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
IEZGQzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgICBGRkQwOiAwMCAwMiAwMCAwMCAwOSAwMCBENyAxMyAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgRkZFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggNEYgMzMgQTQgIC4uLi4uLi4uLkAuLi5PMy4KICAg
IEZGRjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDEwMDAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMDAxMDogMDAgMDIgMDAgMDAg
MDkgMDAgRDggMTMgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTAwMjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDRCIDMzIEE0ICAu
Li4uLi4uLi5ALi4uSzMuCiAgIDEwMDMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMDA0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTAwNTA6IDAwIDAyIDAwIDAwIDA5IDAwIEQ5IDEzIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDEwMDYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA0RSAzMyBBNCAgLi4uLi4uLi4uQC4uLk4zLgogICAxMDA3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTAwODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDEwMDkwOiAwMCAwMiAwMCAwMCAwOSAwMCBEQSAxMyAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMDBBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggNEUgMzMgQTQgIC4uLi4uLi4uLkAuLi5OMy4KICAg
MTAwQjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDEwMEMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMDBEMDogMDAgMDIgMDAgMDAg
MDkgMDAgREIgMTMgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTAwRTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDRCIDMzIEE0ICAu
Li4uLi4uLi5ALi4uSzMuCiAgIDEwMEYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMDEwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTAxMTA6IDAwIDAyIDAwIDAwIDA5IDAwIERDIDEzIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDEwMTIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA0RCAzMyBBNCAgLi4uLi4uLi4uQC4uLk0zLgogICAxMDEzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTAxNDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDEwMTUwOiAwMCAwMiAwMCAwMCAwOSAwMCBERCAxMyAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMDE2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggNEMgMzMgQTQgIC4uLi4uLi4uLkAuLi5MMy4KICAg
MTAxNzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDEwMTgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMDE5MDogMDAgMDIgMDAgMDAg
MDkgMDAgREUgMTMgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTAxQTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDRDIDMzIEE0ICAu
Li4uLi4uLi5ALi4uTDMuCiAgIDEwMUIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMDFDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTAxRDA6IDAwIDAyIDAwIDAwIDA5IDAwIERGIDEzIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDEwMUUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA0RCAzMyBBNCAgLi4uLi4uLi4uQC4uLk0zLgogICAxMDFGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTAyMDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDEwMjEwOiAwMCAwMiAwMCAwMCAwOSAwMCBFMCAxMyAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMDIyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggNDAgMzMgQTQgIC4uLi4uLi4uLkAuLi5AMy4KICAg
MTAyMzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDEwMjQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMDI1MDogMDAgMDIgMDAgMDAg
MDkgMDAgRTEgMTMgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTAyNjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDRBIDMzIEE0ICAu
Li4uLi4uLi5ALi4uSjMuCiAgIDEwMjcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMDI4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTAyOTA6IDAwIDAyIDAwIDAwIDA5IDAwIEUyIDEzIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDEwMkEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA0QSAzMyBBNCAgLi4uLi4uLi4uQC4uLkozLgogICAxMDJCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTAyQzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDEwMkQwOiAwMCAwMiAwMCAwMCAwOSAwMCBFMyAxMyAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMDJFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggNDcgMzMgQTQgIC4uLi4uLi4uLkAuLi5HMy4KICAg
MTAyRjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDEwMzAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMDMxMDogMDAgMDIgMDAgMDAg
MDkgMDAgRTQgMTMgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTAzMjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDQ5IDMzIEE0ICAu
Li4uLi4uLi5ALi4uSTMuCiAgIDEwMzMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMDM0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTAzNTA6IDAwIDAyIDAwIDAwIDA5IDAwIEU1IDEzIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDEwMzYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA0OCAzMyBBNCAgLi4uLi4uLi4uQC4uLkgzLgogICAxMDM3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTAzODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDEwMzkwOiAwMCAwMiAwMCAwMCAwOSAwMCBFNiAxMyAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMDNBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggNDggMzMgQTQgIC4uLi4uLi4uLkAuLi5IMy4KICAg
MTAzQjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDEwM0MwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMDNEMDogMDAgMDIgMDAgMDAg
MDkgMDAgRTcgMTMgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTAzRTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDQ5IDMzIEE0ICAu
Li4uLi4uLi5ALi4uSTMuCiAgIDEwM0YwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMDQwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTA0MTA6IDAwIDAyIDAwIDAwIDA5IDAwIEU4IDEzIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDEwNDIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA0MSAzMyBBNCAgLi4uLi4uLi4uQC4uLkEzLgogICAxMDQzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTA0NDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDEwNDUwOiAwMCAwMiAwMCAwMCAwOSAwMCBFOSAxMyAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMDQ2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggNDcgMzMgQTQgIC4uLi4uLi4uLkAuLi5HMy4KICAg
MTA0NzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDEwNDgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMDQ5MDogMDAgMDIgMDAgMDAg
MDkgMDAgRUEgMTMgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTA0QTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDQ1IDMzIEE0ICAu
Li4uLi4uLi5ALi4uRTMuCiAgIDEwNEIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMDRDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTA0RDA6IDAwIDAyIDAwIDAwIDA5IDAwIEVCIDEzIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDEwNEUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA0NiAzMyBBNCAgLi4uLi4uLi4uQC4uLkYzLgogICAxMDRGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTA1MDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDEwNTEwOiAwMCAwMiAwMCAwMCAwOSAwMCBFQyAxMyAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMDUyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggNDYgMzMgQTQgIC4uLi4uLi4uLkAuLi5GMy4KICAg
MTA1MzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDEwNTQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMDU1MDogMDAgMDIgMDAgMDAg
MDkgMDAgRUQgMTMgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTA1NjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDQxIDMzIEE0ICAu
Li4uLi4uLi5ALi4uQTMuCiAgIDEwNTcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMDU4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTA1OTA6IDAwIDAyIDAwIDAwIDA5IDAwIEVFIDEzIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDEwNUEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA0NCAzMyBBNCAgLi4uLi4uLi4uQC4uLkQzLgogICAxMDVCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTA1QzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDEwNUQwOiAwMCAwMiAwMCAwMCAwOSAwMCBFRiAxMyAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMDVFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggNDUgMzMgQTQgIC4uLi4uLi4uLkAuLi5FMy4KICAg
MTA1RjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDEwNjAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMDYxMDogMDAgMDIgMDAgMDAg
MDkgMDAgRjAgMTMgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTA2MjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDQyIDMzIEE0ICAu
Li4uLi4uLi5ALi4uQjMuCiAgIDEwNjMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMDY0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTA2NTA6IDAwIDAyIDAwIDAwIDA5IDAwIEYxIDEzIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDEwNjYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA0NCAzMyBBNCAgLi4uLi4uLi4uQC4uLkQzLgogICAxMDY3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTA2ODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDEwNjkwOiAwMCAwMiAwMCAwMCAwOSAwMCBGMiAxMyAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMDZBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggNDIgMzMgQTQgIC4uLi4uLi4uLkAuLi5CMy4KICAg
MTA2QjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDEwNkMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMDZEMDogMDAgMDIgMDAgMDAg
MDkgMDAgRjMgMTMgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTA2RTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDQzIDMzIEE0ICAu
Li4uLi4uLi5ALi4uQzMuCiAgIDEwNkYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMDcwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTA3MTA6IDAwIDAyIDAwIDAwIDA5IDAwIEY0IDEzIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDEwNzIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA0MyAzMyBBNCAgLi4uLi4uLi4uQC4uLkMzLgogICAxMDczMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTA3NDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDEwNzUwOiAwMCAwMiAwMCAwMCAwOSAwMCBGNSAxMyAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMDc2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggMzAgMzMgQTQgIC4uLi4uLi4uLkAuLi4wMy4KICAg
MTA3NzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDEwNzgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMDc5MDogMDAgMDIgMDAgMDAg
MDkgMDAgRjYgMTMgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTA3QTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDNGIDMzIEE0ICAu
Li4uLi4uLi5ALi4uPzMuCiAgIDEwN0IwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMDdDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTA3RDA6IDAwIDAyIDAwIDAwIDA5IDAwIEY3IDEzIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDEwN0UwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCAzRiAzMyBBNCAgLi4uLi4uLi4uQC4uLj8zLgogICAxMDdGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTA4MDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDEwODEwOiAwMCAwMiAwMCAwMCAwOSAwMCBGOCAxMyAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMDgyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggM0IgMzMgQTQgIC4uLi4uLi4uLkAuLi47My4KICAg
MTA4MzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDEwODQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMDg1MDogMDAgMDIgMDAgMDAg
MDkgMDAgRjkgMTMgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTA4NjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDNFIDMzIEE0ICAu
Li4uLi4uLi5ALi4uPjMuCiAgIDEwODcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMDg4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTA4OTA6IDAwIDAyIDAwIDAwIDA5IDAwIEZBIDEzIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDEwOEEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCAzRSAzMyBBNCAgLi4uLi4uLi4uQC4uLj4zLgogICAxMDhCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTA4QzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDEwOEQwOiAwMCAwMiAwMCAwMCAwOSAwMCBGQiAxMyAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMDhFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggM0IgMzMgQTQgIC4uLi4uLi4uLkAuLi47My4KICAg
MTA4RjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDEwOTAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMDkxMDogMDAgMDIgMDAgMDAg
MDkgMDAgRkMgMTMgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTA5MjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDNEIDMzIEE0ICAu
Li4uLi4uLi5ALi4uPTMuCiAgIDEwOTMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMDk0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTA5NTA6IDAwIDAyIDAwIDAwIDA5IDAwIEZEIDEzIDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDEwOTYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCAzQyAzMyBBNCAgLi4uLi4uLi4uQC4uLjwzLgogICAxMDk3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTA5ODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDEwOTkwOiAwMCAwMiAwMCAwMCAwOSAwMCBGRSAxMyAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMDlBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggM0MgMzMgQTQgIC4uLi4uLi4uLkAuLi48My4KICAg
MTA5QjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDEwOUMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMDlEMDogMDAgMDIgMDAgMDAg
MDkgMDAgRkYgMTMgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTA5RTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDNEIDMzIEE0ICAu
Li4uLi4uLi5ALi4uPTMuCiAgIDEwOUYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMEEwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTBBMTA6IDAwIDAyIDAwIDAwIDA5IDAwIDAwIDE0IDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDEwQTIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCAzMCAzMyBBNCAgLi4uLi4uLi4uQC4uLjAzLgogICAxMEEzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTBBNDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDEwQTUwOiAwMCAwMiAwMCAwMCAwOSAwMCAwMSAxNCAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMEE2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggM0EgMzMgQTQgIC4uLi4uLi4uLkAuLi46My4KICAg
MTBBNzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDEwQTgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMEE5MDogMDAgMDIgMDAgMDAg
MDkgMDAgMDIgMTQgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTBBQTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDNBIDMzIEE0ICAu
Li4uLi4uLi5ALi4uOjMuCiAgIDEwQUIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMEFDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTBBRDA6IDAwIDAyIDAwIDAwIDA5IDAwIDAzIDE0IDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDEwQUUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCAzNyAzMyBBNCAgLi4uLi4uLi4uQC4uLjczLgogICAxMEFGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTBCMDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDEwQjEwOiAwMCAwMiAwMCAwMCAwOSAwMCAwNCAxNCAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMEIyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggMzkgMzMgQTQgIC4uLi4uLi4uLkAuLi45My4KICAg
MTBCMzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDEwQjQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMEI1MDogMDAgMDIgMDAgMDAg
MDkgMDAgMDUgMTQgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTBCNjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDM4IDMzIEE0ICAu
Li4uLi4uLi5ALi4uODMuCiAgIDEwQjcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMEI4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTBCOTA6IDAwIDAyIDAwIDAwIDA5IDAwIDA2IDE0IDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDEwQkEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCAzOCAzMyBBNCAgLi4uLi4uLi4uQC4uLjgzLgogICAxMEJCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTBCQzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDEwQkQwOiAwMCAwMiAwMCAwMCAwOSAwMCAwNyAxNCAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMEJFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggMzkgMzMgQTQgIC4uLi4uLi4uLkAuLi45My4KICAg
MTBCRjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDEwQzAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMEMxMDogMDAgMDIgMDAgMDAg
MDkgMDAgMDggMTQgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTBDMjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDMxIDMzIEE0ICAu
Li4uLi4uLi5ALi4uMTMuCiAgIDEwQzMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMEM0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTBDNTA6IDAwIDAyIDAwIDAwIDA5IDAwIDA5IDE0IDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDEwQzYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCAzNyAzMyBBNCAgLi4uLi4uLi4uQC4uLjczLgogICAxMEM3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTBDODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDEwQzkwOiAwMCAwMiAwMCAwMCAwOSAwMCAwQSAxNCAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMENBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggMzUgMzMgQTQgIC4uLi4uLi4uLkAuLi41My4KICAg
MTBDQjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDEwQ0MwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMENEMDogMDAgMDIgMDAgMDAg
MDkgMDAgMEIgMTQgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTBDRTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDM2IDMzIEE0ICAu
Li4uLi4uLi5ALi4uNjMuCiAgIDEwQ0YwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMEQwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTBEMTA6IDAwIDAyIDAwIDAwIDA5IDAwIDBDIDE0IDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDEwRDIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCAzNiAzMyBBNCAgLi4uLi4uLi4uQC4uLjYzLgogICAxMEQzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTBENDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDEwRDUwOiAwMCAwMiAwMCAwMCAwOSAwMCAwRCAxNCAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMEQ2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggMzEgMzMgQTQgIC4uLi4uLi4uLkAuLi4xMy4KICAg
MTBENzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDEwRDgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMEQ5MDogMDAgMDIgMDAgMDAg
MDkgMDAgMEUgMTQgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTBEQTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDM0IDMzIEE0ICAu
Li4uLi4uLi5ALi4uNDMuCiAgIDEwREIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMERDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTBERDA6IDAwIDAyIDAwIDAwIDA5IDAwIDBGIDE0IDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDEwREUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCAzNSAzMyBBNCAgLi4uLi4uLi4uQC4uLjUzLgogICAxMERGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTBFMDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDEwRTEwOiAwMCAwMiAwMCAwMCAwOSAwMCAxMCAxNCAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMEUyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggMzIgMzMgQTQgIC4uLi4uLi4uLkAuLi4yMy4KICAg
MTBFMzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDEwRTQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMEU1MDogMDAgMDIgMDAgMDAg
MDkgMDAgMTEgMTQgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTBFNjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDM0IDMzIEE0ICAu
Li4uLi4uLi5ALi4uNDMuCiAgIDEwRTcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMEU4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTBFOTA6IDAwIDAyIDAwIDAwIDA5IDAwIDEyIDE0IDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDEwRUEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCAzMiAzMyBBNCAgLi4uLi4uLi4uQC4uLjIzLgogICAxMEVCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTBFQzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDEwRUQwOiAwMCAwMiAwMCAwMCAwOSAwMCAxMyAxNCAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMEVFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggMzMgMzMgQTQgIC4uLi4uLi4uLkAuLi4zMy4KICAg
MTBFRjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDEwRjAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMEYxMDogMDAgMDIgMDAgMDAg
MDkgMDAgMTQgMTQgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTBGMjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDMzIDMzIEE0ICAu
Li4uLi4uLi5ALi4uMzMuCiAgIDEwRjMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMEY0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTBGNTA6IDAwIDAyIDAwIDAwIDA5IDAwIDE1IDE0IDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDEwRjYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCAyMCAzMyBBNCAgLi4uLi4uLi4uQC4uLiAzLgogICAxMEY3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTBGODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDEwRjkwOiAwMCAwMiAwMCAwMCAwOSAwMCAxNiAxNCAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMEZBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggMkYgMzMgQTQgIC4uLi4uLi4uLkAuLi4vMy4KICAg
MTBGQjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDEwRkMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMEZEMDogMDAgMDIgMDAgMDAg
MDkgMDAgMTcgMTQgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTBGRTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDJGIDMzIEE0ICAu
Li4uLi4uLi5ALi4uLzMuCiAgIDEwRkYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMTAwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTEwMTA6IDAwIDAyIDAwIDAwIDA5IDAwIDE4IDE0IDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDExMDIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCAyQiAzMyBBNCAgLi4uLi4uLi4uQC4uLiszLgogICAxMTAzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTEwNDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDExMDUwOiAwMCAwMiAwMCAwMCAwOSAwMCAxOSAxNCAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMTA2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggMkUgMzMgQTQgIC4uLi4uLi4uLkAuLi4uMy4KICAg
MTEwNzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDExMDgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMTA5MDogMDAgMDIgMDAgMDAg
MDkgMDAgMUEgMTQgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTEwQTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDJFIDMzIEE0ICAu
Li4uLi4uLi5ALi4uLjMuCiAgIDExMEIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMTBDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTEwRDA6IDAwIDAyIDAwIDAwIDA5IDAwIDFCIDE0IDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDExMEUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCAyQiAzMyBBNCAgLi4uLi4uLi4uQC4uLiszLgogICAxMTBGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTExMDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDExMTEwOiAwMCAwMiAwMCAwMCAwOSAwMCAxQyAxNCAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMTEyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggMkQgMzMgQTQgIC4uLi4uLi4uLkAuLi4tMy4KICAg
MTExMzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDExMTQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMTE1MDogMDAgMDIgMDAgMDAg
MDkgMDAgMUQgMTQgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTExNjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDJDIDMzIEE0ICAu
Li4uLi4uLi5ALi4uLDMuCiAgIDExMTcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMTE4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTExOTA6IDAwIDAyIDAwIDAwIDA5IDAwIDFFIDE0IDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDExMUEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCAyQyAzMyBBNCAgLi4uLi4uLi4uQC4uLiwzLgogICAxMTFCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTExQzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDExMUQwOiAwMCAwMiAwMCAwMCAwOSAwMCAxRiAxNCAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMTFFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggMkQgMzMgQTQgIC4uLi4uLi4uLkAuLi4tMy4KICAg
MTExRjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDExMjAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMTIxMDogMDAgMDIgMDAgMDAg
MDkgMDAgMjAgMTQgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLiAuLi4uLi4uLi4KICAg
MTEyMjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDIwIDMzIEE0ICAu
Li4uLi4uLi5ALi4uIDMuCiAgIDExMjMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMTI0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTEyNTA6IDAwIDAyIDAwIDAwIDA5IDAwIDIxIDE0IDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4hLi4uLi4uLi4uCiAgIDExMjYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCAyQSAzMyBBNCAgLi4uLi4uLi4uQC4uLiozLgogICAxMTI3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTEyODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDExMjkwOiAwMCAwMiAwMCAwMCAwOSAwMCAyMiAxNCAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uIi4uLi4uLi4uLgogICAxMTJBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggMkEgMzMgQTQgIC4uLi4uLi4uLkAuLi4qMy4KICAg
MTEyQjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDExMkMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMTJEMDogMDAgMDIgMDAgMDAg
MDkgMDAgMjMgMTQgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLiMuLi4uLi4uLi4KICAg
MTEyRTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDI3IDMzIEE0ICAu
Li4uLi4uLi5ALi4uJzMuCiAgIDExMkYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMTMwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTEzMTA6IDAwIDAyIDAwIDAwIDA5IDAwIDI0IDE0IDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4kLi4uLi4uLi4uCiAgIDExMzIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCAyOSAzMyBBNCAgLi4uLi4uLi4uQC4uLikzLgogICAxMTMzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTEzNDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDExMzUwOiAwMCAwMiAwMCAwMCAwOSAwMCAyNSAxNCAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uJS4uLi4uLi4uLgogICAxMTM2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggMjggMzMgQTQgIC4uLi4uLi4uLkAuLi4oMy4KICAg
MTEzNzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDExMzgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMTM5MDogMDAgMDIgMDAgMDAg
MDkgMDAgMjYgMTQgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLiYuLi4uLi4uLi4KICAg
MTEzQTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDI4IDMzIEE0ICAu
Li4uLi4uLi5ALi4uKDMuCiAgIDExM0IwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMTNDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTEzRDA6IDAwIDAyIDAwIDAwIDA5IDAwIDI3IDE0IDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4nLi4uLi4uLi4uCiAgIDExM0UwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCAyOSAzMyBBNCAgLi4uLi4uLi4uQC4uLikzLgogICAxMTNGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTE0MDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDExNDEwOiAwMCAwMiAwMCAwMCAwOSAwMCAyOCAxNCAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uKC4uLi4uLi4uLgogICAxMTQyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggMjEgMzMgQTQgIC4uLi4uLi4uLkAuLi4hMy4KICAg
MTE0MzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDExNDQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMTQ1MDogMDAgMDIgMDAgMDAg
MDkgMDAgMjkgMTQgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLikuLi4uLi4uLi4KICAg
MTE0NjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDI3IDMzIEE0ICAu
Li4uLi4uLi5ALi4uJzMuCiAgIDExNDcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMTQ4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTE0OTA6IDAwIDAyIDAwIDAwIDA5IDAwIDJBIDE0IDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4qLi4uLi4uLi4uCiAgIDExNEEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCAyNSAzMyBBNCAgLi4uLi4uLi4uQC4uLiUzLgogICAxMTRCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTE0QzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDExNEQwOiAwMCAwMiAwMCAwMCAwOSAwMCAyQiAxNCAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uKy4uLi4uLi4uLgogICAxMTRFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggMjYgMzMgQTQgIC4uLi4uLi4uLkAuLi4mMy4KICAg
MTE0RjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDExNTAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMTUxMDogMDAgMDIgMDAgMDAg
MDkgMDAgMkMgMTQgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLiwuLi4uLi4uLi4KICAg
MTE1MjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDI2IDMzIEE0ICAu
Li4uLi4uLi5ALi4uJjMuCiAgIDExNTMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMTU0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTE1NTA6IDAwIDAyIDAwIDAwIDA5IDAwIDJEIDE0IDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4tLi4uLi4uLi4uCiAgIDExNTYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCAyMSAzMyBBNCAgLi4uLi4uLi4uQC4uLiEzLgogICAxMTU3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTE1ODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDExNTkwOiAwMCAwMiAwMCAwMCAwOSAwMCAyRSAxNCAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMTVBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggMjQgMzMgQTQgIC4uLi4uLi4uLkAuLi4kMy4KICAg
MTE1QjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDExNUMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMTVEMDogMDAgMDIgMDAgMDAg
MDkgMDAgMkYgMTQgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi8uLi4uLi4uLi4KICAg
MTE1RTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDI1IDMzIEE0ICAu
Li4uLi4uLi5ALi4uJTMuCiAgIDExNUYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMTYwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTE2MTA6IDAwIDAyIDAwIDAwIDA5IDAwIDMwIDE0IDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4wLi4uLi4uLi4uCiAgIDExNjIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCAyMiAzMyBBNCAgLi4uLi4uLi4uQC4uLiIzLgogICAxMTYzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTE2NDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDExNjUwOiAwMCAwMiAwMCAwMCAwOSAwMCAzMSAxNCAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uMS4uLi4uLi4uLgogICAxMTY2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggMjQgMzMgQTQgIC4uLi4uLi4uLkAuLi4kMy4KICAg
MTE2NzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDExNjgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMTY5MDogMDAgMDIgMDAgMDAg
MDkgMDAgMzIgMTQgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLjIuLi4uLi4uLi4KICAg
MTE2QTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDIyIDMzIEE0ICAu
Li4uLi4uLi5ALi4uIjMuCiAgIDExNkIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMTZDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTE2RDA6IDAwIDAyIDAwIDAwIDA5IDAwIDMzIDE0IDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4zLi4uLi4uLi4uCiAgIDExNkUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCAyMyAzMyBBNCAgLi4uLi4uLi4uQC4uLiMzLgogICAxMTZGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTE3MDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDExNzEwOiAwMCAwMiAwMCAwMCAwOSAwMCAzNCAxNCAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uNC4uLi4uLi4uLgogICAxMTcyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggMjMgMzMgQTQgIC4uLi4uLi4uLkAuLi4jMy4KICAg
MTE3MzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDExNzQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMTc1MDogMDAgMDIgMDAgMDAg
MDkgMDAgMzUgMTQgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLjUuLi4uLi4uLi4KICAg
MTE3NjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDEwIDMzIEE0ICAu
Li4uLi4uLi5ALi4uLjMuCiAgIDExNzcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMTc4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTE3OTA6IDAwIDAyIDAwIDAwIDA5IDAwIDM2IDE0IDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi42Li4uLi4uLi4uCiAgIDExN0EwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCAxRiAzMyBBNCAgLi4uLi4uLi4uQC4uLi4zLgogICAxMTdCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTE3QzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDExN0QwOiAwMCAwMiAwMCAwMCAwOSAwMCAzNyAxNCAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uNy4uLi4uLi4uLgogICAxMTdFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggMUYgMzMgQTQgIC4uLi4uLi4uLkAuLi4uMy4KICAg
MTE3RjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDExODAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMTgxMDogMDAgMDIgMDAgMDAg
MDkgMDAgMzggMTQgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLjguLi4uLi4uLi4KICAg
MTE4MjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDFCIDMzIEE0ICAu
Li4uLi4uLi5ALi4uLjMuCiAgIDExODMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMTg0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTE4NTA6IDAwIDAyIDAwIDAwIDA5IDAwIDM5IDE0IDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi45Li4uLi4uLi4uCiAgIDExODYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCAxRSAzMyBBNCAgLi4uLi4uLi4uQC4uLi4zLgogICAxMTg3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTE4ODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDExODkwOiAwMCAwMiAwMCAwMCAwOSAwMCAzQSAxNCAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uOi4uLi4uLi4uLgogICAxMThBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggMUUgMzMgQTQgIC4uLi4uLi4uLkAuLi4uMy4KICAg
MTE4QjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDExOEMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMThEMDogMDAgMDIgMDAgMDAg
MDkgMDAgM0IgMTQgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLjsuLi4uLi4uLi4KICAg
MTE4RTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDFCIDMzIEE0ICAu
Li4uLi4uLi5ALi4uLjMuCiAgIDExOEYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMTkwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTE5MTA6IDAwIDAyIDAwIDAwIDA5IDAwIDNDIDE0IDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi48Li4uLi4uLi4uCiAgIDExOTIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCAxRCAzMyBBNCAgLi4uLi4uLi4uQC4uLi4zLgogICAxMTkzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTE5NDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDExOTUwOiAwMCAwMiAwMCAwMCAwOSAwMCAzRCAxNCAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uPS4uLi4uLi4uLgogICAxMTk2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggMUMgMzMgQTQgIC4uLi4uLi4uLkAuLi4uMy4KICAg
MTE5NzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDExOTgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMTk5MDogMDAgMDIgMDAgMDAg
MDkgMDAgM0UgMTQgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLj4uLi4uLi4uLi4KICAg
MTE5QTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDFDIDMzIEE0ICAu
Li4uLi4uLi5ALi4uLjMuCiAgIDExOUIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMTlDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTE5RDA6IDAwIDAyIDAwIDAwIDA5IDAwIDNGIDE0IDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4/Li4uLi4uLi4uCiAgIDExOUUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCAxRCAzMyBBNCAgLi4uLi4uLi4uQC4uLi4zLgogICAxMTlGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTFBMDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDExQTEwOiAwMCAwMiAwMCAwMCAwOSAwMCA0MCAxNCAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uQC4uLi4uLi4uLgogICAxMUEyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggMTAgMzMgQTQgIC4uLi4uLi4uLkAuLi4uMy4KICAg
MTFBMzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDExQTQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMUE1MDogMDAgMDIgMDAgMDAg
MDkgMDAgNDEgMTQgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLkEuLi4uLi4uLi4KICAg
MTFBNjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDFBIDMzIEE0ICAu
Li4uLi4uLi5ALi4uLjMuCiAgIDExQTcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMUE4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTFBOTA6IDAwIDAyIDAwIDAwIDA5IDAwIDQyIDE0IDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5CLi4uLi4uLi4uCiAgIDExQUEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCAxQSAzMyBBNCAgLi4uLi4uLi4uQC4uLi4zLgogICAxMUFCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTFBQzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDExQUQwOiAwMCAwMiAwMCAwMCAwOSAwMCA0MyAxNCAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uQy4uLi4uLi4uLgogICAxMUFFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggMTcgMzMgQTQgIC4uLi4uLi4uLkAuLi4uMy4KICAg
MTFBRjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDExQjAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMUIxMDogMDAgMDIgMDAgMDAg
MDkgMDAgNDQgMTQgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLkQuLi4uLi4uLi4KICAg
MTFCMjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDE5IDMzIEE0ICAu
Li4uLi4uLi5ALi4uLjMuCiAgIDExQjMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMUI0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTFCNTA6IDAwIDAyIDAwIDAwIDA5IDAwIDQ1IDE0IDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5FLi4uLi4uLi4uCiAgIDExQjYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCAxOCAzMyBBNCAgLi4uLi4uLi4uQC4uLi4zLgogICAxMUI3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTFCODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDExQjkwOiAwMCAwMiAwMCAwMCAwOSAwMCA0NiAxNCAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uRi4uLi4uLi4uLgogICAxMUJBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggMTggMzMgQTQgIC4uLi4uLi4uLkAuLi4uMy4KICAg
MTFCQjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDExQkMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMUJEMDogMDAgMDIgMDAgMDAg
MDkgMDAgNDcgMTQgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLkcuLi4uLi4uLi4KICAg
MTFCRTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDE5IDMzIEE0ICAu
Li4uLi4uLi5ALi4uLjMuCiAgIDExQkYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMUMwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTFDMTA6IDAwIDAyIDAwIDAwIDA5IDAwIDQ4IDE0IDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5ILi4uLi4uLi4uCiAgIDExQzIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCAxMSAzMyBBNCAgLi4uLi4uLi4uQC4uLi4zLgogICAxMUMzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTFDNDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDExQzUwOiAwMCAwMiAwMCAwMCAwOSAwMCA0OSAxNCAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uSS4uLi4uLi4uLgogICAxMUM2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggMTcgMzMgQTQgIC4uLi4uLi4uLkAuLi4uMy4KICAg
MTFDNzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDExQzgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMUM5MDogMDAgMDIgMDAgMDAg
MDkgMDAgNEEgMTQgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLkouLi4uLi4uLi4KICAg
MTFDQTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDE1IDMzIEE0ICAu
Li4uLi4uLi5ALi4uLjMuCiAgIDExQ0IwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMUNDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTFDRDA6IDAwIDAyIDAwIDAwIDA5IDAwIDRCIDE0IDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5LLi4uLi4uLi4uCiAgIDExQ0UwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCAxNiAzMyBBNCAgLi4uLi4uLi4uQC4uLi4zLgogICAxMUNGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTFEMDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDExRDEwOiAwMCAwMiAwMCAwMCAwOSAwMCA0QyAxNCAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uTC4uLi4uLi4uLgogICAxMUQyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggMTYgMzMgQTQgIC4uLi4uLi4uLkAuLi4uMy4KICAg
MTFEMzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDExRDQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMUQ1MDogMDAgMDIgMDAgMDAg
MDkgMDAgNEQgMTQgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLk0uLi4uLi4uLi4KICAg
MTFENjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDExIDMzIEE0ICAu
Li4uLi4uLi5ALi4uLjMuCiAgIDExRDcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMUQ4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTFEOTA6IDAwIDAyIDAwIDAwIDA5IDAwIDRFIDE0IDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5OLi4uLi4uLi4uCiAgIDExREEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCAxNCAzMyBBNCAgLi4uLi4uLi4uQC4uLi4zLgogICAxMURCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTFEQzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDExREQwOiAwMCAwMiAwMCAwMCAwOSAwMCA0RiAxNCAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uTy4uLi4uLi4uLgogICAxMURFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggMTUgMzMgQTQgIC4uLi4uLi4uLkAuLi4uMy4KICAg
MTFERjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDExRTAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMUUxMDogMDAgMDIgMDAgMDAg
MDkgMDAgNTAgMTQgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLlAuLi4uLi4uLi4KICAg
MTFFMjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDEyIDMzIEE0ICAu
Li4uLi4uLi5ALi4uLjMuCiAgIDExRTMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMUU0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTFFNTA6IDAwIDAyIDAwIDAwIDA5IDAwIDUxIDE0IDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5RLi4uLi4uLi4uCiAgIDExRTYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCAxNCAzMyBBNCAgLi4uLi4uLi4uQC4uLi4zLgogICAxMUU3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTFFODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDExRTkwOiAwMCAwMiAwMCAwMCAwOSAwMCA1MiAxNCAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uUi4uLi4uLi4uLgogICAxMUVBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggMTIgMzMgQTQgIC4uLi4uLi4uLkAuLi4uMy4KICAg
MTFFQjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDExRUMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMUVEMDogMDAgMDIgMDAgMDAg
MDkgMDAgNTMgMTQgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLlMuLi4uLi4uLi4KICAg
MTFFRTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDEzIDMzIEE0ICAu
Li4uLi4uLi5ALi4uLjMuCiAgIDExRUYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMUYwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTFGMTA6IDAwIDAyIDAwIDAwIDA5IDAwIDU0IDE0IDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5ULi4uLi4uLi4uCiAgIDExRjIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCAxMyAzMyBBNCAgLi4uLi4uLi4uQC4uLi4zLgogICAxMUYzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTFGNDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDExRjUwOiAwMCAwMiAwMCAwMCAwOSAwMCA1NSAxNCAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uVS4uLi4uLi4uLgogICAxMUY2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggMDAgMzMgQTQgIC4uLi4uLi4uLkAuLi4uMy4KICAg
MTFGNzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDExRjgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMUY5MDogMDAgMDIgMDAgMDAg
MDkgMDAgNTYgMTQgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLlYuLi4uLi4uLi4KICAg
MTFGQTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDBGIDMzIEE0ICAu
Li4uLi4uLi5ALi4uLjMuCiAgIDExRkIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMUZDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTFGRDA6IDAwIDAyIDAwIDAwIDA5IDAwIDU3IDE0IDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5XLi4uLi4uLi4uCiAgIDExRkUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCAwRiAzMyBBNCAgLi4uLi4uLi4uQC4uLi4zLgogICAxMUZGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTIwMDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDEyMDEwOiAwMCAwMiAwMCAwMCAwOSAwMCA1OCAxNCAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uWC4uLi4uLi4uLgogICAxMjAyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggMEIgMzMgQTQgIC4uLi4uLi4uLkAuLi4uMy4KICAg
MTIwMzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDEyMDQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMjA1MDogMDAgMDIgMDAgMDAg
MDkgMDAgNTkgMTQgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLlkuLi4uLi4uLi4KICAg
MTIwNjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDBFIDMzIEE0ICAu
Li4uLi4uLi5ALi4uLjMuCiAgIDEyMDcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMjA4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTIwOTA6IDAwIDAyIDAwIDAwIDA5IDAwIDVBIDE0IDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5aLi4uLi4uLi4uCiAgIDEyMEEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCAwRSAzMyBBNCAgLi4uLi4uLi4uQC4uLi4zLgogICAxMjBCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTIwQzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDEyMEQwOiAwMCAwMiAwMCAwMCAwOSAwMCA1QiAxNCAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uWy4uLi4uLi4uLgogICAxMjBFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggMEIgMzMgQTQgIC4uLi4uLi4uLkAuLi4uMy4KICAg
MTIwRjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDEyMTAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMjExMDogMDAgMDIgMDAgMDAg
MDkgMDAgNUMgMTQgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLlwuLi4uLi4uLi4KICAg
MTIxMjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDBEIDMzIEE0ICAu
Li4uLi4uLi5ALi4uLjMuCiAgIDEyMTMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMjE0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTIxNTA6IDAwIDAyIDAwIDAwIDA5IDAwIDVEIDE0IDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5dLi4uLi4uLi4uCiAgIDEyMTYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCAwQyAzMyBBNCAgLi4uLi4uLi4uQC4uLi4zLgogICAxMjE3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTIxODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDEyMTkwOiAwMCAwMiAwMCAwMCAwOSAwMCA1RSAxNCAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uXi4uLi4uLi4uLgogICAxMjFBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggMEMgMzMgQTQgIC4uLi4uLi4uLkAuLi4uMy4KICAg
MTIxQjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDEyMUMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMjFEMDogMDAgMDIgMDAgMDAg
MDkgMDAgNUYgMTQgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLl8uLi4uLi4uLi4KICAg
MTIxRTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDBEIDMzIEE0ICAu
Li4uLi4uLi5ALi4uLjMuCiAgIDEyMUYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMjIwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTIyMTA6IDAwIDAyIDAwIDAwIDA5IDAwIDYwIDE0IDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5gLi4uLi4uLi4uCiAgIDEyMjIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCAwMCAzMyBBNCAgLi4uLi4uLi4uQC4uLi4zLgogICAxMjIzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTIyNDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDEyMjUwOiAwMCAwMiAwMCAwMCAwOSAwMCA2MSAxNCAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uYS4uLi4uLi4uLgogICAxMjI2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggMEEgMzMgQTQgIC4uLi4uLi4uLkAuLi4uMy4KICAg
MTIyNzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDEyMjgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMjI5MDogMDAgMDIgMDAgMDAg
MDkgMDAgNjIgMTQgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLmIuLi4uLi4uLi4KICAg
MTIyQTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDBBIDMzIEE0ICAu
Li4uLi4uLi5ALi4uLjMuCiAgIDEyMkIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMjJDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTIyRDA6IDAwIDAyIDAwIDAwIDA5IDAwIDYzIDE0IDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5jLi4uLi4uLi4uCiAgIDEyMkUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCAwNyAzMyBBNCAgLi4uLi4uLi4uQC4uLi4zLgogICAxMjJGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTIzMDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDEyMzEwOiAwMCAwMiAwMCAwMCAwOSAwMCA2NCAxNCAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uZC4uLi4uLi4uLgogICAxMjMyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggMDkgMzMgQTQgIC4uLi4uLi4uLkAuLi4uMy4KICAg
MTIzMzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDEyMzQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMjM1MDogMDAgMDIgMDAgMDAg
MDkgMDAgNjUgMTQgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLmUuLi4uLi4uLi4KICAg
MTIzNjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDA4IDMzIEE0ICAu
Li4uLi4uLi5ALi4uLjMuCiAgIDEyMzcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMjM4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTIzOTA6IDAwIDAyIDAwIDAwIDA5IDAwIDY2IDE0IDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5mLi4uLi4uLi4uCiAgIDEyM0EwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCAwOCAzMyBBNCAgLi4uLi4uLi4uQC4uLi4zLgogICAxMjNCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTIzQzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDEyM0QwOiAwMCAwMiAwMCAwMCAwOSAwMCA2NyAxNCAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uZy4uLi4uLi4uLgogICAxMjNFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggMDkgMzMgQTQgIC4uLi4uLi4uLkAuLi4uMy4KICAg
MTIzRjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDEyNDAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMjQxMDogMDAgMDIgMDAgMDAg
MDkgMDAgNjggMTQgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLmguLi4uLi4uLi4KICAg
MTI0MjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDAxIDMzIEE0ICAu
Li4uLi4uLi5ALi4uLjMuCiAgIDEyNDMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMjQ0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTI0NTA6IDAwIDAyIDAwIDAwIDA5IDAwIDY5IDE0IDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5pLi4uLi4uLi4uCiAgIDEyNDYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCAwNyAzMyBBNCAgLi4uLi4uLi4uQC4uLi4zLgogICAxMjQ3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTI0ODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDEyNDkwOiAwMCAwMiAwMCAwMCAwOSAwMCA2QSAxNCAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uai4uLi4uLi4uLgogICAxMjRBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggMDUgMzMgQTQgIC4uLi4uLi4uLkAuLi4uMy4KICAg
MTI0QjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDEyNEMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMjREMDogMDAgMDIgMDAgMDAg
MDkgMDAgNkIgMTQgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLmsuLi4uLi4uLi4KICAg
MTI0RTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDA2IDMzIEE0ICAu
Li4uLi4uLi5ALi4uLjMuCiAgIDEyNEYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMjUwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTI1MTA6IDAwIDAyIDAwIDAwIDA5IDAwIDZDIDE0IDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5sLi4uLi4uLi4uCiAgIDEyNTIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCAwNiAzMyBBNCAgLi4uLi4uLi4uQC4uLi4zLgogICAxMjUzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTI1NDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDEyNTUwOiAwMCAwMiAwMCAwMCAwOSAwMCA2RCAxNCAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4ubS4uLi4uLi4uLgogICAxMjU2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggMDEgMzMgQTQgIC4uLi4uLi4uLkAuLi4uMy4KICAg
MTI1NzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDEyNTgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMjU5MDogMDAgMDIgMDAgMDAg
MDkgMDAgNkUgMTQgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLm4uLi4uLi4uLi4KICAg
MTI1QTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDA0IDMzIEE0ICAu
Li4uLi4uLi5ALi4uLjMuCiAgIDEyNUIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMjVDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTI1RDA6IDAwIDAyIDAwIDAwIDA5IDAwIDZGIDE0IDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5vLi4uLi4uLi4uCiAgIDEyNUUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCAwNSAzMyBBNCAgLi4uLi4uLi4uQC4uLi4zLgogICAxMjVGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTI2MDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDEyNjEwOiAwMCAwMiAwMCAwMCAwOSAwMCA3MCAxNCAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4ucC4uLi4uLi4uLgogICAxMjYyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggMDIgMzMgQTQgIC4uLi4uLi4uLkAuLi4uMy4KICAg
MTI2MzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDEyNjQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMjY1MDogMDAgMDIgMDAgMDAg
MDkgMDAgNzEgMTQgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLnEuLi4uLi4uLi4KICAg
MTI2NjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDA0IDMzIEE0ICAu
Li4uLi4uLi5ALi4uLjMuCiAgIDEyNjcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMjY4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTI2OTA6IDAwIDAyIDAwIDAwIDA5IDAwIDcyIDE0IDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5yLi4uLi4uLi4uCiAgIDEyNkEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCAwMiAzMyBBNCAgLi4uLi4uLi4uQC4uLi4zLgogICAxMjZCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTI2QzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDEyNkQwOiAwMCAwMiAwMCAwMCAwOSAwMCA3MyAxNCAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4ucy4uLi4uLi4uLgogICAxMjZFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggMDMgMzMgQTQgIC4uLi4uLi4uLkAuLi4uMy4KICAg
MTI2RjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDEyNzAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMjcxMDogMDAgMDIgMDAgMDAg
MDkgMDAgNzQgMTQgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLnQuLi4uLi4uLi4KICAg
MTI3MjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDAzIDMzIEE0ICAu
Li4uLi4uLi5ALi4uLjMuCiAgIDEyNzMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMjc0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTI3NTA6IDAwIDAyIDAwIDAwIDA5IDAwIDc1IDE0IDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi51Li4uLi4uLi4uCiAgIDEyNzYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBGMCAzMiBBNCAgLi4uLi4uLi4uQC4uLi4yLgogICAxMjc3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTI3ODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDEyNzkwOiAwMCAwMiAwMCAwMCAwOSAwMCA3NiAxNCAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4udi4uLi4uLi4uLgogICAxMjdBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggRkYgMzIgQTQgIC4uLi4uLi4uLkAuLi4uMi4KICAg
MTI3QjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDEyN0MwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMjdEMDogMDAgMDIgMDAgMDAg
MDkgMDAgNzcgMTQgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLncuLi4uLi4uLi4KICAg
MTI3RTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IEZGIDMyIEE0ICAu
Li4uLi4uLi5ALi4uLjIuCiAgIDEyN0YwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMjgwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTI4MTA6IDAwIDAyIDAwIDAwIDA5IDAwIDc4IDE0IDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi54Li4uLi4uLi4uCiAgIDEyODIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBGQiAzMiBBNCAgLi4uLi4uLi4uQC4uLi4yLgogICAxMjgzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTI4NDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDEyODUwOiAwMCAwMiAwMCAwMCAwOSAwMCA3OSAxNCAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4ueS4uLi4uLi4uLgogICAxMjg2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggRkUgMzIgQTQgIC4uLi4uLi4uLkAuLi4uMi4KICAg
MTI4NzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDEyODgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMjg5MDogMDAgMDIgMDAgMDAg
MDkgMDAgN0EgMTQgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLnouLi4uLi4uLi4KICAg
MTI4QTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IEZFIDMyIEE0ICAu
Li4uLi4uLi5ALi4uLjIuCiAgIDEyOEIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMjhDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTI4RDA6IDAwIDAyIDAwIDAwIDA5IDAwIDdCIDE0IDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi57Li4uLi4uLi4uCiAgIDEyOEUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCBGQiAzMiBBNCAgLi4uLi4uLi4uQC4uLi4yLgogICAxMjhGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTI5MDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDEyOTEwOiAwMCAwMiAwMCAwMCAwOSAwMCA3QyAxNCAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4ufC4uLi4uLi4uLgogICAxMjkyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggRkQgMzIgQTQgIC4uLi4uLi4uLkAuLi4uMi4KICAg
MTI5MzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDEyOTQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMjk1MDogMDAgMDIgMDAgMDAg
MDkgMDAgN0QgMTQgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLn0uLi4uLi4uLi4KICAg
MTI5NjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IEZDIDMyIEE0ICAu
Li4uLi4uLi5ALi4uLjIuCiAgIDEyOTcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMjk4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTI5OTA6IDAwIDAyIDAwIDAwIDA5IDAwIDdFIDE0IDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5+Li4uLi4uLi4uCiAgIDEyOUEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCBGQyAzMiBBNCAgLi4uLi4uLi4uQC4uLi4yLgogICAxMjlCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTI5QzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDEyOUQwOiAwMCAwMiAwMCAwMCAwOSAwMCA3RiAxNCAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMjlFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggRkQgMzIgQTQgIC4uLi4uLi4uLkAuLi4uMi4KICAg
MTI5RjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDEyQTAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMkExMDogMDAgMDIgMDAgMDAg
MDkgMDAgODAgMTQgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTJBMjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IEYwIDMyIEE0ICAu
Li4uLi4uLi5ALi4uLjIuCiAgIDEyQTMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMkE0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTJBNTA6IDAwIDAyIDAwIDAwIDA5IDAwIDgxIDE0IDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDEyQTYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBGQSAzMiBBNCAgLi4uLi4uLi4uQC4uLi4yLgogICAxMkE3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTJBODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDEyQTkwOiAwMCAwMiAwMCAwMCAwOSAwMCA4MiAxNCAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMkFBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggRkEgMzIgQTQgIC4uLi4uLi4uLkAuLi4uMi4KICAg
MTJBQjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDEyQUMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMkFEMDogMDAgMDIgMDAgMDAg
MDkgMDAgODMgMTQgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTJBRTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IEY3IDMyIEE0ICAu
Li4uLi4uLi5ALi4uLjIuCiAgIDEyQUYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMkIwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTJCMTA6IDAwIDAyIDAwIDAwIDA5IDAwIDg0IDE0IDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDEyQjIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCBGOSAzMiBBNCAgLi4uLi4uLi4uQC4uLi4yLgogICAxMkIzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTJCNDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDEyQjUwOiAwMCAwMiAwMCAwMCAwOSAwMCA4NSAxNCAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMkI2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggRjggMzIgQTQgIC4uLi4uLi4uLkAuLi4uMi4KICAg
MTJCNzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDEyQjgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMkI5MDogMDAgMDIgMDAgMDAg
MDkgMDAgODYgMTQgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTJCQTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IEY4IDMyIEE0ICAu
Li4uLi4uLi5ALi4uLjIuCiAgIDEyQkIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMkJDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTJCRDA6IDAwIDAyIDAwIDAwIDA5IDAwIDg3IDE0IDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDEyQkUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBGOSAzMiBBNCAgLi4uLi4uLi4uQC4uLi4yLgogICAxMkJGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTJDMDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDEyQzEwOiAwMCAwMiAwMCAwMCAwOSAwMCA4OCAxNCAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMkMyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggRjEgMzIgQTQgIC4uLi4uLi4uLkAuLi4uMi4KICAg
MTJDMzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDEyQzQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMkM1MDogMDAgMDIgMDAgMDAg
MDkgMDAgODkgMTQgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTJDNjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IEY3IDMyIEE0ICAu
Li4uLi4uLi5ALi4uLjIuCiAgIDEyQzcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMkM4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTJDOTA6IDAwIDAyIDAwIDAwIDA5IDAwIDhBIDE0IDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDEyQ0EwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCBGNSAzMiBBNCAgLi4uLi4uLi4uQC4uLi4yLgogICAxMkNCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTJDQzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDEyQ0QwOiAwMCAwMiAwMCAwMCAwOSAwMCA4QiAxNCAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMkNFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggRjYgMzIgQTQgIC4uLi4uLi4uLkAuLi4uMi4KICAg
MTJDRjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDEyRDAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMkQxMDogMDAgMDIgMDAgMDAg
MDkgMDAgOEMgMTQgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTJEMjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IEY2IDMyIEE0ICAu
Li4uLi4uLi5ALi4uLjIuCiAgIDEyRDMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMkQ0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTJENTA6IDAwIDAyIDAwIDAwIDA5IDAwIDhEIDE0IDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDEyRDYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCBGMSAzMiBBNCAgLi4uLi4uLi4uQC4uLi4yLgogICAxMkQ3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTJEODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDEyRDkwOiAwMCAwMiAwMCAwMCAwOSAwMCA4RSAxNCAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMkRBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggRjQgMzIgQTQgIC4uLi4uLi4uLkAuLi4uMi4KICAg
MTJEQjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDEyREMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMkREMDogMDAgMDIgMDAgMDAg
MDkgMDAgOEYgMTQgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTJERTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IEY1IDMyIEE0ICAu
Li4uLi4uLi5ALi4uLjIuCiAgIDEyREYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMkUwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTJFMTA6IDAwIDAyIDAwIDAwIDA5IDAwIDkwIDE0IDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDEyRTIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBGMiAzMiBBNCAgLi4uLi4uLi4uQC4uLi4yLgogICAxMkUzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTJFNDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDEyRTUwOiAwMCAwMiAwMCAwMCAwOSAwMCA5MSAxNCAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMkU2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggRjQgMzIgQTQgIC4uLi4uLi4uLkAuLi4uMi4KICAg
MTJFNzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDEyRTgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMkU5MDogMDAgMDIgMDAgMDAg
MDkgMDAgOTIgMTQgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTJFQTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IEYyIDMyIEE0ICAu
Li4uLi4uLi5ALi4uLjIuCiAgIDEyRUIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMkVDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTJFRDA6IDAwIDAyIDAwIDAwIDA5IDAwIDkzIDE0IDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDEyRUUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBGMyAzMiBBNCAgLi4uLi4uLi4uQC4uLi4yLgogICAxMkVGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTJGMDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDEyRjEwOiAwMCAwMiAwMCAwMCAwOSAwMCA5NCAxNCAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMkYyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggRjMgMzIgQTQgIC4uLi4uLi4uLkAuLi4uMi4KICAg
MTJGMzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDEyRjQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMkY1MDogMDAgMDIgMDAgMDAg
MDkgMDAgOTUgMTQgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTJGNjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IEUwIDMyIEE0ICAu
Li4uLi4uLi5ALi4uLjIuCiAgIDEyRjcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMkY4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTJGOTA6IDAwIDAyIDAwIDAwIDA5IDAwIDk2IDE0IDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDEyRkEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBFRiAzMiBBNCAgLi4uLi4uLi4uQC4uLi4yLgogICAxMkZCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTJGQzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDEyRkQwOiAwMCAwMiAwMCAwMCAwOSAwMCA5NyAxNCAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMkZFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggRUYgMzIgQTQgIC4uLi4uLi4uLkAuLi4uMi4KICAg
MTJGRjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDEzMDAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMzAxMDogMDAgMDIgMDAgMDAg
MDkgMDAgOTggMTQgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTMwMjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IEVCIDMyIEE0ICAu
Li4uLi4uLi5ALi4uLjIuCiAgIDEzMDMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMzA0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTMwNTA6IDAwIDAyIDAwIDAwIDA5IDAwIDk5IDE0IDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDEzMDYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBFRSAzMiBBNCAgLi4uLi4uLi4uQC4uLi4yLgogICAxMzA3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTMwODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDEzMDkwOiAwMCAwMiAwMCAwMCAwOSAwMCA5QSAxNCAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMzBBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggRUUgMzIgQTQgIC4uLi4uLi4uLkAuLi4uMi4KICAg
MTMwQjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDEzMEMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMzBEMDogMDAgMDIgMDAgMDAg
MDkgMDAgOUIgMTQgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTMwRTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IEVCIDMyIEE0ICAu
Li4uLi4uLi5ALi4uLjIuCiAgIDEzMEYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMzEwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTMxMTA6IDAwIDAyIDAwIDAwIDA5IDAwIDlDIDE0IDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDEzMTIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCBFRCAzMiBBNCAgLi4uLi4uLi4uQC4uLi4yLgogICAxMzEzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTMxNDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDEzMTUwOiAwMCAwMiAwMCAwMCAwOSAwMCA5RCAxNCAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMzE2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggRUMgMzIgQTQgIC4uLi4uLi4uLkAuLi4uMi4KICAg
MTMxNzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDEzMTgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMzE5MDogMDAgMDIgMDAgMDAg
MDkgMDAgOUUgMTQgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTMxQTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IEVDIDMyIEE0ICAu
Li4uLi4uLi5ALi4uLjIuCiAgIDEzMUIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMzFDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTMxRDA6IDAwIDAyIDAwIDAwIDA5IDAwIDlGIDE0IDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDEzMUUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBFRCAzMiBBNCAgLi4uLi4uLi4uQC4uLi4yLgogICAxMzFGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTMyMDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDEzMjEwOiAwMCAwMiAwMCAwMCAwOSAwMCBBMCAxNCAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMzIyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggRTAgMzIgQTQgIC4uLi4uLi4uLkAuLi4uMi4KICAg
MTMyMzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDEzMjQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMzI1MDogMDAgMDIgMDAgMDAg
MDkgMDAgQTEgMTQgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTMyNjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IEVBIDMyIEE0ICAu
Li4uLi4uLi5ALi4uLjIuCiAgIDEzMjcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMzI4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTMyOTA6IDAwIDAyIDAwIDAwIDA5IDAwIEEyIDE0IDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDEzMkEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCBFQSAzMiBBNCAgLi4uLi4uLi4uQC4uLi4yLgogICAxMzJCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTMyQzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDEzMkQwOiAwMCAwMiAwMCAwMCAwOSAwMCBBMyAxNCAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMzJFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggRTcgMzIgQTQgIC4uLi4uLi4uLkAuLi4uMi4KICAg
MTMyRjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDEzMzAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMzMxMDogMDAgMDIgMDAgMDAg
MDkgMDAgQTQgMTQgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTMzMjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IEU5IDMyIEE0ICAu
Li4uLi4uLi5ALi4uLjIuCiAgIDEzMzMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMzM0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTMzNTA6IDAwIDAyIDAwIDAwIDA5IDAwIEE1IDE0IDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDEzMzYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBFOCAzMiBBNCAgLi4uLi4uLi4uQC4uLi4yLgogICAxMzM3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTMzODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDEzMzkwOiAwMCAwMiAwMCAwMCAwOSAwMCBBNiAxNCAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMzNBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggRTggMzIgQTQgIC4uLi4uLi4uLkAuLi4uMi4KICAg
MTMzQjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDEzM0MwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMzNEMDogMDAgMDIgMDAgMDAg
MDkgMDAgQTcgMTQgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTMzRTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IEU5IDMyIEE0ICAu
Li4uLi4uLi5ALi4uLjIuCiAgIDEzM0YwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMzQwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTM0MTA6IDAwIDAyIDAwIDAwIDA5IDAwIEE4IDE0IDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDEzNDIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBFMSAzMiBBNCAgLi4uLi4uLi4uQC4uLi4yLgogICAxMzQzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTM0NDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDEzNDUwOiAwMCAwMiAwMCAwMCAwOSAwMCBBOSAxNCAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMzQ2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggRTcgMzIgQTQgIC4uLi4uLi4uLkAuLi4uMi4KICAg
MTM0NzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDEzNDgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMzQ5MDogMDAgMDIgMDAgMDAg
MDkgMDAgQUEgMTQgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTM0QTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IEU1IDMyIEE0ICAu
Li4uLi4uLi5ALi4uLjIuCiAgIDEzNEIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMzRDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTM0RDA6IDAwIDAyIDAwIDAwIDA5IDAwIEFCIDE0IDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDEzNEUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBFNiAzMiBBNCAgLi4uLi4uLi4uQC4uLi4yLgogICAxMzRGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTM1MDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDEzNTEwOiAwMCAwMiAwMCAwMCAwOSAwMCBBQyAxNCAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMzUyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggRTYgMzIgQTQgIC4uLi4uLi4uLkAuLi4uMi4KICAg
MTM1MzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDEzNTQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMzU1MDogMDAgMDIgMDAgMDAg
MDkgMDAgQUQgMTQgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTM1NjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IEUxIDMyIEE0ICAu
Li4uLi4uLi5ALi4uLjIuCiAgIDEzNTcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMzU4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTM1OTA6IDAwIDAyIDAwIDAwIDA5IDAwIEFFIDE0IDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDEzNUEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCBFNCAzMiBBNCAgLi4uLi4uLi4uQC4uLi4yLgogICAxMzVCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTM1QzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDEzNUQwOiAwMCAwMiAwMCAwMCAwOSAwMCBBRiAxNCAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMzVFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggRTUgMzIgQTQgIC4uLi4uLi4uLkAuLi4uMi4KICAg
MTM1RjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDEzNjAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMzYxMDogMDAgMDIgMDAgMDAg
MDkgMDAgQjAgMTQgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTM2MjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IEUyIDMyIEE0ICAu
Li4uLi4uLi5ALi4uLjIuCiAgIDEzNjMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMzY0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTM2NTA6IDAwIDAyIDAwIDAwIDA5IDAwIEIxIDE0IDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDEzNjYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBFNCAzMiBBNCAgLi4uLi4uLi4uQC4uLi4yLgogICAxMzY3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTM2ODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDEzNjkwOiAwMCAwMiAwMCAwMCAwOSAwMCBCMiAxNCAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMzZBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggRTIgMzIgQTQgIC4uLi4uLi4uLkAuLi4uMi4KICAg
MTM2QjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDEzNkMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMzZEMDogMDAgMDIgMDAgMDAg
MDkgMDAgQjMgMTQgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTM2RTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IEUzIDMyIEE0ICAu
Li4uLi4uLi5ALi4uLjIuCiAgIDEzNkYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMzcwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTM3MTA6IDAwIDAyIDAwIDAwIDA5IDAwIEI0IDE0IDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDEzNzIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCBFMyAzMiBBNCAgLi4uLi4uLi4uQC4uLi4yLgogICAxMzczMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTM3NDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDEzNzUwOiAwMCAwMiAwMCAwMCAwOSAwMCBCNSAxNCAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMzc2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggRDAgMzIgQTQgIC4uLi4uLi4uLkAuLi4uMi4KICAg
MTM3NzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDEzNzgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMzc5MDogMDAgMDIgMDAgMDAg
MDkgMDAgQjYgMTQgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTM3QTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IERGIDMyIEE0ICAu
Li4uLi4uLi5ALi4uLjIuCiAgIDEzN0IwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMzdDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTM3RDA6IDAwIDAyIDAwIDAwIDA5IDAwIEI3IDE0IDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDEzN0UwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCBERiAzMiBBNCAgLi4uLi4uLi4uQC4uLi4yLgogICAxMzdGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTM4MDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDEzODEwOiAwMCAwMiAwMCAwMCAwOSAwMCBCOCAxNCAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMzgyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggREIgMzIgQTQgIC4uLi4uLi4uLkAuLi4uMi4KICAg
MTM4MzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDEzODQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMzg1MDogMDAgMDIgMDAgMDAg
MDkgMDAgQjkgMTQgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTM4NjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IERFIDMyIEE0ICAu
Li4uLi4uLi5ALi4uLjIuCiAgIDEzODcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMzg4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTM4OTA6IDAwIDAyIDAwIDAwIDA5IDAwIEJBIDE0IDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDEzOEEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCBERSAzMiBBNCAgLi4uLi4uLi4uQC4uLi4yLgogICAxMzhCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTM4QzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDEzOEQwOiAwMCAwMiAwMCAwMCAwOSAwMCBCQiAxNCAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMzhFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggREIgMzIgQTQgIC4uLi4uLi4uLkAuLi4uMi4KICAg
MTM4RjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDEzOTAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMzkxMDogMDAgMDIgMDAgMDAg
MDkgMDAgQkMgMTQgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTM5MjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IEREIDMyIEE0ICAu
Li4uLi4uLi5ALi4uLjIuCiAgIDEzOTMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMzk0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTM5NTA6IDAwIDAyIDAwIDAwIDA5IDAwIEJEIDE0IDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDEzOTYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBEQyAzMiBBNCAgLi4uLi4uLi4uQC4uLi4yLgogICAxMzk3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTM5ODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDEzOTkwOiAwMCAwMiAwMCAwMCAwOSAwMCBCRSAxNCAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMzlBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggREMgMzIgQTQgIC4uLi4uLi4uLkAuLi4uMi4KICAg
MTM5QjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDEzOUMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxMzlEMDogMDAgMDIgMDAgMDAg
MDkgMDAgQkYgMTQgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTM5RTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IEREIDMyIEE0ICAu
Li4uLi4uLi5ALi4uLjIuCiAgIDEzOUYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxM0EwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTNBMTA6IDAwIDAyIDAwIDAwIDA5IDAwIEMwIDE0IDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDEzQTIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCBEMCAzMiBBNCAgLi4uLi4uLi4uQC4uLi4yLgogICAxM0EzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTNBNDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDEzQTUwOiAwMCAwMiAwMCAwMCAwOSAwMCBDMSAxNCAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxM0E2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggREEgMzIgQTQgIC4uLi4uLi4uLkAuLi4uMi4KICAg
MTNBNzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDEzQTgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxM0E5MDogMDAgMDIgMDAgMDAg
MDkgMDAgQzIgMTQgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTNBQTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IERBIDMyIEE0ICAu
Li4uLi4uLi5ALi4uLjIuCiAgIDEzQUIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxM0FDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTNBRDA6IDAwIDAyIDAwIDAwIDA5IDAwIEMzIDE0IDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDEzQUUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCBENyAzMiBBNCAgLi4uLi4uLi4uQC4uLi4yLgogICAxM0FGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTNCMDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDEzQjEwOiAwMCAwMiAwMCAwMCAwOSAwMCBDNCAxNCAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxM0IyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggRDkgMzIgQTQgIC4uLi4uLi4uLkAuLi4uMi4KICAg
MTNCMzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDEzQjQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxM0I1MDogMDAgMDIgMDAgMDAg
MDkgMDAgQzUgMTQgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTNCNjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IEQ4IDMyIEE0ICAu
Li4uLi4uLi5ALi4uLjIuCiAgIDEzQjcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxM0I4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTNCOTA6IDAwIDAyIDAwIDAwIDA5IDAwIEM2IDE0IDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDEzQkEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCBEOCAzMiBBNCAgLi4uLi4uLi4uQC4uLi4yLgogICAxM0JCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTNCQzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDEzQkQwOiAwMCAwMiAwMCAwMCAwOSAwMCBDNyAxNCAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxM0JFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggRDkgMzIgQTQgIC4uLi4uLi4uLkAuLi4uMi4KICAg
MTNCRjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDEzQzAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxM0MxMDogMDAgMDIgMDAgMDAg
MDkgMDAgQzggMTQgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTNDMjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IEQxIDMyIEE0ICAu
Li4uLi4uLi5ALi4uLjIuCiAgIDEzQzMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxM0M0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTNDNTA6IDAwIDAyIDAwIDAwIDA5IDAwIEM5IDE0IDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDEzQzYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBENyAzMiBBNCAgLi4uLi4uLi4uQC4uLi4yLgogICAxM0M3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTNDODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDEzQzkwOiAwMCAwMiAwMCAwMCAwOSAwMCBDQSAxNCAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxM0NBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggRDUgMzIgQTQgIC4uLi4uLi4uLkAuLi4uMi4KICAg
MTNDQjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDEzQ0MwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxM0NEMDogMDAgMDIgMDAgMDAg
MDkgMDAgQ0IgMTQgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTNDRTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IEQ2IDMyIEE0ICAu
Li4uLi4uLi5ALi4uLjIuCiAgIDEzQ0YwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxM0QwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTNEMTA6IDAwIDAyIDAwIDAwIDA5IDAwIENDIDE0IDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDEzRDIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCBENiAzMiBBNCAgLi4uLi4uLi4uQC4uLi4yLgogICAxM0QzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTNENDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDEzRDUwOiAwMCAwMiAwMCAwMCAwOSAwMCBDRCAxNCAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxM0Q2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggRDEgMzIgQTQgIC4uLi4uLi4uLkAuLi4uMi4KICAg
MTNENzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDEzRDgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxM0Q5MDogMDAgMDIgMDAgMDAg
MDkgMDAgQ0UgMTQgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTNEQTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IEQ0IDMyIEE0ICAu
Li4uLi4uLi5ALi4uLjIuCiAgIDEzREIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxM0RDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTNERDA6IDAwIDAyIDAwIDAwIDA5IDAwIENGIDE0IDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDEzREUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBENSAzMiBBNCAgLi4uLi4uLi4uQC4uLi4yLgogICAxM0RGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTNFMDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDEzRTEwOiAwMCAwMiAwMCAwMCAwOSAwMCBEMCAxNCAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxM0UyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggRDIgMzIgQTQgIC4uLi4uLi4uLkAuLi4uMi4KICAg
MTNFMzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDEzRTQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxM0U1MDogMDAgMDIgMDAgMDAg
MDkgMDAgRDEgMTQgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTNFNjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IEQ0IDMyIEE0ICAu
Li4uLi4uLi5ALi4uLjIuCiAgIDEzRTcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxM0U4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTNFOTA6IDAwIDAyIDAwIDAwIDA5IDAwIEQyIDE0IDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDEzRUEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCBEMiAzMiBBNCAgLi4uLi4uLi4uQC4uLi4yLgogICAxM0VCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTNFQzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDEzRUQwOiAwMCAwMiAwMCAwMCAwOSAwMCBEMyAxNCAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxM0VFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggRDMgMzIgQTQgIC4uLi4uLi4uLkAuLi4uMi4KICAg
MTNFRjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDEzRjAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxM0YxMDogMDAgMDIgMDAgMDAg
MDkgMDAgRDQgMTQgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTNGMjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IEQzIDMyIEE0ICAu
Li4uLi4uLi5ALi4uLjIuCiAgIDEzRjMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxM0Y0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTNGNTA6IDAwIDAyIDAwIDAwIDA5IDAwIEQ1IDE0IDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDEzRjYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBDMCAzMiBBNCAgLi4uLi4uLi4uQC4uLi4yLgogICAxM0Y3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTNGODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDEzRjkwOiAwMCAwMiAwMCAwMCAwOSAwMCBENiAxNCAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxM0ZBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggQ0YgMzIgQTQgIC4uLi4uLi4uLkAuLi4uMi4KICAg
MTNGQjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDEzRkMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxM0ZEMDogMDAgMDIgMDAgMDAg
MDkgMDAgRDcgMTQgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTNGRTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IENGIDMyIEE0ICAu
Li4uLi4uLi5ALi4uLjIuCiAgIDEzRkYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNDAwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTQwMTA6IDAwIDAyIDAwIDAwIDA5IDAwIEQ4IDE0IDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE0MDIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBDQiAzMiBBNCAgLi4uLi4uLi4uQC4uLi4yLgogICAxNDAzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTQwNDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE0MDUwOiAwMCAwMiAwMCAwMCAwOSAwMCBEOSAxNCAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNDA2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggQ0UgMzIgQTQgIC4uLi4uLi4uLkAuLi4uMi4KICAg
MTQwNzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE0MDgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNDA5MDogMDAgMDIgMDAgMDAg
MDkgMDAgREEgMTQgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTQwQTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IENFIDMyIEE0ICAu
Li4uLi4uLi5ALi4uLjIuCiAgIDE0MEIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNDBDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTQwRDA6IDAwIDAyIDAwIDAwIDA5IDAwIERCIDE0IDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE0MEUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCBDQiAzMiBBNCAgLi4uLi4uLi4uQC4uLi4yLgogICAxNDBGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTQxMDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE0MTEwOiAwMCAwMiAwMCAwMCAwOSAwMCBEQyAxNCAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNDEyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggQ0QgMzIgQTQgIC4uLi4uLi4uLkAuLi4uMi4KICAg
MTQxMzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE0MTQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNDE1MDogMDAgMDIgMDAgMDAg
MDkgMDAgREQgMTQgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTQxNjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IENDIDMyIEE0ICAu
Li4uLi4uLi5ALi4uLjIuCiAgIDE0MTcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNDE4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTQxOTA6IDAwIDAyIDAwIDAwIDA5IDAwIERFIDE0IDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE0MUEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCBDQyAzMiBBNCAgLi4uLi4uLi4uQC4uLi4yLgogICAxNDFCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTQxQzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE0MUQwOiAwMCAwMiAwMCAwMCAwOSAwMCBERiAxNCAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNDFFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggQ0QgMzIgQTQgIC4uLi4uLi4uLkAuLi4uMi4KICAg
MTQxRjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE0MjAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNDIxMDogMDAgMDIgMDAgMDAg
MDkgMDAgRTAgMTQgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTQyMjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IEMwIDMyIEE0ICAu
Li4uLi4uLi5ALi4uLjIuCiAgIDE0MjMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNDI0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTQyNTA6IDAwIDAyIDAwIDAwIDA5IDAwIEUxIDE0IDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE0MjYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBDQSAzMiBBNCAgLi4uLi4uLi4uQC4uLi4yLgogICAxNDI3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTQyODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE0MjkwOiAwMCAwMiAwMCAwMCAwOSAwMCBFMiAxNCAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNDJBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggQ0EgMzIgQTQgIC4uLi4uLi4uLkAuLi4uMi4KICAg
MTQyQjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE0MkMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNDJEMDogMDAgMDIgMDAgMDAg
MDkgMDAgRTMgMTQgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTQyRTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IEM3IDMyIEE0ICAu
Li4uLi4uLi5ALi4uLjIuCiAgIDE0MkYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNDMwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTQzMTA6IDAwIDAyIDAwIDAwIDA5IDAwIEU0IDE0IDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE0MzIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCBDOSAzMiBBNCAgLi4uLi4uLi4uQC4uLi4yLgogICAxNDMzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTQzNDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE0MzUwOiAwMCAwMiAwMCAwMCAwOSAwMCBFNSAxNCAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNDM2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggQzggMzIgQTQgIC4uLi4uLi4uLkAuLi4uMi4KICAg
MTQzNzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE0MzgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNDM5MDogMDAgMDIgMDAgMDAg
MDkgMDAgRTYgMTQgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTQzQTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IEM4IDMyIEE0ICAu
Li4uLi4uLi5ALi4uLjIuCiAgIDE0M0IwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNDNDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTQzRDA6IDAwIDAyIDAwIDAwIDA5IDAwIEU3IDE0IDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE0M0UwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBDOSAzMiBBNCAgLi4uLi4uLi4uQC4uLi4yLgogICAxNDNGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTQ0MDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE0NDEwOiAwMCAwMiAwMCAwMCAwOSAwMCBFOCAxNCAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNDQyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggQzEgMzIgQTQgIC4uLi4uLi4uLkAuLi4uMi4KICAg
MTQ0MzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE0NDQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNDQ1MDogMDAgMDIgMDAgMDAg
MDkgMDAgRTkgMTQgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTQ0NjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IEM3IDMyIEE0ICAu
Li4uLi4uLi5ALi4uLjIuCiAgIDE0NDcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNDQ4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTQ0OTA6IDAwIDAyIDAwIDAwIDA5IDAwIEVBIDE0IDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE0NEEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCBDNSAzMiBBNCAgLi4uLi4uLi4uQC4uLi4yLgogICAxNDRCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTQ0QzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE0NEQwOiAwMCAwMiAwMCAwMCAwOSAwMCBFQiAxNCAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNDRFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggQzYgMzIgQTQgIC4uLi4uLi4uLkAuLi4uMi4KICAg
MTQ0RjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE0NTAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNDUxMDogMDAgMDIgMDAgMDAg
MDkgMDAgRUMgMTQgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTQ1MjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IEM2IDMyIEE0ICAu
Li4uLi4uLi5ALi4uLjIuCiAgIDE0NTMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNDU0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTQ1NTA6IDAwIDAyIDAwIDAwIDA5IDAwIEVEIDE0IDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE0NTYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCBDMSAzMiBBNCAgLi4uLi4uLi4uQC4uLi4yLgogICAxNDU3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTQ1ODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE0NTkwOiAwMCAwMiAwMCAwMCAwOSAwMCBFRSAxNCAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNDVBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggQzQgMzIgQTQgIC4uLi4uLi4uLkAuLi4uMi4KICAg
MTQ1QjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE0NUMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNDVEMDogMDAgMDIgMDAgMDAg
MDkgMDAgRUYgMTQgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTQ1RTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IEM1IDMyIEE0ICAu
Li4uLi4uLi5ALi4uLjIuCiAgIDE0NUYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNDYwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTQ2MTA6IDAwIDAyIDAwIDAwIDA5IDAwIEYwIDE0IDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE0NjIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBDMiAzMiBBNCAgLi4uLi4uLi4uQC4uLi4yLgogICAxNDYzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTQ2NDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE0NjUwOiAwMCAwMiAwMCAwMCAwOSAwMCBGMSAxNCAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNDY2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggQzQgMzIgQTQgIC4uLi4uLi4uLkAuLi4uMi4KICAg
MTQ2NzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE0NjgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNDY5MDogMDAgMDIgMDAgMDAg
MDkgMDAgRjIgMTQgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTQ2QTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IEMyIDMyIEE0ICAu
Li4uLi4uLi5ALi4uLjIuCiAgIDE0NkIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNDZDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTQ2RDA6IDAwIDAyIDAwIDAwIDA5IDAwIEYzIDE0IDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE0NkUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBDMyAzMiBBNCAgLi4uLi4uLi4uQC4uLi4yLgogICAxNDZGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTQ3MDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE0NzEwOiAwMCAwMiAwMCAwMCAwOSAwMCBGNCAxNCAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNDcyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggQzMgMzIgQTQgIC4uLi4uLi4uLkAuLi4uMi4KICAg
MTQ3MzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE0NzQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNDc1MDogMDAgMDIgMDAgMDAg
MDkgMDAgRjUgMTQgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTQ3NjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IEIwIDMyIEE0ICAu
Li4uLi4uLi5ALi4uLjIuCiAgIDE0NzcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNDc4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTQ3OTA6IDAwIDAyIDAwIDAwIDA5IDAwIEY2IDE0IDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE0N0EwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBCRiAzMiBBNCAgLi4uLi4uLi4uQC4uLi4yLgogICAxNDdCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTQ3QzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE0N0QwOiAwMCAwMiAwMCAwMCAwOSAwMCBGNyAxNCAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNDdFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggQkYgMzIgQTQgIC4uLi4uLi4uLkAuLi4uMi4KICAg
MTQ3RjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE0ODAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNDgxMDogMDAgMDIgMDAgMDAg
MDkgMDAgRjggMTQgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTQ4MjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IEJCIDMyIEE0ICAu
Li4uLi4uLi5ALi4uLjIuCiAgIDE0ODMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNDg0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTQ4NTA6IDAwIDAyIDAwIDAwIDA5IDAwIEY5IDE0IDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE0ODYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBCRSAzMiBBNCAgLi4uLi4uLi4uQC4uLi4yLgogICAxNDg3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTQ4ODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE0ODkwOiAwMCAwMiAwMCAwMCAwOSAwMCBGQSAxNCAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNDhBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggQkUgMzIgQTQgIC4uLi4uLi4uLkAuLi4uMi4KICAg
MTQ4QjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE0OEMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNDhEMDogMDAgMDIgMDAgMDAg
MDkgMDAgRkIgMTQgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTQ4RTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IEJCIDMyIEE0ICAu
Li4uLi4uLi5ALi4uLjIuCiAgIDE0OEYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNDkwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTQ5MTA6IDAwIDAyIDAwIDAwIDA5IDAwIEZDIDE0IDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE0OTIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCBCRCAzMiBBNCAgLi4uLi4uLi4uQC4uLi4yLgogICAxNDkzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTQ5NDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE0OTUwOiAwMCAwMiAwMCAwMCAwOSAwMCBGRCAxNCAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNDk2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggQkMgMzIgQTQgIC4uLi4uLi4uLkAuLi4uMi4KICAg
MTQ5NzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE0OTgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNDk5MDogMDAgMDIgMDAgMDAg
MDkgMDAgRkUgMTQgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTQ5QTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IEJDIDMyIEE0ICAu
Li4uLi4uLi5ALi4uLjIuCiAgIDE0OUIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNDlDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTQ5RDA6IDAwIDAyIDAwIDAwIDA5IDAwIEZGIDE0IDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE0OUUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBCRCAzMiBBNCAgLi4uLi4uLi4uQC4uLi4yLgogICAxNDlGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTRBMDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE0QTEwOiAwMCAwMiAwMCAwMCAwOSAwMCAwMCAxNSAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNEEyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggQjAgMzIgQTQgIC4uLi4uLi4uLkAuLi4uMi4KICAg
MTRBMzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE0QTQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNEE1MDogMDAgMDIgMDAgMDAg
MDkgMDAgMDEgMTUgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTRBNjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IEJBIDMyIEE0ICAu
Li4uLi4uLi5ALi4uLjIuCiAgIDE0QTcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNEE4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTRBOTA6IDAwIDAyIDAwIDAwIDA5IDAwIDAyIDE1IDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE0QUEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCBCQSAzMiBBNCAgLi4uLi4uLi4uQC4uLi4yLgogICAxNEFCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTRBQzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE0QUQwOiAwMCAwMiAwMCAwMCAwOSAwMCAwMyAxNSAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNEFFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggQjcgMzIgQTQgIC4uLi4uLi4uLkAuLi4uMi4KICAg
MTRBRjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE0QjAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNEIxMDogMDAgMDIgMDAgMDAg
MDkgMDAgMDQgMTUgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTRCMjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IEI5IDMyIEE0ICAu
Li4uLi4uLi5ALi4uLjIuCiAgIDE0QjMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNEI0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTRCNTA6IDAwIDAyIDAwIDAwIDA5IDAwIDA1IDE1IDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE0QjYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBCOCAzMiBBNCAgLi4uLi4uLi4uQC4uLi4yLgogICAxNEI3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTRCODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE0QjkwOiAwMCAwMiAwMCAwMCAwOSAwMCAwNiAxNSAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNEJBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggQjggMzIgQTQgIC4uLi4uLi4uLkAuLi4uMi4KICAg
MTRCQjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE0QkMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNEJEMDogMDAgMDIgMDAgMDAg
MDkgMDAgMDcgMTUgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTRCRTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IEI5IDMyIEE0ICAu
Li4uLi4uLi5ALi4uLjIuCiAgIDE0QkYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNEMwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTRDMTA6IDAwIDAyIDAwIDAwIDA5IDAwIDA4IDE1IDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE0QzIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBCMSAzMiBBNCAgLi4uLi4uLi4uQC4uLi4yLgogICAxNEMzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTRDNDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE0QzUwOiAwMCAwMiAwMCAwMCAwOSAwMCAwOSAxNSAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNEM2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggQjcgMzIgQTQgIC4uLi4uLi4uLkAuLi4uMi4KICAg
MTRDNzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE0QzgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNEM5MDogMDAgMDIgMDAgMDAg
MDkgMDAgMEEgMTUgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTRDQTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IEI1IDMyIEE0ICAu
Li4uLi4uLi5ALi4uLjIuCiAgIDE0Q0IwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNENDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTRDRDA6IDAwIDAyIDAwIDAwIDA5IDAwIDBCIDE1IDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE0Q0UwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBCNiAzMiBBNCAgLi4uLi4uLi4uQC4uLi4yLgogICAxNENGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTREMDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE0RDEwOiAwMCAwMiAwMCAwMCAwOSAwMCAwQyAxNSAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNEQyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggQjYgMzIgQTQgIC4uLi4uLi4uLkAuLi4uMi4KICAg
MTREMzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE0RDQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNEQ1MDogMDAgMDIgMDAgMDAg
MDkgMDAgMEQgMTUgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTRENjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IEIxIDMyIEE0ICAu
Li4uLi4uLi5ALi4uLjIuCiAgIDE0RDcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNEQ4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTREOTA6IDAwIDAyIDAwIDAwIDA5IDAwIDBFIDE1IDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE0REEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCBCNCAzMiBBNCAgLi4uLi4uLi4uQC4uLi4yLgogICAxNERCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTREQzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE0REQwOiAwMCAwMiAwMCAwMCAwOSAwMCAwRiAxNSAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNERFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggQjUgMzIgQTQgIC4uLi4uLi4uLkAuLi4uMi4KICAg
MTRERjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE0RTAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNEUxMDogMDAgMDIgMDAgMDAg
MDkgMDAgMTAgMTUgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTRFMjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IEIyIDMyIEE0ICAu
Li4uLi4uLi5ALi4uLjIuCiAgIDE0RTMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNEU0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTRFNTA6IDAwIDAyIDAwIDAwIDA5IDAwIDExIDE1IDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE0RTYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBCNCAzMiBBNCAgLi4uLi4uLi4uQC4uLi4yLgogICAxNEU3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTRFODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE0RTkwOiAwMCAwMiAwMCAwMCAwOSAwMCAxMiAxNSAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNEVBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggQjIgMzIgQTQgIC4uLi4uLi4uLkAuLi4uMi4KICAg
MTRFQjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE0RUMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNEVEMDogMDAgMDIgMDAgMDAg
MDkgMDAgMTMgMTUgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTRFRTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IEIzIDMyIEE0ICAu
Li4uLi4uLi5ALi4uLjIuCiAgIDE0RUYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNEYwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTRGMTA6IDAwIDAyIDAwIDAwIDA5IDAwIDE0IDE1IDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE0RjIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCBCMyAzMiBBNCAgLi4uLi4uLi4uQC4uLi4yLgogICAxNEYzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTRGNDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE0RjUwOiAwMCAwMiAwMCAwMCAwOSAwMCAxNSAxNSAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNEY2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggQTAgMzIgQTQgIC4uLi4uLi4uLkAuLi4uMi4KICAg
MTRGNzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE0RjgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNEY5MDogMDAgMDIgMDAgMDAg
MDkgMDAgMTYgMTUgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTRGQTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IEFGIDMyIEE0ICAu
Li4uLi4uLi5ALi4uLjIuCiAgIDE0RkIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNEZDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTRGRDA6IDAwIDAyIDAwIDAwIDA5IDAwIDE3IDE1IDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE0RkUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCBBRiAzMiBBNCAgLi4uLi4uLi4uQC4uLi4yLgogICAxNEZGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTUwMDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE1MDEwOiAwMCAwMiAwMCAwMCAwOSAwMCAxOCAxNSAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNTAyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggQUIgMzIgQTQgIC4uLi4uLi4uLkAuLi4uMi4KICAg
MTUwMzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE1MDQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNTA1MDogMDAgMDIgMDAgMDAg
MDkgMDAgMTkgMTUgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTUwNjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IEFFIDMyIEE0ICAu
Li4uLi4uLi5ALi4uLjIuCiAgIDE1MDcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNTA4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTUwOTA6IDAwIDAyIDAwIDAwIDA5IDAwIDFBIDE1IDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE1MEEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCBBRSAzMiBBNCAgLi4uLi4uLi4uQC4uLi4yLgogICAxNTBCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTUwQzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE1MEQwOiAwMCAwMiAwMCAwMCAwOSAwMCAxQiAxNSAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNTBFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggQUIgMzIgQTQgIC4uLi4uLi4uLkAuLi4uMi4KICAg
MTUwRjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE1MTAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNTExMDogMDAgMDIgMDAgMDAg
MDkgMDAgMUMgMTUgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTUxMjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IEFEIDMyIEE0ICAu
Li4uLi4uLi5ALi4uLjIuCiAgIDE1MTMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNTE0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTUxNTA6IDAwIDAyIDAwIDAwIDA5IDAwIDFEIDE1IDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE1MTYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBBQyAzMiBBNCAgLi4uLi4uLi4uQC4uLi4yLgogICAxNTE3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTUxODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE1MTkwOiAwMCAwMiAwMCAwMCAwOSAwMCAxRSAxNSAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNTFBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggQUMgMzIgQTQgIC4uLi4uLi4uLkAuLi4uMi4KICAg
MTUxQjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE1MUMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNTFEMDogMDAgMDIgMDAgMDAg
MDkgMDAgMUYgMTUgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTUxRTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IEFEIDMyIEE0ICAu
Li4uLi4uLi5ALi4uLjIuCiAgIDE1MUYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNTIwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTUyMTA6IDAwIDAyIDAwIDAwIDA5IDAwIDIwIDE1IDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4gLi4uLi4uLi4uCiAgIDE1MjIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCBBMCAzMiBBNCAgLi4uLi4uLi4uQC4uLi4yLgogICAxNTIzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTUyNDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE1MjUwOiAwMCAwMiAwMCAwMCAwOSAwMCAyMSAxNSAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uIS4uLi4uLi4uLgogICAxNTI2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggQUEgMzIgQTQgIC4uLi4uLi4uLkAuLi4uMi4KICAg
MTUyNzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE1MjgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNTI5MDogMDAgMDIgMDAgMDAg
MDkgMDAgMjIgMTUgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLiIuLi4uLi4uLi4KICAg
MTUyQTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IEFBIDMyIEE0ICAu
Li4uLi4uLi5ALi4uLjIuCiAgIDE1MkIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNTJDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTUyRDA6IDAwIDAyIDAwIDAwIDA5IDAwIDIzIDE1IDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4jLi4uLi4uLi4uCiAgIDE1MkUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCBBNyAzMiBBNCAgLi4uLi4uLi4uQC4uLi4yLgogICAxNTJGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTUzMDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE1MzEwOiAwMCAwMiAwMCAwMCAwOSAwMCAyNCAxNSAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uJC4uLi4uLi4uLgogICAxNTMyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggQTkgMzIgQTQgIC4uLi4uLi4uLkAuLi4uMi4KICAg
MTUzMzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE1MzQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNTM1MDogMDAgMDIgMDAgMDAg
MDkgMDAgMjUgMTUgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLiUuLi4uLi4uLi4KICAg
MTUzNjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IEE4IDMyIEE0ICAu
Li4uLi4uLi5ALi4uLjIuCiAgIDE1MzcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNTM4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTUzOTA6IDAwIDAyIDAwIDAwIDA5IDAwIDI2IDE1IDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4mLi4uLi4uLi4uCiAgIDE1M0EwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCBBOCAzMiBBNCAgLi4uLi4uLi4uQC4uLi4yLgogICAxNTNCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTUzQzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE1M0QwOiAwMCAwMiAwMCAwMCAwOSAwMCAyNyAxNSAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uJy4uLi4uLi4uLgogICAxNTNFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggQTkgMzIgQTQgIC4uLi4uLi4uLkAuLi4uMi4KICAg
MTUzRjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE1NDAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNTQxMDogMDAgMDIgMDAgMDAg
MDkgMDAgMjggMTUgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLiguLi4uLi4uLi4KICAg
MTU0MjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IEExIDMyIEE0ICAu
Li4uLi4uLi5ALi4uLjIuCiAgIDE1NDMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNTQ0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTU0NTA6IDAwIDAyIDAwIDAwIDA5IDAwIDI5IDE1IDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4pLi4uLi4uLi4uCiAgIDE1NDYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBBNyAzMiBBNCAgLi4uLi4uLi4uQC4uLi4yLgogICAxNTQ3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTU0ODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE1NDkwOiAwMCAwMiAwMCAwMCAwOSAwMCAyQSAxNSAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uKi4uLi4uLi4uLgogICAxNTRBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggQTUgMzIgQTQgIC4uLi4uLi4uLkAuLi4uMi4KICAg
MTU0QjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE1NEMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNTREMDogMDAgMDIgMDAgMDAg
MDkgMDAgMkIgMTUgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLisuLi4uLi4uLi4KICAg
MTU0RTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IEE2IDMyIEE0ICAu
Li4uLi4uLi5ALi4uLjIuCiAgIDE1NEYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNTUwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTU1MTA6IDAwIDAyIDAwIDAwIDA5IDAwIDJDIDE1IDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4sLi4uLi4uLi4uCiAgIDE1NTIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCBBNiAzMiBBNCAgLi4uLi4uLi4uQC4uLi4yLgogICAxNTUzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTU1NDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE1NTUwOiAwMCAwMiAwMCAwMCAwOSAwMCAyRCAxNSAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLS4uLi4uLi4uLgogICAxNTU2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggQTEgMzIgQTQgIC4uLi4uLi4uLkAuLi4uMi4KICAg
MTU1NzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE1NTgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNTU5MDogMDAgMDIgMDAgMDAg
MDkgMDAgMkUgMTUgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTU1QTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IEE0IDMyIEE0ICAu
Li4uLi4uLi5ALi4uLjIuCiAgIDE1NUIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNTVDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTU1RDA6IDAwIDAyIDAwIDAwIDA5IDAwIDJGIDE1IDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4vLi4uLi4uLi4uCiAgIDE1NUUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBBNSAzMiBBNCAgLi4uLi4uLi4uQC4uLi4yLgogICAxNTVGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTU2MDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE1NjEwOiAwMCAwMiAwMCAwMCAwOSAwMCAzMCAxNSAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uMC4uLi4uLi4uLgogICAxNTYyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggQTIgMzIgQTQgIC4uLi4uLi4uLkAuLi4uMi4KICAg
MTU2MzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE1NjQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNTY1MDogMDAgMDIgMDAgMDAg
MDkgMDAgMzEgMTUgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLjEuLi4uLi4uLi4KICAg
MTU2NjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IEE0IDMyIEE0ICAu
Li4uLi4uLi5ALi4uLjIuCiAgIDE1NjcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNTY4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTU2OTA6IDAwIDAyIDAwIDAwIDA5IDAwIDMyIDE1IDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4yLi4uLi4uLi4uCiAgIDE1NkEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCBBMiAzMiBBNCAgLi4uLi4uLi4uQC4uLi4yLgogICAxNTZCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTU2QzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE1NkQwOiAwMCAwMiAwMCAwMCAwOSAwMCAzMyAxNSAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uMy4uLi4uLi4uLgogICAxNTZFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggQTMgMzIgQTQgIC4uLi4uLi4uLkAuLi4uMi4KICAg
MTU2RjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE1NzAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNTcxMDogMDAgMDIgMDAgMDAg
MDkgMDAgMzQgMTUgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLjQuLi4uLi4uLi4KICAg
MTU3MjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IEEzIDMyIEE0ICAu
Li4uLi4uLi5ALi4uLjIuCiAgIDE1NzMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNTc0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTU3NTA6IDAwIDAyIDAwIDAwIDA5IDAwIDM1IDE1IDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi41Li4uLi4uLi4uCiAgIDE1NzYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA5MCAzMiBBNCAgLi4uLi4uLi4uQC4uLi4yLgogICAxNTc3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTU3ODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE1NzkwOiAwMCAwMiAwMCAwMCAwOSAwMCAzNiAxNSAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uNi4uLi4uLi4uLgogICAxNTdBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggOUYgMzIgQTQgIC4uLi4uLi4uLkAuLi4uMi4KICAg
MTU3QjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE1N0MwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNTdEMDogMDAgMDIgMDAgMDAg
MDkgMDAgMzcgMTUgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLjcuLi4uLi4uLi4KICAg
MTU3RTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDlGIDMyIEE0ICAu
Li4uLi4uLi5ALi4uLjIuCiAgIDE1N0YwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNTgwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTU4MTA6IDAwIDAyIDAwIDAwIDA5IDAwIDM4IDE1IDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi44Li4uLi4uLi4uCiAgIDE1ODIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA5QiAzMiBBNCAgLi4uLi4uLi4uQC4uLi4yLgogICAxNTgzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTU4NDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE1ODUwOiAwMCAwMiAwMCAwMCAwOSAwMCAzOSAxNSAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uOS4uLi4uLi4uLgogICAxNTg2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggOUUgMzIgQTQgIC4uLi4uLi4uLkAuLi4uMi4KICAg
MTU4NzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE1ODgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNTg5MDogMDAgMDIgMDAgMDAg
MDkgMDAgM0EgMTUgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLjouLi4uLi4uLi4KICAg
MTU4QTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDlFIDMyIEE0ICAu
Li4uLi4uLi5ALi4uLjIuCiAgIDE1OEIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNThDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTU4RDA6IDAwIDAyIDAwIDAwIDA5IDAwIDNCIDE1IDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi47Li4uLi4uLi4uCiAgIDE1OEUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA5QiAzMiBBNCAgLi4uLi4uLi4uQC4uLi4yLgogICAxNThGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTU5MDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE1OTEwOiAwMCAwMiAwMCAwMCAwOSAwMCAzQyAxNSAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uPC4uLi4uLi4uLgogICAxNTkyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggOUQgMzIgQTQgIC4uLi4uLi4uLkAuLi4uMi4KICAg
MTU5MzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE1OTQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNTk1MDogMDAgMDIgMDAgMDAg
MDkgMDAgM0QgMTUgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLj0uLi4uLi4uLi4KICAg
MTU5NjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDlDIDMyIEE0ICAu
Li4uLi4uLi5ALi4uLjIuCiAgIDE1OTcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNTk4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTU5OTA6IDAwIDAyIDAwIDAwIDA5IDAwIDNFIDE1IDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4+Li4uLi4uLi4uCiAgIDE1OUEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA5QyAzMiBBNCAgLi4uLi4uLi4uQC4uLi4yLgogICAxNTlCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTU5QzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE1OUQwOiAwMCAwMiAwMCAwMCAwOSAwMCAzRiAxNSAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uPy4uLi4uLi4uLgogICAxNTlFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggOUQgMzIgQTQgIC4uLi4uLi4uLkAuLi4uMi4KICAg
MTU5RjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE1QTAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNUExMDogMDAgMDIgMDAgMDAg
MDkgMDAgNDAgMTUgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLkAuLi4uLi4uLi4KICAg
MTVBMjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDkwIDMyIEE0ICAu
Li4uLi4uLi5ALi4uLjIuCiAgIDE1QTMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNUE0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTVBNTA6IDAwIDAyIDAwIDAwIDA5IDAwIDQxIDE1IDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5BLi4uLi4uLi4uCiAgIDE1QTYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA5QSAzMiBBNCAgLi4uLi4uLi4uQC4uLi4yLgogICAxNUE3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTVBODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE1QTkwOiAwMCAwMiAwMCAwMCAwOSAwMCA0MiAxNSAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uQi4uLi4uLi4uLgogICAxNUFBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggOUEgMzIgQTQgIC4uLi4uLi4uLkAuLi4uMi4KICAg
MTVBQjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE1QUMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNUFEMDogMDAgMDIgMDAgMDAg
MDkgMDAgNDMgMTUgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLkMuLi4uLi4uLi4KICAg
MTVBRTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDk3IDMyIEE0ICAu
Li4uLi4uLi5ALi4uLjIuCiAgIDE1QUYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNUIwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTVCMTA6IDAwIDAyIDAwIDAwIDA5IDAwIDQ0IDE1IDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5ELi4uLi4uLi4uCiAgIDE1QjIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA5OSAzMiBBNCAgLi4uLi4uLi4uQC4uLi4yLgogICAxNUIzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTVCNDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE1QjUwOiAwMCAwMiAwMCAwMCAwOSAwMCA0NSAxNSAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uRS4uLi4uLi4uLgogICAxNUI2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggOTggMzIgQTQgIC4uLi4uLi4uLkAuLi4uMi4KICAg
MTVCNzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE1QjgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNUI5MDogMDAgMDIgMDAgMDAg
MDkgMDAgNDYgMTUgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLkYuLi4uLi4uLi4KICAg
MTVCQTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDk4IDMyIEE0ICAu
Li4uLi4uLi5ALi4uLjIuCiAgIDE1QkIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNUJDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTVCRDA6IDAwIDAyIDAwIDAwIDA5IDAwIDQ3IDE1IDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5HLi4uLi4uLi4uCiAgIDE1QkUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA5OSAzMiBBNCAgLi4uLi4uLi4uQC4uLi4yLgogICAxNUJGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTVDMDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE1QzEwOiAwMCAwMiAwMCAwMCAwOSAwMCA0OCAxNSAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uSC4uLi4uLi4uLgogICAxNUMyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggOTEgMzIgQTQgIC4uLi4uLi4uLkAuLi4uMi4KICAg
MTVDMzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE1QzQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNUM1MDogMDAgMDIgMDAgMDAg
MDkgMDAgNDkgMTUgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLkkuLi4uLi4uLi4KICAg
MTVDNjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDk3IDMyIEE0ICAu
Li4uLi4uLi5ALi4uLjIuCiAgIDE1QzcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNUM4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTVDOTA6IDAwIDAyIDAwIDAwIDA5IDAwIDRBIDE1IDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5KLi4uLi4uLi4uCiAgIDE1Q0EwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA5NSAzMiBBNCAgLi4uLi4uLi4uQC4uLi4yLgogICAxNUNCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTVDQzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE1Q0QwOiAwMCAwMiAwMCAwMCAwOSAwMCA0QiAxNSAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uSy4uLi4uLi4uLgogICAxNUNFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggOTYgMzIgQTQgIC4uLi4uLi4uLkAuLi4uMi4KICAg
MTVDRjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE1RDAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNUQxMDogMDAgMDIgMDAgMDAg
MDkgMDAgNEMgMTUgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLkwuLi4uLi4uLi4KICAg
MTVEMjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDk2IDMyIEE0ICAu
Li4uLi4uLi5ALi4uLjIuCiAgIDE1RDMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNUQ0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTVENTA6IDAwIDAyIDAwIDAwIDA5IDAwIDREIDE1IDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5NLi4uLi4uLi4uCiAgIDE1RDYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA5MSAzMiBBNCAgLi4uLi4uLi4uQC4uLi4yLgogICAxNUQ3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTVEODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE1RDkwOiAwMCAwMiAwMCAwMCAwOSAwMCA0RSAxNSAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uTi4uLi4uLi4uLgogICAxNURBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggOTQgMzIgQTQgIC4uLi4uLi4uLkAuLi4uMi4KICAg
MTVEQjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE1REMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNUREMDogMDAgMDIgMDAgMDAg
MDkgMDAgNEYgMTUgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLk8uLi4uLi4uLi4KICAg
MTVERTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDk1IDMyIEE0ICAu
Li4uLi4uLi5ALi4uLjIuCiAgIDE1REYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNUUwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTVFMTA6IDAwIDAyIDAwIDAwIDA5IDAwIDUwIDE1IDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5QLi4uLi4uLi4uCiAgIDE1RTIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA5MiAzMiBBNCAgLi4uLi4uLi4uQC4uLi4yLgogICAxNUUzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTVFNDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE1RTUwOiAwMCAwMiAwMCAwMCAwOSAwMCA1MSAxNSAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uUS4uLi4uLi4uLgogICAxNUU2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggOTQgMzIgQTQgIC4uLi4uLi4uLkAuLi4uMi4KICAg
MTVFNzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE1RTgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNUU5MDogMDAgMDIgMDAgMDAg
MDkgMDAgNTIgMTUgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLlIuLi4uLi4uLi4KICAg
MTVFQTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDkyIDMyIEE0ICAu
Li4uLi4uLi5ALi4uLjIuCiAgIDE1RUIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNUVDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTVFRDA6IDAwIDAyIDAwIDAwIDA5IDAwIDUzIDE1IDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5TLi4uLi4uLi4uCiAgIDE1RUUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA5MyAzMiBBNCAgLi4uLi4uLi4uQC4uLi4yLgogICAxNUVGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTVGMDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE1RjEwOiAwMCAwMiAwMCAwMCAwOSAwMCA1NCAxNSAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uVC4uLi4uLi4uLgogICAxNUYyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggOTMgMzIgQTQgIC4uLi4uLi4uLkAuLi4uMi4KICAg
MTVGMzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE1RjQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNUY1MDogMDAgMDIgMDAgMDAg
MDkgMDAgNTUgMTUgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLlUuLi4uLi4uLi4KICAg
MTVGNjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDgwIDMyIEE0ICAu
Li4uLi4uLi5ALi4uLjIuCiAgIDE1RjcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNUY4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTVGOTA6IDAwIDAyIDAwIDAwIDA5IDAwIDU2IDE1IDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5WLi4uLi4uLi4uCiAgIDE1RkEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA4RiAzMiBBNCAgLi4uLi4uLi4uQC4uLi4yLgogICAxNUZCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTVGQzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE1RkQwOiAwMCAwMiAwMCAwMCAwOSAwMCA1NyAxNSAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uVy4uLi4uLi4uLgogICAxNUZFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggOEYgMzIgQTQgIC4uLi4uLi4uLkAuLi4uMi4KICAg
MTVGRjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE2MDAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNjAxMDogMDAgMDIgMDAgMDAg
MDkgMDAgNTggMTUgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLlguLi4uLi4uLi4KICAg
MTYwMjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDhCIDMyIEE0ICAu
Li4uLi4uLi5ALi4uLjIuCiAgIDE2MDMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNjA0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTYwNTA6IDAwIDAyIDAwIDAwIDA5IDAwIDU5IDE1IDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5ZLi4uLi4uLi4uCiAgIDE2MDYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA4RSAzMiBBNCAgLi4uLi4uLi4uQC4uLi4yLgogICAxNjA3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTYwODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE2MDkwOiAwMCAwMiAwMCAwMCAwOSAwMCA1QSAxNSAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uWi4uLi4uLi4uLgogICAxNjBBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggOEUgMzIgQTQgIC4uLi4uLi4uLkAuLi4uMi4KICAg
MTYwQjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE2MEMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNjBEMDogMDAgMDIgMDAgMDAg
MDkgMDAgNUIgMTUgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLlsuLi4uLi4uLi4KICAg
MTYwRTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDhCIDMyIEE0ICAu
Li4uLi4uLi5ALi4uLjIuCiAgIDE2MEYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNjEwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTYxMTA6IDAwIDAyIDAwIDAwIDA5IDAwIDVDIDE1IDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5cLi4uLi4uLi4uCiAgIDE2MTIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA4RCAzMiBBNCAgLi4uLi4uLi4uQC4uLi4yLgogICAxNjEzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTYxNDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE2MTUwOiAwMCAwMiAwMCAwMCAwOSAwMCA1RCAxNSAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uXS4uLi4uLi4uLgogICAxNjE2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggOEMgMzIgQTQgIC4uLi4uLi4uLkAuLi4uMi4KICAg
MTYxNzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE2MTgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNjE5MDogMDAgMDIgMDAgMDAg
MDkgMDAgNUUgMTUgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLl4uLi4uLi4uLi4KICAg
MTYxQTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDhDIDMyIEE0ICAu
Li4uLi4uLi5ALi4uLjIuCiAgIDE2MUIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNjFDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTYxRDA6IDAwIDAyIDAwIDAwIDA5IDAwIDVGIDE1IDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5fLi4uLi4uLi4uCiAgIDE2MUUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA4RCAzMiBBNCAgLi4uLi4uLi4uQC4uLi4yLgogICAxNjFGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTYyMDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE2MjEwOiAwMCAwMiAwMCAwMCAwOSAwMCA2MCAxNSAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uYC4uLi4uLi4uLgogICAxNjIyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggODAgMzIgQTQgIC4uLi4uLi4uLkAuLi4uMi4KICAg
MTYyMzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE2MjQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNjI1MDogMDAgMDIgMDAgMDAg
MDkgMDAgNjEgMTUgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLmEuLi4uLi4uLi4KICAg
MTYyNjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDhBIDMyIEE0ICAu
Li4uLi4uLi5ALi4uLjIuCiAgIDE2MjcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNjI4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTYyOTA6IDAwIDAyIDAwIDAwIDA5IDAwIDYyIDE1IDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5iLi4uLi4uLi4uCiAgIDE2MkEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA4QSAzMiBBNCAgLi4uLi4uLi4uQC4uLi4yLgogICAxNjJCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTYyQzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE2MkQwOiAwMCAwMiAwMCAwMCAwOSAwMCA2MyAxNSAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uYy4uLi4uLi4uLgogICAxNjJFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggODcgMzIgQTQgIC4uLi4uLi4uLkAuLi4uMi4KICAg
MTYyRjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE2MzAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNjMxMDogMDAgMDIgMDAgMDAg
MDkgMDAgNjQgMTUgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLmQuLi4uLi4uLi4KICAg
MTYzMjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDg5IDMyIEE0ICAu
Li4uLi4uLi5ALi4uLjIuCiAgIDE2MzMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNjM0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTYzNTA6IDAwIDAyIDAwIDAwIDA5IDAwIDY1IDE1IDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5lLi4uLi4uLi4uCiAgIDE2MzYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA4OCAzMiBBNCAgLi4uLi4uLi4uQC4uLi4yLgogICAxNjM3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTYzODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE2MzkwOiAwMCAwMiAwMCAwMCAwOSAwMCA2NiAxNSAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uZi4uLi4uLi4uLgogICAxNjNBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggODggMzIgQTQgIC4uLi4uLi4uLkAuLi4uMi4KICAg
MTYzQjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE2M0MwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNjNEMDogMDAgMDIgMDAgMDAg
MDkgMDAgNjcgMTUgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLmcuLi4uLi4uLi4KICAg
MTYzRTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDg5IDMyIEE0ICAu
Li4uLi4uLi5ALi4uLjIuCiAgIDE2M0YwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNjQwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTY0MTA6IDAwIDAyIDAwIDAwIDA5IDAwIDY4IDE1IDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5oLi4uLi4uLi4uCiAgIDE2NDIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA4MSAzMiBBNCAgLi4uLi4uLi4uQC4uLi4yLgogICAxNjQzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTY0NDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE2NDUwOiAwMCAwMiAwMCAwMCAwOSAwMCA2OSAxNSAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uaS4uLi4uLi4uLgogICAxNjQ2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggODcgMzIgQTQgIC4uLi4uLi4uLkAuLi4uMi4KICAg
MTY0NzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE2NDgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNjQ5MDogMDAgMDIgMDAgMDAg
MDkgMDAgNkEgMTUgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLmouLi4uLi4uLi4KICAg
MTY0QTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDg1IDMyIEE0ICAu
Li4uLi4uLi5ALi4uLjIuCiAgIDE2NEIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNjRDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTY0RDA6IDAwIDAyIDAwIDAwIDA5IDAwIDZCIDE1IDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5rLi4uLi4uLi4uCiAgIDE2NEUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA4NiAzMiBBNCAgLi4uLi4uLi4uQC4uLi4yLgogICAxNjRGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTY1MDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE2NTEwOiAwMCAwMiAwMCAwMCAwOSAwMCA2QyAxNSAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4ubC4uLi4uLi4uLgogICAxNjUyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggODYgMzIgQTQgIC4uLi4uLi4uLkAuLi4uMi4KICAg
MTY1MzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE2NTQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNjU1MDogMDAgMDIgMDAgMDAg
MDkgMDAgNkQgMTUgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLm0uLi4uLi4uLi4KICAg
MTY1NjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDgxIDMyIEE0ICAu
Li4uLi4uLi5ALi4uLjIuCiAgIDE2NTcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNjU4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTY1OTA6IDAwIDAyIDAwIDAwIDA5IDAwIDZFIDE1IDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5uLi4uLi4uLi4uCiAgIDE2NUEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA4NCAzMiBBNCAgLi4uLi4uLi4uQC4uLi4yLgogICAxNjVCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTY1QzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE2NUQwOiAwMCAwMiAwMCAwMCAwOSAwMCA2RiAxNSAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uby4uLi4uLi4uLgogICAxNjVFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggODUgMzIgQTQgIC4uLi4uLi4uLkAuLi4uMi4KICAg
MTY1RjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE2NjAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNjYxMDogMDAgMDIgMDAgMDAg
MDkgMDAgNzAgMTUgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLnAuLi4uLi4uLi4KICAg
MTY2MjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDgyIDMyIEE0ICAu
Li4uLi4uLi5ALi4uLjIuCiAgIDE2NjMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNjY0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTY2NTA6IDAwIDAyIDAwIDAwIDA5IDAwIDcxIDE1IDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5xLi4uLi4uLi4uCiAgIDE2NjYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA4NCAzMiBBNCAgLi4uLi4uLi4uQC4uLi4yLgogICAxNjY3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTY2ODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE2NjkwOiAwMCAwMiAwMCAwMCAwOSAwMCA3MiAxNSAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uci4uLi4uLi4uLgogICAxNjZBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggODIgMzIgQTQgIC4uLi4uLi4uLkAuLi4uMi4KICAg
MTY2QjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE2NkMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNjZEMDogMDAgMDIgMDAgMDAg
MDkgMDAgNzMgMTUgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLnMuLi4uLi4uLi4KICAg
MTY2RTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDgzIDMyIEE0ICAu
Li4uLi4uLi5ALi4uLjIuCiAgIDE2NkYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNjcwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTY3MTA6IDAwIDAyIDAwIDAwIDA5IDAwIDc0IDE1IDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi50Li4uLi4uLi4uCiAgIDE2NzIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA4MyAzMiBBNCAgLi4uLi4uLi4uQC4uLi4yLgogICAxNjczMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTY3NDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE2NzUwOiAwMCAwMiAwMCAwMCAwOSAwMCA3NSAxNSAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4udS4uLi4uLi4uLgogICAxNjc2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggNzAgMzIgQTQgIC4uLi4uLi4uLkAuLi5wMi4KICAg
MTY3NzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE2NzgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNjc5MDogMDAgMDIgMDAgMDAg
MDkgMDAgNzYgMTUgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLnYuLi4uLi4uLi4KICAg
MTY3QTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDdGIDMyIEE0ICAu
Li4uLi4uLi5ALi4uLjIuCiAgIDE2N0IwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNjdDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTY3RDA6IDAwIDAyIDAwIDAwIDA5IDAwIDc3IDE1IDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi53Li4uLi4uLi4uCiAgIDE2N0UwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA3RiAzMiBBNCAgLi4uLi4uLi4uQC4uLi4yLgogICAxNjdGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTY4MDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE2ODEwOiAwMCAwMiAwMCAwMCAwOSAwMCA3OCAxNSAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4ueC4uLi4uLi4uLgogICAxNjgyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggN0IgMzIgQTQgIC4uLi4uLi4uLkAuLi57Mi4KICAg
MTY4MzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE2ODQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNjg1MDogMDAgMDIgMDAgMDAg
MDkgMDAgNzkgMTUgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLnkuLi4uLi4uLi4KICAg
MTY4NjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDdFIDMyIEE0ICAu
Li4uLi4uLi5ALi4ufjIuCiAgIDE2ODcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNjg4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTY4OTA6IDAwIDAyIDAwIDAwIDA5IDAwIDdBIDE1IDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi56Li4uLi4uLi4uCiAgIDE2OEEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA3RSAzMiBBNCAgLi4uLi4uLi4uQC4uLn4yLgogICAxNjhCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTY4QzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE2OEQwOiAwMCAwMiAwMCAwMCAwOSAwMCA3QiAxNSAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uey4uLi4uLi4uLgogICAxNjhFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggN0IgMzIgQTQgIC4uLi4uLi4uLkAuLi57Mi4KICAg
MTY4RjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE2OTAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNjkxMDogMDAgMDIgMDAgMDAg
MDkgMDAgN0MgMTUgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLnwuLi4uLi4uLi4KICAg
MTY5MjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDdEIDMyIEE0ICAu
Li4uLi4uLi5ALi4ufTIuCiAgIDE2OTMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNjk0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTY5NTA6IDAwIDAyIDAwIDAwIDA5IDAwIDdEIDE1IDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi59Li4uLi4uLi4uCiAgIDE2OTYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA3QyAzMiBBNCAgLi4uLi4uLi4uQC4uLnwyLgogICAxNjk3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTY5ODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE2OTkwOiAwMCAwMiAwMCAwMCAwOSAwMCA3RSAxNSAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4ufi4uLi4uLi4uLgogICAxNjlBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggN0MgMzIgQTQgIC4uLi4uLi4uLkAuLi58Mi4KICAg
MTY5QjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE2OUMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNjlEMDogMDAgMDIgMDAgMDAg
MDkgMDAgN0YgMTUgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTY5RTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDdEIDMyIEE0ICAu
Li4uLi4uLi5ALi4ufTIuCiAgIDE2OUYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNkEwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTZBMTA6IDAwIDAyIDAwIDAwIDA5IDAwIDgwIDE1IDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE2QTIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA3MCAzMiBBNCAgLi4uLi4uLi4uQC4uLnAyLgogICAxNkEzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTZBNDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE2QTUwOiAwMCAwMiAwMCAwMCAwOSAwMCA4MSAxNSAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNkE2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggN0EgMzIgQTQgIC4uLi4uLi4uLkAuLi56Mi4KICAg
MTZBNzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE2QTgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNkE5MDogMDAgMDIgMDAgMDAg
MDkgMDAgODIgMTUgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTZBQTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDdBIDMyIEE0ICAu
Li4uLi4uLi5ALi4uejIuCiAgIDE2QUIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNkFDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTZBRDA6IDAwIDAyIDAwIDAwIDA5IDAwIDgzIDE1IDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE2QUUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA3NyAzMiBBNCAgLi4uLi4uLi4uQC4uLncyLgogICAxNkFGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTZCMDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE2QjEwOiAwMCAwMiAwMCAwMCAwOSAwMCA4NCAxNSAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNkIyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggNzkgMzIgQTQgIC4uLi4uLi4uLkAuLi55Mi4KICAg
MTZCMzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE2QjQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNkI1MDogMDAgMDIgMDAgMDAg
MDkgMDAgODUgMTUgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTZCNjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDc4IDMyIEE0ICAu
Li4uLi4uLi5ALi4ueDIuCiAgIDE2QjcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNkI4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTZCOTA6IDAwIDAyIDAwIDAwIDA5IDAwIDg2IDE1IDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE2QkEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA3OCAzMiBBNCAgLi4uLi4uLi4uQC4uLngyLgogICAxNkJCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTZCQzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE2QkQwOiAwMCAwMiAwMCAwMCAwOSAwMCA4NyAxNSAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNkJFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggNzkgMzIgQTQgIC4uLi4uLi4uLkAuLi55Mi4KICAg
MTZCRjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE2QzAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNkMxMDogMDAgMDIgMDAgMDAg
MDkgMDAgODggMTUgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTZDMjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDcxIDMyIEE0ICAu
Li4uLi4uLi5ALi4ucTIuCiAgIDE2QzMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNkM0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTZDNTA6IDAwIDAyIDAwIDAwIDA5IDAwIDg5IDE1IDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE2QzYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA3NyAzMiBBNCAgLi4uLi4uLi4uQC4uLncyLgogICAxNkM3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTZDODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE2QzkwOiAwMCAwMiAwMCAwMCAwOSAwMCA4QSAxNSAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNkNBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggNzUgMzIgQTQgIC4uLi4uLi4uLkAuLi51Mi4KICAg
MTZDQjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE2Q0MwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNkNEMDogMDAgMDIgMDAgMDAg
MDkgMDAgOEIgMTUgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTZDRTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDc2IDMyIEE0ICAu
Li4uLi4uLi5ALi4udjIuCiAgIDE2Q0YwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNkQwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTZEMTA6IDAwIDAyIDAwIDAwIDA5IDAwIDhDIDE1IDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE2RDIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA3NiAzMiBBNCAgLi4uLi4uLi4uQC4uLnYyLgogICAxNkQzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTZENDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE2RDUwOiAwMCAwMiAwMCAwMCAwOSAwMCA4RCAxNSAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNkQ2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggNzEgMzIgQTQgIC4uLi4uLi4uLkAuLi5xMi4KICAg
MTZENzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE2RDgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNkQ5MDogMDAgMDIgMDAgMDAg
MDkgMDAgOEUgMTUgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTZEQTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDc0IDMyIEE0ICAu
Li4uLi4uLi5ALi4udDIuCiAgIDE2REIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNkRDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTZERDA6IDAwIDAyIDAwIDAwIDA5IDAwIDhGIDE1IDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE2REUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA3NSAzMiBBNCAgLi4uLi4uLi4uQC4uLnUyLgogICAxNkRGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTZFMDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE2RTEwOiAwMCAwMiAwMCAwMCAwOSAwMCA5MCAxNSAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNkUyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggNzIgMzIgQTQgIC4uLi4uLi4uLkAuLi5yMi4KICAg
MTZFMzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE2RTQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNkU1MDogMDAgMDIgMDAgMDAg
MDkgMDAgOTEgMTUgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTZFNjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDc0IDMyIEE0ICAu
Li4uLi4uLi5ALi4udDIuCiAgIDE2RTcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNkU4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTZFOTA6IDAwIDAyIDAwIDAwIDA5IDAwIDkyIDE1IDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE2RUEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA3MiAzMiBBNCAgLi4uLi4uLi4uQC4uLnIyLgogICAxNkVCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTZFQzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE2RUQwOiAwMCAwMiAwMCAwMCAwOSAwMCA5MyAxNSAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNkVFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggNzMgMzIgQTQgIC4uLi4uLi4uLkAuLi5zMi4KICAg
MTZFRjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE2RjAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNkYxMDogMDAgMDIgMDAgMDAg
MDkgMDAgOTQgMTUgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTZGMjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDczIDMyIEE0ICAu
Li4uLi4uLi5ALi4uczIuCiAgIDE2RjMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNkY0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTZGNTA6IDAwIDAyIDAwIDAwIDA5IDAwIDk1IDE1IDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE2RjYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA2MCAzMiBBNCAgLi4uLi4uLi4uQC4uLmAyLgogICAxNkY3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTZGODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE2RjkwOiAwMCAwMiAwMCAwMCAwOSAwMCA5NiAxNSAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNkZBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggNkYgMzIgQTQgIC4uLi4uLi4uLkAuLi5vMi4KICAg
MTZGQjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE2RkMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNkZEMDogMDAgMDIgMDAgMDAg
MDkgMDAgOTcgMTUgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTZGRTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDZGIDMyIEE0ICAu
Li4uLi4uLi5ALi4ubzIuCiAgIDE2RkYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNzAwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTcwMTA6IDAwIDAyIDAwIDAwIDA5IDAwIDk4IDE1IDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE3MDIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA2QiAzMiBBNCAgLi4uLi4uLi4uQC4uLmsyLgogICAxNzAzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTcwNDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE3MDUwOiAwMCAwMiAwMCAwMCAwOSAwMCA5OSAxNSAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNzA2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggNkUgMzIgQTQgIC4uLi4uLi4uLkAuLi5uMi4KICAg
MTcwNzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE3MDgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNzA5MDogMDAgMDIgMDAgMDAg
MDkgMDAgOUEgMTUgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTcwQTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDZFIDMyIEE0ICAu
Li4uLi4uLi5ALi4ubjIuCiAgIDE3MEIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNzBDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTcwRDA6IDAwIDAyIDAwIDAwIDA5IDAwIDlCIDE1IDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE3MEUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA2QiAzMiBBNCAgLi4uLi4uLi4uQC4uLmsyLgogICAxNzBGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTcxMDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE3MTEwOiAwMCAwMiAwMCAwMCAwOSAwMCA5QyAxNSAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNzEyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggNkQgMzIgQTQgIC4uLi4uLi4uLkAuLi5tMi4KICAg
MTcxMzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE3MTQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNzE1MDogMDAgMDIgMDAgMDAg
MDkgMDAgOUQgMTUgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTcxNjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDZDIDMyIEE0ICAu
Li4uLi4uLi5ALi4ubDIuCiAgIDE3MTcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNzE4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTcxOTA6IDAwIDAyIDAwIDAwIDA5IDAwIDlFIDE1IDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE3MUEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA2QyAzMiBBNCAgLi4uLi4uLi4uQC4uLmwyLgogICAxNzFCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTcxQzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE3MUQwOiAwMCAwMiAwMCAwMCAwOSAwMCA5RiAxNSAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNzFFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggNkQgMzIgQTQgIC4uLi4uLi4uLkAuLi5tMi4KICAg
MTcxRjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE3MjAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNzIxMDogMDAgMDIgMDAgMDAg
MDkgMDAgQTAgMTUgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTcyMjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDYwIDMyIEE0ICAu
Li4uLi4uLi5ALi4uYDIuCiAgIDE3MjMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNzI0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTcyNTA6IDAwIDAyIDAwIDAwIDA5IDAwIEExIDE1IDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE3MjYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA2QSAzMiBBNCAgLi4uLi4uLi4uQC4uLmoyLgogICAxNzI3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTcyODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE3MjkwOiAwMCAwMiAwMCAwMCAwOSAwMCBBMiAxNSAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNzJBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggNkEgMzIgQTQgIC4uLi4uLi4uLkAuLi5qMi4KICAg
MTcyQjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE3MkMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNzJEMDogMDAgMDIgMDAgMDAg
MDkgMDAgQTMgMTUgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTcyRTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDY3IDMyIEE0ICAu
Li4uLi4uLi5ALi4uZzIuCiAgIDE3MkYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNzMwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTczMTA6IDAwIDAyIDAwIDAwIDA5IDAwIEE0IDE1IDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE3MzIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA2OSAzMiBBNCAgLi4uLi4uLi4uQC4uLmkyLgogICAxNzMzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTczNDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE3MzUwOiAwMCAwMiAwMCAwMCAwOSAwMCBBNSAxNSAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNzM2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggNjggMzIgQTQgIC4uLi4uLi4uLkAuLi5oMi4KICAg
MTczNzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE3MzgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNzM5MDogMDAgMDIgMDAgMDAg
MDkgMDAgQTYgMTUgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTczQTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDY4IDMyIEE0ICAu
Li4uLi4uLi5ALi4uaDIuCiAgIDE3M0IwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNzNDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTczRDA6IDAwIDAyIDAwIDAwIDA5IDAwIEE3IDE1IDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE3M0UwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA2OSAzMiBBNCAgLi4uLi4uLi4uQC4uLmkyLgogICAxNzNGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTc0MDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE3NDEwOiAwMCAwMiAwMCAwMCAwOSAwMCBBOCAxNSAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNzQyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggNjEgMzIgQTQgIC4uLi4uLi4uLkAuLi5hMi4KICAg
MTc0MzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE3NDQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNzQ1MDogMDAgMDIgMDAgMDAg
MDkgMDAgQTkgMTUgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTc0NjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDY3IDMyIEE0ICAu
Li4uLi4uLi5ALi4uZzIuCiAgIDE3NDcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNzQ4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTc0OTA6IDAwIDAyIDAwIDAwIDA5IDAwIEFBIDE1IDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE3NEEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA2NSAzMiBBNCAgLi4uLi4uLi4uQC4uLmUyLgogICAxNzRCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTc0QzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE3NEQwOiAwMCAwMiAwMCAwMCAwOSAwMCBBQiAxNSAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNzRFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggNjYgMzIgQTQgIC4uLi4uLi4uLkAuLi5mMi4KICAg
MTc0RjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE3NTAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNzUxMDogMDAgMDIgMDAgMDAg
MDkgMDAgQUMgMTUgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTc1MjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDY2IDMyIEE0ICAu
Li4uLi4uLi5ALi4uZjIuCiAgIDE3NTMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNzU0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTc1NTA6IDAwIDAyIDAwIDAwIDA5IDAwIEFEIDE1IDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE3NTYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA2MSAzMiBBNCAgLi4uLi4uLi4uQC4uLmEyLgogICAxNzU3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTc1ODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE3NTkwOiAwMCAwMiAwMCAwMCAwOSAwMCBBRSAxNSAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNzVBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggNjQgMzIgQTQgIC4uLi4uLi4uLkAuLi5kMi4KICAg
MTc1QjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE3NUMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNzVEMDogMDAgMDIgMDAgMDAg
MDkgMDAgQUYgMTUgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTc1RTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDY1IDMyIEE0ICAu
Li4uLi4uLi5ALi4uZTIuCiAgIDE3NUYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNzYwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTc2MTA6IDAwIDAyIDAwIDAwIDA5IDAwIEIwIDE1IDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE3NjIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA2MiAzMiBBNCAgLi4uLi4uLi4uQC4uLmIyLgogICAxNzYzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTc2NDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE3NjUwOiAwMCAwMiAwMCAwMCAwOSAwMCBCMSAxNSAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNzY2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggNjQgMzIgQTQgIC4uLi4uLi4uLkAuLi5kMi4KICAg
MTc2NzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE3NjgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNzY5MDogMDAgMDIgMDAgMDAg
MDkgMDAgQjIgMTUgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTc2QTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDYyIDMyIEE0ICAu
Li4uLi4uLi5ALi4uYjIuCiAgIDE3NkIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNzZDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTc2RDA6IDAwIDAyIDAwIDAwIDA5IDAwIEIzIDE1IDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE3NkUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA2MyAzMiBBNCAgLi4uLi4uLi4uQC4uLmMyLgogICAxNzZGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTc3MDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE3NzEwOiAwMCAwMiAwMCAwMCAwOSAwMCBCNCAxNSAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNzcyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggNjMgMzIgQTQgIC4uLi4uLi4uLkAuLi5jMi4KICAg
MTc3MzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE3NzQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNzc1MDogMDAgMDIgMDAgMDAg
MDkgMDAgQjUgMTUgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTc3NjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDUwIDMyIEE0ICAu
Li4uLi4uLi5ALi4uUDIuCiAgIDE3NzcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNzc4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTc3OTA6IDAwIDAyIDAwIDAwIDA5IDAwIEI2IDE1IDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE3N0EwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA1RiAzMiBBNCAgLi4uLi4uLi4uQC4uLl8yLgogICAxNzdCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTc3QzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE3N0QwOiAwMCAwMiAwMCAwMCAwOSAwMCBCNyAxNSAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNzdFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggNUYgMzIgQTQgIC4uLi4uLi4uLkAuLi5fMi4KICAg
MTc3RjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE3ODAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNzgxMDogMDAgMDIgMDAgMDAg
MDkgMDAgQjggMTUgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTc4MjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDVCIDMyIEE0ICAu
Li4uLi4uLi5ALi4uWzIuCiAgIDE3ODMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNzg0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTc4NTA6IDAwIDAyIDAwIDAwIDA5IDAwIEI5IDE1IDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE3ODYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA1RSAzMiBBNCAgLi4uLi4uLi4uQC4uLl4yLgogICAxNzg3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTc4ODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE3ODkwOiAwMCAwMiAwMCAwMCAwOSAwMCBCQSAxNSAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNzhBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggNUUgMzIgQTQgIC4uLi4uLi4uLkAuLi5eMi4KICAg
MTc4QjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE3OEMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNzhEMDogMDAgMDIgMDAgMDAg
MDkgMDAgQkIgMTUgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTc4RTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDVCIDMyIEE0ICAu
Li4uLi4uLi5ALi4uWzIuCiAgIDE3OEYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNzkwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTc5MTA6IDAwIDAyIDAwIDAwIDA5IDAwIEJDIDE1IDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE3OTIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA1RCAzMiBBNCAgLi4uLi4uLi4uQC4uLl0yLgogICAxNzkzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTc5NDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE3OTUwOiAwMCAwMiAwMCAwMCAwOSAwMCBCRCAxNSAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNzk2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggNUMgMzIgQTQgIC4uLi4uLi4uLkAuLi5cMi4KICAg
MTc5NzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE3OTgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNzk5MDogMDAgMDIgMDAgMDAg
MDkgMDAgQkUgMTUgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTc5QTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDVDIDMyIEE0ICAu
Li4uLi4uLi5ALi4uXDIuCiAgIDE3OUIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxNzlDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTc5RDA6IDAwIDAyIDAwIDAwIDA5IDAwIEJGIDE1IDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE3OUUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA1RCAzMiBBNCAgLi4uLi4uLi4uQC4uLl0yLgogICAxNzlGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTdBMDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE3QTEwOiAwMCAwMiAwMCAwMCAwOSAwMCBDMCAxNSAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxN0EyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggNTAgMzIgQTQgIC4uLi4uLi4uLkAuLi5QMi4KICAg
MTdBMzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE3QTQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxN0E1MDogMDAgMDIgMDAgMDAg
MDkgMDAgQzEgMTUgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTdBNjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDVBIDMyIEE0ICAu
Li4uLi4uLi5ALi4uWjIuCiAgIDE3QTcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxN0E4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTdBOTA6IDAwIDAyIDAwIDAwIDA5IDAwIEMyIDE1IDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE3QUEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA1QSAzMiBBNCAgLi4uLi4uLi4uQC4uLloyLgogICAxN0FCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTdBQzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE3QUQwOiAwMCAwMiAwMCAwMCAwOSAwMCBDMyAxNSAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxN0FFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggNTcgMzIgQTQgIC4uLi4uLi4uLkAuLi5XMi4KICAg
MTdBRjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE3QjAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxN0IxMDogMDAgMDIgMDAgMDAg
MDkgMDAgQzQgMTUgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTdCMjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDU5IDMyIEE0ICAu
Li4uLi4uLi5ALi4uWTIuCiAgIDE3QjMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxN0I0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTdCNTA6IDAwIDAyIDAwIDAwIDA5IDAwIEM1IDE1IDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE3QjYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA1OCAzMiBBNCAgLi4uLi4uLi4uQC4uLlgyLgogICAxN0I3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTdCODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE3QjkwOiAwMCAwMiAwMCAwMCAwOSAwMCBDNiAxNSAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxN0JBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggNTggMzIgQTQgIC4uLi4uLi4uLkAuLi5YMi4KICAg
MTdCQjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE3QkMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxN0JEMDogMDAgMDIgMDAgMDAg
MDkgMDAgQzcgMTUgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTdCRTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDU5IDMyIEE0ICAu
Li4uLi4uLi5ALi4uWTIuCiAgIDE3QkYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxN0MwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTdDMTA6IDAwIDAyIDAwIDAwIDA5IDAwIEM4IDE1IDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE3QzIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA1MSAzMiBBNCAgLi4uLi4uLi4uQC4uLlEyLgogICAxN0MzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTdDNDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE3QzUwOiAwMCAwMiAwMCAwMCAwOSAwMCBDOSAxNSAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxN0M2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggNTcgMzIgQTQgIC4uLi4uLi4uLkAuLi5XMi4KICAg
MTdDNzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE3QzgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxN0M5MDogMDAgMDIgMDAgMDAg
MDkgMDAgQ0EgMTUgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTdDQTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDU1IDMyIEE0ICAu
Li4uLi4uLi5ALi4uVTIuCiAgIDE3Q0IwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxN0NDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTdDRDA6IDAwIDAyIDAwIDAwIDA5IDAwIENCIDE1IDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE3Q0UwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA1NiAzMiBBNCAgLi4uLi4uLi4uQC4uLlYyLgogICAxN0NGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTdEMDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE3RDEwOiAwMCAwMiAwMCAwMCAwOSAwMCBDQyAxNSAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxN0QyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggNTYgMzIgQTQgIC4uLi4uLi4uLkAuLi5WMi4KICAg
MTdEMzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE3RDQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxN0Q1MDogMDAgMDIgMDAgMDAg
MDkgMDAgQ0QgMTUgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTdENjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDUxIDMyIEE0ICAu
Li4uLi4uLi5ALi4uUTIuCiAgIDE3RDcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxN0Q4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTdEOTA6IDAwIDAyIDAwIDAwIDA5IDAwIENFIDE1IDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE3REEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA1NCAzMiBBNCAgLi4uLi4uLi4uQC4uLlQyLgogICAxN0RCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTdEQzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE3REQwOiAwMCAwMiAwMCAwMCAwOSAwMCBDRiAxNSAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxN0RFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggNTUgMzIgQTQgIC4uLi4uLi4uLkAuLi5VMi4KICAg
MTdERjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE3RTAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxN0UxMDogMDAgMDIgMDAgMDAg
MDkgMDAgRDAgMTUgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTdFMjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDUyIDMyIEE0ICAu
Li4uLi4uLi5ALi4uUjIuCiAgIDE3RTMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxN0U0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTdFNTA6IDAwIDAyIDAwIDAwIDA5IDAwIEQxIDE1IDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE3RTYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA1NCAzMiBBNCAgLi4uLi4uLi4uQC4uLlQyLgogICAxN0U3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTdFODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE3RTkwOiAwMCAwMiAwMCAwMCAwOSAwMCBEMiAxNSAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxN0VBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggNTIgMzIgQTQgIC4uLi4uLi4uLkAuLi5SMi4KICAg
MTdFQjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE3RUMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxN0VEMDogMDAgMDIgMDAgMDAg
MDkgMDAgRDMgMTUgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTdFRTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDUzIDMyIEE0ICAu
Li4uLi4uLi5ALi4uUzIuCiAgIDE3RUYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxN0YwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTdGMTA6IDAwIDAyIDAwIDAwIDA5IDAwIEQ0IDE1IDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE3RjIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA1MyAzMiBBNCAgLi4uLi4uLi4uQC4uLlMyLgogICAxN0YzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTdGNDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE3RjUwOiAwMCAwMiAwMCAwMCAwOSAwMCBENSAxNSAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxN0Y2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggNDAgMzIgQTQgIC4uLi4uLi4uLkAuLi5AMi4KICAg
MTdGNzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE3RjgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxN0Y5MDogMDAgMDIgMDAgMDAg
MDkgMDAgRDYgMTUgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTdGQTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDRGIDMyIEE0ICAu
Li4uLi4uLi5ALi4uTzIuCiAgIDE3RkIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxN0ZDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTdGRDA6IDAwIDAyIDAwIDAwIDA5IDAwIEQ3IDE1IDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE3RkUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA0RiAzMiBBNCAgLi4uLi4uLi4uQC4uLk8yLgogICAxN0ZGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTgwMDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE4MDEwOiAwMCAwMiAwMCAwMCAwOSAwMCBEOCAxNSAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxODAyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggNEIgMzIgQTQgIC4uLi4uLi4uLkAuLi5LMi4KICAg
MTgwMzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE4MDQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxODA1MDogMDAgMDIgMDAgMDAg
MDkgMDAgRDkgMTUgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTgwNjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDRFIDMyIEE0ICAu
Li4uLi4uLi5ALi4uTjIuCiAgIDE4MDcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxODA4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTgwOTA6IDAwIDAyIDAwIDAwIDA5IDAwIERBIDE1IDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE4MEEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA0RSAzMiBBNCAgLi4uLi4uLi4uQC4uLk4yLgogICAxODBCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTgwQzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE4MEQwOiAwMCAwMiAwMCAwMCAwOSAwMCBEQiAxNSAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxODBFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggNEIgMzIgQTQgIC4uLi4uLi4uLkAuLi5LMi4KICAg
MTgwRjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE4MTAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxODExMDogMDAgMDIgMDAgMDAg
MDkgMDAgREMgMTUgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTgxMjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDREIDMyIEE0ICAu
Li4uLi4uLi5ALi4uTTIuCiAgIDE4MTMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxODE0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTgxNTA6IDAwIDAyIDAwIDAwIDA5IDAwIEREIDE1IDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE4MTYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA0QyAzMiBBNCAgLi4uLi4uLi4uQC4uLkwyLgogICAxODE3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTgxODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE4MTkwOiAwMCAwMiAwMCAwMCAwOSAwMCBERSAxNSAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxODFBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggNEMgMzIgQTQgIC4uLi4uLi4uLkAuLi5MMi4KICAg
MTgxQjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE4MUMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxODFEMDogMDAgMDIgMDAgMDAg
MDkgMDAgREYgMTUgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTgxRTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDREIDMyIEE0ICAu
Li4uLi4uLi5ALi4uTTIuCiAgIDE4MUYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxODIwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTgyMTA6IDAwIDAyIDAwIDAwIDA5IDAwIEUwIDE1IDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE4MjIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA0MCAzMiBBNCAgLi4uLi4uLi4uQC4uLkAyLgogICAxODIzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTgyNDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE4MjUwOiAwMCAwMiAwMCAwMCAwOSAwMCBFMSAxNSAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxODI2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggNEEgMzIgQTQgIC4uLi4uLi4uLkAuLi5KMi4KICAg
MTgyNzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE4MjgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxODI5MDogMDAgMDIgMDAgMDAg
MDkgMDAgRTIgMTUgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTgyQTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDRBIDMyIEE0ICAu
Li4uLi4uLi5ALi4uSjIuCiAgIDE4MkIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxODJDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTgyRDA6IDAwIDAyIDAwIDAwIDA5IDAwIEUzIDE1IDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE4MkUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA0NyAzMiBBNCAgLi4uLi4uLi4uQC4uLkcyLgogICAxODJGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTgzMDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE4MzEwOiAwMCAwMiAwMCAwMCAwOSAwMCBFNCAxNSAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxODMyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggNDkgMzIgQTQgIC4uLi4uLi4uLkAuLi5JMi4KICAg
MTgzMzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE4MzQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxODM1MDogMDAgMDIgMDAgMDAg
MDkgMDAgRTUgMTUgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTgzNjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDQ4IDMyIEE0ICAu
Li4uLi4uLi5ALi4uSDIuCiAgIDE4MzcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxODM4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTgzOTA6IDAwIDAyIDAwIDAwIDA5IDAwIEU2IDE1IDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE4M0EwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA0OCAzMiBBNCAgLi4uLi4uLi4uQC4uLkgyLgogICAxODNCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTgzQzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE4M0QwOiAwMCAwMiAwMCAwMCAwOSAwMCBFNyAxNSAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxODNFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggNDkgMzIgQTQgIC4uLi4uLi4uLkAuLi5JMi4KICAg
MTgzRjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE4NDAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxODQxMDogMDAgMDIgMDAgMDAg
MDkgMDAgRTggMTUgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTg0MjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDQxIDMyIEE0ICAu
Li4uLi4uLi5ALi4uQTIuCiAgIDE4NDMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxODQ0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTg0NTA6IDAwIDAyIDAwIDAwIDA5IDAwIEU5IDE1IDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE4NDYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA0NyAzMiBBNCAgLi4uLi4uLi4uQC4uLkcyLgogICAxODQ3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTg0ODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE4NDkwOiAwMCAwMiAwMCAwMCAwOSAwMCBFQSAxNSAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxODRBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggNDUgMzIgQTQgIC4uLi4uLi4uLkAuLi5FMi4KICAg
MTg0QjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE4NEMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxODREMDogMDAgMDIgMDAgMDAg
MDkgMDAgRUIgMTUgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTg0RTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDQ2IDMyIEE0ICAu
Li4uLi4uLi5ALi4uRjIuCiAgIDE4NEYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxODUwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTg1MTA6IDAwIDAyIDAwIDAwIDA5IDAwIEVDIDE1IDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE4NTIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA0NiAzMiBBNCAgLi4uLi4uLi4uQC4uLkYyLgogICAxODUzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTg1NDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE4NTUwOiAwMCAwMiAwMCAwMCAwOSAwMCBFRCAxNSAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxODU2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggNDEgMzIgQTQgIC4uLi4uLi4uLkAuLi5BMi4KICAg
MTg1NzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE4NTgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxODU5MDogMDAgMDIgMDAgMDAg
MDkgMDAgRUUgMTUgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTg1QTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDQ0IDMyIEE0ICAu
Li4uLi4uLi5ALi4uRDIuCiAgIDE4NUIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxODVDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTg1RDA6IDAwIDAyIDAwIDAwIDA5IDAwIEVGIDE1IDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE4NUUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA0NSAzMiBBNCAgLi4uLi4uLi4uQC4uLkUyLgogICAxODVGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTg2MDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE4NjEwOiAwMCAwMiAwMCAwMCAwOSAwMCBGMCAxNSAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxODYyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggNDIgMzIgQTQgIC4uLi4uLi4uLkAuLi5CMi4KICAg
MTg2MzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE4NjQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxODY1MDogMDAgMDIgMDAgMDAg
MDkgMDAgRjEgMTUgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTg2NjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDQ0IDMyIEE0ICAu
Li4uLi4uLi5ALi4uRDIuCiAgIDE4NjcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxODY4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTg2OTA6IDAwIDAyIDAwIDAwIDA5IDAwIEYyIDE1IDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE4NkEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA0MiAzMiBBNCAgLi4uLi4uLi4uQC4uLkIyLgogICAxODZCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTg2QzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE4NkQwOiAwMCAwMiAwMCAwMCAwOSAwMCBGMyAxNSAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxODZFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggNDMgMzIgQTQgIC4uLi4uLi4uLkAuLi5DMi4KICAg
MTg2RjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE4NzAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxODcxMDogMDAgMDIgMDAgMDAg
MDkgMDAgRjQgMTUgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTg3MjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDQzIDMyIEE0ICAu
Li4uLi4uLi5ALi4uQzIuCiAgIDE4NzMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxODc0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTg3NTA6IDAwIDAyIDAwIDAwIDA5IDAwIEY1IDE1IDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE4NzYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCAzMCAzMiBBNCAgLi4uLi4uLi4uQC4uLjAyLgogICAxODc3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTg3ODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE4NzkwOiAwMCAwMiAwMCAwMCAwOSAwMCBGNiAxNSAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxODdBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggM0YgMzIgQTQgIC4uLi4uLi4uLkAuLi4/Mi4KICAg
MTg3QjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE4N0MwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxODdEMDogMDAgMDIgMDAgMDAg
MDkgMDAgRjcgMTUgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTg3RTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDNGIDMyIEE0ICAu
Li4uLi4uLi5ALi4uPzIuCiAgIDE4N0YwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxODgwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTg4MTA6IDAwIDAyIDAwIDAwIDA5IDAwIEY4IDE1IDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE4ODIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCAzQiAzMiBBNCAgLi4uLi4uLi4uQC4uLjsyLgogICAxODgzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTg4NDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE4ODUwOiAwMCAwMiAwMCAwMCAwOSAwMCBGOSAxNSAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxODg2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggM0UgMzIgQTQgIC4uLi4uLi4uLkAuLi4+Mi4KICAg
MTg4NzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE4ODgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxODg5MDogMDAgMDIgMDAgMDAg
MDkgMDAgRkEgMTUgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTg4QTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDNFIDMyIEE0ICAu
Li4uLi4uLi5ALi4uPjIuCiAgIDE4OEIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxODhDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTg4RDA6IDAwIDAyIDAwIDAwIDA5IDAwIEZCIDE1IDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE4OEUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCAzQiAzMiBBNCAgLi4uLi4uLi4uQC4uLjsyLgogICAxODhGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTg5MDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE4OTEwOiAwMCAwMiAwMCAwMCAwOSAwMCBGQyAxNSAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxODkyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggM0QgMzIgQTQgIC4uLi4uLi4uLkAuLi49Mi4KICAg
MTg5MzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE4OTQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxODk1MDogMDAgMDIgMDAgMDAg
MDkgMDAgRkQgMTUgMDEgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTg5NjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDNDIDMyIEE0ICAu
Li4uLi4uLi5ALi4uPDIuCiAgIDE4OTcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxODk4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTg5OTA6IDAwIDAyIDAwIDAwIDA5IDAwIEZFIDE1IDAxIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE4OUEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCAzQyAzMiBBNCAgLi4uLi4uLi4uQC4uLjwyLgogICAxODlCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTg5QzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE4OUQwOiAwMCAwMiAwMCAwMCAwOSAwMCBGRiAxNSAwMSAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxODlFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggM0QgMzIgQTQgIC4uLi4uLi4uLkAuLi49Mi4KICAg
MTg5RjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE4QTAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxOEExMDogMDAgMDIgMDAgMDAg
MDkgMDAgMDAgNTAgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5QLi4uLi4uLi4KICAg
MThBMjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDMwIDMyIEE0ICAu
Li4uLi4uLi5ALi4uMDIuCiAgIDE4QTMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxOEE0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MThBNTA6IDAwIDAyIDAwIDAwIDA5IDAwIDAxIDUwIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUC4uLi4uLi4uCiAgIDE4QTYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCAzQSAzMiBBNCAgLi4uLi4uLi4uQC4uLjoyLgogICAxOEE3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MThBODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE4QTkwOiAwMCAwMiAwMCAwMCAwOSAwMCAwMiA1MCAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlAuLi4uLi4uLgogICAxOEFBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggM0EgMzIgQTQgIC4uLi4uLi4uLkAuLi46Mi4KICAg
MThBQjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE4QUMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxOEFEMDogMDAgMDIgMDAgMDAg
MDkgMDAgMDMgNTAgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5QLi4uLi4uLi4KICAg
MThBRTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDM3IDMyIEE0ICAu
Li4uLi4uLi5ALi4uNzIuCiAgIDE4QUYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxOEIwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MThCMTA6IDAwIDAyIDAwIDAwIDA5IDAwIDA0IDUwIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUC4uLi4uLi4uCiAgIDE4QjIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCAzOSAzMiBBNCAgLi4uLi4uLi4uQC4uLjkyLgogICAxOEIzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MThCNDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE4QjUwOiAwMCAwMiAwMCAwMCAwOSAwMCAwNSA1MCAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlAuLi4uLi4uLgogICAxOEI2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggMzggMzIgQTQgIC4uLi4uLi4uLkAuLi44Mi4KICAg
MThCNzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE4QjgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxOEI5MDogMDAgMDIgMDAgMDAg
MDkgMDAgMDYgNTAgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5QLi4uLi4uLi4KICAg
MThCQTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDM4IDMyIEE0ICAu
Li4uLi4uLi5ALi4uODIuCiAgIDE4QkIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxOEJDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MThCRDA6IDAwIDAyIDAwIDAwIDA5IDAwIDA3IDUwIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUC4uLi4uLi4uCiAgIDE4QkUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCAzOSAzMiBBNCAgLi4uLi4uLi4uQC4uLjkyLgogICAxOEJGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MThDMDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE4QzEwOiAwMCAwMiAwMCAwMCAwOSAwMCAwOCA1MCAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlAuLi4uLi4uLgogICAxOEMyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggMzEgMzIgQTQgIC4uLi4uLi4uLkAuLi4xMi4KICAg
MThDMzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE4QzQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxOEM1MDogMDAgMDIgMDAgMDAg
MDkgMDAgMDkgNTAgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5QLi4uLi4uLi4KICAg
MThDNjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDM3IDMyIEE0ICAu
Li4uLi4uLi5ALi4uNzIuCiAgIDE4QzcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxOEM4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MThDOTA6IDAwIDAyIDAwIDAwIDA5IDAwIDBBIDUwIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUC4uLi4uLi4uCiAgIDE4Q0EwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCAzNSAzMiBBNCAgLi4uLi4uLi4uQC4uLjUyLgogICAxOENCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MThDQzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE4Q0QwOiAwMCAwMiAwMCAwMCAwOSAwMCAwQiA1MCAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlAuLi4uLi4uLgogICAxOENFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggMzYgMzIgQTQgIC4uLi4uLi4uLkAuLi42Mi4KICAg
MThDRjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE4RDAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxOEQxMDogMDAgMDIgMDAgMDAg
MDkgMDAgMEMgNTAgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5QLi4uLi4uLi4KICAg
MThEMjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDM2IDMyIEE0ICAu
Li4uLi4uLi5ALi4uNjIuCiAgIDE4RDMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxOEQ0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MThENTA6IDAwIDAyIDAwIDAwIDA5IDAwIDBEIDUwIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUC4uLi4uLi4uCiAgIDE4RDYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCAzMSAzMiBBNCAgLi4uLi4uLi4uQC4uLjEyLgogICAxOEQ3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MThEODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE4RDkwOiAwMCAwMiAwMCAwMCAwOSAwMCAwRSA1MCAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlAuLi4uLi4uLgogICAxOERBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggMzQgMzIgQTQgIC4uLi4uLi4uLkAuLi40Mi4KICAg
MThEQjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE4REMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxOEREMDogMDAgMDIgMDAgMDAg
MDkgMDAgMEYgNTAgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5QLi4uLi4uLi4KICAg
MThERTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDM1IDMyIEE0ICAu
Li4uLi4uLi5ALi4uNTIuCiAgIDE4REYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxOEUwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MThFMTA6IDAwIDAyIDAwIDAwIDA5IDAwIDEwIDUwIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUC4uLi4uLi4uCiAgIDE4RTIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCAzMiAzMiBBNCAgLi4uLi4uLi4uQC4uLjIyLgogICAxOEUzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MThFNDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE4RTUwOiAwMCAwMiAwMCAwMCAwOSAwMCAxMSA1MCAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlAuLi4uLi4uLgogICAxOEU2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggMzQgMzIgQTQgIC4uLi4uLi4uLkAuLi40Mi4KICAg
MThFNzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE4RTgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxOEU5MDogMDAgMDIgMDAgMDAg
MDkgMDAgMTIgNTAgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5QLi4uLi4uLi4KICAg
MThFQTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDMyIDMyIEE0ICAu
Li4uLi4uLi5ALi4uMjIuCiAgIDE4RUIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxOEVDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MThFRDA6IDAwIDAyIDAwIDAwIDA5IDAwIDEzIDUwIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUC4uLi4uLi4uCiAgIDE4RUUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCAzMyAzMiBBNCAgLi4uLi4uLi4uQC4uLjMyLgogICAxOEVGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MThGMDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE4RjEwOiAwMCAwMiAwMCAwMCAwOSAwMCAxNCA1MCAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlAuLi4uLi4uLgogICAxOEYyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggMzMgMzIgQTQgIC4uLi4uLi4uLkAuLi4zMi4KICAg
MThGMzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE4RjQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxOEY1MDogMDAgMDIgMDAgMDAg
MDkgMDAgMTUgNTAgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5QLi4uLi4uLi4KICAg
MThGNjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDEwIDI2IEE0ICAu
Li4uLi4uLi5ALi4uLiYuCiAgIDE4RjcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxOEY4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MThGOTA6IDAwIDAyIDAwIDAwIDA5IDAwIDE2IDUwIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUC4uLi4uLi4uCiAgIDE4RkEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCAxRiAyNiBBNCAgLi4uLi4uLi4uQC4uLi4mLgogICAxOEZCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MThGQzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE4RkQwOiAwMCAwMiAwMCAwMCAwOSAwMCAxNyA1MCAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlAuLi4uLi4uLgogICAxOEZFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggMUYgMjYgQTQgIC4uLi4uLi4uLkAuLi4uJi4KICAg
MThGRjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE5MDAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxOTAxMDogMDAgMDIgMDAgMDAg
MDkgMDAgMTggNTAgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5QLi4uLi4uLi4KICAg
MTkwMjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDFCIDI2IEE0ICAu
Li4uLi4uLi5ALi4uLiYuCiAgIDE5MDMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxOTA0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTkwNTA6IDAwIDAyIDAwIDAwIDA5IDAwIDE5IDUwIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUC4uLi4uLi4uCiAgIDE5MDYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCAxRSAyNiBBNCAgLi4uLi4uLi4uQC4uLi4mLgogICAxOTA3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTkwODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE5MDkwOiAwMCAwMiAwMCAwMCAwOSAwMCAxQSA1MCAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlAuLi4uLi4uLgogICAxOTBBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggMUUgMjYgQTQgIC4uLi4uLi4uLkAuLi4uJi4KICAg
MTkwQjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE5MEMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxOTBEMDogMDAgMDIgMDAgMDAg
MDkgMDAgMUIgNTAgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5QLi4uLi4uLi4KICAg
MTkwRTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDFCIDI2IEE0ICAu
Li4uLi4uLi5ALi4uLiYuCiAgIDE5MEYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxOTEwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTkxMTA6IDAwIDAyIDAwIDAwIDA5IDAwIDFDIDUwIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUC4uLi4uLi4uCiAgIDE5MTIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCAxRCAyNiBBNCAgLi4uLi4uLi4uQC4uLi4mLgogICAxOTEzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTkxNDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE5MTUwOiAwMCAwMiAwMCAwMCAwOSAwMCAxRCA1MCAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlAuLi4uLi4uLgogICAxOTE2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggMUMgMjYgQTQgIC4uLi4uLi4uLkAuLi4uJi4KICAg
MTkxNzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE5MTgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxOTE5MDogMDAgMDIgMDAgMDAg
MDkgMDAgMUUgNTAgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5QLi4uLi4uLi4KICAg
MTkxQTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDFDIDI2IEE0ICAu
Li4uLi4uLi5ALi4uLiYuCiAgIDE5MUIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxOTFDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTkxRDA6IDAwIDAyIDAwIDAwIDA5IDAwIDFGIDUwIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUC4uLi4uLi4uCiAgIDE5MUUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCAxRCAyNiBBNCAgLi4uLi4uLi4uQC4uLi4mLgogICAxOTFGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTkyMDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE5MjEwOiAwMCAwMiAwMCAwMCAwOSAwMCAyMCA1MCAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uIFAuLi4uLi4uLgogICAxOTIyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggMTAgMjYgQTQgIC4uLi4uLi4uLkAuLi4uJi4KICAg
MTkyMzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE5MjQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxOTI1MDogMDAgMDIgMDAgMDAg
MDkgMDAgMjEgNTAgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLiFQLi4uLi4uLi4KICAg
MTkyNjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDFBIDI2IEE0ICAu
Li4uLi4uLi5ALi4uLiYuCiAgIDE5MjcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxOTI4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTkyOTA6IDAwIDAyIDAwIDAwIDA5IDAwIDIyIDUwIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4iUC4uLi4uLi4uCiAgIDE5MkEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCAxQSAyNiBBNCAgLi4uLi4uLi4uQC4uLi4mLgogICAxOTJCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTkyQzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE5MkQwOiAwMCAwMiAwMCAwMCAwOSAwMCAyMyA1MCAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uI1AuLi4uLi4uLgogICAxOTJFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggMTcgMjYgQTQgIC4uLi4uLi4uLkAuLi4uJi4KICAg
MTkyRjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE5MzAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxOTMxMDogMDAgMDIgMDAgMDAg
MDkgMDAgMjQgNTAgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLiRQLi4uLi4uLi4KICAg
MTkzMjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDE5IDI2IEE0ICAu
Li4uLi4uLi5ALi4uLiYuCiAgIDE5MzMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxOTM0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTkzNTA6IDAwIDAyIDAwIDAwIDA5IDAwIDI1IDUwIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4lUC4uLi4uLi4uCiAgIDE5MzYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCAxOCAyNiBBNCAgLi4uLi4uLi4uQC4uLi4mLgogICAxOTM3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTkzODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE5MzkwOiAwMCAwMiAwMCAwMCAwOSAwMCAyNiA1MCAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uJlAuLi4uLi4uLgogICAxOTNBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggMTggMjYgQTQgIC4uLi4uLi4uLkAuLi4uJi4KICAg
MTkzQjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE5M0MwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxOTNEMDogMDAgMDIgMDAgMDAg
MDkgMDAgMjcgNTAgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLidQLi4uLi4uLi4KICAg
MTkzRTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDE5IDI2IEE0ICAu
Li4uLi4uLi5ALi4uLiYuCiAgIDE5M0YwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxOTQwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTk0MTA6IDAwIDAyIDAwIDAwIDA5IDAwIDI4IDUwIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4oUC4uLi4uLi4uCiAgIDE5NDIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCAxMSAyNiBBNCAgLi4uLi4uLi4uQC4uLi4mLgogICAxOTQzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTk0NDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE5NDUwOiAwMCAwMiAwMCAwMCAwOSAwMCAyOSA1MCAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uKVAuLi4uLi4uLgogICAxOTQ2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggMTcgMjYgQTQgIC4uLi4uLi4uLkAuLi4uJi4KICAg
MTk0NzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE5NDgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxOTQ5MDogMDAgMDIgMDAgMDAg
MDkgMDAgMkEgNTAgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLipQLi4uLi4uLi4KICAg
MTk0QTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDE1IDI2IEE0ICAu
Li4uLi4uLi5ALi4uLiYuCiAgIDE5NEIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxOTRDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTk0RDA6IDAwIDAyIDAwIDAwIDA5IDAwIDJCIDUwIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4rUC4uLi4uLi4uCiAgIDE5NEUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCAxNiAyNiBBNCAgLi4uLi4uLi4uQC4uLi4mLgogICAxOTRGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTk1MDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE5NTEwOiAwMCAwMiAwMCAwMCAwOSAwMCAyQyA1MCAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLFAuLi4uLi4uLgogICAxOTUyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggMTYgMjYgQTQgIC4uLi4uLi4uLkAuLi4uJi4KICAg
MTk1MzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE5NTQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxOTU1MDogMDAgMDIgMDAgMDAg
MDkgMDAgMkQgNTAgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi1QLi4uLi4uLi4KICAg
MTk1NjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDExIDI2IEE0ICAu
Li4uLi4uLi5ALi4uLiYuCiAgIDE5NTcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxOTU4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTk1OTA6IDAwIDAyIDAwIDAwIDA5IDAwIDJFIDUwIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUC4uLi4uLi4uCiAgIDE5NUEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCAxNCAyNiBBNCAgLi4uLi4uLi4uQC4uLi4mLgogICAxOTVCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTk1QzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE5NUQwOiAwMCAwMiAwMCAwMCAwOSAwMCAyRiA1MCAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uL1AuLi4uLi4uLgogICAxOTVFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggMTUgMjYgQTQgIC4uLi4uLi4uLkAuLi4uJi4KICAg
MTk1RjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE5NjAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxOTYxMDogMDAgMDIgMDAgMDAg
MDkgMDAgMzAgNTAgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLjBQLi4uLi4uLi4KICAg
MTk2MjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDEyIDI2IEE0ICAu
Li4uLi4uLi5ALi4uLiYuCiAgIDE5NjMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxOTY0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTk2NTA6IDAwIDAyIDAwIDAwIDA5IDAwIDMxIDUwIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4xUC4uLi4uLi4uCiAgIDE5NjYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCAxNCAyNiBBNCAgLi4uLi4uLi4uQC4uLi4mLgogICAxOTY3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTk2ODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE5NjkwOiAwMCAwMiAwMCAwMCAwOSAwMCAzMiA1MCAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uMlAuLi4uLi4uLgogICAxOTZBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggMTIgMjYgQTQgIC4uLi4uLi4uLkAuLi4uJi4KICAg
MTk2QjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE5NkMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxOTZEMDogMDAgMDIgMDAgMDAg
MDkgMDAgMzMgNTAgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLjNQLi4uLi4uLi4KICAg
MTk2RTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDEzIDI2IEE0ICAu
Li4uLi4uLi5ALi4uLiYuCiAgIDE5NkYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxOTcwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTk3MTA6IDAwIDAyIDAwIDAwIDA5IDAwIDM0IDUwIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi40UC4uLi4uLi4uCiAgIDE5NzIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCAxMyAyNiBBNCAgLi4uLi4uLi4uQC4uLi4mLgogICAxOTczMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTk3NDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE5NzUwOiAwMCAwMiAwMCAwMCAwOSAwMCAzNSA1MCAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uNVAuLi4uLi4uLgogICAxOTc2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggMDAgMjYgQTQgIC4uLi4uLi4uLkAuLi4uJi4KICAg
MTk3NzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE5NzgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxOTc5MDogMDAgMDIgMDAgMDAg
MDkgMDAgMzYgNTAgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLjZQLi4uLi4uLi4KICAg
MTk3QTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDBGIDI2IEE0ICAu
Li4uLi4uLi5ALi4uLiYuCiAgIDE5N0IwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxOTdDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTk3RDA6IDAwIDAyIDAwIDAwIDA5IDAwIDM3IDUwIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi43UC4uLi4uLi4uCiAgIDE5N0UwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCAwRiAyNiBBNCAgLi4uLi4uLi4uQC4uLi4mLgogICAxOTdGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTk4MDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE5ODEwOiAwMCAwMiAwMCAwMCAwOSAwMCAzOCA1MCAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uOFAuLi4uLi4uLgogICAxOTgyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggMEIgMjYgQTQgIC4uLi4uLi4uLkAuLi4uJi4KICAg
MTk4MzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE5ODQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxOTg1MDogMDAgMDIgMDAgMDAg
MDkgMDAgMzkgNTAgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLjlQLi4uLi4uLi4KICAg
MTk4NjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDBFIDI2IEE0ICAu
Li4uLi4uLi5ALi4uLiYuCiAgIDE5ODcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxOTg4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTk4OTA6IDAwIDAyIDAwIDAwIDA5IDAwIDNBIDUwIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi46UC4uLi4uLi4uCiAgIDE5OEEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCAwRSAyNiBBNCAgLi4uLi4uLi4uQC4uLi4mLgogICAxOThCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTk4QzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE5OEQwOiAwMCAwMiAwMCAwMCAwOSAwMCAzQiA1MCAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uO1AuLi4uLi4uLgogICAxOThFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggMEIgMjYgQTQgIC4uLi4uLi4uLkAuLi4uJi4KICAg
MTk4RjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE5OTAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxOTkxMDogMDAgMDIgMDAgMDAg
MDkgMDAgM0MgNTAgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLjxQLi4uLi4uLi4KICAg
MTk5MjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDBEIDI2IEE0ICAu
Li4uLi4uLi5ALi4uLiYuCiAgIDE5OTMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxOTk0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTk5NTA6IDAwIDAyIDAwIDAwIDA5IDAwIDNEIDUwIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi49UC4uLi4uLi4uCiAgIDE5OTYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCAwQyAyNiBBNCAgLi4uLi4uLi4uQC4uLi4mLgogICAxOTk3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTk5ODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE5OTkwOiAwMCAwMiAwMCAwMCAwOSAwMCAzRSA1MCAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uPlAuLi4uLi4uLgogICAxOTlBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggMEMgMjYgQTQgIC4uLi4uLi4uLkAuLi4uJi4KICAg
MTk5QjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE5OUMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxOTlEMDogMDAgMDIgMDAgMDAg
MDkgMDAgM0YgNTAgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLj9QLi4uLi4uLi4KICAg
MTk5RTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDBEIDI2IEE0ICAu
Li4uLi4uLi5ALi4uLiYuCiAgIDE5OUYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxOUEwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTlBMTA6IDAwIDAyIDAwIDAwIDA5IDAwIDQwIDUwIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5AUC4uLi4uLi4uCiAgIDE5QTIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCAwMCAyNiBBNCAgLi4uLi4uLi4uQC4uLi4mLgogICAxOUEzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTlBNDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE5QTUwOiAwMCAwMiAwMCAwMCAwOSAwMCA0MSA1MCAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uQVAuLi4uLi4uLgogICAxOUE2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggMEEgMjYgQTQgIC4uLi4uLi4uLkAuLi4uJi4KICAg
MTlBNzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE5QTgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxOUE5MDogMDAgMDIgMDAgMDAg
MDkgMDAgNDIgNTAgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLkJQLi4uLi4uLi4KICAg
MTlBQTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDBBIDI2IEE0ICAu
Li4uLi4uLi5ALi4uLiYuCiAgIDE5QUIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxOUFDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTlBRDA6IDAwIDAyIDAwIDAwIDA5IDAwIDQzIDUwIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5DUC4uLi4uLi4uCiAgIDE5QUUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCAwNyAyNiBBNCAgLi4uLi4uLi4uQC4uLi4mLgogICAxOUFGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTlCMDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE5QjEwOiAwMCAwMiAwMCAwMCAwOSAwMCA0NCA1MCAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uRFAuLi4uLi4uLgogICAxOUIyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggMDkgMjYgQTQgIC4uLi4uLi4uLkAuLi4uJi4KICAg
MTlCMzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE5QjQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxOUI1MDogMDAgMDIgMDAgMDAg
MDkgMDAgNDUgNTAgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLkVQLi4uLi4uLi4KICAg
MTlCNjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDA4IDI2IEE0ICAu
Li4uLi4uLi5ALi4uLiYuCiAgIDE5QjcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxOUI4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTlCOTA6IDAwIDAyIDAwIDAwIDA5IDAwIDQ2IDUwIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5GUC4uLi4uLi4uCiAgIDE5QkEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCAwOCAyNiBBNCAgLi4uLi4uLi4uQC4uLi4mLgogICAxOUJCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTlCQzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE5QkQwOiAwMCAwMiAwMCAwMCAwOSAwMCA0NyA1MCAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uR1AuLi4uLi4uLgogICAxOUJFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggMDkgMjYgQTQgIC4uLi4uLi4uLkAuLi4uJi4KICAg
MTlCRjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE5QzAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxOUMxMDogMDAgMDIgMDAgMDAg
MDkgMDAgNDggNTAgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLkhQLi4uLi4uLi4KICAg
MTlDMjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDAxIDI2IEE0ICAu
Li4uLi4uLi5ALi4uLiYuCiAgIDE5QzMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxOUM0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTlDNTA6IDAwIDAyIDAwIDAwIDA5IDAwIDQ5IDUwIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5JUC4uLi4uLi4uCiAgIDE5QzYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCAwNyAyNiBBNCAgLi4uLi4uLi4uQC4uLi4mLgogICAxOUM3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTlDODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE5QzkwOiAwMCAwMiAwMCAwMCAwOSAwMCA0QSA1MCAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uSlAuLi4uLi4uLgogICAxOUNBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggMDUgMjYgQTQgIC4uLi4uLi4uLkAuLi4uJi4KICAg
MTlDQjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE5Q0MwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxOUNEMDogMDAgMDIgMDAgMDAg
MDkgMDAgNEIgNTAgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLktQLi4uLi4uLi4KICAg
MTlDRTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDA2IDI2IEE0ICAu
Li4uLi4uLi5ALi4uLiYuCiAgIDE5Q0YwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxOUQwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTlEMTA6IDAwIDAyIDAwIDAwIDA5IDAwIDRDIDUwIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5MUC4uLi4uLi4uCiAgIDE5RDIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCAwNiAyNiBBNCAgLi4uLi4uLi4uQC4uLi4mLgogICAxOUQzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTlENDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE5RDUwOiAwMCAwMiAwMCAwMCAwOSAwMCA0RCA1MCAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uTVAuLi4uLi4uLgogICAxOUQ2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggMDEgMjYgQTQgIC4uLi4uLi4uLkAuLi4uJi4KICAg
MTlENzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE5RDgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxOUQ5MDogMDAgMDIgMDAgMDAg
MDkgMDAgNEUgNTAgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLk5QLi4uLi4uLi4KICAg
MTlEQTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDA0IDI2IEE0ICAu
Li4uLi4uLi5ALi4uLiYuCiAgIDE5REIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxOURDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTlERDA6IDAwIDAyIDAwIDAwIDA5IDAwIDRGIDUwIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5PUC4uLi4uLi4uCiAgIDE5REUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCAwNSAyNiBBNCAgLi4uLi4uLi4uQC4uLi4mLgogICAxOURGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTlFMDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE5RTEwOiAwMCAwMiAwMCAwMCAwOSAwMCA1MCA1MCAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uUFAuLi4uLi4uLgogICAxOUUyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggMDIgMjYgQTQgIC4uLi4uLi4uLkAuLi4uJi4KICAg
MTlFMzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE5RTQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxOUU1MDogMDAgMDIgMDAgMDAg
MDkgMDAgNTEgNTAgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLlFQLi4uLi4uLi4KICAg
MTlFNjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDA0IDI2IEE0ICAu
Li4uLi4uLi5ALi4uLiYuCiAgIDE5RTcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxOUU4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTlFOTA6IDAwIDAyIDAwIDAwIDA5IDAwIDUyIDUwIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5SUC4uLi4uLi4uCiAgIDE5RUEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCAwMiAyNiBBNCAgLi4uLi4uLi4uQC4uLi4mLgogICAxOUVCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTlFQzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE5RUQwOiAwMCAwMiAwMCAwMCAwOSAwMCA1MyA1MCAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uU1AuLi4uLi4uLgogICAxOUVFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggMDMgMjYgQTQgIC4uLi4uLi4uLkAuLi4uJi4KICAg
MTlFRjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE5RjAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxOUYxMDogMDAgMDIgMDAgMDAg
MDkgMDAgNTQgNTAgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLlRQLi4uLi4uLi4KICAg
MTlGMjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDAzIDI2IEE0ICAu
Li4uLi4uLi5ALi4uLiYuCiAgIDE5RjMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxOUY0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTlGNTA6IDAwIDAyIDAwIDAwIDA5IDAwIDU1IDUwIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5VUC4uLi4uLi4uCiAgIDE5RjYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBGMCAyNSBBNCAgLi4uLi4uLi4uQC4uLi4lLgogICAxOUY3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MTlGODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE5RjkwOiAwMCAwMiAwMCAwMCAwOSAwMCA1NiA1MCAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uVlAuLi4uLi4uLgogICAxOUZBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggRkYgMjUgQTQgIC4uLi4uLi4uLkAuLi4uJS4KICAg
MTlGQjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDE5RkMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxOUZEMDogMDAgMDIgMDAgMDAg
MDkgMDAgNTcgNTAgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLldQLi4uLi4uLi4KICAg
MTlGRTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IEZGIDI1IEE0ICAu
Li4uLi4uLi5ALi4uLiUuCiAgIDE5RkYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxQTAwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUEwMTA6IDAwIDAyIDAwIDAwIDA5IDAwIDU4IDUwIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5YUC4uLi4uLi4uCiAgIDFBMDIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBGQiAyNSBBNCAgLi4uLi4uLi4uQC4uLi4lLgogICAxQTAzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUEwNDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFBMDUwOiAwMCAwMiAwMCAwMCAwOSAwMCA1OSA1MCAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uWVAuLi4uLi4uLgogICAxQTA2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggRkUgMjUgQTQgIC4uLi4uLi4uLkAuLi4uJS4KICAg
MUEwNzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFBMDgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxQTA5MDogMDAgMDIgMDAgMDAg
MDkgMDAgNUEgNTAgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLlpQLi4uLi4uLi4KICAg
MUEwQTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IEZFIDI1IEE0ICAu
Li4uLi4uLi5ALi4uLiUuCiAgIDFBMEIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxQTBDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUEwRDA6IDAwIDAyIDAwIDAwIDA5IDAwIDVCIDUwIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5bUC4uLi4uLi4uCiAgIDFBMEUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCBGQiAyNSBBNCAgLi4uLi4uLi4uQC4uLi4lLgogICAxQTBGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUExMDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFBMTEwOiAwMCAwMiAwMCAwMCAwOSAwMCA1QyA1MCAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uXFAuLi4uLi4uLgogICAxQTEyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggRkQgMjUgQTQgIC4uLi4uLi4uLkAuLi4uJS4KICAg
MUExMzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFBMTQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxQTE1MDogMDAgMDIgMDAgMDAg
MDkgMDAgNUQgNTAgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLl1QLi4uLi4uLi4KICAg
MUExNjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IEZDIDI1IEE0ICAu
Li4uLi4uLi5ALi4uLiUuCiAgIDFBMTcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxQTE4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUExOTA6IDAwIDAyIDAwIDAwIDA5IDAwIDVFIDUwIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5eUC4uLi4uLi4uCiAgIDFBMUEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCBGQyAyNSBBNCAgLi4uLi4uLi4uQC4uLi4lLgogICAxQTFCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUExQzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFBMUQwOiAwMCAwMiAwMCAwMCAwOSAwMCA1RiA1MCAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uX1AuLi4uLi4uLgogICAxQTFFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggRkQgMjUgQTQgIC4uLi4uLi4uLkAuLi4uJS4KICAg
MUExRjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFBMjAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxQTIxMDogMDAgMDIgMDAgMDAg
MDkgMDAgNjAgNTAgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLmBQLi4uLi4uLi4KICAg
MUEyMjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IEYwIDI1IEE0ICAu
Li4uLi4uLi5ALi4uLiUuCiAgIDFBMjMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxQTI0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUEyNTA6IDAwIDAyIDAwIDAwIDA5IDAwIDYxIDUwIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5hUC4uLi4uLi4uCiAgIDFBMjYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBGQSAyNSBBNCAgLi4uLi4uLi4uQC4uLi4lLgogICAxQTI3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUEyODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFBMjkwOiAwMCAwMiAwMCAwMCAwOSAwMCA2MiA1MCAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uYlAuLi4uLi4uLgogICAxQTJBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggRkEgMjUgQTQgIC4uLi4uLi4uLkAuLi4uJS4KICAg
MUEyQjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFBMkMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxQTJEMDogMDAgMDIgMDAgMDAg
MDkgMDAgNjMgNTAgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLmNQLi4uLi4uLi4KICAg
MUEyRTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IEY3IDI1IEE0ICAu
Li4uLi4uLi5ALi4uLiUuCiAgIDFBMkYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxQTMwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUEzMTA6IDAwIDAyIDAwIDAwIDA5IDAwIDY0IDUwIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5kUC4uLi4uLi4uCiAgIDFBMzIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCBGOSAyNSBBNCAgLi4uLi4uLi4uQC4uLi4lLgogICAxQTMzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUEzNDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFBMzUwOiAwMCAwMiAwMCAwMCAwOSAwMCA2NSA1MCAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uZVAuLi4uLi4uLgogICAxQTM2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggRjggMjUgQTQgIC4uLi4uLi4uLkAuLi4uJS4KICAg
MUEzNzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFBMzgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxQTM5MDogMDAgMDIgMDAgMDAg
MDkgMDAgNjYgNTAgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLmZQLi4uLi4uLi4KICAg
MUEzQTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IEY4IDI1IEE0ICAu
Li4uLi4uLi5ALi4uLiUuCiAgIDFBM0IwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxQTNDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUEzRDA6IDAwIDAyIDAwIDAwIDA5IDAwIDY3IDUwIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5nUC4uLi4uLi4uCiAgIDFBM0UwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBGOSAyNSBBNCAgLi4uLi4uLi4uQC4uLi4lLgogICAxQTNGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUE0MDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFBNDEwOiAwMCAwMiAwMCAwMCAwOSAwMCA2OCA1MCAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uaFAuLi4uLi4uLgogICAxQTQyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggRjEgMjUgQTQgIC4uLi4uLi4uLkAuLi4uJS4KICAg
MUE0MzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFBNDQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxQTQ1MDogMDAgMDIgMDAgMDAg
MDkgMDAgNjkgNTAgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLmlQLi4uLi4uLi4KICAg
MUE0NjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IEY3IDI1IEE0ICAu
Li4uLi4uLi5ALi4uLiUuCiAgIDFBNDcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxQTQ4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUE0OTA6IDAwIDAyIDAwIDAwIDA5IDAwIDZBIDUwIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5qUC4uLi4uLi4uCiAgIDFBNEEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCBGNSAyNSBBNCAgLi4uLi4uLi4uQC4uLi4lLgogICAxQTRCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUE0QzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFBNEQwOiAwMCAwMiAwMCAwMCAwOSAwMCA2QiA1MCAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4ua1AuLi4uLi4uLgogICAxQTRFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggRjYgMjUgQTQgIC4uLi4uLi4uLkAuLi4uJS4KICAg
MUE0RjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFBNTAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxQTUxMDogMDAgMDIgMDAgMDAg
MDkgMDAgNkMgNTAgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLmxQLi4uLi4uLi4KICAg
MUE1MjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IEY2IDI1IEE0ICAu
Li4uLi4uLi5ALi4uLiUuCiAgIDFBNTMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxQTU0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUE1NTA6IDAwIDAyIDAwIDAwIDA5IDAwIDZEIDUwIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5tUC4uLi4uLi4uCiAgIDFBNTYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCBGMSAyNSBBNCAgLi4uLi4uLi4uQC4uLi4lLgogICAxQTU3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUE1ODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFBNTkwOiAwMCAwMiAwMCAwMCAwOSAwMCA2RSA1MCAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4ublAuLi4uLi4uLgogICAxQTVBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggRjQgMjUgQTQgIC4uLi4uLi4uLkAuLi4uJS4KICAg
MUE1QjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFBNUMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxQTVEMDogMDAgMDIgMDAgMDAg
MDkgMDAgNkYgNTAgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLm9QLi4uLi4uLi4KICAg
MUE1RTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IEY1IDI1IEE0ICAu
Li4uLi4uLi5ALi4uLiUuCiAgIDFBNUYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxQTYwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUE2MTA6IDAwIDAyIDAwIDAwIDA5IDAwIDcwIDUwIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5wUC4uLi4uLi4uCiAgIDFBNjIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBGMiAyNSBBNCAgLi4uLi4uLi4uQC4uLi4lLgogICAxQTYzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUE2NDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFBNjUwOiAwMCAwMiAwMCAwMCAwOSAwMCA3MSA1MCAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4ucVAuLi4uLi4uLgogICAxQTY2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggRjQgMjUgQTQgIC4uLi4uLi4uLkAuLi4uJS4KICAg
MUE2NzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFBNjgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxQTY5MDogMDAgMDIgMDAgMDAg
MDkgMDAgNzIgNTAgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLnJQLi4uLi4uLi4KICAg
MUE2QTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IEYyIDI1IEE0ICAu
Li4uLi4uLi5ALi4uLiUuCiAgIDFBNkIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxQTZDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUE2RDA6IDAwIDAyIDAwIDAwIDA5IDAwIDczIDUwIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5zUC4uLi4uLi4uCiAgIDFBNkUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBGMyAyNSBBNCAgLi4uLi4uLi4uQC4uLi4lLgogICAxQTZGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUE3MDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFBNzEwOiAwMCAwMiAwMCAwMCAwOSAwMCA3NCA1MCAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4udFAuLi4uLi4uLgogICAxQTcyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggRjMgMjUgQTQgIC4uLi4uLi4uLkAuLi4uJS4KICAg
MUE3MzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFBNzQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxQTc1MDogMDAgMDIgMDAgMDAg
MDkgMDAgNzUgNTAgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLnVQLi4uLi4uLi4KICAg
MUE3NjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IEUwIDI1IEE0ICAu
Li4uLi4uLi5ALi4uLiUuCiAgIDFBNzcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxQTc4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUE3OTA6IDAwIDAyIDAwIDAwIDA5IDAwIDc2IDUwIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi52UC4uLi4uLi4uCiAgIDFBN0EwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBFRiAyNSBBNCAgLi4uLi4uLi4uQC4uLi4lLgogICAxQTdCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUE3QzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFBN0QwOiAwMCAwMiAwMCAwMCAwOSAwMCA3NyA1MCAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4ud1AuLi4uLi4uLgogICAxQTdFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggRUYgMjUgQTQgIC4uLi4uLi4uLkAuLi4uJS4KICAg
MUE3RjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFBODAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxQTgxMDogMDAgMDIgMDAgMDAg
MDkgMDAgNzggNTAgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLnhQLi4uLi4uLi4KICAg
MUE4MjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IEVCIDI1IEE0ICAu
Li4uLi4uLi5ALi4uLiUuCiAgIDFBODMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxQTg0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUE4NTA6IDAwIDAyIDAwIDAwIDA5IDAwIDc5IDUwIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi55UC4uLi4uLi4uCiAgIDFBODYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBFRSAyNSBBNCAgLi4uLi4uLi4uQC4uLi4lLgogICAxQTg3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUE4ODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFBODkwOiAwMCAwMiAwMCAwMCAwOSAwMCA3QSA1MCAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uelAuLi4uLi4uLgogICAxQThBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggRUUgMjUgQTQgIC4uLi4uLi4uLkAuLi4uJS4KICAg
MUE4QjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFBOEMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxQThEMDogMDAgMDIgMDAgMDAg
MDkgMDAgN0IgNTAgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLntQLi4uLi4uLi4KICAg
MUE4RTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IEVCIDI1IEE0ICAu
Li4uLi4uLi5ALi4uLiUuCiAgIDFBOEYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxQTkwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUE5MTA6IDAwIDAyIDAwIDAwIDA5IDAwIDdDIDUwIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi58UC4uLi4uLi4uCiAgIDFBOTIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCBFRCAyNSBBNCAgLi4uLi4uLi4uQC4uLi4lLgogICAxQTkzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUE5NDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFBOTUwOiAwMCAwMiAwMCAwMCAwOSAwMCA3RCA1MCAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4ufVAuLi4uLi4uLgogICAxQTk2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggRUMgMjUgQTQgIC4uLi4uLi4uLkAuLi4uJS4KICAg
MUE5NzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFBOTgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxQTk5MDogMDAgMDIgMDAgMDAg
MDkgMDAgN0UgNTAgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLn5QLi4uLi4uLi4KICAg
MUE5QTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IEVDIDI1IEE0ICAu
Li4uLi4uLi5ALi4uLiUuCiAgIDFBOUIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxQTlDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUE5RDA6IDAwIDAyIDAwIDAwIDA5IDAwIDdGIDUwIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUC4uLi4uLi4uCiAgIDFBOUUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBFRCAyNSBBNCAgLi4uLi4uLi4uQC4uLi4lLgogICAxQTlGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUFBMDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFBQTEwOiAwMCAwMiAwMCAwMCAwOSAwMCA4MCA1MCAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlAuLi4uLi4uLgogICAxQUEyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggRTAgMjUgQTQgIC4uLi4uLi4uLkAuLi4uJS4KICAg
MUFBMzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFBQTQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxQUE1MDogMDAgMDIgMDAgMDAg
MDkgMDAgODEgNTAgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5QLi4uLi4uLi4KICAg
MUFBNjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IEVBIDI1IEE0ICAu
Li4uLi4uLi5ALi4uLiUuCiAgIDFBQTcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxQUE4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUFBOTA6IDAwIDAyIDAwIDAwIDA5IDAwIDgyIDUwIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUC4uLi4uLi4uCiAgIDFBQUEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCBFQSAyNSBBNCAgLi4uLi4uLi4uQC4uLi4lLgogICAxQUFCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUFBQzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFBQUQwOiAwMCAwMiAwMCAwMCAwOSAwMCA4MyA1MCAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlAuLi4uLi4uLgogICAxQUFFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggRTcgMjUgQTQgIC4uLi4uLi4uLkAuLi4uJS4KICAg
MUFBRjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFBQjAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxQUIxMDogMDAgMDIgMDAgMDAg
MDkgMDAgODQgNTAgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5QLi4uLi4uLi4KICAg
MUFCMjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IEU5IDI1IEE0ICAu
Li4uLi4uLi5ALi4uLiUuCiAgIDFBQjMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxQUI0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUFCNTA6IDAwIDAyIDAwIDAwIDA5IDAwIDg1IDUwIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUC4uLi4uLi4uCiAgIDFBQjYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBFOCAyNSBBNCAgLi4uLi4uLi4uQC4uLi4lLgogICAxQUI3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUFCODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFBQjkwOiAwMCAwMiAwMCAwMCAwOSAwMCA4NiA1MCAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlAuLi4uLi4uLgogICAxQUJBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggRTggMjUgQTQgIC4uLi4uLi4uLkAuLi4uJS4KICAg
MUFCQjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFBQkMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxQUJEMDogMDAgMDIgMDAgMDAg
MDkgMDAgODcgNTAgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5QLi4uLi4uLi4KICAg
MUFCRTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IEU5IDI1IEE0ICAu
Li4uLi4uLi5ALi4uLiUuCiAgIDFBQkYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxQUMwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUFDMTA6IDAwIDAyIDAwIDAwIDA5IDAwIDg4IDUwIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUC4uLi4uLi4uCiAgIDFBQzIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBFMSAyNSBBNCAgLi4uLi4uLi4uQC4uLi4lLgogICAxQUMzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUFDNDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFBQzUwOiAwMCAwMiAwMCAwMCAwOSAwMCA4OSA1MCAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlAuLi4uLi4uLgogICAxQUM2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggRTcgMjUgQTQgIC4uLi4uLi4uLkAuLi4uJS4KICAg
MUFDNzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFBQzgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxQUM5MDogMDAgMDIgMDAgMDAg
MDkgMDAgOEEgNTAgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5QLi4uLi4uLi4KICAg
MUFDQTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IEU1IDI1IEE0ICAu
Li4uLi4uLi5ALi4uLiUuCiAgIDFBQ0IwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxQUNDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUFDRDA6IDAwIDAyIDAwIDAwIDA5IDAwIDhCIDUwIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUC4uLi4uLi4uCiAgIDFBQ0UwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBFNiAyNSBBNCAgLi4uLi4uLi4uQC4uLi4lLgogICAxQUNGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUFEMDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFBRDEwOiAwMCAwMiAwMCAwMCAwOSAwMCA4QyA1MCAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlAuLi4uLi4uLgogICAxQUQyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggRTYgMjUgQTQgIC4uLi4uLi4uLkAuLi4uJS4KICAg
MUFEMzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFBRDQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxQUQ1MDogMDAgMDIgMDAgMDAg
MDkgMDAgOEQgNTAgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5QLi4uLi4uLi4KICAg
MUFENjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IEUxIDI1IEE0ICAu
Li4uLi4uLi5ALi4uLiUuCiAgIDFBRDcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxQUQ4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUFEOTA6IDAwIDAyIDAwIDAwIDA5IDAwIDhFIDUwIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUC4uLi4uLi4uCiAgIDFBREEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCBFNCAyNSBBNCAgLi4uLi4uLi4uQC4uLi4lLgogICAxQURCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUFEQzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFBREQwOiAwMCAwMiAwMCAwMCAwOSAwMCA4RiA1MCAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlAuLi4uLi4uLgogICAxQURFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggRTUgMjUgQTQgIC4uLi4uLi4uLkAuLi4uJS4KICAg
MUFERjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFBRTAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxQUUxMDogMDAgMDIgMDAgMDAg
MDkgMDAgOTAgNTAgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5QLi4uLi4uLi4KICAg
MUFFMjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IEUyIDI1IEE0ICAu
Li4uLi4uLi5ALi4uLiUuCiAgIDFBRTMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxQUU0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUFFNTA6IDAwIDAyIDAwIDAwIDA5IDAwIDkxIDUwIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUC4uLi4uLi4uCiAgIDFBRTYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBFNCAyNSBBNCAgLi4uLi4uLi4uQC4uLi4lLgogICAxQUU3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUFFODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFBRTkwOiAwMCAwMiAwMCAwMCAwOSAwMCA5MiA1MCAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlAuLi4uLi4uLgogICAxQUVBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggRTIgMjUgQTQgIC4uLi4uLi4uLkAuLi4uJS4KICAg
MUFFQjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFBRUMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxQUVEMDogMDAgMDIgMDAgMDAg
MDkgMDAgOTMgNTAgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5QLi4uLi4uLi4KICAg
MUFFRTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IEUzIDI1IEE0ICAu
Li4uLi4uLi5ALi4uLiUuCiAgIDFBRUYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxQUYwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUFGMTA6IDAwIDAyIDAwIDAwIDA5IDAwIDk0IDUwIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUC4uLi4uLi4uCiAgIDFBRjIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCBFMyAyNSBBNCAgLi4uLi4uLi4uQC4uLi4lLgogICAxQUYzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUFGNDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFBRjUwOiAwMCAwMiAwMCAwMCAwOSAwMCA5NSA1MCAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlAuLi4uLi4uLgogICAxQUY2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggRDAgMjUgQTQgIC4uLi4uLi4uLkAuLi4uJS4KICAg
MUFGNzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFBRjgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxQUY5MDogMDAgMDIgMDAgMDAg
MDkgMDAgOTYgNTAgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5QLi4uLi4uLi4KICAg
MUFGQTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IERGIDI1IEE0ICAu
Li4uLi4uLi5ALi4uLiUuCiAgIDFBRkIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxQUZDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUFGRDA6IDAwIDAyIDAwIDAwIDA5IDAwIDk3IDUwIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUC4uLi4uLi4uCiAgIDFBRkUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCBERiAyNSBBNCAgLi4uLi4uLi4uQC4uLi4lLgogICAxQUZGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUIwMDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFCMDEwOiAwMCAwMiAwMCAwMCAwOSAwMCA5OCA1MCAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlAuLi4uLi4uLgogICAxQjAyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggREIgMjUgQTQgIC4uLi4uLi4uLkAuLi4uJS4KICAg
MUIwMzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFCMDQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxQjA1MDogMDAgMDIgMDAgMDAg
MDkgMDAgOTkgNTAgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5QLi4uLi4uLi4KICAg
MUIwNjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IERFIDI1IEE0ICAu
Li4uLi4uLi5ALi4uLiUuCiAgIDFCMDcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxQjA4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUIwOTA6IDAwIDAyIDAwIDAwIDA5IDAwIDlBIDUwIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUC4uLi4uLi4uCiAgIDFCMEEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCBERSAyNSBBNCAgLi4uLi4uLi4uQC4uLi4lLgogICAxQjBCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUIwQzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFCMEQwOiAwMCAwMiAwMCAwMCAwOSAwMCA5QiA1MCAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlAuLi4uLi4uLgogICAxQjBFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggREIgMjUgQTQgIC4uLi4uLi4uLkAuLi4uJS4KICAg
MUIwRjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFCMTAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxQjExMDogMDAgMDIgMDAgMDAg
MDkgMDAgOUMgNTAgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5QLi4uLi4uLi4KICAg
MUIxMjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IEREIDI1IEE0ICAu
Li4uLi4uLi5ALi4uLiUuCiAgIDFCMTMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxQjE0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUIxNTA6IDAwIDAyIDAwIDAwIDA5IDAwIDlEIDUwIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUC4uLi4uLi4uCiAgIDFCMTYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBEQyAyNSBBNCAgLi4uLi4uLi4uQC4uLi4lLgogICAxQjE3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUIxODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFCMTkwOiAwMCAwMiAwMCAwMCAwOSAwMCA5RSA1MCAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlAuLi4uLi4uLgogICAxQjFBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggREMgMjUgQTQgIC4uLi4uLi4uLkAuLi4uJS4KICAg
MUIxQjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFCMUMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxQjFEMDogMDAgMDIgMDAgMDAg
MDkgMDAgOUYgNTAgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5QLi4uLi4uLi4KICAg
MUIxRTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IEREIDI1IEE0ICAu
Li4uLi4uLi5ALi4uLiUuCiAgIDFCMUYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxQjIwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUIyMTA6IDAwIDAyIDAwIDAwIDA5IDAwIEEwIDUwIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUC4uLi4uLi4uCiAgIDFCMjIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCBEMCAyNSBBNCAgLi4uLi4uLi4uQC4uLi4lLgogICAxQjIzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUIyNDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFCMjUwOiAwMCAwMiAwMCAwMCAwOSAwMCBBMSA1MCAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlAuLi4uLi4uLgogICAxQjI2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggREEgMjUgQTQgIC4uLi4uLi4uLkAuLi4uJS4KICAg
MUIyNzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFCMjgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxQjI5MDogMDAgMDIgMDAgMDAg
MDkgMDAgQTIgNTAgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5QLi4uLi4uLi4KICAg
MUIyQTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IERBIDI1IEE0ICAu
Li4uLi4uLi5ALi4uLiUuCiAgIDFCMkIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxQjJDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUIyRDA6IDAwIDAyIDAwIDAwIDA5IDAwIEEzIDUwIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUC4uLi4uLi4uCiAgIDFCMkUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCBENyAyNSBBNCAgLi4uLi4uLi4uQC4uLi4lLgogICAxQjJGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUIzMDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFCMzEwOiAwMCAwMiAwMCAwMCAwOSAwMCBBNCA1MCAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlAuLi4uLi4uLgogICAxQjMyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggRDkgMjUgQTQgIC4uLi4uLi4uLkAuLi4uJS4KICAg
MUIzMzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFCMzQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxQjM1MDogMDAgMDIgMDAgMDAg
MDkgMDAgQTUgNTAgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5QLi4uLi4uLi4KICAg
MUIzNjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IEQ4IDI1IEE0ICAu
Li4uLi4uLi5ALi4uLiUuCiAgIDFCMzcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxQjM4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUIzOTA6IDAwIDAyIDAwIDAwIDA5IDAwIEE2IDUwIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUC4uLi4uLi4uCiAgIDFCM0EwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCBEOCAyNSBBNCAgLi4uLi4uLi4uQC4uLi4lLgogICAxQjNCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUIzQzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFCM0QwOiAwMCAwMiAwMCAwMCAwOSAwMCBBNyA1MCAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlAuLi4uLi4uLgogICAxQjNFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggRDkgMjUgQTQgIC4uLi4uLi4uLkAuLi4uJS4KICAg
MUIzRjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFCNDAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxQjQxMDogMDAgMDIgMDAgMDAg
MDkgMDAgQTggNTAgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5QLi4uLi4uLi4KICAg
MUI0MjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IEQxIDI1IEE0ICAu
Li4uLi4uLi5ALi4uLiUuCiAgIDFCNDMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxQjQ0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUI0NTA6IDAwIDAyIDAwIDAwIDA5IDAwIEE5IDUwIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUC4uLi4uLi4uCiAgIDFCNDYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBENyAyNSBBNCAgLi4uLi4uLi4uQC4uLi4lLgogICAxQjQ3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUI0ODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFCNDkwOiAwMCAwMiAwMCAwMCAwOSAwMCBBQSA1MCAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlAuLi4uLi4uLgogICAxQjRBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggRDUgMjUgQTQgIC4uLi4uLi4uLkAuLi4uJS4KICAg
MUI0QjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFCNEMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxQjREMDogMDAgMDIgMDAgMDAg
MDkgMDAgQUIgNTAgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5QLi4uLi4uLi4KICAg
MUI0RTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IEQ2IDI1IEE0ICAu
Li4uLi4uLi5ALi4uLiUuCiAgIDFCNEYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxQjUwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUI1MTA6IDAwIDAyIDAwIDAwIDA5IDAwIEFDIDUwIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUC4uLi4uLi4uCiAgIDFCNTIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCBENiAyNSBBNCAgLi4uLi4uLi4uQC4uLi4lLgogICAxQjUzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUI1NDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFCNTUwOiAwMCAwMiAwMCAwMCAwOSAwMCBBRCA1MCAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlAuLi4uLi4uLgogICAxQjU2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggRDEgMjUgQTQgIC4uLi4uLi4uLkAuLi4uJS4KICAg
MUI1NzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFCNTgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxQjU5MDogMDAgMDIgMDAgMDAg
MDkgMDAgQUUgNTAgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5QLi4uLi4uLi4KICAg
MUI1QTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IEQ0IDI1IEE0ICAu
Li4uLi4uLi5ALi4uLiUuCiAgIDFCNUIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxQjVDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUI1RDA6IDAwIDAyIDAwIDAwIDA5IDAwIEFGIDUwIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUC4uLi4uLi4uCiAgIDFCNUUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBENSAyNSBBNCAgLi4uLi4uLi4uQC4uLi4lLgogICAxQjVGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUI2MDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFCNjEwOiAwMCAwMiAwMCAwMCAwOSAwMCBCMCA1MCAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlAuLi4uLi4uLgogICAxQjYyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggRDIgMjUgQTQgIC4uLi4uLi4uLkAuLi4uJS4KICAg
MUI2MzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFCNjQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxQjY1MDogMDAgMDIgMDAgMDAg
MDkgMDAgQjEgNTAgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5QLi4uLi4uLi4KICAg
MUI2NjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IEQ0IDI1IEE0ICAu
Li4uLi4uLi5ALi4uLiUuCiAgIDFCNjcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxQjY4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUI2OTA6IDAwIDAyIDAwIDAwIDA5IDAwIEIyIDUwIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUC4uLi4uLi4uCiAgIDFCNkEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCBEMiAyNSBBNCAgLi4uLi4uLi4uQC4uLi4lLgogICAxQjZCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUI2QzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFCNkQwOiAwMCAwMiAwMCAwMCAwOSAwMCBCMyA1MCAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlAuLi4uLi4uLgogICAxQjZFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggRDMgMjUgQTQgIC4uLi4uLi4uLkAuLi4uJS4KICAg
MUI2RjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFCNzAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxQjcxMDogMDAgMDIgMDAgMDAg
MDkgMDAgQjQgNTAgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5QLi4uLi4uLi4KICAg
MUI3MjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IEQzIDI1IEE0ICAu
Li4uLi4uLi5ALi4uLiUuCiAgIDFCNzMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxQjc0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUI3NTA6IDAwIDAyIDAwIDAwIDA5IDAwIEI1IDUwIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUC4uLi4uLi4uCiAgIDFCNzYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBDMCAyNSBBNCAgLi4uLi4uLi4uQC4uLi4lLgogICAxQjc3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUI3ODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFCNzkwOiAwMCAwMiAwMCAwMCAwOSAwMCBCNiA1MCAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlAuLi4uLi4uLgogICAxQjdBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggQ0YgMjUgQTQgIC4uLi4uLi4uLkAuLi4uJS4KICAg
MUI3QjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFCN0MwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxQjdEMDogMDAgMDIgMDAgMDAg
MDkgMDAgQjcgNTAgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5QLi4uLi4uLi4KICAg
MUI3RTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IENGIDI1IEE0ICAu
Li4uLi4uLi5ALi4uLiUuCiAgIDFCN0YwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxQjgwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUI4MTA6IDAwIDAyIDAwIDAwIDA5IDAwIEI4IDUwIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUC4uLi4uLi4uCiAgIDFCODIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBDQiAyNSBBNCAgLi4uLi4uLi4uQC4uLi4lLgogICAxQjgzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUI4NDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFCODUwOiAwMCAwMiAwMCAwMCAwOSAwMCBCOSA1MCAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlAuLi4uLi4uLgogICAxQjg2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggQ0UgMjUgQTQgIC4uLi4uLi4uLkAuLi4uJS4KICAg
MUI4NzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFCODgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxQjg5MDogMDAgMDIgMDAgMDAg
MDkgMDAgQkEgNTAgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5QLi4uLi4uLi4KICAg
MUI4QTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IENFIDI1IEE0ICAu
Li4uLi4uLi5ALi4uLiUuCiAgIDFCOEIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxQjhDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUI4RDA6IDAwIDAyIDAwIDAwIDA5IDAwIEJCIDUwIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUC4uLi4uLi4uCiAgIDFCOEUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCBDQiAyNSBBNCAgLi4uLi4uLi4uQC4uLi4lLgogICAxQjhGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUI5MDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFCOTEwOiAwMCAwMiAwMCAwMCAwOSAwMCBCQyA1MCAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlAuLi4uLi4uLgogICAxQjkyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggQ0QgMjUgQTQgIC4uLi4uLi4uLkAuLi4uJS4KICAg
MUI5MzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFCOTQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxQjk1MDogMDAgMDIgMDAgMDAg
MDkgMDAgQkQgNTAgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5QLi4uLi4uLi4KICAg
MUI5NjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IENDIDI1IEE0ICAu
Li4uLi4uLi5ALi4uLiUuCiAgIDFCOTcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxQjk4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUI5OTA6IDAwIDAyIDAwIDAwIDA5IDAwIEJFIDUwIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUC4uLi4uLi4uCiAgIDFCOUEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCBDQyAyNSBBNCAgLi4uLi4uLi4uQC4uLi4lLgogICAxQjlCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUI5QzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFCOUQwOiAwMCAwMiAwMCAwMCAwOSAwMCBCRiA1MCAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlAuLi4uLi4uLgogICAxQjlFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggQ0QgMjUgQTQgIC4uLi4uLi4uLkAuLi4uJS4KICAg
MUI5RjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFCQTAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxQkExMDogMDAgMDIgMDAgMDAg
MDkgMDAgQzAgNTAgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5QLi4uLi4uLi4KICAg
MUJBMjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IEMwIDI1IEE0ICAu
Li4uLi4uLi5ALi4uLiUuCiAgIDFCQTMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxQkE0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUJBNTA6IDAwIDAyIDAwIDAwIDA5IDAwIEMxIDUwIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUC4uLi4uLi4uCiAgIDFCQTYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBDQSAyNSBBNCAgLi4uLi4uLi4uQC4uLi4lLgogICAxQkE3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUJBODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFCQTkwOiAwMCAwMiAwMCAwMCAwOSAwMCBDMiA1MCAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlAuLi4uLi4uLgogICAxQkFBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggQ0EgMjUgQTQgIC4uLi4uLi4uLkAuLi4uJS4KICAg
MUJBQjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFCQUMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxQkFEMDogMDAgMDIgMDAgMDAg
MDkgMDAgQzMgNTAgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5QLi4uLi4uLi4KICAg
MUJBRTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IEM3IDI1IEE0ICAu
Li4uLi4uLi5ALi4uLiUuCiAgIDFCQUYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxQkIwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUJCMTA6IDAwIDAyIDAwIDAwIDA5IDAwIEM0IDUwIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUC4uLi4uLi4uCiAgIDFCQjIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCBDOSAyNSBBNCAgLi4uLi4uLi4uQC4uLi4lLgogICAxQkIzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUJCNDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFCQjUwOiAwMCAwMiAwMCAwMCAwOSAwMCBDNSA1MCAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlAuLi4uLi4uLgogICAxQkI2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggQzggMjUgQTQgIC4uLi4uLi4uLkAuLi4uJS4KICAg
MUJCNzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFCQjgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxQkI5MDogMDAgMDIgMDAgMDAg
MDkgMDAgQzYgNTAgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5QLi4uLi4uLi4KICAg
MUJCQTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IEM4IDI1IEE0ICAu
Li4uLi4uLi5ALi4uLiUuCiAgIDFCQkIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxQkJDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUJCRDA6IDAwIDAyIDAwIDAwIDA5IDAwIEM3IDUwIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUC4uLi4uLi4uCiAgIDFCQkUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBDOSAyNSBBNCAgLi4uLi4uLi4uQC4uLi4lLgogICAxQkJGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUJDMDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFCQzEwOiAwMCAwMiAwMCAwMCAwOSAwMCBDOCA1MCAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlAuLi4uLi4uLgogICAxQkMyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggQzEgMjUgQTQgIC4uLi4uLi4uLkAuLi4uJS4KICAg
MUJDMzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFCQzQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxQkM1MDogMDAgMDIgMDAgMDAg
MDkgMDAgQzkgNTAgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5QLi4uLi4uLi4KICAg
MUJDNjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IEM3IDI1IEE0ICAu
Li4uLi4uLi5ALi4uLiUuCiAgIDFCQzcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxQkM4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUJDOTA6IDAwIDAyIDAwIDAwIDA5IDAwIENBIDUwIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUC4uLi4uLi4uCiAgIDFCQ0EwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCBDNSAyNSBBNCAgLi4uLi4uLi4uQC4uLi4lLgogICAxQkNCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUJDQzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFCQ0QwOiAwMCAwMiAwMCAwMCAwOSAwMCBDQiA1MCAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlAuLi4uLi4uLgogICAxQkNFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggQzYgMjUgQTQgIC4uLi4uLi4uLkAuLi4uJS4KICAg
MUJDRjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFCRDAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxQkQxMDogMDAgMDIgMDAgMDAg
MDkgMDAgQ0MgNTAgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5QLi4uLi4uLi4KICAg
MUJEMjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IEM2IDI1IEE0ICAu
Li4uLi4uLi5ALi4uLiUuCiAgIDFCRDMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxQkQ0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUJENTA6IDAwIDAyIDAwIDAwIDA5IDAwIENEIDUwIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUC4uLi4uLi4uCiAgIDFCRDYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCBDMSAyNSBBNCAgLi4uLi4uLi4uQC4uLi4lLgogICAxQkQ3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUJEODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFCRDkwOiAwMCAwMiAwMCAwMCAwOSAwMCBDRSA1MCAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlAuLi4uLi4uLgogICAxQkRBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggQzQgMjUgQTQgIC4uLi4uLi4uLkAuLi4uJS4KICAg
MUJEQjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFCREMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxQkREMDogMDAgMDIgMDAgMDAg
MDkgMDAgQ0YgNTAgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5QLi4uLi4uLi4KICAg
MUJERTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IEM1IDI1IEE0ICAu
Li4uLi4uLi5ALi4uLiUuCiAgIDFCREYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxQkUwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUJFMTA6IDAwIDAyIDAwIDAwIDA5IDAwIEQwIDUwIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUC4uLi4uLi4uCiAgIDFCRTIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBDMiAyNSBBNCAgLi4uLi4uLi4uQC4uLi4lLgogICAxQkUzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUJFNDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFCRTUwOiAwMCAwMiAwMCAwMCAwOSAwMCBEMSA1MCAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlAuLi4uLi4uLgogICAxQkU2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggQzQgMjUgQTQgIC4uLi4uLi4uLkAuLi4uJS4KICAg
MUJFNzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFCRTgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxQkU5MDogMDAgMDIgMDAgMDAg
MDkgMDAgRDIgNTAgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5QLi4uLi4uLi4KICAg
MUJFQTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IEMyIDI1IEE0ICAu
Li4uLi4uLi5ALi4uLiUuCiAgIDFCRUIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxQkVDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUJFRDA6IDAwIDAyIDAwIDAwIDA5IDAwIEQzIDUwIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUC4uLi4uLi4uCiAgIDFCRUUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBDMyAyNSBBNCAgLi4uLi4uLi4uQC4uLi4lLgogICAxQkVGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUJGMDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFCRjEwOiAwMCAwMiAwMCAwMCAwOSAwMCBENCA1MCAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlAuLi4uLi4uLgogICAxQkYyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggQzMgMjUgQTQgIC4uLi4uLi4uLkAuLi4uJS4KICAg
MUJGMzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFCRjQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxQkY1MDogMDAgMDIgMDAgMDAg
MDkgMDAgRDUgNTAgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5QLi4uLi4uLi4KICAg
MUJGNjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IEIwIDI1IEE0ICAu
Li4uLi4uLi5ALi4uLiUuCiAgIDFCRjcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxQkY4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUJGOTA6IDAwIDAyIDAwIDAwIDA5IDAwIEQ2IDUwIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUC4uLi4uLi4uCiAgIDFCRkEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBCRiAyNSBBNCAgLi4uLi4uLi4uQC4uLi4lLgogICAxQkZCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUJGQzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFCRkQwOiAwMCAwMiAwMCAwMCAwOSAwMCBENyA1MCAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlAuLi4uLi4uLgogICAxQkZFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggQkYgMjUgQTQgIC4uLi4uLi4uLkAuLi4uJS4KICAg
MUJGRjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFDMDAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxQzAxMDogMDAgMDIgMDAgMDAg
MDkgMDAgRDggNTAgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5QLi4uLi4uLi4KICAg
MUMwMjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IEJCIDI1IEE0ICAu
Li4uLi4uLi5ALi4uLiUuCiAgIDFDMDMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxQzA0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUMwNTA6IDAwIDAyIDAwIDAwIDA5IDAwIEQ5IDUwIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUC4uLi4uLi4uCiAgIDFDMDYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBCRSAyNSBBNCAgLi4uLi4uLi4uQC4uLi4lLgogICAxQzA3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUMwODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFDMDkwOiAwMCAwMiAwMCAwMCAwOSAwMCBEQSA1MCAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlAuLi4uLi4uLgogICAxQzBBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggQkUgMjUgQTQgIC4uLi4uLi4uLkAuLi4uJS4KICAg
MUMwQjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFDMEMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxQzBEMDogMDAgMDIgMDAgMDAg
MDkgMDAgREIgNTAgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5QLi4uLi4uLi4KICAg
MUMwRTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IEJCIDI1IEE0ICAu
Li4uLi4uLi5ALi4uLiUuCiAgIDFDMEYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxQzEwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUMxMTA6IDAwIDAyIDAwIDAwIDA5IDAwIERDIDUwIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUC4uLi4uLi4uCiAgIDFDMTIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCBCRCAyNSBBNCAgLi4uLi4uLi4uQC4uLi4lLgogICAxQzEzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUMxNDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFDMTUwOiAwMCAwMiAwMCAwMCAwOSAwMCBERCA1MCAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlAuLi4uLi4uLgogICAxQzE2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggQkMgMjUgQTQgIC4uLi4uLi4uLkAuLi4uJS4KICAg
MUMxNzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFDMTgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxQzE5MDogMDAgMDIgMDAgMDAg
MDkgMDAgREUgNTAgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5QLi4uLi4uLi4KICAg
MUMxQTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IEJDIDI1IEE0ICAu
Li4uLi4uLi5ALi4uLiUuCiAgIDFDMUIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxQzFDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUMxRDA6IDAwIDAyIDAwIDAwIDA5IDAwIERGIDUwIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUC4uLi4uLi4uCiAgIDFDMUUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBCRCAyNSBBNCAgLi4uLi4uLi4uQC4uLi4lLgogICAxQzFGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUMyMDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFDMjEwOiAwMCAwMiAwMCAwMCAwOSAwMCBFMCA1MCAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlAuLi4uLi4uLgogICAxQzIyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggQjAgMjUgQTQgIC4uLi4uLi4uLkAuLi4uJS4KICAg
MUMyMzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFDMjQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxQzI1MDogMDAgMDIgMDAgMDAg
MDkgMDAgRTEgNTAgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5QLi4uLi4uLi4KICAg
MUMyNjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IEJBIDI1IEE0ICAu
Li4uLi4uLi5ALi4uLiUuCiAgIDFDMjcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxQzI4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUMyOTA6IDAwIDAyIDAwIDAwIDA5IDAwIEUyIDUwIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUC4uLi4uLi4uCiAgIDFDMkEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCBCQSAyNSBBNCAgLi4uLi4uLi4uQC4uLi4lLgogICAxQzJCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUMyQzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFDMkQwOiAwMCAwMiAwMCAwMCAwOSAwMCBFMyA1MCAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlAuLi4uLi4uLgogICAxQzJFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggQjcgMjUgQTQgIC4uLi4uLi4uLkAuLi4uJS4KICAg
MUMyRjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFDMzAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxQzMxMDogMDAgMDIgMDAgMDAg
MDkgMDAgRTQgNTAgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5QLi4uLi4uLi4KICAg
MUMzMjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IEI5IDI1IEE0ICAu
Li4uLi4uLi5ALi4uLiUuCiAgIDFDMzMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxQzM0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUMzNTA6IDAwIDAyIDAwIDAwIDA5IDAwIEU1IDUwIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUC4uLi4uLi4uCiAgIDFDMzYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBCOCAyNSBBNCAgLi4uLi4uLi4uQC4uLi4lLgogICAxQzM3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUMzODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFDMzkwOiAwMCAwMiAwMCAwMCAwOSAwMCBFNiA1MCAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlAuLi4uLi4uLgogICAxQzNBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggQjggMjUgQTQgIC4uLi4uLi4uLkAuLi4uJS4KICAg
MUMzQjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFDM0MwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxQzNEMDogMDAgMDIgMDAgMDAg
MDkgMDAgRTcgNTAgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5QLi4uLi4uLi4KICAg
MUMzRTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IEI5IDI1IEE0ICAu
Li4uLi4uLi5ALi4uLiUuCiAgIDFDM0YwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxQzQwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUM0MTA6IDAwIDAyIDAwIDAwIDA5IDAwIEU4IDUwIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUC4uLi4uLi4uCiAgIDFDNDIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBCMSAyNSBBNCAgLi4uLi4uLi4uQC4uLi4lLgogICAxQzQzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUM0NDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFDNDUwOiAwMCAwMiAwMCAwMCAwOSAwMCBFOSA1MCAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlAuLi4uLi4uLgogICAxQzQ2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggQjcgMjUgQTQgIC4uLi4uLi4uLkAuLi4uJS4KICAg
MUM0NzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFDNDgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxQzQ5MDogMDAgMDIgMDAgMDAg
MDkgMDAgRUEgNTAgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5QLi4uLi4uLi4KICAg
MUM0QTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IEI1IDI1IEE0ICAu
Li4uLi4uLi5ALi4uLiUuCiAgIDFDNEIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxQzRDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUM0RDA6IDAwIDAyIDAwIDAwIDA5IDAwIEVCIDUwIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUC4uLi4uLi4uCiAgIDFDNEUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBCNiAyNSBBNCAgLi4uLi4uLi4uQC4uLi4lLgogICAxQzRGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUM1MDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFDNTEwOiAwMCAwMiAwMCAwMCAwOSAwMCBFQyA1MCAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlAuLi4uLi4uLgogICAxQzUyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggQjYgMjUgQTQgIC4uLi4uLi4uLkAuLi4uJS4KICAg
MUM1MzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFDNTQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxQzU1MDogMDAgMDIgMDAgMDAg
MDkgMDAgRUQgNTAgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5QLi4uLi4uLi4KICAg
MUM1NjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IEIxIDI1IEE0ICAu
Li4uLi4uLi5ALi4uLiUuCiAgIDFDNTcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxQzU4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUM1OTA6IDAwIDAyIDAwIDAwIDA5IDAwIEVFIDUwIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUC4uLi4uLi4uCiAgIDFDNUEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCBCNCAyNSBBNCAgLi4uLi4uLi4uQC4uLi4lLgogICAxQzVCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUM1QzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFDNUQwOiAwMCAwMiAwMCAwMCAwOSAwMCBFRiA1MCAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlAuLi4uLi4uLgogICAxQzVFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggQjUgMjUgQTQgIC4uLi4uLi4uLkAuLi4uJS4KICAg
MUM1RjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFDNjAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxQzYxMDogMDAgMDIgMDAgMDAg
MDkgMDAgRjAgNTAgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5QLi4uLi4uLi4KICAg
MUM2MjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IEIyIDI1IEE0ICAu
Li4uLi4uLi5ALi4uLiUuCiAgIDFDNjMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxQzY0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUM2NTA6IDAwIDAyIDAwIDAwIDA5IDAwIEYxIDUwIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUC4uLi4uLi4uCiAgIDFDNjYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBCNCAyNSBBNCAgLi4uLi4uLi4uQC4uLi4lLgogICAxQzY3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUM2ODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFDNjkwOiAwMCAwMiAwMCAwMCAwOSAwMCBGMiA1MCAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlAuLi4uLi4uLgogICAxQzZBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggQjIgMjUgQTQgIC4uLi4uLi4uLkAuLi4uJS4KICAg
MUM2QjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFDNkMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxQzZEMDogMDAgMDIgMDAgMDAg
MDkgMDAgRjMgNTAgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5QLi4uLi4uLi4KICAg
MUM2RTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IEIzIDI1IEE0ICAu
Li4uLi4uLi5ALi4uLiUuCiAgIDFDNkYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxQzcwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUM3MTA6IDAwIDAyIDAwIDAwIDA5IDAwIEY0IDUwIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUC4uLi4uLi4uCiAgIDFDNzIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCBCMyAyNSBBNCAgLi4uLi4uLi4uQC4uLi4lLgogICAxQzczMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUM3NDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFDNzUwOiAwMCAwMiAwMCAwMCAwOSAwMCBGNSA1MCAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlAuLi4uLi4uLgogICAxQzc2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggQTAgMjUgQTQgIC4uLi4uLi4uLkAuLi4uJS4KICAg
MUM3NzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFDNzgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxQzc5MDogMDAgMDIgMDAgMDAg
MDkgMDAgRjYgNTAgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5QLi4uLi4uLi4KICAg
MUM3QTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IEFGIDI1IEE0ICAu
Li4uLi4uLi5ALi4uLiUuCiAgIDFDN0IwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxQzdDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUM3RDA6IDAwIDAyIDAwIDAwIDA5IDAwIEY3IDUwIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUC4uLi4uLi4uCiAgIDFDN0UwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCBBRiAyNSBBNCAgLi4uLi4uLi4uQC4uLi4lLgogICAxQzdGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUM4MDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFDODEwOiAwMCAwMiAwMCAwMCAwOSAwMCBGOCA1MCAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlAuLi4uLi4uLgogICAxQzgyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggQUIgMjUgQTQgIC4uLi4uLi4uLkAuLi4uJS4KICAg
MUM4MzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFDODQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxQzg1MDogMDAgMDIgMDAgMDAg
MDkgMDAgRjkgNTAgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5QLi4uLi4uLi4KICAg
MUM4NjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IEFFIDI1IEE0ICAu
Li4uLi4uLi5ALi4uLiUuCiAgIDFDODcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxQzg4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUM4OTA6IDAwIDAyIDAwIDAwIDA5IDAwIEZBIDUwIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUC4uLi4uLi4uCiAgIDFDOEEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCBBRSAyNSBBNCAgLi4uLi4uLi4uQC4uLi4lLgogICAxQzhCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUM4QzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFDOEQwOiAwMCAwMiAwMCAwMCAwOSAwMCBGQiA1MCAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlAuLi4uLi4uLgogICAxQzhFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggQUIgMjUgQTQgIC4uLi4uLi4uLkAuLi4uJS4KICAg
MUM4RjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFDOTAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxQzkxMDogMDAgMDIgMDAgMDAg
MDkgMDAgRkMgNTAgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5QLi4uLi4uLi4KICAg
MUM5MjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IEFEIDI1IEE0ICAu
Li4uLi4uLi5ALi4uLiUuCiAgIDFDOTMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxQzk0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUM5NTA6IDAwIDAyIDAwIDAwIDA5IDAwIEZEIDUwIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUC4uLi4uLi4uCiAgIDFDOTYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBBQyAyNSBBNCAgLi4uLi4uLi4uQC4uLi4lLgogICAxQzk3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUM5ODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFDOTkwOiAwMCAwMiAwMCAwMCAwOSAwMCBGRSA1MCAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlAuLi4uLi4uLgogICAxQzlBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggQUMgMjUgQTQgIC4uLi4uLi4uLkAuLi4uJS4KICAg
MUM5QjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFDOUMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxQzlEMDogMDAgMDIgMDAgMDAg
MDkgMDAgRkYgNTAgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5QLi4uLi4uLi4KICAg
MUM5RTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IEFEIDI1IEE0ICAu
Li4uLi4uLi5ALi4uLiUuCiAgIDFDOUYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxQ0EwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUNBMTA6IDAwIDAyIDAwIDAwIDA5IDAwIDAwIDUxIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUS4uLi4uLi4uCiAgIDFDQTIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCBBMCAyNSBBNCAgLi4uLi4uLi4uQC4uLi4lLgogICAxQ0EzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUNBNDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFDQTUwOiAwMCAwMiAwMCAwMCAwOSAwMCAwMSA1MSAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlEuLi4uLi4uLgogICAxQ0E2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggQUEgMjUgQTQgIC4uLi4uLi4uLkAuLi4uJS4KICAg
MUNBNzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFDQTgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxQ0E5MDogMDAgMDIgMDAgMDAg
MDkgMDAgMDIgNTEgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5RLi4uLi4uLi4KICAg
MUNBQTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IEFBIDI1IEE0ICAu
Li4uLi4uLi5ALi4uLiUuCiAgIDFDQUIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxQ0FDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUNBRDA6IDAwIDAyIDAwIDAwIDA5IDAwIDAzIDUxIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUS4uLi4uLi4uCiAgIDFDQUUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCBBNyAyNSBBNCAgLi4uLi4uLi4uQC4uLi4lLgogICAxQ0FGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUNCMDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFDQjEwOiAwMCAwMiAwMCAwMCAwOSAwMCAwNCA1MSAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlEuLi4uLi4uLgogICAxQ0IyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggQTkgMjUgQTQgIC4uLi4uLi4uLkAuLi4uJS4KICAg
MUNCMzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFDQjQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxQ0I1MDogMDAgMDIgMDAgMDAg
MDkgMDAgMDUgNTEgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5RLi4uLi4uLi4KICAg
MUNCNjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IEE4IDI1IEE0ICAu
Li4uLi4uLi5ALi4uLiUuCiAgIDFDQjcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxQ0I4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUNCOTA6IDAwIDAyIDAwIDAwIDA5IDAwIDA2IDUxIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUS4uLi4uLi4uCiAgIDFDQkEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCBBOCAyNSBBNCAgLi4uLi4uLi4uQC4uLi4lLgogICAxQ0JCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUNCQzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFDQkQwOiAwMCAwMiAwMCAwMCAwOSAwMCAwNyA1MSAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlEuLi4uLi4uLgogICAxQ0JFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggQTkgMjUgQTQgIC4uLi4uLi4uLkAuLi4uJS4KICAg
MUNCRjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFDQzAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxQ0MxMDogMDAgMDIgMDAgMDAg
MDkgMDAgMDggNTEgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5RLi4uLi4uLi4KICAg
MUNDMjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IEExIDI1IEE0ICAu
Li4uLi4uLi5ALi4uLiUuCiAgIDFDQzMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxQ0M0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUNDNTA6IDAwIDAyIDAwIDAwIDA5IDAwIDA5IDUxIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUS4uLi4uLi4uCiAgIDFDQzYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBBNyAyNSBBNCAgLi4uLi4uLi4uQC4uLi4lLgogICAxQ0M3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUNDODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFDQzkwOiAwMCAwMiAwMCAwMCAwOSAwMCAwQSA1MSAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlEuLi4uLi4uLgogICAxQ0NBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggQTUgMjUgQTQgIC4uLi4uLi4uLkAuLi4uJS4KICAg
MUNDQjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFDQ0MwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxQ0NEMDogMDAgMDIgMDAgMDAg
MDkgMDAgMEIgNTEgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5RLi4uLi4uLi4KICAg
MUNDRTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IEE2IDI1IEE0ICAu
Li4uLi4uLi5ALi4uLiUuCiAgIDFDQ0YwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxQ0QwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUNEMTA6IDAwIDAyIDAwIDAwIDA5IDAwIDBDIDUxIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUS4uLi4uLi4uCiAgIDFDRDIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCBBNiAyNSBBNCAgLi4uLi4uLi4uQC4uLi4lLgogICAxQ0QzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUNENDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFDRDUwOiAwMCAwMiAwMCAwMCAwOSAwMCAwRCA1MSAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlEuLi4uLi4uLgogICAxQ0Q2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggQTEgMjUgQTQgIC4uLi4uLi4uLkAuLi4uJS4KICAg
MUNENzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFDRDgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxQ0Q5MDogMDAgMDIgMDAgMDAg
MDkgMDAgMEUgNTEgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5RLi4uLi4uLi4KICAg
MUNEQTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IEE0IDI1IEE0ICAu
Li4uLi4uLi5ALi4uLiUuCiAgIDFDREIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxQ0RDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUNERDA6IDAwIDAyIDAwIDAwIDA5IDAwIDBGIDUxIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUS4uLi4uLi4uCiAgIDFDREUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBBNSAyNSBBNCAgLi4uLi4uLi4uQC4uLi4lLgogICAxQ0RGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUNFMDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFDRTEwOiAwMCAwMiAwMCAwMCAwOSAwMCAxMCA1MSAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlEuLi4uLi4uLgogICAxQ0UyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggQTIgMjUgQTQgIC4uLi4uLi4uLkAuLi4uJS4KICAg
MUNFMzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFDRTQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxQ0U1MDogMDAgMDIgMDAgMDAg
MDkgMDAgMTEgNTEgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5RLi4uLi4uLi4KICAg
MUNFNjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IEE0IDI1IEE0ICAu
Li4uLi4uLi5ALi4uLiUuCiAgIDFDRTcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxQ0U4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUNFOTA6IDAwIDAyIDAwIDAwIDA5IDAwIDEyIDUxIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUS4uLi4uLi4uCiAgIDFDRUEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCBBMiAyNSBBNCAgLi4uLi4uLi4uQC4uLi4lLgogICAxQ0VCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUNFQzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFDRUQwOiAwMCAwMiAwMCAwMCAwOSAwMCAxMyA1MSAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlEuLi4uLi4uLgogICAxQ0VFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggQTMgMjUgQTQgIC4uLi4uLi4uLkAuLi4uJS4KICAg
MUNFRjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFDRjAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxQ0YxMDogMDAgMDIgMDAgMDAg
MDkgMDAgMTQgNTEgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5RLi4uLi4uLi4KICAg
MUNGMjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IEEzIDI1IEE0ICAu
Li4uLi4uLi5ALi4uLiUuCiAgIDFDRjMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxQ0Y0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUNGNTA6IDAwIDAyIDAwIDAwIDA5IDAwIDE1IDUxIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUS4uLi4uLi4uCiAgIDFDRjYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA5MCAyNSBBNCAgLi4uLi4uLi4uQC4uLi4lLgogICAxQ0Y3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUNGODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFDRjkwOiAwMCAwMiAwMCAwMCAwOSAwMCAxNiA1MSAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlEuLi4uLi4uLgogICAxQ0ZBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggOUYgMjUgQTQgIC4uLi4uLi4uLkAuLi4uJS4KICAg
MUNGQjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFDRkMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxQ0ZEMDogMDAgMDIgMDAgMDAg
MDkgMDAgMTcgNTEgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5RLi4uLi4uLi4KICAg
MUNGRTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDlGIDI1IEE0ICAu
Li4uLi4uLi5ALi4uLiUuCiAgIDFDRkYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxRDAwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUQwMTA6IDAwIDAyIDAwIDAwIDA5IDAwIDE4IDUxIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUS4uLi4uLi4uCiAgIDFEMDIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA5QiAyNSBBNCAgLi4uLi4uLi4uQC4uLi4lLgogICAxRDAzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUQwNDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFEMDUwOiAwMCAwMiAwMCAwMCAwOSAwMCAxOSA1MSAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlEuLi4uLi4uLgogICAxRDA2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggOUUgMjUgQTQgIC4uLi4uLi4uLkAuLi4uJS4KICAg
MUQwNzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFEMDgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxRDA5MDogMDAgMDIgMDAgMDAg
MDkgMDAgMUEgNTEgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5RLi4uLi4uLi4KICAg
MUQwQTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDlFIDI1IEE0ICAu
Li4uLi4uLi5ALi4uLiUuCiAgIDFEMEIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxRDBDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUQwRDA6IDAwIDAyIDAwIDAwIDA5IDAwIDFCIDUxIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUS4uLi4uLi4uCiAgIDFEMEUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA5QiAyNSBBNCAgLi4uLi4uLi4uQC4uLi4lLgogICAxRDBGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUQxMDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFEMTEwOiAwMCAwMiAwMCAwMCAwOSAwMCAxQyA1MSAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlEuLi4uLi4uLgogICAxRDEyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggOUQgMjUgQTQgIC4uLi4uLi4uLkAuLi4uJS4KICAg
MUQxMzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFEMTQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxRDE1MDogMDAgMDIgMDAgMDAg
MDkgMDAgMUQgNTEgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5RLi4uLi4uLi4KICAg
MUQxNjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDlDIDI1IEE0ICAu
Li4uLi4uLi5ALi4uLiUuCiAgIDFEMTcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxRDE4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUQxOTA6IDAwIDAyIDAwIDAwIDA5IDAwIDFFIDUxIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUS4uLi4uLi4uCiAgIDFEMUEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA5QyAyNSBBNCAgLi4uLi4uLi4uQC4uLi4lLgogICAxRDFCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUQxQzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFEMUQwOiAwMCAwMiAwMCAwMCAwOSAwMCAxRiA1MSAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlEuLi4uLi4uLgogICAxRDFFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggOUQgMjUgQTQgIC4uLi4uLi4uLkAuLi4uJS4KICAg
MUQxRjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFEMjAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxRDIxMDogMDAgMDIgMDAgMDAg
MDkgMDAgMjAgNTEgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLiBRLi4uLi4uLi4KICAg
MUQyMjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDkwIDI1IEE0ICAu
Li4uLi4uLi5ALi4uLiUuCiAgIDFEMjMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxRDI0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUQyNTA6IDAwIDAyIDAwIDAwIDA5IDAwIDIxIDUxIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4hUS4uLi4uLi4uCiAgIDFEMjYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA5QSAyNSBBNCAgLi4uLi4uLi4uQC4uLi4lLgogICAxRDI3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUQyODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFEMjkwOiAwMCAwMiAwMCAwMCAwOSAwMCAyMiA1MSAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uIlEuLi4uLi4uLgogICAxRDJBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggOUEgMjUgQTQgIC4uLi4uLi4uLkAuLi4uJS4KICAg
MUQyQjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFEMkMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxRDJEMDogMDAgMDIgMDAgMDAg
MDkgMDAgMjMgNTEgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLiNRLi4uLi4uLi4KICAg
MUQyRTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDk3IDI1IEE0ICAu
Li4uLi4uLi5ALi4uLiUuCiAgIDFEMkYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxRDMwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUQzMTA6IDAwIDAyIDAwIDAwIDA5IDAwIDI0IDUxIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4kUS4uLi4uLi4uCiAgIDFEMzIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA5OSAyNSBBNCAgLi4uLi4uLi4uQC4uLi4lLgogICAxRDMzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUQzNDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFEMzUwOiAwMCAwMiAwMCAwMCAwOSAwMCAyNSA1MSAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uJVEuLi4uLi4uLgogICAxRDM2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggOTggMjUgQTQgIC4uLi4uLi4uLkAuLi4uJS4KICAg
MUQzNzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFEMzgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxRDM5MDogMDAgMDIgMDAgMDAg
MDkgMDAgMjYgNTEgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLiZRLi4uLi4uLi4KICAg
MUQzQTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDk4IDI1IEE0ICAu
Li4uLi4uLi5ALi4uLiUuCiAgIDFEM0IwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxRDNDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUQzRDA6IDAwIDAyIDAwIDAwIDA5IDAwIDI3IDUxIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4nUS4uLi4uLi4uCiAgIDFEM0UwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA5OSAyNSBBNCAgLi4uLi4uLi4uQC4uLi4lLgogICAxRDNGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUQ0MDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFENDEwOiAwMCAwMiAwMCAwMCAwOSAwMCAyOCA1MSAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uKFEuLi4uLi4uLgogICAxRDQyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggOTEgMjUgQTQgIC4uLi4uLi4uLkAuLi4uJS4KICAg
MUQ0MzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFENDQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxRDQ1MDogMDAgMDIgMDAgMDAg
MDkgMDAgMjkgNTEgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLilRLi4uLi4uLi4KICAg
MUQ0NjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDk3IDI1IEE0ICAu
Li4uLi4uLi5ALi4uLiUuCiAgIDFENDcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxRDQ4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUQ0OTA6IDAwIDAyIDAwIDAwIDA5IDAwIDJBIDUxIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4qUS4uLi4uLi4uCiAgIDFENEEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA5NSAyNSBBNCAgLi4uLi4uLi4uQC4uLi4lLgogICAxRDRCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUQ0QzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFENEQwOiAwMCAwMiAwMCAwMCAwOSAwMCAyQiA1MSAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uK1EuLi4uLi4uLgogICAxRDRFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggOTYgMjUgQTQgIC4uLi4uLi4uLkAuLi4uJS4KICAg
MUQ0RjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFENTAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxRDUxMDogMDAgMDIgMDAgMDAg
MDkgMDAgMkMgNTEgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLixRLi4uLi4uLi4KICAg
MUQ1MjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDk2IDI1IEE0ICAu
Li4uLi4uLi5ALi4uLiUuCiAgIDFENTMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxRDU0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUQ1NTA6IDAwIDAyIDAwIDAwIDA5IDAwIDJEIDUxIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4tUS4uLi4uLi4uCiAgIDFENTYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA5MSAyNSBBNCAgLi4uLi4uLi4uQC4uLi4lLgogICAxRDU3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUQ1ODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFENTkwOiAwMCAwMiAwMCAwMCAwOSAwMCAyRSA1MSAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlEuLi4uLi4uLgogICAxRDVBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggOTQgMjUgQTQgIC4uLi4uLi4uLkAuLi4uJS4KICAg
MUQ1QjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFENUMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxRDVEMDogMDAgMDIgMDAgMDAg
MDkgMDAgMkYgNTEgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi9RLi4uLi4uLi4KICAg
MUQ1RTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDk1IDI1IEE0ICAu
Li4uLi4uLi5ALi4uLiUuCiAgIDFENUYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxRDYwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUQ2MTA6IDAwIDAyIDAwIDAwIDA5IDAwIDMwIDUxIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4wUS4uLi4uLi4uCiAgIDFENjIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA5MiAyNSBBNCAgLi4uLi4uLi4uQC4uLi4lLgogICAxRDYzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUQ2NDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFENjUwOiAwMCAwMiAwMCAwMCAwOSAwMCAzMSA1MSAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uMVEuLi4uLi4uLgogICAxRDY2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggOTQgMjUgQTQgIC4uLi4uLi4uLkAuLi4uJS4KICAg
MUQ2NzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFENjgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxRDY5MDogMDAgMDIgMDAgMDAg
MDkgMDAgMzIgNTEgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLjJRLi4uLi4uLi4KICAg
MUQ2QTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDkyIDI1IEE0ICAu
Li4uLi4uLi5ALi4uLiUuCiAgIDFENkIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxRDZDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUQ2RDA6IDAwIDAyIDAwIDAwIDA5IDAwIDMzIDUxIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4zUS4uLi4uLi4uCiAgIDFENkUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA5MyAyNSBBNCAgLi4uLi4uLi4uQC4uLi4lLgogICAxRDZGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUQ3MDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFENzEwOiAwMCAwMiAwMCAwMCAwOSAwMCAzNCA1MSAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uNFEuLi4uLi4uLgogICAxRDcyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggOTMgMjUgQTQgIC4uLi4uLi4uLkAuLi4uJS4KICAg
MUQ3MzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFENzQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxRDc1MDogMDAgMDIgMDAgMDAg
MDkgMDAgMzUgNTEgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLjVRLi4uLi4uLi4KICAg
MUQ3NjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDgwIDI1IEE0ICAu
Li4uLi4uLi5ALi4uLiUuCiAgIDFENzcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxRDc4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUQ3OTA6IDAwIDAyIDAwIDAwIDA5IDAwIDM2IDUxIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi42US4uLi4uLi4uCiAgIDFEN0EwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA4RiAyNSBBNCAgLi4uLi4uLi4uQC4uLi4lLgogICAxRDdCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUQ3QzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFEN0QwOiAwMCAwMiAwMCAwMCAwOSAwMCAzNyA1MSAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uN1EuLi4uLi4uLgogICAxRDdFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggOEYgMjUgQTQgIC4uLi4uLi4uLkAuLi4uJS4KICAg
MUQ3RjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFEODAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxRDgxMDogMDAgMDIgMDAgMDAg
MDkgMDAgMzggNTEgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLjhRLi4uLi4uLi4KICAg
MUQ4MjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDhCIDI1IEE0ICAu
Li4uLi4uLi5ALi4uLiUuCiAgIDFEODMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxRDg0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUQ4NTA6IDAwIDAyIDAwIDAwIDA5IDAwIDM5IDUxIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi45US4uLi4uLi4uCiAgIDFEODYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA4RSAyNSBBNCAgLi4uLi4uLi4uQC4uLi4lLgogICAxRDg3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUQ4ODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFEODkwOiAwMCAwMiAwMCAwMCAwOSAwMCAzQSA1MSAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uOlEuLi4uLi4uLgogICAxRDhBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggOEUgMjUgQTQgIC4uLi4uLi4uLkAuLi4uJS4KICAg
MUQ4QjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFEOEMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxRDhEMDogMDAgMDIgMDAgMDAg
MDkgMDAgM0IgNTEgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLjtRLi4uLi4uLi4KICAg
MUQ4RTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDhCIDI1IEE0ICAu
Li4uLi4uLi5ALi4uLiUuCiAgIDFEOEYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxRDkwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUQ5MTA6IDAwIDAyIDAwIDAwIDA5IDAwIDNDIDUxIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi48US4uLi4uLi4uCiAgIDFEOTIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA4RCAyNSBBNCAgLi4uLi4uLi4uQC4uLi4lLgogICAxRDkzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUQ5NDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFEOTUwOiAwMCAwMiAwMCAwMCAwOSAwMCAzRCA1MSAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uPVEuLi4uLi4uLgogICAxRDk2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggOEMgMjUgQTQgIC4uLi4uLi4uLkAuLi4uJS4KICAg
MUQ5NzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFEOTgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxRDk5MDogMDAgMDIgMDAgMDAg
MDkgMDAgM0UgNTEgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLj5RLi4uLi4uLi4KICAg
MUQ5QTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDhDIDI1IEE0ICAu
Li4uLi4uLi5ALi4uLiUuCiAgIDFEOUIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxRDlDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUQ5RDA6IDAwIDAyIDAwIDAwIDA5IDAwIDNGIDUxIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4/US4uLi4uLi4uCiAgIDFEOUUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA4RCAyNSBBNCAgLi4uLi4uLi4uQC4uLi4lLgogICAxRDlGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MURBMDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFEQTEwOiAwMCAwMiAwMCAwMCAwOSAwMCA0MCA1MSAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uQFEuLi4uLi4uLgogICAxREEyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggODAgMjUgQTQgIC4uLi4uLi4uLkAuLi4uJS4KICAg
MURBMzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFEQTQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxREE1MDogMDAgMDIgMDAgMDAg
MDkgMDAgNDEgNTEgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLkFRLi4uLi4uLi4KICAg
MURBNjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDhBIDI1IEE0ICAu
Li4uLi4uLi5ALi4uLiUuCiAgIDFEQTcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxREE4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MURBOTA6IDAwIDAyIDAwIDAwIDA5IDAwIDQyIDUxIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5CUS4uLi4uLi4uCiAgIDFEQUEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA4QSAyNSBBNCAgLi4uLi4uLi4uQC4uLi4lLgogICAxREFCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MURBQzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFEQUQwOiAwMCAwMiAwMCAwMCAwOSAwMCA0MyA1MSAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uQ1EuLi4uLi4uLgogICAxREFFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggODcgMjUgQTQgIC4uLi4uLi4uLkAuLi4uJS4KICAg
MURBRjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFEQjAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxREIxMDogMDAgMDIgMDAgMDAg
MDkgMDAgNDQgNTEgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLkRRLi4uLi4uLi4KICAg
MURCMjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDg5IDI1IEE0ICAu
Li4uLi4uLi5ALi4uLiUuCiAgIDFEQjMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxREI0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MURCNTA6IDAwIDAyIDAwIDAwIDA5IDAwIDQ1IDUxIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5FUS4uLi4uLi4uCiAgIDFEQjYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA4OCAyNSBBNCAgLi4uLi4uLi4uQC4uLi4lLgogICAxREI3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MURCODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFEQjkwOiAwMCAwMiAwMCAwMCAwOSAwMCA0NiA1MSAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uRlEuLi4uLi4uLgogICAxREJBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggODggMjUgQTQgIC4uLi4uLi4uLkAuLi4uJS4KICAg
MURCQjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFEQkMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxREJEMDogMDAgMDIgMDAgMDAg
MDkgMDAgNDcgNTEgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLkdRLi4uLi4uLi4KICAg
MURCRTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDg5IDI1IEE0ICAu
Li4uLi4uLi5ALi4uLiUuCiAgIDFEQkYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxREMwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MURDMTA6IDAwIDAyIDAwIDAwIDA5IDAwIDQ4IDUxIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5IUS4uLi4uLi4uCiAgIDFEQzIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA4MSAyNSBBNCAgLi4uLi4uLi4uQC4uLi4lLgogICAxREMzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MURDNDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFEQzUwOiAwMCAwMiAwMCAwMCAwOSAwMCA0OSA1MSAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uSVEuLi4uLi4uLgogICAxREM2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggODcgMjUgQTQgIC4uLi4uLi4uLkAuLi4uJS4KICAg
MURDNzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFEQzgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxREM5MDogMDAgMDIgMDAgMDAg
MDkgMDAgNEEgNTEgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLkpRLi4uLi4uLi4KICAg
MURDQTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDg1IDI1IEE0ICAu
Li4uLi4uLi5ALi4uLiUuCiAgIDFEQ0IwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxRENDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MURDRDA6IDAwIDAyIDAwIDAwIDA5IDAwIDRCIDUxIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5LUS4uLi4uLi4uCiAgIDFEQ0UwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA4NiAyNSBBNCAgLi4uLi4uLi4uQC4uLi4lLgogICAxRENGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUREMDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFERDEwOiAwMCAwMiAwMCAwMCAwOSAwMCA0QyA1MSAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uTFEuLi4uLi4uLgogICAxREQyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggODYgMjUgQTQgIC4uLi4uLi4uLkAuLi4uJS4KICAg
MUREMzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFERDQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxREQ1MDogMDAgMDIgMDAgMDAg
MDkgMDAgNEQgNTEgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLk1RLi4uLi4uLi4KICAg
MURENjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDgxIDI1IEE0ICAu
Li4uLi4uLi5ALi4uLiUuCiAgIDFERDcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxREQ4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUREOTA6IDAwIDAyIDAwIDAwIDA5IDAwIDRFIDUxIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5OUS4uLi4uLi4uCiAgIDFEREEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA4NCAyNSBBNCAgLi4uLi4uLi4uQC4uLi4lLgogICAxRERCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUREQzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFEREQwOiAwMCAwMiAwMCAwMCAwOSAwMCA0RiA1MSAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uT1EuLi4uLi4uLgogICAxRERFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggODUgMjUgQTQgIC4uLi4uLi4uLkAuLi4uJS4KICAg
MURERjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFERTAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxREUxMDogMDAgMDIgMDAgMDAg
MDkgMDAgNTAgNTEgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLlBRLi4uLi4uLi4KICAg
MURFMjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDgyIDI1IEE0ICAu
Li4uLi4uLi5ALi4uLiUuCiAgIDFERTMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxREU0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MURFNTA6IDAwIDAyIDAwIDAwIDA5IDAwIDUxIDUxIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5RUS4uLi4uLi4uCiAgIDFERTYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA4NCAyNSBBNCAgLi4uLi4uLi4uQC4uLi4lLgogICAxREU3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MURFODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFERTkwOiAwMCAwMiAwMCAwMCAwOSAwMCA1MiA1MSAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uUlEuLi4uLi4uLgogICAxREVBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggODIgMjUgQTQgIC4uLi4uLi4uLkAuLi4uJS4KICAg
MURFQjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFERUMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxREVEMDogMDAgMDIgMDAgMDAg
MDkgMDAgNTMgNTEgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLlNRLi4uLi4uLi4KICAg
MURFRTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDgzIDI1IEE0ICAu
Li4uLi4uLi5ALi4uLiUuCiAgIDFERUYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxREYwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MURGMTA6IDAwIDAyIDAwIDAwIDA5IDAwIDU0IDUxIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5UUS4uLi4uLi4uCiAgIDFERjIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA4MyAyNSBBNCAgLi4uLi4uLi4uQC4uLi4lLgogICAxREYzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MURGNDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFERjUwOiAwMCAwMiAwMCAwMCAwOSAwMCA1NSA1MSAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uVVEuLi4uLi4uLgogICAxREY2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggNzAgMjUgQTQgIC4uLi4uLi4uLkAuLi5wJS4KICAg
MURGNzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFERjgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxREY5MDogMDAgMDIgMDAgMDAg
MDkgMDAgNTYgNTEgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLlZRLi4uLi4uLi4KICAg
MURGQTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDdGIDI1IEE0ICAu
Li4uLi4uLi5ALi4uLiUuCiAgIDFERkIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxREZDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MURGRDA6IDAwIDAyIDAwIDAwIDA5IDAwIDU3IDUxIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5XUS4uLi4uLi4uCiAgIDFERkUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA3RiAyNSBBNCAgLi4uLi4uLi4uQC4uLi4lLgogICAxREZGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUUwMDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFFMDEwOiAwMCAwMiAwMCAwMCAwOSAwMCA1OCA1MSAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uWFEuLi4uLi4uLgogICAxRTAyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggN0IgMjUgQTQgIC4uLi4uLi4uLkAuLi57JS4KICAg
MUUwMzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFFMDQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxRTA1MDogMDAgMDIgMDAgMDAg
MDkgMDAgNTkgNTEgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLllRLi4uLi4uLi4KICAg
MUUwNjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDdFIDI1IEE0ICAu
Li4uLi4uLi5ALi4ufiUuCiAgIDFFMDcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxRTA4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUUwOTA6IDAwIDAyIDAwIDAwIDA5IDAwIDVBIDUxIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5aUS4uLi4uLi4uCiAgIDFFMEEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA3RSAyNSBBNCAgLi4uLi4uLi4uQC4uLn4lLgogICAxRTBCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUUwQzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFFMEQwOiAwMCAwMiAwMCAwMCAwOSAwMCA1QiA1MSAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uW1EuLi4uLi4uLgogICAxRTBFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggN0IgMjUgQTQgIC4uLi4uLi4uLkAuLi57JS4KICAg
MUUwRjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFFMTAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxRTExMDogMDAgMDIgMDAgMDAg
MDkgMDAgNUMgNTEgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLlxRLi4uLi4uLi4KICAg
MUUxMjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDdEIDI1IEE0ICAu
Li4uLi4uLi5ALi4ufSUuCiAgIDFFMTMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxRTE0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUUxNTA6IDAwIDAyIDAwIDAwIDA5IDAwIDVEIDUxIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5dUS4uLi4uLi4uCiAgIDFFMTYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA3QyAyNSBBNCAgLi4uLi4uLi4uQC4uLnwlLgogICAxRTE3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUUxODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFFMTkwOiAwMCAwMiAwMCAwMCAwOSAwMCA1RSA1MSAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uXlEuLi4uLi4uLgogICAxRTFBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggN0MgMjUgQTQgIC4uLi4uLi4uLkAuLi58JS4KICAg
MUUxQjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFFMUMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxRTFEMDogMDAgMDIgMDAgMDAg
MDkgMDAgNUYgNTEgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLl9RLi4uLi4uLi4KICAg
MUUxRTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDdEIDI1IEE0ICAu
Li4uLi4uLi5ALi4ufSUuCiAgIDFFMUYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxRTIwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUUyMTA6IDAwIDAyIDAwIDAwIDA5IDAwIDYwIDUxIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5gUS4uLi4uLi4uCiAgIDFFMjIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA3MCAyNSBBNCAgLi4uLi4uLi4uQC4uLnAlLgogICAxRTIzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUUyNDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFFMjUwOiAwMCAwMiAwMCAwMCAwOSAwMCA2MSA1MSAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uYVEuLi4uLi4uLgogICAxRTI2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggN0EgMjUgQTQgIC4uLi4uLi4uLkAuLi56JS4KICAg
MUUyNzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFFMjgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxRTI5MDogMDAgMDIgMDAgMDAg
MDkgMDAgNjIgNTEgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLmJRLi4uLi4uLi4KICAg
MUUyQTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDdBIDI1IEE0ICAu
Li4uLi4uLi5ALi4ueiUuCiAgIDFFMkIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxRTJDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUUyRDA6IDAwIDAyIDAwIDAwIDA5IDAwIDYzIDUxIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5jUS4uLi4uLi4uCiAgIDFFMkUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA3NyAyNSBBNCAgLi4uLi4uLi4uQC4uLnclLgogICAxRTJGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUUzMDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFFMzEwOiAwMCAwMiAwMCAwMCAwOSAwMCA2NCA1MSAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uZFEuLi4uLi4uLgogICAxRTMyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggNzkgMjUgQTQgIC4uLi4uLi4uLkAuLi55JS4KICAg
MUUzMzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFFMzQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxRTM1MDogMDAgMDIgMDAgMDAg
MDkgMDAgNjUgNTEgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLmVRLi4uLi4uLi4KICAg
MUUzNjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDc4IDI1IEE0ICAu
Li4uLi4uLi5ALi4ueCUuCiAgIDFFMzcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxRTM4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUUzOTA6IDAwIDAyIDAwIDAwIDA5IDAwIDY2IDUxIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5mUS4uLi4uLi4uCiAgIDFFM0EwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA3OCAyNSBBNCAgLi4uLi4uLi4uQC4uLnglLgogICAxRTNCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUUzQzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFFM0QwOiAwMCAwMiAwMCAwMCAwOSAwMCA2NyA1MSAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uZ1EuLi4uLi4uLgogICAxRTNFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggNzkgMjUgQTQgIC4uLi4uLi4uLkAuLi55JS4KICAg
MUUzRjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFFNDAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxRTQxMDogMDAgMDIgMDAgMDAg
MDkgMDAgNjggNTEgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLmhRLi4uLi4uLi4KICAg
MUU0MjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDcxIDI1IEE0ICAu
Li4uLi4uLi5ALi4ucSUuCiAgIDFFNDMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxRTQ0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUU0NTA6IDAwIDAyIDAwIDAwIDA5IDAwIDY5IDUxIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5pUS4uLi4uLi4uCiAgIDFFNDYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA3NyAyNSBBNCAgLi4uLi4uLi4uQC4uLnclLgogICAxRTQ3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUU0ODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFFNDkwOiAwMCAwMiAwMCAwMCAwOSAwMCA2QSA1MSAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4ualEuLi4uLi4uLgogICAxRTRBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggNzUgMjUgQTQgIC4uLi4uLi4uLkAuLi51JS4KICAg
MUU0QjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFFNEMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxRTREMDogMDAgMDIgMDAgMDAg
MDkgMDAgNkIgNTEgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLmtRLi4uLi4uLi4KICAg
MUU0RTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDc2IDI1IEE0ICAu
Li4uLi4uLi5ALi4udiUuCiAgIDFFNEYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxRTUwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUU1MTA6IDAwIDAyIDAwIDAwIDA5IDAwIDZDIDUxIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5sUS4uLi4uLi4uCiAgIDFFNTIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA3NiAyNSBBNCAgLi4uLi4uLi4uQC4uLnYlLgogICAxRTUzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUU1NDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFFNTUwOiAwMCAwMiAwMCAwMCAwOSAwMCA2RCA1MSAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4ubVEuLi4uLi4uLgogICAxRTU2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggNzEgMjUgQTQgIC4uLi4uLi4uLkAuLi5xJS4KICAg
MUU1NzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFFNTgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxRTU5MDogMDAgMDIgMDAgMDAg
MDkgMDAgNkUgNTEgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLm5RLi4uLi4uLi4KICAg
MUU1QTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDc0IDI1IEE0ICAu
Li4uLi4uLi5ALi4udCUuCiAgIDFFNUIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxRTVDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUU1RDA6IDAwIDAyIDAwIDAwIDA5IDAwIDZGIDUxIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5vUS4uLi4uLi4uCiAgIDFFNUUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA3NSAyNSBBNCAgLi4uLi4uLi4uQC4uLnUlLgogICAxRTVGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUU2MDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFFNjEwOiAwMCAwMiAwMCAwMCAwOSAwMCA3MCA1MSAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4ucFEuLi4uLi4uLgogICAxRTYyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggNzIgMjUgQTQgIC4uLi4uLi4uLkAuLi5yJS4KICAg
MUU2MzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFFNjQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxRTY1MDogMDAgMDIgMDAgMDAg
MDkgMDAgNzEgNTEgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLnFRLi4uLi4uLi4KICAg
MUU2NjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDc0IDI1IEE0ICAu
Li4uLi4uLi5ALi4udCUuCiAgIDFFNjcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxRTY4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUU2OTA6IDAwIDAyIDAwIDAwIDA5IDAwIDcyIDUxIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5yUS4uLi4uLi4uCiAgIDFFNkEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA3MiAyNSBBNCAgLi4uLi4uLi4uQC4uLnIlLgogICAxRTZCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUU2QzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFFNkQwOiAwMCAwMiAwMCAwMCAwOSAwMCA3MyA1MSAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uc1EuLi4uLi4uLgogICAxRTZFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggNzMgMjUgQTQgIC4uLi4uLi4uLkAuLi5zJS4KICAg
MUU2RjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFFNzAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxRTcxMDogMDAgMDIgMDAgMDAg
MDkgMDAgNzQgNTEgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLnRRLi4uLi4uLi4KICAg
MUU3MjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDczIDI1IEE0ICAu
Li4uLi4uLi5ALi4ucyUuCiAgIDFFNzMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxRTc0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUU3NTA6IDAwIDAyIDAwIDAwIDA5IDAwIDc1IDUxIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi51US4uLi4uLi4uCiAgIDFFNzYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA2MCAyNSBBNCAgLi4uLi4uLi4uQC4uLmAlLgogICAxRTc3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUU3ODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFFNzkwOiAwMCAwMiAwMCAwMCAwOSAwMCA3NiA1MSAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4udlEuLi4uLi4uLgogICAxRTdBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggNkYgMjUgQTQgIC4uLi4uLi4uLkAuLi5vJS4KICAg
MUU3QjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFFN0MwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxRTdEMDogMDAgMDIgMDAgMDAg
MDkgMDAgNzcgNTEgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLndRLi4uLi4uLi4KICAg
MUU3RTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDZGIDI1IEE0ICAu
Li4uLi4uLi5ALi4ubyUuCiAgIDFFN0YwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxRTgwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUU4MTA6IDAwIDAyIDAwIDAwIDA5IDAwIDc4IDUxIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi54US4uLi4uLi4uCiAgIDFFODIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA2QiAyNSBBNCAgLi4uLi4uLi4uQC4uLmslLgogICAxRTgzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUU4NDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFFODUwOiAwMCAwMiAwMCAwMCAwOSAwMCA3OSA1MSAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4ueVEuLi4uLi4uLgogICAxRTg2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggNkUgMjUgQTQgIC4uLi4uLi4uLkAuLi5uJS4KICAg
MUU4NzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFFODgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxRTg5MDogMDAgMDIgMDAgMDAg
MDkgMDAgN0EgNTEgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLnpRLi4uLi4uLi4KICAg
MUU4QTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDZFIDI1IEE0ICAu
Li4uLi4uLi5ALi4ubiUuCiAgIDFFOEIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxRThDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUU4RDA6IDAwIDAyIDAwIDAwIDA5IDAwIDdCIDUxIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi57US4uLi4uLi4uCiAgIDFFOEUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA2QiAyNSBBNCAgLi4uLi4uLi4uQC4uLmslLgogICAxRThGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUU5MDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFFOTEwOiAwMCAwMiAwMCAwMCAwOSAwMCA3QyA1MSAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4ufFEuLi4uLi4uLgogICAxRTkyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggNkQgMjUgQTQgIC4uLi4uLi4uLkAuLi5tJS4KICAg
MUU5MzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFFOTQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxRTk1MDogMDAgMDIgMDAgMDAg
MDkgMDAgN0QgNTEgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLn1RLi4uLi4uLi4KICAg
MUU5NjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDZDIDI1IEE0ICAu
Li4uLi4uLi5ALi4ubCUuCiAgIDFFOTcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxRTk4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUU5OTA6IDAwIDAyIDAwIDAwIDA5IDAwIDdFIDUxIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5+US4uLi4uLi4uCiAgIDFFOUEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA2QyAyNSBBNCAgLi4uLi4uLi4uQC4uLmwlLgogICAxRTlCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUU5QzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFFOUQwOiAwMCAwMiAwMCAwMCAwOSAwMCA3RiA1MSAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlEuLi4uLi4uLgogICAxRTlFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggNkQgMjUgQTQgIC4uLi4uLi4uLkAuLi5tJS4KICAg
MUU5RjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFFQTAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxRUExMDogMDAgMDIgMDAgMDAg
MDkgMDAgODAgNTEgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5RLi4uLi4uLi4KICAg
MUVBMjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDYwIDI1IEE0ICAu
Li4uLi4uLi5ALi4uYCUuCiAgIDFFQTMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxRUE0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUVBNTA6IDAwIDAyIDAwIDAwIDA5IDAwIDgxIDUxIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUS4uLi4uLi4uCiAgIDFFQTYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA2QSAyNSBBNCAgLi4uLi4uLi4uQC4uLmolLgogICAxRUE3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUVBODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFFQTkwOiAwMCAwMiAwMCAwMCAwOSAwMCA4MiA1MSAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlEuLi4uLi4uLgogICAxRUFBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggNkEgMjUgQTQgIC4uLi4uLi4uLkAuLi5qJS4KICAg
MUVBQjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFFQUMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxRUFEMDogMDAgMDIgMDAgMDAg
MDkgMDAgODMgNTEgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5RLi4uLi4uLi4KICAg
MUVBRTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDY3IDI1IEE0ICAu
Li4uLi4uLi5ALi4uZyUuCiAgIDFFQUYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxRUIwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUVCMTA6IDAwIDAyIDAwIDAwIDA5IDAwIDg0IDUxIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUS4uLi4uLi4uCiAgIDFFQjIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA2OSAyNSBBNCAgLi4uLi4uLi4uQC4uLmklLgogICAxRUIzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUVCNDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFFQjUwOiAwMCAwMiAwMCAwMCAwOSAwMCA4NSA1MSAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlEuLi4uLi4uLgogICAxRUI2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggNjggMjUgQTQgIC4uLi4uLi4uLkAuLi5oJS4KICAg
MUVCNzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFFQjgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxRUI5MDogMDAgMDIgMDAgMDAg
MDkgMDAgODYgNTEgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5RLi4uLi4uLi4KICAg
MUVCQTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDY4IDI1IEE0ICAu
Li4uLi4uLi5ALi4uaCUuCiAgIDFFQkIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxRUJDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUVCRDA6IDAwIDAyIDAwIDAwIDA5IDAwIDg3IDUxIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUS4uLi4uLi4uCiAgIDFFQkUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA2OSAyNSBBNCAgLi4uLi4uLi4uQC4uLmklLgogICAxRUJGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUVDMDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFFQzEwOiAwMCAwMiAwMCAwMCAwOSAwMCA4OCA1MSAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlEuLi4uLi4uLgogICAxRUMyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggNjEgMjUgQTQgIC4uLi4uLi4uLkAuLi5hJS4KICAg
MUVDMzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFFQzQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxRUM1MDogMDAgMDIgMDAgMDAg
MDkgMDAgODkgNTEgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5RLi4uLi4uLi4KICAg
MUVDNjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDY3IDI1IEE0ICAu
Li4uLi4uLi5ALi4uZyUuCiAgIDFFQzcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxRUM4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUVDOTA6IDAwIDAyIDAwIDAwIDA5IDAwIDhBIDUxIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUS4uLi4uLi4uCiAgIDFFQ0EwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA2NSAyNSBBNCAgLi4uLi4uLi4uQC4uLmUlLgogICAxRUNCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUVDQzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFFQ0QwOiAwMCAwMiAwMCAwMCAwOSAwMCA4QiA1MSAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlEuLi4uLi4uLgogICAxRUNFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggNjYgMjUgQTQgIC4uLi4uLi4uLkAuLi5mJS4KICAg
MUVDRjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFFRDAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxRUQxMDogMDAgMDIgMDAgMDAg
MDkgMDAgOEMgNTEgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5RLi4uLi4uLi4KICAg
MUVEMjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDY2IDI1IEE0ICAu
Li4uLi4uLi5ALi4uZiUuCiAgIDFFRDMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxRUQ0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUVENTA6IDAwIDAyIDAwIDAwIDA5IDAwIDhEIDUxIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUS4uLi4uLi4uCiAgIDFFRDYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA2MSAyNSBBNCAgLi4uLi4uLi4uQC4uLmElLgogICAxRUQ3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUVEODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFFRDkwOiAwMCAwMiAwMCAwMCAwOSAwMCA4RSA1MSAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlEuLi4uLi4uLgogICAxRURBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggNjQgMjUgQTQgIC4uLi4uLi4uLkAuLi5kJS4KICAg
MUVEQjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFFREMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxRUREMDogMDAgMDIgMDAgMDAg
MDkgMDAgOEYgNTEgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5RLi4uLi4uLi4KICAg
MUVERTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDY1IDI1IEE0ICAu
Li4uLi4uLi5ALi4uZSUuCiAgIDFFREYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxRUUwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUVFMTA6IDAwIDAyIDAwIDAwIDA5IDAwIDkwIDUxIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUS4uLi4uLi4uCiAgIDFFRTIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA2MiAyNSBBNCAgLi4uLi4uLi4uQC4uLmIlLgogICAxRUUzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUVFNDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFFRTUwOiAwMCAwMiAwMCAwMCAwOSAwMCA5MSA1MSAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlEuLi4uLi4uLgogICAxRUU2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggNjQgMjUgQTQgIC4uLi4uLi4uLkAuLi5kJS4KICAg
MUVFNzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFFRTgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxRUU5MDogMDAgMDIgMDAgMDAg
MDkgMDAgOTIgNTEgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5RLi4uLi4uLi4KICAg
MUVFQTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDYyIDI1IEE0ICAu
Li4uLi4uLi5ALi4uYiUuCiAgIDFFRUIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxRUVDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUVFRDA6IDAwIDAyIDAwIDAwIDA5IDAwIDkzIDUxIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUS4uLi4uLi4uCiAgIDFFRUUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA2MyAyNSBBNCAgLi4uLi4uLi4uQC4uLmMlLgogICAxRUVGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUVGMDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFFRjEwOiAwMCAwMiAwMCAwMCAwOSAwMCA5NCA1MSAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlEuLi4uLi4uLgogICAxRUYyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggNjMgMjUgQTQgIC4uLi4uLi4uLkAuLi5jJS4KICAg
MUVGMzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFFRjQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxRUY1MDogMDAgMDIgMDAgMDAg
MDkgMDAgOTUgNTEgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5RLi4uLi4uLi4KICAg
MUVGNjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDUwIDI1IEE0ICAu
Li4uLi4uLi5ALi4uUCUuCiAgIDFFRjcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxRUY4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUVGOTA6IDAwIDAyIDAwIDAwIDA5IDAwIDk2IDUxIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUS4uLi4uLi4uCiAgIDFFRkEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA1RiAyNSBBNCAgLi4uLi4uLi4uQC4uLl8lLgogICAxRUZCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUVGQzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFFRkQwOiAwMCAwMiAwMCAwMCAwOSAwMCA5NyA1MSAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlEuLi4uLi4uLgogICAxRUZFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggNUYgMjUgQTQgIC4uLi4uLi4uLkAuLi5fJS4KICAg
MUVGRjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFGMDAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxRjAxMDogMDAgMDIgMDAgMDAg
MDkgMDAgOTggNTEgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5RLi4uLi4uLi4KICAg
MUYwMjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDVCIDI1IEE0ICAu
Li4uLi4uLi5ALi4uWyUuCiAgIDFGMDMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxRjA0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUYwNTA6IDAwIDAyIDAwIDAwIDA5IDAwIDk5IDUxIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUS4uLi4uLi4uCiAgIDFGMDYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA1RSAyNSBBNCAgLi4uLi4uLi4uQC4uLl4lLgogICAxRjA3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUYwODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFGMDkwOiAwMCAwMiAwMCAwMCAwOSAwMCA5QSA1MSAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlEuLi4uLi4uLgogICAxRjBBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggNUUgMjUgQTQgIC4uLi4uLi4uLkAuLi5eJS4KICAg
MUYwQjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFGMEMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxRjBEMDogMDAgMDIgMDAgMDAg
MDkgMDAgOUIgNTEgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5RLi4uLi4uLi4KICAg
MUYwRTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDVCIDI1IEE0ICAu
Li4uLi4uLi5ALi4uWyUuCiAgIDFGMEYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxRjEwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUYxMTA6IDAwIDAyIDAwIDAwIDA5IDAwIDlDIDUxIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUS4uLi4uLi4uCiAgIDFGMTIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA1RCAyNSBBNCAgLi4uLi4uLi4uQC4uLl0lLgogICAxRjEzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUYxNDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFGMTUwOiAwMCAwMiAwMCAwMCAwOSAwMCA5RCA1MSAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlEuLi4uLi4uLgogICAxRjE2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggNUMgMjUgQTQgIC4uLi4uLi4uLkAuLi5cJS4KICAg
MUYxNzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFGMTgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxRjE5MDogMDAgMDIgMDAgMDAg
MDkgMDAgOUUgNTEgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5RLi4uLi4uLi4KICAg
MUYxQTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDVDIDI1IEE0ICAu
Li4uLi4uLi5ALi4uXCUuCiAgIDFGMUIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxRjFDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUYxRDA6IDAwIDAyIDAwIDAwIDA5IDAwIDlGIDUxIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUS4uLi4uLi4uCiAgIDFGMUUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA1RCAyNSBBNCAgLi4uLi4uLi4uQC4uLl0lLgogICAxRjFGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUYyMDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFGMjEwOiAwMCAwMiAwMCAwMCAwOSAwMCBBMCA1MSAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlEuLi4uLi4uLgogICAxRjIyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggNTAgMjUgQTQgIC4uLi4uLi4uLkAuLi5QJS4KICAg
MUYyMzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFGMjQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxRjI1MDogMDAgMDIgMDAgMDAg
MDkgMDAgQTEgNTEgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5RLi4uLi4uLi4KICAg
MUYyNjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDVBIDI1IEE0ICAu
Li4uLi4uLi5ALi4uWiUuCiAgIDFGMjcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxRjI4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUYyOTA6IDAwIDAyIDAwIDAwIDA5IDAwIEEyIDUxIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUS4uLi4uLi4uCiAgIDFGMkEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA1QSAyNSBBNCAgLi4uLi4uLi4uQC4uLlolLgogICAxRjJCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUYyQzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFGMkQwOiAwMCAwMiAwMCAwMCAwOSAwMCBBMyA1MSAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlEuLi4uLi4uLgogICAxRjJFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggNTcgMjUgQTQgIC4uLi4uLi4uLkAuLi5XJS4KICAg
MUYyRjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFGMzAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxRjMxMDogMDAgMDIgMDAgMDAg
MDkgMDAgQTQgNTEgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5RLi4uLi4uLi4KICAg
MUYzMjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDU5IDI1IEE0ICAu
Li4uLi4uLi5ALi4uWSUuCiAgIDFGMzMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxRjM0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUYzNTA6IDAwIDAyIDAwIDAwIDA5IDAwIEE1IDUxIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUS4uLi4uLi4uCiAgIDFGMzYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA1OCAyNSBBNCAgLi4uLi4uLi4uQC4uLlglLgogICAxRjM3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUYzODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFGMzkwOiAwMCAwMiAwMCAwMCAwOSAwMCBBNiA1MSAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlEuLi4uLi4uLgogICAxRjNBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggNTggMjUgQTQgIC4uLi4uLi4uLkAuLi5YJS4KICAg
MUYzQjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFGM0MwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxRjNEMDogMDAgMDIgMDAgMDAg
MDkgMDAgQTcgNTEgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5RLi4uLi4uLi4KICAg
MUYzRTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDU5IDI1IEE0ICAu
Li4uLi4uLi5ALi4uWSUuCiAgIDFGM0YwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxRjQwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUY0MTA6IDAwIDAyIDAwIDAwIDA5IDAwIEE4IDUxIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUS4uLi4uLi4uCiAgIDFGNDIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA1MSAyNSBBNCAgLi4uLi4uLi4uQC4uLlElLgogICAxRjQzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUY0NDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFGNDUwOiAwMCAwMiAwMCAwMCAwOSAwMCBBOSA1MSAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlEuLi4uLi4uLgogICAxRjQ2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggNTcgMjUgQTQgIC4uLi4uLi4uLkAuLi5XJS4KICAg
MUY0NzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFGNDgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxRjQ5MDogMDAgMDIgMDAgMDAg
MDkgMDAgQUEgNTEgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5RLi4uLi4uLi4KICAg
MUY0QTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDU1IDI1IEE0ICAu
Li4uLi4uLi5ALi4uVSUuCiAgIDFGNEIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxRjRDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUY0RDA6IDAwIDAyIDAwIDAwIDA5IDAwIEFCIDUxIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUS4uLi4uLi4uCiAgIDFGNEUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA1NiAyNSBBNCAgLi4uLi4uLi4uQC4uLlYlLgogICAxRjRGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUY1MDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFGNTEwOiAwMCAwMiAwMCAwMCAwOSAwMCBBQyA1MSAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlEuLi4uLi4uLgogICAxRjUyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggNTYgMjUgQTQgIC4uLi4uLi4uLkAuLi5WJS4KICAg
MUY1MzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFGNTQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxRjU1MDogMDAgMDIgMDAgMDAg
MDkgMDAgQUQgNTEgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5RLi4uLi4uLi4KICAg
MUY1NjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDUxIDI1IEE0ICAu
Li4uLi4uLi5ALi4uUSUuCiAgIDFGNTcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxRjU4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUY1OTA6IDAwIDAyIDAwIDAwIDA5IDAwIEFFIDUxIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUS4uLi4uLi4uCiAgIDFGNUEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA1NCAyNSBBNCAgLi4uLi4uLi4uQC4uLlQlLgogICAxRjVCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUY1QzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFGNUQwOiAwMCAwMiAwMCAwMCAwOSAwMCBBRiA1MSAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlEuLi4uLi4uLgogICAxRjVFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggNTUgMjUgQTQgIC4uLi4uLi4uLkAuLi5VJS4KICAg
MUY1RjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFGNjAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxRjYxMDogMDAgMDIgMDAgMDAg
MDkgMDAgQjAgNTEgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5RLi4uLi4uLi4KICAg
MUY2MjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDUyIDI1IEE0ICAu
Li4uLi4uLi5ALi4uUiUuCiAgIDFGNjMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxRjY0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUY2NTA6IDAwIDAyIDAwIDAwIDA5IDAwIEIxIDUxIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUS4uLi4uLi4uCiAgIDFGNjYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA1NCAyNSBBNCAgLi4uLi4uLi4uQC4uLlQlLgogICAxRjY3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUY2ODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFGNjkwOiAwMCAwMiAwMCAwMCAwOSAwMCBCMiA1MSAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlEuLi4uLi4uLgogICAxRjZBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggNTIgMjUgQTQgIC4uLi4uLi4uLkAuLi5SJS4KICAg
MUY2QjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFGNkMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxRjZEMDogMDAgMDIgMDAgMDAg
MDkgMDAgQjMgNTEgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5RLi4uLi4uLi4KICAg
MUY2RTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDUzIDI1IEE0ICAu
Li4uLi4uLi5ALi4uUyUuCiAgIDFGNkYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxRjcwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUY3MTA6IDAwIDAyIDAwIDAwIDA5IDAwIEI0IDUxIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUS4uLi4uLi4uCiAgIDFGNzIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA1MyAyNSBBNCAgLi4uLi4uLi4uQC4uLlMlLgogICAxRjczMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUY3NDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFGNzUwOiAwMCAwMiAwMCAwMCAwOSAwMCBCNSA1MSAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlEuLi4uLi4uLgogICAxRjc2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggNDAgMjUgQTQgIC4uLi4uLi4uLkAuLi5AJS4KICAg
MUY3NzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFGNzgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxRjc5MDogMDAgMDIgMDAgMDAg
MDkgMDAgQjYgNTEgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5RLi4uLi4uLi4KICAg
MUY3QTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDRGIDI1IEE0ICAu
Li4uLi4uLi5ALi4uTyUuCiAgIDFGN0IwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxRjdDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUY3RDA6IDAwIDAyIDAwIDAwIDA5IDAwIEI3IDUxIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUS4uLi4uLi4uCiAgIDFGN0UwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA0RiAyNSBBNCAgLi4uLi4uLi4uQC4uLk8lLgogICAxRjdGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUY4MDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFGODEwOiAwMCAwMiAwMCAwMCAwOSAwMCBCOCA1MSAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlEuLi4uLi4uLgogICAxRjgyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggNEIgMjUgQTQgIC4uLi4uLi4uLkAuLi5LJS4KICAg
MUY4MzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFGODQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxRjg1MDogMDAgMDIgMDAgMDAg
MDkgMDAgQjkgNTEgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5RLi4uLi4uLi4KICAg
MUY4NjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDRFIDI1IEE0ICAu
Li4uLi4uLi5ALi4uTiUuCiAgIDFGODcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxRjg4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUY4OTA6IDAwIDAyIDAwIDAwIDA5IDAwIEJBIDUxIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUS4uLi4uLi4uCiAgIDFGOEEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA0RSAyNSBBNCAgLi4uLi4uLi4uQC4uLk4lLgogICAxRjhCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUY4QzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFGOEQwOiAwMCAwMiAwMCAwMCAwOSAwMCBCQiA1MSAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlEuLi4uLi4uLgogICAxRjhFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggNEIgMjUgQTQgIC4uLi4uLi4uLkAuLi5LJS4KICAg
MUY4RjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFGOTAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxRjkxMDogMDAgMDIgMDAgMDAg
MDkgMDAgQkMgNTEgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5RLi4uLi4uLi4KICAg
MUY5MjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDREIDI1IEE0ICAu
Li4uLi4uLi5ALi4uTSUuCiAgIDFGOTMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxRjk0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUY5NTA6IDAwIDAyIDAwIDAwIDA5IDAwIEJEIDUxIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUS4uLi4uLi4uCiAgIDFGOTYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA0QyAyNSBBNCAgLi4uLi4uLi4uQC4uLkwlLgogICAxRjk3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUY5ODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFGOTkwOiAwMCAwMiAwMCAwMCAwOSAwMCBCRSA1MSAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlEuLi4uLi4uLgogICAxRjlBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggNEMgMjUgQTQgIC4uLi4uLi4uLkAuLi5MJS4KICAg
MUY5QjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFGOUMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxRjlEMDogMDAgMDIgMDAgMDAg
MDkgMDAgQkYgNTEgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5RLi4uLi4uLi4KICAg
MUY5RTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDREIDI1IEE0ICAu
Li4uLi4uLi5ALi4uTSUuCiAgIDFGOUYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxRkEwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUZBMTA6IDAwIDAyIDAwIDAwIDA5IDAwIEMwIDUxIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUS4uLi4uLi4uCiAgIDFGQTIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA0MCAyNSBBNCAgLi4uLi4uLi4uQC4uLkAlLgogICAxRkEzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUZBNDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFGQTUwOiAwMCAwMiAwMCAwMCAwOSAwMCBDMSA1MSAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlEuLi4uLi4uLgogICAxRkE2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggNEEgMjUgQTQgIC4uLi4uLi4uLkAuLi5KJS4KICAg
MUZBNzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFGQTgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxRkE5MDogMDAgMDIgMDAgMDAg
MDkgMDAgQzIgNTEgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5RLi4uLi4uLi4KICAg
MUZBQTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDRBIDI1IEE0ICAu
Li4uLi4uLi5ALi4uSiUuCiAgIDFGQUIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxRkFDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUZBRDA6IDAwIDAyIDAwIDAwIDA5IDAwIEMzIDUxIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUS4uLi4uLi4uCiAgIDFGQUUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA0NyAyNSBBNCAgLi4uLi4uLi4uQC4uLkclLgogICAxRkFGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUZCMDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFGQjEwOiAwMCAwMiAwMCAwMCAwOSAwMCBDNCA1MSAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlEuLi4uLi4uLgogICAxRkIyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggNDkgMjUgQTQgIC4uLi4uLi4uLkAuLi5JJS4KICAg
MUZCMzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFGQjQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxRkI1MDogMDAgMDIgMDAgMDAg
MDkgMDAgQzUgNTEgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5RLi4uLi4uLi4KICAg
MUZCNjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDQ4IDI1IEE0ICAu
Li4uLi4uLi5ALi4uSCUuCiAgIDFGQjcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxRkI4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUZCOTA6IDAwIDAyIDAwIDAwIDA5IDAwIEM2IDUxIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUS4uLi4uLi4uCiAgIDFGQkEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA0OCAyNSBBNCAgLi4uLi4uLi4uQC4uLkglLgogICAxRkJCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUZCQzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFGQkQwOiAwMCAwMiAwMCAwMCAwOSAwMCBDNyA1MSAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlEuLi4uLi4uLgogICAxRkJFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggNDkgMjUgQTQgIC4uLi4uLi4uLkAuLi5JJS4KICAg
MUZCRjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFGQzAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxRkMxMDogMDAgMDIgMDAgMDAg
MDkgMDAgQzggNTEgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5RLi4uLi4uLi4KICAg
MUZDMjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDQxIDI1IEE0ICAu
Li4uLi4uLi5ALi4uQSUuCiAgIDFGQzMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxRkM0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUZDNTA6IDAwIDAyIDAwIDAwIDA5IDAwIEM5IDUxIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUS4uLi4uLi4uCiAgIDFGQzYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA0NyAyNSBBNCAgLi4uLi4uLi4uQC4uLkclLgogICAxRkM3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUZDODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFGQzkwOiAwMCAwMiAwMCAwMCAwOSAwMCBDQSA1MSAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlEuLi4uLi4uLgogICAxRkNBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggNDUgMjUgQTQgIC4uLi4uLi4uLkAuLi5FJS4KICAg
MUZDQjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFGQ0MwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxRkNEMDogMDAgMDIgMDAgMDAg
MDkgMDAgQ0IgNTEgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5RLi4uLi4uLi4KICAg
MUZDRTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDQ2IDI1IEE0ICAu
Li4uLi4uLi5ALi4uRiUuCiAgIDFGQ0YwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxRkQwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUZEMTA6IDAwIDAyIDAwIDAwIDA5IDAwIENDIDUxIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUS4uLi4uLi4uCiAgIDFGRDIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA0NiAyNSBBNCAgLi4uLi4uLi4uQC4uLkYlLgogICAxRkQzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUZENDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFGRDUwOiAwMCAwMiAwMCAwMCAwOSAwMCBDRCA1MSAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlEuLi4uLi4uLgogICAxRkQ2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggNDEgMjUgQTQgIC4uLi4uLi4uLkAuLi5BJS4KICAg
MUZENzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFGRDgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxRkQ5MDogMDAgMDIgMDAgMDAg
MDkgMDAgQ0UgNTEgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5RLi4uLi4uLi4KICAg
MUZEQTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDQ0IDI1IEE0ICAu
Li4uLi4uLi5ALi4uRCUuCiAgIDFGREIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxRkRDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUZERDA6IDAwIDAyIDAwIDAwIDA5IDAwIENGIDUxIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUS4uLi4uLi4uCiAgIDFGREUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA0NSAyNSBBNCAgLi4uLi4uLi4uQC4uLkUlLgogICAxRkRGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUZFMDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFGRTEwOiAwMCAwMiAwMCAwMCAwOSAwMCBEMCA1MSAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlEuLi4uLi4uLgogICAxRkUyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggNDIgMjUgQTQgIC4uLi4uLi4uLkAuLi5CJS4KICAg
MUZFMzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFGRTQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxRkU1MDogMDAgMDIgMDAgMDAg
MDkgMDAgRDEgNTEgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5RLi4uLi4uLi4KICAg
MUZFNjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDQ0IDI1IEE0ICAu
Li4uLi4uLi5ALi4uRCUuCiAgIDFGRTcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxRkU4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUZFOTA6IDAwIDAyIDAwIDAwIDA5IDAwIEQyIDUxIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUS4uLi4uLi4uCiAgIDFGRUEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA0MiAyNSBBNCAgLi4uLi4uLi4uQC4uLkIlLgogICAxRkVCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUZFQzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFGRUQwOiAwMCAwMiAwMCAwMCAwOSAwMCBEMyA1MSAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlEuLi4uLi4uLgogICAxRkVFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggNDMgMjUgQTQgIC4uLi4uLi4uLkAuLi5DJS4KICAg
MUZFRjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFGRjAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxRkYxMDogMDAgMDIgMDAgMDAg
MDkgMDAgRDQgNTEgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5RLi4uLi4uLi4KICAg
MUZGMjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDQzIDI1IEE0ICAu
Li4uLi4uLi5ALi4uQyUuCiAgIDFGRjMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxRkY0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUZGNTA6IDAwIDAyIDAwIDAwIDA5IDAwIEQ1IDUxIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUS4uLi4uLi4uCiAgIDFGRjYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCAzMCAyNSBBNCAgLi4uLi4uLi4uQC4uLjAlLgogICAxRkY3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MUZGODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFGRjkwOiAwMCAwMiAwMCAwMCAwOSAwMCBENiA1MSAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlEuLi4uLi4uLgogICAxRkZBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggM0YgMjUgQTQgIC4uLi4uLi4uLkAuLi4/JS4KICAg
MUZGQjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDFGRkMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAxRkZEMDogMDAgMDIgMDAgMDAg
MDkgMDAgRDcgNTEgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5RLi4uLi4uLi4KICAg
MUZGRTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDNGIDI1IEE0ICAu
Li4uLi4uLi5ALi4uPyUuCiAgIDFGRkYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyMDAwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjAwMTA6IDAwIDAyIDAwIDAwIDA5IDAwIEQ4IDUxIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUS4uLi4uLi4uCiAgIDIwMDIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCAzQiAyNSBBNCAgLi4uLi4uLi4uQC4uLjslLgogICAyMDAzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjAwNDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDIwMDUwOiAwMCAwMiAwMCAwMCAwOSAwMCBEOSA1MSAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlEuLi4uLi4uLgogICAyMDA2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggM0UgMjUgQTQgIC4uLi4uLi4uLkAuLi4+JS4KICAg
MjAwNzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDIwMDgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyMDA5MDogMDAgMDIgMDAgMDAg
MDkgMDAgREEgNTEgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5RLi4uLi4uLi4KICAg
MjAwQTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDNFIDI1IEE0ICAu
Li4uLi4uLi5ALi4uPiUuCiAgIDIwMEIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyMDBDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjAwRDA6IDAwIDAyIDAwIDAwIDA5IDAwIERCIDUxIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUS4uLi4uLi4uCiAgIDIwMEUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCAzQiAyNSBBNCAgLi4uLi4uLi4uQC4uLjslLgogICAyMDBGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjAxMDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDIwMTEwOiAwMCAwMiAwMCAwMCAwOSAwMCBEQyA1MSAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlEuLi4uLi4uLgogICAyMDEyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggM0QgMjUgQTQgIC4uLi4uLi4uLkAuLi49JS4KICAg
MjAxMzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDIwMTQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyMDE1MDogMDAgMDIgMDAgMDAg
MDkgMDAgREQgNTEgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5RLi4uLi4uLi4KICAg
MjAxNjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDNDIDI1IEE0ICAu
Li4uLi4uLi5ALi4uPCUuCiAgIDIwMTcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyMDE4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjAxOTA6IDAwIDAyIDAwIDAwIDA5IDAwIERFIDUxIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUS4uLi4uLi4uCiAgIDIwMUEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCAzQyAyNSBBNCAgLi4uLi4uLi4uQC4uLjwlLgogICAyMDFCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjAxQzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDIwMUQwOiAwMCAwMiAwMCAwMCAwOSAwMCBERiA1MSAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlEuLi4uLi4uLgogICAyMDFFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggM0QgMjUgQTQgIC4uLi4uLi4uLkAuLi49JS4KICAg
MjAxRjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDIwMjAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyMDIxMDogMDAgMDIgMDAgMDAg
MDkgMDAgRTAgNTEgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5RLi4uLi4uLi4KICAg
MjAyMjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDMwIDI1IEE0ICAu
Li4uLi4uLi5ALi4uMCUuCiAgIDIwMjMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyMDI0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjAyNTA6IDAwIDAyIDAwIDAwIDA5IDAwIEUxIDUxIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUS4uLi4uLi4uCiAgIDIwMjYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCAzQSAyNSBBNCAgLi4uLi4uLi4uQC4uLjolLgogICAyMDI3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjAyODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDIwMjkwOiAwMCAwMiAwMCAwMCAwOSAwMCBFMiA1MSAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlEuLi4uLi4uLgogICAyMDJBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggM0EgMjUgQTQgIC4uLi4uLi4uLkAuLi46JS4KICAg
MjAyQjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDIwMkMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyMDJEMDogMDAgMDIgMDAgMDAg
MDkgMDAgRTMgNTEgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5RLi4uLi4uLi4KICAg
MjAyRTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDM3IDI1IEE0ICAu
Li4uLi4uLi5ALi4uNyUuCiAgIDIwMkYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyMDMwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjAzMTA6IDAwIDAyIDAwIDAwIDA5IDAwIEU0IDUxIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUS4uLi4uLi4uCiAgIDIwMzIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCAzOSAyNSBBNCAgLi4uLi4uLi4uQC4uLjklLgogICAyMDMzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjAzNDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDIwMzUwOiAwMCAwMiAwMCAwMCAwOSAwMCBFNSA1MSAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlEuLi4uLi4uLgogICAyMDM2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggMzggMjUgQTQgIC4uLi4uLi4uLkAuLi44JS4KICAg
MjAzNzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDIwMzgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyMDM5MDogMDAgMDIgMDAgMDAg
MDkgMDAgRTYgNTEgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5RLi4uLi4uLi4KICAg
MjAzQTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDM4IDI1IEE0ICAu
Li4uLi4uLi5ALi4uOCUuCiAgIDIwM0IwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyMDNDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjAzRDA6IDAwIDAyIDAwIDAwIDA5IDAwIEU3IDUxIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUS4uLi4uLi4uCiAgIDIwM0UwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCAzOSAyNSBBNCAgLi4uLi4uLi4uQC4uLjklLgogICAyMDNGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjA0MDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDIwNDEwOiAwMCAwMiAwMCAwMCAwOSAwMCBFOCA1MSAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlEuLi4uLi4uLgogICAyMDQyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggMzEgMjUgQTQgIC4uLi4uLi4uLkAuLi4xJS4KICAg
MjA0MzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDIwNDQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyMDQ1MDogMDAgMDIgMDAgMDAg
MDkgMDAgRTkgNTEgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5RLi4uLi4uLi4KICAg
MjA0NjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDM3IDI1IEE0ICAu
Li4uLi4uLi5ALi4uNyUuCiAgIDIwNDcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyMDQ4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjA0OTA6IDAwIDAyIDAwIDAwIDA5IDAwIEVBIDUxIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUS4uLi4uLi4uCiAgIDIwNEEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCAzNSAyNSBBNCAgLi4uLi4uLi4uQC4uLjUlLgogICAyMDRCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjA0QzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDIwNEQwOiAwMCAwMiAwMCAwMCAwOSAwMCBFQiA1MSAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlEuLi4uLi4uLgogICAyMDRFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggMzYgMjUgQTQgIC4uLi4uLi4uLkAuLi42JS4KICAg
MjA0RjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDIwNTAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyMDUxMDogMDAgMDIgMDAgMDAg
MDkgMDAgRUMgNTEgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5RLi4uLi4uLi4KICAg
MjA1MjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDM2IDI1IEE0ICAu
Li4uLi4uLi5ALi4uNiUuCiAgIDIwNTMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyMDU0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjA1NTA6IDAwIDAyIDAwIDAwIDA5IDAwIEVEIDUxIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUS4uLi4uLi4uCiAgIDIwNTYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCAzMSAyNSBBNCAgLi4uLi4uLi4uQC4uLjElLgogICAyMDU3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjA1ODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDIwNTkwOiAwMCAwMiAwMCAwMCAwOSAwMCBFRSA1MSAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlEuLi4uLi4uLgogICAyMDVBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggMzQgMjUgQTQgIC4uLi4uLi4uLkAuLi40JS4KICAg
MjA1QjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDIwNUMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyMDVEMDogMDAgMDIgMDAgMDAg
MDkgMDAgRUYgNTEgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5RLi4uLi4uLi4KICAg
MjA1RTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDM1IDI1IEE0ICAu
Li4uLi4uLi5ALi4uNSUuCiAgIDIwNUYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyMDYwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjA2MTA6IDAwIDAyIDAwIDAwIDA5IDAwIEYwIDUxIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUS4uLi4uLi4uCiAgIDIwNjIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCAzMiAyNSBBNCAgLi4uLi4uLi4uQC4uLjIlLgogICAyMDYzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjA2NDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDIwNjUwOiAwMCAwMiAwMCAwMCAwOSAwMCBGMSA1MSAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlEuLi4uLi4uLgogICAyMDY2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggMzQgMjUgQTQgIC4uLi4uLi4uLkAuLi40JS4KICAg
MjA2NzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDIwNjgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyMDY5MDogMDAgMDIgMDAgMDAg
MDkgMDAgRjIgNTEgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5RLi4uLi4uLi4KICAg
MjA2QTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDMyIDI1IEE0ICAu
Li4uLi4uLi5ALi4uMiUuCiAgIDIwNkIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyMDZDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjA2RDA6IDAwIDAyIDAwIDAwIDA5IDAwIEYzIDUxIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUS4uLi4uLi4uCiAgIDIwNkUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCAzMyAyNSBBNCAgLi4uLi4uLi4uQC4uLjMlLgogICAyMDZGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjA3MDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDIwNzEwOiAwMCAwMiAwMCAwMCAwOSAwMCBGNCA1MSAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlEuLi4uLi4uLgogICAyMDcyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggMzMgMjUgQTQgIC4uLi4uLi4uLkAuLi4zJS4KICAg
MjA3MzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDIwNzQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyMDc1MDogMDAgMDIgMDAgMDAg
MDkgMDAgRjUgNTEgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5RLi4uLi4uLi4KICAg
MjA3NjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDIwIDI1IEE0ICAu
Li4uLi4uLi5ALi4uICUuCiAgIDIwNzcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyMDc4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjA3OTA6IDAwIDAyIDAwIDAwIDA5IDAwIEY2IDUxIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUS4uLi4uLi4uCiAgIDIwN0EwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCAyRiAyNSBBNCAgLi4uLi4uLi4uQC4uLi8lLgogICAyMDdCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjA3QzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDIwN0QwOiAwMCAwMiAwMCAwMCAwOSAwMCBGNyA1MSAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlEuLi4uLi4uLgogICAyMDdFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggMkYgMjUgQTQgIC4uLi4uLi4uLkAuLi4vJS4KICAg
MjA3RjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDIwODAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyMDgxMDogMDAgMDIgMDAgMDAg
MDkgMDAgRjggNTEgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5RLi4uLi4uLi4KICAg
MjA4MjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDJCIDI1IEE0ICAu
Li4uLi4uLi5ALi4uKyUuCiAgIDIwODMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyMDg0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjA4NTA6IDAwIDAyIDAwIDAwIDA5IDAwIEY5IDUxIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUS4uLi4uLi4uCiAgIDIwODYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCAyRSAyNSBBNCAgLi4uLi4uLi4uQC4uLi4lLgogICAyMDg3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjA4ODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDIwODkwOiAwMCAwMiAwMCAwMCAwOSAwMCBGQSA1MSAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlEuLi4uLi4uLgogICAyMDhBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggMkUgMjUgQTQgIC4uLi4uLi4uLkAuLi4uJS4KICAg
MjA4QjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDIwOEMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyMDhEMDogMDAgMDIgMDAgMDAg
MDkgMDAgRkIgNTEgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5RLi4uLi4uLi4KICAg
MjA4RTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDJCIDI1IEE0ICAu
Li4uLi4uLi5ALi4uKyUuCiAgIDIwOEYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyMDkwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjA5MTA6IDAwIDAyIDAwIDAwIDA5IDAwIEZDIDUxIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUS4uLi4uLi4uCiAgIDIwOTIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCAyRCAyNSBBNCAgLi4uLi4uLi4uQC4uLi0lLgogICAyMDkzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjA5NDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDIwOTUwOiAwMCAwMiAwMCAwMCAwOSAwMCBGRCA1MSAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlEuLi4uLi4uLgogICAyMDk2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggMkMgMjUgQTQgIC4uLi4uLi4uLkAuLi4sJS4KICAg
MjA5NzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDIwOTgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyMDk5MDogMDAgMDIgMDAgMDAg
MDkgMDAgRkUgNTEgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5RLi4uLi4uLi4KICAg
MjA5QTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDJDIDI1IEE0ICAu
Li4uLi4uLi5ALi4uLCUuCiAgIDIwOUIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyMDlDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjA5RDA6IDAwIDAyIDAwIDAwIDA5IDAwIEZGIDUxIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUS4uLi4uLi4uCiAgIDIwOUUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCAyRCAyNSBBNCAgLi4uLi4uLi4uQC4uLi0lLgogICAyMDlGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjBBMDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDIwQTEwOiAwMCAwMiAwMCAwMCAwOSAwMCAwMCA1MiAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlIuLi4uLi4uLgogICAyMEEyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggMjAgMjUgQTQgIC4uLi4uLi4uLkAuLi4gJS4KICAg
MjBBMzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDIwQTQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyMEE1MDogMDAgMDIgMDAgMDAg
MDkgMDAgMDEgNTIgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5SLi4uLi4uLi4KICAg
MjBBNjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDJBIDI1IEE0ICAu
Li4uLi4uLi5ALi4uKiUuCiAgIDIwQTcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyMEE4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjBBOTA6IDAwIDAyIDAwIDAwIDA5IDAwIDAyIDUyIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUi4uLi4uLi4uCiAgIDIwQUEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCAyQSAyNSBBNCAgLi4uLi4uLi4uQC4uLiolLgogICAyMEFCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjBBQzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDIwQUQwOiAwMCAwMiAwMCAwMCAwOSAwMCAwMyA1MiAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlIuLi4uLi4uLgogICAyMEFFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggMjcgMjUgQTQgIC4uLi4uLi4uLkAuLi4nJS4KICAg
MjBBRjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDIwQjAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyMEIxMDogMDAgMDIgMDAgMDAg
MDkgMDAgMDQgNTIgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5SLi4uLi4uLi4KICAg
MjBCMjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDI5IDI1IEE0ICAu
Li4uLi4uLi5ALi4uKSUuCiAgIDIwQjMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyMEI0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjBCNTA6IDAwIDAyIDAwIDAwIDA5IDAwIDA1IDUyIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUi4uLi4uLi4uCiAgIDIwQjYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCAyOCAyNSBBNCAgLi4uLi4uLi4uQC4uLiglLgogICAyMEI3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjBCODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDIwQjkwOiAwMCAwMiAwMCAwMCAwOSAwMCAwNiA1MiAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlIuLi4uLi4uLgogICAyMEJBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggMjggMjUgQTQgIC4uLi4uLi4uLkAuLi4oJS4KICAg
MjBCQjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDIwQkMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyMEJEMDogMDAgMDIgMDAgMDAg
MDkgMDAgMDcgNTIgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5SLi4uLi4uLi4KICAg
MjBCRTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDI5IDI1IEE0ICAu
Li4uLi4uLi5ALi4uKSUuCiAgIDIwQkYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyMEMwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjBDMTA6IDAwIDAyIDAwIDAwIDA5IDAwIDA4IDUyIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUi4uLi4uLi4uCiAgIDIwQzIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCAyMSAyNSBBNCAgLi4uLi4uLi4uQC4uLiElLgogICAyMEMzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjBDNDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDIwQzUwOiAwMCAwMiAwMCAwMCAwOSAwMCAwOSA1MiAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlIuLi4uLi4uLgogICAyMEM2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggMjcgMjUgQTQgIC4uLi4uLi4uLkAuLi4nJS4KICAg
MjBDNzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDIwQzgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyMEM5MDogMDAgMDIgMDAgMDAg
MDkgMDAgMEEgNTIgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5SLi4uLi4uLi4KICAg
MjBDQTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDI1IDI1IEE0ICAu
Li4uLi4uLi5ALi4uJSUuCiAgIDIwQ0IwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyMENDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjBDRDA6IDAwIDAyIDAwIDAwIDA5IDAwIDBCIDUyIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUi4uLi4uLi4uCiAgIDIwQ0UwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCAyNiAyNSBBNCAgLi4uLi4uLi4uQC4uLiYlLgogICAyMENGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjBEMDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDIwRDEwOiAwMCAwMiAwMCAwMCAwOSAwMCAwQyA1MiAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlIuLi4uLi4uLgogICAyMEQyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggMjYgMjUgQTQgIC4uLi4uLi4uLkAuLi4mJS4KICAg
MjBEMzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDIwRDQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyMEQ1MDogMDAgMDIgMDAgMDAg
MDkgMDAgMEQgNTIgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5SLi4uLi4uLi4KICAg
MjBENjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDIxIDI1IEE0ICAu
Li4uLi4uLi5ALi4uISUuCiAgIDIwRDcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyMEQ4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjBEOTA6IDAwIDAyIDAwIDAwIDA5IDAwIDBFIDUyIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUi4uLi4uLi4uCiAgIDIwREEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCAyNCAyNSBBNCAgLi4uLi4uLi4uQC4uLiQlLgogICAyMERCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjBEQzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDIwREQwOiAwMCAwMiAwMCAwMCAwOSAwMCAwRiA1MiAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlIuLi4uLi4uLgogICAyMERFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggMjUgMjUgQTQgIC4uLi4uLi4uLkAuLi4lJS4KICAg
MjBERjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDIwRTAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyMEUxMDogMDAgMDIgMDAgMDAg
MDkgMDAgMTAgNTIgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5SLi4uLi4uLi4KICAg
MjBFMjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDIyIDI1IEE0ICAu
Li4uLi4uLi5ALi4uIiUuCiAgIDIwRTMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyMEU0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjBFNTA6IDAwIDAyIDAwIDAwIDA5IDAwIDExIDUyIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUi4uLi4uLi4uCiAgIDIwRTYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCAyNCAyNSBBNCAgLi4uLi4uLi4uQC4uLiQlLgogICAyMEU3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjBFODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDIwRTkwOiAwMCAwMiAwMCAwMCAwOSAwMCAxMiA1MiAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlIuLi4uLi4uLgogICAyMEVBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggMjIgMjUgQTQgIC4uLi4uLi4uLkAuLi4iJS4KICAg
MjBFQjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDIwRUMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyMEVEMDogMDAgMDIgMDAgMDAg
MDkgMDAgMTMgNTIgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5SLi4uLi4uLi4KICAg
MjBFRTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDIzIDI1IEE0ICAu
Li4uLi4uLi5ALi4uIyUuCiAgIDIwRUYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyMEYwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjBGMTA6IDAwIDAyIDAwIDAwIDA5IDAwIDE0IDUyIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUi4uLi4uLi4uCiAgIDIwRjIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCAyMyAyNSBBNCAgLi4uLi4uLi4uQC4uLiMlLgogICAyMEYzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjBGNDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDIwRjUwOiAwMCAwMiAwMCAwMCAwOSAwMCAxNSA1MiAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlIuLi4uLi4uLgogICAyMEY2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggMTAgMjUgQTQgIC4uLi4uLi4uLkAuLi4uJS4KICAg
MjBGNzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDIwRjgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyMEY5MDogMDAgMDIgMDAgMDAg
MDkgMDAgMTYgNTIgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5SLi4uLi4uLi4KICAg
MjBGQTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDFGIDI1IEE0ICAu
Li4uLi4uLi5ALi4uLiUuCiAgIDIwRkIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyMEZDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjBGRDA6IDAwIDAyIDAwIDAwIDA5IDAwIDE3IDUyIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUi4uLi4uLi4uCiAgIDIwRkUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCAxRiAyNSBBNCAgLi4uLi4uLi4uQC4uLi4lLgogICAyMEZGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjEwMDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDIxMDEwOiAwMCAwMiAwMCAwMCAwOSAwMCAxOCA1MiAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlIuLi4uLi4uLgogICAyMTAyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggMUIgMjUgQTQgIC4uLi4uLi4uLkAuLi4uJS4KICAg
MjEwMzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDIxMDQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyMTA1MDogMDAgMDIgMDAgMDAg
MDkgMDAgMTkgNTIgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5SLi4uLi4uLi4KICAg
MjEwNjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDFFIDI1IEE0ICAu
Li4uLi4uLi5ALi4uLiUuCiAgIDIxMDcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyMTA4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjEwOTA6IDAwIDAyIDAwIDAwIDA5IDAwIDFBIDUyIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUi4uLi4uLi4uCiAgIDIxMEEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCAxRSAyNSBBNCAgLi4uLi4uLi4uQC4uLi4lLgogICAyMTBCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjEwQzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDIxMEQwOiAwMCAwMiAwMCAwMCAwOSAwMCAxQiA1MiAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlIuLi4uLi4uLgogICAyMTBFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggMUIgMjUgQTQgIC4uLi4uLi4uLkAuLi4uJS4KICAg
MjEwRjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDIxMTAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyMTExMDogMDAgMDIgMDAgMDAg
MDkgMDAgMUMgNTIgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5SLi4uLi4uLi4KICAg
MjExMjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDFEIDI1IEE0ICAu
Li4uLi4uLi5ALi4uLiUuCiAgIDIxMTMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyMTE0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjExNTA6IDAwIDAyIDAwIDAwIDA5IDAwIDFEIDUyIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUi4uLi4uLi4uCiAgIDIxMTYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCAxQyAyNSBBNCAgLi4uLi4uLi4uQC4uLi4lLgogICAyMTE3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjExODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDIxMTkwOiAwMCAwMiAwMCAwMCAwOSAwMCAxRSA1MiAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlIuLi4uLi4uLgogICAyMTFBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggMUMgMjUgQTQgIC4uLi4uLi4uLkAuLi4uJS4KICAg
MjExQjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDIxMUMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyMTFEMDogMDAgMDIgMDAgMDAg
MDkgMDAgMUYgNTIgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5SLi4uLi4uLi4KICAg
MjExRTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDFEIDI1IEE0ICAu
Li4uLi4uLi5ALi4uLiUuCiAgIDIxMUYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyMTIwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjEyMTA6IDAwIDAyIDAwIDAwIDA5IDAwIDIwIDUyIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4gUi4uLi4uLi4uCiAgIDIxMjIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCAxMCAyNSBBNCAgLi4uLi4uLi4uQC4uLi4lLgogICAyMTIzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjEyNDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDIxMjUwOiAwMCAwMiAwMCAwMCAwOSAwMCAyMSA1MiAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uIVIuLi4uLi4uLgogICAyMTI2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggMUEgMjUgQTQgIC4uLi4uLi4uLkAuLi4uJS4KICAg
MjEyNzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDIxMjgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyMTI5MDogMDAgMDIgMDAgMDAg
MDkgMDAgMjIgNTIgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLiJSLi4uLi4uLi4KICAg
MjEyQTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDFBIDI1IEE0ICAu
Li4uLi4uLi5ALi4uLiUuCiAgIDIxMkIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyMTJDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjEyRDA6IDAwIDAyIDAwIDAwIDA5IDAwIDIzIDUyIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4jUi4uLi4uLi4uCiAgIDIxMkUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCAxNyAyNSBBNCAgLi4uLi4uLi4uQC4uLi4lLgogICAyMTJGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjEzMDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDIxMzEwOiAwMCAwMiAwMCAwMCAwOSAwMCAyNCA1MiAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uJFIuLi4uLi4uLgogICAyMTMyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggMTkgMjUgQTQgIC4uLi4uLi4uLkAuLi4uJS4KICAg
MjEzMzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDIxMzQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyMTM1MDogMDAgMDIgMDAgMDAg
MDkgMDAgMjUgNTIgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLiVSLi4uLi4uLi4KICAg
MjEzNjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDE4IDI1IEE0ICAu
Li4uLi4uLi5ALi4uLiUuCiAgIDIxMzcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyMTM4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjEzOTA6IDAwIDAyIDAwIDAwIDA5IDAwIDI2IDUyIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4mUi4uLi4uLi4uCiAgIDIxM0EwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCAxOCAyNSBBNCAgLi4uLi4uLi4uQC4uLi4lLgogICAyMTNCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjEzQzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDIxM0QwOiAwMCAwMiAwMCAwMCAwOSAwMCAyNyA1MiAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uJ1IuLi4uLi4uLgogICAyMTNFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggMTkgMjUgQTQgIC4uLi4uLi4uLkAuLi4uJS4KICAg
MjEzRjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDIxNDAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyMTQxMDogMDAgMDIgMDAgMDAg
MDkgMDAgMjggNTIgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLihSLi4uLi4uLi4KICAg
MjE0MjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDExIDI1IEE0ICAu
Li4uLi4uLi5ALi4uLiUuCiAgIDIxNDMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyMTQ0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjE0NTA6IDAwIDAyIDAwIDAwIDA5IDAwIDI5IDUyIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4pUi4uLi4uLi4uCiAgIDIxNDYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCAxNyAyNSBBNCAgLi4uLi4uLi4uQC4uLi4lLgogICAyMTQ3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjE0ODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDIxNDkwOiAwMCAwMiAwMCAwMCAwOSAwMCAyQSA1MiAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uKlIuLi4uLi4uLgogICAyMTRBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggMTUgMjUgQTQgIC4uLi4uLi4uLkAuLi4uJS4KICAg
MjE0QjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDIxNEMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyMTREMDogMDAgMDIgMDAgMDAg
MDkgMDAgMkIgNTIgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLitSLi4uLi4uLi4KICAg
MjE0RTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDE2IDI1IEE0ICAu
Li4uLi4uLi5ALi4uLiUuCiAgIDIxNEYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyMTUwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjE1MTA6IDAwIDAyIDAwIDAwIDA5IDAwIDJDIDUyIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4sUi4uLi4uLi4uCiAgIDIxNTIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCAxNiAyNSBBNCAgLi4uLi4uLi4uQC4uLi4lLgogICAyMTUzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjE1NDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDIxNTUwOiAwMCAwMiAwMCAwMCAwOSAwMCAyRCA1MiAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLVIuLi4uLi4uLgogICAyMTU2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggMTEgMjUgQTQgIC4uLi4uLi4uLkAuLi4uJS4KICAg
MjE1NzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDIxNTgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyMTU5MDogMDAgMDIgMDAgMDAg
MDkgMDAgMkUgNTIgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5SLi4uLi4uLi4KICAg
MjE1QTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDE0IDI1IEE0ICAu
Li4uLi4uLi5ALi4uLiUuCiAgIDIxNUIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyMTVDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjE1RDA6IDAwIDAyIDAwIDAwIDA5IDAwIDJGIDUyIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4vUi4uLi4uLi4uCiAgIDIxNUUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCAxNSAyNSBBNCAgLi4uLi4uLi4uQC4uLi4lLgogICAyMTVGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjE2MDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDIxNjEwOiAwMCAwMiAwMCAwMCAwOSAwMCAzMCA1MiAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uMFIuLi4uLi4uLgogICAyMTYyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggMTIgMjUgQTQgIC4uLi4uLi4uLkAuLi4uJS4KICAg
MjE2MzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDIxNjQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyMTY1MDogMDAgMDIgMDAgMDAg
MDkgMDAgMzEgNTIgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLjFSLi4uLi4uLi4KICAg
MjE2NjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDE0IDI1IEE0ICAu
Li4uLi4uLi5ALi4uLiUuCiAgIDIxNjcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyMTY4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjE2OTA6IDAwIDAyIDAwIDAwIDA5IDAwIDMyIDUyIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4yUi4uLi4uLi4uCiAgIDIxNkEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCAxMiAyNSBBNCAgLi4uLi4uLi4uQC4uLi4lLgogICAyMTZCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjE2QzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDIxNkQwOiAwMCAwMiAwMCAwMCAwOSAwMCAzMyA1MiAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uM1IuLi4uLi4uLgogICAyMTZFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggMTMgMjUgQTQgIC4uLi4uLi4uLkAuLi4uJS4KICAg
MjE2RjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDIxNzAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyMTcxMDogMDAgMDIgMDAgMDAg
MDkgMDAgMzQgNTIgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLjRSLi4uLi4uLi4KICAg
MjE3MjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDEzIDI1IEE0ICAu
Li4uLi4uLi5ALi4uLiUuCiAgIDIxNzMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyMTc0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjE3NTA6IDAwIDAyIDAwIDAwIDA5IDAwIDM1IDUyIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi41Ui4uLi4uLi4uCiAgIDIxNzYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCAwMCAyNSBBNCAgLi4uLi4uLi4uQC4uLi4lLgogICAyMTc3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjE3ODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDIxNzkwOiAwMCAwMiAwMCAwMCAwOSAwMCAzNiA1MiAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uNlIuLi4uLi4uLgogICAyMTdBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggMEYgMjUgQTQgIC4uLi4uLi4uLkAuLi4uJS4KICAg
MjE3QjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDIxN0MwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyMTdEMDogMDAgMDIgMDAgMDAg
MDkgMDAgMzcgNTIgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLjdSLi4uLi4uLi4KICAg
MjE3RTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDBGIDI1IEE0ICAu
Li4uLi4uLi5ALi4uLiUuCiAgIDIxN0YwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyMTgwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjE4MTA6IDAwIDAyIDAwIDAwIDA5IDAwIDM4IDUyIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi44Ui4uLi4uLi4uCiAgIDIxODIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCAwQiAyNSBBNCAgLi4uLi4uLi4uQC4uLi4lLgogICAyMTgzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjE4NDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDIxODUwOiAwMCAwMiAwMCAwMCAwOSAwMCAzOSA1MiAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uOVIuLi4uLi4uLgogICAyMTg2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggMEUgMjUgQTQgIC4uLi4uLi4uLkAuLi4uJS4KICAg
MjE4NzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDIxODgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyMTg5MDogMDAgMDIgMDAgMDAg
MDkgMDAgM0EgNTIgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLjpSLi4uLi4uLi4KICAg
MjE4QTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDBFIDI1IEE0ICAu
Li4uLi4uLi5ALi4uLiUuCiAgIDIxOEIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyMThDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjE4RDA6IDAwIDAyIDAwIDAwIDA5IDAwIDNCIDUyIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi47Ui4uLi4uLi4uCiAgIDIxOEUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCAwQiAyNSBBNCAgLi4uLi4uLi4uQC4uLi4lLgogICAyMThGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjE5MDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDIxOTEwOiAwMCAwMiAwMCAwMCAwOSAwMCAzQyA1MiAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uPFIuLi4uLi4uLgogICAyMTkyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggMEQgMjUgQTQgIC4uLi4uLi4uLkAuLi4uJS4KICAg
MjE5MzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDIxOTQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyMTk1MDogMDAgMDIgMDAgMDAg
MDkgMDAgM0QgNTIgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLj1SLi4uLi4uLi4KICAg
MjE5NjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDBDIDI1IEE0ICAu
Li4uLi4uLi5ALi4uLiUuCiAgIDIxOTcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyMTk4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjE5OTA6IDAwIDAyIDAwIDAwIDA5IDAwIDNFIDUyIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4+Ui4uLi4uLi4uCiAgIDIxOUEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCAwQyAyNSBBNCAgLi4uLi4uLi4uQC4uLi4lLgogICAyMTlCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjE5QzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDIxOUQwOiAwMCAwMiAwMCAwMCAwOSAwMCAzRiA1MiAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uP1IuLi4uLi4uLgogICAyMTlFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggMEQgMjUgQTQgIC4uLi4uLi4uLkAuLi4uJS4KICAg
MjE5RjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDIxQTAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyMUExMDogMDAgMDIgMDAgMDAg
MDkgMDAgNDAgNTIgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLkBSLi4uLi4uLi4KICAg
MjFBMjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDAwIDI1IEE0ICAu
Li4uLi4uLi5ALi4uLiUuCiAgIDIxQTMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyMUE0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjFBNTA6IDAwIDAyIDAwIDAwIDA5IDAwIDQxIDUyIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5BUi4uLi4uLi4uCiAgIDIxQTYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCAwQSAyNSBBNCAgLi4uLi4uLi4uQC4uLi4lLgogICAyMUE3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjFBODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDIxQTkwOiAwMCAwMiAwMCAwMCAwOSAwMCA0MiA1MiAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uQlIuLi4uLi4uLgogICAyMUFBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggMEEgMjUgQTQgIC4uLi4uLi4uLkAuLi4uJS4KICAg
MjFBQjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDIxQUMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyMUFEMDogMDAgMDIgMDAgMDAg
MDkgMDAgNDMgNTIgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLkNSLi4uLi4uLi4KICAg
MjFBRTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDA3IDI1IEE0ICAu
Li4uLi4uLi5ALi4uLiUuCiAgIDIxQUYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyMUIwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjFCMTA6IDAwIDAyIDAwIDAwIDA5IDAwIDQ0IDUyIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5EUi4uLi4uLi4uCiAgIDIxQjIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCAwOSAyNSBBNCAgLi4uLi4uLi4uQC4uLi4lLgogICAyMUIzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjFCNDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDIxQjUwOiAwMCAwMiAwMCAwMCAwOSAwMCA0NSA1MiAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uRVIuLi4uLi4uLgogICAyMUI2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggMDggMjUgQTQgIC4uLi4uLi4uLkAuLi4uJS4KICAg
MjFCNzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDIxQjgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyMUI5MDogMDAgMDIgMDAgMDAg
MDkgMDAgNDYgNTIgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLkZSLi4uLi4uLi4KICAg
MjFCQTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDA4IDI1IEE0ICAu
Li4uLi4uLi5ALi4uLiUuCiAgIDIxQkIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyMUJDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjFCRDA6IDAwIDAyIDAwIDAwIDA5IDAwIDQ3IDUyIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5HUi4uLi4uLi4uCiAgIDIxQkUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCAwOSAyNSBBNCAgLi4uLi4uLi4uQC4uLi4lLgogICAyMUJGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjFDMDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDIxQzEwOiAwMCAwMiAwMCAwMCAwOSAwMCA0OCA1MiAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uSFIuLi4uLi4uLgogICAyMUMyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggMDEgMjUgQTQgIC4uLi4uLi4uLkAuLi4uJS4KICAg
MjFDMzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDIxQzQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyMUM1MDogMDAgMDIgMDAgMDAg
MDkgMDAgNDkgNTIgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLklSLi4uLi4uLi4KICAg
MjFDNjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDA3IDI1IEE0ICAu
Li4uLi4uLi5ALi4uLiUuCiAgIDIxQzcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyMUM4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjFDOTA6IDAwIDAyIDAwIDAwIDA5IDAwIDRBIDUyIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5KUi4uLi4uLi4uCiAgIDIxQ0EwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCAwNSAyNSBBNCAgLi4uLi4uLi4uQC4uLi4lLgogICAyMUNCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjFDQzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDIxQ0QwOiAwMCAwMiAwMCAwMCAwOSAwMCA0QiA1MiAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uS1IuLi4uLi4uLgogICAyMUNFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggMDYgMjUgQTQgIC4uLi4uLi4uLkAuLi4uJS4KICAg
MjFDRjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDIxRDAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyMUQxMDogMDAgMDIgMDAgMDAg
MDkgMDAgNEMgNTIgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLkxSLi4uLi4uLi4KICAg
MjFEMjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDA2IDI1IEE0ICAu
Li4uLi4uLi5ALi4uLiUuCiAgIDIxRDMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyMUQ0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjFENTA6IDAwIDAyIDAwIDAwIDA5IDAwIDREIDUyIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5NUi4uLi4uLi4uCiAgIDIxRDYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCAwMSAyNSBBNCAgLi4uLi4uLi4uQC4uLi4lLgogICAyMUQ3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjFEODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDIxRDkwOiAwMCAwMiAwMCAwMCAwOSAwMCA0RSA1MiAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uTlIuLi4uLi4uLgogICAyMURBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggMDQgMjUgQTQgIC4uLi4uLi4uLkAuLi4uJS4KICAg
MjFEQjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDIxREMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyMUREMDogMDAgMDIgMDAgMDAg
MDkgMDAgNEYgNTIgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLk9SLi4uLi4uLi4KICAg
MjFERTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDA1IDI1IEE0ICAu
Li4uLi4uLi5ALi4uLiUuCiAgIDIxREYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyMUUwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjFFMTA6IDAwIDAyIDAwIDAwIDA5IDAwIDUwIDUyIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5QUi4uLi4uLi4uCiAgIDIxRTIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCAwMiAyNSBBNCAgLi4uLi4uLi4uQC4uLi4lLgogICAyMUUzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjFFNDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDIxRTUwOiAwMCAwMiAwMCAwMCAwOSAwMCA1MSA1MiAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uUVIuLi4uLi4uLgogICAyMUU2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggMDQgMjUgQTQgIC4uLi4uLi4uLkAuLi4uJS4KICAg
MjFFNzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDIxRTgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyMUU5MDogMDAgMDIgMDAgMDAg
MDkgMDAgNTIgNTIgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLlJSLi4uLi4uLi4KICAg
MjFFQTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDAyIDI1IEE0ICAu
Li4uLi4uLi5ALi4uLiUuCiAgIDIxRUIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyMUVDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjFFRDA6IDAwIDAyIDAwIDAwIDA5IDAwIDUzIDUyIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5TUi4uLi4uLi4uCiAgIDIxRUUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCAwMyAyNSBBNCAgLi4uLi4uLi4uQC4uLi4lLgogICAyMUVGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjFGMDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDIxRjEwOiAwMCAwMiAwMCAwMCAwOSAwMCA1NCA1MiAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uVFIuLi4uLi4uLgogICAyMUYyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggMDMgMjUgQTQgIC4uLi4uLi4uLkAuLi4uJS4KICAg
MjFGMzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDIxRjQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyMUY1MDogMDAgMDIgMDAgMDAg
MDkgMDAgNTUgNTIgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLlVSLi4uLi4uLi4KICAg
MjFGNjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IEYwIDI0IEE0ICAu
Li4uLi4uLi5ALi4uLiQuCiAgIDIxRjcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyMUY4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjFGOTA6IDAwIDAyIDAwIDAwIDA5IDAwIDU2IDUyIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5WUi4uLi4uLi4uCiAgIDIxRkEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBGRiAyNCBBNCAgLi4uLi4uLi4uQC4uLi4kLgogICAyMUZCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjFGQzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDIxRkQwOiAwMCAwMiAwMCAwMCAwOSAwMCA1NyA1MiAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uV1IuLi4uLi4uLgogICAyMUZFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggRkYgMjQgQTQgIC4uLi4uLi4uLkAuLi4uJC4KICAg
MjFGRjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDIyMDAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyMjAxMDogMDAgMDIgMDAgMDAg
MDkgMDAgNTggNTIgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLlhSLi4uLi4uLi4KICAg
MjIwMjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IEZCIDI0IEE0ICAu
Li4uLi4uLi5ALi4uLiQuCiAgIDIyMDMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyMjA0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjIwNTA6IDAwIDAyIDAwIDAwIDA5IDAwIDU5IDUyIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5ZUi4uLi4uLi4uCiAgIDIyMDYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBGRSAyNCBBNCAgLi4uLi4uLi4uQC4uLi4kLgogICAyMjA3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjIwODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDIyMDkwOiAwMCAwMiAwMCAwMCAwOSAwMCA1QSA1MiAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uWlIuLi4uLi4uLgogICAyMjBBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggRkUgMjQgQTQgIC4uLi4uLi4uLkAuLi4uJC4KICAg
MjIwQjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDIyMEMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyMjBEMDogMDAgMDIgMDAgMDAg
MDkgMDAgNUIgNTIgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLltSLi4uLi4uLi4KICAg
MjIwRTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IEZCIDI0IEE0ICAu
Li4uLi4uLi5ALi4uLiQuCiAgIDIyMEYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyMjEwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjIxMTA6IDAwIDAyIDAwIDAwIDA5IDAwIDVDIDUyIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5cUi4uLi4uLi4uCiAgIDIyMTIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCBGRCAyNCBBNCAgLi4uLi4uLi4uQC4uLi4kLgogICAyMjEzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjIxNDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDIyMTUwOiAwMCAwMiAwMCAwMCAwOSAwMCA1RCA1MiAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uXVIuLi4uLi4uLgogICAyMjE2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggRkMgMjQgQTQgIC4uLi4uLi4uLkAuLi4uJC4KICAg
MjIxNzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDIyMTgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyMjE5MDogMDAgMDIgMDAgMDAg
MDkgMDAgNUUgNTIgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLl5SLi4uLi4uLi4KICAg
MjIxQTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IEZDIDI0IEE0ICAu
Li4uLi4uLi5ALi4uLiQuCiAgIDIyMUIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyMjFDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjIxRDA6IDAwIDAyIDAwIDAwIDA5IDAwIDVGIDUyIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5fUi4uLi4uLi4uCiAgIDIyMUUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBGRCAyNCBBNCAgLi4uLi4uLi4uQC4uLi4kLgogICAyMjFGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjIyMDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDIyMjEwOiAwMCAwMiAwMCAwMCAwOSAwMCA2MCA1MiAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uYFIuLi4uLi4uLgogICAyMjIyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggRjAgMjQgQTQgIC4uLi4uLi4uLkAuLi4uJC4KICAg
MjIyMzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDIyMjQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyMjI1MDogMDAgMDIgMDAgMDAg
MDkgMDAgNjEgNTIgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLmFSLi4uLi4uLi4KICAg
MjIyNjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IEZBIDI0IEE0ICAu
Li4uLi4uLi5ALi4uLiQuCiAgIDIyMjcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyMjI4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjIyOTA6IDAwIDAyIDAwIDAwIDA5IDAwIDYyIDUyIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5iUi4uLi4uLi4uCiAgIDIyMkEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCBGQSAyNCBBNCAgLi4uLi4uLi4uQC4uLi4kLgogICAyMjJCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjIyQzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDIyMkQwOiAwMCAwMiAwMCAwMCAwOSAwMCA2MyA1MiAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uY1IuLi4uLi4uLgogICAyMjJFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggRjcgMjQgQTQgIC4uLi4uLi4uLkAuLi4uJC4KICAg
MjIyRjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDIyMzAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyMjMxMDogMDAgMDIgMDAgMDAg
MDkgMDAgNjQgNTIgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLmRSLi4uLi4uLi4KICAg
MjIzMjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IEY5IDI0IEE0ICAu
Li4uLi4uLi5ALi4uLiQuCiAgIDIyMzMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyMjM0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjIzNTA6IDAwIDAyIDAwIDAwIDA5IDAwIDY1IDUyIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5lUi4uLi4uLi4uCiAgIDIyMzYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBGOCAyNCBBNCAgLi4uLi4uLi4uQC4uLi4kLgogICAyMjM3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjIzODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDIyMzkwOiAwMCAwMiAwMCAwMCAwOSAwMCA2NiA1MiAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uZlIuLi4uLi4uLgogICAyMjNBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggRjggMjQgQTQgIC4uLi4uLi4uLkAuLi4uJC4KICAg
MjIzQjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDIyM0MwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyMjNEMDogMDAgMDIgMDAgMDAg
MDkgMDAgNjcgNTIgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLmdSLi4uLi4uLi4KICAg
MjIzRTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IEY5IDI0IEE0ICAu
Li4uLi4uLi5ALi4uLiQuCiAgIDIyM0YwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyMjQwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjI0MTA6IDAwIDAyIDAwIDAwIDA5IDAwIDY4IDUyIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5oUi4uLi4uLi4uCiAgIDIyNDIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBGMSAyNCBBNCAgLi4uLi4uLi4uQC4uLi4kLgogICAyMjQzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjI0NDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDIyNDUwOiAwMCAwMiAwMCAwMCAwOSAwMCA2OSA1MiAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uaVIuLi4uLi4uLgogICAyMjQ2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggRjcgMjQgQTQgIC4uLi4uLi4uLkAuLi4uJC4KICAg
MjI0NzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDIyNDgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyMjQ5MDogMDAgMDIgMDAgMDAg
MDkgMDAgNkEgNTIgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLmpSLi4uLi4uLi4KICAg
MjI0QTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IEY1IDI0IEE0ICAu
Li4uLi4uLi5ALi4uLiQuCiAgIDIyNEIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyMjRDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjI0RDA6IDAwIDAyIDAwIDAwIDA5IDAwIDZCIDUyIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5rUi4uLi4uLi4uCiAgIDIyNEUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBGNiAyNCBBNCAgLi4uLi4uLi4uQC4uLi4kLgogICAyMjRGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjI1MDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDIyNTEwOiAwMCAwMiAwMCAwMCAwOSAwMCA2QyA1MiAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4ubFIuLi4uLi4uLgogICAyMjUyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggRjYgMjQgQTQgIC4uLi4uLi4uLkAuLi4uJC4KICAg
MjI1MzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDIyNTQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyMjU1MDogMDAgMDIgMDAgMDAg
MDkgMDAgNkQgNTIgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLm1SLi4uLi4uLi4KICAg
MjI1NjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IEYxIDI0IEE0ICAu
Li4uLi4uLi5ALi4uLiQuCiAgIDIyNTcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyMjU4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjI1OTA6IDAwIDAyIDAwIDAwIDA5IDAwIDZFIDUyIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5uUi4uLi4uLi4uCiAgIDIyNUEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCBGNCAyNCBBNCAgLi4uLi4uLi4uQC4uLi4kLgogICAyMjVCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjI1QzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDIyNUQwOiAwMCAwMiAwMCAwMCAwOSAwMCA2RiA1MiAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4ub1IuLi4uLi4uLgogICAyMjVFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggRjUgMjQgQTQgIC4uLi4uLi4uLkAuLi4uJC4KICAg
MjI1RjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDIyNjAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyMjYxMDogMDAgMDIgMDAgMDAg
MDkgMDAgNzAgNTIgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLnBSLi4uLi4uLi4KICAg
MjI2MjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IEYyIDI0IEE0ICAu
Li4uLi4uLi5ALi4uLiQuCiAgIDIyNjMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyMjY0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjI2NTA6IDAwIDAyIDAwIDAwIDA5IDAwIDcxIDUyIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5xUi4uLi4uLi4uCiAgIDIyNjYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBGNCAyNCBBNCAgLi4uLi4uLi4uQC4uLi4kLgogICAyMjY3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjI2ODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDIyNjkwOiAwMCAwMiAwMCAwMCAwOSAwMCA3MiA1MiAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uclIuLi4uLi4uLgogICAyMjZBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggRjIgMjQgQTQgIC4uLi4uLi4uLkAuLi4uJC4KICAg
MjI2QjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDIyNkMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyMjZEMDogMDAgMDIgMDAgMDAg
MDkgMDAgNzMgNTIgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLnNSLi4uLi4uLi4KICAg
MjI2RTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IEYzIDI0IEE0ICAu
Li4uLi4uLi5ALi4uLiQuCiAgIDIyNkYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyMjcwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjI3MTA6IDAwIDAyIDAwIDAwIDA5IDAwIDc0IDUyIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi50Ui4uLi4uLi4uCiAgIDIyNzIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCBGMyAyNCBBNCAgLi4uLi4uLi4uQC4uLi4kLgogICAyMjczMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjI3NDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDIyNzUwOiAwMCAwMiAwMCAwMCAwOSAwMCA3NSA1MiAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4udVIuLi4uLi4uLgogICAyMjc2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggRTAgMjQgQTQgIC4uLi4uLi4uLkAuLi4uJC4KICAg
MjI3NzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDIyNzgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyMjc5MDogMDAgMDIgMDAgMDAg
MDkgMDAgNzYgNTIgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLnZSLi4uLi4uLi4KICAg
MjI3QTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IEVGIDI0IEE0ICAu
Li4uLi4uLi5ALi4uLiQuCiAgIDIyN0IwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyMjdDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjI3RDA6IDAwIDAyIDAwIDAwIDA5IDAwIDc3IDUyIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi53Ui4uLi4uLi4uCiAgIDIyN0UwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCBFRiAyNCBBNCAgLi4uLi4uLi4uQC4uLi4kLgogICAyMjdGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjI4MDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDIyODEwOiAwMCAwMiAwMCAwMCAwOSAwMCA3OCA1MiAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4ueFIuLi4uLi4uLgogICAyMjgyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggRUIgMjQgQTQgIC4uLi4uLi4uLkAuLi4uJC4KICAg
MjI4MzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDIyODQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyMjg1MDogMDAgMDIgMDAgMDAg
MDkgMDAgNzkgNTIgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLnlSLi4uLi4uLi4KICAg
MjI4NjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IEVFIDI0IEE0ICAu
Li4uLi4uLi5ALi4uLiQuCiAgIDIyODcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyMjg4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjI4OTA6IDAwIDAyIDAwIDAwIDA5IDAwIDdBIDUyIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi56Ui4uLi4uLi4uCiAgIDIyOEEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCBFRSAyNCBBNCAgLi4uLi4uLi4uQC4uLi4kLgogICAyMjhCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjI4QzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDIyOEQwOiAwMCAwMiAwMCAwMCAwOSAwMCA3QiA1MiAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4ue1IuLi4uLi4uLgogICAyMjhFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggRUIgMjQgQTQgIC4uLi4uLi4uLkAuLi4uJC4KICAg
MjI4RjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDIyOTAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyMjkxMDogMDAgMDIgMDAgMDAg
MDkgMDAgN0MgNTIgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLnxSLi4uLi4uLi4KICAg
MjI5MjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IEVEIDI0IEE0ICAu
Li4uLi4uLi5ALi4uLiQuCiAgIDIyOTMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyMjk0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjI5NTA6IDAwIDAyIDAwIDAwIDA5IDAwIDdEIDUyIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi59Ui4uLi4uLi4uCiAgIDIyOTYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBFQyAyNCBBNCAgLi4uLi4uLi4uQC4uLi4kLgogICAyMjk3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjI5ODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDIyOTkwOiAwMCAwMiAwMCAwMCAwOSAwMCA3RSA1MiAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uflIuLi4uLi4uLgogICAyMjlBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggRUMgMjQgQTQgIC4uLi4uLi4uLkAuLi4uJC4KICAg
MjI5QjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDIyOUMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyMjlEMDogMDAgMDIgMDAgMDAg
MDkgMDAgN0YgNTIgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5SLi4uLi4uLi4KICAg
MjI5RTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IEVEIDI0IEE0ICAu
Li4uLi4uLi5ALi4uLiQuCiAgIDIyOUYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyMkEwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjJBMTA6IDAwIDAyIDAwIDAwIDA5IDAwIDgwIDUyIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUi4uLi4uLi4uCiAgIDIyQTIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCBFMCAyNCBBNCAgLi4uLi4uLi4uQC4uLi4kLgogICAyMkEzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjJBNDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDIyQTUwOiAwMCAwMiAwMCAwMCAwOSAwMCA4MSA1MiAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlIuLi4uLi4uLgogICAyMkE2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggRUEgMjQgQTQgIC4uLi4uLi4uLkAuLi4uJC4KICAg
MjJBNzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDIyQTgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyMkE5MDogMDAgMDIgMDAgMDAg
MDkgMDAgODIgNTIgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5SLi4uLi4uLi4KICAg
MjJBQTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IEVBIDI0IEE0ICAu
Li4uLi4uLi5ALi4uLiQuCiAgIDIyQUIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyMkFDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjJBRDA6IDAwIDAyIDAwIDAwIDA5IDAwIDgzIDUyIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUi4uLi4uLi4uCiAgIDIyQUUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCBFNyAyNCBBNCAgLi4uLi4uLi4uQC4uLi4kLgogICAyMkFGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjJCMDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDIyQjEwOiAwMCAwMiAwMCAwMCAwOSAwMCA4NCA1MiAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlIuLi4uLi4uLgogICAyMkIyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggRTkgMjQgQTQgIC4uLi4uLi4uLkAuLi4uJC4KICAg
MjJCMzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDIyQjQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyMkI1MDogMDAgMDIgMDAgMDAg
MDkgMDAgODUgNTIgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5SLi4uLi4uLi4KICAg
MjJCNjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IEU4IDI0IEE0ICAu
Li4uLi4uLi5ALi4uLiQuCiAgIDIyQjcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyMkI4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjJCOTA6IDAwIDAyIDAwIDAwIDA5IDAwIDg2IDUyIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUi4uLi4uLi4uCiAgIDIyQkEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCBFOCAyNCBBNCAgLi4uLi4uLi4uQC4uLi4kLgogICAyMkJCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjJCQzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDIyQkQwOiAwMCAwMiAwMCAwMCAwOSAwMCA4NyA1MiAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlIuLi4uLi4uLgogICAyMkJFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggRTkgMjQgQTQgIC4uLi4uLi4uLkAuLi4uJC4KICAg
MjJCRjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDIyQzAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyMkMxMDogMDAgMDIgMDAgMDAg
MDkgMDAgODggNTIgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5SLi4uLi4uLi4KICAg
MjJDMjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IEUxIDI0IEE0ICAu
Li4uLi4uLi5ALi4uLiQuCiAgIDIyQzMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyMkM0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjJDNTA6IDAwIDAyIDAwIDAwIDA5IDAwIDg5IDUyIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUi4uLi4uLi4uCiAgIDIyQzYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBFNyAyNCBBNCAgLi4uLi4uLi4uQC4uLi4kLgogICAyMkM3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjJDODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDIyQzkwOiAwMCAwMiAwMCAwMCAwOSAwMCA4QSA1MiAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlIuLi4uLi4uLgogICAyMkNBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggRTUgMjQgQTQgIC4uLi4uLi4uLkAuLi4uJC4KICAg
MjJDQjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDIyQ0MwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyMkNEMDogMDAgMDIgMDAgMDAg
MDkgMDAgOEIgNTIgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5SLi4uLi4uLi4KICAg
MjJDRTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IEU2IDI0IEE0ICAu
Li4uLi4uLi5ALi4uLiQuCiAgIDIyQ0YwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyMkQwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjJEMTA6IDAwIDAyIDAwIDAwIDA5IDAwIDhDIDUyIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUi4uLi4uLi4uCiAgIDIyRDIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCBFNiAyNCBBNCAgLi4uLi4uLi4uQC4uLi4kLgogICAyMkQzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjJENDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDIyRDUwOiAwMCAwMiAwMCAwMCAwOSAwMCA4RCA1MiAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlIuLi4uLi4uLgogICAyMkQ2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggRTEgMjQgQTQgIC4uLi4uLi4uLkAuLi4uJC4KICAg
MjJENzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDIyRDgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyMkQ5MDogMDAgMDIgMDAgMDAg
MDkgMDAgOEUgNTIgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5SLi4uLi4uLi4KICAg
MjJEQTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IEU0IDI0IEE0ICAu
Li4uLi4uLi5ALi4uLiQuCiAgIDIyREIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyMkRDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjJERDA6IDAwIDAyIDAwIDAwIDA5IDAwIDhGIDUyIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUi4uLi4uLi4uCiAgIDIyREUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBFNSAyNCBBNCAgLi4uLi4uLi4uQC4uLi4kLgogICAyMkRGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjJFMDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDIyRTEwOiAwMCAwMiAwMCAwMCAwOSAwMCA5MCA1MiAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlIuLi4uLi4uLgogICAyMkUyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggRTIgMjQgQTQgIC4uLi4uLi4uLkAuLi4uJC4KICAg
MjJFMzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDIyRTQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyMkU1MDogMDAgMDIgMDAgMDAg
MDkgMDAgOTEgNTIgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5SLi4uLi4uLi4KICAg
MjJFNjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IEU0IDI0IEE0ICAu
Li4uLi4uLi5ALi4uLiQuCiAgIDIyRTcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyMkU4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjJFOTA6IDAwIDAyIDAwIDAwIDA5IDAwIDkyIDUyIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUi4uLi4uLi4uCiAgIDIyRUEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCBFMiAyNCBBNCAgLi4uLi4uLi4uQC4uLi4kLgogICAyMkVCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjJFQzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDIyRUQwOiAwMCAwMiAwMCAwMCAwOSAwMCA5MyA1MiAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlIuLi4uLi4uLgogICAyMkVFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggRTMgMjQgQTQgIC4uLi4uLi4uLkAuLi4uJC4KICAg
MjJFRjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDIyRjAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyMkYxMDogMDAgMDIgMDAgMDAg
MDkgMDAgOTQgNTIgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5SLi4uLi4uLi4KICAg
MjJGMjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IEUzIDI0IEE0ICAu
Li4uLi4uLi5ALi4uLiQuCiAgIDIyRjMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyMkY0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjJGNTA6IDAwIDAyIDAwIDAwIDA5IDAwIDk1IDUyIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUi4uLi4uLi4uCiAgIDIyRjYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBEMCAyNCBBNCAgLi4uLi4uLi4uQC4uLi4kLgogICAyMkY3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjJGODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDIyRjkwOiAwMCAwMiAwMCAwMCAwOSAwMCA5NiA1MiAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlIuLi4uLi4uLgogICAyMkZBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggREYgMjQgQTQgIC4uLi4uLi4uLkAuLi4uJC4KICAg
MjJGQjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDIyRkMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyMkZEMDogMDAgMDIgMDAgMDAg
MDkgMDAgOTcgNTIgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5SLi4uLi4uLi4KICAg
MjJGRTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IERGIDI0IEE0ICAu
Li4uLi4uLi5ALi4uLiQuCiAgIDIyRkYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyMzAwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjMwMTA6IDAwIDAyIDAwIDAwIDA5IDAwIDk4IDUyIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUi4uLi4uLi4uCiAgIDIzMDIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBEQiAyNCBBNCAgLi4uLi4uLi4uQC4uLi4kLgogICAyMzAzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjMwNDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDIzMDUwOiAwMCAwMiAwMCAwMCAwOSAwMCA5OSA1MiAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlIuLi4uLi4uLgogICAyMzA2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggREUgMjQgQTQgIC4uLi4uLi4uLkAuLi4uJC4KICAg
MjMwNzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDIzMDgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyMzA5MDogMDAgMDIgMDAgMDAg
MDkgMDAgOUEgNTIgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5SLi4uLi4uLi4KICAg
MjMwQTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IERFIDI0IEE0ICAu
Li4uLi4uLi5ALi4uLiQuCiAgIDIzMEIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyMzBDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjMwRDA6IDAwIDAyIDAwIDAwIDA5IDAwIDlCIDUyIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUi4uLi4uLi4uCiAgIDIzMEUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCBEQiAyNCBBNCAgLi4uLi4uLi4uQC4uLi4kLgogICAyMzBGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjMxMDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDIzMTEwOiAwMCAwMiAwMCAwMCAwOSAwMCA5QyA1MiAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlIuLi4uLi4uLgogICAyMzEyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggREQgMjQgQTQgIC4uLi4uLi4uLkAuLi4uJC4KICAg
MjMxMzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDIzMTQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyMzE1MDogMDAgMDIgMDAgMDAg
MDkgMDAgOUQgNTIgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5SLi4uLi4uLi4KICAg
MjMxNjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IERDIDI0IEE0ICAu
Li4uLi4uLi5ALi4uLiQuCiAgIDIzMTcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyMzE4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjMxOTA6IDAwIDAyIDAwIDAwIDA5IDAwIDlFIDUyIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUi4uLi4uLi4uCiAgIDIzMUEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCBEQyAyNCBBNCAgLi4uLi4uLi4uQC4uLi4kLgogICAyMzFCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjMxQzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDIzMUQwOiAwMCAwMiAwMCAwMCAwOSAwMCA5RiA1MiAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlIuLi4uLi4uLgogICAyMzFFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggREQgMjQgQTQgIC4uLi4uLi4uLkAuLi4uJC4KICAg
MjMxRjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDIzMjAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyMzIxMDogMDAgMDIgMDAgMDAg
MDkgMDAgQTAgNTIgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5SLi4uLi4uLi4KICAg
MjMyMjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IEQwIDI0IEE0ICAu
Li4uLi4uLi5ALi4uLiQuCiAgIDIzMjMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyMzI0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjMyNTA6IDAwIDAyIDAwIDAwIDA5IDAwIEExIDUyIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUi4uLi4uLi4uCiAgIDIzMjYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBEQSAyNCBBNCAgLi4uLi4uLi4uQC4uLi4kLgogICAyMzI3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjMyODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDIzMjkwOiAwMCAwMiAwMCAwMCAwOSAwMCBBMiA1MiAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlIuLi4uLi4uLgogICAyMzJBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggREEgMjQgQTQgIC4uLi4uLi4uLkAuLi4uJC4KICAg
MjMyQjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDIzMkMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyMzJEMDogMDAgMDIgMDAgMDAg
MDkgMDAgQTMgNTIgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5SLi4uLi4uLi4KICAg
MjMyRTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IEQ3IDI0IEE0ICAu
Li4uLi4uLi5ALi4uLiQuCiAgIDIzMkYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyMzMwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjMzMTA6IDAwIDAyIDAwIDAwIDA5IDAwIEE0IDUyIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUi4uLi4uLi4uCiAgIDIzMzIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCBEOSAyNCBBNCAgLi4uLi4uLi4uQC4uLi4kLgogICAyMzMzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjMzNDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDIzMzUwOiAwMCAwMiAwMCAwMCAwOSAwMCBBNSA1MiAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlIuLi4uLi4uLgogICAyMzM2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggRDggMjQgQTQgIC4uLi4uLi4uLkAuLi4uJC4KICAg
MjMzNzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDIzMzgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyMzM5MDogMDAgMDIgMDAgMDAg
MDkgMDAgQTYgNTIgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5SLi4uLi4uLi4KICAg
MjMzQTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IEQ4IDI0IEE0ICAu
Li4uLi4uLi5ALi4uLiQuCiAgIDIzM0IwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyMzNDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjMzRDA6IDAwIDAyIDAwIDAwIDA5IDAwIEE3IDUyIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUi4uLi4uLi4uCiAgIDIzM0UwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBEOSAyNCBBNCAgLi4uLi4uLi4uQC4uLi4kLgogICAyMzNGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjM0MDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDIzNDEwOiAwMCAwMiAwMCAwMCAwOSAwMCBBOCA1MiAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlIuLi4uLi4uLgogICAyMzQyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggRDEgMjQgQTQgIC4uLi4uLi4uLkAuLi4uJC4KICAg
MjM0MzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDIzNDQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyMzQ1MDogMDAgMDIgMDAgMDAg
MDkgMDAgQTkgNTIgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5SLi4uLi4uLi4KICAg
MjM0NjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IEQ3IDI0IEE0ICAu
Li4uLi4uLi5ALi4uLiQuCiAgIDIzNDcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyMzQ4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjM0OTA6IDAwIDAyIDAwIDAwIDA5IDAwIEFBIDUyIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUi4uLi4uLi4uCiAgIDIzNEEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCBENSAyNCBBNCAgLi4uLi4uLi4uQC4uLi4kLgogICAyMzRCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjM0QzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDIzNEQwOiAwMCAwMiAwMCAwMCAwOSAwMCBBQiA1MiAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlIuLi4uLi4uLgogICAyMzRFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggRDYgMjQgQTQgIC4uLi4uLi4uLkAuLi4uJC4KICAg
MjM0RjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDIzNTAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyMzUxMDogMDAgMDIgMDAgMDAg
MDkgMDAgQUMgNTIgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5SLi4uLi4uLi4KICAg
MjM1MjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IEQ2IDI0IEE0ICAu
Li4uLi4uLi5ALi4uLiQuCiAgIDIzNTMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyMzU0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjM1NTA6IDAwIDAyIDAwIDAwIDA5IDAwIEFEIDUyIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUi4uLi4uLi4uCiAgIDIzNTYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCBEMSAyNCBBNCAgLi4uLi4uLi4uQC4uLi4kLgogICAyMzU3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjM1ODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDIzNTkwOiAwMCAwMiAwMCAwMCAwOSAwMCBBRSA1MiAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlIuLi4uLi4uLgogICAyMzVBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggRDQgMjQgQTQgIC4uLi4uLi4uLkAuLi4uJC4KICAg
MjM1QjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDIzNUMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyMzVEMDogMDAgMDIgMDAgMDAg
MDkgMDAgQUYgNTIgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5SLi4uLi4uLi4KICAg
MjM1RTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IEQ1IDI0IEE0ICAu
Li4uLi4uLi5ALi4uLiQuCiAgIDIzNUYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyMzYwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjM2MTA6IDAwIDAyIDAwIDAwIDA5IDAwIEIwIDUyIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUi4uLi4uLi4uCiAgIDIzNjIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBEMiAyNCBBNCAgLi4uLi4uLi4uQC4uLi4kLgogICAyMzYzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjM2NDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDIzNjUwOiAwMCAwMiAwMCAwMCAwOSAwMCBCMSA1MiAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlIuLi4uLi4uLgogICAyMzY2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggRDQgMjQgQTQgIC4uLi4uLi4uLkAuLi4uJC4KICAg
MjM2NzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDIzNjgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyMzY5MDogMDAgMDIgMDAgMDAg
MDkgMDAgQjIgNTIgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5SLi4uLi4uLi4KICAg
MjM2QTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IEQyIDI0IEE0ICAu
Li4uLi4uLi5ALi4uLiQuCiAgIDIzNkIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyMzZDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjM2RDA6IDAwIDAyIDAwIDAwIDA5IDAwIEIzIDUyIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUi4uLi4uLi4uCiAgIDIzNkUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBEMyAyNCBBNCAgLi4uLi4uLi4uQC4uLi4kLgogICAyMzZGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjM3MDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDIzNzEwOiAwMCAwMiAwMCAwMCAwOSAwMCBCNCA1MiAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlIuLi4uLi4uLgogICAyMzcyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggRDMgMjQgQTQgIC4uLi4uLi4uLkAuLi4uJC4KICAg
MjM3MzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDIzNzQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyMzc1MDogMDAgMDIgMDAgMDAg
MDkgMDAgQjUgNTIgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5SLi4uLi4uLi4KICAg
MjM3NjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IEMwIDI0IEE0ICAu
Li4uLi4uLi5ALi4uLiQuCiAgIDIzNzcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyMzc4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjM3OTA6IDAwIDAyIDAwIDAwIDA5IDAwIEI2IDUyIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUi4uLi4uLi4uCiAgIDIzN0EwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBDRiAyNCBBNCAgLi4uLi4uLi4uQC4uLi4kLgogICAyMzdCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjM3QzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDIzN0QwOiAwMCAwMiAwMCAwMCAwOSAwMCBCNyA1MiAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlIuLi4uLi4uLgogICAyMzdFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggQ0YgMjQgQTQgIC4uLi4uLi4uLkAuLi4uJC4KICAg
MjM3RjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDIzODAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyMzgxMDogMDAgMDIgMDAgMDAg
MDkgMDAgQjggNTIgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5SLi4uLi4uLi4KICAg
MjM4MjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IENCIDI0IEE0ICAu
Li4uLi4uLi5ALi4uLiQuCiAgIDIzODMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyMzg0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjM4NTA6IDAwIDAyIDAwIDAwIDA5IDAwIEI5IDUyIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUi4uLi4uLi4uCiAgIDIzODYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBDRSAyNCBBNCAgLi4uLi4uLi4uQC4uLi4kLgogICAyMzg3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjM4ODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDIzODkwOiAwMCAwMiAwMCAwMCAwOSAwMCBCQSA1MiAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlIuLi4uLi4uLgogICAyMzhBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggQ0UgMjQgQTQgIC4uLi4uLi4uLkAuLi4uJC4KICAg
MjM4QjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDIzOEMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyMzhEMDogMDAgMDIgMDAgMDAg
MDkgMDAgQkIgNTIgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5SLi4uLi4uLi4KICAg
MjM4RTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IENCIDI0IEE0ICAu
Li4uLi4uLi5ALi4uLiQuCiAgIDIzOEYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyMzkwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjM5MTA6IDAwIDAyIDAwIDAwIDA5IDAwIEJDIDUyIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUi4uLi4uLi4uCiAgIDIzOTIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCBDRCAyNCBBNCAgLi4uLi4uLi4uQC4uLi4kLgogICAyMzkzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjM5NDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDIzOTUwOiAwMCAwMiAwMCAwMCAwOSAwMCBCRCA1MiAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlIuLi4uLi4uLgogICAyMzk2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggQ0MgMjQgQTQgIC4uLi4uLi4uLkAuLi4uJC4KICAg
MjM5NzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDIzOTgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyMzk5MDogMDAgMDIgMDAgMDAg
MDkgMDAgQkUgNTIgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5SLi4uLi4uLi4KICAg
MjM5QTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IENDIDI0IEE0ICAu
Li4uLi4uLi5ALi4uLiQuCiAgIDIzOUIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyMzlDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjM5RDA6IDAwIDAyIDAwIDAwIDA5IDAwIEJGIDUyIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUi4uLi4uLi4uCiAgIDIzOUUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBDRCAyNCBBNCAgLi4uLi4uLi4uQC4uLi4kLgogICAyMzlGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjNBMDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDIzQTEwOiAwMCAwMiAwMCAwMCAwOSAwMCBDMCA1MiAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlIuLi4uLi4uLgogICAyM0EyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggQzAgMjQgQTQgIC4uLi4uLi4uLkAuLi4uJC4KICAg
MjNBMzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDIzQTQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyM0E1MDogMDAgMDIgMDAgMDAg
MDkgMDAgQzEgNTIgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5SLi4uLi4uLi4KICAg
MjNBNjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IENBIDI0IEE0ICAu
Li4uLi4uLi5ALi4uLiQuCiAgIDIzQTcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyM0E4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjNBOTA6IDAwIDAyIDAwIDAwIDA5IDAwIEMyIDUyIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUi4uLi4uLi4uCiAgIDIzQUEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCBDQSAyNCBBNCAgLi4uLi4uLi4uQC4uLi4kLgogICAyM0FCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjNBQzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDIzQUQwOiAwMCAwMiAwMCAwMCAwOSAwMCBDMyA1MiAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlIuLi4uLi4uLgogICAyM0FFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggQzcgMjQgQTQgIC4uLi4uLi4uLkAuLi4uJC4KICAg
MjNBRjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDIzQjAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyM0IxMDogMDAgMDIgMDAgMDAg
MDkgMDAgQzQgNTIgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5SLi4uLi4uLi4KICAg
MjNCMjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IEM5IDI0IEE0ICAu
Li4uLi4uLi5ALi4uLiQuCiAgIDIzQjMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyM0I0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjNCNTA6IDAwIDAyIDAwIDAwIDA5IDAwIEM1IDUyIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUi4uLi4uLi4uCiAgIDIzQjYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBDOCAyNCBBNCAgLi4uLi4uLi4uQC4uLi4kLgogICAyM0I3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjNCODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDIzQjkwOiAwMCAwMiAwMCAwMCAwOSAwMCBDNiA1MiAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlIuLi4uLi4uLgogICAyM0JBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggQzggMjQgQTQgIC4uLi4uLi4uLkAuLi4uJC4KICAg
MjNCQjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDIzQkMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyM0JEMDogMDAgMDIgMDAgMDAg
MDkgMDAgQzcgNTIgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5SLi4uLi4uLi4KICAg
MjNCRTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IEM5IDI0IEE0ICAu
Li4uLi4uLi5ALi4uLiQuCiAgIDIzQkYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyM0MwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjNDMTA6IDAwIDAyIDAwIDAwIDA5IDAwIEM4IDUyIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUi4uLi4uLi4uCiAgIDIzQzIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBDMSAyNCBBNCAgLi4uLi4uLi4uQC4uLi4kLgogICAyM0MzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjNDNDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDIzQzUwOiAwMCAwMiAwMCAwMCAwOSAwMCBDOSA1MiAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlIuLi4uLi4uLgogICAyM0M2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggQzcgMjQgQTQgIC4uLi4uLi4uLkAuLi4uJC4KICAg
MjNDNzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDIzQzgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyM0M5MDogMDAgMDIgMDAgMDAg
MDkgMDAgQ0EgNTIgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5SLi4uLi4uLi4KICAg
MjNDQTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IEM1IDI0IEE0ICAu
Li4uLi4uLi5ALi4uLiQuCiAgIDIzQ0IwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyM0NDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjNDRDA6IDAwIDAyIDAwIDAwIDA5IDAwIENCIDUyIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUi4uLi4uLi4uCiAgIDIzQ0UwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBDNiAyNCBBNCAgLi4uLi4uLi4uQC4uLi4kLgogICAyM0NGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjNEMDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDIzRDEwOiAwMCAwMiAwMCAwMCAwOSAwMCBDQyA1MiAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlIuLi4uLi4uLgogICAyM0QyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggQzYgMjQgQTQgIC4uLi4uLi4uLkAuLi4uJC4KICAg
MjNEMzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDIzRDQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyM0Q1MDogMDAgMDIgMDAgMDAg
MDkgMDAgQ0QgNTIgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5SLi4uLi4uLi4KICAg
MjNENjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IEMxIDI0IEE0ICAu
Li4uLi4uLi5ALi4uLiQuCiAgIDIzRDcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyM0Q4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjNEOTA6IDAwIDAyIDAwIDAwIDA5IDAwIENFIDUyIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUi4uLi4uLi4uCiAgIDIzREEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCBDNCAyNCBBNCAgLi4uLi4uLi4uQC4uLi4kLgogICAyM0RCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjNEQzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDIzREQwOiAwMCAwMiAwMCAwMCAwOSAwMCBDRiA1MiAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlIuLi4uLi4uLgogICAyM0RFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggQzUgMjQgQTQgIC4uLi4uLi4uLkAuLi4uJC4KICAg
MjNERjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDIzRTAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyM0UxMDogMDAgMDIgMDAgMDAg
MDkgMDAgRDAgNTIgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5SLi4uLi4uLi4KICAg
MjNFMjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IEMyIDI0IEE0ICAu
Li4uLi4uLi5ALi4uLiQuCiAgIDIzRTMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyM0U0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjNFNTA6IDAwIDAyIDAwIDAwIDA5IDAwIEQxIDUyIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUi4uLi4uLi4uCiAgIDIzRTYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBDNCAyNCBBNCAgLi4uLi4uLi4uQC4uLi4kLgogICAyM0U3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjNFODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDIzRTkwOiAwMCAwMiAwMCAwMCAwOSAwMCBEMiA1MiAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlIuLi4uLi4uLgogICAyM0VBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggQzIgMjQgQTQgIC4uLi4uLi4uLkAuLi4uJC4KICAg
MjNFQjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDIzRUMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyM0VEMDogMDAgMDIgMDAgMDAg
MDkgMDAgRDMgNTIgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5SLi4uLi4uLi4KICAg
MjNFRTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IEMzIDI0IEE0ICAu
Li4uLi4uLi5ALi4uLiQuCiAgIDIzRUYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyM0YwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjNGMTA6IDAwIDAyIDAwIDAwIDA5IDAwIEQ0IDUyIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUi4uLi4uLi4uCiAgIDIzRjIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCBDMyAyNCBBNCAgLi4uLi4uLi4uQC4uLi4kLgogICAyM0YzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjNGNDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDIzRjUwOiAwMCAwMiAwMCAwMCAwOSAwMCBENSA1MiAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlIuLi4uLi4uLgogICAyM0Y2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggQjAgMjQgQTQgIC4uLi4uLi4uLkAuLi4uJC4KICAg
MjNGNzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDIzRjgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyM0Y5MDogMDAgMDIgMDAgMDAg
MDkgMDAgRDYgNTIgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5SLi4uLi4uLi4KICAg
MjNGQTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IEJGIDI0IEE0ICAu
Li4uLi4uLi5ALi4uLiQuCiAgIDIzRkIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyM0ZDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjNGRDA6IDAwIDAyIDAwIDAwIDA5IDAwIEQ3IDUyIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUi4uLi4uLi4uCiAgIDIzRkUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCBCRiAyNCBBNCAgLi4uLi4uLi4uQC4uLi4kLgogICAyM0ZGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjQwMDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI0MDEwOiAwMCAwMiAwMCAwMCAwOSAwMCBEOCA1MiAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlIuLi4uLi4uLgogICAyNDAyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggQkIgMjQgQTQgIC4uLi4uLi4uLkAuLi4uJC4KICAg
MjQwMzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI0MDQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyNDA1MDogMDAgMDIgMDAgMDAg
MDkgMDAgRDkgNTIgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5SLi4uLi4uLi4KICAg
MjQwNjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IEJFIDI0IEE0ICAu
Li4uLi4uLi5ALi4uLiQuCiAgIDI0MDcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyNDA4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjQwOTA6IDAwIDAyIDAwIDAwIDA5IDAwIERBIDUyIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUi4uLi4uLi4uCiAgIDI0MEEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCBCRSAyNCBBNCAgLi4uLi4uLi4uQC4uLi4kLgogICAyNDBCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjQwQzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI0MEQwOiAwMCAwMiAwMCAwMCAwOSAwMCBEQiA1MiAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlIuLi4uLi4uLgogICAyNDBFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggQkIgMjQgQTQgIC4uLi4uLi4uLkAuLi4uJC4KICAg
MjQwRjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI0MTAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyNDExMDogMDAgMDIgMDAgMDAg
MDkgMDAgREMgNTIgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5SLi4uLi4uLi4KICAg
MjQxMjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IEJEIDI0IEE0ICAu
Li4uLi4uLi5ALi4uLiQuCiAgIDI0MTMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyNDE0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjQxNTA6IDAwIDAyIDAwIDAwIDA5IDAwIEREIDUyIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUi4uLi4uLi4uCiAgIDI0MTYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBCQyAyNCBBNCAgLi4uLi4uLi4uQC4uLi4kLgogICAyNDE3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjQxODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI0MTkwOiAwMCAwMiAwMCAwMCAwOSAwMCBERSA1MiAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlIuLi4uLi4uLgogICAyNDFBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggQkMgMjQgQTQgIC4uLi4uLi4uLkAuLi4uJC4KICAg
MjQxQjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI0MUMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyNDFEMDogMDAgMDIgMDAgMDAg
MDkgMDAgREYgNTIgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5SLi4uLi4uLi4KICAg
MjQxRTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IEJEIDI0IEE0ICAu
Li4uLi4uLi5ALi4uLiQuCiAgIDI0MUYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyNDIwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjQyMTA6IDAwIDAyIDAwIDAwIDA5IDAwIEUwIDUyIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUi4uLi4uLi4uCiAgIDI0MjIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCBCMCAyNCBBNCAgLi4uLi4uLi4uQC4uLi4kLgogICAyNDIzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjQyNDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI0MjUwOiAwMCAwMiAwMCAwMCAwOSAwMCBFMSA1MiAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlIuLi4uLi4uLgogICAyNDI2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggQkEgMjQgQTQgIC4uLi4uLi4uLkAuLi4uJC4KICAg
MjQyNzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI0MjgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyNDI5MDogMDAgMDIgMDAgMDAg
MDkgMDAgRTIgNTIgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5SLi4uLi4uLi4KICAg
MjQyQTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IEJBIDI0IEE0ICAu
Li4uLi4uLi5ALi4uLiQuCiAgIDI0MkIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyNDJDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjQyRDA6IDAwIDAyIDAwIDAwIDA5IDAwIEUzIDUyIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUi4uLi4uLi4uCiAgIDI0MkUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCBCNyAyNCBBNCAgLi4uLi4uLi4uQC4uLi4kLgogICAyNDJGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjQzMDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI0MzEwOiAwMCAwMiAwMCAwMCAwOSAwMCBFNCA1MiAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlIuLi4uLi4uLgogICAyNDMyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggQjkgMjQgQTQgIC4uLi4uLi4uLkAuLi4uJC4KICAg
MjQzMzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI0MzQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyNDM1MDogMDAgMDIgMDAgMDAg
MDkgMDAgRTUgNTIgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5SLi4uLi4uLi4KICAg
MjQzNjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IEI4IDI0IEE0ICAu
Li4uLi4uLi5ALi4uLiQuCiAgIDI0MzcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyNDM4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjQzOTA6IDAwIDAyIDAwIDAwIDA5IDAwIEU2IDUyIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUi4uLi4uLi4uCiAgIDI0M0EwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCBCOCAyNCBBNCAgLi4uLi4uLi4uQC4uLi4kLgogICAyNDNCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjQzQzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI0M0QwOiAwMCAwMiAwMCAwMCAwOSAwMCBFNyA1MiAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlIuLi4uLi4uLgogICAyNDNFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggQjkgMjQgQTQgIC4uLi4uLi4uLkAuLi4uJC4KICAg
MjQzRjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI0NDAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyNDQxMDogMDAgMDIgMDAgMDAg
MDkgMDAgRTggNTIgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5SLi4uLi4uLi4KICAg
MjQ0MjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IEIxIDI0IEE0ICAu
Li4uLi4uLi5ALi4uLiQuCiAgIDI0NDMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyNDQ0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjQ0NTA6IDAwIDAyIDAwIDAwIDA5IDAwIEU5IDUyIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUi4uLi4uLi4uCiAgIDI0NDYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBCNyAyNCBBNCAgLi4uLi4uLi4uQC4uLi4kLgogICAyNDQ3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjQ0ODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI0NDkwOiAwMCAwMiAwMCAwMCAwOSAwMCBFQSA1MiAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlIuLi4uLi4uLgogICAyNDRBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggQjUgMjQgQTQgIC4uLi4uLi4uLkAuLi4uJC4KICAg
MjQ0QjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI0NEMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyNDREMDogMDAgMDIgMDAgMDAg
MDkgMDAgRUIgNTIgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5SLi4uLi4uLi4KICAg
MjQ0RTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IEI2IDI0IEE0ICAu
Li4uLi4uLi5ALi4uLiQuCiAgIDI0NEYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyNDUwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjQ1MTA6IDAwIDAyIDAwIDAwIDA5IDAwIEVDIDUyIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUi4uLi4uLi4uCiAgIDI0NTIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCBCNiAyNCBBNCAgLi4uLi4uLi4uQC4uLi4kLgogICAyNDUzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjQ1NDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI0NTUwOiAwMCAwMiAwMCAwMCAwOSAwMCBFRCA1MiAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlIuLi4uLi4uLgogICAyNDU2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggQjEgMjQgQTQgIC4uLi4uLi4uLkAuLi4uJC4KICAg
MjQ1NzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI0NTgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyNDU5MDogMDAgMDIgMDAgMDAg
MDkgMDAgRUUgNTIgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5SLi4uLi4uLi4KICAg
MjQ1QTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IEI0IDI0IEE0ICAu
Li4uLi4uLi5ALi4uLiQuCiAgIDI0NUIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyNDVDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjQ1RDA6IDAwIDAyIDAwIDAwIDA5IDAwIEVGIDUyIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUi4uLi4uLi4uCiAgIDI0NUUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBCNSAyNCBBNCAgLi4uLi4uLi4uQC4uLi4kLgogICAyNDVGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjQ2MDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI0NjEwOiAwMCAwMiAwMCAwMCAwOSAwMCBGMCA1MiAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlIuLi4uLi4uLgogICAyNDYyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggQjIgMjQgQTQgIC4uLi4uLi4uLkAuLi4uJC4KICAg
MjQ2MzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI0NjQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyNDY1MDogMDAgMDIgMDAgMDAg
MDkgMDAgRjEgNTIgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5SLi4uLi4uLi4KICAg
MjQ2NjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IEI0IDI0IEE0ICAu
Li4uLi4uLi5ALi4uLiQuCiAgIDI0NjcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyNDY4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjQ2OTA6IDAwIDAyIDAwIDAwIDA5IDAwIEYyIDUyIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUi4uLi4uLi4uCiAgIDI0NkEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCBCMiAyNCBBNCAgLi4uLi4uLi4uQC4uLi4kLgogICAyNDZCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjQ2QzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI0NkQwOiAwMCAwMiAwMCAwMCAwOSAwMCBGMyA1MiAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlIuLi4uLi4uLgogICAyNDZFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggQjMgMjQgQTQgIC4uLi4uLi4uLkAuLi4uJC4KICAg
MjQ2RjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI0NzAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyNDcxMDogMDAgMDIgMDAgMDAg
MDkgMDAgRjQgNTIgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5SLi4uLi4uLi4KICAg
MjQ3MjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IEIzIDI0IEE0ICAu
Li4uLi4uLi5ALi4uLiQuCiAgIDI0NzMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyNDc0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjQ3NTA6IDAwIDAyIDAwIDAwIDA5IDAwIEY1IDUyIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUi4uLi4uLi4uCiAgIDI0NzYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBBMCAyNCBBNCAgLi4uLi4uLi4uQC4uLi4kLgogICAyNDc3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjQ3ODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI0NzkwOiAwMCAwMiAwMCAwMCAwOSAwMCBGNiA1MiAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlIuLi4uLi4uLgogICAyNDdBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggQUYgMjQgQTQgIC4uLi4uLi4uLkAuLi4uJC4KICAg
MjQ3QjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI0N0MwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyNDdEMDogMDAgMDIgMDAgMDAg
MDkgMDAgRjcgNTIgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5SLi4uLi4uLi4KICAg
MjQ3RTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IEFGIDI0IEE0ICAu
Li4uLi4uLi5ALi4uLiQuCiAgIDI0N0YwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyNDgwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjQ4MTA6IDAwIDAyIDAwIDAwIDA5IDAwIEY4IDUyIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUi4uLi4uLi4uCiAgIDI0ODIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBBQiAyNCBBNCAgLi4uLi4uLi4uQC4uLi4kLgogICAyNDgzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjQ4NDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI0ODUwOiAwMCAwMiAwMCAwMCAwOSAwMCBGOSA1MiAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlIuLi4uLi4uLgogICAyNDg2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggQUUgMjQgQTQgIC4uLi4uLi4uLkAuLi4uJC4KICAg
MjQ4NzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI0ODgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyNDg5MDogMDAgMDIgMDAgMDAg
MDkgMDAgRkEgNTIgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5SLi4uLi4uLi4KICAg
MjQ4QTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IEFFIDI0IEE0ICAu
Li4uLi4uLi5ALi4uLiQuCiAgIDI0OEIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyNDhDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjQ4RDA6IDAwIDAyIDAwIDAwIDA5IDAwIEZCIDUyIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUi4uLi4uLi4uCiAgIDI0OEUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCBBQiAyNCBBNCAgLi4uLi4uLi4uQC4uLi4kLgogICAyNDhGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjQ5MDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI0OTEwOiAwMCAwMiAwMCAwMCAwOSAwMCBGQyA1MiAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlIuLi4uLi4uLgogICAyNDkyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggQUQgMjQgQTQgIC4uLi4uLi4uLkAuLi4uJC4KICAg
MjQ5MzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI0OTQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyNDk1MDogMDAgMDIgMDAgMDAg
MDkgMDAgRkQgNTIgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5SLi4uLi4uLi4KICAg
MjQ5NjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IEFDIDI0IEE0ICAu
Li4uLi4uLi5ALi4uLiQuCiAgIDI0OTcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyNDk4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjQ5OTA6IDAwIDAyIDAwIDAwIDA5IDAwIEZFIDUyIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUi4uLi4uLi4uCiAgIDI0OUEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCBBQyAyNCBBNCAgLi4uLi4uLi4uQC4uLi4kLgogICAyNDlCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjQ5QzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI0OUQwOiAwMCAwMiAwMCAwMCAwOSAwMCBGRiA1MiAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlIuLi4uLi4uLgogICAyNDlFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggQUQgMjQgQTQgIC4uLi4uLi4uLkAuLi4uJC4KICAg
MjQ5RjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI0QTAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyNEExMDogMDAgMDIgMDAgMDAg
MDkgMDAgMDAgNTMgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5TLi4uLi4uLi4KICAg
MjRBMjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IEEwIDI0IEE0ICAu
Li4uLi4uLi5ALi4uLiQuCiAgIDI0QTMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyNEE0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjRBNTA6IDAwIDAyIDAwIDAwIDA5IDAwIDAxIDUzIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUy4uLi4uLi4uCiAgIDI0QTYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBBQSAyNCBBNCAgLi4uLi4uLi4uQC4uLi4kLgogICAyNEE3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjRBODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI0QTkwOiAwMCAwMiAwMCAwMCAwOSAwMCAwMiA1MyAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlMuLi4uLi4uLgogICAyNEFBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggQUEgMjQgQTQgIC4uLi4uLi4uLkAuLi4uJC4KICAg
MjRBQjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI0QUMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyNEFEMDogMDAgMDIgMDAgMDAg
MDkgMDAgMDMgNTMgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5TLi4uLi4uLi4KICAg
MjRBRTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IEE3IDI0IEE0ICAu
Li4uLi4uLi5ALi4uLiQuCiAgIDI0QUYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyNEIwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjRCMTA6IDAwIDAyIDAwIDAwIDA5IDAwIDA0IDUzIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUy4uLi4uLi4uCiAgIDI0QjIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCBBOSAyNCBBNCAgLi4uLi4uLi4uQC4uLi4kLgogICAyNEIzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjRCNDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI0QjUwOiAwMCAwMiAwMCAwMCAwOSAwMCAwNSA1MyAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlMuLi4uLi4uLgogICAyNEI2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggQTggMjQgQTQgIC4uLi4uLi4uLkAuLi4uJC4KICAg
MjRCNzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI0QjgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyNEI5MDogMDAgMDIgMDAgMDAg
MDkgMDAgMDYgNTMgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5TLi4uLi4uLi4KICAg
MjRCQTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IEE4IDI0IEE0ICAu
Li4uLi4uLi5ALi4uLiQuCiAgIDI0QkIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyNEJDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjRCRDA6IDAwIDAyIDAwIDAwIDA5IDAwIDA3IDUzIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUy4uLi4uLi4uCiAgIDI0QkUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBBOSAyNCBBNCAgLi4uLi4uLi4uQC4uLi4kLgogICAyNEJGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjRDMDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI0QzEwOiAwMCAwMiAwMCAwMCAwOSAwMCAwOCA1MyAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlMuLi4uLi4uLgogICAyNEMyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggQTEgMjQgQTQgIC4uLi4uLi4uLkAuLi4uJC4KICAg
MjRDMzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI0QzQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyNEM1MDogMDAgMDIgMDAgMDAg
MDkgMDAgMDkgNTMgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5TLi4uLi4uLi4KICAg
MjRDNjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IEE3IDI0IEE0ICAu
Li4uLi4uLi5ALi4uLiQuCiAgIDI0QzcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyNEM4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjRDOTA6IDAwIDAyIDAwIDAwIDA5IDAwIDBBIDUzIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUy4uLi4uLi4uCiAgIDI0Q0EwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCBBNSAyNCBBNCAgLi4uLi4uLi4uQC4uLi4kLgogICAyNENCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjRDQzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI0Q0QwOiAwMCAwMiAwMCAwMCAwOSAwMCAwQiA1MyAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlMuLi4uLi4uLgogICAyNENFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggQTYgMjQgQTQgIC4uLi4uLi4uLkAuLi4uJC4KICAg
MjRDRjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI0RDAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyNEQxMDogMDAgMDIgMDAgMDAg
MDkgMDAgMEMgNTMgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5TLi4uLi4uLi4KICAg
MjREMjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IEE2IDI0IEE0ICAu
Li4uLi4uLi5ALi4uLiQuCiAgIDI0RDMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyNEQ0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjRENTA6IDAwIDAyIDAwIDAwIDA5IDAwIDBEIDUzIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUy4uLi4uLi4uCiAgIDI0RDYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCBBMSAyNCBBNCAgLi4uLi4uLi4uQC4uLi4kLgogICAyNEQ3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjREODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI0RDkwOiAwMCAwMiAwMCAwMCAwOSAwMCAwRSA1MyAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlMuLi4uLi4uLgogICAyNERBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggQTQgMjQgQTQgIC4uLi4uLi4uLkAuLi4uJC4KICAg
MjREQjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI0REMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyNEREMDogMDAgMDIgMDAgMDAg
MDkgMDAgMEYgNTMgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5TLi4uLi4uLi4KICAg
MjRERTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IEE1IDI0IEE0ICAu
Li4uLi4uLi5ALi4uLiQuCiAgIDI0REYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyNEUwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjRFMTA6IDAwIDAyIDAwIDAwIDA5IDAwIDEwIDUzIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUy4uLi4uLi4uCiAgIDI0RTIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBBMiAyNCBBNCAgLi4uLi4uLi4uQC4uLi4kLgogICAyNEUzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjRFNDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI0RTUwOiAwMCAwMiAwMCAwMCAwOSAwMCAxMSA1MyAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlMuLi4uLi4uLgogICAyNEU2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggQTQgMjQgQTQgIC4uLi4uLi4uLkAuLi4uJC4KICAg
MjRFNzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI0RTgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyNEU5MDogMDAgMDIgMDAgMDAg
MDkgMDAgMTIgNTMgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5TLi4uLi4uLi4KICAg
MjRFQTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IEEyIDI0IEE0ICAu
Li4uLi4uLi5ALi4uLiQuCiAgIDI0RUIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyNEVDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjRFRDA6IDAwIDAyIDAwIDAwIDA5IDAwIDEzIDUzIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUy4uLi4uLi4uCiAgIDI0RUUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBBMyAyNCBBNCAgLi4uLi4uLi4uQC4uLi4kLgogICAyNEVGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjRGMDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI0RjEwOiAwMCAwMiAwMCAwMCAwOSAwMCAxNCA1MyAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlMuLi4uLi4uLgogICAyNEYyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggQTMgMjQgQTQgIC4uLi4uLi4uLkAuLi4uJC4KICAg
MjRGMzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI0RjQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyNEY1MDogMDAgMDIgMDAgMDAg
MDkgMDAgMTUgNTMgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5TLi4uLi4uLi4KICAg
MjRGNjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDkwIDI0IEE0ICAu
Li4uLi4uLi5ALi4uLiQuCiAgIDI0RjcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyNEY4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjRGOTA6IDAwIDAyIDAwIDAwIDA5IDAwIDE2IDUzIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUy4uLi4uLi4uCiAgIDI0RkEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA5RiAyNCBBNCAgLi4uLi4uLi4uQC4uLi4kLgogICAyNEZCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjRGQzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI0RkQwOiAwMCAwMiAwMCAwMCAwOSAwMCAxNyA1MyAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlMuLi4uLi4uLgogICAyNEZFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggOUYgMjQgQTQgIC4uLi4uLi4uLkAuLi4uJC4KICAg
MjRGRjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI1MDAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyNTAxMDogMDAgMDIgMDAgMDAg
MDkgMDAgMTggNTMgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5TLi4uLi4uLi4KICAg
MjUwMjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDlCIDI0IEE0ICAu
Li4uLi4uLi5ALi4uLiQuCiAgIDI1MDMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyNTA0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjUwNTA6IDAwIDAyIDAwIDAwIDA5IDAwIDE5IDUzIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUy4uLi4uLi4uCiAgIDI1MDYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA5RSAyNCBBNCAgLi4uLi4uLi4uQC4uLi4kLgogICAyNTA3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjUwODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI1MDkwOiAwMCAwMiAwMCAwMCAwOSAwMCAxQSA1MyAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlMuLi4uLi4uLgogICAyNTBBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggOUUgMjQgQTQgIC4uLi4uLi4uLkAuLi4uJC4KICAg
MjUwQjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI1MEMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyNTBEMDogMDAgMDIgMDAgMDAg
MDkgMDAgMUIgNTMgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5TLi4uLi4uLi4KICAg
MjUwRTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDlCIDI0IEE0ICAu
Li4uLi4uLi5ALi4uLiQuCiAgIDI1MEYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyNTEwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjUxMTA6IDAwIDAyIDAwIDAwIDA5IDAwIDFDIDUzIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUy4uLi4uLi4uCiAgIDI1MTIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA5RCAyNCBBNCAgLi4uLi4uLi4uQC4uLi4kLgogICAyNTEzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjUxNDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI1MTUwOiAwMCAwMiAwMCAwMCAwOSAwMCAxRCA1MyAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlMuLi4uLi4uLgogICAyNTE2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggOUMgMjQgQTQgIC4uLi4uLi4uLkAuLi4uJC4KICAg
MjUxNzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI1MTgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyNTE5MDogMDAgMDIgMDAgMDAg
MDkgMDAgMUUgNTMgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5TLi4uLi4uLi4KICAg
MjUxQTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDlDIDI0IEE0ICAu
Li4uLi4uLi5ALi4uLiQuCiAgIDI1MUIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyNTFDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjUxRDA6IDAwIDAyIDAwIDAwIDA5IDAwIDFGIDUzIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUy4uLi4uLi4uCiAgIDI1MUUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA5RCAyNCBBNCAgLi4uLi4uLi4uQC4uLi4kLgogICAyNTFGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjUyMDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI1MjEwOiAwMCAwMiAwMCAwMCAwOSAwMCAyMCA1MyAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uIFMuLi4uLi4uLgogICAyNTIyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggOTAgMjQgQTQgIC4uLi4uLi4uLkAuLi4uJC4KICAg
MjUyMzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI1MjQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyNTI1MDogMDAgMDIgMDAgMDAg
MDkgMDAgMjEgNTMgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLiFTLi4uLi4uLi4KICAg
MjUyNjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDlBIDI0IEE0ICAu
Li4uLi4uLi5ALi4uLiQuCiAgIDI1MjcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyNTI4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjUyOTA6IDAwIDAyIDAwIDAwIDA5IDAwIDIyIDUzIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4iUy4uLi4uLi4uCiAgIDI1MkEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA5QSAyNCBBNCAgLi4uLi4uLi4uQC4uLi4kLgogICAyNTJCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjUyQzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI1MkQwOiAwMCAwMiAwMCAwMCAwOSAwMCAyMyA1MyAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uI1MuLi4uLi4uLgogICAyNTJFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggOTcgMjQgQTQgIC4uLi4uLi4uLkAuLi4uJC4KICAg
MjUyRjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI1MzAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyNTMxMDogMDAgMDIgMDAgMDAg
MDkgMDAgMjQgNTMgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLiRTLi4uLi4uLi4KICAg
MjUzMjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDk5IDI0IEE0ICAu
Li4uLi4uLi5ALi4uLiQuCiAgIDI1MzMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyNTM0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjUzNTA6IDAwIDAyIDAwIDAwIDA5IDAwIDI1IDUzIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4lUy4uLi4uLi4uCiAgIDI1MzYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA5OCAyNCBBNCAgLi4uLi4uLi4uQC4uLi4kLgogICAyNTM3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjUzODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI1MzkwOiAwMCAwMiAwMCAwMCAwOSAwMCAyNiA1MyAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uJlMuLi4uLi4uLgogICAyNTNBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggOTggMjQgQTQgIC4uLi4uLi4uLkAuLi4uJC4KICAg
MjUzQjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI1M0MwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyNTNEMDogMDAgMDIgMDAgMDAg
MDkgMDAgMjcgNTMgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLidTLi4uLi4uLi4KICAg
MjUzRTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDk5IDI0IEE0ICAu
Li4uLi4uLi5ALi4uLiQuCiAgIDI1M0YwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyNTQwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjU0MTA6IDAwIDAyIDAwIDAwIDA5IDAwIDI4IDUzIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4oUy4uLi4uLi4uCiAgIDI1NDIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA5MSAyNCBBNCAgLi4uLi4uLi4uQC4uLi4kLgogICAyNTQzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjU0NDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI1NDUwOiAwMCAwMiAwMCAwMCAwOSAwMCAyOSA1MyAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uKVMuLi4uLi4uLgogICAyNTQ2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggOTcgMjQgQTQgIC4uLi4uLi4uLkAuLi4uJC4KICAg
MjU0NzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI1NDgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyNTQ5MDogMDAgMDIgMDAgMDAg
MDkgMDAgMkEgNTMgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLipTLi4uLi4uLi4KICAg
MjU0QTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDk1IDI0IEE0ICAu
Li4uLi4uLi5ALi4uLiQuCiAgIDI1NEIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyNTRDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjU0RDA6IDAwIDAyIDAwIDAwIDA5IDAwIDJCIDUzIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4rUy4uLi4uLi4uCiAgIDI1NEUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA5NiAyNCBBNCAgLi4uLi4uLi4uQC4uLi4kLgogICAyNTRGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjU1MDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI1NTEwOiAwMCAwMiAwMCAwMCAwOSAwMCAyQyA1MyAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLFMuLi4uLi4uLgogICAyNTUyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggOTYgMjQgQTQgIC4uLi4uLi4uLkAuLi4uJC4KICAg
MjU1MzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI1NTQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyNTU1MDogMDAgMDIgMDAgMDAg
MDkgMDAgMkQgNTMgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi1TLi4uLi4uLi4KICAg
MjU1NjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDkxIDI0IEE0ICAu
Li4uLi4uLi5ALi4uLiQuCiAgIDI1NTcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyNTU4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjU1OTA6IDAwIDAyIDAwIDAwIDA5IDAwIDJFIDUzIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUy4uLi4uLi4uCiAgIDI1NUEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA5NCAyNCBBNCAgLi4uLi4uLi4uQC4uLi4kLgogICAyNTVCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjU1QzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI1NUQwOiAwMCAwMiAwMCAwMCAwOSAwMCAyRiA1MyAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uL1MuLi4uLi4uLgogICAyNTVFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggOTUgMjQgQTQgIC4uLi4uLi4uLkAuLi4uJC4KICAg
MjU1RjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI1NjAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyNTYxMDogMDAgMDIgMDAgMDAg
MDkgMDAgMzAgNTMgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLjBTLi4uLi4uLi4KICAg
MjU2MjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDkyIDI0IEE0ICAu
Li4uLi4uLi5ALi4uLiQuCiAgIDI1NjMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyNTY0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjU2NTA6IDAwIDAyIDAwIDAwIDA5IDAwIDMxIDUzIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4xUy4uLi4uLi4uCiAgIDI1NjYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA5NCAyNCBBNCAgLi4uLi4uLi4uQC4uLi4kLgogICAyNTY3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjU2ODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI1NjkwOiAwMCAwMiAwMCAwMCAwOSAwMCAzMiA1MyAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uMlMuLi4uLi4uLgogICAyNTZBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggOTIgMjQgQTQgIC4uLi4uLi4uLkAuLi4uJC4KICAg
MjU2QjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI1NkMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyNTZEMDogMDAgMDIgMDAgMDAg
MDkgMDAgMzMgNTMgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLjNTLi4uLi4uLi4KICAg
MjU2RTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDkzIDI0IEE0ICAu
Li4uLi4uLi5ALi4uLiQuCiAgIDI1NkYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyNTcwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjU3MTA6IDAwIDAyIDAwIDAwIDA5IDAwIDM0IDUzIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi40Uy4uLi4uLi4uCiAgIDI1NzIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA5MyAyNCBBNCAgLi4uLi4uLi4uQC4uLi4kLgogICAyNTczMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjU3NDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI1NzUwOiAwMCAwMiAwMCAwMCAwOSAwMCAzNSA1MyAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uNVMuLi4uLi4uLgogICAyNTc2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggODAgMjQgQTQgIC4uLi4uLi4uLkAuLi4uJC4KICAg
MjU3NzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI1NzgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyNTc5MDogMDAgMDIgMDAgMDAg
MDkgMDAgMzYgNTMgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLjZTLi4uLi4uLi4KICAg
MjU3QTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDhGIDI0IEE0ICAu
Li4uLi4uLi5ALi4uLiQuCiAgIDI1N0IwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyNTdDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjU3RDA6IDAwIDAyIDAwIDAwIDA5IDAwIDM3IDUzIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi43Uy4uLi4uLi4uCiAgIDI1N0UwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA4RiAyNCBBNCAgLi4uLi4uLi4uQC4uLi4kLgogICAyNTdGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjU4MDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI1ODEwOiAwMCAwMiAwMCAwMCAwOSAwMCAzOCA1MyAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uOFMuLi4uLi4uLgogICAyNTgyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggOEIgMjQgQTQgIC4uLi4uLi4uLkAuLi4uJC4KICAg
MjU4MzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI1ODQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyNTg1MDogMDAgMDIgMDAgMDAg
MDkgMDAgMzkgNTMgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLjlTLi4uLi4uLi4KICAg
MjU4NjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDhFIDI0IEE0ICAu
Li4uLi4uLi5ALi4uLiQuCiAgIDI1ODcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyNTg4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjU4OTA6IDAwIDAyIDAwIDAwIDA5IDAwIDNBIDUzIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi46Uy4uLi4uLi4uCiAgIDI1OEEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA4RSAyNCBBNCAgLi4uLi4uLi4uQC4uLi4kLgogICAyNThCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjU4QzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI1OEQwOiAwMCAwMiAwMCAwMCAwOSAwMCAzQiA1MyAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uO1MuLi4uLi4uLgogICAyNThFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggOEIgMjQgQTQgIC4uLi4uLi4uLkAuLi4uJC4KICAg
MjU4RjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI1OTAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyNTkxMDogMDAgMDIgMDAgMDAg
MDkgMDAgM0MgNTMgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLjxTLi4uLi4uLi4KICAg
MjU5MjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDhEIDI0IEE0ICAu
Li4uLi4uLi5ALi4uLiQuCiAgIDI1OTMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyNTk0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjU5NTA6IDAwIDAyIDAwIDAwIDA5IDAwIDNEIDUzIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi49Uy4uLi4uLi4uCiAgIDI1OTYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA4QyAyNCBBNCAgLi4uLi4uLi4uQC4uLi4kLgogICAyNTk3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjU5ODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI1OTkwOiAwMCAwMiAwMCAwMCAwOSAwMCAzRSA1MyAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uPlMuLi4uLi4uLgogICAyNTlBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggOEMgMjQgQTQgIC4uLi4uLi4uLkAuLi4uJC4KICAg
MjU5QjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI1OUMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyNTlEMDogMDAgMDIgMDAgMDAg
MDkgMDAgM0YgNTMgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLj9TLi4uLi4uLi4KICAg
MjU5RTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDhEIDI0IEE0ICAu
Li4uLi4uLi5ALi4uLiQuCiAgIDI1OUYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyNUEwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjVBMTA6IDAwIDAyIDAwIDAwIDA5IDAwIDQwIDUzIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5AUy4uLi4uLi4uCiAgIDI1QTIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA4MCAyNCBBNCAgLi4uLi4uLi4uQC4uLi4kLgogICAyNUEzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjVBNDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI1QTUwOiAwMCAwMiAwMCAwMCAwOSAwMCA0MSA1MyAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uQVMuLi4uLi4uLgogICAyNUE2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggOEEgMjQgQTQgIC4uLi4uLi4uLkAuLi4uJC4KICAg
MjVBNzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI1QTgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyNUE5MDogMDAgMDIgMDAgMDAg
MDkgMDAgNDIgNTMgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLkJTLi4uLi4uLi4KICAg
MjVBQTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDhBIDI0IEE0ICAu
Li4uLi4uLi5ALi4uLiQuCiAgIDI1QUIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyNUFDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjVBRDA6IDAwIDAyIDAwIDAwIDA5IDAwIDQzIDUzIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5DUy4uLi4uLi4uCiAgIDI1QUUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA4NyAyNCBBNCAgLi4uLi4uLi4uQC4uLi4kLgogICAyNUFGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjVCMDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI1QjEwOiAwMCAwMiAwMCAwMCAwOSAwMCA0NCA1MyAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uRFMuLi4uLi4uLgogICAyNUIyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggODkgMjQgQTQgIC4uLi4uLi4uLkAuLi4uJC4KICAg
MjVCMzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI1QjQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyNUI1MDogMDAgMDIgMDAgMDAg
MDkgMDAgNDUgNTMgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLkVTLi4uLi4uLi4KICAg
MjVCNjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDg4IDI0IEE0ICAu
Li4uLi4uLi5ALi4uLiQuCiAgIDI1QjcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyNUI4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjVCOTA6IDAwIDAyIDAwIDAwIDA5IDAwIDQ2IDUzIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5GUy4uLi4uLi4uCiAgIDI1QkEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA4OCAyNCBBNCAgLi4uLi4uLi4uQC4uLi4kLgogICAyNUJCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjVCQzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI1QkQwOiAwMCAwMiAwMCAwMCAwOSAwMCA0NyA1MyAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uR1MuLi4uLi4uLgogICAyNUJFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggODkgMjQgQTQgIC4uLi4uLi4uLkAuLi4uJC4KICAg
MjVCRjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI1QzAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyNUMxMDogMDAgMDIgMDAgMDAg
MDkgMDAgNDggNTMgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLkhTLi4uLi4uLi4KICAg
MjVDMjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDgxIDI0IEE0ICAu
Li4uLi4uLi5ALi4uLiQuCiAgIDI1QzMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyNUM0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjVDNTA6IDAwIDAyIDAwIDAwIDA5IDAwIDQ5IDUzIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5JUy4uLi4uLi4uCiAgIDI1QzYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA4NyAyNCBBNCAgLi4uLi4uLi4uQC4uLi4kLgogICAyNUM3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjVDODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI1QzkwOiAwMCAwMiAwMCAwMCAwOSAwMCA0QSA1MyAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uSlMuLi4uLi4uLgogICAyNUNBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggODUgMjQgQTQgIC4uLi4uLi4uLkAuLi4uJC4KICAg
MjVDQjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI1Q0MwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyNUNEMDogMDAgMDIgMDAgMDAg
MDkgMDAgNEIgNTMgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLktTLi4uLi4uLi4KICAg
MjVDRTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDg2IDI0IEE0ICAu
Li4uLi4uLi5ALi4uLiQuCiAgIDI1Q0YwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyNUQwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjVEMTA6IDAwIDAyIDAwIDAwIDA5IDAwIDRDIDUzIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5MUy4uLi4uLi4uCiAgIDI1RDIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA4NiAyNCBBNCAgLi4uLi4uLi4uQC4uLi4kLgogICAyNUQzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjVENDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI1RDUwOiAwMCAwMiAwMCAwMCAwOSAwMCA0RCA1MyAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uTVMuLi4uLi4uLgogICAyNUQ2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggODEgMjQgQTQgIC4uLi4uLi4uLkAuLi4uJC4KICAg
MjVENzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI1RDgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyNUQ5MDogMDAgMDIgMDAgMDAg
MDkgMDAgNEUgNTMgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLk5TLi4uLi4uLi4KICAg
MjVEQTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDg0IDI0IEE0ICAu
Li4uLi4uLi5ALi4uLiQuCiAgIDI1REIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyNURDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjVERDA6IDAwIDAyIDAwIDAwIDA5IDAwIDRGIDUzIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5PUy4uLi4uLi4uCiAgIDI1REUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA4NSAyNCBBNCAgLi4uLi4uLi4uQC4uLi4kLgogICAyNURGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjVFMDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI1RTEwOiAwMCAwMiAwMCAwMCAwOSAwMCA1MCA1MyAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uUFMuLi4uLi4uLgogICAyNUUyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggODIgMjQgQTQgIC4uLi4uLi4uLkAuLi4uJC4KICAg
MjVFMzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI1RTQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyNUU1MDogMDAgMDIgMDAgMDAg
MDkgMDAgNTEgNTMgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLlFTLi4uLi4uLi4KICAg
MjVFNjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDg0IDI0IEE0ICAu
Li4uLi4uLi5ALi4uLiQuCiAgIDI1RTcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyNUU4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjVFOTA6IDAwIDAyIDAwIDAwIDA5IDAwIDUyIDUzIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5SUy4uLi4uLi4uCiAgIDI1RUEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA4MiAyNCBBNCAgLi4uLi4uLi4uQC4uLi4kLgogICAyNUVCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjVFQzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI1RUQwOiAwMCAwMiAwMCAwMCAwOSAwMCA1MyA1MyAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uU1MuLi4uLi4uLgogICAyNUVFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggODMgMjQgQTQgIC4uLi4uLi4uLkAuLi4uJC4KICAg
MjVFRjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI1RjAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyNUYxMDogMDAgMDIgMDAgMDAg
MDkgMDAgNTQgNTMgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLlRTLi4uLi4uLi4KICAg
MjVGMjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDgzIDI0IEE0ICAu
Li4uLi4uLi5ALi4uLiQuCiAgIDI1RjMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyNUY0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjVGNTA6IDAwIDAyIDAwIDAwIDA5IDAwIDU1IDUzIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5VUy4uLi4uLi4uCiAgIDI1RjYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA3MCAyNCBBNCAgLi4uLi4uLi4uQC4uLnAkLgogICAyNUY3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjVGODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI1RjkwOiAwMCAwMiAwMCAwMCAwOSAwMCA1NiA1MyAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uVlMuLi4uLi4uLgogICAyNUZBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggN0YgMjQgQTQgIC4uLi4uLi4uLkAuLi4uJC4KICAg
MjVGQjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI1RkMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyNUZEMDogMDAgMDIgMDAgMDAg
MDkgMDAgNTcgNTMgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLldTLi4uLi4uLi4KICAg
MjVGRTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDdGIDI0IEE0ICAu
Li4uLi4uLi5ALi4uLiQuCiAgIDI1RkYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyNjAwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjYwMTA6IDAwIDAyIDAwIDAwIDA5IDAwIDU4IDUzIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5YUy4uLi4uLi4uCiAgIDI2MDIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA3QiAyNCBBNCAgLi4uLi4uLi4uQC4uLnskLgogICAyNjAzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjYwNDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI2MDUwOiAwMCAwMiAwMCAwMCAwOSAwMCA1OSA1MyAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uWVMuLi4uLi4uLgogICAyNjA2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggN0UgMjQgQTQgIC4uLi4uLi4uLkAuLi5+JC4KICAg
MjYwNzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI2MDgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyNjA5MDogMDAgMDIgMDAgMDAg
MDkgMDAgNUEgNTMgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLlpTLi4uLi4uLi4KICAg
MjYwQTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDdFIDI0IEE0ICAu
Li4uLi4uLi5ALi4ufiQuCiAgIDI2MEIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyNjBDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjYwRDA6IDAwIDAyIDAwIDAwIDA5IDAwIDVCIDUzIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5bUy4uLi4uLi4uCiAgIDI2MEUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA3QiAyNCBBNCAgLi4uLi4uLi4uQC4uLnskLgogICAyNjBGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjYxMDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI2MTEwOiAwMCAwMiAwMCAwMCAwOSAwMCA1QyA1MyAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uXFMuLi4uLi4uLgogICAyNjEyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggN0QgMjQgQTQgIC4uLi4uLi4uLkAuLi59JC4KICAg
MjYxMzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI2MTQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyNjE1MDogMDAgMDIgMDAgMDAg
MDkgMDAgNUQgNTMgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLl1TLi4uLi4uLi4KICAg
MjYxNjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDdDIDI0IEE0ICAu
Li4uLi4uLi5ALi4ufCQuCiAgIDI2MTcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyNjE4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjYxOTA6IDAwIDAyIDAwIDAwIDA5IDAwIDVFIDUzIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5eUy4uLi4uLi4uCiAgIDI2MUEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA3QyAyNCBBNCAgLi4uLi4uLi4uQC4uLnwkLgogICAyNjFCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjYxQzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI2MUQwOiAwMCAwMiAwMCAwMCAwOSAwMCA1RiA1MyAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uX1MuLi4uLi4uLgogICAyNjFFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggN0QgMjQgQTQgIC4uLi4uLi4uLkAuLi59JC4KICAg
MjYxRjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI2MjAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyNjIxMDogMDAgMDIgMDAgMDAg
MDkgMDAgNjAgNTMgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLmBTLi4uLi4uLi4KICAg
MjYyMjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDcwIDI0IEE0ICAu
Li4uLi4uLi5ALi4ucCQuCiAgIDI2MjMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyNjI0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjYyNTA6IDAwIDAyIDAwIDAwIDA5IDAwIDYxIDUzIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5hUy4uLi4uLi4uCiAgIDI2MjYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA3QSAyNCBBNCAgLi4uLi4uLi4uQC4uLnokLgogICAyNjI3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjYyODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI2MjkwOiAwMCAwMiAwMCAwMCAwOSAwMCA2MiA1MyAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uYlMuLi4uLi4uLgogICAyNjJBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggN0EgMjQgQTQgIC4uLi4uLi4uLkAuLi56JC4KICAg
MjYyQjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI2MkMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyNjJEMDogMDAgMDIgMDAgMDAg
MDkgMDAgNjMgNTMgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLmNTLi4uLi4uLi4KICAg
MjYyRTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDc3IDI0IEE0ICAu
Li4uLi4uLi5ALi4udyQuCiAgIDI2MkYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyNjMwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjYzMTA6IDAwIDAyIDAwIDAwIDA5IDAwIDY0IDUzIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5kUy4uLi4uLi4uCiAgIDI2MzIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA3OSAyNCBBNCAgLi4uLi4uLi4uQC4uLnkkLgogICAyNjMzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjYzNDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI2MzUwOiAwMCAwMiAwMCAwMCAwOSAwMCA2NSA1MyAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uZVMuLi4uLi4uLgogICAyNjM2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggNzggMjQgQTQgIC4uLi4uLi4uLkAuLi54JC4KICAg
MjYzNzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI2MzgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyNjM5MDogMDAgMDIgMDAgMDAg
MDkgMDAgNjYgNTMgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLmZTLi4uLi4uLi4KICAg
MjYzQTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDc4IDI0IEE0ICAu
Li4uLi4uLi5ALi4ueCQuCiAgIDI2M0IwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyNjNDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjYzRDA6IDAwIDAyIDAwIDAwIDA5IDAwIDY3IDUzIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5nUy4uLi4uLi4uCiAgIDI2M0UwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA3OSAyNCBBNCAgLi4uLi4uLi4uQC4uLnkkLgogICAyNjNGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjY0MDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI2NDEwOiAwMCAwMiAwMCAwMCAwOSAwMCA2OCA1MyAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uaFMuLi4uLi4uLgogICAyNjQyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggNzEgMjQgQTQgIC4uLi4uLi4uLkAuLi5xJC4KICAg
MjY0MzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI2NDQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyNjQ1MDogMDAgMDIgMDAgMDAg
MDkgMDAgNjkgNTMgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLmlTLi4uLi4uLi4KICAg
MjY0NjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDc3IDI0IEE0ICAu
Li4uLi4uLi5ALi4udyQuCiAgIDI2NDcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyNjQ4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjY0OTA6IDAwIDAyIDAwIDAwIDA5IDAwIDZBIDUzIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5qUy4uLi4uLi4uCiAgIDI2NEEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA3NSAyNCBBNCAgLi4uLi4uLi4uQC4uLnUkLgogICAyNjRCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjY0QzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI2NEQwOiAwMCAwMiAwMCAwMCAwOSAwMCA2QiA1MyAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4ua1MuLi4uLi4uLgogICAyNjRFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggNzYgMjQgQTQgIC4uLi4uLi4uLkAuLi52JC4KICAg
MjY0RjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI2NTAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyNjUxMDogMDAgMDIgMDAgMDAg
MDkgMDAgNkMgNTMgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLmxTLi4uLi4uLi4KICAg
MjY1MjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDc2IDI0IEE0ICAu
Li4uLi4uLi5ALi4udiQuCiAgIDI2NTMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyNjU0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjY1NTA6IDAwIDAyIDAwIDAwIDA5IDAwIDZEIDUzIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5tUy4uLi4uLi4uCiAgIDI2NTYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA3MSAyNCBBNCAgLi4uLi4uLi4uQC4uLnEkLgogICAyNjU3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjY1ODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI2NTkwOiAwMCAwMiAwMCAwMCAwOSAwMCA2RSA1MyAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4ublMuLi4uLi4uLgogICAyNjVBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggNzQgMjQgQTQgIC4uLi4uLi4uLkAuLi50JC4KICAg
MjY1QjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI2NUMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyNjVEMDogMDAgMDIgMDAgMDAg
MDkgMDAgNkYgNTMgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLm9TLi4uLi4uLi4KICAg
MjY1RTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDc1IDI0IEE0ICAu
Li4uLi4uLi5ALi4udSQuCiAgIDI2NUYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyNjYwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjY2MTA6IDAwIDAyIDAwIDAwIDA5IDAwIDcwIDUzIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5wUy4uLi4uLi4uCiAgIDI2NjIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA3MiAyNCBBNCAgLi4uLi4uLi4uQC4uLnIkLgogICAyNjYzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjY2NDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI2NjUwOiAwMCAwMiAwMCAwMCAwOSAwMCA3MSA1MyAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4ucVMuLi4uLi4uLgogICAyNjY2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggNzQgMjQgQTQgIC4uLi4uLi4uLkAuLi50JC4KICAg
MjY2NzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI2NjgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyNjY5MDogMDAgMDIgMDAgMDAg
MDkgMDAgNzIgNTMgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLnJTLi4uLi4uLi4KICAg
MjY2QTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDcyIDI0IEE0ICAu
Li4uLi4uLi5ALi4uciQuCiAgIDI2NkIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyNjZDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjY2RDA6IDAwIDAyIDAwIDAwIDA5IDAwIDczIDUzIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5zUy4uLi4uLi4uCiAgIDI2NkUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA3MyAyNCBBNCAgLi4uLi4uLi4uQC4uLnMkLgogICAyNjZGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjY3MDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI2NzEwOiAwMCAwMiAwMCAwMCAwOSAwMCA3NCA1MyAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4udFMuLi4uLi4uLgogICAyNjcyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggNzMgMjQgQTQgIC4uLi4uLi4uLkAuLi5zJC4KICAg
MjY3MzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI2NzQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyNjc1MDogMDAgMDIgMDAgMDAg
MDkgMDAgNzUgNTMgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLnVTLi4uLi4uLi4KICAg
MjY3NjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDYwIDI0IEE0ICAu
Li4uLi4uLi5ALi4uYCQuCiAgIDI2NzcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyNjc4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjY3OTA6IDAwIDAyIDAwIDAwIDA5IDAwIDc2IDUzIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi52Uy4uLi4uLi4uCiAgIDI2N0EwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA2RiAyNCBBNCAgLi4uLi4uLi4uQC4uLm8kLgogICAyNjdCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjY3QzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI2N0QwOiAwMCAwMiAwMCAwMCAwOSAwMCA3NyA1MyAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4ud1MuLi4uLi4uLgogICAyNjdFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggNkYgMjQgQTQgIC4uLi4uLi4uLkAuLi5vJC4KICAg
MjY3RjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI2ODAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyNjgxMDogMDAgMDIgMDAgMDAg
MDkgMDAgNzggNTMgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLnhTLi4uLi4uLi4KICAg
MjY4MjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDZCIDI0IEE0ICAu
Li4uLi4uLi5ALi4uayQuCiAgIDI2ODMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyNjg0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjY4NTA6IDAwIDAyIDAwIDAwIDA5IDAwIDc5IDUzIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi55Uy4uLi4uLi4uCiAgIDI2ODYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA2RSAyNCBBNCAgLi4uLi4uLi4uQC4uLm4kLgogICAyNjg3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjY4ODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI2ODkwOiAwMCAwMiAwMCAwMCAwOSAwMCA3QSA1MyAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uelMuLi4uLi4uLgogICAyNjhBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggNkUgMjQgQTQgIC4uLi4uLi4uLkAuLi5uJC4KICAg
MjY4QjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI2OEMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyNjhEMDogMDAgMDIgMDAgMDAg
MDkgMDAgN0IgNTMgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLntTLi4uLi4uLi4KICAg
MjY4RTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDZCIDI0IEE0ICAu
Li4uLi4uLi5ALi4uayQuCiAgIDI2OEYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyNjkwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjY5MTA6IDAwIDAyIDAwIDAwIDA5IDAwIDdDIDUzIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi58Uy4uLi4uLi4uCiAgIDI2OTIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA2RCAyNCBBNCAgLi4uLi4uLi4uQC4uLm0kLgogICAyNjkzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjY5NDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI2OTUwOiAwMCAwMiAwMCAwMCAwOSAwMCA3RCA1MyAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4ufVMuLi4uLi4uLgogICAyNjk2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggNkMgMjQgQTQgIC4uLi4uLi4uLkAuLi5sJC4KICAg
MjY5NzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI2OTgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyNjk5MDogMDAgMDIgMDAgMDAg
MDkgMDAgN0UgNTMgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLn5TLi4uLi4uLi4KICAg
MjY5QTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDZDIDI0IEE0ICAu
Li4uLi4uLi5ALi4ubCQuCiAgIDI2OUIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyNjlDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjY5RDA6IDAwIDAyIDAwIDAwIDA5IDAwIDdGIDUzIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUy4uLi4uLi4uCiAgIDI2OUUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA2RCAyNCBBNCAgLi4uLi4uLi4uQC4uLm0kLgogICAyNjlGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjZBMDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI2QTEwOiAwMCAwMiAwMCAwMCAwOSAwMCA4MCA1MyAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlMuLi4uLi4uLgogICAyNkEyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggNjAgMjQgQTQgIC4uLi4uLi4uLkAuLi5gJC4KICAg
MjZBMzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI2QTQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyNkE1MDogMDAgMDIgMDAgMDAg
MDkgMDAgODEgNTMgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5TLi4uLi4uLi4KICAg
MjZBNjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDZBIDI0IEE0ICAu
Li4uLi4uLi5ALi4uaiQuCiAgIDI2QTcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyNkE4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjZBOTA6IDAwIDAyIDAwIDAwIDA5IDAwIDgyIDUzIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUy4uLi4uLi4uCiAgIDI2QUEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA2QSAyNCBBNCAgLi4uLi4uLi4uQC4uLmokLgogICAyNkFCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjZBQzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI2QUQwOiAwMCAwMiAwMCAwMCAwOSAwMCA4MyA1MyAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlMuLi4uLi4uLgogICAyNkFFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggNjcgMjQgQTQgIC4uLi4uLi4uLkAuLi5nJC4KICAg
MjZBRjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI2QjAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyNkIxMDogMDAgMDIgMDAgMDAg
MDkgMDAgODQgNTMgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5TLi4uLi4uLi4KICAg
MjZCMjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDY5IDI0IEE0ICAu
Li4uLi4uLi5ALi4uaSQuCiAgIDI2QjMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyNkI0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjZCNTA6IDAwIDAyIDAwIDAwIDA5IDAwIDg1IDUzIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUy4uLi4uLi4uCiAgIDI2QjYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA2OCAyNCBBNCAgLi4uLi4uLi4uQC4uLmgkLgogICAyNkI3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjZCODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI2QjkwOiAwMCAwMiAwMCAwMCAwOSAwMCA4NiA1MyAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlMuLi4uLi4uLgogICAyNkJBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggNjggMjQgQTQgIC4uLi4uLi4uLkAuLi5oJC4KICAg
MjZCQjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI2QkMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyNkJEMDogMDAgMDIgMDAgMDAg
MDkgMDAgODcgNTMgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5TLi4uLi4uLi4KICAg
MjZCRTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDY5IDI0IEE0ICAu
Li4uLi4uLi5ALi4uaSQuCiAgIDI2QkYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyNkMwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjZDMTA6IDAwIDAyIDAwIDAwIDA5IDAwIDg4IDUzIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUy4uLi4uLi4uCiAgIDI2QzIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA2MSAyNCBBNCAgLi4uLi4uLi4uQC4uLmEkLgogICAyNkMzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjZDNDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI2QzUwOiAwMCAwMiAwMCAwMCAwOSAwMCA4OSA1MyAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlMuLi4uLi4uLgogICAyNkM2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggNjcgMjQgQTQgIC4uLi4uLi4uLkAuLi5nJC4KICAg
MjZDNzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI2QzgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyNkM5MDogMDAgMDIgMDAgMDAg
MDkgMDAgOEEgNTMgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5TLi4uLi4uLi4KICAg
MjZDQTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDY1IDI0IEE0ICAu
Li4uLi4uLi5ALi4uZSQuCiAgIDI2Q0IwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyNkNDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjZDRDA6IDAwIDAyIDAwIDAwIDA5IDAwIDhCIDUzIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUy4uLi4uLi4uCiAgIDI2Q0UwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA2NiAyNCBBNCAgLi4uLi4uLi4uQC4uLmYkLgogICAyNkNGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjZEMDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI2RDEwOiAwMCAwMiAwMCAwMCAwOSAwMCA4QyA1MyAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlMuLi4uLi4uLgogICAyNkQyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggNjYgMjQgQTQgIC4uLi4uLi4uLkAuLi5mJC4KICAg
MjZEMzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI2RDQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyNkQ1MDogMDAgMDIgMDAgMDAg
MDkgMDAgOEQgNTMgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5TLi4uLi4uLi4KICAg
MjZENjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDYxIDI0IEE0ICAu
Li4uLi4uLi5ALi4uYSQuCiAgIDI2RDcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyNkQ4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjZEOTA6IDAwIDAyIDAwIDAwIDA5IDAwIDhFIDUzIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUy4uLi4uLi4uCiAgIDI2REEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA2NCAyNCBBNCAgLi4uLi4uLi4uQC4uLmQkLgogICAyNkRCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjZEQzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI2REQwOiAwMCAwMiAwMCAwMCAwOSAwMCA4RiA1MyAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlMuLi4uLi4uLgogICAyNkRFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggNjUgMjQgQTQgIC4uLi4uLi4uLkAuLi5lJC4KICAg
MjZERjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI2RTAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyNkUxMDogMDAgMDIgMDAgMDAg
MDkgMDAgOTAgNTMgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5TLi4uLi4uLi4KICAg
MjZFMjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDYyIDI0IEE0ICAu
Li4uLi4uLi5ALi4uYiQuCiAgIDI2RTMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyNkU0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjZFNTA6IDAwIDAyIDAwIDAwIDA5IDAwIDkxIDUzIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUy4uLi4uLi4uCiAgIDI2RTYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA2NCAyNCBBNCAgLi4uLi4uLi4uQC4uLmQkLgogICAyNkU3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjZFODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI2RTkwOiAwMCAwMiAwMCAwMCAwOSAwMCA5MiA1MyAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlMuLi4uLi4uLgogICAyNkVBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggNjIgMjQgQTQgIC4uLi4uLi4uLkAuLi5iJC4KICAg
MjZFQjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI2RUMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyNkVEMDogMDAgMDIgMDAgMDAg
MDkgMDAgOTMgNTMgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5TLi4uLi4uLi4KICAg
MjZFRTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDYzIDI0IEE0ICAu
Li4uLi4uLi5ALi4uYyQuCiAgIDI2RUYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyNkYwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjZGMTA6IDAwIDAyIDAwIDAwIDA5IDAwIDk0IDUzIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUy4uLi4uLi4uCiAgIDI2RjIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA2MyAyNCBBNCAgLi4uLi4uLi4uQC4uLmMkLgogICAyNkYzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjZGNDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI2RjUwOiAwMCAwMiAwMCAwMCAwOSAwMCA5NSA1MyAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlMuLi4uLi4uLgogICAyNkY2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggNTAgMjQgQTQgIC4uLi4uLi4uLkAuLi5QJC4KICAg
MjZGNzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI2RjgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyNkY5MDogMDAgMDIgMDAgMDAg
MDkgMDAgOTYgNTMgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5TLi4uLi4uLi4KICAg
MjZGQTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDVGIDI0IEE0ICAu
Li4uLi4uLi5ALi4uXyQuCiAgIDI2RkIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyNkZDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjZGRDA6IDAwIDAyIDAwIDAwIDA5IDAwIDk3IDUzIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUy4uLi4uLi4uCiAgIDI2RkUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA1RiAyNCBBNCAgLi4uLi4uLi4uQC4uLl8kLgogICAyNkZGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjcwMDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI3MDEwOiAwMCAwMiAwMCAwMCAwOSAwMCA5OCA1MyAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlMuLi4uLi4uLgogICAyNzAyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggNUIgMjQgQTQgIC4uLi4uLi4uLkAuLi5bJC4KICAg
MjcwMzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI3MDQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyNzA1MDogMDAgMDIgMDAgMDAg
MDkgMDAgOTkgNTMgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5TLi4uLi4uLi4KICAg
MjcwNjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDVFIDI0IEE0ICAu
Li4uLi4uLi5ALi4uXiQuCiAgIDI3MDcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyNzA4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjcwOTA6IDAwIDAyIDAwIDAwIDA5IDAwIDlBIDUzIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUy4uLi4uLi4uCiAgIDI3MEEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA1RSAyNCBBNCAgLi4uLi4uLi4uQC4uLl4kLgogICAyNzBCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjcwQzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI3MEQwOiAwMCAwMiAwMCAwMCAwOSAwMCA5QiA1MyAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlMuLi4uLi4uLgogICAyNzBFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggNUIgMjQgQTQgIC4uLi4uLi4uLkAuLi5bJC4KICAg
MjcwRjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI3MTAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyNzExMDogMDAgMDIgMDAgMDAg
MDkgMDAgOUMgNTMgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5TLi4uLi4uLi4KICAg
MjcxMjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDVEIDI0IEE0ICAu
Li4uLi4uLi5ALi4uXSQuCiAgIDI3MTMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyNzE0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjcxNTA6IDAwIDAyIDAwIDAwIDA5IDAwIDlEIDUzIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUy4uLi4uLi4uCiAgIDI3MTYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA1QyAyNCBBNCAgLi4uLi4uLi4uQC4uLlwkLgogICAyNzE3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjcxODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI3MTkwOiAwMCAwMiAwMCAwMCAwOSAwMCA5RSA1MyAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlMuLi4uLi4uLgogICAyNzFBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggNUMgMjQgQTQgIC4uLi4uLi4uLkAuLi5cJC4KICAg
MjcxQjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI3MUMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyNzFEMDogMDAgMDIgMDAgMDAg
MDkgMDAgOUYgNTMgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5TLi4uLi4uLi4KICAg
MjcxRTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDVEIDI0IEE0ICAu
Li4uLi4uLi5ALi4uXSQuCiAgIDI3MUYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyNzIwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjcyMTA6IDAwIDAyIDAwIDAwIDA5IDAwIEEwIDUzIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUy4uLi4uLi4uCiAgIDI3MjIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA1MCAyNCBBNCAgLi4uLi4uLi4uQC4uLlAkLgogICAyNzIzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjcyNDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI3MjUwOiAwMCAwMiAwMCAwMCAwOSAwMCBBMSA1MyAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlMuLi4uLi4uLgogICAyNzI2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggNUEgMjQgQTQgIC4uLi4uLi4uLkAuLi5aJC4KICAg
MjcyNzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI3MjgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyNzI5MDogMDAgMDIgMDAgMDAg
MDkgMDAgQTIgNTMgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5TLi4uLi4uLi4KICAg
MjcyQTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDVBIDI0IEE0ICAu
Li4uLi4uLi5ALi4uWiQuCiAgIDI3MkIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyNzJDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjcyRDA6IDAwIDAyIDAwIDAwIDA5IDAwIEEzIDUzIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUy4uLi4uLi4uCiAgIDI3MkUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA1NyAyNCBBNCAgLi4uLi4uLi4uQC4uLlckLgogICAyNzJGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjczMDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI3MzEwOiAwMCAwMiAwMCAwMCAwOSAwMCBBNCA1MyAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlMuLi4uLi4uLgogICAyNzMyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggNTkgMjQgQTQgIC4uLi4uLi4uLkAuLi5ZJC4KICAg
MjczMzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI3MzQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyNzM1MDogMDAgMDIgMDAgMDAg
MDkgMDAgQTUgNTMgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5TLi4uLi4uLi4KICAg
MjczNjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDU4IDI0IEE0ICAu
Li4uLi4uLi5ALi4uWCQuCiAgIDI3MzcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyNzM4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjczOTA6IDAwIDAyIDAwIDAwIDA5IDAwIEE2IDUzIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUy4uLi4uLi4uCiAgIDI3M0EwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA1OCAyNCBBNCAgLi4uLi4uLi4uQC4uLlgkLgogICAyNzNCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjczQzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI3M0QwOiAwMCAwMiAwMCAwMCAwOSAwMCBBNyA1MyAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlMuLi4uLi4uLgogICAyNzNFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggNTkgMjQgQTQgIC4uLi4uLi4uLkAuLi5ZJC4KICAg
MjczRjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI3NDAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyNzQxMDogMDAgMDIgMDAgMDAg
MDkgMDAgQTggNTMgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5TLi4uLi4uLi4KICAg
Mjc0MjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDUxIDI0IEE0ICAu
Li4uLi4uLi5ALi4uUSQuCiAgIDI3NDMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyNzQ0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
Mjc0NTA6IDAwIDAyIDAwIDAwIDA5IDAwIEE5IDUzIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUy4uLi4uLi4uCiAgIDI3NDYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA1NyAyNCBBNCAgLi4uLi4uLi4uQC4uLlckLgogICAyNzQ3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
Mjc0ODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI3NDkwOiAwMCAwMiAwMCAwMCAwOSAwMCBBQSA1MyAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlMuLi4uLi4uLgogICAyNzRBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggNTUgMjQgQTQgIC4uLi4uLi4uLkAuLi5VJC4KICAg
Mjc0QjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI3NEMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyNzREMDogMDAgMDIgMDAgMDAg
MDkgMDAgQUIgNTMgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5TLi4uLi4uLi4KICAg
Mjc0RTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDU2IDI0IEE0ICAu
Li4uLi4uLi5ALi4uViQuCiAgIDI3NEYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyNzUwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
Mjc1MTA6IDAwIDAyIDAwIDAwIDA5IDAwIEFDIDUzIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUy4uLi4uLi4uCiAgIDI3NTIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA1NiAyNCBBNCAgLi4uLi4uLi4uQC4uLlYkLgogICAyNzUzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
Mjc1NDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI3NTUwOiAwMCAwMiAwMCAwMCAwOSAwMCBBRCA1MyAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlMuLi4uLi4uLgogICAyNzU2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggNTEgMjQgQTQgIC4uLi4uLi4uLkAuLi5RJC4KICAg
Mjc1NzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI3NTgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyNzU5MDogMDAgMDIgMDAgMDAg
MDkgMDAgQUUgNTMgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5TLi4uLi4uLi4KICAg
Mjc1QTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDU0IDI0IEE0ICAu
Li4uLi4uLi5ALi4uVCQuCiAgIDI3NUIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyNzVDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
Mjc1RDA6IDAwIDAyIDAwIDAwIDA5IDAwIEFGIDUzIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUy4uLi4uLi4uCiAgIDI3NUUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA1NSAyNCBBNCAgLi4uLi4uLi4uQC4uLlUkLgogICAyNzVGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
Mjc2MDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI3NjEwOiAwMCAwMiAwMCAwMCAwOSAwMCBCMCA1MyAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlMuLi4uLi4uLgogICAyNzYyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggNTIgMjQgQTQgIC4uLi4uLi4uLkAuLi5SJC4KICAg
Mjc2MzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI3NjQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyNzY1MDogMDAgMDIgMDAgMDAg
MDkgMDAgQjEgNTMgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5TLi4uLi4uLi4KICAg
Mjc2NjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDU0IDI0IEE0ICAu
Li4uLi4uLi5ALi4uVCQuCiAgIDI3NjcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyNzY4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
Mjc2OTA6IDAwIDAyIDAwIDAwIDA5IDAwIEIyIDUzIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUy4uLi4uLi4uCiAgIDI3NkEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA1MiAyNCBBNCAgLi4uLi4uLi4uQC4uLlIkLgogICAyNzZCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
Mjc2QzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI3NkQwOiAwMCAwMiAwMCAwMCAwOSAwMCBCMyA1MyAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlMuLi4uLi4uLgogICAyNzZFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggNTMgMjQgQTQgIC4uLi4uLi4uLkAuLi5TJC4KICAg
Mjc2RjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI3NzAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyNzcxMDogMDAgMDIgMDAgMDAg
MDkgMDAgQjQgNTMgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5TLi4uLi4uLi4KICAg
Mjc3MjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDUzIDI0IEE0ICAu
Li4uLi4uLi5ALi4uUyQuCiAgIDI3NzMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyNzc0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
Mjc3NTA6IDAwIDAyIDAwIDAwIDA5IDAwIEI1IDUzIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUy4uLi4uLi4uCiAgIDI3NzYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA0MCAyNCBBNCAgLi4uLi4uLi4uQC4uLkAkLgogICAyNzc3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
Mjc3ODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI3NzkwOiAwMCAwMiAwMCAwMCAwOSAwMCBCNiA1MyAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlMuLi4uLi4uLgogICAyNzdBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggNEYgMjQgQTQgIC4uLi4uLi4uLkAuLi5PJC4KICAg
Mjc3QjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI3N0MwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyNzdEMDogMDAgMDIgMDAgMDAg
MDkgMDAgQjcgNTMgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5TLi4uLi4uLi4KICAg
Mjc3RTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDRGIDI0IEE0ICAu
Li4uLi4uLi5ALi4uTyQuCiAgIDI3N0YwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyNzgwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
Mjc4MTA6IDAwIDAyIDAwIDAwIDA5IDAwIEI4IDUzIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUy4uLi4uLi4uCiAgIDI3ODIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA0QiAyNCBBNCAgLi4uLi4uLi4uQC4uLkskLgogICAyNzgzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
Mjc4NDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI3ODUwOiAwMCAwMiAwMCAwMCAwOSAwMCBCOSA1MyAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlMuLi4uLi4uLgogICAyNzg2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggNEUgMjQgQTQgIC4uLi4uLi4uLkAuLi5OJC4KICAg
Mjc4NzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI3ODgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyNzg5MDogMDAgMDIgMDAgMDAg
MDkgMDAgQkEgNTMgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5TLi4uLi4uLi4KICAg
Mjc4QTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDRFIDI0IEE0ICAu
Li4uLi4uLi5ALi4uTiQuCiAgIDI3OEIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyNzhDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
Mjc4RDA6IDAwIDAyIDAwIDAwIDA5IDAwIEJCIDUzIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUy4uLi4uLi4uCiAgIDI3OEUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA0QiAyNCBBNCAgLi4uLi4uLi4uQC4uLkskLgogICAyNzhGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
Mjc5MDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI3OTEwOiAwMCAwMiAwMCAwMCAwOSAwMCBCQyA1MyAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlMuLi4uLi4uLgogICAyNzkyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggNEQgMjQgQTQgIC4uLi4uLi4uLkAuLi5NJC4KICAg
Mjc5MzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI3OTQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyNzk1MDogMDAgMDIgMDAgMDAg
MDkgMDAgQkQgNTMgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5TLi4uLi4uLi4KICAg
Mjc5NjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDRDIDI0IEE0ICAu
Li4uLi4uLi5ALi4uTCQuCiAgIDI3OTcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyNzk4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
Mjc5OTA6IDAwIDAyIDAwIDAwIDA5IDAwIEJFIDUzIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUy4uLi4uLi4uCiAgIDI3OUEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA0QyAyNCBBNCAgLi4uLi4uLi4uQC4uLkwkLgogICAyNzlCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
Mjc5QzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI3OUQwOiAwMCAwMiAwMCAwMCAwOSAwMCBCRiA1MyAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlMuLi4uLi4uLgogICAyNzlFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggNEQgMjQgQTQgIC4uLi4uLi4uLkAuLi5NJC4KICAg
Mjc5RjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI3QTAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyN0ExMDogMDAgMDIgMDAgMDAg
MDkgMDAgQzAgNTMgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5TLi4uLi4uLi4KICAg
MjdBMjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDQwIDI0IEE0ICAu
Li4uLi4uLi5ALi4uQCQuCiAgIDI3QTMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyN0E0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjdBNTA6IDAwIDAyIDAwIDAwIDA5IDAwIEMxIDUzIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUy4uLi4uLi4uCiAgIDI3QTYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA0QSAyNCBBNCAgLi4uLi4uLi4uQC4uLkokLgogICAyN0E3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjdBODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI3QTkwOiAwMCAwMiAwMCAwMCAwOSAwMCBDMiA1MyAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlMuLi4uLi4uLgogICAyN0FBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggNEEgMjQgQTQgIC4uLi4uLi4uLkAuLi5KJC4KICAg
MjdBQjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI3QUMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyN0FEMDogMDAgMDIgMDAgMDAg
MDkgMDAgQzMgNTMgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5TLi4uLi4uLi4KICAg
MjdBRTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDQ3IDI0IEE0ICAu
Li4uLi4uLi5ALi4uRyQuCiAgIDI3QUYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyN0IwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjdCMTA6IDAwIDAyIDAwIDAwIDA5IDAwIEM0IDUzIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUy4uLi4uLi4uCiAgIDI3QjIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA0OSAyNCBBNCAgLi4uLi4uLi4uQC4uLkkkLgogICAyN0IzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjdCNDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI3QjUwOiAwMCAwMiAwMCAwMCAwOSAwMCBDNSA1MyAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlMuLi4uLi4uLgogICAyN0I2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggNDggMjQgQTQgIC4uLi4uLi4uLkAuLi5IJC4KICAg
MjdCNzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI3QjgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyN0I5MDogMDAgMDIgMDAgMDAg
MDkgMDAgQzYgNTMgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5TLi4uLi4uLi4KICAg
MjdCQTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDQ4IDI0IEE0ICAu
Li4uLi4uLi5ALi4uSCQuCiAgIDI3QkIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyN0JDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjdCRDA6IDAwIDAyIDAwIDAwIDA5IDAwIEM3IDUzIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUy4uLi4uLi4uCiAgIDI3QkUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA0OSAyNCBBNCAgLi4uLi4uLi4uQC4uLkkkLgogICAyN0JGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjdDMDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI3QzEwOiAwMCAwMiAwMCAwMCAwOSAwMCBDOCA1MyAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlMuLi4uLi4uLgogICAyN0MyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggNDEgMjQgQTQgIC4uLi4uLi4uLkAuLi5BJC4KICAg
MjdDMzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI3QzQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyN0M1MDogMDAgMDIgMDAgMDAg
MDkgMDAgQzkgNTMgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5TLi4uLi4uLi4KICAg
MjdDNjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDQ3IDI0IEE0ICAu
Li4uLi4uLi5ALi4uRyQuCiAgIDI3QzcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyN0M4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjdDOTA6IDAwIDAyIDAwIDAwIDA5IDAwIENBIDUzIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUy4uLi4uLi4uCiAgIDI3Q0EwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA0NSAyNCBBNCAgLi4uLi4uLi4uQC4uLkUkLgogICAyN0NCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjdDQzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI3Q0QwOiAwMCAwMiAwMCAwMCAwOSAwMCBDQiA1MyAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlMuLi4uLi4uLgogICAyN0NFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggNDYgMjQgQTQgIC4uLi4uLi4uLkAuLi5GJC4KICAg
MjdDRjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI3RDAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyN0QxMDogMDAgMDIgMDAgMDAg
MDkgMDAgQ0MgNTMgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5TLi4uLi4uLi4KICAg
MjdEMjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDQ2IDI0IEE0ICAu
Li4uLi4uLi5ALi4uRiQuCiAgIDI3RDMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyN0Q0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjdENTA6IDAwIDAyIDAwIDAwIDA5IDAwIENEIDUzIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUy4uLi4uLi4uCiAgIDI3RDYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA0MSAyNCBBNCAgLi4uLi4uLi4uQC4uLkEkLgogICAyN0Q3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjdEODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI3RDkwOiAwMCAwMiAwMCAwMCAwOSAwMCBDRSA1MyAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlMuLi4uLi4uLgogICAyN0RBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggNDQgMjQgQTQgIC4uLi4uLi4uLkAuLi5EJC4KICAg
MjdEQjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI3REMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyN0REMDogMDAgMDIgMDAgMDAg
MDkgMDAgQ0YgNTMgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5TLi4uLi4uLi4KICAg
MjdERTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDQ1IDI0IEE0ICAu
Li4uLi4uLi5ALi4uRSQuCiAgIDI3REYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyN0UwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjdFMTA6IDAwIDAyIDAwIDAwIDA5IDAwIEQwIDUzIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUy4uLi4uLi4uCiAgIDI3RTIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA0MiAyNCBBNCAgLi4uLi4uLi4uQC4uLkIkLgogICAyN0UzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjdFNDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI3RTUwOiAwMCAwMiAwMCAwMCAwOSAwMCBEMSA1MyAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlMuLi4uLi4uLgogICAyN0U2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggNDQgMjQgQTQgIC4uLi4uLi4uLkAuLi5EJC4KICAg
MjdFNzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI3RTgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyN0U5MDogMDAgMDIgMDAgMDAg
MDkgMDAgRDIgNTMgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5TLi4uLi4uLi4KICAg
MjdFQTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDQyIDI0IEE0ICAu
Li4uLi4uLi5ALi4uQiQuCiAgIDI3RUIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyN0VDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjdFRDA6IDAwIDAyIDAwIDAwIDA5IDAwIEQzIDUzIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUy4uLi4uLi4uCiAgIDI3RUUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA0MyAyNCBBNCAgLi4uLi4uLi4uQC4uLkMkLgogICAyN0VGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjdGMDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI3RjEwOiAwMCAwMiAwMCAwMCAwOSAwMCBENCA1MyAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlMuLi4uLi4uLgogICAyN0YyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggNDMgMjQgQTQgIC4uLi4uLi4uLkAuLi5DJC4KICAg
MjdGMzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI3RjQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyN0Y1MDogMDAgMDIgMDAgMDAg
MDkgMDAgRDUgNTMgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5TLi4uLi4uLi4KICAg
MjdGNjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDMwIDI0IEE0ICAu
Li4uLi4uLi5ALi4uMCQuCiAgIDI3RjcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyN0Y4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjdGOTA6IDAwIDAyIDAwIDAwIDA5IDAwIEQ2IDUzIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUy4uLi4uLi4uCiAgIDI3RkEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCAzRiAyNCBBNCAgLi4uLi4uLi4uQC4uLj8kLgogICAyN0ZCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjdGQzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI3RkQwOiAwMCAwMiAwMCAwMCAwOSAwMCBENyA1MyAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlMuLi4uLi4uLgogICAyN0ZFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggM0YgMjQgQTQgIC4uLi4uLi4uLkAuLi4/JC4KICAg
MjdGRjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI4MDAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyODAxMDogMDAgMDIgMDAgMDAg
MDkgMDAgRDggNTMgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5TLi4uLi4uLi4KICAg
MjgwMjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDNCIDI0IEE0ICAu
Li4uLi4uLi5ALi4uOyQuCiAgIDI4MDMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyODA0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjgwNTA6IDAwIDAyIDAwIDAwIDA5IDAwIEQ5IDUzIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUy4uLi4uLi4uCiAgIDI4MDYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCAzRSAyNCBBNCAgLi4uLi4uLi4uQC4uLj4kLgogICAyODA3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjgwODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI4MDkwOiAwMCAwMiAwMCAwMCAwOSAwMCBEQSA1MyAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlMuLi4uLi4uLgogICAyODBBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggM0UgMjQgQTQgIC4uLi4uLi4uLkAuLi4+JC4KICAg
MjgwQjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI4MEMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyODBEMDogMDAgMDIgMDAgMDAg
MDkgMDAgREIgNTMgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5TLi4uLi4uLi4KICAg
MjgwRTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDNCIDI0IEE0ICAu
Li4uLi4uLi5ALi4uOyQuCiAgIDI4MEYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyODEwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjgxMTA6IDAwIDAyIDAwIDAwIDA5IDAwIERDIDUzIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUy4uLi4uLi4uCiAgIDI4MTIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCAzRCAyNCBBNCAgLi4uLi4uLi4uQC4uLj0kLgogICAyODEzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjgxNDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI4MTUwOiAwMCAwMiAwMCAwMCAwOSAwMCBERCA1MyAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlMuLi4uLi4uLgogICAyODE2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggM0MgMjQgQTQgIC4uLi4uLi4uLkAuLi48JC4KICAg
MjgxNzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI4MTgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyODE5MDogMDAgMDIgMDAgMDAg
MDkgMDAgREUgNTMgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5TLi4uLi4uLi4KICAg
MjgxQTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDNDIDI0IEE0ICAu
Li4uLi4uLi5ALi4uPCQuCiAgIDI4MUIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyODFDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjgxRDA6IDAwIDAyIDAwIDAwIDA5IDAwIERGIDUzIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUy4uLi4uLi4uCiAgIDI4MUUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCAzRCAyNCBBNCAgLi4uLi4uLi4uQC4uLj0kLgogICAyODFGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjgyMDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI4MjEwOiAwMCAwMiAwMCAwMCAwOSAwMCBFMCA1MyAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlMuLi4uLi4uLgogICAyODIyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggMzAgMjQgQTQgIC4uLi4uLi4uLkAuLi4wJC4KICAg
MjgyMzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI4MjQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyODI1MDogMDAgMDIgMDAgMDAg
MDkgMDAgRTEgNTMgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5TLi4uLi4uLi4KICAg
MjgyNjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDNBIDI0IEE0ICAu
Li4uLi4uLi5ALi4uOiQuCiAgIDI4MjcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyODI4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjgyOTA6IDAwIDAyIDAwIDAwIDA5IDAwIEUyIDUzIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUy4uLi4uLi4uCiAgIDI4MkEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCAzQSAyNCBBNCAgLi4uLi4uLi4uQC4uLjokLgogICAyODJCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjgyQzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI4MkQwOiAwMCAwMiAwMCAwMCAwOSAwMCBFMyA1MyAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlMuLi4uLi4uLgogICAyODJFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggMzcgMjQgQTQgIC4uLi4uLi4uLkAuLi43JC4KICAg
MjgyRjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI4MzAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyODMxMDogMDAgMDIgMDAgMDAg
MDkgMDAgRTQgNTMgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5TLi4uLi4uLi4KICAg
MjgzMjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDM5IDI0IEE0ICAu
Li4uLi4uLi5ALi4uOSQuCiAgIDI4MzMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyODM0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjgzNTA6IDAwIDAyIDAwIDAwIDA5IDAwIEU1IDUzIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUy4uLi4uLi4uCiAgIDI4MzYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCAzOCAyNCBBNCAgLi4uLi4uLi4uQC4uLjgkLgogICAyODM3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjgzODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI4MzkwOiAwMCAwMiAwMCAwMCAwOSAwMCBFNiA1MyAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlMuLi4uLi4uLgogICAyODNBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggMzggMjQgQTQgIC4uLi4uLi4uLkAuLi44JC4KICAg
MjgzQjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI4M0MwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyODNEMDogMDAgMDIgMDAgMDAg
MDkgMDAgRTcgNTMgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5TLi4uLi4uLi4KICAg
MjgzRTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDM5IDI0IEE0ICAu
Li4uLi4uLi5ALi4uOSQuCiAgIDI4M0YwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyODQwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
Mjg0MTA6IDAwIDAyIDAwIDAwIDA5IDAwIEU4IDUzIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUy4uLi4uLi4uCiAgIDI4NDIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCAzMSAyNCBBNCAgLi4uLi4uLi4uQC4uLjEkLgogICAyODQzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
Mjg0NDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI4NDUwOiAwMCAwMiAwMCAwMCAwOSAwMCBFOSA1MyAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlMuLi4uLi4uLgogICAyODQ2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggMzcgMjQgQTQgIC4uLi4uLi4uLkAuLi43JC4KICAg
Mjg0NzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI4NDgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyODQ5MDogMDAgMDIgMDAgMDAg
MDkgMDAgRUEgNTMgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5TLi4uLi4uLi4KICAg
Mjg0QTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDM1IDI0IEE0ICAu
Li4uLi4uLi5ALi4uNSQuCiAgIDI4NEIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyODRDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
Mjg0RDA6IDAwIDAyIDAwIDAwIDA5IDAwIEVCIDUzIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUy4uLi4uLi4uCiAgIDI4NEUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCAzNiAyNCBBNCAgLi4uLi4uLi4uQC4uLjYkLgogICAyODRGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
Mjg1MDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI4NTEwOiAwMCAwMiAwMCAwMCAwOSAwMCBFQyA1MyAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlMuLi4uLi4uLgogICAyODUyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggMzYgMjQgQTQgIC4uLi4uLi4uLkAuLi42JC4KICAg
Mjg1MzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI4NTQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyODU1MDogMDAgMDIgMDAgMDAg
MDkgMDAgRUQgNTMgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5TLi4uLi4uLi4KICAg
Mjg1NjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDMxIDI0IEE0ICAu
Li4uLi4uLi5ALi4uMSQuCiAgIDI4NTcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyODU4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
Mjg1OTA6IDAwIDAyIDAwIDAwIDA5IDAwIEVFIDUzIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUy4uLi4uLi4uCiAgIDI4NUEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCAzNCAyNCBBNCAgLi4uLi4uLi4uQC4uLjQkLgogICAyODVCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
Mjg1QzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI4NUQwOiAwMCAwMiAwMCAwMCAwOSAwMCBFRiA1MyAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlMuLi4uLi4uLgogICAyODVFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggMzUgMjQgQTQgIC4uLi4uLi4uLkAuLi41JC4KICAg
Mjg1RjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI4NjAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyODYxMDogMDAgMDIgMDAgMDAg
MDkgMDAgRjAgNTMgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5TLi4uLi4uLi4KICAg
Mjg2MjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDMyIDI0IEE0ICAu
Li4uLi4uLi5ALi4uMiQuCiAgIDI4NjMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyODY0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
Mjg2NTA6IDAwIDAyIDAwIDAwIDA5IDAwIEYxIDUzIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUy4uLi4uLi4uCiAgIDI4NjYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCAzNCAyNCBBNCAgLi4uLi4uLi4uQC4uLjQkLgogICAyODY3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
Mjg2ODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI4NjkwOiAwMCAwMiAwMCAwMCAwOSAwMCBGMiA1MyAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlMuLi4uLi4uLgogICAyODZBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggMzIgMjQgQTQgIC4uLi4uLi4uLkAuLi4yJC4KICAg
Mjg2QjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI4NkMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyODZEMDogMDAgMDIgMDAgMDAg
MDkgMDAgRjMgNTMgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5TLi4uLi4uLi4KICAg
Mjg2RTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDMzIDI0IEE0ICAu
Li4uLi4uLi5ALi4uMyQuCiAgIDI4NkYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyODcwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
Mjg3MTA6IDAwIDAyIDAwIDAwIDA5IDAwIEY0IDUzIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUy4uLi4uLi4uCiAgIDI4NzIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCAzMyAyNCBBNCAgLi4uLi4uLi4uQC4uLjMkLgogICAyODczMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
Mjg3NDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI4NzUwOiAwMCAwMiAwMCAwMCAwOSAwMCBGNSA1MyAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlMuLi4uLi4uLgogICAyODc2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggMjAgMjQgQTQgIC4uLi4uLi4uLkAuLi4gJC4KICAg
Mjg3NzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI4NzgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyODc5MDogMDAgMDIgMDAgMDAg
MDkgMDAgRjYgNTMgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5TLi4uLi4uLi4KICAg
Mjg3QTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDJGIDI0IEE0ICAu
Li4uLi4uLi5ALi4uLyQuCiAgIDI4N0IwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyODdDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
Mjg3RDA6IDAwIDAyIDAwIDAwIDA5IDAwIEY3IDUzIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUy4uLi4uLi4uCiAgIDI4N0UwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCAyRiAyNCBBNCAgLi4uLi4uLi4uQC4uLi8kLgogICAyODdGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
Mjg4MDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI4ODEwOiAwMCAwMiAwMCAwMCAwOSAwMCBGOCA1MyAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlMuLi4uLi4uLgogICAyODgyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggMkIgMjQgQTQgIC4uLi4uLi4uLkAuLi4rJC4KICAg
Mjg4MzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI4ODQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyODg1MDogMDAgMDIgMDAgMDAg
MDkgMDAgRjkgNTMgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5TLi4uLi4uLi4KICAg
Mjg4NjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDJFIDI0IEE0ICAu
Li4uLi4uLi5ALi4uLiQuCiAgIDI4ODcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyODg4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
Mjg4OTA6IDAwIDAyIDAwIDAwIDA5IDAwIEZBIDUzIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUy4uLi4uLi4uCiAgIDI4OEEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCAyRSAyNCBBNCAgLi4uLi4uLi4uQC4uLi4kLgogICAyODhCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
Mjg4QzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI4OEQwOiAwMCAwMiAwMCAwMCAwOSAwMCBGQiA1MyAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlMuLi4uLi4uLgogICAyODhFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggMkIgMjQgQTQgIC4uLi4uLi4uLkAuLi4rJC4KICAg
Mjg4RjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI4OTAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyODkxMDogMDAgMDIgMDAgMDAg
MDkgMDAgRkMgNTMgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5TLi4uLi4uLi4KICAg
Mjg5MjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDJEIDI0IEE0ICAu
Li4uLi4uLi5ALi4uLSQuCiAgIDI4OTMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyODk0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
Mjg5NTA6IDAwIDAyIDAwIDAwIDA5IDAwIEZEIDUzIDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uUy4uLi4uLi4uCiAgIDI4OTYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCAyQyAyNCBBNCAgLi4uLi4uLi4uQC4uLiwkLgogICAyODk3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
Mjg5ODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI4OTkwOiAwMCAwMiAwMCAwMCAwOSAwMCBGRSA1MyAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlMuLi4uLi4uLgogICAyODlBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggMkMgMjQgQTQgIC4uLi4uLi4uLkAuLi4sJC4KICAg
Mjg5QjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI4OUMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyODlEMDogMDAgMDIgMDAgMDAg
MDkgMDAgRkYgNTMgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5TLi4uLi4uLi4KICAg
Mjg5RTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDJEIDI0IEE0ICAu
Li4uLi4uLi5ALi4uLSQuCiAgIDI4OUYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyOEEwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjhBMTA6IDAwIDAyIDAwIDAwIDA5IDAwIDAwIDU0IDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uVC4uLi4uLi4uCiAgIDI4QTIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCAyMCAyNCBBNCAgLi4uLi4uLi4uQC4uLiAkLgogICAyOEEzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjhBNDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI4QTUwOiAwMCAwMiAwMCAwMCAwOSAwMCAwMSA1NCAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlQuLi4uLi4uLgogICAyOEE2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggMkEgMjQgQTQgIC4uLi4uLi4uLkAuLi4qJC4KICAg
MjhBNzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI4QTgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyOEE5MDogMDAgMDIgMDAgMDAg
MDkgMDAgMDIgNTQgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5ULi4uLi4uLi4KICAg
MjhBQTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDJBIDI0IEE0ICAu
Li4uLi4uLi5ALi4uKiQuCiAgIDI4QUIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyOEFDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjhBRDA6IDAwIDAyIDAwIDAwIDA5IDAwIDAzIDU0IDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uVC4uLi4uLi4uCiAgIDI4QUUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCAyNyAyNCBBNCAgLi4uLi4uLi4uQC4uLickLgogICAyOEFGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjhCMDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI4QjEwOiAwMCAwMiAwMCAwMCAwOSAwMCAwNCA1NCAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlQuLi4uLi4uLgogICAyOEIyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggMjkgMjQgQTQgIC4uLi4uLi4uLkAuLi4pJC4KICAg
MjhCMzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI4QjQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyOEI1MDogMDAgMDIgMDAgMDAg
MDkgMDAgMDUgNTQgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5ULi4uLi4uLi4KICAg
MjhCNjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDI4IDI0IEE0ICAu
Li4uLi4uLi5ALi4uKCQuCiAgIDI4QjcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyOEI4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjhCOTA6IDAwIDAyIDAwIDAwIDA5IDAwIDA2IDU0IDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uVC4uLi4uLi4uCiAgIDI4QkEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCAyOCAyNCBBNCAgLi4uLi4uLi4uQC4uLigkLgogICAyOEJCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjhCQzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI4QkQwOiAwMCAwMiAwMCAwMCAwOSAwMCAwNyA1NCAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlQuLi4uLi4uLgogICAyOEJFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggMjkgMjQgQTQgIC4uLi4uLi4uLkAuLi4pJC4KICAg
MjhCRjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI4QzAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyOEMxMDogMDAgMDIgMDAgMDAg
MDkgMDAgMDggNTQgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5ULi4uLi4uLi4KICAg
MjhDMjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDIxIDI0IEE0ICAu
Li4uLi4uLi5ALi4uISQuCiAgIDI4QzMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyOEM0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjhDNTA6IDAwIDAyIDAwIDAwIDA5IDAwIDA5IDU0IDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uVC4uLi4uLi4uCiAgIDI4QzYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCAyNyAyNCBBNCAgLi4uLi4uLi4uQC4uLickLgogICAyOEM3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjhDODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI4QzkwOiAwMCAwMiAwMCAwMCAwOSAwMCAwQSA1NCAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlQuLi4uLi4uLgogICAyOENBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggMjUgMjQgQTQgIC4uLi4uLi4uLkAuLi4lJC4KICAg
MjhDQjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI4Q0MwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyOENEMDogMDAgMDIgMDAgMDAg
MDkgMDAgMEIgNTQgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5ULi4uLi4uLi4KICAg
MjhDRTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDI2IDI0IEE0ICAu
Li4uLi4uLi5ALi4uJiQuCiAgIDI4Q0YwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyOEQwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjhEMTA6IDAwIDAyIDAwIDAwIDA5IDAwIDBDIDU0IDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uVC4uLi4uLi4uCiAgIDI4RDIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCAyNiAyNCBBNCAgLi4uLi4uLi4uQC4uLiYkLgogICAyOEQzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjhENDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI4RDUwOiAwMCAwMiAwMCAwMCAwOSAwMCAwRCA1NCAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlQuLi4uLi4uLgogICAyOEQ2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggMjEgMjQgQTQgIC4uLi4uLi4uLkAuLi4hJC4KICAg
MjhENzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI4RDgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyOEQ5MDogMDAgMDIgMDAgMDAg
MDkgMDAgMEUgNTQgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5ULi4uLi4uLi4KICAg
MjhEQTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDI0IDI0IEE0ICAu
Li4uLi4uLi5ALi4uJCQuCiAgIDI4REIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyOERDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjhERDA6IDAwIDAyIDAwIDAwIDA5IDAwIDBGIDU0IDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uVC4uLi4uLi4uCiAgIDI4REUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCAyNSAyNCBBNCAgLi4uLi4uLi4uQC4uLiUkLgogICAyOERGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjhFMDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI4RTEwOiAwMCAwMiAwMCAwMCAwOSAwMCAxMCA1NCAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlQuLi4uLi4uLgogICAyOEUyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggMjIgMjQgQTQgIC4uLi4uLi4uLkAuLi4iJC4KICAg
MjhFMzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI4RTQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyOEU1MDogMDAgMDIgMDAgMDAg
MDkgMDAgMTEgNTQgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5ULi4uLi4uLi4KICAg
MjhFNjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDI0IDI0IEE0ICAu
Li4uLi4uLi5ALi4uJCQuCiAgIDI4RTcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyOEU4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjhFOTA6IDAwIDAyIDAwIDAwIDA5IDAwIDEyIDU0IDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uVC4uLi4uLi4uCiAgIDI4RUEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCAyMiAyNCBBNCAgLi4uLi4uLi4uQC4uLiIkLgogICAyOEVCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjhFQzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI4RUQwOiAwMCAwMiAwMCAwMCAwOSAwMCAxMyA1NCAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlQuLi4uLi4uLgogICAyOEVFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggMjMgMjQgQTQgIC4uLi4uLi4uLkAuLi4jJC4KICAg
MjhFRjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI4RjAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyOEYxMDogMDAgMDIgMDAgMDAg
MDkgMDAgMTQgNTQgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5ULi4uLi4uLi4KICAg
MjhGMjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDIzIDI0IEE0ICAu
Li4uLi4uLi5ALi4uIyQuCiAgIDI4RjMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyOEY0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjhGNTA6IDAwIDAyIDAwIDAwIDA5IDAwIDE1IDU0IDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uVC4uLi4uLi4uCiAgIDI4RjYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCAxMCAyNCBBNCAgLi4uLi4uLi4uQC4uLi4kLgogICAyOEY3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjhGODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI4RjkwOiAwMCAwMiAwMCAwMCAwOSAwMCAxNiA1NCAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlQuLi4uLi4uLgogICAyOEZBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggMUYgMjQgQTQgIC4uLi4uLi4uLkAuLi4uJC4KICAg
MjhGQjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI4RkMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyOEZEMDogMDAgMDIgMDAgMDAg
MDkgMDAgMTcgNTQgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5ULi4uLi4uLi4KICAg
MjhGRTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDFGIDI0IEE0ICAu
Li4uLi4uLi5ALi4uLiQuCiAgIDI4RkYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyOTAwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjkwMTA6IDAwIDAyIDAwIDAwIDA5IDAwIDE4IDU0IDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uVC4uLi4uLi4uCiAgIDI5MDIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCAxQiAyNCBBNCAgLi4uLi4uLi4uQC4uLi4kLgogICAyOTAzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjkwNDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI5MDUwOiAwMCAwMiAwMCAwMCAwOSAwMCAxOSA1NCAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlQuLi4uLi4uLgogICAyOTA2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggMUUgMjQgQTQgIC4uLi4uLi4uLkAuLi4uJC4KICAg
MjkwNzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI5MDgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyOTA5MDogMDAgMDIgMDAgMDAg
MDkgMDAgMUEgNTQgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5ULi4uLi4uLi4KICAg
MjkwQTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDFFIDI0IEE0ICAu
Li4uLi4uLi5ALi4uLiQuCiAgIDI5MEIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyOTBDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjkwRDA6IDAwIDAyIDAwIDAwIDA5IDAwIDFCIDU0IDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uVC4uLi4uLi4uCiAgIDI5MEUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCAxQiAyNCBBNCAgLi4uLi4uLi4uQC4uLi4kLgogICAyOTBGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjkxMDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI5MTEwOiAwMCAwMiAwMCAwMCAwOSAwMCAxQyA1NCAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlQuLi4uLi4uLgogICAyOTEyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggMUQgMjQgQTQgIC4uLi4uLi4uLkAuLi4uJC4KICAg
MjkxMzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI5MTQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyOTE1MDogMDAgMDIgMDAgMDAg
MDkgMDAgMUQgNTQgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5ULi4uLi4uLi4KICAg
MjkxNjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDFDIDI0IEE0ICAu
Li4uLi4uLi5ALi4uLiQuCiAgIDI5MTcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyOTE4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjkxOTA6IDAwIDAyIDAwIDAwIDA5IDAwIDFFIDU0IDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uVC4uLi4uLi4uCiAgIDI5MUEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCAxQyAyNCBBNCAgLi4uLi4uLi4uQC4uLi4kLgogICAyOTFCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjkxQzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI5MUQwOiAwMCAwMiAwMCAwMCAwOSAwMCAxRiA1NCAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlQuLi4uLi4uLgogICAyOTFFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggMUQgMjQgQTQgIC4uLi4uLi4uLkAuLi4uJC4KICAg
MjkxRjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI5MjAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyOTIxMDogMDAgMDIgMDAgMDAg
MDkgMDAgMjAgNTQgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLiBULi4uLi4uLi4KICAg
MjkyMjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDEwIDI0IEE0ICAu
Li4uLi4uLi5ALi4uLiQuCiAgIDI5MjMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyOTI0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjkyNTA6IDAwIDAyIDAwIDAwIDA5IDAwIDIxIDU0IDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4hVC4uLi4uLi4uCiAgIDI5MjYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCAxQSAyNCBBNCAgLi4uLi4uLi4uQC4uLi4kLgogICAyOTI3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjkyODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI5MjkwOiAwMCAwMiAwMCAwMCAwOSAwMCAyMiA1NCAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uIlQuLi4uLi4uLgogICAyOTJBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggMUEgMjQgQTQgIC4uLi4uLi4uLkAuLi4uJC4KICAg
MjkyQjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI5MkMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyOTJEMDogMDAgMDIgMDAgMDAg
MDkgMDAgMjMgNTQgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLiNULi4uLi4uLi4KICAg
MjkyRTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDE3IDI0IEE0ICAu
Li4uLi4uLi5ALi4uLiQuCiAgIDI5MkYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyOTMwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjkzMTA6IDAwIDAyIDAwIDAwIDA5IDAwIDI0IDU0IDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4kVC4uLi4uLi4uCiAgIDI5MzIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCAxOSAyNCBBNCAgLi4uLi4uLi4uQC4uLi4kLgogICAyOTMzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjkzNDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI5MzUwOiAwMCAwMiAwMCAwMCAwOSAwMCAyNSA1NCAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uJVQuLi4uLi4uLgogICAyOTM2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggMTggMjQgQTQgIC4uLi4uLi4uLkAuLi4uJC4KICAg
MjkzNzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI5MzgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyOTM5MDogMDAgMDIgMDAgMDAg
MDkgMDAgMjYgNTQgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLiZULi4uLi4uLi4KICAg
MjkzQTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDE4IDI0IEE0ICAu
Li4uLi4uLi5ALi4uLiQuCiAgIDI5M0IwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyOTNDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjkzRDA6IDAwIDAyIDAwIDAwIDA5IDAwIDI3IDU0IDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4nVC4uLi4uLi4uCiAgIDI5M0UwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCAxOSAyNCBBNCAgLi4uLi4uLi4uQC4uLi4kLgogICAyOTNGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
Mjk0MDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI5NDEwOiAwMCAwMiAwMCAwMCAwOSAwMCAyOCA1NCAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uKFQuLi4uLi4uLgogICAyOTQyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggMTEgMjQgQTQgIC4uLi4uLi4uLkAuLi4uJC4KICAg
Mjk0MzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI5NDQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyOTQ1MDogMDAgMDIgMDAgMDAg
MDkgMDAgMjkgNTQgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLilULi4uLi4uLi4KICAg
Mjk0NjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDE3IDI0IEE0ICAu
Li4uLi4uLi5ALi4uLiQuCiAgIDI5NDcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyOTQ4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
Mjk0OTA6IDAwIDAyIDAwIDAwIDA5IDAwIDJBIDU0IDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4qVC4uLi4uLi4uCiAgIDI5NEEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCAxNSAyNCBBNCAgLi4uLi4uLi4uQC4uLi4kLgogICAyOTRCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
Mjk0QzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI5NEQwOiAwMCAwMiAwMCAwMCAwOSAwMCAyQiA1NCAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uK1QuLi4uLi4uLgogICAyOTRFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggMTYgMjQgQTQgIC4uLi4uLi4uLkAuLi4uJC4KICAg
Mjk0RjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI5NTAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyOTUxMDogMDAgMDIgMDAgMDAg
MDkgMDAgMkMgNTQgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLixULi4uLi4uLi4KICAg
Mjk1MjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDE2IDI0IEE0ICAu
Li4uLi4uLi5ALi4uLiQuCiAgIDI5NTMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyOTU0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
Mjk1NTA6IDAwIDAyIDAwIDAwIDA5IDAwIDJEIDU0IDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4tVC4uLi4uLi4uCiAgIDI5NTYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCAxMSAyNCBBNCAgLi4uLi4uLi4uQC4uLi4kLgogICAyOTU3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
Mjk1ODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI5NTkwOiAwMCAwMiAwMCAwMCAwOSAwMCAyRSA1NCAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlQuLi4uLi4uLgogICAyOTVBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggMTQgMjQgQTQgIC4uLi4uLi4uLkAuLi4uJC4KICAg
Mjk1QjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI5NUMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyOTVEMDogMDAgMDIgMDAgMDAg
MDkgMDAgMkYgNTQgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi9ULi4uLi4uLi4KICAg
Mjk1RTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDE1IDI0IEE0ICAu
Li4uLi4uLi5ALi4uLiQuCiAgIDI5NUYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyOTYwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
Mjk2MTA6IDAwIDAyIDAwIDAwIDA5IDAwIDMwIDU0IDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4wVC4uLi4uLi4uCiAgIDI5NjIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCAxMiAyNCBBNCAgLi4uLi4uLi4uQC4uLi4kLgogICAyOTYzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
Mjk2NDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI5NjUwOiAwMCAwMiAwMCAwMCAwOSAwMCAzMSA1NCAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uMVQuLi4uLi4uLgogICAyOTY2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggMTQgMjQgQTQgIC4uLi4uLi4uLkAuLi4uJC4KICAg
Mjk2NzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI5NjgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyOTY5MDogMDAgMDIgMDAgMDAg
MDkgMDAgMzIgNTQgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLjJULi4uLi4uLi4KICAg
Mjk2QTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDEyIDI0IEE0ICAu
Li4uLi4uLi5ALi4uLiQuCiAgIDI5NkIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyOTZDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
Mjk2RDA6IDAwIDAyIDAwIDAwIDA5IDAwIDMzIDU0IDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4zVC4uLi4uLi4uCiAgIDI5NkUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCAxMyAyNCBBNCAgLi4uLi4uLi4uQC4uLi4kLgogICAyOTZGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
Mjk3MDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI5NzEwOiAwMCAwMiAwMCAwMCAwOSAwMCAzNCA1NCAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uNFQuLi4uLi4uLgogICAyOTcyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggMTMgMjQgQTQgIC4uLi4uLi4uLkAuLi4uJC4KICAg
Mjk3MzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI5NzQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyOTc1MDogMDAgMDIgMDAgMDAg
MDkgMDAgMzUgNTQgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLjVULi4uLi4uLi4KICAg
Mjk3NjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDAwIDI0IEE0ICAu
Li4uLi4uLi5ALi4uLiQuCiAgIDI5NzcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyOTc4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
Mjk3OTA6IDAwIDAyIDAwIDAwIDA5IDAwIDM2IDU0IDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi42VC4uLi4uLi4uCiAgIDI5N0EwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCAwRiAyNCBBNCAgLi4uLi4uLi4uQC4uLi4kLgogICAyOTdCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
Mjk3QzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI5N0QwOiAwMCAwMiAwMCAwMCAwOSAwMCAzNyA1NCAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uN1QuLi4uLi4uLgogICAyOTdFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggMEYgMjQgQTQgIC4uLi4uLi4uLkAuLi4uJC4KICAg
Mjk3RjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI5ODAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyOTgxMDogMDAgMDIgMDAgMDAg
MDkgMDAgMzggNTQgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLjhULi4uLi4uLi4KICAg
Mjk4MjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDBCIDI0IEE0ICAu
Li4uLi4uLi5ALi4uLiQuCiAgIDI5ODMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyOTg0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
Mjk4NTA6IDAwIDAyIDAwIDAwIDA5IDAwIDM5IDU0IDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi45VC4uLi4uLi4uCiAgIDI5ODYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCAwRSAyNCBBNCAgLi4uLi4uLi4uQC4uLi4kLgogICAyOTg3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
Mjk4ODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI5ODkwOiAwMCAwMiAwMCAwMCAwOSAwMCAzQSA1NCAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uOlQuLi4uLi4uLgogICAyOThBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggMEUgMjQgQTQgIC4uLi4uLi4uLkAuLi4uJC4KICAg
Mjk4QjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI5OEMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyOThEMDogMDAgMDIgMDAgMDAg
MDkgMDAgM0IgNTQgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLjtULi4uLi4uLi4KICAg
Mjk4RTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDBCIDI0IEE0ICAu
Li4uLi4uLi5ALi4uLiQuCiAgIDI5OEYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyOTkwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
Mjk5MTA6IDAwIDAyIDAwIDAwIDA5IDAwIDNDIDU0IDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi48VC4uLi4uLi4uCiAgIDI5OTIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCAwRCAyNCBBNCAgLi4uLi4uLi4uQC4uLi4kLgogICAyOTkzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
Mjk5NDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI5OTUwOiAwMCAwMiAwMCAwMCAwOSAwMCAzRCA1NCAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uPVQuLi4uLi4uLgogICAyOTk2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggMEMgMjQgQTQgIC4uLi4uLi4uLkAuLi4uJC4KICAg
Mjk5NzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI5OTgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyOTk5MDogMDAgMDIgMDAgMDAg
MDkgMDAgM0UgNTQgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLj5ULi4uLi4uLi4KICAg
Mjk5QTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDBDIDI0IEE0ICAu
Li4uLi4uLi5ALi4uLiQuCiAgIDI5OUIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyOTlDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
Mjk5RDA6IDAwIDAyIDAwIDAwIDA5IDAwIDNGIDU0IDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4/VC4uLi4uLi4uCiAgIDI5OUUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCAwRCAyNCBBNCAgLi4uLi4uLi4uQC4uLi4kLgogICAyOTlGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjlBMDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI5QTEwOiAwMCAwMiAwMCAwMCAwOSAwMCA0MCA1NCAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uQFQuLi4uLi4uLgogICAyOUEyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggMDAgMjQgQTQgIC4uLi4uLi4uLkAuLi4uJC4KICAg
MjlBMzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI5QTQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyOUE1MDogMDAgMDIgMDAgMDAg
MDkgMDAgNDEgNTQgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLkFULi4uLi4uLi4KICAg
MjlBNjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDBBIDI0IEE0ICAu
Li4uLi4uLi5ALi4uLiQuCiAgIDI5QTcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyOUE4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjlBOTA6IDAwIDAyIDAwIDAwIDA5IDAwIDQyIDU0IDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5CVC4uLi4uLi4uCiAgIDI5QUEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCAwQSAyNCBBNCAgLi4uLi4uLi4uQC4uLi4kLgogICAyOUFCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjlBQzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI5QUQwOiAwMCAwMiAwMCAwMCAwOSAwMCA0MyA1NCAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uQ1QuLi4uLi4uLgogICAyOUFFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggMDcgMjQgQTQgIC4uLi4uLi4uLkAuLi4uJC4KICAg
MjlBRjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI5QjAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyOUIxMDogMDAgMDIgMDAgMDAg
MDkgMDAgNDQgNTQgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLkRULi4uLi4uLi4KICAg
MjlCMjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDA5IDI0IEE0ICAu
Li4uLi4uLi5ALi4uLiQuCiAgIDI5QjMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyOUI0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjlCNTA6IDAwIDAyIDAwIDAwIDA5IDAwIDQ1IDU0IDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5FVC4uLi4uLi4uCiAgIDI5QjYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCAwOCAyNCBBNCAgLi4uLi4uLi4uQC4uLi4kLgogICAyOUI3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjlCODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI5QjkwOiAwMCAwMiAwMCAwMCAwOSAwMCA0NiA1NCAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uRlQuLi4uLi4uLgogICAyOUJBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggMDggMjQgQTQgIC4uLi4uLi4uLkAuLi4uJC4KICAg
MjlCQjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI5QkMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyOUJEMDogMDAgMDIgMDAgMDAg
MDkgMDAgNDcgNTQgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLkdULi4uLi4uLi4KICAg
MjlCRTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDA5IDI0IEE0ICAu
Li4uLi4uLi5ALi4uLiQuCiAgIDI5QkYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyOUMwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjlDMTA6IDAwIDAyIDAwIDAwIDA5IDAwIDQ4IDU0IDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5IVC4uLi4uLi4uCiAgIDI5QzIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCAwMSAyNCBBNCAgLi4uLi4uLi4uQC4uLi4kLgogICAyOUMzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjlDNDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI5QzUwOiAwMCAwMiAwMCAwMCAwOSAwMCA0OSA1NCAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uSVQuLi4uLi4uLgogICAyOUM2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggMDcgMjQgQTQgIC4uLi4uLi4uLkAuLi4uJC4KICAg
MjlDNzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI5QzgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyOUM5MDogMDAgMDIgMDAgMDAg
MDkgMDAgNEEgNTQgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLkpULi4uLi4uLi4KICAg
MjlDQTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDA1IDI0IEE0ICAu
Li4uLi4uLi5ALi4uLiQuCiAgIDI5Q0IwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyOUNDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjlDRDA6IDAwIDAyIDAwIDAwIDA5IDAwIDRCIDU0IDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5LVC4uLi4uLi4uCiAgIDI5Q0UwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCAwNiAyNCBBNCAgLi4uLi4uLi4uQC4uLi4kLgogICAyOUNGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjlEMDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI5RDEwOiAwMCAwMiAwMCAwMCAwOSAwMCA0QyA1NCAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uTFQuLi4uLi4uLgogICAyOUQyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggMDYgMjQgQTQgIC4uLi4uLi4uLkAuLi4uJC4KICAg
MjlEMzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI5RDQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyOUQ1MDogMDAgMDIgMDAgMDAg
MDkgMDAgNEQgNTQgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLk1ULi4uLi4uLi4KICAg
MjlENjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDAxIDI0IEE0ICAu
Li4uLi4uLi5ALi4uLiQuCiAgIDI5RDcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyOUQ4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjlEOTA6IDAwIDAyIDAwIDAwIDA5IDAwIDRFIDU0IDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5OVC4uLi4uLi4uCiAgIDI5REEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCAwNCAyNCBBNCAgLi4uLi4uLi4uQC4uLi4kLgogICAyOURCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjlEQzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI5REQwOiAwMCAwMiAwMCAwMCAwOSAwMCA0RiA1NCAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uT1QuLi4uLi4uLgogICAyOURFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggMDUgMjQgQTQgIC4uLi4uLi4uLkAuLi4uJC4KICAg
MjlERjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI5RTAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyOUUxMDogMDAgMDIgMDAgMDAg
MDkgMDAgNTAgNTQgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLlBULi4uLi4uLi4KICAg
MjlFMjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDAyIDI0IEE0ICAu
Li4uLi4uLi5ALi4uLiQuCiAgIDI5RTMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyOUU0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjlFNTA6IDAwIDAyIDAwIDAwIDA5IDAwIDUxIDU0IDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5RVC4uLi4uLi4uCiAgIDI5RTYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCAwNCAyNCBBNCAgLi4uLi4uLi4uQC4uLi4kLgogICAyOUU3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjlFODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI5RTkwOiAwMCAwMiAwMCAwMCAwOSAwMCA1MiA1NCAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uUlQuLi4uLi4uLgogICAyOUVBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggMDIgMjQgQTQgIC4uLi4uLi4uLkAuLi4uJC4KICAg
MjlFQjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI5RUMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyOUVEMDogMDAgMDIgMDAgMDAg
MDkgMDAgNTMgNTQgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLlNULi4uLi4uLi4KICAg
MjlFRTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDAzIDI0IEE0ICAu
Li4uLi4uLi5ALi4uLiQuCiAgIDI5RUYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyOUYwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjlGMTA6IDAwIDAyIDAwIDAwIDA5IDAwIDU0IDU0IDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5UVC4uLi4uLi4uCiAgIDI5RjIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCAwMyAyNCBBNCAgLi4uLi4uLi4uQC4uLi4kLgogICAyOUYzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjlGNDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI5RjUwOiAwMCAwMiAwMCAwMCAwOSAwMCA1NSA1NCAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uVVQuLi4uLi4uLgogICAyOUY2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggRjAgMjMgQTQgIC4uLi4uLi4uLkAuLi4uIy4KICAg
MjlGNzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDI5RjgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyOUY5MDogMDAgMDIgMDAgMDAg
MDkgMDAgNTYgNTQgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLlZULi4uLi4uLi4KICAg
MjlGQTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IEZGIDIzIEE0ICAu
Li4uLi4uLi5ALi4uLiMuCiAgIDI5RkIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyOUZDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MjlGRDA6IDAwIDAyIDAwIDAwIDA5IDAwIDU3IDU0IDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5XVC4uLi4uLi4uCiAgIDI5RkUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCBGRiAyMyBBNCAgLi4uLi4uLi4uQC4uLi4jLgogICAyOUZGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkEwMDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJBMDEwOiAwMCAwMiAwMCAwMCAwOSAwMCA1OCA1NCAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uWFQuLi4uLi4uLgogICAyQTAyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggRkIgMjMgQTQgIC4uLi4uLi4uLkAuLi4uIy4KICAg
MkEwMzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJBMDQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyQTA1MDogMDAgMDIgMDAgMDAg
MDkgMDAgNTkgNTQgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLllULi4uLi4uLi4KICAg
MkEwNjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IEZFIDIzIEE0ICAu
Li4uLi4uLi5ALi4uLiMuCiAgIDJBMDcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyQTA4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkEwOTA6IDAwIDAyIDAwIDAwIDA5IDAwIDVBIDU0IDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5aVC4uLi4uLi4uCiAgIDJBMEEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCBGRSAyMyBBNCAgLi4uLi4uLi4uQC4uLi4jLgogICAyQTBCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkEwQzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJBMEQwOiAwMCAwMiAwMCAwMCAwOSAwMCA1QiA1NCAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uW1QuLi4uLi4uLgogICAyQTBFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggRkIgMjMgQTQgIC4uLi4uLi4uLkAuLi4uIy4KICAg
MkEwRjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJBMTAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyQTExMDogMDAgMDIgMDAgMDAg
MDkgMDAgNUMgNTQgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLlxULi4uLi4uLi4KICAg
MkExMjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IEZEIDIzIEE0ICAu
Li4uLi4uLi5ALi4uLiMuCiAgIDJBMTMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyQTE0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkExNTA6IDAwIDAyIDAwIDAwIDA5IDAwIDVEIDU0IDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5dVC4uLi4uLi4uCiAgIDJBMTYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBGQyAyMyBBNCAgLi4uLi4uLi4uQC4uLi4jLgogICAyQTE3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkExODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJBMTkwOiAwMCAwMiAwMCAwMCAwOSAwMCA1RSA1NCAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uXlQuLi4uLi4uLgogICAyQTFBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggRkMgMjMgQTQgIC4uLi4uLi4uLkAuLi4uIy4KICAg
MkExQjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJBMUMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyQTFEMDogMDAgMDIgMDAgMDAg
MDkgMDAgNUYgNTQgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLl9ULi4uLi4uLi4KICAg
MkExRTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IEZEIDIzIEE0ICAu
Li4uLi4uLi5ALi4uLiMuCiAgIDJBMUYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyQTIwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkEyMTA6IDAwIDAyIDAwIDAwIDA5IDAwIDYwIDU0IDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5gVC4uLi4uLi4uCiAgIDJBMjIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCBGMCAyMyBBNCAgLi4uLi4uLi4uQC4uLi4jLgogICAyQTIzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkEyNDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJBMjUwOiAwMCAwMiAwMCAwMCAwOSAwMCA2MSA1NCAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uYVQuLi4uLi4uLgogICAyQTI2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggRkEgMjMgQTQgIC4uLi4uLi4uLkAuLi4uIy4KICAg
MkEyNzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJBMjgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyQTI5MDogMDAgMDIgMDAgMDAg
MDkgMDAgNjIgNTQgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLmJULi4uLi4uLi4KICAg
MkEyQTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IEZBIDIzIEE0ICAu
Li4uLi4uLi5ALi4uLiMuCiAgIDJBMkIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyQTJDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkEyRDA6IDAwIDAyIDAwIDAwIDA5IDAwIDYzIDU0IDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5jVC4uLi4uLi4uCiAgIDJBMkUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCBGNyAyMyBBNCAgLi4uLi4uLi4uQC4uLi4jLgogICAyQTJGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkEzMDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJBMzEwOiAwMCAwMiAwMCAwMCAwOSAwMCA2NCA1NCAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uZFQuLi4uLi4uLgogICAyQTMyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggRjkgMjMgQTQgIC4uLi4uLi4uLkAuLi4uIy4KICAg
MkEzMzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJBMzQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyQTM1MDogMDAgMDIgMDAgMDAg
MDkgMDAgNjUgNTQgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLmVULi4uLi4uLi4KICAg
MkEzNjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IEY4IDIzIEE0ICAu
Li4uLi4uLi5ALi4uLiMuCiAgIDJBMzcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyQTM4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkEzOTA6IDAwIDAyIDAwIDAwIDA5IDAwIDY2IDU0IDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5mVC4uLi4uLi4uCiAgIDJBM0EwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCBGOCAyMyBBNCAgLi4uLi4uLi4uQC4uLi4jLgogICAyQTNCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkEzQzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJBM0QwOiAwMCAwMiAwMCAwMCAwOSAwMCA2NyA1NCAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uZ1QuLi4uLi4uLgogICAyQTNFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggRjkgMjMgQTQgIC4uLi4uLi4uLkAuLi4uIy4KICAg
MkEzRjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJBNDAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyQTQxMDogMDAgMDIgMDAgMDAg
MDkgMDAgNjggNTQgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLmhULi4uLi4uLi4KICAg
MkE0MjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IEYxIDIzIEE0ICAu
Li4uLi4uLi5ALi4uLiMuCiAgIDJBNDMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyQTQ0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkE0NTA6IDAwIDAyIDAwIDAwIDA5IDAwIDY5IDU0IDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5pVC4uLi4uLi4uCiAgIDJBNDYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBGNyAyMyBBNCAgLi4uLi4uLi4uQC4uLi4jLgogICAyQTQ3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkE0ODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJBNDkwOiAwMCAwMiAwMCAwMCAwOSAwMCA2QSA1NCAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4ualQuLi4uLi4uLgogICAyQTRBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggRjUgMjMgQTQgIC4uLi4uLi4uLkAuLi4uIy4KICAg
MkE0QjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJBNEMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyQTREMDogMDAgMDIgMDAgMDAg
MDkgMDAgNkIgNTQgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLmtULi4uLi4uLi4KICAg
MkE0RTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IEY2IDIzIEE0ICAu
Li4uLi4uLi5ALi4uLiMuCiAgIDJBNEYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyQTUwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkE1MTA6IDAwIDAyIDAwIDAwIDA5IDAwIDZDIDU0IDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5sVC4uLi4uLi4uCiAgIDJBNTIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCBGNiAyMyBBNCAgLi4uLi4uLi4uQC4uLi4jLgogICAyQTUzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkE1NDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJBNTUwOiAwMCAwMiAwMCAwMCAwOSAwMCA2RCA1NCAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4ubVQuLi4uLi4uLgogICAyQTU2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggRjEgMjMgQTQgIC4uLi4uLi4uLkAuLi4uIy4KICAg
MkE1NzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJBNTgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyQTU5MDogMDAgMDIgMDAgMDAg
MDkgMDAgNkUgNTQgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLm5ULi4uLi4uLi4KICAg
MkE1QTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IEY0IDIzIEE0ICAu
Li4uLi4uLi5ALi4uLiMuCiAgIDJBNUIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyQTVDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkE1RDA6IDAwIDAyIDAwIDAwIDA5IDAwIDZGIDU0IDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5vVC4uLi4uLi4uCiAgIDJBNUUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBGNSAyMyBBNCAgLi4uLi4uLi4uQC4uLi4jLgogICAyQTVGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkE2MDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJBNjEwOiAwMCAwMiAwMCAwMCAwOSAwMCA3MCA1NCAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4ucFQuLi4uLi4uLgogICAyQTYyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggRjIgMjMgQTQgIC4uLi4uLi4uLkAuLi4uIy4KICAg
MkE2MzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJBNjQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyQTY1MDogMDAgMDIgMDAgMDAg
MDkgMDAgNzEgNTQgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLnFULi4uLi4uLi4KICAg
MkE2NjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IEY0IDIzIEE0ICAu
Li4uLi4uLi5ALi4uLiMuCiAgIDJBNjcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyQTY4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkE2OTA6IDAwIDAyIDAwIDAwIDA5IDAwIDcyIDU0IDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5yVC4uLi4uLi4uCiAgIDJBNkEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCBGMiAyMyBBNCAgLi4uLi4uLi4uQC4uLi4jLgogICAyQTZCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkE2QzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJBNkQwOiAwMCAwMiAwMCAwMCAwOSAwMCA3MyA1NCAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uc1QuLi4uLi4uLgogICAyQTZFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggRjMgMjMgQTQgIC4uLi4uLi4uLkAuLi4uIy4KICAg
MkE2RjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJBNzAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyQTcxMDogMDAgMDIgMDAgMDAg
MDkgMDAgNzQgNTQgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLnRULi4uLi4uLi4KICAg
MkE3MjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IEYzIDIzIEE0ICAu
Li4uLi4uLi5ALi4uLiMuCiAgIDJBNzMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyQTc0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkE3NTA6IDAwIDAyIDAwIDAwIDA5IDAwIDc1IDU0IDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi51VC4uLi4uLi4uCiAgIDJBNzYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBFMCAyMyBBNCAgLi4uLi4uLi4uQC4uLi4jLgogICAyQTc3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkE3ODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJBNzkwOiAwMCAwMiAwMCAwMCAwOSAwMCA3NiA1NCAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4udlQuLi4uLi4uLgogICAyQTdBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggRUYgMjMgQTQgIC4uLi4uLi4uLkAuLi4uIy4KICAg
MkE3QjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJBN0MwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyQTdEMDogMDAgMDIgMDAgMDAg
MDkgMDAgNzcgNTQgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLndULi4uLi4uLi4KICAg
MkE3RTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IEVGIDIzIEE0ICAu
Li4uLi4uLi5ALi4uLiMuCiAgIDJBN0YwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyQTgwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkE4MTA6IDAwIDAyIDAwIDAwIDA5IDAwIDc4IDU0IDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi54VC4uLi4uLi4uCiAgIDJBODIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBFQiAyMyBBNCAgLi4uLi4uLi4uQC4uLi4jLgogICAyQTgzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkE4NDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJBODUwOiAwMCAwMiAwMCAwMCAwOSAwMCA3OSA1NCAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4ueVQuLi4uLi4uLgogICAyQTg2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggRUUgMjMgQTQgIC4uLi4uLi4uLkAuLi4uIy4KICAg
MkE4NzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJBODgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyQTg5MDogMDAgMDIgMDAgMDAg
MDkgMDAgN0EgNTQgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLnpULi4uLi4uLi4KICAg
MkE4QTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IEVFIDIzIEE0ICAu
Li4uLi4uLi5ALi4uLiMuCiAgIDJBOEIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyQThDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkE4RDA6IDAwIDAyIDAwIDAwIDA5IDAwIDdCIDU0IDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi57VC4uLi4uLi4uCiAgIDJBOEUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCBFQiAyMyBBNCAgLi4uLi4uLi4uQC4uLi4jLgogICAyQThGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkE5MDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJBOTEwOiAwMCAwMiAwMCAwMCAwOSAwMCA3QyA1NCAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4ufFQuLi4uLi4uLgogICAyQTkyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggRUQgMjMgQTQgIC4uLi4uLi4uLkAuLi4uIy4KICAg
MkE5MzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJBOTQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyQTk1MDogMDAgMDIgMDAgMDAg
MDkgMDAgN0QgNTQgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLn1ULi4uLi4uLi4KICAg
MkE5NjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IEVDIDIzIEE0ICAu
Li4uLi4uLi5ALi4uLiMuCiAgIDJBOTcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyQTk4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkE5OTA6IDAwIDAyIDAwIDAwIDA5IDAwIDdFIDU0IDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5+VC4uLi4uLi4uCiAgIDJBOUEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCBFQyAyMyBBNCAgLi4uLi4uLi4uQC4uLi4jLgogICAyQTlCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkE5QzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJBOUQwOiAwMCAwMiAwMCAwMCAwOSAwMCA3RiA1NCAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlQuLi4uLi4uLgogICAyQTlFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggRUQgMjMgQTQgIC4uLi4uLi4uLkAuLi4uIy4KICAg
MkE5RjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJBQTAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyQUExMDogMDAgMDIgMDAgMDAg
MDkgMDAgODAgNTQgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5ULi4uLi4uLi4KICAg
MkFBMjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IEUwIDIzIEE0ICAu
Li4uLi4uLi5ALi4uLiMuCiAgIDJBQTMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyQUE0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkFBNTA6IDAwIDAyIDAwIDAwIDA5IDAwIDgxIDU0IDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uVC4uLi4uLi4uCiAgIDJBQTYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBFQSAyMyBBNCAgLi4uLi4uLi4uQC4uLi4jLgogICAyQUE3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkFBODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJBQTkwOiAwMCAwMiAwMCAwMCAwOSAwMCA4MiA1NCAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlQuLi4uLi4uLgogICAyQUFBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggRUEgMjMgQTQgIC4uLi4uLi4uLkAuLi4uIy4KICAg
MkFBQjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJBQUMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyQUFEMDogMDAgMDIgMDAgMDAg
MDkgMDAgODMgNTQgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5ULi4uLi4uLi4KICAg
MkFBRTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IEU3IDIzIEE0ICAu
Li4uLi4uLi5ALi4uLiMuCiAgIDJBQUYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyQUIwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkFCMTA6IDAwIDAyIDAwIDAwIDA5IDAwIDg0IDU0IDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uVC4uLi4uLi4uCiAgIDJBQjIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCBFOSAyMyBBNCAgLi4uLi4uLi4uQC4uLi4jLgogICAyQUIzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkFCNDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJBQjUwOiAwMCAwMiAwMCAwMCAwOSAwMCA4NSA1NCAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlQuLi4uLi4uLgogICAyQUI2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggRTggMjMgQTQgIC4uLi4uLi4uLkAuLi4uIy4KICAg
MkFCNzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJBQjgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyQUI5MDogMDAgMDIgMDAgMDAg
MDkgMDAgODYgNTQgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5ULi4uLi4uLi4KICAg
MkFCQTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IEU4IDIzIEE0ICAu
Li4uLi4uLi5ALi4uLiMuCiAgIDJBQkIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyQUJDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkFCRDA6IDAwIDAyIDAwIDAwIDA5IDAwIDg3IDU0IDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uVC4uLi4uLi4uCiAgIDJBQkUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBFOSAyMyBBNCAgLi4uLi4uLi4uQC4uLi4jLgogICAyQUJGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkFDMDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJBQzEwOiAwMCAwMiAwMCAwMCAwOSAwMCA4OCA1NCAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlQuLi4uLi4uLgogICAyQUMyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggRTEgMjMgQTQgIC4uLi4uLi4uLkAuLi4uIy4KICAg
MkFDMzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJBQzQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyQUM1MDogMDAgMDIgMDAgMDAg
MDkgMDAgODkgNTQgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5ULi4uLi4uLi4KICAg
MkFDNjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IEU3IDIzIEE0ICAu
Li4uLi4uLi5ALi4uLiMuCiAgIDJBQzcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyQUM4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkFDOTA6IDAwIDAyIDAwIDAwIDA5IDAwIDhBIDU0IDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uVC4uLi4uLi4uCiAgIDJBQ0EwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCBFNSAyMyBBNCAgLi4uLi4uLi4uQC4uLi4jLgogICAyQUNCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkFDQzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJBQ0QwOiAwMCAwMiAwMCAwMCAwOSAwMCA4QiA1NCAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlQuLi4uLi4uLgogICAyQUNFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggRTYgMjMgQTQgIC4uLi4uLi4uLkAuLi4uIy4KICAg
MkFDRjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJBRDAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyQUQxMDogMDAgMDIgMDAgMDAg
MDkgMDAgOEMgNTQgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5ULi4uLi4uLi4KICAg
MkFEMjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IEU2IDIzIEE0ICAu
Li4uLi4uLi5ALi4uLiMuCiAgIDJBRDMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyQUQ0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkFENTA6IDAwIDAyIDAwIDAwIDA5IDAwIDhEIDU0IDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uVC4uLi4uLi4uCiAgIDJBRDYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCBFMSAyMyBBNCAgLi4uLi4uLi4uQC4uLi4jLgogICAyQUQ3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkFEODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJBRDkwOiAwMCAwMiAwMCAwMCAwOSAwMCA4RSA1NCAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlQuLi4uLi4uLgogICAyQURBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggRTQgMjMgQTQgIC4uLi4uLi4uLkAuLi4uIy4KICAg
MkFEQjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJBREMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyQUREMDogMDAgMDIgMDAgMDAg
MDkgMDAgOEYgNTQgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5ULi4uLi4uLi4KICAg
MkFERTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IEU1IDIzIEE0ICAu
Li4uLi4uLi5ALi4uLiMuCiAgIDJBREYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyQUUwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkFFMTA6IDAwIDAyIDAwIDAwIDA5IDAwIDkwIDU0IDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uVC4uLi4uLi4uCiAgIDJBRTIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBFMiAyMyBBNCAgLi4uLi4uLi4uQC4uLi4jLgogICAyQUUzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkFFNDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJBRTUwOiAwMCAwMiAwMCAwMCAwOSAwMCA5MSA1NCAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlQuLi4uLi4uLgogICAyQUU2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggRTQgMjMgQTQgIC4uLi4uLi4uLkAuLi4uIy4KICAg
MkFFNzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJBRTgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyQUU5MDogMDAgMDIgMDAgMDAg
MDkgMDAgOTIgNTQgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5ULi4uLi4uLi4KICAg
MkFFQTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IEUyIDIzIEE0ICAu
Li4uLi4uLi5ALi4uLiMuCiAgIDJBRUIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyQUVDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkFFRDA6IDAwIDAyIDAwIDAwIDA5IDAwIDkzIDU0IDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uVC4uLi4uLi4uCiAgIDJBRUUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBFMyAyMyBBNCAgLi4uLi4uLi4uQC4uLi4jLgogICAyQUVGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkFGMDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJBRjEwOiAwMCAwMiAwMCAwMCAwOSAwMCA5NCA1NCAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlQuLi4uLi4uLgogICAyQUYyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggRTMgMjMgQTQgIC4uLi4uLi4uLkAuLi4uIy4KICAg
MkFGMzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJBRjQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyQUY1MDogMDAgMDIgMDAgMDAg
MDkgMDAgOTUgNTQgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5ULi4uLi4uLi4KICAg
MkFGNjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IEQwIDIzIEE0ICAu
Li4uLi4uLi5ALi4uLiMuCiAgIDJBRjcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyQUY4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkFGOTA6IDAwIDAyIDAwIDAwIDA5IDAwIDk2IDU0IDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uVC4uLi4uLi4uCiAgIDJBRkEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBERiAyMyBBNCAgLi4uLi4uLi4uQC4uLi4jLgogICAyQUZCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkFGQzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJBRkQwOiAwMCAwMiAwMCAwMCAwOSAwMCA5NyA1NCAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlQuLi4uLi4uLgogICAyQUZFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggREYgMjMgQTQgIC4uLi4uLi4uLkAuLi4uIy4KICAg
MkFGRjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJCMDAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyQjAxMDogMDAgMDIgMDAgMDAg
MDkgMDAgOTggNTQgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5ULi4uLi4uLi4KICAg
MkIwMjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IERCIDIzIEE0ICAu
Li4uLi4uLi5ALi4uLiMuCiAgIDJCMDMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyQjA0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkIwNTA6IDAwIDAyIDAwIDAwIDA5IDAwIDk5IDU0IDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uVC4uLi4uLi4uCiAgIDJCMDYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBERSAyMyBBNCAgLi4uLi4uLi4uQC4uLi4jLgogICAyQjA3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkIwODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJCMDkwOiAwMCAwMiAwMCAwMCAwOSAwMCA5QSA1NCAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlQuLi4uLi4uLgogICAyQjBBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggREUgMjMgQTQgIC4uLi4uLi4uLkAuLi4uIy4KICAg
MkIwQjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJCMEMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyQjBEMDogMDAgMDIgMDAgMDAg
MDkgMDAgOUIgNTQgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5ULi4uLi4uLi4KICAg
MkIwRTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IERCIDIzIEE0ICAu
Li4uLi4uLi5ALi4uLiMuCiAgIDJCMEYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyQjEwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkIxMTA6IDAwIDAyIDAwIDAwIDA5IDAwIDlDIDU0IDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uVC4uLi4uLi4uCiAgIDJCMTIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCBERCAyMyBBNCAgLi4uLi4uLi4uQC4uLi4jLgogICAyQjEzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkIxNDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJCMTUwOiAwMCAwMiAwMCAwMCAwOSAwMCA5RCA1NCAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlQuLi4uLi4uLgogICAyQjE2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggREMgMjMgQTQgIC4uLi4uLi4uLkAuLi4uIy4KICAg
MkIxNzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJCMTgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyQjE5MDogMDAgMDIgMDAgMDAg
MDkgMDAgOUUgNTQgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5ULi4uLi4uLi4KICAg
MkIxQTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IERDIDIzIEE0ICAu
Li4uLi4uLi5ALi4uLiMuCiAgIDJCMUIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyQjFDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkIxRDA6IDAwIDAyIDAwIDAwIDA5IDAwIDlGIDU0IDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uVC4uLi4uLi4uCiAgIDJCMUUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBERCAyMyBBNCAgLi4uLi4uLi4uQC4uLi4jLgogICAyQjFGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkIyMDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJCMjEwOiAwMCAwMiAwMCAwMCAwOSAwMCBBMCA1NCAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlQuLi4uLi4uLgogICAyQjIyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggRDAgMjMgQTQgIC4uLi4uLi4uLkAuLi4uIy4KICAg
MkIyMzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJCMjQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyQjI1MDogMDAgMDIgMDAgMDAg
MDkgMDAgQTEgNTQgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5ULi4uLi4uLi4KICAg
MkIyNjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IERBIDIzIEE0ICAu
Li4uLi4uLi5ALi4uLiMuCiAgIDJCMjcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyQjI4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkIyOTA6IDAwIDAyIDAwIDAwIDA5IDAwIEEyIDU0IDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uVC4uLi4uLi4uCiAgIDJCMkEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCBEQSAyMyBBNCAgLi4uLi4uLi4uQC4uLi4jLgogICAyQjJCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkIyQzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJCMkQwOiAwMCAwMiAwMCAwMCAwOSAwMCBBMyA1NCAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlQuLi4uLi4uLgogICAyQjJFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggRDcgMjMgQTQgIC4uLi4uLi4uLkAuLi4uIy4KICAg
MkIyRjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJCMzAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyQjMxMDogMDAgMDIgMDAgMDAg
MDkgMDAgQTQgNTQgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5ULi4uLi4uLi4KICAg
MkIzMjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IEQ5IDIzIEE0ICAu
Li4uLi4uLi5ALi4uLiMuCiAgIDJCMzMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyQjM0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkIzNTA6IDAwIDAyIDAwIDAwIDA5IDAwIEE1IDU0IDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uVC4uLi4uLi4uCiAgIDJCMzYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBEOCAyMyBBNCAgLi4uLi4uLi4uQC4uLi4jLgogICAyQjM3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkIzODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJCMzkwOiAwMCAwMiAwMCAwMCAwOSAwMCBBNiA1NCAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlQuLi4uLi4uLgogICAyQjNBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggRDggMjMgQTQgIC4uLi4uLi4uLkAuLi4uIy4KICAg
MkIzQjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJCM0MwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyQjNEMDogMDAgMDIgMDAgMDAg
MDkgMDAgQTcgNTQgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5ULi4uLi4uLi4KICAg
MkIzRTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IEQ5IDIzIEE0ICAu
Li4uLi4uLi5ALi4uLiMuCiAgIDJCM0YwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyQjQwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkI0MTA6IDAwIDAyIDAwIDAwIDA5IDAwIEE4IDU0IDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uVC4uLi4uLi4uCiAgIDJCNDIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBEMSAyMyBBNCAgLi4uLi4uLi4uQC4uLi4jLgogICAyQjQzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkI0NDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJCNDUwOiAwMCAwMiAwMCAwMCAwOSAwMCBBOSA1NCAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlQuLi4uLi4uLgogICAyQjQ2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggRDcgMjMgQTQgIC4uLi4uLi4uLkAuLi4uIy4KICAg
MkI0NzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJCNDgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyQjQ5MDogMDAgMDIgMDAgMDAg
MDkgMDAgQUEgNTQgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5ULi4uLi4uLi4KICAg
MkI0QTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IEQ1IDIzIEE0ICAu
Li4uLi4uLi5ALi4uLiMuCiAgIDJCNEIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyQjRDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkI0RDA6IDAwIDAyIDAwIDAwIDA5IDAwIEFCIDU0IDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uVC4uLi4uLi4uCiAgIDJCNEUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBENiAyMyBBNCAgLi4uLi4uLi4uQC4uLi4jLgogICAyQjRGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkI1MDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJCNTEwOiAwMCAwMiAwMCAwMCAwOSAwMCBBQyA1NCAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlQuLi4uLi4uLgogICAyQjUyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggRDYgMjMgQTQgIC4uLi4uLi4uLkAuLi4uIy4KICAg
MkI1MzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJCNTQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyQjU1MDogMDAgMDIgMDAgMDAg
MDkgMDAgQUQgNTQgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5ULi4uLi4uLi4KICAg
MkI1NjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IEQxIDIzIEE0ICAu
Li4uLi4uLi5ALi4uLiMuCiAgIDJCNTcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyQjU4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkI1OTA6IDAwIDAyIDAwIDAwIDA5IDAwIEFFIDU0IDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uVC4uLi4uLi4uCiAgIDJCNUEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCBENCAyMyBBNCAgLi4uLi4uLi4uQC4uLi4jLgogICAyQjVCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkI1QzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJCNUQwOiAwMCAwMiAwMCAwMCAwOSAwMCBBRiA1NCAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlQuLi4uLi4uLgogICAyQjVFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggRDUgMjMgQTQgIC4uLi4uLi4uLkAuLi4uIy4KICAg
MkI1RjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJCNjAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyQjYxMDogMDAgMDIgMDAgMDAg
MDkgMDAgQjAgNTQgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5ULi4uLi4uLi4KICAg
MkI2MjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IEQyIDIzIEE0ICAu
Li4uLi4uLi5ALi4uLiMuCiAgIDJCNjMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyQjY0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkI2NTA6IDAwIDAyIDAwIDAwIDA5IDAwIEIxIDU0IDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uVC4uLi4uLi4uCiAgIDJCNjYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBENCAyMyBBNCAgLi4uLi4uLi4uQC4uLi4jLgogICAyQjY3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkI2ODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJCNjkwOiAwMCAwMiAwMCAwMCAwOSAwMCBCMiA1NCAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlQuLi4uLi4uLgogICAyQjZBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggRDIgMjMgQTQgIC4uLi4uLi4uLkAuLi4uIy4KICAg
MkI2QjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJCNkMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyQjZEMDogMDAgMDIgMDAgMDAg
MDkgMDAgQjMgNTQgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5ULi4uLi4uLi4KICAg
MkI2RTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IEQzIDIzIEE0ICAu
Li4uLi4uLi5ALi4uLiMuCiAgIDJCNkYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyQjcwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkI3MTA6IDAwIDAyIDAwIDAwIDA5IDAwIEI0IDU0IDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uVC4uLi4uLi4uCiAgIDJCNzIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCBEMyAyMyBBNCAgLi4uLi4uLi4uQC4uLi4jLgogICAyQjczMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkI3NDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJCNzUwOiAwMCAwMiAwMCAwMCAwOSAwMCBCNSA1NCAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlQuLi4uLi4uLgogICAyQjc2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggQzAgMjMgQTQgIC4uLi4uLi4uLkAuLi4uIy4KICAg
MkI3NzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJCNzgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyQjc5MDogMDAgMDIgMDAgMDAg
MDkgMDAgQjYgNTQgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5ULi4uLi4uLi4KICAg
MkI3QTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IENGIDIzIEE0ICAu
Li4uLi4uLi5ALi4uLiMuCiAgIDJCN0IwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyQjdDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkI3RDA6IDAwIDAyIDAwIDAwIDA5IDAwIEI3IDU0IDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uVC4uLi4uLi4uCiAgIDJCN0UwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCBDRiAyMyBBNCAgLi4uLi4uLi4uQC4uLi4jLgogICAyQjdGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkI4MDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJCODEwOiAwMCAwMiAwMCAwMCAwOSAwMCBCOCA1NCAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlQuLi4uLi4uLgogICAyQjgyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggQ0IgMjMgQTQgIC4uLi4uLi4uLkAuLi4uIy4KICAg
MkI4MzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJCODQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyQjg1MDogMDAgMDIgMDAgMDAg
MDkgMDAgQjkgNTQgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5ULi4uLi4uLi4KICAg
MkI4NjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IENFIDIzIEE0ICAu
Li4uLi4uLi5ALi4uLiMuCiAgIDJCODcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyQjg4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkI4OTA6IDAwIDAyIDAwIDAwIDA5IDAwIEJBIDU0IDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uVC4uLi4uLi4uCiAgIDJCOEEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCBDRSAyMyBBNCAgLi4uLi4uLi4uQC4uLi4jLgogICAyQjhCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkI4QzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJCOEQwOiAwMCAwMiAwMCAwMCAwOSAwMCBCQiA1NCAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlQuLi4uLi4uLgogICAyQjhFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggQ0IgMjMgQTQgIC4uLi4uLi4uLkAuLi4uIy4KICAg
MkI4RjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJCOTAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyQjkxMDogMDAgMDIgMDAgMDAg
MDkgMDAgQkMgNTQgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5ULi4uLi4uLi4KICAg
MkI5MjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IENEIDIzIEE0ICAu
Li4uLi4uLi5ALi4uLiMuCiAgIDJCOTMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyQjk0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkI5NTA6IDAwIDAyIDAwIDAwIDA5IDAwIEJEIDU0IDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uVC4uLi4uLi4uCiAgIDJCOTYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBDQyAyMyBBNCAgLi4uLi4uLi4uQC4uLi4jLgogICAyQjk3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkI5ODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJCOTkwOiAwMCAwMiAwMCAwMCAwOSAwMCBCRSA1NCAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlQuLi4uLi4uLgogICAyQjlBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggQ0MgMjMgQTQgIC4uLi4uLi4uLkAuLi4uIy4KICAg
MkI5QjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJCOUMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyQjlEMDogMDAgMDIgMDAgMDAg
MDkgMDAgQkYgNTQgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5ULi4uLi4uLi4KICAg
MkI5RTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IENEIDIzIEE0ICAu
Li4uLi4uLi5ALi4uLiMuCiAgIDJCOUYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyQkEwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkJBMTA6IDAwIDAyIDAwIDAwIDA5IDAwIEMwIDU0IDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uVC4uLi4uLi4uCiAgIDJCQTIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCBDMCAyMyBBNCAgLi4uLi4uLi4uQC4uLi4jLgogICAyQkEzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkJBNDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJCQTUwOiAwMCAwMiAwMCAwMCAwOSAwMCBDMSA1NCAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlQuLi4uLi4uLgogICAyQkE2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggQ0EgMjMgQTQgIC4uLi4uLi4uLkAuLi4uIy4KICAg
MkJBNzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJCQTgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyQkE5MDogMDAgMDIgMDAgMDAg
MDkgMDAgQzIgNTQgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5ULi4uLi4uLi4KICAg
MkJBQTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IENBIDIzIEE0ICAu
Li4uLi4uLi5ALi4uLiMuCiAgIDJCQUIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyQkFDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkJBRDA6IDAwIDAyIDAwIDAwIDA5IDAwIEMzIDU0IDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uVC4uLi4uLi4uCiAgIDJCQUUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCBDNyAyMyBBNCAgLi4uLi4uLi4uQC4uLi4jLgogICAyQkFGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkJCMDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJCQjEwOiAwMCAwMiAwMCAwMCAwOSAwMCBDNCA1NCAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlQuLi4uLi4uLgogICAyQkIyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggQzkgMjMgQTQgIC4uLi4uLi4uLkAuLi4uIy4KICAg
MkJCMzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJCQjQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyQkI1MDogMDAgMDIgMDAgMDAg
MDkgMDAgQzUgNTQgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5ULi4uLi4uLi4KICAg
MkJCNjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IEM4IDIzIEE0ICAu
Li4uLi4uLi5ALi4uLiMuCiAgIDJCQjcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyQkI4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkJCOTA6IDAwIDAyIDAwIDAwIDA5IDAwIEM2IDU0IDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uVC4uLi4uLi4uCiAgIDJCQkEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCBDOCAyMyBBNCAgLi4uLi4uLi4uQC4uLi4jLgogICAyQkJCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkJCQzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJCQkQwOiAwMCAwMiAwMCAwMCAwOSAwMCBDNyA1NCAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlQuLi4uLi4uLgogICAyQkJFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggQzkgMjMgQTQgIC4uLi4uLi4uLkAuLi4uIy4KICAg
MkJCRjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJCQzAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyQkMxMDogMDAgMDIgMDAgMDAg
MDkgMDAgQzggNTQgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5ULi4uLi4uLi4KICAg
MkJDMjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IEMxIDIzIEE0ICAu
Li4uLi4uLi5ALi4uLiMuCiAgIDJCQzMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyQkM0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkJDNTA6IDAwIDAyIDAwIDAwIDA5IDAwIEM5IDU0IDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uVC4uLi4uLi4uCiAgIDJCQzYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBDNyAyMyBBNCAgLi4uLi4uLi4uQC4uLi4jLgogICAyQkM3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkJDODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJCQzkwOiAwMCAwMiAwMCAwMCAwOSAwMCBDQSA1NCAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlQuLi4uLi4uLgogICAyQkNBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggQzUgMjMgQTQgIC4uLi4uLi4uLkAuLi4uIy4KICAg
MkJDQjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJCQ0MwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyQkNEMDogMDAgMDIgMDAgMDAg
MDkgMDAgQ0IgNTQgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5ULi4uLi4uLi4KICAg
MkJDRTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IEM2IDIzIEE0ICAu
Li4uLi4uLi5ALi4uLiMuCiAgIDJCQ0YwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyQkQwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkJEMTA6IDAwIDAyIDAwIDAwIDA5IDAwIENDIDU0IDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uVC4uLi4uLi4uCiAgIDJCRDIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCBDNiAyMyBBNCAgLi4uLi4uLi4uQC4uLi4jLgogICAyQkQzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkJENDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJCRDUwOiAwMCAwMiAwMCAwMCAwOSAwMCBDRCA1NCAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlQuLi4uLi4uLgogICAyQkQ2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggQzEgMjMgQTQgIC4uLi4uLi4uLkAuLi4uIy4KICAg
MkJENzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJCRDgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyQkQ5MDogMDAgMDIgMDAgMDAg
MDkgMDAgQ0UgNTQgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5ULi4uLi4uLi4KICAg
MkJEQTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IEM0IDIzIEE0ICAu
Li4uLi4uLi5ALi4uLiMuCiAgIDJCREIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyQkRDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkJERDA6IDAwIDAyIDAwIDAwIDA5IDAwIENGIDU0IDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uVC4uLi4uLi4uCiAgIDJCREUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBDNSAyMyBBNCAgLi4uLi4uLi4uQC4uLi4jLgogICAyQkRGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkJFMDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJCRTEwOiAwMCAwMiAwMCAwMCAwOSAwMCBEMCA1NCAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlQuLi4uLi4uLgogICAyQkUyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggQzIgMjMgQTQgIC4uLi4uLi4uLkAuLi4uIy4KICAg
MkJFMzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJCRTQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyQkU1MDogMDAgMDIgMDAgMDAg
MDkgMDAgRDEgNTQgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5ULi4uLi4uLi4KICAg
MkJFNjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IEM0IDIzIEE0ICAu
Li4uLi4uLi5ALi4uLiMuCiAgIDJCRTcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyQkU4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkJFOTA6IDAwIDAyIDAwIDAwIDA5IDAwIEQyIDU0IDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uVC4uLi4uLi4uCiAgIDJCRUEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCBDMiAyMyBBNCAgLi4uLi4uLi4uQC4uLi4jLgogICAyQkVCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkJFQzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJCRUQwOiAwMCAwMiAwMCAwMCAwOSAwMCBEMyA1NCAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlQuLi4uLi4uLgogICAyQkVFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggQzMgMjMgQTQgIC4uLi4uLi4uLkAuLi4uIy4KICAg
MkJFRjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJCRjAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyQkYxMDogMDAgMDIgMDAgMDAg
MDkgMDAgRDQgNTQgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5ULi4uLi4uLi4KICAg
MkJGMjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IEMzIDIzIEE0ICAu
Li4uLi4uLi5ALi4uLiMuCiAgIDJCRjMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyQkY0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkJGNTA6IDAwIDAyIDAwIDAwIDA5IDAwIEQ1IDU0IDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uVC4uLi4uLi4uCiAgIDJCRjYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBCMCAyMyBBNCAgLi4uLi4uLi4uQC4uLi4jLgogICAyQkY3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkJGODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJCRjkwOiAwMCAwMiAwMCAwMCAwOSAwMCBENiA1NCAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlQuLi4uLi4uLgogICAyQkZBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggQkYgMjMgQTQgIC4uLi4uLi4uLkAuLi4uIy4KICAg
MkJGQjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJCRkMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyQkZEMDogMDAgMDIgMDAgMDAg
MDkgMDAgRDcgNTQgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5ULi4uLi4uLi4KICAg
MkJGRTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IEJGIDIzIEE0ICAu
Li4uLi4uLi5ALi4uLiMuCiAgIDJCRkYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyQzAwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkMwMTA6IDAwIDAyIDAwIDAwIDA5IDAwIEQ4IDU0IDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uVC4uLi4uLi4uCiAgIDJDMDIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBCQiAyMyBBNCAgLi4uLi4uLi4uQC4uLi4jLgogICAyQzAzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkMwNDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJDMDUwOiAwMCAwMiAwMCAwMCAwOSAwMCBEOSA1NCAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlQuLi4uLi4uLgogICAyQzA2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggQkUgMjMgQTQgIC4uLi4uLi4uLkAuLi4uIy4KICAg
MkMwNzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJDMDgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyQzA5MDogMDAgMDIgMDAgMDAg
MDkgMDAgREEgNTQgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5ULi4uLi4uLi4KICAg
MkMwQTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IEJFIDIzIEE0ICAu
Li4uLi4uLi5ALi4uLiMuCiAgIDJDMEIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyQzBDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkMwRDA6IDAwIDAyIDAwIDAwIDA5IDAwIERCIDU0IDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uVC4uLi4uLi4uCiAgIDJDMEUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCBCQiAyMyBBNCAgLi4uLi4uLi4uQC4uLi4jLgogICAyQzBGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkMxMDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJDMTEwOiAwMCAwMiAwMCAwMCAwOSAwMCBEQyA1NCAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlQuLi4uLi4uLgogICAyQzEyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggQkQgMjMgQTQgIC4uLi4uLi4uLkAuLi4uIy4KICAg
MkMxMzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJDMTQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyQzE1MDogMDAgMDIgMDAgMDAg
MDkgMDAgREQgNTQgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5ULi4uLi4uLi4KICAg
MkMxNjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IEJDIDIzIEE0ICAu
Li4uLi4uLi5ALi4uLiMuCiAgIDJDMTcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyQzE4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkMxOTA6IDAwIDAyIDAwIDAwIDA5IDAwIERFIDU0IDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uVC4uLi4uLi4uCiAgIDJDMUEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCBCQyAyMyBBNCAgLi4uLi4uLi4uQC4uLi4jLgogICAyQzFCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkMxQzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJDMUQwOiAwMCAwMiAwMCAwMCAwOSAwMCBERiA1NCAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlQuLi4uLi4uLgogICAyQzFFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggQkQgMjMgQTQgIC4uLi4uLi4uLkAuLi4uIy4KICAg
MkMxRjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJDMjAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyQzIxMDogMDAgMDIgMDAgMDAg
MDkgMDAgRTAgNTQgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5ULi4uLi4uLi4KICAg
MkMyMjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IEIwIDIzIEE0ICAu
Li4uLi4uLi5ALi4uLiMuCiAgIDJDMjMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyQzI0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkMyNTA6IDAwIDAyIDAwIDAwIDA5IDAwIEUxIDU0IDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uVC4uLi4uLi4uCiAgIDJDMjYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBCQSAyMyBBNCAgLi4uLi4uLi4uQC4uLi4jLgogICAyQzI3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkMyODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJDMjkwOiAwMCAwMiAwMCAwMCAwOSAwMCBFMiA1NCAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlQuLi4uLi4uLgogICAyQzJBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggQkEgMjMgQTQgIC4uLi4uLi4uLkAuLi4uIy4KICAg
MkMyQjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJDMkMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyQzJEMDogMDAgMDIgMDAgMDAg
MDkgMDAgRTMgNTQgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5ULi4uLi4uLi4KICAg
MkMyRTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IEI3IDIzIEE0ICAu
Li4uLi4uLi5ALi4uLiMuCiAgIDJDMkYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyQzMwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkMzMTA6IDAwIDAyIDAwIDAwIDA5IDAwIEU0IDU0IDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uVC4uLi4uLi4uCiAgIDJDMzIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCBCOSAyMyBBNCAgLi4uLi4uLi4uQC4uLi4jLgogICAyQzMzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkMzNDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJDMzUwOiAwMCAwMiAwMCAwMCAwOSAwMCBFNSA1NCAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlQuLi4uLi4uLgogICAyQzM2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggQjggMjMgQTQgIC4uLi4uLi4uLkAuLi4uIy4KICAg
MkMzNzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJDMzgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyQzM5MDogMDAgMDIgMDAgMDAg
MDkgMDAgRTYgNTQgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5ULi4uLi4uLi4KICAg
MkMzQTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IEI4IDIzIEE0ICAu
Li4uLi4uLi5ALi4uLiMuCiAgIDJDM0IwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyQzNDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkMzRDA6IDAwIDAyIDAwIDAwIDA5IDAwIEU3IDU0IDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uVC4uLi4uLi4uCiAgIDJDM0UwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBCOSAyMyBBNCAgLi4uLi4uLi4uQC4uLi4jLgogICAyQzNGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkM0MDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJDNDEwOiAwMCAwMiAwMCAwMCAwOSAwMCBFOCA1NCAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlQuLi4uLi4uLgogICAyQzQyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggQjEgMjMgQTQgIC4uLi4uLi4uLkAuLi4uIy4KICAg
MkM0MzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJDNDQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyQzQ1MDogMDAgMDIgMDAgMDAg
MDkgMDAgRTkgNTQgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5ULi4uLi4uLi4KICAg
MkM0NjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IEI3IDIzIEE0ICAu
Li4uLi4uLi5ALi4uLiMuCiAgIDJDNDcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyQzQ4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkM0OTA6IDAwIDAyIDAwIDAwIDA5IDAwIEVBIDU0IDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uVC4uLi4uLi4uCiAgIDJDNEEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCBCNSAyMyBBNCAgLi4uLi4uLi4uQC4uLi4jLgogICAyQzRCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkM0QzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJDNEQwOiAwMCAwMiAwMCAwMCAwOSAwMCBFQiA1NCAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlQuLi4uLi4uLgogICAyQzRFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggQjYgMjMgQTQgIC4uLi4uLi4uLkAuLi4uIy4KICAg
MkM0RjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJDNTAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyQzUxMDogMDAgMDIgMDAgMDAg
MDkgMDAgRUMgNTQgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5ULi4uLi4uLi4KICAg
MkM1MjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IEI2IDIzIEE0ICAu
Li4uLi4uLi5ALi4uLiMuCiAgIDJDNTMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyQzU0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkM1NTA6IDAwIDAyIDAwIDAwIDA5IDAwIEVEIDU0IDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uVC4uLi4uLi4uCiAgIDJDNTYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCBCMSAyMyBBNCAgLi4uLi4uLi4uQC4uLi4jLgogICAyQzU3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkM1ODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJDNTkwOiAwMCAwMiAwMCAwMCAwOSAwMCBFRSA1NCAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlQuLi4uLi4uLgogICAyQzVBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggQjQgMjMgQTQgIC4uLi4uLi4uLkAuLi4uIy4KICAg
MkM1QjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJDNUMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyQzVEMDogMDAgMDIgMDAgMDAg
MDkgMDAgRUYgNTQgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5ULi4uLi4uLi4KICAg
MkM1RTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IEI1IDIzIEE0ICAu
Li4uLi4uLi5ALi4uLiMuCiAgIDJDNUYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyQzYwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkM2MTA6IDAwIDAyIDAwIDAwIDA5IDAwIEYwIDU0IDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uVC4uLi4uLi4uCiAgIDJDNjIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBCMiAyMyBBNCAgLi4uLi4uLi4uQC4uLi4jLgogICAyQzYzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkM2NDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJDNjUwOiAwMCAwMiAwMCAwMCAwOSAwMCBGMSA1NCAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlQuLi4uLi4uLgogICAyQzY2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggQjQgMjMgQTQgIC4uLi4uLi4uLkAuLi4uIy4KICAg
MkM2NzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJDNjgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyQzY5MDogMDAgMDIgMDAgMDAg
MDkgMDAgRjIgNTQgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5ULi4uLi4uLi4KICAg
MkM2QTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IEIyIDIzIEE0ICAu
Li4uLi4uLi5ALi4uLiMuCiAgIDJDNkIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyQzZDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkM2RDA6IDAwIDAyIDAwIDAwIDA5IDAwIEYzIDU0IDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uVC4uLi4uLi4uCiAgIDJDNkUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBCMyAyMyBBNCAgLi4uLi4uLi4uQC4uLi4jLgogICAyQzZGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkM3MDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJDNzEwOiAwMCAwMiAwMCAwMCAwOSAwMCBGNCA1NCAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlQuLi4uLi4uLgogICAyQzcyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggQjMgMjMgQTQgIC4uLi4uLi4uLkAuLi4uIy4KICAg
MkM3MzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJDNzQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyQzc1MDogMDAgMDIgMDAgMDAg
MDkgMDAgRjUgNTQgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5ULi4uLi4uLi4KICAg
MkM3NjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IEEwIDIzIEE0ICAu
Li4uLi4uLi5ALi4uLiMuCiAgIDJDNzcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyQzc4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkM3OTA6IDAwIDAyIDAwIDAwIDA5IDAwIEY2IDU0IDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uVC4uLi4uLi4uCiAgIDJDN0EwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBBRiAyMyBBNCAgLi4uLi4uLi4uQC4uLi4jLgogICAyQzdCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkM3QzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJDN0QwOiAwMCAwMiAwMCAwMCAwOSAwMCBGNyA1NCAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlQuLi4uLi4uLgogICAyQzdFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggQUYgMjMgQTQgIC4uLi4uLi4uLkAuLi4uIy4KICAg
MkM3RjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJDODAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyQzgxMDogMDAgMDIgMDAgMDAg
MDkgMDAgRjggNTQgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5ULi4uLi4uLi4KICAg
MkM4MjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IEFCIDIzIEE0ICAu
Li4uLi4uLi5ALi4uLiMuCiAgIDJDODMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyQzg0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkM4NTA6IDAwIDAyIDAwIDAwIDA5IDAwIEY5IDU0IDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uVC4uLi4uLi4uCiAgIDJDODYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBBRSAyMyBBNCAgLi4uLi4uLi4uQC4uLi4jLgogICAyQzg3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkM4ODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJDODkwOiAwMCAwMiAwMCAwMCAwOSAwMCBGQSA1NCAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlQuLi4uLi4uLgogICAyQzhBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggQUUgMjMgQTQgIC4uLi4uLi4uLkAuLi4uIy4KICAg
MkM4QjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJDOEMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyQzhEMDogMDAgMDIgMDAgMDAg
MDkgMDAgRkIgNTQgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5ULi4uLi4uLi4KICAg
MkM4RTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IEFCIDIzIEE0ICAu
Li4uLi4uLi5ALi4uLiMuCiAgIDJDOEYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyQzkwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkM5MTA6IDAwIDAyIDAwIDAwIDA5IDAwIEZDIDU0IDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uVC4uLi4uLi4uCiAgIDJDOTIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCBBRCAyMyBBNCAgLi4uLi4uLi4uQC4uLi4jLgogICAyQzkzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkM5NDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJDOTUwOiAwMCAwMiAwMCAwMCAwOSAwMCBGRCA1NCAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlQuLi4uLi4uLgogICAyQzk2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggQUMgMjMgQTQgIC4uLi4uLi4uLkAuLi4uIy4KICAg
MkM5NzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJDOTgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyQzk5MDogMDAgMDIgMDAgMDAg
MDkgMDAgRkUgNTQgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5ULi4uLi4uLi4KICAg
MkM5QTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IEFDIDIzIEE0ICAu
Li4uLi4uLi5ALi4uLiMuCiAgIDJDOUIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyQzlDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkM5RDA6IDAwIDAyIDAwIDAwIDA5IDAwIEZGIDU0IDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uVC4uLi4uLi4uCiAgIDJDOUUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBBRCAyMyBBNCAgLi4uLi4uLi4uQC4uLi4jLgogICAyQzlGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkNBMDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJDQTEwOiAwMCAwMiAwMCAwMCAwOSAwMCAwMCA1NSAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlUuLi4uLi4uLgogICAyQ0EyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggQTAgMjMgQTQgIC4uLi4uLi4uLkAuLi4uIy4KICAg
MkNBMzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJDQTQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyQ0E1MDogMDAgMDIgMDAgMDAg
MDkgMDAgMDEgNTUgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5VLi4uLi4uLi4KICAg
MkNBNjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IEFBIDIzIEE0ICAu
Li4uLi4uLi5ALi4uLiMuCiAgIDJDQTcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyQ0E4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkNBOTA6IDAwIDAyIDAwIDAwIDA5IDAwIDAyIDU1IDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uVS4uLi4uLi4uCiAgIDJDQUEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCBBQSAyMyBBNCAgLi4uLi4uLi4uQC4uLi4jLgogICAyQ0FCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkNBQzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJDQUQwOiAwMCAwMiAwMCAwMCAwOSAwMCAwMyA1NSAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlUuLi4uLi4uLgogICAyQ0FFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggQTcgMjMgQTQgIC4uLi4uLi4uLkAuLi4uIy4KICAg
MkNBRjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJDQjAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyQ0IxMDogMDAgMDIgMDAgMDAg
MDkgMDAgMDQgNTUgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5VLi4uLi4uLi4KICAg
MkNCMjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IEE5IDIzIEE0ICAu
Li4uLi4uLi5ALi4uLiMuCiAgIDJDQjMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyQ0I0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkNCNTA6IDAwIDAyIDAwIDAwIDA5IDAwIDA1IDU1IDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uVS4uLi4uLi4uCiAgIDJDQjYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBBOCAyMyBBNCAgLi4uLi4uLi4uQC4uLi4jLgogICAyQ0I3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkNCODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJDQjkwOiAwMCAwMiAwMCAwMCAwOSAwMCAwNiA1NSAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlUuLi4uLi4uLgogICAyQ0JBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggQTggMjMgQTQgIC4uLi4uLi4uLkAuLi4uIy4KICAg
MkNCQjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJDQkMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyQ0JEMDogMDAgMDIgMDAgMDAg
MDkgMDAgMDcgNTUgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5VLi4uLi4uLi4KICAg
MkNCRTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IEE5IDIzIEE0ICAu
Li4uLi4uLi5ALi4uLiMuCiAgIDJDQkYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyQ0MwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkNDMTA6IDAwIDAyIDAwIDAwIDA5IDAwIDA4IDU1IDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uVS4uLi4uLi4uCiAgIDJDQzIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBBMSAyMyBBNCAgLi4uLi4uLi4uQC4uLi4jLgogICAyQ0MzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkNDNDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJDQzUwOiAwMCAwMiAwMCAwMCAwOSAwMCAwOSA1NSAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlUuLi4uLi4uLgogICAyQ0M2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggQTcgMjMgQTQgIC4uLi4uLi4uLkAuLi4uIy4KICAg
MkNDNzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJDQzgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyQ0M5MDogMDAgMDIgMDAgMDAg
MDkgMDAgMEEgNTUgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5VLi4uLi4uLi4KICAg
MkNDQTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IEE1IDIzIEE0ICAu
Li4uLi4uLi5ALi4uLiMuCiAgIDJDQ0IwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyQ0NDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkNDRDA6IDAwIDAyIDAwIDAwIDA5IDAwIDBCIDU1IDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uVS4uLi4uLi4uCiAgIDJDQ0UwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBBNiAyMyBBNCAgLi4uLi4uLi4uQC4uLi4jLgogICAyQ0NGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkNEMDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJDRDEwOiAwMCAwMiAwMCAwMCAwOSAwMCAwQyA1NSAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlUuLi4uLi4uLgogICAyQ0QyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggQTYgMjMgQTQgIC4uLi4uLi4uLkAuLi4uIy4KICAg
MkNEMzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJDRDQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyQ0Q1MDogMDAgMDIgMDAgMDAg
MDkgMDAgMEQgNTUgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5VLi4uLi4uLi4KICAg
MkNENjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IEExIDIzIEE0ICAu
Li4uLi4uLi5ALi4uLiMuCiAgIDJDRDcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyQ0Q4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkNEOTA6IDAwIDAyIDAwIDAwIDA5IDAwIDBFIDU1IDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uVS4uLi4uLi4uCiAgIDJDREEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCBBNCAyMyBBNCAgLi4uLi4uLi4uQC4uLi4jLgogICAyQ0RCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkNEQzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJDREQwOiAwMCAwMiAwMCAwMCAwOSAwMCAwRiA1NSAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlUuLi4uLi4uLgogICAyQ0RFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggQTUgMjMgQTQgIC4uLi4uLi4uLkAuLi4uIy4KICAg
MkNERjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJDRTAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyQ0UxMDogMDAgMDIgMDAgMDAg
MDkgMDAgMTAgNTUgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5VLi4uLi4uLi4KICAg
MkNFMjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IEEyIDIzIEE0ICAu
Li4uLi4uLi5ALi4uLiMuCiAgIDJDRTMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyQ0U0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkNFNTA6IDAwIDAyIDAwIDAwIDA5IDAwIDExIDU1IDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uVS4uLi4uLi4uCiAgIDJDRTYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCBBNCAyMyBBNCAgLi4uLi4uLi4uQC4uLi4jLgogICAyQ0U3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkNFODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJDRTkwOiAwMCAwMiAwMCAwMCAwOSAwMCAxMiA1NSAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlUuLi4uLi4uLgogICAyQ0VBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggQTIgMjMgQTQgIC4uLi4uLi4uLkAuLi4uIy4KICAg
MkNFQjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJDRUMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyQ0VEMDogMDAgMDIgMDAgMDAg
MDkgMDAgMTMgNTUgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5VLi4uLi4uLi4KICAg
MkNFRTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IEEzIDIzIEE0ICAu
Li4uLi4uLi5ALi4uLiMuCiAgIDJDRUYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyQ0YwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkNGMTA6IDAwIDAyIDAwIDAwIDA5IDAwIDE0IDU1IDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uVS4uLi4uLi4uCiAgIDJDRjIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCBBMyAyMyBBNCAgLi4uLi4uLi4uQC4uLi4jLgogICAyQ0YzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkNGNDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJDRjUwOiAwMCAwMiAwMCAwMCAwOSAwMCAxNSA1NSAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlUuLi4uLi4uLgogICAyQ0Y2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggOTAgMjMgQTQgIC4uLi4uLi4uLkAuLi4uIy4KICAg
MkNGNzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJDRjgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyQ0Y5MDogMDAgMDIgMDAgMDAg
MDkgMDAgMTYgNTUgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5VLi4uLi4uLi4KICAg
MkNGQTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDlGIDIzIEE0ICAu
Li4uLi4uLi5ALi4uLiMuCiAgIDJDRkIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyQ0ZDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkNGRDA6IDAwIDAyIDAwIDAwIDA5IDAwIDE3IDU1IDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uVS4uLi4uLi4uCiAgIDJDRkUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA5RiAyMyBBNCAgLi4uLi4uLi4uQC4uLi4jLgogICAyQ0ZGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkQwMDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJEMDEwOiAwMCAwMiAwMCAwMCAwOSAwMCAxOCA1NSAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlUuLi4uLi4uLgogICAyRDAyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggOUIgMjMgQTQgIC4uLi4uLi4uLkAuLi4uIy4KICAg
MkQwMzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJEMDQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyRDA1MDogMDAgMDIgMDAgMDAg
MDkgMDAgMTkgNTUgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5VLi4uLi4uLi4KICAg
MkQwNjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDlFIDIzIEE0ICAu
Li4uLi4uLi5ALi4uLiMuCiAgIDJEMDcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyRDA4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkQwOTA6IDAwIDAyIDAwIDAwIDA5IDAwIDFBIDU1IDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uVS4uLi4uLi4uCiAgIDJEMEEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA5RSAyMyBBNCAgLi4uLi4uLi4uQC4uLi4jLgogICAyRDBCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkQwQzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJEMEQwOiAwMCAwMiAwMCAwMCAwOSAwMCAxQiA1NSAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlUuLi4uLi4uLgogICAyRDBFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggOUIgMjMgQTQgIC4uLi4uLi4uLkAuLi4uIy4KICAg
MkQwRjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJEMTAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyRDExMDogMDAgMDIgMDAgMDAg
MDkgMDAgMUMgNTUgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5VLi4uLi4uLi4KICAg
MkQxMjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDlEIDIzIEE0ICAu
Li4uLi4uLi5ALi4uLiMuCiAgIDJEMTMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyRDE0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkQxNTA6IDAwIDAyIDAwIDAwIDA5IDAwIDFEIDU1IDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uVS4uLi4uLi4uCiAgIDJEMTYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA5QyAyMyBBNCAgLi4uLi4uLi4uQC4uLi4jLgogICAyRDE3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkQxODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJEMTkwOiAwMCAwMiAwMCAwMCAwOSAwMCAxRSA1NSAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlUuLi4uLi4uLgogICAyRDFBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggOUMgMjMgQTQgIC4uLi4uLi4uLkAuLi4uIy4KICAg
MkQxQjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJEMUMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyRDFEMDogMDAgMDIgMDAgMDAg
MDkgMDAgMUYgNTUgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5VLi4uLi4uLi4KICAg
MkQxRTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDlEIDIzIEE0ICAu
Li4uLi4uLi5ALi4uLiMuCiAgIDJEMUYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyRDIwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkQyMTA6IDAwIDAyIDAwIDAwIDA5IDAwIDIwIDU1IDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4gVS4uLi4uLi4uCiAgIDJEMjIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA5MCAyMyBBNCAgLi4uLi4uLi4uQC4uLi4jLgogICAyRDIzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkQyNDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJEMjUwOiAwMCAwMiAwMCAwMCAwOSAwMCAyMSA1NSAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uIVUuLi4uLi4uLgogICAyRDI2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggOUEgMjMgQTQgIC4uLi4uLi4uLkAuLi4uIy4KICAg
MkQyNzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJEMjgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyRDI5MDogMDAgMDIgMDAgMDAg
MDkgMDAgMjIgNTUgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLiJVLi4uLi4uLi4KICAg
MkQyQTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDlBIDIzIEE0ICAu
Li4uLi4uLi5ALi4uLiMuCiAgIDJEMkIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyRDJDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkQyRDA6IDAwIDAyIDAwIDAwIDA5IDAwIDIzIDU1IDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4jVS4uLi4uLi4uCiAgIDJEMkUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA5NyAyMyBBNCAgLi4uLi4uLi4uQC4uLi4jLgogICAyRDJGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkQzMDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJEMzEwOiAwMCAwMiAwMCAwMCAwOSAwMCAyNCA1NSAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uJFUuLi4uLi4uLgogICAyRDMyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggOTkgMjMgQTQgIC4uLi4uLi4uLkAuLi4uIy4KICAg
MkQzMzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJEMzQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyRDM1MDogMDAgMDIgMDAgMDAg
MDkgMDAgMjUgNTUgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLiVVLi4uLi4uLi4KICAg
MkQzNjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDk4IDIzIEE0ICAu
Li4uLi4uLi5ALi4uLiMuCiAgIDJEMzcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyRDM4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkQzOTA6IDAwIDAyIDAwIDAwIDA5IDAwIDI2IDU1IDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4mVS4uLi4uLi4uCiAgIDJEM0EwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA5OCAyMyBBNCAgLi4uLi4uLi4uQC4uLi4jLgogICAyRDNCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkQzQzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJEM0QwOiAwMCAwMiAwMCAwMCAwOSAwMCAyNyA1NSAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uJ1UuLi4uLi4uLgogICAyRDNFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggOTkgMjMgQTQgIC4uLi4uLi4uLkAuLi4uIy4KICAg
MkQzRjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJENDAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyRDQxMDogMDAgMDIgMDAgMDAg
MDkgMDAgMjggNTUgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLihVLi4uLi4uLi4KICAg
MkQ0MjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDkxIDIzIEE0ICAu
Li4uLi4uLi5ALi4uLiMuCiAgIDJENDMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyRDQ0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkQ0NTA6IDAwIDAyIDAwIDAwIDA5IDAwIDI5IDU1IDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4pVS4uLi4uLi4uCiAgIDJENDYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA5NyAyMyBBNCAgLi4uLi4uLi4uQC4uLi4jLgogICAyRDQ3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkQ0ODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJENDkwOiAwMCAwMiAwMCAwMCAwOSAwMCAyQSA1NSAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uKlUuLi4uLi4uLgogICAyRDRBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggOTUgMjMgQTQgIC4uLi4uLi4uLkAuLi4uIy4KICAg
MkQ0QjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJENEMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyRDREMDogMDAgMDIgMDAgMDAg
MDkgMDAgMkIgNTUgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLitVLi4uLi4uLi4KICAg
MkQ0RTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDk2IDIzIEE0ICAu
Li4uLi4uLi5ALi4uLiMuCiAgIDJENEYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyRDUwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkQ1MTA6IDAwIDAyIDAwIDAwIDA5IDAwIDJDIDU1IDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4sVS4uLi4uLi4uCiAgIDJENTIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA5NiAyMyBBNCAgLi4uLi4uLi4uQC4uLi4jLgogICAyRDUzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkQ1NDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJENTUwOiAwMCAwMiAwMCAwMCAwOSAwMCAyRCA1NSAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLVUuLi4uLi4uLgogICAyRDU2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggOTEgMjMgQTQgIC4uLi4uLi4uLkAuLi4uIy4KICAg
MkQ1NzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJENTgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyRDU5MDogMDAgMDIgMDAgMDAg
MDkgMDAgMkUgNTUgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5VLi4uLi4uLi4KICAg
MkQ1QTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDk0IDIzIEE0ICAu
Li4uLi4uLi5ALi4uLiMuCiAgIDJENUIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyRDVDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkQ1RDA6IDAwIDAyIDAwIDAwIDA5IDAwIDJGIDU1IDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4vVS4uLi4uLi4uCiAgIDJENUUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA5NSAyMyBBNCAgLi4uLi4uLi4uQC4uLi4jLgogICAyRDVGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkQ2MDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJENjEwOiAwMCAwMiAwMCAwMCAwOSAwMCAzMCA1NSAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uMFUuLi4uLi4uLgogICAyRDYyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggOTIgMjMgQTQgIC4uLi4uLi4uLkAuLi4uIy4KICAg
MkQ2MzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJENjQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyRDY1MDogMDAgMDIgMDAgMDAg
MDkgMDAgMzEgNTUgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLjFVLi4uLi4uLi4KICAg
MkQ2NjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDk0IDIzIEE0ICAu
Li4uLi4uLi5ALi4uLiMuCiAgIDJENjcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyRDY4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkQ2OTA6IDAwIDAyIDAwIDAwIDA5IDAwIDMyIDU1IDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4yVS4uLi4uLi4uCiAgIDJENkEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA5MiAyMyBBNCAgLi4uLi4uLi4uQC4uLi4jLgogICAyRDZCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkQ2QzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJENkQwOiAwMCAwMiAwMCAwMCAwOSAwMCAzMyA1NSAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uM1UuLi4uLi4uLgogICAyRDZFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggOTMgMjMgQTQgIC4uLi4uLi4uLkAuLi4uIy4KICAg
MkQ2RjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJENzAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyRDcxMDogMDAgMDIgMDAgMDAg
MDkgMDAgMzQgNTUgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLjRVLi4uLi4uLi4KICAg
MkQ3MjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDkzIDIzIEE0ICAu
Li4uLi4uLi5ALi4uLiMuCiAgIDJENzMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyRDc0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkQ3NTA6IDAwIDAyIDAwIDAwIDA5IDAwIDM1IDU1IDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi41VS4uLi4uLi4uCiAgIDJENzYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA4MCAyMyBBNCAgLi4uLi4uLi4uQC4uLi4jLgogICAyRDc3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkQ3ODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJENzkwOiAwMCAwMiAwMCAwMCAwOSAwMCAzNiA1NSAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uNlUuLi4uLi4uLgogICAyRDdBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggOEYgMjMgQTQgIC4uLi4uLi4uLkAuLi4uIy4KICAg
MkQ3QjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJEN0MwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyRDdEMDogMDAgMDIgMDAgMDAg
MDkgMDAgMzcgNTUgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLjdVLi4uLi4uLi4KICAg
MkQ3RTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDhGIDIzIEE0ICAu
Li4uLi4uLi5ALi4uLiMuCiAgIDJEN0YwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyRDgwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkQ4MTA6IDAwIDAyIDAwIDAwIDA5IDAwIDM4IDU1IDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi44VS4uLi4uLi4uCiAgIDJEODIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA4QiAyMyBBNCAgLi4uLi4uLi4uQC4uLi4jLgogICAyRDgzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkQ4NDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJEODUwOiAwMCAwMiAwMCAwMCAwOSAwMCAzOSA1NSAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uOVUuLi4uLi4uLgogICAyRDg2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggOEUgMjMgQTQgIC4uLi4uLi4uLkAuLi4uIy4KICAg
MkQ4NzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJEODgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyRDg5MDogMDAgMDIgMDAgMDAg
MDkgMDAgM0EgNTUgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLjpVLi4uLi4uLi4KICAg
MkQ4QTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDhFIDIzIEE0ICAu
Li4uLi4uLi5ALi4uLiMuCiAgIDJEOEIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyRDhDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkQ4RDA6IDAwIDAyIDAwIDAwIDA5IDAwIDNCIDU1IDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi47VS4uLi4uLi4uCiAgIDJEOEUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA4QiAyMyBBNCAgLi4uLi4uLi4uQC4uLi4jLgogICAyRDhGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkQ5MDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJEOTEwOiAwMCAwMiAwMCAwMCAwOSAwMCAzQyA1NSAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uPFUuLi4uLi4uLgogICAyRDkyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggOEQgMjMgQTQgIC4uLi4uLi4uLkAuLi4uIy4KICAg
MkQ5MzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJEOTQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyRDk1MDogMDAgMDIgMDAgMDAg
MDkgMDAgM0QgNTUgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLj1VLi4uLi4uLi4KICAg
MkQ5NjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDhDIDIzIEE0ICAu
Li4uLi4uLi5ALi4uLiMuCiAgIDJEOTcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyRDk4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkQ5OTA6IDAwIDAyIDAwIDAwIDA5IDAwIDNFIDU1IDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4+VS4uLi4uLi4uCiAgIDJEOUEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA4QyAyMyBBNCAgLi4uLi4uLi4uQC4uLi4jLgogICAyRDlCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkQ5QzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJEOUQwOiAwMCAwMiAwMCAwMCAwOSAwMCAzRiA1NSAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uP1UuLi4uLi4uLgogICAyRDlFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggOEQgMjMgQTQgIC4uLi4uLi4uLkAuLi4uIy4KICAg
MkQ5RjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJEQTAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyREExMDogMDAgMDIgMDAgMDAg
MDkgMDAgNDAgNTUgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLkBVLi4uLi4uLi4KICAg
MkRBMjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDgwIDIzIEE0ICAu
Li4uLi4uLi5ALi4uLiMuCiAgIDJEQTMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyREE0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkRBNTA6IDAwIDAyIDAwIDAwIDA5IDAwIDQxIDU1IDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5BVS4uLi4uLi4uCiAgIDJEQTYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA4QSAyMyBBNCAgLi4uLi4uLi4uQC4uLi4jLgogICAyREE3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkRBODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJEQTkwOiAwMCAwMiAwMCAwMCAwOSAwMCA0MiA1NSAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uQlUuLi4uLi4uLgogICAyREFBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggOEEgMjMgQTQgIC4uLi4uLi4uLkAuLi4uIy4KICAg
MkRBQjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJEQUMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyREFEMDogMDAgMDIgMDAgMDAg
MDkgMDAgNDMgNTUgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLkNVLi4uLi4uLi4KICAg
MkRBRTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDg3IDIzIEE0ICAu
Li4uLi4uLi5ALi4uLiMuCiAgIDJEQUYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyREIwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkRCMTA6IDAwIDAyIDAwIDAwIDA5IDAwIDQ0IDU1IDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5EVS4uLi4uLi4uCiAgIDJEQjIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA4OSAyMyBBNCAgLi4uLi4uLi4uQC4uLi4jLgogICAyREIzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkRCNDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJEQjUwOiAwMCAwMiAwMCAwMCAwOSAwMCA0NSA1NSAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uRVUuLi4uLi4uLgogICAyREI2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggODggMjMgQTQgIC4uLi4uLi4uLkAuLi4uIy4KICAg
MkRCNzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJEQjgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyREI5MDogMDAgMDIgMDAgMDAg
MDkgMDAgNDYgNTUgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLkZVLi4uLi4uLi4KICAg
MkRCQTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDg4IDIzIEE0ICAu
Li4uLi4uLi5ALi4uLiMuCiAgIDJEQkIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyREJDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkRCRDA6IDAwIDAyIDAwIDAwIDA5IDAwIDQ3IDU1IDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5HVS4uLi4uLi4uCiAgIDJEQkUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA4OSAyMyBBNCAgLi4uLi4uLi4uQC4uLi4jLgogICAyREJGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkRDMDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJEQzEwOiAwMCAwMiAwMCAwMCAwOSAwMCA0OCA1NSAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uSFUuLi4uLi4uLgogICAyREMyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggODEgMjMgQTQgIC4uLi4uLi4uLkAuLi4uIy4KICAg
MkRDMzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJEQzQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyREM1MDogMDAgMDIgMDAgMDAg
MDkgMDAgNDkgNTUgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLklVLi4uLi4uLi4KICAg
MkRDNjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDg3IDIzIEE0ICAu
Li4uLi4uLi5ALi4uLiMuCiAgIDJEQzcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyREM4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkRDOTA6IDAwIDAyIDAwIDAwIDA5IDAwIDRBIDU1IDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5KVS4uLi4uLi4uCiAgIDJEQ0EwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA4NSAyMyBBNCAgLi4uLi4uLi4uQC4uLi4jLgogICAyRENCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkRDQzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJEQ0QwOiAwMCAwMiAwMCAwMCAwOSAwMCA0QiA1NSAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uS1UuLi4uLi4uLgogICAyRENFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggODYgMjMgQTQgIC4uLi4uLi4uLkAuLi4uIy4KICAg
MkRDRjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJERDAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyREQxMDogMDAgMDIgMDAgMDAg
MDkgMDAgNEMgNTUgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLkxVLi4uLi4uLi4KICAg
MkREMjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDg2IDIzIEE0ICAu
Li4uLi4uLi5ALi4uLiMuCiAgIDJERDMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyREQ0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkRENTA6IDAwIDAyIDAwIDAwIDA5IDAwIDREIDU1IDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5NVS4uLi4uLi4uCiAgIDJERDYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA4MSAyMyBBNCAgLi4uLi4uLi4uQC4uLi4jLgogICAyREQ3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkREODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJERDkwOiAwMCAwMiAwMCAwMCAwOSAwMCA0RSA1NSAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uTlUuLi4uLi4uLgogICAyRERBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggODQgMjMgQTQgIC4uLi4uLi4uLkAuLi4uIy4KICAg
MkREQjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJEREMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyREREMDogMDAgMDIgMDAgMDAg
MDkgMDAgNEYgNTUgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLk9VLi4uLi4uLi4KICAg
MkRERTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDg1IDIzIEE0ICAu
Li4uLi4uLi5ALi4uLiMuCiAgIDJEREYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyREUwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkRFMTA6IDAwIDAyIDAwIDAwIDA5IDAwIDUwIDU1IDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5QVS4uLi4uLi4uCiAgIDJERTIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA4MiAyMyBBNCAgLi4uLi4uLi4uQC4uLi4jLgogICAyREUzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkRFNDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJERTUwOiAwMCAwMiAwMCAwMCAwOSAwMCA1MSA1NSAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uUVUuLi4uLi4uLgogICAyREU2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggODQgMjMgQTQgIC4uLi4uLi4uLkAuLi4uIy4KICAg
MkRFNzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJERTgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyREU5MDogMDAgMDIgMDAgMDAg
MDkgMDAgNTIgNTUgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLlJVLi4uLi4uLi4KICAg
MkRFQTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDgyIDIzIEE0ICAu
Li4uLi4uLi5ALi4uLiMuCiAgIDJERUIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyREVDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkRFRDA6IDAwIDAyIDAwIDAwIDA5IDAwIDUzIDU1IDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5TVS4uLi4uLi4uCiAgIDJERUUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA4MyAyMyBBNCAgLi4uLi4uLi4uQC4uLi4jLgogICAyREVGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkRGMDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJERjEwOiAwMCAwMiAwMCAwMCAwOSAwMCA1NCA1NSAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uVFUuLi4uLi4uLgogICAyREYyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggODMgMjMgQTQgIC4uLi4uLi4uLkAuLi4uIy4KICAg
MkRGMzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJERjQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyREY1MDogMDAgMDIgMDAgMDAg
MDkgMDAgNTUgNTUgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLlVVLi4uLi4uLi4KICAg
MkRGNjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDcwIDIzIEE0ICAu
Li4uLi4uLi5ALi4ucCMuCiAgIDJERjcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyREY4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkRGOTA6IDAwIDAyIDAwIDAwIDA5IDAwIDU2IDU1IDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5WVS4uLi4uLi4uCiAgIDJERkEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA3RiAyMyBBNCAgLi4uLi4uLi4uQC4uLi4jLgogICAyREZCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkRGQzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJERkQwOiAwMCAwMiAwMCAwMCAwOSAwMCA1NyA1NSAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uV1UuLi4uLi4uLgogICAyREZFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggN0YgMjMgQTQgIC4uLi4uLi4uLkAuLi4uIy4KICAg
MkRGRjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJFMDAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyRTAxMDogMDAgMDIgMDAgMDAg
MDkgMDAgNTggNTUgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLlhVLi4uLi4uLi4KICAg
MkUwMjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDdCIDIzIEE0ICAu
Li4uLi4uLi5ALi4ueyMuCiAgIDJFMDMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyRTA0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkUwNTA6IDAwIDAyIDAwIDAwIDA5IDAwIDU5IDU1IDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5ZVS4uLi4uLi4uCiAgIDJFMDYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA3RSAyMyBBNCAgLi4uLi4uLi4uQC4uLn4jLgogICAyRTA3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkUwODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJFMDkwOiAwMCAwMiAwMCAwMCAwOSAwMCA1QSA1NSAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uWlUuLi4uLi4uLgogICAyRTBBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggN0UgMjMgQTQgIC4uLi4uLi4uLkAuLi5+Iy4KICAg
MkUwQjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJFMEMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyRTBEMDogMDAgMDIgMDAgMDAg
MDkgMDAgNUIgNTUgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLltVLi4uLi4uLi4KICAg
MkUwRTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDdCIDIzIEE0ICAu
Li4uLi4uLi5ALi4ueyMuCiAgIDJFMEYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyRTEwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkUxMTA6IDAwIDAyIDAwIDAwIDA5IDAwIDVDIDU1IDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5cVS4uLi4uLi4uCiAgIDJFMTIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA3RCAyMyBBNCAgLi4uLi4uLi4uQC4uLn0jLgogICAyRTEzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkUxNDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJFMTUwOiAwMCAwMiAwMCAwMCAwOSAwMCA1RCA1NSAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uXVUuLi4uLi4uLgogICAyRTE2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggN0MgMjMgQTQgIC4uLi4uLi4uLkAuLi58Iy4KICAg
MkUxNzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJFMTgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyRTE5MDogMDAgMDIgMDAgMDAg
MDkgMDAgNUUgNTUgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLl5VLi4uLi4uLi4KICAg
MkUxQTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDdDIDIzIEE0ICAu
Li4uLi4uLi5ALi4ufCMuCiAgIDJFMUIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyRTFDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkUxRDA6IDAwIDAyIDAwIDAwIDA5IDAwIDVGIDU1IDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5fVS4uLi4uLi4uCiAgIDJFMUUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA3RCAyMyBBNCAgLi4uLi4uLi4uQC4uLn0jLgogICAyRTFGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkUyMDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJFMjEwOiAwMCAwMiAwMCAwMCAwOSAwMCA2MCA1NSAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uYFUuLi4uLi4uLgogICAyRTIyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggNzAgMjMgQTQgIC4uLi4uLi4uLkAuLi5wIy4KICAg
MkUyMzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJFMjQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyRTI1MDogMDAgMDIgMDAgMDAg
MDkgMDAgNjEgNTUgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLmFVLi4uLi4uLi4KICAg
MkUyNjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDdBIDIzIEE0ICAu
Li4uLi4uLi5ALi4ueiMuCiAgIDJFMjcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyRTI4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkUyOTA6IDAwIDAyIDAwIDAwIDA5IDAwIDYyIDU1IDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5iVS4uLi4uLi4uCiAgIDJFMkEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA3QSAyMyBBNCAgLi4uLi4uLi4uQC4uLnojLgogICAyRTJCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkUyQzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJFMkQwOiAwMCAwMiAwMCAwMCAwOSAwMCA2MyA1NSAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uY1UuLi4uLi4uLgogICAyRTJFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggNzcgMjMgQTQgIC4uLi4uLi4uLkAuLi53Iy4KICAg
MkUyRjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJFMzAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyRTMxMDogMDAgMDIgMDAgMDAg
MDkgMDAgNjQgNTUgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLmRVLi4uLi4uLi4KICAg
MkUzMjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDc5IDIzIEE0ICAu
Li4uLi4uLi5ALi4ueSMuCiAgIDJFMzMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyRTM0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkUzNTA6IDAwIDAyIDAwIDAwIDA5IDAwIDY1IDU1IDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5lVS4uLi4uLi4uCiAgIDJFMzYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA3OCAyMyBBNCAgLi4uLi4uLi4uQC4uLngjLgogICAyRTM3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkUzODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJFMzkwOiAwMCAwMiAwMCAwMCAwOSAwMCA2NiA1NSAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uZlUuLi4uLi4uLgogICAyRTNBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggNzggMjMgQTQgIC4uLi4uLi4uLkAuLi54Iy4KICAg
MkUzQjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJFM0MwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyRTNEMDogMDAgMDIgMDAgMDAg
MDkgMDAgNjcgNTUgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLmdVLi4uLi4uLi4KICAg
MkUzRTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDc5IDIzIEE0ICAu
Li4uLi4uLi5ALi4ueSMuCiAgIDJFM0YwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyRTQwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkU0MTA6IDAwIDAyIDAwIDAwIDA5IDAwIDY4IDU1IDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5oVS4uLi4uLi4uCiAgIDJFNDIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA3MSAyMyBBNCAgLi4uLi4uLi4uQC4uLnEjLgogICAyRTQzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkU0NDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJFNDUwOiAwMCAwMiAwMCAwMCAwOSAwMCA2OSA1NSAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uaVUuLi4uLi4uLgogICAyRTQ2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggNzcgMjMgQTQgIC4uLi4uLi4uLkAuLi53Iy4KICAg
MkU0NzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJFNDgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyRTQ5MDogMDAgMDIgMDAgMDAg
MDkgMDAgNkEgNTUgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLmpVLi4uLi4uLi4KICAg
MkU0QTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDc1IDIzIEE0ICAu
Li4uLi4uLi5ALi4udSMuCiAgIDJFNEIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyRTRDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkU0RDA6IDAwIDAyIDAwIDAwIDA5IDAwIDZCIDU1IDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5rVS4uLi4uLi4uCiAgIDJFNEUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA3NiAyMyBBNCAgLi4uLi4uLi4uQC4uLnYjLgogICAyRTRGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkU1MDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJFNTEwOiAwMCAwMiAwMCAwMCAwOSAwMCA2QyA1NSAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4ubFUuLi4uLi4uLgogICAyRTUyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggNzYgMjMgQTQgIC4uLi4uLi4uLkAuLi52Iy4KICAg
MkU1MzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJFNTQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyRTU1MDogMDAgMDIgMDAgMDAg
MDkgMDAgNkQgNTUgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLm1VLi4uLi4uLi4KICAg
MkU1NjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDcxIDIzIEE0ICAu
Li4uLi4uLi5ALi4ucSMuCiAgIDJFNTcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyRTU4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkU1OTA6IDAwIDAyIDAwIDAwIDA5IDAwIDZFIDU1IDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5uVS4uLi4uLi4uCiAgIDJFNUEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA3NCAyMyBBNCAgLi4uLi4uLi4uQC4uLnQjLgogICAyRTVCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkU1QzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJFNUQwOiAwMCAwMiAwMCAwMCAwOSAwMCA2RiA1NSAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4ub1UuLi4uLi4uLgogICAyRTVFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggNzUgMjMgQTQgIC4uLi4uLi4uLkAuLi51Iy4KICAg
MkU1RjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJFNjAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyRTYxMDogMDAgMDIgMDAgMDAg
MDkgMDAgNzAgNTUgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLnBVLi4uLi4uLi4KICAg
MkU2MjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDcyIDIzIEE0ICAu
Li4uLi4uLi5ALi4uciMuCiAgIDJFNjMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyRTY0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkU2NTA6IDAwIDAyIDAwIDAwIDA5IDAwIDcxIDU1IDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi5xVS4uLi4uLi4uCiAgIDJFNjYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA3NCAyMyBBNCAgLi4uLi4uLi4uQC4uLnQjLgogICAyRTY3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkU2ODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJFNjkwOiAwMCAwMiAwMCAwMCAwOSAwMCA3MiA1NSAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uclUuLi4uLi4uLgogICAyRTZBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggNzIgMjMgQTQgIC4uLi4uLi4uLkAuLi5yIy4KICAg
MkU2QjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJFNkMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyRTZEMDogMDAgMDIgMDAgMDAg
MDkgMDAgNzMgNTUgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLnNVLi4uLi4uLi4KICAg
MkU2RTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDczIDIzIEE0ICAu
Li4uLi4uLi5ALi4ucyMuCiAgIDJFNkYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyRTcwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkU3MTA6IDAwIDAyIDAwIDAwIDA5IDAwIDc0IDU1IDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi50VS4uLi4uLi4uCiAgIDJFNzIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA3MyAyMyBBNCAgLi4uLi4uLi4uQC4uLnMjLgogICAyRTczMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkU3NDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJFNzUwOiAwMCAwMiAwMCAwMCAwOSAwMCA3NSA1NSAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4udVUuLi4uLi4uLgogICAyRTc2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggNjAgMjMgQTQgIC4uLi4uLi4uLkAuLi5gIy4KICAg
MkU3NzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJFNzgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyRTc5MDogMDAgMDIgMDAgMDAg
MDkgMDAgNzYgNTUgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLnZVLi4uLi4uLi4KICAg
MkU3QTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDZGIDIzIEE0ICAu
Li4uLi4uLi5ALi4ubyMuCiAgIDJFN0IwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyRTdDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkU3RDA6IDAwIDAyIDAwIDAwIDA5IDAwIDc3IDU1IDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi53VS4uLi4uLi4uCiAgIDJFN0UwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA2RiAyMyBBNCAgLi4uLi4uLi4uQC4uLm8jLgogICAyRTdGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkU4MDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJFODEwOiAwMCAwMiAwMCAwMCAwOSAwMCA3OCA1NSAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4ueFUuLi4uLi4uLgogICAyRTgyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggNkIgMjMgQTQgIC4uLi4uLi4uLkAuLi5rIy4KICAg
MkU4MzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJFODQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyRTg1MDogMDAgMDIgMDAgMDAg
MDkgMDAgNzkgNTUgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLnlVLi4uLi4uLi4KICAg
MkU4NjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDZFIDIzIEE0ICAu
Li4uLi4uLi5ALi4ubiMuCiAgIDJFODcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyRTg4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkU4OTA6IDAwIDAyIDAwIDAwIDA5IDAwIDdBIDU1IDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi56VS4uLi4uLi4uCiAgIDJFOEEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA2RSAyMyBBNCAgLi4uLi4uLi4uQC4uLm4jLgogICAyRThCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkU4QzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJFOEQwOiAwMCAwMiAwMCAwMCAwOSAwMCA3QiA1NSAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4ue1UuLi4uLi4uLgogICAyRThFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggNkIgMjMgQTQgIC4uLi4uLi4uLkAuLi5rIy4KICAg
MkU4RjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJFOTAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyRTkxMDogMDAgMDIgMDAgMDAg
MDkgMDAgN0MgNTUgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLnxVLi4uLi4uLi4KICAg
MkU5MjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDZEIDIzIEE0ICAu
Li4uLi4uLi5ALi4ubSMuCiAgIDJFOTMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyRTk0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkU5NTA6IDAwIDAyIDAwIDAwIDA5IDAwIDdEIDU1IDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi59VS4uLi4uLi4uCiAgIDJFOTYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA2QyAyMyBBNCAgLi4uLi4uLi4uQC4uLmwjLgogICAyRTk3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkU5ODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJFOTkwOiAwMCAwMiAwMCAwMCAwOSAwMCA3RSA1NSAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uflUuLi4uLi4uLgogICAyRTlBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggNkMgMjMgQTQgIC4uLi4uLi4uLkAuLi5sIy4KICAg
MkU5QjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJFOUMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyRTlEMDogMDAgMDIgMDAgMDAg
MDkgMDAgN0YgNTUgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5VLi4uLi4uLi4KICAg
MkU5RTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDZEIDIzIEE0ICAu
Li4uLi4uLi5ALi4ubSMuCiAgIDJFOUYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyRUEwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkVBMTA6IDAwIDAyIDAwIDAwIDA5IDAwIDgwIDU1IDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uVS4uLi4uLi4uCiAgIDJFQTIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA2MCAyMyBBNCAgLi4uLi4uLi4uQC4uLmAjLgogICAyRUEzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkVBNDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJFQTUwOiAwMCAwMiAwMCAwMCAwOSAwMCA4MSA1NSAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlUuLi4uLi4uLgogICAyRUE2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggNkEgMjMgQTQgIC4uLi4uLi4uLkAuLi5qIy4KICAg
MkVBNzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJFQTgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyRUE5MDogMDAgMDIgMDAgMDAg
MDkgMDAgODIgNTUgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5VLi4uLi4uLi4KICAg
MkVBQTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDZBIDIzIEE0ICAu
Li4uLi4uLi5ALi4uaiMuCiAgIDJFQUIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyRUFDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkVBRDA6IDAwIDAyIDAwIDAwIDA5IDAwIDgzIDU1IDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uVS4uLi4uLi4uCiAgIDJFQUUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA2NyAyMyBBNCAgLi4uLi4uLi4uQC4uLmcjLgogICAyRUFGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkVCMDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJFQjEwOiAwMCAwMiAwMCAwMCAwOSAwMCA4NCA1NSAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlUuLi4uLi4uLgogICAyRUIyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggNjkgMjMgQTQgIC4uLi4uLi4uLkAuLi5pIy4KICAg
MkVCMzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJFQjQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyRUI1MDogMDAgMDIgMDAgMDAg
MDkgMDAgODUgNTUgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5VLi4uLi4uLi4KICAg
MkVCNjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDY4IDIzIEE0ICAu
Li4uLi4uLi5ALi4uaCMuCiAgIDJFQjcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyRUI4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkVCOTA6IDAwIDAyIDAwIDAwIDA5IDAwIDg2IDU1IDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uVS4uLi4uLi4uCiAgIDJFQkEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA2OCAyMyBBNCAgLi4uLi4uLi4uQC4uLmgjLgogICAyRUJCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkVCQzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJFQkQwOiAwMCAwMiAwMCAwMCAwOSAwMCA4NyA1NSAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlUuLi4uLi4uLgogICAyRUJFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggNjkgMjMgQTQgIC4uLi4uLi4uLkAuLi5pIy4KICAg
MkVCRjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJFQzAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyRUMxMDogMDAgMDIgMDAgMDAg
MDkgMDAgODggNTUgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5VLi4uLi4uLi4KICAg
MkVDMjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDYxIDIzIEE0ICAu
Li4uLi4uLi5ALi4uYSMuCiAgIDJFQzMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyRUM0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkVDNTA6IDAwIDAyIDAwIDAwIDA5IDAwIDg5IDU1IDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uVS4uLi4uLi4uCiAgIDJFQzYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA2NyAyMyBBNCAgLi4uLi4uLi4uQC4uLmcjLgogICAyRUM3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkVDODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJFQzkwOiAwMCAwMiAwMCAwMCAwOSAwMCA4QSA1NSAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlUuLi4uLi4uLgogICAyRUNBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggNjUgMjMgQTQgIC4uLi4uLi4uLkAuLi5lIy4KICAg
MkVDQjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJFQ0MwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyRUNEMDogMDAgMDIgMDAgMDAg
MDkgMDAgOEIgNTUgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5VLi4uLi4uLi4KICAg
MkVDRTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDY2IDIzIEE0ICAu
Li4uLi4uLi5ALi4uZiMuCiAgIDJFQ0YwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyRUQwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkVEMTA6IDAwIDAyIDAwIDAwIDA5IDAwIDhDIDU1IDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uVS4uLi4uLi4uCiAgIDJFRDIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA2NiAyMyBBNCAgLi4uLi4uLi4uQC4uLmYjLgogICAyRUQzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkVENDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJFRDUwOiAwMCAwMiAwMCAwMCAwOSAwMCA4RCA1NSAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlUuLi4uLi4uLgogICAyRUQ2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggNjEgMjMgQTQgIC4uLi4uLi4uLkAuLi5hIy4KICAg
MkVENzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJFRDgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyRUQ5MDogMDAgMDIgMDAgMDAg
MDkgMDAgOEUgNTUgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5VLi4uLi4uLi4KICAg
MkVEQTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDY0IDIzIEE0ICAu
Li4uLi4uLi5ALi4uZCMuCiAgIDJFREIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyRURDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkVERDA6IDAwIDAyIDAwIDAwIDA5IDAwIDhGIDU1IDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uVS4uLi4uLi4uCiAgIDJFREUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA2NSAyMyBBNCAgLi4uLi4uLi4uQC4uLmUjLgogICAyRURGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkVFMDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJFRTEwOiAwMCAwMiAwMCAwMCAwOSAwMCA5MCA1NSAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlUuLi4uLi4uLgogICAyRUUyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggNjIgMjMgQTQgIC4uLi4uLi4uLkAuLi5iIy4KICAg
MkVFMzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJFRTQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyRUU1MDogMDAgMDIgMDAgMDAg
MDkgMDAgOTEgNTUgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5VLi4uLi4uLi4KICAg
MkVFNjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDY0IDIzIEE0ICAu
Li4uLi4uLi5ALi4uZCMuCiAgIDJFRTcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyRUU4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkVFOTA6IDAwIDAyIDAwIDAwIDA5IDAwIDkyIDU1IDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uVS4uLi4uLi4uCiAgIDJFRUEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA2MiAyMyBBNCAgLi4uLi4uLi4uQC4uLmIjLgogICAyRUVCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkVFQzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJFRUQwOiAwMCAwMiAwMCAwMCAwOSAwMCA5MyA1NSAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlUuLi4uLi4uLgogICAyRUVFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggNjMgMjMgQTQgIC4uLi4uLi4uLkAuLi5jIy4KICAg
MkVFRjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJFRjAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyRUYxMDogMDAgMDIgMDAgMDAg
MDkgMDAgOTQgNTUgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5VLi4uLi4uLi4KICAg
MkVGMjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDYzIDIzIEE0ICAu
Li4uLi4uLi5ALi4uYyMuCiAgIDJFRjMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyRUY0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkVGNTA6IDAwIDAyIDAwIDAwIDA5IDAwIDk1IDU1IDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uVS4uLi4uLi4uCiAgIDJFRjYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA1MCAyMyBBNCAgLi4uLi4uLi4uQC4uLlAjLgogICAyRUY3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkVGODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJFRjkwOiAwMCAwMiAwMCAwMCAwOSAwMCA5NiA1NSAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlUuLi4uLi4uLgogICAyRUZBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggNUYgMjMgQTQgIC4uLi4uLi4uLkAuLi5fIy4KICAg
MkVGQjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJFRkMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyRUZEMDogMDAgMDIgMDAgMDAg
MDkgMDAgOTcgNTUgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5VLi4uLi4uLi4KICAg
MkVGRTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDVGIDIzIEE0ICAu
Li4uLi4uLi5ALi4uXyMuCiAgIDJFRkYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyRjAwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkYwMTA6IDAwIDAyIDAwIDAwIDA5IDAwIDk4IDU1IDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uVS4uLi4uLi4uCiAgIDJGMDIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA1QiAyMyBBNCAgLi4uLi4uLi4uQC4uLlsjLgogICAyRjAzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkYwNDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJGMDUwOiAwMCAwMiAwMCAwMCAwOSAwMCA5OSA1NSAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlUuLi4uLi4uLgogICAyRjA2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggNUUgMjMgQTQgIC4uLi4uLi4uLkAuLi5eIy4KICAg
MkYwNzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJGMDgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyRjA5MDogMDAgMDIgMDAgMDAg
MDkgMDAgOUEgNTUgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5VLi4uLi4uLi4KICAg
MkYwQTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDVFIDIzIEE0ICAu
Li4uLi4uLi5ALi4uXiMuCiAgIDJGMEIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyRjBDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkYwRDA6IDAwIDAyIDAwIDAwIDA5IDAwIDlCIDU1IDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uVS4uLi4uLi4uCiAgIDJGMEUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA1QiAyMyBBNCAgLi4uLi4uLi4uQC4uLlsjLgogICAyRjBGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkYxMDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJGMTEwOiAwMCAwMiAwMCAwMCAwOSAwMCA5QyA1NSAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlUuLi4uLi4uLgogICAyRjEyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggNUQgMjMgQTQgIC4uLi4uLi4uLkAuLi5dIy4KICAg
MkYxMzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJGMTQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyRjE1MDogMDAgMDIgMDAgMDAg
MDkgMDAgOUQgNTUgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5VLi4uLi4uLi4KICAg
MkYxNjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDVDIDIzIEE0ICAu
Li4uLi4uLi5ALi4uXCMuCiAgIDJGMTcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyRjE4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkYxOTA6IDAwIDAyIDAwIDAwIDA5IDAwIDlFIDU1IDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uVS4uLi4uLi4uCiAgIDJGMUEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA1QyAyMyBBNCAgLi4uLi4uLi4uQC4uLlwjLgogICAyRjFCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkYxQzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJGMUQwOiAwMCAwMiAwMCAwMCAwOSAwMCA5RiA1NSAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlUuLi4uLi4uLgogICAyRjFFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggNUQgMjMgQTQgIC4uLi4uLi4uLkAuLi5dIy4KICAg
MkYxRjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJGMjAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyRjIxMDogMDAgMDIgMDAgMDAg
MDkgMDAgQTAgNTUgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5VLi4uLi4uLi4KICAg
MkYyMjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDUwIDIzIEE0ICAu
Li4uLi4uLi5ALi4uUCMuCiAgIDJGMjMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyRjI0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkYyNTA6IDAwIDAyIDAwIDAwIDA5IDAwIEExIDU1IDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uVS4uLi4uLi4uCiAgIDJGMjYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA1QSAyMyBBNCAgLi4uLi4uLi4uQC4uLlojLgogICAyRjI3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkYyODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJGMjkwOiAwMCAwMiAwMCAwMCAwOSAwMCBBMiA1NSAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlUuLi4uLi4uLgogICAyRjJBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggNUEgMjMgQTQgIC4uLi4uLi4uLkAuLi5aIy4KICAg
MkYyQjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJGMkMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyRjJEMDogMDAgMDIgMDAgMDAg
MDkgMDAgQTMgNTUgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5VLi4uLi4uLi4KICAg
MkYyRTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDU3IDIzIEE0ICAu
Li4uLi4uLi5ALi4uVyMuCiAgIDJGMkYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyRjMwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkYzMTA6IDAwIDAyIDAwIDAwIDA5IDAwIEE0IDU1IDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uVS4uLi4uLi4uCiAgIDJGMzIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA1OSAyMyBBNCAgLi4uLi4uLi4uQC4uLlkjLgogICAyRjMzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkYzNDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJGMzUwOiAwMCAwMiAwMCAwMCAwOSAwMCBBNSA1NSAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlUuLi4uLi4uLgogICAyRjM2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggNTggMjMgQTQgIC4uLi4uLi4uLkAuLi5YIy4KICAg
MkYzNzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJGMzgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyRjM5MDogMDAgMDIgMDAgMDAg
MDkgMDAgQTYgNTUgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5VLi4uLi4uLi4KICAg
MkYzQTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDU4IDIzIEE0ICAu
Li4uLi4uLi5ALi4uWCMuCiAgIDJGM0IwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyRjNDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkYzRDA6IDAwIDAyIDAwIDAwIDA5IDAwIEE3IDU1IDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uVS4uLi4uLi4uCiAgIDJGM0UwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA1OSAyMyBBNCAgLi4uLi4uLi4uQC4uLlkjLgogICAyRjNGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkY0MDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJGNDEwOiAwMCAwMiAwMCAwMCAwOSAwMCBBOCA1NSAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlUuLi4uLi4uLgogICAyRjQyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggNTEgMjMgQTQgIC4uLi4uLi4uLkAuLi5RIy4KICAg
MkY0MzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJGNDQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyRjQ1MDogMDAgMDIgMDAgMDAg
MDkgMDAgQTkgNTUgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5VLi4uLi4uLi4KICAg
MkY0NjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDU3IDIzIEE0ICAu
Li4uLi4uLi5ALi4uVyMuCiAgIDJGNDcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyRjQ4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkY0OTA6IDAwIDAyIDAwIDAwIDA5IDAwIEFBIDU1IDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uVS4uLi4uLi4uCiAgIDJGNEEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA1NSAyMyBBNCAgLi4uLi4uLi4uQC4uLlUjLgogICAyRjRCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkY0QzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJGNEQwOiAwMCAwMiAwMCAwMCAwOSAwMCBBQiA1NSAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlUuLi4uLi4uLgogICAyRjRFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggNTYgMjMgQTQgIC4uLi4uLi4uLkAuLi5WIy4KICAg
MkY0RjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJGNTAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyRjUxMDogMDAgMDIgMDAgMDAg
MDkgMDAgQUMgNTUgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5VLi4uLi4uLi4KICAg
MkY1MjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDU2IDIzIEE0ICAu
Li4uLi4uLi5ALi4uViMuCiAgIDJGNTMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyRjU0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkY1NTA6IDAwIDAyIDAwIDAwIDA5IDAwIEFEIDU1IDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uVS4uLi4uLi4uCiAgIDJGNTYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA1MSAyMyBBNCAgLi4uLi4uLi4uQC4uLlEjLgogICAyRjU3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkY1ODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJGNTkwOiAwMCAwMiAwMCAwMCAwOSAwMCBBRSA1NSAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlUuLi4uLi4uLgogICAyRjVBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggNTQgMjMgQTQgIC4uLi4uLi4uLkAuLi5UIy4KICAg
MkY1QjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJGNUMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyRjVEMDogMDAgMDIgMDAgMDAg
MDkgMDAgQUYgNTUgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5VLi4uLi4uLi4KICAg
MkY1RTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDU1IDIzIEE0ICAu
Li4uLi4uLi5ALi4uVSMuCiAgIDJGNUYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyRjYwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkY2MTA6IDAwIDAyIDAwIDAwIDA5IDAwIEIwIDU1IDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uVS4uLi4uLi4uCiAgIDJGNjIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA1MiAyMyBBNCAgLi4uLi4uLi4uQC4uLlIjLgogICAyRjYzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkY2NDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJGNjUwOiAwMCAwMiAwMCAwMCAwOSAwMCBCMSA1NSAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlUuLi4uLi4uLgogICAyRjY2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggNTQgMjMgQTQgIC4uLi4uLi4uLkAuLi5UIy4KICAg
MkY2NzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJGNjgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyRjY5MDogMDAgMDIgMDAgMDAg
MDkgMDAgQjIgNTUgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5VLi4uLi4uLi4KICAg
MkY2QTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDUyIDIzIEE0ICAu
Li4uLi4uLi5ALi4uUiMuCiAgIDJGNkIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyRjZDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkY2RDA6IDAwIDAyIDAwIDAwIDA5IDAwIEIzIDU1IDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uVS4uLi4uLi4uCiAgIDJGNkUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA1MyAyMyBBNCAgLi4uLi4uLi4uQC4uLlMjLgogICAyRjZGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkY3MDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJGNzEwOiAwMCAwMiAwMCAwMCAwOSAwMCBCNCA1NSAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlUuLi4uLi4uLgogICAyRjcyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggNTMgMjMgQTQgIC4uLi4uLi4uLkAuLi5TIy4KICAg
MkY3MzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJGNzQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyRjc1MDogMDAgMDIgMDAgMDAg
MDkgMDAgQjUgNTUgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5VLi4uLi4uLi4KICAg
MkY3NjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDQwIDIzIEE0ICAu
Li4uLi4uLi5ALi4uQCMuCiAgIDJGNzcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyRjc4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkY3OTA6IDAwIDAyIDAwIDAwIDA5IDAwIEI2IDU1IDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uVS4uLi4uLi4uCiAgIDJGN0EwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA0RiAyMyBBNCAgLi4uLi4uLi4uQC4uLk8jLgogICAyRjdCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkY3QzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJGN0QwOiAwMCAwMiAwMCAwMCAwOSAwMCBCNyA1NSAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlUuLi4uLi4uLgogICAyRjdFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggNEYgMjMgQTQgIC4uLi4uLi4uLkAuLi5PIy4KICAg
MkY3RjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJGODAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyRjgxMDogMDAgMDIgMDAgMDAg
MDkgMDAgQjggNTUgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5VLi4uLi4uLi4KICAg
MkY4MjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDRCIDIzIEE0ICAu
Li4uLi4uLi5ALi4uSyMuCiAgIDJGODMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyRjg0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkY4NTA6IDAwIDAyIDAwIDAwIDA5IDAwIEI5IDU1IDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uVS4uLi4uLi4uCiAgIDJGODYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA0RSAyMyBBNCAgLi4uLi4uLi4uQC4uLk4jLgogICAyRjg3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkY4ODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJGODkwOiAwMCAwMiAwMCAwMCAwOSAwMCBCQSA1NSAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlUuLi4uLi4uLgogICAyRjhBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggNEUgMjMgQTQgIC4uLi4uLi4uLkAuLi5OIy4KICAg
MkY4QjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJGOEMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyRjhEMDogMDAgMDIgMDAgMDAg
MDkgMDAgQkIgNTUgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5VLi4uLi4uLi4KICAg
MkY4RTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDRCIDIzIEE0ICAu
Li4uLi4uLi5ALi4uSyMuCiAgIDJGOEYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyRjkwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkY5MTA6IDAwIDAyIDAwIDAwIDA5IDAwIEJDIDU1IDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uVS4uLi4uLi4uCiAgIDJGOTIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA0RCAyMyBBNCAgLi4uLi4uLi4uQC4uLk0jLgogICAyRjkzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkY5NDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJGOTUwOiAwMCAwMiAwMCAwMCAwOSAwMCBCRCA1NSAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlUuLi4uLi4uLgogICAyRjk2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggNEMgMjMgQTQgIC4uLi4uLi4uLkAuLi5MIy4KICAg
MkY5NzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJGOTgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyRjk5MDogMDAgMDIgMDAgMDAg
MDkgMDAgQkUgNTUgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5VLi4uLi4uLi4KICAg
MkY5QTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDRDIDIzIEE0ICAu
Li4uLi4uLi5ALi4uTCMuCiAgIDJGOUIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyRjlDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkY5RDA6IDAwIDAyIDAwIDAwIDA5IDAwIEJGIDU1IDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uVS4uLi4uLi4uCiAgIDJGOUUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA0RCAyMyBBNCAgLi4uLi4uLi4uQC4uLk0jLgogICAyRjlGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkZBMDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJGQTEwOiAwMCAwMiAwMCAwMCAwOSAwMCBDMCA1NSAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlUuLi4uLi4uLgogICAyRkEyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggNDAgMjMgQTQgIC4uLi4uLi4uLkAuLi5AIy4KICAg
MkZBMzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJGQTQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyRkE1MDogMDAgMDIgMDAgMDAg
MDkgMDAgQzEgNTUgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5VLi4uLi4uLi4KICAg
MkZBNjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDRBIDIzIEE0ICAu
Li4uLi4uLi5ALi4uSiMuCiAgIDJGQTcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyRkE4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkZBOTA6IDAwIDAyIDAwIDAwIDA5IDAwIEMyIDU1IDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uVS4uLi4uLi4uCiAgIDJGQUEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA0QSAyMyBBNCAgLi4uLi4uLi4uQC4uLkojLgogICAyRkFCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkZBQzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJGQUQwOiAwMCAwMiAwMCAwMCAwOSAwMCBDMyA1NSAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlUuLi4uLi4uLgogICAyRkFFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggNDcgMjMgQTQgIC4uLi4uLi4uLkAuLi5HIy4KICAg
MkZBRjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJGQjAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyRkIxMDogMDAgMDIgMDAgMDAg
MDkgMDAgQzQgNTUgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5VLi4uLi4uLi4KICAg
MkZCMjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDQ5IDIzIEE0ICAu
Li4uLi4uLi5ALi4uSSMuCiAgIDJGQjMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyRkI0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkZCNTA6IDAwIDAyIDAwIDAwIDA5IDAwIEM1IDU1IDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uVS4uLi4uLi4uCiAgIDJGQjYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA0OCAyMyBBNCAgLi4uLi4uLi4uQC4uLkgjLgogICAyRkI3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkZCODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJGQjkwOiAwMCAwMiAwMCAwMCAwOSAwMCBDNiA1NSAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlUuLi4uLi4uLgogICAyRkJBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggNDggMjMgQTQgIC4uLi4uLi4uLkAuLi5IIy4KICAg
MkZCQjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJGQkMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyRkJEMDogMDAgMDIgMDAgMDAg
MDkgMDAgQzcgNTUgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5VLi4uLi4uLi4KICAg
MkZCRTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDQ5IDIzIEE0ICAu
Li4uLi4uLi5ALi4uSSMuCiAgIDJGQkYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyRkMwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkZDMTA6IDAwIDAyIDAwIDAwIDA5IDAwIEM4IDU1IDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uVS4uLi4uLi4uCiAgIDJGQzIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA0MSAyMyBBNCAgLi4uLi4uLi4uQC4uLkEjLgogICAyRkMzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkZDNDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJGQzUwOiAwMCAwMiAwMCAwMCAwOSAwMCBDOSA1NSAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlUuLi4uLi4uLgogICAyRkM2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggNDcgMjMgQTQgIC4uLi4uLi4uLkAuLi5HIy4KICAg
MkZDNzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJGQzgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyRkM5MDogMDAgMDIgMDAgMDAg
MDkgMDAgQ0EgNTUgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5VLi4uLi4uLi4KICAg
MkZDQTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDQ1IDIzIEE0ICAu
Li4uLi4uLi5ALi4uRSMuCiAgIDJGQ0IwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyRkNDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkZDRDA6IDAwIDAyIDAwIDAwIDA5IDAwIENCIDU1IDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uVS4uLi4uLi4uCiAgIDJGQ0UwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA0NiAyMyBBNCAgLi4uLi4uLi4uQC4uLkYjLgogICAyRkNGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkZEMDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJGRDEwOiAwMCAwMiAwMCAwMCAwOSAwMCBDQyA1NSAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlUuLi4uLi4uLgogICAyRkQyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggNDYgMjMgQTQgIC4uLi4uLi4uLkAuLi5GIy4KICAg
MkZEMzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJGRDQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyRkQ1MDogMDAgMDIgMDAgMDAg
MDkgMDAgQ0QgNTUgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5VLi4uLi4uLi4KICAg
MkZENjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDQxIDIzIEE0ICAu
Li4uLi4uLi5ALi4uQSMuCiAgIDJGRDcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyRkQ4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkZEOTA6IDAwIDAyIDAwIDAwIDA5IDAwIENFIDU1IDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uVS4uLi4uLi4uCiAgIDJGREEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA0NCAyMyBBNCAgLi4uLi4uLi4uQC4uLkQjLgogICAyRkRCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkZEQzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJGREQwOiAwMCAwMiAwMCAwMCAwOSAwMCBDRiA1NSAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlUuLi4uLi4uLgogICAyRkRFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggNDUgMjMgQTQgIC4uLi4uLi4uLkAuLi5FIy4KICAg
MkZERjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJGRTAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyRkUxMDogMDAgMDIgMDAgMDAg
MDkgMDAgRDAgNTUgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5VLi4uLi4uLi4KICAg
MkZFMjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDQyIDIzIEE0ICAu
Li4uLi4uLi5ALi4uQiMuCiAgIDJGRTMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyRkU0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkZFNTA6IDAwIDAyIDAwIDAwIDA5IDAwIEQxIDU1IDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uVS4uLi4uLi4uCiAgIDJGRTYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCA0NCAyMyBBNCAgLi4uLi4uLi4uQC4uLkQjLgogICAyRkU3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkZFODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJGRTkwOiAwMCAwMiAwMCAwMCAwOSAwMCBEMiA1NSAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlUuLi4uLi4uLgogICAyRkVBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggNDIgMjMgQTQgIC4uLi4uLi4uLkAuLi5CIy4KICAg
MkZFQjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJGRUMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyRkVEMDogMDAgMDIgMDAgMDAg
MDkgMDAgRDMgNTUgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5VLi4uLi4uLi4KICAg
MkZFRTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDQzIDIzIEE0ICAu
Li4uLi4uLi5ALi4uQyMuCiAgIDJGRUYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyRkYwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkZGMTA6IDAwIDAyIDAwIDAwIDA5IDAwIEQ0IDU1IDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uVS4uLi4uLi4uCiAgIDJGRjIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCA0MyAyMyBBNCAgLi4uLi4uLi4uQC4uLkMjLgogICAyRkYzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkZGNDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJGRjUwOiAwMCAwMiAwMCAwMCAwOSAwMCBENSA1NSAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlUuLi4uLi4uLgogICAyRkY2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggMzAgMjMgQTQgIC4uLi4uLi4uLkAuLi4wIy4KICAg
MkZGNzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDJGRjgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyRkY5MDogMDAgMDIgMDAgMDAg
MDkgMDAgRDYgNTUgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5VLi4uLi4uLi4KICAg
MkZGQTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDNGIDIzIEE0ICAu
Li4uLi4uLi5ALi4uPyMuCiAgIDJGRkIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAyRkZDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MkZGRDA6IDAwIDAyIDAwIDAwIDA5IDAwIEQ3IDU1IDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uVS4uLi4uLi4uCiAgIDJGRkUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCAzRiAyMyBBNCAgLi4uLi4uLi4uQC4uLj8jLgogICAyRkZGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MzAwMDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDMwMDEwOiAwMCAwMiAwMCAwMCAwOSAwMCBEOCA1NSAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlUuLi4uLi4uLgogICAzMDAyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggM0IgMjMgQTQgIC4uLi4uLi4uLkAuLi47Iy4KICAg
MzAwMzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDMwMDQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAzMDA1MDogMDAgMDIgMDAgMDAg
MDkgMDAgRDkgNTUgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5VLi4uLi4uLi4KICAg
MzAwNjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDNFIDIzIEE0ICAu
Li4uLi4uLi5ALi4uPiMuCiAgIDMwMDcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAzMDA4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MzAwOTA6IDAwIDAyIDAwIDAwIDA5IDAwIERBIDU1IDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uVS4uLi4uLi4uCiAgIDMwMEEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCAzRSAyMyBBNCAgLi4uLi4uLi4uQC4uLj4jLgogICAzMDBCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MzAwQzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDMwMEQwOiAwMCAwMiAwMCAwMCAwOSAwMCBEQiA1NSAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlUuLi4uLi4uLgogICAzMDBFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggM0IgMjMgQTQgIC4uLi4uLi4uLkAuLi47Iy4KICAg
MzAwRjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDMwMTAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAzMDExMDogMDAgMDIgMDAgMDAg
MDkgMDAgREMgNTUgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5VLi4uLi4uLi4KICAg
MzAxMjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDNEIDIzIEE0ICAu
Li4uLi4uLi5ALi4uPSMuCiAgIDMwMTMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAzMDE0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MzAxNTA6IDAwIDAyIDAwIDAwIDA5IDAwIEREIDU1IDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uVS4uLi4uLi4uCiAgIDMwMTYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCAzQyAyMyBBNCAgLi4uLi4uLi4uQC4uLjwjLgogICAzMDE3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MzAxODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDMwMTkwOiAwMCAwMiAwMCAwMCAwOSAwMCBERSA1NSAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlUuLi4uLi4uLgogICAzMDFBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggM0MgMjMgQTQgIC4uLi4uLi4uLkAuLi48Iy4KICAg
MzAxQjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDMwMUMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAzMDFEMDogMDAgMDIgMDAgMDAg
MDkgMDAgREYgNTUgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5VLi4uLi4uLi4KICAg
MzAxRTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDNEIDIzIEE0ICAu
Li4uLi4uLi5ALi4uPSMuCiAgIDMwMUYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAzMDIwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MzAyMTA6IDAwIDAyIDAwIDAwIDA5IDAwIEUwIDU1IDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uVS4uLi4uLi4uCiAgIDMwMjIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCAzMCAyMyBBNCAgLi4uLi4uLi4uQC4uLjAjLgogICAzMDIzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MzAyNDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDMwMjUwOiAwMCAwMiAwMCAwMCAwOSAwMCBFMSA1NSAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlUuLi4uLi4uLgogICAzMDI2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggM0EgMjMgQTQgIC4uLi4uLi4uLkAuLi46Iy4KICAg
MzAyNzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDMwMjgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAzMDI5MDogMDAgMDIgMDAgMDAg
MDkgMDAgRTIgNTUgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5VLi4uLi4uLi4KICAg
MzAyQTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDNBIDIzIEE0ICAu
Li4uLi4uLi5ALi4uOiMuCiAgIDMwMkIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAzMDJDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MzAyRDA6IDAwIDAyIDAwIDAwIDA5IDAwIEUzIDU1IDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uVS4uLi4uLi4uCiAgIDMwMkUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCAzNyAyMyBBNCAgLi4uLi4uLi4uQC4uLjcjLgogICAzMDJGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MzAzMDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDMwMzEwOiAwMCAwMiAwMCAwMCAwOSAwMCBFNCA1NSAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlUuLi4uLi4uLgogICAzMDMyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggMzkgMjMgQTQgIC4uLi4uLi4uLkAuLi45Iy4KICAg
MzAzMzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDMwMzQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAzMDM1MDogMDAgMDIgMDAgMDAg
MDkgMDAgRTUgNTUgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5VLi4uLi4uLi4KICAg
MzAzNjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDM4IDIzIEE0ICAu
Li4uLi4uLi5ALi4uOCMuCiAgIDMwMzcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAzMDM4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MzAzOTA6IDAwIDAyIDAwIDAwIDA5IDAwIEU2IDU1IDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uVS4uLi4uLi4uCiAgIDMwM0EwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCAzOCAyMyBBNCAgLi4uLi4uLi4uQC4uLjgjLgogICAzMDNCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MzAzQzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDMwM0QwOiAwMCAwMiAwMCAwMCAwOSAwMCBFNyA1NSAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlUuLi4uLi4uLgogICAzMDNFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggMzkgMjMgQTQgIC4uLi4uLi4uLkAuLi45Iy4KICAg
MzAzRjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDMwNDAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAzMDQxMDogMDAgMDIgMDAgMDAg
MDkgMDAgRTggNTUgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5VLi4uLi4uLi4KICAg
MzA0MjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDMxIDIzIEE0ICAu
Li4uLi4uLi5ALi4uMSMuCiAgIDMwNDMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAzMDQ0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MzA0NTA6IDAwIDAyIDAwIDAwIDA5IDAwIEU5IDU1IDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uVS4uLi4uLi4uCiAgIDMwNDYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCAzNyAyMyBBNCAgLi4uLi4uLi4uQC4uLjcjLgogICAzMDQ3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MzA0ODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDMwNDkwOiAwMCAwMiAwMCAwMCAwOSAwMCBFQSA1NSAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlUuLi4uLi4uLgogICAzMDRBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggMzUgMjMgQTQgIC4uLi4uLi4uLkAuLi41Iy4KICAg
MzA0QjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDMwNEMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAzMDREMDogMDAgMDIgMDAgMDAg
MDkgMDAgRUIgNTUgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5VLi4uLi4uLi4KICAg
MzA0RTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDM2IDIzIEE0ICAu
Li4uLi4uLi5ALi4uNiMuCiAgIDMwNEYwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAzMDUwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MzA1MTA6IDAwIDAyIDAwIDAwIDA5IDAwIEVDIDU1IDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uVS4uLi4uLi4uCiAgIDMwNTIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCAzNiAyMyBBNCAgLi4uLi4uLi4uQC4uLjYjLgogICAzMDUzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MzA1NDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDMwNTUwOiAwMCAwMiAwMCAwMCAwOSAwMCBFRCA1NSAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlUuLi4uLi4uLgogICAzMDU2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggMzEgMjMgQTQgIC4uLi4uLi4uLkAuLi4xIy4KICAg
MzA1NzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDMwNTgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAzMDU5MDogMDAgMDIgMDAgMDAg
MDkgMDAgRUUgNTUgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5VLi4uLi4uLi4KICAg
MzA1QTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDM0IDIzIEE0ICAu
Li4uLi4uLi5ALi4uNCMuCiAgIDMwNUIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAzMDVDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MzA1RDA6IDAwIDAyIDAwIDAwIDA5IDAwIEVGIDU1IDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uVS4uLi4uLi4uCiAgIDMwNUUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCAzNSAyMyBBNCAgLi4uLi4uLi4uQC4uLjUjLgogICAzMDVGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MzA2MDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDMwNjEwOiAwMCAwMiAwMCAwMCAwOSAwMCBGMCA1NSAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlUuLi4uLi4uLgogICAzMDYyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggMzIgMjMgQTQgIC4uLi4uLi4uLkAuLi4yIy4KICAg
MzA2MzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDMwNjQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAzMDY1MDogMDAgMDIgMDAgMDAg
MDkgMDAgRjEgNTUgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5VLi4uLi4uLi4KICAg
MzA2NjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDM0IDIzIEE0ICAu
Li4uLi4uLi5ALi4uNCMuCiAgIDMwNjcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAzMDY4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MzA2OTA6IDAwIDAyIDAwIDAwIDA5IDAwIEYyIDU1IDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uVS4uLi4uLi4uCiAgIDMwNkEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCAzMiAyMyBBNCAgLi4uLi4uLi4uQC4uLjIjLgogICAzMDZCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MzA2QzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDMwNkQwOiAwMCAwMiAwMCAwMCAwOSAwMCBGMyA1NSAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlUuLi4uLi4uLgogICAzMDZFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggMzMgMjMgQTQgIC4uLi4uLi4uLkAuLi4zIy4KICAg
MzA2RjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDMwNzAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAzMDcxMDogMDAgMDIgMDAgMDAg
MDkgMDAgRjQgNTUgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5VLi4uLi4uLi4KICAg
MzA3MjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDMzIDIzIEE0ICAu
Li4uLi4uLi5ALi4uMyMuCiAgIDMwNzMwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAzMDc0MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MzA3NTA6IDAwIDAyIDAwIDAwIDA5IDAwIEY1IDU1IDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uVS4uLi4uLi4uCiAgIDMwNzYwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCAyMCAyMyBBNCAgLi4uLi4uLi4uQC4uLiAjLgogICAzMDc3MDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MzA3ODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDMwNzkwOiAwMCAwMiAwMCAwMCAwOSAwMCBGNiA1NSAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlUuLi4uLi4uLgogICAzMDdBMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggMkYgMjMgQTQgIC4uLi4uLi4uLkAuLi4vIy4KICAg
MzA3QjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDMwN0MwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAzMDdEMDogMDAgMDIgMDAgMDAg
MDkgMDAgRjcgNTUgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5VLi4uLi4uLi4KICAg
MzA3RTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDJGIDIzIEE0ICAu
Li4uLi4uLi5ALi4uLyMuCiAgIDMwN0YwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAzMDgwMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MzA4MTA6IDAwIDAyIDAwIDAwIDA5IDAwIEY4IDU1IDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uVS4uLi4uLi4uCiAgIDMwODIwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCAxOCAyQiAyMyBBNCAgLi4uLi4uLi4uQC4uLisjLgogICAzMDgzMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MzA4NDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDMwODUwOiAwMCAwMiAwMCAwMCAwOSAwMCBGOSA1NSAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlUuLi4uLi4uLgogICAzMDg2MDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggMkUgMjMgQTQgIC4uLi4uLi4uLkAuLi4uIy4KICAg
MzA4NzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDMwODgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAzMDg5MDogMDAgMDIgMDAgMDAg
MDkgMDAgRkEgNTUgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5VLi4uLi4uLi4KICAg
MzA4QTA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDk4IDJFIDIzIEE0ICAu
Li4uLi4uLi5ALi4uLiMuCiAgIDMwOEIwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAzMDhDMDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MzA4RDA6IDAwIDAyIDAwIDAwIDA5IDAwIEZCIDU1IDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uVS4uLi4uLi4uCiAgIDMwOEUwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCAyQiAyMyBBNCAgLi4uLi4uLi4uQC4uLisjLgogICAzMDhGMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MzA5MDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDMwOTEwOiAwMCAwMiAwMCAwMCAwOSAwMCBGQyA1NSAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlUuLi4uLi4uLgogICAzMDkyMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgOTggMkQgMjMgQTQgIC4uLi4uLi4uLkAuLi4tIy4KICAg
MzA5MzA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDMwOTQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAzMDk1MDogMDAgMDIgMDAgMDAg
MDkgMDAgRkQgNTUgMDIgMDAgMDAgMDEgMDEgMDAgMDAgMDAgIC4uLi4uLi5VLi4uLi4uLi4KICAg
MzA5NjA6IDEwIDAwIDAwIDAwIDAwIDAyIDAwIDAwIDAwIDQwIDAwIDA0IDE4IDJDIDIzIEE0ICAu
Li4uLi4uLi5ALi4uLCMuCiAgIDMwOTcwOiAwMCAwMCAwMCAwMCAwMCAxQyAwMCAwMCBGRiBGRiBG
RiBGRiAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAzMDk4MDogMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MzA5OTA6IDAwIDAyIDAwIDAwIDA5IDAwIEZFIDU1IDAyIDAwIDAwIDAxIDAxIDAwIDAwIDAwICAu
Li4uLi4uVS4uLi4uLi4uCiAgIDMwOUEwOiAxMCAwMCAwMCAwMCAwMCAwMiAwMCAwMCAwMCA0MCAw
MCAwNCA5OCAyQyAyMyBBNCAgLi4uLi4uLi4uQC4uLiwjLgogICAzMDlCMDogMDAgMDAgMDAgMDAg
MDAgMUMgMDAgMDAgRkYgRkYgRkYgRkYgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAg
MzA5QzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDMwOUQwOiAwMCAwMiAwMCAwMCAwOSAwMCBGRiA1NSAwMiAwMCAw
MCAwMSAwMSAwMCAwMCAwMCAgLi4uLi4uLlUuLi4uLi4uLgogICAzMDlFMDogMTAgMDAgMDAgMDAg
MDAgMDIgMDAgMDAgMDAgNDAgMDAgMDQgMTggMkQgMjMgQTQgIC4uLi4uLi4uLkAuLi4tIy4KICAg
MzA5RjA6IDAwIDAwIDAwIDAwIDAwIDFDIDAwIDAwIEZGIEZGIEZGIEZGIDAwIDAwIDAwIDAwICAu
Li4uLi4uLi4uLi4uLi4uCiAgIDMwQTAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAzMEExMDogMDAgMDIgMDAgMDAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLi4KClNTRFQgQCAweDAwMDAw
MDAwMDAwMDAwMDAKICAgIDAwMDA6IDUzIDUzIDQ0IDU0IEQ0IDA2IDAwIDAwIDAyIDNBIDQxIDRE
IDQ0IDAwIDAwIDAwICBTU0RULi4uLi46QU1ELi4uCiAgICAwMDEwOiA0MyA1MCA0RCA1NyA0QyA1
MiA0MyAwMCAwMSAwMCAwMCAwMCA0OSA0RSA1NCA0QyAgQ1BNV0xSQy4uLi4uSU5UTAogICAgMDAy
MDogMzEgMDMgMjMgMjAgQTAgNEYgNDggMDAgMTUgNUMgNEQgMzAgMzAgMzAgMDggMDEgIDEuIyAu
T0guLlxNMDAwLi4KICAgIDAwMzA6IDE1IDVDIDREIDMwIDMxIDM4IDA4IDA3IDE1IDVDIDREIDMx
IDMxIDMyIDA4IDAyICAuXE0wMTguLi5cTTExMi4uCiAgICAwMDQwOiAxNSA1QyA0RCAzMSAzMSAz
NSAwMyAwMCAxNSA1QyA0RCAzMSAzMSAzNiAwRSAwMCAgLlxNMTE1Li4uXE0xMTYuLgogICAgMDA1
MDogMTUgNUMgNEQgMzEgMzEgMzcgMEUgMDAgMTUgNUMgNEQgMzEgMzEgMzggMEUgMDAgIC5cTTEx
Ny4uLlxNMTE4Li4KICAgIDAwNjA6IDE1IDVDIDREIDMxIDMxIDM5IDBFIDAwIDE1IDVDIDREIDMx
IDMyIDMwIDBFIDAwICAuXE0xMTkuLi5cTTEyMC4uCiAgICAwMDcwOiAxNSA1QyA0RCAzMCAzMyAz
NyAwNiAwMCAxNSA1QyA0RCAzMiAzMiAzNyAwNiAwMCAgLlxNMDM3Li4uXE0yMjcuLgogICAgMDA4
MDogMTUgNUMgNEQgMzMgMzIgMzkgMDYgMDAgMTUgNUMgNEQgMzMgMzIgNDEgMDYgMDAgIC5cTTMy
OS4uLlxNMzJBLi4KICAgIDAwOTA6IDE1IDVDIDREIDMzIDMyIDQyIDA2IDAwIDE1IDVDIDREIDMz
IDMyIDQzIDA2IDAwICAuXE0zMkIuLi5cTTMyQy4uCiAgICAwMEEwOiAxNSA1QyA0RCAzMyAzMyAz
MCAwNiAwMCAxNSA1QyA0RCAzMCAzOCAzMiAwNSAwMCAgLlxNMzMwLi4uXE0wODIuLgogICAgMDBC
MDogMTUgNUMgNEQgMzAgMzggMzMgMDUgMDAgMTUgNUMgNEQgMzAgMzggMzQgMDUgMDAgIC5cTTA4
My4uLlxNMDg0Li4KICAgIDAwQzA6IDE1IDVDIDREIDMwIDM4IDM1IDA1IDAwIDE1IDVDIDREIDMy
IDMyIDMxIDA1IDAwICAuXE0wODUuLi5cTTIyMS4uCiAgICAwMEQwOiAxNSA1QyA0RCAzMCAzOCAz
NiAwNSAwMCAxNSA1QyA0RCAzMiAzMiAzOSAwNSAwMCAgLlxNMDg2Li4uXE0yMjkuLgogICAgMDBF
MDogMTUgNUMgNEQgMzIgMzMgMzEgMDUgMDAgMTUgNUMgNEQgMzIgMzMgMzUgMDUgMDAgIC5cTTIz
MS4uLlxNMjM1Li4KICAgIDAwRjA6IDE1IDVDIDREIDMyIDMzIDMzIDA1IDAwIDE1IDVDIDREIDMw
IDM4IDM3IDA1IDAwICAuXE0yMzMuLi5cTTA4Ny4uCiAgICAwMTAwOiAxNSA1QyA0RCAzMCAzOCAz
OCAwNSAwMCAxNSA1QyA0RCAzMCAzOCAzOSAwNSAwMCAgLlxNMDg4Li4uXE0wODkuLgogICAgMDEx
MDogMTUgNUMgNEQgMzAgMzkgMzAgMDUgMDAgMTUgNUMgNEQgMzAgMzkgMzEgMDUgMDAgIC5cTTA5
MC4uLlxNMDkxLi4KICAgIDAxMjA6IDE1IDVDIDREIDMwIDM5IDMyIDA1IDAwIDE1IDVDIDREIDMw
IDM5IDMzIDA1IDAwICAuXE0wOTIuLi5cTTA5My4uCiAgICAwMTMwOiAxNSA1QyA0RCAzMCAzOSAz
NCAwNSAwMCAxNSA1QyA0RCAzMCAzOSAzNSAwNSAwMCAgLlxNMDk0Li4uXE0wOTUuLgogICAgMDE0
MDogMTUgNUMgNEQgMzAgMzkgMzYgMDUgMDAgMTUgNUMgNEQgMzAgMzkgMzcgMDUgMDAgIC5cTTA5
Ni4uLlxNMDk3Li4KICAgIDAxNTA6IDE1IDVDIDREIDMwIDM5IDM4IDA1IDAwIDE1IDVDIDREIDMw
IDM5IDM5IDA1IDAwICAuXE0wOTguLi5cTTA5OS4uCiAgICAwMTYwOiAxNSA1QyA0RCAzMSAzMCAz
MCAwNSAwMCAxNSA1QyA0RCAzMSAzMCAzMSAwNSAwMCAgLlxNMTAwLi4uXE0xMDEuLgogICAgMDE3
MDogMTUgNUMgNEQgMzEgMzAgMzIgMDUgMDAgMTUgNUMgNEQgMzEgMzAgMzMgMDUgMDAgIC5cTTEw
Mi4uLlxNMTAzLi4KICAgIDAxODA6IDE1IDVDIDREIDMxIDMwIDM0IDA1IDAwIDE1IDVDIDREIDMx
IDMwIDM1IDA1IDAwICAuXE0xMDQuLi5cTTEwNS4uCiAgICAwMTkwOiAxNSA1QyA0RCAzMSAzMCAz
NiAwNSAwMCAxNSA1QyA0RCAzMSAzMCAzNyAwNSAwMCAgLlxNMTA2Li4uXE0xMDcuLgogICAgMDFB
MDogMTUgNUMgNEQgMzEgMzIgMzggMDUgMDAgMTUgNUMgNEQgMzEgMzAgMzggMDUgMDAgIC5cTTEy
OC4uLlxNMTA4Li4KICAgIDAxQjA6IDE1IDVDIDREIDMxIDMwIDM5IDA1IDAwIDE1IDVDIDREIDMx
IDMxIDMwIDA1IDAwICAuXE0xMDkuLi5cTTExMC4uCiAgICAwMUMwOiAxNSA1QyA0RCAzMSAzMiAz
MiAwNSAwMCAxNSA1QyA0RCAzMSAzMyAzMSAwNSAwMCAgLlxNMTIyLi4uXE0xMzEuLgogICAgMDFE
MDogMTUgNUMgNEQgMzEgMzMgMzIgMDUgMDAgMTUgNUMgNEQgMzIgMzIgMzYgMDUgMDAgIC5cTTEz
Mi4uLlxNMjI2Li4KICAgIDAxRTA6IDE1IDVDIDREIDMxIDMzIDMzIDA1IDAwIDE1IDVDIDREIDMx
IDMzIDM0IDA1IDAwICAuXE0xMzMuLi5cTTEzNC4uCiAgICAwMUYwOiAxNSA1QyA0RCAzMSAzMyAz
NSAwNSAwMCAxNSA1QyA0RCAzMSAzMyAzNiAwNSAwMCAgLlxNMTM1Li4uXE0xMzYuLgogICAgMDIw
MDogMTUgNUMgNEQgMzIgMzIgMzAgMDUgMDAgMTUgNUMgNEQgMzAgMzQgMzYgMDEgMDAgIC5cTTIy
MC4uLlxNMDQ2Li4KICAgIDAyMTA6IDE1IDVDIDREIDMwIDM0IDM3IDAxIDAwIDE1IDVDIDREIDMw
IDM0IDM5IDA4IDAyICAuXE0wNDcuLi5cTTA0OS4uCiAgICAwMjIwOiAxNSA1QyA0RCAzMCAzNCA0
MiAwOCAwMiAxNSA1QyA0RCAzMiAzNSAzMSAwNSAwMCAgLlxNMDRCLi4uXE0yNTEuLgogICAgMDIz
MDogMTUgNUMgNEQgMzMgMzEgMzAgMDUgMDAgMTUgNUMgNEQgMzMgMzEgNDMgMDUgMDAgIC5cTTMx
MC4uLlxNMzFDLi4KICAgIDAyNDA6IDE1IDVDIDREIDMzIDMyIDMwIDA1IDAwIDE1IDVDIDREIDMz
IDMyIDMxIDA1IDAwICAuXE0zMjAuLi5cTTMyMS4uCiAgICAwMjUwOiAxNSA1QyA0RCAzMyAzMiAz
MiAwNSAwMCAxNSA1QyA0RCAzMyAzMiAzMyAwNSAwMCAgLlxNMzIyLi4uXE0zMjMuLgogICAgMDI2
MDogMTUgNUMgNEQgMzMgMzIgMzQgMDUgMDAgMTUgNUMgNEQgMzMgMzIgMzUgMDUgMDAgIC5cTTMy
NC4uLlxNMzI1Li4KICAgIDAyNzA6IDE1IDVDIDREIDMzIDMyIDM2IDA1IDAwIDE1IDVDIDREIDMz
IDMyIDM3IDA1IDAwICAuXE0zMjYuLi5cTTMyNy4uCiAgICAwMjgwOiAxNSA1QyA0RCAzMyAzMiAz
OCAwNSAwMCAxNSA1QyA0RCAzMiAzOCAzMCAwNSAwMCAgLlxNMzI4Li4uXE0yODAuLgogICAgMDI5
MDogMTUgNUMgNEQgMzIgMzkgMzAgMDUgMDAgMTUgNUMgNEQgMzMgMzcgMzggMDUgMDAgIC5cTTI5
MC4uLlxNMzc4Li4KICAgIDAyQTA6IDE1IDVDIDREIDMzIDM3IDM5IDA1IDAwIDE1IDVDIDREIDMz
IDM4IDMwIDA1IDAwICAuXE0zNzkuLi5cTTM4MC4uCiAgICAwMkIwOiAxNSA1QyA0RCAzMyAzOCAz
MSAwNSAwMCAxNSA1QyA0RCAzMyAzOCAzMiAwNSAwMCAgLlxNMzgxLi4uXE0zODIuLgogICAgMDJD
MDogMTUgNUMgNEQgMzMgMzggMzMgMDUgMDAgMTUgNUMgNEQgMzMgMzggMzQgMDUgMDAgIC5cTTM4
My4uLlxNMzg0Li4KICAgIDAyRDA6IDE1IDVDIDREIDMzIDM4IDM1IDA1IDAwIDE1IDVDIDREIDMz
IDM4IDM2IDA1IDAwICAuXE0zODUuLi5cTTM4Ni4uCiAgICAwMkUwOiAxNSA1QyA0RCAzMyAzOCAz
NyAwNSAwMCAxNSA1QyA0RCAzMyAzOCAzOCAwNSAwMCAgLlxNMzg3Li4uXE0zODguLgogICAgMDJG
MDogMTUgNUMgNEQgMzMgMzggMzkgMDUgMDAgMTUgNUMgNEQgMzMgMzkgMzAgMDUgMDAgIC5cTTM4
OS4uLlxNMzkwLi4KICAgIDAzMDA6IDE1IDVDIDREIDMzIDM5IDMxIDA1IDAwIDE1IDVDIDREIDMz
IDM5IDMyIDA1IDAwICAuXE0zOTEuLi5cTTM5Mi4uCiAgICAwMzEwOiAxNSA1QyA0RCAzMyAzMyAz
MSAwNSAwMCAxNSA1QyA0RCAzNiAzMiAzMCAwNSAwMCAgLlxNMzMxLi4uXE02MjAuLgogICAgMDMy
MDogMTUgNUMgNEQgMzQgMzAgMzQgMDMgMDAgMTUgNUMgNEQgMzQgMzAgMzggMDkgMDAgIC5cTTQw
NC4uLlxNNDA4Li4KICAgIDAzMzA6IDE1IDVDIDREIDM0IDMxIDM0IDA1IDAwIDE1IDVDIDREIDM0
IDM0IDM0IDA1IDAwICAuXE00MTQuLi5cTTQ0NC4uCiAgICAwMzQwOiAxNSA1QyA0RCAzNCAzNSAz
MyAwNSAwMCAxNSA1QyA0RCAzNCAzNSAzNCAwNSAwMCAgLlxNNDUzLi4uXE00NTQuLgogICAgMDM1
MDogMTUgNUMgNEQgMzQgMzUgMzUgMDUgMDAgMTUgNUMgNEQgMzQgMzUgMzYgMDUgMDAgIC5cTTQ1
NS4uLlxNNDU2Li4KICAgIDAzNjA6IDE1IDVDIDREIDM0IDM1IDM3IDA1IDAwIDE1IDVDIDREIDM0
IDM0IDM5IDA1IDAwICAuXE00NTcuLi5cTTQ0OS4uCiAgICAwMzcwOiAxNSA1QyA0RCAzNCA0MyAz
MCAwNSAwMCAxNSA1QyA0RCAzMiAzMyA0MSAwNSAwMCAgLlxNNEMwLi4uXE0yM0EuLgogICAgMDM4
MDogMTUgNUMgNEQgMzQgNDYgMzAgMDUgMDAgMTUgNUMgNEQgMzYgMzEgMzAgMDUgMDAgIC5cTTRG
MC4uLlxNNjEwLi4KICAgIDAzOTA6IDE1IDVDIDREIDMyIDM5IDQxIDA1IDAwIDE1IDVDIDREIDM2
IDMzIDMxIDA1IDAwICAuXE0yOUEuLi5cTTYzMS4uCiAgICAwM0EwOiAxNSA1QyA0RCAzNiAzNSAz
MiAwNSAwMCAxNSA1QyA0RCAzMCAzNSAzMCAwNiAwMCAgLlxNNjUyLi4uXE0wNTAuLgogICAgMDNC
MDogMTUgNUMgNEQgMzAgMzUgMzEgMDYgMDAgMTUgNUMgNEQgMzAgMzUgMzIgMDYgMDAgIC5cTTA1
MS4uLlxNMDUyLi4KICAgIDAzQzA6IDE1IDVDIDREIDMwIDM1IDMzIDA2IDAwIDE1IDVDIDREIDMw
IDM1IDM0IDA2IDAwICAuXE0wNTMuLi5cTTA1NC4uCiAgICAwM0QwOiAxNSA1QyA0RCAzMCAzNSAz
NSAwNiAwMCAxNSA1QyA0RCAzMCAzNSAzNiAwNiAwMCAgLlxNMDU1Li4uXE0wNTYuLgogICAgMDNF
MDogMTUgNUMgNEQgMzAgMzUgMzcgMDYgMDAgMTUgNUMgNEQgMzAgMzUgMzggMDYgMDAgIC5cTTA1
Ny4uLlxNMDU4Li4KICAgIDAzRjA6IDE1IDVDIDREIDMwIDM1IDM5IDA2IDAwIDE1IDVDIDREIDMw
IDM2IDMyIDA2IDAwICAuXE0wNTkuLi5cTTA2Mi4uCiAgICAwNDAwOiAxNSA1QyA0RCAzMCAzNiAz
OCAwNiAwMCAxNSA1QyA0RCAzMCAzNiAzOSAwNiAwMCAgLlxNMDY4Li4uXE0wNjkuLgogICAgMDQx
MDogMTUgNUMgNEQgMzAgMzcgMzAgMDYgMDAgMTUgNUMgNEQgMzAgMzcgMzEgMDYgMDAgIC5cTTA3
MC4uLlxNMDcxLi4KICAgIDA0MjA6IDE1IDVDIDREIDMwIDM3IDMyIDA2IDAwIDE1IDVDIDREIDMw
IDM3IDM0IDA2IDAwICAuXE0wNzIuLi5cTTA3NC4uCiAgICAwNDMwOiAxNSA1QyA0RCAzMCAzNyAz
NSAwNiAwMCAxNSA1QyA0RCAzMCAzNyAzNiAwNiAwMCAgLlxNMDc1Li4uXE0wNzYuLgogICAgMDQ0
MDogMTUgNUMgNEQgMzAgMzcgMzcgMDYgMDAgMTUgNUMgNEQgMzAgMzcgMzggMDYgMDAgIC5cTTA3
Ny4uLlxNMDc4Li4KICAgIDA0NTA6IDE1IDVDIDREIDMwIDM3IDM5IDA2IDAwIDE1IDVDIDREIDMw
IDM4IDMwIDA2IDAwICAuXE0wNzkuLi5cTTA4MC4uCiAgICAwNDYwOiAxNSA1QyA0RCAzMCAzOCAz
MSAwNiAwMCAxNSA1QyA0RCAzMSAzMiAzNyAwNiAwMCAgLlxNMDgxLi4uXE0xMjcuLgogICAgMDQ3
MDogMTUgNUMgMkYgMDYgNUYgNTMgNDIgNUYgNTAgNDMgNDkgMzEgNDcgNTAgNTAgNDIgIC5cLy5f
U0JfUENJMUdQUEIKICAgIDA0ODA6IDU1IDUwIDMwIDMwIDQ0IDUwIDM0IDMwIDU3IDRFIDMwIDMw
IDA2IDAwIDE1IDVDICBVUDAwRFA0MFdOMDAuLi5cCiAgICAwNDkwOiAyRiAwOCA1RiA1MyA0MiA1
RiA1MCA0MyA0OSAzMSA0NyA1MCA1MCA0MiA1NSA1MCAgLy5fU0JfUENJMUdQUEJVUAogICAgMDRB
MDogMzAgMzAgNDQgNTAgMzYgMzAgNTggNDggMzAgMzAgNTIgNDggNTUgNDIgNDggNTMgIDAwRFA2
MFhIMDBSSFVCSFMKICAgIDA0QjA6IDMxIDMxIDA2IDAwIDA4IDQ0IDUzIDUwIDQyIDBBIDQ1IDA4
IDQ0IDQ0IDUwIDQ0ICAxMS4uLkRTUEIuRS5ERFBECiAgICAwNEMwOiAwQSAwOCAwOCA1NyA0QyA1
MiA0RCAwQSAwMSBBMCA0OCAwNSA1QiAxMiA1QyAyRiAgLi4uV0xSTS4uLkguWy5cLwogICAgMDRE
MDogMDYgNUYgNTMgNDIgNUYgNTAgNDMgNDkgMzEgNDcgNTAgNTAgNDIgNTUgNTAgMzAgIC5fU0Jf
UENJMUdQUEJVUDAKICAgIDA0RTA6IDMwIDQ0IDUwIDM0IDMwIDU3IDRFIDMwIDMwIDAwIDEwIDM3
IDVDIDJGIDA2IDVGICAwRFA0MFdOMDAuLjdcLy5fCiAgICAwNEYwOiA1MyA0MiA1RiA1MCA0MyA0
OSAzMSA0NyA1MCA1MCA0MiA1NSA1MCAzMCAzMCA0NCAgU0JfUENJMUdQUEJVUDAwRAogICAgMDUw
MDogNTAgMzQgMzAgNTcgNEUgMzAgMzAgMDggNUYgNTAgNTIgNTIgMTIgMEMgMDEgNUMgIFA0MFdO
MDAuX1BSUi4uLlwKICAgIDA1MTA6IDJFIDVGIDUzIDQyIDVGIDUwIDUyIDU3IDRDIDE0IDA4IDVG
IDUyIDREIDU2IDAwICAuX1NCX1BSV0wuLl9STVYuCiAgICAwNTIwOiBBNCAwMCBBMCA0RiAwNSA1
QiAxMiA1QyAyRiAwOCA1RiA1MyA0MiA1RiA1MCA0MyAgLi4uTy5bLlwvLl9TQl9QQwogICAgMDUz
MDogNDkgMzEgNDcgNTAgNTAgNDIgNTUgNTAgMzAgMzAgNDQgNTAgMzYgMzAgNTggNDggIEkxR1BQ
QlVQMDBEUDYwWEgKICAgIDA1NDA6IDMwIDMwIDUyIDQ4IDU1IDQyIDQ4IDUzIDMxIDMxIDAwIDEw
IDM2IDVDIDJGIDA4ICAwMFJIVUJIUzExLi42XC8uCiAgICAwNTUwOiA1RiA1MyA0MiA1RiA1MCA0
MyA0OSAzMSA0NyA1MCA1MCA0MiA1NSA1MCAzMCAzMCAgX1NCX1BDSTFHUFBCVVAwMAogICAgMDU2
MDogNDQgNTAgMzYgMzAgNTggNDggMzAgMzAgNTIgNDggNTUgNDIgNDggNTMgMzEgMzEgIERQNjBY
SDAwUkhVQkhTMTEKICAgIDA1NzA6IDA4IDVGIDUwIDUyIDUyIDEyIDBDIDAxIDVDIDJFIDVGIDUz
IDQyIDVGIDUwIDUyICAuX1BSUi4uLlwuX1NCX1BSCiAgICAwNTgwOiA1NyA0MiAxMCA0MSAxNSA1
QyA1RiA1MyA0MiA1RiAwOCA1NyA0QyA1MCA1MyAwMSAgV0IuQS5cX1NCXy5XTFBTLgogICAgMDU5
MDogNUIgODQgNEIgMEIgNTAgNTIgNTcgNEMgMDAgMDAgMDAgMTQgNEIgMDggNUYgNTIgIFsuSy5Q
UldMLi4uLksuX1IKICAgIDA1QTA6IDUzIDU0IDAwIDREIDMwIDMwIDMwIDBCIEMyIDBEIDcwIDRE
IDMwIDM0IDQyIDREICBTVC5NMDAwLi4ucE0wNEJNCiAgICAwNUIwOiAzMiAzOSAzMCAwQSAyOCA2
MiBBMCA0OSAwNiA5MiA5MyA2MiAwQSAwMiA3MCA0RCAgMjkwLihiLkkuLi5iLi5wTQogICAgMDVD
MDogMzAgMzQgMzkgNEQgMzIgMzkgMzAgMEEgMTYgNjAgNzAgNEQgMzAgMzQgNDIgNEQgIDA0OU0y
OTAuLmBwTTA0Qk0KICAgIDA1RDA6IDMyIDM5IDMwIDBBIDEyIDYxIEEwIDM0IDkzIDU3IDRDIDUy
IDREIDAxIDREIDMwICAyOTAuLmEuNC5XTFJNLk0wCiAgICAwNUUwOiAzMSAzOCA0NCA1MyA1MCA0
MiA0NCA0NCA1MCA0NCAwMCAwQSAzRSAwQSAwNiAwMSAgMThEU1BCRERQRC4uPi4uLgogICAgMDVG
MDogMDEgNUIgMjIgNjEgNEQgMzAgMzEgMzggNDQgNTMgNTAgNDIgNDQgNDQgNTAgNDQgIC5bImFN
MDE4RFNQQkREUEQKICAgIDA2MDA6IDAwIDBBIDNFIDBBIDA2IDAxIDAwIDVCIDIyIDBBIDY0IEEx
IDE0IDREIDMxIDMxICAuLj4uLi4uWyIuZC4uTTExCiAgICAwNjEwOiAzMiA2MCAwMCA1QiAyMiA2
MSA0RCAzMSAzMSAzMiA2MCAwMSA1QiAyMiAwQSA2NCAgMmAuWyJhTTExMmAuWyIuZAogICAgMDYy
MDogNEQgMzAgMzAgMzAgMEIgQzMgMEQgMTQgMEIgNUYgNTMgNTQgNDEgMDAgQTQgNTcgIE0wMDAu
Li4uLl9TVEEuLlcKICAgIDA2MzA6IDRDIDUwIDUzIDE0IDBDIDVGIDRGIDRFIDVGIDAwIDcwIDAx
IDU3IDRDIDUwIDUzICBMUFMuLl9PTl8ucC5XTFBTCiAgICAwNjQwOiAxNCAwQyA1RiA0RiA0NiA0
NiAwMCA3MCAwMCA1NyA0QyA1MCA1MyAwOCA0MiA0QyAgLi5fT0ZGLnAuV0xQUy5CTAogICAgMDY1
MDogNTAgNTMgMDEgNUIgODQgNEYgMDcgNTAgNTIgNTcgNDIgMDAgMDAgMDAgMTQgNEYgIFBTLlsu
Ty5QUldCLi4uLk8KICAgIDA2NjA6IDA0IDVGIDUyIDUzIDU0IDAwIDREIDMwIDMwIDMwIDBCIERF
IDBEIDcwIDREIDMwICAuX1JTVC5NMDAwLi4ucE0wCiAgICAwNjcwOiAzNCA0MiA0RCAzMiAzOSAz
MCAwQSA0NSA2MiBBMCAyRCA5MiA5MyA2MiAwQSAwMiAgNEJNMjkwLkViLi0uLmIuLgogICAgMDY4
MDogNzAgNEQgMzAgMzQgMzkgNEQgMzIgMzkgMzAgMEEgNDAgNjAgNzAgNEQgMzAgMzQgIHBNMDQ5
TTI5MC5AYHBNMDQKICAgIDA2OTA6IDQyIDREIDMyIDM5IDMwIDBBIDQxIDYxIDREIDMxIDMxIDMy
IDYwIDAwIDVCIDIyICBCTTI5MC5BYU0xMTJgLlsiCiAgICAwNkEwOiA2MSA0RCAzMSAzMSAzMiA2
MCAwMSA0RCAzMCAzMCAzMCAwQiBERiAwRCAxNCAwQiAgYU0xMTJgLk0wMDAuLi4uLgogICAgMDZC
MDogNUYgNTMgNTQgNDEgMDAgQTQgNDIgNEMgNTAgNTMgMTQgMEMgNUYgNEYgNEUgNUYgIF9TVEEu
LkJMUFMuLl9PTl8KICAgIDA2QzA6IDAwIDcwIDAxIDQyIDRDIDUwIDUzIDE0IDBDIDVGIDRGIDQ2
IDQ2IDAwIDcwIDAwICAucC5CTFBTLi5fT0ZGLnAuCiAgICAwNkQwOiA0MiA0QyA1MCA1MyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQkxQUwoKQkVSVCBAIDB4MDAwMDAwMDAw
MDAwMDAwMAogICAgMDAwMDogNDIgNDUgNTIgNTQgMzAgMDAgMDAgMDAgMDEgNEUgNDEgNEQgNDQg
MjAgMjAgMjAgIEJFUlQwLi4uLk5BTUQgICAKICAgIDAwMTA6IDQxIDREIDQ0IDIwIDQyIDQ1IDUy
IDU0IDAxIDAwIDAwIDAwIDQxIDREIDQ0IDIwICBBTUQgQkVSVC4uLi5BTUQgCiAgICAwMDIwOiAw
MSAwMCAwMCAwMCAxNCAwMCAwMCAwMCA5OCA4RSAyRCBBOCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4u
Li0uLi4uLgoKU1NEVCBAIDB4MDAwMDAwMDAwMDAwMDAwMAogICAgMDAwMDogNTMgNTMgNDQgNTQg
QzUgMDUgMDAgMDAgMDIgQUYgNDEgNEQgNDQgMDAgMDAgMDAgIFNTRFQuLi4uLi5BTUQuLi4KICAg
IDAwMTA6IDQzIDUwIDU1IDUzIDUzIDQ0IDU0IDAwIDAxIDAwIDAwIDAwIDQxIDREIDQ5IDIwICBD
UFVTU0RULi4uLi5BTUkgCiAgICAwMDIwOiAwMSAwMCAwMCAwMCAxMCBDMCA1QSAwMCAwMCA1QyA1
RiA1MyA0MiA1RiA1QiA4MiAgLi4uLi4uWi4uXF9TQl9bLgogICAgMDAzMDogQzUgNTkgMDAgMDAg
NTAgNEMgNTQgNDYgMDggNUYgNDggNDkgNDQgMEQgNDEgNDMgIC5ZLi5QTFRGLl9ISUQuQUMKICAg
IDAwNDA6IDUwIDQ5IDMwIDMwIDMxIDMwIDAwIDA4IDVGIDQzIDQ5IDQ0IDBDIDQxIEQwIDBBICBQ
STAwMTAuLl9DSUQuQS4uCiAgICAwMDUwOiAwNSAwOCA1RiA1NSA0OSA0NCAwMSA1QiA4MiAxQSA0
MyAzMCAzMCAzMCAwOCA1RiAgLi5fVUlELlsuLkMwMDAuXwogICAgMDA2MDogNDggNDkgNDQgMEQg
NDEgNDMgNTAgNDkgMzAgMzAgMzAgMzcgMDAgMDggNUYgNTUgIEhJRC5BQ1BJMDAwNy4uX1UKICAg
IDAwNzA6IDQ5IDQ0IDAwIDVCIDgyIDFBIDQzIDMwIDMwIDMxIDA4IDVGIDQ4IDQ5IDQ0IDBEICBJ
RC5bLi5DMDAxLl9ISUQuCiAgICAwMDgwOiA0MSA0MyA1MCA0OSAzMCAzMCAzMCAzNyAwMCAwOCA1
RiA1NSA0OSA0NCAwMSA1QiAgQUNQSTAwMDcuLl9VSUQuWwogICAgMDA5MDogODIgMUIgNDMgMzAg
MzAgMzIgMDggNUYgNDggNDkgNDQgMEQgNDEgNDMgNTAgNDkgIC4uQzAwMi5fSElELkFDUEkKICAg
IDAwQTA6IDMwIDMwIDMwIDM3IDAwIDA4IDVGIDU1IDQ5IDQ0IDBBIDAyIDVCIDgyIDFCIDQzICAw
MDA3Li5fVUlELi5bLi5DCiAgICAwMEIwOiAzMCAzMCAzMyAwOCA1RiA0OCA0OSA0NCAwRCA0MSA0
MyA1MCA0OSAzMCAzMCAzMCAgMDAzLl9ISUQuQUNQSTAwMAogICAgMDBDMDogMzcgMDAgMDggNUYg
NTUgNDkgNDQgMEEgMDMgNUIgODIgMUIgNDMgMzAgMzAgMzQgIDcuLl9VSUQuLlsuLkMwMDQKICAg
IDAwRDA6IDA4IDVGIDQ4IDQ5IDQ0IDBEIDQxIDQzIDUwIDQ5IDMwIDMwIDMwIDM3IDAwIDA4ICAu
X0hJRC5BQ1BJMDAwNy4uCiAgICAwMEUwOiA1RiA1NSA0OSA0NCAwQSAwNCA1QiA4MiAxQiA0MyAz
MCAzMCAzNSAwOCA1RiA0OCAgX1VJRC4uWy4uQzAwNS5fSAogICAgMDBGMDogNDkgNDQgMEQgNDEg
NDMgNTAgNDkgMzAgMzAgMzAgMzcgMDAgMDggNUYgNTUgNDkgIElELkFDUEkwMDA3Li5fVUkKICAg
IDAxMDA6IDQ0IDBBIDA1IDVCIDgyIDFCIDQzIDMwIDMwIDM2IDA4IDVGIDQ4IDQ5IDQ0IDBEICBE
Li5bLi5DMDA2Ll9ISUQuCiAgICAwMTEwOiA0MSA0MyA1MCA0OSAzMCAzMCAzMCAzNyAwMCAwOCA1
RiA1NSA0OSA0NCAwQSAwNiAgQUNQSTAwMDcuLl9VSUQuLgogICAgMDEyMDogNUIgODIgMUIgNDMg
MzAgMzAgMzcgMDggNUYgNDggNDkgNDQgMEQgNDEgNDMgNTAgIFsuLkMwMDcuX0hJRC5BQ1AKICAg
IDAxMzA6IDQ5IDMwIDMwIDMwIDM3IDAwIDA4IDVGIDU1IDQ5IDQ0IDBBIDA3IDVCIDgyIDFCICBJ
MDAwNy4uX1VJRC4uWy4uCiAgICAwMTQwOiA0MyAzMCAzMCAzOCAwOCA1RiA0OCA0OSA0NCAwRCA0
MSA0MyA1MCA0OSAzMCAzMCAgQzAwOC5fSElELkFDUEkwMAogICAgMDE1MDogMzAgMzcgMDAgMDgg
NUYgNTUgNDkgNDQgMEEgMDggNUIgODIgMUIgNDMgMzAgMzAgIDA3Li5fVUlELi5bLi5DMDAKICAg
IDAxNjA6IDM5IDA4IDVGIDQ4IDQ5IDQ0IDBEIDQxIDQzIDUwIDQ5IDMwIDMwIDMwIDM3IDAwICA5
Ll9ISUQuQUNQSTAwMDcuCiAgICAwMTcwOiAwOCA1RiA1NSA0OSA0NCAwQSAwOSA1QiA4MiAxQiA0
MyAzMCAzMCA0MSAwOCA1RiAgLl9VSUQuLlsuLkMwMEEuXwogICAgMDE4MDogNDggNDkgNDQgMEQg
NDEgNDMgNTAgNDkgMzAgMzAgMzAgMzcgMDAgMDggNUYgNTUgIEhJRC5BQ1BJMDAwNy4uX1UKICAg
IDAxOTA6IDQ5IDQ0IDBBIDBBIDVCIDgyIDFCIDQzIDMwIDMwIDQyIDA4IDVGIDQ4IDQ5IDQ0ICBJ
RC4uWy4uQzAwQi5fSElECiAgICAwMUEwOiAwRCA0MSA0MyA1MCA0OSAzMCAzMCAzMCAzNyAwMCAw
OCA1RiA1NSA0OSA0NCAwQSAgLkFDUEkwMDA3Li5fVUlELgogICAgMDFCMDogMEIgNUIgODIgMUIg
NDMgMzAgMzAgNDMgMDggNUYgNDggNDkgNDQgMEQgNDEgNDMgIC5bLi5DMDBDLl9ISUQuQUMKICAg
IDAxQzA6IDUwIDQ5IDMwIDMwIDMwIDM3IDAwIDA4IDVGIDU1IDQ5IDQ0IDBBIDBDIDVCIDgyICBQ
STAwMDcuLl9VSUQuLlsuCiAgICAwMUQwOiAxQiA0MyAzMCAzMCA0NCAwOCA1RiA0OCA0OSA0NCAw
RCA0MSA0MyA1MCA0OSAzMCAgLkMwMEQuX0hJRC5BQ1BJMAogICAgMDFFMDogMzAgMzAgMzcgMDAg
MDggNUYgNTUgNDkgNDQgMEEgMEQgNUIgODIgMUIgNDMgMzAgIDAwNy4uX1VJRC4uWy4uQzAKICAg
IDAxRjA6IDMwIDQ1IDA4IDVGIDQ4IDQ5IDQ0IDBEIDQxIDQzIDUwIDQ5IDMwIDMwIDMwIDM3ICAw
RS5fSElELkFDUEkwMDA3CiAgICAwMjAwOiAwMCAwOCA1RiA1NSA0OSA0NCAwQSAwRSA1QiA4MiAx
QiA0MyAzMCAzMCA0NiAwOCAgLi5fVUlELi5bLi5DMDBGLgogICAgMDIxMDogNUYgNDggNDkgNDQg
MEQgNDEgNDMgNTAgNDkgMzAgMzAgMzAgMzcgMDAgMDggNUYgIF9ISUQuQUNQSTAwMDcuLl8KICAg
IDAyMjA6IDU1IDQ5IDQ0IDBBIDBGIDVCIDgyIDFCIDQzIDMwIDMxIDMwIDA4IDVGIDQ4IDQ5ICBV
SUQuLlsuLkMwMTAuX0hJCiAgICAwMjMwOiA0NCAwRCA0MSA0MyA1MCA0OSAzMCAzMCAzMCAzNyAw
MCAwOCA1RiA1NSA0OSA0NCAgRC5BQ1BJMDAwNy4uX1VJRAogICAgMDI0MDogMEEgMTAgNUIgODIg
MUIgNDMgMzAgMzEgMzEgMDggNUYgNDggNDkgNDQgMEQgNDEgIC4uWy4uQzAxMS5fSElELkEKICAg
IDAyNTA6IDQzIDUwIDQ5IDMwIDMwIDMwIDM3IDAwIDA4IDVGIDU1IDQ5IDQ0IDBBIDExIDVCICBD
UEkwMDA3Li5fVUlELi5bCiAgICAwMjYwOiA4MiAxQiA0MyAzMCAzMSAzMiAwOCA1RiA0OCA0OSA0
NCAwRCA0MSA0MyA1MCA0OSAgLi5DMDEyLl9ISUQuQUNQSQogICAgMDI3MDogMzAgMzAgMzAgMzcg
MDAgMDggNUYgNTUgNDkgNDQgMEEgMTIgNUIgODIgMUIgNDMgIDAwMDcuLl9VSUQuLlsuLkMKICAg
IDAyODA6IDMwIDMxIDMzIDA4IDVGIDQ4IDQ5IDQ0IDBEIDQxIDQzIDUwIDQ5IDMwIDMwIDMwICAw
MTMuX0hJRC5BQ1BJMDAwCiAgICAwMjkwOiAzNyAwMCAwOCA1RiA1NSA0OSA0NCAwQSAxMyA1QiA4
MiAxQiA0MyAzMCAzMSAzNCAgNy4uX1VJRC4uWy4uQzAxNAogICAgMDJBMDogMDggNUYgNDggNDkg
NDQgMEQgNDEgNDMgNTAgNDkgMzAgMzAgMzAgMzcgMDAgMDggIC5fSElELkFDUEkwMDA3Li4KICAg
IDAyQjA6IDVGIDU1IDQ5IDQ0IDBBIDE0IDVCIDgyIDFCIDQzIDMwIDMxIDM1IDA4IDVGIDQ4ICBf
VUlELi5bLi5DMDE1Ll9ICiAgICAwMkMwOiA0OSA0NCAwRCA0MSA0MyA1MCA0OSAzMCAzMCAzMCAz
NyAwMCAwOCA1RiA1NSA0OSAgSUQuQUNQSTAwMDcuLl9VSQogICAgMDJEMDogNDQgMEEgMTUgNUIg
ODIgMUIgNDMgMzAgMzEgMzYgMDggNUYgNDggNDkgNDQgMEQgIEQuLlsuLkMwMTYuX0hJRC4KICAg
IDAyRTA6IDQxIDQzIDUwIDQ5IDMwIDMwIDMwIDM3IDAwIDA4IDVGIDU1IDQ5IDQ0IDBBIDE2ICBB
Q1BJMDAwNy4uX1VJRC4uCiAgICAwMkYwOiA1QiA4MiAxQiA0MyAzMCAzMSAzNyAwOCA1RiA0OCA0
OSA0NCAwRCA0MSA0MyA1MCAgWy4uQzAxNy5fSElELkFDUAogICAgMDMwMDogNDkgMzAgMzAgMzAg
MzcgMDAgMDggNUYgNTUgNDkgNDQgMEEgMTcgNUIgODIgMUIgIEkwMDA3Li5fVUlELi5bLi4KICAg
IDAzMTA6IDQzIDMwIDMxIDM4IDA4IDVGIDQ4IDQ5IDQ0IDBEIDQxIDQzIDUwIDQ5IDMwIDMwICBD
MDE4Ll9ISUQuQUNQSTAwCiAgICAwMzIwOiAzMCAzNyAwMCAwOCA1RiA1NSA0OSA0NCAwQSAxOCA1
QiA4MiAxQiA0MyAzMCAzMSAgMDcuLl9VSUQuLlsuLkMwMQogICAgMDMzMDogMzkgMDggNUYgNDgg
NDkgNDQgMEQgNDEgNDMgNTAgNDkgMzAgMzAgMzAgMzcgMDAgIDkuX0hJRC5BQ1BJMDAwNy4KICAg
IDAzNDA6IDA4IDVGIDU1IDQ5IDQ0IDBBIDE5IDVCIDgyIDFCIDQzIDMwIDMxIDQxIDA4IDVGICAu
X1VJRC4uWy4uQzAxQS5fCiAgICAwMzUwOiA0OCA0OSA0NCAwRCA0MSA0MyA1MCA0OSAzMCAzMCAz
MCAzNyAwMCAwOCA1RiA1NSAgSElELkFDUEkwMDA3Li5fVQogICAgMDM2MDogNDkgNDQgMEEgMUEg
NUIgODIgMUIgNDMgMzAgMzEgNDIgMDggNUYgNDggNDkgNDQgIElELi5bLi5DMDFCLl9ISUQKICAg
IDAzNzA6IDBEIDQxIDQzIDUwIDQ5IDMwIDMwIDMwIDM3IDAwIDA4IDVGIDU1IDQ5IDQ0IDBBICAu
QUNQSTAwMDcuLl9VSUQuCiAgICAwMzgwOiAxQiA1QiA4MiAxQiA0MyAzMCAzMSA0MyAwOCA1RiA0
OCA0OSA0NCAwRCA0MSA0MyAgLlsuLkMwMUMuX0hJRC5BQwogICAgMDM5MDogNTAgNDkgMzAgMzAg
MzAgMzcgMDAgMDggNUYgNTUgNDkgNDQgMEEgMUMgNUIgODIgIFBJMDAwNy4uX1VJRC4uWy4KICAg
IDAzQTA6IDFCIDQzIDMwIDMxIDQ0IDA4IDVGIDQ4IDQ5IDQ0IDBEIDQxIDQzIDUwIDQ5IDMwICAu
QzAxRC5fSElELkFDUEkwCiAgICAwM0IwOiAzMCAzMCAzNyAwMCAwOCA1RiA1NSA0OSA0NCAwQSAx
RCA1QiA4MiAxQiA0MyAzMCAgMDA3Li5fVUlELi5bLi5DMAogICAgMDNDMDogMzEgNDUgMDggNUYg
NDggNDkgNDQgMEQgNDEgNDMgNTAgNDkgMzAgMzAgMzAgMzcgIDFFLl9ISUQuQUNQSTAwMDcKICAg
IDAzRDA6IDAwIDA4IDVGIDU1IDQ5IDQ0IDBBIDFFIDVCIDgyIDFCIDQzIDMwIDMxIDQ2IDA4ICAu
Ll9VSUQuLlsuLkMwMUYuCiAgICAwM0UwOiA1RiA0OCA0OSA0NCAwRCA0MSA0MyA1MCA0OSAzMCAz
MCAzMCAzNyAwMCAwOCA1RiAgX0hJRC5BQ1BJMDAwNy4uXwogICAgMDNGMDogNTUgNDkgNDQgMEEg
MUYgNUIgODIgMUIgNDMgMzAgMzIgMzAgMDggNUYgNDggNDkgIFVJRC4uWy4uQzAyMC5fSEkKICAg
IDA0MDA6IDQ0IDBEIDQxIDQzIDUwIDQ5IDMwIDMwIDMwIDM3IDAwIDA4IDVGIDU1IDQ5IDQ0ICBE
LkFDUEkwMDA3Li5fVUlECiAgICAwNDEwOiAwQSAyMCA1QiA4MiAxQiA0MyAzMCAzMiAzMSAwOCA1
RiA0OCA0OSA0NCAwRCA0MSAgLiBbLi5DMDIxLl9ISUQuQQogICAgMDQyMDogNDMgNTAgNDkgMzAg
MzAgMzAgMzcgMDAgMDggNUYgNTUgNDkgNDQgMEEgMjEgNUIgIENQSTAwMDcuLl9VSUQuIVsKICAg
IDA0MzA6IDgyIDFCIDQzIDMwIDMyIDMyIDA4IDVGIDQ4IDQ5IDQ0IDBEIDQxIDQzIDUwIDQ5ICAu
LkMwMjIuX0hJRC5BQ1BJCiAgICAwNDQwOiAzMCAzMCAzMCAzNyAwMCAwOCA1RiA1NSA0OSA0NCAw
QSAyMiA1QiA4MiAxQiA0MyAgMDAwNy4uX1VJRC4iWy4uQwogICAgMDQ1MDogMzAgMzIgMzMgMDgg
NUYgNDggNDkgNDQgMEQgNDEgNDMgNTAgNDkgMzAgMzAgMzAgIDAyMy5fSElELkFDUEkwMDAKICAg
IDA0NjA6IDM3IDAwIDA4IDVGIDU1IDQ5IDQ0IDBBIDIzIDVCIDgyIDFCIDQzIDMwIDMyIDM0ICA3
Li5fVUlELiNbLi5DMDI0CiAgICAwNDcwOiAwOCA1RiA0OCA0OSA0NCAwRCA0MSA0MyA1MCA0OSAz
MCAzMCAzMCAzNyAwMCAwOCAgLl9ISUQuQUNQSTAwMDcuLgogICAgMDQ4MDogNUYgNTUgNDkgNDQg
MEEgMjQgNUIgODIgMUIgNDMgMzAgMzIgMzUgMDggNUYgNDggIF9VSUQuJFsuLkMwMjUuX0gKICAg
IDA0OTA6IDQ5IDQ0IDBEIDQxIDQzIDUwIDQ5IDMwIDMwIDMwIDM3IDAwIDA4IDVGIDU1IDQ5ICBJ
RC5BQ1BJMDAwNy4uX1VJCiAgICAwNEEwOiA0NCAwQSAyNSA1QiA4MiAxQiA0MyAzMCAzMiAzNiAw
OCA1RiA0OCA0OSA0NCAwRCAgRC4lWy4uQzAyNi5fSElELgogICAgMDRCMDogNDEgNDMgNTAgNDkg
MzAgMzAgMzAgMzcgMDAgMDggNUYgNTUgNDkgNDQgMEEgMjYgIEFDUEkwMDA3Li5fVUlELiYKICAg
IDA0QzA6IDVCIDgyIDFCIDQzIDMwIDMyIDM3IDA4IDVGIDQ4IDQ5IDQ0IDBEIDQxIDQzIDUwICBb
Li5DMDI3Ll9ISUQuQUNQCiAgICAwNEQwOiA0OSAzMCAzMCAzMCAzNyAwMCAwOCA1RiA1NSA0OSA0
NCAwQSAyNyA1QiA4MiAxQiAgSTAwMDcuLl9VSUQuJ1suLgogICAgMDRFMDogNDMgMzAgMzIgMzgg
MDggNUYgNDggNDkgNDQgMEQgNDEgNDMgNTAgNDkgMzAgMzAgIEMwMjguX0hJRC5BQ1BJMDAKICAg
IDA0RjA6IDMwIDM3IDAwIDA4IDVGIDU1IDQ5IDQ0IDBBIDI4IDVCIDgyIDFCIDQzIDMwIDMyICAw
Ny4uX1VJRC4oWy4uQzAyCiAgICAwNTAwOiAzOSAwOCA1RiA0OCA0OSA0NCAwRCA0MSA0MyA1MCA0
OSAzMCAzMCAzMCAzNyAwMCAgOS5fSElELkFDUEkwMDA3LgogICAgMDUxMDogMDggNUYgNTUgNDkg
NDQgMEEgMjkgNUIgODIgMUIgNDMgMzAgMzIgNDEgMDggNUYgIC5fVUlELilbLi5DMDJBLl8KICAg
IDA1MjA6IDQ4IDQ5IDQ0IDBEIDQxIDQzIDUwIDQ5IDMwIDMwIDMwIDM3IDAwIDA4IDVGIDU1ICBI
SUQuQUNQSTAwMDcuLl9VCiAgICAwNTMwOiA0OSA0NCAwQSAyQSA1QiA4MiAxQiA0MyAzMCAzMiA0
MiAwOCA1RiA0OCA0OSA0NCAgSUQuKlsuLkMwMkIuX0hJRAogICAgMDU0MDogMEQgNDEgNDMgNTAg
NDkgMzAgMzAgMzAgMzcgMDAgMDggNUYgNTUgNDkgNDQgMEEgIC5BQ1BJMDAwNy4uX1VJRC4KICAg
IDA1NTA6IDJCIDVCIDgyIDFCIDQzIDMwIDMyIDQzIDA4IDVGIDQ4IDQ5IDQ0IDBEIDQxIDQzICAr
Wy4uQzAyQy5fSElELkFDCiAgICAwNTYwOiA1MCA0OSAzMCAzMCAzMCAzNyAwMCAwOCA1RiA1NSA0
OSA0NCAwQSAyQyA1QiA4MiAgUEkwMDA3Li5fVUlELixbLgogICAgMDU3MDogMUIgNDMgMzAgMzIg
NDQgMDggNUYgNDggNDkgNDQgMEQgNDEgNDMgNTAgNDkgMzAgIC5DMDJELl9ISUQuQUNQSTAKICAg
IDA1ODA6IDMwIDMwIDM3IDAwIDA4IDVGIDU1IDQ5IDQ0IDBBIDJEIDVCIDgyIDFCIDQzIDMwICAw
MDcuLl9VSUQuLVsuLkMwCiAgICAwNTkwOiAzMiA0NSAwOCA1RiA0OCA0OSA0NCAwRCA0MSA0MyA1
MCA0OSAzMCAzMCAzMCAzNyAgMkUuX0hJRC5BQ1BJMDAwNwogICAgMDVBMDogMDAgMDggNUYgNTUg
NDkgNDQgMEEgMkUgNUIgODIgMUIgNDMgMzAgMzIgNDYgMDggIC4uX1VJRC4uWy4uQzAyRi4KICAg
IDA1QjA6IDVGIDQ4IDQ5IDQ0IDBEIDQxIDQzIDUwIDQ5IDMwIDMwIDMwIDM3IDAwIDA4IDVGICBf
SElELkFDUEkwMDA3Li5fCiAgICAwNUMwOiA1NSA0OSA0NCAwQSAyRiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgVUlELi8KCkZBQ1AgQCAweDAwMDAwMDAwMDAwMDAwMDAKICAgIDAw
MDA6IDQ2IDQxIDQzIDUwIDE0IDAxIDAwIDAwIDA2IEQzIDQxIDREIDQ0IDIwIDIwIDIwICBGQUNQ
Li4uLi4uQU1EICAgCiAgICAwMDEwOiA0MSAyMCA0RCAyMCA0OSAyMCAwMCAwMCAwMSAwMCAwMCAw
MCA0MSA0RCA0OSAyMCAgQSBNIEkgLi4uLi4uQU1JIAogICAgMDAyMDogMTMgMDAgMDEgMDAgMDAg
QTAgNDUgQTkgMDAgRTAgNDYgQTcgMDAgMDMgMDkgMDAgIC4uLi4uLkUuLi5GLi4uLi4KICAgIDAw
MzA6IEIyIDAwIDAwIDAwIEEwIEExIDAwIDAwIDAwIDA4IDAwIDAwIDAwIDAwIDAwIDAwICAuLi4u
Li4uLi4uLi4uLi4uCiAgICAwMDQwOiAwNCAwOCAwMCAwMCAwMCAwMCAwMCAwMCBCNCAwMCAwMCAw
MCAwOCAwOCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMDA1MDogMjAgMDggMDAgMDAgMDAg
MDAgMDAgMDAgMDQgMDIgMDEgMDQgMDggMDAgMDAgMDAgICAuLi4uLi4uLi4uLi4uLi4KICAgIDAw
NjA6IDY0IDAwIEU5IDAzIDAwIDA0IDEwIDAwIDAxIDAzIDBEIDAwIDMyIDAxIDAwIDAwICBkLi4u
Li4uLi4uLi4yLi4uCiAgICAwMDcwOiBBRCBDNSAwMyAwMCAwMSAwOCAwMCAwMCBCMiAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMDA4MDogQkUgMDAgMDAgMDUgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgRTAgNDYgQTcgIC4uLi4uLi4uLi4uLi4uRi4KICAgIDAw
OTA6IDAwIDAwIDAwIDAwIDAxIDIwIDAwIDAyIDAwIDA4IDAwIDAwIDAwIDAwIDAwIDAwICAuLi4u
LiAuLi4uLi4uLi4uCiAgICAwMEEwOiAwMSAwMCAwMCAwMiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMSAxMCAwMCAwMiAgLi4uLi4uLi4uLi4uLi4uLgogICAgMDBCMDogMDQgMDggMDAgMDAgMDAg
MDAgMDAgMDAgMDEgMDAgMDAgMDIgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KICAgIDAw
QzA6IDAwIDAwIDAwIDAwIDAxIDA4IDAwIDAxIEI0IDAwIDAwIDAwIDAwIDAwIDAwIDAwICAuLi4u
Li4uLi4uLi4uLi4uCiAgICAwMEQwOiAwMSAyMCAwMCAwMyAwOCAwOCAwMCAwMCAwMCAwMCAwMCAw
MCAwMSA0MCAwMCAwMSAgLiAuLi4uLi4uLi4uLkAuLgogICAgMDBFMDogMjAgMDggMDAgMDAgMDAg
MDAgMDAgMDAgMDEgMDAgMDAgMDEgMDAgMDAgMDAgMDAgICAuLi4uLi4uLi4uLi4uLi4KICAgIDAw
RjA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAuLi4u
Li4uLi4uLi4uLi4uCiAgICAwMTAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMDExMDogMDAgMDAgMDAgMDAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLi4KCkZQRFQgQCAweDAwMDAwMDAw
MDAwMDAwMDAKICAgIDAwMDA6IDQ2IDUwIDQ0IDU0IDQ0IDAwIDAwIDAwIDAxIDFGIDQxIDREIDQ0
IDIwIDIwIDIwICBGUERURC4uLi4uQU1EICAgCiAgICAwMDEwOiA0MSAyMCA0RCAyMCA0OSAyMCAw
MCAwMCAwOSAyMCAwNyAwMSA0MSA0RCA0OSAyMCAgQSBNIEkgLi4uIC4uQU1JIAogICAgMDAyMDog
MTMgMDAgMDAgMDEgMDAgMDAgMTAgMDEgMDAgMDAgMDAgMDAgMDAgNTAgNEMgQTYgIC4uLi4uLi4u
Li4uLi5QTC4KICAgIDAwMzA6IDAwIDAwIDAwIDAwIDAxIDAwIDEwIDAxIDAwIDAwIDAwIDAwIDAw
IDcwIDRFIEE2ICAuLi4uLi4uLi4uLi4ucE4uCiAgICAwMDQwOiAwMCAwMCAwMCAwMCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uLgoKV1BCVCBAIDB4MDAwMDAwMDAwMDAw
MDAwMAogICAgMDAwMDogNTcgNTAgNDIgNTQgMzYgMDAgMDAgMDAgMDEgN0MgNDEgNEQgNDQgMDAg
MDAgMDAgIFdQQlQ2Li4uLnxBTUQuLi4KICAgIDAwMTA6IDQxIDIwIDREIDIwIDQ5IDAwIDAwIDAw
IDAxIDAwIDAwIDAwIDREIDUzIDQ2IDU0ICBBIE0gSS4uLi4uLi5NU0ZUCiAgICAwMDIwOiAxMyAw
MCAwMSAwMCBFOCBERSBCRSAwMCAzNiBGMCA4NCBBNiAwMCAwMCAwMCAwMCAgLi4uLi4uLi42Li4u
Li4uLgogICAgMDAzMDogMDEgMDEgMDIgMDAgMDAgMDAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC4uLi4uLgoKU1NEVCBAIDB4MDAwMDAwMDAwMDAwMDAwMAogICAgMDAwMDogNTMgNTMg
NDQgNTQgQ0MgMDkgMDAgMDAgMDIgRTYgNDEgNEQgNDQgMDAgMDAgMDAgIFNTRFQuLi4uLi5BTUQu
Li4KICAgIDAwMTA6IDQyIDRGIDU1IDRDIDQ0IDQ1IDUyIDQ3IDAyIDAwIDAwIDAwIDREIDUzIDQ2
IDU0ICBCT1VMREVSRy4uLi5NU0ZUCiAgICAwMDIwOiAwMCAwMCAwMCAwNCAxMCA0NyA5QSA1QyA1
RiA1MyA0MiA1RiAwOCA0MSA0NyA1MiAgLi4uLi5HLlxfU0JfLkFHUgogICAgMDAzMDogNDIgMEMg
MDAgMDAgMDAgRTAgMDggNDEgNDQgNDIgNDcgMTEgMDQgMEIgMDAgMDEgIEIuLi4uLi5BREJHLi4u
Li4KICAgIDAwNDA6IDVCIDAxIDQxIDREIDMwIDMwIDAwIDVCIDgwIDQxIDMwIDMwIDMxIDAxIDBB
IDgwICBbLkFNMDAuWy5BMDAxLi4uCiAgICAwMDUwOiAwQSAwNCA1QiA4MSAwQiA0MSAzMCAzMCAz
MSAwMyA0MSAzMCAzMCAzMiAyMCA1QiAgLi5bLi5BMDAxLkEwMDIgWwogICAgMDA2MDogODAgNDEg
MzAgMzAgMzMgMDEgMEEgODAgMEEgMDIgNUIgODEgMEIgNDEgMzAgMzAgIC5BMDAzLi4uLi5bLi5B
MDAKICAgIDAwNzA6IDMzIDAyIDQxIDMwIDMwIDM0IDEwIDVCIDgwIDQxIDMwIDMwIDM1IDAxIDBB
IDgwICAzLkEwMDQuWy5BMDA1Li4uCiAgICAwMDgwOiAwQSAwMSA1QiA4MSAwQiA0MSAzMCAzMCAz
NSAwMSA0MSAzMCAzMCAzNiAwOCAxNCAgLi5bLi5BMDA1LkEwMDYuLgogICAgMDA5MDogMjcgNDEg
MzAgMzAgMzcgMDEgQTAgMjAgOTMgODMgODggNUMgMkUgNUYgNTMgNDIgICdBMDA3Li4gLi4uXC5f
U0IKICAgIDAwQTA6IDVGIDQxIDQ0IDQxIDU0IDBBIDA4IDAwIDBBIDAxIDcwIDdEIDY4IDBDIDAw
IDAwICBfQURBVC4uLi4ucH1oLi4uCiAgICAwMEIwOiAwMCBCMCAwMCA0MSAwMSAzMCAzMiAwOCA0
MSA0NCA0MSA1NCAxMSA0NSA1MiAwQiAgLi4uQS4wMi5BREFULkVSLgogICAgMDBDMDogNjAgMDYg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIGAuLi4uLi4uLi4uLi4u
Li4KICAgIDAwRDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwMEUwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMDBGMDogMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDAxMDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwMTEwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMDEyMDogMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDAxMzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwMTQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMDE1MDogMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDAxNjA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwMTcwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMDE4MDogMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDAxOTA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwMUEwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMDFCMDogMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDAxQzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwMUQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMDFFMDogMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDAxRjA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwMjAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMDIxMDogMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDAyMjA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwMjMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMDI0MDogMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDAyNTA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwMjYwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMDI3MDogMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDAyODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwMjkwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMDJBMDogMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDAyQjA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwMkMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMDJEMDogMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDAyRTA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwMkYwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMDMwMDogMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDAzMTA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwMzIwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMDMzMDogMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDAzNDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwMzUwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMDM2MDogMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDAzNzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwMzgwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMDM5MDogMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDAzQTA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwM0IwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMDNDMDogMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDAzRDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwM0UwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMDNGMDogMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDA0MDA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwNDEwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMDQyMDogMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDA0MzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwNDQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMDQ1MDogMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDA0NjA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwNDcwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMDQ4MDogMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDA0OTA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwNEEwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMDRCMDogMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDA0QzA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwNEQwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMDRFMDogMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDA0RjA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwNTAwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMDUxMDogMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDA1MjA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwNTMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMDU0MDogMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDA1NTA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwNTYwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMDU3MDogMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDA1ODA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwNTkwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMDVBMDogMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDA1QjA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAw
IDAwICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwNUMwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMDVEMDogMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4u
Li4KICAgIDA1RTA6IDAwIDAwIDVCIDgwIDQxIDMwIDMzIDMyIDAwIDQxIDQ3IDUyIDQyIDBCIDAw
IDEwICAuLlsuQTAzMi5BR1JCLi4uCiAgICAwNUYwOiA1QiA4MSAwRSA0MSAzMCAzMyAzMiAxMyAw
MCA0MCA1QyA0MSAzMCAzMyAzMyAyMCAgWy4uQTAzMi4uQFxBMDMzIAogICAgMDYwMDogNUIgODcg
MTcgNDEgMzAgMzMgMzIgNDEgMzAgMzMgMzMgMEMgMzAgMDUgQjEgMDMgIFsuLkEwMzJBMDMzLjAu
Li4KICAgIDA2MTA6IDEzIDAwIDQwIDVFIDQxIDMwIDMzIDMxIDIwIDVCIDg3IDE3IDQxIDMwIDMz
IDMyICAuLkBeQTAzMSBbLi5BMDMyCiAgICAwNjIwOiA0MSAzMCAzMyAzMyAwQyA3QyAwNSBCMSAw
MyAxMyAwMCA0MCA1RSA0MSAzMCAzMiAgQTAzMy58Li4uLi5AXkEwMgogICAgMDYzMDogMzQgMjAg
NUIgODcgMTcgNDEgMzAgMzMgMzIgNDEgMzAgMzMgMzMgMEMgQzQgMDkgIDQgWy4uQTAzMkEwMzMu
Li4KICAgIDA2NDA6IEIxIDAzIDEzIDAwIDQwIDVFIDQxIDMwIDMyIDM1IDIwIDVCIDg3IDE3IDQx
IDMwICAuLi4uQF5BMDI1IFsuLkEwCiAgICAwNjUwOiAzMyAzMiA0MSAzMCAzMyAzMyAwQyBDOCAw
OSBCMSAwMyAxMyAwMCA0MCA1RSA0MSAgMzJBMDMzLi4uLi4uLkBeQQogICAgMDY2MDogMzAgMzIg
MzYgMjAgNUIgODcgMTcgNDEgMzAgMzMgMzIgNDEgMzAgMzMgMzMgMEMgIDAyNiBbLi5BMDMyQTAz
My4KICAgIDA2NzA6IENDIDA5IEIxIDAzIDEzIDAwIDQwIDVFIDQxIDMwIDMyIDM3IDIwIDVCIDg3
IDE3ICAuLi4uLi5AXkEwMjcgWy4uCiAgICAwNjgwOiA0MSAzMCAzMyAzMiA0MSAzMCAzMyAzMyAw
QyBEMCAwOSBCMSAwMyAxMyAwMCA0MCAgQTAzMkEwMzMuLi4uLi4uQAogICAgMDY5MDogNUUgNDEg
MzAgMzIgMzggMjAgNUIgODcgMTcgNDEgMzAgMzMgMzIgNDEgMzAgMzMgIF5BMDI4IFsuLkEwMzJB
MDMKICAgIDA2QTA6IDMzIDBDIEQ0IDA5IEIxIDAzIDEzIDAwIDQwIDVFIDQxIDMwIDMyIDM5IDIw
IDVCICAzLi4uLi4uLkBeQTAyOSBbCiAgICAwNkIwOiA4NyAxNyA0MSAzMCAzMyAzMiA0MSAzMCAz
MyAzMyAwQyBEOCAwOSBCMSAwMyAxMyAgLi5BMDMyQTAzMy4uLi4uLgogICAgMDZDMDogMDAgNDAg
NUUgNDEgMzAgMzMgMzAgMjAgMTQgNDcgMEEgNDEgMzAgMzEgMzcgMEEgIC5AXkEwMzAgLkcuQTAx
Ny4KICAgIDA2RDA6IDVCIDIzIDVDIDJFIDVGIDUzIDQyIDVGIDQxIDREIDMwIDMwIEZGIEZGIDhB
IDY5ICBbI1wuX1NCX0FNMDAuLi5pCiAgICAwNkUwOiAwQSAwMCA0MSAzMCAzMSAzOCA4QSA2OSAw
QSAwNCA0MSAzMCAzMSAzOSA4QSA2OSAgLi5BMDE4LmkuLkEwMTkuaQogICAgMDZGMDogMEEgMDgg
NDEgMzAgMzIgMzAgOEEgNjkgMEEgMEMgNDEgMzAgMzIgMzEgOEEgNjkgIC4uQTAyMC5pLi5BMDIx
LmkKICAgIDA3MDA6IDBBIDEwIDQxIDMwIDMyIDMyIDhBIDY5IDBBIDE0IDQxIDMwIDMyIDMzIDcw
IDBBICAuLkEwMjIuaS4uQTAyM3AuCiAgICAwNzEwOiAwMCA0MSAzMCAzMiAzNCBBMiAwOSA5MiA5
MyA0MSAzMCAzMiAzNCAwQSAwMCA3MCAgLkEwMjQuLi4uQTAyNC4ucAogICAgMDcyMDogNDEgMzAg
MzEgMzggNDEgMzAgMzIgMzUgNzAgNDEgMzAgMzEgMzkgNDEgMzAgMzIgIEEwMThBMDI1cEEwMTlB
MDIKICAgIDA3MzA6IDM2IDcwIDQxIDMwIDMyIDMwIDQxIDMwIDMyIDM3IDcwIDQxIDMwIDMyIDMx
IDQxICA2cEEwMjBBMDI3cEEwMjFBCiAgICAwNzQwOiAzMCAzMiAzOCA3MCA0MSAzMCAzMiAzMiA0
MSAzMCAzMiAzOSA3MCA0MSAzMCAzMiAgMDI4cEEwMjJBMDI5cEEwMgogICAgMDc1MDogMzMgNDEg
MzAgMzMgMzAgNzAgNjggNDEgMzAgMzMgMzEgQTIgMDggOTMgNDEgMzAgIDNBMDMwcGhBMDMxLi4u
QTAKICAgIDA3NjA6IDMyIDM0IDBBIDAwIDVCIDI3IDVDIDJFIDVGIDUzIDQyIDVGIDQxIDREIDMw
IDMwICAyNC4uWydcLl9TQl9BTTAwCiAgICAwNzcwOiAxNCAzQSA0MSA0RCA0RSA1MiAwMSA1QiAy
MyA1QyAyRSA1RiA1MyA0MiA1RiA0MSAgLjpBTU5SLlsjXC5fU0JfQQogICAgMDc4MDogNEQgMzAg
MzAgRkYgRkYgNUIgODcgMTMgNDEgMzAgMzMgMzIgNDEgMzAgMzMgMzMgIE0wMC4uWy4uQTAzMkEw
MzMKICAgIDA3OTA6IDY4IDAzIDAwIDQwIDVFIDQxIDMwIDMzIDM0IDIwIDVCIDI3IDVDIDJFIDVG
IDUzICBoLi5AXkEwMzQgWydcLl9TCiAgICAwN0EwOiA0MiA1RiA0MSA0RCAzMCAzMCBBNCA0MSAz
MCAzMyAzNCAxNCAzQiA0MSA0RCA0RSAgQl9BTTAwLkEwMzQuO0FNTgogICAgMDdCMDogNTcgMDIg
NUIgMjMgNUMgMkUgNUYgNTMgNDIgNUYgNDEgNEQgMzAgMzAgRkYgRkYgIFcuWyNcLl9TQl9BTTAw
Li4KICAgIDA3QzA6IDVCIDg3IDEzIDQxIDMwIDMzIDMyIDQxIDMwIDMzIDMzIDY4IDAzIDAwIDQw
IDVFICBbLi5BMDMyQTAzM2guLkBeCiAgICAwN0QwOiA0MSAzMCAzMyAzNSAyMCA3MCA2OSA0MSAz
MCAzMyAzNSA1QiAyNyA1QyAyRSA1RiAgQTAzNSBwaUEwMzVbJ1wuXwogICAgMDdFMDogNTMgNDIg
NUYgNDEgNEQgMzAgMzAgMTQgNDcgMTEgNDEgMzAgMzEgMzYgMDkgOEIgIFNCX0FNMDAuRy5BMDE2
Li4KICAgIDA3RjA6IDY4IDBBIDAwIDQxIDMwIDMzIDM2IDcwIDExIDAzIDBBIDE4IDY3IDhBIDY3
IDBBICBoLi5BMDM2cC4uLi5nLmcuCiAgICAwODAwOiAwMCA0MSAzMCAzMyAzNyA4QSA2NyAwQSAw
NCA0MSAzMCAzMyAzOCA4QSA2NyAwQSAgLkEwMzcuZy4uQTAzOC5nLgogICAgMDgxMDogMDggNDEg
MzAgMzMgMzkgOEEgNjcgMEEgMEMgNDEgMzAgMzQgMzAgOEEgNjcgMEEgIC5BMDM5LmcuLkEwNDAu
Zy4KICAgIDA4MjA6IDEwIDQxIDMwIDM0IDMxIDhBIDY3IDBBIDE0IDQxIDMwIDM0IDMyIDcwIDBB
IDAyICAuQTA0MS5nLi5BMDQycC4uCiAgICAwODMwOiA2MCBBMiA0RCAwQyA5NSA2MCA0MSAzMCAz
MyAzNiA3MCA4MyA4OCA2OCA2MCAwMCAgYC5NLi5gQTAzNnAuLmhgLgogICAgMDg0MDogNjEgNzUg
NjAgNzAgODMgODggNjggNjAgMDAgNjIgNzUgNjAgN0QgNzkgODMgODggIGF1YHAuLmhgLmJ1YH15
Li4KICAgIDA4NTA6IDY4IDYwIDAwIDBBIDA4IDAwIDYyIDYyIDc1IDYwIDdEIDc5IDgzIDg4IDY4
IDYwICBoYC4uLi5iYnVgfXkuLmhgCiAgICAwODYwOiAwMCAwQSAxMCAwMCA2MiA2MiA3NSA2MCA3
RCA3OSA4MyA4OCA2OCA2MCAwMCAwQSAgLi4uLmJidWB9eS4uaGAuLgogICAgMDg3MDogMTggMDAg
NjIgNjIgNzUgNjAgNzAgMEEgMDAgNDEgMzAgMzMgMzcgNzAgMEEgMDAgIC4uYmJ1YHAuLkEwMzdw
Li4KICAgIDA4ODA6IDQxIDMwIDMzIDM4IDcwIDBBIDAwIDQxIDMwIDMzIDM5IDcwIDBBIDAwIDQx
IDMwICBBMDM4cC4uQTAzOXAuLkEwCiAgICAwODkwOiAzNCAzMCA3MCAwQSAwMCA0MSAzMCAzNCAz
MSA3MCAwQSAwMCA0MSAzMCAzNCAzMiAgNDBwLi5BMDQxcC4uQTA0MgogICAgMDhBMDogQTAgMTIg
OTMgNjEgMEEgMDQgNzAgNjIgNDEgMzAgMzMgMzcgNDEgMzAgMzEgMzcgIC4uLmEuLnBiQTAzN0Ew
MTcKICAgIDA4QjA6IDBBIDNFIDY3IEEwIDEyIDkzIDYxIDBBIDBCIDcwIDYyIDQxIDMwIDMzIDM3
IDQxICAuPmcuLi5hLi5wYkEwMzdBCiAgICAwOEMwOiAzMCAzMSAzNyAwQSAzQyA2NyBBMCAxMiA5
MyA2MSAwQSAwQyA3MCA2MiA0MSAzMCAgMDE3LjxnLi4uYS4ucGJBMAogICAgMDhEMDogMzMgMzcg
NDEgMzAgMzEgMzcgMEEgM0QgNjcgQTAgMTIgOTMgNjEgMEEgMTAgNzAgIDM3QTAxNy49Zy4uLmEu
LnAKICAgIDA4RTA6IDYyIDQxIDMwIDMzIDM3IDQxIDMwIDMxIDM3IDBBIDNGIDY3IEEwIDEyIDkz
IDYxICBiQTAzN0EwMTcuP2cuLi5hCiAgICAwOEYwOiAwQSAxMSA3MCA2MiA0MSAzMCAzMyAzNyA0
MSAzMCAzMSAzNyAwQSAyRiA2NyAwOCAgLi5wYkEwMzdBMDE3Li9nLgogICAgMDkwMDogNDEgMzAg
MzAgMzggMEEgMDEgMDggNDEgMzAgMzAgMzkgMEEgMDAgMTQgMDYgNDEgIEEwMDguLi5BMDA5Li4u
LkEKICAgIDA5MTA6IDUwIDU0IDUzIDAxIDE0IDA2IDQxIDU3IDQxIDRCIDAxIDE0IDQwIDBCIDQx
IDRDICBQVFMuLi5BV0FLLi5ALkFMCiAgICAwOTIwOiA0OSA0MiAwMiBBMCA0MyAwOCA5MyA2OCAw
QSAwMCA0MSAzMCAzMCAzNyAwQiA4MCAgSUIuLkMuLmguLkEwMDcuLgogICAgMDkzMDogQUEgOEIg
NjkgMEEgMDAgNDEgMzAgMzEgMzAgOEIgNjkgMEEgMDIgNDEgMzAgMzEgIC4uaS4uQTAxMC5pLi5B
MDEKICAgIDA5NDA6IDMxIDhBIDY5IDBBIDA0IDQxIDMwIDMxIDMyIDcwIDExIDA0IDBCIDAwIDAx
IDYwICAxLmkuLkEwMTJwLi4uLi5gCiAgICAwOTUwOiA4QiA2MCAwQSAwMCA0MSAzMCAzMSAzMyA3
MCA0MSAzMCAzMSAzMCA0MSAzMCAzMSAgLmAuLkEwMTNwQTAxMEEwMQogICAgMDk2MDogMzMgOEIg
NjAgMEEgMDIgNDEgMzAgMzEgMzQgNzAgNDEgMzAgMzEgMzEgNDEgMzAgIDMuYC4uQTAxNHBBMDEx
QTAKICAgIDA5NzA6IDMxIDM0IDhBIDYwIDBBIDA0IDQxIDMwIDMxIDM1IDcwIDQxIDMwIDMxIDMy
IDQxICAxNC5gLi5BMDE1cEEwMTJBCiAgICAwOTgwOiAzMCAzMSAzNSA3QiA0MSAzMCAzMSAzNSA4
MCAwQSAwRiAwMCA0MSAzMCAzMSAzNSAgMDE1e0EwMTUuLi4uQTAxNQogICAgMDk5MDogNzAgMEEg
MDEgNjEgN0QgNDEgMzAgMzEgMzUgNjEgNDEgMzAgMzEgMzUgNDEgMzAgIHAuLmF9QTAxNWFBMDE1
QTAKICAgIDA5QTA6IDMwIDM3IDBCIDgxIEFBIEE0IDYwIEEwIDE4IDkzIDY4IDBBIDBDIDQxIDMw
IDMwICAwNy4uLi5gLi4uaC4uQTAwCiAgICAwOUIwOiAzNyAwQiA4RSBBQSA0MSAzMCAzMSAzNiA2
OSA0MSAzMCAzMCAzNyAwQiA4RiBBQSAgNy4uLkEwMTZpQTAwNy4uLgogICAgMDlDMDogNzAgMTEg
MDcgMEIgMDAgMDEgMDMgMDAgMDAgNjAgQTQgNjAgICAgICAgICAgICAgIHAuLi4uLi4uLmAuYAoK
U1NEVCBAIDB4MDAwMDAwMDAwMDAwMDAwMAogICAgMDAwMDogNTMgNTMgNDQgNTQgNzIgMEIgMDAg
MDAgMDIgMjIgNDEgNEQgNDQgMDAgMDAgMDAgIFNTRFRyLi4uLiJBTUQuLi4KICAgIDAwMTA6IDQz
IDUwIDREIDQxIDQzIDUwIDU2IDM2IDAxIDAwIDAwIDAwIDQ5IDRFIDU0IDRDICBDUE1BQ1BWNi4u
Li5JTlRMCiAgICAwMDIwOiAzMSAwMyAyMyAyMCBBMCA0NyA0NyAwMCAxNSA1QyA0RCAzMSAzMSAz
NSAwMyAwMCAgMS4jIC5HRy4uXE0xMTUuLgogICAgMDAzMDogMTUgNUMgNEQgMzEgMzEgMzYgMEUg
MDAgMTUgNUMgNEQgMzEgMzEgMzcgMEUgMDAgIC5cTTExNi4uLlxNMTE3Li4KICAgIDAwNDA6IDE1
IDVDIDREIDMxIDMxIDM4IDBFIDAwIDE1IDVDIDREIDMxIDMxIDM5IDBFIDAwICAuXE0xMTguLi5c
TTExOS4uCiAgICAwMDUwOiAxNSA1QyA0RCAzMSAzMiAzMCAwRSAwMCAxNSA1QyA0RCAzMCAzMyAz
NyAwNiAwMCAgLlxNMTIwLi4uXE0wMzcuLgogICAgMDA2MDogMTUgNUMgNEQgMzIgMzIgMzcgMDYg
MDAgMTUgNUMgNEQgMzMgMzIgMzkgMDYgMDAgIC5cTTIyNy4uLlxNMzI5Li4KICAgIDAwNzA6IDE1
IDVDIDREIDMzIDMyIDQxIDA2IDAwIDE1IDVDIDREIDMzIDMyIDQyIDA2IDAwICAuXE0zMkEuLi5c
TTMyQi4uCiAgICAwMDgwOiAxNSA1QyA0RCAzMyAzMiA0MyAwNiAwMCAxNSA1QyA0RCAzMyAzMyAz
MCAwNiAwMCAgLlxNMzJDLi4uXE0zMzAuLgogICAgMDA5MDogMTUgNUMgNEQgMzAgMzggMzIgMDUg
MDAgMTUgNUMgNEQgMzAgMzggMzMgMDUgMDAgIC5cTTA4Mi4uLlxNMDgzLi4KICAgIDAwQTA6IDE1
IDVDIDREIDMwIDM4IDM0IDA1IDAwIDE1IDVDIDREIDMwIDM4IDM1IDA1IDAwICAuXE0wODQuLi5c
TTA4NS4uCiAgICAwMEIwOiAxNSA1QyA0RCAzMiAzMiAzMSAwNSAwMCAxNSA1QyA0RCAzMCAzOCAz
NiAwNSAwMCAgLlxNMjIxLi4uXE0wODYuLgogICAgMDBDMDogMTUgNUMgNEQgMzIgMzIgMzkgMDUg
MDAgMTUgNUMgNEQgMzIgMzMgMzEgMDUgMDAgIC5cTTIyOS4uLlxNMjMxLi4KICAgIDAwRDA6IDE1
IDVDIDREIDMyIDMzIDM1IDA1IDAwIDE1IDVDIDREIDMyIDMzIDMzIDA1IDAwICAuXE0yMzUuLi5c
TTIzMy4uCiAgICAwMEUwOiAxNSA1QyA0RCAzMCAzOCAzNyAwNSAwMCAxNSA1QyA0RCAzMCAzOCAz
OCAwNSAwMCAgLlxNMDg3Li4uXE0wODguLgogICAgMDBGMDogMTUgNUMgNEQgMzAgMzggMzkgMDUg
MDAgMTUgNUMgNEQgMzAgMzkgMzAgMDUgMDAgIC5cTTA4OS4uLlxNMDkwLi4KICAgIDAxMDA6IDE1
IDVDIDREIDMwIDM5IDMxIDA1IDAwIDE1IDVDIDREIDMwIDM5IDMyIDA1IDAwICAuXE0wOTEuLi5c
TTA5Mi4uCiAgICAwMTEwOiAxNSA1QyA0RCAzMCAzOSAzMyAwNSAwMCAxNSA1QyA0RCAzMCAzOSAz
NCAwNSAwMCAgLlxNMDkzLi4uXE0wOTQuLgogICAgMDEyMDogMTUgNUMgNEQgMzAgMzkgMzUgMDUg
MDAgMTUgNUMgNEQgMzAgMzkgMzYgMDUgMDAgIC5cTTA5NS4uLlxNMDk2Li4KICAgIDAxMzA6IDE1
IDVDIDREIDMwIDM5IDM3IDA1IDAwIDE1IDVDIDREIDMwIDM5IDM4IDA1IDAwICAuXE0wOTcuLi5c
TTA5OC4uCiAgICAwMTQwOiAxNSA1QyA0RCAzMCAzOSAzOSAwNSAwMCAxNSA1QyA0RCAzMSAzMCAz
MCAwNSAwMCAgLlxNMDk5Li4uXE0xMDAuLgogICAgMDE1MDogMTUgNUMgNEQgMzEgMzAgMzEgMDUg
MDAgMTUgNUMgNEQgMzEgMzAgMzIgMDUgMDAgIC5cTTEwMS4uLlxNMTAyLi4KICAgIDAxNjA6IDE1
IDVDIDREIDMxIDMwIDMzIDA1IDAwIDE1IDVDIDREIDMxIDMwIDM0IDA1IDAwICAuXE0xMDMuLi5c
TTEwNC4uCiAgICAwMTcwOiAxNSA1QyA0RCAzMSAzMCAzNSAwNSAwMCAxNSA1QyA0RCAzMSAzMCAz
NiAwNSAwMCAgLlxNMTA1Li4uXE0xMDYuLgogICAgMDE4MDogMTUgNUMgNEQgMzEgMzAgMzcgMDUg
MDAgMTUgNUMgNEQgMzEgMzIgMzggMDUgMDAgIC5cTTEwNy4uLlxNMTI4Li4KICAgIDAxOTA6IDE1
IDVDIDREIDMxIDMwIDM4IDA1IDAwIDE1IDVDIDREIDMxIDMwIDM5IDA1IDAwICAuXE0xMDguLi5c
TTEwOS4uCiAgICAwMUEwOiAxNSA1QyA0RCAzMSAzMSAzMCAwNSAwMCAxNSA1QyA0RCAzMSAzMiAz
MiAwNSAwMCAgLlxNMTEwLi4uXE0xMjIuLgogICAgMDFCMDogMTUgNUMgNEQgMzEgMzMgMzEgMDUg
MDAgMTUgNUMgNEQgMzEgMzMgMzIgMDUgMDAgIC5cTTEzMS4uLlxNMTMyLi4KICAgIDAxQzA6IDE1
IDVDIDREIDMyIDMyIDM2IDA1IDAwIDE1IDVDIDREIDMxIDMzIDMzIDA1IDAwICAuXE0yMjYuLi5c
TTEzMy4uCiAgICAwMUQwOiAxNSA1QyA0RCAzMSAzMyAzNCAwNSAwMCAxNSA1QyA0RCAzMSAzMyAz
NSAwNSAwMCAgLlxNMTM0Li4uXE0xMzUuLgogICAgMDFFMDogMTUgNUMgNEQgMzEgMzMgMzYgMDUg
MDAgMTUgNUMgNEQgMzIgMzIgMzAgMDUgMDAgIC5cTTEzNi4uLlxNMjIwLi4KICAgIDAxRjA6IDE1
IDVDIDREIDMwIDM0IDM2IDAxIDAwIDE1IDVDIDREIDMwIDM0IDM3IDAxIDAwICAuXE0wNDYuLi5c
TTA0Ny4uCiAgICAwMjAwOiAxNSA1QyA0RCAzMiAzNCAzOSAwOCAwNCAxNSA1QyA0RCAzMiAzNSAz
MCAwOCAwNSAgLlxNMjQ5Li4uXE0yNTAuLgogICAgMDIxMDogMTUgNUMgNEQgMzIgMzUgMzEgMDUg
MDAgMTUgNUMgNEQgMzMgMzEgMzAgMDUgMDAgIC5cTTI1MS4uLlxNMzEwLi4KICAgIDAyMjA6IDE1
IDVDIDREIDMzIDMxIDQzIDA1IDAwIDE1IDVDIDREIDMzIDMyIDMwIDA1IDAwICAuXE0zMUMuLi5c
TTMyMC4uCiAgICAwMjMwOiAxNSA1QyA0RCAzMyAzMiAzMSAwNSAwMCAxNSA1QyA0RCAzMyAzMiAz
MiAwNSAwMCAgLlxNMzIxLi4uXE0zMjIuLgogICAgMDI0MDogMTUgNUMgNEQgMzMgMzIgMzMgMDUg
MDAgMTUgNUMgNEQgMzMgMzIgMzQgMDUgMDAgIC5cTTMyMy4uLlxNMzI0Li4KICAgIDAyNTA6IDE1
IDVDIDREIDMzIDMyIDM1IDA1IDAwIDE1IDVDIDREIDMzIDMyIDM2IDA1IDAwICAuXE0zMjUuLi5c
TTMyNi4uCiAgICAwMjYwOiAxNSA1QyA0RCAzMyAzMiAzNyAwNSAwMCAxNSA1QyA0RCAzMyAzMiAz
OCAwNSAwMCAgLlxNMzI3Li4uXE0zMjguLgogICAgMDI3MDogMTUgNUMgNEQgMzIgMzcgMzYgMDgg
MDAgMTUgNUMgNEQgMzIgMzcgMzcgMDggMDAgIC5cTTI3Ni4uLlxNMjc3Li4KICAgIDAyODA6IDE1
IDVDIDREIDMyIDM4IDMwIDA1IDAwIDE1IDVDIDREIDMyIDM5IDMwIDA1IDAwICAuXE0yODAuLi5c
TTI5MC4uCiAgICAwMjkwOiAxNSA1QyA0RCAzMyAzNyAzOCAwNSAwMCAxNSA1QyA0RCAzMyAzNyAz
OSAwNSAwMCAgLlxNMzc4Li4uXE0zNzkuLgogICAgMDJBMDogMTUgNUMgNEQgMzMgMzggMzAgMDUg
MDAgMTUgNUMgNEQgMzMgMzggMzEgMDUgMDAgIC5cTTM4MC4uLlxNMzgxLi4KICAgIDAyQjA6IDE1
IDVDIDREIDMzIDM4IDMyIDA1IDAwIDE1IDVDIDREIDMzIDM4IDMzIDA1IDAwICAuXE0zODIuLi5c
TTM4My4uCiAgICAwMkMwOiAxNSA1QyA0RCAzMyAzOCAzNCAwNSAwMCAxNSA1QyA0RCAzMyAzOCAz
NSAwNSAwMCAgLlxNMzg0Li4uXE0zODUuLgogICAgMDJEMDogMTUgNUMgNEQgMzMgMzggMzYgMDUg
MDAgMTUgNUMgNEQgMzMgMzggMzcgMDUgMDAgIC5cTTM4Ni4uLlxNMzg3Li4KICAgIDAyRTA6IDE1
IDVDIDREIDMzIDM4IDM4IDA1IDAwIDE1IDVDIDREIDMzIDM4IDM5IDA1IDAwICAuXE0zODguLi5c
TTM4OS4uCiAgICAwMkYwOiAxNSA1QyA0RCAzMyAzOSAzMCAwNSAwMCAxNSA1QyA0RCAzMyAzOSAz
MSAwNSAwMCAgLlxNMzkwLi4uXE0zOTEuLgogICAgMDMwMDogMTUgNUMgNEQgMzMgMzkgMzIgMDUg
MDAgMTUgNUMgNEQgMzMgMzMgMzEgMDUgMDAgIC5cTTM5Mi4uLlxNMzMxLi4KICAgIDAzMTA6IDE1
IDVDIDREIDM2IDMyIDMwIDA1IDAwIDE1IDVDIDREIDM0IDMwIDM0IDAzIDAwICAuXE02MjAuLi5c
TTQwNC4uCiAgICAwMzIwOiAxNSA1QyA0RCAzNCAzMCAzOCAwOSAwMCAxNSA1QyA0RCAzNCAzMSAz
NCAwNSAwMCAgLlxNNDA4Li4uXE00MTQuLgogICAgMDMzMDogMTUgNUMgNEQgMzQgMzQgMzQgMDUg
MDAgMTUgNUMgNEQgMzQgMzUgMzMgMDUgMDAgIC5cTTQ0NC4uLlxNNDUzLi4KICAgIDAzNDA6IDE1
IDVDIDREIDM0IDM1IDM0IDA1IDAwIDE1IDVDIDREIDM0IDM1IDM1IDA1IDAwICAuXE00NTQuLi5c
TTQ1NS4uCiAgICAwMzUwOiAxNSA1QyA0RCAzNCAzNSAzNiAwNSAwMCAxNSA1QyA0RCAzNCAzNSAz
NyAwNSAwMCAgLlxNNDU2Li4uXE00NTcuLgogICAgMDM2MDogMTUgNUMgNEQgMzQgMzYgMzAgMDgg
MDcgMTUgNUMgNEQgMzQgMzQgMzkgMDUgMDAgIC5cTTQ2MC4uLlxNNDQ5Li4KICAgIDAzNzA6IDE1
IDVDIDREIDM0IDQzIDMwIDA1IDAwIDE1IDVDIDREIDMyIDMzIDQxIDA1IDAwICAuXE00QzAuLi5c
TTIzQS4uCiAgICAwMzgwOiAxNSA1QyA0RCAzNCA0NiAzMCAwNSAwMCAxNSA1QyA0RCAzNiAzMSAz
MCAwNSAwMCAgLlxNNEYwLi4uXE02MTAuLgogICAgMDM5MDogMTUgNUMgNEQgMzIgMzkgNDEgMDUg
MDAgMTUgNUMgNEQgMzYgMzMgMzEgMDUgMDAgIC5cTTI5QS4uLlxNNjMxLi4KICAgIDAzQTA6IDE1
IDVDIDREIDM2IDM1IDMyIDA1IDAwIDE1IDVDIDREIDMwIDM1IDMwIDA2IDAwICAuXE02NTIuLi5c
TTA1MC4uCiAgICAwM0IwOiAxNSA1QyA0RCAzMCAzNSAzMSAwNiAwMCAxNSA1QyA0RCAzMCAzNSAz
MiAwNiAwMCAgLlxNMDUxLi4uXE0wNTIuLgogICAgMDNDMDogMTUgNUMgNEQgMzAgMzUgMzMgMDYg
MDAgMTUgNUMgNEQgMzAgMzUgMzQgMDYgMDAgIC5cTTA1My4uLlxNMDU0Li4KICAgIDAzRDA6IDE1
IDVDIDREIDMwIDM1IDM1IDA2IDAwIDE1IDVDIDREIDMwIDM1IDM2IDA2IDAwICAuXE0wNTUuLi5c
TTA1Ni4uCiAgICAwM0UwOiAxNSA1QyA0RCAzMCAzNSAzNyAwNiAwMCAxNSA1QyA0RCAzMCAzNSAz
OCAwNiAwMCAgLlxNMDU3Li4uXE0wNTguLgogICAgMDNGMDogMTUgNUMgNEQgMzAgMzUgMzkgMDYg
MDAgMTUgNUMgNEQgMzAgMzYgMzIgMDYgMDAgIC5cTTA1OS4uLlxNMDYyLi4KICAgIDA0MDA6IDE1
IDVDIDREIDMwIDM2IDM4IDA2IDAwIDE1IDVDIDREIDMwIDM2IDM5IDA2IDAwICAuXE0wNjguLi5c
TTA2OS4uCiAgICAwNDEwOiAxNSA1QyA0RCAzMCAzNyAzMCAwNiAwMCAxNSA1QyA0RCAzMCAzNyAz
MSAwNiAwMCAgLlxNMDcwLi4uXE0wNzEuLgogICAgMDQyMDogMTUgNUMgNEQgMzAgMzcgMzIgMDYg
MDAgMTUgNUMgNEQgMzAgMzcgMzQgMDYgMDAgIC5cTTA3Mi4uLlxNMDc0Li4KICAgIDA0MzA6IDE1
IDVDIDREIDMwIDM3IDM1IDA2IDAwIDE1IDVDIDREIDMwIDM3IDM2IDA2IDAwICAuXE0wNzUuLi5c
TTA3Ni4uCiAgICAwNDQwOiAxNSA1QyA0RCAzMCAzNyAzNyAwNiAwMCAxNSA1QyA0RCAzMCAzNyAz
OCAwNiAwMCAgLlxNMDc3Li4uXE0wNzguLgogICAgMDQ1MDogMTUgNUMgNEQgMzAgMzcgMzkgMDYg
MDAgMTUgNUMgNEQgMzAgMzggMzAgMDYgMDAgIC5cTTA3OS4uLlxNMDgwLi4KICAgIDA0NjA6IDE1
IDVDIDREIDMwIDM4IDMxIDA2IDAwIDE1IDVDIDREIDMxIDMyIDM3IDA2IDAwICAuXE0wODEuLi5c
TTEyNy4uCiAgICAwNDcwOiAxNSA1QyAyRiAwNCA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMCA0NyA1
MCAzMSAzNyAgLlwvLl9TQl9QQ0kwR1AxNwogICAgMDQ4MDogNDEgNDMgNTAgNUYgMDYgMDAgMTUg
NUMgMkYgMDQgNUYgNTMgNDIgNUYgNTAgNDMgIEFDUF8uLi5cLy5fU0JfUEMKICAgIDA0OTA6IDQ5
IDMwIDQ3IDUwIDMxIDM3IDQxIDVBIDQxIDRDIDA2IDAwIDA4IDREIDMyIDM3ICBJMEdQMTdBWkFM
Li4uTTI3CiAgICAwNEEwOiAzOCAwMSAwOCA0RCAzMiAzNyAzOSAwMSAwOCA0RCAzMiAzNyA0MSAw
MCAwOCA0RCAgOC4uTTI3OS4uTTI3QS4uTQogICAgMDRCMDogMzIgMzcgNDIgMDEgMDggNDEgNTAg
NDcgNDUgMDEgMDggNDEgNDMgNDcgNDUgMDAgIDI3Qi4uQVBHRS4uQUNHRS4KICAgIDA0QzA6IDVC
IDAxIDREIDMyIDM3IDQ1IDAwIDE0IDRDIDI4IDREIDMyIDM3IDM2IDA4IDREICBbLk0yN0UuLkwo
TTI3Ni5NCiAgICAwNEQwOiAzNCAzNiAzMCAwRCA0NiA0NSA0MSAyRCA0MSA1MyA0QyAyRCA0MyA3
MCA2RCA1MCAgNDYwLkZFQS1BU0wtQ3BtUAogICAgMDRFMDogNkYgNzcgNjUgNzIgNDcgNjEgNzQg
NjUgNEYgNkUgMkQgNTMgNzQgNjEgNzIgNzQgIG93ZXJHYXRlT24tU3RhcnQKICAgIDA0RjA6IDBB
IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDVCIDIzIDREIDMyIDM3IDQ1IEZGIEZGICAuLi4uLi4uLlsj
TTI3RS4uCiAgICAwNTAwOiA0RCAzNCAzNiAzMCAwRCAyMCAyMCA0MyA3MCA2RCA0MSA2MyA3MCA1
MCA3MiA2NSAgTTQ2MC4gIENwbUFjcFByZQogICAgMDUxMDogNzMgNjUgNkUgNzQgNTMgNzQgNjEg
NzQgNjUgMjAgMjAgMjAgMjAgM0QgMjAgMjUgIHNlbnRTdGF0ZSAgICA9ICUKICAgIDA1MjA6IDY0
IDBBIDAwIDREIDMyIDM3IDM4IDAwIDAwIDAwIDAwIDAwIDREIDM0IDM2IDMwICBkLi5NMjc4Li4u
Li5NNDYwCiAgICAwNTMwOiAwRCAyMCAyMCA0MyA3MCA2RCA0MSA3QSA2MSA2QyA2OSA2MSA1MCA3
MiA2NSA3MyAgLiAgQ3BtQXphbGlhUHJlcwogICAgMDU0MDogNjUgNkUgNzQgNTMgNzQgNjEgNzQg
NjUgMjAgM0QgMjAgMjUgNjQgMEEgMDAgNEQgIGVudFN0YXRlID0gJWQuLk0KICAgIDA1NTA6IDMy
IDM3IDM5IDAwIDAwIDAwIDAwIDAwIDREIDM0IDM2IDMwIDBEIDIwIDIwIDQxICAyNzkuLi4uLk00
NjAuICBBCiAgICAwNTYwOiA0MyA0NyA0NSAyMCAyMCAyMCAyMCAyMCAyMCAyMCAyMCAyMCAyMCAy
MCAyMCAyMCAgQ0dFICAgICAgICAgICAgIAogICAgMDU3MDogMjAgMjAgMjAgMjAgMjAgM0QgMjAg
MjUgNjQgMEEgMDAgNDEgNDMgNDcgNDUgMDAgICAgICAgPSAlZC4uQUNHRS4KICAgIDA1ODA6IDAw
IDAwIDAwIDAwIDREIDM0IDM2IDMwIDBEIDIwIDIwIDQxIDUwIDQ3IDQ1IDIwICAuLi4uTTQ2MC4g
IEFQR0UgCiAgICAwNTkwOiAyMCAyMCAyMCAyMCAyMCAyMCAyMCAyMCAyMCAyMCAyMCAyMCAyMCAy
MCAyMCAyMCAgICAgICAgICAgICAgICAgIAogICAgMDVBMDogMjAgM0QgMjAgMjUgNjQgMEEgMDAg
NDEgNTAgNDcgNDUgMDAgMDAgMDAgMDAgMDAgICA9ICVkLi5BUEdFLi4uLi4KICAgIDA1QjA6IEEw
IDNEIDkyIDdGIDREIDMyIDM3IDM4IDREIDMyIDM3IDM5IDAwIDREIDM0IDM2ICAuPS4uTTI3OE0y
NzkuTTQ2CiAgICAwNUMwOiAzMCAwRCA0NiA0NSA0MSAyRCA0MSA1MyA0QyAyRCA0MyA3MCA2RCA1
MCA2RiA3NyAgMC5GRUEtQVNMLUNwbVBvdwogICAgMDVEMDogNjUgNzIgNDcgNjEgNzQgNjUgNEYg
NkUgMkQgMzEgMkQgNDUgNkUgNjQgMEEgMDAgIGVyR2F0ZU9uLTEtRW5kLi4KICAgIDA1RTA6IDAw
IDAwIDAwIDAwIDAwIDAwIDVCIDI3IDREIDMyIDM3IDQ1IEE0IDAwIEEwIDQ4ICAuLi4uLi5bJ00y
N0UuLi5ICiAgICAwNUYwOiAxMyA5MyA0MSA0MyA0NyA0NSAwMSA3MCA0RCAzMiAzNCAzOSAwMCAw
MCAwMCAwQyAgLi5BQ0dFLnBNMjQ5Li4uLgogICAgMDYwMDogRTQgOEEgMDUgMDAgNjQgNzAgMEEg
NjQgNjUgQTIgNDEgMDUgOTMgNjQgMDAgNzAgIC4uLi5kcC5kZS5BLi5kLnAKICAgIDA2MTA6IDRE
IDMyIDM0IDM5IDAwIDAwIDAwIDBDIEU0IDhBIDA1IDAwIDY0IDc2IDY1IEEwICBNMjQ5Li4uLi4u
Li5kdmUuCiAgICAwNjIwOiAzNyA5MyA2NSAwMCA0RCAzNCAzNiAzMCAwRCAyMCAyMCA1NyA2MSA2
OSA3NCAyMCAgNy5lLk00NjAuICBXYWl0IAogICAgMDYzMDogNDEgNDMgNEMgNEIgMjAgNDMgNkMg
NkYgNjMgNkIgMjAgNTMgNzQgNjEgNzIgNzQgIEFDTEsgQ2xvY2sgU3RhcnQKICAgIDA2NDA6IDIw
IDczIDc0IDYxIDc0IDc1IDczIDIwIDc0IDY5IDZEIDY1IDZGIDc1IDc0IDAwICAgc3RhdHVzIHRp
bWVvdXQuCiAgICAwNjUwOiAwMCAwMCAwMCAwMCAwMCAwMCBBNSA1QiAyMSAwQSA2MyBBMCA0MiAw
OSA5MyA2NCAgLi4uLi4uLlshLmMuQi4uZAogICAgMDY2MDogMDEgNEQgMzIgMzUgMzAgMDAgMDAg
MDAgMEMgRTQgOEEgMDUgMDAgMDAgNEQgMzIgIC5NMjUwLi4uLi4uLi4uTTIKICAgIDA2NzA6IDM1
IDMwIDAwIDAwIDAwIDBDIEUwIDhBIDA1IDAwIDBBIEM4IDREIDMyIDM1IDMwICA1MC4uLi4uLi4u
Li5NMjUwCiAgICAwNjgwOiAwMCAwMCAwMCAwQyAzMCA4QSAwNSAwMCAwQSAwMyA3MCA0RCAzMiAz
NCAzOSAwMCAgLi4uLjAuLi4uLnBNMjQ5LgogICAgMDY5MDogMDAgMDAgMEMgRTQgOEEgMDUgMDAg
NjQgNzAgMEEgNjQgNjUgQTIgNDEgMDUgOTMgIC4uLi4uLi5kcC5kZS5BLi4KICAgIDA2QTA6IDY0
IDAwIDcwIDREIDMyIDM0IDM5IDAwIDAwIDAwIDBDIEU0IDhBIDA1IDAwIDY0ICBkLnBNMjQ5Li4u
Li4uLi5kCiAgICAwNkIwOiA3NiA2NSBBMCAzNyA5MyA2NSAwMCA0RCAzNCAzNiAzMCAwRCAyMCAy
MCA1NyA2MSAgdmUuNy5lLk00NjAuICBXYQogICAgMDZDMDogNjkgNzQgMjAgNDEgNDMgNEMgNEIg
MjAgNDMgNkMgNkYgNjMgNkIgMjAgNTMgNzQgIGl0IEFDTEsgQ2xvY2sgU3QKICAgIDA2RDA6IDYx
IDcyIDc0IDIwIDczIDc0IDYxIDc0IDc1IDczIDIwIDc0IDY5IDZEIDY1IDZGICBhcnQgc3RhdHVz
IHRpbWVvCiAgICAwNkUwOiA3NSA3NCAwMCAwMCAwMCAwMCAwMCAwMCAwMCBBNSA1QiAyMSAwQSA2
MyBBMSAzOCAgdXQuLi4uLi4uLlshLmMuOAogICAgMDZGMDogNEQgMzQgMzYgMzAgMEQgNDYgNDUg
NDEgMkQgNDEgNTMgNEMgMkQgNDMgNzAgNkQgIE00NjAuRkVBLUFTTC1DcG0KICAgIDA3MDA6IDUw
IDZGIDc3IDY1IDcyIDQ3IDYxIDc0IDY1IDRGIDZFIDJEIDZEIDZEIDQxIDQzICBQb3dlckdhdGVP
bi1tbUFDCiAgICAwNzEwOiA1MCA1RiA1MiA0NSA1MyA1MCA1RiA1MiA0NSA0NyAyMCAzRCAyMCAy
NSA2NCAwQSAgUF9SRVNQX1JFRyA9ICVkLgogICAgMDcyMDogMDAgNjQgMDAgMDAgMDAgMDAgMDAg
NEQgMzQgMzYgMzAgMEQgNDYgNDUgNDEgMkQgIC5kLi4uLi5NNDYwLkZFQS0KICAgIDA3MzA6IDQx
IDUzIDRDIDJEIDQzIDcwIDZEIDUwIDZGIDc3IDY1IDcyIDQ3IDYxIDc0IDY1ICBBU0wtQ3BtUG93
ZXJHYXRlCiAgICAwNzQwOiA0RiA2RSAyRCA0NSA2RSA2NCAwQSAwMCAwMCAwMCAwMCAwMCAwMCAw
MCA1QiAyNyAgT24tRW5kLi4uLi4uLi5bJwogICAgMDc1MDogNEQgMzIgMzcgNDUgMTQgNDkgMjkg
NEQgMzIgMzcgMzcgMDggNEQgMzQgMzYgMzAgIE0yN0UuSSlNMjc3Lk00NjAKICAgIDA3NjA6IDBE
IDQ2IDQ1IDQxIDJEIDQxIDUzIDRDIDJEIDQzIDcwIDZEIDUwIDZGIDc3IDY1ICAuRkVBLUFTTC1D
cG1Qb3dlCiAgICAwNzcwOiA3MiA0NyA2MSA3NCA2NSA0RiA2NiA2NiAyRCA1MyA3NCA2MSA3MiA3
NCAwQSAwMCAgckdhdGVPZmYtU3RhcnQuLgogICAgMDc4MDogMDAgMDAgMDAgMDAgMDAgMDAgNUIg
MjMgNEQgMzIgMzcgNDUgRkYgRkYgNEQgMzQgIC4uLi4uLlsjTTI3RS4uTTQKICAgIDA3OTA6IDM2
IDMwIDBEIDIwIDIwIDQzIDcwIDZEIDQxIDYzIDcwIDUwIDcyIDY1IDczIDY1ICA2MC4gIENwbUFj
cFByZXNlCiAgICAwN0EwOiA2RSA3NCA1MyA3NCA2MSA3NCA2NSAyMCAyMCAyMCAyMCAzRCAyMCAy
NSA2NCAwQSAgbnRTdGF0ZSAgICA9ICVkLgogICAgMDdCMDogMDAgNEQgMzIgMzcgMzggMDAgMDAg
MDAgMDAgMDAgNEQgMzQgMzYgMzAgMEQgMjAgIC5NMjc4Li4uLi5NNDYwLiAKICAgIDA3QzA6IDIw
IDQzIDcwIDZEIDQxIDdBIDYxIDZDIDY5IDYxIDUwIDcyIDY1IDczIDY1IDZFICAgQ3BtQXphbGlh
UHJlc2VuCiAgICAwN0QwOiA3NCA1MyA3NCA2MSA3NCA2NSAyMCAzRCAyMCAyNSA2NCAwQSAwMCA0
RCAzMiAzNyAgdFN0YXRlID0gJWQuLk0yNwogICAgMDdFMDogMzkgMDAgMDAgMDAgMDAgMDAgNEQg
MzQgMzYgMzAgMEQgMjAgMjAgNDEgNTAgNDcgIDkuLi4uLk00NjAuICBBUEcKICAgIDA3RjA6IDQ1
IDIwIDIwIDIwIDIwIDIwIDIwIDIwIDIwIDIwIDIwIDIwIDIwIDIwIDIwIDIwICBFICAgICAgICAg
ICAgICAgCiAgICAwODAwOiAyMCAyMCAyMCAzRCAyMCAyNSA2NCAwQSAwMCA0MSA1MCA0NyA0NSAw
MCAwMCAwMCAgICAgPSAlZC4uQVBHRS4uLgogICAgMDgxMDogMDAgMDAgNEQgMzQgMzYgMzAgMEQg
MjAgMjAgNDEgNDMgNDcgNDUgMjAgMjAgMjAgIC4uTTQ2MC4gIEFDR0UgICAKICAgIDA4MjA6IDIw
IDIwIDIwIDIwIDIwIDIwIDIwIDIwIDIwIDIwIDIwIDIwIDIwIDIwIDIwIDNEICAgICAgICAgICAg
ICAgICA9CiAgICAwODMwOiAyMCAyNSA2NCAwQSAwMCA0MSA0MyA0NyA0NSAwMCAwMCAwMCAwMCAw
MCBBMCA0MiAgICVkLi5BQ0dFLi4uLi4uQgogICAgMDg0MDogMDQgOTIgOTAgOTMgNEQgMzIgMzcg
MzggMDAgOTMgNEQgMzIgMzcgMzkgMDAgNEQgIC4uLi5NMjc4Li5NMjc5Lk0KICAgIDA4NTA6IDM0
IDM2IDMwIDBEIDQ2IDQ1IDQxIDJEIDQxIDUzIDRDIDJEIDQzIDcwIDZEIDUwICA0NjAuRkVBLUFT
TC1DcG1QCiAgICAwODYwOiA2RiA3NyA2NSA3MiA0NyA2MSA3NCA2NSA0RiA2NiA2NiAyRCAzMSAy
RCA0NSA2RSAgb3dlckdhdGVPZmYtMS1FbgogICAgMDg3MDogNjQgMEEgMDAgMDAgMDAgMDAgMDAg
MDAgMDAgNUIgMjcgNEQgMzIgMzcgNDUgQTQgIGQuLi4uLi4uLlsnTTI3RS4KICAgIDA4ODA6IDAw
IEEwIDRFIDEzIDkzIDQxIDQzIDQ3IDQ1IDAxIDcwIDREIDMyIDM0IDM5IDAwICAuLk4uLkFDR0Uu
cE0yNDkuCiAgICAwODkwOiAwMCAwMCAwQyBFNCA4QSAwNSAwMCA2NCA3MCAwQSA2NCA2NSBBMiA0
MSAwNSA5MyAgLi4uLi4uLmRwLmRlLkEuLgogICAgMDhBMDogNjQgMDAgNzAgNEQgMzIgMzQgMzkg
MDAgMDAgMDAgMEMgRTQgOEEgMDUgMDAgNjQgIGQucE0yNDkuLi4uLi4uLmQKICAgIDA4QjA6IDc2
IDY1IEEwIDM3IDkzIDY1IDAwIDREIDM0IDM2IDMwIDBEIDIwIDIwIDU3IDYxICB2ZS43LmUuTTQ2
MC4gIFdhCiAgICAwOEMwOiA2OSA3NCAyMCA0MSA0MyA0QyA0QiAyMCA0MyA2QyA2RiA2MyA2QiAy
MCA1MyA3NCAgaXQgQUNMSyBDbG9jayBTdAogICAgMDhEMDogNjEgNzIgNzQgMjAgNzMgNzQgNjEg
NzQgNzUgNzMgMjAgNzQgNjkgNkQgNjUgNkYgIGFydCBzdGF0dXMgdGltZW8KICAgIDA4RTA6IDc1
IDc0IDAwIDAwIDAwIDAwIDAwIDAwIDAwIEE1IDVCIDIxIDBBIDYzIEEwIDQ4ICB1dC4uLi4uLi4u
WyEuYy5ICiAgICAwOEYwOiAwOSA5MyA2NCAwMSA0RCAzMiAzNSAzMCAwMCAwMCAwMCAwQyBFNCA4
QSAwNSAwMCAgLi5kLk0yNTAuLi4uLi4uLgogICAgMDkwMDogMDAgNEQgMzIgMzUgMzAgMDAgMDAg
MDAgMEMgRTAgOEEgMDUgMDAgMDAgNEQgMzIgIC5NMjUwLi4uLi4uLi4uTTIKICAgIDA5MTA6IDM1
IDMwIDAwIDAwIDAwIDBDIDMwIDhBIDA1IDAwIDBBIDAzIDcwIDREIDMyIDM0ICA1MC4uLi4wLi4u
Li5wTTI0CiAgICAwOTIwOiAzOSAwMCAwMCAwMCAwQyBFNCA4QSAwNSAwMCA2NCA3MCAwQSA2NCA2
NSBBMiA0OCAgOS4uLi4uLi4uZHAuZGUuSAogICAgMDkzMDogMDUgOTMgNjQgMDAgNzAgNEQgMzIg
MzQgMzkgMDAgMDAgMDAgMEMgRTQgOEEgMDUgIC4uZC5wTTI0OS4uLi4uLi4KICAgIDA5NDA6IDAw
IDY0IDc2IDY1IEEwIDNFIDkzIDY1IDAwIDREIDM0IDM2IDMwIDBEIDIwIDIwICAuZHZlLj4uZS5N
NDYwLiAgCiAgICAwOTUwOiA1NyA2MSA2OSA3NCAyMCA2RCA2RCA1MiA1MyA0RCA1NSA1RiA1MCA0
NyA0NiA1MyAgV2FpdCBtbVJTTVVfUEdGUwogICAgMDk2MDogNEQgNUYgNTMgNTQgNDEgNTQgNTUg
NTMgNUYgNDEgNDMgNTAgMjAgNzMgNzQgNjEgIE1fU1RBVFVTX0FDUCBzdGEKICAgIDA5NzA6IDc0
IDc1IDczIDIwIDc0IDY5IDZEIDY1IDZGIDc1IDc0IDAwIDAwIDAwIDAwIDAwICB0dXMgdGltZW91
dC4uLi4uCiAgICAwOTgwOiAwMCAwMCBBNSA1QiAyMSAwQSA2MyBBMSAzOCA0RCAzNCAzNiAzMCAw
RCA0NiA0NSAgLi4uWyEuYy44TTQ2MC5GRQogICAgMDk5MDogNDEgMkQgNDEgNTMgNEMgMkQgNDMg
NzAgNkQgNTAgNkYgNzcgNjUgNzIgNDcgNjEgIEEtQVNMLUNwbVBvd2VyR2EKICAgIDA5QTA6IDc0
IDY1IDRGIDZFIDJEIDZEIDZEIDQxIDQzIDUwIDVGIDUyIDQ1IDUzIDUwIDVGICB0ZU9uLW1tQUNQ
X1JFU1BfCiAgICAwOUIwOiA1MiA0NSA0NyAyMCAzRCAyMCAyNSA2NCAwQSAwMCA2NCAwMCAwMCAw
MCAwMCAwMCAgUkVHID0gJWQuLmQuLi4uLgogICAgMDlDMDogNEQgMzQgMzYgMzAgMEQgNDYgNDUg
NDEgMkQgNDEgNTMgNEMgMkQgNDMgNzAgNkQgIE00NjAuRkVBLUFTTC1DcG0KICAgIDA5RDA6IDUw
IDZGIDc3IDY1IDcyIDQ3IDYxIDc0IDY1IDRGIDY2IDY2IDJEIDQ1IDZFIDY0ICBQb3dlckdhdGVP
ZmYtRW5kCiAgICAwOUUwOiAwQSAwMCAwMCAwMCAwMCAwMCAwMCAwMCA1QiAyNyA0RCAzMiAzNyA0
NSAxMCA0RCAgLi4uLi4uLi5bJ00yN0UuTQogICAgMDlGMDogMEIgNUMgMkYgMDQgNUYgNTMgNDIg
NUYgNTAgNDMgNDkgMzAgNDcgNTAgMzEgMzcgIC5cLy5fU0JfUENJMEdQMTcKICAgIDBBMDA6IDQx
IDQzIDUwIDVGIDE0IDQzIDA1IDVGIDUwIDUzIDMwIDAwIDREIDM0IDM2IDMwICBBQ1BfLkMuX1BT
MC5NNDYwCiAgICAwQTEwOiAwRCA0NiA0NSA0MSAyRCA0MSA1MyA0QyAyRCA1QyA1RiA1MyA0MiAy
RSA1MCA0MyAgLkZFQS1BU0wtXF9TQi5QQwogICAgMEEyMDogNDkgMzAgMkUgNTAgNDIgNDMgMkUg
NDEgNDMgNTAgMkUgNUYgNTAgNTMgMzAgMjAgIEkwLlBCQy5BQ1AuX1BTMCAKICAgIDBBMzA6IDQz
IDcwIDZEIDQxIDYzIDcwIDUwIDcyIDY1IDczIDY1IDZFIDc0IDUzIDc0IDYxICBDcG1BY3BQcmVz
ZW50U3RhCiAgICAwQTQwOiA3NCA2NSAyMCAzRCAyMCAzMSAwQSAwMCAwMCAwMCAwMCAwMCAwMCAw
MCA3MCAwMSAgdGUgPSAxLi4uLi4uLi5wLgogICAgMEE1MDogNEQgMzIgMzcgMzggNEQgMzIgMzcg
MzYgMTQgNDMgMDUgNUYgNTAgNTMgMzMgMDAgIE0yNzhNMjc2LkMuX1BTMy4KICAgIDBBNjA6IDRE
IDM0IDM2IDMwIDBEIDQ2IDQ1IDQxIDJEIDQxIDUzIDRDIDJEIDVDIDVGIDUzICBNNDYwLkZFQS1B
U0wtXF9TCiAgICAwQTcwOiA0MiAyRSA1MCA0MyA0OSAzMCAyRSA1MCA0MiA0MyAyRSA0MSA0MyA1
MCAyRSA1RiAgQi5QQ0kwLlBCQy5BQ1AuXwogICAgMEE4MDogNTAgNTMgMzMgMjAgNDMgNzAgNkQg
NDEgNjMgNzAgNTAgNzIgNjUgNzMgNjUgNkUgIFBTMyBDcG1BY3BQcmVzZW4KICAgIDBBOTA6IDc0
IDUzIDc0IDYxIDc0IDY1IDIwIDNEIDIwIDMwIDBBIDAwIDAwIDAwIDAwIDAwICB0U3RhdGUgPSAw
Li4uLi4uCiAgICAwQUEwOiAwMCAwMCA3MCAwMCA0RCAzMiAzNyAzOCA0RCAzMiAzNyAzNyAxMCA0
NSAwQyA1QyAgLi5wLk0yNzhNMjc3LkUuXAogICAgMEFCMDogMkYgMDQgNUYgNTMgNDIgNUYgNTAg
NDMgNDkgMzAgNDcgNTAgMzEgMzcgNDEgNUEgIC8uX1NCX1BDSTBHUDE3QVoKICAgIDBBQzA6IDQx
IDRDIDE0IDQ3IDA1IDVGIDUwIDUzIDMwIDAwIDREIDM0IDM2IDMwIDBEIDQ2ICBBTC5HLl9QUzAu
TTQ2MC5GCiAgICAwQUQwOiA0NSA0MSAyRCA0MSA1MyA0QyAyRCA1QyA1RiA1MyA0MiAyRSA1MCA0
MyA0OSAzMCAgRUEtQVNMLVxfU0IuUENJMAogICAgMEFFMDogMkUgNTAgNDIgNDMgMkUgNDEgNUEg
NDEgNEMgMkUgNUYgNTAgNTMgMzAgMjAgNDMgIC5QQkMuQVpBTC5fUFMwIEMKICAgIDBBRjA6IDcw
IDZEIDQxIDdBIDYxIDZDIDY5IDYxIDUwIDcyIDY1IDczIDY1IDZFIDc0IDUzICBwbUF6YWxpYVBy
ZXNlbnRTCiAgICAwQjAwOiA3NCA2MSA3NCA2NSAyMCAzRCAyMCAzMSAwQSAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAgdGF0ZSA9IDEuLi4uLi4uLgogICAgMEIxMDogNzAgMDEgNEQgMzIgMzcgMzkgNEQg
MzIgMzcgMzYgMTQgNDcgMDUgNUYgNTAgNTMgIHAuTTI3OU0yNzYuRy5fUFMKICAgIDBCMjA6IDMz
IDAwIDREIDM0IDM2IDMwIDBEIDQ2IDQ1IDQxIDJEIDQxIDUzIDRDIDJEIDVDICAzLk00NjAuRkVB
LUFTTC1cCiAgICAwQjMwOiA1RiA1MyA0MiAyRSA1MCA0MyA0OSAzMCAyRSA1MCA0MiA0MyAyRSA0
MSA1QSA0MSAgX1NCLlBDSTAuUEJDLkFaQQogICAgMEI0MDogNEMgMkUgNUYgNTAgNTMgMzMgMjAg
NDMgNzAgNkQgNDEgN0EgNjEgNkMgNjkgNjEgIEwuX1BTMyBDcG1BemFsaWEKICAgIDBCNTA6IDUw
IDcyIDY1IDczIDY1IDZFIDc0IDUzIDc0IDYxIDc0IDY1IDIwIDNEIDIwIDMwICBQcmVzZW50U3Rh
dGUgPSAwCiAgICAwQjYwOiAwQSAwMCAwMCAwMCAwMCAwMCAwMCAwMCA3MCAwMCA0RCAzMiAzNyAz
OSA0RCAzMiAgLi4uLi4uLi5wLk0yNzlNMgogICAgMEI3MDogMzcgMzcgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDc3CgpTU0RUIEAgMHgwMDAwMDAwMDAwMDAwMDAw
CiAgICAwMDAwOiA1MyA1MyA0NCA1NCA0OCAyNCAwMCAwMCAwMiBFMiA0MSA0RCA0NCAwMCAwMCAw
MCAgU1NEVEgkLi4uLkFNRC4uLgogICAgMDAxMDogNDcgNTAgNTAgNUYgNTAgNEQgNDUgNUYgMDEg
MDAgMDAgMDAgNDkgNEUgNTQgNEMgIEdQUF9QTUVfLi4uLklOVEwKICAgIDAwMjA6IDMxIDAzIDIz
IDIwIEEwIDQ4IDYwIDAwIDE1IDVDIDREIDMwIDMxIDM3IDA4IDA2ICAxLiMgLkhgLi5cTTAxNy4u
CiAgICAwMDMwOiAxNSA1QyA0RCAzMCAzMSAzOCAwOCAwNyAxNSA1QyA0RCAzMSAzMSAzNSAwMyAw
MCAgLlxNMDE4Li4uXE0xMTUuLgogICAgMDA0MDogMTUgNUMgNEQgMzEgMzEgMzYgMEUgMDAgMTUg
NUMgNEQgMzEgMzEgMzcgMEUgMDAgIC5cTTExNi4uLlxNMTE3Li4KICAgIDAwNTA6IDE1IDVDIDRE
IDMxIDMxIDM4IDBFIDAwIDE1IDVDIDREIDMxIDMxIDM5IDBFIDAwICAuXE0xMTguLi5cTTExOS4u
CiAgICAwMDYwOiAxNSA1QyA0RCAzMSAzMiAzMCAwRSAwMCAxNSA1QyA0RCAzMCAzMyAzNyAwNiAw
MCAgLlxNMTIwLi4uXE0wMzcuLgogICAgMDA3MDogMTUgNUMgNEQgMzIgMzIgMzcgMDYgMDAgMTUg
NUMgNEQgMzMgMzIgMzkgMDYgMDAgIC5cTTIyNy4uLlxNMzI5Li4KICAgIDAwODA6IDE1IDVDIDRE
IDMzIDMyIDQxIDA2IDAwIDE1IDVDIDREIDMzIDMyIDQyIDA2IDAwICAuXE0zMkEuLi5cTTMyQi4u
CiAgICAwMDkwOiAxNSA1QyA0RCAzMyAzMiA0MyAwNiAwMCAxNSA1QyA0RCAzMyAzMyAzMCAwNiAw
MCAgLlxNMzJDLi4uXE0zMzAuLgogICAgMDBBMDogMTUgNUMgNEQgMzAgMzggMzIgMDUgMDAgMTUg
NUMgNEQgMzAgMzggMzMgMDUgMDAgIC5cTTA4Mi4uLlxNMDgzLi4KICAgIDAwQjA6IDE1IDVDIDRE
IDMwIDM4IDM0IDA1IDAwIDE1IDVDIDREIDMwIDM4IDM1IDA1IDAwICAuXE0wODQuLi5cTTA4NS4u
CiAgICAwMEMwOiAxNSA1QyA0RCAzMiAzMiAzMSAwNSAwMCAxNSA1QyA0RCAzMCAzOCAzNiAwNSAw
MCAgLlxNMjIxLi4uXE0wODYuLgogICAgMDBEMDogMTUgNUMgNEQgMzIgMzIgMzkgMDUgMDAgMTUg
NUMgNEQgMzIgMzMgMzEgMDUgMDAgIC5cTTIyOS4uLlxNMjMxLi4KICAgIDAwRTA6IDE1IDVDIDRE
IDMyIDMzIDM1IDA1IDAwIDE1IDVDIDREIDMyIDMzIDMzIDA1IDAwICAuXE0yMzUuLi5cTTIzMy4u
CiAgICAwMEYwOiAxNSA1QyA0RCAzMCAzOCAzNyAwNSAwMCAxNSA1QyA0RCAzMCAzOCAzOCAwNSAw
MCAgLlxNMDg3Li4uXE0wODguLgogICAgMDEwMDogMTUgNUMgNEQgMzAgMzggMzkgMDUgMDAgMTUg
NUMgNEQgMzAgMzkgMzAgMDUgMDAgIC5cTTA4OS4uLlxNMDkwLi4KICAgIDAxMTA6IDE1IDVDIDRE
IDMwIDM5IDMxIDA1IDAwIDE1IDVDIDREIDMwIDM5IDMyIDA1IDAwICAuXE0wOTEuLi5cTTA5Mi4u
CiAgICAwMTIwOiAxNSA1QyA0RCAzMCAzOSAzMyAwNSAwMCAxNSA1QyA0RCAzMCAzOSAzNCAwNSAw
MCAgLlxNMDkzLi4uXE0wOTQuLgogICAgMDEzMDogMTUgNUMgNEQgMzAgMzkgMzUgMDUgMDAgMTUg
NUMgNEQgMzAgMzkgMzYgMDUgMDAgIC5cTTA5NS4uLlxNMDk2Li4KICAgIDAxNDA6IDE1IDVDIDRE
IDMwIDM5IDM3IDA1IDAwIDE1IDVDIDREIDMwIDM5IDM4IDA1IDAwICAuXE0wOTcuLi5cTTA5OC4u
CiAgICAwMTUwOiAxNSA1QyA0RCAzMCAzOSAzOSAwNSAwMCAxNSA1QyA0RCAzMSAzMCAzMCAwNSAw
MCAgLlxNMDk5Li4uXE0xMDAuLgogICAgMDE2MDogMTUgNUMgNEQgMzEgMzAgMzEgMDUgMDAgMTUg
NUMgNEQgMzEgMzAgMzIgMDUgMDAgIC5cTTEwMS4uLlxNMTAyLi4KICAgIDAxNzA6IDE1IDVDIDRE
IDMxIDMwIDMzIDA1IDAwIDE1IDVDIDREIDMxIDMwIDM0IDA1IDAwICAuXE0xMDMuLi5cTTEwNC4u
CiAgICAwMTgwOiAxNSA1QyA0RCAzMSAzMCAzNSAwNSAwMCAxNSA1QyA0RCAzMSAzMCAzNiAwNSAw
MCAgLlxNMTA1Li4uXE0xMDYuLgogICAgMDE5MDogMTUgNUMgNEQgMzEgMzAgMzcgMDUgMDAgMTUg
NUMgNEQgMzEgMzIgMzggMDUgMDAgIC5cTTEwNy4uLlxNMTI4Li4KICAgIDAxQTA6IDE1IDVDIDRE
IDMxIDMwIDM4IDA1IDAwIDE1IDVDIDREIDMxIDMwIDM5IDA1IDAwICAuXE0xMDguLi5cTTEwOS4u
CiAgICAwMUIwOiAxNSA1QyA0RCAzMSAzMSAzMCAwNSAwMCAxNSA1QyA0RCAzMSAzMiAzMiAwNSAw
MCAgLlxNMTEwLi4uXE0xMjIuLgogICAgMDFDMDogMTUgNUMgNEQgMzEgMzMgMzEgMDUgMDAgMTUg
NUMgNEQgMzEgMzMgMzIgMDUgMDAgIC5cTTEzMS4uLlxNMTMyLi4KICAgIDAxRDA6IDE1IDVDIDRE
IDMyIDMyIDM2IDA1IDAwIDE1IDVDIDREIDMxIDMzIDMzIDA1IDAwICAuXE0yMjYuLi5cTTEzMy4u
CiAgICAwMUUwOiAxNSA1QyA0RCAzMSAzMyAzNCAwNSAwMCAxNSA1QyA0RCAzMSAzMyAzNSAwNSAw
MCAgLlxNMTM0Li4uXE0xMzUuLgogICAgMDFGMDogMTUgNUMgNEQgMzEgMzMgMzYgMDUgMDAgMTUg
NUMgNEQgMzIgMzIgMzAgMDUgMDAgIC5cTTEzNi4uLlxNMjIwLi4KICAgIDAyMDA6IDE1IDVDIDRE
IDMwIDM0IDM2IDAxIDAwIDE1IDVDIDREIDMwIDM0IDM3IDAxIDAwICAuXE0wNDYuLi5cTTA0Ny4u
CiAgICAwMjEwOiAxNSA1QyA0RCAzMCAzNCAzOSAwOCAwMiAxNSA1QyA0RCAzMiAzNSAzMSAwNSAw
MCAgLlxNMDQ5Li4uXE0yNTEuLgogICAgMDIyMDogMTUgNUMgNEQgMzMgMzEgMzAgMDUgMDAgMTUg
NUMgNEQgMzMgMzEgNDMgMDUgMDAgIC5cTTMxMC4uLlxNMzFDLi4KICAgIDAyMzA6IDE1IDVDIDRE
IDMzIDMyIDMwIDA1IDAwIDE1IDVDIDREIDMzIDMyIDMxIDA1IDAwICAuXE0zMjAuLi5cTTMyMS4u
CiAgICAwMjQwOiAxNSA1QyA0RCAzMyAzMiAzMiAwNSAwMCAxNSA1QyA0RCAzMyAzMiAzMyAwNSAw
MCAgLlxNMzIyLi4uXE0zMjMuLgogICAgMDI1MDogMTUgNUMgNEQgMzMgMzIgMzQgMDUgMDAgMTUg
NUMgNEQgMzMgMzIgMzUgMDUgMDAgIC5cTTMyNC4uLlxNMzI1Li4KICAgIDAyNjA6IDE1IDVDIDRE
IDMzIDMyIDM2IDA1IDAwIDE1IDVDIDREIDMzIDMyIDM3IDA1IDAwICAuXE0zMjYuLi5cTTMyNy4u
CiAgICAwMjcwOiAxNSA1QyA0RCAzMyAzMiAzOCAwNSAwMCAxNSA1QyA0RCAzMiAzOCAzMCAwNSAw
MCAgLlxNMzI4Li4uXE0yODAuLgogICAgMDI4MDogMTUgNUMgNEQgMzIgMzkgMzAgMDUgMDAgMTUg
NUMgNEQgMzMgMzcgMzggMDUgMDAgIC5cTTI5MC4uLlxNMzc4Li4KICAgIDAyOTA6IDE1IDVDIDRE
IDMzIDM3IDM5IDA1IDAwIDE1IDVDIDREIDMzIDM4IDMwIDA1IDAwICAuXE0zNzkuLi5cTTM4MC4u
CiAgICAwMkEwOiAxNSA1QyA0RCAzMyAzOCAzMSAwNSAwMCAxNSA1QyA0RCAzMyAzOCAzMiAwNSAw
MCAgLlxNMzgxLi4uXE0zODIuLgogICAgMDJCMDogMTUgNUMgNEQgMzMgMzggMzMgMDUgMDAgMTUg
NUMgNEQgMzMgMzggMzQgMDUgMDAgIC5cTTM4My4uLlxNMzg0Li4KICAgIDAyQzA6IDE1IDVDIDRE
IDMzIDM4IDM1IDA1IDAwIDE1IDVDIDREIDMzIDM4IDM2IDA1IDAwICAuXE0zODUuLi5cTTM4Ni4u
CiAgICAwMkQwOiAxNSA1QyA0RCAzMyAzOCAzNyAwNSAwMCAxNSA1QyA0RCAzMyAzOCAzOCAwNSAw
MCAgLlxNMzg3Li4uXE0zODguLgogICAgMDJFMDogMTUgNUMgNEQgMzMgMzggMzkgMDUgMDAgMTUg
NUMgNEQgMzMgMzkgMzAgMDUgMDAgIC5cTTM4OS4uLlxNMzkwLi4KICAgIDAyRjA6IDE1IDVDIDRE
IDMzIDM5IDMxIDA1IDAwIDE1IDVDIDREIDMzIDM5IDMyIDA1IDAwICAuXE0zOTEuLi5cTTM5Mi4u
CiAgICAwMzAwOiAxNSA1QyA0RCAzMyAzMyAzMSAwNSAwMCAxNSA1QyA0RCAzNiAzMiAzMCAwNSAw
MCAgLlxNMzMxLi4uXE02MjAuLgogICAgMDMxMDogMTUgNUMgNEQgMzQgMzAgMzQgMDMgMDAgMTUg
NUMgNEQgMzQgMzAgMzggMDkgMDAgIC5cTTQwNC4uLlxNNDA4Li4KICAgIDAzMjA6IDE1IDVDIDRE
IDM0IDMxIDM0IDA1IDAwIDE1IDVDIDREIDM0IDM0IDM0IDA1IDAwICAuXE00MTQuLi5cTTQ0NC4u
CiAgICAwMzMwOiAxNSA1QyA0RCAzNCAzNSAzMyAwNSAwMCAxNSA1QyA0RCAzNCAzNSAzNCAwNSAw
MCAgLlxNNDUzLi4uXE00NTQuLgogICAgMDM0MDogMTUgNUMgNEQgMzQgMzUgMzUgMDUgMDAgMTUg
NUMgNEQgMzQgMzUgMzYgMDUgMDAgIC5cTTQ1NS4uLlxNNDU2Li4KICAgIDAzNTA6IDE1IDVDIDRE
IDM0IDM1IDM3IDA1IDAwIDE1IDVDIDREIDM0IDM2IDMwIDA4IDA3ICAuXE00NTcuLi5cTTQ2MC4u
CiAgICAwMzYwOiAxNSA1QyA0RCAzNCAzNCAzOSAwNSAwMCAxNSA1QyA0RCAzNCA0MyAzMCAwNSAw
MCAgLlxNNDQ5Li4uXE00QzAuLgogICAgMDM3MDogMTUgNUMgNEQgMzIgMzMgNDEgMDUgMDAgMTUg
NUMgNEQgMzQgNDYgMzAgMDUgMDAgIC5cTTIzQS4uLlxNNEYwLi4KICAgIDAzODA6IDE1IDVDIDRE
IDM2IDMxIDMwIDA1IDAwIDE1IDVDIDREIDMyIDM5IDQxIDA1IDAwICAuXE02MTAuLi5cTTI5QS4u
CiAgICAwMzkwOiAxNSA1QyA0RCAzNiAzMyAzMSAwNSAwMCAxNSA1QyA0RCAzNiAzNSAzMiAwNSAw
MCAgLlxNNjMxLi4uXE02NTIuLgogICAgMDNBMDogMTUgNUMgNEQgMzAgMzUgMzAgMDYgMDAgMTUg
NUMgNEQgMzAgMzUgMzEgMDYgMDAgIC5cTTA1MC4uLlxNMDUxLi4KICAgIDAzQjA6IDE1IDVDIDRE
IDMwIDM1IDMyIDA2IDAwIDE1IDVDIDREIDMwIDM1IDMzIDA2IDAwICAuXE0wNTIuLi5cTTA1My4u
CiAgICAwM0MwOiAxNSA1QyA0RCAzMCAzNSAzNCAwNiAwMCAxNSA1QyA0RCAzMCAzNSAzNSAwNiAw
MCAgLlxNMDU0Li4uXE0wNTUuLgogICAgMDNEMDogMTUgNUMgNEQgMzAgMzUgMzYgMDYgMDAgMTUg
NUMgNEQgMzAgMzUgMzcgMDYgMDAgIC5cTTA1Ni4uLlxNMDU3Li4KICAgIDAzRTA6IDE1IDVDIDRE
IDMwIDM1IDM4IDA2IDAwIDE1IDVDIDREIDMwIDM1IDM5IDA2IDAwICAuXE0wNTguLi5cTTA1OS4u
CiAgICAwM0YwOiAxNSA1QyA0RCAzMCAzNiAzMiAwNiAwMCAxNSA1QyA0RCAzMCAzNiAzOCAwNiAw
MCAgLlxNMDYyLi4uXE0wNjguLgogICAgMDQwMDogMTUgNUMgNEQgMzAgMzYgMzkgMDYgMDAgMTUg
NUMgNEQgMzAgMzcgMzAgMDYgMDAgIC5cTTA2OS4uLlxNMDcwLi4KICAgIDA0MTA6IDE1IDVDIDRE
IDMwIDM3IDMxIDA2IDAwIDE1IDVDIDREIDMwIDM3IDMyIDA2IDAwICAuXE0wNzEuLi5cTTA3Mi4u
CiAgICAwNDIwOiAxNSA1QyA0RCAzMCAzNyAzNCAwNiAwMCAxNSA1QyA0RCAzMCAzNyAzNSAwNiAw
MCAgLlxNMDc0Li4uXE0wNzUuLgogICAgMDQzMDogMTUgNUMgNEQgMzAgMzcgMzYgMDYgMDAgMTUg
NUMgNEQgMzAgMzcgMzcgMDYgMDAgIC5cTTA3Ni4uLlxNMDc3Li4KICAgIDA0NDA6IDE1IDVDIDRE
IDMwIDM3IDM4IDA2IDAwIDE1IDVDIDREIDMwIDM3IDM5IDA2IDAwICAuXE0wNzguLi5cTTA3OS4u
CiAgICAwNDUwOiAxNSA1QyA0RCAzMCAzOCAzMCAwNiAwMCAxNSA1QyA0RCAzMCAzOCAzMSAwNiAw
MCAgLlxNMDgwLi4uXE0wODEuLgogICAgMDQ2MDogMTUgNUMgNEQgMzEgMzIgMzcgMDYgMDAgMTUg
NUMgNUYgNDIgNDIgNEUgMDEgMDAgIC5cTTEyNy4uLlxfQkJOLi4KICAgIDA0NzA6IDE1IDVDIDJF
IDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMzIDA2IDAwIDE1IDVDIDJGICAuXC5fU0JfUENJMy4uLlwv
CiAgICAwNDgwOiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMyA0NyA1MCA1MCAzMCAwNiAwMCAx
NSAgLl9TQl9QQ0kzR1BQMC4uLgogICAgMDQ5MDogNUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAgNDMg
NDkgMzMgNDcgNTAgNTAgMzEgMDYgIFwvLl9TQl9QQ0kzR1BQMS4KICAgIDA0QTA6IDAwIDE1IDVD
IDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMzIDQ3IDUwIDUwICAuLlwvLl9TQl9QQ0kzR1BQ
CiAgICAwNEIwOiAzMiAwNiAwMCAxNSA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMyA0
NyAgMi4uLlwvLl9TQl9QQ0kzRwogICAgMDRDMDogNTAgNTAgMzMgMDYgMDAgMTUgNUMgMkYgMDMg
NUYgNTMgNDIgNUYgNTAgNDMgNDkgIFBQMy4uLlwvLl9TQl9QQ0kKICAgIDA0RDA6IDMzIDQ3IDUw
IDUwIDM0IDA2IDAwIDE1IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwICAzR1BQNC4uLlwvLl9TQl9Q
CiAgICAwNEUwOiA0MyA0OSAzMyA0NyA1MCA1MCAzNSAwNiAwMCAxNSA1QyAyRiAwMyA1RiA1MyA0
MiAgQ0kzR1BQNS4uLlwvLl9TQgogICAgMDRGMDogNUYgNTAgNDMgNDkgMzMgNDcgNTAgNTAgMzYg
MDYgMDAgMTUgNUMgMkYgMDMgNUYgIF9QQ0kzR1BQNi4uLlwvLl8KICAgIDA1MDA6IDUzIDQyIDVG
IDUwIDQzIDQ5IDMzIDQ3IDUwIDUwIDM3IDA2IDAwIDE1IDVDIDJGICBTQl9QQ0kzR1BQNy4uLlwv
CiAgICAwNTEwOiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMyA0NyA1MCA1MCAzOCAwNiAwMCAx
NSAgLl9TQl9QQ0kzR1BQOC4uLgogICAgMDUyMDogNUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAgNDMg
NDkgMzMgNDcgNTAgNTAgMzkgMDYgIFwvLl9TQl9QQ0kzR1BQOS4KICAgIDA1MzA6IDAwIDE1IDVD
IDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMzIDQ3IDUwIDUwICAuLlwvLl9TQl9QQ0kzR1BQ
CiAgICAwNTQwOiA0MSAwNiAwMCAxNSA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMyA0
NyAgQS4uLlwvLl9TQl9QQ0kzRwogICAgMDU1MDogNTAgNTAgNDIgMDYgMDAgMTUgNUMgMkYgMDMg
NUYgNTMgNDIgNUYgNTAgNDMgNDkgIFBQQi4uLlwvLl9TQl9QQ0kKICAgIDA1NjA6IDMzIDQ3IDUw
IDUwIDQzIDA2IDAwIDE1IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwICAzR1BQQy4uLlwvLl9TQl9Q
CiAgICAwNTcwOiA0MyA0OSAzMyA0NyA1MCA1MCA0NCAwNiAwMCAxNSA1QyAyRiAwMyA1RiA1MyA0
MiAgQ0kzR1BQRC4uLlwvLl9TQgogICAgMDU4MDogNUYgNTAgNDMgNDkgMzMgNDcgNTAgNTAgNDUg
MDYgMDAgMTUgNUMgMkYgMDMgNUYgIF9QQ0kzR1BQRS4uLlwvLl8KICAgIDA1OTA6IDUzIDQyIDVG
IDUwIDQzIDQ5IDMzIDQ3IDUwIDUwIDQ2IDA2IDAwIDE1IDVDIDJGICBTQl9QQ0kzR1BQRi4uLlwv
CiAgICAwNUEwOiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMyA0NyA1MCA1MCA0NyAwNiAwMCAx
NSAgLl9TQl9QQ0kzR1BQRy4uLgogICAgMDVCMDogNUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAgNDMg
NDkgMzMgNDcgNTAgNTAgNDggMDYgIFwvLl9TQl9QQ0kzR1BQSC4KICAgIDA1QzA6IDAwIDE1IDVD
IDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMzIDQ3IDUwIDMxICAuLlwvLl9TQl9QQ0kzR1Ax
CiAgICAwNUQwOiAzNSAwNiAwMCAxNSA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMyA0
NyAgNS4uLlwvLl9TQl9QQ0kzRwogICAgMDVFMDogNTAgMzIgMzUgMDYgMDAgMTUgNUMgMkYgMDMg
NUYgNTMgNDIgNUYgNTAgNDMgNDkgIFAyNS4uLlwvLl9TQl9QQ0kKICAgIDA1RjA6IDMzIDQ3IDUw
IDMzIDM1IDA2IDAwIDE1IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwICAzR1AzNS4uLlwvLl9TQl9Q
CiAgICAwNjAwOiA0MyA0OSAzMyA0NyA1MCAzNCAzNSAwNiAwMCAxNSA1QyAyRiAwMyA1RiA1MyA0
MiAgQ0kzR1A0NS4uLlwvLl9TQgogICAgMDYxMDogNUYgNTAgNDMgNDkgMzMgNDcgNTAgMzEgMzcg
MDYgMDAgMTUgNUMgMkYgMDMgNUYgIF9QQ0kzR1AxNy4uLlwvLl8KICAgIDA2MjA6IDUzIDQyIDVG
IDUwIDQzIDQ5IDMzIDQ3IDUwIDMyIDM3IDA2IDAwIDEwIDhBIEUxICBTQl9QQ0kzR1AyNy4uLi4u
CiAgICAwNjMwOiAwMSA1QyAyRSA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMyAwOCA0NSA1NCA1MCAz
MCAgLlwuX1NCX1BDSTMuRVRQMAogICAgMDY0MDogMEEgNTUgMDggNDUgNTQgNTAgMzEgMEEgNTUg
MDggNDUgNTQgNTAgMzIgMEEgNTUgIC5VLkVUUDEuVS5FVFAyLlUKICAgIDA2NTA6IDA4IDQ1IDU0
IDUwIDMzIDBBIDU1IDA4IDQ1IDU0IDUwIDM0IDBBIDU1IDA4IDQ1ICAuRVRQMy5VLkVUUDQuVS5F
CiAgICAwNjYwOiA1NCA1MCAzNSAwQSA1NSAwOCA0NSA1NCA1MCAzNiAwQSA1NSAwOCA0NSA1NCA1
MCAgVFA1LlUuRVRQNi5VLkVUUAogICAgMDY3MDogMzcgMEEgNTUgMDggNDUgNTQgNTAgMzggMEEg
NTUgMDggNDUgNTQgNTAgMzkgMEEgIDcuVS5FVFA4LlUuRVRQOS4KICAgIDA2ODA6IDU1IDA4IDQ1
IDU0IDUwIDQxIDBBIDU1IDA4IDQ1IDU0IDUwIDQyIDBBIDU1IDA4ICBVLkVUUEEuVS5FVFBCLlUu
CiAgICAwNjkwOiA0NSA1NCA1MCA0MyAwQSA1NSAwOCA0NSA1NCA1MCA0NCAwQSA1NSAwOCA0NSA1
NCAgRVRQQy5VLkVUUEQuVS5FVAogICAgMDZBMDogNTAgNDUgMEEgNTUgMDggNDUgNTQgNTAgNDYg
MEEgNTUgMDggNDUgNTQgNTAgNDcgIFBFLlUuRVRQRi5VLkVUUEcKICAgIDA2QjA6IDBBIDU1IDA4
IDQ1IDU0IDUwIDQ4IDBBIDU1IDA4IDQ1IDU0IDMxIDM1IDBBIDU1ICAuVS5FVFBILlUuRVQxNS5V
CiAgICAwNkMwOiAwOCA0NSA1NCAzMiAzNSAwQSA1NSAwOCA0NSA1NCAzMyAzNSAwQSA1NSAwOCA0
NSAgLkVUMjUuVS5FVDM1LlUuRQogICAgMDZEMDogNTQgMzQgMzUgMEEgNTUgMDggNDUgNTQgMzEg
MzcgMEEgNTUgMDggNDUgNTQgMzIgIFQ0NS5VLkVUMTcuVS5FVDIKICAgIDA2RTA6IDM3IDBBIDU1
IDE0IDg0IEQ2IDAxIDUwIDUwIDREIDQ1IDAwIDREIDM0IDM2IDMwICA3LlUuLi4uUFBNRS5NNDYw
CiAgICAwNkYwOiAwRCAyMCAyMCA0RiA0NSA0RCAyRCA0MSA1MyA0QyAyRCA1QyA1RiA1MyA0MiAy
RSAgLiAgT0VNLUFTTC1cX1NCLgogICAgMDcwMDogNTAgNDMgNDkgMzMgMkUgNTAgNTAgNEQgNDUg
MEEgMDAgMDAgMDAgMDAgMDAgMDAgIFBDSTMuUFBNRS4uLi4uLi4KICAgIDA3MTA6IDAwIEEwIDRG
IDE4IDkyIDkzIDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5ICAuLk8uLi5cLy5fU0JfUENJ
CiAgICAwNzIwOiAzMyA0NSA1NCA1MCAzMCAwQSBGRiA3MCA3QSA0RCAzMCAzMSAzNyA1RiA0MiA0
MiAgM0VUUDAuLnB6TTAxN19CQgogICAgMDczMDogNEUgMDEgMDEgMEEgNzggMDAgMEEgMTggMEEg
MTAgMDAgNUMgMkYgMDMgNUYgNTMgIE4uLi54Li4uLi4uXC8uX1MKICAgIDA3NDA6IDQyIDVGIDUw
IDQzIDQ5IDMzIDQ1IDU0IDUwIDMwIEEwIDQ2IDE1IDkxIDkzIDVDICBCX1BDSTNFVFAwLkYuLi5c
CiAgICAwNzUwOiAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMyA0NSA1NCA1MCAzMCAwMSA5
MyAgLy5fU0JfUENJM0VUUDAuLgogICAgMDc2MDogNUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAgNDMg
NDkgMzMgNDUgNTQgNTAgMzAgMEEgIFwvLl9TQl9QQ0kzRVRQMC4KICAgIDA3NzA6IDAzIEEwIDRG
IDEyIDVCIDEyIDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5ICAuLk8uWy5cLy5fU0JfUENJ
CiAgICAwNzgwOiAzMyA0NyA1MCA1MCAzMCAwMCBBMCA0OSAwNiA5MiA5MyA0RCAzNiAzMiAzMCAw
MCAgM0dQUDAuLkkuLi5NNjIwLgogICAgMDc5MDogQTAgNEYgMDUgOTMgNEQgMzAgMzQgMzkgNEQg
MzYgMzIgMzAgMEEgMTAgMDEgQTAgIC5PLi5NMDQ5TTYyMC4uLi4KICAgIDA3QTA6IDQwIDA1IDkz
IDdCIDREIDMwIDM0IDM5IDREIDM2IDMyIDMwIDBBIDUyIDBBIDAyICBALi57TTA0OU02MjAuUi4u
CiAgICAwN0IwOiAwMCAwMCA0RCAzNCAzNiAzMCAwRCAyMCAyMCAyMCAyMCA0RSA2RiA3NCA2OSA2
NiAgLi5NNDYwLiAgICBOb3RpZgogICAgMDdDMDogNzkgMjAgMjggNUMgNUYgNTMgNDIgMkUgNTAg
NDMgNDkgMzMgMkUgNDcgNTAgNTAgIHkgKFxfU0IuUENJMy5HUFAKICAgIDA3RDA6IDMwIDJDIDIw
IDMwIDc4IDMwIDI5IDBBIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDg2ICAwLCAweDApLi4uLi4uLi4u
CiAgICAwN0UwOiA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMyA0NyA1MCA1MCAzMCAw
MCAgXC8uX1NCX1BDSTNHUFAwLgogICAgMDdGMDogNEQgMzQgMzYgMzAgMEQgMjAgMjAgMjAgMjAg
NEUgNkYgNzQgNjkgNjYgNzkgMjAgIE00NjAuICAgIE5vdGlmeSAKICAgIDA4MDA6IDI4IDVDIDVG
IDUzIDQyIDJFIDUwIDQzIDQ5IDMzIDJFIDQ3IDUwIDUwIDMwIDJDICAoXF9TQi5QQ0kzLkdQUDAs
CiAgICAwODEwOiAyMCAzMCA3OCAzMiAyOSAwQSAwMCAwMCAwMCAwMCAwMCAwMCAwMCA4NiA1QyAy
RiAgIDB4MikuLi4uLi4uLi5cLwogICAgMDgyMDogMDMgNUYgNTMgNDIgNUYgNTAgNDMgNDkgMzMg
NDcgNTAgNTAgMzAgMEEgMDIgNUIgIC5fU0JfUENJM0dQUDAuLlsKICAgIDA4MzA6IDIyIDBBIDY0
IDcwIDREIDMwIDMxIDM3IDVGIDQyIDQyIDRFIDAxIDAxIDBBIDc4ICAiLmRwTTAxN19CQk4uLi54
CiAgICAwODQwOiAwMCAwQSAyMCA2MCBBMCA0QyAwNSA5MiA5MyA3QiA2MCAwQyAwMCAwMCAwMyAw
MCAgLi4gYC5MLi4ue2AuLi4uLgogICAgMDg1MDogMDAgMDAgNEQgMzAgMzEgMzggNUYgNDIgNDIg
NEUgMDEgMDEgMEEgNzggMDAgMEEgIC4uTTAxOF9CQk4uLi54Li4KICAgIDA4NjA6IDIwIDYwIDcw
IDREIDMwIDMxIDM3IDVGIDQyIDQyIDRFIDAxIDAxIDBBIDc4IDAwICAgYHBNMDE3X0JCTi4uLngu
CiAgICAwODcwOiAwQSAyMCA2MCBBMCAyRCA5MiA5MyA3QiA2MCAwQyAwMCAwMCAwMyAwMCAwMCAw
MCAgLiBgLi0uLntgLi4uLi4uLgogICAgMDg4MDogNEQgMzAgMzEgMzggNUYgNDIgNDIgNEUgMDEg
MDEgMEEgNzggMDAgMEEgMjAgNjAgIE0wMThfQkJOLi4ueC4uIGAKICAgIDA4OTA6IDcwIDREIDMw
IDMxIDM3IDVGIDQyIDQyIDRFIDAxIDAxIDBBIDc4IDAwIDBBIDIwICBwTTAxN19CQk4uLi54Li4g
CiAgICAwOEEwOiA2MCBBMCA0QiAxMiA5MiA5MyA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0
OSAgYC5LLi4uXC8uX1NCX1BDSQogICAgMDhCMDogMzMgNDUgNTQgNTAgMzEgMEEgRkYgNzAgN0Eg
NEQgMzAgMzEgMzcgNUYgNDIgNDIgIDNFVFAxLi5wek0wMTdfQkIKICAgIDA4QzA6IDRFIDAxIDBB
IDAyIDBBIDc4IDAwIDBBIDE4IDBBIDEwIDAwIDVDIDJGIDAzIDVGICBOLi4uLnguLi4uLi5cLy5f
CiAgICAwOEQwOiA1MyA0MiA1RiA1MCA0MyA0OSAzMyA0NSA1NCA1MCAzMSBBMCA0MSAwRiA5MSA5
MyAgU0JfUENJM0VUUDEuQS4uLgogICAgMDhFMDogNUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAgNDMg
NDkgMzMgNDUgNTQgNTAgMzEgMDEgIFwvLl9TQl9QQ0kzRVRQMS4KICAgIDA4RjA6IDkzIDVDIDJG
IDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMzIDQ1IDU0IDUwIDMxICAuXC8uX1NCX1BDSTNFVFAx
CiAgICAwOTAwOiAwQSAwMyBBMCA0QSAwQyA1QiAxMiA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0
MyAgLi4uSi5bLlwvLl9TQl9QQwogICAgMDkxMDogNDkgMzMgNDcgNTAgNTAgMzEgMDAgNEQgMzQg
MzYgMzAgMEQgMjAgMjAgMjAgMjAgIEkzR1BQMS5NNDYwLiAgICAKICAgIDA5MjA6IDRFIDZGIDc0
IDY5IDY2IDc5IDIwIDI4IDVDIDVGIDUzIDQyIDJFIDUwIDQzIDQ5ICBOb3RpZnkgKFxfU0IuUENJ
CiAgICAwOTMwOiAzMyAyRSA0NyA1MCA1MCAzMSAyQyAyMCAzMCA3OCAzMiAyOSAwQSAwMCAwMCAw
MCAgMy5HUFAxLCAweDIpLi4uLgogICAgMDk0MDogMDAgMDAgMDAgMDAgODYgNUMgMkYgMDMgNUYg
NTMgNDIgNUYgNTAgNDMgNDkgMzMgIC4uLi4uXC8uX1NCX1BDSTMKICAgIDA5NTA6IDQ3IDUwIDUw
IDMxIDBBIDAyIDVCIDIyIDBBIDY0IDcwIDREIDMwIDMxIDM3IDVGICBHUFAxLi5bIi5kcE0wMTdf
CiAgICAwOTYwOiA0MiA0MiA0RSAwMSAwQSAwMiAwQSA3OCAwMCAwQSAyMCA2MCBBMCA0MCAwNiA5
MiAgQkJOLi4uLnguLiBgLkAuLgogICAgMDk3MDogOTMgN0IgNjAgMEMgMDAgMDAgMDMgMDAgMDAg
MDAgNEQgMzAgMzEgMzggNUYgNDIgIC57YC4uLi4uLi5NMDE4X0IKICAgIDA5ODA6IDQyIDRFIDAx
IDBBIDAyIDBBIDc4IDAwIDBBIDIwIDYwIDcwIDREIDMwIDMxIDM3ICBCTi4uLi54Li4gYHBNMDE3
CiAgICAwOTkwOiA1RiA0MiA0MiA0RSAwMSAwQSAwMiAwQSA3OCAwMCAwQSAyMCA2MCBBMCAyRiA5
MiAgX0JCTi4uLi54Li4gYC4vLgogICAgMDlBMDogOTMgN0IgNjAgMEMgMDAgMDAgMDMgMDAgMDAg
MDAgNEQgMzAgMzEgMzggNUYgNDIgIC57YC4uLi4uLi5NMDE4X0IKICAgIDA5QjA6IDQyIDRFIDAx
IDBBIDAyIDBBIDc4IDAwIDBBIDIwIDYwIDcwIDREIDMwIDMxIDM3ICBCTi4uLi54Li4gYHBNMDE3
CiAgICAwOUMwOiA1RiA0MiA0MiA0RSAwMSAwQSAwMiAwQSA3OCAwMCAwQSAyMCA2MCBBMCA0QiAx
MiAgX0JCTi4uLi54Li4gYC5LLgogICAgMDlEMDogOTIgOTMgNUMgMkYgMDMgNUYgNTMgNDIgNUYg
NTAgNDMgNDkgMzMgNDUgNTQgNTAgIC4uXC8uX1NCX1BDSTNFVFAKICAgIDA5RTA6IDMyIDBBIEZG
IDcwIDdBIDREIDMwIDMxIDM3IDVGIDQyIDQyIDRFIDAxIDBBIDAzICAyLi5wek0wMTdfQkJOLi4u
CiAgICAwOUYwOiAwQSA3OCAwMCAwQSAxOCAwQSAxMCAwMCA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1
MCAgLnguLi4uLi5cLy5fU0JfUAogICAgMEEwMDogNDMgNDkgMzMgNDUgNTQgNTAgMzIgQTAgNDEg
MEYgOTEgOTMgNUMgMkYgMDMgNUYgIENJM0VUUDIuQS4uLlwvLl8KICAgIDBBMTA6IDUzIDQyIDVG
IDUwIDQzIDQ5IDMzIDQ1IDU0IDUwIDMyIDAxIDkzIDVDIDJGIDAzICBTQl9QQ0kzRVRQMi4uXC8u
CiAgICAwQTIwOiA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMyA0NSA1NCA1MCAzMiAwQSAwMyBBMCA0
QSAgX1NCX1BDSTNFVFAyLi4uSgogICAgMEEzMDogMEMgNUIgMTIgNUMgMkYgMDMgNUYgNTMgNDIg
NUYgNTAgNDMgNDkgMzMgNDcgNTAgIC5bLlwvLl9TQl9QQ0kzR1AKICAgIDBBNDA6IDUwIDMyIDAw
IDREIDM0IDM2IDMwIDBEIDIwIDIwIDIwIDIwIDRFIDZGIDc0IDY5ICBQMi5NNDYwLiAgICBOb3Rp
CiAgICAwQTUwOiA2NiA3OSAyMCAyOCA1QyA1RiA1MyA0MiAyRSA1MCA0MyA0OSAzMyAyRSA0NyA1
MCAgZnkgKFxfU0IuUENJMy5HUAogICAgMEE2MDogNTAgMzIgMkMgMjAgMzAgNzggMzIgMjkgMEEg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgIFAyLCAweDIpLi4uLi4uLi4KICAgIDBBNzA6IDg2IDVDIDJG
IDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMzIDQ3IDUwIDUwIDMyICAuXC8uX1NCX1BDSTNHUFAy
CiAgICAwQTgwOiAwQSAwMiA1QiAyMiAwQSA2NCA3MCA0RCAzMCAzMSAzNyA1RiA0MiA0MiA0RSAw
MSAgLi5bIi5kcE0wMTdfQkJOLgogICAgMEE5MDogMEEgMDMgMEEgNzggMDAgMEEgMjAgNjAgQTAg
NDAgMDYgOTIgOTMgN0IgNjAgMEMgIC4uLnguLiBgLkAuLi57YC4KICAgIDBBQTA6IDAwIDAwIDAz
IDAwIDAwIDAwIDREIDMwIDMxIDM4IDVGIDQyIDQyIDRFIDAxIDBBICAuLi4uLi5NMDE4X0JCTi4u
CiAgICAwQUIwOiAwMyAwQSA3OCAwMCAwQSAyMCA2MCA3MCA0RCAzMCAzMSAzNyA1RiA0MiA0MiA0
RSAgLi54Li4gYHBNMDE3X0JCTgogICAgMEFDMDogMDEgMEEgMDMgMEEgNzggMDAgMEEgMjAgNjAg
QTAgMkYgOTIgOTMgN0IgNjAgMEMgIC4uLi54Li4gYC4vLi57YC4KICAgIDBBRDA6IDAwIDAwIDAz
IDAwIDAwIDAwIDREIDMwIDMxIDM4IDVGIDQyIDQyIDRFIDAxIDBBICAuLi4uLi5NMDE4X0JCTi4u
CiAgICAwQUUwOiAwMyAwQSA3OCAwMCAwQSAyMCA2MCA3MCA0RCAzMCAzMSAzNyA1RiA0MiA0MiA0
RSAgLi54Li4gYHBNMDE3X0JCTgogICAgMEFGMDogMDEgMEEgMDMgMEEgNzggMDAgMEEgMjAgNjAg
QTAgNEIgMTIgOTIgOTMgNUMgMkYgIC4uLi54Li4gYC5LLi4uXC8KICAgIDBCMDA6IDAzIDVGIDUz
IDQyIDVGIDUwIDQzIDQ5IDMzIDQ1IDU0IDUwIDMzIDBBIEZGIDcwICAuX1NCX1BDSTNFVFAzLi5w
CiAgICAwQjEwOiA3QSA0RCAzMCAzMSAzNyA1RiA0MiA0MiA0RSAwMSAwQSAwNCAwQSA3OCAwMCAw
QSAgek0wMTdfQkJOLi4uLnguLgogICAgMEIyMDogMTggMEEgMTAgMDAgNUMgMkYgMDMgNUYgNTMg
NDIgNUYgNTAgNDMgNDkgMzMgNDUgIC4uLi5cLy5fU0JfUENJM0UKICAgIDBCMzA6IDU0IDUwIDMz
IEEwIDQxIDBGIDkxIDkzIDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwICBUUDMuQS4uLlwvLl9TQl9Q
CiAgICAwQjQwOiA0MyA0OSAzMyA0NSA1NCA1MCAzMyAwMSA5MyA1QyAyRiAwMyA1RiA1MyA0MiA1
RiAgQ0kzRVRQMy4uXC8uX1NCXwogICAgMEI1MDogNTAgNDMgNDkgMzMgNDUgNTQgNTAgMzMgMEEg
MDMgQTAgNEEgMEMgNUIgMTIgNUMgIFBDSTNFVFAzLi4uSi5bLlwKICAgIDBCNjA6IDJGIDAzIDVG
IDUzIDQyIDVGIDUwIDQzIDQ5IDMzIDQ3IDUwIDUwIDMzIDAwIDREICAvLl9TQl9QQ0kzR1BQMy5N
CiAgICAwQjcwOiAzNCAzNiAzMCAwRCAyMCAyMCAyMCAyMCA0RSA2RiA3NCA2OSA2NiA3OSAyMCAy
OCAgNDYwLiAgICBOb3RpZnkgKAogICAgMEI4MDogNUMgNUYgNTMgNDIgMkUgNTAgNDMgNDkgMzMg
MkUgNDcgNTAgNTAgMzMgMkMgMjAgIFxfU0IuUENJMy5HUFAzLCAKICAgIDBCOTA6IDMwIDc4IDMy
IDI5IDBBIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDg2IDVDIDJGIDAzICAweDIpLi4uLi4uLi4uXC8u
CiAgICAwQkEwOiA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMyA0NyA1MCA1MCAzMyAwQSAwMiA1QiAy
MiAgX1NCX1BDSTNHUFAzLi5bIgogICAgMEJCMDogMEEgNjQgNzAgNEQgMzAgMzEgMzcgNUYgNDIg
NDIgNEUgMDEgMEEgMDQgMEEgNzggIC5kcE0wMTdfQkJOLi4uLngKICAgIDBCQzA6IDAwIDBBIDIw
IDYwIEEwIDQwIDA2IDkyIDkzIDdCIDYwIDBDIDAwIDAwIDAzIDAwICAuLiBgLkAuLi57YC4uLi4u
CiAgICAwQkQwOiAwMCAwMCA0RCAzMCAzMSAzOCA1RiA0MiA0MiA0RSAwMSAwQSAwNCAwQSA3OCAw
MCAgLi5NMDE4X0JCTi4uLi54LgogICAgMEJFMDogMEEgMjAgNjAgNzAgNEQgMzAgMzEgMzcgNUYg
NDIgNDIgNEUgMDEgMEEgMDQgMEEgIC4gYHBNMDE3X0JCTi4uLi4KICAgIDBCRjA6IDc4IDAwIDBB
IDIwIDYwIEEwIDJGIDkyIDkzIDdCIDYwIDBDIDAwIDAwIDAzIDAwICB4Li4gYC4vLi57YC4uLi4u
CiAgICAwQzAwOiAwMCAwMCA0RCAzMCAzMSAzOCA1RiA0MiA0MiA0RSAwMSAwQSAwNCAwQSA3OCAw
MCAgLi5NMDE4X0JCTi4uLi54LgogICAgMEMxMDogMEEgMjAgNjAgNzAgNEQgMzAgMzEgMzcgNUYg
NDIgNDIgNEUgMDEgMEEgMDQgMEEgIC4gYHBNMDE3X0JCTi4uLi4KICAgIDBDMjA6IDc4IDAwIDBB
IDIwIDYwIEEwIDRCIDEyIDkyIDkzIDVDIDJGIDAzIDVGIDUzIDQyICB4Li4gYC5LLi4uXC8uX1NC
CiAgICAwQzMwOiA1RiA1MCA0MyA0OSAzMyA0NSA1NCA1MCAzNCAwQSBGRiA3MCA3QSA0RCAzMCAz
MSAgX1BDSTNFVFA0Li5wek0wMQogICAgMEM0MDogMzcgNUYgNDIgNDIgNEUgMDEgMEEgMDUgMEEg
NzggMDAgMEEgMTggMEEgMTAgMDAgIDdfQkJOLi4uLnguLi4uLi4KICAgIDBDNTA6IDVDIDJGIDAz
IDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMzIDQ1IDU0IDUwIDM0IEEwICBcLy5fU0JfUENJM0VUUDQu
CiAgICAwQzYwOiA0MSAwRiA5MSA5MyA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMyA0
NSAgQS4uLlwvLl9TQl9QQ0kzRQogICAgMEM3MDogNTQgNTAgMzQgMDEgOTMgNUMgMkYgMDMgNUYg
NTMgNDIgNUYgNTAgNDMgNDkgMzMgIFRQNC4uXC8uX1NCX1BDSTMKICAgIDBDODA6IDQ1IDU0IDUw
IDM0IDBBIDAzIEEwIDRBIDBDIDVCIDEyIDVDIDJGIDAzIDVGIDUzICBFVFA0Li4uSi5bLlwvLl9T
CiAgICAwQzkwOiA0MiA1RiA1MCA0MyA0OSAzMyA0NyA1MCA1MCAzNCAwMCA0RCAzNCAzNiAzMCAw
RCAgQl9QQ0kzR1BQNC5NNDYwLgogICAgMENBMDogMjAgMjAgMjAgMjAgNEUgNkYgNzQgNjkgNjYg
NzkgMjAgMjggNUMgNUYgNTMgNDIgICAgICBOb3RpZnkgKFxfU0IKICAgIDBDQjA6IDJFIDUwIDQz
IDQ5IDMzIDJFIDQ3IDUwIDUwIDM0IDJDIDIwIDMwIDc4IDMyIDI5ICAuUENJMy5HUFA0LCAweDIp
CiAgICAwQ0MwOiAwQSAwMCAwMCAwMCAwMCAwMCAwMCAwMCA4NiA1QyAyRiAwMyA1RiA1MyA0MiA1
RiAgLi4uLi4uLi4uXC8uX1NCXwogICAgMENEMDogNTAgNDMgNDkgMzMgNDcgNTAgNTAgMzQgMEEg
MDIgNUIgMjIgMEEgNjQgNzAgNEQgIFBDSTNHUFA0Li5bIi5kcE0KICAgIDBDRTA6IDMwIDMxIDM3
IDVGIDQyIDQyIDRFIDAxIDBBIDA1IDBBIDc4IDAwIDBBIDIwIDYwICAwMTdfQkJOLi4uLnguLiBg
CiAgICAwQ0YwOiBBMCA0MCAwNiA5MiA5MyA3QiA2MCAwQyAwMCAwMCAwMyAwMCAwMCAwMCA0RCAz
MCAgLkAuLi57YC4uLi4uLi5NMAogICAgMEQwMDogMzEgMzggNUYgNDIgNDIgNEUgMDEgMEEgMDUg
MEEgNzggMDAgMEEgMjAgNjAgNzAgIDE4X0JCTi4uLi54Li4gYHAKICAgIDBEMTA6IDREIDMwIDMx
IDM3IDVGIDQyIDQyIDRFIDAxIDBBIDA1IDBBIDc4IDAwIDBBIDIwICBNMDE3X0JCTi4uLi54Li4g
CiAgICAwRDIwOiA2MCBBMCAyRiA5MiA5MyA3QiA2MCAwQyAwMCAwMCAwMyAwMCAwMCAwMCA0RCAz
MCAgYC4vLi57YC4uLi4uLi5NMAogICAgMEQzMDogMzEgMzggNUYgNDIgNDIgNEUgMDEgMEEgMDUg
MEEgNzggMDAgMEEgMjAgNjAgNzAgIDE4X0JCTi4uLi54Li4gYHAKICAgIDBENDA6IDREIDMwIDMx
IDM3IDVGIDQyIDQyIDRFIDAxIDBBIDA1IDBBIDc4IDAwIDBBIDIwICBNMDE3X0JCTi4uLi54Li4g
CiAgICAwRDUwOiA2MCBBMCA0QiAxMiA5MiA5MyA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0
OSAgYC5LLi4uXC8uX1NCX1BDSQogICAgMEQ2MDogMzMgNDUgNTQgNTAgMzUgMEEgRkYgNzAgN0Eg
NEQgMzAgMzEgMzcgNUYgNDIgNDIgIDNFVFA1Li5wek0wMTdfQkIKICAgIDBENzA6IDRFIDAxIDBB
IDA2IDBBIDc4IDAwIDBBIDE4IDBBIDEwIDAwIDVDIDJGIDAzIDVGICBOLi4uLnguLi4uLi5cLy5f
CiAgICAwRDgwOiA1MyA0MiA1RiA1MCA0MyA0OSAzMyA0NSA1NCA1MCAzNSBBMCA0MSAwRiA5MSA5
MyAgU0JfUENJM0VUUDUuQS4uLgogICAgMEQ5MDogNUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAgNDMg
NDkgMzMgNDUgNTQgNTAgMzUgMDEgIFwvLl9TQl9QQ0kzRVRQNS4KICAgIDBEQTA6IDkzIDVDIDJG
IDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMzIDQ1IDU0IDUwIDM1ICAuXC8uX1NCX1BDSTNFVFA1
CiAgICAwREIwOiAwQSAwMyBBMCA0QSAwQyA1QiAxMiA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0
MyAgLi4uSi5bLlwvLl9TQl9QQwogICAgMERDMDogNDkgMzMgNDcgNTAgNTAgMzUgMDAgNEQgMzQg
MzYgMzAgMEQgMjAgMjAgMjAgMjAgIEkzR1BQNS5NNDYwLiAgICAKICAgIDBERDA6IDRFIDZGIDc0
IDY5IDY2IDc5IDIwIDI4IDVDIDVGIDUzIDQyIDJFIDUwIDQzIDQ5ICBOb3RpZnkgKFxfU0IuUENJ
CiAgICAwREUwOiAzMyAyRSA0NyA1MCA1MCAzNSAyQyAyMCAzMCA3OCAzMiAyOSAwQSAwMCAwMCAw
MCAgMy5HUFA1LCAweDIpLi4uLgogICAgMERGMDogMDAgMDAgMDAgMDAgODYgNUMgMkYgMDMgNUYg
NTMgNDIgNUYgNTAgNDMgNDkgMzMgIC4uLi4uXC8uX1NCX1BDSTMKICAgIDBFMDA6IDQ3IDUwIDUw
IDM1IDBBIDAyIDVCIDIyIDBBIDY0IDcwIDREIDMwIDMxIDM3IDVGICBHUFA1Li5bIi5kcE0wMTdf
CiAgICAwRTEwOiA0MiA0MiA0RSAwMSAwQSAwNiAwQSA3OCAwMCAwQSAyMCA2MCBBMCA0MCAwNiA5
MiAgQkJOLi4uLnguLiBgLkAuLgogICAgMEUyMDogOTMgN0IgNjAgMEMgMDAgMDAgMDMgMDAgMDAg
MDAgNEQgMzAgMzEgMzggNUYgNDIgIC57YC4uLi4uLi5NMDE4X0IKICAgIDBFMzA6IDQyIDRFIDAx
IDBBIDA2IDBBIDc4IDAwIDBBIDIwIDYwIDcwIDREIDMwIDMxIDM3ICBCTi4uLi54Li4gYHBNMDE3
CiAgICAwRTQwOiA1RiA0MiA0MiA0RSAwMSAwQSAwNiAwQSA3OCAwMCAwQSAyMCA2MCBBMCAyRiA5
MiAgX0JCTi4uLi54Li4gYC4vLgogICAgMEU1MDogOTMgN0IgNjAgMEMgMDAgMDAgMDMgMDAgMDAg
MDAgNEQgMzAgMzEgMzggNUYgNDIgIC57YC4uLi4uLi5NMDE4X0IKICAgIDBFNjA6IDQyIDRFIDAx
IDBBIDA2IDBBIDc4IDAwIDBBIDIwIDYwIDcwIDREIDMwIDMxIDM3ICBCTi4uLi54Li4gYHBNMDE3
CiAgICAwRTcwOiA1RiA0MiA0MiA0RSAwMSAwQSAwNiAwQSA3OCAwMCAwQSAyMCA2MCBBMCA0QiAx
MiAgX0JCTi4uLi54Li4gYC5LLgogICAgMEU4MDogOTIgOTMgNUMgMkYgMDMgNUYgNTMgNDIgNUYg
NTAgNDMgNDkgMzMgNDUgNTQgNTAgIC4uXC8uX1NCX1BDSTNFVFAKICAgIDBFOTA6IDM2IDBBIEZG
IDcwIDdBIDREIDMwIDMxIDM3IDVGIDQyIDQyIDRFIDAxIDBBIDA3ICA2Li5wek0wMTdfQkJOLi4u
CiAgICAwRUEwOiAwQSA3OCAwMCAwQSAxOCAwQSAxMCAwMCA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1
MCAgLnguLi4uLi5cLy5fU0JfUAogICAgMEVCMDogNDMgNDkgMzMgNDUgNTQgNTAgMzYgQTAgNDEg
MEYgOTEgOTMgNUMgMkYgMDMgNUYgIENJM0VUUDYuQS4uLlwvLl8KICAgIDBFQzA6IDUzIDQyIDVG
IDUwIDQzIDQ5IDMzIDQ1IDU0IDUwIDM2IDAxIDkzIDVDIDJGIDAzICBTQl9QQ0kzRVRQNi4uXC8u
CiAgICAwRUQwOiA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMyA0NSA1NCA1MCAzNiAwQSAwMyBBMCA0
QSAgX1NCX1BDSTNFVFA2Li4uSgogICAgMEVFMDogMEMgNUIgMTIgNUMgMkYgMDMgNUYgNTMgNDIg
NUYgNTAgNDMgNDkgMzMgNDcgNTAgIC5bLlwvLl9TQl9QQ0kzR1AKICAgIDBFRjA6IDUwIDM2IDAw
IDREIDM0IDM2IDMwIDBEIDIwIDIwIDIwIDIwIDRFIDZGIDc0IDY5ICBQNi5NNDYwLiAgICBOb3Rp
CiAgICAwRjAwOiA2NiA3OSAyMCAyOCA1QyA1RiA1MyA0MiAyRSA1MCA0MyA0OSAzMyAyRSA0NyA1
MCAgZnkgKFxfU0IuUENJMy5HUAogICAgMEYxMDogNTAgMzYgMkMgMjAgMzAgNzggMzIgMjkgMEEg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgIFA2LCAweDIpLi4uLi4uLi4KICAgIDBGMjA6IDg2IDVDIDJG
IDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMzIDQ3IDUwIDUwIDM2ICAuXC8uX1NCX1BDSTNHUFA2
CiAgICAwRjMwOiAwQSAwMiA1QiAyMiAwQSA2NCA3MCA0RCAzMCAzMSAzNyA1RiA0MiA0MiA0RSAw
MSAgLi5bIi5kcE0wMTdfQkJOLgogICAgMEY0MDogMEEgMDcgMEEgNzggMDAgMEEgMjAgNjAgQTAg
NDAgMDYgOTIgOTMgN0IgNjAgMEMgIC4uLnguLiBgLkAuLi57YC4KICAgIDBGNTA6IDAwIDAwIDAz
IDAwIDAwIDAwIDREIDMwIDMxIDM4IDVGIDQyIDQyIDRFIDAxIDBBICAuLi4uLi5NMDE4X0JCTi4u
CiAgICAwRjYwOiAwNyAwQSA3OCAwMCAwQSAyMCA2MCA3MCA0RCAzMCAzMSAzNyA1RiA0MiA0MiA0
RSAgLi54Li4gYHBNMDE3X0JCTgogICAgMEY3MDogMDEgMEEgMDcgMEEgNzggMDAgMEEgMjAgNjAg
QTAgMkYgOTIgOTMgN0IgNjAgMEMgIC4uLi54Li4gYC4vLi57YC4KICAgIDBGODA6IDAwIDAwIDAz
IDAwIDAwIDAwIDREIDMwIDMxIDM4IDVGIDQyIDQyIDRFIDAxIDBBICAuLi4uLi5NMDE4X0JCTi4u
CiAgICAwRjkwOiAwNyAwQSA3OCAwMCAwQSAyMCA2MCA3MCA0RCAzMCAzMSAzNyA1RiA0MiA0MiA0
RSAgLi54Li4gYHBNMDE3X0JCTgogICAgMEZBMDogMDEgMEEgMDcgMEEgNzggMDAgMEEgMjAgNjAg
QTAgNDYgMTkgOTIgOTMgNUMgMkYgIC4uLi54Li4gYC5GLi4uXC8KICAgIDBGQjA6IDAzIDVGIDUz
IDQyIDVGIDUwIDQzIDQ5IDMzIDQ1IDU0IDUwIDM3IDBBIEZGIDcwICAuX1NCX1BDSTNFVFA3Li5w
CiAgICAwRkMwOiA3QSA0RCAzMCAzMSAzNyA1RiA0MiA0MiA0RSAwQSAwMiAwMSAwQSA3OCAwMCAw
QSAgek0wMTdfQkJOLi4uLnguLgogICAgMEZEMDogMTggMEEgMTAgMDAgNUMgMkYgMDMgNUYgNTMg
NDIgNUYgNTAgNDMgNDkgMzMgNDUgIC4uLi5cLy5fU0JfUENJM0UKICAgIDBGRTA6IDU0IDUwIDM3
IEEwIDRDIDE1IDkxIDkzIDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwICBUUDcuTC4uLlwvLl9TQl9Q
CiAgICAwRkYwOiA0MyA0OSAzMyA0NSA1NCA1MCAzNyAwMSA5MyA1QyAyRiAwMyA1RiA1MyA0MiA1
RiAgQ0kzRVRQNy4uXC8uX1NCXwogICAgMTAwMDogNTAgNDMgNDkgMzMgNDUgNTQgNTAgMzcgMEEg
MDMgQTAgNDUgMTMgNUIgMTIgNUMgIFBDSTNFVFA3Li4uRS5bLlwKICAgIDEwMTA6IDJGIDAzIDVG
IDUzIDQyIDVGIDUwIDQzIDQ5IDMzIDQ3IDUwIDUwIDM3IDAwIEEwICAvLl9TQl9QQ0kzR1BQNy4u
CiAgICAxMDIwOiA0QSAwNiA5MiA5MyA0RCAzNiAzMiAzMCAwMCBBMCA0MCAwNiA5MyA0RCAzMCAz
NCAgSi4uLk02MjAuLkAuLk0wNAogICAgMTAzMDogMzkgNEQgMzYgMzIgMzAgMEEgMTAgMEEgMDIg
QTAgNDAgMDUgOTMgN0IgNEQgMzAgIDlNNjIwLi4uLi5ALi57TTAKICAgIDEwNDA6IDM0IDM5IDRE
IDM2IDMyIDMwIDBBIDUyIDBBIDAyIDAwIDAwIDREIDM0IDM2IDMwICA0OU02MjAuUi4uLi5NNDYw
CiAgICAxMDUwOiAwRCAyMCAyMCAyMCAyMCA0RSA2RiA3NCA2OSA2NiA3OSAyMCAyOCA1QyA1RiA1
MyAgLiAgICBOb3RpZnkgKFxfUwogICAgMTA2MDogNDIgMkUgNTAgNDMgNDkgMzMgMkUgNDcgNTAg
NTAgMzcgMkMgMjAgMzAgNzggMzAgIEIuUENJMy5HUFA3LCAweDAKICAgIDEwNzA6IDI5IDBBIDAw
IDAwIDAwIDAwIDAwIDAwIDAwIDg2IDVDIDJGIDAzIDVGIDUzIDQyICApLi4uLi4uLi4uXC8uX1NC
CiAgICAxMDgwOiA1RiA1MCA0MyA0OSAzMyA0NyA1MCA1MCAzNyAwMCA0RCAzNCAzNiAzMCAwRCAy
MCAgX1BDSTNHUFA3Lk00NjAuIAogICAgMTA5MDogMjAgMjAgMjAgNEUgNkYgNzQgNjkgNjYgNzkg
MjAgMjggNUMgNUYgNTMgNDIgMkUgICAgIE5vdGlmeSAoXF9TQi4KICAgIDEwQTA6IDUwIDQzIDQ5
IDMzIDJFIDQ3IDUwIDUwIDM3IDJDIDIwIDMwIDc4IDMyIDI5IDBBICBQQ0kzLkdQUDcsIDB4Miku
CiAgICAxMEIwOiAwMCAwMCAwMCAwMCAwMCAwMCAwMCA4NiA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1
MCAgLi4uLi4uLi5cLy5fU0JfUAogICAgMTBDMDogNDMgNDkgMzMgNDcgNTAgNTAgMzcgMEEgMDIg
NUIgMjIgMEEgNjQgNzAgNEQgMzAgIENJM0dQUDcuLlsiLmRwTTAKICAgIDEwRDA6IDMxIDM3IDVG
IDQyIDQyIDRFIDBBIDAyIDAxIDBBIDc4IDAwIDBBIDIwIDYwIEEwICAxN19CQk4uLi4ueC4uIGAu
CiAgICAxMEUwOiA0MCAwNiA5MiA5MyA3QiA2MCAwQyAwMCAwMCAwMyAwMCAwMCAwMCA0RCAzMCAz
MSAgQC4uLntgLi4uLi4uLk0wMQogICAgMTBGMDogMzggNUYgNDIgNDIgNEUgMEEgMDIgMDEgMEEg
NzggMDAgMEEgMjAgNjAgNzAgNEQgIDhfQkJOLi4uLnguLiBgcE0KICAgIDExMDA6IDMwIDMxIDM3
IDVGIDQyIDQyIDRFIDBBIDAyIDAxIDBBIDc4IDAwIDBBIDIwIDYwICAwMTdfQkJOLi4uLnguLiBg
CiAgICAxMTEwOiBBMCAyRiA5MiA5MyA3QiA2MCAwQyAwMCAwMCAwMyAwMCAwMCAwMCA0RCAzMCAz
MSAgLi8uLntgLi4uLi4uLk0wMQogICAgMTEyMDogMzggNUYgNDIgNDIgNEUgMEEgMDIgMDEgMEEg
NzggMDAgMEEgMjAgNjAgNzAgNEQgIDhfQkJOLi4uLnguLiBgcE0KICAgIDExMzA6IDMwIDMxIDM3
IDVGIDQyIDQyIDRFIDBBIDAyIDAxIDBBIDc4IDAwIDBBIDIwIDYwICAwMTdfQkJOLi4uLnguLiBg
CiAgICAxMTQwOiBBMCA0MSAxMyA5MiA5MyA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAz
MyAgLkEuLi5cLy5fU0JfUENJMwogICAgMTE1MDogNDUgNTQgNTAgMzggMEEgRkYgNzAgN0EgNEQg
MzAgMzEgMzcgNUYgNDIgNDIgNEUgIEVUUDguLnB6TTAxN19CQk4KICAgIDExNjA6IDBBIDAyIDBB
IDAyIDBBIDc4IDAwIDBBIDE4IDBBIDEwIDAwIDVDIDJGIDAzIDVGICAuLi4uLnguLi4uLi5cLy5f
CiAgICAxMTcwOiA1MyA0MiA1RiA1MCA0MyA0OSAzMyA0NSA1NCA1MCAzOCBBMCA0NiAwRiA5MSA5
MyAgU0JfUENJM0VUUDguRi4uLgogICAgMTE4MDogNUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAgNDMg
NDkgMzMgNDUgNTQgNTAgMzggMDEgIFwvLl9TQl9QQ0kzRVRQOC4KICAgIDExOTA6IDkzIDVDIDJG
IDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMzIDQ1IDU0IDUwIDM4ICAuXC8uX1NCX1BDSTNFVFA4
CiAgICAxMUEwOiAwQSAwMyBBMCA0RiAwQyA1QiAxMiA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0
MyAgLi4uTy5bLlwvLl9TQl9QQwogICAgMTFCMDogNDkgMzMgNDcgNTAgNTAgMzggMDAgNEQgMzQg
MzYgMzAgMEQgMjAgMjAgMjAgMjAgIEkzR1BQOC5NNDYwLiAgICAKICAgIDExQzA6IDRFIDZGIDc0
IDY5IDY2IDc5IDIwIDI4IDVDIDVGIDUzIDQyIDJFIDUwIDQzIDQ5ICBOb3RpZnkgKFxfU0IuUENJ
CiAgICAxMUQwOiAzMyAyRSA0NyA1MCA1MCAzOCAyQyAyMCAzMCA3OCAzMiAyOSAwQSAwMCAwMCAw
MCAgMy5HUFA4LCAweDIpLi4uLgogICAgMTFFMDogMDAgMDAgMDAgMDAgODYgNUMgMkYgMDMgNUYg
NTMgNDIgNUYgNTAgNDMgNDkgMzMgIC4uLi4uXC8uX1NCX1BDSTMKICAgIDExRjA6IDQ3IDUwIDUw
IDM4IDBBIDAyIDVCIDIyIDBBIDY0IDcwIDREIDMwIDMxIDM3IDVGICBHUFA4Li5bIi5kcE0wMTdf
CiAgICAxMjAwOiA0MiA0MiA0RSAwQSAwMiAwQSAwMiAwQSA3OCAwMCAwQSAyMCA2MCBBMCA0NCAw
NiAgQkJOLi4uLi54Li4gYC5ELgogICAgMTIxMDogOTIgOTMgN0IgNjAgMEMgMDAgMDAgMDMgMDAg
MDAgMDAgNEQgMzAgMzEgMzggNUYgIC4ue2AuLi4uLi4uTTAxOF8KICAgIDEyMjA6IDQyIDQyIDRF
IDBBIDAyIDBBIDAyIDBBIDc4IDAwIDBBIDIwIDYwIDcwIDREIDMwICBCQk4uLi4uLnguLiBgcE0w
CiAgICAxMjMwOiAzMSAzNyA1RiA0MiA0MiA0RSAwQSAwMiAwQSAwMiAwQSA3OCAwMCAwQSAyMCA2
MCAgMTdfQkJOLi4uLi54Li4gYAogICAgMTI0MDogQTAgMzEgOTIgOTMgN0IgNjAgMEMgMDAgMDAg
MDMgMDAgMDAgMDAgNEQgMzAgMzEgIC4xLi57YC4uLi4uLi5NMDEKICAgIDEyNTA6IDM4IDVGIDQy
IDQyIDRFIDBBIDAyIDBBIDAyIDBBIDc4IDAwIDBBIDIwIDYwIDcwICA4X0JCTi4uLi4ueC4uIGBw
CiAgICAxMjYwOiA0RCAzMCAzMSAzNyA1RiA0MiA0MiA0RSAwQSAwMiAwQSAwMiAwQSA3OCAwMCAw
QSAgTTAxN19CQk4uLi4uLnguLgogICAgMTI3MDogMjAgNjAgQTAgNEIgMTIgOTIgOTMgNUMgMkYg
MDMgNUYgNTMgNDIgNUYgNTAgNDMgICBgLksuLi5cLy5fU0JfUEMKICAgIDEyODA6IDQ5IDMzIDQ1
IDU0IDUwIDM5IDBBIEZGIDcwIDdBIDREIDMwIDMxIDM3IDVGIDQyICBJM0VUUDkuLnB6TTAxN19C
CiAgICAxMjkwOiA0MiA0RSAwQSAwMyAwMSAwQSA3OCAwMCAwQSAxOCAwQSAxMCAwMCA1QyAyRiAw
MyAgQk4uLi4ueC4uLi4uLlwvLgogICAgMTJBMDogNUYgNTMgNDIgNUYgNTAgNDMgNDkgMzMgNDUg
NTQgNTAgMzkgQTAgNDEgMEYgOTEgIF9TQl9QQ0kzRVRQOS5BLi4KICAgIDEyQjA6IDkzIDVDIDJG
IDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMzIDQ1IDU0IDUwIDM5ICAuXC8uX1NCX1BDSTNFVFA5
CiAgICAxMkMwOiAwMSA5MyA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMyA0NSA1NCA1
MCAgLi5cLy5fU0JfUENJM0VUUAogICAgMTJEMDogMzkgMEEgMDMgQTAgNEEgMEMgNUIgMTIgNUMg
MkYgMDMgNUYgNTMgNDIgNUYgNTAgIDkuLi5KLlsuXC8uX1NCX1AKICAgIDEyRTA6IDQzIDQ5IDMz
IDQ3IDUwIDUwIDM5IDAwIDREIDM0IDM2IDMwIDBEIDIwIDIwIDIwICBDSTNHUFA5Lk00NjAuICAg
CiAgICAxMkYwOiAyMCA0RSA2RiA3NCA2OSA2NiA3OSAyMCAyOCA1QyA1RiA1MyA0MiAyRSA1MCA0
MyAgIE5vdGlmeSAoXF9TQi5QQwogICAgMTMwMDogNDkgMzMgMkUgNDcgNTAgNTAgMzkgMkMgMjAg
MzAgNzggMzIgMjkgMEEgMDAgMDAgIEkzLkdQUDksIDB4MikuLi4KICAgIDEzMTA6IDAwIDAwIDAw
IDAwIDAwIDg2IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5ICAuLi4uLi5cLy5fU0JfUENJ
CiAgICAxMzIwOiAzMyA0NyA1MCA1MCAzOSAwQSAwMiA1QiAyMiAwQSA2NCA3MCA0RCAzMCAzMSAz
NyAgM0dQUDkuLlsiLmRwTTAxNwogICAgMTMzMDogNUYgNDIgNDIgNEUgMEEgMDMgMDEgMEEgNzgg
MDAgMEEgMjAgNjAgQTAgNDAgMDYgIF9CQk4uLi4ueC4uIGAuQC4KICAgIDEzNDA6IDkyIDkzIDdC
IDYwIDBDIDAwIDAwIDAzIDAwIDAwIDAwIDREIDMwIDMxIDM4IDVGICAuLntgLi4uLi4uLk0wMThf
CiAgICAxMzUwOiA0MiA0MiA0RSAwQSAwMyAwMSAwQSA3OCAwMCAwQSAyMCA2MCA3MCA0RCAzMCAz
MSAgQkJOLi4uLnguLiBgcE0wMQogICAgMTM2MDogMzcgNUYgNDIgNDIgNEUgMEEgMDMgMDEgMEEg
NzggMDAgMEEgMjAgNjAgQTAgMkYgIDdfQkJOLi4uLnguLiBgLi8KICAgIDEzNzA6IDkyIDkzIDdC
IDYwIDBDIDAwIDAwIDAzIDAwIDAwIDAwIDREIDMwIDMxIDM4IDVGICAuLntgLi4uLi4uLk0wMThf
CiAgICAxMzgwOiA0MiA0MiA0RSAwQSAwMyAwMSAwQSA3OCAwMCAwQSAyMCA2MCA3MCA0RCAzMCAz
MSAgQkJOLi4uLnguLiBgcE0wMQogICAgMTM5MDogMzcgNUYgNDIgNDIgNEUgMEEgMDMgMDEgMEEg
NzggMDAgMEEgMjAgNjAgQTAgNDEgIDdfQkJOLi4uLnguLiBgLkEKICAgIDEzQTA6IDEzIDkyIDkz
IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMzIDQ1IDU0ICAuLi5cLy5fU0JfUENJM0VU
CiAgICAxM0IwOiA1MCA0MSAwQSBGRiA3MCA3QSA0RCAzMCAzMSAzNyA1RiA0MiA0MiA0RSAwQSAw
MyAgUEEuLnB6TTAxN19CQk4uLgogICAgMTNDMDogMEEgMDIgMEEgNzggMDAgMEEgMTggMEEgMTAg
MDAgNUMgMkYgMDMgNUYgNTMgNDIgIC4uLnguLi4uLi5cLy5fU0IKICAgIDEzRDA6IDVGIDUwIDQz
IDQ5IDMzIDQ1IDU0IDUwIDQxIEEwIDQ2IDBGIDkxIDkzIDVDIDJGICBfUENJM0VUUEEuRi4uLlwv
CiAgICAxM0UwOiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMyA0NSA1NCA1MCA0MSAwMSA5MyA1
QyAgLl9TQl9QQ0kzRVRQQS4uXAogICAgMTNGMDogMkYgMDMgNUYgNTMgNDIgNUYgNTAgNDMgNDkg
MzMgNDUgNTQgNTAgNDEgMEEgMDMgIC8uX1NCX1BDSTNFVFBBLi4KICAgIDE0MDA6IEEwIDRGIDBD
IDVCIDEyIDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMzICAuTy5bLlwvLl9TQl9QQ0kz
CiAgICAxNDEwOiA0NyA1MCA1MCA0MSAwMCA0RCAzNCAzNiAzMCAwRCAyMCAyMCAyMCAyMCA0RSA2
RiAgR1BQQS5NNDYwLiAgICBObwogICAgMTQyMDogNzQgNjkgNjYgNzkgMjAgMjggNUMgNUYgNTMg
NDIgMkUgNTAgNDMgNDkgMzMgMkUgIHRpZnkgKFxfU0IuUENJMy4KICAgIDE0MzA6IDQ3IDUwIDUw
IDQxIDJDIDIwIDMwIDc4IDMyIDI5IDBBIDAwIDAwIDAwIDAwIDAwICBHUFBBLCAweDIpLi4uLi4u
CiAgICAxNDQwOiAwMCAwMCA4NiA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMyA0NyA1
MCAgLi4uXC8uX1NCX1BDSTNHUAogICAgMTQ1MDogNTAgNDEgMEEgMDIgNUIgMjIgMEEgNjQgNzAg
NEQgMzAgMzEgMzcgNUYgNDIgNDIgIFBBLi5bIi5kcE0wMTdfQkIKICAgIDE0NjA6IDRFIDBBIDAz
IDBBIDAyIDBBIDc4IDAwIDBBIDIwIDYwIEEwIDQ0IDA2IDkyIDkzICBOLi4uLi54Li4gYC5ELi4u
CiAgICAxNDcwOiA3QiA2MCAwQyAwMCAwMCAwMyAwMCAwMCAwMCA0RCAzMCAzMSAzOCA1RiA0MiA0
MiAge2AuLi4uLi4uTTAxOF9CQgogICAgMTQ4MDogNEUgMEEgMDMgMEEgMDIgMEEgNzggMDAgMEEg
MjAgNjAgNzAgNEQgMzAgMzEgMzcgIE4uLi4uLnguLiBgcE0wMTcKICAgIDE0OTA6IDVGIDQyIDQy
IDRFIDBBIDAzIDBBIDAyIDBBIDc4IDAwIDBBIDIwIDYwIEEwIDMxICBfQkJOLi4uLi54Li4gYC4x
CiAgICAxNEEwOiA5MiA5MyA3QiA2MCAwQyAwMCAwMCAwMyAwMCAwMCAwMCA0RCAzMCAzMSAzOCA1
RiAgLi57YC4uLi4uLi5NMDE4XwogICAgMTRCMDogNDIgNDIgNEUgMEEgMDMgMEEgMDIgMEEgNzgg
MDAgMEEgMjAgNjAgNzAgNEQgMzAgIEJCTi4uLi4ueC4uIGBwTTAKICAgIDE0QzA6IDMxIDM3IDVG
IDQyIDQyIDRFIDBBIDAzIDBBIDAyIDBBIDc4IDAwIDBBIDIwIDYwICAxN19CQk4uLi4uLnguLiBg
CiAgICAxNEQwOiBBMCA0MSAxMyA5MiA5MyA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAz
MyAgLkEuLi5cLy5fU0JfUENJMwogICAgMTRFMDogNDUgNTQgNTAgNDIgMEEgRkYgNzAgN0EgNEQg
MzAgMzEgMzcgNUYgNDIgNDIgNEUgIEVUUEIuLnB6TTAxN19CQk4KICAgIDE0RjA6IDBBIDAzIDBB
IDAzIDBBIDc4IDAwIDBBIDE4IDBBIDEwIDAwIDVDIDJGIDAzIDVGICAuLi4uLnguLi4uLi5cLy5f
CiAgICAxNTAwOiA1MyA0MiA1RiA1MCA0MyA0OSAzMyA0NSA1NCA1MCA0MiBBMCA0NiAwRiA5MSA5
MyAgU0JfUENJM0VUUEIuRi4uLgogICAgMTUxMDogNUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAgNDMg
NDkgMzMgNDUgNTQgNTAgNDIgMDEgIFwvLl9TQl9QQ0kzRVRQQi4KICAgIDE1MjA6IDkzIDVDIDJG
IDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMzIDQ1IDU0IDUwIDQyICAuXC8uX1NCX1BDSTNFVFBC
CiAgICAxNTMwOiAwQSAwMyBBMCA0RiAwQyA1QiAxMiA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0
MyAgLi4uTy5bLlwvLl9TQl9QQwogICAgMTU0MDogNDkgMzMgNDcgNTAgNTAgNDIgMDAgNEQgMzQg
MzYgMzAgMEQgMjAgMjAgMjAgMjAgIEkzR1BQQi5NNDYwLiAgICAKICAgIDE1NTA6IDRFIDZGIDc0
IDY5IDY2IDc5IDIwIDI4IDVDIDVGIDUzIDQyIDJFIDUwIDQzIDQ5ICBOb3RpZnkgKFxfU0IuUENJ
CiAgICAxNTYwOiAzMyAyRSA0NyA1MCA1MCA0MiAyQyAyMCAzMCA3OCAzMiAyOSAwQSAwMCAwMCAw
MCAgMy5HUFBCLCAweDIpLi4uLgogICAgMTU3MDogMDAgMDAgMDAgMDAgODYgNUMgMkYgMDMgNUYg
NTMgNDIgNUYgNTAgNDMgNDkgMzMgIC4uLi4uXC8uX1NCX1BDSTMKICAgIDE1ODA6IDQ3IDUwIDUw
IDQyIDBBIDAyIDVCIDIyIDBBIDY0IDcwIDREIDMwIDMxIDM3IDVGICBHUFBCLi5bIi5kcE0wMTdf
CiAgICAxNTkwOiA0MiA0MiA0RSAwQSAwMyAwQSAwMyAwQSA3OCAwMCAwQSAyMCA2MCBBMCA0NCAw
NiAgQkJOLi4uLi54Li4gYC5ELgogICAgMTVBMDogOTIgOTMgN0IgNjAgMEMgMDAgMDAgMDMgMDAg
MDAgMDAgNEQgMzAgMzEgMzggNUYgIC4ue2AuLi4uLi4uTTAxOF8KICAgIDE1QjA6IDQyIDQyIDRF
IDBBIDAzIDBBIDAzIDBBIDc4IDAwIDBBIDIwIDYwIDcwIDREIDMwICBCQk4uLi4uLnguLiBgcE0w
CiAgICAxNUMwOiAzMSAzNyA1RiA0MiA0MiA0RSAwQSAwMyAwQSAwMyAwQSA3OCAwMCAwQSAyMCA2
MCAgMTdfQkJOLi4uLi54Li4gYAogICAgMTVEMDogQTAgMzEgOTIgOTMgN0IgNjAgMEMgMDAgMDAg
MDMgMDAgMDAgMDAgNEQgMzAgMzEgIC4xLi57YC4uLi4uLi5NMDEKICAgIDE1RTA6IDM4IDVGIDQy
IDQyIDRFIDBBIDAzIDBBIDAzIDBBIDc4IDAwIDBBIDIwIDYwIDcwICA4X0JCTi4uLi4ueC4uIGBw
CiAgICAxNUYwOiA0RCAzMCAzMSAzNyA1RiA0MiA0MiA0RSAwQSAwMyAwQSAwMyAwQSA3OCAwMCAw
QSAgTTAxN19CQk4uLi4uLnguLgogICAgMTYwMDogMjAgNjAgQTAgNDEgMTMgOTIgOTMgNUMgMkYg
MDMgNUYgNTMgNDIgNUYgNTAgNDMgICBgLkEuLi5cLy5fU0JfUEMKICAgIDE2MTA6IDQ5IDMzIDQ1
IDU0IDUwIDQzIDBBIEZGIDcwIDdBIDREIDMwIDMxIDM3IDVGIDQyICBJM0VUUEMuLnB6TTAxN19C
CiAgICAxNjIwOiA0MiA0RSAwQSAwMyAwQSAwNCAwQSA3OCAwMCAwQSAxOCAwQSAxMCAwMCA1QyAy
RiAgQk4uLi4uLnguLi4uLi5cLwogICAgMTYzMDogMDMgNUYgNTMgNDIgNUYgNTAgNDMgNDkgMzMg
NDUgNTQgNTAgNDMgQTAgNDYgMEYgIC5fU0JfUENJM0VUUEMuRi4KICAgIDE2NDA6IDkxIDkzIDVD
IDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMzIDQ1IDU0IDUwICAuLlwvLl9TQl9QQ0kzRVRQ
CiAgICAxNjUwOiA0MyAwMSA5MyA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMyA0NSA1
NCAgQy4uXC8uX1NCX1BDSTNFVAogICAgMTY2MDogNTAgNDMgMEEgMDMgQTAgNEYgMEMgNUIgMTIg
NUMgMkYgMDMgNUYgNTMgNDIgNUYgIFBDLi4uTy5bLlwvLl9TQl8KICAgIDE2NzA6IDUwIDQzIDQ5
IDMzIDQ3IDUwIDUwIDQzIDAwIDREIDM0IDM2IDMwIDBEIDIwIDIwICBQQ0kzR1BQQy5NNDYwLiAg
CiAgICAxNjgwOiAyMCAyMCA0RSA2RiA3NCA2OSA2NiA3OSAyMCAyOCA1QyA1RiA1MyA0MiAyRSA1
MCAgICBOb3RpZnkgKFxfU0IuUAogICAgMTY5MDogNDMgNDkgMzMgMkUgNDcgNTAgNTAgNDMgMkMg
MjAgMzAgNzggMzIgMjkgMEEgMDAgIENJMy5HUFBDLCAweDIpLi4KICAgIDE2QTA6IDAwIDAwIDAw
IDAwIDAwIDAwIDg2IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzICAuLi4uLi4uXC8uX1NCX1BD
CiAgICAxNkIwOiA0OSAzMyA0NyA1MCA1MCA0MyAwQSAwMiA1QiAyMiAwQSA2NCA3MCA0RCAzMCAz
MSAgSTNHUFBDLi5bIi5kcE0wMQogICAgMTZDMDogMzcgNUYgNDIgNDIgNEUgMEEgMDMgMEEgMDQg
MEEgNzggMDAgMEEgMjAgNjAgQTAgIDdfQkJOLi4uLi54Li4gYC4KICAgIDE2RDA6IDQ0IDA2IDky
IDkzIDdCIDYwIDBDIDAwIDAwIDAzIDAwIDAwIDAwIDREIDMwIDMxICBELi4ue2AuLi4uLi4uTTAx
CiAgICAxNkUwOiAzOCA1RiA0MiA0MiA0RSAwQSAwMyAwQSAwNCAwQSA3OCAwMCAwQSAyMCA2MCA3
MCAgOF9CQk4uLi4uLnguLiBgcAogICAgMTZGMDogNEQgMzAgMzEgMzcgNUYgNDIgNDIgNEUgMEEg
MDMgMEEgMDQgMEEgNzggMDAgMEEgIE0wMTdfQkJOLi4uLi54Li4KICAgIDE3MDA6IDIwIDYwIEEw
IDMxIDkyIDkzIDdCIDYwIDBDIDAwIDAwIDAzIDAwIDAwIDAwIDREICAgYC4xLi57YC4uLi4uLi5N
CiAgICAxNzEwOiAzMCAzMSAzOCA1RiA0MiA0MiA0RSAwQSAwMyAwQSAwNCAwQSA3OCAwMCAwQSAy
MCAgMDE4X0JCTi4uLi4ueC4uIAogICAgMTcyMDogNjAgNzAgNEQgMzAgMzEgMzcgNUYgNDIgNDIg
NEUgMEEgMDMgMEEgMDQgMEEgNzggIGBwTTAxN19CQk4uLi4uLngKICAgIDE3MzA6IDAwIDBBIDIw
IDYwIEEwIDQxIDEzIDkyIDkzIDVDIDJGIDAzIDVGIDUzIDQyIDVGICAuLiBgLkEuLi5cLy5fU0Jf
CiAgICAxNzQwOiA1MCA0MyA0OSAzMyA0NSA1NCA1MCA0NCAwQSBGRiA3MCA3QSA0RCAzMCAzMSAz
NyAgUENJM0VUUEQuLnB6TTAxNwogICAgMTc1MDogNUYgNDIgNDIgNEUgMEEgMDMgMEEgMDUgMEEg
NzggMDAgMEEgMTggMEEgMTAgMDAgIF9CQk4uLi4uLnguLi4uLi4KICAgIDE3NjA6IDVDIDJGIDAz
IDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMzIDQ1IDU0IDUwIDQ0IEEwICBcLy5fU0JfUENJM0VUUEQu
CiAgICAxNzcwOiA0NiAwRiA5MSA5MyA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMyA0
NSAgRi4uLlwvLl9TQl9QQ0kzRQogICAgMTc4MDogNTQgNTAgNDQgMDEgOTMgNUMgMkYgMDMgNUYg
NTMgNDIgNUYgNTAgNDMgNDkgMzMgIFRQRC4uXC8uX1NCX1BDSTMKICAgIDE3OTA6IDQ1IDU0IDUw
IDQ0IDBBIDAzIEEwIDRGIDBDIDVCIDEyIDVDIDJGIDAzIDVGIDUzICBFVFBELi4uTy5bLlwvLl9T
CiAgICAxN0EwOiA0MiA1RiA1MCA0MyA0OSAzMyA0NyA1MCA1MCA0NCAwMCA0RCAzNCAzNiAzMCAw
RCAgQl9QQ0kzR1BQRC5NNDYwLgogICAgMTdCMDogMjAgMjAgMjAgMjAgNEUgNkYgNzQgNjkgNjYg
NzkgMjAgMjggNUMgNUYgNTMgNDIgICAgICBOb3RpZnkgKFxfU0IKICAgIDE3QzA6IDJFIDUwIDQz
IDQ5IDMzIDJFIDQ3IDUwIDUwIDQ0IDJDIDIwIDMwIDc4IDMyIDI5ICAuUENJMy5HUFBELCAweDIp
CiAgICAxN0QwOiAwQSAwMCAwMCAwMCAwMCAwMCAwMCAwMCA4NiA1QyAyRiAwMyA1RiA1MyA0MiA1
RiAgLi4uLi4uLi4uXC8uX1NCXwogICAgMTdFMDogNTAgNDMgNDkgMzMgNDcgNTAgNTAgNDQgMEEg
MDIgNUIgMjIgMEEgNjQgNzAgNEQgIFBDSTNHUFBELi5bIi5kcE0KICAgIDE3RjA6IDMwIDMxIDM3
IDVGIDQyIDQyIDRFIDBBIDAzIDBBIDA1IDBBIDc4IDAwIDBBIDIwICAwMTdfQkJOLi4uLi54Li4g
CiAgICAxODAwOiA2MCBBMCA0NCAwNiA5MiA5MyA3QiA2MCAwQyAwMCAwMCAwMyAwMCAwMCAwMCA0
RCAgYC5ELi4ue2AuLi4uLi4uTQogICAgMTgxMDogMzAgMzEgMzggNUYgNDIgNDIgNEUgMEEgMDMg
MEEgMDUgMEEgNzggMDAgMEEgMjAgIDAxOF9CQk4uLi4uLnguLiAKICAgIDE4MjA6IDYwIDcwIDRE
IDMwIDMxIDM3IDVGIDQyIDQyIDRFIDBBIDAzIDBBIDA1IDBBIDc4ICBgcE0wMTdfQkJOLi4uLi54
CiAgICAxODMwOiAwMCAwQSAyMCA2MCBBMCAzMSA5MiA5MyA3QiA2MCAwQyAwMCAwMCAwMyAwMCAw
MCAgLi4gYC4xLi57YC4uLi4uLgogICAgMTg0MDogMDAgNEQgMzAgMzEgMzggNUYgNDIgNDIgNEUg
MEEgMDMgMEEgMDUgMEEgNzggMDAgIC5NMDE4X0JCTi4uLi4ueC4KICAgIDE4NTA6IDBBIDIwIDYw
IDcwIDREIDMwIDMxIDM3IDVGIDQyIDQyIDRFIDBBIDAzIDBBIDA1ICAuIGBwTTAxN19CQk4uLi4u
CiAgICAxODYwOiAwQSA3OCAwMCAwQSAyMCA2MCBBMCA0MSAxMyA5MiA5MyA1QyAyRiAwMyA1RiA1
MyAgLnguLiBgLkEuLi5cLy5fUwogICAgMTg3MDogNDIgNUYgNTAgNDMgNDkgMzMgNDUgNTQgNTAg
NDUgMEEgRkYgNzAgN0EgNEQgMzAgIEJfUENJM0VUUEUuLnB6TTAKICAgIDE4ODA6IDMxIDM3IDVG
IDQyIDQyIDRFIDBBIDAzIDBBIDA2IDBBIDc4IDAwIDBBIDE4IDBBICAxN19CQk4uLi4uLnguLi4u
CiAgICAxODkwOiAxMCAwMCA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMyA0NSA1NCA1
MCAgLi5cLy5fU0JfUENJM0VUUAogICAgMThBMDogNDUgQTAgNDYgMEYgOTEgOTMgNUMgMkYgMDMg
NUYgNTMgNDIgNUYgNTAgNDMgNDkgIEUuRi4uLlwvLl9TQl9QQ0kKICAgIDE4QjA6IDMzIDQ1IDU0
IDUwIDQ1IDAxIDkzIDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzICAzRVRQRS4uXC8uX1NCX1BD
CiAgICAxOEMwOiA0OSAzMyA0NSA1NCA1MCA0NSAwQSAwMyBBMCA0RiAwQyA1QiAxMiA1QyAyRiAw
MyAgSTNFVFBFLi4uTy5bLlwvLgogICAgMThEMDogNUYgNTMgNDIgNUYgNTAgNDMgNDkgMzMgNDcg
NTAgNTAgNDUgMDAgNEQgMzQgMzYgIF9TQl9QQ0kzR1BQRS5NNDYKICAgIDE4RTA6IDMwIDBEIDIw
IDIwIDIwIDIwIDRFIDZGIDc0IDY5IDY2IDc5IDIwIDI4IDVDIDVGICAwLiAgICBOb3RpZnkgKFxf
CiAgICAxOEYwOiA1MyA0MiAyRSA1MCA0MyA0OSAzMyAyRSA0NyA1MCA1MCA0NSAyQyAyMCAzMCA3
OCAgU0IuUENJMy5HUFBFLCAweAogICAgMTkwMDogMzIgMjkgMEEgMDAgMDAgMDAgMDAgMDAgMDAg
MDAgODYgNUMgMkYgMDMgNUYgNTMgIDIpLi4uLi4uLi4uXC8uX1MKICAgIDE5MTA6IDQyIDVGIDUw
IDQzIDQ5IDMzIDQ3IDUwIDUwIDQ1IDBBIDAyIDVCIDIyIDBBIDY0ICBCX1BDSTNHUFBFLi5bIi5k
CiAgICAxOTIwOiA3MCA0RCAzMCAzMSAzNyA1RiA0MiA0MiA0RSAwQSAwMyAwQSAwNiAwQSA3OCAw
MCAgcE0wMTdfQkJOLi4uLi54LgogICAgMTkzMDogMEEgMjAgNjAgQTAgNDQgMDYgOTIgOTMgN0Ig
NjAgMEMgMDAgMDAgMDMgMDAgMDAgIC4gYC5ELi4ue2AuLi4uLi4KICAgIDE5NDA6IDAwIDREIDMw
IDMxIDM4IDVGIDQyIDQyIDRFIDBBIDAzIDBBIDA2IDBBIDc4IDAwICAuTTAxOF9CQk4uLi4uLngu
CiAgICAxOTUwOiAwQSAyMCA2MCA3MCA0RCAzMCAzMSAzNyA1RiA0MiA0MiA0RSAwQSAwMyAwQSAw
NiAgLiBgcE0wMTdfQkJOLi4uLgogICAgMTk2MDogMEEgNzggMDAgMEEgMjAgNjAgQTAgMzEgOTIg
OTMgN0IgNjAgMEMgMDAgMDAgMDMgIC54Li4gYC4xLi57YC4uLi4KICAgIDE5NzA6IDAwIDAwIDAw
IDREIDMwIDMxIDM4IDVGIDQyIDQyIDRFIDBBIDAzIDBBIDA2IDBBICAuLi5NMDE4X0JCTi4uLi4u
CiAgICAxOTgwOiA3OCAwMCAwQSAyMCA2MCA3MCA0RCAzMCAzMSAzNyA1RiA0MiA0MiA0RSAwQSAw
MyAgeC4uIGBwTTAxN19CQk4uLgogICAgMTk5MDogMEEgMDYgMEEgNzggMDAgMEEgMjAgNjAgQTAg
NDEgMTMgOTIgOTMgNUMgMkYgMDMgIC4uLnguLiBgLkEuLi5cLy4KICAgIDE5QTA6IDVGIDUzIDQy
IDVGIDUwIDQzIDQ5IDMzIDQ1IDU0IDUwIDQ2IDBBIEZGIDcwIDdBICBfU0JfUENJM0VUUEYuLnB6
CiAgICAxOUIwOiA0RCAzMCAzMSAzNyA1RiA0MiA0MiA0RSAwQSAwMyAwQSAwNyAwQSA3OCAwMCAw
QSAgTTAxN19CQk4uLi4uLnguLgogICAgMTlDMDogMTggMEEgMTAgMDAgNUMgMkYgMDMgNUYgNTMg
NDIgNUYgNTAgNDMgNDkgMzMgNDUgIC4uLi5cLy5fU0JfUENJM0UKICAgIDE5RDA6IDU0IDUwIDQ2
IEEwIDQ2IDBGIDkxIDkzIDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwICBUUEYuRi4uLlwvLl9TQl9Q
CiAgICAxOUUwOiA0MyA0OSAzMyA0NSA1NCA1MCA0NiAwMSA5MyA1QyAyRiAwMyA1RiA1MyA0MiA1
RiAgQ0kzRVRQRi4uXC8uX1NCXwogICAgMTlGMDogNTAgNDMgNDkgMzMgNDUgNTQgNTAgNDYgMEEg
MDMgQTAgNEYgMEMgNUIgMTIgNUMgIFBDSTNFVFBGLi4uTy5bLlwKICAgIDFBMDA6IDJGIDAzIDVG
IDUzIDQyIDVGIDUwIDQzIDQ5IDMzIDQ3IDUwIDUwIDQ2IDAwIDREICAvLl9TQl9QQ0kzR1BQRi5N
CiAgICAxQTEwOiAzNCAzNiAzMCAwRCAyMCAyMCAyMCAyMCA0RSA2RiA3NCA2OSA2NiA3OSAyMCAy
OCAgNDYwLiAgICBOb3RpZnkgKAogICAgMUEyMDogNUMgNUYgNTMgNDIgMkUgNTAgNDMgNDkgMzMg
MkUgNDcgNTAgNTAgNDYgMkMgMjAgIFxfU0IuUENJMy5HUFBGLCAKICAgIDFBMzA6IDMwIDc4IDMy
IDI5IDBBIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDg2IDVDIDJGIDAzICAweDIpLi4uLi4uLi4uXC8u
CiAgICAxQTQwOiA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMyA0NyA1MCA1MCA0NiAwQSAwMiA1QiAy
MiAgX1NCX1BDSTNHUFBGLi5bIgogICAgMUE1MDogMEEgNjQgNzAgNEQgMzAgMzEgMzcgNUYgNDIg
NDIgNEUgMEEgMDMgMEEgMDcgMEEgIC5kcE0wMTdfQkJOLi4uLi4KICAgIDFBNjA6IDc4IDAwIDBB
IDIwIDYwIEEwIDQ0IDA2IDkyIDkzIDdCIDYwIDBDIDAwIDAwIDAzICB4Li4gYC5ELi4ue2AuLi4u
CiAgICAxQTcwOiAwMCAwMCAwMCA0RCAzMCAzMSAzOCA1RiA0MiA0MiA0RSAwQSAwMyAwQSAwNyAw
QSAgLi4uTTAxOF9CQk4uLi4uLgogICAgMUE4MDogNzggMDAgMEEgMjAgNjAgNzAgNEQgMzAgMzEg
MzcgNUYgNDIgNDIgNEUgMEEgMDMgIHguLiBgcE0wMTdfQkJOLi4KICAgIDFBOTA6IDBBIDA3IDBB
IDc4IDAwIDBBIDIwIDYwIEEwIDMxIDkyIDkzIDdCIDYwIDBDIDAwICAuLi54Li4gYC4xLi57YC4u
CiAgICAxQUEwOiAwMCAwMyAwMCAwMCAwMCA0RCAzMCAzMSAzOCA1RiA0MiA0MiA0RSAwQSAwMyAw
QSAgLi4uLi5NMDE4X0JCTi4uLgogICAgMUFCMDogMDcgMEEgNzggMDAgMEEgMjAgNjAgNzAgNEQg
MzAgMzEgMzcgNUYgNDIgNDIgNEUgIC4ueC4uIGBwTTAxN19CQk4KICAgIDFBQzA6IDBBIDAzIDBB
IDA3IDBBIDc4IDAwIDBBIDIwIDYwIEEwIDRCIDEyIDkyIDkzIDVDICAuLi4uLnguLiBgLksuLi5c
CiAgICAxQUQwOiAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMyA0NSA1NCA1MCA0NyAwQSBG
RiAgLy5fU0JfUENJM0VUUEcuLgogICAgMUFFMDogNzAgN0EgNEQgMzAgMzEgMzcgNUYgNDIgNDIg
NEUgMEEgMDQgMDEgMEEgNzggMDAgIHB6TTAxN19CQk4uLi4ueC4KICAgIDFBRjA6IDBBIDE4IDBB
IDEwIDAwIDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMzICAuLi4uLlwvLl9TQl9QQ0kz
CiAgICAxQjAwOiA0NSA1NCA1MCA0NyBBMCA0MSAwRiA5MSA5MyA1QyAyRiAwMyA1RiA1MyA0MiA1
RiAgRVRQRy5BLi4uXC8uX1NCXwogICAgMUIxMDogNTAgNDMgNDkgMzMgNDUgNTQgNTAgNDcgMDEg
OTMgNUMgMkYgMDMgNUYgNTMgNDIgIFBDSTNFVFBHLi5cLy5fU0IKICAgIDFCMjA6IDVGIDUwIDQz
IDQ5IDMzIDQ1IDU0IDUwIDQ3IDBBIDAzIEEwIDRBIDBDIDVCIDEyICBfUENJM0VUUEcuLi5KLlsu
CiAgICAxQjMwOiA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMyA0NyA1MCA1MCA0NyAw
MCAgXC8uX1NCX1BDSTNHUFBHLgogICAgMUI0MDogNEQgMzQgMzYgMzAgMEQgMjAgMjAgMjAgMjAg
NEUgNkYgNzQgNjkgNjYgNzkgMjAgIE00NjAuICAgIE5vdGlmeSAKICAgIDFCNTA6IDI4IDVDIDVG
IDUzIDQyIDJFIDUwIDQzIDQ5IDMzIDJFIDQ3IDUwIDUwIDQ3IDJDICAoXF9TQi5QQ0kzLkdQUEcs
CiAgICAxQjYwOiAyMCAzMCA3OCAzMiAyOSAwQSAwMCAwMCAwMCAwMCAwMCAwMCAwMCA4NiA1QyAy
RiAgIDB4MikuLi4uLi4uLi5cLwogICAgMUI3MDogMDMgNUYgNTMgNDIgNUYgNTAgNDMgNDkgMzMg
NDcgNTAgNTAgNDcgMEEgMDIgNUIgIC5fU0JfUENJM0dQUEcuLlsKICAgIDFCODA6IDIyIDBBIDY0
IDcwIDREIDMwIDMxIDM3IDVGIDQyIDQyIDRFIDBBIDA0IDAxIDBBICAiLmRwTTAxN19CQk4uLi4u
CiAgICAxQjkwOiA3OCAwMCAwQSAyMCA2MCBBMCA0MCAwNiA5MiA5MyA3QiA2MCAwQyAwMCAwMCAw
MyAgeC4uIGAuQC4uLntgLi4uLgogICAgMUJBMDogMDAgMDAgMDAgNEQgMzAgMzEgMzggNUYgNDIg
NDIgNEUgMEEgMDQgMDEgMEEgNzggIC4uLk0wMThfQkJOLi4uLngKICAgIDFCQjA6IDAwIDBBIDIw
IDYwIDcwIDREIDMwIDMxIDM3IDVGIDQyIDQyIDRFIDBBIDA0IDAxICAuLiBgcE0wMTdfQkJOLi4u
CiAgICAxQkMwOiAwQSA3OCAwMCAwQSAyMCA2MCBBMCAyRiA5MiA5MyA3QiA2MCAwQyAwMCAwMCAw
MyAgLnguLiBgLi8uLntgLi4uLgogICAgMUJEMDogMDAgMDAgMDAgNEQgMzAgMzEgMzggNUYgNDIg
NDIgNEUgMEEgMDQgMDEgMEEgNzggIC4uLk0wMThfQkJOLi4uLngKICAgIDFCRTA6IDAwIDBBIDIw
IDYwIDcwIDREIDMwIDMxIDM3IDVGIDQyIDQyIDRFIDBBIDA0IDAxICAuLiBgcE0wMTdfQkJOLi4u
CiAgICAxQkYwOiAwQSA3OCAwMCAwQSAyMCA2MCBBMCA0MSAxMyA5MiA5MyA1QyAyRiAwMyA1RiA1
MyAgLnguLiBgLkEuLi5cLy5fUwogICAgMUMwMDogNDIgNUYgNTAgNDMgNDkgMzMgNDUgNTQgNTAg
NDggMEEgRkYgNzAgN0EgNEQgMzAgIEJfUENJM0VUUEguLnB6TTAKICAgIDFDMTA6IDMxIDM3IDVG
IDQyIDQyIDRFIDBBIDA0IDBBIDAyIDBBIDc4IDAwIDBBIDE4IDBBICAxN19CQk4uLi4uLnguLi4u
CiAgICAxQzIwOiAxMCAwMCA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMyA0NSA1NCA1
MCAgLi5cLy5fU0JfUENJM0VUUAogICAgMUMzMDogNDggQTAgNDYgMEYgOTEgOTMgNUMgMkYgMDMg
NUYgNTMgNDIgNUYgNTAgNDMgNDkgIEguRi4uLlwvLl9TQl9QQ0kKICAgIDFDNDA6IDMzIDQ1IDU0
IDUwIDQ4IDAxIDkzIDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzICAzRVRQSC4uXC8uX1NCX1BD
CiAgICAxQzUwOiA0OSAzMyA0NSA1NCA1MCA0OCAwQSAwMyBBMCA0RiAwQyA1QiAxMiA1QyAyRiAw
MyAgSTNFVFBILi4uTy5bLlwvLgogICAgMUM2MDogNUYgNTMgNDIgNUYgNTAgNDMgNDkgMzMgNDcg
NTAgNTAgNDggMDAgNEQgMzQgMzYgIF9TQl9QQ0kzR1BQSC5NNDYKICAgIDFDNzA6IDMwIDBEIDIw
IDIwIDIwIDIwIDRFIDZGIDc0IDY5IDY2IDc5IDIwIDI4IDVDIDVGICAwLiAgICBOb3RpZnkgKFxf
CiAgICAxQzgwOiA1MyA0MiAyRSA1MCA0MyA0OSAzMyAyRSA0NyA1MCA1MCA0OCAyQyAyMCAzMCA3
OCAgU0IuUENJMy5HUFBILCAweAogICAgMUM5MDogMzIgMjkgMEEgMDAgMDAgMDAgMDAgMDAgMDAg
MDAgODYgNUMgMkYgMDMgNUYgNTMgIDIpLi4uLi4uLi4uXC8uX1MKICAgIDFDQTA6IDQyIDVGIDUw
IDQzIDQ5IDMzIDQ3IDUwIDUwIDQ4IDBBIDAyIDVCIDIyIDBBIDY0ICBCX1BDSTNHUFBILi5bIi5k
CiAgICAxQ0IwOiA3MCA0RCAzMCAzMSAzNyA1RiA0MiA0MiA0RSAwQSAwNCAwQSAwMiAwQSA3OCAw
MCAgcE0wMTdfQkJOLi4uLi54LgogICAgMUNDMDogMEEgMjAgNjAgQTAgNDQgMDYgOTIgOTMgN0Ig
NjAgMEMgMDAgMDAgMDMgMDAgMDAgIC4gYC5ELi4ue2AuLi4uLi4KICAgIDFDRDA6IDAwIDREIDMw
IDMxIDM4IDVGIDQyIDQyIDRFIDBBIDA0IDBBIDAyIDBBIDc4IDAwICAuTTAxOF9CQk4uLi4uLngu
CiAgICAxQ0UwOiAwQSAyMCA2MCA3MCA0RCAzMCAzMSAzNyA1RiA0MiA0MiA0RSAwQSAwNCAwQSAw
MiAgLiBgcE0wMTdfQkJOLi4uLgogICAgMUNGMDogMEEgNzggMDAgMEEgMjAgNjAgQTAgMzEgOTIg
OTMgN0IgNjAgMEMgMDAgMDAgMDMgIC54Li4gYC4xLi57YC4uLi4KICAgIDFEMDA6IDAwIDAwIDAw
IDREIDMwIDMxIDM4IDVGIDQyIDQyIDRFIDBBIDA0IDBBIDAyIDBBICAuLi5NMDE4X0JCTi4uLi4u
CiAgICAxRDEwOiA3OCAwMCAwQSAyMCA2MCA3MCA0RCAzMCAzMSAzNyA1RiA0MiA0MiA0RSAwQSAw
NCAgeC4uIGBwTTAxN19CQk4uLgogICAgMUQyMDogMEEgMDIgMEEgNzggMDAgMEEgMjAgNjAgQTAg
NEIgMTIgOTIgOTMgNUMgMkYgMDMgIC4uLnguLiBgLksuLi5cLy4KICAgIDFEMzA6IDVGIDUzIDQy
IDVGIDUwIDQzIDQ5IDMzIDQ1IDU0IDMxIDM1IDBBIEZGIDcwIDdBICBfU0JfUENJM0VUMTUuLnB6
CiAgICAxRDQwOiA0RCAzMCAzMSAzNyA1RiA0MiA0MiA0RSAwQSAwNSAwMSAwQSA3OCAwMCAwQSAx
OCAgTTAxN19CQk4uLi4ueC4uLgogICAgMUQ1MDogMEEgMTAgMDAgNUMgMkYgMDMgNUYgNTMgNDIg
NUYgNTAgNDMgNDkgMzMgNDUgNTQgIC4uLlwvLl9TQl9QQ0kzRVQKICAgIDFENjA6IDMxIDM1IEEw
IDQxIDBGIDkxIDkzIDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzICAxNS5BLi4uXC8uX1NCX1BD
CiAgICAxRDcwOiA0OSAzMyA0NSA1NCAzMSAzNSAwMSA5MyA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1
MCAgSTNFVDE1Li5cLy5fU0JfUAogICAgMUQ4MDogNDMgNDkgMzMgNDUgNTQgMzEgMzUgMEEgMDMg
QTAgNEEgMEMgNUIgMTIgNUMgMkYgIENJM0VUMTUuLi5KLlsuXC8KICAgIDFEOTA6IDAzIDVGIDUz
IDQyIDVGIDUwIDQzIDQ5IDMzIDQ3IDUwIDMxIDM1IDAwIDREIDM0ICAuX1NCX1BDSTNHUDE1Lk00
CiAgICAxREEwOiAzNiAzMCAwRCAyMCAyMCAyMCAyMCA0RSA2RiA3NCA2OSA2NiA3OSAyMCAyOCA1
QyAgNjAuICAgIE5vdGlmeSAoXAogICAgMURCMDogNUYgNTMgNDIgMkUgNTAgNDMgNDkgMzMgMkUg
NDcgNTAgMzEgMzUgMkMgMjAgMzAgIF9TQi5QQ0kzLkdQMTUsIDAKICAgIDFEQzA6IDc4IDMyIDI5
IDBBIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDg2IDVDIDJGIDAzIDVGICB4MikuLi4uLi4uLi5cLy5f
CiAgICAxREQwOiA1MyA0MiA1RiA1MCA0MyA0OSAzMyA0NyA1MCAzMSAzNSAwQSAwMiA1QiAyMiAw
QSAgU0JfUENJM0dQMTUuLlsiLgogICAgMURFMDogNjQgNzAgNEQgMzAgMzEgMzcgNUYgNDIgNDIg
NEUgMEEgMDUgMDEgMEEgNzggMDAgIGRwTTAxN19CQk4uLi4ueC4KICAgIDFERjA6IDBBIDIwIDYw
IEEwIDQwIDA2IDkyIDkzIDdCIDYwIDBDIDAwIDAwIDAzIDAwIDAwICAuIGAuQC4uLntgLi4uLi4u
CiAgICAxRTAwOiAwMCA0RCAzMCAzMSAzOCA1RiA0MiA0MiA0RSAwQSAwNSAwMSAwQSA3OCAwMCAw
QSAgLk0wMThfQkJOLi4uLnguLgogICAgMUUxMDogMjAgNjAgNzAgNEQgMzAgMzEgMzcgNUYgNDIg
NDIgNEUgMEEgMDUgMDEgMEEgNzggICBgcE0wMTdfQkJOLi4uLngKICAgIDFFMjA6IDAwIDBBIDIw
IDYwIEEwIDJGIDkyIDkzIDdCIDYwIDBDIDAwIDAwIDAzIDAwIDAwICAuLiBgLi8uLntgLi4uLi4u
CiAgICAxRTMwOiAwMCA0RCAzMCAzMSAzOCA1RiA0MiA0MiA0RSAwQSAwNSAwMSAwQSA3OCAwMCAw
QSAgLk0wMThfQkJOLi4uLnguLgogICAgMUU0MDogMjAgNjAgNzAgNEQgMzAgMzEgMzcgNUYgNDIg
NDIgNEUgMEEgMDUgMDEgMEEgNzggICBgcE0wMTdfQkJOLi4uLngKICAgIDFFNTA6IDAwIDBBIDIw
IDYwIEEwIDQxIDEzIDkyIDkzIDVDIDJGIDAzIDVGIDUzIDQyIDVGICAuLiBgLkEuLi5cLy5fU0Jf
CiAgICAxRTYwOiA1MCA0MyA0OSAzMyA0NSA1NCAzMiAzNSAwQSBGRiA3MCA3QSA0RCAzMCAzMSAz
NyAgUENJM0VUMjUuLnB6TTAxNwogICAgMUU3MDogNUYgNDIgNDIgNEUgMEEgMDUgMEEgMDIgMEEg
NzggMDAgMEEgMTggMEEgMTAgMDAgIF9CQk4uLi4uLnguLi4uLi4KICAgIDFFODA6IDVDIDJGIDAz
IDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMzIDQ1IDU0IDMyIDM1IEEwICBcLy5fU0JfUENJM0VUMjUu
CiAgICAxRTkwOiA0NiAwRiA5MSA5MyA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMyA0
NSAgRi4uLlwvLl9TQl9QQ0kzRQogICAgMUVBMDogNTQgMzIgMzUgMDEgOTMgNUMgMkYgMDMgNUYg
NTMgNDIgNUYgNTAgNDMgNDkgMzMgIFQyNS4uXC8uX1NCX1BDSTMKICAgIDFFQjA6IDQ1IDU0IDMy
IDM1IDBBIDAzIEEwIDRGIDBDIDVCIDEyIDVDIDJGIDAzIDVGIDUzICBFVDI1Li4uTy5bLlwvLl9T
CiAgICAxRUMwOiA0MiA1RiA1MCA0MyA0OSAzMyA0NyA1MCAzMiAzNSAwMCA0RCAzNCAzNiAzMCAw
RCAgQl9QQ0kzR1AyNS5NNDYwLgogICAgMUVEMDogMjAgMjAgMjAgMjAgNEUgNkYgNzQgNjkgNjYg
NzkgMjAgMjggNUMgNUYgNTMgNDIgICAgICBOb3RpZnkgKFxfU0IKICAgIDFFRTA6IDJFIDUwIDQz
IDQ5IDMzIDJFIDQ3IDUwIDMyIDM1IDJDIDIwIDMwIDc4IDMyIDI5ICAuUENJMy5HUDI1LCAweDIp
CiAgICAxRUYwOiAwQSAwMCAwMCAwMCAwMCAwMCAwMCAwMCA4NiA1QyAyRiAwMyA1RiA1MyA0MiA1
RiAgLi4uLi4uLi4uXC8uX1NCXwogICAgMUYwMDogNTAgNDMgNDkgMzMgNDcgNTAgMzIgMzUgMEEg
MDIgNUIgMjIgMEEgNjQgNzAgNEQgIFBDSTNHUDI1Li5bIi5kcE0KICAgIDFGMTA6IDMwIDMxIDM3
IDVGIDQyIDQyIDRFIDBBIDA1IDBBIDAyIDBBIDc4IDAwIDBBIDIwICAwMTdfQkJOLi4uLi54Li4g
CiAgICAxRjIwOiA2MCBBMCA0NCAwNiA5MiA5MyA3QiA2MCAwQyAwMCAwMCAwMyAwMCAwMCAwMCA0
RCAgYC5ELi4ue2AuLi4uLi4uTQogICAgMUYzMDogMzAgMzEgMzggNUYgNDIgNDIgNEUgMEEgMDUg
MEEgMDIgMEEgNzggMDAgMEEgMjAgIDAxOF9CQk4uLi4uLnguLiAKICAgIDFGNDA6IDYwIDcwIDRE
IDMwIDMxIDM3IDVGIDQyIDQyIDRFIDBBIDA1IDBBIDAyIDBBIDc4ICBgcE0wMTdfQkJOLi4uLi54
CiAgICAxRjUwOiAwMCAwQSAyMCA2MCBBMCAzMSA5MiA5MyA3QiA2MCAwQyAwMCAwMCAwMyAwMCAw
MCAgLi4gYC4xLi57YC4uLi4uLgogICAgMUY2MDogMDAgNEQgMzAgMzEgMzggNUYgNDIgNDIgNEUg
MEEgMDUgMEEgMDIgMEEgNzggMDAgIC5NMDE4X0JCTi4uLi4ueC4KICAgIDFGNzA6IDBBIDIwIDYw
IDcwIDREIDMwIDMxIDM3IDVGIDQyIDQyIDRFIDBBIDA1IDBBIDAyICAuIGBwTTAxN19CQk4uLi4u
CiAgICAxRjgwOiAwQSA3OCAwMCAwQSAyMCA2MCBBMCA0MSAxMyA5MiA5MyA1QyAyRiAwMyA1RiA1
MyAgLnguLiBgLkEuLi5cLy5fUwogICAgMUY5MDogNDIgNUYgNTAgNDMgNDkgMzMgNDUgNTQgMzMg
MzUgMEEgRkYgNzAgN0EgNEQgMzAgIEJfUENJM0VUMzUuLnB6TTAKICAgIDFGQTA6IDMxIDM3IDVG
IDQyIDQyIDRFIDBBIDA1IDBBIDAzIDBBIDc4IDAwIDBBIDE4IDBBICAxN19CQk4uLi4uLnguLi4u
CiAgICAxRkIwOiAxMCAwMCA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMyA0NSA1NCAz
MyAgLi5cLy5fU0JfUENJM0VUMwogICAgMUZDMDogMzUgQTAgNDYgMEYgOTEgOTMgNUMgMkYgMDMg
NUYgNTMgNDIgNUYgNTAgNDMgNDkgIDUuRi4uLlwvLl9TQl9QQ0kKICAgIDFGRDA6IDMzIDQ1IDU0
IDMzIDM1IDAxIDkzIDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzICAzRVQzNS4uXC8uX1NCX1BD
CiAgICAxRkUwOiA0OSAzMyA0NSA1NCAzMyAzNSAwQSAwMyBBMCA0RiAwQyA1QiAxMiA1QyAyRiAw
MyAgSTNFVDM1Li4uTy5bLlwvLgogICAgMUZGMDogNUYgNTMgNDIgNUYgNTAgNDMgNDkgMzMgNDcg
NTAgMzMgMzUgMDAgNEQgMzQgMzYgIF9TQl9QQ0kzR1AzNS5NNDYKICAgIDIwMDA6IDMwIDBEIDIw
IDIwIDIwIDIwIDRFIDZGIDc0IDY5IDY2IDc5IDIwIDI4IDVDIDVGICAwLiAgICBOb3RpZnkgKFxf
CiAgICAyMDEwOiA1MyA0MiAyRSA1MCA0MyA0OSAzMyAyRSA0NyA1MCAzMyAzNSAyQyAyMCAzMCA3
OCAgU0IuUENJMy5HUDM1LCAweAogICAgMjAyMDogMzIgMjkgMEEgMDAgMDAgMDAgMDAgMDAgMDAg
MDAgODYgNUMgMkYgMDMgNUYgNTMgIDIpLi4uLi4uLi4uXC8uX1MKICAgIDIwMzA6IDQyIDVGIDUw
IDQzIDQ5IDMzIDQ3IDUwIDMzIDM1IDBBIDAyIDVCIDIyIDBBIDY0ICBCX1BDSTNHUDM1Li5bIi5k
CiAgICAyMDQwOiA3MCA0RCAzMCAzMSAzNyA1RiA0MiA0MiA0RSAwQSAwNSAwQSAwMyAwQSA3OCAw
MCAgcE0wMTdfQkJOLi4uLi54LgogICAgMjA1MDogMEEgMjAgNjAgQTAgNDQgMDYgOTIgOTMgN0Ig
NjAgMEMgMDAgMDAgMDMgMDAgMDAgIC4gYC5ELi4ue2AuLi4uLi4KICAgIDIwNjA6IDAwIDREIDMw
IDMxIDM4IDVGIDQyIDQyIDRFIDBBIDA1IDBBIDAzIDBBIDc4IDAwICAuTTAxOF9CQk4uLi4uLngu
CiAgICAyMDcwOiAwQSAyMCA2MCA3MCA0RCAzMCAzMSAzNyA1RiA0MiA0MiA0RSAwQSAwNSAwQSAw
MyAgLiBgcE0wMTdfQkJOLi4uLgogICAgMjA4MDogMEEgNzggMDAgMEEgMjAgNjAgQTAgMzEgOTIg
OTMgN0IgNjAgMEMgMDAgMDAgMDMgIC54Li4gYC4xLi57YC4uLi4KICAgIDIwOTA6IDAwIDAwIDAw
IDREIDMwIDMxIDM4IDVGIDQyIDQyIDRFIDBBIDA1IDBBIDAzIDBBICAuLi5NMDE4X0JCTi4uLi4u
CiAgICAyMEEwOiA3OCAwMCAwQSAyMCA2MCA3MCA0RCAzMCAzMSAzNyA1RiA0MiA0MiA0RSAwQSAw
NSAgeC4uIGBwTTAxN19CQk4uLgogICAgMjBCMDogMEEgMDMgMEEgNzggMDAgMEEgMjAgNjAgQTAg
NDEgMTMgOTIgOTMgNUMgMkYgMDMgIC4uLnguLiBgLkEuLi5cLy4KICAgIDIwQzA6IDVGIDUzIDQy
IDVGIDUwIDQzIDQ5IDMzIDQ1IDU0IDM0IDM1IDBBIEZGIDcwIDdBICBfU0JfUENJM0VUNDUuLnB6
CiAgICAyMEQwOiA0RCAzMCAzMSAzNyA1RiA0MiA0MiA0RSAwQSAwNSAwQSAwNCAwQSA3OCAwMCAw
QSAgTTAxN19CQk4uLi4uLnguLgogICAgMjBFMDogMTggMEEgMTAgMDAgNUMgMkYgMDMgNUYgNTMg
NDIgNUYgNTAgNDMgNDkgMzMgNDUgIC4uLi5cLy5fU0JfUENJM0UKICAgIDIwRjA6IDU0IDM0IDM1
IEEwIDQ2IDBGIDkxIDkzIDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwICBUNDUuRi4uLlwvLl9TQl9Q
CiAgICAyMTAwOiA0MyA0OSAzMyA0NSA1NCAzNCAzNSAwMSA5MyA1QyAyRiAwMyA1RiA1MyA0MiA1
RiAgQ0kzRVQ0NS4uXC8uX1NCXwogICAgMjExMDogNTAgNDMgNDkgMzMgNDUgNTQgMzQgMzUgMEEg
MDMgQTAgNEYgMEMgNUIgMTIgNUMgIFBDSTNFVDQ1Li4uTy5bLlwKICAgIDIxMjA6IDJGIDAzIDVG
IDUzIDQyIDVGIDUwIDQzIDQ5IDMzIDQ3IDUwIDM0IDM1IDAwIDREICAvLl9TQl9QQ0kzR1A0NS5N
CiAgICAyMTMwOiAzNCAzNiAzMCAwRCAyMCAyMCAyMCAyMCA0RSA2RiA3NCA2OSA2NiA3OSAyMCAy
OCAgNDYwLiAgICBOb3RpZnkgKAogICAgMjE0MDogNUMgNUYgNTMgNDIgMkUgNTAgNDMgNDkgMzMg
MkUgNDcgNTAgMzQgMzUgMkMgMjAgIFxfU0IuUENJMy5HUDQ1LCAKICAgIDIxNTA6IDMwIDc4IDMy
IDI5IDBBIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDg2IDVDIDJGIDAzICAweDIpLi4uLi4uLi4uXC8u
CiAgICAyMTYwOiA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMyA0NyA1MCAzNCAzNSAwQSAwMiA1QiAy
MiAgX1NCX1BDSTNHUDQ1Li5bIgogICAgMjE3MDogMEEgNjQgNzAgNEQgMzAgMzEgMzcgNUYgNDIg
NDIgNEUgMEEgMDUgMEEgMDQgMEEgIC5kcE0wMTdfQkJOLi4uLi4KICAgIDIxODA6IDc4IDAwIDBB
IDIwIDYwIEEwIDQ0IDA2IDkyIDkzIDdCIDYwIDBDIDAwIDAwIDAzICB4Li4gYC5ELi4ue2AuLi4u
CiAgICAyMTkwOiAwMCAwMCAwMCA0RCAzMCAzMSAzOCA1RiA0MiA0MiA0RSAwQSAwNSAwQSAwNCAw
QSAgLi4uTTAxOF9CQk4uLi4uLgogICAgMjFBMDogNzggMDAgMEEgMjAgNjAgNzAgNEQgMzAgMzEg
MzcgNUYgNDIgNDIgNEUgMEEgMDUgIHguLiBgcE0wMTdfQkJOLi4KICAgIDIxQjA6IDBBIDA0IDBB
IDc4IDAwIDBBIDIwIDYwIEEwIDMxIDkyIDkzIDdCIDYwIDBDIDAwICAuLi54Li4gYC4xLi57YC4u
CiAgICAyMUMwOiAwMCAwMyAwMCAwMCAwMCA0RCAzMCAzMSAzOCA1RiA0MiA0MiA0RSAwQSAwNSAw
QSAgLi4uLi5NMDE4X0JCTi4uLgogICAgMjFEMDogMDQgMEEgNzggMDAgMEEgMjAgNjAgNzAgNEQg
MzAgMzEgMzcgNUYgNDIgNDIgNEUgIC4ueC4uIGBwTTAxN19CQk4KICAgIDIxRTA6IDBBIDA1IDBB
IDA0IDBBIDc4IDAwIDBBIDIwIDYwIEEwIDRCIDEyIDkyIDkzIDVDICAuLi4uLnguLiBgLksuLi5c
CiAgICAyMUYwOiAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMyA0NSA1NCAzMSAzNyAwQSBG
RiAgLy5fU0JfUENJM0VUMTcuLgogICAgMjIwMDogNzAgN0EgNEQgMzAgMzEgMzcgNUYgNDIgNDIg
NEUgMEEgMDcgMDEgMEEgNzggMDAgIHB6TTAxN19CQk4uLi4ueC4KICAgIDIyMTA6IDBBIDE4IDBB
IDEwIDAwIDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMzICAuLi4uLlwvLl9TQl9QQ0kz
CiAgICAyMjIwOiA0NSA1NCAzMSAzNyBBMCA0MSAwRiA5MSA5MyA1QyAyRiAwMyA1RiA1MyA0MiA1
RiAgRVQxNy5BLi4uXC8uX1NCXwogICAgMjIzMDogNTAgNDMgNDkgMzMgNDUgNTQgMzEgMzcgMDEg
OTMgNUMgMkYgMDMgNUYgNTMgNDIgIFBDSTNFVDE3Li5cLy5fU0IKICAgIDIyNDA6IDVGIDUwIDQz
IDQ5IDMzIDQ1IDU0IDMxIDM3IDBBIDAzIEEwIDRBIDBDIDVCIDEyICBfUENJM0VUMTcuLi5KLlsu
CiAgICAyMjUwOiA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMyA0NyA1MCAzMSAzNyAw
MCAgXC8uX1NCX1BDSTNHUDE3LgogICAgMjI2MDogNEQgMzQgMzYgMzAgMEQgMjAgMjAgMjAgMjAg
NEUgNkYgNzQgNjkgNjYgNzkgMjAgIE00NjAuICAgIE5vdGlmeSAKICAgIDIyNzA6IDI4IDVDIDVG
IDUzIDQyIDJFIDUwIDQzIDQ5IDMzIDJFIDQ3IDUwIDMxIDM3IDJDICAoXF9TQi5QQ0kzLkdQMTcs
CiAgICAyMjgwOiAyMCAzMCA3OCAzMiAyOSAwQSAwMCAwMCAwMCAwMCAwMCAwMCAwMCA4NiA1QyAy
RiAgIDB4MikuLi4uLi4uLi5cLwogICAgMjI5MDogMDMgNUYgNTMgNDIgNUYgNTAgNDMgNDkgMzMg
NDcgNTAgMzEgMzcgMEEgMDIgNUIgIC5fU0JfUENJM0dQMTcuLlsKICAgIDIyQTA6IDIyIDBBIDY0
IDcwIDREIDMwIDMxIDM3IDVGIDQyIDQyIDRFIDBBIDA3IDAxIDBBICAiLmRwTTAxN19CQk4uLi4u
CiAgICAyMkIwOiA3OCAwMCAwQSAyMCA2MCBBMCA0MCAwNiA5MiA5MyA3QiA2MCAwQyAwMCAwMCAw
MyAgeC4uIGAuQC4uLntgLi4uLgogICAgMjJDMDogMDAgMDAgMDAgNEQgMzAgMzEgMzggNUYgNDIg
NDIgNEUgMEEgMDcgMDEgMEEgNzggIC4uLk0wMThfQkJOLi4uLngKICAgIDIyRDA6IDAwIDBBIDIw
IDYwIDcwIDREIDMwIDMxIDM3IDVGIDQyIDQyIDRFIDBBIDA3IDAxICAuLiBgcE0wMTdfQkJOLi4u
CiAgICAyMkUwOiAwQSA3OCAwMCAwQSAyMCA2MCBBMCAyRiA5MiA5MyA3QiA2MCAwQyAwMCAwMCAw
MyAgLnguLiBgLi8uLntgLi4uLgogICAgMjJGMDogMDAgMDAgMDAgNEQgMzAgMzEgMzggNUYgNDIg
NDIgNEUgMEEgMDcgMDEgMEEgNzggIC4uLk0wMThfQkJOLi4uLngKICAgIDIzMDA6IDAwIDBBIDIw
IDYwIDcwIDREIDMwIDMxIDM3IDVGIDQyIDQyIDRFIDBBIDA3IDAxICAuLiBgcE0wMTdfQkJOLi4u
CiAgICAyMzEwOiAwQSA3OCAwMCAwQSAyMCA2MCBBMCA0MSAxMyA5MiA5MyA1QyAyRiAwMyA1RiA1
MyAgLnguLiBgLkEuLi5cLy5fUwogICAgMjMyMDogNDIgNUYgNTAgNDMgNDkgMzMgNDUgNTQgMzIg
MzcgMEEgRkYgNzAgN0EgNEQgMzAgIEJfUENJM0VUMjcuLnB6TTAKICAgIDIzMzA6IDMxIDM3IDVG
IDQyIDQyIDRFIDBBIDA3IDBBIDAyIDBBIDc4IDAwIDBBIDE4IDBBICAxN19CQk4uLi4uLnguLi4u
CiAgICAyMzQwOiAxMCAwMCA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMyA0NSA1NCAz
MiAgLi5cLy5fU0JfUENJM0VUMgogICAgMjM1MDogMzcgQTAgNDYgMEYgOTEgOTMgNUMgMkYgMDMg
NUYgNTMgNDIgNUYgNTAgNDMgNDkgIDcuRi4uLlwvLl9TQl9QQ0kKICAgIDIzNjA6IDMzIDQ1IDU0
IDMyIDM3IDAxIDkzIDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzICAzRVQyNy4uXC8uX1NCX1BD
CiAgICAyMzcwOiA0OSAzMyA0NSA1NCAzMiAzNyAwQSAwMyBBMCA0RiAwQyA1QiAxMiA1QyAyRiAw
MyAgSTNFVDI3Li4uTy5bLlwvLgogICAgMjM4MDogNUYgNTMgNDIgNUYgNTAgNDMgNDkgMzMgNDcg
NTAgMzIgMzcgMDAgNEQgMzQgMzYgIF9TQl9QQ0kzR1AyNy5NNDYKICAgIDIzOTA6IDMwIDBEIDIw
IDIwIDIwIDIwIDRFIDZGIDc0IDY5IDY2IDc5IDIwIDI4IDVDIDVGICAwLiAgICBOb3RpZnkgKFxf
CiAgICAyM0EwOiA1MyA0MiAyRSA1MCA0MyA0OSAzMyAyRSA0NyA1MCAzMiAzNyAyQyAyMCAzMCA3
OCAgU0IuUENJMy5HUDI3LCAweAogICAgMjNCMDogMzIgMjkgMEEgMDAgMDAgMDAgMDAgMDAgMDAg
MDAgODYgNUMgMkYgMDMgNUYgNTMgIDIpLi4uLi4uLi4uXC8uX1MKICAgIDIzQzA6IDQyIDVGIDUw
IDQzIDQ5IDMzIDQ3IDUwIDMyIDM3IDBBIDAyIDVCIDIyIDBBIDY0ICBCX1BDSTNHUDI3Li5bIi5k
CiAgICAyM0QwOiA3MCA0RCAzMCAzMSAzNyA1RiA0MiA0MiA0RSAwQSAwNyAwQSAwMiAwQSA3OCAw
MCAgcE0wMTdfQkJOLi4uLi54LgogICAgMjNFMDogMEEgMjAgNjAgQTAgNDQgMDYgOTIgOTMgN0Ig
NjAgMEMgMDAgMDAgMDMgMDAgMDAgIC4gYC5ELi4ue2AuLi4uLi4KICAgIDIzRjA6IDAwIDREIDMw
IDMxIDM4IDVGIDQyIDQyIDRFIDBBIDA3IDBBIDAyIDBBIDc4IDAwICAuTTAxOF9CQk4uLi4uLngu
CiAgICAyNDAwOiAwQSAyMCA2MCA3MCA0RCAzMCAzMSAzNyA1RiA0MiA0MiA0RSAwQSAwNyAwQSAw
MiAgLiBgcE0wMTdfQkJOLi4uLgogICAgMjQxMDogMEEgNzggMDAgMEEgMjAgNjAgQTAgMzEgOTIg
OTMgN0IgNjAgMEMgMDAgMDAgMDMgIC54Li4gYC4xLi57YC4uLi4KICAgIDI0MjA6IDAwIDAwIDAw
IDREIDMwIDMxIDM4IDVGIDQyIDQyIDRFIDBBIDA3IDBBIDAyIDBBICAuLi5NMDE4X0JCTi4uLi4u
CiAgICAyNDMwOiA3OCAwMCAwQSAyMCA2MCA3MCA0RCAzMCAzMSAzNyA1RiA0MiA0MiA0RSAwQSAw
NyAgeC4uIGBwTTAxN19CQk4uLgogICAgMjQ0MDogMEEgMDIgMEEgNzggMDAgMEEgMjAgNjAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC4uLnguLiBgCgpTU0RUIEAgMHgwMDAwMDAwMDAwMDAwMDAw
CiAgICAwMDAwOiA1MyA1MyA0NCA1NCAwMCAwNSAwMCAwMCAwMiA3RSA0MSA0RCA0NCAwMCAwMCAw
MCAgU1NEVC4uLi4ufkFNRC4uLgogICAgMDAxMDogNEQgNDUgNEQgNTQgNEYgNEYgNEMgMzAgMDIg
MDAgMDAgMDAgNDkgNEUgNTQgNEMgIE1FTVRPT0wwLi4uLklOVEwKICAgIDAwMjA6IDMxIDAzIDIz
IDIwIEEwIDQzIDQ0IDAwIDE1IDVDIDREIDMxIDMxIDM1IDAzIDAwICAxLiMgLkNELi5cTTExNS4u
CiAgICAwMDMwOiAxNSA1QyA0RCAzMSAzMSAzNiAwRSAwMCAxNSA1QyA0RCAzMSAzMSAzNyAwRSAw
MCAgLlxNMTE2Li4uXE0xMTcuLgogICAgMDA0MDogMTUgNUMgNEQgMzEgMzEgMzggMEUgMDAgMTUg
NUMgNEQgMzEgMzEgMzkgMEUgMDAgIC5cTTExOC4uLlxNMTE5Li4KICAgIDAwNTA6IDE1IDVDIDRE
IDMxIDMyIDMwIDBFIDAwIDE1IDVDIDREIDMwIDMzIDM3IDA2IDAwICAuXE0xMjAuLi5cTTAzNy4u
CiAgICAwMDYwOiAxNSA1QyA0RCAzMiAzMiAzNyAwNiAwMCAxNSA1QyA0RCAzMyAzMiAzOSAwNiAw
MCAgLlxNMjI3Li4uXE0zMjkuLgogICAgMDA3MDogMTUgNUMgNEQgMzMgMzIgNDEgMDYgMDAgMTUg
NUMgNEQgMzMgMzIgNDIgMDYgMDAgIC5cTTMyQS4uLlxNMzJCLi4KICAgIDAwODA6IDE1IDVDIDRE
IDMzIDMyIDQzIDA2IDAwIDE1IDVDIDREIDMzIDMzIDMwIDA2IDAwICAuXE0zMkMuLi5cTTMzMC4u
CiAgICAwMDkwOiAxNSA1QyA0RCAzMCAzOCAzMiAwNSAwMCAxNSA1QyA0RCAzMCAzOCAzMyAwNSAw
MCAgLlxNMDgyLi4uXE0wODMuLgogICAgMDBBMDogMTUgNUMgNEQgMzAgMzggMzQgMDUgMDAgMTUg
NUMgNEQgMzAgMzggMzUgMDUgMDAgIC5cTTA4NC4uLlxNMDg1Li4KICAgIDAwQjA6IDE1IDVDIDRE
IDMyIDMyIDMxIDA1IDAwIDE1IDVDIDREIDMwIDM4IDM2IDA1IDAwICAuXE0yMjEuLi5cTTA4Ni4u
CiAgICAwMEMwOiAxNSA1QyA0RCAzMiAzMiAzOSAwNSAwMCAxNSA1QyA0RCAzMiAzMyAzMSAwNSAw
MCAgLlxNMjI5Li4uXE0yMzEuLgogICAgMDBEMDogMTUgNUMgNEQgMzIgMzMgMzUgMDUgMDAgMTUg
NUMgNEQgMzIgMzMgMzMgMDUgMDAgIC5cTTIzNS4uLlxNMjMzLi4KICAgIDAwRTA6IDE1IDVDIDRE
IDMwIDM4IDM3IDA1IDAwIDE1IDVDIDREIDMwIDM4IDM4IDA1IDAwICAuXE0wODcuLi5cTTA4OC4u
CiAgICAwMEYwOiAxNSA1QyA0RCAzMCAzOCAzOSAwNSAwMCAxNSA1QyA0RCAzMCAzOSAzMCAwNSAw
MCAgLlxNMDg5Li4uXE0wOTAuLgogICAgMDEwMDogMTUgNUMgNEQgMzAgMzkgMzEgMDUgMDAgMTUg
NUMgNEQgMzAgMzkgMzIgMDUgMDAgIC5cTTA5MS4uLlxNMDkyLi4KICAgIDAxMTA6IDE1IDVDIDRE
IDMwIDM5IDMzIDA1IDAwIDE1IDVDIDREIDMwIDM5IDM0IDA1IDAwICAuXE0wOTMuLi5cTTA5NC4u
CiAgICAwMTIwOiAxNSA1QyA0RCAzMCAzOSAzNSAwNSAwMCAxNSA1QyA0RCAzMCAzOSAzNiAwNSAw
MCAgLlxNMDk1Li4uXE0wOTYuLgogICAgMDEzMDogMTUgNUMgNEQgMzAgMzkgMzcgMDUgMDAgMTUg
NUMgNEQgMzAgMzkgMzggMDUgMDAgIC5cTTA5Ny4uLlxNMDk4Li4KICAgIDAxNDA6IDE1IDVDIDRE
IDMwIDM5IDM5IDA1IDAwIDE1IDVDIDREIDMxIDMwIDMwIDA1IDAwICAuXE0wOTkuLi5cTTEwMC4u
CiAgICAwMTUwOiAxNSA1QyA0RCAzMSAzMCAzMSAwNSAwMCAxNSA1QyA0RCAzMSAzMCAzMiAwNSAw
MCAgLlxNMTAxLi4uXE0xMDIuLgogICAgMDE2MDogMTUgNUMgNEQgMzEgMzAgMzMgMDUgMDAgMTUg
NUMgNEQgMzEgMzAgMzQgMDUgMDAgIC5cTTEwMy4uLlxNMTA0Li4KICAgIDAxNzA6IDE1IDVDIDRE
IDMxIDMwIDM1IDA1IDAwIDE1IDVDIDREIDMxIDMwIDM2IDA1IDAwICAuXE0xMDUuLi5cTTEwNi4u
CiAgICAwMTgwOiAxNSA1QyA0RCAzMSAzMCAzNyAwNSAwMCAxNSA1QyA0RCAzMSAzMiAzOCAwNSAw
MCAgLlxNMTA3Li4uXE0xMjguLgogICAgMDE5MDogMTUgNUMgNEQgMzEgMzAgMzggMDUgMDAgMTUg
NUMgNEQgMzEgMzAgMzkgMDUgMDAgIC5cTTEwOC4uLlxNMTA5Li4KICAgIDAxQTA6IDE1IDVDIDRE
IDMxIDMxIDMwIDA1IDAwIDE1IDVDIDREIDMxIDMyIDMyIDA1IDAwICAuXE0xMTAuLi5cTTEyMi4u
CiAgICAwMUIwOiAxNSA1QyA0RCAzMSAzMyAzMSAwNSAwMCAxNSA1QyA0RCAzMSAzMyAzMiAwNSAw
MCAgLlxNMTMxLi4uXE0xMzIuLgogICAgMDFDMDogMTUgNUMgNEQgMzIgMzIgMzYgMDUgMDAgMTUg
NUMgNEQgMzEgMzMgMzMgMDUgMDAgIC5cTTIyNi4uLlxNMTMzLi4KICAgIDAxRDA6IDE1IDVDIDRE
IDMxIDMzIDM0IDA1IDAwIDE1IDVDIDREIDMxIDMzIDM1IDA1IDAwICAuXE0xMzQuLi5cTTEzNS4u
CiAgICAwMUUwOiAxNSA1QyA0RCAzMSAzMyAzNiAwNSAwMCAxNSA1QyA0RCAzMiAzMiAzMCAwNSAw
MCAgLlxNMTM2Li4uXE0yMjAuLgogICAgMDFGMDogMTUgNUMgNEQgMzIgMzMgMzIgMDggMDMgMTUg
NUMgNEQgMzAgMzQgMzYgMDEgMDAgIC5cTTIzMi4uLlxNMDQ2Li4KICAgIDAyMDA6IDE1IDVDIDRE
IDMwIDM0IDM3IDAxIDAwIDE1IDVDIDREIDMwIDM0IDM5IDA4IDAyICAuXE0wNDcuLi5cTTA0OS4u
CiAgICAwMjEwOiAxNSA1QyA0RCAzMCAzNCA0NSAwOCAwMyAxNSA1QyA0RCAzMiAzNSAzMSAwNSAw
MCAgLlxNMDRFLi4uXE0yNTEuLgogICAgMDIyMDogMTUgNUMgNEQgMzMgMzEgMzAgMDUgMDAgMTUg
NUMgNEQgMzMgMzEgNDMgMDUgMDAgIC5cTTMxMC4uLlxNMzFDLi4KICAgIDAyMzA6IDE1IDVDIDRE
IDMzIDMyIDMwIDA1IDAwIDE1IDVDIDREIDMzIDMyIDMxIDA1IDAwICAuXE0zMjAuLi5cTTMyMS4u
CiAgICAwMjQwOiAxNSA1QyA0RCAzMyAzMiAzMiAwNSAwMCAxNSA1QyA0RCAzMyAzMiAzMyAwNSAw
MCAgLlxNMzIyLi4uXE0zMjMuLgogICAgMDI1MDogMTUgNUMgNEQgMzMgMzIgMzQgMDUgMDAgMTUg
NUMgNEQgMzMgMzIgMzUgMDUgMDAgIC5cTTMyNC4uLlxNMzI1Li4KICAgIDAyNjA6IDE1IDVDIDRE
IDMzIDMyIDM2IDA1IDAwIDE1IDVDIDREIDMzIDMyIDM3IDA1IDAwICAuXE0zMjYuLi5cTTMyNy4u
CiAgICAwMjcwOiAxNSA1QyA0RCAzMyAzMiAzOCAwNSAwMCAxNSA1QyA0RCAzMiAzOCAzMCAwNSAw
MCAgLlxNMzI4Li4uXE0yODAuLgogICAgMDI4MDogMTUgNUMgNEQgMzIgMzkgMzAgMDUgMDAgMTUg
NUMgNEQgMzMgMzcgMzggMDUgMDAgIC5cTTI5MC4uLlxNMzc4Li4KICAgIDAyOTA6IDE1IDVDIDRE
IDMzIDM3IDM5IDA1IDAwIDE1IDVDIDREIDMzIDM4IDMwIDA1IDAwICAuXE0zNzkuLi5cTTM4MC4u
CiAgICAwMkEwOiAxNSA1QyA0RCAzMyAzOCAzMSAwNSAwMCAxNSA1QyA0RCAzMyAzOCAzMiAwNSAw
MCAgLlxNMzgxLi4uXE0zODIuLgogICAgMDJCMDogMTUgNUMgNEQgMzMgMzggMzMgMDUgMDAgMTUg
NUMgNEQgMzMgMzggMzQgMDUgMDAgIC5cTTM4My4uLlxNMzg0Li4KICAgIDAyQzA6IDE1IDVDIDRE
IDMzIDM4IDM1IDA1IDAwIDE1IDVDIDREIDMzIDM4IDM2IDA1IDAwICAuXE0zODUuLi5cTTM4Ni4u
CiAgICAwMkQwOiAxNSA1QyA0RCAzMyAzOCAzNyAwNSAwMCAxNSA1QyA0RCAzMyAzOCAzOCAwNSAw
MCAgLlxNMzg3Li4uXE0zODguLgogICAgMDJFMDogMTUgNUMgNEQgMzMgMzggMzkgMDUgMDAgMTUg
NUMgNEQgMzMgMzkgMzAgMDUgMDAgIC5cTTM4OS4uLlxNMzkwLi4KICAgIDAyRjA6IDE1IDVDIDRE
IDMzIDM5IDMxIDA1IDAwIDE1IDVDIDREIDMzIDM5IDMyIDA1IDAwICAuXE0zOTEuLi5cTTM5Mi4u
CiAgICAwMzAwOiAxNSA1QyA0RCAzMyAzMyAzMSAwNSAwMCAxNSA1QyA0RCAzNiAzMiAzMCAwNSAw
MCAgLlxNMzMxLi4uXE02MjAuLgogICAgMDMxMDogMTUgNUMgNEQgMzQgMzAgMzQgMDMgMDAgMTUg
NUMgNEQgMzQgMzAgMzggMDkgMDAgIC5cTTQwNC4uLlxNNDA4Li4KICAgIDAzMjA6IDE1IDVDIDRE
IDM0IDMxIDM0IDA1IDAwIDE1IDVDIDREIDM0IDM0IDM0IDA1IDAwICAuXE00MTQuLi5cTTQ0NC4u
CiAgICAwMzMwOiAxNSA1QyA0RCAzNCAzNSAzMyAwNSAwMCAxNSA1QyA0RCAzNCAzNSAzNCAwNSAw
MCAgLlxNNDUzLi4uXE00NTQuLgogICAgMDM0MDogMTUgNUMgNEQgMzQgMzUgMzUgMDUgMDAgMTUg
NUMgNEQgMzQgMzUgMzYgMDUgMDAgIC5cTTQ1NS4uLlxNNDU2Li4KICAgIDAzNTA6IDE1IDVDIDRE
IDM0IDM1IDM3IDA1IDAwIDE1IDVDIDREIDM0IDM2IDMwIDA4IDA3ICAuXE00NTcuLi5cTTQ2MC4u
CiAgICAwMzYwOiAxNSA1QyA0RCAzNCAzNCAzOSAwNSAwMCAxNSA1QyA0RCAzNCA0MyAzMCAwNSAw
MCAgLlxNNDQ5Li4uXE00QzAuLgogICAgMDM3MDogMTUgNUMgNEQgMzIgMzMgNDEgMDUgMDAgMTUg
NUMgNEQgMzQgNDYgMzAgMDUgMDAgIC5cTTIzQS4uLlxNNEYwLi4KICAgIDAzODA6IDE1IDVDIDRE
IDM2IDMxIDMwIDA1IDAwIDE1IDVDIDREIDMyIDM5IDQxIDA1IDAwICAuXE02MTAuLi5cTTI5QS4u
CiAgICAwMzkwOiAxNSA1QyA0RCAzNiAzMyAzMSAwNSAwMCAxNSA1QyA0RCAzNiAzNSAzMiAwNSAw
MCAgLlxNNjMxLi4uXE02NTIuLgogICAgMDNBMDogMTUgNUMgNEQgMzAgMzUgMzAgMDYgMDAgMTUg
NUMgNEQgMzAgMzUgMzEgMDYgMDAgIC5cTTA1MC4uLlxNMDUxLi4KICAgIDAzQjA6IDE1IDVDIDRE
IDMwIDM1IDMyIDA2IDAwIDE1IDVDIDREIDMwIDM1IDMzIDA2IDAwICAuXE0wNTIuLi5cTTA1My4u
CiAgICAwM0MwOiAxNSA1QyA0RCAzMCAzNSAzNCAwNiAwMCAxNSA1QyA0RCAzMCAzNSAzNSAwNiAw
MCAgLlxNMDU0Li4uXE0wNTUuLgogICAgMDNEMDogMTUgNUMgNEQgMzAgMzUgMzYgMDYgMDAgMTUg
NUMgNEQgMzAgMzUgMzcgMDYgMDAgIC5cTTA1Ni4uLlxNMDU3Li4KICAgIDAzRTA6IDE1IDVDIDRE
IDMwIDM1IDM4IDA2IDAwIDE1IDVDIDREIDMwIDM1IDM5IDA2IDAwICAuXE0wNTguLi5cTTA1OS4u
CiAgICAwM0YwOiAxNSA1QyA0RCAzMCAzNiAzMiAwNiAwMCAxNSA1QyA0RCAzMCAzNiAzOCAwNiAw
MCAgLlxNMDYyLi4uXE0wNjguLgogICAgMDQwMDogMTUgNUMgNEQgMzAgMzYgMzkgMDYgMDAgMTUg
NUMgNEQgMzAgMzcgMzAgMDYgMDAgIC5cTTA2OS4uLlxNMDcwLi4KICAgIDA0MTA6IDE1IDVDIDRE
IDMwIDM3IDMxIDA2IDAwIDE1IDVDIDREIDMwIDM3IDMyIDA2IDAwICAuXE0wNzEuLi5cTTA3Mi4u
CiAgICAwNDIwOiAxNSA1QyA0RCAzMCAzNyAzNCAwNiAwMCAxNSA1QyA0RCAzMCAzNyAzNSAwNiAw
MCAgLlxNMDc0Li4uXE0wNzUuLgogICAgMDQzMDogMTUgNUMgNEQgMzAgMzcgMzYgMDYgMDAgMTUg
NUMgNEQgMzAgMzcgMzcgMDYgMDAgIC5cTTA3Ni4uLlxNMDc3Li4KICAgIDA0NDA6IDE1IDVDIDRE
IDMwIDM3IDM4IDA2IDAwIDE1IDVDIDREIDMwIDM3IDM5IDA2IDAwICAuXE0wNzguLi5cTTA3OS4u
CiAgICAwNDUwOiAxNSA1QyA0RCAzMCAzOCAzMCAwNiAwMCAxNSA1QyA0RCAzMCAzOCAzMSAwNiAw
MCAgLlxNMDgwLi4uXE0wODEuLgogICAgMDQ2MDogMTUgNUMgNEQgMzEgMzIgMzcgMDYgMDAgMTQg
NDcgMDkgNEQgNDcgNTIgNTQgMDEgIC5cTTEyNy4uLkcuTUdSVC4KICAgIDA0NzA6IDhBIDY4IDAw
IDREIDQ1IDREIDQ5IDhBIDY4IDBBIDA0IDREIDQ1IDREIDQ0IDREICAuaC5NRU1JLmguLk1FTURN
CiAgICAwNDgwOiAzNCAzNiAzMCAwRCAyMCAyMCA0NiA0NSA0MSAyRCA0MSA1MyA0QyAyRCA0RCA2
NSAgNDYwLiAgRkVBLUFTTC1NZQogICAgMDQ5MDogNkQgNkYgNzIgNzkgMjAgNEQgNjEgNzIgNjcg
NjkgNkUgMjAgNTQgNkYgNkYgNkMgIG1vcnkgTWFyZ2luIFRvb2wKICAgIDA0QTA6IDIwIDQzIDZE
IDY0IDNBIDMwIDc4IDI1IDU4IDIwIDU2IDYxIDZDIDc1IDY1IDNBICAgQ21kOjB4JVggVmFsdWU6
CiAgICAwNEIwOiAzMCA3OCAyNSA1OCAwQSAwMCA0RCA0NSA0RCA0OSA0RCA0NSA0RCA0NCAwMCAw
MCAgMHglWC4uTUVNSU1FTUQuLgogICAgMDRDMDogMDAgMDAgQTAgM0QgOTIgOTMgNEQgMzYgMzEg
MzAgMDAgNzAgNEQgMzAgMzQgMzkgIC4uLj0uLk02MTAucE0wNDkKICAgIDA0RDA6IDREIDM2IDMx
IDMwIDBBIDEwIDYyIDcwIDREIDQ1IDREIDQ5IDYzIDcwIDREIDQ1ICBNNjEwLi5icE1FTUljcE1F
CiAgICAwNEUwOiA0RCA0NCA2NCA0RCAzMCAzNCA0NSA0RCAzNiAzMSAzMCAwQSAxMSA2MyA0RCAz
MCAgTURkTTA0RU02MTAuLmNNMAogICAgMDRGMDogMzQgNDUgNEQgMzYgMzEgMzAgMEEgMTUgNjQg
NEQgMzIgMzMgMzIgNjIgMDAgMDAgIDRFTTYxMC4uZE0yMzJiLi4KCkhQRVQgQCAweDAwMDAwMDAw
MDAwMDAwMDAKICAgIDAwMDA6IDQ4IDUwIDQ1IDU0IDM4IDAwIDAwIDAwIDAxIDY3IDQxIDREIDQ0
IDAwIDQxIDIwICBIUEVUOC4uLi5nQU1ELkEgCiAgICAwMDEwOiA0MSAyMCA0RCAyMCA0OSAwMCAw
MCAwMCAwMSAwMCAwMCAwMCA0MSA0RCA0OSAyMCAgQSBNIEkuLi4uLi4uQU1JIAogICAgMDAyMDog
MDUgMDAgMDAgMDAgMDEgODIgMjIgMTAgMDAgNDAgMDAgMDAgMDAgMDAgRDAgRkUgIC4uLi4uLiIu
LkAuLi4uLi4KICAgIDAwMzA6IDAwIDAwIDAwIDAwIDAwIEVFIDM3IDAwICAgICAgICAgICAgICAg
ICAgICAgICAgICAuLi4uLi43LgoKU1NEVCBAIDB4MDAwMDAwMDAwMDAwMDAwMAogICAgMDAwMDog
NTMgNTMgNDQgNTQgNDggMjQgMDAgMDAgMDIgNzAgNDEgNEQgNDQgMDAgMDAgMDAgIFNTRFRIJC4u
LnBBTUQuLi4KICAgIDAwMTA6IDQ3IDUwIDUwIDVGIDUwIDREIDQ1IDVGIDAxIDAwIDAwIDAwIDQ5
IDRFIDU0IDRDICBHUFBfUE1FXy4uLi5JTlRMCiAgICAwMDIwOiAzMSAwMyAyMyAyMCBBMCA0OCA2
MCAwMCAxNSA1QyA0RCAzMCAzMSAzNyAwOCAwNiAgMS4jIC5IYC4uXE0wMTcuLgogICAgMDAzMDog
MTUgNUMgNEQgMzAgMzEgMzggMDggMDcgMTUgNUMgNEQgMzEgMzEgMzUgMDMgMDAgIC5cTTAxOC4u
LlxNMTE1Li4KICAgIDAwNDA6IDE1IDVDIDREIDMxIDMxIDM2IDBFIDAwIDE1IDVDIDREIDMxIDMx
IDM3IDBFIDAwICAuXE0xMTYuLi5cTTExNy4uCiAgICAwMDUwOiAxNSA1QyA0RCAzMSAzMSAzOCAw
RSAwMCAxNSA1QyA0RCAzMSAzMSAzOSAwRSAwMCAgLlxNMTE4Li4uXE0xMTkuLgogICAgMDA2MDog
MTUgNUMgNEQgMzEgMzIgMzAgMEUgMDAgMTUgNUMgNEQgMzAgMzMgMzcgMDYgMDAgIC5cTTEyMC4u
LlxNMDM3Li4KICAgIDAwNzA6IDE1IDVDIDREIDMyIDMyIDM3IDA2IDAwIDE1IDVDIDREIDMzIDMy
IDM5IDA2IDAwICAuXE0yMjcuLi5cTTMyOS4uCiAgICAwMDgwOiAxNSA1QyA0RCAzMyAzMiA0MSAw
NiAwMCAxNSA1QyA0RCAzMyAzMiA0MiAwNiAwMCAgLlxNMzJBLi4uXE0zMkIuLgogICAgMDA5MDog
MTUgNUMgNEQgMzMgMzIgNDMgMDYgMDAgMTUgNUMgNEQgMzMgMzMgMzAgMDYgMDAgIC5cTTMyQy4u
LlxNMzMwLi4KICAgIDAwQTA6IDE1IDVDIDREIDMwIDM4IDMyIDA1IDAwIDE1IDVDIDREIDMwIDM4
IDMzIDA1IDAwICAuXE0wODIuLi5cTTA4My4uCiAgICAwMEIwOiAxNSA1QyA0RCAzMCAzOCAzNCAw
NSAwMCAxNSA1QyA0RCAzMCAzOCAzNSAwNSAwMCAgLlxNMDg0Li4uXE0wODUuLgogICAgMDBDMDog
MTUgNUMgNEQgMzIgMzIgMzEgMDUgMDAgMTUgNUMgNEQgMzAgMzggMzYgMDUgMDAgIC5cTTIyMS4u
LlxNMDg2Li4KICAgIDAwRDA6IDE1IDVDIDREIDMyIDMyIDM5IDA1IDAwIDE1IDVDIDREIDMyIDMz
IDMxIDA1IDAwICAuXE0yMjkuLi5cTTIzMS4uCiAgICAwMEUwOiAxNSA1QyA0RCAzMiAzMyAzNSAw
NSAwMCAxNSA1QyA0RCAzMiAzMyAzMyAwNSAwMCAgLlxNMjM1Li4uXE0yMzMuLgogICAgMDBGMDog
MTUgNUMgNEQgMzAgMzggMzcgMDUgMDAgMTUgNUMgNEQgMzAgMzggMzggMDUgMDAgIC5cTTA4Ny4u
LlxNMDg4Li4KICAgIDAxMDA6IDE1IDVDIDREIDMwIDM4IDM5IDA1IDAwIDE1IDVDIDREIDMwIDM5
IDMwIDA1IDAwICAuXE0wODkuLi5cTTA5MC4uCiAgICAwMTEwOiAxNSA1QyA0RCAzMCAzOSAzMSAw
NSAwMCAxNSA1QyA0RCAzMCAzOSAzMiAwNSAwMCAgLlxNMDkxLi4uXE0wOTIuLgogICAgMDEyMDog
MTUgNUMgNEQgMzAgMzkgMzMgMDUgMDAgMTUgNUMgNEQgMzAgMzkgMzQgMDUgMDAgIC5cTTA5My4u
LlxNMDk0Li4KICAgIDAxMzA6IDE1IDVDIDREIDMwIDM5IDM1IDA1IDAwIDE1IDVDIDREIDMwIDM5
IDM2IDA1IDAwICAuXE0wOTUuLi5cTTA5Ni4uCiAgICAwMTQwOiAxNSA1QyA0RCAzMCAzOSAzNyAw
NSAwMCAxNSA1QyA0RCAzMCAzOSAzOCAwNSAwMCAgLlxNMDk3Li4uXE0wOTguLgogICAgMDE1MDog
MTUgNUMgNEQgMzAgMzkgMzkgMDUgMDAgMTUgNUMgNEQgMzEgMzAgMzAgMDUgMDAgIC5cTTA5OS4u
LlxNMTAwLi4KICAgIDAxNjA6IDE1IDVDIDREIDMxIDMwIDMxIDA1IDAwIDE1IDVDIDREIDMxIDMw
IDMyIDA1IDAwICAuXE0xMDEuLi5cTTEwMi4uCiAgICAwMTcwOiAxNSA1QyA0RCAzMSAzMCAzMyAw
NSAwMCAxNSA1QyA0RCAzMSAzMCAzNCAwNSAwMCAgLlxNMTAzLi4uXE0xMDQuLgogICAgMDE4MDog
MTUgNUMgNEQgMzEgMzAgMzUgMDUgMDAgMTUgNUMgNEQgMzEgMzAgMzYgMDUgMDAgIC5cTTEwNS4u
LlxNMTA2Li4KICAgIDAxOTA6IDE1IDVDIDREIDMxIDMwIDM3IDA1IDAwIDE1IDVDIDREIDMxIDMy
IDM4IDA1IDAwICAuXE0xMDcuLi5cTTEyOC4uCiAgICAwMUEwOiAxNSA1QyA0RCAzMSAzMCAzOCAw
NSAwMCAxNSA1QyA0RCAzMSAzMCAzOSAwNSAwMCAgLlxNMTA4Li4uXE0xMDkuLgogICAgMDFCMDog
MTUgNUMgNEQgMzEgMzEgMzAgMDUgMDAgMTUgNUMgNEQgMzEgMzIgMzIgMDUgMDAgIC5cTTExMC4u
LlxNMTIyLi4KICAgIDAxQzA6IDE1IDVDIDREIDMxIDMzIDMxIDA1IDAwIDE1IDVDIDREIDMxIDMz
IDMyIDA1IDAwICAuXE0xMzEuLi5cTTEzMi4uCiAgICAwMUQwOiAxNSA1QyA0RCAzMiAzMiAzNiAw
NSAwMCAxNSA1QyA0RCAzMSAzMyAzMyAwNSAwMCAgLlxNMjI2Li4uXE0xMzMuLgogICAgMDFFMDog
MTUgNUMgNEQgMzEgMzMgMzQgMDUgMDAgMTUgNUMgNEQgMzEgMzMgMzUgMDUgMDAgIC5cTTEzNC4u
LlxNMTM1Li4KICAgIDAxRjA6IDE1IDVDIDREIDMxIDMzIDM2IDA1IDAwIDE1IDVDIDREIDMyIDMy
IDMwIDA1IDAwICAuXE0xMzYuLi5cTTIyMC4uCiAgICAwMjAwOiAxNSA1QyA0RCAzMCAzNCAzNiAw
MSAwMCAxNSA1QyA0RCAzMCAzNCAzNyAwMSAwMCAgLlxNMDQ2Li4uXE0wNDcuLgogICAgMDIxMDog
MTUgNUMgNEQgMzAgMzQgMzkgMDggMDIgMTUgNUMgNEQgMzIgMzUgMzEgMDUgMDAgIC5cTTA0OS4u
LlxNMjUxLi4KICAgIDAyMjA6IDE1IDVDIDREIDMzIDMxIDMwIDA1IDAwIDE1IDVDIDREIDMzIDMx
IDQzIDA1IDAwICAuXE0zMTAuLi5cTTMxQy4uCiAgICAwMjMwOiAxNSA1QyA0RCAzMyAzMiAzMCAw
NSAwMCAxNSA1QyA0RCAzMyAzMiAzMSAwNSAwMCAgLlxNMzIwLi4uXE0zMjEuLgogICAgMDI0MDog
MTUgNUMgNEQgMzMgMzIgMzIgMDUgMDAgMTUgNUMgNEQgMzMgMzIgMzMgMDUgMDAgIC5cTTMyMi4u
LlxNMzIzLi4KICAgIDAyNTA6IDE1IDVDIDREIDMzIDMyIDM0IDA1IDAwIDE1IDVDIDREIDMzIDMy
IDM1IDA1IDAwICAuXE0zMjQuLi5cTTMyNS4uCiAgICAwMjYwOiAxNSA1QyA0RCAzMyAzMiAzNiAw
NSAwMCAxNSA1QyA0RCAzMyAzMiAzNyAwNSAwMCAgLlxNMzI2Li4uXE0zMjcuLgogICAgMDI3MDog
MTUgNUMgNEQgMzMgMzIgMzggMDUgMDAgMTUgNUMgNEQgMzIgMzggMzAgMDUgMDAgIC5cTTMyOC4u
LlxNMjgwLi4KICAgIDAyODA6IDE1IDVDIDREIDMyIDM5IDMwIDA1IDAwIDE1IDVDIDREIDMzIDM3
IDM4IDA1IDAwICAuXE0yOTAuLi5cTTM3OC4uCiAgICAwMjkwOiAxNSA1QyA0RCAzMyAzNyAzOSAw
NSAwMCAxNSA1QyA0RCAzMyAzOCAzMCAwNSAwMCAgLlxNMzc5Li4uXE0zODAuLgogICAgMDJBMDog
MTUgNUMgNEQgMzMgMzggMzEgMDUgMDAgMTUgNUMgNEQgMzMgMzggMzIgMDUgMDAgIC5cTTM4MS4u
LlxNMzgyLi4KICAgIDAyQjA6IDE1IDVDIDREIDMzIDM4IDMzIDA1IDAwIDE1IDVDIDREIDMzIDM4
IDM0IDA1IDAwICAuXE0zODMuLi5cTTM4NC4uCiAgICAwMkMwOiAxNSA1QyA0RCAzMyAzOCAzNSAw
NSAwMCAxNSA1QyA0RCAzMyAzOCAzNiAwNSAwMCAgLlxNMzg1Li4uXE0zODYuLgogICAgMDJEMDog
MTUgNUMgNEQgMzMgMzggMzcgMDUgMDAgMTUgNUMgNEQgMzMgMzggMzggMDUgMDAgIC5cTTM4Ny4u
LlxNMzg4Li4KICAgIDAyRTA6IDE1IDVDIDREIDMzIDM4IDM5IDA1IDAwIDE1IDVDIDREIDMzIDM5
IDMwIDA1IDAwICAuXE0zODkuLi5cTTM5MC4uCiAgICAwMkYwOiAxNSA1QyA0RCAzMyAzOSAzMSAw
NSAwMCAxNSA1QyA0RCAzMyAzOSAzMiAwNSAwMCAgLlxNMzkxLi4uXE0zOTIuLgogICAgMDMwMDog
MTUgNUMgNEQgMzMgMzMgMzEgMDUgMDAgMTUgNUMgNEQgMzYgMzIgMzAgMDUgMDAgIC5cTTMzMS4u
LlxNNjIwLi4KICAgIDAzMTA6IDE1IDVDIDREIDM0IDMwIDM0IDAzIDAwIDE1IDVDIDREIDM0IDMw
IDM4IDA5IDAwICAuXE00MDQuLi5cTTQwOC4uCiAgICAwMzIwOiAxNSA1QyA0RCAzNCAzMSAzNCAw
NSAwMCAxNSA1QyA0RCAzNCAzNCAzNCAwNSAwMCAgLlxNNDE0Li4uXE00NDQuLgogICAgMDMzMDog
MTUgNUMgNEQgMzQgMzUgMzMgMDUgMDAgMTUgNUMgNEQgMzQgMzUgMzQgMDUgMDAgIC5cTTQ1My4u
LlxNNDU0Li4KICAgIDAzNDA6IDE1IDVDIDREIDM0IDM1IDM1IDA1IDAwIDE1IDVDIDREIDM0IDM1
IDM2IDA1IDAwICAuXE00NTUuLi5cTTQ1Ni4uCiAgICAwMzUwOiAxNSA1QyA0RCAzNCAzNSAzNyAw
NSAwMCAxNSA1QyA0RCAzNCAzNiAzMCAwOCAwNyAgLlxNNDU3Li4uXE00NjAuLgogICAgMDM2MDog
MTUgNUMgNEQgMzQgMzQgMzkgMDUgMDAgMTUgNUMgNEQgMzQgNDMgMzAgMDUgMDAgIC5cTTQ0OS4u
LlxNNEMwLi4KICAgIDAzNzA6IDE1IDVDIDREIDMyIDMzIDQxIDA1IDAwIDE1IDVDIDREIDM0IDQ2
IDMwIDA1IDAwICAuXE0yM0EuLi5cTTRGMC4uCiAgICAwMzgwOiAxNSA1QyA0RCAzNiAzMSAzMCAw
NSAwMCAxNSA1QyA0RCAzMiAzOSA0MSAwNSAwMCAgLlxNNjEwLi4uXE0yOUEuLgogICAgMDM5MDog
MTUgNUMgNEQgMzYgMzMgMzEgMDUgMDAgMTUgNUMgNEQgMzYgMzUgMzIgMDUgMDAgIC5cTTYzMS4u
LlxNNjUyLi4KICAgIDAzQTA6IDE1IDVDIDREIDMwIDM1IDMwIDA2IDAwIDE1IDVDIDREIDMwIDM1
IDMxIDA2IDAwICAuXE0wNTAuLi5cTTA1MS4uCiAgICAwM0IwOiAxNSA1QyA0RCAzMCAzNSAzMiAw
NiAwMCAxNSA1QyA0RCAzMCAzNSAzMyAwNiAwMCAgLlxNMDUyLi4uXE0wNTMuLgogICAgMDNDMDog
MTUgNUMgNEQgMzAgMzUgMzQgMDYgMDAgMTUgNUMgNEQgMzAgMzUgMzUgMDYgMDAgIC5cTTA1NC4u
LlxNMDU1Li4KICAgIDAzRDA6IDE1IDVDIDREIDMwIDM1IDM2IDA2IDAwIDE1IDVDIDREIDMwIDM1
IDM3IDA2IDAwICAuXE0wNTYuLi5cTTA1Ny4uCiAgICAwM0UwOiAxNSA1QyA0RCAzMCAzNSAzOCAw
NiAwMCAxNSA1QyA0RCAzMCAzNSAzOSAwNiAwMCAgLlxNMDU4Li4uXE0wNTkuLgogICAgMDNGMDog
MTUgNUMgNEQgMzAgMzYgMzIgMDYgMDAgMTUgNUMgNEQgMzAgMzYgMzggMDYgMDAgIC5cTTA2Mi4u
LlxNMDY4Li4KICAgIDA0MDA6IDE1IDVDIDREIDMwIDM2IDM5IDA2IDAwIDE1IDVDIDREIDMwIDM3
IDMwIDA2IDAwICAuXE0wNjkuLi5cTTA3MC4uCiAgICAwNDEwOiAxNSA1QyA0RCAzMCAzNyAzMSAw
NiAwMCAxNSA1QyA0RCAzMCAzNyAzMiAwNiAwMCAgLlxNMDcxLi4uXE0wNzIuLgogICAgMDQyMDog
MTUgNUMgNEQgMzAgMzcgMzQgMDYgMDAgMTUgNUMgNEQgMzAgMzcgMzUgMDYgMDAgIC5cTTA3NC4u
LlxNMDc1Li4KICAgIDA0MzA6IDE1IDVDIDREIDMwIDM3IDM2IDA2IDAwIDE1IDVDIDREIDMwIDM3
IDM3IDA2IDAwICAuXE0wNzYuLi5cTTA3Ny4uCiAgICAwNDQwOiAxNSA1QyA0RCAzMCAzNyAzOCAw
NiAwMCAxNSA1QyA0RCAzMCAzNyAzOSAwNiAwMCAgLlxNMDc4Li4uXE0wNzkuLgogICAgMDQ1MDog
MTUgNUMgNEQgMzAgMzggMzAgMDYgMDAgMTUgNUMgNEQgMzAgMzggMzEgMDYgMDAgIC5cTTA4MC4u
LlxNMDgxLi4KICAgIDA0NjA6IDE1IDVDIDREIDMxIDMyIDM3IDA2IDAwIDE1IDVDIDVGIDQyIDQy
IDRFIDAxIDAwICAuXE0xMjcuLi5cX0JCTi4uCiAgICAwNDcwOiAxNSA1QyAyRSA1RiA1MyA0MiA1
RiA1MCA0MyA0OSAzMSAwNiAwMCAxNSA1QyAyRiAgLlwuX1NCX1BDSTEuLi5cLwogICAgMDQ4MDog
MDMgNUYgNTMgNDIgNUYgNTAgNDMgNDkgMzEgNDcgNTAgNTAgMzAgMDYgMDAgMTUgIC5fU0JfUENJ
MUdQUDAuLi4KICAgIDA0OTA6IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMxIDQ3IDUw
IDUwIDMxIDA2ICBcLy5fU0JfUENJMUdQUDEuCiAgICAwNEEwOiAwMCAxNSA1QyAyRiAwMyA1RiA1
MyA0MiA1RiA1MCA0MyA0OSAzMSA0NyA1MCA1MCAgLi5cLy5fU0JfUENJMUdQUAogICAgMDRCMDog
MzIgMDYgMDAgMTUgNUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAgNDMgNDkgMzEgNDcgIDIuLi5cLy5f
U0JfUENJMUcKICAgIDA0QzA6IDUwIDUwIDMzIDA2IDAwIDE1IDVDIDJGIDAzIDVGIDUzIDQyIDVG
IDUwIDQzIDQ5ICBQUDMuLi5cLy5fU0JfUENJCiAgICAwNEQwOiAzMSA0NyA1MCA1MCAzNCAwNiAw
MCAxNSA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCAgMUdQUDQuLi5cLy5fU0JfUAogICAgMDRFMDog
NDMgNDkgMzEgNDcgNTAgNTAgMzUgMDYgMDAgMTUgNUMgMkYgMDMgNUYgNTMgNDIgIENJMUdQUDUu
Li5cLy5fU0IKICAgIDA0RjA6IDVGIDUwIDQzIDQ5IDMxIDQ3IDUwIDUwIDM2IDA2IDAwIDE1IDVD
IDJGIDAzIDVGICBfUENJMUdQUDYuLi5cLy5fCiAgICAwNTAwOiA1MyA0MiA1RiA1MCA0MyA0OSAz
MSA0NyA1MCA1MCAzNyAwNiAwMCAxNSA1QyAyRiAgU0JfUENJMUdQUDcuLi5cLwogICAgMDUxMDog
MDMgNUYgNTMgNDIgNUYgNTAgNDMgNDkgMzEgNDcgNTAgNTAgMzggMDYgMDAgMTUgIC5fU0JfUENJ
MUdQUDguLi4KICAgIDA1MjA6IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMxIDQ3IDUw
IDUwIDM5IDA2ICBcLy5fU0JfUENJMUdQUDkuCiAgICAwNTMwOiAwMCAxNSA1QyAyRiAwMyA1RiA1
MyA0MiA1RiA1MCA0MyA0OSAzMSA0NyA1MCA1MCAgLi5cLy5fU0JfUENJMUdQUAogICAgMDU0MDog
NDEgMDYgMDAgMTUgNUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAgNDMgNDkgMzEgNDcgIEEuLi5cLy5f
U0JfUENJMUcKICAgIDA1NTA6IDUwIDUwIDQyIDA2IDAwIDE1IDVDIDJGIDAzIDVGIDUzIDQyIDVG
IDUwIDQzIDQ5ICBQUEIuLi5cLy5fU0JfUENJCiAgICAwNTYwOiAzMSA0NyA1MCA1MCA0MyAwNiAw
MCAxNSA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCAgMUdQUEMuLi5cLy5fU0JfUAogICAgMDU3MDog
NDMgNDkgMzEgNDcgNTAgNTAgNDQgMDYgMDAgMTUgNUMgMkYgMDMgNUYgNTMgNDIgIENJMUdQUEQu
Li5cLy5fU0IKICAgIDA1ODA6IDVGIDUwIDQzIDQ5IDMxIDQ3IDUwIDUwIDQ1IDA2IDAwIDE1IDVD
IDJGIDAzIDVGICBfUENJMUdQUEUuLi5cLy5fCiAgICAwNTkwOiA1MyA0MiA1RiA1MCA0MyA0OSAz
MSA0NyA1MCA1MCA0NiAwNiAwMCAxNSA1QyAyRiAgU0JfUENJMUdQUEYuLi5cLwogICAgMDVBMDog
MDMgNUYgNTMgNDIgNUYgNTAgNDMgNDkgMzEgNDcgNTAgNTAgNDcgMDYgMDAgMTUgIC5fU0JfUENJ
MUdQUEcuLi4KICAgIDA1QjA6IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMxIDQ3IDUw
IDUwIDQ4IDA2ICBcLy5fU0JfUENJMUdQUEguCiAgICAwNUMwOiAwMCAxNSA1QyAyRiAwMyA1RiA1
MyA0MiA1RiA1MCA0MyA0OSAzMSA0NyA1MCAzMSAgLi5cLy5fU0JfUENJMUdQMQogICAgMDVEMDog
MzUgMDYgMDAgMTUgNUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAgNDMgNDkgMzEgNDcgIDUuLi5cLy5f
U0JfUENJMUcKICAgIDA1RTA6IDUwIDMyIDM1IDA2IDAwIDE1IDVDIDJGIDAzIDVGIDUzIDQyIDVG
IDUwIDQzIDQ5ICBQMjUuLi5cLy5fU0JfUENJCiAgICAwNUYwOiAzMSA0NyA1MCAzMyAzNSAwNiAw
MCAxNSA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCAgMUdQMzUuLi5cLy5fU0JfUAogICAgMDYwMDog
NDMgNDkgMzEgNDcgNTAgMzQgMzUgMDYgMDAgMTUgNUMgMkYgMDMgNUYgNTMgNDIgIENJMUdQNDUu
Li5cLy5fU0IKICAgIDA2MTA6IDVGIDUwIDQzIDQ5IDMxIDQ3IDUwIDMxIDM3IDA2IDAwIDE1IDVD
IDJGIDAzIDVGICBfUENJMUdQMTcuLi5cLy5fCiAgICAwNjIwOiA1MyA0MiA1RiA1MCA0MyA0OSAz
MSA0NyA1MCAzMiAzNyAwNiAwMCAxMCA4QSBFMSAgU0JfUENJMUdQMjcuLi4uLgogICAgMDYzMDog
MDEgNUMgMkUgNUYgNTMgNDIgNUYgNTAgNDMgNDkgMzEgMDggNDUgNTQgNTAgMzAgIC5cLl9TQl9Q
Q0kxLkVUUDAKICAgIDA2NDA6IDBBIDU1IDA4IDQ1IDU0IDUwIDMxIDBBIDU1IDA4IDQ1IDU0IDUw
IDMyIDBBIDU1ICAuVS5FVFAxLlUuRVRQMi5VCiAgICAwNjUwOiAwOCA0NSA1NCA1MCAzMyAwQSA1
NSAwOCA0NSA1NCA1MCAzNCAwQSA1NSAwOCA0NSAgLkVUUDMuVS5FVFA0LlUuRQogICAgMDY2MDog
NTQgNTAgMzUgMEEgNTUgMDggNDUgNTQgNTAgMzYgMEEgNTUgMDggNDUgNTQgNTAgIFRQNS5VLkVU
UDYuVS5FVFAKICAgIDA2NzA6IDM3IDBBIDU1IDA4IDQ1IDU0IDUwIDM4IDBBIDU1IDA4IDQ1IDU0
IDUwIDM5IDBBICA3LlUuRVRQOC5VLkVUUDkuCiAgICAwNjgwOiA1NSAwOCA0NSA1NCA1MCA0MSAw
QSA1NSAwOCA0NSA1NCA1MCA0MiAwQSA1NSAwOCAgVS5FVFBBLlUuRVRQQi5VLgogICAgMDY5MDog
NDUgNTQgNTAgNDMgMEEgNTUgMDggNDUgNTQgNTAgNDQgMEEgNTUgMDggNDUgNTQgIEVUUEMuVS5F
VFBELlUuRVQKICAgIDA2QTA6IDUwIDQ1IDBBIDU1IDA4IDQ1IDU0IDUwIDQ2IDBBIDU1IDA4IDQ1
IDU0IDUwIDQ3ICBQRS5VLkVUUEYuVS5FVFBHCiAgICAwNkIwOiAwQSA1NSAwOCA0NSA1NCA1MCA0
OCAwQSA1NSAwOCA0NSA1NCAzMSAzNSAwQSA1NSAgLlUuRVRQSC5VLkVUMTUuVQogICAgMDZDMDog
MDggNDUgNTQgMzIgMzUgMEEgNTUgMDggNDUgNTQgMzMgMzUgMEEgNTUgMDggNDUgIC5FVDI1LlUu
RVQzNS5VLkUKICAgIDA2RDA6IDU0IDM0IDM1IDBBIDU1IDA4IDQ1IDU0IDMxIDM3IDBBIDU1IDA4
IDQ1IDU0IDMyICBUNDUuVS5FVDE3LlUuRVQyCiAgICAwNkUwOiAzNyAwQSA1NSAxNCA4NCBENiAw
MSA1MCA1MCA0RCA0NSAwMCA0RCAzNCAzNiAzMCAgNy5VLi4uLlBQTUUuTTQ2MAogICAgMDZGMDog
MEQgMjAgMjAgNEYgNDUgNEQgMkQgNDEgNTMgNEMgMkQgNUMgNUYgNTMgNDIgMkUgIC4gIE9FTS1B
U0wtXF9TQi4KICAgIDA3MDA6IDUwIDQzIDQ5IDMxIDJFIDUwIDUwIDREIDQ1IDBBIDAwIDAwIDAw
IDAwIDAwIDAwICBQQ0kxLlBQTUUuLi4uLi4uCiAgICAwNzEwOiAwMCBBMCA0RiAxOCA5MiA5MyA1
QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAgLi5PLi4uXC8uX1NCX1BDSQogICAgMDcyMDog
MzEgNDUgNTQgNTAgMzAgMEEgRkYgNzAgN0EgNEQgMzAgMzEgMzcgNUYgNDIgNDIgIDFFVFAwLi5w
ek0wMTdfQkIKICAgIDA3MzA6IDRFIDAxIDAxIDBBIDc4IDAwIDBBIDE4IDBBIDEwIDAwIDVDIDJG
IDAzIDVGIDUzICBOLi4ueC4uLi4uLlwvLl9TCiAgICAwNzQwOiA0MiA1RiA1MCA0MyA0OSAzMSA0
NSA1NCA1MCAzMCBBMCA0NiAxNSA5MSA5MyA1QyAgQl9QQ0kxRVRQMC5GLi4uXAogICAgMDc1MDog
MkYgMDMgNUYgNTMgNDIgNUYgNTAgNDMgNDkgMzEgNDUgNTQgNTAgMzAgMDEgOTMgIC8uX1NCX1BD
STFFVFAwLi4KICAgIDA3NjA6IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMxIDQ1IDU0
IDUwIDMwIDBBICBcLy5fU0JfUENJMUVUUDAuCiAgICAwNzcwOiAwMyBBMCA0RiAxMiA1QiAxMiA1
QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAgLi5PLlsuXC8uX1NCX1BDSQogICAgMDc4MDog
MzEgNDcgNTAgNTAgMzAgMDAgQTAgNDkgMDYgOTIgOTMgNEQgMzYgMzIgMzAgMDAgIDFHUFAwLi5J
Li4uTTYyMC4KICAgIDA3OTA6IEEwIDRGIDA1IDkzIDREIDMwIDM0IDM5IDREIDM2IDMyIDMwIDBB
IDEwIDAxIEEwICAuTy4uTTA0OU02MjAuLi4uCiAgICAwN0EwOiA0MCAwNSA5MyA3QiA0RCAzMCAz
NCAzOSA0RCAzNiAzMiAzMCAwQSA1MiAwQSAwMiAgQC4ue00wNDlNNjIwLlIuLgogICAgMDdCMDog
MDAgMDAgNEQgMzQgMzYgMzAgMEQgMjAgMjAgMjAgMjAgNEUgNkYgNzQgNjkgNjYgIC4uTTQ2MC4g
ICAgTm90aWYKICAgIDA3QzA6IDc5IDIwIDI4IDVDIDVGIDUzIDQyIDJFIDUwIDQzIDQ5IDMxIDJF
IDQ3IDUwIDUwICB5IChcX1NCLlBDSTEuR1BQCiAgICAwN0QwOiAzMCAyQyAyMCAzMCA3OCAzMCAy
OSAwQSAwMCAwMCAwMCAwMCAwMCAwMCAwMCA4NiAgMCwgMHgwKS4uLi4uLi4uLgogICAgMDdFMDog
NUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAgNDMgNDkgMzEgNDcgNTAgNTAgMzAgMDAgIFwvLl9TQl9Q
Q0kxR1BQMC4KICAgIDA3RjA6IDREIDM0IDM2IDMwIDBEIDIwIDIwIDIwIDIwIDRFIDZGIDc0IDY5
IDY2IDc5IDIwICBNNDYwLiAgICBOb3RpZnkgCiAgICAwODAwOiAyOCA1QyA1RiA1MyA0MiAyRSA1
MCA0MyA0OSAzMSAyRSA0NyA1MCA1MCAzMCAyQyAgKFxfU0IuUENJMS5HUFAwLAogICAgMDgxMDog
MjAgMzAgNzggMzIgMjkgMEEgMDAgMDAgMDAgMDAgMDAgMDAgMDAgODYgNUMgMkYgICAweDIpLi4u
Li4uLi4uXC8KICAgIDA4MjA6IDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMxIDQ3IDUwIDUwIDMw
IDBBIDAyIDVCICAuX1NCX1BDSTFHUFAwLi5bCiAgICAwODMwOiAyMiAwQSA2NCA3MCA0RCAzMCAz
MSAzNyA1RiA0MiA0MiA0RSAwMSAwMSAwQSA3OCAgIi5kcE0wMTdfQkJOLi4ueAogICAgMDg0MDog
MDAgMEEgMjAgNjAgQTAgNEMgMDUgOTIgOTMgN0IgNjAgMEMgMDAgMDAgMDMgMDAgIC4uIGAuTC4u
LntgLi4uLi4KICAgIDA4NTA6IDAwIDAwIDREIDMwIDMxIDM4IDVGIDQyIDQyIDRFIDAxIDAxIDBB
IDc4IDAwIDBBICAuLk0wMThfQkJOLi4ueC4uCiAgICAwODYwOiAyMCA2MCA3MCA0RCAzMCAzMSAz
NyA1RiA0MiA0MiA0RSAwMSAwMSAwQSA3OCAwMCAgIGBwTTAxN19CQk4uLi54LgogICAgMDg3MDog
MEEgMjAgNjAgQTAgMkQgOTIgOTMgN0IgNjAgMEMgMDAgMDAgMDMgMDAgMDAgMDAgIC4gYC4tLi57
YC4uLi4uLi4KICAgIDA4ODA6IDREIDMwIDMxIDM4IDVGIDQyIDQyIDRFIDAxIDAxIDBBIDc4IDAw
IDBBIDIwIDYwICBNMDE4X0JCTi4uLnguLiBgCiAgICAwODkwOiA3MCA0RCAzMCAzMSAzNyA1RiA0
MiA0MiA0RSAwMSAwMSAwQSA3OCAwMCAwQSAyMCAgcE0wMTdfQkJOLi4ueC4uIAogICAgMDhBMDog
NjAgQTAgNEIgMTIgOTIgOTMgNUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAgNDMgNDkgIGAuSy4uLlwv
Ll9TQl9QQ0kKICAgIDA4QjA6IDMxIDQ1IDU0IDUwIDMxIDBBIEZGIDcwIDdBIDREIDMwIDMxIDM3
IDVGIDQyIDQyICAxRVRQMS4ucHpNMDE3X0JCCiAgICAwOEMwOiA0RSAwMSAwQSAwMiAwQSA3OCAw
MCAwQSAxOCAwQSAxMCAwMCA1QyAyRiAwMyA1RiAgTi4uLi54Li4uLi4uXC8uXwogICAgMDhEMDog
NTMgNDIgNUYgNTAgNDMgNDkgMzEgNDUgNTQgNTAgMzEgQTAgNDEgMEYgOTEgOTMgIFNCX1BDSTFF
VFAxLkEuLi4KICAgIDA4RTA6IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMxIDQ1IDU0
IDUwIDMxIDAxICBcLy5fU0JfUENJMUVUUDEuCiAgICAwOEYwOiA5MyA1QyAyRiAwMyA1RiA1MyA0
MiA1RiA1MCA0MyA0OSAzMSA0NSA1NCA1MCAzMSAgLlwvLl9TQl9QQ0kxRVRQMQogICAgMDkwMDog
MEEgMDMgQTAgNEEgMEMgNUIgMTIgNUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAgNDMgIC4uLkouWy5c
Ly5fU0JfUEMKICAgIDA5MTA6IDQ5IDMxIDQ3IDUwIDUwIDMxIDAwIDREIDM0IDM2IDMwIDBEIDIw
IDIwIDIwIDIwICBJMUdQUDEuTTQ2MC4gICAgCiAgICAwOTIwOiA0RSA2RiA3NCA2OSA2NiA3OSAy
MCAyOCA1QyA1RiA1MyA0MiAyRSA1MCA0MyA0OSAgTm90aWZ5IChcX1NCLlBDSQogICAgMDkzMDog
MzEgMkUgNDcgNTAgNTAgMzEgMkMgMjAgMzAgNzggMzIgMjkgMEEgMDAgMDAgMDAgIDEuR1BQMSwg
MHgyKS4uLi4KICAgIDA5NDA6IDAwIDAwIDAwIDAwIDg2IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUw
IDQzIDQ5IDMxICAuLi4uLlwvLl9TQl9QQ0kxCiAgICAwOTUwOiA0NyA1MCA1MCAzMSAwQSAwMiA1
QiAyMiAwQSA2NCA3MCA0RCAzMCAzMSAzNyA1RiAgR1BQMS4uWyIuZHBNMDE3XwogICAgMDk2MDog
NDIgNDIgNEUgMDEgMEEgMDIgMEEgNzggMDAgMEEgMjAgNjAgQTAgNDAgMDYgOTIgIEJCTi4uLi54
Li4gYC5ALi4KICAgIDA5NzA6IDkzIDdCIDYwIDBDIDAwIDAwIDAzIDAwIDAwIDAwIDREIDMwIDMx
IDM4IDVGIDQyICAue2AuLi4uLi4uTTAxOF9CCiAgICAwOTgwOiA0MiA0RSAwMSAwQSAwMiAwQSA3
OCAwMCAwQSAyMCA2MCA3MCA0RCAzMCAzMSAzNyAgQk4uLi4ueC4uIGBwTTAxNwogICAgMDk5MDog
NUYgNDIgNDIgNEUgMDEgMEEgMDIgMEEgNzggMDAgMEEgMjAgNjAgQTAgMkYgOTIgIF9CQk4uLi4u
eC4uIGAuLy4KICAgIDA5QTA6IDkzIDdCIDYwIDBDIDAwIDAwIDAzIDAwIDAwIDAwIDREIDMwIDMx
IDM4IDVGIDQyICAue2AuLi4uLi4uTTAxOF9CCiAgICAwOUIwOiA0MiA0RSAwMSAwQSAwMiAwQSA3
OCAwMCAwQSAyMCA2MCA3MCA0RCAzMCAzMSAzNyAgQk4uLi4ueC4uIGBwTTAxNwogICAgMDlDMDog
NUYgNDIgNDIgNEUgMDEgMEEgMDIgMEEgNzggMDAgMEEgMjAgNjAgQTAgNEIgMTIgIF9CQk4uLi4u
eC4uIGAuSy4KICAgIDA5RDA6IDkyIDkzIDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMx
IDQ1IDU0IDUwICAuLlwvLl9TQl9QQ0kxRVRQCiAgICAwOUUwOiAzMiAwQSBGRiA3MCA3QSA0RCAz
MCAzMSAzNyA1RiA0MiA0MiA0RSAwMSAwQSAwMyAgMi4ucHpNMDE3X0JCTi4uLgogICAgMDlGMDog
MEEgNzggMDAgMEEgMTggMEEgMTAgMDAgNUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAgIC54Li4uLi4u
XC8uX1NCX1AKICAgIDBBMDA6IDQzIDQ5IDMxIDQ1IDU0IDUwIDMyIEEwIDQxIDBGIDkxIDkzIDVD
IDJGIDAzIDVGICBDSTFFVFAyLkEuLi5cLy5fCiAgICAwQTEwOiA1MyA0MiA1RiA1MCA0MyA0OSAz
MSA0NSA1NCA1MCAzMiAwMSA5MyA1QyAyRiAwMyAgU0JfUENJMUVUUDIuLlwvLgogICAgMEEyMDog
NUYgNTMgNDIgNUYgNTAgNDMgNDkgMzEgNDUgNTQgNTAgMzIgMEEgMDMgQTAgNEEgIF9TQl9QQ0kx
RVRQMi4uLkoKICAgIDBBMzA6IDBDIDVCIDEyIDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5
IDMxIDQ3IDUwICAuWy5cLy5fU0JfUENJMUdQCiAgICAwQTQwOiA1MCAzMiAwMCA0RCAzNCAzNiAz
MCAwRCAyMCAyMCAyMCAyMCA0RSA2RiA3NCA2OSAgUDIuTTQ2MC4gICAgTm90aQogICAgMEE1MDog
NjYgNzkgMjAgMjggNUMgNUYgNTMgNDIgMkUgNTAgNDMgNDkgMzEgMkUgNDcgNTAgIGZ5IChcX1NC
LlBDSTEuR1AKICAgIDBBNjA6IDUwIDMyIDJDIDIwIDMwIDc4IDMyIDI5IDBBIDAwIDAwIDAwIDAw
IDAwIDAwIDAwICBQMiwgMHgyKS4uLi4uLi4uCiAgICAwQTcwOiA4NiA1QyAyRiAwMyA1RiA1MyA0
MiA1RiA1MCA0MyA0OSAzMSA0NyA1MCA1MCAzMiAgLlwvLl9TQl9QQ0kxR1BQMgogICAgMEE4MDog
MEEgMDIgNUIgMjIgMEEgNjQgNzAgNEQgMzAgMzEgMzcgNUYgNDIgNDIgNEUgMDEgIC4uWyIuZHBN
MDE3X0JCTi4KICAgIDBBOTA6IDBBIDAzIDBBIDc4IDAwIDBBIDIwIDYwIEEwIDQwIDA2IDkyIDkz
IDdCIDYwIDBDICAuLi54Li4gYC5ALi4ue2AuCiAgICAwQUEwOiAwMCAwMCAwMyAwMCAwMCAwMCA0
RCAzMCAzMSAzOCA1RiA0MiA0MiA0RSAwMSAwQSAgLi4uLi4uTTAxOF9CQk4uLgogICAgMEFCMDog
MDMgMEEgNzggMDAgMEEgMjAgNjAgNzAgNEQgMzAgMzEgMzcgNUYgNDIgNDIgNEUgIC4ueC4uIGBw
TTAxN19CQk4KICAgIDBBQzA6IDAxIDBBIDAzIDBBIDc4IDAwIDBBIDIwIDYwIEEwIDJGIDkyIDkz
IDdCIDYwIDBDICAuLi4ueC4uIGAuLy4ue2AuCiAgICAwQUQwOiAwMCAwMCAwMyAwMCAwMCAwMCA0
RCAzMCAzMSAzOCA1RiA0MiA0MiA0RSAwMSAwQSAgLi4uLi4uTTAxOF9CQk4uLgogICAgMEFFMDog
MDMgMEEgNzggMDAgMEEgMjAgNjAgNzAgNEQgMzAgMzEgMzcgNUYgNDIgNDIgNEUgIC4ueC4uIGBw
TTAxN19CQk4KICAgIDBBRjA6IDAxIDBBIDAzIDBBIDc4IDAwIDBBIDIwIDYwIEEwIDRCIDEyIDky
IDkzIDVDIDJGICAuLi4ueC4uIGAuSy4uLlwvCiAgICAwQjAwOiAwMyA1RiA1MyA0MiA1RiA1MCA0
MyA0OSAzMSA0NSA1NCA1MCAzMyAwQSBGRiA3MCAgLl9TQl9QQ0kxRVRQMy4ucAogICAgMEIxMDog
N0EgNEQgMzAgMzEgMzcgNUYgNDIgNDIgNEUgMDEgMEEgMDQgMEEgNzggMDAgMEEgIHpNMDE3X0JC
Ti4uLi54Li4KICAgIDBCMjA6IDE4IDBBIDEwIDAwIDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQz
IDQ5IDMxIDQ1ICAuLi4uXC8uX1NCX1BDSTFFCiAgICAwQjMwOiA1NCA1MCAzMyBBMCA0MSAwRiA5
MSA5MyA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCAgVFAzLkEuLi5cLy5fU0JfUAogICAgMEI0MDog
NDMgNDkgMzEgNDUgNTQgNTAgMzMgMDEgOTMgNUMgMkYgMDMgNUYgNTMgNDIgNUYgIENJMUVUUDMu
LlwvLl9TQl8KICAgIDBCNTA6IDUwIDQzIDQ5IDMxIDQ1IDU0IDUwIDMzIDBBIDAzIEEwIDRBIDBD
IDVCIDEyIDVDICBQQ0kxRVRQMy4uLkouWy5cCiAgICAwQjYwOiAyRiAwMyA1RiA1MyA0MiA1RiA1
MCA0MyA0OSAzMSA0NyA1MCA1MCAzMyAwMCA0RCAgLy5fU0JfUENJMUdQUDMuTQogICAgMEI3MDog
MzQgMzYgMzAgMEQgMjAgMjAgMjAgMjAgNEUgNkYgNzQgNjkgNjYgNzkgMjAgMjggIDQ2MC4gICAg
Tm90aWZ5ICgKICAgIDBCODA6IDVDIDVGIDUzIDQyIDJFIDUwIDQzIDQ5IDMxIDJFIDQ3IDUwIDUw
IDMzIDJDIDIwICBcX1NCLlBDSTEuR1BQMywgCiAgICAwQjkwOiAzMCA3OCAzMiAyOSAwQSAwMCAw
MCAwMCAwMCAwMCAwMCAwMCA4NiA1QyAyRiAwMyAgMHgyKS4uLi4uLi4uLlwvLgogICAgMEJBMDog
NUYgNTMgNDIgNUYgNTAgNDMgNDkgMzEgNDcgNTAgNTAgMzMgMEEgMDIgNUIgMjIgIF9TQl9QQ0kx
R1BQMy4uWyIKICAgIDBCQjA6IDBBIDY0IDcwIDREIDMwIDMxIDM3IDVGIDQyIDQyIDRFIDAxIDBB
IDA0IDBBIDc4ICAuZHBNMDE3X0JCTi4uLi54CiAgICAwQkMwOiAwMCAwQSAyMCA2MCBBMCA0MCAw
NiA5MiA5MyA3QiA2MCAwQyAwMCAwMCAwMyAwMCAgLi4gYC5ALi4ue2AuLi4uLgogICAgMEJEMDog
MDAgMDAgNEQgMzAgMzEgMzggNUYgNDIgNDIgNEUgMDEgMEEgMDQgMEEgNzggMDAgIC4uTTAxOF9C
Qk4uLi4ueC4KICAgIDBCRTA6IDBBIDIwIDYwIDcwIDREIDMwIDMxIDM3IDVGIDQyIDQyIDRFIDAx
IDBBIDA0IDBBICAuIGBwTTAxN19CQk4uLi4uCiAgICAwQkYwOiA3OCAwMCAwQSAyMCA2MCBBMCAy
RiA5MiA5MyA3QiA2MCAwQyAwMCAwMCAwMyAwMCAgeC4uIGAuLy4ue2AuLi4uLgogICAgMEMwMDog
MDAgMDAgNEQgMzAgMzEgMzggNUYgNDIgNDIgNEUgMDEgMEEgMDQgMEEgNzggMDAgIC4uTTAxOF9C
Qk4uLi4ueC4KICAgIDBDMTA6IDBBIDIwIDYwIDcwIDREIDMwIDMxIDM3IDVGIDQyIDQyIDRFIDAx
IDBBIDA0IDBBICAuIGBwTTAxN19CQk4uLi4uCiAgICAwQzIwOiA3OCAwMCAwQSAyMCA2MCBBMCA0
QiAxMiA5MiA5MyA1QyAyRiAwMyA1RiA1MyA0MiAgeC4uIGAuSy4uLlwvLl9TQgogICAgMEMzMDog
NUYgNTAgNDMgNDkgMzEgNDUgNTQgNTAgMzQgMEEgRkYgNzAgN0EgNEQgMzAgMzEgIF9QQ0kxRVRQ
NC4ucHpNMDEKICAgIDBDNDA6IDM3IDVGIDQyIDQyIDRFIDAxIDBBIDA1IDBBIDc4IDAwIDBBIDE4
IDBBIDEwIDAwICA3X0JCTi4uLi54Li4uLi4uCiAgICAwQzUwOiA1QyAyRiAwMyA1RiA1MyA0MiA1
RiA1MCA0MyA0OSAzMSA0NSA1NCA1MCAzNCBBMCAgXC8uX1NCX1BDSTFFVFA0LgogICAgMEM2MDog
NDEgMEYgOTEgOTMgNUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAgNDMgNDkgMzEgNDUgIEEuLi5cLy5f
U0JfUENJMUUKICAgIDBDNzA6IDU0IDUwIDM0IDAxIDkzIDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUw
IDQzIDQ5IDMxICBUUDQuLlwvLl9TQl9QQ0kxCiAgICAwQzgwOiA0NSA1NCA1MCAzNCAwQSAwMyBB
MCA0QSAwQyA1QiAxMiA1QyAyRiAwMyA1RiA1MyAgRVRQNC4uLkouWy5cLy5fUwogICAgMEM5MDog
NDIgNUYgNTAgNDMgNDkgMzEgNDcgNTAgNTAgMzQgMDAgNEQgMzQgMzYgMzAgMEQgIEJfUENJMUdQ
UDQuTTQ2MC4KICAgIDBDQTA6IDIwIDIwIDIwIDIwIDRFIDZGIDc0IDY5IDY2IDc5IDIwIDI4IDVD
IDVGIDUzIDQyICAgICAgTm90aWZ5IChcX1NCCiAgICAwQ0IwOiAyRSA1MCA0MyA0OSAzMSAyRSA0
NyA1MCA1MCAzNCAyQyAyMCAzMCA3OCAzMiAyOSAgLlBDSTEuR1BQNCwgMHgyKQogICAgMENDMDog
MEEgMDAgMDAgMDAgMDAgMDAgMDAgMDAgODYgNUMgMkYgMDMgNUYgNTMgNDIgNUYgIC4uLi4uLi4u
LlwvLl9TQl8KICAgIDBDRDA6IDUwIDQzIDQ5IDMxIDQ3IDUwIDUwIDM0IDBBIDAyIDVCIDIyIDBB
IDY0IDcwIDREICBQQ0kxR1BQNC4uWyIuZHBNCiAgICAwQ0UwOiAzMCAzMSAzNyA1RiA0MiA0MiA0
RSAwMSAwQSAwNSAwQSA3OCAwMCAwQSAyMCA2MCAgMDE3X0JCTi4uLi54Li4gYAogICAgMENGMDog
QTAgNDAgMDYgOTIgOTMgN0IgNjAgMEMgMDAgMDAgMDMgMDAgMDAgMDAgNEQgMzAgIC5ALi4ue2Au
Li4uLi4uTTAKICAgIDBEMDA6IDMxIDM4IDVGIDQyIDQyIDRFIDAxIDBBIDA1IDBBIDc4IDAwIDBB
IDIwIDYwIDcwICAxOF9CQk4uLi4ueC4uIGBwCiAgICAwRDEwOiA0RCAzMCAzMSAzNyA1RiA0MiA0
MiA0RSAwMSAwQSAwNSAwQSA3OCAwMCAwQSAyMCAgTTAxN19CQk4uLi4ueC4uIAogICAgMEQyMDog
NjAgQTAgMkYgOTIgOTMgN0IgNjAgMEMgMDAgMDAgMDMgMDAgMDAgMDAgNEQgMzAgIGAuLy4ue2Au
Li4uLi4uTTAKICAgIDBEMzA6IDMxIDM4IDVGIDQyIDQyIDRFIDAxIDBBIDA1IDBBIDc4IDAwIDBB
IDIwIDYwIDcwICAxOF9CQk4uLi4ueC4uIGBwCiAgICAwRDQwOiA0RCAzMCAzMSAzNyA1RiA0MiA0
MiA0RSAwMSAwQSAwNSAwQSA3OCAwMCAwQSAyMCAgTTAxN19CQk4uLi4ueC4uIAogICAgMEQ1MDog
NjAgQTAgNEIgMTIgOTIgOTMgNUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAgNDMgNDkgIGAuSy4uLlwv
Ll9TQl9QQ0kKICAgIDBENjA6IDMxIDQ1IDU0IDUwIDM1IDBBIEZGIDcwIDdBIDREIDMwIDMxIDM3
IDVGIDQyIDQyICAxRVRQNS4ucHpNMDE3X0JCCiAgICAwRDcwOiA0RSAwMSAwQSAwNiAwQSA3OCAw
MCAwQSAxOCAwQSAxMCAwMCA1QyAyRiAwMyA1RiAgTi4uLi54Li4uLi4uXC8uXwogICAgMEQ4MDog
NTMgNDIgNUYgNTAgNDMgNDkgMzEgNDUgNTQgNTAgMzUgQTAgNDEgMEYgOTEgOTMgIFNCX1BDSTFF
VFA1LkEuLi4KICAgIDBEOTA6IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMxIDQ1IDU0
IDUwIDM1IDAxICBcLy5fU0JfUENJMUVUUDUuCiAgICAwREEwOiA5MyA1QyAyRiAwMyA1RiA1MyA0
MiA1RiA1MCA0MyA0OSAzMSA0NSA1NCA1MCAzNSAgLlwvLl9TQl9QQ0kxRVRQNQogICAgMERCMDog
MEEgMDMgQTAgNEEgMEMgNUIgMTIgNUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAgNDMgIC4uLkouWy5c
Ly5fU0JfUEMKICAgIDBEQzA6IDQ5IDMxIDQ3IDUwIDUwIDM1IDAwIDREIDM0IDM2IDMwIDBEIDIw
IDIwIDIwIDIwICBJMUdQUDUuTTQ2MC4gICAgCiAgICAwREQwOiA0RSA2RiA3NCA2OSA2NiA3OSAy
MCAyOCA1QyA1RiA1MyA0MiAyRSA1MCA0MyA0OSAgTm90aWZ5IChcX1NCLlBDSQogICAgMERFMDog
MzEgMkUgNDcgNTAgNTAgMzUgMkMgMjAgMzAgNzggMzIgMjkgMEEgMDAgMDAgMDAgIDEuR1BQNSwg
MHgyKS4uLi4KICAgIDBERjA6IDAwIDAwIDAwIDAwIDg2IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUw
IDQzIDQ5IDMxICAuLi4uLlwvLl9TQl9QQ0kxCiAgICAwRTAwOiA0NyA1MCA1MCAzNSAwQSAwMiA1
QiAyMiAwQSA2NCA3MCA0RCAzMCAzMSAzNyA1RiAgR1BQNS4uWyIuZHBNMDE3XwogICAgMEUxMDog
NDIgNDIgNEUgMDEgMEEgMDYgMEEgNzggMDAgMEEgMjAgNjAgQTAgNDAgMDYgOTIgIEJCTi4uLi54
Li4gYC5ALi4KICAgIDBFMjA6IDkzIDdCIDYwIDBDIDAwIDAwIDAzIDAwIDAwIDAwIDREIDMwIDMx
IDM4IDVGIDQyICAue2AuLi4uLi4uTTAxOF9CCiAgICAwRTMwOiA0MiA0RSAwMSAwQSAwNiAwQSA3
OCAwMCAwQSAyMCA2MCA3MCA0RCAzMCAzMSAzNyAgQk4uLi4ueC4uIGBwTTAxNwogICAgMEU0MDog
NUYgNDIgNDIgNEUgMDEgMEEgMDYgMEEgNzggMDAgMEEgMjAgNjAgQTAgMkYgOTIgIF9CQk4uLi4u
eC4uIGAuLy4KICAgIDBFNTA6IDkzIDdCIDYwIDBDIDAwIDAwIDAzIDAwIDAwIDAwIDREIDMwIDMx
IDM4IDVGIDQyICAue2AuLi4uLi4uTTAxOF9CCiAgICAwRTYwOiA0MiA0RSAwMSAwQSAwNiAwQSA3
OCAwMCAwQSAyMCA2MCA3MCA0RCAzMCAzMSAzNyAgQk4uLi4ueC4uIGBwTTAxNwogICAgMEU3MDog
NUYgNDIgNDIgNEUgMDEgMEEgMDYgMEEgNzggMDAgMEEgMjAgNjAgQTAgNEIgMTIgIF9CQk4uLi4u
eC4uIGAuSy4KICAgIDBFODA6IDkyIDkzIDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMx
IDQ1IDU0IDUwICAuLlwvLl9TQl9QQ0kxRVRQCiAgICAwRTkwOiAzNiAwQSBGRiA3MCA3QSA0RCAz
MCAzMSAzNyA1RiA0MiA0MiA0RSAwMSAwQSAwNyAgNi4ucHpNMDE3X0JCTi4uLgogICAgMEVBMDog
MEEgNzggMDAgMEEgMTggMEEgMTAgMDAgNUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAgIC54Li4uLi4u
XC8uX1NCX1AKICAgIDBFQjA6IDQzIDQ5IDMxIDQ1IDU0IDUwIDM2IEEwIDQxIDBGIDkxIDkzIDVD
IDJGIDAzIDVGICBDSTFFVFA2LkEuLi5cLy5fCiAgICAwRUMwOiA1MyA0MiA1RiA1MCA0MyA0OSAz
MSA0NSA1NCA1MCAzNiAwMSA5MyA1QyAyRiAwMyAgU0JfUENJMUVUUDYuLlwvLgogICAgMEVEMDog
NUYgNTMgNDIgNUYgNTAgNDMgNDkgMzEgNDUgNTQgNTAgMzYgMEEgMDMgQTAgNEEgIF9TQl9QQ0kx
RVRQNi4uLkoKICAgIDBFRTA6IDBDIDVCIDEyIDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5
IDMxIDQ3IDUwICAuWy5cLy5fU0JfUENJMUdQCiAgICAwRUYwOiA1MCAzNiAwMCA0RCAzNCAzNiAz
MCAwRCAyMCAyMCAyMCAyMCA0RSA2RiA3NCA2OSAgUDYuTTQ2MC4gICAgTm90aQogICAgMEYwMDog
NjYgNzkgMjAgMjggNUMgNUYgNTMgNDIgMkUgNTAgNDMgNDkgMzEgMkUgNDcgNTAgIGZ5IChcX1NC
LlBDSTEuR1AKICAgIDBGMTA6IDUwIDM2IDJDIDIwIDMwIDc4IDMyIDI5IDBBIDAwIDAwIDAwIDAw
IDAwIDAwIDAwICBQNiwgMHgyKS4uLi4uLi4uCiAgICAwRjIwOiA4NiA1QyAyRiAwMyA1RiA1MyA0
MiA1RiA1MCA0MyA0OSAzMSA0NyA1MCA1MCAzNiAgLlwvLl9TQl9QQ0kxR1BQNgogICAgMEYzMDog
MEEgMDIgNUIgMjIgMEEgNjQgNzAgNEQgMzAgMzEgMzcgNUYgNDIgNDIgNEUgMDEgIC4uWyIuZHBN
MDE3X0JCTi4KICAgIDBGNDA6IDBBIDA3IDBBIDc4IDAwIDBBIDIwIDYwIEEwIDQwIDA2IDkyIDkz
IDdCIDYwIDBDICAuLi54Li4gYC5ALi4ue2AuCiAgICAwRjUwOiAwMCAwMCAwMyAwMCAwMCAwMCA0
RCAzMCAzMSAzOCA1RiA0MiA0MiA0RSAwMSAwQSAgLi4uLi4uTTAxOF9CQk4uLgogICAgMEY2MDog
MDcgMEEgNzggMDAgMEEgMjAgNjAgNzAgNEQgMzAgMzEgMzcgNUYgNDIgNDIgNEUgIC4ueC4uIGBw
TTAxN19CQk4KICAgIDBGNzA6IDAxIDBBIDA3IDBBIDc4IDAwIDBBIDIwIDYwIEEwIDJGIDkyIDkz
IDdCIDYwIDBDICAuLi4ueC4uIGAuLy4ue2AuCiAgICAwRjgwOiAwMCAwMCAwMyAwMCAwMCAwMCA0
RCAzMCAzMSAzOCA1RiA0MiA0MiA0RSAwMSAwQSAgLi4uLi4uTTAxOF9CQk4uLgogICAgMEY5MDog
MDcgMEEgNzggMDAgMEEgMjAgNjAgNzAgNEQgMzAgMzEgMzcgNUYgNDIgNDIgNEUgIC4ueC4uIGBw
TTAxN19CQk4KICAgIDBGQTA6IDAxIDBBIDA3IDBBIDc4IDAwIDBBIDIwIDYwIEEwIDQ2IDE5IDky
IDkzIDVDIDJGICAuLi4ueC4uIGAuRi4uLlwvCiAgICAwRkIwOiAwMyA1RiA1MyA0MiA1RiA1MCA0
MyA0OSAzMSA0NSA1NCA1MCAzNyAwQSBGRiA3MCAgLl9TQl9QQ0kxRVRQNy4ucAogICAgMEZDMDog
N0EgNEQgMzAgMzEgMzcgNUYgNDIgNDIgNEUgMEEgMDIgMDEgMEEgNzggMDAgMEEgIHpNMDE3X0JC
Ti4uLi54Li4KICAgIDBGRDA6IDE4IDBBIDEwIDAwIDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQz
IDQ5IDMxIDQ1ICAuLi4uXC8uX1NCX1BDSTFFCiAgICAwRkUwOiA1NCA1MCAzNyBBMCA0QyAxNSA5
MSA5MyA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCAgVFA3LkwuLi5cLy5fU0JfUAogICAgMEZGMDog
NDMgNDkgMzEgNDUgNTQgNTAgMzcgMDEgOTMgNUMgMkYgMDMgNUYgNTMgNDIgNUYgIENJMUVUUDcu
LlwvLl9TQl8KICAgIDEwMDA6IDUwIDQzIDQ5IDMxIDQ1IDU0IDUwIDM3IDBBIDAzIEEwIDQ1IDEz
IDVCIDEyIDVDICBQQ0kxRVRQNy4uLkUuWy5cCiAgICAxMDEwOiAyRiAwMyA1RiA1MyA0MiA1RiA1
MCA0MyA0OSAzMSA0NyA1MCA1MCAzNyAwMCBBMCAgLy5fU0JfUENJMUdQUDcuLgogICAgMTAyMDog
NEEgMDYgOTIgOTMgNEQgMzYgMzIgMzAgMDAgQTAgNDAgMDYgOTMgNEQgMzAgMzQgIEouLi5NNjIw
Li5ALi5NMDQKICAgIDEwMzA6IDM5IDREIDM2IDMyIDMwIDBBIDEwIDBBIDAyIEEwIDQwIDA1IDkz
IDdCIDREIDMwICA5TTYyMC4uLi4uQC4ue00wCiAgICAxMDQwOiAzNCAzOSA0RCAzNiAzMiAzMCAw
QSA1MiAwQSAwMiAwMCAwMCA0RCAzNCAzNiAzMCAgNDlNNjIwLlIuLi4uTTQ2MAogICAgMTA1MDog
MEQgMjAgMjAgMjAgMjAgNEUgNkYgNzQgNjkgNjYgNzkgMjAgMjggNUMgNUYgNTMgIC4gICAgTm90
aWZ5IChcX1MKICAgIDEwNjA6IDQyIDJFIDUwIDQzIDQ5IDMxIDJFIDQ3IDUwIDUwIDM3IDJDIDIw
IDMwIDc4IDMwICBCLlBDSTEuR1BQNywgMHgwCiAgICAxMDcwOiAyOSAwQSAwMCAwMCAwMCAwMCAw
MCAwMCAwMCA4NiA1QyAyRiAwMyA1RiA1MyA0MiAgKS4uLi4uLi4uLlwvLl9TQgogICAgMTA4MDog
NUYgNTAgNDMgNDkgMzEgNDcgNTAgNTAgMzcgMDAgNEQgMzQgMzYgMzAgMEQgMjAgIF9QQ0kxR1BQ
Ny5NNDYwLiAKICAgIDEwOTA6IDIwIDIwIDIwIDRFIDZGIDc0IDY5IDY2IDc5IDIwIDI4IDVDIDVG
IDUzIDQyIDJFICAgICBOb3RpZnkgKFxfU0IuCiAgICAxMEEwOiA1MCA0MyA0OSAzMSAyRSA0NyA1
MCA1MCAzNyAyQyAyMCAzMCA3OCAzMiAyOSAwQSAgUENJMS5HUFA3LCAweDIpLgogICAgMTBCMDog
MDAgMDAgMDAgMDAgMDAgMDAgMDAgODYgNUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAgIC4uLi4uLi4u
XC8uX1NCX1AKICAgIDEwQzA6IDQzIDQ5IDMxIDQ3IDUwIDUwIDM3IDBBIDAyIDVCIDIyIDBBIDY0
IDcwIDREIDMwICBDSTFHUFA3Li5bIi5kcE0wCiAgICAxMEQwOiAzMSAzNyA1RiA0MiA0MiA0RSAw
QSAwMiAwMSAwQSA3OCAwMCAwQSAyMCA2MCBBMCAgMTdfQkJOLi4uLnguLiBgLgogICAgMTBFMDog
NDAgMDYgOTIgOTMgN0IgNjAgMEMgMDAgMDAgMDMgMDAgMDAgMDAgNEQgMzAgMzEgIEAuLi57YC4u
Li4uLi5NMDEKICAgIDEwRjA6IDM4IDVGIDQyIDQyIDRFIDBBIDAyIDAxIDBBIDc4IDAwIDBBIDIw
IDYwIDcwIDREICA4X0JCTi4uLi54Li4gYHBNCiAgICAxMTAwOiAzMCAzMSAzNyA1RiA0MiA0MiA0
RSAwQSAwMiAwMSAwQSA3OCAwMCAwQSAyMCA2MCAgMDE3X0JCTi4uLi54Li4gYAogICAgMTExMDog
QTAgMkYgOTIgOTMgN0IgNjAgMEMgMDAgMDAgMDMgMDAgMDAgMDAgNEQgMzAgMzEgIC4vLi57YC4u
Li4uLi5NMDEKICAgIDExMjA6IDM4IDVGIDQyIDQyIDRFIDBBIDAyIDAxIDBBIDc4IDAwIDBBIDIw
IDYwIDcwIDREICA4X0JCTi4uLi54Li4gYHBNCiAgICAxMTMwOiAzMCAzMSAzNyA1RiA0MiA0MiA0
RSAwQSAwMiAwMSAwQSA3OCAwMCAwQSAyMCA2MCAgMDE3X0JCTi4uLi54Li4gYAogICAgMTE0MDog
QTAgNDEgMTMgOTIgOTMgNUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAgNDMgNDkgMzEgIC5BLi4uXC8u
X1NCX1BDSTEKICAgIDExNTA6IDQ1IDU0IDUwIDM4IDBBIEZGIDcwIDdBIDREIDMwIDMxIDM3IDVG
IDQyIDQyIDRFICBFVFA4Li5wek0wMTdfQkJOCiAgICAxMTYwOiAwQSAwMiAwQSAwMiAwQSA3OCAw
MCAwQSAxOCAwQSAxMCAwMCA1QyAyRiAwMyA1RiAgLi4uLi54Li4uLi4uXC8uXwogICAgMTE3MDog
NTMgNDIgNUYgNTAgNDMgNDkgMzEgNDUgNTQgNTAgMzggQTAgNDYgMEYgOTEgOTMgIFNCX1BDSTFF
VFA4LkYuLi4KICAgIDExODA6IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMxIDQ1IDU0
IDUwIDM4IDAxICBcLy5fU0JfUENJMUVUUDguCiAgICAxMTkwOiA5MyA1QyAyRiAwMyA1RiA1MyA0
MiA1RiA1MCA0MyA0OSAzMSA0NSA1NCA1MCAzOCAgLlwvLl9TQl9QQ0kxRVRQOAogICAgMTFBMDog
MEEgMDMgQTAgNEYgMEMgNUIgMTIgNUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAgNDMgIC4uLk8uWy5c
Ly5fU0JfUEMKICAgIDExQjA6IDQ5IDMxIDQ3IDUwIDUwIDM4IDAwIDREIDM0IDM2IDMwIDBEIDIw
IDIwIDIwIDIwICBJMUdQUDguTTQ2MC4gICAgCiAgICAxMUMwOiA0RSA2RiA3NCA2OSA2NiA3OSAy
MCAyOCA1QyA1RiA1MyA0MiAyRSA1MCA0MyA0OSAgTm90aWZ5IChcX1NCLlBDSQogICAgMTFEMDog
MzEgMkUgNDcgNTAgNTAgMzggMkMgMjAgMzAgNzggMzIgMjkgMEEgMDAgMDAgMDAgIDEuR1BQOCwg
MHgyKS4uLi4KICAgIDExRTA6IDAwIDAwIDAwIDAwIDg2IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUw
IDQzIDQ5IDMxICAuLi4uLlwvLl9TQl9QQ0kxCiAgICAxMUYwOiA0NyA1MCA1MCAzOCAwQSAwMiA1
QiAyMiAwQSA2NCA3MCA0RCAzMCAzMSAzNyA1RiAgR1BQOC4uWyIuZHBNMDE3XwogICAgMTIwMDog
NDIgNDIgNEUgMEEgMDIgMEEgMDIgMEEgNzggMDAgMEEgMjAgNjAgQTAgNDQgMDYgIEJCTi4uLi4u
eC4uIGAuRC4KICAgIDEyMTA6IDkyIDkzIDdCIDYwIDBDIDAwIDAwIDAzIDAwIDAwIDAwIDREIDMw
IDMxIDM4IDVGICAuLntgLi4uLi4uLk0wMThfCiAgICAxMjIwOiA0MiA0MiA0RSAwQSAwMiAwQSAw
MiAwQSA3OCAwMCAwQSAyMCA2MCA3MCA0RCAzMCAgQkJOLi4uLi54Li4gYHBNMAogICAgMTIzMDog
MzEgMzcgNUYgNDIgNDIgNEUgMEEgMDIgMEEgMDIgMEEgNzggMDAgMEEgMjAgNjAgIDE3X0JCTi4u
Li4ueC4uIGAKICAgIDEyNDA6IEEwIDMxIDkyIDkzIDdCIDYwIDBDIDAwIDAwIDAzIDAwIDAwIDAw
IDREIDMwIDMxICAuMS4ue2AuLi4uLi4uTTAxCiAgICAxMjUwOiAzOCA1RiA0MiA0MiA0RSAwQSAw
MiAwQSAwMiAwQSA3OCAwMCAwQSAyMCA2MCA3MCAgOF9CQk4uLi4uLnguLiBgcAogICAgMTI2MDog
NEQgMzAgMzEgMzcgNUYgNDIgNDIgNEUgMEEgMDIgMEEgMDIgMEEgNzggMDAgMEEgIE0wMTdfQkJO
Li4uLi54Li4KICAgIDEyNzA6IDIwIDYwIEEwIDRCIDEyIDkyIDkzIDVDIDJGIDAzIDVGIDUzIDQy
IDVGIDUwIDQzICAgYC5LLi4uXC8uX1NCX1BDCiAgICAxMjgwOiA0OSAzMSA0NSA1NCA1MCAzOSAw
QSBGRiA3MCA3QSA0RCAzMCAzMSAzNyA1RiA0MiAgSTFFVFA5Li5wek0wMTdfQgogICAgMTI5MDog
NDIgNEUgMEEgMDMgMDEgMEEgNzggMDAgMEEgMTggMEEgMTAgMDAgNUMgMkYgMDMgIEJOLi4uLngu
Li4uLi5cLy4KICAgIDEyQTA6IDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMxIDQ1IDU0IDUwIDM5IEEw
IDQxIDBGIDkxICBfU0JfUENJMUVUUDkuQS4uCiAgICAxMkIwOiA5MyA1QyAyRiAwMyA1RiA1MyA0
MiA1RiA1MCA0MyA0OSAzMSA0NSA1NCA1MCAzOSAgLlwvLl9TQl9QQ0kxRVRQOQogICAgMTJDMDog
MDEgOTMgNUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAgNDMgNDkgMzEgNDUgNTQgNTAgIC4uXC8uX1NC
X1BDSTFFVFAKICAgIDEyRDA6IDM5IDBBIDAzIEEwIDRBIDBDIDVCIDEyIDVDIDJGIDAzIDVGIDUz
IDQyIDVGIDUwICA5Li4uSi5bLlwvLl9TQl9QCiAgICAxMkUwOiA0MyA0OSAzMSA0NyA1MCA1MCAz
OSAwMCA0RCAzNCAzNiAzMCAwRCAyMCAyMCAyMCAgQ0kxR1BQOS5NNDYwLiAgIAogICAgMTJGMDog
MjAgNEUgNkYgNzQgNjkgNjYgNzkgMjAgMjggNUMgNUYgNTMgNDIgMkUgNTAgNDMgICBOb3RpZnkg
KFxfU0IuUEMKICAgIDEzMDA6IDQ5IDMxIDJFIDQ3IDUwIDUwIDM5IDJDIDIwIDMwIDc4IDMyIDI5
IDBBIDAwIDAwICBJMS5HUFA5LCAweDIpLi4uCiAgICAxMzEwOiAwMCAwMCAwMCAwMCAwMCA4NiA1
QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAgLi4uLi4uXC8uX1NCX1BDSQogICAgMTMyMDog
MzEgNDcgNTAgNTAgMzkgMEEgMDIgNUIgMjIgMEEgNjQgNzAgNEQgMzAgMzEgMzcgIDFHUFA5Li5b
Ii5kcE0wMTcKICAgIDEzMzA6IDVGIDQyIDQyIDRFIDBBIDAzIDAxIDBBIDc4IDAwIDBBIDIwIDYw
IEEwIDQwIDA2ICBfQkJOLi4uLnguLiBgLkAuCiAgICAxMzQwOiA5MiA5MyA3QiA2MCAwQyAwMCAw
MCAwMyAwMCAwMCAwMCA0RCAzMCAzMSAzOCA1RiAgLi57YC4uLi4uLi5NMDE4XwogICAgMTM1MDog
NDIgNDIgNEUgMEEgMDMgMDEgMEEgNzggMDAgMEEgMjAgNjAgNzAgNEQgMzAgMzEgIEJCTi4uLi54
Li4gYHBNMDEKICAgIDEzNjA6IDM3IDVGIDQyIDQyIDRFIDBBIDAzIDAxIDBBIDc4IDAwIDBBIDIw
IDYwIEEwIDJGICA3X0JCTi4uLi54Li4gYC4vCiAgICAxMzcwOiA5MiA5MyA3QiA2MCAwQyAwMCAw
MCAwMyAwMCAwMCAwMCA0RCAzMCAzMSAzOCA1RiAgLi57YC4uLi4uLi5NMDE4XwogICAgMTM4MDog
NDIgNDIgNEUgMEEgMDMgMDEgMEEgNzggMDAgMEEgMjAgNjAgNzAgNEQgMzAgMzEgIEJCTi4uLi54
Li4gYHBNMDEKICAgIDEzOTA6IDM3IDVGIDQyIDQyIDRFIDBBIDAzIDAxIDBBIDc4IDAwIDBBIDIw
IDYwIEEwIDQxICA3X0JCTi4uLi54Li4gYC5BCiAgICAxM0EwOiAxMyA5MiA5MyA1QyAyRiAwMyA1
RiA1MyA0MiA1RiA1MCA0MyA0OSAzMSA0NSA1NCAgLi4uXC8uX1NCX1BDSTFFVAogICAgMTNCMDog
NTAgNDEgMEEgRkYgNzAgN0EgNEQgMzAgMzEgMzcgNUYgNDIgNDIgNEUgMEEgMDMgIFBBLi5wek0w
MTdfQkJOLi4KICAgIDEzQzA6IDBBIDAyIDBBIDc4IDAwIDBBIDE4IDBBIDEwIDAwIDVDIDJGIDAz
IDVGIDUzIDQyICAuLi54Li4uLi4uXC8uX1NCCiAgICAxM0QwOiA1RiA1MCA0MyA0OSAzMSA0NSA1
NCA1MCA0MSBBMCA0NiAwRiA5MSA5MyA1QyAyRiAgX1BDSTFFVFBBLkYuLi5cLwogICAgMTNFMDog
MDMgNUYgNTMgNDIgNUYgNTAgNDMgNDkgMzEgNDUgNTQgNTAgNDEgMDEgOTMgNUMgIC5fU0JfUENJ
MUVUUEEuLlwKICAgIDEzRjA6IDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMxIDQ1IDU0IDUw
IDQxIDBBIDAzICAvLl9TQl9QQ0kxRVRQQS4uCiAgICAxNDAwOiBBMCA0RiAwQyA1QiAxMiA1QyAy
RiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMSAgLk8uWy5cLy5fU0JfUENJMQogICAgMTQxMDog
NDcgNTAgNTAgNDEgMDAgNEQgMzQgMzYgMzAgMEQgMjAgMjAgMjAgMjAgNEUgNkYgIEdQUEEuTTQ2
MC4gICAgTm8KICAgIDE0MjA6IDc0IDY5IDY2IDc5IDIwIDI4IDVDIDVGIDUzIDQyIDJFIDUwIDQz
IDQ5IDMxIDJFICB0aWZ5IChcX1NCLlBDSTEuCiAgICAxNDMwOiA0NyA1MCA1MCA0MSAyQyAyMCAz
MCA3OCAzMiAyOSAwQSAwMCAwMCAwMCAwMCAwMCAgR1BQQSwgMHgyKS4uLi4uLgogICAgMTQ0MDog
MDAgMDAgODYgNUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAgNDMgNDkgMzEgNDcgNTAgIC4uLlwvLl9T
Ql9QQ0kxR1AKICAgIDE0NTA6IDUwIDQxIDBBIDAyIDVCIDIyIDBBIDY0IDcwIDREIDMwIDMxIDM3
IDVGIDQyIDQyICBQQS4uWyIuZHBNMDE3X0JCCiAgICAxNDYwOiA0RSAwQSAwMyAwQSAwMiAwQSA3
OCAwMCAwQSAyMCA2MCBBMCA0NCAwNiA5MiA5MyAgTi4uLi4ueC4uIGAuRC4uLgogICAgMTQ3MDog
N0IgNjAgMEMgMDAgMDAgMDMgMDAgMDAgMDAgNEQgMzAgMzEgMzggNUYgNDIgNDIgIHtgLi4uLi4u
Lk0wMThfQkIKICAgIDE0ODA6IDRFIDBBIDAzIDBBIDAyIDBBIDc4IDAwIDBBIDIwIDYwIDcwIDRE
IDMwIDMxIDM3ICBOLi4uLi54Li4gYHBNMDE3CiAgICAxNDkwOiA1RiA0MiA0MiA0RSAwQSAwMyAw
QSAwMiAwQSA3OCAwMCAwQSAyMCA2MCBBMCAzMSAgX0JCTi4uLi4ueC4uIGAuMQogICAgMTRBMDog
OTIgOTMgN0IgNjAgMEMgMDAgMDAgMDMgMDAgMDAgMDAgNEQgMzAgMzEgMzggNUYgIC4ue2AuLi4u
Li4uTTAxOF8KICAgIDE0QjA6IDQyIDQyIDRFIDBBIDAzIDBBIDAyIDBBIDc4IDAwIDBBIDIwIDYw
IDcwIDREIDMwICBCQk4uLi4uLnguLiBgcE0wCiAgICAxNEMwOiAzMSAzNyA1RiA0MiA0MiA0RSAw
QSAwMyAwQSAwMiAwQSA3OCAwMCAwQSAyMCA2MCAgMTdfQkJOLi4uLi54Li4gYAogICAgMTREMDog
QTAgNDEgMTMgOTIgOTMgNUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAgNDMgNDkgMzEgIC5BLi4uXC8u
X1NCX1BDSTEKICAgIDE0RTA6IDQ1IDU0IDUwIDQyIDBBIEZGIDcwIDdBIDREIDMwIDMxIDM3IDVG
IDQyIDQyIDRFICBFVFBCLi5wek0wMTdfQkJOCiAgICAxNEYwOiAwQSAwMyAwQSAwMyAwQSA3OCAw
MCAwQSAxOCAwQSAxMCAwMCA1QyAyRiAwMyA1RiAgLi4uLi54Li4uLi4uXC8uXwogICAgMTUwMDog
NTMgNDIgNUYgNTAgNDMgNDkgMzEgNDUgNTQgNTAgNDIgQTAgNDYgMEYgOTEgOTMgIFNCX1BDSTFF
VFBCLkYuLi4KICAgIDE1MTA6IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMxIDQ1IDU0
IDUwIDQyIDAxICBcLy5fU0JfUENJMUVUUEIuCiAgICAxNTIwOiA5MyA1QyAyRiAwMyA1RiA1MyA0
MiA1RiA1MCA0MyA0OSAzMSA0NSA1NCA1MCA0MiAgLlwvLl9TQl9QQ0kxRVRQQgogICAgMTUzMDog
MEEgMDMgQTAgNEYgMEMgNUIgMTIgNUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAgNDMgIC4uLk8uWy5c
Ly5fU0JfUEMKICAgIDE1NDA6IDQ5IDMxIDQ3IDUwIDUwIDQyIDAwIDREIDM0IDM2IDMwIDBEIDIw
IDIwIDIwIDIwICBJMUdQUEIuTTQ2MC4gICAgCiAgICAxNTUwOiA0RSA2RiA3NCA2OSA2NiA3OSAy
MCAyOCA1QyA1RiA1MyA0MiAyRSA1MCA0MyA0OSAgTm90aWZ5IChcX1NCLlBDSQogICAgMTU2MDog
MzEgMkUgNDcgNTAgNTAgNDIgMkMgMjAgMzAgNzggMzIgMjkgMEEgMDAgMDAgMDAgIDEuR1BQQiwg
MHgyKS4uLi4KICAgIDE1NzA6IDAwIDAwIDAwIDAwIDg2IDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUw
IDQzIDQ5IDMxICAuLi4uLlwvLl9TQl9QQ0kxCiAgICAxNTgwOiA0NyA1MCA1MCA0MiAwQSAwMiA1
QiAyMiAwQSA2NCA3MCA0RCAzMCAzMSAzNyA1RiAgR1BQQi4uWyIuZHBNMDE3XwogICAgMTU5MDog
NDIgNDIgNEUgMEEgMDMgMEEgMDMgMEEgNzggMDAgMEEgMjAgNjAgQTAgNDQgMDYgIEJCTi4uLi4u
eC4uIGAuRC4KICAgIDE1QTA6IDkyIDkzIDdCIDYwIDBDIDAwIDAwIDAzIDAwIDAwIDAwIDREIDMw
IDMxIDM4IDVGICAuLntgLi4uLi4uLk0wMThfCiAgICAxNUIwOiA0MiA0MiA0RSAwQSAwMyAwQSAw
MyAwQSA3OCAwMCAwQSAyMCA2MCA3MCA0RCAzMCAgQkJOLi4uLi54Li4gYHBNMAogICAgMTVDMDog
MzEgMzcgNUYgNDIgNDIgNEUgMEEgMDMgMEEgMDMgMEEgNzggMDAgMEEgMjAgNjAgIDE3X0JCTi4u
Li4ueC4uIGAKICAgIDE1RDA6IEEwIDMxIDkyIDkzIDdCIDYwIDBDIDAwIDAwIDAzIDAwIDAwIDAw
IDREIDMwIDMxICAuMS4ue2AuLi4uLi4uTTAxCiAgICAxNUUwOiAzOCA1RiA0MiA0MiA0RSAwQSAw
MyAwQSAwMyAwQSA3OCAwMCAwQSAyMCA2MCA3MCAgOF9CQk4uLi4uLnguLiBgcAogICAgMTVGMDog
NEQgMzAgMzEgMzcgNUYgNDIgNDIgNEUgMEEgMDMgMEEgMDMgMEEgNzggMDAgMEEgIE0wMTdfQkJO
Li4uLi54Li4KICAgIDE2MDA6IDIwIDYwIEEwIDQxIDEzIDkyIDkzIDVDIDJGIDAzIDVGIDUzIDQy
IDVGIDUwIDQzICAgYC5BLi4uXC8uX1NCX1BDCiAgICAxNjEwOiA0OSAzMSA0NSA1NCA1MCA0MyAw
QSBGRiA3MCA3QSA0RCAzMCAzMSAzNyA1RiA0MiAgSTFFVFBDLi5wek0wMTdfQgogICAgMTYyMDog
NDIgNEUgMEEgMDMgMEEgMDQgMEEgNzggMDAgMEEgMTggMEEgMTAgMDAgNUMgMkYgIEJOLi4uLi54
Li4uLi4uXC8KICAgIDE2MzA6IDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMxIDQ1IDU0IDUwIDQz
IEEwIDQ2IDBGICAuX1NCX1BDSTFFVFBDLkYuCiAgICAxNjQwOiA5MSA5MyA1QyAyRiAwMyA1RiA1
MyA0MiA1RiA1MCA0MyA0OSAzMSA0NSA1NCA1MCAgLi5cLy5fU0JfUENJMUVUUAogICAgMTY1MDog
NDMgMDEgOTMgNUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAgNDMgNDkgMzEgNDUgNTQgIEMuLlwvLl9T
Ql9QQ0kxRVQKICAgIDE2NjA6IDUwIDQzIDBBIDAzIEEwIDRGIDBDIDVCIDEyIDVDIDJGIDAzIDVG
IDUzIDQyIDVGICBQQy4uLk8uWy5cLy5fU0JfCiAgICAxNjcwOiA1MCA0MyA0OSAzMSA0NyA1MCA1
MCA0MyAwMCA0RCAzNCAzNiAzMCAwRCAyMCAyMCAgUENJMUdQUEMuTTQ2MC4gIAogICAgMTY4MDog
MjAgMjAgNEUgNkYgNzQgNjkgNjYgNzkgMjAgMjggNUMgNUYgNTMgNDIgMkUgNTAgICAgTm90aWZ5
IChcX1NCLlAKICAgIDE2OTA6IDQzIDQ5IDMxIDJFIDQ3IDUwIDUwIDQzIDJDIDIwIDMwIDc4IDMy
IDI5IDBBIDAwICBDSTEuR1BQQywgMHgyKS4uCiAgICAxNkEwOiAwMCAwMCAwMCAwMCAwMCAwMCA4
NiA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0MyAgLi4uLi4uLlwvLl9TQl9QQwogICAgMTZCMDog
NDkgMzEgNDcgNTAgNTAgNDMgMEEgMDIgNUIgMjIgMEEgNjQgNzAgNEQgMzAgMzEgIEkxR1BQQy4u
WyIuZHBNMDEKICAgIDE2QzA6IDM3IDVGIDQyIDQyIDRFIDBBIDAzIDBBIDA0IDBBIDc4IDAwIDBB
IDIwIDYwIEEwICA3X0JCTi4uLi4ueC4uIGAuCiAgICAxNkQwOiA0NCAwNiA5MiA5MyA3QiA2MCAw
QyAwMCAwMCAwMyAwMCAwMCAwMCA0RCAzMCAzMSAgRC4uLntgLi4uLi4uLk0wMQogICAgMTZFMDog
MzggNUYgNDIgNDIgNEUgMEEgMDMgMEEgMDQgMEEgNzggMDAgMEEgMjAgNjAgNzAgIDhfQkJOLi4u
Li54Li4gYHAKICAgIDE2RjA6IDREIDMwIDMxIDM3IDVGIDQyIDQyIDRFIDBBIDAzIDBBIDA0IDBB
IDc4IDAwIDBBICBNMDE3X0JCTi4uLi4ueC4uCiAgICAxNzAwOiAyMCA2MCBBMCAzMSA5MiA5MyA3
QiA2MCAwQyAwMCAwMCAwMyAwMCAwMCAwMCA0RCAgIGAuMS4ue2AuLi4uLi4uTQogICAgMTcxMDog
MzAgMzEgMzggNUYgNDIgNDIgNEUgMEEgMDMgMEEgMDQgMEEgNzggMDAgMEEgMjAgIDAxOF9CQk4u
Li4uLnguLiAKICAgIDE3MjA6IDYwIDcwIDREIDMwIDMxIDM3IDVGIDQyIDQyIDRFIDBBIDAzIDBB
IDA0IDBBIDc4ICBgcE0wMTdfQkJOLi4uLi54CiAgICAxNzMwOiAwMCAwQSAyMCA2MCBBMCA0MSAx
MyA5MiA5MyA1QyAyRiAwMyA1RiA1MyA0MiA1RiAgLi4gYC5BLi4uXC8uX1NCXwogICAgMTc0MDog
NTAgNDMgNDkgMzEgNDUgNTQgNTAgNDQgMEEgRkYgNzAgN0EgNEQgMzAgMzEgMzcgIFBDSTFFVFBE
Li5wek0wMTcKICAgIDE3NTA6IDVGIDQyIDQyIDRFIDBBIDAzIDBBIDA1IDBBIDc4IDAwIDBBIDE4
IDBBIDEwIDAwICBfQkJOLi4uLi54Li4uLi4uCiAgICAxNzYwOiA1QyAyRiAwMyA1RiA1MyA0MiA1
RiA1MCA0MyA0OSAzMSA0NSA1NCA1MCA0NCBBMCAgXC8uX1NCX1BDSTFFVFBELgogICAgMTc3MDog
NDYgMEYgOTEgOTMgNUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAgNDMgNDkgMzEgNDUgIEYuLi5cLy5f
U0JfUENJMUUKICAgIDE3ODA6IDU0IDUwIDQ0IDAxIDkzIDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUw
IDQzIDQ5IDMxICBUUEQuLlwvLl9TQl9QQ0kxCiAgICAxNzkwOiA0NSA1NCA1MCA0NCAwQSAwMyBB
MCA0RiAwQyA1QiAxMiA1QyAyRiAwMyA1RiA1MyAgRVRQRC4uLk8uWy5cLy5fUwogICAgMTdBMDog
NDIgNUYgNTAgNDMgNDkgMzEgNDcgNTAgNTAgNDQgMDAgNEQgMzQgMzYgMzAgMEQgIEJfUENJMUdQ
UEQuTTQ2MC4KICAgIDE3QjA6IDIwIDIwIDIwIDIwIDRFIDZGIDc0IDY5IDY2IDc5IDIwIDI4IDVD
IDVGIDUzIDQyICAgICAgTm90aWZ5IChcX1NCCiAgICAxN0MwOiAyRSA1MCA0MyA0OSAzMSAyRSA0
NyA1MCA1MCA0NCAyQyAyMCAzMCA3OCAzMiAyOSAgLlBDSTEuR1BQRCwgMHgyKQogICAgMTdEMDog
MEEgMDAgMDAgMDAgMDAgMDAgMDAgMDAgODYgNUMgMkYgMDMgNUYgNTMgNDIgNUYgIC4uLi4uLi4u
LlwvLl9TQl8KICAgIDE3RTA6IDUwIDQzIDQ5IDMxIDQ3IDUwIDUwIDQ0IDBBIDAyIDVCIDIyIDBB
IDY0IDcwIDREICBQQ0kxR1BQRC4uWyIuZHBNCiAgICAxN0YwOiAzMCAzMSAzNyA1RiA0MiA0MiA0
RSAwQSAwMyAwQSAwNSAwQSA3OCAwMCAwQSAyMCAgMDE3X0JCTi4uLi4ueC4uIAogICAgMTgwMDog
NjAgQTAgNDQgMDYgOTIgOTMgN0IgNjAgMEMgMDAgMDAgMDMgMDAgMDAgMDAgNEQgIGAuRC4uLntg
Li4uLi4uLk0KICAgIDE4MTA6IDMwIDMxIDM4IDVGIDQyIDQyIDRFIDBBIDAzIDBBIDA1IDBBIDc4
IDAwIDBBIDIwICAwMThfQkJOLi4uLi54Li4gCiAgICAxODIwOiA2MCA3MCA0RCAzMCAzMSAzNyA1
RiA0MiA0MiA0RSAwQSAwMyAwQSAwNSAwQSA3OCAgYHBNMDE3X0JCTi4uLi4ueAogICAgMTgzMDog
MDAgMEEgMjAgNjAgQTAgMzEgOTIgOTMgN0IgNjAgMEMgMDAgMDAgMDMgMDAgMDAgIC4uIGAuMS4u
e2AuLi4uLi4KICAgIDE4NDA6IDAwIDREIDMwIDMxIDM4IDVGIDQyIDQyIDRFIDBBIDAzIDBBIDA1
IDBBIDc4IDAwICAuTTAxOF9CQk4uLi4uLnguCiAgICAxODUwOiAwQSAyMCA2MCA3MCA0RCAzMCAz
MSAzNyA1RiA0MiA0MiA0RSAwQSAwMyAwQSAwNSAgLiBgcE0wMTdfQkJOLi4uLgogICAgMTg2MDog
MEEgNzggMDAgMEEgMjAgNjAgQTAgNDEgMTMgOTIgOTMgNUMgMkYgMDMgNUYgNTMgIC54Li4gYC5B
Li4uXC8uX1MKICAgIDE4NzA6IDQyIDVGIDUwIDQzIDQ5IDMxIDQ1IDU0IDUwIDQ1IDBBIEZGIDcw
IDdBIDREIDMwICBCX1BDSTFFVFBFLi5wek0wCiAgICAxODgwOiAzMSAzNyA1RiA0MiA0MiA0RSAw
QSAwMyAwQSAwNiAwQSA3OCAwMCAwQSAxOCAwQSAgMTdfQkJOLi4uLi54Li4uLgogICAgMTg5MDog
MTAgMDAgNUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAgNDMgNDkgMzEgNDUgNTQgNTAgIC4uXC8uX1NC
X1BDSTFFVFAKICAgIDE4QTA6IDQ1IEEwIDQ2IDBGIDkxIDkzIDVDIDJGIDAzIDVGIDUzIDQyIDVG
IDUwIDQzIDQ5ICBFLkYuLi5cLy5fU0JfUENJCiAgICAxOEIwOiAzMSA0NSA1NCA1MCA0NSAwMSA5
MyA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0MyAgMUVUUEUuLlwvLl9TQl9QQwogICAgMThDMDog
NDkgMzEgNDUgNTQgNTAgNDUgMEEgMDMgQTAgNEYgMEMgNUIgMTIgNUMgMkYgMDMgIEkxRVRQRS4u
Lk8uWy5cLy4KICAgIDE4RDA6IDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMxIDQ3IDUwIDUwIDQ1IDAw
IDREIDM0IDM2ICBfU0JfUENJMUdQUEUuTTQ2CiAgICAxOEUwOiAzMCAwRCAyMCAyMCAyMCAyMCA0
RSA2RiA3NCA2OSA2NiA3OSAyMCAyOCA1QyA1RiAgMC4gICAgTm90aWZ5IChcXwogICAgMThGMDog
NTMgNDIgMkUgNTAgNDMgNDkgMzEgMkUgNDcgNTAgNTAgNDUgMkMgMjAgMzAgNzggIFNCLlBDSTEu
R1BQRSwgMHgKICAgIDE5MDA6IDMyIDI5IDBBIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDg2IDVDIDJG
IDAzIDVGIDUzICAyKS4uLi4uLi4uLlwvLl9TCiAgICAxOTEwOiA0MiA1RiA1MCA0MyA0OSAzMSA0
NyA1MCA1MCA0NSAwQSAwMiA1QiAyMiAwQSA2NCAgQl9QQ0kxR1BQRS4uWyIuZAogICAgMTkyMDog
NzAgNEQgMzAgMzEgMzcgNUYgNDIgNDIgNEUgMEEgMDMgMEEgMDYgMEEgNzggMDAgIHBNMDE3X0JC
Ti4uLi4ueC4KICAgIDE5MzA6IDBBIDIwIDYwIEEwIDQ0IDA2IDkyIDkzIDdCIDYwIDBDIDAwIDAw
IDAzIDAwIDAwICAuIGAuRC4uLntgLi4uLi4uCiAgICAxOTQwOiAwMCA0RCAzMCAzMSAzOCA1RiA0
MiA0MiA0RSAwQSAwMyAwQSAwNiAwQSA3OCAwMCAgLk0wMThfQkJOLi4uLi54LgogICAgMTk1MDog
MEEgMjAgNjAgNzAgNEQgMzAgMzEgMzcgNUYgNDIgNDIgNEUgMEEgMDMgMEEgMDYgIC4gYHBNMDE3
X0JCTi4uLi4KICAgIDE5NjA6IDBBIDc4IDAwIDBBIDIwIDYwIEEwIDMxIDkyIDkzIDdCIDYwIDBD
IDAwIDAwIDAzICAueC4uIGAuMS4ue2AuLi4uCiAgICAxOTcwOiAwMCAwMCAwMCA0RCAzMCAzMSAz
OCA1RiA0MiA0MiA0RSAwQSAwMyAwQSAwNiAwQSAgLi4uTTAxOF9CQk4uLi4uLgogICAgMTk4MDog
NzggMDAgMEEgMjAgNjAgNzAgNEQgMzAgMzEgMzcgNUYgNDIgNDIgNEUgMEEgMDMgIHguLiBgcE0w
MTdfQkJOLi4KICAgIDE5OTA6IDBBIDA2IDBBIDc4IDAwIDBBIDIwIDYwIEEwIDQxIDEzIDkyIDkz
IDVDIDJGIDAzICAuLi54Li4gYC5BLi4uXC8uCiAgICAxOUEwOiA1RiA1MyA0MiA1RiA1MCA0MyA0
OSAzMSA0NSA1NCA1MCA0NiAwQSBGRiA3MCA3QSAgX1NCX1BDSTFFVFBGLi5wegogICAgMTlCMDog
NEQgMzAgMzEgMzcgNUYgNDIgNDIgNEUgMEEgMDMgMEEgMDcgMEEgNzggMDAgMEEgIE0wMTdfQkJO
Li4uLi54Li4KICAgIDE5QzA6IDE4IDBBIDEwIDAwIDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQz
IDQ5IDMxIDQ1ICAuLi4uXC8uX1NCX1BDSTFFCiAgICAxOUQwOiA1NCA1MCA0NiBBMCA0NiAwRiA5
MSA5MyA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCAgVFBGLkYuLi5cLy5fU0JfUAogICAgMTlFMDog
NDMgNDkgMzEgNDUgNTQgNTAgNDYgMDEgOTMgNUMgMkYgMDMgNUYgNTMgNDIgNUYgIENJMUVUUEYu
LlwvLl9TQl8KICAgIDE5RjA6IDUwIDQzIDQ5IDMxIDQ1IDU0IDUwIDQ2IDBBIDAzIEEwIDRGIDBD
IDVCIDEyIDVDICBQQ0kxRVRQRi4uLk8uWy5cCiAgICAxQTAwOiAyRiAwMyA1RiA1MyA0MiA1RiA1
MCA0MyA0OSAzMSA0NyA1MCA1MCA0NiAwMCA0RCAgLy5fU0JfUENJMUdQUEYuTQogICAgMUExMDog
MzQgMzYgMzAgMEQgMjAgMjAgMjAgMjAgNEUgNkYgNzQgNjkgNjYgNzkgMjAgMjggIDQ2MC4gICAg
Tm90aWZ5ICgKICAgIDFBMjA6IDVDIDVGIDUzIDQyIDJFIDUwIDQzIDQ5IDMxIDJFIDQ3IDUwIDUw
IDQ2IDJDIDIwICBcX1NCLlBDSTEuR1BQRiwgCiAgICAxQTMwOiAzMCA3OCAzMiAyOSAwQSAwMCAw
MCAwMCAwMCAwMCAwMCAwMCA4NiA1QyAyRiAwMyAgMHgyKS4uLi4uLi4uLlwvLgogICAgMUE0MDog
NUYgNTMgNDIgNUYgNTAgNDMgNDkgMzEgNDcgNTAgNTAgNDYgMEEgMDIgNUIgMjIgIF9TQl9QQ0kx
R1BQRi4uWyIKICAgIDFBNTA6IDBBIDY0IDcwIDREIDMwIDMxIDM3IDVGIDQyIDQyIDRFIDBBIDAz
IDBBIDA3IDBBICAuZHBNMDE3X0JCTi4uLi4uCiAgICAxQTYwOiA3OCAwMCAwQSAyMCA2MCBBMCA0
NCAwNiA5MiA5MyA3QiA2MCAwQyAwMCAwMCAwMyAgeC4uIGAuRC4uLntgLi4uLgogICAgMUE3MDog
MDAgMDAgMDAgNEQgMzAgMzEgMzggNUYgNDIgNDIgNEUgMEEgMDMgMEEgMDcgMEEgIC4uLk0wMThf
QkJOLi4uLi4KICAgIDFBODA6IDc4IDAwIDBBIDIwIDYwIDcwIDREIDMwIDMxIDM3IDVGIDQyIDQy
IDRFIDBBIDAzICB4Li4gYHBNMDE3X0JCTi4uCiAgICAxQTkwOiAwQSAwNyAwQSA3OCAwMCAwQSAy
MCA2MCBBMCAzMSA5MiA5MyA3QiA2MCAwQyAwMCAgLi4ueC4uIGAuMS4ue2AuLgogICAgMUFBMDog
MDAgMDMgMDAgMDAgMDAgNEQgMzAgMzEgMzggNUYgNDIgNDIgNEUgMEEgMDMgMEEgIC4uLi4uTTAx
OF9CQk4uLi4KICAgIDFBQjA6IDA3IDBBIDc4IDAwIDBBIDIwIDYwIDcwIDREIDMwIDMxIDM3IDVG
IDQyIDQyIDRFICAuLnguLiBgcE0wMTdfQkJOCiAgICAxQUMwOiAwQSAwMyAwQSAwNyAwQSA3OCAw
MCAwQSAyMCA2MCBBMCA0QiAxMiA5MiA5MyA1QyAgLi4uLi54Li4gYC5LLi4uXAogICAgMUFEMDog
MkYgMDMgNUYgNTMgNDIgNUYgNTAgNDMgNDkgMzEgNDUgNTQgNTAgNDcgMEEgRkYgIC8uX1NCX1BD
STFFVFBHLi4KICAgIDFBRTA6IDcwIDdBIDREIDMwIDMxIDM3IDVGIDQyIDQyIDRFIDBBIDA0IDAx
IDBBIDc4IDAwICBwek0wMTdfQkJOLi4uLnguCiAgICAxQUYwOiAwQSAxOCAwQSAxMCAwMCA1QyAy
RiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMSAgLi4uLi5cLy5fU0JfUENJMQogICAgMUIwMDog
NDUgNTQgNTAgNDcgQTAgNDEgMEYgOTEgOTMgNUMgMkYgMDMgNUYgNTMgNDIgNUYgIEVUUEcuQS4u
LlwvLl9TQl8KICAgIDFCMTA6IDUwIDQzIDQ5IDMxIDQ1IDU0IDUwIDQ3IDAxIDkzIDVDIDJGIDAz
IDVGIDUzIDQyICBQQ0kxRVRQRy4uXC8uX1NCCiAgICAxQjIwOiA1RiA1MCA0MyA0OSAzMSA0NSA1
NCA1MCA0NyAwQSAwMyBBMCA0QSAwQyA1QiAxMiAgX1BDSTFFVFBHLi4uSi5bLgogICAgMUIzMDog
NUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAgNDMgNDkgMzEgNDcgNTAgNTAgNDcgMDAgIFwvLl9TQl9Q
Q0kxR1BQRy4KICAgIDFCNDA6IDREIDM0IDM2IDMwIDBEIDIwIDIwIDIwIDIwIDRFIDZGIDc0IDY5
IDY2IDc5IDIwICBNNDYwLiAgICBOb3RpZnkgCiAgICAxQjUwOiAyOCA1QyA1RiA1MyA0MiAyRSA1
MCA0MyA0OSAzMSAyRSA0NyA1MCA1MCA0NyAyQyAgKFxfU0IuUENJMS5HUFBHLAogICAgMUI2MDog
MjAgMzAgNzggMzIgMjkgMEEgMDAgMDAgMDAgMDAgMDAgMDAgMDAgODYgNUMgMkYgICAweDIpLi4u
Li4uLi4uXC8KICAgIDFCNzA6IDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMxIDQ3IDUwIDUwIDQ3
IDBBIDAyIDVCICAuX1NCX1BDSTFHUFBHLi5bCiAgICAxQjgwOiAyMiAwQSA2NCA3MCA0RCAzMCAz
MSAzNyA1RiA0MiA0MiA0RSAwQSAwNCAwMSAwQSAgIi5kcE0wMTdfQkJOLi4uLgogICAgMUI5MDog
NzggMDAgMEEgMjAgNjAgQTAgNDAgMDYgOTIgOTMgN0IgNjAgMEMgMDAgMDAgMDMgIHguLiBgLkAu
Li57YC4uLi4KICAgIDFCQTA6IDAwIDAwIDAwIDREIDMwIDMxIDM4IDVGIDQyIDQyIDRFIDBBIDA0
IDAxIDBBIDc4ICAuLi5NMDE4X0JCTi4uLi54CiAgICAxQkIwOiAwMCAwQSAyMCA2MCA3MCA0RCAz
MCAzMSAzNyA1RiA0MiA0MiA0RSAwQSAwNCAwMSAgLi4gYHBNMDE3X0JCTi4uLgogICAgMUJDMDog
MEEgNzggMDAgMEEgMjAgNjAgQTAgMkYgOTIgOTMgN0IgNjAgMEMgMDAgMDAgMDMgIC54Li4gYC4v
Li57YC4uLi4KICAgIDFCRDA6IDAwIDAwIDAwIDREIDMwIDMxIDM4IDVGIDQyIDQyIDRFIDBBIDA0
IDAxIDBBIDc4ICAuLi5NMDE4X0JCTi4uLi54CiAgICAxQkUwOiAwMCAwQSAyMCA2MCA3MCA0RCAz
MCAzMSAzNyA1RiA0MiA0MiA0RSAwQSAwNCAwMSAgLi4gYHBNMDE3X0JCTi4uLgogICAgMUJGMDog
MEEgNzggMDAgMEEgMjAgNjAgQTAgNDEgMTMgOTIgOTMgNUMgMkYgMDMgNUYgNTMgIC54Li4gYC5B
Li4uXC8uX1MKICAgIDFDMDA6IDQyIDVGIDUwIDQzIDQ5IDMxIDQ1IDU0IDUwIDQ4IDBBIEZGIDcw
IDdBIDREIDMwICBCX1BDSTFFVFBILi5wek0wCiAgICAxQzEwOiAzMSAzNyA1RiA0MiA0MiA0RSAw
QSAwNCAwQSAwMiAwQSA3OCAwMCAwQSAxOCAwQSAgMTdfQkJOLi4uLi54Li4uLgogICAgMUMyMDog
MTAgMDAgNUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAgNDMgNDkgMzEgNDUgNTQgNTAgIC4uXC8uX1NC
X1BDSTFFVFAKICAgIDFDMzA6IDQ4IEEwIDQ2IDBGIDkxIDkzIDVDIDJGIDAzIDVGIDUzIDQyIDVG
IDUwIDQzIDQ5ICBILkYuLi5cLy5fU0JfUENJCiAgICAxQzQwOiAzMSA0NSA1NCA1MCA0OCAwMSA5
MyA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0MyAgMUVUUEguLlwvLl9TQl9QQwogICAgMUM1MDog
NDkgMzEgNDUgNTQgNTAgNDggMEEgMDMgQTAgNEYgMEMgNUIgMTIgNUMgMkYgMDMgIEkxRVRQSC4u
Lk8uWy5cLy4KICAgIDFDNjA6IDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMxIDQ3IDUwIDUwIDQ4IDAw
IDREIDM0IDM2ICBfU0JfUENJMUdQUEguTTQ2CiAgICAxQzcwOiAzMCAwRCAyMCAyMCAyMCAyMCA0
RSA2RiA3NCA2OSA2NiA3OSAyMCAyOCA1QyA1RiAgMC4gICAgTm90aWZ5IChcXwogICAgMUM4MDog
NTMgNDIgMkUgNTAgNDMgNDkgMzEgMkUgNDcgNTAgNTAgNDggMkMgMjAgMzAgNzggIFNCLlBDSTEu
R1BQSCwgMHgKICAgIDFDOTA6IDMyIDI5IDBBIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDg2IDVDIDJG
IDAzIDVGIDUzICAyKS4uLi4uLi4uLlwvLl9TCiAgICAxQ0EwOiA0MiA1RiA1MCA0MyA0OSAzMSA0
NyA1MCA1MCA0OCAwQSAwMiA1QiAyMiAwQSA2NCAgQl9QQ0kxR1BQSC4uWyIuZAogICAgMUNCMDog
NzAgNEQgMzAgMzEgMzcgNUYgNDIgNDIgNEUgMEEgMDQgMEEgMDIgMEEgNzggMDAgIHBNMDE3X0JC
Ti4uLi4ueC4KICAgIDFDQzA6IDBBIDIwIDYwIEEwIDQ0IDA2IDkyIDkzIDdCIDYwIDBDIDAwIDAw
IDAzIDAwIDAwICAuIGAuRC4uLntgLi4uLi4uCiAgICAxQ0QwOiAwMCA0RCAzMCAzMSAzOCA1RiA0
MiA0MiA0RSAwQSAwNCAwQSAwMiAwQSA3OCAwMCAgLk0wMThfQkJOLi4uLi54LgogICAgMUNFMDog
MEEgMjAgNjAgNzAgNEQgMzAgMzEgMzcgNUYgNDIgNDIgNEUgMEEgMDQgMEEgMDIgIC4gYHBNMDE3
X0JCTi4uLi4KICAgIDFDRjA6IDBBIDc4IDAwIDBBIDIwIDYwIEEwIDMxIDkyIDkzIDdCIDYwIDBD
IDAwIDAwIDAzICAueC4uIGAuMS4ue2AuLi4uCiAgICAxRDAwOiAwMCAwMCAwMCA0RCAzMCAzMSAz
OCA1RiA0MiA0MiA0RSAwQSAwNCAwQSAwMiAwQSAgLi4uTTAxOF9CQk4uLi4uLgogICAgMUQxMDog
NzggMDAgMEEgMjAgNjAgNzAgNEQgMzAgMzEgMzcgNUYgNDIgNDIgNEUgMEEgMDQgIHguLiBgcE0w
MTdfQkJOLi4KICAgIDFEMjA6IDBBIDAyIDBBIDc4IDAwIDBBIDIwIDYwIEEwIDRCIDEyIDkyIDkz
IDVDIDJGIDAzICAuLi54Li4gYC5LLi4uXC8uCiAgICAxRDMwOiA1RiA1MyA0MiA1RiA1MCA0MyA0
OSAzMSA0NSA1NCAzMSAzNSAwQSBGRiA3MCA3QSAgX1NCX1BDSTFFVDE1Li5wegogICAgMUQ0MDog
NEQgMzAgMzEgMzcgNUYgNDIgNDIgNEUgMEEgMDUgMDEgMEEgNzggMDAgMEEgMTggIE0wMTdfQkJO
Li4uLnguLi4KICAgIDFENTA6IDBBIDEwIDAwIDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5
IDMxIDQ1IDU0ICAuLi5cLy5fU0JfUENJMUVUCiAgICAxRDYwOiAzMSAzNSBBMCA0MSAwRiA5MSA5
MyA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0MyAgMTUuQS4uLlwvLl9TQl9QQwogICAgMUQ3MDog
NDkgMzEgNDUgNTQgMzEgMzUgMDEgOTMgNUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAgIEkxRVQxNS4u
XC8uX1NCX1AKICAgIDFEODA6IDQzIDQ5IDMxIDQ1IDU0IDMxIDM1IDBBIDAzIEEwIDRBIDBDIDVC
IDEyIDVDIDJGICBDSTFFVDE1Li4uSi5bLlwvCiAgICAxRDkwOiAwMyA1RiA1MyA0MiA1RiA1MCA0
MyA0OSAzMSA0NyA1MCAzMSAzNSAwMCA0RCAzNCAgLl9TQl9QQ0kxR1AxNS5NNAogICAgMURBMDog
MzYgMzAgMEQgMjAgMjAgMjAgMjAgNEUgNkYgNzQgNjkgNjYgNzkgMjAgMjggNUMgIDYwLiAgICBO
b3RpZnkgKFwKICAgIDFEQjA6IDVGIDUzIDQyIDJFIDUwIDQzIDQ5IDMxIDJFIDQ3IDUwIDMxIDM1
IDJDIDIwIDMwICBfU0IuUENJMS5HUDE1LCAwCiAgICAxREMwOiA3OCAzMiAyOSAwQSAwMCAwMCAw
MCAwMCAwMCAwMCAwMCA4NiA1QyAyRiAwMyA1RiAgeDIpLi4uLi4uLi4uXC8uXwogICAgMUREMDog
NTMgNDIgNUYgNTAgNDMgNDkgMzEgNDcgNTAgMzEgMzUgMEEgMDIgNUIgMjIgMEEgIFNCX1BDSTFH
UDE1Li5bIi4KICAgIDFERTA6IDY0IDcwIDREIDMwIDMxIDM3IDVGIDQyIDQyIDRFIDBBIDA1IDAx
IDBBIDc4IDAwICBkcE0wMTdfQkJOLi4uLnguCiAgICAxREYwOiAwQSAyMCA2MCBBMCA0MCAwNiA5
MiA5MyA3QiA2MCAwQyAwMCAwMCAwMyAwMCAwMCAgLiBgLkAuLi57YC4uLi4uLgogICAgMUUwMDog
MDAgNEQgMzAgMzEgMzggNUYgNDIgNDIgNEUgMEEgMDUgMDEgMEEgNzggMDAgMEEgIC5NMDE4X0JC
Ti4uLi54Li4KICAgIDFFMTA6IDIwIDYwIDcwIDREIDMwIDMxIDM3IDVGIDQyIDQyIDRFIDBBIDA1
IDAxIDBBIDc4ICAgYHBNMDE3X0JCTi4uLi54CiAgICAxRTIwOiAwMCAwQSAyMCA2MCBBMCAyRiA5
MiA5MyA3QiA2MCAwQyAwMCAwMCAwMyAwMCAwMCAgLi4gYC4vLi57YC4uLi4uLgogICAgMUUzMDog
MDAgNEQgMzAgMzEgMzggNUYgNDIgNDIgNEUgMEEgMDUgMDEgMEEgNzggMDAgMEEgIC5NMDE4X0JC
Ti4uLi54Li4KICAgIDFFNDA6IDIwIDYwIDcwIDREIDMwIDMxIDM3IDVGIDQyIDQyIDRFIDBBIDA1
IDAxIDBBIDc4ICAgYHBNMDE3X0JCTi4uLi54CiAgICAxRTUwOiAwMCAwQSAyMCA2MCBBMCA0MSAx
MyA5MiA5MyA1QyAyRiAwMyA1RiA1MyA0MiA1RiAgLi4gYC5BLi4uXC8uX1NCXwogICAgMUU2MDog
NTAgNDMgNDkgMzEgNDUgNTQgMzIgMzUgMEEgRkYgNzAgN0EgNEQgMzAgMzEgMzcgIFBDSTFFVDI1
Li5wek0wMTcKICAgIDFFNzA6IDVGIDQyIDQyIDRFIDBBIDA1IDBBIDAyIDBBIDc4IDAwIDBBIDE4
IDBBIDEwIDAwICBfQkJOLi4uLi54Li4uLi4uCiAgICAxRTgwOiA1QyAyRiAwMyA1RiA1MyA0MiA1
RiA1MCA0MyA0OSAzMSA0NSA1NCAzMiAzNSBBMCAgXC8uX1NCX1BDSTFFVDI1LgogICAgMUU5MDog
NDYgMEYgOTEgOTMgNUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAgNDMgNDkgMzEgNDUgIEYuLi5cLy5f
U0JfUENJMUUKICAgIDFFQTA6IDU0IDMyIDM1IDAxIDkzIDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUw
IDQzIDQ5IDMxICBUMjUuLlwvLl9TQl9QQ0kxCiAgICAxRUIwOiA0NSA1NCAzMiAzNSAwQSAwMyBB
MCA0RiAwQyA1QiAxMiA1QyAyRiAwMyA1RiA1MyAgRVQyNS4uLk8uWy5cLy5fUwogICAgMUVDMDog
NDIgNUYgNTAgNDMgNDkgMzEgNDcgNTAgMzIgMzUgMDAgNEQgMzQgMzYgMzAgMEQgIEJfUENJMUdQ
MjUuTTQ2MC4KICAgIDFFRDA6IDIwIDIwIDIwIDIwIDRFIDZGIDc0IDY5IDY2IDc5IDIwIDI4IDVD
IDVGIDUzIDQyICAgICAgTm90aWZ5IChcX1NCCiAgICAxRUUwOiAyRSA1MCA0MyA0OSAzMSAyRSA0
NyA1MCAzMiAzNSAyQyAyMCAzMCA3OCAzMiAyOSAgLlBDSTEuR1AyNSwgMHgyKQogICAgMUVGMDog
MEEgMDAgMDAgMDAgMDAgMDAgMDAgMDAgODYgNUMgMkYgMDMgNUYgNTMgNDIgNUYgIC4uLi4uLi4u
LlwvLl9TQl8KICAgIDFGMDA6IDUwIDQzIDQ5IDMxIDQ3IDUwIDMyIDM1IDBBIDAyIDVCIDIyIDBB
IDY0IDcwIDREICBQQ0kxR1AyNS4uWyIuZHBNCiAgICAxRjEwOiAzMCAzMSAzNyA1RiA0MiA0MiA0
RSAwQSAwNSAwQSAwMiAwQSA3OCAwMCAwQSAyMCAgMDE3X0JCTi4uLi4ueC4uIAogICAgMUYyMDog
NjAgQTAgNDQgMDYgOTIgOTMgN0IgNjAgMEMgMDAgMDAgMDMgMDAgMDAgMDAgNEQgIGAuRC4uLntg
Li4uLi4uLk0KICAgIDFGMzA6IDMwIDMxIDM4IDVGIDQyIDQyIDRFIDBBIDA1IDBBIDAyIDBBIDc4
IDAwIDBBIDIwICAwMThfQkJOLi4uLi54Li4gCiAgICAxRjQwOiA2MCA3MCA0RCAzMCAzMSAzNyA1
RiA0MiA0MiA0RSAwQSAwNSAwQSAwMiAwQSA3OCAgYHBNMDE3X0JCTi4uLi4ueAogICAgMUY1MDog
MDAgMEEgMjAgNjAgQTAgMzEgOTIgOTMgN0IgNjAgMEMgMDAgMDAgMDMgMDAgMDAgIC4uIGAuMS4u
e2AuLi4uLi4KICAgIDFGNjA6IDAwIDREIDMwIDMxIDM4IDVGIDQyIDQyIDRFIDBBIDA1IDBBIDAy
IDBBIDc4IDAwICAuTTAxOF9CQk4uLi4uLnguCiAgICAxRjcwOiAwQSAyMCA2MCA3MCA0RCAzMCAz
MSAzNyA1RiA0MiA0MiA0RSAwQSAwNSAwQSAwMiAgLiBgcE0wMTdfQkJOLi4uLgogICAgMUY4MDog
MEEgNzggMDAgMEEgMjAgNjAgQTAgNDEgMTMgOTIgOTMgNUMgMkYgMDMgNUYgNTMgIC54Li4gYC5B
Li4uXC8uX1MKICAgIDFGOTA6IDQyIDVGIDUwIDQzIDQ5IDMxIDQ1IDU0IDMzIDM1IDBBIEZGIDcw
IDdBIDREIDMwICBCX1BDSTFFVDM1Li5wek0wCiAgICAxRkEwOiAzMSAzNyA1RiA0MiA0MiA0RSAw
QSAwNSAwQSAwMyAwQSA3OCAwMCAwQSAxOCAwQSAgMTdfQkJOLi4uLi54Li4uLgogICAgMUZCMDog
MTAgMDAgNUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAgNDMgNDkgMzEgNDUgNTQgMzMgIC4uXC8uX1NC
X1BDSTFFVDMKICAgIDFGQzA6IDM1IEEwIDQ2IDBGIDkxIDkzIDVDIDJGIDAzIDVGIDUzIDQyIDVG
IDUwIDQzIDQ5ICA1LkYuLi5cLy5fU0JfUENJCiAgICAxRkQwOiAzMSA0NSA1NCAzMyAzNSAwMSA5
MyA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0MyAgMUVUMzUuLlwvLl9TQl9QQwogICAgMUZFMDog
NDkgMzEgNDUgNTQgMzMgMzUgMEEgMDMgQTAgNEYgMEMgNUIgMTIgNUMgMkYgMDMgIEkxRVQzNS4u
Lk8uWy5cLy4KICAgIDFGRjA6IDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMxIDQ3IDUwIDMzIDM1IDAw
IDREIDM0IDM2ICBfU0JfUENJMUdQMzUuTTQ2CiAgICAyMDAwOiAzMCAwRCAyMCAyMCAyMCAyMCA0
RSA2RiA3NCA2OSA2NiA3OSAyMCAyOCA1QyA1RiAgMC4gICAgTm90aWZ5IChcXwogICAgMjAxMDog
NTMgNDIgMkUgNTAgNDMgNDkgMzEgMkUgNDcgNTAgMzMgMzUgMkMgMjAgMzAgNzggIFNCLlBDSTEu
R1AzNSwgMHgKICAgIDIwMjA6IDMyIDI5IDBBIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDg2IDVDIDJG
IDAzIDVGIDUzICAyKS4uLi4uLi4uLlwvLl9TCiAgICAyMDMwOiA0MiA1RiA1MCA0MyA0OSAzMSA0
NyA1MCAzMyAzNSAwQSAwMiA1QiAyMiAwQSA2NCAgQl9QQ0kxR1AzNS4uWyIuZAogICAgMjA0MDog
NzAgNEQgMzAgMzEgMzcgNUYgNDIgNDIgNEUgMEEgMDUgMEEgMDMgMEEgNzggMDAgIHBNMDE3X0JC
Ti4uLi4ueC4KICAgIDIwNTA6IDBBIDIwIDYwIEEwIDQ0IDA2IDkyIDkzIDdCIDYwIDBDIDAwIDAw
IDAzIDAwIDAwICAuIGAuRC4uLntgLi4uLi4uCiAgICAyMDYwOiAwMCA0RCAzMCAzMSAzOCA1RiA0
MiA0MiA0RSAwQSAwNSAwQSAwMyAwQSA3OCAwMCAgLk0wMThfQkJOLi4uLi54LgogICAgMjA3MDog
MEEgMjAgNjAgNzAgNEQgMzAgMzEgMzcgNUYgNDIgNDIgNEUgMEEgMDUgMEEgMDMgIC4gYHBNMDE3
X0JCTi4uLi4KICAgIDIwODA6IDBBIDc4IDAwIDBBIDIwIDYwIEEwIDMxIDkyIDkzIDdCIDYwIDBD
IDAwIDAwIDAzICAueC4uIGAuMS4ue2AuLi4uCiAgICAyMDkwOiAwMCAwMCAwMCA0RCAzMCAzMSAz
OCA1RiA0MiA0MiA0RSAwQSAwNSAwQSAwMyAwQSAgLi4uTTAxOF9CQk4uLi4uLgogICAgMjBBMDog
NzggMDAgMEEgMjAgNjAgNzAgNEQgMzAgMzEgMzcgNUYgNDIgNDIgNEUgMEEgMDUgIHguLiBgcE0w
MTdfQkJOLi4KICAgIDIwQjA6IDBBIDAzIDBBIDc4IDAwIDBBIDIwIDYwIEEwIDQxIDEzIDkyIDkz
IDVDIDJGIDAzICAuLi54Li4gYC5BLi4uXC8uCiAgICAyMEMwOiA1RiA1MyA0MiA1RiA1MCA0MyA0
OSAzMSA0NSA1NCAzNCAzNSAwQSBGRiA3MCA3QSAgX1NCX1BDSTFFVDQ1Li5wegogICAgMjBEMDog
NEQgMzAgMzEgMzcgNUYgNDIgNDIgNEUgMEEgMDUgMEEgMDQgMEEgNzggMDAgMEEgIE0wMTdfQkJO
Li4uLi54Li4KICAgIDIwRTA6IDE4IDBBIDEwIDAwIDVDIDJGIDAzIDVGIDUzIDQyIDVGIDUwIDQz
IDQ5IDMxIDQ1ICAuLi4uXC8uX1NCX1BDSTFFCiAgICAyMEYwOiA1NCAzNCAzNSBBMCA0NiAwRiA5
MSA5MyA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCAgVDQ1LkYuLi5cLy5fU0JfUAogICAgMjEwMDog
NDMgNDkgMzEgNDUgNTQgMzQgMzUgMDEgOTMgNUMgMkYgMDMgNUYgNTMgNDIgNUYgIENJMUVUNDUu
LlwvLl9TQl8KICAgIDIxMTA6IDUwIDQzIDQ5IDMxIDQ1IDU0IDM0IDM1IDBBIDAzIEEwIDRGIDBD
IDVCIDEyIDVDICBQQ0kxRVQ0NS4uLk8uWy5cCiAgICAyMTIwOiAyRiAwMyA1RiA1MyA0MiA1RiA1
MCA0MyA0OSAzMSA0NyA1MCAzNCAzNSAwMCA0RCAgLy5fU0JfUENJMUdQNDUuTQogICAgMjEzMDog
MzQgMzYgMzAgMEQgMjAgMjAgMjAgMjAgNEUgNkYgNzQgNjkgNjYgNzkgMjAgMjggIDQ2MC4gICAg
Tm90aWZ5ICgKICAgIDIxNDA6IDVDIDVGIDUzIDQyIDJFIDUwIDQzIDQ5IDMxIDJFIDQ3IDUwIDM0
IDM1IDJDIDIwICBcX1NCLlBDSTEuR1A0NSwgCiAgICAyMTUwOiAzMCA3OCAzMiAyOSAwQSAwMCAw
MCAwMCAwMCAwMCAwMCAwMCA4NiA1QyAyRiAwMyAgMHgyKS4uLi4uLi4uLlwvLgogICAgMjE2MDog
NUYgNTMgNDIgNUYgNTAgNDMgNDkgMzEgNDcgNTAgMzQgMzUgMEEgMDIgNUIgMjIgIF9TQl9QQ0kx
R1A0NS4uWyIKICAgIDIxNzA6IDBBIDY0IDcwIDREIDMwIDMxIDM3IDVGIDQyIDQyIDRFIDBBIDA1
IDBBIDA0IDBBICAuZHBNMDE3X0JCTi4uLi4uCiAgICAyMTgwOiA3OCAwMCAwQSAyMCA2MCBBMCA0
NCAwNiA5MiA5MyA3QiA2MCAwQyAwMCAwMCAwMyAgeC4uIGAuRC4uLntgLi4uLgogICAgMjE5MDog
MDAgMDAgMDAgNEQgMzAgMzEgMzggNUYgNDIgNDIgNEUgMEEgMDUgMEEgMDQgMEEgIC4uLk0wMThf
QkJOLi4uLi4KICAgIDIxQTA6IDc4IDAwIDBBIDIwIDYwIDcwIDREIDMwIDMxIDM3IDVGIDQyIDQy
IDRFIDBBIDA1ICB4Li4gYHBNMDE3X0JCTi4uCiAgICAyMUIwOiAwQSAwNCAwQSA3OCAwMCAwQSAy
MCA2MCBBMCAzMSA5MiA5MyA3QiA2MCAwQyAwMCAgLi4ueC4uIGAuMS4ue2AuLgogICAgMjFDMDog
MDAgMDMgMDAgMDAgMDAgNEQgMzAgMzEgMzggNUYgNDIgNDIgNEUgMEEgMDUgMEEgIC4uLi4uTTAx
OF9CQk4uLi4KICAgIDIxRDA6IDA0IDBBIDc4IDAwIDBBIDIwIDYwIDcwIDREIDMwIDMxIDM3IDVG
IDQyIDQyIDRFICAuLnguLiBgcE0wMTdfQkJOCiAgICAyMUUwOiAwQSAwNSAwQSAwNCAwQSA3OCAw
MCAwQSAyMCA2MCBBMCA0QiAxMiA5MiA5MyA1QyAgLi4uLi54Li4gYC5LLi4uXAogICAgMjFGMDog
MkYgMDMgNUYgNTMgNDIgNUYgNTAgNDMgNDkgMzEgNDUgNTQgMzEgMzcgMEEgRkYgIC8uX1NCX1BD
STFFVDE3Li4KICAgIDIyMDA6IDcwIDdBIDREIDMwIDMxIDM3IDVGIDQyIDQyIDRFIDBBIDA3IDAx
IDBBIDc4IDAwICBwek0wMTdfQkJOLi4uLnguCiAgICAyMjEwOiAwQSAxOCAwQSAxMCAwMCA1QyAy
RiAwMyA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMSAgLi4uLi5cLy5fU0JfUENJMQogICAgMjIyMDog
NDUgNTQgMzEgMzcgQTAgNDEgMEYgOTEgOTMgNUMgMkYgMDMgNUYgNTMgNDIgNUYgIEVUMTcuQS4u
LlwvLl9TQl8KICAgIDIyMzA6IDUwIDQzIDQ5IDMxIDQ1IDU0IDMxIDM3IDAxIDkzIDVDIDJGIDAz
IDVGIDUzIDQyICBQQ0kxRVQxNy4uXC8uX1NCCiAgICAyMjQwOiA1RiA1MCA0MyA0OSAzMSA0NSA1
NCAzMSAzNyAwQSAwMyBBMCA0QSAwQyA1QiAxMiAgX1BDSTFFVDE3Li4uSi5bLgogICAgMjI1MDog
NUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAgNDMgNDkgMzEgNDcgNTAgMzEgMzcgMDAgIFwvLl9TQl9Q
Q0kxR1AxNy4KICAgIDIyNjA6IDREIDM0IDM2IDMwIDBEIDIwIDIwIDIwIDIwIDRFIDZGIDc0IDY5
IDY2IDc5IDIwICBNNDYwLiAgICBOb3RpZnkgCiAgICAyMjcwOiAyOCA1QyA1RiA1MyA0MiAyRSA1
MCA0MyA0OSAzMSAyRSA0NyA1MCAzMSAzNyAyQyAgKFxfU0IuUENJMS5HUDE3LAogICAgMjI4MDog
MjAgMzAgNzggMzIgMjkgMEEgMDAgMDAgMDAgMDAgMDAgMDAgMDAgODYgNUMgMkYgICAweDIpLi4u
Li4uLi4uXC8KICAgIDIyOTA6IDAzIDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMxIDQ3IDUwIDMxIDM3
IDBBIDAyIDVCICAuX1NCX1BDSTFHUDE3Li5bCiAgICAyMkEwOiAyMiAwQSA2NCA3MCA0RCAzMCAz
MSAzNyA1RiA0MiA0MiA0RSAwQSAwNyAwMSAwQSAgIi5kcE0wMTdfQkJOLi4uLgogICAgMjJCMDog
NzggMDAgMEEgMjAgNjAgQTAgNDAgMDYgOTIgOTMgN0IgNjAgMEMgMDAgMDAgMDMgIHguLiBgLkAu
Li57YC4uLi4KICAgIDIyQzA6IDAwIDAwIDAwIDREIDMwIDMxIDM4IDVGIDQyIDQyIDRFIDBBIDA3
IDAxIDBBIDc4ICAuLi5NMDE4X0JCTi4uLi54CiAgICAyMkQwOiAwMCAwQSAyMCA2MCA3MCA0RCAz
MCAzMSAzNyA1RiA0MiA0MiA0RSAwQSAwNyAwMSAgLi4gYHBNMDE3X0JCTi4uLgogICAgMjJFMDog
MEEgNzggMDAgMEEgMjAgNjAgQTAgMkYgOTIgOTMgN0IgNjAgMEMgMDAgMDAgMDMgIC54Li4gYC4v
Li57YC4uLi4KICAgIDIyRjA6IDAwIDAwIDAwIDREIDMwIDMxIDM4IDVGIDQyIDQyIDRFIDBBIDA3
IDAxIDBBIDc4ICAuLi5NMDE4X0JCTi4uLi54CiAgICAyMzAwOiAwMCAwQSAyMCA2MCA3MCA0RCAz
MCAzMSAzNyA1RiA0MiA0MiA0RSAwQSAwNyAwMSAgLi4gYHBNMDE3X0JCTi4uLgogICAgMjMxMDog
MEEgNzggMDAgMEEgMjAgNjAgQTAgNDEgMTMgOTIgOTMgNUMgMkYgMDMgNUYgNTMgIC54Li4gYC5B
Li4uXC8uX1MKICAgIDIzMjA6IDQyIDVGIDUwIDQzIDQ5IDMxIDQ1IDU0IDMyIDM3IDBBIEZGIDcw
IDdBIDREIDMwICBCX1BDSTFFVDI3Li5wek0wCiAgICAyMzMwOiAzMSAzNyA1RiA0MiA0MiA0RSAw
QSAwNyAwQSAwMiAwQSA3OCAwMCAwQSAxOCAwQSAgMTdfQkJOLi4uLi54Li4uLgogICAgMjM0MDog
MTAgMDAgNUMgMkYgMDMgNUYgNTMgNDIgNUYgNTAgNDMgNDkgMzEgNDUgNTQgMzIgIC4uXC8uX1NC
X1BDSTFFVDIKICAgIDIzNTA6IDM3IEEwIDQ2IDBGIDkxIDkzIDVDIDJGIDAzIDVGIDUzIDQyIDVG
IDUwIDQzIDQ5ICA3LkYuLi5cLy5fU0JfUENJCiAgICAyMzYwOiAzMSA0NSA1NCAzMiAzNyAwMSA5
MyA1QyAyRiAwMyA1RiA1MyA0MiA1RiA1MCA0MyAgMUVUMjcuLlwvLl9TQl9QQwogICAgMjM3MDog
NDkgMzEgNDUgNTQgMzIgMzcgMEEgMDMgQTAgNEYgMEMgNUIgMTIgNUMgMkYgMDMgIEkxRVQyNy4u
Lk8uWy5cLy4KICAgIDIzODA6IDVGIDUzIDQyIDVGIDUwIDQzIDQ5IDMxIDQ3IDUwIDMyIDM3IDAw
IDREIDM0IDM2ICBfU0JfUENJMUdQMjcuTTQ2CiAgICAyMzkwOiAzMCAwRCAyMCAyMCAyMCAyMCA0
RSA2RiA3NCA2OSA2NiA3OSAyMCAyOCA1QyA1RiAgMC4gICAgTm90aWZ5IChcXwogICAgMjNBMDog
NTMgNDIgMkUgNTAgNDMgNDkgMzEgMkUgNDcgNTAgMzIgMzcgMkMgMjAgMzAgNzggIFNCLlBDSTEu
R1AyNywgMHgKICAgIDIzQjA6IDMyIDI5IDBBIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDg2IDVDIDJG
IDAzIDVGIDUzICAyKS4uLi4uLi4uLlwvLl9TCiAgICAyM0MwOiA0MiA1RiA1MCA0MyA0OSAzMSA0
NyA1MCAzMiAzNyAwQSAwMiA1QiAyMiAwQSA2NCAgQl9QQ0kxR1AyNy4uWyIuZAogICAgMjNEMDog
NzAgNEQgMzAgMzEgMzcgNUYgNDIgNDIgNEUgMEEgMDcgMEEgMDIgMEEgNzggMDAgIHBNMDE3X0JC
Ti4uLi4ueC4KICAgIDIzRTA6IDBBIDIwIDYwIEEwIDQ0IDA2IDkyIDkzIDdCIDYwIDBDIDAwIDAw
IDAzIDAwIDAwICAuIGAuRC4uLntgLi4uLi4uCiAgICAyM0YwOiAwMCA0RCAzMCAzMSAzOCA1RiA0
MiA0MiA0RSAwQSAwNyAwQSAwMiAwQSA3OCAwMCAgLk0wMThfQkJOLi4uLi54LgogICAgMjQwMDog
MEEgMjAgNjAgNzAgNEQgMzAgMzEgMzcgNUYgNDIgNDIgNEUgMEEgMDcgMEEgMDIgIC4gYHBNMDE3
X0JCTi4uLi4KICAgIDI0MTA6IDBBIDc4IDAwIDBBIDIwIDYwIEEwIDMxIDkyIDkzIDdCIDYwIDBD
IDAwIDAwIDAzICAueC4uIGAuMS4ue2AuLi4uCiAgICAyNDIwOiAwMCAwMCAwMCA0RCAzMCAzMSAz
OCA1RiA0MiA0MiA0RSAwQSAwNyAwQSAwMiAwQSAgLi4uTTAxOF9CQk4uLi4uLgogICAgMjQzMDog
NzggMDAgMEEgMjAgNjAgNzAgNEQgMzAgMzEgMzcgNUYgNDIgNDIgNEUgMEEgMDcgIHguLiBgcE0w
MTdfQkJOLi4KICAgIDI0NDA6IDBBIDAyIDBBIDc4IDAwIDBBIDIwIDYwICAgICAgICAgICAgICAg
ICAgICAgICAgICAuLi54Li4gYAoKRklEVCBAIDB4MDAwMDAwMDAwMDAwMDAwMAogICAgMDAwMDog
NDYgNDkgNDQgNTQgOUMgMDAgMDAgMDAgMDEgOTEgNDEgNEQgNDQgMDAgMDAgMDAgIEZJRFQuLi4u
Li5BTUQuLi4KICAgIDAwMTA6IDQxIDIwIDREIDIwIDQ5IDAwIDAwIDAwIDAxIDAwIDAwIDAwIDQx
IDREIDQ5IDIwICBBIE0gSS4uLi4uLi5BTUkgCiAgICAwMDIwOiAxMyAwMCAwMSAwMCAyNCA0NiA0
OSA0NCAwNCA3OCAwMCA0MSAzMyAzMSAzMyAzNyAgLi4uLiRGSUQueC5BMzEzNwogICAgMDAzMDog
MzcgMzAgMzggMDAgRDUgNDEgOEYgNUMgNjcgNTMgNEYgNEQgODEgMjkgMzIgM0EgIDcwOC4uQS5c
Z1NPTS4pMjoKICAgIDAwNDA6IEFEIDE2IDdFIDIzIDMwIDM1IDAwIDMzIDMyIDAwIDMwIDM3IDAw
IDMwIDM4IDAwICAuLn4jMDUuMzIuMDcuMDguCiAgICAwMDUwOiBFOCAwNyAwMSAxMCAxMSAwMyAz
MCBGRiBGRiA0MSA0RCA0NCAwMCAwMCAwMCA0MSAgLi4uLi4uMC4uQU1ELi4uQQogICAgMDA2MDog
MjAgNEQgMjAgNDkgMDAgMDAgMDAgMzEgMDAgMDAgMDAgRkYgRkYgRkYgRkYgRkYgICBNIEkuLi4x
Li4uLi4uLi4KICAgIDAwNzA6IEZGIEZGIEZGIEZGIEZGIEZGIEZGIEZGIEZGIEZGIEZGIEZGIEZG
IEZGIEZGIEZGICAuLi4uLi4uLi4uLi4uLi4uCiAgICAwMDgwOiBGRiBGRiBGRiBGRiBGRiBGRiBG
RiBGRiBGRiBGRiBGRiBGRiBGRiBGRiBGRiBGRiAgLi4uLi4uLi4uLi4uLi4uLgogICAgMDA5MDog
RkYgRkYgRkYgRkYgRkYgRkYgRkYgRkYgRkYgRkYgRkYgRkYgICAgICAgICAgICAgIC4uLi4uLi4u
Li4uLgoKRkFDUyBAIDB4MDAwMDAwMDAwMDAwMDAwMAogICAgMDAwMDogNDYgNDEgNDMgNTMgNDAg
MDAgMDAgMDAgNkUgMDUgNTEgQjYgMDAgMDAgMDAgMDAgIEZBQ1NALi4ubi5RLi4uLi4KICAgIDAw
MTA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwICAuLi4u
Li4uLi4uLi4uLi4uCiAgICAwMDIwOiAwMiAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAw
MCAwMCAwMCAwMCAwMCAgLi4uLi4uLi4uLi4uLi4uLgogICAgMDAzMDogMDAgMDAgMDAgMDAgMDAg
MDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgIC4uLi4uLi4uLi4uLi4uLi4KCkJHUlQg
QCAweDAwMDAwMDAwMDAwMDAwMDAKICAgIDAwMDA6IDQyIDQ3IDUyIDU0IDM4IDAwIDAwIDAwIDAx
IDczIDQxIDREIDQ0IDIwIDIwIDIwICBCR1JUOC4uLi5zQU1EICAgCiAgICAwMDEwOiA0MSAyMCA0
RCAyMCA0OSAyMCAwMCAwMCAwMSAwMCAwMCAwMCA0MSA0RCA0OSAyMCAgQSBNIEkgLi4uLi4uQU1J
IAogICAgMDAyMDogMTMgMDAgMDEgMDAgMDEgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAg
MDAgIC4uLi4uLi4uLi4uLi4uLi4KICAgIDAwMzA6IDJDIDA0IDAwIDAwIEJFIDAxIDAwIDAwICAg
ICAgICAgICAgICAgICAgICAgICAgICAsLi4uLi4uLgoKU1NEVCBAIDB4MDAwMDAwMDAwMDAwMDAw
MAogICAgMDAwMDogNTMgNTMgNDQgNTQgMkYgOTggMDAgMDAgMDIgRTUgNDEgNEQgNDQgMDAgMDAg
MDAgIFNTRFQvLi4uLi5BTUQuLi4KICAgIDAwMTA6IDQzIDUwIDREIDQzIDREIDRFIDAwIDAwIDAx
IDAwIDAwIDAwIDQ5IDRFIDU0IDRDICBDUE1DTU4uLi4uLi5JTlRMCiAgICAwMDIwOiAzMSAwMyAy
MyAyMCBBMCA0MyA2MyAwMCAxNSA1QyAyRSA1RiA1MyA0MiA1RiA0MSAgMS4jIC5DYy4uXC5fU0Jf
QQogICAgMDAzMDogNEQgMzAgMzAgMDkgMDAgMTUgNUMgMkUgNUYgNTMgNDIgNUYgNDEgNEMgNDkg
NDIgIE0wMC4uLlwuX1NCX0FMSUIKICAgIDAwNDA6IDA4IDAyIDE1IDVDIDRFIDQ2IDUwIDQzIDA4
IDAwIDE1IDVDIDREIDRGIDQ1IDREICAuLi5cTkZQQy4uLlxNT0VNCiAgICAwMDUwOiAwOCAwMyAx
NSA1QyAyRSA1RiA1MyA0MiA1RiA0NyA1MCA0OSA0RiAwNiAwMCAxNSAgLi4uXC5fU0JfR1BJTy4u
LgogICAgMDA2MDogNUMgNUYgNDcgNTAgNDUgMDYgMDAgMTUgNUMgMkUgNUYgNDcgNTAgNDUgNDIg
NDkgIFxfR1BFLi4uXC5fR1BFQkkKICAgIDAwNzA6IDQ1IDMwIDA4IDAwIDE1IDVDIDJFIDVGIDQ3
IDUwIDQ1IDQxIDQ5IDQ1IDMwIDA4ICBFMC4uLlwuX0dQRUFJRTAuCiAgICAwMDgwOiAwMCAxNSA1
QyAyRSA1RiA0NyA1MCA0NSA0MiA0OSA0NSAzMSAwOCAwMCAxNSA1QyAgLi5cLl9HUEVCSUUxLi4u
XAogICAgMDA5MDogMkUgNUYgNDcgNTAgNDUgNDEgNDkgNDUgMzEgMDggMDAgMTUgNUMgMkUgNUYg
NDcgIC5fR1BFQUlFMS4uLlwuX0cKICAgIDAwQTA6IDUwIDQ1IDQyIDQ5IDQ1IDMyIDA4IDAwIDE1
IDVDIDJFIDVGIDQ3IDUwIDQ1IDQxICBQRUJJRTIuLi5cLl9HUEVBCiAgICAwMEIwOiA0OSA0NSAz
MiAwOCAwMCAxNSA1QyAyRSA1RiA0NyA1MCA0NSA0MiA0OSA0NSAzMyAgSUUyLi4uXC5fR1BFQklF
MwogICAgMDBDMDogMDggMDAgMTUgNUMgMkUgNUYgNDcgNTAgNDUgNDEgNDkgNDUgMzMgMDggMDAg
MTUgIC4uLlwuX0dQRUFJRTMuLi4KICAgIDAwRDA6IDVDIDJFIDVGIDQ3IDUwIDQ1IDUwIDU0IDUz
IDMwIDA4IDAxIDE1IDVDIDJFIDVGICBcLl9HUEVQVFMwLi4uXC5fCiAgICAwMEUwOiA0NyA1MCA0
NSA1MCA1NCA1MyAzMSAwOCAwMSAxNSA1QyAyRSA1RiA0NyA1MCA0NSAgR1BFUFRTMS4uLlwuX0dQ
RQogICAgMDBGMDogNTAgNTQgNTMgMzIgMDggMDEgMTUgNUMgMkUgNUYgNDcgNTAgNDUgNTAgNTQg
NTMgIFBUUzIuLi5cLl9HUEVQVFMKICAgIDAxMDA6IDMzIDA4IDAxIDE1IDVDIDJFIDVGIDQ3IDUw
IDQ1IDU3IDQxIDRCIDMwIDA4IDAxICAzLi4uXC5fR1BFV0FLMC4uCiAgICAwMTEwOiAxNSA1QyAy
RSA1RiA0NyA1MCA0NSA1NyA0MSA0QiAzMSAwOCAwMSAxNSA1QyAyRSAgLlwuX0dQRVdBSzEuLi5c
LgogICAgMDEyMDogNUYgNDcgNTAgNDUgNTcgNDEgNEIgMzIgMDggMDEgMTUgNUMgMkUgNUYgNDcg
NTAgIF9HUEVXQUsyLi4uXC5fR1AKICAgIDAxMzA6IDQ1IDU3IDQxIDRCIDMzIDA4IDAxIDE1IDVD
IDJFIDVGIDQ3IDUwIDQ1IDUzIDUwICBFV0FLMy4uLlwuX0dQRVNQCiAgICAwMTQwOiAzMCAzMCAw
OCAwMCAxNSA1QyAyRSA1RiA0NyA1MCA0NSA1MyA1MCAzMCAzMSAwOCAgMDAuLi5cLl9HUEVTUDAx
LgogICAgMDE1MDogMDAgMTUgNUMgMkUgNUYgNDcgNTAgNDUgNTMgNTAgMzAgMzIgMDggMDAgMTUg
NUMgIC4uXC5fR1BFU1AwMi4uLlwKICAgIDAxNjA6IDJFIDVGIDQ3IDUwIDQ1IDUzIDUwIDMwIDMz
IDA4IDAwIDE1IDVDIDJFIDVGIDQ3ICAuX0dQRVNQMDMuLi5cLl9HCiAgICAwMTcwOiA1MCA0NSA1
MyA1MCAzMCAzNCAwOCAwMCAxNSA1QyAyRSA1RiA0NyA1MCA0NSA1MyAgUEVTUDA0Li4uXC5fR1BF
UwogICAgMDE4MDogNTAgMzAgMzUgMDggMDAgMTUgNUMgMkUgNUYgNDcgNTAgNDUgNTMgNTAgMzAg
MzYgIFAwNS4uLlwuX0dQRVNQMDYKICAgIDAxOTA6IDA4IDAwIDE1IDVDIDJFIDVGIDQ3IDUwIDQ1
IDUzIDUwIDMwIDM3IDA4IDAwIDE1ICAuLi5cLl9HUEVTUDA3Li4uCiAgICAwMUEwOiA1QyAyRSA1
RiA0NyA1MCA0NSA1MyA1MCAzMSAzMCAwOCAwMCAxNSA1QyAyRSA1RiAgXC5fR1BFU1AxMC4uLlwu
XwogICAgMDFCMDogNDcgNTAgNDUgNTMgNTAgMzEgMzEgMDggMDAgMTUgNUMgMkUgNUYgNDcgNTAg
NDUgIEdQRVNQMTEuLi5cLl9HUEUKICAgIDAxQzA6IDUzIDUwIDMxIDMyIDA4IDAwIDE1IDVDIDJF
IDVGIDQ3IDUwIDQ1IDUzIDUwIDMxICBTUDEyLi4uXC5fR1BFU1AxCiAgICAwMUQwOiAzMyAwOCAw
MCAxNSA1QyAyRSA1RiA0NyA1MCA0NSA1MyA1MCAzMSAzNCAwOCAwMCAgMy4uLlwuX0dQRVNQMTQu
LgogICAgMDFFMDogMTUgNUMgMkUgNUYgNDcgNTAgNDUgNTMgNTAgMzEgMzUgMDggMDAgMTUgNUMg
MkUgIC5cLl9HUEVTUDE1Li4uXC4KICAgIDAxRjA6IDVGIDQ3IDUwIDQ1IDUzIDUwIDMxIDM2IDA4
IDAwIDE1IDVDIDJFIDVGIDQ3IDUwICBfR1BFU1AxNi4uLlwuX0dQCiAgICAwMjAwOiA0NSA1MyA1
MCAzMSAzNyAwOCAwMCAxNSA1QyAyRSA1RiA0NyA1MCA0NSA1MyA1MCAgRVNQMTcuLi5cLl9HUEVT
UAogICAgMDIxMDogMzIgMzAgMDggMDAgMTUgNUMgMkUgNUYgNDcgNTAgNDUgNTMgNTAgMzIgMzEg
MDggIDIwLi4uXC5fR1BFU1AyMS4KICAgIDAyMjA6IDAwIDE1IDVDIDJFIDVGIDQ3IDUwIDQ1IDUz
IDUwIDMyIDMyIDA4IDAwIDE1IDVDICAuLlwuX0dQRVNQMjIuLi5cCiAgICAwMjMwOiAyRSA1RiA0
NyA1MCA0NSA1MyA1MCAzMiAzMyAwOCAwMCAxNSA1QyAyRSA1RiA0NyAgLl9HUEVTUDIzLi4uXC5f
RwogICAgMDI0MDogNTAgNDUgNTMgNTAgMzIgMzQgMDggMDAgMTUgNUMgMkUgNUYgNDcgNTAgNDUg
NTMgIFBFU1AyNC4uLlwuX0dQRVMKICAgIDAyNTA6IDUwIDMyIDM1IDA4IDAwIDE1IDVDIDJFIDVG
IDQ3IDUwIDQ1IDUzIDUwIDMyIDM2ICBQMjUuLi5cLl9HUEVTUDI2CiAgICAwMjYwOiAwOCAwMCAx
NSA1QyAyRSA1RiA0NyA1MCA0NSA1MyA1MCAzMiAzNyAwOCAwMCAxNSAgLi4uXC5fR1BFU1AyNy4u
LgogICAgMDI3MDogNUMgMkUgNUYgNDcgNTAgNDUgNTMgNTAgMzMgMzAgMDggMDAgMTUgNUMgMkUg
NUYgIFwuX0dQRVNQMzAuLi5cLl8KICAgIDAyODA6IDQ3IDUwIDQ1IDUzIDUwIDMzIDMxIDA4IDAw
IDE1IDVDIDJFIDVGIDQ3IDUwIDQ1ICBHUEVTUDMxLi4uXC5fR1BFCiAgICAwMjkwOiA1MyA1MCAz
MyAzMiAwOCAwMCAxNSA1QyAyRSA1RiA0NyA1MCA0NSA1MyA1MCAzMyAgU1AzMi4uLlwuX0dQRVNQ
MwogICAgMDJBMDogMzMgMDggMDAgMTUgNUMgMkUgNUYgNDcgNTAgNDUgNTMgNTAgMzMgMzQgMDgg
MDAgIDMuLi5cLl9HUEVTUDM0Li4KICAgIDAyQjA6IDE1IDVDIDJFIDVGIDQ3IDUwIDQ1IDUzIDUw
IDMzIDM1IDA4IDAwIDE1IDVDIDJFICAuXC5fR1BFU1AzNS4uLlwuCiAgICAwMkMwOiA1RiA0NyA1
MCA0NSA1MyA1MCAzMyAzNiAwOCAwMCAxNSA1QyAyRSA1RiA0NyA1MCAgX0dQRVNQMzYuLi5cLl9H
UAogICAgMDJEMDogNDUgNTMgNTAgMzMgMzcgMDggMDAgMTUgNUMgMkUgNUYgNDcgNTAgNDUgNTMg
NTAgIEVTUDM3Li4uXC5fR1BFU1AKICAgIDAyRTA6IDM0IDMwIDA4IDAwIDE1IDVDIDJFIDVGIDQ3
IDUwIDQ1IDUzIDUwIDM0IDMxIDA4ICA0MC4uLlwuX0dQRVNQNDEuCiAgICAwMkYwOiAwMCAxNSA1
QyAyRSA1RiA0NyA1MCA0NSA1MyA1MCAzNCAzMiAwOCAwMCAxNSA1QyAgLi5cLl9HUEVTUDQyLi4u
XAogICAgMDMwMDogMkUgNUYgNDcgNTAgNDUgNTMgNTAgMzQgMzMgMDggMDAgMTUgNUMgMkUgNUYg
NDcgIC5fR1BFU1A0My4uLlwuX0cKICAgIDAzMTA6IDUwIDQ1IDUzIDUwIDM0IDM0IDA4IDAwIDE1
IDVDIDJFIDVGIDQ3IDUwIDQ1IDUzICBQRVNQNDQuLi5cLl9HUEVTCiAgICAwMzIwOiA1MCAzNCAz
NSAwOCAwMCAxNSA1QyAyRSA1RiA0NyA1MCA0NSA1MyA1MCAzNCAzNiAgUDQ1Li4uXC5fR1BFU1A0
NgogICAgMDMzMDogMDggMDAgMTUgNUMgMkUgNUYgNDcgNTAgNDUgNTMgNTAgMzQgMzcgMDggMDAg
MTUgIC4uLlwuX0dQRVNQNDcuLi4KICAgIDAzNDA6IDVDIDJFIDVGIDQ3IDUwIDQ1IDUzIDUwIDM1
IDMwIDA4IDAwIDE1IDVDIDJFIDVGICBcLl9HUEVTUDUwLi4uXC5fCiAgICAwMzUwOiA0NyA1MCA0
NSA1MyA1MCAzNSAzMSAwOCAwMCAxNSA1QyAyRSA1RiA0NyA1MCA0NSAgR1BFU1A1MS4uLlwuX0dQ
RQogICAgMDM2MDogNTMgNTAgMzUgMzIgMDggMDAgMTUgNUMgMkUgNUYgNDcgNTAgNDUgNTMgNTAg
MzUgIFNQNTIuLi5cLl9HUEVTUDUKICAgIDAzNzA6IDMzIDA4IDAwIDE1IDVDIDJFIDVGIDQ3IDUw
IDQ1IDUzIDUwIDM1IDM0IDA4IDAwICAzLi4uXC5fR1BFU1A1NC4uCiAgICAwMzgwOiAxNSA1QyAy
RSA1RiA0NyA1MCA0NSA1MyA1MCAzNSAzNSAwOCAwMCAxNSA1QyAyRSAgLlwuX0dQRVNQNTUuLi5c
LgogICAgMDM5MDogNUYgNDcgNTAgNDUgNTMgNTAgMzUgMzYgMDggMDAgMTUgNUMgMkUgNUYgNDcg
NTAgIF9HUEVTUDU2Li4uXC5fR1AKICAgIDAzQTA6IDQ1IDUzIDUwIDM1IDM3IDA4IDAwIDE1IDVD
IDJFIDVGIDQ3IDUwIDQ1IDUzIDUwICBFU1A1Ny4uLlwuX0dQRVNQCiAgICAwM0IwOiAzNiAzMCAw
OCAwMCAxNSA1QyAyRSA1RiA0NyA1MCA0NSA1MyA1MCAzNiAzMSAwOCAgNjAuLi5cLl9HUEVTUDYx
LgogICAgMDNDMDogMDAgMTUgNUMgMkUgNUYgNDcgNTAgNDUgNTMgNTAgMzYgMzIgMDggMDAgMTUg
NUMgIC4uXC5fR1BFU1A2Mi4uLlwKICAgIDAzRDA6IDJFIDVGIDQ3IDUwIDQ1IDUzIDUwIDM2IDMz
IDA4IDAwIDE1IDVDIDJFIDVGIDQ3ICAuX0dQRVNQNjMuLi5cLl9HCiAgICAwM0UwOiA1MCA0NSA1
MyA1MCAzNiAzNCAwOCAwMCAxNSA1QyAyRSA1RiA0NyA1MCA0NSA1MyAgUEVTUDY0Li4uXC5fR1BF
UwogICAgMDNGMDogNTAgMzYgMzUgMDggMDAgMTUgNUMgMkUgNUYgNDcgNTAgNDUgNTMgNTAgMzYg
MzYgIFA2NS4uLlwuX0dQRVNQNjYKICAgIDA0MDA6IDA4IDAwIDE1IDVDIDJFIDVGIDQ3IDUwIDQ1
IDUzIDUwIDM2IDM3IDA4IDAwIDE1ICAuLi5cLl9HUEVTUDY3Li4uCiAgICAwNDEwOiA1QyAyRSA1
RiA0NyA1MCA0NSA1MyA1MCAzNyAzMCAwOCAwMCAxNSA1QyAyRSA1RiAgXC5fR1BFU1A3MC4uLlwu
XwogICAgMDQyMDogNDcgNTAgNDUgNTMgNTAgMzcgMzEgMDggMDAgMTUgNUMgMkUgNUYgNDcgNTAg
NDUgIEdQRVNQNzEuLi5cLl9HUEUKICAgIDA0MzA6IDUzIDUwIDM3IDMyIDA4IDAwIDE1IDVDIDJF
IDVGIDQ3IDUwIDQ1IDUzIDUwIDM3ICBTUDcyLi4uXC5fR1BFU1A3CiAgICAwNDQwOiAzMyAwOCAw
MCAxNSA1QyAyRSA1RiA0NyA1MCA0NSA1MyA1MCAzNyAzNCAwOCAwMCAgMy4uLlwuX0dQRVNQNzQu
LgogICAgMDQ1MDogMTUgNUMgMkUgNUYgNDcgNTAgNDUgNTMgNTAgMzcgMzUgMDggMDAgMTUgNUMg
MkUgIC5cLl9HUEVTUDc1Li4uXC4KICAgIDA0NjA6IDVGIDQ3IDUwIDQ1IDUzIDUwIDM3IDM2IDA4
IDAwIDE1IDVDIDJFIDVGIDQ3IDUwICBfR1BFU1A3Ni4uLlwuX0dQCiAgICAwNDcwOiA0NSA1MyA1
MCAzNyAzNyAwOCAwMCAxNSA1QyAyRSA1RiA1MyA0MiA1RiA0RiA1MCAgRVNQNzcuLi5cLl9TQl9P
UAogICAgMDQ4MDogNTQgNTMgMDggMDEgMTUgNUMgMkUgNUYgNTMgNDIgNUYgNEYgNTcgNDEgNEIg
MDggIFRTLi4uXC5fU0JfT1dBSy4KICAgIDA0OTA6IDAxIDE1IDVDIDREIDMwIDMzIDM4IDA4IDAx
IDE1IDVDIDREIDMwIDMzIDM5IDA4ICAuLlxNMDM4Li4uXE0wMzkuCiAgICAwNEEwOiAwMiAxNSA1
QyA0RCAzMCAzNSAzMCAwNiAwMCAxNSA1QyA0RCAzMCAzNSAzMSAwNiAgLi5cTTA1MC4uLlxNMDUx
LgogICAgMDRCMDogMDAgMTUgNUMgNEQgMzAgMzUgMzIgMDYgMDAgMTUgNUMgNEQgMzAgMzUgMzMg
MDYgIC4uXE0wNTIuLi5cTTA1My4KICAgIDA0QzA6IDAwIDE1IDVDIDREIDMwIDM1IDM0IDA2IDAw
IDE1IDVDIDREIDMwIDM1IDM1IDA2ICAuLlxNMDU0Li4uXE0wNTUuCiAgICAwNEQwOiAwMCAxNSA1
QyA0RCAzMCAzNSAzNiAwNiAwMCAxNSA1QyA0RCAzMCAzNSAzNyAwNiAgLi5cTTA1Ni4uLlxNMDU3
LgogICAgMDRFMDogMDAgMTUgNUMgNEQgMzAgMzUgMzggMDYgMDAgMTUgNUMgNEQgMzAgMzUgMzkg
MDYgIC4uXE0wNTguLi5cTTA1OS4KICAgIDA0RjA6IDAwIDE1IDVDIDREIDMwIDM2IDMyIDA2IDAw
IDE1IDVDIDREIDMwIDM2IDM4IDA2ICAuLlxNMDYyLi4uXE0wNjguCiAgICAwNTAwOiAwMCAxNSA1
QyA0RCAzMCAzNiAzOSAwNiAwMCAxNSA1QyA0RCAzMCAzNyAzMCAwNiAgLi5cTTA2OS4uLlxNMDcw
LgogICAgMDUxMDogMDAgMTUgNUMgNEQgMzAgMzcgMzEgMDYgMDAgMTUgNUMgNEQgMzAgMzcgMzIg
MDYgIC4uXE0wNzEuLi5cTTA3Mi4KICAgIDA1MjA6IDAwIDE1IDVDIDREIDMwIDM3IDM0IDA2IDAw
IDE1IDVDIDREIDMwIDM3IDM1IDA2ICAuLlxNMDc0Li4uXE0wNzUuCiAgICAwNTMwOiAwMCAxNSA1
QyA0RCAzMCAzNyAzNiAwNiAwMCAxNSA1QyA0RCAzMCAzNyAzNyAwNiAgLi5cTTA3Ni4uLlxNMDc3
LgogICAgMDU0MDogMDAgMTUgNUMgNEQgMzAgMzcgMzggMDYgMDAgMTUgNUMgNEQgMzAgMzcgMzkg
MDYgIC4uXE0wNzguLi5cTTA3OS4KICAgIDA1NTA6IDAwIDE1IDVDIDREIDMwIDM4IDMwIDA2IDAw
IDE1IDVDIDREIDMwIDM4IDMxIDA2ICAuLlxNMDgwLi4uXE0wODEuCiAgICAwNTYwOiAwMCAxNSA1
QyAyRSA1RiA1MyA0MiA1RiA0RCAzMiAzNiAzMyAwOCAwMSAxNSA1QyAgLi5cLl9TQl9NMjYzLi4u
XAogICAgMDU3MDogMkUgNUYgNTMgNDIgNUYgNEQgMzIgMzYgMzQgMDggMDEgMTUgNUMgNEQgMzEg
MzIgIC5fU0JfTTI2NC4uLlxNMTIKICAgIDA1ODA6IDM3IDA2IDAwIDE1IDVDIDJFIDVGIDUzIDQy
IDVGIDREIDMyIDM4IDM0IDA4IDAxICA3Li4uXC5fU0JfTTI4NC4uCiAgICAwNTkwOiAxNSA1QyAy
RSA1RiA1MyA0MiA1RiA0OSA1MCA1NCA1MyAwOCAwMSAxNSA1QyAyRSAgLlwuX1NCX0lQVFMuLi5c
LgogICAgMDVBMDogNUYgNTMgNDIgNUYgNDkgNTcgNDEgNEIgMDggMDEgMTUgNUMgMkUgNUYgNTMg
NDIgIF9TQl9JV0FLLi4uXC5fU0IKICAgIDA1QjA6IDVGIDQyIDUwIDU0IDUzIDA4IDAxIDE1IDVD
IDJFIDVGIDUzIDQyIDVGIDQyIDU3ICBfQlBUUy4uLlwuX1NCX0JXCiAgICAwNUMwOiA0MSA0QiAw
OCAwMSAxNSA1QyAyRiAwNCA1RiA1MyA0MiA1RiA1MCA0MyA1OCA1OCAgQUsuLi5cLy5fU0JfUENY
WAogICAgMDVEMDogNTMgNDEgNTggNTggNTQgNTAgNTQgNTMgMDggMDEgMTUgNUMgMkYgMDQgNUYg
NTMgIFNBWFhUUFRTLi4uXC8uX1MKICAgIDA1RTA6IDQyIDVGIDUwIDQzIDU4IDU4IDUzIDQxIDU4
IDU4IDU0IDU3IDQxIDRCIDA4IDAxICBCX1BDWFhTQVhYVFdBSy4uCiAgICAwNUYwOiAxNSA1QyAy
RiAwNSA1RiA1MyA0MiA1RiA1MCA0MyA1OCA1OCA0NyA1MCA1OCA1OCAgLlwvLl9TQl9QQ1hYR1BY
WAogICAgMDYwMDogNTMgNDEgNTggNTggNTQgNTAgNTQgNTMgMDggMDEgMTUgNUMgMkYgMDUgNUYg
NTMgIFNBWFhUUFRTLi4uXC8uX1MKICAgIDA2MTA6IDQyIDVGIDUwIDQzIDU4IDU4IDQ3IDUwIDU4
IDU4IDUzIDQxIDU4IDU4IDU0IDU3ICBCX1BDWFhHUFhYU0FYWFRXCiAgICAwNjIwOiA0MSA0QiAw
OCAwMSAxNSA1QyAyRiAwNSA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMCAgQUsuLi5cLy5fU0JfUENJ
MAogICAgMDYzMDogNTAgNTQgNDIgNTIgNTAgNTQgNTMgNTQgNTQgNTAgNTQgNTMgMDggMDEgMTUg
NUMgIFBUQlJQVFNUVFBUUy4uLlwKICAgIDA2NDA6IDJGIDA1IDVGIDUzIDQyIDVGIDUwIDQzIDQ5
IDMwIDUwIDU0IDQyIDUyIDUwIDU0ICAvLl9TQl9QQ0kwUFRCUlBUCiAgICAwNjUwOiA1MyA1NCA1
NCA1NyA0MSA0QiAwOCAwMSA1QiA4MCA0MyA1MCA0RSA1NiAwMCAwQyAgU1RUV0FLLi5bLkNQTlYu
LgogICAgMDY2MDogMTggNDAgNDYgQTkgMEMgMTcgMDEgMDEgMDAgNUIgODEgNDAgMjAgNDMgNTAg
NEUgIC5ARi4uLi4uLlsuQCBDUE4KICAgIDA2NzA6IDU2IDEwIDREIDMwIDM4IDMyIDIwIDREIDMw
IDM4IDMzIDIwIDREIDMwIDM4IDM0ICBWLk0wODIgTTA4MyBNMDg0CiAgICAwNjgwOiAyMCA0RCAz
MCAzOCAzNSAwOCA0RCAzMiAzMiAzMSAwOCA0RCAzMCAzOCAzNiAxMCAgIE0wODUuTTIyMS5NMDg2
LgogICAgMDY5MDogNEQgMzIgMzIgMzkgMDggNEQgMzIgMzMgMzEgMTAgNEQgMzIgMzMgMzUgMDgg
NEQgIE0yMjkuTTIzMS5NMjM1Lk0KICAgIDA2QTA6IDMyIDMzIDMzIDIwIDAwIDAxIDAwIDAyIDAw
IDAxIDAwIDAxIDAwIDAxIDAwIDAxICAyMzMgLi4uLi4uLi4uLi4uCiAgICAwNkIwOiAwMCAwMSA0
RCAzMCAzOCAzNyAwMSAwMCAwMSAwMCAxNiA0RCAzMCAzOCAzOCAxMCAgLi5NMDg3Li4uLi5NMDg4
LgogICAgMDZDMDogNEQgMzAgMzggMzkgMTAgNEQgMzAgMzkgMzAgMDMgNEQgMzAgMzkgMzEgMDUg
NEQgIE0wODkuTTA5MC5NMDkxLk0KICAgIDA2RDA6IDMwIDM5IDMyIDA4IDREIDMwIDM5IDMzIDAz
IDREIDMwIDM5IDM0IDA1IDREIDMwICAwOTIuTTA5My5NMDk0Lk0wCiAgICAwNkUwOiAzOSAzNSAw
OCA0RCAzMCAzOSAzNiAwOCA0RCAzMCAzOSAzNyAwOCA0RCAzMCAzOSAgOTUuTTA5Ni5NMDk3Lk0w
OQogICAgMDZGMDogMzggMjAgNEQgMzAgMzkgMzkgMjAgNEQgMzEgMzAgMzAgMjAgNEQgMzEgMzAg
MzEgIDggTTA5OSBNMTAwIE0xMDEKICAgIDA3MDA6IDIwIDREIDMxIDMwIDMyIDIwIDREIDMxIDMw
IDMzIDIwIDREIDMxIDMwIDM0IDQwICAgTTEwMiBNMTAzIE0xMDRACiAgICAwNzEwOiAwRSA0RCAz
MSAzMCAzNSAyMCA0RCAzMSAzMCAzNiA4MCAwMCAwOCA0RCAzMyAzNyAgLk0xMDUgTTEwNi4uLk0z
NwogICAgMDcyMDogMzggODAgMDAgMDggNEQgMzMgMzcgMzkgODAgMDAgMDggNEQgMzMgMzggMzAg
ODAgIDguLi5NMzc5Li4uTTM4MC4KICAgIDA3MzA6IDAwIDA4IDREIDMzIDM4IDMxIDgwIDAwIDA4
IDREIDMzIDM4IDMyIDgwIDAwIDA4ICAuLk0zODEuLi5NMzgyLi4uCiAgICAwNzQwOiA0RCAzMyAz
OCAzMyA4MCAwMCAwOCA0RCAzMyAzOCAzNCA4MCAwMCAwOCA0RCAzMyAgTTM4My4uLk0zODQuLi5N
MwogICAgMDc1MDogMzggMzUgODAgMDAgMDggNEQgMzMgMzggMzYgODAgMDAgMDggNEQgMzMgMzgg
MzcgIDg1Li4uTTM4Ni4uLk0zODcKICAgIDA3NjA6IDgwIDAwIDA4IDREIDMzIDM4IDM4IDgwIDAw
IDA4IDREIDMzIDM4IDM5IDgwIDAwICAuLi5NMzg4Li4uTTM4OS4uCiAgICAwNzcwOiAwOCA0RCAz
MyAzOSAzMCA4MCAwMCAwOCA0RCAzMyAzOSAzMSA4MCAwMCAwOCA0RCAgLk0zOTAuLi5NMzkxLi4u
TQogICAgMDc4MDogMzMgMzkgMzIgODAgMDAgMDggNEQgMzEgMzAgMzcgNDAgMDQgNEQgMzMgMzIg
MzAgIDM5Mi4uLk0xMDdALk0zMjAKICAgIDA3OTA6IDIwIDREIDMzIDMyIDMxIDIwIDREIDMzIDMy
IDMyIDIwIDREIDMzIDMyIDMzIDIwICAgTTMyMSBNMzIyIE0zMjMgCiAgICAwN0EwOiA0RCAzMyAz
MiAzNCAyMCA0RCAzMyAzMiAzNSAyMCA0RCAzMyAzMiAzNiAyMCA0RCAgTTMyNCBNMzI1IE0zMjYg
TQogICAgMDdCMDogMzMgMzIgMzcgMTAgNEQgMzMgMzIgMzggMDggNEQgMzEgMzIgMzggMjAgNEQg
MzEgIDMyNy5NMzI4Lk0xMjggTTEKICAgIDA3QzA6IDMwIDM4IDIwIDREIDMxIDMwIDM5IDIwIDRE
IDMxIDMxIDMwIDIwIDREIDMxIDMyICAwOCBNMTA5IE0xMTAgTTEyCiAgICAwN0QwOiAzMiAyMCA0
RCAzMSAzMyAzMSAyMCA0RCAzMSAzMyAzMiAyMCA0RCAzMSAzMyAzMyAgMiBNMTMxIE0xMzIgTTEz
MwogICAgMDdFMDogMjAgNEQgMzEgMzMgMzQgMjAgNEQgMzEgMzMgMzUgMjAgNEQgMzEgMzMgMzYg
MjAgICBNMTM0IE0xMzUgTTEzNiAKICAgIDA3RjA6IDREIDMyIDMyIDMwIDIwIDREIDMyIDMyIDM2
IDIwIDREIDMyIDM1IDMxIDIwIDREICBNMjIwIE0yMjYgTTI1MSBNCiAgICAwODAwOiAzMyAzMSAz
MCAyMCA0RCAzMiAzOCAzMCAyMCA0RCAzMiAzOSAzMCAyMCA0RCAzMyAgMzEwIE0yODAgTTI5MCBN
MwogICAgMDgxMDogMzMgMzEgMjAgNEQgMzQgMzEgMzQgMTAgNEQgMzQgMzQgMzQgNDggMDQgNEQg
MzQgIDMxIE00MTQuTTQ0NEguTTQKICAgIDA4MjA6IDM1IDMzIDIwIDREIDM0IDM1IDM0IDEwIDRE
IDM0IDM1IDM1IDA4IDREIDM0IDM1ICA1MyBNNDU0Lk00NTUuTTQ1CiAgICAwODMwOiAzNiAwOCA0
RCAzNCAzNSAzNyAwOCA0RCAzNCAzNCAzOSA0OCAwNCA0RCAzNCA0MyAgNi5NNDU3Lk00NDlILk00
QwogICAgMDg0MDogMzAgMjAgNEQgMzIgMzMgNDEgMDggNEQgMzMgMzEgNDMgMjAgNEQgMzQgNDYg
MzAgIDAgTTIzQS5NMzFDIE00RjAKICAgIDA4NTA6IDIwIDREIDM2IDMxIDMwIDIwIDREIDM2IDMy
IDMwIDIwIDREIDMyIDM5IDQxIDQwICAgTTYxMCBNNjIwIE0yOUFACiAgICAwODYwOiAwOCA0RCAz
NiAzMyAzMSAyMCA0RCAzNiAzNSAzMiAyMCAwOCA0MyA1NCA0RCA1MiAgLk02MzEgTTY1MiAuQ1RN
UgogICAgMDg3MDogMDAgMDggNEQgMzIgMzggMzUgMTEgMDcgMEEgMDQgMDEgMDMgODAgMDAgNUIg
ODAgIC4uTTI4NS4uLi4uLi4uWy4KICAgIDA4ODA6IDU2IDQxIDUyIDUwIDAwIDBDIDA4IDA4IEQ4
IEZFIDBBIDA0IDVCIDgxIDBCIDU2ICBWQVJQLi4uLi4uLi5bLi5WCiAgICAwODkwOiA0MSA1MiA1
MCAwMyA1NiA0MSA1MCAzMSAyMCAxNCA0MSAyMSA0RCAzMCAzMCAzMCAgQVJQLlZBUDEgLkEhTTAw
MAogICAgMDhBMDogMDkgOEMgNEQgMzIgMzggMzUgMDAgNEQgMzIgMzggMzYgOEMgNEQgMzIgMzgg
MzUgIC4uTTI4NS5NMjg2Lk0yODUKICAgIDA4QjA6IDAxIDREIDMyIDM4IDM3IDhCIDREIDMyIDM4
IDM1IDBBIDAyIDREIDMyIDM4IDM4ICAuTTI4Ny5NMjg1Li5NMjg4CiAgICAwOEMwOiAwOCA0RCAz
NCAzNSAzMCAxMSAwOCAwQSAwNSAwMCA5NiAwNSAwMCAwMCA4QSA0RCAgLk00NTAuLi4uLi4uLi4u
TQogICAgMDhEMDogMzQgMzUgMzAgMDAgNEQgMzQgMzUgMzIgOEMgNEQgMzQgMzUgMzAgMEEgMDQg
NEQgIDQ1MC5NNDUyLk00NTAuLk0KICAgIDA4RTA6IDM0IDM1IDMxIDcwIDcyIDY4IDBDIDAwIDAw
IDAwIEIwIDAwIDYwIEEwIDQ2IDA5ICA0NTFwcmguLi4uLi5gLkYuCiAgICAwOEYwOiA5MyA5OSA0
RCAzMiAzOCAzNiAwMCAwMSA3MCA5OSA0RCAzMiAzOCAzOCAwMCA2MSAgLi5NMjg2Li5wLk0yODgu
YQogICAgMDkwMDogQTAgMjcgOTMgOTkgNEQgMzIgMzggMzcgMDAgMEEgMDMgNUIgODAgNTYgNDEg
NTIgIC4nLi5NMjg3Li4uWy5WQVIKICAgIDA5MTA6IDREIDAxIDYxIDBBIDA0IDVCIDgxIDBCIDU2
IDQxIDUyIDREIDAzIDU2IDQxIDUyICBNLmEuLlsuLlZBUk0uVkFSCiAgICAwOTIwOiA1MiAyMCA3
MCA2MCA1NiA0MSA1MiA1MiBBMSA0QiAwNSBBMCAyQyA5MyA5OSA0RCAgUiBwYFZBUlIuSy4uLC4u
TQogICAgMDkzMDogMzIgMzggMzcgMDAgMEEgMDIgNUIgODAgNTYgNDEgNTIgNEUgMDEgNjEgMEEg
MDIgIDI4Ny4uLlsuVkFSTi5hLi4KICAgIDA5NDA6IDVCIDgxIDBCIDU2IDQxIDUyIDRFIDAyIDU2
IDQxIDUyIDUzIDEwIDcwIDdCIDYwICBbLi5WQVJOLlZBUlMucHtgCiAgICAwOTUwOiAwQiBGRiBG
RiAwMCA1NiA0MSA1MiA1MyBBMSAyQiBBMCAyOSA5MyA5OSA0RCAzMiAgLi4uLlZBUlMuKy4pLi5N
MgogICAgMDk2MDogMzggMzcgMDAgMDEgNUIgODAgNTYgNDEgNTIgNEYgMDEgNjEgMDEgNUIgODEg
MEIgIDg3Li5bLlZBUk8uYS5bLi4KICAgIDA5NzA6IDU2IDQxIDUyIDRGIDAxIDU2IDQxIDUyIDU0
IDA4IDcwIDdCIDYwIDBBIEZGIDAwICBWQVJPLlZBUlQucHtgLi4uCiAgICAwOTgwOiA1NiA0MSA1
MiA1NCBBMCAxQSA5MyA5OSA0RCAzNCAzNSAzMSAwMCAwMSA3MCA5OSAgVkFSVC4uLi5NNDUxLi5w
LgogICAgMDk5MDogNEQgMzQgMzUgMzIgMDAgNjIgNEQgMzIgMzUgMzAgMDAgMDAgMDAgNjIgNjAg
NzAgIE00NTIuYk0yNTAuLi5iYHAKICAgIDA5QTA6IDU2IDQxIDUwIDMxIDYxIEEwIDBGIDkyIDk1
IDYxIDQzIDU0IDREIDUyIDc0IDYxICBWQVAxYS4uLi5hQ1RNUnRhCiAgICAwOUIwOiA0MyA1NCA0
RCA1MiA2MiBBMSAxMiA3MiA2MSA3MiA3NCAwQyBGRSBGRiBGRiBGRiAgQ1RNUmIuLnJhcnQuLi4u
LgogICAgMDlDMDogNDMgNTQgNEQgNTIgMDAgMDEgMDAgNjIgNzggNjIgMEEgMTkgNjMgNjIgNzgg
NzcgIENUTVIuLi5ieGIuLmNieHcKICAgIDA5RDA6IDYyIDBBIDA3IDAwIDBCIEU4IDAzIDYzIDYy
IEEwIDQzIDA0IDkyIDk1IDYzIDBBICBiLi4uLi4uY2IuQy4uLmMuCiAgICAwOUUwOiA2NCA0RCAz
NCAzNiAzMCAwRCAyMCAyMCA1MCA0RiA1MyA1NCAyMCA0MyA0RiA0NCAgZE00NjAuICBQT1NUIENP
RAogICAgMDlGMDogNDUgM0EgMjAgMjUgNTggMjAgMjAgNDEgNDMgNTAgNDkgMjAgNTQgNDkgNEQg
NDUgIEU6ICVYICBBQ1BJIFRJTUUKICAgIDBBMDA6IDUyIDNBIDIwIDI1IDU4IDIwIDIwIDU0IDQ5
IDREIDQ1IDNBIDIwIDI1IDY0IDJFICBSOiAlWCAgVElNRTogJWQuCiAgICAwQTEwOiAyNSA2NCAy
MCA2RCA3MyAwQSAwMCA2MCA2MSA2MiA2MyAwMCAwMCBBMSA0NyAwOCAgJWQgbXMuLmBhYmMuLi5H
LgogICAgMEEyMDogQTAgNDQgMDQgOTIgOTUgNjMgMEEgMEEgNEQgMzQgMzYgMzAgMEQgMjAgMjAg
NTAgIC5ELi4uYy4uTTQ2MC4gIFAKICAgIDBBMzA6IDRGIDUzIDU0IDIwIDQzIDRGIDQ0IDQ1IDNB
IDIwIDI1IDU4IDIwIDIwIDQxIDQzICBPU1QgQ09ERTogJVggIEFDCiAgICAwQTQwOiA1MCA0OSAy
MCA1NCA0OSA0RCA0NSA1MiAzQSAyMCAyNSA1OCAyMCAyMCA1NCA0OSAgUEkgVElNRVI6ICVYICBU
SQogICAgMEE1MDogNEQgNDUgM0EgMjAgMjUgNjQgMkUgMzAgMjUgNjQgMjAgNkQgNzMgMEEgMDAg
NjAgIE1FOiAlZC4wJWQgbXMuLmAKICAgIDBBNjA6IDYxIDYyIDYzIDAwIDAwIEExIDNGIDREIDM0
IDM2IDMwIDBEIDIwIDIwIDUwIDRGICBhYmMuLi4/TTQ2MC4gIFBPCiAgICAwQTcwOiA1MyA1NCAy
MCA0MyA0RiA0NCA0NSAzQSAyMCAyNSA1OCAyMCAyMCA0MSA0MyA1MCAgU1QgQ09ERTogJVggIEFD
UAogICAgMEE4MDogNDkgMjAgNTQgNDkgNEQgNDUgNTIgM0EgMjAgMjUgNTggMjAgMjAgNTQgNDkg
NEQgIEkgVElNRVI6ICVYICBUSU0KICAgIDBBOTA6IDQ1IDNBIDIwIDI1IDY0IDJFIDMwIDMwIDI1
IDY0IDIwIDZEIDczIDBBIDAwIDYwICBFOiAlZC4wMCVkIG1zLi5gCiAgICAwQUEwOiA2MSA2MiA2
MyAwMCAwMCA3MCA2MSA0MyA1NCA0RCA1MiAxNCAxOCA0RCAzMCAzMyAgYWJjLi5wYUNUTVIuLk0w
MwogICAgMEFCMDogMzQgMDkgQTQgNEQgMzAgMzEgMzEgNzIgNEQgMzAgMzggMzQgMEIgMDAgMDcg
MDAgIDQuLk0wMTFyTTA4NC4uLi4KICAgIDBBQzA6IDY4IDAwIDBBIDA4IDE0IDE4IDREIDMwIDMx
IDM1IDA5IEE0IDREIDMwIDMxIDMxICBoLi4uLi5NMDE1Li5NMDExCiAgICAwQUQwOiA3MiA0RCAz
MCAzOCAzNCAwQiAwMCAwNCAwMCA2OCAwMCAwQSAwOCAxNCAxOCA0RCAgck0wODQuLi4uaC4uLi4u
TQogICAgMEFFMDogMzAgMzEgMzYgMEEgNEQgMzAgMzEgMzIgNzIgNEQgMzAgMzggMzQgMEIgMDAg
MDQgIDAxNi5NMDEyck0wODQuLi4KICAgIDBBRjA6IDAwIDY4IDAwIDBBIDA4IDY5IDE0IDEzIDRE
IDMwIDMzIDM1IDA5IEE0IDREIDMwICAuaC4uLmkuLk0wMzUuLk0wCiAgICAwQjAwOiAzMSAzMSA0
RCAzMCAzOCAzNCA2OCAwMCAwQSAwOCAxNCAxMyA0RCAzMCAzMyAzNiAgMTFNMDg0aC4uLi4uTTAz
NgogICAgMEIxMDogMEEgNEQgMzAgMzEgMzIgNEQgMzAgMzggMzQgNjggMDAgMEEgMDggNjkgMTQg
MTQgIC5NMDEyTTA4NGguLi5pLi4KICAgIDBCMjA6IDREIDMwIDMwIDMxIDBBIDcwIDAwIDYwIEEw
IDA4IDkzIDY4IDBBIDE1IDcwIDAxICBNMDAxLnAuYC4uLmguLnAuCiAgICAwQjMwOiA2MCBBNCA2
MCAxNCAxQSA0RCAzMCAzMCAzMyAwQiA3OSA2OCAwQSAwNSA2MCA3MiAgYC5gLi5NMDAzLnloLi5g
cgogICAgMEI0MDogNjAgNjkgNjEgNzkgNjEgMEEgMTggNjIgNzIgNjIgNkEgNjMgQTQgNjMgNUIg
ODAgIGBpYXlhLi5icmJqYy5jWy4KICAgIDBCNTA6IDU2IDQxIDUyIDUxIDAxIDBCIEQ4IDBDIDBB
IDA4IDVCIDgxIDBCIDU2IDQxIDUyICBWQVJRLi4uLi4uWy4uVkFSCiAgICAwQjYwOiA1MSAwMyA1
NiA0MSA1MSAzMSAyMCAxNCAyMiA0RCAzMCAzMCAzNCAwOSA1QiA4NyAgUS5WQVExIC4iTTAwNC5b
LgogICAgMEI3MDogMTIgNTYgNDEgNTIgNTEgNTYgNDEgNTEgMzEgNjggMDMgMDAgMjAgNTYgNDEg
NTIgIC5WQVJRVkFRMWguLiBWQVIKICAgIDBCODA6IDMyIDIwIDcwIDU2IDQxIDUyIDMyIDYwIEE0
IDYwIDE0IDIwIDREIDMwIDMwIDM1ICAyIHBWQVIyYC5gLiBNMDA1CiAgICAwQjkwOiAwQSA1QiA4
NyAxMiA1NiA0MSA1MiA1MSA1NiA0MSA1MSAzMSA2OCAwMyAwMCAyMCAgLlsuLlZBUlFWQVExaC4u
IAogICAgMEJBMDogNTYgNDEgNTIgMzIgMjAgNzAgNjkgNTYgNDEgNTIgMzIgMTQgMTggNEQgMzAg
MzAgIFZBUjIgcGlWQVIyLi5NMDAKICAgIDBCQjA6IDM2IDBCIDdCIDREIDMwIDMwIDM0IDY4IDY5
IDYwIDdEIDYwIDZBIDYxIDREIDMwICA2LntNMDA0aGlgfWBqYU0wCiAgICAwQkMwOiAzMCAzNSA2
OCA2MSAxNCA0MSAxRCA0RCAzMCAzMCAzMiAwQSBBMCA0MiAwQiA5MyAgMDVoYS5BLk0wMDIuLkIu
LgogICAgMEJEMDogNjggMDAgQTAgMjkgOTMgNjkgMDAgNEQgMzAgMzAgMzYgNEQgMzAgMzAgMzMg
MEEgIGguLikuaS5NMDA2TTAwMy4KICAgIDBCRTA6IDA2IDAwIDBBIEMwIDBDIEZGIEVGIEZGIEZG
IDAwIDREIDMwIDMwIDM2IDREIDMwICAuLi4uLi4uLi4uTTAwNk0wCiAgICAwQkYwOiAzMCAzMyAw
MSAwMCAwQSA2NSAwQyBGRSBGRSBGRiBGRiAwMCBBMCAyOSA5MyA2OSAgMDMuLi5lLi4uLi4uLiku
aQogICAgMEMwMDogMDEgNEQgMzAgMzAgMzYgNEQgMzAgMzAgMzMgMEEgMDYgMDAgMEEgQzAgMEMg
RkYgIC5NMDA2TTAwMy4uLi4uLi4KICAgIDBDMTA6IERGIEZGIEZGIDAwIDREIDMwIDMwIDM2IDRE
IDMwIDMwIDMzIDAxIDAwIDBBIDY1ICAuLi4uTTAwNk0wMDMuLi5lCiAgICAwQzIwOiAwQyBGRCBG
RCBGRiBGRiAwMCBBMCAyQSA5MyA2OSAwQSAwMiA0RCAzMCAzMCAzNiAgLi4uLi4uLiouaS4uTTAw
NgogICAgMEMzMDogNEQgMzAgMzAgMzMgMEEgMDYgMDAgMEEgQzAgMEMgRkYgQkYgRkYgRkYgMDAg
NEQgIE0wMDMuLi4uLi4uLi4uLk0KICAgIDBDNDA6IDMwIDMwIDM2IDREIDMwIDMwIDMzIDAxIDAw
IDBBIDY1IDBDIEZCIEZCIEZGIEZGICAwMDZNMDAzLi4uZS4uLi4uCiAgICAwQzUwOiAwMCBBMCAy
QSA5MyA2OSAwQSAwMyA0RCAzMCAzMCAzNiA0RCAzMCAzMCAzMyAwQSAgLi4qLmkuLk0wMDZNMDAz
LgogICAgMEM2MDogMDYgMDAgMEEgQzAgMEMgRkYgN0YgRkYgRkYgMDAgNEQgMzAgMzAgMzYgNEQg
MzAgIC4uLi4uLi4uLi5NMDA2TTAKICAgIDBDNzA6IDMwIDMzIDAxIDAwIDBBIDY1IDBDIEY3IEY3
IEZGIEZGIDAwIDVCIDIyIDAxIEEwICAwMy4uLmUuLi4uLi5bIi4uCiAgICAwQzgwOiA0MiAwQyA5
MyA2OCAwMSBBMCAyRCA5MyA2OSAwMCA0RCAzMCAzMCAzNiA0RCAzMCAgQi4uaC4uLS5pLk0wMDZN
MAogICAgMEM5MDogMzAgMzMgMEEgMDYgMDAgMEEgQzAgMEMgRkYgRUYgRkYgRkYgMEIgMDAgMTAg
NEQgIDAzLi4uLi4uLi4uLi4uLk0KICAgIDBDQTA6IDMwIDMwIDM2IDREIDMwIDMwIDMzIDAxIDAw
IDBBIDY1IDBDIEZFIEZFIEZGIEZGICAwMDZNMDAzLi4uZS4uLi4uCiAgICAwQ0IwOiAwQiAwMSAw
MSBBMCAyRCA5MyA2OSAwMSA0RCAzMCAzMCAzNiA0RCAzMCAzMCAzMyAgLi4uLi0uaS5NMDA2TTAw
MwogICAgMENDMDogMEEgMDYgMDAgMEEgQzAgMEMgRkYgREYgRkYgRkYgMEIgMDAgMjAgNEQgMzAg
MzAgIC4uLi4uLi4uLi4uLiBNMDAKICAgIDBDRDA6IDM2IDREIDMwIDMwIDMzIDAxIDAwIDBBIDY1
IDBDIEZEIEZEIEZGIEZGIDBCIDAyICA2TTAwMy4uLmUuLi4uLi4uCiAgICAwQ0UwOiAwMiBBMCAy
RSA5MyA2OSAwQSAwMiA0RCAzMCAzMCAzNiA0RCAzMCAzMCAzMyAwQSAgLi4uLmkuLk0wMDZNMDAz
LgogICAgMENGMDogMDYgMDAgMEEgQzAgMEMgRkYgQkYgRkYgRkYgMEIgMDAgNDAgNEQgMzAgMzAg
MzYgIC4uLi4uLi4uLi4uQE0wMDYKICAgIDBEMDA6IDREIDMwIDMwIDMzIDAxIDAwIDBBIDY1IDBD
IEZCIEZCIEZGIEZGIDBCIDA0IDA0ICBNMDAzLi4uZS4uLi4uLi4uCiAgICAwRDEwOiBBMCAyRSA5
MyA2OSAwQSAwMyA0RCAzMCAzMCAzNiA0RCAzMCAzMCAzMyAwQSAwNiAgLi4uaS4uTTAwNk0wMDMu
LgogICAgMEQyMDogMDAgMEEgQzAgMEMgRkYgN0YgRkYgRkYgMEIgMDAgODAgNEQgMzAgMzAgMzYg
NEQgIC4uLi4uLi4uLi4uTTAwNk0KICAgIDBEMzA6IDMwIDMwIDMzIDAxIDAwIDBBIDY1IDBDIEY3
IEY3IEZGIEZGIDBCIDA4IDA4IDVCICAwMDMuLi5lLi4uLi4uLi5bCiAgICAwRDQwOiAyMiAwMSBB
MCA0MyAwNSA5MyA2OCAwMCA0RCAzMCAzMCAzOCA2OSA3MCA0RCAzMCAgIi4uQy4uaC5NMDA4aXBN
MAogICAgMEQ1MDogMzAgMzQgNEQgMzAgMzAgMzMgMEEgMDMgNjkgMEEgQTUgNjAgN0IgNjAgMEEg
RkYgIDA0TTAwMy4uaS4uYHtgLi4KICAgIDBENjA6IDYwIDcwIDBCIEY0IDAxIDYxIEEyIDIzIDkw
IDk0IDYxIDAwIDkyIDkzIDYwIDBBICBgcC4uLmEuIy4uYS4uLmAuCiAgICAwRDcwOiAxMCA3MCA0
RCAzMCAzMCAzNCA0RCAzMCAzMCAzMyAwQSAwMyA2OSAwQSBBNSA2MCAgLnBNMDA0TTAwMy4uaS4u
YAogICAgMEQ4MDogN0IgNjAgMEEgRkYgNjAgNzYgNjEgNUIgMjIgMDEgQTAgMEIgOTIgOTMgNjAg
MEEgIHtgLi5gdmFbIi4uLi4uYC4KICAgIDBEOTA6IDEwIDREIDMwIDMwIDM3IDY5IDE0IDQxIDA4
IDREIDMwIDMwIDM4IDA5IDcwIDREICAuTTAwN2kuQS5NMDA4LnBNCiAgICAwREEwOiAzMCAzMSAz
OSAwMCAwQSAxNSA2OCAwQSA4OCA2MCA3RCA3QiA2MCAwQyBGMCBGRiAgMDE5Li4uaC4uYH17YC4u
LgogICAgMERCMDogRkYgRkYgMDAgMEEgMDIgNjEgNEQgMzAgMzIgMzAgMDAgMEEgMTUgNjggMEEg
ODggIC4uLi4uYU0wMjAuLi5oLi4KICAgIDBEQzA6IDYxIDREIDMwIDMwIDM2IDREIDMwIDMwIDMz
IDBBIDAzIDY4IDBBIEE0IDBDIEZFICBhTTAwNk0wMDMuLmguLi4uCiAgICAwREQwOiBGRiBGRiBG
RiAwMSA0RCAzMCAzMCAzNiA0RCAzMCAzMCAzMyAwQSAwMyA2OCAwQSAgLi4uLk0wMDZNMDAzLi5o
LgogICAgMERFMDogQTIgMEMgRkYgREYgRkYgRkYgMEIgMDAgMjAgNEQgMzAgMzAgMzYgNEQgMzAg
MzAgIC4uLi4uLi4uIE0wMDZNMDAKICAgIDBERjA6IDMzIDBBIDAzIDY4IDBBIEMwIDBDIEZGIDdG
IEZGIEZGIDBCIDAwIDgwIDREIDMwICAzLi5oLi4uLi4uLi4uLk0wCiAgICAwRTAwOiAzMCAzNiA0
RCAzMCAzMCAzMyAwQSAwMyA2OCAwQSBBNCAwQyBGRiBGRiBGRiBERiAgMDZNMDAzLi5oLi4uLi4u
LgogICAgMEUxMDogMEMgMDAgMDAgMDAgMjAgNUIgMjIgMDEgMTQgNDQgMDUgNEQgMzAgMzAgMzcg
MDkgIC4uLi4gWyIuLkQuTTAwNy4KICAgIDBFMjA6IDcwIDREIDMwIDMxIDM5IDAwIDBBIDE1IDY4
IDBBIDg4IDYwIDdEIDdCIDYwIDBDICBwTTAxOS4uLmguLmB9e2AuCiAgICAwRTMwOiBGMCBGRiBG
RiBGRiAwMCAwMSA2MSA0RCAzMCAzMiAzMCAwMCAwQSAxNSA2OCAwQSAgLi4uLi4uYU0wMjAuLi5o
LgogICAgMEU0MDogODggNjEgNEQgMzAgMzAgMzYgNEQgMzAgMzAgMzMgMEEgMDMgNjggMEEgQTQg
MEMgIC5hTTAwNk0wMDMuLmguLi4KICAgIDBFNTA6IEZFIEZGIEZGIEZGIDAwIDREIDMwIDMwIDM2
IDREIDMwIDMwIDMzIDBBIDAzIDY4ICAuLi4uLk0wMDZNMDAzLi5oCiAgICAwRTYwOiAwQSBBMiAw
QyBGRiBERiBGRiBGRiAwQiAwMCAyMCA1QiAyMiAwMSAxNCA0NCAxQSAgLi4uLi4uLi4uIFsiLi5E
LgogICAgMEU3MDogNEQgMzEgMzEgMzEgMEEgNEQgMzQgMzYgMzAgMEQgMjAgMjAgNEIgNDUgNTIg
MkQgIE0xMTEuTTQ2MC4gIEtFUi0KICAgIDBFODA6IDQxIDUzIDRDIDJEIDQzIDcwIDZEIDUzIDY1
IDc0IDQ0IDY1IDc2IDY5IDYzIDY1ICBBU0wtQ3BtU2V0RGV2aWNlCiAgICAwRTkwOiA1MCA2RiA3
NyA2NSA3MiAyMCAyOCAzMCA3OCAyNSA1OCAyQyAyMCAzMCA3OCAyNSAgUG93ZXIgKDB4JVgsIDB4
JQogICAgMEVBMDogNTggMjkgMEEgMDAgNjggNjkgMDAgMDAgMDAgMDAgQTAgNDcgMTYgOTIgOTMg
NjggIFgpLi5oaS4uLi4uRy4uLmgKICAgIDBFQjA6IDAwIDcwIDREIDMxIDMxIDMwIDYwIEEwIDRB
IDE1IDYwIDcyIDYwIDBBIDEwIDYwICAucE0xMTBgLkouYHJgLi5gCiAgICAwRUMwOiA3MCAwMCA2
MSA3MCAwMSA2MiA3MCAwMCA2NyBBMiA0OCAxNCA5MCA5MiA5MyA2MiAgcC5hcC5icC5nLkguLi4u
YgogICAgMEVEMDogMEEgRkYgOTIgOTMgNjIgMDAgNzAgNEQgMzAgMzEgMzMgNzIgNjAgNjEgMDAg
MDAgIC4uLi5iLnBNMDEzcmBhLi4KICAgIDBFRTA6IDAwIDBBIDA4IDYyIDcwIDREIDMwIDMxIDMz
IDcyIDYwIDYxIDAwIDAxIDAwIDBBICAuLi5icE0wMTNyYGEuLi4uCiAgICAwRUYwOiAwOCA2MyBB
MCA0NyAxMCA5MCA5MyA2MiA2OCA5MyA2MyA3QiA2OSAwMSAwMCA3MCAgLmMuRy4uLmJoLmN7aS4u
cAogICAgMEYwMDogNEQgMzAgMzEgMzMgNzIgNjAgNjEgMDAgMEEgMDcgMDAgMEEgMDggNjMgQTAg
NDggIE0wMTNyYGEuLi4uLi5jLkgKICAgIDBGMTA6IDBFIDkyIDkzIDYzIDAwIDcwIDREIDMwIDMx
IDMzIDcyIDYwIDYxIDAwIDBBIDAyICAuLi5jLnBNMDEzcmBhLi4uCiAgICAwRjIwOiAwMCAwQSAw
OCA2NCBBMCA0OSAwNCA5MyA2NCAwMCA3MCA0RCAzMCAzMSAzMyA3MiAgLi4uZC5JLi5kLnBNMDEz
cgogICAgMEYzMDogNjAgNjEgMDAgMEEgMDMgMDAgMEEgMjAgNjUgNzAgNEQgMzAgMzEgMzMgNzIg
NjAgIGBhLi4uLi4gZXBNMDEzcmAKICAgIDBGNDA6IDYxIDAwIDBBIDAzIDBBIDEwIDBBIDA4IDY2
IDREIDMwIDMxIDMwIDdCIDY1IDBDICBhLi4uLi4uLmZNMDEwe2UuCiAgICAwRjUwOiBGRiBGRiAw
MCBGRiAwMCA2NiBBMCAwRSA5MyA3QiA2OSAwMSAwMCAwMCA0RCAzMCAgLi4uLi5mLi4ue2kuLi5N
MAogICAgMEY2MDogMzAgMzAgMEIgRDggMEQgQTEgMDggNEQgMzAgMzAgMzAgMEIgREIgMEQgQTAg
NEQgIDAwLi4uLi5NMDAwLi4uLk0KICAgIDBGNzA6IDA0IDkzIDY0IDAxIDcwIDREIDMwIDMxIDMz
IDcyIDYwIDYxIDAwIDBBIDAzIDAwICAuLmQucE0wMTNyYGEuLi4uCiAgICAwRjgwOiAwQSAyMCA2
NSA3MCA0RCAzMCAzMSAzMyA3MiA2MCA2MSAwMCAwQSAwMyAwQSAxMCAgLiBlcE0wMTNyYGEuLi4u
LgogICAgMEY5MDogMEEgMDggNjYgQTIgMTAgOTIgOTMgNEQgMzAgMzAgMzkgN0IgNjUgMEMgRkYg
RkYgIC4uZi4uLi5NMDA5e2UuLi4KICAgIDBGQTA6IDAwIEZGIDAwIDY2IEEwIDBFIDkzIDdCIDY5
IDAxIDAwIDAwIDREIDMwIDMwIDMwICAuLi5mLi4ue2kuLi5NMDAwCiAgICAwRkIwOiAwQiBEOSAw
RCBBMSAwOCA0RCAzMCAzMCAzMCAwQiBEQyAwRCBBMCAzQSA5MyA2NCAgLi4uLi5NMDAwLi4uLjou
ZAogICAgMEZDMDogMEEgMDIgNzAgNEQgMzAgMzEgMzMgNzIgNjAgNjEgMDAgMEEgMDMgMDAgMEEg
MjAgIC4ucE0wMTNyYGEuLi4uLiAKICAgIDBGRDA6IDY1IDVCIDIyIDc4IDcyIDY1IDBCIEU3IDAz
IDAwIDBCIEU4IDAzIDAwIDAwIEEwICBlWyJ4cmUuLi4uLi4uLi4uCiAgICAwRkUwOiAwRSA5MyA3
QiA2OSAwMSAwMCAwMCA0RCAzMCAzMCAzMCAwQiBEQSAwRCBBMSAwOCAgLi57aS4uLk0wMDAuLi4u
LgogICAgMEZGMDogNEQgMzAgMzAgMzAgMEIgREQgMEQgNzAgMDEgNjcgQTEgMTIgQTAgMTAgOTAg
OTMgIE0wMDAuLi5wLmcuLi4uLi4KICAgIDEwMDA6IDY3IDAxIDkzIDdCIDY5IDBBIDEwIDAwIDBB
IDEwIDcwIDAwIDYyIDcyIDYxIDBBICBnLi57aS4uLi4ucC5icmEuCiAgICAxMDEwOiAwOCA2MSAx
NCA0QyAxMCA0RCAzNCAzNyAzMCAwQSA3MCAwMCA2NyBBMCA0OCAwQiAgLmEuTC5NNDcwLnAuZy5I
LgogICAgMTAyMDogOTIgOTMgNjggMDAgNzAgNEQgMzEgMzEgMzAgNjAgQTAgNEIgMEEgNjAgNzIg
NjAgIC4uaC5wTTExMGAuSy5gcmAKICAgIDEwMzA6IDBBIDEwIDYwIDcwIDAwIDYxIDcwIDREIDMw
IDMxIDMzIDcyIDYwIDYxIDAwIDAwICAuLmBwLmFwTTAxM3JgYS4uCiAgICAxMDQwOiAwMCAwQSAw
OCA2MiBBMiA0MSAwOSA5MCA5MiA5MyA2MiAwQSBGRiA5MiA5MyA2MiAgLi4uYi5BLi4uLmIuLi4u
YgogICAgMTA1MDogMDAgNzAgNEQgMzAgMzEgMzMgNzIgNjAgNjEgMDAgMDEgMDAgMEEgMDggNjMg
QTAgIC5wTTAxM3JgYS4uLi4uYy4KICAgIDEwNjA6IDQzIDA2IDkwIDkzIDYyIDY4IDkzIDYzIDY5
IDcwIDREIDMwIDMxIDMzIDcyIDYwICBDLi4uYmguY2lwTTAxM3JgCiAgICAxMDcwOiA2MSAwMCAw
QSAwMiAwMCAwQSAwOCA2MyA3MCA0RCAzMCAzMSAzMyA3MiA2MCA2MSAgYS4uLi4uLmNwTTAxM3Jg
YQogICAgMTA4MDogMDAgMEEgMDcgMDAgMEEgMDggNjQgQTAgM0IgOTAgOTMgNjMgMDAgOTIgOTMg
NjQgIC4uLi4uLmQuOy4uYy4uLmQKICAgIDEwOTA6IDAwIDcwIDREIDMwIDMxIDMzIDcyIDYwIDYx
IDAwIDBBIDAzIDAwIDBBIDIwIDY1ICAucE0wMTNyYGEuLi4uLiBlCiAgICAxMEEwOiA3MCA0RCAz
MCAzMSAzMyA3MiA2MCA2MSAwMCAwQSAwMyAwQSAxMCAwQSAwOCA2NiAgcE0wMTNyYGEuLi4uLi4u
ZgogICAgMTBCMDogQTAgMTIgOTMgNEQgMzAgMzAgMzkgN0IgNjUgMEMgRkYgRkYgMDAgRkYgMDAg
NjYgIC4uLk0wMDl7ZS4uLi4uLmYKICAgIDEwQzA6IDcwIDAxIDY3IDcyIDYxIDBBIDA4IDYxIDcw
IDREIDMwIDMxIDMzIDcyIDYwIDYxICBwLmdyYS4uYXBNMDEzcmBhCiAgICAxMEQwOiAwMCAwMCAw
MCAwQSAwOCA2MiA0RCAzNCAzNiAzMCAwRCAyMCAyMCA0QiA0NSA1MiAgLi4uLi5iTTQ2MC4gIEtF
UgogICAgMTBFMDogMkQgNDEgNTMgNEMgMkQgNDMgNzAgNkQgNDMgNjggNjUgNjMgNkIgNDQgNjUg
NzYgIC1BU0wtQ3BtQ2hlY2tEZXYKICAgIDEwRjA6IDY5IDYzIDY1IDUwIDZGIDc3IDY1IDcyIDUz
IDc0IDYxIDc0IDY1IDIwIDI4IDMwICBpY2VQb3dlclN0YXRlICgwCiAgICAxMTAwOiA3OCAyNSA1
OCAyQyAyMCAyNSA2NCAyOSAyMCAyMCA1MiA2NSA3NCA3NSA3MiA2RSAgeCVYLCAlZCkgIFJldHVy
bgogICAgMTExMDogMjAgMjggMjUgNjQgMjkgMEEgMDAgNjggNjkgNjcgMDAgMDAgMDAgQTQgNjcg
MTQgICAoJWQpLi5oaWcuLi4uZy4KICAgIDExMjA6IDRCIDBGIDREIDMyIDMyIDM4IDA5IEEwIDQz
IDBGIDk0IDY4IDBBIDAzIDcwIDREICBLLk0yMjguLkMuLmguLnBNCiAgICAxMTMwOiAzMSAzMSAz
MCA2MCBBMCA0NiAwRSA2MCA3MiA2MCAwQSAxMCA2MCA3MCAwMCA2MSAgMTEwYC5GLmByYC4uYHAu
YQogICAgMTE0MDogNzAgNEQgMzAgMzEgMzMgNzIgNjAgNjEgMDAgMDAgMDAgMEEgMDggNjIgQTIg
NEMgIHBNMDEzcmBhLi4uLi5iLkwKICAgIDExNTA6IDBDIDkwIDkyIDkzIDYyIDBBIEZGIDkyIDkz
IDYyIDAwIDcwIDREIDMwIDMxIDMzICAuLi4uYi4uLi5iLnBNMDEzCiAgICAxMTYwOiA3MiA2MCA2
MSAwMCAwQSAwNyAwMCAwQSAwOCA2MyBBMCA0RCAwOSA5MyA2MyA2OCAgcmBhLi4uLi4uYy5NLi5j
aAogICAgMTE3MDogNzAgNEQgMzAgMzEgMzMgNzIgNjAgNjEgMDAgMEEgMDIgMDAgMEEgMDggNjQg
QTAgIHBNMDEzcmBhLi4uLi4uZC4KICAgIDExODA6IDMwIDkzIDY0IDAwIDcwIDREIDMwIDMxIDMz
IDcyIDYwIDYxIDAwIDBBIDAzIDAwICAwLmQucE0wMTNyYGEuLi4uCiAgICAxMTkwOiAwQSAyMCA2
NSA3MCA0RCAzMCAzMSAzMyA3MiA2MCA2MSAwMCAwQSAwMyAwQSAxMCAgLiBlcE0wMTNyYGEuLi4u
LgogICAgMTFBMDogMEEgMDggNjYgNEQgMzAgMzEgMzAgN0IgNjUgMEMgRkYgRkYgMDAgRkYgMDAg
NjYgIC4uZk0wMTB7ZS4uLi4uLmYKICAgIDExQjA6IEEwIDM0IDkzIDY0IDAxIDcwIDREIDMwIDMx
IDMzIDcyIDYwIDYxIDAwIDBBIDAzICAuNC5kLnBNMDEzcmBhLi4uCiAgICAxMUMwOiAwMCAwQSAy
MCA2NSA3MCA0RCAzMCAzMSAzMyA3MiA2MCA2MSAwMCAwQSAwMyAwQSAgLi4gZXBNMDEzcmBhLi4u
LgogICAgMTFEMDogMTAgMEEgMDggNjYgQTIgMTAgOTIgOTMgNEQgMzAgMzAgMzkgN0IgNjUgMEMg
RkYgIC4uLmYuLi4uTTAwOXtlLi4KICAgIDExRTA6IEZGIDAwIEZGIDAwIDY2IEEwIDIyIDkzIDY0
IDBBIDAyIDcwIDREIDMwIDMxIDMzICAuLi4uZi4iLmQuLnBNMDEzCiAgICAxMUYwOiA3MiA2MCA2
MSAwMCAwQSAwMyAwMCAwQSAyMCA2NSA1QiAyMiA3OCA3MiA2NSAwQiAgcmBhLi4uLi4gZVsieHJl
LgogICAgMTIwMDogRTcgMDMgMDAgMEIgRTggMDMgMDAgMDAgNzIgNjEgMEEgMDggNjEgNzAgNEQg
MzAgIC4uLi4uLi4ucmEuLmFwTTAKICAgIDEyMTA6IDMxIDMzIDcyIDYwIDYxIDAwIDAwIDAwIDBB
IDA4IDYyIDE0IDQyIDJBIDREIDMyICAxM3JgYS4uLi4uYi5CKk0yCiAgICAxMjIwOiAzMSAzOSAw
QSA0RCAzNCAzNiAzMCAwRCAyMCAyMCA0QiA0NSA1MiAyRCA0MSA1MyAgMTkuTTQ2MC4gIEtFUi1B
UwogICAgMTIzMDogNEMgMkQgNDMgNzAgNkQgNTMgNjUgNzQgNDQgNjUgNzYgNjkgNjMgNjUgNDMg
NkMgIEwtQ3BtU2V0RGV2aWNlQ2wKICAgIDEyNDA6IDZGIDYzIDZCIDIwIDI4IDMwIDc4IDI1IDU4
IDJDIDIwIDI1IDY0IDI5IDBBIDAwICBvY2sgKDB4JVgsICVkKS4uCiAgICAxMjUwOiA2OCA2OSAw
MCAwMCAwMCAwMCBBMCA0NyAyNiA5MiA5MyA2OCAwMCA3MCA0RCAzMiAgaGkuLi4uLkcmLi5oLnBN
MgogICAgMTI2MDogMzIgMzEgNjAgQTAgNEEgMjUgN0IgNjAgMEEgMDIgMDAgNzAgNEQgMzIgMzIg
MzAgIDIxYC5KJXtgLi4ucE0yMjAKICAgIDEyNzA6IDYwIEEwIDRDIDI0IDYwIDcyIDYwIDBBIDEw
IDYwIDcwIDAwIDYxIDcwIDAxIDYyICBgLkwkYHJgLi5gcC5hcC5iCiAgICAxMjgwOiBBMiA0RCAy
MyA5MiA5MyA2MiAwQSBGRiA3MCA0RCAzMCAzMSAzMyA3MiA2MCA2MSAgLk0jLi5iLi5wTTAxM3Jg
YQogICAgMTI5MDogMDAgMDAgMDAgMEEgMDggNjIgNzAgNEQgMzAgMzEgMzMgNzIgNjAgNjEgMDAg
MDEgIC4uLi4uYnBNMDEzcmBhLi4KICAgIDEyQTA6IDAwIDBBIDA4IDYzIDcwIDREIDMwIDMxIDMz
IDcyIDYwIDYxIDAwIDBBIDA0IDAwICAuLi5jcE0wMTNyYGEuLi4uCiAgICAxMkIwOiAwQSAwOCA2
NCA3MCA0RCAzMCAzMSAzMyA3MiA2MCA2MSAwMCAwQSAwNyAwMCAwQSAgLi5kcE0wMTNyYGEuLi4u
LgogICAgMTJDMDogMDggNjUgNzAgNEQgMzAgMzEgMzMgNzIgNjAgNjEgMDAgMEEgMDggMDAgMEEg
MjAgIC5lcE0wMTNyYGEuLi4uLiAKICAgIDEyRDA6IDY3IEEwIDQ3IDFFIDkzIDY0IDY4IEEwIDQx
IDFFIDkwIDk1IDYyIDBBIDBBIDdCICBnLkcuLmRoLkEuLi5iLi57CiAgICAxMkUwOiA2NSAwQSA4
MCAwMCBBMCAwNyA5MyA2OSAwMCA3MCAwMCA2MyBBMSA0NCAwOSBBMCAgZS4uLi4uLmkucC5jLkQu
LgogICAgMTJGMDogNEIgMDcgN0IgNjUgMEEgMDQgMDAgQTAgMTggOTMgNjkgMDEgQTAgMEQgOTIg
OTUgIEsue2UuLi4uLi5pLi4uLi4KICAgIDEzMDA6IDREIDMwIDM4IDM1IDBBIDA0IDcwIDBBIDAz
IDYzIEExIDA1IDcwIDBBIDBGIDYzICBNMDg1Li5wLi5jLi5wLi5jCiAgICAxMzEwOiBBMCA0QSAw
NSA5MyA2OSAwQSAwMiA3MCA0RCAzMCAzMSAzNyAwMCA0RCAzMCAzMSAgLkouLmkuLnBNMDE3Lk0w
MQogICAgMTMyMDogMzMgNzIgNjAgNjEgMDAgMEEgMDUgMDAgMEEgMDggNEQgMzAgMzEgMzMgNzIg
NjAgIDNyYGEuLi4uLi5NMDEzcmAKICAgIDEzMzA6IDYxIDAwIDBBIDA2IDAwIDBBIDA4IDBBIDE5
IDAwIDBBIDA4IDY2IEEwIDE3IDkzICBhLi4uLi4uLi4uLi5mLi4uCiAgICAxMzQwOiA0RCAzMiAz
NiAzNSA2NiAwMCAwMCAwMSBBMCAwQyA5MiA5NSA0RCAzMCAzOCAzNSAgTTI2NWYuLi4uLi4uTTA4
NQogICAgMTM1MDogMEEgMDQgNzAgMDEgNjMgQTEgMTUgQTAgMEQgOTIgOTUgNEQgMzAgMzggMzUg
MEEgIC4ucC5jLi4uLi4uTTA4NS4KICAgIDEzNjA6IDA0IDcwIDBBIDAzIDYzIEExIDA1IDcwIDBB
IDBGIDYzIEExIDE1IEEwIDBEIDkyICAucC4uYy4ucC4uYy4uLi4uCiAgICAxMzcwOiA5NSA0RCAz
MCAzOCAzNSAwQSAwNCA3MCAwQSAwMyA2MyBBMSAwNSA3MCAwQSAwRiAgLk0wODUuLnAuLmMuLnAu
LgogICAgMTM4MDogNjMgQTAgNDAgMEYgOTIgOTUgNEQgMzAgMzggMzUgMEEgMDQgQTAgNEMgMDkg
OTMgIGMuQC4uLk0wODUuLi5MLi4KICAgIDEzOTA6IDREIDMwIDM4IDM1IDBBIDA4IEEwIDQzIDA3
IDk0IDdCIDY3IDBDIDAwIDAwIEYwICBNMDg1Li4uQy4ue2cuLi4uCiAgICAxM0EwOiAwRiAwMCAw
MCA3MCA0RCAzMiAzNCAzOSA3QiA3QSA2NyAwQSAxOCAwMCAwQSAwRiAgLi4ucE0yNDl7emcuLi4u
LgogICAgMTNCMDogMDAgN0IgN0EgNjcgMEEgMTQgMDAgMEEgMEYgMDAgN0IgN0EgNjcgMEEgMTAg
MDAgIC57emcuLi4uLi57emcuLi4KICAgIDEzQzA6IDBBIDBGIDAwIDBDIDAwIDFFIEQwIDAyIDY2
IDdCIDY2IDdGIDBDIEZGIEZGIEZGICAuLi4uLi4uLmZ7Zi4uLi4uCiAgICAxM0QwOiBGRiA3OSAw
QSAwMyA3OSA2MiAwMSAwMCAwMCAwMCA2NiA3RCA2NiA3OSA2MyA3OSAgLnkuLnliLi4uLmZ9Znlj
eQogICAgMTNFMDogNjIgMDEgMDAgMDAgNjYgNEQgMzIgMzUgMzAgN0IgN0EgNjcgMEEgMTggMDAg
MEEgIGIuLi5mTTI1MHt6Zy4uLi4KICAgIDEzRjA6IDBGIDAwIDdCIDdBIDY3IDBBIDE0IDAwIDBB
IDBGIDAwIDdCIDdBIDY3IDBBIDEwICAuLnt6Zy4uLi4uLnt6Zy4uCiAgICAxNDAwOiAwMCAwQSAw
RiAwMCAwQyAwMCAxRSBEMCAwMiA2NiBBMSAxRSA0RCAzMCAzMSAzMiAgLi4uLi4uLi4uZi4uTTAx
MgogICAgMTQxMDogNzIgNEQgMzAgMzggMzQgMEIgMDAgMEUgMDAgN0EgNjIgMEEgMDIgMDAgNzkg
N0IgIHJNMDg0Li4uLnpiLi4ueXsKICAgIDE0MjA6IDYyIDBBIDAzIDAwIDAxIDAwIDBBIDAyIDYz
IEExIDQ4IDA0IEEwIDI2IDkzIDdBICBiLi4uLi4uLmMuSC4uJi56CiAgICAxNDMwOiA2NyAwQSAx
QyAwMCAwQSAwMiA0RCAzMCAzMSAzMiA3MiA0RCAzMCAzOCAzNCAwQiAgZy4uLi4uTTAxMnJNMDg0
LgogICAgMTQ0MDogMDAgMTMgMDAgN0EgNjIgMEEgMDIgMDAgNzkgN0IgNjIgMEEgMDMgMDAgMDEg
MDAgIC4uLnpiLi4ueXtiLi4uLi4KICAgIDE0NTA6IDBBIDAyIDYzIEExIDFFIDREIDMwIDMxIDMy
IDcyIDREIDMwIDM4IDM0IDBCIDAwICAuLmMuLk0wMTJyTTA4NC4uCiAgICAxNDYwOiAwRSAwMCA3
QSA2MiAwQSAwMiAwMCA3OSA3QiA2MiAwQSAwMyAwMCAwMSAwMCAwQSAgLi56Yi4uLnl7Yi4uLi4u
LgogICAgMTQ3MDogMDIgNjMgQTEgMUQgNEQgMzAgMzEgMzIgNzIgNEQgMzAgMzggMzQgMEIgMDAg
MEUgIC5jLi5NMDEyck0wODQuLi4KICAgIDE0ODA6IDAwIDdBIDYyIDAxIDAwIDc5IDdCIDYyIDAx
IDAwIDBBIDAyIDAwIDBBIDA0IDYzICAuemIuLnl7Yi4uLi4uLi5jCiAgICAxNDkwOiBBMCAwQiA5
MyA2OSAwMCA0RCAzMCAzMCAzMCAwQiBFMCAwRCBBMCAwQiA5MyA2OSAgLi4uaS5NMDAwLi4uLi4u
aQogICAgMTRBMDogMDEgNEQgMzAgMzAgMzAgMEIgRTEgMEQgQTAgMEMgOTMgNjkgMEEgMDIgNEQg
MzAgIC5NMDAwLi4uLi4uaS4uTTAKICAgIDE0QjA6IDMwIDMwIDBCIEUyIDBEIDcwIDBBIEZGIDYy
IDcyIDYxIDBBIDBDIDYxIDE0IDREICAwMC4uLnAuLmJyYS4uYS5NCiAgICAxNEMwOiAxOSA0RCAz
MSAzMSAzMiAwQSA0RCAzNCAzNiAzMCAwRCAyMCAyMCA0QiA0NSA1MiAgLk0xMTIuTTQ2MC4gIEtF
UgogICAgMTREMDogMkQgNDEgNTMgNEMgMkQgNDMgNzAgNkQgNTMgNjUgNzQgNDQgNjUgNzYgNjkg
NjMgIC1BU0wtQ3BtU2V0RGV2aWMKICAgIDE0RTA6IDY1IDUyIDY1IDczIDY1IDc0IDIwIDI4IDMw
IDc4IDI1IDU4IDJDIDIwIDMwIDc4ICBlUmVzZXQgKDB4JVgsIDB4CiAgICAxNEYwOiAyNSA1OCAy
OSAwQSAwMCA2OCA2OSAwMCAwMCAwMCAwMCBBMCA0MCAxNiA5MiA5MyAgJVgpLi5oaS4uLi4uQC4u
LgogICAgMTUwMDogNjggMDAgNzAgNEQgMzEgMzAgMzkgNjAgQTAgNDMgMTUgNjAgNzIgNjAgMEEg
MTAgIGgucE0xMDlgLkMuYHJgLi4KICAgIDE1MTA6IDYwIDcwIDAwIDYxIDcwIDAxIDYyIDcwIDAw
IDY3IEEyIDQxIDE0IDkwIDkyIDkzICBgcC5hcC5icC5nLkEuLi4uCiAgICAxNTIwOiA2MiAwQSBG
RiA5MiA5MyA2MiAwMCA3MCA0RCAzMCAzMSAzMyA3MiA2MCA2MSAwMCAgYi4uLi5iLnBNMDEzcmBh
LgogICAgMTUzMDogMDAgMDAgMEEgMDggNjIgNzAgNEQgMzAgMzEgMzMgNzIgNjAgNjEgMDAgMDEg
MDAgIC4uLi5icE0wMTNyYGEuLi4KICAgIDE1NDA6IDBBIDA4IDYzIEEwIDQwIDEwIDkwIDkzIDYy
IDY4IDkzIDYzIDdCIDY5IDBBIDAzICAuLmMuQC4uLmJoLmN7aS4uCiAgICAxNTUwOiAwMCBBMCA0
NSAwQyA5NSA2MyAwQSAwMiA3MCA0RCAzMCAzMSAzMyA3MiA2MCA2MSAgLi5FLi5jLi5wTTAxM3Jg
YQogICAgMTU2MDogMDAgMEEgMDIgMDAgMEEgMDggNjQgQTAgMzAgOTMgNjQgMDAgNzAgNEQgMzAg
MzEgIC4uLi4uLmQuMC5kLnBNMDEKICAgIDE1NzA6IDMzIDcyIDYwIDYxIDAwIDBBIDAzIDAwIDBB
IDIwIDY1IDcwIDREIDMwIDMxIDMzICAzcmBhLi4uLi4gZXBNMDEzCiAgICAxNTgwOiA3MiA2MCA2
MSAwMCAwQSAwMyAwQSAxMCAwQSAwOCA2NiA0RCAzMCAzMSAzMCA3QiAgcmBhLi4uLi4uLmZNMDEw
ewogICAgMTU5MDogNjUgMEMgRkYgRkYgMDAgRkYgMDAgNjYgQTAgNDYgMDYgOTMgNjQgMDEgNzAg
NEQgIGUuLi4uLi5mLkYuLmQucE0KICAgIDE1QTA6IDMwIDMxIDMzIDcyIDYwIDYxIDAwIDBBIDAz
IDAwIDBBIDIwIDY1IDcwIDREIDMwICAwMTNyYGEuLi4uLiBlcE0wCiAgICAxNUIwOiAzMSAzMyA3
MiA2MCA2MSAwMCAwQSAwMyAwQSAxMCAwQSAwOCA2NiA0RCAzMCAzMSAgMTNyYGEuLi4uLi4uZk0w
MQogICAgMTVDMDogMzAgN0IgNjUgMEMgRkYgRkYgMDAgRkYgMDAgNjYgNzAgNEQgMzAgMzAgMzkg
N0IgIDB7ZS4uLi4uLmZwTTAwOXsKICAgIDE1RDA6IDY1IDBDIEZGIEZGIDAwIEZGIDAwIDY3IDcw
IDBCIEYyIDAzIDY0IEEyIDIxIDkwICBlLi4uLi4uZ3AuLi5kLiEuCiAgICAxNUUwOiA5NCA2NCAw
MCA5MiA5MyA2NyA2NiA3MCA3NCA2NCAwMSAwMCA2NCA1QiAyMSAwQSAgLmQuLi5nZnB0ZC4uZFsh
LgogICAgMTVGMDogNjMgNzAgNEQgMzAgMzAgMzkgN0IgNjUgMEMgRkYgRkYgMDAgRkYgMDAgNjcg
QTAgIGNwTTAwOXtlLi4uLi4uZy4KICAgIDE2MDA6IDBCIDkzIDYzIDAwIDREIDMwIDMwIDMwIDBC
IEQ1IDBEIEEwIDBCIDkzIDYzIDAxICAuLmMuTTAwMC4uLi4uLmMuCiAgICAxNjEwOiA0RCAzMCAz
MCAzMCAwQiBENiAwRCBBMCAyOSA5MyA2MyAwQSAwMiA3MCA0RCAzMCAgTTAwMC4uLi4pLmMuLnBN
MAogICAgMTYyMDogMzEgMzMgNzIgNjAgNjEgMDAgMEEgMDMgMDAgMEEgMjAgNjUgNUIgMjIgNzgg
NzIgIDEzcmBhLi4uLi4gZVsieHIKICAgIDE2MzA6IDY1IDBCIEU3IDAzIDAwIDBCIEU4IDAzIDAw
IDAwIDREIDMwIDMwIDMwIDBCIEQ3ICBlLi4uLi4uLi4uTTAwMC4uCiAgICAxNjQwOiAwRCA3MCAw
MSA2NyBBMSAxMiBBMCAxMCA5MCA5MyA2NyAwMSA5MyA3QiA2OSAwQSAgLnAuZy4uLi4uLmcuLntp
LgogICAgMTY1MDogMTAgMDAgMEEgMTAgNzAgMDAgNjIgNzIgNjEgMEEgMDggNjEgMTQgNEYgMEQg
NEQgIC4uLi5wLmJyYS4uYS5PLk0KICAgIDE2NjA6IDMyIDM3IDM1IDBBIDcwIDAwIDY3IEEwIDRC
IDA4IDkyIDkzIDY4IDAwIDcwIDREICAyNzUucC5nLksuLi5oLnBNCiAgICAxNjcwOiAzMSAzMCAz
OSA2MCBBMCA0RSAwNyA2MCA3MiA2MCAwQSAxMCA2MCA3MCAwMCA2MSAgMTA5YC5OLmByYC4uYHAu
YQogICAgMTY4MDogNzAgMDEgNjIgQTIgNEYgMDYgOTAgOTIgOTMgNjIgMEEgRkYgOTIgOTMgNjIg
MDAgIHAuYi5PLi4uLmIuLi4uYi4KICAgIDE2OTA6IDcwIDREIDMwIDMxIDMzIDcyIDYwIDYxIDAw
IDAwIDAwIDBBIDA4IDYyIDcwIDREICBwTTAxM3JgYS4uLi4uYnBNCiAgICAxNkEwOiAzMCAzMSAz
MyA3MiA2MCA2MSAwMCAwMSAwMCAwQSAwOCA2MyBBMCA0MSAwNCA5MCAgMDEzcmBhLi4uLi5jLkEu
LgogICAgMTZCMDogOTMgNjIgNjggOTMgNjMgNjkgQTAgMzcgOTUgNjMgMEEgMDIgNzAgNEQgMzAg
MzEgIC5iaC5jaS43LmMuLnBNMDEKICAgIDE2QzA6IDMzIDcyIDYwIDYxIDAwIDBBIDAzIDAwIDBB
IDIwIDY1IDcwIDREIDMwIDMxIDMzICAzcmBhLi4uLi4gZXBNMDEzCiAgICAxNkQwOiA3MiA2MCA2
MSAwMCAwQSAwMyAwQSAxMCAwQSAwOCA2NiBBMCAxMiA5MyA0RCAzMCAgcmBhLi4uLi4uLmYuLi5N
MAogICAgMTZFMDogMzAgMzkgN0IgNjUgMEMgRkYgRkYgMDAgRkYgMDAgNjYgNzAgMDEgNjcgNzIg
NjEgIDA5e2UuLi4uLi5mcC5ncmEKICAgIDE2RjA6IDBBIDA4IDYxIDREIDM0IDM2IDMwIDBEIDIw
IDIwIDRCIDQ1IDUyIDJEIDQxIDUzICAuLmFNNDYwLiAgS0VSLUFTCiAgICAxNzAwOiA0QyAyRCA0
MyA3MCA2RCA0MyA2OCA2NSA2MyA2QiA0NCA2NSA3NiA2OSA2MyA2NSAgTC1DcG1DaGVja0Rldmlj
ZQogICAgMTcxMDogNTIgNjUgNzMgNjUgNzQgNTMgNzQgNjEgNzQgNjUgMjAgMjggMzAgNzggMjUg
NTggIFJlc2V0U3RhdGUgKDB4JVgKICAgIDE3MjA6IDJDIDIwIDI1IDY0IDI5IDIwIDIwIDUyIDY1
IDc0IDc1IDcyIDZFIDIwIDI4IDI1ICAsICVkKSAgUmV0dXJuICglCiAgICAxNzMwOiA2NCAyOSAw
QSAwMCA2OCA2OSA2NyAwMCAwMCAwMCBBNCA2NyAxNCA0RCAyOCA0RCAgZCkuLmhpZy4uLi5nLk0o
TQogICAgMTc0MDogMzEgMzEgMzMgMDkgQTAgNDggMjcgOTIgOTMgNjggMDAgNzAgNEQgMzEgMzAg
MzggIDExMy4uSCcuLmgucE0xMDgKICAgIDE3NTA6IDYwIDcwIDAxIDY3IEEwIDQ4IDI2IDYwIDcy
IDYwIDBBIDEwIDYwIDcwIDAwIDYxICBgcC5nLkgmYHJgLi5gcC5hCiAgICAxNzYwOiA3MCAwMSA2
MiBBMiA0OSAyNSA5MCA5MiA5MyA2MiAwQSBGRiA5MiA5MyA2MiAwMCAgcC5iLkklLi4uYi4uLi5i
LgogICAgMTc3MDogNzAgNEQgMzAgMzEgMzMgNzIgNjAgNjEgMDAgMDAgMDAgMEEgMDggNjIgQTAg
NDcgIHBNMDEzcmBhLi4uLi5iLkcKICAgIDE3ODA6IDIzIDkzIDYyIDY4IDcwIDBBIEZGIDYyIDcw
IDREIDMwIDMxIDMzIDcyIDYwIDYxICAjLmJocC4uYnBNMDEzcmBhCiAgICAxNzkwOiAwMCAwMSAw
MCAwQSAwOCA2MyBBMCAzMiA5MyA2MyAwMCA3MCA0RCAzMCAzMSAzMyAgLi4uLi5jLjIuYy5wTTAx
MwogICAgMTdBMDogNzIgNjAgNjEgMDAgMEEgMDIgMDAgMEEgMjAgNjUgNzAgNEQgMzAgMzEgMzMg
NzIgIHJgYS4uLi4uIGVwTTAxM3IKICAgIDE3QjA6IDYwIDYxIDAwIDBBIDA0IDAwIDBBIDA4IDY2
IDcwIDkzIDREIDMwIDMwIDM5IDdCICBgYS4uLi4uLmZwLk0wMDl7CiAgICAxN0MwOiA2NSAwQyBG
RiBGRiAwMCBGRiAwMCA2NiA2NyBBMCA0MiAwNiA5MyA2MyAwMSA3MCAgZS4uLi4uLmZnLkIuLmMu
cAogICAgMTdEMDogNEQgMzAgMzEgMzMgNzIgNjAgNjEgMDAgMEEgMDIgMDAgMEEgMjAgNjUgNzAg
NEQgIE0wMTNyYGEuLi4uLiBlcE0KICAgIDE3RTA6IDMwIDMxIDMzIDcyIDYwIDYxIDAwIDBBIDA0
IDAwIDBBIDA4IDY2IDcwIDkzIDREICAwMTNyYGEuLi4uLi5mcC5NCiAgICAxN0YwOiAzMCAzMCAz
OSA3QiA2NSAwQyBGRiBGRiAwMCBGRiAwMCA2NiA2NyA3MCA0RCAzMCAgMDA5e2UuLi4uLi5mZ3BN
MAogICAgMTgwMDogMzEgMzMgNzIgNjAgNjEgMDAgMEEgMDYgMDAgMEEgMjAgNjUgNzAgNEQgMzAg
MzEgIDEzcmBhLi4uLi4gZXBNMDEKICAgIDE4MTA6IDMzIDcyIDYwIDYxIDAwIDBBIDA4IDAwIDBB
IDA4IDY2IDdCIDY3IDkzIDREIDMwICAzcmBhLi4uLi4uZntnLk0wCiAgICAxODIwOiAzMCAzOSA3
QiA2NSAwQyBGRiBGRiAwMCBGRiAwMCA2NiA2NyBBMCA0MiAwOSA5MyAgMDl7ZS4uLi4uLmZnLkIu
LgogICAgMTgzMDogNjMgMEEgMDIgNzAgNEQgMzAgMzEgMzMgNzIgNjAgNjEgMDAgMEEgMDIgMDAg
MEEgIGMuLnBNMDEzcmBhLi4uLi4KICAgIDE4NDA6IDIwIDY1IDcwIDREIDMwIDMxIDMzIDcyIDYw
IDYxIDAwIDBBIDA0IDAwIDBBIDA4ICAgZXBNMDEzcmBhLi4uLi4uCiAgICAxODUwOiA2NiA3MCA5
MyA0RCAzMCAzMCAzOSA3QiA2NSAwQyBGRiBGRiAwMCBGRiAwMCA2NiAgZnAuTTAwOXtlLi4uLi4u
ZgogICAgMTg2MDogNjcgNzAgNEQgMzAgMzEgMzMgNzIgNjAgNjEgMDAgMEEgMDYgMDAgMEEgMjAg
NjUgIGdwTTAxM3JgYS4uLi4uIGUKICAgIDE4NzA6IDcwIDREIDMwIDMxIDMzIDcyIDYwIDYxIDAw
IDBBIDA4IDAwIDBBIDA4IDY2IDdCICBwTTAxM3JgYS4uLi4uLmZ7CiAgICAxODgwOiA2NyA5MyA0
RCAzMCAzMCAzOSA3QiA2NSAwQyBGRiBGRiAwMCBGRiAwMCA2NiA2NyAgZy5NMDA5e2UuLi4uLi5m
ZwogICAgMTg5MDogNzAgNEQgMzAgMzEgMzMgNzIgNjAgNjEgMDAgMEEgMEEgMDAgMEEgMjAgNjUg
NzAgIHBNMDEzcmBhLi4uLi4gZXAKICAgIDE4QTA6IDREIDMwIDMxIDMzIDcyIDYwIDYxIDAwIDBB
IDBDIDAwIDBBIDA4IDY2IDdCIDY3ICBNMDEzcmBhLi4uLi4uZntnCiAgICAxOEIwOiA5MyA0RCAz
MCAzMCAzOSA3QiA2NSAwQyBGRiBGRiAwMCBGRiAwMCA2NiA2NyBBMCAgLk0wMDl7ZS4uLi4uLmZn
LgogICAgMThDMDogNDMgMDYgOTMgNjMgMEEgMDMgNzAgNEQgMzAgMzEgMzMgNzIgNjAgNjEgMDAg
MEEgIEMuLmMuLnBNMDEzcmBhLi4KICAgIDE4RDA6IDAyIDAwIDBBIDIwIDY1IDcwIDREIDMwIDMx
IDMzIDcyIDYwIDYxIDAwIDBBIDA0ICAuLi4gZXBNMDEzcmBhLi4uCiAgICAxOEUwOiAwMCAwQSAw
OCA2NiA3MCA5MyA0RCAzMCAzMCAzOSA3QiA2NSAwQyBGRiBGRiAwMCAgLi4uZnAuTTAwOXtlLi4u
LgogICAgMThGMDogRkYgMDAgNjYgNjcgNzAgNEQgMzAgMzEgMzMgNzIgNjAgNjEgMDAgMEEgMDYg
MDAgIC4uZmdwTTAxM3JgYS4uLi4KICAgIDE5MDA6IDBBIDIwIDY1IDcwIDREIDMwIDMxIDMzIDcy
IDYwIDYxIDAwIDBBIDA4IDAwIDBBICAuIGVwTTAxM3JgYS4uLi4uCiAgICAxOTEwOiAwOCA2NiA3
RCA2NyA5MyA0RCAzMCAzMCAzOSA3QiA2NSAwQyBGRiBGRiAwMCBGRiAgLmZ9Zy5NMDA5e2UuLi4u
LgogICAgMTkyMDogMDAgNjYgNjcgQTAgNDIgMDkgOTMgNjMgMEEgMDQgNzAgNEQgMzAgMzEgMzMg
NzIgIC5mZy5CLi5jLi5wTTAxM3IKICAgIDE5MzA6IDYwIDYxIDAwIDBBIDAyIDAwIDBBIDIwIDY1
IDcwIDREIDMwIDMxIDMzIDcyIDYwICBgYS4uLi4uIGVwTTAxM3JgCiAgICAxOTQwOiA2MSAwMCAw
QSAwNCAwMCAwQSAwOCA2NiA3MCA5MyA0RCAzMCAzMCAzOSA3QiA2NSAgYS4uLi4uLmZwLk0wMDl7
ZQogICAgMTk1MDogMEMgRkYgRkYgMDAgRkYgMDAgNjYgNjcgNzAgNEQgMzAgMzEgMzMgNzIgNjAg
NjEgIC4uLi4uLmZncE0wMTNyYGEKICAgIDE5NjA6IDAwIDBBIDA2IDAwIDBBIDIwIDY1IDcwIDRE
IDMwIDMxIDMzIDcyIDYwIDYxIDAwICAuLi4uLiBlcE0wMTNyYGEuCiAgICAxOTcwOiAwQSAwOCAw
MCAwQSAwOCA2NiA3RCA2NyA5MyA0RCAzMCAzMCAzOSA3QiA2NSAwQyAgLi4uLi5mfWcuTTAwOXtl
LgogICAgMTk4MDogRkYgRkYgMDAgRkYgMDAgNjYgNjcgNzAgNEQgMzAgMzEgMzMgNzIgNjAgNjEg
MDAgIC4uLi4uZmdwTTAxM3JgYS4KICAgIDE5OTA6IDBBIDBBIDAwIDBBIDIwIDY1IDcwIDREIDMw
IDMxIDMzIDcyIDYwIDYxIDAwIDBBICAuLi4uIGVwTTAxM3JgYS4uCiAgICAxOUEwOiAwQyAwMCAw
QSAwOCA2NiA3RCA2NyA5MyA0RCAzMCAzMCAzOSA3QiA2NSAwQyBGRiAgLi4uLmZ9Zy5NMDA5e2Uu
LgogICAgMTlCMDogRkYgMDAgRkYgMDAgNjYgNjcgQTEgMDYgNzIgNjEgMEEgMEUgNjEgQTEgMDQg
NzAgIC4uLi5mZy4ucmEuLmEuLnAKICAgIDE5QzA6IDAwIDY3IEEwIDA1IDY3IDcwIDAxIDY3IEE0
IDY3IDA4IDREIDMwIDM0IDM2IDBBICAuZy4uZ3AuZy5nLk0wNDYuCiAgICAxOUQwOiBBQSAwOCA0
RCAzMCAzNCAzNyAwQSBBQSAxNCA0QSA0QiA0RCAzMCAzNCAzNSAwOCAgLi5NMDQ3Li4uSktNMDQ1
LgogICAgMTlFMDogNzAgMDAgNjAgQTAgNDEgNEEgOTEgOTMgNEQgMzAgMzQgMzYgMEEgQUEgOTMg
NEQgIHAuYC5BSi4uTTA0Ni4uLk0KICAgIDE5RjA6IDMwIDM0IDM3IDBBIEFBIDcwIDAwIDREIDMw
IDM0IDM2IEEwIDQ5IDQ4IDVCIDEyICAwNDcuLnAuTTA0Ni5JSFsuCiAgICAxQTAwOiA1QyA1RiA0
RiA1MyA0OSAwMCBBMCA0NSAwNSA1QyA1RiA0RiA1MyA0OSAwRCA0NCAgXF9PU0kuLkUuXF9PU0ku
RAogICAgMUExMDogNjkgNzMgNzAgNkMgNjEgNzkgNEQgNzUgNzggMDAgNzAgMDEgNEQgMzAgMzQg
MzcgIGlzcGxheU11eC5wLk0wNDcKICAgIDFBMjA6IDREIDM0IDM2IDMwIDBEIDIwIDIwIDRCIDQ1
IDUyIDJEIDQxIDUzIDRDIDJEIDVGICBNNDYwLiAgS0VSLUFTTC1fCiAgICAxQTMwOiA0RiA1MyA0
OSAyMCAzRCAyMCA1NCA2OCA2OSA3MyAyMCA0RiA1MyAyMCA2MyA2MSAgT1NJID0gVGhpcyBPUyBj
YQogICAgMUE0MDogNkUgMjAgNzMgNzUgNzAgNzAgNkYgNzIgNzQgMjAgNDQgNjkgNzMgNzAgNkMg
NjEgIG4gc3VwcG9ydCBEaXNwbGEKICAgIDFBNTA6IDc5IDREIDc1IDc4IDBBIDAwIDAwIDAwIDAw
IDAwIDAwIDAwIEExIDQ3IDA0IDcwICB5TXV4Li4uLi4uLi4uRy5wCiAgICAxQTYwOiAwMCA0RCAz
MCAzNCAzNyA0RCAzNCAzNiAzMCAwRCAyMCAyMCA0QiA0NSA1MiAyRCAgLk0wNDdNNDYwLiAgS0VS
LQogICAgMUE3MDogNDEgNTMgNEMgMkQgNUYgNEYgNTMgNDkgMjAgM0QgMjAgNTQgNjggNjkgNzMg
MjAgIEFTTC1fT1NJID0gVGhpcyAKICAgIDFBODA6IDRGIDUzIDIwIDYzIDYxIDZFIDZFIDZGIDc0
IDIwIDczIDc1IDcwIDcwIDZGIDcyICBPUyBjYW5ub3Qgc3VwcG9yCiAgICAxQTkwOiA3NCAyMCA0
NCA2OSA3MyA3MCA2QyA2MSA3OSA0RCA3NSA3OCAwQSAwMCAwMCAwMCAgdCBEaXNwbGF5TXV4Li4u
LgogICAgMUFBMDogMDAgMDAgMDAgMDAgQTAgNDIgMDUgNUMgNUYgNEYgNTMgNDkgMEQgNTcgNjkg
NkUgIC4uLi4uQi5cX09TSS5XaW4KICAgIDFBQjA6IDY0IDZGIDc3IDczIDIwIDMyIDMwIDMyIDMy
IDAwIDcwIDBBIDBDIDREIDMwIDM0ICBkb3dzIDIwMjIucC4uTTA0CiAgICAxQUMwOiAzNiA0RCAz
NCAzNiAzMCAwRCAyMCAyMCA0QiA0NSA1MiAyRCA0MSA1MyA0QyAyRCAgNk00NjAuICBLRVItQVNM
LQogICAgMUFEMDogNUYgNEYgNTMgNDkgMjAgM0QgMjAgNTcgNjkgNkUgNjQgNkYgNzcgNzMgMjAg
MzEgIF9PU0kgPSBXaW5kb3dzIDEKICAgIDFBRTA6IDMxIDJDIDIwIDc2IDY1IDcyIDczIDY5IDZG
IDZFIDIwIDMyIDMyIDQ4IDMyIDBBICAxLCB2ZXJzaW9uIDIySDIuCiAgICAxQUYwOiAwMCAwMCAw
MCAwMCAwMCAwMCAwMCBBMSA0RCAzOCBBMCA0NCAwNCA1QyA1RiA0RiAgLi4uLi4uLi5NOC5ELlxf
TwogICAgMUIwMDogNTMgNDkgMEQgNTcgNjkgNkUgNjQgNkYgNzcgNzMgMjAgMzIgMzAgMzIgMzEg
MDAgIFNJLldpbmRvd3MgMjAyMS4KICAgIDFCMTA6IDcwIDBBIDBCIDREIDMwIDM0IDM2IDREIDM0
IDM2IDMwIDBEIDIwIDIwIDRCIDQ1ICBwLi5NMDQ2TTQ2MC4gIEtFCiAgICAxQjIwOiA1MiAyRCA0
MSA1MyA0QyAyRCA1RiA0RiA1MyA0OSAyMCAzRCAyMCA1NyA2OSA2RSAgUi1BU0wtX09TSSA9IFdp
bgogICAgMUIzMDogNjQgNkYgNzcgNzMgMjAgMzEgMzEgMEEgMDAgMDAgMDAgMDAgMDAgMDAgMDAg
QTEgIGRvd3MgMTEuLi4uLi4uLi4KICAgIDFCNDA6IDQ1IDM0IEEwIDQyIDA1IDVDIDVGIDRGIDUz
IDQ5IDBEIDU3IDY5IDZFIDY0IDZGICBFNC5CLlxfT1NJLldpbmRvCiAgICAxQjUwOiA3NyA3MyAy
MCAzMiAzMCAzMiAzMCAwMCA3MCAwQSAwQSA0RCAzMCAzNCAzNiA0RCAgd3MgMjAyMC5wLi5NMDQ2
TQogICAgMUI2MDogMzQgMzYgMzAgMEQgMjAgMjAgNEIgNDUgNTIgMkQgNDEgNTMgNEMgMkQgNUYg
NEYgIDQ2MC4gIEtFUi1BU0wtX08KICAgIDFCNzA6IDUzIDQ5IDIwIDNEIDIwIDU3IDY5IDZFIDY0
IDZGIDc3IDczIDIwIDMxIDMwIDJDICBTSSA9IFdpbmRvd3MgMTAsCiAgICAxQjgwOiAyMCA3NiA2
NSA3MiA3MyA2OSA2RiA2RSAyMCAzMiAzMCAzMCAzNCAwQSAwMCAwMCAgIHZlcnNpb24gMjAwNC4u
LgogICAgMUI5MDogMDAgMDAgMDAgMDAgMDAgQTEgNEYgMkUgQTAgNDIgMDUgNUMgNUYgNEYgNTMg
NDkgIC4uLi4uLk8uLkIuXF9PU0kKICAgIDFCQTA6IDBEIDU3IDY5IDZFIDY0IDZGIDc3IDczIDIw
IDMyIDMwIDMxIDM5IDAwIDcwIDBBICAuV2luZG93cyAyMDE5LnAuCiAgICAxQkIwOiAwOSA0RCAz
MCAzNCAzNiA0RCAzNCAzNiAzMCAwRCAyMCAyMCA0QiA0NSA1MiAyRCAgLk0wNDZNNDYwLiAgS0VS
LQogICAgMUJDMDogNDEgNTMgNEMgMkQgNUYgNEYgNTMgNDkgMjAgM0QgMjAgNTcgNjkgNkUgNjQg
NkYgIEFTTC1fT1NJID0gV2luZG8KICAgIDFCRDA6IDc3IDczIDIwIDMxIDMwIDJDIDIwIDc2IDY1
IDcyIDczIDY5IDZGIDZFIDIwIDMxICB3cyAxMCwgdmVyc2lvbiAxCiAgICAxQkUwOiAzOSAzMCAz
MyAwQSAwMCAwMCAwMCAwMCAwMCAwMCAwMCBBMSA0OSAyOSBBMCA0NCAgOTAzLi4uLi4uLi4uSSku
RAogICAgMUJGMDogMDUgNUMgNUYgNEYgNTMgNDkgMEQgNTcgNjkgNkUgNjQgNkYgNzcgNzMgMjAg
MzIgIC5cX09TSS5XaW5kb3dzIDIKICAgIDFDMDA6IDMwIDMxIDM4IDJFIDMyIDAwIDcwIDBBIDA4
IDREIDMwIDM0IDM2IDREIDM0IDM2ICAwMTguMi5wLi5NMDQ2TTQ2CiAgICAxQzEwOiAzMCAwRCAy
MCAyMCA0QiA0NSA1MiAyRCA0MSA1MyA0QyAyRCA1RiA0RiA1MyA0OSAgMC4gIEtFUi1BU0wtX09T
SQogICAgMUMyMDogMjAgM0QgMjAgNTcgNjkgNkUgNjQgNkYgNzcgNzMgMjAgMzEgMzAgMkMgMjAg
NzYgICA9IFdpbmRvd3MgMTAsIHYKICAgIDFDMzA6IDY1IDcyIDczIDY5IDZGIDZFIDIwIDMxIDM4
IDMwIDM5IDBBIDAwIDAwIDAwIDAwICBlcnNpb24gMTgwOS4uLi4uCiAgICAxQzQwOiAwMCAwMCAw
MCBBMSA0MSAyNCBBMCA0MiAwNSA1QyA1RiA0RiA1MyA0OSAwRCA1NyAgLi4uLkEkLkIuXF9PU0ku
VwogICAgMUM1MDogNjkgNkUgNjQgNkYgNzcgNzMgMjAgMzIgMzAgMzEgMzggMDAgNzAgMEEgMDcg
NEQgIGluZG93cyAyMDE4LnAuLk0KICAgIDFDNjA6IDMwIDM0IDM2IDREIDM0IDM2IDMwIDBEIDIw
IDIwIDRCIDQ1IDUyIDJEIDQxIDUzICAwNDZNNDYwLiAgS0VSLUFTCiAgICAxQzcwOiA0QyAyRCA1
RiA0RiA1MyA0OSAyMCAzRCAyMCA1NyA2OSA2RSA2NCA2RiA3NyA3MyAgTC1fT1NJID0gV2luZG93
cwogICAgMUM4MDogMjAgMzEgMzAgMkMgMjAgNzYgNjUgNzIgNzMgNjkgNkYgNkUgMjAgMzEgMzgg
MzAgICAxMCwgdmVyc2lvbiAxODAKICAgIDFDOTA6IDMzIDBBIDAwIDAwIDAwIDAwIDAwIDAwIDAw
IEExIDRCIDFFIEEwIDQ0IDA1IDVDICAzLi4uLi4uLi4uSy4uRC5cCiAgICAxQ0EwOiA1RiA0RiA1
MyA0OSAwRCA1NyA2OSA2RSA2NCA2RiA3NyA3MyAyMCAzMiAzMCAzMSAgX09TSS5XaW5kb3dzIDIw
MQogICAgMUNCMDogMzcgMkUgMzIgMDAgNzAgMEEgMDYgNEQgMzAgMzQgMzYgNEQgMzQgMzYgMzAg
MEQgIDcuMi5wLi5NMDQ2TTQ2MC4KICAgIDFDQzA6IDIwIDIwIDRCIDQ1IDUyIDJEIDQxIDUzIDRD
IDJEIDVGIDRGIDUzIDQ5IDIwIDNEICAgIEtFUi1BU0wtX09TSSA9CiAgICAxQ0QwOiAyMCA1NyA2
OSA2RSA2NCA2RiA3NyA3MyAyMCAzMSAzMCAyQyAyMCA3NiA2NSA3MiAgIFdpbmRvd3MgMTAsIHZl
cgogICAgMUNFMDogNzMgNjkgNkYgNkUgMjAgMzEgMzcgMzAgMzkgMEEgMDAgMDAgMDAgMDAgMDAg
MDAgIHNpb24gMTcwOS4uLi4uLi4KICAgIDFDRjA6IDAwIEExIDQzIDE5IEEwIDQyIDA1IDVDIDVG
IDRGIDUzIDQ5IDBEIDU3IDY5IDZFICAuLkMuLkIuXF9PU0kuV2luCiAgICAxRDAwOiA2NCA2RiA3
NyA3MyAyMCAzMiAzMCAzMSAzNyAwMCA3MCAwQSAwNSA0RCAzMCAzNCAgZG93cyAyMDE3LnAuLk0w
NAogICAgMUQxMDogMzYgNEQgMzQgMzYgMzAgMEQgMjAgMjAgNEIgNDUgNTIgMkQgNDEgNTMgNEMg
MkQgIDZNNDYwLiAgS0VSLUFTTC0KICAgIDFEMjA6IDVGIDRGIDUzIDQ5IDIwIDNEIDIwIDU3IDY5
IDZFIDY0IDZGIDc3IDczIDIwIDMxICBfT1NJID0gV2luZG93cyAxCiAgICAxRDMwOiAzMCAyQyAy
MCA3NiA2NSA3MiA3MyA2OSA2RiA2RSAyMCAzMSAzNyAzMCAzMyAwQSAgMCwgdmVyc2lvbiAxNzAz
LgogICAgMUQ0MDogMDAgMDAgMDAgMDAgMDAgMDAgMDAgQTEgNEQgMTMgQTAgNDIgMDUgNUMgNUYg
NEYgIC4uLi4uLi4uTS4uQi5cX08KICAgIDFENTA6IDUzIDQ5IDBEIDU3IDY5IDZFIDY0IDZGIDc3
IDczIDIwIDMyIDMwIDMxIDM2IDAwICBTSS5XaW5kb3dzIDIwMTYuCiAgICAxRDYwOiA3MCAwQSAw
NCA0RCAzMCAzNCAzNiA0RCAzNCAzNiAzMCAwRCAyMCAyMCA0QiA0NSAgcC4uTTA0Nk00NjAuICBL
RQogICAgMUQ3MDogNTIgMkQgNDEgNTMgNEMgMkQgNUYgNEYgNTMgNDkgMjAgM0QgMjAgNTcgNjkg
NkUgIFItQVNMLV9PU0kgPSBXaW4KICAgIDFEODA6IDY0IDZGIDc3IDczIDIwIDMxIDMwIDJDIDIw
IDc2IDY1IDcyIDczIDY5IDZGIDZFICBkb3dzIDEwLCB2ZXJzaW9uCiAgICAxRDkwOiAyMCAzMSAz
NiAzMCAzNyAwQSAwMCAwMCAwMCAwMCAwMCAwMCAwMCBBMSA0NyAwRSAgIDE2MDcuLi4uLi4uLi5H
LgogICAgMURBMDogQTAgNDQgMDQgNUMgNUYgNEYgNTMgNDkgMEQgNTcgNjkgNkUgNjQgNkYgNzcg
NzMgIC5ELlxfT1NJLldpbmRvd3MKICAgIDFEQjA6IDIwIDMyIDMwIDMxIDM1IDAwIDcwIDBBIDAz
IDREIDMwIDM0IDM2IDREIDM0IDM2ICAgMjAxNS5wLi5NMDQ2TTQ2CiAgICAxREMwOiAzMCAwRCAy
MCAyMCA0QiA0NSA1MiAyRCA0MSA1MyA0QyAyRCA1RiA0RiA1MyA0OSAgMC4gIEtFUi1BU0wtX09T
SQogICAgMUREMDogMjAgM0QgMjAgNTcgNjkgNkUgNjQgNkYgNzcgNzMgMjAgMzEgMzAgMEEgMDAg
MDAgICA9IFdpbmRvd3MgMTAuLi4KICAgIDFERTA6IDAwIDAwIDAwIDAwIDAwIEExIDRGIDA5IEEw
IDQ1IDA0IDVDIDVGIDRGIDUzIDQ5ICAuLi4uLi5PLi5FLlxfT1NJCiAgICAxREYwOiAwRCA1NyA2
OSA2RSA2NCA2RiA3NyA3MyAyMCAzMiAzMCAzMSAzMyAwMCA3MCAwQSAgLldpbmRvd3MgMjAxMy5w
LgogICAgMUUwMDogMDIgNEQgMzAgMzQgMzYgNEQgMzQgMzYgMzAgMEQgMjAgMjAgNEIgNDUgNTIg
MkQgIC5NMDQ2TTQ2MC4gIEtFUi0KICAgIDFFMTA6IDQxIDUzIDRDIDJEIDVGIDRGIDUzIDQ5IDIw
IDNEIDIwIDU3IDY5IDZFIDY0IDZGICBBU0wtX09TSSA9IFdpbmRvCiAgICAxRTIwOiA3NyA3MyAy
MCAzOCAyRSAzMSAwQSAwMCAwMCAwMCAwMCAwMCAwMCAwMCBBMSA0NiAgd3MgOC4xLi4uLi4uLi4u
RgogICAgMUUzMDogMDUgQTAgNDMgMDUgNUMgNUYgNEYgNTMgNDkgMEQgNTcgNjkgNkUgNjQgNkYg
NzcgIC4uQy5cX09TSS5XaW5kb3cKICAgIDFFNDA6IDczIDIwIDMyIDMwIDMxIDMyIDAwIDcwIDAx
IDREIDMwIDM0IDM2IDREIDM0IDM2ICBzIDIwMTIucC5NMDQ2TTQ2CiAgICAxRTUwOiAzMCAwRCAy
MCAyMCA0QiA0NSA1MiAyRCA0MSA1MyA0QyAyRCA1RiA0RiA1MyA0OSAgMC4gIEtFUi1BU0wtX09T
SQogICAgMUU2MDogMjAgM0QgMjAgNTcgNjkgNkUgNjQgNkYgNzcgNzMgMjAgMzggMkMgMjAgNTcg
NjkgICA9IFdpbmRvd3MgOCwgV2kKICAgIDFFNzA6IDZFIDIwIDUzIDY1IDcyIDc2IDY1IDcyIDIw
IDMyIDMwIDMxIDMyIDBBIDAwIDAwICBuIFNlcnZlciAyMDEyLi4uCiAgICAxRTgwOiAwMCAwMCAw
MCAwMCAwMCBBMCAwQiA5MiA5NSA0RCAzMCAzNCAzNiAwMSA3MCAwMSAgLi4uLi4uLi4uTTA0Ni5w
LgogICAgMUU5MDogNjAgQTQgNjAgNUIgODAgNTYgNDEgNTIgNTcgMDAgMEMgMEMgMDIgRDggRkUg
MEEgIGAuYFsuVkFSVy4uLi4uLi4KICAgIDFFQTA6IDE0IDVCIDgxIDE4IDU2IDQxIDUyIDU3IDAz
IDU2IDQxIDMwIDQzIDIwIDAwIDQwICAuWy4uVkFSVy5WQTBDIC5ACiAgICAxRUIwOiAwNCA1NiA0
MSAzMSAzOCAyMCA1NiA0MSAzMSA0MyAyMCAxNCA0MiAwOCA0RCAzMiAgLlZBMTggVkExQyAuQi5N
MgogICAgMUVDMDogMzIgNDEgMDkgNEQgMzQgMzYgMzAgMEQgMjAgMjAgNEIgNDUgNTIgMkQgNDEg
NTMgIDJBLk00NjAuICBLRVItQVMKICAgIDFFRDA6IDRDIDJEIDQzIDcwIDZEIDU0IDcyIDY5IDY3
IDY3IDY1IDcyIDUzIDYzIDY5IDIwICBMLUNwbVRyaWdnZXJTY2kgCiAgICAxRUUwOiAyOCAyNSA2
NCAyOSAwQSAwMCA2OCAwMCAwMCAwMCAwMCAwMCA3OSAwMSA2OCA2MCAgKCVkKS4uaC4uLi4ueS5o
YAogICAgMUVGMDogNzAgMEMgRkYgRkYgRkYgN0YgNjEgN0QgNjEgMEMgMDAgMDAgMDAgODAgNjEg
N0YgIHAuLi4uLmF9YS4uLi4uYS4KICAgIDFGMDA6IDYxIDYwIDYxIDdCIDU2IDQxIDMwIDQzIDYx
IDU2IDQxIDMwIDQzIDdEIDdCIDU2ICBhYGF7VkEwQ2FWQTBDfXtWCiAgICAxRjEwOiA0MSAzMSAz
OCA2MSAwMCA2MCA1NiA0MSAzMSAzOCA3RCA3QiA1NiA0MSAzMSA0MyAgQTE4YS5gVkExOH17VkEx
QwogICAgMUYyMDogNjEgMDAgNjAgNTYgNDEgMzEgNDMgNUIgMjIgMDEgN0IgNTYgNDEgMzEgNDMg
NjEgIGEuYFZBMUNbIi57VkExQ2EKICAgIDFGMzA6IDU2IDQxIDMxIDQzIDdCIDU2IDQxIDMxIDM4
IDYxIDU2IDQxIDMxIDM4IDVCIDAxICBWQTFDe1ZBMThhVkExOFsuCiAgICAxRjQwOiA0RCAzMiAz
MyAzMCAwMCAxNCA0OSAwOCA0RCAzMiAzMyAzMiAwQiA3MCA2OCA2MCAgTTIzMC4uSS5NMjMyLnBo
YAogICAgMUY1MDogNzAgNjkgNjEgNzAgNkEgNjIgNEQgMzQgMzYgMzAgMEQgMjAgMjAgNEIgNDUg
NTIgIHBpYXBqYk00NjAuICBLRVIKICAgIDFGNjA6IDJEIDQxIDUzIDRDIDJEIDQzIDcwIDZEIDU0
IDcyIDY5IDY3IDY3IDY1IDcyIDUzICAtQVNMLUNwbVRyaWdnZXJTCiAgICAxRjcwOiA2RCA2OSAy
MCAyOCAzMCA3OCAyNSA1OCAyQyAyMCAzMCA3OCAyNSA1OCAyQyAyMCAgbWkgKDB4JVgsIDB4JVgs
IAogICAgMUY4MDogMjUgNjQgMjkgMEEgMDAgNjggNjkgNkEgMDAgMDAgMDAgNUIgMjMgNEQgMzIg
MzMgICVkKS4uaGlqLi4uWyNNMjMKICAgIDFGOTA6IDMwIEZGIEZGIDcwIDY4IDYwIDVCIDgwIDU2
IDQxIDUyIDREIDAxIDREIDMyIDMzICAwLi5waGBbLlZBUk0uTTIzCiAgICAxRkEwOiAzMSAwQSAw
MiA1QiA4MSAxMCA1NiA0MSA1MiA0RCAwMSA1NiA0MSA1MiAzMSAwOCAgMS4uWy4uVkFSTS5WQVIx
LgogICAgMUZCMDogNTYgNDEgNTIgMzIgMDggNzAgNjEgNTYgNDEgNTIgMzIgNzAgNjAgNTYgNDEg
NTIgIFZBUjIucGFWQVIycGBWQVIKICAgIDFGQzA6IDMxIEEwIDA3IDk0IDYyIDAwIDVCIDIyIDYy
IDVCIDI3IDREIDMyIDMzIDMwIDE0ICAxLi4uYi5bImJbJ00yMzAuCiAgICAxRkQwOiAxQiA0RCAz
MCAzNCAzMyAwQiBBMCAxMCA1QiAxMiA0RCA0RiA0NSA0RCAwMCBBNCAgLk0wNDMuLi5bLk1PRU0u
LgogICAgMUZFMDogNEQgNEYgNDUgNEQgNjggNjkgNkEgQTEgMDMgQTQgMDAgMTQgNDEgMDggNEQg
NEMgIE1PRU1oaWouLi4uLkEuTUwKICAgIDFGRjA6IDQ5IDQyIDBBIDA4IDVGIDU0IDVGIDMxIDAw
IDA4IDVGIDU0IDVGIDMwIDAwIEEyICBJQi4uX1RfMS4uX1RfMC4uCiAgICAyMDAwOiA0RCAwNiAw
MSA3MCA5OSA2OCAwMCA1RiA1NCA1RiAzMCBBMCA0MCAwNiA5MyA1RiAgTS4ucC5oLl9UXzAuQC4u
XwogICAgMjAxMDogNTQgNUYgMzAgMDAgNzAgODMgODggNjkgMEEgMDIgMDAgNjAgQTIgNEYgMDQg
MDEgIFRfMC5wLi5pLi4uYC5PLi4KICAgIDIwMjA6IDcwIDk5IDYwIDAwIDVGIDU0IDVGIDMxIEEw
IDE0IDkzIDVGIDU0IDVGIDMxIDBBICBwLmAuX1RfMS4uLl9UXzEuCiAgICAyMDMwOiAwMyA0RCAz
MiAzMiAzOCAwQSAwNCA0RCAzMiAzMiAzOCAwQSAwNSBBMSAyRCBBMCAgLk0yMjguLk0yMjguLi4t
LgogICAgMjA0MDogMTQgOTMgNUYgNTQgNUYgMzEgMEEgMDQgNEQgMzIgMzIgMzggMEEgMDQgNEQg
MzIgIC4uX1RfMS4uTTIyOC4uTTIKICAgIDIwNTA6IDMyIDM4IDBBIDA2IEExIDE2IEEwIDE0IDkz
IDVGIDU0IDVGIDMxIDBBIDA1IDREICAyOC4uLi4uLi5fVF8xLi5NCiAgICAyMDYwOiAzMiAzMiAz
OCAwQSAwNCA0RCAzMiAzMiAzOCAwQSAwNyBBNSBBNSAxNCA0OSAxMCAgMjI4Li5NMjI4Li4uLi5J
LgogICAgMjA3MDogNEQgMzQgMzUgMzggMDEgOTkgNEQgMzQgMzUgMzMgNjAgQTAgNEUgMDcgOTQg
NjAgIE00NTguLk00NTNgLk4uLmAKICAgIDIwODA6IDBCIEZGIEZGIDVCIDgwIDU2IDQxIDUyIDRE
IDAwIDYwIDBBIDIwIDVCIDgxIDFBICAuLi5bLlZBUk0uYC4gWy4uCiAgICAyMDkwOiA1NiA0MSA1
MiA0RCAwMSA1NCA0OCA1MiA0RCAwOCAwMCA0OCAwOSA0QyA1MyA1MiAgVkFSTS5USFJNLi5ILkxT
UgogICAgMjBBMDogNEQgMDggMDAgMTggNEQgNTMgNTIgNEQgMDggNzAgMEMgODAgODQgMUUgMDAg
NjEgIE0uLi5NU1JNLnAuLi4uLmEKICAgIDIwQjA6IEEyIDE1IDkwIDk0IDYxIDAwIDkyIDkzIDdC
IDRDIDUzIDUyIDREIDBBIDYwIDAwICAuLi4uYS4uLntMU1JNLmAuCiAgICAyMEMwOiAwQSA2MCA3
NCA2MSAwMSA2MSBBMCAyNSA5MiA5MyA0RCAzNCAzNSAzNyAwMCA3MCAgLmB0YS5hLiUuLk00NTcu
cAogICAgMjBEMDogMEMgODAgODQgMUUgMDAgNjIgQTIgMTUgOTAgOTQgNjIgMDAgOTIgOTMgN0Ig
NEQgIC4uLi4uYi4uLi5iLi4ue00KICAgIDIwRTA6IDUzIDUyIDREIDBBIDEwIDAwIDBBIDEwIDc0
IDYyIDAxIDYyIEEwIDBEIDkyIDkzICBTUk0uLi4uLnRiLmIuLi4uCiAgICAyMEYwOiA2MSAwMCA3
MCA2OCA1NCA0OCA1MiA0RCBBNCAwMCBBMSA0OSAwNyBBMCA0NiAwNyAgYS5waFRIUk0uLi5JLi5G
LgogICAgMjEwMDogOTQgNjAgMDAgOEIgNEQgMzIgMzggMzUgMEEgMDIgNEQgMzIgMzggMzggNUIg
ODAgIC5gLi5NMjg1Li5NMjg4Wy4KICAgIDIxMTA6IDU2IDQxIDUyIDRFIDAxIDYwIDBBIDA4IDVC
IDgxIDEyIDU2IDQxIDUyIDRFIDAxICBWQVJOLmAuLlsuLlZBUk4uCiAgICAyMTIwOiA1NCA0OCA1
MiA0OSAwOCAwMCAyMCA0QyA1MyA1MiA0OSAwOCA3MCAwQyA4MCA4NCAgVEhSSS4uIExTUkkucC4u
LgogICAgMjEzMDogMUUgMDAgNjEgQTAgMzIgOTIgOTMgOTkgNEQgMzIgMzggMzggMDAgNjAgQTIg
MjcgIC4uYS4yLi4uTTI4OC5gLicKICAgIDIxNDA6IDkwIDk0IDYxIDAwIDkyIDkzIDdCIDRDIDUz
IDUyIDQ5IDBBIEUwIDAwIDBBIDYwICAuLmEuLi57TFNSSS4uLi5gCiAgICAyMTUwOiBBMCAxMSA5
MyA0QyA1MyA1MiA0OSAwQSBGRiA3MCAwMCA0RCAzNCAzNSAzMyA3MCAgLi4uTFNSSS4ucC5NNDUz
cAogICAgMjE2MDogMDEgNjEgNzQgNjEgMDEgNjEgQTAgMEQgOTIgOTMgNjEgMDAgNzAgNjggNTQg
NDggIC5hdGEuYS4uLi5hLnBoVEgKICAgIDIxNzA6IDUyIDQ5IEE0IDAwIEE0IDBBIEZGIDE0IDQ0
IDBEIDREIDM0IDM1IDM5IDAyIDk5ICBSSS4uLi4uLkQuTTQ1OS4uCiAgICAyMTgwOiA0RCAzNCAz
NSAzMyA2MCBBMCAwNyA5MyA2MCAwMCBBNCAwQSBGRiBBMSA0MSAwOSAgTTQ1M2AuLi5gLi4uLi5B
LgogICAgMjE5MDogQTAgNEUgMDggOTQgNjAgMEIgRkYgRkYgNUIgODAgNTYgNDEgNTIgNEQgMDAg
NjAgIC5OLi5gLi4uWy5WQVJNLmAKICAgIDIxQTA6IDBBIDIwIDVCIDgxIDI3IDU2IDQxIDUyIDRE
IDAxIDQ0IDRDIDRDIDREIDA4IDAwICAuIFsuJ1ZBUk0uRExMTS4uCiAgICAyMUIwOiAxOCA0NCA0
QyA0OCA0RCAwOCAwMCAxOCA0NiA0MyA1MiA0RCAwOCAwMCAxOCA0QyAgLkRMSE0uLi5GQ1JNLi4u
TAogICAgMjFDMDogNDMgNTIgNEQgMDggMDAgMTggNEQgNDMgNTIgNEQgMDggQTAgNDMgMDUgOTIg
OTMgIENSTS4uLk1DUk0uLkMuLi4KICAgIDIxRDA6IDdCIDRDIDQzIDUyIDREIDBBIDNGIDAwIDRE
IDM0IDM1IDM1IDcwIDBBIDgwIDRDICB7TENSTS4/Lk00NTVwLi5MCiAgICAyMUUwOiA0MyA1MiA0
RCA3QSA0RCAzNCAzNSAzNCAwQSAwOCA0NCA0QyA0OCA0RCA3MCA3QiAgQ1JNek00NTQuLkRMSE1w
ewogICAgMjFGMDogNEQgMzQgMzUgMzQgMEEgRkYgMDAgNDQgNEMgNEMgNEQgNzAgNEQgMzQgMzUg
MzUgIE00NTQuLi5ETExNcE00NTUKICAgIDIyMDA6IDRDIDQzIDUyIDREIDcwIDAwIDQ2IDQzIDUy
IDREIDcwIDREIDM0IDM1IDM2IDQ2ICBMQ1JNcC5GQ1JNcE00NTZGCiAgICAyMjEwOiA0MyA1MiA0
RCA3MCAwMCA0NCA0QyA0OCA0RCA3MCAwMCA0RCA0MyA1MiA0RCA3MCAgQ1JNcC5ETEhNcC5NQ1JN
cAogICAgMjIyMDogODcgNjggNjAgOTkgNjkgNjEgNzAgMDAgNjIgOTYgNjggNjMgQTAgMUQgOTIg
OTMgIC5oYC5pYXAuYi5oYy4uLi4KICAgIDIyMzA6IDYwIDAwIEEyIDE3IDkwIDk0IDYwIDYxIDkz
IDYyIDAwIDcwIDREIDM0IDM1IDM4ICBgLi4uLi5gYS5iLnBNNDU4CiAgICAyMjQwOiA4MyA4OCA2
MyA2MSAwMCA2MiA3MiA2MSAwMSA2MSBBNCA2MiAxNCA0NyAyMCA0RCAgLi5jYS5icmEuYS5iLkcg
TQogICAgMjI1MDogMzQgMzYgMzAgMEYgOEIgNEQgMzIgMzggMzUgMEEgMDIgNEQgMzIgMzggMzgg
OTkgIDQ2MC4uTTI4NS4uTTI4OC4KICAgIDIyNjA6IDREIDM0IDM1IDMzIDY3IEEwIDA3IDkzIDY3
IDAwIEE0IDBBIEZGIEExIDRFIDBCICBNNDUzZy4uLmcuLi4uLk4uCiAgICAyMjcwOiBBMCA0RSAw
OCA5NCA2NyAwQiBGRiBGRiA1QiA4MCA1NiA0MSA1MiA0RCAwMCA2NyAgLk4uLmcuLi5bLlZBUk0u
ZwogICAgMjI4MDogMEEgMjAgNUIgODEgMjcgNTYgNDEgNTIgNEQgMDEgNDQgNEMgNEMgNEQgMDgg
MDAgIC4gWy4nVkFSTS5ETExNLi4KICAgIDIyOTA6IDE4IDQ0IDRDIDQ4IDREIDA4IDAwIDE4IDQ2
IDQzIDUyIDREIDA4IDAwIDE4IDRDICAuRExITS4uLkZDUk0uLi5MCiAgICAyMkEwOiA0MyA1MiA0
RCAwOCAwMCAxOCA0RCA0MyA1MiA0RCAwOCBBMCA0MyAwNSA5MiA5MyAgQ1JNLi4uTUNSTS4uQy4u
LgogICAgMjJCMDogN0IgNEMgNDMgNTIgNEQgMEEgM0YgMDAgNEQgMzQgMzUgMzUgNzAgMEEgODAg
NEMgIHtMQ1JNLj8uTTQ1NXAuLkwKICAgIDIyQzA6IDQzIDUyIDREIDdBIDREIDM0IDM1IDM0IDBB
IDA4IDQ0IDRDIDQ4IDREIDcwIDdCICBDUk16TTQ1NC4uRExITXB7CiAgICAyMkQwOiA0RCAzNCAz
NSAzNCAwQSBGRiAwMCA0NCA0QyA0QyA0RCA3MCA0RCAzNCAzNSAzNSAgTTQ1NC4uLkRMTE1wTTQ1
NQogICAgMjJFMDogNEMgNDMgNTIgNEQgNzAgMDAgNDYgNDMgNTIgNEQgNzAgNEQgMzQgMzUgMzYg
NDYgIExDUk1wLkZDUk1wTTQ1NkYKICAgIDIyRjA6IDQzIDUyIDREIDcwIDAwIDQ0IDRDIDQ4IDRE
IDcwIDAwIDREIDQzIDUyIDREIEExICBDUk1wLkRMSE1wLk1DUk0uCiAgICAyMzAwOiAyQyBBMCAy
QSA5MyA5OSA0RCAzMiAzOCAzOCAwMCA2NyA1QiA4MCA1NiA0MSA1MiAgLC4qLi5NMjg4LmdbLlZB
UgogICAgMjMxMDogNTMgMDEgNjcgMEEgMDQgNUIgODEgMEIgNTYgNDEgNTIgNTMgMDMgNTYgNDEg
NTIgIFMuZy4uWy4uVkFSUy5WQVIKICAgIDIzMjA6IDU0IDIwIDcwIDBDIDUyIDU0IDUzIDVGIDU2
IDQxIDUyIDU0IDcwIDg3IDY4IDYwICBUIHAuUlRTX1ZBUlRwLmhgCiAgICAyMzMwOiA3MCAwMCA2
MSA3MCAwMCA2MiA3MCAwMSA2NSA5NiA2OCA2MyBBMCA0QSAwRSA5MiAgcC5hcC5icC5lLmhjLkou
LgogICAgMjM0MDogOTMgNjAgMDAgQTIgNDMgMEUgOTAgOTQgNjAgNjEgOTMgNjIgMDAgNzAgODMg
ODggIC5gLi5DLi4uYGEuYi5wLi4KICAgIDIzNTA6IDYzIDYxIDAwIDY0IEEwIDREIDBBIDkwIDkz
IDY0IDBBIDI1IDk0IDBBIDA3IDY1ICBjYS5kLk0uLi5kLiUuLi5lCiAgICAyMzYwOiBBMCAwNyA5
MyA2NSAwMSA3MCA2OSA2NiBBMSAzNiBBMCAwOCA5MyA2NSAwQSAwMiAgLi4uZS5waWYuNi4uLmUu
LgogICAgMjM3MDogNzAgNkEgNjYgQTEgMkIgQTAgMDggOTMgNjUgMEEgMDMgNzAgNkIgNjYgQTEg
MjAgIHBqZi4rLi4uZS4ucGtmLiAKICAgIDIzODA6IEEwIDA4IDkzIDY1IDBBIDA0IDcwIDZDIDY2
IEExIDE1IEEwIDA4IDkzIDY1IDBBICAuLi5lLi5wbGYuLi4uLmUuCiAgICAyMzkwOiAwNSA3MCA2
RCA2NiBBMSAwQSBBMCAwOCA5MyA2NSAwQSAwNiA3MCA2RSA2NiA3MiAgLnBtZi4uLi4uZS4ucG5m
cgogICAgMjNBMDogNjUgMDEgNjUgNzIgNjEgMDEgNjEgNzAgODMgODggNjMgNjEgMDAgNjQgQTAg
MTUgIGUuZXJhLmFwLi5jYS5kLi4KICAgIDIzQjA6IDkxIDkzIDY0IDBBIDU4IDkzIDY0IDBBIDc4
IDcwIDREIDM0IDM1IDM5IDk4IDY2ICAuLmQuWC5kLnhwTTQ1OS5mCiAgICAyM0MwOiAwMCAwQSAw
MiA2MiBBMSAzRCBBMCAxNCA5MSA5MyA2NCAwQSA0NCA5MyA2NCAwQSAgLi4uYi49Li4uLmQuRC5k
LgogICAgMjNEMDogNjQgNzAgNEQgMzQgMzUgMzkgOTcgNjYgMDAgMDAgNjIgQTEgMjYgQTAgMTIg
OTEgIGRwTTQ1OS5mLi5iLiYuLi4KICAgIDIzRTA6IDkzIDY0IDBBIDUzIDkzIDY0IDBBIDczIDcw
IDREIDM0IDM1IDM5IDY2IDAwIDYyICAuZC5TLmQuc3BNNDU5Zi5iCiAgICAyM0YwOiBBMSAxMSA3
MCA0RCAzNCAzNSAzOCAwQSAyNSA2MiA3NCA2NSAwMSA2NSA3NCA2MSAgLi5wTTQ1OC4lYnRlLmV0
YQogICAgMjQwMDogMDEgNjEgQTEgMjAgQTAgMTUgOTMgNjQgMEEgMEEgNzAgNEQgMzQgMzUgMzgg
MEEgIC5hLiAuLi5kLi5wTTQ1OC4KICAgIDI0MTA6IDBEIDYyIDcwIDREIDM0IDM1IDM4IDBBIDBB
IDYyIEExIDA4IDcwIDREIDM0IDM1ICAuYnBNNDU4Li5iLi5wTTQ1CiAgICAyNDIwOiAzOCA2NCA2
MiA3MiA2MSAwMSA2MSBBMCAyQSA5MyA5OSA0RCAzMiAzOCAzOCAwMCAgOGRicmEuYS4qLi5NMjg4
LgogICAgMjQzMDogNjcgNUIgODAgNTYgNDEgNTIgNTUgMDEgNjcgMEEgMDQgNUIgODEgMEIgNTYg
NDEgIGdbLlZBUlUuZy4uWy4uVkEKICAgIDI0NDA6IDUyIDU1IDAzIDU2IDQxIDUyIDU2IDIwIDcw
IDBDIDQ0IDRFIDQ1IDVGIDU2IDQxICBSVS5WQVJWIHAuRE5FX1ZBCiAgICAyNDUwOiA1MiA1NiBB
NCA2MiAwOCA0RCAzNCAzMCAzNCAxMSAwQSAwQSAwNyAwMCAwMiAwNiAgUlYuYi5NNDA0Li4uLi4u
LgogICAgMjQ2MDogMDggMDQgMEEgMEMgMTQgNDUgMTAgNEQgMzQgMzAgMzUgMEQgQTAgNEIgMDkg
OTIgIC4uLi4uRS5NNDA1Li5LLi4KICAgIDI0NzA6IDk1IDREIDMwIDM4IDM1IDBBIDA0IEEwIDQw
IDA1IDkzIDREIDMwIDM4IDM1IDBBICAuTTA4NS4uLkAuLk0wODUuCiAgICAyNDgwOiAwOCA3MCA4
MyA4OCA0RCAzNCAzMCAzNCA2QyAwMCA2MSBBMCAxRiA5MSA5NCA2OCAgLnAuLk00MDRsLmEuLi4u
aAogICAgMjQ5MDogMDAgOTQgNjkgMDAgNzAgNEQgMzIgMzQgMzkgNjggNjkgNkEgMEMgMDAgMUUg
RDAgIC4uaS5wTTI0OWhpai4uLi4KICAgIDI0QTA6IDAyIDYwIDdBIDYwIDYxIDYwIDdCIDYwIDBB
IDAzIDYwIEExIDFDIDcwIDREIDMwICAuYHpgYWB7YC4uYC4ucE0wCiAgICAyNEIwOiAzMSAzMSA3
MiA0RCAzMCAzOCAzNCAwQiAwMCAwRSAwMCA3QSA2MSAwQSAwOCAwMCAgMTFyTTA4NC4uLi56YS4u
LgogICAgMjRDMDogN0IgNjEgMEEgMDcgMDAgMEEgMDIgNjAgQTEgM0YgQTAgMjAgOTMgNkIgMEEg
MDIgIHthLi4uLi5gLj8uIC5rLi4KICAgIDI0RDA6IDcwIDREIDMwIDMxIDMxIDcyIDREIDMwIDM4
IDM0IDBCIDAwIDEzIDAwIDdBIDYxICBwTTAxMXJNMDg0Li4uLnphCiAgICAyNEUwOiAwQSAwOCAw
MCA3QiA2MSAwQSAwNyAwMCAwQSAwMiA2MCBBMSAxQyA3MCA0RCAzMCAgLi4ue2EuLi4uLmAuLnBN
MAogICAgMjRGMDogMzEgMzEgNzIgNEQgMzAgMzggMzQgMEIgMDAgMEUgMDAgN0EgNjEgMEEgMDgg
MDAgIDExck0wODQuLi4uemEuLi4KICAgIDI1MDA6IDdCIDYxIDBBIDA3IDAwIDBBIDAyIDYwIEEx
IDFFIDcwIDREIDMwIDMxIDMxIDcyICB7YS4uLi4uYC4ucE0wMTFyCiAgICAyNTEwOiA0RCAzMCAz
OCAzNCAwQiAwMCAwRSAwMCA3QSA2QyAwMSAwMCA3OSA3QiA2QyAwMSAgTTA4NC4uLi56bC4ueXts
LgogICAgMjUyMDogMDAgMEEgMDIgMDAgMEEgMDQgNjAgNEQgMzQgMzYgMzAgMEQgMjAgMjAgNEIg
NDUgIC4uLi4uLmBNNDYwLiAgS0UKICAgIDI1MzA6IDUyIDJEIDQxIDUzIDRDIDJEIDQzIDcwIDZE
IDUyIDY1IDYxIDY0IDQzIDZDIDZCICBSLUFTTC1DcG1SZWFkQ2xrCiAgICAyNTQwOiA1MiA2NSA3
MSAyMCAyMCAyOCAyNSA2NCAyQyAyMCAyNSA2NCAyQyAyMCAyNSA2NCAgUmVxICAoJWQsICVkLCAl
ZAogICAgMjU1MDogMkMgMjAgMjUgNjQgMkMgMjAgMjUgNjQgMjkgMjAgM0QgMjAgMzAgNzggMjUg
NTggICwgJWQsICVkKSA9IDB4JVgKICAgIDI1NjA6IDBBIDAwIDY4IDY5IDZBIDZCIDZDIDYwIEE0
IDYwIDE0IDQ4IDExIDREIDM0IDMwICAuLmhpamtsYC5gLkguTTQwCiAgICAyNTcwOiAzNiAwRSA0
RCAzNCAzNiAzMCAwRCAyMCAyMCA0QiA0NSA1MiAyRCA0MSA1MyA0QyAgNi5NNDYwLiAgS0VSLUFT
TAogICAgMjU4MDogMkQgNDMgNzAgNkQgNTcgNzIgNjkgNzQgNjUgNDMgNkMgNkIgNTIgNjUgNzEg
MjAgIC1DcG1Xcml0ZUNsa1JlcSAKICAgIDI1OTA6IDI4IDI1IDY0IDJDIDIwIDI1IDY0IDJDIDIw
IDI1IDY0IDJDIDIwIDI1IDY0IDJDICAoJWQsICVkLCAlZCwgJWQsCiAgICAyNUEwOiAyMCAyNSA2
NCAyQyAyMCAzMCA3OCAyNSA1OCAyOSAwQSAwMCA2OCA2OSA2QSA2QiAgICVkLCAweCVYKS4uaGlq
awogICAgMjVCMDogNkMgNkQgQTAgNDIgMEIgOTIgOTUgNEQgMzAgMzggMzUgMEEgMDQgQTAgNDkg
MDYgIGxtLkIuLi5NMDg1Li4uSS4KICAgIDI1QzA6IDkzIDREIDMwIDM4IDM1IDBBIDA4IDcwIDgz
IDg4IDREIDM0IDMwIDM0IDZDIDAwICAuTTA4NS4ucC4uTTQwNGwuCiAgICAyNUQwOiA2MSBBMCAz
OSA5MSA5NCA2OCAwMCA5NCA2OSAwMCA3MCA0RCAzMiAzNCAzOSA2OCAgYS45Li5oLi5pLnBNMjQ5
aAogICAgMjVFMDogNjkgNkEgMEMgMDAgMUUgRDAgMDIgNjAgN0IgNjAgN0YgMEMgRkYgRkYgRkYg
RkYgIGlqLi4uLi5ge2AuLi4uLi4KICAgIDI1RjA6IDc5IDBBIDAzIDYxIDAwIDAwIDYwIDdEIDYw
IDc5IDZEIDYxIDAwIDYwIDREIDMyICB5Li5hLi5gfWB5bWEuYE0yCiAgICAyNjAwOiAzNSAzMCA2
OCA2OSA2QSAwQyAwMCAxRSBEMCAwMiA2MCBBMSAxQiA0RCAzMCAzMSAgNTBoaWouLi4uLmAuLk0w
MQogICAgMjYxMDogMzIgNzIgNEQgMzAgMzggMzQgMEIgMDAgMEUgMDAgN0EgNjEgMEEgMDggMDAg
N0IgIDJyTTA4NC4uLi56YS4uLnsKICAgIDI2MjA6IDYxIDBBIDA3IDAwIDBBIDAyIDZEIEExIDNE
IEEwIDFGIDkzIDZCIDBBIDAyIDREICBhLi4uLi5tLj0uLi5rLi5NCiAgICAyNjMwOiAzMCAzMSAz
MiA3MiA0RCAzMCAzOCAzNCAwQiAwMCAxMyAwMCA3QSA2MSAwQSAwOCAgMDEyck0wODQuLi4uemEu
LgogICAgMjY0MDogMDAgN0IgNjEgMEEgMDcgMDAgMEEgMDIgNkQgQTEgMUIgNEQgMzAgMzEgMzIg
NzIgIC57YS4uLi4ubS4uTTAxMnIKICAgIDI2NTA6IDREIDMwIDM4IDM0IDBCIDAwIDBFIDAwIDdB
IDYxIDBBIDA4IDAwIDdCIDYxIDBBICBNMDg0Li4uLnphLi4ue2EuCiAgICAyNjYwOiAwNyAwMCAw
QSAwMiA2RCBBMSAxRCA0RCAzMCAzMSAzMiA3MiA0RCAzMCAzOCAzNCAgLi4uLm0uLk0wMTJyTTA4
NAogICAgMjY3MDogMEIgMDAgMEUgMDAgN0EgNkMgMDEgMDAgNzkgN0IgNkMgMDEgMDAgMEEgMDIg
MDAgIC4uLi56bC4ueXtsLi4uLi4KICAgIDI2ODA6IDBBIDA0IDZEIDE0IDQ2IDBCIDREIDM2IDMw
IDMwIDBBIDA4IDU0IDQ1IDREIDUwICAuLm0uRi5NNjAwLi5URU1QCiAgICAyNjkwOiAxMiAwOCAw
NCAwQSBGRiAwQSAwOSAwMCAwMCBBMCAwRCA5MyA2OCAwMCA3MCAwMCAgLi4uLi4uLi4uLi4uaC5w
LgogICAgMjZBMDogODggNTQgNDUgNEQgNTAgMDAgMDAgQTAgMEYgOTIgOTMgNjkgMEEgMDkgNzAg
NjkgIC5URU1QLi4uLi4uaS4ucGkKICAgIDI2QjA6IDg4IDU0IDQ1IDREIDUwIDAxIDAwIDcwIDgz
IDg4IDU0IDQ1IDREIDUwIDAwIDAwICAuVEVNUC4ucC4uVEVNUC4uCiAgICAyNkMwOiA2MCA3MCA4
MyA4OCA1NCA0NSA0RCA1MCAwMSAwMCA2MSA3MCA4MyA4OCA1NCA0NSAgYHAuLlRFTVAuLmFwLi5U
RQogICAgMjZEMDogNEQgNTAgMEEgMDIgMDAgNjIgNzAgODMgODggNTQgNDUgNEQgNTAgMEEgMDMg
MDAgIE1QLi4uYnAuLlRFTVAuLi4KICAgIDI2RTA6IDYzIDREIDM0IDM2IDMwIDBEIDIwIDIwIDRC
IDQ1IDUyIDJEIDQxIDUzIDRDIDJEICBjTTQ2MC4gIEtFUi1BU0wtCiAgICAyNkYwOiA0MyA3MCA2
RCA0NyA2NSA2RSA2NSA3MiA2MSA3NCA2NSA1NSA1MCA0MyAyMCAyOCAgQ3BtR2VuZXJhdGVVUEMg
KAogICAgMjcwMDogMjkgMjAgNTIgNjUgNzQgNzUgNzIgNkUgMjAgNTAgNjEgNjMgNkIgNjEgNjcg
NjUgICkgUmV0dXJuIFBhY2thZ2UKICAgIDI3MTA6IDIwIDI4IDM0IDI5IDIwIDdCIDMwIDc4IDI1
IDU4IDJDIDIwIDMwIDc4IDI1IDU4ICAgKDQpIHsweCVYLCAweCVYCiAgICAyNzIwOiAyQyAyMCAz
MCA3OCAyNSA1OCAyQyAyMCAzMCA3OCAyNSA1OCA3RCAwQSAwMCA2MCAgLCAweCVYLCAweCVYfS4u
YAogICAgMjczMDogNjEgNjIgNjMgMDAgMDAgQTQgNTQgNDUgNEQgNTAgMTQgNEUgMEMgNEQgMzYg
MzAgIGFiYy4uLlRFTVAuTi5NNjAKICAgIDI3NDA6IDMyIDBCIDA4IDU0IDQ1IDREIDUwIDEyIDA5
IDA0IDBBIEZGIDBBIDA5IDBBIDNEICAyLi5URU1QLi4uLi4uLi49CiAgICAyNzUwOiAwMCBBMCAw
RCA5MyA2OCAwMCA3MCAwMCA4OCA1NCA0NSA0RCA1MCAwMCAwMCBBMCAgLi4uLmgucC4uVEVNUC4u
LgogICAgMjc2MDogMEYgOTIgOTMgNjkgMEEgMDkgNzAgNjkgODggNTQgNDUgNEQgNTAgMDEgMDAg
QTAgIC4uLmkuLnBpLlRFTVAuLi4KICAgIDI3NzA6IDEwIDkyIDkzIDZBIDBBIDNEIDcwIDZBIDg4
IDU0IDQ1IDREIDUwIDBBIDAyIDAwICAuLi5qLj1wai5URU1QLi4uCiAgICAyNzgwOiA3MCA4MyA4
OCA1NCA0NSA0RCA1MCAwMCAwMCA2MCA3MCA4MyA4OCA1NCA0NSA0RCAgcC4uVEVNUC4uYHAuLlRF
TQogICAgMjc5MDogNTAgMDEgMDAgNjEgNzAgODMgODggNTQgNDUgNEQgNTAgMEEgMDIgMDAgNjIg
NzAgIFAuLmFwLi5URU1QLi4uYnAKICAgIDI3QTA6IDgzIDg4IDU0IDQ1IDREIDUwIDBBIDAzIDAw
IDYzIDREIDM0IDM2IDMwIDBEIDIwICAuLlRFTVAuLi5jTTQ2MC4gCiAgICAyN0IwOiAyMCA0QiA0
NSA1MiAyRCA0MSA1MyA0QyAyRCA0MyA3MCA2RCA0NyA2NSA2RSA2NSAgIEtFUi1BU0wtQ3BtR2Vu
ZQogICAgMjdDMDogNzIgNjEgNzQgNjUgNDEgNjMgNzAgNjkgMzYgMzUgNTUgNTAgNDMgMjAgMjgg
MjkgIHJhdGVBY3BpNjVVUEMgKCkKICAgIDI3RDA6IDIwIDUyIDY1IDc0IDc1IDcyIDZFIDIwIDUw
IDYxIDYzIDZCIDYxIDY3IDY1IDIwICAgUmV0dXJuIFBhY2thZ2UgCiAgICAyN0UwOiAyOCAzNCAy
OSAyMCA3QiAzMCA3OCAyNSA1OCAyQyAyMCAzMCA3OCAyNSA1OCAyQyAgKDQpIHsweCVYLCAweCVY
LAogICAgMjdGMDogMjAgMzAgNzggMjUgNTggMkMgMjAgMzAgNzggMjUgNTggN0QgMEEgMDAgNjAg
NjEgICAweCVYLCAweCVYfS4uYGEKICAgIDI4MDA6IDYyIDYzIDAwIDAwIEE0IDU0IDQ1IDREIDUw
IDE0IDQ0IDI4IDREIDM2IDMwIDMxICBiYy4uLlRFTVAuRChNNjAxCiAgICAyODEwOiAwRSAwOCA1
NCA0NSA0RCA1MCAxMiAxQSAwMSAxMSAxNyAwQSAxNCA4MiAwMCAwMCAgLi5URU1QLi4uLi4uLi4u
LgogICAgMjgyMDogMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgRkYgRkYg
RkYgIC4uLi4uLi4uLi4uLi4uLi4KICAgIDI4MzA6IEZGIDVCIDEzIDgzIDg4IDU0IDQ1IDREIDUw
IDAwIDAwIDBBIDIwIDBBIDEwIDU3ICAuWy4uLlRFTVAuLi4gLi5XCiAgICAyODQwOiA0OSA0NCA0
OCA1QiAxMyA4MyA4OCA1NCA0NSA0RCA1MCAwMCAwMCAwQSAzMCAwQSAgSURIWy4uLlRFTVAuLi4w
LgogICAgMjg1MDogMTAgNDggNDkgNDcgNTQgNUIgMTMgODMgODggNTQgNDUgNEQgNTAgMDAgMDAg
MEEgIC5ISUdUWy4uLlRFTVAuLi4KICAgIDI4NjA6IDQwIDAxIDU2IDQ5IDUzIDQ5IDVCIDEzIDgz
IDg4IDU0IDQ1IDREIDUwIDAwIDAwICBALlZJU0lbLi4uVEVNUC4uCiAgICAyODcwOiAwQSA0MiAw
MSA0NiA0QyA0OSA0NCA1QiAxMyA4MyA4OCA1NCA0NSA0RCA1MCAwMCAgLkIuRkxJRFsuLi5URU1Q
LgogICAgMjg4MDogMDAgMEEgNDMgMEEgMDMgNTAgNDEgNEUgNDUgNUIgMTMgODMgODggNTQgNDUg
NEQgIC4uQy4uUEFORVsuLi5URU0KICAgIDI4OTA6IDUwIDAwIDAwIDBBIDQ2IDBBIDAyIDU2IDU0
IDUwIDUzIDVCIDEzIDgzIDg4IDU0ICBQLi4uRi4uVlRQU1suLi5UCiAgICAyOEEwOiA0NSA0RCA1
MCAwMCAwMCAwQSA0OCAwQSAwMiA0OCA1QSA1MCA1MyA1QiAxMyA4MyAgRU1QLi4uSC4uSFpQU1su
LgogICAgMjhCMDogODggNTQgNDUgNEQgNTAgMDAgMDAgMEEgNEEgMEEgMDQgNTMgNDggNDEgNTAg
NUIgIC5URU1QLi4uSi4uU0hBUFsKICAgIDI4QzA6IDEzIDgzIDg4IDU0IDQ1IDREIDUwIDAwIDAw
IDBBIDRGIDBBIDA4IDQ3IDUwIDU0ICAuLi5URU1QLi4uTy4uR1BUCiAgICAyOEQwOiA0RSA1QiAx
MyA4MyA4OCA1NCA0NSA0RCA1MCAwMCAwMCAwQSA1NyAwQSAwOCA0NyAgTlsuLi5URU1QLi4uVy4u
RwogICAgMjhFMDogNTAgNTAgNTMgNUIgMTMgODMgODggNTQgNDUgNEQgNTAgMDAgMDAgMEEgNjAg
MEEgIFBQU1suLi5URU1QLi4uYC4KICAgIDI4RjA6IDAyIDQ1IDRBIDU0IDQyIDVCIDEzIDgzIDg4
IDU0IDQ1IDREIDUwIDAwIDAwIDBBICAuRUpUQlsuLi5URU1QLi4uCiAgICAyOTAwOiA3MyAwQSAw
NCA1MiA0RiA1NCA0RSA1QiAxMyA4MyA4OCA1NCA0NSA0RCA1MCAwMCAgcy4uUk9UTlsuLi5URU1Q
LgogICAgMjkxMDogMDAgMEEgODAgMEEgMjAgNEYgNDYgNTMgNTQgQTAgMUUgOTEgOTMgNjggMDAg
OTMgIC4uLi4gT0ZTVC4uLi5oLi4KICAgIDI5MjA6IDY4IDBBIDAyIDcwIDBBIDAzIDUzIDQ4IDQx
IDUwIDcwIDBBIDA4IDU3IDQ5IDQ0ICBoLi5wLi5TSEFQcC4uV0lECiAgICAyOTMwOiA0OCA3MCAw
QSAwRSA0OCA0OSA0NyA1NCBBMSA0MyAwNCBBMCAxRCA5MSA5MyA2OCAgSHAuLkhJR1QuQy4uLi4u
aAogICAgMjk0MDogMDEgOTMgNjggMEEgMDMgNzAgMDEgNTMgNDggNDEgNTAgNzAgMEEgMDMgNTcg
NDkgIC4uaC4ucC5TSEFQcC4uV0kKICAgIDI5NTA6IDQ0IDQ4IDcwIDBBIDA4IDQ4IDQ5IDQ3IDU0
IEExIDIyIEEwIDIwIDkzIDY4IDBBICBESHAuLkhJR1QuIi4gLmguCiAgICAyOTYwOiAwMiA3MCAw
QSAwMiA1MyA0OCA0MSA1MCA3MCAwQSAwOCA1NyA0OSA0NCA0OCA3MCAgLnAuLlNIQVBwLi5XSURI
cAogICAgMjk3MDogMEEgMDggNDggNDkgNDcgNTQgNzAgMDEgNDYgNEMgNDkgNDQgQTAgMTEgOTEg
OTMgIC4uSElHVHAuRkxJRC4uLi4KICAgIDI5ODA6IDY4IDBBIDAyIDkzIDY4IDBBIDAzIDcwIDBB
IDAyIDUyIDRGIDU0IDRFIDcwIDY5ICBoLi4uaC4ucC4uUk9UTnBpCiAgICAyOTkwOiA1NiA0OSA1
MyA0OSA3MCA3QiA3QSA2QSAwQSAwOCAwMCAwQSBGRiAwMCA0NyA1MCAgVklTSXB7emouLi4uLi5H
UAogICAgMjlBMDogNTQgNEUgNzAgN0IgNkEgMEEgRkYgMDAgNDcgNTAgNTAgNTMgNzAgNkIgNDUg
NEEgIFROcHtqLi4uR1BQU3BrRUoKICAgIDI5QjA6IDU0IDQyIDcwIDdCIDZDIDBBIDA3IDAwIDUw
IDQxIDRFIDQ1IDcwIDdCIDdBIDZDICBUQnB7bC4uLlBBTkVwe3psCiAgICAyOUMwOiAwQSAwNCAw
MCAwQSAwMyAwMCA1NiA1NCA1MCA1MyA3MCA3QiA3QSA2QyAwQSAwOCAgLi4uLi4uVlRQU3B7emwu
LgogICAgMjlEMDogMDAgMEEgMDMgMDAgNDggNUEgNTAgNTMgQTAgMEIgOTIgOTMgNkQgMDAgNzAg
NkQgIC4uLi5IWlBTLi4uLm0ucG0KICAgIDI5RTA6IDRGIDQ2IDUzIDU0IDhBIDgzIDg4IDU0IDQ1
IDREIDUwIDAwIDAwIDAwIDQ0IDU3ICBPRlNULi4uVEVNUC4uLkRXCiAgICAyOUYwOiAzMCAzMCA4
QSA4MyA4OCA1NCA0NSA0RCA1MCAwMCAwMCAwQSAwNCA0NCA1NyAzMCAgMDAuLi5URU1QLi4uLkRX
MAogICAgMkEwMDogMzEgOEEgODMgODggNTQgNDUgNEQgNTAgMDAgMDAgMEEgMDggNDQgNTcgMzAg
MzIgIDEuLi5URU1QLi4uLkRXMDIKICAgIDJBMTA6IDhBIDgzIDg4IDU0IDQ1IDREIDUwIDAwIDAw
IDBBIDBDIDQ0IDU3IDMwIDMzIDhBICAuLi5URU1QLi4uLkRXMDMuCiAgICAyQTIwOiA4MyA4OCA1
NCA0NSA0RCA1MCAwMCAwMCAwQSAxMCA0NCA1NyAzMCAzNCA0RCAzNCAgLi5URU1QLi4uLkRXMDRN
NAogICAgMkEzMDogMzYgMzAgMEQgMjAgMjAgNEIgNDUgNTIgMkQgNDEgNTMgNEMgMkQgNDMgNzAg
NkQgIDYwLiAgS0VSLUFTTC1DcG0KICAgIDJBNDA6IDQ3IDY1IDZFIDY1IDcyIDYxIDc0IDY1IDUw
IDRDIDQ0IDIwIDI4IDI5IDIwIDUyICBHZW5lcmF0ZVBMRCAoKSBSCiAgICAyQTUwOiA2NSA3NCA3
NSA3MiA2RSAyMCAzMCA3OCAyNSA1OCAyQyAyMCAzMCA3OCAyNSA1OCAgZXR1cm4gMHglWCwgMHgl
WAogICAgMkE2MDogMkMgMjAgMzAgNzggMjUgNTggMkMgMjAgMzAgNzggMjUgNTggMkMgMjAgMzAg
NzggICwgMHglWCwgMHglWCwgMHgKICAgIDJBNzA6IDI1IDU4IDBBIDAwIDQ0IDU3IDMwIDMwIDQ0
IDU3IDMwIDMxIDQ0IDU3IDMwIDMyICAlWC4uRFcwMERXMDFEVzAyCiAgICAyQTgwOiA0NCA1NyAz
MCAzMyA0NCA1NyAzMCAzNCAwMCBBNCA1NCA0NSA0RCA1MCAxNCAzMyAgRFcwM0RXMDQuLlRFTVAu
MwogICAgMkE5MDogNEQgMzYgMzQgMzMgMDkgOTkgNjggNjAgNzAgMDAgNjEgQTAgMUEgOTIgOTMg
NjAgIE02NDMuLmhgcC5hLi4uLmAKICAgIDJBQTA6IDAwIEEyIDE0IDkwIDk1IDYxIDBBIDIwIDkz
IDdCIDYwIDAxIDAwIDAwIDdBIDYwICAuLi4uLmEuIC57YC4uLnpgCiAgICAyQUIwOiAwMSA2MCA3
MiA2MSAwMSA2MSBBMCAwOSA5MiA5NSA2MSAwQSAyMCA3MCAwMCA2MSAgLmByYS5hLi4uLmEuIHAu
YQogICAgMkFDMDogQTQgNjEgMTQgNDkgNDYgNEQgNTAgNTQgNTMgMDEgNEQgMzQgMzYgMzAgMEQg
MjAgIC5hLklGTVBUUy5NNDYwLiAKICAgIDJBRDA6IDIwIDRCIDQ1IDUyIDJEIDQxIDUzIDRDIDJE
IDREIDUwIDU0IDUzIDIwIDI4IDI1ICAgS0VSLUFTTC1NUFRTICglCiAgICAyQUUwOiA2NCAyOSAw
QSAwMCA2OCAwMCAwMCAwMCAwMCAwMCA0RCAzMCAzMCAzMCAwQiBFNyAgZCkuLmguLi4uLk0wMDAu
LgogICAgMkFGMDogMEQgNEQgMzYgMzQgMzQgMEMgMDAgMDIgRDggRkUgMEEgMDQgMEEgMjAgNEQg
MzYgIC5NNjQ0Li4uLi4uLi4gTTYKICAgIDJCMDA6IDM0IDM0IDBDIDQwIDAyIEQ4IEZFIDBBIDA0
IDBBIDQwIDcwIDREIDMwIDM0IDM5ICA0NC5ALi4uLi4uQHBNMDQ5CiAgICAyQjEwOiA0RCAzMSAz
MiAzOCAwQSA2NyA2MCBBMCA0RiAxNSA5MyA3QiA2MCAwQSAwMyAwMCAgTTEyOC5nYC5PLi57YC4u
LgogICAgMkIyMDogMEEgMDMgQTAgNEUgMEUgOTIgOTUgNEQgMzAgMzggMzUgMEEgMDggQTAgNEYg
MDYgIC4uLk4uLi5NMDg1Li4uTy4KICAgIDJCMzA6IDVCIDEyIDVDIDJGIDA1IDVGIDUzIDQyIDVG
IDUwIDQzIDU4IDU4IDQ3IDUwIDU4ICBbLlwvLl9TQl9QQ1hYR1BYCiAgICAyQjQwOiA1OCA1MyA0
MSA1OCA1OCA1NCA1MCA1NCA1MyAwMCA0RCAzNCAzNiAzMCAwRCAyMCAgWFNBWFhUUFRTLk00NjAu
IAogICAgMkI1MDogMjAgMjAgMjAgNEIgNDUgNTIgMkQgNDEgNTMgNEMgMkQgNDMgNjEgNkMgNkMg
MjAgICAgIEtFUi1BU0wtQ2FsbCAKICAgIDJCNjA6IDVDIDVGIDUzIDQyIDJFIDUwIDQzIDU4IDU4
IDJFIDQ3IDUwIDU4IDU4IDJFIDUzICBcX1NCLlBDWFguR1BYWC5TCiAgICAyQjcwOiA0MSA1OCA1
OCAyRSA1NCA1MCA1NCA1MyAyMCAyOCAyNSA2NCAyOSAwQSAwMCA2OCAgQVhYLlRQVFMgKCVkKS4u
aAogICAgMkI4MDogMDAgMDAgMDAgMDAgMDAgNUMgMkYgMDUgNUYgNTMgNDIgNUYgNTAgNDMgNTgg
NTggIC4uLi4uXC8uX1NCX1BDWFgKICAgIDJCOTA6IDQ3IDUwIDU4IDU4IDUzIDQxIDU4IDU4IDU0
IDUwIDU0IDUzIDY4IEEwIDQzIDA3ICBHUFhYU0FYWFRQVFNoLkMuCiAgICAyQkEwOiA1QiAxMiA1
QyAyRiAwNSA1RiA1MyA0MiA1RiA1MCA0MyA0OSAzMCA1MCA1NCA0MiAgWy5cLy5fU0JfUENJMFBU
QgogICAgMkJCMDogNTIgNTAgNTQgNTMgNTQgNTQgNTAgNTQgNTMgMDAgNEQgMzQgMzYgMzAgMEQg
MjAgIFJQVFNUVFBUUy5NNDYwLiAKICAgIDJCQzA6IDIwIDIwIDIwIDRCIDQ1IDUyIDJEIDQxIDUz
IDRDIDJEIDQzIDYxIDZDIDZDIDIwICAgICBLRVItQVNMLUNhbGwgCiAgICAyQkQwOiA1QSA0NSA1
MiA0RiA1RiA1MCA0RiA1NyA1MiA1RiA0RiA0NCA0NCA1RiA1MyA0MSAgWkVST19QT1dSX09ERF9T
QQogICAgMkJFMDogNTQgNDEgNUYgNTAgNDEgNTQgNDggMkUgNTQgNTAgNTQgNTMgMjAgMjggMjUg
NjQgIFRBX1BBVEguVFBUUyAoJWQKICAgIDJCRjA6IDI5IDBBIDAwIDY4IDAwIDAwIDAwIDAwIDAw
IDVDIDJGIDA1IDVGIDUzIDQyIDVGICApLi5oLi4uLi5cLy5fU0JfCiAgICAyQzAwOiA1MCA0MyA0
OSAzMCA1MCA1NCA0MiA1MiA1MCA1NCA1MyA1NCA1NCA1MCA1NCA1MyAgUENJMFBUQlJQVFNUVFBU
UwogICAgMkMxMDogNjggQTEgNDUgMDYgQTAgNDIgMDYgNUIgMTIgNUMgMkYgMDQgNUYgNTMgNDIg
NUYgIGguRS4uQi5bLlwvLl9TQl8KICAgIDJDMjA6IDUwIDQzIDU4IDU4IDUzIDQxIDU4IDU4IDU0
IDUwIDU0IDUzIDAwIDREIDM0IDM2ICBQQ1hYU0FYWFRQVFMuTTQ2CiAgICAyQzMwOiAzMCAwRCAy
MCAyMCAyMCAyMCA0QiA0NSA1MiAyRCA0MSA1MyA0QyAyRCA0MyA2MSAgMC4gICAgS0VSLUFTTC1D
YQogICAgMkM0MDogNkMgNkMgMjAgNUMgNUYgNTMgNDIgMkUgNTAgNDMgNTggNTggMkUgNTMgNDEg
NTggIGxsIFxfU0IuUENYWC5TQVgKICAgIDJDNTA6IDU4IDJFIDU0IDUwIDU0IDUzIDIwIDI4IDI1
IDY0IDI5IDBBIDAwIDY4IDAwIDAwICBYLlRQVFMgKCVkKS4uaC4uCiAgICAyQzYwOiAwMCAwMCAw
MCA1QyAyRiAwNCA1RiA1MyA0MiA1RiA1MCA0MyA1OCA1OCA1MyA0MSAgLi4uXC8uX1NCX1BDWFhT
QQogICAgMkM3MDogNTggNTggNTQgNTAgNTQgNTMgNjggQTAgNDMgMDYgOTIgOTMgNEQgMzIgMzIg
MzYgIFhYVFBUU2guQy4uLk0yMjYKICAgIDJDODA6IDAwIEEwIDQ5IDA1IDVCIDEyIDVDIDJFIDVG
IDUzIDQyIDVGIDREIDMyIDM2IDMzICAuLkkuWy5cLl9TQl9NMjYzCiAgICAyQzkwOiAwMCA0RCAz
NCAzNiAzMCAwRCAyMCAyMCAyMCAyMCA0QiA0NSA1MiAyRCA0MSA1MyAgLk00NjAuICAgIEtFUi1B
UwogICAgMkNBMDogNEMgMkQgNDMgNjEgNkMgNkMgMjAgNUMgNUYgNTMgNDIgMkUgNDMgNzAgNkQg
NEYgIEwtQ2FsbCBcX1NCLkNwbU8KICAgIDJDQjA6IDc0IDY4IDY1IDcyIDQ4IDZGIDc0IDcwIDZD
IDc1IDY3IDQzIDYxIDcyIDY0IDVGICB0aGVySG90cGx1Z0NhcmRfCiAgICAyQ0MwOiA1MCA1NCA1
MyAyMCAyOCAyNSA2NCAyOSAwQSAwMCA2OCAwMCAwMCAwMCAwMCAwMCAgUFRTICglZCkuLmguLi4u
LgogICAgMkNEMDogNUMgMkUgNUYgNTMgNDIgNUYgNEQgMzIgMzYgMzMgNjggQTAgNDQgMDcgOTIg
OTMgIFwuX1NCX00yNjNoLkQuLi4KICAgIDJDRTA6IDREIDMzIDMzIDMxIDAwIDcwIDREIDMwIDM0
IDM5IDREIDMzIDMzIDMxIDBBIDEwICBNMzMxLnBNMDQ5TTMzMS4uCiAgICAyQ0YwOiA2MCA3MCA0
RCAzMCAzNCAzOSA0RCAzMyAzMyAzMSAwQSAyMSA2MSBBMCA0MiAwNSAgYHBNMDQ5TTMzMS4hYS5C
LgogICAgMkQwMDogOTAgOTIgOTMgNjAgMDAgOTIgOTMgNjEgMDAgQTAgNDYgMDQgNUIgMTIgNUMg
MkUgIC4uLmAuLi5hLi5GLlsuXC4KICAgIDJEMTA6IDVGIDUzIDQyIDVGIDQ5IDUwIDU0IDUzIDAw
IDREIDM0IDM2IDMwIDBEIDIwIDIwICBfU0JfSVBUUy5NNDYwLiAgCiAgICAyRDIwOiAyMCAyMCA0
QiA0NSA1MiAyRCA0MSA1MyA0QyAyRCA0MyA2MSA2QyA2QyAyMCA1QyAgICBLRVItQVNMLUNhbGwg
XAogICAgMkQzMDogNUYgNTMgNDIgMkUgNDkgNTAgNTQgNTMgMjAgMjggMjUgNjQgMjkgMEEgMDAg
NjggIF9TQi5JUFRTICglZCkuLmgKICAgIDJENDA6IDAwIDAwIDAwIDAwIDAwIDVDIDJFIDVGIDUz
IDQyIDVGIDQ5IDUwIDU0IDUzIDY4ICAuLi4uLlwuX1NCX0lQVFNoCiAgICAyRDUwOiBBMCA0MyAw
NiA5MiA5MyA0RCAzNiAzMiAzMCAwMCA3MCA0RCAzMCAzNCAzOSA0RCAgLkMuLi5NNjIwLnBNMDQ5
TQogICAgMkQ2MDogMzYgMzIgMzAgMEEgMTAgNjAgQTAgNEQgMDQgOTIgOTMgNjAgMDAgQTAgNDYg
MDQgIDYyMC4uYC5NLi4uYC4uRi4KICAgIDJENzA6IDVCIDEyIDVDIDJFIDVGIDUzIDQyIDVGIDQy
IDUwIDU0IDUzIDAwIDREIDM0IDM2ICBbLlwuX1NCX0JQVFMuTTQ2CiAgICAyRDgwOiAzMCAwRCAy
MCAyMCAyMCAyMCA0QiA0NSA1MiAyRCA0MSA1MyA0QyAyRCA0MyA2MSAgMC4gICAgS0VSLUFTTC1D
YQogICAgMkQ5MDogNkMgNkMgMjAgNUMgNUYgNTMgNDIgMkUgNDIgNTAgNTQgNTMgMjAgMjggMjUg
NjQgIGxsIFxfU0IuQlBUUyAoJWQKICAgIDJEQTA6IDI5IDBBIDAwIDY4IDAwIDAwIDAwIDAwIDAw
IDVDIDJFIDVGIDUzIDQyIDVGIDQyICApLi5oLi4uLi5cLl9TQl9CCiAgICAyREIwOiA1MCA1NCA1
MyA2OCBBMCA0OSAxMiA5MiA5MyA0RCAzNCA0NiAzMCAwMCBBMCA0NyAgUFRTaC5JLi4uTTRGMC4u
RwogICAgMkRDMDogMDQgNUIgMTIgNUMgMkUgNUYgNDcgNTAgNDUgNTAgNTQgNTMgMzAgMDAgNEQg
MzQgIC5bLlwuX0dQRVBUUzAuTTQKICAgIDJERDA6IDM2IDMwIDBEIDIwIDIwIDIwIDIwIDRCIDQ1
IDUyIDJEIDQxIDUzIDRDIDJEIDQzICA2MC4gICAgS0VSLUFTTC1DCiAgICAyREUwOiA2MSA2QyA2
QyAyMCA1QyA1RiA0NyA1MCA0NSAyRSA1MCA1NCA1MyAzMCAyMCAyOCAgYWxsIFxfR1BFLlBUUzAg
KAogICAgMkRGMDogMjUgNjQgMjkgMEEgMDAgNjggMDAgMDAgMDAgMDAgMDAgNUMgMkUgNUYgNDcg
NTAgICVkKS4uaC4uLi4uXC5fR1AKICAgIDJFMDA6IDQ1IDUwIDU0IDUzIDMwIDY4IEEwIDQ3IDA0
IDVCIDEyIDVDIDJFIDVGIDQ3IDUwICBFUFRTMGguRy5bLlwuX0dQCiAgICAyRTEwOiA0NSA1MCA1
NCA1MyAzMSAwMCA0RCAzNCAzNiAzMCAwRCAyMCAyMCAyMCAyMCA0QiAgRVBUUzEuTTQ2MC4gICAg
SwogICAgMkUyMDogNDUgNTIgMkQgNDEgNTMgNEMgMkQgNDMgNjEgNkMgNkMgMjAgNUMgNUYgNDcg
NTAgIEVSLUFTTC1DYWxsIFxfR1AKICAgIDJFMzA6IDQ1IDJFIDUwIDU0IDUzIDMxIDIwIDI4IDI1
IDY0IDI5IDBBIDAwIDY4IDAwIDAwICBFLlBUUzEgKCVkKS4uaC4uCiAgICAyRTQwOiAwMCAwMCAw
MCA1QyAyRSA1RiA0NyA1MCA0NSA1MCA1NCA1MyAzMSA2OCBBMCA0NyAgLi4uXC5fR1BFUFRTMWgu
RwogICAgMkU1MDogMDQgNUIgMTIgNUMgMkUgNUYgNDcgNTAgNDUgNTAgNTQgNTMgMzIgMDAgNEQg
MzQgIC5bLlwuX0dQRVBUUzIuTTQKICAgIDJFNjA6IDM2IDMwIDBEIDIwIDIwIDIwIDIwIDRCIDQ1
IDUyIDJEIDQxIDUzIDRDIDJEIDQzICA2MC4gICAgS0VSLUFTTC1DCiAgICAyRTcwOiA2MSA2QyA2
QyAyMCA1QyA1RiA0NyA1MCA0NSAyRSA1MCA1NCA1MyAzMiAyMCAyOCAgYWxsIFxfR1BFLlBUUzIg
KAogICAgMkU4MDogMjUgNjQgMjkgMEEgMDAgNjggMDAgMDAgMDAgMDAgMDAgNUMgMkUgNUYgNDcg
NTAgICVkKS4uaC4uLi4uXC5fR1AKICAgIDJFOTA6IDQ1IDUwIDU0IDUzIDMyIDY4IEEwIDQ3IDA0
IDVCIDEyIDVDIDJFIDVGIDQ3IDUwICBFUFRTMmguRy5bLlwuX0dQCiAgICAyRUEwOiA0NSA1MCA1
NCA1MyAzMyAwMCA0RCAzNCAzNiAzMCAwRCAyMCAyMCAyMCAyMCA0QiAgRVBUUzMuTTQ2MC4gICAg
SwogICAgMkVCMDogNDUgNTIgMkQgNDEgNTMgNEMgMkQgNDMgNjEgNkMgNkMgMjAgNUMgNUYgNDcg
NTAgIEVSLUFTTC1DYWxsIFxfR1AKICAgIDJFQzA6IDQ1IDJFIDUwIDU0IDUzIDMzIDIwIDI4IDI1
IDY0IDI5IDBBIDAwIDY4IDAwIDAwICBFLlBUUzMgKCVkKS4uaC4uCiAgICAyRUQwOiAwMCAwMCAw
MCA1QyAyRSA1RiA0NyA1MCA0NSA1MCA1NCA1MyAzMyA2OCBBMCA0NiAgLi4uXC5fR1BFUFRTM2gu
RgogICAgMkVFMDogMDQgNUIgMTIgNUMgMkUgNUYgNTMgNDIgNUYgNEYgNTAgNTQgNTMgMDAgNEQg
MzQgIC5bLlwuX1NCX09QVFMuTTQKICAgIDJFRjA6IDM2IDMwIDBEIDIwIDIwIDIwIDIwIDRCIDQ1
IDUyIDJEIDQxIDUzIDRDIDJEIDQzICA2MC4gICAgS0VSLUFTTC1DCiAgICAyRjAwOiA2MSA2QyA2
QyAyMCA1QyA1RiA1MyA0MiAyRSA0RiA1MCA1NCA1MyAyMCAyOCAyNSAgYWxsIFxfU0IuT1BUUyAo
JQogICAgMkYxMDogNjQgMjkgMEEgMDAgNjggMDAgMDAgMDAgMDAgMDAgNUMgMkUgNUYgNTMgNDIg
NUYgIGQpLi5oLi4uLi5cLl9TQl8KICAgIDJGMjA6IDRGIDUwIDU0IDUzIDY4IDREIDMwIDMwIDMw
IDBCIEU4IDBEIDE0IDREIDRDIDREICBPUFRTaE0wMDAuLi4uTUxNCiAgICAyRjMwOiA1NyA0MSA0
QiAwMSA0RCAzNCAzNiAzMCAwRCAyMCAyMCA0QiA0NSA1MiAyRCA0MSAgV0FLLk00NjAuICBLRVIt
QQogICAgMkY0MDogNTMgNEMgMkQgNEQgNTcgNDEgNEIgMjAgMjggMjUgNjQgMjkgMEEgMDAgNjgg
MDAgIFNMLU1XQUsgKCVkKS4uaC4KICAgIDJGNTA6IDAwIDAwIDAwIDAwIDREIDMwIDMwIDMwIDBC
IEU5IDBEIDREIDM2IDM0IDM0IDBDICAuLi4uTTAwMC4uLk02NDQuCiAgICAyRjYwOiAwMCAwMiBE
OCBGRSAwQSAwNCAwQSAyMCA0RCAzNiAzNCAzNCAwQyA0MCAwMiBEOCAgLi4uLi4uLiBNNjQ0LkAu
LgogICAgMkY3MDogRkUgMEEgMDQgMEEgNDAgNzAgNEQgMzAgMzQgMzkgNEQgMzEgMzIgMzggMEEg
NjcgIC4uLi5AcE0wNDlNMTI4LmcKICAgIDJGODA6IDYwIEEwIDRGIDE1IDkzIDdCIDYwIDBBIDAz
IDAwIDBBIDAzIEEwIDRFIDBFIDkyICBgLk8uLntgLi4uLi4uTi4uCiAgICAyRjkwOiA5NSA0RCAz
MCAzOCAzNSAwQSAwOCBBMCA0RiAwNiA1QiAxMiA1QyAyRiAwNSA1RiAgLk0wODUuLi5PLlsuXC8u
XwogICAgMkZBMDogNTMgNDIgNUYgNTAgNDMgNTggNTggNDcgNTAgNTggNTggNTMgNDEgNTggNTgg
NTQgIFNCX1BDWFhHUFhYU0FYWFQKICAgIDJGQjA6IDU3IDQxIDRCIDAwIDREIDM0IDM2IDMwIDBE
IDIwIDIwIDIwIDIwIDRCIDQ1IDUyICBXQUsuTTQ2MC4gICAgS0VSCiAgICAyRkMwOiAyRCA0MSA1
MyA0QyAyRCA0MyA2MSA2QyA2QyAyMCA1QyA1RiA1MyA0MiAyRSA1MCAgLUFTTC1DYWxsIFxfU0Iu
UAogICAgMkZEMDogNDMgNTggNTggMkUgNDcgNTAgNTggNTggMkUgNTMgNDEgNTggNTggMkUgNTQg
NTcgIENYWC5HUFhYLlNBWFguVFcKICAgIDJGRTA6IDQxIDRCIDIwIDI4IDI1IDY0IDI5IDBBIDAw
IDY4IDAwIDAwIDAwIDAwIDAwIDVDICBBSyAoJWQpLi5oLi4uLi5cCiAgICAyRkYwOiAyRiAwNSA1
RiA1MyA0MiA1RiA1MCA0MyA1OCA1OCA0NyA1MCA1OCA1OCA1MyA0MSAgLy5fU0JfUENYWEdQWFhT
QQogICAgMzAwMDogNTggNTggNTQgNTcgNDEgNEIgNjggQTAgNDMgMDcgNUIgMTIgNUMgMkYgMDUg
NUYgIFhYVFdBS2guQy5bLlwvLl8KICAgIDMwMTA6IDUzIDQyIDVGIDUwIDQzIDQ5IDMwIDUwIDU0
IDQyIDUyIDUwIDU0IDUzIDU0IDU0ICBTQl9QQ0kwUFRCUlBUU1RUCiAgICAzMDIwOiA1NyA0MSA0
QiAwMCA0RCAzNCAzNiAzMCAwRCAyMCAyMCAyMCAyMCA0QiA0NSA1MiAgV0FLLk00NjAuICAgIEtF
UgogICAgMzAzMDogMkQgNDEgNTMgNEMgMkQgNDMgNjEgNkMgNkMgMjAgNUEgNDUgNTIgNEYgNUYg
NTAgIC1BU0wtQ2FsbCBaRVJPX1AKICAgIDMwNDA6IDRGIDU3IDUyIDVGIDRGIDQ0IDQ0IDVGIDUz
IDQxIDU0IDQxIDVGIDUwIDQxIDU0ICBPV1JfT0REX1NBVEFfUEFUCiAgICAzMDUwOiA0OCAyRSA1
NCA1NyA0MSA0QiAyMCAyOCAyNSA2NCAyOSAwQSAwMCA2OCAwMCAwMCAgSC5UV0FLICglZCkuLmgu
LgogICAgMzA2MDogMDAgMDAgMDAgNUMgMkYgMDUgNUYgNTMgNDIgNUYgNTAgNDMgNDkgMzAgNTAg
NTQgIC4uLlwvLl9TQl9QQ0kwUFQKICAgIDMwNzA6IDQyIDUyIDUwIDU0IDUzIDU0IDU0IDU3IDQx
IDRCIDY4IEExIDQ1IDA2IEEwIDQyICBCUlBUU1RUV0FLaC5FLi5CCiAgICAzMDgwOiAwNiA1QiAx
MiA1QyAyRiAwNCA1RiA1MyA0MiA1RiA1MCA0MyA1OCA1OCA1MyA0MSAgLlsuXC8uX1NCX1BDWFhT
QQogICAgMzA5MDogNTggNTggNTQgNTcgNDEgNEIgMDAgNEQgMzQgMzYgMzAgMEQgMjAgMjAgMjAg
MjAgIFhYVFdBSy5NNDYwLiAgICAKICAgIDMwQTA6IDRCIDQ1IDUyIDJEIDQxIDUzIDRDIDJEIDQz
IDYxIDZDIDZDIDIwIDVDIDVGIDUzICBLRVItQVNMLUNhbGwgXF9TCiAgICAzMEIwOiA0MiAyRSA1
MCA0MyA1OCA1OCAyRSA1MyA0MSA1OCA1OCAyRSA1NCA1NyA0MSA0QiAgQi5QQ1hYLlNBWFguVFdB
SwogICAgMzBDMDogMjAgMjggMjUgNjQgMjkgMEEgMDAgNjggMDAgMDAgMDAgMDAgMDAgNUMgMkYg
MDQgICAoJWQpLi5oLi4uLi5cLy4KICAgIDMwRDA6IDVGIDUzIDQyIDVGIDUwIDQzIDU4IDU4IDUz
IDQxIDU4IDU4IDU0IDU3IDQxIDRCICBfU0JfUENYWFNBWFhUV0FLCiAgICAzMEUwOiA2OCBBMCA0
MyAwNiA5MiA5MyA0RCAzMiAzMiAzNiAwMCBBMCA0OSAwNSA1QiAxMiAgaC5DLi4uTTIyNi4uSS5b
LgogICAgMzBGMDogNUMgMkUgNUYgNTMgNDIgNUYgNEQgMzIgMzYgMzQgMDAgNEQgMzQgMzYgMzAg
MEQgIFwuX1NCX00yNjQuTTQ2MC4KICAgIDMxMDA6IDIwIDIwIDIwIDIwIDRCIDQ1IDUyIDJEIDQx
IDUzIDRDIDJEIDQzIDYxIDZDIDZDICAgICAgS0VSLUFTTC1DYWxsCiAgICAzMTEwOiAyMCA1QyA1
RiA1MyA0MiAyRSA0MyA3MCA2RCA0RiA3NCA2OCA2NSA3MiA0OCA2RiAgIFxfU0IuQ3BtT3RoZXJI
bwogICAgMzEyMDogNzQgNzAgNkMgNzUgNjcgNDMgNjEgNzIgNjQgNUYgNTcgNDEgNEIgMjAgMjgg
MjUgIHRwbHVnQ2FyZF9XQUsgKCUKICAgIDMxMzA6IDY0IDI5IDBBIDAwIDY4IDAwIDAwIDAwIDAw
IDAwIDVDIDJFIDVGIDUzIDQyIDVGICBkKS4uaC4uLi4uXC5fU0JfCiAgICAzMTQwOiA0RCAzMiAz
NiAzNCA2OCBBMCA0MyAwNiA5MiA5MyA0RCAzMiAzOCAzMCAwMCBBMCAgTTI2NGguQy4uLk0yODAu
LgogICAgMzE1MDogNDkgMDUgNUIgMTIgNUMgMkUgNUYgNTMgNDIgNUYgNEQgMzIgMzggMzQgMDAg
NEQgIEkuWy5cLl9TQl9NMjg0Lk0KICAgIDMxNjA6IDM0IDM2IDMwIDBEIDIwIDIwIDIwIDIwIDRC
IDQ1IDUyIDJEIDQxIDUzIDRDIDJEICA0NjAuICAgIEtFUi1BU0wtCiAgICAzMTcwOiA0MyA2MSA2
QyA2QyAyMCA1QyA1RiA1MyA0MiAyRSA0MyA3MCA2RCA0QyA2RiA3NyAgQ2FsbCBcX1NCLkNwbUxv
dwogICAgMzE4MDogNTAgNkYgNzcgNjUgNzIgNDUgNzQgNjggNjUgNzIgNkUgNjUgNzQgNUYgNTcg
NDEgIFBvd2VyRXRoZXJuZXRfV0EKICAgIDMxOTA6IDRCIDIwIDI4IDI1IDY0IDI5IDBBIDAwIDY4
IDAwIDAwIDAwIDAwIDAwIDVDIDJFICBLICglZCkuLmguLi4uLlwuCiAgICAzMUEwOiA1RiA1MyA0
MiA1RiA0RCAzMiAzOCAzNCA2OCBBMCA0NCAwNyA5MiA5MyA0RCAzMyAgX1NCX00yODRoLkQuLi5N
MwogICAgMzFCMDogMzMgMzEgMDAgNzAgNEQgMzAgMzQgMzkgNEQgMzMgMzMgMzEgMEEgMTAgNjAg
NzAgIDMxLnBNMDQ5TTMzMS4uYHAKICAgIDMxQzA6IDREIDMwIDM0IDM5IDREIDMzIDMzIDMxIDBB
IDIxIDYxIEEwIDQyIDA1IDkwIDkyICBNMDQ5TTMzMS4hYS5CLi4uCiAgICAzMUQwOiA5MyA2MCAw
MCA5MiA5MyA2MSAwMCBBMCA0NiAwNCA1QiAxMiA1QyAyRSA1RiA1MyAgLmAuLi5hLi5GLlsuXC5f
UwogICAgMzFFMDogNDIgNUYgNDkgNTcgNDEgNEIgMDAgNEQgMzQgMzYgMzAgMEQgMjAgMjAgMjAg
MjAgIEJfSVdBSy5NNDYwLiAgICAKICAgIDMxRjA6IDRCIDQ1IDUyIDJEIDQxIDUzIDRDIDJEIDQz
IDYxIDZDIDZDIDIwIDVDIDVGIDUzICBLRVItQVNMLUNhbGwgXF9TCiAgICAzMjAwOiA0MiAyRSA0
OSA1NyA0MSA0QiAyMCAyOCAyNSA2NCAyOSAwQSAwMCA2OCAwMCAwMCAgQi5JV0FLICglZCkuLmgu
LgogICAgMzIxMDogMDAgMDAgMDAgNUMgMkUgNUYgNTMgNDIgNUYgNDkgNTcgNDEgNEIgNjggQTAg
NDMgIC4uLlwuX1NCX0lXQUtoLkMKICAgIDMyMjA6IDA2IDkyIDkzIDREIDM2IDMyIDMwIDAwIDcw
IDREIDMwIDM0IDM5IDREIDM2IDMyICAuLi5NNjIwLnBNMDQ5TTYyCiAgICAzMjMwOiAzMCAwQSAx
MCA2MCBBMCA0RCAwNCA5MiA5MyA2MCAwMCBBMCA0NiAwNCA1QiAxMiAgMC4uYC5NLi4uYC4uRi5b
LgogICAgMzI0MDogNUMgMkUgNUYgNTMgNDIgNUYgNDIgNTcgNDEgNEIgMDAgNEQgMzQgMzYgMzAg
MEQgIFwuX1NCX0JXQUsuTTQ2MC4KICAgIDMyNTA6IDIwIDIwIDIwIDIwIDRCIDQ1IDUyIDJEIDQx
IDUzIDRDIDJEIDQzIDYxIDZDIDZDICAgICAgS0VSLUFTTC1DYWxsCiAgICAzMjYwOiAyMCA1QyA1
RiA1MyA0MiAyRSA0MiA1NyA0MSA0QiAyMCAyOCAyNSA2NCAyOSAwQSAgIFxfU0IuQldBSyAoJWQp
LgogICAgMzI3MDogMDAgNjggMDAgMDAgMDAgMDAgMDAgNUMgMkUgNUYgNTMgNDIgNUYgNDIgNTcg
NDEgIC5oLi4uLi5cLl9TQl9CV0EKICAgIDMyODA6IDRCIDY4IEEwIDQ5IDEyIDkyIDkzIDREIDM0
IDQ2IDMwIDAwIEEwIDQ3IDA0IDVCICBLaC5JLi4uTTRGMC4uRy5bCiAgICAzMjkwOiAxMiA1QyAy
RSA1RiA0NyA1MCA0NSA1NyA0MSA0QiAzMCAwMCA0RCAzNCAzNiAzMCAgLlwuX0dQRVdBSzAuTTQ2
MAogICAgMzJBMDogMEQgMjAgMjAgMjAgMjAgNEIgNDUgNTIgMkQgNDEgNTMgNEMgMkQgNDMgNjEg
NkMgIC4gICAgS0VSLUFTTC1DYWwKICAgIDMyQjA6IDZDIDIwIDVDIDVGIDQ3IDUwIDQ1IDJFIDU3
IDQxIDRCIDMwIDIwIDI4IDI1IDY0ICBsIFxfR1BFLldBSzAgKCVkCiAgICAzMkMwOiAyOSAwQSAw
MCA2OCAwMCAwMCAwMCAwMCAwMCA1QyAyRSA1RiA0NyA1MCA0NSA1NyAgKS4uaC4uLi4uXC5fR1BF
VwogICAgMzJEMDogNDEgNEIgMzAgNjggQTAgNDcgMDQgNUIgMTIgNUMgMkUgNUYgNDcgNTAgNDUg
NTcgIEFLMGguRy5bLlwuX0dQRVcKICAgIDMyRTA6IDQxIDRCIDMxIDAwIDREIDM0IDM2IDMwIDBE
IDIwIDIwIDIwIDIwIDRCIDQ1IDUyICBBSzEuTTQ2MC4gICAgS0VSCiAgICAzMkYwOiAyRCA0MSA1
MyA0QyAyRCA0MyA2MSA2QyA2QyAyMCA1QyA1RiA0NyA1MCA0NSAyRSAgLUFTTC1DYWxsIFxfR1BF
LgogICAgMzMwMDogNTcgNDEgNEIgMzEgMjAgMjggMjUgNjQgMjkgMEEgMDAgNjggMDAgMDAgMDAg
MDAgIFdBSzEgKCVkKS4uaC4uLi4KICAgIDMzMTA6IDAwIDVDIDJFIDVGIDQ3IDUwIDQ1IDU3IDQx
IDRCIDMxIDY4IEEwIDQ3IDA0IDVCICAuXC5fR1BFV0FLMWguRy5bCiAgICAzMzIwOiAxMiA1QyAy
RSA1RiA0NyA1MCA0NSA1NyA0MSA0QiAzMiAwMCA0RCAzNCAzNiAzMCAgLlwuX0dQRVdBSzIuTTQ2
MAogICAgMzMzMDogMEQgMjAgMjAgMjAgMjAgNEIgNDUgNTIgMkQgNDEgNTMgNEMgMkQgNDMgNjEg
NkMgIC4gICAgS0VSLUFTTC1DYWwKICAgIDMzNDA6IDZDIDIwIDVDIDVGIDQ3IDUwIDQ1IDJFIDU3
IDQxIDRCIDMyIDIwIDI4IDI1IDY0ICBsIFxfR1BFLldBSzIgKCVkCiAgICAzMzUwOiAyOSAwQSAw
MCA2OCAwMCAwMCAwMCAwMCAwMCA1QyAyRSA1RiA0NyA1MCA0NSA1NyAgKS4uaC4uLi4uXC5fR1BF
VwogICAgMzM2MDogNDEgNEIgMzIgNjggQTAgNDcgMDQgNUIgMTIgNUMgMkUgNUYgNDcgNTAgNDUg
NTcgIEFLMmguRy5bLlwuX0dQRVcKICAgIDMzNzA6IDQxIDRCIDMzIDAwIDREIDM0IDM2IDMwIDBE
IDIwIDIwIDIwIDIwIDRCIDQ1IDUyICBBSzMuTTQ2MC4gICAgS0VSCiAgICAzMzgwOiAyRCA0MSA1
MyA0QyAyRCA0MyA2MSA2QyA2QyAyMCA1QyA1RiA0NyA1MCA0NSAyRSAgLUFTTC1DYWxsIFxfR1BF
LgogICAgMzM5MDogNTcgNDEgNEIgMzMgMjAgMjggMjUgNjQgMjkgMEEgMDAgNjggMDAgMDAgMDAg
MDAgIFdBSzMgKCVkKS4uaC4uLi4KICAgIDMzQTA6IDAwIDVDIDJFIDVGIDQ3IDUwIDQ1IDU3IDQx
IDRCIDMzIDY4IEEwIDQ2IDA0IDVCICAuXC5fR1BFV0FLM2guRi5bCiAgICAzM0IwOiAxMiA1QyAy
RSA1RiA1MyA0MiA1RiA0RiA1NyA0MSA0QiAwMCA0RCAzNCAzNiAzMCAgLlwuX1NCX09XQUsuTTQ2
MAogICAgMzNDMDogMEQgMjAgMjAgMjAgMjAgNEIgNDUgNTIgMkQgNDEgNTMgNEMgMkQgNDMgNjEg
NkMgIC4gICAgS0VSLUFTTC1DYWwKICAgIDMzRDA6IDZDIDIwIDVDIDVGIDUzIDQyIDJFIDRGIDU3
IDQxIDRCIDIwIDI4IDI1IDY0IDI5ICBsIFxfU0IuT1dBSyAoJWQpCiAgICAzM0UwOiAwQSAwMCA2
OCAwMCAwMCAwMCAwMCAwMCA1QyAyRSA1RiA1MyA0MiA1RiA0RiA1NyAgLi5oLi4uLi5cLl9TQl9P
VwogICAgMzNGMDogNDEgNEIgNjggNEQgMzAgMzAgMzAgMEIgRUEgMEQgMTQgMTIgNEQgMzAgMzEg
MzkgIEFLaE0wMDAuLi4uLk0wMTkKICAgIDM0MDA6IDBDIEE0IDREIDMwIDMxIDM3IDY4IDY5IDZB
IDZCIDAwIDBBIDIwIDE0IDEyIDREICAuLk0wMTdoaWprLi4gLi5NCiAgICAzNDEwOiAzMCAzMiAz
MCAwRCA0RCAzMCAzMSAzOCA2OCA2OSA2QSA2QiAwMCAwQSAyMCA2QyAgMDIwLk0wMThoaWprLi4g
bAogICAgMzQyMDogMTQgNDcgMEEgNEQgMzAgMzIgMzEgMEMgNzIgNEQgMzAgMzggMzMgNzkgNjgg
MEEgIC5HLk0wMjEuck0wODN5aC4KICAgIDM0MzA6IDE0IDAwIDYwIDcyIDYwIDc5IDY5IDBBIDBG
IDAwIDYwIDcyIDYwIDc5IDZBIDBBICAuLmByYHlpLi4uYHJgeWouCiAgICAzNDQwOiAwQyAwMCA2
MCA3MiAwQSBFMCA2MCA2MCA1QiA4MCA1NiA0MSA1MiA0RCAwMCA2MCAgLi5gci4uYGBbLlZBUk0u
YAogICAgMzQ1MDogMEEgMDggNUIgODEgMEQgNTYgNDEgNTIgNEQgMDMgMDAgMDAgNTYgNDEgNTIg
MzEgIC4uWy4uVkFSTS4uLlZBUjEKICAgIDM0NjA6IDIwIDVCIDg3IDEyIDU2IDQxIDUyIDREIDU2
IDQxIDUyIDMxIDZCIDAzIDAwIDIwICAgWy4uVkFSTVZBUjFrLi4gCiAgICAzNDcwOiA1NiA0MSA1
MiAzMiAyMCA3MCA1NiA0MSA1MiAzMiA2MCA0RCAzNCAzNiAzMCAwRCAgVkFSMiBwVkFSMmBNNDYw
LgogICAgMzQ4MDogMjAgMjAgNEIgNDUgNTIgMkQgNDEgNTMgNEMgMkQgNDMgNzAgNkQgNTIgNjUg
NjEgICAgS0VSLUFTTC1DcG1SZWEKICAgIDM0OTA6IDY0IDUwIDYzIDY5IDY1IDUyIDY1IDY3IDY5
IDczIDc0IDY1IDcyIDIwIDIwIDI4ICBkUGNpZVJlZ2lzdGVyICAoCiAgICAzNEEwOiAzMCA3OCAy
NSA1OCAyQyAyMCAzMCA3OCAyNSA1OCAyQyAyMCAzMCA3OCAyNSA1OCAgMHglWCwgMHglWCwgMHgl
WAogICAgMzRCMDogMkMgMjAgMzAgNzggMjUgNTggMjkgMjAgM0QgMjAgMzAgNzggMjUgNTggMEEg
MDAgICwgMHglWCkgPSAweCVYLi4KICAgIDM0QzA6IDY4IDY5IDZBIDZCIDYwIDAwIEE0IDYwIDE0
IDQ0IDBBIDREIDMwIDMyIDMyIDBEICBoaWprYC4uYC5ELk0wMjIuCiAgICAzNEQwOiA0RCAzNCAz
NiAzMCAwRCAyMCAyMCA0QiA0NSA1MiAyRCA0MSA1MyA0QyAyRCA0MyAgTTQ2MC4gIEtFUi1BU0wt
QwogICAgMzRFMDogNzAgNkQgNTcgNzIgNjkgNzQgNjUgNTAgNjMgNjkgNjUgNTIgNjUgNjcgNjkg
NzMgIHBtV3JpdGVQY2llUmVnaXMKICAgIDM0RjA6IDc0IDY1IDcyIDIwIDI4IDMwIDc4IDI1IDU4
IDJDIDIwIDMwIDc4IDI1IDU4IDJDICB0ZXIgKDB4JVgsIDB4JVgsCiAgICAzNTAwOiAyMCAzMCA3
OCAyNSA1OCAyQyAyMCAzMCA3OCAyNSA1OCAyQyAyMCAzMCA3OCAyNSAgIDB4JVgsIDB4JVgsIDB4
JQogICAgMzUxMDogNTggMjkgMEEgMDAgNjggNjkgNkEgNkIgNkMgMDAgNzIgNEQgMzAgMzggMzMg
NzkgIFgpLi5oaWprbC5yTTA4M3kKICAgIDM1MjA6IDY4IDBBIDE0IDAwIDYwIDcyIDYwIDc5IDY5
IDBBIDBGIDAwIDYwIDcyIDYwIDc5ICBoLi4uYHJgeWkuLi5gcmB5CiAgICAzNTMwOiA2QSAwQSAw
QyAwMCA2MCA3MiAwQSBFMCA2MCA2MCA1QiA4MCA1NiA0MSA1MiA0RCAgai4uLmByLi5gYFsuVkFS
TQogICAgMzU0MDogMDAgNjAgMEEgMDggNUIgODEgMEQgNTYgNDEgNTIgNEQgMDMgMDAgMDAgNTYg
NDEgIC5gLi5bLi5WQVJNLi4uVkEKICAgIDM1NTA6IDUyIDMxIDIwIDVCIDg3IDEyIDU2IDQxIDUy
IDREIDU2IDQxIDUyIDMxIDZCIDAzICBSMSBbLi5WQVJNVkFSMWsuCiAgICAzNTYwOiAwMCAyMCA1
NiA0MSA1MiAzMiAyMCA3MCA2QyA1NiA0MSA1MiAzMiAxNCAyMCA0RCAgLiBWQVIyIHBsVkFSMi4g
TQogICAgMzU3MDogMzAgMzIgMzMgMEIgNEQgMzAgMzEgMzggNjggNjkgNkEgMEEgNzAgMEEgMDMg
MDEgIDAyMy5NMDE4aGlqLnAuLi4KICAgIDM1ODA6IDAwIDREIDMwIDMxIDM4IDY4IDY5IDZBIDBB
IDcwIDBBIDEzIDAxIDAxIDE0IDIyICAuTTAxOGhpai5wLi4uLi4iCiAgICAzNTkwOiA0RCAzMCAz
MiAzNCAwQiA3MCA0RCAzMCAzMSAzOSA2OCA2OSA2QSAwQiAyOCAwMSAgTTAyNC5wTTAxOWhpai4o
LgogICAgMzVBMDogNjAgQTAgMEIgN0IgNjAgMEMgMDAgMDAgMDIgMDAgMDAgQTQgRkYgQTEgMDMg
QTQgIGAuLntgLi4uLi4uLi4uLi4KICAgIDM1QjA6IDAwIDE0IDNCIDREIDMwIDMyIDM2IDBCIDcw
IDREIDMwIDMyIDMxIDY4IDY5IDZBICAuLjtNMDI2LnBNMDIxaGlqCiAgICAzNUMwOiAwQSBBMiA2
MCA3QiA2MCAwRSBGOCBGRiBGRiBGRiBGRiBGRiBGRiBGRiA2MCA3QSAgLi5ge2AuLi4uLi4uLi5g
egogICAgMzVEMDogNjAgMEEgMDQgNjEgN0IgNjEgMEEgMDcgNjEgN0QgNjAgNjEgNjAgN0QgNjAg
MEIgIGAuLmF7YS4uYX1gYWB9YC4KICAgIDM1RTA6IDAwIDAxIDYwIDREIDMwIDMyIDMyIDY4IDY5
IDZBIDBBIEEyIDYwIDE0IDRGIDA2ICAuLmBNMDIyaGlqLi5gLk8uCiAgICAzNUYwOiA0RCAzMCAz
MiAzNSAwQyA0RCAzNCAzMiAzOSA2OCA2OSA2QSAwQSA2OCAwQSAwNSAgTTAyNS5NNDI5aGlqLmgu
LgogICAgMzYwMDogMDEgMDAgQTAgMEYgNkIgNEQgMzQgMzIgMzkgNjggNjkgNkEgMEEgODggMDAg
MEEgIC4uLi5rTTQyOWhpai4uLi4KICAgIDM2MTA6IDA0IDZCIDREIDM0IDMyIDM5IDY4IDY5IDZB
IDBBIDY4IDBBIDA1IDAxIDAxIDcwICAua000MjloaWouaC4uLi5wCiAgICAzNjIwOiAwQSA2NCA2
MSA3MCAwMSA2MiBBMiAxRiA5MCA2MSA2MiA1QiAyMiAwMSA3MCA0RCAgLmRhcC5iLi4uYWJbIi5w
TQogICAgMzYzMDogMzQgMzMgMzAgNjggNjkgNkEgNjMgQTAgMDkgN0IgNjMgMEIgMDAgMDggMDAg
NzYgIDQzMGhpamMuLntjLi4uLnYKICAgIDM2NDA6IDYxIEExIDA0IDcwIDAwIDYyIDREIDM0IDMy
IDM5IDY4IDY5IDZBIDBBIDY4IDBBICBhLi5wLmJNNDI5aGlqLmguCiAgICAzNjUwOiAwNSAwMSAw
MCBBMCAwNSA5MiA2MiBBNCBGRiBBMSAwMyBBNCAwMCAxNCAxNyA0RCAgLi4uLi4uYi4uLi4uLi4u
TQogICAgMzY2MDogMzQgMzMgMzAgMEIgNzAgNEQgMzAgMzEgMzcgNjggNjkgNkEgMEEgNjggMEEg
MTAgIDQzMC5wTTAxN2hpai5oLi4KICAgIDM2NzA6IDBBIDEwIDYwIEE0IDYwIDE0IDNGIDREIDMw
IDMxIDM3IDBFIDcwIDREIDM2IDM0ICAuLmAuYC4/TTAxNy5wTTY0CiAgICAzNjgwOiAzNSA2OCA2
OSA2QSA2MCBBMCAyMSA5MyA2MCAwMCA3MCAwQyBGRiBGRiBGRiA3RiAgNWhpamAuIS5gLnAuLi4u
LgogICAgMzY5MDogNjMgN0QgNjMgMEMgMDAgMDAgMDAgODAgNjMgN0IgN0EgNjMgNkMgMDAgN0Eg
NjMgIGN9Yy4uLi4uY3t6Y2wuemMKICAgIDM2QTA6IDc0IDBBIDIwIDZEIDAwIDAwIDYxIEExIDBC
IDcwIDREIDMwIDMxIDMzIDYwIDZCICB0LiBtLi5hLi5wTTAxM2BrCiAgICAzNkIwOiA2QyA2RCA2
MSBBNCA2MSAxNCAzQiA0RCAzMCAzMSAzOCAwRiA3MCA0RCAzNiAzNCAgbG1hLmEuO00wMTgucE02
NAogICAgMzZDMDogMzUgNjggNjkgNkEgNjAgQTAgMkIgOTIgOTMgNjAgMDAgNzAgMEMgRkYgRkYg
RkYgIDVoaWpgLisuLmAucC4uLi4KICAgIDM2RDA6IDdGIDYzIDdEIDYzIDBDIDAwIDAwIDAwIDgw
IDYzIEEwIDE2IDkyIDkzIDREIDMwICAuY31jLi4uLi5jLi4uLk0wCiAgICAzNkUwOiAzMSAzMyA2
MCAwMCAwMCAwQSAyMCA2MyA0RCAzMCAzMSAzNCA2MCA2QiA2QyA2RCAgMTNgLi4uIGNNMDE0YGts
bQogICAgMzZGMDogNkUgMTQgMzQgNEQgMzQgMzIgMzggMEUgNzAgNEQgMzYgMzQgMzUgNjggNjkg
NkEgIG4uNE00MjgucE02NDVoaWoKICAgIDM3MDA6IDYwIEEwIDE2IDkzIDYwIDAwIDcwIDBBIEZG
IDYzIDdCIDdBIDYzIDZDIDAwIDdBICBgLi4uYC5wLi5je3pjbC56CiAgICAzNzEwOiA2MyA3NCAw
QSAwOCA2RCAwMCAwMCA2MSBBMSAwQiA3MCA0RCAzMCAzMSAzMSA2MCAgY3QuLm0uLmEuLnBNMDEx
YAogICAgMzcyMDogNkIgNkMgNkQgNjEgQTQgNjEgMTQgM0IgNEQgMzQgMzIgMzkgMEYgNzAgNEQg
MzYgIGtsbWEuYS47TTQyOS5wTTYKICAgIDM3MzA6IDM0IDM1IDY4IDY5IDZBIDYwIEEwIDJCIDky
IDkzIDYwIDAwIDcwIDBDIEZGIEZGICA0NWhpamAuKy4uYC5wLi4uCiAgICAzNzQwOiBGRiA3RiA2
MyA3RCA2MyAwQyAwMCAwMCAwMCA4MCA2MyBBMCAxNiA5MiA5MyA0RCAgLi5jfWMuLi4uLmMuLi4u
TQogICAgMzc1MDogMzAgMzEgMzMgNjAgMDAgMDAgMEEgMjAgNjMgNEQgMzAgMzEgMzIgNjAgNkIg
NkMgIDAxM2AuLi4gY00wMTJga2wKICAgIDM3NjA6IDZEIDZFIDE0IDRFIDA0IDREIDMyIDM2IDM1
IDBCIDcwIDAwIDYwIDcwIDREIDM2ICBtbi5OLk0yNjUucC5gcE02CiAgICAzNzcwOiAzNCAzNSA2
OCA2OSA2QSA2MSA3MCA0RCAzNiAzNCAzNiA2MSAwQSAxMCA2MiBBMCAgNDVoaWphcE02NDZhLi5i
LgogICAgMzc4MDogMkYgOTIgOTMgNjIgMDAgNzAgNEQgMzAgMzEgMzMgNjEgNzIgNjIgMEEgMEMg
MDAgIC8uLmIucE0wMTNhcmIuLi4KICAgIDM3OTA6IDBBIDEyIDAxIDYzIDcwIDREIDMwIDMxIDMz
IDYxIDcyIDYyIDBBIDEwIDAwIDBBICAuLi5jcE0wMTNhcmIuLi4uCiAgICAzN0EwOiAwOCAwMSA2
NCBBMCAwQiA5MCA5MyA2MyAwMSA5MyA2NCAwMSA3MCAwMSA2MCBBNCAgLi5kLi4uLmMuLmQucC5g
LgogICAgMzdCMDogNjAgMTQgMzMgNEQgMzAgMzMgMzMgMEIgNzAgMDAgNjAgNzAgNEQgMzYgMzQg
MzUgIGAuM00wMzMucC5gcE02NDUKICAgIDM3QzA6IDY4IDY5IDZBIDYxIDcwIDREIDM2IDM0IDM2
IDYxIDBBIDEwIDYyIEEwIDE1IDkyICBoaWphcE02NDZhLi5iLi4uCiAgICAzN0QwOiA5MyA2MiAw
MCA3MCA0RCAzMCAzMSAzMyA2MSA3MiA2MiAwQSAwQyAwMCAwQSAwQSAgLmIucE0wMTNhcmIuLi4u
LgogICAgMzdFMDogMEEgMDIgNjAgQTQgNjAgMTQgNDIgMDcgNEQgMzAgMzIgMzcgMEIgNzAgMDAg
NjAgIC4uYC5gLkIuTTAyNy5wLmAKICAgIDM3RjA6IDcwIDREIDM2IDM0IDM1IDY4IDY5IDZBIDYx
IDcwIDREIDM2IDM0IDM2IDYxIDBBICBwTTY0NWhpamFwTTY0NmEuCiAgICAzODAwOiAxMCA2MiBB
MCAxNCA5MiA5MyA2MiAwMCA3MCA0RCAzMCAzMSAzMyA2MSA3MiA2MiAgLmIuLi4uYi5wTTAxM2Fy
YgogICAgMzgxMDogMEEgMTAgMDAgMDAgMEEgMDIgNjAgNEQgMzQgMzYgMzAgMEQgMjAgMjAgNEIg
NDUgIC4uLi4uLmBNNDYwLiAgS0UKICAgIDM4MjA6IDUyIDJEIDQxIDUzIDRDIDJEIDQzIDcwIDZE
IDQ3IDY1IDc0IDUwIDYzIDY5IDY1ICBSLUFTTC1DcG1HZXRQY2llCiAgICAzODMwOiA0MSA3MyA3
MCA2RCAyMCAyOCAzMCA3OCAyNSA1OCAyQyAyMCAzMCA3OCAyNSA1OCAgQXNwbSAoMHglWCwgMHgl
WAogICAgMzg0MDogMkMgMjAgMzAgNzggMjUgNTggMjkgMjAgM0QgMjAgMzAgNzggMjUgNTggMEEg
MDAgICwgMHglWCkgPSAweCVYLi4KICAgIDM4NTA6IDY4IDY5IDZBIDYwIDAwIDAwIEE0IDYwIDE0
IDRGIDA2IDREIDMwIDMyIDM4IDBDICBoaWpgLi4uYC5PLk0wMjguCiAgICAzODYwOiA0RCAzNCAz
NiAzMCAwRCAyMCAyMCA0QiA0NSA1MiAyRCA0MSA1MyA0QyAyRCA0MyAgTTQ2MC4gIEtFUi1BU0wt
QwogICAgMzg3MDogNzAgNkQgNTMgNjUgNzQgNTAgNjMgNjkgNjUgNDEgNzMgNzAgNkQgMjAgMjgg
MzAgIHBtU2V0UGNpZUFzcG0gKDAKICAgIDM4ODA6IDc4IDI1IDU4IDJDIDIwIDMwIDc4IDI1IDU4
IDJDIDIwIDMwIDc4IDI1IDU4IDJDICB4JVgsIDB4JVgsIDB4JVgsCiAgICAzODkwOiAyMCAzMCA3
OCAyNSA1OCAyOSAwQSAwMCA2OCA2OSA2QSA2QiAwMCAwMCA3MCA0RCAgIDB4JVgpLi5oaWprLi5w
TQogICAgMzhBMDogMzYgMzQgMzUgNjggNjkgNkEgNjEgNzAgNEQgMzYgMzQgMzYgNjEgMEEgMTAg
NjIgIDY0NWhpamFwTTY0NmEuLmIKICAgIDM4QjA6IEEwIDE3IDkyIDkzIDYyIDAwIDREIDMwIDMx
IDM0IDYxIDcyIDYyIDBBIDEwIDAwICAuLi4uYi5NMDE0YXJiLi4uCiAgICAzOEMwOiAwMCAwQSAw
MiA3QiA2QiAwQSAwMyAwMCAxNCA0RCAxNCA0RCAzMSAzMSAzNCAwQyAgLi4ue2suLi4uTS5NMTE0
LgogICAgMzhEMDogNzAgMDAgNjcgQTAgNDggMEUgOTIgNEQgMzAgMzAgMzEgNjggNjkgMDggNEQg
MzEgIHAuZy5ILi5NMDAxaGkuTTEKICAgIDM4RTA6IDMxIDM1IDExIDAzIDBBIDA1IDhCIDREIDMx
IDMxIDM1IDAwIDREIDMxIDMxIDM2ICAxNS4uLi4uTTExNS5NMTE2CiAgICAzOEYwOiA1QiAxMyA0
RCAzMSAzMSAzNSAwQSAxMCAwQSAwMyA0RCAzMSAzMSAzNyA1QiAxMyAgWy5NMTE1Li4uLk0xMTdb
LgogICAgMzkwMDogNEQgMzEgMzEgMzUgMEEgMTMgMEEgMDUgNEQgMzEgMzEgMzggOEMgNEQgMzEg
MzEgIE0xMTUuLi4uTTExOC5NMTEKICAgIDM5MTA6IDM1IDBBIDAzIDREIDMxIDMxIDM5IDhDIDRE
IDMxIDMxIDM1IDBBIDA0IDREIDMxICA1Li5NMTE5Lk0xMTUuLk0xCiAgICAzOTIwOiAzMiAzMCA3
MCAwQSAwNSA0RCAzMSAzMSAzNiA3MCAwMCA0RCAzMSAzMSAzOSA3MCAgMjBwLi5NMTE2cC5NMTE5
cAogICAgMzkzMDogNjggNEQgMzEgMzEgMzggNzAgNjkgNEQgMzEgMzEgMzcgQTAgMjAgOTMgNkEg
MDAgIGhNMTE4cGlNMTE3LiAuai4KICAgIDM5NDA6IEEwIDFCIDkyIDkzIDZCIDAxIDcwIDAwIDRE
IDMxIDMyIDMwIDVDIDJFIDVGIDUzICAuLi4uay5wLk0xMjBcLl9TCiAgICAzOTUwOiA0MiA1RiA0
MSA0QyA0OSA0MiAwQSAwNiA0RCAzMSAzMSAzNSBBMSA0RiAwNSBBMCAgQl9BTElCLi5NMTE1Lk8u
LgogICAgMzk2MDogMUIgOTIgOTMgNkIgMDEgNzAgMDEgNEQgMzEgMzIgMzAgNUMgMkUgNUYgNTMg
NDIgIC4uLmsucC5NMTIwXC5fU0IKICAgIDM5NzA6IDVGIDQxIDRDIDQ5IDQyIDBBIDA2IDREIDMx
IDMxIDM1IDcwIDREIDMwIDMxIDM3ICBfQUxJQi4uTTExNXBNMDE3CiAgICAzOTgwOiAwMCA2OCA2
OSAwQSAxOSAwMCAwQSAwOCA2MCBBMCAzMiA5MCA5MiA5MyA2MCAwMCAgLmhpLi4uLi5gLjIuLi5g
LgogICAgMzk5MDogOTIgOTMgNjAgMEEgRkYgNzAgNEQgMzAgMzEgMzkgNjAgMDAgMDAgMDAgNjEg
NzAgIC4uYC4ucE0wMTlgLi4uYXAKICAgIDM5QTA6IDBDIEZGIEZGIEZGIDdGIDYyIDdEIDYyIDBD
IDAwIDAwIDAwIDgwIDYyIEEwIDBEICAuLi4uLmJ9Yi4uLi4uYi4uCiAgICAzOUIwOiA5MCA5MiA5
MyA2MSAwMCA5MiA5MyA2MSA2MiA3MCAwMSA2NyBBMSA0NyAwNSBBMCAgLi4uYS4uLmFicC5nLkcu
LgogICAgMzlDMDogMEEgOTMgNkEgMDAgNEQgMzAgMzAgMzIgMDEgNjkgQTEgNDkgMDQgNEQgMzAg
MzAgIC4uai5NMDAyLmkuSS5NMDAKICAgIDM5RDA6IDMyIDAwIDY5IDcwIDREIDMwIDMxIDM3IDAw
IDY4IDY5IDBBIDE5IDAwIDBBIDA4ICAyLmlwTTAxNy5oaS4uLi4uCiAgICAzOUUwOiA2MCBBMCAz
MiA5MCA5MiA5MyA2MCAwMCA5MiA5MyA2MCAwQSBGRiA3MCA0RCAzMCAgYC4yLi4uYC4uLmAuLnBN
MAogICAgMzlGMDogMzEgMzkgNjAgMDAgMDAgMDAgNjEgNzAgMEMgRkYgRkYgRkYgN0YgNjIgN0Qg
NjIgIDE5YC4uLmFwLi4uLi5ifWIKICAgIDNBMDA6IDBDIDAwIDAwIDAwIDgwIDYyIEEwIDBEIDkw
IDkyIDkzIDYxIDAwIDkyIDkzIDYxICAuLi4uLmIuLi4uLmEuLi5hCiAgICAzQTEwOiA2MiA3MCAw
MSA2NyBBNCA2NyAxNCA0NSAwQiA0RCAzMiAzNCAzOCAwOSBBMCAyQiAgYnAuZy5nLkUuTTI0OC4u
KwogICAgM0EyMDogOTMgNEQgMzAgMzggMzUgMEEgMDggQTAgMTIgOTMgNjggMDAgQTQgNEQgMzAg
MzEgIC5NMDg1Li4uLi5oLi5NMDEKICAgIDNBMzA6IDM3IDAwIDBBIDA3IDAxIDBBIDE5IDAwIDBB
IDA4IEExIDBGIEE0IDREIDMwIDMxICA3Li4uLi4uLi4uLi4uTTAxCiAgICAzQTQwOiAzNyAwMCAw
QSAwOCAwMSAwQSAxOSAwMCAwQSAwOCBBMSA0MSAwOCBBMCA0QSAwNCAgNy4uLi4uLi4uLi5BLi5K
LgogICAgM0E1MDogOTIgOTUgNEQgMzAgMzggMzUgMEEgMEIgQTAgMUEgOTIgOTUgNEQgMzAgMzgg
MzUgIC4uTTA4NS4uLi4uLk0wODUKICAgIDNBNjA6IDBBIDBEIEE0IDREIDMwIDMxIDM3IDAwIDBB
IDA4IDcyIDY4IDAxIDAwIDBBIDE5ICAuLi5NMDE3Li4ucmguLi4uCiAgICAzQTcwOiAwMCAwQSAw
OCBBMSAyNCBBMCAxMiA5MyA2OCAwMCBBNCA0RCAzMCAzMSAzNyAwMCAgLi4uLiQuLi5oLi5NMDE3
LgogICAgM0E4MDogMEEgMDcgMDEgMEEgMTkgMDAgMEEgMDggQTEgMEYgQTQgNEQgMzAgMzEgMzcg
MDAgIC4uLi4uLi4uLi4uTTAxNy4KICAgIDNBOTA6IDBBIDA4IDY4IDBBIDE5IDAwIDBBIDA4IEEx
IDMzIEEwIDJEIDkyIDk1IDREIDMwICAuLmguLi4uLi4zLi0uLk0wCiAgICAzQUEwOiAzOCAzNSAw
QSAwOSBBMCAxMiA5MyA2OCAwMCBBNCA0RCAzMCAzMSAzNyAwMCAwQSAgODUuLi4uLmguLk0wMTcu
LgogICAgM0FCMDogMDggMDEgMEEgMTkgMDAgMEEgMDggQTEgMTAgQTQgNEQgMzAgMzEgMzcgMDAg
MEEgIC4uLi4uLi4uLi5NMDE3Li4KICAgIDNBQzA6IDA4IDBBIDAyIDBBIDE5IDAwIDBBIDA4IEEx
IDAzIEE0IDAwIDE0IDQ5IDE1IDREICAuLi4uLi4uLi4uLi4uSS5NCiAgICAzQUQwOiAzNCAzMCAz
MSAwQiA3QiA0RCAzNCAzMyAzMCA2OCA2OSA2QSAwQSAwRiA2MCBBMCAgNDAxLntNNDMwaGlqLi5g
LgogICAgM0FFMDogMEMgOTEgOTMgNjAgMEEgMEYgOTMgNjAgMDAgQTQgMEEgRkYgQTAgMjQgOTAg
OTIgIC4uLmAuLi5gLi4uLi4kLi4KICAgIDNBRjA6IDk1IDREIDMwIDM4IDM1IDBBIDBCIDkyIDk0
IDREIDMwIDM4IDM1IDBBIDBDIEEwICAuTTA4NS4uLi5NMDg1Li4uCiAgICAzQjAwOiAwQiA5MiA5
NCA2OCAwQSAwMyA3NCAwQSAwNiA2OCA2MyBBMSAwNSA3MCAwQSAwNiAgLi4uaC4udC4uaGMuLnAu
LgogICAgM0IxMDogNjMgQTEgMDUgNzAgMEEgMDMgNjMgNzIgMEMgMDAgMTAgMDAgMTQgNzkgNjMg
MEEgIGMuLnAuLmNyLi4uLi55Yy4KICAgIDNCMjA6IDE0IDAwIDYzIDdCIDY5IDBBIDFGIDYwIDdE
IDc5IDYwIDBBIDAzIDAwIDdCIDZBICAuLmN7aS4uYH15YC4uLntqCiAgICAzQjMwOiAwQSAwNyAw
MCA2MCA3MCAwMCA2MSBBMCAxNiA5MCA5MiA5NSA0RCAzMCAzOCAzNSAgLi4uYHAuYS4uLi4uTTA4
NQogICAgM0I0MDogMEEgMDkgOTIgOTQgNEQgMzAgMzggMzUgMEEgMEEgNzAgMEEgMDkgNjIgQTEg
NEMgIC4uLi5NMDg1Li5wLi5iLkwKICAgIDNCNTA6IDA5IEEwIDE2IDkwIDkyIDk1IDREIDMwIDM4
IDM1IDBBIDBCIDkyIDk0IDREIDMwICAuLi4uLi5NMDg1Li4uLk0wCiAgICAzQjYwOiAzOCAzNSAw
QSAwQyA3MCAwQSAxNiA2MiBBMSA0MiAwOCBBMCAwQyA5MyA0RCAzMCAgODUuLnAuLmIuQi4uLi5N
MAogICAgM0I3MDogMzggMzUgMEEgMEQgNzAgMEEgMEQgNjIgQTEgNDIgMDcgQTAgMEMgOTMgNEQg
MzAgIDg1Li5wLi5iLkIuLi4uTTAKICAgIDNCODA6IDM4IDM1IDBBIDBFIDcwIDBBIDBBIDYyIEEx
IDQyIDA2IEEwIDBDIDkzIDREIDMwICA4NS4ucC4uYi5CLi4uLk0wCiAgICAzQjkwOiAzOCAzNSAw
QSAwRiA3MCAwQSAxMCA2MiBBMSA0MiAwNSBBMCAwQyA5MyA0RCAzMCAgODUuLnAuLmIuQi4uLi5N
MAogICAgM0JBMDogMzggMzUgMEEgMTAgNzAgMEEgMTUgNjIgQTEgNDIgMDQgQTAgMEMgOTMgNEQg
MzAgIDg1Li5wLi5iLkIuLi4uTTAKICAgIDNCQjA6IDM4IDM1IDBBIDEyIDcwIDBBIDE0IDYyIEEx
IDMyIEEwIDBDIDkzIDREIDMwIDM4ICA4NS4ucC4uYi4yLi4uTTA4CiAgICAzQkMwOiAzNSAwQSAx
MyA3MCAwQSAwRCA2MiBBMSAyMyBBMCAwQyA5MyA0RCAzMCAzOCAzNSAgNS4ucC4uYi4jLi4uTTA4
NQogICAgM0JEMDogMEEgMTQgNzAgMEEgMTIgNjIgQTEgMTQgQTAgMEMgOTMgNEQgMzAgMzggMzUg
MEEgIC4ucC4uYi4uLi4uTTA4NS4KICAgIDNCRTA6IDE1IDcwIDBBIDEyIDYyIEExIDA1IDcwIDBB
IDEyIDYyIDcwIDREIDMyIDM0IDM5ICAucC4uYi4ucC4uYnBNMjQ5CiAgICAzQkYwOiAwMCAwMCAw
MCA3MiA3NyA2MSAwQSAwNCAwMCA2MyAwMCA2NCBBMiAxQyA5MCA5NSAgLi4ucndhLi4uYy5kLi4u
LgogICAgM0MwMDogNjEgNjIgOTIgOTMgNjQgNjAgNzUgNjEgNzAgNEQgMzIgMzQgMzkgMDAgMDAg
MDAgIGFiLi5kYHVhcE0yNDkuLi4KICAgIDNDMTA6IDcyIDc3IDYxIDBBIDA0IDAwIDYzIDAwIDY0
IEEwIDA3IDkyIDk0IDYxIDYyIEE0ICByd2EuLi5jLmQuLi4uYWIuCiAgICAzQzIwOiA2MSBBMSAw
NCBBNCAwQSBGRiAxNCA0NSAxQyA0RCAzNCAzNyAzMSAwQiBBMCAyNCAgYS4uLi4uLkUuTTQ3MS4u
JAogICAgM0MzMDogOTAgOTIgOTUgNEQgMzAgMzggMzUgMEEgMEIgOTIgOTQgNEQgMzAgMzggMzUg
MEEgIC4uLk0wODUuLi4uTTA4NS4KICAgIDNDNDA6IDBDIEEwIDBCIDkyIDk0IDY4IDBBIDAzIDc0
IDBBIDA0IDY4IDY1IEExIDA1IDcwICAuLi4uLmguLnQuLmhlLi5wCiAgICAzQzUwOiAwQSAwNCA2
NSBBMSAwNSA3MiA2OCAwMSA2NSA5OSA2OSA2NCBBMCAyMiA5MCA5MiAgLi5lLi5yaC5lLmlkLiIu
LgogICAgM0M2MDogOTUgNEQgMzAgMzggMzUgMEEgMEQgOTIgOTQgNEQgMzAgMzggMzUgMEEgMEUg
QTAgIC5NMDg1Li4uLk0wODUuLi4KICAgIDNDNzA6IDBGIDkyIDk1IDY0IDBBIDAzIDc0IDY0IDBB
IDAzIDY0IDcyIDY1IDAxIDY1IEExICAuLi5kLi50ZC4uZHJlLmUuCiAgICAzQzgwOiA0NCAxNCBB
MCAzRCA5MyA0RCAzMCAzOCAzNSAwQSAwRiBBMCAxMCA5MiA5NSA2NCAgRC4uPS5NMDg1Li4uLi4u
ZAogICAgM0M5MDogMEEgMEMgNzQgNjQgMEEgMEMgNjQgNzIgNjUgMEEgMDMgNjUgQTEgMjMgQTAg
MEYgIC4udGQuLmRyZS4uZS4jLi4KICAgIDNDQTA6IDkzIDY0IDBBIDBCIDc0IDY0IDBBIDBCIDY0
IDcyIDY1IDBBIDAyIDY1IEExIDExICAuZC4udGQuLmRyZS4uZS4uCiAgICAzQ0IwOiBBMCAwRiA5
MiA5NSA2NCAwQSAwNSA3NCA2NCAwQSAwNSA2NCA3MiA2NSAwMSA2NSAgLi4uLmQuLnRkLi5kcmUu
ZQogICAgM0NDMDogQTEgNDMgMTAgQTAgM0UgOTMgNEQgMzAgMzggMzUgMEEgMTIgQTAgMTAgOTIg
OTUgIC5DLi4+Lk0wODUuLi4uLi4KICAgIDNDRDA6IDY0IDBBIDEwIDc0IDY0IDBBIDEwIDY0IDcy
IDY1IDBBIDAzIDY1IEExIDI0IEEwICBkLi50ZC4uZHJlLi5lLiQuCiAgICAzQ0UwOiAxMCA5MiA5
NSA2NCAwQSAwQyA3NCA2NCAwQSAwQyA2NCA3MiA2NSAwQSAwMiA2NSAgLi4uZC4udGQuLmRyZS4u
ZQogICAgM0NGMDogQTEgMTEgQTAgMEYgOTIgOTUgNjQgMEEgMDYgNzQgNjQgMEEgMDYgNjQgNzIg
NjUgIC4uLi4uLmQuLnRkLi5kcmUKICAgIDNEMDA6IDAxIDY1IEExIDQxIDBDIEEwIDE4IDkzIDRE
IDMwIDM4IDM1IDBBIDEwIEEwIDBGICAuZS5BLi4uLk0wODUuLi4uCiAgICAzRDEwOiA5MiA5NSA2
NCAwQSAwOSA3NCA2NCAwQSAwOSA2NCA3MiA2NSAwMSA2NSBBMSA0NSAgLi5kLi50ZC4uZHJlLmUu
RQogICAgM0QyMDogMEEgQTAgMTggOTMgNEQgMzAgMzggMzUgMEEgMTMgQTAgMEYgOTIgOTUgNjQg
MEEgIC4uLi5NMDg1Li4uLi4uZC4KICAgIDNEMzA6IDA1IDc0IDY0IDBBIDA1IDY0IDcyIDY1IDAx
IDY1IEExIDQ5IDA4IEEwIDJCIDkzICAudGQuLmRyZS5lLkkuLisuCiAgICAzRDQwOiA0RCAzMCAz
OCAzNSAwQSAxNCBBMCAxMCA5MiA5NSA2NCAwQSAwOSA3NCA2NCAwQSAgTTA4NS4uLi4uLmQuLnRk
LgogICAgM0Q1MDogMDkgNjQgNzIgNjUgMEEgMDIgNjUgQTEgMTEgQTAgMEYgOTIgOTUgNjQgMEEg
MDMgIC5kcmUuLmUuLi4uLi5kLi4KICAgIDNENjA6IDc0IDY0IDBBIDAzIDY0IDcyIDY1IDAxIDY1
IEExIDRBIDA1IEEwIDJCIDkzIDREICB0ZC4uZHJlLmUuSi4uKy5NCiAgICAzRDcwOiAzMCAzOCAz
NSAwQSAxNSBBMCAxMCA5MiA5NSA2NCAwQSAwOSA3NCA2NCAwQSAwOSAgMDg1Li4uLi4uZC4udGQu
LgogICAgM0Q4MDogNjQgNzIgNjUgMEEgMDIgNjUgQTEgMTEgQTAgMEYgOTIgOTUgNjQgMEEgMDMg
NzQgIGRyZS4uZS4uLi4uLmQuLnQKICAgIDNEOTA6IDY0IDBBIDAzIDY0IDcyIDY1IDAxIDY1IEEx
IDJCIEEwIDI5IDkyIDk1IDY0IDBBICBkLi5kcmUuZS4rLikuLmQuCiAgICAzREEwOiAwOCA3NCA2
NCAwQSAwOCA2NCBBMCAxNyA5MCA5MiA5NSA0RCAzMCAzOCAzNSAwQSAgLnRkLi5kLi4uLi5NMDg1
LgogICAgM0RCMDogMEIgOTIgOTQgNEQgMzAgMzggMzUgMEEgMEMgNzIgNjUgMEEgMDQgNjUgQTEg
MDUgIC4uLk0wODUuLnJlLi5lLi4KICAgIDNEQzA6IDcyIDY1IDAxIDY1IDcyIDBDIDAwIDAwIDAw
IDExIDc5IDY1IDBBIDE0IDAwIDY2ICByZS5lci4uLi4ueWUuLi5mCiAgICAzREQwOiA3MiA2NiA3
OSA2QSAwQSAxMCAwMCA2NiBBMCAxMSA5MSA5MyA2QSAwMCA5MyA2QSAgcmZ5ai4uLmYuLi4uai4u
agogICAgM0RFMDogMEEgMDQgNzIgNjYgNzkgNjQgMEEgMEMgMDAgNjYgQTQgNjYgMTQgNDcgMUEg
NEQgIC4ucmZ5ZC4uLmYuZi5HLk0KICAgIDNERjA6IDM0IDMwIDMyIDBCIDcwIDREIDM0IDMwIDMx
IDY4IDY5IDZBIDY0IEEwIDQ2IDE5ICA0MDIucE00MDFoaWpkLkYuCiAgICAzRTAwOiA5MiA5MyA2
NCAwQSBGRiBBMCAzRiA5MCA5MiA5NSA0RCAzMCAzOCAzNSAwQSAwOCAgLi5kLi4uPy4uLk0wODUu
LgogICAgM0UxMDogOTIgOTQgNEQgMzAgMzggMzUgMEEgMEIgNzIgNEQgMzQgMzcgMzEgNjggNjQg
MEEgIC4uTTA4NS4uck00NzFoZC4KICAgIDNFMjA6IDA4IDBCIDg4IDAxIDY3IDcwIDREIDMyIDM0
IDM5IDAwIDAwIDAwIDY3IDYwIDdCICAuLi4uZ3BNMjQ5Li4uZ2B7CiAgICAzRTMwOiA2MCAwQyBG
RiBERiBGRiBGRiA2MCA0RCAzMiAzNSAzMCAwMCAwMCAwMCA2NyA3RCAgYC4uLi4uYE0yNTAuLi5n
fQogICAgM0U0MDogNjAgMEIgMDAgMjAgMDAgN0IgNEQgMzAgMzEgMzkgMDAgMDAgMDAgMEEgODQg
MEMgIGAuLiAue00wMTkuLi4uLi4KICAgIDNFNTA6IEZGIEZDIDAwIEZGIDYxIDdEIDc5IDY5IDBB
IDEzIDAwIDc5IDZBIDBBIDEwIDAwICAuLi4uYX15aS4uLnlqLi4uCiAgICAzRTYwOiA2MiA3RCA2
MSA2MiA2MSA0RCAzMCAzMiAzMCAwMCAwMCAwMCAwQSA4NCA3RCA2MSAgYn1hYmFNMDIwLi4uLi59
YQogICAgM0U3MDogMEIgMDAgMDEgMDAgNEQgMzAgMzIgMzAgMDAgMDAgMDAgMEEgODQgN0QgNjEg
MEIgIC4uLi5NMDIwLi4uLi59YS4KICAgIDNFODA6IDAwIDAzIDAwIEEwIDQzIDA3IDkyIDk1IDRE
IDMwIDM4IDM1IDBBIDBDIDcwIDREICAuLi4uQy4uLk0wODUuLnBNCiAgICAzRTkwOiAzMCAzMSAz
OSAwMCAwMCAwMCAwQSA4NCA2MyA3MCAwQiBFQSA0RSA2NSA3MCA0RCAgMDE5Li4uLi5jcC4uTmVw
TQogICAgM0VBMDogMzQgMzUgMzMgNjYgNzAgMDAgNEQgMzQgMzUgMzMgQTIgNDYgMDQgOTAgOTQg
NjUgIDQ1M2ZwLk00NTMuRi4uLmUKICAgIDNFQjA6IDAwIDkyIDkzIDdCIDYzIDBCIDAwIDA0IDAw
IDBCIDAwIDA0IDcwIDc0IDY1IDAxICAuLi57Yy4uLi4uLi5wdGUuCiAgICAzRUMwOiAwMCA2NSA1
QiAyMSAwQSA2MyBBMCAwRiA5MyA3QiA2NSAwQiBGRiAwMyAwMCAwMCAgLmVbIS5jLi4ue2UuLi4u
LgogICAgM0VEMDogNzAgNjYgNEQgMzQgMzUgMzMgNzAgNEQgMzAgMzEgMzkgMDAgMDAgMDAgMEEg
ODQgIHBmTTQ1M3BNMDE5Li4uLi4KICAgIDNFRTA6IDYzIEEwIDBGIDkzIDdCIDY1IDBCIEZGIDAz
IDAwIDAwIDcwIDAwIDREIDM0IDM1ICBjLi4ue2UuLi4uLnAuTTQ1CiAgICAzRUYwOiAzMyA3MCA2
NiA0RCAzNCAzNSAzMyA3MiA0RCAzNCAzNyAzMSA2OCA2NCAwQSAwNCAgM3BmTTQ1M3JNNDcxaGQu
LgogICAgM0YwMDogMEIgOTQgMDIgNjYgNzAgNEQgMzIgMzQgMzkgMDAgMDAgMDAgNjYgNjMgNzAg
MEIgIC4uLmZwTTI0OS4uLmZjcC4KICAgIDNGMTA6IEVBIDRFIDY1IDcwIDREIDM0IDM1IDMzIDY0
IDcwIDAwIDREIDM0IDM1IDMzIEEyICAuTmVwTTQ1M2RwLk00NTMuCiAgICAzRjIwOiA0MyAwNCA5
MCA5NCA2NSAwMCA5MiA5MyA3QiA2MyAwQSAzRiAwMCAwQSAxRiA3MCAgQy4uLmUuLi57Yy4/Li4u
cAogICAgM0YzMDogNzQgNjUgMDEgMDAgNjUgNUIgMjEgMEEgNjMgQTAgMEYgOTMgN0IgNjUgMEIg
RkYgIHRlLi5lWyEuYy4uLntlLi4KICAgIDNGNDA6IDAzIDAwIDAwIDcwIDY0IDREIDM0IDM1IDMz
IDcwIDREIDMyIDM0IDM5IDAwIDAwICAuLi5wZE00NTNwTTI0OS4uCiAgICAzRjUwOiAwMCA2NiA2
MyBBMCAwRiA5MyA3QiA2NSAwQiBGRiAwMyAwMCAwMCA3MCAwMCA0RCAgLmZjLi4ue2UuLi4uLnAu
TQogICAgM0Y2MDogMzQgMzUgMzMgNzAgNjQgNEQgMzQgMzUgMzMgNEQgMzAgMzIgMzAgMDAgMDAg
MDAgIDQ1M3BkTTQ1M00wMjAuLi4KICAgIDNGNzA6IDBBIDg0IDdEIDYxIDBCIDAwIDAxIDAwIEEw
IDFCIDkwIDkyIDk1IDREIDMwIDM4ICAuLn1hLi4uLi4uLi4uTTA4CiAgICAzRjgwOiAzNSAwQSAw
OCA5MiA5NCA0RCAzMCAzOCAzNSAwQSAwQiA0RCAzMiAzNSAzMCAwMCAgNS4uLi5NMDg1Li5NMjUw
LgogICAgM0Y5MDogMDAgMDAgNjcgNjAgMTQgNEEgMDQgNEQgMzQgMzAgMzMgMEMgNzAgNEQgMzQg
MzAgIC4uZ2AuSi5NNDAzLnBNNDAKICAgIDNGQTA6IDMxIDY4IDY5IDZBIDY0IEEwIDM5IDkyIDkz
IDY0IDBBIEZGIDcyIDREIDM0IDM3ICAxaGlqZC45Li5kLi5yTTQ3CiAgICAzRkIwOiAzMSA2OCA2
NCAwQSAwNCAwQiA4MCAwMiA2MiA3MCA0RCAzMiAzNCAzOSAwMCAwMCAgMWhkLi4uLi5icE0yNDku
LgogICAgM0ZDMDogMDAgNjIgNjAgN0IgNjAgMEMgRkYgRkYgQkYgRkYgNjAgNzAgNkIgNjEgN0Qg
NjAgIC5iYHtgLi4uLi5gcGthfWAKICAgIDNGRDA6IDc5IDYxIDBBIDE2IDAwIDYwIDREIDMyIDM1
IDMwIDAwIDAwIDAwIDYyIDYwIDE0ICB5YS4uLmBNMjUwLi4uYmAuCiAgICAzRkUwOiA0OSAxMyA0
RCAzNCAzNyAzMiAwQyA3MCA0RCAzNCAzMCAzMSA2OCA2OSA2QSA2NCAgSS5NNDcyLnBNNDAxaGlq
ZAogICAgM0ZGMDogQTAgNDggMTIgOTIgOTMgNjQgMEEgRkYgNzIgNEQgMzQgMzcgMzEgNjggNjQg
MEEgIC5ILi4uZC4uck00NzFoZC4KICAgIDQwMDA6IDA4IDBCIDI4IDA0IDY3IEEwIDFFIDkwIDky
IDk1IDREIDMwIDM4IDM1IDBBIDBEICAuLiguZy4uLi4uTTA4NS4uCiAgICA0MDEwOiA5MiA5NCA0
RCAzMCAzOCAzNSAwQSAwRSBBMCAwQiA5MiA5NSA2NCAwQSAwMyA3NCAgLi5NMDg1Li4uLi4uZC4u
dAogICAgNDAyMDogNjQgMEEgMDMgNjQgQTEgNDggMEIgQTAgMTQgOTMgNEQgMzAgMzggMzUgMEEg
MEYgIGQuLmQuSC4uLi5NMDg1Li4KICAgIDQwMzA6IEEwIDBCIDkyIDk1IDY0IDBBIDA1IDc0IDY0
IDBBIDA1IDY0IEExIDQwIDBBIEEwICAuLi4uZC4udGQuLmQuQC4uCiAgICA0MDQwOiAxNCA5MyA0
RCAzMCAzOCAzNSAwQSAxMiBBMCAwQiA5MiA5NSA2NCAwQSAwNiA3NCAgLi5NMDg1Li4uLi4uZC4u
dAogICAgNDA1MDogNjQgMEEgMDYgNjQgQTEgNDggMDggQTAgMTQgOTMgNEQgMzAgMzggMzUgMEEg
MTMgIGQuLmQuSC4uLi5NMDg1Li4KICAgIDQwNjA6IEEwIDBCIDkyIDk1IDY0IDBBIDA1IDc0IDY0
IDBBIDA1IDY0IEExIDQwIDA3IEEwICAuLi4uZC4udGQuLmQuQC4uCiAgICA0MDcwOiAxNCA5MyA0
RCAzMCAzOCAzNSAwQSAxMCBBMCAwQiA5MiA5NSA2NCAwQSAwOSA3NCAgLi5NMDg1Li4uLi4uZC4u
dAogICAgNDA4MDogNjQgMEEgMDkgNjQgQTEgNDggMDUgQTAgMjIgOTMgNEQgMzAgMzggMzUgMEEg
MTQgIGQuLmQuSC4uIi5NMDg1Li4KICAgIDQwOTA6IEEwIDBCIDkyIDk1IDY0IDBBIDA5IDc0IDY0
IDBBIDA5IDY0IEExIDBEIEEwIDBCICAuLi4uZC4udGQuLmQuLi4uCiAgICA0MEEwOiA5MiA5NSA2
NCAwQSAwMyA3NCA2NCAwQSAwMyA2NCBBMSAzMiBBMCAyMiA5MyA0RCAgLi5kLi50ZC4uZC4yLiIu
TQogICAgNDBCMDogMzAgMzggMzUgMEEgMTUgQTAgMEIgOTIgOTUgNjQgMEEgMDkgNzQgNjQgMEEg
MDkgIDA4NS4uLi4uLmQuLnRkLi4KICAgIDQwQzA6IDY0IEExIDBEIEEwIDBCIDkyIDk1IDY0IDBB
IDAzIDc0IDY0IDBBIDAzIDY0IEExICBkLi4uLi4uZC4udGQuLmQuCiAgICA0MEQwOiAwRCBBMCAw
QiA5MiA5NSA2NCAwQSAwOCA3NCA2NCAwQSAwOCA2NCA3MCA0RCAzMiAgLi4uLi5kLi50ZC4uZHBN
MgogICAgNDBFMDogMzQgMzkgMDAgMDAgMDAgNjcgNjAgNzkgMDEgNjQgNjEgNzkgNkIgNjQgNjIg
QTAgIDQ5Li4uZ2B5LmRheWtkYi4KICAgIDQwRjA6IDI5IDkyIDkzIDdCIDYwIDYxIDAwIDYyIDdC
IDYwIDdGIDBDIEZGIEZGIEZGIEZGICApLi57YGEuYntgLi4uLi4uCiAgICA0MTAwOiA2MSAwMCA2
MyA0RCAzMiAzNSAzMCAwMCAwMCAwMCA2NyA3RCA2MyA2MiAwMCA3MCAgYS5jTTI1MC4uLmd9Y2Iu
cAogICAgNDExMDogNEQgMzIgMzQgMzkgMDAgMDAgMDAgNjcgNjAgMTQgNDkgMDQgNEQgMzYgMzQg
MzUgIE0yNDkuLi5nYC5JLk02NDUKICAgIDQxMjA6IDBCIDcwIDAwIDYzIDcwIDREIDMwIDM4IDMz
IDYwIDdBIDREIDMwIDM4IDMzIDBBICAucC5jcE0wODNgek0wODMuCiAgICA0MTMwOiAxNCA2MSA3
QiA2MSAwQiAwMCAwRiA2MiA3MiA2MiAwQiAwMCAwMSA2MiBBMCAwQSAgLmF7YS4uLmJyYi4uLmIu
LgogICAgNDE0MDogOTIgOTUgNzIgNjEgNjggMDAgNjIgQTQgNjMgNzIgNzkgNjggMEEgMTQgMDAg
NjAgIC4ucmFoLmIuY3J5aC4uLmAKICAgIDQxNTA6IDYwIDcyIDc5IDY5IDBBIDBGIDAwIDYwIDYw
IDcyIDc5IDZBIDBBIDBDIDAwIDYwICBgcnlpLi4uYGByeWouLi5gCiAgICA0MTYwOiA2MCBBNCA2
MCAxNCA0NCAwOCA0RCAzNiAzNCAzNiAwQSA3MCAwMCA2MCA3MCA0RCAgYC5gLkQuTTY0Ni5wLmBw
TQogICAgNDE3MDogMzAgMzQgMzkgNjggMEEgMzQgNjEgQTIgMkMgOTIgOTMgNjEgMDAgNzAgNEQg
MzAgIDA0OWguNGEuLC4uYS5wTTAKICAgIDQxODA6IDM0IDM5IDY4IDYxIDYyIEEwIDBBIDkxIDkz
IDYyIDAwIDkzIDYyIDBBIEZGIEE1ICA0OWhhYi4uLi5iLi5iLi4uCiAgICA0MTkwOiBBMCAwOCA5
MyA2MiA2OSA3MCA2MSA2MCBBNSA3MCA0RCAzMCAzNCAzOSA2OCA3MiAgLi4uYmlwYWAucE0wNDlo
cgogICAgNDFBMDogNjEgMDEgMDAgNjEgNEQgMzQgMzYgMzAgMEQgMjAgMjAgNDYgNDUgNDEgMkQg
NDEgIGEuLmFNNDYwLiAgRkVBLUEKICAgIDQxQjA6IDUzIDRDIDJEIDQzIDcwIDZEIDUzIDY1IDYx
IDcyIDYzIDY4IDUwIDYzIDY5IDY1ICBTTC1DcG1TZWFyY2hQY2llCiAgICA0MUMwOiA0MyA2MSA3
MCA2MSA2MiA2OSA2QyA2OSA3NCA3OSAyMCAyOCAzMCA3OCAyNSA1OCAgQ2FwYWJpbGl0eSAoMHgl
WAogICAgNDFEMDogMkMgMjAgMzAgNzggMjUgNTggMjkgMjAgM0QgMjAgMzAgNzggMjUgNTggMEEg
MDAgICwgMHglWCkgPSAweCVYLi4KICAgIDQxRTA6IDY4IDY5IDYwIDAwIDAwIDAwIEE0IDYwIDE0
IDNBIDREIDM2IDM0IDM3IDBBIEEwICBoaWAuLi4uYC46TTY0Ny4uCiAgICA0MUYwOiAzMyA5MiA5
MyA2OCAwQyBFRSBFRSBFRSBFRSA3MCA0RCAzMCAzNCA0MiA2OCAwMCAgMy4uaC4uLi4ucE0wNEJo
LgogICAgNDIwMDogNjAgNzAgMEMgRkYgRkYgRkYgN0YgNjEgN0QgNjEgMEMgMDAgMDAgMDAgODAg
NjEgIGBwLi4uLi5hfWEuLi4uLmEKICAgIDQyMTA6IEEwIDEyIDkwIDkyIDkzIDYwIDAwIDkyIDkz
IDYwIDYxIDREIDM2IDM0IDM0IDY4ICAuLi4uLmAuLi5gYU02NDRoCiAgICA0MjIwOiAwQSAwNCA2
OSAxNCA0OCAwQyA0RCAzNiAzNCAzOCAwQiA3MCAwMCA2MiA3MCAwQyAgLi5pLkguTTY0OC5wLmJw
LgogICAgNDIzMDogRkYgRkYgRkYgN0YgNjUgN0QgNjUgMEMgMDAgMDAgMDAgODAgNjUgNzAgMDAg
NjAgIC4uLi5lfWUuLi4uLmVwLmAKICAgIDQyNDA6IEEyIDQwIDA2IDkyIDk0IDYwIDY5IDcwIDAw
IDYxIEEyIDQ0IDA1IDkyIDk0IDYxICAuQC4uLmBpcC5hLkQuLi5hCiAgICA0MjUwOiA2QSA3RCA3
QiA3OSA2OCAwQSAxNCAwMCAwQyAwMCAwMCBGMCAwRiAwMCA3QiA3OSAgan17eWguLi4uLi4uLi57
eQogICAgNDI2MDogNjAgMEEgMEYgMDAgMEMgMDAgODAgMEYgMDAgMDAgNjMgN0QgNjMgN0IgNzkg
NjEgIGAuLi4uLi4uLi5jfWN7eWEKICAgIDQyNzA6IDBBIDBDIDAwIDBCIDAwIDcwIDAwIDYzIDcw
IDREIDMwIDM0IDQyIDREIDMwIDM4ICAuLi4uLnAuY3BNMDRCTTA4CiAgICA0MjgwOiAzMyA2MyA2
NCBBMCAxMSA5MCA5MiA5MyA2NCA2NSA5MiA5MyA2NCAwMCA3RCA2MiAgM2NkLi4uLi5kZS4uZC59
YgogICAgNDI5MDogNzkgMDEgNjAgMDAgNjIgQTEgMDcgQTAgMDUgOTMgNjEgMDAgQTUgNzUgNjEg
NzUgIHkuYC5iLi4uLi5hLi51YXUKICAgIDQyQTA6IDYwIDREIDM0IDM2IDMwIDBEIDIwIDIwIDRC
IDQ1IDUyIDJEIDQxIDUzIDRDIDJEICBgTTQ2MC4gIEtFUi1BU0wtCiAgICA0MkIwOiA0MyA3MCA2
RCA1MyA2NSA2MSA3MiA2MyA2OCA1MCA2MyA2OSA2NSA0NCA2NSA3NiAgQ3BtU2VhcmNoUGNpZURl
dgogICAgNDJDMDogNjkgNjMgNjUgMjAgMjggNDIgNzUgNzMgMjAgMzAgNzggMjUgNTggMjkgMjAg
M0QgIGljZSAoQnVzIDB4JVgpID0KICAgIDQyRDA6IDIwIDQ0IDY1IDc2IDY5IDYzIDY1IDIwIDMw
IDc4IDI1IDU4IDIwIDQ1IDc4IDY5ICAgRGV2aWNlIDB4JVggRXhpCiAgICA0MkUwOiA3MyA3NCAw
QSAwMCA2OCA2MiAwMCAwMCAwMCAwMCBBNCA2MiAxNCA0OSAwNiA0RCAgc3QuLmhiLi4uLi5iLkku
TQogICAgNDJGMDogMzYgMzQgMzkgMDkgNzAgMDAgNjAgQTAgMjMgOTIgOTMgNjggMEMgRUUgRUUg
RUUgIDY0OS5wLmAuIy4uaC4uLi4KICAgIDQzMDA6IEVFIDcwIDREIDM2IDM0IDM2IDY4IDAxIDYy
IEEwIDExIDkyIDkzIDYyIDAwIDcwICAucE02NDZoLmIuLi4uYi5wCiAgICA0MzEwOiA0RCAzMCAz
NCA0MSA2OCA3MiA2MiAwQSAwNCAwMCA2MCA0RCAzNCAzNiAzMCAwRCAgTTA0QWhyYi4uLmBNNDYw
LgogICAgNDMyMDogMjAgMjAgNDYgNDUgNDEgMkQgNDEgNTMgNEMgMkQgNDMgNzAgNkQgNDcgNjUg
NzQgICAgRkVBLUFTTC1DcG1HZXQKICAgIDQzMzA6IDUwIDQzIDQ5IDY1IDUwIDZGIDc3IDY1IDcy
IDUzIDc0IDYxIDc0IDY1IDIwIDI4ICBQQ0llUG93ZXJTdGF0ZSAoCiAgICA0MzQwOiAzMCA3OCAy
NSA1OCAyOSAyMCAzRCAyMCAzMCA3OCAyNSA1OCAwQSAwMCA2OCA2MCAgMHglWCkgPSAweCVYLi5o
YAogICAgNDM1MDogMDAgMDAgMDAgMDAgQTQgNjAgMTQgNDEgMEEgNEQgMzYgMzUgMzAgMEEgNzAg
MDAgIC4uLi4uYC5BLk02NTAucC4KICAgIDQzNjA6IDYwIDcwIDAwIDYxIEEwIDRBIDA0IDkyIDkz
IDY4IDBDIEVFIEVFIEVFIEVFIDcwICBgcC5hLkouLi5oLi4uLi5wCiAgICA0MzcwOiA0RCAzNiAz
NCAzNiA2OCAwMSA2MiBBMCAzNyA5MiA5MyA2MiAwMCA3MCA0RCAzMCAgTTY0NmguYi43Li5iLnBN
MAogICAgNDM4MDogMzQgNDEgNjggNzIgNjIgMEEgMDQgMDAgNjAgN0IgNjAgMEIgRkMgN0YgNjEg
N0QgIDRBaHJiLi4uYHtgLi4uYX0KICAgIDQzOTA6IDYxIDdCIDY5IDBCIEZGIDdGIDAwIDYxIDRE
IDMwIDM0IDQ0IDY4IDcyIDYyIDBBICBhe2kuLi4uYU0wNERocmIuCiAgICA0M0EwOiAwNCAwMCA2
MSA3MCA0RCAzMCAzNCA0MSA2OCA3MiA2MiAwQSAwNCAwMCA2MSA0RCAgLi5hcE0wNEFocmIuLi5h
TQogICAgNDNCMDogMzQgMzYgMzAgMEQgMjAgMjAgNDYgNDUgNDEgMkQgNDEgNTMgNEMgMkQgNDMg
NzAgIDQ2MC4gIEZFQS1BU0wtQ3AKICAgIDQzQzA6IDZEIDUzIDY1IDc0IDUwIDQzIDQ5IDY1IDUw
IDZGIDc3IDY1IDcyIDUzIDc0IDYxICBtU2V0UENJZVBvd2VyU3RhCiAgICA0M0QwOiA3NCA2NSAy
MCAyOCAzMCA3OCAyNSA1OCAyQyAyMCAzMCA3OCAyNSA1OCAyOSAyMCAgdGUgKDB4JVgsIDB4JVgp
IAogICAgNDNFMDogM0QgMjAgMzAgNzggMjUgNTggMjAgMkQgM0UgMjAgMzAgNzggMjUgNTggMEEg
MDAgID0gMHglWCAtPiAweCVYLi4KICAgIDQzRjA6IDY4IDY5IDYwIDYxIDAwIDAwIEE0IDYwIDE0
IDQ0IDJBIDREIDM2IDM1IDMxIDBDICBoaWBhLi4uYC5EKk02NTEuCiAgICA0NDAwOiA3MCA0RCAz
MCAzNCA0MiA2OCAwMCA2MCA3MCAwQyBGRiBGRiBGRiA3RiA2MSA3RCAgcE0wNEJoLmBwLi4uLi5h
fQogICAgNDQxMDogNjEgMEMgMDAgMDAgMDAgODAgNjEgQTAgNDAgMUEgOTAgOTAgOTIgOTMgNjkg
MDAgIGEuLi4uLmEuQC4uLi4uaS4KICAgIDQ0MjA6IDkyIDkzIDY4IDBDIEVFIEVFIEVFIEVFIDkw
IDkyIDkzIDYwIDAwIDkyIDkzIDYwICAuLmguLi4uLi4uLmAuLi5gCiAgICA0NDMwOiA2MSA0RCAz
MCAzNCA0NSA2OSA3MiA2QSAwMCAwMCA0RCAzMCAzNCA0MiA2OCAwQSAgYU0wNEVpcmouLk0wNEJo
LgogICAgNDQ0MDogMTggNEQgMzAgMzQgNDUgNjkgNzIgNkEgMEEgMDQgMDAgNEQgMzAgMzQgNDIg
NjggIC5NMDRFaXJqLi4uTTA0QmgKICAgIDQ0NTA6IDBBIDFDIDREIDMwIDM0IDQ1IDY5IDcyIDZB
IDBBIDA4IDAwIDREIDMwIDM0IDQyICAuLk0wNEVpcmouLi5NMDRCCiAgICA0NDYwOiA2OCAwQSAy
MCA0RCAzMCAzNCA0NSA2OSA3MiA2QSAwQSAwQyAwMCA0RCAzMCAzNCAgaC4gTTA0RWlyai4uLk0w
NAogICAgNDQ3MDogNDIgNjggMEEgMjQgNEQgMzAgMzQgNDUgNjkgNzIgNkEgMEEgMTAgMDAgNEQg
MzAgIEJoLiRNMDRFaXJqLi4uTTAKICAgIDQ0ODA6IDM0IDQyIDY4IDBBIDI4IDREIDMwIDM0IDQ1
IDY5IDcyIDZBIDBBIDE0IDAwIDREICA0QmguKE0wNEVpcmouLi5NCiAgICA0NDkwOiAzMCAzNCA0
MiA2OCAwQSAyQyA0RCAzMCAzNCA0NCA2OSA3MiA2QSAwQSAxOCAwMCAgMDRCaC4sTTA0RGlyai4u
LgogICAgNDRBMDogNEQgMzAgMzQgNDEgNjggMEEgMDQgNEQgMzAgMzQgNDMgNjkgNzIgNkEgMEEg
MUEgIE0wNEFoLi5NMDRDaXJqLi4KICAgIDQ0QjA6IDAwIDREIDMwIDM0IDM5IDY4IDBBIDBDIDRE
IDMwIDM0IDQzIDY5IDcyIDZBIDBBICAuTTA0OWguLk0wNENpcmouCiAgICA0NEMwOiAxQiAwMCA0
RCAzMCAzNCAzOSA2OCAwQSAzQyA3MiA2OCA0RCAzNiAzNCAzNiA2OCAgLi5NMDQ5aC48cmhNNjQ2
aAogICAgNDREMDogMDEgNjAgQTAgMTYgOTIgOTMgNjAgNjggNEQgMzAgMzQgNDQgNjkgNzIgNkEg
MEEgIC5gLi4uLmBoTTA0RGlyai4KICAgIDQ0RTA6IDFDIDAwIDREIDMwIDM0IDQxIDYwIDBBIDA0
IEExIDBDIDREIDMwIDM0IDQ0IDY5ICAuLk0wNEFgLi4uLk0wNERpCiAgICA0NEYwOiA3MiA2QSAw
QSAxQyAwMCAwMCBBMCA0MSAwQyA5MyA2QiAwMSA3MiA2OCA0RCAzNiAgcmouLi4uLkEuLmsucmhN
NgogICAgNDUwMDogMzQgMzYgNjggMEEgMTUgNjAgQTAgNEMgMDYgOTIgOTMgNjAgNjggNEQgMzAg
MzQgIDQ2aC4uYC5MLi4uYGhNMDQKICAgIDQ1MTA6IDQ1IDY5IDcyIDZBIDBBIDIwIDAwIDREIDMw
IDM0IDQyIDYwIDBBIDA4IDREIDMwICBFaXJqLiAuTTA0QmAuLk0wCiAgICA0NTIwOiAzNCA0NSA2
OSA3MiA2QSAwQSAyNCAwMCA0RCAzMCAzNCA0MiA2MCAwQSAwQyA0RCAgNEVpcmouJC5NMDRCYC4u
TQogICAgNDUzMDogMzAgMzQgNDUgNjkgNzIgNkEgMEEgMjggMDAgNEQgMzAgMzQgNDIgNjAgMEEg
MTAgIDA0RWlyai4oLk0wNEJgLi4KICAgIDQ1NDA6IDREIDMwIDM0IDQ1IDY5IDcyIDZBIDBBIDJD
IDAwIDREIDMwIDM0IDQyIDYwIDBBICBNMDRFaXJqLiwuTTA0QmAuCiAgICA0NTUwOiAxNCA0RCAz
MCAzNCA0NSA2OSA3MiA2QSAwQSAzMCAwMCA0RCAzMCAzNCA0MiA2MCAgLk0wNEVpcmouMC5NMDRC
YAogICAgNDU2MDogMEEgMTggNEQgMzAgMzQgNDUgNjkgNzIgNkEgMEEgMzQgMDAgNEQgMzAgMzQg
NDIgIC4uTTA0RWlyai40Lk0wNEIKICAgIDQ1NzA6IDYwIDBBIDFDIEExIDQ0IDA0IDREIDMwIDM0
IDQ1IDY5IDcyIDZBIDBBIDIwIDAwICBgLi4uRC5NMDRFaXJqLiAuCiAgICA0NTgwOiAwMCA0RCAz
MCAzNCA0NSA2OSA3MiA2QSAwQSAyNCAwMCAwMCA0RCAzMCAzNCA0NSAgLk0wNEVpcmouJC4uTTA0
RQogICAgNDU5MDogNjkgNzIgNkEgMEEgMjggMDAgMDAgNEQgMzAgMzQgNDUgNjkgNzIgNkEgMEEg
MkMgIGlyai4oLi5NMDRFaXJqLiwKICAgIDQ1QTA6IDAwIDAwIDREIDMwIDM0IDQ1IDY5IDcyIDZB
IDBBIDMwIDAwIDAwIDREIDMwIDM0ICAuLk0wNEVpcmouMC4uTTA0CiAgICA0NUIwOiA0NSA2OSA3
MiA2QSAwQSAzNCAwMCAwMCBBMSA0MSAwQSA0RCAzMCAzNCA0NSA2OSAgRWlyai40Li4uQS5NMDRF
aQogICAgNDVDMDogNzIgNkEgMDAgMDAgMDAgNEQgMzAgMzQgNDUgNjkgNzIgNkEgMEEgMDQgMDAg
MDAgIHJqLi4uTTA0RWlyai4uLi4KICAgIDQ1RDA6IDREIDMwIDM0IDQ1IDY5IDcyIDZBIDBBIDA4
IDAwIDAwIDREIDMwIDM0IDQ1IDY5ICBNMDRFaXJqLi4uLk0wNEVpCiAgICA0NUUwOiA3MiA2QSAw
QSAwQyAwMCAwMCA0RCAzMCAzNCA0NSA2OSA3MiA2QSAwQSAxMCAwMCAgcmouLi4uTTA0RWlyai4u
LgogICAgNDVGMDogMDAgNEQgMzAgMzQgNDUgNjkgNzIgNkEgMEEgMTQgMDAgMDAgNEQgMzAgMzQg
NDUgIC5NMDRFaXJqLi4uLk0wNEUKICAgIDQ2MDA6IDY5IDcyIDZBIDBBIDE4IDAwIDAwIDREIDMw
IDM0IDQ1IDY5IDcyIDZBIDBBIDFDICBpcmouLi4uTTA0RWlyai4uCiAgICA0NjEwOiAwMCAwMCBB
MCA0NyAwNCA5MyA2QiAwMSA0RCAzMCAzNCA0NSA2OSA3MiA2QSAwQSAgLi4uRy4uay5NMDRFaXJq
LgogICAgNDYyMDogMjAgMDAgMDAgNEQgMzAgMzQgNDUgNjkgNzIgNkEgMEEgMjQgMDAgMDAgNEQg
MzAgICAuLk0wNEVpcmouJC4uTTAKICAgIDQ2MzA6IDM0IDQ1IDY5IDcyIDZBIDBBIDI4IDAwIDAw
IDREIDMwIDM0IDQ1IDY5IDcyIDZBICA0RWlyai4oLi5NMDRFaXJqCiAgICA0NjQwOiAwQSAyQyAw
MCAwMCA0RCAzMCAzNCA0NSA2OSA3MiA2QSAwQSAzMCAwMCAwMCA0RCAgLiwuLk0wNEVpcmouMC4u
TQogICAgNDY1MDogMzAgMzQgNDQgNjkgNzIgNkEgMEEgMzQgMDAgMDAgNEQgMzQgMzYgMzAgMEQg
MjAgIDA0RGlyai40Li5NNDYwLiAKICAgIDQ2NjA6IDIwIDQ2IDQ1IDQxIDJEIDQxIDUzIDRDIDJE
IDQzIDcwIDZEIDUzIDYxIDc2IDY1ICAgRkVBLUFTTC1DcG1TYXZlCiAgICA0NjcwOiA1MCA2MyA2
OSA2NSA0MiA3MiA2OSA2NCA2NyA2NSA0NCA2MSA3NCA2MSAyMCAyOCAgUGNpZUJyaWRnZURhdGEg
KAogICAgNDY4MDogMzAgNzggMjUgNTggMkMgMjAgMzAgNzggMjUgNTggMkMgMjAgMzAgNzggMjUg
NTggIDB4JVgsIDB4JVgsIDB4JVgKICAgIDQ2OTA6IDJDIDIwIDI1IDY0IDI5IDBBIDAwIDY4IDY5
IDZBIDZCIDAwIDAwIDVCIDAxIDREICAsICVkKS4uaGlqay4uWy5NCiAgICA0NkEwOiAzNCAzMiAz
MSAwMCAxNCA0NCAwQyA0RCAzNCAzMiAzMiAwQyA3MCA0RCAzMCAzNCAgNDIxLi5ELk00MjIucE0w
NAogICAgNDZCMDogMzkgNEQgMzEgMzIgMzggMEEgODEgNjAgQTAgMEEgOTMgNjAgMDAgQTQgMEMg
RkYgIDlNMTI4Li5gLi4uYC4uLi4KICAgIDQ2QzA6IEZGIEZGIEZGIDcyIDREIDMwIDM4IDMzIDc5
IDYwIDBBIDE0IDAwIDYwIDcyIDBBICAuLi5yTTA4M3lgLi4uYHIuCiAgICA0NkQwOiBFMCA2MCA2
MCA1QiAyMyA0RCAzNCAzMiAzMSBGRiBGRiA1QiA4MCA1NiA0MSA1MiAgLmBgWyNNNDIxLi5bLlZB
UgogICAgNDZFMDogNEQgMDAgNjAgMEEgMDggNUIgODEgMEQgNTYgNDEgNTIgNEQgMDMgMDAgMDAg
NTYgIE0uYC4uWy4uVkFSTS4uLlYKICAgIDQ2RjA6IDQxIDUyIDMxIDIwIDVCIDg3IDEyIDU2IDQx
IDUyIDREIDU2IDQxIDUyIDMxIDZCICBBUjEgWy4uVkFSTVZBUjFrCiAgICA0NzAwOiAwMyAwMCAy
MCA1NiA0MSA1MiAzMiAyMCA3MCA1NiA0MSA1MiAzMSA2MSA3MCA1NiAgLi4gVkFSMiBwVkFSMWFw
VgogICAgNDcxMDogNDEgNTIgMzIgNjIgNzAgNjEgNTYgNDEgNTIgMzEgNUIgMjcgNEQgMzQgMzIg
MzEgIEFSMmJwYVZBUjFbJ000MjEKICAgIDQ3MjA6IDREIDM0IDM2IDMwIDBEIDIwIDIwIDRCIDQ1
IDUyIDJEIDQxIDUzIDRDIDJEIDQzICBNNDYwLiAgS0VSLUFTTC1DCiAgICA0NzMwOiA3MCA2RCA1
MiA2NSA2MSA2NCA0MiA3OCA2MiA1MyA2RCA2RSA1MiA2NSA2NyA2OSAgcG1SZWFkQnhiU21uUmVn
aQogICAgNDc0MDogNzMgNzQgNjUgNzIgMjAgMjAgMjggMjUgNjQgMkMgMjAgMjUgNjQgMkMgMjAg
MjUgIHN0ZXIgICglZCwgJWQsICUKICAgIDQ3NTA6IDY0IDJDIDIwIDMwIDc4IDI1IDU4IDI5IDIw
IDNEIDIwIDMwIDc4IDI1IDU4IDBBICBkLCAweCVYKSA9IDB4JVguCiAgICA0NzYwOiAwMCA2OCA2
OSA2QSA2QiA2MiAwMCBBNCA2MiAxNCA0RCAwQiA0RCAzNCAzMiAzMyAgLmhpamtiLi5iLk0uTTQy
MwogICAgNDc3MDogMEQgNzAgNEQgMzAgMzQgMzkgNEQgMzEgMzIgMzggMEEgODEgNjAgQTAgNDkg
MEEgIC5wTTA0OU0xMjguLmAuSS4KICAgIDQ3ODA6IDkyIDkzIDYwIDAwIDREIDM0IDM2IDMwIDBE
IDIwIDIwIDRCIDQ1IDUyIDJEIDQxICAuLmAuTTQ2MC4gIEtFUi1BCiAgICA0NzkwOiA1MyA0QyAy
RCA0MyA3MCA2RCA1NyA3MiA2OSA3NCA2NSA0MiA3OCA2MiA1MyA2RCAgU0wtQ3BtV3JpdGVCeGJT
bQogICAgNDdBMDogNkUgNTIgNjUgNjcgNjkgNzMgNzQgNjUgNzIgMjAgMjggMjUgNjQgMkMgMjAg
MjUgIG5SZWdpc3RlciAoJWQsICUKICAgIDQ3QjA6IDY0IDJDIDIwIDI1IDY0IDJDIDIwIDMwIDc4
IDI1IDU4IDJDIDIwIDMwIDc4IDI1ICBkLCAlZCwgMHglWCwgMHglCiAgICA0N0MwOiA1OCAyOSAw
QSAwMCA2OCA2OSA2QSA2QiA2QyAwMCA3MiA0RCAzMCAzOCAzMyA3OSAgWCkuLmhpamtsLnJNMDgz
eQogICAgNDdEMDogNjAgMEEgMTQgMDAgNjAgNzIgMEEgRTAgNjAgNjAgNUIgMjMgNEQgMzQgMzIg
MzEgIGAuLi5gci4uYGBbI000MjEKICAgIDQ3RTA6IEZGIEZGIDVCIDgwIDU2IDQxIDUyIDREIDAw
IDYwIDBBIDA4IDVCIDgxIDBEIDU2ICAuLlsuVkFSTS5gLi5bLi5WCiAgICA0N0YwOiA0MSA1MiA0
RCAwMyAwMCAwMCA1NiA0MSA1MiAzMSAyMCA1QiA4NyAxMiA1NiA0MSAgQVJNLi4uVkFSMSBbLi5W
QQogICAgNDgwMDogNTIgNEQgNTYgNDEgNTIgMzEgNkIgMDMgMDAgMjAgNTYgNDEgNTIgMzIgMjAg
NzAgIFJNVkFSMWsuLiBWQVIyIHAKICAgIDQ4MTA6IDU2IDQxIDUyIDMxIDYxIDcwIDZDIDU2IDQx
IDUyIDMyIDcwIDYxIDU2IDQxIDUyICBWQVIxYXBsVkFSMnBhVkFSCiAgICA0ODIwOiAzMSA1QiAy
NyA0RCAzNCAzMiAzMSA1QiAwMSA0RCAzMiAzNSAzMyAwMCAxNCA0RSAgMVsnTTQyMVsuTTI1My4u
TgogICAgNDgzMDogMTAgNEQgMzIgMzQgMzkgMEMgQTAgMEQgOTMgNzIgNzIgNjggNjkgMDAgNkEg
MDAgIC5NMjQ5Li4uLnJyaGkuai4KICAgIDQ4NDA6IDAwIDcwIDAwIDYwIEExIDBBIDcwIDREIDMy
IDM1IDMyIDY4IDY5IDZBIDYwIEEwICAucC5gLi5wTTI1MmhpamAuCiAgICA0ODUwOiAwRSA5MyA2
MCAwQyBGRiBGRiBGRiBGRiBBNCAwQyBGRiBGRiBGRiBGRiA3MiA0RCAgLi5gLi4uLi4uLi4uLi5y
TQogICAgNDg2MDogMzAgMzggMzMgNzkgNjAgMEEgMTQgMDAgNjAgNzIgMEEgQjggNjAgNjAgQTAg
MUMgIDA4M3lgLi4uYHIuLmBgLi4KICAgIDQ4NzA6IDVCIDEyIDVDIDJFIDVGIDUzIDQyIDVGIDQx
IDREIDMwIDMwIDAwIDVCIDIzIDVDICBbLlwuX1NCX0FNMDAuWyNcCiAgICA0ODgwOiAyRSA1RiA1
MyA0MiA1RiA0MSA0RCAzMCAzMCBGRiBGRiBBMSAwOSA1QiAyMyA0RCAgLl9TQl9BTTAwLi4uLlsj
TQogICAgNDg5MDogMzIgMzUgMzMgRkYgRkYgNUIgODAgNTYgNDEgNTIgNEQgMDAgNjAgMEEgMDgg
NUIgIDI1My4uWy5WQVJNLmAuLlsKICAgIDQ4QTA6IDgxIDBEIDU2IDQxIDUyIDREIDAzIDAwIDAw
IDU2IDQxIDUyIDMxIDIwIDVCIDg3ICAuLlZBUk0uLi5WQVIxIFsuCiAgICA0OEIwOiAxMiA1NiA0
MSA1MiA0RCA1NiA0MSA1MiAzMSA2QiAwMyAwMCAyMCA1NiA0MSA1MiAgLlZBUk1WQVIxay4uIFZB
UgogICAgNDhDMDogMzIgMjAgNzAgNTYgNDEgNTIgMzEgNjEgNzAgNTYgNDEgNTIgMzIgNjIgNzAg
NjEgIDIgcFZBUjFhcFZBUjJicGEKICAgIDQ4RDA6IDU2IDQxIDUyIDMxIEEwIDFBIDVCIDEyIDVD
IDJFIDVGIDUzIDQyIDVGIDQxIDREICBWQVIxLi5bLlwuX1NCX0FNCiAgICA0OEUwOiAzMCAzMCAw
MCA1QiAyNyA1QyAyRSA1RiA1MyA0MiA1RiA0MSA0RCAzMCAzMCBBMSAgMDAuWydcLl9TQl9BTTAw
LgogICAgNDhGMDogMDcgNUIgMjcgNEQgMzIgMzUgMzMgNEQgMzQgMzYgMzAgMEQgMjAgMjAgNEIg
NDUgIC5bJ00yNTNNNDYwLiAgS0UKICAgIDQ5MDA6IDUyIDJEIDQxIDUzIDRDIDJEIDQzIDcwIDZE
IDUyIDY1IDYxIDY0IDUzIDZEIDZFICBSLUFTTC1DcG1SZWFkU21uCiAgICA0OTEwOiA1MiA2NSA2
NyA2OSA3MyA3NCA2NSA3MiAyMCAyMCAyOCAyNSA2NCAyQyAyMCAyNSAgUmVnaXN0ZXIgICglZCwg
JQogICAgNDkyMDogNjQgMkMgMjAgMjUgNjQgMkMgMjAgMzAgNzggMjUgNTggMjkgMjAgM0QgMjAg
MzAgIGQsICVkLCAweCVYKSA9IDAKICAgIDQ5MzA6IDc4IDI1IDU4IDBBIDAwIDY4IDY5IDZBIDZC
IDYyIDAwIEE0IDYyIDE0IDQ3IDEwICB4JVguLmhpamtiLi5iLkcuCiAgICA0OTQwOiA0RCAzMiAz
NSAzMCAwRCBBMCAwRCA5MyA3MiA3MiA2OCA2OSAwMCA2QSAwMCAwMCAgTTI1MC4uLi5ycmhpLmou
LgogICAgNDk1MDogNzAgMDAgNjAgQTEgMEEgNzAgNEQgMzIgMzUgMzIgNjggNjkgNkEgNjAgQTAg
NDYgIHAuYC4ucE0yNTJoaWpgLkYKICAgIDQ5NjA6IDBFIDkyIDkzIDYwIDBDIEZGIEZGIEZGIEZG
IDREIDM0IDM2IDMwIDBEIDIwIDIwICAuLi5gLi4uLi5NNDYwLiAgCiAgICA0OTcwOiA0QiA0NSA1
MiAyRCA0MSA1MyA0QyAyRCA0MyA3MCA2RCA1NyA3MiA2OSA3NCA2NSAgS0VSLUFTTC1DcG1Xcml0
ZQogICAgNDk4MDogNTMgNkQgNkUgNTIgNjUgNjcgNjkgNzMgNzQgNjUgNzIgMjAgMjggMjUgNjQg
MkMgIFNtblJlZ2lzdGVyICglZCwKICAgIDQ5OTA6IDIwIDI1IDY0IDJDIDIwIDI1IDY0IDJDIDIw
IDMwIDc4IDI1IDU4IDJDIDIwIDMwICAgJWQsICVkLCAweCVYLCAwCiAgICA0OUEwOiA3OCAyNSA1
OCAyOSAwQSAwMCA2OCA2OSA2QSA2QiA2QyAwMCA3MiA0RCAzMCAzOCAgeCVYKS4uaGlqa2wuck0w
OAogICAgNDlCMDogMzMgNzkgNjAgMEEgMTQgMDAgNjAgNzIgMEEgQjggNjAgNjAgQTAgMUMgNUIg
MTIgIDN5YC4uLmByLi5gYC4uWy4KICAgIDQ5QzA6IDVDIDJFIDVGIDUzIDQyIDVGIDQxIDREIDMw
IDMwIDAwIDVCIDIzIDVDIDJFIDVGICBcLl9TQl9BTTAwLlsjXC5fCiAgICA0OUQwOiA1MyA0MiA1
RiA0MSA0RCAzMCAzMCBGRiBGRiBBMSAwOSA1QiAyMyA0RCAzMiAzNSAgU0JfQU0wMC4uLi5bI00y
NQogICAgNDlFMDogMzMgRkYgRkYgNUIgODAgNTYgNDEgNTIgNEQgMDAgNjAgMEEgMDggNUIgODEg
MEQgIDMuLlsuVkFSTS5gLi5bLi4KICAgIDQ5RjA6IDU2IDQxIDUyIDREIDAzIDAwIDAwIDU2IDQx
IDUyIDMxIDIwIDVCIDg3IDEyIDU2ICBWQVJNLi4uVkFSMSBbLi5WCiAgICA0QTAwOiA0MSA1MiA0
RCA1NiA0MSA1MiAzMSA2QiAwMyAwMCAyMCA1NiA0MSA1MiAzMiAyMCAgQVJNVkFSMWsuLiBWQVIy
IAogICAgNEExMDogNzAgNTYgNDEgNTIgMzEgNjEgNzAgNkMgNTYgNDEgNTIgMzIgNzAgNjEgNTYg
NDEgIHBWQVIxYXBsVkFSMnBhVkEKICAgIDRBMjA6IDUyIDMxIEEwIDFBIDVCIDEyIDVDIDJFIDVG
IDUzIDQyIDVGIDQxIDREIDMwIDMwICBSMS4uWy5cLl9TQl9BTTAwCiAgICA0QTMwOiAwMCA1QiAy
NyA1QyAyRSA1RiA1MyA0MiA1RiA0MSA0RCAzMCAzMCBBMSAwNyA1QiAgLlsnXC5fU0JfQU0wMC4u
WwogICAgNEE0MDogMjcgNEQgMzIgMzUgMzMgMTQgNEUgMDYgNEQgMzAgMzEgMzMgMEMgNzAgNEQg
MzAgICdNMjUzLk4uTTAxMy5wTTAKICAgIDRBNTA6IDM0IDQyIDY4IDY5IDYxIDcwIDBDIEZGIEZG
IEZGIDdGIDY1IDdEIDY1IDBDIDAwICA0QmhpYXAuLi4uLmV9ZS4uCiAgICA0QTYwOiAwMCAwMCA4
MCA2NSA3QiA3QSA2MSA2QSAwMCA3QSA2NSA3NCAwQSAyMCA2QiAwMCAgLi4uZXt6YWouemV0LiBr
LgogICAgNEE3MDogMDAgNjIgNEQgMzQgMzYgMzAgMEQgMjAgMjAgNEIgNDUgNTIgMkQgNDEgNTMg
NEMgIC5iTTQ2MC4gIEtFUi1BU0wKICAgIDRBODA6IDJEIDQzIDcwIDZEIDUyIDY1IDYxIDY0IDRE
IDY1IDZEIDMzIDMyIDIwIDIwIDI4ICAtQ3BtUmVhZE1lbTMyICAoCiAgICA0QTkwOiAzMCA3OCAy
NSA1OCAyQyAyMCAzMCA3OCAyNSA1OCAyQyAyMCAyNSA2NCAyQyAyMCAgMHglWCwgMHglWCwgJWQs
IAogICAgNEFBMDogMjUgNjQgMjkgMjAgM0QgMjAgMzAgNzggMjUgNTggMEEgMDAgNjggNjkgNkEg
NkIgICVkKSA9IDB4JVguLmhpamsKICAgIDRBQjA6IDYyIDAwIEE0IDYyIDE0IDRDIDA4IDREIDMw
IDMxIDM0IDBEIDREIDM0IDM2IDMwICBiLi5iLkwuTTAxNC5NNDYwCiAgICA0QUMwOiAwRCAyMCAy
MCA0QiA0NSA1MiAyRCA0MSA1MyA0QyAyRCA0MyA3MCA2RCA1NyA3MiAgLiAgS0VSLUFTTC1DcG1X
cgogICAgNEFEMDogNjkgNzQgNjUgNEQgNjUgNkQgMzMgMzIgMjAgMjggMzAgNzggMjUgNTggMkMg
MjAgIGl0ZU1lbTMyICgweCVYLCAKICAgIDRBRTA6IDMwIDc4IDI1IDU4IDJDIDIwIDI1IDY0IDJD
IDIwIDI1IDY0IDJDIDIwIDMwIDc4ICAweCVYLCAlZCwgJWQsIDB4CiAgICA0QUYwOiAyNSA1OCAy
OSAwQSAwMCA2OCA2OSA2QSA2QiA2QyAwMCA3MCA0RCAzMCAzNCA0MiAgJVgpLi5oaWprbC5wTTA0
QgogICAgNEIwMDogNjggNjkgNjEgNzAgMEMgRkYgRkYgRkYgN0YgNjUgN0QgNjUgMEMgMDAgMDAg
MDAgIGhpYXAuLi4uLmV9ZS4uLi4KICAgIDRCMTA6IDgwIDY1IDcyIDZBIDZCIDYyIDc0IDBBIDIw
IDYyIDYyIDdBIDdCIDc5IDY1IDYyICAuZXJqa2J0LiBiYnp7eWViCiAgICA0QjIwOiAwMCA2NSAw
MCA2MiA2MiA3OSA3QSA2MiA2QSAwMCA2QSA2MiA3OSA2QyA2QSA2MyAgLmUuYmJ5emJqLmpieWxq
YwogICAgNEIzMDogN0QgN0IgNjEgN0YgNjUgNjIgMDAgMDAgNjMgNjQgNEQgMzAgMzQgNDUgNjgg
NjkgIH17YS5lYi4uY2RNMDRFaGkKICAgIDRCNDA6IDY0IDE0IDRGIDA1IDREIDMwIDMxIDMxIDBD
IDcwIDREIDMwIDM0IDM5IDY4IDY5ICBkLk8uTTAxMS5wTTA0OWhpCiAgICA0QjUwOiA2MSA3QiA3
QSA2MSA2QSAwMCA3QSAwQSBGRiA3NCAwQSAwOCA2QiAwMCAwMCA2MiAgYXt6YWouei4udC4uay4u
YgogICAgNEI2MDogNEQgMzQgMzYgMzAgMEQgMjAgMjAgNEIgNDUgNTIgMkQgNDEgNTMgNEMgMkQg
NDMgIE00NjAuICBLRVItQVNMLUMKICAgIDRCNzA6IDcwIDZEIDUyIDY1IDYxIDY0IDREIDY1IDZE
IDM4IDIwIDIwIDI4IDMwIDc4IDI1ICBwbVJlYWRNZW04ICAoMHglCiAgICA0QjgwOiA1OCAyQyAy
MCAzMCA3OCAyNSA1OCAyQyAyMCAyNSA2NCAyQyAyMCAyNSA2NCAyOSAgWCwgMHglWCwgJWQsICVk
KQogICAgNEI5MDogMjAgM0QgMjAgMzAgNzggMjUgNTggMEEgMDAgNjggNjkgNkEgNkIgNjIgMDAg
QTQgICA9IDB4JVguLmhpamtiLi4KICAgIDRCQTA6IDYyIDE0IDRGIDA3IDREIDMwIDMxIDMyIDBE
IDREIDM0IDM2IDMwIDBEIDIwIDIwICBiLk8uTTAxMi5NNDYwLiAgCiAgICA0QkIwOiA0QiA0NSA1
MiAyRCA0MSA1MyA0QyAyRCA0MyA3MCA2RCA1NyA3MiA2OSA3NCA2NSAgS0VSLUFTTC1DcG1Xcml0
ZQogICAgNEJDMDogNEQgNjUgNkQgMzggMjAgMjggMzAgNzggMjUgNTggMkMgMjAgMzAgNzggMjUg
NTggIE1lbTggKDB4JVgsIDB4JVgKICAgIDRCRDA6IDJDIDIwIDI1IDY0IDJDIDIwIDI1IDY0IDJD
IDIwIDMwIDc4IDI1IDU4IDI5IDBBICAsICVkLCAlZCwgMHglWCkuCiAgICA0QkUwOiAwMCA2OCA2
OSA2QSA2QiA2QyAwMCA3MCA0RCAzMCAzNCAzOSA2OCA2OSA2MSA3MiAgLmhpamtsLnBNMDQ5aGlh
cgogICAgNEJGMDogNkEgNkIgNjIgNzQgMEEgMDggNjIgNjIgN0EgN0IgNzkgMEEgRkYgNjIgMDAg
MEEgIGprYnQuLmJient5Li5iLi4KICAgIDRDMDA6IEZGIDAwIDYyIDYyIDc5IDdBIDYyIDZBIDAw
IDZBIDYyIDc5IDZDIDZBIDYzIDdEICAuLmJieXpiai5qYnlsamN9CiAgICA0QzEwOiA3QiA2MSA3
RiAwQSBGRiA2MiAwMCAwMCA2MyA2NCA0RCAzMCAzNCA0MyA2OCA2OSAge2EuLi5iLi5jZE0wNENo
aQogICAgNEMyMDogNjQgMTQgNDQgMDggNEQgMzIgMzUgMzIgMEIgQTAgNDYgMDcgOTIgOTUgNEQg
MzAgIGQuRC5NMjUyLi5GLi4uTTAKICAgIDRDMzA6IDM4IDM1IDBBIDA4IDcwIDREIDMyIDM1IDMx
IDYwIEEwIDQ1IDA2IDYwIDcyIDYwICA4NS4ucE0yNTFgLkUuYHJgCiAgICA0QzQwOiAwQSAxMCA2
MCA3MCAwMCA2MSA3MCAwMCA2MiBBMiA0NiAwNSA5MiA5MyA2MiAwQSAgLi5gcC5hcC5iLkYuLi5i
LgogICAgNEM1MDogRkYgNzAgNEQgMzAgMzEgMzEgNzIgNjAgNjEgMDAgMDAgMDAgMEEgMDggNjIg
NzAgIC5wTTAxMXJgYS4uLi4uYnAKICAgIDRDNjA6IDREIDMwIDMxIDMxIDcyIDYwIDYxIDAwIDAx
IDAwIDBBIDA4IDYzIDcwIDREIDMwICBNMDExcmBhLi4uLi5jcE0wCiAgICA0QzcwOiAzMSAzMSA3
MiA2MCA2MSAwMCAwQSAwMiAwMCAwQSAwOCA2NCA3MCA0RCAzMCAzMSAgMTFyYGEuLi4uLi5kcE0w
MQogICAgNEM4MDogMzEgNzIgNjAgNjEgMDAgMEEgMDMgMDAgMEEgMDggNjUgQTAgMEYgOTAgOTMg
NjIgIDFyYGEuLi4uLi5lLi4uLmIKICAgIDRDOTA6IDY4IDkzIDYzIDY5IEEwIDA2IDkzIDY0IDZB
IEE0IDY1IDcyIDYxIDBBIDA2IDYxICBoLmNpLi4uZGouZXJhLi5hCiAgICA0Q0EwOiBBNCAwQyBG
RiBGRiBGRiBGRiAxNCAzNSA0RCAzNiAzMiAzNCAwOSA3MCAwMCA2MCAgLi4uLi4uLjVNNjI0LnAu
YAogICAgNENCMDogQTAgMjkgOTIgOTMgNEQgMzIgMzUgMzEgMDAgNzIgMEEgMDMgNzIgMEEgMTAg
NzcgIC4pLi5NMjUxLnIuLnIuLncKICAgIDRDQzA6IDY4IDBBIDA2IDAwIDAwIDYxIDcwIDREIDMw
IDM0IDM5IDREIDMyIDM1IDMxIDYxICBoLi4uLmFwTTA0OU0yNTFhCiAgICA0Q0QwOiA2MCBBMCAw
OCA5MyA2MCAwQSBGRiA3MCAwMCA2MCBBNCA2MCAxNCAzMSA0RCAzMCAgYC4uLmAuLnAuYC5gLjFN
MAogICAgNENFMDogMzQgMzkgMEEgNzAgMDAgNjAgQTAgMjUgOTIgOTMgNjggMDAgNzIgNjggNjkg
NjAgIDQ5LnAuYC4lLi5oLnJoaWAKICAgIDRDRjA6IDVCIDgwIDU2IDQxIDUyIDREIDAwIDYwIDAx
IDVCIDgxIDBCIDU2IDQxIDUyIDREICBbLlZBUk0uYC5bLi5WQVJNCiAgICA0RDAwOiAwMSA1NiA0
MSA1MiA1MiAwOCA3MCA1NiA0MSA1MiA1MiA2MCBBNCA2MCAxNCAzMiAgLlZBUlIucFZBUlJgLmAu
MgogICAgNEQxMDogNEQgMzAgMzQgNDEgMEEgNzAgMDAgNjAgQTAgMjYgOTIgOTMgNjggMDAgNzIg
NjggIE0wNEEucC5gLiYuLmgucmgKICAgIDREMjA6IDY5IDYwIDVCIDgwIDU2IDQxIDUyIDREIDAw
IDYwIDBBIDAyIDVCIDgxIDBCIDU2ICBpYFsuVkFSTS5gLi5bLi5WCiAgICA0RDMwOiA0MSA1MiA0
RCAwMiA1NiA0MSA1MiA1MiAxMCA3MCA1NiA0MSA1MiA1MiA2MCBBNCAgQVJNLlZBUlIucFZBUlJg
LgogICAgNEQ0MDogNjAgMTQgMzIgNEQgMzAgMzQgNDIgMEEgNzAgMDAgNjAgQTAgMjYgOTIgOTMg
NjggIGAuMk0wNEIucC5gLiYuLmgKICAgIDRENTA6IDAwIDcyIDY4IDY5IDYwIDVCIDgwIDU2IDQx
IDUyIDREIDAwIDYwIDBBIDA0IDVCICAucmhpYFsuVkFSTS5gLi5bCiAgICA0RDYwOiA4MSAwQiA1
NiA0MSA1MiA0RCAwMyA1NiA0MSA1MiA1MiAyMCA3MCA1NiA0MSA1MiAgLi5WQVJNLlZBUlIgcFZB
UgogICAgNEQ3MDogNTIgNjAgQTQgNjAgMTQgMkMgNEQgMzAgMzQgNDMgMEIgQTAgMjUgOTIgOTMg
NjggIFJgLmAuLE0wNEMuLiUuLmgKICAgIDREODA6IDAwIDcyIDY4IDY5IDYwIDVCIDgwIDU2IDQx
IDUyIDREIDAwIDYwIDAxIDVCIDgxICAucmhpYFsuVkFSTS5gLlsuCiAgICA0RDkwOiAwQiA1NiA0
MSA1MiA0RCAwMSA1NiA0MSA1MiA1MiAwOCA3MCA2QSA1NiA0MSA1MiAgLlZBUk0uVkFSUi5walZB
UgogICAgNERBMDogNTIgMTQgMkQgNEQgMzAgMzQgNDQgMEIgQTAgMjYgOTIgOTMgNjggMDAgNzIg
NjggIFIuLU0wNEQuLiYuLmgucmgKICAgIDREQjA6IDY5IDYwIDVCIDgwIDU2IDQxIDUyIDREIDAw
IDYwIDBBIDAyIDVCIDgxIDBCIDU2ICBpYFsuVkFSTS5gLi5bLi5WCiAgICA0REMwOiA0MSA1MiA0
RCAwMiA1NiA0MSA1MiA1MiAxMCA3MCA2QSA1NiA0MSA1MiA1MiAxNCAgQVJNLlZBUlIucGpWQVJS
LgogICAgNEREMDogMkQgNEQgMzAgMzQgNDUgMEIgQTAgMjYgOTIgOTMgNjggMDAgNzIgNjggNjkg
NjAgIC1NMDRFLi4mLi5oLnJoaWAKICAgIDRERTA6IDVCIDgwIDU2IDQxIDUyIDREIDAwIDYwIDBB
IDA0IDVCIDgxIDBCIDU2IDQxIDUyICBbLlZBUk0uYC4uWy4uVkFSCiAgICA0REYwOiA0RCAwMyA1
NiA0MSA1MiA1MiAyMCA3MCA2QSA1NiA0MSA1MiA1MiAxNCA0MyAxNyAgTS5WQVJSIHBqVkFSUi5D
LgogICAgNEUwMDogNEQgMzYgMzQgMzQgMEIgNEQgMzQgMzYgMzAgMEQgMjAgMjAgNEIgNDUgNTIg
MkQgIE02NDQuTTQ2MC4gIEtFUi0KICAgIDRFMTA6IDQxIDUzIDRDIDJEIDQzIDcwIDZEIDQ0IDc1
IDZEIDcwIDQ0IDYxIDc0IDYxIDIwICBBU0wtQ3BtRHVtcERhdGEgCiAgICA0RTIwOiAyOCAzMCA3
OCAyNSA1OCAyQyAyMCAzMCA3OCAyNSA1OCAyQyAyMCAzMCA3OCAyNSAgKDB4JVgsIDB4JVgsIDB4
JQogICAgNEUzMDogNTggMjkgMEEgMDAgNjggNjkgNkEgMDAgMDAgMDAgQTAgM0UgOTAgOTIgOTMg
NjkgIFgpLi5oaWouLi4uPi4uLmkKICAgIDRFNDA6IDAxIDkwIDkyIDkzIDY5IDBBIDAyIDkyIDkz
IDY5IDBBIDA0IDREIDM0IDM2IDMwICAuLi4uaS4uLi5pLi5NNDYwCiAgICA0RTUwOiAwRCAyMCAy
MCA0MSA3MiA2NyAzMSAzQSAyMCA0RiA2RSA2NSAyMCA0NCA2MSA3NCAgLiAgQXJnMTogT25lIERh
dAogICAgNEU2MDogNjEgMjAgNTcgNjkgNjQgNzQgNjggMjAgNjkgNzMgMjAgNjkgNkMgNkMgNjUg
NjcgIGEgV2lkdGggaXMgaWxsZWcKICAgIDRFNzA6IDYxIDZDIDAwIDAwIDAwIDAwIDAwIDAwIDAw
IEExIDRBIDBFIEEwIDM0IDk0IDZBICBhbC4uLi4uLi4uSi4uNC5qCiAgICA0RTgwOiAwQiAwMCAx
MCA0RCAzNCAzNiAzMCAwRCAyMCAyMCA0MSA3MiA2NyAzMiAzQSAyMCAgLi4uTTQ2MC4gIEFyZzI6
IAogICAgNEU5MDogNTQgNkYgNzQgNjEgNkMgMjAgNDQgNjEgNzQgNjEgMjAgNTMgNjkgN0EgNjUg
MjAgIFRvdGFsIERhdGEgU2l6ZSAKICAgIDRFQTA6IDY5IDczIDIwIDY5IDZDIDZDIDY1IDY3IDYx
IDZDIDAwIDAwIDAwIDAwIDAwIDAwICBpcyBpbGxlZ2FsLi4uLi4uCiAgICA0RUIwOiAwMCBBMSA0
MiAwQiA3MCAwMCA2MCA3MCA2OCA2MSA0RCAzNCAzNiAzMCAwRCAyMCAgLi5CLnAuYHBoYU00NjAu
IAogICAgNEVDMDogMjAgMzAgNzggMjUgNTggM0EgMDAgNjEgMDAgMDAgMDAgMDAgMDAgQTIgNDYg
MDkgICAweCVYOi5hLi4uLi4uRi4KICAgIDRFRDA6IDk1IDYwIDZBIEEwIDE5IDkzIDY5IDAxIDRE
IDM0IDM2IDMwIDBEIDIwIDIwIDI1ICAuYGouLi5pLk00NjAuICAlCiAgICA0RUUwOiA1OCAwMCA0
RCAzMCAzNCAzOSA2OCA2MCAwMCAwMCAwMCAwMCAwMCBBMSAzOSBBMCAgWC5NMDQ5aGAuLi4uLi45
LgogICAgNEVGMDogMUEgOTMgNjkgMEEgMDIgNEQgMzQgMzYgMzAgMEQgMjAgMjAgMjUgNTggMDAg
NEQgIC4uaS4uTTQ2MC4gICVYLk0KICAgIDRGMDA6IDMwIDM0IDQxIDY4IDYwIDAwIDAwIDAwIDAw
IDAwIEExIDFDIEEwIDFBIDkzIDY5ICAwNEFoYC4uLi4uLi4uLi5pCiAgICA0RjEwOiAwQSAwNCA0
RCAzNCAzNiAzMCAwRCAyMCAyMCAyNSA1OCAwMCA0RCAzMCAzNCA0MiAgLi5NNDYwLiAgJVguTTA0
QgogICAgNEYyMDogNjggNjAgMDAgMDAgMDAgMDAgMDAgNzIgNjAgNjkgNjAgNzIgNjggNjAgNjEg
QTAgIGhgLi4uLi5yYGlgcmhgYS4KICAgIDRGMzA6IDM0IDkzIDdCIDYxIDBBIDBGIDAwIDAwIDRE
IDM0IDM2IDMwIDBEIDBBIDAwIDAwICA0LnthLi4uLk00NjAuLi4uCiAgICA0RjQwOiAwMCAwMCAw
MCAwMCAwMCBBMCAxRSA5NSA2MCA2QSA0RCAzNCAzNiAzMCAwRCAyMCAgLi4uLi4uLi5gak00NjAu
IAogICAgNEY1MDogMjAgMzAgNzggMjUgNTggM0EgMDAgN0IgNjEgMEMgRjAgRkYgRkYgRkYgMDAg
MDAgICAweCVYOi57YS4uLi4uLi4KICAgIDRGNjA6IDAwIDAwIDAwIDAwIDREIDM0IDM2IDMwIDBE
IDBBIDAwIDAwIDAwIDAwIDAwIDAwICAuLi4uTTQ2MC4uLi4uLi4uCiAgICA0RjcwOiAwMCAxNCAz
QiA0RCAzNCAzMSAzMiAwOSA3QSA2OCAwQSAxRiA2MCA3QiA2MCAwMSAgLi47TTQxMi56aC4uYHtg
LgogICAgNEY4MDogNjAgN0EgNjggMEEgMTggNjEgN0IgNjEgMEEgN0YgNjEgN0EgNjggMEEgMDQg
NjMgIGB6aC4uYXthLi5hemguLmMKICAgIDRGOTA6IDdCIDYzIDBBIDAzIDYzIDdCIDY4IDBBIDA3
IDY0IDcwIDREIDM0IDMwIDM5IDYwICB7Yy4uY3toLi5kcE00MDlgCiAgICA0RkEwOiA2MSA2MyA2
NSA3QSA2NSA2NCA2NSA3QiA2NSAwMSA2NSBBNCA2NSAxNCAzQyA0RCAgYWNlemVkZXtlLmUuZS48
TQogICAgNEZCMDogMzQgNDUgMzMgMDkgN0EgNjggMEEgMTUgNjAgN0IgNjAgMEEgMDcgNjAgN0Eg
NjggIDRFMy56aC4uYHtgLi5gemgKICAgIDRGQzA6IDBBIDE4IDYxIDdCIDYxIDBBIDdGIDYxIDdB
IDY4IDBBIDA0IDYzIDdCIDYzIDBBICAuLmF7YS4uYXpoLi5je2MuCiAgICA0RkQwOiAwMyA2MyA3
QiA2OCAwQSAwNyA2NCA3MCA0RCAzNCA0NSAzMSA2MCA2MSA2MyA2NSAgLmN7aC4uZHBNNEUxYGFj
ZQogICAgNEZFMDogN0EgNjUgNjQgNjUgN0IgNjUgMDEgNjUgQTQgNjUgMTQgNDcgMDcgNEQgMzQg
MzEgIHplZGV7ZS5lLmUuRy5NNDEKICAgIDRGRjA6IDMzIDBBIDdBIDY4IDBBIDFGIDYwIDdCIDYw
IDAxIDYwIDdBIDY4IDBBIDE4IDYxICAzLnpoLi5ge2AuYHpoLi5hCiAgICA1MDAwOiA3QiA2MSAw
QSA3RiA2MSA3QSA2OCAwQSAwNiA2MiA3QiA2MiAwQSAwMyA2MiA3QSAge2EuLmF6aC4uYntiLi5i
egogICAgNTAxMDogNjggMEEgMDQgNjMgN0IgNjMgMEEgMDMgNjMgN0IgNjggMEEgMDcgNjQgNzAg
NEQgIGguLmN7Yy4uY3toLi5kcE0KICAgIDUwMjA6IDM0IDMwIDM5IDYwIDYxIDcyIDc3IDcyIDYy
IDAxIDAwIDAxIDAwIDYzIDAwIDY1ICA0MDlgYXJ3cmIuLi4uYy5lCiAgICA1MDMwOiA3MCA2NSA2
NiA3QiA2NSA3RiAwQyBGRiBGRiBGRiBGRiA3OSAwMSA2NCAwMCAwMCAgcGVme2UuLi4uLi55LmQu
LgogICAgNTA0MDogNjUgN0QgNjUgNzkgN0IgNjkgMDEgMDAgNjQgMDAgNjUgQTAgMTYgOTIgOTMg
NjUgIGV9ZXl7aS4uZC5lLi4uLmUKICAgIDUwNTA6IDY2IDREIDM0IDMxIDMwIDYwIDYxIDcyIDc3
IDcyIDYyIDAxIDAwIDAxIDAwIDYzICBmTTQxMGBhcndyYi4uLi5jCiAgICA1MDYwOiAwMCA2NSAx
NCA0OCAwNyA0RCAzNCA0NSAzNCAwQSA3QSA2OCAwQSAxNSA2MCA3QiAgLmUuSC5NNEU0LnpoLi5g
ewogICAgNTA3MDogNjAgMEEgMDcgNjAgN0EgNjggMEEgMTggNjEgN0IgNjEgMEEgN0YgNjEgN0Eg
NjggIGAuLmB6aC4uYXthLi5hemgKICAgIDUwODA6IDBBIDA2IDYyIDdCIDYyIDBBIDAzIDYyIDdB
IDY4IDBBIDA0IDYzIDdCIDYzIDBBICAuLmJ7Yi4uYnpoLi5je2MuCiAgICA1MDkwOiAwMyA2MyA3
QiA2OCAwQSAwNyA2NCA3MCA0RCAzNCA0NSAzMSA2MCA2MSA3MiA3NyAgLmN7aC4uZHBNNEUxYGFy
dwogICAgNTBBMDogNzIgNjIgMDEgMDAgMDEgMDAgNjMgMDAgNjUgNzAgNjUgNjYgN0IgNjUgN0Yg
MEMgIHJiLi4uLmMuZXBlZntlLi4KICAgIDUwQjA6IEZGIEZGIEZGIEZGIDc5IDAxIDY0IDAwIDAw
IDY1IDdEIDY1IDc5IDdCIDY5IDAxICAuLi4ueS5kLi5lfWV5e2kuCiAgICA1MEMwOiAwMCA2NCAw
MCA2NSBBMCAxNiA5MiA5MyA2NSA2NiA0RCAzNCA0NSAzMiA2MCA2MSAgLmQuZS4uLi5lZk00RTJg
YQogICAgNTBEMDogNzIgNzcgNzIgNjIgMDEgMDAgMDEgMDAgNjMgMDAgNjUgMTQgNDUgNEEgNEQg
MzQgIHJ3cmIuLi4uYy5lLkVKTTQKICAgIDUwRTA6IDMzIDQxIDA5IDcwIDAwIDYwIDcwIDREIDMw
IDM0IDQyIDREIDMxIDMyIDM4IDBBICAzQS5wLmBwTTA0Qk0xMjguCiAgICA1MEYwOiAzMyA2MSA3
MCA0RCAzMCAzNCA0MiA0RCAzMSAzMiAzOCAwQSA3MiA2MiBBMCA0RiAgM2FwTTA0Qk0xMjgucmIu
TwogICAgNTEwMDogMDYgOTEgOTMgNjEgMDAgOTMgNjIgMDAgNEQgMzQgMzYgMzAgMEQgMjAgMjAg
NEIgIC4uLmEuLmIuTTQ2MC4gIEsKICAgIDUxMTA6IDQ1IDUyIDJEIDQxIDUzIDRDIDJEIDQzIDcw
IDZEIDQ3IDY1IDc0IDUwIDc0IDQ3ICBFUi1BU0wtQ3BtR2V0UHRHCiAgICA1MTIwOiA3MCA2OSA2
RiA0RCA2RCA2OSA2RiA0MSA2NCA2NCA3MiA2NSA3MyA3MyAyMCAyOCAgcGlvTW1pb0FkZHJlc3Mg
KAogICAgNTEzMDogMjUgNjQgMjkgMjAgMjAgNEMgNkYgNjMgNjEgNkMgMzEgMjAgM0QgMjAgMzAg
NzggICVkKSAgTG9jYWwxID0gMHgKICAgIDUxNDA6IDI1IDU4IDIwIDIwIDRDIDZGIDYzIDYxIDZD
IDMyIDIwIDNEIDIwIDMwIDc4IDI1ICAlWCAgTG9jYWwyID0gMHglCiAgICA1MTUwOiA1OCAyMCAy
MCA0NSA1MiA1MiA0RiA1MiAyMCA0NSA1MiA1MiA0RiA1MiAyMCA0NSAgWCAgRVJST1IgRVJST1Ig
RQogICAgNTE2MDogNTIgNTIgNEYgNTIgMEEgMDAgNjggNjEgNjIgMDAgMDAgMDAgQTQgNjAgNzAg
NEQgIFJST1IuLmhhYi4uLi5gcE0KICAgIDUxNzA6IDMwIDMxIDMxIDYyIDBBIDE5IDAwIDBBIDA4
IDYzIEEwIDQ1IDA2IDkxIDkzIDYzICAwMTFiLi4uLi5jLkUuLi5jCiAgICA1MTgwOiAwMCA5MyA2
MyAwQSBGRiA0RCAzNCAzNiAzMCAwRCAyMCAyMCA0QiA0NSA1MiAyRCAgLi5jLi5NNDYwLiAgS0VS
LQogICAgNTE5MDogNDEgNTMgNEMgMkQgNDMgNzAgNkQgNDcgNjUgNzQgNTAgNzQgNDcgNzAgNjkg
NkYgIEFTTC1DcG1HZXRQdEdwaW8KICAgIDUxQTA6IDREIDZEIDY5IDZGIDQxIDY0IDY0IDcyIDY1
IDczIDczIDIwIDI4IDI1IDY0IDI5ICBNbWlvQWRkcmVzcyAoJWQpCiAgICA1MUIwOiAyMCAyMCA0
QyA2RiA2MyA2MSA2QyAzMyAyMCAzRCAyMCAzMCA3OCAyNSA1OCAyMCAgICBMb2NhbDMgPSAweCVY
IAogICAgNTFDMDogMjAgNDUgNTIgNTIgNEYgNTIgMjAgNDUgNTIgNTIgNEYgNTIgMjAgNDUgNTIg
NTIgICBFUlJPUiBFUlJPUiBFUlIKICAgIDUxRDA6IDRGIDUyIDIwIDJEIDIwIDMxIDBBIDAwIDY4
IDYzIDAwIDAwIDAwIDAwIEE0IDYwICBPUiAtIDEuLmhjLi4uLi5gCiAgICA1MUUwOiA3MiA2MSA3
OSA2MyAwQSAxNCAwMCA2MiA3MCA0RCAzMCAzMSAzMyA2MiAwQSAwOCAgcmF5Yy4uLmJwTTAxM2Iu
LgogICAgNTFGMDogMEEgMDggMEEgMTggNjMgQTAgNDcgMDcgOTIgOTMgNjMgMEMgMDAgMDQgMDYg
MDAgIC4uLi5jLkcuLi5jLi4uLi4KICAgIDUyMDA6IEEwIDQwIDA2IDkyIDk1IDY4IDBBIDA4IDRE
IDM0IDM2IDMwIDBEIDIwIDIwIDRCICAuQC4uLmguLk00NjAuICBLCiAgICA1MjEwOiA0NSA1MiAy
RCA0MSA1MyA0QyAyRCA0MyA3MCA2RCA0NyA2NSA3NCA1MCA3NCA0NyAgRVItQVNMLUNwbUdldFB0
RwogICAgNTIyMDogNzAgNjkgNkYgNEQgNkQgNjkgNkYgNDEgNjQgNjQgNzIgNjUgNzMgNzMgMjAg
MjggIHBpb01taW9BZGRyZXNzICgKICAgIDUyMzA6IDI1IDY0IDIwIDNFIDNEIDIwIDM4IDI5IDIw
IDIwIDRFIDZGIDc0IDIwIDUwIDUyICAlZCA+PSA4KSAgTm90IFBSCiAgICA1MjQwOiA0RiA0RCAz
MiAzMSAyMCAyMCA0NSA1MiA1MiA0RiA1MiAyMCA0NSA1MiA1MiA0RiAgT00yMSAgRVJST1IgRVJS
TwogICAgNTI1MDogNTIgMjAgNDUgNTIgNTIgNEYgNTIgMEEgMDAgNjggMDAgMDAgMDAgMDAgMDAg
QTQgIFIgRVJST1IuLmguLi4uLi4KICAgIDUyNjA6IDYwIDcwIDBBIDAyIDYzIDcyIDYyIDc5IDYz
IDBBIDBDIDAwIDYyIEExIDQ2IDE3ICBgcC4uY3JieWMuLi5iLkYuCiAgICA1MjcwOiBBMCA0MyAx
NyA5MiA5NSA2OCAwQSAxOCA3MCA0RCAzMCAzNCAzOSA0RCAzMSAzMiAgLkMuLi5oLi5wTTA0OU0x
MgogICAgNTI4MDogMzggMEEgOTMgNjQgQTAgNEMgMDUgOTMgNjQgMDAgNEQgMzQgMzYgMzAgMEQg
MjAgIDguLmQuTC4uZC5NNDYwLiAKICAgIDUyOTA6IDIwIDRCIDQ1IDUyIDJEIDQxIDUzIDRDIDJE
IDQzIDcwIDZEIDQ3IDY1IDc0IDUwICAgS0VSLUFTTC1DcG1HZXRQCiAgICA1MkEwOiA3NCA0NyA3
MCA2OSA2RiA0RCA2RCA2OSA2RiA0MSA2NCA2NCA3MiA2NSA3MyA3MyAgdEdwaW9NbWlvQWRkcmVz
cwogICAgNTJCMDogMjAgMjggMjUgNjQgMjkgMjAgMjAgNEMgNkYgNjMgNjEgNkMgMzQgMjAgM0Qg
MjAgICAoJWQpICBMb2NhbDQgPSAKICAgIDUyQzA6IDMwIDc4IDI1IDU4IDIwIDIwIDQ1IDUyIDUy
IDRGIDUyIDIwIDQ1IDUyIDUyIDRGICAweCVYICBFUlJPUiBFUlJPCiAgICA1MkQwOiA1MiAyMCA0
NSA1MiA1MiA0RiA1MiAwQSAwMCA2OCA2NCAwMCAwMCAwMCAwMCBBNCAgUiBFUlJPUi4uaGQuLi4u
LgogICAgNTJFMDogNjAgQTEgMDYgN0IgNjQgMEEgMUYgNjQgNzAgNEQgMzAgMzEgMzEgNjIgMEEg
MTkgIGAuLntkLi5kcE0wMTFiLi4KICAgIDUyRjA6IDAwIDBBIDA4IDYzIEEwIDQ1IDA2IDkxIDkz
IDYzIDAwIDkzIDYzIDBBIEZGIDREICAuLi5jLkUuLi5jLi5jLi5NCiAgICA1MzAwOiAzNCAzNiAz
MCAwRCAyMCAyMCA0QiA0NSA1MiAyRCA0MSA1MyA0QyAyRCA0MyA3MCAgNDYwLiAgS0VSLUFTTC1D
cAogICAgNTMxMDogNkQgNDcgNjUgNzQgNTAgNzQgNDcgNzAgNjkgNkYgNEQgNkQgNjkgNkYgNDEg
NjQgIG1HZXRQdEdwaW9NbWlvQWQKICAgIDUzMjA6IDY0IDcyIDY1IDczIDczIDIwIDI4IDI1IDY0
IDI5IDIwIDIwIDRDIDZGIDYzIDYxICBkcmVzcyAoJWQpICBMb2NhCiAgICA1MzMwOiA2QyAzMyAy
MCAzRCAyMCAzMCA3OCAyNSA1OCAyMCAyMCA0NSA1MiA1MiA0RiA1MiAgbDMgPSAweCVYICBFUlJP
UgogICAgNTM0MDogMjAgNDUgNTIgNTIgNEYgNTIgMjAgNDUgNTIgNTIgNEYgNTIgMjAgMkQgMjAg
MzIgICBFUlJPUiBFUlJPUiAtIDIKICAgIDUzNTA6IDBBIDAwIDY4IDYzIDAwIDAwIDAwIDAwIEE0
IDYwIDcyIDYxIDc5IDYzIDBBIDE0ICAuLmhjLi4uLi5gcmF5Yy4uCiAgICA1MzYwOiAwMCA2MiA3
MiA2MiA3OSA2NCAwQSAwRiAwMCA2MiA3MCA0RCAzMCAzMSAzMSA2MiAgLmJyYnlkLi4uYnBNMDEx
YgogICAgNTM3MDogMEEgMTkgMDAgMEEgMDggNjMgQTAgNDUgMDYgOTEgOTMgNjMgMDAgOTMgNjMg
MEEgIC4uLi4uYy5FLi4uYy4uYy4KICAgIDUzODA6IEZGIDREIDM0IDM2IDMwIDBEIDIwIDIwIDRC
IDQ1IDUyIDJEIDQxIDUzIDRDIDJEICAuTTQ2MC4gIEtFUi1BU0wtCiAgICA1MzkwOiA0MyA3MCA2
RCA0NyA2NSA3NCA1MCA3NCA0NyA3MCA2OSA2RiA0RCA2RCA2OSA2RiAgQ3BtR2V0UHRHcGlvTW1p
bwogICAgNTNBMDogNDEgNjQgNjQgNzIgNjUgNzMgNzMgMjAgMjggMjUgNjQgMjkgMjAgMjAgNEMg
NkYgIEFkZHJlc3MgKCVkKSAgTG8KICAgIDUzQjA6IDYzIDYxIDZDIDMzIDIwIDNEIDIwIDMwIDc4
IDI1IDU4IDIwIDIwIDQ1IDUyIDUyICBjYWwzID0gMHglWCAgRVJSCiAgICA1M0MwOiA0RiA1MiAy
MCA0NSA1MiA1MiA0RiA1MiAyMCA0NSA1MiA1MiA0RiA1MiAyMCAyRCAgT1IgRVJST1IgRVJST1Ig
LQogICAgNTNEMDogMjAgMzMgMEEgMDAgNjggNjMgMDAgMDAgMDAgMDAgQTQgNjAgNzIgNjEgNzkg
NjMgICAzLi5oYy4uLi4uYHJheWMKICAgIDUzRTA6IDBBIDE0IDAwIDYyIDcwIDREIDMwIDMxIDMx
IDYyIDBBIDA0IDAwIDBBIDA4IDYzICAuLi5icE0wMTFiLi4uLi5jCiAgICA1M0YwOiBBMCA0NSAw
NiA5MSA5MyA2MyAwMCA5MyA2MyAwQSBGRiA0RCAzNCAzNiAzMCAwRCAgLkUuLi5jLi5jLi5NNDYw
LgogICAgNTQwMDogMjAgMjAgNEIgNDUgNTIgMkQgNDEgNTMgNEMgMkQgNDMgNzAgNkQgNDcgNjUg
NzQgICAgS0VSLUFTTC1DcG1HZXQKICAgIDU0MTA6IDUwIDc0IDQ3IDcwIDY5IDZGIDREIDZEIDY5
IDZGIDQxIDY0IDY0IDcyIDY1IDczICBQdEdwaW9NbWlvQWRkcmVzCiAgICA1NDIwOiA3MyAyMCAy
OCAyNSA2NCAyOSAyMCAyMCA0QyA2RiA2MyA2MSA2QyAzMyAyMCAzRCAgcyAoJWQpICBMb2NhbDMg
PQogICAgNTQzMDogMjAgMzAgNzggMjUgNTggMjAgMjAgNDUgNTIgNTIgNEYgNTIgMjAgNDUgNTIg
NTIgICAweCVYICBFUlJPUiBFUlIKICAgIDU0NDA6IDRGIDUyIDIwIDQ1IDUyIDUyIDRGIDUyIDIw
IDJEIDIwIDM0IDBBIDAwIDY4IDYzICBPUiBFUlJPUiAtIDQuLmhjCiAgICA1NDUwOiAwMCAwMCAw
MCAwMCBBNCA2MCBBMCA0NiAwNiA5MiA5MyA3QiA2MyAwQSAwMiAwMCAgLi4uLi5gLkYuLi57Yy4u
LgogICAgNTQ2MDogMEEgMDIgNEQgMzQgMzYgMzAgMEQgMjAgMjAgNEIgNDUgNTIgMkQgNDEgNTMg
NEMgIC4uTTQ2MC4gIEtFUi1BU0wKICAgIDU0NzA6IDJEIDQzIDcwIDZEIDQ3IDY1IDc0IDUwIDc0
IDQ3IDcwIDY5IDZGIDREIDZEIDY5ICAtQ3BtR2V0UHRHcGlvTW1pCiAgICA1NDgwOiA2RiA0MSA2
NCA2NCA3MiA2NSA3MyA3MyAyMCAyOCAyNSA2NCAyOSAyMCAyMCA0QyAgb0FkZHJlc3MgKCVkKSAg
TAogICAgNTQ5MDogNkYgNjMgNjEgNkMgMzMgMjAgM0QgMjAgMzAgNzggMjUgNTggMjAgMjAgNDUg
NTIgIG9jYWwzID0gMHglWCAgRVIKICAgIDU0QTA6IDUyIDRGIDUyIDIwIDQ1IDUyIDUyIDRGIDUy
IDIwIDQ1IDUyIDUyIDRGIDUyIDIwICBST1IgRVJST1IgRVJST1IgCiAgICA1NEIwOiAyRCAyMCAz
NSAwQSAwMCA2OCA2MyAwMCAwMCAwMCAwMCBBNCA2MCA3MCA0RCAzMCAgLSA1Li5oYy4uLi4uYHBN
MAogICAgNTRDMDogMzEgMzMgNjIgMEEgNDAgMDAgMEEgMjAgNjMgN0IgNjMgMEMgRkIgRkYgRkYg
RkYgIDEzYi5ALi4gY3tjLi4uLi4KICAgIDU0RDA6IDYzIEEwIDQ4IDA2IDkxIDkzIDYzIDAwIDkz
IDYzIDBDIEZCIEZGIEZGIEZGIDREICBjLkguLi5jLi5jLi4uLi5NCiAgICA1NEUwOiAzNCAzNiAz
MCAwRCAyMCAyMCA0QiA0NSA1MiAyRCA0MSA1MyA0QyAyRCA0MyA3MCAgNDYwLiAgS0VSLUFTTC1D
cAogICAgNTRGMDogNkQgNDcgNjUgNzQgNTAgNzQgNDcgNzAgNjkgNkYgNEQgNkQgNjkgNkYgNDEg
NjQgIG1HZXRQdEdwaW9NbWlvQWQKICAgIDU1MDA6IDY0IDcyIDY1IDczIDczIDIwIDI4IDI1IDY0
IDI5IDIwIDIwIDRDIDZGIDYzIDYxICBkcmVzcyAoJWQpICBMb2NhCiAgICA1NTEwOiA2QyAzMyAy
MCAzRCAyMCAzMCA3OCAyNSA1OCAyMCAyMCA0NSA1MiA1MiA0RiA1MiAgbDMgPSAweCVYICBFUlJP
UgogICAgNTUyMDogMjAgNDUgNTIgNTIgNEYgNTIgMjAgNDUgNTIgNTIgNEYgNTIgMjAgMkQgMjAg
MzYgICBFUlJPUiBFUlJPUiAtIDYKICAgIDU1MzA6IDBBIDAwIDY4IDYzIDAwIDAwIDAwIDAwIEE0
IDYwIEExIDQ2IDA0IDREIDM0IDM2ICAuLmhjLi4uLi5gLkYuTTQ2CiAgICA1NTQwOiAzMCAwRCAy
MCAyMCA0QiA0NSA1MiAyRCA0MSA1MyA0QyAyRCA0MyA3MCA2RCA0NyAgMC4gIEtFUi1BU0wtQ3Bt
RwogICAgNTU1MDogNjUgNzQgNTAgNzQgNDcgNzAgNjkgNkYgNEQgNkQgNjkgNkYgNDEgNjQgNjQg
NzIgIGV0UHRHcGlvTW1pb0FkZHIKICAgIDU1NjA6IDY1IDczIDczIDIwIDI4IDI1IDY0IDI5IDIw
IDIwIDRDIDZGIDYzIDYxIDZDIDMzICBlc3MgKCVkKSAgTG9jYWwzCiAgICA1NTcwOiAyMCAzRCAy
MCAzMCA3OCAyNSA1OCAwQSAwMCA2OCA2MyAwMCAwMCAwMCAwMCBBNCAgID0gMHglWC4uaGMuLi4u
LgogICAgNTU4MDogNjMgMTQgNDcgMEQgNEQgMzQgMzQgMzAgMDkgNzAgNEQgMzQgMzMgNDEgNjgg
NjAgIGMuRy5NNDQwLnBNNDNBaGAKICAgIDU1OTA6IEEwIDQ2IDA1IDkzIDYwIDAwIDREIDM0IDM2
IDMwIDBEIDIwIDIwIDRCIDQ1IDUyICAuRi4uYC5NNDYwLiAgS0VSCiAgICA1NUEwOiAyRCA0MSA1
MyA0QyAyRCA0MyA3MCA2RCA1MCA3NCA1MiA2NSA2MSA2NCA0NyA3MCAgLUFTTC1DcG1QdFJlYWRH
cAogICAgNTVCMDogNjkgNkYgMjAgMjAgMjggMjUgNjQgMjkgMjAgM0QgMjAgMjUgNjQgMjAgMjAg
NEQgIGlvICAoJWQpID0gJWQgIE0KICAgIDU1QzA6IDREIDQ5IDRGIDIwIDNEIDIwIDMwIDc4IDI1
IDU4IDIwIDIwIDQ1IDUyIDUyIDRGICBNSU8gPSAweCVYICBFUlJPCiAgICA1NUQwOiA1MiAyMCA0
NSA1MiA1MiA0RiA1MiAyMCA0NSA1MiA1MiA0RiA1MiAwQSAwMCA2OCAgUiBFUlJPUiBFUlJPUi4u
aAogICAgNTVFMDogNjAgNjAgMDAgMDAgMDAgQTQgNjAgQTAgMEIgOTIgOTUgNjggMEEgMTggNzQg
NjggIGBgLi4uLmAuLi4uaC4udGgKICAgIDU1RjA6IDBBIDE4IDYxIEExIDA0IDcwIDY4IDYxIDcw
IDREIDMwIDMxIDMzIDYwIDAwIDYxICAuLmEuLnBoYXBNMDEzYC5hCiAgICA1NjAwOiAwMSA2MiBB
MCAwRCA5MyA2MiAwMSA0RCAzMCAzMSAzNCA2MCAwMCA2MSAwMSAwMCAgLmIuLi5iLk0wMTRgLmEu
LgogICAgNTYxMDogNzAgNEQgMzAgMzEgMzMgNjAgMEEgMDQgNjEgMDEgNjIgNEQgMzQgMzYgMzAg
MEQgIHBNMDEzYC4uYS5iTTQ2MC4KICAgIDU2MjA6IDIwIDIwIDRCIDQ1IDUyIDJEIDQxIDUzIDRD
IDJEIDQzIDcwIDZEIDUwIDc0IDUyICAgIEtFUi1BU0wtQ3BtUHRSCiAgICA1NjMwOiA2NSA2MSA2
NCA0NyA3MCA2OSA2RiAyMCAyMCAyOCAyNSA2NCAyOSAyMCAzRCAyMCAgZWFkR3BpbyAgKCVkKSA9
IAogICAgNTY0MDogMjUgNjQgMjAgMjAgNEQgNEQgNDkgNEYgMjAgM0QgMjAgMzAgNzggMjUgNTgg
MEEgICVkICBNTUlPID0gMHglWC4KICAgIDU2NTA6IDAwIDY4IDYyIDYwIDAwIDAwIDAwIEE0IDYy
IDE0IDQzIDBEIDREIDM0IDM0IDMxICAuaGJgLi4uLmIuQy5NNDQxCiAgICA1NjYwOiAwQSA3MCA0
RCAzNCAzMyA0MSA2OCA2MCBBMCA0NCAwNSA5MyA2MCAwMCA0RCAzNCAgLnBNNDNBaGAuRC4uYC5N
NAogICAgNTY3MDogMzYgMzAgMEQgMjAgMjAgNEIgNDUgNTIgMkQgNDEgNTMgNEMgMkQgNDMgNzAg
NkQgIDYwLiAgS0VSLUFTTC1DcG0KICAgIDU2ODA6IDUwIDc0IDU3IDcyIDY5IDc0IDY1IDQ3IDcw
IDY5IDZGIDIwIDI4IDI1IDY0IDJDICBQdFdyaXRlR3BpbyAoJWQsCiAgICA1NjkwOiAyMCAyNSA2
NCAyOSAyMCAyMCAyMCA0RCA0RCA0OSA0RiAyMCAzRCAyMCAzMCA3OCAgICVkKSAgIE1NSU8gPSAw
eAogICAgNTZBMDogMjUgNTggMjAgMjAgNDUgNTIgNTIgNEYgNTIgMjAgNDUgNTIgNTIgNEYgNTIg
MjAgICVYICBFUlJPUiBFUlJPUiAKICAgIDU2QjA6IDQ1IDUyIDUyIDRGIDUyIDBBIDAwIDY4IDY5
IDYwIDAwIDAwIDAwIEEwIDBCIDkyICBFUlJPUi4uaGlgLi4uLi4uCiAgICA1NkMwOiA5NSA2OCAw
QSAxOCA3NCA2OCAwQSAxOCA2MSBBMSAwNCA3MCA2OCA2MSA3MCA0RCAgLmguLnRoLi5hLi5waGFw
TQogICAgNTZEMDogMzAgMzEgMzMgNjAgMDAgNjEgMDEgNjIgQTAgMEUgOTIgOTMgNjIgMDEgNEQg
MzAgIDAxM2AuYS5iLi4uLmIuTTAKICAgIDU2RTA6IDMxIDM0IDYwIDAwIDYxIDAxIDAxIDREIDMw
IDMxIDM0IDYwIDBBIDA4IDYxIDAxICAxNGAuYS4uTTAxNGAuLmEuCiAgICA1NkYwOiA2OSA0RCAz
NCAzNiAzMCAwRCAyMCAyMCA0QiA0NSA1MiAyRCA0MSA1MyA0QyAyRCAgaU00NjAuICBLRVItQVNM
LQogICAgNTcwMDogNDMgNzAgNkQgNTAgNzQgNTcgNzIgNjkgNzQgNjUgNDcgNzAgNjkgNkYgMjAg
MjggIENwbVB0V3JpdGVHcGlvICgKICAgIDU3MTA6IDI1IDY0IDJDIDIwIDI1IDY0IDI5IDIwIDIw
IDIwIDREIDREIDQ5IDRGIDIwIDNEICAlZCwgJWQpICAgTU1JTyA9CiAgICA1NzIwOiAyMCAzMCA3
OCAyNSA1OCAwQSAwMCA2OCA2OSA2MCAwMCAwMCAwMCAxNCA0QiAxQiAgIDB4JVguLmhpYC4uLi5L
LgogICAgNTczMDogNEQgMzAgMzAgMzkgMDkgN0EgNjggMEEgMDggNjAgN0IgNjAgMEEgMDcgNjAg
N0IgIE0wMDkuemguLmB7YC4uYHsKICAgIDU3NDA6IDY4IDBBIEZGIDYxIDcwIDAwIDYyIEEwIDRB
IDBCIDkxIDkzIDYwIDAwIDkzIDYwICBoLi5hcC5iLkouLi5gLi5gCiAgICA1NzUwOiAwMSBBMCA0
QiAwOSA5MiA5NSA0RCAzMCAzOCAzNSAwQSAwMiBBMCAzRSA5MyA3QiAgLi5LLi4uTTA4NS4uLj4u
ewogICAgNTc2MDogNjggMEMgMDAgMDAgMDAgRjggMDAgMDAgQTAgMUEgOTMgNjAgMDAgNzAgNEQg
MzAgIGguLi4uLi4uLi4uYC5wTTAKICAgIDU3NzA6IDMxIDMxIDcyIDREIDMwIDM4IDM0IDBCIDAy
IDE1IDAwIDc3IDYxIDBBIDA0IDAwICAxMXJNMDg0Li4uLndhLi4uCiAgICA1NzgwOiAwMCAwMSA2
MiBBMSAxNyA3MCA0RCAzMCAzMSAzMSA3MiA0RCAzMCAzOCAzNCAwQiAgLi5iLi5wTTAxMXJNMDg0
LgogICAgNTc5MDogMDIgMTIgMDAgNzcgNjEgMEEgMDQgMDAgMDAgMDEgNjIgQTEgNDEgMDUgN0Eg
NjggIC4uLndhLi4uLi5iLkEuemgKICAgIDU3QTA6IDBBIDFGIDYzIDdCIDYzIDAxIDYzIDdBIDY4
IDBBIDFEIDY0IDdCIDY0IDBBIDAzICAuLmN7Yy5jemguLmR7ZC4uCiAgICA1N0IwOiA2NCA3QSA2
OCAwQSAxQiA2NSA3QiA2NSAwQSAwMyA2NSBBMCAxMCA5MyA2MCAwMCAgZHpoLi5le2UuLmUuLi5g
LgogICAgNTdDMDogNzIgMEMgMDAgMjUgRDAgMDIgNzcgNjEgMEEgMDQgMDAgNjYgQTEgMEQgNzIg
MEMgIHIuLiUuLndhLi4uZi4uci4KICAgIDU3RDA6IDAwIDIyIEQwIDAyIDc3IDYxIDBBIDA0IDAw
IDY2IDcwIDREIDMyIDM0IDM5IDYzICAuIi4ud2EuLi5mcE0yNDljCiAgICA1N0UwOiA2NCA2NSA2
NiA2MiA3QSA2MiAwQSAxMCA2MiA3QiA2MiAwMSA2MiBBMSAxNCA3MCAgZGVmYnpiLi5ie2IuYi4u
cAogICAgNTdGMDogNEQgMzAgMzEgMzEgNzIgNEQgMzAgMzggMzQgMEIgMDAgMDEgMDAgNjEgMEEg
MDcgIE0wMTFyTTA4NC4uLi5hLi4KICAgIDU4MDA6IDAxIDYyIEExIDQzIDBCIEEwIDRCIDA1IDkx
IDkzIDYwIDBBIDA0IDkzIDYwIDBBICAuYi5DLi5LLi4uYC4uLmAuCiAgICA1ODEwOiAwNSA3QSA2
OCAwQSAxRiA2MyA3QiA2MyAwMSA2MyA3QSA2OCAwQSAxRCA2NCA3QiAgLnpoLi5je2MuY3poLi5k
ewogICAgNTgyMDogNjQgMEEgMDMgNjQgN0EgNjggMEEgMUIgNjUgN0IgNjUgMEEgMDMgNjUgQTAg
MTEgIGQuLmR6aC4uZXtlLi5lLi4KICAgIDU4MzA6IDkzIDYwIDBBIDA0IDcyIDBDIDAwIDI1IEQw
IDAyIDc3IDYxIDBBIDA0IDAwIDY2ICAuYC4uci4uJS4ud2EuLi5mCiAgICA1ODQwOiBBMSAwRCA3
MiAwQyAwMCAyMiBEMCAwMiA3NyA2MSAwQSAwNCAwMCA2NiA3MCA0RCAgLi5yLi4iLi53YS4uLmZw
TQogICAgNTg1MDogMzQgMzIgMzIgNjMgNjQgNjUgNjYgNjIgN0EgNjIgMEEgMTAgNjIgN0IgNjIg
MDEgIDQyMmNkZWZiemIuLmJ7Yi4KICAgIDU4NjA6IDYyIEExIDQ0IDA1IEEwIDI0IDkzIDYwIDBB
IDAyIEEwIDE4IDkzIDREIDMwIDM0ICBiLkQuLiQuYC4uLi4uTTA0CiAgICA1ODcwOiAzOSA0RCAz
MSAzMiAzOCAwQSA3NyAwMSA3MCA0RCAzMCAzMyAzOCA3MiA2MSAwQSAgOU0xMjgudy5wTTAzOHJh
LgogICAgNTg4MDogMDggMDAgNjIgQTEgMDUgNzAgMEEgRkYgNjIgQTEgMkMgQTAgMEMgOTMgNjAg
MEEgIC4uYi4ucC4uYi4sLi4uYC4KICAgIDU4OTA6IDAzIDcwIDREIDM0IDM0IDMwIDYxIDYyIEEx
IDFEIEEwIDBDIDkzIDYwIDBBIDA2ICAucE00NDBhYi4uLi4uYC4uCiAgICA1OEEwOiA3MCA0RCAz
NCAzMSAzMiA2OCA2MiBBMSAwRSBBMCAwQyA5MyA2MCAwQSAwNyA3MCAgcE00MTJoYi4uLi4uYC4u
cAogICAgNThCMDogNEQgMzQgNDUgMzMgNjggNjIgNEQgMzQgMzYgMzAgMEQgMjAgMjAgNEIgNDUg
NTIgIE00RTNoYk00NjAuICBLRVIKICAgIDU4QzA6IDJEIDQxIDUzIDRDIDJEIDQzIDcwIDZEIDUy
IDY1IDYxIDY0IDQ3IDcwIDY5IDZGICAtQVNMLUNwbVJlYWRHcGlvCiAgICA1OEQwOiAyMCAyMCAy
OCAzMCA3OCAyNSA1OCAyOSAyMCAzRCAyMCAzMCA3OCAyNSA1OCAwQSAgICAoMHglWCkgPSAweCVY
LgogICAgNThFMDogMDAgNjggNjIgMDAgMDAgMDAgMDAgQTQgNjIgMTQgNDcgMUYgNEQgMzAgMzEg
MzAgIC5oYi4uLi4uYi5HLk0wMTAKICAgIDU4RjA6IDBBIDdBIDY4IDBBIDA4IDYwIDdCIDYwIDBB
IDA3IDYwIDdCIDY4IDBBIEZGIDYxICAuemguLmB7YC4uYHtoLi5hCiAgICA1OTAwOiA0RCAzNCAz
NiAzMCAwRCAyMCAyMCA0QiA0NSA1MiAyRCA0MSA1MyA0QyAyRCA0MyAgTTQ2MC4gIEtFUi1BU0wt
QwogICAgNTkxMDogNzAgNkQgNTcgNzIgNjkgNzQgNjUgNDcgNzAgNjkgNkYgMjAgMjggMzAgNzgg
MjUgIHBtV3JpdGVHcGlvICgweCUKICAgIDU5MjA6IDU4IDJDIDIwIDMwIDc4IDI1IDU4IDI5IDBB
IDAwIDY4IDY5IDAwIDAwIDAwIDAwICBYLCAweCVYKS4uaGkuLi4uCiAgICA1OTMwOiBBMCA0RSAw
RSA5MSA5MyA2MCAwMCA5MyA2MCAwMSBBMCA0RSAwQiA5MiA5NSA0RCAgLk4uLi5gLi5gLi5OLi4u
TQogICAgNTk0MDogMzAgMzggMzUgMEEgMDIgQTAgNDkgMDQgOTMgN0IgNjggMEMgMDAgMDAgMDAg
RjggIDA4NS4uLkkuLntoLi4uLi4KICAgIDU5NTA6IDAwIDAwIEEwIDFGIDkzIDYwIDAwIDREIDMw
IDMxIDMyIDcyIDREIDMwIDM4IDM0ICAuLi4uLmAuTTAxMnJNMDg0CiAgICA1OTYwOiAwQiAwMiAx
NSAwMCA3NyA2MSAwQSAwNCAwMCAwQSAwNiAwQSAwMiA3RCAwQSAwMiAgLi4uLndhLi4uLi4uLn0u
LgogICAgNTk3MDogNjkgMDAgQTEgMUMgNEQgMzAgMzEgMzIgNzIgNEQgMzAgMzggMzQgMEIgMDIg
MTIgIGkuLi5NMDEyck0wODQuLi4KICAgIDU5ODA6IDAwIDc3IDYxIDBBIDA0IDAwIDBBIDA2IDBB
IDAyIDdEIDBBIDAyIDY5IDAwIEExICAud2EuLi4uLi4ufS4uaS4uCiAgICA1OTkwOiA0OSAwNiA3
QSA2OCAwQSAxRiA2MyA3QiA2MyAwMSA2MyA3QSA2OCAwQSAxRCA2NCAgSS56aC4uY3tjLmN6aC4u
ZAogICAgNTlBMDogN0IgNjQgMEEgMDMgNjQgN0EgNjggMEEgMUIgNjUgN0IgNjUgMEEgMDMgNjUg
QTAgIHtkLi5kemguLmV7ZS4uZS4KICAgIDU5QjA6IDEwIDkzIDYwIDAwIDcyIDBDIDAwIDI1IEQw
IDAyIDc3IDYxIDBBIDA0IDAwIDY2ICAuLmAuci4uJS4ud2EuLi5mCiAgICA1OUMwOiBBMSAwRCA3
MiAwQyAwMCAyMiBEMCAwMiA3NyA2MSAwQSAwNCAwMCA2NiA3MCA0RCAgLi5yLi4iLi53YS4uLmZw
TQogICAgNTlEMDogMzIgMzQgMzkgNjMgNjQgNjUgNjYgNjIgN0IgNjIgMEMgRkYgRkYgM0YgQ0Yg
NjIgIDI0OWNkZWZie2IuLi4/LmIKICAgIDU5RTA6IDdEIDYyIDBDIDAwIDAwIDgwIDAwIDYyIDdE
IDYyIDc5IDY5IDBBIDE2IDAwIDYyICB9Yi4uLi4uYn1ieWkuLi5iCiAgICA1OUYwOiA0RCAzMiAz
NSAzMCA2MyA2NCA2NSA2NiA2MiBBMSAyNSA0RCAzMCAzMSAzMiA3MiAgTTI1MGNkZWZiLiVNMDEy
cgogICAgNUEwMDogNEQgMzAgMzggMzQgMEIgMDAgMDEgMDAgNjEgMEEgMDYgMDEgNjkgNEQgMzAg
MzEgIE0wODQuLi4uYS4uLmlNMDEKICAgIDVBMTA6IDMyIDcyIDREIDMwIDM4IDM0IDBCIDAwIDAx
IDAwIDYxIDBBIDA1IDAxIDAwIEExICAyck0wODQuLi4uYS4uLi4uCiAgICA1QTIwOiA0MSAwQyBB
MCA0MyAwNyA5MSA5MyA2MCAwQSAwNCA5MyA2MCAwQSAwNSA3QSA2OCAgQS4uQy4uLmAuLi5gLi56
aAogICAgNUEzMDogMEEgMUYgNjMgN0IgNjMgMDEgNjMgN0EgNjggMEEgMUQgNjQgN0IgNjQgMEEg
MDMgIC4uY3tjLmN6aC4uZHtkLi4KICAgIDVBNDA6IDY0IDdBIDY4IDBBIDFCIDY1IDdCIDY1IDBB
IDAzIDY1IEEwIDExIDkzIDYwIDBBICBkemguLmV7ZS4uZS4uLmAuCiAgICA1QTUwOiAwNCA3MiAw
QyAwMCAyNSBEMCAwMiA3NyA2MSAwQSAwNCAwMCA2NiBBMSAwRCA3MiAgLnIuLiUuLndhLi4uZi4u
cgogICAgNUE2MDogMEMgMDAgMjIgRDAgMDIgNzcgNjEgMEEgMDQgMDAgNjYgNzAgNEQgMzQgMzIg
MzIgIC4uIi4ud2EuLi5mcE00MjIKICAgIDVBNzA6IDYzIDY0IDY1IDY2IDYyIDdCIDYyIDBDIEZG
IEZGIDNGIENGIDYyIDdEIDYyIDBDICBjZGVmYntiLi4uPy5ifWIuCiAgICA1QTgwOiAwMCAwMCA4
MCAwMCA2MiA3RCA2MiA3OSA2OSAwQSAxNiAwMCA2MiA0RCAzNCAzMiAgLi4uLmJ9YnlpLi4uYk00
MgogICAgNUE5MDogMzMgNjMgNjQgNjUgNjYgNjIgQTEgNEEgMDQgQTAgMUQgOTMgNjAgMEEgMDIg
QTAgIDNjZGVmYi5KLi4uLmAuLi4KICAgIDVBQTA6IDE3IDkzIDREIDMwIDM0IDM5IDREIDMxIDMy
IDM4IDBBIDc3IDAxIDREIDMwIDMzICAuLk0wNDlNMTI4LncuTTAzCiAgICA1QUIwOiAzOSA3MiA2
MSAwQSAwOCAwMCA2OSBBMSAyOSBBMCAwQiA5MyA2MCAwQSAwMyA0RCAgOXJhLi4uaS4pLi4uYC4u
TQogICAgNUFDMDogMzQgMzQgMzEgNjEgNjkgQTEgMUIgQTAgMEIgOTMgNjAgMEEgMDYgNEQgMzQg
MzEgIDQ0MWFpLi4uLi5gLi5NNDEKICAgIDVBRDA6IDMzIDY4IDY5IEExIDBEIEEwIDBCIDkzIDYw
IDBBIDA3IDREIDM0IDQ1IDM0IDY4ICAzaGkuLi4uLmAuLk00RTRoCiAgICA1QUUwOiA2OSAwOCA0
RCAzMCAzMyAzNyAxMSAxQSAwQSAxNyA3RSA4MSAwMyAxNiAwNCAxNSAgaS5NMDM3Li4uLn4uLi4u
LgogICAgNUFGMDogMEUgMDUgMDIgMjAgMDYgMDcgMTAgMTEgMTIgMTggMTcgMTkgMEIgMDEgMEYg
MEQgIC4uLiAuLi4uLi4uLi4uLi4KICAgIDVCMDA6IDA5IDA4IDREIDMyIDMyIDM3IDExIDFCIDBB
IDE4IDQxIDQyIDAzIDE2IDA0IDE1ICAuLk0yMjcuLi4uQUIuLi4uCiAgICA1QjEwOiAwRSAwNSAw
MiA0NCAwNiAwNyAxMCAxMSAxMiAxOCAxNyA0NSAwQiAwMSAwRiAwRCAgLi4uRC4uLi4uLi5FLi4u
LgogICAgNUIyMDogMDkgMDggMDggNEQgMzMgMzIgMzkgMTEgMUIgMEEgMTggNTkgNUEgMDMgMTYg
MDQgIC4uLk0zMjkuLi4uWVouLi4KICAgIDVCMzA6IDE1IDVCIDA1IDAyIDU2IDA2IDRDIDEwIDEx
IDEyIDE4IDE3IDgxIDU0IDAxIDI4ICAuWy4uVi5MLi4uLi4uVC4oCiAgICA1QjQwOiAwMCAwOSAw
OCAwOCA0RCAzMyAzMiA0MSAxMSAxQiAwQSAxOCA1OSA1QSAwMyAxNiAgLi4uLk0zMkEuLi4uWVou
LgogICAgNUI1MDogMDQgMTUgNUIgMDUgMDIgNTYgMDYgNEMgMTAgMTEgMUQgMUUgMTcgODEgNTQg
MDEgIC4uWy4uVi5MLi4uLi4uVC4KICAgIDVCNjA6IDI4IDAwIDA5IDA4IDA4IDREIDMzIDMzIDMw
IDExIDFCIDBBIDE4IDU5IDVBIDAzICAoLi4uLk0zMzAuLi4uWVouCiAgICA1QjcwOiAxNiAwNCAx
NSA1QiAwNSAwMiA1NiAwNiAwNyAxMCAxMSAxMiAxOCAxNyA4MSA1NCAgLi4uWy4uVi4uLi4uLi4u
VAogICAgNUI4MDogMDEgMjggMDAgMDkgMDggMDggNEQgMzMgMzIgNDIgMTEgMUIgMEEgMTggNTkg
NUEgIC4oLi4uLk0zMkIuLi4uWVoKICAgIDVCOTA6IDAzIDE2IDA0IDBCIDVCIDA1IDAyIDFEIDA2
IDA3IDEwIDExIDEyIDE4IDE3IDIwICAuLi4uWy4uLi4uLi4uLi4gCiAgICA1QkEwOiA1NCAwMSAy
OCAwMCAwOSAwOCAwOCA0RCAzMyAzMiA0MyAxMSAxQiAwQSAxOCA1OSAgVC4oLi4uLk0zMkMuLi4u
WQogICAgNUJCMDogNzMgMDMgMTYgMDQgMTUgNzQgMDUgMDIgNTYgMDYgNEMgMTAgMTEgMTggMUEg
MTcgIHMuLi4udC4uVi5MLi4uLi4KICAgIDVCQzA6IDgxIDFDIDAxIDY4IDAwIDY5IDZBIDE0IDRC
IDI0IDREIDMwIDMyIDM5IDA5IEEwICAuLi5oLmlqLkskTTAyOS4uCiAgICA1QkQwOiAyNCA5MyA0
RCAzMCAzOCAzNSAwQSAwMiBBNCA0RCAzMCAzMSAzMSA3MiA0RCAzMCAgJC5NMDg1Li4uTTAxMXJN
MAogICAgNUJFMDogMzggMzQgMEIgMDIgMTUgMDAgNzcgODMgODggNEQgMzAgMzMgMzcgNjggMDAg
MEEgIDg0Li4uLncuLk0wMzdoLi4KICAgIDVCRjA6IDA0IDAwIDAwIDAxIEExIDRDIDIxIEEwIDFB
IDk1IDREIDMwIDM4IDM1IDBBIDAyICAuLi4uLkwhLi4uTTA4NS4uCiAgICA1QzAwOiBBNCA0RCAz
MCAzMSAzMSA3MiA0RCAzMCAzOCAzNCAwQiA2MCAwMSAwMCA2OCAwQSAgLk0wMTFyTTA4NC5gLi5o
LgogICAgNUMxMDogMDcgMDEgQTEgNEUgMUYgQTAgMkMgOTAgOTQgNEQgMzAgMzggMzUgMEEgMDIg
OTUgIC4uLk4uLiwuLk0wODUuLi4KICAgIDVDMjA6IDREIDMwIDM4IDM1IDBBIDA4IEE0IDREIDMw
IDMxIDMxIDcyIDREIDMwIDM4IDM0ICBNMDg1Li4uTTAxMXJNMDg0CiAgICA1QzMwOiAwQiAwMiAx
NSAwMCA3NyA4MyA4OCA0RCAzMiAzMiAzNyA2OCAwMCAwQSAwNCAwMCAgLi4uLncuLk0yMjdoLi4u
LgogICAgNUM0MDogMDAgMDEgQTEgNEUgMUMgQTAgMjQgOTMgNEQgMzAgMzggMzUgMEEgMDggQTQg
NEQgIC4uLk4uLiQuTTA4NS4uLk0KICAgIDVDNTA6IDMwIDMxIDMxIDcyIDREIDMwIDM4IDM0IDBC
IDAyIDE1IDAwIDc3IDgzIDg4IDREICAwMTFyTTA4NC4uLi53Li5NCiAgICA1QzYwOiAzMyAzMiAz
OSA2OCAwMCAwQSAwNCAwMCAwMCAwMSBBMSA0NiAxQSBBMCAyQyA5MSAgMzI5aC4uLi4uLi5GLi4s
LgogICAgNUM3MDogOTMgNEQgMzAgMzggMzUgMEEgMDkgOTMgNEQgMzAgMzggMzUgMEEgMEEgQTQg
NEQgIC5NMDg1Li4uTTA4NS4uLk0KICAgIDVDODA6IDMwIDMxIDMxIDcyIDREIDMwIDM4IDM0IDBC
IDAyIDE1IDAwIDc3IDgzIDg4IDREICAwMTFyTTA4NC4uLi53Li5NCiAgICA1QzkwOiAzMyAzMyAz
MCA2OCAwMCAwQSAwNCAwMCAwMCAwMSBBMSA0NiAxNyBBMCAyQyA5MSAgMzMwaC4uLi4uLi5GLi4s
LgogICAgNUNBMDogOTMgNEQgMzAgMzggMzUgMEEgMEIgOTMgNEQgMzAgMzggMzUgMEEgMEMgQTQg
NEQgIC5NMDg1Li4uTTA4NS4uLk0KICAgIDVDQjA6IDMwIDMxIDMxIDcyIDREIDMwIDM4IDM0IDBC
IDAyIDE1IDAwIDc3IDgzIDg4IDREICAwMTFyTTA4NC4uLi53Li5NCiAgICA1Q0MwOiAzMyAzMiA0
MSA2OCAwMCAwQSAwNCAwMCAwMCAwMSBBMSA0NiAxNCBBMCAyQyA5MSAgMzJBaC4uLi4uLi5GLi4s
LgogICAgNUNEMDogOTMgNEQgMzAgMzggMzUgMEEgMEQgOTMgNEQgMzAgMzggMzUgMEEgMEUgQTQg
NEQgIC5NMDg1Li4uTTA4NS4uLk0KICAgIDVDRTA6IDMwIDMxIDMxIDcyIDREIDMwIDM4IDM0IDBC
IDAyIDE1IDAwIDc3IDgzIDg4IDREICAwMTFyTTA4NC4uLi53Li5NCiAgICA1Q0YwOiAzMyAzMyAz
MCA2OCAwMCAwQSAwNCAwMCAwMCAwMSBBMSA0NiAxMSBBMCAyNCA5MyAgMzMwaC4uLi4uLi5GLi4k
LgogICAgNUQwMDogNEQgMzAgMzggMzUgMEEgMEYgQTQgNEQgMzAgMzEgMzEgNzIgNEQgMzAgMzgg
MzQgIE0wODUuLi5NMDExck0wODQKICAgIDVEMTA6IDBCIDAyIDE1IDAwIDc3IDgzIDg4IDREIDMz
IDMyIDQyIDY4IDAwIDBBIDA0IDAwICAuLi4udy4uTTMyQmguLi4uCiAgICA1RDIwOiAwMCAwMSBB
MSA0RSAwRSBBMCAyNCA5MyA0RCAzMCAzOCAzNSAwQSAxMCBBNCA0RCAgLi4uTi4uJC5NMDg1Li4u
TQogICAgNUQzMDogMzAgMzEgMzEgNzIgNEQgMzAgMzggMzQgMEIgMDIgMTUgMDAgNzcgODMgODgg
NEQgIDAxMXJNMDg0Li4uLncuLk0KICAgIDVENDA6IDMzIDMyIDQyIDY4IDAwIDBBIDA0IDAwIDAw
IDAxIEExIDQ2IDBDIEEwIDI0IDkzICAzMkJoLi4uLi4uLkYuLiQuCiAgICA1RDUwOiA0RCAzMCAz
OCAzNSAwQSAxMiBBNCA0RCAzMCAzMSAzMSA3MiA0RCAzMCAzOCAzNCAgTTA4NS4uLk0wMTFyTTA4
NAogICAgNUQ2MDogMEIgMDIgMTUgMDAgNzcgODMgODggNEQgMzMgMzIgNDIgNjggMDAgMEEgMDQg
MDAgIC4uLi53Li5NMzJCaC4uLi4KICAgIDVENzA6IDAwIDAxIEExIDRFIDA5IEEwIDI0IDkzIDRE
IDMwIDM4IDM1IDBBIDEzIEE0IDREICAuLi5OLi4kLk0wODUuLi5NCiAgICA1RDgwOiAzMCAzMSAz
MSA3MiA0RCAzMCAzOCAzNCAwQiAwMiAxNSAwMCA3NyA4MyA4OCA0RCAgMDExck0wODQuLi4udy4u
TQogICAgNUQ5MDogMzMgMzIgNDIgNjggMDAgMEEgMDQgMDAgMDAgMDEgQTEgNDYgMDcgQTAgMjQg
OTMgIDMyQmguLi4uLi4uRi4uJC4KICAgIDVEQTA6IDREIDMwIDM4IDM1IDBBIDE0IEE0IDREIDMw
IDMxIDMxIDcyIDREIDMwIDM4IDM0ICBNMDg1Li4uTTAxMXJNMDg0CiAgICA1REIwOiAwQiAwMiAx
NSAwMCA3NyA4MyA4OCA0RCAzMyAzMiA0MiA2OCAwMCAwQSAwNCAwMCAgLi4uLncuLk0zMkJoLi4u
LgogICAgNURDMDogMDAgMDEgQTEgNEUgMDQgQTAgMjQgOTMgNEQgMzAgMzggMzUgMEEgMTUgQTQg
NEQgIC4uLk4uLiQuTTA4NS4uLk0KICAgIDVERDA6IDMwIDMxIDMxIDcyIDREIDMwIDM4IDM0IDBC
IDAyIDE1IDAwIDc3IDgzIDg4IDREICAwMTFyTTA4NC4uLi53Li5NCiAgICA1REUwOiAzMyAzMiA0
MiA2OCAwMCAwQSAwNCAwMCAwMCAwMSBBMSAyNiBBMCAyNCA5MyA0RCAgMzJCaC4uLi4uLi4mLiQu
TQogICAgNURGMDogMzAgMzggMzUgMEEgMTEgQTQgNEQgMzAgMzEgMzEgNzIgNEQgMzAgMzggMzQg
MEIgIDA4NS4uLk0wMTFyTTA4NC4KICAgIDVFMDA6IDAyIDE1IDAwIDc3IDgzIDg4IDREIDMzIDMy
IDQzIDY4IDAwIDBBIDA0IDAwIDAwICAuLi53Li5NMzJDaC4uLi4uCiAgICA1RTEwOiAwMSBBNCAw
MCAxNCAzMyA0RCAzMCAzMyAzMSAwOSA3MCA0RCAzMCAzMSAzMSA3MiAgLi4uLjNNMDMxLnBNMDEx
cgogICAgNUUyMDogNEQgMzAgMzggMzQgMEIgNDAgMDIgMDAgNjggMDAgMEEgMDUgNjAgQTQgNEQg
MzAgIE0wODQuQC4uaC4uLmAuTTAKICAgIDVFMzA6IDMxIDMxIDcyIDREIDMwIDM4IDM0IDBCIDA4
IDAyIDAwIDc4IDYwIDBBIDA4IDAwICAxMXJNMDg0Li4uLnhgLi4uCiAgICA1RTQwOiAwMCA3QiA2
MCAwQSAwNyAwMCAwMSAxNCAzMyA0RCAzMCAzMyAzMiAwQSA3MCA0RCAgLntgLi4uLi4zTTAzMi5w
TQogICAgNUU1MDogMzAgMzEgMzEgNzIgNEQgMzAgMzggMzQgMEIgNDAgMDIgMDAgNjggMDAgMEEg
MDUgIDAxMXJNMDg0LkAuLmguLi4KICAgIDVFNjA6IDYwIDREIDMwIDMxIDMyIDcyIDREIDMwIDM4
IDM0IDBCIDA4IDAyIDAwIDc4IDYwICBgTTAxMnJNMDg0Li4uLnhgCiAgICA1RTcwOiAwQSAwOCAw
MCAwMCA3QiA2MCAwQSAwNyAwMCAwMSA2OSAxNCA0RiAwNiA0RCAzNCAgLi4uLntgLi4uLmkuTy5N
NAogICAgNUU4MDogMzcgMzcgMEEgQTAgMDYgOTMgNjkgMDAgQTQgMDAgNUIgODAgNTYgNDEgNTIg
NEQgIDc3Li4uLmkuLi5bLlZBUk0KICAgIDVFOTA6IDAxIDY4IDBBIDA5IDVCIDgxIDBFIDU2IDQx
IDUyIDREIDAxIDAwIDQwIDA0IDUzICAuaC4uWy4uVkFSTS4uQC5TCiAgICA1RUEwOiA0RCA0MiAz
OCAwOCA3MCA2OSA2MCBBMiA0MSAwNCA5NCA2MCAwMCA3RCA1MyA0RCAgTUI4LnBpYC5BLi5gLn1T
TQogICAgNUVCMDogNDIgMzggMEEgNDAgNTMgNEQgNDIgMzggQTAgMUEgOTUgNjAgMEMgRkYgRkYg
RkYgIEI4LkBTTUI4Li4uYC4uLi4KICAgIDVFQzA6IDAwIEEwIDBDIDk0IDYwIDBBIDA1IDcwIDc0
IDYwIDBBIDA1IDAwIDYwIEExIDA0ICAuLi4uYC4ucHRgLi4uYC4uCiAgICA1RUQwOiA3MCAwMCA2
MCA1QiAyMSAwQSAwNSA3MCA1MyA0RCA0MiAzOCA2MSBBMCAwQiA5MyAgcC5gWyEuLnBTTUI4YS4u
LgogICAgNUVFMDogN0IgNjEgMEEgNTAgMDAgMEEgNDAgQTQgMDAgQTQgMDEgMTQgMkIgNEQgMzQg
MzcgIHthLlAuLkAuLi4uLitNNDcKICAgIDVFRjA6IDM4IDA5IDVCIDgwIDU2IDQxIDUyIDREIDAx
IDY4IDBBIDA5IDVCIDgxIDBFIDU2ICA4LlsuVkFSTS5oLi5bLi5WCiAgICA1RjAwOiA0MSA1MiA0
RCAwMSAwMCA0MCAwNCA1MyA0RCA0MiAzOCAwOCA3RCA1MyA0RCA0MiAgQVJNLi5ALlNNQjgufVNN
QgogICAgNUYxMDogMzggMEEgODAgNTMgNEQgNDIgMzggMTQgNEYgMEYgNEQgMzQgMzcgMzkgMEEg
NUIgIDguLlNNQjguTy5NNDc5LlsKICAgIDVGMjA6IDgwIDU2IDQxIDUyIDREIDAxIDY4IDBBIDAz
IDVCIDgxIDE1IDU2IDQxIDUyIDREICAuVkFSTS5oLi5bLi5WQVJNCiAgICA1RjMwOiAwMSA1MyA0
RCA0MiAzMCAwOCA1MyA0RCA0MiAzMSAwOCA1MyA0RCA0MiAzMiAwOCAgLlNNQjAuU01CMS5TTUIy
LgogICAgNUY0MDogNzAgNjkgNjAgQTIgNEEgMDUgOTQgNjAgMDAgNzAgMEEgNjQgNjEgNzAgMDEg
NjIgIHBpYC5KLi5gLnAuZGFwLmIKICAgIDVGNTA6IEEyIDNBIDkwIDk0IDYxIDAwIDkyIDkzIDdC
IDYyIDAxIDAwIDAwIDcwIDBBIDFGICAuOi4uYS4uLntiLi4ucC4uCiAgICA1RjYwOiA1MyA0RCA0
MiAzMCBBMCAxQSA5NSA2MCAwQyBGRiBGRiBGRiAwMCBBMCAwQyA5NCAgU01CMC4uLmAuLi4uLi4u
LgogICAgNUY3MDogNjAgMEEgMDUgNzAgNzQgNjAgMEEgMDUgMDAgNjAgQTEgMDQgNzAgMDAgNjAg
NzYgIGAuLnB0YC4uLmAuLnAuYHYKICAgIDVGODA6IDYxIDVCIDIxIDBBIDA1IDcwIDUzIDREIDQy
IDMwIDYyIEEwIDBGIDkyIDkzIDdCICBhWyEuLnBTTUIwYi4uLi57CiAgICA1RjkwOiA2MiAwMSAw
MCAwMCA3MCAwQSAwMiA1MyA0RCA0MiAzMiBBMSAwMiBBNSBBMCAwRCAgYi4uLnAuLlNNQjIuLi4u
LgogICAgNUZBMDogOTIgOTMgN0IgNTMgNEQgNDIgMzAgMDEgMDAgMDAgQTQgMDEgQTIgNEEgMDUg
OTQgIC4ue1NNQjAuLi4uLi5KLi4KICAgIDVGQjA6IDYwIDAwIDcwIDBBIDY0IDYxIDcwIDAxIDYy
IEEyIDNBIDkwIDk0IDYxIDAwIDkyICBgLnAuZGFwLmIuOi4uYS4uCiAgICA1RkMwOiA5MyA3QiA2
MiAwMSAwMCAwMCA3MCAwQSAzRiA1MyA0RCA0MiAzMSBBMCAxQSA5NSAgLntiLi4ucC4/U01CMS4u
LgogICAgNUZEMDogNjAgMEMgRkYgRkYgRkYgMDAgQTAgMEMgOTQgNjAgMEEgMDUgNzAgNzQgNjAg
MEEgIGAuLi4uLi4uLmAuLnB0YC4KICAgIDVGRTA6IDA1IDAwIDYwIEExIDA0IDcwIDAwIDYwIDc2
IDYxIDVCIDIxIDBBIDA1IDcwIDUzICAuLmAuLnAuYHZhWyEuLnBTCiAgICA1RkYwOiA0RCA0MiAz
MSA2MiBBMCAwRiA5MiA5MyA3QiA2MiAwMSAwMCAwMCA3MCAwQSAwMiAgTUIxYi4uLi57Yi4uLnAu
LgogICAgNjAwMDogNTMgNEQgNDIgMzEgQTEgMDIgQTUgQTAgMEQgOTIgOTMgN0IgNTMgNEQgNDIg
MzEgIFNNQjEuLi4uLi4ue1NNQjEKICAgIDYwMTA6IDAxIDAwIDAwIEE0IDAxIEE0IDAwIDVCIDAx
IDREIDM0IDMwIDM4IDAwIDE0IDQwICAuLi4uLi4uWy5NNDA4Li5ACiAgICA2MDIwOiA2QiA0RCAz
NCAzNyA0MSAwRSA3MCAxMSAwMyAwQSAyMiA2MCA4QyA2MCAwMCA1MyAga000N0EucC4uLiJgLmAu
UwogICAgNjAzMDogNTQgNDEgNTQgOEMgNjAgMDEgNEMgNDUgNEUgNUYgOEMgNjAgMEEgMDIgNDQg
NDEgIFRBVC5gLkxFTl8uYC4uREEKICAgIDYwNDA6IDU0IDQyIDhCIDYwIDBBIDAyIDQ0IDQxIDU0
IDU3IDVCIDEzIDYwIDBBIDEwIDBCICBUQi5gLi5EQVRXWy5gLi4uCiAgICA2MDUwOiAwMCAwMSA0
NCA1NCA0MiA0NiA3MCAwQSBGRiA1MyA1NCA0MSA1NCA3MCAwMCA0QyAgLi5EVEJGcC4uU1RBVHAu
TAogICAgNjA2MDogNDUgNEUgNUYgNzAgMDAgNDQgNTQgNDIgNDYgNEQgMzAgMzAgMzAgMEIgRTUg
MEQgIEVOX3AuRFRCRk0wMDAuLi4KICAgIDYwNzA6IDREIDM0IDM2IDMwIDBEIDIwIDIwIDRCIDQ1
IDUyIDJEIDQxIDUzIDRDIDJEIDQzICBNNDYwLiAgS0VSLUFTTC1DCiAgICA2MDgwOiA3MCA2RCA1
MyA2RCA2MiA3NSA3MyA0NSA3OCA2NSA2MyA3NSA3NCA2RiA3MiAyMCAgcG1TbWJ1c0V4ZWN1dG9y
IAogICAgNjA5MDogMjggNTAgNkYgNzIgNzQgMjUgNjQgMkMgMjAgNjkgNzMgNTIgNjUgNjEgNjQg
MjAgIChQb3J0JWQsIGlzUmVhZCAKICAgIDYwQTA6IDI1IDY0IDJDIDIwIDUwIDZGIDc0IDYzIDZD
IDIwIDI1IDY0IDJDIDIwIDQ0IDY1ICAlZCwgUG90Y2wgJWQsIERlCiAgICA2MEIwOiA3NiA0MSA2
NCA2NCA3MiAyMCAzMCA3OCAyNSA1OCAyQyAyMCA0MyA2RCA2NCAyMCAgdkFkZHIgMHglWCwgQ21k
IAogICAgNjBDMDogMzAgNzggMjUgNTggMjkgMEEgMDAgNjggNjkgNkEgNkIgNkMgMDAgNzAgNEQg
MzAgIDB4JVgpLi5oaWprbC5wTTAKICAgIDYwRDA6IDM0IDM5IDREIDMxIDMyIDM4IDBBIDk0IDYx
IEEwIDQ2IDA0IDkxIDkwIDkyIDkzICA0OU0xMjguLmEuRi4uLi4uCiAgICA2MEUwOiA2OCAwMCA5
MiA5MyA2OCAwMSA5MyA2MSAwMSA3MCAwQSA4MCA1MyA1NCA0MSA1NCAgaC4uLmguLmEucC4uU1RB
VAogICAgNjBGMDogNEQgMzQgMzUgMzkgMEQgMjAgMjAgNEIgNDUgNTIgMkQgNDEgNTMgNEMgMkQg
NDMgIE00NTkuICBLRVItQVNMLUMKICAgIDYxMDA6IDcwIDZEIDUzIDZEIDYyIDc1IDczIDQ1IDc4
IDY1IDYzIDc1IDc0IDZGIDcyIDIwICBwbVNtYnVzRXhlY3V0b3IgCiAgICA2MTEwOiA3MiA2NSA3
NCA3NSA3MiA2RSAyMCAzMCA3OCAzOCAzMCAwQSAwMCAwMCBBNCA2MCAgcmV0dXJuIDB4ODAuLi4u
YAogICAgNjEyMDogQTAgNDIgMDQgOTAgOTIgOTMgNjkgMDAgOTIgOTMgNjkgMDEgNzAgMEEgODEg
NTMgIC5CLi4uLmkuLi5pLnAuLlMKICAgIDYxMzA6IDU0IDQxIDU0IDREIDM0IDM1IDM5IDBEIDIw
IDIwIDRCIDQ1IDUyIDJEIDQxIDUzICBUQVRNNDU5LiAgS0VSLUFTCiAgICA2MTQwOiA0QyAyRCA0
MyA3MCA2RCA1MyA2RCA2MiA3NSA3MyA0NSA3OCA2NSA2MyA3NSA3NCAgTC1DcG1TbWJ1c0V4ZWN1
dAogICAgNjE1MDogNkYgNzIgMjAgNzIgNjUgNzQgNzUgNzIgNkUgMjAgMzAgNzggMzggMzEgMEEg
MDAgIG9yIHJldHVybiAweDgxLi4KICAgIDYxNjA6IDAwIEE0IDYwIDA4IDU2IDQxIDRDIDUwIDEy
IDBBIDA1IDAwIDAxIDBBIDAyIDBBICAuLmAuVkFMUC4uLi4uLi4uCiAgICA2MTcwOiAwMyAwQSAw
NSBBMCA0NSAwNCA5MyA4OSA1NiA0MSA0QyA1MCAwMSA2QSAwMCAwMCAgLi4uLkUuLi5WQUxQLmou
LgogICAgNjE4MDogMDAgRkYgNzAgMEEgODIgNTMgNTQgNDEgNTQgNEQgMzQgMzUgMzkgMEQgMjAg
MjAgIC4ucC4uU1RBVE00NTkuICAKICAgIDYxOTA6IDRCIDQ1IDUyIDJEIDQxIDUzIDRDIDJEIDQz
IDcwIDZEIDUzIDZEIDYyIDc1IDczICBLRVItQVNMLUNwbVNtYnVzCiAgICA2MUEwOiA0NSA3OCA2
NSA2MyA3NSA3NCA2RiA3MiAyMCA3MiA2NSA3NCA3NSA3MiA2RSAyMCAgRXhlY3V0b3IgcmV0dXJu
IAogICAgNjFCMDogMzAgNzggMzggMzIgMEEgMDAgMDAgQTQgNjAgQTAgNDYgMDYgOTAgOTMgNjkg
MDAgIDB4ODIuLi4uYC5GLi4uaS4KICAgIDYxQzA6IDkzIDZBIDBBIDA1IDcwIDZEIDY3IDcwIDgz
IDg4IDY3IDAwIDAwIDYyIEEwIDQxICAuai4ucG1ncC4uZy4uYi5BCiAgICA2MUQwOiAwNSA5MSA5
NSA2MiAwMSA5NCA2MiAwQSAyMCA3MCAwQSA4MyA1MyA1NCA0MSA1NCAgLi4uYi4uYi4gcC4uU1RB
VAogICAgNjFFMDogNEQgMzQgMzYgMzAgMEQgMjAgMjAgNEIgNDUgNTIgMkQgNDEgNTMgNEMgMkQg
NDMgIE00NjAuICBLRVItQVNMLUMKICAgIDYxRjA6IDcwIDZEIDUzIDZEIDYyIDc1IDczIDQ1IDc4
IDY1IDYzIDc1IDc0IDZGIDcyIDIwICBwbVNtYnVzRXhlY3V0b3IgCiAgICA2MjAwOiA3MiA2NSA3
NCA3NSA3MiA2RSAyMCAzMCA3OCAzOCAzMyAyQyAyMCA0QyA2NSA2RSAgcmV0dXJuIDB4ODMsIExl
bgogICAgNjIxMDogNjcgNzQgNjggMjAgMjUgNjQgMEEgMDAgNjIgMDAgMDAgMDAgMDAgMDAgQTQg
NjAgIGd0aCAlZC4uYi4uLi4uLmAKICAgIDYyMjA6IDVCIDIzIDREIDM0IDMwIDM4IEZGIEZGIDcy
IDREIDM0IDMxIDM0IDc5IDY4IDBBICBbI000MDguLnJNNDE0eWguCiAgICA2MjMwOiAwNSAwMCA2
NCBBMCA0MiAwNSA5MyA2NCAwMCA1QiAyNyA0RCAzNCAzMCAzOCA3MCAgLi5kLkIuLmQuWydNNDA4
cAogICAgNjI0MDogMEEgODQgNTMgNTQgNDEgNTQgNEQgMzQgMzYgMzAgMEQgMjAgMjAgNEIgNDUg
NTIgIC4uU1RBVE00NjAuICBLRVIKICAgIDYyNTA6IDJEIDQxIDUzIDRDIDJEIDQzIDcwIDZEIDUz
IDZEIDYyIDc1IDczIDQ1IDc4IDY1ICAtQVNMLUNwbVNtYnVzRXhlCiAgICA2MjYwOiA2MyA3NSA3
NCA2RiA3MiAyMCA3MiA2NSA3NCA3NSA3MiA2RSAyMCAzMCA3OCAzOCAgY3V0b3IgcmV0dXJuIDB4
OAogICAgNjI3MDogMzQgMkMgMjAgNEMgNkYgNjMgNjEgNkMgMzQgMjAgMjUgNjQgMEEgMDAgNjQg
MDAgIDQsIExvY2FsNCAlZC4uZC4KICAgIDYyODA6IDAwIDAwIDAwIDAwIEE0IDYwIDVCIDgwIDU2
IDQxIDUyIDREIDAxIDY0IDBBIDA5ICAuLi4uLmBbLlZBUk0uZC4uCiAgICA2MjkwOiA1QiA4MSAz
MyA1NiA0MSA1MiA0RCAwMSA1MyA0RCA0MiAzMCAwOCA1MyA0RCA0MiAgWy4zVkFSTS5TTUIwLlNN
QgogICAgNjJBMDogMzEgMDggNTMgNEQgNDIgMzIgMDggNTMgNEQgNDIgMzMgMDggNTMgNEQgNDIg
MzQgIDEuU01CMi5TTUIzLlNNQjQKICAgIDYyQjA6IDA4IDUzIDREIDQyIDM1IDA4IDUzIDREIDQy
IDM2IDA4IDUzIDREIDQyIDM3IDA4ICAuU01CNS5TTUI2LlNNQjcuCiAgICA2MkMwOiA1MyA0RCA0
MiAzOCAwOCA3MCA0RCAzMCAzNCAzOSA3MiA0RCAzMCAzOCAzNCAwQiAgU01COC5wTTA0OXJNMDg0
LgogICAgNjJEMDogMDAgMDMgMDAgMEEgMDIgNjUgQTAgMUQgOTMgN0IgNjUgMDEgMDAgMDAgNEQg
MzAgIC4uLi4uZS4uLntlLi4uTTAKICAgIDYyRTA6IDMxIDMyIDcyIDREIDMwIDM4IDM0IDBCIDAw
IDAzIDAwIDBBIDAyIDAwIDBBIDA4ICAxMnJNMDg0Li4uLi4uLi4uCiAgICA2MkYwOiA3RCA2NSAw
MSAwMCBBMCAxNCA5MyA2OCAwMSA3MCA1MyA0RCA0MiAzMiA2NiA3MCAgfWUuLi4uLmgucFNNQjJm
cAogICAgNjMwMDogN0IgNjYgMEEgN0YgMDAgNTMgNEQgNDIgMzIgQTAgNEQgMDYgNEQgMzQgMzcg
MzcgIHtmLi4uU01CMi5NLk00NzcKICAgIDYzMTA6IDY0IDBCIDIwIDRFIEEwIDBBIDkzIDY4IDAx
IDcwIDY2IDUzIDREIDQyIDMyIEEwICBkLiBOLi4uaC5wZlNNQjIuCiAgICA2MzIwOiAxQSA5MyA3
QiA2NSAwMSAwMCAwMCA0RCAzMCAzMSAzMiA3MiA0RCAzMCAzOCAzNCAgLi57ZS4uLk0wMTJyTTA4
NAogICAgNjMzMDogMEIgMDAgMDMgMDAgMEEgMDIgMDAgMEEgMDggNjUgNUIgMjcgNEQgMzQgMzAg
MzggIC4uLi4uLi4uLmVbJ000MDgKICAgIDYzNDA6IDcwIDBBIDg1IDUzIDU0IDQxIDU0IDREIDM0
IDM1IDM5IDBEIDIwIDIwIDRCIDQ1ICBwLi5TVEFUTTQ1OS4gIEtFCiAgICA2MzUwOiA1MiAyRCA0
MSA1MyA0QyAyRCA0MyA3MCA2RCA1MyA2RCA2MiA3NSA3MyA0NSA3OCAgUi1BU0wtQ3BtU21idXNF
eAogICAgNjM2MDogNjUgNjMgNzUgNzQgNkYgNzIgMjAgNzIgNjUgNzQgNzUgNzIgNkUgMjAgMzAg
NzggIGVjdXRvciByZXR1cm4gMHgKICAgIDYzNzA6IDM4IDM1IDBBIDAwIDAwIEE0IDYwIEEwIDQy
IDA3IDREIDM0IDM3IDM5IDY0IDBCICA4NS4uLi5gLkIuTTQ3OWQuCiAgICA2MzgwOiAyMCA0RSBB
MCAwQSA5MyA2OCAwMSA3MCA2NiA1MyA0RCA0MiAzMiBBMCAxQSA5MyAgIE4uLi5oLnBmU01CMi4u
LgogICAgNjM5MDogN0IgNjUgMDEgMDAgMDAgNEQgMzAgMzEgMzIgNzIgNEQgMzAgMzggMzQgMEIg
MDAgIHtlLi4uTTAxMnJNMDg0Li4KICAgIDYzQTA6IDAzIDAwIDBBIDAyIDAwIDBBIDA4IDY1IDRE
IDM0IDM3IDM4IDY0IDVCIDI3IDREICAuLi4uLi4uZU00NzhkWydNCiAgICA2M0IwOiAzNCAzMCAz
OCA3MCAwQSA4NiA1MyA1NCA0MSA1NCA0RCAzNCAzNSAzOSAwRCAyMCAgNDA4cC4uU1RBVE00NTku
IAogICAgNjNDMDogMjAgNEIgNDUgNTIgMkQgNDEgNTMgNEMgMkQgNDMgNzAgNkQgNTMgNkQgNjIg
NzUgICBLRVItQVNMLUNwbVNtYnUKICAgIDYzRDA6IDczIDQ1IDc4IDY1IDYzIDc1IDc0IDZGIDcy
IDIwIDcyIDY1IDc0IDc1IDcyIDZFICBzRXhlY3V0b3IgcmV0dXJuCiAgICA2M0UwOiAyMCAzMCA3
OCAzOCAzNiAwQSAwMCAwMCBBNCA2MCA3MCA2RCA2NyA3MCAwQSAwMyAgIDB4ODYuLi4uYHBtZ3Au
LgogICAgNjNGMDogNjMgQTIgNDEgMjEgOTQgNjMgMDAgNzAgMEEgMUYgNTMgNEQgNDIgMzAgN0Qg
NzkgIGMuQSEuYy5wLi5TTUIwfXkKICAgIDY0MDA6IDZCIDAxIDAwIDY5IDUzIDREIDQyIDM0IDcw
IDZDIDUzIDREIDQyIDMzIDcwIDc5ICBrLi5pU01CNHBsU01CM3B5CiAgICA2NDEwOiA2QSAwQSAw
MiAwMCA1MyA0RCA0MiAzMiA3MCA1MyA0RCA0MiAzMiA2MSBBMCA0QyAgai4uLlNNQjJwU01CMmEu
TAogICAgNjQyMDogMDUgOTMgNjkgMDAgQTAgMTMgOTEgOTMgNkEgMDEgOTMgNkEgMEEgMDIgNzAg
ODMgIC4uaS4uLi4uai4uai4ucC4KICAgIDY0MzA6IDg4IDY3IDAxIDAwIDUzIDREIDQyIDM1IEEw
IDFBIDkzIDZBIDBBIDAzIDcwIDgzICAuZy4uU01CNS4uLmouLnAuCiAgICA2NDQwOiA4OCA2NyAw
QSAwMiAwMCA1MyA0RCA0MiAzNiA3MCA4MyA4OCA2NyAwMSAwMCA1MyAgLmcuLi5TTUI2cC4uZy4u
UwogICAgNjQ1MDogNEQgNDIgMzUgQTAgMjcgOTMgNkEgMEEgMDUgNzAgODMgODggNjcgMDAgMDAg
NjIgIE1CNS4nLmouLnAuLmcuLmIKICAgIDY0NjA6IDcwIDYyIDUzIDREIDQyIDM1IDcwIDAxIDYx
IEEyIDExIDkyIDk0IDYxIDYyIDcwICBwYlNNQjVwLmEuLi4uYWJwCiAgICA2NDcwOiA4MyA4OCA2
NyA2MSAwMCA1MyA0RCA0MiAzNyA3NSA2MSBBMSAxNCBBMCAxMiA5MyAgLi5nYS5TTUI3dWEuLi4u
LgogICAgNjQ4MDogNkEgMEEgMDUgNzAgODMgODggNjcgMDAgMDAgNjIgNzAgNjIgNTMgNEQgNDIg
MzUgIGouLnAuLmcuLmJwYlNNQjUKICAgIDY0OTA6IDdEIDc5IDZBIDBBIDAyIDAwIDBBIDQwIDUz
IDREIDQyIDMyIEEwIDBBIDkzIDZBICB9eWouLi4uQFNNQjIuLi5qCiAgICA2NEEwOiAwQSAwNSA3
MCAwQiA1OCAxQiA2MSBBMSAwNiA3MCAwQiBFOCAwMyA2MSA3MCAwMSAgLi5wLlguYS4ucC4uLmFw
LgogICAgNjRCMDogNjIgQTIgMjEgOTAgOTQgNjEgMDAgOTMgN0IgNjIgMEEgMEUgMDAgMDAgQTAg
MDggIGIuIS4uYS4ue2IuLi4uLi4KICAgIDY0QzA6IDkzIDdCIDYyIDAxIDAwIDAwIEE1IDc2IDYx
IDVCIDIxIDBBIDA1IDcwIDUzIDREICAue2IuLi4udmFbIS4ucFNNCiAgICA2NEQwOiA0MiAzMCA2
MiBBMCA0QyAwNyA5MCA5MyA2MSAwMCA5MiA5MyA3QiA2MiAwMSAwMCAgQjBiLkwuLi5hLi4ue2Iu
LgogICAgNjRFMDogMDAgNzAgMEEgMDIgNTMgNEQgNDIgMzIgQTAgMEEgOTMgNjggMDEgNzAgNjYg
NTMgIC5wLi5TTUIyLi4uaC5wZlMKICAgIDY0RjA6IDREIDQyIDMyIEEwIDFBIDkzIDdCIDY1IDAx
IDAwIDAwIDREIDMwIDMxIDMyIDcyICBNQjIuLi57ZS4uLk0wMTJyCiAgICA2NTAwOiA0RCAzMCAz
OCAzNCAwQiAwMCAwMyAwMCAwQSAwMiAwMCAwQSAwOCA2NSA0RCAzNCAgTTA4NC4uLi4uLi4uLmVN
NAogICAgNjUxMDogMzcgMzggNjQgNUIgMjcgNEQgMzQgMzAgMzggNzAgMEEgODcgNTMgNTQgNDEg
NTQgIDc4ZFsnTTQwOHAuLlNUQVQKICAgIDY1MjA6IDREIDM0IDM1IDM5IDBEIDIwIDIwIDRCIDQ1
IDUyIDJEIDQxIDUzIDRDIDJEIDQzICBNNDU5LiAgS0VSLUFTTC1DCiAgICA2NTMwOiA3MCA2RCA1
MyA2RCA2MiA3NSA3MyA0NSA3OCA2NSA2MyA3NSA3NCA2RiA3MiAyMCAgcG1TbWJ1c0V4ZWN1dG9y
IAogICAgNjU0MDogNzIgNjUgNzQgNzUgNzIgNkUgMjAgMzAgNzggMzggMzcgMEEgMDAgMDAgQTQg
NjAgIHJldHVybiAweDg3Li4uLmAKICAgIDY1NTA6IEEwIDBDIDkyIDkzIDdCIDYyIDBBIDA0IDAw
IDAwIDcwIDAwIDYzIEExIDQ1IDBBICAuLi4ue2IuLi4ucC5jLkUuCiAgICA2NTYwOiBBMCAxMiA5
MiA5MyA3QiA2MiAwQSAwOCAwMCAwMCA3MCAwQSAwOCA1MyA0RCA0MiAgLi4uLntiLi4uLnAuLlNN
QgogICAgNjU3MDogMzAgNzYgNjMgQTEgNEYgMDggNzAgMDAgNjMgNzAgMDAgNTMgNTQgNDEgNTQg
QTAgIDB2Yy5PLnAuY3AuU1RBVC4KICAgIDY1ODA6IDQzIDA4IDkyIDkzIDY5IDAwIEEwIDE4IDkx
IDkzIDZBIDAxIDkzIDZBIDBBIDAyICBDLi4uaS4uLi4uai4uai4uCiAgICA2NTkwOiA3MCA1MyA0
RCA0MiAzNSA0NCA0MSA1NCA0MiA3MCAwMSA0QyA0NSA0RSA1RiBBMCAgcFNNQjVEQVRCcC5MRU5f
LgogICAgNjVBMDogMjAgOTMgNkEgMEEgMDMgNzAgNTMgNEQgNDIgMzYgODggNjAgMEEgMDMgMDAg
NzAgICAuai4ucFNNQjYuYC4uLnAKICAgIDY1QjA6IDUzIDREIDQyIDM1IDg4IDYwIDBBIDAyIDAw
IDcwIDBBIDAyIDRDIDQ1IDRFIDVGICBTTUI1LmAuLi5wLi5MRU5fCiAgICA2NUMwOiBBMCA0MiAw
NCA5MyA2QSAwQSAwNSA3MCA1MyA0RCA0MiAzMiA2MiA3MCA1MyA0RCAgLkIuLmouLnBTTUIyYnBT
TQogICAgNjVEMDogNDIgMzUgNjIgQTAgMDkgOTQgNjIgMEEgMjAgNzAgMEEgMjAgNjIgNzAgNjIg
NEMgIEI1Yi4uLmIuIHAuIGJwYkwKICAgIDY1RTA6IDQ1IDRFIDVGIDcwIDBBIDAyIDYxIDcyIDYy
IDBBIDAyIDYyIEEyIDE2IDk1IDYxICBFTl9wLi5hcmIuLmIuLi5hCiAgICA2NUYwOiA2MiA3MCAw
QSBDQyA4OCA2MCA2MSAwMCA3MCA1MyA0RCA0MiAzNyA4OCA2MCA2MSAgYnAuLi5gYS5wU01CNy5g
YQogICAgNjYwMDogMDAgNzUgNjEgNzAgN0IgNTMgNEQgNDIgMzAgMEEgMUQgMDAgNjEgNzAgNjEg
NTMgIC51YXB7U01CMC4uLmFwYVMKICAgIDY2MTA6IDU0IDQxIDU0IDcwIDBBIDFGIDUzIDREIDQy
IDMwIEEwIDBBIDkzIDY4IDAxIDcwICBUQVRwLi5TTUIwLi4uaC5wCiAgICA2NjIwOiA2NiA1MyA0
RCA0MiAzMiBBMCAxQSA5MyA3QiA2NSAwMSAwMCAwMCA0RCAzMCAzMSAgZlNNQjIuLi57ZS4uLk0w
MQogICAgNjYzMDogMzIgNzIgNEQgMzAgMzggMzQgMEIgMDAgMDMgMDAgMEEgMDIgMDAgMEEgMDgg
NjUgIDJyTTA4NC4uLi4uLi4uLmUKICAgIDY2NDA6IDREIDM0IDM3IDM4IDY0IDVCIDI3IDREIDM0
IDMwIDM4IDREIDM0IDM2IDMwIDBEICBNNDc4ZFsnTTQwOE00NjAuCiAgICA2NjUwOiAyMCAyMCA0
QiA0NSA1MiAyRCA0MSA1MyA0QyAyRCA0MyA3MCA2RCA1MyA2RCA2MiAgICBLRVItQVNMLUNwbVNt
YgogICAgNjY2MDogNzUgNzMgNDUgNzggNjUgNjMgNzUgNzQgNkYgNzIgMjAgNzIgNjUgNzQgNzUg
NzIgIHVzRXhlY3V0b3IgcmV0dXIKICAgIDY2NzA6IDZFIDIwIDUzIDc0IDNBIDIwIDMwIDc4IDI1
IDU4IDJDIDIwIDRDIDY1IDZFIDIwICBuIFN0OiAweCVYLCBMZW4gCiAgICA2NjgwOiAyNSA2NCAy
QyAyMCA0NCA2MSA3NCA2MSAzQSAyMCAzMCA3OCAyNSA1OCAyQyAyMCAgJWQsIERhdGE6IDB4JVgs
IAogICAgNjY5MDogMzAgNzggMjUgNTggMkMgMjAgMzAgNzggMjUgNTggMkMgMjAgMzAgNzggMjUg
NTggIDB4JVgsIDB4JVgsIDB4JVgKICAgIDY2QTA6IDIwIDJFIDJFIDJFIDBBIDAwIDUzIDU0IDQx
IDU0IDRDIDQ1IDRFIDVGIDgzIDg4ICAgLi4uLi5TVEFUTEVOXy4uCiAgICA2NkIwOiA2MCAwQSAw
MiAwMCA4MyA4OCA2MCAwQSAwMyAwMCA4MyA4OCA2MCAwQSAwNCAwMCAgYC4uLi4uYC4uLi4uYC4u
LgogICAgNjZDMDogODMgODggNjAgMEEgMDUgMDAgNEQgMzAgMzAgMzAgMEIgRTYgMEQgQTQgNjAg
MTQgIC4uYC4uLk0wMDAuLi4uYC4KICAgIDY2RDA6IDE4IDREIDM0IDM3IDQyIDBCIDcwIDREIDM0
IDM3IDQxIDY4IDY5IDAwIDZBIDAwICAuTTQ3Qi5wTTQ3QWhpLmouCiAgICA2NkUwOiAwMCA2MCBB
NCA4MyA4OCA2MCAwMCAwMCAxNCAzNCA0RCAzNCAzNyA0MyAwQyA3MCAgLmAuLi5gLi4uNE00N0Mu
cAogICAgNjZGMDogMTEgMDMgMEEgMDIgNjAgOEMgNjAgMDAgNEMgNDUgNEUgNUYgOEMgNjAgMDEg
NDQgIC4uLi5gLmAuTEVOXy5gLkQKICAgIDY3MDA6IDQxIDU0IDQyIDcwIDAxIDRDIDQ1IDRFIDVG
IDcwIDZCIDQ0IDQxIDU0IDQyIDcwICBBVEJwLkxFTl9wa0RBVEJwCiAgICA2NzEwOiA0RCAzNCAz
NyA0MSA2OCA2OSAwMSA2QSAwMCA2MCA2MSBBNCA2MSAxNCAzNSA0RCAgTTQ3QWhpLmouYGEuYS41
TQogICAgNjcyMDogMzQgMzcgNDQgMEQgNzAgMTEgMDMgMEEgMDIgNjAgOEMgNjAgMDAgNEMgNDUg
NEUgIDQ3RC5wLi4uLmAuYC5MRU4KICAgIDY3MzA6IDVGIDhDIDYwIDAxIDQ0IDQxIDU0IDQyIDcw
IDAxIDRDIDQ1IDRFIDVGIDcwIDZDICBfLmAuREFUQnAuTEVOX3BsCiAgICA2NzQwOiA0NCA0MSA1
NCA0MiA3MCA0RCAzNCAzNyA0MSA2OCA2OSAwQSAwMiA2QSA2QiA2MCAgREFUQnBNNDdBaGkuLmpr
YAogICAgNjc1MDogNjEgQTQgNjEgMTQgNDEgMDUgNEQgMzQgMzcgNDUgMEQgNzAgMTEgMDMgMEEg
MDMgIGEuYS5BLk00N0UucC4uLi4KICAgIDY3NjA6IDYwIDhDIDYwIDAwIDRDIDQ1IDRFIDVGIDhD
IDYwIDAxIDQ0IDQxIDU0IDRDIDhDICBgLmAuTEVOXy5gLkRBVEwuCiAgICA2NzcwOiA2MCAwQSAw
MiA0NCA0MSA1NCA0OCA3MCAwQSAwMiA0QyA0NSA0RSA1RiA3MCA3QiAgYC4uREFUSHAuLkxFTl9w
ewogICAgNjc4MDogNkMgMEEgRkYgMDAgNDQgNDEgNTQgNEMgNzAgN0IgN0EgNkMgMEEgMDggMDAg
MEEgIGwuLi5EQVRMcHt6bC4uLi4KICAgIDY3OTA6IEZGIDAwIDQ0IDQxIDU0IDQ4IDcwIDREIDM0
IDM3IDQxIDY4IDY5IDBBIDAzIDZBICAuLkRBVEhwTTQ3QWhpLi5qCiAgICA2N0EwOiA2QiA2MCA2
MSBBNCA2MSAxNCAxNSA0RCAzNCAzNyA0NiAwRCA3MCA0RCAzNCAzNyAga2BhLmEuLk00N0YucE00
NwogICAgNjdCMDogNDEgNjggNjkgMEEgMDUgNkEgNkIgNkMgNjEgQTQgNjEgMTQgNEQgNDcgNEQg
MzQgIEFoaS4uamtsYS5hLk1HTTQKICAgIDY3QzA6IDMwIDM5IDBCIDcwIDREIDMwIDM0IDM5IDRE
IDMxIDMyIDM4IDBBIDk0IDYwIEEwICAwOS5wTTA0OU0xMjguLmAuCiAgICA2N0QwOiA0OCAwNSA5
MyA2MCAwMSA0RCAzNCAzNiAzMCAwRCAyMCAyMCA0QiA0NSA1MiAyRCAgSC4uYC5NNDYwLiAgS0VS
LQogICAgNjdFMDogNDEgNTMgNEMgMkQgNDMgNzAgNkQgNTIgNjUgNjEgNjQgNTMgNkQgNjIgNzUg
NzMgIEFTTC1DcG1SZWFkU21idXMKICAgIDY3RjA6IDQyIDc5IDc0IDY1IDIwIDI4IDI1IDY0IDJD
IDIwIDMwIDc4IDI1IDU4IDJDIDIwICBCeXRlICglZCwgMHglWCwgCiAgICA2ODAwOiAzMCA3OCAy
NSA1OCAyOSAyMCAzRCAyMCAzMCAyMCA1MyA2RCA2MiA3NSA3MyAyMCAgMHglWCkgPSAwIFNtYnVz
IAogICAgNjgxMDogNDEgNjMgNjMgNjUgNzMgNzMgMjAgNDQgNjkgNzMgNjEgNjIgNkMgNjUgMEEg
MDAgIEFjY2VzcyBEaXNhYmxlLi4KICAgIDY4MjA6IDY4IDY5IDZBIDAwIDAwIDAwIEE0IDAwIDVC
IDIzIDREIDM0IDMwIDM4IEZGIEZGICBoaWouLi4uLlsjTTQwOC4uCiAgICA2ODMwOiA3MiA0RCAz
NCAzMSAzNCA3OSA2OCAwQSAwNSAwMCA2MCA1QiA4MCA1NiA0MSA1MiAgck00MTR5aC4uLmBbLlZB
UgogICAgNjg0MDogNEQgMDEgNjAgMEEgMDkgNUIgODEgMzMgNTYgNDEgNTIgNEQgMDEgNTMgNEQg
NDIgIE0uYC4uWy4zVkFSTS5TTUIKICAgIDY4NTA6IDMwIDA4IDUzIDREIDQyIDMxIDA4IDUzIDRE
IDQyIDMyIDA4IDUzIDREIDQyIDMzICAwLlNNQjEuU01CMi5TTUIzCiAgICA2ODYwOiAwOCA1MyA0
RCA0MiAzNCAwOCA1MyA0RCA0MiAzNSAwOCA1MyA0RCA0MiAzNiAwOCAgLlNNQjQuU01CNS5TTUI2
LgogICAgNjg3MDogNTMgNEQgNDIgMzcgMDggNTMgNEQgNDIgMzggMDggNzAgNEQgMzAgMzQgMzkg
NzIgIFNNQjcuU01COC5wTTA0OXIKICAgIDY4ODA6IDREIDMwIDM4IDM0IDBCIDAwIDAzIDAwIDBB
IDAyIDY1IEEwIDFEIDkzIDdCIDY1ICBNMDg0Li4uLi4uZS4uLntlCiAgICA2ODkwOiAwMSAwMCAw
MCA0RCAzMCAzMSAzMiA3MiA0RCAzMCAzOCAzNCAwQiAwMCAwMyAwMCAgLi4uTTAxMnJNMDg0Li4u
LgogICAgNjhBMDogMEEgMDIgMDAgMEEgMDggN0QgNjUgMDEgMDAgQTAgMTQgOTMgNjggMDEgNzAg
NTMgIC4uLi4ufWUuLi4uLmgucFMKICAgIDY4QjA6IDREIDQyIDMyIDY2IDcwIDdCIDY2IDBBIDdG
IDAwIDUzIDREIDQyIDMyIDcwIDAwICBNQjJmcHtmLi4uU01CMnAuCiAgICA2OEMwOiA2MSA3MCAw
QSA2NCA2MiBBMiAyOSA5MCA5NCA2MiAwMCA5MiA5MyA3QiA2MSAwQSAgYXAuZGIuKS4uYi4uLnth
LgogICAgNjhEMDogMTAgMDAgMEEgMTAgN0QgNTMgNEQgNDIgMzggMEEgMTAgNTMgNEQgNDIgMzgg
NzAgIC4uLi59U01COC4uU01COHAKICAgIDY4RTA6IDc0IDYyIDAxIDAwIDYyIDVCIDIxIDBBIDA1
IDcwIDUzIDREIDQyIDM4IDYxIDcwICB0Yi4uYlshLi5wU01COGFwCiAgICA2OEYwOiAwQSAwMyA2
MyBBMiA0NyAwNCA5NCA2MyAwMCA3MCAwMSA2MSA3MCAwQSA2NCA2MiAgLi5jLkcuLmMucC5hcC5k
YgogICAgNjkwMDogQTIgMjMgOTAgOTQgNjIgMDAgOTIgOTMgN0IgNjEgMDEgMDAgMDAgNzAgMEEg
MUYgIC4jLi5iLi4ue2EuLi5wLi4KICAgIDY5MTA6IDUzIDREIDQyIDMwIDcwIDc0IDYyIDAxIDAw
IDYyIDVCIDIxIDBBIDA1IDcwIDUzICBTTUIwcHRiLi5iWyEuLnBTCiAgICA2OTIwOiA0RCA0MiAz
MCA2MSBBMCAxMSA5MyA2MiAwMCA3MCAwQSAwMiA1MyA0RCA0MiAzMiAgTUIwYS4uLmIucC4uU01C
MgogICAgNjkzMDogNzAgNzQgNjMgMDEgMDAgNjMgQTEgMDQgNzAgMDAgNjMgQTAgNEIgMDcgOTAg
OTMgIHB0Yy4uYy4ucC5jLksuLi4KICAgIDY5NDA6IDYyIDAwIDkzIDYzIDAwIEEwIDBBIDkzIDY4
IDAxIDcwIDY2IDUzIDREIDQyIDMyICBiLi5jLi4uLmgucGZTTUIyCiAgICA2OTUwOiBBMCAxQSA5
MyA3QiA2NSAwMSAwMCAwMCA0RCAzMCAzMSAzMiA3MiA0RCAzMCAzOCAgLi4ue2UuLi5NMDEyck0w
OAogICAgNjk2MDogMzQgMEIgMDAgMDMgMDAgMEEgMDIgMDAgMEEgMDggNjUgNUIgMjcgNEQgMzQg
MzAgIDQuLi4uLi4uLi5lWydNNDAKICAgIDY5NzA6IDM4IDREIDM0IDM2IDMwIDBEIDIwIDIwIDRC
IDQ1IDUyIDJEIDQxIDUzIDRDIDJEICA4TTQ2MC4gIEtFUi1BU0wtCiAgICA2OTgwOiA0MyA3MCA2
RCA1MiA2NSA2MSA2NCA1MyA2RCA2MiA3NSA3MyA0MiA3OSA3NCA2NSAgQ3BtUmVhZFNtYnVzQnl0
ZQogICAgNjk5MDogMjAgMjggMjUgNjQgMkMgMjAgMzAgNzggMjUgNTggMkMgMjAgMzAgNzggMjUg
NTggICAoJWQsIDB4JVgsIDB4JVgKICAgIDY5QTA6IDI5IDIwIDNEIDIwIDMwIDIwIDQ1IDUyIDUy
IDRGIDUyIDIwIDMxIDBBIDAwIDY4ICApID0gMCBFUlJPUiAxLi5oCiAgICA2OUIwOiA2OSA2QSAw
MCAwMCAwMCBBNCAwMCA3MCAwQSAwMyA2MyBBMiA0NyAwNCA5NCA2MyAgaWouLi4uLnAuLmMuRy4u
YwogICAgNjlDMDogMDAgNzAgMDEgNjEgNzAgMEEgNjQgNjIgQTIgMjMgOTAgOTQgNjIgMDAgOTIg
OTMgIC5wLmFwLmRiLiMuLmIuLi4KICAgIDY5RDA6IDdCIDYxIDAxIDAwIDAwIDcwIDBBIDNGIDUz
IDREIDQyIDMxIDcwIDc0IDYyIDAxICB7YS4uLnAuP1NNQjFwdGIuCiAgICA2OUUwOiAwMCA2MiA1
QiAyMSAwQSAwNSA3MCA1MyA0RCA0MiAzMSA2MSBBMCAxMSA5MyA2MiAgLmJbIS4ucFNNQjFhLi4u
YgogICAgNjlGMDogMDAgNzAgMEEgMDIgNTMgNEQgNDIgMzEgNzAgNzQgNjMgMDEgMDAgNjMgQTEg
MDQgIC5wLi5TTUIxcHRjLi5jLi4KICAgIDZBMDA6IDcwIDAwIDYzIEEwIDRCIDA3IDkwIDkzIDYy
IDAwIDkzIDYzIDAwIEEwIDBBIDkzICBwLmMuSy4uLmIuLmMuLi4uCiAgICA2QTEwOiA2OCAwMSA3
MCA2NiA1MyA0RCA0MiAzMiBBMCAxQSA5MyA3QiA2NSAwMSAwMCAwMCAgaC5wZlNNQjIuLi57ZS4u
LgogICAgNkEyMDogNEQgMzAgMzEgMzIgNzIgNEQgMzAgMzggMzQgMEIgMDAgMDMgMDAgMEEgMDIg
MDAgIE0wMTJyTTA4NC4uLi4uLi4KICAgIDZBMzA6IDBBIDA4IDY1IDVCIDI3IDREIDM0IDMwIDM4
IDREIDM0IDM2IDMwIDBEIDIwIDIwICAuLmVbJ000MDhNNDYwLiAgCiAgICA2QTQwOiA0QiA0NSA1
MiAyRCA0MSA1MyA0QyAyRCA0MyA3MCA2RCA1MiA2NSA2MSA2NCA1MyAgS0VSLUFTTC1DcG1SZWFk
UwogICAgNkE1MDogNkQgNjIgNzUgNzMgNDIgNzkgNzQgNjUgMjAgMjggMjUgNjQgMkMgMjAgMzAg
NzggIG1idXNCeXRlICglZCwgMHgKICAgIDZBNjA6IDI1IDU4IDJDIDIwIDMwIDc4IDI1IDU4IDI5
IDIwIDNEIDIwIDMwIDIwIDQ1IDUyICAlWCwgMHglWCkgPSAwIEVSCiAgICA2QTcwOiA1MiA0RiA1
MiAyMCAzMiAwQSAwMCA2OCA2OSA2QSAwMCAwMCAwMCBBNCAwMCA3MCAgUk9SIDIuLmhpai4uLi4u
cAogICAgNkE4MDogMEEgMDMgNjMgQTIgNEUgMTIgOTQgNjMgMDAgNzAgMEEgMUYgNTMgNEQgNDIg
MzAgIC4uYy5OLi5jLnAuLlNNQjAKICAgIDZBOTA6IDdEIDc5IDY5IDAxIDAwIDAxIDUzIDREIDQy
IDM0IDcwIDZBIDUzIDREIDQyIDMzICB9eWkuLi5TTUI0cGpTTUIzCiAgICA2QUEwOiA3MCAwQSAw
OCA1MyA0RCA0MiAzMiA3MCA1MyA0RCA0MiAzMiA2MSA3MCAwQSA0OCAgcC4uU01CMnBTTUIyYXAu
SAogICAgNkFCMDogNTMgNEQgNDIgMzIgNzAgMDEgNjEgNzAgMEIgRTggMDMgNjQgQTIgNEUgMEIg
OTAgIFNNQjJwLmFwLi4uZC5OLi4KICAgIDZBQzA6IDk0IDY0IDAwIDkzIDdCIDYxIDBBIDBFIDAw
IDAwIDcwIDBCIEU4IDAzIDYyIEEyICAuZC4ue2EuLi4ucC4uLmIuCiAgICA2QUQwOiAxQyA5MCA5
NCA2MiAwMCA5MiA5MyA3QiA2MSAwMSAwMCAwMCA3MCA3NCA2MiAwMSAgLi4uYi4uLnthLi4ucHRi
LgogICAgNkFFMDogMDAgNjIgNUIgMjEgMEEgMDUgNzAgNTMgNEQgNDIgMzAgNjEgQTAgNEUgMDcg
OTMgIC5iWyEuLnBTTUIwYS5OLi4KICAgIDZBRjA6IDYyIDAwIDcwIDBBIDAyIDUzIDREIDQyIDMy
IEEwIDBBIDkzIDY4IDAxIDcwIDY2ICBiLnAuLlNNQjIuLi5oLnBmCiAgICA2QjAwOiA1MyA0RCA0
MiAzMiBBMCAxQSA5MyA3QiA2NSAwMSAwMCAwMCA0RCAzMCAzMSAzMiAgU01CMi4uLntlLi4uTTAx
MgogICAgNkIxMDogNzIgNEQgMzAgMzggMzQgMEIgMDAgMDMgMDAgMEEgMDIgMDAgMEEgMDggNjUg
NUIgIHJNMDg0Li4uLi4uLi4uZVsKICAgIDZCMjA6IDI3IDREIDM0IDMwIDM4IDREIDM0IDM2IDMw
IDBEIDIwIDIwIDRCIDQ1IDUyIDJEICAnTTQwOE00NjAuICBLRVItCiAgICA2QjMwOiA0MSA1MyA0
QyAyRCA0MyA3MCA2RCA1MiA2NSA2MSA2NCA1MyA2RCA2MiA3NSA3MyAgQVNMLUNwbVJlYWRTbWJ1
cwogICAgNkI0MDogNDIgNzkgNzQgNjUgMjAgMjggMjUgNjQgMkMgMjAgMzAgNzggMjUgNTggMkMg
MjAgIEJ5dGUgKCVkLCAweCVYLCAKICAgIDZCNTA6IDMwIDc4IDI1IDU4IDI5IDIwIDNEIDIwIDMw
IDIwIDQ1IDUyIDUyIDRGIDUyIDIwICAweCVYKSA9IDAgRVJST1IgCiAgICA2QjYwOiAzMyAwQSAw
MCA2OCA2OSA2QSAwMCAwMCAwMCBBNCAwMCA3MCA3NCA2NCAwMSAwMCAgMy4uaGlqLi4uLi5wdGQu
LgogICAgNkI3MDogNjQgNUIgMjEgMEEgMDUgNzAgNTMgNEQgNDIgMzAgNjEgQTAgMEYgOTIgOTMg
N0IgIGRbIS4ucFNNQjBhLi4uLnsKICAgIDZCODA6IDYxIDBBIDA0IDAwIDAwIDcwIDAwIDYzIDcw
IDAwIDY0IEExIDI2IEEwIDE5IDkyICBhLi4uLnAuY3AuZC4mLi4uCiAgICA2QjkwOiA5MyA3QiA2
MSAwQSAwOCAwMCAwMCA3MCAwQSAwOCA1MyA0RCA0MiAzMCA3MCA3NCAgLnthLi4uLnAuLlNNQjBw
dAogICAgNkJBMDogNjMgMDEgMDAgNjMgNzAgMDAgNjQgQTEgMEEgNzAgMDAgNjMgNzAgNTMgNEQg
NDIgIGMuLmNwLmQuLnAuY3BTTUIKICAgIDZCQjA6IDM1IDY0IDcwIDBBIDFGIDUzIDREIDQyIDMw
IDdEIDUzIDREIDQyIDM4IDBBIDIwICA1ZHAuLlNNQjB9U01COC4gCiAgICA2QkMwOiA1MyA0RCA0
MiAzOCBBMCAwQSA5MyA2OCAwMSA3MCA2NiA1MyA0RCA0MiAzMiBBMCAgU01COC4uLmgucGZTTUIy
LgogICAgNkJEMDogMUEgOTMgN0IgNjUgMDEgMDAgMDAgNEQgMzAgMzEgMzIgNzIgNEQgMzAgMzgg
MzQgIC4ue2UuLi5NMDEyck0wODQKICAgIDZCRTA6IDBCIDAwIDAzIDAwIDBBIDAyIDAwIDBBIDA4
IDY1IDVCIDI3IDREIDM0IDMwIDM4ICAuLi4uLi4uLi5lWydNNDA4CiAgICA2QkYwOiA0RCAzNCAz
NiAzMCAwRCAyMCAyMCA0QiA0NSA1MiAyRCA0MSA1MyA0QyAyRCA0MyAgTTQ2MC4gIEtFUi1BU0wt
QwogICAgNkMwMDogNzAgNkQgNTIgNjUgNjEgNjQgNTMgNkQgNjIgNzUgNzMgNDIgNzkgNzQgNjUg
MjAgIHBtUmVhZFNtYnVzQnl0ZSAKICAgIDZDMTA6IDI4IDI1IDY0IDJDIDIwIDMwIDc4IDI1IDU4
IDJDIDIwIDMwIDc4IDI1IDU4IDI5ICAoJWQsIDB4JVgsIDB4JVgpCiAgICA2QzIwOiAyMCAzRCAy
MCAzMCA3OCAyNSA1OCAyMCA1MyA3NSA2MyA2MyA2NSA3MyA3MyAwQSAgID0gMHglWCBTdWNjZXNz
LgogICAgNkMzMDogMDAgNjggNjkgNkEgNjQgMDAgMDAgQTQgNjQgMTQgNEIgNDkgNEQgMzQgMzEg
MzAgIC5oaWpkLi4uZC5LSU00MTAKICAgIDZDNDA6IDBDIDcwIDREIDMwIDM0IDM5IDREIDMxIDMy
IDM4IDBBIDk0IDYwIEEwIDRGIDA1ICAucE0wNDlNMTI4Li5gLk8uCiAgICA2QzUwOiA5MyA2MCAw
MSA0RCAzNCAzNiAzMCAwRCAyMCAyMCA0QiA0NSA1MiAyRCA0MSA1MyAgLmAuTTQ2MC4gIEtFUi1B
UwogICAgNkM2MDogNEMgMkQgNDMgNzAgNkQgNTcgNzIgNjkgNzQgNjUgNTMgNkQgNjIgNzUgNzMg
NDIgIEwtQ3BtV3JpdGVTbWJ1c0IKICAgIDZDNzA6IDc5IDc0IDY1IDIwIDI4IDI1IDY0IDJDIDIw
IDMwIDc4IDI1IDU4IDJDIDIwIDMwICB5dGUgKCVkLCAweCVYLCAwCiAgICA2QzgwOiA3OCAyNSA1
OCAyQyAyMCAzMCA3OCAyNSA1OCAyOSAyMCAzRCAyMCAzMCAyMCA1MyAgeCVYLCAweCVYKSA9IDAg
UwogICAgNkM5MDogNkQgNjIgNzUgNzMgMjAgNDEgNjMgNjMgNjUgNzMgNzMgMjAgNDQgNjkgNzMg
NjEgIG1idXMgQWNjZXNzIERpc2EKICAgIDZDQTA6IDYyIDZDIDY1IDBBIDAwIDY4IDY5IDZBIDZC
IDAwIDAwIEE0IDAwIDVCIDIzIDREICBibGUuLmhpamsuLi4uWyNNCiAgICA2Q0IwOiAzNCAzMCAz
OCBGRiBGRiA3MiA0RCAzNCAzMSAzNCA3OSA2OCAwQSAwNSAwMCA2MCAgNDA4Li5yTTQxNHloLi4u
YAogICAgNkNDMDogNUIgODAgNTYgNDEgNTIgNEQgMDEgNjAgMEEgMDkgNUIgODEgMzMgNTYgNDEg
NTIgIFsuVkFSTS5gLi5bLjNWQVIKICAgIDZDRDA6IDREIDAxIDUzIDREIDQyIDMwIDA4IDUzIDRE
IDQyIDMxIDA4IDUzIDREIDQyIDMyICBNLlNNQjAuU01CMS5TTUIyCiAgICA2Q0UwOiAwOCA1MyA0
RCA0MiAzMyAwOCA1MyA0RCA0MiAzNCAwOCA1MyA0RCA0MiAzNSAwOCAgLlNNQjMuU01CNC5TTUI1
LgogICAgNkNGMDogNTMgNEQgNDIgMzYgMDggNTMgNEQgNDIgMzcgMDggNTMgNEQgNDIgMzggMDgg
NzAgIFNNQjYuU01CNy5TTUI4LnAKICAgIDZEMDA6IDREIDMwIDM0IDM5IDcyIDREIDMwIDM4IDM0
IDBCIDAwIDAzIDAwIDBBIDAyIDY1ICBNMDQ5ck0wODQuLi4uLi5lCiAgICA2RDEwOiBBMCAxRCA5
MyA3QiA2NSAwMSAwMCAwMCA0RCAzMCAzMSAzMiA3MiA0RCAzMCAzOCAgLi4ue2UuLi5NMDEyck0w
OAogICAgNkQyMDogMzQgMEIgMDAgMDMgMDAgMEEgMDIgMDAgMEEgMDggN0QgNjUgMDEgMDAgQTAg
MTQgIDQuLi4uLi4uLi59ZS4uLi4KICAgIDZEMzA6IDkzIDY4IDAxIDcwIDUzIDREIDQyIDMyIDY2
IDcwIDdCIDY2IDBBIDdGIDAwIDUzICAuaC5wU01CMmZwe2YuLi5TCiAgICA2RDQwOiA0RCA0MiAz
MiA3MCAwMCA2MSA3MCAwQSA2NCA2MiBBMiAyOSA5MCA5NCA2MiAwMCAgTUIycC5hcC5kYi4pLi5i
LgogICAgNkQ1MDogOTIgOTMgN0IgNjEgMEEgMTAgMDAgMEEgMTAgN0QgNTMgNEQgNDIgMzggMEEg
MTAgIC4ue2EuLi4uLn1TTUI4Li4KICAgIDZENjA6IDUzIDREIDQyIDM4IDcwIDc0IDYyIDAxIDAw
IDYyIDVCIDIxIDBBIDA1IDcwIDUzICBTTUI4cHRiLi5iWyEuLnBTCiAgICA2RDcwOiA0RCA0MiAz
OCA2MSA3MCAwQSAwMyA2MyBBMiA0NyAwNCA5NCA2MyAwMCA3MCAwMSAgTUI4YXAuLmMuRy4uYy5w
LgogICAgNkQ4MDogNjEgNzAgMEEgNjQgNjIgQTIgMjMgOTAgOTQgNjIgMDAgOTIgOTMgN0IgNjEg
MDEgIGFwLmRiLiMuLmIuLi57YS4KICAgIDZEOTA6IDAwIDAwIDcwIDBBIDFGIDUzIDREIDQyIDMw
IDcwIDc0IDYyIDAxIDAwIDYyIDVCICAuLnAuLlNNQjBwdGIuLmJbCiAgICA2REEwOiAyMSAwQSAw
NSA3MCA1MyA0RCA0MiAzMCA2MSBBMCAxMSA5MyA2MiAwMCA3MCAwQSAgIS4ucFNNQjBhLi4uYi5w
LgogICAgNkRCMDogMDIgNTMgNEQgNDIgMzIgNzAgNzQgNjMgMDEgMDAgNjMgQTEgMDQgNzAgMDAg
NjMgIC5TTUIycHRjLi5jLi5wLmMKICAgIDZEQzA6IEEwIDQyIDA4IDkwIDkzIDYyIDAwIDkzIDYz
IDAwIEEwIDBBIDkzIDY4IDAxIDcwICAuQi4uLmIuLmMuLi4uaC5wCiAgICA2REQwOiA2NiA1MyA0
RCA0MiAzMiBBMCAxQSA5MyA3QiA2NSAwMSAwMCAwMCA0RCAzMCAzMSAgZlNNQjIuLi57ZS4uLk0w
MQogICAgNkRFMDogMzIgNzIgNEQgMzAgMzggMzQgMEIgMDAgMDMgMDAgMEEgMDIgMDAgMEEgMDgg
NjUgIDJyTTA4NC4uLi4uLi4uLmUKICAgIDZERjA6IDVCIDI3IDREIDM0IDMwIDM4IDREIDM0IDM2
IDMwIDBEIDIwIDIwIDRCIDQ1IDUyICBbJ000MDhNNDYwLiAgS0VSCiAgICA2RTAwOiAyRCA0MSA1
MyA0QyAyRCA0MyA3MCA2RCA1NyA3MiA2OSA3NCA2NSA1MyA2RCA2MiAgLUFTTC1DcG1Xcml0ZVNt
YgogICAgNkUxMDogNzUgNzMgNDIgNzkgNzQgNjUgMjAgMjggMjUgNjQgMkMgMjAgMzAgNzggMjUg
NTggIHVzQnl0ZSAoJWQsIDB4JVgKICAgIDZFMjA6IDJDIDIwIDMwIDc4IDI1IDU4IDJDIDIwIDMw
IDc4IDI1IDU4IDI5IDIwIDNEIDIwICAsIDB4JVgsIDB4JVgpID0gCiAgICA2RTMwOiAzMCAyMCA0
NSA1MiA1MiA0RiA1MiAyMCAzMSAwQSAwMCA2OCA2OSA2QSA2QiAwMCAgMCBFUlJPUiAxLi5oaWpr
LgogICAgNkU0MDogMDAgQTQgMDAgNzAgMEEgMDMgNjMgQTIgNDcgMDQgOTQgNjMgMDAgNzAgMDEg
NjEgIC4uLnAuLmMuRy4uYy5wLmEKICAgIDZFNTA6IDcwIDBBIDY0IDYyIEEyIDIzIDkwIDk0IDYy
IDAwIDkyIDkzIDdCIDYxIDAxIDAwICBwLmRiLiMuLmIuLi57YS4uCiAgICA2RTYwOiAwMCA3MCAw
QSAzRiA1MyA0RCA0MiAzMSA3MCA3NCA2MiAwMSAwMCA2MiA1QiAyMSAgLnAuP1NNQjFwdGIuLmJb
IQogICAgNkU3MDogMEEgMDUgNzAgNTMgNEQgNDIgMzEgNjEgQTAgMTEgOTMgNjIgMDAgNzAgMEEg
MDIgIC4ucFNNQjFhLi4uYi5wLi4KICAgIDZFODA6IDUzIDREIDQyIDMxIDcwIDc0IDYzIDAxIDAw
IDYzIEExIDA0IDcwIDAwIDYzIEEwICBTTUIxcHRjLi5jLi5wLmMuCiAgICA2RTkwOiA0MiAwOCA5
MCA5MyA2MiAwMCA5MyA2MyAwMCBBMCAwQSA5MyA2OCAwMSA3MCA2NiAgQi4uLmIuLmMuLi4uaC5w
ZgogICAgNkVBMDogNTMgNEQgNDIgMzIgQTAgMUEgOTMgN0IgNjUgMDEgMDAgMDAgNEQgMzAgMzEg
MzIgIFNNQjIuLi57ZS4uLk0wMTIKICAgIDZFQjA6IDcyIDREIDMwIDM4IDM0IDBCIDAwIDAzIDAw
IDBBIDAyIDAwIDBBIDA4IDY1IDVCICByTTA4NC4uLi4uLi4uLmVbCiAgICA2RUMwOiAyNyA0RCAz
NCAzMCAzOCA0RCAzNCAzNiAzMCAwRCAyMCAyMCA0QiA0NSA1MiAyRCAgJ000MDhNNDYwLiAgS0VS
LQogICAgNkVEMDogNDEgNTMgNEMgMkQgNDMgNzAgNkQgNTcgNzIgNjkgNzQgNjUgNTMgNkQgNjIg
NzUgIEFTTC1DcG1Xcml0ZVNtYnUKICAgIDZFRTA6IDczIDQyIDc5IDc0IDY1IDIwIDI4IDI1IDY0
IDJDIDIwIDMwIDc4IDI1IDU4IDJDICBzQnl0ZSAoJWQsIDB4JVgsCiAgICA2RUYwOiAyMCAzMCA3
OCAyNSA1OCAyQyAyMCAzMCA3OCAyNSA1OCAyOSAyMCAzRCAyMCAzMCAgIDB4JVgsIDB4JVgpID0g
MAogICAgNkYwMDogMjAgNDUgNTIgNTIgNEYgNTIgMjAgMzIgMEEgMDAgNjggNjkgNkEgNkIgMDAg
MDAgICBFUlJPUiAyLi5oaWprLi4KICAgIDZGMTA6IEE0IDAwIDcwIDBBIDAzIDYzIEEyIDQ3IDEz
IDk0IDYzIDAwIDcwIDBBIDFGIDUzICAuLnAuLmMuRy4uYy5wLi5TCiAgICA2RjIwOiA0RCA0MiAz
MCA3MCA3OSA2OSAwMSAwMCA1MyA0RCA0MiAzNCA3MCA2QSA1MyA0RCAgTUIwcHlpLi5TTUI0cGpT
TQogICAgNkYzMDogNDIgMzMgNzAgMEEgMDggNTMgNEQgNDIgMzIgNzAgNTMgNEQgNDIgMzIgNjEg
NzAgIEIzcC4uU01CMnBTTUIyYXAKICAgIDZGNDA6IDZCIDUzIDREIDQyIDM1IDcwIDBBIDQ4IDUz
IDREIDQyIDMyIDcwIDAxIDYxIDcwICBrU01CNXAuSFNNQjJwLmFwCiAgICA2RjUwOiAwQiBFOCAw
MyA2NCBBMiA0NSAwQyA5MCA5NCA2NCAwMCA5MyA3QiA2MSAwQSAwRSAgLi4uZC5FLi4uZC4ue2Eu
LgogICAgNkY2MDogMDAgMDAgNzAgMEIgRTggMDMgNjIgQTIgMUMgOTAgOTQgNjIgMDAgOTIgOTMg
N0IgIC4ucC4uLmIuLi4uYi4uLnsKICAgIDZGNzA6IDYxIDAxIDAwIDAwIDcwIDc0IDYyIDAxIDAw
IDYyIDVCIDIxIDBBIDA1IDcwIDUzICBhLi4ucHRiLi5iWyEuLnBTCiAgICA2RjgwOiA0RCA0MiAz
MCA2MSBBMCA0NSAwOCA5MyA2MiAwMCA3MCAwQSAwMiA1MyA0RCA0MiAgTUIwYS5FLi5iLnAuLlNN
QgogICAgNkY5MDogMzIgQTAgMEEgOTMgNjggMDEgNzAgNjYgNTMgNEQgNDIgMzIgQTAgMUEgOTMg
N0IgIDIuLi5oLnBmU01CMi4uLnsKICAgIDZGQTA6IDY1IDAxIDAwIDAwIDREIDMwIDMxIDMyIDcy
IDREIDMwIDM4IDM0IDBCIDAwIDAzICBlLi4uTTAxMnJNMDg0Li4uCiAgICA2RkIwOiAwMCAwQSAw
MiAwMCAwQSAwOCA2NSA1QiAyNyA0RCAzNCAzMCAzOCA0RCAzNCAzNiAgLi4uLi4uZVsnTTQwOE00
NgogICAgNkZDMDogMzAgMEQgMjAgMjAgNEIgNDUgNTIgMkQgNDEgNTMgNEMgMkQgNDMgNzAgNkQg
NTcgIDAuICBLRVItQVNMLUNwbVcKICAgIDZGRDA6IDcyIDY5IDc0IDY1IDUzIDZEIDYyIDc1IDcz
IDQyIDc5IDc0IDY1IDIwIDI4IDI1ICByaXRlU21idXNCeXRlICglCiAgICA2RkUwOiA2NCAyQyAy
MCAzMCA3OCAyNSA1OCAyQyAyMCAzMCA3OCAyNSA1OCAyQyAyMCAzMCAgZCwgMHglWCwgMHglWCwg
MAogICAgNkZGMDogNzggMjUgNTggMjkgMjAgM0QgMjAgMzAgMjAgNDUgNTIgNTIgNEYgNTIgMjAg
MzMgIHglWCkgPSAwIEVSUk9SIDMKICAgIDcwMDA6IDBBIDAwIDY4IDY5IDZBIDZCIDAwIDAwIEE0
IDAwIDcwIDc0IDY0IDAxIDAwIDY0ICAuLmhpamsuLi4ucHRkLi5kCiAgICA3MDEwOiA1QiAyMSAw
QSAwNSA3MCA1MyA0RCA0MiAzMCA2MSBBMCAwRiA5MiA5MyA3QiA2MSAgWyEuLnBTTUIwYS4uLi57
YQogICAgNzAyMDogMEEgMDQgMDAgMDAgNzAgMDAgNjMgNzAgMDAgNjQgQTEgMjMgQTAgMTkgOTIg
OTMgIC4uLi5wLmNwLmQuIy4uLi4KICAgIDcwMzA6IDdCIDYxIDBBIDA4IDAwIDAwIDcwIDBBIDA4
IDUzIDREIDQyIDMwIDcwIDc0IDYzICB7YS4uLi5wLi5TTUIwcHRjCiAgICA3MDQwOiAwMSAwMCA2
MyA3MCAwMCA2NCBBMSAwNyA3MCAwMCA2MyA3MCAwMCA2NCA3MCAwQSAgLi5jcC5kLi5wLmNwLmRw
LgogICAgNzA1MDogMUYgNTMgNEQgNDIgMzAgN0QgNTMgNEQgNDIgMzggMEEgMjAgNTMgNEQgNDIg
MzggIC5TTUIwfVNNQjguIFNNQjgKICAgIDcwNjA6IEEwIDBBIDkzIDY4IDAxIDcwIDY2IDUzIDRE
IDQyIDMyIEEwIDFBIDkzIDdCIDY1ICAuLi5oLnBmU01CMi4uLntlCiAgICA3MDcwOiAwMSAwMCAw
MCA0RCAzMCAzMSAzMiA3MiA0RCAzMCAzOCAzNCAwQiAwMCAwMyAwMCAgLi4uTTAxMnJNMDg0Li4u
LgogICAgNzA4MDogMEEgMDIgMDAgMEEgMDggNjUgNUIgMjcgNEQgMzQgMzAgMzggNEQgMzQgMzYg
MzAgIC4uLi4uZVsnTTQwOE00NjAKICAgIDcwOTA6IDBEIDIwIDIwIDRCIDQ1IDUyIDJEIDQxIDUz
IDRDIDJEIDQzIDcwIDZEIDU3IDcyICAuICBLRVItQVNMLUNwbVdyCiAgICA3MEEwOiA2OSA3NCA2
NSA1MyA2RCA2MiA3NSA3MyA0MiA3OSA3NCA2NSAyMCAyOCAyNSA2NCAgaXRlU21idXNCeXRlICgl
ZAogICAgNzBCMDogMkMgMjAgMzAgNzggMjUgNTggMkMgMjAgMzAgNzggMjUgNTggMkMgMjAgMzAg
NzggICwgMHglWCwgMHglWCwgMHgKICAgIDcwQzA6IDI1IDU4IDI5IDIwIDUzIDc1IDYzIDYzIDY1
IDczIDczIDBBIDAwIDY4IDY5IDZBICAlWCkgU3VjY2Vzcy4uaGlqCiAgICA3MEQwOiA2QiAwMCAw
MCBBNCA2NCAxNCA0QiAxNCA0RCAzNCA0NiAzMSAwOSA0RCAzNCAzNiAgay4uLmQuSy5NNEYxLk00
NgogICAgNzBFMDogMzAgMEQgMjAgMjAgNEIgNDUgNTIgMkQgNDEgNTMgNEMgMkQgNDMgNzAgNkQg
NDMgIDAuICBLRVItQVNMLUNwbUMKICAgIDcwRjA6IDY4IDY1IDYzIDZCIDQ1IDc4IDcwIDYxIDZF
IDY0IDY1IDcyIDQ5IDZFIDcwIDc1ICBoZWNrRXhwYW5kZXJJbnB1CiAgICA3MTAwOiA3NCA0NSA3
NiA2NSA2RSA3NCAyMCAyOCAzMCA3OCAyNSA1OCAyOSAyMCA1MyA3NCAgdEV2ZW50ICgweCVYKSBT
dAogICAgNzExMDogNjEgNzIgNzQgMEEgMDAgNjggMDAgMDAgMDAgMDAgMDAgNzAgMDAgNjUgQTAg
NEQgIGFydC4uaC4uLi4ucC5lLk0KICAgIDcxMjA6IDBCIDkwIDkyIDk1IDY4IDAwIDkyIDk0IDY4
IDBBIDAzIDcwIDREIDM0IDQ2IDMwICAuLi4uaC4uLmguLnBNNEYwCiAgICA3MTMwOiA2MCBBMCA0
QSAwQSA5MiA5MyA2MCAwMCA3MiA2MCAwQSAxMCA2MCA3MiA2MCA3NyAgYC5KLi4uYC5yYC4uYHJg
dwogICAgNzE0MDogNjggMEEgMjYgMDAgNjAgQTAgNDYgMDkgOTMgNEQgMzAgMzQgMzkgNjAgMDAg
NjggIGguJi5gLkYuLk0wNDlgLmgKICAgIDcxNTA6IDcwIDREIDMwIDM0IDM5IDYwIDBBIDE1IDYx
IDcwIDREIDMwIDM0IDM5IDYwIDBBICBwTTA0OWAuLmFwTTA0OWAuCiAgICA3MTYwOiAxNiA2MiA3
MCA0RCAzMCAzNCAzOSA2MCAwQSAxRSA2MyA3MCA0RCAzNCAzMCAzOSAgLmJwTTA0OWAuLmNwTTQw
OQogICAgNzE3MDogNjEgNjIgMDAgNjQgNEQgMzAgMzQgNDMgNjAgMEEgMUUgNjQgN0YgNjMgNjQg
NjQgIGFiLmRNMDRDYC4uZC5jZGQKICAgIDcxODA6IDdCIDY0IDREIDMwIDM0IDM5IDYwIDBBIDFD
IDY0IDdEIDY0IDREIDMwIDM0IDM5ICB7ZE0wNDlgLi5kfWRNMDQ5CiAgICA3MTkwOiA2MCAwQSAx
RCA2NCBBMCA0MyAwNCA5MiA5NSA0RCAzMCAzNCAzOSA2MCAwQSAxNyAgYC4uZC5DLi4uTTA0OWAu
LgogICAgNzFBMDogMDEgNzAgNEQgMzAgMzQgMzkgNjAgMEEgMjUgNjMgNzAgNEQgMzQgMzAgMzkg
NjEgIC5wTTA0OWAuJWNwTTQwOWEKICAgIDcxQjA6IDYyIDAxIDY1IDREIDMwIDM0IDQzIDYwIDBB
IDI1IDY1IDdGIDYzIDY1IDY1IDdCICBiLmVNMDRDYC4lZS5jZWV7CiAgICA3MUMwOiA2NSA0RCAz
MCAzNCAzOSA2MCAwQSAyMyA2NSA3RCA2NSA0RCAzMCAzNCAzOSA2MCAgZU0wNDlgLiNlfWVNMDQ5
YAogICAgNzFEMDogMEEgMjQgNjUgNzkgNjUgMEEgMDggNjUgN0QgNjQgNjUgNjUgNEQgMzQgMzYg
MzAgIC4kZXllLi5lfWRlZU00NjAKICAgIDcxRTA6IDBEIDIwIDIwIDRCIDQ1IDUyIDJEIDQxIDUz
IDRDIDJEIDQzIDcwIDZEIDQzIDY4ICAuICBLRVItQVNMLUNwbUNoCiAgICA3MUYwOiA2NSA2MyA2
QiA0NSA3OCA3MCA2MSA2RSA2NCA2NSA3MiA0OSA2RSA3MCA3NSA3NCAgZWNrRXhwYW5kZXJJbnB1
dAogICAgNzIwMDogNDUgNzYgNjUgNkUgNzQgMjAgMjggMzAgNzggMjUgNTggMjkgMjAgM0QgMjAg
MzAgIEV2ZW50ICgweCVYKSA9IDAKICAgIDcyMTA6IDc4IDI1IDU4IDIwIDQ1IDZFIDY0IDBBIDAw
IDY4IDY1IDAwIDAwIDAwIDAwIEE0ICB4JVggRW5kLi5oZS4uLi4uCiAgICA3MjIwOiA2NSA1QiAw
MSA0RCAzNCA0NSAzNSAwMCAwOCA0RCAzNCA0NSAzNyAwQSA1QSAwOCAgZVsuTTRFNS4uTTRFNy5a
LgogICAgNzIzMDogNEQgMzQgNDUgMzggMEEgNUEgMDggNEQgMzQgNDUgMzkgMEEgNUEgMDggNEQg
MzQgIE00RTguWi5NNEU5LlouTTQKICAgIDcyNDA6IDQ1IDQxIDBDIDVBIDVBIDVBIDVBIDA4IDRE
IDM0IDQ1IDQyIDBDIDVBIDVBIDVBICBFQS5aWlpaLk00RUIuWlpaCiAgICA3MjUwOiA1QSAwOCA0
RCAzNCA0NSA0MyAxMiA0NCAxMSAwMyAwQSAwMiAxMiA0NCAwNyAwNSAgWi5NNEVDLkQuLi4uLkQu
LgogICAgNzI2MDogMTIgMTAgMDcgMEEgMDYgMEEgMEYgMEEgMTMgMEEgMTAgMEEgMTIgMEEgMTQg
MEEgIC4uLi4uLi4uLi4uLi4uLi4KICAgIDcyNzA6IDE1IDEyIDE3IDA2IDBEIDQ5IDMyIDQzIDMw
IDAwIDBBIDkxIDBBIDkyIDAwIDBDICAuLi4uLkkyQzAuLi4uLi4uCiAgICA3MjgwOiA0QSAxRSBE
OCBGRSAwQyAwMCAyMCBEQyBGRSAxMiAxNyAwNiAwRCA0OSAzMiA0MyAgSi4uLi4uIC4uLi4uLkky
QwogICAgNzI5MDogMzEgMDAgMEEgOTMgMEEgOTQgMDAgMEMgNEMgMUUgRDggRkUgMEMgMDAgMzAg
REMgIDEuLi4uLi4uTC4uLi4uMC4KICAgIDcyQTA6IEZFIDEyIDE3IDA2IDBEIDQ5IDMyIDQzIDMy
IDAwIDBBIDcxIDBBIDcyIDAxIDBDICAuLi4uLkkyQzIuLnEuci4uCiAgICA3MkIwOiA0RSAxRSBE
OCBGRSAwQyAwMCA0MCBEQyBGRSAxMiAxNyAwNiAwRCA0OSAzMiA0MyAgTi4uLi4uQC4uLi4uLkky
QwogICAgNzJDMDogMzMgMDAgMEEgMTMgMEEgMTQgMDEgMEMgNTAgMUUgRDggRkUgMEMgMDAgNTAg
REMgIDMuLi4uLi4uUC4uLi4uUC4KICAgIDcyRDA6IEZFIDEyIDQ5IDA5IDA3IDEyIDA1IDAyIDAx
IDBBIDExIDEyIDE3IDA2IDBEIDQ5ICAuLkkuLi4uLi4uLi4uLi5JCiAgICA3MkUwOiAzMiA0MyAz
MCAwMCAwQSA5MSAwQSA5MiAwMSAwQyA0QSAxRSBEOCBGRSAwQyAwMCAgMkMwLi4uLi4uLkouLi4u
LgogICAgNzJGMDogMjAgREMgRkUgMTIgMTcgMDYgMEQgNDkgMzIgNDMgMzEgMDAgMEEgOTMgMEEg
OTQgICAuLi4uLi5JMkMxLi4uLi4KICAgIDczMDA6IDAxIDBDIDRDIDFFIEQ4IEZFIDBDIDAwIDMw
IERDIEZFIDEyIDE3IDA2IDBEIDQ5ICAuLkwuLi4uLjAuLi4uLi5JCiAgICA3MzEwOiAzMiA0MyAz
MiAwMCAwQSA5NSAwQSA5NiAwMSAwQyA0RSAxRSBEOCBGRSAwQyAwMCAgMkMyLi4uLi4uLk4uLi4u
LgogICAgNzMyMDogNDAgREMgRkUgMTIgMTcgMDYgMEQgNDkgMzIgNDMgMzMgMDAgMEEgOTcgMEEg
OTggIEAuLi4uLi5JMkMzLi4uLi4KICAgIDczMzA6IDAxIDBDIDUwIDFFIEQ4IEZFIDBDIDAwIDUw
IERDIEZFIDEyIDE3IDA2IDBEIDQ5ICAuLlAuLi4uLlAuLi4uLi5JCiAgICA3MzQwOiAzMiA0MyAz
NCAwMCAwQSAwRCAwQSAwRSAwMCAwQyA1MiAxRSBEOCBGRSAwQyAwMCAgMkM0Li4uLi4uLlIuLi4u
LgogICAgNzM1MDogNjAgREMgRkUgMTIgMTcgMDYgMEQgNDkgMzIgNDMgMzUgMDAgMEEgMTMgMEEg
MTQgIGAuLi4uLi5JMkM1Li4uLi4KICAgIDczNjA6IDAwIDBDIDU0IDFFIEQ4IEZFIDBDIDAwIEIw
IERDIEZFIDE0IDQ3IDE0IDREIDM0ICAuLlQuLi4uLi4uLi5HLk00CiAgICA3MzcwOiA0NSAzNiAw
OSAwOCA1RiA1NCA1RiAzMCAwMCA3MCA0RCAzMCAzOCAzNSA2MCA3MCAgRTYuLl9UXzAucE0wODVg
cAogICAgNzM4MDogODMgODggNEQgMzQgNDUgNDMgMDAgMDAgNjEgNzAgMDEgNjIgNzAgMDAgNjcg
QTIgIC4uTTRFQy4uYXAuYnAuZy4KICAgIDczOTA6IDNEIDkyIDk0IDYyIDYxIDcwIDgzIDg4IDRE
IDM0IDQ1IDQzIDYyIDAwIDYzIDcwICA9Li5iYXAuLk00RUNiLmNwCiAgICA3M0EwOiA4MyA4OCA2
MyAwMCAwMCA2NCA3MCA4MyA4OCA2NCAwMCAwMCA2NSA3MCAwMSA2NiAgLi5jLi5kcC4uZC4uZXAu
ZgogICAgNzNCMDogQTIgMTQgOTIgOTQgNjYgNjUgQTAgMEMgOTMgODMgODggNjQgNjYgMDAgNjAg
NzAgIC4uLi5mZS4uLi4uZGYuYHAKICAgIDczQzA6IDAxIDY3IEE1IDc1IDY2IEEwIDA1IDkzIDAx
IDY3IEE1IDc1IDYyIEEwIDA2IDk0ICAuZy51Zi4uLi5nLnViLi4uCiAgICA3M0QwOiA2MiA2MSBB
NCAwMCA3MCAwMSA2MiA3MCA4NyA2MyA2MSBBMiA0QyAwNyAwMSA3MCAgYmEuLnAuYnAuY2EuTC4u
cAogICAgNzNFMDogOTkgNjggMDAgNUYgNTQgNUYgMzAgQTAgMEYgOTMgNUYgNTQgNUYgMzAgMDAg
NzAgIC5oLl9UXzAuLi5fVF8wLnAKICAgIDczRjA6IDBEIDQ5IDMyIDQzIDMwIDAwIDYwIEExIDRG
IDA1IEEwIDBGIDkzIDVGIDU0IDVGICAuSTJDMC5gLk8uLi4uX1RfCiAgICA3NDAwOiAzMCAwMSA3
MCAwRCA0OSAzMiA0MyAzMSAwMCA2MCBBMSA0QyAwNCBBMCAxMCA5MyAgMC5wLkkyQzEuYC5MLi4u
LgogICAgNzQxMDogNUYgNTQgNUYgMzAgMEEgMDIgNzAgMEQgNDkgMzIgNDMgMzIgMDAgNjAgQTEg
MzggIF9UXzAuLnAuSTJDMi5gLjgKICAgIDc0MjA6IEEwIDEwIDkzIDVGIDU0IDVGIDMwIDBBIDAz
IDcwIDBEIDQ5IDMyIDQzIDMzIDAwICAuLi5fVF8wLi5wLkkyQzMuCiAgICA3NDMwOiA2MCBBMSAy
NSBBMCAxMCA5MyA1RiA1NCA1RiAzMCAwQSAwNCA3MCAwRCA0OSAzMiAgYC4lLi4uX1RfMC4ucC5J
MgogICAgNzQ0MDogNDMgMzQgMDAgNjAgQTEgMTIgQTAgMTAgOTMgNUYgNTQgNUYgMzAgMEEgMDUg
NzAgIEM0LmAuLi4uLl9UXzAuLnAKICAgIDc0NTA6IDBEIDQ5IDMyIDQzIDM1IDAwIDYwIEE1IEEy
IDFCIDkyIDk0IDYyIDYxIDcwIDgzICAuSTJDNS5gLi4uLi5iYXAuCiAgICA3NDYwOiA4OCA2MyA2
MiAwMCA2NCA3MCA4MyA4OCA2NCAwMCAwMCA2NSBBMCAwNSA5MyA2NSAgLmNiLmRwLi5kLi5lLi4u
ZQogICAgNzQ3MDogNjAgQTUgNzUgNjIgQTAgMDYgOTQgNjIgNjEgQTQgMDAgNzAgODMgODggNjQg
MDEgIGAudWIuLi5iYS4ucC4uZC4KICAgIDc0ODA6IDAwIDREIDM0IDQ1IDM3IDcwIDgzIDg4IDY0
IDBBIDAyIDAwIDREIDM0IDQ1IDM4ICAuTTRFN3AuLmQuLi5NNEU4CiAgICA3NDkwOiA3MCA4MyA4
OCA2NCAwQSAwMyAwMCA0RCAzNCA0NSAzOSA3MCA4MyA4OCA2NCAwQSAgcC4uZC4uLk00RTlwLi5k
LgogICAgNzRBMDogMDQgMDAgNEQgMzQgNDUgNDEgNzAgODMgODggNjQgMEEgMDUgMDAgNEQgMzQg
NDUgIC4uTTRFQXAuLmQuLi5NNEUKICAgIDc0QjA6IDQyIEE0IDAxIDE0IDQ2IDY5IDREIDM0IDQ1
IDMwIDBEIDcwIDREIDM0IDQ1IDM2ICBCLi4uRmlNNEUwLnBNNEU2CiAgICA3NEMwOiA2OCA2MCBB
MCAwOCA5MyA2MCAwMCBBNCAwQiAwMCBGRiAwOCA1MiA1NCA0NiA0NiAgaGAuLi5gLi4uLi4uUlRG
RgogICAgNzREMDogMTEgMDUgMEIgMDAgMDEgMDAgNzAgNEQgMzQgNDUgNDEgNjAgNzAgNEQgMzQg
NDUgIC4uLi4uLnBNNEVBYHBNNEUKICAgIDc0RTA6IDQyIDYxIDVCIDgwIDU2IDQxIDUyIDMwIDAw
IDYwIDBBIDAyIDVCIDgxIDJFIDU2ICBCYVsuVkFSMC5gLi5bLi5WCiAgICA3NEYwOiA0MSA1MiAz
MCAwMSA0MSA0NCA1NCA0NCAwMiA0MSA0NCA1MCA1MyAwMSA0MSA0NCAgQVIwLkFEVEQuQURQUy5B
RAogICAgNzUwMDogNTAgNDQgMDEgNDEgNDQgNTMgNEYgMDEgNDEgNDQgNTMgNDMgMDEgNDEgNDQg
NTMgIFBELkFEU08uQURTQy5BRFMKICAgIDc1MTA6IDUyIDAxIDQxIDQ0IDQ5IDUzIDAxIDQxIDQ0
IDQ0IDUzIDAzIDVCIDgwIDU2IDQxICBSLkFESVMuQUREUy5bLlZBCiAgICA3NTIwOiA1MiAzMSAw
MCA2MSAwQiAwMCAwMSA1QiA4MSA0QyAwOCA1NiA0MSA1MiAzMSAwMyAgUjEuYS4uLlsuTC5WQVIx
LgogICAgNzUzMDogNDkgNDMgMzAgMzAgMjAgNDkgNDMgMzAgMzQgMjAgMDAgNDAgMDQgNDkgNDMg
MzEgIElDMDAgSUMwNCAuQC5JQzEKICAgIDc1NDA6IDMwIDIwIDQ5IDQzIDMxIDM0IDIwIDQ5IDQz
IDMxIDM4IDIwIDQ5IDQzIDMxIDQzICAwIElDMTQgSUMxOCBJQzFDCiAgICA3NTUwOiAyMCA0OSA0
MyAzMiAzMCAyMCAwMCA0MCAwNiA0OSA0MyAzMyAzMCAyMCA0OSA0MyAgIElDMjAgLkAuSUMzMCBJ
QwogICAgNzU2MDogMzMgMzQgMjAgNDkgNDMgMzMgMzggMjAgNDkgNDMgMzMgNDMgMjAgNDkgNDMg
MzQgIDM0IElDMzggSUMzQyBJQzQKICAgIDc1NzA6IDMwIDIwIDQ5IDQzIDM0IDM0IDIwIDQ5IDQz
IDM0IDM4IDIwIDAwIDQwIDA0IDQ5ICAwIElDNDQgSUM0OCAuQC5JCiAgICA3NTgwOiA0MyAzNSAz
NCAyMCAwMCA0MCAwQSA0OSA0MyAzNiA0MyAyMCA0OSA0MyAzNyAzMCAgQzU0IC5ALklDNkMgSUM3
MAogICAgNzU5MDogMjAgNDkgNDMgMzcgMzQgMjAgNDkgNDMgMzcgMzggMjAgNDkgNDMgMzcgNDMg
MjAgICBJQzc0IElDNzggSUM3QyAKICAgIDc1QTA6IDQ5IDQzIDM4IDMwIDIwIDAwIDQwIDBDIDQ5
IDQzIDM5IDQzIDIwIDAwIDQwIDJBICBJQzgwIC5ALklDOUMgLkAqCiAgICA3NUIwOiA0OSA0MyA0
NiAzNCAyMCAwOCA0MiA1NSA0NiA0NiAxMSAwNiAwQSAwMyAwMCAwMCAgSUNGNCAuQlVGRi4uLi4u
LgogICAgNzVDMDogMDAgOEMgNDIgNTUgNDYgNDYgMDAgNDEgNEYgNDEgNDMgOEMgNDIgNTUgNDYg
NDYgIC4uQlVGRi5BT0FDLkJVRkYKICAgIDc1RDA6IDAxIDQ5IDUzIDQzIDRDIDhDIDQyIDU1IDQ2
IDQ2IDBBIDAyIDQ5IDUzIDQ0IDQxICAuSVNDTC5CVUZGLi5JU0RBCiAgICA3NUUwOiA1QiAyMyA0
RCAzNCA0NSAzNSBGRiBGRiA3MCAwQyBBMCA4NiAwMSAwMCA2MSA3MCAgWyNNNEU1Li5wLi4uLi5h
cAogICAgNzVGMDogMDAgNjAgNzAgNDEgNDQgNTQgNDQgNDEgNEYgNDEgNDMgNzAgNEQgMzAgMzEg
MzEgIC5gcEFEVERBT0FDcE0wMTEKICAgIDc2MDA6IDBDIDAwIDBEIEQ4IEZFIDREIDM0IDQ1IDM3
IDAwIDBBIDA4IDQ5IDUzIDQzIDRDICAuLi4uLk00RTcuLi5JU0NMCiAgICA3NjEwOiA3MCA0RCAz
MCAzMSAzMSAwQyAwMCAwRCBEOCBGRSA0RCAzNCA0NSAzOCAwMCAwQSAgcE0wMTEuLi4uLk00RTgu
LgogICAgNzYyMDogMDggNDkgNTMgNDQgNDEgNEQgMzAgMzEgMzIgMEMgMDAgMEQgRDggRkUgNEQg
MzQgIC5JU0RBTTAxMi4uLi4uTTQKICAgIDc2MzA6IDQ1IDM3IDAwIDBBIDA4IDREIDM0IDQ1IDM5
IDREIDMwIDMxIDMyIDBDIDAwIDBEICBFNy4uLk00RTlNMDEyLi4uCiAgICA3NjQwOiBEOCBGRSA0
RCAzNCA0NSAzOCAwMCAwQSAwOCA0RCAzNCA0NSAzOSA3MCA0MSA0RiAgLi5NNEU4Li4uTTRFOXBB
TwogICAgNzY1MDogNDEgNDMgNjIgQTAgMzUgOTMgNjIgMEEgMDMgNzAgMDAgNDEgNDQgNTQgNDQg
NzAgIEFDYi41LmIuLnAuQURURHAKICAgIDc2NjA6IDAxIDQxIDQ0IDUwIDQ0IDcwIDQxIDQ0IDQ0
IDUzIDYzIEEyIDFEIDkyIDkzIDYzICAuQURQRHBBRERTYy4uLi5jCiAgICA3NjcwOiAwQSAwNyA3
NiA2MSA1QiAyMSAwQSAwQSA3MCA0MSA0NCA0NCA1MyA2MyBBMCAwQSAgLi52YVshLi5wQUREU2Mu
LgogICAgNzY4MDogOTMgNjEgMDAgNzAgMEIgMDEgRkYgNjAgQTUgQTAgNDcgMDUgOTMgNjAgMDAg
NzAgIC5hLnAuLi5gLi5HLi5gLnAKICAgIDc2OTA6IDQ5IDQzIDM3IDMwIDYyIEEyIDRCIDA0IDkz
IDBBIDIwIDdCIDYyIDBBIDIwIDAwICBJQzcwYi5LLi4uIHtiLiAuCiAgICA3NkEwOiBBMCAzNCA5
MyA2MSAwMCA0RCAzNCAzNiAzMCAwRCAyMCAyMCA0OSAzMiA2MyA1NCAgLjQuYS5NNDYwLiAgSTJj
VAogICAgNzZCMDogNjkgNkQgNjUgNkYgNzUgNzQgMjAgNjYgNkYgNzIgMjAgNDkgNDQgNDUgMjAg
M0EgIGltZW91dCBmb3IgSURFIDoKICAgIDc2QzA6IDIwIDI4IDMwIDc4IDI1IDU4IDI5IDBBIDAw
IDYyIDAwIDAwIDAwIDAwIDAwIDcwICAgKDB4JVgpLi5iLi4uLi5wCiAgICA3NkQwOiAwQiAwMiBG
RiA2MCBBNSA3MCA0OSA0MyAzNyAzMCA2MiA3NiA2MSA1QiAyMSAwQSAgLi4uYC5wSUM3MGJ2YVsh
LgogICAgNzZFMDogMEEgQTAgNDQgMDYgOTMgNjAgMDAgNzAgMDAgNDkgNDMgMzYgNDMgNzAgNDkg
NDMgIC4uRC4uYC5wLklDNkNwSUMKICAgIDc2RjA6IDM5IDQzIDYyIEEyIDQyIDA1IDkyIDkzIDAw
IDdCIDYyIDAxIDAwIEEwIDNDIDkzICA5Q2IuQi4uLi57Yi4uLjwuCiAgICA3NzAwOiA2MSAwMCA0
RCAzNCAzNiAzMCAwRCAyMCAyMCA0OSAzMiA2MyA1NCA2OSA2RCA2NSAgYS5NNDYwLiAgSTJjVGlt
ZQogICAgNzcxMDogNkYgNzUgNzQgMjAgNjYgNkYgNzIgMjAgNjYgNDkgMzIgNjMgNDQgNjkgNzMg
NjEgIG91dCBmb3IgZkkyY0Rpc2EKICAgIDc3MjA6IDYyIDZDIDY1IDIwIDNBIDIwIDI4IDMwIDc4
IDI1IDU4IDI5IDBBIDAwIDYyIDAwICBibGUgOiAoMHglWCkuLmIuCiAgICA3NzMwOiAwMCAwMCAw
MCAwMCA3MCAwQiAwMyBGRiA2MCBBNSA3MCA0OSA0MyAzOSA0MyA2MiAgLi4uLnAuLi5gLnBJQzlD
YgogICAgNzc0MDogNzYgNjEgNUIgMjEgMEEgMEEgQTAgNEEgMDQgOTMgNjAgMDAgNzAgMEEgNjMg
NDkgIHZhWyEuLi5KLi5gLnAuY0kKICAgIDc3NTA6IDQzIDMwIDMwIDcwIDY5IDQ5IDQzIDMwIDM0
IDcwIDBCIDg1IDAyIDQ5IDQzIDMxICBDMDBwaUlDMDRwLi4uSUMxCiAgICA3NzYwOiAzNCA3MCAw
QiA1NyAwMyA0OSA0MyAzMSAzOCA3MCAwQyA0MCAwMCA0MCAwMCA0OSAgNHAuVy5JQzE4cC5ALkAu
SQogICAgNzc3MDogNDMgMzcgNDMgNzAgMDAgNDkgNDMgMzMgMzggNzAgMDAgNDkgNDMgMzMgMzQg
NzAgIEM3Q3AuSUMzOHAuSUMzNHAKICAgIDc3ODA6IDAwIDQ5IDQzIDMzIDMwIDcwIDQ5IDQzIDM0
IDMwIDYyIDcwIDQ5IDQzIDM1IDM0ICAuSUMzMHBJQzQwYnBJQzU0CiAgICA3NzkwOiA2MiBBMCA0
MSAwNiA5MyA2MCAwMCA3MCAwMSA0OSA0MyAzNiA0MyA3MCA0OSA0MyAgYi5BLi5gLnAuSUM2Q3BJ
QwogICAgNzdBMDogMzkgNDMgNjIgQTIgNEYgMDQgOTMgMDAgN0IgNjIgMDEgMDAgQTAgM0EgOTMg
NjEgIDlDYi5PLi4ue2IuLi46LmEKICAgIDc3QjA6IDAwIDREIDM0IDM2IDMwIDBEIDIwIDIwIDQ5
IDMyIDYzIDU0IDY5IDZEIDY1IDZGICAuTTQ2MC4gIEkyY1RpbWVvCiAgICA3N0MwOiA3NSA3NCAy
MCA2NiA2RiA3MiAyMCA0OSAzMiA2MyA0NSA2RSA2MSA2MiA2QyA2NSAgdXQgZm9yIEkyY0VuYWJs
ZQogICAgNzdEMDogMjAgM0EgMjAgMjggMzAgNzggMjUgNTggMjkgMEEgMDAgNjIgMDAgMDAgMDAg
MDAgICA6ICgweCVYKS4uYi4uLi4KICAgIDc3RTA6IDAwIDcwIDBCIDA0IEZGIDYwIEE1IDcwIDQ5
IDQzIDM5IDQzIDYyIDc2IDYxIDVCICAucC4uLmAucElDOUNidmFbCiAgICA3N0YwOiAyMSAwQSAw
QSBBMCA0MCAxRSA5MyA2MCAwMCA3MCA2QiA2MyA3MCA2QSA2NCA3MCAgIS4uLkAuLmAucGtjcGpk
cAogICAgNzgwMDogMDAgNjUgNzAgMDAgNjYgNzAgMEEgMDIgNjcgQTIgNEEgMUMgOTQgNzIgNjMg
NjQgIC5lcC5mcC4uZy5KLi5yY2QKICAgIDc4MTA6IDAwIDAwIEEwIDNBIDkzIDYxIDAwIDREIDM0
IDM2IDMwIDBEIDIwIDIwIDQ5IDMyICAuLi46LmEuTTQ2MC4gIEkyCiAgICA3ODIwOiA2MyA1NCA2
OSA2RCA2NSA2RiA3NSA3NCAyMCA2NiA2RiA3MiAyMCA1NCA3OCA1MiAgY1RpbWVvdXQgZm9yIFR4
UgogICAgNzgzMDogNzggM0EgMjAgMjggMzAgNzggMjUgNTggMkMgMjAgMzAgNzggMjUgNTggMjkg
MEEgIHg6ICgweCVYLCAweCVYKS4KICAgIDc4NDA6IDAwIDYzIDY0IDAwIDAwIDAwIDAwIDcwIDBC
IDA2IEZGIDYwIEE1IDcwIDQ5IDQzICAuY2QuLi4ucC4uLmAucElDCiAgICA3ODUwOiAzNyAzMCA2
MiBBMCAxNiA5MiA5MyA3QiA2MiAwQSAwOCAwMCAwMCA3MCA0OSA0MyAgNzBiLi4uLntiLi4uLnBJ
QwogICAgNzg2MDogMzEgMzAgNjIgNzYgNjEgNUIgMjEgMEEgMEEgOUYgNzAgNDkgNDMgMzcgMzQg
NjIgIDEwYnZhWyEuLi5wSUM3NGIKICAgIDc4NzA6IEEwIDBDIDkyIDkzIDYyIDAwIDc2IDYxIDVC
IDIxIDBBIDBBIDlGIEEwIDE4IDk0ICAuLi4uYi52YVshLi4uLi4uCiAgICA3ODgwOiA2MyAwMSA3
MCA3QiA5OSA4MyA4OCA2QyA2NSAwMCAwMCAwQSBGRiAwMCA0OSA0MyAgYy5wey4uLmxlLi4uLi5J
QwogICAgNzg5MDogMzEgMzAgNzYgNjMgNzUgNjUgQTEgNDUgMDcgQTAgMUQgOTAgOTMgNjMgMDEg
OTIgIDEwdmN1ZS5FLi4uLi5jLi4KICAgIDc4QTA6IDkzIDY0IDAwIDcwIDdCIDk5IDgzIDg4IDZD
IDY1IDAwIDAwIDBBIEZGIDAwIDQ5ICAuZC5wey4uLmxlLi4uLi5JCiAgICA3OEIwOiA0MyAzMSAz
MCA3NiA2MyA3NSA2NSBBMSA0NCAwNSBBMCAyMSA5MCA5MyA2MyAwMSAgQzEwdmN1ZS5ELi4hLi5j
LgogICAgNzhDMDogOTMgNjQgMDAgNzAgN0QgN0IgOTkgODMgODggNkMgNjUgMDAgMDAgMEEgRkYg
MDAgIC5kLnB9ey4uLmxlLi4uLi4KICAgIDc4RDA6IDBCIDAwIDAyIDAwIDQ5IDQzIDMxIDMwIDc2
IDYzIDc1IDY1IEExIDJGIEEwIDE1ICAuLi4uSUMxMHZjdWUuLy4uCiAgICA3OEUwOiA5MCA5MyA2
MyAwMCA5NCA2NCAwMSA3MCAwQiAwMCAwMSA0OSA0MyAzMSAzMCA3MCAgLi5jLi5kLnAuLi5JQzEw
cAogICAgNzhGMDogMDEgNjYgNzYgNjQgQTEgMTcgQTAgMTUgOTAgOTMgNjMgMDAgOTMgNjQgMDEg
NzAgIC5mdmQuLi4uLi5jLi5kLnAKICAgIDc5MDA6IDBCIDAwIDAzIDQ5IDQzIDMxIDMwIDcwIDAx
IDY2IDc2IDY0IDc2IDYxIDVCIDIxICAuLi5JQzEwcC5mdmR2YVshCiAgICA3OTEwOiAwQSAwQSA3
MCA0OSA0MyAzMyAzNCA2MiBBMCA0NCAwNCA5MiA5MyAwMCA3QiA2MiAgLi5wSUMzNGIuRC4uLi57
YgogICAgNzkyMDogMEEgNDAgMDAgNzAgNDkgNDMgMzUgMzQgNjcgNzAgNDkgNDMgMzggMzAgNjIg
NEQgIC5ALnBJQzU0Z3BJQzgwYk0KICAgIDc5MzA6IDM0IDM2IDMwIDBEIDIwIDIwIDQ5IDMyIDYz
IDU0IDU4IDIwIDQxIDYyIDcyIDc0ICA0NjAuICBJMmNUWCBBYnJ0CiAgICA3OTQwOiAyMCA1MyA2
RiA3NSA3MiA2MyA2NSAzQSAyMCAyOCAzMCA3OCAyNSA1OCAyOSAwQSAgIFNvdXJjZTogKDB4JVgp
LgogICAgNzk1MDogMDAgNjIgMDAgMDAgMDAgMDAgMDAgNzAgMEIgMDUgRkYgNjAgQTUgQTAgNDgg
MDUgIC5iLi4uLi5wLi4uYC4uSC4KICAgIDc5NjA6IDkyIDkzIDY2IDAwIDcwIDQ5IDQzIDM3IDMw
IDYyIEEyIDRCIDA0IDkyIDkzIDdCICAuLmYucElDNzBiLksuLi57CiAgICA3OTcwOiA2MiAwQSAw
OCAwMCAwQSAwOCA3MCA0OSA0MyAzNyAzMCA2MiBBMCAzMyA5MyA2MSAgYi4uLi4ucElDNzBiLjMu
YQogICAgNzk4MDogMDAgNEQgMzQgMzYgMzAgMEQgMjAgMjAgNDkgMzIgNjMgNTQgNjkgNkQgNjUg
NkYgIC5NNDYwLiAgSTJjVGltZW8KICAgIDc5OTA6IDc1IDc0IDIwIDY2IDZGIDcyIDIwIDUyIDc4
IDIwIDNBIDIwIDI4IDMwIDc4IDI1ICB1dCBmb3IgUnggOiAoMHglCiAgICA3OUEwOiA1OCAyOSAw
QSAwMCA2MiAwMCAwMCAwMCAwMCAwMCA3MCAwQiAwNyBGRiA2MCBBNSAgWCkuLmIuLi4uLnAuLi5g
LgogICAgNzlCMDogNzYgNjEgNUIgMjEgMEEgMEEgQTAgMUQgOTIgOTMgNjYgMDAgNzAgNDkgNDMg
MzEgIHZhWyEuLi4uLi5mLnBJQzEKICAgIDc5QzA6IDMwIDYyIDcwIDYyIDg4IDUyIDU0IDQ2IDQ2
IDY3IDAwIDc2IDYxIDVCIDIxIDBBICAwYnBiLlJURkZnLnZhWyEuCiAgICA3OUQwOiAxNCA3MCAw
MCA2NiA1QiAyNyA0RCAzNCA0NSAzNSBBMCA0OCAwNSA5MyA2MCAwMCAgLnAuZlsnTTRFNS5ILi5g
LgogICAgNzlFMDogNzAgNDkgNDMgMzcgMzAgNjIgQTIgNEMgMDQgOTMgMEEgMjAgN0IgNjIgMEEg
MjAgIHBJQzcwYi5MLi4uIHtiLiAKICAgIDc5RjA6IDAwIEEwIDM1IDkzIDYxIDAwIDREIDM0IDM2
IDMwIDBEIDIwIDIwIDQ5IDMyIDYzICAuLjUuYS5NNDYwLiAgSTJjCiAgICA3QTAwOiA1NCA2OSA2
RCA2NSA2RiA3NSA3NCAyMCA2NiA2RiA3MiAyMCA0OSA0NCA0NSAzMiAgVGltZW91dCBmb3IgSURF
MgogICAgN0ExMDogMjAgM0EgMjAgMjggMzAgNzggMjUgNTggMjkgMEEgMDAgNjIgMDAgMDAgMDAg
MDAgICA6ICgweCVYKS4uYi4uLi4KICAgIDdBMjA6IDAwIDcwIDBCIDA4IEZGIDYwIEE1IDcwIDQ5
IDQzIDM3IDMwIDYyIDc2IDYxIDVCICAucC4uLmAucElDNzBidmFbCiAgICA3QTMwOiAyMSAwQSAw
QSBBMCA0QyAwNiA5MCA5NCA2MCAwQiAwNCBGRiA5NSA2MCAwQiAwOCAgIS4uLkwuLi5gLi4uLmAu
LgogICAgN0E0MDogRkYgNzAgMDAgNDkgNDMgMzYgNDMgNzAgNDkgNDMgMzkgNDMgNjIgQTIgNDIg
MDUgIC5wLklDNkNwSUM5Q2IuQi4KICAgIDdBNTA6IDkyIDkzIDAwIDdCIDYyIDAxIDAwIEEwIDND
IDkzIDYxIDAwIDREIDM0IDM2IDMwICAuLi57Yi4uLjwuYS5NNDYwCiAgICA3QTYwOiAwRCAyMCAy
MCA0OSAzMiA2MyA1NCA2OSA2RCA2NSA2RiA3NSA3NCAyMCA2NiA2RiAgLiAgSTJjVGltZW91dCBm
bwogICAgN0E3MDogNzIgMjAgNjYgNDkgMzIgNjMgNDQgNjkgNzMgNjEgNjIgNkMgNjUgMjAgM0Eg
MjAgIHIgZkkyY0Rpc2FibGUgOiAKICAgIDdBODA6IDI4IDMwIDc4IDI1IDU4IDI5IDBBIDAwIDYy
IDAwIDAwIDAwIDAwIDAwIDcwIDBCICAoMHglWCkuLmIuLi4uLnAuCiAgICA3QTkwOiAwOSBGRiA2
MCBBNSA3MCA0OSA0MyAzOSA0MyA2MiA3NiA2MSA1QiAyMSAwQSAwQSAgLi5gLnBJQzlDYnZhWyEu
LgogICAgN0FBMDogNzAgNDEgNEYgNDEgNDMgNjMgQTAgNDYgMDYgOTMgNjMgMEEgMDMgNzAgMDAg
NDEgIHBBT0FDYy5GLi5jLi5wLkEKICAgIDdBQjA6IDQ0IDUwIDQ0IDcwIDQxIDQ0IDQ0IDUzIDYy
IEEyIDRDIDA0IDkyIDkzIDYyIDAwICBEUERwQUREU2IuTC4uLmIuCiAgICA3QUMwOiBBMCAzOSA5
MyA2MSAwMCA0RCAzNCAzNiAzMCAwRCAyMCAyMCA0OSAzMiA2MyA1NCAgLjkuYS5NNDYwLiAgSTJj
VAogICAgN0FEMDogNjkgNkQgNjUgNkYgNzUgNzQgMjAgNjYgNkYgNzIgMjAgNDEgNEYgNDEgNDMg
MjAgIGltZW91dCBmb3IgQU9BQyAKICAgIDdBRTA6IDRGIDY2IDY2IDIwIDNBIDIwIDI4IDMwIDc4
IDI1IDU4IDI5IDBBIDAwIDYyIDAwICBPZmYgOiAoMHglWCkuLmIuCiAgICA3QUYwOiAwMCAwMCAw
MCAwMCA3MCAwQiAxMCBGRiA2MCBBNSA3NiA2MSA1QiAyMSAwQSAwQSAgLi4uLnAuLi5gLnZhWyEu
LgogICAgN0IwMDogNzAgNDEgNDQgNDQgNTMgNjIgNzAgMEEgMDMgNDEgNDQgNTQgNDQgNEQgMzAg
MzEgIHBBRERTYnAuLkFEVERNMDEKICAgIDdCMTA6IDMyIDBDIDAwIDBEIEQ4IEZFIDREIDM0IDQ1
IDM3IDAwIDBBIDA4IDQ5IDUzIDQzICAyLi4uLi5NNEU3Li4uSVNDCiAgICA3QjIwOiA0QyA0RCAz
MCAzMSAzMiAwQyAwMCAwRCBEOCBGRSA0RCAzNCA0NSAzOCAwMCAwQSAgTE0wMTIuLi4uLk00RTgu
LgogICAgN0IzMDogMDggNDkgNTMgNDQgNDEgOEIgNTIgNTQgNDYgNDYgMDAgNTMgNTQgNDEgNTQg
NzAgIC5JU0RBLlJURkYuU1RBVHAKICAgIDdCNDA6IDYwIDUzIDU0IDQxIDU0IEE0IDUyIDU0IDQ2
IDQ2IDE0IDQ2IDA5IDREIDM0IDQ1ICBgU1RBVC5SVEZGLkYuTTRFCiAgICA3QjUwOiAzMSAwQiAw
OCA1MiA1NCA0NiA0NiAxMSAwNSAwQiAwMCAwMSAwMCAwOCA1NyA1MiAgMS4uUlRGRi4uLi4uLi5X
UgogICAgN0I2MDogNDYgNDYgMTEgMDMgMDEgMDAgOEMgNTcgNTIgNDYgNDYgMDAgNTcgNDQgNDEg
NTQgIEZGLi4uLi5XUkZGLldEQVQKICAgIDdCNzA6IDcwIDZBIDU3IDQ0IDQxIDU0IDcwIDREIDM0
IDQ1IDMwIDY4IDY5IDAxIDAxIDU3ICBwaldEQVRwTTRFMGhpLi5XCiAgICA3QjgwOiA1MiA0NiA0
NiA1MiA1NCA0NiA0NiA4QiA1MiA1NCA0NiA0NiAwMCA1MyA1NCA0MSAgUkZGUlRGRi5SVEZGLlNU
QQogICAgN0I5MDogNTQgOEMgNTIgNTQgNDYgNDYgMEEgMDIgNTIgNDQgNDEgNTQgNzAgNTMgNTQg
NDEgIFQuUlRGRi4uUkRBVHBTVEEKICAgIDdCQTA6IDU0IDYwIDcwIDUyIDQ0IDQxIDU0IDYxIDRE
IDM0IDM2IDMwIDBEIDIwIDIwIDUyICBUYHBSREFUYU00NjAuICBSCiAgICA3QkIwOiA2NSA2MSA2
NCAyMCA0OSAzMiA0MyAyMCA0MiA3OSA3NCA2NSAyMCAyOCAzMCA3OCAgZWFkIEkyQyBCeXRlICgw
eAogICAgN0JDMDogMjUgNTggMkMgMjAgMzAgNzggMjUgNTggMjkgMEEgMDAgNjAgNjEgMDAgMDAg
MDAgICVYLCAweCVYKS4uYGEuLi4KICAgIDdCRDA6IDAwIEEwIDBEIDkzIDYwIDAwIEE0IDdCIDUy
IDQ0IDQxIDU0IDBBIEZGIDAwIEE0ICAuLi4uYC4ue1JEQVQuLi4uCiAgICA3QkUwOiAwMCAxNCA0
NSAwNyA0RCAzNCA0NSAzMiAwQyAwOCA1NyA1MiA0NiA0NiAxMSAwNSAgLi5FLk00RTIuLldSRkYu
LgogICAgN0JGMDogMEEgMDIgMDAgMDAgOEMgNTcgNTIgNDYgNDYgMDAgNTcgNDQgNDEgMzEgOEMg
NTcgIC4uLi4uV1JGRi5XREExLlcKICAgIDdDMDA6IDUyIDQ2IDQ2IDAxIDU3IDQ0IDQxIDMyIDcw
IDZBIDU3IDQ0IDQxIDMxIDcwIDdCICBSRkYuV0RBMnBqV0RBMXB7CiAgICA3QzEwOiA2QiAwQSBG
RiAwMCA1NyA0NCA0MSAzMiA3MCA0RCAzNCA0NSAzMCA2OCA2OSAwMCAgay4uLldEQTJwTTRFMGhp
LgogICAgN0MyMDogMEEgMDIgNTcgNTIgNDYgNDYgNjAgOEIgNjAgMDAgNTMgNTQgNDEgNTQgNzAg
NTMgIC4uV1JGRmAuYC5TVEFUcFMKICAgIDdDMzA6IDU0IDQxIDU0IDYxIDREIDM0IDM2IDMwIDBE
IDIwIDIwIDU3IDcyIDY5IDc0IDY1ICBUQVRhTTQ2MC4gIFdyaXRlCiAgICA3QzQwOiAyMCA0OSAz
MiA0MyAyMCA0MiA3OSA3NCA2NSAyOCAzMCA3OCAyNSA1OCAyOSAwQSAgIEkyQyBCeXRlKDB4JVgp
LgogICAgN0M1MDogMDAgNjEgMDAgMDAgMDAgMDAgMDAgMTAgNDcgMDggNUMgMkUgNUYgNTMgNDIg
NUYgIC5hLi4uLi4uRy5cLl9TQl8KICAgIDdDNjA6IDQ3IDUwIDQ5IDRGIDE0IDRBIDA3IDU4IDQ5
IDRFIDQ5IDAwIDREIDM0IDM2IDMwICBHUElPLkouWElOSS5NNDYwCiAgICA3QzcwOiAwRCAyMCAy
MCA0QiA0NSA1MiAyRCA0MSA1MyA0QyAyRCA1QyA1RiA1MyA0MiAyRSAgLiAgS0VSLUFTTC1cX1NC
LgogICAgN0M4MDogNDcgNTAgNDkgNEYgMkUgNUYgNDkgNEUgNDkgMjAgNTMgNzQgNjEgNzIgNzQg
MEEgIEdQSU8uX0lOSSBTdGFydC4KICAgIDdDOTA6IDAwIDAwIDAwIDAwIDAwIDAwIDAwIEEwIDFF
IDkyIDkzIDREIDM0IDQ2IDMwIDAwICAuLi4uLi4uLi4uLk00RjAuCiAgICA3Q0EwOiA0RCAzNCA0
NiAzMSAwMCA0RCAzNCA0NiAzMSAwMSA0RCAzNCA0NiAzMSAwQSAwMiAgTTRGMS5NNEYxLk00RjEu
LgogICAgN0NCMDogNEQgMzQgNDYgMzEgMEEgMDMgNEQgMzQgMzYgMzAgMEQgMjAgMjAgNEIgNDUg
NTIgIE00RjEuLk00NjAuICBLRVIKICAgIDdDQzA6IDJEIDQxIDUzIDRDIDJEIDVDIDVGIDUzIDQy
IDJFIDQ3IDUwIDQ5IDRGIDJFIDVGICAtQVNMLVxfU0IuR1BJTy5fCiAgICA3Q0QwOiA0OSA0RSA0
OSAyMCA0NSA2RSA2NCAwQSAwMCAwMCAwMCAwMCAwMCAwMCAwMCAxMCAgSU5JIEVuZC4uLi4uLi4u
LgogICAgN0NFMDogOEQgOTAgMDEgNUMgNUYgNDcgNTAgNDUgMTQgNEUgNUMgNTMgNDkgNDUgMzAg
MDggIC4uLlxfR1BFLk5cU0lFMC4KICAgIDdDRjA6IDREIDM0IDM2IDMwIDBEIDIwIDIwIDRCIDQ1
IDUyIDJEIDQxIDUzIDRDIDJEIDVDICBNNDYwLiAgS0VSLUFTTC1cCiAgICA3RDAwOiA1RiA0NyA1
MCA0NSAyRSA1MyA0OSA0NSAzMCAyMCA1MyA3NCA2MSA3MiA3NCAwQSAgX0dQRS5TSUUwIFN0YXJ0
LgogICAgN0QxMDogMDAgMDAgMDAgMDAgMDAgMDAgMDAgQTAgNDIgMDQgNUIgMTIgNUMgMkUgNUYg
NDcgIC4uLi4uLi4uQi5bLlwuX0cKICAgIDdEMjA6IDUwIDQ1IDQyIDQ5IDQ1IDMwIDAwIDREIDM0
IDM2IDMwIDBEIDIwIDIwIDRCIDQ1ICBQRUJJRTAuTTQ2MC4gIEtFCiAgICA3RDMwOiA1MiAyRCA0
MSA1MyA0QyAyRCA0MyA2MSA2QyA2QyA2RiA3NSA3NCAyMCA1QyA1RiAgUi1BU0wtQ2FsbG91dCBc
XwogICAgN0Q0MDogNDcgNTAgNDUgMkUgNDIgNDkgNDUgMzAgMEEgMDAgMDAgMDAgMDAgMDAgMDAg
MDAgIEdQRS5CSUUwLi4uLi4uLi4KICAgIDdENTA6IDVDIDJFIDVGIDQ3IDUwIDQ1IDQyIDQ5IDQ1
IDMwIDcwIDREIDM0IDQ2IDMxIDAwICBcLl9HUEVCSUUwcE00RjEuCiAgICA3RDYwOiA2MCBBMCA0
QiAwNCA5MyA3QiA2MCAwMSAwMCAwMSBBMCA0MiAwNCA1QiAxMiA1QyAgYC5LLi57YC4uLi5CLlsu
XAogICAgN0Q3MDogMkUgNUYgNDcgNTAgNDUgNTMgNTAgMzAgMzAgMDAgNEQgMzQgMzYgMzAgMEQg
MjAgIC5fR1BFU1AwMC5NNDYwLiAKICAgIDdEODA6IDIwIDRCIDQ1IDUyIDJEIDQxIDUzIDRDIDJE
IDQzIDYxIDZDIDZDIDZGIDc1IDc0ICAgS0VSLUFTTC1DYWxsb3V0CiAgICA3RDkwOiAyMCA1QyA1
RiA0NyA1MCA0NSAyRSA1MyA1MCAzMCAzMCAwQSAwMCAwMCAwMCAwMCAgIFxfR1BFLlNQMDAuLi4u
LgogICAgN0RBMDogMDAgMDAgMDAgNUMgMkUgNUYgNDcgNTAgNDUgNTMgNTAgMzAgMzAgQTAgNEQg
MDQgIC4uLlwuX0dQRVNQMDAuTS4KICAgIDdEQjA6IDkzIDdCIDYwIDBBIDAyIDAwIDBBIDAyIEEw
IDQyIDA0IDVCIDEyIDVDIDJFIDVGICAue2AuLi4uLi5CLlsuXC5fCiAgICA3REMwOiA0NyA1MCA0
NSA1MyA1MCAzMCAzMSAwMCA0RCAzNCAzNiAzMCAwRCAyMCAyMCA0QiAgR1BFU1AwMS5NNDYwLiAg
SwogICAgN0REMDogNDUgNTIgMkQgNDEgNTMgNEMgMkQgNDMgNjEgNkMgNkMgNkYgNzUgNzQgMjAg
NUMgIEVSLUFTTC1DYWxsb3V0IFwKICAgIDdERTA6IDVGIDQ3IDUwIDQ1IDJFIDUzIDUwIDMwIDMx
IDBBIDAwIDAwIDAwIDAwIDAwIDAwICBfR1BFLlNQMDEuLi4uLi4uCiAgICA3REYwOiAwMCA1QyAy
RSA1RiA0NyA1MCA0NSA1MyA1MCAzMCAzMSBBMCA0RCAwNCA5MyA3QiAgLlwuX0dQRVNQMDEuTS4u
ewogICAgN0UwMDogNjAgMEEgMDQgMDAgMEEgMDQgQTAgNDIgMDQgNUIgMTIgNUMgMkUgNUYgNDcg
NTAgIGAuLi4uLi5CLlsuXC5fR1AKICAgIDdFMTA6IDQ1IDUzIDUwIDMwIDMyIDAwIDREIDM0IDM2
IDMwIDBEIDIwIDIwIDRCIDQ1IDUyICBFU1AwMi5NNDYwLiAgS0VSCiAgICA3RTIwOiAyRCA0MSA1
MyA0QyAyRCA0MyA2MSA2QyA2QyA2RiA3NSA3NCAyMCA1QyA1RiA0NyAgLUFTTC1DYWxsb3V0IFxf
RwogICAgN0UzMDogNTAgNDUgMkUgNTMgNTAgMzAgMzIgMEEgMDAgMDAgMDAgMDAgMDAgMDAgMDAg
NUMgIFBFLlNQMDIuLi4uLi4uLlwKICAgIDdFNDA6IDJFIDVGIDQ3IDUwIDQ1IDUzIDUwIDMwIDMy
IEEwIDREIDA0IDkzIDdCIDYwIDBBICAuX0dQRVNQMDIuTS4ue2AuCiAgICA3RTUwOiAwOCAwMCAw
QSAwOCBBMCA0MiAwNCA1QiAxMiA1QyAyRSA1RiA0NyA1MCA0NSA1MyAgLi4uLi5CLlsuXC5fR1BF
UwogICAgN0U2MDogNTAgMzAgMzMgMDAgNEQgMzQgMzYgMzAgMEQgMjAgMjAgNEIgNDUgNTIgMkQg
NDEgIFAwMy5NNDYwLiAgS0VSLUEKICAgIDdFNzA6IDUzIDRDIDJEIDQzIDYxIDZDIDZDIDZGIDc1
IDc0IDIwIDVDIDVGIDQ3IDUwIDQ1ICBTTC1DYWxsb3V0IFxfR1BFCiAgICA3RTgwOiAyRSA1MyA1
MCAzMCAzMyAwQSAwMCAwMCAwMCAwMCAwMCAwMCAwMCA1QyAyRSA1RiAgLlNQMDMuLi4uLi4uLlwu
XwogICAgN0U5MDogNDcgNTAgNDUgNTMgNTAgMzAgMzMgQTAgNEQgMDQgOTMgN0IgNjAgMEEgMTAg
MDAgIEdQRVNQMDMuTS4ue2AuLi4KICAgIDdFQTA6IDBBIDEwIEEwIDQyIDA0IDVCIDEyIDVDIDJF
IDVGIDQ3IDUwIDQ1IDUzIDUwIDMwICAuLi5CLlsuXC5fR1BFU1AwCiAgICA3RUIwOiAzNCAwMCA0
RCAzNCAzNiAzMCAwRCAyMCAyMCA0QiA0NSA1MiAyRCA0MSA1MyA0QyAgNC5NNDYwLiAgS0VSLUFT
TAogICAgN0VDMDogMkQgNDMgNjEgNkMgNkMgNkYgNzUgNzQgMjAgNUMgNUYgNDcgNTAgNDUgMkUg
NTMgIC1DYWxsb3V0IFxfR1BFLlMKICAgIDdFRDA6IDUwIDMwIDM0IDBBIDAwIDAwIDAwIDAwIDAw
IDAwIDAwIDVDIDJFIDVGIDQ3IDUwICBQMDQuLi4uLi4uLlwuX0dQCiAgICA3RUUwOiA0NSA1MyA1
MCAzMCAzNCBBMCA0RCAwNCA5MyA3QiA2MCAwQSAyMCAwMCAwQSAyMCAgRVNQMDQuTS4ue2AuIC4u
IAogICAgN0VGMDogQTAgNDIgMDQgNUIgMTIgNUMgMkUgNUYgNDcgNTAgNDUgNTMgNTAgMzAgMzUg
MDAgIC5CLlsuXC5fR1BFU1AwNS4KICAgIDdGMDA6IDREIDM0IDM2IDMwIDBEIDIwIDIwIDRCIDQ1
IDUyIDJEIDQxIDUzIDRDIDJEIDQzICBNNDYwLiAgS0VSLUFTTC1DCiAgICA3RjEwOiA2MSA2QyA2
QyA2RiA3NSA3NCAyMCA1QyA1RiA0NyA1MCA0NSAyRSA1MyA1MCAzMCAgYWxsb3V0IFxfR1BFLlNQ
MAogICAgN0YyMDogMzUgMEEgMDAgMDAgMDAgMDAgMDAgMDAgMDAgNUMgMkUgNUYgNDcgNTAgNDUg
NTMgIDUuLi4uLi4uLlwuX0dQRVMKICAgIDdGMzA6IDUwIDMwIDM1IEEwIDREIDA0IDkzIDdCIDYw
IDBBIDQwIDAwIDBBIDQwIEEwIDQyICBQMDUuTS4ue2AuQC4uQC5CCiAgICA3RjQwOiAwNCA1QiAx
MiA1QyAyRSA1RiA0NyA1MCA0NSA1MyA1MCAzMCAzNiAwMCA0RCAzNCAgLlsuXC5fR1BFU1AwNi5N
NAogICAgN0Y1MDogMzYgMzAgMEQgMjAgMjAgNEIgNDUgNTIgMkQgNDEgNTMgNEMgMkQgNDMgNjEg
NkMgIDYwLiAgS0VSLUFTTC1DYWwKICAgIDdGNjA6IDZDIDZGIDc1IDc0IDIwIDVDIDVGIDQ3IDUw
IDQ1IDJFIDUzIDUwIDMwIDM2IDBBICBsb3V0IFxfR1BFLlNQMDYuCiAgICA3RjcwOiAwMCAwMCAw
MCAwMCAwMCAwMCAwMCA1QyAyRSA1RiA0NyA1MCA0NSA1MyA1MCAzMCAgLi4uLi4uLlwuX0dQRVNQ
MAogICAgN0Y4MDogMzYgQTAgNEQgMDQgOTMgN0IgNjAgMEEgODAgMDAgMEEgODAgQTAgNDIgMDQg
NUIgIDYuTS4ue2AuLi4uLi5CLlsKICAgIDdGOTA6IDEyIDVDIDJFIDVGIDQ3IDUwIDQ1IDUzIDUw
IDMwIDM3IDAwIDREIDM0IDM2IDMwICAuXC5fR1BFU1AwNy5NNDYwCiAgICA3RkEwOiAwRCAyMCAy
MCA0QiA0NSA1MiAyRCA0MSA1MyA0QyAyRCA0MyA2MSA2QyA2QyA2RiAgLiAgS0VSLUFTTC1DYWxs
bwogICAgN0ZCMDogNzUgNzQgMjAgNUMgNUYgNDcgNTAgNDUgMkUgNTMgNTAgMzAgMzcgMEEgMDAg
MDAgIHV0IFxfR1BFLlNQMDcuLi4KICAgIDdGQzA6IDAwIDAwIDAwIDAwIDAwIDVDIDJFIDVGIDQ3
IDUwIDQ1IDUzIDUwIDMwIDM3IEEwICAuLi4uLlwuX0dQRVNQMDcuCiAgICA3RkQwOiA0RiAwNCA5
MyA3QiA2MCAwQiAwMCAwMSAwMCAwQiAwMCAwMSBBMCA0MiAwNCA1QiAgTy4ue2AuLi4uLi4uLkIu
WwogICAgN0ZFMDogMTIgNUMgMkUgNUYgNDcgNTAgNDUgNTMgNTAgMzEgMzAgMDAgNEQgMzQgMzYg
MzAgIC5cLl9HUEVTUDEwLk00NjAKICAgIDdGRjA6IDBEIDIwIDIwIDRCIDQ1IDUyIDJEIDQxIDUz
IDRDIDJEIDQzIDYxIDZDIDZDIDZGICAuICBLRVItQVNMLUNhbGxvCiAgICA4MDAwOiA3NSA3NCAy
MCA1QyA1RiA0NyA1MCA0NSAyRSA1MyA1MCAzMSAzMCAwQSAwMCAwMCAgdXQgXF9HUEUuU1AxMC4u
LgogICAgODAxMDogMDAgMDAgMDAgMDAgMDAgNUMgMkUgNUYgNDcgNTAgNDUgNTMgNTAgMzEgMzAg
QTAgIC4uLi4uXC5fR1BFU1AxMC4KICAgIDgwMjA6IDRGIDA0IDkzIDdCIDYwIDBCIDAwIDAyIDAw
IDBCIDAwIDAyIEEwIDQyIDA0IDVCICBPLi57YC4uLi4uLi4uQi5bCiAgICA4MDMwOiAxMiA1QyAy
RSA1RiA0NyA1MCA0NSA1MyA1MCAzMSAzMSAwMCA0RCAzNCAzNiAzMCAgLlwuX0dQRVNQMTEuTTQ2
MAogICAgODA0MDogMEQgMjAgMjAgNEIgNDUgNTIgMkQgNDEgNTMgNEMgMkQgNDMgNjEgNkMgNkMg
NkYgIC4gIEtFUi1BU0wtQ2FsbG8KICAgIDgwNTA6IDc1IDc0IDIwIDVDIDVGIDQ3IDUwIDQ1IDJF
IDUzIDUwIDMxIDMxIDBBIDAwIDAwICB1dCBcX0dQRS5TUDExLi4uCiAgICA4MDYwOiAwMCAwMCAw
MCAwMCAwMCA1QyAyRSA1RiA0NyA1MCA0NSA1MyA1MCAzMSAzMSBBMCAgLi4uLi5cLl9HUEVTUDEx
LgogICAgODA3MDogNEYgMDQgOTMgN0IgNjAgMEIgMDAgMDQgMDAgMEIgMDAgMDQgQTAgNDIgMDQg
NUIgIE8uLntgLi4uLi4uLi5CLlsKICAgIDgwODA6IDEyIDVDIDJFIDVGIDQ3IDUwIDQ1IDUzIDUw
IDMxIDMyIDAwIDREIDM0IDM2IDMwICAuXC5fR1BFU1AxMi5NNDYwCiAgICA4MDkwOiAwRCAyMCAy
MCA0QiA0NSA1MiAyRCA0MSA1MyA0QyAyRCA0MyA2MSA2QyA2QyA2RiAgLiAgS0VSLUFTTC1DYWxs
bwogICAgODBBMDogNzUgNzQgMjAgNUMgNUYgNDcgNTAgNDUgMkUgNTMgNTAgMzEgMzIgMEEgMDAg
MDAgIHV0IFxfR1BFLlNQMTIuLi4KICAgIDgwQjA6IDAwIDAwIDAwIDAwIDAwIDVDIDJFIDVGIDQ3
IDUwIDQ1IDUzIDUwIDMxIDMyIEEwICAuLi4uLlwuX0dQRVNQMTIuCiAgICA4MEMwOiA0RiAwNCA5
MyA3QiA2MCAwQiAwMCAwOCAwMCAwQiAwMCAwOCBBMCA0MiAwNCA1QiAgTy4ue2AuLi4uLi4uLkIu
WwogICAgODBEMDogMTIgNUMgMkUgNUYgNDcgNTAgNDUgNTMgNTAgMzEgMzMgMDAgNEQgMzQgMzYg
MzAgIC5cLl9HUEVTUDEzLk00NjAKICAgIDgwRTA6IDBEIDIwIDIwIDRCIDQ1IDUyIDJEIDQxIDUz
IDRDIDJEIDQzIDYxIDZDIDZDIDZGICAuICBLRVItQVNMLUNhbGxvCiAgICA4MEYwOiA3NSA3NCAy
MCA1QyA1RiA0NyA1MCA0NSAyRSA1MyA1MCAzMSAzMyAwQSAwMCAwMCAgdXQgXF9HUEUuU1AxMy4u
LgogICAgODEwMDogMDAgMDAgMDAgMDAgMDAgNUMgMkUgNUYgNDcgNTAgNDUgNTMgNTAgMzEgMzMg
QTAgIC4uLi4uXC5fR1BFU1AxMy4KICAgIDgxMTA6IDRGIDA0IDkzIDdCIDYwIDBCIDAwIDEwIDAw
IDBCIDAwIDEwIEEwIDQyIDA0IDVCICBPLi57YC4uLi4uLi4uQi5bCiAgICA4MTIwOiAxMiA1QyAy
RSA1RiA0NyA1MCA0NSA1MyA1MCAzMSAzNCAwMCA0RCAzNCAzNiAzMCAgLlwuX0dQRVNQMTQuTTQ2
MAogICAgODEzMDogMEQgMjAgMjAgNEIgNDUgNTIgMkQgNDEgNTMgNEMgMkQgNDMgNjEgNkMgNkMg
NkYgIC4gIEtFUi1BU0wtQ2FsbG8KICAgIDgxNDA6IDc1IDc0IDIwIDVDIDVGIDQ3IDUwIDQ1IDJF
IDUzIDUwIDMxIDM0IDBBIDAwIDAwICB1dCBcX0dQRS5TUDE0Li4uCiAgICA4MTUwOiAwMCAwMCAw
MCAwMCAwMCA1QyAyRSA1RiA0NyA1MCA0NSA1MyA1MCAzMSAzNCBBMCAgLi4uLi5cLl9HUEVTUDE0
LgogICAgODE2MDogNEYgMDQgOTMgN0IgNjAgMEIgMDAgMjAgMDAgMEIgMDAgMjAgQTAgNDIgMDQg
NUIgIE8uLntgLi4gLi4uIC5CLlsKICAgIDgxNzA6IDEyIDVDIDJFIDVGIDQ3IDUwIDQ1IDUzIDUw
IDMxIDM1IDAwIDREIDM0IDM2IDMwICAuXC5fR1BFU1AxNS5NNDYwCiAgICA4MTgwOiAwRCAyMCAy
MCA0QiA0NSA1MiAyRCA0MSA1MyA0QyAyRCA0MyA2MSA2QyA2QyA2RiAgLiAgS0VSLUFTTC1DYWxs
bwogICAgODE5MDogNzUgNzQgMjAgNUMgNUYgNDcgNTAgNDUgMkUgNTMgNTAgMzEgMzUgMEEgMDAg
MDAgIHV0IFxfR1BFLlNQMTUuLi4KICAgIDgxQTA6IDAwIDAwIDAwIDAwIDAwIDVDIDJFIDVGIDQ3
IDUwIDQ1IDUzIDUwIDMxIDM1IEEwICAuLi4uLlwuX0dQRVNQMTUuCiAgICA4MUIwOiA0RiAwNCA5
MyA3QiA2MCAwQiAwMCA0MCAwMCAwQiAwMCA0MCBBMCA0MiAwNCA1QiAgTy4ue2AuLkAuLi5ALkIu
WwogICAgODFDMDogMTIgNUMgMkUgNUYgNDcgNTAgNDUgNTMgNTAgMzEgMzYgMDAgNEQgMzQgMzYg
MzAgIC5cLl9HUEVTUDE2Lk00NjAKICAgIDgxRDA6IDBEIDIwIDIwIDRCIDQ1IDUyIDJEIDQxIDUz
IDRDIDJEIDQzIDYxIDZDIDZDIDZGICAuICBLRVItQVNMLUNhbGxvCiAgICA4MUUwOiA3NSA3NCAy
MCA1QyA1RiA0NyA1MCA0NSAyRSA1MyA1MCAzMSAzNiAwQSAwMCAwMCAgdXQgXF9HUEUuU1AxNi4u
LgogICAgODFGMDogMDAgMDAgMDAgMDAgMDAgNUMgMkUgNUYgNDcgNTAgNDUgNTMgNTAgMzEgMzYg
QTAgIC4uLi4uXC5fR1BFU1AxNi4KICAgIDgyMDA6IDRGIDA0IDkzIDdCIDYwIDBCIDAwIDgwIDAw
IDBCIDAwIDgwIEEwIDQyIDA0IDVCICBPLi57YC4uLi4uLi4uQi5bCiAgICA4MjEwOiAxMiA1QyAy
RSA1RiA0NyA1MCA0NSA1MyA1MCAzMSAzNyAwMCA0RCAzNCAzNiAzMCAgLlwuX0dQRVNQMTcuTTQ2
MAogICAgODIyMDogMEQgMjAgMjAgNEIgNDUgNTIgMkQgNDEgNTMgNEMgMkQgNDMgNjEgNkMgNkMg
NkYgIC4gIEtFUi1BU0wtQ2FsbG8KICAgIDgyMzA6IDc1IDc0IDIwIDVDIDVGIDQ3IDUwIDQ1IDJF
IDUzIDUwIDMxIDM3IDBBIDAwIDAwICB1dCBcX0dQRS5TUDE3Li4uCiAgICA4MjQwOiAwMCAwMCAw
MCAwMCAwMCA1QyAyRSA1RiA0NyA1MCA0NSA1MyA1MCAzMSAzNyBBMCAgLi4uLi5cLl9HUEVTUDE3
LgogICAgODI1MDogNDIgMDQgNUIgMTIgNUMgMkUgNUYgNDcgNTAgNDUgNDEgNDkgNDUgMzAgMDAg
NEQgIEIuWy5cLl9HUEVBSUUwLk0KICAgIDgyNjA6IDM0IDM2IDMwIDBEIDIwIDIwIDRCIDQ1IDUy
IDJEIDQxIDUzIDRDIDJEIDQzIDYxICA0NjAuICBLRVItQVNMLUNhCiAgICA4MjcwOiA2QyA2QyA2
RiA3NSA3NCAyMCA1QyA1RiA0NyA1MCA0NSAyRSA0MSA0OSA0NSAzMCAgbGxvdXQgXF9HUEUuQUlF
MAogICAgODI4MDogMEEgMDAgMDAgMDAgMDAgMDAgMDAgMDAgNUMgMkUgNUYgNDcgNTAgNDUgNDEg
NDkgIC4uLi4uLi4uXC5fR1BFQUkKICAgIDgyOTA6IDQ1IDMwIDREIDM0IDM2IDMwIDBEIDIwIDIw
IDRCIDQ1IDUyIDJEIDQxIDUzIDRDICBFME00NjAuICBLRVItQVNMCiAgICA4MkEwOiAyRCA1QyA1
RiA0NyA1MCA0NSAyRSA1MyA0OSA0NSAzMCAyMCA0NSA2RSA2NCAwQSAgLVxfR1BFLlNJRTAgRW5k
LgogICAgODJCMDogMDAgMDAgMDAgMDAgMDAgMDAgMDAgMTQgNEUgNUMgNTMgNDkgNDUgMzEgMDgg
NEQgIC4uLi4uLi4uTlxTSUUxLk0KICAgIDgyQzA6IDM0IDM2IDMwIDBEIDIwIDIwIDRCIDQ1IDUy
IDJEIDQxIDUzIDRDIDJEIDVDIDVGICA0NjAuICBLRVItQVNMLVxfCiAgICA4MkQwOiA0NyA1MCA0
NSAyRSA1MyA0OSA0NSAzMSAyMCA1MyA3NCA2MSA3MiA3NCAwQSAwMCAgR1BFLlNJRTEgU3RhcnQu
LgogICAgODJFMDogMDAgMDAgMDAgMDAgMDAgMDAgQTAgNDIgMDQgNUIgMTIgNUMgMkUgNUYgNDcg
NTAgIC4uLi4uLi5CLlsuXC5fR1AKICAgIDgyRjA6IDQ1IDQyIDQ5IDQ1IDMxIDAwIDREIDM0IDM2
IDMwIDBEIDIwIDIwIDRCIDQ1IDUyICBFQklFMS5NNDYwLiAgS0VSCiAgICA4MzAwOiAyRCA0MSA1
MyA0QyAyRCA0MyA2MSA2QyA2QyA2RiA3NSA3NCAyMCA1QyA1RiA0NyAgLUFTTC1DYWxsb3V0IFxf
RwogICAgODMxMDogNTAgNDUgMkUgNDIgNDkgNDUgMzEgMEEgMDAgMDAgMDAgMDAgMDAgMDAgMDAg
NUMgIFBFLkJJRTEuLi4uLi4uLlwKICAgIDgzMjA6IDJFIDVGIDQ3IDUwIDQ1IDQyIDQ5IDQ1IDMx
IDcwIDREIDM0IDQ2IDMxIDAxIDYwICAuX0dQRUJJRTFwTTRGMS5gCiAgICA4MzMwOiBBMCA0QiAw
NCA5MyA3QiA2MCAwMSAwMCAwMSBBMCA0MiAwNCA1QiAxMiA1QyAyRSAgLksuLntgLi4uLkIuWy5c
LgogICAgODM0MDogNUYgNDcgNTAgNDUgNTMgNTAgMzIgMzAgMDAgNEQgMzQgMzYgMzAgMEQgMjAg
MjAgIF9HUEVTUDIwLk00NjAuICAKICAgIDgzNTA6IDRCIDQ1IDUyIDJEIDQxIDUzIDRDIDJEIDQz
IDYxIDZDIDZDIDZGIDc1IDc0IDIwICBLRVItQVNMLUNhbGxvdXQgCiAgICA4MzYwOiA1QyA1RiA0
NyA1MCA0NSAyRSA1MyA1MCAzMiAzMCAwQSAwMCAwMCAwMCAwMCAwMCAgXF9HUEUuU1AyMC4uLi4u
LgogICAgODM3MDogMDAgMDAgNUMgMkUgNUYgNDcgNTAgNDUgNTMgNTAgMzIgMzAgQTAgNEQgMDQg
OTMgIC4uXC5fR1BFU1AyMC5NLi4KICAgIDgzODA6IDdCIDYwIDBBIDAyIDAwIDBBIDAyIEEwIDQy
IDA0IDVCIDEyIDVDIDJFIDVGIDQ3ICB7YC4uLi4uLkIuWy5cLl9HCiAgICA4MzkwOiA1MCA0NSA1
MyA1MCAzMiAzMSAwMCA0RCAzNCAzNiAzMCAwRCAyMCAyMCA0QiA0NSAgUEVTUDIxLk00NjAuICBL
RQogICAgODNBMDogNTIgMkQgNDEgNTMgNEMgMkQgNDMgNjEgNkMgNkMgNkYgNzUgNzQgMjAgNUMg
NUYgIFItQVNMLUNhbGxvdXQgXF8KICAgIDgzQjA6IDQ3IDUwIDQ1IDJFIDUzIDUwIDMyIDMxIDBB
IDAwIDAwIDAwIDAwIDAwIDAwIDAwICBHUEUuU1AyMS4uLi4uLi4uCiAgICA4M0MwOiA1QyAyRSA1
RiA0NyA1MCA0NSA1MyA1MCAzMiAzMSBBMCA0RCAwNCA5MyA3QiA2MCAgXC5fR1BFU1AyMS5NLi57
YAogICAgODNEMDogMEEgMDQgMDAgMEEgMDQgQTAgNDIgMDQgNUIgMTIgNUMgMkUgNUYgNDcgNTAg
NDUgIC4uLi4uLkIuWy5cLl9HUEUKICAgIDgzRTA6IDUzIDUwIDMyIDMyIDAwIDREIDM0IDM2IDMw
IDBEIDIwIDIwIDRCIDQ1IDUyIDJEICBTUDIyLk00NjAuICBLRVItCiAgICA4M0YwOiA0MSA1MyA0
QyAyRCA0MyA2MSA2QyA2QyA2RiA3NSA3NCAyMCA1QyA1RiA0NyA1MCAgQVNMLUNhbGxvdXQgXF9H
UAogICAgODQwMDogNDUgMkUgNTMgNTAgMzIgMzIgMEEgMDAgMDAgMDAgMDAgMDAgMDAgMDAgNUMg
MkUgIEUuU1AyMi4uLi4uLi4uXC4KICAgIDg0MTA6IDVGIDQ3IDUwIDQ1IDUzIDUwIDMyIDMyIEEw
IDREIDA0IDkzIDdCIDYwIDBBIDA4ICBfR1BFU1AyMi5NLi57YC4uCiAgICA4NDIwOiAwMCAwQSAw
OCBBMCA0MiAwNCA1QiAxMiA1QyAyRSA1RiA0NyA1MCA0NSA1MyA1MCAgLi4uLkIuWy5cLl9HUEVT
UAogICAgODQzMDogMzIgMzMgMDAgNEQgMzQgMzYgMzAgMEQgMjAgMjAgNEIgNDUgNTIgMkQgNDEg
NTMgIDIzLk00NjAuICBLRVItQVMKICAgIDg0NDA6IDRDIDJEIDQzIDYxIDZDIDZDIDZGIDc1IDc0
IDIwIDVDIDVGIDQ3IDUwIDQ1IDJFICBMLUNhbGxvdXQgXF9HUEUuCiAgICA4NDUwOiA1MyA1MCAz
MiAzMyAwQSAwMCAwMCAwMCAwMCAwMCAwMCAwMCA1QyAyRSA1RiA0NyAgU1AyMy4uLi4uLi4uXC5f
RwogICAgODQ2MDogNTAgNDUgNTMgNTAgMzIgMzMgQTAgNEQgMDQgOTMgN0IgNjAgMEEgMTAgMDAg
MEEgIFBFU1AyMy5NLi57YC4uLi4KICAgIDg0NzA6IDEwIEEwIDQyIDA0IDVCIDEyIDVDIDJFIDVG
IDQ3IDUwIDQ1IDUzIDUwIDMyIDM0ICAuLkIuWy5cLl9HUEVTUDI0CiAgICA4NDgwOiAwMCA0RCAz
NCAzNiAzMCAwRCAyMCAyMCA0QiA0NSA1MiAyRCA0MSA1MyA0QyAyRCAgLk00NjAuICBLRVItQVNM
LQogICAgODQ5MDogNDMgNjEgNkMgNkMgNkYgNzUgNzQgMjAgNUMgNUYgNDcgNTAgNDUgMkUgNTMg
NTAgIENhbGxvdXQgXF9HUEUuU1AKICAgIDg0QTA6IDMyIDM0IDBBIDAwIDAwIDAwIDAwIDAwIDAw
IDAwIDVDIDJFIDVGIDQ3IDUwIDQ1ICAyNC4uLi4uLi4uXC5fR1BFCiAgICA4NEIwOiA1MyA1MCAz
MiAzNCBBMCA0RCAwNCA5MyA3QiA2MCAwQSAyMCAwMCAwQSAyMCBBMCAgU1AyNC5NLi57YC4gLi4g
LgogICAgODRDMDogNDIgMDQgNUIgMTIgNUMgMkUgNUYgNDcgNTAgNDUgNTMgNTAgMzIgMzUgMDAg
NEQgIEIuWy5cLl9HUEVTUDI1Lk0KICAgIDg0RDA6IDM0IDM2IDMwIDBEIDIwIDIwIDRCIDQ1IDUy
IDJEIDQxIDUzIDRDIDJEIDQzIDYxICA0NjAuICBLRVItQVNMLUNhCiAgICA4NEUwOiA2QyA2QyA2
RiA3NSA3NCAyMCA1QyA1RiA0NyA1MCA0NSAyRSA1MyA1MCAzMiAzNSAgbGxvdXQgXF9HUEUuU1Ay
NQogICAgODRGMDogMEEgMDAgMDAgMDAgMDAgMDAgMDAgMDAgNUMgMkUgNUYgNDcgNTAgNDUgNTMg
NTAgIC4uLi4uLi4uXC5fR1BFU1AKICAgIDg1MDA6IDMyIDM1IEEwIDREIDA0IDkzIDdCIDYwIDBB
IDQwIDAwIDBBIDQwIEEwIDQyIDA0ICAyNS5NLi57YC5ALi5ALkIuCiAgICA4NTEwOiA1QiAxMiA1
QyAyRSA1RiA0NyA1MCA0NSA1MyA1MCAzMiAzNiAwMCA0RCAzNCAzNiAgWy5cLl9HUEVTUDI2Lk00
NgogICAgODUyMDogMzAgMEQgMjAgMjAgNEIgNDUgNTIgMkQgNDEgNTMgNEMgMkQgNDMgNjEgNkMg
NkMgIDAuICBLRVItQVNMLUNhbGwKICAgIDg1MzA6IDZGIDc1IDc0IDIwIDVDIDVGIDQ3IDUwIDQ1
IDJFIDUzIDUwIDMyIDM2IDBBIDAwICBvdXQgXF9HUEUuU1AyNi4uCiAgICA4NTQwOiAwMCAwMCAw
MCAwMCAwMCAwMCA1QyAyRSA1RiA0NyA1MCA0NSA1MyA1MCAzMiAzNiAgLi4uLi4uXC5fR1BFU1Ay
NgogICAgODU1MDogQTAgNEQgMDQgOTMgN0IgNjAgMEEgODAgMDAgMEEgODAgQTAgNDIgMDQgNUIg
MTIgIC5NLi57YC4uLi4uLkIuWy4KICAgIDg1NjA6IDVDIDJFIDVGIDQ3IDUwIDQ1IDUzIDUwIDMy
IDM3IDAwIDREIDM0IDM2IDMwIDBEICBcLl9HUEVTUDI3Lk00NjAuCiAgICA4NTcwOiAyMCAyMCA0
QiA0NSA1MiAyRCA0MSA1MyA0QyAyRCA0MyA2MSA2QyA2QyA2RiA3NSAgICBLRVItQVNMLUNhbGxv
dQogICAgODU4MDogNzQgMjAgNUMgNUYgNDcgNTAgNDUgMkUgNTMgNTAgMzIgMzcgMEEgMDAgMDAg
MDAgIHQgXF9HUEUuU1AyNy4uLi4KICAgIDg1OTA6IDAwIDAwIDAwIDAwIDVDIDJFIDVGIDQ3IDUw
IDQ1IDUzIDUwIDMyIDM3IEEwIDRGICAuLi4uXC5fR1BFU1AyNy5PCiAgICA4NUEwOiAwNCA5MyA3
QiA2MCAwQiAwMCAwMSAwMCAwQiAwMCAwMSBBMCA0MiAwNCA1QiAxMiAgLi57YC4uLi4uLi4uQi5b
LgogICAgODVCMDogNUMgMkUgNUYgNDcgNTAgNDUgNTMgNTAgMzMgMzAgMDAgNEQgMzQgMzYgMzAg
MEQgIFwuX0dQRVNQMzAuTTQ2MC4KICAgIDg1QzA6IDIwIDIwIDRCIDQ1IDUyIDJEIDQxIDUzIDRD
IDJEIDQzIDYxIDZDIDZDIDZGIDc1ICAgIEtFUi1BU0wtQ2FsbG91CiAgICA4NUQwOiA3NCAyMCA1
QyA1RiA0NyA1MCA0NSAyRSA1MyA1MCAzMyAzMCAwQSAwMCAwMCAwMCAgdCBcX0dQRS5TUDMwLi4u
LgogICAgODVFMDogMDAgMDAgMDAgMDAgNUMgMkUgNUYgNDcgNTAgNDUgNTMgNTAgMzMgMzAgQTAg
NEYgIC4uLi5cLl9HUEVTUDMwLk8KICAgIDg1RjA6IDA0IDkzIDdCIDYwIDBCIDAwIDAyIDAwIDBC
IDAwIDAyIEEwIDQyIDA0IDVCIDEyICAuLntgLi4uLi4uLi5CLlsuCiAgICA4NjAwOiA1QyAyRSA1
RiA0NyA1MCA0NSA1MyA1MCAzMyAzMSAwMCA0RCAzNCAzNiAzMCAwRCAgXC5fR1BFU1AzMS5NNDYw
LgogICAgODYxMDogMjAgMjAgNEIgNDUgNTIgMkQgNDEgNTMgNEMgMkQgNDMgNjEgNkMgNkMgNkYg
NzUgICAgS0VSLUFTTC1DYWxsb3UKICAgIDg2MjA6IDc0IDIwIDVDIDVGIDQ3IDUwIDQ1IDJFIDUz
IDUwIDMzIDMxIDBBIDAwIDAwIDAwICB0IFxfR1BFLlNQMzEuLi4uCiAgICA4NjMwOiAwMCAwMCAw
MCAwMCA1QyAyRSA1RiA0NyA1MCA0NSA1MyA1MCAzMyAzMSBBMCA0RiAgLi4uLlwuX0dQRVNQMzEu
TwogICAgODY0MDogMDQgOTMgN0IgNjAgMEIgMDAgMDQgMDAgMEIgMDAgMDQgQTAgNDIgMDQgNUIg
MTIgIC4ue2AuLi4uLi4uLkIuWy4KICAgIDg2NTA6IDVDIDJFIDVGIDQ3IDUwIDQ1IDUzIDUwIDMz
IDMyIDAwIDREIDM0IDM2IDMwIDBEICBcLl9HUEVTUDMyLk00NjAuCiAgICA4NjYwOiAyMCAyMCA0
QiA0NSA1MiAyRCA0MSA1MyA0QyAyRCA0MyA2MSA2QyA2QyA2RiA3NSAgICBLRVItQVNMLUNhbGxv
dQogICAgODY3MDogNzQgMjAgNUMgNUYgNDcgNTAgNDUgMkUgNTMgNTAgMzMgMzIgMEEgMDAgMDAg
MDAgIHQgXF9HUEUuU1AzMi4uLi4KICAgIDg2ODA6IDAwIDAwIDAwIDAwIDVDIDJFIDVGIDQ3IDUw
IDQ1IDUzIDUwIDMzIDMyIEEwIDRGICAuLi4uXC5fR1BFU1AzMi5PCiAgICA4NjkwOiAwNCA5MyA3
QiA2MCAwQiAwMCAwOCAwMCAwQiAwMCAwOCBBMCA0MiAwNCA1QiAxMiAgLi57YC4uLi4uLi4uQi5b
LgogICAgODZBMDogNUMgMkUgNUYgNDcgNTAgNDUgNTMgNTAgMzMgMzMgMDAgNEQgMzQgMzYgMzAg
MEQgIFwuX0dQRVNQMzMuTTQ2MC4KICAgIDg2QjA6IDIwIDIwIDRCIDQ1IDUyIDJEIDQxIDUzIDRD
IDJEIDQzIDYxIDZDIDZDIDZGIDc1ICAgIEtFUi1BU0wtQ2FsbG91CiAgICA4NkMwOiA3NCAyMCA1
QyA1RiA0NyA1MCA0NSAyRSA1MyA1MCAzMyAzMyAwQSAwMCAwMCAwMCAgdCBcX0dQRS5TUDMzLi4u
LgogICAgODZEMDogMDAgMDAgMDAgMDAgNUMgMkUgNUYgNDcgNTAgNDUgNTMgNTAgMzMgMzMgQTAg
NEYgIC4uLi5cLl9HUEVTUDMzLk8KICAgIDg2RTA6IDA0IDkzIDdCIDYwIDBCIDAwIDEwIDAwIDBC
IDAwIDEwIEEwIDQyIDA0IDVCIDEyICAuLntgLi4uLi4uLi5CLlsuCiAgICA4NkYwOiA1QyAyRSA1
RiA0NyA1MCA0NSA1MyA1MCAzMyAzNCAwMCA0RCAzNCAzNiAzMCAwRCAgXC5fR1BFU1AzNC5NNDYw
LgogICAgODcwMDogMjAgMjAgNEIgNDUgNTIgMkQgNDEgNTMgNEMgMkQgNDMgNjEgNkMgNkMgNkYg
NzUgICAgS0VSLUFTTC1DYWxsb3UKICAgIDg3MTA6IDc0IDIwIDVDIDVGIDQ3IDUwIDQ1IDJFIDUz
IDUwIDMzIDM0IDBBIDAwIDAwIDAwICB0IFxfR1BFLlNQMzQuLi4uCiAgICA4NzIwOiAwMCAwMCAw
MCAwMCA1QyAyRSA1RiA0NyA1MCA0NSA1MyA1MCAzMyAzNCBBMCA0RiAgLi4uLlwuX0dQRVNQMzQu
TwogICAgODczMDogMDQgOTMgN0IgNjAgMEIgMDAgMjAgMDAgMEIgMDAgMjAgQTAgNDIgMDQgNUIg
MTIgIC4ue2AuLiAuLi4gLkIuWy4KICAgIDg3NDA6IDVDIDJFIDVGIDQ3IDUwIDQ1IDUzIDUwIDMz
IDM1IDAwIDREIDM0IDM2IDMwIDBEICBcLl9HUEVTUDM1Lk00NjAuCiAgICA4NzUwOiAyMCAyMCA0
QiA0NSA1MiAyRCA0MSA1MyA0QyAyRCA0MyA2MSA2QyA2QyA2RiA3NSAgICBLRVItQVNMLUNhbGxv
dQogICAgODc2MDogNzQgMjAgNUMgNUYgNDcgNTAgNDUgMkUgNTMgNTAgMzMgMzUgMEEgMDAgMDAg
MDAgIHQgXF9HUEUuU1AzNS4uLi4KICAgIDg3NzA6IDAwIDAwIDAwIDAwIDVDIDJFIDVGIDQ3IDUw
IDQ1IDUzIDUwIDMzIDM1IEEwIDRGICAuLi4uXC5fR1BFU1AzNS5PCiAgICA4NzgwOiAwNCA5MyA3
QiA2MCAwQiAwMCA0MCAwMCAwQiAwMCA0MCBBMCA0MiAwNCA1QiAxMiAgLi57YC4uQC4uLkAuQi5b
LgogICAgODc5MDogNUMgMkUgNUYgNDcgNTAgNDUgNTMgNTAgMzMgMzYgMDAgNEQgMzQgMzYgMzAg
MEQgIFwuX0dQRVNQMzYuTTQ2MC4KICAgIDg3QTA6IDIwIDIwIDRCIDQ1IDUyIDJEIDQxIDUzIDRD
IDJEIDQzIDYxIDZDIDZDIDZGIDc1ICAgIEtFUi1BU0wtQ2FsbG91CiAgICA4N0IwOiA3NCAyMCA1
QyA1RiA0NyA1MCA0NSAyRSA1MyA1MCAzMyAzNiAwQSAwMCAwMCAwMCAgdCBcX0dQRS5TUDM2Li4u
LgogICAgODdDMDogMDAgMDAgMDAgMDAgNUMgMkUgNUYgNDcgNTAgNDUgNTMgNTAgMzMgMzYgQTAg
NEYgIC4uLi5cLl9HUEVTUDM2Lk8KICAgIDg3RDA6IDA0IDkzIDdCIDYwIDBCIDAwIDgwIDAwIDBC
IDAwIDgwIEEwIDQyIDA0IDVCIDEyICAuLntgLi4uLi4uLi5CLlsuCiAgICA4N0UwOiA1QyAyRSA1
RiA0NyA1MCA0NSA1MyA1MCAzMyAzNyAwMCA0RCAzNCAzNiAzMCAwRCAgXC5fR1BFU1AzNy5NNDYw
LgogICAgODdGMDogMjAgMjAgNEIgNDUgNTIgMkQgNDEgNTMgNEMgMkQgNDMgNjEgNkMgNkMgNkYg
NzUgICAgS0VSLUFTTC1DYWxsb3UKICAgIDg4MDA6IDc0IDIwIDVDIDVGIDQ3IDUwIDQ1IDJFIDUz
IDUwIDMzIDM3IDBBIDAwIDAwIDAwICB0IFxfR1BFLlNQMzcuLi4uCiAgICA4ODEwOiAwMCAwMCAw
MCAwMCA1QyAyRSA1RiA0NyA1MCA0NSA1MyA1MCAzMyAzNyBBMCA0MiAgLi4uLlwuX0dQRVNQMzcu
QgogICAgODgyMDogMDQgNUIgMTIgNUMgMkUgNUYgNDcgNTAgNDUgNDEgNDkgNDUgMzEgMDAgNEQg
MzQgIC5bLlwuX0dQRUFJRTEuTTQKICAgIDg4MzA6IDM2IDMwIDBEIDIwIDIwIDRCIDQ1IDUyIDJE
IDQxIDUzIDRDIDJEIDQzIDYxIDZDICA2MC4gIEtFUi1BU0wtQ2FsCiAgICA4ODQwOiA2QyA2RiA3
NSA3NCAyMCA1QyA1RiA0NyA1MCA0NSAyRSA0MSA0OSA0NSAzMSAwQSAgbG91dCBcX0dQRS5BSUUx
LgogICAgODg1MDogMDAgMDAgMDAgMDAgMDAgMDAgMDAgNUMgMkUgNUYgNDcgNTAgNDUgNDEgNDkg
NDUgIC4uLi4uLi5cLl9HUEVBSUUKICAgIDg4NjA6IDMxIDREIDM0IDM2IDMwIDBEIDIwIDIwIDRC
IDQ1IDUyIDJEIDQxIDUzIDRDIDJEICAxTTQ2MC4gIEtFUi1BU0wtCiAgICA4ODcwOiA1QyA1RiA0
NyA1MCA0NSAyRSA1MyA0OSA0NSAzMSAyMCA0NSA2RSA2NCAwQSAwMCAgXF9HUEUuU0lFMSBFbmQu
LgogICAgODg4MDogMDAgMDAgMDAgMDAgMDAgMDAgMTQgNEYgNUMgNTMgNDkgNDUgMzIgMDggNEQg
MzQgIC4uLi4uLi5PXFNJRTIuTTQKICAgIDg4OTA6IDM2IDMwIDBEIDIwIDIwIDRCIDQ1IDUyIDJE
IDQxIDUzIDRDIDJEIDVDIDVGIDQ3ICA2MC4gIEtFUi1BU0wtXF9HCiAgICA4OEEwOiA1MCA0NSAy
RSA1MyA0OSA0NSAzMiAyMCA1MyA3NCA2MSA3MiA3NCAwQSAwMCAwMCAgUEUuU0lFMiBTdGFydC4u
LgogICAgODhCMDogMDAgMDAgMDAgMDAgMDAgQTAgNDIgMDQgNUIgMTIgNUMgMkUgNUYgNDcgNTAg
NDUgIC4uLi4uLkIuWy5cLl9HUEUKICAgIDg4QzA6IDQyIDQ5IDQ1IDMyIDAwIDREIDM0IDM2IDMw
IDBEIDIwIDIwIDRCIDQ1IDUyIDJEICBCSUUyLk00NjAuICBLRVItCiAgICA4OEQwOiA0MSA1MyA0
QyAyRCA0MyA2MSA2QyA2QyA2RiA3NSA3NCAyMCA1QyA1RiA0NyA1MCAgQVNMLUNhbGxvdXQgXF9H
UAogICAgODhFMDogNDUgMkUgNDIgNDkgNDUgMzIgMEEgMDAgMDAgMDAgMDAgMDAgMDAgMDAgNUMg
MkUgIEUuQklFMi4uLi4uLi4uXC4KICAgIDg4RjA6IDVGIDQ3IDUwIDQ1IDQyIDQ5IDQ1IDMyIDcw
IDREIDM0IDQ2IDMxIDBBIDAyIDYwICBfR1BFQklFMnBNNEYxLi5gCiAgICA4OTAwOiBBMCA0QiAw
NCA5MyA3QiA2MCAwMSAwMCAwMSBBMCA0MiAwNCA1QiAxMiA1QyAyRSAgLksuLntgLi4uLkIuWy5c
LgogICAgODkxMDogNUYgNDcgNTAgNDUgNTMgNTAgMzQgMzAgMDAgNEQgMzQgMzYgMzAgMEQgMjAg
MjAgIF9HUEVTUDQwLk00NjAuICAKICAgIDg5MjA6IDRCIDQ1IDUyIDJEIDQxIDUzIDRDIDJEIDQz
IDYxIDZDIDZDIDZGIDc1IDc0IDIwICBLRVItQVNMLUNhbGxvdXQgCiAgICA4OTMwOiA1QyA1RiA0
NyA1MCA0NSAyRSA1MyA1MCAzNCAzMCAwQSAwMCAwMCAwMCAwMCAwMCAgXF9HUEUuU1A0MC4uLi4u
LgogICAgODk0MDogMDAgMDAgNUMgMkUgNUYgNDcgNTAgNDUgNTMgNTAgMzQgMzAgQTAgNEQgMDQg
OTMgIC4uXC5fR1BFU1A0MC5NLi4KICAgIDg5NTA6IDdCIDYwIDBBIDAyIDAwIDBBIDAyIEEwIDQy
IDA0IDVCIDEyIDVDIDJFIDVGIDQ3ICB7YC4uLi4uLkIuWy5cLl9HCiAgICA4OTYwOiA1MCA0NSA1
MyA1MCAzNCAzMSAwMCA0RCAzNCAzNiAzMCAwRCAyMCAyMCA0QiA0NSAgUEVTUDQxLk00NjAuICBL
RQogICAgODk3MDogNTIgMkQgNDEgNTMgNEMgMkQgNDMgNjEgNkMgNkMgNkYgNzUgNzQgMjAgNUMg
NUYgIFItQVNMLUNhbGxvdXQgXF8KICAgIDg5ODA6IDQ3IDUwIDQ1IDJFIDUzIDUwIDM0IDMxIDBB
IDAwIDAwIDAwIDAwIDAwIDAwIDAwICBHUEUuU1A0MS4uLi4uLi4uCiAgICA4OTkwOiA1QyAyRSA1
RiA0NyA1MCA0NSA1MyA1MCAzNCAzMSBBMCA0RCAwNCA5MyA3QiA2MCAgXC5fR1BFU1A0MS5NLi57
YAogICAgODlBMDogMEEgMDQgMDAgMEEgMDQgQTAgNDIgMDQgNUIgMTIgNUMgMkUgNUYgNDcgNTAg
NDUgIC4uLi4uLkIuWy5cLl9HUEUKICAgIDg5QjA6IDUzIDUwIDM0IDMyIDAwIDREIDM0IDM2IDMw
IDBEIDIwIDIwIDRCIDQ1IDUyIDJEICBTUDQyLk00NjAuICBLRVItCiAgICA4OUMwOiA0MSA1MyA0
QyAyRCA0MyA2MSA2QyA2QyA2RiA3NSA3NCAyMCA1QyA1RiA0NyA1MCAgQVNMLUNhbGxvdXQgXF9H
UAogICAgODlEMDogNDUgMkUgNTMgNTAgMzQgMzIgMEEgMDAgMDAgMDAgMDAgMDAgMDAgMDAgNUMg
MkUgIEUuU1A0Mi4uLi4uLi4uXC4KICAgIDg5RTA6IDVGIDQ3IDUwIDQ1IDUzIDUwIDM0IDMyIEEw
IDREIDA0IDkzIDdCIDYwIDBBIDA4ICBfR1BFU1A0Mi5NLi57YC4uCiAgICA4OUYwOiAwMCAwQSAw
OCBBMCA0MiAwNCA1QiAxMiA1QyAyRSA1RiA0NyA1MCA0NSA1MyA1MCAgLi4uLkIuWy5cLl9HUEVT
UAogICAgOEEwMDogMzQgMzMgMDAgNEQgMzQgMzYgMzAgMEQgMjAgMjAgNEIgNDUgNTIgMkQgNDEg
NTMgIDQzLk00NjAuICBLRVItQVMKICAgIDhBMTA6IDRDIDJEIDQzIDYxIDZDIDZDIDZGIDc1IDc0
IDIwIDVDIDVGIDQ3IDUwIDQ1IDJFICBMLUNhbGxvdXQgXF9HUEUuCiAgICA4QTIwOiA1MyA1MCAz
NCAzMyAwQSAwMCAwMCAwMCAwMCAwMCAwMCAwMCA1QyAyRSA1RiA0NyAgU1A0My4uLi4uLi4uXC5f
RwogICAgOEEzMDogNTAgNDUgNTMgNTAgMzQgMzMgQTAgNEQgMDQgOTMgN0IgNjAgMEEgMTAgMDAg
MEEgIFBFU1A0My5NLi57YC4uLi4KICAgIDhBNDA6IDEwIEEwIDQyIDA0IDVCIDEyIDVDIDJFIDVG
IDQ3IDUwIDQ1IDUzIDUwIDM0IDM0ICAuLkIuWy5cLl9HUEVTUDQ0CiAgICA4QTUwOiAwMCA0RCAz
NCAzNiAzMCAwRCAyMCAyMCA0QiA0NSA1MiAyRCA0MSA1MyA0QyAyRCAgLk00NjAuICBLRVItQVNM
LQogICAgOEE2MDogNDMgNjEgNkMgNkMgNkYgNzUgNzQgMjAgNUMgNUYgNDcgNTAgNDUgMkUgNTMg
NTAgIENhbGxvdXQgXF9HUEUuU1AKICAgIDhBNzA6IDM0IDM0IDBBIDAwIDAwIDAwIDAwIDAwIDAw
IDAwIDVDIDJFIDVGIDQ3IDUwIDQ1ICA0NC4uLi4uLi4uXC5fR1BFCiAgICA4QTgwOiA1MyA1MCAz
NCAzNCBBMCA0RCAwNCA5MyA3QiA2MCAwQSAyMCAwMCAwQSAyMCBBMCAgU1A0NC5NLi57YC4gLi4g
LgogICAgOEE5MDogNDIgMDQgNUIgMTIgNUMgMkUgNUYgNDcgNTAgNDUgNTMgNTAgMzQgMzUgMDAg
NEQgIEIuWy5cLl9HUEVTUDQ1Lk0KICAgIDhBQTA6IDM0IDM2IDMwIDBEIDIwIDIwIDRCIDQ1IDUy
IDJEIDQxIDUzIDRDIDJEIDQzIDYxICA0NjAuICBLRVItQVNMLUNhCiAgICA4QUIwOiA2QyA2QyA2
RiA3NSA3NCAyMCA1QyA1RiA0NyA1MCA0NSAyRSA1MyA1MCAzNCAzNSAgbGxvdXQgXF9HUEUuU1A0
NQogICAgOEFDMDogMEEgMDAgMDAgMDAgMDAgMDAgMDAgMDAgNUMgMkUgNUYgNDcgNTAgNDUgNTMg
NTAgIC4uLi4uLi4uXC5fR1BFU1AKICAgIDhBRDA6IDM0IDM1IEEwIDREIDA0IDkzIDdCIDYwIDBB
IDQwIDAwIDBBIDQwIEEwIDQyIDA0ICA0NS5NLi57YC5ALi5ALkIuCiAgICA4QUUwOiA1QiAxMiA1
QyAyRSA1RiA0NyA1MCA0NSA1MyA1MCAzNCAzNiAwMCA0RCAzNCAzNiAgWy5cLl9HUEVTUDQ2Lk00
NgogICAgOEFGMDogMzAgMEQgMjAgMjAgNEIgNDUgNTIgMkQgNDEgNTMgNEMgMkQgNDMgNjEgNkMg
NkMgIDAuICBLRVItQVNMLUNhbGwKICAgIDhCMDA6IDZGIDc1IDc0IDIwIDVDIDVGIDQ3IDUwIDQ1
IDJFIDUzIDUwIDM0IDM2IDBBIDAwICBvdXQgXF9HUEUuU1A0Ni4uCiAgICA4QjEwOiAwMCAwMCAw
MCAwMCAwMCAwMCA1QyAyRSA1RiA0NyA1MCA0NSA1MyA1MCAzNCAzNiAgLi4uLi4uXC5fR1BFU1A0
NgogICAgOEIyMDogQTAgNEQgMDQgOTMgN0IgNjAgMEEgODAgMDAgMEEgODAgQTAgNDIgMDQgNUIg
MTIgIC5NLi57YC4uLi4uLkIuWy4KICAgIDhCMzA6IDVDIDJFIDVGIDQ3IDUwIDQ1IDUzIDUwIDM0
IDM3IDAwIDREIDM0IDM2IDMwIDBEICBcLl9HUEVTUDQ3Lk00NjAuCiAgICA4QjQwOiAyMCAyMCA0
QiA0NSA1MiAyRCA0MSA1MyA0QyAyRCA0MyA2MSA2QyA2QyA2RiA3NSAgICBLRVItQVNMLUNhbGxv
dQogICAgOEI1MDogNzQgMjAgNUMgNUYgNDcgNTAgNDUgMkUgNTMgNTAgMzQgMzcgMEEgMDAgMDAg
MDAgIHQgXF9HUEUuU1A0Ny4uLi4KICAgIDhCNjA6IDAwIDAwIDAwIDAwIDVDIDJFIDVGIDQ3IDUw
IDQ1IDUzIDUwIDM0IDM3IEEwIDRGICAuLi4uXC5fR1BFU1A0Ny5PCiAgICA4QjcwOiAwNCA5MyA3
QiA2MCAwQiAwMCAwMSAwMCAwQiAwMCAwMSBBMCA0MiAwNCA1QiAxMiAgLi57YC4uLi4uLi4uQi5b
LgogICAgOEI4MDogNUMgMkUgNUYgNDcgNTAgNDUgNTMgNTAgMzUgMzAgMDAgNEQgMzQgMzYgMzAg
MEQgIFwuX0dQRVNQNTAuTTQ2MC4KICAgIDhCOTA6IDIwIDIwIDRCIDQ1IDUyIDJEIDQxIDUzIDRD
IDJEIDQzIDYxIDZDIDZDIDZGIDc1ICAgIEtFUi1BU0wtQ2FsbG91CiAgICA4QkEwOiA3NCAyMCA1
QyA1RiA0NyA1MCA0NSAyRSA1MyA1MCAzNSAzMCAwQSAwMCAwMCAwMCAgdCBcX0dQRS5TUDUwLi4u
LgogICAgOEJCMDogMDAgMDAgMDAgMDAgNUMgMkUgNUYgNDcgNTAgNDUgNTMgNTAgMzUgMzAgQTAg
NEYgIC4uLi5cLl9HUEVTUDUwLk8KICAgIDhCQzA6IDA0IDkzIDdCIDYwIDBCIDAwIDAyIDAwIDBC
IDAwIDAyIEEwIDQyIDA0IDVCIDEyICAuLntgLi4uLi4uLi5CLlsuCiAgICA4QkQwOiA1QyAyRSA1
RiA0NyA1MCA0NSA1MyA1MCAzNSAzMSAwMCA0RCAzNCAzNiAzMCAwRCAgXC5fR1BFU1A1MS5NNDYw
LgogICAgOEJFMDogMjAgMjAgNEIgNDUgNTIgMkQgNDEgNTMgNEMgMkQgNDMgNjEgNkMgNkMgNkYg
NzUgICAgS0VSLUFTTC1DYWxsb3UKICAgIDhCRjA6IDc0IDIwIDVDIDVGIDQ3IDUwIDQ1IDJFIDUz
IDUwIDM1IDMxIDBBIDAwIDAwIDAwICB0IFxfR1BFLlNQNTEuLi4uCiAgICA4QzAwOiAwMCAwMCAw
MCAwMCA1QyAyRSA1RiA0NyA1MCA0NSA1MyA1MCAzNSAzMSBBMCA0RiAgLi4uLlwuX0dQRVNQNTEu
TwogICAgOEMxMDogMDQgOTMgN0IgNjAgMEIgMDAgMDQgMDAgMEIgMDAgMDQgQTAgNDIgMDQgNUIg
MTIgIC4ue2AuLi4uLi4uLkIuWy4KICAgIDhDMjA6IDVDIDJFIDVGIDQ3IDUwIDQ1IDUzIDUwIDM1
IDMyIDAwIDREIDM0IDM2IDMwIDBEICBcLl9HUEVTUDUyLk00NjAuCiAgICA4QzMwOiAyMCAyMCA0
QiA0NSA1MiAyRCA0MSA1MyA0QyAyRCA0MyA2MSA2QyA2QyA2RiA3NSAgICBLRVItQVNMLUNhbGxv
dQogICAgOEM0MDogNzQgMjAgNUMgNUYgNDcgNTAgNDUgMkUgNTMgNTAgMzUgMzIgMEEgMDAgMDAg
MDAgIHQgXF9HUEUuU1A1Mi4uLi4KICAgIDhDNTA6IDAwIDAwIDAwIDAwIDVDIDJFIDVGIDQ3IDUw
IDQ1IDUzIDUwIDM1IDMyIEEwIDRGICAuLi4uXC5fR1BFU1A1Mi5PCiAgICA4QzYwOiAwNCA5MyA3
QiA2MCAwQiAwMCAwOCAwMCAwQiAwMCAwOCBBMCA0MiAwNCA1QiAxMiAgLi57YC4uLi4uLi4uQi5b
LgogICAgOEM3MDogNUMgMkUgNUYgNDcgNTAgNDUgNTMgNTAgMzUgMzMgMDAgNEQgMzQgMzYgMzAg
MEQgIFwuX0dQRVNQNTMuTTQ2MC4KICAgIDhDODA6IDIwIDIwIDRCIDQ1IDUyIDJEIDQxIDUzIDRD
IDJEIDQzIDYxIDZDIDZDIDZGIDc1ICAgIEtFUi1BU0wtQ2FsbG91CiAgICA4QzkwOiA3NCAyMCA1
QyA1RiA0NyA1MCA0NSAyRSA1MyA1MCAzNSAzMyAwQSAwMCAwMCAwMCAgdCBcX0dQRS5TUDUzLi4u
LgogICAgOENBMDogMDAgMDAgMDAgMDAgNUMgMkUgNUYgNDcgNTAgNDUgNTMgNTAgMzUgMzMgQTAg
NEYgIC4uLi5cLl9HUEVTUDUzLk8KICAgIDhDQjA6IDA0IDkzIDdCIDYwIDBCIDAwIDEwIDAwIDBC
IDAwIDEwIEEwIDQyIDA0IDVCIDEyICAuLntgLi4uLi4uLi5CLlsuCiAgICA4Q0MwOiA1QyAyRSA1
RiA0NyA1MCA0NSA1MyA1MCAzNSAzNCAwMCA0RCAzNCAzNiAzMCAwRCAgXC5fR1BFU1A1NC5NNDYw
LgogICAgOENEMDogMjAgMjAgNEIgNDUgNTIgMkQgNDEgNTMgNEMgMkQgNDMgNjEgNkMgNkMgNkYg
NzUgICAgS0VSLUFTTC1DYWxsb3UKICAgIDhDRTA6IDc0IDIwIDVDIDVGIDQ3IDUwIDQ1IDJFIDUz
IDUwIDM1IDM0IDBBIDAwIDAwIDAwICB0IFxfR1BFLlNQNTQuLi4uCiAgICA4Q0YwOiAwMCAwMCAw
MCAwMCA1QyAyRSA1RiA0NyA1MCA0NSA1MyA1MCAzNSAzNCBBMCA0RiAgLi4uLlwuX0dQRVNQNTQu
TwogICAgOEQwMDogMDQgOTMgN0IgNjAgMEIgMDAgMjAgMDAgMEIgMDAgMjAgQTAgNDIgMDQgNUIg
MTIgIC4ue2AuLiAuLi4gLkIuWy4KICAgIDhEMTA6IDVDIDJFIDVGIDQ3IDUwIDQ1IDUzIDUwIDM1
IDM1IDAwIDREIDM0IDM2IDMwIDBEICBcLl9HUEVTUDU1Lk00NjAuCiAgICA4RDIwOiAyMCAyMCA0
QiA0NSA1MiAyRCA0MSA1MyA0QyAyRCA0MyA2MSA2QyA2QyA2RiA3NSAgICBLRVItQVNMLUNhbGxv
dQogICAgOEQzMDogNzQgMjAgNUMgNUYgNDcgNTAgNDUgMkUgNTMgNTAgMzUgMzUgMEEgMDAgMDAg
MDAgIHQgXF9HUEUuU1A1NS4uLi4KICAgIDhENDA6IDAwIDAwIDAwIDAwIDVDIDJFIDVGIDQ3IDUw
IDQ1IDUzIDUwIDM1IDM1IEEwIDRGICAuLi4uXC5fR1BFU1A1NS5PCiAgICA4RDUwOiAwNCA5MyA3
QiA2MCAwQiAwMCA0MCAwMCAwQiAwMCA0MCBBMCA0MiAwNCA1QiAxMiAgLi57YC4uQC4uLkAuQi5b
LgogICAgOEQ2MDogNUMgMkUgNUYgNDcgNTAgNDUgNTMgNTAgMzUgMzYgMDAgNEQgMzQgMzYgMzAg
MEQgIFwuX0dQRVNQNTYuTTQ2MC4KICAgIDhENzA6IDIwIDIwIDRCIDQ1IDUyIDJEIDQxIDUzIDRD
IDJEIDQzIDYxIDZDIDZDIDZGIDc1ICAgIEtFUi1BU0wtQ2FsbG91CiAgICA4RDgwOiA3NCAyMCA1
QyA1RiA0NyA1MCA0NSAyRSA1MyA1MCAzNSAzNiAwQSAwMCAwMCAwMCAgdCBcX0dQRS5TUDU2Li4u
LgogICAgOEQ5MDogMDAgMDAgMDAgMDAgNUMgMkUgNUYgNDcgNTAgNDUgNTMgNTAgMzUgMzYgQTAg
NEYgIC4uLi5cLl9HUEVTUDU2Lk8KICAgIDhEQTA6IDA0IDkzIDdCIDYwIDBCIDAwIDgwIDAwIDBC
IDAwIDgwIEEwIDQyIDA0IDVCIDEyICAuLntgLi4uLi4uLi5CLlsuCiAgICA4REIwOiA1QyAyRSA1
RiA0NyA1MCA0NSA1MyA1MCAzNSAzNyAwMCA0RCAzNCAzNiAzMCAwRCAgXC5fR1BFU1A1Ny5NNDYw
LgogICAgOERDMDogMjAgMjAgNEIgNDUgNTIgMkQgNDEgNTMgNEMgMkQgNDMgNjEgNkMgNkMgNkYg
NzUgICAgS0VSLUFTTC1DYWxsb3UKICAgIDhERDA6IDc0IDIwIDVDIDVGIDQ3IDUwIDQ1IDJFIDUz
IDUwIDM1IDM3IDBBIDAwIDAwIDAwICB0IFxfR1BFLlNQNTcuLi4uCiAgICA4REUwOiAwMCAwMCAw
MCAwMCA1QyAyRSA1RiA0NyA1MCA0NSA1MyA1MCAzNSAzNyBBMCA0MiAgLi4uLlwuX0dQRVNQNTcu
QgogICAgOERGMDogMDQgNUIgMTIgNUMgMkUgNUYgNDcgNTAgNDUgNDEgNDkgNDUgMzIgMDAgNEQg
MzQgIC5bLlwuX0dQRUFJRTIuTTQKICAgIDhFMDA6IDM2IDMwIDBEIDIwIDIwIDRCIDQ1IDUyIDJE
IDQxIDUzIDRDIDJEIDQzIDYxIDZDICA2MC4gIEtFUi1BU0wtQ2FsCiAgICA4RTEwOiA2QyA2RiA3
NSA3NCAyMCA1QyA1RiA0NyA1MCA0NSAyRSA0MSA0OSA0NSAzMiAwQSAgbG91dCBcX0dQRS5BSUUy
LgogICAgOEUyMDogMDAgMDAgMDAgMDAgMDAgMDAgMDAgNUMgMkUgNUYgNDcgNTAgNDUgNDEgNDkg
NDUgIC4uLi4uLi5cLl9HUEVBSUUKICAgIDhFMzA6IDMyIDREIDM0IDM2IDMwIDBEIDIwIDIwIDRC
IDQ1IDUyIDJEIDQxIDUzIDRDIDJEICAyTTQ2MC4gIEtFUi1BU0wtCiAgICA4RTQwOiA1QyA1RiA0
NyA1MCA0NSAyRSA1MyA0OSA0NSAzMiAyMCA0NSA2RSA2NCAwQSAwMCAgXF9HUEUuU0lFMiBFbmQu
LgogICAgOEU1MDogMDAgMDAgMDAgMDAgMDAgMDAgMTQgNEYgNUMgNTMgNDkgNDUgMzMgMDggNEQg
MzQgIC4uLi4uLi5PXFNJRTMuTTQKICAgIDhFNjA6IDM2IDMwIDBEIDIwIDIwIDRCIDQ1IDUyIDJE
IDQxIDUzIDRDIDJEIDVDIDVGIDQ3ICA2MC4gIEtFUi1BU0wtXF9HCiAgICA4RTcwOiA1MCA0NSAy
RSA1MyA0OSA0NSAzMyAyMCA1MyA3NCA2MSA3MiA3NCAwQSAwMCAwMCAgUEUuU0lFMyBTdGFydC4u
LgogICAgOEU4MDogMDAgMDAgMDAgMDAgMDAgQTAgNDIgMDQgNUIgMTIgNUMgMkUgNUYgNDcgNTAg
NDUgIC4uLi4uLkIuWy5cLl9HUEUKICAgIDhFOTA6IDQyIDQ5IDQ1IDMzIDAwIDREIDM0IDM2IDMw
IDBEIDIwIDIwIDRCIDQ1IDUyIDJEICBCSUUzLk00NjAuICBLRVItCiAgICA4RUEwOiA0MSA1MyA0
QyAyRCA0MyA2MSA2QyA2QyA2RiA3NSA3NCAyMCA1QyA1RiA0NyA1MCAgQVNMLUNhbGxvdXQgXF9H
UAogICAgOEVCMDogNDUgMkUgNDIgNDkgNDUgMzMgMEEgMDAgMDAgMDAgMDAgMDAgMDAgMDAgNUMg
MkUgIEUuQklFMy4uLi4uLi4uXC4KICAgIDhFQzA6IDVGIDQ3IDUwIDQ1IDQyIDQ5IDQ1IDMzIDcw
IDREIDM0IDQ2IDMxIDBBIDAzIDYwICBfR1BFQklFM3BNNEYxLi5gCiAgICA4RUQwOiBBMCA0QiAw
NCA5MyA3QiA2MCAwMSAwMCAwMSBBMCA0MiAwNCA1QiAxMiA1QyAyRSAgLksuLntgLi4uLkIuWy5c
LgogICAgOEVFMDogNUYgNDcgNTAgNDUgNTMgNTAgMzYgMzAgMDAgNEQgMzQgMzYgMzAgMEQgMjAg
MjAgIF9HUEVTUDYwLk00NjAuICAKICAgIDhFRjA6IDRCIDQ1IDUyIDJEIDQxIDUzIDRDIDJEIDQz
IDYxIDZDIDZDIDZGIDc1IDc0IDIwICBLRVItQVNMLUNhbGxvdXQgCiAgICA4RjAwOiA1QyA1RiA0
NyA1MCA0NSAyRSA1MyA1MCAzNiAzMCAwQSAwMCAwMCAwMCAwMCAwMCAgXF9HUEUuU1A2MC4uLi4u
LgogICAgOEYxMDogMDAgMDAgNUMgMkUgNUYgNDcgNTAgNDUgNTMgNTAgMzYgMzAgQTAgNEQgMDQg
OTMgIC4uXC5fR1BFU1A2MC5NLi4KICAgIDhGMjA6IDdCIDYwIDBBIDAyIDAwIDBBIDAyIEEwIDQy
IDA0IDVCIDEyIDVDIDJFIDVGIDQ3ICB7YC4uLi4uLkIuWy5cLl9HCiAgICA4RjMwOiA1MCA0NSA1
MyA1MCAzNiAzMSAwMCA0RCAzNCAzNiAzMCAwRCAyMCAyMCA0QiA0NSAgUEVTUDYxLk00NjAuICBL
RQogICAgOEY0MDogNTIgMkQgNDEgNTMgNEMgMkQgNDMgNjEgNkMgNkMgNkYgNzUgNzQgMjAgNUMg
NUYgIFItQVNMLUNhbGxvdXQgXF8KICAgIDhGNTA6IDQ3IDUwIDQ1IDJFIDUzIDUwIDM2IDMxIDBB
IDAwIDAwIDAwIDAwIDAwIDAwIDAwICBHUEUuU1A2MS4uLi4uLi4uCiAgICA4RjYwOiA1QyAyRSA1
RiA0NyA1MCA0NSA1MyA1MCAzNiAzMSBBMCA0RCAwNCA5MyA3QiA2MCAgXC5fR1BFU1A2MS5NLi57
YAogICAgOEY3MDogMEEgMDQgMDAgMEEgMDQgQTAgNDIgMDQgNUIgMTIgNUMgMkUgNUYgNDcgNTAg
NDUgIC4uLi4uLkIuWy5cLl9HUEUKICAgIDhGODA6IDUzIDUwIDM2IDMyIDAwIDREIDM0IDM2IDMw
IDBEIDIwIDIwIDRCIDQ1IDUyIDJEICBTUDYyLk00NjAuICBLRVItCiAgICA4RjkwOiA0MSA1MyA0
QyAyRCA0MyA2MSA2QyA2QyA2RiA3NSA3NCAyMCA1QyA1RiA0NyA1MCAgQVNMLUNhbGxvdXQgXF9H
UAogICAgOEZBMDogNDUgMkUgNTMgNTAgMzYgMzIgMEEgMDAgMDAgMDAgMDAgMDAgMDAgMDAgNUMg
MkUgIEUuU1A2Mi4uLi4uLi4uXC4KICAgIDhGQjA6IDVGIDQ3IDUwIDQ1IDUzIDUwIDM2IDMyIEEw
IDREIDA0IDkzIDdCIDYwIDBBIDA4ICBfR1BFU1A2Mi5NLi57YC4uCiAgICA4RkMwOiAwMCAwQSAw
OCBBMCA0MiAwNCA1QiAxMiA1QyAyRSA1RiA0NyA1MCA0NSA1MyA1MCAgLi4uLkIuWy5cLl9HUEVT
UAogICAgOEZEMDogMzYgMzMgMDAgNEQgMzQgMzYgMzAgMEQgMjAgMjAgNEIgNDUgNTIgMkQgNDEg
NTMgIDYzLk00NjAuICBLRVItQVMKICAgIDhGRTA6IDRDIDJEIDQzIDYxIDZDIDZDIDZGIDc1IDc0
IDIwIDVDIDVGIDQ3IDUwIDQ1IDJFICBMLUNhbGxvdXQgXF9HUEUuCiAgICA4RkYwOiA1MyA1MCAz
NiAzMyAwQSAwMCAwMCAwMCAwMCAwMCAwMCAwMCA1QyAyRSA1RiA0NyAgU1A2My4uLi4uLi4uXC5f
RwogICAgOTAwMDogNTAgNDUgNTMgNTAgMzYgMzMgQTAgNEQgMDQgOTMgN0IgNjAgMEEgMTAgMDAg
MEEgIFBFU1A2My5NLi57YC4uLi4KICAgIDkwMTA6IDEwIEEwIDQyIDA0IDVCIDEyIDVDIDJFIDVG
IDQ3IDUwIDQ1IDUzIDUwIDM2IDM0ICAuLkIuWy5cLl9HUEVTUDY0CiAgICA5MDIwOiAwMCA0RCAz
NCAzNiAzMCAwRCAyMCAyMCA0QiA0NSA1MiAyRCA0MSA1MyA0QyAyRCAgLk00NjAuICBLRVItQVNM
LQogICAgOTAzMDogNDMgNjEgNkMgNkMgNkYgNzUgNzQgMjAgNUMgNUYgNDcgNTAgNDUgMkUgNTMg
NTAgIENhbGxvdXQgXF9HUEUuU1AKICAgIDkwNDA6IDM2IDM0IDBBIDAwIDAwIDAwIDAwIDAwIDAw
IDAwIDVDIDJFIDVGIDQ3IDUwIDQ1ICA2NC4uLi4uLi4uXC5fR1BFCiAgICA5MDUwOiA1MyA1MCAz
NiAzNCBBMCA0RCAwNCA5MyA3QiA2MCAwQSAyMCAwMCAwQSAyMCBBMCAgU1A2NC5NLi57YC4gLi4g
LgogICAgOTA2MDogNDIgMDQgNUIgMTIgNUMgMkUgNUYgNDcgNTAgNDUgNTMgNTAgMzYgMzUgMDAg
NEQgIEIuWy5cLl9HUEVTUDY1Lk0KICAgIDkwNzA6IDM0IDM2IDMwIDBEIDIwIDIwIDRCIDQ1IDUy
IDJEIDQxIDUzIDRDIDJEIDQzIDYxICA0NjAuICBLRVItQVNMLUNhCiAgICA5MDgwOiA2QyA2QyA2
RiA3NSA3NCAyMCA1QyA1RiA0NyA1MCA0NSAyRSA1MyA1MCAzNiAzNSAgbGxvdXQgXF9HUEUuU1A2
NQogICAgOTA5MDogMEEgMDAgMDAgMDAgMDAgMDAgMDAgMDAgNUMgMkUgNUYgNDcgNTAgNDUgNTMg
NTAgIC4uLi4uLi4uXC5fR1BFU1AKICAgIDkwQTA6IDM2IDM1IEEwIDREIDA0IDkzIDdCIDYwIDBB
IDQwIDAwIDBBIDQwIEEwIDQyIDA0ICA2NS5NLi57YC5ALi5ALkIuCiAgICA5MEIwOiA1QiAxMiA1
QyAyRSA1RiA0NyA1MCA0NSA1MyA1MCAzNiAzNiAwMCA0RCAzNCAzNiAgWy5cLl9HUEVTUDY2Lk00
NgogICAgOTBDMDogMzAgMEQgMjAgMjAgNEIgNDUgNTIgMkQgNDEgNTMgNEMgMkQgNDMgNjEgNkMg
NkMgIDAuICBLRVItQVNMLUNhbGwKICAgIDkwRDA6IDZGIDc1IDc0IDIwIDVDIDVGIDQ3IDUwIDQ1
IDJFIDUzIDUwIDM2IDM2IDBBIDAwICBvdXQgXF9HUEUuU1A2Ni4uCiAgICA5MEUwOiAwMCAwMCAw
MCAwMCAwMCAwMCA1QyAyRSA1RiA0NyA1MCA0NSA1MyA1MCAzNiAzNiAgLi4uLi4uXC5fR1BFU1A2
NgogICAgOTBGMDogQTAgNEQgMDQgOTMgN0IgNjAgMEEgODAgMDAgMEEgODAgQTAgNDIgMDQgNUIg
MTIgIC5NLi57YC4uLi4uLkIuWy4KICAgIDkxMDA6IDVDIDJFIDVGIDQ3IDUwIDQ1IDUzIDUwIDM2
IDM3IDAwIDREIDM0IDM2IDMwIDBEICBcLl9HUEVTUDY3Lk00NjAuCiAgICA5MTEwOiAyMCAyMCA0
QiA0NSA1MiAyRCA0MSA1MyA0QyAyRCA0MyA2MSA2QyA2QyA2RiA3NSAgICBLRVItQVNMLUNhbGxv
dQogICAgOTEyMDogNzQgMjAgNUMgNUYgNDcgNTAgNDUgMkUgNTMgNTAgMzYgMzcgMEEgMDAgMDAg
MDAgIHQgXF9HUEUuU1A2Ny4uLi4KICAgIDkxMzA6IDAwIDAwIDAwIDAwIDVDIDJFIDVGIDQ3IDUw
IDQ1IDUzIDUwIDM2IDM3IEEwIDRGICAuLi4uXC5fR1BFU1A2Ny5PCiAgICA5MTQwOiAwNCA5MyA3
QiA2MCAwQiAwMCAwMSAwMCAwQiAwMCAwMSBBMCA0MiAwNCA1QiAxMiAgLi57YC4uLi4uLi4uQi5b
LgogICAgOTE1MDogNUMgMkUgNUYgNDcgNTAgNDUgNTMgNTAgMzcgMzAgMDAgNEQgMzQgMzYgMzAg
MEQgIFwuX0dQRVNQNzAuTTQ2MC4KICAgIDkxNjA6IDIwIDIwIDRCIDQ1IDUyIDJEIDQxIDUzIDRD
IDJEIDQzIDYxIDZDIDZDIDZGIDc1ICAgIEtFUi1BU0wtQ2FsbG91CiAgICA5MTcwOiA3NCAyMCA1
QyA1RiA0NyA1MCA0NSAyRSA1MyA1MCAzNyAzMCAwQSAwMCAwMCAwMCAgdCBcX0dQRS5TUDcwLi4u
LgogICAgOTE4MDogMDAgMDAgMDAgMDAgNUMgMkUgNUYgNDcgNTAgNDUgNTMgNTAgMzcgMzAgQTAg
NEYgIC4uLi5cLl9HUEVTUDcwLk8KICAgIDkxOTA6IDA0IDkzIDdCIDYwIDBCIDAwIDAyIDAwIDBC
IDAwIDAyIEEwIDQyIDA0IDVCIDEyICAuLntgLi4uLi4uLi5CLlsuCiAgICA5MUEwOiA1QyAyRSA1
RiA0NyA1MCA0NSA1MyA1MCAzNyAzMSAwMCA0RCAzNCAzNiAzMCAwRCAgXC5fR1BFU1A3MS5NNDYw
LgogICAgOTFCMDogMjAgMjAgNEIgNDUgNTIgMkQgNDEgNTMgNEMgMkQgNDMgNjEgNkMgNkMgNkYg
NzUgICAgS0VSLUFTTC1DYWxsb3UKICAgIDkxQzA6IDc0IDIwIDVDIDVGIDQ3IDUwIDQ1IDJFIDUz
IDUwIDM3IDMxIDBBIDAwIDAwIDAwICB0IFxfR1BFLlNQNzEuLi4uCiAgICA5MUQwOiAwMCAwMCAw
MCAwMCA1QyAyRSA1RiA0NyA1MCA0NSA1MyA1MCAzNyAzMSBBMCA0RiAgLi4uLlwuX0dQRVNQNzEu
TwogICAgOTFFMDogMDQgOTMgN0IgNjAgMEIgMDAgMDQgMDAgMEIgMDAgMDQgQTAgNDIgMDQgNUIg
MTIgIC4ue2AuLi4uLi4uLkIuWy4KICAgIDkxRjA6IDVDIDJFIDVGIDQ3IDUwIDQ1IDUzIDUwIDM3
IDMyIDAwIDREIDM0IDM2IDMwIDBEICBcLl9HUEVTUDcyLk00NjAuCiAgICA5MjAwOiAyMCAyMCA0
QiA0NSA1MiAyRCA0MSA1MyA0QyAyRCA0MyA2MSA2QyA2QyA2RiA3NSAgICBLRVItQVNMLUNhbGxv
dQogICAgOTIxMDogNzQgMjAgNUMgNUYgNDcgNTAgNDUgMkUgNTMgNTAgMzcgMzIgMEEgMDAgMDAg
MDAgIHQgXF9HUEUuU1A3Mi4uLi4KICAgIDkyMjA6IDAwIDAwIDAwIDAwIDVDIDJFIDVGIDQ3IDUw
IDQ1IDUzIDUwIDM3IDMyIEEwIDRGICAuLi4uXC5fR1BFU1A3Mi5PCiAgICA5MjMwOiAwNCA5MyA3
QiA2MCAwQiAwMCAwOCAwMCAwQiAwMCAwOCBBMCA0MiAwNCA1QiAxMiAgLi57YC4uLi4uLi4uQi5b
LgogICAgOTI0MDogNUMgMkUgNUYgNDcgNTAgNDUgNTMgNTAgMzcgMzMgMDAgNEQgMzQgMzYgMzAg
MEQgIFwuX0dQRVNQNzMuTTQ2MC4KICAgIDkyNTA6IDIwIDIwIDRCIDQ1IDUyIDJEIDQxIDUzIDRD
IDJEIDQzIDYxIDZDIDZDIDZGIDc1ICAgIEtFUi1BU0wtQ2FsbG91CiAgICA5MjYwOiA3NCAyMCA1
QyA1RiA0NyA1MCA0NSAyRSA1MyA1MCAzNyAzMyAwQSAwMCAwMCAwMCAgdCBcX0dQRS5TUDczLi4u
LgogICAgOTI3MDogMDAgMDAgMDAgMDAgNUMgMkUgNUYgNDcgNTAgNDUgNTMgNTAgMzcgMzMgQTAg
NEYgIC4uLi5cLl9HUEVTUDczLk8KICAgIDkyODA6IDA0IDkzIDdCIDYwIDBCIDAwIDEwIDAwIDBC
IDAwIDEwIEEwIDQyIDA0IDVCIDEyICAuLntgLi4uLi4uLi5CLlsuCiAgICA5MjkwOiA1QyAyRSA1
RiA0NyA1MCA0NSA1MyA1MCAzNyAzNCAwMCA0RCAzNCAzNiAzMCAwRCAgXC5fR1BFU1A3NC5NNDYw
LgogICAgOTJBMDogMjAgMjAgNEIgNDUgNTIgMkQgNDEgNTMgNEMgMkQgNDMgNjEgNkMgNkMgNkYg
NzUgICAgS0VSLUFTTC1DYWxsb3UKICAgIDkyQjA6IDc0IDIwIDVDIDVGIDQ3IDUwIDQ1IDJFIDUz
IDUwIDM3IDM0IDBBIDAwIDAwIDAwICB0IFxfR1BFLlNQNzQuLi4uCiAgICA5MkMwOiAwMCAwMCAw
MCAwMCA1QyAyRSA1RiA0NyA1MCA0NSA1MyA1MCAzNyAzNCBBMCA0RiAgLi4uLlwuX0dQRVNQNzQu
TwogICAgOTJEMDogMDQgOTMgN0IgNjAgMEIgMDAgMjAgMDAgMEIgMDAgMjAgQTAgNDIgMDQgNUIg
MTIgIC4ue2AuLiAuLi4gLkIuWy4KICAgIDkyRTA6IDVDIDJFIDVGIDQ3IDUwIDQ1IDUzIDUwIDM3
IDM1IDAwIDREIDM0IDM2IDMwIDBEICBcLl9HUEVTUDc1Lk00NjAuCiAgICA5MkYwOiAyMCAyMCA0
QiA0NSA1MiAyRCA0MSA1MyA0QyAyRCA0MyA2MSA2QyA2QyA2RiA3NSAgICBLRVItQVNMLUNhbGxv
dQogICAgOTMwMDogNzQgMjAgNUMgNUYgNDcgNTAgNDUgMkUgNTMgNTAgMzcgMzUgMEEgMDAgMDAg
MDAgIHQgXF9HUEUuU1A3NS4uLi4KICAgIDkzMTA6IDAwIDAwIDAwIDAwIDVDIDJFIDVGIDQ3IDUw
IDQ1IDUzIDUwIDM3IDM1IEEwIDRGICAuLi4uXC5fR1BFU1A3NS5PCiAgICA5MzIwOiAwNCA5MyA3
QiA2MCAwQiAwMCA0MCAwMCAwQiAwMCA0MCBBMCA0MiAwNCA1QiAxMiAgLi57YC4uQC4uLkAuQi5b
LgogICAgOTMzMDogNUMgMkUgNUYgNDcgNTAgNDUgNTMgNTAgMzcgMzYgMDAgNEQgMzQgMzYgMzAg
MEQgIFwuX0dQRVNQNzYuTTQ2MC4KICAgIDkzNDA6IDIwIDIwIDRCIDQ1IDUyIDJEIDQxIDUzIDRD
IDJEIDQzIDYxIDZDIDZDIDZGIDc1ICAgIEtFUi1BU0wtQ2FsbG91CiAgICA5MzUwOiA3NCAyMCA1
QyA1RiA0NyA1MCA0NSAyRSA1MyA1MCAzNyAzNiAwQSAwMCAwMCAwMCAgdCBcX0dQRS5TUDc2Li4u
LgogICAgOTM2MDogMDAgMDAgMDAgMDAgNUMgMkUgNUYgNDcgNTAgNDUgNTMgNTAgMzcgMzYgQTAg
NEYgIC4uLi5cLl9HUEVTUDc2Lk8KICAgIDkzNzA6IDA0IDkzIDdCIDYwIDBCIDAwIDgwIDAwIDBC
IDAwIDgwIEEwIDQyIDA0IDVCIDEyICAuLntgLi4uLi4uLi5CLlsuCiAgICA5MzgwOiA1QyAyRSA1
RiA0NyA1MCA0NSA1MyA1MCAzNyAzNyAwMCA0RCAzNCAzNiAzMCAwRCAgXC5fR1BFU1A3Ny5NNDYw
LgogICAgOTM5MDogMjAgMjAgNEIgNDUgNTIgMkQgNDEgNTMgNEMgMkQgNDMgNjEgNkMgNkMgNkYg
NzUgICAgS0VSLUFTTC1DYWxsb3UKICAgIDkzQTA6IDc0IDIwIDVDIDVGIDQ3IDUwIDQ1IDJFIDUz
IDUwIDM3IDM3IDBBIDAwIDAwIDAwICB0IFxfR1BFLlNQNzcuLi4uCiAgICA5M0IwOiAwMCAwMCAw
MCAwMCA1QyAyRSA1RiA0NyA1MCA0NSA1MyA1MCAzNyAzNyBBMCA0MiAgLi4uLlwuX0dQRVNQNzcu
QgogICAgOTNDMDogMDQgNUIgMTIgNUMgMkUgNUYgNDcgNTAgNDUgNDEgNDkgNDUgMzMgMDAgNEQg
MzQgIC5bLlwuX0dQRUFJRTMuTTQKICAgIDkzRDA6IDM2IDMwIDBEIDIwIDIwIDRCIDQ1IDUyIDJE
IDQxIDUzIDRDIDJEIDQzIDYxIDZDICA2MC4gIEtFUi1BU0wtQ2FsCiAgICA5M0UwOiA2QyA2RiA3
NSA3NCAyMCA1QyA1RiA0NyA1MCA0NSAyRSA0MSA0OSA0NSAzMyAwQSAgbG91dCBcX0dQRS5BSUUz
LgogICAgOTNGMDogMDAgMDAgMDAgMDAgMDAgMDAgMDAgNUMgMkUgNUYgNDcgNTAgNDUgNDEgNDkg
NDUgIC4uLi4uLi5cLl9HUEVBSUUKICAgIDk0MDA6IDMzIDREIDM0IDM2IDMwIDBEIDIwIDIwIDRC
IDQ1IDUyIDJEIDQxIDUzIDRDIDJEICAzTTQ2MC4gIEtFUi1BU0wtCiAgICA5NDEwOiA1QyA1RiA0
NyA1MCA0NSAyRSA1MyA0OSA0NSAzMyAyMCA0NSA2RSA2NCAwQSAwMCAgXF9HUEUuU0lFMyBFbmQu
LgogICAgOTQyMDogMDAgMDAgMDAgMDAgMDAgMDAgMDggNEQgMzQgNDQgMzIgMTEgMDMgMEEgMDgg
MTQgIC4uLi4uLi5NNEQyLi4uLi4KICAgIDk0MzA6IDREIDFCIDU4IDRDIDMwIDQyIDA4IDcwIDEx
IDAzIDBBIDA4IDYzIDhCIDYzIDAwICBNLlhMMEIucC4uLi5jLmMuCiAgICA5NDQwOiA0RCAzMiAz
NSAzNCA4QyA2MyAwQSAwMiA0RCAzMiAzNSAzNSA4QSA2MyAwQSAwMyAgTTI1NC5jLi5NMjU1LmMu
LgogICAgOTQ1MDogNEQgMzIgMzUgMzYgNzAgMDAgNEQgMzIgMzUgMzYgNzAgMEEgMDcgNEQgMzIg
MzUgIE0yNTZwLk0yNTZwLi5NMjUKICAgIDk0NjA6IDM0IDcwIDBBIDMwIDREIDMyIDM1IDM1IEEw
IDQ0IDE4IDVCIDEyIDVDIDJFIDVGICA0cC4wTTI1NS5ELlsuXC5fCiAgICA5NDcwOiA1MyA0MiA1
RiA0MSA0QyA0OSA0MiAwMCA0RCAzNCAzNiAzMCAwRCAyMCAyMCA0QiAgU0JfQUxJQi5NNDYwLiAg
SwogICAgOTQ4MDogNDUgNTIgMkQgNDEgNTMgNEMgMkQgNDMgNjEgNkMgNkMgMjAgNUMgNUYgNTMg
NDIgIEVSLUFTTC1DYWxsIFxfU0IKICAgIDk0OTA6IDJFIDQxIDRDIDQ5IDQyIDIwIDI4IDMwIDc4
IDMwIDQzIDJDIDIwIDMwIDc4IDI1ICAuQUxJQiAoMHgwQywgMHglCiAgICA5NEEwOiA1OCAyOSAw
QSAwMCA2MyAwMCAwMCAwMCAwMCAwMCA3MCA1QyAyRSA1RiA1MyA0MiAgWCkuLmMuLi4uLnBcLl9T
QgogICAgOTRCMDogNUYgNDEgNEMgNDkgNDIgMEEgMEMgNjMgNjQgNzAgNjQgNEQgMzQgNDQgMzIg
OEEgIF9BTElCLi5jZHBkTTREMi4KICAgIDk0QzA6IDREIDM0IDQ0IDMyIDAwIDREIDM0IDQ0IDMw
IDhBIDREIDM0IDQ0IDMyIDBBIDA0ICBNNEQyLk00RDAuTTREMi4uCiAgICA5NEQwOiA0RCAzNCA0
NCAzMSA5OSA0RCAzNCA0NCAzMCA2MCA5OSA0RCAzNCA0NCAzMSA2MSAgTTREMS5NNEQwYC5NNEQx
YQogICAgOTRFMDogNEQgMzQgMzYgMzAgMEQgMjAgMjAgNEIgNDUgNTIgMkQgNDEgNTMgNEMgMkQg
NDEgIE00NjAuICBLRVItQVNMLUEKICAgIDk0RjA6IDRDIDQ5IDQyIDIwIDUyIDY1IDc0IDc1IDcy
IDZFIDIwIDQ0IDYxIDc0IDYxIDIwICBMSUIgUmV0dXJuIERhdGEgCiAgICA5NTAwOiAyOCAzMCA3
OCAyNSA1OCAyQyAyMCAzMCA3OCAyNSA1OCAyOSAwQSAwMCA2MCA2MSAgKDB4JVgsIDB4JVgpLi5g
YQogICAgOTUxMDogMDAgMDAgMDAgMDAgQTAgNDIgMDYgOTMgNjAgMDAgQTAgNEMgMDUgNUIgMTIg
NUMgIC4uLi4uQi4uYC4uTC5bLlwKICAgIDk1MjA6IDJFIDVGIDUzIDQyIDVGIDQxIDUwIDQxIDQ0
IDAwIDcwIDYxIDg4IDVDIDJGIDAzICAuX1NCX0FQQUQucGEuXC8uCiAgICA5NTMwOiA1RiA1MyA0
MiA1RiA0MSA1MCA0MSA0NCA0RCAzNCAzNCAzNiAwMSAwMCA0RCAzNCAgX1NCX0FQQURNNDQ2Li5N
NAogICAgOTU0MDogMzYgMzAgMEQgMjAgMjAgNEIgNDUgNTIgMkQgNDEgNTMgNEMgMkQgNEUgNkYg
NzQgIDYwLiAgS0VSLUFTTC1Ob3QKICAgIDk1NTA6IDY5IDY2IDc5IDIwIDVDIDVGIDUzIDQyIDJF
IDQxIDUwIDQxIDQ0IDIwIDMwIDc4ICBpZnkgXF9TQi5BUEFEIDB4CiAgICA5NTYwOiAzOCAzMCAw
QSAwMCAwMCAwMCAwMCAwMCAwMCAwMCA4NiA1QyAyRSA1RiA1MyA0MiAgODAuLi4uLi4uLi5cLl9T
QgogICAgOTU3MDogNUYgNDEgNTAgNDEgNDQgMEEgODAgQTEgNDUgMDcgQTAgMzAgOTMgNjAgMDEg
NEQgIF9BUEFELi4uRS4uMC5gLk0KICAgIDk1ODA6IDM0IDM2IDMwIDBEIDIwIDIwIDRCIDQ1IDUy
IDJEIDQxIDUzIDRDIDJEIDRFIDZGICA0NjAuICBLRVItQVNMLU5vCiAgICA5NTkwOiA3NCA2OSA2
NiA3OSAyMCA1QyA1RiA1MyA0MiAyRSA0MSA1MCA0MSA0NCAyMCAzMCAgdGlmeSBcX1NCLkFQQUQg
MAogICAgOTVBMDogNzggMzggMzQgMEEgMDAgMDAgMDAgMDAgMDAgMDAgMDAgQTEgNDEgMDQgQTAg
M0UgIHg4NC4uLi4uLi4uLkEuLj4KICAgIDk1QjA6IDkzIDYwIDBBIDAyIDREIDM0IDM2IDMwIDBE
IDIwIDIwIDRCIDQ1IDUyIDJEIDQxICAuYC4uTTQ2MC4gIEtFUi1BCiAgICA5NUMwOiA1MyA0QyAy
RCA0RSA2RiA3NCA2OSA2NiA3OSAyMCA1QyA1RiA1MyA0MiAyRSA0MSAgU0wtTm90aWZ5IFxfU0Iu
QQogICAgOTVEMDogNTAgNDEgNDQgMjAgMzAgNzggMzggMzUgMEEgMDAgMDAgMDAgMDAgMDAgMDAg
MDAgIFBBRCAweDg1Li4uLi4uLi4KICAgIDk1RTA6IEEwIDBDIDVCIDEyIDRFIDQ2IDUwIDQzIDAw
IDRFIDQ2IDUwIDQzIDEwIDQxIDI0ICAuLlsuTkZQQy5ORlBDLkEkCiAgICA5NUYwOiA1QyA1RiA1
MyA0MiA1RiAwOCA0RCA0MSA0MyA0RiAwMCA1QiA4MiA0MiAyMyA0MSAgXF9TQl8uTUFDTy5bLkIj
QQogICAgOTYwMDogNTAgNDEgNDQgMDggNUYgNDggNDkgNDQgMEQgNDEgNDMgNTAgNDkgMzAgMzAg
MzAgIFBBRC5fSElELkFDUEkwMDAKICAgIDk2MTA6IDQzIDAwIDA4IDREIDM0IDM0IDM2IDEyIDA0
IDAyIDAxIDAwIDE0IDQwIDBEIDVGICBDLi5NNDQ2Li4uLi4uQC5fCiAgICA5NjIwOiA1MyA1NCA0
MSAwMCBBMCA0NyAwOSA1QyA1RiA0RiA1MyA0OSAwRCA1MCA3MiA2RiAgU1RBLi5HLlxfT1NJLlBy
bwogICAgOTYzMDogNjMgNjUgNzMgNzMgNkYgNzIgMjAgNDEgNjcgNjcgNzIgNjUgNjcgNjEgNzQg
NkYgIGNlc3NvciBBZ2dyZWdhdG8KICAgIDk2NDA6IDcyIDIwIDQ0IDY1IDc2IDY5IDYzIDY1IDAw
IDcwIDREIDMwIDM0IDQxIDREIDMxICByIERldmljZS5wTTA0QU0xCiAgICA5NjUwOiAzMiAzOCAw
QSA5MSA2MCBBMCAzNyA5MyA3QiA2MCAwQSA4MCAwMCAwQSA4MCA0RCAgMjguLmAuNy57YC4uLi4u
TQogICAgOTY2MDogMzQgMzYgMzAgMEQgMjAgMjAgNEIgNDUgNTIgMkQgNDEgNTMgNEMgMkQgNUMg
NUYgIDQ2MC4gIEtFUi1BU0wtXF8KICAgIDk2NzA6IDUzIDQyIDJFIDQxIDUwIDQxIDQ0IDJFIDVG
IDUzIDU0IDQxIDIwIDNEIDIwIDMwICBTQi5BUEFELl9TVEEgPSAwCiAgICA5NjgwOiA3OCA0NiAw
QSAwMCAwMCAwMCAwMCAwMCAwMCAwMCBBNCAwQSAwRiBBMSAyRSA0RCAgeEYuLi4uLi4uLi4uLi4u
TQogICAgOTY5MDogMzQgMzYgMzAgMEQgMjAgMjAgNEIgNDUgNTIgMkQgNDEgNTMgNEMgMkQgNUMg
NUYgIDQ2MC4gIEtFUi1BU0wtXF8KICAgIDk2QTA6IDUzIDQyIDJFIDQxIDUwIDQxIDQ0IDJFIDVG
IDUzIDU0IDQxIDIwIDNEIDIwIDMwICBTQi5BUEFELl9TVEEgPSAwCiAgICA5NkIwOiA3OCAzMCAw
QSAwMCAwMCAwMCAwMCAwMCAwMCAwMCBBNCAwMCBBMSAzMCA0RCAzNCAgeDAuLi4uLi4uLi4uLjBN
NAogICAgOTZDMDogMzYgMzAgMEQgMjAgMjAgNEIgNDUgNTIgMkQgNDEgNTMgNEMgMkQgMzEgMkQg
NUMgIDYwLiAgS0VSLUFTTC0xLVwKICAgIDk2RDA6IDVGIDUzIDQyIDJFIDQxIDUwIDQxIDQ0IDJF
IDVGIDUzIDU0IDQxIDIwIDNEIDIwICBfU0IuQVBBRC5fU1RBID0gCiAgICA5NkUwOiAzMCA3OCAz
MCAwQSAwMCAwMCAwMCAwMCAwMCAwMCAwMCBBNCAwMCAxNCA0MyAwRCAgMHgwLi4uLi4uLi4uLi5D
LgogICAgOTZGMDogNUYgNDkgNEUgNDkgMDAgNEQgMzQgMzYgMzAgMEQgMjAgMjAgNEIgNDUgNTIg
MkQgIF9JTkkuTTQ2MC4gIEtFUi0KICAgIDk3MDA6IDQxIDUzIDRDIDJEIDVDIDVGIDUzIDQyIDJF
IDQxIDUwIDQxIDQ0IDJFIDVGIDQ5ICBBU0wtXF9TQi5BUEFELl9JCiAgICA5NzEwOiA0RSA0OSAw
QSAwMCAwMCAwMCAwMCAwMCAwMCAwMCA3MCA0RCAzMCAzNCA0MSA0RCAgTkkuLi4uLi4uLnBNMDRB
TQogICAgOTcyMDogMzEgMzIgMzggMEEgOTEgNjAgQTAgNEEgMDkgOTAgOTMgN0IgNjAgMEEgQzAg
MDAgIDEyOC4uYC5KLi4ue2AuLi4KICAgIDk3MzA6IDBBIEMwIDkyIDkzIDdCIDYwIDBCIDAwIEZG
IDAwIDBCIDAwIEZGIDcwIDExIDAzICAuLi4ue2AuLi4uLi4ucC4uCiAgICA5NzQwOiAwQSAwOCA2
MyA4QiA2MyAwMCA0RCAzMiAzNSAzNCA4QyA2MyAwQSAwMiA0RCAzMiAgLi5jLmMuTTI1NC5jLi5N
MgogICAgOTc1MDogMzUgMzUgOEEgNjMgMEEgMDMgNEQgMzIgMzUgMzYgNzAgN0EgNjAgMEEgMDgg
MDAgIDU1LmMuLk0yNTZwemAuLi4KICAgIDk3NjA6IDREIDMyIDM1IDM2IDcwIDBBIDA3IDREIDMy
IDM1IDM0IDcwIDBBIDMxIDREIDMyICBNMjU2cC4uTTI1NHAuMU0yCiAgICA5NzcwOiAzNSAzNSBB
MCA0RSAwNCA1QiAxMiA1QyAyRSA1RiA1MyA0MiA1RiA0MSA0QyA0OSAgNTUuTi5bLlwuX1NCX0FM
SQogICAgOTc4MDogNDIgMDAgNEQgMzQgMzYgMzAgMEQgMjAgMjAgNEIgNDUgNTIgMkQgNDEgNTMg
NEMgIEIuTTQ2MC4gIEtFUi1BU0wKICAgIDk3OTA6IDJEIDQzIDYxIDZDIDZDIDIwIDVDIDVGIDUz
IDQyIDJFIDQxIDRDIDQ5IDQyIDIwICAtQ2FsbCBcX1NCLkFMSUIgCiAgICA5N0EwOiAyOCAzMCA3
OCAzMCA0MyAyQyAyMCAzMCA3OCAyNSA1OCAyOSAwQSAwMCA2MyAwMCAgKDB4MEMsIDB4JVgpLi5j
LgogICAgOTdCMDogMDAgMDAgMDAgMDAgNUMgMkUgNUYgNTMgNDIgNUYgNDEgNEMgNDkgNDIgMEEg
MEMgIC4uLi5cLl9TQl9BTElCLi4KICAgIDk3QzA6IDYzIDE0IDREIDA2IDVGIDUwIDU1IDUyIDAw
IDk5IDgzIDg4IDREIDM0IDM0IDM2ICBjLk0uX1BVUi4uLi5NNDQ2CiAgICA5N0QwOiAwMCAwMCA2
MCA5OSA4MyA4OCA0RCAzNCAzNCAzNiAwMSAwMCA2MSA0RCAzNCAzNiAgLi5gLi4uTTQ0Ni4uYU00
NgogICAgOTdFMDogMzAgMEQgMjAgMjAgNEIgNDUgNTIgMkQgNDEgNTMgNEMgMkQgNUMgNUYgNTMg
NDIgIDAuICBLRVItQVNMLVxfU0IKICAgIDk3RjA6IDJFIDQxIDUwIDQxIDQ0IDJFIDVGIDUwIDU1
IDUyIDIwIDUyIDY1IDc0IDc1IDcyICAuQVBBRC5fUFVSIFJldHVyCiAgICA5ODAwOiA2RSAyMCA1
MCA2MSA2MyA2QiA2MSA2NyA2NSAyMCAyOCAzMiAyOSAyMCAyOCAzMCAgbiBQYWNrYWdlICgyKSAo
MAogICAgOTgxMDogNzggMjUgNTggMkMgMjAgMzAgNzggMjUgNTggMjkgMjAgNzQgNkYgMjAgNEYg
NTMgIHglWCwgMHglWCkgdG8gT1MKICAgIDk4MjA6IDUwIDREIDBBIDAwIDYwIDYxIDAwIDAwIDAw
IDAwIEE0IDREIDM0IDM0IDM2ICAgICBQTS4uYGEuLi4uLk00NDYKCg==
--0000000000006f57f0060f47a720--


From xen-devel-bounces@lists.xenproject.org Sat Jan 20 12:45:24 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 20 Jan 2024 12:45:24 +0000
Received: from list by lists.xenproject.org with outflank-mailman.668991.1041873 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rRAix-00016F-ME; Sat, 20 Jan 2024 12:45:23 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 668991.1041873; Sat, 20 Jan 2024 12:45:23 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rRAix-00015j-IS; Sat, 20 Jan 2024 12:45:23 +0000
Received: by outflank-mailman (input) for mailman id 668991;
 Fri, 19 Jan 2024 09:50:07 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=8yYF=I5=kylinos.cn=chentao@srs-se1.protection.inumbo.net>)
 id 1rQlVn-0008GX-Sc
 for xen-devel@lists.xenproject.org; Fri, 19 Jan 2024 09:50:07 +0000
Received: from mailgw.kylinos.cn (mailgw.kylinos.cn [124.126.103.232])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 1eaa73d4-b6b0-11ee-98f2-6d05b1d4d9a1;
 Fri, 19 Jan 2024 10:50:05 +0100 (CET)
Received: from mail.kylinos.cn [(39.156.73.10)] by mailgw
 (envelope-from <chentao@kylinos.cn>) (Generic MTA)
 with ESMTP id 592375814; Fri, 19 Jan 2024 17:49:57 +0800
Received: from mail.kylinos.cn (localhost [127.0.0.1])
 by mail.kylinos.cn (NSMail) with SMTP id 96CFEE000EB9;
 Fri, 19 Jan 2024 17:49:57 +0800 (CST)
Received: from kernel.. (unknown [172.20.15.234])
 by mail.kylinos.cn (NSMail) with ESMTPA id F1FC7E000EB9;
 Fri, 19 Jan 2024 17:49:50 +0800 (CST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 1eaa73d4-b6b0-11ee-98f2-6d05b1d4d9a1
X-UUID: 32f247eb48334c838525b049013cc8ba-20240119
X-CID-P-RULE: Release_Ham
X-CID-O-INFO: VERSION:1.1.35,REQID:c3c69ea8-3676-47d9-80e3-92e8fc4c3fcf,IP:10,
	URL:0,TC:0,Content:-25,EDM:0,RT:0,SF:-3,FILE:0,BULK:0,RULE:Release_Ham,ACT
	ION:release,TS:-18
X-CID-INFO: VERSION:1.1.35,REQID:c3c69ea8-3676-47d9-80e3-92e8fc4c3fcf,IP:10,UR
	L:0,TC:0,Content:-25,EDM:0,RT:0,SF:-3,FILE:0,BULK:0,RULE:Release_Ham,ACTIO
	N:release,TS:-18
X-CID-META: VersionHash:5d391d7,CLOUDID:184d592f-1ab8-4133-9780-81938111c800,B
	ulkID:240119175000U37AOBT2,BulkQuantity:0,Recheck:0,SF:19|44|101|66|38|24|
	100|17|102,TC:nil,Content:0,EDM:-3,IP:-2,URL:11|1,File:nil,Bulk:nil,QS:nil
	,BEC:nil,COL:0,OSI:0,OSA:0,AV:0,LES:1,SPR:NO,DKR:0,DKP:0,BRR:0,BRE:0
X-CID-BVR: 0
X-CID-BAS: 0,_,0,_
X-CID-FACTOR: TF_CID_SPAM_ULN,TF_CID_SPAM_SNR,TF_CID_SPAM_FAS,TF_CID_SPAM_FSD,
	TF_CID_SPAM_FSI
X-UUID: 32f247eb48334c838525b049013cc8ba-20240119
X-ns-mid: postfix-65AA45C5-4977541798
From: Kunwu Chan <chentao@kylinos.cn>
To: jgross@suse.com,
	boris.ostrovsky@oracle.com,
	tglx@linutronix.de,
	mingo@redhat.com,
	bp@alien8.de,
	dave.hansen@linux.intel.com,
	x86@kernel.org,
	hpa@zytor.com
Cc: xen-devel@lists.xenproject.org,
	linux-kernel@vger.kernel.org,
	Kunwu Chan <chentao@kylinos.cn>,
	kernel test robot <lkp@intel.com>,
	Markus Elfring <Markus.Elfring@web.de>
Subject: [PATCH v3] x86/xen: Add some null pointer checking to smp.c
Date: Fri, 19 Jan 2024 17:49:48 +0800
Message-Id: <20240119094948.275390-1-chentao@kylinos.cn>
X-Mailer: git-send-email 2.39.2
MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable

kasprintf() returns a pointer to dynamically allocated memory
which can be NULL upon failure. Ensure the allocation was successful
by checking the pointer validity.

Signed-off-by: Kunwu Chan <chentao@kylinos.cn>
Reported-by: kernel test robot <lkp@intel.com>
Closes: https://lore.kernel.org/oe-kbuild-all/202401161119.iof6BQsf-lkp@i=
ntel.com/
Suggested-by: Markus Elfring <Markus.Elfring@web.de>
---
Changes in v3:
    - Remove rc initialization
    - Simply error paths by adding a new label 'fail_mem'
Changes in v2:
    - Initial rc and return errno in error paths
---
 arch/x86/xen/smp.c | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/arch/x86/xen/smp.c b/arch/x86/xen/smp.c
index 4b0d6fff88de..1fb9a1644d94 100644
--- a/arch/x86/xen/smp.c
+++ b/arch/x86/xen/smp.c
@@ -65,6 +65,8 @@ int xen_smp_intr_init(unsigned int cpu)
 	char *resched_name, *callfunc_name, *debug_name;
=20
 	resched_name =3D kasprintf(GFP_KERNEL, "resched%d", cpu);
+	if (!resched_name)
+		goto fail_mem;
 	per_cpu(xen_resched_irq, cpu).name =3D resched_name;
 	rc =3D bind_ipi_to_irqhandler(XEN_RESCHEDULE_VECTOR,
 				    cpu,
@@ -77,6 +79,8 @@ int xen_smp_intr_init(unsigned int cpu)
 	per_cpu(xen_resched_irq, cpu).irq =3D rc;
=20
 	callfunc_name =3D kasprintf(GFP_KERNEL, "callfunc%d", cpu);
+	if (!callfunc_name)
+		goto fail_mem;
 	per_cpu(xen_callfunc_irq, cpu).name =3D callfunc_name;
 	rc =3D bind_ipi_to_irqhandler(XEN_CALL_FUNCTION_VECTOR,
 				    cpu,
@@ -90,6 +94,9 @@ int xen_smp_intr_init(unsigned int cpu)
=20
 	if (!xen_fifo_events) {
 		debug_name =3D kasprintf(GFP_KERNEL, "debug%d", cpu);
+		if (!debug_name)
+			goto fail_mem;
+
 		per_cpu(xen_debug_irq, cpu).name =3D debug_name;
 		rc =3D bind_virq_to_irqhandler(VIRQ_DEBUG, cpu,
 					     xen_debug_interrupt,
@@ -101,6 +108,9 @@ int xen_smp_intr_init(unsigned int cpu)
 	}
=20
 	callfunc_name =3D kasprintf(GFP_KERNEL, "callfuncsingle%d", cpu);
+	if (!callfunc_name)
+		goto fail_mem;
+
 	per_cpu(xen_callfuncsingle_irq, cpu).name =3D callfunc_name;
 	rc =3D bind_ipi_to_irqhandler(XEN_CALL_FUNCTION_SINGLE_VECTOR,
 				    cpu,
@@ -114,6 +124,8 @@ int xen_smp_intr_init(unsigned int cpu)
=20
 	return 0;
=20
+ fail_mem:
+	rc =3D -ENOMEM;
  fail:
 	xen_smp_intr_free(cpu);
 	return rc;
--=20
2.39.2



From xen-devel-bounces@lists.xenproject.org Sat Jan 20 12:45:24 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 20 Jan 2024 12:45:24 +0000
Received: from list by lists.xenproject.org with outflank-mailman.668971.1041869 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rRAix-00014I-F8; Sat, 20 Jan 2024 12:45:23 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 668971.1041869; Sat, 20 Jan 2024 12:45:23 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rRAix-00014B-Bj; Sat, 20 Jan 2024 12:45:23 +0000
Received: by outflank-mailman (input) for mailman id 668971;
 Fri, 19 Jan 2024 09:22:50 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=8yYF=I5=kylinos.cn=chentao@srs-se1.protection.inumbo.net>)
 id 1rQl5O-0001FB-0K
 for xen-devel@lists.xenproject.org; Fri, 19 Jan 2024 09:22:50 +0000
Received: from mailgw.kylinos.cn (mailgw.kylinos.cn [124.126.103.232])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 4ce75cf7-b6ac-11ee-98f2-6d05b1d4d9a1;
 Fri, 19 Jan 2024 10:22:47 +0100 (CET)
Received: from mail.kylinos.cn [(39.156.73.10)] by mailgw
 (envelope-from <chentao@kylinos.cn>) (Generic MTA)
 with ESMTP id 1484895239; Fri, 19 Jan 2024 17:22:37 +0800
Received: from mail.kylinos.cn (localhost [127.0.0.1])
 by mail.kylinos.cn (NSMail) with SMTP id 426E3E000EB9;
 Fri, 19 Jan 2024 17:22:35 +0800 (CST)
Received: from [172.20.15.234] (unknown [172.20.15.234])
 by mail.kylinos.cn (NSMail) with ESMTPA id 338B4E000EB9;
 Fri, 19 Jan 2024 17:22:26 +0800 (CST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 4ce75cf7-b6ac-11ee-98f2-6d05b1d4d9a1
X-UUID: 5eb2d7502dca4681b1c1b85464ee8963-20240119
X-CID-P-RULE: Release_Ham
X-CID-O-INFO: VERSION:1.1.35,REQID:645a9bb7-9aee-47af-8dff-de50fb4a484f,IP:10,
	URL:0,TC:0,Content:0,EDM:0,RT:0,SF:-3,FILE:0,BULK:0,RULE:Release_Ham,ACTIO
	N:release,TS:7
X-CID-INFO: VERSION:1.1.35,REQID:645a9bb7-9aee-47af-8dff-de50fb4a484f,IP:10,UR
	L:0,TC:0,Content:0,EDM:0,RT:0,SF:-3,FILE:0,BULK:0,RULE:Release_Ham,ACTION:
	release,TS:7
X-CID-META: VersionHash:5d391d7,CLOUDID:e3ee877f-4f93-4875-95e7-8c66ea833d57,B
	ulkID:240119172239A7QKR7U4,BulkQuantity:0,Recheck:0,SF:17|101|24|100|38|19
	|44|64|66|102,TC:nil,Content:0,EDM:-3,IP:-2,URL:0,File:nil,Bulk:nil,QS:nil
	,BEC:nil,COL:0,OSI:0,OSA:0,AV:0,LES:1,SPR:NO,DKR:0,DKP:0,BRR:0,BRE:0
X-CID-BVR: 0,NGT
X-CID-BAS: 0,NGT,0,_
X-CID-FACTOR: TF_CID_SPAM_SNR,TF_CID_SPAM_FAS,TF_CID_SPAM_FSD,TF_CID_SPAM_FSI
X-UUID: 5eb2d7502dca4681b1c1b85464ee8963-20240119
X-ns-mid: postfix-65AA3F5B-1855721587
Message-ID: <517fae75-c4e7-4576-81ff-6a14a3eb9cd7@kylinos.cn>
Date: Fri, 19 Jan 2024 17:22:25 +0800
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2] x86/xen: Add some null pointer checking to smp.c
To: Markus Elfring <Markus.Elfring@web.de>, xen-devel@lists.xenproject.org,
 kernel-janitors@vger.kernel.org
Cc: LKML <linux-kernel@vger.kernel.org>, kernel test robot <lkp@intel.com>,
 Boris Ostrovsky <boris.ostrovsky@oracle.com>, Borislav Petkov
 <bp@alien8.de>, Dave Hansen <dave.hansen@linux.intel.com>,
 "H. Peter Anvin" <hpa@zytor.com>, Ingo Molnar <mingo@redhat.com>,
 =?UTF-8?B?SsO8cmdlbiBHcm/Dnw==?= <jgross@suse.com>,
 Thomas Gleixner <tglx@linutronix.de>, x86@kernel.org
References: <20240117090018.152031-1-chentao@kylinos.cn>
 <1705655941162581.825.seg@mailgw>
Content-Language: en-US
From: Kunwu Chan <chentao@kylinos.cn>
In-Reply-To: <1705655941162581.825.seg@mailgw>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: quoted-printable

On 2024/1/17 18:40, Markus Elfring wrote:
>> kasprintf() returns a pointer to dynamically allocated memory
>> which can be NULL upon failure. Ensure the allocation was successful
>> by checking the pointer validity.
> =E2=80=A6
>> +++ b/arch/x86/xen/smp.c
>> @@ -61,10 +61,14 @@ void xen_smp_intr_free(unsigned int cpu)
>>
>>   int xen_smp_intr_init(unsigned int cpu)
>>   {
>> -	int rc;
>> +	int rc =3D 0;
>=20
> I find the indication of a successful function execution sufficient by
> the statement =E2=80=9Creturn 0;=E2=80=9D at the end.
> How do you think about to omit such an extra variable initialisation?
Thanks, it's no need now. I'll remove it in v3.
>=20
>=20
>>   	char *resched_name, *callfunc_name, *debug_name;
>>
>>   	resched_name =3D kasprintf(GFP_KERNEL, "resched%d", cpu);
>> +	if (!resched_name) {
>> +		rc =3D -ENOMEM;
>> +		goto fail;
>> +	}
>>   	per_cpu(xen_resched_irq, cpu).name =3D resched_name;
>>   	rc =3D bind_ipi_to_irqhandler(XEN_RESCHEDULE_VECTOR,
>>   				    cpu,
>=20
> You propose to apply the same error code in four if branches.
> I suggest to avoid the specification of duplicate assignment statements
> for this purpose.
> How do you think about to use another label like =E2=80=9Ce_nomem=E2=80=
=9D?
I'll add a new label to simply the code.
>=20
> Regards,
> Markus
--=20
Thanks,
   Kunwu



From xen-devel-bounces@lists.xenproject.org Sat Jan 20 14:46:11 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 20 Jan 2024 14:46:11 +0000
Received: from list by lists.xenproject.org with outflank-mailman.669411.1041889 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rRCbU-0000s4-Ak; Sat, 20 Jan 2024 14:45:48 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 669411.1041889; Sat, 20 Jan 2024 14:45:48 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rRCbU-0000rx-81; Sat, 20 Jan 2024 14:45:48 +0000
Received: by outflank-mailman (input) for mailman id 669411;
 Sat, 20 Jan 2024 14:45:46 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=hWTf=I6=web.de=Markus.Elfring@srs-se1.protection.inumbo.net>)
 id 1rRCbS-0000rp-1q
 for xen-devel@lists.xenproject.org; Sat, 20 Jan 2024 14:45:46 +0000
Received: from mout.web.de (mout.web.de [212.227.15.3])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 95e4e961-b7a2-11ee-9b0f-b553b5be7939;
 Sat, 20 Jan 2024 15:45:43 +0100 (CET)
Received: from [192.168.178.21] ([94.31.89.95]) by smtp.web.de (mrweb005
 [213.165.67.108]) with ESMTPSA (Nemesis) id 1MxYbN-1rBITt3fsv-00xdP1; Sat, 20
 Jan 2024 15:45:24 +0100
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 95e4e961-b7a2-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=web.de; s=s29768273;
	t=1705761925; x=1706366725; i=markus.elfring@web.de;
	bh=7y4p5pvIngJ3aP5NdJ2PdSmbuGEVhNmS9q08S5a8BFM=;
	h=X-UI-Sender-Class:Date:Subject:To:Cc:References:From:
	 In-Reply-To;
	b=tGxaID6IT3dSC3/B4UfQc/MN8x5dcyTLJDlF3YBXneCX8n27wLq2KwFlteAc06xO
	 vtI/tGKL8FfmwUOT6RnCyHoxjaPl3x17vAEvbDM/YNcv3bDHdnxERL8VOC+MKPL3m
	 GqB80XXgHXepjBz9PPZZ/B9wOR3qzaHTPEd9FDdwqKN4XRQsZ4Ui3qLOePR19cjqu
	 56QvIkPYiTs3o89DlcmcULWbmaE5snDHdhiCHaF9kEEfPNhP7Ft6jXfGPZf4rKwck
	 kBksZrjvN7w2R/LAEXsxOQANQvfX9AW4jaD4CAmcURJ01wSdB7UqcpxGL+8TBUHTA
	 uu6e57BeO81CEg2TPA==
X-UI-Sender-Class: 814a7b36-bfc1-4dae-8640-3722d8ec6cd6
Message-ID: <26ef811d-214c-4ce4-a9f8-4fa4cfdefe29@web.de>
Date: Sat, 20 Jan 2024 15:45:11 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3] x86/xen: Add some null pointer checking to smp.c
To: Kunwu Chan <chentao@kylinos.cn>, xen-devel@lists.xenproject.org,
 kernel-janitors@vger.kernel.org, Boris Ostrovsky
 <boris.ostrovsky@oracle.com>, Borislav Petkov <bp@alien8.de>,
 Dave Hansen <dave.hansen@linux.intel.com>, "H. Peter Anvin" <hpa@zytor.com>,
 Ingo Molnar <mingo@redhat.com>, =?UTF-8?B?SsO8cmdlbiBHcm/Dnw==?=
 <jgross@suse.com>, Thomas Gleixner <tglx@linutronix.de>, x86@kernel.org
Cc: kernel test robot <lkp@intel.com>, LKML <linux-kernel@vger.kernel.org>,
 Ilya Dryomov <idryomov@gmail.com>, Jean Delvare <jdelvare@suse.de>,
 Jonathan Corbet <corbet@lwn.net>
References: <20240119094948.275390-1-chentao@kylinos.cn>
Content-Language: en-GB
From: Markus Elfring <Markus.Elfring@web.de>
In-Reply-To: <20240119094948.275390-1-chentao@kylinos.cn>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
X-Provags-ID: V03:K1:f7xX5lxSHQgJlr4n1BCo7mY8k5CxgyoVCcwDx8vDb81qa7iinjp
 ygTbFkH+h1w/S5ZoMSnj08gwbxWJGFxt9wXsJdUQHSaxAWNG5h3hUKEK/epM8rFwt3ZMsAe
 GGoA1wFozLQEI4nm9mmzNp+YSVHpveqj6S7m9BzPY8ezDb0rPR16s07u5MxZ71jjWEdHQKJ
 EXpaFRb580g4W1z9GL0AA==
X-Spam-Flag: NO
UI-OutboundReport: notjunk:1;M01:P0:dNssvMK/v/k=;q8XQawuUKS31N/PKm5AGzjbYetO
 99hHwMBOmOWBnCIy1bqPUwVm8VmZgCs81618fDliO0XeeIbovun5R5Ivg2XLiN4bQ13ywhuru
 z8DGl7M0acIsPBeBndYtQ8El6P3tpZba7uhfEb42sgsXLaHFRMbyGIKR9/9ZrYy822bGxxUz2
 iD5aPXV2tlaCJd+ilskTN6s1abEhXVTtBS6u+1H44vXVb1Lm2Kzx1OGt1h7oM3PQ63TqIfM9H
 kg/GCpwrB+h4ONPE+VTgtGfsVQGmB75i22mpaOQd3xI8KvKghyRMoTPCgBicpjIry4QtwDKQP
 4zMeUexk0t70KEdkPsZedJf/LNW0xgWIJe6350byUcSNShf3xu3zcO71IEacZGlPU9kAvbV2K
 im/7Nnz4J5Oijgz/2vfqpx6bRxh/g3XLPkwmfPAxm24VDQcQZYOBuYM09u68tzj6XZnchJXQk
 6iMjKVvG1OKF5Ycwn692qN+JVfao+CnpqkrgUhRDMnjdYSiWqTUB8naValNX49RAxLiWs3i1M
 Te2XgOGNokH97CHMg8xVzCy/tETUpIeGD9uGmVKB4aHL11fwkbenPlTCaGVhXg987GeUzqNAe
 3oJo/fVsKc0EqFJA31r6VXG2hddutsBE6Qu2I8Y6Btcu6ph3LjogkIe2/zPMniIBhYrDHcySi
 KoZRIwbbbnbs5Jxx8hgqv55swN/S895voDMWcFYe7DRZDn4xbqG7QzufXJd+evmpqI1Ol95GT
 iIAwMa8PA2pTCokH863jHX8N+G3CprI4Tvpr3xaYr9+WZXdDvCYYKMag8O03GHC0Mmjwf4jY9
 ogNZORmcWd2toItGVKzO6QaGV+Px8nNxW6cx8bAsXkZvYEX/Of64IJarFhn0NEqXpLWKap9A5
 ifFKHt46kCyVOpG56PUiPOr8+i9R4gLi0wvDtL3nTVwISNBnqVDQG7hjvK2rPFsdZYOK0bSBu
 UHt0VVpGUUs86MGWxByob6GgwwI=

> kasprintf() returns a pointer to dynamically allocated memory
> which can be NULL upon failure. Ensure the allocation was successful
> by checking the pointer validity.

How do you think about to refer to the function name
instead of the file name in the patch subject?


=E2=80=A6
> +++ b/arch/x86/xen/smp.c
=E2=80=A6
> @@ -114,6 +124,8 @@ int xen_smp_intr_init(unsigned int cpu)
>
>  	return 0;
>
> + fail_mem:
> +	rc =3D -ENOMEM;
>   fail:
>  	xen_smp_intr_free(cpu);
>  	return rc;

Is it currently preferred to start labels in the first text column?

Regards,
Markus


From xen-devel-bounces@lists.xenproject.org Sat Jan 20 17:51:26 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 20 Jan 2024 17:51:26 +0000
Received: from list by lists.xenproject.org with outflank-mailman.669442.1041898 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rRFUu-0000Ij-1f; Sat, 20 Jan 2024 17:51:12 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 669442.1041898; Sat, 20 Jan 2024 17:51:12 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rRFUt-0000Ic-Uw; Sat, 20 Jan 2024 17:51:11 +0000
Received: by outflank-mailman (input) for mailman id 669442;
 Sat, 20 Jan 2024 17:51:10 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rRFUs-0000IS-Kf; Sat, 20 Jan 2024 17:51:10 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rRFUs-0005w8-7H; Sat, 20 Jan 2024 17:51:10 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rRFUr-0001tb-Pg; Sat, 20 Jan 2024 17:51:09 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rRFUr-0001Wl-PJ; Sat, 20 Jan 2024 17:51:09 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=LhGEJ0AUEgw1qkIhwYKjECpbEzAtY/91Ut99qecJy9s=; b=Jt03vyDsd1LwmH/u6pR5lp/pmt
	8IRFc66oj0LhsOdTUYZ711Jsh1AZ52kbGDMRQ95mcOyUpCcVFDDZpPs5VoZMQ3BXNqjuZkzosvpVg
	A9kUqVDaORCCqo5riKsGxnXM0/9D3HTp/w55exD4mRc/a9tUMosS9ooK0ucbQfjtldlo=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184410-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [linux-linus test] 184410: tolerable FAIL - PUSHED
X-Osstest-Failures:
    linux-linus:test-armhf-armhf-libvirt:host-ping-check-xen:fail:heisenbug
    linux-linus:test-amd64-amd64-xl-multivcpu:guest-start/debian.repeat:fail:heisenbug
    linux-linus:test-armhf-armhf-libvirt:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt:migrate-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    linux-linus:test-amd64-amd64-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    linux-linus:test-amd64-amd64-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-raw:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-qcow2:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-qemuu-nested-amd:debian-hvm-install/l1/l2:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-xsm:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-thunderx:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-thunderx:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-xsm:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-xsm:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-libvirt-xsm:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-libvirt-xsm:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-credit2:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-credit2:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-credit1:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-credit1:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-arndale:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-arndale:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-multivcpu:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-multivcpu:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-rtds:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-rtds:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-libvirt-raw:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-vhd:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-vhd:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-vhd:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-vhd:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-qcow2:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit1:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit1:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit2:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit2:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-qcow2:migrate-support-check:fail:nonblocking
X-Osstest-Versions-This:
    linux=9d64bf433c53cab2f48a3fff7a1f2a696bc5229a
X-Osstest-Versions-That:
    linux=556e2d17cae620d549c5474b1ece053430cd50bc
From: osstest service owner <osstest-admin@xenproject.org>
Date: Sat, 20 Jan 2024 17:51:09 +0000

flight 184410 linux-linus real [real]
flight 184412 linux-linus real-retest [real]
http://logs.test-lab.xenproject.org/osstest/logs/184410/
http://logs.test-lab.xenproject.org/osstest/logs/184412/

Failures :-/ but no regressions.

Tests which are failing intermittently (not blocking):
 test-armhf-armhf-libvirt     10 host-ping-check-xen fail pass in 184412-retest
 test-amd64-amd64-xl-multivcpu 22 guest-start/debian.repeat fail pass in 184412-retest

Tests which did not succeed, but are not blocking:
 test-armhf-armhf-libvirt 16 saverestore-support-check fail in 184412 like 184405
 test-armhf-armhf-libvirt    15 migrate-support-check fail in 184412 never pass
 test-amd64-amd64-xl-qemut-win7-amd64 19 guest-stop            fail like 184405
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 184405
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 184405
 test-armhf-armhf-libvirt-raw 15 saverestore-support-check    fail  like 184405
 test-amd64-amd64-xl-qemut-ws16-amd64 19 guest-stop            fail like 184405
 test-armhf-armhf-libvirt-qcow2 15 saverestore-support-check   fail like 184405
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 184405
 test-amd64-amd64-libvirt     15 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-thunderx 15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-thunderx 16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-xsm      15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl          15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl          16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-xsm      16 saverestore-support-check    fail   never pass
 test-arm64-arm64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-xsm 16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-credit2  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit2  16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-credit1  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit1  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-arndale  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-arndale  16 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-armhf-armhf-xl-multivcpu 15 migrate-support-check        fail  never pass
 test-armhf-armhf-xl-multivcpu 16 saverestore-support-check    fail  never pass
 test-armhf-armhf-xl-rtds     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-rtds     16 saverestore-support-check    fail   never pass
 test-arm64-arm64-libvirt-raw 14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 15 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-raw 14 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-vhd      14 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-vhd      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-raw 14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      15 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-qcow2 14 migrate-support-check        fail never pass
 test-armhf-armhf-xl          15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-credit1  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit1  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-credit2  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit2  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-qcow2 14 migrate-support-check        fail never pass

version targeted for testing:
 linux                9d64bf433c53cab2f48a3fff7a1f2a696bc5229a
baseline version:
 linux                556e2d17cae620d549c5474b1ece053430cd50bc

Last test of basis   184405  2024-01-19 18:44:05 Z    0 days
Testing same since   184410  2024-01-20 04:27:32 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  =?UTF-8?q?Thomas=20Hellstr=C3=B6m?= <thomas.hellstrom@linux.intel.com>
  Adrian Hunter <adrian.hunter@intel.com>
  Ahelenia Ziemiańska <nabijaczleweli@nabijaczleweli.xyz>
  Alex Deucher <alexander.deucher@amd.com>
  Alex Hung <alex.hung@amd.com>
  Amadeusz Sławiński <amadeuszx.slawinski@linux.intel.com>
  Ammy Yi <ammy.yi@intel.com>
  Andrew Davis <afd@ti.com>
  AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
  Ard Biesheuvel <ardb@kernel.org>
  Aric Cyr <aric.cyr@amd.com>
  Arnaldo Carvalho de Melo <acme@kernel.org>
  Arnaldo Carvalho de Melo <acme@redhat.com>
  Asmaa Mnebhi <asmaa@nvidia.com>
  Athira Jajeev <atrajeev@linux.vnet.ibm.com>
  Athira Rajeev <atrajeev@linux.vnet.ibm.com>
  Ben Gainey <ben.gainey@arm.com>
  Benjamin Gray <bgray@linux.ibm.com>
  Bin Li <bin.li@canonical.com>
  Binbin Zhou <zhoubinbin@loongson.cn>
  Brian Welty <brian.welty@intel.com>
  Candice Li <candice.li@amd.com>
  Chancel Liu <chancel.liu@nxp.com>
  Charalampos Mitrodimas <charmitro@posteo.net>
  Charlene Liu <charlene.liu@amd.com>
  Chengen Du <chengen.du@canonical.com>
  ChiYuan Huang <cy_huang@richtek.com>
  Christian König <christian.koenig@amd.com>
  Christophe JAILLET <christophe.jaillet@wanadoo.fr>
  Colin Ian King <colin.i.king@gmail.com>
  Conor Dooley <conor.dooley@microchip.com>
  Dafna Hirschfeld <dhirschfeld@habana.ai>
  Dan Carpenter <dan.carpenter@linaro.org>
  Daniel Miess <daniel.miess@amd.com>
  Daniel Wheeler <daniel.wheeler@amd.com>
  Dave Airlie <airlied@redhat.com>
  Dillon Varone <dillon.varone@amd.com>
  Dimitri John Ledkov <dimitri.ledkov@canonical.com>
  Disha Goel <disgoel@linux.ibm.com>
  Elliot Berman <quic_eberman@quicinc.com>
  Fedor Pchelkin <pchelkin@ispras.ru>
  Felix Kuehling <felix.kuehling@amd.com>
  Flora Cui <flora.cui@amd.com>
  Gaosheng Cui <cuigaosheng1@huawei.com>
  George Shen <george.shen@amd.com>
  Guo Ren <guoren@kernel.org>
  Hamza Mahfooz <hamza.mahfooz@amd.com>
  Hawking Zhang <Hawking.Zhang@amd.com>
  Hector Martin <marcan@marcan.st>
  Heiner Kallweit <hkallweit1@gmail.com>
  Hengqi Chen <hengqi.chen@gmail.com>
  Hermes Zhang <chenhuiz@axis.com>
  Hongliang Wang <wanghongliang@loongson.cn>
  Huacai Chen <chenhuacai@loongson.cn>
  Ian Rogers <irogers@google.com>
  Ilkka Koskinen <ilkka@os.amperecomputing.com>
  Ilya Bakoulin <ilya.bakoulin@amd.com>
  Ilya Leoshkevich <iii@linux.ibm.com>
  Ingo Molnar <mingo@elte.hu>
  Ingo Molnar <mingo@redhat.com>
  Inochi Amaoto <inochiama@outlook.com>
  Ivan Lipski <ivlipski@amd.com>
  James Clark <james.clark@arm.com>
  James Zhu <James.Zhu@amd.com>
  Jan Palus <jpalus@fastmail.com>
  Jani Nikula <jani.nikula@intel.com>
  Ji Sheng Teoh <jisheng.teoh@starfivetech.com>
  JiaLong.Yang <jialong.yang@shingroup.cn>
  Jiaxun Yang <jiaxun.yang@flygoat.com>
  Jing Zhang <renyu.zj@linux.alibaba.com>
  Jiri Olsa <jolsa@kernel.org>
  Johan Hovold <johan+linaro@kernel.org>
  John Johansen <john.johansen@canonical.com>
  José Roberto de Souza <jose.souza@intel.com>
  Kai Vehmanen <kai.vehmanen@linux.intel.com>
  Kan Liang <kan.liang@linux.intel.com>
  Kees Cook <keescook@chromium.org>
  Konrad Dybcio <konrad.dybcio@linaro.org>
  Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
  Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
  Kunwu Chan <chentao@kylinos.cn>
  Le Ma <le.ma@amd.com>
  Leo Yan <leo.yan@linaro.org>
  Lijo Lazar <lijo.lazar@amd.com>
  Likhitha Korrapati <likhitha@linux.ibm.com>
  Likun Gao <Likun.Gao@amd.com>
  Linus Torvalds <torvalds@linux-foundation.org>
  Luca Weiss <luca.weiss@fairphone.com>
  Lucas De Marchi <lucas.demarchi@intel.com>
  Ma Jun <Jun.Ma2@amd.com>
  Marc Zyngier <maz@kernel.org>
  Marco Elver <elver@google.com>
  Marek Vasut <marex@denx.de>
  Mark Brown <broonie@kernel.org>
  Mark Rutland <mark.rutland@arm.com>
  Martin Leung <martin.leung@amd.com>
  Martin Tsai <martin.tsai@amd.com>
  Masami Hiramatsu (Google) <mhiramat@kernel.org>
  Matthew Brost <matthew.brost@intel.com>
  Meenakshikumar Somasundaram <meenakshikumar.somasundaram@amd.com>
  Melissa Wen <mwen@igalia.com>
  Michal Simek <michal.simek@amd.com>
  Miguel Ojeda <ojeda@kernel.org>
  Namhyung Kim <namhyung@kernel.org>
  Nathan Chancellor <nathan@kernel.org>
  Nicholas Kazlauskas <nicholas.kazlauskas@amd.com>
  Nick Desaulniers <ndesaulniers@google.com>
  Nick Forrington <nick.forrington@arm.com>
  Nicolas Ferre <nicolas.ferre@microchip.com>
  Nícolas F. R. A. Prado <nfraprado@collabora.com>
  Ori Messinger <Ori.Messinger@amd.com>
  Ovidiu Bunea <ovidiu.bunea@amd.com>
  Palmer Dabbelt <palmer@rivosinc.com>
  Paran Lee <p4ranlee@gmail.com>
  Paul E. McKenney <paulmck@kernel.org>
  Peichen Huang <peichen.huang@amd.com>
  Peter Ujfalusi <peter.ujfalusi@linux.intel.com>
  Philip Yang <Philip.Yang@amd.com>
  Rander Wang <rander.wang@intel.com>
  Ravi Bangoria <ravi.bangoria@amd.com>
  Rob Herring <robh@kernel.org>
  Robin Murphy <robin.murphy@arm.com>
  Rodrigo Siqueira <rodrigo.siqueira@amd.com>
  Rodrigo Vivi <rodrigo.vivi@intel.com>
  Ruidong Tian <tianruidong@linux.alibaba.com>
  Sandipan Das <sandipan.das@amd.com>
  Sebastian Reichel <sebastian.reichel@collabora.com>
  Shenghao Ding <shenghao-ding@ti.com>
  Song Liu <song@kernel.org>
  Srinivasan Shanmugam <srinivasan.shanmugam@amd.com>
  Stephen Rothwell <sfr@canb.auug.org.au>
  Su Hui <suhui@nfschina.com>
  Sumanth Korikkar <sumanthk@linux.ibm.com>
  Takashi Iwai <tiwai@suse.de>
  Thomas Hellström <thomas.hellstrom@linux.intel.com>
  Thomas Richter <tmricht@linux.ibm.com>
  Tiezhu Yang <yangtiezhu@loongson.cn>
  Tudor Ambarus <tudor.ambarus@linaro.org>
  Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
  Veronika Molnarova <vmolnaro@redhat.com>
  Victor Lu <victorchengchi.lu@amd.com>
  Vinay Belgaumkar <vinay.belgaumkar@intel.com>
  WANG Rui <wangrui@loongson.cn>
  WANG Xuerui <git@xen0n.name>
  Wayne Lin <Wayne.Lin@amd.com>
  Will Deacon <will@kernel.org>
  Xi Ruoyao <xry111@xry111.site>
  Yang Jihong <yangjihong1@huawei.com>
  Yicong Yang <yangyicong@hisilicon.com>
  Yifan Zhang <yifan1.zhang@amd.com>
  Yo-Jung Lin <leo.lin@canonical.com>
  Youling Tang <tangyouling@kylinos.cn>
  zhaimingbing <zhaimingbing@cmss.chinamobile.com>
  zhujun2 <zhujun2@cmss.chinamobile.com>
  Çağhan Demir <caghandemir@marun.edu.tr>

jobs:
 build-amd64-xsm                                              pass    
 build-arm64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64                                                  pass    
 build-arm64                                                  pass    
 build-armhf                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-arm64-libvirt                                          pass    
 build-armhf-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-pvops                                            pass    
 build-arm64-pvops                                            pass    
 build-armhf-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-amd64-amd64-xl                                          pass    
 test-amd64-coresched-amd64-xl                                pass    
 test-arm64-arm64-xl                                          pass    
 test-armhf-armhf-xl                                          pass    
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm           pass    
 test-amd64-amd64-xl-qemut-stubdom-debianhvm-amd64-xsm        pass    
 test-amd64-amd64-xl-qemut-debianhvm-i386-xsm                 pass    
 test-amd64-amd64-xl-qemuu-debianhvm-i386-xsm                 pass    
 test-amd64-amd64-libvirt-xsm                                 pass    
 test-arm64-arm64-libvirt-xsm                                 pass    
 test-amd64-amd64-xl-xsm                                      pass    
 test-arm64-arm64-xl-xsm                                      pass    
 test-amd64-amd64-qemuu-nested-amd                            fail    
 test-amd64-amd64-xl-pvhv2-amd                                pass    
 test-amd64-amd64-dom0pvh-xl-amd                              pass    
 test-amd64-amd64-xl-qemut-debianhvm-amd64                    pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64                    pass    
 test-amd64-amd64-freebsd11-amd64                             pass    
 test-amd64-amd64-freebsd12-amd64                             pass    
 test-amd64-amd64-xl-qemuu-ovmf-amd64                         pass    
 test-amd64-amd64-xl-qemut-win7-amd64                         fail    
 test-amd64-amd64-xl-qemuu-win7-amd64                         fail    
 test-amd64-amd64-xl-qemut-ws16-amd64                         fail    
 test-amd64-amd64-xl-qemuu-ws16-amd64                         fail    
 test-armhf-armhf-xl-arndale                                  pass    
 test-amd64-amd64-examine-bios                                pass    
 test-amd64-amd64-xl-credit1                                  pass    
 test-arm64-arm64-xl-credit1                                  pass    
 test-armhf-armhf-xl-credit1                                  pass    
 test-amd64-amd64-xl-credit2                                  pass    
 test-arm64-arm64-xl-credit2                                  pass    
 test-armhf-armhf-xl-credit2                                  pass    
 test-amd64-amd64-xl-qemuu-dmrestrict-amd64-dmrestrict        pass    
 test-amd64-amd64-examine                                     pass    
 test-arm64-arm64-examine                                     pass    
 test-armhf-armhf-examine                                     pass    
 test-amd64-amd64-qemuu-nested-intel                          pass    
 test-amd64-amd64-xl-pvhv2-intel                              pass    
 test-amd64-amd64-dom0pvh-xl-intel                            pass    
 test-amd64-amd64-libvirt                                     pass    
 test-armhf-armhf-libvirt                                     fail    
 test-amd64-amd64-xl-multivcpu                                fail    
 test-armhf-armhf-xl-multivcpu                                pass    
 test-amd64-amd64-pair                                        pass    
 test-amd64-amd64-libvirt-pair                                pass    
 test-amd64-amd64-xl-pvshim                                   pass    
 test-amd64-amd64-pygrub                                      pass    
 test-amd64-amd64-libvirt-qcow2                               pass    
 test-armhf-armhf-libvirt-qcow2                               pass    
 test-amd64-amd64-libvirt-raw                                 pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-armhf-armhf-libvirt-raw                                 pass    
 test-amd64-amd64-xl-rtds                                     pass    
 test-armhf-armhf-xl-rtds                                     pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64-shadow             pass    
 test-amd64-amd64-xl-shadow                                   pass    
 test-arm64-arm64-xl-thunderx                                 pass    
 test-amd64-amd64-examine-uefi                                pass    
 test-amd64-amd64-xl-vhd                                      pass    
 test-arm64-arm64-xl-vhd                                      pass    
 test-armhf-armhf-xl-vhd                                      pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Pushing revision :

hint: The 'hooks/update' hook was ignored because it's not set as executable.
hint: You can disable this warning with `git config advice.ignoredHook false`.
hint: The 'hooks/post-receive' hook was ignored because it's not set as executable.
hint: You can disable this warning with `git config advice.ignoredHook false`.
hint: The 'hooks/post-update' hook was ignored because it's not set as executable.
hint: You can disable this warning with `git config advice.ignoredHook false`.
To xenbits.xen.org:/home/xen/git/linux-pvops.git
   556e2d17cae6..9d64bf433c53  9d64bf433c53cab2f48a3fff7a1f2a696bc5229a -> tested/linux-linus


From xen-devel-bounces@lists.xenproject.org Sun Jan 21 01:27:33 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sun, 21 Jan 2024 01:27:33 +0000
Received: from list by lists.xenproject.org with outflank-mailman.669510.1041908 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rRMcG-0003u3-Ty; Sun, 21 Jan 2024 01:27:16 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 669510.1041908; Sun, 21 Jan 2024 01:27:16 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rRMcG-0003tv-Pk; Sun, 21 Jan 2024 01:27:16 +0000
Received: by outflank-mailman (input) for mailman id 669510;
 Sun, 21 Jan 2024 01:27:16 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=e41Y=I7=gmail.com=simonpatp@srs-se1.protection.inumbo.net>)
 id 1rRMcG-0003tp-EQ
 for xen-devel@lists.xenproject.org; Sun, 21 Jan 2024 01:27:16 +0000
Received: from mail-lj1-x231.google.com (mail-lj1-x231.google.com
 [2a00:1450:4864:20::231])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 34fc3e50-b7fc-11ee-98f2-6d05b1d4d9a1;
 Sun, 21 Jan 2024 02:27:14 +0100 (CET)
Received: by mail-lj1-x231.google.com with SMTP id
 38308e7fff4ca-2cd8bd6ce1bso20909751fa.1
 for <xen-devel@lists.xenproject.org>; Sat, 20 Jan 2024 17:27:14 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 34fc3e50-b7fc-11ee-98f2-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1705800434; x=1706405234; darn=lists.xenproject.org;
        h=cc:to:subject:message-id:date:from:in-reply-to:references
         :mime-version:from:to:cc:subject:date:message-id:reply-to;
        bh=e5N5MhRE9A3q+4lk83nXJY9wxZBH8rqK8tz/Skw+pHo=;
        b=ZGn4AoST9nRGZzo2PB6sF8c4pW10/mNlonw8/7YRQzxTy2qfz2YXZQ1xIQ1xw1Puy6
         45dx67RPkMrCArjU64+JsHhk4N9D+iZFawD1l6ePkOeY4Wpo5IPdpkQBvcTLuajtwgE3
         KB9WBcpdUk+QuSpjdJzg5M8xX94l0hO6uAriJII0xFkmVpEBMZgNlSPKJOnd/DOhRyKc
         bjd899yNXcBwcq8EHLyE0WsS9ZyvnIz5If93lErUewPjNflHnxlmVfaG1ENvwdMo4yZf
         LA0T3D72MFKfmVmcXqnMIHgu/PRvHO+ADiTxb2TY9tvdaQpqjz2afFmrIksDmmlVzrux
         /bkA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705800434; x=1706405234;
        h=cc:to:subject:message-id:date:from:in-reply-to:references
         :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id
         :reply-to;
        bh=e5N5MhRE9A3q+4lk83nXJY9wxZBH8rqK8tz/Skw+pHo=;
        b=G2COi8Yi/M/YlMWxjAczm/KzGya+7VTn7cUAcBDbwhno83V/suHCtKYDZH8u1eCam1
         kDo4ukYeMYRivqBET2MtKszow+tzUKYc5iQ4yew+lcNNeIOVe0DuIEBWfisY0ROdSQQi
         EyOKE7XitcU0CpuCs5Y/r49Cz9mjQ5X8ttnzIoSzFlKw6q/3usyQ0GeyE+Fxx19Wskhq
         gX2WXPnTXMRh69kvhJsdwSkQs77avc2zmSeHd+cDlziBu62X+LImxeN2HSfyjQpDQ3dy
         IkOhl3ZnH1gaCvZ0F40i6yTcit6xHzi5mnAuxuDi50lgLIJ5SxTR21Fv3ejn2I0Er2IF
         6Beg==
X-Gm-Message-State: AOJu0YwW3ULQNk1E2Xk4SL2jnIxy4Yjz4Z3A14l1UmvddOGgJ6HwO3sO
	wN1Hsq6Lthn84ejC3Q4G9QUEvWudeQxkXqb5V4h36kiW31FkvNcbGibhUbik+YHIQPSg4LqTMZE
	KIAvf8NM4gS7pZKjEB4a6b4dFI9M=
X-Google-Smtp-Source: AGHT+IEmjAwsb9SDCGFHnPBDm4rt2oYj++2abDDCC3cHaHKFKZaLAMurOOwXXgUubUr3+npcQf0Oe7tzEuGG50WK8V0=
X-Received: by 2002:a2e:b0ec:0:b0:2ce:c0f:4b6 with SMTP id h12-20020a2eb0ec000000b002ce0c0f04b6mr126657ljl.39.1705800433570;
 Sat, 20 Jan 2024 17:27:13 -0800 (PST)
MIME-Version: 1.0
References: <CAOCpoWeowZPuQTeBp9nu8p8CDtE=u++wN_UqRoABZtB57D50Qw@mail.gmail.com>
 <ac742d12-ec91-4215-bb42-82a145924b4f@suse.com> <CAOCpoWfQmkhN3hms1xuotSUZzVzR99i9cNGGU2r=yD5PjysMiQ@mail.gmail.com>
 <fa23a590-5869-4e11-8998-1d03742c5919@suse.com> <CAOCpoWf4CMkCWx8uR2NbFrZrKSS78wj1-hFsAUqsjCfsmqooVA@mail.gmail.com>
 <Zajg1O7Z52VTBq31@macbook> <CAOCpoWeO9h7b_CjJb9jtKaEUVv_=XDSVkr55QSg3ArFc4n8G2w@mail.gmail.com>
 <ZajzcpArQYQhdj3T@macbook> <ZakcdfS3UwEb0oh2@macbook> <CAOCpoWdL3YnpitZxEoFgdvtZ6juy8oykYj6fX_tv4QLvj2Fv0g@mail.gmail.com>
 <ZapG1weSIJWOkT8m@amd.com>
In-Reply-To: <ZapG1weSIJWOkT8m@amd.com>
From: Patrick Plenefisch <simonpatp@gmail.com>
Date: Sat, 20 Jan 2024 20:27:02 -0500
Message-ID: <CAOCpoWeBe5LY-JkHdPfeJZSnXnBiLEWLvXosdH2fyPvJSoDxYw@mail.gmail.com>
Subject: Re: ACPI VFCT table too short on PVH dom0 (was: Re: E820 memory
 allocation issue on Threadripper platforms)
To: Huang Rui <ray.huang@amd.com>
Cc: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>, 
	Jan Beulich <jbeulich@suse.com>, 
	"xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>, Juergen Gross <jgross@suse.com>, 
	"Chen, Jiqian" <Jiqian.Chen@amd.com>, Alex Deucher <alexander.deucher@amd.com>
Content-Type: multipart/alternative; boundary="000000000000e69938060f6a9cdb"

--000000000000e69938060f6a9cdb
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

On Fri, Jan 19, 2024 at 4:54=E2=80=AFAM Huang Rui <ray.huang@amd.com> wrote=
:

> Thanks Roger to involve us. The VFCT table is to expose video BIOS image =
by
> AMD GPUs. You can see details here:
>
>
> https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/d=
rivers/gpu/drm/amd/include/atombios.h
>
> Did you apply this patch?
>
>
> https://lore.kernel.org/xen-devel/20230312075455.450187-2-ray.huang@amd.c=
om/


Yes, that appears to be in 4.18. I recompiled and confirmed that 4.18 fails
with the same symptoms as 4.17

>
>
> Thanks,
> Ray
>
>

--000000000000e69938060f6a9cdb
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><div dir=3D"ltr"><br></div><br><div class=3D"gmail_quote">=
<div dir=3D"ltr" class=3D"gmail_attr">On Fri, Jan 19, 2024 at 4:54=E2=80=AF=
AM Huang Rui &lt;<a href=3D"mailto:ray.huang@amd.com">ray.huang@amd.com</a>=
&gt; wrote:</div><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px =
0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
Thanks Roger to involve us. The VFCT table is to expose video BIOS image by=
<br>
AMD GPUs. You can see details here:<br>
<br>
<a href=3D"https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.g=
it/tree/drivers/gpu/drm/amd/include/atombios.h" rel=3D"noreferrer" target=
=3D"_blank">https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.=
git/tree/drivers/gpu/drm/amd/include/atombios.h</a><br>
<br>
Did you apply this patch?<br>
<br>
<a href=3D"https://lore.kernel.org/xen-devel/20230312075455.450187-2-ray.hu=
ang@amd.com/" rel=3D"noreferrer" target=3D"_blank">https://lore.kernel.org/=
xen-devel/20230312075455.450187-2-ray.huang@amd.com/</a></blockquote><div><=
br></div><div>Yes, that appears to be in 4.18. I recompiled and confirmed t=
hat 4.18 fails with the same symptoms as 4.17 <br></div><blockquote class=
=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rg=
b(204,204,204);padding-left:1ex"><br>
<br>
Thanks,<br>
Ray<br>
<br>
</blockquote></div></div>

--000000000000e69938060f6a9cdb--


From xen-devel-bounces@lists.xenproject.org Sun Jan 21 01:34:01 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sun, 21 Jan 2024 01:34:01 +0000
Received: from list by lists.xenproject.org with outflank-mailman.669512.1041919 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rRMij-0005V1-JQ; Sun, 21 Jan 2024 01:33:57 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 669512.1041919; Sun, 21 Jan 2024 01:33:57 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rRMij-0005Uu-Eh; Sun, 21 Jan 2024 01:33:57 +0000
Received: by outflank-mailman (input) for mailman id 669512;
 Sun, 21 Jan 2024 01:33:56 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=e41Y=I7=gmail.com=simonpatp@srs-se1.protection.inumbo.net>)
 id 1rRMih-0005Uo-VI
 for xen-devel@lists.xenproject.org; Sun, 21 Jan 2024 01:33:56 +0000
Received: from mail-lj1-x230.google.com (mail-lj1-x230.google.com
 [2a00:1450:4864:20::230])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 2274b384-b7fd-11ee-9b0f-b553b5be7939;
 Sun, 21 Jan 2024 02:33:52 +0100 (CET)
Received: by mail-lj1-x230.google.com with SMTP id
 38308e7fff4ca-2cda523725bso21249951fa.3
 for <xen-devel@lists.xenproject.org>; Sat, 20 Jan 2024 17:33:52 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 2274b384-b7fd-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1705800832; x=1706405632; darn=lists.xenproject.org;
        h=cc:to:subject:message-id:date:from:in-reply-to:references
         :mime-version:from:to:cc:subject:date:message-id:reply-to;
        bh=jmS4VI7T9Ou0YJ8CBEsMEfTYLLWJEH9g7owtBosqEc4=;
        b=I7TXmcH562VCt4Cq9jDW6vVaIPlOUCK4fVUkiuVmJ/z1QfksjSjfP1TPV6iOjjin24
         ZbTJNEa+sGfiyb+a/R8xNwxo+H65VFBHDUxN7XV/ERJKBxLlD89qvTq/b4ona3JIliTN
         iMW7SY1eyGORGBX4tPrzz0Sgv/IJVJSD2v5sFEm6/ginWeoyy10Gcba8RKUUt6BM+OjT
         YmPJp/Vz7fVMtTZ3dNIFtdTTsctug51Dmd6qtABkxJ6KstJZ+JPBjkcxC4hzsD9frJjo
         7cATqX6pUhIBwt63umHah8lHRn/89nwBMOAQbSJ3ad+tCaWC80zOuAGlGbUtLGmVXcUq
         RLnQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705800832; x=1706405632;
        h=cc:to:subject:message-id:date:from:in-reply-to:references
         :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id
         :reply-to;
        bh=jmS4VI7T9Ou0YJ8CBEsMEfTYLLWJEH9g7owtBosqEc4=;
        b=VF1IidcbTGzLVEdasHtf7njXk4BxphS/yzEwxGDZq3B0C4/OwKu9mc+qxwKCXB6Xid
         cw4Qan8gChZvSiV9Sf64U0xbfjUnmpMojXk/eRrUZjqz2r6VJ0P1+RLVyeO2Aw9IL5xE
         AhvJrSHbmDo0aYmlZGcFW3GtkWGVZ2aEck4rNvqkI1YiYTeLVN1IVMeiN3Je8mmcrVBT
         xHktfO2w2MLXSUm0y0h0ws2tHsw+qUA6F+L2NWaI7vYbV5JLNVDH5dg4RgUyfktjeMuF
         FXkPysi9gjXMPBuqUyZ/bp3EqqTrJGVPdn70S+K990n1oAc6kjtiy0kMW2ixGYJFb9JS
         yspQ==
X-Gm-Message-State: AOJu0YynTfXTUU7IZXfKXNc/nfrbcsMGPOU+Nwp4ZWZIrrAMUOMGMGhj
	uv26n2aQ+MDZZGnXYNBCR1Q6Qe8TERHyLnKoFn7HcgOGaeX49fUwf73DuQxHjhIPg3jJn3x0Mam
	7rHLRQd/SRCoFQQzFeS9g0RnJjx8=
X-Google-Smtp-Source: AGHT+IFVVVNbCWVtQdal/5iVjkRYYY1f4Tf64nQYZBwVBnPAk9ulpDse0P2SeRtfyLqdQRWXHwY1GpgxbMcq+jZrg4c=
X-Received: by 2002:a2e:6e15:0:b0:2cc:ee90:e565 with SMTP id
 j21-20020a2e6e15000000b002ccee90e565mr506228ljc.9.1705800832034; Sat, 20 Jan
 2024 17:33:52 -0800 (PST)
MIME-Version: 1.0
References: <CAOCpoWeowZPuQTeBp9nu8p8CDtE=u++wN_UqRoABZtB57D50Qw@mail.gmail.com>
 <ac742d12-ec91-4215-bb42-82a145924b4f@suse.com> <CAOCpoWfQmkhN3hms1xuotSUZzVzR99i9cNGGU2r=yD5PjysMiQ@mail.gmail.com>
 <fa23a590-5869-4e11-8998-1d03742c5919@suse.com> <CAOCpoWf4CMkCWx8uR2NbFrZrKSS78wj1-hFsAUqsjCfsmqooVA@mail.gmail.com>
 <Zajg1O7Z52VTBq31@macbook> <CAOCpoWeO9h7b_CjJb9jtKaEUVv_=XDSVkr55QSg3ArFc4n8G2w@mail.gmail.com>
 <ZajzcpArQYQhdj3T@macbook> <ZakcdfS3UwEb0oh2@macbook> <CAOCpoWdL3YnpitZxEoFgdvtZ6juy8oykYj6fX_tv4QLvj2Fv0g@mail.gmail.com>
 <ZapXoOKdhWgJFxbF@macbook>
In-Reply-To: <ZapXoOKdhWgJFxbF@macbook>
From: Patrick Plenefisch <simonpatp@gmail.com>
Date: Sat, 20 Jan 2024 20:33:40 -0500
Message-ID: <CAOCpoWccvC91FiJr_MpVxXYqOfZxAn6bKkr6vQG+6p4WbxT03A@mail.gmail.com>
Subject: Re: ACPI VFCT table too short on PVH dom0 (was: Re: E820 memory
 allocation issue on Threadripper platforms)
To: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
Cc: Jan Beulich <jbeulich@suse.com>, xen-devel@lists.xenproject.org, 
	Juergen Gross <jgross@suse.com>, Huang Rui <ray.huang@amd.com>, Jiqian Chen <Jiqian.Chen@amd.com>
Content-Type: multipart/alternative; boundary="000000000000a6ad37060f6ab456"

--000000000000a6ad37060f6ab456
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

On Fri, Jan 19, 2024 at 6:06=E2=80=AFAM Roger Pau Monn=C3=A9 <roger.pau@cit=
rix.com>
wrote:

> On Fri, Jan 19, 2024 at 02:44:35AM -0500, Patrick Plenefisch wrote:
> > On Thu, Jan 18, 2024 at 7:41=E2=80=AFAM Roger Pau Monn=C3=A9 <roger.pau=
@citrix.com>
> > wrote:
> >
> > >
> > > From that environment (PVH dom0) can you see if you can dump the
> > > contents of the VFCT table?  I don't have a system with that table, s=
o
> > > not sure if this will work (because iasl is unlikely to know how to
> > > decode it):
> > >
> > > # acpidump -n VFCT -o table.dump
> > > # acpixtract -a table.dump
> > > # iasl -d vfct.dat
> > > # cat vfct.dsl
> > >
> > > Would be good if you can compare the output from what you get on a PV
> > > dom0 or when running native Linux.
> > >
> > > I'm also adding some AMD folks, as IIRC they did some fixes to Linux
> > > in order to get some AMD graphics cards running on a PVH dom0, maybe
> > > they can provide some additional input.
> > >
> > >
> > Well, this is pretty weird. I'll go into more details because it may be
> > relevant.
>
> Wow, you have certainly gone out of the beaten path here.
>

Yeah, I wasn't expecting this many issues for being an early adopter of
Threaderipper 7000!


>
> > I had been working with ASRock support ever since I got my brand
> > new motherboard because I couldn't see the BIOS/UEFI screens. I could
> boot
> > up, and once native linux took control amdgpu got the screens/gpu worki=
ng
> > fine. I finally managed to be able to see the UEFI/BIOS setup screens b=
y
> > patching my VBIOS: I extracted the VBIOS image of a cheap R5 430 OEM, r=
an
> > GOPupd to update the VBIOS UEFI component (GOP) from version 1.60 to
> 1.67.
> > That allowed the UEFI to actually initialize and use a screen. However,=
 I
> > later realized that only 1 monitor was lighting up in the bios: my
> monitor
> > plugged into the Radeon RX 480 that was still on VBIOS GOP 1.60. It
> appears
> > the GOP was initializing the RX 480 too, despite not being flashed with
> the
> > latest itself. I am working on an email to asrock support about that.
> Once
> > I get into linux (native or PV), both monitors light up as expected.
> Also,
> > If I boot linux PVH from grub, they also work.
>
> OK, that's good, so that would be UEFI -> grub -> Xen -> Linux PVH?
>

Correct. Inserting grub into the chain "fixes" the acpi tables and things
work correctly.


>
> > Those usage scenarios have
> > acpidump output as identical. Booting linux PVH directly from UEFI (no
> > grub), the monitors go to sleep on the RX 480, and amdgpu errors out
> about
> > VFCT, but the R5 430 OEM does still have output. Interestingly, there i=
s
> a
> > different screen mode booting UEFI+PVH, the characters are basically
> > squares, with more vertical lines than "default", maybe close to native
> > screen resolution, but horizontally it's still "default". Booting from
> grub
> > gives everything in the "default" resolution.
>
> Hm, maybe we are not passing the correct video information to Linux
> dom0 when booted from UEFI.  I'm afraid I don't have such setup
> myself, so it's going to be hard to test.
>
> To clarify, the output from Xen is fine, is the video output from
> Linux dom0 in PVH mode that's corrupt?
>

Xen output in EFI+PV/GRUB+PV/GRUB+PVH: Rectangular letters (expected/good)
Linux output in EFI+PV/GRUB+PV/GRUB+PVH: Rectangular letters -> kms fb ->
X11 (using this mode as I type this email right now)
Xen output in EFI+PVH: Squashed square letters (unexpected)
Linux output in EFI+PVH: No output on RX 480, but R5 430 shows a (static?)
login console on hvc0 that I can't interact with.


>
> >
> > So what is in the VFCT Table? VFCT contains the non-GOP VIOS image of m=
y
> > Radeon RX 480 GPU. You can compare it to the VBIOS hosted at
> > https://www.techpowerup.com/vgabios/185789/msi-rx480-4096-160720
> (Compare
> > the end at E667 in the VFCT table to E5ff in that vbios link). I find
> this
> > extra suspicious due to the above.
> >
> > Now for the extra horrible things:
> >
> > UEFI-booted PVH Linux doesn't support keyboard getty input, and at leas=
t
> > some of the USB devices are not in lsusb. It also decided to vanish one
> of
> > my HDD's. The `reboot` command hangs. The Power button doesn't do
> anything.
>
> Yes, it does seem Lunux has issues reserving some BARs:
>
> [    6.520615] ahci 0000:07:00.1: version 3.0
> [    6.520701] ahci 0000:07:00.1: BAR 5: can't reserve [mem
> 0xf0e00000-0xf0e007ff]
> ...
> [   17.130099] ccp 0000:06:00.5: enabling device (0000 -> 0002)
> [   17.137025] ccp 0000:06:00.5: BAR 2: can't reserve [mem
> 0xf0b00000-0xf0bfffff]
> [   17.145210] ccp 0000:06:00.5: pcim_iomap_regions failed (-16)
> [   17.151868] ccp 0000:06:00.5: initialization failed
> [   17.157615] ccp: probe of 0000:06:00.5 failed with error -16
> ...
> [   17.993532] snd_hda_intel 0000:01:00.1: enabling device (0000 -> 0002)
> [   18.001207] snd_hda_intel 0000:01:00.1: Force to non-snoop mode
> [   18.007997] snd_hda_intel 0000:01:00.1: BAR 0: can't reserve [mem
> 0xf0f60000-0xf0f63fff 64bit]
> [   18.018053] snd_hda_intel 0000:06:00.7: enabling device (0000 -> 0002)
> [   18.025723] snd_hda_intel 0000:06:00.7: BAR 0: can't reserve [mem
> 0xf0d00000-0xf0d07fff]
> [   18.033679] snd_hda_intel 0000:41:00.1: enabling device (0000 -> 0002)
> [   18.043165] snd_hda_intel 0000:41:00.1: Force to non-snoop mode
>
> I bet this because Xen balloon driver has started picking up those
> regions in order to map foreign pages.
>
> > There are several stack traces in dmesg. But Alt-SysRq-B does reboot!
> > Luckily I could ssh in and capture the ACPI tables. They are much
> smaller,
> > and VFCT is empty.  Booting back to one of the working scenarios (direc=
t
> > linux, Grub PV, Grub PVH, UEFI PV), all of this is normal.
> >
> > I've attached:
> >
> > xenboot.log which is the serial log of xen+linux booting in UEFI PVH
> > (kernel is debian's config, but patched to start at 2MiB)
> > dmesg.txt which is the linux dmesg that contains some nice stack traces
> > (kernel is debian's config, but patched to start at 2MiB)
> > efipvh-tables.dump is ALL acpi tables from UEFI+PVH mode (acpidump -o
> > efipvh-tables.dump)
> > working-tables.dump is ALL acpi tables from the other modes (acpidump -=
o
> > working-tables.dump)
> > efipvh-vfct.dump is attached in spirit, as it is 0 bytes long (acpidump
> -n
> > VFCT -o efipvh-vfct.dump)
> >
> > I ran iasl, but it just said **** Unknown ACPI table signature [VFCT] a=
nd
> > spat out the raw data table, nothing interesting
> >
> > Something I can try, but have been nervous to try due to GOPupd warning=
s
> is
> > to also flash the 1.67 GOP to the VBIOS on the RX 480. The R5 430 OEM h=
ad
> > no such warnings.
> >
> > Patrick
>
> > [    0.000000] Linux version 6.1.69 (root@pollux) (gcc (Debian
> 12.2.0-14) 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #10 SMP
> PREEMPT_DYNAMIC Wed Jan 17 23:44:31 EST 2024
> > [    0.000000] Command line:
> root=3DUUID=3D922b10f2-a826-47fb-ab38-836f9b397ff7 ro rootflags=3Dsubvol=
=3D@rootfs
> earlyprintk=3Dxen console=3Dhvc0
> > [    0.000000] [Firmware Bug]: TSC doesn't count with P0 frequency!
> > [    0.000000] BIOS-provided physical RAM map:
> > [    0.000000] BIOS-e820: [mem 0x0000000000000000-0x000000000009ffff]
> usable
> > [    0.000000] BIOS-e820: [mem 0x00000000000a0000-0x00000000000fffff]
> reserved
> > [    0.000000] BIOS-e820: [mem 0x0000000000100000-0x0000000003ffffff]
> usable
> > [    0.000000] BIOS-e820: [mem 0x0000000004000000-0x0000000004045fff]
> ACPI NVS
> > [    0.000000] BIOS-e820: [mem 0x0000000004046000-0x0000000009afefff]
> usable
> > [    0.000000] BIOS-e820: [mem 0x0000000009aff000-0x0000000009ffffff]
> reserved
> > [    0.000000] BIOS-e820: [mem 0x000000000a000000-0x000000000affffff]
> usable
> > [    0.000000] BIOS-e820: [mem 0x000000000b000000-0x000000000b020fff]
> reserved
> > [    0.000000] BIOS-e820: [mem 0x000000000b021000-0x00000000a04e8fff]
> usable
> > [    0.000000] BIOS-e820: [mem 0x00000000a04e9000-0x00000000a64e8fff]
> reserved
> > [    0.000000] BIOS-e820: [mem 0x00000000a64e9000-0x00000000a747efff]
> ACPI data
> > [    0.000000] BIOS-e820: [mem 0x00000000a747f000-0x00000000a947efff]
> ACPI NVS
> > [    0.000000] BIOS-e820: [mem 0x00000000a947f000-0x00000000addfefff]
> reserved
> > [    0.000000] BIOS-e820: [mem 0x00000000addff000-0x00000000afffab9b]
> usable
> > [    0.000000] BIOS-e820: [mem 0x00000000afffab9c-0x00000000afffaf17]
> ACPI data
> > [    0.000000] BIOS-e820: [mem 0x00000000afffb000-0x00000000bfffffff]
> reserved
> > [    0.000000] BIOS-e820: [mem 0x00000000df200000-0x00000000df2fffff]
> reserved
> > [    0.000000] BIOS-e820: [mem 0x00000000e0000000-0x00000000efffffff]
> reserved
> > [    0.000000] BIOS-e820: [mem 0x00000000fea00000-0x00000000feafffff]
> reserved
> > [    0.000000] BIOS-e820: [mem 0x00000000fec00000-0x00000000fec00fff]
> reserved
> > [    0.000000] BIOS-e820: [mem 0x00000000fec10000-0x00000000fec10fff]
> reserved
> > [    0.000000] BIOS-e820: [mem 0x00000000fec30000-0x00000000fec30fff]
> reserved
> > [    0.000000] BIOS-e820: [mem 0x00000000fed00000-0x00000000fed00fff]
> reserved
> > [    0.000000] BIOS-e820: [mem 0x00000000fed40000-0x00000000fed44fff]
> reserved
> > [    0.000000] BIOS-e820: [mem 0x00000000fed80000-0x00000000fed8ffff]
> reserved
> > [    0.000000] BIOS-e820: [mem 0x00000000ff000000-0x00000000ffffffff]
> reserved
> > [    0.000000] BIOS-e820: [mem 0x0000000100000000-0x000000025dee2fff]
> usable
> > [    0.000000] BIOS-e820: [mem 0x000000025dee3000-0x000000403dbbffff]
> unusable
> > [    0.000000] BIOS-e820: [mem 0x000000403dbc0000-0x000000403fffffff]
> reserved
> > [    0.000000] printk: bootconsole [xenboot0] enabled
> > [    0.000000] NX (Execute Disable) protection: active
> > [    0.000000] efi: EFI v2.90 by American Megatrends
> > [    0.000000] efi: ACPI=3D0xa9463000 ACPI 2.0=3D0xa9463014
> SMBIOS=3D0xad9f4000 SMBIOS 3.0=3D0xad9f3000 MEMATTR=3D0x99e26698 ESRT=3D0=
xa7466018
> > [    0.000000] secureboot: Secure boot disabled
> > [    0.000000] SMBIOS 3.6.0 present.
> > [    0.000000] DMI: To Be Filled By O.E.M. TRX50 WS/TRX50 WS, BIOS 7.08
> 01/16/2024
> > [    0.000000] Hypervisor detected: Xen HVM
> > [    0.000000] Xen version 4.17.
> > [    0.000003] HVMOP_pagetable_dying not supported
> > [    0.043916] tsc: Fast TSC calibration failed
> > [    0.048843] tsc: Detected 4199.960 MHz processor
> > [    0.054365] e820: update [mem 0x00000000-0x00000fff] usable =3D=3D>
> reserved
> > [    0.054368] e820: remove [mem 0x000a0000-0x000fffff] usable
> > [    0.054375] last_pfn =3D 0x25dee3 max_arch_pfn =3D 0x400000000
> > [    0.062033] x86/PAT: Configuration [0-7]: WB  WC  UC- UC  WB  WP  UC=
-
> WT
> > [    0.070417] CPU MTRRs all blank - virtualized system.
> > [    0.076209] last_pfn =3D 0xafffa max_arch_pfn =3D 0x400000000
> > [    0.085594] Using GB pages for direct mapping
> > [    0.091184] RAMDISK: [mem 0x04046000-0x068cdfff]
> > [    0.096533] ACPI: Early table checksum verification disabled
> > [    0.103248] ACPI: RSDP 0x00000000AFFFAB9C 000024 (v02 AMD   )
> > [    0.109716] ACPI: XSDT 0x00000000AFFFABC0 0000C4 (v01 AMD    A M I
> 00000001 AMI  01000013)
> > [    0.119663] ACPI: APIC 0x00000000AFFFAC84 00037C (v04 AMD    A M I
> 00000001 AMI  00010013)
> > [    0.129538] ACPI: FACP 0x00000000A747C000 000114 (v06 AMD    A M I
> 00000001 AMI  00010013)
> > [    0.139250] ACPI: DSDT 0x00000000A746E000 00D2F6 (v02 AMD    A M I
> 00000001 INTL 20230331)
> > [    0.148717] ACPI: FACS 0x00000000A945A000 000040
> > [    0.153805] ACPI: SSDT 0x00000000A747E000 0009CC (v02 AMD    BOULDER=
G
> 00000002 MSFT 04000000)
> > [    0.163309] ACPI: SSDT 0x00000000A747D000 000067 (v02 AMD    CPMDSM
>  00000001 INTL 20230331)
> > [    0.172813] ACPI: MCFG 0x00000000A746C000 00003C (v01 AMD    A M I
> 00000001 MSFT 00010013)
> > [    0.182351] ACPI: SSDT 0x00000000A746B000 0005C5 (v02 AMD    CPUSSDT
> 00000001 AMI  00000001)
> > [    0.191806] ACPI: SSDT 0x00000000A7468000 001B53 (v02 AMD    CPMRAS
>  00000001 INTL 20230331)
> > [    0.201308] ACPI: FPDT 0x00000000A7465000 000044 (v01 AMD    A M I
> 01072009 AMI  01000013)
> > [    0.210819] ACPI: SSDT 0x00000000A7462000 002448 (v02 AMD    GPP_PME=
_
> 00000001 INTL 20230331)
> > [    0.220343] ACPI: SSDT 0x00000000A745F000 002448 (v02 AMD    GPP_PME=
_
> 00000001 INTL 20230331)
> > [    0.229884] ACPI: SSDT 0x00000000A745C000 002448 (v02 AMD    GPP_PME=
_
> 00000001 INTL 20230331)
> > [    0.239351] ACPI: SSDT 0x00000000A7459000 002448 (v02 AMD    GPP_PME=
_
> 00000001 INTL 20230331)
> > [    0.248780] ACPI: SSDT 0x00000000A743E000 00A40E (v02 AMD    AMD CPU
> 00000001 AMD  00000001)
> > [    0.258288] ACPI: SSDT 0x00000000A684C000 0006D4 (v02 AMD    CPMWLRC
> 00000001 INTL 20230331)
> > [    0.267815] ACPI: SSDT 0x00000000A6842000 00982F (v02 AMD    CPMCMN
>  00000001 INTL 20230331)
> > [    0.277339] ACPI: SSDT 0x00000000A683C000 002387 (v02 AMD    AOD
> 00000001 INTL 20230331)
> > [    0.286840] ACPI: SSDT 0x00000000A683B000 000500 (v02 AMD    MEMTOOL=
0
> 00000002 INTL 20230331)
> > [    0.296283] ACPI: SSDT 0x00000000A683A000 00096A (v02 AMD    CPMMSOS=
C
> 00000001 INTL 20230331)
> > [    0.305841] ACPI: SSDT 0x00000000A6839000 000B72 (v02 AMD    CPMACPV=
6
> 00000001 INTL 20230331)
> > [    0.315288] ACPI: SSDT 0x00000000A6838000 00044E (v02 AMD    AmdTabl=
e
> 00000001 INTL 20230331)
> > [    0.324802] ACPI: Reserving APIC table memory at [mem
> 0xafffac84-0xafffafff]
> > [    0.332592] ACPI: Reserving FACP table memory at [mem
> 0xa747c000-0xa747c113]
> > [    0.340419] ACPI: Reserving DSDT table memory at [mem
> 0xa746e000-0xa747b2f5]
> > [    0.348189] ACPI: Reserving FACS table memory at [mem
> 0xa945a000-0xa945a03f]
> > [    0.356058] ACPI: Reserving SSDT table memory at [mem
> 0xa747e000-0xa747e9cb]
> > [    0.363906] ACPI: Reserving SSDT table memory at [mem
> 0xa747d000-0xa747d066]
> > [    0.371757] ACPI: Reserving MCFG table memory at [mem
> 0xa746c000-0xa746c03b]
> > [    0.379576] ACPI: Reserving SSDT table memory at [mem
> 0xa746b000-0xa746b5c4]
> > [    0.387437] ACPI: Reserving SSDT table memory at [mem
> 0xa7468000-0xa7469b52]
> > [    0.395337] ACPI: Reserving FPDT table memory at [mem
> 0xa7465000-0xa7465043]
> > [    0.403153] ACPI: Reserving SSDT table memory at [mem
> 0xa7462000-0xa7464447]
> > [    0.410989] ACPI: Reserving SSDT table memory at [mem
> 0xa745f000-0xa7461447]
> > [    0.418802] ACPI: Reserving SSDT table memory at [mem
> 0xa745c000-0xa745e447]
> > [    0.426642] ACPI: Reserving SSDT table memory at [mem
> 0xa7459000-0xa745b447]
> > [    0.434529] ACPI: Reserving SSDT table memory at [mem
> 0xa743e000-0xa744840d]
> > [    0.442393] ACPI: Reserving SSDT table memory at [mem
> 0xa684c000-0xa684c6d3]
> > [    0.450203] ACPI: Reserving SSDT table memory at [mem
> 0xa6842000-0xa684b82e]
> > [    0.458038] ACPI: Reserving SSDT table memory at [mem
> 0xa683c000-0xa683e386]
> > [    0.465853] ACPI: Reserving SSDT table memory at [mem
> 0xa683b000-0xa683b4ff]
> > [    0.473805] ACPI: Reserving SSDT table memory at [mem
> 0xa683a000-0xa683a969]
> > [    0.481626] ACPI: Reserving SSDT table memory at [mem
> 0xa6839000-0xa6839b71]
> > [    0.489475] ACPI: Reserving SSDT table memory at [mem
> 0xa6838000-0xa683844d]
>
> Weird, there's no VFCT listed here.
>
> Thanks, Roger.
>

--000000000000a6ad37060f6ab456
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><div dir=3D"ltr"><br></div><br><div class=3D"gmail_quote">=
<div dir=3D"ltr" class=3D"gmail_attr">On Fri, Jan 19, 2024 at 6:06=E2=80=AF=
AM Roger Pau Monn=C3=A9 &lt;<a href=3D"mailto:roger.pau@citrix.com">roger.p=
au@citrix.com</a>&gt; wrote:<br></div><blockquote class=3D"gmail_quote" sty=
le=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);paddi=
ng-left:1ex">On Fri, Jan 19, 2024 at 02:44:35AM -0500, Patrick Plenefisch w=
rote:<br>
&gt; On Thu, Jan 18, 2024 at 7:41=E2=80=AFAM Roger Pau Monn=C3=A9 &lt;<a hr=
ef=3D"mailto:roger.pau@citrix.com" target=3D"_blank">roger.pau@citrix.com</=
a>&gt;<br>
&gt; wrote:<br>
&gt; <br>
&gt; &gt;<br>
&gt; &gt; From that environment (PVH dom0) can you see if you can dump the<=
br>
&gt; &gt; contents of the VFCT table?=C2=A0 I don&#39;t have a system with =
that table, so<br>
&gt; &gt; not sure if this will work (because iasl is unlikely to know how =
to<br>
&gt; &gt; decode it):<br>
&gt; &gt;<br>
&gt; &gt; # acpidump -n VFCT -o table.dump<br>
&gt; &gt; # acpixtract -a table.dump<br>
&gt; &gt; # iasl -d vfct.dat<br>
&gt; &gt; # cat vfct.dsl<br>
&gt; &gt;<br>
&gt; &gt; Would be good if you can compare the output from what you get on =
a PV<br>
&gt; &gt; dom0 or when running native Linux.<br>
&gt; &gt;<br>
&gt; &gt; I&#39;m also adding some AMD folks, as IIRC they did some fixes t=
o Linux<br>
&gt; &gt; in order to get some AMD graphics cards running on a PVH dom0, ma=
ybe<br>
&gt; &gt; they can provide some additional input.<br>
&gt; &gt;<br>
&gt; &gt;<br>
&gt; Well, this is pretty weird. I&#39;ll go into more details because it m=
ay be<br>
&gt; relevant.<br>
<br>
Wow, you have certainly gone out of the beaten path here.<br></blockquote><=
div><br></div><div>Yeah, I wasn&#39;t expecting this many issues for being =
an early adopter of Threaderipper 7000!<br></div><div>=C2=A0</div><blockquo=
te class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px =
solid rgb(204,204,204);padding-left:1ex">
<br>
&gt; I had been working with ASRock support ever since I got my brand<br>
&gt; new motherboard because I couldn&#39;t see the BIOS/UEFI screens. I co=
uld boot<br>
&gt; up, and once native linux took control amdgpu got the screens/gpu work=
ing<br>
&gt; fine. I finally managed to be able to see the UEFI/BIOS setup screens =
by<br>
&gt; patching my VBIOS: I extracted the VBIOS image of a cheap R5 430 OEM, =
ran<br>
&gt; GOPupd to update the VBIOS UEFI component (GOP) from version 1.60 to 1=
.67.<br>
&gt; That allowed the UEFI to actually initialize and use a screen. However=
, I<br>
&gt; later realized that only 1 monitor was lighting up in the bios: my mon=
itor<br>
&gt; plugged into the Radeon RX 480 that was still on VBIOS GOP 1.60. It ap=
pears<br>
&gt; the GOP was initializing the RX 480 too, despite not being flashed wit=
h the<br>
&gt; latest itself. I am working on an email to asrock support about that. =
Once<br>
&gt; I get into linux (native or PV), both monitors light up as expected. A=
lso,<br>
&gt; If I boot linux PVH from grub, they also work.<br>
<br>
OK, that&#39;s good, so that would be UEFI -&gt; grub -&gt; Xen -&gt; Linux=
 PVH?<br></blockquote><div><br></div><div>Correct. Inserting grub into the =
chain &quot;fixes&quot; the acpi tables and things work correctly. <br></di=
v><div>=C2=A0<br></div><blockquote class=3D"gmail_quote" style=3D"margin:0p=
x 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<br>
&gt; Those usage scenarios have<br>
&gt; acpidump output as identical. Booting linux PVH directly from UEFI (no=
<br>
&gt; grub), the monitors go to sleep on the RX 480, and amdgpu errors out a=
bout<br>
&gt; VFCT, but the R5 430 OEM does still have output. Interestingly, there =
is a<br>
&gt; different screen mode booting UEFI+PVH, the characters are basically<b=
r>
&gt; squares, with more vertical lines than &quot;default&quot;, maybe clos=
e to native<br>
&gt; screen resolution, but horizontally it&#39;s still &quot;default&quot;=
. Booting from grub<br>
&gt; gives everything in the &quot;default&quot; resolution.<br>
<br>
Hm, maybe we are not passing the correct video information to Linux<br>
dom0 when booted from UEFI.=C2=A0 I&#39;m afraid I don&#39;t have such setu=
p<br>
myself, so it&#39;s going to be hard to test.<br>
<br>
To clarify, the output from Xen is fine, is the video output from<br>
Linux dom0 in PVH mode that&#39;s corrupt?<br></blockquote><div><br></div><=
div>Xen output in EFI+PV/GRUB+PV/GRUB+PVH: Rectangular letters (expected/go=
od)<br></div><div><div>Linux output in EFI+PV/GRUB+PV/GRUB+PVH: Rectangular=
 letters -&gt; kms fb -&gt; X11 (using this mode as I type this email right=
 now)</div><div>Xen output in EFI+PVH: Squashed square letters (unexpected)=
</div><div>Linux output in EFI+PVH: No output on RX 480, but R5 430 shows a=
 (static?) login console on hvc0 that I can&#39;t interact with.<br></div><=
/div><div>=C2=A0</div><blockquote class=3D"gmail_quote" style=3D"margin:0px=
 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<br>
&gt; <br>
&gt; So what is in the VFCT Table? VFCT contains the non-GOP VIOS image of =
my<br>
&gt; Radeon RX 480 GPU. You can compare it to the VBIOS hosted at<br>
&gt; <a href=3D"https://www.techpowerup.com/vgabios/185789/msi-rx480-4096-1=
60720" rel=3D"noreferrer" target=3D"_blank">https://www.techpowerup.com/vga=
bios/185789/msi-rx480-4096-160720</a> (Compare<br>
&gt; the end at E667 in the VFCT table to E5ff in that vbios link). I find =
this<br>
&gt; extra suspicious due to the above.<br>
&gt; <br>
&gt; Now for the extra horrible things:<br>
&gt; <br>
&gt; UEFI-booted PVH Linux doesn&#39;t support keyboard getty input, and at=
 least<br>
&gt; some of the USB devices are not in lsusb. It also decided to vanish on=
e of<br>
&gt; my HDD&#39;s. The `reboot` command hangs. The Power button doesn&#39;t=
 do anything.<br>
<br>
Yes, it does seem Lunux has issues reserving some BARs:<br>
<br>
[=C2=A0 =C2=A0 6.520615] ahci 0000:07:00.1: version 3.0<br>
[=C2=A0 =C2=A0 6.520701] ahci 0000:07:00.1: BAR 5: can&#39;t reserve [mem 0=
xf0e00000-0xf0e007ff]<br>
...<br>
[=C2=A0 =C2=A017.130099] ccp 0000:06:00.5: enabling device (0000 -&gt; 0002=
)<br>
[=C2=A0 =C2=A017.137025] ccp 0000:06:00.5: BAR 2: can&#39;t reserve [mem 0x=
f0b00000-0xf0bfffff]<br>
[=C2=A0 =C2=A017.145210] ccp 0000:06:00.5: pcim_iomap_regions failed (-16)<=
br>
[=C2=A0 =C2=A017.151868] ccp 0000:06:00.5: initialization failed<br>
[=C2=A0 =C2=A017.157615] ccp: probe of 0000:06:00.5 failed with error -16<b=
r>
...<br>
[=C2=A0 =C2=A017.993532] snd_hda_intel 0000:01:00.1: enabling device (0000 =
-&gt; 0002)<br>
[=C2=A0 =C2=A018.001207] snd_hda_intel 0000:01:00.1: Force to non-snoop mod=
e<br>
[=C2=A0 =C2=A018.007997] snd_hda_intel 0000:01:00.1: BAR 0: can&#39;t reser=
ve [mem 0xf0f60000-0xf0f63fff 64bit]<br>
[=C2=A0 =C2=A018.018053] snd_hda_intel 0000:06:00.7: enabling device (0000 =
-&gt; 0002)<br>
[=C2=A0 =C2=A018.025723] snd_hda_intel 0000:06:00.7: BAR 0: can&#39;t reser=
ve [mem 0xf0d00000-0xf0d07fff]<br>
[=C2=A0 =C2=A018.033679] snd_hda_intel 0000:41:00.1: enabling device (0000 =
-&gt; 0002)<br>
[=C2=A0 =C2=A018.043165] snd_hda_intel 0000:41:00.1: Force to non-snoop mod=
e<br>
<br>
I bet this because Xen balloon driver has started picking up those<br>
regions in order to map foreign pages.<br>
<br>
&gt; There are several stack traces in dmesg. But Alt-SysRq-B does reboot!<=
br>
&gt; Luckily I could ssh in and capture the ACPI tables. They are much smal=
ler,<br>
&gt; and VFCT is empty.=C2=A0 Booting back to one of the working scenarios =
(direct<br>
&gt; linux, Grub PV, Grub PVH, UEFI PV), all of this is normal.<br>
&gt; <br>
&gt; I&#39;ve attached:<br>
&gt; <br>
&gt; xenboot.log which is the serial log of xen+linux booting in UEFI PVH<b=
r>
&gt; (kernel is debian&#39;s config, but patched to start at 2MiB)<br>
&gt; dmesg.txt which is the linux dmesg that contains some nice stack trace=
s<br>
&gt; (kernel is debian&#39;s config, but patched to start at 2MiB)<br>
&gt; efipvh-tables.dump is ALL acpi tables from UEFI+PVH mode (acpidump -o<=
br>
&gt; efipvh-tables.dump)<br>
&gt; working-tables.dump is ALL acpi tables from the other modes (acpidump =
-o<br>
&gt; working-tables.dump)<br>
&gt; efipvh-vfct.dump is attached in spirit, as it is 0 bytes long (acpidum=
p -n<br>
&gt; VFCT -o efipvh-vfct.dump)<br>
&gt; <br>
&gt; I ran iasl, but it just said **** Unknown ACPI table signature [VFCT] =
and<br>
&gt; spat out the raw data table, nothing interesting<br>
&gt; <br>
&gt; Something I can try, but have been nervous to try due to GOPupd warnin=
gs is<br>
&gt; to also flash the 1.67 GOP to the VBIOS on the RX 480. The R5 430 OEM =
had<br>
&gt; no such warnings.<br>
&gt; <br>
&gt; Patrick<br>
<br>
&gt; [=C2=A0 =C2=A0 0.000000] Linux version 6.1.69 (root@pollux) (gcc (Debi=
an 12.2.0-14) 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #10 SMP PREEMP=
T_DYNAMIC Wed Jan 17 23:44:31 EST 2024<br>
&gt; [=C2=A0 =C2=A0 0.000000] Command line: root=3DUUID=3D922b10f2-a826-47f=
b-ab38-836f9b397ff7 ro rootflags=3Dsubvol=3D@rootfs=C2=A0 earlyprintk=3Dxen=
 console=3Dhvc0<br>
&gt; [=C2=A0 =C2=A0 0.000000] [Firmware Bug]: TSC doesn&#39;t count with P0=
 frequency!<br>
&gt; [=C2=A0 =C2=A0 0.000000] BIOS-provided physical RAM map:<br>
&gt; [=C2=A0 =C2=A0 0.000000] BIOS-e820: [mem 0x0000000000000000-0x00000000=
0009ffff] usable<br>
&gt; [=C2=A0 =C2=A0 0.000000] BIOS-e820: [mem 0x00000000000a0000-0x00000000=
000fffff] reserved<br>
&gt; [=C2=A0 =C2=A0 0.000000] BIOS-e820: [mem 0x0000000000100000-0x00000000=
03ffffff] usable<br>
&gt; [=C2=A0 =C2=A0 0.000000] BIOS-e820: [mem 0x0000000004000000-0x00000000=
04045fff] ACPI NVS<br>
&gt; [=C2=A0 =C2=A0 0.000000] BIOS-e820: [mem 0x0000000004046000-0x00000000=
09afefff] usable<br>
&gt; [=C2=A0 =C2=A0 0.000000] BIOS-e820: [mem 0x0000000009aff000-0x00000000=
09ffffff] reserved<br>
&gt; [=C2=A0 =C2=A0 0.000000] BIOS-e820: [mem 0x000000000a000000-0x00000000=
0affffff] usable<br>
&gt; [=C2=A0 =C2=A0 0.000000] BIOS-e820: [mem 0x000000000b000000-0x00000000=
0b020fff] reserved<br>
&gt; [=C2=A0 =C2=A0 0.000000] BIOS-e820: [mem 0x000000000b021000-0x00000000=
a04e8fff] usable<br>
&gt; [=C2=A0 =C2=A0 0.000000] BIOS-e820: [mem 0x00000000a04e9000-0x00000000=
a64e8fff] reserved<br>
&gt; [=C2=A0 =C2=A0 0.000000] BIOS-e820: [mem 0x00000000a64e9000-0x00000000=
a747efff] ACPI data<br>
&gt; [=C2=A0 =C2=A0 0.000000] BIOS-e820: [mem 0x00000000a747f000-0x00000000=
a947efff] ACPI NVS<br>
&gt; [=C2=A0 =C2=A0 0.000000] BIOS-e820: [mem 0x00000000a947f000-0x00000000=
addfefff] reserved<br>
&gt; [=C2=A0 =C2=A0 0.000000] BIOS-e820: [mem 0x00000000addff000-0x00000000=
afffab9b] usable<br>
&gt; [=C2=A0 =C2=A0 0.000000] BIOS-e820: [mem 0x00000000afffab9c-0x00000000=
afffaf17] ACPI data<br>
&gt; [=C2=A0 =C2=A0 0.000000] BIOS-e820: [mem 0x00000000afffb000-0x00000000=
bfffffff] reserved<br>
&gt; [=C2=A0 =C2=A0 0.000000] BIOS-e820: [mem 0x00000000df200000-0x00000000=
df2fffff] reserved<br>
&gt; [=C2=A0 =C2=A0 0.000000] BIOS-e820: [mem 0x00000000e0000000-0x00000000=
efffffff] reserved<br>
&gt; [=C2=A0 =C2=A0 0.000000] BIOS-e820: [mem 0x00000000fea00000-0x00000000=
feafffff] reserved<br>
&gt; [=C2=A0 =C2=A0 0.000000] BIOS-e820: [mem 0x00000000fec00000-0x00000000=
fec00fff] reserved<br>
&gt; [=C2=A0 =C2=A0 0.000000] BIOS-e820: [mem 0x00000000fec10000-0x00000000=
fec10fff] reserved<br>
&gt; [=C2=A0 =C2=A0 0.000000] BIOS-e820: [mem 0x00000000fec30000-0x00000000=
fec30fff] reserved<br>
&gt; [=C2=A0 =C2=A0 0.000000] BIOS-e820: [mem 0x00000000fed00000-0x00000000=
fed00fff] reserved<br>
&gt; [=C2=A0 =C2=A0 0.000000] BIOS-e820: [mem 0x00000000fed40000-0x00000000=
fed44fff] reserved<br>
&gt; [=C2=A0 =C2=A0 0.000000] BIOS-e820: [mem 0x00000000fed80000-0x00000000=
fed8ffff] reserved<br>
&gt; [=C2=A0 =C2=A0 0.000000] BIOS-e820: [mem 0x00000000ff000000-0x00000000=
ffffffff] reserved<br>
&gt; [=C2=A0 =C2=A0 0.000000] BIOS-e820: [mem 0x0000000100000000-0x00000002=
5dee2fff] usable<br>
&gt; [=C2=A0 =C2=A0 0.000000] BIOS-e820: [mem 0x000000025dee3000-0x00000040=
3dbbffff] unusable<br>
&gt; [=C2=A0 =C2=A0 0.000000] BIOS-e820: [mem 0x000000403dbc0000-0x00000040=
3fffffff] reserved<br>
&gt; [=C2=A0 =C2=A0 0.000000] printk: bootconsole [xenboot0] enabled<br>
&gt; [=C2=A0 =C2=A0 0.000000] NX (Execute Disable) protection: active<br>
&gt; [=C2=A0 =C2=A0 0.000000] efi: EFI v2.90 by American Megatrends<br>
&gt; [=C2=A0 =C2=A0 0.000000] efi: ACPI=3D0xa9463000 ACPI 2.0=3D0xa9463014 =
SMBIOS=3D0xad9f4000 SMBIOS 3.0=3D0xad9f3000 MEMATTR=3D0x99e26698 ESRT=3D0xa=
7466018 <br>
&gt; [=C2=A0 =C2=A0 0.000000] secureboot: Secure boot disabled<br>
&gt; [=C2=A0 =C2=A0 0.000000] SMBIOS 3.6.0 present.<br>
&gt; [=C2=A0 =C2=A0 0.000000] DMI: To Be Filled By O.E.M. TRX50 WS/TRX50 WS=
, BIOS 7.08 01/16/2024<br>
&gt; [=C2=A0 =C2=A0 0.000000] Hypervisor detected: Xen HVM<br>
&gt; [=C2=A0 =C2=A0 0.000000] Xen version 4.17.<br>
&gt; [=C2=A0 =C2=A0 0.000003] HVMOP_pagetable_dying not supported<br>
&gt; [=C2=A0 =C2=A0 0.043916] tsc: Fast TSC calibration failed<br>
&gt; [=C2=A0 =C2=A0 0.048843] tsc: Detected 4199.960 MHz processor<br>
&gt; [=C2=A0 =C2=A0 0.054365] e820: update [mem 0x00000000-0x00000fff] usab=
le =3D=3D&gt; reserved<br>
&gt; [=C2=A0 =C2=A0 0.054368] e820: remove [mem 0x000a0000-0x000fffff] usab=
le<br>
&gt; [=C2=A0 =C2=A0 0.054375] last_pfn =3D 0x25dee3 max_arch_pfn =3D 0x4000=
00000<br>
&gt; [=C2=A0 =C2=A0 0.062033] x86/PAT: Configuration [0-7]: WB=C2=A0 WC=C2=
=A0 UC- UC=C2=A0 WB=C2=A0 WP=C2=A0 UC- WT=C2=A0 <br>
&gt; [=C2=A0 =C2=A0 0.070417] CPU MTRRs all blank - virtualized system.<br>
&gt; [=C2=A0 =C2=A0 0.076209] last_pfn =3D 0xafffa max_arch_pfn =3D 0x40000=
0000<br>
&gt; [=C2=A0 =C2=A0 0.085594] Using GB pages for direct mapping<br>
&gt; [=C2=A0 =C2=A0 0.091184] RAMDISK: [mem 0x04046000-0x068cdfff]<br>
&gt; [=C2=A0 =C2=A0 0.096533] ACPI: Early table checksum verification disab=
led<br>
&gt; [=C2=A0 =C2=A0 0.103248] ACPI: RSDP 0x00000000AFFFAB9C 000024 (v02 AMD=
=C2=A0 =C2=A0)<br>
&gt; [=C2=A0 =C2=A0 0.109716] ACPI: XSDT 0x00000000AFFFABC0 0000C4 (v01 AMD=
=C2=A0 =C2=A0 A M I=C2=A0 =C2=A0 00000001 AMI=C2=A0 01000013)<br>
&gt; [=C2=A0 =C2=A0 0.119663] ACPI: APIC 0x00000000AFFFAC84 00037C (v04 AMD=
=C2=A0 =C2=A0 A M I=C2=A0 =C2=A0 00000001 AMI=C2=A0 00010013)<br>
&gt; [=C2=A0 =C2=A0 0.129538] ACPI: FACP 0x00000000A747C000 000114 (v06 AMD=
=C2=A0 =C2=A0 A M I=C2=A0 =C2=A0 00000001 AMI=C2=A0 00010013)<br>
&gt; [=C2=A0 =C2=A0 0.139250] ACPI: DSDT 0x00000000A746E000 00D2F6 (v02 AMD=
=C2=A0 =C2=A0 A M I=C2=A0 =C2=A0 00000001 INTL 20230331)<br>
&gt; [=C2=A0 =C2=A0 0.148717] ACPI: FACS 0x00000000A945A000 000040<br>
&gt; [=C2=A0 =C2=A0 0.153805] ACPI: SSDT 0x00000000A747E000 0009CC (v02 AMD=
=C2=A0 =C2=A0 BOULDERG 00000002 MSFT 04000000)<br>
&gt; [=C2=A0 =C2=A0 0.163309] ACPI: SSDT 0x00000000A747D000 000067 (v02 AMD=
=C2=A0 =C2=A0 CPMDSM=C2=A0 =C2=A000000001 INTL 20230331)<br>
&gt; [=C2=A0 =C2=A0 0.172813] ACPI: MCFG 0x00000000A746C000 00003C (v01 AMD=
=C2=A0 =C2=A0 A M I=C2=A0 =C2=A0 00000001 MSFT 00010013)<br>
&gt; [=C2=A0 =C2=A0 0.182351] ACPI: SSDT 0x00000000A746B000 0005C5 (v02 AMD=
=C2=A0 =C2=A0 CPUSSDT=C2=A0 00000001 AMI=C2=A0 00000001)<br>
&gt; [=C2=A0 =C2=A0 0.191806] ACPI: SSDT 0x00000000A7468000 001B53 (v02 AMD=
=C2=A0 =C2=A0 CPMRAS=C2=A0 =C2=A000000001 INTL 20230331)<br>
&gt; [=C2=A0 =C2=A0 0.201308] ACPI: FPDT 0x00000000A7465000 000044 (v01 AMD=
=C2=A0 =C2=A0 A M I=C2=A0 =C2=A0 01072009 AMI=C2=A0 01000013)<br>
&gt; [=C2=A0 =C2=A0 0.210819] ACPI: SSDT 0x00000000A7462000 002448 (v02 AMD=
=C2=A0 =C2=A0 GPP_PME_ 00000001 INTL 20230331)<br>
&gt; [=C2=A0 =C2=A0 0.220343] ACPI: SSDT 0x00000000A745F000 002448 (v02 AMD=
=C2=A0 =C2=A0 GPP_PME_ 00000001 INTL 20230331)<br>
&gt; [=C2=A0 =C2=A0 0.229884] ACPI: SSDT 0x00000000A745C000 002448 (v02 AMD=
=C2=A0 =C2=A0 GPP_PME_ 00000001 INTL 20230331)<br>
&gt; [=C2=A0 =C2=A0 0.239351] ACPI: SSDT 0x00000000A7459000 002448 (v02 AMD=
=C2=A0 =C2=A0 GPP_PME_ 00000001 INTL 20230331)<br>
&gt; [=C2=A0 =C2=A0 0.248780] ACPI: SSDT 0x00000000A743E000 00A40E (v02 AMD=
=C2=A0 =C2=A0 AMD CPU=C2=A0 00000001 AMD=C2=A0 00000001)<br>
&gt; [=C2=A0 =C2=A0 0.258288] ACPI: SSDT 0x00000000A684C000 0006D4 (v02 AMD=
=C2=A0 =C2=A0 CPMWLRC=C2=A0 00000001 INTL 20230331)<br>
&gt; [=C2=A0 =C2=A0 0.267815] ACPI: SSDT 0x00000000A6842000 00982F (v02 AMD=
=C2=A0 =C2=A0 CPMCMN=C2=A0 =C2=A000000001 INTL 20230331)<br>
&gt; [=C2=A0 =C2=A0 0.277339] ACPI: SSDT 0x00000000A683C000 002387 (v02 AMD=
=C2=A0 =C2=A0 AOD=C2=A0 =C2=A0 =C2=A0 00000001 INTL 20230331)<br>
&gt; [=C2=A0 =C2=A0 0.286840] ACPI: SSDT 0x00000000A683B000 000500 (v02 AMD=
=C2=A0 =C2=A0 MEMTOOL0 00000002 INTL 20230331)<br>
&gt; [=C2=A0 =C2=A0 0.296283] ACPI: SSDT 0x00000000A683A000 00096A (v02 AMD=
=C2=A0 =C2=A0 CPMMSOSC 00000001 INTL 20230331)<br>
&gt; [=C2=A0 =C2=A0 0.305841] ACPI: SSDT 0x00000000A6839000 000B72 (v02 AMD=
=C2=A0 =C2=A0 CPMACPV6 00000001 INTL 20230331)<br>
&gt; [=C2=A0 =C2=A0 0.315288] ACPI: SSDT 0x00000000A6838000 00044E (v02 AMD=
=C2=A0 =C2=A0 AmdTable 00000001 INTL 20230331)<br>
&gt; [=C2=A0 =C2=A0 0.324802] ACPI: Reserving APIC table memory at [mem 0xa=
fffac84-0xafffafff]<br>
&gt; [=C2=A0 =C2=A0 0.332592] ACPI: Reserving FACP table memory at [mem 0xa=
747c000-0xa747c113]<br>
&gt; [=C2=A0 =C2=A0 0.340419] ACPI: Reserving DSDT table memory at [mem 0xa=
746e000-0xa747b2f5]<br>
&gt; [=C2=A0 =C2=A0 0.348189] ACPI: Reserving FACS table memory at [mem 0xa=
945a000-0xa945a03f]<br>
&gt; [=C2=A0 =C2=A0 0.356058] ACPI: Reserving SSDT table memory at [mem 0xa=
747e000-0xa747e9cb]<br>
&gt; [=C2=A0 =C2=A0 0.363906] ACPI: Reserving SSDT table memory at [mem 0xa=
747d000-0xa747d066]<br>
&gt; [=C2=A0 =C2=A0 0.371757] ACPI: Reserving MCFG table memory at [mem 0xa=
746c000-0xa746c03b]<br>
&gt; [=C2=A0 =C2=A0 0.379576] ACPI: Reserving SSDT table memory at [mem 0xa=
746b000-0xa746b5c4]<br>
&gt; [=C2=A0 =C2=A0 0.387437] ACPI: Reserving SSDT table memory at [mem 0xa=
7468000-0xa7469b52]<br>
&gt; [=C2=A0 =C2=A0 0.395337] ACPI: Reserving FPDT table memory at [mem 0xa=
7465000-0xa7465043]<br>
&gt; [=C2=A0 =C2=A0 0.403153] ACPI: Reserving SSDT table memory at [mem 0xa=
7462000-0xa7464447]<br>
&gt; [=C2=A0 =C2=A0 0.410989] ACPI: Reserving SSDT table memory at [mem 0xa=
745f000-0xa7461447]<br>
&gt; [=C2=A0 =C2=A0 0.418802] ACPI: Reserving SSDT table memory at [mem 0xa=
745c000-0xa745e447]<br>
&gt; [=C2=A0 =C2=A0 0.426642] ACPI: Reserving SSDT table memory at [mem 0xa=
7459000-0xa745b447]<br>
&gt; [=C2=A0 =C2=A0 0.434529] ACPI: Reserving SSDT table memory at [mem 0xa=
743e000-0xa744840d]<br>
&gt; [=C2=A0 =C2=A0 0.442393] ACPI: Reserving SSDT table memory at [mem 0xa=
684c000-0xa684c6d3]<br>
&gt; [=C2=A0 =C2=A0 0.450203] ACPI: Reserving SSDT table memory at [mem 0xa=
6842000-0xa684b82e]<br>
&gt; [=C2=A0 =C2=A0 0.458038] ACPI: Reserving SSDT table memory at [mem 0xa=
683c000-0xa683e386]<br>
&gt; [=C2=A0 =C2=A0 0.465853] ACPI: Reserving SSDT table memory at [mem 0xa=
683b000-0xa683b4ff]<br>
&gt; [=C2=A0 =C2=A0 0.473805] ACPI: Reserving SSDT table memory at [mem 0xa=
683a000-0xa683a969]<br>
&gt; [=C2=A0 =C2=A0 0.481626] ACPI: Reserving SSDT table memory at [mem 0xa=
6839000-0xa6839b71]<br>
&gt; [=C2=A0 =C2=A0 0.489475] ACPI: Reserving SSDT table memory at [mem 0xa=
6838000-0xa683844d]<br>
<br>
Weird, there&#39;s no VFCT listed here.<br>
<br>
Thanks, Roger.<br>
</blockquote></div></div>

--000000000000a6ad37060f6ab456--


From xen-devel-bounces@lists.xenproject.org Sun Jan 21 02:27:13 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sun, 21 Jan 2024 02:27:13 +0000
Received: from list by lists.xenproject.org with outflank-mailman.669522.1041928 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rRNY8-0004TU-Fy; Sun, 21 Jan 2024 02:27:04 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 669522.1041928; Sun, 21 Jan 2024 02:27:04 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rRNY8-0004TN-D0; Sun, 21 Jan 2024 02:27:04 +0000
Received: by outflank-mailman (input) for mailman id 669522;
 Sun, 21 Jan 2024 02:27:02 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rRNY6-0004TD-LS; Sun, 21 Jan 2024 02:27:02 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rRNY6-0001nr-DX; Sun, 21 Jan 2024 02:27:02 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rRNY5-0000io-NN; Sun, 21 Jan 2024 02:27:01 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rRNY5-0003kU-Lf; Sun, 21 Jan 2024 02:27:01 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=o6Eq2gJSfqBY1G5t2q5hUT90XW4yQkFYt4EL9I8gbDY=; b=F0Xhkwdy3KIXHIQc+TKv8cEpDw
	KFeuZKDjEkj0CZbpqMgeeKNR/InPXsM5DGbgRGi0dIeUzJ5v7/WVldoynV+cEXXRPDE64n6XormFc
	U0Ni2BuwsjJeXZ9G/UtwzhcCLii0yNMRaNvJSa10A5LDFRAUwJI/fFQ37Wp5gFpVN7kQ=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184413-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [linux-linus test] 184413: tolerable FAIL - PUSHED
X-Osstest-Failures:
    linux-linus:test-armhf-armhf-libvirt-qcow2:guest-start/debian.repeat:fail:heisenbug
    linux-linus:test-armhf-armhf-libvirt:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    linux-linus:test-amd64-amd64-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    linux-linus:test-amd64-amd64-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-raw:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-qcow2:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-qemuu-nested-amd:debian-hvm-install/l1/l2:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-xsm:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-thunderx:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-thunderx:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-xsm:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-xsm:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-libvirt-xsm:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-libvirt-xsm:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-credit2:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-credit2:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-credit1:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-credit1:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-arndale:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-arndale:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-multivcpu:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-multivcpu:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-rtds:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-rtds:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-libvirt-raw:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-vhd:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-vhd:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-vhd:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-vhd:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-qcow2:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit1:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit1:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit2:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit2:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-qcow2:migrate-support-check:fail:nonblocking
X-Osstest-Versions-This:
    linux=c25b24fa72c734f8cd6c31a13548013263b26286
X-Osstest-Versions-That:
    linux=9d64bf433c53cab2f48a3fff7a1f2a696bc5229a
From: osstest service owner <osstest-admin@xenproject.org>
Date: Sun, 21 Jan 2024 02:27:01 +0000

flight 184413 linux-linus real [real]
flight 184414 linux-linus real-retest [real]
http://logs.test-lab.xenproject.org/osstest/logs/184413/
http://logs.test-lab.xenproject.org/osstest/logs/184414/

Failures :-/ but no regressions.

Tests which are failing intermittently (not blocking):
 test-armhf-armhf-libvirt-qcow2 17 guest-start/debian.repeat fail pass in 184414-retest

Tests which did not succeed, but are not blocking:
 test-armhf-armhf-libvirt   16 saverestore-support-check fail blocked in 184410
 test-amd64-amd64-xl-qemut-win7-amd64 19 guest-stop            fail like 184410
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 184410
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 184410
 test-armhf-armhf-libvirt-raw 15 saverestore-support-check    fail  like 184410
 test-amd64-amd64-xl-qemut-ws16-amd64 19 guest-stop            fail like 184410
 test-armhf-armhf-libvirt-qcow2 15 saverestore-support-check   fail like 184410
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 184410
 test-amd64-amd64-libvirt     15 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-thunderx 15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-thunderx 16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-xsm      15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-xsm      16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl          15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl          16 saverestore-support-check    fail   never pass
 test-arm64-arm64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-xsm 16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-credit2  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit2  16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-credit1  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit1  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-arndale  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-arndale  16 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-armhf-armhf-libvirt     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-multivcpu 15 migrate-support-check        fail  never pass
 test-armhf-armhf-xl-multivcpu 16 saverestore-support-check    fail  never pass
 test-armhf-armhf-xl-rtds     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-rtds     16 saverestore-support-check    fail   never pass
 test-arm64-arm64-libvirt-raw 14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 15 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-raw 14 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-vhd      14 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-vhd      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-raw 14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      15 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-qcow2 14 migrate-support-check        fail never pass
 test-armhf-armhf-xl          15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-credit1  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit1  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-credit2  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit2  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-qcow2 14 migrate-support-check        fail never pass

version targeted for testing:
 linux                c25b24fa72c734f8cd6c31a13548013263b26286
baseline version:
 linux                9d64bf433c53cab2f48a3fff7a1f2a696bc5229a

Last test of basis   184410  2024-01-20 04:27:32 Z    0 days
Testing same since   184413  2024-01-20 18:12:19 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Bart Van Assche <bvanassche@acm.org>
  ChanWoo Lee <cw9316.lee@samsung.com>
  Dan Carpenter <dan.carpenter@linaro.org>
  David Strahan <david.strahan@microchip.com>
  Dmitry Bogdanov <d.bogdanov@yadro.com>
  Don Brace <don.brace@microchip.com>
  Geert Uytterhoeven <geert+renesas@glider.be>
  Harshit Mogalapalli <harshit.m.mogalapalli@oracle.com>
  Helge Deller <deller@gmx.de>
  John Paul Adrian Glaubitz <glaubitz@physik.fu-berlin.de>
  Linus Torvalds <torvalds@linux-foundation.org>
  Mahesh Rajashekhara <mahesh.rajashekhara@microchip.com>
  Martin K. Petersen <martin.petersen@oracle.com>
  Masahiro Yamada <masahiroy@kernel.org>
  Murthy Bhat <Murthy.Bhat@microchip.com>
  Niklas Cassel <cassel@kernel.org>
  Randy Dunlap <rdunlap@infradead.org>
  Thomas Zimmermann <tzimmermann@suse.de>

jobs:
 build-amd64-xsm                                              pass    
 build-arm64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64                                                  pass    
 build-arm64                                                  pass    
 build-armhf                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-arm64-libvirt                                          pass    
 build-armhf-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-pvops                                            pass    
 build-arm64-pvops                                            pass    
 build-armhf-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-amd64-amd64-xl                                          pass    
 test-amd64-coresched-amd64-xl                                pass    
 test-arm64-arm64-xl                                          pass    
 test-armhf-armhf-xl                                          pass    
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm           pass    
 test-amd64-amd64-xl-qemut-stubdom-debianhvm-amd64-xsm        pass    
 test-amd64-amd64-xl-qemut-debianhvm-i386-xsm                 pass    
 test-amd64-amd64-xl-qemuu-debianhvm-i386-xsm                 pass    
 test-amd64-amd64-libvirt-xsm                                 pass    
 test-arm64-arm64-libvirt-xsm                                 pass    
 test-amd64-amd64-xl-xsm                                      pass    
 test-arm64-arm64-xl-xsm                                      pass    
 test-amd64-amd64-qemuu-nested-amd                            fail    
 test-amd64-amd64-xl-pvhv2-amd                                pass    
 test-amd64-amd64-dom0pvh-xl-amd                              pass    
 test-amd64-amd64-xl-qemut-debianhvm-amd64                    pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64                    pass    
 test-amd64-amd64-freebsd11-amd64                             pass    
 test-amd64-amd64-freebsd12-amd64                             pass    
 test-amd64-amd64-xl-qemuu-ovmf-amd64                         pass    
 test-amd64-amd64-xl-qemut-win7-amd64                         fail    
 test-amd64-amd64-xl-qemuu-win7-amd64                         fail    
 test-amd64-amd64-xl-qemut-ws16-amd64                         fail    
 test-amd64-amd64-xl-qemuu-ws16-amd64                         fail    
 test-armhf-armhf-xl-arndale                                  pass    
 test-amd64-amd64-examine-bios                                pass    
 test-amd64-amd64-xl-credit1                                  pass    
 test-arm64-arm64-xl-credit1                                  pass    
 test-armhf-armhf-xl-credit1                                  pass    
 test-amd64-amd64-xl-credit2                                  pass    
 test-arm64-arm64-xl-credit2                                  pass    
 test-armhf-armhf-xl-credit2                                  pass    
 test-amd64-amd64-xl-qemuu-dmrestrict-amd64-dmrestrict        pass    
 test-amd64-amd64-examine                                     pass    
 test-arm64-arm64-examine                                     pass    
 test-armhf-armhf-examine                                     pass    
 test-amd64-amd64-qemuu-nested-intel                          pass    
 test-amd64-amd64-xl-pvhv2-intel                              pass    
 test-amd64-amd64-dom0pvh-xl-intel                            pass    
 test-amd64-amd64-libvirt                                     pass    
 test-armhf-armhf-libvirt                                     pass    
 test-amd64-amd64-xl-multivcpu                                pass    
 test-armhf-armhf-xl-multivcpu                                pass    
 test-amd64-amd64-pair                                        pass    
 test-amd64-amd64-libvirt-pair                                pass    
 test-amd64-amd64-xl-pvshim                                   pass    
 test-amd64-amd64-pygrub                                      pass    
 test-amd64-amd64-libvirt-qcow2                               pass    
 test-armhf-armhf-libvirt-qcow2                               fail    
 test-amd64-amd64-libvirt-raw                                 pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-armhf-armhf-libvirt-raw                                 pass    
 test-amd64-amd64-xl-rtds                                     pass    
 test-armhf-armhf-xl-rtds                                     pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64-shadow             pass    
 test-amd64-amd64-xl-shadow                                   pass    
 test-arm64-arm64-xl-thunderx                                 pass    
 test-amd64-amd64-examine-uefi                                pass    
 test-amd64-amd64-xl-vhd                                      pass    
 test-arm64-arm64-xl-vhd                                      pass    
 test-armhf-armhf-xl-vhd                                      pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Pushing revision :

hint: The 'hooks/update' hook was ignored because it's not set as executable.
hint: You can disable this warning with `git config advice.ignoredHook false`.
hint: The 'hooks/post-receive' hook was ignored because it's not set as executable.
hint: You can disable this warning with `git config advice.ignoredHook false`.
hint: The 'hooks/post-update' hook was ignored because it's not set as executable.
hint: You can disable this warning with `git config advice.ignoredHook false`.
To xenbits.xen.org:/home/xen/git/linux-pvops.git
   9d64bf433c53..c25b24fa72c7  c25b24fa72c734f8cd6c31a13548013263b26286 -> tested/linux-linus


From xen-devel-bounces@lists.xenproject.org Sun Jan 21 09:42:58 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sun, 21 Jan 2024 09:42:58 +0000
Received: from list by lists.xenproject.org with outflank-mailman.669554.1041938 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rRULh-00058S-Nd; Sun, 21 Jan 2024 09:42:41 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 669554.1041938; Sun, 21 Jan 2024 09:42:41 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rRULh-00058L-KT; Sun, 21 Jan 2024 09:42:41 +0000
Received: by outflank-mailman (input) for mailman id 669554;
 Sun, 21 Jan 2024 09:42:39 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rRULf-00057s-Ni; Sun, 21 Jan 2024 09:42:39 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rRULf-0002lr-JL; Sun, 21 Jan 2024 09:42:39 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rRULf-0005Kl-55; Sun, 21 Jan 2024 09:42:39 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rRULf-0005jq-4A; Sun, 21 Jan 2024 09:42:39 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=mjE3nBL9OrZxiP0IRY+KJKopZEYlmk5HjorxbBHNo8k=; b=mXn2jxHpeljxKWEP8Rw4ZeawLv
	2HPJK1cxkD6CikN+ybLLvG16ETV54GDQNdxNgfaR2mkwm1tC/kKgcKrLaefWcKlPNwsMmzIcWk112
	F+7WX2xmsgDcas37mUN5R14yxWZwPC3ersNw9vELidElKw5ExMohIuWXYBB/kLxMDePc=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184415-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [xen-unstable test] 184415: tolerable FAIL
X-Osstest-Failures:
    xen-unstable:test-armhf-armhf-libvirt:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-amd64-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-raw:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-amd64-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-qcow2:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-qemuu-nested-amd:debian-hvm-install/l1/l2:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-amd64-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-i386-libvirt-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-libvirt:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-pvshim:guest-start:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-xsm:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-credit2:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-credit2:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-libvirt-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-libvirt-xsm:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-thunderx:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-thunderx:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-credit1:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-credit1:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-multivcpu:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-multivcpu:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit2:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit2:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-libvirt-raw:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-libvirt-raw:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-libvirt-raw:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt-vhd:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-vhd:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-vhd:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-raw:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-vhd:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-vhd:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit1:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit1:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-rtds:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-rtds:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-arndale:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-arndale:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-qcow2:migrate-support-check:fail:nonblocking
X-Osstest-Versions-This:
    xen=b25607e528f6ce7851e907ed59ad5ff583aa1840
X-Osstest-Versions-That:
    xen=b25607e528f6ce7851e907ed59ad5ff583aa1840
From: osstest service owner <osstest-admin@xenproject.org>
Date: Sun, 21 Jan 2024 09:42:39 +0000

flight 184415 xen-unstable real [real]
http://logs.test-lab.xenproject.org/osstest/logs/184415/

Failures :-/ but no regressions.

Tests which did not succeed, but are not blocking:
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 184407
 test-amd64-amd64-xl-qemut-win7-amd64 19 guest-stop            fail like 184407
 test-amd64-i386-xl-qemuu-win7-amd64 19 guest-stop             fail like 184407
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 184407
 test-amd64-i386-xl-qemut-ws16-amd64 19 guest-stop             fail like 184407
 test-armhf-armhf-libvirt-raw 15 saverestore-support-check    fail  like 184407
 test-amd64-i386-xl-qemut-win7-amd64 19 guest-stop             fail like 184407
 test-amd64-amd64-xl-qemut-ws16-amd64 19 guest-stop            fail like 184407
 test-armhf-armhf-libvirt-qcow2 15 saverestore-support-check   fail like 184407
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 184407
 test-amd64-i386-xl-qemuu-ws16-amd64 19 guest-stop             fail like 184407
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 184407
 test-amd64-i386-libvirt-xsm  15 migrate-support-check        fail   never pass
 test-amd64-i386-libvirt      15 migrate-support-check        fail   never pass
 test-amd64-i386-xl-pvshim    14 guest-start                  fail   never pass
 test-amd64-amd64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl          15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-xsm      15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl          16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-xsm      16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-credit2  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit2  16 saverestore-support-check    fail   never pass
 test-arm64-arm64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-xsm 16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-thunderx 15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-thunderx 16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-credit1  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit1  16 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt     15 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-armhf-armhf-libvirt     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-multivcpu 15 migrate-support-check        fail  never pass
 test-armhf-armhf-xl-multivcpu 16 saverestore-support-check    fail  never pass
 test-armhf-armhf-xl-credit2  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit2  16 saverestore-support-check    fail   never pass
 test-amd64-i386-libvirt-raw  14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 15 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-vhd 14 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-vhd      14 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-vhd      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-raw 14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl          15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-credit1  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit1  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-rtds     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-rtds     16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-arndale  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-arndale  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-qcow2 14 migrate-support-check        fail never pass

version targeted for testing:
 xen                  b25607e528f6ce7851e907ed59ad5ff583aa1840
baseline version:
 xen                  b25607e528f6ce7851e907ed59ad5ff583aa1840

Last test of basis   184415  2024-01-21 01:52:08 Z    0 days
Testing same since                          (not found)         0 attempts

jobs:
 build-amd64-xsm                                              pass    
 build-arm64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64-xtf                                              pass    
 build-amd64                                                  pass    
 build-arm64                                                  pass    
 build-armhf                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-arm64-libvirt                                          pass    
 build-armhf-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-prev                                             pass    
 build-i386-prev                                              pass    
 build-amd64-pvops                                            pass    
 build-arm64-pvops                                            pass    
 build-armhf-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-xtf-amd64-amd64-1                                       pass    
 test-xtf-amd64-amd64-2                                       pass    
 test-xtf-amd64-amd64-3                                       pass    
 test-xtf-amd64-amd64-4                                       pass    
 test-xtf-amd64-amd64-5                                       pass    
 test-amd64-amd64-xl                                          pass    
 test-amd64-coresched-amd64-xl                                pass    
 test-arm64-arm64-xl                                          pass    
 test-armhf-armhf-xl                                          pass    
 test-amd64-i386-xl                                           pass    
 test-amd64-coresched-i386-xl                                 pass    
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm           pass    
 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm            pass    
 test-amd64-amd64-xl-qemut-stubdom-debianhvm-amd64-xsm        pass    
 test-amd64-i386-xl-qemut-stubdom-debianhvm-amd64-xsm         pass    
 test-amd64-amd64-xl-qemut-debianhvm-i386-xsm                 pass    
 test-amd64-i386-xl-qemut-debianhvm-i386-xsm                  pass    
 test-amd64-amd64-xl-qemuu-debianhvm-i386-xsm                 pass    
 test-amd64-i386-xl-qemuu-debianhvm-i386-xsm                  pass    
 test-amd64-amd64-libvirt-xsm                                 pass    
 test-arm64-arm64-libvirt-xsm                                 pass    
 test-amd64-i386-libvirt-xsm                                  pass    
 test-amd64-amd64-xl-xsm                                      pass    
 test-arm64-arm64-xl-xsm                                      pass    
 test-amd64-i386-xl-xsm                                       pass    
 test-amd64-amd64-qemuu-nested-amd                            fail    
 test-amd64-amd64-xl-pvhv2-amd                                pass    
 test-amd64-i386-qemut-rhel6hvm-amd                           pass    
 test-amd64-i386-qemuu-rhel6hvm-amd                           pass    
 test-amd64-amd64-dom0pvh-xl-amd                              pass    
 test-amd64-amd64-xl-qemut-debianhvm-amd64                    pass    
 test-amd64-i386-xl-qemut-debianhvm-amd64                     pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64                    pass    
 test-amd64-i386-xl-qemuu-debianhvm-amd64                     pass    
 test-amd64-i386-freebsd10-amd64                              pass    
 test-amd64-amd64-qemuu-freebsd11-amd64                       pass    
 test-amd64-amd64-qemuu-freebsd12-amd64                       pass    
 test-amd64-amd64-xl-qemuu-ovmf-amd64                         pass    
 test-amd64-i386-xl-qemuu-ovmf-amd64                          pass    
 test-amd64-amd64-xl-qemut-win7-amd64                         fail    
 test-amd64-i386-xl-qemut-win7-amd64                          fail    
 test-amd64-amd64-xl-qemuu-win7-amd64                         fail    
 test-amd64-i386-xl-qemuu-win7-amd64                          fail    
 test-amd64-amd64-xl-qemut-ws16-amd64                         fail    
 test-amd64-i386-xl-qemut-ws16-amd64                          fail    
 test-amd64-amd64-xl-qemuu-ws16-amd64                         fail    
 test-amd64-i386-xl-qemuu-ws16-amd64                          fail    
 test-armhf-armhf-xl-arndale                                  pass    
 test-amd64-amd64-examine-bios                                pass    
 test-amd64-i386-examine-bios                                 pass    
 test-amd64-amd64-xl-credit1                                  pass    
 test-arm64-arm64-xl-credit1                                  pass    
 test-armhf-armhf-xl-credit1                                  pass    
 test-amd64-amd64-xl-credit2                                  pass    
 test-arm64-arm64-xl-credit2                                  pass    
 test-armhf-armhf-xl-credit2                                  pass    
 test-amd64-amd64-xl-qemuu-dmrestrict-amd64-dmrestrict        pass    
 test-amd64-i386-xl-qemuu-dmrestrict-amd64-dmrestrict         pass    
 test-amd64-amd64-examine                                     pass    
 test-arm64-arm64-examine                                     pass    
 test-armhf-armhf-examine                                     pass    
 test-amd64-i386-examine                                      pass    
 test-amd64-i386-freebsd10-i386                               pass    
 test-amd64-amd64-qemuu-nested-intel                          pass    
 test-amd64-amd64-xl-pvhv2-intel                              pass    
 test-amd64-i386-qemut-rhel6hvm-intel                         pass    
 test-amd64-i386-qemuu-rhel6hvm-intel                         pass    
 test-amd64-amd64-dom0pvh-xl-intel                            pass    
 test-amd64-amd64-libvirt                                     pass    
 test-armhf-armhf-libvirt                                     pass    
 test-amd64-i386-libvirt                                      pass    
 test-amd64-amd64-livepatch                                   pass    
 test-amd64-i386-livepatch                                    pass    
 test-amd64-amd64-migrupgrade                                 pass    
 test-amd64-i386-migrupgrade                                  pass    
 test-amd64-amd64-xl-multivcpu                                pass    
 test-armhf-armhf-xl-multivcpu                                pass    
 test-amd64-amd64-pair                                        pass    
 test-amd64-i386-pair                                         pass    
 test-amd64-amd64-libvirt-pair                                pass    
 test-amd64-i386-libvirt-pair                                 pass    
 test-amd64-amd64-xl-pvshim                                   pass    
 test-amd64-i386-xl-pvshim                                    fail    
 test-amd64-amd64-pygrub                                      pass    
 test-armhf-armhf-libvirt-qcow2                               pass    
 test-amd64-amd64-xl-qcow2                                    pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-armhf-armhf-libvirt-raw                                 pass    
 test-amd64-i386-libvirt-raw                                  pass    
 test-amd64-amd64-xl-rtds                                     pass    
 test-armhf-armhf-xl-rtds                                     pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64-shadow             pass    
 test-amd64-i386-xl-qemuu-debianhvm-amd64-shadow              pass    
 test-amd64-amd64-xl-shadow                                   pass    
 test-amd64-i386-xl-shadow                                    pass    
 test-arm64-arm64-xl-thunderx                                 pass    
 test-amd64-amd64-examine-uefi                                pass    
 test-amd64-i386-examine-uefi                                 pass    
 test-amd64-amd64-libvirt-vhd                                 pass    
 test-arm64-arm64-xl-vhd                                      pass    
 test-armhf-armhf-xl-vhd                                      pass    
 test-amd64-i386-xl-vhd                                       pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Published tested tree is already up to date.



From xen-devel-bounces@lists.xenproject.org Sun Jan 21 13:51:03 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sun, 21 Jan 2024 13:51:03 +0000
Received: from list by lists.xenproject.org with outflank-mailman.669599.1041949 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rRYDm-0008BL-Qd; Sun, 21 Jan 2024 13:50:46 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 669599.1041949; Sun, 21 Jan 2024 13:50:46 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rRYDm-0008BE-Nt; Sun, 21 Jan 2024 13:50:46 +0000
Received: by outflank-mailman (input) for mailman id 669599;
 Sun, 21 Jan 2024 13:50:45 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rRYDl-0008B3-DR; Sun, 21 Jan 2024 13:50:45 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rRYDl-00077F-3u; Sun, 21 Jan 2024 13:50:45 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rRYDk-0002su-JH; Sun, 21 Jan 2024 13:50:44 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rRYDk-0008WA-Iv; Sun, 21 Jan 2024 13:50:44 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=A5CeRy+bHvf8v6lpYt2/65T455fGt/dLrkFDKhpqIH0=; b=L+MikHsKxYJyjubdGdkH97fUky
	vVrBCq9NrRldlGCHUAgYGiKNTwsDKGUE9b0uk+V0IJTO4qPTZU2YJqxfGGXy7NwA41cnz+zdyS+cW
	IkgMWXGksQ6X2He9i4u6mNWsIZhbjYv5UvGofmF5qF4g+904TcEH0H6K8JQ4W7usuIyg=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184416-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [linux-linus test] 184416: tolerable FAIL - PUSHED
X-Osstest-Failures:
    linux-linus:test-armhf-armhf-xl-credit1:host-ping-check-xen:fail:heisenbug
    linux-linus:test-armhf-armhf-xl-credit1:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit1:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    linux-linus:test-amd64-amd64-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    linux-linus:test-amd64-amd64-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-raw:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-qcow2:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-qemuu-nested-amd:debian-hvm-install/l1/l2:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-xsm:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-thunderx:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-thunderx:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-xsm:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-xsm:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-libvirt-xsm:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-libvirt-xsm:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-credit2:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-credit2:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-credit1:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-credit1:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-arndale:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-arndale:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-multivcpu:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-multivcpu:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-rtds:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-rtds:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-libvirt-raw:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-vhd:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-vhd:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-vhd:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-vhd:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-qcow2:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit2:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit2:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-qcow2:migrate-support-check:fail:nonblocking
X-Osstest-Versions-This:
    linux=7a396820222d6d4c02057f41658b162bdcdadd0e
X-Osstest-Versions-That:
    linux=c25b24fa72c734f8cd6c31a13548013263b26286
From: osstest service owner <osstest-admin@xenproject.org>
Date: Sun, 21 Jan 2024 13:50:44 +0000

flight 184416 linux-linus real [real]
flight 184417 linux-linus real-retest [real]
http://logs.test-lab.xenproject.org/osstest/logs/184416/
http://logs.test-lab.xenproject.org/osstest/logs/184417/

Failures :-/ but no regressions.

Tests which are failing intermittently (not blocking):
 test-armhf-armhf-xl-credit1  10 host-ping-check-xen fail pass in 184417-retest

Tests which did not succeed, but are not blocking:
 test-armhf-armhf-xl-credit1 15 migrate-support-check fail in 184417 never pass
 test-armhf-armhf-xl-credit1 16 saverestore-support-check fail in 184417 never pass
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 184413
 test-amd64-amd64-xl-qemut-win7-amd64 19 guest-stop            fail like 184413
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 184413
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 184413
 test-armhf-armhf-libvirt-raw 15 saverestore-support-check    fail  like 184413
 test-amd64-amd64-xl-qemut-ws16-amd64 19 guest-stop            fail like 184413
 test-armhf-armhf-libvirt-qcow2 15 saverestore-support-check   fail like 184413
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 184413
 test-amd64-amd64-libvirt     15 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-thunderx 15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-thunderx 16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-xsm      15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-xsm      16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl          15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl          16 saverestore-support-check    fail   never pass
 test-arm64-arm64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-xsm 16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-credit2  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit2  16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-credit1  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit1  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-arndale  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-arndale  16 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-armhf-armhf-xl-multivcpu 15 migrate-support-check        fail  never pass
 test-armhf-armhf-xl-multivcpu 16 saverestore-support-check    fail  never pass
 test-armhf-armhf-libvirt     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-rtds     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-rtds     16 saverestore-support-check    fail   never pass
 test-arm64-arm64-libvirt-raw 14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 15 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-raw 14 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-vhd      14 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-vhd      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-raw 14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      15 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-qcow2 14 migrate-support-check        fail never pass
 test-armhf-armhf-xl          15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-credit2  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit2  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-qcow2 14 migrate-support-check        fail never pass

version targeted for testing:
 linux                7a396820222d6d4c02057f41658b162bdcdadd0e
baseline version:
 linux                c25b24fa72c734f8cd6c31a13548013263b26286

Last test of basis   184413  2024-01-20 18:12:19 Z    0 days
Testing same since   184416  2024-01-21 02:31:55 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Alexandre Ghiti <alexghiti@rivosinc.com>
  Amelie Delaunay <amelie.delaunay@foss.st.com>
  Amma Lee <lixiaoyun@binary-semi.com>
  Andrew Jones <ajones@ventanamicro.com>
  Andy Chiu <andy.chiu@sifive.com>
  Anup Patel <apatel@ventanamicro.com>
  Ard Biesheuvel <ardb@kernel.org>
  Atish Patra <atishp@rivosinc.com>
  Aurelien Jarno <aurelien@aurel32.net>
  Binbin Zhou <zhoubinbin@loongson.cn>
  Björn Töpel <bjorn@rivosinc.com>
  Bryan Brattlof <bb@ti.com>
  Bumyong Lee <bumyong.lee@samsung.com>
  Charlie Jenkins <charlie@rivosinc.com>
  Christoph Müllner <christoph.muellner@vrull.eu>
  Christophe JAILLET <christophe.jaillet@wanadoo.fr>
  Clément Léger <cleger@rivosinc.com>
  Colin Ian King <colin.i.king@gmail.com>
  Conor Dooley <conor.dooley@microchip.com>
  Daniel Henrique Barboza <dbarboza@ventanamicro.com>
  Emil Renner Berthing <emil.renner.berthing@canonical.com>
  Evgenii Shatokhin <e.shatokhin@yadro.com>
  Frank Li <Frank.Li@nxp.com>
  Greentime Hu <greentime.hu@sifive.com>
  Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  Guo Ren <guoren@kernel.org>
  Guo Ren <guoren@linux.alibaba.com>
  Han-Kuan Chen <hankuan.chen@sifive.com>
  Hector Martin <marcan@marcan.st>
  Jan Kuliga <jankul@alatek.krakow.pl>
  Jerry Shih <jerry.shih@sifive.com>
  Jisheng Zhang <jszhang@kernel.org>
  Jisheng Zhang <jszhang@kernel.org> # Tested on TH1520
  Julia Lawall <Julia.Lawall@inria.fr>
  Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
  Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
  Li Zhijian <lizhijian@fujitsu.com>
  Lijun Pan <lijun.pan@intel.com>
  Linus Torvalds <torvalds@linux-foundation.org>
  Lizhi Hou <lizhi.hou@amd.com>
  Martin Povišer <povik+lin@cutebit.org>
  Masahiro Yamada <masahiroy@kernel.org>
  Maxim Kochetkov <fido_max@inbox.ru>
  Miquel Raynal <miquel.raynal@bootlin.com>
  Mohan Kumar <mkumard@nvidia.com>
  Nam Cao <namcao@linutronix.de>
  Nathan Chancellor <nathan@kernel.org>
  Neil Armstrong <neil.armstrong@linaro.org>
  Nick Knight <nick.knight@sifive.com>
  Palmer Dabbelt <palmer@rivosinc.com>
  Paul Cercueil <paul@crapouillou.net>
  Paulo Alcantara <pc@manguebit.com>
  Randy Dunlap <rdunlap@infradead.org>
  Randy Dunlap <rdunlap@infradead.org> # build-tested
  Rex Zhang <rex.zhang@intel.com>
  Rob Herring <robh@kernel.org>
  Samuel Holland <samuel.holland@sifive.com>
  Samuel Ortiz <sameo@rivosinc.com>
  Shravan Chippa <shravan.chippa@microchip.com>
  Shyam Prasad N <sprasad@microsoft.com>
  Sibi Sankar <quic_sibis@quicinc.com>
  Song Shuai <suagrfillet@gmail.com>
  Steve French <stfrench@microsoft.com>
  Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
  Vaishnav Achath <vaishnav.a@ti.com>
  Vignesh Raghavendra <vigneshr@ti.com>
  Vincent Chen <vincent.chen@sifive.com>
  Vinod Koul <vkoul@kernel.org>
  Xiao Wang <xiao.w.wang@intel.com>
  Yingkun Meng <mengyingkun@loongson.cn>

jobs:
 build-amd64-xsm                                              pass    
 build-arm64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64                                                  pass    
 build-arm64                                                  pass    
 build-armhf                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-arm64-libvirt                                          pass    
 build-armhf-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-pvops                                            pass    
 build-arm64-pvops                                            pass    
 build-armhf-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-amd64-amd64-xl                                          pass    
 test-amd64-coresched-amd64-xl                                pass    
 test-arm64-arm64-xl                                          pass    
 test-armhf-armhf-xl                                          pass    
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm           pass    
 test-amd64-amd64-xl-qemut-stubdom-debianhvm-amd64-xsm        pass    
 test-amd64-amd64-xl-qemut-debianhvm-i386-xsm                 pass    
 test-amd64-amd64-xl-qemuu-debianhvm-i386-xsm                 pass    
 test-amd64-amd64-libvirt-xsm                                 pass    
 test-arm64-arm64-libvirt-xsm                                 pass    
 test-amd64-amd64-xl-xsm                                      pass    
 test-arm64-arm64-xl-xsm                                      pass    
 test-amd64-amd64-qemuu-nested-amd                            fail    
 test-amd64-amd64-xl-pvhv2-amd                                pass    
 test-amd64-amd64-dom0pvh-xl-amd                              pass    
 test-amd64-amd64-xl-qemut-debianhvm-amd64                    pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64                    pass    
 test-amd64-amd64-freebsd11-amd64                             pass    
 test-amd64-amd64-freebsd12-amd64                             pass    
 test-amd64-amd64-xl-qemuu-ovmf-amd64                         pass    
 test-amd64-amd64-xl-qemut-win7-amd64                         fail    
 test-amd64-amd64-xl-qemuu-win7-amd64                         fail    
 test-amd64-amd64-xl-qemut-ws16-amd64                         fail    
 test-amd64-amd64-xl-qemuu-ws16-amd64                         fail    
 test-armhf-armhf-xl-arndale                                  pass    
 test-amd64-amd64-examine-bios                                pass    
 test-amd64-amd64-xl-credit1                                  pass    
 test-arm64-arm64-xl-credit1                                  pass    
 test-armhf-armhf-xl-credit1                                  fail    
 test-amd64-amd64-xl-credit2                                  pass    
 test-arm64-arm64-xl-credit2                                  pass    
 test-armhf-armhf-xl-credit2                                  pass    
 test-amd64-amd64-xl-qemuu-dmrestrict-amd64-dmrestrict        pass    
 test-amd64-amd64-examine                                     pass    
 test-arm64-arm64-examine                                     pass    
 test-armhf-armhf-examine                                     pass    
 test-amd64-amd64-qemuu-nested-intel                          pass    
 test-amd64-amd64-xl-pvhv2-intel                              pass    
 test-amd64-amd64-dom0pvh-xl-intel                            pass    
 test-amd64-amd64-libvirt                                     pass    
 test-armhf-armhf-libvirt                                     pass    
 test-amd64-amd64-xl-multivcpu                                pass    
 test-armhf-armhf-xl-multivcpu                                pass    
 test-amd64-amd64-pair                                        pass    
 test-amd64-amd64-libvirt-pair                                pass    
 test-amd64-amd64-xl-pvshim                                   pass    
 test-amd64-amd64-pygrub                                      pass    
 test-amd64-amd64-libvirt-qcow2                               pass    
 test-armhf-armhf-libvirt-qcow2                               pass    
 test-amd64-amd64-libvirt-raw                                 pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-armhf-armhf-libvirt-raw                                 pass    
 test-amd64-amd64-xl-rtds                                     pass    
 test-armhf-armhf-xl-rtds                                     pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64-shadow             pass    
 test-amd64-amd64-xl-shadow                                   pass    
 test-arm64-arm64-xl-thunderx                                 pass    
 test-amd64-amd64-examine-uefi                                pass    
 test-amd64-amd64-xl-vhd                                      pass    
 test-arm64-arm64-xl-vhd                                      pass    
 test-armhf-armhf-xl-vhd                                      pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Pushing revision :

hint: The 'hooks/update' hook was ignored because it's not set as executable.
hint: You can disable this warning with `git config advice.ignoredHook false`.
hint: The 'hooks/post-receive' hook was ignored because it's not set as executable.
hint: You can disable this warning with `git config advice.ignoredHook false`.
hint: The 'hooks/post-update' hook was ignored because it's not set as executable.
hint: You can disable this warning with `git config advice.ignoredHook false`.
To xenbits.xen.org:/home/xen/git/linux-pvops.git
   c25b24fa72c7..7a396820222d  7a396820222d6d4c02057f41658b162bdcdadd0e -> tested/linux-linus


From xen-devel-bounces@lists.xenproject.org Sun Jan 21 23:47:19 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sun, 21 Jan 2024 23:47:19 +0000
Received: from list by lists.xenproject.org with outflank-mailman.669634.1041962 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rRhWo-0005b2-Ms; Sun, 21 Jan 2024 23:47:02 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 669634.1041962; Sun, 21 Jan 2024 23:47:02 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rRhWo-0005av-JU; Sun, 21 Jan 2024 23:47:02 +0000
Received: by outflank-mailman (input) for mailman id 669634;
 Sun, 21 Jan 2024 23:47:01 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=LZiN=I7=invisiblethingslab.com=demi@srs-se1.protection.inumbo.net>)
 id 1rRhWn-0005ap-97
 for xen-devel@lists.xenproject.org; Sun, 21 Jan 2024 23:47:01 +0000
Received: from out5-smtp.messagingengine.com (out5-smtp.messagingengine.com
 [66.111.4.29]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 5acc27a2-b8b7-11ee-9b0f-b553b5be7939;
 Mon, 22 Jan 2024 00:46:57 +0100 (CET)
Received: from compute2.internal (compute2.nyi.internal [10.202.2.46])
 by mailout.nyi.internal (Postfix) with ESMTP id 122835C0080;
 Sun, 21 Jan 2024 18:46:53 -0500 (EST)
Received: from mailfrontend1 ([10.202.2.162])
 by compute2.internal (MEProxy); Sun, 21 Jan 2024 18:46:53 -0500
Received: by mail.messagingengine.com (Postfix) with ESMTPA; Sun,
 21 Jan 2024 18:46:52 -0500 (EST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 5acc27a2-b8b7-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=
	invisiblethingslab.com; h=cc:cc:content-type:content-type:date
	:date:from:from:in-reply-to:in-reply-to:message-id:mime-version
	:references:reply-to:subject:subject:to:to; s=fm2; t=1705880813;
	 x=1705967213; bh=HaZQTPI+xO6ABE8/4flVpKxnRDJ8SQMCUWJkaqYL73A=; b=
	R5KPUsw6R5VcuAWM6U4h+QH4dU41NzYzUI0c3e3gaEbUm458jaGsjIj1M4AEkLLu
	kNg02ZA5ZNhjI5p7NoIlLUHy9iGlJE04YNXeINfyKfROAemR9vRlKJ1kBNYv0IZ9
	6or+q4chAzNxU0fvGyycDiz3XQdIHSFc1DoeustnTIDMVbaJqNW8cTAUkYpLVIL3
	VxaQmKlAzt3CMXIHWNnNhRevILqQBg3w0Dhsa31zqRFh/sanxAz49GeAGaDggcj9
	S2IX9zQ9b22eE+iCJmhJ2mG8svc3OqSzvcCRNqRq01euHRouX1e4Si2O8PF5n2wV
	t4z+bCUUvOfGAMgPs7CX6g==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=
	messagingengine.com; h=cc:cc:content-type:content-type:date:date
	:feedback-id:feedback-id:from:from:in-reply-to:in-reply-to
	:message-id:mime-version:references:reply-to:subject:subject:to
	:to:x-me-proxy:x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s=
	fm3; t=1705880813; x=1705967213; bh=HaZQTPI+xO6ABE8/4flVpKxnRDJ8
	SQMCUWJkaqYL73A=; b=ZIlK5jjIvfwI/ProXRtvPcJDeZg+A7FQYLJ5BEXnWCNm
	U027IfZ/+J19xp0r6IuVzO2sIA7uUFfqQAIGbd2MuKFqHsO+P1ujBvDhXEV3m2aQ
	JnBVrQVx6kDoTcnA0TIJgz9wwSYOoRCbJzsYt6j4V6Sj7Ds6E/cKWyUXjxLMdoEA
	JzZ6sHlXejwm0eI8ncmUsAk5qAKzXcCQRlCEI2Fd9eRxjE2ga7iSKG8AQgLpcHas
	Id4N1HwbwdheVJxH7Z3DBJ2rAyXEZdpRtDshf3imWSWTQ/EQecWzZN4lBk77UTak
	25QZPuGdvo59KNQDTnEKsliXAquo8i3xGu49j7tmjQ==
X-ME-Sender: <xms:7KytZfTpBlxDs-9wdh5LJoqhdc7vS_N-pUH545ayQwbzgp0LcGDW3Q>
    <xme:7KytZQzxCPITyVmMKv7RM08Bps9W0pFHF8vR7E6OMXdj3D_N_j1c5JBinQoGxiNOM
    sBNUf6FnSt3w1w>
X-ME-Received: <xmr:7KytZU3Cz6zQq_K3ti6laVaxFWlXX03xMtkHUJITN9PI9u2w-eq4RAg28x3RqUpK8vB2NO7lot6ZXTXw9u4DVKG5r54RJdKicj2jtj_Mqu6DHRci>
X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvkedrvdekhedgudegucetufdoteggodetrfdotf
    fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen
    uceurghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmne
    cujfgurhepfffhvfevuffkfhggtggujgesghdtreertddtjeenucfhrhhomhepffgvmhhi
    ucforghrihgvucfqsggvnhhouhhruceouggvmhhisehinhhvihhsihgslhgvthhhihhngh
    hslhgrsgdrtghomheqnecuggftrfgrthhtvghrnhepjeetffekvddvgfejueffleegleei
    ueeuvdehffettedvgeeugeegjeduheevueeinecuffhomhgrihhnpeihohhuthhusggvrd
    gtohhmnecuvehluhhsthgvrhfuihiivgeptdenucfrrghrrghmpehmrghilhhfrhhomhep
    uggvmhhisehinhhvihhsihgslhgvthhhihhnghhslhgrsgdrtghomh
X-ME-Proxy: <xmx:7KytZfBU5mbKXvrgg6Co2OnWvwI2wbs6Gqe9LyjVXE2T8oAViExcqA>
    <xmx:7KytZYiO5WnwLqSyNQ6WJszA8nqCeT2b7lizE4bcxOJVoxwpSBoHxA>
    <xmx:7KytZTp8Eis199EeRh3QBauvsJmbzQvR9FQA4KwYM2bbyk6uNRqUZA>
    <xmx:7aytZbvkkAh6wKSOoh98f7abou-jx60VnnBy7ZWPhmCItsseL0X0vg>
Feedback-ID: iac594737:Fastmail
Date: Sun, 21 Jan 2024 18:46:36 -0500
From: Demi Marie Obenour <demi@invisiblethingslab.com>
To: George Dunlap <george.dunlap@cloud.com>
Cc: Xen-devel <xen-devel@lists.xenproject.org>,
	Juergen Gross <jgross@suse.com>,
	Marek =?utf-8?Q?Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
Subject: Re: Sketch of an idea for handling the "mixed workload" problem
Message-ID: <Za2s69ZTbTVGlcJi@itl-email>
References: <CA+zSX=Z904nF0yD1grRZc1miEOhdTHqAd4j-S1j8GY+1bo9COw@mail.gmail.com>
 <ZRivEkG8Ox213H2A@itl-email>
 <CA+zSX=Zy0C_XMmMUxxk5TF88L0cXwFHihQdYDxaY+tMuTm3GQQ@mail.gmail.com>
MIME-Version: 1.0
Content-Type: multipart/signed; micalg=pgp-sha512;
	protocol="application/pgp-signature"; boundary="4WUr8S6XVR2NVM4P"
Content-Disposition: inline
In-Reply-To: <CA+zSX=Zy0C_XMmMUxxk5TF88L0cXwFHihQdYDxaY+tMuTm3GQQ@mail.gmail.com>


--4WUr8S6XVR2NVM4P
Content-Type: text/plain; protected-headers=v1; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable
Date: Sun, 21 Jan 2024 18:46:36 -0500
From: Demi Marie Obenour <demi@invisiblethingslab.com>
To: George Dunlap <george.dunlap@cloud.com>
Cc: Xen-devel <xen-devel@lists.xenproject.org>,
	Juergen Gross <jgross@suse.com>,
	Marek =?utf-8?Q?Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
Subject: Re: Sketch of an idea for handling the "mixed workload" problem

On Mon, Oct 02, 2023 at 12:20:31PM +0100, George Dunlap wrote:
> On Sun, Oct 1, 2023 at 12:28=E2=80=AFAM Demi Marie Obenour
> <demi@invisiblethingslab.com> wrote:
> >
> > On Fri, Sep 29, 2023 at 05:42:16PM +0100, George Dunlap wrote:
> > > The basic credit2 algorithm goes something like this:
> > >
> > > 1. All vcpus start with the same number of credits; about 10ms worth
> > > if everyone has the same weight
> >
> > > 2. vcpus burn credits as they consume cpu, based on the relative
> > > weights: higher weights burn slower, lower weights burn faster
> > >
> > > 3. At any given point in time, the runnable vcpu with the highest
> > > credit is allowed to run
> > >
> > > 4. When the "next runnable vcpu" on a runqueue is negative, credit is
> > > reset: everyone gets another 10ms, and can carry over at most 2ms of
> > > credit over the reset.
> >
> > One relevant aspect of Qubes OS is that it is very very heavily
> > oversubscribed: having more VMs running than physical CPUs is (at least
> > in my usage) not uncommon, and each of those VMs will typically have at
> > least two vCPUs.  With a credit of 10ms and 36 vCPUs, I could easily see
> > a vCPU not being allowed to execute for 200ms or more.  For audio or
> > video, workloads, this is a disaster.
> >
> > 10ms is a LOT for desktop workloads or for anyone who cares about
> > latency.  At 60Hz it is 3/5 of a frame, and with a 120Hz monitor and a
> > heavily contended system frame drops are guaranteed.
>=20
> You'd probably benefit from understanding better how the various
> algorithms actually work.  I'm sorry I don't have any really good
> "virtualization scheduling for dummies" resources; the best I have is
> a few talks I gave on the subject; e.g.:
>=20
> https://www.youtube.com/watch?v=3DC3jjvkr6fgQ
>=20
> For one, when I say "oversubscribed", I don't mean "vcpus / pcpus"; I
> mean "requested vcpu execution time / vcpus".  If you have 18 vcpus on
> a single pcpu, and all of them *on an empty system* would have run at
> 5%, you're totally fine.  If you have 18 vcpus on a single pcpu, and
> all of them on an empty system would have averaged 100%, there's only
> so much the scheduler can do to avoid problems.

If each vCPU would have spent 4% time doing realtime tasks, it should be
possible to give all of the realtime tasks all the time they need, while
the remaining 100 - 4 * 18 =3D 28% of time is available to non-realtime
tasks.  That=E2=80=99s not awesome, but it might be enough to prevent audio=
 from
glitching.

> Secondly, while on credit1 a vcpu is allowed to run for 10ms without
> stopping (and then must wait for 18x that time to get the same credit
> back, if there are 18 other vcpus running on that same pcpu), this is
> not the case for credit2.  The exact calculation can be found in
> xen/common/sched/credit2.c:sched2_runtime(), but generally here's the
> general algorithm from the comment:
>=20
> /* General algorithm:
>  * 1) Run until snext's credit will be 0.
>  * 2) But if someone is waiting, run until snext's credit is equal
>  *    to his.
>  * 3) But, if we are capped, never run more than our budget.
>  * 4) And never run longer than MAX_TIMER or shorter than MIN_TIMER or
>  *    the ratelimit time.
>  */
>=20
> Default MIN_TIMER is 500us, and is configurable via sysctl; default
> MAX_TIMER is... hmm, I'm pretty sure this started out as 2ms, but now
> it seems to be 10ms.  Looks like this was changed in da92ec5bd1 ("xen:
> credit2: "relax" CSCHED2_MAX_TIMER") in 2016.  (MAX_TIMER isn't
> configurable, but arguably it should be; and making it configurable
> should just be a matter of duplicating the logic around MIN_TIMER.)

Maybe MAX_TIMER should be lowered to e.g. 1ms?

> That's not yet the last word though: If a VM that was a sleep wakes
> up, and it has credit than the running vcpu, then it will generally
> preempt that cpu.
>=20
> All that to say, that it should be very rare for a cpu to run for a
> full 10ms under credit2.

That=E2=80=99s good.

> > > Other ways we could consider putting a vcpu into a boosted state (some
> > > discussed on Matrix or emails linked from Matrix):
> > > * Xen is about to preempt, but finds that the vcpu interrupts are
> > > blocked (this sort of overlaps with the "when we deliver an interrupt"
> > > one)
> >
> > This is also a good heuristic for "vCPU owns a spinlock", which is
> > definitely a bad time to preempt.
>=20
> Not all spinlocks disable IRQs, but certainly some do.
>=20
> > > Getting the defaults right might take some thinking.  If you set the
> > > default "boost credit ratio" to 25% and the "default boost interval"
> > > to 500ms, then you'd basically have five "boosts" per scheduling
> > > window.  The window depends on how active other vcpus are, but if it's
> > > longer than 20ms your system is too overloaded.
> >
> > An interval of 500ms seems rather long to me.  Did you mean 500=CE=BCs?
>=20
> Yes, I did mean 500us, sorry.
>=20
> I'll respond to the other suggestions later.
>=20
> > > Demi, what kinds of interrupt counts are you getting for your VM?
> >
> > I didn't measure it, but I can check the next time I am on a video call
> > or doing audio recoring.
>=20
> Running xentrace would be really interesting too; those are another
> good way to nerd-snipe me. :-)
>=20
>  -George

That would certainly be a good idea!
--=20
Sincerely,
Demi Marie Obenour (she/her/hers)
Invisible Things Lab

--4WUr8S6XVR2NVM4P
Content-Type: application/pgp-signature; name="signature.asc"

-----BEGIN PGP SIGNATURE-----

iQIzBAEBCgAdFiEEdodNnxM2uiJZBxxxsoi1X/+cIsEFAmWtrOoACgkQsoi1X/+c
IsHHuRAAv0RHvjQFAIzlT5dePOrUK4ulrwP8czznRhknqxaYFz59q7P9T2JaotbQ
kJo0cKuorKWJ9tbgmt7WRshMh7SZqeEZb+C7PLHXt6+DXvJU+TAEWqczMJRPKcvC
cyehdtAGyWU4t2MTjT3WIYxI2wrYt0y0dwPvwFFqY7vb8RAes2esJJq88P+ZKK5z
IINaF5LSc2l1zEWuZBHjLi6nVQwQAChtvNCUMLaYWhkJno9AJUyDbER8hNILKcwP
bRhlM/oJtXXIaywuHN71Qbnot/bv75eNwlTQsMajWyTzib3yCGJKmbvzpa8sAy0D
l5GT5xe2AzOLle36V+EGV6J4GDiTc8l4f0AwhpE7ZDiTSIVIspoPbhrQiByBeEBX
D/g2vQP2yImBHYWL3TDgA/ufZuVg2Cli8MrMrxR5Rq+7LFUc7dIuTUiex7Aqc/8T
ZBwPPHbXNfkM/JQ6e2+BCAx4YTGaLp3QrqQtwtgA/HTuiZtyA/8fJRF6sNiDfhzF
rkjihXvfXL7Oc2hkPMIPQwHnbPVVx+Ed+PEoQdHsONYb6nIexT7SQNAaHz+mYWBV
RiPPZ3mEZMLIbNjFbDpvCsdy3wvUB7EE24aTzWdCRnZrO41FwqzhgfuQRBk4Q40c
B6YyExqJCvO+eW8VRLm8euxa9DjigCoKS3eu2dqlRjt2EQb9zsM=
=lymM
-----END PGP SIGNATURE-----

--4WUr8S6XVR2NVM4P--


From xen-devel-bounces@lists.xenproject.org Mon Jan 22 00:32:02 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 22 Jan 2024 00:32:02 +0000
Received: from list by lists.xenproject.org with outflank-mailman.669641.1041971 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rRiEE-0003nC-0A; Mon, 22 Jan 2024 00:31:54 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 669641.1041971; Mon, 22 Jan 2024 00:31:53 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rRiED-0003n5-Tv; Mon, 22 Jan 2024 00:31:53 +0000
Received: by outflank-mailman (input) for mailman id 669641;
 Mon, 22 Jan 2024 00:31:53 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=Ce26=JA=invisiblethingslab.com=demi@srs-se1.protection.inumbo.net>)
 id 1rRiED-0003mz-GJ
 for xen-devel@lists.xenproject.org; Mon, 22 Jan 2024 00:31:53 +0000
Received: from wout5-smtp.messagingengine.com (wout5-smtp.messagingengine.com
 [64.147.123.21]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id a10545eb-b8bd-11ee-98f2-6d05b1d4d9a1;
 Mon, 22 Jan 2024 01:31:50 +0100 (CET)
Received: from compute3.internal (compute3.nyi.internal [10.202.2.43])
 by mailout.west.internal (Postfix) with ESMTP id 952523200A02;
 Sun, 21 Jan 2024 19:31:46 -0500 (EST)
Received: from mailfrontend1 ([10.202.2.162])
 by compute3.internal (MEProxy); Sun, 21 Jan 2024 19:31:46 -0500
Received: by mail.messagingengine.com (Postfix) with ESMTPA; Sun,
 21 Jan 2024 19:31:45 -0500 (EST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: a10545eb-b8bd-11ee-98f2-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=
	invisiblethingslab.com; h=cc:cc:content-type:content-type:date
	:date:from:from:in-reply-to:in-reply-to:message-id:mime-version
	:references:reply-to:subject:subject:to:to; s=fm2; t=1705883506;
	 x=1705969906; bh=8Vt5SiKGAB+IJKjMb4XsC9KY6fPUzYPBwsMpVZcFlhI=; b=
	hjyJqCn26qBytWgis/xek91SKsWdmE5eXju9GmprL97xUH2iCmMVKZ9CSwcwPoVo
	TKYmw+8xTqBunsbGuClAcncOXsoQLDJ7wLxe0APmlzkBzzcwodIgAMdbSw47tsl/
	x0tZAMCpfJ1xd50JGoHyHIkTBL1z10DIv1m+KJaTfejtOHdpNjH/nJjDnzdV/4lJ
	bWaPqQFD46q+3AzzZQ4PNv21nnGqY4+Z2yE/ubBlycIflbo6AIB1XnOMdtqMj5ja
	5wuDwo7Wt8w+NyO2seiDOYtCvDgZ2khnfMycU3DamgNHr+m7KW88zJVvTAtXKJtn
	2s+RGhI9UzfK29Uvyo/8xw==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=
	messagingengine.com; h=cc:cc:content-type:content-type:date:date
	:feedback-id:feedback-id:from:from:in-reply-to:in-reply-to
	:message-id:mime-version:references:reply-to:subject:subject:to
	:to:x-me-proxy:x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s=
	fm3; t=1705883506; x=1705969906; bh=8Vt5SiKGAB+IJKjMb4XsC9KY6fPU
	zYPBwsMpVZcFlhI=; b=jbHTwtoMCQ84JNSoAHfT/WMs/wKR7nrSsayCnDy5hlu0
	8MoiQJqliRMU4C9T8CQEIFrCAUAI92KWABkC75SFMrQSL2rDkCixmzSci5iNdTxt
	8Fw8pfR6S/n6ihs9/oFxVgSe7xWKNYrcrT2raslrDtqFcvo+x78vVQzbLMTAbPaG
	eF112xYoIAIrRFjx75CiM/ZwFT40Je6kBH7tV1c3UY4wdawDF1c9Za4DWlqaozLM
	Q/j6qwrSkfqUw+4SwEA8CzDfVWBBk9EaE8qtBJcFLwSaw5Rnl55KEANF43rEiLAp
	984rFwRzvHRhwJKC0Rfjlzf1CArE0KcnZJDQ3QXJng==
X-ME-Sender: <xms:cbetZdOy68sAGjKttdYWP74kRjWKvOJKTyUEVPlteiIGhCgR7Zjf2g>
    <xme:cbetZf_RfrJdwjjPV1R1_YIY936alT0cwQEmABZK0fg20eYFX1KVugGdhKoFac5Lp
    fNgbCFPN5Dwipc>
X-ME-Received: <xmr:cbetZcTbHqHDJqKcRmt_CdgWvCN2C5LFX8HKBT7w6_beCNjNImZRGygRsK1W_eWf_bH-sW1g0-H5bIy8NhFQlBZG3k1vkgKS4AZFQgiRA1fN_1_l>
X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvkedrvdekhedgvdefucetufdoteggodetrfdotf
    fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen
    uceurghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmne
    cujfgurhepfffhvfevuffkfhggtggujgesghdtreertddtjeenucfhrhhomhepffgvmhhi
    ucforghrihgvucfqsggvnhhouhhruceouggvmhhisehinhhvihhsihgslhgvthhhihhngh
    hslhgrsgdrtghomheqnecuggftrfgrthhtvghrnhepleefjeeukeehkeegiedtgeekkeel
    tedvhfduudefgfffheffheeuvedvieelfefhnecuffhomhgrihhnpehkvghrnhgvlhdroh
    hrghenucevlhhushhtvghrufhiiigvpedtnecurfgrrhgrmhepmhgrihhlfhhrohhmpegu
    vghmihesihhnvhhishhisghlvghthhhinhhgshhlrggsrdgtohhm
X-ME-Proxy: <xmx:cbetZZsWKSkKjBqTUhKBkEMgrNQiABLxt4MqyBGcMzbuWVZF6xTSOg>
    <xmx:cbetZVem9e1N6GkMa2aU98nY-OC-Dj0QQ8QaoqZ9BDahOcCKv4lsvg>
    <xmx:cbetZV2ZJFDX4-stQtXQIO0Z_q0L9c_LjC9fO5VRctZYPLlB5lWPDw>
    <xmx:cretZWqHWA8oiYxTnSg-X8F-YdsiWkKIsCk_Q66E1mI6YdhSlAXRUA>
Feedback-ID: iac594737:Fastmail
Date: Sun, 21 Jan 2024 19:31:41 -0500
From: Demi Marie Obenour <demi@invisiblethingslab.com>
To: George Dunlap <george.dunlap@cloud.com>,
	Xen-devel <xen-devel@lists.xenproject.org>
Cc: Juergen Gross <jgross@suse.com>,
	Marek =?utf-8?Q?Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
Subject: Re: Sketch of an idea for handling the "mixed workload" problem
Message-ID: <Za23cKyEOl1WTvhZ@itl-email>
References: <CA+zSX=Z904nF0yD1grRZc1miEOhdTHqAd4j-S1j8GY+1bo9COw@mail.gmail.com>
MIME-Version: 1.0
Content-Type: multipart/signed; micalg=pgp-sha512;
	protocol="application/pgp-signature"; boundary="G1NvchryUuwGpy0H"
Content-Disposition: inline
In-Reply-To: <CA+zSX=Z904nF0yD1grRZc1miEOhdTHqAd4j-S1j8GY+1bo9COw@mail.gmail.com>


--G1NvchryUuwGpy0H
Content-Type: text/plain; protected-headers=v1; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable
Date: Sun, 21 Jan 2024 19:31:41 -0500
From: Demi Marie Obenour <demi@invisiblethingslab.com>
To: George Dunlap <george.dunlap@cloud.com>,
	Xen-devel <xen-devel@lists.xenproject.org>
Cc: Juergen Gross <jgross@suse.com>,
	Marek =?utf-8?Q?Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
Subject: Re: Sketch of an idea for handling the "mixed workload" problem

On Fri, Sep 29, 2023 at 05:42:16PM +0100, George Dunlap wrote:
> The basic credit2 algorithm goes something like this:
>=20
> 1. All vcpus start with the same number of credits; about 10ms worth
> if everyone has the same weight
>=20
> 2. vcpus burn credits as they consume cpu, based on the relative
> weights: higher weights burn slower, lower weights burn faster
>=20
> 3. At any given point in time, the runnable vcpu with the highest
> credit is allowed to run
>=20
> 4. When the "next runnable vcpu" on a runqueue is negative, credit is
> reset: everyone gets another 10ms, and can carry over at most 2ms of
> credit over the reset.
>=20
> Generally speaking, vcpus that use less than their quota and have lots
> of interrupts are scheduled immediately, since when they wake up they
> always have more credit than the vcpus who are burning through their
> slices.
>=20
> But what about a situation as described recently on Matrix, where a VM
> uses a non-negligible amount of cpu doing un-accelerated encryption
> and decryption, which can be delayed by a few MS, as well as handling
> audio events?  How can we make sure that:
>=20
> 1. We can run whenever interrupts happen
> 2. We get no more than our fair share of the cpu?
>=20
> The counter-intuitive key here is that in order to achieve the above,
> you need to *deschedule or preempt early*, so that when the interrupt
> comes, you have spare credit to run the interrupt handler.  How do we
> manage that?
>=20
> The idea I'm working out comes from a phrase I used in the Matrix
> discussion, about a vcpu that "foolishly burned all its credits".
> Naturally the thing you want to do to have credits available is to
> save them up.
>=20
> So the idea would be this.  Each vcpu would have a "boost credit
> ratio" and a "default boost interval"; there would be sensible
> defaults based on typical workloads, but these could be tweaked for
> individual VMs.
>=20
> When credit is assigned, all VMs would get the same amount of credit,
> but divided into two "buckets", according to the boost credit ratio.
>=20
> Under certain conditions, a vcpu would be considered "boosted"; this
> state would last either until the default boost interval, or until
> some other event (such as a de-boost yield).
>=20
> The queue would be sorted thus:
>=20
> * Boosted vcpus, by boost credit available
> * Non-boosted vcpus, by non-boost credit available
>=20
> Getting more boost credit means having lower priority when not
> boosted; and burning through your boost credit means not being
> scheduled when you need to be.
>=20
> Other ways we could consider putting a vcpu into a boosted state (some
> discussed on Matrix or emails linked from Matrix):
> * Xen is about to preempt, but finds that the vcpu interrupts are
> blocked (this sort of overlaps with the "when we deliver an interrupt"
> one)
> * Xen is about to preempt, but finds that the (currently out-of-tree)
> "dont_desched" bit has been set in the shared memory area

I think both of these would be good.  Another one would be when Xen is
about to deliver an interrupt to a guest, provided that there is no
storm of interrupts.  I=E2=80=99ve seen a USB webcam cause a system-wide la=
tency
spike through what I presume is an interrupt storm, and I suspect that
others have observed similar behavior with USB external drives.

> Other ways to consider de-boosting:
> * There's a way to trigger a VMEXIT when interrupts have been
> re-enabled; setting this up when the VM is in the boost state

That=E2=80=99s a good idea, but should be conditional on =E2=80=9Cdont_desc=
hed=E2=80=9D _not_
being set.  This handles the case where the guest is running a realtime
thread.

Generally, I=E2=80=99d like to see something like this:

- A vCPU with sufficient boost credit is boosted by Xen under the
  following conditions:

  1. Xen interrupts the guest.
  2. Xen is about to preempt, but detects that =E2=80=9Cdont_desched=E2=80=
=9D is set.
  3. Xen is about to preempt, but detects that interrupts are disabled.

- A vCPU is deboosted if:

  1. It runs out of boost credit, even if =E2=80=9Cdont_desched=E2=80=9D is=
 set.
  2. An interrupt handler returns, but only if =E2=80=9Cdont_desched=E2=80=
=9D is not set.
  3. Interrupts are re-enabled, but only if =E2=80=9Cdont_desched=E2=80=9D =
is not set.

  The first case is an abnormal condition and typically means that
  either the system is overloaded or a vCPU is running boosted for too
  long.  To help debug this situation, Xen will log a warning and
  increment both a system-wide and a per-domain counter.  dom0 can
  retrieve counters for any domain, and a domain can read its own
  counter.

- When to set =E2=80=9Cdont_desched=E2=80=9D is entirely up to the guest ke=
rnel, but
  there are some general rules guests should follow:

  - Only set =E2=80=9Cdont_desched=E2=80=9D if there is a good reason, and =
unset it as
    soon as possible.  Xen gives vCPUs with =E2=80=9Cdont_desched=E2=80=9D =
set priority
    over all other vCPUs on the system, but the amount of time a vCPU is
    allowed to run with an elevated priority is limited.  Xen will log a
    warning if a guest tries to run with elevated priority for too long.
   =20
  - Xen boosts vCPUs before delivering an interrupt, but there should be
    a way for a vCPU to deboost itself even before returning from the
    interrupt handler.

  - Guests should always set =E2=80=9Cdont_desched=E2=80=9D when running ha=
rd-realtime
    threads (used for e.g. audio processing), even when the thread is in
    userspace.  This ensures that Xen gives the underlying vCPU priority
    over vCPUs=20

  - Guests should always set =E2=80=9Cdont_desched=E2=80=9D when holding a =
spin lock,
    but it is even better to use paravirtualized spin locks (which make
    a hypercall into Xen and therefore allow other vCPUs to run).

  - Xen does not implement priority inheritance, so guests need to do
    that.

- Max boost credits can be set by dom0 via a hypercall.

The advantage of this approach is that it keeps almost all policy out of
Xen.  The only exception is the boosting when an interrupt is received,
but a well-behaved guest will deboost itself very quickly (by enabling
interrupts) if the boost was not actually needed, so this should have
very limited impact.  I think this should be enough for realtime audio,
and it is somewhat related to (but hopefully simpler than) the KVM RFC
=66rom Google [1].

Any thoughts on this?
--=20
Sincerely,
Demi Marie Obenour (she/her/hers)
Invisible Things Lab

[1]: https://lore.kernel.org/kvm/20231214024727.3503870-1-vineeth@bitbytewo=
rd.org/

--G1NvchryUuwGpy0H
Content-Type: application/pgp-signature; name="signature.asc"

-----BEGIN PGP SIGNATURE-----

iQIzBAEBCgAdFiEEdodNnxM2uiJZBxxxsoi1X/+cIsEFAmWtt3AACgkQsoi1X/+c
IsELLA/8DLi4obtIN8Nic3OgPrXwvJyHkUbRmMkf9CZtDuUMQeJ4P2WUHLDEJlB6
a0Ge/YiqTowzbnthMSY2snLxX+k9Dhr9dzeHwa9a3lzgZhIHjDkP0rUKZ11RvnLW
tTR7Sb4I+i6ATyGZDBNyVhxHQ9jL0KheRkWbP2oDSBzV35iAnQTl8O3giO1VrzlK
eOd5hXHY6EArzVWvOuxNujTt0AQ5bt4yJhce8HZ+B4mWrhBZaQ+49l0jIUr1NKUi
NmEl+VJC8bLWNpTXKWHEWjzTqymgIOJY4UR6RKk0dNZYexBQzoW1nda0x30I5B+U
rNySDPqnanepuPuMEy+m7Kzekp4YJCd2Wo4o/+y/oYtKHPO/C0Jk2FQ2UnpabMAX
WajQngkpfFpud8td2stoEilG9kWghn0HtvPKluFzqY2bEXAk8XT5IcYnRqJcYJvL
pcLGKG5Qy+laL7n/6jhAuJpEYhBv+LpOZLUJZ9r3fbhSH6Z1JpyIlu8s6xNav94k
XCYPJStLhamDHacl6njajLe3szNb3Qyx0KDWj4tnatxI5ky+6CNXq0jk8g2d89R0
IAk6z0i2vcPQcYaFSL5tJwS+f+WKF0tnHF0g94ldmvlDuuUz69kcXumbxXRfVhWq
vbzV4dJH/GlxZsrk2KAegtBVyYdctn8rPbtuXb2OUnEgT9FXYQ8=
=1yz4
-----END PGP SIGNATURE-----

--G1NvchryUuwGpy0H--


From xen-devel-bounces@lists.xenproject.org Mon Jan 22 03:29:03 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 22 Jan 2024 03:29:03 +0000
Received: from list by lists.xenproject.org with outflank-mailman.669649.1041982 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rRkzN-0001mu-Un; Mon, 22 Jan 2024 03:28:45 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 669649.1041982; Mon, 22 Jan 2024 03:28:45 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rRkzN-0001mn-RR; Mon, 22 Jan 2024 03:28:45 +0000
Received: by outflank-mailman (input) for mailman id 669649;
 Mon, 22 Jan 2024 03:28:43 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rRkzL-0001ma-Lt; Mon, 22 Jan 2024 03:28:43 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rRkzL-0003L5-FX; Mon, 22 Jan 2024 03:28:43 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rRkzK-00009J-QJ; Mon, 22 Jan 2024 03:28:42 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rRkzK-0006X2-Oa; Mon, 22 Jan 2024 03:28:42 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=iYF+qHeHD1eZ6wp8b7xhTF8Re8hdaXeWtJRwAl/GCic=; b=K2HYhzTdvr4BdrJ5f8g8rHOuFu
	sJTf08CdHklX9ga1Tj6wzFNDv+CutrUXzu7A1ynHdZ0jB0SaAGhXBsDWX/GoJYqkVCkehF7D02Zkk
	3w37n+rqTxZByT3t3BnpSeAVDZH61+r+kNqjA6csXqH3gBALDDWYKGY9QxxD5mk9cxow=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184418-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [linux-linus test] 184418: tolerable FAIL - PUSHED
X-Osstest-Failures:
    linux-linus:test-armhf-armhf-xl-arndale:xen-boot:fail:heisenbug
    linux-linus:test-armhf-armhf-xl-arndale:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-arndale:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    linux-linus:test-amd64-amd64-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    linux-linus:test-amd64-amd64-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-raw:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-qcow2:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-qemuu-nested-amd:debian-hvm-install/l1/l2:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-xsm:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-thunderx:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-xsm:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-xsm:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-thunderx:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-libvirt-xsm:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-libvirt-xsm:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-credit2:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-credit2:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-credit1:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-credit1:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-multivcpu:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-multivcpu:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-rtds:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-rtds:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-libvirt-raw:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-vhd:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-vhd:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-vhd:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-vhd:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-qcow2:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit1:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit1:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit2:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit2:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-qcow2:migrate-support-check:fail:nonblocking
X-Osstest-Versions-This:
    linux=4fbbed7872677b0a28ba8237169968171a61efbd
X-Osstest-Versions-That:
    linux=7a396820222d6d4c02057f41658b162bdcdadd0e
From: osstest service owner <osstest-admin@xenproject.org>
Date: Mon, 22 Jan 2024 03:28:42 +0000

flight 184418 linux-linus real [real]
flight 184420 linux-linus real-retest [real]
http://logs.test-lab.xenproject.org/osstest/logs/184418/
http://logs.test-lab.xenproject.org/osstest/logs/184420/

Failures :-/ but no regressions.

Tests which are failing intermittently (not blocking):
 test-armhf-armhf-xl-arndale   8 xen-boot            fail pass in 184420-retest

Tests which did not succeed, but are not blocking:
 test-armhf-armhf-xl-arndale 15 migrate-support-check fail in 184420 never pass
 test-armhf-armhf-xl-arndale 16 saverestore-support-check fail in 184420 never pass
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 184416
 test-amd64-amd64-xl-qemut-win7-amd64 19 guest-stop            fail like 184416
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 184416
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 184416
 test-armhf-armhf-libvirt-raw 15 saverestore-support-check    fail  like 184416
 test-amd64-amd64-xl-qemut-ws16-amd64 19 guest-stop            fail like 184416
 test-armhf-armhf-libvirt-qcow2 15 saverestore-support-check   fail like 184416
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 184416
 test-amd64-amd64-libvirt     15 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-thunderx 15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-xsm      15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-xsm      16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-thunderx 16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl          15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl          16 saverestore-support-check    fail   never pass
 test-arm64-arm64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-xsm 16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-credit2  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit2  16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-credit1  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit1  16 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-armhf-armhf-xl-multivcpu 15 migrate-support-check        fail  never pass
 test-armhf-armhf-xl-multivcpu 16 saverestore-support-check    fail  never pass
 test-armhf-armhf-libvirt     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-rtds     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-rtds     16 saverestore-support-check    fail   never pass
 test-arm64-arm64-libvirt-raw 14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 15 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-raw 14 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-vhd      14 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-vhd      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-raw 14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      15 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-qcow2 14 migrate-support-check        fail never pass
 test-armhf-armhf-xl          15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-credit1  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit1  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-credit2  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit2  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-qcow2 14 migrate-support-check        fail never pass

version targeted for testing:
 linux                4fbbed7872677b0a28ba8237169968171a61efbd
baseline version:
 linux                7a396820222d6d4c02057f41658b162bdcdadd0e

Last test of basis   184416  2024-01-21 02:31:55 Z    1 days
Testing same since   184418  2024-01-21 19:40:22 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Aneesh Kumar K.V (IBM) <aneesh.kumar@kernel.org>
  Arnd Bergmann <arnd@arndb.de>
  Conor Dooley <conor.dooley@microchip.com>
  Daniel Lezcano <daniel.lezcano@linaro.org>
  Guo Ren <guoren@kernel.org>
  Heiko Carstens <hca@linux.ibm.com>
  Inochi Amaoto <inochiama@outlook.com>
  Joshua Yeong <joshua.yeong@starfivetech.com>
  Kent Overstreet <kent.overstreet@linux.dev>
  Leonardo Bras <leobras@redhat.com>
  Linus Torvalds <torvalds@linux-foundation.org>
  Michael Ellerman <mpe@ellerman.id.au>
  Michal Simek <michal.simek@amd.com>
  Randy Dunlap <rdunlap@infradead.org>
  Sia Jee Heng <jeeheng.sia@starfivetech.com>
  Thomas Gleixner <tglx@linutronix.de>
  Tony Lindgren <tony@atomide.com>
  Waiman Long <longman@redhat.com>

jobs:
 build-amd64-xsm                                              pass    
 build-arm64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64                                                  pass    
 build-arm64                                                  pass    
 build-armhf                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-arm64-libvirt                                          pass    
 build-armhf-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-pvops                                            pass    
 build-arm64-pvops                                            pass    
 build-armhf-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-amd64-amd64-xl                                          pass    
 test-amd64-coresched-amd64-xl                                pass    
 test-arm64-arm64-xl                                          pass    
 test-armhf-armhf-xl                                          pass    
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm           pass    
 test-amd64-amd64-xl-qemut-stubdom-debianhvm-amd64-xsm        pass    
 test-amd64-amd64-xl-qemut-debianhvm-i386-xsm                 pass    
 test-amd64-amd64-xl-qemuu-debianhvm-i386-xsm                 pass    
 test-amd64-amd64-libvirt-xsm                                 pass    
 test-arm64-arm64-libvirt-xsm                                 pass    
 test-amd64-amd64-xl-xsm                                      pass    
 test-arm64-arm64-xl-xsm                                      pass    
 test-amd64-amd64-qemuu-nested-amd                            fail    
 test-amd64-amd64-xl-pvhv2-amd                                pass    
 test-amd64-amd64-dom0pvh-xl-amd                              pass    
 test-amd64-amd64-xl-qemut-debianhvm-amd64                    pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64                    pass    
 test-amd64-amd64-freebsd11-amd64                             pass    
 test-amd64-amd64-freebsd12-amd64                             pass    
 test-amd64-amd64-xl-qemuu-ovmf-amd64                         pass    
 test-amd64-amd64-xl-qemut-win7-amd64                         fail    
 test-amd64-amd64-xl-qemuu-win7-amd64                         fail    
 test-amd64-amd64-xl-qemut-ws16-amd64                         fail    
 test-amd64-amd64-xl-qemuu-ws16-amd64                         fail    
 test-armhf-armhf-xl-arndale                                  fail    
 test-amd64-amd64-examine-bios                                pass    
 test-amd64-amd64-xl-credit1                                  pass    
 test-arm64-arm64-xl-credit1                                  pass    
 test-armhf-armhf-xl-credit1                                  pass    
 test-amd64-amd64-xl-credit2                                  pass    
 test-arm64-arm64-xl-credit2                                  pass    
 test-armhf-armhf-xl-credit2                                  pass    
 test-amd64-amd64-xl-qemuu-dmrestrict-amd64-dmrestrict        pass    
 test-amd64-amd64-examine                                     pass    
 test-arm64-arm64-examine                                     pass    
 test-armhf-armhf-examine                                     pass    
 test-amd64-amd64-qemuu-nested-intel                          pass    
 test-amd64-amd64-xl-pvhv2-intel                              pass    
 test-amd64-amd64-dom0pvh-xl-intel                            pass    
 test-amd64-amd64-libvirt                                     pass    
 test-armhf-armhf-libvirt                                     pass    
 test-amd64-amd64-xl-multivcpu                                pass    
 test-armhf-armhf-xl-multivcpu                                pass    
 test-amd64-amd64-pair                                        pass    
 test-amd64-amd64-libvirt-pair                                pass    
 test-amd64-amd64-xl-pvshim                                   pass    
 test-amd64-amd64-pygrub                                      pass    
 test-amd64-amd64-libvirt-qcow2                               pass    
 test-armhf-armhf-libvirt-qcow2                               pass    
 test-amd64-amd64-libvirt-raw                                 pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-armhf-armhf-libvirt-raw                                 pass    
 test-amd64-amd64-xl-rtds                                     pass    
 test-armhf-armhf-xl-rtds                                     pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64-shadow             pass    
 test-amd64-amd64-xl-shadow                                   pass    
 test-arm64-arm64-xl-thunderx                                 pass    
 test-amd64-amd64-examine-uefi                                pass    
 test-amd64-amd64-xl-vhd                                      pass    
 test-arm64-arm64-xl-vhd                                      pass    
 test-armhf-armhf-xl-vhd                                      pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Pushing revision :

hint: The 'hooks/update' hook was ignored because it's not set as executable.
hint: You can disable this warning with `git config advice.ignoredHook false`.
hint: The 'hooks/post-receive' hook was ignored because it's not set as executable.
hint: You can disable this warning with `git config advice.ignoredHook false`.
hint: The 'hooks/post-update' hook was ignored because it's not set as executable.
hint: You can disable this warning with `git config advice.ignoredHook false`.
To xenbits.xen.org:/home/xen/git/linux-pvops.git
   7a396820222d..4fbbed787267  4fbbed7872677b0a28ba8237169968171a61efbd -> tested/linux-linus


From xen-devel-bounces@lists.xenproject.org Mon Jan 22 06:36:29 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 22 Jan 2024 06:36:29 +0000
Received: from list by lists.xenproject.org with outflank-mailman.669662.1041992 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rRnup-0006RE-V6; Mon, 22 Jan 2024 06:36:15 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 669662.1041992; Mon, 22 Jan 2024 06:36:15 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rRnup-0006R7-S8; Mon, 22 Jan 2024 06:36:15 +0000
Received: by outflank-mailman (input) for mailman id 669662;
 Mon, 22 Jan 2024 06:36:14 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=5Hsx=JA=amd.com=Jiqian.Chen@srs-se1.protection.inumbo.net>)
 id 1rRnuo-0006R1-CA
 for xen-devel@lists.xenproject.org; Mon, 22 Jan 2024 06:36:14 +0000
Received: from NAM12-DM6-obe.outbound.protection.outlook.com
 (mail-dm6nam12on20601.outbound.protection.outlook.com
 [2a01:111:f403:2417::601])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 8877aa9e-b8f0-11ee-98f2-6d05b1d4d9a1;
 Mon, 22 Jan 2024 07:36:12 +0100 (CET)
Received: from BL1PR12MB5849.namprd12.prod.outlook.com (2603:10b6:208:384::18)
 by DS0PR12MB7558.namprd12.prod.outlook.com (2603:10b6:8:133::21) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7202.24; Mon, 22 Jan
 2024 06:36:07 +0000
Received: from BL1PR12MB5849.namprd12.prod.outlook.com
 ([fe80::bafd:1985:94e6:ef33]) by BL1PR12MB5849.namprd12.prod.outlook.com
 ([fe80::bafd:1985:94e6:ef33%7]) with mapi id 15.20.7202.031; Mon, 22 Jan 2024
 06:36:07 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 8877aa9e-b8f0-11ee-98f2-6d05b1d4d9a1
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=S5DBsruXseLpU3zdRyLwerkzt9oJBnMDkFyWLO7s3D6DoOAaGN4X1HM3khozq7xDjVMHSxYQApfvyUZ5F2XGHqMzHdJWUJHxl590jOsAfCF2k/23FNBCWy+YKRmcWkIujuyrcjqE04ca6NL0/JKzOktglsTvxltvxc0+w7VMUHRgccmPpZ9TPslPD0whqe85ateAcbbhBobq8CiPuGgrbunY/wldj+UkHSKQa7NvD3Ga4Eb7uZqI/gzzyFFycBEleSSb1Sypc0GVZ6Tvp7ajcoIcBa0SHeFTfjw1/Z3/+LCIaVGOtekyb4LnPbDf3yTt3OuTqWowu3lLnUUMy5xR+A==
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=hdzwDsk14qB6pL+Ld3c8GFeYAxqZWeAzUBmUl9/QhUM=;
 b=CeFv5Yoyal/zmg2StmQCMYCsVtOf+S7DpvM/zF8g6RnOctIf0wc/bbvFNG6xYL+cbCopD75Byn6s+exYta4F9we2eaO19zfB//yowJm/2GyyM4VHKtrchKvIqtPXk3eRqQU9hNeHtsn3S2tE+e3ClNbVKNwTU6JIKF7U/U5tuoZfhaGByXIUHU/Cr89xCBZZNtEuBVRETwpqoBB7Ciihj93teyAJ0MNaC9458kd+ucaJR0vxPGMdqTWy5N/nrXbNk44GlQToxFSkukyQHU1pNLxPZ+3Qc28ZS3cJQp2Uv7dRpVUQ0zFWqFmXywT+13nRJVYA1f/om6+dhiQJYNS41g==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=amd.com; dmarc=pass action=none header.from=amd.com; dkim=pass
 header.d=amd.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=hdzwDsk14qB6pL+Ld3c8GFeYAxqZWeAzUBmUl9/QhUM=;
 b=cOiaj8K2+zjpJX29tl2/oA9h7EJcNk6zXPr2akPIy6IyV8GsQkAMtERRDOndvE5u1qFE6jQq3eJ6/RNHxhqW216jtizy3JU/OyP9y6Znup4jZn3fuC3j41tJulpSB37lmLxwBS7I+eojnx4z2yFWdjnSgflhmeWkMc6FSzhSvZA=
From: "Chen, Jiqian" <Jiqian.Chen@amd.com>
To: Bjorn Helgaas <bhelgaas@google.com>, "linux-pci@vger.kernel.org"
	<linux-pci@vger.kernel.org>
CC: "Rafael J . Wysocki" <rafael@kernel.org>, Len Brown <lenb@kernel.org>,
	Juergen Gross <jgross@suse.com>, Stefano Stabellini <sstabellini@kernel.org>,
	Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>, Boris Ostrovsky
	<boris.ostrovsky@oracle.com>, =?utf-8?B?Um9nZXIgUGF1IE1vbm7DqQ==?=
	<roger.pau@citrix.com>, "xen-devel@lists.xenproject.org"
	<xen-devel@lists.xenproject.org>, "linux-kernel@vger.kernel.org"
	<linux-kernel@vger.kernel.org>, "linux-acpi@vger.kernel.org"
	<linux-acpi@vger.kernel.org>, "Hildebrand, Stewart"
	<Stewart.Hildebrand@amd.com>, "Huang, Ray" <Ray.Huang@amd.com>, "Chen,
 Jiqian" <Jiqian.Chen@amd.com>
Subject: Re: [RFC KERNEL PATCH v4 3/3] PCI/sysfs: Add gsi sysfs for pci_dev
Thread-Topic: [RFC KERNEL PATCH v4 3/3] PCI/sysfs: Add gsi sysfs for pci_dev
Thread-Index: AQHaP5+doYjSbLzTtkiUcLxinuNXV7DmALcA
Date: Mon, 22 Jan 2024 06:36:07 +0000
Message-ID:
 <BL1PR12MB58494E7F0735B26A44D7F683E7752@BL1PR12MB5849.namprd12.prod.outlook.com>
References: <20240105062217.349645-1-Jiqian.Chen@amd.com>
 <20240105062217.349645-4-Jiqian.Chen@amd.com>
In-Reply-To: <20240105062217.349645-4-Jiqian.Chen@amd.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-ms-exchange-imapappendstamp: BL1PR12MB5112.namprd12.prod.outlook.com
 (15.20.7202.013)
authentication-results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=amd.com;
x-ms-exchange-messagesentrepresentingtype: 1
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: BL1PR12MB5849:EE_|DS0PR12MB7558:EE_
x-ms-office365-filtering-correlation-id: ae13a4f5-8065-458b-c6d3-08dc1b146a41
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam: BCL:0;
x-microsoft-antispam-message-info:
 pGzibaJgrQ2BofsPuj/NTC4ijCz+mm7vrbUEtWPSq6O9udm6pRcK0P+USpmpNbPhtUYj0bVYlCuusCb7I48aR4I6mEdgZLq8e/Djy6K3ioI84wpeSA+uzNat6poEhWDn4ySCufvMyeMlJYwlmkgBN+YYHtNYOCs2wdWuEjJ5OXzUPa5zVai70l79o1HPCyGMSMbequrV6AxWDLXK3HFpuCTl1bER6LQTEyI/CsC1ufdyHRsgl9sIkSg+SbEEFuGSVhR7lu4xpnjDNlaf31NHhZ7bbDAUYB5Gs0zrzi6IL7FV6+vRfET91B6M2RceyCznIIe9ZWlQmHjlomDu26QxLH2w7+6Cz8QAamxVdMHSLSuAg+FxTClAdHohEV0juKZu93SfiMyzCt1o0xaAljN4Mt2yksX7PcaNVDxLIPyqBSyyq4W4akgu8mVuYU2QpC+0xAPjkKIZ1h5m8ZIK54LrbAlCyrXZTx1xuj7fSHEXkv3kLDmO14lJIyeGm6g/Z7Qy8iTIQHdw0IM7Zp9eCIEE1vmU24sqM3xOiB74s0pcz0O2HdO5it8EsuDY7MRITlZfuttpWWDVyyvdh7kui7PyprGJWUwNjfkU5908V0o3kuMOL2z5jkdhxBt6WIkErma/
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BL1PR12MB5849.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230031)(39860400002)(346002)(366004)(376002)(136003)(396003)(230922051799003)(64100799003)(186009)(451199024)(1800799012)(38070700009)(55016003)(7696005)(6506007)(8936002)(8676002)(54906003)(478600001)(71200400001)(9686003)(66446008)(110136005)(76116006)(53546011)(66476007)(66946007)(64756008)(5660300002)(66556008)(52536014)(316002)(4326008)(83380400001)(122000001)(33656002)(2906002)(38100700002)(7416002)(41300700001);DIR:OUT;SFP:1101;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?utf-8?B?SVFmNmZ5ZGRLSDIwQVJ5Qmlub1c3RjRDVGZHeUFRMzgzTUx0MjFyNnFRbmV5?=
 =?utf-8?B?MnVERktDUGN6S1UyRFZGSzFKRmdwbWt5UHB4bTZ3Wjg4VzlTZzJzYWlZTnA0?=
 =?utf-8?B?Skc2TWx0SlJ3SW9kWnYwak4vSUU4RG50bXk2TE1nVDltK0tOQUdtYUtkdmZm?=
 =?utf-8?B?ditxMnlRT2VjM3N4Ni84QzJoM0pzdUlqYzJYV1FGekd1RmlSL0hRS3NiWXp2?=
 =?utf-8?B?b1FNRVIzYXFhQ0N5blJiQ3NoTlFHczhQemhkSWowODRPbGw5d0Nuck5nb3dF?=
 =?utf-8?B?cmREN1p1c1NXSnBtVUdrOXZXSHo0S1VtUHlYVWhzL0dTTnQ1TEhGVmJVQVpZ?=
 =?utf-8?B?cExwVlVxZWV1czM2UGVVWm5FT1lBYXB4dlRuL1IxOXEzcG0xWmF5eFBHM252?=
 =?utf-8?B?R2swZlFFVmdBVGV4OFZ5SVZvTVRXQ3F4NXFEV3grdWhxbW4zY0hweHBSZnly?=
 =?utf-8?B?Mzl3RjhHZVR3bUZ4cWZsc0NKRmdGK3ZtZi9BODB0RXJhSFNTU1k1NDNqdnhQ?=
 =?utf-8?B?M0dTbFMxMG9iUmFJc0FWdGJzMXZTRWlKc1ZPblJTeUJVQmg5dytUckNLUHBx?=
 =?utf-8?B?SU81eUpMdWVMYWdzY28vYzJvckRkVGx0L0lRQWNjSXJ3TFJQK0prQ2RIVVFK?=
 =?utf-8?B?OTBBR1JIVHI1SjBlMGIzK0ptdXcrZkJDWk5UdE9hOVEwSjgxbkFkTzJzUVBx?=
 =?utf-8?B?RHpxT3pkb3FGSUpOQnFhNkRVYTJ2UGZTR0RzQ0pNTFExb0Jnd0EzNW41bXJZ?=
 =?utf-8?B?d0g0SXBwS29oQkRMbzBBeEkreWh0NnZEYUt5WTRmbUxvbk14YjE2bXN2aXhG?=
 =?utf-8?B?bUE4L0NhZ3Z5OGdxMzFOVXVoWlpPRjljRjcwNU1lOUFuVnF4QW5QSlhjdUhY?=
 =?utf-8?B?L3BSMWhxYzhvYUgrSGxLVEt0TzkxK0N3WTZQRHBWZVNJUFpISWVHd1hLR1FE?=
 =?utf-8?B?RGQ2ODQrak9LMHhxL1Bjd25YS1ZQV25iRE9LQmhESmdwQ01hcFA5U3U4YnQy?=
 =?utf-8?B?aTF6RkZXZjMyUDJuVjg2OWdnaVhIQjdxa21rajJnNjA2UnFtOUhxTGdINXI2?=
 =?utf-8?B?RDhmdDZHUVpkRUxFbERhNWloM3JWUXUzN1JhTVRmZWUvMXFkYTF6dkpvcit1?=
 =?utf-8?B?dTQ2TFVXeExzWnVReWpKbDBsbmF2SmNtZ3d6Vjlra1JzcHFyd202ZVNlTmNL?=
 =?utf-8?B?czExOHZvczl2cXViQzVuSFhCNVV3K3oxZXZqN3pzS0ZQTnQ2WGxKTFVxUVNI?=
 =?utf-8?B?cnBzTTYyVVRiSGpxUjVrRVhiOUxWcTlIeEo0UVlZb0N3RmVkTnVwNlBwVmNl?=
 =?utf-8?B?ZmRhVENGY1k5WEJiaFZNM2NjYjQ5RWNLMGFwdXNZWjc4N3gyc2VLWHp4UWV4?=
 =?utf-8?B?WVMvOWFGQmN1UkNpUDB1MlBvQ2hVdDV6Sk1TeW9EMkJhNTJRYW0zZWtOVTUv?=
 =?utf-8?B?N3JRNDVnOHZzUHZqaWRTUVR4aGpiRktKb3ViQ3NvSzBvVHcrTXpaM0hFRm9U?=
 =?utf-8?B?Wk5DSFVpaStPb2FqaEVyZHlhY3VHMEFzMFhqTUw3KytLYnhQTkxzbU13OUM0?=
 =?utf-8?B?dGxBZGphVzlMTDltcXZ2T0xtZWJEa1BtcXI5OG9SYitNKzFzSGNMWUIrbU1O?=
 =?utf-8?B?OExyQjhpUXdZZVRMYkZHK1JuQlhpVy83SDhKNGUyZzhNR0xmQU5aVWdnMjcw?=
 =?utf-8?B?cjhDSGNFZG51ZG1ncEQ0VjMyZ0RWYi9wSmhqdC83dlF3UW9iakc3eTc1VE5R?=
 =?utf-8?B?V2ZLQ0dCL0Y3SWs5UEVtRUV6WDJyQmxOUkI2Vnc0bk1oK2lialprYUtSeHVq?=
 =?utf-8?B?d1YwcDYvdkhqRzlDLzdMYTRnNktHRDB1T1V5M0QremdoZWJnZDJ4QWl5SWxS?=
 =?utf-8?B?eWQvRHJDMzlDa2hxcXBKVzNnQmZTR2tpOXZOVW96ekR0cFBudlNFZDZndnRI?=
 =?utf-8?B?UWpyM2xrK09lMDBLNEhNbU1PQm9KU2s3ZXJGZVMxWlVTVjdONkJUd0Z0R0ZB?=
 =?utf-8?B?bExKM2NEUWlCcGhPaEZyR3ppYVczQkRoMUpHSmhRd1ZVanMwQit5NTJyMGdR?=
 =?utf-8?B?YU82UFNCUzNWM0UzeG15VGQ0M2xYUGYyMnhOdz09?=
Content-Type: text/plain; charset="utf-8"
Content-ID: <757C99A95E60414AB6B70EDE1A6F9E5E@amdcloud.onmicrosoft.com>
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: BL1PR12MB5849.namprd12.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: ae13a4f5-8065-458b-c6d3-08dc1b146a41
X-MS-Exchange-CrossTenant-originalarrivaltime: 22 Jan 2024 06:36:07.5292
 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 3dd8961f-e488-4e60-8e11-a82d994e183d
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: Ose/pYXiKfHC/gH42HTRZ1RCU2fHfjt5g2zEPqE1iEUb00kHcAIavwZgeA7zRtig1j6+V2bPUUEWxNoyRsINlg==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS0PR12MB7558

SGkgQmpvcm4gSGVsZ2FhcywNCg0KRG8geW91IGhhdmUgYW55IGNvbW1lbnRzIG9uIHRoaXMgcGF0
Y2g/DQoNCk9uIDIwMjQvMS81IDE0OjIyLCBDaGVuLCBKaXFpYW4gd3JvdGU6DQo+IFRoZXJlIGlz
IGEgbmVlZCBmb3Igc29tZSBzY2VuYXJpb3MgdG8gdXNlIGdzaSBzeXNmcy4NCj4gRm9yIGV4YW1w
bGUsIHdoZW4geGVuIHBhc3N0aHJvdWdoIGEgZGV2aWNlIHRvIGR1bVUsIGl0IHdpbGwNCj4gdXNl
IGdzaSB0byBtYXAgcGlycSwgYnV0IGN1cnJlbnRseSB1c2Vyc3BhY2UgY2FuJ3QgZ2V0IGdzaQ0K
PiBudW1iZXIuDQo+IFNvLCBhZGQgZ3NpIHN5c2ZzIGZvciB0aGF0IGFuZCBmb3Igb3RoZXIgcG90
ZW50aWFsIHNjZW5hcmlvcy4NCj4gDQo+IENvLWRldmVsb3BlZC1ieTogSHVhbmcgUnVpIDxyYXku
aHVhbmdAYW1kLmNvbT4NCj4gU2lnbmVkLW9mZi1ieTogSmlxaWFuIENoZW4gPEppcWlhbi5DaGVu
QGFtZC5jb20+DQo+IC0tLQ0KPiAgZHJpdmVycy9hY3BpL3BjaV9pcnEuYyAgfCAgMSArDQo+ICBk
cml2ZXJzL3BjaS9wY2ktc3lzZnMuYyB8IDExICsrKysrKysrKysrDQo+ICBpbmNsdWRlL2xpbnV4
L3BjaS5oICAgICB8ICAyICsrDQo+ICAzIGZpbGVzIGNoYW5nZWQsIDE0IGluc2VydGlvbnMoKykN
Cj4gDQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2FjcGkvcGNpX2lycS5jIGIvZHJpdmVycy9hY3Bp
L3BjaV9pcnEuYw0KPiBpbmRleCA2MzBmZTBhMzRiYzYuLjczOWE1ODc1NWRmMiAxMDA2NDQNCj4g
LS0tIGEvZHJpdmVycy9hY3BpL3BjaV9pcnEuYw0KPiArKysgYi9kcml2ZXJzL2FjcGkvcGNpX2ly
cS5jDQo+IEBAIC00NDksNiArNDQ5LDcgQEAgaW50IGFjcGlfcGNpX2lycV9lbmFibGUoc3RydWN0
IHBjaV9kZXYgKmRldikNCj4gIAkJa2ZyZWUoZW50cnkpOw0KPiAgCQlyZXR1cm4gMDsNCj4gIAl9
DQo+ICsJZGV2LT5nc2kgPSBnc2k7DQo+ICANCj4gIAlyYyA9IGFjcGlfcmVnaXN0ZXJfZ3NpKCZk
ZXYtPmRldiwgZ3NpLCB0cmlnZ2VyaW5nLCBwb2xhcml0eSk7DQo+ICAJaWYgKHJjIDwgMCkgew0K
PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9wY2kvcGNpLXN5c2ZzLmMgYi9kcml2ZXJzL3BjaS9wY2kt
c3lzZnMuYw0KPiBpbmRleCAyMzIxZmRmZWZkN2QuLmM1MWRmODhkMDc5ZSAxMDA2NDQNCj4gLS0t
IGEvZHJpdmVycy9wY2kvcGNpLXN5c2ZzLmMNCj4gKysrIGIvZHJpdmVycy9wY2kvcGNpLXN5c2Zz
LmMNCj4gQEAgLTcxLDYgKzcxLDE2IEBAIHN0YXRpYyBzc2l6ZV90IGlycV9zaG93KHN0cnVjdCBk
ZXZpY2UgKmRldiwNCj4gIH0NCj4gIHN0YXRpYyBERVZJQ0VfQVRUUl9STyhpcnEpOw0KPiAgDQo+
ICtzdGF0aWMgc3NpemVfdCBnc2lfc2hvdyhzdHJ1Y3QgZGV2aWNlICpkZXYsDQo+ICsJCQlzdHJ1
Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwNCj4gKwkJCWNoYXIgKmJ1ZikNCj4gK3sNCj4gKwlz
dHJ1Y3QgcGNpX2RldiAqcGRldiA9IHRvX3BjaV9kZXYoZGV2KTsNCj4gKw0KPiArCXJldHVybiBz
eXNmc19lbWl0KGJ1ZiwgIiV1XG4iLCBwZGV2LT5nc2kpOw0KPiArfQ0KPiArc3RhdGljIERFVklD
RV9BVFRSX1JPKGdzaSk7DQo+ICsNCj4gIHN0YXRpYyBzc2l6ZV90IGJyb2tlbl9wYXJpdHlfc3Rh
dHVzX3Nob3coc3RydWN0IGRldmljZSAqZGV2LA0KPiAgCQkJCQkgc3RydWN0IGRldmljZV9hdHRy
aWJ1dGUgKmF0dHIsDQo+ICAJCQkJCSBjaGFyICpidWYpDQo+IEBAIC01OTYsNiArNjA2LDcgQEAg
c3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgKnBjaV9kZXZfYXR0cnNbXSA9IHsNCj4gIAkmZGV2X2F0
dHJfcmV2aXNpb24uYXR0ciwNCj4gIAkmZGV2X2F0dHJfY2xhc3MuYXR0ciwNCj4gIAkmZGV2X2F0
dHJfaXJxLmF0dHIsDQo+ICsJJmRldl9hdHRyX2dzaS5hdHRyLA0KPiAgCSZkZXZfYXR0cl9sb2Nh
bF9jcHVzLmF0dHIsDQo+ICAJJmRldl9hdHRyX2xvY2FsX2NwdWxpc3QuYXR0ciwNCj4gIAkmZGV2
X2F0dHJfbW9kYWxpYXMuYXR0ciwNCj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvcGNpLmgg
Yi9pbmNsdWRlL2xpbnV4L3BjaS5oDQo+IGluZGV4IGRlYTA0M2JjMWUzOC4uMDYxOGQ0YTg3YTUw
IDEwMDY0NA0KPiAtLS0gYS9pbmNsdWRlL2xpbnV4L3BjaS5oDQo+ICsrKyBiL2luY2x1ZGUvbGlu
dXgvcGNpLmgNCj4gQEAgLTUyOSw2ICs1MjksOCBAQCBzdHJ1Y3QgcGNpX2RldiB7DQo+ICANCj4g
IAkvKiBUaGVzZSBtZXRob2RzIGluZGV4IHBjaV9yZXNldF9mbl9tZXRob2RzW10gKi8NCj4gIAl1
OCByZXNldF9tZXRob2RzW1BDSV9OVU1fUkVTRVRfTUVUSE9EU107IC8qIEluIHByaW9yaXR5IG9y
ZGVyICovDQo+ICsNCj4gKwl1bnNpZ25lZCBpbnQJZ3NpOw0KPiAgfTsNCj4gIA0KPiAgc3RhdGlj
IGlubGluZSBzdHJ1Y3QgcGNpX2RldiAqcGNpX3BoeXNmbihzdHJ1Y3QgcGNpX2RldiAqZGV2KQ0K
DQotLSANCkJlc3QgcmVnYXJkcywNCkppcWlhbiBDaGVuLg0K


From xen-devel-bounces@lists.xenproject.org Mon Jan 22 07:05:25 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 22 Jan 2024 07:05:25 +0000
Received: from list by lists.xenproject.org with outflank-mailman.669666.1042002 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rRoMo-00022A-4n; Mon, 22 Jan 2024 07:05:10 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 669666.1042002; Mon, 22 Jan 2024 07:05:10 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rRoMo-000223-0A; Mon, 22 Jan 2024 07:05:10 +0000
Received: by outflank-mailman (input) for mailman id 669666;
 Mon, 22 Jan 2024 07:05:08 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rRoMm-00021r-Sn; Mon, 22 Jan 2024 07:05:08 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rRoMm-00088t-Ow; Mon, 22 Jan 2024 07:05:08 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rRoMm-0006cR-8l; Mon, 22 Jan 2024 07:05:08 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rRoMm-0005nG-7w; Mon, 22 Jan 2024 07:05:08 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=dClBnt2bvsgKolqvEAHsu6QtAsAEptgwSslmnU+Sjjo=; b=T6sIZtaNIiUbO8zhe68jQKS2KJ
	ATPKuRIlI9cWojtwswsA/1tkYo6TKWfVwl+Aj4BvfXtjGMxeiAsEve64a9E9qCJnG7/RoXcJcnN+6
	Ow1IWe+CziJwJ7GuQ+ModJJwsAY96YdIdmQZEB1AtyiwFEom6q9rYIEOAqW6eZ82gJ1c=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184421-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [ovmf test] 184421: all pass - PUSHED
X-Osstest-Versions-This:
    ovmf=0c6d29be8b1731ff6880d59e0189184395e45968
X-Osstest-Versions-That:
    ovmf=da228b29bdf5d52c029166b51538c9f1d76c88da
From: osstest service owner <osstest-admin@xenproject.org>
Date: Mon, 22 Jan 2024 07:05:08 +0000

flight 184421 ovmf real [real]
http://logs.test-lab.xenproject.org/osstest/logs/184421/

Perfect :-)
All tests in this flight passed as required
version targeted for testing:
 ovmf                 0c6d29be8b1731ff6880d59e0189184395e45968
baseline version:
 ovmf                 da228b29bdf5d52c029166b51538c9f1d76c88da

Last test of basis   184411  2024-01-20 06:43:05 Z    2 days
Testing same since   184421  2024-01-22 03:11:07 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Hou, Wenxing <wenxing.hou@intel.com>
  Wenxing Hou <wenxing.hou@intel.com>

jobs:
 build-amd64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-amd64-amd64-xl-qemuu-ovmf-amd64                         pass    
 test-amd64-i386-xl-qemuu-ovmf-amd64                          pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Pushing revision :

To xenbits.xen.org:/home/xen/git/osstest/ovmf.git
   da228b29bd..0c6d29be8b  0c6d29be8b1731ff6880d59e0189184395e45968 -> xen-tested-master


From xen-devel-bounces@lists.xenproject.org Mon Jan 22 07:44:04 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 22 Jan 2024 07:44:04 +0000
Received: from list by lists.xenproject.org with outflank-mailman.669673.1042012 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rRoy8-0007Kt-07; Mon, 22 Jan 2024 07:43:44 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 669673.1042012; Mon, 22 Jan 2024 07:43:43 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rRoy7-0007Km-ST; Mon, 22 Jan 2024 07:43:43 +0000
Received: by outflank-mailman (input) for mailman id 669673;
 Mon, 22 Jan 2024 07:43:41 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=Tj5a=JA=kylinos.cn=chentao@srs-se1.protection.inumbo.net>)
 id 1rRoy5-0007Ke-Q3
 for xen-devel@lists.xenproject.org; Mon, 22 Jan 2024 07:43:41 +0000
Received: from mailgw.kylinos.cn (mailgw.kylinos.cn [124.126.103.232])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id f1edc655-b8f9-11ee-9b0f-b553b5be7939;
 Mon, 22 Jan 2024 08:43:36 +0100 (CET)
Received: from mail.kylinos.cn [(39.156.73.10)] by mailgw
 (envelope-from <chentao@kylinos.cn>) (Generic MTA)
 with ESMTP id 1393669554; Mon, 22 Jan 2024 15:43:20 +0800
Received: from mail.kylinos.cn (localhost [127.0.0.1])
 by mail.kylinos.cn (NSMail) with SMTP id 7F0F3E000EB9;
 Mon, 22 Jan 2024 15:43:20 +0800 (CST)
Received: from [172.20.15.234] (unknown [172.20.15.234])
 by mail.kylinos.cn (NSMail) with ESMTPA id 7C470E000EB9;
 Mon, 22 Jan 2024 15:43:16 +0800 (CST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: f1edc655-b8f9-11ee-9b0f-b553b5be7939
X-UUID: 0b78ecab05a04d719b47471461e9eca0-20240122
X-CID-P-RULE: Release_Ham
X-CID-O-INFO: VERSION:1.1.35,REQID:2c7f558f-ccf3-45f4-a733-29bf9d7726bb,IP:10,
	URL:0,TC:0,Content:0,EDM:0,RT:0,SF:-3,FILE:0,BULK:0,RULE:Release_Ham,ACTIO
	N:release,TS:7
X-CID-INFO: VERSION:1.1.35,REQID:2c7f558f-ccf3-45f4-a733-29bf9d7726bb,IP:10,UR
	L:0,TC:0,Content:0,EDM:0,RT:0,SF:-3,FILE:0,BULK:0,RULE:Release_Ham,ACTION:
	release,TS:7
X-CID-META: VersionHash:5d391d7,CLOUDID:e96f838e-e2c0-40b0-a8fe-7c7e47299109,B
	ulkID:240119184126L868QB56,BulkQuantity:10,Recheck:0,SF:64|38|24|100|17|66
	|19|44|101|102,TC:nil,Content:0,EDM:-3,IP:-2,URL:0,File:nil,Bulk:40,QS:nil
	,BEC:nil,COL:0,OSI:0,OSA:0,AV:0,LES:1,SPR:NO,DKR:0,DKP:0,BRR:0,BRE:0
X-CID-BVR: 0,NGT
X-CID-BAS: 0,NGT,0,_
X-CID-FACTOR: TF_CID_SPAM_SNR,TF_CID_SPAM_FAS,TF_CID_SPAM_FSD,TF_CID_SPAM_FSI,
	TF_CID_SPAM_OBB
X-UUID: 0b78ecab05a04d719b47471461e9eca0-20240122
X-ns-mid: postfix-65AE1C98-394330182
Message-ID: <6f25f54f-eecc-4765-bdc4-248674836e77@kylinos.cn>
Date: Mon, 22 Jan 2024 15:43:15 +0800
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3] x86/xen: Add some null pointer checking to smp.c
Content-Language: en-US
To: Markus Elfring <Markus.Elfring@web.de>, xen-devel@lists.xenproject.org,
 kernel-janitors@vger.kernel.org, Boris Ostrovsky
 <boris.ostrovsky@oracle.com>, Borislav Petkov <bp@alien8.de>,
 Dave Hansen <dave.hansen@linux.intel.com>, "H. Peter Anvin" <hpa@zytor.com>,
 Ingo Molnar <mingo@redhat.com>, =?UTF-8?B?SsO8cmdlbiBHcm/Dnw==?=
 <jgross@suse.com>, Thomas Gleixner <tglx@linutronix.de>, x86@kernel.org
Cc: kernel test robot <lkp@intel.com>, LKML <linux-kernel@vger.kernel.org>,
 Ilya Dryomov <idryomov@gmail.com>, Jean Delvare <jdelvare@suse.de>,
 Jonathan Corbet <corbet@lwn.net>
References: <20240119094948.275390-1-chentao@kylinos.cn>
 <26ef811d-214c-4ce4-a9f8-4fa4cfdefe29@web.de>
From: Kunwu Chan <chentao@kylinos.cn>
In-Reply-To: <26ef811d-214c-4ce4-a9f8-4fa4cfdefe29@web.de>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: quoted-printable

On 2024/1/20 22:45, Markus Elfring wrote:
>> kasprintf() returns a pointer to dynamically allocated memory
>> which can be NULL upon failure. Ensure the allocation was successful
>> by checking the pointer validity.
>=20
> How do you think about to refer to the function name
> instead of the file name in the patch subject?
>=20
The main goal is to assign a errno to rc. So use 'fail_mem is good to=20
understand.
>=20
> =E2=80=A6
>> +++ b/arch/x86/xen/smp.c
> =E2=80=A6
>> @@ -114,6 +124,8 @@ int xen_smp_intr_init(unsigned int cpu)
>>
>>   	return 0;
>>
>> + fail_mem:
>> +	rc =3D -ENOMEM;
>>    fail:
>>   	xen_smp_intr_free(cpu);
>>   	return rc;
>=20
> Is it currently preferred to start labels in the first text column?
Just the same as the old one. I could fix it if necessary.

>=20
> Regards,
> Markus
--=20
Thanks,
   Kunwu



From xen-devel-bounces@lists.xenproject.org Mon Jan 22 07:47:34 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 22 Jan 2024 07:47:34 +0000
Received: from list by lists.xenproject.org with outflank-mailman.669677.1042021 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rRp1f-0007tf-DA; Mon, 22 Jan 2024 07:47:23 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 669677.1042021; Mon, 22 Jan 2024 07:47:23 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rRp1f-0007tY-Ae; Mon, 22 Jan 2024 07:47:23 +0000
Received: by outflank-mailman (input) for mailman id 669677;
 Mon, 22 Jan 2024 07:47:22 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=Tj5a=JA=kylinos.cn=chentao@srs-se1.protection.inumbo.net>)
 id 1rRp1e-0007tS-Dy
 for xen-devel@lists.xenproject.org; Mon, 22 Jan 2024 07:47:22 +0000
Received: from mailgw.kylinos.cn (mailgw.kylinos.cn [124.126.103.232])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 77fb0a7d-b8fa-11ee-9b0f-b553b5be7939;
 Mon, 22 Jan 2024 08:47:20 +0100 (CET)
Received: from mail.kylinos.cn [(39.156.73.10)] by mailgw
 (envelope-from <chentao@kylinos.cn>) (Generic MTA)
 with ESMTP id 935448798; Mon, 22 Jan 2024 15:47:13 +0800
Received: from mail.kylinos.cn (localhost [127.0.0.1])
 by mail.kylinos.cn (NSMail) with SMTP id EB762E000EB9;
 Mon, 22 Jan 2024 15:47:12 +0800 (CST)
Received: from [172.20.15.234] (unknown [172.20.15.234])
 by mail.kylinos.cn (NSMail) with ESMTPA id 0A1E9E000EB9;
 Mon, 22 Jan 2024 15:47:01 +0800 (CST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 77fb0a7d-b8fa-11ee-9b0f-b553b5be7939
X-UUID: 565b878a508849b98085f4b287cfd53f-20240122
X-CID-P-RULE: Release_Ham
X-CID-O-INFO: VERSION:1.1.35,REQID:341d19ce-db61-4755-8c58-6ce5c2018139,IP:10,
	URL:0,TC:0,Content:0,EDM:0,RT:0,SF:-3,FILE:0,BULK:0,RULE:Release_Ham,ACTIO
	N:release,TS:7
X-CID-INFO: VERSION:1.1.35,REQID:341d19ce-db61-4755-8c58-6ce5c2018139,IP:10,UR
	L:0,TC:0,Content:0,EDM:0,RT:0,SF:-3,FILE:0,BULK:0,RULE:Release_Ham,ACTION:
	release,TS:7
X-CID-META: VersionHash:5d391d7,CLOUDID:6bb26d2f-1ab8-4133-9780-81938111c800,B
	ulkID:240119184126L868QB56,BulkQuantity:15,Recheck:0,SF:66|38|24|100|19|44
	|64|17|101|102,TC:nil,Content:0,EDM:-3,IP:-2,URL:0,File:nil,Bulk:40,QS:nil
	,BEC:nil,COL:0,OSI:0,OSA:0,AV:0,LES:1,SPR:NO,DKR:0,DKP:0,BRR:0,BRE:0
X-CID-BVR: 0,NGT
X-CID-BAS: 0,NGT,0,_
X-CID-FACTOR: TF_CID_SPAM_SNR,TF_CID_SPAM_FAS,TF_CID_SPAM_FSD,TF_CID_SPAM_FSI,
	TF_CID_SPAM_OBB
X-UUID: 565b878a508849b98085f4b287cfd53f-20240122
X-ns-mid: postfix-65AE1D80-872727190
Message-ID: <e7a6add0-5526-4efd-8b00-07e399e292c1@kylinos.cn>
Date: Mon, 22 Jan 2024 15:47:01 +0800
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3] x86/xen: Add some null pointer checking to smp.c
Content-Language: en-US
To: Markus Elfring <Markus.Elfring@web.de>, xen-devel@lists.xenproject.org,
 kernel-janitors@vger.kernel.org, Boris Ostrovsky
 <boris.ostrovsky@oracle.com>, Borislav Petkov <bp@alien8.de>,
 Dave Hansen <dave.hansen@linux.intel.com>, "H. Peter Anvin" <hpa@zytor.com>,
 Ingo Molnar <mingo@redhat.com>, =?UTF-8?B?SsO8cmdlbiBHcm/Dnw==?=
 <jgross@suse.com>, Thomas Gleixner <tglx@linutronix.de>, x86@kernel.org
Cc: kernel test robot <lkp@intel.com>, LKML <linux-kernel@vger.kernel.org>
References: <20240119094948.275390-1-chentao@kylinos.cn>
 <91af4a8c-d2e2-416f-b02e-5d69553c5998@web.de>
From: Kunwu Chan <chentao@kylinos.cn>
In-Reply-To: <91af4a8c-d2e2-416f-b02e-5d69553c5998@web.de>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: quoted-printable

On 2024/1/19 18:40, Markus Elfring wrote:
>> kasprintf() returns a pointer to dynamically allocated memory
>> which can be NULL upon failure. Ensure the allocation was successful
>> by checking the pointer validity.
> =E2=80=A6
>> ---
>> Changes in v3:
>>      - Remove rc initialization
>>      - Simply error paths by adding a new label 'fail_mem'
> =E2=80=A6
>=20
> I became curious if you would like to simplify further source code plac=
es.
This function hasn't changed in years, so it's OK for now.
>=20
>=20
>> +++ b/arch/x86/xen/smp.c
>> @@ -65,6 +65,8 @@ int xen_smp_intr_init(unsigned int cpu)
>>   	char *resched_name, *callfunc_name, *debug_name;
>>
>>   	resched_name =3D kasprintf(GFP_KERNEL, "resched%d", cpu);
>> +	if (!resched_name)
>> +		goto fail_mem;
>=20
> Would you like to add a blank line after such a statement?
Sure, I could do it in next patch.
>=20
>=20
>>   	per_cpu(xen_resched_irq, cpu).name =3D resched_name;
> =E2=80=A6
>=20
> Please compare with your subsequent suggestion.
I=E2=80=99ve seend a reply.
>=20
> =E2=80=A6
>> @@ -101,6 +108,9 @@ int xen_smp_intr_init(unsigned int cpu)
>>   	}
>>
>>   	callfunc_name =3D kasprintf(GFP_KERNEL, "callfuncsingle%d", cpu);
>> +	if (!callfunc_name)
>> +		goto fail_mem;
>> +
>>   	per_cpu(xen_callfuncsingle_irq, cpu).name =3D callfunc_name;
> =E2=80=A6
>=20
> Regards,
> Markus
--=20
Thanks,
   Kunwu



From xen-devel-bounces@lists.xenproject.org Mon Jan 22 08:30:18 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 22 Jan 2024 08:30:18 +0000
Received: from list by lists.xenproject.org with outflank-mailman.669689.1042033 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rRph5-00067S-2L; Mon, 22 Jan 2024 08:30:11 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 669689.1042033; Mon, 22 Jan 2024 08:30:11 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rRph4-00067L-UC; Mon, 22 Jan 2024 08:30:10 +0000
Received: by outflank-mailman (input) for mailman id 669689;
 Mon, 22 Jan 2024 08:30:09 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=GS+M=JA=linaro.org=dan.carpenter@srs-se1.protection.inumbo.net>)
 id 1rRph3-00067D-Ad
 for xen-devel@lists.xenproject.org; Mon, 22 Jan 2024 08:30:09 +0000
Received: from mail-wr1-x42f.google.com (mail-wr1-x42f.google.com
 [2a00:1450:4864:20::42f])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 722b3125-b900-11ee-98f2-6d05b1d4d9a1;
 Mon, 22 Jan 2024 09:30:07 +0100 (CET)
Received: by mail-wr1-x42f.google.com with SMTP id
 ffacd0b85a97d-338aca547d9so2253352f8f.0
 for <xen-devel@lists.xenproject.org>; Mon, 22 Jan 2024 00:30:06 -0800 (PST)
Received: from localhost ([102.140.209.237]) by smtp.gmail.com with ESMTPSA id
 d21-20020adfa355000000b003392a486758sm5511850wrb.99.2024.01.22.00.30.05
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 22 Jan 2024 00:30:05 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 722b3125-b900-11ee-98f2-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=linaro.org; s=google; t=1705912206; x=1706517006; darn=lists.xenproject.org;
        h=in-reply-to:content-transfer-encoding:content-disposition
         :mime-version:references:message-id:subject:cc:to:from:date:from:to
         :cc:subject:date:message-id:reply-to;
        bh=SFCiLnY6xBPrqdHIolQZod6apPlIVJ6Tq13E5RZi33g=;
        b=lWFWzBEHrbhgzKjfRi2BbI3vmiYASSV7ipD96TTYLNbAcdZL7j6swprJ5Zr8nghxdz
         XpeZd5N/Z23sKynydV+TBRF12QQSInlGj70Gh5lONEYlXrxLu9AlzEQwBs/iS775dWzP
         WmeqzAuGd6ab0GIdDYnU110uL06sTVQXtN6omJPpr1/X8IBxK1u3z+Dw+VbdtU+YIdCQ
         UqEwrgWYkVOOZAcgTJNTFexa0tT20Qt0d5j6xD5/hQIa5Zw2Di6H7MvG05tsHur883y1
         375GGIUUXmZa9wpKxrqF+IzZdj/SMW1NHbvt9MdZpeth1cQ7IWpW95wWpAP3w27IMQ4R
         +dUw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705912206; x=1706517006;
        h=in-reply-to:content-transfer-encoding:content-disposition
         :mime-version:references:message-id:subject:cc:to:from:date
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=SFCiLnY6xBPrqdHIolQZod6apPlIVJ6Tq13E5RZi33g=;
        b=RA/oo5+iR/S4QDH28uQGyZXiG/+tLoNHoZgR/IGELy2XhdJwWfVRK1g4DINz9NlvQl
         f5+USyhDheu8sT4S4S2gKQOxAK+LmR+mDCIsHOMmfwnVTmjJtvmRUC1LiDMexq8hTKmq
         vLCVMKfH9g3qFyLT5MXoblFYggdOh7hhB03UcJDcPvVygm0t+tSSf1HpIQvDqcWGRNU4
         FsUgJmqRA/oq5qcpvfIYOMDqKtO9d5A8XcAatv5EshAlinpRNyS6tK6w1v9KQ5kY11G9
         d3UW0ocUa0gr0+1AGP46B1YSq7ExxQp+jyh+Z92GB9QKV6Dc80ZikcdmkueRC9uiOPfG
         qj4Q==
X-Gm-Message-State: AOJu0Yx26wY9FBbUFjEQlucE0gLeMl/FiM28LfeemCt4neoi4NzfV1ag
	uWrOM/qHZldz1uZdYHi7p809KVM1/74qcwq7A1zMVzFz0khuUUbe0GlzYpAZre4=
X-Google-Smtp-Source: AGHT+IFVQ0c6+n6QcK4dPQ4aInfuFL5IaA5u36sUVkTkA1RNClaCwWZfy6oJvnyLXS/5fMx7uCKTPg==
X-Received: by 2002:adf:a18a:0:b0:337:828b:dd72 with SMTP id u10-20020adfa18a000000b00337828bdd72mr907642wru.55.1705912205784;
        Mon, 22 Jan 2024 00:30:05 -0800 (PST)
Date: Mon, 22 Jan 2024 11:30:02 +0300
From: Dan Carpenter <dan.carpenter@linaro.org>
To: Kunwu Chan <chentao@kylinos.cn>
Cc: Markus Elfring <Markus.Elfring@web.de>, xen-devel@lists.xenproject.org,
	kernel-janitors@vger.kernel.org,
	LKML <linux-kernel@vger.kernel.org>,
	kernel test robot <lkp@intel.com>,
	Boris Ostrovsky <boris.ostrovsky@oracle.com>,
	Borislav Petkov <bp@alien8.de>,
	Dave Hansen <dave.hansen@linux.intel.com>,
	"H. Peter Anvin" <hpa@zytor.com>, Ingo Molnar <mingo@redhat.com>,
	=?iso-8859-1?Q?J=FCrgen_Gro=DF?= <jgross@suse.com>,
	Thomas Gleixner <tglx@linutronix.de>, x86@kernel.org
Subject: Re: [PATCH v2] x86/xen: Add some null pointer checking to smp.c
Message-ID: <dfb6de51-3ebc-41fc-a750-cf5ca2ac05aa@moroto.mountain>
References: <20240117090018.152031-1-chentao@kylinos.cn>
 <1705655941162581.825.seg@mailgw>
 <517fae75-c4e7-4576-81ff-6a14a3eb9cd7@kylinos.cn>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <517fae75-c4e7-4576-81ff-6a14a3eb9cd7@kylinos.cn>

On Fri, Jan 19, 2024 at 05:22:25PM +0800, Kunwu Chan wrote:
> On 2024/1/17 18:40, Markus Elfring wrote:
> > > kasprintf() returns a pointer to dynamically allocated memory
> > > which can be NULL upon failure. Ensure the allocation was successful
> > > by checking the pointer validity.
> > …
> > > +++ b/arch/x86/xen/smp.c
> > > @@ -61,10 +61,14 @@ void xen_smp_intr_free(unsigned int cpu)
> > > 
> > >   int xen_smp_intr_init(unsigned int cpu)
> > >   {
> > > -	int rc;
> > > +	int rc = 0;
> > 
> > I find the indication of a successful function execution sufficient by
> > the statement “return 0;” at the end.
> > How do you think about to omit such an extra variable initialisation?
> Thanks, it's no need now. I'll remove it in v3.

This advice is good.  Don't do unnecessary assignments.

> > 
> > 
> > >   	char *resched_name, *callfunc_name, *debug_name;
> > > 
> > >   	resched_name = kasprintf(GFP_KERNEL, "resched%d", cpu);
> > > +	if (!resched_name) {
> > > +		rc = -ENOMEM;
> > > +		goto fail;
> > > +	}
> > >   	per_cpu(xen_resched_irq, cpu).name = resched_name;
> > >   	rc = bind_ipi_to_irqhandler(XEN_RESCHEDULE_VECTOR,
> > >   				    cpu,
> > 
> > You propose to apply the same error code in four if branches.
> > I suggest to avoid the specification of duplicate assignment statements
> > for this purpose.
> > How do you think about to use another label like “e_nomem”?
> I'll add a new label to simply the code.

I'm not a Xen maintainer so I can't really comment on their style
choices.  However, as one of the kernel-janitors list people, I would
say that not everyone agrees with Markus's style preferences.  Markus
was banned from the list for a while, but we unbanned everyone when we
transitioned to the new list infrastructure.  Do a search on lore to
find out more.  https://lore.kernel.org/all/?q=Elfring

Perhaps wait for feedback from the maintainers for how to proceed?

regards,
dan carpenter



From xen-devel-bounces@lists.xenproject.org Mon Jan 22 08:41:31 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 22 Jan 2024 08:41:31 +0000
Received: from list by lists.xenproject.org with outflank-mailman.669695.1042041 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rRprz-0007t8-37; Mon, 22 Jan 2024 08:41:27 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 669695.1042041; Mon, 22 Jan 2024 08:41:27 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rRprz-0007t1-0b; Mon, 22 Jan 2024 08:41:27 +0000
Received: by outflank-mailman (input) for mailman id 669695;
 Mon, 22 Jan 2024 08:41:26 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=Tj5a=JA=kylinos.cn=chentao@srs-se1.protection.inumbo.net>)
 id 1rRpry-0007sv-A7
 for xen-devel@lists.xenproject.org; Mon, 22 Jan 2024 08:41:26 +0000
Received: from mailgw.kylinos.cn (mailgw.kylinos.cn [124.126.103.232])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 044fefdc-b902-11ee-9b0f-b553b5be7939;
 Mon, 22 Jan 2024 09:41:22 +0100 (CET)
Received: from mail.kylinos.cn [(39.156.73.10)] by mailgw
 (envelope-from <chentao@kylinos.cn>) (Generic MTA)
 with ESMTP id 292773570; Mon, 22 Jan 2024 16:41:16 +0800
Received: from mail.kylinos.cn (localhost [127.0.0.1])
 by mail.kylinos.cn (NSMail) with SMTP id 864D4E000EB9;
 Mon, 22 Jan 2024 16:41:16 +0800 (CST)
Received: from [172.20.15.234] (unknown [172.20.15.234])
 by mail.kylinos.cn (NSMail) with ESMTPA id 3F59DE000EB9;
 Mon, 22 Jan 2024 16:41:14 +0800 (CST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 044fefdc-b902-11ee-9b0f-b553b5be7939
X-UUID: d1c2b83a7e904730825e5b96ad735542-20240122
X-CID-P-RULE: Release_Ham
X-CID-O-INFO: VERSION:1.1.35,REQID:1c271f4d-649e-4a00-a195-b02e349e0fd6,IP:10,
	URL:0,TC:0,Content:0,EDM:0,RT:0,SF:-3,FILE:0,BULK:0,RULE:Release_Ham,ACTIO
	N:release,TS:7
X-CID-INFO: VERSION:1.1.35,REQID:1c271f4d-649e-4a00-a195-b02e349e0fd6,IP:10,UR
	L:0,TC:0,Content:0,EDM:0,RT:0,SF:-3,FILE:0,BULK:0,RULE:Release_Ham,ACTION:
	release,TS:7
X-CID-META: VersionHash:5d391d7,CLOUDID:aa021d83-8d4f-477b-89d2-1e3bdbef96d1,B
	ulkID:240122163022SO5X7JXR,BulkQuantity:4,Recheck:0,SF:64|66|24|100|17|19|
	44|101|102,TC:nil,Content:0,EDM:-3,IP:-2,URL:1,File:nil,Bulk:40,QS:nil,BEC
	:nil,COL:0,OSI:0,OSA:0,AV:0,LES:1,SPR:NO,DKR:0,DKP:0,BRR:0,BRE:0
X-CID-BVR: 0,NGT
X-CID-BAS: 0,NGT,0,_
X-CID-FACTOR: TF_CID_SPAM_SNR,TF_CID_SPAM_FAS,TF_CID_SPAM_FSD,TF_CID_SPAM_FSI,
	TF_CID_SPAM_ULS
X-UUID: d1c2b83a7e904730825e5b96ad735542-20240122
X-ns-mid: postfix-65AE2A2C-464608384
Message-ID: <39c6bc5c-8c91-4c91-a694-e27fa435f082@kylinos.cn>
Date: Mon, 22 Jan 2024 16:41:14 +0800
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2] x86/xen: Add some null pointer checking to smp.c
Content-Language: en-US
To: Dan Carpenter <dan.carpenter@linaro.org>
Cc: Markus Elfring <Markus.Elfring@web.de>, xen-devel@lists.xenproject.org,
 kernel-janitors@vger.kernel.org, LKML <linux-kernel@vger.kernel.org>,
 kernel test robot <lkp@intel.com>,
 Boris Ostrovsky <boris.ostrovsky@oracle.com>, Borislav Petkov
 <bp@alien8.de>, Dave Hansen <dave.hansen@linux.intel.com>,
 "H. Peter Anvin" <hpa@zytor.com>, Ingo Molnar <mingo@redhat.com>,
 =?UTF-8?B?SsO8cmdlbiBHcm/Dnw==?= <jgross@suse.com>,
 Thomas Gleixner <tglx@linutronix.de>, x86@kernel.org
References: <20240117090018.152031-1-chentao@kylinos.cn>
 <1705655941162581.825.seg@mailgw>
 <517fae75-c4e7-4576-81ff-6a14a3eb9cd7@kylinos.cn>
 <dfb6de51-3ebc-41fc-a750-cf5ca2ac05aa@moroto.mountain>
From: Kunwu Chan <chentao@kylinos.cn>
In-Reply-To: <dfb6de51-3ebc-41fc-a750-cf5ca2ac05aa@moroto.mountain>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: quoted-printable

On 2024/1/22 16:30, Dan Carpenter wrote:
> On Fri, Jan 19, 2024 at 05:22:25PM +0800, Kunwu Chan wrote:
>> On 2024/1/17 18:40, Markus Elfring wrote:
>>>> kasprintf() returns a pointer to dynamically allocated memory
>>>> which can be NULL upon failure. Ensure the allocation was successful
>>>> by checking the pointer validity.
>>> =E2=80=A6
>>>> +++ b/arch/x86/xen/smp.c
>>>> @@ -61,10 +61,14 @@ void xen_smp_intr_free(unsigned int cpu)
>>>>
>>>>    int xen_smp_intr_init(unsigned int cpu)
>>>>    {
>>>> -	int rc;
>>>> +	int rc =3D 0;
>>>
>>> I find the indication of a successful function execution sufficient b=
y
>>> the statement =E2=80=9Creturn 0;=E2=80=9D at the end.
>>> How do you think about to omit such an extra variable initialisation?
>> Thanks, it's no need now. I'll remove it in v3.
>=20
> This advice is good.  Don't do unnecessary assignments.
Thanks for your suggestions, I'll keep it in mind.
>=20
>>>
>>>
>>>>    	char *resched_name, *callfunc_name, *debug_name;
>>>>
>>>>    	resched_name =3D kasprintf(GFP_KERNEL, "resched%d", cpu);
>>>> +	if (!resched_name) {
>>>> +		rc =3D -ENOMEM;
>>>> +		goto fail;
>>>> +	}
>>>>    	per_cpu(xen_resched_irq, cpu).name =3D resched_name;
>>>>    	rc =3D bind_ipi_to_irqhandler(XEN_RESCHEDULE_VECTOR,
>>>>    				    cpu,
>>>
>>> You propose to apply the same error code in four if branches.
>>> I suggest to avoid the specification of duplicate assignment statemen=
ts
>>> for this purpose.
>>> How do you think about to use another label like =E2=80=9Ce_nomem=E2=80=
=9D?
>> I'll add a new label to simply the code.
>=20
> I'm not a Xen maintainer so I can't really comment on their style
> choices.  However, as one of the kernel-janitors list people, I would
> say that not everyone agrees with Markus's style preferences.  Markus
> was banned from the list for a while, but we unbanned everyone when we
> transitioned to the new list infrastructure.  Do a search on lore to
> find out more.  https://lore.kernel.org/all/?q=3DElfring
>=20
> Perhaps wait for feedback from the maintainers for how to proceed?
OK, I'll wait for the feedback.
>=20
> regards,
> dan carpenter
>=20
--=20
Thanks,
   Kunwu



From xen-devel-bounces@lists.xenproject.org Mon Jan 22 09:50:06 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 22 Jan 2024 09:50:06 +0000
Received: from list by lists.xenproject.org with outflank-mailman.669709.1042054 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rRqw9-0007OC-SM; Mon, 22 Jan 2024 09:49:49 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 669709.1042054; Mon, 22 Jan 2024 09:49:49 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rRqw9-0007O5-Pe; Mon, 22 Jan 2024 09:49:49 +0000
Received: by outflank-mailman (input) for mailman id 669709;
 Mon, 22 Jan 2024 09:49:49 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rRqw9-0007Nv-Dp; Mon, 22 Jan 2024 09:49:49 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rRqw9-0003Ag-80; Mon, 22 Jan 2024 09:49:49 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rRqw8-00058b-Mn; Mon, 22 Jan 2024 09:49:48 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rRqw8-0004Ir-MK; Mon, 22 Jan 2024 09:49:48 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=M08Hz01iHTmPzf0tgSvB6/s0/LMn/WWFs7TtUoqK2OA=; b=iB4UHwtNZr8fSwallaA+BG4qCk
	kV4BQ3eLWSdtSmF4HeF0j5R968JYrHyd6APlaXraL2alcJh4WNTxQhXH1Uv01R4G+aXrtWSl+XYBi
	l+WbrRzsLrXNs70+t/nX7p8BP5eJ0UghFpuo2AYUsKXq1RYTNhH5wEJoxwSFFfhZ01hg=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184419-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [xen-unstable test] 184419: tolerable FAIL
X-Osstest-Failures:
    xen-unstable:test-armhf-armhf-xl-credit1:xen-boot:fail:heisenbug
    xen-unstable:test-armhf-armhf-xl-credit1:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit1:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-amd64-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-raw:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-amd64-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-qcow2:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-qemuu-nested-amd:debian-hvm-install/l1/l2:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-amd64-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-i386-libvirt-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-libvirt:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-pvshim:guest-start:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-xsm:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-credit2:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-credit2:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-credit1:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-libvirt-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-credit1:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-libvirt-xsm:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-thunderx:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-thunderx:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit2:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit2:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-multivcpu:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-multivcpu:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-libvirt-raw:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-libvirt-raw:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-libvirt-raw:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt-vhd:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-vhd:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-vhd:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-raw:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-vhd:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-vhd:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-rtds:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-rtds:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-arndale:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-arndale:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-qcow2:migrate-support-check:fail:nonblocking
X-Osstest-Versions-This:
    xen=b25607e528f6ce7851e907ed59ad5ff583aa1840
X-Osstest-Versions-That:
    xen=b25607e528f6ce7851e907ed59ad5ff583aa1840
From: osstest service owner <osstest-admin@xenproject.org>
Date: Mon, 22 Jan 2024 09:49:48 +0000

flight 184419 xen-unstable real [real]
http://logs.test-lab.xenproject.org/osstest/logs/184419/

Failures :-/ but no regressions.

Tests which are failing intermittently (not blocking):
 test-armhf-armhf-xl-credit1   8 xen-boot                   fail pass in 184415

Tests which did not succeed, but are not blocking:
 test-armhf-armhf-xl-credit1 15 migrate-support-check fail in 184415 never pass
 test-armhf-armhf-xl-credit1 16 saverestore-support-check fail in 184415 never pass
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 184415
 test-amd64-amd64-xl-qemut-win7-amd64 19 guest-stop            fail like 184415
 test-amd64-i386-xl-qemuu-win7-amd64 19 guest-stop             fail like 184415
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 184415
 test-amd64-i386-xl-qemut-ws16-amd64 19 guest-stop             fail like 184415
 test-armhf-armhf-libvirt-raw 15 saverestore-support-check    fail  like 184415
 test-amd64-i386-xl-qemut-win7-amd64 19 guest-stop             fail like 184415
 test-amd64-amd64-xl-qemut-ws16-amd64 19 guest-stop            fail like 184415
 test-armhf-armhf-libvirt-qcow2 15 saverestore-support-check   fail like 184415
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 184415
 test-amd64-i386-xl-qemuu-ws16-amd64 19 guest-stop             fail like 184415
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 184415
 test-amd64-i386-libvirt-xsm  15 migrate-support-check        fail   never pass
 test-amd64-i386-libvirt      15 migrate-support-check        fail   never pass
 test-amd64-i386-xl-pvshim    14 guest-start                  fail   never pass
 test-amd64-amd64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl          15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-xsm      15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl          16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-xsm      16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-credit2  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit2  16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-credit1  15 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit1  16 saverestore-support-check    fail   never pass
 test-arm64-arm64-libvirt-xsm 16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-thunderx 15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-thunderx 16 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt     15 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-armhf-armhf-xl-credit2  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit2  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-multivcpu 15 migrate-support-check        fail  never pass
 test-armhf-armhf-xl-multivcpu 16 saverestore-support-check    fail  never pass
 test-amd64-i386-libvirt-raw  14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 15 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-vhd 14 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-vhd      14 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-vhd      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-raw 14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl          15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-rtds     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-rtds     16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-arndale  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-arndale  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-qcow2 14 migrate-support-check        fail never pass

version targeted for testing:
 xen                  b25607e528f6ce7851e907ed59ad5ff583aa1840
baseline version:
 xen                  b25607e528f6ce7851e907ed59ad5ff583aa1840

Last test of basis   184419  2024-01-22 01:53:59 Z    0 days
Testing same since                          (not found)         0 attempts

jobs:
 build-amd64-xsm                                              pass    
 build-arm64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64-xtf                                              pass    
 build-amd64                                                  pass    
 build-arm64                                                  pass    
 build-armhf                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-arm64-libvirt                                          pass    
 build-armhf-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-prev                                             pass    
 build-i386-prev                                              pass    
 build-amd64-pvops                                            pass    
 build-arm64-pvops                                            pass    
 build-armhf-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-xtf-amd64-amd64-1                                       pass    
 test-xtf-amd64-amd64-2                                       pass    
 test-xtf-amd64-amd64-3                                       pass    
 test-xtf-amd64-amd64-4                                       pass    
 test-xtf-amd64-amd64-5                                       pass    
 test-amd64-amd64-xl                                          pass    
 test-amd64-coresched-amd64-xl                                pass    
 test-arm64-arm64-xl                                          pass    
 test-armhf-armhf-xl                                          pass    
 test-amd64-i386-xl                                           pass    
 test-amd64-coresched-i386-xl                                 pass    
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm           pass    
 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm            pass    
 test-amd64-amd64-xl-qemut-stubdom-debianhvm-amd64-xsm        pass    
 test-amd64-i386-xl-qemut-stubdom-debianhvm-amd64-xsm         pass    
 test-amd64-amd64-xl-qemut-debianhvm-i386-xsm                 pass    
 test-amd64-i386-xl-qemut-debianhvm-i386-xsm                  pass    
 test-amd64-amd64-xl-qemuu-debianhvm-i386-xsm                 pass    
 test-amd64-i386-xl-qemuu-debianhvm-i386-xsm                  pass    
 test-amd64-amd64-libvirt-xsm                                 pass    
 test-arm64-arm64-libvirt-xsm                                 pass    
 test-amd64-i386-libvirt-xsm                                  pass    
 test-amd64-amd64-xl-xsm                                      pass    
 test-arm64-arm64-xl-xsm                                      pass    
 test-amd64-i386-xl-xsm                                       pass    
 test-amd64-amd64-qemuu-nested-amd                            fail    
 test-amd64-amd64-xl-pvhv2-amd                                pass    
 test-amd64-i386-qemut-rhel6hvm-amd                           pass    
 test-amd64-i386-qemuu-rhel6hvm-amd                           pass    
 test-amd64-amd64-dom0pvh-xl-amd                              pass    
 test-amd64-amd64-xl-qemut-debianhvm-amd64                    pass    
 test-amd64-i386-xl-qemut-debianhvm-amd64                     pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64                    pass    
 test-amd64-i386-xl-qemuu-debianhvm-amd64                     pass    
 test-amd64-i386-freebsd10-amd64                              pass    
 test-amd64-amd64-qemuu-freebsd11-amd64                       pass    
 test-amd64-amd64-qemuu-freebsd12-amd64                       pass    
 test-amd64-amd64-xl-qemuu-ovmf-amd64                         pass    
 test-amd64-i386-xl-qemuu-ovmf-amd64                          pass    
 test-amd64-amd64-xl-qemut-win7-amd64                         fail    
 test-amd64-i386-xl-qemut-win7-amd64                          fail    
 test-amd64-amd64-xl-qemuu-win7-amd64                         fail    
 test-amd64-i386-xl-qemuu-win7-amd64                          fail    
 test-amd64-amd64-xl-qemut-ws16-amd64                         fail    
 test-amd64-i386-xl-qemut-ws16-amd64                          fail    
 test-amd64-amd64-xl-qemuu-ws16-amd64                         fail    
 test-amd64-i386-xl-qemuu-ws16-amd64                          fail    
 test-armhf-armhf-xl-arndale                                  pass    
 test-amd64-amd64-examine-bios                                pass    
 test-amd64-i386-examine-bios                                 pass    
 test-amd64-amd64-xl-credit1                                  pass    
 test-arm64-arm64-xl-credit1                                  pass    
 test-armhf-armhf-xl-credit1                                  fail    
 test-amd64-amd64-xl-credit2                                  pass    
 test-arm64-arm64-xl-credit2                                  pass    
 test-armhf-armhf-xl-credit2                                  pass    
 test-amd64-amd64-xl-qemuu-dmrestrict-amd64-dmrestrict        pass    
 test-amd64-i386-xl-qemuu-dmrestrict-amd64-dmrestrict         pass    
 test-amd64-amd64-examine                                     pass    
 test-arm64-arm64-examine                                     pass    
 test-armhf-armhf-examine                                     pass    
 test-amd64-i386-examine                                      pass    
 test-amd64-i386-freebsd10-i386                               pass    
 test-amd64-amd64-qemuu-nested-intel                          pass    
 test-amd64-amd64-xl-pvhv2-intel                              pass    
 test-amd64-i386-qemut-rhel6hvm-intel                         pass    
 test-amd64-i386-qemuu-rhel6hvm-intel                         pass    
 test-amd64-amd64-dom0pvh-xl-intel                            pass    
 test-amd64-amd64-libvirt                                     pass    
 test-armhf-armhf-libvirt                                     pass    
 test-amd64-i386-libvirt                                      pass    
 test-amd64-amd64-livepatch                                   pass    
 test-amd64-i386-livepatch                                    pass    
 test-amd64-amd64-migrupgrade                                 pass    
 test-amd64-i386-migrupgrade                                  pass    
 test-amd64-amd64-xl-multivcpu                                pass    
 test-armhf-armhf-xl-multivcpu                                pass    
 test-amd64-amd64-pair                                        pass    
 test-amd64-i386-pair                                         pass    
 test-amd64-amd64-libvirt-pair                                pass    
 test-amd64-i386-libvirt-pair                                 pass    
 test-amd64-amd64-xl-pvshim                                   pass    
 test-amd64-i386-xl-pvshim                                    fail    
 test-amd64-amd64-pygrub                                      pass    
 test-armhf-armhf-libvirt-qcow2                               pass    
 test-amd64-amd64-xl-qcow2                                    pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-armhf-armhf-libvirt-raw                                 pass    
 test-amd64-i386-libvirt-raw                                  pass    
 test-amd64-amd64-xl-rtds                                     pass    
 test-armhf-armhf-xl-rtds                                     pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64-shadow             pass    
 test-amd64-i386-xl-qemuu-debianhvm-amd64-shadow              pass    
 test-amd64-amd64-xl-shadow                                   pass    
 test-amd64-i386-xl-shadow                                    pass    
 test-arm64-arm64-xl-thunderx                                 pass    
 test-amd64-amd64-examine-uefi                                pass    
 test-amd64-i386-examine-uefi                                 pass    
 test-amd64-amd64-libvirt-vhd                                 pass    
 test-arm64-arm64-xl-vhd                                      pass    
 test-armhf-armhf-xl-vhd                                      pass    
 test-amd64-i386-xl-vhd                                       pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Published tested tree is already up to date.



From xen-devel-bounces@lists.xenproject.org Mon Jan 22 09:50:49 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 22 Jan 2024 09:50:49 +0000
Received: from list by lists.xenproject.org with outflank-mailman.669713.1042064 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rRqx7-0000IA-5V; Mon, 22 Jan 2024 09:50:49 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 669713.1042064; Mon, 22 Jan 2024 09:50:49 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rRqx7-0000Hz-31; Mon, 22 Jan 2024 09:50:49 +0000
Received: by outflank-mailman (input) for mailman id 669713;
 Mon, 22 Jan 2024 09:50:47 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=kGu3=JA=web.de=Markus.Elfring@srs-se1.protection.inumbo.net>)
 id 1rRqx5-0000Ha-4x
 for xen-devel@lists.xenproject.org; Mon, 22 Jan 2024 09:50:47 +0000
Received: from mout.web.de (mout.web.de [212.227.15.3])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id b54b34f4-b90b-11ee-9b0f-b553b5be7939;
 Mon, 22 Jan 2024 10:50:43 +0100 (CET)
Received: from [192.168.178.21] ([94.31.87.95]) by smtp.web.de (mrweb006
 [213.165.67.108]) with ESMTPSA (Nemesis) id 1MSIJA-1rYThF27UO-00Sh0e; Mon, 22
 Jan 2024 10:50:29 +0100
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: b54b34f4-b90b-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=web.de; s=s29768273;
	t=1705917029; x=1706521829; i=markus.elfring@web.de;
	bh=+nGU7Loi1Do4zrvl/0l3JM9LGLlkYeGwWtlVmkNopIo=;
	h=X-UI-Sender-Class:Date:Subject:To:Cc:References:From:
	 In-Reply-To;
	b=VWGHCJKZ5HKy2AH+oYWepCu+OuIY6blJAyg/bPpK6HLRSvSs5yxnPOamVrbshYt3
	 uFDRo42NOZQlpWOEVUirGYt63kEPx3Jwf8edReMYZn5S2yrqwHxGCGAEqCUjJ+eGh
	 7HmMcdbfbS7l1C8VpYrGCyqnWjEUe62hkessfmc7JGr7xXBraVh+sskyFcbuCod+/
	 WxpA3XARTvBuVJsVhnHl2ZHDSegqGJTIkI2mg7wEArOFO76vkxglOnvP5V57CvPHj
	 6vixEG8r7EyF0sPjk2YdlOKZdtix2xxslEHjJbPVuf564UoxRCYp60L4i1wnmz93N
	 tWb8kf9WBed/7ntMCw==
X-UI-Sender-Class: 814a7b36-bfc1-4dae-8640-3722d8ec6cd6
Message-ID: <6d40b95e-2ed7-4f32-895e-a2174236ee65@web.de>
Date: Mon, 22 Jan 2024 10:50:23 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [v3] x86/xen: Add some null pointer checking to smp.c
Content-Language: en-GB
To: Kunwu Chan <chentao@kylinos.cn>, xen-devel@lists.xenproject.org,
 kernel-janitors@vger.kernel.org, Boris Ostrovsky
 <boris.ostrovsky@oracle.com>, Borislav Petkov <bp@alien8.de>,
 Dave Hansen <dave.hansen@linux.intel.com>, "H. Peter Anvin" <hpa@zytor.com>,
 Ingo Molnar <mingo@redhat.com>, =?UTF-8?B?SsO8cmdlbiBHcm/Dnw==?=
 <jgross@suse.com>, Thomas Gleixner <tglx@linutronix.de>, x86@kernel.org
Cc: kernel test robot <lkp@intel.com>, LKML <linux-kernel@vger.kernel.org>,
 Ilya Dryomov <idryomov@gmail.com>, Jean Delvare <jdelvare@suse.de>,
 Jonathan Corbet <corbet@lwn.net>
References: <20240119094948.275390-1-chentao@kylinos.cn>
 <26ef811d-214c-4ce4-a9f8-4fa4cfdefe29@web.de>
 <6f25f54f-eecc-4765-bdc4-248674836e77@kylinos.cn>
From: Markus Elfring <Markus.Elfring@web.de>
In-Reply-To: <6f25f54f-eecc-4765-bdc4-248674836e77@kylinos.cn>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-Provags-ID: V03:K1:7PuQIQ+STP1HEpxBb1F71REntJZh+zhVfsHo3QNQ2Y97EaG7Chu
 YZg+NMHWD7a8cWoCqPBaqIuW/1RiZ95h0IExGFidpRCIOSY9cJLbrYPImqSSO+d8zBIdfye
 9szF1wZYZ/itaJHlMQ6w4DJUIsyBBuQ9qZ0nDe2Vb4wVFQ4MwNGbMZ4YvY1TmWAZaA+dkWA
 +S8b9V2h+w2RuVKyoIqlw==
X-Spam-Flag: NO
UI-OutboundReport: notjunk:1;M01:P0:yEsnbDcYv3s=;ZPb2Mu+H2XGola6RbrIcyQWyz/T
 ok93+jBiDKnY1DDXbD0Zifx5nXuoctjgIftPZMgZIr6+J0Ok/V4IQWfIX3rww8eDuhSWmqlvK
 9qJflq3k1x97bT/azeoHOkoWJzI8tXhkHDYdN+ev96ILzZ9EL/wY5GeaUIcQHlekUDOjpfyTR
 OrGxEC3jyfaeGjdDH8Gn9CeDy27YGgHXSOrT+eHHQj77p6Gp0wzaPxB2+rW8TJ2ff2aRsw6aY
 pXIS+5vkwsSPVKxG5GjojJuUvcZl5XVGkNMAQgqX6BqSFIo/GXB/kqFgNwSgNbMM/p0DNdoun
 iaqRQcsiwb/XbIrR7D6zSTkMayqKL86oxZSEbdlX3qNfUOfYRF2wgoQhOxv0lHiPEm/itrbso
 tB7NEyziFnGFmr93Zee7Z9dOaTLbAGuZ/IIHTnsRhvShgIoqHO1fEo4Z5FolxJahE+tmdfxP3
 1opwbsVgSPUTIONZ5Zmwx62rBUYhcvY/vd2w1paAXsD9dE9qBA8O4E4+TLxuUFrUVwpSf63tT
 RKyImNKQvIJMqAmltIcOcrgQpf/85/YxZCnfNsleS1TWANHUv87awcKOhicDB+6uzzTABEHaX
 V9ikk5FvhrtGe6B5f/8qrrzmW/rqFlbbIEk/T3zgJvWuLVL4Hm39kHppviwwcqh3hQAwRSuNW
 Q7B6/h7M+ykbB2NgaxDQKF6DqccJHP1nGAgz4J/5dqXsHJA7/VR4g/gVk+U1eJbX+A6hhlNeH
 h+XVBcSG7JPULvFvS99MaPwQK038pKGKeS8Fzu030ExOECSB2qT8UcQCnl3MwgRb/TWfU+pJu
 V8GAGqQuivpqsX0lj4ceZ5RV8s9BC1V4i1m/BNBYbwiddhzLYE//O2Hp0ptm32iebTaCGkpWr
 qBBVRgCm3h4iXgOrInS6rrAS/SDpbOsiCBz/oZkvu8TtRs9zrtkFfHsozotb0ujHHHsj9xzs1
 GH3CTA==

>> How do you think about to refer to the function name
>> instead of the file name in the patch subject?
>>
> The main goal is to assign a errno to rc. So use 'fail_mem is good to understand.

You responded with information which can fit to the patch body.

How do you think about consequences for a subject variant like the following?

x86/xen: Add some null pointer checks in xen_smp_intr_init()

Regards,
Markus


From xen-devel-bounces@lists.xenproject.org Mon Jan 22 10:04:53 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 22 Jan 2024 10:04:53 +0000
Received: from list by lists.xenproject.org with outflank-mailman.669722.1042076 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rRrAd-0002OE-Hi; Mon, 22 Jan 2024 10:04:47 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 669722.1042076; Mon, 22 Jan 2024 10:04:47 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rRrAd-0002O7-DQ; Mon, 22 Jan 2024 10:04:47 +0000
Received: by outflank-mailman (input) for mailman id 669722;
 Mon, 22 Jan 2024 10:04:46 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=VPlZ=JA=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rRrAc-0002O1-6y
 for xen-devel@lists.xenproject.org; Mon, 22 Jan 2024 10:04:46 +0000
Received: from mail-lj1-x233.google.com (mail-lj1-x233.google.com
 [2a00:1450:4864:20::233])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id aa27e285-b90d-11ee-9b0f-b553b5be7939;
 Mon, 22 Jan 2024 11:04:43 +0100 (CET)
Received: by mail-lj1-x233.google.com with SMTP id
 38308e7fff4ca-2cd8bd6ce1bso28820331fa.1
 for <xen-devel@lists.xenproject.org>; Mon, 22 Jan 2024 02:04:43 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 q6-20020a056638238600b0046ef34ae391sm40671jat.99.2024.01.22.02.04.41
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 22 Jan 2024 02:04:42 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: aa27e285-b90d-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1705917883; x=1706522683; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=x+rf32GmCPQOsHmXK9Mo+KAY16DOZ0NexQtH0ATNr04=;
        b=fzKCfIL4cunAcACBFfjlVe6UMEodH/z69vJFxIc10W6faPwTMRtQSLxNfZZeW8LtwE
         t/A6th/YeRA6fLV7cQwIXjuYi9O+InsXwUrD9o6Cp75zXYbWjlk2RvT5IlGoRk8ae4Yu
         v+u/UQeJGxS5wFefuy7r1bZSGx9iT5SEAZORknyJoO1yX8kpa6VPAWvePBPR4qEbd1vP
         WZClyULtK/GWR1Z9ZCjFN3D8DO2+GzhzQaEFlwexyygw0FwjmNtLlBSjGJ+TYZ8ti7Kz
         58ShdQk5g3zOXsjTIxQ68yHaeXApTPQwKlqhqit48d1o4J7ZEkkoZ1ZayKxg0uQNyC+m
         yEIw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705917883; x=1706522683;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=x+rf32GmCPQOsHmXK9Mo+KAY16DOZ0NexQtH0ATNr04=;
        b=uG3Zmhhw6kUdN3AKEOf1hE6w/tSQuycxBVZ/eq/WsUvnotgjjmAIC6yUSbt40NZmAQ
         jOLk3A4aRE5k9sdfgCLFoqh0NqR2r8MYLsVfdSC7seCelTRxTZZu/jzf1MdYE/Ri/tCT
         YF9Dhz4Js2nF3wk7SrkWTDcVyA7YdlByQBle3NwD39ukY0r1onsLhzHX+z8LGByKXVgI
         tNj5Sqo7FvgQG9CkTarfIWTG1rqR6vrHN2BKuq70elNyP8GBJvJf6y7KkgOKyr58H0bf
         N/fK3SVDwPxYAQnY8KED0cUOuWF4x+JnunLJQlg4TxcFWx0cFrZcAGd+Nl3vbpvwYpAJ
         HjlA==
X-Gm-Message-State: AOJu0YyMx6qpjKsvLgLf0mlUAMPMQJHhDh2E35KaB3aVMDbbJCHgo63z
	TdzQZZmfu3WGrWc4Q/3F6CXsn3VFm23taD4LAtM4ApChwLWX5zhLkUAkqXTIkQ==
X-Google-Smtp-Source: AGHT+IEtoU+NsZeYjTWN2b6KOKmBMMl14Zp9zPWvwhG+e99i4tpHvYbalJCdL35uYwUDTMiXuRJW7g==
X-Received: by 2002:a05:651c:b0e:b0:2cd:f588:8b8 with SMTP id b14-20020a05651c0b0e00b002cdf58808b8mr1116986ljr.107.1705917883147;
        Mon, 22 Jan 2024 02:04:43 -0800 (PST)
Message-ID: <0437c4eb-8438-44a8-a749-aef6c4c93ef0@suse.com>
Date: Mon, 22 Jan 2024 11:04:41 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] coverage: filter out lib{fdt,elf}-temp.o
Content-Language: en-US
To: Anthony PERARD <anthony.perard@citrix.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 George Dunlap <george.dunlap@citrix.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>,
 Javi Merino <javi.merino@cloud.com>, xen-devel@lists.xenproject.org,
 Michal Orzel <michal.orzel@amd.com>
References: <20240118120641.24824-1-michal.orzel@amd.com>
 <8057ae41-43b5-4469-b691-4e7f16b8dd4d@suse.com>
 <e399890c-0299-4ec5-884e-0637ae6cb5b0@perard>
 <9d552e6d-eb5d-4ccf-a35d-a359df7c4478@amd.com>
 <0a1c749b-8169-43b5-9921-961096f8570d@perard>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <0a1c749b-8169-43b5-9921-961096f8570d@perard>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 19.01.2024 16:25, Anthony PERARD wrote:
> On Fri, Jan 19, 2024 at 09:43:30AM +0100, Michal Orzel wrote:
>> Is my understanding correct that by switching from extra-y to targets we are preventing these objects to
>> appear in non-init-objects (and thus having COV_FLAGS appended) while retaining the proper if_changed behavior?
>>
>> According to docs/misc/xen-makefiles/makefiles.rst:
>> Any target that utilises if_changed must be listed in $(targets),
>> otherwise the command line check will fail, and the target will
>> always be built.
> 
> Indeed, and $(extra-y) is added to $(targets) via
> $(targets-for-builtin).
> 
> While switching from $(extra-y) to $(targets) prevents the objects from
> been added to $(non-init-objets), it doesn't matter because "libelf.o"
> is in that variable, so $(COV_FLAGS) is added to $(_c_flags) and its
> value is used in all the prerequisites of "libelf.o" which includes
> "libelf-temp.o" and for example "libelf-dominfo.o". So the only thing
> preventing $(COV_FLAGS) from been added when building "libelf-tools.o"
> for example is that we set `COV_FLAGS:=` for "libelf.o".

Yet doesn't that (again) mean things should actually work as-is, yet
Michal is observing this not being the case?

Jan


From xen-devel-bounces@lists.xenproject.org Mon Jan 22 10:07:31 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 22 Jan 2024 10:07:31 +0000
Received: from list by lists.xenproject.org with outflank-mailman.669730.1042087 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rRrDF-000336-Ud; Mon, 22 Jan 2024 10:07:29 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 669730.1042087; Mon, 22 Jan 2024 10:07:29 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rRrDF-00032z-S3; Mon, 22 Jan 2024 10:07:29 +0000
Received: by outflank-mailman (input) for mailman id 669730;
 Mon, 22 Jan 2024 10:07:28 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=kGu3=JA=web.de=Markus.Elfring@srs-se1.protection.inumbo.net>)
 id 1rRrDE-00031W-I0
 for xen-devel@lists.xenproject.org; Mon, 22 Jan 2024 10:07:28 +0000
Received: from mout.web.de (mout.web.de [217.72.192.78])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 0b06fd13-b90e-11ee-9b0f-b553b5be7939;
 Mon, 22 Jan 2024 11:07:26 +0100 (CET)
Received: from [192.168.178.21] ([94.31.87.95]) by smtp.web.de (mrweb106
 [213.165.67.124]) with ESMTPSA (Nemesis) id 1N1d7i-1qzQGl1nD6-011tRs; Mon, 22
 Jan 2024 11:07:03 +0100
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 0b06fd13-b90e-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=web.de; s=s29768273;
	t=1705918023; x=1706522823; i=markus.elfring@web.de;
	bh=fTg1GKoElQXtI92ElzyjxQkY95Oc2Gw5CPCoF4BKwq8=;
	h=X-UI-Sender-Class:Date:Subject:To:Cc:References:From:
	 In-Reply-To;
	b=XbLTyj35Lb7jl1Yxk5KWnYotJUTzEV/OahrmTGAuvwBNAl3a+VwS5Yj6WbV0eTWT
	 F8XF4+XunIdby/uzCcMOOXrbW1nz0ynfe+q8vz86czFsJHriEmDKJWjHye5gDjekJ
	 3zJdBiB8SvV6FuY74cI9jSzvCGCSRC5rAZdb8vLb9G06jExBKLSY6l4PqdiFcDwB8
	 Ce3nIBc9znPGdYrOIH8xCam1LgCpl7GlXMfteTWW3HyMt7yYNleZj0VLEuSafpBJX
	 LdY5ZefXx197/9mhH7YnobqgSJ8w7SeTv9fyjuS3g01X41Md/kH696KNsDSTb+nmR
	 fDZwscOeNJL4O01/SA==
X-UI-Sender-Class: 814a7b36-bfc1-4dae-8640-3722d8ec6cd6
Message-ID: <b0b1ba48-1d48-4163-afc5-ac92121ee14c@web.de>
Date: Mon, 22 Jan 2024 11:06:57 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [v2] x86/xen: Add some null pointer checking to smp.c
Content-Language: en-GB
To: Dan Carpenter <dan.carpenter@linaro.org>, Kunwu Chan
 <chentao@kylinos.cn>, xen-devel@lists.xenproject.org,
 kernel-janitors@vger.kernel.org
Cc: LKML <linux-kernel@vger.kernel.org>, kernel test robot <lkp@intel.com>,
 Boris Ostrovsky <boris.ostrovsky@oracle.com>, Borislav Petkov
 <bp@alien8.de>, Dave Hansen <dave.hansen@linux.intel.com>,
 "H. Peter Anvin" <hpa@zytor.com>, Ingo Molnar <mingo@redhat.com>,
 =?UTF-8?B?SsO8cmdlbiBHcm/Dnw==?= <jgross@suse.com>,
 Thomas Gleixner <tglx@linutronix.de>, x86@kernel.org,
 Jonathan Corbet <corbet@lwn.net>
References: <20240117090018.152031-1-chentao@kylinos.cn>
 <1705655941162581.825.seg@mailgw>
 <517fae75-c4e7-4576-81ff-6a14a3eb9cd7@kylinos.cn>
 <dfb6de51-3ebc-41fc-a750-cf5ca2ac05aa@moroto.mountain>
From: Markus Elfring <Markus.Elfring@web.de>
In-Reply-To: <dfb6de51-3ebc-41fc-a750-cf5ca2ac05aa@moroto.mountain>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
X-Provags-ID: V03:K1:TVWkH58C8d+xxHWHzHB64epa3s2plijd4rtx+6kS7ddQj8Suzvv
 naMuUTuD5EWLL2maurgo9AVz+dfWzvKtULBa/5Ve/rZFZcwKc9G46OszjBW7AP9yBR2RipX
 lK43Pd+vVigt/FjZRtStKTTDI5ju3W3XLb/WimEdl4OICVTk1/YmHkjTr/9CBQ1xYQ94yFA
 aDAE639lz9NSS4qWe7X9A==
X-Spam-Flag: NO
UI-OutboundReport: notjunk:1;M01:P0:dU6CzvMVSpk=;fSHtYB/+Ly6z8pY0YGpGVG3ymD3
 S5R+AQd74kyXPO7x6bf/abdvDEWT2fFiA5grBn0s2z1asUGulEyqknQZVKJwf0tKu2SFstgor
 C/k1kCa4Q1jtgtl3ehPa0kPjTNaru70z78epFuFQTTS6fKSCe3ZrV7ekGai8+G8Hk7yOgiQXU
 FgIixZkdWM3rkJ54x8VUy6DnkxGN1mIkWIVQT87i2xg/BRetp7hS+LYad+RpxlHzxvABYaFMS
 yTWm8/CYgyNkKb64NqBPX/4EETyRZmoh4Pg/ONAtpFP6K6RRshD3XLN+LTIsf/dt4hPZ/OO6K
 zhJ3Jcd1jHt3rZbRkLwlP1aQTms2E3DXa/sPOTYIHuawGiZL43TXPy1nvG5Qu5XUD+uLR3UcV
 MSUBMqfOBKib4NuW2aKzkwhtbtHAoj5OPdJkdO0KL00ZXjJYha9ar9z4FwFEyZ1uJuyeyouRP
 /RqzuWH97IyQeevzIJ4G4ujdTPtemaWdj8C97cgBcFTGQaxF+AjXHFLnDnOeGwka7ehoySB4X
 WEQB4wDsnXTCEppwuZwANErLkf/0Pvy94yrRC2T6DmIt6v2LaBYQMXpvj02MO/hbZgv3mS7VR
 WC+u/TOo2Es1jI67Vg0HD/nGJCfItmhF37j4A2V3sXpaVksjIlhhi0btsiu+4OQdcvfv5633N
 daXMmq0nbOUPsumFU3SHFodudI05p3k4JBAYBudav4Z2nhG+sPc9ZQWskqP+FkFUVkln+jFT3
 nhXJMMD1BxRr77e5AdkLzRBhX7B63C6MBSR9TfPXbS0+4aAQs2fzLWb9SsX3rDAPwldNNrgpa
 C3enyvAYKhgNNxSEoKwSHU0BTHyxrTSyvXXnSABRXE+7SqHuxuNl5W1vih1+iMORigNwPmFqs
 w0CgqXRGAAG4XNsHi8qw5xoGBkcwrbwWz964mjZpoza6mVBLAMBLcTHqiNvV8IEoGtqzH/hV/
 lNYuYA==

>>> How do you think about to use another label like =E2=80=9Ce_nomem=E2=
=80=9D?
>> I'll add a new label to simply the code.
>
> I'm not a Xen maintainer so I can't really comment on their style choice=
s.

Linux contributors can discuss various implementation details.


> However, as one of the kernel-janitors list people, I would
> say that not everyone agrees with Markus's style preferences.

Can a corresponding document be improved accordingly?

Centralized exiting of functions
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Do=
cumentation/process/coding-style.rst?h=3Dv6.8-rc1#n526

Do you find a related information source helpful?
https://wiki.sei.cmu.edu/confluence/display/c/MEM12-C.+Consider+using+a+go=
to+chain+when+leaving+a+function+on+error+when+using+and+releasing+resourc=
es

Regards,
Markus


From xen-devel-bounces@lists.xenproject.org Mon Jan 22 10:15:43 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 22 Jan 2024 10:15:43 +0000
Received: from list by lists.xenproject.org with outflank-mailman.669733.1042098 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rRrL6-0004oI-OU; Mon, 22 Jan 2024 10:15:36 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 669733.1042098; Mon, 22 Jan 2024 10:15:36 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rRrL6-0004oB-Kc; Mon, 22 Jan 2024 10:15:36 +0000
Received: by outflank-mailman (input) for mailman id 669733;
 Mon, 22 Jan 2024 10:15:35 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=VPlZ=JA=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rRrL5-0004o5-AZ
 for xen-devel@lists.xenproject.org; Mon, 22 Jan 2024 10:15:35 +0000
Received: from mail-lj1-x234.google.com (mail-lj1-x234.google.com
 [2a00:1450:4864:20::234])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 2d3edd6e-b90f-11ee-9b0f-b553b5be7939;
 Mon, 22 Jan 2024 11:15:33 +0100 (CET)
Received: by mail-lj1-x234.google.com with SMTP id
 38308e7fff4ca-2cddb11b2e2so35194901fa.1
 for <xen-devel@lists.xenproject.org>; Mon, 22 Jan 2024 02:15:33 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 c25-20020a5d9759000000b007bf78513320sm2218986ioo.1.2024.01.22.02.15.31
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 22 Jan 2024 02:15:32 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 2d3edd6e-b90f-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1705918532; x=1706523332; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:from:to:cc:subject:date:message-id:reply-to;
        bh=HbjozXWzpx1hqffCkCwx2d/eeX4UlVOkuwO/uwYb+E0=;
        b=gA34OfAUZ1AfyomxVvBmB/3+FGiuVpyma1eMCVj5I2JI83dcZHxcHDEFh/chT0eBE5
         hmhBGwd723llcLdowbgeuaSaWxfts6xvNFy9/D0dvDXLc7wsQg1WYh7zqb1BB3CNbgLL
         b2jq8IJ0JiZGKairzDyu8Jdrk8P4ofs7yIQN1vF4YfucyjwO2YuO8NrPr6ZZ7m3ookNX
         /Jh6eyDWCT+IPcF8fXbbQtpoLplk22b1LLAqfqM1Laynt/TQNBsImKIGEnnuz7exzQh+
         n8sel7c032j/okD6VV5dL3w6CguYVnUw6cLYIBU3TzGDuRmE1XC4ezMk01ygY8tacL2E
         TXqw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705918532; x=1706523332;
        h=content-transfer-encoding:in-reply-to:autocrypt:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to;
        bh=HbjozXWzpx1hqffCkCwx2d/eeX4UlVOkuwO/uwYb+E0=;
        b=AeC4gv61HKITJYKR8jSRWkZlOXBuFycUutdEUt2uTOMe2KkdR8pX9akqaxbbIc1/NZ
         IR95C0bm/eu7SZZD6YfDGZQY6Xq7gQHNe/eYsX/ZOEdNRn3DxLnC/7OLGQbWo0ay655J
         SsLlFDc7tSmvoMrARaCJ1nUfJax6bX9Wr5jEtazNGaFHNLR+VhGd8flrs06dlKywFp1c
         DQXs0VG+HXFOw05pr8DcP9SUVKMF7ITVyrkFaxLXCJwao2sEGZHY7q+EDiCURpkTLrgP
         NbT842+YfiV250OdFNx7An37cjQNIcXP8tiV78sJkPekPX7L3gxlAiWGGCbAcbf1+dK9
         WPRA==
X-Gm-Message-State: AOJu0Yww0iho/ejkJsfp8SzlGJV26ujXQnB5Kkn8xneayOOb8tyAn12Z
	O+OmcmDBJRjUrLHaAKtpJvajOEKRMCehbUOtWQV71Tm3IbwIjk6eP04mrT1cqw==
X-Google-Smtp-Source: AGHT+IEThq9FD8Q/ImCmARC2lxADcNrcuZuZenUuKTpn3dtGoC7nubZNNPusVRaqehc7B7BFea5C9g==
X-Received: by 2002:a2e:3806:0:b0:2cd:1ca6:87bf with SMTP id f6-20020a2e3806000000b002cd1ca687bfmr1625550lja.8.1705918532556;
        Mon, 22 Jan 2024 02:15:32 -0800 (PST)
Message-ID: <fb6c7b54-d63d-4e83-ba33-58dc61f4528f@suse.com>
Date: Mon, 22 Jan 2024 11:15:29 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: Community Process Group - Proposal
To: Kelly Choi <kelly.choi@cloud.com>
Cc: xen-devel@lists.xenproject.org, committers@xenproject.org,
 Yann Dirson <yann.dirson@vates.tech>
References: <CAO-mL=yvVWjnOHSFSqcrknoXOqk-N3JY76qObQnzftrkmsq6xw@mail.gmail.com>
 <509c9419-650a-4a7c-83e4-7a5204c53645@vates.tech>
 <CAO-mL=zL2gknk5OE0NBcQjoq8sE=2c=Zs+9KhzKMxKcwtx4wpA@mail.gmail.com>
Content-Language: en-US
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <CAO-mL=zL2gknk5OE0NBcQjoq8sE=2c=Zs+9KhzKMxKcwtx4wpA@mail.gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 19.01.2024 17:37, Kelly Choi wrote:
> On Thu, Jan 18, 2024 at 10:09 AM Yann Dirson <yann.dirson@vates.tech> wrote:
>> On 1/17/24 18:10, Kelly Choi wrote:
>>> A survey was recently conducted to identify how the community as a whole
>>> feels about a certain situation. It was not intended to ban specific
>>> wording or create a policy to do so, but more to give context that the
>>> community has a wide range of ideas, and individuals may agree and
>>> disagree a lot more frequently than we as individuals might think. It
>>> helps us understand that as a community there are many situations where
>>> it is not clear. As such, the results indicated a very even split among
>>> the community, which indicates a larger problem as we may not always
>>> come to agreement.
>>>
>>> There is obvious frustration with how certain matters are handled, as
>>> some members may want the project to move faster, whereas others like to
>>> take a cautious approach. Given we are an open source project,
>>> differences in opinion are likely to happen and what we don’t want to do
>>> is cause further frustration.
>>>
>>> *This is where I would like to propose the idea of a ‘Community Process
>>> Group’.*
>>
>> That made me look for a list of official roles in the project, which I
>> found at [0].  How up-to-date is this list?  The Release Manager role is
>> mentioned there but not described, the Community Manager role is not
>> mentioned at all, and the only link to get project leadership info [1]
>> redirects to unrelated information.
>>
>> [0] https://xenproject.org/developers/governance/#roles-local
>> [1] https://xenproject.org/developers/teams/hypervisor
>>
>> I feel it would be necessary to have a clear view on the current
>> situation, before adding more structures.
>>
> 
> Aspects of the information on the website are outdated and do require
> reviewing as part of a wider governance update.
> However, the majority of the information such as the roles of committers is
> still accurate. In this specific instance, the CPG would act fairly similar
> to a project lead in terms of progressing the project forward. Rather than
> it being one person, it will be a collective group of elected members. From
> my understanding, we haven't had a project lead for a very long time within
> the project and this was before the governance was formalized. If the
> community is happy, we can replace the project lead role with the CPG.

It was my understanding that with the departure of Keir, it was intentional
that the "project lead" became a team (the committers) rather than again a
(then largely randomly selected) individual. If that understanding of mine
matches that of others, I don't think there's a need to change anything.

Jan


From xen-devel-bounces@lists.xenproject.org Mon Jan 22 10:32:51 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 22 Jan 2024 10:32:51 +0000
Received: from list by lists.xenproject.org with outflank-mailman.669739.1042108 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rRrbe-0008BF-3q; Mon, 22 Jan 2024 10:32:42 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 669739.1042108; Mon, 22 Jan 2024 10:32:42 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rRrbe-0008B8-0s; Mon, 22 Jan 2024 10:32:42 +0000
Received: by outflank-mailman (input) for mailman id 669739;
 Mon, 22 Jan 2024 10:32:40 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=VPlZ=JA=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rRrbc-0008Ax-L0
 for xen-devel@lists.xenproject.org; Mon, 22 Jan 2024 10:32:40 +0000
Received: from mail-lj1-x22e.google.com (mail-lj1-x22e.google.com
 [2a00:1450:4864:20::22e])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 90de7a58-b911-11ee-98f2-6d05b1d4d9a1;
 Mon, 22 Jan 2024 11:32:39 +0100 (CET)
Received: by mail-lj1-x22e.google.com with SMTP id
 38308e7fff4ca-2ccbc328744so35172981fa.3
 for <xen-devel@lists.xenproject.org>; Mon, 22 Jan 2024 02:32:39 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 a5-20020a92a305000000b0036062f40c51sm7218735ili.71.2024.01.22.02.32.37
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 22 Jan 2024 02:32:38 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 90de7a58-b911-11ee-98f2-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1705919559; x=1706524359; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=8eCn3LtHsmObdItr2D7NIZIMjxkS5zGjMECDjuSe5YE=;
        b=TXNccssIo2RVGPJSPQ8+sK6aNQm1/5bV4ro+RthYq89WmwZBIpT8QxB2GzXTLrHutu
         j0hFCT86rhnGai0K0S6JjzGFZTzDzwB8HVeObAm+87Rff7i2Rvz41ESElsmiRb0x5zYX
         XXk9C26nJ70ftyXlXpjSYEdGhQ19WuT2TdWfuDRnHsWgUA5FPq6EHUHAZfIxWgsaDeny
         xKhPlgxHAqTLJL7tj3nlb8lZsjUGjkpub8IprpS/Qliq8m5ekJj2Qr27O6WOmvLZF0BK
         aabEgQuZHa/OCwzDzIMEZZvoMGURnS08+Gn5aiu9k24q+2x0UiVxESMuYG736fZzLsVl
         0gxw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705919559; x=1706524359;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=8eCn3LtHsmObdItr2D7NIZIMjxkS5zGjMECDjuSe5YE=;
        b=vWR0Tt1tduaL+U6DXLX8hY2qVktsAdNLyVlWaSZIOYMKodxxaKV/9Z3Cb08NEYuvdj
         m3W/f0cc7lWy46UFKbfBngEFXvL1oDbwPyu08Nw1qni7kQw0Z+dhboQBwRllMVJf0pZC
         w7yMT1aN0z5Mt+i+tLWeHswHmSnLiuR+NoYKhs8W3iZsDq4gaztKU+Kk7CdszXf3ohyA
         cgNsSUKOhoKK/XHtmHdKxUqsQMCsBIaPvKxOkpBv1ALz/cUBLbmvAUeEJUlTV3uu28la
         sRA+eZuxaQl9V61DlRBZpG0Dq2INA2ywL+OGhdHg768ZaSkn8VZ2OsheABrtS2uW5zO4
         PWIg==
X-Gm-Message-State: AOJu0Yxovqf7eJjtcTUfzR1HF+mZ6nYpsCPmVj+/GqwKqEy7nsSMTgYf
	/ibZ8y6fOicHZRbU+C9iHyU/XdWGzbBITEi/GvGsEeLrTomUC7vZSfn4yMpYPgCWoSzL6ccyQrU
	=
X-Google-Smtp-Source: AGHT+IHjVP4G/4LSSReixmB3ajF8kuzS1dKxIQnVi3oY6HJtTxxbFIY/4g+an7rq5kqqcrDI4rIACA==
X-Received: by 2002:a2e:9e1a:0:b0:2cc:fd69:8073 with SMTP id e26-20020a2e9e1a000000b002ccfd698073mr1544156ljk.13.1705919558687;
        Mon, 22 Jan 2024 02:32:38 -0800 (PST)
Message-ID: <5309e7d3-7b3c-4522-99dc-bbd7734aeb34@suse.com>
Date: Mon, 22 Jan 2024 11:32:35 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: Community Process Group - Proposal
Content-Language: en-US
To: Kelly Choi <kelly.choi@cloud.com>
Cc: committers@xenproject.org, advisory-board@lists.xenproject.org,
 xen-devel@lists.xenproject.org
References: <CAO-mL=yvVWjnOHSFSqcrknoXOqk-N3JY76qObQnzftrkmsq6xw@mail.gmail.com>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <CAO-mL=yvVWjnOHSFSqcrknoXOqk-N3JY76qObQnzftrkmsq6xw@mail.gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 17.01.2024 18:10, Kelly Choi wrote:
> Hi everyone,
> 
> I've spent a bit of time talking to various individuals and the advisory
> board about setting up a new Community Process Group.
> 
> A survey was recently conducted to identify how the community as a whole
> feels about a certain situation. It was not intended to ban specific
> wording or create a policy to do so, but more to give context that the
> community has a wide range of ideas, and individuals may agree and disagree
> a lot more frequently than we as individuals might think. It helps us
> understand that as a community there are many situations where it is not
> clear. As such, the results indicated a very even split among the
> community, which indicates a larger problem as we may not always come to
> agreement.
> 
> There is obvious frustration with how certain matters are handled, as some
> members may want the project to move faster, whereas others like to take a
> cautious approach. Given we are an open source project, differences in
> opinion are likely to happen and what we don’t want to do is cause further
> frustration.
> 
> *This is where I would like to propose the idea of a ‘Community Process
> Group’.*
> 
> A CPG can help as they will be able to advise members on similar issues
> regarding community processes or appeals and decide on the best way
> forward. To help with this process, I have consulted with various
> individuals including some committers and conduct team members.
> 
> *What is a CPG’s purpose?*
> In the first instance, we would expect an informal vote resolves most
> disagreements. However, there will be certain circumstances where the
> outcome is not always agreed on.
> 
> A CPG will be your second point of call, where you can escalate matters
> quickly for a democratic solution.

Between informal voting and this "second point of call", where does
formal voting go?

> Their purpose is to resolve process issues and informal vote appeals to
> avoid matters going to a formal vote, but also act as a representative on
> behalf of others in the community on future matters.
> 
> For example:
> 
>    - Naming conventions
>    - Whether feedback requesting changes on a patch series is acceptable
>    - How to move forward in case of non-actionable feedback to a patch
>    series
>    - How to move forward when a contributor or reviewer has not been
>    responsive
>    - Policy questions not related to the code of conduct
> 
> *What is their role and responsibility?*
> 
> The CPG has the authority to propose a resolution to situations where there
> are disagreements, that don’t involve large technical decisions. Their
> decision proposed should be accepted as final since members will have
> discussed the best steps and come to a consensus vote.
> 
> The CPG does not aim to replace the committers' authority or the advisory
> board but instead holds the authority to make decisions that are in the
> best interest of the community in relation to processes. Committers still
> hold the power should there be a formal escalation regarding technical
> decisions, but this would be extremely rare. Advisory Board members hold
> the final power regarding project and business-wide decisions.

Nevertheless it doesn't become clear to me how adding yet another authority
besides the committers will actually help.

> *How are members selected?*
> The CPG will be composed of 5 randomly selected members in total.
> An odd number has been purposely selected to avoid an impasse during
> decisions.
> 
> The criteria:
> Individual members must be active contributors and are willing to help the
> community succeed. As such they must be a part of the following groups:
> 
>    - Committers
>    - Active Maintainers: maintainers with >= 20 reviews in the last 2
>    releases
>    - Active Contributors: contributors with >= 10 commits in the last 2
>    releases

I'm afraid I can't leave this uncommented, as matching a common pattern
I'm generally unhappy with. Whatever the numbers you select in such
criteria, they'll open up an easy road for faking. At the same time it
of course is difficult to come up with any non-numeric or not-only-
numeric criteria. For example, I'd be heavily inclined to ask that
"non-trivial" be added to both of the numbers. Yet then there arises a
judgement issue: What's non-trivial can be entirely different
depending on who you ask.

What definitely needs clarifying is what "review" is: Are R-b tags
counted, or is it the number of replies sent commenting on patches?

> Future rotations of CPG members:
> New members will be selected randomly for each new release to ensure
> fairness.
> 
> *Expectations*
> CPG members are expected to use their best judgement of what is best for
> the community in terms of conflict resolution and process improvements.
> They can propose an outcome that progresses the project forward.
> The CPG is also expected to address wider concerns, feedback, and ideas
> during a monthly meeting with all community members.
> 
> For example:
> 
>    - If someone is displaying repeated concerning behaviour that disrupts
>    the community, members can ask the CPG for help on a solution. (This is
>    different from a code of conduct violation which would be for serious
>    offences only.)
>    - Help drive discussions on how much we deviate from technical
>    specifications
> 
> *Next steps*
> Given this suggestion is a big change in what I hope is a positive
> direction, we will require your feedback and a final formal vote on the
> process, before it is implemented into the governance policies. The
> specific wording can be decided after this proposal.
> 
> This will hopefully help us overcome some of the frustrations and issues we
> have seen in the community from a difference in opinion as a collective
> discussion will now be made. Should we need to, the process can be reviewed
> to improve at later stages.

Related to what I said earlier: Should it turn out that disagreement within
the CPG is difficult to deal with, will we then gain yet another authority?
Imo before adding such a new instance, it wants properly sorting
- why with what we already have we can't deal with the (supposedly few)
  situations, and
- in how far introducing a new instance will (likely) once and for all
  avoid similar situations arising again, just one layer up (i.e. to make
  sure there's no scalability issue, due to proliferation of instances).

Jan


From xen-devel-bounces@lists.xenproject.org Mon Jan 22 10:46:22 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 22 Jan 2024 10:46:22 +0000
Received: from list by lists.xenproject.org with outflank-mailman.669745.1042121 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rRron-0001yl-Ca; Mon, 22 Jan 2024 10:46:17 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 669745.1042121; Mon, 22 Jan 2024 10:46:17 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rRron-0001ye-9e; Mon, 22 Jan 2024 10:46:17 +0000
Received: by outflank-mailman (input) for mailman id 669745;
 Mon, 22 Jan 2024 10:46:16 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=aBCN=JA=cloud.com=george.dunlap@srs-se1.protection.inumbo.net>)
 id 1rRrol-0001yY-PQ
 for xen-devel@lists.xenproject.org; Mon, 22 Jan 2024 10:46:16 +0000
Received: from mail-lj1-x22f.google.com (mail-lj1-x22f.google.com
 [2a00:1450:4864:20::22f])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 7645e994-b913-11ee-98f2-6d05b1d4d9a1;
 Mon, 22 Jan 2024 11:46:13 +0100 (CET)
Received: by mail-lj1-x22f.google.com with SMTP id
 38308e7fff4ca-2ccb4adbffbso31471671fa.0
 for <xen-devel@lists.xenproject.org>; Mon, 22 Jan 2024 02:46:13 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 7645e994-b913-11ee-98f2-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1705920373; x=1706525173; darn=lists.xenproject.org;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:from:to:cc:subject:date
         :message-id:reply-to;
        bh=tpaStjLxvJUUu0YvR7pAgb1O4F7RTYoBZPAsf8mUs/E=;
        b=OjTvjHKnGh7CVTGwbkm/ip5igXDigK3KGRktN6nNGWpSsY3KROZn0a8mt8AwdY/Anv
         GB5mDs+6SwCi7rSLZruEfFxmB4ZBukzjLieiQJdqxSulZ5bNs+9kEC8tfqHLeb/AI91Z
         bXLsFQVL52ebWzpzLp9bfX8a9nrcTIS8/c/Ik=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705920373; x=1706525173;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to;
        bh=tpaStjLxvJUUu0YvR7pAgb1O4F7RTYoBZPAsf8mUs/E=;
        b=cu8rJQD25lqx99cZQPg+FgLRVh03bssUwNC3Yvui7Fh/h4DBsrxNcAjqEark3dSP0t
         QysZa9YtJiZ7MHh2eoWFjNmkmnljmpUFDzbFCIy6wRnDP/+OVPTXc3xZS3TjOOGIs7u9
         f+iMXoRYlb1tF0/Hz37Un/SrfTli3N3LpY7n5nnHAr1Bkfx7ABkPfus2cJjo5qsFem2G
         AqLaJoZpjkkq5omP0PWzH+w3w6f5dEmyYcfC1CtDAFu4L59a9YaQA3GMiHQgtZGulUVJ
         ASISqnA01mFvyvABWOJ5Vr0pGKWxotw+YMJ7N0UCNSnGZI4TxC1lrMu5YLvAOfBzkGHX
         w9iQ==
X-Gm-Message-State: AOJu0YyJPVCnhh2E3QRWeKPSoUlBCT2+o/knqOVBJhiMZ+Wj8GOrdD0V
	/VikcQmd+HH4Pvt6Eu6DZ9zim/Kj+vJU6qDPzBPccoiMV5afNyxk5p5sJuq1ABBa+341jnQu6WN
	LZGWODDBR1NEIKpdiaoOX/u5ORValVtTfPT1sOQ==
X-Google-Smtp-Source: AGHT+IFMI4L+uF/xlAFxy0ppzrwJL6D4Xwm2yGL6Ny3VBmmyEAsdbNrjamgcdFs7cCP2YATjgrDpbSkwWESSn3CDxT0=
X-Received: by 2002:a05:6512:ea6:b0:50f:f9c4:4974 with SMTP id
 bi38-20020a0565120ea600b0050ff9c44974mr881547lfb.26.1705920372906; Mon, 22
 Jan 2024 02:46:12 -0800 (PST)
MIME-Version: 1.0
References: <838ff75f-1352-4d3c-9bc1-c7a57c828231@onlineschubla.de>
 <4cddfd89-f195-4a50-a14d-b86121414e56@onlineschubla.de> <f8f39239-ea95-4fc7-9abe-6ca005eb02d2@onlineschubla.de>
 <ZarcWQ6Ugwowy050@mattapan.m5p.com>
In-Reply-To: <ZarcWQ6Ugwowy050@mattapan.m5p.com>
From: George Dunlap <george.dunlap@cloud.com>
Date: Mon, 22 Jan 2024 10:46:01 +0000
Message-ID: <CA+zSX=Y=BsVEp3o6jRprn5sntWVA0Z6wNXUxtffDN+=fPv_Fzg@mail.gmail.com>
Subject: Re: Xen 4.18rc/ARM64 on Raspberry Pi 4B: Traffic in DomU crashing
 Dom0 when using VLANs
To: Elliott Mitchell <ehem+xen@m5p.com>
Cc: Paul Leiber <paul@onlineschubla.de>, xen-devel@lists.xenproject.org, 
	Dario Faggioli <dfaggioli@suse.com>, Jan Beulich <jbeulich@suse.com>, 
	Stefano Stabellini <sstabellini@kernel.org>, Julien Grall <julien@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

On Fri, Jan 19, 2024 at 8:32=E2=80=AFPM Elliott Mitchell <ehem+xen@m5p.com>=
 wrote:
>
> On Sun, Jan 14, 2024 at 10:54:24PM +0100, Paul Leiber wrote:
> >
> > Am 22.10.2023 um 07:42 schrieb Paul Leiber:
> > > Am 13.10.2023 um 20:56 schrieb Paul Leiber:
> > >> Hi Xen developers list,
> > >>
> > >> TL;DR:
> > >> ------
> > >>
> > >> Causing certain web server traffic on a secondary VLAN on Raspberry =
Pi
> > >> under vanilla Debian/UEFI in combination with Xen leads to complete
> > >> system reboot (watchdog triggering for Dom0). Other strange things a=
re
> > >> happening.
> > >>
> > >> Description:
> > >> ----------
> > >>
> > >> I recently set up Xen (self compiled, Version 4.18-rc) on a Raspberr=
y
> > >> Pi 4B (on vanilla Debian Bookworm, UEFI boot mode). Until some time
> > >> ago, everything worked well with Dom0, one DomU and one bridge.
> > >>
> > >> Then I wanted to actually make use of the virtualization and started
> > >> to set up a second Debian Bookworm DomU (using xen-create-image) for
> > >> monitoring my systems with zabbix (a webserver based system monitori=
ng
> > >> solution). The bridge used for this setup was the device bridging th=
e
> > >> hardware NIC. I installed zabbix, set it up, and everything went wel=
l,
> > >> I could access the web interface without any problem.
> > >>
> > >> Then I set up VLANs (initally using VLAN numbers 1 and 2) to separat=
e
> > >> network traffic between the DomUs. I made the existing device bridge
> > >> VLAN 1 (bridge 1) and created a secondary device for bridging VLAN 2
> > >> (bridge 2). Using only bridge 1 / VLAN 1 everything works well, I ca=
n
> > >> access the zabbix web interface without any noticeable issue. After
> > >> switching the zabbix DomU to VLAN 2 / bridge 2, everything seemingly
> > >> keeps on working well, I can ping different devices in my network fr=
om
> > >> the zabbix DomU and vice versa, I can ssh into the machine.
> > >>
> > >> However, as soon as I remotely access the zabbix web interface, the
> > >> complete system (DomUs and Dom0) becomes unresponsive and reboots
> > >> after some time (usually seconds, sometimes 1-2 minutes). The reboot
> > >> is reliably reproducable.
> > >>
> > >> I didn't see any error message in any log (zabbix, DomU syslog, Dom0
> > >> syslog) except for the following lines immediately before the system
> > >> reboots on the Xen serial console:
> > >>
> > >> (XEN) Watchdog timer fired for domain 0
> > >> (XEN) Hardware Dom0 shutdown: watchdog rebooting machine
> > >>
> > >> As soon as I change the bridge to bridge 1 (with or without VLAN
> > >> setup), the web interface is accessible again after booting the zabb=
ix
> > >> DomU, no reboots.
> > >>
> > >> So I assume that causing specific traffic on the virtual NIC when
> > >> using a VLAN setup with more than one VLAN under Xen makes the Dom0
> > >> system hard crash. Of course, there might be other causes that I'm n=
ot
> > >> aware of, but to me, this seems to be the most likely explanation
> > >> right now.
> > >>
> > >> What I tried:
> > >> -------------
> > >>
> > >> 1. I changed the VLAN numbers. First to 101, 102, 103 etc. This was
> > >> when I noticed another strange thing: VLANs with numbers >99 simply
> > >> don't work on my Raspberry Pi under Debian, with or without Xen. VLA=
N
> > >> 99 works, VLAN 100 (or everything else >99 that I tried) doesn't wor=
k.
> > >> If I choose a number >99, the VLAN is not configured, "ip a" doesn't
> > >> list it. Other Debian systems on x64 architecture don't show this
> > >> behavior, there, it was no problem to set up VLANs > 99. Therefore,
> > >> I've changed the VLANs to 10, 20, 30 etc., which worked. But it didn=
't
> > >> solve the initial problem of the crashing Dom0 and DomUs.
> > >>
> > >> 2. Different bridge options, without noticable effect:
> > >> bridge_stp off      # dont use STP (spanning tree proto)
> > >> bridge_waitport 0   # dont wait for port to be available
> > >> bridge_fd 0         # no forward delay
> > >>
> > >> 3. Removing IPv6: No noticable effect.
> > >>
> > >> 4. Network traffic analysis: Now, here it becomes _really_ strange. =
I
> > >> started tcpdumps on Dom0, and depending on on which interface/bridge
> > >> traffic was logged, the problem went away, meaning, the DomU was
> > >> running smoothly for hours, even when accessing the zabbix web
> > >> interface. Stopping the log makes the system crash (as above, after
> > >> seconds up to 1-2 minutes) reproducably if I access the zabbix web
> > >> interface.
> > >>
> > >> Logging enabcm6e4ei0 (NIC): no crashes
> > >> Logging enabcm6e4ei0.10 (VLAN 10): instant crash
> > >> Logging enabcm6e4ei0.20 (VLAN 20): no crashes
> > >> Logging xenbr0 (on VLAN 10): instant crash
> > >> Logging xenbr1 (on VLAN 20): no crashes
> > >>
> > >> I am clinging to the thought that there must be a rational explanati=
on
> > >> for why logging the traffic on certain interfaces/bridges should avo=
id
> > >> the crash of the complete system, while logging other
> > >> interfaces/bridges doesn't. I myself can't think of one.
> > >>
> > >> I checked the dumps of enabcm6e4ei0.10 and xenbr0 (where the system
> > >> crashes) with wireshark, nothing sticks out to me (but I am really n=
o
> > >> expert in analyzing network traffic). Dumps can be provided.
> > >>
> > >> 5. Watchdog: I tried to dig deeper into the cause for the watchdog
> > >> triggering. However, I didn't find any useful documentation on the w=
eb
> > >> on how the watchdog works or how to enable logging.
> > >>
> > >> 6. Eliminating Xen as cause: I booted the Debian system (which in Xe=
n
> > >> setup would be Dom0) without Xen and set it up to use the VLAN 20
> > >> bridge (the same that leads to a reboot when using it in the DomU) a=
s
> > >> primary network interface. Everything seemed to be working, I could
> > >> download large files from the internet without any problem. Setting =
up
> > >> Zabbix on the base Debian system showed that the same setup (VLANs 1=
0
> > >> and 20, bridges 1 and 2, using bridge 2 as interface for Zabbix)
> > >> without Xen is working reliably, no reboots. This points to some Xen
> > >> related component being the root cause, I think.
> > >>
> > >> 7. Eliminating Apache as root cause: Reloading the Apache starting
> > >> page hosted on DomU several times per second didn't lead to a reboot=
.
> > >>
> > >> 8. Recompiling Xen: Independent of which Xen master branch version I
> > >> was using (all 4.18), the behavior was the same. I didn't get Xen
> > >> working on ARM64/UEFI in version 4.17.
> > >>
> > >> Current situation:(XEN) d3v0 Unhandled SMC/HVC: 0x84000050
> > (XEN) d3v0 Unhandled SMC/HVC: 0x8600ff01
> > (XEN) d3v0: vGICD: unhandled word write 0x000000ffffffff to ICACTIVER0
> > (XEN) common/grant_table.c:1909:d3v0 Expanding d3 grant table from 1 to
> > 2 frames
> > (XEN) common/grant_table.c:1909:d3v0 Expanding d3 grant table from 2 to
> > 3 frames
> > (XEN) common/grant_table.c:1909:d3v0 Expanding d3 grant table from 3 to
> > 4 frames
> > >> ------------------
> > >>
> > >> I am out of ideas what to do next. Everything that was recommended t=
o
> > >> me on xen-users didn't lead to significant insight or solve the prob=
lem.
> > >>
> > >> I'd appreciate any hints how to troubleshoot this and/or how to
> > >> proceed otherwise.
> > >
> > > O.k., let's try to break that issue down.
> > >
> > > Firstly, how can I get more information on why the Xen watchdog
> > > triggers? Is there documentation? Are there any logs? I couldn't find
> > > anything useful with my search skills.
> > >
> >
> > After some delay, I have picked up the Raspberry Pi again, built Xen
> > 4.19-unstable, with the same result: Reboot of the complete system afte=
r
> > the Dom0 watchdog triggering when accessing the Zabbix content on a
> > webserver on DomU.
> >
> > I still would like to find out what's going wrong here, but I have no
> > idea what to do. I'd appreciate any hint.
> >
> > Not knowing if it helps, I added Xen logs from boot until Dom0
> > crash/reboot below.
> >
> > Loading Xen xen ...
> > Loading Linux 6.1.0-17-arm64 ...
> > Loading initial ramdisk ...
> > Using modules provided by bootloader in FDT
> > Xen 4.19-unstable (c/s Fri Jan 12 11:54:31 2024 +0000
> > git:1ec3fe1f66-dirty) EFI
> > loader
> >   Xen 4.19-unstable
> > (XEN) Xen version 4.19-unstable (root@lan.onlineschubla.de) (gcc (Debia=
n
> > 12.2.0-
> >
> >
> >                             14) 12.2.0) debug=3Dy Sun Jan 14 21:46:34 C=
ET 2024
> > (XEN) Latest ChangeSet: Fri Jan 12 11:54:31 2024 +0000 git:1ec3fe1f66-d=
irty
> > (XEN) build-id: babb03cb6107fc46f7d8969142ccd6772a1133c3
> > (XEN) Console output is synchronous.
> > (XEN) Processor: 00000000410fd083: "ARM Limited", variant: 0x0, part
> > 0xd08,rev 0
> >
> >
> >                                 x3
> > (XEN) 64-bit Execution:
> > (XEN)   Processor Features: 0000000000002222 0000000000000000
> > (XEN)     Exception Levels: EL3:64+32 EL2:64+32 EL1:64+32 EL0:64+32
> > (XEN)     Extensions: FloatingPoint AdvancedSIMD
> > (XEN)   Debug Features: 0000000010305106 0000000000000000
> > (XEN)   Auxiliary Features: 0000000000000000 0000000000000000
> > (XEN)   Memory Model Features: 0000000000001124 0000000000000000
> > (XEN)   ISA Features:  0000000000010000 0000000000000000
> > (XEN) 32-bit Execution:
> > (XEN)   Processor Features: 0000000000000131:0000000000011011
> > (XEN)     Instruction Sets: AArch32 A32 Thumb Thumb-2 Jazelle
> > (XEN)     Extensions: GenericTimer Security
> > (XEN)   Debug Features: 0000000003010066
> > (XEN)   Auxiliary Features: 0000000000000000
> > (XEN)   Memory Model Features: 0000000010201105 0000000040000000
> > (XEN)                          0000000001260000 0000000002102211
> > (XEN)   ISA Features: 0000000002101110 0000000013112111 000000002123204=
2
> > (XEN)                 0000000001112131 0000000000011142 000000000001000=
1
> > (XEN) Using SMC Calling Convention v1.2
> > (XEN) Using PSCI v1.1
> > (XEN) ACPI: GICC (acpi_id[0x0000] address[0xff842000] MPIDR[0x0] enable=
d)
> > (XEN) ACPI: GICC (acpi_id[0x0001] address[0xff842000] MPIDR[0x1] enable=
d)
> > (XEN) ACPI: GICC (acpi_id[0x0002] address[0xff842000] MPIDR[0x2] enable=
d)
> > (XEN) ACPI: GICC (acpi_id[0x0003] address[0xff842000] MPIDR[0x3] enable=
d)
> > (XEN) 4 CPUs enabled, 4 CPUs total
> > (XEN) SMP: Allowing 4 CPUs
> > (XEN) enabled workaround for: ARM erratum 1319537
> > (XEN) Generic Timer IRQ: phys=3D30 hyp=3D26 virt=3D27 Freq: 54000 KHz
> > (XEN) GICv2 initialization:
> > (XEN)         gic_dist_addr=3D00000000ff841000
> > (XEN)         gic_cpu_addr=3D00000000ff842000
> > (XEN)         gic_hyp_addr=3D00000000ff844000
> > (XEN)         gic_vcpu_addr=3D00000000ff846000
> > (XEN)         gic_maintenance_irq=3D25
> > (XEN) GICv2: 256 lines, 4 cpus, secure (IID 0200143b).
> > (XEN) XSM Framework v1.0.1 initialized
> > (XEN) Initialising XSM SILO mode
> > (XEN) Using scheduler: SMP Credit Scheduler rev2 (credit2)
> > (XEN) Initializing Credit2 scheduler
> > (XEN)  load_precision_shift: 18
> > (XEN)  load_window_shift: 30
> > (XEN)  underload_balance_tolerance: 0
> > (XEN)  overload_balance_tolerance: -3
> > (XEN)  runqueues arrangement: socket
> > (XEN)  cap enforcement granularity: 10ms
> > (XEN) load tracking window length 1073741824 ns
> > (XEN) Allocated console ring of 32 KiB.
> > (XEN) CPU0: Guest atomics will try 16 times before pausing the domain
> > (XEN) Bringing up CPU1
> > (XEN) CPU1: Guest atomics will try 16 times before pausing the domain
> > (XEN) CPU 1 booted.
> > (XEN) Bringing up CPU2
> > (XEN) CPU2: Guest atomics will try 13 times before pausing the domain
> > (XEN) CPU 2 booted.
> > (XEN) Bringing up CPU3
> > (XEN) CPU3: Guest atomics will try 16 times before pausing the domain
> > (XEN) Brought up 4 CPUs
> > (XEN) CPU 3 booted.
> > (XEN) I/O virtualisation disabled
> > (XEN) P2M: 44-bit IPA with 44-bit PA and 8-bit VMID
> > (XEN) P2M: 4 levels with order-0 root, VTCR 0x0000000080043594
> > (XEN) Scheduling granularity: cpu, 1 CPU per sched-resource
> > (XEN) Initializing Credit2 scheduler
> > (XEN)  load_precision_shift: 18
> > (XEN)  load_window_shift: 30
> > (XEN)  underload_balance_tolerance: 0
> > (XEN)  overload_balance_tolerance: -3
> > (XEN)  runqueues arrangement: socket
> > (XEN)  cap enforcement granularity: 10ms
> > (XEN) load tracking window length 1073741824 ns
> > (XEN) Adding cpu 0 to runqueue 0
> > (XEN)  First cpu on runqueue, activating
> > (XEN) Adding cpu 1 to runqueue 0
> > (XEN) Adding cpu 2 to runqueue 0
> > (XEN) Adding cpu 3 to runqueue 0
> > (XEN) alternatives: Patching with alt table 00000a00002ee0b0 ->
> > 00000a00002ef250
> > (XEN) CPU2 will call ARM_SMCCC_ARCH_WORKAROUND_1 on exception entry
> > (XEN) CPU1 will call ARM_SMCCC_ARCH_WORKAROUND_1 on exception entry
> > (XEN) CPU3 will call ARM_SMCCC_ARCH_WORKAROUND_1 on exception entry
> > (XEN) CPU0 will call ARM_SMCCC_ARCH_WORKAROUND_1 on exception entry
> > (XEN) *** LOADING DOMAIN 0 ***
> > (XEN) Loading d0 kernel from boot module @ 0000000030ef7000
> > (XEN) Loading ramdisk from boot module @ 000000002ee6d000
> > (XEN) Allocating 1:1 mappings totalling 1024MB for dom0:
> > (XEN) BANK[0] 0x00000040000000-0x00000080000000 (1024MB)
> > (XEN) Grant table range: 0x0000002eceb000-0x0000002ed2b000
> > (XEN) Allocating PPI 16 for event channel interrupt
> > (XEN) Loading zImage from 0000000030ef7000 to
> > 0000000040000000-0000000041f1c7c0
> > (XEN) Loading d0 initrd from 000000002ee6d000 to
> > 0x0000000048200000-0x000000004a
> >
> >
> >                                                     288c22
> > (XEN) Loading d0 DTB to 0x0000000048000000-0x00000000480002c3
> > (XEN) Initial low memory virq threshold set at 0x4000 pages.
> > (XEN) Scrubbing Free RAM in background
> > (XEN) Std. Loglevel: All
> > (XEN) Guest Loglevel: All
> > (XEN) ***************************************************
> > (XEN) WARNING: CONSOLE OUTPUT IS SYNCHRONOUS
> > (XEN) This option is intended to aid debugging of Xen by ensuring
> > (XEN) that all output is synchronously delivered on the serial line.
> > (XEN) However it can introduce SIGNIFICANT latencies and affect
> > (XEN) timekeeping. It is NOT recommended for production use!
> > (XEN) ***************************************************
> > (XEN) 3... 2... 1...
> > (XEN) *** Serial input to DOM0 (type 'CTRL-a' three times to switch inp=
ut)
> > (XEN) Freed 376kB init memory.
> > (XEN) d0v0 Unhandled SMC/HVC: 0x84000050
> > (XEN) d0v0 Unhandled SMC/HVC: 0x8600ff01
> > (XEN) d0v0: vGICD: unhandled word write 0x000000ffffffff to ICACTIVER4
> > (XEN) d0v0: vGICD: unhandled word write 0x000000ffffffff to ICACTIVER8
> > (XEN) d0v0: vGICD: unhandled word write 0x000000ffffffff to ICACTIVER12
> > (XEN) d0v0: vGICD: unhandled word write 0x000000ffffffff to ICACTIVER16
> > (XEN) d0v0: vGICD: unhandled word write 0x000000ffffffff to ICACTIVER20
> > (XEN) d0v0: vGICD: unhandled word write 0x000000ffffffff to ICACTIVER24
> > (XEN) d0v0: vGICD: unhandled word write 0x000000ffffffff to ICACTIVER28
> > (XEN) d0v0: vGICD: unhandled word write 0x000000ffffffff to ICACTIVER0
> > (XEN) d0v1: vGICD: unhandled word write 0x000000ffffffff to ICACTIVER0
> > (XEN) d0v2: vGICD: unhandled word write 0x000000ffffffff to ICACTIVER0
> > (XEN) d0v3: vGICD: unhandled word write 0x000000ffffffff to ICACTIVER0
> > (XEN) d1v0 Unhandled SMC/HVC: 0x84000050
> > (XEN) d1v0 Unhandled SMC/HVC: 0x8600ff01
> > (XEN) d1v0: vGICD: unhandled word write 0x000000ffffffff to ICACTIVER0
> > (XEN) common/grant_table.c:1909:d1v0 Expanding d1 grant table from 1 to
> > 2 frames
> > (XEN) gnttab_mark_dirty not implemented yet
> > (XEN) d2v0 Unhandled SMC/HVC: 0x84000050
> > (XEN) d2v0 Unhandled SMC/HVC: 0x8600ff01
> > (XEN) d2v0: vGICD: unhandled word write 0x000000ffffffff to ICACTIVER0
> > (XEN) common/grant_table.c:1909:d2v0 Expanding d2 grant table from 1 to
> > 2 frames
> > (XEN) common/grant_table.c:1909:d2v0 Expanding d2 grant table from 2 to
> > 3 frames
> > (XEN) common/grant_table.c:1909:d2v0 Expanding d2 grant table from 3 to
> > 4 frames
> > (XEN) Watchdog timer fired for domain 0
> > (XEN) Hardware Dom0 shutdown: watchdog rebooting machine
>
> I'm unsure whose attention to draw to this report.
>
> This might be a scheduler issue since the watchdog timer is triggering.
>
> This might be an ACPI issue as ACPI is in use here.
>
> This might be an ARM Linux kernel issue.
>
> In the end this is someone running into trouble with Xen on an ARM
> device.  Yet despite bringing up the issue hasn't gotten any help...

Hey Elliot,

Thanks for raising the visibility of this.  I'm not familiar with ARM,
but if I were investigating this I'd try to figure out what the
"unhandled" error messages are.  "gnttab_mark_dirty not implemented
yet" looks pretty sus too, and also sounds like it might be something
ARM-specific.

I don't see anything suspicious WRT the scheduler, but a simple way to
test that would be to set the scheduler to credit1 and see if that
changes things.

 -George


From xen-devel-bounces@lists.xenproject.org Mon Jan 22 10:50:26 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 22 Jan 2024 10:50:26 +0000
Received: from list by lists.xenproject.org with outflank-mailman.669748.1042131 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rRrsd-00044H-TW; Mon, 22 Jan 2024 10:50:15 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 669748.1042131; Mon, 22 Jan 2024 10:50:15 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rRrsd-00044A-Q9; Mon, 22 Jan 2024 10:50:15 +0000
Received: by outflank-mailman (input) for mailman id 669748;
 Mon, 22 Jan 2024 10:50:14 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=VPlZ=JA=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rRrsc-000441-HU
 for xen-devel@lists.xenproject.org; Mon, 22 Jan 2024 10:50:14 +0000
Received: from mail-lj1-x22b.google.com (mail-lj1-x22b.google.com
 [2a00:1450:4864:20::22b])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 051ca626-b914-11ee-98f2-6d05b1d4d9a1;
 Mon, 22 Jan 2024 11:50:13 +0100 (CET)
Received: by mail-lj1-x22b.google.com with SMTP id
 38308e7fff4ca-2cd1a1c5addso34018291fa.1
 for <xen-devel@lists.xenproject.org>; Mon, 22 Jan 2024 02:50:13 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 x2-20020a92d302000000b00361931c8050sm3796812ila.62.2024.01.22.02.50.10
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 22 Jan 2024 02:50:12 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 051ca626-b914-11ee-98f2-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1705920613; x=1706525413; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=Q+JBSme+TMZSZK1RFBQp7O9W2BPrTz1VR8WMUjAH6Vc=;
        b=Ihr94XhLG5Yiy/HDJT6lMrt4fSXCuVH7DNP7LWfF+9JHC6VPDmOkVbAWH9skxY+2D2
         KFqSrVSpK64TywR2mN0Vy+o8vH2Yy+2z37gHcQ7UKlo5kfH5B3EOiH0lq6/upOewyb/w
         j7IIPShwxkwOn6+gMA2Bzq5WxNrXLNNO9qC8oBprM5OqvD023pH0mvSD5ZUl1CUPKymA
         SO3D7jDf32HEEHfhcsXxCVhuZZpyKSn11wgm3DcfEwkXaDsNT0tAvia48aOnnjXY3tkU
         oKrYN16eAIajt+27yEHuaQ77yqYpLtBW3TLKjgOxnKqJCVfuoV5sdPoSO/9l3bUDEKZA
         BNJw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705920613; x=1706525413;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=Q+JBSme+TMZSZK1RFBQp7O9W2BPrTz1VR8WMUjAH6Vc=;
        b=tyvBRlcp9j0mNNdt+izX7A7ZgpYfZOTOVPL45waakW2yEQqWXVS3+BPY2Q/5CS8ag5
         7KzemsUumcTyf0ky754jjEYRudbav5qzSbepYBVmdyiKAzXdl3hUzRWYe2hXAWBXLnKY
         amGTPyHPUF1Dfvi6XTlCg9Ipdd98x72bXyv7ardgl3cwW9IjQk+CbJLr81ElxRaNLTvE
         nhXCpgOy4DBRXHtv+6t3tKishWQJVNlqHFtysPmnMUG4/eaiV3hTAU1a1mSO2e/Y9j51
         4Gm9shCVYNnS21R7ytAA8VH2eTR4NEW+W24xkeZjgSqjN3IXpRsSBtG7L0/3BuZ+0OKY
         OoPQ==
X-Gm-Message-State: AOJu0YxlzbHl80zU8PcQGPihNvus9HV2SQpQ7aYAX6u3ts1SHHFwMVJT
	M/H9LyxqkJ5duli5B4de4geiD53mPvleHyE1qlkFoxhBY5NNQIeyT3kawy46dQ==
X-Google-Smtp-Source: AGHT+IE49WBzhJUdTnxcrXthglv34pni9jvIIyUdmZeeYjHlunD6+uSq9xCXEh8dJ/XUgT32dlhNkA==
X-Received: by 2002:a2e:924f:0:b0:2cc:94df:6d7d with SMTP id v15-20020a2e924f000000b002cc94df6d7dmr1461754ljg.8.1705920612804;
        Mon, 22 Jan 2024 02:50:12 -0800 (PST)
Message-ID: <81752c34-da03-45fc-9d57-9b91bdbfd833@suse.com>
Date: Mon, 22 Jan 2024 11:50:08 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v5 8/8] common: honor CONFIG_CC_SPLIT_SECTIONS also for
 assembly functions
Content-Language: en-US
To: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
Cc: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>,
 Andrew Cooper <andrew.cooper3@citrix.com>, Wei Liu <wl@xen.org>,
 Julien Grall <julien@xen.org>, Stefano Stabellini <sstabellini@kernel.org>,
 Volodymyr Babchuk <volodymyr_babchuk@epam.com>,
 Bertrand Marquis <bertrand.marquis@arm.com>,
 Bobby Eshleman <bobbyeshleman@gmail.com>,
 Alistair Francis <alistair.francis@wdc.com>,
 Connor Davis <connojdavis@gmail.com>,
 George Dunlap <george.dunlap@citrix.com>,
 Shawn Anastasio <sanastasio@raptorengineering.com>,
 Michal Orzel <michal.orzel@amd.com>
References: <e4bf47ca-2ae6-1fd4-56a6-e4e777150b64@suse.com>
 <7a133ed9-9d13-4e2c-893a-00c083c8a35d@suse.com>
 <5df1d87d-8e54-4e15-b1fb-46b274cb66ef@suse.com> <ZapQoLSOKew5W-Tt@macbook>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <ZapQoLSOKew5W-Tt@macbook>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 19.01.2024 11:36, Roger Pau Monné wrote:
> On Mon, Jan 15, 2024 at 03:40:19PM +0100, Jan Beulich wrote:
>> Leverage the new infrastructure in xen/linkage.h to also switch to per-
>> function sections (when configured), deriving the specific name from the
>> "base" section in use at the time FUNC() is invoked.
>>
>> Signed-off-by: Jan Beulich <jbeulich@suse.com>
>> ---
>> TBD: Since we use .subsection in UNLIKELY_START(), a perhaps not really
>>      wanted side effect of this change is that respective out-of-line
>>      code now moves much closer to its original (invoking) code.
> 
> Hm, I'm afraid I don't have much useful suggestions here.
> 
>> TBD: Of course something with the same overall effect, but less
>>      impactful might do in Config.mk. E.g. $(filter-out -D%,$(3))
>>      instead of $(firstword (3)).
> 
> I don't have a strong opinion re those two options  My preference
> however (see below for reasoning) would be to put this detection in
> Kconfig.
> 
>> TBD: On top of Roger's respective patch (for livepatch), also respect
>>      CONFIG_FUNCTION_ALIGNMENT.
> 
> I think you can drop that, as the series is blocked.

Considering the series here has been pending for quite some time, too,
I guess I'd like to keep it just in case that other functionality
becomes unblocked or available by some other means, even if only to
remind myself.

>> --- a/xen/Makefile
>> +++ b/xen/Makefile
>> @@ -409,6 +409,9 @@ AFLAGS += -D__ASSEMBLY__
>>  
>>  $(call cc-option-add,AFLAGS,CC,-Wa$$(comma)--noexecstack)
>>  
>> +# Check to see whether the assmbler supports the --sectname-subst option.
>> +$(call cc-option-add,AFLAGS,CC,-Wa$$(comma)--sectname-subst -DHAVE_AS_SECTNAME_SUBST)
> 
> I guess you already know what I'm going to comment on.  I think this
> would be clearer if it was a Kconfig option.  For once because I think
> we should gate livapatch support on the option being available, and
> secondly it would avoid having to pass the extra -D around.
> 
> I think it's relevant to have a consistent set of build tool options
> requirements for livepatch support, so that when enabled the support
> is consistent across builds.  With this approach livepatch could be
> enabled in Kconfig, but depending on the tools support the resulting
> binary might or might not support live patching of assembly code.
> Such behavior is IMO unhelpful from a user PoV, and can lead to
> surprises down the road.

I can see the desire to have LIVEPATCH grow such a dependency. Yet there
is the bigger still open topic of the criteria towards what, if anything,
to probe for in Kconfig, what, if anything, to probe for in Makefile, and
which of the probing perhaps do in both places. I'm afraid my attempts to
move us closer to a resolution (topic on summit, making proposals on
list) have utterly failed. IOW I don't currently see how the existing
disagreement there can be resolved, which will result in me to continue
following the (traditional) Makefile approach unless I clearly view
Kconfig superior in a particular case. I could perhaps be talked into
following a "mixed Kconfig/Makefile model", along the lines of "x86:
convert CET tool chain feature checks to mixed Kconfig/Makefile model",
albeit I'm sure you're aware there are issues to sort out there, which I
see no value in putting time into as long as I can't expect things to
make progress subsequently.

Dropping this patch, while an option, would seem undesirable to me, since
even without Kconfig probing using new enough tool chains the splitting
would yield reliable results, and provide - imo - an improvement over
what we have right now.

Jan


From xen-devel-bounces@lists.xenproject.org Mon Jan 22 10:54:21 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 22 Jan 2024 10:54:21 +0000
Received: from list by lists.xenproject.org with outflank-mailman.669753.1042141 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rRrwX-0004id-Ep; Mon, 22 Jan 2024 10:54:17 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 669753.1042141; Mon, 22 Jan 2024 10:54:17 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rRrwX-0004iW-C5; Mon, 22 Jan 2024 10:54:17 +0000
Received: by outflank-mailman (input) for mailman id 669753;
 Mon, 22 Jan 2024 10:54:16 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=L7P8=JA=cloud.com=anthony.perard@srs-se1.protection.inumbo.net>)
 id 1rRrwW-0004iQ-1D
 for xen-devel@lists.xenproject.org; Mon, 22 Jan 2024 10:54:16 +0000
Received: from mail-wm1-x32b.google.com (mail-wm1-x32b.google.com
 [2a00:1450:4864:20::32b])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 9536d705-b914-11ee-98f2-6d05b1d4d9a1;
 Mon, 22 Jan 2024 11:54:15 +0100 (CET)
Received: by mail-wm1-x32b.google.com with SMTP id
 5b1f17b1804b1-40e9ef9853bso15617795e9.1
 for <xen-devel@lists.xenproject.org>; Mon, 22 Jan 2024 02:54:15 -0800 (PST)
Received: from perard.uk.xensource.com (default-46-102-197-194.interdsl.co.uk.
 [46.102.197.194]) by smtp.gmail.com with ESMTPSA id
 m17-20020adffa11000000b00336c6b77584sm13528270wrr.91.2024.01.22.02.54.13
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 22 Jan 2024 02:54:14 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 9536d705-b914-11ee-98f2-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1705920854; x=1706525654; darn=lists.xenproject.org;
        h=in-reply-to:content-disposition:mime-version:references:message-id
         :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to;
        bh=pJHXtCVEwI7oM3elKyMqiv++MjyGUPKP0vZE21Y8rsE=;
        b=Rh5NtbsYVowWbi62wtzKwyYCQyPIf9rHSJwwHJzk2GCcWWHtXojDQtwEqnoUu6TKoL
         VdegKd9BJEriTEnZ2uKdw1Rj8eIpktLv9A+ACGteSgj7iJEDgPdlCbM7C+f9vWNlEp+R
         JPVxbi2asyhwSwBe0YrSWPRoywtZ0p2cqwfBI=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705920854; x=1706525654;
        h=in-reply-to:content-disposition:mime-version:references:message-id
         :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to;
        bh=pJHXtCVEwI7oM3elKyMqiv++MjyGUPKP0vZE21Y8rsE=;
        b=uaKJM/ph/EKOfw0smQhjoJkmEvIcWmh81QuSVXE1ZOy3TJlWB0rGWD/y+c/oNk1+LB
         fyT4tPzUCF9Hoh8RoYwEp65phHT8gPiewSZB5tKI+8DARQj0lF+z1GD6BpOzb9prIyA6
         ai0sk3BUu/9enuVoF8Fsh//d9wzzGl/61etOkXM1jMvj6hFmn/NVhUCvMRFYtQ9JJ584
         8emN/ZHANzQbrW21TpDR1qg2dlrYFhmNuuuqyUxN+fd+9Uj7WSNZFE2z8Qjl1CKnnCGu
         I0t38m3s4xY4ctCRo1NkrtUHM6SRIDexEu+DJhWzsxpGnWaZMtTcgLW5gqyWBAv9cwD7
         rZ5w==
X-Gm-Message-State: AOJu0YyDCJAhyvxPuh0fLBqpDG+FlidK1wrQ4Kq+lDW5lxHO7yA/XIyD
	lRVBqswdbxyLug8JQcnJb6Haq6o0MKkxDSOAxKxyr0PupCXd72DHgX1QoBz6AZU=
X-Google-Smtp-Source: AGHT+IHrZY4NjLeWT4U15UtK7/cCxx/JWKKrzppWZl1RtGixd5qKGUGekVNH0cuXtL5z/YqWf7nXjQ==
X-Received: by 2002:a7b:c409:0:b0:40e:52fd:7341 with SMTP id k9-20020a7bc409000000b0040e52fd7341mr1881857wmi.141.1705920854487;
        Mon, 22 Jan 2024 02:54:14 -0800 (PST)
Date: Mon, 22 Jan 2024 10:54:13 +0000
From: Anthony PERARD <anthony.perard@citrix.com>
To: Jan Beulich <jbeulich@suse.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
	George Dunlap <george.dunlap@citrix.com>,
	Julien Grall <julien@xen.org>,
	Stefano Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>,
	Javi Merino <javi.merino@cloud.com>, xen-devel@lists.xenproject.org,
	Michal Orzel <michal.orzel@amd.com>
Subject: Re: [PATCH] coverage: filter out lib{fdt,elf}-temp.o
Message-ID: <01dd5e72-c33c-49c7-838a-4e0eba454c05@perard>
References: <20240118120641.24824-1-michal.orzel@amd.com>
 <8057ae41-43b5-4469-b691-4e7f16b8dd4d@suse.com>
 <e399890c-0299-4ec5-884e-0637ae6cb5b0@perard>
 <9d552e6d-eb5d-4ccf-a35d-a359df7c4478@amd.com>
 <0a1c749b-8169-43b5-9921-961096f8570d@perard>
 <0437c4eb-8438-44a8-a749-aef6c4c93ef0@suse.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <0437c4eb-8438-44a8-a749-aef6c4c93ef0@suse.com>

On Mon, Jan 22, 2024 at 11:04:41AM +0100, Jan Beulich wrote:
> On 19.01.2024 16:25, Anthony PERARD wrote:
> > On Fri, Jan 19, 2024 at 09:43:30AM +0100, Michal Orzel wrote:
> >> Is my understanding correct that by switching from extra-y to targets we are preventing these objects to
> >> appear in non-init-objects (and thus having COV_FLAGS appended) while retaining the proper if_changed behavior?
> >>
> >> According to docs/misc/xen-makefiles/makefiles.rst:
> >> Any target that utilises if_changed must be listed in $(targets),
> >> otherwise the command line check will fail, and the target will
> >> always be built.
> > 
> > Indeed, and $(extra-y) is added to $(targets) via
> > $(targets-for-builtin).
> > 
> > While switching from $(extra-y) to $(targets) prevents the objects from
> > been added to $(non-init-objets), it doesn't matter because "libelf.o"
> > is in that variable, so $(COV_FLAGS) is added to $(_c_flags) and its
> > value is used in all the prerequisites of "libelf.o" which includes
> > "libelf-temp.o" and for example "libelf-dominfo.o". So the only thing
> > preventing $(COV_FLAGS) from been added when building "libelf-tools.o"
> > for example is that we set `COV_FLAGS:=` for "libelf.o".
> 
> Yet doesn't that (again) mean things should actually work as-is, [...]

No, because I've explain how it should work, in the hypothetical world
where we have `targets += libelf-temp.o $(libelf-objs)`.

-- 
Anthony PERARD


From xen-devel-bounces@lists.xenproject.org Mon Jan 22 11:03:02 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 22 Jan 2024 11:03:02 +0000
Received: from list by lists.xenproject.org with outflank-mailman.669758.1042151 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rRs4u-00074W-4p; Mon, 22 Jan 2024 11:02:56 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 669758.1042151; Mon, 22 Jan 2024 11:02:56 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rRs4u-00074P-1m; Mon, 22 Jan 2024 11:02:56 +0000
Received: by outflank-mailman (input) for mailman id 669758;
 Mon, 22 Jan 2024 11:02:54 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=2apV=JA=cloud.com=roger.pau@srs-se1.protection.inumbo.net>)
 id 1rRs4s-00074J-SY
 for xen-devel@lists.xenproject.org; Mon, 22 Jan 2024 11:02:54 +0000
Received: from mail-wm1-x335.google.com (mail-wm1-x335.google.com
 [2a00:1450:4864:20::335])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id ca762fca-b915-11ee-98f2-6d05b1d4d9a1;
 Mon, 22 Jan 2024 12:02:53 +0100 (CET)
Received: by mail-wm1-x335.google.com with SMTP id
 5b1f17b1804b1-40e76626170so34830495e9.2
 for <xen-devel@lists.xenproject.org>; Mon, 22 Jan 2024 03:02:53 -0800 (PST)
Received: from localhost ([213.195.127.68]) by smtp.gmail.com with ESMTPSA id
 s8-20020a05600c45c800b0040e527602c8sm42877281wmo.9.2024.01.22.03.02.52
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 22 Jan 2024 03:02:52 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: ca762fca-b915-11ee-98f2-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1705921373; x=1706526173; darn=lists.xenproject.org;
        h=content-transfer-encoding:mime-version:message-id:date:subject:cc
         :to:from:from:to:cc:subject:date:message-id:reply-to;
        bh=9fIQcrOAipQawnooqTPYzNxRkpNNdJhFZxAVg9KPUrA=;
        b=R4gjUXmMFw60g9eKMLrG+/R+GucDca9cyTtqGc6iKHtch1VlV3dZ4u8EkNjq0M97YM
         UEGxPynALyhf4dX1yLXxEaS1q4wq7k7Wc06VByQi5HVSeV8503CkNeAdS2DpVfM3ZTLs
         TRSzrBKMIBmNta5BUOH10p6SP+g/dtyjJb1fw=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705921373; x=1706526173;
        h=content-transfer-encoding:mime-version:message-id:date:subject:cc
         :to:from:x-gm-message-state:from:to:cc:subject:date:message-id
         :reply-to;
        bh=9fIQcrOAipQawnooqTPYzNxRkpNNdJhFZxAVg9KPUrA=;
        b=tsU2cTrk45XJYBQ3py8bekfB1WE/+AL3MxyE5XIW1sygHkVYnveEzTc/6FjnNPxh8b
         sZ1uDKydZsYKPr+8sLREqOcs1KrfAFV6N3/5BpYECkYAaprnyWwUrCRkVircFd7bDyAX
         dln+cVH2KhY7rk0JddtLcwZqzZl0YsFBKqQWEqIK1Tgq7ohCpctLZp01tuTu8eeus6Ri
         3UHVaI9UptNt4z5nMCHV5Rb/xSwHhwXbohM9Qankv4WzCBwxsop5IPbR/5znGcJgmnYg
         vN4X+uGWgPhn9z/rYIXe71IB0QobGph8e7VtyR79AvyEtE1Oi2FvkIC22s7ctYMKt4Uv
         JAgA==
X-Gm-Message-State: AOJu0YzwJ0kzX7kAAuy95cMp8tv+WKSyikb+GVHjffeMX8oPvR5+KrC7
	IntH2x6lEOIXQOWrNM3fLgstXWowa8QYl6GyUPabeQKGDa0JKaYzW1mUgu+0VAAPH3sV4PhPlZe
	4
X-Google-Smtp-Source: AGHT+IFArCo09vSFTHWhQNfpyvzgz65yo4m+nxBMYvpxaW12C0hhChCHi4K9ChQEWsUSST1YAFhnAQ==
X-Received: by 2002:a05:600c:498a:b0:40e:5a80:6177 with SMTP id h10-20020a05600c498a00b0040e5a806177mr2142863wmp.69.1705921373022;
        Mon, 22 Jan 2024 03:02:53 -0800 (PST)
From: Roger Pau Monne <roger.pau@citrix.com>
To: xen-devel@lists.xenproject.org
Cc: Roger Pau Monne <roger.pau@citrix.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	George Dunlap <george.dunlap@citrix.com>,
	Jan Beulich <jbeulich@suse.com>,
	Julien Grall <julien@xen.org>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Wei Liu <wl@xen.org>,
	Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>,
	Ross Lagerwall <ross.lagerwall@citrix.com>,
	Bertrand Marquis <bertrand.marquis@arm.com>,
	Michal Orzel <michal.orzel@amd.com>,
	Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>
Subject: [PATCH v5] x86/livepatch: align functions to ensure minimal distance between entry points
Date: Mon, 22 Jan 2024 12:02:44 +0100
Message-ID: <20240122110244.14091-1-roger.pau@citrix.com>
X-Mailer: git-send-email 2.43.0
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

The minimal function size requirements for an x86 livepatch are either 5 bytes
(for jmp) or 9 bytes (for endbr + jmp), and always 4 bytes on Arm.  Ensure that
distance between functions entry points is always at least of the minimal
required size for livepatch instruction replacement to be successful.

Add an additional align directive to the linker script, in order to ensure that
the next section placed after the .text.* (per-function sections) is also
aligned to the required boundary, so that the distance of the last function
entry point with the next symbol is also of minimal size.

Note that it's possible for the compiler to end up using a higher function
alignment regardless of the passed value, so this change just make sure that
the minimum required for livepatch to work is present.  Different compilers
handle the option differently, as clang will ignore -falign-functions value
if it's smaller than the one that would be set by the optimization level, while
gcc seems to always honor the function alignment passed in -falign-functions.
In order to cope with this behavior and avoid that setting -falign-functions
results in an alignment inferior to what the optimization level would have
selected force x86 release builds to use a function alignment of 16 bytes.
For Arm the default compiler selection of function alignment matches the
requirements of livepatch, which are 4 bytes.

The compiler option -falign-functions is not available on at least clang 3.8,
so introduce a Kconfig check for it and make the livepatch option depend on the
compiler supporting the option.

The naming of the option(s) CONFIG_FUNCTION_ALIGNMENT is explicitly not
mentioning CC in preparation for the option also being used by assembly code.

Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
---
Changes since v4:
 - Split from the rest of the livepatch testing series.
 - Reword and expand a bit the commit message.
 - Add a comment about falign-functions clang version requirement.

Changes since v3:
 - Test for compiler option with -falign-functions.
 - Make FUNCTION_ALIGNMENT depend on CC_HAS_FUNCTION_ALIGNMENT.
 - Set 16byte function alignment for x86 release builds.

Changes since v2:
 - Add Arm side.
 - Align end of section in the linker script to ensure enough padding for the
   last function.
 - Expand commit message and subject.
 - Rework Kconfig options.
 - Check that the compiler supports the option.

Changes since v1:
 - New in this version.
---
 xen/Kconfig              | 21 +++++++++++++++++++++
 xen/Makefile             |  3 +++
 xen/arch/arm/livepatch.c |  2 ++
 xen/arch/arm/xen.lds.S   |  4 ++++
 xen/arch/x86/Kconfig     |  1 +
 xen/arch/x86/livepatch.c |  4 ++++
 xen/arch/x86/xen.lds.S   |  4 ++++
 xen/common/Kconfig       |  5 ++++-
 8 files changed, 43 insertions(+), 1 deletion(-)

diff --git a/xen/Kconfig b/xen/Kconfig
index 134e6e68ad84..feb5fa5ecb0a 100644
--- a/xen/Kconfig
+++ b/xen/Kconfig
@@ -37,6 +37,27 @@ config CC_HAS_VISIBILITY_ATTRIBUTE
 config CC_SPLIT_SECTIONS
 	bool
 
+# Set function alignment.
+#
+# Allow setting on a boolean basis, and then convert such selection to an
+# integer for the build system and code to consume more easily.
+#
+# Requires clang >= 7.0.0
+config CC_HAS_FUNCTION_ALIGNMENT
+	def_bool $(cc-option,-falign-functions)
+config FUNCTION_ALIGNMENT_4B
+	bool
+config FUNCTION_ALIGNMENT_8B
+	bool
+config FUNCTION_ALIGNMENT_16B
+	bool
+config FUNCTION_ALIGNMENT
+	int
+	depends on CC_HAS_FUNCTION_ALIGNMENT
+	default 16 if FUNCTION_ALIGNMENT_16B
+	default  8 if  FUNCTION_ALIGNMENT_8B
+	default  4 if  FUNCTION_ALIGNMENT_4B
+
 source "arch/$(SRCARCH)/Kconfig"
 
 config DEFCONFIG_LIST
diff --git a/xen/Makefile b/xen/Makefile
index 21832d640225..162cb2bda1c5 100644
--- a/xen/Makefile
+++ b/xen/Makefile
@@ -390,6 +390,9 @@ CFLAGS += -fomit-frame-pointer
 endif
 
 CFLAGS-$(CONFIG_CC_SPLIT_SECTIONS) += -ffunction-sections -fdata-sections
+ifdef CONFIG_FUNCTION_ALIGNMENT
+CFLAGS += -falign-functions=$(CONFIG_FUNCTION_ALIGNMENT)
+endif
 
 CFLAGS += -nostdinc -fno-builtin -fno-common
 CFLAGS += -Werror -Wredundant-decls -Wwrite-strings -Wno-pointer-arith
diff --git a/xen/arch/arm/livepatch.c b/xen/arch/arm/livepatch.c
index bbca1e5a5ed3..aa8ae8c38d28 100644
--- a/xen/arch/arm/livepatch.c
+++ b/xen/arch/arm/livepatch.c
@@ -68,6 +68,8 @@ void arch_livepatch_revive(void)
 
 int arch_livepatch_verify_func(const struct livepatch_func *func)
 {
+    BUILD_BUG_ON(ARCH_PATCH_INSN_SIZE > CONFIG_FUNCTION_ALIGNMENT);
+
     /* If NOPing only do up to maximum amount we can put in the ->opaque. */
     if ( !func->new_addr && (func->new_size > LIVEPATCH_OPAQUE_SIZE ||
          func->new_size % ARCH_PATCH_INSN_SIZE) )
diff --git a/xen/arch/arm/xen.lds.S b/xen/arch/arm/xen.lds.S
index 59b80d122fd0..afaf1e996b0e 100644
--- a/xen/arch/arm/xen.lds.S
+++ b/xen/arch/arm/xen.lds.S
@@ -44,6 +44,10 @@ SECTIONS
 #ifdef CONFIG_CC_SPLIT_SECTIONS
        *(.text.*)
 #endif
+#ifdef CONFIG_FUNCTION_ALIGNMENT
+       /* Ensure enough distance with the next placed section. */
+       . = ALIGN(CONFIG_FUNCTION_ALIGNMENT);
+#endif
 
        *(.fixup)
        *(.gnu.warning)
diff --git a/xen/arch/x86/Kconfig b/xen/arch/x86/Kconfig
index 1acdffc51c22..0cd741be5b6f 100644
--- a/xen/arch/x86/Kconfig
+++ b/xen/arch/x86/Kconfig
@@ -29,6 +29,7 @@ config X86
 	select HAS_UBSAN
 	select HAS_VPCI if HVM
 	select NEEDS_LIBELF
+	select FUNCTION_ALIGNMENT_16B if !DEBUG
 
 config ARCH_DEFCONFIG
 	string
diff --git a/xen/arch/x86/livepatch.c b/xen/arch/x86/livepatch.c
index ee539f001b73..b00ad7120da9 100644
--- a/xen/arch/x86/livepatch.c
+++ b/xen/arch/x86/livepatch.c
@@ -109,6 +109,10 @@ int arch_livepatch_verify_func(const struct livepatch_func *func)
          */
         uint8_t needed = ARCH_PATCH_INSN_SIZE;
 
+        BUILD_BUG_ON(ARCH_PATCH_INSN_SIZE +
+                     (IS_ENABLED(CONIFG_XEN_IBT) ? ENDBR64_LEN : 0) >
+                     CONFIG_FUNCTION_ALIGNMENT);
+
         if ( is_endbr64(func->old_addr) || is_endbr64_poison(func->old_addr) )
             needed += ENDBR64_LEN;
 
diff --git a/xen/arch/x86/xen.lds.S b/xen/arch/x86/xen.lds.S
index 8930e14fc40e..5b3332300d44 100644
--- a/xen/arch/x86/xen.lds.S
+++ b/xen/arch/x86/xen.lds.S
@@ -99,6 +99,10 @@ SECTIONS
        *(.text)
 #ifdef CONFIG_CC_SPLIT_SECTIONS
        *(.text.*)
+#endif
+#ifdef CONFIG_FUNCTION_ALIGNMENT
+       /* Ensure enough distance with the next placed section. */
+       . = ALIGN(CONFIG_FUNCTION_ALIGNMENT);
 #endif
        *(.text.__x86_indirect_thunk_*)
 
diff --git a/xen/common/Kconfig b/xen/common/Kconfig
index 310ad4229cdf..c9a21c3c8a07 100644
--- a/xen/common/Kconfig
+++ b/xen/common/Kconfig
@@ -395,8 +395,11 @@ config CRYPTO
 config LIVEPATCH
 	bool "Live patching support"
 	default X86
-	depends on "$(XEN_HAS_BUILD_ID)" = "y"
+	depends on "$(XEN_HAS_BUILD_ID)" = "y" && CC_HAS_FUNCTION_ALIGNMENT
 	select CC_SPLIT_SECTIONS
+	select FUNCTION_ALIGNMENT_16B if XEN_IBT
+	select FUNCTION_ALIGNMENT_8B  if X86
+	select FUNCTION_ALIGNMENT_4B
 	---help---
 	  Allows a running Xen hypervisor to be dynamically patched using
 	  binary patches without rebooting. This is primarily used to binarily
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Mon Jan 22 11:03:37 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 22 Jan 2024 11:03:37 +0000
Received: from list by lists.xenproject.org with outflank-mailman.669760.1042160 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rRs5Z-0007Zc-EF; Mon, 22 Jan 2024 11:03:37 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 669760.1042160; Mon, 22 Jan 2024 11:03:37 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rRs5Z-0007ZV-Ar; Mon, 22 Jan 2024 11:03:37 +0000
Received: by outflank-mailman (input) for mailman id 669760;
 Mon, 22 Jan 2024 11:03:35 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=VPlZ=JA=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rRs5X-00074J-GN
 for xen-devel@lists.xenproject.org; Mon, 22 Jan 2024 11:03:35 +0000
Received: from mail-lj1-x232.google.com (mail-lj1-x232.google.com
 [2a00:1450:4864:20::232])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id e2e2eec0-b915-11ee-98f2-6d05b1d4d9a1;
 Mon, 22 Jan 2024 12:03:34 +0100 (CET)
Received: by mail-lj1-x232.google.com with SMTP id
 38308e7fff4ca-2cd0d05838fso34534231fa.1
 for <xen-devel@lists.xenproject.org>; Mon, 22 Jan 2024 03:03:34 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 db7-20020a056e023d0700b00361988e4fe9sm3319291ilb.42.2024.01.22.03.03.32
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 22 Jan 2024 03:03:33 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: e2e2eec0-b915-11ee-98f2-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1705921414; x=1706526214; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=bBYNIG3ncMsczqGQLPF/BIKyKH8VgE9hqXp7m7uzQ6M=;
        b=ObzkpwO5FgKBfL3UpuNUllAH3EEm9cBxY+ed5ZLyj3KBPsrZUV9zgbCD6S853DTruJ
         yMi9GyhDJx1RP1Cs1MbXuaT4r30k7LJ0mZ+F83OsEz/Lke3Ywa+zFJl6FJuNzBnauY/z
         XIYmQiRuvirfI89nY/HymeE579oUVBN6KuiR81B0ayt/gb650IpKcJkD8XSFCLoo8SJj
         Faqe6dYpOD6D/A22VdckoiQDDuW0kNGrxqKSp1zM64aCoW3/N719ZzF3JypT97hQLGjg
         gxUHfDnNJa5hNA7l8uXDD7FwQ/JhRw1QGoi1qkmbiG4Ut3TSlaxS8PehpVaDbS3N0noE
         tVcA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705921414; x=1706526214;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=bBYNIG3ncMsczqGQLPF/BIKyKH8VgE9hqXp7m7uzQ6M=;
        b=J7VxHOYm6lk5/Kws/E1e8892+nl7B9PlQG8fQVzbubDjMsx830UEvZWfD+omfujt0/
         X7k5erNlr12Jyn6vbY1cVtxdc0oEQTXo3MucqvzNA3ILfwp5ErWS7s7/2AIyhMqJSrVX
         mcdqCn3MW/j9ZK/pqOzb4xIAJ3m/Ws11j65hAOQqWvGuAhxAbcqPYz7jYqu1j/ggOsfc
         qmjTpbZsm1dMyZHJ3i9dJImfC7k3u8ZaRPvRRTHDkali0RmUy3XX3lumSIW1/88YDIYQ
         8uo8X/5vBxQHwQz7y/9sAVslnP5rW7WffN15xv1imGoqy99l0W6SBnPAv1vvRZg+1MS+
         iF3Q==
X-Gm-Message-State: AOJu0YzKTCwqheOZXxGNy1/wFjPFA7YliRZ34cVO7qMvl2OfjGZ28YYx
	4R2NvOUjT1+nbp38E3ho+yytoMvB5o+XjYRS3pQDu/tAym2LW+83eKm42u3dIw==
X-Google-Smtp-Source: AGHT+IFIU2PN31eFCkcRGrnrfe09p3/mudIIpphrzOszhSPzpe7e/jQGLLugAObuxBSitXRP4NI41w==
X-Received: by 2002:a2e:9345:0:b0:2cc:c6e0:fba with SMTP id m5-20020a2e9345000000b002ccc6e00fbamr1560886ljh.7.1705921414326;
        Mon, 22 Jan 2024 03:03:34 -0800 (PST)
Message-ID: <0d0415e9-385f-4b25-9e87-6c29fbb3ca9b@suse.com>
Date: Mon, 22 Jan 2024 12:03:30 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] coverage: filter out lib{fdt,elf}-temp.o
Content-Language: en-US
To: Anthony PERARD <anthony.perard@citrix.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 George Dunlap <george.dunlap@citrix.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>,
 Javi Merino <javi.merino@cloud.com>, xen-devel@lists.xenproject.org,
 Michal Orzel <michal.orzel@amd.com>
References: <20240118120641.24824-1-michal.orzel@amd.com>
 <8057ae41-43b5-4469-b691-4e7f16b8dd4d@suse.com>
 <e399890c-0299-4ec5-884e-0637ae6cb5b0@perard>
 <9d552e6d-eb5d-4ccf-a35d-a359df7c4478@amd.com>
 <0a1c749b-8169-43b5-9921-961096f8570d@perard>
 <0437c4eb-8438-44a8-a749-aef6c4c93ef0@suse.com>
 <01dd5e72-c33c-49c7-838a-4e0eba454c05@perard>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <01dd5e72-c33c-49c7-838a-4e0eba454c05@perard>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 22.01.2024 11:54, Anthony PERARD wrote:
> On Mon, Jan 22, 2024 at 11:04:41AM +0100, Jan Beulich wrote:
>> On 19.01.2024 16:25, Anthony PERARD wrote:
>>> On Fri, Jan 19, 2024 at 09:43:30AM +0100, Michal Orzel wrote:
>>>> Is my understanding correct that by switching from extra-y to targets we are preventing these objects to
>>>> appear in non-init-objects (and thus having COV_FLAGS appended) while retaining the proper if_changed behavior?
>>>>
>>>> According to docs/misc/xen-makefiles/makefiles.rst:
>>>> Any target that utilises if_changed must be listed in $(targets),
>>>> otherwise the command line check will fail, and the target will
>>>> always be built.
>>>
>>> Indeed, and $(extra-y) is added to $(targets) via
>>> $(targets-for-builtin).
>>>
>>> While switching from $(extra-y) to $(targets) prevents the objects from
>>> been added to $(non-init-objets), it doesn't matter because "libelf.o"
>>> is in that variable, so $(COV_FLAGS) is added to $(_c_flags) and its
>>> value is used in all the prerequisites of "libelf.o" which includes
>>> "libelf-temp.o" and for example "libelf-dominfo.o". So the only thing
>>> preventing $(COV_FLAGS) from been added when building "libelf-tools.o"
>>> for example is that we set `COV_FLAGS:=` for "libelf.o".
>>
>> Yet doesn't that (again) mean things should actually work as-is, [...]
> 
> No, because I've explain how it should work, in the hypothetical world
> where we have `targets += libelf-temp.o $(libelf-objs)`.

Yes and no: Why would the COV_FLAGS propagation to prereqs not work today?
Whether libelf-*.o are prereqs to libelf-temp.o or to libelf.o shouldn't
matter, nor should it matter whether libelf-temp.o or libelf.o (or both)
are listed in $(targets). As soon as either libelf-temp.o or libelf.o has
COV_FLAGS overridden (to empty), libelf-*.o ought to be built with empty
COV_FLAGS. What am I missing?

Jan


From xen-devel-bounces@lists.xenproject.org Mon Jan 22 11:05:58 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 22 Jan 2024 11:05:58 +0000
Received: from list by lists.xenproject.org with outflank-mailman.669764.1042170 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rRs7p-0008A8-PN; Mon, 22 Jan 2024 11:05:57 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 669764.1042170; Mon, 22 Jan 2024 11:05:57 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rRs7p-0008A1-Mq; Mon, 22 Jan 2024 11:05:57 +0000
Received: by outflank-mailman (input) for mailman id 669764;
 Mon, 22 Jan 2024 11:05:57 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=L7P8=JA=cloud.com=anthony.perard@srs-se1.protection.inumbo.net>)
 id 1rRs7o-00089d-V2
 for xen-devel@lists.xenproject.org; Mon, 22 Jan 2024 11:05:56 +0000
Received: from mail-wr1-x42f.google.com (mail-wr1-x42f.google.com
 [2a00:1450:4864:20::42f])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 35ecc139-b916-11ee-9b0f-b553b5be7939;
 Mon, 22 Jan 2024 12:05:54 +0100 (CET)
Received: by mail-wr1-x42f.google.com with SMTP id
 ffacd0b85a97d-33934567777so1065162f8f.1
 for <xen-devel@lists.xenproject.org>; Mon, 22 Jan 2024 03:05:54 -0800 (PST)
Received: from perard.uk.xensource.com (default-46-102-197-194.interdsl.co.uk.
 [46.102.197.194]) by smtp.gmail.com with ESMTPSA id
 y14-20020adff6ce000000b00337d85a5b0fsm9648571wrp.114.2024.01.22.03.05.54
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 22 Jan 2024 03:05:54 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 35ecc139-b916-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1705921554; x=1706526354; darn=lists.xenproject.org;
        h=in-reply-to:content-disposition:mime-version:references:message-id
         :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to;
        bh=x0XYnqPg3hrQx3qGSrK7fbANNM6gmca3vhl10tKBA1c=;
        b=wRqQL/XyDe2TkN6yLuUspMU9dJtOZbYvsO7b1OaGGA2ym4b/dT5kZ0KKwMsAhKIBQb
         JGHe3N24rcvC8O3Qoy0HUfzVgbbNLSZAmKC1kLHSQhGLBmXKzIj3YeoC7NNDHliI9lS1
         rY41NCuur67jIW3d2HiQ4iONZSQ++uAr/Y8Kc=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705921554; x=1706526354;
        h=in-reply-to:content-disposition:mime-version:references:message-id
         :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to;
        bh=x0XYnqPg3hrQx3qGSrK7fbANNM6gmca3vhl10tKBA1c=;
        b=U9yCiY0PgWGAzz5fBwL0Kyf/wTlzIQuQPIgg+4Dpd5sKeyjLdNTAbLNn1Y4Cix7Rji
         is18M2ezRggHZ8rI6v71CJNno6G2D6Sy/QqfYI1WDxCX0VmUUjNnu4qSvMkl+8xkY1JE
         j8kcH9TJZ5NIOTX5cptYMmRpSGXgW0AnB0v6xCzaBto8mLS+Xa28h/vbBVmOaK+S6LJY
         t/jS83EBvUTtoNoIc35qMp9vs9IKNuihjIQ8gxU8ezD6qpUixi67wAJe5I1NQnf2AIql
         Je3TvJRy5TuBd4kLQI4VDTj0b4cWKtEnWx6UVUiQXHjoT6cGlnaL1HtmSDA5qmbj9395
         lnYg==
X-Gm-Message-State: AOJu0YxEqGf3Md3iuG8DSL9UaWW20bcEj7D2PQaXmDIlyi1tA5GEYexw
	8O7C5bhvk38ZETTLb2yHCdkSAYjaD+2zyCE0HhTyXCX7f8XhQzQD+0GTc7N0yHc=
X-Google-Smtp-Source: AGHT+IE2kMkF2Qyo1oqMZG/M4fVEpZhbArJQk9ahTDfZRdSPQtQVG9LwnOhCO56OxiqSX7doldPXxg==
X-Received: by 2002:a5d:5951:0:b0:339:22d2:adf3 with SMTP id e17-20020a5d5951000000b0033922d2adf3mr2243106wri.109.1705921554423;
        Mon, 22 Jan 2024 03:05:54 -0800 (PST)
Date: Mon, 22 Jan 2024 11:05:53 +0000
From: Anthony PERARD <anthony.perard@citrix.com>
To: Jan Beulich <jbeulich@suse.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
	George Dunlap <george.dunlap@citrix.com>,
	Julien Grall <julien@xen.org>,
	Stefano Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>,
	Javi Merino <javi.merino@cloud.com>, xen-devel@lists.xenproject.org,
	Michal Orzel <michal.orzel@amd.com>
Subject: Re: [PATCH] coverage: filter out lib{fdt,elf}-temp.o
Message-ID: <d4842805-7e94-49ce-8f14-78642f469e02@perard>
References: <20240118120641.24824-1-michal.orzel@amd.com>
 <8057ae41-43b5-4469-b691-4e7f16b8dd4d@suse.com>
 <e399890c-0299-4ec5-884e-0637ae6cb5b0@perard>
 <9d552e6d-eb5d-4ccf-a35d-a359df7c4478@amd.com>
 <0a1c749b-8169-43b5-9921-961096f8570d@perard>
 <0437c4eb-8438-44a8-a749-aef6c4c93ef0@suse.com>
 <01dd5e72-c33c-49c7-838a-4e0eba454c05@perard>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <01dd5e72-c33c-49c7-838a-4e0eba454c05@perard>

On Mon, Jan 22, 2024 at 10:54:13AM +0000, Anthony PERARD wrote:
> On Mon, Jan 22, 2024 at 11:04:41AM +0100, Jan Beulich wrote:
> > On 19.01.2024 16:25, Anthony PERARD wrote:
> > > On Fri, Jan 19, 2024 at 09:43:30AM +0100, Michal Orzel wrote:
> > >> Is my understanding correct that by switching from extra-y to targets we are preventing these objects to
> > >> appear in non-init-objects (and thus having COV_FLAGS appended) while retaining the proper if_changed behavior?
> > >>
> > >> According to docs/misc/xen-makefiles/makefiles.rst:
> > >> Any target that utilises if_changed must be listed in $(targets),
> > >> otherwise the command line check will fail, and the target will
> > >> always be built.
> > > 
> > > Indeed, and $(extra-y) is added to $(targets) via
> > > $(targets-for-builtin).
> > > 
> > > While switching from $(extra-y) to $(targets) prevents the objects from
> > > been added to $(non-init-objets), it doesn't matter because "libelf.o"
> > > is in that variable, so $(COV_FLAGS) is added to $(_c_flags) and its
> > > value is used in all the prerequisites of "libelf.o" which includes
> > > "libelf-temp.o" and for example "libelf-dominfo.o". So the only thing
> > > preventing $(COV_FLAGS) from been added when building "libelf-tools.o"
> > > for example is that we set `COV_FLAGS:=` for "libelf.o".
> > 
> > Yet doesn't that (again) mean things should actually work as-is, [...]
> 
> No, because I've explain how it should work, in the hypothetical world
> where we have `targets += libelf-temp.o $(libelf-objs)`.

The problem is that there's currently two "paths" to build libelf-temp.o
(and even three I think for libelf-tools.o libelf-loader.o
libelf-dominfo.o):

Simplified makefile:

    obj-y := libelf.o
    extra-y := libelf-temp.o
    COV_FLAGS := -fcoverage

    __build: $(extra-y) built_in.o
    built_in.o: $(obj-y)
    libelf.o: COV_FLAGS :=
    libelf.o: libelf-temp.o

So, make can build "libelf-temp.o" as prerequisite of "__build" the
default target, or as prerequisite of "libelf.o".
In the first case, COV_FLAGS would have all the flags, and in the second
case, COV_FLAGS would be reset, but that second case is too late as make
is more likely to have already built libelf-temp.o with all the flags.

Cheers,

-- 
Anthony PERARD


From xen-devel-bounces@lists.xenproject.org Mon Jan 22 11:19:40 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 22 Jan 2024 11:19:40 +0000
Received: from list by lists.xenproject.org with outflank-mailman.669774.1042180 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rRsL0-0002Kb-16; Mon, 22 Jan 2024 11:19:34 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 669774.1042180; Mon, 22 Jan 2024 11:19:33 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rRsKz-0002KU-UY; Mon, 22 Jan 2024 11:19:33 +0000
Received: by outflank-mailman (input) for mailman id 669774;
 Mon, 22 Jan 2024 11:19:32 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=dZf3=JA=amd.com=Michal.Orzel@srs-se1.protection.inumbo.net>)
 id 1rRsKy-0002KO-Gj
 for xen-devel@lists.xenproject.org; Mon, 22 Jan 2024 11:19:32 +0000
Received: from NAM11-DM6-obe.outbound.protection.outlook.com
 (mail-dm6nam11on2061d.outbound.protection.outlook.com
 [2a01:111:f400:7eaa::61d])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 1c4e7d9d-b918-11ee-98f2-6d05b1d4d9a1;
 Mon, 22 Jan 2024 12:19:31 +0100 (CET)
Received: from DS7P222CA0013.NAMP222.PROD.OUTLOOK.COM (2603:10b6:8:2e::22) by
 PH0PR12MB5481.namprd12.prod.outlook.com (2603:10b6:510:d4::15) with
 Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.7202.34; Mon, 22 Jan 2024 11:19:25 +0000
Received: from DS1PEPF00017099.namprd05.prod.outlook.com
 (2603:10b6:8:2e:cafe::b0) by DS7P222CA0013.outlook.office365.com
 (2603:10b6:8:2e::22) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7202.34 via Frontend
 Transport; Mon, 22 Jan 2024 11:19:24 +0000
Received: from SATLEXMB03.amd.com (165.204.84.17) by
 DS1PEPF00017099.mail.protection.outlook.com (10.167.18.103) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.7202.16 via Frontend Transport; Mon, 22 Jan 2024 11:19:24 +0000
Received: from SATLEXMB03.amd.com (10.181.40.144) by SATLEXMB03.amd.com
 (10.181.40.144) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.34; Mon, 22 Jan
 2024 05:19:24 -0600
Received: from [10.252.147.188] (10.180.168.240) by SATLEXMB03.amd.com
 (10.181.40.144) with Microsoft SMTP Server id 15.1.2507.34 via Frontend
 Transport; Mon, 22 Jan 2024 05:19:22 -0600
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 1c4e7d9d-b918-11ee-98f2-6d05b1d4d9a1
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=IPHcWQ9kJmS0gyV1OztmXpG0+CqUP6K5WljNo8ltCX/quIi4v/LpB5yMlw6Ane9++bBMV7zeXWN0fbHtBXeGTbyhn5pm5QflPOVOVfXU2VHAAVXjkjyKqxHJIW7PXKTMQSG6zJef/+ow8mfUxP942t3+24bxlT/rh3aAG6I8V4e51VpLbRGay/jqyMN8pGjGbCmzYPaOrM77zGNc4efl7nrWlcHNPzDK52U0wu7l031NNI3B/fJjJ9CL+sHHZUCsmKPwfD8PKMFUhfPqIyaQnwBedCTOToN13ivjhNr/Gb/OA3kgtzTYuLhhDW/KClPC1mqUl9KTeTQj7lCniA99Rw==
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=EGQvmtIofyN7O9/Qk/4JVihYSkBbWHQUWSyRZo2mQ+8=;
 b=Dxrfg7fG8/4aPyDDpl2LNQtBgZqojBDVme5OvXDarAATafdHQA2yizAAXrlTZRjMPDBPusJDZwOZZXfZXjbYuPttnnMOANqQ7oD90XphDkYPpftQ6uo3pCB9mzEnGIpF8bxWPe+IYUVB4z4f7x9K1yJGPGaQiTgt0hn8VcwKuzJmYWe5B77CaiTyjAnH/4S4AGlS21lirNdxJTMqa0CEEbGxoJUB5F/8ugxnjOCKZ2i7NWcT1xoDA7TkdhY5fA60LwiFKuA61UPXirxiUVCnaFbnAIP0QO4UOXhB2Nle1nFkSA1vfkLKUrgKSOeTzcm1Tu+BqznM1TwnjQSJrPrZJQ==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=citrix.com 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)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=EGQvmtIofyN7O9/Qk/4JVihYSkBbWHQUWSyRZo2mQ+8=;
 b=hPoQPB7cKEyqExDs/f3eP/+nnwA1zvzK4HV5qqDaFng3mHH47o2KpVjakqnkQ7jWQnGxZOE2HFuCsSAgKV6fvd6BKn5uImO8jsvGiFC2hGxLTEeMQh5SyFqM/vDPz9OjeFn3QFcHO2k+mSsE6wt6w2BxFu5wLZ8xtUEtvSigRfo=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=SATLEXMB03.amd.com; pr=C
Message-ID: <5f5f7867-439f-4abf-9f46-5f0d7fdcab3b@amd.com>
Date: Mon, 22 Jan 2024 12:19:22 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] coverage: filter out lib{fdt,elf}-temp.o
Content-Language: en-US
To: Anthony PERARD <anthony.perard@citrix.com>, Jan Beulich
	<jbeulich@suse.com>
CC: Andrew Cooper <andrew.cooper3@citrix.com>, George Dunlap
	<george.dunlap@citrix.com>, Julien Grall <julien@xen.org>, Stefano Stabellini
	<sstabellini@kernel.org>, Wei Liu <wl@xen.org>, Javi Merino
	<javi.merino@cloud.com>, <xen-devel@lists.xenproject.org>
References: <20240118120641.24824-1-michal.orzel@amd.com>
 <8057ae41-43b5-4469-b691-4e7f16b8dd4d@suse.com>
 <e399890c-0299-4ec5-884e-0637ae6cb5b0@perard>
 <9d552e6d-eb5d-4ccf-a35d-a359df7c4478@amd.com>
 <0a1c749b-8169-43b5-9921-961096f8570d@perard>
 <0437c4eb-8438-44a8-a749-aef6c4c93ef0@suse.com>
 <01dd5e72-c33c-49c7-838a-4e0eba454c05@perard>
 <d4842805-7e94-49ce-8f14-78642f469e02@perard>
From: Michal Orzel <michal.orzel@amd.com>
In-Reply-To: <d4842805-7e94-49ce-8f14-78642f469e02@perard>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 7bit
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: DS1PEPF00017099:EE_|PH0PR12MB5481:EE_
X-MS-Office365-Filtering-Correlation-Id: d2a30eb9-f77c-4e6e-017f-08dc1b3bfd76
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam: BCL:0;
X-Microsoft-Antispam-Message-Info:
	gwzFgvx0PHgz7T8+kDEa07pBRDG/TaEfwa7j5bJj1/X2nFHOynrvwVPnmMwAsyRpc9M1hXO790ukS+48KQZt7bGGimRXHAJuA3mfROY7PmOiOLa83OO7AFUtOpXsna3WspLXneqtL7Uv1dHCyaCTJYZIOSjWZXoKu86VIPiFTmpqD0LcnJftu8Ml/OUNuFvpbCXGVr7jcny14zriifpVS+dYhbugxXVgkZdu45wTunkMJqOwFIpllZ2b0S5mHxTyayFrzK9pd3snGyLK2JhxEFNdgpgYTodfBEfE5pinPjwczgWMudBFxYoSgopq3HntU1rS7M9m9LmTb1YwnGc0any8wKeMi+85/EgVuvLCarbvRhaxl3Ds98v6KEtXmriSpTL5v4V1q9eV4MhDdZxA4xbWsgXmineUXaQVlC3yUBKvJLhnlO65glaa4QM1DBFOP/iVdhYAzH/AmzGo9jEiwyPvyMhzax89LnSYUcxSSr95Qos1GPKYNoZeKrcX2fluogs0VWiyad4svW6wpX1q++6zKT8DmwmfNASxoGolZMDhX/HyMhIbLTBN/iZLfkFMnjG3somIMetbafOfarg2gT47cCMGl35SW4Y+otowcZXbbjPQU1iOH/GO9JfN/5l0mMpFTLPiFwWjinYxKZfEvGW+FQ7UCkOkcnWzAztzUNyvUP1QYs788t4VXjw/LTOS48FsdESVPuHrirTSSgX6xaXWglPQIBfSH3pcAKNUAz35dWZ73DpFWxLsrRYbyXmOWJL3Fixd0vV4uk2u9uiZ/jOy4U++Xc27iMtQ/lUHE3oi5etihUJ5XZRHcSjZRTtS
X-Forefront-Antispam-Report:
	CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB03.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230031)(4636009)(376002)(396003)(346002)(39860400002)(136003)(230922051799003)(64100799003)(186009)(82310400011)(451199024)(1800799012)(46966006)(40470700004)(36840700001)(31686004)(40460700003)(40480700001)(336012)(426003)(53546011)(26005)(2616005)(31696002)(86362001)(82740400003)(81166007)(36756003)(356005)(41300700001)(44832011)(36860700001)(5660300002)(2906002)(47076005)(478600001)(8936002)(4326008)(8676002)(110136005)(70206006)(70586007)(16576012)(316002)(54906003)(36900700001)(43740500002);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Jan 2024 11:19:24.8376
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: d2a30eb9-f77c-4e6e-017f-08dc1b3bfd76
X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB03.amd.com]
X-MS-Exchange-CrossTenant-AuthSource:
	DS1PEPF00017099.namprd05.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR12MB5481



On 22/01/2024 12:05, Anthony PERARD wrote:
> 
> 
> On Mon, Jan 22, 2024 at 10:54:13AM +0000, Anthony PERARD wrote:
>> On Mon, Jan 22, 2024 at 11:04:41AM +0100, Jan Beulich wrote:
>>> On 19.01.2024 16:25, Anthony PERARD wrote:
>>>> On Fri, Jan 19, 2024 at 09:43:30AM +0100, Michal Orzel wrote:
>>>>> Is my understanding correct that by switching from extra-y to targets we are preventing these objects to
>>>>> appear in non-init-objects (and thus having COV_FLAGS appended) while retaining the proper if_changed behavior?
>>>>>
>>>>> According to docs/misc/xen-makefiles/makefiles.rst:
>>>>> Any target that utilises if_changed must be listed in $(targets),
>>>>> otherwise the command line check will fail, and the target will
>>>>> always be built.
>>>>
>>>> Indeed, and $(extra-y) is added to $(targets) via
>>>> $(targets-for-builtin).
>>>>
>>>> While switching from $(extra-y) to $(targets) prevents the objects from
>>>> been added to $(non-init-objets), it doesn't matter because "libelf.o"
>>>> is in that variable, so $(COV_FLAGS) is added to $(_c_flags) and its
>>>> value is used in all the prerequisites of "libelf.o" which includes
>>>> "libelf-temp.o" and for example "libelf-dominfo.o". So the only thing
>>>> preventing $(COV_FLAGS) from been added when building "libelf-tools.o"
>>>> for example is that we set `COV_FLAGS:=` for "libelf.o".
>>>
>>> Yet doesn't that (again) mean things should actually work as-is, [...]
>>
>> No, because I've explain how it should work, in the hypothetical world
>> where we have `targets += libelf-temp.o $(libelf-objs)`.
> 
> The problem is that there's currently two "paths" to build libelf-temp.o
> (and even three I think for libelf-tools.o libelf-loader.o
> libelf-dominfo.o):
> 
> Simplified makefile:
> 
>     obj-y := libelf.o
>     extra-y := libelf-temp.o
>     COV_FLAGS := -fcoverage
> 
>     __build: $(extra-y) built_in.o
>     built_in.o: $(obj-y)
>     libelf.o: COV_FLAGS :=
>     libelf.o: libelf-temp.o
> 
> So, make can build "libelf-temp.o" as prerequisite of "__build" the
> default target, or as prerequisite of "libelf.o".
> In the first case, COV_FLAGS would have all the flags, and in the second
> case, COV_FLAGS would be reset, but that second case is too late as make
> is more likely to have already built libelf-temp.o with all the flags.

Thanks for detailed explanation. I will follow your rationale in v2.

~Michal


From xen-devel-bounces@lists.xenproject.org Mon Jan 22 11:21:55 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 22 Jan 2024 11:21:55 +0000
Received: from list by lists.xenproject.org with outflank-mailman.669780.1042190 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rRsNG-0003jv-D8; Mon, 22 Jan 2024 11:21:54 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 669780.1042190; Mon, 22 Jan 2024 11:21:54 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rRsNG-0003jo-AL; Mon, 22 Jan 2024 11:21:54 +0000
Received: by outflank-mailman (input) for mailman id 669780;
 Mon, 22 Jan 2024 11:21:53 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=VPlZ=JA=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rRsNF-0003jg-IK
 for xen-devel@lists.xenproject.org; Mon, 22 Jan 2024 11:21:53 +0000
Received: from mail-lj1-x236.google.com (mail-lj1-x236.google.com
 [2a00:1450:4864:20::236])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 712cbdcf-b918-11ee-98f2-6d05b1d4d9a1;
 Mon, 22 Jan 2024 12:21:52 +0100 (CET)
Received: by mail-lj1-x236.google.com with SMTP id
 38308e7fff4ca-2cdb50d8982so32589751fa.2
 for <xen-devel@lists.xenproject.org>; Mon, 22 Jan 2024 03:21:52 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 m1-20020a056e021c2100b00362772f67a1sm1044137ilh.20.2024.01.22.03.21.49
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 22 Jan 2024 03:21:51 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 712cbdcf-b918-11ee-98f2-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1705922512; x=1706527312; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=kHBGqnsb4oN+WzK3qGlJoxKuVtHXhfOeG4UuXN/xmGA=;
        b=cqLeImj12OI/ckjVJWAZohQFxJ6pH0tGhnmG2Ah+EagCXhml859qBB+YlbA4hOSUMz
         FgcAyclGDYJUPzxpQpYbyj9oSs3KRMdMj78hX20wGQzsSu0WLvuese7MIYv0GolyQfEK
         +dlVoYyrHFLL4Lk1/WrgtgAxIECG173ZK20s3FazTBvOTL/md9iiX3ho/tZmaec5foLk
         pYkXhYEWm/NGlE6IY9b3vPf8tGnS1VjKivw7vAO9vlCmwpB8SjgFiOh8bBothdN5dgTy
         /ge4mApP+9Hg2S6Wty/W6hOY1xqwtkMr5J9wELaHGFclDg4AlXVqurA8DznmZFtfE2Fs
         sBUg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705922512; x=1706527312;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=kHBGqnsb4oN+WzK3qGlJoxKuVtHXhfOeG4UuXN/xmGA=;
        b=jQSGY/RkDTQ6JlXHa6wck9eO35xEiduSY774BU4pbNlv9X6qtOPcOf2PsnQAY6jNzv
         a+EsDCUwjZTOyQNErhk3lpfvsNqvYo2JHEqKCkOeJjqJmZPuQ7QZKiNKbin1qIqQQAkD
         hLB2FfplrhZGZ2Ovfkm4iSte/2ZzKE878zYYqB+s45s7o/xtd4YbhGu4kXEDEJwU/1FH
         6qGPzAJ9u3j8vcxLb5cpJiISq87ZFDmROAFzln7qAbzsbjzYYQM3NDo8n0lYikuYgZBy
         UvcosIidRJ7NbPat1mEmw2s9V4FoBKAq5/1qSVES5RFAtIN9vNy8I919KYtafJTDqtkk
         eeBA==
X-Gm-Message-State: AOJu0YyjcJxMZxvgyRq3hoMsW183xtdwHP36SBij1BjqMn2I25lOS3ts
	KZIRRu9rn2Ic+eTXCZwW7WDEwCbBZ+eIGkGkrUdH3A/4C8Qrd96y+o/JLUf7og==
X-Google-Smtp-Source: AGHT+IHOPdIU/Y1MpiffzGMWgDWgAIy2JnWSHTyOiORPgyjGeXgHq3D2t4V1Gr1u35MP2QKX74EdpA==
X-Received: by 2002:a2e:b0f4:0:b0:2cc:603f:5cd7 with SMTP id h20-20020a2eb0f4000000b002cc603f5cd7mr1608848ljl.6.1705922511950;
        Mon, 22 Jan 2024 03:21:51 -0800 (PST)
Message-ID: <013210fd-6ea3-4719-afcd-1da97d9cd17f@suse.com>
Date: Mon, 22 Jan 2024 12:21:47 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v5] x86/livepatch: align functions to ensure minimal
 distance between entry points
Content-Language: en-US
To: Roger Pau Monne <roger.pau@citrix.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 George Dunlap <george.dunlap@citrix.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>,
 Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>,
 Ross Lagerwall <ross.lagerwall@citrix.com>,
 Bertrand Marquis <bertrand.marquis@arm.com>,
 Michal Orzel <michal.orzel@amd.com>,
 Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
 xen-devel@lists.xenproject.org
References: <20240122110244.14091-1-roger.pau@citrix.com>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <20240122110244.14091-1-roger.pau@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 22.01.2024 12:02, Roger Pau Monne wrote:
> The minimal function size requirements for an x86 livepatch are either 5 bytes
> (for jmp) or 9 bytes (for endbr + jmp), and always 4 bytes on Arm.  Ensure that
> distance between functions entry points is always at least of the minimal
> required size for livepatch instruction replacement to be successful.
> 
> Add an additional align directive to the linker script, in order to ensure that
> the next section placed after the .text.* (per-function sections) is also
> aligned to the required boundary, so that the distance of the last function
> entry point with the next symbol is also of minimal size.
> 
> Note that it's possible for the compiler to end up using a higher function
> alignment regardless of the passed value, so this change just make sure that
> the minimum required for livepatch to work is present.  Different compilers
> handle the option differently, as clang will ignore -falign-functions value
> if it's smaller than the one that would be set by the optimization level, while
> gcc seems to always honor the function alignment passed in -falign-functions.
> In order to cope with this behavior and avoid that setting -falign-functions
> results in an alignment inferior to what the optimization level would have
> selected force x86 release builds to use a function alignment of 16 bytes.

Nit: A comma after "selected" may help readability.

> --- a/xen/Kconfig
> +++ b/xen/Kconfig
> @@ -37,6 +37,27 @@ config CC_HAS_VISIBILITY_ATTRIBUTE
>  config CC_SPLIT_SECTIONS
>  	bool
>  
> +# Set function alignment.
> +#
> +# Allow setting on a boolean basis, and then convert such selection to an
> +# integer for the build system and code to consume more easily.
> +#
> +# Requires clang >= 7.0.0
> +config CC_HAS_FUNCTION_ALIGNMENT
> +	def_bool $(cc-option,-falign-functions)

Nit: Maybe better have a blank line here?

> +config FUNCTION_ALIGNMENT_4B
> +	bool
> +config FUNCTION_ALIGNMENT_8B
> +	bool
> +config FUNCTION_ALIGNMENT_16B
> +	bool
> +config FUNCTION_ALIGNMENT
> +	int
> +	depends on CC_HAS_FUNCTION_ALIGNMENT
> +	default 16 if FUNCTION_ALIGNMENT_16B
> +	default  8 if  FUNCTION_ALIGNMENT_8B
> +	default  4 if  FUNCTION_ALIGNMENT_4B
> +
>  source "arch/$(SRCARCH)/Kconfig"
>  
>  config DEFCONFIG_LIST
>[...]
> --- a/xen/arch/x86/xen.lds.S
> +++ b/xen/arch/x86/xen.lds.S
> @@ -99,6 +99,10 @@ SECTIONS
>         *(.text)
>  #ifdef CONFIG_CC_SPLIT_SECTIONS
>         *(.text.*)
> +#endif
> +#ifdef CONFIG_FUNCTION_ALIGNMENT
> +       /* Ensure enough distance with the next placed section. */
> +       . = ALIGN(CONFIG_FUNCTION_ALIGNMENT);
>  #endif
>         *(.text.__x86_indirect_thunk_*)

I continue to fail to see how an alignment directive can guarantee minimum
distance. In the worst case such a directive inserts nothing at all. IOW
at the very least there's a non-spelled-out assumption here about the last
item in the earlier section having suitable alignment and thus, if small
in size, being suitably padded. Personally I don't think merely spelling
out such a requirement would help - it would end up being a trap for
someone to fall into.

I'm further curious why .text.__x86_indirect_thunk_* is left past the
inserted alignment. While pretty unlikely, isn't it in principle possible
for the thunks there to also need patching? Aren't we instead requiring
then that assembly functions (and thunks) all be suitably aligned as well?

Jan


From xen-devel-bounces@lists.xenproject.org Mon Jan 22 11:27:44 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 22 Jan 2024 11:27:44 +0000
Received: from list by lists.xenproject.org with outflank-mailman.669784.1042200 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rRsSq-0005QL-0D; Mon, 22 Jan 2024 11:27:40 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 669784.1042200; Mon, 22 Jan 2024 11:27:39 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rRsSp-0005QE-Tr; Mon, 22 Jan 2024 11:27:39 +0000
Received: by outflank-mailman (input) for mailman id 669784;
 Mon, 22 Jan 2024 11:27:38 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=VPlZ=JA=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rRsSo-0005Q8-Qm
 for xen-devel@lists.xenproject.org; Mon, 22 Jan 2024 11:27:38 +0000
Received: from mail-lf1-x12d.google.com (mail-lf1-x12d.google.com
 [2a00:1450:4864:20::12d])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 3e4bc6d4-b919-11ee-9b0f-b553b5be7939;
 Mon, 22 Jan 2024 12:27:36 +0100 (CET)
Received: by mail-lf1-x12d.google.com with SMTP id
 2adb3069b0e04-50e766937ddso3439074e87.3
 for <xen-devel@lists.xenproject.org>; Mon, 22 Jan 2024 03:27:36 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 m11-20020a056e020deb00b003625add635csm1269593ilj.5.2024.01.22.03.27.34
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 22 Jan 2024 03:27:35 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 3e4bc6d4-b919-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1705922856; x=1706527656; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=YBmfVqAiah0GitxWoHHnU31j+zopCoO12qCsdShFQHM=;
        b=BxasoBvMzk+P9/k1sPnEOAwaII76w3wnSxhuiT14oBrAnwXcArkgJFoRv2tWZ3XQR7
         6ck7CI5MNw+F4hf3TUxfq4eEO01iqQS2t7/vDVp+HcoUofLJtnYNBlda4BxfIJQtYufB
         oVsfbyOAEu+PzgFQLhD8d+wzHpx1U/nsTHUNcmgbBqUJjRvJHdNlOSKhmDO0cd2p92w/
         Bsu8eudv/T5P9ownTxdtdfR3irt8M4qE353G/rlvrkOKv022Jf/vgSXMp8wPT67zlA4/
         H96Ve5e4wllPkAGgT7imAYDvJ+ptPB+T+e/M8WI5NynQlUUzZfaFImT7E+2phGYvPd2R
         6x1g==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705922856; x=1706527656;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=YBmfVqAiah0GitxWoHHnU31j+zopCoO12qCsdShFQHM=;
        b=FzctuE16PPwp5C7vrEtsYZKwOJHBdLjLlaansxKVKcZRa5JPTUkg1CkwG3rcTopM5p
         6Rl8xLsBqlT5diJAqnkmBKZ+srIT4y1Ree1imJtdub3fgmSasoZAlFgzzsF+bSGgpWeD
         aSelvXqpkkwWAdPnft1pvBKS1yoTHRpv0W/Z9M+Ri2gpyGcwZRUUCiqIv+1AYDMfkB6l
         8VrTE3FL2Jj3JwnPRQ0QikW+oCc/ilHCcVALdmViZHBsq8hmbwdno9gGRhjK5dirU/Er
         PUc2fHyFYlim1LsPWbSUd7xscEreRsSQItIGsjiZu7BU0zQ9cFH49Z1f/hLZw4bBWWUT
         4gAg==
X-Gm-Message-State: AOJu0Yyleey9puML6ppRtpUBOrQzGo3UFJqNqBSfyBzJqVY9SvaAeOZ4
	vS06JkO4x4/rMajwtAJaavB+6IZd0YEvfwyh1xcuhvRQRQnv5Ov8Soh+nK4jAw==
X-Google-Smtp-Source: AGHT+IHxQb3IyXcil1c9EF5vHhRormOrtc56tIDf3/IdRlvm9QeMEpn1JZOWcTbbvh+4HDhfDQLizg==
X-Received: by 2002:a05:6512:2253:b0:50e:a9db:9b89 with SMTP id i19-20020a056512225300b0050ea9db9b89mr1888439lfu.13.1705922856046;
        Mon, 22 Jan 2024 03:27:36 -0800 (PST)
Message-ID: <f8e18554-cb03-4b6f-9a6d-0d43c068388a@suse.com>
Date: Mon, 22 Jan 2024 12:27:32 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] coverage: filter out lib{fdt,elf}-temp.o
Content-Language: en-US
To: Anthony PERARD <anthony.perard@citrix.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 George Dunlap <george.dunlap@citrix.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>,
 Javi Merino <javi.merino@cloud.com>, xen-devel@lists.xenproject.org,
 Michal Orzel <michal.orzel@amd.com>
References: <20240118120641.24824-1-michal.orzel@amd.com>
 <8057ae41-43b5-4469-b691-4e7f16b8dd4d@suse.com>
 <e399890c-0299-4ec5-884e-0637ae6cb5b0@perard>
 <9d552e6d-eb5d-4ccf-a35d-a359df7c4478@amd.com>
 <0a1c749b-8169-43b5-9921-961096f8570d@perard>
 <0437c4eb-8438-44a8-a749-aef6c4c93ef0@suse.com>
 <01dd5e72-c33c-49c7-838a-4e0eba454c05@perard>
 <d4842805-7e94-49ce-8f14-78642f469e02@perard>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <d4842805-7e94-49ce-8f14-78642f469e02@perard>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 22.01.2024 12:05, Anthony PERARD wrote:
> On Mon, Jan 22, 2024 at 10:54:13AM +0000, Anthony PERARD wrote:
>> On Mon, Jan 22, 2024 at 11:04:41AM +0100, Jan Beulich wrote:
>>> On 19.01.2024 16:25, Anthony PERARD wrote:
>>>> On Fri, Jan 19, 2024 at 09:43:30AM +0100, Michal Orzel wrote:
>>>>> Is my understanding correct that by switching from extra-y to targets we are preventing these objects to
>>>>> appear in non-init-objects (and thus having COV_FLAGS appended) while retaining the proper if_changed behavior?
>>>>>
>>>>> According to docs/misc/xen-makefiles/makefiles.rst:
>>>>> Any target that utilises if_changed must be listed in $(targets),
>>>>> otherwise the command line check will fail, and the target will
>>>>> always be built.
>>>>
>>>> Indeed, and $(extra-y) is added to $(targets) via
>>>> $(targets-for-builtin).
>>>>
>>>> While switching from $(extra-y) to $(targets) prevents the objects from
>>>> been added to $(non-init-objets), it doesn't matter because "libelf.o"
>>>> is in that variable, so $(COV_FLAGS) is added to $(_c_flags) and its
>>>> value is used in all the prerequisites of "libelf.o" which includes
>>>> "libelf-temp.o" and for example "libelf-dominfo.o". So the only thing
>>>> preventing $(COV_FLAGS) from been added when building "libelf-tools.o"
>>>> for example is that we set `COV_FLAGS:=` for "libelf.o".
>>>
>>> Yet doesn't that (again) mean things should actually work as-is, [...]
>>
>> No, because I've explain how it should work, in the hypothetical world
>> where we have `targets += libelf-temp.o $(libelf-objs)`.
> 
> The problem is that there's currently two "paths" to build libelf-temp.o
> (and even three I think for libelf-tools.o libelf-loader.o
> libelf-dominfo.o):
> 
> Simplified makefile:
> 
>     obj-y := libelf.o
>     extra-y := libelf-temp.o
>     COV_FLAGS := -fcoverage
> 
>     __build: $(extra-y) built_in.o

Oh, okay - this is the piece I was missing. Thanks for the explanation.

Jan

>     built_in.o: $(obj-y)
>     libelf.o: COV_FLAGS :=
>     libelf.o: libelf-temp.o
> 
> So, make can build "libelf-temp.o" as prerequisite of "__build" the
> default target, or as prerequisite of "libelf.o".
> In the first case, COV_FLAGS would have all the flags, and in the second
> case, COV_FLAGS would be reset, but that second case is too late as make
> is more likely to have already built libelf-temp.o with all the flags.
> 
> Cheers,
> 



From xen-devel-bounces@lists.xenproject.org Mon Jan 22 11:40:23 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 22 Jan 2024 11:40:23 +0000
Received: from list by lists.xenproject.org with outflank-mailman.669790.1042214 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rRsf2-0001KL-5X; Mon, 22 Jan 2024 11:40:16 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 669790.1042214; Mon, 22 Jan 2024 11:40:16 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rRsf2-0001KE-1h; Mon, 22 Jan 2024 11:40:16 +0000
Received: by outflank-mailman (input) for mailman id 669790;
 Mon, 22 Jan 2024 11:40:14 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=dZf3=JA=amd.com=Michal.Orzel@srs-se1.protection.inumbo.net>)
 id 1rRsf0-0001K5-I0
 for xen-devel@lists.xenproject.org; Mon, 22 Jan 2024 11:40:14 +0000
Received: from NAM11-DM6-obe.outbound.protection.outlook.com
 (mail-dm6nam11on20616.outbound.protection.outlook.com
 [2a01:111:f400:7eaa::616])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 0086a23b-b91b-11ee-98f2-6d05b1d4d9a1;
 Mon, 22 Jan 2024 12:40:13 +0100 (CET)
Received: from MW4P222CA0025.NAMP222.PROD.OUTLOOK.COM (2603:10b6:303:114::30)
 by IA0PR12MB8748.namprd12.prod.outlook.com (2603:10b6:208:482::17)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7202.34; Mon, 22 Jan
 2024 11:40:09 +0000
Received: from CO1PEPF000044EE.namprd05.prod.outlook.com
 (2603:10b6:303:114:cafe::42) by MW4P222CA0025.outlook.office365.com
 (2603:10b6:303:114::30) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7202.34 via Frontend
 Transport; Mon, 22 Jan 2024 11:40:09 +0000
Received: from SATLEXMB03.amd.com (165.204.84.17) by
 CO1PEPF000044EE.mail.protection.outlook.com (10.167.241.68) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.7202.16 via Frontend Transport; Mon, 22 Jan 2024 11:40:08 +0000
Received: from SATLEXMB08.amd.com (10.181.40.132) by SATLEXMB03.amd.com
 (10.181.40.144) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.34; Mon, 22 Jan
 2024 05:40:07 -0600
Received: from SATLEXMB03.amd.com (10.181.40.144) by SATLEXMB08.amd.com
 (10.181.40.132) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.32; Mon, 22 Jan
 2024 03:40:07 -0800
Received: from XIR-MICHALO-L1.xilinx.com (10.180.168.240) by
 SATLEXMB03.amd.com (10.181.40.144) with Microsoft SMTP Server id 15.1.2507.34
 via Frontend Transport; Mon, 22 Jan 2024 05:40:05 -0600
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 0086a23b-b91b-11ee-98f2-6d05b1d4d9a1
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=Q7GDoZNYT689a5cwnMO0Px01amYMVqj6OkSqGyz7nPCtRHD60MZZhDVGgsf6XttLgW0pWepiHvn8AbaRJR7iO24zEHYxCG02uc4v32LTlSBf8W0//gCc1R5atC8e9Unr5tD69FobQ3KoHH6QIP4GzftYLMgOTkNrPSeLEFGuX2QDiS3uj7a5jY8VA4SisI14VzWRpw/l+tjZ6LKyPqkSvxHb+2DVFUSb1k9SzltH//WyQ0slT/zLZvq3eQJCRWcUHuhkLTWg9tWhd2W/4F+QN45wNdHYhCxb5aSrTBgKAqpdHpK3Obazo71qOjct6BHjUHyzIpQddCvYt1IVhXnDXA==
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=NKpaq1f2ZKt5X7zi9tVRDBaw+aRO2JsQfZpUwyEgfbw=;
 b=HvC8TDauwwROw9LogFaJdmHItrpxZeRnIOHpxjkKE15QZ7VRgYe7yIqiMLs5cXGdGLRynt1bmINiNh4kiPAGmSqVUl+n++gFmB4rOPWLhhwOMgv+bFMZBmOo4fMT5nAOjYvmb1yPhWREjVfeAyk4Mz6k79F3Tii4FzSZlcPw59vtmaFAX9GMJJUaVTHlZ+jB4NPjLc2jniNt6wdawc814qvLkm1wcoJ/aMUnDedH7trRkX1MSi4w0zfc9uFjDW/jmG4W0P5EJfUmWvVez/K1jWMn6qVaSn550cQdv0una4+WYRZAzQtGx02mq0t8orWwbAblRAZyzv/qNfaPazDjlw==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=lists.xenproject.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)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=NKpaq1f2ZKt5X7zi9tVRDBaw+aRO2JsQfZpUwyEgfbw=;
 b=O5SZR49i+5+BcwgK1FQH77/dBKt3HEoGkWBPBiZtvWxP3S3b2qSQ+3Jx0/qQIPWzStLZAUCCTtsNYqLYBEIBVyskQlJV67hlZTZA/EKSm+1nAbDkS2qs5Q4Tx4JsxatiZRL2pzl58tu8ANqFeI7vaA+6vtfOkpJpZB1QLPm+2RU=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=SATLEXMB03.amd.com; pr=C
From: Michal Orzel <michal.orzel@amd.com>
To: <xen-devel@lists.xenproject.org>
CC: Michal Orzel <michal.orzel@amd.com>, Andrew Cooper
	<andrew.cooper3@citrix.com>, George Dunlap <george.dunlap@citrix.com>, "Jan
 Beulich" <jbeulich@suse.com>, Julien Grall <julien@xen.org>, "Stefano
 Stabellini" <sstabellini@kernel.org>, Wei Liu <wl@xen.org>,
	<anthony.perard@citrix.com>
Subject: [PATCH v2] lib{fdt,elf}: move lib{fdt,elf}-temp.o and their deps to $(targets)
Date: Mon, 22 Jan 2024 12:39:55 +0100
Message-ID: <20240122113955.45594-1-michal.orzel@amd.com>
X-Mailer: git-send-email 2.25.1
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CO1PEPF000044EE:EE_|IA0PR12MB8748:EE_
X-MS-Office365-Filtering-Correlation-Id: f3ddb282-b39d-493c-939a-08dc1b3ee30a
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam: BCL:0;
X-Microsoft-Antispam-Message-Info:
	cecJmQ9gbxV3Ho+pYblBGwSrbchucgXiD1+8H+zq4iWhdqPLphOvDzX5g4ttFeXZsJZnqo+jxILDPTYyZiOAWHJKJlO6aktBqeC6C+64kCsWQga9f1nNf4sC3LAF4neSLCSId7i/TWLKDJzU5O/WHZUDm68QqJD+cxwszKyBWabLCQXXfLBYPdk/PLDpAHmQo5SBiP9p56yr9lFTDDF3krRT5nRjtQ4BlRjD8+N0Ruo9towFsvbKbSmdmWsVNcIqU4/30AJtk2Zx6gqxzh3CfYuLr7EX5OWk1ehgSjjPzfQ5SZJ+J6rEGCuBUg6zE5AqTc2dx5fsJOKx7xXwVrDx2WOONdFfAzuHWC9+m08wU4fjOzuNIWOD6SlgBb3u+QNyqO5Y1uYNwcjZgne5Qm/BY7js53VUHxioJQID+r0zJaezlNsLMTu3qSuJ86i6SbkAOC7ss4hFudkYIRtrvl/tfKs1Vnv34JrS048EOARZS+6L1KQiH4rZt8kLR4dHpBi5SoGTzveMyIBOpNkFs9UIYkTHlME0TJf2mnwwhf/o80NoU2+ZFc27z/778SHkTbXGcZgrh/3txEGAJOhSDrW6kFqhVa0ZlR2QFaIQIdNmBmcAfWkr5XStWPpMHoIleKAvC6JNwqYq0qdeiPpwwMgwk9Px5/xsdeDtgW4p0NLE/xF5r8inunZ/dls9Q6hj9vhENFPbaU/8lEDj7J/dgAq1jvdQGoCoFt6YSY+mWwUOYmMBoAag5Wc23DkiHKvzTwjLe421FdvF2gJHaHjh0oh1Ew==
X-Forefront-Antispam-Report:
	CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB03.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230031)(4636009)(136003)(39860400002)(396003)(376002)(346002)(230922051799003)(1800799012)(82310400011)(451199024)(64100799003)(186009)(36840700001)(40470700004)(46966006)(356005)(2616005)(1076003)(336012)(426003)(6666004)(36860700001)(83380400001)(47076005)(5660300002)(2906002)(44832011)(41300700001)(4326008)(8676002)(8936002)(70586007)(54906003)(478600001)(316002)(6916009)(70206006)(36756003)(86362001)(81166007)(82740400003)(26005)(40480700001)(40460700003)(36900700001);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Jan 2024 11:40:08.9248
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: f3ddb282-b39d-493c-939a-08dc1b3ee30a
X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB03.amd.com]
X-MS-Exchange-CrossTenant-AuthSource:
	CO1PEPF000044EE.namprd05.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA0PR12MB8748

At the moment, trying to run xencov read/reset (calling SYSCTL_coverage_op
under the hood) results in a crash. This is due to a profiler trying to
access data in the .init.* sections (libfdt for Arm and libelf for x86)
that are stripped after boot. Normally, the build system compiles any
*.init.o file without COV_FLAGS. However, these two libraries are
handled differently as sections will be renamed to init after linking.

To override COV_FLAGS to empty for these libraries, lib{fdt,elf}.o were
added to nocov-y. This worked until e321576f4047 ("xen/build: start using
if_changed") that added lib{fdt,elf}-temp.o and their deps to extra-y.
This way, even though these objects appear as prerequisites of
lib{fdt,elf}.o and the settings should propagate to them, make can also
build them as a prerequisite of __build, in which case COV_FLAGS would
still have the unwanted flags. Fix it by switching to $(targets) instead.

Also, for libfdt, append libfdt.o to nocov-y only if CONFIG_OVERLAY_DTB
is not set. Otherwise, there is no section renaming and we should be able
to run the coverage.

Fixes: e321576f4047 ("xen/build: start using if_changed")
Signed-off-by: Michal Orzel <michal.orzel@amd.com>
---
Changes in v2:
 - was "coverage: filter out lib{fdt,elf}-temp.o"
 - switch to $(targets), update rationale
---
 xen/common/libelf/Makefile | 2 +-
 xen/common/libfdt/Makefile | 4 ++--
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/xen/common/libelf/Makefile b/xen/common/libelf/Makefile
index 8a4522e4e141..917d12b006f7 100644
--- a/xen/common/libelf/Makefile
+++ b/xen/common/libelf/Makefile
@@ -13,4 +13,4 @@ $(obj)/libelf.o: $(obj)/libelf-temp.o FORCE
 $(obj)/libelf-temp.o: $(addprefix $(obj)/,$(libelf-objs)) FORCE
 	$(call if_changed,ld)
 
-extra-y += libelf-temp.o $(libelf-objs)
+targets += libelf-temp.o $(libelf-objs)
diff --git a/xen/common/libfdt/Makefile b/xen/common/libfdt/Makefile
index d50487aa6e32..6ce679f98f47 100644
--- a/xen/common/libfdt/Makefile
+++ b/xen/common/libfdt/Makefile
@@ -5,10 +5,10 @@ SECTIONS := text data $(SPECIAL_DATA_SECTIONS)
 # For CONFIG_OVERLAY_DTB, libfdt functionalities will be needed during runtime.
 ifneq ($(CONFIG_OVERLAY_DTB),y)
 OBJCOPYFLAGS := $(foreach s,$(SECTIONS),--rename-section .$(s)=.init.$(s))
+nocov-y += libfdt.o
 endif
 
 obj-y += libfdt.o
-nocov-y += libfdt.o
 
 CFLAGS-y += -I$(srctree)/include/xen/libfdt/
 
@@ -18,4 +18,4 @@ $(obj)/libfdt.o: $(obj)/libfdt-temp.o FORCE
 $(obj)/libfdt-temp.o: $(addprefix $(obj)/,$(LIBFDT_OBJS)) FORCE
 	$(call if_changed,ld)
 
-extra-y += libfdt-temp.o $(LIBFDT_OBJS)
+targets += libfdt-temp.o $(LIBFDT_OBJS)
-- 
2.25.1



From xen-devel-bounces@lists.xenproject.org Mon Jan 22 11:51:09 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 22 Jan 2024 11:51:09 +0000
Received: from list by lists.xenproject.org with outflank-mailman.669795.1042224 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rRspM-00049O-6C; Mon, 22 Jan 2024 11:50:56 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 669795.1042224; Mon, 22 Jan 2024 11:50:56 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rRspM-00049H-3A; Mon, 22 Jan 2024 11:50:56 +0000
Received: by outflank-mailman (input) for mailman id 669795;
 Mon, 22 Jan 2024 11:50:54 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=wscu=JA=cloud.com=kelly.choi@srs-se1.protection.inumbo.net>)
 id 1rRspK-00047a-QT
 for xen-devel@lists.xenproject.org; Mon, 22 Jan 2024 11:50:54 +0000
Received: from mail-ed1-x542.google.com (mail-ed1-x542.google.com
 [2a00:1450:4864:20::542])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 7ed79c80-b91c-11ee-98f2-6d05b1d4d9a1;
 Mon, 22 Jan 2024 12:50:53 +0100 (CET)
Received: by mail-ed1-x542.google.com with SMTP id
 4fb4d7f45d1cf-55817a12ad8so3293900a12.2
 for <xen-devel@lists.xenproject.org>; Mon, 22 Jan 2024 03:50:53 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 7ed79c80-b91c-11ee-98f2-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1705924253; x=1706529053; darn=lists.xenproject.org;
        h=to:subject:message-id:date:from:mime-version:from:to:cc:subject
         :date:message-id:reply-to;
        bh=19UVWKeJFlw8622YiGJQdFJJuXBfX9IE6P3542eIXSM=;
        b=Id7NJgJRuJWHhdka4qQcvcr747rCjRwTgcLpIqbX0L6XY2M5y8uiWyA5Nzh5pDmwRS
         dOM6D6IwXSpjgO5G4xhkPJ4FQOsqJntq+uMKitjxPkOY2Vhnh7MsEX0cb9ve/bDLXLH5
         e2jD9xL/uvZTr3ilDJO8qCnnPe8CoZRRWopf8=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705924253; x=1706529053;
        h=to:subject:message-id:date:from:mime-version:x-gm-message-state
         :from:to:cc:subject:date:message-id:reply-to;
        bh=19UVWKeJFlw8622YiGJQdFJJuXBfX9IE6P3542eIXSM=;
        b=Z5hdbB+WCTdiTva101IB4EMnAOzJeAsZibr22ySY+YIafOP6Ev64n6/q2hrJINA5fg
         IKhFkG3nC30R/f6h5+v7kF08zsnQP2LViK/VB+oQsJCYlECJSF4tydLa+rmLDvajUGVW
         368nvZhCyxNXjHOHYRX37Z+gV+5r+shebf1PI9liTiEBKspfRmMbJxhoV7YXruDvwYyy
         x9XUoBJDB73ifDXo47G1zi6F0ECSGXtSmfcZ/zicRJbppqVXtPJ6CVx0klneyS76ByLY
         Syv+e6GbCVzREZZMdegr8zjNM2RMFqgNxFAbpUXv+YqxVGGLh9tq6vPIdkENHzmdpbk1
         QpZg==
X-Gm-Message-State: AOJu0YyzlIVOgyWhcYD0ra6UWiF4pG++ad54E9zpA5ZMI4kJyVe78Nr+
	PpDCyN1OeSYA1e1yCzf0N+/6pPeonXLo4N+wIPklqads3+cjB9hx1GcUywqNhYbtxFyJpBf7AHg
	cIP/5JxYfadiNlD8E7Ewhp/+hkQUe6bRmhsH9wZAcBh0ZFor2MvibpZP042w=
X-Google-Smtp-Source: AGHT+IG9LwzaEVHH7JTjtvQT0q3TCkJ6+mpf0FyWNMbpdgJLuV22ol7Ua8H7vLHsredhIHKbk5rNcjzxzrJjh64UYT4=
X-Received: by 2002:a17:906:a93:b0:a30:39af:5016 with SMTP id
 y19-20020a1709060a9300b00a3039af5016mr938866ejf.104.1705924252642; Mon, 22
 Jan 2024 03:50:52 -0800 (PST)
MIME-Version: 1.0
From: Kelly Choi <kelly.choi@cloud.com>
Date: Mon, 22 Jan 2024 11:50:16 +0000
Message-ID: <CAO-mL=zVL0+TQwgz6AzSm-E+BMPJvBo+J6=eSPYzH4bMXpVxbw@mail.gmail.com>
Subject: Community call recording: 18th January 2024
To: xen-devel@lists.xenproject.org
Content-Type: multipart/alternative; boundary="00000000000017c948060f877190"

--00000000000017c948060f877190
Content-Type: text/plain; charset="UTF-8"

Hi all,

After receiving community feedback, our monthly calls will be recorded.
This will enable members who couldn't attend on the day to listen in on
discussions.

Currently, these are unlisted and published on our new YouTube channel.
Only users with the specific link below will be able to access the
recording.

https://youtu.be/eIkPU6l4bzY?si=bBH2J2SF13KwAga6

Many thanks,
Kelly Choi

Community Manager
Xen Project

--00000000000017c948060f877190
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr">Hi all,=C2=A0<div><br></div><div>After receiving community=
 feedback, our monthly calls will be recorded.</div><div>This will enable m=
embers who couldn&#39;t attend on the day to listen in on discussions.=C2=
=A0</div><div><br></div><div>Currently, these are unlisted and published on=
 our new YouTube channel. Only users with the specific link below will be a=
ble to access the recording.</div><div>=C2=A0</div><div><a href=3D"https://=
youtu.be/eIkPU6l4bzY?si=3DbBH2J2SF13KwAga6">https://youtu.be/eIkPU6l4bzY?si=
=3DbBH2J2SF13KwAga6</a>=C2=A0<br clear=3D"all"><div><div dir=3D"ltr" class=
=3D"gmail_signature" data-smartmail=3D"gmail_signature"><div dir=3D"ltr"><d=
iv><br></div><div>Many thanks,</div><div>Kelly Choi</div><div><br></div><di=
v><div style=3D"color:rgb(136,136,136)">Community Manager</div><div style=
=3D"color:rgb(136,136,136)">Xen Project=C2=A0<br></div></div></div></div></=
div></div></div>

--00000000000017c948060f877190--


From xen-devel-bounces@lists.xenproject.org Mon Jan 22 11:54:30 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 22 Jan 2024 11:54:30 +0000
Received: from list by lists.xenproject.org with outflank-mailman.669798.1042234 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rRssn-0005Co-KJ; Mon, 22 Jan 2024 11:54:29 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 669798.1042234; Mon, 22 Jan 2024 11:54:29 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rRssn-0005Ch-Gu; Mon, 22 Jan 2024 11:54:29 +0000
Received: by outflank-mailman (input) for mailman id 669798;
 Mon, 22 Jan 2024 11:54:28 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=aBCN=JA=cloud.com=george.dunlap@srs-se1.protection.inumbo.net>)
 id 1rRssm-0005CZ-BQ
 for xen-devel@lists.xenproject.org; Mon, 22 Jan 2024 11:54:28 +0000
Received: from mail-lf1-x131.google.com (mail-lf1-x131.google.com
 [2a00:1450:4864:20::131])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id fd9ded43-b91c-11ee-9b0f-b553b5be7939;
 Mon, 22 Jan 2024 12:54:26 +0100 (CET)
Received: by mail-lf1-x131.google.com with SMTP id
 2adb3069b0e04-50eabbc3dccso3642465e87.2
 for <xen-devel@lists.xenproject.org>; Mon, 22 Jan 2024 03:54:26 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: fd9ded43-b91c-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1705924465; x=1706529265; darn=lists.xenproject.org;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:from:to:cc:subject:date
         :message-id:reply-to;
        bh=5hMDRr2Gj7AMdRs8MzyjaSCR8MRVLQkYK9KTkDbIHE4=;
        b=cIrVj30i/0SYaRMns9MYGY7Sj1Z54PT5eN9FQj8p9pZe8rlXKpc0+9gLfDbhA1qun/
         H8m4P98ude55I/j2S/LsfZMJSn9MLkw17TKmW79K1Le0ApbGhvM0HLhWyEGflsScq5lY
         nCQSz/4DOqv6IZx3lQUKAlj0usN1dMbWrqwwc=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705924465; x=1706529265;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to;
        bh=5hMDRr2Gj7AMdRs8MzyjaSCR8MRVLQkYK9KTkDbIHE4=;
        b=T3M3MjzAC20Tgpbo0pxEZN8jRxVCcjmRfy7SCV69BwDYwnwljkI5XpgH9WVTs+3Thc
         +yBg+sJesofk22QvY7BKyPA4N/8pZOINlibgkkmy7blcWTYvmwFtcnrtFzD852X+DDN2
         rUhc8d8KgxtVFVmeadw6UMSnKDgLlTvwJbXL9/n+09wFP4R9VxPpH8K8BI0dZ/Fg3vTy
         Qpo7+5wvksbg8Wke8hUiXCVUyaRFERZ4y768nrfcfxmyW27ofk0kUnsaILSfdSPwBMzn
         3j7dV4QZY4SpGY4bwL+biEV8e7CQcm/HMCKzXUn1DbEK0Ga1xrTOeCvXUHb60ZQ0yXrT
         UhbQ==
X-Gm-Message-State: AOJu0YweYVY5bynbhBYURiv6ZFzVVBqzIkMUDq+k7ScSRbOGMpe9dnwP
	S5VNFcYDk4QJOZPjYbFgqXCkgnX2WelidnCa3QN7GodFFEiNjyjnfiGnK5VfWVcw7BYverAeiz2
	tce1rRx9zGRgydF/UIafKzIAAPodJr+I2fczu9w==
X-Google-Smtp-Source: AGHT+IENROnMDG5gGWNI4BJS7D1AJwHTve1JKYC3SB1tIa2FR/qeVMK05cp6xkqNXYYSKrIYlSJaxSlJ5J/j+e8GQGU=
X-Received: by 2002:a05:6512:38ac:b0:50e:7e93:4d38 with SMTP id
 o12-20020a05651238ac00b0050e7e934d38mr601415lft.112.1705924465505; Mon, 22
 Jan 2024 03:54:25 -0800 (PST)
MIME-Version: 1.0
References: <CA+zSX=Z904nF0yD1grRZc1miEOhdTHqAd4j-S1j8GY+1bo9COw@mail.gmail.com>
 <Za23cKyEOl1WTvhZ@itl-email>
In-Reply-To: <Za23cKyEOl1WTvhZ@itl-email>
From: George Dunlap <george.dunlap@cloud.com>
Date: Mon, 22 Jan 2024 11:54:14 +0000
Message-ID: <CA+zSX=YNjVaGn8=kio=2iT8onHAP61pzP-dicMrr4pKJQ827gw@mail.gmail.com>
Subject: Re: Sketch of an idea for handling the "mixed workload" problem
To: Demi Marie Obenour <demi@invisiblethingslab.com>
Cc: Xen-devel <xen-devel@lists.xenproject.org>, Juergen Gross <jgross@suse.com>, 
	=?UTF-8?Q?Marek_Marczykowski=2DG=C3=B3recki?= <marmarek@invisiblethingslab.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

On Mon, Jan 22, 2024 at 12:31=E2=80=AFAM Demi Marie Obenour
<demi@invisiblethingslab.com> wrote:
>
> On Fri, Sep 29, 2023 at 05:42:16PM +0100, George Dunlap wrote:
> > The basic credit2 algorithm goes something like this:
> >
> > 1. All vcpus start with the same number of credits; about 10ms worth
> > if everyone has the same weight
> >
> > 2. vcpus burn credits as they consume cpu, based on the relative
> > weights: higher weights burn slower, lower weights burn faster
> >
> > 3. At any given point in time, the runnable vcpu with the highest
> > credit is allowed to run
> >
> > 4. When the "next runnable vcpu" on a runqueue is negative, credit is
> > reset: everyone gets another 10ms, and can carry over at most 2ms of
> > credit over the reset.
> >
> > Generally speaking, vcpus that use less than their quota and have lots
> > of interrupts are scheduled immediately, since when they wake up they
> > always have more credit than the vcpus who are burning through their
> > slices.
> >
> > But what about a situation as described recently on Matrix, where a VM
> > uses a non-negligible amount of cpu doing un-accelerated encryption
> > and decryption, which can be delayed by a few MS, as well as handling
> > audio events?  How can we make sure that:
> >
> > 1. We can run whenever interrupts happen
> > 2. We get no more than our fair share of the cpu?
> >
> > The counter-intuitive key here is that in order to achieve the above,
> > you need to *deschedule or preempt early*, so that when the interrupt
> > comes, you have spare credit to run the interrupt handler.  How do we
> > manage that?
> >
> > The idea I'm working out comes from a phrase I used in the Matrix
> > discussion, about a vcpu that "foolishly burned all its credits".
> > Naturally the thing you want to do to have credits available is to
> > save them up.
> >
> > So the idea would be this.  Each vcpu would have a "boost credit
> > ratio" and a "default boost interval"; there would be sensible
> > defaults based on typical workloads, but these could be tweaked for
> > individual VMs.
> >
> > When credit is assigned, all VMs would get the same amount of credit,
> > but divided into two "buckets", according to the boost credit ratio.
> >
> > Under certain conditions, a vcpu would be considered "boosted"; this
> > state would last either until the default boost interval, or until
> > some other event (such as a de-boost yield).
> >
> > The queue would be sorted thus:
> >
> > * Boosted vcpus, by boost credit available
> > * Non-boosted vcpus, by non-boost credit available
> >
> > Getting more boost credit means having lower priority when not
> > boosted; and burning through your boost credit means not being
> > scheduled when you need to be.
> >
> > Other ways we could consider putting a vcpu into a boosted state (some
> > discussed on Matrix or emails linked from Matrix):
> > * Xen is about to preempt, but finds that the vcpu interrupts are
> > blocked (this sort of overlaps with the "when we deliver an interrupt"
> > one)
> > * Xen is about to preempt, but finds that the (currently out-of-tree)
> > "dont_desched" bit has been set in the shared memory area
>
> I think both of these would be good.  Another one would be when Xen is
> about to deliver an interrupt to a guest, provided that there is no
> storm of interrupts.  I=E2=80=99ve seen a USB webcam cause a system-wide =
latency
> spike through what I presume is an interrupt storm, and I suspect that
> others have observed similar behavior with USB external drives.

How would you determine that a given interrupt was part of a "storm",
and what would you do differently as a result of determining that?

> > Other ways to consider de-boosting:
> > * There's a way to trigger a VMEXIT when interrupts have been
> > re-enabled; setting this up when the VM is in the boost state
>
> That=E2=80=99s a good idea, but should be conditional on =E2=80=9Cdont_de=
sched=E2=80=9D _not_
> being set.  This handles the case where the guest is running a realtime
> thread.

In which case we need some way for the "enlightened" guest to know how
to de-boost itself; a yield might do.

> Generally, I=E2=80=99d like to see something like this:
>
> - A vCPU with sufficient boost credit is boosted by Xen under the
>   following conditions:
>
>   1. Xen interrupts the guest.

I take it you mean, "delivers an interrupt to the guest"?


>   2. Xen is about to preempt, but detects that =E2=80=9Cdont_desched=E2=
=80=9D is set.
>   3. Xen is about to preempt, but detects that interrupts are disabled.
>
> - A vCPU is deboosted if:
>
>   1. It runs out of boost credit, even if =E2=80=9Cdont_desched=E2=80=9D =
is set.
>   2. An interrupt handler returns, but only if =E2=80=9Cdont_desched=E2=
=80=9D is not set.
>   3. Interrupts are re-enabled, but only if =E2=80=9Cdont_desched=E2=80=
=9D is not set.
>
>   The first case is an abnormal condition and typically means that
>   either the system is overloaded or a vCPU is running boosted for too
>   long.  To help debug this situation, Xen will log a warning and
>   increment both a system-wide and a per-domain counter.  dom0 can
>   retrieve counters for any domain, and a domain can read its own
>   counter.
>
> - When to set =E2=80=9Cdont_desched=E2=80=9D is entirely up to the guest =
kernel, but
>   there are some general rules guests should follow:
>
>   - Only set =E2=80=9Cdont_desched=E2=80=9D if there is a good reason, an=
d unset it as
>     soon as possible.  Xen gives vCPUs with =E2=80=9Cdont_desched=E2=80=
=9D set priority
>     over all other vCPUs on the system, but the amount of time a vCPU is
>     allowed to run with an elevated priority is limited.  Xen will log a
>     warning if a guest tries to run with elevated priority for too long.
>
>   - Xen boosts vCPUs before delivering an interrupt, but there should be
>     a way for a vCPU to deboost itself even before returning from the
>     interrupt handler.
>
>   - Guests should always set =E2=80=9Cdont_desched=E2=80=9D when running =
hard-realtime
>     threads (used for e.g. audio processing), even when the thread is in
>     userspace.  This ensures that Xen gives the underlying vCPU priority
>     over vCPUs
>
>   - Guests should always set =E2=80=9Cdont_desched=E2=80=9D when holding =
a spin lock,
>     but it is even better to use paravirtualized spin locks (which make
>     a hypercall into Xen and therefore allow other vCPUs to run).
>
>   - Xen does not implement priority inheritance, so guests need to do
>     that.
>
> - Max boost credits can be set by dom0 via a hypercall.
>
> The advantage of this approach is that it keeps almost all policy out of
> Xen.  The only exception is the boosting when an interrupt is received,
> but a well-behaved guest will deboost itself very quickly (by enabling
> interrupts) if the boost was not actually needed, so this should have
> very limited impact.  I think this should be enough for realtime audio,
> and it is somewhat related to (but hopefully simpler than) the KVM RFC
> from Google [1].
>
> Any thoughts on this?

Overall sounds good.  I think a good approach would be to start by
implementing it without the "dont_desched" flag, and then add that on
top later.  It sounds like you have a clear vision for what you want,
so it shouldn't be too hard to write such that adding the
"dont_desched" doesn't require a lot of pointless refactoring.

The other issue I have with this (and essentially where I got stuck
developing credit2 in the first place) is testing: how do you ensure
that it has the properties that you expect?  How do you develop a
"regression test" to make sure that server-based workloads don't have
issues in this sort of case?

 -George


From xen-devel-bounces@lists.xenproject.org Mon Jan 22 12:18:00 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 22 Jan 2024 12:18:00 +0000
Received: from list by lists.xenproject.org with outflank-mailman.669807.1042247 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rRtFR-0002ab-Ho; Mon, 22 Jan 2024 12:17:53 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 669807.1042247; Mon, 22 Jan 2024 12:17:53 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rRtFR-0002aU-Ev; Mon, 22 Jan 2024 12:17:53 +0000
Received: by outflank-mailman (input) for mailman id 669807;
 Mon, 22 Jan 2024 12:17:51 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=aFsQ=JA=invisiblethingslab.com=marmarek@srs-se1.protection.inumbo.net>)
 id 1rRtFP-0002Xh-DT
 for xen-devel@lists.xenproject.org; Mon, 22 Jan 2024 12:17:51 +0000
Received: from out2-smtp.messagingengine.com (out2-smtp.messagingengine.com
 [66.111.4.26]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 3fc17a61-b920-11ee-9b0f-b553b5be7939;
 Mon, 22 Jan 2024 13:17:48 +0100 (CET)
Received: from compute3.internal (compute3.nyi.internal [10.202.2.43])
 by mailout.nyi.internal (Postfix) with ESMTP id 095205C0175;
 Mon, 22 Jan 2024 07:17:45 -0500 (EST)
Received: from mailfrontend1 ([10.202.2.162])
 by compute3.internal (MEProxy); Mon, 22 Jan 2024 07:17:45 -0500
Received: by mail.messagingengine.com (Postfix) with ESMTPA; Mon,
 22 Jan 2024 07:17:43 -0500 (EST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 3fc17a61-b920-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=
	invisiblethingslab.com; h=cc:cc:content-type:content-type:date
	:date:from:from:in-reply-to:in-reply-to:message-id:mime-version
	:references:reply-to:subject:subject:to:to; s=fm3; t=1705925865;
	 x=1706012265; bh=wjrkwsD//Kml8KghVFOG+dVpRLvVyUQ5qRNrd7aylkg=; b=
	AdhxowG1jYradTuxXQ5HZx8jZG63iK1pZ3u+b92h3zKJ0wgYLy1I3JIbpUi7CRrn
	b8kJOo+f74UIHWkI1OwDcfG7WYLZSD0CEmGCsZDK3baMuVHB6sn6uSGBrbB9VDc6
	QZRvjLfS6tJ0nYHTnsSMBxvR5mqCO0K0VhQd3e1w2mgL5ao2C0Hl7/FnFByvvNE8
	J3QSLjSx5Dcn7+Mt4i6vUhRR9EeAZtcCfmLtQgFTQk8zWRth5KYb46U5JHMs9nO1
	gTQYhaR/nGfdX+RnLesxKztWJ1Zd5cwqN7QTxH4mbLOLYEXL+H6mUoQWDKTXWzDf
	qjGUpt9x6QmwQAbeQtDCtQ==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=
	messagingengine.com; h=cc:cc:content-type:content-type:date:date
	:feedback-id:feedback-id:from:from:in-reply-to:in-reply-to
	:message-id:mime-version:references:reply-to:subject:subject:to
	:to:x-me-proxy:x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s=
	fm3; t=1705925865; x=1706012265; bh=wjrkwsD//Kml8KghVFOG+dVpRLvV
	yUQ5qRNrd7aylkg=; b=tFoZVXa9+omN3ALY97pK08Rdkj1V2oUwUb4AjMqZNpFi
	Blrat3I2iTuswkbsHf0OWXXhec0MyPQM2ZVgvetztfn8aS7470+GebUu2cRbWruP
	VYBNOSzFaZPSj63K2kcgtyzRMkmw5AaYCYuTlbN3kTwAXy/yk3io0YYN/M5F5FNX
	9Q9meoEuwaLzAQoUp25X6q1pt6IuvqSGMp4brCM24nK+j8jrdP9e60ZhBfLkCNYm
	yy4SFT6gpOE1NI73wuNIzqKPpoCoR/RMidZygDHxZ4bVF6Ojz4E/x0GTNzEXamPM
	uWiOc3zyHKSr1rWG8E96PfuJufcZoRZ2b5bUvFsEJg==
X-ME-Sender: <xms:6FyuZSHbgsaoAbczTx8I9252kFEr5MISWwxvFFQ93m81bllgFsEZjQ>
    <xme:6FyuZTUP-f5HNeIMNeFl3Fg0GFSVemxIE2hs788iQT5hokMGMvb9BvOwuF6Ze97vz
    OZKceZtvpST0w>
X-ME-Received: <xmr:6FyuZcJv8UV2fQkYEZodWwgj1PRf4Y69zzpRTJ8DL07bAVNjvkG39ouv4E8K-Cpi8Wt2y311g0QcNkXUqAksv22p5193VGZjrQ>
X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvkedrvdekiedgfeeiucetufdoteggodetrfdotf
    fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen
    uceurghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmne
    cujfgurhepfffhvfevuffkfhggtggujgesghdtreertddtjeenucfhrhhomhepofgrrhgv
    khcuofgrrhgtiiihkhhofihskhhiqdfikphrvggtkhhiuceomhgrrhhmrghrvghksehinh
    hvihhsihgslhgvthhhihhnghhslhgrsgdrtghomheqnecuggftrfgrthhtvghrnhepgfdu
    leetfeevhfefheeiteeliefhjefhleduveetteekveettddvgeeuteefjedunecuvehluh
    hsthgvrhfuihiivgeptdenucfrrghrrghmpehmrghilhhfrhhomhepmhgrrhhmrghrvghk
    sehinhhvihhsihgslhgvthhhihhnghhslhgrsgdrtghomh
X-ME-Proxy: <xmx:6FyuZcFN8Dnj5sC2flPCmj-e-DlOz9XqMT5cWfhl9I-xv3SIFQKQ5Q>
    <xmx:6FyuZYVFXNl_50mUr83Bkuo5q9FjUKNgc0StCR2QOT-fflN5F2ybpw>
    <xmx:6FyuZfOzQWCy7C5g5h8xcMq7eV7YFVgr793K0prtJL38Y6_emm-J0w>
    <xmx:6VyuZTfwgO8XJdtLUceuixW9I9wcOnJF5MccvOlCXq-d1IY9ze94vA>
Feedback-ID: i1568416f:Fastmail
Date: Mon, 22 Jan 2024 13:17:41 +0100
From: Marek =?utf-8?Q?Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
To: George Dunlap <george.dunlap@cloud.com>
Cc: Demi Marie Obenour <demi@invisiblethingslab.com>,
	Xen-devel <xen-devel@lists.xenproject.org>,
	Juergen Gross <jgross@suse.com>
Subject: Re: Sketch of an idea for handling the "mixed workload" problem
Message-ID: <Za5c5pm9Qai82zvf@mail-itl>
References: <CA+zSX=Z904nF0yD1grRZc1miEOhdTHqAd4j-S1j8GY+1bo9COw@mail.gmail.com>
 <Za23cKyEOl1WTvhZ@itl-email>
 <CA+zSX=YNjVaGn8=kio=2iT8onHAP61pzP-dicMrr4pKJQ827gw@mail.gmail.com>
MIME-Version: 1.0
Content-Type: multipart/signed; micalg=pgp-sha256;
	protocol="application/pgp-signature"; boundary="vLlQ3zIYsq/GZ1dK"
Content-Disposition: inline
In-Reply-To: <CA+zSX=YNjVaGn8=kio=2iT8onHAP61pzP-dicMrr4pKJQ827gw@mail.gmail.com>


--vLlQ3zIYsq/GZ1dK
Content-Type: text/plain; protected-headers=v1; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable
Date: Mon, 22 Jan 2024 13:17:41 +0100
From: Marek =?utf-8?Q?Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
To: George Dunlap <george.dunlap@cloud.com>
Cc: Demi Marie Obenour <demi@invisiblethingslab.com>,
	Xen-devel <xen-devel@lists.xenproject.org>,
	Juergen Gross <jgross@suse.com>
Subject: Re: Sketch of an idea for handling the "mixed workload" problem

On Mon, Jan 22, 2024 at 11:54:14AM +0000, George Dunlap wrote:
> The other issue I have with this (and essentially where I got stuck
> developing credit2 in the first place) is testing: how do you ensure
> that it has the properties that you expect? =20

Audio is actually quite nice use case at this, since it's quite
sensitive for scheduling jitter. I think even a simple "PCI passthrough a
sound card and play/record something" should show results. Especially
you can measure how hard you can push the system (for example artificial
load in other domains) until it breaks.

> How do you develop a
> "regression test" to make sure that server-based workloads don't have
> issues in this sort of case?

For this I believe there are several benchmarking methods already,
starting with old trusty "Linux kernel build time".

--=20
Best Regards,
Marek Marczykowski-G=C3=B3recki
Invisible Things Lab

--vLlQ3zIYsq/GZ1dK
Content-Type: application/pgp-signature; name="signature.asc"

-----BEGIN PGP SIGNATURE-----

iQEzBAEBCAAdFiEEhrpukzGPukRmQqkK24/THMrX1ywFAmWuXOYACgkQ24/THMrX
1yzjKAf/XztYiSO2yHgUmrbN1EhUuzdfsX9PTsgA0MiPySP6PrVixK52HxwRaeXU
YQ6IfiOzJiX9e9IwY73QIy/lMvoY3acIDi1PAAcWhe5xLB28aeRNANU4B0TISAFs
7pn26G7DuHTJl6cOUGKRRSJM/2yvoHLrBrB9g6nzT0gA6wuHZu3wffFA/zz3vPDe
JVGSf9tuekF4Op5NfK/CbdipDCcCv/1+VgxfrlHz7Z9tSCYIPLvLZ9ffbkDl13FM
W3rBMenhE3lcbkpH5qa4S2p9d9mF23nrdCWocIGdi9c0Pmkxai2NNwG0rEp81btQ
7d+OTTLT6R5C8BR0fDiyEz53Vm36RA==
=lehY
-----END PGP SIGNATURE-----

--vLlQ3zIYsq/GZ1dK--


From xen-devel-bounces@lists.xenproject.org Mon Jan 22 12:26:18 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 22 Jan 2024 12:26:18 +0000
Received: from list by lists.xenproject.org with outflank-mailman.669811.1042257 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rRtNW-00051g-Bi; Mon, 22 Jan 2024 12:26:14 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 669811.1042257; Mon, 22 Jan 2024 12:26:14 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rRtNW-00051Z-8l; Mon, 22 Jan 2024 12:26:14 +0000
Received: by outflank-mailman (input) for mailman id 669811;
 Mon, 22 Jan 2024 12:26:13 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=aBCN=JA=cloud.com=george.dunlap@srs-se1.protection.inumbo.net>)
 id 1rRtNU-00051T-VN
 for xen-devel@lists.xenproject.org; Mon, 22 Jan 2024 12:26:13 +0000
Received: from mail-lj1-x229.google.com (mail-lj1-x229.google.com
 [2a00:1450:4864:20::229])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 6c5a3bd4-b921-11ee-98f2-6d05b1d4d9a1;
 Mon, 22 Jan 2024 13:26:09 +0100 (CET)
Received: by mail-lj1-x229.google.com with SMTP id
 38308e7fff4ca-2cd1232a2c7so40224701fa.0
 for <xen-devel@lists.xenproject.org>; Mon, 22 Jan 2024 04:26:09 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 6c5a3bd4-b921-11ee-98f2-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1705926369; x=1706531169; darn=lists.xenproject.org;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:from:to:cc:subject:date
         :message-id:reply-to;
        bh=TF2q+4ijXl7Qd26J+2z+A9aEQDavlu2PRyo3ae06Ynw=;
        b=KWxnZ8uxF7xXyYG/UD6UhZN/ig8kDKMlO5hgTjamtgKAAeyFeORshRQAX23I3we09K
         UBrfTVYrRcn2PbkCdyVD4H6VOrYNA1CzUXszYqhjxvGnGZRf2u4R/+1zjsf1dKZ+2jLc
         /P3HW2hh13O5URGk9opv6+JuBRQmsQJ+okSn8=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705926369; x=1706531169;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to;
        bh=TF2q+4ijXl7Qd26J+2z+A9aEQDavlu2PRyo3ae06Ynw=;
        b=rNF/XjvGzgmhxlxaj4rKE3AqtHtddpCEDYgJbXO4TmpJ63BbMC53Wz3M62u26woxaC
         hykdqoC4a4+pQWg5paUYsDW2CzuR9y1C2PGlwjh3QFPS4K4lNGupD8M5bOb9Y+MlwOvQ
         +7x9M+mgK/U7G+DL9k7ze5g9Ww0iaC3eyFY4BIpqOY2Uzdqg98Y7vgzqpZj5UbwnYd2H
         aSHesUhy0DDHhQvwMsqlSDhBhAke2OgoQ1QN5WzkMpHBMDoIZ5y9lf1kd7VgzTXEY/3J
         1inBNPZga3d0df3gEjcqzEL7pzRuDBwQtigQVhfKl7SO2wsbAeWawzHVFBAvQuRGxg/6
         yAZg==
X-Gm-Message-State: AOJu0Yxop/f4k+rkm43shErXjt5rzfwBcf4/C42dCF6ctlBbCNPJ6GoS
	Uv2+YwPRPV6orr4pEArH1v4ZTPtmLUkJKwSxBwH+U6lQCtKWoYKETd9kQzzVkvPIt6UhvWFFaBT
	MlUtFTNAvCoT2ed6YTTfiLKTo4BILXeSb88lPyg==
X-Google-Smtp-Source: AGHT+IGC5VPyxeJos5mzEVceRgjhL0DuAMvmLsAMwoqKkb59+yuE0J3T4LoAa8FPayBHvvjpLaKDccxeowzOTGwMIuY=
X-Received: by 2002:a2e:b711:0:b0:2cd:217:4602 with SMTP id
 j17-20020a2eb711000000b002cd02174602mr1688005ljo.36.1705926369380; Mon, 22
 Jan 2024 04:26:09 -0800 (PST)
MIME-Version: 1.0
References: <CA+zSX=Z904nF0yD1grRZc1miEOhdTHqAd4j-S1j8GY+1bo9COw@mail.gmail.com>
 <Za23cKyEOl1WTvhZ@itl-email> <CA+zSX=YNjVaGn8=kio=2iT8onHAP61pzP-dicMrr4pKJQ827gw@mail.gmail.com>
 <Za5c5pm9Qai82zvf@mail-itl>
In-Reply-To: <Za5c5pm9Qai82zvf@mail-itl>
From: George Dunlap <george.dunlap@cloud.com>
Date: Mon, 22 Jan 2024 12:25:58 +0000
Message-ID: <CA+zSX=Zu1e1JSkje9=s5jtEsoT8vmNVhSbC3bJY5Nu-UWTA+gw@mail.gmail.com>
Subject: Re: Sketch of an idea for handling the "mixed workload" problem
To: =?UTF-8?Q?Marek_Marczykowski=2DG=C3=B3recki?= <marmarek@invisiblethingslab.com>
Cc: Demi Marie Obenour <demi@invisiblethingslab.com>, Xen-devel <xen-devel@lists.xenproject.org>, 
	Juergen Gross <jgross@suse.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

On Mon, Jan 22, 2024 at 12:17=E2=80=AFPM Marek Marczykowski-G=C3=B3recki
<marmarek@invisiblethingslab.com> wrote:
>
> On Mon, Jan 22, 2024 at 11:54:14AM +0000, George Dunlap wrote:
> > The other issue I have with this (and essentially where I got stuck
> > developing credit2 in the first place) is testing: how do you ensure
> > that it has the properties that you expect?
>
> Audio is actually quite nice use case at this, since it's quite
> sensitive for scheduling jitter. I think even a simple "PCI passthrough a
> sound card and play/record something" should show results. Especially
> you can measure how hard you can push the system (for example artificial
> load in other domains) until it breaks.

Are we going have a gitlab runner which says, "Marek sits in front of
his test machine and listens to audio for pops"? :-)

>
> > How do you develop a
> > "regression test" to make sure that server-based workloads don't have
> > issues in this sort of case?
>
> For this I believe there are several benchmarking methods already,
> starting with old trusty "Linux kernel build time".

First of all, AFAICT "Linux kernel bulid time" is not representative
of almost any actual server workload; and the end-to-end throughput
completely misses what most server workloads will actually care about,
like latency.

Secondly, what you're testing isn't the performance of a single
workload on an empty system; you're testing how workloads *interact*.
If you want ideal throughput for a single workload on an empty system,
use the null scheduler; more complex schedulers are only necessary
when multiple different workloads interact.

FWIW this was my first stab at trying to be systematic about testing
the scheduler:

https://github.com/gwd/schedbench

The rump kernel project has basically died AFAIK, so anyone trying to
resurrect this would probably have to try to rebase that bit of it
against something like XTF or unikernels.

 -George


From xen-devel-bounces@lists.xenproject.org Mon Jan 22 12:46:19 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 22 Jan 2024 12:46:19 +0000
Received: from list by lists.xenproject.org with outflank-mailman.669817.1042275 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rRtgr-0001mR-Bs; Mon, 22 Jan 2024 12:46:13 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 669817.1042275; Mon, 22 Jan 2024 12:46:13 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rRtgr-0001lP-4v; Mon, 22 Jan 2024 12:46:13 +0000
Received: by outflank-mailman (input) for mailman id 669817;
 Mon, 22 Jan 2024 12:46:11 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=wscu=JA=cloud.com=kelly.choi@srs-se1.protection.inumbo.net>)
 id 1rRtgp-0001gs-CH
 for xen-devel@lists.xenproject.org; Mon, 22 Jan 2024 12:46:11 +0000
Received: from mail-ej1-x636.google.com (mail-ej1-x636.google.com
 [2a00:1450:4864:20::636])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 36dc0878-b924-11ee-9b0f-b553b5be7939;
 Mon, 22 Jan 2024 13:46:08 +0100 (CET)
Received: by mail-ej1-x636.google.com with SMTP id
 a640c23a62f3a-a30799d6aa0so51094966b.3
 for <xen-devel@lists.xenproject.org>; Mon, 22 Jan 2024 04:46:08 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 36dc0878-b924-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1705927568; x=1706532368; darn=lists.xenproject.org;
        h=to:subject:message-id:date:from:in-reply-to:references:mime-version
         :from:to:cc:subject:date:message-id:reply-to;
        bh=QwGlIcefQzi5b40xbeEKbeTOU3dzkT6CGrYmuReqn2c=;
        b=DNS4RNVmwO/0Y4aWK4oWJ4SESow1iM783oyfmj/0o7Gmxv6W+rFtr/kIglPGKU/FPI
         7VLDa4AOvRr9jLtA57buLHN49XPk7vYSNuTjy391HLoo2CM1iN4eh7eWPTYUkysTDtuK
         4Of33LPhoDUPCEXHrpvZDsYukGGB95zJVLXCQ=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705927568; x=1706532368;
        h=to:subject:message-id:date:from:in-reply-to:references:mime-version
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=QwGlIcefQzi5b40xbeEKbeTOU3dzkT6CGrYmuReqn2c=;
        b=tHfqeFUQxJfVUtcKJFnurO89OOmV4XafBCuw44/khr3Kics7x2qipZbhH0Q0yAbVVX
         GAQY5DTWPiGQiUTZFuXjUV4ycJ0CrByEp2XvJ8j1M/Y0n+BiS/4PP2LGeWFgDBQARN8d
         vxmncGWGH08CganD9n01HSobHjhtFtl69C4voeCITM/iYDZp1rVCXnlw0tGuQJ+64ewu
         MNnwZUnfuNVL0uLi3cg4jwT76kcI+PiCQsx9EviGgc3AUIYH6ISmNx3vZ5MVkdI5+N4J
         zsK0B0ykm8d8cGTNjPWQN+WDsJ4/xreDgKFKf8fXxYK3NDe0lq27cX4l53Wx9kCQkVFc
         T70Q==
X-Gm-Message-State: AOJu0YziNd6LBi4SAsl2YnslO6fUUVbrnhtny7DhNbrezCJ1C6FKW+9w
	lu9JQDk+P98JWc6xTL1moLK8YWDQz/marbcMF759jXH0hD/oQiIP9tEGa7q/Mtz6J07/uyxK6KG
	dCPSe83i8Vnzzd1sp6JgDmQR7t/C0jeMzouNOkKyRK3ZHDh5VAld1eE8y
X-Google-Smtp-Source: AGHT+IGC0/JlLZg8TWbLba4VuF2MVtVxKCBVT6+8Xc8Kex+IvnLIprDgyspMKjNkEFR7RWAYJUp452SpkOumtYtun6c=
X-Received: by 2002:a17:907:9251:b0:a2f:de86:5cdd with SMTP id
 kb17-20020a170907925100b00a2fde865cddmr1352263ejb.41.1705927567754; Mon, 22
 Jan 2024 04:46:07 -0800 (PST)
MIME-Version: 1.0
References: <CAO-mL=yeRn02O9vN-fNnSuXpvWq1_cYDLPDc=Le+nC3gTnkUpw@mail.gmail.com>
In-Reply-To: <CAO-mL=yeRn02O9vN-fNnSuXpvWq1_cYDLPDc=Le+nC3gTnkUpw@mail.gmail.com>
From: Kelly Choi <kelly.choi@cloud.com>
Date: Mon, 22 Jan 2024 12:45:32 +0000
Message-ID: <CAO-mL=wP+PhtW092dS6Dj2h5n=2t5qYWttqNAiMEa4f6YScBeA@mail.gmail.com>
Subject: =?UTF-8?Q?Fwd=3A_The_Xen_Project=E2=80=99s_20th_Anniversary_=2D_Upcoming?=
	=?UTF-8?Q?_Social_Event=21?=
To: xen-devel@lists.xenproject.org, xen-users@lists.xenproject.org, 
	xen-announce@lists.xenproject.org
Content-Type: multipart/alternative; boundary="000000000000b05e21060f88367a"

--000000000000b05e21060f88367a
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

Hi all,

A reminder our next social will be on *Wednesday 21st February 2024 in
Cambridge! *
Please reply to me directly if you're interested in attending.

Have a chance to connect with the community! Food and drinks will be
provided.

Many thanks,
Kelly Choi

Community Manager
Xen Project


---------- Forwarded message ---------
From: Kelly Choi <kelly.choi@cloud.com>
Date: Thu, Nov 23, 2023 at 1:01=E2=80=AFPM
Subject: The Xen Project=E2=80=99s 20th Anniversary - Upcoming Social Event=
!
To: <advisory-board@lists.xenproject.org>, <xen-devel@lists.xenproject.org>=
,
<xen-users@lists.xenproject.org>


*The Xen Project=E2=80=99s 20th Anniversary*

*Let's get together for an informal social, likely to be pizza/drinks and
getting involved with the community. I hope to run these in future
locations to give everyone a chance to attend.*

*Date placeholder: Wednesday 21st February 2024*
*Location: Cambridge*
*Details TBC - **If you're interested, please reply to me directly and I
will add you to the list.*

*Celebrating Two Decades of Innovation*

It=E2=80=99s hard to believe that two decades have passed since the incepti=
on of
the Xen Project, a trailblazing force in the world of open-source
virtualization. As we raise our glasses to commemorate this momentous
occasion, it=E2=80=99s not just a celebration of time but a reflection on t=
he
incredible journey that has defined the Xen Project=E2=80=99s legacy.

*A Legacy of Innovation*

In the year 2003, the Xen Project emerged as a pioneering open-source
hypervisor, laying the groundwork for some of the most influential cloud
infrastructures that shape our digital landscape today. Over the past 20
years, the Xen Project has not only endured but has thrived, continuously
evolving to meet the dynamic demands of the ever-changing tech landscape.

*Driving Technological Frontiers*

>From data center and server virtualization to cloud computing, desktop
virtualization, and fortifying desktop security and hardware appliances,
the Xen Project has been at the forefront of driving technological
innovation. With 20 years of relentless development, it has become
synonymous with reliability, scalability, and adaptability.

*Venturing into New Horizons*

As we celebrate this milestone, we also look forward to the exciting new
territories that the Xen Project is venturing into. From embedded
virtualization to even making strides in the automotive industry, the Xen
Project continues to push boundaries and redefine what=E2=80=99s possible i=
n the
world of open-source virtualization.

*The Annual Event: Xen Project Developer and Design Summit*

At the heart of this remarkable journey is the Xen Project Developer and
Design Summit, an annual gathering of the community=E2=80=99s brilliant min=
ds and
power users. More than just a conference, it=E2=80=99s a celebration of ide=
a
exchange, a showcase of the latest advancements, a platform for sharing
invaluable experiences, and a forum for strategic planning and
collaborative efforts. Be sure to look out for our upcoming event in 2024.

*A Vibrant Community Defining the Future*

Beyond the code and technological achievements, the Xen Project=E2=80=99s s=
trength
lies in its vibrant community. It=E2=80=99s a community that has come toget=
her to
celebrate successes, overcome challenges, and collectively shape the future
of open-source virtualization technology. Even to this day, community
contributions and reviews are still going!

*Looking Ahead*

As we commemorate 20 years of innovation, we also eagerly anticipate the
next chapter in the Xen Project=E2=80=99s journey. With gratitude for the p=
ast and
excitement for the future, we extend our deepest thanks to everyone who has
contributed to this incredible legacy.

Here=E2=80=99s to 20 years of pushing boundaries, fostering collaboration, =
and
shaping the digital landscape.

Happy anniversary, Xen Project! The best is yet to come and I can=E2=80=99t=
 wait to
see what we all achieve.

Many thanks,
Kelly Choi

Open Source Community Manager
XenServer, Cloud Software Group

--000000000000b05e21060f88367a
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr">Hi all,=C2=A0<div><br></div><div>A reminder our next socia=
l will be on=C2=A0<i><b>Wednesday 21st February 2024 in Cambridge!=C2=A0</b=
></i></div><div>Please reply to me directly if you&#39;re interested in att=
ending.</div><div><br></div><div>Have a chance to connect with the communit=
y! Food and drinks will be provided.</div><div><b><i><br clear=3D"all"></i>=
</b><div><div dir=3D"ltr" class=3D"gmail_signature" data-smartmail=3D"gmail=
_signature"><div dir=3D"ltr"><div>Many thanks,</div><div>Kelly Choi</div><d=
iv><br></div><div><div style=3D"color:rgb(136,136,136)">Community Manager</=
div><div style=3D"color:rgb(136,136,136)">Xen Project=C2=A0<br></div></div>=
</div></div></div><br><br><div class=3D"gmail_quote"><div dir=3D"ltr" class=
=3D"gmail_attr">---------- Forwarded message ---------<br>From: <strong cla=
ss=3D"gmail_sendername" dir=3D"auto">Kelly Choi</strong> <span dir=3D"auto"=
>&lt;<a href=3D"mailto:kelly.choi@cloud.com">kelly.choi@cloud.com</a>&gt;</=
span><br>Date: Thu, Nov 23, 2023 at 1:01=E2=80=AFPM<br>Subject: The Xen Pro=
ject=E2=80=99s 20th Anniversary - Upcoming Social Event! <br>To:  &lt;<a hr=
ef=3D"mailto:advisory-board@lists.xenproject.org">advisory-board@lists.xenp=
roject.org</a>&gt;,  &lt;<a href=3D"mailto:xen-devel@lists.xenproject.org">=
xen-devel@lists.xenproject.org</a>&gt;,  &lt;<a href=3D"mailto:xen-users@li=
sts.xenproject.org">xen-users@lists.xenproject.org</a>&gt;<br></div><br><br=
><div dir=3D"ltr"><div><b>The Xen Project=E2=80=99s 20th Anniversary</b></d=
iv><div><br></div><div><i>Let&#39;s get=C2=A0together for an informal socia=
l, likely to be pizza/drinks and getting involved with the community. I hop=
e to run these in future locations to give everyone a chance to attend.</i>=
</div><div><i><br></i></div><div><i><b>Date placeholder: Wednesday 21st Feb=
ruary 2024</b></i></div><div><i><b>Location: Cambridge</b></i></div><div><i=
><b>Details TBC -=C2=A0</b></i><b><font color=3D"#ff0000"><i>If you&#39;re =
interested, please reply to me directly and I will add you to the list.</i>=
</font></b></div><div><br></div><div><b>Celebrating Two Decades of Innovati=
on</b><br></div><div><b><br></b></div><div>It=E2=80=99s hard to believe tha=
t two decades have passed since the inception of the Xen Project, a trailbl=
azing force in the world of open-source virtualization. As we raise our gla=
sses to commemorate this momentous occasion, it=E2=80=99s not just a celebr=
ation of time but a reflection on the incredible journey that has defined t=
he Xen Project=E2=80=99s legacy.<br><b><br>A Legacy of Innovation</b><br><b=
r>In the year 2003, the Xen Project emerged as a pioneering open-source hyp=
ervisor, laying the groundwork for some of the most influential cloud infra=
structures that shape our digital landscape today. Over the past 20 years, =
the Xen Project has not only endured but has thrived, continuously evolving=
 to meet the dynamic demands of the ever-changing tech landscape.<br><b><br=
>Driving Technological Frontiers</b><br><br>From data center and server vir=
tualization to cloud computing, desktop virtualization, and fortifying desk=
top security and hardware appliances, the Xen Project has been at the foref=
ront of driving technological innovation. With 20 years of relentless devel=
opment, it has become synonymous with reliability, scalability, and adaptab=
ility.<br><b><br>Venturing into New Horizons</b><br><br>As we celebrate thi=
s milestone, we also look forward to the exciting new territories that the =
Xen Project is venturing into. From embedded virtualization to even making =
strides in the automotive industry, the Xen Project continues to push bound=
aries and redefine what=E2=80=99s possible in the world of open-source virt=
ualization.<br><b><br>The Annual Event: Xen Project Developer and Design Su=
mmit</b><br><br>At the heart of this remarkable journey is the Xen Project =
Developer and Design Summit, an annual gathering of the community=E2=80=99s=
 brilliant minds and power users. More than just a conference, it=E2=80=99s=
 a celebration of idea exchange, a showcase of the latest advancements, a p=
latform for sharing invaluable experiences, and a forum for strategic plann=
ing and collaborative efforts. Be sure to look out for our upcoming event i=
n 2024.<br><b><br>A Vibrant Community Defining the Future</b><br><br>Beyond=
 the code and technological achievements, the Xen Project=E2=80=99s strengt=
h lies in its vibrant community. It=E2=80=99s a community that has come tog=
ether to celebrate successes, overcome challenges, and collectively shape t=
he future of open-source virtualization technology. Even to this day, commu=
nity contributions and reviews are still going!<br><br><b>Looking Ahead</b>=
<br><br>As we commemorate 20 years of innovation, we also eagerly anticipat=
e the next chapter in the Xen Project=E2=80=99s journey. With gratitude for=
 the past and excitement for the future, we extend our deepest thanks to ev=
eryone who has contributed to this incredible legacy.<br><br>Here=E2=80=99s=
 to 20 years of pushing boundaries, fostering collaboration, and shaping th=
e digital landscape.<br><br>Happy anniversary, Xen Project! The best is yet=
 to come and I can=E2=80=99t wait to see what we all achieve.<br></div><div=
><br></div><div><div dir=3D"ltr" class=3D"gmail_signature" data-smartmail=
=3D"gmail_signature"><div dir=3D"ltr"><div>Many thanks,</div><div>Kelly Cho=
i</div><div><br></div><div><div style=3D"color:rgb(136,136,136)">Open Sourc=
e Community Manager</div><div style=3D"color:rgb(136,136,136)">XenServer, C=
loud Software Group</div></div></div></div></div></div>
</div></div></div>

--000000000000b05e21060f88367a--


From xen-devel-bounces@lists.xenproject.org Mon Jan 22 12:51:05 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 22 Jan 2024 12:51:05 +0000
Received: from list by lists.xenproject.org with outflank-mailman.669845.1042293 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rRtlS-0004iE-S9; Mon, 22 Jan 2024 12:50:58 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 669845.1042293; Mon, 22 Jan 2024 12:50:58 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rRtlS-0004i7-Oc; Mon, 22 Jan 2024 12:50:58 +0000
Received: by outflank-mailman (input) for mailman id 669845;
 Mon, 22 Jan 2024 12:50:57 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=aFsQ=JA=invisiblethingslab.com=marmarek@srs-se1.protection.inumbo.net>)
 id 1rRtlR-0004hd-54
 for xen-devel@lists.xenproject.org; Mon, 22 Jan 2024 12:50:57 +0000
Received: from out2-smtp.messagingengine.com (out2-smtp.messagingengine.com
 [66.111.4.26]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id e119d910-b924-11ee-98f2-6d05b1d4d9a1;
 Mon, 22 Jan 2024 13:50:55 +0100 (CET)
Received: from compute3.internal (compute3.nyi.internal [10.202.2.43])
 by mailout.nyi.internal (Postfix) with ESMTP id A0C0C5C018C;
 Mon, 22 Jan 2024 07:50:53 -0500 (EST)
Received: from mailfrontend1 ([10.202.2.162])
 by compute3.internal (MEProxy); Mon, 22 Jan 2024 07:50:53 -0500
Received: by mail.messagingengine.com (Postfix) with ESMTPA; Mon,
 22 Jan 2024 07:50:52 -0500 (EST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: e119d910-b924-11ee-98f2-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=
	invisiblethingslab.com; h=cc:cc:content-type:content-type:date
	:date:from:from:in-reply-to:in-reply-to:message-id:mime-version
	:references:reply-to:subject:subject:to:to; s=fm3; t=1705927853;
	 x=1706014253; bh=bfRW3c2Zq4hjenClTikTgxLLOoMWuOS9/gMNrAcMxqM=; b=
	ICc6pDMkU8iUWS7/VMaF/VMHRoyTBUzY4BkOAz66AQsX2iIPfzt8uUde5H9Dsn3M
	fnEYvRQyJKa9OFVesyFFMRrZxi3J5fgkaVcXPS/Edsj92dn0h0bM4S+yv58v7quH
	kylO/kg1H54Du5OdgDq5fhtlFkOyvrZqNzDmCSJwCyFAVL6w8iqg3jnCUGxNthVK
	KTLACqrYPMtItzngklsDtD+ldb6KQQGbdly2ddG/hKff+OcBIbwEZ2PLHewu/pFk
	sbbBv46X0eiEUTTsrKpswuUhJU+48ds2OxF0ZHLN6bIdaDFNYVyYvssndmlfs4mW
	TsErcB/lVRG1XlnZp8wpiw==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=
	messagingengine.com; h=cc:cc:content-type:content-type:date:date
	:feedback-id:feedback-id:from:from:in-reply-to:in-reply-to
	:message-id:mime-version:references:reply-to:subject:subject:to
	:to:x-me-proxy:x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s=
	fm3; t=1705927853; x=1706014253; bh=bfRW3c2Zq4hjenClTikTgxLLOoMW
	uOS9/gMNrAcMxqM=; b=Vkg0IPeMtCn1f9NdEcoEi0z12J/8UECiT3tQa3NfKC7x
	7dMH26T3xeIZivBnlaSldFxRjms0Tejtx6zSRD8n/aq6Unj+UrZaTesItwDALstV
	7pqMvZy5Q3VHD17izjzFGsXDRvcUIGWLnKUuTEBRxwN3PLc+UzeQ8VLVTIbAGEh9
	Md9GFkgJs23/csTkJTsGfRyTDSsPQJ4t6r0disH48XmgyxC0JZ1qnvcFjz+0+6TT
	IvQOn0/7Wn7omK+P4kiNK946D0nRHQYpXxN5bZ1KSaLpvheSW+k4D2A7+V7etUUV
	EmidwNonjHG7Bjf2QPnW9xOikHajvg+pA5D71Io1jQ==
X-ME-Sender: <xms:rWSuZQZsbJnIEVfkR2kscjJz47ZebUZg4VpTdM89AN1v9wxn9caZmw>
    <xme:rWSuZbZ-tc3Z78aA54U930KsbUxFatsmUFxDWy6WuKEFNwK9yA_kj6OmZ0BRVRFJA
    gGb8unRnezD1Q>
X-ME-Received: <xmr:rWSuZa_PRkHq4tRwki-qqWqDBjot5toxOAZNz9nPpeAwahZa60-vzxOfCydMW6fTMaXV44JuL_zu_mLjLBjsLXotuCA0AEqBTw>
X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvkedrvdekiedggeefucetufdoteggodetrfdotf
    fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen
    uceurghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmne
    cujfgurhepfffhvfevuffkfhggtggujgesghdtreertddtjeenucfhrhhomhepofgrrhgv
    khcuofgrrhgtiiihkhhofihskhhiqdfikphrvggtkhhiuceomhgrrhhmrghrvghksehinh
    hvihhsihgslhgvthhhihhnghhslhgrsgdrtghomheqnecuggftrfgrthhtvghrnhepueek
    teetgefggfekudehteegieeljeejieeihfejgeevhfetgffgteeuteetueetnecuffhomh
    grihhnpehgihhthhhusgdrtghomhenucevlhhushhtvghrufhiiigvpedtnecurfgrrhgr
    mhepmhgrihhlfhhrohhmpehmrghrmhgrrhgvkhesihhnvhhishhisghlvghthhhinhhgsh
    hlrggsrdgtohhm
X-ME-Proxy: <xmx:rWSuZaoT9eVt09YmYMZ23s71Bu2BoP98vlaSoWK9_7__LUuQEEvDCg>
    <xmx:rWSuZbrf_-GXjLq9sTHnUElxSz8c0IGssj0P5nWZ-LJNfdL8HmIP5A>
    <xmx:rWSuZYT6USlc2lwn2WQPBJ8sWydpp41AGVMeQOAkP2dqDrxXpkV6QA>
    <xmx:rWSuZUAqt2R1-cCGbP11rkN4AiTK_1S4lkiNhP6MAAVkC8BoBWDU2A>
Feedback-ID: i1568416f:Fastmail
Date: Mon, 22 Jan 2024 13:50:50 +0100
From: Marek =?utf-8?Q?Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
To: George Dunlap <george.dunlap@cloud.com>
Cc: Demi Marie Obenour <demi@invisiblethingslab.com>,
	Xen-devel <xen-devel@lists.xenproject.org>,
	Juergen Gross <jgross@suse.com>
Subject: Re: Sketch of an idea for handling the "mixed workload" problem
Message-ID: <Za5kqtWZ4mXCFvzf@mail-itl>
References: <CA+zSX=Z904nF0yD1grRZc1miEOhdTHqAd4j-S1j8GY+1bo9COw@mail.gmail.com>
 <Za23cKyEOl1WTvhZ@itl-email>
 <CA+zSX=YNjVaGn8=kio=2iT8onHAP61pzP-dicMrr4pKJQ827gw@mail.gmail.com>
 <Za5c5pm9Qai82zvf@mail-itl>
 <CA+zSX=Zu1e1JSkje9=s5jtEsoT8vmNVhSbC3bJY5Nu-UWTA+gw@mail.gmail.com>
MIME-Version: 1.0
Content-Type: multipart/signed; micalg=pgp-sha256;
	protocol="application/pgp-signature"; boundary="M8tf+stcDvMAlpJd"
Content-Disposition: inline
In-Reply-To: <CA+zSX=Zu1e1JSkje9=s5jtEsoT8vmNVhSbC3bJY5Nu-UWTA+gw@mail.gmail.com>


--M8tf+stcDvMAlpJd
Content-Type: text/plain; protected-headers=v1; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable
Date: Mon, 22 Jan 2024 13:50:50 +0100
From: Marek =?utf-8?Q?Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
To: George Dunlap <george.dunlap@cloud.com>
Cc: Demi Marie Obenour <demi@invisiblethingslab.com>,
	Xen-devel <xen-devel@lists.xenproject.org>,
	Juergen Gross <jgross@suse.com>
Subject: Re: Sketch of an idea for handling the "mixed workload" problem

On Mon, Jan 22, 2024 at 12:25:58PM +0000, George Dunlap wrote:
> On Mon, Jan 22, 2024 at 12:17=E2=80=AFPM Marek Marczykowski-G=C3=B3recki
> <marmarek@invisiblethingslab.com> wrote:
> >
> > On Mon, Jan 22, 2024 at 11:54:14AM +0000, George Dunlap wrote:
> > > The other issue I have with this (and essentially where I got stuck
> > > developing credit2 in the first place) is testing: how do you ensure
> > > that it has the properties that you expect?
> >
> > Audio is actually quite nice use case at this, since it's quite
> > sensitive for scheduling jitter. I think even a simple "PCI passthrough=
 a
> > sound card and play/record something" should show results. Especially
> > you can measure how hard you can push the system (for example artificial
> > load in other domains) until it breaks.
>=20
> Are we going have a gitlab runner which says, "Marek sits in front of
> his test machine and listens to audio for pops"? :-)

Kinda ;)
We have already audio tests in qubes CI. They do more or less the above,
but using our audio virtualization. Play something, record in another
domain, and compare. Running the very same thing in gitlab-ci may be too
complicated (require bringing in some qubes infrastructure to make PV
audio work), but maybe similar test can be done based on qemu-emulated
audio or other pv audio solution?

> > > How do you develop a
> > > "regression test" to make sure that server-based workloads don't have
> > > issues in this sort of case?
> >
> > For this I believe there are several benchmarking methods already,
> > starting with old trusty "Linux kernel build time".
>=20
> First of all, AFAICT "Linux kernel bulid time" is not representative
> of almost any actual server workload; and the end-to-end throughput
> completely misses what most server workloads will actually care about,
> like latency.
>=20
> Secondly, what you're testing isn't the performance of a single
> workload on an empty system; you're testing how workloads *interact*.
> If you want ideal throughput for a single workload on an empty system,
> use the null scheduler; more complex schedulers are only necessary
> when multiple different workloads interact.

I should have clarified I meant `make -jNN`. But still, that's the same
workload on multiple vCPUs.

> FWIW this was my first stab at trying to be systematic about testing
> the scheduler:
>=20
> https://github.com/gwd/schedbench
>=20
> The rump kernel project has basically died AFAIK, so anyone trying to
> resurrect this would probably have to try to rebase that bit of it
> against something like XTF or unikernels.
>=20
>  -George

--=20
Best Regards,
Marek Marczykowski-G=C3=B3recki
Invisible Things Lab

--M8tf+stcDvMAlpJd
Content-Type: application/pgp-signature; name="signature.asc"

-----BEGIN PGP SIGNATURE-----

iQEzBAEBCAAdFiEEhrpukzGPukRmQqkK24/THMrX1ywFAmWuZKoACgkQ24/THMrX
1yxdOQf/fgU2PK3/aKkf52rSy8YYls9eZW5lqpAAYXzHKdVmTNEKAeRDh7MxGkLR
PpjUBaqnfOdqs9fAlt2EkM87MsE76wQ2coERlU737tbuyJJgwERfQOTG/76iMcE5
nt2b2uIxioui9iuz4qvODYJQsK8nBjojT/yKEb6RFLkAY/aG2mwH5V1zHlrbSu/F
Xb131Ik+pvYKwuPFSh3IGaEzuNuz8uz8lzzfsapOOYOQW8tqX+WrAmHilvXzXJQK
1fmOj3nAmQS6/Yhe6j+tU+KZsCazdhqwi+CaY99LmzCUwSOLZU8gHRmYy79vem1g
vQP62zH5u7HKhqesu7Ecd+7io4KCbQ==
=sCWn
-----END PGP SIGNATURE-----

--M8tf+stcDvMAlpJd--


From xen-devel-bounces@lists.xenproject.org Mon Jan 22 13:02:55 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 22 Jan 2024 13:02:55 +0000
Received: from list by lists.xenproject.org with outflank-mailman.669857.1042303 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rRtwq-00089A-0H; Mon, 22 Jan 2024 13:02:44 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 669857.1042303; Mon, 22 Jan 2024 13:02:43 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rRtwp-000893-Th; Mon, 22 Jan 2024 13:02:43 +0000
Received: by outflank-mailman (input) for mailman id 669857;
 Mon, 22 Jan 2024 13:02:42 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=aBCN=JA=cloud.com=george.dunlap@srs-se1.protection.inumbo.net>)
 id 1rRtwo-00088x-Js
 for xen-devel@lists.xenproject.org; Mon, 22 Jan 2024 13:02:42 +0000
Received: from mail-lj1-x22d.google.com (mail-lj1-x22d.google.com
 [2a00:1450:4864:20::22d])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 869bfe0a-b926-11ee-98f2-6d05b1d4d9a1;
 Mon, 22 Jan 2024 14:02:41 +0100 (CET)
Received: by mail-lj1-x22d.google.com with SMTP id
 38308e7fff4ca-2cd04078ebeso40654481fa.1
 for <xen-devel@lists.xenproject.org>; Mon, 22 Jan 2024 05:02:41 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 869bfe0a-b926-11ee-98f2-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1705928561; x=1706533361; darn=lists.xenproject.org;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:from:to:cc:subject:date
         :message-id:reply-to;
        bh=hxrhJ24YsQUhtbQ+c5UTIN74NkZAeFWwdadziIC8J+c=;
        b=WpK/8ACiLVB7B7kXsvwNC92ZL3Ds9yagXU2vcx5eXNZRiQrhAsxgya30eFcJQZIGie
         c5TDf0J8u3CwTu5Oo4uoQ74OZKslhP+Tb43NcDg1S3rD1X+dUdVlLZbYNWLV2ZiazWOr
         gDF9aWHK1LflGZWtBhr7SkpejU7l++KXgooxo=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705928561; x=1706533361;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to;
        bh=hxrhJ24YsQUhtbQ+c5UTIN74NkZAeFWwdadziIC8J+c=;
        b=TFjOE7DgLZ/B0JT8m1+YCTOs/f/JfrYWI7OX+qHb37BZB/i1afu96ddNNTBZzRHibL
         P5rdwSh+uRft4Gdj0q11RO5hMkHAyOFhqM9z97ozqhqyAgLfvuH0ESz5QLDEUXFw/AdT
         7yqwYffvYbBQZV3ZpluSXT0+VA4SgARlea8TzYhb8N+QtpphSlrxSogEfQ8WLUyOqe1z
         9y9qOABIpBhhhDBrhW7rGgHxoS5M7igG1ndD5zRnNM9JyQ8dy0mGhMFTLIAXDk0aAWY+
         ZKMPCT67Gkoj7FPmpHaeUQncpAM0pEiewzxWOC8gAZ3gOZVlxybFjyfrQ/WGJ99CHT8t
         IIUQ==
X-Gm-Message-State: AOJu0Yze/+HA/tF0/Drgxh434AMYBkSPYK/UfBUEH4GfUKQSJaIXIdLD
	XhTUlShChxVgagAEzR7argXF/dhHREDG0FK6dqZuZY3pyVtq5Ymw52RL6d+7fB1hsEiJPEGyrcT
	H6mjs7ck/ghoyKBHXx9MdcZ6TkzY87CaLGa2c1r6ipcws5cLh
X-Google-Smtp-Source: AGHT+IG1qv9ChX7cyD8nkxtEL89j43adfyN0OEYqZ8l/pFJD+YjJaULFE8prvE5uUITCyFC/1nt9iQ8eoxnw4AIRFBo=
X-Received: by 2002:a2e:7a09:0:b0:2cd:1aa5:db82 with SMTP id
 v9-20020a2e7a09000000b002cd1aa5db82mr2026468ljc.21.1705928560656; Mon, 22 Jan
 2024 05:02:40 -0800 (PST)
MIME-Version: 1.0
References: <CA+zSX=Z904nF0yD1grRZc1miEOhdTHqAd4j-S1j8GY+1bo9COw@mail.gmail.com>
 <Za23cKyEOl1WTvhZ@itl-email> <CA+zSX=YNjVaGn8=kio=2iT8onHAP61pzP-dicMrr4pKJQ827gw@mail.gmail.com>
 <Za5c5pm9Qai82zvf@mail-itl> <CA+zSX=Zu1e1JSkje9=s5jtEsoT8vmNVhSbC3bJY5Nu-UWTA+gw@mail.gmail.com>
 <Za5kqtWZ4mXCFvzf@mail-itl>
In-Reply-To: <Za5kqtWZ4mXCFvzf@mail-itl>
From: George Dunlap <george.dunlap@cloud.com>
Date: Mon, 22 Jan 2024 13:02:29 +0000
Message-ID: <CA+zSX=agZbyZNsS2ca9bEm8p+z=Y53moVfOz57Mrs-AJZmSdmg@mail.gmail.com>
Subject: Re: Sketch of an idea for handling the "mixed workload" problem
To: =?UTF-8?Q?Marek_Marczykowski=2DG=C3=B3recki?= <marmarek@invisiblethingslab.com>
Cc: Demi Marie Obenour <demi@invisiblethingslab.com>, Xen-devel <xen-devel@lists.xenproject.org>, 
	Juergen Gross <jgross@suse.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

On Mon, Jan 22, 2024 at 12:50=E2=80=AFPM Marek Marczykowski-G=C3=B3recki
<marmarek@invisiblethingslab.com> wrote:
>
> On Mon, Jan 22, 2024 at 12:25:58PM +0000, George Dunlap wrote:
> > On Mon, Jan 22, 2024 at 12:17=E2=80=AFPM Marek Marczykowski-G=C3=B3reck=
i
> > <marmarek@invisiblethingslab.com> wrote:
> > >
> > > On Mon, Jan 22, 2024 at 11:54:14AM +0000, George Dunlap wrote:
> > > > The other issue I have with this (and essentially where I got stuck
> > > > developing credit2 in the first place) is testing: how do you ensur=
e
> > > > that it has the properties that you expect?
> > >
> > > Audio is actually quite nice use case at this, since it's quite
> > > sensitive for scheduling jitter. I think even a simple "PCI passthrou=
gh a
> > > sound card and play/record something" should show results. Especially
> > > you can measure how hard you can push the system (for example artific=
ial
> > > load in other domains) until it breaks.
> >
> > Are we going have a gitlab runner which says, "Marek sits in front of
> > his test machine and listens to audio for pops"? :-)
>
> Kinda ;)
> We have already audio tests in qubes CI. They do more or less the above,
> but using our audio virtualization. Play something, record in another
> domain, and compare. Running the very same thing in gitlab-ci may be too
> complicated (require bringing in some qubes infrastructure to make PV
> audio work), but maybe similar test can be done based on qemu-emulated
> audio or other pv audio solution?
>
> > > > How do you develop a
> > > > "regression test" to make sure that server-based workloads don't ha=
ve
> > > > issues in this sort of case?
> > >
> > > For this I believe there are several benchmarking methods already,
> > > starting with old trusty "Linux kernel build time".
> >
> > First of all, AFAICT "Linux kernel bulid time" is not representative
> > of almost any actual server workload; and the end-to-end throughput
> > completely misses what most server workloads will actually care about,
> > like latency.
> >
> > Secondly, what you're testing isn't the performance of a single
> > workload on an empty system; you're testing how workloads *interact*.
> > If you want ideal throughput for a single workload on an empty system,
> > use the null scheduler; more complex schedulers are only necessary
> > when multiple different workloads interact.
>
> I should have clarified I meant `make -jNN`. But still, that's the same
> workload on multiple vCPUs.

See, you're still not getting it. :-)

What you need is not multiple vcpus across a single VM, but multiple
instances of different workloads across different VMs.  For example:

1. One VM running kernbench
2. two VMs running kernbench, but not competing for vcpu
3. four VMs running kernbench, competing for vcpus
4. three VMs running kernbench, and one playing audio
5. four VMs running kernbench, one of which is *also* playing audio

And then you have to collect several metrics:

1. Total kernbench throughput of entire system
2. Kernbench performance of each VM, compared with expected "fair share"
3. Some measure of latency for the audio VM

And figure out how to compare trade-offs -- how much total throughput
hit should we tolerate to increase fairness?  How much fairness hit
should we take to decrease latency?

And as I said, kernbench isn't really a great server workload; you
should do something request-based, measuring both throughput and
latency.

 -George


From xen-devel-bounces@lists.xenproject.org Mon Jan 22 13:03:22 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 22 Jan 2024 13:03:22 +0000
Received: from list by lists.xenproject.org with outflank-mailman.669859.1042314 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rRtxS-0000BV-Af; Mon, 22 Jan 2024 13:03:22 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 669859.1042314; Mon, 22 Jan 2024 13:03:22 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rRtxS-0000BO-5b; Mon, 22 Jan 2024 13:03:22 +0000
Received: by outflank-mailman (input) for mailman id 669859;
 Mon, 22 Jan 2024 13:03:21 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=aBCN=JA=cloud.com=george.dunlap@srs-se1.protection.inumbo.net>)
 id 1rRtxR-0000BH-Oq
 for xen-devel@lists.xenproject.org; Mon, 22 Jan 2024 13:03:21 +0000
Received: from mail-lj1-x22f.google.com (mail-lj1-x22f.google.com
 [2a00:1450:4864:20::22f])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 9d7dee52-b926-11ee-9b0f-b553b5be7939;
 Mon, 22 Jan 2024 14:03:19 +0100 (CET)
Received: by mail-lj1-x22f.google.com with SMTP id
 38308e7fff4ca-2cdeb80fdfdso33345771fa.2
 for <xen-devel@lists.xenproject.org>; Mon, 22 Jan 2024 05:03:19 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 9d7dee52-b926-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1705928599; x=1706533399; darn=lists.xenproject.org;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:from:to:cc:subject:date
         :message-id:reply-to;
        bh=Ovq7wzyJDqkQPgxoN3CUwgUnoUxL3ELGjRFUns9TKOs=;
        b=hOirl/SktCsTKiDPMnxc0kZ4FvGcvjWrMCF4Q60Wq7oFegli4Kg3Z+3PW2R4p3Xogj
         FJGjpMc9HyeZgK9zAygEuRJY11YOfy9RH29YcIETF+T0oQ7V0xtjhxCurNy26aIshzAc
         evkDRAeAedd91KO+6qLOElpG3OUMLLy4OjXFE=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705928599; x=1706533399;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to;
        bh=Ovq7wzyJDqkQPgxoN3CUwgUnoUxL3ELGjRFUns9TKOs=;
        b=Wx15R1ziDpAYn8w34ZKMGklPZ6fPN1VlvzfryCpsccWASDpbZ1y5CUUWNk7CiEd2Sy
         4rYFADEddIQSMTH0NqMmTy5RJhz7L8cxtab4IkMSlbOnnnMFFM/Wy4hnA2k5n5v4TTH3
         ReAtQoDH/kf8qlSv0PTpjleB4nZArtRdT5ziHR8iHYnvnBYmNUPduu/+2jfkpN/SUm4k
         jBTCG/MlIdVtE3MFv63/xaUG8GFNJzdovHE8jWbo6PRiuA+WRPsUF3AKT2+tU5Ct4zsS
         iro3/42j4NFSorh72U489J+XJLmU25zQNFBtkb4zVJ1oww4pT+vhutjzy8ofRzFbkOrI
         4/Hw==
X-Gm-Message-State: AOJu0YzeS1/aLB3qmDU8uu6JRJe9H3t3T8RZVy2C1S+vevdP08iH4gm4
	Z8xtsnlI6dcUyaunurtnCGIPAerEE4U2apD02e8DciEUJLpKVSLBGNoDJPcVuYVZuYMS4yS3y6A
	BW+p464HybMF/9NBmi8OJEqDSgxaEoFOLnDYO3Q==
X-Google-Smtp-Source: AGHT+IHh9sv4EOmyU7ASR91vjRCBsqDw5NreDS75LFTwZFdpBvGPyry+/DOW7GGgIJHq3WPzcRhC/ZStFQ67jcNctvo=
X-Received: by 2002:a2e:a267:0:b0:2cd:fba9:9507 with SMTP id
 k7-20020a2ea267000000b002cdfba99507mr734514ljm.36.1705928599250; Mon, 22 Jan
 2024 05:03:19 -0800 (PST)
MIME-Version: 1.0
References: <CA+zSX=Z904nF0yD1grRZc1miEOhdTHqAd4j-S1j8GY+1bo9COw@mail.gmail.com>
 <Za23cKyEOl1WTvhZ@itl-email> <CA+zSX=YNjVaGn8=kio=2iT8onHAP61pzP-dicMrr4pKJQ827gw@mail.gmail.com>
 <Za5c5pm9Qai82zvf@mail-itl> <CA+zSX=Zu1e1JSkje9=s5jtEsoT8vmNVhSbC3bJY5Nu-UWTA+gw@mail.gmail.com>
 <Za5kqtWZ4mXCFvzf@mail-itl> <CA+zSX=agZbyZNsS2ca9bEm8p+z=Y53moVfOz57Mrs-AJZmSdmg@mail.gmail.com>
In-Reply-To: <CA+zSX=agZbyZNsS2ca9bEm8p+z=Y53moVfOz57Mrs-AJZmSdmg@mail.gmail.com>
From: George Dunlap <george.dunlap@cloud.com>
Date: Mon, 22 Jan 2024 13:03:08 +0000
Message-ID: <CA+zSX=byLnFTUvFkb8RQCxdGPoz1E3w5vzaO1gTsXBBOp70OfQ@mail.gmail.com>
Subject: Re: Sketch of an idea for handling the "mixed workload" problem
To: =?UTF-8?Q?Marek_Marczykowski=2DG=C3=B3recki?= <marmarek@invisiblethingslab.com>
Cc: Demi Marie Obenour <demi@invisiblethingslab.com>, Xen-devel <xen-devel@lists.xenproject.org>, 
	Juergen Gross <jgross@suse.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

On Mon, Jan 22, 2024 at 1:02=E2=80=AFPM George Dunlap <george.dunlap@cloud.=
com> wrote:
> 2. two VMs running kernbench, but not competing for vcpu
> 3. four VMs running kernbench, competing for vcpus

Sorry, this should be competing for *P*cpus

 -George


From xen-devel-bounces@lists.xenproject.org Mon Jan 22 13:05:39 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 22 Jan 2024 13:05:39 +0000
Received: from list by lists.xenproject.org with outflank-mailman.669863.1042323 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rRtze-00011a-Kd; Mon, 22 Jan 2024 13:05:38 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 669863.1042323; Mon, 22 Jan 2024 13:05:38 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rRtze-00011T-Hc; Mon, 22 Jan 2024 13:05:38 +0000
Received: by outflank-mailman (input) for mailman id 669863;
 Mon, 22 Jan 2024 13:05:38 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rRtzd-00011I-Vd; Mon, 22 Jan 2024 13:05:37 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rRtzd-0006zU-J5; Mon, 22 Jan 2024 13:05:37 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rRtzd-0001Xf-3A; Mon, 22 Jan 2024 13:05:37 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rRtzd-0006Ij-2d; Mon, 22 Jan 2024 13:05:37 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=5w3OHkmDX0gtkrmDqXRIHoH0yBXX+Cq8hshlgEYBg7I=; b=U5KlPUK6+BivyPQ9pm8GFVXh74
	Rc8vRuP2u9ISWDVZTSfHiPiCO8DN0HB0Lgk8aclQcKyg3EbSGZS8LCAYBDXDdkvuFQy9w4SxxF9Qy
	bLz40R0tK2qRm4sSMwKe9vb61wKKqm9v8FDQFSToS31JjEwjnoLhr9cC1iYaIE6jGjZU=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184422-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [linux-linus test] 184422: tolerable FAIL - PUSHED
X-Osstest-Failures:
    linux-linus:test-armhf-armhf-libvirt:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    linux-linus:test-amd64-amd64-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    linux-linus:test-amd64-amd64-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-raw:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-qcow2:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-qemuu-nested-amd:debian-hvm-install/l1/l2:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-xsm:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-thunderx:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-xsm:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-xsm:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-thunderx:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-libvirt-xsm:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-libvirt-xsm:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-credit2:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-credit2:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-credit1:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-credit1:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-arndale:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-arndale:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-multivcpu:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-multivcpu:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-rtds:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-rtds:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-libvirt-raw:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-vhd:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-vhd:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-vhd:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-vhd:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-qcow2:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit1:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit1:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit2:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit2:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-qcow2:migrate-support-check:fail:nonblocking
X-Osstest-Versions-This:
    linux=6613476e225e090cc9aad49be7fa504e290dd33d
X-Osstest-Versions-That:
    linux=4fbbed7872677b0a28ba8237169968171a61efbd
From: osstest service owner <osstest-admin@xenproject.org>
Date: Mon, 22 Jan 2024 13:05:37 +0000

flight 184422 linux-linus real [real]
http://logs.test-lab.xenproject.org/osstest/logs/184422/

Failures :-/ but no regressions.

Tests which did not succeed, but are not blocking:
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 184418
 test-amd64-amd64-xl-qemut-win7-amd64 19 guest-stop            fail like 184418
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 184418
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 184418
 test-armhf-armhf-libvirt-raw 15 saverestore-support-check    fail  like 184418
 test-amd64-amd64-xl-qemut-ws16-amd64 19 guest-stop            fail like 184418
 test-armhf-armhf-libvirt-qcow2 15 saverestore-support-check   fail like 184418
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 184418
 test-amd64-amd64-libvirt     15 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-thunderx 15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-xsm      15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-xsm      16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-thunderx 16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl          15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl          16 saverestore-support-check    fail   never pass
 test-arm64-arm64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-xsm 16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-credit2  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit2  16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-credit1  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit1  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-arndale  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-arndale  16 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-armhf-armhf-xl-multivcpu 15 migrate-support-check        fail  never pass
 test-armhf-armhf-xl-multivcpu 16 saverestore-support-check    fail  never pass
 test-armhf-armhf-libvirt     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-rtds     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-rtds     16 saverestore-support-check    fail   never pass
 test-arm64-arm64-libvirt-raw 14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 15 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-raw 14 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-vhd      14 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-vhd      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-raw 14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      15 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-qcow2 14 migrate-support-check        fail never pass
 test-armhf-armhf-xl          15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-credit1  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit1  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-credit2  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit2  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-qcow2 14 migrate-support-check        fail never pass

version targeted for testing:
 linux                6613476e225e090cc9aad49be7fa504e290dd33d
baseline version:
 linux                4fbbed7872677b0a28ba8237169968171a61efbd

Last test of basis   184418  2024-01-21 19:40:22 Z    0 days
Testing same since   184422  2024-01-22 03:31:56 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Colin Ian King <colin.i.king@gmail.com>
  Kent Overstreet <kent.overstreet@linux.dev>
  Linus Torvalds <torvalds@linux-foundation.org>
  Su Yue <glass.su@suse.com>

jobs:
 build-amd64-xsm                                              pass    
 build-arm64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64                                                  pass    
 build-arm64                                                  pass    
 build-armhf                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-arm64-libvirt                                          pass    
 build-armhf-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-pvops                                            pass    
 build-arm64-pvops                                            pass    
 build-armhf-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-amd64-amd64-xl                                          pass    
 test-amd64-coresched-amd64-xl                                pass    
 test-arm64-arm64-xl                                          pass    
 test-armhf-armhf-xl                                          pass    
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm           pass    
 test-amd64-amd64-xl-qemut-stubdom-debianhvm-amd64-xsm        pass    
 test-amd64-amd64-xl-qemut-debianhvm-i386-xsm                 pass    
 test-amd64-amd64-xl-qemuu-debianhvm-i386-xsm                 pass    
 test-amd64-amd64-libvirt-xsm                                 pass    
 test-arm64-arm64-libvirt-xsm                                 pass    
 test-amd64-amd64-xl-xsm                                      pass    
 test-arm64-arm64-xl-xsm                                      pass    
 test-amd64-amd64-qemuu-nested-amd                            fail    
 test-amd64-amd64-xl-pvhv2-amd                                pass    
 test-amd64-amd64-dom0pvh-xl-amd                              pass    
 test-amd64-amd64-xl-qemut-debianhvm-amd64                    pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64                    pass    
 test-amd64-amd64-freebsd11-amd64                             pass    
 test-amd64-amd64-freebsd12-amd64                             pass    
 test-amd64-amd64-xl-qemuu-ovmf-amd64                         pass    
 test-amd64-amd64-xl-qemut-win7-amd64                         fail    
 test-amd64-amd64-xl-qemuu-win7-amd64                         fail    
 test-amd64-amd64-xl-qemut-ws16-amd64                         fail    
 test-amd64-amd64-xl-qemuu-ws16-amd64                         fail    
 test-armhf-armhf-xl-arndale                                  pass    
 test-amd64-amd64-examine-bios                                pass    
 test-amd64-amd64-xl-credit1                                  pass    
 test-arm64-arm64-xl-credit1                                  pass    
 test-armhf-armhf-xl-credit1                                  pass    
 test-amd64-amd64-xl-credit2                                  pass    
 test-arm64-arm64-xl-credit2                                  pass    
 test-armhf-armhf-xl-credit2                                  pass    
 test-amd64-amd64-xl-qemuu-dmrestrict-amd64-dmrestrict        pass    
 test-amd64-amd64-examine                                     pass    
 test-arm64-arm64-examine                                     pass    
 test-armhf-armhf-examine                                     pass    
 test-amd64-amd64-qemuu-nested-intel                          pass    
 test-amd64-amd64-xl-pvhv2-intel                              pass    
 test-amd64-amd64-dom0pvh-xl-intel                            pass    
 test-amd64-amd64-libvirt                                     pass    
 test-armhf-armhf-libvirt                                     pass    
 test-amd64-amd64-xl-multivcpu                                pass    
 test-armhf-armhf-xl-multivcpu                                pass    
 test-amd64-amd64-pair                                        pass    
 test-amd64-amd64-libvirt-pair                                pass    
 test-amd64-amd64-xl-pvshim                                   pass    
 test-amd64-amd64-pygrub                                      pass    
 test-amd64-amd64-libvirt-qcow2                               pass    
 test-armhf-armhf-libvirt-qcow2                               pass    
 test-amd64-amd64-libvirt-raw                                 pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-armhf-armhf-libvirt-raw                                 pass    
 test-amd64-amd64-xl-rtds                                     pass    
 test-armhf-armhf-xl-rtds                                     pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64-shadow             pass    
 test-amd64-amd64-xl-shadow                                   pass    
 test-arm64-arm64-xl-thunderx                                 pass    
 test-amd64-amd64-examine-uefi                                pass    
 test-amd64-amd64-xl-vhd                                      pass    
 test-arm64-arm64-xl-vhd                                      pass    
 test-armhf-armhf-xl-vhd                                      pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Pushing revision :

hint: The 'hooks/update' hook was ignored because it's not set as executable.
hint: You can disable this warning with `git config advice.ignoredHook false`.
hint: The 'hooks/post-receive' hook was ignored because it's not set as executable.
hint: You can disable this warning with `git config advice.ignoredHook false`.
hint: The 'hooks/post-update' hook was ignored because it's not set as executable.
hint: You can disable this warning with `git config advice.ignoredHook false`.
To xenbits.xen.org:/home/xen/git/linux-pvops.git
   4fbbed787267..6613476e225e  6613476e225e090cc9aad49be7fa504e290dd33d -> tested/linux-linus


From xen-devel-bounces@lists.xenproject.org Mon Jan 22 13:09:15 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 22 Jan 2024 13:09:15 +0000
Received: from list by lists.xenproject.org with outflank-mailman.669869.1042333 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rRu35-0002hO-3i; Mon, 22 Jan 2024 13:09:11 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 669869.1042333; Mon, 22 Jan 2024 13:09:11 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rRu35-0002hH-0U; Mon, 22 Jan 2024 13:09:11 +0000
Received: by outflank-mailman (input) for mailman id 669869;
 Mon, 22 Jan 2024 13:09:09 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=WAGQ=JA=alien8.de=bp@srs-se1.protection.inumbo.net>)
 id 1rRu32-0002gh-OW
 for xen-devel@lists.xenproject.org; Mon, 22 Jan 2024 13:09:09 +0000
Received: from mail.alien8.de (mail.alien8.de [2a01:4f9:3051:3f93::2])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 6be19ecb-b927-11ee-9b0f-b553b5be7939;
 Mon, 22 Jan 2024 14:09:06 +0100 (CET)
Received: from localhost (localhost.localdomain [127.0.0.1])
 by mail.alien8.de (SuperMail on ZX Spectrum 128k) with ESMTP id 85FBE40E01BB; 
 Mon, 22 Jan 2024 13:09:03 +0000 (UTC)
Received: from mail.alien8.de ([127.0.0.1])
 by localhost (mail.alien8.de [127.0.0.1]) (amavisd-new, port 10026)
 with ESMTP id eLLUWNaX3eQF; Mon, 22 Jan 2024 13:09:01 +0000 (UTC)
Received: from zn.tnic (pd953099d.dip0.t-ipconnect.de [217.83.9.157])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange ECDHE (P-256) server-signature ECDSA (P-256) server-digest
 SHA256) (No client certificate requested)
 by mail.alien8.de (SuperMail on ZX Spectrum 128k) with ESMTPSA id 1EFF040E0196;
 Mon, 22 Jan 2024 13:08:37 +0000 (UTC)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 6be19ecb-b927-11ee-9b0f-b553b5be7939
X-Virus-Scanned: Debian amavisd-new at mail.alien8.de
Authentication-Results: mail.alien8.de (amavisd-new); dkim=pass (4096-bit key)
	header.d=alien8.de
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=alien8.de; s=alien8;
	t=1705928940; bh=eTf0G+nsoYXpQyGDiFAXKjszCHpf9NvYJlgyMa5r3LQ=;
	h=Date:From:To:Cc:Subject:References:In-Reply-To:From;
	b=e6wfFtqitOlRYEO36RZo5CKnIlncNgICpDDk58+bdJ+2vSZnopKKWVngmLzJPdvnd
	 PgVERWwlK9f15OX3gI7Q6CwH5TS2+DzskSmgzVCtKyoqgIVR53JxG4Doxit35vgBcr
	 cR9pb5s0l4t4aPPss1i7RMMXhKlYDbiKqB1Cs502753r9tSXlOM4KHSCWHv3Xm9M/x
	 KYo3qhCRyXTZIapgX63a3gIXI8awEZRwlWBWkty3jIaZ40Cc6jb7ioHwcMcXIOsHvc
	 SQGPOqdsWAzItp/P/V3rJi0gK8hybmypxw9iVR84Y2yv1uizcVN7EgfiKI6etPN27k
	 1B4q7qm3z+GNqfnBkyMPgffLc4vE3v358b0pdMKddE//bw0gKugu7SYS+yKq98aWqv
	 yc9eH2BQXULkjmI7940CALRu1OCsdCgD1aa8hASVyUxAaWwuP6ntdCKI7wxMwsZmFW
	 9/XXTkzpq0w0uNGDxzqLEpDMJ4zQ3pGlsafEWidbF6ooCpgbCD2kZxeyt11sjdb1CP
	 92WMKyBt3wOHiiiw8ia1DZaLo3qAYFzONvwIkiF9KbhVRYldEPxcq0aqx5p7pfczAr
	 O/iRhs84IdZOa0vbNQ4DUcEnAodPN3pzCKYdJqookoTLJQXIM1PFfvLH6ppQAZqjGl
	 0kltp+3VBkgXFIvUP6z1Dh3o=
Date: Mon, 22 Jan 2024 14:08:27 +0100
From: Borislav Petkov <bp@alien8.de>
To: Xin Li <xin3.li@intel.com>
Cc: linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org,
	linux-edac@vger.kernel.org, linux-hyperv@vger.kernel.org,
	kvm@vger.kernel.org, xen-devel@lists.xenproject.org,
	tglx@linutronix.de, mingo@redhat.com, dave.hansen@linux.intel.com,
	x86@kernel.org, hpa@zytor.com, luto@kernel.org, pbonzini@redhat.com,
	seanjc@google.com, peterz@infradead.org, jgross@suse.com,
	ravi.v.shankar@intel.com, mhiramat@kernel.org,
	andrew.cooper3@citrix.com, jiangshanlai@gmail.com,
	nik.borisov@suse.com, shan.kang@intel.com
Subject: Re: [PATCH v13 07/35] x86/fred: Disable FRED support if
 CONFIG_X86_FRED is disabled
Message-ID: <20240122130827.GQZa5oy4OZHRFEqbsr@fat_crate.local>
References: <20231205105030.8698-1-xin3.li@intel.com>
 <20231205105030.8698-8-xin3.li@intel.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
In-Reply-To: <20231205105030.8698-8-xin3.li@intel.com>

On Tue, Dec 05, 2023 at 02:49:56AM -0800, Xin Li wrote:
> From: "H. Peter Anvin (Intel)" <hpa@zytor.com>
> 
> Add CONFIG_X86_FRED to <asm/disabled-features.h> to make
> cpu_feature_enabled() work correctly with FRED.
> 
> Originally-by: Megha Dey <megha.dey@intel.com>
> Signed-off-by: H. Peter Anvin (Intel) <hpa@zytor.com>
> Tested-by: Shan Kang <shan.kang@intel.com>
> Signed-off-by: Xin Li <xin3.li@intel.com>
> ---
> 
> Changes since v10:
> * FRED feature is defined in cpuid word 12, not 13 (Nikolay Borisov).
> ---
>  arch/x86/include/asm/disabled-features.h       | 8 +++++++-
>  tools/arch/x86/include/asm/disabled-features.h | 8 +++++++-
>  2 files changed, 14 insertions(+), 2 deletions(-)

Whoever applies this: this one and the previous one can be merged into
one patch.

Thx.

-- 
Regards/Gruss,
    Boris.

https://people.kernel.org/tglx/notes-about-netiquette


From xen-devel-bounces@lists.xenproject.org Mon Jan 22 13:19:23 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 22 Jan 2024 13:19:23 +0000
Received: from list by lists.xenproject.org with outflank-mailman.669876.1042342 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rRuCs-0005Pm-2u; Mon, 22 Jan 2024 13:19:18 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 669876.1042342; Mon, 22 Jan 2024 13:19:18 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rRuCr-0005Pf-WD; Mon, 22 Jan 2024 13:19:18 +0000
Received: by outflank-mailman (input) for mailman id 669876;
 Mon, 22 Jan 2024 13:19:17 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rRuCr-0005PV-74; Mon, 22 Jan 2024 13:19:17 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rRuCr-0007Dq-0P; Mon, 22 Jan 2024 13:19:17 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rRuCq-0001rA-IA; Mon, 22 Jan 2024 13:19:16 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rRuCq-0008QQ-Hg; Mon, 22 Jan 2024 13:19:16 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=+e4BCi74RzVxfDSE0n/83iVaEG9LZgBgCSq70/T2N7g=; b=IFPk18WONpWQNki4zm4hTX1WvP
	/Im/GESbOOAd6hC6edpI/GuuQSgkFcaUOrWkMsznqtUWF6500cafO8kW8APRp19f7ZBgU1qd1NEmv
	d2DbRMhwEuKpRo6KAWnCW5TjDHRg6LNYqJaXIEHwgEhHvTCT2Mv2Mg8IDikiOdEWZy1Y=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184423-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [ovmf test] 184423: all pass - PUSHED
X-Osstest-Versions-This:
    ovmf=0b09397dfa0123b9a27c2c52fd2ddafd7a902137
X-Osstest-Versions-That:
    ovmf=0c6d29be8b1731ff6880d59e0189184395e45968
From: osstest service owner <osstest-admin@xenproject.org>
Date: Mon, 22 Jan 2024 13:19:16 +0000

flight 184423 ovmf real [real]
http://logs.test-lab.xenproject.org/osstest/logs/184423/

Perfect :-)
All tests in this flight passed as required
version targeted for testing:
 ovmf                 0b09397dfa0123b9a27c2c52fd2ddafd7a902137
baseline version:
 ovmf                 0c6d29be8b1731ff6880d59e0189184395e45968

Last test of basis   184421  2024-01-22 03:11:07 Z    0 days
Testing same since   184423  2024-01-22 11:14:34 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Patrick Rudolph <patrick.rudolph@9elements.com>

jobs:
 build-amd64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-amd64-amd64-xl-qemuu-ovmf-amd64                         pass    
 test-amd64-i386-xl-qemuu-ovmf-amd64                          pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Pushing revision :

To xenbits.xen.org:/home/xen/git/osstest/ovmf.git
   0c6d29be8b..0b09397dfa  0b09397dfa0123b9a27c2c52fd2ddafd7a902137 -> xen-tested-master


From xen-devel-bounces@lists.xenproject.org Mon Jan 22 13:19:48 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 22 Jan 2024 13:19:48 +0000
Received: from list by lists.xenproject.org with outflank-mailman.669880.1042353 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rRuDM-0005zy-DB; Mon, 22 Jan 2024 13:19:48 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 669880.1042353; Mon, 22 Jan 2024 13:19:48 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rRuDM-0005zr-A2; Mon, 22 Jan 2024 13:19:48 +0000
Received: by outflank-mailman (input) for mailman id 669880;
 Mon, 22 Jan 2024 13:19:47 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=WAGQ=JA=alien8.de=bp@srs-se1.protection.inumbo.net>)
 id 1rRuDL-0005yT-KT
 for xen-devel@lists.xenproject.org; Mon, 22 Jan 2024 13:19:47 +0000
Received: from mail.alien8.de (mail.alien8.de [65.109.113.108])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id e8132157-b928-11ee-9b0f-b553b5be7939;
 Mon, 22 Jan 2024 14:19:44 +0100 (CET)
Received: from localhost (localhost.localdomain [127.0.0.1])
 by mail.alien8.de (SuperMail on ZX Spectrum 128k) with ESMTP id 0AA1E40E0177; 
 Mon, 22 Jan 2024 13:19:42 +0000 (UTC)
Received: from mail.alien8.de ([127.0.0.1])
 by localhost (mail.alien8.de [127.0.0.1]) (amavisd-new, port 10026)
 with ESMTP id kKFjKwbVE80b; Mon, 22 Jan 2024 13:19:40 +0000 (UTC)
Received: from zn.tnic (pd953099d.dip0.t-ipconnect.de [217.83.9.157])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange ECDHE (P-256) server-signature ECDSA (P-256) server-digest
 SHA256) (No client certificate requested)
 by mail.alien8.de (SuperMail on ZX Spectrum 128k) with ESMTPSA id 897B840E01B2;
 Mon, 22 Jan 2024 13:19:16 +0000 (UTC)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: e8132157-b928-11ee-9b0f-b553b5be7939
X-Virus-Scanned: Debian amavisd-new at mail.alien8.de
Authentication-Results: mail.alien8.de (amavisd-new); dkim=pass (4096-bit key)
	header.d=alien8.de
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=alien8.de; s=alien8;
	t=1705929579; bh=O/+tvyIi7hu2G39Na79EAwIAhYkxG5TR/huFmkNcn9E=;
	h=Date:From:To:Cc:Subject:References:In-Reply-To:From;
	b=K1ufgytbqAeKU/bbx1LpJre3vS6601/SVnnwLpFjXNGMTjPY9Nm+A+yHTatEKvsrn
	 jKCRF9Ct9kuq2WaIvEZudPxuW80aQ6sV2DEgv5x5w2nNd1gm+orAggr15hPXn9LnTV
	 cUfVXHwd6vGk+xfoE0ZhIIDM7KLxFhpAn9H/ju/pxuRmHrVBnfrxOWbrue3jllAb9r
	 3Ubo8g5GoprkmY0JAoNQ/3/1gO3n8x/H3xEyXKlDPiMSZqF9LxfuaMxSF9QRFcPajr
	 8NJF5vEyW9gUmzV79jzEDWm0ZuQYIjoELZ3xVbonpik5sMvDXxAiU/QiX8bykQP7Kc
	 Cw2GHvMV759VKo5cDPP2wPZ9ll2LNdCHOaMqMNDZ39c2R8gi0mtu6DPMMNFiHbF3Yp
	 2urrXZCC1l8c5a3GmCU6TZPaFSSWTC+ELzhYkcSE3p4AoKMYNd4y7fjZB858BaEaEz
	 ziUGfyBu2TlOKwvD/W2xUhehBQpzfY5muWbfrm2iSswSPS/3uAfPffHr4k9lTsP+oE
	 BgFJhOWW1jILISG21BWkJnVsw2RiFaruT3nYvvRqjGhOESDcc0WyJIVXXm/ToE0Ynr
	 c28ogu11dMvokRps9/KMY/k6zJnVIxhaJczZEIHBpnsctGH7VtFfXrjrnLe3fXVhLk
	 zJ6/3hP9K7ehKB8eE7xkCFg0=
Date: Mon, 22 Jan 2024 14:19:10 +0100
From: Borislav Petkov <bp@alien8.de>
To: Xin Li <xin3.li@intel.com>
Cc: linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org,
	linux-edac@vger.kernel.org, linux-hyperv@vger.kernel.org,
	kvm@vger.kernel.org, xen-devel@lists.xenproject.org,
	tglx@linutronix.de, mingo@redhat.com, dave.hansen@linux.intel.com,
	x86@kernel.org, hpa@zytor.com, luto@kernel.org, pbonzini@redhat.com,
	seanjc@google.com, peterz@infradead.org, jgross@suse.com,
	ravi.v.shankar@intel.com, mhiramat@kernel.org,
	andrew.cooper3@citrix.com, jiangshanlai@gmail.com,
	nik.borisov@suse.com, shan.kang@intel.com
Subject: Re: [PATCH v13 08/35] x86/fred: Disable FRED by default in its early
 stage
Message-ID: <20240122131910.GRZa5rTpEda4I1YfUX@fat_crate.local>
References: <20231205105030.8698-1-xin3.li@intel.com>
 <20231205105030.8698-9-xin3.li@intel.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
In-Reply-To: <20231205105030.8698-9-xin3.li@intel.com>

On Tue, Dec 05, 2023 at 02:49:57AM -0800, Xin Li wrote:
>  			Warning: use of this parameter will taint the kernel
>  			and may cause unknown problems.
>  
> +	fred		[X86-64]
> +			Enable flexible return and event delivery

Let's make it accept multiple options from the get-go:

fred=on,disable-when,foo,bar,bla...

in case we need to tweak its behavior.

If it is only "fred" it will propagate this way downstream and it'll
lead to confusion later when people have to update their scripts and
config files when "fred" alone doesn't do what they're expecting
anymore.

Thx.

-- 
Regards/Gruss,
    Boris.

https://people.kernel.org/tglx/notes-about-netiquette


From xen-devel-bounces@lists.xenproject.org Mon Jan 22 13:20:39 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 22 Jan 2024 13:20:39 +0000
Received: from list by lists.xenproject.org with outflank-mailman.669883.1042362 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rRuEA-0007YJ-LA; Mon, 22 Jan 2024 13:20:38 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 669883.1042362; Mon, 22 Jan 2024 13:20:38 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rRuEA-0007YC-IV; Mon, 22 Jan 2024 13:20:38 +0000
Received: by outflank-mailman (input) for mailman id 669883;
 Mon, 22 Jan 2024 13:20:37 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=VPlZ=JA=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rRuE9-0007Xw-PU
 for xen-devel@lists.xenproject.org; Mon, 22 Jan 2024 13:20:37 +0000
Received: from mail-lj1-x230.google.com (mail-lj1-x230.google.com
 [2a00:1450:4864:20::230])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 07735d03-b929-11ee-98f2-6d05b1d4d9a1;
 Mon, 22 Jan 2024 14:20:36 +0100 (CET)
Received: by mail-lj1-x230.google.com with SMTP id
 38308e7fff4ca-2cd0d05838fso36137851fa.1
 for <xen-devel@lists.xenproject.org>; Mon, 22 Jan 2024 05:20:36 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 19-20020a056e0211b300b00361a84b89cfsm2495832ilj.51.2024.01.22.05.20.34
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 22 Jan 2024 05:20:35 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 07735d03-b929-11ee-98f2-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1705929636; x=1706534436; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:references:cc:to
         :from:content-language:subject:user-agent:mime-version:date
         :message-id:from:to:cc:subject:date:message-id:reply-to;
        bh=p7AmNgbJ3zH9PsORNpnlF7F2Mq2+Eedbj8vmjYc7fQI=;
        b=GkHXrFd9jg0gZVVi3hp2qul4isi7M3WjkgBmIb2ji4Xeu+uQBSm9HPIYqaCm+/6ceu
         WXtkrltg4xmaHI1uDnCS/3dKv6rC1dwmCH7CxwQ7OPaLF7oYdZ+f7Or0jdej0imBPOB7
         XMZDDtlyBvW99qLyOmt1gTN+bH0wH7QUdjuENMaCU6k186W22TE3ogN/Bqxsfk2pVcPs
         F0qqGlbONHpAB2+Rth9zW9mhWls+guAqP8wakl0ve6QbWdS0KJIXCSHqZPZWYemcDcyv
         jbb69f4JhnYVjjtxx4wlWvNQ6fhE9VboVd2Z5k/UPsuDQyhn/LmOd0qjeZD7Zrt6ac/V
         sdug==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705929636; x=1706534436;
        h=content-transfer-encoding:in-reply-to:autocrypt:references:cc:to
         :from:content-language:subject:user-agent:mime-version:date
         :message-id:x-gm-message-state:from:to:cc:subject:date:message-id
         :reply-to;
        bh=p7AmNgbJ3zH9PsORNpnlF7F2Mq2+Eedbj8vmjYc7fQI=;
        b=bPrCNxNwvrhhMxcfmYKlYqyoGlwGLL+AQFs5DKJC+++RBor4zrbdzfu4tR3gfCNbNh
         kqXFm0eeQNA2G8Fl8PwOnzJqe1b3qIbnjuTKzWq8HYN1vosu6jNLZPz16sPH98yiYjT2
         S8pXMZSFIink8zPlMiRMli8eEyKeHBGUxeLsBStTJS8C6YJplP79SOaIfsHBaV3GlZ+d
         EwuB58AzCczyRokbBwPTbiPaQnwthIYKvKHFfo3FPFVPDLTKk2BeegXhkVg0a/p4kr1F
         n92lRwxoBMzQCihLNGVZCC1eTrIK7GMlh5+Bk11gx/ae5NJ1biLZGd3IJbYNXzWztYbL
         0vJg==
X-Gm-Message-State: AOJu0YxFeYDrxJ/NEj3fIKbiZlwM6+uCWNs59bdD7m5SnuoMvEiZfzNT
	gCXOi21uo1oHEN2b76XmCpyU9xl3Nh9fnCoOHZ1o5+VDKrbiuzltOiOQ+IviFQ==
X-Google-Smtp-Source: AGHT+IFFvN7zdj9cKRSrZal03jhtIqb0qKOLEy8jlZXt9GwQdU9HThoYmJi1zu85jlRVQFmIakw9nA==
X-Received: by 2002:a2e:9985:0:b0:2cc:eae4:cf4b with SMTP id w5-20020a2e9985000000b002cceae4cf4bmr1583257lji.66.1705929636124;
        Mon, 22 Jan 2024 05:20:36 -0800 (PST)
Message-ID: <49798d43-00c8-40e0-bb65-4f5e699c4d76@suse.com>
Date: Mon, 22 Jan 2024 14:20:33 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Ping: [PATCH v5 6/8] PPC: switch entry point annotations to common
 model
Content-Language: en-US
From: Jan Beulich <jbeulich@suse.com>
To: Shawn Anastasio <sanastasio@raptorengineering.com>
Cc: George Dunlap <george.dunlap@citrix.com>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
References: <e4bf47ca-2ae6-1fd4-56a6-e4e777150b64@suse.com>
 <7a133ed9-9d13-4e2c-893a-00c083c8a35d@suse.com>
 <36004375-1398-4f94-b455-8bfdafe0c9d7@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <36004375-1398-4f94-b455-8bfdafe0c9d7@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 15.01.2024 15:38, Jan Beulich wrote:
> Use the generic framework in xen/linkage.h. No change in generated code
> except of course the converted symbols change to be hidden ones.
> 
> Signed-off-by: Jan Beulich <jbeulich@suse.com>

The other architectures have been at least partly switched; would be nice
for PPC to follow suit. May I ask for an ack (or otherwise here), please?

Thanks, Jan


From xen-devel-bounces@lists.xenproject.org Mon Jan 22 13:22:10 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 22 Jan 2024 13:22:10 +0000
Received: from list by lists.xenproject.org with outflank-mailman.669886.1042373 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rRuFb-0008NZ-V4; Mon, 22 Jan 2024 13:22:07 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 669886.1042373; Mon, 22 Jan 2024 13:22:07 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rRuFb-0008NS-SH; Mon, 22 Jan 2024 13:22:07 +0000
Received: by outflank-mailman (input) for mailman id 669886;
 Mon, 22 Jan 2024 13:22:06 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=VPlZ=JA=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rRuFa-0008NG-DY
 for xen-devel@lists.xenproject.org; Mon, 22 Jan 2024 13:22:06 +0000
Received: from mail-lj1-x231.google.com (mail-lj1-x231.google.com
 [2a00:1450:4864:20::231])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 3bcc1891-b929-11ee-9b0f-b553b5be7939;
 Mon, 22 Jan 2024 14:22:04 +0100 (CET)
Received: by mail-lj1-x231.google.com with SMTP id
 38308e7fff4ca-2cdeb954640so32033761fa.3
 for <xen-devel@lists.xenproject.org>; Mon, 22 Jan 2024 05:22:04 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 19-20020a056e0211b300b00361a84b89cfsm2495832ilj.51.2024.01.22.05.22.02
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 22 Jan 2024 05:22:03 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 3bcc1891-b929-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1705929724; x=1706534524; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:references:cc:to
         :from:content-language:subject:user-agent:mime-version:date
         :message-id:from:to:cc:subject:date:message-id:reply-to;
        bh=xrEr0s+vULsLiDCmFWcy2xaYI8X1OhqjvVU2ut3dePQ=;
        b=VidTBv1Mkw9J+fIemCcpefxme8FuJAvI4tn1zNHRwl68bKLaXzX6/rvg0yAmxtFEY2
         dZR0rU0JKk4jG0G72VDW3MbifDUoToXPJ8dH4s6qJ1KAkxmgs6ZI1TrfUWKONhJQtsGw
         idrNo0K9uCalYHEuga6Oq+f8r5eRpA50cqx9x9BWaA8LufHN8mLZqLY4GZfQEVq+lJTi
         6VwCX3PRz0uETRfw7eiLzJAjZwAyEH9II6UEDoPJOJ2VfzIgkCIl722Thquf13u3qWro
         +k/tWnoE8b/4XSMLLZkh5QexQ9VOvayj47z0qCBpEr1Fd0Hg5Wiwz0zcDRC4hpdR7nqj
         cB5g==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705929724; x=1706534524;
        h=content-transfer-encoding:in-reply-to:autocrypt:references:cc:to
         :from:content-language:subject:user-agent:mime-version:date
         :message-id:x-gm-message-state:from:to:cc:subject:date:message-id
         :reply-to;
        bh=xrEr0s+vULsLiDCmFWcy2xaYI8X1OhqjvVU2ut3dePQ=;
        b=cXufTV7zbKEbkw1khI/whLe8O1TmXfkR+kfoVH5LMR3MDMaSfc3bsuIXPo+hCVgB+k
         A9IsfYRsR+Hburh8+Erqd3aTIHSGbRKnnIS8dagIScZFPfsVBdo6119uOqXdlBzEEnzo
         KRzg/1/TCGOmQ3fLFmHfD98AtHgKxqnEHK8mOJ9XZJJLxpA68LY4zjqYpaWwjMXKEIL7
         C7ubQt5nl56HvCEzqaSofRvIpqHQVDFxeL0g4lpHoWvRn+dGPOE9agArhoysr5PfBlEa
         zq2O8bkqmcFQcEA5gfKt933HnjSdgn5LWVjVte9rk4vconAh4PkvNVzr+tSSyhEvDDZI
         7oSQ==
X-Gm-Message-State: AOJu0YyY/AKpsBfGF6MG3T1C+8EQuO1lRxenagI2Soa6Ftr5phvKM7MD
	Xw8+Vb+tf0s5Hnijt5gB2BrRp1HYeIvLWfIa76Ih2x0RZolecP5H/Pe3w9JmrA==
X-Google-Smtp-Source: AGHT+IE27jCk0c3GM+W7lT7StpttsRWc49ETu+Q9z32125Z45BJ4T9QGBqUWMoMQVOEQ3wkwMOFx7A==
X-Received: by 2002:a2e:8ec8:0:b0:2cd:4ead:9103 with SMTP id e8-20020a2e8ec8000000b002cd4ead9103mr1536527ljl.97.1705929723966;
        Mon, 22 Jan 2024 05:22:03 -0800 (PST)
Message-ID: <362fb92c-98a9-4ec8-a715-cebbc5321b36@suse.com>
Date: Mon, 22 Jan 2024 14:22:01 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v5 4/8] Arm: annotate entry points with type and size
Content-Language: en-US
From: Jan Beulich <jbeulich@suse.com>
To: Julien Grall <julien@xen.org>, Stefano Stabellini
 <sstabellini@kernel.org>, Bertrand Marquis <bertrand.marquis@arm.com>,
 Michal Orzel <michal.orzel@amd.com>
Cc: Volodymyr Babchuk <volodymyr_babchuk@epam.com>,
 George Dunlap <george.dunlap@citrix.com>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
References: <e4bf47ca-2ae6-1fd4-56a6-e4e777150b64@suse.com>
 <7a133ed9-9d13-4e2c-893a-00c083c8a35d@suse.com>
 <7871702a-b5ca-4430-b282-148b46fccc71@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <7871702a-b5ca-4430-b282-148b46fccc71@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 15.01.2024 15:36, Jan Beulich wrote:
> Use the generic framework in xen/linkage.h. No change in generated code
> except for the changed padding value (noticable when config.gz isn't a
> multiple of 4 in size). Plus of course the converted symbols change to
> be hidden ones.
> 
> Note that ASM_INT() is switched to DATA(), not DATA_LOCAL(), as the only
> use site wants the symbol global anyway.
> 
> Signed-off-by: Jan Beulich <jbeulich@suse.com>
> Reviewed-by: Julien Grall <jgrall@amazon.com>
> ---
> Only one each of the assembly files is being converted for now. More
> could be done right here or as follow-on in separate patches.

As this was meanwhile committed, I'd like to understand you preference
for further conversion steps: I can certainly see to find time to make
some actual progress here, but it might also be that you prefer to do
so yourself. Please let me know.

Jan



From xen-devel-bounces@lists.xenproject.org Mon Jan 22 13:41:26 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 22 Jan 2024 13:41:26 +0000
Received: from list by lists.xenproject.org with outflank-mailman.669895.1042383 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rRuYC-0005Ze-Gj; Mon, 22 Jan 2024 13:41:20 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 669895.1042383; Mon, 22 Jan 2024 13:41:20 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rRuYC-0005ZX-DI; Mon, 22 Jan 2024 13:41:20 +0000
Received: by outflank-mailman (input) for mailman id 669895;
 Mon, 22 Jan 2024 13:41:19 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=VPlZ=JA=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rRuYB-0005Y4-7j
 for xen-devel@lists.xenproject.org; Mon, 22 Jan 2024 13:41:19 +0000
Received: from mail-lj1-x22b.google.com (mail-lj1-x22b.google.com
 [2a00:1450:4864:20::22b])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id eb5eab41-b92b-11ee-98f2-6d05b1d4d9a1;
 Mon, 22 Jan 2024 14:41:17 +0100 (CET)
Received: by mail-lj1-x22b.google.com with SMTP id
 38308e7fff4ca-2cca8eb0509so35336151fa.3
 for <xen-devel@lists.xenproject.org>; Mon, 22 Jan 2024 05:41:17 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 bm7-20020a056e02330700b003627e7b69c8sm603276ilb.76.2024.01.22.05.41.16
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 22 Jan 2024 05:41:17 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: eb5eab41-b92b-11ee-98f2-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1705930877; x=1706535677; darn=lists.xenproject.org;
        h=content-transfer-encoding:autocrypt:content-language:cc:to:subject
         :from:user-agent:mime-version:date:message-id:from:to:cc:subject
         :date:message-id:reply-to;
        bh=gQiTUoB8bG3hbenFnAZCwyFKHLeA13w6e6iDnvkSNlE=;
        b=KyFRthheAO0xbqlwC6UXO9NicuV6ENjI1ilZEwAoO2GqA0uikSHk9iJLGd9cKXw0lA
         ezrz9qXEM0qF1jVGogwO88RxY9bE2zCF6uoTNGwymlMuuzuOMl9GZRub92lcT2rC/PoE
         9acWjn76wqFCRnM/v1EhuqUbPFF+PoZmgbVksRrjLlTeXQhtm1sAaj005FGzJLPq4X/G
         XfdRSr7gM+vPwBzcTDF1NeH12jaEIK8FGousqCblCRPxBCWVsUE19YQSx2lTjR9oDwIK
         AdxPVUW8z0+jjGoc6k+8GWdVP8oet8XalwDTtN8mp8kHxkl1r+GqZO2y+AwyTsH3gm94
         XegQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705930877; x=1706535677;
        h=content-transfer-encoding:autocrypt:content-language:cc:to:subject
         :from:user-agent:mime-version:date:message-id:x-gm-message-state
         :from:to:cc:subject:date:message-id:reply-to;
        bh=gQiTUoB8bG3hbenFnAZCwyFKHLeA13w6e6iDnvkSNlE=;
        b=XZTt/rl2/uGDiujSynKaxAlhjRC3lu2RzPwn6xjndWxBbPwozxw7aabnfiOenwsJ6E
         hTu9xMyBvCJUsw4xbbNEqR0gsQ8deoq4flZ/G+GS/NOysntnlrN9R0I1II8LteVqs/q9
         n6u6/N17tbhU6LQI9K44ukU60Duh+zt0zrey+2Rb146MbTeeqOyj4Vzfio4bViolyjYg
         Ggmfanb/wD4/qJefvQDxTIF2NFf/iiMXJFM9pBtGDdg5xoT7H4eA7kVQcj7XIcphohPr
         rZRz5jUL+ANAobbUjrCHyDR1pP3u+7rVKj6gS77jj5B6rMPv3cZHM+kHHfsYkW+v9pbx
         TitQ==
X-Gm-Message-State: AOJu0YyJokoKO1tGhr+PLQp6u2uAz4lGJuKpb/VDd3dUZK0h5wEuWLjR
	yJN/lG56srocw4M//45BGGfAQCkjcFxryaz7J9/gglRjqGANPPacQ+ANu68mOvzgSbhTx9vLfCs
	=
X-Google-Smtp-Source: AGHT+IF2OFhBV/MCaRblskpSFb5QCSm+rYtJLQDdV72NpQx7Egq5O1/8RO6hr3vPLu/7JJQUaHfBsg==
X-Received: by 2002:a2e:7a1a:0:b0:2cc:6d87:9a91 with SMTP id v26-20020a2e7a1a000000b002cc6d879a91mr1606703ljc.72.1705930877499;
        Mon, 22 Jan 2024 05:41:17 -0800 (PST)
Message-ID: <7edea456-81ba-4e83-9441-0e82333ce168@suse.com>
Date: Mon, 22 Jan 2024 14:41:14 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
From: Jan Beulich <jbeulich@suse.com>
Subject: [PATCH v2] x86: Dom0 "broken ELF" reporting adjustments
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, Wei Liu <wl@xen.org>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
Content-Language: en-US
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

elf_load_binary() isn't the primary source of brokenness being
indicated. Therefore make the respective PVH log message there
conditional (much like PV has it), and add another instance when
elf_xen_parse() failed (again matching behavior in the PV case).

Make the PV side match the (new) use of %pd here.

Signed-off-by: Jan Beulich <jbeulich@suse.com>
---
v2: Use %pd and bring PV in line with that as well.

--- a/xen/arch/x86/hvm/dom0_build.c
+++ b/xen/arch/x86/hvm/dom0_build.c
@@ -570,6 +570,8 @@ static int __init pvh_load_kernel(struct
     if ( (rc = elf_xen_parse(&elf, &parms, true)) != 0 )
     {
         printk("Unable to parse kernel for ELFNOTES\n");
+        if ( elf_check_broken(&elf) )
+            printk("%pd kernel: broken ELF: %s\n", d, elf_check_broken(&elf));
         return rc;
     }
 
@@ -588,7 +590,8 @@ static int __init pvh_load_kernel(struct
     if ( rc < 0 )
     {
         printk("Failed to load kernel: %d\n", rc);
-        printk("Xen dom0 kernel broken ELF: %s\n", elf_check_broken(&elf));
+        if ( elf_check_broken(&elf) )
+            printk("%pd kernel: broken ELF: %s\n", d, elf_check_broken(&elf));
         return rc;
     }
 
--- a/xen/arch/x86/pv/dom0_build.c
+++ b/xen/arch/x86/pv/dom0_build.c
@@ -1041,8 +1041,7 @@ int __init dom0_construct_pv(struct doma
 
 out:
     if ( elf_check_broken(&elf) )
-        printk(XENLOG_WARNING "Dom0 kernel broken ELF: %s\n",
-               elf_check_broken(&elf));
+        printk("%pd kernel: broken ELF: %s\n", d, elf_check_broken(&elf));
 
     return rc;
 }


From xen-devel-bounces@lists.xenproject.org Mon Jan 22 13:45:56 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 22 Jan 2024 13:45:56 +0000
Received: from list by lists.xenproject.org with outflank-mailman.669898.1042392 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rRucd-0006Kv-0r; Mon, 22 Jan 2024 13:45:55 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 669898.1042392; Mon, 22 Jan 2024 13:45:54 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rRucc-0006Ko-UF; Mon, 22 Jan 2024 13:45:54 +0000
Received: by outflank-mailman (input) for mailman id 669898;
 Mon, 22 Jan 2024 13:45:53 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=VPlZ=JA=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rRucb-0006Ki-7m
 for xen-devel@lists.xenproject.org; Mon, 22 Jan 2024 13:45:53 +0000
Received: from mail-lj1-x233.google.com (mail-lj1-x233.google.com
 [2a00:1450:4864:20::233])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 8eeb5774-b92c-11ee-98f2-6d05b1d4d9a1;
 Mon, 22 Jan 2024 14:45:52 +0100 (CET)
Received: by mail-lj1-x233.google.com with SMTP id
 38308e7fff4ca-2ccb4adbffbso33472301fa.0
 for <xen-devel@lists.xenproject.org>; Mon, 22 Jan 2024 05:45:52 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 x16-20020a029710000000b0046ed9f3c5e3sm1120132jai.21.2024.01.22.05.45.50
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 22 Jan 2024 05:45:51 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 8eeb5774-b92c-11ee-98f2-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1705931152; x=1706535952; darn=lists.xenproject.org;
        h=content-transfer-encoding:autocrypt:content-language:cc:to:subject
         :from:user-agent:mime-version:date:message-id:from:to:cc:subject
         :date:message-id:reply-to;
        bh=YRwVioz00eWZdvoO1XCcPZDoKnDH0Aiwl24RFYm/tGM=;
        b=Y+wn1Unq7hVacZ3DAYVITHCT29/9CX6BWInA4CCPaqKbGawPlVTh23QEBbp/B0NO4m
         3ZBmD5JnNY5s9xSgOUwCtMS3Vn5oWZbMtWq6SuwaucIivLt06xAxwwhMlyW/ZkT41yZx
         j2dBExkseFLeqYzebYvywoSsKP0+C6Qx756M/9J0qG5QchkDwVtD4KPLGWEVPTca+LAA
         9lgjjHIpJsz9b/3Utn8r3tdRwfnqGIsW7HSEGbEjX/lcCcyO9KCX3NJEDQmZlOmNTEOR
         hlnkqvfK4eKa/g8/4GmLQOSXi4/0nbNJ4TRbAknj8wEL9mq6yUdnnJDFtFrxmUirDWkW
         AF8Q==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705931152; x=1706535952;
        h=content-transfer-encoding:autocrypt:content-language:cc:to:subject
         :from:user-agent:mime-version:date:message-id:x-gm-message-state
         :from:to:cc:subject:date:message-id:reply-to;
        bh=YRwVioz00eWZdvoO1XCcPZDoKnDH0Aiwl24RFYm/tGM=;
        b=fArO6lBLQqsCnAiaQ2Fje/vPgLJ0MnBHCaFIYYbpZXYXyd/owi3C74ywZYgHmXC9FQ
         VQRVKzM0fliIxRnnAWuP34ZDr/jBF2cURVznf3WZuNNyWWeox7ItLvBvYyJwxAS/CSXh
         gU/J1P4OYWkywWoLBkke4Wxu6ElkUExcQh3Gb0czFdT6HWpsqRpuL3SMU9oWYajvS0wo
         u9voqFbWPdwcJ7431Qih6CmAKQFcP2J0/dabzTo4G+dLfnADuGIczXz5w+9q2+lVJdIH
         AcWxwLrQSkaMCRBofnLBgqknQpijRJqXWWqRsZdhqLm1zrKIurfwG1c3D851qQlgtaed
         H9Nw==
X-Gm-Message-State: AOJu0Yy00eBrdAqv8kWlCf1AWvhEpnU2hbCWAFbHfYId8i8wQlxeOk3j
	Fh88cGyJU8G2pGcLh+mYlMVr3cVdR5A2arJ4kijVgXDgfDXGyCnuC/94BCOv363TQ8ctYQTEjXY
	=
X-Google-Smtp-Source: AGHT+IHr7JIJPdn5F1XI5WO/U5ki/EGKvxGkng+Sw2ahOuN3Hsm/xn5DOQ5hx5ExNN8UQiLi5pJFig==
X-Received: by 2002:a2e:a550:0:b0:2cc:d60b:adbb with SMTP id e16-20020a2ea550000000b002ccd60badbbmr2343621ljn.49.1705931151972;
        Mon, 22 Jan 2024 05:45:51 -0800 (PST)
Message-ID: <33db57a2-b569-4fa8-b0b0-36ea92528d7b@suse.com>
Date: Mon, 22 Jan 2024 14:45:48 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
From: Jan Beulich <jbeulich@suse.com>
Subject: [PATCH v2 0/8] limit passing around of cpu_user_regs
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 George Dunlap <george.dunlap@citrix.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>
Content-Language: en-US
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

Unlike (synchronous) exception handlers, interrupt handlers don't normally
have a need to know the outer context's register state. Similarly, the vast
majority of key handlers has no need for such.

1: IRQ: generalize [gs]et_irq_regs()
2: serial: fake IRQ-regs context in poll handlers
3: keyhandler: drop regs parameter from handle_keyregs()
4: serial: drop serial_rx_fn's regs parameter
5: PV-shim: drop pv_console_rx()'s regs parameter
6: serial: drop serial_[rt]x_interrupt()'s regs parameter
7: IRQ: drop regs parameter from handler functions
8: x86/APIC: drop regs parameter from direct vector handler functions

Jan


From xen-devel-bounces@lists.xenproject.org Mon Jan 22 13:48:25 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 22 Jan 2024 13:48:25 +0000
Received: from list by lists.xenproject.org with outflank-mailman.669906.1042433 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rRuf3-00082s-8N; Mon, 22 Jan 2024 13:48:25 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 669906.1042433; Mon, 22 Jan 2024 13:48:25 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rRuf3-00082c-3q; Mon, 22 Jan 2024 13:48:25 +0000
Received: by outflank-mailman (input) for mailman id 669906;
 Mon, 22 Jan 2024 13:48:24 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=t9EV=JA=bugseng.com=federico.serafini@srs-se1.protection.inumbo.net>)
 id 1rRuf1-0007Ly-Vq
 for xen-devel@lists.xenproject.org; Mon, 22 Jan 2024 13:48:23 +0000
Received: from support.bugseng.com (mail.bugseng.com [162.55.131.47])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id e803ea05-b92c-11ee-98f2-6d05b1d4d9a1;
 Mon, 22 Jan 2024 14:48:21 +0100 (CET)
Received: from Dell.homenet.telecomitalia.it
 (host-87-16-84-78.retail.telecomitalia.it [87.16.84.78])
 by support.bugseng.com (Postfix) with ESMTPSA id 583D04EE0742;
 Mon, 22 Jan 2024 14:48:21 +0100 (CET)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: e803ea05-b92c-11ee-98f2-6d05b1d4d9a1
From: Federico Serafini <federico.serafini@bugseng.com>
To: xen-devel@lists.xenproject.org
Cc: consulting@bugseng.com,
	Federico Serafini <federico.serafini@bugseng.com>,
	Jan Beulich <jbeulich@suse.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>,
	Wei Liu <wl@xen.org>
Subject: [XEN PATCH 2/3] x86/uaccess: replace __{get,put}_user_bad() with static_assert_unreachable()
Date: Mon, 22 Jan 2024 14:48:07 +0100
Message-Id: <971693bc9c68e86dce793c9e613688f527db0e31.1705930767.git.federico.serafini@bugseng.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <cover.1705930767.git.federico.serafini@bugseng.com>
References: <cover.1705930767.git.federico.serafini@bugseng.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Use static_assert_unreachable() to improve readability and anticipate
the build failure (from a linker error to an assembler error) in case
of wrong size.

Signed-off-by: Federico Serafini <federico.serafini@bugseng.com>
---
 xen/arch/x86/include/asm/uaccess.h | 7 ++-----
 1 file changed, 2 insertions(+), 5 deletions(-)

diff --git a/xen/arch/x86/include/asm/uaccess.h b/xen/arch/x86/include/asm/uaccess.h
index 7443519d5b..ce608fc2b5 100644
--- a/xen/arch/x86/include/asm/uaccess.h
+++ b/xen/arch/x86/include/asm/uaccess.h
@@ -21,9 +21,6 @@ unsigned int copy_from_guest_ll(void *to, const void __user *from, unsigned int
 unsigned int copy_to_unsafe_ll(void *to, const void *from, unsigned int n);
 unsigned int copy_from_unsafe_ll(void *to, const void *from, unsigned int n);
 
-extern long __get_user_bad(void);
-extern void __put_user_bad(void);
-
 #define UA_KEEP(args...) args
 #define UA_DROP(args...)
 
@@ -208,7 +205,7 @@ do {                                                                       \
     case 8:                                                                \
         put_unsafe_asm(x, ptr, grd, retval, "q",  "", "ir", errret);       \
         break;                                                             \
-    default: __put_user_bad();                                             \
+    default: static_assert_unreachable();                                  \
     }                                                                      \
     clac();                                                                \
 } while ( false )
@@ -227,7 +224,7 @@ do {                                                                       \
     case 2: get_unsafe_asm(x, ptr, grd, retval, "w", "=r", errret); break; \
     case 4: get_unsafe_asm(x, ptr, grd, retval, "k", "=r", errret); break; \
     case 8: get_unsafe_asm(x, ptr, grd, retval,  "", "=r", errret); break; \
-    default: __get_user_bad();                                             \
+    default: static_assert_unreachable();                                  \
     }                                                                      \
     clac();                                                                \
 } while ( false )
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Mon Jan 22 13:48:25 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 22 Jan 2024 13:48:25 +0000
Received: from list by lists.xenproject.org with outflank-mailman.669904.1042413 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rRuf1-0007ad-OK; Mon, 22 Jan 2024 13:48:23 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 669904.1042413; Mon, 22 Jan 2024 13:48:23 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rRuf1-0007aW-L4; Mon, 22 Jan 2024 13:48:23 +0000
Received: by outflank-mailman (input) for mailman id 669904;
 Mon, 22 Jan 2024 13:48:22 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=t9EV=JA=bugseng.com=federico.serafini@srs-se1.protection.inumbo.net>)
 id 1rRuf0-0007Ly-AP
 for xen-devel@lists.xenproject.org; Mon, 22 Jan 2024 13:48:22 +0000
Received: from support.bugseng.com (mail.bugseng.com [162.55.131.47])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id e7856e42-b92c-11ee-98f2-6d05b1d4d9a1;
 Mon, 22 Jan 2024 14:48:21 +0100 (CET)
Received: from Dell.homenet.telecomitalia.it
 (host-87-16-84-78.retail.telecomitalia.it [87.16.84.78])
 by support.bugseng.com (Postfix) with ESMTPSA id 1AB3A4EE0738;
 Mon, 22 Jan 2024 14:48:20 +0100 (CET)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: e7856e42-b92c-11ee-98f2-6d05b1d4d9a1
From: Federico Serafini <federico.serafini@bugseng.com>
To: xen-devel@lists.xenproject.org
Cc: consulting@bugseng.com,
	Federico Serafini <federico.serafini@bugseng.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	George Dunlap <george.dunlap@citrix.com>,
	Jan Beulich <jbeulich@suse.com>,
	Julien Grall <julien@xen.org>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Wei Liu <wl@xen.org>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>,
	Simone Ballarin <simone.ballarin@bugseng.com>,
	Doug Goldstein <cardoe@cardoe.com>
Subject: [XEN PATCH 0/3] Introduce and use static_assert_unreachable()
Date: Mon, 22 Jan 2024 14:48:05 +0100
Message-Id: <cover.1705930767.git.federico.serafini@bugseng.com>
X-Mailer: git-send-email 2.34.1
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Introduce macro static_assert_unreachable(), use it to replace
__{get,put}_user_bad() and update ECLAIR configuration to allow the use of
such macro at the end of switch-caluses.

Federico Serafini (3):
  xen: introduce static_assert_unreachable()
  x86/uaccess: replace __{get,put}_user_bad() with
    static_assert_unreachable()
  automation/eclair: add deviation for MISRA C:2012 Rule 16.3

 automation/eclair_analysis/ECLAIR/deviations.ecl | 4 ++++
 docs/misra/deviations.rst                        | 4 ++++
 xen/arch/x86/include/asm/uaccess.h               | 7 ++-----
 xen/include/xen/compiler.h                       | 8 ++++++++
 4 files changed, 18 insertions(+), 5 deletions(-)

-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Mon Jan 22 13:48:25 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 22 Jan 2024 13:48:25 +0000
Received: from list by lists.xenproject.org with outflank-mailman.669905.1042419 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rRuf2-0007dy-2U; Mon, 22 Jan 2024 13:48:24 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 669905.1042419; Mon, 22 Jan 2024 13:48:24 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rRuf1-0007dm-SH; Mon, 22 Jan 2024 13:48:23 +0000
Received: by outflank-mailman (input) for mailman id 669905;
 Mon, 22 Jan 2024 13:48:23 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=t9EV=JA=bugseng.com=federico.serafini@srs-se1.protection.inumbo.net>)
 id 1rRuf0-0007Ly-VY
 for xen-devel@lists.xenproject.org; Mon, 22 Jan 2024 13:48:22 +0000
Received: from support.bugseng.com (mail.bugseng.com [162.55.131.47])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id e7c82d78-b92c-11ee-98f2-6d05b1d4d9a1;
 Mon, 22 Jan 2024 14:48:21 +0100 (CET)
Received: from Dell.homenet.telecomitalia.it
 (host-87-16-84-78.retail.telecomitalia.it [87.16.84.78])
 by support.bugseng.com (Postfix) with ESMTPSA id DE0684EE073C;
 Mon, 22 Jan 2024 14:48:20 +0100 (CET)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: e7c82d78-b92c-11ee-98f2-6d05b1d4d9a1
From: Federico Serafini <federico.serafini@bugseng.com>
To: xen-devel@lists.xenproject.org
Cc: consulting@bugseng.com,
	Federico Serafini <federico.serafini@bugseng.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	George Dunlap <george.dunlap@citrix.com>,
	Jan Beulich <jbeulich@suse.com>,
	Julien Grall <julien@xen.org>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Wei Liu <wl@xen.org>
Subject: [XEN PATCH 1/3] xen: introduce static_assert_unreachable()
Date: Mon, 22 Jan 2024 14:48:06 +0100
Message-Id: <01c57c7e5131d699cf622be96fea7cd8e03c23f9.1705930767.git.federico.serafini@bugseng.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <cover.1705930767.git.federico.serafini@bugseng.com>
References: <cover.1705930767.git.federico.serafini@bugseng.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Introduce macro static_asser_unreachable() to check that a program
point is considered unreachable by the static analysis performed by the
compiler, even at optimization level -O0.

The use of such macro will lead to one of the following outcomes:
- the program point identified by the macro is considered unreachable,
  then the compiler removes the macro;
- the program point identified by the macro is not considered
  unreachable, then the compiler does not remove the macro, which will
  lead to a failure in the build process caused by an assembler error.

Signed-off-by: Federico Serafini <federico.serafini@bugseng.com>
---
 xen/include/xen/compiler.h | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/xen/include/xen/compiler.h b/xen/include/xen/compiler.h
index 16d554f2a5..ad0520f5d4 100644
--- a/xen/include/xen/compiler.h
+++ b/xen/include/xen/compiler.h
@@ -64,6 +64,14 @@
 # define fallthrough        do {} while (0)  /* fallthrough */
 #endif
 
+/*
+ * Add the following macro to check that a program point is considered
+ * unreachable by the static analysis performed by the compiler,
+ * even at optimization level -O0.
+ */
+#define static_assert_unreachable() \
+    asm(".error \"unreachable program point reached\"");
+
 #ifdef __clang__
 /* Clang can replace some vars with new automatic ones that go in .data;
  * mark all explicit-segment vars 'used' to prevent that. */
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Mon Jan 22 13:48:26 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 22 Jan 2024 13:48:26 +0000
Received: from list by lists.xenproject.org with outflank-mailman.669903.1042403 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rRuf0-0007MF-Hj; Mon, 22 Jan 2024 13:48:22 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 669903.1042403; Mon, 22 Jan 2024 13:48:22 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rRuf0-0007M8-Ec; Mon, 22 Jan 2024 13:48:22 +0000
Received: by outflank-mailman (input) for mailman id 669903;
 Mon, 22 Jan 2024 13:48:22 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=VPlZ=JA=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rRuf0-0007Lx-1r
 for xen-devel@lists.xenproject.org; Mon, 22 Jan 2024 13:48:22 +0000
Received: from mail-lj1-x231.google.com (mail-lj1-x231.google.com
 [2a00:1450:4864:20::231])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id e6f1ea63-b92c-11ee-9b0f-b553b5be7939;
 Mon, 22 Jan 2024 14:48:20 +0100 (CET)
Received: by mail-lj1-x231.google.com with SMTP id
 38308e7fff4ca-2cd0d05838fso36520391fa.1
 for <xen-devel@lists.xenproject.org>; Mon, 22 Jan 2024 05:48:20 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 cw13-20020a05663849cd00b0046e627dbc4csm3035114jab.121.2024.01.22.05.48.17
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 22 Jan 2024 05:48:19 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: e6f1ea63-b92c-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1705931299; x=1706536099; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:content-language
         :references:cc:to:from:subject:user-agent:mime-version:date
         :message-id:from:to:cc:subject:date:message-id:reply-to;
        bh=F6sfSK5/SEtKGPEcmvIsDK1a/u9AKBGy1bR54EVhbWU=;
        b=OkSR/V9YdLw27FJ3+jZ+yGWSCEr+yYIVAjEQLVa02rFBDSG8I+LEM+FUIHsP1yBFAX
         bnGDrnR7HCk3lkkAM19hCjOKP880fNZvXCToqSbyIRn+YCBT7hxy/CAv1TkgfnbD0HKT
         oTprAv7y50N2S4i2N1+6DViK6UxIcANVkTwpNmQubBWiOFX35IIgGK743DBk1wCRkfUW
         /GfKFKkSIJ6jIrLqBJ3NC3al/nAUrpYtVtQ72KgrHRJrY2mopshHks+E87GOjxXnmRjq
         cBhhGDpLTzLvlCiHKKrLAJc2/byUA/03guijnWZ6C3miPy3i3JH+23ct4tIlvv5pPUpv
         UPeA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705931299; x=1706536099;
        h=content-transfer-encoding:in-reply-to:autocrypt:content-language
         :references:cc:to:from:subject:user-agent:mime-version:date
         :message-id:x-gm-message-state:from:to:cc:subject:date:message-id
         :reply-to;
        bh=F6sfSK5/SEtKGPEcmvIsDK1a/u9AKBGy1bR54EVhbWU=;
        b=N4N4C4LE1G8aEV7NG98ygFEY9U9vBBwJWQ1YyM3iMXsKr1oqMFjDpAIpVbYxtiwxHz
         shltwzrdbPwuYpH0h1myohdbMC8j4Y5mQdPc8myyat96oc2dmqj61Mnb6nsGxWJcp9iX
         hmTFgUypZqOUiXB3ult3ypVWDsf0jWuV9R9LScjv1AEKx81JgwtNFyC8ooLBQHKIGMSd
         p1jrNthtatmD9lfhLx2E7y6UFYt2DrlXdeLoasRKOPLaut4joa0V52CXg8OGkE9g+SEw
         6cj9dnect4L6nFNjGs8F3n+2JEeHKQnWrbLuzKd+oMBstohHX+jq8VSs9BNIs/MmnkUm
         qNSA==
X-Gm-Message-State: AOJu0YxIF8RSWwhtfyH2rjtmF+DT8fVhw54b+W8hiLF+pkq03ej+vRzt
	5pJ624W/JljB9XX7pYPMZqqpqlzXLNJIcANP2ty/le6jAkdswYtxNhuxPfa0Jc7AQBHlKpjf3BY
	=
X-Google-Smtp-Source: AGHT+IEy0es+DcUtS81PJaJXL6AOMKdRsEhFyA0WPkwSR99PlWMJIilCPgx048+qJuGD0Z+dZczjLA==
X-Received: by 2002:a2e:b0f4:0:b0:2cc:603f:5cd7 with SMTP id h20-20020a2eb0f4000000b002cc603f5cd7mr1722201ljl.6.1705931299498;
        Mon, 22 Jan 2024 05:48:19 -0800 (PST)
Message-ID: <03da16df-2d31-495e-9757-17e329b89d8d@suse.com>
Date: Mon, 22 Jan 2024 14:48:15 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: [PATCH v2 1/8] IRQ: generalize [gs]et_irq_regs()
From: Jan Beulich <jbeulich@suse.com>
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 George Dunlap <george.dunlap@citrix.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Bertrand Marquis <bertrand.marquis@arm.com>,
 Michal Orzel <michal.orzel@amd.com>
References: <33db57a2-b569-4fa8-b0b0-36ea92528d7b@suse.com>
Content-Language: en-US
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <33db57a2-b569-4fa8-b0b0-36ea92528d7b@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

Move functions (and their data) to common code, and invoke the functions
on Arm as well. This is in preparation of dropping the register
parameters from handler functions.

Signed-off-by: Jan Beulich <jbeulich@suse.com>
Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>
Reviewed-by: Julien Grall <jgrall@amazon.com>
---
To limit visibility of the per-CPU data item, we may want to consider
making the functions out-of-line ones (in common/irq.c).
---
v2: Add a blank line.

--- a/xen/arch/arm/irq.c
+++ b/xen/arch/arm/irq.c
@@ -221,6 +221,7 @@ void do_IRQ(struct cpu_user_regs *regs,
 {
     struct irq_desc *desc = irq_to_desc(irq);
     struct irqaction *action;
+    struct cpu_user_regs *old_regs = set_irq_regs(regs);
 
     perfc_incr(irqs);
 
@@ -288,6 +289,7 @@ out:
 out_no_end:
     spin_unlock(&desc->lock);
     irq_exit();
+    set_irq_regs(old_regs);
 }
 
 void release_irq(unsigned int irq, const void *dev_id)
--- a/xen/arch/x86/include/asm/irq.h
+++ b/xen/arch/x86/include/asm/irq.h
@@ -70,27 +70,6 @@ extern bool opt_noirqbalance;
 
 extern int opt_irq_vector_map;
 
-/*
- * Per-cpu current frame pointer - the location of the last exception frame on
- * the stack
- */
-DECLARE_PER_CPU(struct cpu_user_regs *, __irq_regs);
-
-static inline struct cpu_user_regs *get_irq_regs(void)
-{
-	return this_cpu(__irq_regs);
-}
-
-static inline struct cpu_user_regs *set_irq_regs(struct cpu_user_regs *new_regs)
-{
-	struct cpu_user_regs *old_regs, **pp_regs = &this_cpu(__irq_regs);
-
-	old_regs = *pp_regs;
-	*pp_regs = new_regs;
-	return old_regs;
-}
-
-
 #define platform_legacy_irq(irq)	((irq) < 16)
 
 void cf_check event_check_interrupt(struct cpu_user_regs *regs);
--- a/xen/arch/x86/irq.c
+++ b/xen/arch/x86/irq.c
@@ -53,8 +53,6 @@ static DEFINE_SPINLOCK(vector_lock);
 
 DEFINE_PER_CPU(vector_irq_t, vector_irq);
 
-DEFINE_PER_CPU(struct cpu_user_regs *, __irq_regs);
-
 static LIST_HEAD(irq_ratelimit_list);
 static DEFINE_SPINLOCK(irq_ratelimit_lock);
 static struct timer irq_ratelimit_timer;
--- a/xen/common/irq.c
+++ b/xen/common/irq.c
@@ -1,6 +1,8 @@
 #include <xen/irq.h>
 #include <xen/errno.h>
 
+DEFINE_PER_CPU(struct cpu_user_regs *, irq_regs);
+
 int init_one_irq_desc(struct irq_desc *desc)
 {
     int err;
--- a/xen/include/xen/irq.h
+++ b/xen/include/xen/irq.h
@@ -131,6 +131,27 @@ void cf_check irq_actor_none(struct irq_
 #define irq_disable_none irq_actor_none
 #define irq_enable_none irq_actor_none
 
+/*
+ * Per-cpu interrupted context register state - the inner-most interrupt frame
+ * on the stack.
+ */
+DECLARE_PER_CPU(struct cpu_user_regs *, irq_regs);
+
+static inline struct cpu_user_regs *get_irq_regs(void)
+{
+	return this_cpu(irq_regs);
+}
+
+static inline struct cpu_user_regs *set_irq_regs(struct cpu_user_regs *new_regs)
+{
+	struct cpu_user_regs *old_regs, **pp_regs = &this_cpu(irq_regs);
+
+	old_regs = *pp_regs;
+	*pp_regs = new_regs;
+
+	return old_regs;
+}
+
 struct domain;
 struct vcpu;
 



From xen-devel-bounces@lists.xenproject.org Mon Jan 22 13:48:26 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 22 Jan 2024 13:48:26 +0000
Received: from list by lists.xenproject.org with outflank-mailman.669907.1042443 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rRuf4-0008Lu-Hp; Mon, 22 Jan 2024 13:48:26 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 669907.1042443; Mon, 22 Jan 2024 13:48:26 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rRuf4-0008LS-D9; Mon, 22 Jan 2024 13:48:26 +0000
Received: by outflank-mailman (input) for mailman id 669907;
 Mon, 22 Jan 2024 13:48:25 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=t9EV=JA=bugseng.com=federico.serafini@srs-se1.protection.inumbo.net>)
 id 1rRuf2-0007Ly-WB
 for xen-devel@lists.xenproject.org; Mon, 22 Jan 2024 13:48:24 +0000
Received: from support.bugseng.com (mail.bugseng.com [162.55.131.47])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id e853965e-b92c-11ee-98f2-6d05b1d4d9a1;
 Mon, 22 Jan 2024 14:48:22 +0100 (CET)
Received: from Dell.homenet.telecomitalia.it
 (host-87-16-84-78.retail.telecomitalia.it [87.16.84.78])
 by support.bugseng.com (Postfix) with ESMTPSA id BA2244EE0743;
 Mon, 22 Jan 2024 14:48:21 +0100 (CET)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: e853965e-b92c-11ee-98f2-6d05b1d4d9a1
From: Federico Serafini <federico.serafini@bugseng.com>
To: xen-devel@lists.xenproject.org
Cc: consulting@bugseng.com,
	Federico Serafini <federico.serafini@bugseng.com>,
	Simone Ballarin <simone.ballarin@bugseng.com>,
	Doug Goldstein <cardoe@cardoe.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	George Dunlap <george.dunlap@citrix.com>,
	Jan Beulich <jbeulich@suse.com>,
	Julien Grall <julien@xen.org>,
	Wei Liu <wl@xen.org>
Subject: [XEN PATCH 3/3] automation/eclair: add deviation for MISRA C:2012 Rule 16.3
Date: Mon, 22 Jan 2024 14:48:08 +0100
Message-Id: <740a78c81a92842871156d9cc18242a4e8367764.1705930767.git.federico.serafini@bugseng.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <cover.1705930767.git.federico.serafini@bugseng.com>
References: <cover.1705930767.git.federico.serafini@bugseng.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Update ECLAIR configuration to consider safe switch clauses ending
with static_assert_unreachable().

Update docs/misra/deviations.rst accordingly.

Signed-off-by: Federico Serafini <federico.serafini@bugseng.com>
---
 automation/eclair_analysis/ECLAIR/deviations.ecl | 4 ++++
 docs/misra/deviations.rst                        | 4 ++++
 2 files changed, 8 insertions(+)

diff --git a/automation/eclair_analysis/ECLAIR/deviations.ecl b/automation/eclair_analysis/ECLAIR/deviations.ecl
index fd32ff8a9c..b0cd904d2d 100644
--- a/automation/eclair_analysis/ECLAIR/deviations.ecl
+++ b/automation/eclair_analysis/ECLAIR/deviations.ecl
@@ -368,6 +368,10 @@ safe."
 -config=MC3R1.R16.3,reports+={safe, "any_area(end_loc(any_exp(text(/BUG\\(\\);/))))"}
 -doc_end
 
+-doc_begin="Switch clauses ending with failure method \"static_assert_unreachable()\" are safe."
+-config=MC3R1.R16.3,reports+={safe, "any_area(end_loc(any_exp(text(/static_assert_unreachable\\(\\);/))))"}
+-doc_end
+
 -doc_begin="Switch clauses not ending with the break statement are safe if an
 explicit comment indicating the fallthrough intention is present."
 -config=MC3R1.R16.3,reports+={safe, "any_area(end_loc(any_exp(text(^(?s).*/\\* [fF]all ?through.? \\*/.*$,0..1))))"}
diff --git a/docs/misra/deviations.rst b/docs/misra/deviations.rst
index 123c78e20a..875f0d9160 100644
--- a/docs/misra/deviations.rst
+++ b/docs/misra/deviations.rst
@@ -307,6 +307,10 @@ Deviations related to MISRA C:2012 Rules:
      - Switch clauses ending with failure method \"BUG()\" are safe.
      - Tagged as `safe` for ECLAIR.
 
+   * - R16.3
+     - Switch clauses ending with macro static_assert_unreachable() are safe.
+     - Tagged as `safe` for ECLAIR.
+
    * - R16.3
      - Existing switch clauses not ending with the break statement are safe if
        an explicit comment indicating the fallthrough intention is present.
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Mon Jan 22 13:49:03 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 22 Jan 2024 13:49:03 +0000
Received: from list by lists.xenproject.org with outflank-mailman.669913.1042452 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rRuff-0001YW-Pz; Mon, 22 Jan 2024 13:49:03 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 669913.1042452; Mon, 22 Jan 2024 13:49:03 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rRuff-0001YN-NI; Mon, 22 Jan 2024 13:49:03 +0000
Received: by outflank-mailman (input) for mailman id 669913;
 Mon, 22 Jan 2024 13:49:02 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=VPlZ=JA=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rRufe-0007Lx-Lp
 for xen-devel@lists.xenproject.org; Mon, 22 Jan 2024 13:49:02 +0000
Received: from mail-lj1-x234.google.com (mail-lj1-x234.google.com
 [2a00:1450:4864:20::234])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id ff5cc492-b92c-11ee-9b0f-b553b5be7939;
 Mon, 22 Jan 2024 14:49:01 +0100 (CET)
Received: by mail-lj1-x234.google.com with SMTP id
 38308e7fff4ca-2cddb2c2b54so29739741fa.1
 for <xen-devel@lists.xenproject.org>; Mon, 22 Jan 2024 05:49:00 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 cw13-20020a05663849cd00b0046e627dbc4csm3035114jab.121.2024.01.22.05.48.59
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 22 Jan 2024 05:49:00 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: ff5cc492-b92c-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1705931340; x=1706536140; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:references:cc:to
         :from:content-language:subject:user-agent:mime-version:date
         :message-id:from:to:cc:subject:date:message-id:reply-to;
        bh=ozjB5J6HgFQRbYi1xrcNJWW3dzIQpHOtBsFN5IPmgeU=;
        b=AmmVygo/CZDpNNYwne3iqjpqKGlfPkj3QXiSh4K/lOkYQo1yva/OK0gpNDDMGVzO35
         +qd/vVY/gkRXc7ByIgPZFAOzPdzfrxTDjVYPNTVwtFqaTsa4dX2w1TznF6/BsO0t04U8
         +6XEtPtyKpmp9acvcE0ZmXr/3dww4sM5t1rjsI4kbitJ03+mr6/0JBx4Dbl3HonUngU1
         Z4hxh8nHDdm2Rguzr31jyevYCbAkvzUnECPQxRJrx8dPbyQY3DS5rJ4WH4+AY3u9cKVN
         PualTACx86V+99qCnEwdW/8WiQE+hhJEAxCSFGfRxwuhD9Hum1wTKiSaKgVuayoFwV6Z
         b1EQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705931340; x=1706536140;
        h=content-transfer-encoding:in-reply-to:autocrypt:references:cc:to
         :from:content-language:subject:user-agent:mime-version:date
         :message-id:x-gm-message-state:from:to:cc:subject:date:message-id
         :reply-to;
        bh=ozjB5J6HgFQRbYi1xrcNJWW3dzIQpHOtBsFN5IPmgeU=;
        b=PE9otAvDwFSNj1sdZwFX+vlbAsniI20H8U9Xdzz3L2qFR1TfWvFXafxPH5VGRI5h2u
         VKQEpn3BFZKa5ATCwUE4xhTz5jlIXlNrTL1EdA500MkJYC9nskwHmPJEpiiiHZNiJmTN
         MbOxsp/1w1NI6C0MnnNfkqTch62jUx0BW1XAIiw8lJiw3eqBTfgHVxsp0Ra1RhDAxTKZ
         k0X48KAp/UiT2NHlXcuNzf2Z2cOfrfkamRcY8DfVlrb2qH4kv3zCr0ErCeiBvDN9m6/t
         Q13uT2r1X20OyXBZ44FbdDomSiSR965JExbQ2VXfoZ3MmSYKv8BJTO1zitXTY/Of4CQL
         z09Q==
X-Gm-Message-State: AOJu0Yx5mn9Xiq3jfB40UnrqKH+Ir3g1309Zvd75SNRlgII+kCbwqKZy
	p7VI1AkgaKg70DEWowbLmiG/roc90dobo5rOskkQ9ao+Uyx2LWEKoQyhy3+10K3QLeYj+6Q1tPU
	=
X-Google-Smtp-Source: AGHT+IFKt7nIuw0Mpt1DPTm+e+/wh44JMrTgeYWpK7fTmq9NxDSx1vv6RLdBKm/+/ANeQip6xgkt3A==
X-Received: by 2002:a2e:a992:0:b0:2cc:7814:11b with SMTP id x18-20020a2ea992000000b002cc7814011bmr2504641ljq.65.1705931340676;
        Mon, 22 Jan 2024 05:49:00 -0800 (PST)
Message-ID: <058e0b9f-51f8-4e20-a328-20b968e8ebb0@suse.com>
Date: Mon, 22 Jan 2024 14:48:58 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: [PATCH v2 2/8] serial: fake IRQ-regs context in poll handlers
Content-Language: en-US
From: Jan Beulich <jbeulich@suse.com>
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 George Dunlap <george.dunlap@citrix.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>,
 Marek Marczykowski <marmarek@invisiblethingslab.com>
References: <33db57a2-b569-4fa8-b0b0-36ea92528d7b@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <33db57a2-b569-4fa8-b0b0-36ea92528d7b@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

In preparation of dropping the register parameters from
serial_[rt]x_interrupt() and in turn from IRQ handler functions,
register state needs making available another way for the few key
handlers which need it. Fake IRQ-like state.

Signed-off-by: Jan Beulich <jbeulich@suse.com>
---
The use of guest_cpu_user_regs() in dbc_uart_poll() is inconsistent with
other console poll functions we have, and it's unclear whether that's
actually generally correct.

Andrew suggested to move set_irq_regs() to BUGFRAME_run_fn handling;
it's not clear to me whether that would be (a) correct from an abstract
pov (that's exception, not interrupt context after all) and (b) really
beneficial.
---
v2: New.

--- a/xen/drivers/char/ehci-dbgp.c
+++ b/xen/drivers/char/ehci-dbgp.c
@@ -1253,6 +1253,7 @@ static void cf_check _ehci_dbgp_poll(str
     unsigned long flags;
     unsigned int timeout = MICROSECS(DBGP_CHECK_INTERVAL);
     bool empty = false;
+    struct cpu_user_regs *old_regs;
 
     if ( !dbgp->ehci_debug )
         return;
@@ -1268,12 +1269,17 @@ static void cf_check _ehci_dbgp_poll(str
         spin_unlock_irqrestore(&port->tx_lock, flags);
     }
 
+    /* Mimic interrupt context. */
+    old_regs = set_irq_regs(regs);
+
     if ( dbgp->in.chunk )
         serial_rx_interrupt(port, regs);
 
     if ( empty )
         serial_tx_interrupt(port, regs);
 
+    set_irq_regs(old_regs);
+
     if ( spin_trylock_irqsave(&port->tx_lock, flags) )
     {
         if ( dbgp->state == dbgp_idle && !dbgp->in.chunk &&
--- a/xen/drivers/char/ns16550.c
+++ b/xen/drivers/char/ns16550.c
@@ -211,10 +211,14 @@ static void cf_check __ns16550_poll(stru
 {
     struct serial_port *port = this_cpu(poll_port);
     struct ns16550 *uart = port->uart;
+    struct cpu_user_regs *old_regs;
 
     if ( uart->intr_works )
         return; /* Interrupts work - no more polling */
 
+    /* Mimic interrupt context. */
+    old_regs = set_irq_regs(regs);
+
     while ( ns_read_reg(uart, UART_LSR) & UART_LSR_DR )
     {
         if ( ns16550_ioport_invalid(uart) )
@@ -227,6 +231,7 @@ static void cf_check __ns16550_poll(stru
         serial_tx_interrupt(port, regs);
 
 out:
+    set_irq_regs(old_regs);
     set_timer(&uart->timer, NOW() + MILLISECS(uart->timeout_ms));
 }
 
--- a/xen/drivers/char/xhci-dbc.c
+++ b/xen/drivers/char/xhci-dbc.c
@@ -1164,6 +1164,7 @@ static void cf_check dbc_uart_poll(void
     struct dbc_uart *uart = port->uart;
     struct dbc *dbc = &uart->dbc;
     unsigned long flags = 0;
+    struct cpu_user_regs *old_regs;
 
     if ( spin_trylock_irqsave(&port->tx_lock, flags) )
     {
@@ -1175,10 +1176,15 @@ static void cf_check dbc_uart_poll(void
         spin_unlock_irqrestore(&port->tx_lock, flags);
     }
 
+    /* Mimic interrupt context. */
+    old_regs = set_irq_regs(guest_cpu_user_regs());
+
     while ( dbc_work_ring_size(&dbc->dbc_iwork) )
         serial_rx_interrupt(port, guest_cpu_user_regs());
 
     serial_tx_interrupt(port, guest_cpu_user_regs());
+
+    set_irq_regs(old_regs);
     set_timer(&uart->timer, NOW() + MICROSECS(DBC_POLL_INTERVAL));
 }
 



From xen-devel-bounces@lists.xenproject.org Mon Jan 22 13:49:27 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 22 Jan 2024 13:49:27 +0000
Received: from list by lists.xenproject.org with outflank-mailman.669920.1042463 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rRug3-0002JO-6l; Mon, 22 Jan 2024 13:49:27 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 669920.1042463; Mon, 22 Jan 2024 13:49:27 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rRug3-0002JH-35; Mon, 22 Jan 2024 13:49:27 +0000
Received: by outflank-mailman (input) for mailman id 669920;
 Mon, 22 Jan 2024 13:49:25 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=VPlZ=JA=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rRug1-0007Lx-FT
 for xen-devel@lists.xenproject.org; Mon, 22 Jan 2024 13:49:25 +0000
Received: from mail-lj1-x231.google.com (mail-lj1-x231.google.com
 [2a00:1450:4864:20::231])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 0cf04a59-b92d-11ee-9b0f-b553b5be7939;
 Mon, 22 Jan 2024 14:49:23 +0100 (CET)
Received: by mail-lj1-x231.google.com with SMTP id
 38308e7fff4ca-2cd880ceaf2so34543561fa.2
 for <xen-devel@lists.xenproject.org>; Mon, 22 Jan 2024 05:49:23 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 cw13-20020a05663849cd00b0046e627dbc4csm3035114jab.121.2024.01.22.05.49.21
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 22 Jan 2024 05:49:22 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 0cf04a59-b92d-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1705931363; x=1706536163; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:references:cc:to
         :from:content-language:subject:user-agent:mime-version:date
         :message-id:from:to:cc:subject:date:message-id:reply-to;
        bh=Ro3tacV+Cx2+fVIZpZoKa/X2F9kQbo9bRfxSzAFGBaM=;
        b=eEeR5Q8k0zH+TxAn28OQbOUSx5MVJPKHjFWez0XZGTUZ/oAETTlqJguTaHz23d9qqJ
         4CpNWg+wGAo0FsIgcd31Cw000mpOzpJARJlvF5NIhn9SaTzZKkh//zMtcOqOxzkLXxqf
         lFidsM35nUQQK4W+yA1fmrI50aqFvYrHHaqX34CYVvuBr3X84STQeaLdxee4IPpfirDh
         9F5d5GTnXUVPsx22gFQv2Tj0TpOjTALBftPa7yIZfUb9U2d/sPtMMHSvI858PPOz4+UG
         po5mXT6m8cpTOK3XRpv17mjK/lAMzdshUsqjoUBKKzjaS3caeqzayq1qOiYar+/L9h1V
         RTOg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705931363; x=1706536163;
        h=content-transfer-encoding:in-reply-to:autocrypt:references:cc:to
         :from:content-language:subject:user-agent:mime-version:date
         :message-id:x-gm-message-state:from:to:cc:subject:date:message-id
         :reply-to;
        bh=Ro3tacV+Cx2+fVIZpZoKa/X2F9kQbo9bRfxSzAFGBaM=;
        b=ckw8htldl1QgQ7gfVgbgcsCqUEyXftCH50vQZI/wStqJDgusuOooT0nFUUYfG77+aO
         xiXW4D+JUUWI1lgodMpYs0NExlliHSNNZCRdovxseLjigwDDwvhtqrszh+y8UWr7S12P
         462MhUuO9BLarks/tGdb0IGsEghJgQqJtJ9loHeqLORa3pKPg8i1XBNAOhodizy6Tdtv
         RSmvdHw8AcYHSq/XRhYsuRp7BWz/3pgS3MZw+uRZgGUZzZsptRceVahspNgG0OPs7Qz6
         VWqoTyIbucXQy4spuX32LJhfZhWJ7yThZGXp+xlt3gzJxrCcz0hOUp+X6MQnxYobpPXY
         RscQ==
X-Gm-Message-State: AOJu0YweoOyHPrWF7lcGzhIBj3ZQWSiQuPDr/rVEB+sU37tYdZBE8LqY
	ASkUoEF77QH+h+qMGPodUvQUZgHZ3SVIWSMWobhlRaT4kH/Pne9Mik+BpsHb+pLBhe9Xb5PY8zw
	=
X-Google-Smtp-Source: AGHT+IHL1dfd46V/LaVagjznxYEfU6kkJwJnBT3ES4IVsZM41AhQHWRiwerW0sYtTUXVhzG2lMIaZA==
X-Received: by 2002:a2e:a54e:0:b0:2cc:c6e0:fbb with SMTP id e14-20020a2ea54e000000b002ccc6e00fbbmr2264172ljn.20.1705931363314;
        Mon, 22 Jan 2024 05:49:23 -0800 (PST)
Message-ID: <34fba5ac-84e2-477f-8333-afd39c54ad71@suse.com>
Date: Mon, 22 Jan 2024 14:49:21 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: [PATCH v2 3/8] keyhandler: drop regs parameter from handle_keyregs()
Content-Language: en-US
From: Jan Beulich <jbeulich@suse.com>
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 George Dunlap <george.dunlap@citrix.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>
References: <33db57a2-b569-4fa8-b0b0-36ea92528d7b@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <33db57a2-b569-4fa8-b0b0-36ea92528d7b@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

In preparation for further removal of regs parameters, drop it here. In
the two places where it's actually needed, retrieve IRQ context if
available, or else guest context.

Suggested-by: Andrew Cooper <andrew.cooper3@citrix.com>
Signed-off-by: Jan Beulich <jbeulich@suse.com>
---
As an alternative to the new boolean parameter, I wonder if we couldn't
special-case the idle vCPU case: It's only there where we would not have
proper context retrievable via guest_cpu_user_regs().
---
v2: New.

--- a/xen/common/keyhandler.c
+++ b/xen/common/keyhandler.c
@@ -76,12 +76,12 @@ static struct keyhandler {
 
 static void cf_check keypress_action(void *unused)
 {
-    handle_keypress(keypress_key, NULL);
+    handle_keypress(keypress_key, true);
 }
 
 static DECLARE_TASKLET(keypress_tasklet, keypress_action, NULL);
 
-void handle_keypress(unsigned char key, struct cpu_user_regs *regs)
+void handle_keypress(unsigned char key, bool need_context)
 {
     struct keyhandler *h;
 
@@ -91,7 +91,7 @@ void handle_keypress(unsigned char key,
     if ( !in_irq() || h->irq_callback )
     {
         console_start_log_everything();
-        h->irq_callback ? h->irq_fn(key, regs) : h->fn(key);
+        h->irq_callback ? h->irq_fn(key, need_context) : h->fn(key);
         console_end_log_everything();
     }
     else
@@ -172,7 +172,7 @@ void cf_check dump_execstate(struct cpu_
 }
 
 static void cf_check dump_registers(
-    unsigned char key, struct cpu_user_regs *regs)
+    unsigned char key, bool need_context)
 {
     unsigned int cpu;
 
@@ -185,8 +185,8 @@ static void cf_check dump_registers(
     cpumask_copy(&dump_execstate_mask, &cpu_online_map);
 
     /* Get local execution state out immediately, in case we get stuck. */
-    if ( regs )
-        dump_execstate(regs);
+    if ( !need_context )
+        dump_execstate(get_irq_regs() ?: guest_cpu_user_regs());
     else
         run_in_exception_handler(dump_execstate);
 
@@ -248,8 +248,7 @@ static void cf_check dump_hwdom_register
     }
 }
 
-static void cf_check reboot_machine(
-    unsigned char key, struct cpu_user_regs *regs)
+static void cf_check reboot_machine(unsigned char key, bool unused)
 {
     printk("'%c' pressed -> rebooting machine\n", key);
     machine_restart(0);
@@ -477,8 +476,7 @@ static void cf_check run_all_nonirq_keyh
 static DECLARE_TASKLET(run_all_keyhandlers_tasklet,
                        run_all_nonirq_keyhandlers, NULL);
 
-static void cf_check run_all_keyhandlers(
-    unsigned char key, struct cpu_user_regs *regs)
+static void cf_check run_all_keyhandlers(unsigned char key, bool need_context)
 {
     struct keyhandler *h;
     unsigned int k;
@@ -494,7 +492,7 @@ static void cf_check run_all_keyhandlers
         if ( !h->irq_fn || !h->diagnostic || !h->irq_callback )
             continue;
         printk("[%c: %s]\n", k, h->desc);
-        h->irq_fn(k, regs);
+        h->irq_fn(k, need_context);
     }
 
     watchdog_enable();
@@ -511,17 +509,16 @@ static void cf_check do_debugger_trap_fa
     barrier();
 }
 
-static void cf_check do_debug_key(unsigned char key, struct cpu_user_regs *regs)
+static void cf_check do_debug_key(unsigned char key, bool need_context)
 {
     printk("'%c' pressed -> trapping into debugger\n", key);
-    if ( regs )
-        do_debugger_trap_fatal(regs);
+    if ( !need_context )
+        do_debugger_trap_fatal(get_irq_regs() ?: guest_cpu_user_regs());
     else
         run_in_exception_handler(do_debugger_trap_fatal);
 }
 
-static void cf_check do_toggle_alt_key(
-    unsigned char key, struct cpu_user_regs *regs)
+static void cf_check do_toggle_alt_key(unsigned char key, bool unused)
 {
     alt_key_handling = !alt_key_handling;
     printk("'%c' pressed -> using %s key handling\n", key,
@@ -586,7 +583,7 @@ void keyhandler_crash_action(enum crash_
         if ( *action == '+' )
             mdelay(10);
         else
-            handle_keypress(*action, NULL);
+            handle_keypress(*action, true);
         action++;
     }
 }
--- a/xen/common/sysctl.c
+++ b/xen/common/sysctl.c
@@ -134,7 +134,7 @@ long do_sysctl(XEN_GUEST_HANDLE_PARAM(xe
         {
             if ( copy_from_guest_offset(&c, op->u.debug_keys.keys, i, 1) )
                 goto out;
-            handle_keypress(c, guest_cpu_user_regs());
+            handle_keypress(c, false);
         }
         ret = 0;
         copyback = 0;
--- a/xen/drivers/char/console.c
+++ b/xen/drivers/char/console.c
@@ -280,7 +280,7 @@ static int *__read_mostly upper_thresh_a
 static int *__read_mostly lower_thresh_adj = &xenlog_lower_thresh;
 static const char *__read_mostly thresh_adj = "standard";
 
-static void cf_check do_toggle_guest(unsigned char key, struct cpu_user_regs *regs)
+static void cf_check do_toggle_guest(unsigned char key, bool unused)
 {
     if ( upper_thresh_adj == &xenlog_upper_thresh )
     {
@@ -307,13 +307,13 @@ static void do_adj_thresh(unsigned char
            loglvl_str(*upper_thresh_adj));
 }
 
-static void cf_check do_inc_thresh(unsigned char key, struct cpu_user_regs *regs)
+static void cf_check do_inc_thresh(unsigned char key, bool unused)
 {
     ++*lower_thresh_adj;
     do_adj_thresh(key);
 }
 
-static void cf_check do_dec_thresh(unsigned char key, struct cpu_user_regs *regs)
+static void cf_check do_dec_thresh(unsigned char key, bool unused)
 {
     if ( *lower_thresh_adj )
         --*lower_thresh_adj;
@@ -532,7 +532,7 @@ static void __serial_rx(char c, struct c
     switch ( console_rx )
     {
     case 0:
-        return handle_keypress(c, regs);
+        return handle_keypress(c, false);
 
     case 1:
         /*
--- a/xen/include/xen/keyhandler.h
+++ b/xen/include/xen/keyhandler.h
@@ -24,9 +24,8 @@ typedef void (keyhandler_fn_t)(unsigned
  *
  * Called in hardirq context with interrupts disabled.
  */
-struct cpu_user_regs;
 typedef void (irq_keyhandler_fn_t)(unsigned char key,
-                                   struct cpu_user_regs *regs);
+                                   bool need_context);
 
 /* Initialize keytable with default handlers. */
 void initialize_keytable(void);
@@ -46,7 +45,7 @@ void register_irq_keyhandler(unsigned ch
                              bool diagnostic);
 
 /* Inject a keypress into the key-handling subsystem. */
-extern void handle_keypress(unsigned char key, struct cpu_user_regs *regs);
+extern void handle_keypress(unsigned char key, bool need_context);
 
 enum crash_reason {
     CRASHREASON_PANIC,



From xen-devel-bounces@lists.xenproject.org Mon Jan 22 13:50:01 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 22 Jan 2024 13:50:01 +0000
Received: from list by lists.xenproject.org with outflank-mailman.669925.1042472 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rRugb-00033p-Dg; Mon, 22 Jan 2024 13:50:01 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 669925.1042472; Mon, 22 Jan 2024 13:50:01 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rRugb-00033i-Av; Mon, 22 Jan 2024 13:50:01 +0000
Received: by outflank-mailman (input) for mailman id 669925;
 Mon, 22 Jan 2024 13:50:00 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=VPlZ=JA=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rRuga-00033S-BC
 for xen-devel@lists.xenproject.org; Mon, 22 Jan 2024 13:50:00 +0000
Received: from mail-lj1-x229.google.com (mail-lj1-x229.google.com
 [2a00:1450:4864:20::229])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 223ddf2a-b92d-11ee-98f2-6d05b1d4d9a1;
 Mon, 22 Jan 2024 14:49:59 +0100 (CET)
Received: by mail-lj1-x229.google.com with SMTP id
 38308e7fff4ca-2cd0f4f306fso34229151fa.0
 for <xen-devel@lists.xenproject.org>; Mon, 22 Jan 2024 05:49:59 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 cw13-20020a05663849cd00b0046e627dbc4csm3035114jab.121.2024.01.22.05.49.57
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 22 Jan 2024 05:49:58 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 223ddf2a-b92d-11ee-98f2-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1705931399; x=1706536199; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:references:cc:to
         :from:content-language:subject:user-agent:mime-version:date
         :message-id:from:to:cc:subject:date:message-id:reply-to;
        bh=fK812nh3pwQPfsrNIv1f+BF+0piaboacJxzlQr2GGy0=;
        b=R4fqUeCDcja18SrSTNOLMA2HKNfrm9StTtSf2UQX83E/RYsogow/JVmx4H4SLjWN/w
         qsl3lsBImX07uGtZy2ogiuIXjpAGYjy9PqnobZaOUBR8Kbb3kM4lVhlfYIX6/v12cgOP
         jIYzUvRXJVBViQyaQ4/HUJEwzfDFdto+wMDTf9/cMIrUmk+/T85jxwiU0bmA6xuBo+ta
         N9qWaANmPxr2qQPlzDZsKPDdfDGnaqmmwZlA0ZDldX2Yoa3nJtN+IsOD3KYDM2vFUWaA
         eQVItdgND5dBq9VJIaPR+8gsGKbo2FrCod4nzDVHu4rp/3zq9dl5RBcQnfIgNQdKi5yP
         HtMQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705931399; x=1706536199;
        h=content-transfer-encoding:in-reply-to:autocrypt:references:cc:to
         :from:content-language:subject:user-agent:mime-version:date
         :message-id:x-gm-message-state:from:to:cc:subject:date:message-id
         :reply-to;
        bh=fK812nh3pwQPfsrNIv1f+BF+0piaboacJxzlQr2GGy0=;
        b=JTTrTg0zc7Ip4pDyEVfrU8nUEhc6Tsw1HdbsU6tbM/+yP6MksfvLf9yeJAgmR8sHb6
         a2Wpmmrc6TWIA/TkMV53ovvpo3/q80wPdmLLPkPJMkI9E7YFZtlGHUfqcQBaaAz4Jwel
         3u/DFivQ5nlIk/R9aljgm07dYNXsm1uyo2zSC1w54dxYFn1xhs5vq7Ertt6xmHPmQvIk
         Il3WngTiexs4e0z/v4bc8o+/VlKyotNQqSqLjBzsdO/IPEcqW+/d9DKOtwBUPVaW3EQF
         N5X1RTj5aUEGFkDE7qN5REPXhIpe1diLtsRucTnmOdMVq4vjYhDYbK3QasmdDQnhUhJO
         w0JA==
X-Gm-Message-State: AOJu0YzLLLdxbnypixbd47p2QTrlcMuonpxuJaojOqpygUaSr8QAXxzN
	T+MerZXGhAi1lmMhze7TXAo5EYXa1Yb/hP+ERNzNIKTarKFBGaDv9KKjmYDqHLQoMKlpjV867tA
	=
X-Google-Smtp-Source: AGHT+IE96fWGY9pXTRhdgZ9fOaNrkfVlRgARYOkoM9WlLoFdZqXQPkZr3zU0l/ezxypZ6QqAzAIrDg==
X-Received: by 2002:a2e:8201:0:b0:2cd:1d5d:322b with SMTP id w1-20020a2e8201000000b002cd1d5d322bmr1673216ljg.57.1705931399219;
        Mon, 22 Jan 2024 05:49:59 -0800 (PST)
Message-ID: <851cd74b-0fba-44b7-9f81-cd49c25b748f@suse.com>
Date: Mon, 22 Jan 2024 14:49:57 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: [PATCH v2 4/8] serial: drop serial_rx_fn's regs parameter
Content-Language: en-US
From: Jan Beulich <jbeulich@suse.com>
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 George Dunlap <george.dunlap@citrix.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>
References: <33db57a2-b569-4fa8-b0b0-36ea92528d7b@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <33db57a2-b569-4fa8-b0b0-36ea92528d7b@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

It's simply not needed anymore.

Signed-off-by: Jan Beulich <jbeulich@suse.com>
---
v2: Re-base over earlier (new/split) patches.

--- a/xen/drivers/char/console.c
+++ b/xen/drivers/char/console.c
@@ -527,7 +527,7 @@ static void switch_serial_input(void)
     printk("\n");
 }
 
-static void __serial_rx(char c, struct cpu_user_regs *regs)
+static void __serial_rx(char c)
 {
     switch ( console_rx )
     {
@@ -579,7 +579,7 @@ static void __serial_rx(char c, struct c
 #endif
 }
 
-static void cf_check serial_rx(char c, struct cpu_user_regs *regs)
+static void cf_check serial_rx(char c)
 {
     static int switch_code_count = 0;
 
@@ -595,10 +595,10 @@ static void cf_check serial_rx(char c, s
     }
 
     for ( ; switch_code_count != 0; switch_code_count-- )
-        __serial_rx(switch_code, regs);
+        __serial_rx(switch_code);
 
     /* Finally process the just-received character. */
-    __serial_rx(c, regs);
+    __serial_rx(c);
 }
 
 static void cf_check notify_dom0_con_ring(void *unused)
--- a/xen/drivers/char/serial.c
+++ b/xen/drivers/char/serial.c
@@ -68,7 +68,7 @@ void serial_rx_interrupt(struct serial_p
     spin_unlock_irqrestore(&port->rx_lock, flags);
 
     if ( fn != NULL )
-        (*fn)(c & 0x7f, regs);
+        fn(c & 0x7f);
 }
 
 void serial_tx_interrupt(struct serial_port *port, struct cpu_user_regs *regs)
--- a/xen/drivers/char/xen_pv_console.c
+++ b/xen/drivers/char/xen_pv_console.c
@@ -118,7 +118,7 @@ size_t pv_console_rx(struct cpu_user_reg
     {
         c = cons_ring->in[MASK_XENCONS_IDX(cons++, cons_ring->in)];
         if ( cons_rx_handler )
-            cons_rx_handler(c, regs);
+            cons_rx_handler(c);
         recv++;
     }
 
--- a/xen/include/xen/serial.h
+++ b/xen/include/xen/serial.h
@@ -15,7 +15,7 @@
 struct cpu_user_regs;
 
 /* Register a character-receive hook on the specified COM port. */
-typedef void (*serial_rx_fn)(char c, struct cpu_user_regs *regs);
+typedef void (*serial_rx_fn)(char c);
 void serial_set_rx_handler(int handle, serial_rx_fn fn);
 
 /* Number of characters we buffer for a polling receiver. */



From xen-devel-bounces@lists.xenproject.org Mon Jan 22 13:51:22 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 22 Jan 2024 13:51:22 +0000
Received: from list by lists.xenproject.org with outflank-mailman.669928.1042482 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rRuhm-0004Xl-Nk; Mon, 22 Jan 2024 13:51:14 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 669928.1042482; Mon, 22 Jan 2024 13:51:14 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rRuhm-0004Xe-L8; Mon, 22 Jan 2024 13:51:14 +0000
Received: by outflank-mailman (input) for mailman id 669928;
 Mon, 22 Jan 2024 13:51:13 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=VPlZ=JA=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rRuhl-0004XY-IT
 for xen-devel@lists.xenproject.org; Mon, 22 Jan 2024 13:51:13 +0000
Received: from mail-lj1-x22b.google.com (mail-lj1-x22b.google.com
 [2a00:1450:4864:20::22b])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 4d1576c0-b92d-11ee-9b0f-b553b5be7939;
 Mon, 22 Jan 2024 14:51:11 +0100 (CET)
Received: by mail-lj1-x22b.google.com with SMTP id
 38308e7fff4ca-2cdeb80fdfdso34067331fa.2
 for <xen-devel@lists.xenproject.org>; Mon, 22 Jan 2024 05:51:11 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 cw13-20020a05663849cd00b0046e627dbc4csm3035114jab.121.2024.01.22.05.51.09
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 22 Jan 2024 05:51:10 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 4d1576c0-b92d-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1705931471; x=1706536271; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:references:cc:to
         :from:content-language:subject:user-agent:mime-version:date
         :message-id:from:to:cc:subject:date:message-id:reply-to;
        bh=0DlbwChHh3lVOiwYmNPTJJLzXFhauBoipOMIM8LYm04=;
        b=GIs0n7VImCPALKZLXJT6DVRMX/0lelm0/pok4oh/GBA8SGvF9HNjf984nychVNr4hY
         AsAfEBjezel0RQQTK90p4k3y3xj786AKtA3bCUhZPJU6Y2ePrgVia2I6iehfqxZFuURj
         cq0ri8xTAHS3nxExCoBPFpcNLiM4rEolKS01gU2HSM4PYHq2NIo4RHmbtU7ni8/N8jhe
         3kjs9+anJx0lfTwLT7XIcZSL3G5Qb/MCCM6i63DftYGgy736OzCYlEYCvAvETD93kV+f
         K42yHtPLw+0kEsrS6kuqsbkTEq6QGWhMROI4hmDU/Cld20x0ShwCowm6wlXAsZgvugG8
         M+8A==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705931471; x=1706536271;
        h=content-transfer-encoding:in-reply-to:autocrypt:references:cc:to
         :from:content-language:subject:user-agent:mime-version:date
         :message-id:x-gm-message-state:from:to:cc:subject:date:message-id
         :reply-to;
        bh=0DlbwChHh3lVOiwYmNPTJJLzXFhauBoipOMIM8LYm04=;
        b=Rld5QhbFoL1YeUUoDMjCMnJdoCNJhLcuN3wQQD8tfeqlmzUjGKLpw5qR3rJaRqZFP+
         iOCP4jtIV/dp1RmdOKFSJv4Y7+yOGWJuJsPAEB0ahcPo3l8SlHh95ONC7CoWGMDOPFPu
         qyLpsolIUqMtvZJwAsJL2tJi5y5bRR6PMBWUKWbzKJEorDemUVRgJIvMs9mhmET56jMS
         U0/HYjA2oPf+Aw2eIaCPxcEcU0+Zv+CQgL7NhDafi7l0y6niJ+LgoESGB8rnp6NaSEbB
         ddd73g3DdrdmXUlPJw4Vi3RXI4gMtxEUpAWSM56GO2lXxIp24GTw5ELGSPz6BGgCgQNK
         z8bw==
X-Gm-Message-State: AOJu0YwkVlG/X5T8SnKTodTlHYhJnT6B4JmdVDJ3ppQ6PuEGZLCaPsVv
	bjPrIiAXsidEnx4YyJCvZqVfW9YDyGe8sUZx2ucPQgRYEwX0EUGm9nwQyIdsitnuVmctqPt0F3c
	=
X-Google-Smtp-Source: AGHT+IGBuTNm1MoxvXDHdtdm1SYp6BAOZ9TKrCNTmDrmshgXeB12M6qM7pvuTd3OZ7uvVPSzop++OA==
X-Received: by 2002:a05:651c:19a3:b0:2cd:54d:4838 with SMTP id bx35-20020a05651c19a300b002cd054d4838mr865048ljb.53.1705931470896;
        Mon, 22 Jan 2024 05:51:10 -0800 (PST)
Message-ID: <6a40828d-35fa-458c-8b31-5768e54498d7@suse.com>
Date: Mon, 22 Jan 2024 14:51:09 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: [PATCH v2 6/8] serial: drop serial_[rt]x_interrupt()'s regs parameter
Content-Language: en-US
From: Jan Beulich <jbeulich@suse.com>
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 George Dunlap <george.dunlap@citrix.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>,
 Bertrand Marquis <bertrand.marquis@arm.com>,
 Michal Orzel <michal.orzel@amd.com>
References: <33db57a2-b569-4fa8-b0b0-36ea92528d7b@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <33db57a2-b569-4fa8-b0b0-36ea92528d7b@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

They're simply not needed anymore.

Signed-off-by: Jan Beulich <jbeulich@suse.com>
---
v2: Setting of IRQ regs split off to an earlier patch.

--- a/xen/drivers/char/cadence-uart.c
+++ b/xen/drivers/char/cadence-uart.c
@@ -51,7 +51,7 @@ static void cuart_interrupt(int irq, voi
         /* ACK.  */
         if ( status & UART_SR_INTR_RTRIG )
         {
-            serial_rx_interrupt(port, regs);
+            serial_rx_interrupt(port);
             cuart_write(uart, R_UART_CISR, UART_SR_INTR_RTRIG);
         }
     } while ( status & UART_SR_INTR_RTRIG );
--- a/xen/drivers/char/ehci-dbgp.c
+++ b/xen/drivers/char/ehci-dbgp.c
@@ -1273,10 +1273,10 @@ static void cf_check _ehci_dbgp_poll(str
     old_regs = set_irq_regs(regs);
 
     if ( dbgp->in.chunk )
-        serial_rx_interrupt(port, regs);
+        serial_rx_interrupt(port);
 
     if ( empty )
-        serial_tx_interrupt(port, regs);
+        serial_tx_interrupt(port);
 
     set_irq_regs(old_regs);
 
--- a/xen/drivers/char/exynos4210-uart.c
+++ b/xen/drivers/char/exynos4210-uart.c
@@ -81,7 +81,7 @@ static void exynos4210_uart_interrupt(in
         if ( status & (UINTM_RXD | UINTM_ERROR) )
         {
             /* uart->regs[UINTM] |= RXD|ERROR; */
-            serial_rx_interrupt(port, regs);
+            serial_rx_interrupt(port);
             /* uart->regs[UINTM] &= ~(RXD|ERROR); */
             exynos4210_write(uart, UINTP, UINTM_RXD | UINTM_ERROR);
         }
@@ -89,7 +89,7 @@ static void exynos4210_uart_interrupt(in
         if ( status & (UINTM_TXD | UINTM_MODEM) )
         {
             /* uart->regs[UINTM] |= TXD|MODEM; */
-            serial_tx_interrupt(port, regs);
+            serial_tx_interrupt(port);
             /* uart->regs[UINTM] &= ~(TXD|MODEM); */
             exynos4210_write(uart, UINTP, UINTM_TXD | UINTM_MODEM);
         }
--- a/xen/drivers/char/imx-lpuart.c
+++ b/xen/drivers/char/imx-lpuart.c
@@ -48,10 +48,10 @@ static void imx_lpuart_interrupt(int irq
     rxcnt = imx_lpuart_read(uart, UARTWATER) >> UARTWATER_RXCNT_OFF;
 
     if ( (sts & UARTSTAT_RDRF) || (rxcnt > 0) )
-	    serial_rx_interrupt(port, regs);
+	    serial_rx_interrupt(port);
 
     if ( sts & UARTSTAT_TDRE )
-	    serial_tx_interrupt(port, regs);
+	    serial_tx_interrupt(port);
 
     imx_lpuart_write(uart, UARTSTAT, sts);
 }
--- a/xen/drivers/char/meson-uart.c
+++ b/xen/drivers/char/meson-uart.c
@@ -69,10 +69,10 @@ static void meson_uart_interrupt(int irq
     uint32_t st = readl(uart->regs + AML_UART_STATUS_REG);
 
     if ( !(st & AML_UART_RX_FIFO_EMPTY) )
-        serial_rx_interrupt(port, regs);
+        serial_rx_interrupt(port);
 
     if ( !(st & AML_UART_TX_FIFO_FULL) )
-        serial_tx_interrupt(port, regs);
+        serial_tx_interrupt(port);
 }
 
 static void __init meson_uart_init_preirq(struct serial_port *port)
--- a/xen/drivers/char/mvebu-uart.c
+++ b/xen/drivers/char/mvebu-uart.c
@@ -76,10 +76,10 @@ static void mvebu3700_uart_interrupt(int
 
     if ( st & (STATUS_RX_RDY | STATUS_OVR_ERR | STATUS_FRM_ERR |
                STATUS_BRK_DET) )
-        serial_rx_interrupt(port, regs);
+        serial_rx_interrupt(port);
 
     if ( st & STATUS_TX_RDY )
-        serial_tx_interrupt(port, regs);
+        serial_tx_interrupt(port);
 }
 
 static void __init mvebu3700_uart_init_preirq(struct serial_port *port)
--- a/xen/drivers/char/ns16550.c
+++ b/xen/drivers/char/ns16550.c
@@ -188,9 +188,9 @@ static void cf_check ns16550_interrupt(
         u8 lsr = ns_read_reg(uart, UART_LSR);
 
         if ( (lsr & uart->lsr_mask) == uart->lsr_mask )
-            serial_tx_interrupt(port, regs);
+            serial_tx_interrupt(port);
         if ( lsr & UART_LSR_DR )
-            serial_rx_interrupt(port, regs);
+            serial_rx_interrupt(port);
 
         /* A "busy-detect" condition is observed on Allwinner/sunxi UART
          * after LCR is written during setup. It needs to be cleared at
@@ -224,11 +224,11 @@ static void cf_check __ns16550_poll(stru
         if ( ns16550_ioport_invalid(uart) )
             goto out;
 
-        serial_rx_interrupt(port, regs);
+        serial_rx_interrupt(port);
     }
 
     if ( ( ns_read_reg(uart, UART_LSR) & uart->lsr_mask ) == uart->lsr_mask )
-        serial_tx_interrupt(port, regs);
+        serial_tx_interrupt(port);
 
 out:
     set_irq_regs(old_regs);
--- a/xen/drivers/char/omap-uart.c
+++ b/xen/drivers/char/omap-uart.c
@@ -70,9 +70,9 @@ static void omap_uart_interrupt(int irq,
     {
         lsr = omap_read(uart, UART_LSR) & 0xff;
 	if ( lsr & UART_LSR_THRE )
-            serial_tx_interrupt(port, regs);
+            serial_tx_interrupt(port);
 	if ( lsr & UART_LSR_DR )
-            serial_rx_interrupt(port, regs);
+            serial_rx_interrupt(port);
 
         if ( port->txbufc == port->txbufp ) {
             reg = omap_read(uart, UART_IER);
--- a/xen/drivers/char/pl011.c
+++ b/xen/drivers/char/pl011.c
@@ -95,7 +95,7 @@ static void pl011_interrupt(int irq, voi
             pl011_write(uart, ICR, status & ~(TXI|RTI|RXI));
 
             if ( status & (RTI|RXI) )
-                serial_rx_interrupt(port, regs);
+                serial_rx_interrupt(port);
 
             /* TODO
                 if ( status & (DSRMI|DCDMI|CTSMI|RIMI) )
@@ -103,7 +103,7 @@ static void pl011_interrupt(int irq, voi
             */
 
             if ( status & (TXI) )
-                serial_tx_interrupt(port, regs);
+                serial_tx_interrupt(port);
 
             status = pl011_intr_status(uart);
         } while (status != 0);
--- a/xen/drivers/char/scif-uart.c
+++ b/xen/drivers/char/scif-uart.c
@@ -119,11 +119,11 @@ static void scif_uart_interrupt(int irq,
     {
         /* TX Interrupt */
         if ( status & SCFSR_TDFE )
-            serial_tx_interrupt(port, regs);
+            serial_tx_interrupt(port);
 
         /* RX Interrupt */
         if ( status & (SCFSR_RDF | SCFSR_DR) )
-            serial_rx_interrupt(port, regs);
+            serial_rx_interrupt(port);
 
         /* Error Interrupt */
         if ( status & params->error_mask )
--- a/xen/drivers/char/serial.c
+++ b/xen/drivers/char/serial.c
@@ -45,7 +45,7 @@ static inline void serial_stop_tx(struct
         port->driver->stop_tx(port);
 }
 
-void serial_rx_interrupt(struct serial_port *port, struct cpu_user_regs *regs)
+void serial_rx_interrupt(struct serial_port *port)
 {
     char c;
     serial_rx_fn fn = NULL;
@@ -71,7 +71,7 @@ void serial_rx_interrupt(struct serial_p
         fn(c & 0x7f);
 }
 
-void serial_tx_interrupt(struct serial_port *port, struct cpu_user_regs *regs)
+void serial_tx_interrupt(struct serial_port *port)
 {
     int i, n;
     unsigned long flags;
--- a/xen/drivers/char/xhci-dbc.c
+++ b/xen/drivers/char/xhci-dbc.c
@@ -1180,9 +1180,9 @@ static void cf_check dbc_uart_poll(void
     old_regs = set_irq_regs(guest_cpu_user_regs());
 
     while ( dbc_work_ring_size(&dbc->dbc_iwork) )
-        serial_rx_interrupt(port, guest_cpu_user_regs());
+        serial_rx_interrupt(port);
 
-    serial_tx_interrupt(port, guest_cpu_user_regs());
+    serial_tx_interrupt(port);
 
     set_irq_regs(old_regs);
     set_timer(&uart->timer, NOW() + MICROSECS(DBC_POLL_INTERVAL));
--- a/xen/include/xen/serial.h
+++ b/xen/include/xen/serial.h
@@ -12,8 +12,6 @@
 #include <xen/init.h>
 #include <xen/spinlock.h>
 
-struct cpu_user_regs;
-
 /* Register a character-receive hook on the specified COM port. */
 typedef void (*serial_rx_fn)(char c);
 void serial_set_rx_handler(int handle, serial_rx_fn fn);
@@ -155,8 +153,8 @@ void serial_register_uart(int idx, struc
 /* Place the serial port into asynchronous transmit mode. */
 void serial_async_transmit(struct serial_port *port);
 /* Process work in interrupt context. */
-void serial_rx_interrupt(struct serial_port *port, struct cpu_user_regs *regs);
-void serial_tx_interrupt(struct serial_port *port, struct cpu_user_regs *regs);
+void serial_rx_interrupt(struct serial_port *port);
+void serial_tx_interrupt(struct serial_port *port);
 
 /*
  * Initialisers for individual uart drivers.



From xen-devel-bounces@lists.xenproject.org Mon Jan 22 13:52:04 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 22 Jan 2024 13:52:04 +0000
Received: from list by lists.xenproject.org with outflank-mailman.669935.1042493 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rRuiZ-000586-3x; Mon, 22 Jan 2024 13:52:03 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 669935.1042493; Mon, 22 Jan 2024 13:52:03 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rRuiZ-00057z-15; Mon, 22 Jan 2024 13:52:03 +0000
Received: by outflank-mailman (input) for mailman id 669935;
 Mon, 22 Jan 2024 13:52:02 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=VPlZ=JA=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rRuiY-0004XY-FT
 for xen-devel@lists.xenproject.org; Mon, 22 Jan 2024 13:52:02 +0000
Received: from mail-lj1-x236.google.com (mail-lj1-x236.google.com
 [2a00:1450:4864:20::236])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 6a526313-b92d-11ee-9b0f-b553b5be7939;
 Mon, 22 Jan 2024 14:52:00 +0100 (CET)
Received: by mail-lj1-x236.google.com with SMTP id
 38308e7fff4ca-2cddb2c2b54so29773351fa.1
 for <xen-devel@lists.xenproject.org>; Mon, 22 Jan 2024 05:52:00 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 cw13-20020a05663849cd00b0046e627dbc4csm3035114jab.121.2024.01.22.05.51.58
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 22 Jan 2024 05:51:59 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 6a526313-b92d-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1705931520; x=1706536320; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:references:cc:to
         :from:content-language:subject:user-agent:mime-version:date
         :message-id:from:to:cc:subject:date:message-id:reply-to;
        bh=SnztAn5RnbJ1KGOhJP3RqH5wwHJC2HwWQ6wc1hqi010=;
        b=a8eXGvUfY/sRfW27K83SRkHwaLFf5SGcm3EVpr1b9QwX++MFh+8nqn9ZX5DZ2m/7Fm
         wxK+PtMFfNX/rsOsrFVBRlK+iuQvis5cbTeFfIMHRfVKKiD/N8XRPuJv+l/KfCQIYfKf
         1pDVzw5aM+cg/FQ9fUNpCze2HwwrxxcnwSXdHVubzngOr7tKlienERgsQVagz9LMQb81
         i4v1roQe3PX06Uqg3I6FgHR/oBAi0pjdBSnpVIOUBa4FoT905P7eqELViKn4PESwbI8N
         apkx/oSeyZDVAIMeeW5qBkzRksb0QFevjNVj7+6g60Dq/3yfkk7JPTLPTTAHu9VV3IP7
         7IZA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705931520; x=1706536320;
        h=content-transfer-encoding:in-reply-to:autocrypt:references:cc:to
         :from:content-language:subject:user-agent:mime-version:date
         :message-id:x-gm-message-state:from:to:cc:subject:date:message-id
         :reply-to;
        bh=SnztAn5RnbJ1KGOhJP3RqH5wwHJC2HwWQ6wc1hqi010=;
        b=Z1TFStF+3UiiEDF5KxE1UYACBb00vr7k+XXdZzO+Xwk3fN0zSqKiWKWhT6CT53NaUz
         4MBso8ImWJvAXWdclczVvWt60hwMmYCxBAxleWM/nc5TJZ15cWPjx+yuqX0ly+7flSho
         BNRx4adx79gh09z8ybk3HF8oCeOvpQiNSg4CXqPJXOjjN/olvejSUPTjzpu9Aq0dZrJd
         1YiL2uT5RUnLP2hKRkxHPfGce4yS/ov3Ho6ebklJeuubipOi2vVkaPohd5SA6Hv4QjDA
         BucWjZ9RmNkuVa1uGdtditn3H87RK9pAkgc45HBeTMwM/4wV9OprzHe/u3C8WU/i4pEP
         CpWQ==
X-Gm-Message-State: AOJu0YzLMlU3z/6t/SkccrdjMBqbmrIY5BjLUYZy6wd+9PqXt4LowRxf
	ksaM+pA8qe8rcRxpr/k/akSgPo5DUy/QtGZNAHgDTcAYKecRZClLJys4o2TwUS1wFK+cCbrttZU
	=
X-Google-Smtp-Source: AGHT+IFK4wn2gn1Ij49sRt8jZHh77R97AH4O+Hi9QzB86xNY7N+FHVqWlwlgXqJ8Os9w3z3vWKH25w==
X-Received: by 2002:a2e:9d85:0:b0:2cd:993f:32a0 with SMTP id c5-20020a2e9d85000000b002cd993f32a0mr1571513ljj.37.1705931520057;
        Mon, 22 Jan 2024 05:52:00 -0800 (PST)
Message-ID: <3d1755fb-808f-4333-8dd1-b5cfa16eedfe@suse.com>
Date: Mon, 22 Jan 2024 14:51:58 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: [PATCH v2 7/8] IRQ: drop regs parameter from handler functions
Content-Language: en-US
From: Jan Beulich <jbeulich@suse.com>
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 George Dunlap <george.dunlap@citrix.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Bertrand Marquis <bertrand.marquis@arm.com>,
 Michal Orzel <michal.orzel@amd.com>
References: <33db57a2-b569-4fa8-b0b0-36ea92528d7b@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <33db57a2-b569-4fa8-b0b0-36ea92528d7b@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

It's simply not needed anymore. Note how Linux made this change many
years ago already, in 2.6.19 (late 2006, see [1]).

Signed-off-by: Jan Beulich <jbeulich@suse.com>
Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>
Acked-by: Julien Grall <jgrall@amazon.com>

[1] https://git.kernel.org/torvalds/c/7d12e780e003f93433d49ce78cfedf4b4c52adc5
---
v2: Arm build fixes.

--- a/xen/arch/arm/gic.c
+++ b/xen/arch/arm/gic.c
@@ -397,7 +397,7 @@ void gic_interrupt(struct cpu_user_regs
     } while (1);
 }
 
-static void maintenance_interrupt(int irq, void *dev_id, struct cpu_user_regs *regs)
+static void maintenance_interrupt(int irq, void *dev_id)
 {
     /*
      * This is a dummy interrupt handler.
--- a/xen/arch/arm/irq.c
+++ b/xen/arch/arm/irq.c
@@ -182,8 +182,7 @@ void irq_set_affinity(struct irq_desc *d
 }
 
 int request_irq(unsigned int irq, unsigned int irqflags,
-                void (*handler)(int irq, void *dev_id,
-                                struct cpu_user_regs *regs),
+                void (*handler)(int irq, void *dev_id),
                 const char *devname, void *dev_id)
 {
     struct irqaction *action;
@@ -276,7 +275,7 @@ void do_IRQ(struct cpu_user_regs *regs,
 
     do
     {
-        action->handler(irq, action->dev_id, regs);
+        action->handler(irq, action->dev_id);
         action = action->next;
     } while ( action );
 
--- a/xen/arch/arm/time.c
+++ b/xen/arch/arm/time.c
@@ -241,7 +241,7 @@ int reprogram_timer(s_time_t timeout)
 }
 
 /* Handle the firing timer */
-static void htimer_interrupt(int irq, void *dev_id, struct cpu_user_regs *regs)
+static void htimer_interrupt(int irq, void *dev_id)
 {
     if ( unlikely(!(READ_SYSREG(CNTHP_CTL_EL2) & CNTx_CTL_PENDING)) )
         return;
@@ -255,7 +255,7 @@ static void htimer_interrupt(int irq, vo
     WRITE_SYSREG(0, CNTHP_CTL_EL2);
 }
 
-static void vtimer_interrupt(int irq, void *dev_id, struct cpu_user_regs *regs)
+static void vtimer_interrupt(int irq, void *dev_id)
 {
     /*
      * Edge-triggered interrupts can be used for the virtual timer. Even
--- a/xen/arch/x86/irq.c
+++ b/xen/arch/x86/irq.c
@@ -962,7 +962,7 @@ static int __init cf_check irq_ratelimit
 __initcall(irq_ratelimit_init);
 
 int __init request_irq(unsigned int irq, unsigned int irqflags,
-        void (*handler)(int irq, void *dev_id, struct cpu_user_regs *regs),
+        void (*handler)(int irq, void *dev_id),
         const char * devname, void *dev_id)
 {
     struct irqaction * action;
@@ -2009,7 +2009,7 @@ void do_IRQ(struct cpu_user_regs *regs)
         spin_unlock_irq(&desc->lock);
 
         tsc_in = tb_init_done ? get_cycles() : 0;
-        action->handler(irq, action->dev_id, regs);
+        action->handler(irq, action->dev_id);
         TRACE_3D(TRC_HW_IRQ_HANDLED, irq, tsc_in, get_cycles());
 
         spin_lock_irq(&desc->lock);
--- a/xen/arch/x86/hpet.c
+++ b/xen/arch/x86/hpet.c
@@ -237,8 +237,7 @@ again:
     }
 }
 
-static void cf_check hpet_interrupt_handler(
-    int irq, void *data, struct cpu_user_regs *regs)
+static void cf_check hpet_interrupt_handler(int irq, void *data)
 {
     struct hpet_event_channel *ch = data;
 
--- a/xen/arch/x86/time.c
+++ b/xen/arch/x86/time.c
@@ -198,8 +198,7 @@ static void smp_send_timer_broadcast_ipi
     }
 }
 
-static void cf_check timer_interrupt(
-    int irq, void *dev_id, struct cpu_user_regs *regs)
+static void cf_check timer_interrupt(int irq, void *dev_id)
 {
     ASSERT(local_irq_is_enabled());
 
--- a/xen/common/irq.c
+++ b/xen/common/irq.c
@@ -29,7 +29,7 @@ int init_one_irq_desc(struct irq_desc *d
     return err;
 }
 
-void cf_check no_action(int cpl, void *dev_id, struct cpu_user_regs *regs)
+void cf_check no_action(int cpl, void *dev_id)
 {
 }
 
--- a/xen/drivers/char/cadence-uart.c
+++ b/xen/drivers/char/cadence-uart.c
@@ -40,7 +40,7 @@ static struct cuart {
 #define cuart_read(uart, off)           readl((uart)->regs + (off))
 #define cuart_write(uart, off,val)      writel((val), (uart)->regs + (off))
 
-static void cuart_interrupt(int irq, void *data, struct cpu_user_regs *regs)
+static void cuart_interrupt(int irq, void *data)
 {
     struct serial_port *port = data;
     struct cuart *uart = port->uart;
--- a/xen/drivers/char/exynos4210-uart.c
+++ b/xen/drivers/char/exynos4210-uart.c
@@ -45,7 +45,7 @@ static struct exynos4210_uart {
 #define exynos4210_read(uart, off)          readl((uart)->regs + off)
 #define exynos4210_write(uart, off, val)    writel(val, (uart->regs) + off)
 
-static void exynos4210_uart_interrupt(int irq, void *data, struct cpu_user_regs *regs)
+static void exynos4210_uart_interrupt(int irq, void *data)
 {
     struct serial_port *port = data;
     struct exynos4210_uart *uart = port->uart;
--- a/xen/drivers/char/imx-lpuart.c
+++ b/xen/drivers/char/imx-lpuart.c
@@ -37,8 +37,7 @@ static struct imx_lpuart {
     struct vuart_info vuart;
 } imx8_com;
 
-static void imx_lpuart_interrupt(int irq, void *data,
-                                 struct cpu_user_regs *regs)
+static void imx_lpuart_interrupt(int irq, void *data)
 {
     struct serial_port *port = data;
     struct imx_lpuart *uart = port->uart;
--- a/xen/drivers/char/meson-uart.c
+++ b/xen/drivers/char/meson-uart.c
@@ -61,8 +61,7 @@ static struct meson_uart {
     struct vuart_info vuart;
 } meson_com;
 
-static void meson_uart_interrupt(int irq, void *data,
-                                 struct cpu_user_regs *regs)
+static void meson_uart_interrupt(int irq, void *data)
 {
     struct serial_port *port = data;
     struct meson_uart *uart = port->uart;
--- a/xen/drivers/char/mvebu-uart.c
+++ b/xen/drivers/char/mvebu-uart.c
@@ -67,8 +67,7 @@ static struct mvebu3700_uart {
 #define mvebu3700_read(uart, off)           readl((uart)->regs + (off))
 #define mvebu3700_write(uart, off, val)     writel(val, (uart)->regs + (off))
 
-static void mvebu3700_uart_interrupt(int irq, void *data,
-                                     struct cpu_user_regs *regs)
+static void mvebu3700_uart_interrupt(int irq, void *data)
 {
     struct serial_port *port = data;
     struct mvebu3700_uart *uart = port->uart;
--- a/xen/drivers/char/ns16550.c
+++ b/xen/drivers/char/ns16550.c
@@ -175,8 +175,7 @@ static void handle_dw_usr_busy_quirk(str
     }
 }
 
-static void cf_check ns16550_interrupt(
-    int irq, void *dev_id, struct cpu_user_regs *regs)
+static void cf_check ns16550_interrupt(int irq, void *dev_id)
 {
     struct serial_port *port = dev_id;
     struct ns16550 *uart = port->uart;
--- a/xen/drivers/char/omap-uart.c
+++ b/xen/drivers/char/omap-uart.c
@@ -59,7 +59,7 @@ static struct omap_uart {
     struct vuart_info vuart;
 } omap_com = {0};
 
-static void omap_uart_interrupt(int irq, void *data, struct cpu_user_regs *regs)
+static void omap_uart_interrupt(int irq, void *data)
 {
     struct serial_port *port = data;
     struct omap_uart *uart = port->uart;
--- a/xen/drivers/char/pl011.c
+++ b/xen/drivers/char/pl011.c
@@ -82,7 +82,7 @@ static unsigned int pl011_intr_status(st
     return (pl011_read(uart, RIS) & pl011_read(uart, IMSC));
 }
 
-static void pl011_interrupt(int irq, void *data, struct cpu_user_regs *regs)
+static void pl011_interrupt(int irq, void *data)
 {
     struct serial_port *port = data;
     struct pl011 *uart = port->uart;
--- a/xen/drivers/char/scif-uart.c
+++ b/xen/drivers/char/scif-uart.c
@@ -102,7 +102,7 @@ static const struct port_params port_par
     },
 };
 
-static void scif_uart_interrupt(int irq, void *data, struct cpu_user_regs *regs)
+static void scif_uart_interrupt(int irq, void *data)
 {
     struct serial_port *port = data;
     struct scif_uart *uart = port->uart;
--- a/xen/drivers/passthrough/amd/iommu_init.c
+++ b/xen/drivers/passthrough/amd/iommu_init.c
@@ -718,8 +718,7 @@ static void cf_check do_amd_iommu_irq(vo
 
 static DECLARE_SOFTIRQ_TASKLET(amd_iommu_irq_tasklet, do_amd_iommu_irq, NULL);
 
-static void cf_check iommu_interrupt_handler(
-    int irq, void *dev_id, struct cpu_user_regs *regs)
+static void cf_check iommu_interrupt_handler(int irq, void *dev_id)
 {
     unsigned long flags;
     struct amd_iommu *iommu = dev_id;
--- a/xen/drivers/passthrough/arm/ipmmu-vmsa.c
+++ b/xen/drivers/passthrough/arm/ipmmu-vmsa.c
@@ -642,7 +642,7 @@ static void ipmmu_domain_irq(struct ipmm
                         domain->d, status, iova);
 }
 
-static void ipmmu_irq(int irq, void *dev, struct cpu_user_regs *regs)
+static void ipmmu_irq(int irq, void *dev)
 {
     struct ipmmu_vmsa_device *mmu = dev;
     unsigned int i;
--- a/xen/drivers/passthrough/arm/smmu.c
+++ b/xen/drivers/passthrough/arm/smmu.c
@@ -1097,16 +1097,14 @@ static irqreturn_t arm_smmu_global_fault
 }
 
 /* Xen: Interrupt handlers wrapper */
-static void arm_smmu_context_fault_xen(int irq, void *dev,
-				       struct cpu_user_regs *regs)
+static void arm_smmu_context_fault_xen(int irq, void *dev)
 {
 	arm_smmu_context_fault(irq, dev);
 }
 
 #define arm_smmu_context_fault arm_smmu_context_fault_xen
 
-static void arm_smmu_global_fault_xen(int irq, void *dev,
-				      struct cpu_user_regs *regs)
+static void arm_smmu_global_fault_xen(int irq, void *dev)
 {
 	arm_smmu_global_fault(irq, dev);
 }
--- a/xen/drivers/passthrough/arm/smmu-v3.c
+++ b/xen/drivers/passthrough/arm/smmu-v3.c
@@ -880,8 +880,7 @@ static void arm_smmu_priq_tasklet(void *
 
 static int arm_smmu_device_disable(struct arm_smmu_device *smmu);
 
-static void arm_smmu_gerror_handler(int irq, void *dev,
-				struct cpu_user_regs *regs)
+static void arm_smmu_gerror_handler(int irq, void *dev)
 {
 	u32 gerror, gerrorn, active;
 	struct arm_smmu_device *smmu = dev;
@@ -926,12 +925,11 @@ static void arm_smmu_gerror_handler(int
 	writel(gerror, smmu->base + ARM_SMMU_GERRORN);
 }
 
-static void arm_smmu_combined_irq_handler(int irq, void *dev,
-				struct cpu_user_regs *regs)
+static void arm_smmu_combined_irq_handler(int irq, void *dev)
 {
 	struct arm_smmu_device *smmu = dev;
 
-	arm_smmu_gerror_handler(irq, dev, regs);
+	arm_smmu_gerror_handler(irq, dev);
 
 	tasklet_schedule(&(smmu->combined_irq_tasklet));
 }
@@ -945,16 +943,14 @@ static void arm_smmu_combined_irq_taskle
 		arm_smmu_priq_tasklet(dev);
 }
 
-static void arm_smmu_evtq_irq_tasklet(int irq, void *dev,
-				struct cpu_user_regs *regs)
+static void arm_smmu_evtq_irq_tasklet(int irq, void *dev)
 {
 	struct arm_smmu_device *smmu = dev;
 
 	tasklet_schedule(&(smmu->evtq_irq_tasklet));
 }
 
-static void arm_smmu_priq_irq_tasklet(int irq, void *dev,
-				struct cpu_user_regs *regs)
+static void arm_smmu_priq_irq_tasklet(int irq, void *dev)
 {
 	struct arm_smmu_device *smmu = dev;
 
--- a/xen/drivers/passthrough/vtd/iommu.c
+++ b/xen/drivers/passthrough/vtd/iommu.c
@@ -1119,8 +1119,7 @@ static void cf_check do_iommu_page_fault
         __do_iommu_page_fault(drhd->iommu);
 }
 
-static void cf_check iommu_page_fault(
-    int irq, void *dev_id, struct cpu_user_regs *regs)
+static void cf_check iommu_page_fault(int irq, void *dev_id)
 {
     /*
      * Just flag the tasklet as runnable. This is fine, according to VT-d
--- a/xen/include/xen/irq.h
+++ b/xen/include/xen/irq.h
@@ -18,7 +18,7 @@
     ASSERT(!in_irq() && (local_irq_is_enabled() || num_online_cpus() <= 1))
 
 struct irqaction {
-    void (*handler)(int irq, void *dev_id, struct cpu_user_regs *regs);
+    void (*handler)(int irq, void *dev_id);
     const char *name;
     void *dev_id;
     bool free_on_release;
@@ -119,12 +119,11 @@ extern int setup_irq(unsigned int irq, u
                      struct irqaction *new);
 extern void release_irq(unsigned int irq, const void *dev_id);
 extern int request_irq(unsigned int irq, unsigned int irqflags,
-               void (*handler)(int irq, void *dev_id,
-                     struct cpu_user_regs *regs),
+               void (*handler)(int irq, void *dev_id),
                const char *devname, void *dev_id);
 
 extern hw_irq_controller no_irq_type;
-void cf_check no_action(int cpl, void *dev_id, struct cpu_user_regs *regs);
+void cf_check no_action(int cpl, void *dev_id);
 unsigned int cf_check irq_startup_none(struct irq_desc *desc);
 void cf_check irq_actor_none(struct irq_desc *desc);
 #define irq_shutdown_none irq_actor_none



From xen-devel-bounces@lists.xenproject.org Mon Jan 22 13:52:42 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 22 Jan 2024 13:52:42 +0000
Received: from list by lists.xenproject.org with outflank-mailman.669938.1042503 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rRujB-0005f8-Cl; Mon, 22 Jan 2024 13:52:41 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 669938.1042503; Mon, 22 Jan 2024 13:52:41 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rRujB-0005f1-9a; Mon, 22 Jan 2024 13:52:41 +0000
Received: by outflank-mailman (input) for mailman id 669938;
 Mon, 22 Jan 2024 13:52:40 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=VPlZ=JA=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rRujA-0005c3-Mw
 for xen-devel@lists.xenproject.org; Mon, 22 Jan 2024 13:52:40 +0000
Received: from mail-lj1-x235.google.com (mail-lj1-x235.google.com
 [2a00:1450:4864:20::235])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 81de4e49-b92d-11ee-98f2-6d05b1d4d9a1;
 Mon, 22 Jan 2024 14:52:40 +0100 (CET)
Received: by mail-lj1-x235.google.com with SMTP id
 38308e7fff4ca-2cca5d81826so36964431fa.2
 for <xen-devel@lists.xenproject.org>; Mon, 22 Jan 2024 05:52:40 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 cw13-20020a05663849cd00b0046e627dbc4csm3035114jab.121.2024.01.22.05.52.38
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 22 Jan 2024 05:52:39 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 81de4e49-b92d-11ee-98f2-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1705931559; x=1706536359; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:references:cc:to
         :from:content-language:subject:user-agent:mime-version:date
         :message-id:from:to:cc:subject:date:message-id:reply-to;
        bh=t0UgnOP68BxJCm+ns2eSiUnCsXGTkJgNp1lvTQv+pgE=;
        b=OvLzCc1uumgr5gOU5vJ5txxgj0VWTogmREzeA/oPFo6Ajvc9NLjAKFyaNdKw9SGBy6
         RQIAZzqpkQeReM+Hbbx0Wx3tALVzon8ETrtF0Q++eOiYCR0u9Xm94MFygMTSCDiKd9Ef
         2uNIIVzRnEW4VxmTlQTGBmD6bC8cZbKF8jXFDlQwl8BQWOIYf+yE5jS1OJ4ItU+bcJ1z
         ANoiAbhQDf40wQbwhhI89aDzq1l8MB6fS+K5ltFSPCBwAwsa+RKHRees+rJHER5mRWW7
         0WMoCsUizPx3XHDOJL2/zZqLE/zrh/QIAThNxHjoPtSCfcqBQsuZpyt13pBmW895HCdg
         4H0w==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705931559; x=1706536359;
        h=content-transfer-encoding:in-reply-to:autocrypt:references:cc:to
         :from:content-language:subject:user-agent:mime-version:date
         :message-id:x-gm-message-state:from:to:cc:subject:date:message-id
         :reply-to;
        bh=t0UgnOP68BxJCm+ns2eSiUnCsXGTkJgNp1lvTQv+pgE=;
        b=n/lO40nPQjIqAScFNa67HnNQUz2ysd8Ym7QF4+EeTB//oEdrBn9w8NmgFSSRofINvo
         BAy35yUe/vuKhLG12nMr/goWdhXSIM6qLJtSqdxSfR79n9uIUY2fgugKs/aQKdCCeC58
         vmes4RqSRDdCv4iPH9OyoCa9KXowA2GqKP2jt4qg0U4HFCq436V+dm/I2R81x/yXDo2M
         iTpArEU00quzNCGpa4s3f+5ePIKjBvLLzEW82J8rwptsDzy6VL8fVE0zBt/nWexe6fPB
         Sh7Z0nxV8GZfoLuvo9rNmwCeC6wlN/227O1G/e72kXAFA3hDKfIidhOgGap8MsTLtHXa
         HwYQ==
X-Gm-Message-State: AOJu0Ywiby/TR20GwOolgWVAUhtkEmWejB5aWh2yeTt7ZT0Al0NbQx05
	+Z5LIHNAMy1pbbZ4m7aD4ehToRJSHTkkJGkAdqqgHNtkpYds1ybNueDnhWi7MFv6yI3/eztKC80
	=
X-Google-Smtp-Source: AGHT+IGQ/1fgxj6jJoB6zQ0kfRBSvEDgjZN0Tn3TAA8oFx7WYj7j6uVLAm52kbFwopUmrdgYy/JcNw==
X-Received: by 2002:a05:651c:b28:b0:2cf:13d:4c5e with SMTP id b40-20020a05651c0b2800b002cf013d4c5emr538190ljr.7.1705931559518;
        Mon, 22 Jan 2024 05:52:39 -0800 (PST)
Message-ID: <7e020077-be19-4075-b21c-5a493a8d0cda@suse.com>
Date: Mon, 22 Jan 2024 14:52:38 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: [PATCH v2 8/8] x86/APIC: drop regs parameter from direct vector
 handler functions
Content-Language: en-US
From: Jan Beulich <jbeulich@suse.com>
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 George Dunlap <george.dunlap@citrix.com>, Wei Liu <wl@xen.org>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
References: <33db57a2-b569-4fa8-b0b0-36ea92528d7b@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <33db57a2-b569-4fa8-b0b0-36ea92528d7b@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

The only place it was needed is in the spurious handler, and there we
can use get_irq_regs() instead.

Signed-off-by: Jan Beulich <jbeulich@suse.com>
Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>

--- a/xen/arch/x86/apic.c
+++ b/xen/arch/x86/apic.c
@@ -1324,7 +1324,7 @@ int reprogram_timer(s_time_t timeout)
     return apic_tmict || !timeout;
 }
 
-static void cf_check apic_timer_interrupt(struct cpu_user_regs *regs)
+static void cf_check apic_timer_interrupt(void)
 {
     ack_APIC_irq();
     perfc_incr(apic_timer);
@@ -1343,7 +1343,7 @@ void smp_send_state_dump(unsigned int cp
 /*
  * Spurious interrupts should _never_ happen with our APIC/SMP architecture.
  */
-static void cf_check spurious_interrupt(struct cpu_user_regs *regs)
+static void cf_check spurious_interrupt(void)
 {
     /*
      * Check if this is a vectored interrupt (most likely, as this is probably
@@ -1357,7 +1357,7 @@ static void cf_check spurious_interrupt(
         is_spurious = !nmi_check_continuation();
         if (this_cpu(state_dump_pending)) {
             this_cpu(state_dump_pending) = false;
-            dump_execstate(regs);
+            dump_execstate(get_irq_regs());
             is_spurious = false;
         }
 
@@ -1374,7 +1374,7 @@ static void cf_check spurious_interrupt(
  * This interrupt should never happen with our APIC/SMP architecture
  */
 
-static void cf_check error_interrupt(struct cpu_user_regs *regs)
+static void cf_check error_interrupt(void)
 {
     static const char *const esr_fields[] = {
         ", Send CS error",
@@ -1409,7 +1409,7 @@ static void cf_check error_interrupt(str
  * This interrupt handles performance counters interrupt
  */
 
-static void cf_check pmu_interrupt(struct cpu_user_regs *regs)
+static void cf_check pmu_interrupt(void)
 {
     ack_APIC_irq();
     vpmu_do_interrupt();
--- a/xen/arch/x86/cpu/mcheck/mce_intel.c
+++ b/xen/arch/x86/cpu/mcheck/mce_intel.c
@@ -58,7 +58,7 @@ bool __read_mostly lmce_support;
 #define MCE_RING                0x1
 static DEFINE_PER_CPU(int, last_state);
 
-static void cf_check intel_thermal_interrupt(struct cpu_user_regs *regs)
+static void cf_check intel_thermal_interrupt(void)
 {
     uint64_t msr_content;
     unsigned int cpu = smp_processor_id();
@@ -642,7 +642,7 @@ static void cpu_mcheck_disable(void)
         clear_cmci();
 }
 
-static void cf_check cmci_interrupt(struct cpu_user_regs *regs)
+static void cf_check cmci_interrupt(void)
 {
     mctelem_cookie_t mctc;
     struct mca_summary bs;
--- a/xen/arch/x86/guest/xen/xen.c
+++ b/xen/arch/x86/guest/xen/xen.c
@@ -158,7 +158,7 @@ static void __init init_memmap(void)
     }
 }
 
-static void cf_check xen_evtchn_upcall(struct cpu_user_regs *regs)
+static void cf_check xen_evtchn_upcall(void)
 {
     struct vcpu_info *vcpu_info = this_cpu(vcpu_info);
     unsigned long pending;
--- a/xen/arch/x86/hvm/vmx/vmx.c
+++ b/xen/arch/x86/hvm/vmx/vmx.c
@@ -2776,7 +2776,7 @@ static struct hvm_function_table __initd
 };
 
 /* Handle VT-d posted-interrupt when VCPU is blocked. */
-static void cf_check pi_wakeup_interrupt(struct cpu_user_regs *regs)
+static void cf_check pi_wakeup_interrupt(void)
 {
     struct vmx_vcpu *vmx, *tmp;
     spinlock_t *lock = &per_cpu(vmx_pi_blocking, smp_processor_id()).lock;
@@ -2808,7 +2808,7 @@ static void cf_check pi_wakeup_interrupt
 }
 
 /* Handle VT-d posted-interrupt when VCPU is running. */
-static void cf_check pi_notification_interrupt(struct cpu_user_regs *regs)
+static void cf_check pi_notification_interrupt(void)
 {
     ack_APIC_irq();
     this_cpu(irq_count)++;
--- a/xen/arch/x86/include/asm/irq.h
+++ b/xen/arch/x86/include/asm/irq.h
@@ -72,17 +72,15 @@ extern int opt_irq_vector_map;
 
 #define platform_legacy_irq(irq)	((irq) < 16)
 
-void cf_check event_check_interrupt(struct cpu_user_regs *regs);
-void cf_check invalidate_interrupt(struct cpu_user_regs *regs);
-void cf_check call_function_interrupt(struct cpu_user_regs *regs);
-void cf_check irq_move_cleanup_interrupt(struct cpu_user_regs *regs);
+void cf_check event_check_interrupt(void);
+void cf_check invalidate_interrupt(void);
+void cf_check call_function_interrupt(void);
+void cf_check irq_move_cleanup_interrupt(void);
 
 uint8_t alloc_hipriority_vector(void);
 
-void set_direct_apic_vector(
-    uint8_t vector, void (*handler)(struct cpu_user_regs *regs));
-void alloc_direct_apic_vector(
-    uint8_t *vector, void (*handler)(struct cpu_user_regs *regs));
+void set_direct_apic_vector(uint8_t vector, void (*handler)(void));
+void alloc_direct_apic_vector(uint8_t *vector, void (*handler)(void));
 
 void do_IRQ(struct cpu_user_regs *regs);
 
--- a/xen/arch/x86/irq.c
+++ b/xen/arch/x86/irq.c
@@ -743,7 +743,7 @@ void move_native_irq(struct irq_desc *de
     desc->handler->enable(desc);
 }
 
-void cf_check irq_move_cleanup_interrupt(struct cpu_user_regs *regs)
+void cf_check irq_move_cleanup_interrupt(void)
 {
     unsigned vector, me;
 
@@ -913,16 +913,14 @@ uint8_t alloc_hipriority_vector(void)
     return next++;
 }
 
-static void (*direct_apic_vector[X86_NR_VECTORS])(struct cpu_user_regs *regs);
-void set_direct_apic_vector(
-    uint8_t vector, void (*handler)(struct cpu_user_regs *regs))
+static void (*direct_apic_vector[X86_NR_VECTORS])(void);
+void set_direct_apic_vector(uint8_t vector, void (*handler)(void))
 {
     BUG_ON(direct_apic_vector[vector] != NULL);
     direct_apic_vector[vector] = handler;
 }
 
-void alloc_direct_apic_vector(
-    uint8_t *vector, void (*handler)(struct cpu_user_regs *regs))
+void alloc_direct_apic_vector(uint8_t *vector, void (*handler)(void))
 {
     static DEFINE_SPINLOCK(lock);
 
@@ -1907,7 +1905,7 @@ void do_IRQ(struct cpu_user_regs *regs)
     if ( irq < 0 )
     {
         if ( direct_apic_vector[vector] )
-            direct_apic_vector[vector](regs);
+            direct_apic_vector[vector]();
         else
         {
             const char *kind = ", LAPIC";
--- a/xen/arch/x86/smp.c
+++ b/xen/arch/x86/smp.c
@@ -245,7 +245,7 @@ static cpumask_t flush_cpumask;
 static const void *flush_va;
 static unsigned int flush_flags;
 
-void cf_check invalidate_interrupt(struct cpu_user_regs *regs)
+void cf_check invalidate_interrupt(void)
 {
     unsigned int flags = flush_flags;
     ack_APIC_irq();
@@ -387,14 +387,14 @@ void smp_send_nmi_allbutself(void)
     send_IPI_mask(&cpu_online_map, APIC_DM_NMI);
 }
 
-void cf_check event_check_interrupt(struct cpu_user_regs *regs)
+void cf_check event_check_interrupt(void)
 {
     ack_APIC_irq();
     perfc_incr(ipis);
     this_cpu(irq_count)++;
 }
 
-void cf_check call_function_interrupt(struct cpu_user_regs *regs)
+void cf_check call_function_interrupt(void)
 {
     ack_APIC_irq();
     perfc_incr(ipis);



From xen-devel-bounces@lists.xenproject.org Mon Jan 22 14:02:42 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 22 Jan 2024 14:02:42 +0000
Received: from list by lists.xenproject.org with outflank-mailman.669954.1042514 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rRusn-0000Qy-Er; Mon, 22 Jan 2024 14:02:37 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 669954.1042514; Mon, 22 Jan 2024 14:02:37 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rRusn-0000Qr-AF; Mon, 22 Jan 2024 14:02:37 +0000
Received: by outflank-mailman (input) for mailman id 669954;
 Mon, 22 Jan 2024 14:02:35 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=VPlZ=JA=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rRusl-0000Qj-FW
 for xen-devel@lists.xenproject.org; Mon, 22 Jan 2024 14:02:35 +0000
Received: from mail-lf1-x132.google.com (mail-lf1-x132.google.com
 [2a00:1450:4864:20::132])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id e38875f9-b92e-11ee-9b0f-b553b5be7939;
 Mon, 22 Jan 2024 15:02:33 +0100 (CET)
Received: by mail-lf1-x132.google.com with SMTP id
 2adb3069b0e04-50e6ee8e911so4166041e87.1
 for <xen-devel@lists.xenproject.org>; Mon, 22 Jan 2024 06:02:33 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 v8-20020a056638250800b0046ec687b028sm1786179jat.0.2024.01.22.06.02.30
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 22 Jan 2024 06:02:32 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: e38875f9-b92e-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1705932153; x=1706536953; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=PQTxoVeYOUeGdoKPF5RL1ljbfwZL7WC5tU/+ttHKeHc=;
        b=OLmarbUuO68QstyBG1EVw5xKmHHFzsKPEcmYxGZGJx+UOdFezYpziUM3cwdH3Q8tnH
         iP/9SXosCQ61u5IJuXSwUm6HLKCC4xZDjQMMiRnQ28pjY5fSEdTAyUfCk9im1Y8GmFWs
         GKXHGRLhktMzK3ZMRWdBwm2Rft5Cjevbc5Bm2qYAafWm/J9rvjC9hz98w8taOW2IpxSp
         4nOOXdqjh/KJgrA6jMraO4C7N1EwfGM9DeNRV3d/6+05UQSPtIZVnwcC/eYak9vrImD0
         +4GG7eM0hKqPhaapJhX84bGVThEBKgfKsU3NoXuocTwhlkdIGtYl1byKK4Yr27Xu6Ani
         ZlWA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705932153; x=1706536953;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=PQTxoVeYOUeGdoKPF5RL1ljbfwZL7WC5tU/+ttHKeHc=;
        b=niEePro3y+yN+ujgBgNmC/ts6kqo/fTx8MLz3Z7sSu1VPMDMXzlfD6/S6+0fNOpa3L
         gnJSan1JOUzdOpFKkb/FRwWyzTfL+sDK8CNUtLfAHHMrus0pGxfFrTx6NwpCgO7asfFG
         bpth6q8XBUb2BPbT5/Ums9cTg1xqeiaDpAtKwY+nnuY/Qc55mV2NZVvbhoVJu0hyjfUw
         dvqGGCjTFhUqkOlYK/EMlNUjgXKsemlt042wtsNrOg7kAPI4Z57xv1T1TB77BIVlvpt1
         jJjsHRe2gt6Ekvi1Rfx/t77hraoQZ6z36OXn9oiDEFn22Ko5TNzLDgxsF2H91ug+FkLJ
         tI1A==
X-Gm-Message-State: AOJu0Yx7L6DjNDSZS+K9h/jokonZST+EAMgDrEGNud/7tdeIop3QRvrE
	CeGNLQ/OqzJZZf7Of/nzbq79XUasyPWlnskK1XmT0dmDnfPRdQH74XqVzrOlPA==
X-Google-Smtp-Source: AGHT+IG50Vv0nwZJkR1Pg5GkMBMTGNwSg1FIAZdlR3b1g1ptvhgann7asvEyJ+SyRLImJI+QuMWrBg==
X-Received: by 2002:ac2:4101:0:b0:50f:1a9b:ef48 with SMTP id b1-20020ac24101000000b0050f1a9bef48mr1560724lfi.69.1705932152697;
        Mon, 22 Jan 2024 06:02:32 -0800 (PST)
Message-ID: <d4e5b1c0-bb44-4482-b86f-ff9f0947f338@suse.com>
Date: Mon, 22 Jan 2024 15:02:29 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [XEN PATCH 1/3] xen: introduce static_assert_unreachable()
Content-Language: en-US
To: Federico Serafini <federico.serafini@bugseng.com>
Cc: consulting@bugseng.com, Andrew Cooper <andrew.cooper3@citrix.com>,
 George Dunlap <george.dunlap@citrix.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>,
 xen-devel@lists.xenproject.org
References: <cover.1705930767.git.federico.serafini@bugseng.com>
 <01c57c7e5131d699cf622be96fea7cd8e03c23f9.1705930767.git.federico.serafini@bugseng.com>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <01c57c7e5131d699cf622be96fea7cd8e03c23f9.1705930767.git.federico.serafini@bugseng.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 22.01.2024 14:48, Federico Serafini wrote:
> Introduce macro static_asser_unreachable() to check that a program
> point is considered unreachable by the static analysis performed by the
> compiler, even at optimization level -O0.

Is it really intended to limit use of this macro to cases where even
at -O0 the compiler would eliminate respective code? Note that right
now even debug builds are done with some optimization, and some of
the DCE we're relying depends on that (iirc).

> --- a/xen/include/xen/compiler.h
> +++ b/xen/include/xen/compiler.h
> @@ -64,6 +64,14 @@
>  # define fallthrough        do {} while (0)  /* fallthrough */
>  #endif
>  
> +/*
> + * Add the following macro to check that a program point is considered
> + * unreachable by the static analysis performed by the compiler,
> + * even at optimization level -O0.
> + */
> +#define static_assert_unreachable() \
> +    asm(".error \"unreachable program point reached\"");

Did you check the diagnostic that results when this check actually
triggers? I expect it will be not really obvious from the message
you introduce where the issue actually is. I expect we will want
to use some of __FILE__ / __LINE__ / __FUNCTION__ to actually
supply such context.

Also: Stray semicolon and (nit) missing blanks.

Finally I wonder about case: We have ASSERT_UNREACHABLE() and it
may be indicated to use all uppercase her as well.

Jan


From xen-devel-bounces@lists.xenproject.org Mon Jan 22 14:08:34 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 22 Jan 2024 14:08:34 +0000
Received: from list by lists.xenproject.org with outflank-mailman.669958.1042523 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rRuyQ-0001Ns-0q; Mon, 22 Jan 2024 14:08:26 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 669958.1042523; Mon, 22 Jan 2024 14:08:25 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rRuyP-0001Nl-Tl; Mon, 22 Jan 2024 14:08:25 +0000
Received: by outflank-mailman (input) for mailman id 669958;
 Mon, 22 Jan 2024 14:08:24 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=VPlZ=JA=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rRuh6-0007Lx-R9
 for xen-devel@lists.xenproject.org; Mon, 22 Jan 2024 13:50:32 +0000
Received: from mail-lj1-x236.google.com (mail-lj1-x236.google.com
 [2a00:1450:4864:20::236])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 352ead07-b92d-11ee-9b0f-b553b5be7939;
 Mon, 22 Jan 2024 14:50:31 +0100 (CET)
Received: by mail-lj1-x236.google.com with SMTP id
 38308e7fff4ca-2cdeb80fdfdso34057841fa.2
 for <xen-devel@lists.xenproject.org>; Mon, 22 Jan 2024 05:50:31 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 cw13-20020a05663849cd00b0046e627dbc4csm3035114jab.121.2024.01.22.05.50.29
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 22 Jan 2024 05:50:30 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 352ead07-b92d-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1705931431; x=1706536231; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:references:cc:to
         :from:content-language:subject:user-agent:mime-version:date
         :message-id:from:to:cc:subject:date:message-id:reply-to;
        bh=YO3g36PvHebDUpK9/W9a6xU16xqzRXgrwigdPTnIuIA=;
        b=HOMvVrCr86rjfwSJ9F53Aa4gr7n7Q3jgMH7hioghRIWohIc++9d7k02CXAVptry/n1
         bDmsBfl/LF8aww6gbyKBnDM6is9sRspcm+7xNd4IfZ3ovkdrtLw1ZBMDwdSDI12codRO
         Y0xyZOiadsPuM50bkAnyBbzbOBKDi8RMIxQmUZt4Y8pw/Lcv0489S2AwvxMnQIc5vLIA
         e8DVPm5RT65AFa7ncjRuS/U9mK6TfAVSsy5iMjWFHLin44QCPLu1yK1WoDPV+s+VTleQ
         czZtIr55fcBZYSYOOxz6zUihpZX4AKDs1Q8r8WUKgYcF/kU/R57h/jt0PlJH2fwz2iHG
         T4WQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705931431; x=1706536231;
        h=content-transfer-encoding:in-reply-to:autocrypt:references:cc:to
         :from:content-language:subject:user-agent:mime-version:date
         :message-id:x-gm-message-state:from:to:cc:subject:date:message-id
         :reply-to;
        bh=YO3g36PvHebDUpK9/W9a6xU16xqzRXgrwigdPTnIuIA=;
        b=v6+J7b4uO/usdmMSElFXDu1FovvPOFybarEsWhlwPT0qyG9Nh7UbCBQUBE6akFUaHQ
         krIq6+mrnn+IWEHjB102VoJst7DLChB5W2oOtRAjE+t2Ob1rF2GQ8FDN2cuOkykyvkCq
         1HyE70cl0SP3kCnFtFx9+GH7YwS2wzh9NBLt2u2SlGS4mW6cLceAqlMXCPBXLGTyevX7
         x7TiiFiFpdvfESrXbKao/he+KQRL7K2OEBRYWBs/KAfJ5SJh6NX3YnszmKSJ9IxMZCSA
         1oogwwLaplzAwB3svyKxw9gbcKyHQ1qTLBHX41voYck4gJxQFV/bl4rEIE940LXn+8Tp
         fFTQ==
X-Gm-Message-State: AOJu0Ywgh9H+xJSEx51WzBPzUr/vl++cC+/MjeynAtZZCagdt5D25uCn
	zJhzsRVgwm+/uS8xforqryWgZx0TlICG22Od5TCQV3bRFOkoVkRiYlR+t5A0hdOsHpXb4mNJMyc
	=
X-Google-Smtp-Source: AGHT+IEkacxUKb+IkyqWLFq78R4UAKR5nr2WMQlZsMaoUnVrnsDn4Vy1CTXya62jS+ergCB6GpyiRA==
X-Received: by 2002:a2e:a485:0:b0:2cc:dda6:44fa with SMTP id h5-20020a2ea485000000b002ccdda644famr588581lji.92.1705931430843;
        Mon, 22 Jan 2024 05:50:30 -0800 (PST)
Message-ID: <befdfad9-d807-4d6e-960f-54b7a4c2799a@suse.com>
Date: Mon, 22 Jan 2024 14:50:29 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: [PATCH v2 5/8] PV-shim: drop pv_console_rx()'s regs parameter
Content-Language: en-US
From: Jan Beulich <jbeulich@suse.com>
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 George Dunlap <george.dunlap@citrix.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
References: <33db57a2-b569-4fa8-b0b0-36ea92528d7b@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <33db57a2-b569-4fa8-b0b0-36ea92528d7b@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

It's not needed anymore. This is in preparation of dropping the register
parameters from IRQ handler functions.

Signed-off-by: Jan Beulich <jbeulich@suse.com>
Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>

--- a/xen/arch/x86/guest/xen/xen.c
+++ b/xen/arch/x86/guest/xen/xen.c
@@ -181,7 +181,7 @@ static void cf_check xen_evtchn_upcall(s
             port += l1 * BITS_PER_LONG;
 
             if ( pv_console && port == pv_console_evtchn() )
-                pv_console_rx(regs);
+                pv_console_rx();
             else if ( pv_shim )
                 pv_shim_inject_evtchn(port);
         }
--- a/xen/drivers/char/xen_pv_console.c
+++ b/xen/drivers/char/xen_pv_console.c
@@ -94,7 +94,7 @@ evtchn_port_t pv_console_evtchn(void)
     return cons_evtchn;
 }
 
-size_t pv_console_rx(struct cpu_user_regs *regs)
+size_t pv_console_rx(void)
 {
     char c;
     XENCONS_RING_IDX cons, prod;
--- a/xen/include/xen/pv_console.h
+++ b/xen/include/xen/pv_console.h
@@ -9,7 +9,7 @@ void pv_console_init(void);
 void pv_console_set_rx_handler(serial_rx_fn fn);
 void pv_console_init_postirq(void);
 void pv_console_puts(const char *buf, size_t nr);
-size_t pv_console_rx(struct cpu_user_regs *regs);
+size_t pv_console_rx(void);
 evtchn_port_t pv_console_evtchn(void);
 
 #else
@@ -18,7 +18,7 @@ static inline void pv_console_init(void)
 static inline void pv_console_set_rx_handler(serial_rx_fn fn) { }
 static inline void pv_console_init_postirq(void) { }
 static inline void pv_console_puts(const char *buf, size_t nr) { }
-static inline size_t pv_console_rx(struct cpu_user_regs *regs) { return 0; }
+static inline size_t pv_console_rx(void) { return 0; }
 
 #endif /* !CONFIG_XEN_GUEST */
 #endif /* __XEN_PV_CONSOLE_H__ */



From xen-devel-bounces@lists.xenproject.org Mon Jan 22 14:46:29 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 22 Jan 2024 14:46:29 +0000
Received: from list by lists.xenproject.org with outflank-mailman.669970.1042533 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rRvZ7-0004Yw-SG; Mon, 22 Jan 2024 14:46:21 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 669970.1042533; Mon, 22 Jan 2024 14:46:21 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rRvZ7-0004Yp-Ox; Mon, 22 Jan 2024 14:46:21 +0000
Received: by outflank-mailman (input) for mailman id 669970;
 Mon, 22 Jan 2024 14:46:20 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=L7P8=JA=cloud.com=anthony.perard@srs-se1.protection.inumbo.net>)
 id 1rRvZ6-0004Yj-IM
 for xen-devel@lists.xenproject.org; Mon, 22 Jan 2024 14:46:20 +0000
Received: from mail-lf1-x130.google.com (mail-lf1-x130.google.com
 [2a00:1450:4864:20::130])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 00e7e034-b935-11ee-98f2-6d05b1d4d9a1;
 Mon, 22 Jan 2024 15:46:19 +0100 (CET)
Received: by mail-lf1-x130.google.com with SMTP id
 2adb3069b0e04-50f1c524010so2887871e87.3
 for <xen-devel@lists.xenproject.org>; Mon, 22 Jan 2024 06:46:19 -0800 (PST)
Received: from perard.uk.xensource.com (default-46-102-197-194.interdsl.co.uk.
 [46.102.197.194]) by smtp.gmail.com with ESMTPSA id
 v67-20020a814846000000b005ff88cbbc93sm3258597ywa.111.2024.01.22.06.46.17
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 22 Jan 2024 06:46:18 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 00e7e034-b935-11ee-98f2-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1705934779; x=1706539579; darn=lists.xenproject.org;
        h=in-reply-to:content-disposition:mime-version:references:message-id
         :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to;
        bh=AShAgfscyXkM4Dj61Z5qkB9oc20t5f3dM6fddpcYmL8=;
        b=BjPAa4CZ5mAISqxYkfvQR8l2pp2dgqTKlMbFumivV+N3P5+wVxAULMlER8zeiYyapC
         Wy/YEv9DhsIGym/l1WY3M6NvdFVBC6dJs/j7lpL0mQBV/B4FnLWhavRbQnW7TCVHIg90
         659r74AvzLmh2kDQtpcRN+uyf0ybuAYTk2G5A=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705934779; x=1706539579;
        h=in-reply-to:content-disposition:mime-version:references:message-id
         :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to;
        bh=AShAgfscyXkM4Dj61Z5qkB9oc20t5f3dM6fddpcYmL8=;
        b=QVOVDB6cgOq9chrHwIL/cKQbRzbD8NXBZLIYqrchARWmbKEsiox6ZpuvQhOG3Klb78
         xNtkAMqdanfC8U6U486ah95mgauu1iTTfCVDhLvQX1d3Q/W2URq9yniLlJVLMEzb2OND
         G3k5ZTTvcFMUApJ1s5HS5qD2P/+XNXmotBF/NPk794niPDmiWdyVEVUICalYoBb+EoFa
         ifC0t8Vc+uRa8g9zp8Y2H6NUQ2OPNbhqxRXNh0M/3cBa9UK9Bp3h1DHxwt/aGyiyLhDy
         feZu4DnRFBZGRufd2ZHJINCK4QlVpL9zmbM4ObbuQOKKWtwUFbizVKEZuQLwYmzlXHSj
         SNAA==
X-Gm-Message-State: AOJu0YyaNpT5TRbNNUjuNkj7C/zitvoG+a0KytUbEo3piEVeuPwq08pO
	wCehGgafBvSTEL2Iqw1Wwz8r0sxDMqmR+PgkJJmfcV4P9pB8F9DY9WUB3yTVj6s=
X-Google-Smtp-Source: AGHT+IFSSCnyaaGflfqIItqCbL/iZxAyVXZOqctvsXSu6KoOYtFeMlqLRu7HNLJNxlPm1DpPf/MrCQ==
X-Received: by 2002:a05:6512:3084:b0:50e:7a9e:5c76 with SMTP id z4-20020a056512308400b0050e7a9e5c76mr955424lfd.175.1705934779048;
        Mon, 22 Jan 2024 06:46:19 -0800 (PST)
Date: Mon, 22 Jan 2024 14:46:15 +0000
From: Anthony PERARD <anthony.perard@citrix.com>
To: Michal Orzel <michal.orzel@amd.com>
Cc: xen-devel@lists.xenproject.org,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	George Dunlap <george.dunlap@citrix.com>,
	Jan Beulich <jbeulich@suse.com>, Julien Grall <julien@xen.org>,
	Stefano Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>
Subject: Re: [PATCH v2] lib{fdt,elf}: move lib{fdt,elf}-temp.o and their deps
 to $(targets)
Message-ID: <30468fd2-df76-4d62-b5f5-ff25568c09a8@perard>
References: <20240122113955.45594-1-michal.orzel@amd.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <20240122113955.45594-1-michal.orzel@amd.com>

On Mon, Jan 22, 2024 at 12:39:55PM +0100, Michal Orzel wrote:
> At the moment, trying to run xencov read/reset (calling SYSCTL_coverage_op
> under the hood) results in a crash. This is due to a profiler trying to
> access data in the .init.* sections (libfdt for Arm and libelf for x86)
> that are stripped after boot. Normally, the build system compiles any
> *.init.o file without COV_FLAGS. However, these two libraries are
> handled differently as sections will be renamed to init after linking.
> 
> To override COV_FLAGS to empty for these libraries, lib{fdt,elf}.o were
> added to nocov-y. This worked until e321576f4047 ("xen/build: start using
> if_changed") that added lib{fdt,elf}-temp.o and their deps to extra-y.
> This way, even though these objects appear as prerequisites of
> lib{fdt,elf}.o and the settings should propagate to them, make can also
> build them as a prerequisite of __build, in which case COV_FLAGS would
> still have the unwanted flags. Fix it by switching to $(targets) instead.
> 
> Also, for libfdt, append libfdt.o to nocov-y only if CONFIG_OVERLAY_DTB
> is not set. Otherwise, there is no section renaming and we should be able
> to run the coverage.
> 
> Fixes: e321576f4047 ("xen/build: start using if_changed")
> Signed-off-by: Michal Orzel <michal.orzel@amd.com>

Reviewed-by: Anthony PERARD <anthony.perard@citrix.com>

Thanks,

-- 
Anthony PERARD


From xen-devel-bounces@lists.xenproject.org Mon Jan 22 14:54:21 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 22 Jan 2024 14:54:21 +0000
Received: from list by lists.xenproject.org with outflank-mailman.669975.1042542 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rRvgh-0007rM-Kf; Mon, 22 Jan 2024 14:54:11 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 669975.1042542; Mon, 22 Jan 2024 14:54:11 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rRvgh-0007rF-Hx; Mon, 22 Jan 2024 14:54:11 +0000
Received: by outflank-mailman (input) for mailman id 669975;
 Mon, 22 Jan 2024 14:54:10 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=VPlZ=JA=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rRvgg-0007r9-Dd
 for xen-devel@lists.xenproject.org; Mon, 22 Jan 2024 14:54:10 +0000
Received: from mail-lj1-x22f.google.com (mail-lj1-x22f.google.com
 [2a00:1450:4864:20::22f])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 19117a95-b936-11ee-98f2-6d05b1d4d9a1;
 Mon, 22 Jan 2024 15:54:09 +0100 (CET)
Received: by mail-lj1-x22f.google.com with SMTP id
 38308e7fff4ca-2cf0390eddbso4618691fa.3
 for <xen-devel@lists.xenproject.org>; Mon, 22 Jan 2024 06:54:09 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 u18-20020a05660229b200b007befaf58e52sm6009200ios.30.2024.01.22.06.54.07
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 22 Jan 2024 06:54:08 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 19117a95-b936-11ee-98f2-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1705935249; x=1706540049; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=aCx2BfQMNWldXqJA6nt3SgZllYluj7qhSEaZ59J/LV8=;
        b=ENKfKizJh2r8C3/+e0A6S/sG4UnlgHKTpNj5NvDtGZpL/1L4+jqa10fWHX6Wf/0dbR
         k26KdT1ggdbywEOieunqLXvsSY8epoxrlIQTx45XLKiLgu8bfkxwmjguE2jbCuFdbEz/
         7pO0BXQn5u5ZdoBRQlztUSP6XVWFInwvm1Zn0wugJGiq0d1C/P/3fLGmFPilau5rhOpI
         q3x58eS+Zldfp6xjMAK1lrxpq2/qF4lpB40HyU20t18zKS5zmHN8aLGetEW0j7Ce6w2V
         IBkgH8MMRHOx4MrJeKt6F/47B5v4xS5sbPA8tKMyrBw80ZF61fTfqBFrmOMkqugUdqLr
         hMeA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705935249; x=1706540049;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=aCx2BfQMNWldXqJA6nt3SgZllYluj7qhSEaZ59J/LV8=;
        b=V4UYa7Oobk+X6fkUE0raGBmjfh6lb7k4bTuTkZhz8qcaCVJS4KhEH8E7jlC6COXOVe
         ZPk+YptLNGjQWkclBt/YCDa57V4ZOh4p0IvX5gIvo6MJ6MCmKymuH4U+XruHe/Lehtia
         TKqodsLtoFkta9D0pGrx9qpCB5c8mIqubVrGOvJEuCuwzP2lMvmT48nb8wHJ+D2YnXyk
         GI16cqilbiN8r1nihgp9kIPpwfOrSOOF1MdElo0WMnJEFfcyky5dhIk52OctrKQIXSou
         eEE5XJHqlDCMaCWPl6YS1G01PWePaNO4ygj4FlymFEduJO38+41yyrD5UMO8Xoaz9mj5
         wDUA==
X-Gm-Message-State: AOJu0Yz2akVZpDPbuatIH3g4ocT5GS/0dQwfmWAs+lmoxUf1USWNdXjf
	lMdRep9aoRI0Kg1NJtnQnQKp4R6CBFTt953l7AqFIUwY9cltUzkj9v+LvPCcFg==
X-Google-Smtp-Source: AGHT+IF/d6HtjZHe2Ghe6I3vk2DkWR3TmRyK5owNmRnQZA8u2rTWBpnyHo7JTJlC6C6jnyNa8M6pmA==
X-Received: by 2002:a05:651c:1a11:b0:2cc:6ca3:2476 with SMTP id by17-20020a05651c1a1100b002cc6ca32476mr2579297ljb.67.1705935249142;
        Mon, 22 Jan 2024 06:54:09 -0800 (PST)
Message-ID: <0a1dd860-1005-4b39-9e7f-1a15156bb6a8@suse.com>
Date: Mon, 22 Jan 2024 15:54:07 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2] lib{fdt,elf}: move lib{fdt,elf}-temp.o and their deps
 to $(targets)
Content-Language: en-US
To: Michal Orzel <michal.orzel@amd.com>
Cc: xen-devel@lists.xenproject.org, Andrew Cooper
 <andrew.cooper3@citrix.com>, George Dunlap <george.dunlap@citrix.com>,
 Julien Grall <julien@xen.org>, Stefano Stabellini <sstabellini@kernel.org>,
 Wei Liu <wl@xen.org>, Anthony PERARD <anthony.perard@citrix.com>
References: <20240122113955.45594-1-michal.orzel@amd.com>
 <30468fd2-df76-4d62-b5f5-ff25568c09a8@perard>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <30468fd2-df76-4d62-b5f5-ff25568c09a8@perard>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 22.01.2024 15:46, Anthony PERARD wrote:
> On Mon, Jan 22, 2024 at 12:39:55PM +0100, Michal Orzel wrote:
>> At the moment, trying to run xencov read/reset (calling SYSCTL_coverage_op
>> under the hood) results in a crash. This is due to a profiler trying to
>> access data in the .init.* sections (libfdt for Arm and libelf for x86)
>> that are stripped after boot. Normally, the build system compiles any
>> *.init.o file without COV_FLAGS. However, these two libraries are
>> handled differently as sections will be renamed to init after linking.
>>
>> To override COV_FLAGS to empty for these libraries, lib{fdt,elf}.o were
>> added to nocov-y. This worked until e321576f4047 ("xen/build: start using
>> if_changed") that added lib{fdt,elf}-temp.o and their deps to extra-y.
>> This way, even though these objects appear as prerequisites of
>> lib{fdt,elf}.o and the settings should propagate to them, make can also
>> build them as a prerequisite of __build, in which case COV_FLAGS would
>> still have the unwanted flags. Fix it by switching to $(targets) instead.
>>
>> Also, for libfdt, append libfdt.o to nocov-y only if CONFIG_OVERLAY_DTB
>> is not set. Otherwise, there is no section renaming and we should be able
>> to run the coverage.
>>
>> Fixes: e321576f4047 ("xen/build: start using if_changed")
>> Signed-off-by: Michal Orzel <michal.orzel@amd.com>
> 
> Reviewed-by: Anthony PERARD <anthony.perard@citrix.com>

Acked-by: Jan Beulich <jbeulich@suse.com>




From xen-devel-bounces@lists.xenproject.org Mon Jan 22 16:22:48 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 22 Jan 2024 16:22:48 +0000
Received: from list by lists.xenproject.org with outflank-mailman.670012.1042566 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rRx4B-0004mM-6L; Mon, 22 Jan 2024 16:22:31 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 670012.1042566; Mon, 22 Jan 2024 16:22:31 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rRx4B-0004mF-2o; Mon, 22 Jan 2024 16:22:31 +0000
Received: by outflank-mailman (input) for mailman id 670012;
 Mon, 22 Jan 2024 16:22:29 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rRx49-0004m5-Pm; Mon, 22 Jan 2024 16:22:29 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rRx49-0002eA-GJ; Mon, 22 Jan 2024 16:22:29 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rRx49-00061S-4L; Mon, 22 Jan 2024 16:22:29 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rRx49-0000ww-3t; Mon, 22 Jan 2024 16:22:29 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=nSUmYdLJJgxoK3ZR0Gh5gE5T5RDiLZ77bmI2/nSf9qo=; b=mGTFfky27y5oacih08xrC5U/5u
	NOY+tyga3P2oNClyWvrNMH56O4gXCbBHh/AqWsUOvO/+Jtr41NulCsuPPimYq/PjiGLGeRkqFWglP
	WeefeGwKu+wii09PWcU2gT4EhmCUUSxPyUtx3O0XTvfH+QN3CAjZvxR6EmvOreKxV+54=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184424-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [xen-unstable-smoke test] 184424: tolerable all pass - PUSHED
X-Osstest-Failures:
    xen-unstable-smoke:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    xen-unstable-smoke:test-arm64-arm64-xl-xsm:migrate-support-check:fail:nonblocking
    xen-unstable-smoke:test-arm64-arm64-xl-xsm:saverestore-support-check:fail:nonblocking
    xen-unstable-smoke:test-armhf-armhf-xl:migrate-support-check:fail:nonblocking
    xen-unstable-smoke:test-armhf-armhf-xl:saverestore-support-check:fail:nonblocking
X-Osstest-Versions-This:
    xen=4900c939cb9b876c51cfc7a4c854f54c722a30b5
X-Osstest-Versions-That:
    xen=b25607e528f6ce7851e907ed59ad5ff583aa1840
From: osstest service owner <osstest-admin@xenproject.org>
Date: Mon, 22 Jan 2024 16:22:29 +0000

flight 184424 xen-unstable-smoke real [real]
http://logs.test-lab.xenproject.org/osstest/logs/184424/

Failures :-/ but no regressions.

Tests which did not succeed, but are not blocking:
 test-amd64-amd64-libvirt     15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-xsm      15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-xsm      16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl          15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          16 saverestore-support-check    fail   never pass

version targeted for testing:
 xen                  4900c939cb9b876c51cfc7a4c854f54c722a30b5
baseline version:
 xen                  b25607e528f6ce7851e907ed59ad5ff583aa1840

Last test of basis   184399  2024-01-19 02:00:25 Z    3 days
Testing same since   184424  2024-01-22 13:00:26 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Jan Beulich <jbeulich@suse.com>

jobs:
 build-arm64-xsm                                              pass    
 build-amd64                                                  pass    
 build-armhf                                                  pass    
 build-amd64-libvirt                                          pass    
 test-armhf-armhf-xl                                          pass    
 test-arm64-arm64-xl-xsm                                      pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64                    pass    
 test-amd64-amd64-libvirt                                     pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Pushing revision :

To xenbits.xen.org:/home/xen/git/xen.git
   b25607e528..4900c939cb  4900c939cb9b876c51cfc7a4c854f54c722a30b5 -> smoke


From xen-devel-bounces@lists.xenproject.org Mon Jan 22 16:27:55 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 22 Jan 2024 16:27:55 +0000
Received: from list by lists.xenproject.org with outflank-mailman.670019.1042576 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rRx9H-0005cq-TM; Mon, 22 Jan 2024 16:27:47 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 670019.1042576; Mon, 22 Jan 2024 16:27:47 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rRx9H-0005cj-Pw; Mon, 22 Jan 2024 16:27:47 +0000
Received: by outflank-mailman (input) for mailman id 670019;
 Mon, 22 Jan 2024 16:27:45 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=VPlZ=JA=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rRx9F-0005cZ-Sc
 for xen-devel@lists.xenproject.org; Mon, 22 Jan 2024 16:27:45 +0000
Received: from mail-lj1-x230.google.com (mail-lj1-x230.google.com
 [2a00:1450:4864:20::230])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 2b10c012-b943-11ee-9b0f-b553b5be7939;
 Mon, 22 Jan 2024 17:27:43 +0100 (CET)
Received: by mail-lj1-x230.google.com with SMTP id
 38308e7fff4ca-2cd33336b32so43706771fa.0
 for <xen-devel@lists.xenproject.org>; Mon, 22 Jan 2024 08:27:43 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 ds11-20020a056638284b00b0046ebd521561sm2305440jab.41.2024.01.22.08.27.40
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 22 Jan 2024 08:27:42 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 2b10c012-b943-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1705940863; x=1706545663; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=QbO6XI0O7nDBZSphJ0CiEP2A+ycKfNSk0yFkAJE58hA=;
        b=UGOxTwYP+mlIILlAdI6msmCDH3Kqa0R/paEDLIMODni9uNi7GfsJO6dHAUMmJdXryu
         6gtjBtdaWeVgmpreYqR+4rAjLg2x6ym9yrc/LLk5h+4ngiRRtYYj2DgUPUSwMVzold3k
         5MIEj5T27DRrGhH3bjrDX4DSV5moBhgo0OTEVJYtNG4j3cL4N8Bd59jxeiSfgOzmb/aY
         gp8KaM7WJ3OudbDd4k4hl/hNpgbc1VtzHzSCtOBCzr1cxHlCrIBB9YabD/5JyAIcHr7B
         mAEdNhC/q5tfmN1+ZvDbZvAguhTcLf/TFQR0mNkRc8GPjimOhRo3D5hGU3ZXbmbImDO5
         kh0A==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705940863; x=1706545663;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=QbO6XI0O7nDBZSphJ0CiEP2A+ycKfNSk0yFkAJE58hA=;
        b=IFAUfnU1QJwOcE7pUanYszAVSkw2spu58Qnd8htr8rcw78p2BCXh9JEWC3EaHiQuQE
         bPblT/A6K4z7pQdpOz99fFM/CwJ0MdhpGDJHOr5n1e0ylUMJbAgaGctfODfhmolknzqj
         WF8MgCTaWsZYWOPj00G15XQD/7aTiKt/HYY61a62RADPICyM+lJHCcMDJCKEUwOgqWSw
         W+sLM799cmOwUzzrOHj6Ucnmyb6kj5Gyz+XUTs16lwCyuO466vQ5ja2mUE9wSy+MUSM7
         hREPSVyYlBsb6Vkw0ACm9rpU+d6y4DthGIxa6IYsY9wv63wDXPpf0y7Ozi/MDqxe+Kkt
         /8GQ==
X-Gm-Message-State: AOJu0YxYL077UInr7Qu/m8uz+wTQ/pgd6LBLkJMn8zLSp3shWpIA8Fo7
	4i+37ssFOgtMM30Bnd93dY4q54XCnUWKxq0bqr4PMKUQ+mQHewPmveWuW2+paA==
X-Google-Smtp-Source: AGHT+IFdKjrHP6SNj6Oxg4Kvx/9LSyPFQZVVNgrhhfwvzpGf1KXcbbxz0JYcaxX6qm+RncSNXkqKCg==
X-Received: by 2002:a2e:9e45:0:b0:2cc:9cf1:aec2 with SMTP id g5-20020a2e9e45000000b002cc9cf1aec2mr1945615ljk.24.1705940862692;
        Mon, 22 Jan 2024 08:27:42 -0800 (PST)
Message-ID: <8ee35a76-f3ef-4143-93ef-8e6089f82a80@suse.com>
Date: Mon, 22 Jan 2024 17:27:38 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 13/34] xen/riscv: introduce cmpxchg.h
Content-Language: en-US
To: Oleksii Kurochko <oleksii.kurochko@gmail.com>
Cc: Alistair Francis <alistair.francis@wdc.com>,
 Bob Eshleman <bobbyeshleman@gmail.com>, Connor Davis
 <connojdavis@gmail.com>, Andrew Cooper <andrew.cooper3@citrix.com>,
 George Dunlap <george.dunlap@citrix.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>,
 xen-devel@lists.xenproject.org
References: <cover.1703255175.git.oleksii.kurochko@gmail.com>
 <214bfd61c8ccf2a5b2c640b815ebfa6a705f6234.1703255175.git.oleksii.kurochko@gmail.com>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <214bfd61c8ccf2a5b2c640b815ebfa6a705f6234.1703255175.git.oleksii.kurochko@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 22.12.2023 16:12, Oleksii Kurochko wrote:
> --- /dev/null
> +++ b/xen/arch/riscv/include/asm/cmpxchg.h
> @@ -0,0 +1,496 @@
> +/* SPDX-License-Identifier: GPL-2.0-only */
> +/* Copyright (C) 2014 Regents of the University of California */
> +
> +#ifndef _ASM_RISCV_CMPXCHG_H
> +#define _ASM_RISCV_CMPXCHG_H
> +
> +#include <xen/compiler.h>
> +#include <xen/lib.h>
> +
> +#include <asm/fence.h>
> +#include <asm/io.h>
> +#include <asm/system.h>
> +
> +#define __xchg_relaxed(ptr, new, size) \
> +({ \
> +    __typeof__(ptr) ptr__ = (ptr); \
> +    __typeof__(new) new__ = (new); \
> +    __typeof__(*(ptr)) ret__; \

I expect the types of new and *ptr want to actually match. Which
you then want to enforce, so that issues at use sites would either
be reported by the compiler, or be permitted by a type conversion
of new.

> +    switch (size) \
> +	{ \

Nit: Hard tab left here. (Also again you want to either stick to
Linux style or fully switch to Xen style.)

> +    case 4: \
> +        asm volatile( \
> +            "	amoswap.w %0, %2, %1\n" \

I don't think a leading tab (or leading whitespace in general) is
needed in single-line-output asm()s. The trailing \n also isn't
needed if I'm not mistaken.

> +            : "=r" (ret__), "+A" (*ptr__) \
> +            : "r" (new__) \
> +            : "memory" ); \
> +        break; \
> +    case 8: \
> +        asm volatile( \
> +            "	amoswap.d %0, %2, %1\n" \
> +            : "=r" (ret__), "+A" (*ptr__) \
> +            : "r" (new__) \
> +            : "memory" ); \
> +        break; \
> +    default: \
> +        ASSERT_UNREACHABLE(); \

If at all possible this wants to trigger a build failure, not a runtime
one.

> +    } \
> +    ret__; \
> +})
> +
> +#define xchg_relaxed(ptr, x) \
> +({ \
> +    __typeof__(*(ptr)) x_ = (x); \
> +    (__typeof__(*(ptr))) __xchg_relaxed((ptr), x_, sizeof(*(ptr))); \

Nit: Stray blank after cast. For readability I'd also suggest to
drop parentheses in cases like the first argument passed to
__xchg_relaxed() here.

> +})

For both: What does "relaxed" describe? I'm asking because it's not
really clear whether the memory clobbers are actually needed.

> +#define __xchg_acquire(ptr, new, size) \
> +({ \
> +    __typeof__(ptr) ptr__ = (ptr); \
> +    __typeof__(new) new__ = (new); \
> +    __typeof__(*(ptr)) ret__; \
> +    switch (size) \
> +	{ \
> +    case 4: \
> +        asm volatile( \
> +            "	amoswap.w %0, %2, %1\n" \
> +            RISCV_ACQUIRE_BARRIER \
> +            : "=r" (ret__), "+A" (*ptr__) \
> +            : "r" (new__) \
> +            : "memory" ); \
> +        break; \
> +    case 8: \
> +        asm volatile( \
> +            "	amoswap.d %0, %2, %1\n" \
> +            RISCV_ACQUIRE_BARRIER \
> +            : "=r" (ret__), "+A" (*ptr__) \
> +            : "r" (new__) \
> +            : "memory" ); \
> +        break; \
> +    default: \
> +        ASSERT_UNREACHABLE(); \
> +    } \
> +    ret__; \
> +})

If I'm not mistaken this differs from __xchg_relaxed() only in the use
of RISCV_ACQUIRE_BARRIER, and ...

> +#define xchg_acquire(ptr, x) \
> +({ \
> +    __typeof__(*(ptr)) x_ = (x); \
> +    (__typeof__(*(ptr))) __xchg_acquire((ptr), x_, sizeof(*(ptr))); \
> +})
> +
> +#define __xchg_release(ptr, new, size) \
> +({ \
> +    __typeof__(ptr) ptr__ = (ptr); \
> +    __typeof__(new) new__ = (new); \
> +    __typeof__(*(ptr)) ret__; \
> +    switch (size) \
> +	{ \
> +    case 4: \
> +        asm volatile ( \
> +            RISCV_RELEASE_BARRIER \
> +            "	amoswap.w %0, %2, %1\n" \
> +            : "=r" (ret__), "+A" (*ptr__) \
> +            : "r" (new__) \
> +            : "memory"); \
> +        break; \
> +    case 8: \
> +        asm volatile ( \
> +            RISCV_RELEASE_BARRIER \
> +            "	amoswap.d %0, %2, %1\n" \
> +            : "=r" (ret__), "+A" (*ptr__) \
> +            : "r" (new__) \
> +            : "memory"); \
> +        break; \
> +    default: \
> +        ASSERT_UNREACHABLE(); \
> +    } \
> +    ret__; \
> +})

this only in the use of RISCV_RELEASE_BARRIER. If so they likely want
folding, to limit redundancy and make eventual updating easier. (Same
for the cmpxchg helper further down, as it seems.)

> +#define xchg_release(ptr, x) \
> +({ \
> +    __typeof__(*(ptr)) x_ = (x); \
> +    (__typeof__(*(ptr))) __xchg_release((ptr), x_, sizeof(*(ptr))); \
> +})
> +
> +static always_inline uint32_t __xchg_case_4(volatile uint32_t *ptr,
> +                                            uint32_t new)
> +{
> +    __typeof__(*(ptr)) ret;
> +
> +    asm volatile (
> +        "   amoswap.w.aqrl %0, %2, %1\n"
> +        : "=r" (ret), "+A" (*ptr)
> +        : "r" (new)
> +        : "memory" );
> +
> +    return ret;
> +}
> +
> +static always_inline uint64_t __xchg_case_8(volatile uint64_t *ptr,
> +                                            uint64_t new)
> +{
> +    __typeof__(*(ptr)) ret;
> +
> +    asm volatile( \
> +        "   amoswap.d.aqrl %0, %2, %1\n" \
> +        : "=r" (ret), "+A" (*ptr) \
> +        : "r" (new) \
> +        : "memory" ); \
> +
> +    return ret;
> +}
> +
> +static always_inline unsigned short __cmpxchg_case_2(volatile uint32_t *ptr,
> +                                                     uint32_t old,
> +                                                     uint32_t new);

Don't you consistently mean uint16_t here (incl the return type) and ...

> +static always_inline unsigned short __cmpxchg_case_1(volatile uint32_t *ptr,
> +                                                     uint32_t old,
> +                                                     uint32_t new);

... uint8_t here?

> +static inline unsigned long __xchg(volatile void *ptr, unsigned long x, int size)
> +{
> +    switch (size) {
> +    case 1:
> +        return __cmpxchg_case_1(ptr, (uint32_t)-1, x);
> +    case 2:
> +        return __cmpxchg_case_2(ptr, (uint32_t)-1, x);

How are these going to work? You'll compare against ~0, and if the value
in memory isn't ~0, memory won't be updated; you will only (correctly)
return the value found in memory.

Or wait - looking at __cmpxchg_case_{1,2}() far further down, you ignore
"old" there. Which apparently means they'll work for the use here, but
not for the use in __cmpxchg().

> +    case 4:
> +        return __xchg_case_4(ptr, x);
> +    case 8:
> +        return __xchg_case_8(ptr, x);
> +    default:
> +        ASSERT_UNREACHABLE();
> +    }
> +
> +    return -1;
> +}
> +
> +#define xchg(ptr,x) \
> +({ \
> +    __typeof__(*(ptr)) ret__; \
> +    ret__ = (__typeof__(*(ptr))) \
> +            __xchg((ptr), (unsigned long)(x), sizeof(*(ptr))); \
> +    ret__; \
> +})
> +
> +#define xchg32(ptr, x) \
> +({ \
> +    BUILD_BUG_ON(sizeof(*(ptr)) != 4); \
> +    xchg((ptr), (x)); \
> +})
> +
> +#define xchg64(ptr, x) \
> +({ \
> +    BUILD_BUG_ON(sizeof(*(ptr)) != 8); \
> +    xchg((ptr), (x)); \
> +})

What are these two (and their cmpxchg counterparts) needed for?

> +/*
> + * Atomic compare and exchange.  Compare OLD with MEM, if identical,
> + * store NEW in MEM.  Return the initial value in MEM.  Success is
> + * indicated by comparing RETURN with OLD.
> + */
> +#define __cmpxchg_relaxed(ptr, old, new, size) \
> +({ \
> +    __typeof__(ptr) ptr__ = (ptr); \
> +    __typeof__(*(ptr)) __old = (old); \

Leftover leading underscores?

> +    __typeof__(*(ptr)) new__ = (new); \

Related to my earlier comment on types needing to be compatible - see
how here you're using "ptr" throughout.

> +    __typeof__(*(ptr)) ret__; \
> +    register unsigned int __rc; \

More leftover leading underscores?

> +static always_inline unsigned short __cmpxchg_case_2(volatile uint32_t *ptr,
> +                                                     uint32_t old,
> +                                                     uint32_t new)
> +{
> +    (void) old;
> +
> +    if (((unsigned long)ptr & 3) == 3)
> +    {
> +#ifdef CONFIG_64BIT
> +        return __emulate_cmpxchg_case1_2((uint64_t *)ptr, new,
> +                                         readq, __cmpxchg_case_8, 0xffffU);

What if ((unsigned long)ptr & 7) == 7 (which is a sub-case of what the
if() above checks for? Isn't it more reasonable to require aligned
16-bit quantities here? Or if mis-aligned addresses are okay, you could
as well emulate using __cmpxchg_case_4().

Also you shouldn't be casting away volatile (here and below). Avoiding
the casts (by suitable using volatile void * parameter types) would
likely be best.

Jan


From xen-devel-bounces@lists.xenproject.org Mon Jan 22 16:56:16 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 22 Jan 2024 16:56:16 +0000
Received: from list by lists.xenproject.org with outflank-mailman.670024.1042586 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rRxak-0002aI-1m; Mon, 22 Jan 2024 16:56:10 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 670024.1042586; Mon, 22 Jan 2024 16:56:10 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rRxaj-0002aB-Uh; Mon, 22 Jan 2024 16:56:09 +0000
Received: by outflank-mailman (input) for mailman id 670024;
 Mon, 22 Jan 2024 16:56:09 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=VPlZ=JA=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rRxaj-0002a5-Bw
 for xen-devel@lists.xenproject.org; Mon, 22 Jan 2024 16:56:09 +0000
Received: from mail-lj1-x236.google.com (mail-lj1-x236.google.com
 [2a00:1450:4864:20::236])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 21e8bfcc-b947-11ee-98f2-6d05b1d4d9a1;
 Mon, 22 Jan 2024 17:56:05 +0100 (CET)
Received: by mail-lj1-x236.google.com with SMTP id
 38308e7fff4ca-2cddf596321so35438681fa.0
 for <xen-devel@lists.xenproject.org>; Mon, 22 Jan 2024 08:56:05 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 z15-20020a6bc90f000000b007bf05f618f3sm6643571iof.55.2024.01.22.08.56.03
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 22 Jan 2024 08:56:04 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 21e8bfcc-b947-11ee-98f2-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1705942565; x=1706547365; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=pRp/lGCqYXGJxDgbw21vw0U/btwbfb4OSgaAF8MF18A=;
        b=RHsYCEDs1WmR9wRKmf3tk4a0LTYB6NUREkArC3fauYKhxr8eyDyCibDLo7LdC+bLkX
         G2wTe9puR6Mkb0gddt5z8Z0K3xWT+FI5kStgMubJn6IEpkNNaIzzfXj5u95InXtLbNRh
         Bc9srzG+q92VAr3JnFceXKqhEc+hWjh+vpD8zejl6QRtqkGo+c/aaCKDy4PN9mb/LObx
         DCjAV7XbQ/1zl3Hy3qiq7TNh8xzIoSczRybO6mOIdg5PaBKtijnJtaSooEiDh6SyONMM
         gWY5IrfJKKgiHnadU+1O8N52dBJkixnTL/ew3HdK4OjWRq5KkkBltWV9ihtCAIqHAwEM
         Hqww==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705942565; x=1706547365;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=pRp/lGCqYXGJxDgbw21vw0U/btwbfb4OSgaAF8MF18A=;
        b=pOyzdzAaY5jr2oF2AptgK3n7godOWsh/BxXILzmlgDnmEqvFQHho/+uG9H8H4U5wiq
         jj0RpPGG5fenFbGvD1c/uN89+wdjDhBBM5hRgM8Rq7vcgqnNJ3OtoDCnX7Ot3TgRNRll
         k8M8JEdytXtB+TKrs6i7dWZLpdeVAVzr0rKkTZCBcEXGoFG9Q8hZjQL44k3r3MP0OgOX
         WJcwfB4xfmdDhyBYZUUTvnjxpjfRW3xK409/8vAGuMyaY/UQT6loThWAV0SGBBX/8/cn
         dlavOuTSxqLKB0Yt9Yo6+vqcHcjxmI2bKdpWsevPkT2R9PTa9BzwC6wqjaIegvGMIUD6
         5XVA==
X-Gm-Message-State: AOJu0YzB29sZSYyw5+nJJVpO/nrhpBGfcBABtIUos3GKngRKaqTwQSLR
	1bGPcvUpgjnhmPLyG5iGlaDaVn4KN8ulhgOp3r71l3TmdluSE2nNUuMVMiRi+A==
X-Google-Smtp-Source: AGHT+IGSliYbjVT1qB2AtyuC0L604r7g1UBHocATtNbWa0MOckoxkiRtPY8PUtyYqEucFMXSJaG9qA==
X-Received: by 2002:a2e:b70e:0:b0:2cd:7b5e:7358 with SMTP id j14-20020a2eb70e000000b002cd7b5e7358mr1856573ljo.25.1705942565348;
        Mon, 22 Jan 2024 08:56:05 -0800 (PST)
Message-ID: <2429395f-3ce8-4f17-aabe-78af2446ff6d@suse.com>
Date: Mon, 22 Jan 2024 17:56:01 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 15/34] xen/riscv: introduce atomic.h
Content-Language: en-US
To: Oleksii Kurochko <oleksii.kurochko@gmail.com>
Cc: Bobby Eshleman <bobbyeshleman@gmail.com>,
 Alistair Francis <alistair.francis@wdc.com>,
 Connor Davis <connojdavis@gmail.com>,
 Andrew Cooper <andrew.cooper3@citrix.com>,
 George Dunlap <george.dunlap@citrix.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>,
 xen-devel@lists.xenproject.org
References: <cover.1703255175.git.oleksii.kurochko@gmail.com>
 <54f5f13a4ee3de3c3cf4ba2b4d0347bb77bb7d08.1703255175.git.oleksii.kurochko@gmail.com>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <54f5f13a4ee3de3c3cf4ba2b4d0347bb77bb7d08.1703255175.git.oleksii.kurochko@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 22.12.2023 16:12, Oleksii Kurochko wrote:
> --- /dev/null
> +++ b/xen/arch/riscv/include/asm/atomic.h
> @@ -0,0 +1,384 @@
> +/* SPDX-License-Identifier: GPL-2.0-only */
> +/*
> + * Taken and modified from Linux.
> + * 
> + * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
> + * Copyright (C) 2012 Regents of the University of California
> + * Copyright (C) 2017 SiFive
> + * Copyright (C) 2021 Vates SAS
> + */
> +
> +#ifndef _ASM_RISCV_ATOMIC_H
> +#define _ASM_RISCV_ATOMIC_H
> +
> +#include <xen/atomic.h>
> +#include <asm/cmpxchg.h>
> +#include <asm/fence.h>
> +#include <asm/io.h>
> +#include <asm/system.h>
> +
> +void __bad_atomic_size(void);
> +
> +static always_inline void read_atomic_size(const volatile void *p,
> +                                           void *res,
> +                                           unsigned int size)
> +{
> +    switch ( size )
> +    {
> +    case 1: *(uint8_t *)res = readb((const uint8_t *)p); break;
> +    case 2: *(uint16_t *)res = readw((const uint16_t *)p); break;
> +    case 4: *(uint32_t *)res = readl((const uint32_t *)p); break;
> +    case 8: *(uint32_t *)res  = readq((const uint64_t *)p); break;

Just like const, you should also avoid casting away volatile.

> +    default: __bad_atomic_size(); break;
> +    }
> +}
> +
> +#define read_atomic(p) ({                                               \
> +    union { typeof(*p) val; char c[0]; } x_;                            \
> +    read_atomic_size(p, x_.c, sizeof(*p));                              \
> +    x_.val;                                                             \
> +})
> +
> +

Nit: No double blank lines please.

> +#define write_atomic(p, x) ({                                           \
> +    typeof(*p) x__ = (x);                                               \
> +    switch ( sizeof(*p) )												\
> +    {                                             						\

These lines look excessively long, possibly as a result of leaving hard tabs
in place.

Overall some of the style comments on the earlier patch seem to apply here
as well.

> --- /dev/null
> +++ b/xen/arch/riscv/include/asm/fence.h
> @@ -0,0 +1,13 @@
> +/* SPDX-License-Identifier: GPL-2.0-or-later */
> +#ifndef _ASM_RISCV_FENCE_H
> +#define _ASM_RISCV_FENCE_H
> +
> +#ifdef CONFIG_SMP
> +#define RISCV_ACQUIRE_BARRIER		"\tfence r , rw\n"
> +#define RISCV_RELEASE_BARRIER		"\tfence rw,  w\n"
> +#else
> +#define RISCV_ACQUIRE_BARRIER
> +#define RISCV_RELEASE_BARRIER
> +#endif

Do you really care about the !SMP case? On x86 at least we stopped special-
casing that configuration many years ago (the few cases where for typically
build reasons it matters, using CONFIG_NR_CPUS is sufficient). If you care
about it, there needs to be somewhere you actually #define CONFIG_SMP.

Jan


From xen-devel-bounces@lists.xenproject.org Mon Jan 22 17:06:53 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 22 Jan 2024 17:06:53 +0000
Received: from list by lists.xenproject.org with outflank-mailman.670028.1042596 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rRxl1-0004vW-WD; Mon, 22 Jan 2024 17:06:48 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 670028.1042596; Mon, 22 Jan 2024 17:06:47 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rRxl1-0004vP-T6; Mon, 22 Jan 2024 17:06:47 +0000
Received: by outflank-mailman (input) for mailman id 670028;
 Mon, 22 Jan 2024 17:06:46 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=v1fX=JA=gmail.com=euidzero@srs-se1.protection.inumbo.net>)
 id 1rRxl0-0004vJ-My
 for xen-devel@lists.xenproject.org; Mon, 22 Jan 2024 17:06:46 +0000
Received: from mail-pj1-x1031.google.com (mail-pj1-x1031.google.com
 [2607:f8b0:4864:20::1031])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 9ecdbb59-b948-11ee-98f2-6d05b1d4d9a1;
 Mon, 22 Jan 2024 18:06:45 +0100 (CET)
Received: by mail-pj1-x1031.google.com with SMTP id
 98e67ed59e1d1-290a55f3feaso795968a91.2
 for <xen-devel@lists.xenproject.org>; Mon, 22 Jan 2024 09:06:45 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 9ecdbb59-b948-11ee-98f2-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1705943204; x=1706548004; darn=lists.xenproject.org;
        h=cc:to:subject:message-id:date:from:in-reply-to:references
         :mime-version:from:to:cc:subject:date:message-id:reply-to;
        bh=/PolFGSx8X5PcHNhFYQmMDWcmM6L0GZrTiL9HH5fX0A=;
        b=SePPVqAeaHlQLIkUR+jClNFb1jXa+bm3P2Bp1xnojrv98E1Jt555rlN+wrPKduQuG8
         n0ZZd623XnF8Pjri+SJcNFf6UpdbR22Eva/r3pJZTob6joirOjRwGTUS4562MAXKqWWv
         cSFA+CYvzIMPKLvIpllGvfMpWFCrYsXq3xd2SXbZdCSC5+Nc8s1lIRWoCdAC4njiuRcK
         abYHJvGUofJug4Mm7Zfj9i5sAunRWaSqFjGUVkdKSJwn5ynBMuffUZ+k3BgKVVwnp4pA
         8xa8ODinyUgboG5WWfaWTYxcksqkLjOludk7MLgQJLMROcP3QE286xTXYLtm2ofik28O
         mMUw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705943204; x=1706548004;
        h=cc:to:subject:message-id:date:from:in-reply-to:references
         :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id
         :reply-to;
        bh=/PolFGSx8X5PcHNhFYQmMDWcmM6L0GZrTiL9HH5fX0A=;
        b=YCZ3SjZXzvOo2kIpdUgYSZwVBy7m6tvbRJRLoiYz9x2l8DAA0HvKobPdmOofcjSl+G
         LXRYt8K2uq+rCkpltOXMD8O3OxV2Emkqm/T7+fmQhcr+9M5V8Spz6qbIzxvCjPLhonDs
         SRaXi6G2Yk4N+53bkeU3FNbXqorGuZpD2G7nkvn+uT5zYshjeCCKx0WQRDr3SQLDxkYC
         mk7/oD9WgHTLLyJYaM9Z0Cuk1MAyRYB2EftZdhKQHMLKTQVuJkVY+yvrIP85Mkysss7M
         T0EoB4o7DlJn8EWxnzXJ4Bc5SjguG8eBmAJ1tKlMe4gvXFpdwTT4fetJfKmpqwfTX0GQ
         LpMQ==
X-Gm-Message-State: AOJu0Yy50rQMQk9wmP2I+sEADo4JSb+ChOv6lYFQDqUIHrWwhFkwPdvF
	qv2SPdDN3IIAwAevelj2dHtxNlHL2K8yhT80vblylH6h/6vuZcxfNjl63ONOX3zIYYARnDTpcch
	VEzr/TEyKyRLfozjtQ4p1tJlMlJM=
X-Google-Smtp-Source: AGHT+IF8WzDo38Z0yUxrkTkvNNnZZDRCO73ktXWM3JmiQoLFQHUMpPt+OxmeR0ZnOZTQj76kjFLdEAJlOl0YjmUeTrg=
X-Received: by 2002:a17:90a:de89:b0:290:6e27:4e4b with SMTP id
 n9-20020a17090ade8900b002906e274e4bmr1535302pjv.15.1705943204010; Mon, 22 Jan
 2024 09:06:44 -0800 (PST)
MIME-Version: 1.0
References: <CAKm-Umas=5=JzooRzPHxUDigKpFK3Ze7cQcG8eR5kWgn-d_7fQ@mail.gmail.com>
 <CAKm-Umapq5LW9yhSOGk8TOg1iuvUogUDKbEXbUcE5T5-vVzW3w@mail.gmail.com>
 <CAKm-UmaUZ=rj-F3RvMoR7H3OvBHm1iy4PTRZAjyi=MQUVTuYVg@mail.gmail.com>
 <CAKm-Umat77MTh6=GEuH+bf1WRX+_B4-N5hY4xwADALfhj4QCPA@mail.gmail.com>
 <6ba9568a-ff8e-48ad-907f-74303e04d3a2@suse.com> <CAKm-UmZVoUhidEV15Xk+J_XN5a2GsBqMbXL9wqdFdoAFf_u5AA@mail.gmail.com>
 <bcbceba7-42ac-45be-80ab-e3dfe7741ec6@suse.com> <2eafe45b-fd97-472c-a173-459d6ff0b957@suse.com>
 <CAKm-Umbs2D7NHFE+NW2xKOu7-AZhFpH4uzE5QTuQusnGA_eNWA@mail.gmail.com>
 <f539144c-885a-461c-a506-bdb73e626a65@suse.com> <CAKm-UmY126AfdGhWcZ3s9vwN9+ksVRRFEhOu0ZFMoDvxrqOibw@mail.gmail.com>
 <CAKm-UmYt3iV8zOhSmtqMGhi_8T93c_nCbnefs4m3UC+3UABqeQ@mail.gmail.com>
 <CAKm-UmY-KXEAtBagikW4Jvp=SFXtmEg8P62pHfSo3Hr2s-0_-A@mail.gmail.com>
 <CAKm-UmYbMCfXc1Ny0=qfB+UaLSXV9oEHZiSgS=mwKMwmOFGVrQ@mail.gmail.com>
 <77c1c05d-a0a0-4292-9257-9b7fbebee0e3@suse.com> <2859ad22-8714-4628-8142-fc77fc2072c3@amd.com>
In-Reply-To: <2859ad22-8714-4628-8142-fc77fc2072c3@amd.com>
From: =?UTF-8?Q?S=C3=A9bastien_Chaumat?= <euidzero@gmail.com>
Date: Mon, 22 Jan 2024 18:06:32 +0100
Message-ID: <CAKm-UmZpyGkWXugYTJqU+qqVDyCFEKghtd=NTr2wK5EMCeL9Ww@mail.gmail.com>
Subject: Re: [BUG]i2c_hid_acpi broken with 4.17.2 on Framework Laptop 13 AMD
To: Mario Limonciello <mario.limonciello@amd.com>
Cc: Jan Beulich <jbeulich@suse.com>, xen-devel@lists.xenproject.org, 
	Juergen Gross <jgross@suse.com>
Content-Type: multipart/alternative; boundary="000000000000ae9d52060f8bdac7"

--000000000000ae9d52060f8bdac7
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

Le mer. 17 janv. 2024 =C3=A0 03:20, Mario Limonciello <mario.limonciello@am=
d.com>
a =C3=A9crit :

> On 1/16/2024 10:18, Jan Beulich wrote:
> > On 16.01.2024 16:52, S=C3=A9bastien Chaumat wrote:
> >> Le mar. 2 janv. 2024 =C3=A0 21:23, S=C3=A9bastien Chaumat <euidzero@gm=
ail.com> a
> >> =C3=A9crit :
> >>
> >>>
> >>>   output of gpioinfo
> >>>>
> >>>> kernel alone :
> >>>>
> >>>>          line   5: unnamed         input active-low consumer=3Dinter=
rupt
> >>>>          line  84: unnamed         input active-low consumer=3Dinter=
rupt
> >>>>
> >>>> xen:
> >>>>
> >>>>          line   5: unnamed         input active-low
> >>>>          line  84: unnamed         input active-low
> >>>>
> >>>> xen with skipping IRQ7 double init :
> >>>>
> >>>>          line   5: unnamed         input active-low consumer=3Dinter=
rupt
> >>>>          line  84: unnamed         input active-low
> >>>>
> >>>>
> >>>> So definitely progressing.
> >>>>
> >>>
> >>> Checking /sys/kernel/irq/7
> >>>
> >>> kernel alone :
> >>>   actions: pinctrl_amd
> >>>   chip_name: IR-IO-APIC
> >>>   hwirq: 7
> >>>   name: fasteoi
> >>>   per_cpu_count: 0,0,0,0,0,20,0,0,0,0,0,0,0,0,0,0
> >>>   type: level
> >>>   wakeup: enabled
> >>>
> >>> xen skipping IRQ7 double init :
> >>>
> >>> actions: pinctrl_amd
> >>>   chip_name: xen-pirq
> >>>   hwirq:
> >>>   name: ioapic-level
> >>>   per_cpu_count: 0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0
> >>>   type: edge
> >>>   wakeup: disabled
> >>>
> >>> So the skip of IRQ7 in pci_xen_initial_domain() sets the correct
> handler
> >>>   (IIUC xen uses the ioapic-level and handles the eoi separately), bu=
t
> not
> >>> the correct type (still edge).
> >>> I guess this may explains the results above.
> >>>
> >>>
> >>   Mario (in CC) patched the pinctrl_amd to flush pending interrupt
> before
> >> starting the driver for the GPIO.
> >>
> >> This helped in  the sense of there's no more pending interrupt on IRQ7
> >> (whatever the handler is, level or edge) but then the touchpad is not
> >> detected by i2c-hid.
> >>
> >> Is there any work in progress related to the incorrect IRQ
> configuration ?
> >
> > I'm not aware of any. As per my recollection it's still not entirely
> > clear where in the kernel things go astray. And to be honest I don't
> > feel comfortable trying to half-blindly address this, e.g. by trying
> > to circumvent / defer the early setting up of the low 16 IRQs.
> >
> > Jan
>
> Shot in the dark - but could this be a problem where PCAT_COMPAT from
> the MADT is being ignored causing PIC not to be setup properly in the
> Xen case?
>
> See https://lore.kernel.org/all/875y2u5s8g.ffs@tglx/ for some context.
>
> At least we know that no MADT override is found by xen for INT7 as no
INT_SRC_OVR message is printed.

Do we expect one @Mario Limonciello <mario.limonciello@amd.com>  ?

--000000000000ae9d52060f8bdac7
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><div dir=3D"ltr"><br></div><br><div class=3D"gmail_quote">=
<div dir=3D"ltr" class=3D"gmail_attr">Le=C2=A0mer. 17 janv. 2024 =C3=A0=C2=
=A003:20, Mario Limonciello &lt;<a href=3D"mailto:mario.limonciello@amd.com=
">mario.limonciello@amd.com</a>&gt; a =C3=A9crit=C2=A0:<br></div><blockquot=
e class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px s=
olid rgb(204,204,204);padding-left:1ex">On 1/16/2024 10:18, Jan Beulich wro=
te:<br>
&gt; On 16.01.2024 16:52, S=C3=A9bastien Chaumat wrote:<br>
&gt;&gt; Le mar. 2 janv. 2024 =C3=A0 21:23, S=C3=A9bastien Chaumat &lt;<a h=
ref=3D"mailto:euidzero@gmail.com" target=3D"_blank">euidzero@gmail.com</a>&=
gt; a<br>
&gt;&gt; =C3=A9crit :<br>
&gt;&gt;<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;=C2=A0 =C2=A0output of gpioinfo<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; kernel alone :<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 line=C2=A0 =C2=A05: unna=
med=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0input active-low consumer=3Dinterrupt<=
br>
&gt;&gt;&gt;&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 line=C2=A0 84: unnamed=
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0input active-low consumer=3Dinterrupt<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; xen:<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 line=C2=A0 =C2=A05: unna=
med=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0input active-low<br>
&gt;&gt;&gt;&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 line=C2=A0 84: unnamed=
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0input active-low<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; xen with skipping IRQ7 double init :<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 line=C2=A0 =C2=A05: unna=
med=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0input active-low consumer=3Dinterrupt<=
br>
&gt;&gt;&gt;&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 line=C2=A0 84: unnamed=
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0input active-low<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; So definitely progressing.<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; Checking /sys/kernel/irq/7<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; kernel alone :<br>
&gt;&gt;&gt;=C2=A0 =C2=A0actions: pinctrl_amd<br>
&gt;&gt;&gt;=C2=A0 =C2=A0chip_name: IR-IO-APIC<br>
&gt;&gt;&gt;=C2=A0 =C2=A0hwirq: 7<br>
&gt;&gt;&gt;=C2=A0 =C2=A0name: fasteoi<br>
&gt;&gt;&gt;=C2=A0 =C2=A0per_cpu_count: 0,0,0,0,0,20,0,0,0,0,0,0,0,0,0,0<br=
>
&gt;&gt;&gt;=C2=A0 =C2=A0type: level<br>
&gt;&gt;&gt;=C2=A0 =C2=A0wakeup: enabled<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; xen skipping IRQ7 double init :<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; actions: pinctrl_amd<br>
&gt;&gt;&gt;=C2=A0 =C2=A0chip_name: xen-pirq<br>
&gt;&gt;&gt;=C2=A0 =C2=A0hwirq:<br>
&gt;&gt;&gt;=C2=A0 =C2=A0name: ioapic-level<br>
&gt;&gt;&gt;=C2=A0 =C2=A0per_cpu_count: 0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0<br>
&gt;&gt;&gt;=C2=A0 =C2=A0type: edge<br>
&gt;&gt;&gt;=C2=A0 =C2=A0wakeup: disabled<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; So the skip of IRQ7 in pci_xen_initial_domain() sets the corre=
ct handler<br>
&gt;&gt;&gt;=C2=A0 =C2=A0(IIUC xen uses the ioapic-level and handles the eo=
i separately), but not<br>
&gt;&gt;&gt; the correct type (still edge).<br>
&gt;&gt;&gt; I guess this may explains the results above.<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;<br>
&gt;&gt;=C2=A0 =C2=A0Mario (in CC) patched the pinctrl_amd to flush pending=
 interrupt before<br>
&gt;&gt; starting the driver for the GPIO.<br>
&gt;&gt;<br>
&gt;&gt; This helped in=C2=A0 the sense of there&#39;s no more pending inte=
rrupt on IRQ7<br>
&gt;&gt; (whatever the handler is, level or edge) but then the touchpad is =
not<br>
&gt;&gt; detected by i2c-hid.<br>
&gt;&gt;<br>
&gt;&gt; Is there any work in progress related to the incorrect IRQ configu=
ration ?<br>
&gt; <br>
&gt; I&#39;m not aware of any. As per my recollection it&#39;s still not en=
tirely<br>
&gt; clear where in the kernel things go astray. And to be honest I don&#39=
;t<br>
&gt; feel comfortable trying to half-blindly address this, e.g. by trying<b=
r>
&gt; to circumvent / defer the early setting up of the low 16 IRQs.<br>
&gt; <br>
&gt; Jan<br>
<br>
Shot in the dark - but could this be a problem where PCAT_COMPAT from <br>
the MADT is being ignored causing PIC not to be setup properly in the <br>
Xen case?<br>
<br>
See <a href=3D"https://lore.kernel.org/all/875y2u5s8g.ffs@tglx/" rel=3D"nor=
eferrer" target=3D"_blank">https://lore.kernel.org/all/875y2u5s8g.ffs@tglx/=
</a> for some context.<br>
<br></blockquote><div>At least we know that no MADT override is found by xe=
n for INT7 as no INT_SRC_OVR message is printed.<br></div><div><br></div><d=
iv>Do we expect one <a class=3D"gmail_plusreply" id=3D"plusReplyChip-0" hre=
f=3D"mailto:mario.limonciello@amd.com" tabindex=3D"-1">@Mario Limonciello</=
a>=C2=A0 ?<br></div></div></div>

--000000000000ae9d52060f8bdac7--


From xen-devel-bounces@lists.xenproject.org Mon Jan 22 17:26:56 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 22 Jan 2024 17:26:56 +0000
Received: from list by lists.xenproject.org with outflank-mailman.670035.1042609 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rRy4L-0000Xg-LT; Mon, 22 Jan 2024 17:26:45 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 670035.1042609; Mon, 22 Jan 2024 17:26:45 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rRy4L-0000XZ-It; Mon, 22 Jan 2024 17:26:45 +0000
Received: by outflank-mailman (input) for mailman id 670035;
 Mon, 22 Jan 2024 17:26:44 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rRy4K-0000XP-5q; Mon, 22 Jan 2024 17:26:44 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rRy4K-0003lW-1A; Mon, 22 Jan 2024 17:26:44 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rRy4J-0007bl-KK; Mon, 22 Jan 2024 17:26:43 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rRy4J-0004pM-Jm; Mon, 22 Jan 2024 17:26:43 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=DNlhht1zQeatgxlSeGNgdqVjOlsEZPXwf/Z67tzuqqk=; b=Y2lpbHESi9MwSIgsWcZegaeOVv
	91SjDtzvh5otS9T48lRh9z0qjnjLk45UuFLD7v0q2eTwAlSqhserKuXkzNYu74I9bsDwZAgaEtj7l
	MQfPsrZhhtP1875ia0nOHo9+YajLBBvt+M8pgsJobaFVi0UvFmAkNQ016ygVHtuSzKHE=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184425-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [ovmf test] 184425: all pass - PUSHED
X-Osstest-Versions-This:
    ovmf=313f9f01552227138e08a7a7f44be48e5ba20a99
X-Osstest-Versions-That:
    ovmf=0b09397dfa0123b9a27c2c52fd2ddafd7a902137
From: osstest service owner <osstest-admin@xenproject.org>
Date: Mon, 22 Jan 2024 17:26:43 +0000

flight 184425 ovmf real [real]
http://logs.test-lab.xenproject.org/osstest/logs/184425/

Perfect :-)
All tests in this flight passed as required
version targeted for testing:
 ovmf                 313f9f01552227138e08a7a7f44be48e5ba20a99
baseline version:
 ovmf                 0b09397dfa0123b9a27c2c52fd2ddafd7a902137

Last test of basis   184423  2024-01-22 11:14:34 Z    0 days
Testing same since   184425  2024-01-22 15:42:46 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Michael Kubacki <michael.kubacki@microsoft.com>

jobs:
 build-amd64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-amd64-amd64-xl-qemuu-ovmf-amd64                         pass    
 test-amd64-i386-xl-qemuu-ovmf-amd64                          pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Pushing revision :

To xenbits.xen.org:/home/xen/git/osstest/ovmf.git
   0b09397dfa..313f9f0155  313f9f01552227138e08a7a7f44be48e5ba20a99 -> xen-tested-master


From xen-devel-bounces@lists.xenproject.org Mon Jan 22 17:27:11 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 22 Jan 2024 17:27:11 +0000
Received: from list by lists.xenproject.org with outflank-mailman.670038.1042618 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rRy4k-0000vP-UL; Mon, 22 Jan 2024 17:27:10 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 670038.1042618; Mon, 22 Jan 2024 17:27:10 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rRy4k-0000vI-RT; Mon, 22 Jan 2024 17:27:10 +0000
Received: by outflank-mailman (input) for mailman id 670038;
 Mon, 22 Jan 2024 17:27:09 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=2apV=JA=cloud.com=roger.pau@srs-se1.protection.inumbo.net>)
 id 1rRy4j-0000v9-8I
 for xen-devel@lists.xenproject.org; Mon, 22 Jan 2024 17:27:09 +0000
Received: from mail-wr1-x42c.google.com (mail-wr1-x42c.google.com
 [2a00:1450:4864:20::42c])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 770322a0-b94b-11ee-9b0f-b553b5be7939;
 Mon, 22 Jan 2024 18:27:06 +0100 (CET)
Received: by mail-wr1-x42c.google.com with SMTP id
 ffacd0b85a97d-3392b12dd21so1720685f8f.0
 for <xen-devel@lists.xenproject.org>; Mon, 22 Jan 2024 09:27:06 -0800 (PST)
Received: from localhost ([213.195.127.68]) by smtp.gmail.com with ESMTPSA id
 q14-20020a05600c46ce00b0040e7306f655sm29398076wmo.22.2024.01.22.09.27.05
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 22 Jan 2024 09:27:05 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 770322a0-b94b-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1705944426; x=1706549226; darn=lists.xenproject.org;
        h=in-reply-to:content-disposition:mime-version:references:message-id
         :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to;
        bh=LTFEoQob7C7DgdyXMK0j9H5umgBs6NoqjIQ3+uezxIE=;
        b=YWDoC5dyGh5bxoVg2DaJGfUIq+7Bsc1FCXOhZbITIn9C6S2LrSyi+/jYz2qeh5OINQ
         0w6hLaP9cxoxOI1b3/iobka/V4XSNIuDEDEQOS1pHoRYF9PwHayv41bCn5DoSyY52eau
         H9/soQ2GRakOtTVQjN/JgvA+8R3XWtsiBdfT4=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705944426; x=1706549226;
        h=in-reply-to:content-disposition:mime-version:references:message-id
         :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to;
        bh=LTFEoQob7C7DgdyXMK0j9H5umgBs6NoqjIQ3+uezxIE=;
        b=W/dQaA5fciNkBWFlgaHF5GLiTdi9FqAZ/zrxCshd1Uf6EwdGhDST5xe3OWKS7IexnN
         aAi4P5G0AMtWQKNikUYoIi378aOfml7KAi66JFMeQM7JknxwKnE3DenBiQZ3hgFwRdug
         DgnajG1pCkManKJkHQu+9i3HKRPYctoc5VIZ4x3/GOLkfSYZHxsIJEDAV1BYPfEpEAed
         H0t5EAtEXDtIcr3PTayIyEKD6fddkCZwfca8DiDtBR7c3a5655gplT+dyUDuySpNdSYR
         8OFNSkuj3AmlMnQGL34fFLHcwW7ri4vL3DsPq+juYDxKi9p63oZtQRouaSBa34umVKDU
         SXJA==
X-Gm-Message-State: AOJu0Yy+wuYSUxytTHQVQpo6IQxkCgfYeZMitj2kwoN/VrCUZ23CO5zL
	Ylj08BITyF3+fZ8xYmOaTTDMXdbB1fnVaMZ8Wz6hicohbOTDu0BuNzAj9YBPNoY=
X-Google-Smtp-Source: AGHT+IGXoBAR5vVqLwhuzcFYFZFC583w369vWyfTDVE4jTap6v/6laWtleV6kM8i/PhozUSIC4uKvA==
X-Received: by 2002:a05:600c:211a:b0:40e:7002:6e6f with SMTP id u26-20020a05600c211a00b0040e70026e6fmr2500961wml.47.1705944426120;
        Mon, 22 Jan 2024 09:27:06 -0800 (PST)
Date: Mon, 22 Jan 2024 18:27:05 +0100
From: Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
To: Jan Beulich <jbeulich@suse.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
	George Dunlap <george.dunlap@citrix.com>,
	Julien Grall <julien@xen.org>,
	Stefano Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>,
	Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>,
	Ross Lagerwall <ross.lagerwall@citrix.com>,
	Bertrand Marquis <bertrand.marquis@arm.com>,
	Michal Orzel <michal.orzel@amd.com>,
	Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
	xen-devel@lists.xenproject.org
Subject: Re: [PATCH v5] x86/livepatch: align functions to ensure minimal
 distance between entry points
Message-ID: <Za6laZtVdQtFP4F5@macbook>
References: <20240122110244.14091-1-roger.pau@citrix.com>
 <013210fd-6ea3-4719-afcd-1da97d9cd17f@suse.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
In-Reply-To: <013210fd-6ea3-4719-afcd-1da97d9cd17f@suse.com>

On Mon, Jan 22, 2024 at 12:21:47PM +0100, Jan Beulich wrote:
> On 22.01.2024 12:02, Roger Pau Monne wrote:
> > The minimal function size requirements for an x86 livepatch are either 5 bytes
> > (for jmp) or 9 bytes (for endbr + jmp), and always 4 bytes on Arm.  Ensure that
> > distance between functions entry points is always at least of the minimal
> > required size for livepatch instruction replacement to be successful.
> > 
> > Add an additional align directive to the linker script, in order to ensure that
> > the next section placed after the .text.* (per-function sections) is also
> > aligned to the required boundary, so that the distance of the last function
> > entry point with the next symbol is also of minimal size.
> > 
> > Note that it's possible for the compiler to end up using a higher function
> > alignment regardless of the passed value, so this change just make sure that
> > the minimum required for livepatch to work is present.  Different compilers
> > handle the option differently, as clang will ignore -falign-functions value
> > if it's smaller than the one that would be set by the optimization level, while
> > gcc seems to always honor the function alignment passed in -falign-functions.
> > In order to cope with this behavior and avoid that setting -falign-functions
> > results in an alignment inferior to what the optimization level would have
> > selected force x86 release builds to use a function alignment of 16 bytes.
> 
> Nit: A comma after "selected" may help readability.
> 
> > --- a/xen/Kconfig
> > +++ b/xen/Kconfig
> > @@ -37,6 +37,27 @@ config CC_HAS_VISIBILITY_ATTRIBUTE
> >  config CC_SPLIT_SECTIONS
> >  	bool
> >  
> > +# Set function alignment.
> > +#
> > +# Allow setting on a boolean basis, and then convert such selection to an
> > +# integer for the build system and code to consume more easily.
> > +#
> > +# Requires clang >= 7.0.0
> > +config CC_HAS_FUNCTION_ALIGNMENT
> > +	def_bool $(cc-option,-falign-functions)
> 
> Nit: Maybe better have a blank line here?
> 
> > +config FUNCTION_ALIGNMENT_4B
> > +	bool
> > +config FUNCTION_ALIGNMENT_8B
> > +	bool
> > +config FUNCTION_ALIGNMENT_16B
> > +	bool
> > +config FUNCTION_ALIGNMENT
> > +	int
> > +	depends on CC_HAS_FUNCTION_ALIGNMENT
> > +	default 16 if FUNCTION_ALIGNMENT_16B
> > +	default  8 if  FUNCTION_ALIGNMENT_8B
> > +	default  4 if  FUNCTION_ALIGNMENT_4B
> > +
> >  source "arch/$(SRCARCH)/Kconfig"
> >  
> >  config DEFCONFIG_LIST
> >[...]
> > --- a/xen/arch/x86/xen.lds.S
> > +++ b/xen/arch/x86/xen.lds.S
> > @@ -99,6 +99,10 @@ SECTIONS
> >         *(.text)
> >  #ifdef CONFIG_CC_SPLIT_SECTIONS
> >         *(.text.*)
> > +#endif
> > +#ifdef CONFIG_FUNCTION_ALIGNMENT
> > +       /* Ensure enough distance with the next placed section. */
> > +       . = ALIGN(CONFIG_FUNCTION_ALIGNMENT);
> >  #endif
> >         *(.text.__x86_indirect_thunk_*)
> 
> I continue to fail to see how an alignment directive can guarantee minimum
> distance. In the worst case such a directive inserts nothing at all.

I'm confused, you did provide a RB for this in v4:

https://lore.kernel.org/xen-devel/4cad003f-dda0-4e22-a770-5a5ff56f4d35@suse.com/

Which is basically the same code with a few comments and wording
adjustments.

> IOW
> at the very least there's a non-spelled-out assumption here about the last
> item in the earlier section having suitable alignment and thus, if small
> in size, being suitably padded.

Please bear with me, but I'm afraid I don't understand your concerns.

For livepatch build tools (which is the only consumer of such
alignments) we already have the requirement that a function in order
to be suitable for being live patched must reside in it's own
section.

We do want to aim for functions (even assembly ones) to live in their
own sections in order to be live patched, and to be properly aligned.
However it's also fine for functions to use a different (smaller)
alignment, the livepatch build tools will detect this and use the
alignment reported.

While we want to get to a point where everything that we care to patch
lives in it's own section, and is properly padded to ensure minimal
required space, I don't see why the proposed approach here should be
blocked, as it's a step in the right direction of achieving the
goal.

Granted, there's still assembly code that won't be suitably padded,
but the livepatch build tools won't assume it to be padded.  After
your series to enable assembly annotations we can also make sure the
assembly annotated functions live in separate sections and are
suitably aligned.

> Personally I don't think merely spelling
> out such a requirement would help - it would end up being a trap for
> someone to fall into.

> I'm further curious why .text.__x86_indirect_thunk_* is left past the
> inserted alignment. While pretty unlikely, isn't it in principle possible
> for the thunks there to also need patching? Aren't we instead requiring
> then that assembly functions (and thunks) all be suitably aligned as well?

Those are defined in assembly, so requires CONFIG_FUNCTION_ALIGNMENT
to also be applied to the function entry points in assembly files.

Thanks, Roger.


From xen-devel-bounces@lists.xenproject.org Mon Jan 22 17:40:44 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 22 Jan 2024 17:40:44 +0000
Received: from list by lists.xenproject.org with outflank-mailman.670047.1042631 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rRyHl-0004qa-3s; Mon, 22 Jan 2024 17:40:37 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 670047.1042631; Mon, 22 Jan 2024 17:40:37 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rRyHl-0004qT-1D; Mon, 22 Jan 2024 17:40:37 +0000
Received: by outflank-mailman (input) for mailman id 670047;
 Mon, 22 Jan 2024 17:40:36 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=2apV=JA=cloud.com=roger.pau@srs-se1.protection.inumbo.net>)
 id 1rRyHk-0004e4-1r
 for xen-devel@lists.xenproject.org; Mon, 22 Jan 2024 17:40:36 +0000
Received: from mail-wr1-x429.google.com (mail-wr1-x429.google.com
 [2a00:1450:4864:20::429])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 5906123f-b94d-11ee-98f2-6d05b1d4d9a1;
 Mon, 22 Jan 2024 18:40:35 +0100 (CET)
Received: by mail-wr1-x429.google.com with SMTP id
 ffacd0b85a97d-337cc8e72f5so3167205f8f.1
 for <xen-devel@lists.xenproject.org>; Mon, 22 Jan 2024 09:40:35 -0800 (PST)
Received: from localhost ([213.195.127.68]) by smtp.gmail.com with ESMTPSA id
 n4-20020adffe04000000b00339272c885csm7140634wrr.87.2024.01.22.09.40.34
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 22 Jan 2024 09:40:34 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 5906123f-b94d-11ee-98f2-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1705945235; x=1706550035; darn=lists.xenproject.org;
        h=in-reply-to:content-transfer-encoding:content-disposition
         :mime-version:references:message-id:subject:cc:to:from:date:from:to
         :cc:subject:date:message-id:reply-to;
        bh=q+SrpK51QDdReu10ThtowKMJxCEsI/zF8+AdgSuIm0k=;
        b=YT0WlmeIoWeJ4BkGtDT8508Ck7wFNMbV6sr/yfQ3AtbqeNPvL6hp1uDR7b9KcWq0jF
         ssUALefqlVCB0GME1ZkargADyEhEksHMtPlUDofEbCjRPt5EkSZwfhvZz5yDjL40e5Lo
         iPVCwX18+ex3Fjs639rHk/rqaDdn7YZIfyLTo=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705945235; x=1706550035;
        h=in-reply-to:content-transfer-encoding:content-disposition
         :mime-version:references:message-id:subject:cc:to:from:date
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=q+SrpK51QDdReu10ThtowKMJxCEsI/zF8+AdgSuIm0k=;
        b=vqkjhrD5lOOQy/PEqn8mYyj/5LLDYXpbRLDc5Z3QDJ2zqP8tipHkS82zZ1Xw1+qEgh
         86bYY70WUT26ZP+6vLMAufTojT2C5gctjolOAslnHjRzUc6mq4SIsT5YD1P7+YkUbH7V
         gxLo7Y8k/GP8TjfYeVPClYnDKJHBUQ/b5RSslakUJaRec6S+2HixUYLejlHSVVjJ+6Gb
         ud7DaCU4zaISp0x4X/BZxo9c1tWu/SlnLSHTFtVzOUq9WB7tPanOsDASgsexfDzh8qD9
         fALJP5ZHE56C8+ftvnI22T5+BYBtmTJYBjUYIb+q+duRI8ZQrpImwlyonjnKkjH6FWjG
         PQ0A==
X-Gm-Message-State: AOJu0YySRgK4n5MzF0XupoBTR8WvFEYzDNR6PlO/lmu7K9jnQf1kFRFW
	FavN616m6He/7f/c2m9a3rIvmk/zf87/LSqntwcZhqcfWZGaAOvIVRxRbFT2Xkk=
X-Google-Smtp-Source: AGHT+IGQeYk2Ak8Uvy2LGFsWHFRTG92FyPw3CFgRKzXpIzv84pS9P5uFPnV3I14MwAFIpTU0RHCFNQ==
X-Received: by 2002:a5d:698b:0:b0:339:3f40:ffd9 with SMTP id g11-20020a5d698b000000b003393f40ffd9mr495025wru.127.1705945234793;
        Mon, 22 Jan 2024 09:40:34 -0800 (PST)
Date: Mon, 22 Jan 2024 18:40:33 +0100
From: Roger Pau =?utf-8?B?TW9ubsOp?= <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>,
	Julien Grall <julien@xen.org>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Volodymyr Babchuk <volodymyr_babchuk@epam.com>,
	Bertrand Marquis <bertrand.marquis@arm.com>,
	Bobby Eshleman <bobbyeshleman@gmail.com>,
	Alistair Francis <alistair.francis@wdc.com>,
	Connor Davis <connojdavis@gmail.com>,
	George Dunlap <george.dunlap@citrix.com>,
	Shawn Anastasio <sanastasio@raptorengineering.com>,
	Michal Orzel <michal.orzel@amd.com>
Subject: Re: [PATCH v5 8/8] common: honor CONFIG_CC_SPLIT_SECTIONS also for
 assembly functions
Message-ID: <Za6okXTmLRDqEh_u@macbook>
References: <e4bf47ca-2ae6-1fd4-56a6-e4e777150b64@suse.com>
 <7a133ed9-9d13-4e2c-893a-00c083c8a35d@suse.com>
 <5df1d87d-8e54-4e15-b1fb-46b274cb66ef@suse.com>
 <ZapQoLSOKew5W-Tt@macbook>
 <81752c34-da03-45fc-9d57-9b91bdbfd833@suse.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <81752c34-da03-45fc-9d57-9b91bdbfd833@suse.com>

On Mon, Jan 22, 2024 at 11:50:08AM +0100, Jan Beulich wrote:
> On 19.01.2024 11:36, Roger Pau Monné wrote:
> > On Mon, Jan 15, 2024 at 03:40:19PM +0100, Jan Beulich wrote:
> >> Leverage the new infrastructure in xen/linkage.h to also switch to per-
> >> function sections (when configured), deriving the specific name from the
> >> "base" section in use at the time FUNC() is invoked.
> >>
> >> Signed-off-by: Jan Beulich <jbeulich@suse.com>
> >> ---
> >> TBD: Since we use .subsection in UNLIKELY_START(), a perhaps not really
> >>      wanted side effect of this change is that respective out-of-line
> >>      code now moves much closer to its original (invoking) code.
> > 
> > Hm, I'm afraid I don't have much useful suggestions here.
> > 
> >> TBD: Of course something with the same overall effect, but less
> >>      impactful might do in Config.mk. E.g. $(filter-out -D%,$(3))
> >>      instead of $(firstword (3)).
> > 
> > I don't have a strong opinion re those two options  My preference
> > however (see below for reasoning) would be to put this detection in
> > Kconfig.
> > 
> >> TBD: On top of Roger's respective patch (for livepatch), also respect
> >>      CONFIG_FUNCTION_ALIGNMENT.
> > 
> > I think you can drop that, as the series is blocked.
> 
> Considering the series here has been pending for quite some time, too,
> I guess I'd like to keep it just in case that other functionality
> becomes unblocked or available by some other means, even if only to
> remind myself.

So as you have seen I've posted a new version of just the function
alignment patch, that I expected wasn't controversial.

> >> --- a/xen/Makefile
> >> +++ b/xen/Makefile
> >> @@ -409,6 +409,9 @@ AFLAGS += -D__ASSEMBLY__
> >>  
> >>  $(call cc-option-add,AFLAGS,CC,-Wa$$(comma)--noexecstack)
> >>  
> >> +# Check to see whether the assmbler supports the --sectname-subst option.
> >> +$(call cc-option-add,AFLAGS,CC,-Wa$$(comma)--sectname-subst -DHAVE_AS_SECTNAME_SUBST)
> > 
> > I guess you already know what I'm going to comment on.  I think this
> > would be clearer if it was a Kconfig option.  For once because I think
> > we should gate livapatch support on the option being available, and
> > secondly it would avoid having to pass the extra -D around.
> > 
> > I think it's relevant to have a consistent set of build tool options
> > requirements for livepatch support, so that when enabled the support
> > is consistent across builds.  With this approach livepatch could be
> > enabled in Kconfig, but depending on the tools support the resulting
> > binary might or might not support live patching of assembly code.
> > Such behavior is IMO unhelpful from a user PoV, and can lead to
> > surprises down the road.
> 
> I can see the desire to have LIVEPATCH grow such a dependency. Yet there
> is the bigger still open topic of the criteria towards what, if anything,
> to probe for in Kconfig, what, if anything, to probe for in Makefile, and
> which of the probing perhaps do in both places. I'm afraid my attempts to
> move us closer to a resolution (topic on summit, making proposals on
> list) have utterly failed. IOW I don't currently see how the existing
> disagreement there can be resolved, which will result in me to continue
> following the (traditional) Makefile approach unless I clearly view
> Kconfig superior in a particular case. I could perhaps be talked into
> following a "mixed Kconfig/Makefile model", along the lines of "x86:
> convert CET tool chain feature checks to mixed Kconfig/Makefile model",
> albeit I'm sure you're aware there are issues to sort out there, which I
> see no value in putting time into as long as I can't expect things to
> make progress subsequently.

I think there are more subtle cases where it's indeed arguable that
putting it in Kconfig or a Makefile makes no difference from a user
experience PoV, hence in the context here I do believe it wants to be
in Kconfig as LIVEPATCH can be make dependent on it.

> Dropping this patch, while an option, would seem undesirable to me, since
> even without Kconfig probing using new enough tool chains the splitting
> would yield reliable results, and provide - imo - an improvement over
> what we have right now.

I could send a followup afterwards to arrange for the check to be in
Kconfig, but it would feel a bit odd to me this is not done in the
first place.

I don't want to block the patch because I think it's useful, so worst
case I'm willing to give my Ack and provide an alternative Kconfig
based patch afterwards.

Thanks, Roger.


From xen-devel-bounces@lists.xenproject.org Mon Jan 22 18:17:35 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 22 Jan 2024 18:17:35 +0000
Received: from list by lists.xenproject.org with outflank-mailman.670054.1042649 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rRyrT-0002jG-4I; Mon, 22 Jan 2024 18:17:31 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 670054.1042649; Mon, 22 Jan 2024 18:17:31 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rRyrS-0002ic-Tu; Mon, 22 Jan 2024 18:17:30 +0000
Received: by outflank-mailman (input) for mailman id 670054;
 Mon, 22 Jan 2024 18:17:30 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=EdLN=JA=citrix.com=prvs=74474809d=Andrew.Cooper3@srs-se1.protection.inumbo.net>)
 id 1rRyrS-0002ee-7u
 for xen-devel@lists.xenproject.org; Mon, 22 Jan 2024 18:17:30 +0000
Received: from esa4.hc3370-68.iphmx.com (esa4.hc3370-68.iphmx.com
 [216.71.155.144]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 80a42b0b-b952-11ee-98f2-6d05b1d4d9a1;
 Mon, 22 Jan 2024 19:17:29 +0100 (CET)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 80a42b0b-b952-11ee-98f2-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple;
  d=citrix.com; s=securemail; t=1705947449;
  h=from:to:cc:subject:date:message-id:in-reply-to:
   references:mime-version:content-transfer-encoding;
  bh=HFRrMhhOeGY2Gr1UMSgwTgZBg4tGjjmtfbyh4y4EHqU=;
  b=OtOw3HJSyQn/Nkm+n/l9kJyUpbf4iF7iWP+pQL3WLw3RnlQJrXKe+AvC
   CRJe+S1zGgvahZF9DpAKyVMK9tRQeuYNTXnvWVmSJ8aCpwhUfgnb8t2fB
   Xco5j4Q8+UXk01lazepQ2y3w8Pg4AfpwE234yuHokJXSEi+Dx1i2i29mG
   8=;
X-CSE-ConnectionGUID: FCbAE902SjqaC0PT4u4YkQ==
X-CSE-MsgGUID: OnkEHIj2TSiL73DBDu9phg==
Authentication-Results: esa4.hc3370-68.iphmx.com; dkim=none (message not signed) header.i=none
X-SBRS: 4.0
X-MesageID: 132366780
X-Ironport-Server: esa4.hc3370-68.iphmx.com
X-Remote-IP: 162.221.159.70
X-Policy: $RELAYED
X-ThreatScanner-Verdict: Negative
IronPort-Data: A9a23:PWfb4q/5HpDMyDNvy+UVDrUD3X6TJUtcMsCJ2f8bNWPcYEJGY0x3z
 zNKXWmFbqyJZWr2fogkatmwpkoC7JDUnNRqGlQ4rn08E34SpcT7XtnIdU2Y0wF+jCHgZBk+s
 5hBMImowOQcFCK0SsKFa+C5xZVE/fjVAOK6UKidYnwZqTZMEE8JkQhkl/MynrlmiN24BxLlk
 d7pqojUNUTNNwRcawr40Ird7ksy1BjOkGlA5ABmPKoS5AS2e0Q9V/rzG4ngdxMUfaEMdgKKb
 76r5K20+Grf4yAsBruN+losWhRXKlJ6FVHmZkt+A8BOsDAbzsAB+v9T2M4nQVVWk120c+VZk
 72hg3ASpTABZcUgkMxFO/VR/roX0aduoNcrKlDn2SCfItGvn9IBDJyCAWlvVbD09NqbDklg3
 vYxBWFVNCuBnuudmIqHFvQwt8caeZyD0IM34hmMzBncBPciB5vCX7/L9ZlT2zJYasJmRKiEI
 ZBDMHw2MUWGPEUn1lQ/UfrSmM+BgHXlfiIeg1WSvactuEDYzRBr0airO93QEjCPbZwOxB3G+
 D2WpwwVBDk9Mt+y6RuHqE6Xh8uQxg/RdJ9DDL23o6sCbFq7mTVIVUx+uUGAiem0jAuyVsxSL
 2QQ+zEytu4i+UqzVN7/Uhak5nmesXY0efBdDuk74wGl0bfP7kCSAW1sZiFFQMwrsokxXzNC/
 lyOmcngCXpwsbmWYXWH/7yQoHW5Pi19EIMZTXZaF01fuYCl+dxiyE2XJjp+LEKrpvPeExjdk
 mjQlyonjp5LtfJXyvmK/mmS1lpAuaP1oh4JChT/Bz39s1IjNND9OuSVBU7nAeGsxbt1r2VtX
 1BewqByFMhUUfmweNWlGY3h5o2B6fefKyH7ilVyBZQn/DnF0yf8Jd0AvmskdBkxbpZsldrVj
 Kj74F052XOuFCHyMf8fj3yZVazGMpQM5fy6D6uJP7Kik7B6dROd/TEGWHN8K1vFyRB2+YlmY
 MfzTCpZJSpCYUiR5GbsFrh1PH5C7nxW+F4/srinl0n6jODPNSD9pHVsGALmU93VJZis+G39m
 +uz/ePTo/mDeIUSuhXqzLM=
IronPort-HdrOrdr: A9a23:e3arv6HrG1oFJQ5tpLqE0MeALOsnbusQ8zAXP0AYc3Jom6uj5r
 mTdZUgpHnJYVkqOE3I9ertBEDEewK4yXcX2/h3AV7BZniEhILAFugLhuGO/9SjIVybygc079
 YZT0EUMrzN5DZB4voSmDPIceod/A==
X-Talos-CUID: 9a23:5SLJpWP203BX8e5DdgJt3WNFQpoecGTU5y/oHxOlVVdqcejA
X-Talos-MUID: =?us-ascii?q?9a23=3A8s9yQQ4L6miWseHlVPZB43alxoxP5aeDKGEPy6k?=
 =?us-ascii?q?9uu3bbgBaFyrMlDS4F9o=3D?=
X-IronPort-AV: E=Sophos;i="6.05,211,1701147600"; 
   d="scan'208";a="132366780"
From: Andrew Cooper <andrew.cooper3@citrix.com>
To: Xen-devel <xen-devel@lists.xenproject.org>
CC: Andrew Cooper <andrew.cooper3@citrix.com>, Jan Beulich
	<JBeulich@suse.com>, =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?=
	<roger.pau@citrix.com>, Wei Liu <wl@xen.org>, Konrad Rzeszutek Wilk
	<konrad.wilk@oracle.com>, Ross Lagerwall <ross.lagerwall@citrix.com>
Subject: [PATCH 1/3] x86/entry: Fix ELF metadata for NMI and handle_ist_exception
Date: Mon, 22 Jan 2024 18:17:11 +0000
Message-ID: <20240122181714.1543738-2-andrew.cooper3@citrix.com>
X-Mailer: git-send-email 2.30.2
In-Reply-To: <20240122181714.1543738-1-andrew.cooper3@citrix.com>
References: <20240122181714.1543738-1-andrew.cooper3@citrix.com>
MIME-Version: 1.0
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit

handle_ist_exception isn't part of the NMI handler, just like handle_exception
isn't part of #PF.

Fixes: b3a9037550df ("x86: annotate entry points with type and size")
Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
---
CC: Jan Beulich <JBeulich@suse.com>
CC: Roger Pau Monné <roger.pau@citrix.com>
CC: Wei Liu <wl@xen.org>
CC: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
CC: Ross Lagerwall <ross.lagerwall@citrix.com>
---
 xen/arch/x86/x86_64/entry.S | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/xen/arch/x86/x86_64/entry.S b/xen/arch/x86/x86_64/entry.S
index 482c91d4f533..c3f6b667a72a 100644
--- a/xen/arch/x86/x86_64/entry.S
+++ b/xen/arch/x86/x86_64/entry.S
@@ -1023,7 +1023,9 @@ FUNC(entry_NMI)
         ENDBR64
         pushq $0
         movl  $X86_EXC_NMI, 4(%rsp)
-handle_ist_exception:
+END(entry_NMI)
+
+FUNC(handle_ist_exception)
         ALTERNATIVE "", clac, X86_FEATURE_XEN_SMAP
         SAVE_ALL
 
@@ -1150,7 +1152,7 @@ handle_ist_exception:
         ASSERT_CONTEXT_IS_XEN
         jmp   restore_all_xen
 #endif
-END(entry_NMI)
+END(handle_ist_exception)
 
 FUNC(entry_MC)
         ENDBR64
-- 
2.30.2



From xen-devel-bounces@lists.xenproject.org Mon Jan 22 18:17:35 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 22 Jan 2024 18:17:35 +0000
Received: from list by lists.xenproject.org with outflank-mailman.670055.1042662 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rRyrU-00039U-C9; Mon, 22 Jan 2024 18:17:32 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 670055.1042662; Mon, 22 Jan 2024 18:17:32 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rRyrU-00039J-8w; Mon, 22 Jan 2024 18:17:32 +0000
Received: by outflank-mailman (input) for mailman id 670055;
 Mon, 22 Jan 2024 18:17:31 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=EdLN=JA=citrix.com=prvs=74474809d=Andrew.Cooper3@srs-se1.protection.inumbo.net>)
 id 1rRyrT-0002ee-8A
 for xen-devel@lists.xenproject.org; Mon, 22 Jan 2024 18:17:31 +0000
Received: from esa4.hc3370-68.iphmx.com (esa4.hc3370-68.iphmx.com
 [216.71.155.144]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 813a7f90-b952-11ee-98f2-6d05b1d4d9a1;
 Mon, 22 Jan 2024 19:17:30 +0100 (CET)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 813a7f90-b952-11ee-98f2-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple;
  d=citrix.com; s=securemail; t=1705947450;
  h=from:to:cc:subject:date:message-id:in-reply-to:
   references:mime-version:content-transfer-encoding;
  bh=6dfsqszFswrxwOrMixowdJmK44p//CqfM9fyArS7Qeg=;
  b=V5Bo5kjpOnlXaew3m8eYrh8fSkSvlZJvQuIwKGAl+9i4KNsMi88Mbbk8
   tsviSbLUeULbEjUuidtfzf1zEV5h+iNQ0BMUl0DGLfQWCoNJzfQXfBV2o
   ELixMzpVikm4nMP9NpjSGzlc8Urdu1y7ZMVEMVuPtux8yxxip7mQ7ZaT6
   4=;
X-CSE-ConnectionGUID: FCbAE902SjqaC0PT4u4YkQ==
X-CSE-MsgGUID: yXgy9DN9QV6oaaiQlBjpxA==
Authentication-Results: esa4.hc3370-68.iphmx.com; dkim=none (message not signed) header.i=none
X-SBRS: 4.0
X-MesageID: 132366782
X-Ironport-Server: esa4.hc3370-68.iphmx.com
X-Remote-IP: 162.221.159.70
X-Policy: $RELAYED
X-ThreatScanner-Verdict: Negative
IronPort-Data: A9a23:roncuaxofVltu9j6PzZ6t+dqxirEfRIJ4+MujC+fZmUNrF6WrkUGx
 mIdCjyGOqzZYWGmeoolbIqw9EJVuZTQytJkGwFlryAxQypGp/SeCIXCJC8cHc8wwu7rFxs7s
 ppEOrEsCOhuExcwcz/0auCJQUFUjPzOHvykTrecZkidfCc8IA85kxVvhuUltYBhhNm9Emult
 Mj75sbSIzdJ4RYtWo4vw/zF8E4HUMja4mtC4gRnP6kT5zcyqlFOZH4hDfDpR5fHatE88t6SH
 47r0Ly/92XFyBYhYvvNfmHTKxBirhb6ZGBiu1IOM0SQqkEqSh8ai87XAME0e0ZP4whlqvgqo
 Dl7WT5cfi9yVkHEsLx1vxC1iEiSN4UekFPMCSDXXcB+UyQq2pYjqhljJBheAGEWxgp4KU9l/
 9U1eWhXVRKajsnu+I7nV7Vdhf12eaEHPKtH0p1h5TTQDPJgSpHfWaTao9Rf2V/chOgXQ6yYP
 ZBAL2MyPVKfO3WjOX9OYH46tM6uimPybHtzr1WNqLBsy2PS0BZwwP7mN9+9ltmiHJ4PxRjG+
 TKcl4j/KgAqO83O5RzUy0zygebGnBr/coAKBJTto5aGh3XMnzdOWXX6T2CTsfS/z0KzRd9bA
 0gV4TY167g/8lSxSdvwVAH+p2SL1jY+cddNF+wx6CmW17HZpQ2eAwAsUTppeNEg8sgsSlQC1
 ViPhdrlQyNutL69TmiU/bOZ6zi1PEAowXQqPHFeC1Ffup+6/dB10Uqnostf/LCdoPb/MByhm
 2qxrjE3rO0rsZIWi5S4xAWS696znaQlXjLZ9y2OATr4v1kpOtb4D7FE/2Q3+hqpEWp4crVil
 CJd8yRmxLpSZaxhbQTUKAn3IJmn5uyeLBrXikN1Ep8q+lyFoiH7INAOumsueh81Yq7onAMFh
 2eK52tsCGJ7ZiP2PcebnarvYyjV8UQQPYu8Da2FBja/SpNwaBWG7ElTWKJk5Ei0yBJEufhma
 f+mnTOEUS5y5VJPkGDnGI/wENYDmkgD+I8kbcyjkkn6i+vPOhZ4i94taTOzUwzw14vcyC29z
 jqVH5LiJ8l3OAEmXhTqzA==
IronPort-HdrOrdr: A9a23:OHXhxq6D3PYljILgEQPXwPDXdLJyesId70hD6qhwISY6TiX+rb
 HWoB17726TtN9/YhEdcLy7VJVoBEmskKKdgrNhWotKPjOW21dARbsKheCJrgEIWReOktK1vZ
 0QC5SWY+eQMbEVt6nHCXGDYrQd/OU=
X-Talos-CUID: 9a23:wNHhH29hsSgmRGSfw4eVv2A/EOkIIyWH93XJKmTgMVo1VeGkSmbFrQ==
X-Talos-MUID: 9a23:1G9CMgrjcy/NGp8hRlIezyBSO9Y5z4L/MX5TlpwPuvCAHy5oKx7I2Q==
X-IronPort-AV: E=Sophos;i="6.05,211,1701147600"; 
   d="scan'208";a="132366782"
From: Andrew Cooper <andrew.cooper3@citrix.com>
To: Xen-devel <xen-devel@lists.xenproject.org>
CC: Andrew Cooper <andrew.cooper3@citrix.com>, Jan Beulich
	<JBeulich@suse.com>, =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?=
	<roger.pau@citrix.com>, Wei Liu <wl@xen.org>, Konrad Rzeszutek Wilk
	<konrad.wilk@oracle.com>, Ross Lagerwall <ross.lagerwall@citrix.com>
Subject: [PATCH 2/3] x86/entry: Make #PF/NMI/INT0x82 more amenable to livepatching
Date: Mon, 22 Jan 2024 18:17:12 +0000
Message-ID: <20240122181714.1543738-3-andrew.cooper3@citrix.com>
X-Mailer: git-send-email 2.30.2
In-Reply-To: <20240122181714.1543738-1-andrew.cooper3@citrix.com>
References: <20240122181714.1543738-1-andrew.cooper3@citrix.com>
MIME-Version: 1.0
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit

It is bad form to have inter-function fallthrough.  It only functions right
now because alignment padding bytes are NOPs.

However, it also interferes with livepatching binary diffs, because the
implicit grouping of the two functions isn't expressed in the ELF metadata.

Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
---
CC: Jan Beulich <JBeulich@suse.com>
CC: Roger Pau Monné <roger.pau@citrix.com>
CC: Wei Liu <wl@xen.org>
CC: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
CC: Ross Lagerwall <ross.lagerwall@citrix.com>
---
 xen/arch/x86/x86_64/compat/entry.S | 1 +
 xen/arch/x86/x86_64/entry.S        | 3 +++
 2 files changed, 4 insertions(+)

diff --git a/xen/arch/x86/x86_64/compat/entry.S b/xen/arch/x86/x86_64/compat/entry.S
index 49811a56e965..4fbd89cea1a9 100644
--- a/xen/arch/x86/x86_64/compat/entry.S
+++ b/xen/arch/x86/x86_64/compat/entry.S
@@ -29,6 +29,7 @@ FUNC(entry_int82)
 
         mov   %rsp, %rdi
         call  do_entry_int82
+        jmp   compat_test_all_events
 END(entry_int82)
 
 /* %rbx: struct vcpu */
diff --git a/xen/arch/x86/x86_64/entry.S b/xen/arch/x86/x86_64/entry.S
index c3f6b667a72a..fc64ef1fd460 100644
--- a/xen/arch/x86/x86_64/entry.S
+++ b/xen/arch/x86/x86_64/entry.S
@@ -723,7 +723,9 @@ END(common_interrupt)
 FUNC(entry_PF)
         ENDBR64
         movl  $X86_EXC_PF, 4(%rsp)
+        jmp   handle_exception
 END(entry_PF)
+
 /* No special register assumptions. */
 FUNC(handle_exception, 0)
         ALTERNATIVE "", clac, X86_FEATURE_XEN_SMAP
@@ -1023,6 +1025,7 @@ FUNC(entry_NMI)
         ENDBR64
         pushq $0
         movl  $X86_EXC_NMI, 4(%rsp)
+        jmp   handle_ist_exception
 END(entry_NMI)
 
 FUNC(handle_ist_exception)
-- 
2.30.2



From xen-devel-bounces@lists.xenproject.org Mon Jan 22 18:17:35 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 22 Jan 2024 18:17:35 +0000
Received: from list by lists.xenproject.org with outflank-mailman.670056.1042672 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rRyrV-0003Oa-Ko; Mon, 22 Jan 2024 18:17:33 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 670056.1042672; Mon, 22 Jan 2024 18:17:33 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rRyrV-0003OR-Gg; Mon, 22 Jan 2024 18:17:33 +0000
Received: by outflank-mailman (input) for mailman id 670056;
 Mon, 22 Jan 2024 18:17:32 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=EdLN=JA=citrix.com=prvs=74474809d=Andrew.Cooper3@srs-se1.protection.inumbo.net>)
 id 1rRyrU-0002ee-8S
 for xen-devel@lists.xenproject.org; Mon, 22 Jan 2024 18:17:32 +0000
Received: from esa4.hc3370-68.iphmx.com (esa4.hc3370-68.iphmx.com
 [216.71.155.144]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 81d3cb62-b952-11ee-98f2-6d05b1d4d9a1;
 Mon, 22 Jan 2024 19:17:31 +0100 (CET)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 81d3cb62-b952-11ee-98f2-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple;
  d=citrix.com; s=securemail; t=1705947451;
  h=from:to:cc:subject:date:message-id:in-reply-to:
   references:mime-version:content-transfer-encoding;
  bh=OgCBjEopm2h8jWG+9/Xhya3FZKUqHbnhk17Gv+1BDRU=;
  b=c1wKeQr0dw9JcBsuuJitQK7MoW789dNY0Vpx5z6o+WOLN30l59ooqtOG
   v7OnkrLK3acuup3c+6QYUJ/YlTStHfAfuMpMbZmY6aGb4E7xzzQyBW2n9
   SEa260pH5YIvtSNeu9SpsFLEM/WVJ0uPWOAl7QThfXX5rz0MdpGcspyiD
   U=;
X-CSE-ConnectionGUID: FCbAE902SjqaC0PT4u4YkQ==
X-CSE-MsgGUID: r6KQhKQYT5u7qdLl7+y8Yg==
Authentication-Results: esa4.hc3370-68.iphmx.com; dkim=none (message not signed) header.i=none
X-SBRS: 4.0
X-MesageID: 132366785
X-Ironport-Server: esa4.hc3370-68.iphmx.com
X-Remote-IP: 162.221.159.70
X-Policy: $RELAYED
X-ThreatScanner-Verdict: Negative
IronPort-Data: A9a23:BIBct6zPfBFey5hgD0d6t+dqxirEfRIJ4+MujC+fZmUNrF6WrkVRx
 jNJC2CEPK2OZzf3Ktl/aIm//UMO6pLSzoU3HQNsqSAxQypGp/SeCIXCJC8cHc8wwu7rFxs7s
 ppEOrEsCOhuExcwcz/0auCJQUFUjPzOHvykTrecZkidfCc8IA85kxVvhuUltYBhhNm9Emult
 Mj75sbSIzdJ4RYtWo4vw/zF8E4HUMja4mtC4gRnP6kT5zcyqlFOZH4hDfDpR5fHatE88t6SH
 47r0Ly/92XFyBYhYvvNfmHTKxBirhb6ZGBiu1IOM0SQqkEqSh8ai87XAME0e0ZP4whlqvgqo
 Dl7WT5cfi9yVkHEsLx1vxC1iEiSN4UekFPMCSDXXcB+UyQq2pYjqhljJBheAGEWxgp4KU9l/
 9U1eWhXVRKajsnu+I7nV7Vdhf12eaEHPKtH0p1h5TTQDPJgSpHfWaTao9Rf2V/chOgXQ6yYP
 ZBAL2MyPVKfO3WjOX9OYH46tM6uimPybHtzr1WNqLBsy2PS0BZwwP7mN9+9ltmiHJ4PxRjG+
 TKbl4j/KgtEF+Wf6gO0zi+x2fbDuSekG5NCJbLto5aGh3XMnzdOWXX6T2CTsfS/z0KzRd9bA
 0gV4TY167g/8lSxSdvwVAH+p2SL1jY+cddNF+wx6CmW17HZpQ2eAwAsUTppeNEg8sgsSlQC1
 ViPhdrlQyNutL69TmiU/bOZ6zi1PEAowXQqPHFeC1Ffup+6/dB10Uqnostf/LCdoPb/MByhm
 2qxrjE3rO0rsZIWi5S4xAWS696znaQlXjLZ9y2OATr4v1kpOtb4D7FE/2Q3+hqpEWp4crVil
 CJd8yRmxLpSZaxhbQTUKAn3IJmn5uyeLBrXikN1Ep8q+lyFoiH7INAOumsueh81Yq7onAMFh
 2eK52tsCGJ7ZiP2PcebnarvYyjV8UQQPYu8Da2FBja/SpNwaBWG7ElTWKJk5Ei0yBJEufhma
 f+mnTOEUS5y5VJPkGDnGI/wENYDmkgD+I8kbcyjkkn6i+vPOhZ4i94taTOzUwzw14vcyC29z
 jqVH5LiJ8l3OAEmXhTqzA==
IronPort-HdrOrdr: A9a23:TOX3b69/u1IOLTqRQnluk+DgI+orL9Y04lQ7vn2YSXRuHPBw8P
 re5cjztCWE7gr5N0tBpTntAsW9qDbnhPtICOoqTNCftWvdyQiVxehZhOOIqVDd8m/Fh4pgPM
 9bAtBD4bbLbGSS4/yU3ODBKadD/OW6
X-Talos-CUID: =?us-ascii?q?9a23=3AcrUpZmuOJ0p6gWcPE3nt5PmK6IsLWXf04SaIeXS?=
 =?us-ascii?q?6EG9CEIWpFULMyaBdxp8=3D?=
X-Talos-MUID: =?us-ascii?q?9a23=3AFj8AAw7ddN+7KNydiG8EQQVHxoxyvYeXCGM0oKl?=
 =?us-ascii?q?bppadOQh0ZHSM3AW4F9o=3D?=
X-IronPort-AV: E=Sophos;i="6.05,211,1701147600"; 
   d="scan'208";a="132366785"
From: Andrew Cooper <andrew.cooper3@citrix.com>
To: Xen-devel <xen-devel@lists.xenproject.org>
CC: Andrew Cooper <andrew.cooper3@citrix.com>, Jan Beulich
	<JBeulich@suse.com>, =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?=
	<roger.pau@citrix.com>, Wei Liu <wl@xen.org>, Konrad Rzeszutek Wilk
	<konrad.wilk@oracle.com>, Ross Lagerwall <ross.lagerwall@citrix.com>
Subject: [PATCH 2/3] x86/entry: Make #PF/NMI more amenable to livepatching
Date: Mon, 22 Jan 2024 18:17:13 +0000
Message-ID: <20240122181714.1543738-4-andrew.cooper3@citrix.com>
X-Mailer: git-send-email 2.30.2
In-Reply-To: <20240122181714.1543738-1-andrew.cooper3@citrix.com>
References: <20240122181714.1543738-1-andrew.cooper3@citrix.com>
MIME-Version: 1.0
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit

It is bad form to have inter-function fallthrough.  It only functions right
now because alignment padding bytes are NOPs.

However, it also interferes with livepatching binary diffs, because the
implicit grouping of the two functions isn't expressed in the ELF metadata.

Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
---
CC: Jan Beulich <JBeulich@suse.com>
CC: Roger Pau Monné <roger.pau@citrix.com>
CC: Wei Liu <wl@xen.org>
CC: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
CC: Ross Lagerwall <ross.lagerwall@citrix.com>
---
 xen/arch/x86/x86_64/entry.S | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/xen/arch/x86/x86_64/entry.S b/xen/arch/x86/x86_64/entry.S
index c3f6b667a72a..fc64ef1fd460 100644
--- a/xen/arch/x86/x86_64/entry.S
+++ b/xen/arch/x86/x86_64/entry.S
@@ -723,7 +723,9 @@ END(common_interrupt)
 FUNC(entry_PF)
         ENDBR64
         movl  $X86_EXC_PF, 4(%rsp)
+        jmp   handle_exception
 END(entry_PF)
+
 /* No special register assumptions. */
 FUNC(handle_exception, 0)
         ALTERNATIVE "", clac, X86_FEATURE_XEN_SMAP
@@ -1023,6 +1025,7 @@ FUNC(entry_NMI)
         ENDBR64
         pushq $0
         movl  $X86_EXC_NMI, 4(%rsp)
+        jmp   handle_ist_exception
 END(entry_NMI)
 
 FUNC(handle_ist_exception)
-- 
2.30.2



From xen-devel-bounces@lists.xenproject.org Mon Jan 22 18:17:35 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 22 Jan 2024 18:17:35 +0000
Received: from list by lists.xenproject.org with outflank-mailman.670053.1042642 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rRyrS-0002gL-QQ; Mon, 22 Jan 2024 18:17:30 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 670053.1042642; Mon, 22 Jan 2024 18:17:30 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rRyrS-0002gE-MY; Mon, 22 Jan 2024 18:17:30 +0000
Received: by outflank-mailman (input) for mailman id 670053;
 Mon, 22 Jan 2024 18:17:29 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=EdLN=JA=citrix.com=prvs=74474809d=Andrew.Cooper3@srs-se1.protection.inumbo.net>)
 id 1rRyrR-0002ee-IW
 for xen-devel@lists.xenproject.org; Mon, 22 Jan 2024 18:17:29 +0000
Received: from esa4.hc3370-68.iphmx.com (esa4.hc3370-68.iphmx.com
 [216.71.155.144]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 7f6d6917-b952-11ee-98f2-6d05b1d4d9a1;
 Mon, 22 Jan 2024 19:17:28 +0100 (CET)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 7f6d6917-b952-11ee-98f2-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple;
  d=citrix.com; s=securemail; t=1705947448;
  h=from:to:cc:subject:date:message-id:mime-version:
   content-transfer-encoding;
  bh=UOoglNsFMfZVcHPwpDLLBcSo2RQx5ClWaZKuA5F9ss8=;
  b=S4UQWbos//390ObDMIBlrX5rMP2WhEp8W90O8swoU1ogx4qPdKq6UnPw
   DtJOsyyBfyHzeyg2wqGa7HVGjRCjMxlErIU+ZlUKG9k5f+lbUaG1HrlHh
   GxXoB8YmIZ0Ttih8kG3Uu0b0x/sIwUUYhQxIXn2IIYivpBvr6Q49lgMna
   Q=;
X-CSE-ConnectionGUID: FCbAE902SjqaC0PT4u4YkQ==
X-CSE-MsgGUID: 5wRHdVzFSXuDO5oZp51RKg==
Authentication-Results: esa4.hc3370-68.iphmx.com; dkim=none (message not signed) header.i=none
X-SBRS: 4.0
X-MesageID: 132366779
X-Ironport-Server: esa4.hc3370-68.iphmx.com
X-Remote-IP: 162.221.159.70
X-Policy: $RELAYED
X-ThreatScanner-Verdict: Negative
IronPort-Data: A9a23:POnXvqtb9QdNhken1SwIdkxotufnVAteMUV32f8akzHdYApBsoF/q
 tZmKWqBOP6PZGvyeNlwbY+19x4EupGAmoAyHAA+qigwQSoS+JbJXdiXEBz9bniYRiHhoOCLz
 O1FM4Wdc5pkJpP4jk3wWlQ0hSAkjclkfpKlVaicfHg3HFc4IMsYoUoLs/YjhYJ1isSODQqIu
 Nfjy+XSI1bg0DNvWo4uw/vrRChH4rKq5Vv0gnRkPaoX5AaEziFOZH4iDfrZw0XQE9E88tGSH
 44v/JnhlkvF8hEkDM+Sk7qTWiXmlZaLYGBiIlIPM0STqkAqSh4ai87XB9JFAatjsB2bnsgZ9
 Tl4ncfYpTHFnEH7sL91vxFwS0mSNEDdkVPNCSDXXce7lyUqf5ZwqhnH4Y5f0YAwo45K7W9yG
 fMwBhsHRz3S37iNwquyYbFUupg+cPjoBdZK0p1g5Wmx4fcORJnCR+PB5MNC3Sd2jcdLdRrcT
 5NHM3w1Nk2GOkAefAhPYH49tL7Aan3XWjtUsl+K44Ew5HDe1ldZ27nxKtvFPNeNQK25m27B/
 TidoTqmXUBy2Nq3lCW/0n6SlMH0rT7Xf98VJqXlr8RJjwjGroAUIEJPDgbqyRWjsWauVtQaJ
 0EK9y4Gqakp6FftXtT7Rwe/onOPolgbQdU4O88Q5RyJy6HUyx2EHWVCRTlEAPQ5sOcmSDps0
 UWG9/vqAjp1ubHTVnOZ9Z+Ttzq5PSVTJmgHDRLoViNcvYOl+ttqyEuSH5A8SMZZk+EZBxne6
 DqjgXlm3Y4RlMcgj52HoU2bsjGV882hohEO2unHYo60xlomPNP0Pdz2sQWz0BpWEGqOorC8U
 Jk4dyu2trlm4WmlznDlfQn0NOjBCwy5GDPdm0VzOJIq6i6g/XWuFagJv2kjdBkzaJZaIWO5C
 KM2he+2zMYNVEZGkIctO97hYyjU5faI+SvZugD8MYMVP8kZmP6v9yByf0+At13QfLwXufhnY
 /+zKJ/8ZUv2/Iw7lFJasc9Bi+50rs3/rEuPLa3GI+OPjeLDOSPPGOZbWLZMB8hghJ65TMzu2
 443H6O3J993CYUSvgG/HVYvEG03
IronPort-HdrOrdr: A9a23:hCmENaA7gOuK5PnlHemg55DYdb4zR+YMi2TC1yhKJyC9Ffbo8P
 xG/c5rsSMc5wxwZJhNo7y90cq7MBbhHPxOkOos1N6ZNWGM0gaVxelZnO3fKlbbehEWmNQz6U
 4ZSdkdNOHN
X-Talos-CUID: =?us-ascii?q?9a23=3A40l/OWslj6GeWXlJoJBB2G1J6IsLWXf04SaIeXS?=
 =?us-ascii?q?6EG9CEIWpFULMyaBdxp8=3D?=
X-Talos-MUID: 9a23:TIh+OAZ//GW3ZeBT6iDWpD1cJulT07mCLx0Ko41b4vOnOnkl
X-IronPort-AV: E=Sophos;i="6.05,211,1701147600"; 
   d="scan'208";a="132366779"
From: Andrew Cooper <andrew.cooper3@citrix.com>
To: Xen-devel <xen-devel@lists.xenproject.org>
CC: Andrew Cooper <andrew.cooper3@citrix.com>, Jan Beulich
	<JBeulich@suse.com>, =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?=
	<roger.pau@citrix.com>, Wei Liu <wl@xen.org>, Konrad Rzeszutek Wilk
	<konrad.wilk@oracle.com>, Ross Lagerwall <ross.lagerwall@citrix.com>
Subject: [PATCH 0/3] x86/entry: ELF fixes and improvments
Date: Mon, 22 Jan 2024 18:17:10 +0000
Message-ID: <20240122181714.1543738-1-andrew.cooper3@citrix.com>
X-Mailer: git-send-email 2.30.2
MIME-Version: 1.0
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit

Patch 1 is a bugfix.  Patches 2 and 3 are to improve livepatchability.

Andrew Cooper (3):
  x86/entry: Fix ELF metadata for NMI and handle_ist_exception
  x86/entry: Make #PF/NMI/INT0x82 more amenable to livepatching
  x86/entry: Make intra-funciton symbols properly local

 xen/arch/x86/x86_64/compat/entry.S | 21 ++++++++++----------
 xen/arch/x86/x86_64/entry.S        | 31 +++++++++++++++++-------------
 2 files changed, 29 insertions(+), 23 deletions(-)


base-commit: 4900c939cb9b876c51cfc7a4c854f54c722a30b5
-- 
2.30.2



From xen-devel-bounces@lists.xenproject.org Mon Jan 22 18:17:36 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 22 Jan 2024 18:17:36 +0000
Received: from list by lists.xenproject.org with outflank-mailman.670057.1042682 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rRyrY-0003kf-Rj; Mon, 22 Jan 2024 18:17:36 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 670057.1042682; Mon, 22 Jan 2024 18:17:36 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rRyrY-0003kQ-Nr; Mon, 22 Jan 2024 18:17:36 +0000
Received: by outflank-mailman (input) for mailman id 670057;
 Mon, 22 Jan 2024 18:17:34 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=EdLN=JA=citrix.com=prvs=74474809d=Andrew.Cooper3@srs-se1.protection.inumbo.net>)
 id 1rRyrW-0003Bi-Rj
 for xen-devel@lists.xenproject.org; Mon, 22 Jan 2024 18:17:34 +0000
Received: from esa4.hc3370-68.iphmx.com (esa4.hc3370-68.iphmx.com
 [216.71.155.144]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 80b7c7d1-b952-11ee-9b0f-b553b5be7939;
 Mon, 22 Jan 2024 19:17:30 +0100 (CET)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 80b7c7d1-b952-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple;
  d=citrix.com; s=securemail; t=1705947450;
  h=from:to:cc:subject:date:message-id:in-reply-to:
   references:mime-version:content-transfer-encoding;
  bh=PoQrTCXbOLESqrnXnnL2uPe7qZz7/Q2HWhe4ECuWOno=;
  b=QeIdA7wgpzUxQTTBPOvQYdMPnskButplDIWg8Q2WOQT/cr8PSl5yjWqZ
   6IRwQ21/JfrjpepLTrw47XPZItGuN1U5sVDAD4Xgn5sgTfZgZLYd8RAGh
   lL5l76HoUF0tC95PMMXk0dxvku7K+pdSON1a9PEtB3AhgnBTrl9RS5/T1
   Q=;
X-CSE-ConnectionGUID: FCbAE902SjqaC0PT4u4YkQ==
X-CSE-MsgGUID: 0jxmyDTtRTqlzcsjeZYdkw==
Authentication-Results: esa4.hc3370-68.iphmx.com; dkim=none (message not signed) header.i=none
X-SBRS: 4.0
X-MesageID: 132366783
X-Ironport-Server: esa4.hc3370-68.iphmx.com
X-Remote-IP: 162.221.159.70
X-Policy: $RELAYED
X-ThreatScanner-Verdict: Negative
IronPort-Data: A9a23:a45696nEah+gXt7H5Ld8+KDo5gzcJkRdPkR7XQ2eYbSJt1+Wr1Gzt
 xJNXWjQaarbMWrzKdAjOY2xp0wCsZPTmIBhTgdu/yE9FyMWpZLJC+rCIxarNUt+DCFhoGFPt
 JxCN4aafKjYaleG+39B55C49SEUOZmgH+e6UKicfHkpGWeIcQ954Tp7gek1n4V0ttawBgKJq
 LvartbWfVSowFaYCEpNg064gE0p5KmaVA8w5ARkOagS5gaGzBH5MbpETU2PByqgKmVrNrbSq
 9brlNmR4m7f9hExPdKp+p6TnpoiG+O60aCm0xK6aoD66vRwjnVaPpUTbZLwXXx/mTSR9+2d/
 f0W3XCGpaXFCYWX8AgVe0Ew/yiTpsSq8pefSZS0mZT7I0Er7xIAahihZa07FdRwxwp5PY1B3
 dIzIhkgP0jZvOCvyZnjctUwm5gSL/C+aevzulk4pd3YJfMvQJSFSKTW/95Imjw3g6iiH96HO
 ZBfM2A2Kk2dMlsQYj/7C7pn9AusrlD5fydVtxS+oq0v7nKI5AdwzKLsIJzefdniqcB9xx3C/
 TyYoDSiav0cHISd2T+U3k6wvNPWmTHwQ4AfJoy09eE/1TV/wURMUUZLBDNXu8KRmkO4Ht5SN
 UEQ0i4vtrQpslymSMHnWB+1q2LCuQQTM/JyOeAn7ACGyoLP/h2UQGMDS1Zpd9gOpMIwAzsw2
 TehnNTvHzVj9qKUTXG18a2dpje/fyMSKAc/iTQsFFVfpYO5+cdq00OJEY4L/LOJYsPdNxr66
 h3b9HIFhawappYz6/mmoWHEumf5znTWdTLZ9jk7T0r8sVskNdT1OdT1gWU3+8qsO2pwc7Vgg
 JTns5LHhAz2JcvR/BFhuc1UdF1T296LMSfHnXlkFIQ7+jKm9haLJN8IvWEgfh05bJ5YKVcFh
 XM/XisIuvdu0IaCN/crM+pd9ex0pUQfKTgVfq+NNYcfCnSAXASG4DtvdSat4owZq2B1yftXE
 c7CIa6R4YMyVfwPIMyeG71MjtfGB0kWmQvueHwM50j/jOfDPi/EF9/o8jKmN4gE0U9Nmy2Nm
 /43CidA40w3vDHWCsUPzbMuEA==
IronPort-HdrOrdr: A9a23:6GCv0ahsAl2TqCEToexWZ5ZtyXBQXuIji2hC6mlwRA09TySZ//
 rBoB19726MtN9xYgBHpTnuAsm9qB/nmaKdpLNhWItKPzOW31dATrsSjrcKqgeIc0aVm9K1l5
 0QF5SWYOeAdWSS5vya3ODXKbkdKaG8gcKVuds=
X-Talos-CUID: 9a23:ycT7bm8dkfWH7lol9hKVv2A/EOkIIyWH93XJKmTgMVo1VeGkSmbFrQ==
X-Talos-MUID: 9a23:2NxdFgk/P7LI6LDiIXu/dno6Ntdt8oiSFHoxiJEUsNKGOB5BNzSC2WE=
X-IronPort-AV: E=Sophos;i="6.05,211,1701147600"; 
   d="scan'208";a="132366783"
From: Andrew Cooper <andrew.cooper3@citrix.com>
To: Xen-devel <xen-devel@lists.xenproject.org>
CC: Andrew Cooper <andrew.cooper3@citrix.com>, Jan Beulich
	<JBeulich@suse.com>, =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?=
	<roger.pau@citrix.com>, Wei Liu <wl@xen.org>, Konrad Rzeszutek Wilk
	<konrad.wilk@oracle.com>, Ross Lagerwall <ross.lagerwall@citrix.com>
Subject: [PATCH 3/3] x86/entry: Make intra-funciton symbols properly local
Date: Mon, 22 Jan 2024 18:17:14 +0000
Message-ID: <20240122181714.1543738-5-andrew.cooper3@citrix.com>
X-Mailer: git-send-email 2.30.2
In-Reply-To: <20240122181714.1543738-1-andrew.cooper3@citrix.com>
References: <20240122181714.1543738-1-andrew.cooper3@citrix.com>
MIME-Version: 1.0
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit

Each of these symbols are local to their main function.  By not having them
globally visible, livepatch's binary diffing logic can reason about the
functions properly.

Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
---
CC: Jan Beulich <JBeulich@suse.com>
CC: Roger Pau Monné <roger.pau@citrix.com>
CC: Wei Liu <wl@xen.org>
CC: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
CC: Ross Lagerwall <ross.lagerwall@citrix.com>

sysenter_eflags_saved() is an open question.  This does need to be globally
visible, and I think any livepatch modifying sysenter_entry() will need a
manual adjustment to do_debug() to update the reference there.
---
 xen/arch/x86/x86_64/compat/entry.S | 20 ++++++++++----------
 xen/arch/x86/x86_64/entry.S        | 22 +++++++++++-----------
 2 files changed, 21 insertions(+), 21 deletions(-)

diff --git a/xen/arch/x86/x86_64/compat/entry.S b/xen/arch/x86/x86_64/compat/entry.S
index 4fbd89cea1a9..1e9e0455eaf3 100644
--- a/xen/arch/x86/x86_64/compat/entry.S
+++ b/xen/arch/x86/x86_64/compat/entry.S
@@ -41,7 +41,7 @@ FUNC(compat_test_all_events)
         shll  $IRQSTAT_shift,%eax
         leaq  irq_stat+IRQSTAT_softirq_pending(%rip),%rcx
         cmpl  $0,(%rcx,%rax,1)
-        jne   compat_process_softirqs
+        jne   .L_compat_process_softirqs
 
         /* Inject exception if pending. */
         lea   VCPU_trap_bounce(%rbx), %rdx
@@ -49,11 +49,11 @@ FUNC(compat_test_all_events)
         jnz   .Lcompat_process_trapbounce
 
         cmpb  $0, VCPU_mce_pending(%rbx)
-        jne   compat_process_mce
+        jne   .L_compat_process_mce
 .Lcompat_test_guest_nmi:
         cmpb  $0, VCPU_nmi_pending(%rbx)
-        jne   compat_process_nmi
-compat_test_guest_events:
+        jne   .L_compat_process_nmi
+.L_compat_test_guest_events:
         movq  VCPU_vcpu_info(%rbx),%rax
         movzwl COMPAT_VCPUINFO_upcall_pending(%rax),%eax
         decl  %eax
@@ -71,7 +71,7 @@ compat_test_guest_events:
         jmp   compat_test_all_events
 
 /* %rbx: struct vcpu */
-LABEL_LOCAL(compat_process_softirqs)
+LABEL_LOCAL(.L_compat_process_softirqs)
         sti
         call  do_softirq
         jmp   compat_test_all_events
@@ -84,7 +84,7 @@ LABEL_LOCAL(.Lcompat_process_trapbounce)
         jmp   compat_test_all_events
 
 /* %rbx: struct vcpu */
-LABEL_LOCAL(compat_process_mce)
+LABEL_LOCAL(.L_compat_process_mce)
         testb $1 << VCPU_TRAP_MCE,VCPU_async_exception_mask(%rbx)
         jnz   .Lcompat_test_guest_nmi
         sti
@@ -96,12 +96,12 @@ LABEL_LOCAL(compat_process_mce)
         movb %dl,VCPU_mce_old_mask(%rbx)            # iret hypercall
         orl  $1 << VCPU_TRAP_MCE,%edx
         movb %dl,VCPU_async_exception_mask(%rbx)
-        jmp   compat_process_trap
+        jmp   .L_compat_process_trap
 
 /* %rbx: struct vcpu */
-LABEL_LOCAL(compat_process_nmi)
+LABEL_LOCAL(.L_compat_process_nmi)
         testb $1 << VCPU_TRAP_NMI,VCPU_async_exception_mask(%rbx)
-        jnz   compat_test_guest_events
+        jnz   .L_compat_test_guest_events
         sti
         movb  $0, VCPU_nmi_pending(%rbx)
         call  set_guest_nmi_trapbounce
@@ -112,7 +112,7 @@ LABEL_LOCAL(compat_process_nmi)
         orl  $1 << VCPU_TRAP_NMI,%edx
         movb %dl,VCPU_async_exception_mask(%rbx)
         /* FALLTHROUGH */
-compat_process_trap:
+.L_compat_process_trap:
         leaq  VCPU_trap_bounce(%rbx),%rdx
         call  compat_create_bounce_frame
         jmp   compat_test_all_events
diff --git a/xen/arch/x86/x86_64/entry.S b/xen/arch/x86/x86_64/entry.S
index fc64ef1fd460..130462ba0e1a 100644
--- a/xen/arch/x86/x86_64/entry.S
+++ b/xen/arch/x86/x86_64/entry.S
@@ -188,7 +188,7 @@ FUNC_LOCAL(restore_all_guest)
 
         RESTORE_ALL
         testw $TRAP_syscall,4(%rsp)
-        jz    iret_exit_to_guest
+        jz    .L_iret_exit_to_guest
 
         movq  24(%rsp),%r11           # RFLAGS
         andq  $~(X86_EFLAGS_IOPL | X86_EFLAGS_VM), %r11
@@ -220,7 +220,7 @@ FUNC_LOCAL(restore_all_guest)
 LABEL_LOCAL(.Lrestore_rcx_iret_exit_to_guest)
         movq  8(%rsp), %rcx           # RIP
 /* No special register assumptions. */
-iret_exit_to_guest:
+.L_iret_exit_to_guest:
         andl  $~(X86_EFLAGS_IOPL | X86_EFLAGS_VM), 24(%rsp)
         orl   $X86_EFLAGS_IF,24(%rsp)
         addq  $8,%rsp
@@ -432,10 +432,10 @@ UNLIKELY_END(msi_check)
         cmove %rdi, %rdx
 
         test  %rdx, %rdx
-        jz    int80_slow_path
+        jz    .L_int80_slow_path
 #else
         test  %rdi, %rdi
-        jz    int80_slow_path
+        jz    .L_int80_slow_path
 #endif
 
         /* Construct trap_bounce from trap_ctxt[0x80]. */
@@ -457,7 +457,7 @@ UNLIKELY_END(msi_check)
         call  create_bounce_frame
         jmp   test_all_events
 
-int80_slow_path:
+.L_int80_slow_path:
         /* 
          * Setup entry vector and error code as if this was a GPF caused by an
          * IDT entry with DPL==0.
@@ -472,7 +472,7 @@ int80_slow_path:
          * need to set up %r14 here, while %r15 is required to still be zero.
          */
         GET_STACK_END(14)
-        jmp   handle_exception_saved
+        jmp   .L_handle_exception_saved
 END(entry_int80)
 
         /* create_bounce_frame & helpers don't need to be in .text.entry */
@@ -750,10 +750,10 @@ FUNC(handle_exception, 0)
         cmovnz %r12d, %r13d
 .Lxcpt_cr3_okay:
 
-handle_exception_saved:
+.L_handle_exception_saved:
         GET_CURRENT(bx)
         testb $X86_EFLAGS_IF>>8,UREGS_eflags+1(%rsp)
-        jz    exception_with_ints_disabled
+        jz    .L_exception_with_ints_disabled
 
 #if defined(CONFIG_PV32)
         ALTERNATIVE_2 "jmp .Lcr4_pv32_done", \
@@ -859,9 +859,9 @@ handle_exception_saved:
 #endif
 
 /* No special register assumptions. */
-exception_with_ints_disabled:
+.L_exception_with_ints_disabled:
         testb $3,UREGS_cs(%rsp)         # interrupts disabled outside Xen?
-        jnz   FATAL_exception_with_ints_disabled
+        jnz   .L_FATAL_exception_with_ints_disabled
         movq  %rsp,%rdi
         call  search_pre_exception_table
         testq %rax,%rax                 # no fixup code for faulting EIP?
@@ -891,7 +891,7 @@ exception_with_ints_disabled:
         jmp   restore_all_xen           # return to fixup code
 
 /* No special register assumptions. */
-FATAL_exception_with_ints_disabled:
+.L_FATAL_exception_with_ints_disabled:
         xorl  %esi,%esi
         movq  %rsp,%rdi
         tailcall fatal_trap
-- 
2.30.2



From xen-devel-bounces@lists.xenproject.org Mon Jan 22 18:32:49 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 22 Jan 2024 18:32:49 +0000
Received: from list by lists.xenproject.org with outflank-mailman.670077.1042707 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rRz68-00010G-CT; Mon, 22 Jan 2024 18:32:40 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 670077.1042707; Mon, 22 Jan 2024 18:32:40 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rRz68-000109-8z; Mon, 22 Jan 2024 18:32:40 +0000
Received: by outflank-mailman (input) for mailman id 670077;
 Mon, 22 Jan 2024 18:32:39 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=IdsA=JA=xenbits.xen.org=andrewcoop@srs-se1.protection.inumbo.net>)
 id 1rRz67-0000hw-2x
 for xen-devel@lists.xen.org; Mon, 22 Jan 2024 18:32:39 +0000
Received: from mail.xenproject.org (mail.xenproject.org [104.130.215.37])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 9a3e484c-b954-11ee-9b0f-b553b5be7939;
 Mon, 22 Jan 2024 19:32:33 +0100 (CET)
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <andrewcoop@xenbits.xen.org>)
 id 1rRz5s-0006An-5b; Mon, 22 Jan 2024 18:32:24 +0000
Received: from andrewcoop by xenbits.xenproject.org with local (Exim 4.92)
 (envelope-from <andrewcoop@xenbits.xen.org>)
 id 1rRz5s-0003tE-3o; Mon, 22 Jan 2024 18:32:24 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 9a3e484c-b954-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
	s=20200302mail; h=Date:Message-Id:Subject:CC:From:To:MIME-Version:
	Content-Transfer-Encoding:Content-Type;
	bh=jQ2S1lvmSX4xfvrw+eMwl1VWUBAWJ50rqkkdceJepl8=; b=EBi2YM2eakxsvTwT0CXLPe3TCG
	XRdj7cMvAbNk3IrXMywjZtW9HVaXMMeVzKhxaiQCj440jOpyyKI5MdT4rGXrCpeZXY/i8oSQR4FLe
	qOCSD9pPGbf+Uti4LOFkz2lu1vRHXJzPotWXbb9RGJklHQcR+6dbKCySbR2bzETdMXao=;
Content-Type: multipart/mixed; boundary="=separator"; charset="utf-8"
Content-Transfer-Encoding: binary
MIME-Version: 1.0
X-Mailer: MIME-tools 5.509 (Entity 5.509)
To: xen-announce@lists.xen.org, xen-devel@lists.xen.org,
 xen-users@lists.xen.org, oss-security@lists.openwall.com
From: Xen.org security team <security@xen.org>
CC: Xen.org security team <security-team-members@xen.org>
Subject: Xen Security Advisory 448 v2 (CVE-2023-46838) - Linux: netback
 processing of zero-length transmit fragment
Message-Id: <E1rRz5s-0003tE-3o@xenbits.xenproject.org>
Date: Mon, 22 Jan 2024 18:32:24 +0000

--=separator
Content-Type: text/plain; charset="utf-8"
Content-Disposition: inline
Content-Transfer-Encoding: 7bit

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256

            Xen Security Advisory CVE-2023-46838 / XSA-448
                               version 2

      Linux: netback processing of zero-length transmit fragment

UPDATES IN VERSION 2
====================

Public release.

ISSUE DESCRIPTION
=================

Transmit requests in Xen's virtual network protocol can consist of
multiple parts.  While not really useful, except for the initial part
any of them may be of zero length, i.e. carry no data at all.  Besides a
certain initial portion of the to be transferred data, these parts are
directly translated into what Linux calls SKB fragments.  Such converted
request parts can, when for a particular SKB they are all of length
zero, lead to a de-reference of NULL in core networking code.

IMPACT
======

An unprivileged guest can cause Denial of Service (DoS) of the host by
sending network packets to the backend, causing the backend to crash.

Data corruption or privilege escalation have not been ruled out.

VULNERABLE SYSTEMS
==================

All systems using a Linux based network backend with kernel 4.14 and
newer are vulnerable.  Earlier versions may also be vulnerable.  Systems
using other network backends are not known to be vulnerable.

MITIGATION
==========

Using a userspace PV network backend (e.g. the qemu based "qnic" backend)
will mitigate the problem.

Using a dedicated network driver domain per guest will mitigate the
problem.

CREDITS
=======

This issue was discovered by Pratyush Yadav of Amazon.

RESOLUTION
==========

Applying the attached patch resolves this issue.

xsa448-linux.patch           Linux 6.7-rc - 6.5

$ sha256sum xsa448*
f8c87cf546c2bc70970ca151c0ec8c1940f969e29c4cb3d2ec37ff9e43ddfc36  xsa448-linux.patch
$

NOTE CONCERNING EARLY DISCLOSURE
================================

The embargo was intended to be 2024-01-23 12:00 UTC, but a downstream
had a mixup of days and published early.

DEPLOYMENT DURING EMBARGO
=========================

Deployment of the patches and/or mitigations described above (or
others which are substantially similar) is permitted during the
embargo, even on public-facing systems with untrusted guest users and
administrators.

But: Distribution of updated software is prohibited (except to other
members of the predisclosure list).

Predisclosure list members who wish to deploy significantly different
patches and/or mitigations, please contact the Xen Project Security
Team.

(Note: this during-embargo deployment notice is retained in
post-embargo publicly released Xen Project advisories, even though it
is then no longer applicable.  This is to enable the community to have
oversight of the Xen Project Security Team's decisionmaking.)

For more information about permissible uses of embargoed information,
consult the Xen Project community's agreed Security Policy:
  http://www.xenproject.org/security-policy.html
-----BEGIN PGP SIGNATURE-----

iQFABAEBCAAqFiEEI+MiLBRfRHX6gGCng/4UyVfoK9kFAmWutGMMHHBncEB4ZW4u
b3JnAAoJEIP+FMlX6CvZ9h0H/26sgfTHO0vnTZ8cnisn3aC5VTvrx9nY5fcCe2cJ
/KgN3q3mtb3w41/2LD/rR0Zpw4SkeTaFp69Mz2hQa37gLVDSK5lDJDR61lwhiwrQ
MSsdPHs91EDJhF6aX/S7wsQkBZYPq1S9aOuIxJbDYN3D9WsTUWvuocXNxeqTx5q9
iWVSJTH5NkRSAaIVldyNVkQ7pWaSrwqmBzolnrZIsDUjYU1Lk/j0u6GFbkOF9SIg
onFiFbJhCOaIZOIP2Tfz7nHGBnxucI4cjjwy4BWM+Va35Pg4mbHaBuVGnQsaBtVF
UdY6/jw6Qk4ktV34il3+jlgGfAFC6GILJoraASjaFCEQ7jM=
=IPLz
-----END PGP SIGNATURE-----

--=separator
Content-Type: application/octet-stream; name="xsa448-linux.patch"
Content-Disposition: attachment; filename="xsa448-linux.patch"
Content-Transfer-Encoding: base64

RnJvbTogSmFuIEJldWxpY2ggPGpiZXVsaWNoQHN1c2UuY29tPgpTdWJqZWN0
OiB4ZW4tbmV0YmFjazogZG9uJ3QgcHJvZHVjZSB6ZXJvLXNpemUgU0tCIGZy
YWdzCgpXaGlsZSBmcm9udGVuZHMgbWF5IHN1Ym1pdCB6ZXJvLXNpemUgcmVx
dWVzdHMgKHdhc3RpbmcgYSBwcmVjaW91cyBzbG90KSwKY29yZSBuZXR3b3Jr
aW5nIGNvZGUgYXMgb2YgYXQgbGVhc3QgM2VjZTc4MjY5M2M0YiAoInNvY2s6
IHNrYl9jb3B5X3VidWZzCnN1cHBvcnQgZm9yIGNvbXBvdW5kIHBhZ2VzIikg
Y2FuJ3QgZGVhbCB3aXRoIFNLQnMgd2hlbiB0aGV5IGhhdmUgYWxsCnplcm8t
c2l6ZSBmcmFnbWVudHMuIFJlc3BvbmQgdG8gZW1wdHkgcmVxdWVzdHMgcmln
aHQgd2hlbiBwb3B1bGF0aW5nCmZyYWdtZW50czsgYWxsIGZ1cnRoZXIgcHJv
Y2Vzc2luZyBpcyBmcmFnbWVudCBiYXNlZCBhbmQgaGVuY2Ugd29uJ3QKZW5j
b3VudGVyIHRoZXNlIGVtcHR5IHJlcXVlc3RzIGFueW1vcmUuCgpJbiBhIHdh
eSB0aGlzIHNob3VsZCBoYXZlIGJlZW4gdGhhdCB3YXkgZnJvbSB0aGUgYmVn
aW5uaW5nOiBXaGVuIG5vIGRhdGEKaXMgdG8gYmUgdHJhbnNmZXJyZWQgZm9y
IGEgcGFydGljdWxhciByZXF1ZXN0LCB0aGVyZSdzIG5vdCBldmVuIGEgcG9p
bnQKaW4gdmFsaWRhdGluZyB0aGUgcmVzcGVjdGl2ZSBncmFudCByZWYuIFRo
YXQncyBubyBkaWZmZXJlbnQgZnJvbSBlLmcuCnBhc3NpbmcgTlVMTCBpbnRv
IG1lbWNweSgpIHdoZW4gYXQgdGhlIHNhbWUgdGltZSB0aGUgc2l6ZSBpcyAw
LgoKVGhpcyBpcyBYU0EtNDQ4IC8gQ1ZFLTIwMjMtNDY4MzguCgpSZXBvcnRl
ZC1ieTogUHJhdHl1c2ggWWFkYXYgPHB0eWFkYXZAYW1hem9uLmRlPgpDYzog
c3RhYmxlQHZnZXIua2VybmVsLm9yZwpTaWduZWQtb2ZmLWJ5OiBKYW4gQmV1
bGljaCA8amJldWxpY2hAc3VzZS5jb20+ClJldmlld2VkLWJ5OiBKdWVyZ2Vu
IEdyb3NzIDxqZ3Jvc3NAc3VzZS5jb20+ClJldmlld2VkLWJ5OiBQYXVsIER1
cnJhbnQgPHBhdWxAeGVuLm9yZz4KQWNrZWQtYnk6IFByYXR5dXNoIFlhZGF2
IDxwdHlhZGF2QGFtYXpvbi5kZT4KCi0tLSBhL2RyaXZlcnMvbmV0L3hlbi1u
ZXRiYWNrL25ldGJhY2suYworKysgYi9kcml2ZXJzL25ldC94ZW4tbmV0YmFj
ay9uZXRiYWNrLmMKQEAgLTQ2MywxMiArNDYzLDI1IEBAIHN0YXRpYyB2b2lk
IHhlbnZpZl9nZXRfcmVxdWVzdHMoc3RydWN0IHgKIAl9CiAKIAlmb3IgKHNo
aW5mby0+bnJfZnJhZ3MgPSAwOyBucl9zbG90cyA+IDAgJiYgc2hpbmZvLT5u
cl9mcmFncyA8IE1BWF9TS0JfRlJBR1M7Ci0JICAgICBzaGluZm8tPm5yX2Zy
YWdzKyssIGdvcCsrLCBucl9zbG90cy0tKSB7CisJICAgICBucl9zbG90cy0t
KSB7CisJCWlmICh1bmxpa2VseSghdHhwLT5zaXplKSkgeworCQkJdW5zaWdu
ZWQgbG9uZyBmbGFnczsKKworCQkJc3Bpbl9sb2NrX2lycXNhdmUoJnF1ZXVl
LT5yZXNwb25zZV9sb2NrLCBmbGFncyk7CisJCQltYWtlX3R4X3Jlc3BvbnNl
KHF1ZXVlLCB0eHAsIDAsIFhFTl9ORVRJRl9SU1BfT0tBWSk7CisJCQlwdXNo
X3R4X3Jlc3BvbnNlcyhxdWV1ZSk7CisJCQlzcGluX3VubG9ja19pcnFyZXN0
b3JlKCZxdWV1ZS0+cmVzcG9uc2VfbG9jaywgZmxhZ3MpOworCQkJKyt0eHA7
CisJCQljb250aW51ZTsKKwkJfQorCiAJCWluZGV4ID0gcGVuZGluZ19pbmRl
eChxdWV1ZS0+cGVuZGluZ19jb25zKyspOwogCQlwZW5kaW5nX2lkeCA9IHF1
ZXVlLT5wZW5kaW5nX3JpbmdbaW5kZXhdOwogCQl4ZW52aWZfdHhfY3JlYXRl
X21hcF9vcChxdWV1ZSwgcGVuZGluZ19pZHgsIHR4cCwKIAkJCQkgICAgICAg
IHR4cCA9PSBmaXJzdCA/IGV4dHJhX2NvdW50IDogMCwgZ29wKTsKIAkJZnJh
Z19zZXRfcGVuZGluZ19pZHgoJmZyYWdzW3NoaW5mby0+bnJfZnJhZ3NdLCBw
ZW5kaW5nX2lkeCk7CisJCSsrc2hpbmZvLT5ucl9mcmFnczsKKwkJKytnb3A7
CiAKIAkJaWYgKHR4cCA9PSBmaXJzdCkKIAkJCXR4cCA9IHR4ZnJhZ3M7CkBA
IC00ODEsMjAgKzQ5NCwzOSBAQCBzdGF0aWMgdm9pZCB4ZW52aWZfZ2V0X3Jl
cXVlc3RzKHN0cnVjdCB4CiAJCXNoaW5mbyA9IHNrYl9zaGluZm8obnNrYik7
CiAJCWZyYWdzID0gc2hpbmZvLT5mcmFnczsKIAotCQlmb3IgKHNoaW5mby0+
bnJfZnJhZ3MgPSAwOyBzaGluZm8tPm5yX2ZyYWdzIDwgbnJfc2xvdHM7Ci0J
CSAgICAgc2hpbmZvLT5ucl9mcmFncysrLCB0eHArKywgZ29wKyspIHsKKwkJ
Zm9yIChzaGluZm8tPm5yX2ZyYWdzID0gMDsgc2hpbmZvLT5ucl9mcmFncyA8
IG5yX3Nsb3RzOyArK3R4cCkgeworCQkJaWYgKHVubGlrZWx5KCF0eHAtPnNp
emUpKSB7CisJCQkJdW5zaWduZWQgbG9uZyBmbGFnczsKKworCQkJCXNwaW5f
bG9ja19pcnFzYXZlKCZxdWV1ZS0+cmVzcG9uc2VfbG9jaywgZmxhZ3MpOwor
CQkJCW1ha2VfdHhfcmVzcG9uc2UocXVldWUsIHR4cCwgMCwKKwkJCQkJCSBY
RU5fTkVUSUZfUlNQX09LQVkpOworCQkJCXB1c2hfdHhfcmVzcG9uc2VzKHF1
ZXVlKTsKKwkJCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZxdWV1ZS0+cmVz
cG9uc2VfbG9jaywKKwkJCQkJCSAgICAgICBmbGFncyk7CisJCQkJY29udGlu
dWU7CisJCQl9CisKIAkJCWluZGV4ID0gcGVuZGluZ19pbmRleChxdWV1ZS0+
cGVuZGluZ19jb25zKyspOwogCQkJcGVuZGluZ19pZHggPSBxdWV1ZS0+cGVu
ZGluZ19yaW5nW2luZGV4XTsKIAkJCXhlbnZpZl90eF9jcmVhdGVfbWFwX29w
KHF1ZXVlLCBwZW5kaW5nX2lkeCwgdHhwLCAwLAogCQkJCQkJZ29wKTsKIAkJ
CWZyYWdfc2V0X3BlbmRpbmdfaWR4KCZmcmFnc1tzaGluZm8tPm5yX2ZyYWdz
XSwKIAkJCQkJICAgICBwZW5kaW5nX2lkeCk7CisJCQkrK3NoaW5mby0+bnJf
ZnJhZ3M7CisJCQkrK2dvcDsKIAkJfQogCi0JCXNrYl9zaGluZm8oc2tiKS0+
ZnJhZ19saXN0ID0gbnNrYjsKLQl9IGVsc2UgaWYgKG5za2IpIHsKKwkJaWYg
KHNoaW5mby0+bnJfZnJhZ3MpIHsKKwkJCXNrYl9zaGluZm8oc2tiKS0+ZnJh
Z19saXN0ID0gbnNrYjsKKwkJCW5za2IgPSBOVUxMOworCQl9CisJfQorCisJ
aWYgKG5za2IpIHsKIAkJLyogQSBmcmFnX2xpc3Qgc2tiIHdhcyBhbGxvY2F0
ZWQgYnV0IGl0IGlzIG5vIGxvbmdlciBuZWVkZWQKLQkJICogYmVjYXVzZSBl
bm91Z2ggc2xvdHMgd2VyZSBjb252ZXJ0ZWQgdG8gY29weSBvcHMgYWJvdmUu
CisJCSAqIGJlY2F1c2UgZW5vdWdoIHNsb3RzIHdlcmUgY29udmVydGVkIHRv
IGNvcHkgb3BzIGFib3ZlIG9yIHNvbWUKKwkJICogd2VyZSBlbXB0eS4KIAkJ
ICovCiAJCWtmcmVlX3NrYihuc2tiKTsKIAl9Cg==

--=separator--


From xen-devel-bounces@lists.xenproject.org Mon Jan 22 18:35:07 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 22 Jan 2024 18:35:07 +0000
Received: from list by lists.xenproject.org with outflank-mailman.670108.1042734 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rRz8N-0002r9-91; Mon, 22 Jan 2024 18:34:59 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 670108.1042734; Mon, 22 Jan 2024 18:34:59 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rRz8N-0002r2-64; Mon, 22 Jan 2024 18:34:59 +0000
Received: by outflank-mailman (input) for mailman id 670108;
 Mon, 22 Jan 2024 18:34:57 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=xlOI=JA=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1rRz8L-0002qi-5x
 for xen-devel@lists.xenproject.org; Mon, 22 Jan 2024 18:34:57 +0000
Received: from mail-wm1-x330.google.com (mail-wm1-x330.google.com
 [2a00:1450:4864:20::330])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id efc14114-b954-11ee-9b0f-b553b5be7939;
 Mon, 22 Jan 2024 19:34:54 +0100 (CET)
Received: by mail-wm1-x330.google.com with SMTP id
 5b1f17b1804b1-40eab3912d5so15589425e9.2
 for <xen-devel@lists.xenproject.org>; Mon, 22 Jan 2024 10:34:54 -0800 (PST)
Received: from [10.80.67.30] (default-46-102-197-194.interdsl.co.uk.
 [46.102.197.194]) by smtp.gmail.com with ESMTPSA id
 q9-20020adff789000000b00337d6aa3912sm10983989wrp.10.2024.01.22.10.34.53
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 22 Jan 2024 10:34:53 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: efc14114-b954-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1705948494; x=1706553294; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=SOMpKdX1kntbpaTOljw2SUP89bTGRIIFcTswjc6X6RE=;
        b=uMasB8cEy51IJktStX/FQMxx4uEXsQ6/5/jcC4d6NGJ4EAJAUob8OkX1LWWvqltRG2
         W11FqgG7EnKP4YxRX+p4jTPgF55ZIfnlM+Onl0Ons8GwRjvKey3BNWzbStQ8d1AKaYNr
         4qdp7kHDITZr7q7JZwLv8HVa0EZSb1hdLOero=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705948494; x=1706553294;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=SOMpKdX1kntbpaTOljw2SUP89bTGRIIFcTswjc6X6RE=;
        b=r+OdW7gZOXwayvVQliDwpYWnZAorQgloOjt3tSroM6yn5pRUfzcV7QHDQQFblulFz8
         7gnd6Oe16ZM4ZnCw3AFvtnViovrZ5B6dLsDKO6W/9BIDcjvdJLwtOnYMgi9//AlgOSfq
         db9Bt1KQN7J075NCyycUFStEI0Za+KFFAAXsg7Xsxrob4PKaa0R6SeSzxJoR9X701kBY
         JPjoISRUAtmOx8cI4cD7hrJiCzzllbFBWp5x7Yifh5W6jto7Y88ow8xEgWoX1ujZH0uf
         UhELJIPT/PFIu2Mhpvd+rzL1FZxP4aon9IIQR5um55Pb5qSl9u8s2VR7O0FZO44wYb5J
         ErDA==
X-Gm-Message-State: AOJu0YwFMcA0/121xfvaE+YBQ4k7V7m5g5g2IbRAaq29+CTuZSyyR7as
	yRDq/0I5oi5xlHBwB9EWpioJ70YheNv383lQe/RyAy4w9bMuXukGUB3Smy0Tag6F9iGNZcm7POx
	Nsi8=
X-Google-Smtp-Source: AGHT+IHYZS+KRSX3AtZ6k2Tau0C6pOY8nBO+sbNBaSbU+ig6EKGVQIzLf+yo7nAcEv1sgCaDv0ZAzg==
X-Received: by 2002:a05:600c:3ac7:b0:40e:a449:11c3 with SMTP id d7-20020a05600c3ac700b0040ea44911c3mr2534224wms.32.1705948493875;
        Mon, 22 Jan 2024 10:34:53 -0800 (PST)
Message-ID: <70e61bc7-ca4d-48ce-8e16-42d24db0a3ad@citrix.com>
Date: Mon, 22 Jan 2024 18:34:53 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 2/3] x86/entry: Make #PF/NMI more amenable to livepatching
Content-Language: en-GB
To: Xen-devel <xen-devel@lists.xenproject.org>
Cc: Jan Beulich <JBeulich@suse.com>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger.pau@citrix.com>, Wei Liu <wl@xen.org>,
 Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>,
 Ross Lagerwall <ross.lagerwall@citrix.com>
References: <20240122181714.1543738-1-andrew.cooper3@citrix.com>
 <20240122181714.1543738-4-andrew.cooper3@citrix.com>
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 xsFNBFLhNn8BEADVhE+Hb8i0GV6mihnnr/uiQQdPF8kUoFzCOPXkf7jQ5sLYeJa0cQi6Penp
 VtiFYznTairnVsN5J+ujSTIb+OlMSJUWV4opS7WVNnxHbFTPYZVQ3erv7NKc2iVizCRZ2Kxn
 srM1oPXWRic8BIAdYOKOloF2300SL/bIpeD+x7h3w9B/qez7nOin5NzkxgFoaUeIal12pXSR
 Q354FKFoy6Vh96gc4VRqte3jw8mPuJQpfws+Pb+swvSf/i1q1+1I4jsRQQh2m6OTADHIqg2E
 ofTYAEh7R5HfPx0EXoEDMdRjOeKn8+vvkAwhviWXTHlG3R1QkbE5M/oywnZ83udJmi+lxjJ5
 YhQ5IzomvJ16H0Bq+TLyVLO/VRksp1VR9HxCzItLNCS8PdpYYz5TC204ViycobYU65WMpzWe
 LFAGn8jSS25XIpqv0Y9k87dLbctKKA14Ifw2kq5OIVu2FuX+3i446JOa2vpCI9GcjCzi3oHV
 e00bzYiHMIl0FICrNJU0Kjho8pdo0m2uxkn6SYEpogAy9pnatUlO+erL4LqFUO7GXSdBRbw5
 gNt25XTLdSFuZtMxkY3tq8MFss5QnjhehCVPEpE6y9ZjI4XB8ad1G4oBHVGK5LMsvg22PfMJ
 ISWFSHoF/B5+lHkCKWkFxZ0gZn33ju5n6/FOdEx4B8cMJt+cWwARAQABzSlBbmRyZXcgQ29v
 cGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPsLBegQTAQgAJAIbAwULCQgHAwUVCgkI
 CwUWAgMBAAIeAQIXgAUCWKD95wIZAQAKCRBlw/kGpdefoHbdD/9AIoR3k6fKl+RFiFpyAhvO
 59ttDFI7nIAnlYngev2XUR3acFElJATHSDO0ju+hqWqAb8kVijXLops0gOfqt3VPZq9cuHlh
 IMDquatGLzAadfFx2eQYIYT+FYuMoPZy/aTUazmJIDVxP7L383grjIkn+7tAv+qeDfE+txL4
 SAm1UHNvmdfgL2/lcmL3xRh7sub3nJilM93RWX1Pe5LBSDXO45uzCGEdst6uSlzYR/MEr+5Z
 JQQ32JV64zwvf/aKaagSQSQMYNX9JFgfZ3TKWC1KJQbX5ssoX/5hNLqxMcZV3TN7kU8I3kjK
 mPec9+1nECOjjJSO/h4P0sBZyIUGfguwzhEeGf4sMCuSEM4xjCnwiBwftR17sr0spYcOpqET
 ZGcAmyYcNjy6CYadNCnfR40vhhWuCfNCBzWnUW0lFoo12wb0YnzoOLjvfD6OL3JjIUJNOmJy
 RCsJ5IA/Iz33RhSVRmROu+TztwuThClw63g7+hoyewv7BemKyuU6FTVhjjW+XUWmS/FzknSi
 dAG+insr0746cTPpSkGl3KAXeWDGJzve7/SBBfyznWCMGaf8E2P1oOdIZRxHgWj0zNr1+ooF
 /PzgLPiCI4OMUttTlEKChgbUTQ+5o0P080JojqfXwbPAyumbaYcQNiH1/xYbJdOFSiBv9rpt
 TQTBLzDKXok86M7BTQRS4TZ/ARAAkgqudHsp+hd82UVkvgnlqZjzz2vyrYfz7bkPtXaGb9H4
 Rfo7mQsEQavEBdWWjbga6eMnDqtu+FC+qeTGYebToxEyp2lKDSoAsvt8w82tIlP/EbmRbDVn
 7bhjBlfRcFjVYw8uVDPptT0TV47vpoCVkTwcyb6OltJrvg/QzV9f07DJswuda1JH3/qvYu0p
 vjPnYvCq4NsqY2XSdAJ02HrdYPFtNyPEntu1n1KK+gJrstjtw7KsZ4ygXYrsm/oCBiVW/OgU
 g/XIlGErkrxe4vQvJyVwg6YH653YTX5hLLUEL1NS4TCo47RP+wi6y+TnuAL36UtK/uFyEuPy
 wwrDVcC4cIFhYSfsO0BumEI65yu7a8aHbGfq2lW251UcoU48Z27ZUUZd2Dr6O/n8poQHbaTd
 6bJJSjzGGHZVbRP9UQ3lkmkmc0+XCHmj5WhwNNYjgbbmML7y0fsJT5RgvefAIFfHBg7fTY/i
 kBEimoUsTEQz+N4hbKwo1hULfVxDJStE4sbPhjbsPCrlXf6W9CxSyQ0qmZ2bXsLQYRj2xqd1
 bpA+1o1j2N4/au1R/uSiUFjewJdT/LX1EklKDcQwpk06Af/N7VZtSfEJeRV04unbsKVXWZAk
 uAJyDDKN99ziC0Wz5kcPyVD1HNf8bgaqGDzrv3TfYjwqayRFcMf7xJaL9xXedMcAEQEAAcLB
 XwQYAQgACQUCUuE2fwIbDAAKCRBlw/kGpdefoG4XEACD1Qf/er8EA7g23HMxYWd3FXHThrVQ
 HgiGdk5Yh632vjOm9L4sd/GCEACVQKjsu98e8o3ysitFlznEns5EAAXEbITrgKWXDDUWGYxd
 pnjj2u+GkVdsOAGk0kxczX6s+VRBhpbBI2PWnOsRJgU2n10PZ3mZD4Xu9kU2IXYmuW+e5KCA
 vTArRUdCrAtIa1k01sPipPPw6dfxx2e5asy21YOytzxuWFfJTGnVxZZSCyLUO83sh6OZhJkk
 b9rxL9wPmpN/t2IPaEKoAc0FTQZS36wAMOXkBh24PQ9gaLJvfPKpNzGD8XWR5HHF0NLIJhgg
 4ZlEXQ2fVp3XrtocHqhu4UZR4koCijgB8sB7Tb0GCpwK+C4UePdFLfhKyRdSXuvY3AHJd4CP
 4JzW0Bzq/WXY3XMOzUTYApGQpnUpdOmuQSfpV9MQO+/jo7r6yPbxT7CwRS5dcQPzUiuHLK9i
 nvjREdh84qycnx0/6dDroYhp0DFv4udxuAvt1h4wGwTPRQZerSm4xaYegEFusyhbZrI0U9tJ
 B8WrhBLXDiYlyJT6zOV2yZFuW47VrLsjYnHwn27hmxTC/7tvG3euCklmkn9Sl9IAKFu29RSo
 d5bD8kMSCYsTqtTfT6W4A3qHGvIDta3ptLYpIAOD2sY3GYq2nf3Bbzx81wZK14JdDDHUX2Rs
 6+ahAA==
In-Reply-To: <20240122181714.1543738-4-andrew.cooper3@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 22/01/2024 6:17 pm, Andrew Cooper wrote:
> It is bad form to have inter-function fallthrough.  It only functions right
> now because alignment padding bytes are NOPs.
>
> However, it also interferes with livepatching binary diffs, because the
> implicit grouping of the two functions isn't expressed in the ELF metadata.
>
> Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>

Please disregard this, and look at the other patch 2.

~Andrew


From xen-devel-bounces@lists.xenproject.org Mon Jan 22 19:09:58 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 22 Jan 2024 19:09:58 +0000
Received: from list by lists.xenproject.org with outflank-mailman.670141.1042743 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rRzg3-0003aq-QE; Mon, 22 Jan 2024 19:09:47 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 670141.1042743; Mon, 22 Jan 2024 19:09:47 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rRzg3-0003aj-NU; Mon, 22 Jan 2024 19:09:47 +0000
Received: by outflank-mailman (input) for mailman id 670141;
 Mon, 22 Jan 2024 19:09:47 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=eEUA=JA=gmail.com=jandryuk@srs-se1.protection.inumbo.net>)
 id 1rRzg3-0003ad-8b
 for xen-devel@lists.xenproject.org; Mon, 22 Jan 2024 19:09:47 +0000
Received: from mail-ot1-x32b.google.com (mail-ot1-x32b.google.com
 [2607:f8b0:4864:20::32b])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id cd06c61e-b959-11ee-9b0f-b553b5be7939;
 Mon, 22 Jan 2024 20:09:44 +0100 (CET)
Received: by mail-ot1-x32b.google.com with SMTP id
 46e09a7af769-6ddf388ca74so1817073a34.0
 for <xen-devel@lists.xenproject.org>; Mon, 22 Jan 2024 11:09:44 -0800 (PST)
Received: from pm2-ws13.praxislan02.com
 (207-172-141-204.s8906.c3-0.slvr-cbr1.lnh-slvr.md.cable.rcncustomer.com.
 [207.172.141.204]) by smtp.gmail.com with ESMTPSA id
 fj22-20020a05622a551600b00429bdb1d705sm2743963qtb.1.2024.01.22.11.09.41
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 22 Jan 2024 11:09:42 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: cd06c61e-b959-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1705950583; x=1706555383; darn=lists.xenproject.org;
        h=content-transfer-encoding:mime-version:message-id:date:subject:cc
         :to:from:from:to:cc:subject:date:message-id:reply-to;
        bh=/06LHe3kSR6cR46TKM9o0dxUT/H7ZG7I/ELydD7KVXA=;
        b=CHah24Og4ptYvcmNvwp5DRoZvuAyO2E3bMcW1TmVc4IyPzoAOZYwxpzImGBIW/e2gz
         SSPR6KS/HEjHFSs0C6UlqBqPhDGSoOwGLmmPy6G98Skl7Hkb1x2rl/1QLFswB54gachr
         /b0MvbbokdkF1Y7HXmvu5guqi2e6r1j4Eo3PtETPUmUTlocjiv9iggGhZl14MJ3+EGxH
         uFnhZ07qAXowwdBIK8E6rZS19+IkWbRn3GpK6xfWDUaWS+xjIdhkBDmz+Kb9TntjOQN5
         wl7X6+eudJnEY/3ZBBGjSYzYVR84u5cqXj5O0E9wg/sS+Z30lIRLq8YvrwAHtFac5uJN
         0C8Q==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705950583; x=1706555383;
        h=content-transfer-encoding:mime-version:message-id:date:subject:cc
         :to:from:x-gm-message-state:from:to:cc:subject:date:message-id
         :reply-to;
        bh=/06LHe3kSR6cR46TKM9o0dxUT/H7ZG7I/ELydD7KVXA=;
        b=sGY1gbHg55fyWkQir0bkDxUWVcnLCBSLAvmD8wQaDcON8ewEvIR4ukDXlxghWXxC4z
         XoX2EzVS7SasdI4f7JjKmd2FfBTbHNsDVJsv1aTqMC7rS/n7eLd9WiVuXpvNZFLm8ETy
         mpxFt51AMT3oTvjaR55gReqPaRNv2pf4+axKJxBKzeJifK/HfD8+sHV4qoRWAMlbTP1M
         4CPpziwXF+Q5vOzZoiGubj6coD6iT1b0YVeEA9QEzXyGEeMXxKT5++aOprq6sr/P/BF2
         bMdQn63WV+NCkDaG69/MKDD9gG+FlIFLFTPfzMtcwtttAncJ49E3HToIi0m7xDGujeRE
         6oFA==
X-Gm-Message-State: AOJu0Yz7v9VNSCkwJrf8+KrsFMeefIb4n7DtVOjiaiN+Oj68ii7mUR8/
	2JTrV2OYNzL1Puc1012NqXpmeQ3qQPNtEz+j74y6Uzmt/jsoUIBT98ya5+a+
X-Google-Smtp-Source: AGHT+IFl/d4an0rvO1amFSG4D+AUsoWHJDlm5kZnTodgEFTobSOOi7xUj1pqB85xsU0hFUUX/mhabA==
X-Received: by 2002:a9d:7d08:0:b0:6dd:ca7d:b4eb with SMTP id v8-20020a9d7d08000000b006ddca7db4ebmr4021936otn.0.1705950582826;
        Mon, 22 Jan 2024 11:09:42 -0800 (PST)
From: Jason Andryuk <jandryuk@gmail.com>
To: xen-devel@lists.xenproject.org
Cc: Jason Andryuk <jandryuk@gmail.com>,
	Jan Beulich <jbeulich@suse.com>
Subject: [PATCH] pmstat: Limit hypercalls under HWP
Date: Mon, 22 Jan 2024 14:09:34 -0500
Message-ID: <20240122190934.52080-1-jandryuk@gmail.com>
X-Mailer: git-send-email 2.43.0
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

When HWP is active, the cpufreq P-state information is not updated.  In
that case, return -ENODEV instead of bogus, incomplete info.  The xenpm
command already supports skipping results when -ENODEV is returned, so
it is re-used when -EOPNOTSUPP might be more accurate.

Similarly, set_cpufreq_para() is not applicable when HWP is active.
Many of the options already checked the governor and were inaccessible,
but SCALING_MIN/MAX_FREQ was still accessible (though it would do
nothing).  Add an ealier HWP check to handle all cases.

Signed-off-by: Jason Andryuk <jandryuk@gmail.com>
---
`xenpm get-cpufreq-states` now doesn't return any output.  It also exits
successfully since xenpm doesn't check the returns there.  Other
commands will fail:
xenpm set-scaling-maxfreq 11 1100000
failed to set scaling max freq (95 - Operation not supported)

 xen/drivers/acpi/pmstat.c | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/xen/drivers/acpi/pmstat.c b/xen/drivers/acpi/pmstat.c
index 85097d463c..4c4d298d1c 100644
--- a/xen/drivers/acpi/pmstat.c
+++ b/xen/drivers/acpi/pmstat.c
@@ -66,6 +66,8 @@ int do_get_pm_info(struct xen_sysctl_get_pmstat *op)
             return -ENODEV;
         if ( !cpufreq_driver.init )
             return -ENODEV;
+        if ( hwp_active() )
+            return -ENODEV;
         if ( !pmpt || !(pmpt->perf.init & XEN_PX_INIT) )
             return -EINVAL;
         break;
@@ -329,6 +331,9 @@ static int set_cpufreq_para(struct xen_sysctl_pm_op *op)
     if ( !policy || !policy->governor )
         return -EINVAL;
 
+    if ( hwp_active() )
+        return -EOPNOTSUPP;
+
     switch(op->u.set_para.ctrl_type)
     {
     case SCALING_MAX_FREQ:
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Mon Jan 22 20:53:33 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 22 Jan 2024 20:53:33 +0000
Received: from list by lists.xenproject.org with outflank-mailman.670146.1042754 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rS1IG-0001Kw-43; Mon, 22 Jan 2024 20:53:20 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 670146.1042754; Mon, 22 Jan 2024 20:53:20 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rS1IG-0001Kp-0E; Mon, 22 Jan 2024 20:53:20 +0000
Received: by outflank-mailman (input) for mailman id 670146;
 Mon, 22 Jan 2024 20:53:19 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=LWrC=JA=m5p.com=ehem@srs-se1.protection.inumbo.net>)
 id 1rS1IF-0001Kj-38
 for xen-devel@lists.xen.org; Mon, 22 Jan 2024 20:53:19 +0000
Received: from mailhost.m5p.com (mailhost.m5p.com [74.104.188.4])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 41f78cc2-b968-11ee-9b0f-b553b5be7939;
 Mon, 22 Jan 2024 21:53:14 +0100 (CET)
Received: from m5p.com (mailhost.m5p.com [IPv6:2001:470:1f07:15ff:0:0:0:f7])
 by mailhost.m5p.com (8.17.1/8.15.2) with ESMTPS id 40MKr3NJ062650
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NO);
 Mon, 22 Jan 2024 15:53:09 -0500 (EST) (envelope-from ehem@m5p.com)
Received: (from ehem@localhost)
 by m5p.com (8.17.1/8.15.2/Submit) id 40MKr3nY062649;
 Mon, 22 Jan 2024 12:53:03 -0800 (PST) (envelope-from ehem)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 41f78cc2-b968-11ee-9b0f-b553b5be7939
Date: Mon, 22 Jan 2024 12:53:03 -0800
From: Elliott Mitchell <ehem+xen@m5p.com>
To: xen-devel@lists.xen.org
Cc: Jan Beulich <jbeulich@suse.com>, Andrew Cooper <andrew.cooper3@citrix.com>
Subject: Thoughts on current Xen EDAC/MCE situation
Message-ID: <Za7Vr+Rb25y/+MSy@mattapan.m5p.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
X-Spam-Status: No, score=0.0 required=10.0 tests=KHOP_HELO_FCRDNS
	autolearn=unavailable autolearn_force=no version=4.0.0
X-Spam-Checker-Version: SpamAssassin 4.0.0 (2022-12-14) on mattapan.m5p.com

I've been mentioning this on a regular basis, but the state of MCE
handling with Xen seems poor.

I find the present handling of MCE in Xen an odd choice.  Having Xen do
most of the handling of MCE events is a behavior matching a traditional
stand-alone hypervisor.  Yet Xen was originally pushing any task not
requiring hypervisor action onto Domain 0.

MCE seems a perfect match for sharing responsibility with Domain 0.
Domain 0 needs to know about any MCE event, this is where system
administrators will expect to find logs.  In fact, if the event is a
Correctable Error, then *only* Domain 0 needs to know.  For a CE, Xen
may need no action at all (an implementation could need help) and
the effected domain would need no action.  It is strictly for
Uncorrectable Errors that action beside logging is needed.

For a UE memory error, the best approach might be for Domain 0 to decode
the error.  Once Domain 0 determines it is UE, invoke a hypercall to pass
the GPFN to Xen.  Xen would then forcibly unmap the page (similar to what
Linux does to userspace for corrupted pages).  Xen would then identify
what the page was used for, alert the domain and return that to Domain 0.


The key advantage of this approach is it makes MCE handling act very
similar to MCE handling without Xen.  Documentation about how MCEs are
reported/decoded would apply equally to Xen.  Another rather important
issue is it means less maintenance work to keep MCE handling working with
cutting-edge hardware.  I've noticed one vendor being sluggish about
getting patches into Linux and I fear similar issues may apply more
severely to Xen.


-- 
(\___(\___(\______          --=> 8-) EHM <=--          ______/)___/)___/)
 \BS (    |         ehem+sigmsg@m5p.com  PGP 87145445         |    )   /
  \_CS\   |  _____  -O #include <stddisclaimer.h> O-   _____  |   /  _/
8A19\___\_|_/58D2 7E3D DDF4 7BA6 <-PGP-> 41D1 B375 37D0 8714\_|_/___/5445




From xen-devel-bounces@lists.xenproject.org Mon Jan 22 22:48:10 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 22 Jan 2024 22:48:10 +0000
Received: from list by lists.xenproject.org with outflank-mailman.670216.1042799 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rS35F-00040B-UU; Mon, 22 Jan 2024 22:48:01 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 670216.1042799; Mon, 22 Jan 2024 22:48:01 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rS35F-000404-Rj; Mon, 22 Jan 2024 22:48:01 +0000
Received: by outflank-mailman (input) for mailman id 670216;
 Mon, 22 Jan 2024 22:48:00 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=94D3=JA=kernel.org=sstabellini@srs-se1.protection.inumbo.net>)
 id 1rS35E-0003z6-9C
 for xen-devel@lists.xenproject.org; Mon, 22 Jan 2024 22:48:00 +0000
Received: from sin.source.kernel.org (sin.source.kernel.org [145.40.73.55])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 4792ded0-b978-11ee-9b0f-b553b5be7939;
 Mon, 22 Jan 2024 23:47:56 +0100 (CET)
Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58])
 by sin.source.kernel.org (Postfix) with ESMTP id 7084ECE2B6D;
 Mon, 22 Jan 2024 22:47:51 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 016FEC43390;
 Mon, 22 Jan 2024 22:47:49 +0000 (UTC)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 4792ded0-b978-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
	s=k20201202; t=1705963670;
	bh=VmK+3y7dwKhhngQRRtVEzYsN0JFlJcij5RpzL4YRllw=;
	h=Date:From:To:cc:Subject:In-Reply-To:References:From;
	b=X5id4WE/iE7OPLSx6NnW+juOLwma81m1jAgvFbv4bNzDdjcE77UeHmlbJq9PWsgAt
	 PZ/TpeW4Rh84DyUilvr4n4CxRuAkvWVE+v1jrcs2FRQoJp0NvNrgxL3QqoE+KFK+FC
	 95QLWPf3Emq98o6iZsBLuca87ctag8bEZFRVwXDPN3BSnHBHUArB6Hwi3U1OXWr1Lw
	 ZEWdtjsI2vwnC/AxDVUiNm2KRB04xy+gVAboNFWuWJXtFX3AsBoiOVVmvgtqWJTInz
	 pB62vmSWWVFw8lfb6plvWmHNozWV2RrsW/HmUbv/Gl3vcckSFcgsVqPnQYtJWfQ40S
	 wvzZeVf+5UVXg==
Date: Mon, 22 Jan 2024 14:47:48 -0800 (PST)
From: Stefano Stabellini <sstabellini@kernel.org>
X-X-Sender: sstabellini@ubuntu-linux-20-04-desktop
To: Jan Beulich <jbeulich@suse.com>
cc: Kelly Choi <kelly.choi@cloud.com>, committers@xenproject.org, 
    advisory-board@lists.xenproject.org, xen-devel@lists.xenproject.org
Subject: Re: Community Process Group - Proposal
In-Reply-To: <5309e7d3-7b3c-4522-99dc-bbd7734aeb34@suse.com>
Message-ID: <alpine.DEB.2.22.394.2401221434440.2287888@ubuntu-linux-20-04-desktop>
References: <CAO-mL=yvVWjnOHSFSqcrknoXOqk-N3JY76qObQnzftrkmsq6xw@mail.gmail.com> <5309e7d3-7b3c-4522-99dc-bbd7734aeb34@suse.com>
User-Agent: Alpine 2.22 (DEB 394 2020-01-19)
MIME-Version: 1.0
Content-Type: text/plain; charset=US-ASCII

I am only addressing a couple of Jan's points below.


On Mon, 22 Jan 2024, Jan Beulich wrote:
> > A CPG will be your second point of call, where you can escalate matters
> > quickly for a democratic solution.
> 
> Between informal voting and this "second point of call", where does
> formal voting go?

Formal voting is still available as "third point of call" after informal
voting and CPG.


> > *How are members selected?*
> > The CPG will be composed of 5 randomly selected members in total.
> > An odd number has been purposely selected to avoid an impasse during
> > decisions.
> > 
> > The criteria:
> > Individual members must be active contributors and are willing to help the
> > community succeed. As such they must be a part of the following groups:
> > 
> >    - Committers
> >    - Active Maintainers: maintainers with >= 20 reviews in the last 2
> >    releases
> >    - Active Contributors: contributors with >= 10 commits in the last 2
> >    releases
> 
> I'm afraid I can't leave this uncommented, as matching a common pattern
> I'm generally unhappy with. Whatever the numbers you select in such
> criteria, they'll open up an easy road for faking. At the same time it
> of course is difficult to come up with any non-numeric or not-only-
> numeric criteria. For example, I'd be heavily inclined to ask that
> "non-trivial" be added to both of the numbers. Yet then there arises a
> judgement issue: What's non-trivial can be entirely different
> depending on who you ask.

I share your observations and thoughts on the matter. I understand and
share your thinking about adding "non-trivial" but then it is becomes a
judgment call, as you wrote. I think it would be best if the criteria
doesn't require human judgment.


> What definitely needs clarifying is what "review" is: Are R-b tags
> counted, or is it the number of replies sent commenting on patches?

Yes, I think this needs to be clarified. I would say Reviewed-by tags.


From xen-devel-bounces@lists.xenproject.org Mon Jan 22 23:37:51 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 22 Jan 2024 23:37:51 +0000
Received: from list by lists.xenproject.org with outflank-mailman.670221.1042809 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rS3rG-0003xv-IG; Mon, 22 Jan 2024 23:37:38 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 670221.1042809; Mon, 22 Jan 2024 23:37:38 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rS3rG-0003xo-FH; Mon, 22 Jan 2024 23:37:38 +0000
Received: by outflank-mailman (input) for mailman id 670221;
 Mon, 22 Jan 2024 23:37:37 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=wf/T=JA=kernel.org=helgaas@srs-se1.protection.inumbo.net>)
 id 1rS3rE-0003xh-Up
 for xen-devel@lists.xenproject.org; Mon, 22 Jan 2024 23:37:36 +0000
Received: from ams.source.kernel.org (ams.source.kernel.org [145.40.68.75])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 383954e0-b97f-11ee-98f3-6d05b1d4d9a1;
 Tue, 23 Jan 2024 00:37:35 +0100 (CET)
Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58])
 by ams.source.kernel.org (Postfix) with ESMTP id 41FC7B81262;
 Mon, 22 Jan 2024 23:37:34 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 57147C43394;
 Mon, 22 Jan 2024 23:37:33 +0000 (UTC)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 383954e0-b97f-11ee-98f3-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
	s=k20201202; t=1705966653;
	bh=bFI9taIrnXtbiXPEufAdPBtLCLiLu4UVHc3GG4nClhw=;
	h=Date:From:To:Cc:Subject:In-Reply-To:From;
	b=OwICVcvbQxSLC8jasEM24VJKS3vTz+1LDb+FcmZZDLCW7bpfPqjxs0dEHl4ACIFjn
	 YcnhQuWeJ/IJc/q28szM0TWGQ2E3A4jDGh0jegpsrwaXzNjlLY5EmlP3VhwQt5djZ8
	 dvYklSc8kUb/da5OKZgd/+PCthhVLxNI17WlTaUY+1ed1duP4ZsD+t6TNvaHa+Q6Yd
	 hWr+An7oFQQaV3KzfoIrZ2Xq9oh/FzyCS20dGjuQe0/x/KbqjnqYo+10pPWqvmrG2U
	 81dQwoBE36+Ox3tW3E4UlIrVQ7fohxhRc+OO/N1D6fwteHL8r16J3lcy3OXjEp8PJx
	 o2wSyCnzhnk/A==
Date: Mon, 22 Jan 2024 17:37:31 -0600
From: Bjorn Helgaas <helgaas@kernel.org>
To: Jiqian Chen <Jiqian.Chen@amd.com>
Cc: Juergen Gross <jgross@suse.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>,
	Boris Ostrovsky <boris.ostrovsky@oracle.com>,
	Bjorn Helgaas <bhelgaas@google.com>,
	"Rafael J . Wysocki" <rafael@kernel.org>,
	Len Brown <lenb@kernel.org>,
	Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>,
	xen-devel@lists.xenproject.org, linux-pci@vger.kernel.org,
	linux-kernel@vger.kernel.org, linux-acpi@vger.kernel.org,
	Stewart Hildebrand <Stewart.Hildebrand@amd.com>,
	Huang Rui <Ray.Huang@amd.com>
Subject: Re: [RFC KERNEL PATCH v4 3/3] PCI/sysfs: Add gsi sysfs for pci_dev
Message-ID: <20240122233731.GA291870@bhelgaas>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <20240105062217.349645-4-Jiqian.Chen@amd.com>

On Fri, Jan 05, 2024 at 02:22:17PM +0800, Jiqian Chen wrote:
> There is a need for some scenarios to use gsi sysfs.
> For example, when xen passthrough a device to dumU, it will
> use gsi to map pirq, but currently userspace can't get gsi
> number.
> So, add gsi sysfs for that and for other potential scenarios.

Isn't GSI really an ACPI-specific concept?

I don't know enough about Xen to know why it needs the GSI in
userspace.  Is this passthrough brand new functionality that can't be
done today because we don't expose the GSI yet?

How does userspace use the GSI?  I see "to map pirq", but I think we
should have more concrete details about exactly what is needed and how
it is used before adding something new in sysfs.

Is there some more generic kernel interface we could use
for this?

s/dumU/DomU/ ?  (I dunno, but https://www.google.com/search?q=xen+dumu
suggests it :))

> Co-developed-by: Huang Rui <ray.huang@amd.com>
> Signed-off-by: Jiqian Chen <Jiqian.Chen@amd.com>
> ---
>  drivers/acpi/pci_irq.c  |  1 +
>  drivers/pci/pci-sysfs.c | 11 +++++++++++
>  include/linux/pci.h     |  2 ++
>  3 files changed, 14 insertions(+)
> 
> diff --git a/drivers/acpi/pci_irq.c b/drivers/acpi/pci_irq.c
> index 630fe0a34bc6..739a58755df2 100644
> --- a/drivers/acpi/pci_irq.c
> +++ b/drivers/acpi/pci_irq.c
> @@ -449,6 +449,7 @@ int acpi_pci_irq_enable(struct pci_dev *dev)
>  		kfree(entry);
>  		return 0;
>  	}
> +	dev->gsi = gsi;
>  
>  	rc = acpi_register_gsi(&dev->dev, gsi, triggering, polarity);
>  	if (rc < 0) {
> diff --git a/drivers/pci/pci-sysfs.c b/drivers/pci/pci-sysfs.c
> index 2321fdfefd7d..c51df88d079e 100644
> --- a/drivers/pci/pci-sysfs.c
> +++ b/drivers/pci/pci-sysfs.c
> @@ -71,6 +71,16 @@ static ssize_t irq_show(struct device *dev,
>  }
>  static DEVICE_ATTR_RO(irq);
>  
> +static ssize_t gsi_show(struct device *dev,
> +			struct device_attribute *attr,
> +			char *buf)
> +{
> +	struct pci_dev *pdev = to_pci_dev(dev);
> +
> +	return sysfs_emit(buf, "%u\n", pdev->gsi);
> +}
> +static DEVICE_ATTR_RO(gsi);
> +
>  static ssize_t broken_parity_status_show(struct device *dev,
>  					 struct device_attribute *attr,
>  					 char *buf)
> @@ -596,6 +606,7 @@ static struct attribute *pci_dev_attrs[] = {
>  	&dev_attr_revision.attr,
>  	&dev_attr_class.attr,
>  	&dev_attr_irq.attr,
> +	&dev_attr_gsi.attr,
>  	&dev_attr_local_cpus.attr,
>  	&dev_attr_local_cpulist.attr,
>  	&dev_attr_modalias.attr,
> diff --git a/include/linux/pci.h b/include/linux/pci.h
> index dea043bc1e38..0618d4a87a50 100644
> --- a/include/linux/pci.h
> +++ b/include/linux/pci.h
> @@ -529,6 +529,8 @@ struct pci_dev {
>  
>  	/* These methods index pci_reset_fn_methods[] */
>  	u8 reset_methods[PCI_NUM_RESET_METHODS]; /* In priority order */
> +
> +	unsigned int	gsi;
>  };
>  
>  static inline struct pci_dev *pci_physfn(struct pci_dev *dev)
> -- 
> 2.34.1
> 
> 


From xen-devel-bounces@lists.xenproject.org Tue Jan 23 00:46:40 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 23 Jan 2024 00:46:40 +0000
Received: from list by lists.xenproject.org with outflank-mailman.670228.1042818 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rS4ve-0007OX-4l; Tue, 23 Jan 2024 00:46:14 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 670228.1042818; Tue, 23 Jan 2024 00:46:14 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rS4ve-0007OQ-2G; Tue, 23 Jan 2024 00:46:14 +0000
Received: by outflank-mailman (input) for mailman id 670228;
 Tue, 23 Jan 2024 00:46:12 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=1h7C=JB=chromium.org=keescook@srs-se1.protection.inumbo.net>)
 id 1rS4vb-0007OI-Tu
 for xen-devel@lists.xenproject.org; Tue, 23 Jan 2024 00:46:12 +0000
Received: from mail-pj1-x1029.google.com (mail-pj1-x1029.google.com
 [2607:f8b0:4864:20::1029])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id cbc95fa5-b988-11ee-9b0f-b553b5be7939;
 Tue, 23 Jan 2024 01:46:09 +0100 (CET)
Received: by mail-pj1-x1029.google.com with SMTP id
 98e67ed59e1d1-2902b0e9524so1818034a91.1
 for <xen-devel@lists.xenproject.org>; Mon, 22 Jan 2024 16:46:09 -0800 (PST)
Received: from www.outflux.net ([198.0.35.241])
 by smtp.gmail.com with ESMTPSA id
 oe11-20020a17090b394b00b00290d0459e3bsm120871pjb.47.2024.01.22.16.45.57
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 22 Jan 2024 16:46:03 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: cbc95fa5-b988-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=chromium.org; s=google; t=1705970767; x=1706575567; darn=lists.xenproject.org;
        h=content-transfer-encoding:mime-version:references:in-reply-to
         :message-id:date:subject:cc:to:from:from:to:cc:subject:date
         :message-id:reply-to;
        bh=QL2EbelNfKplPRaLFa/5pxqZ1ShWs/qPJgvqE5R3xUI=;
        b=WbXDn9UWjxedW/+j5hkqtm8I5CTjihUPYIkPhipaM3LHHXbjIE7adHC6HrSv63VXyR
         WiG9xpiuqbGiFVDs0CUirniv3tJRjNkywjtjR5gQZ1y2JLSs7HWiJlPBAxxYMWF+nKRe
         Cw4px2CBQn9uvgJImW0IoQHTrSpYw2iM9MtdI=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705970767; x=1706575567;
        h=content-transfer-encoding:mime-version:references:in-reply-to
         :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to;
        bh=QL2EbelNfKplPRaLFa/5pxqZ1ShWs/qPJgvqE5R3xUI=;
        b=eec7VaQjvVQpne7PpIGGfNenAqCV6hJY3+c7zFy6pMKB13HF1tY6ltHGSyeFs6ndiY
         6Pz8QFhOn6o3z3I5pVXpn8zbXbNfLIl+4lAmQbldNMwsnw2ZAaRKpn7QmTMbhIMTUSth
         6ZN2ob3ssazdn9u182hfIcw1h5mNLp49CKw9xPaGJf0p+4ZO1XCYJZ2Bxi97mq4pq+4l
         WYMD+RM/4bY8a06qxzRj62CPZx34ZctEMnLCJNMCCh3GTTelwJUQHM/ir4Wmlfuz3iwV
         fwcQZm2o8o0hkncjFB3eU5Yu2jwjS7iXWGwoB028M5nDbreoUeP22XkjrGpUnmvSTXPH
         7lHw==
X-Gm-Message-State: AOJu0YxgAC3LQK2iTzz3RuQo4Mr6bWUVGSFvxBTulwZerD0z57hYYq8C
	FM7g7qlhargtDnM4246t0KiF3JPeLlX1/9gzhjXuk12a5fehm+rwoRPj0443Iw==
X-Google-Smtp-Source: AGHT+IGRFhkPzejcuLL4VRK+c8dRwaf1aYOd9GmP0Xdnbl6TsX/mwlLYTiaazDEJC80Uor5945a4rA==
X-Received: by 2002:a17:90a:d306:b0:290:5ccf:af0 with SMTP id p6-20020a17090ad30600b002905ccf0af0mr2174216pju.60.1705970767490;
        Mon, 22 Jan 2024 16:46:07 -0800 (PST)
From: Kees Cook <keescook@chromium.org>
To: linux-hardening@vger.kernel.org
Cc: Kees Cook <keescook@chromium.org>,
	Wei Liu <wei.liu@kernel.org>,
	Paul Durrant <paul@xen.org>,
	"David S. Miller" <davem@davemloft.net>,
	Eric Dumazet <edumazet@google.com>,
	Jakub Kicinski <kuba@kernel.org>,
	Paolo Abeni <pabeni@redhat.com>,
	xen-devel@lists.xenproject.org,
	netdev@vger.kernel.org,
	"Gustavo A. R. Silva" <gustavoars@kernel.org>,
	Bill Wendling <morbo@google.com>,
	Justin Stitt <justinstitt@google.com>,
	linux-kernel@vger.kernel.org
Subject: [PATCH 80/82] xen-netback: Refactor intentional wrap-around test
Date: Mon, 22 Jan 2024 16:27:55 -0800
Message-Id: <20240123002814.1396804-80-keescook@chromium.org>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20240122235208.work.748-kees@kernel.org>
References: <20240122235208.work.748-kees@kernel.org>
MIME-Version: 1.0
X-Developer-Signature: v=1; a=openpgp-sha256; l=2080; i=keescook@chromium.org;
 h=from:subject; bh=7EjHVZinq5vMXU1+hzn38DepLpa6iDayHYypzEUYJ8I=;
 b=owEBbQKS/ZANAwAKAYly9N/cbcAmAcsmYgBlrwgMGbwjLdUBipRWV/86VXIdYYa28FnqDE8e3
 ji0sb3+qXmJAjMEAAEKAB0WIQSlw/aPIp3WD3I+bhOJcvTf3G3AJgUCZa8IDAAKCRCJcvTf3G3A
 JsN6D/9/9pZCcQMxkCKVjCzbTzXOAQTMNmntEY/KiITUeK8EZC1n44hzsCtSDO9z3x4VtvUW53Y
 pRmydxh3JiySpsfiK4OxljXZ/xvSG+v1GEOgkMGo2iye6zXeVeadXsRCP2MY/IsaXKyM0TKUH5i
 g4+ChtKvF7D9haRMeRaLK4ST+SPfUX52+Z0xW6LUaGrz824SDJhB6Gq9j70+OoNvQaUNHrgZjdR
 a67Kgz/3+HnspC4bx9lGFxCUiPdmTZOz2mgatPghMoE1oX04GIjku1UTthsh6180c00i2Sk/LJI
 1bRchLyEexiVH65VHvz3Ge37s/qRJosLl2xW1ds7SHJKd3qfVFTBa++CN+0tvpd22m7lAAYF7cU
 Rkfs/ZXcyHX1COeG62Bsp15wHODlwmJxEzU00q1Rl6ynr8uVniiXT4RIR9ZRxO5c25/mmUzGvmW
 3rnZGTP9QuvpKRY6GaVrOWKPiaKo3XhsasnsuFP3f6lkYw/WdOVxY2UUWqvlpj3eah/klmSKi1a
 lDJR8pC8b50zoXsumq3xtz1lKSL3iETbnda7hCBHkYCfEhGJi2WPdHrfeEaXwDkde5gZEwPCzZ3
 EJ9TGrYsYcED0KeZFlmbguqSvBeanX+PMcLQckWAXPEbi1WgzcVvFGckq6ZyPuUJHl0C9DAM8Dk 2036V40Dg9GXNKw==
X-Developer-Key: i=keescook@chromium.org; a=openpgp; fpr=A5C3F68F229DD60F723E6E138972F4DFDC6DC026
Content-Transfer-Encoding: 8bit

In an effort to separate intentional arithmetic wrap-around from
unexpected wrap-around, we need to refactor places that depend on this
kind of math. One of the most common code patterns of this is:

	VAR + value < VAR

Notably, this is considered "undefined behavior" for signed and pointer
types, which the kernel works around by using the -fno-strict-overflow
option in the build[1] (which used to just be -fwrapv). Regardless, we
want to get the kernel source to the position where we can meaningfully
instrument arithmetic wrap-around conditions and catch them when they
are unexpected, regardless of whether they are signed[2], unsigned[3],
or pointer[4] types.

Refactor open-coded wrap-around addition test to use add_would_overflow().
This paves the way to enabling the wrap-around sanitizers in the future.

Link: https://git.kernel.org/linus/68df3755e383e6fecf2354a67b08f92f18536594 [1]
Link: https://github.com/KSPP/linux/issues/26 [2]
Link: https://github.com/KSPP/linux/issues/27 [3]
Link: https://github.com/KSPP/linux/issues/344 [4]
Cc: Wei Liu <wei.liu@kernel.org>
Cc: Paul Durrant <paul@xen.org>
Cc: "David S. Miller" <davem@davemloft.net>
Cc: Eric Dumazet <edumazet@google.com>
Cc: Jakub Kicinski <kuba@kernel.org>
Cc: Paolo Abeni <pabeni@redhat.com>
Cc: xen-devel@lists.xenproject.org
Cc: netdev@vger.kernel.org
Signed-off-by: Kees Cook <keescook@chromium.org>
---
 drivers/net/xen-netback/hash.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/net/xen-netback/hash.c b/drivers/net/xen-netback/hash.c
index ff96f22648ef..69b03b4feba9 100644
--- a/drivers/net/xen-netback/hash.c
+++ b/drivers/net/xen-netback/hash.c
@@ -345,7 +345,7 @@ u32 xenvif_set_hash_mapping(struct xenvif *vif, u32 gref, u32 len,
 		.flags = GNTCOPY_source_gref
 	}};
 
-	if ((off + len < off) || (off + len > vif->hash.size) ||
+	if ((add_would_overflow(off, len)) || (off + len > vif->hash.size) ||
 	    len > XEN_PAGE_SIZE / sizeof(*mapping))
 		return XEN_NETIF_CTRL_STATUS_INVALID_PARAMETER;
 
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Tue Jan 23 01:59:01 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 23 Jan 2024 01:59:01 +0000
Received: from list by lists.xenproject.org with outflank-mailman.670244.1042873 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rS63t-0004i1-Ui; Tue, 23 Jan 2024 01:58:49 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 670244.1042873; Tue, 23 Jan 2024 01:58:49 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rS63t-0004hu-QI; Tue, 23 Jan 2024 01:58:49 +0000
Received: by outflank-mailman (input) for mailman id 670244;
 Tue, 23 Jan 2024 01:58:48 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rS63s-0004hj-3R; Tue, 23 Jan 2024 01:58:48 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rS63s-0000uq-15; Tue, 23 Jan 2024 01:58:48 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rS63r-0005Fy-Cu; Tue, 23 Jan 2024 01:58:47 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rS63r-0002ep-Ao; Tue, 23 Jan 2024 01:58:47 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=0aTWfa9RY0kiTY4Wr6GvF3XQGL5luHVIW6JlFJzp+tc=; b=c7zsgiMTyiqKAhh4VjtBP1r1wU
	uOg1tbDsgrMI8+XybGw+8YIGQj8t3Yxp4jhJYGQB8r9LlczE9joEf/zGmb2L8Y8wAwv3Yx6NUKAws
	q/Hd+7khsWI7iGJQHmS8IHfRgyR8bZQIyogFaBbKv65Hxx0+lTgZy65TGAtOwJ45Nn2U=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184426-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [xen-unstable test] 184426: tolerable FAIL - PUSHED
X-Osstest-Failures:
    xen-unstable:test-armhf-armhf-xl-vhd:guest-start:fail:heisenbug
    xen-unstable:test-armhf-armhf-xl-vhd:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-vhd:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-amd64-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-raw:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-amd64-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-qcow2:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-qemuu-nested-amd:debian-hvm-install/l1/l2:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-amd64-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-i386-libvirt-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-libvirt:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-pvshim:guest-start:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-xsm:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-credit2:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-credit2:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-credit1:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-credit1:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-thunderx:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-thunderx:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-libvirt-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-libvirt-xsm:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit2:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit2:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-multivcpu:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-multivcpu:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-libvirt-raw:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-libvirt-raw:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-libvirt-raw:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt-vhd:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-vhd:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-vhd:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-raw:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit1:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit1:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-rtds:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-rtds:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-arndale:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-arndale:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-qcow2:migrate-support-check:fail:nonblocking
X-Osstest-Versions-This:
    xen=4900c939cb9b876c51cfc7a4c854f54c722a30b5
X-Osstest-Versions-That:
    xen=b25607e528f6ce7851e907ed59ad5ff583aa1840
From: osstest service owner <osstest-admin@xenproject.org>
Date: Tue, 23 Jan 2024 01:58:47 +0000

flight 184426 xen-unstable real [real]
flight 184428 xen-unstable real-retest [real]
http://logs.test-lab.xenproject.org/osstest/logs/184426/
http://logs.test-lab.xenproject.org/osstest/logs/184428/

Failures :-/ but no regressions.

Tests which are failing intermittently (not blocking):
 test-armhf-armhf-xl-vhd      13 guest-start         fail pass in 184428-retest

Tests which did not succeed, but are not blocking:
 test-armhf-armhf-xl-vhd     14 migrate-support-check fail in 184428 never pass
 test-armhf-armhf-xl-vhd 15 saverestore-support-check fail in 184428 never pass
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 184419
 test-amd64-amd64-xl-qemut-win7-amd64 19 guest-stop            fail like 184419
 test-amd64-i386-xl-qemuu-win7-amd64 19 guest-stop             fail like 184419
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 184419
 test-amd64-i386-xl-qemut-ws16-amd64 19 guest-stop             fail like 184419
 test-armhf-armhf-libvirt-raw 15 saverestore-support-check    fail  like 184419
 test-amd64-i386-xl-qemut-win7-amd64 19 guest-stop             fail like 184419
 test-amd64-amd64-xl-qemut-ws16-amd64 19 guest-stop            fail like 184419
 test-armhf-armhf-libvirt-qcow2 15 saverestore-support-check   fail like 184419
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 184419
 test-amd64-i386-xl-qemuu-ws16-amd64 19 guest-stop             fail like 184419
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 184419
 test-amd64-i386-libvirt-xsm  15 migrate-support-check        fail   never pass
 test-amd64-i386-libvirt      15 migrate-support-check        fail   never pass
 test-amd64-i386-xl-pvshim    14 guest-start                  fail   never pass
 test-amd64-amd64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl          15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl          16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-xsm      15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-xsm      16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-credit2  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit2  16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-credit1  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit1  16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-thunderx 15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-thunderx 16 saverestore-support-check    fail   never pass
 test-arm64-arm64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-xsm 16 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt     15 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-armhf-armhf-xl-credit2  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit2  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-multivcpu 15 migrate-support-check        fail  never pass
 test-armhf-armhf-xl-multivcpu 16 saverestore-support-check    fail  never pass
 test-amd64-i386-libvirt-raw  14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 15 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-vhd 14 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-vhd      14 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-vhd      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-raw 14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-credit1  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit1  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-rtds     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-rtds     16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-arndale  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-arndale  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-qcow2 14 migrate-support-check        fail never pass

version targeted for testing:
 xen                  4900c939cb9b876c51cfc7a4c854f54c722a30b5
baseline version:
 xen                  b25607e528f6ce7851e907ed59ad5ff583aa1840

Last test of basis   184419  2024-01-22 01:53:59 Z    0 days
Testing same since   184426  2024-01-22 16:37:16 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Jan Beulich <jbeulich@suse.com>

jobs:
 build-amd64-xsm                                              pass    
 build-arm64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64-xtf                                              pass    
 build-amd64                                                  pass    
 build-arm64                                                  pass    
 build-armhf                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-arm64-libvirt                                          pass    
 build-armhf-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-prev                                             pass    
 build-i386-prev                                              pass    
 build-amd64-pvops                                            pass    
 build-arm64-pvops                                            pass    
 build-armhf-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-xtf-amd64-amd64-1                                       pass    
 test-xtf-amd64-amd64-2                                       pass    
 test-xtf-amd64-amd64-3                                       pass    
 test-xtf-amd64-amd64-4                                       pass    
 test-xtf-amd64-amd64-5                                       pass    
 test-amd64-amd64-xl                                          pass    
 test-amd64-coresched-amd64-xl                                pass    
 test-arm64-arm64-xl                                          pass    
 test-armhf-armhf-xl                                          pass    
 test-amd64-i386-xl                                           pass    
 test-amd64-coresched-i386-xl                                 pass    
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm           pass    
 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm            pass    
 test-amd64-amd64-xl-qemut-stubdom-debianhvm-amd64-xsm        pass    
 test-amd64-i386-xl-qemut-stubdom-debianhvm-amd64-xsm         pass    
 test-amd64-amd64-xl-qemut-debianhvm-i386-xsm                 pass    
 test-amd64-i386-xl-qemut-debianhvm-i386-xsm                  pass    
 test-amd64-amd64-xl-qemuu-debianhvm-i386-xsm                 pass    
 test-amd64-i386-xl-qemuu-debianhvm-i386-xsm                  pass    
 test-amd64-amd64-libvirt-xsm                                 pass    
 test-arm64-arm64-libvirt-xsm                                 pass    
 test-amd64-i386-libvirt-xsm                                  pass    
 test-amd64-amd64-xl-xsm                                      pass    
 test-arm64-arm64-xl-xsm                                      pass    
 test-amd64-i386-xl-xsm                                       pass    
 test-amd64-amd64-qemuu-nested-amd                            fail    
 test-amd64-amd64-xl-pvhv2-amd                                pass    
 test-amd64-i386-qemut-rhel6hvm-amd                           pass    
 test-amd64-i386-qemuu-rhel6hvm-amd                           pass    
 test-amd64-amd64-dom0pvh-xl-amd                              pass    
 test-amd64-amd64-xl-qemut-debianhvm-amd64                    pass    
 test-amd64-i386-xl-qemut-debianhvm-amd64                     pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64                    pass    
 test-amd64-i386-xl-qemuu-debianhvm-amd64                     pass    
 test-amd64-i386-freebsd10-amd64                              pass    
 test-amd64-amd64-qemuu-freebsd11-amd64                       pass    
 test-amd64-amd64-qemuu-freebsd12-amd64                       pass    
 test-amd64-amd64-xl-qemuu-ovmf-amd64                         pass    
 test-amd64-i386-xl-qemuu-ovmf-amd64                          pass    
 test-amd64-amd64-xl-qemut-win7-amd64                         fail    
 test-amd64-i386-xl-qemut-win7-amd64                          fail    
 test-amd64-amd64-xl-qemuu-win7-amd64                         fail    
 test-amd64-i386-xl-qemuu-win7-amd64                          fail    
 test-amd64-amd64-xl-qemut-ws16-amd64                         fail    
 test-amd64-i386-xl-qemut-ws16-amd64                          fail    
 test-amd64-amd64-xl-qemuu-ws16-amd64                         fail    
 test-amd64-i386-xl-qemuu-ws16-amd64                          fail    
 test-armhf-armhf-xl-arndale                                  pass    
 test-amd64-amd64-examine-bios                                pass    
 test-amd64-i386-examine-bios                                 pass    
 test-amd64-amd64-xl-credit1                                  pass    
 test-arm64-arm64-xl-credit1                                  pass    
 test-armhf-armhf-xl-credit1                                  pass    
 test-amd64-amd64-xl-credit2                                  pass    
 test-arm64-arm64-xl-credit2                                  pass    
 test-armhf-armhf-xl-credit2                                  pass    
 test-amd64-amd64-xl-qemuu-dmrestrict-amd64-dmrestrict        pass    
 test-amd64-i386-xl-qemuu-dmrestrict-amd64-dmrestrict         pass    
 test-amd64-amd64-examine                                     pass    
 test-arm64-arm64-examine                                     pass    
 test-armhf-armhf-examine                                     pass    
 test-amd64-i386-examine                                      pass    
 test-amd64-i386-freebsd10-i386                               pass    
 test-amd64-amd64-qemuu-nested-intel                          pass    
 test-amd64-amd64-xl-pvhv2-intel                              pass    
 test-amd64-i386-qemut-rhel6hvm-intel                         pass    
 test-amd64-i386-qemuu-rhel6hvm-intel                         pass    
 test-amd64-amd64-dom0pvh-xl-intel                            pass    
 test-amd64-amd64-libvirt                                     pass    
 test-armhf-armhf-libvirt                                     pass    
 test-amd64-i386-libvirt                                      pass    
 test-amd64-amd64-livepatch                                   pass    
 test-amd64-i386-livepatch                                    pass    
 test-amd64-amd64-migrupgrade                                 pass    
 test-amd64-i386-migrupgrade                                  pass    
 test-amd64-amd64-xl-multivcpu                                pass    
 test-armhf-armhf-xl-multivcpu                                pass    
 test-amd64-amd64-pair                                        pass    
 test-amd64-i386-pair                                         pass    
 test-amd64-amd64-libvirt-pair                                pass    
 test-amd64-i386-libvirt-pair                                 pass    
 test-amd64-amd64-xl-pvshim                                   pass    
 test-amd64-i386-xl-pvshim                                    fail    
 test-amd64-amd64-pygrub                                      pass    
 test-armhf-armhf-libvirt-qcow2                               pass    
 test-amd64-amd64-xl-qcow2                                    pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-armhf-armhf-libvirt-raw                                 pass    
 test-amd64-i386-libvirt-raw                                  pass    
 test-amd64-amd64-xl-rtds                                     pass    
 test-armhf-armhf-xl-rtds                                     pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64-shadow             pass    
 test-amd64-i386-xl-qemuu-debianhvm-amd64-shadow              pass    
 test-amd64-amd64-xl-shadow                                   pass    
 test-amd64-i386-xl-shadow                                    pass    
 test-arm64-arm64-xl-thunderx                                 pass    
 test-amd64-amd64-examine-uefi                                pass    
 test-amd64-i386-examine-uefi                                 pass    
 test-amd64-amd64-libvirt-vhd                                 pass    
 test-arm64-arm64-xl-vhd                                      pass    
 test-armhf-armhf-xl-vhd                                      fail    
 test-amd64-i386-xl-vhd                                       pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Pushing revision :

To xenbits.xen.org:/home/xen/git/xen.git
   b25607e528..4900c939cb  4900c939cb9b876c51cfc7a4c854f54c722a30b5 -> master


From xen-devel-bounces@lists.xenproject.org Tue Jan 23 03:00:39 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 23 Jan 2024 03:00:39 +0000
Received: from list by lists.xenproject.org with outflank-mailman.670254.1042883 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rS71U-0005yp-9A; Tue, 23 Jan 2024 03:00:24 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 670254.1042883; Tue, 23 Jan 2024 03:00:24 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rS71U-0005yi-6F; Tue, 23 Jan 2024 03:00:24 +0000
Received: by outflank-mailman (input) for mailman id 670254;
 Tue, 23 Jan 2024 03:00:22 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=RKfG=JB=raptorengineering.com=sanastasio@srs-se1.protection.inumbo.net>)
 id 1rS71S-0005yc-ON
 for xen-devel@lists.xenproject.org; Tue, 23 Jan 2024 03:00:22 +0000
Received: from raptorengineering.com (mail.raptorengineering.com
 [23.155.224.40]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 89ed8bcf-b99b-11ee-9b0f-b553b5be7939;
 Tue, 23 Jan 2024 04:00:19 +0100 (CET)
Received: from localhost (localhost [127.0.0.1])
 by mail.rptsys.com (Postfix) with ESMTP id 2B05382852F8;
 Mon, 22 Jan 2024 21:00:17 -0600 (CST)
Received: from mail.rptsys.com ([127.0.0.1])
 by localhost (vali.starlink.edu [127.0.0.1]) (amavisd-new, port 10032)
 with ESMTP id 0nZtAI5wcERK; Mon, 22 Jan 2024 21:00:14 -0600 (CST)
Received: from localhost (localhost [127.0.0.1])
 by mail.rptsys.com (Postfix) with ESMTP id 71EF98286A0A;
 Mon, 22 Jan 2024 21:00:14 -0600 (CST)
Received: from mail.rptsys.com ([127.0.0.1])
 by localhost (vali.starlink.edu [127.0.0.1]) (amavisd-new, port 10026)
 with ESMTP id 1yMEF42124QB; Mon, 22 Jan 2024 21:00:14 -0600 (CST)
Received: from [10.11.0.2] (5.edge.rptsys.com [23.155.224.38])
 by mail.rptsys.com (Postfix) with ESMTPSA id 11DC082852F8;
 Mon, 22 Jan 2024 21:00:13 -0600 (CST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 89ed8bcf-b99b-11ee-9b0f-b553b5be7939
DKIM-Filter: OpenDKIM Filter v2.10.3 mail.rptsys.com 71EF98286A0A
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
	d=raptorengineering.com; s=B8E824E6-0BE2-11E6-931D-288C65937AAD;
	t=1705978814; bh=6nBjbY/a28HF116novgwbG1DqcXdYEgIhwiDScwEHLY=;
	h=Message-ID:Date:MIME-Version:To:From;
	b=MfgzuVG9yw6m8leGAZw4MtoIcskyjmFU/IoJ+Hl7pUuFilgQHL4F2trLlbKKUyxnd
	 ZXrHOFBYG61RgtBJyBkACoBKos4is8aLoAuZJbgG7uBQ+61LBGLlQJZJ9k8pJYp6jf
	 Oaj/Z3NG/6xX/dStHDwZmjOONwrF5OY6WR7fhjOo=
X-Virus-Scanned: amavisd-new at rptsys.com
Message-ID: <4378a444-a4dc-4904-9cd9-1e555542ad42@raptorengineering.com>
Date: Mon, 22 Jan 2024 21:00:13 -0600
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: Ping: [PATCH v5 6/8] PPC: switch entry point annotations to
 common model
Content-Language: en-US
To: Jan Beulich <jbeulich@suse.com>
Cc: George Dunlap <george.dunlap@citrix.com>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
References: <e4bf47ca-2ae6-1fd4-56a6-e4e777150b64@suse.com>
 <7a133ed9-9d13-4e2c-893a-00c083c8a35d@suse.com>
 <36004375-1398-4f94-b455-8bfdafe0c9d7@suse.com>
 <49798d43-00c8-40e0-bb65-4f5e699c4d76@suse.com>
From: Shawn Anastasio <sanastasio@raptorengineering.com>
In-Reply-To: <49798d43-00c8-40e0-bb65-4f5e699c4d76@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

Hi Jan,

On 1/22/24 7:20 AM, Jan Beulich wrote:
> On 15.01.2024 15:38, Jan Beulich wrote:
>> Use the generic framework in xen/linkage.h. No change in generated code
>> except of course the converted symbols change to be hidden ones.
>>
>> Signed-off-by: Jan Beulich <jbeulich@suse.com>
> 
> The other architectures have been at least partly switched; would be nice
> for PPC to follow suit. May I ask for an ack (or otherwise here), please?
>

Sorry for the delay.

Acked-by: Shawn Anastasio <sanastasio@raptorengineering.com>

> Thanks, Jan

Thanks,
Shawn


From xen-devel-bounces@lists.xenproject.org Tue Jan 23 04:57:32 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 23 Jan 2024 04:57:32 +0000
Received: from list by lists.xenproject.org with outflank-mailman.670261.1042893 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rS8qZ-0003Kv-Iu; Tue, 23 Jan 2024 04:57:15 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 670261.1042893; Tue, 23 Jan 2024 04:57:15 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rS8qZ-0003Ko-Ft; Tue, 23 Jan 2024 04:57:15 +0000
Received: by outflank-mailman (input) for mailman id 670261;
 Tue, 23 Jan 2024 04:57:13 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rS8qX-0003Ke-SG; Tue, 23 Jan 2024 04:57:13 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rS8qX-0004tp-Hq; Tue, 23 Jan 2024 04:57:13 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rS8qX-00028p-1I; Tue, 23 Jan 2024 04:57:13 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rS8qX-0003d5-0n; Tue, 23 Jan 2024 04:57:13 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=r3SYWBMfyeuWYHvGeIdGYmiielsFFj66FOgbCqNJphA=; b=eFvjedCd3OHGGEvnYXW1FqZ6Ut
	BlqMx9bEgvy4zz2Bq13q8x1ohKxXvHP/NsNz6zGf11MiM4x5uRQXCilhbZH/Caie6pa87t4sygqfL
	EVfEuFZqwiFKgutO8FYom3cKNOboIrYwdjGcCM6fwpj4B0T+QPpN7LhLFVziCvAAv474=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184427-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [linux-linus test] 184427: tolerable FAIL - PUSHED
X-Osstest-Failures:
    linux-linus:test-arm64-arm64-xl-credit2:guest-start/debian.repeat:fail:heisenbug
    linux-linus:test-armhf-armhf-libvirt:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    linux-linus:test-amd64-amd64-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    linux-linus:test-amd64-amd64-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-raw:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-qcow2:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-qemuu-nested-amd:debian-hvm-install/l1/l2:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-xsm:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-thunderx:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-xsm:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-xsm:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-thunderx:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-libvirt-xsm:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-libvirt-xsm:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-credit2:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-credit2:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-credit1:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-credit1:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-arndale:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-arndale:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-multivcpu:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-multivcpu:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-rtds:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-rtds:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-libvirt-raw:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-vhd:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-vhd:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-vhd:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-vhd:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-qcow2:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit1:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit1:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit2:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit2:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-qcow2:migrate-support-check:fail:nonblocking
X-Osstest-Versions-This:
    linux=610347effc2ecb5ededf5037e82240b151f883ab
X-Osstest-Versions-That:
    linux=6613476e225e090cc9aad49be7fa504e290dd33d
From: osstest service owner <osstest-admin@xenproject.org>
Date: Tue, 23 Jan 2024 04:57:13 +0000

flight 184427 linux-linus real [real]
flight 184430 linux-linus real-retest [real]
http://logs.test-lab.xenproject.org/osstest/logs/184427/
http://logs.test-lab.xenproject.org/osstest/logs/184430/

Failures :-/ but no regressions.

Tests which are failing intermittently (not blocking):
 test-arm64-arm64-xl-credit2 18 guest-start/debian.repeat fail pass in 184430-retest

Tests which did not succeed, but are not blocking:
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 184422
 test-amd64-amd64-xl-qemut-win7-amd64 19 guest-stop            fail like 184422
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 184422
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 184422
 test-armhf-armhf-libvirt-raw 15 saverestore-support-check    fail  like 184422
 test-amd64-amd64-xl-qemut-ws16-amd64 19 guest-stop            fail like 184422
 test-armhf-armhf-libvirt-qcow2 15 saverestore-support-check   fail like 184422
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 184422
 test-amd64-amd64-libvirt     15 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-thunderx 15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-xsm      15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-xsm      16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-thunderx 16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl          15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl          16 saverestore-support-check    fail   never pass
 test-arm64-arm64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-xsm 16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-credit2  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit2  16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-credit1  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit1  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-arndale  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-arndale  16 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-armhf-armhf-xl-multivcpu 15 migrate-support-check        fail  never pass
 test-armhf-armhf-xl-multivcpu 16 saverestore-support-check    fail  never pass
 test-armhf-armhf-libvirt     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-rtds     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-rtds     16 saverestore-support-check    fail   never pass
 test-arm64-arm64-libvirt-raw 14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 15 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-raw 14 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-vhd      14 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-vhd      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-raw 14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      15 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-qcow2 14 migrate-support-check        fail never pass
 test-armhf-armhf-xl          15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-credit1  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit1  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-credit2  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit2  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-qcow2 14 migrate-support-check        fail never pass

version targeted for testing:
 linux                610347effc2ecb5ededf5037e82240b151f883ab
baseline version:
 linux                6613476e225e090cc9aad49be7fa504e290dd33d

Last test of basis   184422  2024-01-22 03:31:56 Z    1 days
Testing same since   184427  2024-01-22 18:10:39 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Gustavo A. R. Silva <gustavoars@kernel.org>
  Jan Beulich <jbeulich@suse.com>
  Linus Torvalds <torvalds@linux-foundation.org>

jobs:
 build-amd64-xsm                                              pass    
 build-arm64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64                                                  pass    
 build-arm64                                                  pass    
 build-armhf                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-arm64-libvirt                                          pass    
 build-armhf-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-pvops                                            pass    
 build-arm64-pvops                                            pass    
 build-armhf-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-amd64-amd64-xl                                          pass    
 test-amd64-coresched-amd64-xl                                pass    
 test-arm64-arm64-xl                                          pass    
 test-armhf-armhf-xl                                          pass    
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm           pass    
 test-amd64-amd64-xl-qemut-stubdom-debianhvm-amd64-xsm        pass    
 test-amd64-amd64-xl-qemut-debianhvm-i386-xsm                 pass    
 test-amd64-amd64-xl-qemuu-debianhvm-i386-xsm                 pass    
 test-amd64-amd64-libvirt-xsm                                 pass    
 test-arm64-arm64-libvirt-xsm                                 pass    
 test-amd64-amd64-xl-xsm                                      pass    
 test-arm64-arm64-xl-xsm                                      pass    
 test-amd64-amd64-qemuu-nested-amd                            fail    
 test-amd64-amd64-xl-pvhv2-amd                                pass    
 test-amd64-amd64-dom0pvh-xl-amd                              pass    
 test-amd64-amd64-xl-qemut-debianhvm-amd64                    pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64                    pass    
 test-amd64-amd64-freebsd11-amd64                             pass    
 test-amd64-amd64-freebsd12-amd64                             pass    
 test-amd64-amd64-xl-qemuu-ovmf-amd64                         pass    
 test-amd64-amd64-xl-qemut-win7-amd64                         fail    
 test-amd64-amd64-xl-qemuu-win7-amd64                         fail    
 test-amd64-amd64-xl-qemut-ws16-amd64                         fail    
 test-amd64-amd64-xl-qemuu-ws16-amd64                         fail    
 test-armhf-armhf-xl-arndale                                  pass    
 test-amd64-amd64-examine-bios                                pass    
 test-amd64-amd64-xl-credit1                                  pass    
 test-arm64-arm64-xl-credit1                                  pass    
 test-armhf-armhf-xl-credit1                                  pass    
 test-amd64-amd64-xl-credit2                                  pass    
 test-arm64-arm64-xl-credit2                                  fail    
 test-armhf-armhf-xl-credit2                                  pass    
 test-amd64-amd64-xl-qemuu-dmrestrict-amd64-dmrestrict        pass    
 test-amd64-amd64-examine                                     pass    
 test-arm64-arm64-examine                                     pass    
 test-armhf-armhf-examine                                     pass    
 test-amd64-amd64-qemuu-nested-intel                          pass    
 test-amd64-amd64-xl-pvhv2-intel                              pass    
 test-amd64-amd64-dom0pvh-xl-intel                            pass    
 test-amd64-amd64-libvirt                                     pass    
 test-armhf-armhf-libvirt                                     pass    
 test-amd64-amd64-xl-multivcpu                                pass    
 test-armhf-armhf-xl-multivcpu                                pass    
 test-amd64-amd64-pair                                        pass    
 test-amd64-amd64-libvirt-pair                                pass    
 test-amd64-amd64-xl-pvshim                                   pass    
 test-amd64-amd64-pygrub                                      pass    
 test-amd64-amd64-libvirt-qcow2                               pass    
 test-armhf-armhf-libvirt-qcow2                               pass    
 test-amd64-amd64-libvirt-raw                                 pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-armhf-armhf-libvirt-raw                                 pass    
 test-amd64-amd64-xl-rtds                                     pass    
 test-armhf-armhf-xl-rtds                                     pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64-shadow             pass    
 test-amd64-amd64-xl-shadow                                   pass    
 test-arm64-arm64-xl-thunderx                                 pass    
 test-amd64-amd64-examine-uefi                                pass    
 test-amd64-amd64-xl-vhd                                      pass    
 test-arm64-arm64-xl-vhd                                      pass    
 test-armhf-armhf-xl-vhd                                      pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Pushing revision :

hint: The 'hooks/update' hook was ignored because it's not set as executable.
hint: You can disable this warning with `git config advice.ignoredHook false`.
hint: The 'hooks/post-receive' hook was ignored because it's not set as executable.
hint: You can disable this warning with `git config advice.ignoredHook false`.
hint: The 'hooks/post-update' hook was ignored because it's not set as executable.
hint: You can disable this warning with `git config advice.ignoredHook false`.
To xenbits.xen.org:/home/xen/git/linux-pvops.git
   6613476e225e..610347effc2e  610347effc2ecb5ededf5037e82240b151f883ab -> tested/linux-linus


From xen-devel-bounces@lists.xenproject.org Tue Jan 23 07:35:22 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 23 Jan 2024 07:35:22 +0000
Received: from list by lists.xenproject.org with outflank-mailman.670268.1042903 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSBJK-00055w-JQ; Tue, 23 Jan 2024 07:35:06 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 670268.1042903; Tue, 23 Jan 2024 07:35:06 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSBJK-00055p-Fp; Tue, 23 Jan 2024 07:35:06 +0000
Received: by outflank-mailman (input) for mailman id 670268;
 Tue, 23 Jan 2024 07:35:04 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=9pmr=JB=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rSBJI-00055d-L9
 for xen-devel@lists.xenproject.org; Tue, 23 Jan 2024 07:35:04 +0000
Received: from mail-ed1-x530.google.com (mail-ed1-x530.google.com
 [2a00:1450:4864:20::530])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id ebb22a6c-b9c1-11ee-98f4-6d05b1d4d9a1;
 Tue, 23 Jan 2024 08:35:03 +0100 (CET)
Received: by mail-ed1-x530.google.com with SMTP id
 4fb4d7f45d1cf-55c6bc3dd54so1660049a12.1
 for <xen-devel@lists.xenproject.org>; Mon, 22 Jan 2024 23:35:03 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 l4-20020a056e020e4400b00361a956a57bsm3068606ilk.53.2024.01.22.23.35.01
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 22 Jan 2024 23:35:02 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: ebb22a6c-b9c1-11ee-98f4-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1705995302; x=1706600102; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=F2YMk1NYsryxpouxVJNNVfxMvdmZjN9wWwIYofwyfSk=;
        b=TO8s+kffylfy0XzQ4vkK/+1alLRiED/iBWkuvFG3AaZQ86N40oQMY5udQIGLOboEnF
         bM6gsWueI4la2Nd5h6wnmR+/gsieaUrnVnLvo1MOXZmU53Hbuz/OUNdwCMGDRInGzQe2
         00jF1N4kx+oxL8fb1ob9kCpOiS602KiJza814IzjTo+VfXrqSmTgTMbI8HCa/rHpIkEH
         bjepYiIkcZoGhz4yKpJ4htapoEKl83aCNSe9WgIn7LUwgDuTEyaXqAC2pglkl18bI7lN
         l21Kt4aQ8mVhDJa+ZbdcoLLncpIo7C6mvgu2Gi/U53oj3yTjNXgQI/kSx1PTf5nHnLUY
         seMA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705995302; x=1706600102;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=F2YMk1NYsryxpouxVJNNVfxMvdmZjN9wWwIYofwyfSk=;
        b=jP/6g6fDTxsa0o/URaxBOwkdOvC/nCI2mDs8V/w2rizgxPUG2M8cc99YjJCjBPtDZ6
         rUxIj9WgHjPbjHwcwEmD6rtmq1g/sDfk2nSSXEEEMpF3Qea77+P8C+3bU274DO0CDDWo
         SkJASB+NW47f90ViSSHbe2RfFO4yBlih+hehBXZX9n9WGynDfWf28Onh8qr4U0CdvFlm
         NYIzVZ1Z1A0mIvE0iDKBgHiOtwHsnPos9Wbx2niHVgZeJmHrcRaaHs+oBPyf3tqyV0KF
         fw10NWgotNaShHMwOuxGrdwlJYncQrXSVekkiTV65TP1W69GLDTCUfNp1Kst6X63sCpi
         ZEiA==
X-Gm-Message-State: AOJu0YzdX/XYEYRPsa31spsnya9tqdBcYc9bc6H+xe5kPlg3Bo1RWdNc
	HLOJ9Wty90u28IZdUbmiCR03MGjzovVO3xzhK8XeBtWkS3mqpmEc8R8DtilAVQ==
X-Google-Smtp-Source: AGHT+IFJcQFCXTzzM4K6+LH482bXtl399K3xjD0TTg9Or2/V83r+/5vMRGK7+niBaMDuki71siwblQ==
X-Received: by 2002:a17:906:3044:b0:a2f:ebb:f200 with SMTP id d4-20020a170906304400b00a2f0ebbf200mr7115221ejd.9.1705995302591;
        Mon, 22 Jan 2024 23:35:02 -0800 (PST)
Message-ID: <ecddb385-fc87-412b-a956-0a08237cc120@suse.com>
Date: Tue, 23 Jan 2024 08:34:59 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: Community Process Group - Proposal
Content-Language: en-US
To: Stefano Stabellini <sstabellini@kernel.org>
Cc: Kelly Choi <kelly.choi@cloud.com>, committers@xenproject.org,
 advisory-board@lists.xenproject.org, xen-devel@lists.xenproject.org
References: <CAO-mL=yvVWjnOHSFSqcrknoXOqk-N3JY76qObQnzftrkmsq6xw@mail.gmail.com>
 <5309e7d3-7b3c-4522-99dc-bbd7734aeb34@suse.com>
 <alpine.DEB.2.22.394.2401221434440.2287888@ubuntu-linux-20-04-desktop>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <alpine.DEB.2.22.394.2401221434440.2287888@ubuntu-linux-20-04-desktop>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 22.01.2024 23:47, Stefano Stabellini wrote:
> On Mon, 22 Jan 2024, Jan Beulich wrote:
>> What definitely needs clarifying is what "review" is: Are R-b tags
>> counted, or is it the number of replies sent commenting on patches?
> 
> Yes, I think this needs to be clarified. I would say Reviewed-by tags.

Which may end up unfair. It's not uncommon for one person to do a lot
of review on a patch, and for someone else to then ack the final
version that goes in. In the end this is then no different from basing
the decision on simple numbers, without regard to actual (potentially
heavily differing) effort behind each individual instance.

Jan


From xen-devel-bounces@lists.xenproject.org Tue Jan 23 07:53:38 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 23 Jan 2024 07:53:38 +0000
Received: from list by lists.xenproject.org with outflank-mailman.670273.1042915 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSBb1-00080N-20; Tue, 23 Jan 2024 07:53:23 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 670273.1042915; Tue, 23 Jan 2024 07:53:23 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSBb0-00080G-VZ; Tue, 23 Jan 2024 07:53:22 +0000
Received: by outflank-mailman (input) for mailman id 670273;
 Tue, 23 Jan 2024 07:53:21 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=9pmr=JB=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rSBaz-000808-L8
 for xen-devel@lists.xenproject.org; Tue, 23 Jan 2024 07:53:21 +0000
Received: from mail-lj1-x229.google.com (mail-lj1-x229.google.com
 [2a00:1450:4864:20::229])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 79dd899b-b9c4-11ee-98f4-6d05b1d4d9a1;
 Tue, 23 Jan 2024 08:53:20 +0100 (CET)
Received: by mail-lj1-x229.google.com with SMTP id
 38308e7fff4ca-2cf12a9be5bso3744091fa.0
 for <xen-devel@lists.xenproject.org>; Mon, 22 Jan 2024 23:53:20 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 3-20020a056e0220c300b00361bc7aa20bsm2109638ilq.11.2024.01.22.23.53.17
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 22 Jan 2024 23:53:19 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 79dd899b-b9c4-11ee-98f4-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1705996400; x=1706601200; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=cLsRTpIUOlBKq1lGMPDxP726lbbRJPfyITbW3xnmpBQ=;
        b=IXqTfxpbmeB6z60rqNwhg6qyeCc3NVSGN+rOPtS1rQwGIdTlg9BCKDEZJsjQ3jMtLH
         V1iWEIB2DWId0EH4ONXxckrLgU/LxiHBKbLU5UT07dkP/dxoFfPg/WHTeI9OBgluSZWP
         UsQdGX3lcFcedppC+3zYEBdNQcYNcLY2RUDjutEzpSPnbvgpka6avmnIYA4L/HAsSSfV
         7z0i1erPqgAZXv2j6xOYs7ak6qsQMSn2tJyv0e7UAPkFOTtU/gmLjI4h80k1WlWkK0+x
         Y8rqNjiPizZPFOUUaon6NyAz4HnEOlx+u9n7HLSGL5glqUJ2LhajJbrns1fI438RzmaA
         SLBQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705996400; x=1706601200;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=cLsRTpIUOlBKq1lGMPDxP726lbbRJPfyITbW3xnmpBQ=;
        b=t4Sh6RvTb2unnst75vQwoprS64LnF8UHbjeTZi51jRU3AzpdeklJwd5gGb6q2//3RJ
         oFWVFFwD3djZvP/NnPVkehdZAbGmTonHnIlXeS2pIr56sy4bxotrx/oVYmRFBDdSphfy
         BWzBv0Gm31V2AiyBPEt2XbOZXyBtXC1MHmFisoo7NXi/gmtKGWlzDeHUCFf/YcQdL8Hj
         v6WJoWov1600AWJFhFO5p4LVVUM4aihthUp2VXQnlUIAfhyfv4TdojFJEtL8PZs3ez2k
         wmTyCOk4UImCd+nsiG5VI22CmH7I4cugJHXZDwSdeNfAA/LtmMT28p7tNm1ie3guGrsJ
         v0XQ==
X-Gm-Message-State: AOJu0YwDYuXw1q52iMfkZC0OJfpBZg/34FNReGs+l0f4MVAI4zq/8XzE
	y94NsH2FKf3/faVKQ8TARu9wKLcsU5pX8s2BtsABZv0xBmV+pxwItxa3Zncr/Q==
X-Google-Smtp-Source: AGHT+IFRQMFyakGYQktiparn9y5c8qG0L2LfEc+8NlwlpfAauLi25EOCPORCtNPMk9Gu38SOxIbxYw==
X-Received: by 2002:a2e:9813:0:b0:2cc:eefc:20af with SMTP id a19-20020a2e9813000000b002cceefc20afmr2072154ljj.52.1705996399985;
        Mon, 22 Jan 2024 23:53:19 -0800 (PST)
Message-ID: <ab34df2d-ba47-46c0-a0f2-9c051f640906@suse.com>
Date: Tue, 23 Jan 2024 08:53:15 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v5] x86/livepatch: align functions to ensure minimal
 distance between entry points
Content-Language: en-US
To: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 George Dunlap <george.dunlap@citrix.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>,
 Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>,
 Ross Lagerwall <ross.lagerwall@citrix.com>,
 Bertrand Marquis <bertrand.marquis@arm.com>,
 Michal Orzel <michal.orzel@amd.com>,
 Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
 xen-devel@lists.xenproject.org
References: <20240122110244.14091-1-roger.pau@citrix.com>
 <013210fd-6ea3-4719-afcd-1da97d9cd17f@suse.com> <Za6laZtVdQtFP4F5@macbook>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <Za6laZtVdQtFP4F5@macbook>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 22.01.2024 18:27, Roger Pau Monné wrote:
> On Mon, Jan 22, 2024 at 12:21:47PM +0100, Jan Beulich wrote:
>> On 22.01.2024 12:02, Roger Pau Monne wrote:
>>> --- a/xen/arch/x86/xen.lds.S
>>> +++ b/xen/arch/x86/xen.lds.S
>>> @@ -99,6 +99,10 @@ SECTIONS
>>>         *(.text)
>>>  #ifdef CONFIG_CC_SPLIT_SECTIONS
>>>         *(.text.*)
>>> +#endif
>>> +#ifdef CONFIG_FUNCTION_ALIGNMENT
>>> +       /* Ensure enough distance with the next placed section. */
>>> +       . = ALIGN(CONFIG_FUNCTION_ALIGNMENT);
>>>  #endif
>>>         *(.text.__x86_indirect_thunk_*)
>>
>> I continue to fail to see how an alignment directive can guarantee minimum
>> distance. In the worst case such a directive inserts nothing at all.
> 
> I'm confused, you did provide a RB for this in v4:
> 
> https://lore.kernel.org/xen-devel/4cad003f-dda0-4e22-a770-5a5ff56f4d35@suse.com/
> 
> Which is basically the same code with a few comments and wording
> adjustments.

Hmm, yes. I think the aspect above was raised before, but then (perhaps)
kind of addressed. (I'm puzzled then too: Why did you drop the R-b, when
nothing substantially changed?) Yet re-reading the description, there's
nothing said to this effect. Specifically ...

>> IOW
>> at the very least there's a non-spelled-out assumption here about the last
>> item in the earlier section having suitable alignment and thus, if small
>> in size, being suitably padded.
> 
> Please bear with me, but I'm afraid I don't understand your concerns.
> 
> For livepatch build tools (which is the only consumer of such
> alignments) we already have the requirement that a function in order
> to be suitable for being live patched must reside in it's own
> section.
> 
> We do want to aim for functions (even assembly ones) to live in their
> own sections in order to be live patched, and to be properly aligned.
> However it's also fine for functions to use a different (smaller)
> alignment, the livepatch build tools will detect this and use the
> alignment reported.

... I don't think this and ...

> While we want to get to a point where everything that we care to patch
> lives in it's own section, and is properly padded to ensure minimal
> required space, I don't see why the proposed approach here should be
> blocked, as it's a step in the right direction of achieving the
> goal.
> 
> Granted, there's still assembly code that won't be suitably padded,
> but the livepatch build tools won't assume it to be padded.

... this is being pointed out. Which I think is relevant to make
explicit not the least because the build tools aren't part of the main
Xen tree. Plus many (like me) may not be overly familiar with how they
work.

>  After
> your series to enable assembly annotations we can also make sure the
> assembly annotated functions live in separate sections and are
> suitably aligned.
> 
>> Personally I don't think merely spelling
>> out such a requirement would help - it would end up being a trap for
>> someone to fall into.
> 
>> I'm further curious why .text.__x86_indirect_thunk_* is left past the
>> inserted alignment. While pretty unlikely, isn't it in principle possible
>> for the thunks there to also need patching? Aren't we instead requiring
>> then that assembly functions (and thunks) all be suitably aligned as well?
> 
> Those are defined in assembly, so requires CONFIG_FUNCTION_ALIGNMENT
> to also be applied to the function entry points in assembly files.

I see. Yet the question then remains: Why is the alignment not inserted
after them? Or will the insertion need to move later on (which would feel
odd)?

Jan


From xen-devel-bounces@lists.xenproject.org Tue Jan 23 07:55:57 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 23 Jan 2024 07:55:57 +0000
Received: from list by lists.xenproject.org with outflank-mailman.670277.1042925 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSBdP-00009l-FN; Tue, 23 Jan 2024 07:55:51 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 670277.1042925; Tue, 23 Jan 2024 07:55:51 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSBdP-00009d-Cf; Tue, 23 Jan 2024 07:55:51 +0000
Received: by outflank-mailman (input) for mailman id 670277;
 Tue, 23 Jan 2024 07:55:50 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=9pmr=JB=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rSBdO-00009V-RR
 for xen-devel@lists.xenproject.org; Tue, 23 Jan 2024 07:55:50 +0000
Received: from mail-lj1-x232.google.com (mail-lj1-x232.google.com
 [2a00:1450:4864:20::232])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id d25e6468-b9c4-11ee-9b0f-b553b5be7939;
 Tue, 23 Jan 2024 08:55:49 +0100 (CET)
Received: by mail-lj1-x232.google.com with SMTP id
 38308e7fff4ca-2cf1288097aso3016271fa.0
 for <xen-devel@lists.xenproject.org>; Mon, 22 Jan 2024 23:55:49 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 a8-20020a029408000000b0046edc723291sm1426989jai.78.2024.01.22.23.55.46
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 22 Jan 2024 23:55:48 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: d25e6468-b9c4-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1705996548; x=1706601348; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=TcDZ9mN+FRhUYNa88zGuloBXNab4ChQevtTM4gkLaHM=;
        b=ZwvngqLAgJeYTHhBbNudAgSCyh5mBmGA6DGMxsSIUr338bNsfDTAv1B5YQAI1zZ+Uv
         opYyNCGf+oMXQ9somCsnJHmEM9qDuXx1XvftC1/kHS3JiFYfRGphMNAKhrq0TA2wvhx9
         ZNzHCUSpBGAUE7FE7n8xqpZw6MUdrynhTgXwhialxnNRhnq85qU6tTyx+1k3npXkLUN/
         fNodjs71G7mGFjuwBJXuXpT3pHqeA3EBmx0aJIXugXnj9vtG9gHOUMiQmXTqPHH9pXfQ
         /f5u+Pkq05ZUh8v9xutE4izEGDAqF6nAodzgQjtwn2kLmdu5ZpCqA0AIBwIMzwYvzk5H
         rhqA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705996548; x=1706601348;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=TcDZ9mN+FRhUYNa88zGuloBXNab4ChQevtTM4gkLaHM=;
        b=t/SipWx6XpkE0+ERJO6eAx/TfGCFWTilfbSiUTqLOZW82AWXbgAJop8+oC8ORLlWha
         qxgR+qmXdw791CKBb/zUKczsAJwkx/Imk/GIhWAR79u3CUFujSnKOsLhofBU1UGtAyCC
         9HnOLfn+nYii/xoMXFzBwOS98hKjmMnLRuKc5zNOSRiFoFPbD/hQ/3UuW6BzVREfHfJL
         2rkWgNN47eEt63CZiASWW++EWLfMwnrOsv8XlhKOqVeTVpe506Wpa6dLcjLJoRlDLmSw
         aeAiMyPuhtmg5T8vlGHeG/sxAgfS6SNuIBhoSbPzw+1DIwqjRWRYxFrjmJj1pdEZ53SJ
         zTnw==
X-Gm-Message-State: AOJu0Yw4DAJyfbA42dM9WIlTJEoN349FSdCzTUJ5LjFQUqZ/l65sIK40
	6QoaU2LT3MAc+Isi1Tu3PgCPwzvFzi0SQPGnqhRO7IpXqlp9VQkyxu3Y2zYFww==
X-Google-Smtp-Source: AGHT+IGOFZkXrAicjcWyVjNqJjubZsBeK8Mb6x8RXvRNYGfYb5g2wOo5JsA3FPRz9L6sUcwYs42zyg==
X-Received: by 2002:a05:651c:b0c:b0:2cf:124b:a2aa with SMTP id b12-20020a05651c0b0c00b002cf124ba2aamr266588ljr.2.1705996548598;
        Mon, 22 Jan 2024 23:55:48 -0800 (PST)
Message-ID: <35ff4947-7863-40da-b0e7-3b84e17c6163@suse.com>
Date: Tue, 23 Jan 2024 08:55:44 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 80/82] xen-netback: Refactor intentional wrap-around test
Content-Language: en-US
To: Kees Cook <keescook@chromium.org>
Cc: Wei Liu <wei.liu@kernel.org>, Paul Durrant <paul@xen.org>,
 "David S. Miller" <davem@davemloft.net>, Eric Dumazet <edumazet@google.com>,
 Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>,
 xen-devel@lists.xenproject.org, netdev@vger.kernel.org,
 "Gustavo A. R. Silva" <gustavoars@kernel.org>,
 Bill Wendling <morbo@google.com>, Justin Stitt <justinstitt@google.com>,
 linux-kernel@vger.kernel.org, linux-hardening@vger.kernel.org
References: <20240122235208.work.748-kees@kernel.org>
 <20240123002814.1396804-80-keescook@chromium.org>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <20240123002814.1396804-80-keescook@chromium.org>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 23.01.2024 01:27, Kees Cook wrote:
> --- a/drivers/net/xen-netback/hash.c
> +++ b/drivers/net/xen-netback/hash.c
> @@ -345,7 +345,7 @@ u32 xenvif_set_hash_mapping(struct xenvif *vif, u32 gref, u32 len,
>  		.flags = GNTCOPY_source_gref
>  	}};
>  
> -	if ((off + len < off) || (off + len > vif->hash.size) ||
> +	if ((add_would_overflow(off, len)) || (off + len > vif->hash.size) ||

I'm not maintainer of this code, but if I was I would ask that the
excess parentheses be removed, to improve readability.

Jan


From xen-devel-bounces@lists.xenproject.org Tue Jan 23 08:18:00 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 23 Jan 2024 08:18:00 +0000
Received: from list by lists.xenproject.org with outflank-mailman.670289.1042936 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSByj-0004UJ-P0; Tue, 23 Jan 2024 08:17:53 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 670289.1042936; Tue, 23 Jan 2024 08:17:53 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSByj-0004UC-Lx; Tue, 23 Jan 2024 08:17:53 +0000
Received: by outflank-mailman (input) for mailman id 670289;
 Tue, 23 Jan 2024 08:17:51 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=9pmr=JB=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rSByh-0004Sp-TC
 for xen-devel@lists.xenproject.org; Tue, 23 Jan 2024 08:17:51 +0000
Received: from mail-ed1-x534.google.com (mail-ed1-x534.google.com
 [2a00:1450:4864:20::534])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id e52c9e30-b9c7-11ee-9b0f-b553b5be7939;
 Tue, 23 Jan 2024 09:17:49 +0100 (CET)
Received: by mail-ed1-x534.google.com with SMTP id
 4fb4d7f45d1cf-55c6bc3dd54so1714350a12.1
 for <xen-devel@lists.xenproject.org>; Tue, 23 Jan 2024 00:17:49 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 q9-20020a056e02106900b00361a24b9e06sm3354482ilj.18.2024.01.23.00.17.48
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 23 Jan 2024 00:17:48 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: e52c9e30-b9c7-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1705997869; x=1706602669; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:cc:autocrypt:from:references
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=A2+/Lfn09rqLE813xJe+1NFkr7IfISjem2apRMUbjBY=;
        b=c7rkkkDg9Lx5Ap/Ubi0S/mKjKgwkIWcUA4TVHmugzOckkrlDfFNJjHD/5GD8LhNdRP
         YYOp/JQ8erCYpWy7uA7rjfFPnPayGyQZiGZzP4XoKqyD5GOPn8EIw3wNU9n83OUQtClC
         UY31K2ZxaoJjHrymH0ulNCUMkBxN0XdmPtpdtYlrSgctK/3dnCqG8Z5WjQkH86cLev8K
         7BV/bQtwRk+uXoJrWuZBL0vB0Y/OwZ/fZvg22a6CsKhm9cNSoXnh07eme/MRE7zezOym
         +A8Nzi8srtTw3rhDeuLfWoOinVPegN0lVxLwvKVrIUhI2Q+flW64slMf5KLu7kYZ6eaj
         AnxA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1705997869; x=1706602669;
        h=content-transfer-encoding:in-reply-to:cc:autocrypt:from:references
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=A2+/Lfn09rqLE813xJe+1NFkr7IfISjem2apRMUbjBY=;
        b=vHWeYw1dMWQMYG7Du3TrCQ4Bn2NZDOudQXZ7kDzyF9sRJX0hBI/M/0s1eWGwbypqRS
         PZkG545OP2SuMxBa7Ov0DnRAxS91O6LtbVP7Huom7r3qmjE9yZJ9jXkeE/FDYEXFXv8T
         WThTBfH059g7XdXz5U7dMmDwTWCIwcZHEdEvyDO8ewf3E7Lk2e1qeEH4wvPlF5O/bWR/
         YjFwmqTWsQyfphjHTtiELoM1Ph0ORlET7QmMI372/HG8IOoExjNYSmAbJ4O2G1zs9/te
         2MboEQ6nS2mKyD7dpbLx1uPV+bYT8VNg4rYNoexYNTz3yN39pE1I+vTcD6DlCN8/eSpy
         bRIw==
X-Gm-Message-State: AOJu0YzTbIJXdbrQF7SYZBIBwVCDldpV3Yx8xN/OjP9MkZUS3YeZi9d9
	QwjwVFgaNeCv08x+a2Bt7nHmhMTY5EnyJdYb0MbMhSZtO6YjkVwOfL6cAnN+rQ==
X-Google-Smtp-Source: AGHT+IFW5jZUWFtGp2eZjJkj8U4wyXLYcuxUvUvB+Mo4aiFemn6v3FkoIHZebXaDu0Gb4NiV7y/m7w==
X-Received: by 2002:a17:907:778c:b0:a2f:6053:2ab7 with SMTP id ky12-20020a170907778c00b00a2f60532ab7mr6879072ejc.11.1705997869255;
        Tue, 23 Jan 2024 00:17:49 -0800 (PST)
Message-ID: <0a02a53c-9163-428d-a5d9-6cf2234d7b9c@suse.com>
Date: Tue, 23 Jan 2024 09:17:46 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] pmstat: Limit hypercalls under HWP
Content-Language: en-US
To: Jason Andryuk <jandryuk@gmail.com>
References: <20240122190934.52080-1-jandryuk@gmail.com>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
Cc: xen-devel@lists.xenproject.org
In-Reply-To: <20240122190934.52080-1-jandryuk@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 22.01.2024 20:09, Jason Andryuk wrote:
> When HWP is active, the cpufreq P-state information is not updated.  In
> that case, return -ENODEV instead of bogus, incomplete info.  The xenpm
> command already supports skipping results when -ENODEV is returned, so
> it is re-used when -EOPNOTSUPP might be more accurate.
> 
> Similarly, set_cpufreq_para() is not applicable when HWP is active.
> Many of the options already checked the governor and were inaccessible,
> but SCALING_MIN/MAX_FREQ was still accessible (though it would do
> nothing).  Add an ealier HWP check to handle all cases.
> 
> Signed-off-by: Jason Andryuk <jandryuk@gmail.com>
> ---
> `xenpm get-cpufreq-states` now doesn't return any output.  It also exits
> successfully since xenpm doesn't check the returns there.

This isn't very nice. Is there nothing sensible that can be output
instead in the HWP case? If not, I think it would help if
inapplicability of the command would be indicated by at least one line
of output. Or might it make sense to at least fall back to
get-cpufreq-average in that case?

>  Other
> commands will fail:
> xenpm set-scaling-maxfreq 11 1100000
> failed to set scaling max freq (95 - Operation not supported)

This is fine imo.

Jan


From xen-devel-bounces@lists.xenproject.org Tue Jan 23 08:29:59 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 23 Jan 2024 08:29:59 +0000
Received: from list by lists.xenproject.org with outflank-mailman.670294.1042946 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSCAK-0006x9-Vj; Tue, 23 Jan 2024 08:29:52 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 670294.1042946; Tue, 23 Jan 2024 08:29:52 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSCAK-0006x2-So; Tue, 23 Jan 2024 08:29:52 +0000
Received: by outflank-mailman (input) for mailman id 670294;
 Tue, 23 Jan 2024 08:29:51 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=8cSK=JB=arm.com=Bertrand.Marquis@srs-se1.protection.inumbo.net>)
 id 1rSCAJ-0006ww-H9
 for xen-devel@lists.xenproject.org; Tue, 23 Jan 2024 08:29:51 +0000
Received: from EUR04-VI1-obe.outbound.protection.outlook.com
 (mail-vi1eur04on0625.outbound.protection.outlook.com
 [2a01:111:f400:fe0e::625])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 9157fe50-b9c9-11ee-9b0f-b553b5be7939;
 Tue, 23 Jan 2024 09:29:47 +0100 (CET)
Received: from DU2PR04CA0040.eurprd04.prod.outlook.com (2603:10a6:10:234::15)
 by AM7PR08MB5366.eurprd08.prod.outlook.com (2603:10a6:20b:10b::11)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7202.36; Tue, 23 Jan
 2024 08:29:44 +0000
Received: from DB5PEPF00014B8F.eurprd02.prod.outlook.com
 (2603:10a6:10:234:cafe::f4) by DU2PR04CA0040.outlook.office365.com
 (2603:10a6:10:234::15) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7202.33 via Frontend
 Transport; Tue, 23 Jan 2024 08:29:44 +0000
Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by
 DB5PEPF00014B8F.mail.protection.outlook.com (10.167.8.203) with
 Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.7202.16 via Frontend Transport; Tue, 23 Jan 2024 08:29:44 +0000
Received: ("Tessian outbound c87008563c51:v228");
 Tue, 23 Jan 2024 08:29:44 +0000
Received: from ce4fd3f21fb8.1
 by 64aa7808-outbound-1.mta.getcheckrecipient.com id
 B0C64161-1195-47E3-89B9-16D41C1135AA.1; 
 Tue, 23 Jan 2024 08:29:36 +0000
Received: from EUR05-VI1-obe.outbound.protection.outlook.com
 by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id ce4fd3f21fb8.1
 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384);
 Tue, 23 Jan 2024 08:29:36 +0000
Received: from DB9PR08MB6588.eurprd08.prod.outlook.com (2603:10a6:10:25a::24)
 by GV2PR08MB8294.eurprd08.prod.outlook.com (2603:10a6:150:be::5) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7202.32; Tue, 23 Jan
 2024 08:29:32 +0000
Received: from DB9PR08MB6588.eurprd08.prod.outlook.com
 ([fe80::2257:5fcb:b449:fff0]) by DB9PR08MB6588.eurprd08.prod.outlook.com
 ([fe80::2257:5fcb:b449:fff0%6]) with mapi id 15.20.7202.035; Tue, 23 Jan 2024
 08:29:32 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 9157fe50-b9c9-11ee-9b0f-b553b5be7939
ARC-Seal: i=2; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=pass;
 b=jfRjOEIs6bmi1eFe9OxS7BjlnlhnToDhrxD3fCgSUrJ0fzYJ54w7jEzsAqd/e1y0fqPpahp/tK6a25yRlLSXx+ZCc1XpnPwpHwwmTs3HXQxEaaxFgJ/FUArIzfoct03AsR7rezU2h5Uj1e22zCv+Ox0aDn6IfLbIN/sKlh3I1tPKDqjBf3uGPDWZrI+0unvsBZ0LkoUDILlncN5MrS9scR3zsAUVp1shHJxYP/pT+UlAPHgadwDHo1R4R8kUoqlZiZzhlvMIyht+24QSSZdkGvQVJggb39VWyrxZ3ArkbznKax4CdGqBuOk34S1I2LvRK3PEUxC/5OnDZICaHmIG7g==
ARC-Message-Signature: i=2; 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=3wRAeHQgZsWZoDTFj2w95fedmNYeB7u8GA3ttXug1o4=;
 b=QQxHs5A7Mwevfl1z9v7cnq18QH6MXjcX2YhvEy2eEddREmfBGM86WciOHI7NeLtzJLWZvPhsPOccBMIIzFn6y0D2zeP7rUg0uuJIjquH4pdDvI+6mYAoT2xJEsXLPHDR8jgjaypcmA7CiJ2Ls8bmmEbKoTjVMb2brUxSz2y0nlpOJRGtrksTP54xGhKqPehyJ0QbBheJhv+qLPaN57ABHzyrM6R/Z8v/u9GgzxD40Zc9mwlzv85ENhNDm24I/tnFkFvvxNAlIicMXAoKWPaDb18mO54Kgc2QDrVKUVvyc5Xrz2rV0B5A073u6Hyqo03x+Wx+ggPYOKEVd2lkLsctdQ==
ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is
 63.35.35.123) smtp.rcpttodomain=lists.xenproject.org smtp.mailfrom=arm.com;
 dmarc=pass (p=none sp=none pct=100) action=none header.from=arm.com;
 dkim=pass (signature was verified) header.d=armh.onmicrosoft.com; arc=pass (0
 oda=1 ltdi=1 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com]
 dmarc=[1,1,header.from=arm.com])
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com;
 s=selector2-armh-onmicrosoft-com;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=3wRAeHQgZsWZoDTFj2w95fedmNYeB7u8GA3ttXug1o4=;
 b=dB3QJ1xMbmtMjFoDiaKaaWgl2sHAHGQbBhRFedLE4EMYKsiJoM23JlPijfbBhPWAo3S75wM0zzhzJ2+Qp08XfTuFhQWEFtS+vb9diNDyROwAdVKl0qV+nh2fTDtYSIB+joY9/rcCfadyEPLlaFEYukMHyUh98fafpmblKRlAL2w=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 63.35.35.123)
 smtp.mailfrom=arm.com; dkim=pass (signature was verified)
 header.d=armh.onmicrosoft.com;dmarc=pass action=none header.from=arm.com;
Received-SPF: Pass (protection.outlook.com: domain of arm.com designates
 63.35.35.123 as permitted sender) receiver=protection.outlook.com;
 client-ip=63.35.35.123; helo=64aa7808-outbound-1.mta.getcheckrecipient.com;
 pr=C
X-CheckRecipientChecked: true
X-CR-MTA-CID: 4e7896327ec5c93f
X-CR-MTA-TID: 64aa7808
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=huNMNY1BIxLbP2Is3aa00vuRAlST00YucOwWc6RnQ9ng7ERWKBvOnPnFL/CmMwtFAUa7n823Qc9CBt0FdU4qNWzBTYG/9W2VWt4rzKc7vcKiU/n3TWFck9gBEuUxAKgQuoXx8H2uJzyp5hE0cOxb1Mi89Arp5HjgLRs6jum3tfusXp6pqDXpssHl+0UMN2VOduwq0FxaN2lduJGL13e6FU2+sVK+Bv0EHqe/bwi5EKtFLJZelaI5TIc3h4pZbTIfalO8/672JwiXM2shbx93FnMsmpyVN9oZbTdmyX4ZC9MJkAg6SkVTvvI0mZKzgmk9IMURMnktNA4SK/dtFdEZ/Q==
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=3wRAeHQgZsWZoDTFj2w95fedmNYeB7u8GA3ttXug1o4=;
 b=ULNaJse4JocmY1UleRGTxEKrHEx5EFfaP6Pt2wzUnajjs/6CjiFm2LE2hYZkQxXgk/shBAXhtdRqCu0nSE4zVa+QnUjtDOVqGXdc+GZGBXPUHS8lZ9ryObSxWIelEwzJP0IxeNQ6MVTyE8VGxntH0rgIcUWhyyluZ1eNGrvDU8XUzFGLcEqJ7CN7OBf6yYEKxBT+xz1J87xcsCbiYxMzOIWAD+FOHIjxHZw4PfOLJJcqCenjK8roIqs0ophTOoOeVu8SVBIfmIYCpjre38IupPHJNzwBgSE8KcxsxUrk84gopXDVC55AIHERNg+rhaU7wcAZC+chOGpg4IbsU7XIsQ==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass
 header.d=arm.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com;
 s=selector2-armh-onmicrosoft-com;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=3wRAeHQgZsWZoDTFj2w95fedmNYeB7u8GA3ttXug1o4=;
 b=dB3QJ1xMbmtMjFoDiaKaaWgl2sHAHGQbBhRFedLE4EMYKsiJoM23JlPijfbBhPWAo3S75wM0zzhzJ2+Qp08XfTuFhQWEFtS+vb9diNDyROwAdVKl0qV+nh2fTDtYSIB+joY9/rcCfadyEPLlaFEYukMHyUh98fafpmblKRlAL2w=
From: Bertrand Marquis <Bertrand.Marquis@arm.com>
To: George Dunlap <george.dunlap@cloud.com>
CC: Elliott Mitchell <ehem+xen@m5p.com>, Paul Leiber <paul@onlineschubla.de>,
	"xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>, Dario
 Faggioli <dfaggioli@suse.com>, Jan Beulich <jbeulich@suse.com>, Stefano
 Stabellini <sstabellini@kernel.org>, Julien Grall <julien@xen.org>
Subject: Re: Xen 4.18rc/ARM64 on Raspberry Pi 4B: Traffic in DomU crashing
 Dom0 when using VLANs
Thread-Topic: Xen 4.18rc/ARM64 on Raspberry Pi 4B: Traffic in DomU crashing
 Dom0 when using VLANs
Thread-Index: AQHZ/gcaPQmWs3huW06NGLzfgAl1VbBVWRAAgIUTWgCAB8TBgIAEEyeAgAFsJwA=
Date: Tue, 23 Jan 2024 08:29:32 +0000
Message-ID: <D2496DDC-78FA-4CC1-B7FC-EB62E506BC4F@arm.com>
References: <838ff75f-1352-4d3c-9bc1-c7a57c828231@onlineschubla.de>
 <4cddfd89-f195-4a50-a14d-b86121414e56@onlineschubla.de>
 <f8f39239-ea95-4fc7-9abe-6ca005eb02d2@onlineschubla.de>
 <ZarcWQ6Ugwowy050@mattapan.m5p.com>
 <CA+zSX=Y=BsVEp3o6jRprn5sntWVA0Z6wNXUxtffDN+=fPv_Fzg@mail.gmail.com>
In-Reply-To:
 <CA+zSX=Y=BsVEp3o6jRprn5sntWVA0Z6wNXUxtffDN+=fPv_Fzg@mail.gmail.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-mailer: Apple Mail (2.3774.200.91.1.1)
Authentication-Results-Original: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=arm.com;
x-ms-traffictypediagnostic:
	DB9PR08MB6588:EE_|GV2PR08MB8294:EE_|DB5PEPF00014B8F:EE_|AM7PR08MB5366:EE_
X-MS-Office365-Filtering-Correlation-Id: d0cef808-b9f8-43da-40ac-08dc1bed73b8
x-checkrecipientrouted: true
nodisclaimer: true
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted: BCL:0;
X-Microsoft-Antispam-Message-Info-Original:
 X4vB8YNFeb+AIwCud777IMTeexB3Cr6mc2HOU4R22/Pa+kBTS0kP8d29dT9HrF7L3CuPVvRQernlL4oMbgAgO33pSjpLun7gUgodJd/kC8+H3/7jSSHuHLhqLsM72nzN4CneaYgc2iI3r2mVk0bTaPht9PonqKiEtBVM894t7iJdF9j2yn+NiSFFzxp34KTS5SlgKLyLfscNs0XoMwuKfq6z22RZ9nRJj8tfAHQ+pnDdHFyHRmHrfB2WL7UVjQLfixELzGyf5GceAFPGMXQOgWW5yvPe0j0i10rW7BSeKJKRllXEWfQeQ1B+LshoWE0d/qAvs8xSGBENj0ssrh2KGjAEjYqIaGRhp0e7kd95WsJatPwhmtBWa3Ko8LJ4r9fI3Ag3K9t5A/b8Oxb6v1cQ5KLzYQvIcarJkBXtHkX3hPicCoRLv4p/cctajj6wQ65HFinQP1T36ZmDxO9gfPrTnn7/o1SdTzGIGnBHbbC7lQmel8MgHYkEck09UEpKoyWM5iscQ5uuwaPIicE1ptwdBxN5rPFCefWNdB0IAlksj7AzuvgOjwqr0kX4CsOkD7orb6KVWK06Dvyt4FU/7Tg6U+Ld9OHP06g4slof9UFqmQJXS8+Jh6irVOcMA+Teb2GpC3s/fzxZPPIJxniHxDMmHHU53neeE+6awTrghm7rT/0ofx4COQZ5NWvSAvyXC6do
X-Forefront-Antispam-Report-Untrusted:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DB9PR08MB6588.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230031)(346002)(136003)(376002)(366004)(39860400002)(396003)(230273577357003)(230173577357003)(230922051799003)(64100799003)(451199024)(186009)(1800799012)(66574015)(6506007)(2616005)(6512007)(53546011)(71200400001)(41300700001)(83380400001)(66476007)(5660300002)(2906002)(478600001)(30864003)(8676002)(4326008)(8936002)(76116006)(66556008)(66446008)(64756008)(91956017)(316002)(54906003)(6916009)(6486002)(66946007)(86362001)(38100700002)(36756003)(33656002)(38070700009)(122000001)(45980500001);DIR:OUT;SFP:1101;
Content-Type: text/plain; charset="utf-8"
Content-ID: <3466337F0ED9714DAAA2FCC625571892@eurprd08.prod.outlook.com>
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-MS-Exchange-Transport-CrossTenantHeadersStamped: GV2PR08MB8294
Original-Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=arm.com;
X-EOPAttributedMessage: 0
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 DB5PEPF00014B8F.eurprd02.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	9c4e6b0d-6c69-4c6b-8ded-08dc1bed6cc5
X-Microsoft-Antispam: BCL:0;
X-Microsoft-Antispam-Message-Info:
	SGtOZB/pRLBUW+Eo7kp5b8+LV2dQ17NcAmQlulsCMBAStDGdd4b2FTwr/7vbrhWnQpmb5EN+uF6tYN3zilA9XtQLQDxiJ30iSFPkmY19l/HYdDcAii5vg5JKdYnvWCY3Xx1wYy3yHOSz56kTfuxyIh1bhEMehhnn76gdGxXJuiTI0FbeKzP4wT/phm4EDtXUR8LcxEPv3Coj/XxPt4npMc9B06aYoWq8FZ0HEYZsSG/DKEnZqO7j0zX2LHLXR3KEHIfolW4R2Ex+06wB7elthm4diI2Kd3J/zi8f/eoRbsFxmSuXGwiLJVDNSp89RHgVuwzHL5B96+hlWMYkUxME4AL38bS7QbXNEWqzVLi1zu9ZCnS+n4r+tgEGOME9QUxiU6dcFgHQ1MgNmPX9QsQdWkTsxJoS8Fm1kqvErD3+YCMiIcmqG46vCPwn9eCSRKXwTF9QBWNv6Uv1bClktQ0niKot7jo10hbZcmc35rvFUgEkr3U8tw3ShLCIy8LtKQSoOwPL9T/W8o7Cu4N08imUSS0eZuMY4Y3gZnUNmYxWEHviM2gwAkeLXYRu4OeniXSFpAoQolpOMNccO05QcVAQ4a4v5gtW0RYOpa+hI20/ljG8p/44epCMsD2kQPDEQAn34BDPRQ3hsO3xYjaeZQqyFOTncE0tJ33mmMX2IGOniKIPIDIStvbm+X/tXuUsNN4R40Hv3YdKL7CrSLvW9TIvNqlIKS5lHuZn3ptgKyCHBl52+ogv1THcB2/OPXJVduVg
X-Forefront-Antispam-Report:
	CIP:63.35.35.123;CTRY:IE;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:64aa7808-outbound-1.mta.getcheckrecipient.com;PTR:ec2-63-35-35-123.eu-west-1.compute.amazonaws.com;CAT:NONE;SFS:(13230031)(4636009)(346002)(39860400002)(396003)(136003)(376002)(230922051799003)(230173577357003)(230273577357003)(451199024)(186009)(64100799003)(82310400011)(1800799012)(46966006)(36840700001)(4326008)(83380400001)(8936002)(6862004)(8676002)(82740400003)(33656002)(86362001)(81166007)(41300700001)(356005)(30864003)(2906002)(36756003)(47076005)(36860700001)(5660300002)(40480700001)(6512007)(2616005)(316002)(70206006)(70586007)(54906003)(478600001)(6486002)(6506007)(53546011)(26005)(66574015)(336012);DIR:OUT;SFP:1101;
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Jan 2024 08:29:44.2265
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: d0cef808-b9f8-43da-40ac-08dc1bed73b8
X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[63.35.35.123];Helo=[64aa7808-outbound-1.mta.getcheckrecipient.com]
X-MS-Exchange-CrossTenant-AuthSource:
	DB5PEPF00014B8F.eurprd02.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM7PR08MB5366

SGksDQoNCiB3aWxsIHRyeSB0byBleHBsYWluIHNvbWUgb2YgdGhlIG1lc3NhZ2VzIGhlcmUgYWZ0
ZXIgYnV0IEkgYW0gbm90IHN1cmUgb2YgdGhlIHJlYXNvbg0Kb2YgdGhlIGNyYXNoIHNvIEkgd2ls
bCBqdXN0IHNldCBzb21lIHBvaW50ZXJzLi4uDQoNCj4gT24gMjIgSmFuIDIwMjQsIGF0IDExOjQ2
LCBHZW9yZ2UgRHVubGFwIDxnZW9yZ2UuZHVubGFwQGNsb3VkLmNvbT4gd3JvdGU6DQo+IA0KPiBP
biBGcmksIEphbiAxOSwgMjAyNCBhdCA4OjMy4oCvUE0gRWxsaW90dCBNaXRjaGVsbCA8ZWhlbSt4
ZW5AbTVwLmNvbT4gd3JvdGU6DQo+PiANCj4+IE9uIFN1biwgSmFuIDE0LCAyMDI0IGF0IDEwOjU0
OjI0UE0gKzAxMDAsIFBhdWwgTGVpYmVyIHdyb3RlOg0KPj4+IA0KPj4+IEFtIDIyLjEwLjIwMjMg
dW0gMDc6NDIgc2NocmllYiBQYXVsIExlaWJlcjoNCj4+Pj4gQW0gMTMuMTAuMjAyMyB1bSAyMDo1
NiBzY2hyaWViIFBhdWwgTGVpYmVyOg0KPj4+Pj4gSGkgWGVuIGRldmVsb3BlcnMgbGlzdCwNCj4+
Pj4+IA0KPj4+Pj4gVEw7RFI6DQo+Pj4+PiAtLS0tLS0NCj4+Pj4+IA0KPj4+Pj4gQ2F1c2luZyBj
ZXJ0YWluIHdlYiBzZXJ2ZXIgdHJhZmZpYyBvbiBhIHNlY29uZGFyeSBWTEFOIG9uIFJhc3BiZXJy
eSBQaQ0KPj4+Pj4gdW5kZXIgdmFuaWxsYSBEZWJpYW4vVUVGSSBpbiBjb21iaW5hdGlvbiB3aXRo
IFhlbiBsZWFkcyB0byBjb21wbGV0ZQ0KPj4+Pj4gc3lzdGVtIHJlYm9vdCAod2F0Y2hkb2cgdHJp
Z2dlcmluZyBmb3IgRG9tMCkuIE90aGVyIHN0cmFuZ2UgdGhpbmdzIGFyZQ0KPj4+Pj4gaGFwcGVu
aW5nLg0KPj4+Pj4gDQo+Pj4+PiBEZXNjcmlwdGlvbjoNCj4+Pj4+IC0tLS0tLS0tLS0NCj4+Pj4+
IA0KPj4+Pj4gSSByZWNlbnRseSBzZXQgdXAgWGVuIChzZWxmIGNvbXBpbGVkLCBWZXJzaW9uIDQu
MTgtcmMpIG9uIGEgUmFzcGJlcnJ5DQo+Pj4+PiBQaSA0QiAob24gdmFuaWxsYSBEZWJpYW4gQm9v
a3dvcm0sIFVFRkkgYm9vdCBtb2RlKS4gVW50aWwgc29tZSB0aW1lDQo+Pj4+PiBhZ28sIGV2ZXJ5
dGhpbmcgd29ya2VkIHdlbGwgd2l0aCBEb20wLCBvbmUgRG9tVSBhbmQgb25lIGJyaWRnZS4NCj4+
Pj4+IA0KPj4+Pj4gVGhlbiBJIHdhbnRlZCB0byBhY3R1YWxseSBtYWtlIHVzZSBvZiB0aGUgdmly
dHVhbGl6YXRpb24gYW5kIHN0YXJ0ZWQNCj4+Pj4+IHRvIHNldCB1cCBhIHNlY29uZCBEZWJpYW4g
Qm9va3dvcm0gRG9tVSAodXNpbmcgeGVuLWNyZWF0ZS1pbWFnZSkgZm9yDQo+Pj4+PiBtb25pdG9y
aW5nIG15IHN5c3RlbXMgd2l0aCB6YWJiaXggKGEgd2Vic2VydmVyIGJhc2VkIHN5c3RlbSBtb25p
dG9yaW5nDQo+Pj4+PiBzb2x1dGlvbikuIFRoZSBicmlkZ2UgdXNlZCBmb3IgdGhpcyBzZXR1cCB3
YXMgdGhlIGRldmljZSBicmlkZ2luZyB0aGUNCj4+Pj4+IGhhcmR3YXJlIE5JQy4gSSBpbnN0YWxs
ZWQgemFiYml4LCBzZXQgaXQgdXAsIGFuZCBldmVyeXRoaW5nIHdlbnQgd2VsbCwNCj4+Pj4+IEkg
Y291bGQgYWNjZXNzIHRoZSB3ZWIgaW50ZXJmYWNlIHdpdGhvdXQgYW55IHByb2JsZW0uDQo+Pj4+
PiANCj4+Pj4+IFRoZW4gSSBzZXQgdXAgVkxBTnMgKGluaXRhbGx5IHVzaW5nIFZMQU4gbnVtYmVy
cyAxIGFuZCAyKSB0byBzZXBhcmF0ZQ0KPj4+Pj4gbmV0d29yayB0cmFmZmljIGJldHdlZW4gdGhl
IERvbVVzLiBJIG1hZGUgdGhlIGV4aXN0aW5nIGRldmljZSBicmlkZ2UNCj4+Pj4+IFZMQU4gMSAo
YnJpZGdlIDEpIGFuZCBjcmVhdGVkIGEgc2Vjb25kYXJ5IGRldmljZSBmb3IgYnJpZGdpbmcgVkxB
TiAyDQo+Pj4+PiAoYnJpZGdlIDIpLiBVc2luZyBvbmx5IGJyaWRnZSAxIC8gVkxBTiAxIGV2ZXJ5
dGhpbmcgd29ya3Mgd2VsbCwgSSBjYW4NCj4+Pj4+IGFjY2VzcyB0aGUgemFiYml4IHdlYiBpbnRl
cmZhY2Ugd2l0aG91dCBhbnkgbm90aWNlYWJsZSBpc3N1ZS4gQWZ0ZXINCj4+Pj4+IHN3aXRjaGlu
ZyB0aGUgemFiYml4IERvbVUgdG8gVkxBTiAyIC8gYnJpZGdlIDIsIGV2ZXJ5dGhpbmcgc2VlbWlu
Z2x5DQo+Pj4+PiBrZWVwcyBvbiB3b3JraW5nIHdlbGwsIEkgY2FuIHBpbmcgZGlmZmVyZW50IGRl
dmljZXMgaW4gbXkgbmV0d29yayBmcm9tDQo+Pj4+PiB0aGUgemFiYml4IERvbVUgYW5kIHZpY2Ug
dmVyc2EsIEkgY2FuIHNzaCBpbnRvIHRoZSBtYWNoaW5lLg0KPj4+Pj4gDQo+Pj4+PiBIb3dldmVy
LCBhcyBzb29uIGFzIEkgcmVtb3RlbHkgYWNjZXNzIHRoZSB6YWJiaXggd2ViIGludGVyZmFjZSwg
dGhlDQo+Pj4+PiBjb21wbGV0ZSBzeXN0ZW0gKERvbVVzIGFuZCBEb20wKSBiZWNvbWVzIHVucmVz
cG9uc2l2ZSBhbmQgcmVib290cw0KPj4+Pj4gYWZ0ZXIgc29tZSB0aW1lICh1c3VhbGx5IHNlY29u
ZHMsIHNvbWV0aW1lcyAxLTIgbWludXRlcykuIFRoZSByZWJvb3QNCj4+Pj4+IGlzIHJlbGlhYmx5
IHJlcHJvZHVjYWJsZS4NCj4+Pj4+IA0KPj4+Pj4gSSBkaWRuJ3Qgc2VlIGFueSBlcnJvciBtZXNz
YWdlIGluIGFueSBsb2cgKHphYmJpeCwgRG9tVSBzeXNsb2csIERvbTANCj4+Pj4+IHN5c2xvZykg
ZXhjZXB0IGZvciB0aGUgZm9sbG93aW5nIGxpbmVzIGltbWVkaWF0ZWx5IGJlZm9yZSB0aGUgc3lz
dGVtDQo+Pj4+PiByZWJvb3RzIG9uIHRoZSBYZW4gc2VyaWFsIGNvbnNvbGU6DQo+Pj4+PiANCj4+
Pj4+IChYRU4pIFdhdGNoZG9nIHRpbWVyIGZpcmVkIGZvciBkb21haW4gMA0KPj4+Pj4gKFhFTikg
SGFyZHdhcmUgRG9tMCBzaHV0ZG93bjogd2F0Y2hkb2cgcmVib290aW5nIG1hY2hpbmUNCj4+Pj4+
IA0KPj4+Pj4gQXMgc29vbiBhcyBJIGNoYW5nZSB0aGUgYnJpZGdlIHRvIGJyaWRnZSAxICh3aXRo
IG9yIHdpdGhvdXQgVkxBTg0KPj4+Pj4gc2V0dXApLCB0aGUgd2ViIGludGVyZmFjZSBpcyBhY2Nl
c3NpYmxlIGFnYWluIGFmdGVyIGJvb3RpbmcgdGhlIHphYmJpeA0KPj4+Pj4gRG9tVSwgbm8gcmVi
b290cy4NCj4+Pj4+IA0KPj4+Pj4gU28gSSBhc3N1bWUgdGhhdCBjYXVzaW5nIHNwZWNpZmljIHRy
YWZmaWMgb24gdGhlIHZpcnR1YWwgTklDIHdoZW4NCj4+Pj4+IHVzaW5nIGEgVkxBTiBzZXR1cCB3
aXRoIG1vcmUgdGhhbiBvbmUgVkxBTiB1bmRlciBYZW4gbWFrZXMgdGhlIERvbTANCj4+Pj4+IHN5
c3RlbSBoYXJkIGNyYXNoLiBPZiBjb3Vyc2UsIHRoZXJlIG1pZ2h0IGJlIG90aGVyIGNhdXNlcyB0
aGF0IEknbSBub3QNCj4+Pj4+IGF3YXJlIG9mLCBidXQgdG8gbWUsIHRoaXMgc2VlbXMgdG8gYmUg
dGhlIG1vc3QgbGlrZWx5IGV4cGxhbmF0aW9uDQo+Pj4+PiByaWdodCBub3cuDQo+Pj4+PiANCj4+
Pj4+IFdoYXQgSSB0cmllZDoNCj4+Pj4+IC0tLS0tLS0tLS0tLS0NCj4+Pj4+IA0KPj4+Pj4gMS4g
SSBjaGFuZ2VkIHRoZSBWTEFOIG51bWJlcnMuIEZpcnN0IHRvIDEwMSwgMTAyLCAxMDMgZXRjLiBU
aGlzIHdhcw0KPj4+Pj4gd2hlbiBJIG5vdGljZWQgYW5vdGhlciBzdHJhbmdlIHRoaW5nOiBWTEFO
cyB3aXRoIG51bWJlcnMgPjk5IHNpbXBseQ0KPj4+Pj4gZG9uJ3Qgd29yayBvbiBteSBSYXNwYmVy
cnkgUGkgdW5kZXIgRGViaWFuLCB3aXRoIG9yIHdpdGhvdXQgWGVuLiBWTEFODQo+Pj4+PiA5OSB3
b3JrcywgVkxBTiAxMDAgKG9yIGV2ZXJ5dGhpbmcgZWxzZSA+OTkgdGhhdCBJIHRyaWVkKSBkb2Vz
bid0IHdvcmsuDQo+Pj4+PiBJZiBJIGNob29zZSBhIG51bWJlciA+OTksIHRoZSBWTEFOIGlzIG5v
dCBjb25maWd1cmVkLCAiaXAgYSIgZG9lc24ndA0KPj4+Pj4gbGlzdCBpdC4gT3RoZXIgRGViaWFu
IHN5c3RlbXMgb24geDY0IGFyY2hpdGVjdHVyZSBkb24ndCBzaG93IHRoaXMNCj4+Pj4+IGJlaGF2
aW9yLCB0aGVyZSwgaXQgd2FzIG5vIHByb2JsZW0gdG8gc2V0IHVwIFZMQU5zID4gOTkuIFRoZXJl
Zm9yZSwNCj4+Pj4+IEkndmUgY2hhbmdlZCB0aGUgVkxBTnMgdG8gMTAsIDIwLCAzMCBldGMuLCB3
aGljaCB3b3JrZWQuIEJ1dCBpdCBkaWRuJ3QNCj4+Pj4+IHNvbHZlIHRoZSBpbml0aWFsIHByb2Js
ZW0gb2YgdGhlIGNyYXNoaW5nIERvbTAgYW5kIERvbVVzLg0KPj4+Pj4gDQo+Pj4+PiAyLiBEaWZm
ZXJlbnQgYnJpZGdlIG9wdGlvbnMsIHdpdGhvdXQgbm90aWNhYmxlIGVmZmVjdDoNCj4+Pj4+IGJy
aWRnZV9zdHAgb2ZmICAgICAgIyBkb250IHVzZSBTVFAgKHNwYW5uaW5nIHRyZWUgcHJvdG8pDQo+
Pj4+PiBicmlkZ2Vfd2FpdHBvcnQgMCAgICMgZG9udCB3YWl0IGZvciBwb3J0IHRvIGJlIGF2YWls
YWJsZQ0KPj4+Pj4gYnJpZGdlX2ZkIDAgICAgICAgICAjIG5vIGZvcndhcmQgZGVsYXkNCj4+Pj4+
IA0KPj4+Pj4gMy4gUmVtb3ZpbmcgSVB2NjogTm8gbm90aWNhYmxlIGVmZmVjdC4NCj4+Pj4+IA0K
Pj4+Pj4gNC4gTmV0d29yayB0cmFmZmljIGFuYWx5c2lzOiBOb3csIGhlcmUgaXQgYmVjb21lcyBf
cmVhbGx5XyBzdHJhbmdlLiBJDQo+Pj4+PiBzdGFydGVkIHRjcGR1bXBzIG9uIERvbTAsIGFuZCBk
ZXBlbmRpbmcgb24gb24gd2hpY2ggaW50ZXJmYWNlL2JyaWRnZQ0KPj4+Pj4gdHJhZmZpYyB3YXMg
bG9nZ2VkLCB0aGUgcHJvYmxlbSB3ZW50IGF3YXksIG1lYW5pbmcsIHRoZSBEb21VIHdhcw0KPj4+
Pj4gcnVubmluZyBzbW9vdGhseSBmb3IgaG91cnMsIGV2ZW4gd2hlbiBhY2Nlc3NpbmcgdGhlIHph
YmJpeCB3ZWINCj4+Pj4+IGludGVyZmFjZS4gU3RvcHBpbmcgdGhlIGxvZyBtYWtlcyB0aGUgc3lz
dGVtIGNyYXNoIChhcyBhYm92ZSwgYWZ0ZXINCj4+Pj4+IHNlY29uZHMgdXAgdG8gMS0yIG1pbnV0
ZXMpIHJlcHJvZHVjYWJseSBpZiBJIGFjY2VzcyB0aGUgemFiYml4IHdlYg0KPj4+Pj4gaW50ZXJm
YWNlLg0KPj4+Pj4gDQo+Pj4+PiBMb2dnaW5nIGVuYWJjbTZlNGVpMCAoTklDKTogbm8gY3Jhc2hl
cw0KPj4+Pj4gTG9nZ2luZyBlbmFiY202ZTRlaTAuMTAgKFZMQU4gMTApOiBpbnN0YW50IGNyYXNo
DQo+Pj4+PiBMb2dnaW5nIGVuYWJjbTZlNGVpMC4yMCAoVkxBTiAyMCk6IG5vIGNyYXNoZXMNCj4+
Pj4+IExvZ2dpbmcgeGVuYnIwIChvbiBWTEFOIDEwKTogaW5zdGFudCBjcmFzaA0KPj4+Pj4gTG9n
Z2luZyB4ZW5icjEgKG9uIFZMQU4gMjApOiBubyBjcmFzaGVzDQo+Pj4+PiANCj4+Pj4+IEkgYW0g
Y2xpbmdpbmcgdG8gdGhlIHRob3VnaHQgdGhhdCB0aGVyZSBtdXN0IGJlIGEgcmF0aW9uYWwgZXhw
bGFuYXRpb24NCj4+Pj4+IGZvciB3aHkgbG9nZ2luZyB0aGUgdHJhZmZpYyBvbiBjZXJ0YWluIGlu
dGVyZmFjZXMvYnJpZGdlcyBzaG91bGQgYXZvaWQNCj4+Pj4+IHRoZSBjcmFzaCBvZiB0aGUgY29t
cGxldGUgc3lzdGVtLCB3aGlsZSBsb2dnaW5nIG90aGVyDQo+Pj4+PiBpbnRlcmZhY2VzL2JyaWRn
ZXMgZG9lc24ndC4gSSBteXNlbGYgY2FuJ3QgdGhpbmsgb2Ygb25lLg0KPj4+Pj4gDQo+Pj4+PiBJ
IGNoZWNrZWQgdGhlIGR1bXBzIG9mIGVuYWJjbTZlNGVpMC4xMCBhbmQgeGVuYnIwICh3aGVyZSB0
aGUgc3lzdGVtDQo+Pj4+PiBjcmFzaGVzKSB3aXRoIHdpcmVzaGFyaywgbm90aGluZyBzdGlja3Mg
b3V0IHRvIG1lIChidXQgSSBhbSByZWFsbHkgbm8NCj4+Pj4+IGV4cGVydCBpbiBhbmFseXppbmcg
bmV0d29yayB0cmFmZmljKS4gRHVtcHMgY2FuIGJlIHByb3ZpZGVkLg0KPj4+Pj4gDQo+Pj4+PiA1
LiBXYXRjaGRvZzogSSB0cmllZCB0byBkaWcgZGVlcGVyIGludG8gdGhlIGNhdXNlIGZvciB0aGUg
d2F0Y2hkb2cNCj4+Pj4+IHRyaWdnZXJpbmcuIEhvd2V2ZXIsIEkgZGlkbid0IGZpbmQgYW55IHVz
ZWZ1bCBkb2N1bWVudGF0aW9uIG9uIHRoZSB3ZWINCj4+Pj4+IG9uIGhvdyB0aGUgd2F0Y2hkb2cg
d29ya3Mgb3IgaG93IHRvIGVuYWJsZSBsb2dnaW5nLg0KPj4+Pj4gDQo+Pj4+PiA2LiBFbGltaW5h
dGluZyBYZW4gYXMgY2F1c2U6IEkgYm9vdGVkIHRoZSBEZWJpYW4gc3lzdGVtICh3aGljaCBpbiBY
ZW4NCj4+Pj4+IHNldHVwIHdvdWxkIGJlIERvbTApIHdpdGhvdXQgWGVuIGFuZCBzZXQgaXQgdXAg
dG8gdXNlIHRoZSBWTEFOIDIwDQo+Pj4+PiBicmlkZ2UgKHRoZSBzYW1lIHRoYXQgbGVhZHMgdG8g
YSByZWJvb3Qgd2hlbiB1c2luZyBpdCBpbiB0aGUgRG9tVSkgYXMNCj4+Pj4+IHByaW1hcnkgbmV0
d29yayBpbnRlcmZhY2UuIEV2ZXJ5dGhpbmcgc2VlbWVkIHRvIGJlIHdvcmtpbmcsIEkgY291bGQN
Cj4+Pj4+IGRvd25sb2FkIGxhcmdlIGZpbGVzIGZyb20gdGhlIGludGVybmV0IHdpdGhvdXQgYW55
IHByb2JsZW0uIFNldHRpbmcgdXANCj4+Pj4+IFphYmJpeCBvbiB0aGUgYmFzZSBEZWJpYW4gc3lz
dGVtIHNob3dlZCB0aGF0IHRoZSBzYW1lIHNldHVwIChWTEFOcyAxMA0KPj4+Pj4gYW5kIDIwLCBi
cmlkZ2VzIDEgYW5kIDIsIHVzaW5nIGJyaWRnZSAyIGFzIGludGVyZmFjZSBmb3IgWmFiYml4KQ0K
Pj4+Pj4gd2l0aG91dCBYZW4gaXMgd29ya2luZyByZWxpYWJseSwgbm8gcmVib290cy4gVGhpcyBw
b2ludHMgdG8gc29tZSBYZW4NCj4+Pj4+IHJlbGF0ZWQgY29tcG9uZW50IGJlaW5nIHRoZSByb290
IGNhdXNlLCBJIHRoaW5rLg0KPj4+Pj4gDQo+Pj4+PiA3LiBFbGltaW5hdGluZyBBcGFjaGUgYXMg
cm9vdCBjYXVzZTogUmVsb2FkaW5nIHRoZSBBcGFjaGUgc3RhcnRpbmcNCj4+Pj4+IHBhZ2UgaG9z
dGVkIG9uIERvbVUgc2V2ZXJhbCB0aW1lcyBwZXIgc2Vjb25kIGRpZG4ndCBsZWFkIHRvIGEgcmVi
b290Lg0KPj4+Pj4gDQo+Pj4+PiA4LiBSZWNvbXBpbGluZyBYZW46IEluZGVwZW5kZW50IG9mIHdo
aWNoIFhlbiBtYXN0ZXIgYnJhbmNoIHZlcnNpb24gSQ0KPj4+Pj4gd2FzIHVzaW5nIChhbGwgNC4x
OCksIHRoZSBiZWhhdmlvciB3YXMgdGhlIHNhbWUuIEkgZGlkbid0IGdldCBYZW4NCj4+Pj4+IHdv
cmtpbmcgb24gQVJNNjQvVUVGSSBpbiB2ZXJzaW9uIDQuMTcuDQo+Pj4+PiANCj4+Pj4+IEN1cnJl
bnQgc2l0dWF0aW9uOihYRU4pIGQzdjAgVW5oYW5kbGVkIFNNQy9IVkM6IDB4ODQwMDAwNTANCj4+
PiAoWEVOKSBkM3YwIFVuaGFuZGxlZCBTTUMvSFZDOiAweDg2MDBmZjAxDQo+Pj4gKFhFTikgZDN2
MDogdkdJQ0Q6IHVuaGFuZGxlZCB3b3JkIHdyaXRlIDB4MDAwMDAwZmZmZmZmZmYgdG8gSUNBQ1RJ
VkVSMA0KPj4+IChYRU4pIGNvbW1vbi9ncmFudF90YWJsZS5jOjE5MDk6ZDN2MCBFeHBhbmRpbmcg
ZDMgZ3JhbnQgdGFibGUgZnJvbSAxIHRvDQo+Pj4gMiBmcmFtZXMNCj4+PiAoWEVOKSBjb21tb24v
Z3JhbnRfdGFibGUuYzoxOTA5OmQzdjAgRXhwYW5kaW5nIGQzIGdyYW50IHRhYmxlIGZyb20gMiB0
bw0KPj4+IDMgZnJhbWVzDQo+Pj4gKFhFTikgY29tbW9uL2dyYW50X3RhYmxlLmM6MTkwOTpkM3Yw
IEV4cGFuZGluZyBkMyBncmFudCB0YWJsZSBmcm9tIDMgdG8NCj4+PiA0IGZyYW1lcw0KPj4+Pj4g
LS0tLS0tLS0tLS0tLS0tLS0tDQo+Pj4+PiANCj4+Pj4+IEkgYW0gb3V0IG9mIGlkZWFzIHdoYXQg
dG8gZG8gbmV4dC4gRXZlcnl0aGluZyB0aGF0IHdhcyByZWNvbW1lbmRlZCB0bw0KPj4+Pj4gbWUg
b24geGVuLXVzZXJzIGRpZG4ndCBsZWFkIHRvIHNpZ25pZmljYW50IGluc2lnaHQgb3Igc29sdmUg
dGhlIHByb2JsZW0uDQo+Pj4+PiANCj4+Pj4+IEknZCBhcHByZWNpYXRlIGFueSBoaW50cyBob3cg
dG8gdHJvdWJsZXNob290IHRoaXMgYW5kL29yIGhvdyB0bw0KPj4+Pj4gcHJvY2VlZCBvdGhlcndp
c2UuDQo+Pj4+IA0KPj4+PiBPLmsuLCBsZXQncyB0cnkgdG8gYnJlYWsgdGhhdCBpc3N1ZSBkb3du
Lg0KPj4+PiANCj4+Pj4gRmlyc3RseSwgaG93IGNhbiBJIGdldCBtb3JlIGluZm9ybWF0aW9uIG9u
IHdoeSB0aGUgWGVuIHdhdGNoZG9nDQo+Pj4+IHRyaWdnZXJzPyBJcyB0aGVyZSBkb2N1bWVudGF0
aW9uPyBBcmUgdGhlcmUgYW55IGxvZ3M/IEkgY291bGRuJ3QgZmluZA0KPj4+PiBhbnl0aGluZyB1
c2VmdWwgd2l0aCBteSBzZWFyY2ggc2tpbGxzLg0KPj4+PiANCj4+PiANCj4+PiBBZnRlciBzb21l
IGRlbGF5LCBJIGhhdmUgcGlja2VkIHVwIHRoZSBSYXNwYmVycnkgUGkgYWdhaW4sIGJ1aWx0IFhl
bg0KPj4+IDQuMTktdW5zdGFibGUsIHdpdGggdGhlIHNhbWUgcmVzdWx0OiBSZWJvb3Qgb2YgdGhl
IGNvbXBsZXRlIHN5c3RlbSBhZnRlcg0KPj4+IHRoZSBEb20wIHdhdGNoZG9nIHRyaWdnZXJpbmcg
d2hlbiBhY2Nlc3NpbmcgdGhlIFphYmJpeCBjb250ZW50IG9uIGENCj4+PiB3ZWJzZXJ2ZXIgb24g
RG9tVS4NCj4+PiANCj4+PiBJIHN0aWxsIHdvdWxkIGxpa2UgdG8gZmluZCBvdXQgd2hhdCdzIGdv
aW5nIHdyb25nIGhlcmUsIGJ1dCBJIGhhdmUgbm8NCj4+PiBpZGVhIHdoYXQgdG8gZG8uIEknZCBh
cHByZWNpYXRlIGFueSBoaW50Lg0KPj4+IA0KPj4+IE5vdCBrbm93aW5nIGlmIGl0IGhlbHBzLCBJ
IGFkZGVkIFhlbiBsb2dzIGZyb20gYm9vdCB1bnRpbCBEb20wDQo+Pj4gY3Jhc2gvcmVib290IGJl
bG93Lg0KPj4+IA0KPj4+IExvYWRpbmcgWGVuIHhlbiAuLi4NCj4+PiBMb2FkaW5nIExpbnV4IDYu
MS4wLTE3LWFybTY0IC4uLg0KPj4+IExvYWRpbmcgaW5pdGlhbCByYW1kaXNrIC4uLg0KPj4+IFVz
aW5nIG1vZHVsZXMgcHJvdmlkZWQgYnkgYm9vdGxvYWRlciBpbiBGRFQNCj4+PiBYZW4gNC4xOS11
bnN0YWJsZSAoYy9zIEZyaSBKYW4gMTIgMTE6NTQ6MzEgMjAyNCArMDAwMA0KPj4+IGdpdDoxZWMz
ZmUxZjY2LWRpcnR5KSBFRkkNCj4+PiBsb2FkZXINCj4+PiAgWGVuIDQuMTktdW5zdGFibGUNCj4+
PiAoWEVOKSBYZW4gdmVyc2lvbiA0LjE5LXVuc3RhYmxlIChyb290QGxhbi5vbmxpbmVzY2h1Ymxh
LmRlKSAoZ2NjIChEZWJpYW4NCj4+PiAxMi4yLjAtDQo+Pj4gDQo+Pj4gDQo+Pj4gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMTQpIDEyLjIuMCkgZGVidWc9eSBTdW4gSmFuIDE0IDIxOjQ2OjM0
IENFVCAyMDI0DQo+Pj4gKFhFTikgTGF0ZXN0IENoYW5nZVNldDogRnJpIEphbiAxMiAxMTo1NDoz
MSAyMDI0ICswMDAwIGdpdDoxZWMzZmUxZjY2LWRpcnR5DQo+Pj4gKFhFTikgYnVpbGQtaWQ6IGJh
YmIwM2NiNjEwN2ZjNDZmN2Q4OTY5MTQyY2NkNjc3MmExMTMzYzMNCj4+PiAoWEVOKSBDb25zb2xl
IG91dHB1dCBpcyBzeW5jaHJvbm91cy4NCj4+PiAoWEVOKSBQcm9jZXNzb3I6IDAwMDAwMDAwNDEw
ZmQwODM6ICJBUk0gTGltaXRlZCIsIHZhcmlhbnQ6IDB4MCwgcGFydA0KPj4+IDB4ZDA4LHJldiAw
DQo+Pj4gDQo+Pj4gDQo+Pj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgzDQo+Pj4g
KFhFTikgNjQtYml0IEV4ZWN1dGlvbjoNCj4+PiAoWEVOKSAgIFByb2Nlc3NvciBGZWF0dXJlczog
MDAwMDAwMDAwMDAwMjIyMiAwMDAwMDAwMDAwMDAwMDAwDQo+Pj4gKFhFTikgICAgIEV4Y2VwdGlv
biBMZXZlbHM6IEVMMzo2NCszMiBFTDI6NjQrMzIgRUwxOjY0KzMyIEVMMDo2NCszMg0KPj4+IChY
RU4pICAgICBFeHRlbnNpb25zOiBGbG9hdGluZ1BvaW50IEFkdmFuY2VkU0lNRA0KPj4+IChYRU4p
ICAgRGVidWcgRmVhdHVyZXM6IDAwMDAwMDAwMTAzMDUxMDYgMDAwMDAwMDAwMDAwMDAwMA0KPj4+
IChYRU4pICAgQXV4aWxpYXJ5IEZlYXR1cmVzOiAwMDAwMDAwMDAwMDAwMDAwIDAwMDAwMDAwMDAw
MDAwMDANCj4+PiAoWEVOKSAgIE1lbW9yeSBNb2RlbCBGZWF0dXJlczogMDAwMDAwMDAwMDAwMTEy
NCAwMDAwMDAwMDAwMDAwMDAwDQo+Pj4gKFhFTikgICBJU0EgRmVhdHVyZXM6ICAwMDAwMDAwMDAw
MDEwMDAwIDAwMDAwMDAwMDAwMDAwMDANCj4+PiAoWEVOKSAzMi1iaXQgRXhlY3V0aW9uOg0KPj4+
IChYRU4pICAgUHJvY2Vzc29yIEZlYXR1cmVzOiAwMDAwMDAwMDAwMDAwMTMxOjAwMDAwMDAwMDAw
MTEwMTENCj4+PiAoWEVOKSAgICAgSW5zdHJ1Y3Rpb24gU2V0czogQUFyY2gzMiBBMzIgVGh1bWIg
VGh1bWItMiBKYXplbGxlDQo+Pj4gKFhFTikgICAgIEV4dGVuc2lvbnM6IEdlbmVyaWNUaW1lciBT
ZWN1cml0eQ0KPj4+IChYRU4pICAgRGVidWcgRmVhdHVyZXM6IDAwMDAwMDAwMDMwMTAwNjYNCj4+
PiAoWEVOKSAgIEF1eGlsaWFyeSBGZWF0dXJlczogMDAwMDAwMDAwMDAwMDAwMA0KPj4+IChYRU4p
ICAgTWVtb3J5IE1vZGVsIEZlYXR1cmVzOiAwMDAwMDAwMDEwMjAxMTA1IDAwMDAwMDAwNDAwMDAw
MDANCj4+PiAoWEVOKSAgICAgICAgICAgICAgICAgICAgICAgICAgMDAwMDAwMDAwMTI2MDAwMCAw
MDAwMDAwMDAyMTAyMjExDQo+Pj4gKFhFTikgICBJU0EgRmVhdHVyZXM6IDAwMDAwMDAwMDIxMDEx
MTAgMDAwMDAwMDAxMzExMjExMSAwMDAwMDAwMDIxMjMyMDQyDQo+Pj4gKFhFTikgICAgICAgICAg
ICAgICAgIDAwMDAwMDAwMDExMTIxMzEgMDAwMDAwMDAwMDAxMTE0MiAwMDAwMDAwMDAwMDEwMDAx
DQo+Pj4gKFhFTikgVXNpbmcgU01DIENhbGxpbmcgQ29udmVudGlvbiB2MS4yDQo+Pj4gKFhFTikg
VXNpbmcgUFNDSSB2MS4xDQo+Pj4gKFhFTikgQUNQSTogR0lDQyAoYWNwaV9pZFsweDAwMDBdIGFk
ZHJlc3NbMHhmZjg0MjAwMF0gTVBJRFJbMHgwXSBlbmFibGVkKQ0KPj4+IChYRU4pIEFDUEk6IEdJ
Q0MgKGFjcGlfaWRbMHgwMDAxXSBhZGRyZXNzWzB4ZmY4NDIwMDBdIE1QSURSWzB4MV0gZW5hYmxl
ZCkNCj4+PiAoWEVOKSBBQ1BJOiBHSUNDIChhY3BpX2lkWzB4MDAwMl0gYWRkcmVzc1sweGZmODQy
MDAwXSBNUElEUlsweDJdIGVuYWJsZWQpDQo+Pj4gKFhFTikgQUNQSTogR0lDQyAoYWNwaV9pZFsw
eDAwMDNdIGFkZHJlc3NbMHhmZjg0MjAwMF0gTVBJRFJbMHgzXSBlbmFibGVkKQ0KPj4+IChYRU4p
IDQgQ1BVcyBlbmFibGVkLCA0IENQVXMgdG90YWwNCj4+PiAoWEVOKSBTTVA6IEFsbG93aW5nIDQg
Q1BVcw0KPj4+IChYRU4pIGVuYWJsZWQgd29ya2Fyb3VuZCBmb3I6IEFSTSBlcnJhdHVtIDEzMTk1
MzcNCj4+PiAoWEVOKSBHZW5lcmljIFRpbWVyIElSUTogcGh5cz0zMCBoeXA9MjYgdmlydD0yNyBG
cmVxOiA1NDAwMCBLSHoNCj4+PiAoWEVOKSBHSUN2MiBpbml0aWFsaXphdGlvbjoNCj4+PiAoWEVO
KSAgICAgICAgIGdpY19kaXN0X2FkZHI9MDAwMDAwMDBmZjg0MTAwMA0KPj4+IChYRU4pICAgICAg
ICAgZ2ljX2NwdV9hZGRyPTAwMDAwMDAwZmY4NDIwMDANCj4+PiAoWEVOKSAgICAgICAgIGdpY19o
eXBfYWRkcj0wMDAwMDAwMGZmODQ0MDAwDQo+Pj4gKFhFTikgICAgICAgICBnaWNfdmNwdV9hZGRy
PTAwMDAwMDAwZmY4NDYwMDANCj4+PiAoWEVOKSAgICAgICAgIGdpY19tYWludGVuYW5jZV9pcnE9
MjUNCj4+PiAoWEVOKSBHSUN2MjogMjU2IGxpbmVzLCA0IGNwdXMsIHNlY3VyZSAoSUlEIDAyMDAx
NDNiKS4NCj4+PiAoWEVOKSBYU00gRnJhbWV3b3JrIHYxLjAuMSBpbml0aWFsaXplZA0KPj4+IChY
RU4pIEluaXRpYWxpc2luZyBYU00gU0lMTyBtb2RlDQo+Pj4gKFhFTikgVXNpbmcgc2NoZWR1bGVy
OiBTTVAgQ3JlZGl0IFNjaGVkdWxlciByZXYyIChjcmVkaXQyKQ0KPj4+IChYRU4pIEluaXRpYWxp
emluZyBDcmVkaXQyIHNjaGVkdWxlcg0KPj4+IChYRU4pICBsb2FkX3ByZWNpc2lvbl9zaGlmdDog
MTgNCj4+PiAoWEVOKSAgbG9hZF93aW5kb3dfc2hpZnQ6IDMwDQo+Pj4gKFhFTikgIHVuZGVybG9h
ZF9iYWxhbmNlX3RvbGVyYW5jZTogMA0KPj4+IChYRU4pICBvdmVybG9hZF9iYWxhbmNlX3RvbGVy
YW5jZTogLTMNCj4+PiAoWEVOKSAgcnVucXVldWVzIGFycmFuZ2VtZW50OiBzb2NrZXQNCj4+PiAo
WEVOKSAgY2FwIGVuZm9yY2VtZW50IGdyYW51bGFyaXR5OiAxMG1zDQo+Pj4gKFhFTikgbG9hZCB0
cmFja2luZyB3aW5kb3cgbGVuZ3RoIDEwNzM3NDE4MjQgbnMNCj4+PiAoWEVOKSBBbGxvY2F0ZWQg
Y29uc29sZSByaW5nIG9mIDMyIEtpQi4NCj4+PiAoWEVOKSBDUFUwOiBHdWVzdCBhdG9taWNzIHdp
bGwgdHJ5IDE2IHRpbWVzIGJlZm9yZSBwYXVzaW5nIHRoZSBkb21haW4NCj4+PiAoWEVOKSBCcmlu
Z2luZyB1cCBDUFUxDQo+Pj4gKFhFTikgQ1BVMTogR3Vlc3QgYXRvbWljcyB3aWxsIHRyeSAxNiB0
aW1lcyBiZWZvcmUgcGF1c2luZyB0aGUgZG9tYWluDQo+Pj4gKFhFTikgQ1BVIDEgYm9vdGVkLg0K
Pj4+IChYRU4pIEJyaW5naW5nIHVwIENQVTINCj4+PiAoWEVOKSBDUFUyOiBHdWVzdCBhdG9taWNz
IHdpbGwgdHJ5IDEzIHRpbWVzIGJlZm9yZSBwYXVzaW5nIHRoZSBkb21haW4NCj4+PiAoWEVOKSBD
UFUgMiBib290ZWQuDQo+Pj4gKFhFTikgQnJpbmdpbmcgdXAgQ1BVMw0KPj4+IChYRU4pIENQVTM6
IEd1ZXN0IGF0b21pY3Mgd2lsbCB0cnkgMTYgdGltZXMgYmVmb3JlIHBhdXNpbmcgdGhlIGRvbWFp
bg0KPj4+IChYRU4pIEJyb3VnaHQgdXAgNCBDUFVzDQo+Pj4gKFhFTikgQ1BVIDMgYm9vdGVkLg0K
Pj4+IChYRU4pIEkvTyB2aXJ0dWFsaXNhdGlvbiBkaXNhYmxlZA0KPj4+IChYRU4pIFAyTTogNDQt
Yml0IElQQSB3aXRoIDQ0LWJpdCBQQSBhbmQgOC1iaXQgVk1JRA0KPj4+IChYRU4pIFAyTTogNCBs
ZXZlbHMgd2l0aCBvcmRlci0wIHJvb3QsIFZUQ1IgMHgwMDAwMDAwMDgwMDQzNTk0DQo+Pj4gKFhF
TikgU2NoZWR1bGluZyBncmFudWxhcml0eTogY3B1LCAxIENQVSBwZXIgc2NoZWQtcmVzb3VyY2UN
Cj4+PiAoWEVOKSBJbml0aWFsaXppbmcgQ3JlZGl0MiBzY2hlZHVsZXINCj4+PiAoWEVOKSAgbG9h
ZF9wcmVjaXNpb25fc2hpZnQ6IDE4DQo+Pj4gKFhFTikgIGxvYWRfd2luZG93X3NoaWZ0OiAzMA0K
Pj4+IChYRU4pICB1bmRlcmxvYWRfYmFsYW5jZV90b2xlcmFuY2U6IDANCj4+PiAoWEVOKSAgb3Zl
cmxvYWRfYmFsYW5jZV90b2xlcmFuY2U6IC0zDQo+Pj4gKFhFTikgIHJ1bnF1ZXVlcyBhcnJhbmdl
bWVudDogc29ja2V0DQo+Pj4gKFhFTikgIGNhcCBlbmZvcmNlbWVudCBncmFudWxhcml0eTogMTBt
cw0KPj4+IChYRU4pIGxvYWQgdHJhY2tpbmcgd2luZG93IGxlbmd0aCAxMDczNzQxODI0IG5zDQo+
Pj4gKFhFTikgQWRkaW5nIGNwdSAwIHRvIHJ1bnF1ZXVlIDANCj4+PiAoWEVOKSAgRmlyc3QgY3B1
IG9uIHJ1bnF1ZXVlLCBhY3RpdmF0aW5nDQo+Pj4gKFhFTikgQWRkaW5nIGNwdSAxIHRvIHJ1bnF1
ZXVlIDANCj4+PiAoWEVOKSBBZGRpbmcgY3B1IDIgdG8gcnVucXVldWUgMA0KPj4+IChYRU4pIEFk
ZGluZyBjcHUgMyB0byBydW5xdWV1ZSAwDQo+Pj4gKFhFTikgYWx0ZXJuYXRpdmVzOiBQYXRjaGlu
ZyB3aXRoIGFsdCB0YWJsZSAwMDAwMGEwMDAwMmVlMGIwIC0+DQo+Pj4gMDAwMDBhMDAwMDJlZjI1
MA0KPj4+IChYRU4pIENQVTIgd2lsbCBjYWxsIEFSTV9TTUNDQ19BUkNIX1dPUktBUk9VTkRfMSBv
biBleGNlcHRpb24gZW50cnkNCj4+PiAoWEVOKSBDUFUxIHdpbGwgY2FsbCBBUk1fU01DQ0NfQVJD
SF9XT1JLQVJPVU5EXzEgb24gZXhjZXB0aW9uIGVudHJ5DQo+Pj4gKFhFTikgQ1BVMyB3aWxsIGNh
bGwgQVJNX1NNQ0NDX0FSQ0hfV09SS0FST1VORF8xIG9uIGV4Y2VwdGlvbiBlbnRyeQ0KPj4+IChY
RU4pIENQVTAgd2lsbCBjYWxsIEFSTV9TTUNDQ19BUkNIX1dPUktBUk9VTkRfMSBvbiBleGNlcHRp
b24gZW50cnkNCj4+PiAoWEVOKSAqKiogTE9BRElORyBET01BSU4gMCAqKioNCj4+PiAoWEVOKSBM
b2FkaW5nIGQwIGtlcm5lbCBmcm9tIGJvb3QgbW9kdWxlIEAgMDAwMDAwMDAzMGVmNzAwMA0KPj4+
IChYRU4pIExvYWRpbmcgcmFtZGlzayBmcm9tIGJvb3QgbW9kdWxlIEAgMDAwMDAwMDAyZWU2ZDAw
MA0KPj4+IChYRU4pIEFsbG9jYXRpbmcgMToxIG1hcHBpbmdzIHRvdGFsbGluZyAxMDI0TUIgZm9y
IGRvbTA6DQo+Pj4gKFhFTikgQkFOS1swXSAweDAwMDAwMDQwMDAwMDAwLTB4MDAwMDAwODAwMDAw
MDAgKDEwMjRNQikNCj4+PiAoWEVOKSBHcmFudCB0YWJsZSByYW5nZTogMHgwMDAwMDAyZWNlYjAw
MC0weDAwMDAwMDJlZDJiMDAwDQo+Pj4gKFhFTikgQWxsb2NhdGluZyBQUEkgMTYgZm9yIGV2ZW50
IGNoYW5uZWwgaW50ZXJydXB0DQo+Pj4gKFhFTikgTG9hZGluZyB6SW1hZ2UgZnJvbSAwMDAwMDAw
MDMwZWY3MDAwIHRvDQo+Pj4gMDAwMDAwMDA0MDAwMDAwMC0wMDAwMDAwMDQxZjFjN2MwDQo+Pj4g
KFhFTikgTG9hZGluZyBkMCBpbml0cmQgZnJvbSAwMDAwMDAwMDJlZTZkMDAwIHRvDQo+Pj4gMHgw
MDAwMDAwMDQ4MjAwMDAwLTB4MDAwMDAwMDA0YQ0KPj4+IA0KPj4+IA0KPj4+ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDI4OGMyMg0KPj4+IChYRU4p
IExvYWRpbmcgZDAgRFRCIHRvIDB4MDAwMDAwMDA0ODAwMDAwMC0weDAwMDAwMDAwNDgwMDAyYzMN
Cj4+PiAoWEVOKSBJbml0aWFsIGxvdyBtZW1vcnkgdmlycSB0aHJlc2hvbGQgc2V0IGF0IDB4NDAw
MCBwYWdlcy4NCj4+PiAoWEVOKSBTY3J1YmJpbmcgRnJlZSBSQU0gaW4gYmFja2dyb3VuZA0KPj4+
IChYRU4pIFN0ZC4gTG9nbGV2ZWw6IEFsbA0KPj4+IChYRU4pIEd1ZXN0IExvZ2xldmVsOiBBbGwN
Cj4+PiAoWEVOKSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioNCj4+PiAoWEVOKSBXQVJOSU5HOiBDT05TT0xFIE9VVFBVVCBJUyBTWU5DSFJPTk9VUw0K
Pj4+IChYRU4pIFRoaXMgb3B0aW9uIGlzIGludGVuZGVkIHRvIGFpZCBkZWJ1Z2dpbmcgb2YgWGVu
IGJ5IGVuc3VyaW5nDQo+Pj4gKFhFTikgdGhhdCBhbGwgb3V0cHV0IGlzIHN5bmNocm9ub3VzbHkg
ZGVsaXZlcmVkIG9uIHRoZSBzZXJpYWwgbGluZS4NCj4+PiAoWEVOKSBIb3dldmVyIGl0IGNhbiBp
bnRyb2R1Y2UgU0lHTklGSUNBTlQgbGF0ZW5jaWVzIGFuZCBhZmZlY3QNCj4+PiAoWEVOKSB0aW1l
a2VlcGluZy4gSXQgaXMgTk9UIHJlY29tbWVuZGVkIGZvciBwcm9kdWN0aW9uIHVzZSENCj4+PiAo
WEVOKSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioN
Cj4+PiAoWEVOKSAzLi4uIDIuLi4gMS4uLg0KPj4+IChYRU4pICoqKiBTZXJpYWwgaW5wdXQgdG8g
RE9NMCAodHlwZSAnQ1RSTC1hJyB0aHJlZSB0aW1lcyB0byBzd2l0Y2ggaW5wdXQpDQo+Pj4gKFhF
TikgRnJlZWQgMzc2a0IgaW5pdCBtZW1vcnkuDQo+Pj4gKFhFTikgZDB2MCBVbmhhbmRsZWQgU01D
L0hWQzogMHg4NDAwMDA1MA0KPj4+IChYRU4pIGQwdjAgVW5oYW5kbGVkIFNNQy9IVkM6IDB4ODYw
MGZmMDENCg0KVGhpcyBtZWFucyBMaW51eCBpcyB0cnlpbmcgdG8gZG8gc29tZSBraW5kIG9mIHNt
YyBjYWxsIHdoaWNoIGlzIG5vdCBoYW5kbGVkLg0KSSB3aWxsIGhpZ2hseSBzdWdnZXN0IHRvIGlu
dmVzdGlnYXRlIGhlcmUgYXMgaXQgY291bGQgcmVhbGx5IGJlIHNvbWUgcGxhdGZvcm0NCnNwZWNp
ZmljIGNhbGxzIHRyeWluZyB0byBlbmFibGUgc29tZSBjbG9ja3MuDQoNCj4+PiAoWEVOKSBkMHYw
OiB2R0lDRDogdW5oYW5kbGVkIHdvcmQgd3JpdGUgMHgwMDAwMDBmZmZmZmZmZiB0byBJQ0FDVElW
RVI0DQo+Pj4gKFhFTikgZDB2MDogdkdJQ0Q6IHVuaGFuZGxlZCB3b3JkIHdyaXRlIDB4MDAwMDAw
ZmZmZmZmZmYgdG8gSUNBQ1RJVkVSOA0KPj4+IChYRU4pIGQwdjA6IHZHSUNEOiB1bmhhbmRsZWQg
d29yZCB3cml0ZSAweDAwMDAwMGZmZmZmZmZmIHRvIElDQUNUSVZFUjEyDQo+Pj4gKFhFTikgZDB2
MDogdkdJQ0Q6IHVuaGFuZGxlZCB3b3JkIHdyaXRlIDB4MDAwMDAwZmZmZmZmZmYgdG8gSUNBQ1RJ
VkVSMTYNCj4+PiAoWEVOKSBkMHYwOiB2R0lDRDogdW5oYW5kbGVkIHdvcmQgd3JpdGUgMHgwMDAw
MDBmZmZmZmZmZiB0byBJQ0FDVElWRVIyMA0KPj4+IChYRU4pIGQwdjA6IHZHSUNEOiB1bmhhbmRs
ZWQgd29yZCB3cml0ZSAweDAwMDAwMGZmZmZmZmZmIHRvIElDQUNUSVZFUjI0DQo+Pj4gKFhFTikg
ZDB2MDogdkdJQ0Q6IHVuaGFuZGxlZCB3b3JkIHdyaXRlIDB4MDAwMDAwZmZmZmZmZmYgdG8gSUNB
Q1RJVkVSMjgNCj4+PiAoWEVOKSBkMHYwOiB2R0lDRDogdW5oYW5kbGVkIHdvcmQgd3JpdGUgMHgw
MDAwMDBmZmZmZmZmZiB0byBJQ0FDVElWRVIwDQo+Pj4gKFhFTikgZDB2MTogdkdJQ0Q6IHVuaGFu
ZGxlZCB3b3JkIHdyaXRlIDB4MDAwMDAwZmZmZmZmZmYgdG8gSUNBQ1RJVkVSMA0KPj4+IChYRU4p
IGQwdjI6IHZHSUNEOiB1bmhhbmRsZWQgd29yZCB3cml0ZSAweDAwMDAwMGZmZmZmZmZmIHRvIElD
QUNUSVZFUjANCj4+PiAoWEVOKSBkMHYzOiB2R0lDRDogdW5oYW5kbGVkIHdvcmQgd3JpdGUgMHgw
MDAwMDBmZmZmZmZmZiB0byBJQ0FDVElWRVIwDQoNClRob3NlIGNhbiBiZSBpZ25vcmVkLiBUaGlz
IGlzIExpbnV4IHdyaXRpbmcgdG8gc29tZSBHSUMgcmVnaXN0ZXJzIHdlIGRvIG5vdA0KZW11bGF0
ZSBzbyB3ZSB3YXJuIHRoYXQgdGhvc2UgYXJlIGlnbm9yZWQuIFRob3NlIG1lc3NhZ2VzIGFyZSBw
cmVzZW50IG9uDQphbGwgYXJtIHRhcmdldHMgd2hlbiB0aGUgbG9nIGxldmVsIG9mIFhlbiBpcyBo
aWdoLg0KDQo+Pj4gKFhFTikgZDF2MCBVbmhhbmRsZWQgU01DL0hWQzogMHg4NDAwMDA1MA0KPj4+
IChYRU4pIGQxdjAgVW5oYW5kbGVkIFNNQy9IVkM6IDB4ODYwMGZmMDENCg0KDQpTYW1lIGFzIHVw
cGVyIGRvbmUgb24gYSBkaWZmZXJlbnQgY29yZQ0KDQo+Pj4gKFhFTikgZDF2MDogdkdJQ0Q6IHVu
aGFuZGxlZCB3b3JkIHdyaXRlIDB4MDAwMDAwZmZmZmZmZmYgdG8gSUNBQ1RJVkVSMA0KDQpDYW4g
YmUgaWdub3JlZCBhcyBleHBsYWluZWQgZWFybGllcg0KDQo+Pj4gKFhFTikgY29tbW9uL2dyYW50
X3RhYmxlLmM6MTkwOTpkMXYwIEV4cGFuZGluZyBkMSBncmFudCB0YWJsZSBmcm9tIDEgdG8NCj4+
PiAyIGZyYW1lcw0KDQpUaG9zZSBhcmUgaW50ZXJuYWwgZGVidWcgbWVzc2FnZXMgdG8gWGVuIGFu
ZCBjYW4gYmUgaWdub3JlZCAodGhleSBhcmUgcHJlc2VudA0Kb24gbW9zdCBhcm0gdGFyZ2V0cyku
DQoNCj4+PiAoWEVOKSBnbnR0YWJfbWFya19kaXJ0eSBub3QgaW1wbGVtZW50ZWQgeWV0DQoNCkNh
biBiZSBpZ25vcmVkIHRvDQoNCj4+PiAoWEVOKSBkMnYwIFVuaGFuZGxlZCBTTUMvSFZDOiAweDg0
MDAwMDUwDQo+Pj4gKFhFTikgZDJ2MCBVbmhhbmRsZWQgU01DL0hWQzogMHg4NjAwZmYwMQ0KDQpT
YW1lIGFzIHVwcGVyIG9uIGEgZGlmZmVyZW50IGNvcmUNCg0KPj4+IChYRU4pIGQydjA6IHZHSUNE
OiB1bmhhbmRsZWQgd29yZCB3cml0ZSAweDAwMDAwMA0KDQpTYW1lIGFzIHVwcGVyIG9uIGEgZGlm
ZmVyZW50IGNvcmUNCg0KPj4+IGZmZmZmZmZmIHRvIElDQUNUSVZFUjANCj4+PiAoWEVOKSBjb21t
b24vZ3JhbnRfdGFibGUuYzoxOTA5OmQydjAgRXhwYW5kaW5nIGQyIGdyYW50IHRhYmxlIGZyb20g
MSB0bw0KPj4+IDIgZnJhbWVzDQo+Pj4gKFhFTikgY29tbW9uL2dyYW50X3RhYmxlLmM6MTkwOTpk
MnYwIEV4cGFuZGluZyBkMiBncmFudCB0YWJsZSBmcm9tIDIgdG8NCj4+PiAzIGZyYW1lcw0KPj4+
IChYRU4pIGNvbW1vbi9ncmFudF90YWJsZS5jOjE5MDk6ZDJ2MCBFeHBhbmRpbmcgZDIgZ3JhbnQg
dGFibGUgZnJvbSAzIHRvDQo+Pj4gNCBmcmFtZXMNCj4+PiAoWEVOKSBXYXRjaGRvZyB0aW1lciBm
aXJlZCBmb3IgZG9tYWluIDANCj4+PiAoWEVOKSBIYXJkd2FyZSBEb20wIHNodXRkb3duOiB3YXRj
aGRvZyByZWJvb3RpbmcgbWFjaGluZQ0KPj4gDQo+PiBJJ20gdW5zdXJlIHdob3NlIGF0dGVudGlv
biB0byBkcmF3IHRvIHRoaXMgcmVwb3J0Lg0KPj4gDQo+PiBUaGlzIG1pZ2h0IGJlIGEgc2NoZWR1
bGVyIGlzc3VlIHNpbmNlIHRoZSB3YXRjaGRvZyB0aW1lciBpcyB0cmlnZ2VyaW5nLg0KPj4gDQo+
PiBUaGlzIG1pZ2h0IGJlIGFuIEFDUEkgaXNzdWUgYXMgQUNQSSBpcyBpbiB1c2UgaGVyZS4NCj4+
IA0KPj4gVGhpcyBtaWdodCBiZSBhbiBBUk0gTGludXgga2VybmVsIGlzc3VlLg0KPj4gDQo+PiBJ
biB0aGUgZW5kIHRoaXMgaXMgc29tZW9uZSBydW5uaW5nIGludG8gdHJvdWJsZSB3aXRoIFhlbiBv
biBhbiBBUk0NCj4+IGRldmljZS4gIFlldCBkZXNwaXRlIGJyaW5naW5nIHVwIHRoZSBpc3N1ZSBo
YXNuJ3QgZ290dGVuIGFueSBoZWxwLi4uDQo+IA0KPiBIZXkgRWxsaW90LA0KPiANCj4gVGhhbmtz
IGZvciByYWlzaW5nIHRoZSB2aXNpYmlsaXR5IG9mIHRoaXMuICBJJ20gbm90IGZhbWlsaWFyIHdp
dGggQVJNLA0KPiBidXQgaWYgSSB3ZXJlIGludmVzdGlnYXRpbmcgdGhpcyBJJ2QgdHJ5IHRvIGZp
Z3VyZSBvdXQgd2hhdCB0aGUNCj4gInVuaGFuZGxlZCIgZXJyb3IgbWVzc2FnZXMgYXJlLiAgImdu
dHRhYl9tYXJrX2RpcnR5IG5vdCBpbXBsZW1lbnRlZA0KPiB5ZXQiIGxvb2tzIHByZXR0eSBzdXMg
dG9vLCBhbmQgYWxzbyBzb3VuZHMgbGlrZSBpdCBtaWdodCBiZSBzb21ldGhpbmcNCj4gQVJNLXNw
ZWNpZmljLg0KDQpJIHRyaWVkIHRvIGV4cGxhaW4gdGhvc2UgYW5kIHRoZXkgYXJlIG5vdCB0aGUg
cmVhc29uIG9mIHRoZSBwcm9ibGVtLg0KDQo+IA0KPiBJIGRvbid0IHNlZSBhbnl0aGluZyBzdXNw
aWNpb3VzIFdSVCB0aGUgc2NoZWR1bGVyLCBidXQgYSBzaW1wbGUgd2F5IHRvDQo+IHRlc3QgdGhh
dCB3b3VsZCBiZSB0byBzZXQgdGhlIHNjaGVkdWxlciB0byBjcmVkaXQxIGFuZCBzZWUgaWYgdGhh
dA0KPiBjaGFuZ2VzIHRoaW5ncy4NCg0KSSB3b3VsZCBkZWZpbml0ZWx5IHN1Z2dlc3QgdG8gaW52
ZXN0aWdhdGUgdGhlIDIgdW5oYW5kbGVkIFNNQy9IVkMgY2FsbHMNCmFzIGlmIG9uZSBvZiB0aGVt
IGlzIHRvIGVuYWJsZSBzb21lIGNsb2NrIGl0IGNvdWxkIGV4cGxhaW4gd2h5IHRoZSBzeXN0ZW0g
aXMNCmdldHRpbmcgc3R1Y2sgYXQgc29tZSBwb2ludCAobWF5YmUgd2FpdGluZyBmb3Igc29tZXRo
aW5nIHRvIGJlIHN0YXJ0ZWQpLg0KDQpPdGhlciB0aGFuIHRoYXQgaSBkaWQgbm90IHNlZSBhbnl0
aGluZyB0aGF0IGNvdWxkIHBvaW50IHRvIGFuIG9idmlvdXMgaXNzdWUuDQoNClJlZ2FyZHMNCkJl
cnRyYW5kDQoNCj4gDQo+IC1HZW9yZ2UNCg0KDQo=


From xen-devel-bounces@lists.xenproject.org Tue Jan 23 09:10:47 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 23 Jan 2024 09:10:47 +0000
Received: from list by lists.xenproject.org with outflank-mailman.670301.1042956 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSCnh-0006AV-2p; Tue, 23 Jan 2024 09:10:33 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 670301.1042956; Tue, 23 Jan 2024 09:10:33 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSCng-0006AO-Uu; Tue, 23 Jan 2024 09:10:32 +0000
Received: by outflank-mailman (input) for mailman id 670301;
 Tue, 23 Jan 2024 09:10:31 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=9pmr=JB=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rSCnf-0006AI-Sm
 for xen-devel@lists.xenproject.org; Tue, 23 Jan 2024 09:10:31 +0000
Received: from mail-lj1-x229.google.com (mail-lj1-x229.google.com
 [2a00:1450:4864:20::229])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 4091828c-b9cf-11ee-9b0f-b553b5be7939;
 Tue, 23 Jan 2024 10:10:28 +0100 (CET)
Received: by mail-lj1-x229.google.com with SMTP id
 38308e7fff4ca-2cd33336b32so53290611fa.0
 for <xen-devel@lists.xenproject.org>; Tue, 23 Jan 2024 01:10:28 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 f69-20020a0284cb000000b0046e4a8367c0sm3621954jai.140.2024.01.23.01.10.26
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 23 Jan 2024 01:10:28 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 4091828c-b9cf-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1706001028; x=1706605828; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=ihJrOyY9MpuNfuAwcIceINBruwbUfjSSDbHMFrPqTYg=;
        b=Dy+kly2Eok98nPKYPKSA3pzbfIJQtlIvaPk8whOFttOL9iof4+mhcrgtwMbJY82ZB/
         ciox8Pl94T8iLdxqTaxE9kvJprVd5YWTVIXDBQy93BR669aKqivv+K54uTKE88BftcLK
         sD5wNsEVXatKhONUzSYRwRk5nQr0Tg0aIjKRq0AT+karRfYX5+Uh01MEa1c8bJRYcvT5
         DGmklOJL8CLVobxNcCPqAL4MLxE67QlIdL3G44aPAFfwlOsjnZYzUbFN8tRhTnxMHvQj
         OHqwDYqUVaUuc/slwtvdkxu/EyqBeTPgwNixZhT7hKnU3+f1aH+9sW79gkRzCulyessg
         PuhA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706001028; x=1706605828;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=ihJrOyY9MpuNfuAwcIceINBruwbUfjSSDbHMFrPqTYg=;
        b=PjTAql38u8mOd/oQJfJ9qZvNghnd5KY82Yo+CLpDpojKytGoF0hqwoaIWyCur2BNDb
         9I6nwDgzlzmZhq+gHIroYXFzPverg1oEu4L7mk3vhCdAVREb9ViqT1cA+0yGnY5VphXr
         M/55zF/lw0P63QNert4DJwt7TMONe2WTLZZeztYLwKYVtA4Q+IZy/ZYomGkUw5IsYgRh
         zSV9jix0PZFxtha7TrrJGdU09gkWwyympxsrGonLVkJ1OnP83L7LGrcJnbkfjsjNJN7o
         E2ckicf0oB0C84RHMb7+1RJrODwakkJphJels8RlNUtJZvJhjWgIcK1RiveT6lZ6rwth
         Qakg==
X-Gm-Message-State: AOJu0YznXiTsGc6AJbfj+/BQSZ5O9X0S4OpgBnfZiJX2DfIVmPTU9yib
	pVAbPO2HCKPYYn/wHsg9BktJroED18AwIrSpXBy6SNJrQrRiFeKv/LVAcsrMnr4UJJkFDI9XsXo
	=
X-Google-Smtp-Source: AGHT+IHG5GMhJwDLyzRRVewsAWqxfeymqzexnyQo7avOqfPQ9/92TvROtDbNIOI6lMwYRw++C+k3UA==
X-Received: by 2002:a2e:7e11:0:b0:2cd:2c8d:1ee6 with SMTP id z17-20020a2e7e11000000b002cd2c8d1ee6mr2600952ljc.83.1706001028401;
        Tue, 23 Jan 2024 01:10:28 -0800 (PST)
Message-ID: <6b67b05d-fba0-47a7-8b89-573b7c88e3d6@suse.com>
Date: Tue, 23 Jan 2024 10:10:24 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 1/3] x86/entry: Fix ELF metadata for NMI and
 handle_ist_exception
Content-Language: en-US
To: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Wei Liu <wl@xen.org>, Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>,
 Ross Lagerwall <ross.lagerwall@citrix.com>,
 Xen-devel <xen-devel@lists.xenproject.org>
References: <20240122181714.1543738-1-andrew.cooper3@citrix.com>
 <20240122181714.1543738-2-andrew.cooper3@citrix.com>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <20240122181714.1543738-2-andrew.cooper3@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 22.01.2024 19:17, Andrew Cooper wrote:
> handle_ist_exception isn't part of the NMI handler, just like handle_exception
> isn't part of #PF.
> 
> Fixes: b3a9037550df ("x86: annotate entry points with type and size")
> Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>

Reviewed-by: Jan Beulich <jbeulich@suse.com>

It's a matter of consistency, yes, but personally I wouldn't consider this a
bug (and hence I see no reason for Fixes:). But I can see how different
perspectives here are possible. One this went in, I'll have to remember to
also deal with this case in "common: honor CONFIG_CC_SPLIT_SECTIONS also for
assembly functions".

Jan


From xen-devel-bounces@lists.xenproject.org Tue Jan 23 09:22:23 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 23 Jan 2024 09:22:23 +0000
Received: from list by lists.xenproject.org with outflank-mailman.670306.1042966 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSCz4-0008DO-2O; Tue, 23 Jan 2024 09:22:18 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 670306.1042966; Tue, 23 Jan 2024 09:22:18 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSCz3-0008DH-Va; Tue, 23 Jan 2024 09:22:17 +0000
Received: by outflank-mailman (input) for mailman id 670306;
 Tue, 23 Jan 2024 09:22:16 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=9pmr=JB=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rSCz2-0008DB-DP
 for xen-devel@lists.xenproject.org; Tue, 23 Jan 2024 09:22:16 +0000
Received: from mail-lf1-x136.google.com (mail-lf1-x136.google.com
 [2a00:1450:4864:20::136])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id e55d579d-b9d0-11ee-98f4-6d05b1d4d9a1;
 Tue, 23 Jan 2024 10:22:15 +0100 (CET)
Received: by mail-lf1-x136.google.com with SMTP id
 2adb3069b0e04-50ec948ad31so4572993e87.2
 for <xen-devel@lists.xenproject.org>; Tue, 23 Jan 2024 01:22:14 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 g9-20020a056e021a2900b003627b32dcbdsm1479457ile.37.2024.01.23.01.22.12
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 23 Jan 2024 01:22:13 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: e55d579d-b9d0-11ee-98f4-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1706001734; x=1706606534; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=UAU2ewVq//0Fi9u+Ur8kwLvu3uT4csuFqOyzJKs4X/4=;
        b=YkKXMUG5Og6gSYD9k8euNvLvlNMVvGlYRG5Q5xlN/TEWjS9ZuSXp7Ioz93RMyGnhA0
         cyttTw31ivy2utgVAQnnJ9eumyla0iq+wDBMV0FTFj/IPOEr6GTBI8eZ22eRu734FBcF
         C7IWD4iQppZmzKADxl3EN8QW6jV+bNMAWfQfNotFggP6LB8PBCwdCxPefU8mUWgj2vp9
         phfVRf/XYp88azfMn7PkygUgP1oY2xyjJgdb12bBUr2hUGYdRItkhAM1ax/4JnbvVNlq
         vJ+GA0ZzZXxKCHc0utFow2gQ+H+lxaf6pK8T1/LtgxlsKJf6JjeNcwyptqvgs3kbO5H1
         hZuQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706001734; x=1706606534;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=UAU2ewVq//0Fi9u+Ur8kwLvu3uT4csuFqOyzJKs4X/4=;
        b=uXU33+abQrBKnyCqUb1CFbXjIgk4nUTrb7u/GHXBr9g99VKtXuFidCLp4gb1+TDzHn
         hTVEH6wQpbxX0eWYCcv6xzWQDmH2mx4fSlrMR9dGJT4ZWXjIn2Fkb58BuRS56NktZZT7
         R2c/dJfeOfen2fmyytXSfp4ScjA37jpUt+rqqKT43/b+r/uWl4+kBv++B4FIexlLjuiU
         k85OCtuUIUOVkTRpEN1TiXkTsXQ2LC2fRClQ5af7ixgc6Da3k6XmwXh6M4FwI/7h3FJd
         7T6Z+a1aSNqhKmuv31aCKTb4mqUGX0BjVvAZKi3v/MgVWbZvfFzychLalMfq2j/5Rlk0
         R4pw==
X-Gm-Message-State: AOJu0YxWrBDncaDSejCzFLGUu28kZ8NZaFZTmvpc+OoUw5279/+JHBgJ
	Pu53AHcRuE6mpymde+4Ysai34bNLjwK1N0zi0GPCvAhAM8vO0CWEogaXn7bvbA==
X-Google-Smtp-Source: AGHT+IFNKpXNC2ytmUg0S1W+qxCWIxnTOX83L8CENbTI7G3LPBpbMlTJvTbu+sFmgfc9D33vYZCrig==
X-Received: by 2002:a19:9141:0:b0:50e:e1e8:6cb with SMTP id y1-20020a199141000000b0050ee1e806cbmr2125402lfj.3.1706001734285;
        Tue, 23 Jan 2024 01:22:14 -0800 (PST)
Message-ID: <0edeb969-6fef-46f4-b216-0858edbaefa6@suse.com>
Date: Tue, 23 Jan 2024 10:22:10 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 2/3] x86/entry: Make #PF/NMI/INT0x82 more amenable to
 livepatching
Content-Language: en-US
To: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Wei Liu <wl@xen.org>, Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>,
 Ross Lagerwall <ross.lagerwall@citrix.com>,
 Xen-devel <xen-devel@lists.xenproject.org>
References: <20240122181714.1543738-1-andrew.cooper3@citrix.com>
 <20240122181714.1543738-3-andrew.cooper3@citrix.com>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <20240122181714.1543738-3-andrew.cooper3@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 22.01.2024 19:17, Andrew Cooper wrote:
> It is bad form to have inter-function fallthrough.  It only functions right
> now because alignment padding bytes are NOPs.

But that's a requirement anyway in executable sections.

> --- a/xen/arch/x86/x86_64/compat/entry.S
> +++ b/xen/arch/x86/x86_64/compat/entry.S
> @@ -29,6 +29,7 @@ FUNC(entry_int82)
>  
>          mov   %rsp, %rdi
>          call  do_entry_int82
> +        jmp   compat_test_all_events
>  END(entry_int82)
>  
>  /* %rbx: struct vcpu */
> diff --git a/xen/arch/x86/x86_64/entry.S b/xen/arch/x86/x86_64/entry.S
> index c3f6b667a72a..fc64ef1fd460 100644
> --- a/xen/arch/x86/x86_64/entry.S
> +++ b/xen/arch/x86/x86_64/entry.S
> @@ -723,7 +723,9 @@ END(common_interrupt)
>  FUNC(entry_PF)
>          ENDBR64
>          movl  $X86_EXC_PF, 4(%rsp)
> +        jmp   handle_exception
>  END(entry_PF)
> +
>  /* No special register assumptions. */
>  FUNC(handle_exception, 0)
>          ALTERNATIVE "", clac, X86_FEATURE_XEN_SMAP
> @@ -1023,6 +1025,7 @@ FUNC(entry_NMI)
>          ENDBR64
>          pushq $0
>          movl  $X86_EXC_NMI, 4(%rsp)
> +        jmp   handle_ist_exception
>  END(entry_NMI)
>  
>  FUNC(handle_ist_exception)

Hmm, so here you (partly) do what I was meaning to do in the one patch
left from the entry point annotations series, "common: honor
CONFIG_CC_SPLIT_SECTIONS also for assembly functions". However, I'm
wrapping the JMPs there in #ifdef CONFIG_CC_SPLIT_SECTIONS. Thoughts?
I view the JMPs as pretty useless otherwise, even if there is a
small risk of a future code change not respecting the ordering
requirements. Yet such would be noticed pretty quickly, I suppose.

Jan


From xen-devel-bounces@lists.xenproject.org Tue Jan 23 09:32:48 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 23 Jan 2024 09:32:48 +0000
Received: from list by lists.xenproject.org with outflank-mailman.670311.1042976 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSD99-0001sK-0t; Tue, 23 Jan 2024 09:32:43 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 670311.1042976; Tue, 23 Jan 2024 09:32:42 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSD98-0001sD-TE; Tue, 23 Jan 2024 09:32:42 +0000
Received: by outflank-mailman (input) for mailman id 670311;
 Tue, 23 Jan 2024 09:32:41 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=gDjx=JB=cloud.com=roger.pau@srs-se1.protection.inumbo.net>)
 id 1rSD97-0001s7-6L
 for xen-devel@lists.xenproject.org; Tue, 23 Jan 2024 09:32:41 +0000
Received: from mail-wm1-x32f.google.com (mail-wm1-x32f.google.com
 [2a00:1450:4864:20::32f])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 59d5c971-b9d2-11ee-98f4-6d05b1d4d9a1;
 Tue, 23 Jan 2024 10:32:39 +0100 (CET)
Received: by mail-wm1-x32f.google.com with SMTP id
 5b1f17b1804b1-40e86a9fc4bso52578075e9.2
 for <xen-devel@lists.xenproject.org>; Tue, 23 Jan 2024 01:32:39 -0800 (PST)
Received: from localhost ([213.195.118.74]) by smtp.gmail.com with ESMTPSA id
 o8-20020a05600c4fc800b0040e549c77a1sm45706355wmq.32.2024.01.23.01.32.38
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 23 Jan 2024 01:32:38 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 59d5c971-b9d2-11ee-98f4-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1706002359; x=1706607159; darn=lists.xenproject.org;
        h=in-reply-to:content-transfer-encoding:content-disposition
         :mime-version:references:message-id:subject:cc:to:from:date:from:to
         :cc:subject:date:message-id:reply-to;
        bh=UF1eCSBbiTLms0paL4rk6c4QHmgFstwkgKnftKelqek=;
        b=s8N8xB55Oqc8rlbZvapaSrkb+pnHONhAYxPb0HVB6sQL8wQxdZzwXUxAlVJB+4nDb9
         ba6evKS2jE6kLyTcl8YrxLNcWQskSYTzCASr6EmfT2qJC05rnIzqqHsNFEz3S/PnFzqZ
         agdaooEECw0tW7tiNs47bVtID4FcRmlSzDwaw=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706002359; x=1706607159;
        h=in-reply-to:content-transfer-encoding:content-disposition
         :mime-version:references:message-id:subject:cc:to:from:date
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=UF1eCSBbiTLms0paL4rk6c4QHmgFstwkgKnftKelqek=;
        b=bCtl3soVIZFmhpIdhVJYdxFu1/6+yLnqN8o8PQXWFtT92XRP2dgqdWBleT5QdsQM5T
         dq0gKC1kBJ8iB8QmN3TL5vWv8gD9Euy8S5v9/SjV2UH7K1LFxJejI2k1maTpSeu6bRPY
         flkALRX3XjTmPZinpZxitBjbnAEd3KE5g6DeqHRExnADyPx2FzfuiQdInY7ivwb929BI
         Djzw80iYYN7AZ1PrH1eD4+8dm8JA8SrfP+ufTJrhidTNAG3y5CdGV94Zv/UtpsCHvNDz
         NqFRf+PwRx0sAw/RPSLe57Qciaw+kEoyYvFzOrQ5fNkW+l9YqIV3nMsRjFpNXQUV1dhC
         TfIA==
X-Gm-Message-State: AOJu0YxSIqBQ3jHrHbMFvbQHvfYZFZY1q2xv+DvxWJzmB5JbJRqOIKWJ
	PSuzWuBHpqcWawdrOWs7SQgejZA4ZJrM6CFJYIT4AyS+TP/kFvlTPC4f9yGZZ9U=
X-Google-Smtp-Source: AGHT+IH84Segp5Ce9IZt+QG2aE3ldD0Y+PPYYa8n6/UDKwvkoicEIyrT5Xq6CRHFY8mgmTsh9UeJpQ==
X-Received: by 2002:a05:600c:5399:b0:40e:5a0c:21bf with SMTP id hg25-20020a05600c539900b0040e5a0c21bfmr376101wmb.95.1706002359205;
        Tue, 23 Jan 2024 01:32:39 -0800 (PST)
Date: Tue, 23 Jan 2024 10:32:37 +0100
From: Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
To: Jan Beulich <jbeulich@suse.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
	George Dunlap <george.dunlap@citrix.com>,
	Julien Grall <julien@xen.org>,
	Stefano Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>,
	Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>,
	Ross Lagerwall <ross.lagerwall@citrix.com>,
	Bertrand Marquis <bertrand.marquis@arm.com>,
	Michal Orzel <michal.orzel@amd.com>,
	Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
	xen-devel@lists.xenproject.org
Subject: Re: [PATCH v5] x86/livepatch: align functions to ensure minimal
 distance between entry points
Message-ID: <Za-HtRgSbO3kiK7u@macbook>
References: <20240122110244.14091-1-roger.pau@citrix.com>
 <013210fd-6ea3-4719-afcd-1da97d9cd17f@suse.com>
 <Za6laZtVdQtFP4F5@macbook>
 <ab34df2d-ba47-46c0-a0f2-9c051f640906@suse.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <ab34df2d-ba47-46c0-a0f2-9c051f640906@suse.com>

On Tue, Jan 23, 2024 at 08:53:15AM +0100, Jan Beulich wrote:
> On 22.01.2024 18:27, Roger Pau Monné wrote:
> > On Mon, Jan 22, 2024 at 12:21:47PM +0100, Jan Beulich wrote:
> >> On 22.01.2024 12:02, Roger Pau Monne wrote:
> >>> --- a/xen/arch/x86/xen.lds.S
> >>> +++ b/xen/arch/x86/xen.lds.S
> >>> @@ -99,6 +99,10 @@ SECTIONS
> >>>         *(.text)
> >>>  #ifdef CONFIG_CC_SPLIT_SECTIONS
> >>>         *(.text.*)
> >>> +#endif
> >>> +#ifdef CONFIG_FUNCTION_ALIGNMENT
> >>> +       /* Ensure enough distance with the next placed section. */
> >>> +       . = ALIGN(CONFIG_FUNCTION_ALIGNMENT);
> >>>  #endif
> >>>         *(.text.__x86_indirect_thunk_*)
> >>
> >> I continue to fail to see how an alignment directive can guarantee minimum
> >> distance. In the worst case such a directive inserts nothing at all.
> > 
> > I'm confused, you did provide a RB for this in v4:
> > 
> > https://lore.kernel.org/xen-devel/4cad003f-dda0-4e22-a770-5a5ff56f4d35@suse.com/
> > 
> > Which is basically the same code with a few comments and wording
> > adjustments.
> 
> Hmm, yes. I think the aspect above was raised before, but then (perhaps)
> kind of addressed. (I'm puzzled then too: Why did you drop the R-b, when
> nothing substantially changed?)

The RB was given quite some time ago, so I felt it was probably best
to drop it in case you wanted to re-asses the patch.  Specially given
you have now done the work to also add support for this feature to
assembly annotated functions.

> Yet re-reading the description, there's
> nothing said to this effect. Specifically ...
> 
> >> IOW
> >> at the very least there's a non-spelled-out assumption here about the last
> >> item in the earlier section having suitable alignment and thus, if small
> >> in size, being suitably padded.
> > 
> > Please bear with me, but I'm afraid I don't understand your concerns.
> > 
> > For livepatch build tools (which is the only consumer of such
> > alignments) we already have the requirement that a function in order
> > to be suitable for being live patched must reside in it's own
> > section.
> > 
> > We do want to aim for functions (even assembly ones) to live in their
> > own sections in order to be live patched, and to be properly aligned.
> > However it's also fine for functions to use a different (smaller)
> > alignment, the livepatch build tools will detect this and use the
> > alignment reported.
> 
> ... I don't think this and ...
> 
> > While we want to get to a point where everything that we care to patch
> > lives in it's own section, and is properly padded to ensure minimal
> > required space, I don't see why the proposed approach here should be
> > blocked, as it's a step in the right direction of achieving the
> > goal.
> > 
> > Granted, there's still assembly code that won't be suitably padded,
> > but the livepatch build tools won't assume it to be padded.
> 
> ... this is being pointed out. Which I think is relevant to make
> explicit not the least because the build tools aren't part of the main
> Xen tree. Plus many (like me) may not be overly familiar with how they
> work.

OK, I can integrate some of this wording in the commit message.

> >  After
> > your series to enable assembly annotations we can also make sure the
> > assembly annotated functions live in separate sections and are
> > suitably aligned.
> > 
> >> Personally I don't think merely spelling
> >> out such a requirement would help - it would end up being a trap for
> >> someone to fall into.
> > 
> >> I'm further curious why .text.__x86_indirect_thunk_* is left past the
> >> inserted alignment. While pretty unlikely, isn't it in principle possible
> >> for the thunks there to also need patching? Aren't we instead requiring
> >> then that assembly functions (and thunks) all be suitably aligned as well?
> > 
> > Those are defined in assembly, so requires CONFIG_FUNCTION_ALIGNMENT
> > to also be applied to the function entry points in assembly files.
> 
> I see. Yet the question then remains: Why is the alignment not inserted
> after them? Or will the insertion need to move later on (which would feel
> odd)?

The thunk sections will currently be consumed by *(.text.*) when using
split sections.  Looking at the assembly for them I think they are
suitable annotated to create the right symbols for livepatch tools to
pick.  They won't however have the right alignment just yet, as I
expect that will get solved with your follow up patch to respect
CONFIG_FUNCTION_ALIGNMENT in assembly annotated functions also.

Thanks, Roger.


From xen-devel-bounces@lists.xenproject.org Tue Jan 23 09:36:09 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 23 Jan 2024 09:36:09 +0000
Received: from list by lists.xenproject.org with outflank-mailman.670314.1042985 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSDCR-0002S4-Dq; Tue, 23 Jan 2024 09:36:07 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 670314.1042985; Tue, 23 Jan 2024 09:36:07 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSDCR-0002Rx-Aw; Tue, 23 Jan 2024 09:36:07 +0000
Received: by outflank-mailman (input) for mailman id 670314;
 Tue, 23 Jan 2024 09:36:05 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=9pmr=JB=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rSDCP-0002Rr-M8
 for xen-devel@lists.xenproject.org; Tue, 23 Jan 2024 09:36:05 +0000
Received: from mail-lf1-x129.google.com (mail-lf1-x129.google.com
 [2a00:1450:4864:20::129])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id d14430ba-b9d2-11ee-9b0f-b553b5be7939;
 Tue, 23 Jan 2024 10:36:00 +0100 (CET)
Received: by mail-lf1-x129.google.com with SMTP id
 2adb3069b0e04-50ed808db11so4388485e87.2
 for <xen-devel@lists.xenproject.org>; Tue, 23 Jan 2024 01:36:00 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 c14-20020a056602334e00b007bc102fb67asm6447160ioz.10.2024.01.23.01.35.58
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 23 Jan 2024 01:35:59 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: d14430ba-b9d2-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1706002560; x=1706607360; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=NYACSnM4Nds9rkSEky8dqN9W2fWdG1pOgTBOHbhwjCk=;
        b=Mp2zgnueG0aRUqWTPl0R/Vwh00gqZrDKvesRkCnCxqxo+HcPQHrh05ofC/95BKzDXr
         DvvuFXezSFeuRp0+8FPRJbiUVEw37U7mJp/Y8G8MO/mkI+E9Ne5CFfXRLvQCUnIa9/dK
         dLnnmnk2FMOI8YvYMpufA3CnsCVvR52dEe4UStIYGJ9F/3NXuuQZLM6/lzJQ1mUsnL0p
         GE8E0nvBZrRzSgXAswLEBQKmn85Q+k+XqVrAVttTy06FlLevrvtDrVdQRFXLoYG5L8m2
         Ajv3E6ovJ3UyAR1pzmCVQCoqJ+LUJBAkDec89E7pQehodIGzy/aPz5VF6PfNAdeMEkpc
         +65g==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706002560; x=1706607360;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=NYACSnM4Nds9rkSEky8dqN9W2fWdG1pOgTBOHbhwjCk=;
        b=O8BeFc3pTSPfceAOBh5Ilx4xmbOG2FM/wX7cZghOgJNN4KmUCujqoleoZnjCaFYZaV
         k9feRov4mJgBEt8MnNQ9Bhg/4q4cng5DXkaHteAfFdsh0N7RE2U5mwpEasbwDzGsnKsO
         QJMn0GIaIFSmDF/RPulI0ei6Ex2cL7EH6IfKtduaE0DYkugr1MsAjxRl2Oia37mONgfz
         i1YgYYi4sj2829mTTdYu9LC7yQMp151/quTtjaSCLJ05kKrFU85Ip5e26xitPAplkPPh
         qbuOmgy+UC0dtukeOmdVlNxc9EaOWL3wkJY3l9fqiHfxDJRfJRhRsQN/6ftApV4/ex/v
         qOsw==
X-Gm-Message-State: AOJu0YwWJXpzoFuDb9JGXDAzI+qmYR3iQ/LlcZWd6B4wF6Tla6dBFrxa
	gbp46SH8Zs8Xb8glPzL8HNJ4gpsKFVJ/LEiG8uCXr0jhYcV87uvOT7Im7QNI7w==
X-Google-Smtp-Source: AGHT+IEPv++9856r6Tdz6Y4UTcn8yVe9YiORLRmTI/L6DES9SXdJ1RFoCwnQw/yYx1p2GZqDvrafzA==
X-Received: by 2002:a05:6512:12d6:b0:50e:dc84:114 with SMTP id p22-20020a05651212d600b0050edc840114mr2767185lfg.45.1706002560074;
        Tue, 23 Jan 2024 01:36:00 -0800 (PST)
Message-ID: <6c16291a-be97-4b74-8fe6-c71b515607c4@suse.com>
Date: Tue, 23 Jan 2024 10:35:56 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 3/3] x86/entry: Make intra-funciton symbols properly local
Content-Language: en-US
To: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Wei Liu <wl@xen.org>, Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>,
 Ross Lagerwall <ross.lagerwall@citrix.com>,
 Xen-devel <xen-devel@lists.xenproject.org>
References: <20240122181714.1543738-1-andrew.cooper3@citrix.com>
 <20240122181714.1543738-5-andrew.cooper3@citrix.com>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <20240122181714.1543738-5-andrew.cooper3@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 22.01.2024 19:17, Andrew Cooper wrote:
> Each of these symbols are local to their main function.  By not having them
> globally visible, livepatch's binary diffing logic can reason about the
> functions properly.

I'm not happy with this, and not only because of the way you're putting
things: "globally visible" is misleading - the symbols aren't global.
What you're doing is even eliminate the local symbols from the symbol
table. Which in turn yields less easy to follow disassembly. I could
perhaps be talked into accepting this as long as we agree to not go as
far as converting labels which can be jumped to from other functions as
well. Yet even then ...

> @@ -859,9 +859,9 @@ handle_exception_saved:
>  #endif
>  
>  /* No special register assumptions. */
> -exception_with_ints_disabled:
> +.L_exception_with_ints_disabled:
>          testb $3,UREGS_cs(%rsp)         # interrupts disabled outside Xen?
> -        jnz   FATAL_exception_with_ints_disabled
> +        jnz   .L_FATAL_exception_with_ints_disabled
>          movq  %rsp,%rdi
>          call  search_pre_exception_table
>          testq %rax,%rax                 # no fixup code for faulting EIP?
> @@ -891,7 +891,7 @@ exception_with_ints_disabled:
>          jmp   restore_all_xen           # return to fixup code
>  
>  /* No special register assumptions. */
> -FATAL_exception_with_ints_disabled:
> +.L_FATAL_exception_with_ints_disabled:

... perhaps with the exception of this one label I'd like to ask that
.L not be followed by an underscore. That carries no useful information,
while prefix and name are already properly separated by the difference
in case (see e.g. .Lcompat_bounce_exception).

To suggest a possible middle ground: Can we perhaps have the .L prefixes
added only conditionally upon LIVEPATCH=y (by way of a suitable macro)?

Jan


From xen-devel-bounces@lists.xenproject.org Tue Jan 23 09:39:38 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 23 Jan 2024 09:39:38 +0000
Received: from list by lists.xenproject.org with outflank-mailman.670320.1042996 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSDFl-0003jo-Vv; Tue, 23 Jan 2024 09:39:33 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 670320.1042996; Tue, 23 Jan 2024 09:39:33 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSDFl-0003jh-TH; Tue, 23 Jan 2024 09:39:33 +0000
Received: by outflank-mailman (input) for mailman id 670320;
 Tue, 23 Jan 2024 09:39:32 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=9pmr=JB=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rSDFk-0003jb-Fu
 for xen-devel@lists.xenproject.org; Tue, 23 Jan 2024 09:39:32 +0000
Received: from mail-lj1-x235.google.com (mail-lj1-x235.google.com
 [2a00:1450:4864:20::235])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 4f3b39a2-b9d3-11ee-98f4-6d05b1d4d9a1;
 Tue, 23 Jan 2024 10:39:31 +0100 (CET)
Received: by mail-lj1-x235.google.com with SMTP id
 38308e7fff4ca-2cf03521306so16071341fa.2
 for <xen-devel@lists.xenproject.org>; Tue, 23 Jan 2024 01:39:31 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 m1-20020a056e021c2100b00362772f67a1sm1763718ilh.20.2024.01.23.01.39.28
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 23 Jan 2024 01:39:30 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 4f3b39a2-b9d3-11ee-98f4-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1706002771; x=1706607571; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=UGI8NV5kTpwX2KA1vZT+ImwYEIUrTLhXHybP9AU3X38=;
        b=RvZnLjdVoQays6BdLnKtQZcY+qO2HYpjK+dGfdzxs1pFatO0FQtOhOt4lY25m4shaD
         sQhVlDa3S5WjAj6BqR/8sWm1rq+aAGlpIxgAfGsIjqmAyW8cRG8iOPwbCsJX3iC1kYEc
         lKfxMFjSpZeyrdH4bJMw8yi4JfDPEvHW3uwfWFW47bnFGvUqtvm49r8v6RABpwEwtywR
         gCFVmJ5S68Ou/XPppljMzFG1PLkSEvlqZ2vN3cmfl14HSPXeXFxRH9fR4P1zxQbRyyK2
         DOvRgKA+uLxXTM0H9+s3mb5Rk+G0sg/izOnfq1d9o5gYxfdAsn0CdbV0dnYvMyZyNbIV
         S92A==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706002771; x=1706607571;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=UGI8NV5kTpwX2KA1vZT+ImwYEIUrTLhXHybP9AU3X38=;
        b=tLBktNjI0ozDkl2cJsxeR5TpmMrifthCiwZG2YVrzSiGdqHevyHgACy0mu1UXHzjCC
         ydCpqaMFSiYF5jPKovR862IQvnNTXtafqlEtCYEQfHdn6OFaHHb04klEyMaX4CRx3HGf
         ozXNhwSid7yAkfrXBtsV9+jrFCh5+kzGxJ1vIF7zosp8j4R8j+cBjmoO0wjcR/d61kLM
         D/Rm8nWV1Eh+XBqT8tqtbdG50Zezb0+/LOBagt2p0LxxFUggJ9g9v8UK+zaO0mtyl1Tl
         /CGcvMvnPpxYqXSG1ODEq1e70SVH3xn0pRCENFu3x7AUtsn9dVvCWybUFiv5EqawlCOH
         uBKA==
X-Gm-Message-State: AOJu0YyIvK0RZ+h/8TVAxUoq4Q7NXgtKiP8a+62SD8DC9FEX4gGtCTLf
	qhGWzxaUMx3pxP4OpQTfdunyfs51Ha2JLn1yk06sRWlFCB1zC0OMII4fOEuzcg==
X-Google-Smtp-Source: AGHT+IE33CZwjR4qolRsxnNRxfkd7Pv7IbWk/p1KDuUBsq80VwsssOAsRHlkFbx7ehCWhgwvYbbThA==
X-Received: by 2002:a2e:9992:0:b0:2cd:1c0c:99 with SMTP id w18-20020a2e9992000000b002cd1c0c0099mr2267360lji.74.1706002771027;
        Tue, 23 Jan 2024 01:39:31 -0800 (PST)
Message-ID: <cb138566-c113-4a03-8a48-8f3a1d1dcb0a@suse.com>
Date: Tue, 23 Jan 2024 10:39:27 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v5] x86/livepatch: align functions to ensure minimal
 distance between entry points
Content-Language: en-US
To: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 George Dunlap <george.dunlap@citrix.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>,
 Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>,
 Ross Lagerwall <ross.lagerwall@citrix.com>,
 Bertrand Marquis <bertrand.marquis@arm.com>,
 Michal Orzel <michal.orzel@amd.com>,
 Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
 xen-devel@lists.xenproject.org
References: <20240122110244.14091-1-roger.pau@citrix.com>
 <013210fd-6ea3-4719-afcd-1da97d9cd17f@suse.com> <Za6laZtVdQtFP4F5@macbook>
 <ab34df2d-ba47-46c0-a0f2-9c051f640906@suse.com> <Za-HtRgSbO3kiK7u@macbook>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <Za-HtRgSbO3kiK7u@macbook>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 23.01.2024 10:32, Roger Pau Monné wrote:
> On Tue, Jan 23, 2024 at 08:53:15AM +0100, Jan Beulich wrote:
>> On 22.01.2024 18:27, Roger Pau Monné wrote:
>>> On Mon, Jan 22, 2024 at 12:21:47PM +0100, Jan Beulich wrote:
>>>> I'm further curious why .text.__x86_indirect_thunk_* is left past the
>>>> inserted alignment. While pretty unlikely, isn't it in principle possible
>>>> for the thunks there to also need patching? Aren't we instead requiring
>>>> then that assembly functions (and thunks) all be suitably aligned as well?
>>>
>>> Those are defined in assembly, so requires CONFIG_FUNCTION_ALIGNMENT
>>> to also be applied to the function entry points in assembly files.
>>
>> I see. Yet the question then remains: Why is the alignment not inserted
>> after them? Or will the insertion need to move later on (which would feel
>> odd)?
> 
> The thunk sections will currently be consumed by *(.text.*) when using
> split sections.  Looking at the assembly for them I think they are
> suitable annotated to create the right symbols for livepatch tools to
> pick.  They won't however have the right alignment just yet, as I
> expect that will get solved with your follow up patch to respect
> CONFIG_FUNCTION_ALIGNMENT in assembly annotated functions also.

Not exactly, no. Those will first need converting from ENTRY() to the
new annotations model. Which I certainly intend to get to.

Jan


From xen-devel-bounces@lists.xenproject.org Tue Jan 23 10:14:19 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 23 Jan 2024 10:14:19 +0000
Received: from list by lists.xenproject.org with outflank-mailman.670325.1043006 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSDn7-0002Gm-Ie; Tue, 23 Jan 2024 10:14:01 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 670325.1043006; Tue, 23 Jan 2024 10:14:01 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSDn7-0002Gf-Fz; Tue, 23 Jan 2024 10:14:01 +0000
Received: by outflank-mailman (input) for mailman id 670325;
 Tue, 23 Jan 2024 10:14:00 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=nBgY=JB=amd.com=Jiqian.Chen@srs-se1.protection.inumbo.net>)
 id 1rSDn5-0002GZ-Qa
 for xen-devel@lists.xenproject.org; Tue, 23 Jan 2024 10:13:59 +0000
Received: from NAM11-DM6-obe.outbound.protection.outlook.com
 (mail-dm6nam11on20608.outbound.protection.outlook.com
 [2a01:111:f400:7eaa::608])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 1d318ca7-b9d8-11ee-9b0f-b553b5be7939;
 Tue, 23 Jan 2024 11:13:55 +0100 (CET)
Received: from BL1PR12MB5849.namprd12.prod.outlook.com (2603:10b6:208:384::18)
 by DM4PR12MB5101.namprd12.prod.outlook.com (2603:10b6:5:390::10) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7202.37; Tue, 23 Jan
 2024 10:13:52 +0000
Received: from BL1PR12MB5849.namprd12.prod.outlook.com
 ([fe80::bafd:1985:94e6:ef33]) by BL1PR12MB5849.namprd12.prod.outlook.com
 ([fe80::bafd:1985:94e6:ef33%7]) with mapi id 15.20.7202.035; Tue, 23 Jan 2024
 10:13:52 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 1d318ca7-b9d8-11ee-9b0f-b553b5be7939
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=ifyWFJp24gaCmslRqP6imJV67UjeCGW+NGFg3X0p4MT4GkO6kSXYwsazM6QTHQ+oL+1e1nbMSt2NpELNH+ztpqlMrx2FikPxcdSL36dbGT7mbfYIWCeIseM8DIdlmBKQLtfQ/k+yRX9JpvSa1hBD/PP+RYWIQrKJ4ObVsSFvqenKllBPa4CbDZUkgk6JVou1vPZ6hy6U1Flt+Ww6F/Mx5aL+aU0rWm8oJzFNmp8Y/4NhgHWydIFbSm8HpBqNIYgp+61shj3MeD/BEKfh8kY1UdDTWLL6DNnEk00lPZlTX+cDxcANv0U5/JRm/om0uSEq62p3Y4ZXsWnmRxFrB3+0xA==
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=qbkh8761xeZXJSWIQfHFhE9vM0guL/DRZcMpHeLG8Js=;
 b=mfvaqgjM70oDQZyoTKKNNCZ8Hq/EJXYLTsKVFQQyt5m+re4ix3pYWqtkm+W7ImJCHRbJRAxt814E1KVR7OT5klc1UzOSN3cvAfl+86Pcp9+EVh7KltVsxJY4KaWghvTynm1ud9lZMn2IR3YtSVl8kMfdzGjiHTjPCR4ggeMXrViKlvJ3xf2D+w2TWHhFrWXJGkKwgrHnbFB10nW6X+FUcIFg1qt2ot/2Ld9Yrkmgl2veZa5vrRX2bKUhdPJC8HvLXAAUaYB/Jc7VIUQnC8ZP7JSzWyrML0kT733HJGevbETrF8XqOewNZgSrB90N7yAU0BTzZ6PGGREvlgAbRwS/SQ==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=amd.com; dmarc=pass action=none header.from=amd.com; dkim=pass
 header.d=amd.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=qbkh8761xeZXJSWIQfHFhE9vM0guL/DRZcMpHeLG8Js=;
 b=45sSmFy9W+K95YWIfryd0CXhOqDNo4LsyN8DkWVibHCW+JiqQj5gAjxLcQSvCHwojgcdRdhzazX2hpUI0bRlrCPQGc9LahJbLGyEuoBLK6tQ75utX1IpHmDhSk/aZLiA3MSRn94UwEXyNaci5Ben7xP4oPNyK83I/wbOXcuTY5A=
From: "Chen, Jiqian" <Jiqian.Chen@amd.com>
To: Bjorn Helgaas <helgaas@kernel.org>, "Rafael J . Wysocki"
	<rafael@kernel.org>, Len Brown <lenb@kernel.org>
CC: Juergen Gross <jgross@suse.com>, Stefano Stabellini
	<sstabellini@kernel.org>, Oleksandr Tyshchenko
	<oleksandr_tyshchenko@epam.com>, Boris Ostrovsky
	<boris.ostrovsky@oracle.com>, Bjorn Helgaas <bhelgaas@google.com>,
	=?utf-8?B?Um9nZXIgUGF1IE1vbm7DqQ==?= <roger.pau@citrix.com>,
	"xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>,
	"linux-pci@vger.kernel.org" <linux-pci@vger.kernel.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"linux-acpi@vger.kernel.org" <linux-acpi@vger.kernel.org>, "Hildebrand,
 Stewart" <Stewart.Hildebrand@amd.com>, "Huang, Ray" <Ray.Huang@amd.com>,
	"Chen, Jiqian" <Jiqian.Chen@amd.com>, "Ragiadakou, Xenia"
	<Xenia.Ragiadakou@amd.com>
Subject: Re: [RFC KERNEL PATCH v4 3/3] PCI/sysfs: Add gsi sysfs for pci_dev
Thread-Topic: [RFC KERNEL PATCH v4 3/3] PCI/sysfs: Add gsi sysfs for pci_dev
Thread-Index: AQHaP5+doYjSbLzTtkiUcLxinuNXV7DmmK+AgAEHcQA=
Date: Tue, 23 Jan 2024 10:13:52 +0000
Message-ID:
 <BL1PR12MB5849D7A9EC2BEB55CAF3A889E7742@BL1PR12MB5849.namprd12.prod.outlook.com>
References: <20240122233731.GA291870@bhelgaas>
In-Reply-To: <20240122233731.GA291870@bhelgaas>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-ms-exchange-imapappendstamp: BL1PR12MB5111.namprd12.prod.outlook.com
 (15.20.7202.013)
authentication-results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=amd.com;
x-ms-exchange-messagesentrepresentingtype: 1
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: BL1PR12MB5849:EE_|DM4PR12MB5101:EE_
x-ms-office365-filtering-correlation-id: dde0e558-0a86-415e-6734-08dc1bfbffe2
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam: BCL:0;
x-microsoft-antispam-message-info:
 LKUUyGBSUXG6svQmSuiUXBKS47uRehgMgbfcBiUN4RH19x8Djcwe4vMHK3URrkuYbQKwGnPhp2XoXveFnHNCqcdFm2YCkvMw0xG4bCJdxSzjqLJ6v4UIvTKCIXF1unXUXpUP4Ip6E5pv+14f7syErIHd/zhVG3/i0EzKQ7UMiFEhvnPr9G1xI17YnoZUKzhSLJ2ZufC/6SZhPM3iRro2CJPjk/Lnai64UJyFvqLJ/i7UpTb6TllU1lT+PKnKTQmMNYBb/ZSQF0eI6/G4FOupI2DW2/i2zgQ3NNdmxNdQKRfs8Z6/FqzSAMRXdrc3Z4C0UO2mzTY4rXWGckNNPvge2tUEmLHjylF3FNdsCeVjppJ+TqKqfd8s/qKgMjEr3XazN8OjdxXF/q9hfG+5o49wJd6xsPTH9joIfgvCWq7fbbwiAa/Ms2+L2JaddhQDChMIeNQuBOyrOR/NjHNL5VeiJNEcDVUUTxjn+bMPNOee3C+KQQlhsQB+oeDwR5oXTwF4wBk+Y3pRdjpmh/l/MC3fJ11w9Gs7Jg2m9nyCSX5uj/DrecF/1Zjd9j94hKyw0D4iMaYAuuNaSUtEPQaZa4PKMi2ttrAz6ZmhQXUjzvVdYFv9pnaJuIpx9MCkaF0MMXLBkj1HEnS1/GQejAMXACbkiA==
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BL1PR12MB5849.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230031)(396003)(346002)(39860400002)(136003)(366004)(376002)(230922051799003)(64100799003)(186009)(451199024)(1800799012)(71200400001)(966005)(478600001)(38100700002)(122000001)(55016003)(53546011)(83380400001)(9686003)(7696005)(6506007)(7416002)(33656002)(316002)(64756008)(54906003)(5660300002)(66446008)(2906002)(8936002)(8676002)(4326008)(52536014)(66476007)(110136005)(38070700009)(26005)(66556008)(76116006)(66946007)(41300700001);DIR:OUT;SFP:1101;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?utf-8?B?aEYxRFRiN3hOaE9pOWpidE9EdVg4SmhHQ1o4QWkyaFlMbk00OVdZb2s0alNL?=
 =?utf-8?B?QjRUU3pmY2tJamUvbHl0N1NDcEpwOVNiajRCbzlOMkpPeUllT1pFaG1FYnhL?=
 =?utf-8?B?U0l2a2t2VnVNcGFITzY1VlRJaW84MEJJdzJNQ3lYaUdldFpMSjk3K0QyN3B5?=
 =?utf-8?B?M0xuN3FobS8zOXRIQk5FdXZaRHk0U3ZLZzE4TVZoakJqOUtnV2p4Z1NYbVlM?=
 =?utf-8?B?aWdrRWRXQloxUkF2K0Fka3kvOG9kYzF2SjBMa0lJUUVGaEJ2VGFEWWNaQ2F5?=
 =?utf-8?B?dnZvWk1KbVF3NFltVVZGa1ZEMTRDc1hxMlVkai95RUxBcEpGdGM3WlQzc04v?=
 =?utf-8?B?WDNIczBxQUptZXByRHE4dzZvN0tGN0paSGpLMWtIRlNEbkErRUpSckd4SmZr?=
 =?utf-8?B?TVE3TGo1OCtFdzlYQWNLQ2ttcERJK2JsSVcyYmNGOEsyWTZ6aFBEQmozcGdE?=
 =?utf-8?B?ejhWTDgwQ29yT2NxcXlabU10TE9BaDZJOS9oZUtSaTRqNDBoZlRMYWNGWmNs?=
 =?utf-8?B?WnN4N2NJMDJ3Q1RPY05PZ28ydHlPSUNoTkhSVnlIVjgvS3lDTzhRVWpBTTZG?=
 =?utf-8?B?QU1NL29jaFZxZVhMalMvUnFQbDY0ZDNjaEs0eFB5SmpXZWRxMXprYys0YXND?=
 =?utf-8?B?QkRtTTlscTBkdUVMY01Za0RHWlFzd2Q0NFpLcFRpTmJHQ1ZmTXlnRlFqUjh1?=
 =?utf-8?B?UkFoVnZ2dTVJYThDbitxaXFZRU9TdG5jTUg1TnIyV3NkaUlkbHpKVHF2b1pT?=
 =?utf-8?B?TjBiN3BPZFY1VEhFVnJvN2lFZW9rc1F6dlpFMTAycDdpYWJLVDRRWmdzanhn?=
 =?utf-8?B?MzRUMUtKSkh4QTFsaldaUlJGQjVka2hmQlNDM1dEbk1JZVE0a1duQnNyNXRl?=
 =?utf-8?B?MWpoTG9RNUVPVTV1cUFwZmorSEpNTVl2WXRCaUNwV3hxQ3VVN2gxVDRzT1h4?=
 =?utf-8?B?aXZ6SnhtdUprckEzNmlydEVPR2p4aVk0VjhYUEsvWXBEY3FLQXpHekliUzlr?=
 =?utf-8?B?OStkUDJNYWtZaEE1dEtodGVmZE1XTGRtZ3gzL3NWa1pYb3RSdjd4MEFMSFpF?=
 =?utf-8?B?NENUSlg3bHVPeWExcHlaMlFldFpZRXVRaXp4bWtaRGUwYVRrWHVobnhRQkRB?=
 =?utf-8?B?NFhDSk83SlhtUmVLQjNhUmpTOEdudnd1SjVYTi9wQjZkY2cyTFRYaE56dDdl?=
 =?utf-8?B?RnlvaUl4S2J3WWFiM3ozdjhwOWhrbVhMNTJsN2syR0lrazhSVWtCYS9ScGlU?=
 =?utf-8?B?Ymx1SldXd1V6MUp0V2l0a0d5WE5LUTBONGUwZS9ZU0cwSGhRZ3ozZ2JXWW10?=
 =?utf-8?B?SEdUN2ZGQ3Z5ZnRFbUc2bmpZY3JtM1lZczZ2YmJ0ZWRjRWlEMlBkU3Ztckhj?=
 =?utf-8?B?aWhKYzBoTWRacTNNZ09BdjlJY1RHOEJ5RWhKUCsrTHhqaVkwT3BUL2NTUFl6?=
 =?utf-8?B?bTIzQ3dTQWZCRFpFdHhWMUZuRVdFQlUyc3k0YWtTVTlWekdlTk0wTHJyak03?=
 =?utf-8?B?enVVSzdyY2tXM1Fab01QWmRUU01nZEVUTjE3U3lldGlHUWhWVkRDUUlWc2FD?=
 =?utf-8?B?Nk8rUDlvZzRKdDg1LzJ3cWdxbTRQMStidUFqQWlGK2l1V05EWFVJaXlKdlg3?=
 =?utf-8?B?UDNSaHNHeERCMTdXRW5DMXFCWDFXTjFWdlRMWHAyVXdBZ1JuS1FXZE9vb3p6?=
 =?utf-8?B?Tkhrdmx5ZU8wdXJpeE1NS1hJbU93dnRjSGc2WStnZnJzU0RISkhaN1ZqNEsv?=
 =?utf-8?B?c2hJS2xISWRndXo0MjIvSllpZU9DYTYwdGN5Q3RwRUNNYjA4bUZtWllqVEJ2?=
 =?utf-8?B?OGtkSFVFYjcrRWV6eDFqdTB0K2ZTd2dmM0diWVRnVHg2YzFqU1Nia3hqYnor?=
 =?utf-8?B?QytBZHU3d21NSUJOZ09EQkxSTjMyejk2ckttUHRzV1N5dXRWdkM3TzFISEpD?=
 =?utf-8?B?djltNGxQSzYvNG1Hc3o3WVJzTUxMd09YNUN4bmVZYkJVeWF4Sll1aDZOcGs5?=
 =?utf-8?B?akhvcUdxMDlaR3hrVmE5cVFBNFA3bGswSkE1M3VLN0FKQ21kSkdDMG9vVnVT?=
 =?utf-8?B?ZWRYRmJsMGhZUmhWS0NYZS96VmtpdkFLNlMvbC9QUzBRTFBpbHVPU1E4Z2RU?=
 =?utf-8?Q?qlb4=3D?=
Content-Type: text/plain; charset="utf-8"
Content-ID: <B0B9A0128D0F0D44BA3A8797260C3494@amdcloud.onmicrosoft.com>
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: BL1PR12MB5849.namprd12.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: dde0e558-0a86-415e-6734-08dc1bfbffe2
X-MS-Exchange-CrossTenant-originalarrivaltime: 23 Jan 2024 10:13:52.3520
 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 3dd8961f-e488-4e60-8e11-a82d994e183d
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: JGPxSXNAoawDl/vU62eCxMclrZTHxeGx61f9e1oPhubi8Bj9k4IaMPVZpe3L60VLnYompEfMxKOqotvp1J+f6A==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM4PR12MB5101

T24gMjAyNC8xLzIzIDA3OjM3LCBCam9ybiBIZWxnYWFzIHdyb3RlOg0KPiBPbiBGcmksIEphbiAw
NSwgMjAyNCBhdCAwMjoyMjoxN1BNICswODAwLCBKaXFpYW4gQ2hlbiB3cm90ZToNCj4+IFRoZXJl
IGlzIGEgbmVlZCBmb3Igc29tZSBzY2VuYXJpb3MgdG8gdXNlIGdzaSBzeXNmcy4NCj4+IEZvciBl
eGFtcGxlLCB3aGVuIHhlbiBwYXNzdGhyb3VnaCBhIGRldmljZSB0byBkdW1VLCBpdCB3aWxsDQo+
PiB1c2UgZ3NpIHRvIG1hcCBwaXJxLCBidXQgY3VycmVudGx5IHVzZXJzcGFjZSBjYW4ndCBnZXQg
Z3NpDQo+PiBudW1iZXIuDQo+PiBTbywgYWRkIGdzaSBzeXNmcyBmb3IgdGhhdCBhbmQgZm9yIG90
aGVyIHBvdGVudGlhbCBzY2VuYXJpb3MuDQo+IA0KPiBJc24ndCBHU0kgcmVhbGx5IGFuIEFDUEkt
c3BlY2lmaWMgY29uY2VwdD8NCkkgYWxzbyBhZGRlZCB0aGUgTWFpbnRhaW5zIG9mIEFDUEkgdG8g
Z2V0IHNvbWUgaW5wdXRzLg0KSGkgUmFmYWVsIEouIFd5c29ja2kgYW5kIExlbiBCcm93biwgZG8g
eW91IGhhdmUgYW55IHN1Z2dlc3Rpb25zIGFib3V0IHRoaXMgcGF0Y2g/DQoNCj4gDQo+IEkgZG9u
J3Qga25vdyBlbm91Z2ggYWJvdXQgWGVuIHRvIGtub3cgd2h5IGl0IG5lZWRzIHRoZSBHU0kgaW4N
Cj4gdXNlcnNwYWNlLiAgSXMgdGhpcyBwYXNzdGhyb3VnaCBicmFuZCBuZXcgZnVuY3Rpb25hbGl0
eSB0aGF0IGNhbid0IGJlDQo+IGRvbmUgdG9kYXkgYmVjYXVzZSB3ZSBkb24ndCBleHBvc2UgdGhl
IEdTSSB5ZXQ/DQpJbiBYZW4gYXJjaGl0ZWN0dXJlLCB0aGVyZSBpcyBhIHByaXZpbGVnZWQgZG9t
YWluIG5hbWVkIERvbTAgdGhhdCBoYXMgQUNQSSBzdXBwb3J0IGFuZCBpcyByZXNwb25zaWJsZSBm
b3IgZGV0ZWN0aW5nIGFuZCBjb250cm9sbGluZyB0aGUgaGFyZHdhcmUsIGFsc28gaXQgcGVyZm9y
bXMgcHJpdmlsZWdlZCBvcGVyYXRpb25zIHN1Y2ggYXMgdGhlIGNyZWF0aW9uIG9mIG5vcm1hbCAo
dW5wcml2aWxlZ2VkKSBkb21haW5zIERvbVVzLiBXaGVuIHdlIGdpdmUgdG8gYSBEb21VIGRpcmVj
dCBhY2Nlc3MgdG8gYSBkZXZpY2UsIHdlIG5lZWQgYWxzbyB0byByb3V0ZSB0aGUgcGh5c2ljYWwg
aW50ZXJydXB0cyB0byB0aGUgRG9tVS4gSW4gb3JkZXIgdG8gZG8gc28gWGVuIG5lZWRzIHRvIHNl
dHVwIGFuZCBtYXAgdGhlIGludGVycnVwdHMgYXBwcm9wcmlhdGVseS4gRm9yIHRoZSBjYXNlIG9m
IEdTSSBpbnRlcnJ1cHRzLCBzaW5jZSBYZW4gZG9lcyBub3QgaGF2ZSBzdXBwb3J0IHRvIGdldCB0
aGUgQUNQSSByb3V0aW5nIGluZm8gaW4gdGhlIGh5cGVydmlzb3IgaXRzZWxmLCBpdCBuZWVkcyB0
byBnZXQgdGhpcyBpbmZvIGZyb20gRG9tMC4gT25lIHdheSB3b3VsZCBiZSBmb3IgdGhpcyBpbmZv
IHRvIGJlIGV4cG9zZWQgaW4gc3lzZnMgYW5kIHRoZSB4ZW4gdG9vbHN0YWNrIHRoYXQgcnVucyBp
biBEb20wJ3MgdXNlcnNwYWNlIHRvIGdldCB0aGlzIGluZm8gcmVhZGluZyBzeXNmcyBhbmQgdGhl
biBwYXNzIGl0IHRvIFhlbi4NCg0KQW5kIEkgaGF2ZSB0cmllZCBhbm90aGVyIGFwcHJvYWNoIGlu
IHRoZSBwYXN0IHZlcnNpb24gcGF0Y2hlcyB0aGF0IGtlZXBpbmcgaXJxIHRvIGdzaSBtYXBwaW5n
cyBhbmQgdGhlbiB4ZW4gdG9vbCB3YXMgY29uc3VsdGluZyB0aGUgbWFwIHZpYSBhIHN5c2NhbGwg
YW5kIHdhcyBwYXNzaW5nIHRoZSBpbmZvIHRvIFhlbi4gQnV0IGl0IHdhcyByZWplY3RlZCBieSBY
ZW4gbWFpbnRhaW5lcnMgYmVjYXVzZSB0aGV5IHRob3VnaHQgdGhlIG1hcHBpbmdzIGFuZCB0cmFu
c2xhdGlvbnMgd2VyZSBhbGwgTGludXggaW50ZXJuYWwgYWN0aW9ucywgYW5kIGhhcyBub3RoaW5n
IHRvIGRvIHdpdGggWGVuLCBzbyB0aGV5IHN1Z2dlc3RlZCBtZSB0byBleHBvc2UgdGhlIEdTSSBp
biBzeXNmcyBiZWNhdXNlIGl0IGlzIGNsZWFuZXIgYW5kIGVhc2llciB0byByZXRyaWV2ZSBpdCBp
biB1c2Vyc3BhY2UuDQpUaGlzIGlzIG15IHBhc3QgdmVyc2lvbjoNCktlcm5lbDogaHR0cHM6Ly9s
b3JlLmtlcm5lbC5vcmcvbGttbC8yMDIzMTEyNDEwMzEyMy4zMjYzNDcxLTEtSmlxaWFuLkNoZW5A
YW1kLmNvbS9ULyNtOGQyMGVkZDMyNmNmNzczNWMyODA0ZjAzNzFlOGE2M2I2YmVlYzYwYw0KWGVu
OiBodHRwczovL2xvcmUua2VybmVsLm9yZy94ZW4tZGV2ZWwvMjAyMzExMjQxMDQxMzYuMzI2Mzcy
Mi0xLUppcWlhbi5DaGVuQGFtZC5jb20vVC8jbTlmOTA2OGQ1NTg4MjJhZjBhNWIyOGNkMjQxY2Fi
NGQ3NzllMzY5NzQNCg0KPiANCj4gSG93IGRvZXMgdXNlcnNwYWNlIHVzZSB0aGUgR1NJPyAgSSBz
ZWUgInRvIG1hcCBwaXJxIiwgYnV0IEkgdGhpbmsgd2UNCj4gc2hvdWxkIGhhdmUgbW9yZSBjb25j
cmV0ZSBkZXRhaWxzIGFib3V0IGV4YWN0bHkgd2hhdCBpcyBuZWVkZWQgYW5kIGhvdw0KPiBpdCBp
cyB1c2VkIGJlZm9yZSBhZGRpbmcgc29tZXRoaW5nIG5ldyBpbiBzeXNmcy4NCkFzIGFib3ZlIHJl
YXNvbi4NCg0KPiANCj4gSXMgdGhlcmUgc29tZSBtb3JlIGdlbmVyaWMga2VybmVsIGludGVyZmFj
ZSB3ZSBjb3VsZCB1c2UNCj4gZm9yIHRoaXM/DQpObywgdGhlcmUgaXMgbm8gbWV0aG9kIGZvciBu
b3csIEkgdGhpbmsuDQoNCj4gDQo+IHMvZHVtVS9Eb21VLyA/ICAoSSBkdW5ubywgYnV0IGh0dHBz
Oi8vd3d3Lmdvb2dsZS5jb20vc2VhcmNoP3E9eGVuK2R1bXUNCj4gc3VnZ2VzdHMgaXQgOikpDQo+
IA0KPj4gQ28tZGV2ZWxvcGVkLWJ5OiBIdWFuZyBSdWkgPHJheS5odWFuZ0BhbWQuY29tPg0KPj4g
U2lnbmVkLW9mZi1ieTogSmlxaWFuIENoZW4gPEppcWlhbi5DaGVuQGFtZC5jb20+DQo+PiAtLS0N
Cj4+ICBkcml2ZXJzL2FjcGkvcGNpX2lycS5jICB8ICAxICsNCj4+ICBkcml2ZXJzL3BjaS9wY2kt
c3lzZnMuYyB8IDExICsrKysrKysrKysrDQo+PiAgaW5jbHVkZS9saW51eC9wY2kuaCAgICAgfCAg
MiArKw0KPj4gIDMgZmlsZXMgY2hhbmdlZCwgMTQgaW5zZXJ0aW9ucygrKQ0KPj4NCj4+IGRpZmYg
LS1naXQgYS9kcml2ZXJzL2FjcGkvcGNpX2lycS5jIGIvZHJpdmVycy9hY3BpL3BjaV9pcnEuYw0K
Pj4gaW5kZXggNjMwZmUwYTM0YmM2Li43MzlhNTg3NTVkZjIgMTAwNjQ0DQo+PiAtLS0gYS9kcml2
ZXJzL2FjcGkvcGNpX2lycS5jDQo+PiArKysgYi9kcml2ZXJzL2FjcGkvcGNpX2lycS5jDQo+PiBA
QCAtNDQ5LDYgKzQ0OSw3IEBAIGludCBhY3BpX3BjaV9pcnFfZW5hYmxlKHN0cnVjdCBwY2lfZGV2
ICpkZXYpDQo+PiAgCQlrZnJlZShlbnRyeSk7DQo+PiAgCQlyZXR1cm4gMDsNCj4+ICAJfQ0KPj4g
KwlkZXYtPmdzaSA9IGdzaTsNCj4+ICANCj4+ICAJcmMgPSBhY3BpX3JlZ2lzdGVyX2dzaSgmZGV2
LT5kZXYsIGdzaSwgdHJpZ2dlcmluZywgcG9sYXJpdHkpOw0KPj4gIAlpZiAocmMgPCAwKSB7DQo+
PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9wY2kvcGNpLXN5c2ZzLmMgYi9kcml2ZXJzL3BjaS9wY2kt
c3lzZnMuYw0KPj4gaW5kZXggMjMyMWZkZmVmZDdkLi5jNTFkZjg4ZDA3OWUgMTAwNjQ0DQo+PiAt
LS0gYS9kcml2ZXJzL3BjaS9wY2ktc3lzZnMuYw0KPj4gKysrIGIvZHJpdmVycy9wY2kvcGNpLXN5
c2ZzLmMNCj4+IEBAIC03MSw2ICs3MSwxNiBAQCBzdGF0aWMgc3NpemVfdCBpcnFfc2hvdyhzdHJ1
Y3QgZGV2aWNlICpkZXYsDQo+PiAgfQ0KPj4gIHN0YXRpYyBERVZJQ0VfQVRUUl9STyhpcnEpOw0K
Pj4gIA0KPj4gK3N0YXRpYyBzc2l6ZV90IGdzaV9zaG93KHN0cnVjdCBkZXZpY2UgKmRldiwNCj4+
ICsJCQlzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwNCj4+ICsJCQljaGFyICpidWYpDQo+
PiArew0KPj4gKwlzdHJ1Y3QgcGNpX2RldiAqcGRldiA9IHRvX3BjaV9kZXYoZGV2KTsNCj4+ICsN
Cj4+ICsJcmV0dXJuIHN5c2ZzX2VtaXQoYnVmLCAiJXVcbiIsIHBkZXYtPmdzaSk7DQo+PiArfQ0K
Pj4gK3N0YXRpYyBERVZJQ0VfQVRUUl9STyhnc2kpOw0KPj4gKw0KPj4gIHN0YXRpYyBzc2l6ZV90
IGJyb2tlbl9wYXJpdHlfc3RhdHVzX3Nob3coc3RydWN0IGRldmljZSAqZGV2LA0KPj4gIAkJCQkJ
IHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLA0KPj4gIAkJCQkJIGNoYXIgKmJ1ZikNCj4+
IEBAIC01OTYsNiArNjA2LDcgQEAgc3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgKnBjaV9kZXZfYXR0
cnNbXSA9IHsNCj4+ICAJJmRldl9hdHRyX3JldmlzaW9uLmF0dHIsDQo+PiAgCSZkZXZfYXR0cl9j
bGFzcy5hdHRyLA0KPj4gIAkmZGV2X2F0dHJfaXJxLmF0dHIsDQo+PiArCSZkZXZfYXR0cl9nc2ku
YXR0ciwNCj4+ICAJJmRldl9hdHRyX2xvY2FsX2NwdXMuYXR0ciwNCj4+ICAJJmRldl9hdHRyX2xv
Y2FsX2NwdWxpc3QuYXR0ciwNCj4+ICAJJmRldl9hdHRyX21vZGFsaWFzLmF0dHIsDQo+PiBkaWZm
IC0tZ2l0IGEvaW5jbHVkZS9saW51eC9wY2kuaCBiL2luY2x1ZGUvbGludXgvcGNpLmgNCj4+IGlu
ZGV4IGRlYTA0M2JjMWUzOC4uMDYxOGQ0YTg3YTUwIDEwMDY0NA0KPj4gLS0tIGEvaW5jbHVkZS9s
aW51eC9wY2kuaA0KPj4gKysrIGIvaW5jbHVkZS9saW51eC9wY2kuaA0KPj4gQEAgLTUyOSw2ICs1
MjksOCBAQCBzdHJ1Y3QgcGNpX2RldiB7DQo+PiAgDQo+PiAgCS8qIFRoZXNlIG1ldGhvZHMgaW5k
ZXggcGNpX3Jlc2V0X2ZuX21ldGhvZHNbXSAqLw0KPj4gIAl1OCByZXNldF9tZXRob2RzW1BDSV9O
VU1fUkVTRVRfTUVUSE9EU107IC8qIEluIHByaW9yaXR5IG9yZGVyICovDQo+PiArDQo+PiArCXVu
c2lnbmVkIGludAlnc2k7DQo+PiAgfTsNCj4+ICANCj4+ICBzdGF0aWMgaW5saW5lIHN0cnVjdCBw
Y2lfZGV2ICpwY2lfcGh5c2ZuKHN0cnVjdCBwY2lfZGV2ICpkZXYpDQo+PiAtLSANCj4+IDIuMzQu
MQ0KPj4NCj4+DQoNCi0tIA0KQmVzdCByZWdhcmRzLA0KSmlxaWFuIENoZW4uDQo=


From xen-devel-bounces@lists.xenproject.org Tue Jan 23 10:15:19 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 23 Jan 2024 10:15:19 +0000
Received: from list by lists.xenproject.org with outflank-mailman.670327.1043015 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSDoM-0002lR-Rp; Tue, 23 Jan 2024 10:15:18 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 670327.1043015; Tue, 23 Jan 2024 10:15:18 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSDoM-0002lK-Oz; Tue, 23 Jan 2024 10:15:18 +0000
Received: by outflank-mailman (input) for mailman id 670327;
 Tue, 23 Jan 2024 10:15:17 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=OrDF=JB=gmail.com=oleksii.kurochko@srs-se1.protection.inumbo.net>)
 id 1rSDoL-0002jT-K4
 for xen-devel@lists.xenproject.org; Tue, 23 Jan 2024 10:15:17 +0000
Received: from mail-lf1-x12f.google.com (mail-lf1-x12f.google.com
 [2a00:1450:4864:20::12f])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 4d56c400-b9d8-11ee-9b0f-b553b5be7939;
 Tue, 23 Jan 2024 11:15:15 +0100 (CET)
Received: by mail-lf1-x12f.google.com with SMTP id
 2adb3069b0e04-50e6ee8e911so5549507e87.1
 for <xen-devel@lists.xenproject.org>; Tue, 23 Jan 2024 02:15:15 -0800 (PST)
Received: from [192.168.206.239] ([94.75.70.14])
 by smtp.gmail.com with ESMTPSA id
 k11-20020ac24f0b000000b0050e74ec73f6sm2298015lfr.124.2024.01.23.02.15.13
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 23 Jan 2024 02:15:14 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 4d56c400-b9d8-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1706004915; x=1706609715; darn=lists.xenproject.org;
        h=mime-version:user-agent:content-transfer-encoding:references
         :in-reply-to:date:cc:to:from:subject:message-id:from:to:cc:subject
         :date:message-id:reply-to;
        bh=g1owq01COCQ2Mm6YToLHeV3jdNERTy4yqmWIGO/XMoU=;
        b=U3ndhUnwdwXr1iCH8GvIhyC4ZpULEry32zXgl+zCqdq/uUxK8fE5T0L09fdd7Y2r8a
         FzsSdnoGmiLuC3kFXDvc5jQD3N/9+91DF+e1Wlbr5XKI8qtx3hUR453XEJ/Vtvjplqt9
         9yjDdv/+pwma7nX8tVlXjretFtKtt/6GyxN8hCoOQlWaeCnYawuhutI1s9QmlpJKiDBM
         APyIfek7CQt/myWY4CPjImsSnZWhbmeBxNpzWbZd3cy5/7b5Qg2bKQnPUxyyR8RCE+vo
         YeomZoo1k59s8RoRSwkDKPtQKoIJlsdBWMU58zoN+m6OC6zmq4AXJESMkVXQJuY9s/Wi
         UJ5w==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706004915; x=1706609715;
        h=mime-version:user-agent:content-transfer-encoding:references
         :in-reply-to:date:cc:to:from:subject:message-id:x-gm-message-state
         :from:to:cc:subject:date:message-id:reply-to;
        bh=g1owq01COCQ2Mm6YToLHeV3jdNERTy4yqmWIGO/XMoU=;
        b=FTdDwbTORMQQ7G5QdyRbOMw53dzU3G20dukcfdxNXMNVJ9k+5wBo1pteWsst41VLts
         VFFGAfqfgQUg+ts+h29UBgs3Ja3Qv+BHvTEyHwLSbl7rVrbmxFN2d4Bj0FbDSLhlTSYu
         LYFNLF+mn2ttnr0/X9jeZ5u1aLB1ZRhuovfFTT9QoJjjQ/H1wMWmhKBOEdHg0OJisL0n
         xS9p3prCLZ7JbK/4WVHtJx5olR7zRalFWWe6HDLwf3aqLP0plYpaeqLuN191TiPgq3Zx
         S4NAsLP8wlA8xXumIoAvKLGgUknFRfHoKYo4blzGuTKerls7UZqYwW+tVIKPY/1GJtOp
         aeAw==
X-Gm-Message-State: AOJu0YwE3tHs6ZfVZCCn1usVbCVeIENKPu5zI9SmPQvtl/HD4SMpdze3
	/uvgnmvb1iwXbtNzFZlumvmwSrbzfh/M/6zJYo0BIwIWUZnniTpA
X-Google-Smtp-Source: AGHT+IFTD/mVd1aXQ0ZXIN5Nilq60yoMELVqi5zbgWiv8RiUSyaQqL4FE3XsG8L7DMI0mO7ziSG57w==
X-Received: by 2002:a05:6512:3a85:b0:510:c62:bcd4 with SMTP id q5-20020a0565123a8500b005100c62bcd4mr3998lfu.55.1706004914907;
        Tue, 23 Jan 2024 02:15:14 -0800 (PST)
Message-ID: <56c23efdd79c0b1393ceef1adfcb45f66d4d1cf6.camel@gmail.com>
Subject: Re: [PATCH v3 13/34] xen/riscv: introduce cmpxchg.h
From: Oleksii <oleksii.kurochko@gmail.com>
To: Jan Beulich <jbeulich@suse.com>
Cc: Alistair Francis <alistair.francis@wdc.com>, Bob Eshleman
 <bobbyeshleman@gmail.com>, Connor Davis <connojdavis@gmail.com>, Andrew
 Cooper <andrew.cooper3@citrix.com>, George Dunlap
 <george.dunlap@citrix.com>,  Julien Grall <julien@xen.org>, Stefano
 Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>, 
 xen-devel@lists.xenproject.org
Date: Tue, 23 Jan 2024 12:15:13 +0200
In-Reply-To: <8ee35a76-f3ef-4143-93ef-8e6089f82a80@suse.com>
References: <cover.1703255175.git.oleksii.kurochko@gmail.com>
	 <214bfd61c8ccf2a5b2c640b815ebfa6a705f6234.1703255175.git.oleksii.kurochko@gmail.com>
	 <8ee35a76-f3ef-4143-93ef-8e6089f82a80@suse.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: base64
User-Agent: Evolution 3.50.2 (3.50.2-1.fc39) 
MIME-Version: 1.0

T24gTW9uLCAyMDI0LTAxLTIyIGF0IDE3OjI3ICswMTAwLCBKYW4gQmV1bGljaCB3cm90ZToKPiBP
biAyMi4xMi4yMDIzIDE2OjEyLCBPbGVrc2lpIEt1cm9jaGtvIHdyb3RlOgo+ID4gLS0tIC9kZXYv
bnVsbAo+ID4gKysrIGIveGVuL2FyY2gvcmlzY3YvaW5jbHVkZS9hc20vY21weGNoZy5oCj4gPiBA
QCAtMCwwICsxLDQ5NiBAQAo+ID4gKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4w
LW9ubHkgKi8KPiA+ICsvKiBDb3B5cmlnaHQgKEMpIDIwMTQgUmVnZW50cyBvZiB0aGUgVW5pdmVy
c2l0eSBvZiBDYWxpZm9ybmlhICovCj4gPiArCj4gPiArI2lmbmRlZiBfQVNNX1JJU0NWX0NNUFhD
SEdfSAo+ID4gKyNkZWZpbmUgX0FTTV9SSVNDVl9DTVBYQ0hHX0gKPiA+ICsKPiA+ICsjaW5jbHVk
ZSA8eGVuL2NvbXBpbGVyLmg+Cj4gPiArI2luY2x1ZGUgPHhlbi9saWIuaD4KPiA+ICsKPiA+ICsj
aW5jbHVkZSA8YXNtL2ZlbmNlLmg+Cj4gPiArI2luY2x1ZGUgPGFzbS9pby5oPgo+ID4gKyNpbmNs
dWRlIDxhc20vc3lzdGVtLmg+Cj4gPiArCj4gPiArI2RlZmluZSBfX3hjaGdfcmVsYXhlZChwdHIs
IG5ldywgc2l6ZSkgXAo+ID4gKyh7IFwKPiA+ICvCoMKgwqAgX190eXBlb2ZfXyhwdHIpIHB0cl9f
ID0gKHB0cik7IFwKPiA+ICvCoMKgwqAgX190eXBlb2ZfXyhuZXcpIG5ld19fID0gKG5ldyk7IFwK
PiA+ICvCoMKgwqAgX190eXBlb2ZfXygqKHB0cikpIHJldF9fOyBcCj4gCj4gSSBleHBlY3QgdGhl
IHR5cGVzIG9mIG5ldyBhbmQgKnB0ciB3YW50IHRvIGFjdHVhbGx5IG1hdGNoLiBXaGljaAo+IHlv
dSB0aGVuIHdhbnQgdG8gZW5mb3JjZSwgc28gdGhhdCBpc3N1ZXMgYXQgdXNlIHNpdGVzIHdvdWxk
IGVpdGhlcgo+IGJlIHJlcG9ydGVkIGJ5IHRoZSBjb21waWxlciwgb3IgYmUgcGVybWl0dGVkIGJ5
IGEgdHlwZSBjb252ZXJzaW9uCj4gb2YgbmV3LgpJIGFtIE9LIHRvIG1ha2UgdGhlIHNhbWUgdHlw
ZSBmb3IgbmV3IGFuZCByZXRfXywgYnV0IGl0IGxvb2tzIGxpa2UKX194Y2hnX3JlbGF4ZWQoKSBp
cyB1c2VkIG9ubHkgaW5zaWRlIHhjaGdfcmVsYXhlZCgpIHdoZXJlICduZXcnIGlzCmRlY2xhcmVk
IHdpdGggdGhlIHNhbWUgdHlwZSBhcyAqcHRyLgoKPiAKPiA+ICvCoMKgwqAgc3dpdGNoIChzaXpl
KSBcCj4gPiArCXsgXAo+IAo+IE5pdDogSGFyZCB0YWIgbGVmdCBoZXJlLiAoQWxzbyBhZ2FpbiB5
b3Ugd2FudCB0byBlaXRoZXIgc3RpY2sgdG8KPiBMaW51eCBzdHlsZSBvciBmdWxseSBzd2l0Y2gg
dG8gWGVuIHN0eWxlLikKVGhhbmtzLiBJJ2xsIHVwZGF0ZSB0aGF0LgoKPiAKPiA+ICvCoMKgwqAg
Y2FzZSA0OiBcCj4gPiArwqDCoMKgwqDCoMKgwqAgYXNtIHZvbGF0aWxlKCBcCj4gPiArwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoCAiCWFtb3N3YXAudyAlMCwgJTIsICUxXG4iIFwKPiAKPiBJIGRvbid0
IHRoaW5rIGEgbGVhZGluZyB0YWIgKG9yIGxlYWRpbmcgd2hpdGVzcGFjZSBpbiBnZW5lcmFsKSBp
cwo+IG5lZWRlZCBpbiBzaW5nbGUtbGluZS1vdXRwdXQgYXNtKClzLiBUaGUgdHJhaWxpbmcgXG4g
YWxzbyBpc24ndAo+IG5lZWRlZCBpZiBJJ20gbm90IG1pc3Rha2VuLgpJIGp1c3Qgd2FudGVkIHRv
IGFsaWduIGl0IHdpdGggIj1yIiwgYnV0IGZvciBzdXJlIGEgbGVhZGluZyB0YWIgb3IKd2hpdGVz
cGFjZSBjYW4gYmUgZHJvcHBlZC4KCj4gCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCA6ICI9
ciIgKHJldF9fKSwgIitBIiAoKnB0cl9fKSBcCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCA6
ICJyIiAobmV3X18pIFwKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDogIm1lbW9yeSIgKTsg
XAo+ID4gK8KgwqDCoMKgwqDCoMKgIGJyZWFrOyBcCj4gPiArwqDCoMKgIGNhc2UgODogXAo+ID4g
K8KgwqDCoMKgwqDCoMKgIGFzbSB2b2xhdGlsZSggXAo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg
wqAgIglhbW9zd2FwLmQgJTAsICUyLCAlMVxuIiBcCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC
oCA6ICI9ciIgKHJldF9fKSwgIitBIiAoKnB0cl9fKSBcCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKg
wqDCoCA6ICJyIiAobmV3X18pIFwKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDogIm1lbW9y
eSIgKTsgXAo+ID4gK8KgwqDCoMKgwqDCoMKgIGJyZWFrOyBcCj4gPiArwqDCoMKgIGRlZmF1bHQ6
IFwKPiA+ICvCoMKgwqDCoMKgwqDCoCBBU1NFUlRfVU5SRUFDSEFCTEUoKTsgXAo+IAo+IElmIGF0
IGFsbCBwb3NzaWJsZSB0aGlzIHdhbnRzIHRvIHRyaWdnZXIgYSBidWlsZCBmYWlsdXJlLCBub3Qg
YQo+IHJ1bnRpbWUKPiBvbmUuCkknbGwgdXBkYXRlIHRoYXQgd2l0aCBCVUlMRF9CVUdfT04oc2l6
ZSA+IDgpOwo+IAo+ID4gK8KgwqDCoCB9IFwKPiA+ICvCoMKgwqAgcmV0X187IFwKPiA+ICt9KQo+
ID4gKwo+ID4gKyNkZWZpbmUgeGNoZ19yZWxheGVkKHB0ciwgeCkgXAo+ID4gKyh7IFwKPiA+ICvC
oMKgwqAgX190eXBlb2ZfXygqKHB0cikpIHhfID0gKHgpOyBcCj4gPiArwqDCoMKgIChfX3R5cGVv
Zl9fKCoocHRyKSkpIF9feGNoZ19yZWxheGVkKChwdHIpLCB4XywKPiA+IHNpemVvZigqKHB0cikp
KTsgXAo+IAo+IE5pdDogU3RyYXkgYmxhbmsgYWZ0ZXIgY2FzdC4gRm9yIHJlYWRhYmlsaXR5IEkn
ZCBhbHNvIHN1Z2dlc3QgdG8KPiBkcm9wIHBhcmVudGhlc2VzIGluIGNhc2VzIGxpa2UgdGhlIGZp
cnN0IGFyZ3VtZW50IHBhc3NlZCB0bwo+IF9feGNoZ19yZWxheGVkKCkgaGVyZS4KVGhhbmtzLiBJ
J2xsIHRha2UgdGhhdCBpbnRvIGFjY291bnQuCgo+IAo+ID4gK30pCj4gCj4gRm9yIGJvdGg6IFdo
YXQgZG9lcyAicmVsYXhlZCIgZGVzY3JpYmU/IEknbSBhc2tpbmcgYmVjYXVzZSBpdCdzIG5vdAo+
IHJlYWxseSBjbGVhciB3aGV0aGVyIHRoZSBtZW1vcnkgY2xvYmJlcnMgYXJlIGFjdHVhbGx5IG5l
ZWRlZC4KPiAKPiA+ICsjZGVmaW5lIF9feGNoZ19hY3F1aXJlKHB0ciwgbmV3LCBzaXplKSBcCj4g
PiArKHsgXAo+ID4gK8KgwqDCoCBfX3R5cGVvZl9fKHB0cikgcHRyX18gPSAocHRyKTsgXAo+ID4g
K8KgwqDCoCBfX3R5cGVvZl9fKG5ldykgbmV3X18gPSAobmV3KTsgXAo+ID4gK8KgwqDCoCBfX3R5
cGVvZl9fKCoocHRyKSkgcmV0X187IFwKPiA+ICvCoMKgwqAgc3dpdGNoIChzaXplKSBcCj4gPiAr
CXsgXAo+ID4gK8KgwqDCoCBjYXNlIDQ6IFwKPiA+ICvCoMKgwqDCoMKgwqDCoCBhc20gdm9sYXRp
bGUoIFwKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICIJYW1vc3dhcC53ICUwLCAlMiwgJTFc
biIgXAo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgUklTQ1ZfQUNRVUlSRV9CQVJSSUVSIFwK
PiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDogIj1yIiAocmV0X18pLCAiK0EiICgqcHRyX18p
IFwKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDogInIiIChuZXdfXykgXAo+ID4gK8KgwqDC
oMKgwqDCoMKgwqDCoMKgwqAgOiAibWVtb3J5IiApOyBcCj4gPiArwqDCoMKgwqDCoMKgwqAgYnJl
YWs7IFwKPiA+ICvCoMKgwqAgY2FzZSA4OiBcCj4gPiArwqDCoMKgwqDCoMKgwqAgYXNtIHZvbGF0
aWxlKCBcCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAiCWFtb3N3YXAuZCAlMCwgJTIsICUx
XG4iIFwKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFJJU0NWX0FDUVVJUkVfQkFSUklFUiBc
Cj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCA6ICI9ciIgKHJldF9fKSwgIitBIiAoKnB0cl9f
KSBcCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCA6ICJyIiAobmV3X18pIFwKPiA+ICvCoMKg
wqDCoMKgwqDCoMKgwqDCoMKgIDogIm1lbW9yeSIgKTsgXAo+ID4gK8KgwqDCoMKgwqDCoMKgIGJy
ZWFrOyBcCj4gPiArwqDCoMKgIGRlZmF1bHQ6IFwKPiA+ICvCoMKgwqDCoMKgwqDCoCBBU1NFUlRf
VU5SRUFDSEFCTEUoKTsgXAo+ID4gK8KgwqDCoCB9IFwKPiA+ICvCoMKgwqAgcmV0X187IFwKPiA+
ICt9KQo+IAo+IElmIEknbSBub3QgbWlzdGFrZW4gdGhpcyBkaWZmZXJzIGZyb20gX194Y2hnX3Jl
bGF4ZWQoKSBvbmx5IGluIHRoZQo+IHVzZQo+IG9mIFJJU0NWX0FDUVVJUkVfQkFSUklFUiwgYW5k
IC4uLgo+IAo+ID4gKyNkZWZpbmUgeGNoZ19hY3F1aXJlKHB0ciwgeCkgXAo+ID4gKyh7IFwKPiA+
ICvCoMKgwqAgX190eXBlb2ZfXygqKHB0cikpIHhfID0gKHgpOyBcCj4gPiArwqDCoMKgIChfX3R5
cGVvZl9fKCoocHRyKSkpIF9feGNoZ19hY3F1aXJlKChwdHIpLCB4XywKPiA+IHNpemVvZigqKHB0
cikpKTsgXAo+ID4gK30pCj4gPiArCj4gPiArI2RlZmluZSBfX3hjaGdfcmVsZWFzZShwdHIsIG5l
dywgc2l6ZSkgXAo+ID4gKyh7IFwKPiA+ICvCoMKgwqAgX190eXBlb2ZfXyhwdHIpIHB0cl9fID0g
KHB0cik7IFwKPiA+ICvCoMKgwqAgX190eXBlb2ZfXyhuZXcpIG5ld19fID0gKG5ldyk7IFwKPiA+
ICvCoMKgwqAgX190eXBlb2ZfXygqKHB0cikpIHJldF9fOyBcCj4gPiArwqDCoMKgIHN3aXRjaCAo
c2l6ZSkgXAo+ID4gKwl7IFwKPiA+ICvCoMKgwqAgY2FzZSA0OiBcCj4gPiArwqDCoMKgwqDCoMKg
wqAgYXNtIHZvbGF0aWxlICggXAo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgUklTQ1ZfUkVM
RUFTRV9CQVJSSUVSIFwKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICIJYW1vc3dhcC53ICUw
LCAlMiwgJTFcbiIgXAo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgOiAiPXIiIChyZXRfXyks
ICIrQSIgKCpwdHJfXykgXAo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgOiAiciIgKG5ld19f
KSBcCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCA6ICJtZW1vcnkiKTsgXAo+ID4gK8KgwqDC
oMKgwqDCoMKgIGJyZWFrOyBcCj4gPiArwqDCoMKgIGNhc2UgODogXAo+ID4gK8KgwqDCoMKgwqDC
oMKgIGFzbSB2b2xhdGlsZSAoIFwKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFJJU0NWX1JF
TEVBU0VfQkFSUklFUiBcCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAiCWFtb3N3YXAuZCAl
MCwgJTIsICUxXG4iIFwKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDogIj1yIiAocmV0X18p
LCAiK0EiICgqcHRyX18pIFwKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDogInIiIChuZXdf
XykgXAo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgOiAibWVtb3J5Iik7IFwKPiA+ICvCoMKg
wqDCoMKgwqDCoCBicmVhazsgXAo+ID4gK8KgwqDCoCBkZWZhdWx0OiBcCj4gPiArwqDCoMKgwqDC
oMKgwqAgQVNTRVJUX1VOUkVBQ0hBQkxFKCk7IFwKPiA+ICvCoMKgwqAgfSBcCj4gPiArwqDCoMKg
IHJldF9fOyBcCj4gPiArfSkKPiAKPiB0aGlzIG9ubHkgaW4gdGhlIHVzZSBvZiBSSVNDVl9SRUxF
QVNFX0JBUlJJRVIuIElmIHNvIHRoZXkgbGlrZWx5IHdhbnQKPiBmb2xkaW5nLCB0byBsaW1pdCBy
ZWR1bmRhbmN5IGFuZCBtYWtlIGV2ZW50dWFsIHVwZGF0aW5nIGVhc2llci4gKFNhbWUKPiBmb3Ig
dGhlIGNtcHhjaGcgaGVscGVyIGZ1cnRoZXIgZG93biwgYXMgaXQgc2VlbXMuKQpZZXMsIHlvdSBh
cmUgcmlnaHQuIFRoZSBkaWZmZXJlbmNlIGlzIG9ubHkgaW4gUklTQ1ZfUkVMRUFTRV9CQVJSSUVS
IGFuZAppdCBpcyBhbiBhYnNlbmNlIG9mIFJJU0NWX1JFTEVBU0VfQkFSUklFUiBpcyBhIHJlYXNv
biB3aHkgd2UgaGF2ZQoicmVsYXhlZCIgdmVyc2lvbnMuCgpJIGFtIG5vdCBzdXJlIHRoYXQgSSB1
bmRlcnN0YW5kIHdoYXQgeW91IG1lYW4gYnkgZm9sZGluZyBoZXJlLiBEbyB5b3UKbWVhbiB0aGF0
IHRoZXJlIGlzIG5vIGFueSBzZW5zZSB0byBoYXZlIHRvIHNlcGFyYXRlIG1hY3JvcyBhbmQgaXQg
aXMKbmVlZGVkIG9ubHkgb25lIHdpdGggUklTQ1ZfUkVMRUFTRV9CQVJSSUVSPwoKPiAKPiA+ICsj
ZGVmaW5lIHhjaGdfcmVsZWFzZShwdHIsIHgpIFwKPiA+ICsoeyBcCj4gPiArwqDCoMKgIF9fdHlw
ZW9mX18oKihwdHIpKSB4XyA9ICh4KTsgXAo+ID4gK8KgwqDCoCAoX190eXBlb2ZfXygqKHB0cikp
KSBfX3hjaGdfcmVsZWFzZSgocHRyKSwgeF8sCj4gPiBzaXplb2YoKihwdHIpKSk7IFwKPiA+ICt9
KQo+ID4gKwo+ID4gK3N0YXRpYyBhbHdheXNfaW5saW5lIHVpbnQzMl90IF9feGNoZ19jYXNlXzQo
dm9sYXRpbGUgdWludDMyX3QKPiA+ICpwdHIsCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC
oMKgwqAgdWludDMyX3QgbmV3KQo+ID4gK3sKPiA+ICvCoMKgwqAgX190eXBlb2ZfXygqKHB0cikp
IHJldDsKPiA+ICsKPiA+ICvCoMKgwqAgYXNtIHZvbGF0aWxlICgKPiA+ICvCoMKgwqDCoMKgwqDC
oCAiwqDCoCBhbW9zd2FwLncuYXFybCAlMCwgJTIsICUxXG4iCj4gPiArwqDCoMKgwqDCoMKgwqAg
OiAiPXIiIChyZXQpLCAiK0EiICgqcHRyKQo+ID4gK8KgwqDCoMKgwqDCoMKgIDogInIiIChuZXcp
Cj4gPiArwqDCoMKgwqDCoMKgwqAgOiAibWVtb3J5IiApOwo+ID4gKwo+ID4gK8KgwqDCoCByZXR1
cm4gcmV0Owo+ID4gK30KPiA+ICsKPiA+ICtzdGF0aWMgYWx3YXlzX2lubGluZSB1aW50NjRfdCBf
X3hjaGdfY2FzZV84KHZvbGF0aWxlIHVpbnQ2NF90Cj4gPiAqcHRyLAo+ID4gK8KgwqDCoMKgwqDC
oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoMKgIHVpbnQ2NF90IG5ldykKPiA+ICt7Cj4gPiArwqDCoMKgIF9fdHlw
ZW9mX18oKihwdHIpKSByZXQ7Cj4gPiArCj4gPiArwqDCoMKgIGFzbSB2b2xhdGlsZSggXAo+ID4g
K8KgwqDCoMKgwqDCoMKgICLCoMKgIGFtb3N3YXAuZC5hcXJsICUwLCAlMiwgJTFcbiIgXAo+ID4g
K8KgwqDCoMKgwqDCoMKgIDogIj1yIiAocmV0KSwgIitBIiAoKnB0cikgXAo+ID4gK8KgwqDCoMKg
wqDCoMKgIDogInIiIChuZXcpIFwKPiA+ICvCoMKgwqDCoMKgwqDCoCA6ICJtZW1vcnkiICk7IFwK
PiA+ICsKPiA+ICvCoMKgwqAgcmV0dXJuIHJldDsKPiA+ICt9Cj4gPiArCj4gPiArc3RhdGljIGFs
d2F5c19pbmxpbmUgdW5zaWduZWQgc2hvcnQgX19jbXB4Y2hnX2Nhc2VfMih2b2xhdGlsZQo+ID4g
dWludDMyX3QgKnB0ciwKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC
oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg
wqDCoMKgwqDCoCB1aW50MzJfdCBvbGQsCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC
oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoMKgwqAgdWludDMyX3QKPiA+IG5ldyk7Cj4gCj4gRG9uJ3QgeW91IGNv
bnNpc3RlbnRseSBtZWFuIHVpbnQxNl90IGhlcmUgKGluY2wgdGhlIHJldHVybiB0eXBlKSBhbmQK
PiAuLi4KPiAKPiA+ICtzdGF0aWMgYWx3YXlzX2lubGluZSB1bnNpZ25lZCBzaG9ydCBfX2NtcHhj
aGdfY2FzZV8xKHZvbGF0aWxlCj4gPiB1aW50MzJfdCAqcHRyLAo+ID4gK8KgwqDCoMKgwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC
oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHVpbnQzMl90IG9sZCwKPiA+ICvCoMKg
wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC
oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB1aW50MzJfdAo+ID4g
bmV3KTsKPiAKPiAuLi4gdWludDhfdCBoZXJlPwpUaGUgaWRlYSB3YXMgdGhhdCB3ZSBlbXVsYXRl
IF9fY21weGNoZ19jYXNlXzEgYW5kIF9fY21weGNoZ19jYXNlXzIKdXNpbmcgNCBieXRlcyBjbXB4
Y2hnIGFuZCBfX2NtcHhjaGdfY2FzZV80IGV4cGVjdHMgdWludDMyX3QuCgo+IAo+ID4gK3N0YXRp
YyBpbmxpbmUgdW5zaWduZWQgbG9uZyBfX3hjaGcodm9sYXRpbGUgdm9pZCAqcHRyLCB1bnNpZ25l
ZAo+ID4gbG9uZyB4LCBpbnQgc2l6ZSkKPiA+ICt7Cj4gPiArwqDCoMKgIHN3aXRjaCAoc2l6ZSkg
ewo+ID4gK8KgwqDCoCBjYXNlIDE6Cj4gPiArwqDCoMKgwqDCoMKgwqAgcmV0dXJuIF9fY21weGNo
Z19jYXNlXzEocHRyLCAodWludDMyX3QpLTEsIHgpOwo+ID4gK8KgwqDCoCBjYXNlIDI6Cj4gPiAr
wqDCoMKgwqDCoMKgwqAgcmV0dXJuIF9fY21weGNoZ19jYXNlXzIocHRyLCAodWludDMyX3QpLTEs
IHgpOwo+IAo+IEhvdyBhcmUgdGhlc2UgZ29pbmcgdG8gd29yaz8gWW91J2xsIGNvbXBhcmUgYWdh
aW5zdCB+MCwgYW5kIGlmIHRoZQo+IHZhbHVlCj4gaW4gbWVtb3J5IGlzbid0IH4wLCBtZW1vcnkg
d29uJ3QgYmUgdXBkYXRlZDsgeW91IHdpbGwgb25seQo+IChjb3JyZWN0bHkpCj4gcmV0dXJuIHRo
ZSB2YWx1ZSBmb3VuZCBpbiBtZW1vcnkuCj4gCj4gT3Igd2FpdCAtIGxvb2tpbmcgYXQgX19jbXB4
Y2hnX2Nhc2VfezEsMn0oKSBmYXIgZnVydGhlciBkb3duLCB5b3UKPiBpZ25vcmUKPiAib2xkIiB0
aGVyZS4gV2hpY2ggYXBwYXJlbnRseSBtZWFucyB0aGV5J2xsIHdvcmsgZm9yIHRoZSB1c2UgaGVy
ZSwKPiBidXQKPiBub3QgZm9yIHRoZSB1c2UgaW4gX19jbXB4Y2hnKCkuClllcywgdGhlIHRyaWNr
IGlzIHRoYXQgb2xkIGlzIGlnbm9yZWQgYW5kIGlzIHJlYWQgaW4KX19lbXVsYXRlX2NtcHhjaGdf
Y2FzZTFfMigpIGJlZm9yZSBfX2NtcHhjaGdfY2FzZV80IGlzIGNhbGxlZDoKICAgIGRvIHsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IAogICAgICAgIHJlYWRfdmFsID0gcmVhZF9mdW5jKGFsaWduZWRfcHRyKTsgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgCiAgICAgICAgc3dhcHBlZF9uZXcgPSByZWFkX3ZhbCAmIH5tYXNrOyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICBzd2FwcGVkX25ldyB8PSBtYXNr
ZWRfbmV3OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgIHJldCA9
IGNtcHhjaGdfZnVuYyhhbGlnbmVkX3B0ciwgcmVhZF92YWwsIHN3YXBwZWRfbmV3KTsgICAgICAg
CiAgICB9IHdoaWxlICggcmV0ICE9IHJlYWRfdmFsICk7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAKcmVhZF92YWwgaXQgaXMgJ29sZCcuCgpCdXQgbm93IEkgYW0gbm90IDEw
MCUgc3VyZSB0aGF0IGl0IGlzIGNvcnJlY3QgZm9yIF9fY21weGNoZy4uLgoKPiAKPiA+ICvCoMKg
wqAgY2FzZSA0Ogo+ID4gK8KgwqDCoMKgwqDCoMKgIHJldHVybiBfX3hjaGdfY2FzZV80KHB0ciwg
eCk7Cj4gPiArwqDCoMKgIGNhc2UgODoKPiA+ICvCoMKgwqDCoMKgwqDCoCByZXR1cm4gX194Y2hn
X2Nhc2VfOChwdHIsIHgpOwo+ID4gK8KgwqDCoCBkZWZhdWx0Ogo+ID4gK8KgwqDCoMKgwqDCoMKg
IEFTU0VSVF9VTlJFQUNIQUJMRSgpOwo+ID4gK8KgwqDCoCB9Cj4gPiArCj4gPiArwqDCoMKgIHJl
dHVybiAtMTsKPiA+ICt9Cj4gPiArCj4gPiArI2RlZmluZSB4Y2hnKHB0cix4KSBcCj4gPiArKHsg
XAo+ID4gK8KgwqDCoCBfX3R5cGVvZl9fKCoocHRyKSkgcmV0X187IFwKPiA+ICvCoMKgwqAgcmV0
X18gPSAoX190eXBlb2ZfXygqKHB0cikpKSBcCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBf
X3hjaGcoKHB0ciksICh1bnNpZ25lZCBsb25nKSh4KSwgc2l6ZW9mKCoocHRyKSkpOyBcCj4gPiAr
wqDCoMKgIHJldF9fOyBcCj4gPiArfSkKPiA+ICsKPiA+ICsjZGVmaW5lIHhjaGczMihwdHIsIHgp
IFwKPiA+ICsoeyBcCj4gPiArwqDCoMKgIEJVSUxEX0JVR19PTihzaXplb2YoKihwdHIpKSAhPSA0
KTsgXAo+ID4gK8KgwqDCoCB4Y2hnKChwdHIpLCAoeCkpOyBcCj4gPiArfSkKPiA+ICsKPiA+ICsj
ZGVmaW5lIHhjaGc2NChwdHIsIHgpIFwKPiA+ICsoeyBcCj4gPiArwqDCoMKgIEJVSUxEX0JVR19P
TihzaXplb2YoKihwdHIpKSAhPSA4KTsgXAo+ID4gK8KgwqDCoCB4Y2hnKChwdHIpLCAoeCkpOyBc
Cj4gPiArfSkKPiAKPiBXaGF0IGFyZSB0aGVzZSB0d28gKGFuZCB0aGVpciBjbXB4Y2hnIGNvdW50
ZXJwYXJ0cykgbmVlZGVkIGZvcj8KSXQgd2FzIGNvcGllZCBmcm9tIExpbnV4LCBidXQgaXQgbG9v
a3MgbGlrZSB0aGV5IGNhbiBiZSByZWFsbHkgZHJvcHBlZCwKSSBjYW4ndCBmaW5kIHdoZXJlIGl0
IGlzIHVzZWQsIHNvIEknbGwgZHJvcCB0aGVtLgoKPiAKPiA+ICsvKgo+ID4gKyAqIEF0b21pYyBj
b21wYXJlIGFuZCBleGNoYW5nZS7CoCBDb21wYXJlIE9MRCB3aXRoIE1FTSwgaWYKPiA+IGlkZW50
aWNhbCwKPiA+ICsgKiBzdG9yZSBORVcgaW4gTUVNLsKgIFJldHVybiB0aGUgaW5pdGlhbCB2YWx1
ZSBpbiBNRU0uwqAgU3VjY2VzcyBpcwo+ID4gKyAqIGluZGljYXRlZCBieSBjb21wYXJpbmcgUkVU
VVJOIHdpdGggT0xELgo+ID4gKyAqLwo+ID4gKyNkZWZpbmUgX19jbXB4Y2hnX3JlbGF4ZWQocHRy
LCBvbGQsIG5ldywgc2l6ZSkgXAo+ID4gKyh7IFwKPiA+ICvCoMKgwqAgX190eXBlb2ZfXyhwdHIp
IHB0cl9fID0gKHB0cik7IFwKPiA+ICvCoMKgwqAgX190eXBlb2ZfXygqKHB0cikpIF9fb2xkID0g
KG9sZCk7IFwKPiAKPiBMZWZ0b3ZlciBsZWFkaW5nIHVuZGVyc2NvcmVzPwo+IAo+ID4gK8KgwqDC
oCBfX3R5cGVvZl9fKCoocHRyKSkgbmV3X18gPSAobmV3KTsgXAo+IAo+IFJlbGF0ZWQgdG8gbXkg
ZWFybGllciBjb21tZW50IG9uIHR5cGVzIG5lZWRpbmcgdG8gYmUgY29tcGF0aWJsZSAtIHNlZQo+
IGhvdyBoZXJlIHlvdSdyZSB1c2luZyAicHRyIiB0aHJvdWdob3V0Lgo+IAo+ID4gK8KgwqDCoCBf
X3R5cGVvZl9fKCoocHRyKSkgcmV0X187IFwKPiA+ICvCoMKgwqAgcmVnaXN0ZXIgdW5zaWduZWQg
aW50IF9fcmM7IFwKPiAKPiBNb3JlIGxlZnRvdmVyIGxlYWRpbmcgdW5kZXJzY29yZXM/Ck1pc3Nl
ZCB0byBkcm9wIHVuZGVyc2NvcmVzLiBUaGFua3MuIEknbGwgZHJvcCB0aGVtIGluIG5leHQgdmVy
c2lvbi4KPiAKPiA+ICtzdGF0aWMgYWx3YXlzX2lubGluZSB1bnNpZ25lZCBzaG9ydCBfX2NtcHhj
aGdfY2FzZV8yKHZvbGF0aWxlCj4gPiB1aW50MzJfdCAqcHRyLAo+ID4gK8KgwqDCoMKgwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC
oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHVpbnQzMl90IG9sZCwKPiA+ICvCoMKg
wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC
oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB1aW50MzJfdCBuZXcp
Cj4gPiArewo+ID4gK8KgwqDCoCAodm9pZCkgb2xkOwo+ID4gKwo+ID4gK8KgwqDCoCBpZiAoKCh1
bnNpZ25lZCBsb25nKXB0ciAmIDMpID09IDMpCj4gPiArwqDCoMKgIHsKPiA+ICsjaWZkZWYgQ09O
RklHXzY0QklUCj4gPiArwqDCoMKgwqDCoMKgwqAgcmV0dXJuIF9fZW11bGF0ZV9jbXB4Y2hnX2Nh
c2UxXzIoKHVpbnQ2NF90ICopcHRyLCBuZXcsCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg
cmVhZHEsIF9fY21weGNoZ19jYXNlXzgsCj4gPiAweGZmZmZVKTsKPiAKPiBXaGF0IGlmICgodW5z
aWduZWQgbG9uZylwdHIgJiA3KSA9PSA3ICh3aGljaCBpcyBhIHN1Yi1jYXNlIG9mIHdoYXQKPiB0
aGUKPiBpZigpIGFib3ZlIGNoZWNrcyBmb3I/IElzbid0IGl0IG1vcmUgcmVhc29uYWJsZSB0byBy
ZXF1aXJlIGFsaWduZWQKPiAxNi1iaXQgcXVhbnRpdGllcyBoZXJlPyBPciBpZiBtaXMtYWxpZ25l
ZCBhZGRyZXNzZXMgYXJlIG9rYXksIHlvdQo+IGNvdWxkCj4gYXMgd2VsbCBlbXVsYXRlIHVzaW5n
IF9fY21weGNoZ19jYXNlXzQoKS4KWWVzLCBpdCB3aWxsIGJlIG1vcmUgcmVhc29uYWJsZS4gSSds
bCB1c2UgSVNfQUxJR05FRCBpbnN0ZWFkLgoKPiAKPiBBbHNvIHlvdSBzaG91bGRuJ3QgYmUgY2Fz
dGluZyBhd2F5IHZvbGF0aWxlIChoZXJlIGFuZCBiZWxvdykuCj4gQXZvaWRpbmcKPiB0aGUgY2Fz
dHMgKGJ5IHN1aXRhYmxlIHVzaW5nIHZvbGF0aWxlIHZvaWQgKiBwYXJhbWV0ZXIgdHlwZXMpIHdv
dWxkCj4gbGlrZWx5IGJlIGJlc3QuClRoYW5rcy4gSSdsbCB1cGRhdGUgdGhlIGZ1bmN0aW9uIHBy
b3RvdHlwZS4KCn4gT2xla3NpaQoK



From xen-devel-bounces@lists.xenproject.org Tue Jan 23 10:21:20 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 23 Jan 2024 10:21:20 +0000
Received: from list by lists.xenproject.org with outflank-mailman.670332.1043026 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSDu8-0005FE-K2; Tue, 23 Jan 2024 10:21:16 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 670332.1043026; Tue, 23 Jan 2024 10:21:16 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSDu8-0005F7-Gy; Tue, 23 Jan 2024 10:21:16 +0000
Received: by outflank-mailman (input) for mailman id 670332;
 Tue, 23 Jan 2024 10:21:15 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=OrDF=JB=gmail.com=oleksii.kurochko@srs-se1.protection.inumbo.net>)
 id 1rSDu7-0005F1-CS
 for xen-devel@lists.xenproject.org; Tue, 23 Jan 2024 10:21:15 +0000
Received: from mail-ej1-x635.google.com (mail-ej1-x635.google.com
 [2a00:1450:4864:20::635])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 227c0054-b9d9-11ee-9b0f-b553b5be7939;
 Tue, 23 Jan 2024 11:21:13 +0100 (CET)
Received: by mail-ej1-x635.google.com with SMTP id
 a640c23a62f3a-a28bd9ca247so457842266b.1
 for <xen-devel@lists.xenproject.org>; Tue, 23 Jan 2024 02:21:13 -0800 (PST)
Received: from [192.168.206.239] ([94.75.70.14])
 by smtp.gmail.com with ESMTPSA id
 ci1-20020a170906c34100b00a30dae38ff5sm173634ejb.114.2024.01.23.02.21.11
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 23 Jan 2024 02:21:12 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 227c0054-b9d9-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1706005273; x=1706610073; darn=lists.xenproject.org;
        h=mime-version:user-agent:content-transfer-encoding:references
         :in-reply-to:date:cc:to:from:subject:message-id:from:to:cc:subject
         :date:message-id:reply-to;
        bh=38DKqM/HWmC87egWIAVZD/Dtyytpjpp5o67PwUTrZxs=;
        b=WWqaavSFhRiHazNp2xLvzDvtZ1wcq2LzD/SotSP162bC6ofmdqGYoNXGJXioPosTmz
         jmyLQvTQ2Rt+BZ8xkhHLlCJ2iZ8BkIiqksWx0OT7PP5xC7jTqhcQ8g5gwPAOV7YRlK4U
         g/MpTCvUNk1GM1vdB2FijHQbUFybsoBKdzc6QHM+8Af6orGx9Bd30oOUD59NpJmpK0Oy
         yr7/51OIDCx/miswTmCb2tPpX/ZN6GxGXhhBXVhvijlKZdLVbCujuhx+x/T32Oa2IJzG
         S7aV+5p76DsOSpHNO6GWJwSFaB4zeTOLtHlfaT0ohkzvTZmt/eQh68Qrimi+Ap/3fdYF
         htfA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706005273; x=1706610073;
        h=mime-version:user-agent:content-transfer-encoding:references
         :in-reply-to:date:cc:to:from:subject:message-id:x-gm-message-state
         :from:to:cc:subject:date:message-id:reply-to;
        bh=38DKqM/HWmC87egWIAVZD/Dtyytpjpp5o67PwUTrZxs=;
        b=Z9ifMb73EmWXPbR+RC2IR+XyDmfp/L3MWeLtstm11TVBtEe/uTXxj7Z84ps3SxEMX/
         v8wVNolM23MFpQ8Xo8rAwejK3mgltk2TiLyUm3q3umLQCavlE8xvQqks4BisAXVJHfMg
         NMFxZHHqN5/CuraKZoj5M8DtYhKfBnoeqsWLQtfBC+AR/a1PJNkgVKALKcuE9i3X0cVA
         alEbXSkqZ0f9VhVuNMY00LODghVNgSyIK8oxdu9E6Xwejhfomtf/tIexrifYVfmjNuVS
         Q/8f5jeseaexMOpq8W2kKEtRDC6Qsfiq4v7VlzCB30kSqypioKSxr8frdHuKRUMokoLK
         TGPA==
X-Gm-Message-State: AOJu0YyujssoofQYVuLMr6YHpPS4WL3b0TCAU/cQxNjP4UHvT9fsGMvO
	IxgbkD8FLfRr1Gboot6A4o2zcdhO8gyinc2TK42uXVT7x64QJ6XD
X-Google-Smtp-Source: AGHT+IEGJFdQoq8wQH4DVjb9OuIIg/QBhH8CDybsinbqKBZJe6IbR62kjcdocMTvmWHkpiGCcFuMBQ==
X-Received: by 2002:a17:906:80c7:b0:a30:75e6:9865 with SMTP id a7-20020a17090680c700b00a3075e69865mr1200516ejx.102.1706005272562;
        Tue, 23 Jan 2024 02:21:12 -0800 (PST)
Message-ID: <92d7caf20a37b68dce7676812c2780bc2fbc00cf.camel@gmail.com>
Subject: Re: [PATCH v3 15/34] xen/riscv: introduce atomic.h
From: Oleksii <oleksii.kurochko@gmail.com>
To: Jan Beulich <jbeulich@suse.com>
Cc: Bobby Eshleman <bobbyeshleman@gmail.com>, Alistair Francis
 <alistair.francis@wdc.com>, Connor Davis <connojdavis@gmail.com>, Andrew
 Cooper <andrew.cooper3@citrix.com>, George Dunlap
 <george.dunlap@citrix.com>,  Julien Grall <julien@xen.org>, Stefano
 Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>, 
 xen-devel@lists.xenproject.org
Date: Tue, 23 Jan 2024 12:21:10 +0200
In-Reply-To: <2429395f-3ce8-4f17-aabe-78af2446ff6d@suse.com>
References: <cover.1703255175.git.oleksii.kurochko@gmail.com>
	 <54f5f13a4ee3de3c3cf4ba2b4d0347bb77bb7d08.1703255175.git.oleksii.kurochko@gmail.com>
	 <2429395f-3ce8-4f17-aabe-78af2446ff6d@suse.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: base64
User-Agent: Evolution 3.50.2 (3.50.2-1.fc39) 
MIME-Version: 1.0

T24gTW9uLCAyMDI0LTAxLTIyIGF0IDE3OjU2ICswMTAwLCBKYW4gQmV1bGljaCB3cm90ZToKPiBP
biAyMi4xMi4yMDIzIDE2OjEyLCBPbGVrc2lpIEt1cm9jaGtvIHdyb3RlOgo+ID4gLS0tIC9kZXYv
bnVsbAo+ID4gKysrIGIveGVuL2FyY2gvcmlzY3YvaW5jbHVkZS9hc20vYXRvbWljLmgKPiA+IEBA
IC0wLDAgKzEsMzg0IEBACj4gPiArLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAt
b25seSAqLwo+ID4gKy8qCj4gPiArICogVGFrZW4gYW5kIG1vZGlmaWVkIGZyb20gTGludXguCj4g
PiArICogCj4gPiArICogQ29weXJpZ2h0IChDKSAyMDA3IFJlZCBIYXQsIEluYy4gQWxsIFJpZ2h0
cyBSZXNlcnZlZC4KPiA+ICsgKiBDb3B5cmlnaHQgKEMpIDIwMTIgUmVnZW50cyBvZiB0aGUgVW5p
dmVyc2l0eSBvZiBDYWxpZm9ybmlhCj4gPiArICogQ29weXJpZ2h0IChDKSAyMDE3IFNpRml2ZQo+
ID4gKyAqIENvcHlyaWdodCAoQykgMjAyMSBWYXRlcyBTQVMKPiA+ICsgKi8KPiA+ICsKPiA+ICsj
aWZuZGVmIF9BU01fUklTQ1ZfQVRPTUlDX0gKPiA+ICsjZGVmaW5lIF9BU01fUklTQ1ZfQVRPTUlD
X0gKPiA+ICsKPiA+ICsjaW5jbHVkZSA8eGVuL2F0b21pYy5oPgo+ID4gKyNpbmNsdWRlIDxhc20v
Y21weGNoZy5oPgo+ID4gKyNpbmNsdWRlIDxhc20vZmVuY2UuaD4KPiA+ICsjaW5jbHVkZSA8YXNt
L2lvLmg+Cj4gPiArI2luY2x1ZGUgPGFzbS9zeXN0ZW0uaD4KPiA+ICsKPiA+ICt2b2lkIF9fYmFk
X2F0b21pY19zaXplKHZvaWQpOwo+ID4gKwo+ID4gK3N0YXRpYyBhbHdheXNfaW5saW5lIHZvaWQg
cmVhZF9hdG9taWNfc2l6ZShjb25zdCB2b2xhdGlsZSB2b2lkICpwLAo+ID4gK8KgwqDCoMKgwqDC
oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoCB2b2lkICpyZXMsCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC
oMKgIHVuc2lnbmVkIGludCBzaXplKQo+ID4gK3sKPiA+ICvCoMKgwqAgc3dpdGNoICggc2l6ZSAp
Cj4gPiArwqDCoMKgIHsKPiA+ICvCoMKgwqAgY2FzZSAxOiAqKHVpbnQ4X3QgKilyZXMgPSByZWFk
YigoY29uc3QgdWludDhfdCAqKXApOyBicmVhazsKPiA+ICvCoMKgwqAgY2FzZSAyOiAqKHVpbnQx
Nl90ICopcmVzID0gcmVhZHcoKGNvbnN0IHVpbnQxNl90ICopcCk7IGJyZWFrOwo+ID4gK8KgwqDC
oCBjYXNlIDQ6ICoodWludDMyX3QgKilyZXMgPSByZWFkbCgoY29uc3QgdWludDMyX3QgKilwKTsg
YnJlYWs7Cj4gPiArwqDCoMKgIGNhc2UgODogKih1aW50MzJfdCAqKXJlc8KgID0gcmVhZHEoKGNv
bnN0IHVpbnQ2NF90ICopcCk7IGJyZWFrOwo+IAo+IEp1c3QgbGlrZSBjb25zdCwgeW91IHNob3Vs
ZCBhbHNvIGF2b2lkIGNhc3RpbmcgYXdheSB2b2xhdGlsZS4KVGhhbmtzLiBJIHdpbGwgZHJvcCBj
YXN0aW5nLgoKPiAKPiA+ICvCoMKgwqAgZGVmYXVsdDogX19iYWRfYXRvbWljX3NpemUoKTsgYnJl
YWs7Cj4gPiArwqDCoMKgIH0KPiA+ICt9Cj4gPiArCj4gPiArI2RlZmluZSByZWFkX2F0b21pYyhw
KQo+ID4gKHvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC
oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBcCj4gPiArwqDCoMKg
IHVuaW9uIHsgdHlwZW9mKCpwKSB2YWw7IGNoYXIgY1swXTsgfQo+ID4geF87wqDCoMKgwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFwKPiA+ICvCoMKgwqAg
cmVhZF9hdG9taWNfc2l6ZShwLCB4Xy5jLAo+ID4gc2l6ZW9mKCpwKSk7wqDCoMKgwqDCoMKgwqDC
oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBcCj4gPiArwqDCoMKg
Cj4gPiB4Xy52YWw7wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC
oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoMKgCj4gPiBcCj4gPiArfSkKPiA+ICsKPiA+ICsKPiAKPiBOaXQ6IE5v
IGRvdWJsZSBibGFuayBsaW5lcyBwbGVhc2UuClN1cmUuIEknbGwgZHJ0b3Agb25lIGJsYW5rIGxp
bmUuCj4gCj4gPiArI2RlZmluZSB3cml0ZV9hdG9taWMocCwgeCkKPiA+ICh7wqDCoMKgwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC
oMKgwqDCoMKgwqDCoMKgIFwKPiA+ICvCoMKgwqAgdHlwZW9mKCpwKSB4X18gPQo+ID4gKHgpO8Kg
wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC
oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFwKPiA+ICvCoMKgwqAgc3dpdGNoICgg
c2l6ZW9mKCpwKQo+ID4gKQkJCQkJCQkJCQkJCVwKPiA+ICvCoMKgwqAKPiA+IHvCoMKgwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC
oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAJCQkJCQlcCj4gCj4gVGhlc2UgbGluZXMgbG9vayBleGNl
c3NpdmVseSBsb25nLCBwb3NzaWJseSBhcyBhIHJlc3VsdCBvZiBsZWF2aW5nCj4gaGFyZCB0YWJz
Cj4gaW4gcGxhY2UuCj4gCj4gT3ZlcmFsbCBzb21lIG9mIHRoZSBzdHlsZSBjb21tZW50cyBvbiB0
aGUgZWFybGllciBwYXRjaCBzZWVtIHRvIGFwcGx5Cj4gaGVyZQo+IGFzIHdlbGwuCj4gCj4gPiAt
LS0gL2Rldi9udWxsCj4gPiArKysgYi94ZW4vYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9mZW5jZS5o
Cj4gPiBAQCAtMCwwICsxLDEzIEBACj4gPiArLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQ
TC0yLjAtb3ItbGF0ZXIgKi8KPiA+ICsjaWZuZGVmIF9BU01fUklTQ1ZfRkVOQ0VfSAo+ID4gKyNk
ZWZpbmUgX0FTTV9SSVNDVl9GRU5DRV9ICj4gPiArCj4gPiArI2lmZGVmIENPTkZJR19TTVAKPiA+
ICsjZGVmaW5lIFJJU0NWX0FDUVVJUkVfQkFSUklFUgkJIlx0ZmVuY2UgciAsIHJ3XG4iCj4gPiAr
I2RlZmluZSBSSVNDVl9SRUxFQVNFX0JBUlJJRVIJCSJcdGZlbmNlIHJ3LMKgIHdcbiIKPiA+ICsj
ZWxzZQo+ID4gKyNkZWZpbmUgUklTQ1ZfQUNRVUlSRV9CQVJSSUVSCj4gPiArI2RlZmluZSBSSVND
Vl9SRUxFQVNFX0JBUlJJRVIKPiA+ICsjZW5kaWYKPiAKPiBEbyB5b3UgcmVhbGx5IGNhcmUgYWJv
dXQgdGhlICFTTVAgY2FzZT8gT24geDg2IGF0IGxlYXN0IHdlIHN0b3BwZWQKPiBzcGVjaWFsLQo+
IGNhc2luZyB0aGF0IGNvbmZpZ3VyYXRpb24gbWFueSB5ZWFycyBhZ28gKHRoZSBmZXcgY2FzZXMg
d2hlcmUgZm9yCj4gdHlwaWNhbGx5Cj4gYnVpbGQgcmVhc29ucyBpdCBtYXR0ZXJzLCB1c2luZyBD
T05GSUdfTlJfQ1BVUyBpcyBzdWZmaWNpZW50KS4gSWYgeW91Cj4gY2FyZQo+IGFib3V0IGl0LCB0
aGVyZSBuZWVkcyB0byBiZSBzb21ld2hlcmUgeW91IGFjdHVhbGx5ICNkZWZpbmUKPiBDT05GSUdf
U01QLgpDYW4ndCB3ZSB1c2UgaW5zdGVhZCBvZiBDT05GSUdfU01QIC0gQ09ORklHX05SX0NQVVM/
IEkgbWlzc2VkIHRoYXQKQ09ORklHX1NNUCBpcyBwcmVzZW50IGluIExpbnV4LCBidXQgbm90IGlu
IFhlbi4KCn4gT2xla3NpaQoK



From xen-devel-bounces@lists.xenproject.org Tue Jan 23 10:24:09 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 23 Jan 2024 10:24:09 +0000
Received: from list by lists.xenproject.org with outflank-mailman.670338.1043035 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSDwt-0005p0-1X; Tue, 23 Jan 2024 10:24:07 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 670338.1043035; Tue, 23 Jan 2024 10:24:07 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSDws-0005ot-V1; Tue, 23 Jan 2024 10:24:06 +0000
Received: by outflank-mailman (input) for mailman id 670338;
 Tue, 23 Jan 2024 10:24:06 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rSDws-0005oh-GA; Tue, 23 Jan 2024 10:24:06 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rSDws-00045y-CO; Tue, 23 Jan 2024 10:24:06 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rSDwr-0003MO-UF; Tue, 23 Jan 2024 10:24:06 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rSDwr-0006gg-T9; Tue, 23 Jan 2024 10:24:05 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=Sf89vhJh/YwtmZQAWocljTsL+iet82lTzXIkpJd5zM0=; b=09TcknZVWpEh/k2k+NsVy87EWu
	dq1AUco769Naiysqf9VitQcTdAkE7eZi2B04RCZsG6D6KyZl5w6Lhq0RcX+wrh+qoAn6jnjqho4wz
	qb9ZqfE3LfSAnHS2AEobmu8zZtcD4dE4plK/z6JVDW0vZxmKKeBauETkRMXALoyWWjB4=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184429-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [xen-unstable test] 184429: tolerable FAIL
X-Osstest-Failures:
    xen-unstable:test-armhf-armhf-libvirt:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-amd64-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-raw:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-amd64-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-qcow2:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-qemuu-nested-amd:debian-hvm-install/l1/l2:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-amd64-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-i386-libvirt-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-libvirt:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-pvshim:guest-start:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-credit2:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-credit2:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-credit1:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-credit1:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-thunderx:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-thunderx:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-libvirt-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-libvirt-xsm:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-xsm:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-multivcpu:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-multivcpu:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-libvirt-raw:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-libvirt-raw:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-libvirt-raw:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt-vhd:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-vhd:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-vhd:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-raw:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-vhd:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-vhd:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit1:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit1:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-rtds:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-rtds:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit2:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit2:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-arndale:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-arndale:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-qcow2:migrate-support-check:fail:nonblocking
X-Osstest-Versions-This:
    xen=4900c939cb9b876c51cfc7a4c854f54c722a30b5
X-Osstest-Versions-That:
    xen=4900c939cb9b876c51cfc7a4c854f54c722a30b5
From: osstest service owner <osstest-admin@xenproject.org>
Date: Tue, 23 Jan 2024 10:24:05 +0000

flight 184429 xen-unstable real [real]
http://logs.test-lab.xenproject.org/osstest/logs/184429/

Failures :-/ but no regressions.

Tests which did not succeed, but are not blocking:
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 184426
 test-amd64-amd64-xl-qemut-win7-amd64 19 guest-stop            fail like 184426
 test-amd64-i386-xl-qemuu-win7-amd64 19 guest-stop             fail like 184426
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 184426
 test-amd64-i386-xl-qemut-ws16-amd64 19 guest-stop             fail like 184426
 test-armhf-armhf-libvirt-raw 15 saverestore-support-check    fail  like 184426
 test-amd64-i386-xl-qemut-win7-amd64 19 guest-stop             fail like 184426
 test-amd64-amd64-xl-qemut-ws16-amd64 19 guest-stop            fail like 184426
 test-armhf-armhf-libvirt-qcow2 15 saverestore-support-check   fail like 184426
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 184426
 test-amd64-i386-xl-qemuu-ws16-amd64 19 guest-stop             fail like 184426
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 184426
 test-amd64-i386-libvirt-xsm  15 migrate-support-check        fail   never pass
 test-amd64-i386-libvirt      15 migrate-support-check        fail   never pass
 test-amd64-i386-xl-pvshim    14 guest-start                  fail   never pass
 test-amd64-amd64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit2  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit2  16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl          15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl          16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-credit1  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit1  16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-thunderx 15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-thunderx 16 saverestore-support-check    fail   never pass
 test-arm64-arm64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-xsm 16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-xsm      15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-xsm      16 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt     15 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-armhf-armhf-libvirt     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-multivcpu 15 migrate-support-check        fail  never pass
 test-armhf-armhf-xl-multivcpu 16 saverestore-support-check    fail  never pass
 test-amd64-i386-libvirt-raw  14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 15 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-vhd 14 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-vhd      14 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-vhd      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-raw 14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl          15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-credit1  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit1  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-rtds     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-rtds     16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-credit2  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit2  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-arndale  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-arndale  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-qcow2 14 migrate-support-check        fail never pass

version targeted for testing:
 xen                  4900c939cb9b876c51cfc7a4c854f54c722a30b5
baseline version:
 xen                  4900c939cb9b876c51cfc7a4c854f54c722a30b5

Last test of basis   184429  2024-01-23 02:01:05 Z    0 days
Testing same since                          (not found)         0 attempts

jobs:
 build-amd64-xsm                                              pass    
 build-arm64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64-xtf                                              pass    
 build-amd64                                                  pass    
 build-arm64                                                  pass    
 build-armhf                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-arm64-libvirt                                          pass    
 build-armhf-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-prev                                             pass    
 build-i386-prev                                              pass    
 build-amd64-pvops                                            pass    
 build-arm64-pvops                                            pass    
 build-armhf-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-xtf-amd64-amd64-1                                       pass    
 test-xtf-amd64-amd64-2                                       pass    
 test-xtf-amd64-amd64-3                                       pass    
 test-xtf-amd64-amd64-4                                       pass    
 test-xtf-amd64-amd64-5                                       pass    
 test-amd64-amd64-xl                                          pass    
 test-amd64-coresched-amd64-xl                                pass    
 test-arm64-arm64-xl                                          pass    
 test-armhf-armhf-xl                                          pass    
 test-amd64-i386-xl                                           pass    
 test-amd64-coresched-i386-xl                                 pass    
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm           pass    
 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm            pass    
 test-amd64-amd64-xl-qemut-stubdom-debianhvm-amd64-xsm        pass    
 test-amd64-i386-xl-qemut-stubdom-debianhvm-amd64-xsm         pass    
 test-amd64-amd64-xl-qemut-debianhvm-i386-xsm                 pass    
 test-amd64-i386-xl-qemut-debianhvm-i386-xsm                  pass    
 test-amd64-amd64-xl-qemuu-debianhvm-i386-xsm                 pass    
 test-amd64-i386-xl-qemuu-debianhvm-i386-xsm                  pass    
 test-amd64-amd64-libvirt-xsm                                 pass    
 test-arm64-arm64-libvirt-xsm                                 pass    
 test-amd64-i386-libvirt-xsm                                  pass    
 test-amd64-amd64-xl-xsm                                      pass    
 test-arm64-arm64-xl-xsm                                      pass    
 test-amd64-i386-xl-xsm                                       pass    
 test-amd64-amd64-qemuu-nested-amd                            fail    
 test-amd64-amd64-xl-pvhv2-amd                                pass    
 test-amd64-i386-qemut-rhel6hvm-amd                           pass    
 test-amd64-i386-qemuu-rhel6hvm-amd                           pass    
 test-amd64-amd64-dom0pvh-xl-amd                              pass    
 test-amd64-amd64-xl-qemut-debianhvm-amd64                    pass    
 test-amd64-i386-xl-qemut-debianhvm-amd64                     pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64                    pass    
 test-amd64-i386-xl-qemuu-debianhvm-amd64                     pass    
 test-amd64-i386-freebsd10-amd64                              pass    
 test-amd64-amd64-qemuu-freebsd11-amd64                       pass    
 test-amd64-amd64-qemuu-freebsd12-amd64                       pass    
 test-amd64-amd64-xl-qemuu-ovmf-amd64                         pass    
 test-amd64-i386-xl-qemuu-ovmf-amd64                          pass    
 test-amd64-amd64-xl-qemut-win7-amd64                         fail    
 test-amd64-i386-xl-qemut-win7-amd64                          fail    
 test-amd64-amd64-xl-qemuu-win7-amd64                         fail    
 test-amd64-i386-xl-qemuu-win7-amd64                          fail    
 test-amd64-amd64-xl-qemut-ws16-amd64                         fail    
 test-amd64-i386-xl-qemut-ws16-amd64                          fail    
 test-amd64-amd64-xl-qemuu-ws16-amd64                         fail    
 test-amd64-i386-xl-qemuu-ws16-amd64                          fail    
 test-armhf-armhf-xl-arndale                                  pass    
 test-amd64-amd64-examine-bios                                pass    
 test-amd64-i386-examine-bios                                 pass    
 test-amd64-amd64-xl-credit1                                  pass    
 test-arm64-arm64-xl-credit1                                  pass    
 test-armhf-armhf-xl-credit1                                  pass    
 test-amd64-amd64-xl-credit2                                  pass    
 test-arm64-arm64-xl-credit2                                  pass    
 test-armhf-armhf-xl-credit2                                  pass    
 test-amd64-amd64-xl-qemuu-dmrestrict-amd64-dmrestrict        pass    
 test-amd64-i386-xl-qemuu-dmrestrict-amd64-dmrestrict         pass    
 test-amd64-amd64-examine                                     pass    
 test-arm64-arm64-examine                                     pass    
 test-armhf-armhf-examine                                     pass    
 test-amd64-i386-examine                                      pass    
 test-amd64-i386-freebsd10-i386                               pass    
 test-amd64-amd64-qemuu-nested-intel                          pass    
 test-amd64-amd64-xl-pvhv2-intel                              pass    
 test-amd64-i386-qemut-rhel6hvm-intel                         pass    
 test-amd64-i386-qemuu-rhel6hvm-intel                         pass    
 test-amd64-amd64-dom0pvh-xl-intel                            pass    
 test-amd64-amd64-libvirt                                     pass    
 test-armhf-armhf-libvirt                                     pass    
 test-amd64-i386-libvirt                                      pass    
 test-amd64-amd64-livepatch                                   pass    
 test-amd64-i386-livepatch                                    pass    
 test-amd64-amd64-migrupgrade                                 pass    
 test-amd64-i386-migrupgrade                                  pass    
 test-amd64-amd64-xl-multivcpu                                pass    
 test-armhf-armhf-xl-multivcpu                                pass    
 test-amd64-amd64-pair                                        pass    
 test-amd64-i386-pair                                         pass    
 test-amd64-amd64-libvirt-pair                                pass    
 test-amd64-i386-libvirt-pair                                 pass    
 test-amd64-amd64-xl-pvshim                                   pass    
 test-amd64-i386-xl-pvshim                                    fail    
 test-amd64-amd64-pygrub                                      pass    
 test-armhf-armhf-libvirt-qcow2                               pass    
 test-amd64-amd64-xl-qcow2                                    pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-armhf-armhf-libvirt-raw                                 pass    
 test-amd64-i386-libvirt-raw                                  pass    
 test-amd64-amd64-xl-rtds                                     pass    
 test-armhf-armhf-xl-rtds                                     pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64-shadow             pass    
 test-amd64-i386-xl-qemuu-debianhvm-amd64-shadow              pass    
 test-amd64-amd64-xl-shadow                                   pass    
 test-amd64-i386-xl-shadow                                    pass    
 test-arm64-arm64-xl-thunderx                                 pass    
 test-amd64-amd64-examine-uefi                                pass    
 test-amd64-i386-examine-uefi                                 pass    
 test-amd64-amd64-libvirt-vhd                                 pass    
 test-arm64-arm64-xl-vhd                                      pass    
 test-armhf-armhf-xl-vhd                                      pass    
 test-amd64-i386-xl-vhd                                       pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Published tested tree is already up to date.



From xen-devel-bounces@lists.xenproject.org Tue Jan 23 10:28:12 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 23 Jan 2024 10:28:12 +0000
Received: from list by lists.xenproject.org with outflank-mailman.670344.1043046 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSE0m-0006ZN-JN; Tue, 23 Jan 2024 10:28:08 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 670344.1043046; Tue, 23 Jan 2024 10:28:08 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSE0m-0006ZG-Fb; Tue, 23 Jan 2024 10:28:08 +0000
Received: by outflank-mailman (input) for mailman id 670344;
 Tue, 23 Jan 2024 10:28:07 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=9pmr=JB=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rSE0l-0006ZA-3Z
 for xen-devel@lists.xenproject.org; Tue, 23 Jan 2024 10:28:07 +0000
Received: from mail-lj1-x235.google.com (mail-lj1-x235.google.com
 [2a00:1450:4864:20::235])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 183e2d23-b9da-11ee-98f4-6d05b1d4d9a1;
 Tue, 23 Jan 2024 11:28:05 +0100 (CET)
Received: by mail-lj1-x235.google.com with SMTP id
 38308e7fff4ca-2cf0390eddbso17261481fa.3
 for <xen-devel@lists.xenproject.org>; Tue, 23 Jan 2024 02:28:05 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 bl6-20020a056e0232c600b0035fabab7985sm1854024ilb.21.2024.01.23.02.28.02
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 23 Jan 2024 02:28:04 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 183e2d23-b9da-11ee-98f4-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1706005685; x=1706610485; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=0bUzo0X9beBa66cMH5Perzi3Ja1fLQWFsrkqgi841TI=;
        b=Xnn51wKFLBYMmw9R5A8LdTFWtTTl/x0vOeJ8lUs9iwxQlC09EHl2eHPbzdtzLn9XPN
         UikPQSb16vn3jwFWmRlXzaCWvltO3bB+oPengQ2K5CenCla3oy3jEku70dGJjH/ZvJOw
         zieFP+R7pWwpXVeKvX9t+eiU2sgPdpbVAhP+Fduu6QT0dLDdSareCgGmjVDgGETegPXQ
         croZIwIx+5Qwd6XQLyIW4bjTKJOwhVwVXB7od2VQH7XJxYvfwyE3WoU1/NpULwj07u8j
         iAHu82A7fz8aTiUJRiwbkNX7hZ5iM6pr0nF7OLv5fdJWMdLMy2RMQeywIHjS7HrKT255
         gabQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706005685; x=1706610485;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=0bUzo0X9beBa66cMH5Perzi3Ja1fLQWFsrkqgi841TI=;
        b=jxwggLFmTKZTdpL2cYwfq1fGJvxS43i0zG896uZ5Bd47s3m7psyYT3cqn15GSVlhXE
         80m6+s1S5+/l465LBbOtqRbyp7AehenMRBou9RLQMC2moIpCOw7TfQ2R5HvpnCwgqmg1
         ktET0vCRGy+jqX0lwjt2jdNWobSmtx224tPHEgPP9OfAmktmfD2ZlX2H7oRo0WyyOseh
         wjZNsg0GWFdK18uLyiGLp13wW5LFEkTKZERkiLKgIx2spsB7XJ4aKvyeT/Bci/Li0BKy
         XMKmqBD80rYIblhkMXhc6gSZqy6DMwBbVId7ROs1A175ESUTvQj8EV0fn6sQsQ9AKM18
         QUcw==
X-Gm-Message-State: AOJu0YxqkWkD5n62gXCnybQ0ZfP0fHDPLQ/gTf4cHccW40T0SJhGgNjR
	j8rDE2VTjugm7YZSID0EkwfVzDJBt9VnBBYisUE//LaW1tYh5EYhnFFNHJW6Yw==
X-Google-Smtp-Source: AGHT+IFR1ZYTfAyvLSr0MecjP47UMQnu0xZefN1Qo6ZaK+pQjJRTPvWG4lLzvQQ/JnF8fCmns/i0mA==
X-Received: by 2002:a05:651c:788:b0:2cc:bdbd:f31b with SMTP id g8-20020a05651c078800b002ccbdbdf31bmr2332251lje.30.1706005685143;
        Tue, 23 Jan 2024 02:28:05 -0800 (PST)
Message-ID: <c5872ae0-a26a-4f51-bad6-08fd0c37d488@suse.com>
Date: Tue, 23 Jan 2024 11:28:00 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 13/34] xen/riscv: introduce cmpxchg.h
Content-Language: en-US
To: Oleksii <oleksii.kurochko@gmail.com>
Cc: Alistair Francis <alistair.francis@wdc.com>,
 Bob Eshleman <bobbyeshleman@gmail.com>, Connor Davis
 <connojdavis@gmail.com>, Andrew Cooper <andrew.cooper3@citrix.com>,
 George Dunlap <george.dunlap@citrix.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>,
 xen-devel@lists.xenproject.org
References: <cover.1703255175.git.oleksii.kurochko@gmail.com>
 <214bfd61c8ccf2a5b2c640b815ebfa6a705f6234.1703255175.git.oleksii.kurochko@gmail.com>
 <8ee35a76-f3ef-4143-93ef-8e6089f82a80@suse.com>
 <56c23efdd79c0b1393ceef1adfcb45f66d4d1cf6.camel@gmail.com>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <56c23efdd79c0b1393ceef1adfcb45f66d4d1cf6.camel@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 23.01.2024 11:15, Oleksii wrote:
> On Mon, 2024-01-22 at 17:27 +0100, Jan Beulich wrote:
>> On 22.12.2023 16:12, Oleksii Kurochko wrote:
>>> +            : "=r" (ret__), "+A" (*ptr__) \
>>> +            : "r" (new__) \
>>> +            : "memory" ); \
>>> +        break; \
>>> +    case 8: \
>>> +        asm volatile( \
>>> +            "	amoswap.d %0, %2, %1\n" \
>>> +            : "=r" (ret__), "+A" (*ptr__) \
>>> +            : "r" (new__) \
>>> +            : "memory" ); \
>>> +        break; \
>>> +    default: \
>>> +        ASSERT_UNREACHABLE(); \
>>
>> If at all possible this wants to trigger a build failure, not a
>> runtime
>> one.
> I'll update that with BUILD_BUG_ON(size > 8);

What about size accidentally being e.g. 5? I'm also not sure you'll be
able to use BUILD_BUG_ON() here: That'll depend on what use sites there
are. And if all present ones are okay in this regard, you'd still set
out a trap for someone else to fall into later. We have a common
approach for this, which currently is under re-work. See
https://lists.xen.org/archives/html/xen-devel/2024-01/msg01115.html.

>>> +    } \
>>> +    ret__; \
>>> +})
>>> +
>>> +#define xchg_relaxed(ptr, x) \
>>> +({ \
>>> +    __typeof__(*(ptr)) x_ = (x); \
>>> +    (__typeof__(*(ptr))) __xchg_relaxed((ptr), x_,
>>> sizeof(*(ptr))); \
>>
>> Nit: Stray blank after cast. For readability I'd also suggest to
>> drop parentheses in cases like the first argument passed to
>> __xchg_relaxed() here.
> Thanks. I'll take that into account.
> 
>>
>>> +})
>>
>> For both: What does "relaxed" describe? I'm asking because it's not
>> really clear whether the memory clobbers are actually needed.
>>
>>> +#define __xchg_acquire(ptr, new, size) \
>>> +({ \
>>> +    __typeof__(ptr) ptr__ = (ptr); \
>>> +    __typeof__(new) new__ = (new); \
>>> +    __typeof__(*(ptr)) ret__; \
>>> +    switch (size) \
>>> +	{ \
>>> +    case 4: \
>>> +        asm volatile( \
>>> +            "	amoswap.w %0, %2, %1\n" \
>>> +            RISCV_ACQUIRE_BARRIER \
>>> +            : "=r" (ret__), "+A" (*ptr__) \
>>> +            : "r" (new__) \
>>> +            : "memory" ); \
>>> +        break; \
>>> +    case 8: \
>>> +        asm volatile( \
>>> +            "	amoswap.d %0, %2, %1\n" \
>>> +            RISCV_ACQUIRE_BARRIER \
>>> +            : "=r" (ret__), "+A" (*ptr__) \
>>> +            : "r" (new__) \
>>> +            : "memory" ); \
>>> +        break; \
>>> +    default: \
>>> +        ASSERT_UNREACHABLE(); \
>>> +    } \
>>> +    ret__; \
>>> +})
>>
>> If I'm not mistaken this differs from __xchg_relaxed() only in the
>> use
>> of RISCV_ACQUIRE_BARRIER, and ...
>>
>>> +#define xchg_acquire(ptr, x) \
>>> +({ \
>>> +    __typeof__(*(ptr)) x_ = (x); \
>>> +    (__typeof__(*(ptr))) __xchg_acquire((ptr), x_,
>>> sizeof(*(ptr))); \
>>> +})
>>> +
>>> +#define __xchg_release(ptr, new, size) \
>>> +({ \
>>> +    __typeof__(ptr) ptr__ = (ptr); \
>>> +    __typeof__(new) new__ = (new); \
>>> +    __typeof__(*(ptr)) ret__; \
>>> +    switch (size) \
>>> +	{ \
>>> +    case 4: \
>>> +        asm volatile ( \
>>> +            RISCV_RELEASE_BARRIER \
>>> +            "	amoswap.w %0, %2, %1\n" \
>>> +            : "=r" (ret__), "+A" (*ptr__) \
>>> +            : "r" (new__) \
>>> +            : "memory"); \
>>> +        break; \
>>> +    case 8: \
>>> +        asm volatile ( \
>>> +            RISCV_RELEASE_BARRIER \
>>> +            "	amoswap.d %0, %2, %1\n" \
>>> +            : "=r" (ret__), "+A" (*ptr__) \
>>> +            : "r" (new__) \
>>> +            : "memory"); \
>>> +        break; \
>>> +    default: \
>>> +        ASSERT_UNREACHABLE(); \
>>> +    } \
>>> +    ret__; \
>>> +})
>>
>> this only in the use of RISCV_RELEASE_BARRIER. If so they likely want
>> folding, to limit redundancy and make eventual updating easier. (Same
>> for the cmpxchg helper further down, as it seems.)
> Yes, you are right. The difference is only in RISCV_RELEASE_BARRIER and
> it is an absence of RISCV_RELEASE_BARRIER is a reason why we have
> "relaxed" versions.
> 
> I am not sure that I understand what you mean by folding here. Do you
> mean that there is no any sense to have to separate macros and it is
> needed only one with RISCV_RELEASE_BARRIER?

No. You should parameterize the folded common macro for the derived
macros to simply pass in the barriers needed, with empty macro
arguments indicating "this barrier not needed".

>>> +#define xchg_release(ptr, x) \
>>> +({ \
>>> +    __typeof__(*(ptr)) x_ = (x); \
>>> +    (__typeof__(*(ptr))) __xchg_release((ptr), x_,
>>> sizeof(*(ptr))); \
>>> +})
>>> +
>>> +static always_inline uint32_t __xchg_case_4(volatile uint32_t
>>> *ptr,
>>> +                                            uint32_t new)
>>> +{
>>> +    __typeof__(*(ptr)) ret;
>>> +
>>> +    asm volatile (
>>> +        "   amoswap.w.aqrl %0, %2, %1\n"
>>> +        : "=r" (ret), "+A" (*ptr)
>>> +        : "r" (new)
>>> +        : "memory" );
>>> +
>>> +    return ret;
>>> +}
>>> +
>>> +static always_inline uint64_t __xchg_case_8(volatile uint64_t
>>> *ptr,
>>> +                                            uint64_t new)
>>> +{
>>> +    __typeof__(*(ptr)) ret;
>>> +
>>> +    asm volatile( \
>>> +        "   amoswap.d.aqrl %0, %2, %1\n" \
>>> +        : "=r" (ret), "+A" (*ptr) \
>>> +        : "r" (new) \
>>> +        : "memory" ); \
>>> +
>>> +    return ret;
>>> +}
>>> +
>>> +static always_inline unsigned short __cmpxchg_case_2(volatile
>>> uint32_t *ptr,
>>> +                                                     uint32_t old,
>>> +                                                     uint32_t
>>> new);
>>
>> Don't you consistently mean uint16_t here (incl the return type) and
>> ...
>>
>>> +static always_inline unsigned short __cmpxchg_case_1(volatile
>>> uint32_t *ptr,
>>> +                                                     uint32_t old,
>>> +                                                     uint32_t
>>> new);
>>
>> ... uint8_t here?
> The idea was that we emulate __cmpxchg_case_1 and __cmpxchg_case_2
> using 4 bytes cmpxchg and __cmpxchg_case_4 expects uint32_t.

I consider this wrong. The functions would better be type-correct.

>>> +static inline unsigned long __xchg(volatile void *ptr, unsigned
>>> long x, int size)
>>> +{
>>> +    switch (size) {
>>> +    case 1:
>>> +        return __cmpxchg_case_1(ptr, (uint32_t)-1, x);
>>> +    case 2:
>>> +        return __cmpxchg_case_2(ptr, (uint32_t)-1, x);
>>
>> How are these going to work? You'll compare against ~0, and if the
>> value
>> in memory isn't ~0, memory won't be updated; you will only
>> (correctly)
>> return the value found in memory.
>>
>> Or wait - looking at __cmpxchg_case_{1,2}() far further down, you
>> ignore
>> "old" there. Which apparently means they'll work for the use here,
>> but
>> not for the use in __cmpxchg().
> Yes, the trick is that old is ignored and is read in
> __emulate_cmpxchg_case1_2() before __cmpxchg_case_4 is called:
>     do {                                                              
>         read_val = read_func(aligned_ptr);                            
>         swapped_new = read_val & ~mask;                               
>         swapped_new |= masked_new;                                    
>         ret = cmpxchg_func(aligned_ptr, read_val, swapped_new);       
>     } while ( ret != read_val );                                      
> read_val it is 'old'.
> 
> But now I am not 100% sure that it is correct for __cmpxchg...

It just can't be correct - you can't ignore "old" there. I think you
want simple cmpxchg primitives, which xchg then uses in a loop (while
cmpxchg uses them plainly).

>>> +static always_inline unsigned short __cmpxchg_case_2(volatile
>>> uint32_t *ptr,
>>> +                                                     uint32_t old,
>>> +                                                     uint32_t new)
>>> +{
>>> +    (void) old;
>>> +
>>> +    if (((unsigned long)ptr & 3) == 3)
>>> +    {
>>> +#ifdef CONFIG_64BIT
>>> +        return __emulate_cmpxchg_case1_2((uint64_t *)ptr, new,
>>> +                                         readq, __cmpxchg_case_8,
>>> 0xffffU);
>>
>> What if ((unsigned long)ptr & 7) == 7 (which is a sub-case of what
>> the
>> if() above checks for? Isn't it more reasonable to require aligned
>> 16-bit quantities here? Or if mis-aligned addresses are okay, you
>> could
>> as well emulate using __cmpxchg_case_4().
> Yes, it will be more reasonable. I'll use IS_ALIGNED instead.

Not sure I get your use of "instead" here correctly. There's more
to change here than just the if() condition.

Jan


From xen-devel-bounces@lists.xenproject.org Tue Jan 23 10:30:22 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 23 Jan 2024 10:30:22 +0000
Received: from list by lists.xenproject.org with outflank-mailman.670348.1043055 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSE2v-0000Pi-14; Tue, 23 Jan 2024 10:30:21 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 670348.1043055; Tue, 23 Jan 2024 10:30:21 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSE2u-0000Pb-Up; Tue, 23 Jan 2024 10:30:20 +0000
Received: by outflank-mailman (input) for mailman id 670348;
 Tue, 23 Jan 2024 10:30:20 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=9pmr=JB=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rSE2u-0000PV-Dx
 for xen-devel@lists.xenproject.org; Tue, 23 Jan 2024 10:30:20 +0000
Received: from mail-lj1-x236.google.com (mail-lj1-x236.google.com
 [2a00:1450:4864:20::236])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 681117bd-b9da-11ee-98f4-6d05b1d4d9a1;
 Tue, 23 Jan 2024 11:30:19 +0100 (CET)
Received: by mail-lj1-x236.google.com with SMTP id
 38308e7fff4ca-2cdb50d8982so47067191fa.2
 for <xen-devel@lists.xenproject.org>; Tue, 23 Jan 2024 02:30:19 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 j8-20020a92c208000000b00361bae6cd64sm2180946ilo.88.2024.01.23.02.30.17
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 23 Jan 2024 02:30:18 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 681117bd-b9da-11ee-98f4-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1706005819; x=1706610619; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=v1Qw0Jicl3vB72v1DQ3wjIpKJygKCma5W+5fiFVygX4=;
        b=YFEO1Pb8EeMDAXiqS17E+6iOQOiV72VJhaRkahTadNE/dn9Y8/KUxIixi4I/wdnLvZ
         vyOkqfrGLvQMZ1r7mHciyKYFNHYRRTsAP11X2OJbM9y1pMtmKPAsb28v08UxF8zNY05l
         xEub7Ze+Abb6OO+EMdgKJAku0gYFFlW642Ad7p6KKirTKij2nSDWnl8emXx26YLilzAF
         US+Rnto/PTjbC5uD07yMV8lk/dzDO98fwNXoRpupEy02Hf1Z0ijo1qsyfZHxGfzPZLOH
         +OW8pjR5wYHWTtk92MueOes1i9UjCugOIjNNUdgPQlMW9rcdnReKo5iBfQM7L8i6Tq8S
         XTGg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706005819; x=1706610619;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=v1Qw0Jicl3vB72v1DQ3wjIpKJygKCma5W+5fiFVygX4=;
        b=vbLpHWONfILygABwGFHD/KrCmaAU/hNtEeFxTTNOWOlIYplN5jFQ921n4HkX7CUmW3
         xE2/r1vd/v5q4FHdtyKh6Ue88tA/tFOrU8BoZc47E29/EXNq0ehEuTL0a6OYdZd2NVma
         F0EKIPSnWqSu64HMgnLx+3izIJq3xFnfz6rEIyR1VtjNDWL6Ew5if34sQvskZTOZC0O2
         RaWqLCBK7+178275MLirga1bDqWGxlkd1QiCNN/SHJJSg//3BkzWdhBFqQa3fmC1M9mp
         MujG5npxyhqEkJIYXnqQIAv7arDlhbCU1zMQz4WxxOCe+XHGW4Y/iAiaWKnc2M83ACwH
         9Eag==
X-Gm-Message-State: AOJu0YzOrXC8BnfhxhzD11taDI2U/rb+1BbD0ni2iVBKIAx5WN/w95oE
	7fzgTf212WNbsjuocfyIYVVq+TzfXHHzW8I8J/Tz7do6nWk4P8Mnru7WWJsXlw==
X-Google-Smtp-Source: AGHT+IFWYfGfvpetZh1mhNFUib+lZKhXuTmTHUQXtJwEesOi0HrUjiaek6cWnMDIfBf7ZjgocwZuZA==
X-Received: by 2002:a2e:a71e:0:b0:2cf:1355:aa6a with SMTP id s30-20020a2ea71e000000b002cf1355aa6amr268885lje.12.1706005819208;
        Tue, 23 Jan 2024 02:30:19 -0800 (PST)
Message-ID: <6aa39fac-fef6-47ce-8c27-4941d83c138a@suse.com>
Date: Tue, 23 Jan 2024 11:30:15 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 15/34] xen/riscv: introduce atomic.h
Content-Language: en-US
To: Oleksii <oleksii.kurochko@gmail.com>
Cc: Bobby Eshleman <bobbyeshleman@gmail.com>,
 Alistair Francis <alistair.francis@wdc.com>,
 Connor Davis <connojdavis@gmail.com>,
 Andrew Cooper <andrew.cooper3@citrix.com>,
 George Dunlap <george.dunlap@citrix.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>,
 xen-devel@lists.xenproject.org
References: <cover.1703255175.git.oleksii.kurochko@gmail.com>
 <54f5f13a4ee3de3c3cf4ba2b4d0347bb77bb7d08.1703255175.git.oleksii.kurochko@gmail.com>
 <2429395f-3ce8-4f17-aabe-78af2446ff6d@suse.com>
 <92d7caf20a37b68dce7676812c2780bc2fbc00cf.camel@gmail.com>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <92d7caf20a37b68dce7676812c2780bc2fbc00cf.camel@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 23.01.2024 11:21, Oleksii wrote:
> On Mon, 2024-01-22 at 17:56 +0100, Jan Beulich wrote:
>> On 22.12.2023 16:12, Oleksii Kurochko wrote:
>>> --- /dev/null
>>> +++ b/xen/arch/riscv/include/asm/fence.h
>>> @@ -0,0 +1,13 @@
>>> +/* SPDX-License-Identifier: GPL-2.0-or-later */
>>> +#ifndef _ASM_RISCV_FENCE_H
>>> +#define _ASM_RISCV_FENCE_H
>>> +
>>> +#ifdef CONFIG_SMP
>>> +#define RISCV_ACQUIRE_BARRIER		"\tfence r , rw\n"
>>> +#define RISCV_RELEASE_BARRIER		"\tfence rw,  w\n"
>>> +#else
>>> +#define RISCV_ACQUIRE_BARRIER
>>> +#define RISCV_RELEASE_BARRIER
>>> +#endif
>>
>> Do you really care about the !SMP case? On x86 at least we stopped
>> special-
>> casing that configuration many years ago (the few cases where for
>> typically
>> build reasons it matters, using CONFIG_NR_CPUS is sufficient). If you
>> care
>> about it, there needs to be somewhere you actually #define
>> CONFIG_SMP.
> Can't we use instead of CONFIG_SMP - CONFIG_NR_CPUS?

You can. Question is whether there's a point in doing so. Do you
expect people to actually want to run Xen on single-CPU systems?
They're generally not overly well suited for virtualization ...

Jan


From xen-devel-bounces@lists.xenproject.org Tue Jan 23 10:44:15 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 23 Jan 2024 10:44:15 +0000
Received: from list by lists.xenproject.org with outflank-mailman.670358.1043068 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSEGI-0003Es-83; Tue, 23 Jan 2024 10:44:10 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 670358.1043068; Tue, 23 Jan 2024 10:44:10 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSEGI-0003El-5O; Tue, 23 Jan 2024 10:44:10 +0000
Received: by outflank-mailman (input) for mailman id 670358;
 Tue, 23 Jan 2024 10:44:09 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=9pmr=JB=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rSEGH-0003Ef-Jt
 for xen-devel@lists.xen.org; Tue, 23 Jan 2024 10:44:09 +0000
Received: from mail-lj1-x236.google.com (mail-lj1-x236.google.com
 [2a00:1450:4864:20::236])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 55631ac4-b9dc-11ee-9b0f-b553b5be7939;
 Tue, 23 Jan 2024 11:44:07 +0100 (CET)
Received: by mail-lj1-x236.google.com with SMTP id
 38308e7fff4ca-2cf16f2445bso2163211fa.2
 for <xen-devel@lists.xen.org>; Tue, 23 Jan 2024 02:44:07 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 q4-20020a056e02096400b00361b2452601sm2429839ilt.15.2024.01.23.02.44.05
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 23 Jan 2024 02:44:06 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 55631ac4-b9dc-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1706006647; x=1706611447; darn=lists.xen.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=tkE06AkiI7dJJtx8WaJ2ABwZaTr/7y/Xn5/Szq9POUk=;
        b=exxKNWigHJCNKMcLRUqJL8iMGj0Nfc99ftVqvFtpGjyEHRCXsddjOpfac14YcPXTkV
         qX3GZsf/RRMw02oy2sRiY7muXEY4kjh5T2m/Qq1Oy5tbQN+5hPkGeRbsU50laKFutPSe
         v7d0QYRC39GXP94/EAaX50Nrcna7cTzThATFg5AVdaGke0QkJsqJo8jv+XrUiiE2LbKG
         /scNlkKB4Fdd0/gYa0Zk2xMyPhhux+IqARdgX2hxwS2hdi48C8wv/nPyM5Mtoz4Yi5gV
         /+vlLeuDfGoNOSln9jnroOo1dPCfhp8yZ2dc7qJSK8adiJBN76oK3MFA0J+0g7ZEQapt
         Y/EA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706006647; x=1706611447;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=tkE06AkiI7dJJtx8WaJ2ABwZaTr/7y/Xn5/Szq9POUk=;
        b=iXefK7fAtpYiHIHAwT7WPc4/Q71Ihh/8v5ZrB42BjlKfA+Dtx8ddyYT8n/4ZgcHJyB
         wgKLrvML9x84nU7TJnMffgjV0UyuvUf1xKgJFvVYSiUm9FSdhHfn6ERHsebtrJUwn+l5
         kYFjPQ0PK9w5LaqOte2ZC1eOpL8EXh6ip9UhPSclbhYPrzx9ole9uJsITgGL3ocNjykK
         F/LkGScT6dx3QgEhplf3k//LCEZPyNl7Ldm4rjJDZ7B7W6Wzhj48BiQD9bSdXrTgFQfo
         4U/6j0u4d6uRpxcrXaxcuSM2yO3tEphKJqmXH8OxNdKLmrtAEmUdrXpFvzXadLRb21TB
         MZhg==
X-Gm-Message-State: AOJu0Yz2BgozRilIoxemqsJNYrEtyfKUd605JNNHKc6wxMhZ8romt150
	YzDjxeedqPTUzGmfkz449fgELqMDsC5YQHX9bRNOPsi0gv7jZj7eAZszocZWRMfK/NyGb7Aa07E
	=
X-Google-Smtp-Source: AGHT+IHWScdAzyUgxwyCGLn3LGShOw14e/OF43+q3ufLN2CIDbDVfRksn2JY7pAhh4LyxznZdldQtw==
X-Received: by 2002:a05:651c:1551:b0:2cc:6e7a:37a4 with SMTP id y17-20020a05651c155100b002cc6e7a37a4mr3382155ljp.69.1706006646652;
        Tue, 23 Jan 2024 02:44:06 -0800 (PST)
Message-ID: <111f5551-70fa-4ded-a62a-e0aa967b3c29@suse.com>
Date: Tue, 23 Jan 2024 11:44:03 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: Thoughts on current Xen EDAC/MCE situation
Content-Language: en-US
To: Elliott Mitchell <ehem+xen@m5p.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, xen-devel@lists.xen.org
References: <Za7Vr+Rb25y/+MSy@mattapan.m5p.com>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <Za7Vr+Rb25y/+MSy@mattapan.m5p.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 22.01.2024 21:53, Elliott Mitchell wrote:
> I've been mentioning this on a regular basis, but the state of MCE
> handling with Xen seems poor.

I certainly agree here.

> I find the present handling of MCE in Xen an odd choice.  Having Xen do
> most of the handling of MCE events is a behavior matching a traditional
> stand-alone hypervisor.  Yet Xen was originally pushing any task not
> requiring hypervisor action onto Domain 0.

Not exactly. Xen in particular deals with all of CPU and all of memory.
Dom0 may be unaware of the full amount of CPUs in the system, nor the
full memory map (without resorting to interfaces specifically making
that information available, but not to be used for Dom0 kernel's own
acting as a kernel).

> MCE seems a perfect match for sharing responsibility with Domain 0.
> Domain 0 needs to know about any MCE event, this is where system
> administrators will expect to find logs.  In fact, if the event is a
> Correctable Error, then *only* Domain 0 needs to know.  For a CE, Xen
> may need no action at all (an implementation could need help) and
> the effected domain would need no action.  It is strictly for
> Uncorrectable Errors that action beside logging is needed.
> 
> For a UE memory error, the best approach might be for Domain 0 to decode
> the error.  Once Domain 0 determines it is UE, invoke a hypercall to pass
> the GPFN to Xen.

What GPFN? Decoding can only possibly find machine addresses in what
hardware supplies.

>  Xen would then forcibly unmap the page (similar to what
> Linux does to userspace for corrupted pages).  Xen would then identify
> what the page was used for, alert the domain and return that to Domain 0.

Some of this is already in place. How well it functions is a different
question.

> The key advantage of this approach is it makes MCE handling act very
> similar to MCE handling without Xen.

While that's true, you're completely omitting all implications towards
what it means to hand off most handling to Dom0. While it is perhaps
possible to make Linux'es chipset-specific EDAC drivers Xen PV aware,
it might be yet harder to achieve the same in a PVH Dom0.

>  Documentation about how MCEs are
> reported/decoded would apply equally to Xen.  Another rather important
> issue is it means less maintenance work to keep MCE handling working with
> cutting-edge hardware.  I've noticed one vendor being sluggish about
> getting patches into Linux and I fear similar issues may apply more
> severely to Xen.

With all of your suggestions: Who do you think is going to do all of
the work involved here (properly writing down a design, to take care
of all known difficulties, and then actually implement everything)?
We're already short on people, as you're very likely aware.

Jan


From xen-devel-bounces@lists.xenproject.org Tue Jan 23 11:00:32 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 23 Jan 2024 11:00:32 +0000
Received: from list by lists.xenproject.org with outflank-mailman.670367.1043078 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSEW1-0007PC-O5; Tue, 23 Jan 2024 11:00:25 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 670367.1043078; Tue, 23 Jan 2024 11:00:25 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSEW1-0007P5-LJ; Tue, 23 Jan 2024 11:00:25 +0000
Received: by outflank-mailman (input) for mailman id 670367;
 Tue, 23 Jan 2024 11:00:24 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=9pmr=JB=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rSEW0-0007Oz-T2
 for xen-devel@lists.xenproject.org; Tue, 23 Jan 2024 11:00:24 +0000
Received: from mail-lj1-x22d.google.com (mail-lj1-x22d.google.com
 [2a00:1450:4864:20::22d])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 9aa74f3e-b9de-11ee-9b0f-b553b5be7939;
 Tue, 23 Jan 2024 12:00:22 +0100 (CET)
Received: by mail-lj1-x22d.google.com with SMTP id
 38308e7fff4ca-2cf1524cb17so4085331fa.2
 for <xen-devel@lists.xenproject.org>; Tue, 23 Jan 2024 03:00:22 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 y6-20020a6bc806000000b007bf46975136sm5146912iof.54.2024.01.23.03.00.20
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 23 Jan 2024 03:00:21 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 9aa74f3e-b9de-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1706007622; x=1706612422; darn=lists.xenproject.org;
        h=content-transfer-encoding:autocrypt:content-language:cc:to:subject
         :from:user-agent:mime-version:date:message-id:from:to:cc:subject
         :date:message-id:reply-to;
        bh=AKqTfvCEN8piNjj2eqrZeZFTF6ME+aGpRVt9W+QibY4=;
        b=BB65FprQgSU5uKepRxmQNpGBDnt8UOEvNCPDwk7iCIvQLSq6ql6qhH6Y27hca4Te0e
         CrPIgGyR7NDwO7NEEZEp4/oivzhJWNtyI+KpD3b9Z6FRWn7KSzPOOX6valvPYZCkZntz
         yrtCgRwgXJoRvbGXWrvJZIZSP73OH1dqEw8YHjXFWV02HLywKPc+REmTPLgEIgNIsgAr
         5PDkK+BkcahRmzDdzAjVDTCPYYm7TjFaDRQAq15mQYZFi9ajJT2awh9Xuunu0Sa5YDVX
         tb0TkNIHktU/A39V0xhDWPx0hajN7EPy/Pru6ZYIg8XKL5VF7ZB/iwjsQ7vgtDwSKOa6
         BnlQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706007622; x=1706612422;
        h=content-transfer-encoding:autocrypt:content-language:cc:to:subject
         :from:user-agent:mime-version:date:message-id:x-gm-message-state
         :from:to:cc:subject:date:message-id:reply-to;
        bh=AKqTfvCEN8piNjj2eqrZeZFTF6ME+aGpRVt9W+QibY4=;
        b=ScNkShilVQxPy/MZAQN9kB3ihW3n26AB2Wr1WqMDN/n85YkMfBU2GigX1H/Rwdra8w
         N1JFDW3qea9gaxOhR3KANAP8WowQaWT4Wi3PxsdlZFtKQpMEPN/4dzntV4+S3ZMdygtd
         Ei53wlXFDQrkBu8cp6ATjA5UQSUbb41DMkyqBheeV++stq/8qTBQ/7GEum93YKDi39wu
         F7mj7te4NbHhfBmU9VpnjXMWlbYjEshfcY1XD5aR/gKJUgcgDIRY7rpYfw69kzZnfFxQ
         aWPM5fI2SCATVm3WDnQa0F9jPCz43XN0qQsly7GKBegvnxfMhc4puXnlWr4RbPX91pwW
         brTw==
X-Gm-Message-State: AOJu0Yyr8JUIsjRR0B/M7YD+qcP9/kzfhp7ufdbMIZBk91PLc8O+BIXm
	AevuOPDH8cdtSp+tP3R9QBZzUwlXJhFDCCmL9a0ZY2qsiTobXjZJFCmKj8EdPgYYNhv1B2wwi5s
	=
X-Google-Smtp-Source: AGHT+IFp6FDEXH1JnQytuN5M9eb5l2Z0C48CWhiU638KvJ73MmQaNe6dldZB9YlyA82SxWtSBKvyHA==
X-Received: by 2002:a2e:bea9:0:b0:2ce:5524:1d96 with SMTP id a41-20020a2ebea9000000b002ce55241d96mr2035865ljr.51.1706007621937;
        Tue, 23 Jan 2024 03:00:21 -0800 (PST)
Message-ID: <27d828d2-fb4b-41fe-82e8-90720bd9ff8f@suse.com>
Date: Tue, 23 Jan 2024 12:00:18 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
From: Jan Beulich <jbeulich@suse.com>
Subject: [PATCH v2] x86/CPU: convert vendor hook invocations to altcall
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, Wei Liu <wl@xen.org>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
Content-Language: en-US
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

While not performance critical, these hook invocations still want
converting: This way all pre-filled struct cpu_dev instances can become
__initconst_cf_clobber, thus allowing to eliminate further 8 ENDBR
during the 2nd phase of alternatives patching (besides moving previously
resident data to .init.*).

Since all use sites need touching anyway, take the opportunity and also
address a Misra C:2012 Rule 5.5 violation: Rename the this_cpu static
variable.

Signed-off-by: Jan Beulich <jbeulich@suse.com>
---
With LTO it might end up necessary to tag as __used more than just
"default_cpu".

Perhaps __used would better be integrated into __initconst_cf_clobber,
to be independent of the compiler potentially eliding structure
instances.
---
v2: Add previously missing __used (due to sending out a stale patch).

--- a/xen/arch/x86/cpu/amd.c
+++ b/xen/arch/x86/cpu/amd.c
@@ -1302,7 +1302,7 @@ static void cf_check init_amd(struct cpu
 	amd_log_freq(c);
 }
 
-const struct cpu_dev amd_cpu_dev = {
+const struct cpu_dev __initconst_cf_clobber amd_cpu_dev = {
 	.c_early_init	= early_init_amd,
 	.c_init		= init_amd,
 };
--- a/xen/arch/x86/cpu/centaur.c
+++ b/xen/arch/x86/cpu/centaur.c
@@ -54,6 +54,6 @@ static void cf_check init_centaur(struct
 		init_c3(c);
 }
 
-const struct cpu_dev centaur_cpu_dev = {
+const struct cpu_dev __initconst_cf_clobber centaur_cpu_dev = {
 	.c_init		= init_centaur,
 };
--- a/xen/arch/x86/cpu/common.c
+++ b/xen/arch/x86/cpu/common.c
@@ -113,10 +113,10 @@ static void cf_check default_init(struct
 	__clear_bit(X86_FEATURE_SEP, c->x86_capability);
 }
 
-static const struct cpu_dev default_cpu = {
+static const struct cpu_dev __initconst_cf_clobber __used default_cpu = {
 	.c_init	= default_init,
 };
-static const struct cpu_dev *this_cpu = &default_cpu;
+static struct cpu_dev __ro_after_init actual_cpu;
 
 static DEFINE_PER_CPU(uint64_t, msr_misc_features);
 void (* __read_mostly ctxt_switch_masking)(const struct vcpu *next);
@@ -336,12 +336,13 @@ void __init early_cpu_init(bool verbose)
 
 	c->x86_vendor = x86_cpuid_lookup_vendor(ebx, ecx, edx);
 	switch (c->x86_vendor) {
-	case X86_VENDOR_INTEL:	  this_cpu = &intel_cpu_dev;    break;
-	case X86_VENDOR_AMD:	  this_cpu = &amd_cpu_dev;      break;
-	case X86_VENDOR_CENTAUR:  this_cpu = &centaur_cpu_dev;  break;
-	case X86_VENDOR_SHANGHAI: this_cpu = &shanghai_cpu_dev; break;
-	case X86_VENDOR_HYGON:    this_cpu = &hygon_cpu_dev;    break;
+	case X86_VENDOR_INTEL:	  actual_cpu = intel_cpu_dev;    break;
+	case X86_VENDOR_AMD:	  actual_cpu = amd_cpu_dev;      break;
+	case X86_VENDOR_CENTAUR:  actual_cpu = centaur_cpu_dev;  break;
+	case X86_VENDOR_SHANGHAI: actual_cpu = shanghai_cpu_dev; break;
+	case X86_VENDOR_HYGON:    actual_cpu = hygon_cpu_dev;    break;
 	default:
+		actual_cpu = default_cpu;
 		if (!verbose)
 			break;
 		printk(XENLOG_ERR
@@ -448,8 +449,8 @@ static void generic_identify(struct cpui
 	if (c->extended_cpuid_level >= 0x80000021)
 		c->x86_capability[FEATURESET_e21a] = cpuid_eax(0x80000021);
 
-	if (this_cpu->c_early_init)
-		this_cpu->c_early_init(c);
+	if (actual_cpu.c_early_init)
+		alternative_vcall(actual_cpu.c_early_init, c);
 
 	/* c_early_init() may have adjusted cpuid levels/features.  Reread. */
 	c->cpuid_level = cpuid_eax(0);
@@ -546,9 +547,8 @@ void identify_cpu(struct cpuinfo_x86 *c)
 	 * At the end of this section, c->x86_capability better
 	 * indicate the features this CPU genuinely supports!
 	 */
-	if (this_cpu->c_init)
-		this_cpu->c_init(c);
-
+	if (actual_cpu.c_init)
+		alternative_vcall(actual_cpu.c_init, c);
 
 	/*
 	 * The vendor-specific functions might have changed features.  Now
--- a/xen/arch/x86/cpu/hygon.c
+++ b/xen/arch/x86/cpu/hygon.c
@@ -87,7 +87,7 @@ static void cf_check init_hygon(struct c
 	amd_log_freq(c);
 }
 
-const struct cpu_dev hygon_cpu_dev = {
+const struct cpu_dev __initconst_cf_clobber hygon_cpu_dev = {
 	.c_early_init	= early_init_amd,
 	.c_init		= init_hygon,
 };
--- a/xen/arch/x86/cpu/intel.c
+++ b/xen/arch/x86/cpu/intel.c
@@ -598,7 +598,7 @@ static void cf_check init_intel(struct c
 		setup_clear_cpu_cap(X86_FEATURE_CLWB);
 }
 
-const struct cpu_dev intel_cpu_dev = {
+const struct cpu_dev __initconst_cf_clobber intel_cpu_dev = {
 	.c_early_init	= early_init_intel,
 	.c_init		= init_intel,
 };
--- a/xen/arch/x86/cpu/shanghai.c
+++ b/xen/arch/x86/cpu/shanghai.c
@@ -15,6 +15,6 @@ static void cf_check init_shanghai(struc
     init_intel_cacheinfo(c);
 }
 
-const struct cpu_dev shanghai_cpu_dev = {
+const struct cpu_dev __initconst_cf_clobber shanghai_cpu_dev = {
     .c_init     = init_shanghai,
 };


From xen-devel-bounces@lists.xenproject.org Tue Jan 23 11:14:41 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 23 Jan 2024 11:14:41 +0000
Received: from list by lists.xenproject.org with outflank-mailman.670373.1043088 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSEjb-000278-TJ; Tue, 23 Jan 2024 11:14:27 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 670373.1043088; Tue, 23 Jan 2024 11:14:27 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSEjb-000271-Qi; Tue, 23 Jan 2024 11:14:27 +0000
Received: by outflank-mailman (input) for mailman id 670373;
 Tue, 23 Jan 2024 11:14:26 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=9pmr=JB=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rSEjZ-00026a-T5
 for xen-devel@lists.xenproject.org; Tue, 23 Jan 2024 11:14:26 +0000
Received: from mail-lj1-x231.google.com (mail-lj1-x231.google.com
 [2a00:1450:4864:20::231])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 90bd029e-b9e0-11ee-98f4-6d05b1d4d9a1;
 Tue, 23 Jan 2024 12:14:24 +0100 (CET)
Received: by mail-lj1-x231.google.com with SMTP id
 38308e7fff4ca-2cdf69bb732so43736881fa.3
 for <xen-devel@lists.xenproject.org>; Tue, 23 Jan 2024 03:14:24 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 v5-20020a02cba5000000b0046eb8a6889fsm2797735jap.31.2024.01.23.03.14.22
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 23 Jan 2024 03:14:23 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 90bd029e-b9e0-11ee-98f4-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1706008464; x=1706613264; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:from:to:cc:subject:date:message-id:reply-to;
        bh=c06H0LkK52AvnK2NUzVm4BcSjtSEovFRv7ldEQYSZ1Q=;
        b=VXTqMQht/OP3QMv591XSep3flvbkScu38q0HhBOfJ9NZbmcpBB305IBFZqBN6fb9TK
         Kazij6rlT9ZVVZPYazpmJ/QQc5VS9KVymo6wHXQwQVLXD96gFCakyGpkcYNUqY1bCoS2
         UwH8PZHUm/EMYvvpZCj79rPjztd/xDVIuyol8K08D5Eo0IBqs9zgSf8r2hjCUi6dOkab
         ixNC7t2B4KDltoRj67euqga2UOuyGGbmFvgsysJpLX2SkJuz56XVcpt8Tq7YCdOTo+Rd
         ow+IbiWIbfboqlHd2NrJSy3S8TYLRIckwU/A1IUoijPpRqQkHZTHe6acnBvNBrm9GJgI
         4s5w==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706008464; x=1706613264;
        h=content-transfer-encoding:in-reply-to:autocrypt:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to;
        bh=c06H0LkK52AvnK2NUzVm4BcSjtSEovFRv7ldEQYSZ1Q=;
        b=j7bCCbt/j9lPMe28UVAqEAWz7n6SwCrc2VE3bL/Gz4USmiwXJbATqIEMmeG0O/qZqc
         kBSKQB8vs8SNIQ6PlJcltcYpCzMLyE6kq7y2qdBnbgMJ2vKNmI5/A0rJ+UwprNliu9VL
         XiYLA6dLY6Y1AXRsh6WarWPFKaXsq4EazcW4kJ0JSk3/6kXolZXOAQJu00DveHcp94u8
         tDe2NgGJo1t5fLYqiThlrkXg21ouFwyJnqwqrx9VUDJcJ9Uq9Dand/2HStfg8Bg7/Kw3
         ZdgGIywecwXdktZTOZSS1K0ZSFsj7HAt0jEE2HbaULBEiORMAw2Jj5WVHr11nEg3/77A
         ynMg==
X-Gm-Message-State: AOJu0YwJHFtuR3PqzjgkuMZ/jAwI2TKw3Ss1X1IPqSoi78NRplbQFI8d
	t0UUxgKxCT8KDguJ9A9QIStC7RtJuBdbKjho/V/TtzMFyB+VWT45UWZ0+fbe4g==
X-Google-Smtp-Source: AGHT+IGLov3UNyTussKFY5A/SYVM3aSGlvtBk1Z4KDsvbg+FK1OOZ+K/F1gS2mwAaeo0CI6k9a6W3g==
X-Received: by 2002:a2e:b711:0:b0:2cd:418:a38 with SMTP id j17-20020a2eb711000000b002cd04180a38mr1197403ljo.136.1706008464258;
        Tue, 23 Jan 2024 03:14:24 -0800 (PST)
Message-ID: <81e5cac4-90f0-4fff-b891-53ca73c61832@suse.com>
Date: Tue, 23 Jan 2024 12:14:20 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 16/34] xen/lib: introduce generic find next bit
 operations
To: Oleksii Kurochko <oleksii.kurochko@gmail.com>
Cc: Alistair Francis <alistair.francis@wdc.com>,
 Bob Eshleman <bobbyeshleman@gmail.com>, Connor Davis
 <connojdavis@gmail.com>, Andrew Cooper <andrew.cooper3@citrix.com>,
 George Dunlap <george.dunlap@citrix.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>,
 xen-devel@lists.xenproject.org
References: <cover.1703255175.git.oleksii.kurochko@gmail.com>
 <bb47caf6c275d8aea307b96e79828831eab4a703.1703255175.git.oleksii.kurochko@gmail.com>
Content-Language: en-US
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <bb47caf6c275d8aea307b96e79828831eab4a703.1703255175.git.oleksii.kurochko@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 22.12.2023 16:13, Oleksii Kurochko wrote:
> --- a/xen/arch/riscv/include/asm/fence.h
> +++ b/xen/arch/riscv/include/asm/fence.h
> @@ -1,4 +1,4 @@
> -/* SPDX-License-Identifier: GPL-2.0-or-later */
> +/* SPDX-License-Identifier: GPL-2.0-only */
>  #ifndef _ASM_RISCV_FENCE_H
>  #define _ASM_RISCV_FENCE_H
>  
> @@ -11,3 +11,12 @@
>  #endif
>  
>  #endif	/* _ASM_RISCV_FENCE_H */
> +
> +/*
> + * Local variables:
> + * mode: C
> + * c-file-style: "BSD"
> + * c-basic-offset: 4
> + * indent-tabs-mode: nil
> + * End:
> + */

Surely all of this wants doing in the previous patch, where the header
is introduced?

> --- a/xen/common/Kconfig
> +++ b/xen/common/Kconfig
> @@ -47,6 +47,9 @@ config ARCH_MAP_DOMAIN_PAGE
>  config GENERIC_BUG_FRAME
>  	bool
>  
> +config GENERIC_FIND_NEXT_BIT
> +	bool

There's no need for this, as ...

> --- a/xen/lib/Makefile
> +++ b/xen/lib/Makefile
> @@ -3,6 +3,7 @@ obj-$(CONFIG_X86) += x86/
>  lib-y += bsearch.o
>  lib-y += ctors.o
>  lib-y += ctype.o
> +lib-$(CONFIG_GENERIC_FIND_NEXT_BIT) += find-next-bit.o

... you're moving this to lib/. Or have you encountered any issue
with building this uniformly, and you forgot to mention this in
the description?

> --- /dev/null
> +++ b/xen/lib/find-next-bit.c
> @@ -0,0 +1,281 @@
> +/* find_next_bit.c: fallback find next bit implementation
> + *
> + * Copyright (C) 2004 Red Hat, Inc. All Rights Reserved.
> + * Written by David Howells (dhowells@redhat.com)
> + *
> + * This program is free software; you can redistribute it and/or
> + * modify it under the terms of the GNU General Public License
> + * as published by the Free Software Foundation; either version
> + * 2 of the License, or (at your option) any later version.
> + */
> +#include <xen/bitops.h>
> +
> +#include <asm/byteorder.h>
> +
> +#ifndef find_next_bit
> +/*
> + * Find the next set bit in a memory region.
> + */
> +unsigned long find_next_bit(const unsigned long *addr, unsigned long size,
> +			    unsigned long offset)
> +{
> +	const unsigned long *p = addr + BIT_WORD(offset);
> +	unsigned long result = offset & ~(BITS_PER_LONG-1);
> +	unsigned long tmp;
> +
> +	if (offset >= size)
> +		return size;
> +	size -= result;
> +	offset %= BITS_PER_LONG;
> +	if (offset) {
> +		tmp = *(p++);
> +		tmp &= (~0UL << offset);
> +		if (size < BITS_PER_LONG)
> +			goto found_first;
> +		if (tmp)
> +			goto found_middle;
> +		size -= BITS_PER_LONG;
> +		result += BITS_PER_LONG;
> +	}
> +	while (size & ~(BITS_PER_LONG-1)) {
> +		if ((tmp = *(p++)))
> +			goto found_middle;
> +		result += BITS_PER_LONG;
> +		size -= BITS_PER_LONG;
> +	}
> +	if (!size)
> +		return result;
> +	tmp = *p;
> +
> +found_first:
> +	tmp &= (~0UL >> (BITS_PER_LONG - size));
> +	if (tmp == 0UL)		/* Are any bits set? */
> +		return result + size;	/* Nope. */
> +found_middle:
> +	return result + __ffs(tmp);
> +}
> +EXPORT_SYMBOL(find_next_bit);
> +#endif
> +
> +#ifndef find_next_zero_bit
> +/*
> + * This implementation of find_{first,next}_zero_bit was stolen from
> + * Linus' asm-alpha/bitops.h.
> + */
> +unsigned long find_next_zero_bit(const unsigned long *addr, unsigned long size,
> +				 unsigned long offset)
> +{
> +	const unsigned long *p = addr + BIT_WORD(offset);
> +	unsigned long result = offset & ~(BITS_PER_LONG-1);
> +	unsigned long tmp;
> +
> +	if (offset >= size)
> +		return size;
> +	size -= result;
> +	offset %= BITS_PER_LONG;
> +	if (offset) {
> +		tmp = *(p++);
> +		tmp |= ~0UL >> (BITS_PER_LONG - offset);
> +		if (size < BITS_PER_LONG)
> +			goto found_first;
> +		if (~tmp)
> +			goto found_middle;
> +		size -= BITS_PER_LONG;
> +		result += BITS_PER_LONG;
> +	}
> +	while (size & ~(BITS_PER_LONG-1)) {
> +		if (~(tmp = *(p++)))
> +			goto found_middle;
> +		result += BITS_PER_LONG;
> +		size -= BITS_PER_LONG;
> +	}
> +	if (!size)
> +		return result;
> +	tmp = *p;
> +
> +found_first:
> +	tmp |= ~0UL << size;
> +	if (tmp == ~0UL)	/* Are any bits zero? */
> +		return result + size;	/* Nope. */
> +found_middle:
> +	return result + ffz(tmp);
> +}
> +EXPORT_SYMBOL(find_next_zero_bit);
> +#endif
> +
> +#ifndef find_first_bit
> +/*
> + * Find the first set bit in a memory region.
> + */
> +unsigned long find_first_bit(const unsigned long *addr, unsigned long size)
> +{
> +	const unsigned long *p = addr;
> +	unsigned long result = 0;
> +	unsigned long tmp;
> +
> +	while (size & ~(BITS_PER_LONG-1)) {
> +		if ((tmp = *(p++)))
> +			goto found;
> +		result += BITS_PER_LONG;
> +		size -= BITS_PER_LONG;
> +	}
> +	if (!size)
> +		return result;
> +
> +	tmp = (*p) & (~0UL >> (BITS_PER_LONG - size));
> +	if (tmp == 0UL)		/* Are any bits set? */
> +		return result + size;	/* Nope. */
> +found:
> +	return result + __ffs(tmp);
> +}
> +EXPORT_SYMBOL(find_first_bit);
> +#endif
> +
> +#ifndef find_first_zero_bit
> +/*
> + * Find the first cleared bit in a memory region.
> + */
> +unsigned long find_first_zero_bit(const unsigned long *addr, unsigned long size)
> +{
> +	const unsigned long *p = addr;
> +	unsigned long result = 0;
> +	unsigned long tmp;
> +
> +	while (size & ~(BITS_PER_LONG-1)) {
> +		if (~(tmp = *(p++)))
> +			goto found;
> +		result += BITS_PER_LONG;
> +		size -= BITS_PER_LONG;
> +	}
> +	if (!size)
> +		return result;
> +
> +	tmp = (*p) | (~0UL << size);
> +	if (tmp == ~0UL)	/* Are any bits zero? */
> +		return result + size;	/* Nope. */
> +found:
> +	return result + ffz(tmp);
> +}
> +EXPORT_SYMBOL(find_first_zero_bit);
> +#endif
> +
> +#ifdef __BIG_ENDIAN
> +
> +/* include/linux/byteorder does not support "unsigned long" type */
> +static inline unsigned long ext2_swabp(const unsigned long * x)
> +{
> +#if BITS_PER_LONG == 64
> +	return (unsigned long) __swab64p((u64 *) x);
> +#elif BITS_PER_LONG == 32
> +	return (unsigned long) __swab32p((u32 *) x);
> +#else
> +#error BITS_PER_LONG not defined
> +#endif
> +}
> +
> +/* include/linux/byteorder doesn't support "unsigned long" type */
> +static inline unsigned long ext2_swab(const unsigned long y)
> +{
> +#if BITS_PER_LONG == 64
> +	return (unsigned long) __swab64((u64) y);
> +#elif BITS_PER_LONG == 32
> +	return (unsigned long) __swab32((u32) y);
> +#else
> +#error BITS_PER_LONG not defined
> +#endif
> +}
> +
> +#ifndef find_next_zero_bit_le
> +unsigned long find_next_zero_bit_le(const void *addr, unsigned
> +		long size, unsigned long offset)
> +{
> +	const unsigned long *p = addr;
> +	unsigned long result = offset & ~(BITS_PER_LONG - 1);
> +	unsigned long tmp;
> +
> +	if (offset >= size)
> +		return size;
> +	p += BIT_WORD(offset);
> +	size -= result;
> +	offset &= (BITS_PER_LONG - 1UL);
> +	if (offset) {
> +		tmp = ext2_swabp(p++);
> +		tmp |= (~0UL >> (BITS_PER_LONG - offset));
> +		if (size < BITS_PER_LONG)
> +			goto found_first;
> +		if (~tmp)
> +			goto found_middle;
> +		size -= BITS_PER_LONG;
> +		result += BITS_PER_LONG;
> +	}
> +
> +	while (size & ~(BITS_PER_LONG - 1)) {
> +		if (~(tmp = *(p++)))
> +			goto found_middle_swap;
> +		result += BITS_PER_LONG;
> +		size -= BITS_PER_LONG;
> +	}
> +	if (!size)
> +		return result;
> +	tmp = ext2_swabp(p);
> +found_first:
> +	tmp |= ~0UL << size;
> +	if (tmp == ~0UL)	/* Are any bits zero? */
> +		return result + size; /* Nope. Skip ffz */
> +found_middle:
> +	return result + ffz(tmp);
> +
> +found_middle_swap:
> +	return result + ffz(ext2_swab(tmp));
> +}
> +EXPORT_SYMBOL(find_next_zero_bit_le);
> +#endif
> +
> +#ifndef find_next_bit_le
> +unsigned long find_next_bit_le(const void *addr, unsigned
> +		long size, unsigned long offset)
> +{
> +	const unsigned long *p = addr;
> +	unsigned long result = offset & ~(BITS_PER_LONG - 1);
> +	unsigned long tmp;
> +
> +	if (offset >= size)
> +		return size;
> +	p += BIT_WORD(offset);
> +	size -= result;
> +	offset &= (BITS_PER_LONG - 1UL);
> +	if (offset) {
> +		tmp = ext2_swabp(p++);
> +		tmp &= (~0UL << offset);
> +		if (size < BITS_PER_LONG)
> +			goto found_first;
> +		if (tmp)
> +			goto found_middle;
> +		size -= BITS_PER_LONG;
> +		result += BITS_PER_LONG;
> +	}
> +
> +	while (size & ~(BITS_PER_LONG - 1)) {
> +		tmp = *(p++);
> +		if (tmp)
> +			goto found_middle_swap;
> +		result += BITS_PER_LONG;
> +		size -= BITS_PER_LONG;
> +	}
> +	if (!size)
> +		return result;
> +	tmp = ext2_swabp(p);
> +found_first:
> +	tmp &= (~0UL >> (BITS_PER_LONG - size));
> +	if (tmp == 0UL)		/* Are any bits set? */
> +		return result + size; /* Nope. */
> +found_middle:
> +	return result + __ffs(tmp);
> +
> +found_middle_swap:
> +	return result + __ffs(ext2_swab(tmp));
> +}
> +EXPORT_SYMBOL(find_next_bit_le);
> +#endif
> +
> +#endif /* __BIG_ENDIAN */

I was going to ask that you convince git to actually present a proper
diff, to make visible what changes. But other than the description says
you don't really move the file, you copy it. Judging from further titles
there's also nowhere you'd make Arm actually use this now generic code.

Jan


From xen-devel-bounces@lists.xenproject.org Tue Jan 23 11:16:28 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 23 Jan 2024 11:16:28 +0000
Received: from list by lists.xenproject.org with outflank-mailman.670377.1043098 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSElX-0002h7-BB; Tue, 23 Jan 2024 11:16:27 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 670377.1043098; Tue, 23 Jan 2024 11:16:27 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSElX-0002h0-8a; Tue, 23 Jan 2024 11:16:27 +0000
Received: by outflank-mailman (input) for mailman id 670377;
 Tue, 23 Jan 2024 11:16:25 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=9pmr=JB=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rSElV-0002gu-LU
 for xen-devel@lists.xenproject.org; Tue, 23 Jan 2024 11:16:25 +0000
Received: from mail-lj1-x22d.google.com (mail-lj1-x22d.google.com
 [2a00:1450:4864:20::22d])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id d852fe9f-b9e0-11ee-98f4-6d05b1d4d9a1;
 Tue, 23 Jan 2024 12:16:24 +0100 (CET)
Received: by mail-lj1-x22d.google.com with SMTP id
 38308e7fff4ca-2cf12a9be5bso6252621fa.0
 for <xen-devel@lists.xenproject.org>; Tue, 23 Jan 2024 03:16:24 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 h15-20020a02c4cf000000b0046e5c5511a3sm3571398jaj.93.2024.01.23.03.16.22
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 23 Jan 2024 03:16:24 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: d852fe9f-b9e0-11ee-98f4-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1706008584; x=1706613384; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=HJcR12zEYQHcMTWuX30isrYYKJaQXEyMAwIQv+S4CQ0=;
        b=A/0GmutUvH8dyqmTbyBipcf3FilLo7OBI77L54U3hG5PE3mCZiD/4kLm4ADttdiKh1
         VTQS/hWTeyBrnvBelQBSaCsYnDSl2Xa7QCRvgvl5jwzJkFYcxVdqRkhZKN1YVIspWa3c
         KaoUsfoIoEn2GmzB6ATjudEBFVDgbtF/LWoK48llcQrIEjqpiBv/YzU27jiLZiywBBpG
         T5ilNtMIVlFwfzq2LvR4tpvg2x3r+f/3ZGn/NFlWAWJJQSsFoSkXcdlvPUgdi22Mphby
         TX1YNoSGpw1+ZKh+jgyb/hZV5toqg7LU6LJ5YJpJ7FozfLL2/295jFYQTOT481LZ2BHg
         6jJg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706008584; x=1706613384;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=HJcR12zEYQHcMTWuX30isrYYKJaQXEyMAwIQv+S4CQ0=;
        b=qq/2Wavn3VsWUZO/OHMULh+Fw1cc/mPiLsE6Qtw/f5TtmNnuwtfL1spOPr2Ox+2Fpw
         rki7QCst+MBKXoxkp2YtMBMuU5gHPkib96Tp4p9vpIawJOoSSYZdHa1k159j/KtE6JSY
         FH4ynigfEMpAtJVMa9tK2pBanMgUIT2Hp8/FsDEW30N3rJHe1otfXuF0EbioyvFWCi4O
         OGQX3W3DBCKRb/+BM5iH2Kolg2h2KUkP9/tNOGxLPYkgjgGwDpuYN56jL3GbevOpptuV
         zH26HXvWEiTGZP1phroMwo/ZwfSPAEYiBsuQ4OzL+2QVxs2YaNkxu8+KZ4U3a8zGs1aX
         mlCw==
X-Gm-Message-State: AOJu0Yy+5abpKELcIXL5OybsKOy0phIPIWlU9fu0V8jedgu0KYFiInY7
	iL0tHzO8RLeDWNCHtaJFZiL5RDFWlFpWgVOSeD5JCG3/f/1AVLA04iUS7VJsLg==
X-Google-Smtp-Source: AGHT+IGxcUQ5Fax/0+sC5hQel+mfzcz1njKXDq0+yD4h14SJiwn0yAieTJ0/oTMBq/Q/kfA7n71pcQ==
X-Received: by 2002:a05:651c:4d0:b0:2cd:c59c:8b3f with SMTP id e16-20020a05651c04d000b002cdc59c8b3fmr3206836lji.36.1706008584512;
        Tue, 23 Jan 2024 03:16:24 -0800 (PST)
Message-ID: <57aebe38-f89c-49b2-a5e4-52408961a72f@suse.com>
Date: Tue, 23 Jan 2024 12:16:20 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 19/34] xen/riscv: introduce guest_access.h
Content-Language: en-US
To: Oleksii Kurochko <oleksii.kurochko@gmail.com>
Cc: Alistair Francis <alistair.francis@wdc.com>,
 Bob Eshleman <bobbyeshleman@gmail.com>, Connor Davis
 <connojdavis@gmail.com>, Andrew Cooper <andrew.cooper3@citrix.com>,
 George Dunlap <george.dunlap@citrix.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>,
 xen-devel@lists.xenproject.org
References: <cover.1703255175.git.oleksii.kurochko@gmail.com>
 <dd1741ee7ed3332106c08a2caf0daf8926570664.1703255175.git.oleksii.kurochko@gmail.com>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <dd1741ee7ed3332106c08a2caf0daf8926570664.1703255175.git.oleksii.kurochko@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 22.12.2023 16:13, Oleksii Kurochko wrote:
> All necessary dummiy implementation of functions in this header
> will be introduced in stubs.c
> 
> Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>

Acked-by: Jan Beulich <jbeulich@suse.com>




From xen-devel-bounces@lists.xenproject.org Tue Jan 23 11:18:56 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 23 Jan 2024 11:18:56 +0000
Received: from list by lists.xenproject.org with outflank-mailman.670380.1043108 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSEnu-0003kP-Mx; Tue, 23 Jan 2024 11:18:54 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 670380.1043108; Tue, 23 Jan 2024 11:18:54 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSEnu-0003kI-KR; Tue, 23 Jan 2024 11:18:54 +0000
Received: by outflank-mailman (input) for mailman id 670380;
 Tue, 23 Jan 2024 11:18:53 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=9pmr=JB=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rSEnt-0003kC-Db
 for xen-devel@lists.xenproject.org; Tue, 23 Jan 2024 11:18:53 +0000
Received: from mail-lj1-x233.google.com (mail-lj1-x233.google.com
 [2a00:1450:4864:20::233])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 3043edf5-b9e1-11ee-98f4-6d05b1d4d9a1;
 Tue, 23 Jan 2024 12:18:52 +0100 (CET)
Received: by mail-lj1-x233.google.com with SMTP id
 38308e7fff4ca-2cf1524cb17so4310071fa.2
 for <xen-devel@lists.xenproject.org>; Tue, 23 Jan 2024 03:18:52 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 t15-20020a05663801ef00b0046d4105b7e8sm3535097jaq.49.2024.01.23.03.18.50
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 23 Jan 2024 03:18:51 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 3043edf5-b9e1-11ee-98f4-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1706008732; x=1706613532; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=LgTlDuWTx9Av8T+5zpz2+6w96kIyvbiIwt9d1nsglRk=;
        b=JLttFsMNzLDr3r/JTaH6koyxRQzF9Lj7Hs0p6uJu2nsqCVUltt71/aDAKEgR+eY5ys
         VQPvxx7suJQjj0sEhw6mmPJwYvk2+MX3JxSPQoB7vUT25IHYSX+gXAERRqJ8KOMfYmSn
         UZ429YnfYpGqL8ysEWwdqw7ude8FtkgpnwuDXC5TkzPLUaP0PCcscUwmiLAasQATndNe
         Q/4/sBlVfHnkUZAfLdgfo+cFtGjJMyKUmAcR67Ko27sUk3d+tLa8Cp/uaD4GHUSAH6ih
         L0P2tDFyM4bZ9fOA3iT6+4DS78M6MaE2VuRUVEB9YUb5aPoVNQlP/iAZSjHW9BQlKusr
         5Urg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706008732; x=1706613532;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=LgTlDuWTx9Av8T+5zpz2+6w96kIyvbiIwt9d1nsglRk=;
        b=pgmvvXeFQxTtbzh1+bnrp6WyD9TRxqkpaVB0/vpxCkIy0rrOhnMpz0Z93EY+tuGfZn
         yZlPyDCGQRN7ytbVj2RDR8z5XcNcrG7jqkb0YYJnz+SK+TZgDw8dC7JF4Hl9sD1c80IC
         Fo0ir3REpML4z94NyPMjRPmFqKOgoFNEfmLU+iy6Z/0QEL6sYEXZU+U3HuJVzTpWxJnS
         yjytdYeA381XSYPxikopNcCOn7ptdVWSXN6KXxsRmIJzVIFxxnusLAqtY4jfUJCbSKR1
         YouWGdrcoLbN8tYuwuk7cdac0GI7UldbGhe8Hk9haQ9M2GInJPbcKN3ztfD6Stba/L6r
         AP3g==
X-Gm-Message-State: AOJu0Yyo4QXOhaiSIgLM4atdoXKecOwWCoNcNPHnrSYAWTkmDpEzwQ4Z
	yZIotz0hTDJrvmh2nWavC3eYujW1vWNKlRU/wXgTO/bd+iSvlM23SfE0B/IjVQ==
X-Google-Smtp-Source: AGHT+IHdwauVDiUPEI/JNa5+mEH51/q0r4WOTGudh3oRxqHbrsTTFLVDx5wyu22kOqTTGX7n8+YBYw==
X-Received: by 2002:a2e:a54e:0:b0:2cd:f5d3:11db with SMTP id e14-20020a2ea54e000000b002cdf5d311dbmr2755524ljn.82.1706008732042;
        Tue, 23 Jan 2024 03:18:52 -0800 (PST)
Message-ID: <a9e80aeb-67e1-453f-b8be-1c6295d95dff@suse.com>
Date: Tue, 23 Jan 2024 12:18:48 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 20/34] xen/riscv: introduce irq.h
Content-Language: en-US
To: Oleksii Kurochko <oleksii.kurochko@gmail.com>
Cc: Alistair Francis <alistair.francis@wdc.com>,
 Bob Eshleman <bobbyeshleman@gmail.com>, Connor Davis
 <connojdavis@gmail.com>, Andrew Cooper <andrew.cooper3@citrix.com>,
 George Dunlap <george.dunlap@citrix.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>,
 xen-devel@lists.xenproject.org
References: <cover.1703255175.git.oleksii.kurochko@gmail.com>
 <11613eb5a0378315d70fc2f4d4f744ede579cca3.1703255175.git.oleksii.kurochko@gmail.com>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <11613eb5a0378315d70fc2f4d4f744ede579cca3.1703255175.git.oleksii.kurochko@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 22.12.2023 16:13, Oleksii Kurochko wrote:
> +static inline void arch_move_irqs(struct vcpu *v)
> +{
> +    BUG();
> +}

As I think you said you're doing the conversion already - with this
becoming the "canonical" BUG_ON("unimplemented"):
Acked-by: Jan Beulich <jbeulich@suse.com>

Jan


From xen-devel-bounces@lists.xenproject.org Tue Jan 23 11:23:07 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 23 Jan 2024 11:23:07 +0000
Received: from list by lists.xenproject.org with outflank-mailman.670386.1043120 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSErv-0005uu-8o; Tue, 23 Jan 2024 11:23:03 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 670386.1043120; Tue, 23 Jan 2024 11:23:03 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSErv-0005un-46; Tue, 23 Jan 2024 11:23:03 +0000
Received: by outflank-mailman (input) for mailman id 670386;
 Tue, 23 Jan 2024 11:23:01 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=9pmr=JB=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rSErt-0005pW-Lz
 for xen-devel@lists.xenproject.org; Tue, 23 Jan 2024 11:23:01 +0000
Received: from mail-ej1-x635.google.com (mail-ej1-x635.google.com
 [2a00:1450:4864:20::635])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id c3c02c9b-b9e1-11ee-9b0f-b553b5be7939;
 Tue, 23 Jan 2024 12:22:59 +0100 (CET)
Received: by mail-ej1-x635.google.com with SMTP id
 a640c23a62f3a-a30b2f032b1so110291266b.0
 for <xen-devel@lists.xenproject.org>; Tue, 23 Jan 2024 03:22:59 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 v10-20020a02cbaa000000b0046e4ca1f8e6sm3504332jap.70.2024.01.23.03.22.57
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 23 Jan 2024 03:22:58 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: c3c02c9b-b9e1-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1706008979; x=1706613779; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=iBkl2yDQyojvmdOWO8oPi0dobT0YB24H+X8IzO9rtSc=;
        b=MSdC6nr0w1KR6dhbBRneiLgg7B6PG52d+lI5R/qx1S27A31c2eqyKD3BFEq7bdX4Gv
         QA1xXNU4DC1PBPqK/AwBFsoKCDL3mmM5wt6vgJQcy5ZlcJR2X0KjPhcV3xICbnI8DmJ3
         KlbHb6JztLhniCTn8aIg91GKwt3w6AxZZuZ4ojHpE8BNL5YzwJmMC8IT3EHrBIDC10ic
         OJPkAMjsDSkY6MX/IqS1+OLc2JO03iEU1Jh+YNVmeBDGXphbryu1xMKXsE9czgHbuxV4
         3yNvMGVh1kVvZqkWOeLHLCGxio0lc5pNnJbIjlNQD51zn+onA0jOLwFcNZkerS7YYNvn
         0N9A==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706008979; x=1706613779;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=iBkl2yDQyojvmdOWO8oPi0dobT0YB24H+X8IzO9rtSc=;
        b=fTZW8D1TRB5M+RzIdj6rjEp/bBZGJk2MYA2SFOR/ezQt81holxvWXgLB0T9HdV0BYc
         9OjGVoA0SE9TQDVFIgu23ciI3lNMPhWGKPsVpaiEsYuF90D7sbJrHyHzeLm1rX5XquTa
         7EtehykixKPix1EjlfM98AnLBUgWBkCGwY9H9sUil1mqpjBexNQ2gC1vJKru5XuZIb7J
         BG8+YpAOl8qixbB0xUImGXKOHbWp9Gsyl2DmtWN81ZS0Bw/wP+wgbK7qCGEnuBeyWhgm
         oHybJDQxWlV4+2V0zLNYJ75lCwV29JqyNKoYtYM47L1egAeqfFFaIQnDB+y0Exmmv0R5
         XW2Q==
X-Gm-Message-State: AOJu0Yx2586uD50Zezbln2vzLDQC17BIOdXO+I6IkNeeoAZdU7wXciJU
	u1H90FyWzOH9y1WO93emZV75MGXbAQNcNFeeOGZT9p70gSRgVAUdI/ihzSsRjQ==
X-Google-Smtp-Source: AGHT+IHNpiZ+xMSJ3Rkqw5ejOowm/wEOgv0UQzCSaolFXoB7zHo0uHkjj2NVkd1ca7IRJoiD/NJEiA==
X-Received: by 2002:a17:906:ba84:b0:a30:59d9:58e6 with SMTP id cu4-20020a170906ba8400b00a3059d958e6mr2852825ejd.38.1706008979370;
        Tue, 23 Jan 2024 03:22:59 -0800 (PST)
Message-ID: <88a7e5af-197b-41ef-b3c2-7d4f85a3cb85@suse.com>
Date: Tue, 23 Jan 2024 12:22:55 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 34/34] xen/README: add compiler and binutils versions
 for RISC-V64
Content-Language: en-US
To: Oleksii Kurochko <oleksii.kurochko@gmail.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 George Dunlap <george.dunlap@citrix.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>,
 xen-devel@lists.xenproject.org
References: <cover.1703255175.git.oleksii.kurochko@gmail.com>
 <c4d579f02b431d6ac9366dee73ebd7ab74e44715.1703255175.git.oleksii.kurochko@gmail.com>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <c4d579f02b431d6ac9366dee73ebd7ab74e44715.1703255175.git.oleksii.kurochko@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 22.12.2023 16:13, Oleksii Kurochko wrote:
> Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>
> ---
>  Changes in V3:
>   - new patch
> ---
>  README | 3 +++
>  1 file changed, 3 insertions(+)
> 
> diff --git a/README b/README
> index c8a108449e..1015a285c0 100644
> --- a/README
> +++ b/README
> @@ -48,6 +48,9 @@ provided by your OS distributor:
>        - For ARM 64-bit:
>          - GCC 5.1 or later
>          - GNU Binutils 2.24 or later
> +      - For RISC-V 64-bit:
> +        - GCC 13.2.1 or later
> +        - GNU Binutils 2.40 or later

That's pretty new. For gcc that's even newer than the newest release.
If older versions really won't do, I don't think you can leave this
unjustified (by having an empty description). Till now gcc 13.2 has
served me well, and iirc 13.1, 12.3, and 12.2 were fine, too.

Jan


From xen-devel-bounces@lists.xenproject.org Tue Jan 23 11:32:56 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 23 Jan 2024 11:32:56 +0000
Received: from list by lists.xenproject.org with outflank-mailman.670391.1043129 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSF1P-0000Kr-3Z; Tue, 23 Jan 2024 11:32:51 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 670391.1043129; Tue, 23 Jan 2024 11:32:51 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSF1P-0000Kk-08; Tue, 23 Jan 2024 11:32:51 +0000
Received: by outflank-mailman (input) for mailman id 670391;
 Tue, 23 Jan 2024 11:32:49 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=9pmr=JB=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rSF1N-0000Hy-AP
 for xen-devel@lists.xenproject.org; Tue, 23 Jan 2024 11:32:49 +0000
Received: from mail-lf1-x131.google.com (mail-lf1-x131.google.com
 [2a00:1450:4864:20::131])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 21988d86-b9e3-11ee-9b0f-b553b5be7939;
 Tue, 23 Jan 2024 12:32:46 +0100 (CET)
Received: by mail-lf1-x131.google.com with SMTP id
 2adb3069b0e04-50eaa8b447bso4526101e87.1
 for <xen-devel@lists.xenproject.org>; Tue, 23 Jan 2024 03:32:46 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 bf7-20020a056e02308700b0036276f84d46sm1868240ilb.23.2024.01.23.03.32.44
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 23 Jan 2024 03:32:45 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 21988d86-b9e3-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1706009566; x=1706614366; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=HgRhZcxI50mxvrzi+a46dIBBGImG0UkGU3Dy6uBtnRw=;
        b=VnKL0fGW8DAUVPQYHO2n0oaFSWKKON0UPYmAQH+CABjpjMZYwAGAhZPxqxyIzf7jBH
         iA8+VJPnQkOcujnpp2s+klnR/weXeg1eYtpI4EhA+VAp+eXOS//fxNRc/QAxMUYe8Ib6
         OwJ2AaRiRcAwXJQh41UoAuT8+bjD7Jtj9d4hByoyOAWbaX1JDpCFJVdC/ebkUM3prKL9
         m2STmNNGghPW5x02SfssYvkfrcoYXaVJwtwR1gwbB9Cb/VY7W1y3vhd8kQIBEq3athvP
         VEnreOFQwT+0jWldYJ6QYBEXgugENqcHMi7EGVzmODSR5TYIN9gsn4cBWvjaYhy/dAOu
         EMyA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706009566; x=1706614366;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=HgRhZcxI50mxvrzi+a46dIBBGImG0UkGU3Dy6uBtnRw=;
        b=DrREHbkgcj35D/pIU7/JfVkgQYwGbIZojFPS5gMWGbMId4EmC5wMpzGOKXNMolzmig
         HQrxibihnY6eCzFo95cqf5CVV4C1ae75mh0ed/zSODWpxDclHKsDCj7IlMOmMgOGEqfB
         1pysF3Pm9086k0tb14EqrAXcvo1J+adI6xjS3Ffcj62wml4Di6H3dlMeyiDbbxmrQ9g6
         0N/8MAB1BG5VHA6BEsTPj7qjvvZcJuaYYcDS39l8MnybIQfnBk6MaZG+3CthsQHbJTbP
         YsQN3EtWSZRYrdhMROWDc1F1skVhWw6xgyiWW+Z48F8LAmVEzMrvaOTuG60rL5hWbzcc
         dXNw==
X-Gm-Message-State: AOJu0Yz9XwjU2ZLneDLsdmmwFxlSx1u34sVnF56Or7CHAcrD1UybL6uY
	3NyIyJbeC13Qxzii4UjHdWpKp6cL0YHreu4ynYv1He4m3CbaVHBi6RwMc0MSyg==
X-Google-Smtp-Source: AGHT+IGw5hCFeKJ3I15NaOIjvTQHVKO4VDU8XoveTeI7t2uEa8ijajFGWnP6m9HtZbUEm6WSmbjaEA==
X-Received: by 2002:a05:6512:15a4:b0:50e:4fcb:dc28 with SMTP id bp36-20020a05651215a400b0050e4fcbdc28mr1611581lfb.35.1706009566337;
        Tue, 23 Jan 2024 03:32:46 -0800 (PST)
Message-ID: <39837f92-d139-49c3-9e5f-a79dd585f050@suse.com>
Date: Tue, 23 Jan 2024 12:32:42 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 27/34] xen/riscv: define an address of frame table
Content-Language: en-US
To: Oleksii Kurochko <oleksii.kurochko@gmail.com>
Cc: Alistair Francis <alistair.francis@wdc.com>,
 Bob Eshleman <bobbyeshleman@gmail.com>, Connor Davis
 <connojdavis@gmail.com>, Andrew Cooper <andrew.cooper3@citrix.com>,
 George Dunlap <george.dunlap@citrix.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>,
 xen-devel@lists.xenproject.org
References: <cover.1703255175.git.oleksii.kurochko@gmail.com>
 <d0a357e3b9597479b539e88915731b3f15489c04.1703255175.git.oleksii.kurochko@gmail.com>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <d0a357e3b9597479b539e88915731b3f15489c04.1703255175.git.oleksii.kurochko@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 22.12.2023 16:13, Oleksii Kurochko wrote:
> Also, the patch adds some helpful macros that assist in avoiding
> the redefinition of memory layout for each MMU mode.
> 
> Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>
> ---
> Changes in V3:
>  - drop OFFSET_BITS, and use PAGE_SHIFT instead.
>  - code style fixes.
>  - add comment how macros are useful.
>  - move all memory related layout definitions close to comment with memory layout description.
>  - make memory layout description generic for any MMU mode.
> ---
> Changes in V2:
>  - Nothing changed. Only rebase.
> ---
>  xen/arch/riscv/include/asm/config.h | 85 +++++++++++++++++++----------
>  1 file changed, 55 insertions(+), 30 deletions(-)
> 
> diff --git a/xen/arch/riscv/include/asm/config.h b/xen/arch/riscv/include/asm/config.h
> index f0544c6a20..fb9fc9daaa 100644
> --- a/xen/arch/riscv/include/asm/config.h
> +++ b/xen/arch/riscv/include/asm/config.h
> @@ -6,6 +6,14 @@
>  #include <xen/const.h>
>  #include <xen/page-size.h>
>  
> +#ifdef CONFIG_RISCV_64
> +#define CONFIG_PAGING_LEVELS 3
> +#define RV_STAGE1_MODE SATP_MODE_SV39
> +#else
> +#define CONFIG_PAGING_LEVELS 2
> +#define RV_STAGE1_MODE SATP_MODE_SV32
> +#endif
> +
>  /*
>   * RISC-V64 Layout:
>   *
> @@ -22,25 +30,56 @@
>   *
>   * It means that:
>   *   top VA bits are simply ignored for the purpose of translating to PA.
> +#endif
>   *
> - * ============================================================================
> - *    Start addr    |   End addr        |  Size  | Slot       |area description
> - * ============================================================================
> - * FFFFFFFFC0800000 |  FFFFFFFFFFFFFFFF |1016 MB | L2 511     | Unused
> - * FFFFFFFFC0600000 |  FFFFFFFFC0800000 |  2 MB  | L2 511     | Fixmap
> - * FFFFFFFFC0200000 |  FFFFFFFFC0600000 |  4 MB  | L2 511     | FDT
> - * FFFFFFFFC0000000 |  FFFFFFFFC0200000 |  2 MB  | L2 511     | Xen
> - *                 ...                  |  1 GB  | L2 510     | Unused
> - * 0000003200000000 |  0000007F80000000 | 309 GB | L2 200-509 | Direct map
> - *                 ...                  |  1 GB  | L2 199     | Unused
> - * 0000003100000000 |  00000031C0000000 |  3 GB  | L2 196-198 | Frametable
> - *                 ...                  |  1 GB  | L2 195     | Unused
> - * 0000003080000000 |  00000030C0000000 |  1 GB  | L2 194     | VMAP
> - *                 ...                  | 194 GB | L2 0 - 193 | Unused
> - * ============================================================================
> + *       SATP_MODE_SV32   | SATP_MODE_SV39   | SATP_MODE_SV48   | SATP_MODE_SV57
> + *      ==================|==================|==================|=================
> + * BA0 | FFFFFFFFFFE00000 | FFFFFFFFC0000000 | FFFFFF8000000000 | FFFF000000000000
> + * BA1 | 0000000019000000 | 0000003200000000 | 0000640000000000 | 00C8000000000000
> + * BA2 | 0000000018800000 | 0000003100000000 | 0000620000000000 | 00C4000000000000
> + * BA3 | 0000000018400000 | 0000003080000000 | 0000610000000000 | 00C2000000000000
>   *
> -#endif
> + * ===============================================================================
> + * Start addr     |   End addr          |  Size  | Root PT slot | Area description
> + * ===============================================================================
> + * BA0 + 0x800000 |  FFFFFFFFFFFFFFFF   |1016 MB |     511      | Unused
> + * BA0 + 0x400000 |  BA0 + 0x800000     |  2 MB  |     511      | Fixmap
> + * BA0 + 0x200000 |  BA0 + 0x400000     |  4 MB  |     511      | FDT
> + * BA0            |  BA0 + 0x200000     |  2 MB  |     511      | Xen
> + *                 ...                  |  1 GB  |     510      | Unused
> + * BA1 + 0x000000 |  BA1 + 0x4D80000000 | 309 GB |   200-509    | Direct map

This definitely can't be right for SV32. Others may be problematic,
too, like ...

> + *                 ...                  |  1 GB  |     199      | Unused
> + * BA2 + 0x000000 |  BA2 + 0xC0000000   |  3 GB  |   196-198    | Frametable

... this one. Otoh I'd expect both to potentially be much larger in
SV48 and SV57 modes.

> + *                 ...                  |  1 GB  |     195      | Unused
> + * BA3 + 0x000000 |  BA3 + 0x40000000   |  1 GB  |     194      | VMAP
> + *                 ...                  | 194 GB |   0 - 193    | Unused
> + * ===============================================================================
>   */
> +#define VPN_BITS    (9)

This need to move ...

> +#define HYP_PT_ROOT_LEVEL (CONFIG_PAGING_LEVELS - 1)
> +
> +#ifdef CONFIG_RISCV_64

... here, I think, for not being applicable to SV32?

> +#define SLOTN_ENTRY_BITS        (HYP_PT_ROOT_LEVEL * VPN_BITS + PAGE_SHIFT)
> +#define SLOTN(slot)             (_AT(vaddr_t, slot) << SLOTN_ENTRY_BITS)
> +#define SLOTN_ENTRY_SIZE        SLOTN(1)

Do you have any example of how/where this going to be used?

> +#define XEN_VIRT_START 0xFFFFFFFFC0000000 /* (_AC(-1, UL) + 1 - GB(1)) */

Won't /* -GB(1) */ do, thus allowing the line to also be padded such that
it matches neighboring ones in layout?

Jan

> +#define FRAMETABLE_VIRT_START   SLOTN(196)
> +#define FRAMETABLE_SIZE         GB(3)
> +#define FRAMETABLE_NR           (FRAMETABLE_SIZE / sizeof(*frame_table))
> +#define FRAMETABLE_VIRT_END     (FRAMETABLE_VIRT_START + FRAMETABLE_SIZE - 1)
> +
> +#define VMAP_VIRT_START         SLOTN(194)
> +#define VMAP_VIRT_SIZE          GB(1)
>[...]



From xen-devel-bounces@lists.xenproject.org Tue Jan 23 11:35:10 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 23 Jan 2024 11:35:10 +0000
Received: from list by lists.xenproject.org with outflank-mailman.670395.1043139 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSF3d-0000xt-Jk; Tue, 23 Jan 2024 11:35:09 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 670395.1043139; Tue, 23 Jan 2024 11:35:09 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSF3d-0000xm-Gx; Tue, 23 Jan 2024 11:35:09 +0000
Received: by outflank-mailman (input) for mailman id 670395;
 Tue, 23 Jan 2024 11:35:08 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=9pmr=JB=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rSF3b-0000xg-WE
 for xen-devel@lists.xenproject.org; Tue, 23 Jan 2024 11:35:08 +0000
Received: from mail-lf1-x12b.google.com (mail-lf1-x12b.google.com
 [2a00:1450:4864:20::12b])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 7528d329-b9e3-11ee-98f4-6d05b1d4d9a1;
 Tue, 23 Jan 2024 12:35:07 +0100 (CET)
Received: by mail-lf1-x12b.google.com with SMTP id
 2adb3069b0e04-5100c3f7df1so125584e87.0
 for <xen-devel@lists.xenproject.org>; Tue, 23 Jan 2024 03:35:06 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 x8-20020a026f08000000b0046e7ae3fea8sm3655326jab.148.2024.01.23.03.35.04
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 23 Jan 2024 03:35:06 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 7528d329-b9e3-11ee-98f4-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1706009706; x=1706614506; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=cusn68H+aGQpnnIylnk+29fUCequDEJhNWvww3NGtHA=;
        b=TiJEGXMtdwQQYFwdX3XWkGtlD+6FAQ8OhdOtsOde5IrtvjFLM+o4HCPu8nX0CKRquB
         RPF4iru1zntW+RXZNRGQmQadeZ1s9NBZTCOYae9gBUSdaKmLQsXrqyfiAPU6MOm6RL4X
         pq8uOeQX9XhihIJLTCl4TD4qYMWDKRHMhfZSxRT7a7yQ105uyR4GAMN6qzuc1AlfKh6f
         rOxZhNtPfS9DqRgArWG7p6uakYUovdR6zmmhK0KpPKRpu/HJ/tCAiGCH8nYyMwUeCr1h
         6Ein3VJWRc9qHlvmOEpnbZWTk64VL6EG2zkueWyChmtdUhX16ZkYTpRAFQpSU0+yXCS3
         rUMw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706009706; x=1706614506;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=cusn68H+aGQpnnIylnk+29fUCequDEJhNWvww3NGtHA=;
        b=jbDDPd4zFx/VcaJYVGKzQXPF5iq0jfg+683XfLhBMB0DQQrWX4uQigpxdj551HyFVw
         sx3cZ4IaaAJ9FC8IxjZm2ZP+zgYhCAuQfkkZvU2aMeY/8q9ZuyQgxDyjhdmIk+0iSI9c
         Q2liDzOiV7X4M4fpjl1lB1VSc3Sbtjvh13CRXo6jmGkG8tyiiaB3eLH0K1+A+DZXZAMv
         1C9PdaBOkFrBLlyFNkkf+HJasWdLwQyEUw6knrIUGoXEZquNYHw+C6lMtAt5XQGAXeqN
         lkojAWOOVqqX+bCGmy+Lo2NwmHfoLAA5cY3LBaBSaSFOEL3enDqhdwS5aK6va8+7nXAG
         SaJA==
X-Gm-Message-State: AOJu0Yz6IGq5AWVgUH/mb5Vy2y2h0dDCm9BeLOlCuHRtDemUTRa1ZLol
	ZqlFm+Y4EU5WiaJe8SBynhy4YHusKWC6rHJ0FLyp9exTvef6mJGDdhcTdsawHLW9Zklp1oyWHKc
	=
X-Google-Smtp-Source: AGHT+IErKQItdOt5rJBBbJjz3cQh7m0J2piWzbJSTpC2rUbYBQQaMn+DdovbqP1RvC82zDMOtfD7jw==
X-Received: by 2002:a05:6512:31c7:b0:50e:4e5f:6700 with SMTP id j7-20020a05651231c700b0050e4e5f6700mr2757494lfe.103.1706009706617;
        Tue, 23 Jan 2024 03:35:06 -0800 (PST)
Message-ID: <61450f5d-a723-4126-8e00-6e7155547e99@suse.com>
Date: Tue, 23 Jan 2024 12:35:02 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 28/34] xen/riscv: add required things to current.h
Content-Language: en-US
To: Oleksii Kurochko <oleksii.kurochko@gmail.com>
Cc: Alistair Francis <alistair.francis@wdc.com>,
 Bob Eshleman <bobbyeshleman@gmail.com>, Connor Davis
 <connojdavis@gmail.com>, Andrew Cooper <andrew.cooper3@citrix.com>,
 George Dunlap <george.dunlap@citrix.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>,
 xen-devel@lists.xenproject.org
References: <cover.1703255175.git.oleksii.kurochko@gmail.com>
 <8fd8d3652eafabf5f5586de91d97ecae077b90ea.1703255175.git.oleksii.kurochko@gmail.com>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <8fd8d3652eafabf5f5586de91d97ecae077b90ea.1703255175.git.oleksii.kurochko@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 22.12.2023 16:13, Oleksii Kurochko wrote:> --- a/xen/arch/riscv/include/asm/current.h
> +++ b/xen/arch/riscv/include/asm/current.h
> @@ -3,6 +3,21 @@
>  #ifndef __ASM_CURRENT_H
>  #define __ASM_CURRENT_H
>  
> +#include <xen/bug.h>
> +#include <xen/percpu.h>
> +#include <asm/processor.h>
> +
> +#ifndef __ASSEMBLY__
> +
> +/* Which VCPU is "current" on this PCPU. */
> +DECLARE_PER_CPU(struct vcpu *, curr_vcpu);
> +
> +#define current            this_cpu(curr_vcpu)
> +#define set_current(vcpu)  do { current = (vcpu); } while (0)
> +#define get_cpu_current(cpu)  per_cpu(curr_vcpu, cpu)
> +
> +#define guest_cpu_user_regs() ({ BUG(); NULL; })

Again with this changed to the "canonical" placeholder:
Acked-by: Jan Beulich <jbeulich@suse.com>

Jan


From xen-devel-bounces@lists.xenproject.org Tue Jan 23 11:36:35 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 23 Jan 2024 11:36:35 +0000
Received: from list by lists.xenproject.org with outflank-mailman.670398.1043148 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSF4z-0001Uz-UK; Tue, 23 Jan 2024 11:36:33 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 670398.1043148; Tue, 23 Jan 2024 11:36:33 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSF4z-0001Uq-Rm; Tue, 23 Jan 2024 11:36:33 +0000
Received: by outflank-mailman (input) for mailman id 670398;
 Tue, 23 Jan 2024 11:36:33 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=9pmr=JB=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rSF4z-0001Uk-I2
 for xen-devel@lists.xenproject.org; Tue, 23 Jan 2024 11:36:33 +0000
Received: from mail-lj1-x22a.google.com (mail-lj1-x22a.google.com
 [2a00:1450:4864:20::22a])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id a79ecd3d-b9e3-11ee-9b0f-b553b5be7939;
 Tue, 23 Jan 2024 12:36:31 +0100 (CET)
Received: by mail-lj1-x22a.google.com with SMTP id
 38308e7fff4ca-2cd1a1c5addso49195591fa.1
 for <xen-devel@lists.xenproject.org>; Tue, 23 Jan 2024 03:36:31 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 x8-20020a026f08000000b0046e7ae3fea8sm3655326jab.148.2024.01.23.03.36.29
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 23 Jan 2024 03:36:30 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: a79ecd3d-b9e3-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1706009791; x=1706614591; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=gR2W2+aUmN73hKzxOAqCNHrTKCX2JPE9i3JZ6u0A0a4=;
        b=BJZy/OgSKMFNNS0EVrY/C92p/+VFcqsI6g2vfN8zDHSWin0pp1msdELlF7WzULVpP1
         T1n3hbpHBrQsOTDi5BXdNJE5eG+bj1xN2zJvy0SEIqAXHU/GDPTJxU3a+PMg8jrr+xJt
         WUI3ZeccK07LS/dBOy4HSvQ1fraMUL6FNQ3GmzFO74qkX4nqxTg5zIKtT27Q+yKOnQ+t
         kSxRZUKTBMAziSiT4GAiNJi5BoDKvdMlVAqJKrA/UVPyUJagbpm7367cee6Rx1F8baX8
         J3CSa8qZooDY3qjdjuMy4i4uVBIOSHdba4mRZo/Cs2lTv8zIHgVjngUQUtH4saB5d4Iz
         tbcg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706009791; x=1706614591;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=gR2W2+aUmN73hKzxOAqCNHrTKCX2JPE9i3JZ6u0A0a4=;
        b=vKAvmVew8ZshteeLMesRHKVBz023/sozi0b0c6jq8nWHIGj03EMOvG8AXjEcWuWpaU
         S+Yzsrwljy0OvM6n93SUap9VbgrtZoXeXLzHpPUQizdedF0ClCvDU9KOZbtkG1ZQVwTg
         BLHoyj5HpcdzakVTFvet/Ee76fT5LVip9FkzDHy4bLq3Qx/1+Xs9ZlwKZrTtV6DyM2Hk
         S9dhnB9giEU+LWRWxk/mIm2C8MWRvN/uv+Lk6ZQYcwTTdKcwc9OAsNe+3+f1xJ2d1W5m
         rHvAA2ZNrFpLezgtHax5qTjZTFtCn2eDT5mxFOKGuNNARwuCCgWXguCBdpYXWQ422LJa
         MvKw==
X-Gm-Message-State: AOJu0YzOLV5o2bf4JnBmJ/f5bS4hFyi6MbpwXAWm80RJVnOqLNUc6QRd
	G/PIa8Whn++SQRd7BAlcjl3yfpnRV2iLoc5L6N8gFOvBKivd1gF6hRVp04E2yQ==
X-Google-Smtp-Source: AGHT+IFjcCH211PcePi1YWBKCZpQcCUNJIyOegNwlyFRaK9Ct4H9/P+WocGlQLWpr3pRbTEVTL0Tew==
X-Received: by 2002:a2e:a0d7:0:b0:2cd:b6cd:f258 with SMTP id f23-20020a2ea0d7000000b002cdb6cdf258mr2445371ljm.65.1706009791261;
        Tue, 23 Jan 2024 03:36:31 -0800 (PST)
Message-ID: <0740cab9-be2e-4aae-8b03-e3ec95d0b0ef@suse.com>
Date: Tue, 23 Jan 2024 12:36:28 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 29/34] xen/riscv: add minimal stuff to page.h to build
 full Xen
Content-Language: en-US
To: Oleksii Kurochko <oleksii.kurochko@gmail.com>
Cc: Alistair Francis <alistair.francis@wdc.com>,
 Bob Eshleman <bobbyeshleman@gmail.com>, Connor Davis
 <connojdavis@gmail.com>, Andrew Cooper <andrew.cooper3@citrix.com>,
 George Dunlap <george.dunlap@citrix.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>,
 xen-devel@lists.xenproject.org
References: <cover.1703255175.git.oleksii.kurochko@gmail.com>
 <7aa26bdad9bf923fd57f7a90e41c049cab0cd5bd.1703255175.git.oleksii.kurochko@gmail.com>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <7aa26bdad9bf923fd57f7a90e41c049cab0cd5bd.1703255175.git.oleksii.kurochko@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 22.12.2023 16:13, Oleksii Kurochko wrote:
> Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>
> Acked-by: Jan Beulich <jbeulich@suse.com>
> ---
> Changes in V3:
>  - update the commit message

Once again I find this puzzling, considering there's no commit message
at all.

Jan


From xen-devel-bounces@lists.xenproject.org Tue Jan 23 11:40:12 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 23 Jan 2024 11:40:12 +0000
Received: from list by lists.xenproject.org with outflank-mailman.670401.1043159 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSF8Q-0003Xf-Ei; Tue, 23 Jan 2024 11:40:06 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 670401.1043159; Tue, 23 Jan 2024 11:40:06 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSF8Q-0003XY-AE; Tue, 23 Jan 2024 11:40:06 +0000
Received: by outflank-mailman (input) for mailman id 670401;
 Tue, 23 Jan 2024 11:40:05 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=9pmr=JB=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rSF8P-0003Fr-0V
 for xen-devel@lists.xenproject.org; Tue, 23 Jan 2024 11:40:05 +0000
Received: from mail-lj1-x236.google.com (mail-lj1-x236.google.com
 [2a00:1450:4864:20::236])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 26153c0f-b9e4-11ee-98f4-6d05b1d4d9a1;
 Tue, 23 Jan 2024 12:40:03 +0100 (CET)
Received: by mail-lj1-x236.google.com with SMTP id
 38308e7fff4ca-2cd0d05838fso49597621fa.1
 for <xen-devel@lists.xenproject.org>; Tue, 23 Jan 2024 03:40:03 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 eq20-20020a0566384e3400b0046ee630f7e6sm1069869jab.68.2024.01.23.03.40.01
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 23 Jan 2024 03:40:03 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 26153c0f-b9e4-11ee-98f4-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1706010003; x=1706614803; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=72pT3y6l6U2uDtrN2pMLqOENXODOtIeLSFYz3VS30v8=;
        b=UeU4Fr+vPm2uRGm1WZB158SoFcbi7ch/HWEacEHSspOScrJOX33DlHpUA3u1YtnLof
         nwYmjtnNGtDHECl0e+Ipz5+NZFF7ZYv5v5EFoldj2nkcXhCLhe18qzMyDc8cFc1uRqPV
         jGHXuDbM2HyNKrLDA1vzQdPG41Hq8DLHSLFPRdHECQBJtvoNxkjEu6bE4eoczjQWmmNm
         maBNQ5BFCNd+T9oG5F7E/vqlE1SAPP1kBzye9FzD/DYcH3vM0qkXNhs5AvFCUHOszFa4
         uvZBF5vve2wLzSkSR3WEexJCKJ1BDcv369HR4Uug56CoT2I7NM65eU0PMymB++o+iZO5
         56aA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706010003; x=1706614803;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=72pT3y6l6U2uDtrN2pMLqOENXODOtIeLSFYz3VS30v8=;
        b=lAaVvofJjeXyEKicjwWTgnXCqGeXMK7rEw5TFF3WZaFxg6WVVGp6ZnNOPL/CNI95V/
         dKnfOLotp3sfKIIVYB6J9MtMXgNKoZvv6/CsE9sOJFcTAJRQ57Qt3LXBXZTj+dwgekV7
         M/K9WmSQ8zOCFnPzOOL8/4tY3RDlxdstEXsCpUv1db0GfPPffvbDHeq4cMXz7z/h8HJw
         MKcqH7upYKGX+3qalQZd9IwOsyv2OclNXXkuFYhQ8kfmV/93IHGDqEFdLEVag1rA2S+b
         RrB+k+YabrETZbO6QHHwYa+kJPG+uK6vqHERnESiqFjg4ynT3NkphjZi6vjAdCW23pOf
         z8ug==
X-Gm-Message-State: AOJu0YxNw/wAi43623iKic/3g8pMu2rA78toqQNynk+3LYDkHnukX1df
	TEp5o/6ZUhdyKa/9y0linITLFu7BaKBFTyFWDjG4dqldXFjD2QyQSqId9pM5Aw==
X-Google-Smtp-Source: AGHT+IF8LUrdePdmT1dzzIL9r9hgZsl1TRHUoPu1eRAYq/bW66VS3VClL6pb5AeCqp+pQ1MZctPKqw==
X-Received: by 2002:a2e:a615:0:b0:2cd:122a:7edd with SMTP id v21-20020a2ea615000000b002cd122a7eddmr2202994ljp.44.1706010003386;
        Tue, 23 Jan 2024 03:40:03 -0800 (PST)
Message-ID: <aa4d18c5-a8e0-44a6-ae7e-16fd9cd029b4@suse.com>
Date: Tue, 23 Jan 2024 12:39:59 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 30/34] xen/riscv: add minimal stuff to processor.h to
 build full Xen
Content-Language: en-US
To: Oleksii Kurochko <oleksii.kurochko@gmail.com>
Cc: Alistair Francis <alistair.francis@wdc.com>,
 Bob Eshleman <bobbyeshleman@gmail.com>, Connor Davis
 <connojdavis@gmail.com>, Andrew Cooper <andrew.cooper3@citrix.com>,
 George Dunlap <george.dunlap@citrix.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>,
 xen-devel@lists.xenproject.org
References: <cover.1703255175.git.oleksii.kurochko@gmail.com>
 <5bd7c5db6638f09dabdc13a6e12f0b204eacb234.1703255175.git.oleksii.kurochko@gmail.com>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <5bd7c5db6638f09dabdc13a6e12f0b204eacb234.1703255175.git.oleksii.kurochko@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 22.12.2023 16:13, Oleksii Kurochko wrote:
> Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>
> ---
> Changes in V3:
>  - Update the commit message

??? (again)

> @@ -53,6 +56,18 @@ struct cpu_user_regs
>      unsigned long pregs;
>  };
>  
> +/* TODO: need to implement */
> +#define cpu_to_core(cpu)   (0)
> +#define cpu_to_socket(cpu) (0)
> +
> +static inline void cpu_relax(void)
> +{
> +    /* Encoding of the pause instruction */
> +    __asm__ __volatile__ ( ".insn 0x100000F" );

binutils 2.40 knows "pause" - why use .insn then?

> +    barrier();

Why?

Jan


From xen-devel-bounces@lists.xenproject.org Tue Jan 23 11:47:27 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 23 Jan 2024 11:47:27 +0000
Received: from list by lists.xenproject.org with outflank-mailman.670409.1043169 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSFFR-00050n-4E; Tue, 23 Jan 2024 11:47:21 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 670409.1043169; Tue, 23 Jan 2024 11:47:21 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSFFR-00050g-1W; Tue, 23 Jan 2024 11:47:21 +0000
Received: by outflank-mailman (input) for mailman id 670409;
 Tue, 23 Jan 2024 11:47:19 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>) id 1rSFFP-00050a-NU
 for xen-devel@lists.xenproject.org; Tue, 23 Jan 2024 11:47:19 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rSFFK-0005Z1-Uj; Tue, 23 Jan 2024 11:47:14 +0000
Received: from [15.248.3.94] (helo=[10.24.67.38])
 by xenbits.xenproject.org with esmtpsa
 (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rSFFK-0006uS-Ln; Tue, 23 Jan 2024 11:47:14 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
	s=20200302mail; h=Content-Transfer-Encoding:Content-Type:In-Reply-To:From:
	References:Cc:To:Subject:MIME-Version:Date:Message-ID;
	bh=Icpm85/cqww0Up29YWZATEFcwpEy3O2L3gB4f5rNPQQ=; b=n6CoEc+WTm9P6qD9gPWIwEK/gH
	Fy8wNZTpT3TLOWJewjMjpx1hWgaAEj5r7/mXypIWSUNJQ+A0jk5wqfY4S/mxHfqUpDM1XlvStO5/y
	BzLTMMo11XbsPXCq4bHtWgCHsGAGdHNnpfIDeRaT2lI9cZbwwy1K2VF3EsBcKoRh0h8I=;
Message-ID: <11258371-d386-4693-90b1-8ea29f07e17b@xen.org>
Date: Tue, 23 Jan 2024 11:47:11 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v5 09/13] xen: add cache coloring allocator for domains
To: Carlo Nonato <carlo.nonato@minervasys.tech>,
 Jan Beulich <jbeulich@suse.com>
Cc: Stefano Stabellini <sstabellini@kernel.org>,
 Bertrand Marquis <bertrand.marquis@arm.com>,
 Michal Orzel <michal.orzel@amd.com>,
 Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
 Andrew Cooper <andrew.cooper3@citrix.com>,
 George Dunlap <george.dunlap@citrix.com>, Wei Liu <wl@xen.org>,
 Marco Solieri <marco.solieri@minervasys.tech>, xen-devel@lists.xenproject.org
References: <20240102095138.17933-1-carlo.nonato@minervasys.tech>
 <20240102095138.17933-10-carlo.nonato@minervasys.tech>
 <7fbe9526-60cf-4844-8b48-58ab69ec1b29@suse.com>
 <101c638c-03ee-471b-a6c8-9c2c10772001@suse.com>
 <CAG+AhRXctKrh8UcLsygA8aoiVkc8HaOqG-gNOwtmJyjebhDU2A@mail.gmail.com>
Content-Language: en-GB
From: Julien Grall <julien@xen.org>
In-Reply-To: <CAG+AhRXctKrh8UcLsygA8aoiVkc8HaOqG-gNOwtmJyjebhDU2A@mail.gmail.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit

Hi Carlo,

On 18/01/2024 14:27, Carlo Nonato wrote:
> On Tue, Jan 9, 2024 at 11:33 AM Jan Beulich <jbeulich@suse.com> wrote:
>>
>> On 09.01.2024 11:28, Jan Beulich wrote:
>>> On 02.01.2024 10:51, Carlo Nonato wrote:
>>>> v5:
>>>> - Carlo Nonato as the new author
>>>> - the colored allocator balances color usage for each domain and it searches
>>>>    linearly only in the number of colors (FIXME removed)
>>>
>>> While this addresses earlier concerns, meanwhile NUMA work has also
>>> been progressing. What's the plan of interaction of coloring with it?
>>
>> Thinking of interactions - what about static memory? Is coloring incompatible
>> with that? If so, should the two features be excluded to both be used at the
>> same time?
> 
> This was done in one of the earlier revisions. Then it was dropped because
> we thought that it would have been better to have a binary that supported both
> static memory and coloring. The only checks are done at runtime.

I actually prefer the runtime checks if they are not too complicated. 
This would allow distro to ship a generic Xen where user can play with 
various (incompatible) configuration without any rebuild.

Cheers,

-- 
Julien Grall


From xen-devel-bounces@lists.xenproject.org Tue Jan 23 12:19:11 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 23 Jan 2024 12:19:11 +0000
Received: from list by lists.xenproject.org with outflank-mailman.670428.1043178 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSFk0-00056z-SP; Tue, 23 Jan 2024 12:18:56 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 670428.1043178; Tue, 23 Jan 2024 12:18:56 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSFk0-00056s-Ph; Tue, 23 Jan 2024 12:18:56 +0000
Received: by outflank-mailman (input) for mailman id 670428;
 Tue, 23 Jan 2024 12:18:56 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=OrDF=JB=gmail.com=oleksii.kurochko@srs-se1.protection.inumbo.net>)
 id 1rSFk0-00056m-0l
 for xen-devel@lists.xenproject.org; Tue, 23 Jan 2024 12:18:56 +0000
Received: from mail-ej1-x62c.google.com (mail-ej1-x62c.google.com
 [2a00:1450:4864:20::62c])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 91cef9ae-b9e9-11ee-9b0f-b553b5be7939;
 Tue, 23 Jan 2024 13:18:52 +0100 (CET)
Received: by mail-ej1-x62c.google.com with SMTP id
 a640c23a62f3a-a30359b97a8so235343566b.0
 for <xen-devel@lists.xenproject.org>; Tue, 23 Jan 2024 04:18:52 -0800 (PST)
Received: from [192.168.206.239] ([94.75.70.14])
 by smtp.gmail.com with ESMTPSA id
 ps10-20020a170906bf4a00b00a27a32e6502sm2036431ejb.117.2024.01.23.04.18.50
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 23 Jan 2024 04:18:51 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 91cef9ae-b9e9-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1706012331; x=1706617131; darn=lists.xenproject.org;
        h=mime-version:user-agent:content-transfer-encoding:references
         :in-reply-to:date:cc:to:from:subject:message-id:from:to:cc:subject
         :date:message-id:reply-to;
        bh=4CjVLzPOLzwmy7S8D/hKfUtb6n7oZUbVcL1snzkYAVo=;
        b=W7JzqpoBatSv6e04+J9bZoInJXeoXCrd+QRgh+JQWVYkASjpag8IWX4cX/a3Eb2d38
         25P0/eBstEen8heBk2BE9DHyntKiK0s9WMkBiuCzoH/f90LADrnlzr3R8mcws3xtPReU
         o/ZGXuz0UZEHAoeluLbG5yoPa01COdJzWo0PEiMXFk4Jevz82qKHy8Wwz/rggSRN7/DF
         /KT5FHP7nwI3uZ17PIel6drY7hG6KHt9rKGu5YurERgOHasSt+qw+VNseiIQAXE29lqs
         VfdNRp+XwiMEvB5j8AsslBeBZRec8gMOHYOhkAQUHNfwC7CX5zrHuy7CMNjx2W00Q7Ly
         4zGQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706012331; x=1706617131;
        h=mime-version:user-agent:content-transfer-encoding:references
         :in-reply-to:date:cc:to:from:subject:message-id:x-gm-message-state
         :from:to:cc:subject:date:message-id:reply-to;
        bh=4CjVLzPOLzwmy7S8D/hKfUtb6n7oZUbVcL1snzkYAVo=;
        b=YXRQTFW1VJCOJfdZm1OI4vNZTnp+WbY+ey+6eNqP5uyx64Dktkuoikjjr0NmvCyftq
         EGfMGvuwaColhqpaVxstV554AQANY9cMXmIwFzZLVkyi/XVo+8lepXmkMQaiy6PMbhDI
         ITIU/nm8ojZpEGnjDxKtaBr4WwHirVPtMJWTfG+UnCbj94LBsGaCaGpqVwJ1tKl4IvPf
         1/sZYI+/MatExjTC/VCcGZYndJ3eJx398GRlteYs6HUyr+jpdLH4DBbndUaPcLc4R5pl
         zUe/3RpzwqJGZEc9a30V7BB7TMktFTLZOUDFqb7gVIl5QSosCKKgdF4zS1/F/nC7UVFe
         8qaQ==
X-Gm-Message-State: AOJu0YxpIdQN7dcDaqPFWYWBdVPa1PvazndtR6Yt2Y9eUkJuLhRJY0Ax
	BcWWuHELgIMeTnpgkPyg8toJIHtkjYvjGkNDvCs7mi74t2nMD21f
X-Google-Smtp-Source: AGHT+IH05LRRdtCwGtLJrUZUfOcEhUMV0SV/NjIxhuubGEjxMf+v8KC9q0qsID5olfCf9gxK8NuUHg==
X-Received: by 2002:a17:906:ba8c:b0:a28:d1f9:976 with SMTP id cu12-20020a170906ba8c00b00a28d1f90976mr3355660ejd.65.1706012331375;
        Tue, 23 Jan 2024 04:18:51 -0800 (PST)
Message-ID: <835c58c1deb89db2fa500bd7cd767facd5b5fb78.camel@gmail.com>
Subject: Re: [PATCH v3 13/34] xen/riscv: introduce cmpxchg.h
From: Oleksii <oleksii.kurochko@gmail.com>
To: Jan Beulich <jbeulich@suse.com>
Cc: Alistair Francis <alistair.francis@wdc.com>, Bob Eshleman
 <bobbyeshleman@gmail.com>, Connor Davis <connojdavis@gmail.com>, Andrew
 Cooper <andrew.cooper3@citrix.com>, George Dunlap
 <george.dunlap@citrix.com>,  Julien Grall <julien@xen.org>, Stefano
 Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>, 
 xen-devel@lists.xenproject.org
Date: Tue, 23 Jan 2024 14:18:50 +0200
In-Reply-To: <c5872ae0-a26a-4f51-bad6-08fd0c37d488@suse.com>
References: <cover.1703255175.git.oleksii.kurochko@gmail.com>
	 <214bfd61c8ccf2a5b2c640b815ebfa6a705f6234.1703255175.git.oleksii.kurochko@gmail.com>
	 <8ee35a76-f3ef-4143-93ef-8e6089f82a80@suse.com>
	 <56c23efdd79c0b1393ceef1adfcb45f66d4d1cf6.camel@gmail.com>
	 <c5872ae0-a26a-4f51-bad6-08fd0c37d488@suse.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: base64
User-Agent: Evolution 3.50.2 (3.50.2-1.fc39) 
MIME-Version: 1.0

T24gVHVlLCAyMDI0LTAxLTIzIGF0IDExOjI4ICswMTAwLCBKYW4gQmV1bGljaCB3cm90ZToKPiBP
biAyMy4wMS4yMDI0IDExOjE1LCBPbGVrc2lpIHdyb3RlOgo+ID4gT24gTW9uLCAyMDI0LTAxLTIy
IGF0IDE3OjI3ICswMTAwLCBKYW4gQmV1bGljaCB3cm90ZToKPiA+ID4gT24gMjIuMTIuMjAyMyAx
NjoxMiwgT2xla3NpaSBLdXJvY2hrbyB3cm90ZToKPiA+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKg
wqDCoCA6ICI9ciIgKHJldF9fKSwgIitBIiAoKnB0cl9fKSBcCj4gPiA+ID4gK8KgwqDCoMKgwqDC
oMKgwqDCoMKgwqAgOiAiciIgKG5ld19fKSBcCj4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg
wqAgOiAibWVtb3J5IiApOyBcCj4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgIGJyZWFrOyBcCj4gPiA+
ID4gK8KgwqDCoCBjYXNlIDg6IFwKPiA+ID4gPiArwqDCoMKgwqDCoMKgwqAgYXNtIHZvbGF0aWxl
KCBcCj4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgIglhbW9zd2FwLmQgJTAsICUyLCAl
MVxuIiBcCj4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgOiAiPXIiIChyZXRfXyksICIr
QSIgKCpwdHJfXykgXAo+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDogInIiIChuZXdf
XykgXAo+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDogIm1lbW9yeSIgKTsgXAo+ID4g
PiA+ICvCoMKgwqDCoMKgwqDCoCBicmVhazsgXAo+ID4gPiA+ICvCoMKgwqAgZGVmYXVsdDogXAo+
ID4gPiA+ICvCoMKgwqDCoMKgwqDCoCBBU1NFUlRfVU5SRUFDSEFCTEUoKTsgXAo+ID4gPiAKPiA+
ID4gSWYgYXQgYWxsIHBvc3NpYmxlIHRoaXMgd2FudHMgdG8gdHJpZ2dlciBhIGJ1aWxkIGZhaWx1
cmUsIG5vdCBhCj4gPiA+IHJ1bnRpbWUKPiA+ID4gb25lLgo+ID4gSSdsbCB1cGRhdGUgdGhhdCB3
aXRoIEJVSUxEX0JVR19PTihzaXplID4gOCk7Cj4gCj4gV2hhdCBhYm91dCBzaXplIGFjY2lkZW50
YWxseSBiZWluZyBlLmcuIDU/IEknbSBhbHNvIG5vdCBzdXJlIHlvdSdsbAo+IGJlCj4gYWJsZSB0
byB1c2UgQlVJTERfQlVHX09OKCkgaGVyZTogVGhhdCdsbCBkZXBlbmQgb24gd2hhdCB1c2Ugc2l0
ZXMKPiB0aGVyZQo+IGFyZS4gQW5kIGlmIGFsbCBwcmVzZW50IG9uZXMgYXJlIG9rYXkgaW4gdGhp
cyByZWdhcmQsIHlvdSdkIHN0aWxsIHNldAo+IG91dCBhIHRyYXAgZm9yIHNvbWVvbmUgZWxzZSB0
byBmYWxsIGludG8gbGF0ZXIuIFdlIGhhdmUgYSBjb21tb24KPiBhcHByb2FjaCBmb3IgdGhpcywg
d2hpY2ggY3VycmVudGx5IGlzIHVuZGVyIHJlLXdvcmsuIFNlZQo+IGh0dHBzOi8vbGlzdHMueGVu
Lm9yZy9hcmNoaXZlcy9odG1sL3hlbi1kZXZlbC8yMDI0LTAxL21zZzAxMTE1Lmh0bWwuClRoYW5r
cy4gSSdsbCB1c2UgdGhhdC4KCj4gCj4gPiA+ID4gK8KgwqDCoCB9IFwKPiA+ID4gPiArwqDCoMKg
IHJldF9fOyBcCj4gPiA+ID4gK30pCj4gPiA+ID4gKwo+ID4gPiA+ICsjZGVmaW5lIHhjaGdfcmVs
YXhlZChwdHIsIHgpIFwKPiA+ID4gPiArKHsgXAo+ID4gPiA+ICvCoMKgwqAgX190eXBlb2ZfXygq
KHB0cikpIHhfID0gKHgpOyBcCj4gPiA+ID4gK8KgwqDCoCAoX190eXBlb2ZfXygqKHB0cikpKSBf
X3hjaGdfcmVsYXhlZCgocHRyKSwgeF8sCj4gPiA+ID4gc2l6ZW9mKCoocHRyKSkpOyBcCj4gPiA+
IAo+ID4gPiBOaXQ6IFN0cmF5IGJsYW5rIGFmdGVyIGNhc3QuIEZvciByZWFkYWJpbGl0eSBJJ2Qg
YWxzbyBzdWdnZXN0IHRvCj4gPiA+IGRyb3AgcGFyZW50aGVzZXMgaW4gY2FzZXMgbGlrZSB0aGUg
Zmlyc3QgYXJndW1lbnQgcGFzc2VkIHRvCj4gPiA+IF9feGNoZ19yZWxheGVkKCkgaGVyZS4KPiA+
IFRoYW5rcy4gSSdsbCB0YWtlIHRoYXQgaW50byBhY2NvdW50Lgo+ID4gCj4gPiA+IAo+ID4gPiA+
ICt9KQo+ID4gPiAKPiA+ID4gRm9yIGJvdGg6IFdoYXQgZG9lcyAicmVsYXhlZCIgZGVzY3JpYmU/
IEknbSBhc2tpbmcgYmVjYXVzZSBpdCdzCj4gPiA+IG5vdAo+ID4gPiByZWFsbHkgY2xlYXIgd2hl
dGhlciB0aGUgbWVtb3J5IGNsb2JiZXJzIGFyZSBhY3R1YWxseSBuZWVkZWQuCj4gPiA+IAo+ID4g
PiA+ICsjZGVmaW5lIF9feGNoZ19hY3F1aXJlKHB0ciwgbmV3LCBzaXplKSBcCj4gPiA+ID4gKyh7
IFwKPiA+ID4gPiArwqDCoMKgIF9fdHlwZW9mX18ocHRyKSBwdHJfXyA9IChwdHIpOyBcCj4gPiA+
ID4gK8KgwqDCoCBfX3R5cGVvZl9fKG5ldykgbmV3X18gPSAobmV3KTsgXAo+ID4gPiA+ICvCoMKg
wqAgX190eXBlb2ZfXygqKHB0cikpIHJldF9fOyBcCj4gPiA+ID4gK8KgwqDCoCBzd2l0Y2ggKHNp
emUpIFwKPiA+ID4gPiArCXsgXAo+ID4gPiA+ICvCoMKgwqAgY2FzZSA0OiBcCj4gPiA+ID4gK8Kg
wqDCoMKgwqDCoMKgIGFzbSB2b2xhdGlsZSggXAo+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDC
oMKgICIJYW1vc3dhcC53ICUwLCAlMiwgJTFcbiIgXAo+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoMKg
wqDCoMKgIFJJU0NWX0FDUVVJUkVfQkFSUklFUiBcCj4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDC
oMKgwqAgOiAiPXIiIChyZXRfXyksICIrQSIgKCpwdHJfXykgXAo+ID4gPiA+ICvCoMKgwqDCoMKg
wqDCoMKgwqDCoMKgIDogInIiIChuZXdfXykgXAo+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDC
oMKgIDogIm1lbW9yeSIgKTsgXAo+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoCBicmVhazsgXAo+ID4g
PiA+ICvCoMKgwqAgY2FzZSA4OiBcCj4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgIGFzbSB2b2xhdGls
ZSggXAo+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICIJYW1vc3dhcC5kICUwLCAlMiwg
JTFcbiIgXAo+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFJJU0NWX0FDUVVJUkVfQkFS
UklFUiBcCj4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgOiAiPXIiIChyZXRfXyksICIr
QSIgKCpwdHJfXykgXAo+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDogInIiIChuZXdf
XykgXAo+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDogIm1lbW9yeSIgKTsgXAo+ID4g
PiA+ICvCoMKgwqDCoMKgwqDCoCBicmVhazsgXAo+ID4gPiA+ICvCoMKgwqAgZGVmYXVsdDogXAo+
ID4gPiA+ICvCoMKgwqDCoMKgwqDCoCBBU1NFUlRfVU5SRUFDSEFCTEUoKTsgXAo+ID4gPiA+ICvC
oMKgwqAgfSBcCj4gPiA+ID4gK8KgwqDCoCByZXRfXzsgXAo+ID4gPiA+ICt9KQo+ID4gPiAKPiA+
ID4gSWYgSSdtIG5vdCBtaXN0YWtlbiB0aGlzIGRpZmZlcnMgZnJvbSBfX3hjaGdfcmVsYXhlZCgp
IG9ubHkgaW4KPiA+ID4gdGhlCj4gPiA+IHVzZQo+ID4gPiBvZiBSSVNDVl9BQ1FVSVJFX0JBUlJJ
RVIsIGFuZCAuLi4KPiA+ID4gCj4gPiA+ID4gKyNkZWZpbmUgeGNoZ19hY3F1aXJlKHB0ciwgeCkg
XAo+ID4gPiA+ICsoeyBcCj4gPiA+ID4gK8KgwqDCoCBfX3R5cGVvZl9fKCoocHRyKSkgeF8gPSAo
eCk7IFwKPiA+ID4gPiArwqDCoMKgIChfX3R5cGVvZl9fKCoocHRyKSkpIF9feGNoZ19hY3F1aXJl
KChwdHIpLCB4XywKPiA+ID4gPiBzaXplb2YoKihwdHIpKSk7IFwKPiA+ID4gPiArfSkKPiA+ID4g
PiArCj4gPiA+ID4gKyNkZWZpbmUgX194Y2hnX3JlbGVhc2UocHRyLCBuZXcsIHNpemUpIFwKPiA+
ID4gPiArKHsgXAo+ID4gPiA+ICvCoMKgwqAgX190eXBlb2ZfXyhwdHIpIHB0cl9fID0gKHB0cik7
IFwKPiA+ID4gPiArwqDCoMKgIF9fdHlwZW9mX18obmV3KSBuZXdfXyA9IChuZXcpOyBcCj4gPiA+
ID4gK8KgwqDCoCBfX3R5cGVvZl9fKCoocHRyKSkgcmV0X187IFwKPiA+ID4gPiArwqDCoMKgIHN3
aXRjaCAoc2l6ZSkgXAo+ID4gPiA+ICsJeyBcCj4gPiA+ID4gK8KgwqDCoCBjYXNlIDQ6IFwKPiA+
ID4gPiArwqDCoMKgwqDCoMKgwqAgYXNtIHZvbGF0aWxlICggXAo+ID4gPiA+ICvCoMKgwqDCoMKg
wqDCoMKgwqDCoMKgIFJJU0NWX1JFTEVBU0VfQkFSUklFUiBcCj4gPiA+ID4gK8KgwqDCoMKgwqDC
oMKgwqDCoMKgwqAgIglhbW9zd2FwLncgJTAsICUyLCAlMVxuIiBcCj4gPiA+ID4gK8KgwqDCoMKg
wqDCoMKgwqDCoMKgwqAgOiAiPXIiIChyZXRfXyksICIrQSIgKCpwdHJfXykgXAo+ID4gPiA+ICvC
oMKgwqDCoMKgwqDCoMKgwqDCoMKgIDogInIiIChuZXdfXykgXAo+ID4gPiA+ICvCoMKgwqDCoMKg
wqDCoMKgwqDCoMKgIDogIm1lbW9yeSIpOyBcCj4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgIGJyZWFr
OyBcCj4gPiA+ID4gK8KgwqDCoCBjYXNlIDg6IFwKPiA+ID4gPiArwqDCoMKgwqDCoMKgwqAgYXNt
IHZvbGF0aWxlICggXAo+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFJJU0NWX1JFTEVB
U0VfQkFSUklFUiBcCj4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgIglhbW9zd2FwLmQg
JTAsICUyLCAlMVxuIiBcCj4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgOiAiPXIiIChy
ZXRfXyksICIrQSIgKCpwdHJfXykgXAo+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDog
InIiIChuZXdfXykgXAo+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDogIm1lbW9yeSIp
OyBcCj4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgIGJyZWFrOyBcCj4gPiA+ID4gK8KgwqDCoCBkZWZh
dWx0OiBcCj4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgIEFTU0VSVF9VTlJFQUNIQUJMRSgpOyBcCj4g
PiA+ID4gK8KgwqDCoCB9IFwKPiA+ID4gPiArwqDCoMKgIHJldF9fOyBcCj4gPiA+ID4gK30pCj4g
PiA+IAo+ID4gPiB0aGlzIG9ubHkgaW4gdGhlIHVzZSBvZiBSSVNDVl9SRUxFQVNFX0JBUlJJRVIu
IElmIHNvIHRoZXkgbGlrZWx5Cj4gPiA+IHdhbnQKPiA+ID4gZm9sZGluZywgdG8gbGltaXQgcmVk
dW5kYW5jeSBhbmQgbWFrZSBldmVudHVhbCB1cGRhdGluZyBlYXNpZXIuCj4gPiA+IChTYW1lCj4g
PiA+IGZvciB0aGUgY21weGNoZyBoZWxwZXIgZnVydGhlciBkb3duLCBhcyBpdCBzZWVtcy4pCj4g
PiBZZXMsIHlvdSBhcmUgcmlnaHQuIFRoZSBkaWZmZXJlbmNlIGlzIG9ubHkgaW4gUklTQ1ZfUkVM
RUFTRV9CQVJSSUVSCj4gPiBhbmQKPiA+IGl0IGlzIGFuIGFic2VuY2Ugb2YgUklTQ1ZfUkVMRUFT
RV9CQVJSSUVSIGlzIGEgcmVhc29uIHdoeSB3ZSBoYXZlCj4gPiAicmVsYXhlZCIgdmVyc2lvbnMu
Cj4gPiAKPiA+IEkgYW0gbm90IHN1cmUgdGhhdCBJIHVuZGVyc3RhbmQgd2hhdCB5b3UgbWVhbiBi
eSBmb2xkaW5nIGhlcmUuIERvCj4gPiB5b3UKPiA+IG1lYW4gdGhhdCB0aGVyZSBpcyBubyBhbnkg
c2Vuc2UgdG8gaGF2ZSB0byBzZXBhcmF0ZSBtYWNyb3MgYW5kIGl0Cj4gPiBpcwo+ID4gbmVlZGVk
IG9ubHkgb25lIHdpdGggUklTQ1ZfUkVMRUFTRV9CQVJSSUVSPwo+IAo+IE5vLiBZb3Ugc2hvdWxk
IHBhcmFtZXRlcml6ZSB0aGUgZm9sZGVkIGNvbW1vbiBtYWNybyBmb3IgdGhlIGRlcml2ZWQKPiBt
YWNyb3MgdG8gc2ltcGx5IHBhc3MgaW4gdGhlIGJhcnJpZXJzIG5lZWRlZCwgd2l0aCBlbXB0eSBt
YWNybwo+IGFyZ3VtZW50cyBpbmRpY2F0aW5nICJ0aGlzIGJhcnJpZXIgbm90IG5lZWRlZCIuCk5v
dyBpdCBtYWtlcyBzZW5zZSB0byBtZS4gVGhhbmsgeW91IGZvciBleHBsYW5hdGlvbi4KCj4gCj4g
PiA+ID4gKyNkZWZpbmUgeGNoZ19yZWxlYXNlKHB0ciwgeCkgXAo+ID4gPiA+ICsoeyBcCj4gPiA+
ID4gK8KgwqDCoCBfX3R5cGVvZl9fKCoocHRyKSkgeF8gPSAoeCk7IFwKPiA+ID4gPiArwqDCoMKg
IChfX3R5cGVvZl9fKCoocHRyKSkpIF9feGNoZ19yZWxlYXNlKChwdHIpLCB4XywKPiA+ID4gPiBz
aXplb2YoKihwdHIpKSk7IFwKPiA+ID4gPiArfSkKPiA+ID4gPiArCj4gPiA+ID4gK3N0YXRpYyBh
bHdheXNfaW5saW5lIHVpbnQzMl90IF9feGNoZ19jYXNlXzQodm9sYXRpbGUgdWludDMyX3QKPiA+
ID4gPiAqcHRyLAo+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC
oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB1aW50MzJf
dCBuZXcpCj4gPiA+ID4gK3sKPiA+ID4gPiArwqDCoMKgIF9fdHlwZW9mX18oKihwdHIpKSByZXQ7
Cj4gPiA+ID4gKwo+ID4gPiA+ICvCoMKgwqAgYXNtIHZvbGF0aWxlICgKPiA+ID4gPiArwqDCoMKg
wqDCoMKgwqAgIsKgwqAgYW1vc3dhcC53LmFxcmwgJTAsICUyLCAlMVxuIgo+ID4gPiA+ICvCoMKg
wqDCoMKgwqDCoCA6ICI9ciIgKHJldCksICIrQSIgKCpwdHIpCj4gPiA+ID4gK8KgwqDCoMKgwqDC
oMKgIDogInIiIChuZXcpCj4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgIDogIm1lbW9yeSIgKTsKPiA+
ID4gPiArCj4gPiA+ID4gK8KgwqDCoCByZXR1cm4gcmV0Owo+ID4gPiA+ICt9Cj4gPiA+ID4gKwo+
ID4gPiA+ICtzdGF0aWMgYWx3YXlzX2lubGluZSB1aW50NjRfdCBfX3hjaGdfY2FzZV84KHZvbGF0
aWxlIHVpbnQ2NF90Cj4gPiA+ID4gKnB0ciwKPiA+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC
oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg
wqDCoMKgwqAgdWludDY0X3QgbmV3KQo+ID4gPiA+ICt7Cj4gPiA+ID4gK8KgwqDCoCBfX3R5cGVv
Zl9fKCoocHRyKSkgcmV0Owo+ID4gPiA+ICsKPiA+ID4gPiArwqDCoMKgIGFzbSB2b2xhdGlsZSgg
XAo+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoCAiwqDCoCBhbW9zd2FwLmQuYXFybCAlMCwgJTIsICUx
XG4iIFwKPiA+ID4gPiArwqDCoMKgwqDCoMKgwqAgOiAiPXIiIChyZXQpLCAiK0EiICgqcHRyKSBc
Cj4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgIDogInIiIChuZXcpIFwKPiA+ID4gPiArwqDCoMKgwqDC
oMKgwqAgOiAibWVtb3J5IiApOyBcCj4gPiA+ID4gKwo+ID4gPiA+ICvCoMKgwqAgcmV0dXJuIHJl
dDsKPiA+ID4gPiArfQo+ID4gPiA+ICsKPiA+ID4gPiArc3RhdGljIGFsd2F5c19pbmxpbmUgdW5z
aWduZWQgc2hvcnQgX19jbXB4Y2hnX2Nhc2VfMih2b2xhdGlsZQo+ID4gPiA+IHVpbnQzMl90ICpw
dHIsCj4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC
oMKgIHVpbnQzMl90Cj4gPiA+ID4gb2xkLAo+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC
oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB1aW50MzJfdAo+ID4gPiA+IG5ldyk7Cj4gPiA+IAo+
ID4gPiBEb24ndCB5b3UgY29uc2lzdGVudGx5IG1lYW4gdWludDE2X3QgaGVyZSAoaW5jbCB0aGUg
cmV0dXJuIHR5cGUpCj4gPiA+IGFuZAo+ID4gPiAuLi4KPiA+ID4gCj4gPiA+ID4gK3N0YXRpYyBh
bHdheXNfaW5saW5lIHVuc2lnbmVkIHNob3J0IF9fY21weGNoZ19jYXNlXzEodm9sYXRpbGUKPiA+
ID4gPiB1aW50MzJfdCAqcHRyLAo+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC
oMKgwqDCoMKgwqDCoMKgwqDCoCB1aW50MzJfdAo+ID4gPiA+IG9sZCwKPiA+ID4gPiArwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC
oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdWludDMyX3QKPiA+ID4g
PiBuZXcpOwo+ID4gPiAKPiA+ID4gLi4uIHVpbnQ4X3QgaGVyZT8KPiA+IFRoZSBpZGVhIHdhcyB0
aGF0IHdlIGVtdWxhdGUgX19jbXB4Y2hnX2Nhc2VfMSBhbmQgX19jbXB4Y2hnX2Nhc2VfMgo+ID4g
dXNpbmcgNCBieXRlcyBjbXB4Y2hnIGFuZCBfX2NtcHhjaGdfY2FzZV80IGV4cGVjdHMgdWludDMy
X3QuCj4gCj4gSSBjb25zaWRlciB0aGlzIHdyb25nLiBUaGUgZnVuY3Rpb25zIHdvdWxkIGJldHRl
ciBiZSB0eXBlLWNvcnJlY3QuCj4gCj4gPiA+ID4gK3N0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9u
ZyBfX3hjaGcodm9sYXRpbGUgdm9pZCAqcHRyLAo+ID4gPiA+IHVuc2lnbmVkCj4gPiA+ID4gbG9u
ZyB4LCBpbnQgc2l6ZSkKPiA+ID4gPiArewo+ID4gPiA+ICvCoMKgwqAgc3dpdGNoIChzaXplKSB7
Cj4gPiA+ID4gK8KgwqDCoCBjYXNlIDE6Cj4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgIHJldHVybiBf
X2NtcHhjaGdfY2FzZV8xKHB0ciwgKHVpbnQzMl90KS0xLCB4KTsKPiA+ID4gPiArwqDCoMKgIGNh
c2UgMjoKPiA+ID4gPiArwqDCoMKgwqDCoMKgwqAgcmV0dXJuIF9fY21weGNoZ19jYXNlXzIocHRy
LCAodWludDMyX3QpLTEsIHgpOwo+ID4gPiAKPiA+ID4gSG93IGFyZSB0aGVzZSBnb2luZyB0byB3
b3JrPyBZb3UnbGwgY29tcGFyZSBhZ2FpbnN0IH4wLCBhbmQgaWYKPiA+ID4gdGhlCj4gPiA+IHZh
bHVlCj4gPiA+IGluIG1lbW9yeSBpc24ndCB+MCwgbWVtb3J5IHdvbid0IGJlIHVwZGF0ZWQ7IHlv
dSB3aWxsIG9ubHkKPiA+ID4gKGNvcnJlY3RseSkKPiA+ID4gcmV0dXJuIHRoZSB2YWx1ZSBmb3Vu
ZCBpbiBtZW1vcnkuCj4gPiA+IAo+ID4gPiBPciB3YWl0IC0gbG9va2luZyBhdCBfX2NtcHhjaGdf
Y2FzZV97MSwyfSgpIGZhciBmdXJ0aGVyIGRvd24sIHlvdQo+ID4gPiBpZ25vcmUKPiA+ID4gIm9s
ZCIgdGhlcmUuIFdoaWNoIGFwcGFyZW50bHkgbWVhbnMgdGhleSdsbCB3b3JrIGZvciB0aGUgdXNl
Cj4gPiA+IGhlcmUsCj4gPiA+IGJ1dAo+ID4gPiBub3QgZm9yIHRoZSB1c2UgaW4gX19jbXB4Y2hn
KCkuCj4gPiBZZXMsIHRoZSB0cmljayBpcyB0aGF0IG9sZCBpcyBpZ25vcmVkIGFuZCBpcyByZWFk
IGluCj4gPiBfX2VtdWxhdGVfY21weGNoZ19jYXNlMV8yKCkgYmVmb3JlIF9fY21weGNoZ19jYXNl
XzQgaXMgY2FsbGVkOgo+ID4gwqDCoMKgIGRvCj4gPiB7wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC
oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgCj4gPiDCoMKgwqDCoMKg
wqDCoCByZWFkX3ZhbCA9Cj4gPiByZWFkX2Z1bmMoYWxpZ25lZF9wdHIpO8KgwqDCoMKgwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAKPiA+IMKgwqDCoMKgwqDC
oMKgIHN3YXBwZWRfbmV3ID0gcmVhZF92YWwgJgo+ID4gfm1hc2s7wqDCoMKgwqDCoMKgwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIAo+ID4gwqDCoMKgwqDC
oMKgwqAgc3dhcHBlZF9uZXcgfD0KPiA+IG1hc2tlZF9uZXc7wqDCoMKgwqDCoMKgwqDCoMKgwqDC
oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAKPiA+IMKg
wqDCoMKgwqDCoMKgIHJldCA9IGNtcHhjaGdfZnVuYyhhbGlnbmVkX3B0ciwgcmVhZF92YWwsCj4g
PiBzd2FwcGVkX25ldyk7wqDCoMKgwqDCoMKgIAo+ID4gwqDCoMKgIH0gd2hpbGUgKCByZXQgIT0g
cmVhZF92YWwKPiA+ICk7wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgCj4gPiByZWFkX3ZhbCBpdCBpcyAnb2xk
Jy4KPiA+IAo+ID4gQnV0IG5vdyBJIGFtIG5vdCAxMDAlIHN1cmUgdGhhdCBpdCBpcyBjb3JyZWN0
IGZvciBfX2NtcHhjaGcuLi4KPiAKPiBJdCBqdXN0IGNhbid0IGJlIGNvcnJlY3QgLSB5b3UgY2Fu
J3QgaWdub3JlICJvbGQiIHRoZXJlLiBJIHRoaW5rIHlvdQo+IHdhbnQgc2ltcGxlIGNtcHhjaGcg
cHJpbWl0aXZlcywgd2hpY2ggeGNoZyB0aGVuIHVzZXMgaW4gYSBsb29wICh3aGlsZQo+IGNtcHhj
aGcgdXNlcyB0aGVtIHBsYWlubHkpLgpCdXQgeGNoZyBkb2Vzbid0IHJlcXVpcmUgJ29sZCcgdmFs
dWUsIHNvIGl0IHNob3VsZCBiZSBpZ25vcmVkIGluIHNvbWUKd2F5IGJ5IGNtcHhjaGcuCgo+IAo+
ID4gPiA+ICtzdGF0aWMgYWx3YXlzX2lubGluZSB1bnNpZ25lZCBzaG9ydCBfX2NtcHhjaGdfY2Fz
ZV8yKHZvbGF0aWxlCj4gPiA+ID4gdWludDMyX3QgKnB0ciwKPiA+ID4gPiArwqDCoMKgwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC
oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdWludDMyX3QKPiA+ID4gPiBvbGQs
Cj4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC
oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg
IHVpbnQzMl90Cj4gPiA+ID4gbmV3KQo+ID4gPiA+ICt7Cj4gPiA+ID4gK8KgwqDCoCAodm9pZCkg
b2xkOwo+ID4gPiA+ICsKPiA+ID4gPiArwqDCoMKgIGlmICgoKHVuc2lnbmVkIGxvbmcpcHRyICYg
MykgPT0gMykKPiA+ID4gPiArwqDCoMKgIHsKPiA+ID4gPiArI2lmZGVmIENPTkZJR182NEJJVAo+
ID4gPiA+ICvCoMKgwqDCoMKgwqDCoCByZXR1cm4gX19lbXVsYXRlX2NtcHhjaGdfY2FzZTFfMigo
dWludDY0X3QgKilwdHIsIG5ldywKPiA+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC
oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmVh
ZHEsCj4gPiA+ID4gX19jbXB4Y2hnX2Nhc2VfOCwKPiA+ID4gPiAweGZmZmZVKTsKPiA+ID4gCj4g
PiA+IFdoYXQgaWYgKCh1bnNpZ25lZCBsb25nKXB0ciAmIDcpID09IDcgKHdoaWNoIGlzIGEgc3Vi
LWNhc2Ugb2YKPiA+ID4gd2hhdAo+ID4gPiB0aGUKPiA+ID4gaWYoKSBhYm92ZSBjaGVja3MgZm9y
PyBJc24ndCBpdCBtb3JlIHJlYXNvbmFibGUgdG8gcmVxdWlyZQo+ID4gPiBhbGlnbmVkCj4gPiA+
IDE2LWJpdCBxdWFudGl0aWVzIGhlcmU/IE9yIGlmIG1pcy1hbGlnbmVkIGFkZHJlc3NlcyBhcmUg
b2theSwgeW91Cj4gPiA+IGNvdWxkCj4gPiA+IGFzIHdlbGwgZW11bGF0ZSB1c2luZyBfX2NtcHhj
aGdfY2FzZV80KCkuCj4gPiBZZXMsIGl0IHdpbGwgYmUgbW9yZSByZWFzb25hYmxlLiBJJ2xsIHVz
ZSBJU19BTElHTkVEIGluc3RlYWQuCj4gCj4gTm90IHN1cmUgSSBnZXQgeW91ciB1c2Ugb2YgImlu
c3RlYWQiIGhlcmUgY29ycmVjdGx5LiBUaGVyZSdzIG1vcmUKPiB0byBjaGFuZ2UgaGVyZSB0aGFu
IGp1c3QgdGhlIGlmKCkgY29uZGl0aW9uLgpJIG1lYW50IHNvbWV0aGluZyBsaWtlOgoKaWYgKCBJ
U19BTElHTkVEKHB0ciwgMTYpICkKICAgIF9fZW11bGF0ZV9jbXB4Y2hnX2Nhc2UxXzIoLi4uKTsK
ZWxzZQogICAgYXNzZXJ0X2ZhaWxlZCgicHRyIGlzbid0IGFsaWduZWRcbiIpOwoKSSBoYXZlIHRv
IGNoZWNrIGlmIGl0IGlzIG5lY2Vzc2FyeSB0byBoYXZlIGFuIG1pcy1hbGlnbmVkIGFkZHJlc3Mg
Zm9yCkNBUyBpbnRzdHVjdGlvbnMuCgpJZiBtaXMtYWxpZ25lZCBhZGRyZXNzIGlzIG9rYXkgdGhl
biBpdCBsb29rcyBsaWtlIHdlIGNhbiB1c2UgYWx3YXlzIApfX2NtcHhjaG5nX2Nhc2VfNCB3aXRo
b3V0IGNoZWNraW5nIGlmIGEgcHRyIGlzIEFMSUdORUQgb3Igbm90LiBPciBJCnN0YXJ0ZWQgdG8g
bG9vc2Ugc29tZXRoaW5nLi4uCgp+IE9sZWtzaWkK



From xen-devel-bounces@lists.xenproject.org Tue Jan 23 12:24:42 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 23 Jan 2024 12:24:42 +0000
Received: from list by lists.xenproject.org with outflank-mailman.670432.1043189 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSFpV-0007GA-H5; Tue, 23 Jan 2024 12:24:37 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 670432.1043189; Tue, 23 Jan 2024 12:24:37 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSFpV-0007G3-Ds; Tue, 23 Jan 2024 12:24:37 +0000
Received: by outflank-mailman (input) for mailman id 670432;
 Tue, 23 Jan 2024 12:24:36 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=OrDF=JB=gmail.com=oleksii.kurochko@srs-se1.protection.inumbo.net>)
 id 1rSFpU-0007Fw-7N
 for xen-devel@lists.xenproject.org; Tue, 23 Jan 2024 12:24:36 +0000
Received: from mail-ej1-x632.google.com (mail-ej1-x632.google.com
 [2a00:1450:4864:20::632])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 5e2ea9ea-b9ea-11ee-98f4-6d05b1d4d9a1;
 Tue, 23 Jan 2024 13:24:35 +0100 (CET)
Received: by mail-ej1-x632.google.com with SMTP id
 a640c23a62f3a-a30ed6dbdadso9104166b.1
 for <xen-devel@lists.xenproject.org>; Tue, 23 Jan 2024 04:24:35 -0800 (PST)
Received: from [192.168.206.239] ([94.75.70.14])
 by smtp.gmail.com with ESMTPSA id
 tg10-20020a1709078dca00b00a30359b954asm2377804ejc.1.2024.01.23.04.24.33
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 23 Jan 2024 04:24:33 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 5e2ea9ea-b9ea-11ee-98f4-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1706012674; x=1706617474; darn=lists.xenproject.org;
        h=mime-version:user-agent:content-transfer-encoding:references
         :in-reply-to:date:cc:to:from:subject:message-id:from:to:cc:subject
         :date:message-id:reply-to;
        bh=l8kRvst86tlTULqRupUh3xvKYJDK8yiGlji+BEBWim0=;
        b=FohZ8r5xGHWmP4UTyZ4F89T6jaJd84TRVFrly+hDjjP1KSqfPvrvkiNrBlci9M0goh
         plsNCcVeFIh6tK++d03Wdh/3LnRBlkOrwQnRSgMboRm+Pp0h3q+2eE7OguJ6ScqzZEkY
         F8RGCnz3Shnv0+sv3CvGclFGci5cI2cm3YZmhRsEQSct0AjjU3rggZPgrkIn7dq/e2zw
         3gL1Q/pmG3GX2NoSiYtC2qi8cMQtcbD5Uabjc5hrvj2I90zIpdoN+fEwe11FyEOgE+zb
         QgMO1lwXe7bnmDuId6e2Esor9j0vgJ1Bvxj0LUrCu0DogTwJAANqy3wytkw1qfg4AV40
         wl1A==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706012674; x=1706617474;
        h=mime-version:user-agent:content-transfer-encoding:references
         :in-reply-to:date:cc:to:from:subject:message-id:x-gm-message-state
         :from:to:cc:subject:date:message-id:reply-to;
        bh=l8kRvst86tlTULqRupUh3xvKYJDK8yiGlji+BEBWim0=;
        b=mZuM5H2gmdCAKilmxrwCJfFGJPNJ6OxbeP4riB1UI4S6bAwqGOTXIH9oYcP0zdm69p
         9u+6y9SSmk0KdtDdLAlNSXWt/P/15pFYns3RYIGjoN+vhWBIYvgiszdhXbcdJzeE51zs
         NfVfc1CyCalLv8T1k189XIZ7vkSO1RWSh/oLvwPaB+wI2b03sp3hayl3pOFwBlr0aiEZ
         BDp+L6n6T2+x2B3lU3RFPv6lAd6+P4+qXxMrbQZQl/L96rBZTtm7Qh19h3TCkkJ+WlJu
         uG4chUDVsTE3n8bfDCAAa6tEhXg+kfAMbjJUFKzd3x9yL9jY3msK39/fxQ9ArQDnZp4o
         kZtA==
X-Gm-Message-State: AOJu0YxnWWdKZuFcxYcdjs1n33Nm05xEf9s85Zg8c3jDocG94Rk7bTJ7
	Kcm5Vdej8mhf7nS13/mrI/QNSZYzj0LullLHnPWRayHXOK7phH/+HMqIvrOePLQ=
X-Google-Smtp-Source: AGHT+IHnOx/hdAXusCdX2Dj5vTL/yNR47xokHYWFjvC/UwqIliE4VRj/7o7ZcWoyjVMU/jPQAL0LFA==
X-Received: by 2002:a17:907:7211:b0:a2f:d73d:e99d with SMTP id dr17-20020a170907721100b00a2fd73de99dmr109757ejc.18.1706012674210;
        Tue, 23 Jan 2024 04:24:34 -0800 (PST)
Message-ID: <d7f89e6f4aae5c8cfa5215bd893b62a3d542ce4c.camel@gmail.com>
Subject: Re: [PATCH v3 15/34] xen/riscv: introduce atomic.h
From: Oleksii <oleksii.kurochko@gmail.com>
To: Jan Beulich <jbeulich@suse.com>
Cc: Bobby Eshleman <bobbyeshleman@gmail.com>, Alistair Francis
 <alistair.francis@wdc.com>, Connor Davis <connojdavis@gmail.com>, Andrew
 Cooper <andrew.cooper3@citrix.com>, George Dunlap
 <george.dunlap@citrix.com>,  Julien Grall <julien@xen.org>, Stefano
 Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>, 
 xen-devel@lists.xenproject.org
Date: Tue, 23 Jan 2024 14:24:33 +0200
In-Reply-To: <6aa39fac-fef6-47ce-8c27-4941d83c138a@suse.com>
References: <cover.1703255175.git.oleksii.kurochko@gmail.com>
	 <54f5f13a4ee3de3c3cf4ba2b4d0347bb77bb7d08.1703255175.git.oleksii.kurochko@gmail.com>
	 <2429395f-3ce8-4f17-aabe-78af2446ff6d@suse.com>
	 <92d7caf20a37b68dce7676812c2780bc2fbc00cf.camel@gmail.com>
	 <6aa39fac-fef6-47ce-8c27-4941d83c138a@suse.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
User-Agent: Evolution 3.50.2 (3.50.2-1.fc39) 
MIME-Version: 1.0

On Tue, 2024-01-23 at 11:30 +0100, Jan Beulich wrote:
> On 23.01.2024 11:21, Oleksii wrote:
> > On Mon, 2024-01-22 at 17:56 +0100, Jan Beulich wrote:
> > > On 22.12.2023 16:12, Oleksii Kurochko wrote:
> > > > --- /dev/null
> > > > +++ b/xen/arch/riscv/include/asm/fence.h
> > > > @@ -0,0 +1,13 @@
> > > > +/* SPDX-License-Identifier: GPL-2.0-or-later */
> > > > +#ifndef _ASM_RISCV_FENCE_H
> > > > +#define _ASM_RISCV_FENCE_H
> > > > +
> > > > +#ifdef CONFIG_SMP
> > > > +#define RISCV_ACQUIRE_BARRIER		"\tfence r , rw\n"
> > > > +#define RISCV_RELEASE_BARRIER		"\tfence rw,=C2=A0 w\n"
> > > > +#else
> > > > +#define RISCV_ACQUIRE_BARRIER
> > > > +#define RISCV_RELEASE_BARRIER
> > > > +#endif
> > >=20
> > > Do you really care about the !SMP case? On x86 at least we
> > > stopped
> > > special-
> > > casing that configuration many years ago (the few cases where for
> > > typically
> > > build reasons it matters, using CONFIG_NR_CPUS is sufficient). If
> > > you
> > > care
> > > about it, there needs to be somewhere you actually #define
> > > CONFIG_SMP.
> > Can't we use instead of CONFIG_SMP - CONFIG_NR_CPUS?
>=20
> You can. Question is whether there's a point in doing so. Do you
> expect people to actually want to run Xen on single-CPU systems?
> They're generally not overly well suited for virtualization ...
Just to clarify.

Do you mean physically single based CPU?
Then I don't expect to run Xen on such systems and it is not nesessary
to define *_BARRIER in this case. Should we have to add build error
notification that we don't support single-CPU systems in this header?

If you are speaking about we have ,let it be, 4 CPUs and only 1 CPU is
currently supported by Xen then it still makes sense.

~ Oleksii


From xen-devel-bounces@lists.xenproject.org Tue Jan 23 12:25:34 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 23 Jan 2024 12:25:34 +0000
Received: from list by lists.xenproject.org with outflank-mailman.670434.1043199 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSFqP-0007lv-Qj; Tue, 23 Jan 2024 12:25:33 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 670434.1043199; Tue, 23 Jan 2024 12:25:33 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSFqP-0007ln-Mx; Tue, 23 Jan 2024 12:25:33 +0000
Received: by outflank-mailman (input) for mailman id 670434;
 Tue, 23 Jan 2024 12:25:32 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=OrDF=JB=gmail.com=oleksii.kurochko@srs-se1.protection.inumbo.net>)
 id 1rSFqO-0007lS-F1
 for xen-devel@lists.xenproject.org; Tue, 23 Jan 2024 12:25:32 +0000
Received: from mail-il1-x130.google.com (mail-il1-x130.google.com
 [2607:f8b0:4864:20::130])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 7ef270c5-b9ea-11ee-9b0f-b553b5be7939;
 Tue, 23 Jan 2024 13:25:30 +0100 (CET)
Received: by mail-il1-x130.google.com with SMTP id
 e9e14a558f8ab-361b0f0f971so11336785ab.2
 for <xen-devel@lists.xenproject.org>; Tue, 23 Jan 2024 04:25:30 -0800 (PST)
Received: from [192.168.206.239] ([94.75.70.14])
 by smtp.gmail.com with ESMTPSA id
 w16-20020a634750000000b005c21c23180bsm10079813pgk.76.2024.01.23.04.25.26
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 23 Jan 2024 04:25:28 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 7ef270c5-b9ea-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1706012729; x=1706617529; darn=lists.xenproject.org;
        h=mime-version:user-agent:content-transfer-encoding:references
         :in-reply-to:date:cc:to:from:subject:message-id:from:to:cc:subject
         :date:message-id:reply-to;
        bh=4OmCmFMKBTihaNEJ6ZgHoztuSwIbY/vbwPP4+PSVKAI=;
        b=bGmcpQi4i8QMM1aEAvQjWvA8wGdEBburqSrhUlbwIrB0ZdUfwu/OpyvyRKRgT9bc2N
         ujBBTgerjN91nLogXra4gDQqTWyI8w47a9F1m3Q8QpG+jJra6f/Vr7a5KIWKJT4ZJHuU
         bSB4sHql8TwlyLvWbOoX7N10W380JQXYiexZPKwC8AvZ67LavgYi7V69xpO2a+YTP10W
         t7CgEn60lv7dxdHUGxNDa1AC7RqTQ0Y4nKKQikEO1Rbju1OIbwkxy8lREcCx/w1Qmjr/
         StmreHVimVX3HrYcPrySA6n0NkplzJndugMQgNBWew2tBrz0EBCDGXsZnGM/yiZvnVS5
         Iabg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706012729; x=1706617529;
        h=mime-version:user-agent:content-transfer-encoding:references
         :in-reply-to:date:cc:to:from:subject:message-id:x-gm-message-state
         :from:to:cc:subject:date:message-id:reply-to;
        bh=4OmCmFMKBTihaNEJ6ZgHoztuSwIbY/vbwPP4+PSVKAI=;
        b=lOAMw778vXOWVZBfWhxRqBQf9H0QDQltCn8LlrHw6QnKpVsRAe9JXPwMnzIflIAm9g
         k3qvG11ydbGldXo3VsPK9LJCsABJN3ge+5v0z3OlWFwB6CR+0PditMoIKr88AkOhkwEv
         sCDjohpHBJHOpMSW7MMisW6b7SMT83GDfH1rTITUhbQMNEEVPzVtdbKY/Ha1uPPKQR2v
         vgYTq+vvxLSA4+E2d9j+D/aTJYYFBADy2oogqVbC1nXY4na9K8rVgttnkoHS2N3HpFve
         4KvdOcziyRZJoyRNGUJiFavcR6ze79gIuZj+scupKR0wbRxWjWg/1B3tGmuTJ9MFHw0r
         q21w==
X-Gm-Message-State: AOJu0YyET9kixssL3UL4c7eyTQI21+zmSHFU7BC7+jLw+/QXje4kWwCI
	0sBPUAJ52zjpHnKRxHynBJKRx/ruqBj2vSpb37nQzwDDP4YfMdQz
X-Google-Smtp-Source: AGHT+IGubLR4N/FqV7UTy3KaOXItqgB1rVXqH01h597cOTcFIuzsW/SAfe92kMr4FFvE9ytdYPypDg==
X-Received: by 2002:a92:c08c:0:b0:361:a88b:33f9 with SMTP id h12-20020a92c08c000000b00361a88b33f9mr7368684ile.19.1706012729325;
        Tue, 23 Jan 2024 04:25:29 -0800 (PST)
Message-ID: <b355bf2d404fba4c866433cac8805c508275e98a.camel@gmail.com>
Subject: Re: [PATCH v3 20/34] xen/riscv: introduce irq.h
From: Oleksii <oleksii.kurochko@gmail.com>
To: Jan Beulich <jbeulich@suse.com>
Cc: Alistair Francis <alistair.francis@wdc.com>, Bob Eshleman
 <bobbyeshleman@gmail.com>, Connor Davis <connojdavis@gmail.com>, Andrew
 Cooper <andrew.cooper3@citrix.com>, George Dunlap
 <george.dunlap@citrix.com>,  Julien Grall <julien@xen.org>, Stefano
 Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>, 
 xen-devel@lists.xenproject.org
Date: Tue, 23 Jan 2024 14:25:24 +0200
In-Reply-To: <a9e80aeb-67e1-453f-b8be-1c6295d95dff@suse.com>
References: <cover.1703255175.git.oleksii.kurochko@gmail.com>
	 <11613eb5a0378315d70fc2f4d4f744ede579cca3.1703255175.git.oleksii.kurochko@gmail.com>
	 <a9e80aeb-67e1-453f-b8be-1c6295d95dff@suse.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
User-Agent: Evolution 3.50.2 (3.50.2-1.fc39) 
MIME-Version: 1.0

On Tue, 2024-01-23 at 12:18 +0100, Jan Beulich wrote:
> On 22.12.2023 16:13, Oleksii Kurochko wrote:
> > +static inline void arch_move_irqs(struct vcpu *v)
> > +{
> > +=C2=A0=C2=A0=C2=A0 BUG();
> > +}
>=20
> As I think you said you're doing the conversion already - with this
> becoming the "canonical" BUG_ON("unimplemented"):
> Acked-by: Jan Beulich <jbeulich@suse.com>
Missed that, I'll update that in my next patch version.

Thanks.

~ Oleksii


From xen-devel-bounces@lists.xenproject.org Tue Jan 23 12:34:48 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 23 Jan 2024 12:34:48 +0000
Received: from list by lists.xenproject.org with outflank-mailman.670441.1043210 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSFzG-0002Rz-QK; Tue, 23 Jan 2024 12:34:42 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 670441.1043210; Tue, 23 Jan 2024 12:34:42 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSFzG-0002Rs-La; Tue, 23 Jan 2024 12:34:42 +0000
Received: by outflank-mailman (input) for mailman id 670441;
 Tue, 23 Jan 2024 12:34:40 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=OrDF=JB=gmail.com=oleksii.kurochko@srs-se1.protection.inumbo.net>)
 id 1rSFzE-0002Rk-JZ
 for xen-devel@lists.xenproject.org; Tue, 23 Jan 2024 12:34:40 +0000
Received: from mail-ej1-x636.google.com (mail-ej1-x636.google.com
 [2a00:1450:4864:20::636])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id c5d7918b-b9eb-11ee-9b0f-b553b5be7939;
 Tue, 23 Jan 2024 13:34:38 +0100 (CET)
Received: by mail-ej1-x636.google.com with SMTP id
 a640c23a62f3a-a2dc7827a97so463384966b.2
 for <xen-devel@lists.xenproject.org>; Tue, 23 Jan 2024 04:34:38 -0800 (PST)
Received: from [192.168.206.239] ([94.75.70.14])
 by smtp.gmail.com with ESMTPSA id
 l18-20020a17090612d200b00a28fd9607a8sm14316503ejb.81.2024.01.23.04.34.36
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 23 Jan 2024 04:34:37 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: c5d7918b-b9eb-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1706013278; x=1706618078; darn=lists.xenproject.org;
        h=mime-version:user-agent:content-transfer-encoding:references
         :in-reply-to:date:cc:to:from:subject:message-id:from:to:cc:subject
         :date:message-id:reply-to;
        bh=4YID5zeWxTcKedNchaS9M/Sss886vPmOHYTrMvovnLY=;
        b=llN5HtdtZ57zjV+pgc/HOzvzJwlSnyBdsh6/jofn97UhFzQ5daEJQeanIBnmhKjt9t
         n/pviBZ2aZgIU526ENmYbRMEs4ay1DEscXTbMpm2HdlsC8Zf4MrtcSTse6x08HP7Tw2W
         SDbXSCOJyjXQLl4k2WNbB/WiIPETDSSzGFumiFPYa5NWL7Zi+Lt3Q0qH/jEyf7r+DrU8
         g1EwKVzKDvmkwgEJgmJ3/9Yzjpkz3bV54TQPwwA6q3zEj7yr42i35Kr9tDyA5TWrrTqW
         VtsTpNAsxN9np76r47ct8kpMIKQJStxVn6moZCDpguLBdwrkWDQYFDaqVpDtmy3n8sfs
         NAgw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706013278; x=1706618078;
        h=mime-version:user-agent:content-transfer-encoding:references
         :in-reply-to:date:cc:to:from:subject:message-id:x-gm-message-state
         :from:to:cc:subject:date:message-id:reply-to;
        bh=4YID5zeWxTcKedNchaS9M/Sss886vPmOHYTrMvovnLY=;
        b=R3df6BiMpxrlBVyXl+bGjrrsUEZXp9IizG8w8AeOixL3di3d/0qqzguv9Uw5atR+22
         mXama2iLp5NY8oFYUSZfHfcOJ+AQAfR/FLPzguYJ0vzswuEKCSmxfoMVKriZoNjNNbuo
         Lijv7qUlvyrMDpuBfOaZUfyII0fhJkXcBr1qcRpI0UbEmWejmRit//KcqGJg7qBhVTo5
         uHl05694dGuuYMzKWcnmG+j1sxsGkX3SWaJRFgnr5IHXdcQ1ictU6liJPSnuDlZh5oWT
         QfAupr3a31iFoh7/171fWyx9zOKgc/pP8FJGnXwxM7tmpN1BdOccoJKR4UvRF7Yn/6SR
         HLuw==
X-Gm-Message-State: AOJu0YwLfdLQ2bmMfVBsFGq50605+b6t18IP272WF21VLT0Bu0XJ995I
	0DINU8ljRZZQNI1fbVHAw+x8sYoBiC+xuCvYd7FCsWHydxyquFVj
X-Google-Smtp-Source: AGHT+IGBOLV2mYT3VUmuMCuf2hgxP1v9o+YwCzRI/4sB5COLHsGgZ5zLo6qT/uvlBTBqUGTQZ8UpLw==
X-Received: by 2002:a17:907:a70c:b0:a30:92d4:cc81 with SMTP id vw12-20020a170907a70c00b00a3092d4cc81mr1239790ejc.86.1706013277496;
        Tue, 23 Jan 2024 04:34:37 -0800 (PST)
Message-ID: <05d685b0b7ccd329454a336b20351979bdf91ea4.camel@gmail.com>
Subject: Re: [PATCH v3 16/34] xen/lib: introduce generic find next bit
 operations
From: Oleksii <oleksii.kurochko@gmail.com>
To: Jan Beulich <jbeulich@suse.com>
Cc: Alistair Francis <alistair.francis@wdc.com>, Bob Eshleman
 <bobbyeshleman@gmail.com>, Connor Davis <connojdavis@gmail.com>, Andrew
 Cooper <andrew.cooper3@citrix.com>, George Dunlap
 <george.dunlap@citrix.com>,  Julien Grall <julien@xen.org>, Stefano
 Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>, 
 xen-devel@lists.xenproject.org
Date: Tue, 23 Jan 2024 14:34:36 +0200
In-Reply-To: <81e5cac4-90f0-4fff-b891-53ca73c61832@suse.com>
References: <cover.1703255175.git.oleksii.kurochko@gmail.com>
	 <bb47caf6c275d8aea307b96e79828831eab4a703.1703255175.git.oleksii.kurochko@gmail.com>
	 <81e5cac4-90f0-4fff-b891-53ca73c61832@suse.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
User-Agent: Evolution 3.50.2 (3.50.2-1.fc39) 
MIME-Version: 1.0

On Tue, 2024-01-23 at 12:14 +0100, Jan Beulich wrote:
> On 22.12.2023 16:13, Oleksii Kurochko wrote:
> > --- a/xen/arch/riscv/include/asm/fence.h
> > +++ b/xen/arch/riscv/include/asm/fence.h
> > @@ -1,4 +1,4 @@
> > -/* SPDX-License-Identifier: GPL-2.0-or-later */
> > +/* SPDX-License-Identifier: GPL-2.0-only */
> > =C2=A0#ifndef _ASM_RISCV_FENCE_H
> > =C2=A0#define _ASM_RISCV_FENCE_H
> > =C2=A0
> > @@ -11,3 +11,12 @@
> > =C2=A0#endif
> > =C2=A0
> > =C2=A0#endif	/* _ASM_RISCV_FENCE_H */
> > +
> > +/*
> > + * Local variables:
> > + * mode: C
> > + * c-file-style: "BSD"
> > + * c-basic-offset: 4
> > + * indent-tabs-mode: nil
> > + * End:
> > + */
>=20
> Surely all of this wants doing in the previous patch, where the
> header
> is introduced?
Yes, it should be in the previous patch. I'll do the proper rebase.

>=20
> > --- a/xen/common/Kconfig
> > +++ b/xen/common/Kconfig
> > @@ -47,6 +47,9 @@ config ARCH_MAP_DOMAIN_PAGE
> > =C2=A0config GENERIC_BUG_FRAME
> > =C2=A0	bool
> > =C2=A0
> > +config GENERIC_FIND_NEXT_BIT
> > +	bool
>=20
> There's no need for this, as ...
>=20
> > --- a/xen/lib/Makefile
> > +++ b/xen/lib/Makefile
> > @@ -3,6 +3,7 @@ obj-$(CONFIG_X86) +=3D x86/
> > =C2=A0lib-y +=3D bsearch.o
> > =C2=A0lib-y +=3D ctors.o
> > =C2=A0lib-y +=3D ctype.o
> > +lib-$(CONFIG_GENERIC_FIND_NEXT_BIT) +=3D find-next-bit.o
>=20
> ... you're moving this to lib/. Or have you encountered any issue
> with building this uniformly, and you forgot to mention this in
> the description?
I didn't check. My intention was to provide opportunity to check if an
architecture want to use generic version or not. Otherwise, I expected
that we will have multiple definiotion of the funcion.

But considering that they are all defined under #ifdef...#endif we can
remove the declaration of the config GENERIC_FIND_NEXT_BIT.
>=20
> > --- /dev/null
> > +++ b/xen/lib/find-next-bit.c
> > @@ -0,0 +1,281 @@
> > +/* find_next_bit.c: fallback find next bit implementation
> > + *
> > + * Copyright (C) 2004 Red Hat, Inc. All Rights Reserved.
> > + * Written by David Howells (dhowells@redhat.com)
> > + *
> > + * This program is free software; you can redistribute it and/or
> > + * modify it under the terms of the GNU General Public License
> > + * as published by the Free Software Foundation; either version
> > + * 2 of the License, or (at your option) any later version.
> > + */
> > +#include <xen/bitops.h>
> > +
> > +#include <asm/byteorder.h>
> > +
> > +#ifndef find_next_bit
> > +/*
> > + * Find the next set bit in a memory region.
> > + */
> > +unsigned long find_next_bit(const unsigned long *addr, unsigned
> > long size,
> > +			=C2=A0=C2=A0=C2=A0 unsigned long offset)
> > +{
> > +	const unsigned long *p =3D addr + BIT_WORD(offset);
> > +	unsigned long result =3D offset & ~(BITS_PER_LONG-1);
> > +	unsigned long tmp;
> > +
> > +	if (offset >=3D size)
> > +		return size;
> > +	size -=3D result;
> > +	offset %=3D BITS_PER_LONG;
> > +	if (offset) {
> > +		tmp =3D *(p++);
> > +		tmp &=3D (~0UL << offset);
> > +		if (size < BITS_PER_LONG)
> > +			goto found_first;
> > +		if (tmp)
> > +			goto found_middle;
> > +		size -=3D BITS_PER_LONG;
> > +		result +=3D BITS_PER_LONG;
> > +	}
> > +	while (size & ~(BITS_PER_LONG-1)) {
> > +		if ((tmp =3D *(p++)))
> > +			goto found_middle;
> > +		result +=3D BITS_PER_LONG;
> > +		size -=3D BITS_PER_LONG;
> > +	}
> > +	if (!size)
> > +		return result;
> > +	tmp =3D *p;
> > +
> > +found_first:
> > +	tmp &=3D (~0UL >> (BITS_PER_LONG - size));
> > +	if (tmp =3D=3D 0UL)		/* Are any bits set? */
> > +		return result + size;	/* Nope. */
> > +found_middle:
> > +	return result + __ffs(tmp);
> > +}
> > +EXPORT_SYMBOL(find_next_bit);
> > +#endif
> > +
> > +#ifndef find_next_zero_bit
> > +/*
> > + * This implementation of find_{first,next}_zero_bit was stolen
> > from
> > + * Linus' asm-alpha/bitops.h.
> > + */
> > +unsigned long find_next_zero_bit(const unsigned long *addr,
> > unsigned long size,
> > +				 unsigned long offset)
> > +{
> > +	const unsigned long *p =3D addr + BIT_WORD(offset);
> > +	unsigned long result =3D offset & ~(BITS_PER_LONG-1);
> > +	unsigned long tmp;
> > +
> > +	if (offset >=3D size)
> > +		return size;
> > +	size -=3D result;
> > +	offset %=3D BITS_PER_LONG;
> > +	if (offset) {
> > +		tmp =3D *(p++);
> > +		tmp |=3D ~0UL >> (BITS_PER_LONG - offset);
> > +		if (size < BITS_PER_LONG)
> > +			goto found_first;
> > +		if (~tmp)
> > +			goto found_middle;
> > +		size -=3D BITS_PER_LONG;
> > +		result +=3D BITS_PER_LONG;
> > +	}
> > +	while (size & ~(BITS_PER_LONG-1)) {
> > +		if (~(tmp =3D *(p++)))
> > +			goto found_middle;
> > +		result +=3D BITS_PER_LONG;
> > +		size -=3D BITS_PER_LONG;
> > +	}
> > +	if (!size)
> > +		return result;
> > +	tmp =3D *p;
> > +
> > +found_first:
> > +	tmp |=3D ~0UL << size;
> > +	if (tmp =3D=3D ~0UL)	/* Are any bits zero? */
> > +		return result + size;	/* Nope. */
> > +found_middle:
> > +	return result + ffz(tmp);
> > +}
> > +EXPORT_SYMBOL(find_next_zero_bit);
> > +#endif
> > +
> > +#ifndef find_first_bit
> > +/*
> > + * Find the first set bit in a memory region.
> > + */
> > +unsigned long find_first_bit(const unsigned long *addr, unsigned
> > long size)
> > +{
> > +	const unsigned long *p =3D addr;
> > +	unsigned long result =3D 0;
> > +	unsigned long tmp;
> > +
> > +	while (size & ~(BITS_PER_LONG-1)) {
> > +		if ((tmp =3D *(p++)))
> > +			goto found;
> > +		result +=3D BITS_PER_LONG;
> > +		size -=3D BITS_PER_LONG;
> > +	}
> > +	if (!size)
> > +		return result;
> > +
> > +	tmp =3D (*p) & (~0UL >> (BITS_PER_LONG - size));
> > +	if (tmp =3D=3D 0UL)		/* Are any bits set? */
> > +		return result + size;	/* Nope. */
> > +found:
> > +	return result + __ffs(tmp);
> > +}
> > +EXPORT_SYMBOL(find_first_bit);
> > +#endif
> > +
> > +#ifndef find_first_zero_bit
> > +/*
> > + * Find the first cleared bit in a memory region.
> > + */
> > +unsigned long find_first_zero_bit(const unsigned long *addr,
> > unsigned long size)
> > +{
> > +	const unsigned long *p =3D addr;
> > +	unsigned long result =3D 0;
> > +	unsigned long tmp;
> > +
> > +	while (size & ~(BITS_PER_LONG-1)) {
> > +		if (~(tmp =3D *(p++)))
> > +			goto found;
> > +		result +=3D BITS_PER_LONG;
> > +		size -=3D BITS_PER_LONG;
> > +	}
> > +	if (!size)
> > +		return result;
> > +
> > +	tmp =3D (*p) | (~0UL << size);
> > +	if (tmp =3D=3D ~0UL)	/* Are any bits zero? */
> > +		return result + size;	/* Nope. */
> > +found:
> > +	return result + ffz(tmp);
> > +}
> > +EXPORT_SYMBOL(find_first_zero_bit);
> > +#endif
> > +
> > +#ifdef __BIG_ENDIAN
> > +
> > +/* include/linux/byteorder does not support "unsigned long" type
> > */
> > +static inline unsigned long ext2_swabp(const unsigned long * x)
> > +{
> > +#if BITS_PER_LONG =3D=3D 64
> > +	return (unsigned long) __swab64p((u64 *) x);
> > +#elif BITS_PER_LONG =3D=3D 32
> > +	return (unsigned long) __swab32p((u32 *) x);
> > +#else
> > +#error BITS_PER_LONG not defined
> > +#endif
> > +}
> > +
> > +/* include/linux/byteorder doesn't support "unsigned long" type */
> > +static inline unsigned long ext2_swab(const unsigned long y)
> > +{
> > +#if BITS_PER_LONG =3D=3D 64
> > +	return (unsigned long) __swab64((u64) y);
> > +#elif BITS_PER_LONG =3D=3D 32
> > +	return (unsigned long) __swab32((u32) y);
> > +#else
> > +#error BITS_PER_LONG not defined
> > +#endif
> > +}
> > +
> > +#ifndef find_next_zero_bit_le
> > +unsigned long find_next_zero_bit_le(const void *addr, unsigned
> > +		long size, unsigned long offset)
> > +{
> > +	const unsigned long *p =3D addr;
> > +	unsigned long result =3D offset & ~(BITS_PER_LONG - 1);
> > +	unsigned long tmp;
> > +
> > +	if (offset >=3D size)
> > +		return size;
> > +	p +=3D BIT_WORD(offset);
> > +	size -=3D result;
> > +	offset &=3D (BITS_PER_LONG - 1UL);
> > +	if (offset) {
> > +		tmp =3D ext2_swabp(p++);
> > +		tmp |=3D (~0UL >> (BITS_PER_LONG - offset));
> > +		if (size < BITS_PER_LONG)
> > +			goto found_first;
> > +		if (~tmp)
> > +			goto found_middle;
> > +		size -=3D BITS_PER_LONG;
> > +		result +=3D BITS_PER_LONG;
> > +	}
> > +
> > +	while (size & ~(BITS_PER_LONG - 1)) {
> > +		if (~(tmp =3D *(p++)))
> > +			goto found_middle_swap;
> > +		result +=3D BITS_PER_LONG;
> > +		size -=3D BITS_PER_LONG;
> > +	}
> > +	if (!size)
> > +		return result;
> > +	tmp =3D ext2_swabp(p);
> > +found_first:
> > +	tmp |=3D ~0UL << size;
> > +	if (tmp =3D=3D ~0UL)	/* Are any bits zero? */
> > +		return result + size; /* Nope. Skip ffz */
> > +found_middle:
> > +	return result + ffz(tmp);
> > +
> > +found_middle_swap:
> > +	return result + ffz(ext2_swab(tmp));
> > +}
> > +EXPORT_SYMBOL(find_next_zero_bit_le);
> > +#endif
> > +
> > +#ifndef find_next_bit_le
> > +unsigned long find_next_bit_le(const void *addr, unsigned
> > +		long size, unsigned long offset)
> > +{
> > +	const unsigned long *p =3D addr;
> > +	unsigned long result =3D offset & ~(BITS_PER_LONG - 1);
> > +	unsigned long tmp;
> > +
> > +	if (offset >=3D size)
> > +		return size;
> > +	p +=3D BIT_WORD(offset);
> > +	size -=3D result;
> > +	offset &=3D (BITS_PER_LONG - 1UL);
> > +	if (offset) {
> > +		tmp =3D ext2_swabp(p++);
> > +		tmp &=3D (~0UL << offset);
> > +		if (size < BITS_PER_LONG)
> > +			goto found_first;
> > +		if (tmp)
> > +			goto found_middle;
> > +		size -=3D BITS_PER_LONG;
> > +		result +=3D BITS_PER_LONG;
> > +	}
> > +
> > +	while (size & ~(BITS_PER_LONG - 1)) {
> > +		tmp =3D *(p++);
> > +		if (tmp)
> > +			goto found_middle_swap;
> > +		result +=3D BITS_PER_LONG;
> > +		size -=3D BITS_PER_LONG;
> > +	}
> > +	if (!size)
> > +		return result;
> > +	tmp =3D ext2_swabp(p);
> > +found_first:
> > +	tmp &=3D (~0UL >> (BITS_PER_LONG - size));
> > +	if (tmp =3D=3D 0UL)		/* Are any bits set? */
> > +		return result + size; /* Nope. */
> > +found_middle:
> > +	return result + __ffs(tmp);
> > +
> > +found_middle_swap:
> > +	return result + __ffs(ext2_swab(tmp));
> > +}
> > +EXPORT_SYMBOL(find_next_bit_le);
> > +#endif
> > +
> > +#endif /* __BIG_ENDIAN */
>=20
> I was going to ask that you convince git to actually present a proper
> diff, to make visible what changes. But other than the description
> says
> you don't really move the file, you copy it. Judging from further
> titles
> there's also nowhere you'd make Arm actually use this now generic
> code.
I wanted to do it separately, outside this patch series to simplify
review and not have Arm specific changes in RISC-V patch series.

Regarding a proper diff, you would like me to make git shows that it
was copy from Arm and it is not newly created file. Am I understand you
correctly?

~ Oleksii


From xen-devel-bounces@lists.xenproject.org Tue Jan 23 12:55:51 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 23 Jan 2024 12:55:51 +0000
Received: from list by lists.xenproject.org with outflank-mailman.670448.1043218 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSGJc-0007ct-EA; Tue, 23 Jan 2024 12:55:44 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 670448.1043218; Tue, 23 Jan 2024 12:55:44 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSGJc-0007cm-B8; Tue, 23 Jan 2024 12:55:44 +0000
Received: by outflank-mailman (input) for mailman id 670448;
 Tue, 23 Jan 2024 12:55:43 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rSGJb-0007ca-AO; Tue, 23 Jan 2024 12:55:43 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rSGJb-0006lo-6h; Tue, 23 Jan 2024 12:55:43 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rSGJa-0007Nz-Lc; Tue, 23 Jan 2024 12:55:42 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rSGJa-0005cm-L4; Tue, 23 Jan 2024 12:55:42 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=a4v2+SNPbvSxq6Yy+6LlpIxs7v3O21yg15icq+lfq68=; b=dWpj1fkExPDpsrPZxm+DkdWEYq
	y/NqWBH3QXM+3YHh0OKD+blpSM/dCMHREjhbHMQtBYDsPBhoj41y5pwRer6cG0NIyglSqErdauA8J
	bI0lBbfLMXkGaMqOYXiz8wo9IDHQz+zPsJXXN/dQeMYt3v2/t/nmWepqPSyvRNm8ikm0=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184431-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [libvirt test] 184431: tolerable all pass - PUSHED
X-Osstest-Failures:
    libvirt:test-armhf-armhf-libvirt:saverestore-support-check:fail:nonblocking
    libvirt:test-armhf-armhf-libvirt-qcow2:saverestore-support-check:fail:nonblocking
    libvirt:test-armhf-armhf-libvirt-raw:saverestore-support-check:fail:nonblocking
    libvirt:test-amd64-amd64-libvirt-xsm:migrate-support-check:fail:nonblocking
    libvirt:test-amd64-i386-libvirt-xsm:migrate-support-check:fail:nonblocking
    libvirt:test-amd64-i386-libvirt:migrate-support-check:fail:nonblocking
    libvirt:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    libvirt:test-arm64-arm64-libvirt:migrate-support-check:fail:nonblocking
    libvirt:test-arm64-arm64-libvirt:saverestore-support-check:fail:nonblocking
    libvirt:test-arm64-arm64-libvirt-xsm:migrate-support-check:fail:nonblocking
    libvirt:test-arm64-arm64-libvirt-xsm:saverestore-support-check:fail:nonblocking
    libvirt:test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    libvirt:test-armhf-armhf-libvirt:migrate-support-check:fail:nonblocking
    libvirt:test-amd64-i386-libvirt-raw:migrate-support-check:fail:nonblocking
    libvirt:test-arm64-arm64-libvirt-qcow2:migrate-support-check:fail:nonblocking
    libvirt:test-arm64-arm64-libvirt-qcow2:saverestore-support-check:fail:nonblocking
    libvirt:test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    libvirt:test-arm64-arm64-libvirt-raw:migrate-support-check:fail:nonblocking
    libvirt:test-arm64-arm64-libvirt-raw:saverestore-support-check:fail:nonblocking
    libvirt:test-amd64-amd64-libvirt-vhd:migrate-support-check:fail:nonblocking
    libvirt:test-armhf-armhf-libvirt-qcow2:migrate-support-check:fail:nonblocking
    libvirt:test-armhf-armhf-libvirt-raw:migrate-support-check:fail:nonblocking
X-Osstest-Versions-This:
    libvirt=642af05e3e58b90cb9d15936678f16bd7e454d26
X-Osstest-Versions-That:
    libvirt=1785eb8dc93be6a027b97678d4b73afd3806ba0f
From: osstest service owner <osstest-admin@xenproject.org>
Date: Tue, 23 Jan 2024 12:55:42 +0000

flight 184431 libvirt real [real]
http://logs.test-lab.xenproject.org/osstest/logs/184431/

Failures :-/ but no regressions.

Tests which did not succeed, but are not blocking:
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 184409
 test-armhf-armhf-libvirt-qcow2 15 saverestore-support-check   fail like 184409
 test-armhf-armhf-libvirt-raw 15 saverestore-support-check    fail  like 184409
 test-amd64-amd64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-amd64-i386-libvirt-xsm  15 migrate-support-check        fail   never pass
 test-amd64-i386-libvirt      15 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt     15 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt     15 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt     16 saverestore-support-check    fail   never pass
 test-arm64-arm64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-xsm 16 saverestore-support-check    fail   never pass
 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-armhf-armhf-libvirt     15 migrate-support-check        fail   never pass
 test-amd64-i386-libvirt-raw  14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-qcow2 14 migrate-support-check        fail never pass
 test-arm64-arm64-libvirt-qcow2 15 saverestore-support-check    fail never pass
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-arm64-arm64-libvirt-raw 14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 15 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-vhd 14 migrate-support-check        fail   never pass
 test-armhf-armhf-libvirt-qcow2 14 migrate-support-check        fail never pass
 test-armhf-armhf-libvirt-raw 14 migrate-support-check        fail   never pass

version targeted for testing:
 libvirt              642af05e3e58b90cb9d15936678f16bd7e454d26
baseline version:
 libvirt              1785eb8dc93be6a027b97678d4b73afd3806ba0f

Last test of basis   184409  2024-01-20 04:18:56 Z    3 days
Testing same since   184431  2024-01-23 04:20:35 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Biswapriyo Nath <nathbappai@gmail.com>
  Göran Uddeborg <goeran@uddeborg.se>
  Mariam Low-Ghelaghutashvili <mariamlow@zusmail.xyz>

jobs:
 build-amd64-xsm                                              pass    
 build-arm64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64                                                  pass    
 build-arm64                                                  pass    
 build-armhf                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-arm64-libvirt                                          pass    
 build-armhf-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-pvops                                            pass    
 build-arm64-pvops                                            pass    
 build-armhf-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm           pass    
 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm            pass    
 test-amd64-amd64-libvirt-xsm                                 pass    
 test-arm64-arm64-libvirt-xsm                                 pass    
 test-amd64-i386-libvirt-xsm                                  pass    
 test-amd64-amd64-libvirt                                     pass    
 test-arm64-arm64-libvirt                                     pass    
 test-armhf-armhf-libvirt                                     pass    
 test-amd64-i386-libvirt                                      pass    
 test-amd64-amd64-libvirt-pair                                pass    
 test-amd64-i386-libvirt-pair                                 pass    
 test-arm64-arm64-libvirt-qcow2                               pass    
 test-armhf-armhf-libvirt-qcow2                               pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-armhf-armhf-libvirt-raw                                 pass    
 test-amd64-i386-libvirt-raw                                  pass    
 test-amd64-amd64-libvirt-vhd                                 pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Pushing revision :

To xenbits.xen.org:/home/xen/git/libvirt.git
   1785eb8dc9..642af05e3e  642af05e3e58b90cb9d15936678f16bd7e454d26 -> xen-tested-master


From xen-devel-bounces@lists.xenproject.org Tue Jan 23 13:04:39 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 23 Jan 2024 13:04:39 +0000
Received: from list by lists.xenproject.org with outflank-mailman.670455.1043229 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSGSA-0001lr-8b; Tue, 23 Jan 2024 13:04:34 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 670455.1043229; Tue, 23 Jan 2024 13:04:34 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSGSA-0001lk-4x; Tue, 23 Jan 2024 13:04:34 +0000
Received: by outflank-mailman (input) for mailman id 670455;
 Tue, 23 Jan 2024 13:04:32 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=9pmr=JB=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rSGS8-0001le-Jh
 for xen-devel@lists.xenproject.org; Tue, 23 Jan 2024 13:04:32 +0000
Received: from mail-lj1-x232.google.com (mail-lj1-x232.google.com
 [2a00:1450:4864:20::232])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id f274da14-b9ef-11ee-98f4-6d05b1d4d9a1;
 Tue, 23 Jan 2024 14:04:31 +0100 (CET)
Received: by mail-lj1-x232.google.com with SMTP id
 38308e7fff4ca-2cf050ea05fso13002871fa.3
 for <xen-devel@lists.xenproject.org>; Tue, 23 Jan 2024 05:04:31 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 l4-20020a056e020dc400b00361b63c710csm2364993ilj.52.2024.01.23.05.03.51
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 23 Jan 2024 05:03:55 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: f274da14-b9ef-11ee-98f4-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1706015070; x=1706619870; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=dVerTuY2VWNFHuxR9mHV3aTv2KNLpz8rUsZqEySeP0s=;
        b=KJ1+ab+3cs1ORTi5EWlXCYSXBW8bClVgpjj7Zs+DhVPhPD0GCXynx7SSSdD+x2Ee5m
         Y8XTDtesbmUC4rAId7wuwlGFOfNdKHmoujnLfmvgS5yhaIrs0IXpIlgQVkbCp2dHdwhx
         O610c4S1inC1RlyfcDR3irGv6/JKSjX5FpmAf70uHpftzDk9khbNZn9zXP/daSFY+a59
         yFNOrPPWpB+eeHrJzRIc77jMNu3yOnxui9MFatJBy2DDgAdrgwK07jehB686SmkftezK
         8zEU0JQnHBx70+DuOMo3oA0VyYeDErCb5N+MaesIx9Y9+NnD83VyFd3zHtcSLQGUIB1I
         A39Q==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706015070; x=1706619870;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=dVerTuY2VWNFHuxR9mHV3aTv2KNLpz8rUsZqEySeP0s=;
        b=jrKSq1qRfz9o/r2KN+oCwQ+lSYyk6fa4kVzRkKRyT7D9eufNO+g+gqSqeURvcbArb4
         NOrAAm7EmO0SqDhM6sZLtY5ctbJb9naUTh7t0SOR6hmXBk5hKCmkoVgsKedtWN/LlDHL
         jWSuSp8Nxtsbn2Y/9PmOKPe7hUzKvUkP3rD71ZuY7BZ+b+Dkh2ZDaXNhuXMUseYgX1pq
         w4eWV302/vHR1z65oKh9kxFkmoZVczbkl7GpYFQOa5sILfy8NpA8zZasJt0zEN6abNlY
         DbQV64kEMtA34ifm38FXh6TKBzXGN+Uyf5CNymlUFmgu01vIAHsjQEB9BJRYGlsPo5yV
         FCqw==
X-Gm-Message-State: AOJu0YzH44wc7wt/qGyeQLfMyPJHSwttIOgOon3+uNqbl0PDQLcV7b69
	RjOOTqj1Zr/N6ItEf1yIV5R4HUNBrvGhO8E9Er95KjKxXjdIXvWbaft9/uFDs3soDLbLi2fi+KU
	=
X-Google-Smtp-Source: AGHT+IFBvzGUqviNiApwv0SH6G0gkxSf8fe+Fa2PF749n04XugT7YKL+R9uKaLCw4pOUOWaUFlZyKA==
X-Received: by 2002:a2e:9813:0:b0:2cd:fa17:cc2a with SMTP id a19-20020a2e9813000000b002cdfa17cc2amr2291559ljj.47.1706015070507;
        Tue, 23 Jan 2024 05:04:30 -0800 (PST)
Message-ID: <d347c4d9-e93b-4937-8e33-e5fbbdcd6bfb@suse.com>
Date: Tue, 23 Jan 2024 14:03:49 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 31/34] xen/riscv: add minimal stuff to mm.h to build
 full Xen
Content-Language: en-US
To: Oleksii Kurochko <oleksii.kurochko@gmail.com>
Cc: Alistair Francis <alistair.francis@wdc.com>,
 Bob Eshleman <bobbyeshleman@gmail.com>, Connor Davis
 <connojdavis@gmail.com>, Andrew Cooper <andrew.cooper3@citrix.com>,
 George Dunlap <george.dunlap@citrix.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>,
 xen-devel@lists.xenproject.org
References: <cover.1703255175.git.oleksii.kurochko@gmail.com>
 <4411f6af38586074b347cd6005f19f9c670faa74.1703255175.git.oleksii.kurochko@gmail.com>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <4411f6af38586074b347cd6005f19f9c670faa74.1703255175.git.oleksii.kurochko@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 22.12.2023 16:13, Oleksii Kurochko wrote:
> Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>
> ---
> Changes in V3:
>  - update the commit message

??? (yet again)

> --- a/xen/arch/riscv/include/asm/mm.h
> +++ b/xen/arch/riscv/include/asm/mm.h
> @@ -3,8 +3,251 @@
>  #ifndef _ASM_RISCV_MM_H
>  #define _ASM_RISCV_MM_H
>  
> +#include <public/xen.h>
> +#include <xen/pdx.h>
> +#include <xen/types.h>
> +
> +#include <asm/page.h>
>  #include <asm/page-bits.h>
>  
> +#define paddr_to_pdx(pa)    mfn_to_pdx(maddr_to_mfn(pa))
> +#define gfn_to_gaddr(gfn)   pfn_to_paddr(gfn_x(gfn))
> +#define gaddr_to_gfn(ga)    _gfn(paddr_to_pfn(ga))
> +#define mfn_to_maddr(mfn)   pfn_to_paddr(mfn_x(mfn))
> +#define maddr_to_mfn(ma)    _mfn(paddr_to_pfn(ma))
> +#define vmap_to_mfn(va)     maddr_to_mfn(virt_to_maddr((vaddr_t)va))
> +#define vmap_to_page(va)    mfn_to_page(vmap_to_mfn(va))

Everything you have above ...

> +#define paddr_to_pdx(pa)    mfn_to_pdx(maddr_to_mfn(pa))
> +#define gfn_to_gaddr(gfn)   pfn_to_paddr(gfn_x(gfn))
> +#define gaddr_to_gfn(ga)    _gfn(paddr_to_pfn(ga))
> +#define mfn_to_maddr(mfn)   pfn_to_paddr(mfn_x(mfn))
> +#define maddr_to_mfn(ma)    _mfn(paddr_to_pfn(ma))
> +#define vmap_to_mfn(va)     maddr_to_mfn(virt_to_maddr((vaddr_t)va))
> +#define vmap_to_page(va)    mfn_to_page(vmap_to_mfn(va))

... appears a 2nd time right afterwards.

> +#define virt_to_maddr(va) ((paddr_t)((vaddr_t)(va) & PADDR_MASK))
> +#define maddr_to_virt(pa) ((void *)((paddr_t)(pa) | DIRECTMAP_VIRT_START))
> +
> +/* Convert between Xen-heap virtual addresses and machine frame numbers. */
> +#define __virt_to_mfn(va) (virt_to_maddr(va) >> PAGE_SHIFT)
> +#define __mfn_to_virt(mfn) maddr_to_virt((paddr_t)(mfn) << PAGE_SHIFT)

These would imo better use maddr_to_mfn() and mfn_to_maddr(), rather than
kind of open-coding them. The former could also use PFN_DOWN() as an
alternative.

> +/* Convert between Xen-heap virtual addresses and page-info structures. */
> +static inline struct page_info *virt_to_page(const void *v)
> +{
> +    BUG();
> +    return NULL;
> +}
> +
> +/*
> + * We define non-underscored wrappers for above conversion functions.
> + * These are overriden in various source files while underscored version
> + * remain intact.
> + */
> +#define virt_to_mfn(va)     __virt_to_mfn(va)
> +#define mfn_to_virt(mfn)    __mfn_to_virt(mfn)

Is this really still needed? Would be pretty nice if in a new port we
could get to start cleanly right away (i.e. by not needing per-file
overrides, but using type-safe expansions here right away).

> +struct page_info
> +{
> +    /* Each frame can be threaded onto a doubly-linked list. */
> +    struct page_list_entry list;
> +
> +    /* Reference count and various PGC_xxx flags and fields. */
> +    unsigned long count_info;
> +
> +    /* Context-dependent fields follow... */
> +    union {
> +        /* Page is in use: ((count_info & PGC_count_mask) != 0). */
> +        struct {
> +            /* Type reference count and various PGT_xxx flags and fields. */
> +            unsigned long type_info;
> +        } inuse;
> +        /* Page is on a free list: ((count_info & PGC_count_mask) == 0). */
> +        union {
> +            struct {
> +                /*
> +                 * Index of the first *possibly* unscrubbed page in the buddy.
> +                 * One more bit than maximum possible order to accommodate
> +                 * INVALID_DIRTY_IDX.
> +                 */
> +#define INVALID_DIRTY_IDX ((1UL << (MAX_ORDER + 1)) - 1)
> +                unsigned long first_dirty:MAX_ORDER + 1;
> +
> +                /* Do TLBs need flushing for safety before next page use? */
> +                bool need_tlbflush:1;
> +
> +#define BUDDY_NOT_SCRUBBING    0
> +#define BUDDY_SCRUBBING        1
> +#define BUDDY_SCRUB_ABORT      2
> +                unsigned long scrub_state:2;
> +            };
> +
> +                unsigned long val;
> +            } free;

Indentation is wrong (and thus misleading) for these two lines.

> +
> +    } u;

Nit: I don't see the value of the trailing blank line inside the
union.

> +    union {
> +        /* Page is in use, but not as a shadow. */

I question the appicability of "shadow" here.

> +        struct {
> +            /* Owner of this page (zero if page is anonymous). */
> +            struct domain *domain;
> +        } inuse;
> +
> +        /* Page is on a free list. */
> +        struct {
> +            /* Order-size of the free chunk this page is the head of. */
> +            unsigned int order;
> +        } free;
> +
> +    } v;
> +
> +    union {
> +        /*
> +         * Timestamp from 'TLB clock', used to avoid extra safety flushes.
> +         * Only valid for: a) free pages, and b) pages with zero type count
> +         */
> +        uint32_t tlbflush_timestamp;
> +    };
> +    uint64_t pad;
> +};
> +
> +#define frame_table ((struct page_info *)FRAMETABLE_VIRT_START)
> +
> +/* PDX of the first page in the frame table. */
> +extern unsigned long frametable_base_pdx;

>From this I conclude memory on RISC-V systems may not start at (or near) 0?

> +/* Convert between machine frame numbers and page-info structures. */
> +#define mfn_to_page(mfn)                                            \
> +    (frame_table + (mfn_to_pdx(mfn) - frametable_base_pdx))
> +#define page_to_mfn(pg)                                             \
> +    pdx_to_mfn((unsigned long)((pg) - frame_table) + frametable_base_pdx)
> +
> +static inline void *page_to_virt(const struct page_info *pg)
> +{
> +    return mfn_to_virt(mfn_x(page_to_mfn(pg)));
> +}
> +
> +/*
> + * Common code requires get_page_type and put_page_type.
> + * We don't care about typecounts so we just do the minimum to make it
> + * happy.
> + */
> +static inline int get_page_type(struct page_info *page, unsigned long type)
> +{
> +    return 1;
> +}
> +
> +static inline void put_page_type(struct page_info *page)
> +{
> +}
> +
> +static inline void put_page_and_type(struct page_info *page)
> +{
> +    put_page_type(page);
> +    put_page(page);
> +}
> +
> +/*
> + * RISC-V does not have an M2P, but common code expects a handful of
> + * M2P-related defines and functions. Provide dummy versions of these.
> + */
> +#define INVALID_M2P_ENTRY        (~0UL)
> +#define SHARED_M2P_ENTRY         (~0UL - 1UL)
> +#define SHARED_M2P(_e)           ((_e) == SHARED_M2P_ENTRY)
> +
> +/* Xen always owns P2M on RISC-V */
> +#define set_gpfn_from_mfn(mfn, pfn) do { (void) (mfn), (void)(pfn); } while (0)

Nit: Stray blank again after cast.

> +#define mfn_to_gfn(d, mfn) ((void)(d), _gfn(mfn_x(mfn)))

What's the relation of the comment with these two #define-s?

> +#define PDX_GROUP_SHIFT (16 + 5)
> +
> +static inline unsigned long domain_get_maximum_gpfn(struct domain *d)
> +{
> +    BUG();
> +    return 0;
> +}
> +
> +static inline long arch_memory_op(int op, XEN_GUEST_HANDLE_PARAM(void) arg)
> +{
> +    BUG();
> +    return 0;
> +}
> +
> +/*
> + * On RISCV, all the RAM is currently direct mapped in Xen.
> + * Hence return always true.
> + */
> +static inline bool arch_mfns_in_directmap(unsigned long mfn, unsigned long nr)
> +{
> +    return true;
> +}
> +
> +#define PG_shift(idx)   (BITS_PER_LONG - (idx))
> +#define PG_mask(x, idx) (x ## UL << PG_shift(idx))
> +
> +#define PGT_none          PG_mask(0, 1)  /* no special uses of this page   */
> +#define PGT_writable_page PG_mask(1, 1)  /* has writable mappings?         */
> +#define PGT_type_mask     PG_mask(1, 1)  /* Bits 31 or 63.                 */
> +
> + /* Count of uses of this frame as its current type. */
> +#define PGT_count_width   PG_shift(2)
> +#define PGT_count_mask    ((1UL<<PGT_count_width)-1)

Nit: Style (missing blanks around binary operators). Also a few more
times further down.

> +/*
> + * Page needs to be scrubbed. Since this bit can only be set on a page that is
> + * free (i.e. in PGC_state_free) we can reuse PGC_allocated bit.
> + */
> +#define _PGC_need_scrub   _PGC_allocated
> +#define PGC_need_scrub    PGC_allocated
> +
> +//  /* Cleared when the owning guest 'frees' this page. */

Why a commented out comment?

> +#define _PGC_allocated    PG_shift(1)
> +#define PGC_allocated     PG_mask(1, 1)
> +  /* Page is Xen heap? */
> +#define _PGC_xen_heap     PG_shift(2)
> +#define PGC_xen_heap      PG_mask(1, 2)
> +/* Page is broken? */
> +#define _PGC_broken       PG_shift(7)
> +#define PGC_broken        PG_mask(1, 7)
> + /* Mutually-exclusive page states: { inuse, offlining, offlined, free }. */

Can similar comments in this block please all be similarly indented
(or not)?

> +#define PGC_state         PG_mask(3, 9)
> +#define PGC_state_inuse   PG_mask(0, 9)
> +#define PGC_state_offlining PG_mask(1, 9)
> +#define PGC_state_offlined PG_mask(2, 9)
> +#define PGC_state_free    PG_mask(3, 9)
> +// #define page_state_is(pg, st) (((pg)->count_info&PGC_state) == PGC_state_##st)

???

> +/* Count of references to this frame. */
> +#define PGC_count_width   PG_shift(9)
> +#define PGC_count_mask    ((1UL<<PGC_count_width)-1)
> +
> +#define page_state_is(pg, st) (((pg)->count_info&PGC_state) == PGC_state_##st)

And here it then "properly" appears?

> +#define _PGC_extra        PG_shift(10)
> +#define PGC_extra         PG_mask(1, 10)
> +
> +#define is_xen_heap_page(page) ((page)->count_info & PGC_xen_heap)
> +#define is_xen_heap_mfn(mfn) \
> +    (mfn_valid(mfn) && is_xen_heap_page(mfn_to_page(mfn)))
> +
> +#define is_xen_fixed_mfn(mfn)                                   \
> +    ((mfn_to_maddr(mfn) >= virt_to_maddr(&_start)) &&           \
> +     (mfn_to_maddr(mfn) <= virt_to_maddr((vaddr_t)_end - 1)))

Why does _start need prefixing wuth & and _end prefixing with a cast?
First and foremost both want to be consistent. And then preferably
with as little extra clutter as possible.

> +#define page_get_owner(_p)    (_p)->v.inuse.domain
> +#define page_set_owner(_p,_d) ((_p)->v.inuse.domain = (_d))
> +
> +/* TODO: implement */
> +#define mfn_valid(mfn) ({ (void) (mfn); 0; })
> +
> +#define mfn_to_gfn(d, mfn) ((void)(d), _gfn(mfn_x(mfn)))

This appeared further up already.

> +#define domain_set_alloc_bitsize(d) ((void)0)

Better ((void)(d)) ? And then ...

> +#define domain_clamp_alloc_bitsize(d, b) (b)

... ((void)(d), (b)) here?

Jan


From xen-devel-bounces@lists.xenproject.org Tue Jan 23 13:20:29 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 23 Jan 2024 13:20:29 +0000
Received: from list by lists.xenproject.org with outflank-mailman.670461.1043238 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSGhG-0005hW-Kg; Tue, 23 Jan 2024 13:20:10 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 670461.1043238; Tue, 23 Jan 2024 13:20:10 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSGhG-0005hP-Hx; Tue, 23 Jan 2024 13:20:10 +0000
Received: by outflank-mailman (input) for mailman id 670461;
 Tue, 23 Jan 2024 13:20:10 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=9pmr=JB=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rSGhG-0005hJ-0T
 for xen-devel@lists.xenproject.org; Tue, 23 Jan 2024 13:20:10 +0000
Received: from mail-lj1-x233.google.com (mail-lj1-x233.google.com
 [2a00:1450:4864:20::233])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 212ce1ef-b9f2-11ee-98f4-6d05b1d4d9a1;
 Tue, 23 Jan 2024 14:20:08 +0100 (CET)
Received: by mail-lj1-x233.google.com with SMTP id
 38308e7fff4ca-2cf1288097aso5987061fa.0
 for <xen-devel@lists.xenproject.org>; Tue, 23 Jan 2024 05:20:08 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 x8-20020a056e02194800b003627f685d1dsm1255464ilu.39.2024.01.23.05.20.05
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 23 Jan 2024 05:20:07 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 212ce1ef-b9f2-11ee-98f4-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1706016008; x=1706620808; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=MNpkTzW8tlphLuctg+GxMzUFCbqwaCnOHkPrxRRG6I4=;
        b=J3NiO9KnoMm8/GDuDJnH6bk8XX68UobtET+QpknbNJP+TkynG1nGFQ6xmmuLBsVJ8/
         Dw6d6Copv6JYNZ9km9CMCUt4PgwlqGC7c5Hok8y6lcO3eOkXIZXLo+WvASLPsA0GiJUr
         A8vdyUs3HVEfjcSm6eqIkEDC9Bnp6K9Bh6QrIYb3FTaXyjOF89U4cHHSUkAJ/vsf7NBY
         Bs4s+22csi1GnQZi6mCamoxtTWoHHzWjR+RtNPqWpx6OXBMURNef1BRDEndD3Tq2RllS
         nwHRVSB69TSMteVjXJtmGqCqRSOv0/hqObJu754eDwL+FL3+IRU7avlATohF282zS1+C
         Byag==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706016008; x=1706620808;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=MNpkTzW8tlphLuctg+GxMzUFCbqwaCnOHkPrxRRG6I4=;
        b=VQ4u0M/u2leUMYhn4eAMp0OgsXmLE8b8CVbWjT0usNk2bmcILZDZwP085ZtgMucOpe
         TE2Apw3obDvtqq3wCJ6eagXZAHr5YcFJVDLyEdpuj+yJEBEu+OR27GdpvzGXuj352lkX
         +zn2JkGdnuKhavVAdvt5dU/IDnfA7DWihi7mM+UPQVOnTA14tKbtDs/M42PwoFNeY3A9
         CaKNR4p6/EfhH2tuVCLUd9wXXpsTXynV+kZ2B264rlyWOcf7jO9UEgKaWGEw/k2SsG1k
         sYCEo6xt7/W4MDpeIHnSgl+m1UA8nWQoUpZz0p0atx+bdkz56VBmbPfDB0G0mZXt56FZ
         EBBw==
X-Gm-Message-State: AOJu0YzZT5+6O4y87966USkxCydc8/7QTPRJgfTpUODGmNMiE9ggX3wH
	bEoZu2kbQUvvgGHz/Pr6naUISGVZoYIoZolxmlNxNU3mpx3eX5MpRDxSXcwAVQ==
X-Google-Smtp-Source: AGHT+IH0uO5ZUAZB/FwbDupMMtqvMpu4Kmo/vwLFM711p489jBQhux/GdFHCOcUv3NK6WdJrg7ibWg==
X-Received: by 2002:a05:651c:116:b0:2ce:4d4:6f1c with SMTP id a22-20020a05651c011600b002ce04d46f1cmr2649880ljb.45.1706016008013;
        Tue, 23 Jan 2024 05:20:08 -0800 (PST)
Message-ID: <de4c3443-cede-487b-b3b3-28e92d3dc6e7@suse.com>
Date: Tue, 23 Jan 2024 14:20:03 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 32/34] xen/rirscv: add minimal amount of stubs to build
 full Xen
Content-Language: en-US
To: Oleksii Kurochko <oleksii.kurochko@gmail.com>
Cc: Alistair Francis <alistair.francis@wdc.com>,
 Bob Eshleman <bobbyeshleman@gmail.com>, Connor Davis
 <connojdavis@gmail.com>, Andrew Cooper <andrew.cooper3@citrix.com>,
 George Dunlap <george.dunlap@citrix.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>,
 xen-devel@lists.xenproject.org
References: <cover.1703255175.git.oleksii.kurochko@gmail.com>
 <e40d3e396733ec9e85d72fc3e9f05be97881a763.1703255175.git.oleksii.kurochko@gmail.com>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <e40d3e396733ec9e85d72fc3e9f05be97881a763.1703255175.git.oleksii.kurochko@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 22.12.2023 16:13, Oleksii Kurochko wrote:
> --- a/xen/arch/riscv/early_printk.c
> +++ b/xen/arch/riscv/early_printk.c
> @@ -40,171 +40,3 @@ void early_printk(const char *str)
>          str++;
>      }
>  }
> -
> -/*
> - * The following #if 1 ... #endif should be removed after printk
> - * and related stuff are ready.
> - */
> -#if 1
> -
> -#include <xen/stdarg.h>
> -#include <xen/string.h>
> -
> -/**
> - * strlen - Find the length of a string
> - * @s: The string to be sized
> - */
> -size_t (strlen)(const char * s)
> -{
> -    const char *sc;
> -
> -    for (sc = s; *sc != '\0'; ++sc)
> -        /* nothing */;
> -    return sc - s;
> -}
> -
> -/**
> - * memcpy - Copy one area of memory to another
> - * @dest: Where to copy to
> - * @src: Where to copy from
> - * @count: The size of the area.
> - *
> - * You should not use this function to access IO space, use memcpy_toio()
> - * or memcpy_fromio() instead.
> - */
> -void *(memcpy)(void *dest, const void *src, size_t count)
> -{
> -    char *tmp = (char *) dest, *s = (char *) src;
> -
> -    while (count--)
> -        *tmp++ = *s++;
> -
> -    return dest;
> -}
> -
> -int vsnprintf(char* str, size_t size, const char* format, va_list args)
> -{
> -    size_t i = 0; /* Current position in the output string */
> -    size_t written = 0; /* Total number of characters written */
> -    char* dest = str;
> -
> -    while ( format[i] != '\0' && written < size - 1 )
> -    {
> -        if ( format[i] == '%' )
> -        {
> -            i++;
> -
> -            if ( format[i] == '\0' )
> -                break;
> -
> -            if ( format[i] == '%' )
> -            {
> -                if ( written < size - 1 )
> -                {
> -                    dest[written] = '%';
> -                    written++;
> -                }
> -                i++;
> -                continue;
> -            }
> -
> -            /*
> -             * Handle format specifiers.
> -             * For simplicity, only %s and %d are implemented here.
> -             */
> -
> -            if ( format[i] == 's' )
> -            {
> -                char* arg = va_arg(args, char*);
> -                size_t arglen = strlen(arg);
> -
> -                size_t remaining = size - written - 1;
> -
> -                if ( arglen > remaining )
> -                    arglen = remaining;
> -
> -                memcpy(dest + written, arg, arglen);
> -
> -                written += arglen;
> -                i++;
> -            }
> -            else if ( format[i] == 'd' )
> -            {
> -                int arg = va_arg(args, int);
> -
> -                /* Convert the integer to string representation */
> -                char numstr[32]; /* Assumes a maximum of 32 digits */
> -                int numlen = 0;
> -                int num = arg;
> -                size_t remaining;
> -
> -                if ( arg < 0 )
> -                {
> -                    if ( written < size - 1 )
> -                    {
> -                        dest[written] = '-';
> -                        written++;
> -                    }
> -
> -                    num = -arg;
> -                }
> -
> -                do
> -                {
> -                    numstr[numlen] = '0' + num % 10;
> -                    num = num / 10;
> -                    numlen++;
> -                } while ( num > 0 );
> -
> -                /* Reverse the string */
> -                for (int j = 0; j < numlen / 2; j++)
> -                {
> -                    char tmp = numstr[j];
> -                    numstr[j] = numstr[numlen - 1 - j];
> -                    numstr[numlen - 1 - j] = tmp;
> -                }
> -
> -                remaining = size - written - 1;
> -
> -                if ( numlen > remaining )
> -                    numlen = remaining;
> -
> -                memcpy(dest + written, numstr, numlen);
> -
> -                written += numlen;
> -                i++;
> -            }
> -        }
> -        else
> -        {
> -            if ( written < size - 1 )
> -            {
> -                dest[written] = format[i];
> -                written++;
> -            }
> -            i++;
> -        }
> -    }
> -
> -    if ( size > 0 )
> -        dest[written] = '\0';
> -
> -    return written;
> -}
> -
> -void printk(const char *format, ...)
> -{
> -    static char buf[1024];
> -
> -    va_list args;
> -    va_start(args, format);
> -
> -    (void)vsnprintf(buf, sizeof(buf), format, args);
> -
> -    early_printk(buf);
> -
> -    va_end(args);
> -}
> -
> -#endif
> -

Aren't you transiently breaking the build by removing these here, rather
than in the next patch?

> --- /dev/null
> +++ b/xen/arch/riscv/stubs.c
> @@ -0,0 +1,422 @@
> +/* SPDX-License-Identifier: GPL-2.0-only */
> +#include <xen/cpumask.h>
> +#include <xen/domain.h>
> +#include <xen/irq.h>
> +#include <xen/nodemask.h>
> +#include <xen/time.h>
> +#include <public/domctl.h>
> +
> +#include <asm/current.h>
> +
> +/* smpboot.c */
> +
> +cpumask_t cpu_online_map;
> +cpumask_t cpu_present_map;
> +cpumask_t cpu_possible_map;
> +
> +/* ID of the PCPU we're running on */
> +DEFINE_PER_CPU(unsigned int, cpu_id);
> +/* XXX these seem awfully x86ish... */
> +/* representing HT siblings of each logical CPU */
> +DEFINE_PER_CPU_READ_MOSTLY(cpumask_var_t, cpu_sibling_mask);
> +/* representing HT and core siblings of each logical CPU */
> +DEFINE_PER_CPU_READ_MOSTLY(cpumask_var_t, cpu_core_mask);
> +
> +nodemask_t __read_mostly node_online_map = { { [0] = 1UL } };
> +
> +/* time.c */
> +
> +unsigned long __read_mostly cpu_khz;  /* CPU clock frequency in kHz. */

__ro_after_init?

> +s_time_t get_s_time(void)
> +{
> +    BUG();
> +}
> +
> +int reprogram_timer(s_time_t timeout)
> +{
> +    BUG();
> +}
> +
> +void send_timer_event(struct vcpu *v)
> +{
> +    BUG();
> +}
> +
> +void domain_set_time_offset(struct domain *d, int64_t time_offset_seconds)
> +{
> +    BUG();
> +}
> +
> +/* shutdown.c */
> +
> +void machine_restart(unsigned int delay_millisecs)
> +{
> +    BUG();
> +}
> +
> +void machine_halt(void)
> +{
> +    BUG();
> +}
> +
> +/* vm_event.c */
> +
> +struct vm_event_st;
> +
> +void vm_event_fill_regs(struct vm_event_st *req)
> +{
> +    BUG();
> +}
> +
> +void vm_event_set_registers(struct vcpu *v, struct vm_event_st *rsp)
> +{
> +    BUG();
> +}
> +
> +void vm_event_monitor_next_interrupt(struct vcpu *v)
> +{
> +    /* Not supported on RISCV. */
> +}
> +
> +void vm_event_reset_vmtrace(struct vcpu *v)
> +{
> +    /* Not supported on RISCV. */
> +}

Judging from the comments these last two are in their final shape.
Wouldn't it make sense to put them in vm_event.c right away then? And
then perhaps together with the two stubs?

Yet then - Arm gets away without vm_event_reset_vmtrace()? Can you
explain why the same isn't true for RISC-V?

> @@ -11,3 +15,24 @@ void do_trap(struct cpu_user_regs *cpu_regs)
>  {
>      die();
>  }
> +
> +void vcpu_show_execution_state(struct vcpu *v)
> +{
> +    assert_failed("need to be implented");

Just to mention it again - the expectation is that all instances will
use the same "canonical" pattern for identifying yet-to-be-implemented
functions.

Jan


From xen-devel-bounces@lists.xenproject.org Tue Jan 23 13:27:40 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 23 Jan 2024 13:27:40 +0000
Received: from list by lists.xenproject.org with outflank-mailman.670465.1043248 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSGoR-00078A-Cb; Tue, 23 Jan 2024 13:27:35 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 670465.1043248; Tue, 23 Jan 2024 13:27:35 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSGoR-000783-9O; Tue, 23 Jan 2024 13:27:35 +0000
Received: by outflank-mailman (input) for mailman id 670465;
 Tue, 23 Jan 2024 13:27:34 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=9pmr=JB=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rSGoQ-00077x-NM
 for xen-devel@lists.xenproject.org; Tue, 23 Jan 2024 13:27:34 +0000
Received: from mail-lj1-x232.google.com (mail-lj1-x232.google.com
 [2a00:1450:4864:20::232])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 292f2f1d-b9f3-11ee-9b0f-b553b5be7939;
 Tue, 23 Jan 2024 14:27:31 +0100 (CET)
Received: by mail-lj1-x232.google.com with SMTP id
 38308e7fff4ca-2ccec119587so55166511fa.0
 for <xen-devel@lists.xenproject.org>; Tue, 23 Jan 2024 05:27:31 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 i25-20020a02c619000000b0046eae1a6315sm3266967jan.72.2024.01.23.05.27.28
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 23 Jan 2024 05:27:30 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 292f2f1d-b9f3-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1706016451; x=1706621251; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=9a3jHtmMOkulxjo3AkPWd9rRNL8eV9mCiBoXs6cGBdg=;
        b=C+6Q7Amm7qNZJbSz77tXIGmKEMMSAZiMuNRYQTmMuXy0RcX2fP6e9tFeGeD5VHE7sF
         DYyft+tYVze67RDRx6l+zwu4PP5mUFQIFGA7q+BacnCUsiPKMAaXS5Zu4tvMDIKDStWd
         RvIvH4a/KWg2YQcCQf4f9fpqnFYEN0pOyksDZh9LmqqkC7AnF8kadmpte+1sD4ETrUmw
         yoxa2FBdt8Ood+egR7z2PUzKWW6+9BdiM0gMFEMPUYlFTLVjfkH4chSbpY1dzixzr1rS
         RCpUzbWeiiXwrsvh906kKOTnJbXZXtGp6COnUSymLJ3kimScT0m1oS9v5+lxWyzrdbhO
         q+PQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706016451; x=1706621251;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=9a3jHtmMOkulxjo3AkPWd9rRNL8eV9mCiBoXs6cGBdg=;
        b=hU0pf5Ow4Lh3Z1mJwODlTX2XQrsk+jkTkzgf5RD0mzVnyTUncoo4Z1OwGc3YQrmj4m
         AdugFcGRc0XYR6oy4SJHPn1QjiK+5roHueV9KZgCwP32RY2zzXYbV/8a2Njr8rvoNZ/W
         EPmXhivAZArYXfYFaGUmRCeLdkHDRqlWVv5oy4H+HvAQ/iGIl6BV6mvEqdqx8/piweWQ
         zqxijhaX8qpVErKjsQBLzo5CeTLKfpTppSvxWnmmdzrR/1g+1qPqei2Et+p++7UxkxRG
         Ej9qm0hMiZKlN2s9/aCCyojp8zT3cUCqH6s0iDLzwy0Qbp0dyM0pS4TPVGGgaxsaoL0x
         1dfg==
X-Gm-Message-State: AOJu0Ywu+23s0U3hg4UWmtrWw3hFT13qfhXiO4DNJEjoSoZVN5dOBETW
	Acc7wzbRmLtP5+hP3r5RNe3OVUWT7lKirY2yR6mX+QjsKNdwVmHiLTIYmIpseg==
X-Google-Smtp-Source: AGHT+IEjqa/Qv9HRlcdpQWbu3WdNTTHIyur0FqMt3TjO8NbgkZouFvKym5ujUi/xNywtGwgrOjha/A==
X-Received: by 2002:a05:651c:1511:b0:2cc:f5b6:91ed with SMTP id e17-20020a05651c151100b002ccf5b691edmr3818222ljf.23.1706016451000;
        Tue, 23 Jan 2024 05:27:31 -0800 (PST)
Message-ID: <c57e17ed-61db-4da2-975b-083bfabcbe47@suse.com>
Date: Tue, 23 Jan 2024 14:27:26 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 13/34] xen/riscv: introduce cmpxchg.h
Content-Language: en-US
To: Oleksii <oleksii.kurochko@gmail.com>
Cc: Alistair Francis <alistair.francis@wdc.com>,
 Bob Eshleman <bobbyeshleman@gmail.com>, Connor Davis
 <connojdavis@gmail.com>, Andrew Cooper <andrew.cooper3@citrix.com>,
 George Dunlap <george.dunlap@citrix.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>,
 xen-devel@lists.xenproject.org
References: <cover.1703255175.git.oleksii.kurochko@gmail.com>
 <214bfd61c8ccf2a5b2c640b815ebfa6a705f6234.1703255175.git.oleksii.kurochko@gmail.com>
 <8ee35a76-f3ef-4143-93ef-8e6089f82a80@suse.com>
 <56c23efdd79c0b1393ceef1adfcb45f66d4d1cf6.camel@gmail.com>
 <c5872ae0-a26a-4f51-bad6-08fd0c37d488@suse.com>
 <835c58c1deb89db2fa500bd7cd767facd5b5fb78.camel@gmail.com>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <835c58c1deb89db2fa500bd7cd767facd5b5fb78.camel@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 23.01.2024 13:18, Oleksii wrote:
> On Tue, 2024-01-23 at 11:28 +0100, Jan Beulich wrote:
>> On 23.01.2024 11:15, Oleksii wrote:
>>> On Mon, 2024-01-22 at 17:27 +0100, Jan Beulich wrote:
>>>> On 22.12.2023 16:12, Oleksii Kurochko wrote:
>>>>> +static inline unsigned long __xchg(volatile void *ptr,
>>>>> unsigned
>>>>> long x, int size)
>>>>> +{
>>>>> +    switch (size) {
>>>>> +    case 1:
>>>>> +        return __cmpxchg_case_1(ptr, (uint32_t)-1, x);
>>>>> +    case 2:
>>>>> +        return __cmpxchg_case_2(ptr, (uint32_t)-1, x);
>>>>
>>>> How are these going to work? You'll compare against ~0, and if
>>>> the
>>>> value
>>>> in memory isn't ~0, memory won't be updated; you will only
>>>> (correctly)
>>>> return the value found in memory.
>>>>
>>>> Or wait - looking at __cmpxchg_case_{1,2}() far further down, you
>>>> ignore
>>>> "old" there. Which apparently means they'll work for the use
>>>> here,
>>>> but
>>>> not for the use in __cmpxchg().
>>> Yes, the trick is that old is ignored and is read in
>>> __emulate_cmpxchg_case1_2() before __cmpxchg_case_4 is called:
>>>     do
>>> {                                                              
>>>         read_val =
>>> read_func(aligned_ptr);                            
>>>         swapped_new = read_val &
>>> ~mask;                               
>>>         swapped_new |=
>>> masked_new;                                    
>>>         ret = cmpxchg_func(aligned_ptr, read_val,
>>> swapped_new);       
>>>     } while ( ret != read_val
>>> );                                      
>>> read_val it is 'old'.
>>>
>>> But now I am not 100% sure that it is correct for __cmpxchg...
>>
>> It just can't be correct - you can't ignore "old" there. I think you
>> want simple cmpxchg primitives, which xchg then uses in a loop (while
>> cmpxchg uses them plainly).
> But xchg doesn't require 'old' value, so it should be ignored in some
> way by cmpxchg.

Well, no. If you have only cmpxchg, I think your only choice is - as
said - to read the old value and then loop over cmpxchg until that
succeeds. Not really different from other operations which need
emulating using cmpxchg.

>>>>> +static always_inline unsigned short __cmpxchg_case_2(volatile
>>>>> uint32_t *ptr,
>>>>> +                                                     uint32_t
>>>>> old,
>>>>> +                                                     uint32_t
>>>>> new)
>>>>> +{
>>>>> +    (void) old;
>>>>> +
>>>>> +    if (((unsigned long)ptr & 3) == 3)
>>>>> +    {
>>>>> +#ifdef CONFIG_64BIT
>>>>> +        return __emulate_cmpxchg_case1_2((uint64_t *)ptr, new,
>>>>> +                                         readq,
>>>>> __cmpxchg_case_8,
>>>>> 0xffffU);
>>>>
>>>> What if ((unsigned long)ptr & 7) == 7 (which is a sub-case of
>>>> what
>>>> the
>>>> if() above checks for? Isn't it more reasonable to require
>>>> aligned
>>>> 16-bit quantities here? Or if mis-aligned addresses are okay, you
>>>> could
>>>> as well emulate using __cmpxchg_case_4().
>>> Yes, it will be more reasonable. I'll use IS_ALIGNED instead.
>>
>> Not sure I get your use of "instead" here correctly. There's more
>> to change here than just the if() condition.
> I meant something like:
> 
> if ( IS_ALIGNED(ptr, 16) )
>     __emulate_cmpxchg_case1_2(...);
> else
>     assert_failed("ptr isn't aligned\n");

Except that you'd better not use assert_failed() directly anywhere,
and the above is easier as

    ASSERT(IS_ALIGNED(ptr, 16));
    __emulate_cmpxchg_case1_2(...);

anyway (leaving aside that I guess you mean 2, not 16).

Jan


From xen-devel-bounces@lists.xenproject.org Tue Jan 23 13:30:41 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 23 Jan 2024 13:30:41 +0000
Received: from list by lists.xenproject.org with outflank-mailman.670468.1043259 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSGrP-0000hO-RN; Tue, 23 Jan 2024 13:30:39 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 670468.1043259; Tue, 23 Jan 2024 13:30:39 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSGrP-0000hH-OW; Tue, 23 Jan 2024 13:30:39 +0000
Received: by outflank-mailman (input) for mailman id 670468;
 Tue, 23 Jan 2024 13:30:38 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=9pmr=JB=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rSGrO-0000h8-Qx
 for xen-devel@lists.xenproject.org; Tue, 23 Jan 2024 13:30:38 +0000
Received: from mail-lj1-x233.google.com (mail-lj1-x233.google.com
 [2a00:1450:4864:20::233])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 98262be6-b9f3-11ee-98f4-6d05b1d4d9a1;
 Tue, 23 Jan 2024 14:30:37 +0100 (CET)
Received: by mail-lj1-x233.google.com with SMTP id
 38308e7fff4ca-2cf161b5eadso5541961fa.2
 for <xen-devel@lists.xenproject.org>; Tue, 23 Jan 2024 05:30:37 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 m11-20020a056e020deb00b003625add635csm2104077ilj.5.2024.01.23.05.30.34
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 23 Jan 2024 05:30:36 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 98262be6-b9f3-11ee-98f4-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1706016637; x=1706621437; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=s4ULTVFwnm6r1auzaNW8I9JXIMdGI+fPznSvcFRMZXk=;
        b=HjCR8mmGoZM5Nqpkg/IUoB7PrVtMZ/7YgxMhxVqb7qbmyMTCSvNKeknq4IcJ0ZiYoP
         vTIPQUMl9LfLJJOv9reuuKgs3JizOU7N/cf0lVXU/YdA+CbzVP+iGM4gjZUeRhH5MUJZ
         RtAmy0Ft6vtZGIVvaoqy0ljsQMXGotc4ObWR+28I6h+HuCrRoKf0qMwkoXS0y7OfvJ2L
         PDfjv4NV1c14U+2gwwZw8AIuIENBUb8qNSFcrgFBMngCT93IVOKtCH7oOkWxYGWQI5Qc
         tHq0JyRABDMYERlXe8BG/v/wa7O5cw8GKLG9zmMt/+K37TuEnhIczeZNwaA+Hf3oj00+
         zocA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706016637; x=1706621437;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=s4ULTVFwnm6r1auzaNW8I9JXIMdGI+fPznSvcFRMZXk=;
        b=fj3ZQlqSGyYR+JRDTRi2Wui1W14rEuYeLGE4IPq43LH0C3OoJNnBxZqKCq8FseiEut
         WndEMRnH1eYjqJKdneIVaZiCT4NchyAAC1DlHQYwaGlAOL/MBxzNRvOv3O27ikV0aaxe
         7CI5ITdSpI78A82TgLA8r/LXa/4EviTATcfni3BP624FAjjVQu1TZfMf1Np4zsXEUdcD
         S8B0DpsSzuIZ2OPszNVGqTJSi1I+ua6bFIXjKbKeo48LvzdaPqcoQryp4n6djVqhVR/Z
         IARfa0hNZqaiFcksFQ1MVrCeDuWgtZyr1c+XH5y/qQzcDNTaRq3ck+qR1Z3R9aKedq6H
         sVqg==
X-Gm-Message-State: AOJu0YwMVq+dMGCGD+gGmsXIlfQvotC4m82x2KxMJegkMUP4pzSj5vB8
	O0IFf/dwGzenOksFgmFXsqF0bCI8dcCw1GKvgT8Ly0WBt6Xrhs68VIKVPnZuZQ==
X-Google-Smtp-Source: AGHT+IF6iE9ZNqhm820y1SH7c9XJoEi1xH80jU57KZmBjqV1/ajRJLS/DYWWPh3qsrev7hLEJKiKyA==
X-Received: by 2002:a2e:3015:0:b0:2cf:1a11:ea87 with SMTP id w21-20020a2e3015000000b002cf1a11ea87mr151419ljw.39.1706016637262;
        Tue, 23 Jan 2024 05:30:37 -0800 (PST)
Message-ID: <d33fe182-8283-4552-bc0e-3eac90f20d31@suse.com>
Date: Tue, 23 Jan 2024 14:30:32 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 15/34] xen/riscv: introduce atomic.h
Content-Language: en-US
To: Oleksii <oleksii.kurochko@gmail.com>
Cc: Bobby Eshleman <bobbyeshleman@gmail.com>,
 Alistair Francis <alistair.francis@wdc.com>,
 Connor Davis <connojdavis@gmail.com>,
 Andrew Cooper <andrew.cooper3@citrix.com>,
 George Dunlap <george.dunlap@citrix.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>,
 xen-devel@lists.xenproject.org
References: <cover.1703255175.git.oleksii.kurochko@gmail.com>
 <54f5f13a4ee3de3c3cf4ba2b4d0347bb77bb7d08.1703255175.git.oleksii.kurochko@gmail.com>
 <2429395f-3ce8-4f17-aabe-78af2446ff6d@suse.com>
 <92d7caf20a37b68dce7676812c2780bc2fbc00cf.camel@gmail.com>
 <6aa39fac-fef6-47ce-8c27-4941d83c138a@suse.com>
 <d7f89e6f4aae5c8cfa5215bd893b62a3d542ce4c.camel@gmail.com>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <d7f89e6f4aae5c8cfa5215bd893b62a3d542ce4c.camel@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 23.01.2024 13:24, Oleksii wrote:
> On Tue, 2024-01-23 at 11:30 +0100, Jan Beulich wrote:
>> On 23.01.2024 11:21, Oleksii wrote:
>>> On Mon, 2024-01-22 at 17:56 +0100, Jan Beulich wrote:
>>>> On 22.12.2023 16:12, Oleksii Kurochko wrote:
>>>>> --- /dev/null
>>>>> +++ b/xen/arch/riscv/include/asm/fence.h
>>>>> @@ -0,0 +1,13 @@
>>>>> +/* SPDX-License-Identifier: GPL-2.0-or-later */
>>>>> +#ifndef _ASM_RISCV_FENCE_H
>>>>> +#define _ASM_RISCV_FENCE_H
>>>>> +
>>>>> +#ifdef CONFIG_SMP
>>>>> +#define RISCV_ACQUIRE_BARRIER		"\tfence r , rw\n"
>>>>> +#define RISCV_RELEASE_BARRIER		"\tfence rw,  w\n"
>>>>> +#else
>>>>> +#define RISCV_ACQUIRE_BARRIER
>>>>> +#define RISCV_RELEASE_BARRIER
>>>>> +#endif
>>>>
>>>> Do you really care about the !SMP case? On x86 at least we
>>>> stopped
>>>> special-
>>>> casing that configuration many years ago (the few cases where for
>>>> typically
>>>> build reasons it matters, using CONFIG_NR_CPUS is sufficient). If
>>>> you
>>>> care
>>>> about it, there needs to be somewhere you actually #define
>>>> CONFIG_SMP.
>>> Can't we use instead of CONFIG_SMP - CONFIG_NR_CPUS?
>>
>> You can. Question is whether there's a point in doing so. Do you
>> expect people to actually want to run Xen on single-CPU systems?
>> They're generally not overly well suited for virtualization ...
> Just to clarify.
> 
> Do you mean physically single based CPU?
> Then I don't expect to run Xen on such systems and it is not nesessary
> to define *_BARRIER in this case. Should we have to add build error
> notification that we don't support single-CPU systems in this header?
> 
> If you are speaking about we have ,let it be, 4 CPUs and only 1 CPU is
> currently supported by Xen then it still makes sense.

No, that's still not what I mean. The question is: Is it useful for you
to _special case_ the NR_CPUS=1 case? Or is it instead simpler to handle
NR_CPUS=1 the same as NR_CPUS>1 (accepting less than ideal performance,
on the basis that in reality nobody's expected to use such in production
anyway)?

Jan


From xen-devel-bounces@lists.xenproject.org Tue Jan 23 13:37:14 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 23 Jan 2024 13:37:14 +0000
Received: from list by lists.xenproject.org with outflank-mailman.670475.1043268 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSGxh-0001oa-Jm; Tue, 23 Jan 2024 13:37:09 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 670475.1043268; Tue, 23 Jan 2024 13:37:09 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSGxh-0001oT-H7; Tue, 23 Jan 2024 13:37:09 +0000
Received: by outflank-mailman (input) for mailman id 670475;
 Tue, 23 Jan 2024 13:37:07 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=9pmr=JB=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rSGxf-0001oN-UT
 for xen-devel@lists.xenproject.org; Tue, 23 Jan 2024 13:37:07 +0000
Received: from mail-lj1-x22a.google.com (mail-lj1-x22a.google.com
 [2a00:1450:4864:20::22a])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 7f7227f7-b9f4-11ee-9b0f-b553b5be7939;
 Tue, 23 Jan 2024 14:37:05 +0100 (CET)
Received: by mail-lj1-x22a.google.com with SMTP id
 38308e7fff4ca-2cc9fa5e8e1so46454341fa.3
 for <xen-devel@lists.xenproject.org>; Tue, 23 Jan 2024 05:37:05 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 d69-20020a6bcd48000000b007baf1948186sm7086283iog.42.2024.01.23.05.37.03
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 23 Jan 2024 05:37:04 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 7f7227f7-b9f4-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1706017025; x=1706621825; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=8lzjifM8tNePZ/JouruoJaj9hrHv1zlwJTdDd8CFT7M=;
        b=c3IT8JhjNNZEpKMYBZ/tnmcAgDdqXpnobkbw41QjbcJY2WRRAHgPi2tfFJrW0pIzYJ
         23noYkRZMX5zVA194R8M1EtJOG1sX7drMe380NzQuOVuiz+FGFd4BY5JSi+xuShTtpTE
         Zr7vTuFSTFX9w8crmoVYeIk15AwJGcmUxlENkIW48jVEu0C7j+vLC9/PUxHqDb+UHPTS
         CsCrfcjUeWEptRrWgzgkBADeDzfeZF/xRsdTdoRFrofM9Z+cftMbwTu/bFNfbaQ5M4Z2
         I9MyMNXXYojtcL3E7BU3qAJuBFlKGKVEQnzXlg+JhFN+8LqbuELJWoBLQcXlxe9NuD/Y
         OKDA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706017025; x=1706621825;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=8lzjifM8tNePZ/JouruoJaj9hrHv1zlwJTdDd8CFT7M=;
        b=QG5iskPdDefcj7XKrw2m9SPBW39+laEXTbJu0sXkGtscaiuLwpmB9lWx6F8/T/kGXv
         hxBlstvIezCA512O5fV9GI6kTKaPvsFvb0cZDA1+sWJo0ad+FFJwR8MzNQLh/CsIbxut
         /irkIfJR6oXEJGX7HUSqBT4M6EMP+FFYtbPSpYEYfi/WX8M6LelL0tyQrO2NsiT+iUG2
         0CT6VhEPXnEdb8Coljb4jW8n6J7LREFu7Zqw/e7NBEjPZTZaPLwV5xqeLnLrXiFyebPe
         0ldciYjJMND5mQp2zc+EkstXlwMJ7uM/rXBEexcQfBuvDhxNgXVJ1g0Rj8+/eLMri5tF
         uazA==
X-Gm-Message-State: AOJu0YyBIk9TW7lQdPqRtfMcEwornEnT1XyufeAj74QKVO83OHeMn/Xs
	U6/Mmsh46IsNuxQ0vFO7c/ADRCRr0ZVqIoZqqP7kG9tB82lt4avZK21BcfLNcg==
X-Google-Smtp-Source: AGHT+IGQkqRiR815pMi3jjQfDVXWbMS19XUac9C5oCUxd5c/UOro2ecpyZyTn3NsVKMk6e0j1fxtdg==
X-Received: by 2002:a2e:bc85:0:b0:2cc:dc54:872b with SMTP id h5-20020a2ebc85000000b002ccdc54872bmr3178838ljf.67.1706017025244;
        Tue, 23 Jan 2024 05:37:05 -0800 (PST)
Message-ID: <8e60f998-aeb4-4648-a3e9-d083bb8eefde@suse.com>
Date: Tue, 23 Jan 2024 14:37:01 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 16/34] xen/lib: introduce generic find next bit
 operations
Content-Language: en-US
To: Oleksii <oleksii.kurochko@gmail.com>
Cc: Alistair Francis <alistair.francis@wdc.com>,
 Bob Eshleman <bobbyeshleman@gmail.com>, Connor Davis
 <connojdavis@gmail.com>, Andrew Cooper <andrew.cooper3@citrix.com>,
 George Dunlap <george.dunlap@citrix.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>,
 xen-devel@lists.xenproject.org
References: <cover.1703255175.git.oleksii.kurochko@gmail.com>
 <bb47caf6c275d8aea307b96e79828831eab4a703.1703255175.git.oleksii.kurochko@gmail.com>
 <81e5cac4-90f0-4fff-b891-53ca73c61832@suse.com>
 <05d685b0b7ccd329454a336b20351979bdf91ea4.camel@gmail.com>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <05d685b0b7ccd329454a336b20351979bdf91ea4.camel@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 23.01.2024 13:34, Oleksii wrote:
> On Tue, 2024-01-23 at 12:14 +0100, Jan Beulich wrote:
>> On 22.12.2023 16:13, Oleksii Kurochko wrote:
>>> --- a/xen/common/Kconfig
>>> +++ b/xen/common/Kconfig
>>> @@ -47,6 +47,9 @@ config ARCH_MAP_DOMAIN_PAGE
>>>  config GENERIC_BUG_FRAME
>>>  	bool
>>>  
>>> +config GENERIC_FIND_NEXT_BIT
>>> +	bool
>>
>> There's no need for this, as ...
>>
>>> --- a/xen/lib/Makefile
>>> +++ b/xen/lib/Makefile
>>> @@ -3,6 +3,7 @@ obj-$(CONFIG_X86) += x86/
>>>  lib-y += bsearch.o
>>>  lib-y += ctors.o
>>>  lib-y += ctype.o
>>> +lib-$(CONFIG_GENERIC_FIND_NEXT_BIT) += find-next-bit.o
>>
>> ... you're moving this to lib/. Or have you encountered any issue
>> with building this uniformly, and you forgot to mention this in
>> the description?
> I didn't check. My intention was to provide opportunity to check if an
> architecture want to use generic version or not. Otherwise, I expected
> that we will have multiple definiotion of the funcion.
> 
> But considering that they are all defined under #ifdef...#endif we can
> remove the declaration of the config GENERIC_FIND_NEXT_BIT.

What #ifdef / #endif would matter here? Whats in lib/ is intended to be
generic anyway. And what is in the resulting lib.a won't be used by an
arch if it has an arch-specific implementation. Problems could arise if
an arch had an inline function colliding with the out-of-line one. But
that's about the old case where I could see a need to make the building
of one of the objects conditional. And you'll note that withing this
Makefile there are pretty few conditionals.

>>> --- /dev/null
>>> +++ b/xen/lib/find-next-bit.c
>>>[...]
>>
>> I was going to ask that you convince git to actually present a proper
>> diff, to make visible what changes. But other than the description
>> says
>> you don't really move the file, you copy it. Judging from further
>> titles
>> there's also nowhere you'd make Arm actually use this now generic
>> code.
> I wanted to do it separately, outside this patch series to simplify
> review and not have Arm specific changes in RISC-V patch series.

Then do it the other way around: Make a separate _prereq_ change truly
moving the file.

> Regarding a proper diff, you would like me to make git shows that it
> was copy from Arm and it is not newly created file. Am I understand you
> correctly?

Not quite, I think. Git has move detection (and we've seen that in
action in other patches of yours). So when truly moving a file, what
(if anything) is changed is easily visible.

Jan


From xen-devel-bounces@lists.xenproject.org Tue Jan 23 13:37:31 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 23 Jan 2024 13:37:31 +0000
Received: from list by lists.xenproject.org with outflank-mailman.670477.1043278 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSGy3-0002H1-Ry; Tue, 23 Jan 2024 13:37:31 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 670477.1043278; Tue, 23 Jan 2024 13:37:31 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSGy3-0002Gu-PH; Tue, 23 Jan 2024 13:37:31 +0000
Received: by outflank-mailman (input) for mailman id 670477;
 Tue, 23 Jan 2024 13:37:30 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=gDjx=JB=cloud.com=roger.pau@srs-se1.protection.inumbo.net>)
 id 1rSGy2-0002F8-GM
 for xen-devel@lists.xenproject.org; Tue, 23 Jan 2024 13:37:30 +0000
Received: from mail-wm1-x32b.google.com (mail-wm1-x32b.google.com
 [2a00:1450:4864:20::32b])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 8d89fe61-b9f4-11ee-98f4-6d05b1d4d9a1;
 Tue, 23 Jan 2024 14:37:29 +0100 (CET)
Received: by mail-wm1-x32b.google.com with SMTP id
 5b1f17b1804b1-40ebf373130so5390205e9.3
 for <xen-devel@lists.xenproject.org>; Tue, 23 Jan 2024 05:37:29 -0800 (PST)
Received: from localhost ([213.195.118.74]) by smtp.gmail.com with ESMTPSA id
 fl6-20020a05600c0b8600b0040ea9ba9d58sm9508115wmb.37.2024.01.23.05.37.28
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 23 Jan 2024 05:37:28 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 8d89fe61-b9f4-11ee-98f4-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1706017049; x=1706621849; darn=lists.xenproject.org;
        h=in-reply-to:content-disposition:mime-version:references:message-id
         :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to;
        bh=nJsaQUsn7L0dALlfRc4Oa9nxZ6l6MhVmm78MjTwBpCY=;
        b=WDa37uF6cI+N96fnBbR0MA+cDiI45rSKSgdjmNzXvvxYXSgZiMs6EIxZxV4UYs2YLC
         bTJY2DKirNUisMDbkedNjD9Da8LS5F2ya18E39/1zR9R6iNKIeTcfRVTRSx9Z+g+64FE
         BqQ/6J/nemcT0tcX7d5xQPKOVgId5PrWhLedY=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706017049; x=1706621849;
        h=in-reply-to:content-disposition:mime-version:references:message-id
         :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to;
        bh=nJsaQUsn7L0dALlfRc4Oa9nxZ6l6MhVmm78MjTwBpCY=;
        b=V3nt+IpNG8RzDCBhS4d1f4P90+xVd1pKsUzfExYswoqbT9o5SKWbsqFpFryOlmVAK/
         BlOk16QSjG/sIng9GCk/qOLngz3PUpVxDNGNEjXLS9B+EFIoNeCnbKQJ8hicJRGUGvrA
         JPzTHrONUAon3+Pknu4+PVKCBAWN3H/xWd7L2BR23j9IhRGa7PZKL7m//nWeh5YZM6Mb
         BeXQz4kyUMB+FMNWr5TX23VHWK3HrnDc/yvqOR3aJWX6fNMz25mMeBuUzYZNPuPQTiaM
         tCEWoGxnruEqOdkS4oby7PbJsbaP4nw6NFzBRy2HCOHLuyx0qGAGIlBBCn/RBKu+aOOx
         jEGQ==
X-Gm-Message-State: AOJu0Yy6auWdTvVCJRKOVM8D9K5R5aRNeojdhTnmjNBHugSDxa86DHhp
	VTCNN6rNxfDkdNzQM0lFCbUOzPQSsQVJlYRpdubKvTiUuk+1yVzwZDpG7rhLpl0=
X-Google-Smtp-Source: AGHT+IEwQyGyIb9BzKxwiOuSogyKmcJ8NuBsfad4Wr6vr85oQfqERrWJ42V+rSN3rUg/k8E3K2vGqQ==
X-Received: by 2002:a7b:c7c6:0:b0:40e:5e29:cca2 with SMTP id z6-20020a7bc7c6000000b0040e5e29cca2mr532565wmk.44.1706017048806;
        Tue, 23 Jan 2024 05:37:28 -0800 (PST)
Date: Tue, 23 Jan 2024 14:37:27 +0100
From: Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
To: Jan Beulich <jbeulich@suse.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, Wei Liu <wl@xen.org>,
	Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>,
	Ross Lagerwall <ross.lagerwall@citrix.com>,
	Xen-devel <xen-devel@lists.xenproject.org>
Subject: Re: [PATCH 2/3] x86/entry: Make #PF/NMI/INT0x82 more amenable to
 livepatching
Message-ID: <Za_BF_wr0qWH5eKC@macbook>
References: <20240122181714.1543738-1-andrew.cooper3@citrix.com>
 <20240122181714.1543738-3-andrew.cooper3@citrix.com>
 <0edeb969-6fef-46f4-b216-0858edbaefa6@suse.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
In-Reply-To: <0edeb969-6fef-46f4-b216-0858edbaefa6@suse.com>

On Tue, Jan 23, 2024 at 10:22:10AM +0100, Jan Beulich wrote:
> On 22.01.2024 19:17, Andrew Cooper wrote:
> > It is bad form to have inter-function fallthrough.  It only functions right
> > now because alignment padding bytes are NOPs.
> 
> But that's a requirement anyway in executable sections.

Really?  I was under the impression we wanted to replace the padding
nops with rets maybe, or even poison the padding with int3 or ud2.

> > --- a/xen/arch/x86/x86_64/compat/entry.S
> > +++ b/xen/arch/x86/x86_64/compat/entry.S
> > @@ -29,6 +29,7 @@ FUNC(entry_int82)
> >  
> >          mov   %rsp, %rdi
> >          call  do_entry_int82
> > +        jmp   compat_test_all_events
> >  END(entry_int82)
> >  
> >  /* %rbx: struct vcpu */
> > diff --git a/xen/arch/x86/x86_64/entry.S b/xen/arch/x86/x86_64/entry.S
> > index c3f6b667a72a..fc64ef1fd460 100644
> > --- a/xen/arch/x86/x86_64/entry.S
> > +++ b/xen/arch/x86/x86_64/entry.S
> > @@ -723,7 +723,9 @@ END(common_interrupt)
> >  FUNC(entry_PF)
> >          ENDBR64
> >          movl  $X86_EXC_PF, 4(%rsp)
> > +        jmp   handle_exception
> >  END(entry_PF)
> > +
> >  /* No special register assumptions. */
> >  FUNC(handle_exception, 0)
> >          ALTERNATIVE "", clac, X86_FEATURE_XEN_SMAP
> > @@ -1023,6 +1025,7 @@ FUNC(entry_NMI)
> >          ENDBR64
> >          pushq $0
> >          movl  $X86_EXC_NMI, 4(%rsp)
> > +        jmp   handle_ist_exception
> >  END(entry_NMI)
> >  
> >  FUNC(handle_ist_exception)
> 
> Hmm, so here you (partly) do what I was meaning to do in the one patch
> left from the entry point annotations series, "common: honor
> CONFIG_CC_SPLIT_SECTIONS also for assembly functions". However, I'm
> wrapping the JMPs there in #ifdef CONFIG_CC_SPLIT_SECTIONS. Thoughts?
> I view the JMPs as pretty useless otherwise, even if there is a
> small risk of a future code change not respecting the ordering
> requirements. Yet such would be noticed pretty quickly, I suppose.

I think it's clearer with the jumps.

Thanks, Roger.


From xen-devel-bounces@lists.xenproject.org Tue Jan 23 13:43:25 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 23 Jan 2024 13:43:25 +0000
Received: from list by lists.xenproject.org with outflank-mailman.670483.1043288 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSH3h-00056Z-GC; Tue, 23 Jan 2024 13:43:21 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 670483.1043288; Tue, 23 Jan 2024 13:43:21 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSH3h-00056S-Dd; Tue, 23 Jan 2024 13:43:21 +0000
Received: by outflank-mailman (input) for mailman id 670483;
 Tue, 23 Jan 2024 13:43:20 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=9pmr=JB=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rSH3g-00056M-8K
 for xen-devel@lists.xenproject.org; Tue, 23 Jan 2024 13:43:20 +0000
Received: from mail-lj1-x233.google.com (mail-lj1-x233.google.com
 [2a00:1450:4864:20::233])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 5df5fdc4-b9f5-11ee-98f4-6d05b1d4d9a1;
 Tue, 23 Jan 2024 14:43:19 +0100 (CET)
Received: by mail-lj1-x233.google.com with SMTP id
 38308e7fff4ca-2cddb2c2b54so42744591fa.1
 for <xen-devel@lists.xenproject.org>; Tue, 23 Jan 2024 05:43:19 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 cv3-20020a056e023b8300b00362865d8591sm940079ilb.6.2024.01.23.05.43.16
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 23 Jan 2024 05:43:18 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 5df5fdc4-b9f5-11ee-98f4-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1706017398; x=1706622198; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=1tS0w6p9g3sL/5YssAm6miZo36N75fZuBsDHZipCPSU=;
        b=UDJK6Q4MlpOJqOLE+Nkz+nmeHOZAGnxdfpNmmkIRFROQh42vaItG0HaUHfUk9zibdS
         i1T/mKYgHdT+148gSf7tj1iRoVOdLPcrnWpj/hNCZrovYJ3Cuc8cSQvibbhes5fyjsE8
         fpM+FTw8uqbpgkkzXTKnAcWwC/btW3xiicUZmbGp5af2FKdujtSNHVVw9h/rJHe8LE3P
         HukxqhZoyMpI/jE2oQEFJkHBH981ceC6fVjtlepqxhZvoOVp0tZ32Qz5LYl3tY32NcOZ
         sKKj4COKV25ybd2tFWYJjFnxp+i2KDNyvysvdYYGrHlXPZnA6sLb9nEqu4e+Wxe228Py
         8Ecw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706017398; x=1706622198;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=1tS0w6p9g3sL/5YssAm6miZo36N75fZuBsDHZipCPSU=;
        b=aMjfM+fJBr20OIcqMuxsy5wBvdGVGNlfZc4rpdt4x58MphI6PvTS0XyrvrD9o+NTQs
         9LVWSWH8Hh2X0VhrHWFQyldhu9G4TxWB3Ej1ybbU+3K+k30MMytsb3SJsQaiOyvZBLNh
         hIKJGHgb71VPXlmfk0Eup2HsCPMFPKgyTGt8J+KvM6705KWEdaF5j83kp6sCoT/bcQYx
         LanzW6zEpIeR6JPikeejqEEk0kiBpOZ/u9qPdfPfN2gOgumvTTFSs78GQMZGM9An+7GI
         dInWW4PEuN2OKHQqafUQPE22WQmSYT0SV1dM+0gAZrAQ3b6CceOAiKT+RzuV90fzg/VY
         w3pw==
X-Gm-Message-State: AOJu0Yxay8TBnyIi5bw1lNSS7eyBAp76PTBb067YlTkiuU3MrBa4gNHH
	kx48RBZe1xPXFxTU7syMgPjMH33ndHNT1lbHbPxkjGO98d1UHSk860h2YQBshg==
X-Google-Smtp-Source: AGHT+IGUKhiYMvG72NQl1/Gi1j9N3vMEowDRCqUxZiTWrUVVlrtiA87n/ri8Qmenibx9uSSvFaMBxg==
X-Received: by 2002:a05:651c:c9a:b0:2cd:3731:9c2d with SMTP id bz26-20020a05651c0c9a00b002cd37319c2dmr4244268ljb.83.1706017398478;
        Tue, 23 Jan 2024 05:43:18 -0800 (PST)
Message-ID: <ebdfc495-b8bc-4468-8b41-d5fdb2a85adb@suse.com>
Date: Tue, 23 Jan 2024 14:43:15 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 2/3] x86/entry: Make #PF/NMI/INT0x82 more amenable to
 livepatching
Content-Language: en-US
To: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, Wei Liu <wl@xen.org>,
 Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>,
 Ross Lagerwall <ross.lagerwall@citrix.com>,
 Xen-devel <xen-devel@lists.xenproject.org>
References: <20240122181714.1543738-1-andrew.cooper3@citrix.com>
 <20240122181714.1543738-3-andrew.cooper3@citrix.com>
 <0edeb969-6fef-46f4-b216-0858edbaefa6@suse.com> <Za_BF_wr0qWH5eKC@macbook>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <Za_BF_wr0qWH5eKC@macbook>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 23.01.2024 14:37, Roger Pau Monné wrote:
> On Tue, Jan 23, 2024 at 10:22:10AM +0100, Jan Beulich wrote:
>> On 22.01.2024 19:17, Andrew Cooper wrote:
>>> It is bad form to have inter-function fallthrough.  It only functions right
>>> now because alignment padding bytes are NOPs.
>>
>> But that's a requirement anyway in executable sections.
> 
> Really?  I was under the impression we wanted to replace the padding
> nops with rets maybe, or even poison the padding with int3 or ud2.

Well, that would be a decision of ours. Which then imo can't be described as
"only functions right now because ..." The assembler can't[1] use other than
NOPs by default, as it can't know whether fall-through is intended.

Jan

[1] minus bugs - see e.g. https://sourceware.org/git/?p=binutils-gdb.git;a=commitdiff;h=d164359dbc14c8ae4c7a117d236f5b7de4af671a



From xen-devel-bounces@lists.xenproject.org Tue Jan 23 14:27:02 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 23 Jan 2024 14:27:02 +0000
Received: from list by lists.xenproject.org with outflank-mailman.670492.1043299 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSHjW-000675-Mr; Tue, 23 Jan 2024 14:26:34 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 670492.1043299; Tue, 23 Jan 2024 14:26:34 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSHjW-00066y-JU; Tue, 23 Jan 2024 14:26:34 +0000
Received: by outflank-mailman (input) for mailman id 670492;
 Tue, 23 Jan 2024 14:26:33 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=9pmr=JB=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rSHjV-00066s-Fz
 for xen-devel@lists.xenproject.org; Tue, 23 Jan 2024 14:26:33 +0000
Received: from mail-lj1-x22e.google.com (mail-lj1-x22e.google.com
 [2a00:1450:4864:20::22e])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 6716754b-b9fb-11ee-9b0f-b553b5be7939;
 Tue, 23 Jan 2024 15:26:31 +0100 (CET)
Received: by mail-lj1-x22e.google.com with SMTP id
 38308e7fff4ca-2ccae380df2so43674461fa.1
 for <xen-devel@lists.xenproject.org>; Tue, 23 Jan 2024 06:26:31 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 v10-20020a92ab0a000000b0036063b51610sm8247913ilh.27.2024.01.23.06.26.28
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 23 Jan 2024 06:26:30 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 6716754b-b9fb-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1706019991; x=1706624791; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=nEWfr3iWm7zMtXJTKNzc34KH0j51M4YyuWJgkir/YZk=;
        b=bMPIHjBch4O72wOiFS7CY00OpBhEXmnKPQbeWNUllSN4Od44+e3D6jZn4PGsT01OuJ
         LZfp3RYryle2fOZeTUAMvoeSr7+pddrao1/IflCaM9LclSiJwa0/Mht19oDlXVSuUOtT
         JLGQLTe+9QkuU4GgeHqfvtvDFq+TBop4XXDbEzm1Szr3+T0mdcmzos/xBfSnFCe7E96t
         UHG0maFx64WBh6Q+z44dvgeMnH61s0DDL95t3vExTRefO9FnTXfMQH9bJU/8DEx9XSvb
         IVOGvl1skzB+7caqsyRfw3Wh+YphSGgqq5WgnUXuNPQZ6cR+N87beDbDinxVcqvAawLp
         spEg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706019991; x=1706624791;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=nEWfr3iWm7zMtXJTKNzc34KH0j51M4YyuWJgkir/YZk=;
        b=qBc2Z/mIKX6QT3AHzHWslEnwHZ/jamCkFufOLOQU7F2avSbGnPa+ixS/IILD4GK/LJ
         W5PKXOR0ZsBHTjl3a6WuZQOXnSU2Vz20ImdVzug3sUpGyoPr8v6lQ7XD1X11tkt4qHYf
         XYr2YyjNJeAy0bsrfyRG6NMdVRXIbJ2mJl8Hz3BLJQF/bQBpxlbGrP3bgIIGxwa6mz/o
         qqq/+dvAplTaDhR+MNDleBYmscRE91jpjah9wRRiD5yQSO0eQdf1flWQLgnE92fJOTcf
         DY6IzH+YjjkDzaDWSNvq6jTmGeVUFXaO3Q/ed9UPE86fabkpZ5cynU5orlSK+YvMCZKj
         ARTQ==
X-Gm-Message-State: AOJu0YwKwspFAnZpirg1g0Vnb0C7bV2VJd76F9iGj+5bzsCetJiq/kIC
	oTpGdcRUlmIzGjTG5JlIpRnrW81w1nddal7/rlN4M1vxtVP1y7ZezqoHSFhpqw==
X-Google-Smtp-Source: AGHT+IEdivCrB0Q9cHg3jR2H3qcChKDjerjC02CQyiNE/zgbafGDiNA4XtwOSGAYrZRBIE+Teb+5eg==
X-Received: by 2002:a2e:80c2:0:b0:2cc:daca:2e81 with SMTP id r2-20020a2e80c2000000b002ccdaca2e81mr2232206ljg.15.1706019990812;
        Tue, 23 Jan 2024 06:26:30 -0800 (PST)
Message-ID: <18ec3401-4334-40c0-82a0-31abfd9797d0@suse.com>
Date: Tue, 23 Jan 2024 15:26:26 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v12.2 01/15] vpci: use per-domain PCI lock to protect vpci
 structure
Content-Language: en-US
To: Stewart Hildebrand <stewart.hildebrand@amd.com>
Cc: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>,
 Andrew Cooper <andrew.cooper3@citrix.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>, Wei Liu
 <wl@xen.org>, George Dunlap <george.dunlap@citrix.com>,
 Julien Grall <julien@xen.org>, Stefano Stabellini <sstabellini@kernel.org>,
 Jun Nakajima <jun.nakajima@intel.com>, Kevin Tian <kevin.tian@intel.com>,
 Paul Durrant <paul@xen.org>, Volodymyr Babchuk <volodymyr_babchuk@epam.com>,
 xen-devel@lists.xenproject.org
References: <20240109215145.430207-1-stewart.hildebrand@amd.com>
 <20240109215145.430207-2-stewart.hildebrand@amd.com>
 <20240115194309.45683-1-stewart.hildebrand@amd.com>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <20240115194309.45683-1-stewart.hildebrand@amd.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 15.01.2024 20:43, Stewart Hildebrand wrote:
> --- a/xen/arch/x86/hvm/vmsi.c
> +++ b/xen/arch/x86/hvm/vmsi.c
> @@ -468,7 +468,7 @@ int msixtbl_pt_register(struct domain *d, struct pirq *pirq, uint64_t gtable)
>      struct msixtbl_entry *entry, *new_entry;
>      int r = -EINVAL;
>  
> -    ASSERT(pcidevs_locked());
> +    ASSERT(pcidevs_locked() || rw_is_locked(&d->pci_lock));
>      ASSERT(rw_is_write_locked(&d->event_lock));
>  
>      if ( !msixtbl_initialised(d) )
> @@ -538,7 +538,7 @@ void msixtbl_pt_unregister(struct domain *d, struct pirq *pirq)
>      struct pci_dev *pdev;
>      struct msixtbl_entry *entry;
>  
> -    ASSERT(pcidevs_locked());
> +    ASSERT(pcidevs_locked() || rw_is_locked(&d->pci_lock));
>      ASSERT(rw_is_write_locked(&d->event_lock));

I was hoping to just ack this patch, but the two changes above look
questionable to me: How can it be that holding _either_ lock is okay?
It's not obvious in this context that consumers have to hold both
locks now. In fact consumers looks to be the callers of
msixtbl_find_entry(), yet the list is RCU-protected. Whereas races
against themselves or against one another are avoided by holding
d->event_lock.

My only guess then for the original need of holding pcidevs_lock is
the use of msi_desc->dev, with the desire for the device to not go
away. Yet the description doesn't talk about interactions of the per-
domain PCI lock with that one at all; it all circles around the
domain'd vPCI lock.

Feels like I'm missing something that's obvious to everyone else.
Or maybe this part of the patch is actually unrelated, and should be
split off (with its own [proper] justification)? Or wouldn't it then
be better to also change the other paths leading here to acquire the
per-domain PCI lock?

> --- a/xen/arch/x86/hvm/vmx/vmx.c
> +++ b/xen/arch/x86/hvm/vmx/vmx.c
> @@ -413,7 +413,7 @@ static int cf_check vmx_pi_update_irte(const struct vcpu *v,
>  
>      spin_unlock_irq(&desc->lock);
>  
> -    ASSERT(pcidevs_locked());
> +    ASSERT(pcidevs_locked() || rw_is_locked(&msi_desc->dev->domain->pci_lock));
>  
>      return iommu_update_ire_from_msi(msi_desc, &msi_desc->msg);

This then falls in the same category. And apparently there are more.

Jan


From xen-devel-bounces@lists.xenproject.org Tue Jan 23 14:29:30 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 23 Jan 2024 14:29:30 +0000
Received: from list by lists.xenproject.org with outflank-mailman.670495.1043309 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSHmL-0007Fe-7m; Tue, 23 Jan 2024 14:29:29 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 670495.1043309; Tue, 23 Jan 2024 14:29:29 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSHmL-0007FX-50; Tue, 23 Jan 2024 14:29:29 +0000
Received: by outflank-mailman (input) for mailman id 670495;
 Tue, 23 Jan 2024 14:29:27 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=9pmr=JB=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rSHmJ-0007FR-Ro
 for xen-devel@lists.xenproject.org; Tue, 23 Jan 2024 14:29:27 +0000
Received: from mail-lj1-x22b.google.com (mail-lj1-x22b.google.com
 [2a00:1450:4864:20::22b])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id ce538e02-b9fb-11ee-98f4-6d05b1d4d9a1;
 Tue, 23 Jan 2024 15:29:24 +0100 (CET)
Received: by mail-lj1-x22b.google.com with SMTP id
 38308e7fff4ca-2cdf69bb732so46208161fa.3
 for <xen-devel@lists.xenproject.org>; Tue, 23 Jan 2024 06:29:24 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 eq20-20020a0566384e3400b0046ee630f7e6sm1128876jab.68.2024.01.23.06.29.21
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 23 Jan 2024 06:29:23 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: ce538e02-b9fb-11ee-98f4-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1706020164; x=1706624964; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=r/pVBQV0OnfutPDX+eXse7QjVivNya4UiKymNinMK3M=;
        b=ch0N74JVNtoNRR1/7KQCzVpEotihxjgfl+RggXf6QJV+kywzwbmRyILKknOFn7zKN5
         6YFZ9dGqwmX+JRmb/V4K62y9FM+ZxGd2xHrB+w+nruiO/JeJjy3iIW+52hHduN3CAcW5
         Trapp4xxnMQZmZz3pxjf5/jRW68yVTpoVc6sV5J37PoEhLkImiKfmlTT0Z8mLaaXDpPA
         JKhDv5X0Q75eD3INoP0fmNjN1Mj/RumtzzEzCZB5xYfnjK43D+rnCJHnWLUFp1czfwwz
         7YRF+KoLWxvIkRHo6/H5iBDbqceceYUMzPW4QKZ/5WrhhVmQbj9beAUdsy1iNTx1+is0
         xRnw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706020164; x=1706624964;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=r/pVBQV0OnfutPDX+eXse7QjVivNya4UiKymNinMK3M=;
        b=RRd2lb95CY78QssUwuZJ+ElBiOS5eIofkGmh+azCzYLBR7XtwWE1rO2gibZILPvjvP
         XQ+WBLdy6ti93BK7nl1XyR+hv3R2k+DHpJsF53/i8IFtrTyyMf9KvNM0NvLQ1+yab2Ro
         vd8x59KNtDVtJ6pTsmttNzuO/a26p3d5W/LrdQm5DVQcCa54TIpMQkyD5YpJfrt2vTim
         /AR+yKtc1Nwm7wFhF2WXXmVV/DiKt62RDpQUA9xzcFjZeTdv6xSWxX5nqRXVII3IdpSt
         HuWs+C1Tunv+NLBQoA7A+BrjyL/x9Yja1S+0gLVKNAAWMAxPls2EQgek8jI2DOEZcFqH
         Ov3Q==
X-Gm-Message-State: AOJu0Ywbpnu2hu9kvgNEXWm/vWeo6+QutjFwm9WRVqEV2uan6O9cf7iZ
	wInUXzwsR8ziMuy93v8LqX/9WwdfCZbGOplJiKfyL5EItlMp50O6f0KbhQbM5g==
X-Google-Smtp-Source: AGHT+IFw7v0OoMTVWg72hL46SOuQp2O9cG7xPW67ymEWDERvSejqkVr0xP4G/7vn3PtKCSa/P56y/w==
X-Received: by 2002:a2e:b706:0:b0:2cd:4fd1:92d7 with SMTP id j6-20020a2eb706000000b002cd4fd192d7mr1240974ljo.178.1706020164164;
        Tue, 23 Jan 2024 06:29:24 -0800 (PST)
Message-ID: <7e936e6a-3218-4c4a-ac68-a58cd363a11d@suse.com>
Date: Tue, 23 Jan 2024 15:29:19 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v12.2 01/15] vpci: use per-domain PCI lock to protect vpci
 structure
Content-Language: en-US
To: Stewart Hildebrand <stewart.hildebrand@amd.com>
Cc: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>,
 Andrew Cooper <andrew.cooper3@citrix.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>, Wei Liu
 <wl@xen.org>, George Dunlap <george.dunlap@citrix.com>,
 Julien Grall <julien@xen.org>, Stefano Stabellini <sstabellini@kernel.org>,
 Jun Nakajima <jun.nakajima@intel.com>, Kevin Tian <kevin.tian@intel.com>,
 Paul Durrant <paul@xen.org>, Volodymyr Babchuk <volodymyr_babchuk@epam.com>,
 xen-devel@lists.xenproject.org
References: <20240109215145.430207-1-stewart.hildebrand@amd.com>
 <20240109215145.430207-2-stewart.hildebrand@amd.com>
 <20240115194309.45683-1-stewart.hildebrand@amd.com>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <20240115194309.45683-1-stewart.hildebrand@amd.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 15.01.2024 20:43, Stewart Hildebrand wrote:
> @@ -1043,11 +1043,11 @@ static int __pci_enable_msix(struct pci_dev *pdev, struct msi_info *msi,
>  {
>      struct msi_desc *old_desc;
>  
> -    ASSERT(pcidevs_locked());
> -
>      if ( !pdev || !pdev->msix )
>          return -ENODEV;
>  
> +    ASSERT(pcidevs_locked() || rw_is_locked(&pdev->domain->pci_lock));
> +
>      if ( msi->entry_nr >= pdev->msix->nr_entries )
>          return -EINVAL;

Further looking at this - is dereferencing pdev actually safe without holding
the global lock?

Jan


From xen-devel-bounces@lists.xenproject.org Tue Jan 23 14:29:53 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 23 Jan 2024 14:29:53 +0000
Received: from list by lists.xenproject.org with outflank-mailman.670497.1043319 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSHmj-0007kW-H6; Tue, 23 Jan 2024 14:29:53 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 670497.1043319; Tue, 23 Jan 2024 14:29:53 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSHmj-0007jz-D7; Tue, 23 Jan 2024 14:29:53 +0000
Received: by outflank-mailman (input) for mailman id 670497;
 Tue, 23 Jan 2024 14:29:52 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rSHmi-0007jc-3Y; Tue, 23 Jan 2024 14:29:52 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rSHmi-0008Vx-0p; Tue, 23 Jan 2024 14:29:52 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rSHmh-0001EN-KN; Tue, 23 Jan 2024 14:29:51 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rSHmh-0000cK-Jy; Tue, 23 Jan 2024 14:29:51 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=8m0gy2jNmhaS6XeFrd2CUvRkBlPRp8oQq4/F+OZ4xOQ=; b=AWQMO9ggQgRRnoivajzLQxExu8
	xctBIeGl7S4xP/AGhQdjki3q449t4w85nbrpXLc3o8p9tngwEmBwjvR5EtZzL6s3/NCe8eud5Xwv4
	zqhupVEG6rsM2OPNjc5g0yN8nwUPjMxgYlDP64PRckxNI08QN7dsZGt7EoV33lAg00uQ=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184433-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [xen-unstable-smoke test] 184433: tolerable all pass - PUSHED
X-Osstest-Failures:
    xen-unstable-smoke:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    xen-unstable-smoke:test-arm64-arm64-xl-xsm:migrate-support-check:fail:nonblocking
    xen-unstable-smoke:test-arm64-arm64-xl-xsm:saverestore-support-check:fail:nonblocking
    xen-unstable-smoke:test-armhf-armhf-xl:migrate-support-check:fail:nonblocking
    xen-unstable-smoke:test-armhf-armhf-xl:saverestore-support-check:fail:nonblocking
X-Osstest-Versions-This:
    xen=f67bddf3bccd99a5fee968c3b3f288db6a57d3be
X-Osstest-Versions-That:
    xen=4900c939cb9b876c51cfc7a4c854f54c722a30b5
From: osstest service owner <osstest-admin@xenproject.org>
Date: Tue, 23 Jan 2024 14:29:51 +0000

flight 184433 xen-unstable-smoke real [real]
http://logs.test-lab.xenproject.org/osstest/logs/184433/

Failures :-/ but no regressions.

Tests which did not succeed, but are not blocking:
 test-amd64-amd64-libvirt     15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-xsm      15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-xsm      16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl          15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          16 saverestore-support-check    fail   never pass

version targeted for testing:
 xen                  f67bddf3bccd99a5fee968c3b3f288db6a57d3be
baseline version:
 xen                  4900c939cb9b876c51cfc7a4c854f54c722a30b5

Last test of basis   184424  2024-01-22 13:00:26 Z    1 days
Testing same since   184433  2024-01-23 12:03:45 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Jan Beulich <jbeulich@suse.com>
  Michal Orzel <michal.orzel@amd.com>
  Shawn Anastasio <sanastasio@raptorengineering.com>

jobs:
 build-arm64-xsm                                              pass    
 build-amd64                                                  pass    
 build-armhf                                                  pass    
 build-amd64-libvirt                                          pass    
 test-armhf-armhf-xl                                          pass    
 test-arm64-arm64-xl-xsm                                      pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64                    pass    
 test-amd64-amd64-libvirt                                     pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Pushing revision :

To xenbits.xen.org:/home/xen/git/xen.git
   4900c939cb..f67bddf3bc  f67bddf3bccd99a5fee968c3b3f288db6a57d3be -> smoke


From xen-devel-bounces@lists.xenproject.org Tue Jan 23 14:32:47 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 23 Jan 2024 14:32:47 +0000
Received: from list by lists.xenproject.org with outflank-mailman.670507.1043329 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSHpS-0001HG-Vc; Tue, 23 Jan 2024 14:32:42 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 670507.1043329; Tue, 23 Jan 2024 14:32:42 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSHpS-0001H9-Sv; Tue, 23 Jan 2024 14:32:42 +0000
Received: by outflank-mailman (input) for mailman id 670507;
 Tue, 23 Jan 2024 14:32:41 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=9pmr=JB=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rSHpR-0001F1-P1
 for xen-devel@lists.xenproject.org; Tue, 23 Jan 2024 14:32:41 +0000
Received: from mail-lj1-x236.google.com (mail-lj1-x236.google.com
 [2a00:1450:4864:20::236])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 4376576d-b9fc-11ee-98f4-6d05b1d4d9a1;
 Tue, 23 Jan 2024 15:32:41 +0100 (CET)
Received: by mail-lj1-x236.google.com with SMTP id
 38308e7fff4ca-2cf13c259f3so6287871fa.2
 for <xen-devel@lists.xenproject.org>; Tue, 23 Jan 2024 06:32:41 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 t2-20020a02b182000000b0046ee05df6a7sm1406554jah.16.2024.01.23.06.32.22
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 23 Jan 2024 06:32:30 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 4376576d-b9fc-11ee-98f4-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1706020360; x=1706625160; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=kvWJCvJuGAeg8lqD+WdXSInkBlSfSl/Dljpdds/q3Ps=;
        b=VaLVQYh7ON8fXAjqmB+AX++ZvTsGjE8SN4rsucamjRuWHjG3tqBvE4JqZZCmsYk1Zd
         QRXnnARTSYJZl74J2Aq9NxQuCiXSCqzQXYNzZn/4uZrAwJj+7enZVSTKqMyDQEAPJpSI
         FiFyallf3hRxVABDhqUfYIoxlEy+K/KZdyeX5M7xoy8hv6CpLTMw1lQjMQgGVrsrExkK
         XRRA+UigmcLbZbiJGkBiooWsGzW/d0lXR5irRIl+IygIWKoGTpKNhxGPeqkdQB34USTh
         rNJudNfotY/NicPzuRCSSE2IhbKgTLVPfonVH9AIS7FH3cuCnRDk3CwGaF43WyoEYtZ5
         227g==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706020360; x=1706625160;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=kvWJCvJuGAeg8lqD+WdXSInkBlSfSl/Dljpdds/q3Ps=;
        b=B5TA22xnqlIW01PipAIZzNEnXo5JfT8FOEOhWfmUqnT5btN2tbEiaQQZOFBy7pakqK
         N8uCggbcvdbPoNaZbPetdmciLC/MhDJa54S4LTG7WeC1Aa+X77GsZfBSrlglumNl3P1G
         hJojLh0UiYCmoMcU/tQpO+CWAsM4KgAab2YD+7qcz70AlU3c2+Xw2jjiaVa0N72e7WBy
         a6pTwKinPdQEMFx7CTPJBSE+CHKxBz2laZBM7nxDQm8S+KqR4+ddpMcJIOeUnJK5mx9F
         yQ9L3feEcsxlVCBuTOKnQmFlO8J+7bMmbv+MxDO1n7vb7iU4zgrj1D/l6hOg89ShDDkS
         +vyQ==
X-Gm-Message-State: AOJu0YykI1F/6iqhbpFtqS+vQEVmK1jyserwJ/gaA6unk0KfCj0NqOVv
	YHlzMRWkHm5EaxgylqyP4pFl50bag101cypYWbSW2SwiejrkUoupLhFaj8594Q==
X-Google-Smtp-Source: AGHT+IFmMiWx+6FFGwumuyGs3B/Ce+Ou2pi3pOGIN6c/rKKE2h57nNyaxbnslP3yjVP1Qu2UGBoPfw==
X-Received: by 2002:a05:651c:1422:b0:2cd:633c:55d6 with SMTP id u34-20020a05651c142200b002cd633c55d6mr1500731lje.25.1706020360574;
        Tue, 23 Jan 2024 06:32:40 -0800 (PST)
Message-ID: <715e40c9-1776-4677-9565-dac1565a2aa8@suse.com>
Date: Tue, 23 Jan 2024 15:32:12 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v12.2 01/15] vpci: use per-domain PCI lock to protect vpci
 structure
Content-Language: en-US
To: Stewart Hildebrand <stewart.hildebrand@amd.com>
Cc: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>,
 Andrew Cooper <andrew.cooper3@citrix.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>, Wei Liu
 <wl@xen.org>, George Dunlap <george.dunlap@citrix.com>,
 Julien Grall <julien@xen.org>, Stefano Stabellini <sstabellini@kernel.org>,
 Jun Nakajima <jun.nakajima@intel.com>, Kevin Tian <kevin.tian@intel.com>,
 Paul Durrant <paul@xen.org>, Volodymyr Babchuk <volodymyr_babchuk@epam.com>,
 xen-devel@lists.xenproject.org
References: <20240109215145.430207-1-stewart.hildebrand@amd.com>
 <20240109215145.430207-2-stewart.hildebrand@amd.com>
 <20240115194309.45683-1-stewart.hildebrand@amd.com>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <20240115194309.45683-1-stewart.hildebrand@amd.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 15.01.2024 20:43, Stewart Hildebrand wrote:
> @@ -2888,6 +2888,8 @@ int allocate_and_map_msi_pirq(struct domain *d, int index, int *pirq_p,
>  {
>      int irq, pirq, ret;
>  
> +    ASSERT(pcidevs_locked() || rw_is_locked(&d->pci_lock));

If either lock is sufficient to hold here, ...

> --- a/xen/arch/x86/physdev.c
> +++ b/xen/arch/x86/physdev.c
> @@ -123,7 +123,9 @@ int physdev_map_pirq(domid_t domid, int type, int *index, int *pirq_p,
>  
>      case MAP_PIRQ_TYPE_MSI:
>      case MAP_PIRQ_TYPE_MULTI_MSI:
> +        pcidevs_lock();
>          ret = allocate_and_map_msi_pirq(d, *index, pirq_p, type, msi);
> +        pcidevs_unlock();
>          break;

... why is it the global lock that's being acquired here?

Jan


From xen-devel-bounces@lists.xenproject.org Tue Jan 23 14:36:54 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 23 Jan 2024 14:36:54 +0000
Received: from list by lists.xenproject.org with outflank-mailman.670510.1043339 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSHtU-0001sa-GE; Tue, 23 Jan 2024 14:36:52 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 670510.1043339; Tue, 23 Jan 2024 14:36:52 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSHtU-0001sT-DR; Tue, 23 Jan 2024 14:36:52 +0000
Received: by outflank-mailman (input) for mailman id 670510;
 Tue, 23 Jan 2024 14:36:51 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=9pmr=JB=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rSHtT-0001sN-Kn
 for xen-devel@lists.xenproject.org; Tue, 23 Jan 2024 14:36:51 +0000
Received: from mail-lj1-x22f.google.com (mail-lj1-x22f.google.com
 [2a00:1450:4864:20::22f])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id d8220ca2-b9fc-11ee-98f4-6d05b1d4d9a1;
 Tue, 23 Jan 2024 15:36:50 +0100 (CET)
Received: by mail-lj1-x22f.google.com with SMTP id
 38308e7fff4ca-2cd33336b32so57954671fa.0
 for <xen-devel@lists.xenproject.org>; Tue, 23 Jan 2024 06:36:50 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 t15-20020a05663801ef00b0046d4105b7e8sm3604437jaq.49.2024.01.23.06.36.48
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 23 Jan 2024 06:36:49 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: d8220ca2-b9fc-11ee-98f4-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1706020610; x=1706625410; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=gw/q+zCha9+NhwmsgQc4y/QnuZt6k+sWrwVp12yjy68=;
        b=gPlnWMLUiF46egPqEFXDK4eGJbxkFGAQYyjVt7xXjZkyzjf3HEMx+Ek7JLj+r/8nQT
         aSjeek/Nf0hV0352ukoKywxJZUKvt7ZpvJdTnfdiELboh+qqi7SnwyjQnCq6HNe5csDt
         O7yf4+1DXICej6wfoTuCOnNPNXa/nYafauBsneG0qM9ew20PuWNLH8NlS4mBPjJv09bX
         HJMwpQQx5hek0Ik+8lK6W3WgVWZLJ73WK4M3nksWsf1bK1tIVi1pK/AdoLuIpGNdPqDM
         QmG4XSlUyfjrekqJm/egzAYHicOlfeNZFnJdqouEDxaCK1esI2bGkrYrIw/IfE+P2AIm
         WA0g==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706020610; x=1706625410;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=gw/q+zCha9+NhwmsgQc4y/QnuZt6k+sWrwVp12yjy68=;
        b=ttt2Y0R9scOvmC2Ofd3D8y7JZ5PrPXiQQNvNWgFAtZ3gRaGyHVJw7bIOxnrn90ncvU
         R1gterUNjSvhZrOWpOz2BZrZR1AIcNwIya1TrqjTvhq59BuVujZHBr7o3xJkTFZ+lkUA
         PZnkUxAdjWYYj+jo9Wps7+IGc5uaqYmNzZYrcG1tOG7OT1KzpT7mkgqjBBlb1D1DDgsr
         0B1sJ4DeN1P5Vri5gpD+2NNaK6VNTCk/nHiqnSEfILkyuIxjZLKHvbSiAHwBecfhhxOW
         jS4n+VYV14RHlrDG3XLWf+AF5dz9GNb5/e5QnfEC1fbn+htvfw1SfGuZHSQwO19/SssY
         MuXQ==
X-Gm-Message-State: AOJu0YwxLGnBSqnc1b2y9LnkJOKAIoLBeoS7nvqzrJETKyP3XALt45CS
	W/e9sQDTARC6/Pp3kq81m2/EwOJdsuwdhQbAxNCnGThtH/doANd3UNQvXTOAEsPWB6Kiye6sjn0
	=
X-Google-Smtp-Source: AGHT+IGP4kZjPq8uxD34denwthb1n6yAXtuqwKhTKov2SnxLZGmZHk2dI9So4sRzyPk4GRZrAlooLw==
X-Received: by 2002:a2e:8906:0:b0:2cc:e708:adab with SMTP id d6-20020a2e8906000000b002cce708adabmr2857485lji.99.1706020610058;
        Tue, 23 Jan 2024 06:36:50 -0800 (PST)
Message-ID: <d1154d3a-769e-45c4-8f0e-265799756cb8@suse.com>
Date: Tue, 23 Jan 2024 15:36:46 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v12 03/15] vpci: add hooks for PCI device assign/de-assign
Content-Language: en-US
To: Stewart Hildebrand <stewart.hildebrand@amd.com>
Cc: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>,
 Paul Durrant <paul@xen.org>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger.pau@citrix.com>, Volodymyr Babchuk <volodymyr_babchuk@epam.com>,
 xen-devel@lists.xenproject.org
References: <20240109215145.430207-1-stewart.hildebrand@amd.com>
 <20240109215145.430207-4-stewart.hildebrand@amd.com>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <20240109215145.430207-4-stewart.hildebrand@amd.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 09.01.2024 22:51, Stewart Hildebrand wrote:
> From: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>
> 
> When a PCI device gets assigned/de-assigned we need to
> initialize/de-initialize vPCI state for the device.
> 
> Also, rename vpci_add_handlers() to vpci_assign_device() and
> vpci_remove_device() to vpci_deassign_device() to better reflect role
> of the functions.
> 
> Signed-off-by: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>
> Signed-off-by: Volodymyr Babchuk <volodymyr_babchuk@epam.com>
> Reviewed-by: Roger Pau Monné <roger.pau@citrix.com>
> Signed-off-by: Stewart Hildebrand <stewart.hildebrand@amd.com>

Acked-by: Jan Beulich <jbeulich@suse.com>




From xen-devel-bounces@lists.xenproject.org Tue Jan 23 14:49:41 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 23 Jan 2024 14:49:41 +0000
Received: from list by lists.xenproject.org with outflank-mailman.670515.1043349 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSI5m-0005QG-JF; Tue, 23 Jan 2024 14:49:34 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 670515.1043349; Tue, 23 Jan 2024 14:49:34 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSI5m-0005Q9-G9; Tue, 23 Jan 2024 14:49:34 +0000
Received: by outflank-mailman (input) for mailman id 670515;
 Tue, 23 Jan 2024 14:49:33 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=OrDF=JB=gmail.com=oleksii.kurochko@srs-se1.protection.inumbo.net>)
 id 1rSI5l-0005Q3-5Z
 for xen-devel@lists.xenproject.org; Tue, 23 Jan 2024 14:49:33 +0000
Received: from mail-lj1-x22a.google.com (mail-lj1-x22a.google.com
 [2a00:1450:4864:20::22a])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 9e213e5f-b9fe-11ee-98f4-6d05b1d4d9a1;
 Tue, 23 Jan 2024 15:49:32 +0100 (CET)
Received: by mail-lj1-x22a.google.com with SMTP id
 38308e7fff4ca-2cf0eba6a30so11202301fa.1
 for <xen-devel@lists.xenproject.org>; Tue, 23 Jan 2024 06:49:32 -0800 (PST)
Received: from [192.168.206.239] ([94.75.70.14])
 by smtp.gmail.com with ESMTPSA id
 i26-20020a0564020f1a00b0055c0dba33b7sm419591eda.18.2024.01.23.06.49.30
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 23 Jan 2024 06:49:31 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 9e213e5f-b9fe-11ee-98f4-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1706021371; x=1706626171; darn=lists.xenproject.org;
        h=mime-version:user-agent:content-transfer-encoding:references
         :in-reply-to:date:cc:to:from:subject:message-id:from:to:cc:subject
         :date:message-id:reply-to;
        bh=k5SU8HDvJXS/miUkS75zneZmkLhT6LXjtdvOtw/xfB8=;
        b=MVS7rkSJpg3qTQryz1yMwRhSNvEJQtfTy+QrcU+ZfKB6/KI4X1sBPKJCnvYSMFj+HC
         jRo+cr4wd+Fuf7mURA7CpUP+yTmTuszB8sO5zdwPshblaBQXMijxKdduOLKeyBMqdZ9V
         AmFks02QhXQ8n4zGxxauius/Y8Pp+1ZP5s4Vm+wVJniVqxdRl7BEfkpWPnnmNiz59dqZ
         YD8Wh9SuhltyHLnbITao83MaCXor2B6yi8PU0lWaSeKL7yLIlfbQa9rXgZWzBBGqrTNV
         TBPfoCOMIyknj4JyztoqC7p75z9uNuDEdHPmTTABHZpWtRzGN3pCSZOF6QRRBIQ03eCb
         otDA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706021371; x=1706626171;
        h=mime-version:user-agent:content-transfer-encoding:references
         :in-reply-to:date:cc:to:from:subject:message-id:x-gm-message-state
         :from:to:cc:subject:date:message-id:reply-to;
        bh=k5SU8HDvJXS/miUkS75zneZmkLhT6LXjtdvOtw/xfB8=;
        b=C0n62uBca3f/SKzWzRes0DCek987FZGv/h2NScPgphyJsIAXvj+88gPnc5l9gmpKSj
         f503UIVfWn4eihXjYXX0FtvyiFf6FwZt8EMozfXxW1kX3supLlN7bYVvXkapTL74OgfO
         kPznzlUBxK+0cYIyxwDKTZC5L/FmL4aTStVPqtExZ9RwK0kIyKkTt2DhNJ+aHf3OAUTw
         9jgluK99//odgUVikiXYyf0gdGAj94e/RVHjYdwgiqa/xLXGEXK2hF21RNgv3ehMBEHQ
         6SVzOWtzLY336fWJP91LgBtI4KJf8DXth4L4JwkCG9p3M+SgsRUMe2F8pxgUmLcxAC8D
         TDTw==
X-Gm-Message-State: AOJu0YzZQQGJcSGdyXkVVBiOdMOMh30fpvWdk9AEkfqxeBIbILAPfXC/
	lMWlVRg3fA9zodg/zT1wSfv1TVW0OWIUmhMQq/U0HuViM3l48CjR
X-Google-Smtp-Source: AGHT+IG/0FblsiWLtU4/K7R26t84d394TWAaUzDgPifOCNJkiB4aafDAv/WKpDvYulsJ1ZQ+br/C4Q==
X-Received: by 2002:a2e:a445:0:b0:2cd:f62d:adb2 with SMTP id v5-20020a2ea445000000b002cdf62dadb2mr2793785ljn.87.1706021371368;
        Tue, 23 Jan 2024 06:49:31 -0800 (PST)
Message-ID: <2a08cae2c6db049dc08db59f38c4e75573e37064.camel@gmail.com>
Subject: Re: [PATCH v3 34/34] xen/README: add compiler and binutils versions
 for RISC-V64
From: Oleksii <oleksii.kurochko@gmail.com>
To: Jan Beulich <jbeulich@suse.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, George Dunlap
 <george.dunlap@citrix.com>, Julien Grall <julien@xen.org>, Stefano
 Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>,
 xen-devel@lists.xenproject.org
Date: Tue, 23 Jan 2024 16:49:30 +0200
In-Reply-To: <88a7e5af-197b-41ef-b3c2-7d4f85a3cb85@suse.com>
References: <cover.1703255175.git.oleksii.kurochko@gmail.com>
	 <c4d579f02b431d6ac9366dee73ebd7ab74e44715.1703255175.git.oleksii.kurochko@gmail.com>
	 <88a7e5af-197b-41ef-b3c2-7d4f85a3cb85@suse.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
User-Agent: Evolution 3.50.2 (3.50.2-1.fc39) 
MIME-Version: 1.0

On Tue, 2024-01-23 at 12:22 +0100, Jan Beulich wrote:
> On 22.12.2023 16:13, Oleksii Kurochko wrote:
> > Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>
> > ---
> > =C2=A0Changes in V3:
> > =C2=A0 - new patch
> > ---
> > =C2=A0README | 3 +++
> > =C2=A01 file changed, 3 insertions(+)
> >=20
> > diff --git a/README b/README
> > index c8a108449e..1015a285c0 100644
> > --- a/README
> > +++ b/README
> > @@ -48,6 +48,9 @@ provided by your OS distributor:
> > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 - For ARM 64-bit:
> > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 - GCC 5.1 or later
> > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 - GNU Binutils 2.24 or=
 later
> > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 - For RISC-V 64-bit:
> > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 - GCC 13.2.1 or later
> > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 - GNU Binutils 2.40 or late=
r
>=20
> That's pretty new. For gcc that's even newer than the newest release.
> If older versions really won't do, I don't think you can leave this
> unjustified (by having an empty description). Till now gcc 13.2 has
> served me well, and iirc 13.1, 12.3, and 12.2 were fine, too.
It can be 12.2.0 for GCC and 2.39 for GNU Binutils. ( it is toolchain
which is used by contrainer for RISC-V in Xen ). I'll update versions
then.

But could you please explain again why it can't be 13.2.1 ( it is a
version which I have in my distribution, so it is the reason why I used
this version in README file ) ?

~ Oleksii



From xen-devel-bounces@lists.xenproject.org Tue Jan 23 15:07:20 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 23 Jan 2024 15:07:20 +0000
Received: from list by lists.xenproject.org with outflank-mailman.670520.1043360 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSIMq-00017g-5U; Tue, 23 Jan 2024 15:07:12 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 670520.1043360; Tue, 23 Jan 2024 15:07:12 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSIMq-00017Z-0Y; Tue, 23 Jan 2024 15:07:12 +0000
Received: by outflank-mailman (input) for mailman id 670520;
 Tue, 23 Jan 2024 15:07:10 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=gDjx=JB=cloud.com=roger.pau@srs-se1.protection.inumbo.net>)
 id 1rSIMo-00017T-Ps
 for xen-devel@lists.xenproject.org; Tue, 23 Jan 2024 15:07:10 +0000
Received: from mail-wm1-x330.google.com (mail-wm1-x330.google.com
 [2a00:1450:4864:20::330])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 1445f9d7-ba01-11ee-98f4-6d05b1d4d9a1;
 Tue, 23 Jan 2024 16:07:09 +0100 (CET)
Received: by mail-wm1-x330.google.com with SMTP id
 5b1f17b1804b1-40eb0836f8dso17530885e9.2
 for <xen-devel@lists.xenproject.org>; Tue, 23 Jan 2024 07:07:09 -0800 (PST)
Received: from localhost ([213.195.118.74]) by smtp.gmail.com with ESMTPSA id
 jb13-20020a05600c54ed00b0040e418494absm41756335wmb.46.2024.01.23.07.07.08
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 23 Jan 2024 07:07:08 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 1445f9d7-ba01-11ee-98f4-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1706022429; x=1706627229; darn=lists.xenproject.org;
        h=in-reply-to:content-disposition:mime-version:references:message-id
         :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to;
        bh=I7wM/1rXgOuon42oEldfXYPMXxsGK00QIox6AXmIImk=;
        b=MB53cY2/xk0N1vuKakOkYgNrxu+HGJUZH8eSM/YawNsKntt8jPfQ36kQGAMO/B+l8M
         2YzY+vF1p3PmeEdHmhhc7YSFVTBUoT2Qlvf3XwimhpTHWEvDbTzJBWmfCNfaawuqr917
         sOugXkYT6Wc2sm8Rf6GCqlp/rJDjMffOlbxd4=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706022429; x=1706627229;
        h=in-reply-to:content-disposition:mime-version:references:message-id
         :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to;
        bh=I7wM/1rXgOuon42oEldfXYPMXxsGK00QIox6AXmIImk=;
        b=oA4lZmZ/43/TwagPn1lw+8xXDVOIytloT16sxMpeDzsPKBYGERjMGjRUY2SEmEGwBQ
         69be8glJGy5M1XRE4JOFeiLTC+LOJHCxHLw5zQhCWSAtCuwT9cha9SIOZRmtvmgLVRxw
         HaCiuP4pfAylj8RgHiyJiOJ66umNSmZcJirLbxCcZm0Cq8KHpRJhnIGJ6VBoP7aWyzGE
         2v7GepyoytgymxIsAtv/tqSuTgWdR32YOMP36AoU1ww5qIBzNvdfEX9jAIn6ahJGbwbq
         VcQbwJyhW6EK5SfCJA3yWJtbxMUNwt+VhJeQ5QYe9+6mcAQda7XVIHM7tqarzhfB2z9S
         kuXg==
X-Gm-Message-State: AOJu0YzPXYDKbRPIK39nq/TAVj5fezmlb8Oi9Iw/hTixfVz+V3Sel+SY
	s1bLJD62VJLIbeeDJiiOwHGPS2qYreSxOXvPAAAtykS9CD/4B+OegdYZ7LEKTdU=
X-Google-Smtp-Source: AGHT+IFwM7oCdmc+lXsPO9Mkme4/uVgP+h3bwOFqLSTvTIcvItX+TRbtFYPUXOqpjTyF+sIO6aKEqA==
X-Received: by 2002:a05:600c:21d0:b0:40d:3112:a2c3 with SMTP id x16-20020a05600c21d000b0040d3112a2c3mr227449wmj.73.1706022428890;
        Tue, 23 Jan 2024 07:07:08 -0800 (PST)
Date: Tue, 23 Jan 2024 16:07:07 +0100
From: Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
To: Jan Beulich <jbeulich@suse.com>
Cc: Stewart Hildebrand <stewart.hildebrand@amd.com>,
	Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>, Wei Liu <wl@xen.org>,
	George Dunlap <george.dunlap@citrix.com>,
	Julien Grall <julien@xen.org>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Jun Nakajima <jun.nakajima@intel.com>,
	Kevin Tian <kevin.tian@intel.com>, Paul Durrant <paul@xen.org>,
	Volodymyr Babchuk <volodymyr_babchuk@epam.com>,
	xen-devel@lists.xenproject.org
Subject: Re: [PATCH v12.2 01/15] vpci: use per-domain PCI lock to protect
 vpci structure
Message-ID: <Za_WGzS14Eqt8yZF@macbook>
References: <20240109215145.430207-1-stewart.hildebrand@amd.com>
 <20240109215145.430207-2-stewart.hildebrand@amd.com>
 <20240115194309.45683-1-stewart.hildebrand@amd.com>
 <715e40c9-1776-4677-9565-dac1565a2aa8@suse.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
In-Reply-To: <715e40c9-1776-4677-9565-dac1565a2aa8@suse.com>

On Tue, Jan 23, 2024 at 03:32:12PM +0100, Jan Beulich wrote:
> On 15.01.2024 20:43, Stewart Hildebrand wrote:
> > @@ -2888,6 +2888,8 @@ int allocate_and_map_msi_pirq(struct domain *d, int index, int *pirq_p,
> >  {
> >      int irq, pirq, ret;
> >  
> > +    ASSERT(pcidevs_locked() || rw_is_locked(&d->pci_lock));
> 
> If either lock is sufficient to hold here, ...
> 
> > --- a/xen/arch/x86/physdev.c
> > +++ b/xen/arch/x86/physdev.c
> > @@ -123,7 +123,9 @@ int physdev_map_pirq(domid_t domid, int type, int *index, int *pirq_p,
> >  
> >      case MAP_PIRQ_TYPE_MSI:
> >      case MAP_PIRQ_TYPE_MULTI_MSI:
> > +        pcidevs_lock();
> >          ret = allocate_and_map_msi_pirq(d, *index, pirq_p, type, msi);
> > +        pcidevs_unlock();
> >          break;
> 

IIRC (Stewart can further comment) this is done holding the pcidevs
lock to keep the path unmodified, as there's no need to hold the
per-domain rwlock.

Roger.


From xen-devel-bounces@lists.xenproject.org Tue Jan 23 15:24:05 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 23 Jan 2024 15:24:05 +0000
Received: from list by lists.xenproject.org with outflank-mailman.670524.1043369 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSIcs-0005Px-FS; Tue, 23 Jan 2024 15:23:46 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 670524.1043369; Tue, 23 Jan 2024 15:23:46 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSIcs-0005Pq-CN; Tue, 23 Jan 2024 15:23:46 +0000
Received: by outflank-mailman (input) for mailman id 670524;
 Tue, 23 Jan 2024 15:23:45 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=gDjx=JB=cloud.com=roger.pau@srs-se1.protection.inumbo.net>)
 id 1rSIcr-0005Ph-66
 for xen-devel@lists.xenproject.org; Tue, 23 Jan 2024 15:23:45 +0000
Received: from mail-wm1-x330.google.com (mail-wm1-x330.google.com
 [2a00:1450:4864:20::330])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 64741d1c-ba03-11ee-9b0f-b553b5be7939;
 Tue, 23 Jan 2024 16:23:43 +0100 (CET)
Received: by mail-wm1-x330.google.com with SMTP id
 5b1f17b1804b1-40ebf373130so6747635e9.3
 for <xen-devel@lists.xenproject.org>; Tue, 23 Jan 2024 07:23:42 -0800 (PST)
Received: from localhost ([213.195.118.74]) by smtp.gmail.com with ESMTPSA id
 m22-20020a05600c4f5600b0040ebf603a89sm1885177wmq.11.2024.01.23.07.23.42
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 23 Jan 2024 07:23:42 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 64741d1c-ba03-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1706023422; x=1706628222; darn=lists.xenproject.org;
        h=in-reply-to:content-disposition:mime-version:references:message-id
         :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to;
        bh=vnd+4bDLpE0hI7k7uD4FhqHy1XKVQ5YE8s7v778V7hQ=;
        b=LIpovmO9ig/+CanLS1YAYvazWSJFuzFVl8JslbPNya+cUnro1hFk4SJXZt0e1P4qDf
         j+IDKqFMAsjJDqZg1LDjYRqNlEMOsPTDVtGz1LqI0oCHhw2Y1gnB5OR2OBo6ec2xisvX
         fAUOX4MfiDx7W1BuBOj5AqTMo3OPkFkOouDxI=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706023422; x=1706628222;
        h=in-reply-to:content-disposition:mime-version:references:message-id
         :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to;
        bh=vnd+4bDLpE0hI7k7uD4FhqHy1XKVQ5YE8s7v778V7hQ=;
        b=cBzgNBYUiexxWkX/6q7D/3nQeJqgCflfDP80GlWIqLl8VYLp84rxhUsBobfN4Qlpu4
         b8MMIcoervwe/ufecUdhEPcdf1t31p6LsImyZKiwNAZWUsEY3PY0gcIir00+0AKwzb64
         YwgkBOikpKqUPXZtvX6HFoHi3sH434q2Z1N1ZT5SuT5Qav8IpG73LUMSVnppKE4QuIT3
         lQ6a3J1P8cEFKS52JkZJX5Luufa2UpDN5U2I/9iusVmDN040bMzZAuaWI0ModydMpSYi
         WTpaHuIEgWr4fLVmWpgU9u1ZvsNPniJ0B+e9a51Scnj7YZ4R5ACTDZcC0n2+tXh1jO0t
         Om/w==
X-Gm-Message-State: AOJu0YxGQ/cLqYnU+Rzr6/dsu/jjT+agrLss122tMnhXu3kayfQi19hk
	I81jcVLVNhfEFNadL66Xo73TJoQi8yngUTUhW4WX6DzgTlzsqha/GCEb4OgM2Ag=
X-Google-Smtp-Source: AGHT+IFHhAQJ6Bg2EZI1aBLlm2bezAr5vAGrjUj2BdbtL2d/r5NTXQfKiXnE3s226r64Nl/bNfjI3A==
X-Received: by 2002:a05:600c:21c3:b0:40e:4683:9d69 with SMTP id x3-20020a05600c21c300b0040e46839d69mr656707wmj.132.1706023422411;
        Tue, 23 Jan 2024 07:23:42 -0800 (PST)
Date: Tue, 23 Jan 2024 16:23:41 +0100
From: Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
To: Jan Beulich <jbeulich@suse.com>
Cc: Stewart Hildebrand <stewart.hildebrand@amd.com>,
	Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>, Wei Liu <wl@xen.org>,
	George Dunlap <george.dunlap@citrix.com>,
	Julien Grall <julien@xen.org>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Jun Nakajima <jun.nakajima@intel.com>,
	Kevin Tian <kevin.tian@intel.com>, Paul Durrant <paul@xen.org>,
	Volodymyr Babchuk <volodymyr_babchuk@epam.com>,
	xen-devel@lists.xenproject.org
Subject: Re: [PATCH v12.2 01/15] vpci: use per-domain PCI lock to protect
 vpci structure
Message-ID: <Za_Z_WlLbBgb0EzF@macbook>
References: <20240109215145.430207-1-stewart.hildebrand@amd.com>
 <20240109215145.430207-2-stewart.hildebrand@amd.com>
 <20240115194309.45683-1-stewart.hildebrand@amd.com>
 <18ec3401-4334-40c0-82a0-31abfd9797d0@suse.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
In-Reply-To: <18ec3401-4334-40c0-82a0-31abfd9797d0@suse.com>

On Tue, Jan 23, 2024 at 03:26:26PM +0100, Jan Beulich wrote:
> On 15.01.2024 20:43, Stewart Hildebrand wrote:
> > --- a/xen/arch/x86/hvm/vmsi.c
> > +++ b/xen/arch/x86/hvm/vmsi.c
> > @@ -468,7 +468,7 @@ int msixtbl_pt_register(struct domain *d, struct pirq *pirq, uint64_t gtable)
> >      struct msixtbl_entry *entry, *new_entry;
> >      int r = -EINVAL;
> >  
> > -    ASSERT(pcidevs_locked());
> > +    ASSERT(pcidevs_locked() || rw_is_locked(&d->pci_lock));
> >      ASSERT(rw_is_write_locked(&d->event_lock));
> >  
> >      if ( !msixtbl_initialised(d) )
> > @@ -538,7 +538,7 @@ void msixtbl_pt_unregister(struct domain *d, struct pirq *pirq)
> >      struct pci_dev *pdev;
> >      struct msixtbl_entry *entry;
> >  
> > -    ASSERT(pcidevs_locked());
> > +    ASSERT(pcidevs_locked() || rw_is_locked(&d->pci_lock));
> >      ASSERT(rw_is_write_locked(&d->event_lock));
> 
> I was hoping to just ack this patch, but the two changes above look
> questionable to me: How can it be that holding _either_ lock is okay?
> It's not obvious in this context that consumers have to hold both
> locks now. In fact consumers looks to be the callers of
> msixtbl_find_entry(), yet the list is RCU-protected. Whereas races
> against themselves or against one another are avoided by holding
> d->event_lock.

The reason for the change here is that msixtbl_pt_{un,}register() gets
called by pt_irq_{create,destroy}_bind(), which is in turn called by
vPCI code (pcidevs_locked()) that has been switched to not take the
pcidevs lock anymore, and hence the ASSERT would trigger.

> My only guess then for the original need of holding pcidevs_lock is
> the use of msi_desc->dev, with the desire for the device to not go
> away. Yet the description doesn't talk about interactions of the per-
> domain PCI lock with that one at all; it all circles around the
> domain'd vPCI lock.

I do agree that it looks like the original intention of holding
pcidevs_lock is to prevent msi_desc->dev from being removed - yet I'm
not sure it's possible for the device to go away while the domain
event_lock is hold, as device removal would need to take that same
lock in order to destroy the irq_desc.

> Feels like I'm missing something that's obvious to everyone else.
> Or maybe this part of the patch is actually unrelated, and should be
> split off (with its own [proper] justification)? Or wouldn't it then
> be better to also change the other paths leading here to acquire the
> per-domain PCI lock?

Other paths in vPCI vpci_msi_update(), vpci_msi_arch_update(),
vpci_msi_arch_enable()... are switched in this patch to use the
per-domain pci_lock instead of pcidevs lock.

> > --- a/xen/arch/x86/hvm/vmx/vmx.c
> > +++ b/xen/arch/x86/hvm/vmx/vmx.c
> > @@ -413,7 +413,7 @@ static int cf_check vmx_pi_update_irte(const struct vcpu *v,
> >  
> >      spin_unlock_irq(&desc->lock);
> >  
> > -    ASSERT(pcidevs_locked());
> > +    ASSERT(pcidevs_locked() || rw_is_locked(&msi_desc->dev->domain->pci_lock));
> >  
> >      return iommu_update_ire_from_msi(msi_desc, &msi_desc->msg);
> 
> This then falls in the same category. And apparently there are more.

This one is again a result of such function being called from
pt_irq_create_bind() from vPCI code that has been switched to use the
per-domain pci_lock.

IOMMU state is already protected by it's own internal locks, and
doesn't rely on pcidevs lock.  Hence I can also only guess that the
usage here is to prevent the device from being removed.

Regards, Roger.


From xen-devel-bounces@lists.xenproject.org Tue Jan 23 16:03:32 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 23 Jan 2024 16:03:32 +0000
Received: from list by lists.xenproject.org with outflank-mailman.670529.1043379 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSJEw-0005om-AQ; Tue, 23 Jan 2024 16:03:06 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 670529.1043379; Tue, 23 Jan 2024 16:03:06 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSJEw-0005of-7Q; Tue, 23 Jan 2024 16:03:06 +0000
Received: by outflank-mailman (input) for mailman id 670529;
 Tue, 23 Jan 2024 16:03:04 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=amTM=JB=kernel.org=helgaas@srs-se1.protection.inumbo.net>)
 id 1rSJEu-0005oZ-F4
 for xen-devel@lists.xenproject.org; Tue, 23 Jan 2024 16:03:04 +0000
Received: from sin.source.kernel.org (sin.source.kernel.org [145.40.73.55])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id e13e0608-ba08-11ee-9b0f-b553b5be7939;
 Tue, 23 Jan 2024 17:03:01 +0100 (CET)
Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58])
 by sin.source.kernel.org (Postfix) with ESMTP id 4D378CE2F25;
 Tue, 23 Jan 2024 16:02:55 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 4CE89C433F1;
 Tue, 23 Jan 2024 16:02:54 +0000 (UTC)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: e13e0608-ba08-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
	s=k20201202; t=1706025774;
	bh=fBQWnLEBcYKTR5Qq7Ag6Kr3ZXGVUxHSMlcYjRnrDpCw=;
	h=Date:From:To:Cc:Subject:In-Reply-To:From;
	b=W6h4Q+yW/ndZBGBIYtAlkUk50X2t2NYM6vTxdjLeHdF0LS7L/E7xxpzJYiLpK3ZVf
	 cxLMQ6NCDTLGEQb3Ee69CTnTiPCnP5O7OAKltCTwxTbk6Tng/0W8zHUfqUrZzaJlOr
	 JEGR09vZVL32iC1gSTucjmxerZB1C+BrO7Nge/bay5nEfiRf7JvahldiZKXN6yeNNl
	 wjxbZxVI8GjvV+ieI3y1Z6Nb1l72e93Ql8ayabmkdTLQgWY07nx5uo+dBgiRV/GV5s
	 RBAt7o76WucKEx7ES6icgfU/zS67hfRDPH3KzAm1KlHvrrY4zNRdXCxGkV33OcfaUX
	 ARNNR+BTs1psA==
Date: Tue, 23 Jan 2024 10:02:52 -0600
From: Bjorn Helgaas <helgaas@kernel.org>
To: "Chen, Jiqian" <Jiqian.Chen@amd.com>
Cc: "Rafael J . Wysocki" <rafael@kernel.org>, Len Brown <lenb@kernel.org>,
	Juergen Gross <jgross@suse.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>,
	Boris Ostrovsky <boris.ostrovsky@oracle.com>,
	Bjorn Helgaas <bhelgaas@google.com>,
	Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>,
	"xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>,
	"linux-pci@vger.kernel.org" <linux-pci@vger.kernel.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"linux-acpi@vger.kernel.org" <linux-acpi@vger.kernel.org>,
	"Hildebrand, Stewart" <Stewart.Hildebrand@amd.com>,
	"Huang, Ray" <Ray.Huang@amd.com>,
	"Ragiadakou, Xenia" <Xenia.Ragiadakou@amd.com>
Subject: Re: [RFC KERNEL PATCH v4 3/3] PCI/sysfs: Add gsi sysfs for pci_dev
Message-ID: <20240123160252.GA316914@bhelgaas>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <BL1PR12MB5849D7A9EC2BEB55CAF3A889E7742@BL1PR12MB5849.namprd12.prod.outlook.com>

On Tue, Jan 23, 2024 at 10:13:52AM +0000, Chen, Jiqian wrote:
> On 2024/1/23 07:37, Bjorn Helgaas wrote:
> > On Fri, Jan 05, 2024 at 02:22:17PM +0800, Jiqian Chen wrote:
> >> There is a need for some scenarios to use gsi sysfs.
> >> For example, when xen passthrough a device to dumU, it will
> >> use gsi to map pirq, but currently userspace can't get gsi
> >> number.
> >> So, add gsi sysfs for that and for other potential scenarios.
> ...

> > I don't know enough about Xen to know why it needs the GSI in
> > userspace.  Is this passthrough brand new functionality that can't be
> > done today because we don't expose the GSI yet?
>
> In Xen architecture, there is a privileged domain named Dom0 that
> has ACPI support and is responsible for detecting and controlling
> the hardware, also it performs privileged operations such as the
> creation of normal (unprivileged) domains DomUs. When we give to a
> DomU direct access to a device, we need also to route the physical
> interrupts to the DomU. In order to do so Xen needs to setup and map
> the interrupts appropriately.

What kernel interfaces are used for this setup and mapping?


From xen-devel-bounces@lists.xenproject.org Tue Jan 23 16:51:15 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 23 Jan 2024 16:51:15 +0000
Received: from list by lists.xenproject.org with outflank-mailman.670534.1043390 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSJzO-0006yE-QC; Tue, 23 Jan 2024 16:51:06 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 670534.1043390; Tue, 23 Jan 2024 16:51:06 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSJzO-0006y7-LT; Tue, 23 Jan 2024 16:51:06 +0000
Received: by outflank-mailman (input) for mailman id 670534;
 Tue, 23 Jan 2024 16:51:05 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=OrDF=JB=gmail.com=oleksii.kurochko@srs-se1.protection.inumbo.net>)
 id 1rSJzN-0006xv-Lo
 for xen-devel@lists.xenproject.org; Tue, 23 Jan 2024 16:51:05 +0000
Received: from mail-ed1-x531.google.com (mail-ed1-x531.google.com
 [2a00:1450:4864:20::531])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 98401c20-ba0f-11ee-98f4-6d05b1d4d9a1;
 Tue, 23 Jan 2024 17:51:04 +0100 (CET)
Received: by mail-ed1-x531.google.com with SMTP id
 4fb4d7f45d1cf-55a179f5fa1so5343782a12.0
 for <xen-devel@lists.xenproject.org>; Tue, 23 Jan 2024 08:51:04 -0800 (PST)
Received: from [192.168.206.239] ([94.75.70.14])
 by smtp.gmail.com with ESMTPSA id
 i4-20020a17090639c400b00a27a766c6c8sm14563101eje.218.2024.01.23.08.51.02
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 23 Jan 2024 08:51:02 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 98401c20-ba0f-11ee-98f4-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1706028663; x=1706633463; darn=lists.xenproject.org;
        h=mime-version:user-agent:content-transfer-encoding:references
         :in-reply-to:date:cc:to:from:subject:message-id:from:to:cc:subject
         :date:message-id:reply-to;
        bh=IjVQ1mt2WZXTkY8V6YFxMevJWcahWvNZEduVU5MWdEA=;
        b=a5BHxsB36nGgWfungligfXMBR1TcwgcZModkNA2rCK4oMqhVkoWGx4n5DeozPuyAXC
         zMJOGgVMmhbaPs2BKIzfHavHMEE8b/IO/NO1HG44XK6hi/gPP4IYqQlwTYGZDLXWzYXh
         G6UQl6oV6WsSuIBIFFlJbk8CjmCoHfEVZapkmjrFzs8EjxIghcKcFcplXEuzG5RAo1QL
         R8CS6uScfM9Grc7iBDe0WT8QPQwv7af/TjFRjcLThqywyzunGeN78KGIUspAsJ5ZY70j
         bkJS0aAfWAAJHi+froS6eBIuCs9pA0T+V9bmg5CGEkA/YAn2svWqXSpoeGaMT5Mmp9qq
         jr0A==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706028663; x=1706633463;
        h=mime-version:user-agent:content-transfer-encoding:references
         :in-reply-to:date:cc:to:from:subject:message-id:x-gm-message-state
         :from:to:cc:subject:date:message-id:reply-to;
        bh=IjVQ1mt2WZXTkY8V6YFxMevJWcahWvNZEduVU5MWdEA=;
        b=DetKTS48yowtrzr6uEuru+QsSsbLV2JOJLf732ml0N+pP20YZZLk61XoB2W4GQDGxT
         6AqK3EGJhDtPRQA5gGjakbYCOKD8YhuihXMJ0tRA0TQv3CymKUP6p3PpHa9EKUvbzpmp
         CbiRREHwlrHbjB4dPZi89+WxjzRXkkiKOlMePtsvxTIBAUORWV5eHap7X+/T/cqGMZkn
         4VT+5Wq1GzTtbp8BfsHUJq7ceRV7Kiwbyk3+s6HB5OOhoBPMUT4WzYm0J+uGHqn1xPYl
         nyyQMV2LjqRgbVmbPBdOMRX+PpWu8UZz16ov7ORiwa1eSJhXLHAavjLk41irDNxYL1k/
         1pyA==
X-Gm-Message-State: AOJu0YxKpZnpWeUBFem3eUoTFZWPUn81pJUj/HMgscVXM3kubV0DGmHS
	DvvnhcAMJYcw/tn9smhnJ2W5dgB13FYHFK9+YtPuC1Y4xQIpJAx0
X-Google-Smtp-Source: AGHT+IE4aCqfo9pZTKI7fnB8ef9gbMNxtdR+t59B5wmqgkZv0KEQS4hmTo8KLs1TU77dM+YofAs3SA==
X-Received: by 2002:a17:906:a3c2:b0:a30:51c4:bf9f with SMTP id ca2-20020a170906a3c200b00a3051c4bf9fmr88716ejb.54.1706028662991;
        Tue, 23 Jan 2024 08:51:02 -0800 (PST)
Message-ID: <2267a8dc4b1be495be65c2d7e22378cd2394829c.camel@gmail.com>
Subject: Re: [PATCH v3 27/34] xen/riscv: define an address of frame table
From: Oleksii <oleksii.kurochko@gmail.com>
To: Jan Beulich <jbeulich@suse.com>
Cc: Alistair Francis <alistair.francis@wdc.com>, Bob Eshleman
 <bobbyeshleman@gmail.com>, Connor Davis <connojdavis@gmail.com>, Andrew
 Cooper <andrew.cooper3@citrix.com>, George Dunlap
 <george.dunlap@citrix.com>,  Julien Grall <julien@xen.org>, Stefano
 Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>, 
 xen-devel@lists.xenproject.org
Date: Tue, 23 Jan 2024 18:50:54 +0200
In-Reply-To: <39837f92-d139-49c3-9e5f-a79dd585f050@suse.com>
References: <cover.1703255175.git.oleksii.kurochko@gmail.com>
	 <d0a357e3b9597479b539e88915731b3f15489c04.1703255175.git.oleksii.kurochko@gmail.com>
	 <39837f92-d139-49c3-9e5f-a79dd585f050@suse.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
User-Agent: Evolution 3.50.2 (3.50.2-1.fc39) 
MIME-Version: 1.0

On Tue, 2024-01-23 at 12:32 +0100, Jan Beulich wrote:
> On 22.12.2023 16:13, Oleksii Kurochko wrote:
> > Also, the patch adds some helpful macros that assist in avoiding
> > the redefinition of memory layout for each MMU mode.
> >=20
> > Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>
> > ---
> > Changes in V3:
> > =C2=A0- drop OFFSET_BITS, and use PAGE_SHIFT instead.
> > =C2=A0- code style fixes.
> > =C2=A0- add comment how macros are useful.
> > =C2=A0- move all memory related layout definitions close to comment wit=
h
> > memory layout description.
> > =C2=A0- make memory layout description generic for any MMU mode.
> > ---
> > Changes in V2:
> > =C2=A0- Nothing changed. Only rebase.
> > ---
> > =C2=A0xen/arch/riscv/include/asm/config.h | 85 +++++++++++++++++++-----=
-
> > ----
> > =C2=A01 file changed, 55 insertions(+), 30 deletions(-)
> >=20
> > diff --git a/xen/arch/riscv/include/asm/config.h
> > b/xen/arch/riscv/include/asm/config.h
> > index f0544c6a20..fb9fc9daaa 100644
> > --- a/xen/arch/riscv/include/asm/config.h
> > +++ b/xen/arch/riscv/include/asm/config.h
> > @@ -6,6 +6,14 @@
> > =C2=A0#include <xen/const.h>
> > =C2=A0#include <xen/page-size.h>
> > =C2=A0
> > +#ifdef CONFIG_RISCV_64
> > +#define CONFIG_PAGING_LEVELS 3
> > +#define RV_STAGE1_MODE SATP_MODE_SV39
> > +#else
> > +#define CONFIG_PAGING_LEVELS 2
> > +#define RV_STAGE1_MODE SATP_MODE_SV32
> > +#endif
> > +
> > =C2=A0/*
> > =C2=A0 * RISC-V64 Layout:
> > =C2=A0 *
> > @@ -22,25 +30,56 @@
> > =C2=A0 *
> > =C2=A0 * It means that:
> > =C2=A0 *=C2=A0=C2=A0 top VA bits are simply ignored for the purpose of =
translating
> > to PA.
> > +#endif
> > =C2=A0 *
> > - *
> > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
> > =3D=3D=3D=3D=3D=3D=3D=3D=3D
> > - *=C2=A0=C2=A0=C2=A0 Start addr=C2=A0=C2=A0=C2=A0 |=C2=A0=C2=A0 End ad=
dr=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 |=C2=A0 Size=C2=A0 | Slot=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0
> > |area description
> > - *
> > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
> > =3D=3D=3D=3D=3D=3D=3D=3D=3D
> > - * FFFFFFFFC0800000 |=C2=A0 FFFFFFFFFFFFFFFF |1016 MB | L2 511=C2=A0=
=C2=A0=C2=A0=C2=A0 |
> > Unused
> > - * FFFFFFFFC0600000 |=C2=A0 FFFFFFFFC0800000 |=C2=A0 2 MB=C2=A0 | L2 5=
11=C2=A0=C2=A0=C2=A0=C2=A0 |
> > Fixmap
> > - * FFFFFFFFC0200000 |=C2=A0 FFFFFFFFC0600000 |=C2=A0 4 MB=C2=A0 | L2 5=
11=C2=A0=C2=A0=C2=A0=C2=A0 |
> > FDT
> > - * FFFFFFFFC0000000 |=C2=A0 FFFFFFFFC0200000 |=C2=A0 2 MB=C2=A0 | L2 5=
11=C2=A0=C2=A0=C2=A0=C2=A0 |
> > Xen
> > - *=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 ...=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 |=C2=A0 1 G=
B=C2=A0 | L2 510=C2=A0=C2=A0=C2=A0=C2=A0 |
> > Unused
> > - * 0000003200000000 |=C2=A0 0000007F80000000 | 309 GB | L2 200-509 |
> > Direct map
> > - *=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 ...=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 |=C2=A0 1 G=
B=C2=A0 | L2 199=C2=A0=C2=A0=C2=A0=C2=A0 |
> > Unused
> > - * 0000003100000000 |=C2=A0 00000031C0000000 |=C2=A0 3 GB=C2=A0 | L2 1=
96-198 |
> > Frametable
> > - *=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 ...=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 |=C2=A0 1 G=
B=C2=A0 | L2 195=C2=A0=C2=A0=C2=A0=C2=A0 |
> > Unused
> > - * 0000003080000000 |=C2=A0 00000030C0000000 |=C2=A0 1 GB=C2=A0 | L2 1=
94=C2=A0=C2=A0=C2=A0=C2=A0 |
> > VMAP
> > - *=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 ...=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 | 194 GB | =
L2 0 - 193 |
> > Unused
> > - *
> > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
> > =3D=3D=3D=3D=3D=3D=3D=3D=3D
> > + *=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 SATP_MODE_SV32=C2=A0=C2=A0 | SA=
TP_MODE_SV39=C2=A0=C2=A0 | SATP_MODE_SV48=C2=A0=C2=A0 |
> > SATP_MODE_SV57
> > + *=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0
> > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D|=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D|=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D|=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
> > =3D=3D=3D=3D=3D=3D=3D
> > + * BA0 | FFFFFFFFFFE00000 | FFFFFFFFC0000000 | FFFFFF8000000000 |
> > FFFF000000000000
> > + * BA1 | 0000000019000000 | 0000003200000000 | 0000640000000000 |
> > 00C8000000000000
> > + * BA2 | 0000000018800000 | 0000003100000000 | 0000620000000000 |
> > 00C4000000000000
> > + * BA3 | 0000000018400000 | 0000003080000000 | 0000610000000000 |
> > 00C2000000000000
> > =C2=A0 *
> > -#endif
> > + *
> > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
> > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
> > + * Start addr=C2=A0=C2=A0=C2=A0=C2=A0 |=C2=A0=C2=A0 End addr=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 |=C2=A0 Size=C2=A0 | Root PT =
slot |
> > Area description
> > + *
> > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
> > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
> > + * BA0 + 0x800000 |=C2=A0 FFFFFFFFFFFFFFFF=C2=A0=C2=A0 |1016 MB |=C2=
=A0=C2=A0=C2=A0=C2=A0 511=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 |
> > Unused
> > + * BA0 + 0x400000 |=C2=A0 BA0 + 0x800000=C2=A0=C2=A0=C2=A0=C2=A0 |=C2=
=A0 2 MB=C2=A0 |=C2=A0=C2=A0=C2=A0=C2=A0 511=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 =
|
> > Fixmap
> > + * BA0 + 0x200000 |=C2=A0 BA0 + 0x400000=C2=A0=C2=A0=C2=A0=C2=A0 |=C2=
=A0 4 MB=C2=A0 |=C2=A0=C2=A0=C2=A0=C2=A0 511=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 =
|
> > FDT
> > + * BA0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0 |=C2=A0 BA0 + 0x200000=C2=A0=C2=A0=C2=A0=C2=A0 |=C2=A0 2 MB=C2=A0 |=C2=
=A0=C2=A0=C2=A0=C2=A0 511=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 |
> > Xen
> > + *=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 ...=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 |=C2=A0 1 G=
B=C2=A0 |=C2=A0=C2=A0=C2=A0=C2=A0 510=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 |
> > Unused
> > + * BA1 + 0x000000 |=C2=A0 BA1 + 0x4D80000000 | 309 GB |=C2=A0=C2=A0 20=
0-509=C2=A0=C2=A0=C2=A0 |
> > Direct map
>=20
> This definitely can't be right for SV32. Others may be problematic,
> too, like ...
>=20
> > + *=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 ...=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 |=C2=A0 1 G=
B=C2=A0 |=C2=A0=C2=A0=C2=A0=C2=A0 199=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 |
> > Unused
> > + * BA2 + 0x000000 |=C2=A0 BA2 + 0xC0000000=C2=A0=C2=A0 |=C2=A0 3 GB=C2=
=A0 |=C2=A0=C2=A0 196-198=C2=A0=C2=A0=C2=A0 |
> > Frametable
>=20
> ... this one. Otoh I'd expect both to potentially be much larger in
> SV48 and SV57 modes.
Regarding Sv32, it looks to me the only BA0 and End addr at the first
line isn't correct as address size is 32.

Regarding other modes, yes, it should be changed Size column. Also, the
size of frame table should be recalculated.

Do we really need size column?

Wouldn't it be enough only have PT slot number?

Would it be better to have separate table for each mode?

Probably, it would be more useful to print memory map to Xen console.

>=20
> > + *=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 ...=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 |=C2=A0 1 G=
B=C2=A0 |=C2=A0=C2=A0=C2=A0=C2=A0 195=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 |
> > Unused
> > + * BA3 + 0x000000 |=C2=A0 BA3 + 0x40000000=C2=A0=C2=A0 |=C2=A0 1 GB=C2=
=A0 |=C2=A0=C2=A0=C2=A0=C2=A0 194=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 |
> > VMAP
> > + *=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 ...=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 | 194 GB |=
=C2=A0=C2=A0 0 - 193=C2=A0=C2=A0=C2=A0 |
> > Unused
> > + *
> > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
> > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
> > =C2=A0 */
> > +#define VPN_BITS=C2=A0=C2=A0=C2=A0 (9)
>=20
> This need to move ...
>=20
> > +#define HYP_PT_ROOT_LEVEL (CONFIG_PAGING_LEVELS - 1)
> > +
> > +#ifdef CONFIG_RISCV_64
>=20
> ... here, I think, for not being applicable to SV32?
You are right, it is not applicable for Sv32. In case of Sv32, it
should be 10.
But I am not sure that it is correct only to move this definition as
RISCV-64 can also use Sv32. So it looks like VPN_BITS should be "#ifdef
RV_STAGE1_MODE =3D=3D Sv32".

>=20
> > +#define SLOTN_ENTRY_BITS=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 (HY=
P_PT_ROOT_LEVEL * VPN_BITS +
> > PAGE_SHIFT)
> > +#define SLOTN(slot)=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0 (_AT(vaddr_t, slot) <<
> > SLOTN_ENTRY_BITS)
> > +#define SLOTN_ENTRY_SIZE=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 SLO=
TN(1)
>=20
> Do you have any example of how/where this going to be used?
Yes, it will be used to define DIRECTMAP_SIZE:
#define DIRECTMAP_SIZE          (SLOTN_ENTRY_SIZE * (509-200))
>=20
> > +#define XEN_VIRT_START 0xFFFFFFFFC0000000 /* (_AC(-1, UL) + 1 -
> > GB(1)) */
>=20
> Won't /* -GB(1) */ do, thus allowing the line to also be padded such
> that
> it matches neighboring ones in layout?
Could you please clarify what do you mean by padded here? The intention
was to show that 1 GB is used for Xen, FDT and fixmap.

~ Oleksii
>=20
> > +#define FRAMETABLE_VIRT_START=C2=A0=C2=A0 SLOTN(196)
> > +#define FRAMETABLE_SIZE=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0 GB(3)
> > +#define FRAMETABLE_NR=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0 (FRAMETABLE_SIZE /
> > sizeof(*frame_table))
> > +#define FRAMETABLE_VIRT_END=C2=A0=C2=A0=C2=A0=C2=A0 (FRAMETABLE_VIRT_S=
TART +
> > FRAMETABLE_SIZE - 1)
> > +
> > +#define VMAP_VIRT_START=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0 SLOTN(194)
> > +#define VMAP_VIRT_SIZE=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0 GB(1)
> > [...]
>=20



From xen-devel-bounces@lists.xenproject.org Tue Jan 23 16:53:04 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 23 Jan 2024 16:53:04 +0000
Received: from list by lists.xenproject.org with outflank-mailman.670539.1043398 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSK1H-0007aj-86; Tue, 23 Jan 2024 16:53:03 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 670539.1043398; Tue, 23 Jan 2024 16:53:03 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSK1H-0007ac-5P; Tue, 23 Jan 2024 16:53:03 +0000
Received: by outflank-mailman (input) for mailman id 670539;
 Tue, 23 Jan 2024 16:53:02 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=OrDF=JB=gmail.com=oleksii.kurochko@srs-se1.protection.inumbo.net>)
 id 1rSK1F-0007aS-Vz
 for xen-devel@lists.xenproject.org; Tue, 23 Jan 2024 16:53:01 +0000
Received: from mail-lf1-x12c.google.com (mail-lf1-x12c.google.com
 [2a00:1450:4864:20::12c])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id dda116bb-ba0f-11ee-9b0f-b553b5be7939;
 Tue, 23 Jan 2024 17:53:00 +0100 (CET)
Received: by mail-lf1-x12c.google.com with SMTP id
 2adb3069b0e04-51008c86ecbso929879e87.2
 for <xen-devel@lists.xenproject.org>; Tue, 23 Jan 2024 08:53:00 -0800 (PST)
Received: from [192.168.206.239] ([94.75.70.14])
 by smtp.gmail.com with ESMTPSA id
 y10-20020a19914a000000b005100a7825c0sm165231lfj.282.2024.01.23.08.52.57
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 23 Jan 2024 08:52:59 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: dda116bb-ba0f-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1706028779; x=1706633579; darn=lists.xenproject.org;
        h=mime-version:user-agent:content-transfer-encoding:references
         :in-reply-to:date:cc:to:from:subject:message-id:from:to:cc:subject
         :date:message-id:reply-to;
        bh=JpaWbflKtuaDwVgf0RRLiZyZGPhzb0D77kXQO97iFos=;
        b=iKCegx9fHVG019Lx2kd2wOlssMqx9yBh6nJv+laAPYPy25tEDCvSaDNOHyjtfZxPAZ
         W8xiYF1bHv1fUriTMRq5TBx9jEZaPF561t6i93kcsV2WQF6FboQeNtWm27YoBN0zHqCh
         yGsa+fzfwn0REzNDCf2jqrf7x2w4ESl/aanecyYR3B2tHM8pmuZLQvFucnwP53RisZx3
         axATNTvH0NGquI7h9xZ3zSQFcUVlZH5sTDrgOswB12xXT2Lv0lvIOxpby6Ps/YrEdOmq
         jgw5gXZjf94tMUrLrb30T5uwIVzR3IQDOqnStttCtFcrzQvVuFpMcHq/AAbWZztOhKVk
         TPsA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706028779; x=1706633579;
        h=mime-version:user-agent:content-transfer-encoding:references
         :in-reply-to:date:cc:to:from:subject:message-id:x-gm-message-state
         :from:to:cc:subject:date:message-id:reply-to;
        bh=JpaWbflKtuaDwVgf0RRLiZyZGPhzb0D77kXQO97iFos=;
        b=d/h8HEhv/dssB7aWFLUv8EzLGd9SfpK+HIEoOew1OUmfuZ08FBlUs2ncTjyIaJuLmc
         bqHEa97C3wEwDpuveNoKSgo6bsF/zD2oX/opuJbSo4Pw5ubBzZp5c2Zhbqhpwa/XCJDO
         RdI54RSeIM+Jpx2CgKnR05psMY6GjTueZ/i1b0RMinQsocvG9vf3qiD1U4Ia1QV7MVrG
         84dn4FvGHmI0/RHjwtF5hfHXyTri6hw3RaIz37iLJSkEbc5D6c29aTJwNEU3E6xttwZ/
         RZXP2rc1N1O+fXPIpoLXZ+qD0XMoVClGeVRlkT1wAMbx/3Qfv0+kTXBJwC7/dMQDJL/p
         8LJA==
X-Gm-Message-State: AOJu0Yy6GFQNsrsMPkQ8Bj3kLyQQP0aMhlp9XfuI/Nko/t/y/p/IegTw
	O5ehRJg6JeEOC0jSjdI5K4Re4/FyUL4EXgqtbKTl8zBxNLHJ44mK
X-Google-Smtp-Source: AGHT+IGTK9HmrHiSpg9vu/6ZROozZ9nuL7cHbYEcd+UCIImmOt/qjRwU4Bcy4bCeqTFaxWETZf4cEg==
X-Received: by 2002:a05:6512:3b8f:b0:50e:74e1:144a with SMTP id g15-20020a0565123b8f00b0050e74e1144amr3375061lfv.15.1706028779385;
        Tue, 23 Jan 2024 08:52:59 -0800 (PST)
Message-ID: <d666a7ee74b7f7a8ccafa59f1ff5b6ea78c12833.camel@gmail.com>
Subject: Re: [PATCH v3 28/34] xen/riscv: add required things to current.h
From: Oleksii <oleksii.kurochko@gmail.com>
To: Jan Beulich <jbeulich@suse.com>
Cc: Alistair Francis <alistair.francis@wdc.com>, Bob Eshleman
 <bobbyeshleman@gmail.com>, Connor Davis <connojdavis@gmail.com>, Andrew
 Cooper <andrew.cooper3@citrix.com>, George Dunlap
 <george.dunlap@citrix.com>,  Julien Grall <julien@xen.org>, Stefano
 Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>, 
 xen-devel@lists.xenproject.org
Date: Tue, 23 Jan 2024 18:52:42 +0200
In-Reply-To: <61450f5d-a723-4126-8e00-6e7155547e99@suse.com>
References: <cover.1703255175.git.oleksii.kurochko@gmail.com>
	 <8fd8d3652eafabf5f5586de91d97ecae077b90ea.1703255175.git.oleksii.kurochko@gmail.com>
	 <61450f5d-a723-4126-8e00-6e7155547e99@suse.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
User-Agent: Evolution 3.50.2 (3.50.2-1.fc39) 
MIME-Version: 1.0

On Tue, 2024-01-23 at 12:35 +0100, Jan Beulich wrote:
> On 22.12.2023 16:13, Oleksii Kurochko wrote:> ---
> a/xen/arch/riscv/include/asm/current.h
> > +++ b/xen/arch/riscv/include/asm/current.h
> > @@ -3,6 +3,21 @@
> > =C2=A0#ifndef __ASM_CURRENT_H
> > =C2=A0#define __ASM_CURRENT_H
> > =C2=A0
> > +#include <xen/bug.h>
> > +#include <xen/percpu.h>
> > +#include <asm/processor.h>
> > +
> > +#ifndef __ASSEMBLY__
> > +
> > +/* Which VCPU is "current" on this PCPU. */
> > +DECLARE_PER_CPU(struct vcpu *, curr_vcpu);
> > +
> > +#define current=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0 this_cpu(curr_vcpu)
> > +#define set_current(vcpu)=C2=A0 do { current =3D (vcpu); } while (0)
> > +#define get_cpu_current(cpu)=C2=A0 per_cpu(curr_vcpu, cpu)
> > +
> > +#define guest_cpu_user_regs() ({ BUG(); NULL; })
>=20
> Again with this changed to the "canonical" placeholder:
> Acked-by: Jan Beulich <jbeulich@suse.com>
Thanks. I'll updarte BUG() part.

~ Oleksii


From xen-devel-bounces@lists.xenproject.org Tue Jan 23 16:54:36 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 23 Jan 2024 16:54:36 +0000
Received: from list by lists.xenproject.org with outflank-mailman.670543.1043409 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSK2l-0008BO-Iu; Tue, 23 Jan 2024 16:54:35 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 670543.1043409; Tue, 23 Jan 2024 16:54:35 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSK2l-0008BH-FQ; Tue, 23 Jan 2024 16:54:35 +0000
Received: by outflank-mailman (input) for mailman id 670543;
 Tue, 23 Jan 2024 16:54:34 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=OrDF=JB=gmail.com=oleksii.kurochko@srs-se1.protection.inumbo.net>)
 id 1rSK2k-0008BB-4m
 for xen-devel@lists.xenproject.org; Tue, 23 Jan 2024 16:54:34 +0000
Received: from mail-ed1-x533.google.com (mail-ed1-x533.google.com
 [2a00:1450:4864:20::533])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 15032c54-ba10-11ee-98f4-6d05b1d4d9a1;
 Tue, 23 Jan 2024 17:54:33 +0100 (CET)
Received: by mail-ed1-x533.google.com with SMTP id
 4fb4d7f45d1cf-55a44bb66d3so5146614a12.1
 for <xen-devel@lists.xenproject.org>; Tue, 23 Jan 2024 08:54:33 -0800 (PST)
Received: from [192.168.206.239] ([94.75.70.14])
 by smtp.gmail.com with ESMTPSA id
 v9-20020a170906380900b00a26ac037ff3sm14566974ejc.132.2024.01.23.08.54.15
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 23 Jan 2024 08:54:32 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 15032c54-ba10-11ee-98f4-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1706028872; x=1706633672; darn=lists.xenproject.org;
        h=mime-version:user-agent:content-transfer-encoding:references
         :in-reply-to:date:cc:to:from:subject:message-id:from:to:cc:subject
         :date:message-id:reply-to;
        bh=3yBPwjjf3tOsodoSZNCQO0JkgQh8fcuZFMGoslrropY=;
        b=FBiHUHdymYa/I1oYXUDBvAuN84uc1tYnI7gh47hOenKss4fa8YddK4yj1BYgKYYVxN
         dPJv7lImWdplOmIKUsVPXGVDV76pmRvm4jp33SVsBoHFoECC8dNvNGjOAEOsR5vMIzr1
         9qqaOpJGxyXP82SvikJ0CTZ1ZdP23COhAQicfe3ztf0TdQh1uqJ324onWkNK9iwIz2qf
         TAMltmpapBQSyC+Ot1Eh8tCGJ1cF9RPJBqTAfDq+kqKH8gicPNMPHbh2GuxLMRUmX6xG
         sUN7X0CGfPYrt9KATvFmPYJLBfg1XlGzaE3cVOLyUJXLHweMl1zHqkPqu4a/lbIdl/Tb
         n4Vg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706028872; x=1706633672;
        h=mime-version:user-agent:content-transfer-encoding:references
         :in-reply-to:date:cc:to:from:subject:message-id:x-gm-message-state
         :from:to:cc:subject:date:message-id:reply-to;
        bh=3yBPwjjf3tOsodoSZNCQO0JkgQh8fcuZFMGoslrropY=;
        b=PBpn+F8VS/aQNYAv8jsvvf+J/OFOeFI8v1Ah7yb7cr5MdNrNgAMZXOV4sBx4bTUcS6
         bu4EwFp1YxJoejGDckyBKuLnZ8EKTRBp+rAjIr9btC1edniCBf3xDl8qzVqzwASrkPB3
         1FRZ7WjGk8utRKAjiYsj51WyQBa8S1cuIa8b0H45MKg4EyjHVb53tlqvWOcVfoty4ffA
         GLb6EUguHWpFjjWh/KT6qKNUdj6y5uc23l+5ZRaniG4429z3pjkMM4Fzo323MLXFgPpJ
         EqW6SUre/KdPTGQVw1lsgpgoDYTCsID9BWDuhfcpxXa+WW1C6v3ncUd4yrRvNxKuRj9e
         xYzg==
X-Gm-Message-State: AOJu0YwwNvMgvaucpzk27xG9RBbnpriQv1DI/990fC/hK1j0vl3GKwaY
	4oZn8LX14B4H+wHJOu7uDWLzzDvAC3ovmTba7An8eOMkLERJ1YWkOnthe5ESn4I=
X-Google-Smtp-Source: AGHT+IFqWLFxBywy5Tu8MKwIDTucD1dcC3aIyvzUdgMFV0lWlQZKPc0K6qfD0FpJxU9MgtBtnY8Uhg==
X-Received: by 2002:a17:907:9054:b0:a2d:7bb:8810 with SMTP id az20-20020a170907905400b00a2d07bb8810mr63597ejc.155.1706028872581;
        Tue, 23 Jan 2024 08:54:32 -0800 (PST)
Message-ID: <c7004f13d082535cebd50fbe0e2446e3af78e48d.camel@gmail.com>
Subject: Re: [PATCH v3 29/34] xen/riscv: add minimal stuff to page.h to
 build full Xen
From: Oleksii <oleksii.kurochko@gmail.com>
To: Jan Beulich <jbeulich@suse.com>
Cc: Alistair Francis <alistair.francis@wdc.com>, Bob Eshleman
 <bobbyeshleman@gmail.com>, Connor Davis <connojdavis@gmail.com>, Andrew
 Cooper <andrew.cooper3@citrix.com>, George Dunlap
 <george.dunlap@citrix.com>,  Julien Grall <julien@xen.org>, Stefano
 Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>, 
 xen-devel@lists.xenproject.org
Date: Tue, 23 Jan 2024 18:54:06 +0200
In-Reply-To: <0740cab9-be2e-4aae-8b03-e3ec95d0b0ef@suse.com>
References: <cover.1703255175.git.oleksii.kurochko@gmail.com>
	 <7aa26bdad9bf923fd57f7a90e41c049cab0cd5bd.1703255175.git.oleksii.kurochko@gmail.com>
	 <0740cab9-be2e-4aae-8b03-e3ec95d0b0ef@suse.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
User-Agent: Evolution 3.50.2 (3.50.2-1.fc39) 
MIME-Version: 1.0

On Tue, 2024-01-23 at 12:36 +0100, Jan Beulich wrote:
> On 22.12.2023 16:13, Oleksii Kurochko wrote:
> > Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>
> > Acked-by: Jan Beulich <jbeulich@suse.com>
> > ---
> > Changes in V3:
> > =C2=A0- update the commit message
>=20
> Once again I find this puzzling, considering there's no commit
> message
> at all.
By the I meant that asm/page.h was changed to page.h

~ Oleksii


From xen-devel-bounces@lists.xenproject.org Tue Jan 23 16:58:27 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 23 Jan 2024 16:58:27 +0000
Received: from list by lists.xenproject.org with outflank-mailman.670551.1043418 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSK6S-0000R3-2A; Tue, 23 Jan 2024 16:58:24 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 670551.1043418; Tue, 23 Jan 2024 16:58:24 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSK6R-0000Qw-Vl; Tue, 23 Jan 2024 16:58:23 +0000
Received: by outflank-mailman (input) for mailman id 670551;
 Tue, 23 Jan 2024 16:58:22 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=IiK9=JB=invisiblethingslab.com=demi@srs-se1.protection.inumbo.net>)
 id 1rSK6P-0000PS-IP
 for xen-devel@lists.xenproject.org; Tue, 23 Jan 2024 16:58:22 +0000
Received: from wfout2-smtp.messagingengine.com
 (wfout2-smtp.messagingengine.com [64.147.123.145])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 994ae95e-ba10-11ee-9b0f-b553b5be7939;
 Tue, 23 Jan 2024 17:58:18 +0100 (CET)
Received: from compute6.internal (compute6.nyi.internal [10.202.2.47])
 by mailfout.west.internal (Postfix) with ESMTP id 2B9D61C0006E;
 Tue, 23 Jan 2024 11:58:13 -0500 (EST)
Received: from mailfrontend2 ([10.202.2.163])
 by compute6.internal (MEProxy); Tue, 23 Jan 2024 11:58:13 -0500
Received: by mail.messagingengine.com (Postfix) with ESMTPA; Tue,
 23 Jan 2024 11:58:12 -0500 (EST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 994ae95e-ba10-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=
	invisiblethingslab.com; h=cc:cc:content-type:content-type:date
	:date:from:from:in-reply-to:in-reply-to:message-id:mime-version
	:references:reply-to:subject:subject:to:to; s=fm3; t=1706029092;
	 x=1706115492; bh=+Cb07fSHIP/nAV4h9p9hfVaNyIElPq3pGvjzWSI9rLA=; b=
	F2Xv9OwCocia3TEgrjkG0KBBPT9bMkfVAt9DqDtvnvl1vllhZEU/bMPGmQW9aZuZ
	Q3dU5b1fSNiR5x1gLVWCT9G7plUWxTBxLVixYRDpP4i54iz0vnwJjg7946pVla82
	cgxS0TVfp8+PMnGyWEZjVqtuCWkPK7AZoIqYC/ySJ5KvI/0OrR/h8WASmHW9j9+p
	Srl5xZnOoF9O9qgwVVnq9tPgIK6CTHvYsUDGbl9SXFHtJ7LyUbRcJDcFd1LS2+MG
	EXLApnHqwVzGnM5IHGbGzW3XhsqnCvM8FrJIxfFOkoBL7n4BAnM9syczlwn//ffM
	l4DWYMokZTCzxUX0H6PGRg==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=
	messagingengine.com; h=cc:cc:content-type:content-type:date:date
	:feedback-id:feedback-id:from:from:in-reply-to:in-reply-to
	:message-id:mime-version:references:reply-to:subject:subject:to
	:to:x-me-proxy:x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s=
	fm3; t=1706029092; x=1706115492; bh=+Cb07fSHIP/nAV4h9p9hfVaNyIEl
	Pq3pGvjzWSI9rLA=; b=nG64xXRNdfA4cLBQTyBB4HcFZy9q8ImQPGdGZgeN8YJy
	sd2jKI9a2TZxzNR0bMIKjoF7zs20w0CwqCpVmvRkY4yORIlUTsT2/I/swqguVxu3
	M+HFcxzUWgkH2o+gKT9gij79bZTBadg0hmMluDsJ44C2Qi9zs/+ehASTmpX+R27k
	fE/rhw/OyxkLIKB3YCdcYJ+caKFtTWINiSqEmKz34/nUmoulIb9C23t+uewvu170
	PmNIGOjlAvjzW40xWtKPQj5AqSxlRYmhDlScMzU7YVGWyW8AUcTaupI/IjIJlNXl
	383sKGcZS9J9JBycu2WhHG5VuNKNXwNonQHXQ9ghlA==
X-ME-Sender: <xms:JPCvZWp11tSPhECy4BAfVhlbtxvNbssQwtjulWveNFz0eMSRSbE1yA>
    <xme:JPCvZUpWe751qSVqT9a3TWys8vH_KEobQqeYx7caGbDPz5EATKTQO40MbCVR-Mfzl
    iH3SNm0r_ZzvQY>
X-ME-Received: <xmr:JPCvZbORopm8FmwC3HriNDhkKiBC-m8h7WASUQy13ln6bmUd9dvec2XXDA5wP5m-mXhfCgBS_z68511UpNKujyavLyO2Iw5yVqV43rOfk24zJNsL>
X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvkedrvdekkedgleefucetufdoteggodetrfdotf
    fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen
    uceurghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmne
    cujfgurhepfffhvfevuffkfhggtggujgesghdtreertddtjeenucfhrhhomhepffgvmhhi
    ucforghrihgvucfqsggvnhhouhhruceouggvmhhisehinhhvihhsihgslhgvthhhihhngh
    hslhgrsgdrtghomheqnecuggftrfgrthhtvghrnhepvdejteegkefhteduhffgteffgeff
    gfduvdfghfffieefieekkedtheegteehffelnecuvehluhhsthgvrhfuihiivgeptdenuc
    frrghrrghmpehmrghilhhfrhhomhepuggvmhhisehinhhvihhsihgslhgvthhhihhnghhs
    lhgrsgdrtghomh
X-ME-Proxy: <xmx:JPCvZV5HBknVLvGerN44FdVJ6fXLE0yPfiOTlQ2BG02iAIoWtzQ9Ag>
    <xmx:JPCvZV6btkamfu9tWqVBUnmqffgZwCKJVodv03G-uOkZvp2TnNilGg>
    <xmx:JPCvZVg35WrEqeRRBaN-ZdEG7BQYw-_6mMmqQcXTYKW5lRWy3Cm8Ag>
    <xmx:JPCvZfkvTLJKs2s7kZZglT6PzbSWTZKdGtdUwaRmIbeAdsKaunQvD0_tk-Y>
Feedback-ID: iac594737:Fastmail
Date: Tue, 23 Jan 2024 11:58:07 -0500
From: Demi Marie Obenour <demi@invisiblethingslab.com>
To: George Dunlap <george.dunlap@cloud.com>
Cc: Xen-devel <xen-devel@lists.xenproject.org>,
	Juergen Gross <jgross@suse.com>,
	Marek =?utf-8?Q?Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
Subject: Re: Sketch of an idea for handling the "mixed workload" problem
Message-ID: <Za_wImJMW0UuNJue@itl-email>
References: <CA+zSX=Z904nF0yD1grRZc1miEOhdTHqAd4j-S1j8GY+1bo9COw@mail.gmail.com>
 <Za23cKyEOl1WTvhZ@itl-email>
 <CA+zSX=YNjVaGn8=kio=2iT8onHAP61pzP-dicMrr4pKJQ827gw@mail.gmail.com>
MIME-Version: 1.0
Content-Type: multipart/signed; micalg=pgp-sha512;
	protocol="application/pgp-signature"; boundary="Hvgit4ad6LeOOsQH"
Content-Disposition: inline
In-Reply-To: <CA+zSX=YNjVaGn8=kio=2iT8onHAP61pzP-dicMrr4pKJQ827gw@mail.gmail.com>


--Hvgit4ad6LeOOsQH
Content-Type: text/plain; protected-headers=v1; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable
Date: Tue, 23 Jan 2024 11:58:07 -0500
From: Demi Marie Obenour <demi@invisiblethingslab.com>
To: George Dunlap <george.dunlap@cloud.com>
Cc: Xen-devel <xen-devel@lists.xenproject.org>,
	Juergen Gross <jgross@suse.com>,
	Marek =?utf-8?Q?Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
Subject: Re: Sketch of an idea for handling the "mixed workload" problem

On Mon, Jan 22, 2024 at 11:54:14AM +0000, George Dunlap wrote:
> On Mon, Jan 22, 2024 at 12:31=E2=80=AFAM Demi Marie Obenour
> <demi@invisiblethingslab.com> wrote:
> >
> > On Fri, Sep 29, 2023 at 05:42:16PM +0100, George Dunlap wrote:
> > > The basic credit2 algorithm goes something like this:
> > >
> > > 1. All vcpus start with the same number of credits; about 10ms worth
> > > if everyone has the same weight
> > >
> > > 2. vcpus burn credits as they consume cpu, based on the relative
> > > weights: higher weights burn slower, lower weights burn faster
> > >
> > > 3. At any given point in time, the runnable vcpu with the highest
> > > credit is allowed to run
> > >
> > > 4. When the "next runnable vcpu" on a runqueue is negative, credit is
> > > reset: everyone gets another 10ms, and can carry over at most 2ms of
> > > credit over the reset.
> > >
> > > Generally speaking, vcpus that use less than their quota and have lots
> > > of interrupts are scheduled immediately, since when they wake up they
> > > always have more credit than the vcpus who are burning through their
> > > slices.
> > >
> > > But what about a situation as described recently on Matrix, where a VM
> > > uses a non-negligible amount of cpu doing un-accelerated encryption
> > > and decryption, which can be delayed by a few MS, as well as handling
> > > audio events?  How can we make sure that:
> > >
> > > 1. We can run whenever interrupts happen
> > > 2. We get no more than our fair share of the cpu?
> > >
> > > The counter-intuitive key here is that in order to achieve the above,
> > > you need to *deschedule or preempt early*, so that when the interrupt
> > > comes, you have spare credit to run the interrupt handler.  How do we
> > > manage that?
> > >
> > > The idea I'm working out comes from a phrase I used in the Matrix
> > > discussion, about a vcpu that "foolishly burned all its credits".
> > > Naturally the thing you want to do to have credits available is to
> > > save them up.
> > >
> > > So the idea would be this.  Each vcpu would have a "boost credit
> > > ratio" and a "default boost interval"; there would be sensible
> > > defaults based on typical workloads, but these could be tweaked for
> > > individual VMs.
> > >
> > > When credit is assigned, all VMs would get the same amount of credit,
> > > but divided into two "buckets", according to the boost credit ratio.
> > >
> > > Under certain conditions, a vcpu would be considered "boosted"; this
> > > state would last either until the default boost interval, or until
> > > some other event (such as a de-boost yield).
> > >
> > > The queue would be sorted thus:
> > >
> > > * Boosted vcpus, by boost credit available
> > > * Non-boosted vcpus, by non-boost credit available
> > >
> > > Getting more boost credit means having lower priority when not
> > > boosted; and burning through your boost credit means not being
> > > scheduled when you need to be.
> > >
> > > Other ways we could consider putting a vcpu into a boosted state (some
> > > discussed on Matrix or emails linked from Matrix):
> > > * Xen is about to preempt, but finds that the vcpu interrupts are
> > > blocked (this sort of overlaps with the "when we deliver an interrupt"
> > > one)
> > > * Xen is about to preempt, but finds that the (currently out-of-tree)
> > > "dont_desched" bit has been set in the shared memory area
> >
> > I think both of these would be good.  Another one would be when Xen is
> > about to deliver an interrupt to a guest, provided that there is no
> > storm of interrupts.  I=E2=80=99ve seen a USB webcam cause a system-wid=
e latency
> > spike through what I presume is an interrupt storm, and I suspect that
> > others have observed similar behavior with USB external drives.
>=20
> How would you determine that a given interrupt was part of a "storm",
> and what would you do differently as a result of determining that?

I=E2=80=99m not sure.  One heuristic might be that if a device assigned to =
a VM
is interrupting Xen too many times while Xen is running other VMs,
interrupts from that device are blocked as needed to ensure other VMs
get to execute.  Theoretically, an interrupt from a USB storage device
should be safe to block until Xen is no longer running boosted
workloads, but an interrupt from a USB microphone or speaker is not.

> > > Other ways to consider de-boosting:
> > > * There's a way to trigger a VMEXIT when interrupts have been
> > > re-enabled; setting this up when the VM is in the boost state
> >
> > That=E2=80=99s a good idea, but should be conditional on =E2=80=9Cdont_=
desched=E2=80=9D _not_
> > being set.  This handles the case where the guest is running a realtime
> > thread.
>=20
> In which case we need some way for the "enlightened" guest to know how
> to de-boost itself; a yield might do.

That would be sufficient.

> > Generally, I=E2=80=99d like to see something like this:
> >
> > - A vCPU with sufficient boost credit is boosted by Xen under the
> >   following conditions:
> >
> >   1. Xen interrupts the guest.
>=20
> I take it you mean, "delivers an interrupt to the guest"?

Yes.

> >   2. Xen is about to preempt, but detects that =E2=80=9Cdont_desched=E2=
=80=9D is set.
> >   3. Xen is about to preempt, but detects that interrupts are disabled.
> >
> > - A vCPU is deboosted if:
> >
> >   1. It runs out of boost credit, even if =E2=80=9Cdont_desched=E2=80=
=9D is set.
> >   2. An interrupt handler returns, but only if =E2=80=9Cdont_desched=E2=
=80=9D is not set.
> >   3. Interrupts are re-enabled, but only if =E2=80=9Cdont_desched=E2=80=
=9D is not set.
> >
> >   The first case is an abnormal condition and typically means that
> >   either the system is overloaded or a vCPU is running boosted for too
> >   long.  To help debug this situation, Xen will log a warning and
> >   increment both a system-wide and a per-domain counter.  dom0 can
> >   retrieve counters for any domain, and a domain can read its own
> >   counter.
> >
> > - When to set =E2=80=9Cdont_desched=E2=80=9D is entirely up to the gues=
t kernel, but
> >   there are some general rules guests should follow:
> >
> >   - Only set =E2=80=9Cdont_desched=E2=80=9D if there is a good reason, =
and unset it as
> >     soon as possible.  Xen gives vCPUs with =E2=80=9Cdont_desched=E2=80=
=9D set priority
> >     over all other vCPUs on the system, but the amount of time a vCPU is
> >     allowed to run with an elevated priority is limited.  Xen will log a
> >     warning if a guest tries to run with elevated priority for too long.
> >
> >   - Xen boosts vCPUs before delivering an interrupt, but there should be
> >     a way for a vCPU to deboost itself even before returning from the
> >     interrupt handler.
> >
> >   - Guests should always set =E2=80=9Cdont_desched=E2=80=9D when runnin=
g hard-realtime
> >     threads (used for e.g. audio processing), even when the thread is in
> >     userspace.  This ensures that Xen gives the underlying vCPU priority
> >     over vCPUs
> >
> >   - Guests should always set =E2=80=9Cdont_desched=E2=80=9D when holdin=
g a spin lock,
> >     but it is even better to use paravirtualized spin locks (which make
> >     a hypercall into Xen and therefore allow other vCPUs to run).
> >
> >   - Xen does not implement priority inheritance, so guests need to do
> >     that.
> >
> > - Max boost credits can be set by dom0 via a hypercall.
> >
> > The advantage of this approach is that it keeps almost all policy out of
> > Xen.  The only exception is the boosting when an interrupt is received,
> > but a well-behaved guest will deboost itself very quickly (by enabling
> > interrupts) if the boost was not actually needed, so this should have
> > very limited impact.  I think this should be enough for realtime audio,
> > and it is somewhat related to (but hopefully simpler than) the KVM RFC
> > from Google [1].
> >
> > Any thoughts on this?
>=20
> Overall sounds good.  I think a good approach would be to start by
> implementing it without the "dont_desched" flag, and then add that on
> top later.  It sounds like you have a clear vision for what you want,
> so it shouldn't be too hard to write such that adding the
> "dont_desched" doesn't require a lot of pointless refactoring.
>=20
> The other issue I have with this (and essentially where I got stuck
> developing credit2 in the first place) is testing: how do you ensure
> that it has the properties that you expect?  How do you develop a
> "regression test" to make sure that server-based workloads don't have
> issues in this sort of case?

I don=E2=80=99t have any server workloads myself.  Would it be reasonable t=
o ask
those who do have such workloads to develop such a test?  They would be
in a much better position to check for regressions on these workloads,
and have server hardware that they can use to benchmark such workloads.
I just have my laptop and a test laptop, both running Qubes OS.

It=E2=80=99s also possible that some of these changes will improve latency =
at
the expense of throughput.  In that case, I could add a Xen command-line
option (or even a runtime toggle) that controls whether Xen honors the
boost state.  I do expect that the rest of the logic should have very
little overhead in this case.
--=20
Sincerely,
Demi Marie Obenour (she/her/hers)
Invisible Things Lab

--Hvgit4ad6LeOOsQH
Content-Type: application/pgp-signature; name="signature.asc"

-----BEGIN PGP SIGNATURE-----

iQIzBAEBCgAdFiEEdodNnxM2uiJZBxxxsoi1X/+cIsEFAmWv8CIACgkQsoi1X/+c
IsGXKxAAqYxnG+7E+4HnkBQWxTciOX9n1Tpj4mcsXnHhDEqsQSrTh32eMK88YUMv
a+TxwLEW5ibJWSWXwpAJr35s4wm8JSHwJjtCDnmADYJNfXCse3Be1ZT6+cs9VJkw
AcH2Can1Z1SS+/w1uHiRsFo6Wknw9Cla0ZKPdzEguIRSrGVDA84Tmd42AcMCgeM3
iyRkSRlgH+ge0t0MN0SGpTKMocTan/WPjGJrQo/T74K+hfNEFwbexPBxxu23nkvP
I0Jf/B0WA0K60lKxq4SccvPKAgFw1OUJtowHrdeaO0u+WMDPpLdCjIeujkXSSM3W
/5vjGRJ/IR8CGv0mrRDGsfC0bg3qDEEQB4ObMLoxpThdbeFtVdxv6KPN593yoGut
7cJj1Apf4T0lJ8L3CHp/7E4c95iZyTVkTK1uG5seEeiNIC/wzkSjPsbgfJrio2DM
SP1bPlE8degB1a43QTh/1TjM3pHgfUEhtZecAf42a2lVIFJJ4v+WJygs3/OVHL9f
yZprjLitg5/HljmEf4evg2/eP7BAZW0z4qDZMtgypopZXUFshLbk3oJyIgNCgFTu
wjL5OOQ5uWApm5sKWh26nz+DK1VcMXENmJwzcFZLpyyzUuRgqXpBhc6fOM5T97/s
AoWKa0ba3pFvxIKdpaeGNIPLrJIZ3yBbazQ2nnyWowOViKuVNZ8=
=KH1Y
-----END PGP SIGNATURE-----

--Hvgit4ad6LeOOsQH--


From xen-devel-bounces@lists.xenproject.org Tue Jan 23 17:06:34 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 23 Jan 2024 17:06:34 +0000
Received: from list by lists.xenproject.org with outflank-mailman.670557.1043429 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSKE8-0002nN-Qb; Tue, 23 Jan 2024 17:06:20 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 670557.1043429; Tue, 23 Jan 2024 17:06:20 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSKE8-0002nG-NH; Tue, 23 Jan 2024 17:06:20 +0000
Received: by outflank-mailman (input) for mailman id 670557;
 Tue, 23 Jan 2024 17:06:19 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=9pmr=JB=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rSKE7-0002nA-FO
 for xen-devel@lists.xenproject.org; Tue, 23 Jan 2024 17:06:19 +0000
Received: from mail-lj1-x22a.google.com (mail-lj1-x22a.google.com
 [2a00:1450:4864:20::22a])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id b91ebbb0-ba11-11ee-98f4-6d05b1d4d9a1;
 Tue, 23 Jan 2024 18:06:18 +0100 (CET)
Received: by mail-lj1-x22a.google.com with SMTP id
 38308e7fff4ca-2cc9fa5e8e1so49144111fa.3
 for <xen-devel@lists.xenproject.org>; Tue, 23 Jan 2024 09:06:18 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 a6-20020a056638004600b0046e29003e62sm3610148jap.112.2024.01.23.09.05.34
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 23 Jan 2024 09:05:55 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: b91ebbb0-ba11-11ee-98f4-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1706029577; x=1706634377; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=lM6wddXLaKmnMFYBd4JVRJ4sE/tAa2qKs8bjtRnvS2k=;
        b=BXGLdVDKTdSZlJbcV66NPpDRju8gwIuGDdgKclsLQkpIvVmCFVT6vHdEGQVoxLPEkR
         F0JfrYcGslT5NEgAcFQMWgrVthI44wGrir3GhOMJj2DD7iic3Ln0tJgm0vW8k/oE0u+G
         2jVk+4g2C7e2aZmNnVkWPTzG5jncD/7xuF81fQS+ZsP+t+7MgC7L8uMwaSFA0kWtD5bQ
         Y5alWxrL3I26yQ8e3iMD4S2nMMR2Y+8t3bUAOiEvz01E59LJffL9nhphhr9AhP+eieKd
         BwqSg7X109+ocXckoCelgnbHhW85IaWNtkEUf3IXbptIpMZGO+3UIpIHIgNot5NFOsP6
         vwxw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706029577; x=1706634377;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=lM6wddXLaKmnMFYBd4JVRJ4sE/tAa2qKs8bjtRnvS2k=;
        b=NOEuZPWVRAYXSU17Wsi7guf+prw7p3uuxV1AC+5k1sdeTLKQl+MFWFT5oG91NvImJq
         jLyutYDKUdtCAb6ZHdevE1Etp7I7nEoQCzjGv644RQ/L1x55qiWyhl/0SpikX5bH9Q1D
         psrY2PWLgxTm1geuKWB4qxoKB69/KBKZuqMtS1FiY9o44tIQPcve2TAc5/iMcbwnvAdt
         So0vOHl8wDZYUE1ip500z1vQm1v8yTL3cr07MoxGASEoUtjSYBv6fK96s7OEI05oDQfK
         YI4e9f9iqPyvnKNf67GQjIVoP1GaF+KKxHuYAcpCrTLOtTU9cksBaynNJ2pPvnbEcLwU
         EJhA==
X-Gm-Message-State: AOJu0YyzjW3AgA0Su2YXU5oV5lCgr361uZUNfJmZfLJgKV5MCp5Gykoa
	3vlm/6eT/mvisMEGZ/I40mecReahQlVMrXsvkhw+1KKNEbjbmr23ANtr8sIQng==
X-Google-Smtp-Source: AGHT+IEIA42SJFruZWRejPHY2mzX0f5HxqmsdKYHBQJ3ovF1tnHC94k1yz8bpWqKeNy9KdS2fP+blQ==
X-Received: by 2002:a2e:3515:0:b0:2ce:d1d:e97e with SMTP id z21-20020a2e3515000000b002ce0d1de97emr66077ljz.102.1706029577418;
        Tue, 23 Jan 2024 09:06:17 -0800 (PST)
Message-ID: <d04ec806-f0c1-4992-96ef-229f0ebb468a@suse.com>
Date: Tue, 23 Jan 2024 18:05:16 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 34/34] xen/README: add compiler and binutils versions
 for RISC-V64
Content-Language: en-US
To: Oleksii <oleksii.kurochko@gmail.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 George Dunlap <george.dunlap@citrix.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>,
 xen-devel@lists.xenproject.org
References: <cover.1703255175.git.oleksii.kurochko@gmail.com>
 <c4d579f02b431d6ac9366dee73ebd7ab74e44715.1703255175.git.oleksii.kurochko@gmail.com>
 <88a7e5af-197b-41ef-b3c2-7d4f85a3cb85@suse.com>
 <2a08cae2c6db049dc08db59f38c4e75573e37064.camel@gmail.com>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <2a08cae2c6db049dc08db59f38c4e75573e37064.camel@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 23.01.2024 15:49, Oleksii wrote:
> On Tue, 2024-01-23 at 12:22 +0100, Jan Beulich wrote:
>> On 22.12.2023 16:13, Oleksii Kurochko wrote:
>>> Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>
>>> ---
>>>  Changes in V3:
>>>   - new patch
>>> ---
>>>  README | 3 +++
>>>  1 file changed, 3 insertions(+)
>>>
>>> diff --git a/README b/README
>>> index c8a108449e..1015a285c0 100644
>>> --- a/README
>>> +++ b/README
>>> @@ -48,6 +48,9 @@ provided by your OS distributor:
>>>        - For ARM 64-bit:
>>>          - GCC 5.1 or later
>>>          - GNU Binutils 2.24 or later
>>> +      - For RISC-V 64-bit:
>>> +        - GCC 13.2.1 or later
>>> +        - GNU Binutils 2.40 or later
>>
>> That's pretty new. For gcc that's even newer than the newest release.
>> If older versions really won't do, I don't think you can leave this
>> unjustified (by having an empty description). Till now gcc 13.2 has
>> served me well, and iirc 13.1, 12.3, and 12.2 were fine, too.
> It can be 12.2.0 for GCC and 2.39 for GNU Binutils. ( it is toolchain
> which is used by contrainer for RISC-V in Xen ). I'll update versions
> then.
> 
> But could you please explain again why it can't be 13.2.1 ( it is a
> version which I have in my distribution, so it is the reason why I used
> this version in README file ) ?

13.2.1 is a pre-release of 13.3.0. Only versions ending in .0 are upstream
released versions these days. And I think it would be helpful if the
minimum version also was the first in a major-version series, i.e. I'd
generally prefer naming <N>.1.0 (or <N>.1 for simplicity; see Arm's entry).
Of course if no such suitable version exists (because of being buggy), then
specifying another one is okay. As to x.y.1 - nobody will then really know
which version it is, because every distro will ship its own variant.

Jan


From xen-devel-bounces@lists.xenproject.org Tue Jan 23 17:08:07 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 23 Jan 2024 17:08:07 +0000
Received: from list by lists.xenproject.org with outflank-mailman.670562.1043438 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSKFq-0003Os-7w; Tue, 23 Jan 2024 17:08:06 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 670562.1043438; Tue, 23 Jan 2024 17:08:06 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSKFq-0003Ol-4h; Tue, 23 Jan 2024 17:08:06 +0000
Received: by outflank-mailman (input) for mailman id 670562;
 Tue, 23 Jan 2024 17:08:05 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=OrDF=JB=gmail.com=oleksii.kurochko@srs-se1.protection.inumbo.net>)
 id 1rSKFo-0003Of-V7
 for xen-devel@lists.xenproject.org; Tue, 23 Jan 2024 17:08:04 +0000
Received: from mail-lj1-x22b.google.com (mail-lj1-x22b.google.com
 [2a00:1450:4864:20::22b])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id f8802119-ba11-11ee-98f4-6d05b1d4d9a1;
 Tue, 23 Jan 2024 18:08:04 +0100 (CET)
Received: by mail-lj1-x22b.google.com with SMTP id
 38308e7fff4ca-2cf0e9f76b4so12076001fa.1
 for <xen-devel@lists.xenproject.org>; Tue, 23 Jan 2024 09:08:04 -0800 (PST)
Received: from [192.168.206.239] ([94.75.70.14])
 by smtp.gmail.com with ESMTPSA id
 r9-20020a056512102900b0050ecc0a943bsm2366046lfr.129.2024.01.23.09.08.02
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 23 Jan 2024 09:08:03 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: f8802119-ba11-11ee-98f4-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1706029684; x=1706634484; darn=lists.xenproject.org;
        h=mime-version:user-agent:content-transfer-encoding:references
         :in-reply-to:date:cc:to:from:subject:message-id:from:to:cc:subject
         :date:message-id:reply-to;
        bh=sk4PfIM452cg2zCEPsY8/ioEgB4N/hJnhE6ESMbtVFc=;
        b=Pvd7y712EuT+45cpQoFKbfs/Tbh9z87VY42HQ8WStqPx5Fuvps2uy7wZErI069ZzWW
         gDQ4SpJ37oUVMxWvDiwmjYP0nZA/acqRsUhYJvLcdsapfCld24ygI/eo6EmVmx+Nz9qB
         EX4KtS/HJiw0DDSwU4cZCs4DbhNtQ1sqDwDaM/HG2l2pAePpcEhBsTMZVVlN0I1z2noP
         hOhG+ELMKQZJ3/jxqvaOV+/BtT5kpoC3WBzZcA+So1PYcj+m+kShS3N3ITDMQqhKPaPZ
         LdUq3R88d+1WUAzxgn8pdL9k0viqmjvClEmr8rTUf9Quj5iEEArS3mx+MdyrlfBTJ+MX
         PM6Q==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706029684; x=1706634484;
        h=mime-version:user-agent:content-transfer-encoding:references
         :in-reply-to:date:cc:to:from:subject:message-id:x-gm-message-state
         :from:to:cc:subject:date:message-id:reply-to;
        bh=sk4PfIM452cg2zCEPsY8/ioEgB4N/hJnhE6ESMbtVFc=;
        b=SKI76g1rs1apUrjNM5QCuWJMZnGER23GPr/4nKX+bHW96f1sVIxB7T2Qm+PdELW1Db
         EUSCgUEXhLRlbLuRvp3Au5ZDPACNjpWmdDDMDlTlFnjdWyF5f2m2QILapaK3uOYiyvi3
         jzlVSB+MV8nlxUQQhpSOXtH1N2ak7tNGjQScRAU4aU78f5rINRsd+HFAOAQjn4irMZmX
         MvFuNtT1TxnFe6NvTV0wzu1rvetTBA06azXBJVXmOnp5ADBv5YorE6Q9mQ/Sg0Fd1Bb6
         2lOnv7A7s4iUrl/vsKf7DgOsjq3B0ap9YT0lSFP5ftfaDNMEx+N0rCS6DIOp62EAZHhk
         Cn2A==
X-Gm-Message-State: AOJu0YzpmWx91GcAj4vBrOpv41wRBZ6Tfz6C0cAXWT6Nylt7zcTmXBDr
	Hn5n8tXsuNH13rKsa0UG/7B9lqjr5QPJ3+88O707TJ3MLXnqcBwM
X-Google-Smtp-Source: AGHT+IFw7fQdeWOqICOgRSpu+HUm93pX+9/Ri0QybMgNE3QPW6t5yK9RDPn4OA4svALr4hz5T+ge9w==
X-Received: by 2002:ac2:548c:0:b0:510:d5f:1bce with SMTP id t12-20020ac2548c000000b005100d5f1bcemr68036lfk.240.1706029683681;
        Tue, 23 Jan 2024 09:08:03 -0800 (PST)
Message-ID: <5f8291916b01a2b29a16bd1345fc20e3d4f29cab.camel@gmail.com>
Subject: Re: [PATCH v3 30/34] xen/riscv: add minimal stuff to processor.h to
 build full Xen
From: Oleksii <oleksii.kurochko@gmail.com>
To: Jan Beulich <jbeulich@suse.com>
Cc: Alistair Francis <alistair.francis@wdc.com>, Bob Eshleman
 <bobbyeshleman@gmail.com>, Connor Davis <connojdavis@gmail.com>, Andrew
 Cooper <andrew.cooper3@citrix.com>, George Dunlap
 <george.dunlap@citrix.com>,  Julien Grall <julien@xen.org>, Stefano
 Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>, 
 xen-devel@lists.xenproject.org
Date: Tue, 23 Jan 2024 19:08:02 +0200
In-Reply-To: <aa4d18c5-a8e0-44a6-ae7e-16fd9cd029b4@suse.com>
References: <cover.1703255175.git.oleksii.kurochko@gmail.com>
	 <5bd7c5db6638f09dabdc13a6e12f0b204eacb234.1703255175.git.oleksii.kurochko@gmail.com>
	 <aa4d18c5-a8e0-44a6-ae7e-16fd9cd029b4@suse.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
User-Agent: Evolution 3.50.2 (3.50.2-1.fc39) 
MIME-Version: 1.0

On Tue, 2024-01-23 at 12:39 +0100, Jan Beulich wrote:
> On 22.12.2023 16:13, Oleksii Kurochko wrote:
> > Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>
> > ---
> > Changes in V3:
> > =C2=A0- Update the commit message
>=20
> ??? (again)
The same as with previous. asm/processor.h was changed to processor.h

>=20
> > @@ -53,6 +56,18 @@ struct cpu_user_regs
> > =C2=A0=C2=A0=C2=A0=C2=A0 unsigned long pregs;
> > =C2=A0};
> > =C2=A0
> > +/* TODO: need to implement */
> > +#define cpu_to_core(cpu)=C2=A0=C2=A0 (0)
> > +#define cpu_to_socket(cpu) (0)
> > +
> > +static inline void cpu_relax(void)
> > +{
> > +=C2=A0=C2=A0=C2=A0 /* Encoding of the pause instruction */
> > +=C2=A0=C2=A0=C2=A0 __asm__ __volatile__ ( ".insn 0x100000F" );
>=20
> binutils 2.40 knows "pause" - why use .insn then?
I thought that for this instruction it is needed to have extension
ZIHINTPAUSE ( according to Linux Kernel source code [1] ) and to cover
older version.
But looking at [2] and considering that I announced that we expected
binutils >=3D 2.40 ( or 2.39 as I mentioned as an reply to patch to
README file ) it can be used pause instruction.

>=20
> > +=C2=A0=C2=A0=C2=A0 barrier();
>=20
> Why?
Just to be aligned with Linux kernel implemetation from where this
function was taken.

~ Oleksii

[1]
https://elixir.bootlin.com/linux/latest/source/arch/riscv/include/asm/vdso/=
processor.h#L9

[2]https://elixir.bootlin.com/linux/latest/source/arch/riscv/Kconfig#L582


From xen-devel-bounces@lists.xenproject.org Tue Jan 23 17:27:59 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 23 Jan 2024 17:27:59 +0000
Received: from list by lists.xenproject.org with outflank-mailman.670570.1043449 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSKYp-0007uY-PS; Tue, 23 Jan 2024 17:27:43 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 670570.1043449; Tue, 23 Jan 2024 17:27:43 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSKYp-0007uR-Mu; Tue, 23 Jan 2024 17:27:43 +0000
Received: by outflank-mailman (input) for mailman id 670570;
 Tue, 23 Jan 2024 17:27:42 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=OrDF=JB=gmail.com=oleksii.kurochko@srs-se1.protection.inumbo.net>)
 id 1rSKYo-0007uL-Gg
 for xen-devel@lists.xenproject.org; Tue, 23 Jan 2024 17:27:42 +0000
Received: from mail-lf1-x130.google.com (mail-lf1-x130.google.com
 [2a00:1450:4864:20::130])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id b5e39de2-ba14-11ee-98f4-6d05b1d4d9a1;
 Tue, 23 Jan 2024 18:27:41 +0100 (CET)
Received: by mail-lf1-x130.google.com with SMTP id
 2adb3069b0e04-50e7abe4be4so6223113e87.2
 for <xen-devel@lists.xenproject.org>; Tue, 23 Jan 2024 09:27:41 -0800 (PST)
Received: from [192.168.206.239] ([94.75.70.14])
 by smtp.gmail.com with ESMTPSA id
 fc21-20020a056512139500b0050eba4e0eadsm2331213lfb.90.2024.01.23.09.27.39
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 23 Jan 2024 09:27:40 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: b5e39de2-ba14-11ee-98f4-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1706030860; x=1706635660; darn=lists.xenproject.org;
        h=mime-version:user-agent:content-transfer-encoding:references
         :in-reply-to:date:cc:to:from:subject:message-id:from:to:cc:subject
         :date:message-id:reply-to;
        bh=yrq22DPNPC2JEUvBycO+PioR+yMMNZG2s+BJtBtj4Eg=;
        b=VMgGvu37WV9ALqubr6468ava7I3Khucyy2bEjRjuKz72vfKeOBNZJsLfv1qRDHHf1X
         Fi+pfec9FsVMhEIs6mQ5MDmPNwAuJpCRyENAKAo+JVV4qUc0DlwzaPhJzR2nzIetLytP
         GVGDEkQjYTST2sG57D15tKojOmcKV/nigHnL6ikpZKmqepkrG1JnMxL/GkQCZoeUUnSC
         /5agjkr47cweripFXDnajzzf05SjTc6u+Y0/F4kvOXgMm8N42bxJkVoJOWB2SY//mt+d
         PXjl1T4p2Emzv0g7z2q20F20NgKr1R4M0X640pc0GOd0PZA/oCnGD5W2/POcwh4tiGNg
         hXnw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706030860; x=1706635660;
        h=mime-version:user-agent:content-transfer-encoding:references
         :in-reply-to:date:cc:to:from:subject:message-id:x-gm-message-state
         :from:to:cc:subject:date:message-id:reply-to;
        bh=yrq22DPNPC2JEUvBycO+PioR+yMMNZG2s+BJtBtj4Eg=;
        b=JPh1nuI9GxvOjcvnwGImLO3GmkGbGHLK3MsqQSR7+vPCQudpEU/AESmC0ti5HlfOSC
         5TYeW+GI6FXnQeX0+X9eAj/URSKQh+iQerGS0AA2QWpOGBYrapUK0cRhGu/V2KhCkId4
         vI4nsoepZbAIfsHRafPo4QZopW77kpiep4L8I2ks+xoQydHJ1bRShO/Y4L55esPknRvR
         rnB3rWd+Z6R7+2+SP+/tLC+p/vwoiFUhXBkcr6Bw0fXk5gFZBQsV92mK7OjUPXXQhjpp
         2CMqaMrZsu0w1rnmFQLoYSxp0ZIiwJMldcBVntSK2CQ7fUjnIrfqflXZ5ds++hCG1dI8
         guBQ==
X-Gm-Message-State: AOJu0YyKsjlSSt8K+I/Pdi06/zXwBiZckSaT/BBLd3fCYGtu/SMIwoou
	acQxVG1qpDIngVPrUNSRqFMtumrmLdT8Zl0ou8t3/u/km2HC8LlK
X-Google-Smtp-Source: AGHT+IFh2VJZX+o4s8tNWp13bWT9vsabwEbfwXl3egzu3Gu8tZ+XkTinqQGX03E4/IaadzWPPaR4CA==
X-Received: by 2002:a05:6512:3b0c:b0:50e:e2e2:a273 with SMTP id f12-20020a0565123b0c00b0050ee2e2a273mr4016455lfv.26.1706030860287;
        Tue, 23 Jan 2024 09:27:40 -0800 (PST)
Message-ID: <7ba286f9f1255cbf5c0957f0a0a92e5e18f2bc8d.camel@gmail.com>
Subject: Re: [PATCH v3 31/34] xen/riscv: add minimal stuff to mm.h to build
 full Xen
From: Oleksii <oleksii.kurochko@gmail.com>
To: Jan Beulich <jbeulich@suse.com>
Cc: Alistair Francis <alistair.francis@wdc.com>, Bob Eshleman
 <bobbyeshleman@gmail.com>, Connor Davis <connojdavis@gmail.com>, Andrew
 Cooper <andrew.cooper3@citrix.com>, George Dunlap
 <george.dunlap@citrix.com>,  Julien Grall <julien@xen.org>, Stefano
 Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>, 
 xen-devel@lists.xenproject.org
Date: Tue, 23 Jan 2024 19:27:38 +0200
In-Reply-To: <d347c4d9-e93b-4937-8e33-e5fbbdcd6bfb@suse.com>
References: <cover.1703255175.git.oleksii.kurochko@gmail.com>
	 <4411f6af38586074b347cd6005f19f9c670faa74.1703255175.git.oleksii.kurochko@gmail.com>
	 <d347c4d9-e93b-4937-8e33-e5fbbdcd6bfb@suse.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
User-Agent: Evolution 3.50.2 (3.50.2-1.fc39) 
MIME-Version: 1.0

On Tue, 2024-01-23 at 14:03 +0100, Jan Beulich wrote:
> On 22.12.2023 16:13, Oleksii Kurochko wrote:
> > Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>
> > ---
> > Changes in V3:
> > =C2=A0- update the commit message
>=20
> ??? (yet again)
asm/mm.h was changed to mm.h
>=20
> > --- a/xen/arch/riscv/include/asm/mm.h
> > +++ b/xen/arch/riscv/include/asm/mm.h
> > @@ -3,8 +3,251 @@
> > =C2=A0#ifndef _ASM_RISCV_MM_H
> > =C2=A0#define _ASM_RISCV_MM_H
> > =C2=A0
> > +#include <public/xen.h>
> > +#include <xen/pdx.h>
> > +#include <xen/types.h>
> > +
> > +#include <asm/page.h>
> > =C2=A0#include <asm/page-bits.h>
> > =C2=A0
> > +#define paddr_to_pdx(pa)=C2=A0=C2=A0=C2=A0 mfn_to_pdx(maddr_to_mfn(pa)=
)
> > +#define gfn_to_gaddr(gfn)=C2=A0=C2=A0 pfn_to_paddr(gfn_x(gfn))
> > +#define gaddr_to_gfn(ga)=C2=A0=C2=A0=C2=A0 _gfn(paddr_to_pfn(ga))
> > +#define mfn_to_maddr(mfn)=C2=A0=C2=A0 pfn_to_paddr(mfn_x(mfn))
> > +#define maddr_to_mfn(ma)=C2=A0=C2=A0=C2=A0 _mfn(paddr_to_pfn(ma))
> > +#define vmap_to_mfn(va)=C2=A0=C2=A0=C2=A0=C2=A0
> > maddr_to_mfn(virt_to_maddr((vaddr_t)va))
> > +#define vmap_to_page(va)=C2=A0=C2=A0=C2=A0 mfn_to_page(vmap_to_mfn(va)=
)
>=20
> Everything you have above ...
>=20
> > +#define paddr_to_pdx(pa)=C2=A0=C2=A0=C2=A0 mfn_to_pdx(maddr_to_mfn(pa)=
)
> > +#define gfn_to_gaddr(gfn)=C2=A0=C2=A0 pfn_to_paddr(gfn_x(gfn))
> > +#define gaddr_to_gfn(ga)=C2=A0=C2=A0=C2=A0 _gfn(paddr_to_pfn(ga))
> > +#define mfn_to_maddr(mfn)=C2=A0=C2=A0 pfn_to_paddr(mfn_x(mfn))
> > +#define maddr_to_mfn(ma)=C2=A0=C2=A0=C2=A0 _mfn(paddr_to_pfn(ma))
> > +#define vmap_to_mfn(va)=C2=A0=C2=A0=C2=A0=C2=A0
> > maddr_to_mfn(virt_to_maddr((vaddr_t)va))
> > +#define vmap_to_page(va)=C2=A0=C2=A0=C2=A0 mfn_to_page(vmap_to_mfn(va)=
)
>=20
> ... appears a 2nd time right afterwards.
Hmm, looks like rebase issue. I'll drop a copy. Thanks.
>=20
> > +#define virt_to_maddr(va) ((paddr_t)((vaddr_t)(va) & PADDR_MASK))
> > +#define maddr_to_virt(pa) ((void *)((paddr_t)(pa) |
> > DIRECTMAP_VIRT_START))
> > +
> > +/* Convert between Xen-heap virtual addresses and machine frame
> > numbers. */
> > +#define __virt_to_mfn(va) (virt_to_maddr(va) >> PAGE_SHIFT)
> > +#define __mfn_to_virt(mfn) maddr_to_virt((paddr_t)(mfn) <<
> > PAGE_SHIFT)
>=20
> These would imo better use maddr_to_mfn() and mfn_to_maddr(), rather
> than
> kind of open-coding them. The former could also use PFN_DOWN() as an
> alternative.
Thanks. I'll take that into account.

>=20
> > +/* Convert between Xen-heap virtual addresses and page-info
> > structures. */
> > +static inline struct page_info *virt_to_page(const void *v)
> > +{
> > +=C2=A0=C2=A0=C2=A0 BUG();
> > +=C2=A0=C2=A0=C2=A0 return NULL;
> > +}
> > +
> > +/*
> > + * We define non-underscored wrappers for above conversion
> > functions.
> > + * These are overriden in various source files while underscored
> > version
> > + * remain intact.
> > + */
> > +#define virt_to_mfn(va)=C2=A0=C2=A0=C2=A0=C2=A0 __virt_to_mfn(va)
> > +#define mfn_to_virt(mfn)=C2=A0=C2=A0=C2=A0 __mfn_to_virt(mfn)
>=20
> Is this really still needed? Would be pretty nice if in a new port we
> could get to start cleanly right away (i.e. by not needing per-file
> overrides, but using type-safe expansions here right away).
Yes, we can just rename __virt_to_mfn and __mfn_to_virt and updated it
accordingly to your previous comment.


>=20
> > +struct page_info
> > +{
> > +=C2=A0=C2=A0=C2=A0 /* Each frame can be threaded onto a doubly-linked =
list. */
> > +=C2=A0=C2=A0=C2=A0 struct page_list_entry list;
> > +
> > +=C2=A0=C2=A0=C2=A0 /* Reference count and various PGC_xxx flags and fi=
elds. */
> > +=C2=A0=C2=A0=C2=A0 unsigned long count_info;
> > +
> > +=C2=A0=C2=A0=C2=A0 /* Context-dependent fields follow... */
> > +=C2=A0=C2=A0=C2=A0 union {
> > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 /* Page is in use: ((count_=
info & PGC_count_mask) !=3D 0).
> > */
> > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 struct {
> > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 /* =
Type reference count and various PGT_xxx flags and
> > fields. */
> > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 uns=
igned long type_info;
> > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 } inuse;
> > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 /* Page is on a free list: =
((count_info & PGC_count_mask)
> > =3D=3D 0). */
> > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 union {
> > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 str=
uct {
> > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0 /*
> > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0 * Index of the first *possibly* unscrubbed page
> > in the buddy.
> > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0 * One more bit than maximum possible order to
> > accommodate
> > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0 * INVALID_DIRTY_IDX.
> > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0 */
> > +#define INVALID_DIRTY_IDX ((1UL << (MAX_ORDER + 1)) - 1)
> > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0 unsigned long first_dirty:MAX_ORDER + 1;
> > +
> > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0 /* Do TLBs need flushing for safety before next
> > page use? */
> > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0 bool need_tlbflush:1;
> > +
> > +#define BUDDY_NOT_SCRUBBING=C2=A0=C2=A0=C2=A0 0
> > +#define BUDDY_SCRUBBING=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 1
> > +#define BUDDY_SCRUB_ABORT=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 2
> > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0 unsigned long scrub_state:2;
> > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 };
> > +
> > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0 unsigned long val;
> > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 } f=
ree;
>=20
> Indentation is wrong (and thus misleading) for these two lines.
I'll correct it.

>=20
> > +
> > +=C2=A0=C2=A0=C2=A0 } u;
>=20
> Nit: I don't see the value of the trailing blank line inside the
> union.
Sure, there is no any sense.

>=20
> > +=C2=A0=C2=A0=C2=A0 union {
> > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 /* Page is in use, but not =
as a shadow. */
>=20
> I question the appicability of "shadow" here.
>=20
> > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 struct {
> > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 /* =
Owner of this page (zero if page is anonymous). */
> > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 str=
uct domain *domain;
> > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 } inuse;
> > +
> > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 /* Page is on a free list. =
*/
> > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 struct {
> > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 /* =
Order-size of the free chunk this page is the head
> > of. */
> > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 uns=
igned int order;
> > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 } free;
> > +
> > +=C2=A0=C2=A0=C2=A0 } v;
> > +
> > +=C2=A0=C2=A0=C2=A0 union {
> > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 /*
> > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 * Timestamp from 'TLB=
 clock', used to avoid extra safety
> > flushes.
> > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 * Only valid for: a) =
free pages, and b) pages with zero
> > type count
> > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 */
> > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 uint32_t tlbflush_timestamp=
;
> > +=C2=A0=C2=A0=C2=A0 };
> > +=C2=A0=C2=A0=C2=A0 uint64_t pad;
> > +};
> > +
> > +#define frame_table ((struct page_info *)FRAMETABLE_VIRT_START)
> > +
> > +/* PDX of the first page in the frame table. */
> > +extern unsigned long frametable_base_pdx;
>=20
> From this I conclude memory on RISC-V systems may not start at (or
> near) 0?
I am not sure that it is impossible at all, but all platforms I saw it
was always not 0 and pretty big values. For example, on real platform,
there is =3D0000004000000000. In QEMU, it is 0x800...0

>=20
> > +/* Convert between machine frame numbers and page-info structures.
> > */
> > +#define
> > mfn_to_page(mfn)=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 \
> > +=C2=A0=C2=A0=C2=A0 (frame_table + (mfn_to_pdx(mfn) - frametable_base_p=
dx))
> > +#define
> > page_to_mfn(pg)=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 \
> > +=C2=A0=C2=A0=C2=A0 pdx_to_mfn((unsigned long)((pg) - frame_table) +
> > frametable_base_pdx)
> > +
> > +static inline void *page_to_virt(const struct page_info *pg)
> > +{
> > +=C2=A0=C2=A0=C2=A0 return mfn_to_virt(mfn_x(page_to_mfn(pg)));
> > +}
> > +
> > +/*
> > + * Common code requires get_page_type and put_page_type.
> > + * We don't care about typecounts so we just do the minimum to
> > make it
> > + * happy.
> > + */
> > +static inline int get_page_type(struct page_info *page, unsigned
> > long type)
> > +{
> > +=C2=A0=C2=A0=C2=A0 return 1;
> > +}
> > +
> > +static inline void put_page_type(struct page_info *page)
> > +{
> > +}
> > +
> > +static inline void put_page_and_type(struct page_info *page)
> > +{
> > +=C2=A0=C2=A0=C2=A0 put_page_type(page);
> > +=C2=A0=C2=A0=C2=A0 put_page(page);
> > +}
> > +
> > +/*
> > + * RISC-V does not have an M2P, but common code expects a handful
> > of
> > + * M2P-related defines and functions. Provide dummy versions of
> > these.
> > + */
> > +#define INVALID_M2P_ENTRY=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 (~=
0UL)
> > +#define SHARED_M2P_ENTRY=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0 (~0UL - 1UL)
> > +#define SHARED_M2P(_e)=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0 ((_e) =3D=3D SHARED_M2P_ENTRY)
> > +
> > +/* Xen always owns P2M on RISC-V */
> > +#define set_gpfn_from_mfn(mfn, pfn) do { (void) (mfn),
> > (void)(pfn); } while (0)
>=20
> Nit: Stray blank again after cast.
I'll update this. Thanks.

>=20
> > +#define mfn_to_gfn(d, mfn) ((void)(d), _gfn(mfn_x(mfn)))
>=20
> What's the relation of the comment with these two #define-s?
I don't know, it was copied just from Arm. I think it would be better
to drop a comment and just define macros as BUG_ON("uimplemented") for
time being.

>=20
> > +#define PDX_GROUP_SHIFT (16 + 5)
> > +
> > +static inline unsigned long domain_get_maximum_gpfn(struct domain
> > *d)
> > +{
> > +=C2=A0=C2=A0=C2=A0 BUG();
> > +=C2=A0=C2=A0=C2=A0 return 0;
> > +}
> > +
> > +static inline long arch_memory_op(int op,
> > XEN_GUEST_HANDLE_PARAM(void) arg)
> > +{
> > +=C2=A0=C2=A0=C2=A0 BUG();
> > +=C2=A0=C2=A0=C2=A0 return 0;
> > +}
> > +
> > +/*
> > + * On RISCV, all the RAM is currently direct mapped in Xen.
> > + * Hence return always true.
> > + */
> > +static inline bool arch_mfns_in_directmap(unsigned long mfn,
> > unsigned long nr)
> > +{
> > +=C2=A0=C2=A0=C2=A0 return true;
> > +}
> > +
> > +#define PG_shift(idx)=C2=A0=C2=A0 (BITS_PER_LONG - (idx))
> > +#define PG_mask(x, idx) (x ## UL << PG_shift(idx))
> > +
> > +#define PGT_none=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
 PG_mask(0, 1)=C2=A0 /* no special uses of
> > this page=C2=A0=C2=A0 */
> > +#define PGT_writable_page PG_mask(1, 1)=C2=A0 /* has writable
> > mappings?=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 */
> > +#define PGT_type_mask=C2=A0=C2=A0=C2=A0=C2=A0 PG_mask(1, 1)=C2=A0 /* B=
its 31 or
> > 63.=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 */
> > +
> > + /* Count of uses of this frame as its current type. */
> > +#define PGT_count_width=C2=A0=C2=A0 PG_shift(2)
> > +#define PGT_count_mask=C2=A0=C2=A0=C2=A0 ((1UL<<PGT_count_width)-1)
>=20
> Nit: Style (missing blanks around binary operators). Also a few more
> times further down.
Thanks. I'll update.
>=20
> > +/*
> > + * Page needs to be scrubbed. Since this bit can only be set on a
> > page that is
> > + * free (i.e. in PGC_state_free) we can reuse PGC_allocated bit.
> > + */
> > +#define _PGC_need_scrub=C2=A0=C2=A0 _PGC_allocated
> > +#define PGC_need_scrub=C2=A0=C2=A0=C2=A0 PGC_allocated
> > +
> > +//=C2=A0 /* Cleared when the owning guest 'frees' this page. */
>=20
> Why a commented out comment?
Missed to remove, my IDE using this type of comment by default. and I
commented all the file when tried to find minimal of changes needed for
Xen build.

>=20
> > +#define _PGC_allocated=C2=A0=C2=A0=C2=A0 PG_shift(1)
> > +#define PGC_allocated=C2=A0=C2=A0=C2=A0=C2=A0 PG_mask(1, 1)
> > +=C2=A0 /* Page is Xen heap? */
> > +#define _PGC_xen_heap=C2=A0=C2=A0=C2=A0=C2=A0 PG_shift(2)
> > +#define PGC_xen_heap=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 PG_mask(1, 2)
> > +/* Page is broken? */
> > +#define _PGC_broken=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 PG_shift(7)
> > +#define PGC_broken=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 PG_mask(1=
, 7)
> > + /* Mutually-exclusive page states: { inuse, offlining, offlined,
> > free }. */
>=20
> Can similar comments in this block please all be similarly indented
> (or not)?
Sure. I'll update that.

>=20
> > +#define PGC_state=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 PG_m=
ask(3, 9)
> > +#define PGC_state_inuse=C2=A0=C2=A0 PG_mask(0, 9)
> > +#define PGC_state_offlining PG_mask(1, 9)
> > +#define PGC_state_offlined PG_mask(2, 9)
> > +#define PGC_state_free=C2=A0=C2=A0=C2=A0 PG_mask(3, 9)
> > +// #define page_state_is(pg, st) (((pg)->count_info&PGC_state) =3D=3D
> > PGC_state_##st)
>=20
> ???
The same as above, just missed to remove that line.

>=20
> > +/* Count of references to this frame. */
> > +#define PGC_count_width=C2=A0=C2=A0 PG_shift(9)
> > +#define PGC_count_mask=C2=A0=C2=A0=C2=A0 ((1UL<<PGC_count_width)-1)
> > +
> > +#define page_state_is(pg, st) (((pg)->count_info&PGC_state) =3D=3D
> > PGC_state_##st)
>=20
> And here it then "properly" appears?
>=20
> > +#define _PGC_extra=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 PG_shift(=
10)
> > +#define PGC_extra=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 PG_m=
ask(1, 10)
> > +
> > +#define is_xen_heap_page(page) ((page)->count_info & PGC_xen_heap)
> > +#define is_xen_heap_mfn(mfn) \
> > +=C2=A0=C2=A0=C2=A0 (mfn_valid(mfn) && is_xen_heap_page(mfn_to_page(mfn=
)))
> > +
> > +#define is_xen_fixed_mfn(mfn)=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0 \
> > +=C2=A0=C2=A0=C2=A0 ((mfn_to_maddr(mfn) >=3D virt_to_maddr(&_start)) &&=
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 \
> > +=C2=A0=C2=A0=C2=A0=C2=A0 (mfn_to_maddr(mfn) <=3D virt_to_maddr((vaddr_=
t)_end - 1)))
>=20
> Why does _start need prefixing wuth & and _end prefixing with a cast?
> First and foremost both want to be consistent. And then preferably
> with as little extra clutter as possible.
This is how it was defined in Arm. I think it both can be casted.
I'll update that.
Thanks.
>=20
> > +#define page_get_owner(_p)=C2=A0=C2=A0=C2=A0 (_p)->v.inuse.domain
> > +#define page_set_owner(_p,_d) ((_p)->v.inuse.domain =3D (_d))
> > +
> > +/* TODO: implement */
> > +#define mfn_valid(mfn) ({ (void) (mfn); 0; })
> > +
> > +#define mfn_to_gfn(d, mfn) ((void)(d), _gfn(mfn_x(mfn)))
>=20
> This appeared further up already.
>=20
> > +#define domain_set_alloc_bitsize(d) ((void)0)
>=20
> Better ((void)(d)) ? And then ...
>=20
> > +#define domain_clamp_alloc_bitsize(d, b) (b)
>=20
> ... ((void)(d), (b)) here?
I'll update properly. Thanks.

~ Oleksii


From xen-devel-bounces@lists.xenproject.org Tue Jan 23 17:31:52 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 23 Jan 2024 17:31:52 +0000
Received: from list by lists.xenproject.org with outflank-mailman.670573.1043459 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSKcp-0001go-99; Tue, 23 Jan 2024 17:31:51 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 670573.1043459; Tue, 23 Jan 2024 17:31:51 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSKcp-0001gh-6S; Tue, 23 Jan 2024 17:31:51 +0000
Received: by outflank-mailman (input) for mailman id 670573;
 Tue, 23 Jan 2024 17:31:49 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=OrDF=JB=gmail.com=oleksii.kurochko@srs-se1.protection.inumbo.net>)
 id 1rSKcn-0001gb-92
 for xen-devel@lists.xenproject.org; Tue, 23 Jan 2024 17:31:49 +0000
Received: from mail-lj1-x22a.google.com (mail-lj1-x22a.google.com
 [2a00:1450:4864:20::22a])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 494b587d-ba15-11ee-98f4-6d05b1d4d9a1;
 Tue, 23 Jan 2024 18:31:48 +0100 (CET)
Received: by mail-lj1-x22a.google.com with SMTP id
 38308e7fff4ca-2ccec119587so59267121fa.0
 for <xen-devel@lists.xenproject.org>; Tue, 23 Jan 2024 09:31:48 -0800 (PST)
Received: from [192.168.206.239] ([94.75.70.14])
 by smtp.gmail.com with ESMTPSA id
 h19-20020a2e9ed3000000b002cd35d8b018sm3769191ljk.113.2024.01.23.09.31.46
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 23 Jan 2024 09:31:47 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 494b587d-ba15-11ee-98f4-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1706031108; x=1706635908; darn=lists.xenproject.org;
        h=mime-version:user-agent:content-transfer-encoding:references
         :in-reply-to:date:cc:to:from:subject:message-id:from:to:cc:subject
         :date:message-id:reply-to;
        bh=zkZzCCcTah0VUomWsPyIHmO6qiLqr3J0C7cC9SWEewI=;
        b=T9te6FqEmSZSPSWDGXFMXiS8cjTKNAxpUDucLhDHkv1a8ejOdc3+l7JPAovHyp8+YX
         07sSmZ5gPCIwa1r/NPOYTY8P+JpZKYJl6MeDv7UBuX5N7rC/u3c54Ra5oCEjEtW7HvcS
         mWSyLZGNL//WEqLPcmK4MvDNFgLmdXkkkpsBG9931/+yPbjp83DlJWBj91iIxj5JA/TW
         n9NORsV317+K2PtzTZ/XTa9H43tVPYpy+3/6mlYWh3eXQ9BOqiwCjWMzTsp/ZM9gZ8Jz
         xVYDrHnDFUl3XpMxgtXHvPMIGVkeAEiPbZgCYVp4wcGbMivJ8++SeHHVENvm79ZWhxVM
         Eg1g==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706031108; x=1706635908;
        h=mime-version:user-agent:content-transfer-encoding:references
         :in-reply-to:date:cc:to:from:subject:message-id:x-gm-message-state
         :from:to:cc:subject:date:message-id:reply-to;
        bh=zkZzCCcTah0VUomWsPyIHmO6qiLqr3J0C7cC9SWEewI=;
        b=UP1q1Bpu/ae/1NRFCQCBuWb5UcnH2cPIbnkU7HCm4l7WhVgGGf6MljFrsAiBGrqZQx
         sq8b2pCaW6GKzfsYSyNTLyE6L2oRba7r/q6b+T394PiNh0L64K8iassCcW0aiQq1tS2R
         gAW6M5H+brb2VLbbNxRQY3NIznI19Qj2mbwR+kazgg6jA1VbjYWSyv8RlbCW8L5hUE0+
         4q5Zc1UEDaZ1ZA6RElSI9zV/zsnZK8O4mnBNEGEhyV59Twmf+GU9UdvsCwNiUFkhrRpV
         dRIPGdMcUMN5kg87xJEpPtOueqQjQhXUw45GuQhw+ZKyJvbpw+FKtr/pS0Nz7S4PwhNd
         9C5Q==
X-Gm-Message-State: AOJu0Yz3qLyK00z/sIIMAMiPuHqWHp8n10NhoYTB7ofn9gNHjfWIfWaD
	wZ+DqnwZnF6tGk7HrtjkJ82SLrdOvKLRznl6NhZ+Lg4eyjmp2uSk
X-Google-Smtp-Source: AGHT+IHkYciniqf+tyGUx25fiKNZ7L6iu9PpEHEH3PEWHupw6Jlm7xYwePWbkC2YCqJfzHt63qv3HQ==
X-Received: by 2002:a2e:9c85:0:b0:2cc:f126:8b16 with SMTP id x5-20020a2e9c85000000b002ccf1268b16mr73478lji.69.1706031107561;
        Tue, 23 Jan 2024 09:31:47 -0800 (PST)
Message-ID: <2c5107197ba092f66888460318cfeb54ce7ff7ee.camel@gmail.com>
Subject: Re: [PATCH v3 32/34] xen/rirscv: add minimal amount of stubs to
 build full Xen
From: Oleksii <oleksii.kurochko@gmail.com>
To: Jan Beulich <jbeulich@suse.com>
Cc: Alistair Francis <alistair.francis@wdc.com>, Bob Eshleman
 <bobbyeshleman@gmail.com>, Connor Davis <connojdavis@gmail.com>, Andrew
 Cooper <andrew.cooper3@citrix.com>, George Dunlap
 <george.dunlap@citrix.com>,  Julien Grall <julien@xen.org>, Stefano
 Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>, 
 xen-devel@lists.xenproject.org
Date: Tue, 23 Jan 2024 19:31:46 +0200
In-Reply-To: <de4c3443-cede-487b-b3b3-28e92d3dc6e7@suse.com>
References: <cover.1703255175.git.oleksii.kurochko@gmail.com>
	 <e40d3e396733ec9e85d72fc3e9f05be97881a763.1703255175.git.oleksii.kurochko@gmail.com>
	 <de4c3443-cede-487b-b3b3-28e92d3dc6e7@suse.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: base64
User-Agent: Evolution 3.50.2 (3.50.2-1.fc39) 
MIME-Version: 1.0

T24gVHVlLCAyMDI0LTAxLTIzIGF0IDE0OjIwICswMTAwLCBKYW4gQmV1bGljaCB3cm90ZToKPiBP
biAyMi4xMi4yMDIzIDE2OjEzLCBPbGVrc2lpIEt1cm9jaGtvIHdyb3RlOgo+ID4gLS0tIGEveGVu
L2FyY2gvcmlzY3YvZWFybHlfcHJpbnRrLmMKPiA+ICsrKyBiL3hlbi9hcmNoL3Jpc2N2L2Vhcmx5
X3ByaW50ay5jCj4gPiBAQCAtNDAsMTcxICs0MCwzIEBAIHZvaWQgZWFybHlfcHJpbnRrKGNvbnN0
IGNoYXIgKnN0cikKPiA+IMKgwqDCoMKgwqDCoMKgwqAgc3RyKys7Cj4gPiDCoMKgwqDCoCB9Cj4g
PiDCoH0KPiA+IC0KPiA+IC0vKgo+ID4gLSAqIFRoZSBmb2xsb3dpbmcgI2lmIDEgLi4uICNlbmRp
ZiBzaG91bGQgYmUgcmVtb3ZlZCBhZnRlciBwcmludGsKPiA+IC0gKiBhbmQgcmVsYXRlZCBzdHVm
ZiBhcmUgcmVhZHkuCj4gPiAtICovCj4gPiAtI2lmIDEKPiA+IC0KPiA+IC0jaW5jbHVkZSA8eGVu
L3N0ZGFyZy5oPgo+ID4gLSNpbmNsdWRlIDx4ZW4vc3RyaW5nLmg+Cj4gPiAtCj4gPiAtLyoqCj4g
PiAtICogc3RybGVuIC0gRmluZCB0aGUgbGVuZ3RoIG9mIGEgc3RyaW5nCj4gPiAtICogQHM6IFRo
ZSBzdHJpbmcgdG8gYmUgc2l6ZWQKPiA+IC0gKi8KPiA+IC1zaXplX3QgKHN0cmxlbikoY29uc3Qg
Y2hhciAqIHMpCj4gPiAtewo+ID4gLcKgwqDCoCBjb25zdCBjaGFyICpzYzsKPiA+IC0KPiA+IC3C
oMKgwqAgZm9yIChzYyA9IHM7ICpzYyAhPSAnXDAnOyArK3NjKQo+ID4gLcKgwqDCoMKgwqDCoMKg
IC8qIG5vdGhpbmcgKi87Cj4gPiAtwqDCoMKgIHJldHVybiBzYyAtIHM7Cj4gPiAtfQo+ID4gLQo+
ID4gLS8qKgo+ID4gLSAqIG1lbWNweSAtIENvcHkgb25lIGFyZWEgb2YgbWVtb3J5IHRvIGFub3Ro
ZXIKPiA+IC0gKiBAZGVzdDogV2hlcmUgdG8gY29weSB0bwo+ID4gLSAqIEBzcmM6IFdoZXJlIHRv
IGNvcHkgZnJvbQo+ID4gLSAqIEBjb3VudDogVGhlIHNpemUgb2YgdGhlIGFyZWEuCj4gPiAtICoK
PiA+IC0gKiBZb3Ugc2hvdWxkIG5vdCB1c2UgdGhpcyBmdW5jdGlvbiB0byBhY2Nlc3MgSU8gc3Bh
Y2UsIHVzZQo+ID4gbWVtY3B5X3RvaW8oKQo+ID4gLSAqIG9yIG1lbWNweV9mcm9taW8oKSBpbnN0
ZWFkLgo+ID4gLSAqLwo+ID4gLXZvaWQgKihtZW1jcHkpKHZvaWQgKmRlc3QsIGNvbnN0IHZvaWQg
KnNyYywgc2l6ZV90IGNvdW50KQo+ID4gLXsKPiA+IC3CoMKgwqAgY2hhciAqdG1wID0gKGNoYXIg
KikgZGVzdCwgKnMgPSAoY2hhciAqKSBzcmM7Cj4gPiAtCj4gPiAtwqDCoMKgIHdoaWxlIChjb3Vu
dC0tKQo+ID4gLcKgwqDCoMKgwqDCoMKgICp0bXArKyA9ICpzKys7Cj4gPiAtCj4gPiAtwqDCoMKg
IHJldHVybiBkZXN0Owo+ID4gLX0KPiA+IC0KPiA+IC1pbnQgdnNucHJpbnRmKGNoYXIqIHN0ciwg
c2l6ZV90IHNpemUsIGNvbnN0IGNoYXIqIGZvcm1hdCwgdmFfbGlzdAo+ID4gYXJncykKPiA+IC17
Cj4gPiAtwqDCoMKgIHNpemVfdCBpID0gMDsgLyogQ3VycmVudCBwb3NpdGlvbiBpbiB0aGUgb3V0
cHV0IHN0cmluZyAqLwo+ID4gLcKgwqDCoCBzaXplX3Qgd3JpdHRlbiA9IDA7IC8qIFRvdGFsIG51
bWJlciBvZiBjaGFyYWN0ZXJzIHdyaXR0ZW4gKi8KPiA+IC3CoMKgwqAgY2hhciogZGVzdCA9IHN0
cjsKPiA+IC0KPiA+IC3CoMKgwqAgd2hpbGUgKCBmb3JtYXRbaV0gIT0gJ1wwJyAmJiB3cml0dGVu
IDwgc2l6ZSAtIDEgKQo+ID4gLcKgwqDCoCB7Cj4gPiAtwqDCoMKgwqDCoMKgwqAgaWYgKCBmb3Jt
YXRbaV0gPT0gJyUnICkKPiA+IC3CoMKgwqDCoMKgwqDCoCB7Cj4gPiAtwqDCoMKgwqDCoMKgwqDC
oMKgwqDCoCBpKys7Cj4gPiAtCj4gPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAoIGZvcm1h
dFtpXSA9PSAnXDAnICkKPiA+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgYnJlYWs7
Cj4gPiAtCj4gPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAoIGZvcm1hdFtpXSA9PSAnJScg
KQo+ID4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgewo+ID4gLcKgwqDCoMKgwqDCoMKgwqDCoMKg
wqDCoMKgwqDCoCBpZiAoIHdyaXR0ZW4gPCBzaXplIC0gMSApCj4gPiAtwqDCoMKgwqDCoMKgwqDC
oMKgwqDCoMKgwqDCoMKgIHsKPiA+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg
wqDCoCBkZXN0W3dyaXR0ZW5dID0gJyUnOwo+ID4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg
wqDCoMKgwqDCoMKgIHdyaXR0ZW4rKzsKPiA+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg
wqAgfQo+ID4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpKys7Cj4gPiAtwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGNvbnRpbnVlOwo+ID4gLcKgwqDCoMKgwqDCoMKgwqDC
oMKgwqAgfQo+ID4gLQo+ID4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgLyoKPiA+IC3CoMKgwqDC
oMKgwqDCoMKgwqDCoMKgwqAgKiBIYW5kbGUgZm9ybWF0IHNwZWNpZmllcnMuCj4gPiAtwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoMKgICogRm9yIHNpbXBsaWNpdHksIG9ubHkgJXMgYW5kICVkIGFyZSBp
bXBsZW1lbnRlZAo+ID4gaGVyZS4KPiA+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKi8KPiA+
IC0KPiA+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlmICggZm9ybWF0W2ldID09ICdzJyApCj4g
PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB7Cj4gPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg
wqDCoMKgIGNoYXIqIGFyZyA9IHZhX2FyZyhhcmdzLCBjaGFyKik7Cj4gPiAtwqDCoMKgwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoMKgIHNpemVfdCBhcmdsZW4gPSBzdHJsZW4oYXJnKTsKPiA+IC0KPiA+
IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc2l6ZV90IHJlbWFpbmluZyA9IHNpemUg
LSB3cml0dGVuIC0gMTsKPiA+IC0KPiA+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg
aWYgKCBhcmdsZW4gPiByZW1haW5pbmcgKQo+ID4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg
wqDCoMKgwqDCoMKgIGFyZ2xlbiA9IHJlbWFpbmluZzsKPiA+IC0KPiA+IC3CoMKgwqDCoMKgwqDC
oMKgwqDCoMKgwqDCoMKgwqAgbWVtY3B5KGRlc3QgKyB3cml0dGVuLCBhcmcsIGFyZ2xlbik7Cj4g
PiAtCj4gPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHdyaXR0ZW4gKz0gYXJnbGVu
Owo+ID4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpKys7Cj4gPiAtwqDCoMKgwqDC
oMKgwqDCoMKgwqDCoCB9Cj4gPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBlbHNlIGlmICggZm9y
bWF0W2ldID09ICdkJyApCj4gPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB7Cj4gPiAtwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGludCBhcmcgPSB2YV9hcmcoYXJncywgaW50KTsKPiA+
IC0KPiA+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgLyogQ29udmVydCB0aGUgaW50
ZWdlciB0byBzdHJpbmcgcmVwcmVzZW50YXRpb24gKi8KPiA+IC3CoMKgwqDCoMKgwqDCoMKgwqDC
oMKgwqDCoMKgwqAgY2hhciBudW1zdHJbMzJdOyAvKiBBc3N1bWVzIGEgbWF4aW11bSBvZiAzMiBk
aWdpdHMKPiA+ICovCj4gPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGludCBudW1s
ZW4gPSAwOwo+ID4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpbnQgbnVtID0gYXJn
Owo+ID4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzaXplX3QgcmVtYWluaW5nOwo+
ID4gLQo+ID4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAoIGFyZyA8IDAgKQo+
ID4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB7Cj4gPiAtwqDCoMKgwqDCoMKgwqDC
oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKCB3cml0dGVuIDwgc2l6ZSAtIDEgKQo+ID4gLcKg
wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHsKPiA+IC3CoMKgwqDCoMKgwqDC
oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGRlc3Rbd3JpdHRlbl0gPSAnLSc7Cj4g
PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB3cml0dGVu
Kys7Cj4gPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfQo+ID4gLQo+
ID4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIG51bSA9IC1hcmc7Cj4g
PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIH0KPiA+IC0KPiA+IC3CoMKgwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoMKgwqAgZG8KPiA+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg
wqAgewo+ID4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIG51bXN0cltu
dW1sZW5dID0gJzAnICsgbnVtICUgMTA7Cj4gPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC
oMKgwqDCoMKgwqAgbnVtID0gbnVtIC8gMTA7Cj4gPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg
wqDCoMKgwqDCoMKgwqAgbnVtbGVuKys7Cj4gPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC
oMKgIH0gd2hpbGUgKCBudW0gPiAwICk7Cj4gPiAtCj4gPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDC
oMKgwqDCoMKgIC8qIFJldmVyc2UgdGhlIHN0cmluZyAqLwo+ID4gLcKgwqDCoMKgwqDCoMKgwqDC
oMKgwqDCoMKgwqDCoCBmb3IgKGludCBqID0gMDsgaiA8IG51bWxlbiAvIDI7IGorKykKPiA+IC3C
oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgewo+ID4gLcKgwqDCoMKgwqDCoMKgwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoMKgIGNoYXIgdG1wID0gbnVtc3RyW2pdOwo+ID4gLcKgwqDCoMKgwqDC
oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIG51bXN0cltqXSA9IG51bXN0cltudW1sZW4gLSAx
IC0gal07Cj4gPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgbnVtc3Ry
W251bWxlbiAtIDEgLSBqXSA9IHRtcDsKPiA+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg
wqAgfQo+ID4gLQo+ID4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZW1haW5pbmcg
PSBzaXplIC0gd3JpdHRlbiAtIDE7Cj4gPiAtCj4gPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg
wqDCoMKgIGlmICggbnVtbGVuID4gcmVtYWluaW5nICkKPiA+IC3CoMKgwqDCoMKgwqDCoMKgwqDC
oMKgwqDCoMKgwqDCoMKgwqDCoCBudW1sZW4gPSByZW1haW5pbmc7Cj4gPiAtCj4gPiAtwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIG1lbWNweShkZXN0ICsgd3JpdHRlbiwgbnVtc3RyLCBu
dW1sZW4pOwo+ID4gLQo+ID4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB3cml0dGVu
ICs9IG51bWxlbjsKPiA+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaSsrOwo+ID4g
LcKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfQo+ID4gLcKgwqDCoMKgwqDCoMKgIH0KPiA+IC3CoMKg
wqDCoMKgwqDCoCBlbHNlCj4gPiAtwqDCoMKgwqDCoMKgwqAgewo+ID4gLcKgwqDCoMKgwqDCoMKg
wqDCoMKgwqAgaWYgKCB3cml0dGVuIDwgc2l6ZSAtIDEgKQo+ID4gLcKgwqDCoMKgwqDCoMKgwqDC
oMKgwqAgewo+ID4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBkZXN0W3dyaXR0ZW5d
ID0gZm9ybWF0W2ldOwo+ID4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB3cml0dGVu
Kys7Cj4gPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB9Cj4gPiAtwqDCoMKgwqDCoMKgwqDCoMKg
wqDCoCBpKys7Cj4gPiAtwqDCoMKgwqDCoMKgwqAgfQo+ID4gLcKgwqDCoCB9Cj4gPiAtCj4gPiAt
wqDCoMKgIGlmICggc2l6ZSA+IDAgKQo+ID4gLcKgwqDCoMKgwqDCoMKgIGRlc3Rbd3JpdHRlbl0g
PSAnXDAnOwo+ID4gLQo+ID4gLcKgwqDCoCByZXR1cm4gd3JpdHRlbjsKPiA+IC19Cj4gPiAtCj4g
PiAtdm9pZCBwcmludGsoY29uc3QgY2hhciAqZm9ybWF0LCAuLi4pCj4gPiAtewo+ID4gLcKgwqDC
oCBzdGF0aWMgY2hhciBidWZbMTAyNF07Cj4gPiAtCj4gPiAtwqDCoMKgIHZhX2xpc3QgYXJnczsK
PiA+IC3CoMKgwqAgdmFfc3RhcnQoYXJncywgZm9ybWF0KTsKPiA+IC0KPiA+IC3CoMKgwqAgKHZv
aWQpdnNucHJpbnRmKGJ1Ziwgc2l6ZW9mKGJ1ZiksIGZvcm1hdCwgYXJncyk7Cj4gPiAtCj4gPiAt
wqDCoMKgIGVhcmx5X3ByaW50ayhidWYpOwo+ID4gLQo+ID4gLcKgwqDCoCB2YV9lbmQoYXJncyk7
Cj4gPiAtfQo+ID4gLQo+ID4gLSNlbmRpZgo+ID4gLQo+IAo+IEFyZW4ndCB5b3UgdHJhbnNpZW50
bHkgYnJlYWtpbmcgdGhlIGJ1aWxkIGJ5IHJlbW92aW5nIHRoZXNlIGhlcmUsCj4gcmF0aGVyCj4g
dGhhbiBpbiB0aGUgbmV4dCBwYXRjaD8KSXQgc2hvdWxkIGJyZWFrLiBJJ2xsIGRvdWJsZSBjaGVj
ay4gSWYgaXQgd2lsbCwgdGhlbiBJJ2xsIG1vdmUgdGhlc2UKY2hhbmdlcyBpbiB0aGUgbmV4dCBw
YXRjaC4KPiAKPiA+IC0tLSAvZGV2L251bGwKPiA+ICsrKyBiL3hlbi9hcmNoL3Jpc2N2L3N0dWJz
LmMKPiA+IEBAIC0wLDAgKzEsNDIyIEBACj4gPiArLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6
IEdQTC0yLjAtb25seSAqLwo+ID4gKyNpbmNsdWRlIDx4ZW4vY3B1bWFzay5oPgo+ID4gKyNpbmNs
dWRlIDx4ZW4vZG9tYWluLmg+Cj4gPiArI2luY2x1ZGUgPHhlbi9pcnEuaD4KPiA+ICsjaW5jbHVk
ZSA8eGVuL25vZGVtYXNrLmg+Cj4gPiArI2luY2x1ZGUgPHhlbi90aW1lLmg+Cj4gPiArI2luY2x1
ZGUgPHB1YmxpYy9kb21jdGwuaD4KPiA+ICsKPiA+ICsjaW5jbHVkZSA8YXNtL2N1cnJlbnQuaD4K
PiA+ICsKPiA+ICsvKiBzbXBib290LmMgKi8KPiA+ICsKPiA+ICtjcHVtYXNrX3QgY3B1X29ubGlu
ZV9tYXA7Cj4gPiArY3B1bWFza190IGNwdV9wcmVzZW50X21hcDsKPiA+ICtjcHVtYXNrX3QgY3B1
X3Bvc3NpYmxlX21hcDsKPiA+ICsKPiA+ICsvKiBJRCBvZiB0aGUgUENQVSB3ZSdyZSBydW5uaW5n
IG9uICovCj4gPiArREVGSU5FX1BFUl9DUFUodW5zaWduZWQgaW50LCBjcHVfaWQpOwo+ID4gKy8q
IFhYWCB0aGVzZSBzZWVtIGF3ZnVsbHkgeDg2aXNoLi4uICovCj4gPiArLyogcmVwcmVzZW50aW5n
IEhUIHNpYmxpbmdzIG9mIGVhY2ggbG9naWNhbCBDUFUgKi8KPiA+ICtERUZJTkVfUEVSX0NQVV9S
RUFEX01PU1RMWShjcHVtYXNrX3Zhcl90LCBjcHVfc2libGluZ19tYXNrKTsKPiA+ICsvKiByZXBy
ZXNlbnRpbmcgSFQgYW5kIGNvcmUgc2libGluZ3Mgb2YgZWFjaCBsb2dpY2FsIENQVSAqLwo+ID4g
K0RFRklORV9QRVJfQ1BVX1JFQURfTU9TVExZKGNwdW1hc2tfdmFyX3QsIGNwdV9jb3JlX21hc2sp
Owo+ID4gKwo+ID4gK25vZGVtYXNrX3QgX19yZWFkX21vc3RseSBub2RlX29ubGluZV9tYXAgPSB7
IHsgWzBdID0gMVVMIH0gfTsKPiA+ICsKPiA+ICsvKiB0aW1lLmMgKi8KPiA+ICsKPiA+ICt1bnNp
Z25lZCBsb25nIF9fcmVhZF9tb3N0bHkgY3B1X2toejvCoCAvKiBDUFUgY2xvY2sgZnJlcXVlbmN5
IGluCj4gPiBrSHouICovCj4gCj4gX19yb19hZnRlcl9pbml0PwpZZXMsIGl0IHNob3VsZCBiZSBf
X3JvX2FmdGVyX2luaXQuIFRoYW5rcy4KCj4gCj4gPiArc190aW1lX3QgZ2V0X3NfdGltZSh2b2lk
KQo+ID4gK3sKPiA+ICvCoMKgwqAgQlVHKCk7Cj4gPiArfQo+ID4gKwo+ID4gK2ludCByZXByb2dy
YW1fdGltZXIoc190aW1lX3QgdGltZW91dCkKPiA+ICt7Cj4gPiArwqDCoMKgIEJVRygpOwo+ID4g
K30KPiA+ICsKPiA+ICt2b2lkIHNlbmRfdGltZXJfZXZlbnQoc3RydWN0IHZjcHUgKnYpCj4gPiAr
ewo+ID4gK8KgwqDCoCBCVUcoKTsKPiA+ICt9Cj4gPiArCj4gPiArdm9pZCBkb21haW5fc2V0X3Rp
bWVfb2Zmc2V0KHN0cnVjdCBkb21haW4gKmQsIGludDY0X3QKPiA+IHRpbWVfb2Zmc2V0X3NlY29u
ZHMpCj4gPiArewo+ID4gK8KgwqDCoCBCVUcoKTsKPiA+ICt9Cj4gPiArCj4gPiArLyogc2h1dGRv
d24uYyAqLwo+ID4gKwo+ID4gK3ZvaWQgbWFjaGluZV9yZXN0YXJ0KHVuc2lnbmVkIGludCBkZWxh
eV9taWxsaXNlY3MpCj4gPiArewo+ID4gK8KgwqDCoCBCVUcoKTsKPiA+ICt9Cj4gPiArCj4gPiAr
dm9pZCBtYWNoaW5lX2hhbHQodm9pZCkKPiA+ICt7Cj4gPiArwqDCoMKgIEJVRygpOwo+ID4gK30K
PiA+ICsKPiA+ICsvKiB2bV9ldmVudC5jICovCj4gPiArCj4gPiArc3RydWN0IHZtX2V2ZW50X3N0
Owo+ID4gKwo+ID4gK3ZvaWQgdm1fZXZlbnRfZmlsbF9yZWdzKHN0cnVjdCB2bV9ldmVudF9zdCAq
cmVxKQo+ID4gK3sKPiA+ICvCoMKgwqAgQlVHKCk7Cj4gPiArfQo+ID4gKwo+ID4gK3ZvaWQgdm1f
ZXZlbnRfc2V0X3JlZ2lzdGVycyhzdHJ1Y3QgdmNwdSAqdiwgc3RydWN0IHZtX2V2ZW50X3N0Cj4g
PiAqcnNwKQo+ID4gK3sKPiA+ICvCoMKgwqAgQlVHKCk7Cj4gPiArfQo+ID4gKwo+ID4gK3ZvaWQg
dm1fZXZlbnRfbW9uaXRvcl9uZXh0X2ludGVycnVwdChzdHJ1Y3QgdmNwdSAqdikKPiA+ICt7Cj4g
PiArwqDCoMKgIC8qIE5vdCBzdXBwb3J0ZWQgb24gUklTQ1YuICovCj4gPiArfQo+ID4gKwo+ID4g
K3ZvaWQgdm1fZXZlbnRfcmVzZXRfdm10cmFjZShzdHJ1Y3QgdmNwdSAqdikKPiA+ICt7Cj4gPiAr
wqDCoMKgIC8qIE5vdCBzdXBwb3J0ZWQgb24gUklTQ1YuICovCj4gPiArfQo+IAo+IEp1ZGdpbmcg
ZnJvbSB0aGUgY29tbWVudHMgdGhlc2UgbGFzdCB0d28gYXJlIGluIHRoZWlyIGZpbmFsIHNoYXBl
Lgo+IFdvdWxkbid0IGl0IG1ha2Ugc2Vuc2UgdG8gcHV0IHRoZW0gaW4gdm1fZXZlbnQuYyByaWdo
dCBhd2F5IHRoZW4/IEFuZAo+IHRoZW4gcGVyaGFwcyB0b2dldGhlciB3aXRoIHRoZSB0d28gc3R1
YnM/ClllcywgaXQgbWFrZXMgc2Vuc2UuCgo+IAo+IFlldCB0aGVuIC0gQXJtIGdldHMgYXdheSB3
aXRob3V0IHZtX2V2ZW50X3Jlc2V0X3ZtdHJhY2UoKT8gQ2FuIHlvdQo+IGV4cGxhaW4gd2h5IHRo
ZSBzYW1lIGlzbid0IHRydWUgZm9yIFJJU0MtVj8KSXQgc2hvdWxkIHRydWUgYW5kIGZvciBSSVND
LVYuIEknbGwgbG9vayBhdCB3aGVuIHRoZXkgZ2V0cyBhd2F5CnZtX2V2ZW50X3Jlc2V0X3ZtdHJh
Y2UoKS4KCj4gCj4gPiBAQCAtMTEsMyArMTUsMjQgQEAgdm9pZCBkb190cmFwKHN0cnVjdCBjcHVf
dXNlcl9yZWdzICpjcHVfcmVncykKPiA+IMKgewo+ID4gwqDCoMKgwqAgZGllKCk7Cj4gPiDCoH0K
PiA+ICsKPiA+ICt2b2lkIHZjcHVfc2hvd19leGVjdXRpb25fc3RhdGUoc3RydWN0IHZjcHUgKnYp
Cj4gPiArewo+ID4gK8KgwqDCoCBhc3NlcnRfZmFpbGVkKCJuZWVkIHRvIGJlIGltcGxlbnRlZCIp
Owo+IAo+IEp1c3QgdG8gbWVudGlvbiBpdCBhZ2FpbiAtIHRoZSBleHBlY3RhdGlvbiBpcyB0aGF0
IGFsbCBpbnN0YW5jZXMgd2lsbAo+IHVzZSB0aGUgc2FtZSAiY2Fub25pY2FsIiBwYXR0ZXJuIGZv
ciBpZGVudGlmeWluZyB5ZXQtdG8tYmUtCj4gaW1wbGVtZW50ZWQKPiBmdW5jdGlvbnMuClN1cmUs
IEknbGwgdXBkYXRlIHVzaW5nIEJVR19PTigidW5pbXBsZW1lbnRlZCIpOwoKVGhhbmtzIGZvciBy
ZXZpZXcuCgp+IE9sZWtzaWkK



From xen-devel-bounces@lists.xenproject.org Tue Jan 23 17:34:21 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 23 Jan 2024 17:34:21 +0000
Received: from list by lists.xenproject.org with outflank-mailman.670579.1043469 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSKf9-0002Oc-OL; Tue, 23 Jan 2024 17:34:15 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 670579.1043469; Tue, 23 Jan 2024 17:34:15 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSKf9-0002OV-L1; Tue, 23 Jan 2024 17:34:15 +0000
Received: by outflank-mailman (input) for mailman id 670579;
 Tue, 23 Jan 2024 17:34:13 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=OrDF=JB=gmail.com=oleksii.kurochko@srs-se1.protection.inumbo.net>)
 id 1rSKf7-0002OL-Le
 for xen-devel@lists.xenproject.org; Tue, 23 Jan 2024 17:34:13 +0000
Received: from mail-ej1-x636.google.com (mail-ej1-x636.google.com
 [2a00:1450:4864:20::636])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 9f5db1fe-ba15-11ee-98f4-6d05b1d4d9a1;
 Tue, 23 Jan 2024 18:34:12 +0100 (CET)
Received: by mail-ej1-x636.google.com with SMTP id
 a640c23a62f3a-a2c179aa5c4so486213166b.0
 for <xen-devel@lists.xenproject.org>; Tue, 23 Jan 2024 09:34:12 -0800 (PST)
Received: from [192.168.206.239] ([94.75.70.14])
 by smtp.gmail.com with ESMTPSA id
 vv11-20020a170907a68b00b00a2ed3049045sm7523021ejc.154.2024.01.23.09.34.11
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 23 Jan 2024 09:34:11 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 9f5db1fe-ba15-11ee-98f4-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1706031252; x=1706636052; darn=lists.xenproject.org;
        h=mime-version:user-agent:content-transfer-encoding:references
         :in-reply-to:date:cc:to:from:subject:message-id:from:to:cc:subject
         :date:message-id:reply-to;
        bh=4a69tkkqYLroCdIj4cZ8RPqWRDmyrwCnROXudaIGKak=;
        b=fxsw1dNbMnmO0vtogeGKoy5vYUJ8X0LNOa9BuzwMtLFJ+bNby5I8VAuvjRu0CmNWwP
         rXtlMw1teQ1xT63vgJlsl/znWjcwqC2MdfxJMnDQ9PA08HPmDoGKIPOb2jp91QOxVAyb
         ZwSkSNdKBnorBo44ylwv9iqpovIdEQITxNaDfPpBQX5GpzUKZWi+szMYEjHE8zj52dbF
         gTCHP0tRumpXniQxOYg1lUJmYts9dYcFSRfjtz++yylDNba3EB0juuwzc4hL30f2PIUT
         XLod4tdqs0e0baxHnycK4CVJJb4fX7L9/Q/nxQqH+aBzKCBFlG1g9edyxWMzbWphzliP
         HiYQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706031252; x=1706636052;
        h=mime-version:user-agent:content-transfer-encoding:references
         :in-reply-to:date:cc:to:from:subject:message-id:x-gm-message-state
         :from:to:cc:subject:date:message-id:reply-to;
        bh=4a69tkkqYLroCdIj4cZ8RPqWRDmyrwCnROXudaIGKak=;
        b=iUR42XQYtY1r+tXyEIQQI6Nwulvm7J5TFwZ0FLuMUJevDF3fMh13E/lFJiJsIIa/WB
         atuLsvfhM1f04H7y4D9hdIZUMKEETDc26Pn07oz47NiQkDUJv7iFUpLkWjS4bxPDp+mz
         uFnLjM55WiUXNaWBUHxpjMjqmMNmLrflAdtF4L6Ryzcobxe79QARCHL23qJTcUyk+k7f
         gb5I3H4rQXlCMK9AJI8LRCWQi3GVuEdXXbcxUW9yb3+z1zg2Xtap4N/4jaS9d1NgToFx
         Sr0URcl8OL74teE0P5EU7yoocLucXEc5IBAc8+hbdBqcbtyh2NYCShOlO/fjaDako/Wo
         /PZA==
X-Gm-Message-State: AOJu0YzDzo7XxhaoJOpOeX6RSR19/JVmfjIECwh7AKh3+0eBNeYDme+X
	bmEHlzBiqwZsOTPoeKlZegj3F1BWcwYjbhnuhCH8vg4hUKtHbISu
X-Google-Smtp-Source: AGHT+IHno0Z1Eypbj0BVKcH3K3fta9rhcUVuKkgmN5/kdA594jGiBXFznaTvKyAVDnfpJpdnJNx1pw==
X-Received: by 2002:a17:906:d299:b0:a2f:7a77:5ace with SMTP id ay25-20020a170906d29900b00a2f7a775acemr126462ejb.3.1706031252073;
        Tue, 23 Jan 2024 09:34:12 -0800 (PST)
Message-ID: <01c72cbcf7b824d0c8b3b656e5c6afaa7b941481.camel@gmail.com>
Subject: Re: [PATCH v3 34/34] xen/README: add compiler and binutils versions
 for RISC-V64
From: Oleksii <oleksii.kurochko@gmail.com>
To: Jan Beulich <jbeulich@suse.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, George Dunlap
 <george.dunlap@citrix.com>, Julien Grall <julien@xen.org>, Stefano
 Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>,
 xen-devel@lists.xenproject.org
Date: Tue, 23 Jan 2024 19:34:11 +0200
In-Reply-To: <d04ec806-f0c1-4992-96ef-229f0ebb468a@suse.com>
References: <cover.1703255175.git.oleksii.kurochko@gmail.com>
	 <c4d579f02b431d6ac9366dee73ebd7ab74e44715.1703255175.git.oleksii.kurochko@gmail.com>
	 <88a7e5af-197b-41ef-b3c2-7d4f85a3cb85@suse.com>
	 <2a08cae2c6db049dc08db59f38c4e75573e37064.camel@gmail.com>
	 <d04ec806-f0c1-4992-96ef-229f0ebb468a@suse.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
User-Agent: Evolution 3.50.2 (3.50.2-1.fc39) 
MIME-Version: 1.0

On Tue, 2024-01-23 at 18:05 +0100, Jan Beulich wrote:
> On 23.01.2024 15:49, Oleksii wrote:
> > On Tue, 2024-01-23 at 12:22 +0100, Jan Beulich wrote:
> > > On 22.12.2023 16:13, Oleksii Kurochko wrote:
> > > > Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>
> > > > ---
> > > > =C2=A0Changes in V3:
> > > > =C2=A0 - new patch
> > > > ---
> > > > =C2=A0README | 3 +++
> > > > =C2=A01 file changed, 3 insertions(+)
> > > >=20
> > > > diff --git a/README b/README
> > > > index c8a108449e..1015a285c0 100644
> > > > --- a/README
> > > > +++ b/README
> > > > @@ -48,6 +48,9 @@ provided by your OS distributor:
> > > > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 - For ARM 64-bit:
> > > > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 - GCC 5.1 or later
> > > > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 - GNU Binutils 2.2=
4 or later
> > > > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 - For RISC-V 64-bit:
> > > > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 - GCC 13.2.1 or later
> > > > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 - GNU Binutils 2.40 or =
later
> > >=20
> > > That's pretty new. For gcc that's even newer than the newest
> > > release.
> > > If older versions really won't do, I don't think you can leave
> > > this
> > > unjustified (by having an empty description). Till now gcc 13.2
> > > has
> > > served me well, and iirc 13.1, 12.3, and 12.2 were fine, too.
> > It can be 12.2.0 for GCC and 2.39 for GNU Binutils. ( it is
> > toolchain
> > which is used by contrainer for RISC-V in Xen ). I'll update
> > versions
> > then.
> >=20
> > But could you please explain again why it can't be 13.2.1 ( it is a
> > version which I have in my distribution, so it is the reason why I
> > used
> > this version in README file ) ?
>=20
> 13.2.1 is a pre-release of 13.3.0. Only versions ending in .0 are
> upstream
> released versions these days. And I think it would be helpful if the
> minimum version also was the first in a major-version series, i.e.
> I'd
> generally prefer naming <N>.1.0 (or <N>.1 for simplicity; see Arm's
> entry).
> Of course if no such suitable version exists (because of being
> buggy), then
> specifying another one is okay. As to x.y.1 - nobody will then really
> know
> which version it is, because every distro will ship its own variant.
>=20
Thanks for explanation.
I'll drop the last number then.

~ Oleksii


From xen-devel-bounces@lists.xenproject.org Tue Jan 23 18:38:43 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 23 Jan 2024 18:38:43 +0000
Received: from list by lists.xenproject.org with outflank-mailman.670590.1043479 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSLfF-0006wM-C8; Tue, 23 Jan 2024 18:38:25 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 670590.1043479; Tue, 23 Jan 2024 18:38:25 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSLfF-0006wF-7G; Tue, 23 Jan 2024 18:38:25 +0000
Received: by outflank-mailman (input) for mailman id 670590;
 Tue, 23 Jan 2024 18:38:24 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rSLfE-0006up-Gy; Tue, 23 Jan 2024 18:38:24 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rSLfE-0005Du-BS; Tue, 23 Jan 2024 18:38:24 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rSLfD-0004C6-MT; Tue, 23 Jan 2024 18:38:23 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rSLfD-0005cB-Jy; Tue, 23 Jan 2024 18:38:23 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=jnwOaKOgthhNvKlSr3wIra0mOlZYve160yvdmzbNpHg=; b=DPQcP6r6BV7HCD9i3qLfl/z8m2
	2RKGVfFySIbzXJ4iWrr9nMID91/yng5mWmJuFuG/EPduoB8yiFBPHVPYg6DGjmv69Q6meXm14rMby
	J65FQH8+F/hC7nX/WwigF4Xp2v24x/chk5hkgN2l9rkUi+HWDX/WyUgdEocZJWkn/e3Q=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184436-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [xen-unstable-smoke test] 184436: tolerable all pass - PUSHED
X-Osstest-Failures:
    xen-unstable-smoke:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    xen-unstable-smoke:test-arm64-arm64-xl-xsm:migrate-support-check:fail:nonblocking
    xen-unstable-smoke:test-arm64-arm64-xl-xsm:saverestore-support-check:fail:nonblocking
    xen-unstable-smoke:test-armhf-armhf-xl:migrate-support-check:fail:nonblocking
    xen-unstable-smoke:test-armhf-armhf-xl:saverestore-support-check:fail:nonblocking
X-Osstest-Versions-This:
    xen=bbf7d6acd395312749d6c496b2dbfa9d444a0d46
X-Osstest-Versions-That:
    xen=f67bddf3bccd99a5fee968c3b3f288db6a57d3be
From: osstest service owner <osstest-admin@xenproject.org>
Date: Tue, 23 Jan 2024 18:38:23 +0000

flight 184436 xen-unstable-smoke real [real]
http://logs.test-lab.xenproject.org/osstest/logs/184436/

Failures :-/ but no regressions.

Tests which did not succeed, but are not blocking:
 test-amd64-amd64-libvirt     15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-xsm      15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-xsm      16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl          15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          16 saverestore-support-check    fail   never pass

version targeted for testing:
 xen                  bbf7d6acd395312749d6c496b2dbfa9d444a0d46
baseline version:
 xen                  f67bddf3bccd99a5fee968c3b3f288db6a57d3be

Last test of basis   184433  2024-01-23 12:03:45 Z    0 days
Testing same since   184436  2024-01-23 15:00:25 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Jan Beulich <jbeulich@suse.com>
  Oleksii Kurochko <oleksii.kurochko@gmail.com>

jobs:
 build-arm64-xsm                                              pass    
 build-amd64                                                  pass    
 build-armhf                                                  pass    
 build-amd64-libvirt                                          pass    
 test-armhf-armhf-xl                                          pass    
 test-arm64-arm64-xl-xsm                                      pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64                    pass    
 test-amd64-amd64-libvirt                                     pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Pushing revision :

To xenbits.xen.org:/home/xen/git/xen.git
   f67bddf3bc..bbf7d6acd3  bbf7d6acd395312749d6c496b2dbfa9d444a0d46 -> smoke


From xen-devel-bounces@lists.xenproject.org Tue Jan 23 20:49:44 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 23 Jan 2024 20:49:44 +0000
Received: from list by lists.xenproject.org with outflank-mailman.670598.1043490 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSNi6-0007sJ-Ip; Tue, 23 Jan 2024 20:49:30 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 670598.1043490; Tue, 23 Jan 2024 20:49:30 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSNi6-0007sC-Ec; Tue, 23 Jan 2024 20:49:30 +0000
Received: by outflank-mailman (input) for mailman id 670598;
 Tue, 23 Jan 2024 20:49:28 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rSNi4-0007s2-RI; Tue, 23 Jan 2024 20:49:28 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rSNi4-0007bv-PR; Tue, 23 Jan 2024 20:49:28 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rSNi4-0001xl-7O; Tue, 23 Jan 2024 20:49:28 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rSNi4-0008J0-6o; Tue, 23 Jan 2024 20:49:28 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=hrZaMBguDiyZFKjCfYLdATtk4qTY51xCvcpw9shODIA=; b=IdYAE0/dnfuvq0BS2kNN2H9+ho
	o1q3LHbGQ6XRwa0jJmXtLUOFGJuCrm2stuWPC50k9Wlpj2HgYt/DZSqiLdXCYhyDH2AOXHPw+p17q
	iyxhkXIF6HJtke6vyioF098tzENOAwXoJZ6XVAMG/tx+3uBPQ1Ff1ISw9L4AqwMi3OFw=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184438-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [ovmf test] 184438: all pass - PUSHED
X-Osstest-Versions-This:
    ovmf=d97f3a1d80fc4880da9726d9a5d7504d3c31da70
X-Osstest-Versions-That:
    ovmf=313f9f01552227138e08a7a7f44be48e5ba20a99
From: osstest service owner <osstest-admin@xenproject.org>
Date: Tue, 23 Jan 2024 20:49:28 +0000

flight 184438 ovmf real [real]
http://logs.test-lab.xenproject.org/osstest/logs/184438/

Perfect :-)
All tests in this flight passed as required
version targeted for testing:
 ovmf                 d97f3a1d80fc4880da9726d9a5d7504d3c31da70
baseline version:
 ovmf                 313f9f01552227138e08a7a7f44be48e5ba20a99

Last test of basis   184425  2024-01-22 15:42:46 Z    1 days
Testing same since   184438  2024-01-23 16:11:23 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Joey Vagedes <joey.vagedes@gmail.com>

jobs:
 build-amd64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-amd64-amd64-xl-qemuu-ovmf-amd64                         pass    
 test-amd64-i386-xl-qemuu-ovmf-amd64                          pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Pushing revision :

To xenbits.xen.org:/home/xen/git/osstest/ovmf.git
   313f9f0155..d97f3a1d80  d97f3a1d80fc4880da9726d9a5d7504d3c31da70 -> xen-tested-master


From xen-devel-bounces@lists.xenproject.org Tue Jan 23 21:00:03 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 23 Jan 2024 21:00:03 +0000
Received: from list by lists.xenproject.org with outflank-mailman.670605.1043499 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSNsE-0001Cz-Dk; Tue, 23 Jan 2024 20:59:58 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 670605.1043499; Tue, 23 Jan 2024 20:59:58 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSNsE-0001Cs-Aj; Tue, 23 Jan 2024 20:59:58 +0000
Received: by outflank-mailman (input) for mailman id 670605;
 Tue, 23 Jan 2024 20:59:57 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=agvZ=JB=citrix.com=prvs=745b95a7f=Andrew.Cooper3@srs-se1.protection.inumbo.net>)
 id 1rSNsD-0001Cm-9i
 for xen-devel@lists.xenproject.org; Tue, 23 Jan 2024 20:59:57 +0000
Received: from esa2.hc3370-68.iphmx.com (esa2.hc3370-68.iphmx.com
 [216.71.145.153]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 5a7445ca-ba32-11ee-98f5-6d05b1d4d9a1;
 Tue, 23 Jan 2024 21:59:55 +0100 (CET)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 5a7445ca-ba32-11ee-98f5-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple;
  d=citrix.com; s=securemail; t=1706043594;
  h=from:to:cc:subject:date:message-id:mime-version:
   content-transfer-encoding;
  bh=XYENZ7mntZ4BXqj5Lh3OmMQDbH2kjvI/Djnjt3ZMeu0=;
  b=SXiJlqP6tlbIshz7Gsd0fUNKbXq1yGjOB7jdUdpQALwJNz2QUBte4ZeL
   L123C1NaTb8AZjiD9TEqQRwGelhj6xRtLCrBDxj57QVpa/GG639vNYpxt
   b6FtwW8Uv0nvX7FwwTKySVY3+LDMkO5joyxqPB/A6iTV6WXvAaFfSHkWD
   c=;
X-CSE-ConnectionGUID: A5MugA1pSxKNAiNoeJMjkg==
X-CSE-MsgGUID: PoWjPfzWQOyHw2wNCU/UvQ==
Authentication-Results: esa2.hc3370-68.iphmx.com; dkim=none (message not signed) header.i=none
X-SBRS: 4.0
X-MesageID: 129487174
X-Ironport-Server: esa2.hc3370-68.iphmx.com
X-Remote-IP: 162.221.159.70
X-Policy: $RELAYED
X-ThreatScanner-Verdict: Negative
IronPort-Data: A9a23:FSul4a1Zmia99i6POvbD5Zdxkn2cJEfYwER7XKvMYLTBsI5bpzZRy
 DEdWTjSaPqCYjHzetEja9vgpxgD6MSGm4UwSgBtpC1hF35El5HIVI+TRqvS04F+DeWYFR46s
 J9OAjXkBJppJpMJjk71atANlVEliOfQAOK6UbaYUsxIbVcMYD87jh5+kPIOjIdtgNyoayuAo
 tq3qMDEULOf82cc3lk8teTb9XuDgNyo4GlE5gVkPqgX1LPjvyJ94Kw3dPnZw0TQGuG4LsbiL
 87fwbew+H/u/htFIrtJRZ6iLyXm6paLVeS/oiI+t5qK23CulQRrukoPD9IOaF8/ttm8t4sZJ
 OOhF3CHYVxB0qXkwIzxWvTDes10FfUuFLTveRBTvSEPpqFvnrSFL/hGVSkL0YMkFulfKDxr6
 PMxcSg2fjOlruOQx7+Zb+tviZF2RCXrFNt3VnBIyDjYCbAtQIzZQrWM7thdtNsyrpkQR7CEP
 ZNfMGc+KkuYC/FMEg5/5JYWteGknHTgNRZfr0qYv/Ef6GnP1g1hlrPqNbI5f/TTH5QJzhnB+
 T6uE2LROhYlNuSR2wW81WOMmbXQuwjGH78MLejtnhJtqALKnTFCYPEMbnOrrP/8hkOgVtZ3L
 00P5jFovaU07FasTNT2Q1u/unHsljw2VsdUEuY6wBqQ0aeS6AGcbkAbShZRZdpgs9U5LQHGz
 XfQwYmvX2Y29uTIGDTCrt94sA9eJwA8cEofagZdVTAVwP/Koac0gzDqTNVsRfvdYsLOJd3g/
 9ybhHFh3+tL1JJahvjTwLzRv967SnH0ou8JCub/BDvNAvtRPtLNWmBRwQGzAQx8BIiYVEKdm
 3MPhtKT6usDZbnUy3TTGL5QRujwu6jdWNE5vbKIN8B/nwlBBlb5JdwAiN2ADBkB3jk4lc/BP
 xaI5FI5CG57N3q2d65nC7+M5zAR5fG4T7zND6mEBueil7AtLGdrCgkyPx/Pt40s+WBw+ZwC1
 WCzK5n0XS9EWP06lVJbhY41iNcW+8z3/kuLLbiT8vht+eP2iKK9IVvdDGazUw==
IronPort-HdrOrdr: A9a23:oJG7qapmlFrTp3nY/1xfUjYaV5oneYIsimQD101hICG8cqSj+f
 xG+85rsiMc6QxhPE3I9urhBEDtex/hHP1OkOws1NWZLWrbUQKTRekIh+bfKlXbakvDH4VmtJ
 uIHZIQNDSJNykZsfrH
X-Talos-CUID: 9a23:SgiSf2N8Al33fe5DcXRC6UE9Q9geYl775Xb2JEKaLGRqR+jA
X-Talos-MUID: =?us-ascii?q?9a23=3AIabMegyCp4g35AjVp50/b0oj9IKaqJypN0I1n4c?=
 =?us-ascii?q?5gu6VFTMqJBG2sXOKXLZyfw=3D=3D?=
X-IronPort-AV: E=Sophos;i="6.05,215,1701147600"; 
   d="scan'208";a="129487174"
From: Andrew Cooper <andrew.cooper3@citrix.com>
To: Xen-devel <xen-devel@lists.xenproject.org>
CC: Andrew Cooper <andrew.cooper3@citrix.com>, Jan Beulich
	<JBeulich@suse.com>, =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?=
	<roger.pau@citrix.com>, Wei Liu <wl@xen.org>
Subject: [PATCH] x86/ucode: Fix stability of the Raw CPU Policy rescan
Date: Tue, 23 Jan 2024 20:59:48 +0000
Message-ID: <20240123205948.1782556-1-andrew.cooper3@citrix.com>
X-Mailer: git-send-email 2.30.2
MIME-Version: 1.0
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit

Always run microcode_update_helper() on the BSP, so the the updated Raw CPU
policy doesn't get non-BSP topology details included.

Have calculate_raw_cpu_policy() clear the instantanious XSTATE sizes.  The
value XCR0 | MSR_XSS had when we scanned the policy isn't terribly interesting
to report.

When CPUID Masking is active, it affects CPUID instructions issued by Xen
too.  Transiently disable masking to get a clean scan.

Fixes: 694d79ed5aac ("x86/ucode: Refresh raw CPU policy after microcode load")
Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
---
CC: Jan Beulich <JBeulich@suse.com>
CC: Roger Pau Monné <roger.pau@citrix.com>
CC: Wei Liu <wl@xen.org>

I debased adding named fields for the instantious xstate sizes, but decided
not to.  There's no (other) case where I can see them reasonably being used.
---
 xen/arch/x86/cpu-policy.c         |  7 +++++++
 xen/arch/x86/cpu/microcode/core.c | 20 +++++++++++++++++---
 2 files changed, 24 insertions(+), 3 deletions(-)

diff --git a/xen/arch/x86/cpu-policy.c b/xen/arch/x86/cpu-policy.c
index 76efb050edf7..82b10de03efd 100644
--- a/xen/arch/x86/cpu-policy.c
+++ b/xen/arch/x86/cpu-policy.c
@@ -353,6 +353,13 @@ void calculate_raw_cpu_policy(void)
     /* Nothing good will come from Xen and libx86 disagreeing on vendor. */
     ASSERT(p->x86_vendor == boot_cpu_data.x86_vendor);
 
+    /*
+     * Clear the truly dynamic fields.  These vary with the in-context XCR0
+     * and MSR_XSS, and aren't interesting fields in the raw policy.
+     */
+    p->xstate.raw[0].ebx = 0;
+    p->xstate.raw[1].ebx = 0;
+
     /* 0x000000ce  MSR_INTEL_PLATFORM_INFO */
     /* Was already added by probe_cpuid_faulting() */
 }
diff --git a/xen/arch/x86/cpu/microcode/core.c b/xen/arch/x86/cpu/microcode/core.c
index 120a11d5036d..6f95f7bbe223 100644
--- a/xen/arch/x86/cpu/microcode/core.c
+++ b/xen/arch/x86/cpu/microcode/core.c
@@ -680,8 +680,18 @@ static long cf_check microcode_update_helper(void *data)
         microcode_update_cache(patch);
         spin_unlock(&microcode_mutex);
 
-        /* Refresh the raw CPU policy, in case the features have changed. */
+        /*
+         * Refresh the raw CPU policy, in case the features have changed.
+         * Disable CPUID masking if in use, to avoid having current's
+         * cpu_policy affect the rescan.
+         */
+	if ( ctxt_switch_masking )
+            alternative_vcall(ctxt_switch_masking, NULL);
+
         calculate_raw_cpu_policy();
+
+	if ( ctxt_switch_masking )
+            alternative_vcall(ctxt_switch_masking, current);
     }
     else
         microcode_free_patch(patch);
@@ -721,8 +731,12 @@ int microcode_update(XEN_GUEST_HANDLE(const_void) buf, unsigned long len)
     }
     buffer->len = len;
 
-    return continue_hypercall_on_cpu(smp_processor_id(),
-                                     microcode_update_helper, buffer);
+    /*
+     * Always queue microcode_update_helper() on CPU0.  Most of the logic
+     * won't care, but the update of the Raw CPU policy wants to (re)run on
+     * the BSP.
+     */
+    return continue_hypercall_on_cpu(0, microcode_update_helper, buffer);
 }
 
 static int __init cf_check microcode_init(void)
-- 
2.30.2



From xen-devel-bounces@lists.xenproject.org Tue Jan 23 21:32:49 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 23 Jan 2024 21:32:49 +0000
Received: from list by lists.xenproject.org with outflank-mailman.670611.1043509 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSONu-0006OO-Q2; Tue, 23 Jan 2024 21:32:42 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 670611.1043509; Tue, 23 Jan 2024 21:32:42 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSONu-0006OH-Mu; Tue, 23 Jan 2024 21:32:42 +0000
Received: by outflank-mailman (input) for mailman id 670611;
 Tue, 23 Jan 2024 21:32:41 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=1h7C=JB=chromium.org=keescook@srs-se1.protection.inumbo.net>)
 id 1rSONt-0006OB-2W
 for xen-devel@lists.xenproject.org; Tue, 23 Jan 2024 21:32:41 +0000
Received: from mail-pl1-x62c.google.com (mail-pl1-x62c.google.com
 [2607:f8b0:4864:20::62c])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id ed67a1a5-ba36-11ee-9b0f-b553b5be7939;
 Tue, 23 Jan 2024 22:32:37 +0100 (CET)
Received: by mail-pl1-x62c.google.com with SMTP id
 d9443c01a7336-1d74045c463so18846825ad.3
 for <xen-devel@lists.xenproject.org>; Tue, 23 Jan 2024 13:32:37 -0800 (PST)
Received: from www.outflux.net ([198.0.35.241])
 by smtp.gmail.com with ESMTPSA id
 g8-20020a170902740800b001d714ccf7b3sm8100220pll.180.2024.01.23.13.32.35
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 23 Jan 2024 13:32:35 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: ed67a1a5-ba36-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=chromium.org; s=google; t=1706045556; x=1706650356; darn=lists.xenproject.org;
        h=in-reply-to:content-disposition:mime-version:references:message-id
         :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to;
        bh=swQh+tXC7wjzygjmlvxoa7jnM24RYNaNqlf/2tnlFpM=;
        b=YyTLJJi+lkIfGK++NhomAsr86JNL7Kemr2LURxY93gmh/UbbPqD+NI1nIrt7mFb/aX
         E6VPZOiQiMcr/mDRU9UGrAKqLvK8Dmvjor3IJzUJkiBDH8hRh/0WEgFcLkWmfDgeoEpe
         NLij+hHRoU8afZZ63222CMEyhTtCkXaKVxvp0=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706045556; x=1706650356;
        h=in-reply-to:content-disposition:mime-version:references:message-id
         :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to;
        bh=swQh+tXC7wjzygjmlvxoa7jnM24RYNaNqlf/2tnlFpM=;
        b=jIiYdZ8cUXPDZAx31Vc/2+1932REC2o3bc8SVRca1YDHKmo7VJXROb0K/YQFsyaC7q
         q4YHi5HbcUIJKaZ3oBfB+5weip9CoTn8zF7yPO7iwcY6G51hTqQkJc7CV5QqQIHtATYY
         0S8sH2w+JH+oZwHHh2vJGppmE3sVRjw1xJ3A8glxxHUHi7F4CjVwoJESftAn19papibG
         v6rX82kqdoY67EFSGpksuShpaynbx96VEx4wjv6P34g5bREDnLGI8OV3wgO/ezSGlzjl
         i59aGAAg2Lw1PON4Cyryunj96mlgTW/e8NSl1Z19HTD0yP/Z2clUJoAC247FKg7UPFXT
         VLWg==
X-Gm-Message-State: AOJu0YyYsCrzefudQKxWh0Zh1vC8onLiVAbhGhlE5U1dlreYMaczLZz3
	AxwRcFoEQwIvsiz82gd+4O5ibV9vXHyC29UO7v5V4V73nCwGMumWwLsxhf2Ywg==
X-Google-Smtp-Source: AGHT+IEQgobK3CRi+ljenTCG6shvI0FXYyD3FQGn2ZQQGUseg7yif9UwvyOavRLNcvr02zSwCtZc7A==
X-Received: by 2002:a17:903:120d:b0:1d5:7316:c9fb with SMTP id l13-20020a170903120d00b001d57316c9fbmr3866864plh.37.1706045556284;
        Tue, 23 Jan 2024 13:32:36 -0800 (PST)
Date: Tue, 23 Jan 2024 13:32:35 -0800
From: Kees Cook <keescook@chromium.org>
To: Jan Beulich <jbeulich@suse.com>
Cc: Wei Liu <wei.liu@kernel.org>, Paul Durrant <paul@xen.org>,
	"David S. Miller" <davem@davemloft.net>,
	Eric Dumazet <edumazet@google.com>,
	Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>,
	xen-devel@lists.xenproject.org, netdev@vger.kernel.org,
	"Gustavo A. R. Silva" <gustavoars@kernel.org>,
	Bill Wendling <morbo@google.com>,
	Justin Stitt <justinstitt@google.com>, linux-kernel@vger.kernel.org,
	linux-hardening@vger.kernel.org
Subject: Re: [PATCH 80/82] xen-netback: Refactor intentional wrap-around test
Message-ID: <202401231331.0BD2925D4E@keescook>
References: <20240122235208.work.748-kees@kernel.org>
 <20240123002814.1396804-80-keescook@chromium.org>
 <35ff4947-7863-40da-b0e7-3b84e17c6163@suse.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <35ff4947-7863-40da-b0e7-3b84e17c6163@suse.com>

On Tue, Jan 23, 2024 at 08:55:44AM +0100, Jan Beulich wrote:
> On 23.01.2024 01:27, Kees Cook wrote:
> > --- a/drivers/net/xen-netback/hash.c
> > +++ b/drivers/net/xen-netback/hash.c
> > @@ -345,7 +345,7 @@ u32 xenvif_set_hash_mapping(struct xenvif *vif, u32 gref, u32 len,
> >  		.flags = GNTCOPY_source_gref
> >  	}};
> >  
> > -	if ((off + len < off) || (off + len > vif->hash.size) ||
> > +	if ((add_would_overflow(off, len)) || (off + len > vif->hash.size) ||
> 
> I'm not maintainer of this code, but if I was I would ask that the
> excess parentheses be removed, to improve readability.

Good call. I will adjust that. Thanks!

-Kees

-- 
Kees Cook


From xen-devel-bounces@lists.xenproject.org Tue Jan 23 22:35:40 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 23 Jan 2024 22:35:40 +0000
Received: from list by lists.xenproject.org with outflank-mailman.670616.1043519 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSPMc-0006JL-Ae; Tue, 23 Jan 2024 22:35:26 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 670616.1043519; Tue, 23 Jan 2024 22:35:26 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSPMc-0006JE-7a; Tue, 23 Jan 2024 22:35:26 +0000
Received: by outflank-mailman (input) for mailman id 670616;
 Tue, 23 Jan 2024 22:35:25 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=yj1f=JB=kernel.org=sstabellini@srs-se1.protection.inumbo.net>)
 id 1rSPMb-0006J0-Lj
 for xen-devel@lists.xenproject.org; Tue, 23 Jan 2024 22:35:25 +0000
Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id b1a4be37-ba3f-11ee-98f5-6d05b1d4d9a1;
 Tue, 23 Jan 2024 23:35:23 +0100 (CET)
Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58])
 by dfw.source.kernel.org (Postfix) with ESMTP id 77D1561F7E;
 Tue, 23 Jan 2024 22:35:21 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 4A862C433F1;
 Tue, 23 Jan 2024 22:35:20 +0000 (UTC)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: b1a4be37-ba3f-11ee-98f5-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
	s=k20201202; t=1706049321;
	bh=KSrO2rZ+3ODRCauXR6xbnnuySM+RGFulujTdvDNhoVA=;
	h=Date:From:To:cc:Subject:In-Reply-To:References:From;
	b=NVtMuyBPWUw2oVO9uvbxNX9vtW8Y0invMKxbaER5u3LCSNrQX1Zzz5ufVB0YoXo2g
	 Cm82Q0NEuBc1UYAm1CT32IrJW8/TZyNvUFYJrmhZCLkExm4uhWhhavNqIyTzQySq4X
	 Y25AZyYvgOjPnfkXiAjlLH+idcZ92bYUH/TV0t24s/mY8rI91suqsJQQvTxEkFO7eF
	 FBFG+VI3YedBm8taxjLjomKSTE0O0xr4Y2oZmnvwIZi93ZMjnM3R6KY8bmpIymkKTt
	 WzT7P9GhzytZcuypnsj7IMHRJRKtRBltEmccaK+KFj9UR+OeITdaqy72RJP3N5K+Eo
	 v/ix/ounpDrFw==
Date: Tue, 23 Jan 2024 14:35:19 -0800 (PST)
From: Stefano Stabellini <sstabellini@kernel.org>
X-X-Sender: sstabellini@ubuntu-linux-20-04-desktop
To: Jan Beulich <jbeulich@suse.com>
cc: Stefano Stabellini <sstabellini@kernel.org>, 
    Kelly Choi <kelly.choi@cloud.com>, committers@xenproject.org, 
    advisory-board@lists.xenproject.org, xen-devel@lists.xenproject.org
Subject: Re: Community Process Group - Proposal
In-Reply-To: <ecddb385-fc87-412b-a956-0a08237cc120@suse.com>
Message-ID: <alpine.DEB.2.22.394.2401231435140.2287888@ubuntu-linux-20-04-desktop>
References: <CAO-mL=yvVWjnOHSFSqcrknoXOqk-N3JY76qObQnzftrkmsq6xw@mail.gmail.com> <5309e7d3-7b3c-4522-99dc-bbd7734aeb34@suse.com> <alpine.DEB.2.22.394.2401221434440.2287888@ubuntu-linux-20-04-desktop> <ecddb385-fc87-412b-a956-0a08237cc120@suse.com>
User-Agent: Alpine 2.22 (DEB 394 2020-01-19)
MIME-Version: 1.0
Content-Type: text/plain; charset=US-ASCII

On Tue, 23 Jan 2024, Jan Beulich wrote:
> On 22.01.2024 23:47, Stefano Stabellini wrote:
> > On Mon, 22 Jan 2024, Jan Beulich wrote:
> >> What definitely needs clarifying is what "review" is: Are R-b tags
> >> counted, or is it the number of replies sent commenting on patches?
> > 
> > Yes, I think this needs to be clarified. I would say Reviewed-by tags.
> 
> Which may end up unfair. It's not uncommon for one person to do a lot
> of review on a patch, and for someone else to then ack the final
> version that goes in. In the end this is then no different from basing
> the decision on simple numbers, without regard to actual (potentially
> heavily differing) effort behind each individual instance.

I had thought about the case you describe too. This is why it is stated
as "maintainers with >= 20 reviews in the last 2 releases". So it
requires for the person to also be a maintainer. The bar to become a
maintainer is already pretty high. Random individuals that subscribe to
xen-devel and start replying Reviewed-by to every patch would be
excluded.

On the other hand, it would not account for reviews done by
non-maintainers. However, non-maintainers are likely to be contributors
so they would probably fall within the other category.


From xen-devel-bounces@lists.xenproject.org Tue Jan 23 22:52:44 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 23 Jan 2024 22:52:44 +0000
Received: from list by lists.xenproject.org with outflank-mailman.670623.1043532 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSPdG-0000z6-Qy; Tue, 23 Jan 2024 22:52:38 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 670623.1043532; Tue, 23 Jan 2024 22:52:38 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSPdG-0000yz-O5; Tue, 23 Jan 2024 22:52:38 +0000
Received: by outflank-mailman (input) for mailman id 670623;
 Tue, 23 Jan 2024 22:52:37 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=Z3da=JB=m5p.com=ehem@srs-se1.protection.inumbo.net>)
 id 1rSPdF-0000yt-M7
 for xen-devel@lists.xen.org; Tue, 23 Jan 2024 22:52:37 +0000
Received: from mailhost.m5p.com (mailhost.m5p.com [74.104.188.4])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 18b543ee-ba42-11ee-98f5-6d05b1d4d9a1;
 Tue, 23 Jan 2024 23:52:35 +0100 (CET)
Received: from m5p.com (mailhost.m5p.com [IPv6:2001:470:1f07:15ff:0:0:0:f7])
 by mailhost.m5p.com (8.17.1/8.15.2) with ESMTPS id 40NMqLAu068160
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NO);
 Tue, 23 Jan 2024 17:52:27 -0500 (EST) (envelope-from ehem@m5p.com)
Received: (from ehem@localhost)
 by m5p.com (8.17.1/8.15.2/Submit) id 40NMqKTW068159;
 Tue, 23 Jan 2024 14:52:20 -0800 (PST) (envelope-from ehem)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 18b543ee-ba42-11ee-98f5-6d05b1d4d9a1
Date: Tue, 23 Jan 2024 14:52:20 -0800
From: Elliott Mitchell <ehem+xen@m5p.com>
To: Jan Beulich <jbeulich@suse.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, xen-devel@lists.xen.org
Subject: Re: Thoughts on current Xen EDAC/MCE situation
Message-ID: <ZbBDJGKqTU9rdpgD@mattapan.m5p.com>
References: <Za7Vr+Rb25y/+MSy@mattapan.m5p.com>
 <111f5551-70fa-4ded-a62a-e0aa967b3c29@suse.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <111f5551-70fa-4ded-a62a-e0aa967b3c29@suse.com>
X-Spam-Status: No, score=0.0 required=10.0 tests=KHOP_HELO_FCRDNS
	autolearn=unavailable autolearn_force=no version=4.0.0
X-Spam-Checker-Version: SpamAssassin 4.0.0 (2022-12-14) on mattapan.m5p.com

On Tue, Jan 23, 2024 at 11:44:03AM +0100, Jan Beulich wrote:
> On 22.01.2024 21:53, Elliott Mitchell wrote:
> 
> > I find the present handling of MCE in Xen an odd choice.  Having Xen do
> > most of the handling of MCE events is a behavior matching a traditional
> > stand-alone hypervisor.  Yet Xen was originally pushing any task not
> > requiring hypervisor action onto Domain 0.
> 
> Not exactly. Xen in particular deals with all of CPU and all of memory.
> Dom0 may be unaware of the full amount of CPUs in the system, nor the
> full memory map (without resorting to interfaces specifically making
> that information available, but not to be used for Dom0 kernel's own
> acting as a kernel).

Why would this be an issue?

I would expect the handling to be roughly:  NMI -> Xen; Xen schedules a
Dom0 vCPU which is eligible to run on the pCPU onto the pCPU; Dom0
examines registers/MSRs, Dom0 then issues a hypercall to Xen telling
Xen how to resolve the issue (no action, fix memory contents, kill page).

Ideally there would be an idle Dom0 vCPU, but interrupting a busy vCPU
would be viable.  It would even be reasonable to ignore affinity and
grab any Dom0 vCPU.

Dom0 has 2 purposes for the address.  First, to pass it back to Xen.
Second, to report it to a system administrator so they could restart the
system with that address marked as bad.  Dom0 wouldn't care whether the
address was directly accessible to it or not.

The proposed hypercall should report back what was effected by a UE
event.  A given site might have a policy that if $some_domain is hit by a
UE, everything is restarted.  Meanwhile Dom0 or Xen being the winner
could deserve urgent action.


> > MCE seems a perfect match for sharing responsibility with Domain 0.
> > Domain 0 needs to know about any MCE event, this is where system
> > administrators will expect to find logs.  In fact, if the event is a
> > Correctable Error, then *only* Domain 0 needs to know.  For a CE, Xen
> > may need no action at all (an implementation could need help) and
> > the effected domain would need no action.  It is strictly for
> > Uncorrectable Errors that action beside logging is needed.
> > 
> > For a UE memory error, the best approach might be for Domain 0 to decode
> > the error.  Once Domain 0 determines it is UE, invoke a hypercall to pass
> > the GPFN to Xen.
> 
> What GPFN? Decoding can only possibly find machine addresses in what
> hardware supplies.

I may have chosen the wrong term here.

> > The key advantage of this approach is it makes MCE handling act very
> > similar to MCE handling without Xen.
> 
> While that's true, you're completely omitting all implications towards
> what it means to hand off most handling to Dom0. While it is perhaps
> possible to make Linux'es chipset-specific EDAC drivers Xen PV aware,
> it might be yet harder to achieve the same in a PVH Dom0.

Much of it *doesn't* need to be Xen-aware.  There needs to be some
mechanism to allow Dom0 to access special MSRs, beyond that Xen would
only need to interpose between decoding and handling.

> >  Documentation about how MCEs are
> > reported/decoded would apply equally to Xen.  Another rather important
> > issue is it means less maintenance work to keep MCE handling working with
> > cutting-edge hardware.  I've noticed one vendor being sluggish about
> > getting patches into Linux and I fear similar issues may apply more
> > severely to Xen.
> 
> With all of your suggestions: Who do you think is going to do all of
> the work involved here (properly writing down a design, to take care
> of all known difficulties, and then actually implement everything)?
> We're already short on people, as you're very likely aware.

Right now I'm mostly want to know what general course of action is
planned/desired.

Several of the Linux x86 EDAC drivers have been adding a check for a
hypervisor and refusing to load if one is present.  The stated reason
being to get rid of a message.  Problem is this is being scattered into
several places and will make paravirtualized handling *much* harder.  As
such taking action to ensure this is in a single location is kind of
urgent now.

I'm kind of wonder if this is quietly being encouraged by a Redmond, WA
company to poison the well for other hypervisors...

(the OS wars are over, we're now into the hypervisor wars)


-- 
(\___(\___(\______          --=> 8-) EHM <=--          ______/)___/)___/)
 \BS (    |         ehem+sigmsg@m5p.com  PGP 87145445         |    )   /
  \_CS\   |  _____  -O #include <stddisclaimer.h> O-   _____  |   /  _/
8A19\___\_|_/58D2 7E3D DDF4 7BA6 <-PGP-> 41D1 B375 37D0 8714\_|_/___/5445




From xen-devel-bounces@lists.xenproject.org Tue Jan 23 23:30:14 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 23 Jan 2024 23:30:14 +0000
Received: from list by lists.xenproject.org with outflank-mailman.670629.1043542 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSQDX-0006Nr-K9; Tue, 23 Jan 2024 23:30:07 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 670629.1043542; Tue, 23 Jan 2024 23:30:07 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSQDX-0006Nj-GC; Tue, 23 Jan 2024 23:30:07 +0000
Received: by outflank-mailman (input) for mailman id 670629;
 Tue, 23 Jan 2024 23:30:05 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rSQDV-0006C1-Pr; Tue, 23 Jan 2024 23:30:05 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rSQDV-0002G1-IA; Tue, 23 Jan 2024 23:30:05 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rSQDV-0000M3-3p; Tue, 23 Jan 2024 23:30:05 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rSQDV-0001nb-3P; Tue, 23 Jan 2024 23:30:05 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=ZWGeQX2dReiYVVuUW5RBatwzLq3Lj+MzYmmAG6zJiig=; b=VDOIOcnmuw70EbyAz6sFMECSno
	CWL0I2Fs8gJ9YD3kJiVFhw/RS5MNVBt/oMK1hrLzOx7kO78E+SrkxruSkNLiLMu2k9/bIgS60oyEw
	o7/dLcpNR/W8kusAkpqL+uH/aCJTagQ+2rIiIS7WNVdGC0YdzAg0BPGBNL/uRtygbzkg=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184440-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [xen-unstable-smoke test] 184440: tolerable all pass - PUSHED
X-Osstest-Failures:
    xen-unstable-smoke:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    xen-unstable-smoke:test-arm64-arm64-xl-xsm:migrate-support-check:fail:nonblocking
    xen-unstable-smoke:test-arm64-arm64-xl-xsm:saverestore-support-check:fail:nonblocking
    xen-unstable-smoke:test-armhf-armhf-xl:migrate-support-check:fail:nonblocking
    xen-unstable-smoke:test-armhf-armhf-xl:saverestore-support-check:fail:nonblocking
X-Osstest-Versions-This:
    xen=98ae35cab0e40e59963f9f58345bf378b9522d74
X-Osstest-Versions-That:
    xen=bbf7d6acd395312749d6c496b2dbfa9d444a0d46
From: osstest service owner <osstest-admin@xenproject.org>
Date: Tue, 23 Jan 2024 23:30:05 +0000

flight 184440 xen-unstable-smoke real [real]
http://logs.test-lab.xenproject.org/osstest/logs/184440/

Failures :-/ but no regressions.

Tests which did not succeed, but are not blocking:
 test-amd64-amd64-libvirt     15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-xsm      15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-xsm      16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl          15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          16 saverestore-support-check    fail   never pass

version targeted for testing:
 xen                  98ae35cab0e40e59963f9f58345bf378b9522d74
baseline version:
 xen                  bbf7d6acd395312749d6c496b2dbfa9d444a0d46

Last test of basis   184436  2024-01-23 15:00:25 Z    0 days
Testing same since   184440  2024-01-23 20:02:08 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Andrew Cooper <andrew.cooper3@citrix.com>

jobs:
 build-arm64-xsm                                              pass    
 build-amd64                                                  pass    
 build-armhf                                                  pass    
 build-amd64-libvirt                                          pass    
 test-armhf-armhf-xl                                          pass    
 test-arm64-arm64-xl-xsm                                      pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64                    pass    
 test-amd64-amd64-libvirt                                     pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Pushing revision :

To xenbits.xen.org:/home/xen/git/xen.git
   bbf7d6acd3..98ae35cab0  98ae35cab0e40e59963f9f58345bf378b9522d74 -> smoke


From xen-devel-bounces@lists.xenproject.org Tue Jan 23 23:39:13 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 23 Jan 2024 23:39:13 +0000
Received: from list by lists.xenproject.org with outflank-mailman.670636.1043551 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSQM8-0007FC-Dw; Tue, 23 Jan 2024 23:39:00 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 670636.1043551; Tue, 23 Jan 2024 23:39:00 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSQM8-0007F5-AW; Tue, 23 Jan 2024 23:39:00 +0000
Received: by outflank-mailman (input) for mailman id 670636;
 Tue, 23 Jan 2024 23:38:59 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rSQM6-0007Ev-WF; Tue, 23 Jan 2024 23:38:59 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rSQM6-0002Qh-Rw; Tue, 23 Jan 2024 23:38:58 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rSQM6-0000di-Db; Tue, 23 Jan 2024 23:38:58 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rSQM6-0001Wn-D3; Tue, 23 Jan 2024 23:38:58 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=IQOOe6EwbC0iwKptFSjogpCUXpHUCDVzgdlJvz05Km0=; b=zh6vKygS7sDW2t7zDCCe7DfK3I
	b7K7/iFncxiOioiuLG+ivS78r9MlXDSmbVwQpSoqgWLjakl6g8Q5LMiyVw8zfKWxQ8JSA/IG4jFWB
	34NdNjmn1hte16z1BWOFYi5OcXnEMRUhyVJccz+tbFJPm1C1X4X3/dL9W64UV5XJYNPU=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184441-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [ovmf test] 184441: all pass - PUSHED
X-Osstest-Versions-This:
    ovmf=417ebe6d1d6052b6cf023332da07558363d7fd08
X-Osstest-Versions-That:
    ovmf=d97f3a1d80fc4880da9726d9a5d7504d3c31da70
From: osstest service owner <osstest-admin@xenproject.org>
Date: Tue, 23 Jan 2024 23:38:58 +0000

flight 184441 ovmf real [real]
http://logs.test-lab.xenproject.org/osstest/logs/184441/

Perfect :-)
All tests in this flight passed as required
version targeted for testing:
 ovmf                 417ebe6d1d6052b6cf023332da07558363d7fd08
baseline version:
 ovmf                 d97f3a1d80fc4880da9726d9a5d7504d3c31da70

Last test of basis   184438  2024-01-23 16:11:23 Z    0 days
Testing same since   184441  2024-01-23 21:14:28 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Laszlo Ersek <lersek@redhat.com>
  levi.yun <yeoreum.yun@arm.com>
  Nhi Pham <nhi@os.amperecomputing.com>
  Suqiang Ren <suqiangx.ren@intel.com>

jobs:
 build-amd64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-amd64-amd64-xl-qemuu-ovmf-amd64                         pass    
 test-amd64-i386-xl-qemuu-ovmf-amd64                          pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Pushing revision :

To xenbits.xen.org:/home/xen/git/osstest/ovmf.git
   d97f3a1d80..417ebe6d1d  417ebe6d1d6052b6cf023332da07558363d7fd08 -> xen-tested-master


From xen-devel-bounces@lists.xenproject.org Wed Jan 24 00:57:15 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 24 Jan 2024 00:57:15 +0000
Received: from list by lists.xenproject.org with outflank-mailman.670645.1043561 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSRZX-00008c-UH; Wed, 24 Jan 2024 00:56:55 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 670645.1043561; Wed, 24 Jan 2024 00:56:55 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSRZX-00008V-Rc; Wed, 24 Jan 2024 00:56:55 +0000
Received: by outflank-mailman (input) for mailman id 670645;
 Wed, 24 Jan 2024 00:56:53 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=qnut=JC=kernel.org=sstabellini@srs-se1.protection.inumbo.net>)
 id 1rSRZV-00008O-Oh
 for xen-devel@lists.xenproject.org; Wed, 24 Jan 2024 00:56:53 +0000
Received: from sin.source.kernel.org (sin.source.kernel.org [145.40.73.55])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 74c69c0a-ba53-11ee-98f5-6d05b1d4d9a1;
 Wed, 24 Jan 2024 01:56:51 +0100 (CET)
Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58])
 by sin.source.kernel.org (Postfix) with ESMTP id 48267CE3030;
 Wed, 24 Jan 2024 00:56:45 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 77849C433C7;
 Wed, 24 Jan 2024 00:56:42 +0000 (UTC)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 74c69c0a-ba53-11ee-98f5-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
	s=k20201202; t=1706057803;
	bh=bHReAgxWlYCDbjV6niWqJhCLRMaShBkmb4HS9kUp5Gg=;
	h=Date:From:To:cc:Subject:In-Reply-To:References:From;
	b=CbdZZq4tbZxdNxHG/2VEkTWhNg2zqnw0yHHTwJsmqVT3CQS4xQXWDAk6fqt73AqVU
	 h1nLInAovIlLCRGnx7M0ljo/HAzWry706kYVWtVOGthvVecVhN0DTgiuj5Z98hAixl
	 zvstEvwSSpKyrQfxSWjK9E4wej31OAQ0HZ/EbS5sQufeRyt0CjiiuuXhQ2tXzdHN2B
	 uXhJvXgRHRWJXLR/GCrF6wqPM/5tCZK0NAp1EX6U2ok5NcRngLBjab/ZuZf726pOYg
	 PRn+jWP0PKuI5KLwocSktsTEaJVJhUCGvMZRpnGeYPFhsbbRphfC3t+HEn1PpIaVb4
	 Z/9R2QGxPe5mg==
Date: Tue, 23 Jan 2024 16:56:41 -0800 (PST)
From: Stefano Stabellini <sstabellini@kernel.org>
X-X-Sender: sstabellini@ubuntu-linux-20-04-desktop
To: "Peng Fan (OSS)" <peng.fan@oss.nxp.com>
cc: sstabellini@kernel.org, anthony.perard@citrix.com, paul@xen.org, 
    vikram.garhwal@amd.com, viresh.kumar@linaro.org, 
    xen-devel@lists.xenproject.org, qemu-devel@nongnu.org, 
    Peng Fan <peng.fan@nxp.com>
Subject: Re: [PATCH] xen: Drop out of coroutine context
 xen_invalidate_map_cache_entry
In-Reply-To: <20240116143622.6641-1-peng.fan@oss.nxp.com>
Message-ID: <alpine.DEB.2.22.394.2401231655530.2287888@ubuntu-linux-20-04-desktop>
References: <20240116143622.6641-1-peng.fan@oss.nxp.com>
User-Agent: Alpine 2.22 (DEB 394 2020-01-19)
MIME-Version: 1.0
Content-Type: text/plain; charset=US-ASCII

On Tue, 16 Jan 2024, Peng Fan (OSS) wrote:
> From: Peng Fan <peng.fan@nxp.com>
> 
> xen_invalidate_map_cache_entry is not expected to run in a
> coroutine. Without this, there is crash:
> 
>     signo=signo@entry=6, no_tid=no_tid@entry=0) at pthread_kill.c:44
>     threadid=<optimized out>) at pthread_kill.c:78
>     at /usr/src/debug/glibc/2.38+git-r0/sysdeps/posix/raise.c:26
>     fmt=0xffff9e1ca8a8 "%s%s%s:%u: %s%sAssertion `%s' failed.\n%n",
>     assertion=assertion@entry=0xaaaae0d25740 "!qemu_in_coroutine()",
>     file=file@entry=0xaaaae0d301a8 "../qemu-xen-dir-remote/block/graph-lock.c", line=line@entry=260,
>     function=function@entry=0xaaaae0e522c0 <__PRETTY_FUNCTION__.3> "bdrv_graph_rdlock_main_loop") at assert.c:92
>     assertion=assertion@entry=0xaaaae0d25740 "!qemu_in_coroutine()",
>     file=file@entry=0xaaaae0d301a8 "../qemu-xen-dir-remote/block/graph-lock.c", line=line@entry=260,
>     function=function@entry=0xaaaae0e522c0 <__PRETTY_FUNCTION__.3> "bdrv_graph_rdlock_main_loop") at assert.c:101
>     at ../qemu-xen-dir-remote/block/graph-lock.c:260
>     at /home/Freenix/work/sw-stash/xen/upstream/tools/qemu-xen-dir-remote/include/block/graph-lock.h:259
>     host=host@entry=0xffff742c8000, size=size@entry=2097152)
>     at ../qemu-xen-dir-remote/block/io.c:3362
>     host=0xffff742c8000, size=2097152)
>     at ../qemu-xen-dir-remote/block/block-backend.c:2859
>     host=<optimized out>, size=<optimized out>, max_size=<optimized out>)
>     at ../qemu-xen-dir-remote/block/block-ram-registrar.c:33
>     size=2097152, max_size=2097152)
>     at ../qemu-xen-dir-remote/hw/core/numa.c:883
>     buffer=buffer@entry=0xffff743c5000 "")
>     at ../qemu-xen-dir-remote/hw/xen/xen-mapcache.c:475
>     buffer=buffer@entry=0xffff743c5000 "")
>     at ../qemu-xen-dir-remote/hw/xen/xen-mapcache.c:487
>     as=as@entry=0xaaaae1ca3ae8 <address_space_memory>, buffer=0xffff743c5000,
>     len=<optimized out>, is_write=is_write@entry=true,
>     access_len=access_len@entry=32768)
>     at ../qemu-xen-dir-remote/system/physmem.c:3199
>     dir=DMA_DIRECTION_FROM_DEVICE, len=<optimized out>,
>     buffer=<optimized out>, as=0xaaaae1ca3ae8 <address_space_memory>)
>     at /home/Freenix/work/sw-stash/xen/upstream/tools/qemu-xen-dir-remote/include/sysemu/dma.h:236
>     elem=elem@entry=0xaaaaf620aa30, len=len@entry=32769)
>     at ../qemu-xen-dir-remote/hw/virtio/virtio.c:758
>     elem=elem@entry=0xaaaaf620aa30, len=len@entry=32769, idx=idx@entry=0)
>     at ../qemu-xen-dir-remote/hw/virtio/virtio.c:919
>     elem=elem@entry=0xaaaaf620aa30, len=32769)
>     at ../qemu-xen-dir-remote/hw/virtio/virtio.c:994
>     req=req@entry=0xaaaaf620aa30, status=status@entry=0 '\000')
>     at ../qemu-xen-dir-remote/hw/block/virtio-blk.c:67
>     ret=0) at ../qemu-xen-dir-remote/hw/block/virtio-blk.c:136
>     at ../qemu-xen-dir-remote/block/block-backend.c:1559
> --Type <RET> for more, q to quit, c to continue without paging--
>     at ../qemu-xen-dir-remote/block/block-backend.c:1614
>     i1=<optimized out>) at ../qemu-xen-dir-remote/util/coroutine-ucontext.c:177
>     at ../sysdeps/unix/sysv/linux/aarch64/setcontext.S:123
> 
> Signed-off-by: Peng Fan <peng.fan@nxp.com>

Hi Peng! Many thanks for the patch and for the investigation!

Only one minor question below


> ---
>  hw/xen/xen-mapcache.c | 31 +++++++++++++++++++++++++++++--
>  1 file changed, 29 insertions(+), 2 deletions(-)
> 
> diff --git a/hw/xen/xen-mapcache.c b/hw/xen/xen-mapcache.c
> index f7d974677d..4e1bb665ee 100644
> --- a/hw/xen/xen-mapcache.c
> +++ b/hw/xen/xen-mapcache.c
> @@ -481,11 +481,38 @@ static void xen_invalidate_map_cache_entry_unlocked(uint8_t *buffer)
>      g_free(entry);
>  }
>  
> -void xen_invalidate_map_cache_entry(uint8_t *buffer)
> +typedef struct XenMapCacheData {
> +    Coroutine *co;
> +    uint8_t *buffer;
> +    int ret;

Do we need int ret? It doesn't look like we are using it.


> +} XenMapCacheData;
> +
> +static void xen_invalidate_map_cache_entry_bh(void *opaque)
>  {
> +    XenMapCacheData *data = opaque;
> +
>      mapcache_lock();
> -    xen_invalidate_map_cache_entry_unlocked(buffer);
> +    xen_invalidate_map_cache_entry_unlocked(data->buffer);
>      mapcache_unlock();
> +
> +    aio_co_wake(data->co);
> +}
> +
> +void coroutine_mixed_fn xen_invalidate_map_cache_entry(uint8_t *buffer)
> +{
> +    if (qemu_in_coroutine()) {
> +        XenMapCacheData data = {
> +            .co = qemu_coroutine_self(),
> +            .buffer = buffer,
> +        };
> +        aio_bh_schedule_oneshot(qemu_get_current_aio_context(),
> +                                xen_invalidate_map_cache_entry_bh, &data);
> +        qemu_coroutine_yield();
> +    } else {
> +        mapcache_lock();
> +        xen_invalidate_map_cache_entry_unlocked(buffer);
> +        mapcache_unlock();
> +    }
>  }
>  
>  void xen_invalidate_map_cache(void)
> -- 
> 2.35.3
> 


From xen-devel-bounces@lists.xenproject.org Wed Jan 24 01:08:06 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 24 Jan 2024 01:08:06 +0000
Received: from list by lists.xenproject.org with outflank-mailman.670651.1043572 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSRkG-0003zh-Tz; Wed, 24 Jan 2024 01:08:00 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 670651.1043572; Wed, 24 Jan 2024 01:08:00 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSRkG-0003za-RE; Wed, 24 Jan 2024 01:08:00 +0000
Received: by outflank-mailman (input) for mailman id 670651;
 Wed, 24 Jan 2024 01:08:00 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=qnut=JC=kernel.org=sstabellini@srs-se1.protection.inumbo.net>)
 id 1rSRkG-0003zU-6J
 for xen-devel@lists.xenproject.org; Wed, 24 Jan 2024 01:08:00 +0000
Received: from sin.source.kernel.org (sin.source.kernel.org
 [2604:1380:40e1:4800::1])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 00397f00-ba55-11ee-9b0f-b553b5be7939;
 Wed, 24 Jan 2024 02:07:57 +0100 (CET)
Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58])
 by sin.source.kernel.org (Postfix) with ESMTP id 8CCD4CE309D;
 Wed, 24 Jan 2024 01:07:49 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 1A91CC433C7;
 Wed, 24 Jan 2024 01:07:46 +0000 (UTC)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 00397f00-ba55-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
	s=k20201202; t=1706058468;
	bh=VJe7KyfhHk0aCC8AKV2aYEL9bhaGo8N3VyD/zVtGCsQ=;
	h=Date:From:To:cc:Subject:In-Reply-To:References:From;
	b=i1jctmbG1ZrJsXmVyetKqL/JpufyCAvbymjPPM0KB4m5TtJ8286+yO8+OUQaK4KKt
	 EztLaEo1O8IBGH24yeSkHNsIaty7agVAET3ZLtnmgfPlPxtqSzlX6vPcQkpHwu21Lh
	 QwNVnVzzFMO2OQFdqMYkitENB+NP7frTfwRN8p23UALECul6EniAynK0l+MNq7s1Vq
	 OwnC/2nidp7/1ei73Pqy7oMG4YPVTnCk4y2qFNz1dWNwBkLKPelce0IBV9acT1hRql
	 AhJusHrqBoFiJNlZojCngKv4YqdAH2ALNZNi0a3AIaB7+Wsp5bwpUT38qDYI/b1Sfm
	 9h3hHVsERCqkA==
Date: Tue, 23 Jan 2024 17:07:46 -0800 (PST)
From: Stefano Stabellini <sstabellini@kernel.org>
X-X-Sender: sstabellini@ubuntu-linux-20-04-desktop
To: Mykyta Poturai <Mykyta_Poturai@epam.com>
cc: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>, 
    Wei Liu <wl@xen.org>, Anthony PERARD <anthony.perard@citrix.com>, 
    Juergen Gross <jgross@suse.com>, Andrew Cooper <andrew.cooper3@citrix.com>, 
    George Dunlap <george.dunlap@citrix.com>, Jan Beulich <jbeulich@suse.com>, 
    Julien Grall <julien@xen.org>, Stefano Stabellini <sstabellini@kernel.org>, 
    Bertrand Marquis <bertrand.marquis@arm.com>, 
    Michal Orzel <michal.orzel@amd.com>, 
    Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>, 
    =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
Subject: Re: [PATCH 2/2] xen/dm: arm: Introduce inject_msi2 DM op
In-Reply-To: <6c551b03796fbf091b22fcde96d894cd5308ff91.1705066642.git.mykyta_poturai@epam.com>
Message-ID: <alpine.DEB.2.22.394.2401231704270.2287888@ubuntu-linux-20-04-desktop>
References: <cover.1705066642.git.mykyta_poturai@epam.com> <6c551b03796fbf091b22fcde96d894cd5308ff91.1705066642.git.mykyta_poturai@epam.com>
User-Agent: Alpine 2.22 (DEB 394 2020-01-19)
MIME-Version: 1.0
Content-Type: text/plain; charset=US-ASCII

On Sun, 14 Jan 2024, Mykyta Poturai wrote:
> Add the second version of inject_msi DM op, which allows to specify
> the source_id of an MSI interrupt. This is needed for correct MSI
> injection on ARM.
> 
> It would not be safe to include the source_id in the original inject_msi
> in the pad field, because we have no way to know if it is set or not.
> 
> Signed-off-by: Mykyta Poturai <mykyta_poturai@epam.com>
> ---
>  tools/include/xendevicemodel.h               | 14 +++++++++++++
>  tools/libs/devicemodel/core.c                | 22 ++++++++++++++++++++
>  tools/libs/devicemodel/libxendevicemodel.map |  5 +++++
>  xen/arch/arm/dm.c                            | 15 +++++++++++++
>  xen/arch/x86/hvm/dm.c                        | 13 ++++++++++++
>  xen/include/public/hvm/dm_op.h               | 12 +++++++++++
>  6 files changed, 81 insertions(+)
> 
> diff --git a/tools/include/xendevicemodel.h b/tools/include/xendevicemodel.h
> index 797e0c6b29..4833e55bce 100644
> --- a/tools/include/xendevicemodel.h
> +++ b/tools/include/xendevicemodel.h
> @@ -236,6 +236,20 @@ int xendevicemodel_inject_msi(
>      xendevicemodel_handle *dmod, domid_t domid, uint64_t msi_addr,
>      uint32_t msi_data);
>  
> +/**
> + * This function injects an MSI into a guest.
> + *
> + * @parm dmod a handle to an open devicemodel interface.
> + * @parm domid the domain id to be serviced
> + * @parm msi_addr the MSI address (0xfeexxxxx)
> + * @parm source_id the PCI SBDF of the source device
> + * @parm msi_data the MSI data
> + * @return 0 on success, -1 on failure.
> +*/
> +int xendevicemodel_inject_msi2(
> +    xendevicemodel_handle *dmod, domid_t domid, uint64_t msi_addr, uint32_t source_id,
> +    uint32_t msi_data, unsigned int source_id_valid);


What is "source_id_valid"? It is not described in the comment. Also, it
should be a fixed size int. I agree with Jan that we could reuse
xendevicemodel_inject_msi by assuing that PCI BDF zero is invalid.


>  /**
>   * This function enables tracking of changes in the VRAM area.
>   *
> diff --git a/tools/libs/devicemodel/core.c b/tools/libs/devicemodel/core.c
> index 8e619eeb0a..17ad00c5d9 100644
> --- a/tools/libs/devicemodel/core.c
> +++ b/tools/libs/devicemodel/core.c
> @@ -448,6 +448,28 @@ int xendevicemodel_set_irq_level(
>      return xendevicemodel_op(dmod, domid, 1, &op, sizeof(op));
>  }
>  
> +int xendevicemodel_inject_msi2(
> +    xendevicemodel_handle *dmod, domid_t domid, uint64_t msi_addr, uint32_t source_id,
> +    uint32_t msi_data, unsigned int source_id_valid)
> +{
> +    struct xen_dm_op op;
> +    struct xen_dm_op_inject_msi2 *data;
> +
> +    memset(&op, 0, sizeof(op));
> +
> +    op.op = XEN_DMOP_inject_msi2;
> +    data = &op.u.inject_msi2;
> +
> +    data->addr = msi_addr;
> +    data->data = msi_data;
> +    if ( source_id_valid ) {
> +        data->source_id = source_id;
> +        data->flags = XEN_DMOP_MSI_SOURCE_ID_VALID;
> +    }
> +
> +    return xendevicemodel_op(dmod, domid, 1, &op, sizeof(op));
> +}
> +
>  int xendevicemodel_set_pci_link_route(
>      xendevicemodel_handle *dmod, domid_t domid, uint8_t link, uint8_t irq)
>  {
> diff --git a/tools/libs/devicemodel/libxendevicemodel.map b/tools/libs/devicemodel/libxendevicemodel.map
> index f7f9e3d932..aa05768642 100644
> --- a/tools/libs/devicemodel/libxendevicemodel.map
> +++ b/tools/libs/devicemodel/libxendevicemodel.map
> @@ -44,3 +44,8 @@ VERS_1.4 {
>  		xendevicemodel_set_irq_level;
>  		xendevicemodel_nr_vcpus;
>  } VERS_1.3;
> +
> +VERS_1.5 {
> +	global:
> +		xendevicemodel_inject_msi2;
> +} VERS_1.4;
> diff --git a/xen/arch/arm/dm.c b/xen/arch/arm/dm.c
> index 5569efa121..c45e196561 100644
> --- a/xen/arch/arm/dm.c
> +++ b/xen/arch/arm/dm.c
> @@ -27,6 +27,7 @@ int dm_op(const struct dmop_args *op_args)
>          [XEN_DMOP_set_ioreq_server_state]           = sizeof(struct xen_dm_op_set_ioreq_server_state),
>          [XEN_DMOP_destroy_ioreq_server]             = sizeof(struct xen_dm_op_destroy_ioreq_server),
>          [XEN_DMOP_set_irq_level]                    = sizeof(struct xen_dm_op_set_irq_level),
> +        [XEN_DMOP_inject_msi2]                      = sizeof(struct xen_dm_op_inject_msi2),
>          [XEN_DMOP_nr_vcpus]                         = sizeof(struct xen_dm_op_nr_vcpus),
>      };
>  
> @@ -112,6 +113,20 @@ int dm_op(const struct dmop_args *op_args)
>          break;
>      }
>  
> +    case XEN_DMOP_inject_msi2:
> +    {
> +        const struct xen_dm_op_inject_msi2 *data =
> +            &op.u.inject_msi2;
> +
> +        if ( !(data->flags & XEN_DMOP_MSI_SOURCE_ID_VALID) )
> +        {
> +            rc = -EINVAL;
> +            break;
> +        }
> +        rc = vgic_its_trigger_msi(d, data->addr, data->source_id, data->data);
> +        break;
> +
> +    }
>      case XEN_DMOP_nr_vcpus:
>      {
>          struct xen_dm_op_nr_vcpus *data = &op.u.nr_vcpus;
> diff --git a/xen/arch/x86/hvm/dm.c b/xen/arch/x86/hvm/dm.c
> index 462691f91d..a4a0e3dff9 100644
> --- a/xen/arch/x86/hvm/dm.c
> +++ b/xen/arch/x86/hvm/dm.c
> @@ -344,6 +344,7 @@ int dm_op(const struct dmop_args *op_args)
>          [XEN_DMOP_set_mem_type]                     = sizeof(struct xen_dm_op_set_mem_type),
>          [XEN_DMOP_inject_event]                     = sizeof(struct xen_dm_op_inject_event),
>          [XEN_DMOP_inject_msi]                       = sizeof(struct xen_dm_op_inject_msi),
> +        [XEN_DMOP_inject_msi2]                      = sizeof(struct xen_dm_op_inject_msi2),
>          [XEN_DMOP_map_mem_type_to_ioreq_server]     = sizeof(struct xen_dm_op_map_mem_type_to_ioreq_server),
>          [XEN_DMOP_remote_shutdown]                  = sizeof(struct xen_dm_op_remote_shutdown),
>          [XEN_DMOP_relocate_memory]                  = sizeof(struct xen_dm_op_relocate_memory),
> @@ -539,6 +540,18 @@ int dm_op(const struct dmop_args *op_args)
>          break;
>      }
>  
> +    case XEN_DMOP_inject_msi2:
> +    {
> +        const struct xen_dm_op_inject_msi2 *data =
> +            &op.u.inject_msi2;
> +
> +        if ( !(data->flags & XEN_DMOP_MSI_SOURCE_ID_VALID) )
> +            printk(XENLOG_WARNING "XEN_DMOP_inject_msi2: source_id is ignored\n");
> +
> +        rc = hvm_inject_msi(d, data->addr, data->data);
> +        break;
> +    }
> +
>      case XEN_DMOP_remote_shutdown:
>      {
>          const struct xen_dm_op_remote_shutdown *data =
> diff --git a/xen/include/public/hvm/dm_op.h b/xen/include/public/hvm/dm_op.h
> index fa98551914..da2ce4a7f7 100644
> --- a/xen/include/public/hvm/dm_op.h
> +++ b/xen/include/public/hvm/dm_op.h
> @@ -444,6 +444,17 @@ struct xen_dm_op_nr_vcpus {
>  };
>  typedef struct xen_dm_op_nr_vcpus xen_dm_op_nr_vcpus_t;
>  
> +#define XEN_DMOP_inject_msi2 21
> +#define XEN_DMOP_MSI_SOURCE_ID_VALID (1u << 0)
> +
> +struct xen_dm_op_inject_msi2 {
> +    uint64_aligned_t addr;
> +    uint32_t data;
> +    uint32_t source_id; /* PCI SBDF */
> +    uint32_t flags;
> +};
> +typedef struct xen_dm_op_inject_msi2 xen_dm_op_inject_msi2_t;
> +
>  struct xen_dm_op {
>      uint32_t op;
>      uint32_t pad;
> @@ -463,6 +474,7 @@ struct xen_dm_op {
>          xen_dm_op_set_mem_type_t set_mem_type;
>          xen_dm_op_inject_event_t inject_event;
>          xen_dm_op_inject_msi_t inject_msi;
> +        xen_dm_op_inject_msi2_t inject_msi2;
>          xen_dm_op_map_mem_type_to_ioreq_server_t map_mem_type_to_ioreq_server;
>          xen_dm_op_remote_shutdown_t remote_shutdown;
>          xen_dm_op_relocate_memory_t relocate_memory;
> -- 
> 2.34.1
> 


From xen-devel-bounces@lists.xenproject.org Wed Jan 24 01:17:28 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 24 Jan 2024 01:17:28 +0000
Received: from list by lists.xenproject.org with outflank-mailman.670659.1043581 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSRtL-0005Yv-UW; Wed, 24 Jan 2024 01:17:23 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 670659.1043581; Wed, 24 Jan 2024 01:17:23 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSRtL-0005Yo-R7; Wed, 24 Jan 2024 01:17:23 +0000
Received: by outflank-mailman (input) for mailman id 670659;
 Wed, 24 Jan 2024 01:17:22 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=qnut=JC=kernel.org=sstabellini@srs-se1.protection.inumbo.net>)
 id 1rSRtK-0005Yi-S7
 for xen-devel@lists.xenproject.org; Wed, 24 Jan 2024 01:17:22 +0000
Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 51ad05ff-ba56-11ee-9b0f-b553b5be7939;
 Wed, 24 Jan 2024 02:17:20 +0100 (CET)
Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58])
 by dfw.source.kernel.org (Postfix) with ESMTP id C7E4E61F7D;
 Wed, 24 Jan 2024 01:17:18 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 87B0BC433C7;
 Wed, 24 Jan 2024 01:17:17 +0000 (UTC)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 51ad05ff-ba56-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
	s=k20201202; t=1706059038;
	bh=+W5Aghprh/IH0QAMRy5KejpIyrubW8g1iC9sRiYhGs4=;
	h=Date:From:To:cc:Subject:In-Reply-To:References:From;
	b=qGzJ2hTkt7Xmnpkx8mNuIY+pdxY3yHSeNTqNZrMEili8NiGC5Yef+VydaLWi43Xb2
	 j687eTPCBVMw1wj6UCAzNbKZRDxna2XKHfk4MiApeeu2HRSJG8v68JxcUC07/ZrQVG
	 HSWzYiN6eoKLMsW5YOX1W4iR9DWu8Mb/AqTUkhE+oWotAfyGXNJpoANeQL++yPhrpV
	 7ln0wSzggu8eqBo5bqpXyA3czhlIWuXLZb+Lis8DQ+QDE2QKbedWwmciZq0kofhYfM
	 ivI+nZKu27sx0c1mxRteb7MzNbSvm9AOgMrF7UJI9Y/giG7EufLalx1nHOBqapQsDg
	 vtxGuGhzRkF8Q==
Date: Tue, 23 Jan 2024 17:17:16 -0800 (PST)
From: Stefano Stabellini <sstabellini@kernel.org>
X-X-Sender: sstabellini@ubuntu-linux-20-04-desktop
To: Mykyta Poturai <Mykyta_Poturai@epam.com>
cc: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>, 
    Stefano Stabellini <sstabellini@kernel.org>, Julien Grall <julien@xen.org>, 
    Bertrand Marquis <bertrand.marquis@arm.com>, 
    Michal Orzel <michal.orzel@amd.com>, 
    Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>
Subject: Re: [PATCH 1/2] arm: vgic: Add the ability to trigger MSIs from the
 Hypervisor
In-Reply-To: <e109a4092d80a825256d26a8e56dbb5a2ae6d04e.1705066642.git.mykyta_poturai@epam.com>
Message-ID: <alpine.DEB.2.22.394.2401231711160.2287888@ubuntu-linux-20-04-desktop>
References: <cover.1705066642.git.mykyta_poturai@epam.com> <e109a4092d80a825256d26a8e56dbb5a2ae6d04e.1705066642.git.mykyta_poturai@epam.com>
User-Agent: Alpine 2.22 (DEB 394 2020-01-19)
MIME-Version: 1.0
Content-Type: text/plain; charset=US-ASCII

On Sun, 14 Jan 2024, Mykyta Poturai wrote:
> Add the vgic_its_trigger_msi() function to the vgic interface. This
> function allows to inject MSIs from the Hypervisor to the guest.
> Which is useful for userspace PCI backend drivers.
> 
> Signed-off-by: Mykyta Poturai <mykyta_poturai@epam.com>
> ---
>  xen/arch/arm/include/asm/vgic.h | 11 +++++++++++
>  xen/arch/arm/vgic-v3-its.c      | 35 +++++++++++++++++++++++++++++++++
>  2 files changed, 46 insertions(+)
> 
> diff --git a/xen/arch/arm/include/asm/vgic.h b/xen/arch/arm/include/asm/vgic.h
> index 922779ce14..4695743848 100644
> --- a/xen/arch/arm/include/asm/vgic.h
> +++ b/xen/arch/arm/include/asm/vgic.h
> @@ -317,6 +317,17 @@ extern bool vgic_migrate_irq(struct vcpu *old, struct vcpu *new, unsigned int ir
>  extern void vgic_check_inflight_irqs_pending(struct domain *d, struct vcpu *v,
>                                               unsigned int rank, uint32_t r);
>  
> +#ifdef CONFIG_HAS_ITS
> +int vgic_its_trigger_msi(struct domain *d, paddr_t doorbell_address,
> +                                u32 devid, u32 eventid);
> +#else
> +static inline int vgic_its_trigger_msi(struct domain *d, paddr_t doorbell_address,
> +                                u32 devid, u32 eventid)
> +{
> +    return -EOPNOTSUPP;
> +}
> +#endif /* CONFIG_HAS_ITS */
> +
>  #endif /* !CONFIG_NEW_VGIC */
>  
>  /*** Common VGIC functions used by Xen arch code ****/
> diff --git a/xen/arch/arm/vgic-v3-its.c b/xen/arch/arm/vgic-v3-its.c
> index 70b5aeb822..683a378f6e 100644
> --- a/xen/arch/arm/vgic-v3-its.c
> +++ b/xen/arch/arm/vgic-v3-its.c
> @@ -1484,6 +1484,41 @@ static int vgic_v3_its_init_virtual(struct domain *d, paddr_t guest_addr,
>      return 0;
>  }
>  
> +int vgic_its_trigger_msi(struct domain *d, paddr_t doorbell_address,
> +                                u32 devid, u32 eventid)
> +{
> +    struct vcpu *vcpu;
> +    struct virt_its *pos, *temp;
> +    struct virt_its *its = NULL;
> +    uint32_t vlpi;
> +    bool ret;
> +
> +    list_for_each_entry_safe( pos, temp, &d->arch.vgic.vits_list, vits_list )
> +    {
> +        if ( pos->doorbell_address == doorbell_address )
> +        {
> +            its = pos;
> +            break;
> +        }
> +    }
> +
> +    if ( !its )
> +        return -EINVAL;
> +
> +    spin_lock(&its->its_lock);
> +    ret = read_itte(its, devid, eventid, &vcpu, &vlpi);
> +    spin_unlock(&its->its_lock);
> +    if ( !ret )
> +        return -1;
> +
> +    if ( vlpi == INVALID_LPI )
> +        return -1;

We need a better error code, maybe EINVAL or ENOENT ?

Other than that, it looks OK


> +    vgic_vcpu_inject_lpi(its->d, vlpi);
> +
> +    return 0;
> +}
> +
>  unsigned int vgic_v3_its_count(const struct domain *d)
>  {
>      struct host_its *hw_its;
> -- 
> 2.34.1
> 


From xen-devel-bounces@lists.xenproject.org Wed Jan 24 01:17:33 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 24 Jan 2024 01:17:33 +0000
Received: from list by lists.xenproject.org with outflank-mailman.670660.1043592 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSRtV-0005u2-5u; Wed, 24 Jan 2024 01:17:33 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 670660.1043592; Wed, 24 Jan 2024 01:17:33 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSRtV-0005tr-2s; Wed, 24 Jan 2024 01:17:33 +0000
Received: by outflank-mailman (input) for mailman id 670660;
 Wed, 24 Jan 2024 01:17:32 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=CVXY=JC=oss.nxp.com=peng.fan@srs-se1.protection.inumbo.net>)
 id 1rSRtT-0005t9-Vz
 for xen-devel@lists.xenproject.org; Wed, 24 Jan 2024 01:17:31 +0000
Received: from EUR04-VI1-obe.outbound.protection.outlook.com
 (mail-vi1eur04on0602.outbound.protection.outlook.com
 [2a01:111:f400:fe0e::602])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 574ddbff-ba56-11ee-98f5-6d05b1d4d9a1;
 Wed, 24 Jan 2024 02:17:29 +0100 (CET)
Received: from DU0PR04MB9417.eurprd04.prod.outlook.com (2603:10a6:10:358::11)
 by AM8PR04MB7762.eurprd04.prod.outlook.com (2603:10a6:20b:241::7)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7202.31; Wed, 24 Jan
 2024 01:17:26 +0000
Received: from DU0PR04MB9417.eurprd04.prod.outlook.com
 ([fe80::c499:8cef:9bb1:ced6]) by DU0PR04MB9417.eurprd04.prod.outlook.com
 ([fe80::c499:8cef:9bb1:ced6%3]) with mapi id 15.20.7202.031; Wed, 24 Jan 2024
 01:17:26 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 574ddbff-ba56-11ee-98f5-6d05b1d4d9a1
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=DsOIIZEGkiOnhEAd5lO0OpQ1gShAfXrmGgF27OYBuh17stwK1s0BvEiogVVOL2ttHlDlqu8VP7N9fCWD1LuepXjaukflMexnrkpFpFn+sLE+qv7icdtEA70FsqWVyyymEcuZVu/XkcEYt/Sf0ZqUvC0udjmDPVHE6tTwZWjhHAhS7Fm4sW9sJNQ/+a5ciHz8noc5XRi+OHdPCAM/8z6X/sPHxGdU+p/yyWQNbS6UCx2t3FG6PBhhLBccPhR5ZVeY7MUIAaX3w9gMU177L3HlBesInYmrbFawdzHUwWHi3w+UtZ+NVc2tQAig04ZQ2+NlrsCduh5MvBR0wMb1dlHVJg==
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=cVBKLm1qoZuRH8kQqDRCj98oWwM+1CDRbyjg8jWXcbM=;
 b=JeR44muDASxXVv2Pb76ScZw8bWgtrmfSNNjIAF4BNxCgJaJ7Gy7gCJZIHeRd1+ILgAJWiY7txwf8HN1i4QkJnZA3Z+1XzB+pDtWKAxN+QFfhe5dBvW7SgIiBTy5yFZlAwCSfSlF7TfsX5tcYLwm7cvDh/mMRu2ci8n5OIwJqVouoJ0a1KMFIt/gv8rNYZV1KNDrgVgPvgeQhDcMOo/yiVpBxiLeaUKPxuutoPCesn7TU9z3ysyTeHfuJqLDuZobmU1Fr2PwgvVc0jl6m4WppCw1vfJsaVe2ot5PYPM1qlXNX02aEHLW72SFqBj14kfpHDjOGGhp9kR61zP1IrrgeCQ==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=oss.nxp.com; dmarc=pass action=none header.from=oss.nxp.com;
 dkim=pass header.d=oss.nxp.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=NXP1.onmicrosoft.com;
 s=selector2-NXP1-onmicrosoft-com;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=cVBKLm1qoZuRH8kQqDRCj98oWwM+1CDRbyjg8jWXcbM=;
 b=bIT7RenYa8PFU+2NQRvQBg4fgaTD8034d/KDnvzKlTYM4H0vPeKP4xVt8CN8aO4YbzNF9Ga9Iu9Km0HZupuaSqNSGWl24g3DdpFElw6yb0WYSpNbZmYsm+byDKy6RpoD30zbK7stkUNLBkoAzfCSkx85tUAojLCzgkf8rLCGigs=
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=oss.nxp.com;
From: "Peng Fan (OSS)" <peng.fan@oss.nxp.com>
To: sstabellini@kernel.org,
	anthony.perard@citrix.com,
	paul@xen.org,
	vikram.garhwal@amd.com,
	viresh.kumar@linaro.org
Cc: xen-devel@lists.xenproject.org,
	qemu-devel@nongnu.org,
	Peng Fan <peng.fan@nxp.com>
Subject: [PATCH V2] xen: Drop out of coroutine context xen_invalidate_map_cache_entry
Date: Wed, 24 Jan 2024 10:14:50 +0800
Message-Id: <20240124021450.21656-1-peng.fan@oss.nxp.com>
X-Mailer: git-send-email 2.35.3
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-ClientProxiedBy: MA0PR01CA0089.INDPRD01.PROD.OUTLOOK.COM
 (2603:1096:a01:ae::15) To DU0PR04MB9417.eurprd04.prod.outlook.com
 (2603:10a6:10:358::11)
MIME-Version: 1.0
X-MS-Exchange-MessageSentRepresentingType: 1
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: DU0PR04MB9417:EE_|AM8PR04MB7762:EE_
X-MS-Office365-Filtering-Correlation-Id: 2c19dfd0-2a01-4ea2-b171-08dc1c7a39d0
X-MS-Exchange-SharedMailbox-RoutingAgent-Processed: True
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam: BCL:0;
X-Microsoft-Antispam-Message-Info:
	BpGthZYJRSu0W14QPZUkKdUXdMiCYILvqcPPhCP58+SpLn9JwtXY7dBsYyLGknbs6GOABAYytOF+yXIdIgC0iqn9ihhzYFrOYNbw32j2Vi6GAucTlETxssWGMtxcz+1cvqRBTIFB/p7e7YPtDckp8fTx7lh5uTyZKwsFOiV1nJ+0F0UwgF5UphOpQI8VZLfPkE6HPOjnaZ1s44Sw3k6ljcwe7FltKHgqSzil2CnA4X8DzY/h8GPwYD5fjuwE1hpRRx2C7qfn0REzFhQvYnG+0jA/DtzxMiR+dL14AvQ3tZysJ0wYQocePsED+dII5ZHQk+xWxsjhglWjFo8/p/dR2vi69P0wZsvjMBkDmd1bLbZuorZaPeev3+TyT9kx5etknd+WIAkOgMreGaVRERfEt/BlcZc8AkwfLrCIUs7XaP9YugpYZgcbIOL80E2inshzb5krUmJT/nqEcI41FX0Pq2kVEBVrAjtG19Sm/HyhLzzCUhiuIK6VaJAwFx/sg24HU7rUGqmvT9e0fVw8cfpGtP4Ee3AQeLlqx6DW/94xz5FnhLTNIDMOo6IETxASCC9hkghqoU0Og6paGmmtpevpXzhMkD72QrVY37lICLg2WwgEjKet60HuwKLZW13SE9Qm
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DU0PR04MB9417.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230031)(136003)(366004)(376002)(39860400002)(396003)(346002)(230922051799003)(1800799012)(451199024)(64100799003)(186009)(52116002)(8936002)(8676002)(6506007)(6666004)(478600001)(66556008)(66946007)(6486002)(66476007)(316002)(2616005)(1076003)(6512007)(83380400001)(4326008)(41300700001)(5660300002)(2906002)(86362001)(26005)(38350700005)(38100700002);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?us-ascii?Q?HgNDveB8WQlnPPKWBMZtGS6yE/hWQd9y6yEFJK+5GbkSAnSEPqs8eqACByNc?=
 =?us-ascii?Q?89DzWlnHFlE+OD++KLjifXs2sXrqL0PCFlql/MyfkCH3cgKRyCV4wORjUhrA?=
 =?us-ascii?Q?iw7pqHCBvf6/IpHsvYQW1U/l6LodwEX27J1hhJ5xVZ+6YKXVbuzBSl+btsz8?=
 =?us-ascii?Q?qunFHO0arTpiUuPeWQqEQelCr9IV5jb9pTgVNeYppFZ77CgPJsFxbMz/dque?=
 =?us-ascii?Q?hvInGtbf65NItbpYJ6n58c0sqIQD4cGFwG5gZryze3KDiFDnk+ajIUvPWW/3?=
 =?us-ascii?Q?eLoSIxh5XFgOhds3+EROBWdTh1EJF3nxNT6F8htiumU+Bp0LcqafzZr3iLBx?=
 =?us-ascii?Q?54rp1DWE7lnwkpxhIF+sl3CnYrAJwF/8eG1RNwqgZkCNzch5Cedqt09U0524?=
 =?us-ascii?Q?Y5WJQ/rd1VKs7ShkvnWfsZUZg0cB9rDAiYCne+XF9b3mv9PP36fe2OoNU9Gi?=
 =?us-ascii?Q?dOK6EohXsWKUYW819pRzTRt0DtUX1NAjoLrX+uk3T6PnXAb6SirDOEJH2v6o?=
 =?us-ascii?Q?ieNRjlWKvFWjAdIujCzDROIMreD88Zc+LoxpXlyT4lwG1j98rZyWGqJ57K1p?=
 =?us-ascii?Q?sE38xpW6l50mHJ0kFBMyXA56MMxpZCoPO0CHf+uQwqtutEOizq9d6vIWskC1?=
 =?us-ascii?Q?T9n85z7xLzwclM6iwztJ8M6gNWTBAi4uk5lWXqSq2k/PFxgnWqpsVixacQES?=
 =?us-ascii?Q?u3Nlt7294KCI8lyYsqq/y55lKDDzP4dOlSpzXwrfnhV2BJ7b4ylueNvgPlJ2?=
 =?us-ascii?Q?4CiyQK1/klZ42dZ0fEBBHViAqD+pXgndynrwV6sSp57itXLFmADb+7DN1rLC?=
 =?us-ascii?Q?3xx+XTlVub9J9s1eUWkVrr56/a83sHGW6SHn65ZwH/leoZ+xAwE20p1ECMub?=
 =?us-ascii?Q?hm/2s6SM60XJz/fwS5zaAkYBYJDQbyA4pGSMDXRmJ+o5h5Mym72axu2kSdnV?=
 =?us-ascii?Q?BpoxGOYBve6B6C9sjc4OWPU1uC7cZmPrkHx7nuFm45UDBLi5Tga0tnPiL5MP?=
 =?us-ascii?Q?tZG0/64Odt0AGtJKgWj+Y1bEMVCsLGF+NCxa8wZLNo69NkiBE/kAZUl7Cwz8?=
 =?us-ascii?Q?z9XmoXTixuz+c9N+fcNwD5BNxq472hlBaRKG8vDDyyW/NDQv2X/nmaQCq+IT?=
 =?us-ascii?Q?2u6dwafcCge3k+F1sikzE9WrAwYz8a3DirxyNwTFslx6g25c3E4KZp5iIKhX?=
 =?us-ascii?Q?uGuoM1Fh/2pX74bjimcPLTKOE6J4yutvq8fP+rwkzSFuf4QB/ohhFvF7sZs6?=
 =?us-ascii?Q?4In+ZqOkH4sjUrUZ6pjY9rgx0kVMSH16RYb04xezEBfwkrYJ+my+as760htU?=
 =?us-ascii?Q?1sv/GIsiDo8/7iR4BjUVtoqnyC+dFD4PxBSVzUw+fi2E6iRRF5HZoUzvKNab?=
 =?us-ascii?Q?bar+4jg3/h1id44Fo0V0ETsoUY+L2WH5Uwvl9ZQq3gIJXknTKnprKpQsVCBB?=
 =?us-ascii?Q?5zEeo1NlVTRo6QBAUcph5/dnrchmuLFpQrsCTKkT+QTFf8oIp5ZCjjHaXccc?=
 =?us-ascii?Q?AeZNZfC+FVoV2Ek/l2dBQc0Qfxvx1aELtkD2kr5zCpCVJBbscdcqaxKrCXJR?=
 =?us-ascii?Q?ICMFppb9vl9YlgJAsZw1f0RaX1s5NOpTTG+91qkS?=
X-OriginatorOrg: oss.nxp.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 2c19dfd0-2a01-4ea2-b171-08dc1c7a39d0
X-MS-Exchange-CrossTenant-AuthSource: DU0PR04MB9417.eurprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Jan 2024 01:17:26.5001
 (UTC)
X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted
X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635
X-MS-Exchange-CrossTenant-MailboxType: HOSTED
X-MS-Exchange-CrossTenant-UserPrincipalName: FAUAlSHRDKM9dcaUPrUOlhrk3taBPYWVWEVKfERehpFJeO+/bV5AbZLAPsrH/eUylDBJJUlzgH/vz0gnGR+K+Q==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM8PR04MB7762

From: Peng Fan <peng.fan@nxp.com>

xen_invalidate_map_cache_entry is not expected to run in a
coroutine. Without this, there is crash:

    signo=signo@entry=6, no_tid=no_tid@entry=0) at pthread_kill.c:44
    threadid=<optimized out>) at pthread_kill.c:78
    at /usr/src/debug/glibc/2.38+git-r0/sysdeps/posix/raise.c:26
    fmt=0xffff9e1ca8a8 "%s%s%s:%u: %s%sAssertion `%s' failed.\n%n",
    assertion=assertion@entry=0xaaaae0d25740 "!qemu_in_coroutine()",
    file=file@entry=0xaaaae0d301a8 "../qemu-xen-dir-remote/block/graph-lock.c", line=line@entry=260,
    function=function@entry=0xaaaae0e522c0 <__PRETTY_FUNCTION__.3> "bdrv_graph_rdlock_main_loop") at assert.c:92
    assertion=assertion@entry=0xaaaae0d25740 "!qemu_in_coroutine()",
    file=file@entry=0xaaaae0d301a8 "../qemu-xen-dir-remote/block/graph-lock.c", line=line@entry=260,
    function=function@entry=0xaaaae0e522c0 <__PRETTY_FUNCTION__.3> "bdrv_graph_rdlock_main_loop") at assert.c:101
    at ../qemu-xen-dir-remote/block/graph-lock.c:260
    at /home/Freenix/work/sw-stash/xen/upstream/tools/qemu-xen-dir-remote/include/block/graph-lock.h:259
    host=host@entry=0xffff742c8000, size=size@entry=2097152)
    at ../qemu-xen-dir-remote/block/io.c:3362
    host=0xffff742c8000, size=2097152)
    at ../qemu-xen-dir-remote/block/block-backend.c:2859
    host=<optimized out>, size=<optimized out>, max_size=<optimized out>)
    at ../qemu-xen-dir-remote/block/block-ram-registrar.c:33
    size=2097152, max_size=2097152)
    at ../qemu-xen-dir-remote/hw/core/numa.c:883
    buffer=buffer@entry=0xffff743c5000 "")
    at ../qemu-xen-dir-remote/hw/xen/xen-mapcache.c:475
    buffer=buffer@entry=0xffff743c5000 "")
    at ../qemu-xen-dir-remote/hw/xen/xen-mapcache.c:487
    as=as@entry=0xaaaae1ca3ae8 <address_space_memory>, buffer=0xffff743c5000,
    len=<optimized out>, is_write=is_write@entry=true,
    access_len=access_len@entry=32768)
    at ../qemu-xen-dir-remote/system/physmem.c:3199
    dir=DMA_DIRECTION_FROM_DEVICE, len=<optimized out>,
    buffer=<optimized out>, as=0xaaaae1ca3ae8 <address_space_memory>)
    at /home/Freenix/work/sw-stash/xen/upstream/tools/qemu-xen-dir-remote/include/sysemu/dma.h:236
    elem=elem@entry=0xaaaaf620aa30, len=len@entry=32769)
    at ../qemu-xen-dir-remote/hw/virtio/virtio.c:758
    elem=elem@entry=0xaaaaf620aa30, len=len@entry=32769, idx=idx@entry=0)
    at ../qemu-xen-dir-remote/hw/virtio/virtio.c:919
    elem=elem@entry=0xaaaaf620aa30, len=32769)
    at ../qemu-xen-dir-remote/hw/virtio/virtio.c:994
    req=req@entry=0xaaaaf620aa30, status=status@entry=0 '\000')
    at ../qemu-xen-dir-remote/hw/block/virtio-blk.c:67
    ret=0) at ../qemu-xen-dir-remote/hw/block/virtio-blk.c:136
    at ../qemu-xen-dir-remote/block/block-backend.c:1559
--Type <RET> for more, q to quit, c to continue without paging--
    at ../qemu-xen-dir-remote/block/block-backend.c:1614
    i1=<optimized out>) at ../qemu-xen-dir-remote/util/coroutine-ucontext.c:177
    at ../sysdeps/unix/sysv/linux/aarch64/setcontext.S:123

Signed-off-by: Peng Fan <peng.fan@nxp.com>
---

V2:
 Drop unused ret in XenMapCacheData (thanks Stefano)

 hw/xen/xen-mapcache.c | 30 ++++++++++++++++++++++++++++--
 1 file changed, 28 insertions(+), 2 deletions(-)

diff --git a/hw/xen/xen-mapcache.c b/hw/xen/xen-mapcache.c
index f7d974677d..8d62b3d2ed 100644
--- a/hw/xen/xen-mapcache.c
+++ b/hw/xen/xen-mapcache.c
@@ -481,11 +481,37 @@ static void xen_invalidate_map_cache_entry_unlocked(uint8_t *buffer)
     g_free(entry);
 }
 
-void xen_invalidate_map_cache_entry(uint8_t *buffer)
+typedef struct XenMapCacheData {
+    Coroutine *co;
+    uint8_t *buffer;
+} XenMapCacheData;
+
+static void xen_invalidate_map_cache_entry_bh(void *opaque)
 {
+    XenMapCacheData *data = opaque;
+
     mapcache_lock();
-    xen_invalidate_map_cache_entry_unlocked(buffer);
+    xen_invalidate_map_cache_entry_unlocked(data->buffer);
     mapcache_unlock();
+
+    aio_co_wake(data->co);
+}
+
+void coroutine_mixed_fn xen_invalidate_map_cache_entry(uint8_t *buffer)
+{
+    if (qemu_in_coroutine()) {
+        XenMapCacheData data = {
+            .co = qemu_coroutine_self(),
+            .buffer = buffer,
+        };
+        aio_bh_schedule_oneshot(qemu_get_current_aio_context(),
+                                xen_invalidate_map_cache_entry_bh, &data);
+        qemu_coroutine_yield();
+    } else {
+        mapcache_lock();
+        xen_invalidate_map_cache_entry_unlocked(buffer);
+        mapcache_unlock();
+    }
 }
 
 void xen_invalidate_map_cache(void)
-- 
2.35.3



From xen-devel-bounces@lists.xenproject.org Wed Jan 24 01:19:21 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 24 Jan 2024 01:19:21 +0000
Received: from list by lists.xenproject.org with outflank-mailman.670665.1043602 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSRvD-0006qv-Gf; Wed, 24 Jan 2024 01:19:19 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 670665.1043602; Wed, 24 Jan 2024 01:19:19 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSRvD-0006qo-Dh; Wed, 24 Jan 2024 01:19:19 +0000
Received: by outflank-mailman (input) for mailman id 670665;
 Wed, 24 Jan 2024 01:19:17 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=qnut=JC=kernel.org=sstabellini@srs-se1.protection.inumbo.net>)
 id 1rSRvB-0006qe-IJ
 for xen-devel@lists.xenproject.org; Wed, 24 Jan 2024 01:19:17 +0000
Received: from sin.source.kernel.org (sin.source.kernel.org [145.40.73.55])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 95611b59-ba56-11ee-9b0f-b553b5be7939;
 Wed, 24 Jan 2024 02:19:14 +0100 (CET)
Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58])
 by sin.source.kernel.org (Postfix) with ESMTP id 0BCADCE2FED;
 Wed, 24 Jan 2024 01:19:10 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 0F879C433F1;
 Wed, 24 Jan 2024 01:19:07 +0000 (UTC)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 95611b59-ba56-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
	s=k20201202; t=1706059149;
	bh=xI9QkHcCotyomOjIkiFDcV0CgjT/jadobMJ6uOqT+z4=;
	h=Date:From:To:cc:Subject:In-Reply-To:References:From;
	b=VWi/B60bSgT8d+xlNibrY+ZlcSMlXnFkOsPMO2pb78lcWGxVZkrI3hq51TaCnck13
	 xSSCTfR2q60z9A031tlJZKL5XX7/LOOZKn7WuughmGxhS4MYgK7d3gd4GJLRMAZaFI
	 DGuVkD7lRl0TGwytzrb7Cen81lkSgjAdrne+EykfVTKwF0+KzKM3tk5kmAYZRiyUf7
	 F96/XxnvkvtcYjXqPGBpMtGLLW+qS+M7Zino3aYXwpcip17eNKbUHF+VBDXBXRfCIV
	 T4SWqGjNYzv5hv+2DlGeLlssrLEnui4steaFn9rl/lRRvqD6xlrPMlV7eNDNUE2MrQ
	 t1cOGOYgsyH/w==
Date: Tue, 23 Jan 2024 17:19:07 -0800 (PST)
From: Stefano Stabellini <sstabellini@kernel.org>
X-X-Sender: sstabellini@ubuntu-linux-20-04-desktop
To: "Peng Fan (OSS)" <peng.fan@oss.nxp.com>
cc: sstabellini@kernel.org, anthony.perard@citrix.com, paul@xen.org, 
    vikram.garhwal@amd.com, viresh.kumar@linaro.org, 
    xen-devel@lists.xenproject.org, qemu-devel@nongnu.org, 
    Peng Fan <peng.fan@nxp.com>
Subject: Re: [PATCH V2] xen: Drop out of coroutine context
 xen_invalidate_map_cache_entry
In-Reply-To: <20240124021450.21656-1-peng.fan@oss.nxp.com>
Message-ID: <alpine.DEB.2.22.394.2401231718590.2287888@ubuntu-linux-20-04-desktop>
References: <20240124021450.21656-1-peng.fan@oss.nxp.com>
User-Agent: Alpine 2.22 (DEB 394 2020-01-19)
MIME-Version: 1.0
Content-Type: text/plain; charset=US-ASCII

On Wed, 24 Jan 2024, Peng Fan (OSS) wrote:
> From: Peng Fan <peng.fan@nxp.com>
> 
> xen_invalidate_map_cache_entry is not expected to run in a
> coroutine. Without this, there is crash:
> 
>     signo=signo@entry=6, no_tid=no_tid@entry=0) at pthread_kill.c:44
>     threadid=<optimized out>) at pthread_kill.c:78
>     at /usr/src/debug/glibc/2.38+git-r0/sysdeps/posix/raise.c:26
>     fmt=0xffff9e1ca8a8 "%s%s%s:%u: %s%sAssertion `%s' failed.\n%n",
>     assertion=assertion@entry=0xaaaae0d25740 "!qemu_in_coroutine()",
>     file=file@entry=0xaaaae0d301a8 "../qemu-xen-dir-remote/block/graph-lock.c", line=line@entry=260,
>     function=function@entry=0xaaaae0e522c0 <__PRETTY_FUNCTION__.3> "bdrv_graph_rdlock_main_loop") at assert.c:92
>     assertion=assertion@entry=0xaaaae0d25740 "!qemu_in_coroutine()",
>     file=file@entry=0xaaaae0d301a8 "../qemu-xen-dir-remote/block/graph-lock.c", line=line@entry=260,
>     function=function@entry=0xaaaae0e522c0 <__PRETTY_FUNCTION__.3> "bdrv_graph_rdlock_main_loop") at assert.c:101
>     at ../qemu-xen-dir-remote/block/graph-lock.c:260
>     at /home/Freenix/work/sw-stash/xen/upstream/tools/qemu-xen-dir-remote/include/block/graph-lock.h:259
>     host=host@entry=0xffff742c8000, size=size@entry=2097152)
>     at ../qemu-xen-dir-remote/block/io.c:3362
>     host=0xffff742c8000, size=2097152)
>     at ../qemu-xen-dir-remote/block/block-backend.c:2859
>     host=<optimized out>, size=<optimized out>, max_size=<optimized out>)
>     at ../qemu-xen-dir-remote/block/block-ram-registrar.c:33
>     size=2097152, max_size=2097152)
>     at ../qemu-xen-dir-remote/hw/core/numa.c:883
>     buffer=buffer@entry=0xffff743c5000 "")
>     at ../qemu-xen-dir-remote/hw/xen/xen-mapcache.c:475
>     buffer=buffer@entry=0xffff743c5000 "")
>     at ../qemu-xen-dir-remote/hw/xen/xen-mapcache.c:487
>     as=as@entry=0xaaaae1ca3ae8 <address_space_memory>, buffer=0xffff743c5000,
>     len=<optimized out>, is_write=is_write@entry=true,
>     access_len=access_len@entry=32768)
>     at ../qemu-xen-dir-remote/system/physmem.c:3199
>     dir=DMA_DIRECTION_FROM_DEVICE, len=<optimized out>,
>     buffer=<optimized out>, as=0xaaaae1ca3ae8 <address_space_memory>)
>     at /home/Freenix/work/sw-stash/xen/upstream/tools/qemu-xen-dir-remote/include/sysemu/dma.h:236
>     elem=elem@entry=0xaaaaf620aa30, len=len@entry=32769)
>     at ../qemu-xen-dir-remote/hw/virtio/virtio.c:758
>     elem=elem@entry=0xaaaaf620aa30, len=len@entry=32769, idx=idx@entry=0)
>     at ../qemu-xen-dir-remote/hw/virtio/virtio.c:919
>     elem=elem@entry=0xaaaaf620aa30, len=32769)
>     at ../qemu-xen-dir-remote/hw/virtio/virtio.c:994
>     req=req@entry=0xaaaaf620aa30, status=status@entry=0 '\000')
>     at ../qemu-xen-dir-remote/hw/block/virtio-blk.c:67
>     ret=0) at ../qemu-xen-dir-remote/hw/block/virtio-blk.c:136
>     at ../qemu-xen-dir-remote/block/block-backend.c:1559
> --Type <RET> for more, q to quit, c to continue without paging--
>     at ../qemu-xen-dir-remote/block/block-backend.c:1614
>     i1=<optimized out>) at ../qemu-xen-dir-remote/util/coroutine-ucontext.c:177
>     at ../sysdeps/unix/sysv/linux/aarch64/setcontext.S:123
> 
> Signed-off-by: Peng Fan <peng.fan@nxp.com>

Reviewed-by: Stefano Stabellini <sstabellini@kernel.org>


> 
> V2:
>  Drop unused ret in XenMapCacheData (thanks Stefano)
> 
>  hw/xen/xen-mapcache.c | 30 ++++++++++++++++++++++++++++--
>  1 file changed, 28 insertions(+), 2 deletions(-)
> 
> diff --git a/hw/xen/xen-mapcache.c b/hw/xen/xen-mapcache.c
> index f7d974677d..8d62b3d2ed 100644
> --- a/hw/xen/xen-mapcache.c
> +++ b/hw/xen/xen-mapcache.c
> @@ -481,11 +481,37 @@ static void xen_invalidate_map_cache_entry_unlocked(uint8_t *buffer)
>      g_free(entry);
>  }
>  
> -void xen_invalidate_map_cache_entry(uint8_t *buffer)
> +typedef struct XenMapCacheData {
> +    Coroutine *co;
> +    uint8_t *buffer;
> +} XenMapCacheData;
> +
> +static void xen_invalidate_map_cache_entry_bh(void *opaque)
>  {
> +    XenMapCacheData *data = opaque;
> +
>      mapcache_lock();
> -    xen_invalidate_map_cache_entry_unlocked(buffer);
> +    xen_invalidate_map_cache_entry_unlocked(data->buffer);
>      mapcache_unlock();
> +
> +    aio_co_wake(data->co);
> +}
> +
> +void coroutine_mixed_fn xen_invalidate_map_cache_entry(uint8_t *buffer)
> +{
> +    if (qemu_in_coroutine()) {
> +        XenMapCacheData data = {
> +            .co = qemu_coroutine_self(),
> +            .buffer = buffer,
> +        };
> +        aio_bh_schedule_oneshot(qemu_get_current_aio_context(),
> +                                xen_invalidate_map_cache_entry_bh, &data);
> +        qemu_coroutine_yield();
> +    } else {
> +        mapcache_lock();
> +        xen_invalidate_map_cache_entry_unlocked(buffer);
> +        mapcache_unlock();
> +    }
>  }
>  
>  void xen_invalidate_map_cache(void)
> -- 
> 2.35.3
> 


From xen-devel-bounces@lists.xenproject.org Wed Jan 24 01:22:56 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 24 Jan 2024 01:22:56 +0000
Received: from list by lists.xenproject.org with outflank-mailman.670674.1043612 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSRye-0008Ik-VX; Wed, 24 Jan 2024 01:22:52 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 670674.1043612; Wed, 24 Jan 2024 01:22:52 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSRye-0008Id-Ss; Wed, 24 Jan 2024 01:22:52 +0000
Received: by outflank-mailman (input) for mailman id 670674;
 Wed, 24 Jan 2024 01:22:52 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rSRye-0008IT-Hg; Wed, 24 Jan 2024 01:22:52 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rSRye-0006zX-8L; Wed, 24 Jan 2024 01:22:52 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rSRyd-0003BX-R0; Wed, 24 Jan 2024 01:22:51 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rSRyd-0000oc-QV; Wed, 24 Jan 2024 01:22:51 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=BL+nSOROlHQS1GZGsiYwst4HRXk+yrDTdYlvcCmJUuo=; b=aAiH8izvjY1WXMX3w2XlAScXrs
	VJMgl1Nudv89T1C9APHbdMcz4hjuP/+JYIQY13zw6n2hCJjXD8NSK55RaSBqNiV1V8SPqYudhhEO/
	wJt7Zl3U0s3s9FevGs+VexxRIxrsb3LNIYIEqCNZwUUijDoWkqo2i/q735jDG1X77NyA=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184432-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [linux-linus test] 184432: tolerable FAIL - PUSHED
X-Osstest-Failures:
    linux-linus:test-armhf-armhf-libvirt:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    linux-linus:test-amd64-amd64-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    linux-linus:test-amd64-amd64-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-qcow2:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-raw:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    linux-linus:test-amd64-amd64-qemuu-nested-amd:debian-hvm-install/l1/l2:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-xsm:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-thunderx:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-thunderx:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-libvirt-xsm:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-credit2:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-libvirt-xsm:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-credit2:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-xsm:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-xsm:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-credit1:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-credit1:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-arndale:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-arndale:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-multivcpu:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-multivcpu:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-rtds:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-rtds:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-libvirt-raw:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-vhd:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-vhd:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-qcow2:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-vhd:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-vhd:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-qcow2:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit1:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit1:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit2:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit2:saverestore-support-check:fail:nonblocking
X-Osstest-Versions-This:
    linux=7ed2632ec7d72e926b9e8bcc9ad1bb0cd37274bf
X-Osstest-Versions-That:
    linux=610347effc2ecb5ededf5037e82240b151f883ab
From: osstest service owner <osstest-admin@xenproject.org>
Date: Wed, 24 Jan 2024 01:22:51 +0000

flight 184432 linux-linus real [real]
http://logs.test-lab.xenproject.org/osstest/logs/184432/

Failures :-/ but no regressions.

Tests which did not succeed, but are not blocking:
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 184427
 test-amd64-amd64-xl-qemut-win7-amd64 19 guest-stop            fail like 184427
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 184427
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 184427
 test-armhf-armhf-libvirt-qcow2 15 saverestore-support-check   fail like 184427
 test-armhf-armhf-libvirt-raw 15 saverestore-support-check    fail  like 184427
 test-amd64-amd64-xl-qemut-ws16-amd64 19 guest-stop            fail like 184427
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 184427
 test-amd64-amd64-libvirt     15 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-thunderx 15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-thunderx 16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl          15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl          16 saverestore-support-check    fail   never pass
 test-arm64-arm64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit2  15 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-xsm 16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-credit2  16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-xsm      15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-xsm      16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-credit1  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit1  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-arndale  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-arndale  16 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-armhf-armhf-xl-multivcpu 15 migrate-support-check        fail  never pass
 test-armhf-armhf-xl-multivcpu 16 saverestore-support-check    fail  never pass
 test-armhf-armhf-libvirt     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-rtds     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-rtds     16 saverestore-support-check    fail   never pass
 test-arm64-arm64-libvirt-raw 14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 15 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-raw 14 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-vhd      14 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-vhd      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-qcow2 14 migrate-support-check        fail never pass
 test-armhf-armhf-libvirt-raw 14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      15 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-qcow2 14 migrate-support-check        fail never pass
 test-armhf-armhf-xl          15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-credit1  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit1  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-credit2  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit2  16 saverestore-support-check    fail   never pass

version targeted for testing:
 linux                7ed2632ec7d72e926b9e8bcc9ad1bb0cd37274bf
baseline version:
 linux                610347effc2ecb5ededf5037e82240b151f883ab

Last test of basis   184427  2024-01-22 18:10:39 Z    1 days
Testing same since   184432  2024-01-23 05:00:38 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Chung-Chiang Cheng <cccheng@synology.com>
  David Sterba <dsterba@suse.com>
  Dmitry Antipov <dmantipov@yandex.ru>
  Fedor Pchelkin <pchelkin@ispras.ru>
  Josef Bacik <josef@toxicpanda.com>
  Linus Torvalds <torvalds@linux-foundation.org>
  Naohiro Aota <naohiro.aota@wdc.com>
  Omar Sandoval <osandov@fb.com>
  Qu Wenruo <wqu@suse.com>
  Rongrong <i@rong.moe>

jobs:
 build-amd64-xsm                                              pass    
 build-arm64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64                                                  pass    
 build-arm64                                                  pass    
 build-armhf                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-arm64-libvirt                                          pass    
 build-armhf-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-pvops                                            pass    
 build-arm64-pvops                                            pass    
 build-armhf-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-amd64-amd64-xl                                          pass    
 test-amd64-coresched-amd64-xl                                pass    
 test-arm64-arm64-xl                                          pass    
 test-armhf-armhf-xl                                          pass    
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm           pass    
 test-amd64-amd64-xl-qemut-stubdom-debianhvm-amd64-xsm        pass    
 test-amd64-amd64-xl-qemut-debianhvm-i386-xsm                 pass    
 test-amd64-amd64-xl-qemuu-debianhvm-i386-xsm                 pass    
 test-amd64-amd64-libvirt-xsm                                 pass    
 test-arm64-arm64-libvirt-xsm                                 pass    
 test-amd64-amd64-xl-xsm                                      pass    
 test-arm64-arm64-xl-xsm                                      pass    
 test-amd64-amd64-qemuu-nested-amd                            fail    
 test-amd64-amd64-xl-pvhv2-amd                                pass    
 test-amd64-amd64-dom0pvh-xl-amd                              pass    
 test-amd64-amd64-xl-qemut-debianhvm-amd64                    pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64                    pass    
 test-amd64-amd64-freebsd11-amd64                             pass    
 test-amd64-amd64-freebsd12-amd64                             pass    
 test-amd64-amd64-xl-qemuu-ovmf-amd64                         pass    
 test-amd64-amd64-xl-qemut-win7-amd64                         fail    
 test-amd64-amd64-xl-qemuu-win7-amd64                         fail    
 test-amd64-amd64-xl-qemut-ws16-amd64                         fail    
 test-amd64-amd64-xl-qemuu-ws16-amd64                         fail    
 test-armhf-armhf-xl-arndale                                  pass    
 test-amd64-amd64-examine-bios                                pass    
 test-amd64-amd64-xl-credit1                                  pass    
 test-arm64-arm64-xl-credit1                                  pass    
 test-armhf-armhf-xl-credit1                                  pass    
 test-amd64-amd64-xl-credit2                                  pass    
 test-arm64-arm64-xl-credit2                                  pass    
 test-armhf-armhf-xl-credit2                                  pass    
 test-amd64-amd64-xl-qemuu-dmrestrict-amd64-dmrestrict        pass    
 test-amd64-amd64-examine                                     pass    
 test-arm64-arm64-examine                                     pass    
 test-armhf-armhf-examine                                     pass    
 test-amd64-amd64-qemuu-nested-intel                          pass    
 test-amd64-amd64-xl-pvhv2-intel                              pass    
 test-amd64-amd64-dom0pvh-xl-intel                            pass    
 test-amd64-amd64-libvirt                                     pass    
 test-armhf-armhf-libvirt                                     pass    
 test-amd64-amd64-xl-multivcpu                                pass    
 test-armhf-armhf-xl-multivcpu                                pass    
 test-amd64-amd64-pair                                        pass    
 test-amd64-amd64-libvirt-pair                                pass    
 test-amd64-amd64-xl-pvshim                                   pass    
 test-amd64-amd64-pygrub                                      pass    
 test-amd64-amd64-libvirt-qcow2                               pass    
 test-armhf-armhf-libvirt-qcow2                               pass    
 test-amd64-amd64-libvirt-raw                                 pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-armhf-armhf-libvirt-raw                                 pass    
 test-amd64-amd64-xl-rtds                                     pass    
 test-armhf-armhf-xl-rtds                                     pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64-shadow             pass    
 test-amd64-amd64-xl-shadow                                   pass    
 test-arm64-arm64-xl-thunderx                                 pass    
 test-amd64-amd64-examine-uefi                                pass    
 test-amd64-amd64-xl-vhd                                      pass    
 test-arm64-arm64-xl-vhd                                      pass    
 test-armhf-armhf-xl-vhd                                      pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Pushing revision :

hint: The 'hooks/update' hook was ignored because it's not set as executable.
hint: You can disable this warning with `git config advice.ignoredHook false`.
hint: The 'hooks/post-receive' hook was ignored because it's not set as executable.
hint: You can disable this warning with `git config advice.ignoredHook false`.
hint: The 'hooks/post-update' hook was ignored because it's not set as executable.
hint: You can disable this warning with `git config advice.ignoredHook false`.
To xenbits.xen.org:/home/xen/git/linux-pvops.git
   610347effc2e..7ed2632ec7d7  7ed2632ec7d72e926b9e8bcc9ad1bb0cd37274bf -> tested/linux-linus


From xen-devel-bounces@lists.xenproject.org Wed Jan 24 01:27:36 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 24 Jan 2024 01:27:36 +0000
Received: from list by lists.xenproject.org with outflank-mailman.670681.1043621 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSS3C-0000fQ-KJ; Wed, 24 Jan 2024 01:27:34 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 670681.1043621; Wed, 24 Jan 2024 01:27:34 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSS3C-0000fJ-Hi; Wed, 24 Jan 2024 01:27:34 +0000
Received: by outflank-mailman (input) for mailman id 670681;
 Wed, 24 Jan 2024 01:27:32 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=qhqj=JC=gmail.com=simonpatp@srs-se1.protection.inumbo.net>)
 id 1rSS3A-0000fD-Mo
 for xen-devel@lists.xenproject.org; Wed, 24 Jan 2024 01:27:32 +0000
Received: from mail-lj1-x22e.google.com (mail-lj1-x22e.google.com
 [2a00:1450:4864:20::22e])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id bdd71553-ba57-11ee-98f5-6d05b1d4d9a1;
 Wed, 24 Jan 2024 02:27:30 +0100 (CET)
Received: by mail-lj1-x22e.google.com with SMTP id
 38308e7fff4ca-2cddb2c2b54so49852641fa.1
 for <xen-devel@lists.xenproject.org>; Tue, 23 Jan 2024 17:27:30 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: bdd71553-ba57-11ee-98f5-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1706059650; x=1706664450; darn=lists.xenproject.org;
        h=cc:to:subject:message-id:date:from:in-reply-to:references
         :mime-version:from:to:cc:subject:date:message-id:reply-to;
        bh=HBZztE6RWwgPFVzaUGQqSVvdSWX5myz674OYD5Y0Qxc=;
        b=KYaFWbUvMNSC3MNTT5+7A42qduUBQ691IE3uMFcglV8ebTsT6ezrqBUvQCQPaW07mG
         HpedUkxDU0nh6kyXPWTHnfLtseypSYO25Q6/9MRWuEHJMuqDshcAX58PlQN4/P8tymp1
         h1ZdrrAeiu6TyBgiM+9BFpFP90u8yUfO3OEKIEFKckjapvAWXvm+2pqcZdT2jzcPTc4C
         wfupZyTn+l5UwOxbVHqHJgiOff7ryuzH1Ija1fAMElnbzHHpoiLs9Lf0+k/SNdd5gZMJ
         3BB19DFs1O4+X2mnZiq/qsuQdXkEnWr4CvgbhRG71C3+SW8EtGlD7ixFFR2sQV/6B99C
         Cytg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706059650; x=1706664450;
        h=cc:to:subject:message-id:date:from:in-reply-to:references
         :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id
         :reply-to;
        bh=HBZztE6RWwgPFVzaUGQqSVvdSWX5myz674OYD5Y0Qxc=;
        b=ZfuqfcGV6nyrbwXmXhVeaiXkcY9n2xwWYJ5rgLC4F84pq3D7GFxCTM8D/eZMVHMF4B
         sNQt15fKxDsSwtJLM9k8Egq6o5+26dVmgZQfUTljMeDxmlGn77l7aTaqpbS2CwHc+bUN
         cGSsjsT/K7aoasw+nXC9KQzHZsvofDVp+uAvyZWkgzxEB5VMNnbGMrWgEyRZ8jUa8qnj
         svz8UIsEvfXjxblcEDYU1RtDeFMHT+XuIyNAGtqrz+c5apiTpiyeGnKTDUTzF60oXWa0
         3ghz/qtmAkSI3iXbrvTFOv6VEffxkg9MV7In4K3A4t/Csk62wZCD8Y9GbkYpSnMmGdPC
         jAYA==
X-Gm-Message-State: AOJu0Ywx8we0dvqNdoO7awJ6S9UHOD7YCS0sT2Zob9mn51GOS4vd1N5j
	uWeDUPsbQl0/Xq4Pc2+YP/W057WXgFN3UUe3tNckneDTZgsAkE6tW2hwhsOtg96GuFY7cAYRQDD
	dsM3gqEXgBI4APyi3oV1AxLT2YRM=
X-Google-Smtp-Source: AGHT+IGHMfm5pWKcwlxRduJtC0qwEnaTraRFciRiJ3EmWHtuxvXdduyO+MNGwwNx4pml6IB2mx2OSOVxHF0cvCcQ1mo=
X-Received: by 2002:a2e:be1d:0:b0:2cd:9063:4136 with SMTP id
 z29-20020a2ebe1d000000b002cd90634136mr412673ljq.47.1706059649796; Tue, 23 Jan
 2024 17:27:29 -0800 (PST)
MIME-Version: 1.0
References: <CAOCpoWeowZPuQTeBp9nu8p8CDtE=u++wN_UqRoABZtB57D50Qw@mail.gmail.com>
 <ac742d12-ec91-4215-bb42-82a145924b4f@suse.com> <CAOCpoWfQmkhN3hms1xuotSUZzVzR99i9cNGGU2r=yD5PjysMiQ@mail.gmail.com>
 <fa23a590-5869-4e11-8998-1d03742c5919@suse.com> <CAOCpoWf4CMkCWx8uR2NbFrZrKSS78wj1-hFsAUqsjCfsmqooVA@mail.gmail.com>
 <Zajg1O7Z52VTBq31@macbook> <CAOCpoWeO9h7b_CjJb9jtKaEUVv_=XDSVkr55QSg3ArFc4n8G2w@mail.gmail.com>
 <ZajzcpArQYQhdj3T@macbook> <ZakcdfS3UwEb0oh2@macbook> <CAOCpoWdL3YnpitZxEoFgdvtZ6juy8oykYj6fX_tv4QLvj2Fv0g@mail.gmail.com>
 <ZapXoOKdhWgJFxbF@macbook> <CAOCpoWccvC91FiJr_MpVxXYqOfZxAn6bKkr6vQG+6p4WbxT03A@mail.gmail.com>
In-Reply-To: <CAOCpoWccvC91FiJr_MpVxXYqOfZxAn6bKkr6vQG+6p4WbxT03A@mail.gmail.com>
From: Patrick Plenefisch <simonpatp@gmail.com>
Date: Tue, 23 Jan 2024 20:27:18 -0500
Message-ID: <CAOCpoWf0pfp72=X9iqziP+uVkLwB0HRp3gvQhPOsHWEtFzZgVA@mail.gmail.com>
Subject: Re: ACPI VFCT table too short on PVH dom0 (was: Re: E820 memory
 allocation issue on Threadripper platforms)
To: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
Cc: Jan Beulich <jbeulich@suse.com>, xen-devel@lists.xenproject.org, 
	Juergen Gross <jgross@suse.com>, Huang Rui <ray.huang@amd.com>, Jiqian Chen <Jiqian.Chen@amd.com>
Content-Type: multipart/alternative; boundary="000000000000644f35060fa6f73a"

--000000000000644f35060fa6f73a
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

On Sat, Jan 20, 2024 at 8:33=E2=80=AFPM Patrick Plenefisch <simonpatp@gmail=
.com>
wrote:

>
>
> On Fri, Jan 19, 2024 at 6:06=E2=80=AFAM Roger Pau Monn=C3=A9 <roger.pau@c=
itrix.com>
> wrote:
>
>> On Fri, Jan 19, 2024 at 02:44:35AM -0500, Patrick Plenefisch wrote:
>> > On Thu, Jan 18, 2024 at 7:41=E2=80=AFAM Roger Pau Monn=C3=A9 <roger.pa=
u@citrix.com>
>> > wrote:
>> >
>> > >
>> > > From that environment (PVH dom0) can you see if you can dump the
>> > > contents of the VFCT table?  I don't have a system with that table, =
so
>> > > not sure if this will work (because iasl is unlikely to know how to
>> > > decode it):
>> > >
>> > > # acpidump -n VFCT -o table.dump
>> > > # acpixtract -a table.dump
>> > > # iasl -d vfct.dat
>> > > # cat vfct.dsl
>> > >
>> > > Would be good if you can compare the output from what you get on a P=
V
>> > > dom0 or when running native Linux.
>> > >
>> > > I'm also adding some AMD folks, as IIRC they did some fixes to Linux
>> > > in order to get some AMD graphics cards running on a PVH dom0, maybe
>> > > they can provide some additional input.
>> > >
>> > >
>> > Well, this is pretty weird. I'll go into more details because it may b=
e
>> > relevant.
>>
>> Wow, you have certainly gone out of the beaten path here.
>>
>
> Yeah, I wasn't expecting this many issues for being an early adopter of
> Threaderipper 7000!
>
>
>>
>> > I had been working with ASRock support ever since I got my brand
>> > new motherboard because I couldn't see the BIOS/UEFI screens. I could
>> boot
>> > up, and once native linux took control amdgpu got the screens/gpu
>> working
>> > fine. I finally managed to be able to see the UEFI/BIOS setup screens =
by
>> > patching my VBIOS: I extracted the VBIOS image of a cheap R5 430 OEM,
>> ran
>> > GOPupd to update the VBIOS UEFI component (GOP) from version 1.60 to
>> 1.67.
>> > That allowed the UEFI to actually initialize and use a screen. However=
,
>> I
>> > later realized that only 1 monitor was lighting up in the bios: my
>> monitor
>> > plugged into the Radeon RX 480 that was still on VBIOS GOP 1.60. It
>> appears
>> > the GOP was initializing the RX 480 too, despite not being flashed wit=
h
>> the
>> > latest itself. I am working on an email to asrock support about that.
>> Once
>> > I get into linux (native or PV), both monitors light up as expected.
>> Also,
>> > If I boot linux PVH from grub, they also work.
>>
>> OK, that's good, so that would be UEFI -> grub -> Xen -> Linux PVH?
>>
>
> Correct. Inserting grub into the chain "fixes" the acpi tables and things
> work correctly.
>

Ok, I am not sure what I did the other day to get it to work, but I can't
replicate *any* PVH success today. One driver (radeon or amdgpu) always
complains the VFCT table is wrong, and leads to the symptoms previously
reported.

I'm definitely able to help provide access to this machine in order to
debug this


>
>
>>
>> > Those usage scenarios have
>> > acpidump output as identical. Booting linux PVH directly from UEFI (no
>> > grub), the monitors go to sleep on the RX 480, and amdgpu errors out
>> about
>> > VFCT, but the R5 430 OEM does still have output. Interestingly, there
>> is a
>> > different screen mode booting UEFI+PVH, the characters are basically
>> > squares, with more vertical lines than "default", maybe close to nativ=
e
>> > screen resolution, but horizontally it's still "default". Booting from
>> grub
>> > gives everything in the "default" resolution.
>>
>> Hm, maybe we are not passing the correct video information to Linux
>> dom0 when booted from UEFI.  I'm afraid I don't have such setup
>> myself, so it's going to be hard to test.
>>
>> To clarify, the output from Xen is fine, is the video output from
>> Linux dom0 in PVH mode that's corrupt?
>>
>
> Xen output in EFI+PV/GRUB+PV/GRUB+PVH: Rectangular letters (expected/good=
)
> Linux output in EFI+PV/GRUB+PV/GRUB+PVH: Rectangular letters -> kms fb ->
> X11 (using this mode as I type this email right now)
> Xen output in EFI+PVH: Squashed square letters (unexpected)
> Linux output in EFI+PVH: No output on RX 480, but R5 430 shows a (static?=
)
> login console on hvc0 that I can't interact with.
>
>
>>
>> >
>> > So what is in the VFCT Table? VFCT contains the non-GOP VIOS image of =
my
>> > Radeon RX 480 GPU. You can compare it to the VBIOS hosted at
>> > https://www.techpowerup.com/vgabios/185789/msi-rx480-4096-160720
>> (Compare
>> > the end at E667 in the VFCT table to E5ff in that vbios link). I find
>> this
>> > extra suspicious due to the above.
>> >
>> > Now for the extra horrible things:
>> >
>> > UEFI-booted PVH Linux doesn't support keyboard getty input, and at lea=
st
>> > some of the USB devices are not in lsusb. It also decided to vanish on=
e
>> of
>> > my HDD's. The `reboot` command hangs. The Power button doesn't do
>> anything.
>>
>> Yes, it does seem Lunux has issues reserving some BARs:
>>
>> [    6.520615] ahci 0000:07:00.1: version 3.0
>> [    6.520701] ahci 0000:07:00.1: BAR 5: can't reserve [mem
>> 0xf0e00000-0xf0e007ff]
>> ...
>> [   17.130099] ccp 0000:06:00.5: enabling device (0000 -> 0002)
>> [   17.137025] ccp 0000:06:00.5: BAR 2: can't reserve [mem
>> 0xf0b00000-0xf0bfffff]
>> [   17.145210] ccp 0000:06:00.5: pcim_iomap_regions failed (-16)
>> [   17.151868] ccp 0000:06:00.5: initialization failed
>> [   17.157615] ccp: probe of 0000:06:00.5 failed with error -16
>> ...
>> [   17.993532] snd_hda_intel 0000:01:00.1: enabling device (0000 -> 0002=
)
>> [   18.001207] snd_hda_intel 0000:01:00.1: Force to non-snoop mode
>> [   18.007997] snd_hda_intel 0000:01:00.1: BAR 0: can't reserve [mem
>> 0xf0f60000-0xf0f63fff 64bit]
>> [   18.018053] snd_hda_intel 0000:06:00.7: enabling device (0000 -> 0002=
)
>> [   18.025723] snd_hda_intel 0000:06:00.7: BAR 0: can't reserve [mem
>> 0xf0d00000-0xf0d07fff]
>> [   18.033679] snd_hda_intel 0000:41:00.1: enabling device (0000 -> 0002=
)
>> [   18.043165] snd_hda_intel 0000:41:00.1: Force to non-snoop mode
>>
>> I bet this because Xen balloon driver has started picking up those
>> regions in order to map foreign pages.
>>
>> > There are several stack traces in dmesg. But Alt-SysRq-B does reboot!
>> > Luckily I could ssh in and capture the ACPI tables. They are much
>> smaller,
>> > and VFCT is empty.  Booting back to one of the working scenarios (dire=
ct
>> > linux, Grub PV, Grub PVH, UEFI PV), all of this is normal.
>> >
>> > I've attached:
>> >
>> > xenboot.log which is the serial log of xen+linux booting in UEFI PVH
>> > (kernel is debian's config, but patched to start at 2MiB)
>> > dmesg.txt which is the linux dmesg that contains some nice stack trace=
s
>> > (kernel is debian's config, but patched to start at 2MiB)
>> > efipvh-tables.dump is ALL acpi tables from UEFI+PVH mode (acpidump -o
>> > efipvh-tables.dump)
>> > working-tables.dump is ALL acpi tables from the other modes (acpidump =
-o
>> > working-tables.dump)
>> > efipvh-vfct.dump is attached in spirit, as it is 0 bytes long (acpidum=
p
>> -n
>> > VFCT -o efipvh-vfct.dump)
>> >
>> > I ran iasl, but it just said **** Unknown ACPI table signature [VFCT]
>> and
>> > spat out the raw data table, nothing interesting
>> >
>> > Something I can try, but have been nervous to try due to GOPupd
>> warnings is
>> > to also flash the 1.67 GOP to the VBIOS on the RX 480. The R5 430 OEM
>> had
>> > no such warnings.
>> >
>> > Patrick
>>
>> > [    0.000000] Linux version 6.1.69 (root@pollux) (gcc (Debian
>> 12.2.0-14) 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #10 SMP
>> PREEMPT_DYNAMIC Wed Jan 17 23:44:31 EST 2024
>> > [    0.000000] Command line:
>> root=3DUUID=3D922b10f2-a826-47fb-ab38-836f9b397ff7 ro rootflags=3Dsubvol=
=3D@rootfs
>> earlyprintk=3Dxen console=3Dhvc0
>> > [    0.000000] [Firmware Bug]: TSC doesn't count with P0 frequency!
>> > [    0.000000] BIOS-provided physical RAM map:
>> > [    0.000000] BIOS-e820: [mem 0x0000000000000000-0x000000000009ffff]
>> usable
>> > [    0.000000] BIOS-e820: [mem 0x00000000000a0000-0x00000000000fffff]
>> reserved
>> > [    0.000000] BIOS-e820: [mem 0x0000000000100000-0x0000000003ffffff]
>> usable
>> > [    0.000000] BIOS-e820: [mem 0x0000000004000000-0x0000000004045fff]
>> ACPI NVS
>> > [    0.000000] BIOS-e820: [mem 0x0000000004046000-0x0000000009afefff]
>> usable
>> > [    0.000000] BIOS-e820: [mem 0x0000000009aff000-0x0000000009ffffff]
>> reserved
>> > [    0.000000] BIOS-e820: [mem 0x000000000a000000-0x000000000affffff]
>> usable
>> > [    0.000000] BIOS-e820: [mem 0x000000000b000000-0x000000000b020fff]
>> reserved
>> > [    0.000000] BIOS-e820: [mem 0x000000000b021000-0x00000000a04e8fff]
>> usable
>> > [    0.000000] BIOS-e820: [mem 0x00000000a04e9000-0x00000000a64e8fff]
>> reserved
>> > [    0.000000] BIOS-e820: [mem 0x00000000a64e9000-0x00000000a747efff]
>> ACPI data
>> > [    0.000000] BIOS-e820: [mem 0x00000000a747f000-0x00000000a947efff]
>> ACPI NVS
>> > [    0.000000] BIOS-e820: [mem 0x00000000a947f000-0x00000000addfefff]
>> reserved
>> > [    0.000000] BIOS-e820: [mem 0x00000000addff000-0x00000000afffab9b]
>> usable
>> > [    0.000000] BIOS-e820: [mem 0x00000000afffab9c-0x00000000afffaf17]
>> ACPI data
>> > [    0.000000] BIOS-e820: [mem 0x00000000afffb000-0x00000000bfffffff]
>> reserved
>> > [    0.000000] BIOS-e820: [mem 0x00000000df200000-0x00000000df2fffff]
>> reserved
>> > [    0.000000] BIOS-e820: [mem 0x00000000e0000000-0x00000000efffffff]
>> reserved
>> > [    0.000000] BIOS-e820: [mem 0x00000000fea00000-0x00000000feafffff]
>> reserved
>> > [    0.000000] BIOS-e820: [mem 0x00000000fec00000-0x00000000fec00fff]
>> reserved
>> > [    0.000000] BIOS-e820: [mem 0x00000000fec10000-0x00000000fec10fff]
>> reserved
>> > [    0.000000] BIOS-e820: [mem 0x00000000fec30000-0x00000000fec30fff]
>> reserved
>> > [    0.000000] BIOS-e820: [mem 0x00000000fed00000-0x00000000fed00fff]
>> reserved
>> > [    0.000000] BIOS-e820: [mem 0x00000000fed40000-0x00000000fed44fff]
>> reserved
>> > [    0.000000] BIOS-e820: [mem 0x00000000fed80000-0x00000000fed8ffff]
>> reserved
>> > [    0.000000] BIOS-e820: [mem 0x00000000ff000000-0x00000000ffffffff]
>> reserved
>> > [    0.000000] BIOS-e820: [mem 0x0000000100000000-0x000000025dee2fff]
>> usable
>> > [    0.000000] BIOS-e820: [mem 0x000000025dee3000-0x000000403dbbffff]
>> unusable
>> > [    0.000000] BIOS-e820: [mem 0x000000403dbc0000-0x000000403fffffff]
>> reserved
>> > [    0.000000] printk: bootconsole [xenboot0] enabled
>> > [    0.000000] NX (Execute Disable) protection: active
>> > [    0.000000] efi: EFI v2.90 by American Megatrends
>> > [    0.000000] efi: ACPI=3D0xa9463000 ACPI 2.0=3D0xa9463014
>> SMBIOS=3D0xad9f4000 SMBIOS 3.0=3D0xad9f3000 MEMATTR=3D0x99e26698 ESRT=3D=
0xa7466018
>> > [    0.000000] secureboot: Secure boot disabled
>> > [    0.000000] SMBIOS 3.6.0 present.
>> > [    0.000000] DMI: To Be Filled By O.E.M. TRX50 WS/TRX50 WS, BIOS 7.0=
8
>> 01/16/2024
>> > [    0.000000] Hypervisor detected: Xen HVM
>> > [    0.000000] Xen version 4.17.
>> > [    0.000003] HVMOP_pagetable_dying not supported
>> > [    0.043916] tsc: Fast TSC calibration failed
>> > [    0.048843] tsc: Detected 4199.960 MHz processor
>> > [    0.054365] e820: update [mem 0x00000000-0x00000fff] usable =3D=3D>
>> reserved
>> > [    0.054368] e820: remove [mem 0x000a0000-0x000fffff] usable
>> > [    0.054375] last_pfn =3D 0x25dee3 max_arch_pfn =3D 0x400000000
>> > [    0.062033] x86/PAT: Configuration [0-7]: WB  WC  UC- UC  WB  WP
>> UC- WT
>> > [    0.070417] CPU MTRRs all blank - virtualized system.
>> > [    0.076209] last_pfn =3D 0xafffa max_arch_pfn =3D 0x400000000
>> > [    0.085594] Using GB pages for direct mapping
>> > [    0.091184] RAMDISK: [mem 0x04046000-0x068cdfff]
>> > [    0.096533] ACPI: Early table checksum verification disabled
>> > [    0.103248] ACPI: RSDP 0x00000000AFFFAB9C 000024 (v02 AMD   )
>> > [    0.109716] ACPI: XSDT 0x00000000AFFFABC0 0000C4 (v01 AMD    A M I
>>   00000001 AMI  01000013)
>> > [    0.119663] ACPI: APIC 0x00000000AFFFAC84 00037C (v04 AMD    A M I
>>   00000001 AMI  00010013)
>> > [    0.129538] ACPI: FACP 0x00000000A747C000 000114 (v06 AMD    A M I
>>   00000001 AMI  00010013)
>> > [    0.139250] ACPI: DSDT 0x00000000A746E000 00D2F6 (v02 AMD    A M I
>>   00000001 INTL 20230331)
>> > [    0.148717] ACPI: FACS 0x00000000A945A000 000040
>> > [    0.153805] ACPI: SSDT 0x00000000A747E000 0009CC (v02 AMD
>> BOULDERG 00000002 MSFT 04000000)
>> > [    0.163309] ACPI: SSDT 0x00000000A747D000 000067 (v02 AMD    CPMDSM
>>  00000001 INTL 20230331)
>> > [    0.172813] ACPI: MCFG 0x00000000A746C000 00003C (v01 AMD    A M I
>>   00000001 MSFT 00010013)
>> > [    0.182351] ACPI: SSDT 0x00000000A746B000 0005C5 (v02 AMD
>> CPUSSDT  00000001 AMI  00000001)
>> > [    0.191806] ACPI: SSDT 0x00000000A7468000 001B53 (v02 AMD    CPMRAS
>>  00000001 INTL 20230331)
>> > [    0.201308] ACPI: FPDT 0x00000000A7465000 000044 (v01 AMD    A M I
>>   01072009 AMI  01000013)
>> > [    0.210819] ACPI: SSDT 0x00000000A7462000 002448 (v02 AMD
>> GPP_PME_ 00000001 INTL 20230331)
>> > [    0.220343] ACPI: SSDT 0x00000000A745F000 002448 (v02 AMD
>> GPP_PME_ 00000001 INTL 20230331)
>> > [    0.229884] ACPI: SSDT 0x00000000A745C000 002448 (v02 AMD
>> GPP_PME_ 00000001 INTL 20230331)
>> > [    0.239351] ACPI: SSDT 0x00000000A7459000 002448 (v02 AMD
>> GPP_PME_ 00000001 INTL 20230331)
>> > [    0.248780] ACPI: SSDT 0x00000000A743E000 00A40E (v02 AMD    AMD
>> CPU  00000001 AMD  00000001)
>> > [    0.258288] ACPI: SSDT 0x00000000A684C000 0006D4 (v02 AMD
>> CPMWLRC  00000001 INTL 20230331)
>> > [    0.267815] ACPI: SSDT 0x00000000A6842000 00982F (v02 AMD    CPMCMN
>>  00000001 INTL 20230331)
>> > [    0.277339] ACPI: SSDT 0x00000000A683C000 002387 (v02 AMD    AOD
>>   00000001 INTL 20230331)
>> > [    0.286840] ACPI: SSDT 0x00000000A683B000 000500 (v02 AMD
>> MEMTOOL0 00000002 INTL 20230331)
>> > [    0.296283] ACPI: SSDT 0x00000000A683A000 00096A (v02 AMD
>> CPMMSOSC 00000001 INTL 20230331)
>> > [    0.305841] ACPI: SSDT 0x00000000A6839000 000B72 (v02 AMD
>> CPMACPV6 00000001 INTL 20230331)
>> > [    0.315288] ACPI: SSDT 0x00000000A6838000 00044E (v02 AMD
>> AmdTable 00000001 INTL 20230331)
>> > [    0.324802] ACPI: Reserving APIC table memory at [mem
>> 0xafffac84-0xafffafff]
>> > [    0.332592] ACPI: Reserving FACP table memory at [mem
>> 0xa747c000-0xa747c113]
>> > [    0.340419] ACPI: Reserving DSDT table memory at [mem
>> 0xa746e000-0xa747b2f5]
>> > [    0.348189] ACPI: Reserving FACS table memory at [mem
>> 0xa945a000-0xa945a03f]
>> > [    0.356058] ACPI: Reserving SSDT table memory at [mem
>> 0xa747e000-0xa747e9cb]
>> > [    0.363906] ACPI: Reserving SSDT table memory at [mem
>> 0xa747d000-0xa747d066]
>> > [    0.371757] ACPI: Reserving MCFG table memory at [mem
>> 0xa746c000-0xa746c03b]
>> > [    0.379576] ACPI: Reserving SSDT table memory at [mem
>> 0xa746b000-0xa746b5c4]
>> > [    0.387437] ACPI: Reserving SSDT table memory at [mem
>> 0xa7468000-0xa7469b52]
>> > [    0.395337] ACPI: Reserving FPDT table memory at [mem
>> 0xa7465000-0xa7465043]
>> > [    0.403153] ACPI: Reserving SSDT table memory at [mem
>> 0xa7462000-0xa7464447]
>> > [    0.410989] ACPI: Reserving SSDT table memory at [mem
>> 0xa745f000-0xa7461447]
>> > [    0.418802] ACPI: Reserving SSDT table memory at [mem
>> 0xa745c000-0xa745e447]
>> > [    0.426642] ACPI: Reserving SSDT table memory at [mem
>> 0xa7459000-0xa745b447]
>> > [    0.434529] ACPI: Reserving SSDT table memory at [mem
>> 0xa743e000-0xa744840d]
>> > [    0.442393] ACPI: Reserving SSDT table memory at [mem
>> 0xa684c000-0xa684c6d3]
>> > [    0.450203] ACPI: Reserving SSDT table memory at [mem
>> 0xa6842000-0xa684b82e]
>> > [    0.458038] ACPI: Reserving SSDT table memory at [mem
>> 0xa683c000-0xa683e386]
>> > [    0.465853] ACPI: Reserving SSDT table memory at [mem
>> 0xa683b000-0xa683b4ff]
>> > [    0.473805] ACPI: Reserving SSDT table memory at [mem
>> 0xa683a000-0xa683a969]
>> > [    0.481626] ACPI: Reserving SSDT table memory at [mem
>> 0xa6839000-0xa6839b71]
>> > [    0.489475] ACPI: Reserving SSDT table memory at [mem
>> 0xa6838000-0xa683844d]
>>
>> Weird, there's no VFCT listed here.
>>
>> Thanks, Roger.
>>
>

--000000000000644f35060fa6f73a
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><div dir=3D"ltr"><br></div><br><div class=3D"gmail_quote">=
<div dir=3D"ltr" class=3D"gmail_attr">On Sat, Jan 20, 2024 at 8:33=E2=80=AF=
PM Patrick Plenefisch &lt;<a href=3D"mailto:simonpatp@gmail.com">simonpatp@=
gmail.com</a>&gt; wrote:<br></div><blockquote class=3D"gmail_quote" style=
=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding=
-left:1ex"><div dir=3D"ltr"><div dir=3D"ltr"><br></div><br><div class=3D"gm=
ail_quote"><div dir=3D"ltr" class=3D"gmail_attr">On Fri, Jan 19, 2024 at 6:=
06=E2=80=AFAM Roger Pau Monn=C3=A9 &lt;<a href=3D"mailto:roger.pau@citrix.c=
om" target=3D"_blank">roger.pau@citrix.com</a>&gt; wrote:<br></div><blockqu=
ote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px=
 solid rgb(204,204,204);padding-left:1ex">On Fri, Jan 19, 2024 at 02:44:35A=
M -0500, Patrick Plenefisch wrote:<br>
&gt; On Thu, Jan 18, 2024 at 7:41=E2=80=AFAM Roger Pau Monn=C3=A9 &lt;<a hr=
ef=3D"mailto:roger.pau@citrix.com" target=3D"_blank">roger.pau@citrix.com</=
a>&gt;<br>
&gt; wrote:<br>
&gt; <br>
&gt; &gt;<br>
&gt; &gt; From that environment (PVH dom0) can you see if you can dump the<=
br>
&gt; &gt; contents of the VFCT table?=C2=A0 I don&#39;t have a system with =
that table, so<br>
&gt; &gt; not sure if this will work (because iasl is unlikely to know how =
to<br>
&gt; &gt; decode it):<br>
&gt; &gt;<br>
&gt; &gt; # acpidump -n VFCT -o table.dump<br>
&gt; &gt; # acpixtract -a table.dump<br>
&gt; &gt; # iasl -d vfct.dat<br>
&gt; &gt; # cat vfct.dsl<br>
&gt; &gt;<br>
&gt; &gt; Would be good if you can compare the output from what you get on =
a PV<br>
&gt; &gt; dom0 or when running native Linux.<br>
&gt; &gt;<br>
&gt; &gt; I&#39;m also adding some AMD folks, as IIRC they did some fixes t=
o Linux<br>
&gt; &gt; in order to get some AMD graphics cards running on a PVH dom0, ma=
ybe<br>
&gt; &gt; they can provide some additional input.<br>
&gt; &gt;<br>
&gt; &gt;<br>
&gt; Well, this is pretty weird. I&#39;ll go into more details because it m=
ay be<br>
&gt; relevant.<br>
<br>
Wow, you have certainly gone out of the beaten path here.<br></blockquote><=
div><br></div><div>Yeah, I wasn&#39;t expecting this many issues for being =
an early adopter of Threaderipper 7000!<br></div><div>=C2=A0</div><blockquo=
te class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px =
solid rgb(204,204,204);padding-left:1ex">
<br>
&gt; I had been working with ASRock support ever since I got my brand<br>
&gt; new motherboard because I couldn&#39;t see the BIOS/UEFI screens. I co=
uld boot<br>
&gt; up, and once native linux took control amdgpu got the screens/gpu work=
ing<br>
&gt; fine. I finally managed to be able to see the UEFI/BIOS setup screens =
by<br>
&gt; patching my VBIOS: I extracted the VBIOS image of a cheap R5 430 OEM, =
ran<br>
&gt; GOPupd to update the VBIOS UEFI component (GOP) from version 1.60 to 1=
.67.<br>
&gt; That allowed the UEFI to actually initialize and use a screen. However=
, I<br>
&gt; later realized that only 1 monitor was lighting up in the bios: my mon=
itor<br>
&gt; plugged into the Radeon RX 480 that was still on VBIOS GOP 1.60. It ap=
pears<br>
&gt; the GOP was initializing the RX 480 too, despite not being flashed wit=
h the<br>
&gt; latest itself. I am working on an email to asrock support about that. =
Once<br>
&gt; I get into linux (native or PV), both monitors light up as expected. A=
lso,<br>
&gt; If I boot linux PVH from grub, they also work.<br>
<br>
OK, that&#39;s good, so that would be UEFI -&gt; grub -&gt; Xen -&gt; Linux=
 PVH?<br></blockquote><div><br></div><div>Correct. Inserting grub into the =
chain &quot;fixes&quot; the acpi tables and things work correctly. <br></di=
v></div></div></blockquote><div><br></div><div>Ok, I am not sure what I did=
 the other day to get it to work, but I can&#39;t replicate *any* PVH succe=
ss today. One driver (radeon or amdgpu) always complains the VFCT table is =
wrong, and leads to the symptoms previously reported.</div><div><br></div><=
div>I&#39;m definitely able to help provide access to this machine in order=
 to debug this<br></div><div>=C2=A0<br></div><blockquote class=3D"gmail_quo=
te" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204=
);padding-left:1ex"><div dir=3D"ltr"><div class=3D"gmail_quote"><div></div>=
<div>=C2=A0<br></div><blockquote class=3D"gmail_quote" style=3D"margin:0px =
0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<br>
&gt; Those usage scenarios have<br>
&gt; acpidump output as identical. Booting linux PVH directly from UEFI (no=
<br>
&gt; grub), the monitors go to sleep on the RX 480, and amdgpu errors out a=
bout<br>
&gt; VFCT, but the R5 430 OEM does still have output. Interestingly, there =
is a<br>
&gt; different screen mode booting UEFI+PVH, the characters are basically<b=
r>
&gt; squares, with more vertical lines than &quot;default&quot;, maybe clos=
e to native<br>
&gt; screen resolution, but horizontally it&#39;s still &quot;default&quot;=
. Booting from grub<br>
&gt; gives everything in the &quot;default&quot; resolution.<br>
<br>
Hm, maybe we are not passing the correct video information to Linux<br>
dom0 when booted from UEFI.=C2=A0 I&#39;m afraid I don&#39;t have such setu=
p<br>
myself, so it&#39;s going to be hard to test.<br>
<br>
To clarify, the output from Xen is fine, is the video output from<br>
Linux dom0 in PVH mode that&#39;s corrupt?<br></blockquote><div><br></div><=
div>Xen output in EFI+PV/GRUB+PV/GRUB+PVH: Rectangular letters (expected/go=
od)<br></div><div><div>Linux output in EFI+PV/GRUB+PV/GRUB+PVH: Rectangular=
 letters -&gt; kms fb -&gt; X11 (using this mode as I type this email right=
 now)</div><div>Xen output in EFI+PVH: Squashed square letters (unexpected)=
</div><div>Linux output in EFI+PVH: No output on RX 480, but R5 430 shows a=
 (static?) login console on hvc0 that I can&#39;t interact with.<br></div><=
/div><div>=C2=A0</div><blockquote class=3D"gmail_quote" style=3D"margin:0px=
 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<br>
&gt; <br>
&gt; So what is in the VFCT Table? VFCT contains the non-GOP VIOS image of =
my<br>
&gt; Radeon RX 480 GPU. You can compare it to the VBIOS hosted at<br>
&gt; <a href=3D"https://www.techpowerup.com/vgabios/185789/msi-rx480-4096-1=
60720" rel=3D"noreferrer" target=3D"_blank">https://www.techpowerup.com/vga=
bios/185789/msi-rx480-4096-160720</a> (Compare<br>
&gt; the end at E667 in the VFCT table to E5ff in that vbios link). I find =
this<br>
&gt; extra suspicious due to the above.<br>
&gt; <br>
&gt; Now for the extra horrible things:<br>
&gt; <br>
&gt; UEFI-booted PVH Linux doesn&#39;t support keyboard getty input, and at=
 least<br>
&gt; some of the USB devices are not in lsusb. It also decided to vanish on=
e of<br>
&gt; my HDD&#39;s. The `reboot` command hangs. The Power button doesn&#39;t=
 do anything.<br>
<br>
Yes, it does seem Lunux has issues reserving some BARs:<br>
<br>
[=C2=A0 =C2=A0 6.520615] ahci 0000:07:00.1: version 3.0<br>
[=C2=A0 =C2=A0 6.520701] ahci 0000:07:00.1: BAR 5: can&#39;t reserve [mem 0=
xf0e00000-0xf0e007ff]<br>
...<br>
[=C2=A0 =C2=A017.130099] ccp 0000:06:00.5: enabling device (0000 -&gt; 0002=
)<br>
[=C2=A0 =C2=A017.137025] ccp 0000:06:00.5: BAR 2: can&#39;t reserve [mem 0x=
f0b00000-0xf0bfffff]<br>
[=C2=A0 =C2=A017.145210] ccp 0000:06:00.5: pcim_iomap_regions failed (-16)<=
br>
[=C2=A0 =C2=A017.151868] ccp 0000:06:00.5: initialization failed<br>
[=C2=A0 =C2=A017.157615] ccp: probe of 0000:06:00.5 failed with error -16<b=
r>
...<br>
[=C2=A0 =C2=A017.993532] snd_hda_intel 0000:01:00.1: enabling device (0000 =
-&gt; 0002)<br>
[=C2=A0 =C2=A018.001207] snd_hda_intel 0000:01:00.1: Force to non-snoop mod=
e<br>
[=C2=A0 =C2=A018.007997] snd_hda_intel 0000:01:00.1: BAR 0: can&#39;t reser=
ve [mem 0xf0f60000-0xf0f63fff 64bit]<br>
[=C2=A0 =C2=A018.018053] snd_hda_intel 0000:06:00.7: enabling device (0000 =
-&gt; 0002)<br>
[=C2=A0 =C2=A018.025723] snd_hda_intel 0000:06:00.7: BAR 0: can&#39;t reser=
ve [mem 0xf0d00000-0xf0d07fff]<br>
[=C2=A0 =C2=A018.033679] snd_hda_intel 0000:41:00.1: enabling device (0000 =
-&gt; 0002)<br>
[=C2=A0 =C2=A018.043165] snd_hda_intel 0000:41:00.1: Force to non-snoop mod=
e<br>
<br>
I bet this because Xen balloon driver has started picking up those<br>
regions in order to map foreign pages.<br>
<br>
&gt; There are several stack traces in dmesg. But Alt-SysRq-B does reboot!<=
br>
&gt; Luckily I could ssh in and capture the ACPI tables. They are much smal=
ler,<br>
&gt; and VFCT is empty.=C2=A0 Booting back to one of the working scenarios =
(direct<br>
&gt; linux, Grub PV, Grub PVH, UEFI PV), all of this is normal.<br>
&gt; <br>
&gt; I&#39;ve attached:<br>
&gt; <br>
&gt; xenboot.log which is the serial log of xen+linux booting in UEFI PVH<b=
r>
&gt; (kernel is debian&#39;s config, but patched to start at 2MiB)<br>
&gt; dmesg.txt which is the linux dmesg that contains some nice stack trace=
s<br>
&gt; (kernel is debian&#39;s config, but patched to start at 2MiB)<br>
&gt; efipvh-tables.dump is ALL acpi tables from UEFI+PVH mode (acpidump -o<=
br>
&gt; efipvh-tables.dump)<br>
&gt; working-tables.dump is ALL acpi tables from the other modes (acpidump =
-o<br>
&gt; working-tables.dump)<br>
&gt; efipvh-vfct.dump is attached in spirit, as it is 0 bytes long (acpidum=
p -n<br>
&gt; VFCT -o efipvh-vfct.dump)<br>
&gt; <br>
&gt; I ran iasl, but it just said **** Unknown ACPI table signature [VFCT] =
and<br>
&gt; spat out the raw data table, nothing interesting<br>
&gt; <br>
&gt; Something I can try, but have been nervous to try due to GOPupd warnin=
gs is<br>
&gt; to also flash the 1.67 GOP to the VBIOS on the RX 480. The R5 430 OEM =
had<br>
&gt; no such warnings.<br>
&gt; <br>
&gt; Patrick<br>
<br>
&gt; [=C2=A0 =C2=A0 0.000000] Linux version 6.1.69 (root@pollux) (gcc (Debi=
an 12.2.0-14) 12.2.0, GNU ld (GNU Binutils for Debian) 2.40) #10 SMP PREEMP=
T_DYNAMIC Wed Jan 17 23:44:31 EST 2024<br>
&gt; [=C2=A0 =C2=A0 0.000000] Command line: root=3DUUID=3D922b10f2-a826-47f=
b-ab38-836f9b397ff7 ro rootflags=3Dsubvol=3D@rootfs=C2=A0 earlyprintk=3Dxen=
 console=3Dhvc0<br>
&gt; [=C2=A0 =C2=A0 0.000000] [Firmware Bug]: TSC doesn&#39;t count with P0=
 frequency!<br>
&gt; [=C2=A0 =C2=A0 0.000000] BIOS-provided physical RAM map:<br>
&gt; [=C2=A0 =C2=A0 0.000000] BIOS-e820: [mem 0x0000000000000000-0x00000000=
0009ffff] usable<br>
&gt; [=C2=A0 =C2=A0 0.000000] BIOS-e820: [mem 0x00000000000a0000-0x00000000=
000fffff] reserved<br>
&gt; [=C2=A0 =C2=A0 0.000000] BIOS-e820: [mem 0x0000000000100000-0x00000000=
03ffffff] usable<br>
&gt; [=C2=A0 =C2=A0 0.000000] BIOS-e820: [mem 0x0000000004000000-0x00000000=
04045fff] ACPI NVS<br>
&gt; [=C2=A0 =C2=A0 0.000000] BIOS-e820: [mem 0x0000000004046000-0x00000000=
09afefff] usable<br>
&gt; [=C2=A0 =C2=A0 0.000000] BIOS-e820: [mem 0x0000000009aff000-0x00000000=
09ffffff] reserved<br>
&gt; [=C2=A0 =C2=A0 0.000000] BIOS-e820: [mem 0x000000000a000000-0x00000000=
0affffff] usable<br>
&gt; [=C2=A0 =C2=A0 0.000000] BIOS-e820: [mem 0x000000000b000000-0x00000000=
0b020fff] reserved<br>
&gt; [=C2=A0 =C2=A0 0.000000] BIOS-e820: [mem 0x000000000b021000-0x00000000=
a04e8fff] usable<br>
&gt; [=C2=A0 =C2=A0 0.000000] BIOS-e820: [mem 0x00000000a04e9000-0x00000000=
a64e8fff] reserved<br>
&gt; [=C2=A0 =C2=A0 0.000000] BIOS-e820: [mem 0x00000000a64e9000-0x00000000=
a747efff] ACPI data<br>
&gt; [=C2=A0 =C2=A0 0.000000] BIOS-e820: [mem 0x00000000a747f000-0x00000000=
a947efff] ACPI NVS<br>
&gt; [=C2=A0 =C2=A0 0.000000] BIOS-e820: [mem 0x00000000a947f000-0x00000000=
addfefff] reserved<br>
&gt; [=C2=A0 =C2=A0 0.000000] BIOS-e820: [mem 0x00000000addff000-0x00000000=
afffab9b] usable<br>
&gt; [=C2=A0 =C2=A0 0.000000] BIOS-e820: [mem 0x00000000afffab9c-0x00000000=
afffaf17] ACPI data<br>
&gt; [=C2=A0 =C2=A0 0.000000] BIOS-e820: [mem 0x00000000afffb000-0x00000000=
bfffffff] reserved<br>
&gt; [=C2=A0 =C2=A0 0.000000] BIOS-e820: [mem 0x00000000df200000-0x00000000=
df2fffff] reserved<br>
&gt; [=C2=A0 =C2=A0 0.000000] BIOS-e820: [mem 0x00000000e0000000-0x00000000=
efffffff] reserved<br>
&gt; [=C2=A0 =C2=A0 0.000000] BIOS-e820: [mem 0x00000000fea00000-0x00000000=
feafffff] reserved<br>
&gt; [=C2=A0 =C2=A0 0.000000] BIOS-e820: [mem 0x00000000fec00000-0x00000000=
fec00fff] reserved<br>
&gt; [=C2=A0 =C2=A0 0.000000] BIOS-e820: [mem 0x00000000fec10000-0x00000000=
fec10fff] reserved<br>
&gt; [=C2=A0 =C2=A0 0.000000] BIOS-e820: [mem 0x00000000fec30000-0x00000000=
fec30fff] reserved<br>
&gt; [=C2=A0 =C2=A0 0.000000] BIOS-e820: [mem 0x00000000fed00000-0x00000000=
fed00fff] reserved<br>
&gt; [=C2=A0 =C2=A0 0.000000] BIOS-e820: [mem 0x00000000fed40000-0x00000000=
fed44fff] reserved<br>
&gt; [=C2=A0 =C2=A0 0.000000] BIOS-e820: [mem 0x00000000fed80000-0x00000000=
fed8ffff] reserved<br>
&gt; [=C2=A0 =C2=A0 0.000000] BIOS-e820: [mem 0x00000000ff000000-0x00000000=
ffffffff] reserved<br>
&gt; [=C2=A0 =C2=A0 0.000000] BIOS-e820: [mem 0x0000000100000000-0x00000002=
5dee2fff] usable<br>
&gt; [=C2=A0 =C2=A0 0.000000] BIOS-e820: [mem 0x000000025dee3000-0x00000040=
3dbbffff] unusable<br>
&gt; [=C2=A0 =C2=A0 0.000000] BIOS-e820: [mem 0x000000403dbc0000-0x00000040=
3fffffff] reserved<br>
&gt; [=C2=A0 =C2=A0 0.000000] printk: bootconsole [xenboot0] enabled<br>
&gt; [=C2=A0 =C2=A0 0.000000] NX (Execute Disable) protection: active<br>
&gt; [=C2=A0 =C2=A0 0.000000] efi: EFI v2.90 by American Megatrends<br>
&gt; [=C2=A0 =C2=A0 0.000000] efi: ACPI=3D0xa9463000 ACPI 2.0=3D0xa9463014 =
SMBIOS=3D0xad9f4000 SMBIOS 3.0=3D0xad9f3000 MEMATTR=3D0x99e26698 ESRT=3D0xa=
7466018 <br>
&gt; [=C2=A0 =C2=A0 0.000000] secureboot: Secure boot disabled<br>
&gt; [=C2=A0 =C2=A0 0.000000] SMBIOS 3.6.0 present.<br>
&gt; [=C2=A0 =C2=A0 0.000000] DMI: To Be Filled By O.E.M. TRX50 WS/TRX50 WS=
, BIOS 7.08 01/16/2024<br>
&gt; [=C2=A0 =C2=A0 0.000000] Hypervisor detected: Xen HVM<br>
&gt; [=C2=A0 =C2=A0 0.000000] Xen version 4.17.<br>
&gt; [=C2=A0 =C2=A0 0.000003] HVMOP_pagetable_dying not supported<br>
&gt; [=C2=A0 =C2=A0 0.043916] tsc: Fast TSC calibration failed<br>
&gt; [=C2=A0 =C2=A0 0.048843] tsc: Detected 4199.960 MHz processor<br>
&gt; [=C2=A0 =C2=A0 0.054365] e820: update [mem 0x00000000-0x00000fff] usab=
le =3D=3D&gt; reserved<br>
&gt; [=C2=A0 =C2=A0 0.054368] e820: remove [mem 0x000a0000-0x000fffff] usab=
le<br>
&gt; [=C2=A0 =C2=A0 0.054375] last_pfn =3D 0x25dee3 max_arch_pfn =3D 0x4000=
00000<br>
&gt; [=C2=A0 =C2=A0 0.062033] x86/PAT: Configuration [0-7]: WB=C2=A0 WC=C2=
=A0 UC- UC=C2=A0 WB=C2=A0 WP=C2=A0 UC- WT=C2=A0 <br>
&gt; [=C2=A0 =C2=A0 0.070417] CPU MTRRs all blank - virtualized system.<br>
&gt; [=C2=A0 =C2=A0 0.076209] last_pfn =3D 0xafffa max_arch_pfn =3D 0x40000=
0000<br>
&gt; [=C2=A0 =C2=A0 0.085594] Using GB pages for direct mapping<br>
&gt; [=C2=A0 =C2=A0 0.091184] RAMDISK: [mem 0x04046000-0x068cdfff]<br>
&gt; [=C2=A0 =C2=A0 0.096533] ACPI: Early table checksum verification disab=
led<br>
&gt; [=C2=A0 =C2=A0 0.103248] ACPI: RSDP 0x00000000AFFFAB9C 000024 (v02 AMD=
=C2=A0 =C2=A0)<br>
&gt; [=C2=A0 =C2=A0 0.109716] ACPI: XSDT 0x00000000AFFFABC0 0000C4 (v01 AMD=
=C2=A0 =C2=A0 A M I=C2=A0 =C2=A0 00000001 AMI=C2=A0 01000013)<br>
&gt; [=C2=A0 =C2=A0 0.119663] ACPI: APIC 0x00000000AFFFAC84 00037C (v04 AMD=
=C2=A0 =C2=A0 A M I=C2=A0 =C2=A0 00000001 AMI=C2=A0 00010013)<br>
&gt; [=C2=A0 =C2=A0 0.129538] ACPI: FACP 0x00000000A747C000 000114 (v06 AMD=
=C2=A0 =C2=A0 A M I=C2=A0 =C2=A0 00000001 AMI=C2=A0 00010013)<br>
&gt; [=C2=A0 =C2=A0 0.139250] ACPI: DSDT 0x00000000A746E000 00D2F6 (v02 AMD=
=C2=A0 =C2=A0 A M I=C2=A0 =C2=A0 00000001 INTL 20230331)<br>
&gt; [=C2=A0 =C2=A0 0.148717] ACPI: FACS 0x00000000A945A000 000040<br>
&gt; [=C2=A0 =C2=A0 0.153805] ACPI: SSDT 0x00000000A747E000 0009CC (v02 AMD=
=C2=A0 =C2=A0 BOULDERG 00000002 MSFT 04000000)<br>
&gt; [=C2=A0 =C2=A0 0.163309] ACPI: SSDT 0x00000000A747D000 000067 (v02 AMD=
=C2=A0 =C2=A0 CPMDSM=C2=A0 =C2=A000000001 INTL 20230331)<br>
&gt; [=C2=A0 =C2=A0 0.172813] ACPI: MCFG 0x00000000A746C000 00003C (v01 AMD=
=C2=A0 =C2=A0 A M I=C2=A0 =C2=A0 00000001 MSFT 00010013)<br>
&gt; [=C2=A0 =C2=A0 0.182351] ACPI: SSDT 0x00000000A746B000 0005C5 (v02 AMD=
=C2=A0 =C2=A0 CPUSSDT=C2=A0 00000001 AMI=C2=A0 00000001)<br>
&gt; [=C2=A0 =C2=A0 0.191806] ACPI: SSDT 0x00000000A7468000 001B53 (v02 AMD=
=C2=A0 =C2=A0 CPMRAS=C2=A0 =C2=A000000001 INTL 20230331)<br>
&gt; [=C2=A0 =C2=A0 0.201308] ACPI: FPDT 0x00000000A7465000 000044 (v01 AMD=
=C2=A0 =C2=A0 A M I=C2=A0 =C2=A0 01072009 AMI=C2=A0 01000013)<br>
&gt; [=C2=A0 =C2=A0 0.210819] ACPI: SSDT 0x00000000A7462000 002448 (v02 AMD=
=C2=A0 =C2=A0 GPP_PME_ 00000001 INTL 20230331)<br>
&gt; [=C2=A0 =C2=A0 0.220343] ACPI: SSDT 0x00000000A745F000 002448 (v02 AMD=
=C2=A0 =C2=A0 GPP_PME_ 00000001 INTL 20230331)<br>
&gt; [=C2=A0 =C2=A0 0.229884] ACPI: SSDT 0x00000000A745C000 002448 (v02 AMD=
=C2=A0 =C2=A0 GPP_PME_ 00000001 INTL 20230331)<br>
&gt; [=C2=A0 =C2=A0 0.239351] ACPI: SSDT 0x00000000A7459000 002448 (v02 AMD=
=C2=A0 =C2=A0 GPP_PME_ 00000001 INTL 20230331)<br>
&gt; [=C2=A0 =C2=A0 0.248780] ACPI: SSDT 0x00000000A743E000 00A40E (v02 AMD=
=C2=A0 =C2=A0 AMD CPU=C2=A0 00000001 AMD=C2=A0 00000001)<br>
&gt; [=C2=A0 =C2=A0 0.258288] ACPI: SSDT 0x00000000A684C000 0006D4 (v02 AMD=
=C2=A0 =C2=A0 CPMWLRC=C2=A0 00000001 INTL 20230331)<br>
&gt; [=C2=A0 =C2=A0 0.267815] ACPI: SSDT 0x00000000A6842000 00982F (v02 AMD=
=C2=A0 =C2=A0 CPMCMN=C2=A0 =C2=A000000001 INTL 20230331)<br>
&gt; [=C2=A0 =C2=A0 0.277339] ACPI: SSDT 0x00000000A683C000 002387 (v02 AMD=
=C2=A0 =C2=A0 AOD=C2=A0 =C2=A0 =C2=A0 00000001 INTL 20230331)<br>
&gt; [=C2=A0 =C2=A0 0.286840] ACPI: SSDT 0x00000000A683B000 000500 (v02 AMD=
=C2=A0 =C2=A0 MEMTOOL0 00000002 INTL 20230331)<br>
&gt; [=C2=A0 =C2=A0 0.296283] ACPI: SSDT 0x00000000A683A000 00096A (v02 AMD=
=C2=A0 =C2=A0 CPMMSOSC 00000001 INTL 20230331)<br>
&gt; [=C2=A0 =C2=A0 0.305841] ACPI: SSDT 0x00000000A6839000 000B72 (v02 AMD=
=C2=A0 =C2=A0 CPMACPV6 00000001 INTL 20230331)<br>
&gt; [=C2=A0 =C2=A0 0.315288] ACPI: SSDT 0x00000000A6838000 00044E (v02 AMD=
=C2=A0 =C2=A0 AmdTable 00000001 INTL 20230331)<br>
&gt; [=C2=A0 =C2=A0 0.324802] ACPI: Reserving APIC table memory at [mem 0xa=
fffac84-0xafffafff]<br>
&gt; [=C2=A0 =C2=A0 0.332592] ACPI: Reserving FACP table memory at [mem 0xa=
747c000-0xa747c113]<br>
&gt; [=C2=A0 =C2=A0 0.340419] ACPI: Reserving DSDT table memory at [mem 0xa=
746e000-0xa747b2f5]<br>
&gt; [=C2=A0 =C2=A0 0.348189] ACPI: Reserving FACS table memory at [mem 0xa=
945a000-0xa945a03f]<br>
&gt; [=C2=A0 =C2=A0 0.356058] ACPI: Reserving SSDT table memory at [mem 0xa=
747e000-0xa747e9cb]<br>
&gt; [=C2=A0 =C2=A0 0.363906] ACPI: Reserving SSDT table memory at [mem 0xa=
747d000-0xa747d066]<br>
&gt; [=C2=A0 =C2=A0 0.371757] ACPI: Reserving MCFG table memory at [mem 0xa=
746c000-0xa746c03b]<br>
&gt; [=C2=A0 =C2=A0 0.379576] ACPI: Reserving SSDT table memory at [mem 0xa=
746b000-0xa746b5c4]<br>
&gt; [=C2=A0 =C2=A0 0.387437] ACPI: Reserving SSDT table memory at [mem 0xa=
7468000-0xa7469b52]<br>
&gt; [=C2=A0 =C2=A0 0.395337] ACPI: Reserving FPDT table memory at [mem 0xa=
7465000-0xa7465043]<br>
&gt; [=C2=A0 =C2=A0 0.403153] ACPI: Reserving SSDT table memory at [mem 0xa=
7462000-0xa7464447]<br>
&gt; [=C2=A0 =C2=A0 0.410989] ACPI: Reserving SSDT table memory at [mem 0xa=
745f000-0xa7461447]<br>
&gt; [=C2=A0 =C2=A0 0.418802] ACPI: Reserving SSDT table memory at [mem 0xa=
745c000-0xa745e447]<br>
&gt; [=C2=A0 =C2=A0 0.426642] ACPI: Reserving SSDT table memory at [mem 0xa=
7459000-0xa745b447]<br>
&gt; [=C2=A0 =C2=A0 0.434529] ACPI: Reserving SSDT table memory at [mem 0xa=
743e000-0xa744840d]<br>
&gt; [=C2=A0 =C2=A0 0.442393] ACPI: Reserving SSDT table memory at [mem 0xa=
684c000-0xa684c6d3]<br>
&gt; [=C2=A0 =C2=A0 0.450203] ACPI: Reserving SSDT table memory at [mem 0xa=
6842000-0xa684b82e]<br>
&gt; [=C2=A0 =C2=A0 0.458038] ACPI: Reserving SSDT table memory at [mem 0xa=
683c000-0xa683e386]<br>
&gt; [=C2=A0 =C2=A0 0.465853] ACPI: Reserving SSDT table memory at [mem 0xa=
683b000-0xa683b4ff]<br>
&gt; [=C2=A0 =C2=A0 0.473805] ACPI: Reserving SSDT table memory at [mem 0xa=
683a000-0xa683a969]<br>
&gt; [=C2=A0 =C2=A0 0.481626] ACPI: Reserving SSDT table memory at [mem 0xa=
6839000-0xa6839b71]<br>
&gt; [=C2=A0 =C2=A0 0.489475] ACPI: Reserving SSDT table memory at [mem 0xa=
6838000-0xa683844d]<br>
<br>
Weird, there&#39;s no VFCT listed here.<br>
<br>
Thanks, Roger.<br>
</blockquote></div></div>
</blockquote></div></div>

--000000000000644f35060fa6f73a--


From xen-devel-bounces@lists.xenproject.org Wed Jan 24 01:35:12 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 24 Jan 2024 01:35:12 +0000
Received: from list by lists.xenproject.org with outflank-mailman.670688.1043632 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSSAU-0002bJ-FF; Wed, 24 Jan 2024 01:35:06 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 670688.1043632; Wed, 24 Jan 2024 01:35:06 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSSAU-0002bC-Cc; Wed, 24 Jan 2024 01:35:06 +0000
Received: by outflank-mailman (input) for mailman id 670688;
 Wed, 24 Jan 2024 01:35:05 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=qnut=JC=kernel.org=sstabellini@srs-se1.protection.inumbo.net>)
 id 1rSSAT-0002b5-8m
 for xen-devel@lists.xenproject.org; Wed, 24 Jan 2024 01:35:05 +0000
Received: from sin.source.kernel.org (sin.source.kernel.org [145.40.73.55])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id ca42956b-ba58-11ee-9b0f-b553b5be7939;
 Wed, 24 Jan 2024 02:35:02 +0100 (CET)
Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58])
 by sin.source.kernel.org (Postfix) with ESMTP id D8236CE30CC;
 Wed, 24 Jan 2024 01:34:59 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id CC9C0C433F1;
 Wed, 24 Jan 2024 01:34:57 +0000 (UTC)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: ca42956b-ba58-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
	s=k20201202; t=1706060099;
	bh=HgM5Utc7htDc47vc7wH8ZGobLGRm3TbyynXaGN7mnSM=;
	h=Date:From:To:cc:Subject:In-Reply-To:References:From;
	b=ZapcKNwYkQurAkunb4pXoH7qKACsDR3mE+XGsTu203AbkGDQ3DrZUXeLcAuqFgo/C
	 GsXJSEhUuB5J+HAOs7Fekd4a3za+RvheJhiqaNGlpoIWGN+vGIfo3BPpJuINwpiuJO
	 agmAqQaEE16lne6ydHPsHDPUeIuTMkYslrq1/IgfKwdfFd/NYDDlaEZNwL/qn1/Uy5
	 jsqBbXn+7AemA1mc5BtPIzrLqde7s3o9FyINWpK3Bgh8+zEcJf96moGbxsacZQBsq0
	 wv95Ra5q3lFQNgXx7h9JuJjWpbEU/j47Wh/+ckFaLVl92CIInHMw6xvXelcj404vmi
	 G/FTp6ch5HwHg==
Date: Tue, 23 Jan 2024 17:34:56 -0800 (PST)
From: Stefano Stabellini <sstabellini@kernel.org>
X-X-Sender: sstabellini@ubuntu-linux-20-04-desktop
To: Jan Beulich <jbeulich@suse.com>
cc: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>, 
    Federico Serafini <federico.serafini@bugseng.com>, 
    Andrew Cooper <andrew.cooper3@citrix.com>, 
    George Dunlap <george.dunlap@citrix.com>, Julien Grall <julien@xen.org>, 
    Stefano Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>, 
    Bertrand Marquis <bertrand.marquis@arm.com>, 
    Michal Orzel <michal.orzel@amd.com>
Subject: Re: [PATCH] consolidate do_bug_frame() / bug_fn_t
In-Reply-To: <d466eb44-1160-4b57-a41f-752dbf626748@suse.com>
Message-ID: <alpine.DEB.2.22.394.2401231731570.2287888@ubuntu-linux-20-04-desktop>
References: <d466eb44-1160-4b57-a41f-752dbf626748@suse.com>
User-Agent: Alpine 2.22 (DEB 394 2020-01-19)
MIME-Version: 1.0
Content-Type: text/plain; charset=US-ASCII

Hi Jan, Andrew,

I managed to get back to read the mailing list and noticed this patch.

Is it still relevant and needs to be reviewed?

Are there any outstanding disagreements between maintainers on the
approach to take here?  Or should I just go ahead and review it?


On Tue, 9 Jan 2024, Jan Beulich wrote:
> The type not being used in do_bug_frame() is suspicious. Apparently
> that's solely because the type uses a pointer-to-const parameter,
> when run_in_exception_handler() wants functions taking pointer-to-non-
> const. Drop the const, in turn requiring Arm's do_bug_frame() to also
> have its const dropped. This then brings that function also closer to
> the common one, with Arm's use of vaddr_t remaining as a difference.
> 
> Signed-off-by: Jan Beulich <jbeulich@suse.com>
> ---
> This is an alternative proposal to
> https://lists.xen.org/archives/html/xen-devel/2023-12/msg01385.html,
> albeit without paving a road towards Andrew's desire of getting rid of
> show_execution_state_nonconst() again. Retaining (and propagating) the
> const would imply the need to cast away the const-ness somewhere on (at
> least) the path to invoking gdb stub code. Personally I'm averse to such
> casting away of const-ness ...
> 
> --- a/xen/arch/arm/include/asm/traps.h
> +++ b/xen/arch/arm/include/asm/traps.h
> @@ -69,7 +69,7 @@ void do_cp(struct cpu_user_regs *regs, c
>  void do_trap_smc(struct cpu_user_regs *regs, const union hsr hsr);
>  void do_trap_hvc_smccc(struct cpu_user_regs *regs);
>  
> -int do_bug_frame(const struct cpu_user_regs *regs, vaddr_t pc);
> +int do_bug_frame(struct cpu_user_regs *regs, vaddr_t pc);
>  
>  void noreturn do_unexpected_trap(const char *msg,
>                                   const struct cpu_user_regs *regs);
> --- a/xen/arch/arm/traps.c
> +++ b/xen/arch/arm/traps.c
> @@ -1202,7 +1202,7 @@ void do_unexpected_trap(const char *msg,
>      panic("CPU%d: Unexpected Trap: %s\n", smp_processor_id(), msg);
>  }
>  
> -int do_bug_frame(const struct cpu_user_regs *regs, vaddr_t pc)
> +int do_bug_frame(struct cpu_user_regs *regs, vaddr_t pc)
>  {
>      const struct bug_frame *bug = NULL;
>      const char *prefix = "", *filename, *predicate;
> --- a/xen/common/bug.c
> +++ b/xen/common/bug.c
> @@ -63,14 +63,10 @@ int do_bug_frame(struct cpu_user_regs *r
>  
>      if ( id == BUGFRAME_run_fn )
>      {
> -        void (*fn)(struct cpu_user_regs *) = bug_ptr(bug);
> +        bug_fn_t *fn = bug_ptr(bug);
>  
>          fn(regs);
>  
> -        /* Re-enforce consistent types, because of the casts involved. */
> -        if ( false )
> -            run_in_exception_handler(fn);
> -
>          return id;
>      }
>  
> --- a/xen/include/xen/bug.h
> +++ b/xen/include/xen/bug.h
> @@ -101,12 +101,11 @@ struct bug_frame {
>  #endif
>  
>  struct cpu_user_regs;
> -typedef void bug_fn_t(const struct cpu_user_regs *regs);
> +typedef void bug_fn_t(struct cpu_user_regs *regs);
>  
>  #ifndef run_in_exception_handler
>  
> -static void always_inline run_in_exception_handler(
> -    void (*fn)(struct cpu_user_regs *regs))
> +static void always_inline run_in_exception_handler(bug_fn_t *fn)
>  {
>      BUG_FRAME(BUGFRAME_run_fn, 0, fn, 0, NULL);
>  }
> 


From xen-devel-bounces@lists.xenproject.org Wed Jan 24 01:58:23 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 24 Jan 2024 01:58:23 +0000
Received: from list by lists.xenproject.org with outflank-mailman.670693.1043641 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSSWm-00072a-5j; Wed, 24 Jan 2024 01:58:08 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 670693.1043641; Wed, 24 Jan 2024 01:58:08 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSSWm-00072T-33; Wed, 24 Jan 2024 01:58:08 +0000
Received: by outflank-mailman (input) for mailman id 670693;
 Wed, 24 Jan 2024 01:58:06 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rSSWk-00072I-QL; Wed, 24 Jan 2024 01:58:06 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rSSWk-0007dc-G1; Wed, 24 Jan 2024 01:58:06 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rSSWk-0004Aq-6V; Wed, 24 Jan 2024 01:58:06 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rSSWk-0003H0-5w; Wed, 24 Jan 2024 01:58:06 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=zJSZg2fK47cFa1bOXDAHCTrnItQX6S36LPyDPfy9Z0Q=; b=xMLdx18zYlawXfu9ldA944G7Jt
	mg8lmthlocQp13h/Z5RYpvOoM4MhXTjmO2KnCdCZhX8VAYt/x/mN4L2NtAVhu8OoRqxdM+JkdN/Ri
	/TpSQOcqJznEcgIm4/bJd2427oCMIN0h2aHUorGlx3qQep3SpcFmN92gaAqPqTF64wnQ=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184442-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [ovmf test] 184442: all pass - PUSHED
X-Osstest-Versions-This:
    ovmf=7f72c2829fa29d2b4451c9a60e904df4c6a5df6c
X-Osstest-Versions-That:
    ovmf=417ebe6d1d6052b6cf023332da07558363d7fd08
From: osstest service owner <osstest-admin@xenproject.org>
Date: Wed, 24 Jan 2024 01:58:06 +0000

flight 184442 ovmf real [real]
http://logs.test-lab.xenproject.org/osstest/logs/184442/

Perfect :-)
All tests in this flight passed as required
version targeted for testing:
 ovmf                 7f72c2829fa29d2b4451c9a60e904df4c6a5df6c
baseline version:
 ovmf                 417ebe6d1d6052b6cf023332da07558363d7fd08

Last test of basis   184441  2024-01-23 21:14:28 Z    0 days
Testing same since   184442  2024-01-23 23:41:02 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  devel@edk2.groups.io <devel@edk2.groups.io>
  Qing Huang <qing.huang@intel.com>

jobs:
 build-amd64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-amd64-amd64-xl-qemuu-ovmf-amd64                         pass    
 test-amd64-i386-xl-qemuu-ovmf-amd64                          pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Pushing revision :

To xenbits.xen.org:/home/xen/git/osstest/ovmf.git
   417ebe6d1d..7f72c2829f  7f72c2829fa29d2b4451c9a60e904df4c6a5df6c -> xen-tested-master


From xen-devel-bounces@lists.xenproject.org Wed Jan 24 04:32:16 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 24 Jan 2024 04:32:16 +0000
Received: from list by lists.xenproject.org with outflank-mailman.670706.1043652 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSUvU-0004Eo-Qp; Wed, 24 Jan 2024 04:31:48 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 670706.1043652; Wed, 24 Jan 2024 04:31:48 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSUvU-0004Eh-MY; Wed, 24 Jan 2024 04:31:48 +0000
Received: by outflank-mailman (input) for mailman id 670706;
 Wed, 24 Jan 2024 04:31:48 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rSUvT-0004EX-Ui; Wed, 24 Jan 2024 04:31:47 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rSUvT-0002Qz-Kh; Wed, 24 Jan 2024 04:31:47 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rSUvT-0002Ox-AZ; Wed, 24 Jan 2024 04:31:47 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rSUvT-00057f-A4; Wed, 24 Jan 2024 04:31:47 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=eGzfawEwxbc9uuNGnBqn0kQjQgVKMjDkz1G2/wxGdA0=; b=wZtOpY3L7DymvinsvZFm0ceo03
	FOx4XrhbFZd6ddqOz6xhcALa8aHyQO1za1wDPLsdRy2MXZjFsa0MAzjnIgXDJTbofBlT9EcfVAklL
	1cvFSX7Y53Vg/03d280U0fP/cAjK+uwhy4H6SgPv+KsLeMH6+sA4KwUpmf98ylJ6lrYA=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184444-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [ovmf test] 184444: all pass - PUSHED
X-Osstest-Versions-This:
    ovmf=1063665fa5466ece0814a3e764ee3382656956a1
X-Osstest-Versions-That:
    ovmf=7f72c2829fa29d2b4451c9a60e904df4c6a5df6c
From: osstest service owner <osstest-admin@xenproject.org>
Date: Wed, 24 Jan 2024 04:31:47 +0000

flight 184444 ovmf real [real]
http://logs.test-lab.xenproject.org/osstest/logs/184444/

Perfect :-)
All tests in this flight passed as required
version targeted for testing:
 ovmf                 1063665fa5466ece0814a3e764ee3382656956a1
baseline version:
 ovmf                 7f72c2829fa29d2b4451c9a60e904df4c6a5df6c

Last test of basis   184442  2024-01-23 23:41:02 Z    0 days
Testing same since   184444  2024-01-24 01:58:35 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Ashish Singhal <ashishsingha@nvidia.com>

jobs:
 build-amd64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-amd64-amd64-xl-qemuu-ovmf-amd64                         pass    
 test-amd64-i386-xl-qemuu-ovmf-amd64                          pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Pushing revision :

To xenbits.xen.org:/home/xen/git/osstest/ovmf.git
   7f72c2829f..1063665fa5  1063665fa5466ece0814a3e764ee3382656956a1 -> xen-tested-master


From xen-devel-bounces@lists.xenproject.org Wed Jan 24 05:01:07 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 24 Jan 2024 05:01:07 +0000
Received: from list by lists.xenproject.org with outflank-mailman.670714.1043662 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSVNk-0008Qe-3y; Wed, 24 Jan 2024 05:01:00 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 670714.1043662; Wed, 24 Jan 2024 05:01:00 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSVNj-0008QX-W4; Wed, 24 Jan 2024 05:00:59 +0000
Received: by outflank-mailman (input) for mailman id 670714;
 Wed, 24 Jan 2024 05:00:59 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=87Ys=JC=amd.com=Stewart.Hildebrand@srs-se1.protection.inumbo.net>)
 id 1rSVNj-0008QR-Cj
 for xen-devel@lists.xenproject.org; Wed, 24 Jan 2024 05:00:59 +0000
Received: from NAM12-MW2-obe.outbound.protection.outlook.com
 (mail-mw2nam12on20601.outbound.protection.outlook.com
 [2a01:111:f403:200a::601])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 8def6d6c-ba75-11ee-9b0f-b553b5be7939;
 Wed, 24 Jan 2024 06:00:56 +0100 (CET)
Received: from MW4PR04CA0360.namprd04.prod.outlook.com (2603:10b6:303:8a::35)
 by DM6PR12MB4353.namprd12.prod.outlook.com (2603:10b6:5:2a6::12) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7228.22; Wed, 24 Jan
 2024 05:00:50 +0000
Received: from CO1PEPF000044F8.namprd21.prod.outlook.com
 (2603:10b6:303:8a:cafe::1b) by MW4PR04CA0360.outlook.office365.com
 (2603:10b6:303:8a::35) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7202.38 via Frontend
 Transport; Wed, 24 Jan 2024 05:00:49 +0000
Received: from SATLEXMB03.amd.com (165.204.84.17) by
 CO1PEPF000044F8.mail.protection.outlook.com (10.167.241.198) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.7228.0 via Frontend Transport; Wed, 24 Jan 2024 05:00:49 +0000
Received: from SATLEXMB04.amd.com (10.181.40.145) by SATLEXMB03.amd.com
 (10.181.40.144) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.34; Tue, 23 Jan
 2024 23:00:46 -0600
Received: from [172.23.114.18] (10.180.168.240) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server id 15.1.2507.34 via Frontend
 Transport; Tue, 23 Jan 2024 23:00:45 -0600
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 8def6d6c-ba75-11ee-9b0f-b553b5be7939
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=FkPDxIit7CVD86FJRxUyHPyGbwghoiJNp3LovfmhA2jPK0bG1jW2Ap9R46rCSF08Xmb3z/mdCiDIRAu2VOlicz7C5/ss5xN60cuRV48uz8brIXkAUdicIAb0Tmc00Uz/vBio85dlRwpfeZTv5WkjpamteWOu1RZKEtuM+ysIYSS3rbPaeW0AM5/wTjFGDwqFXpSGHiomCa76g9vKYBYUoC6pOLDax8uwP+k66idEYAwzmYz11HEF1Yi3t+FGR1Ux1CE39aoAlz3IRmPuUOz+GxeFe01Um5gPXUoXJfZoQUh3DttZoaBnaJOJBEM+kZKEZAVVPWMjUrrJKi7gcTjjQg==
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=daKAEf94PhbZ9hRj/TDn2v6ZtbA/LJclSAowjn1m8Ok=;
 b=V9hu4g2ZUH5efRDvLaXfoP+CI2/g6mlj98A3YgKRVl0ZKCAj1gNNp14hGRxEJVH3ScmP/uns9P1eQZUR8byWoKOyqWCNB8jw8co2Yqf5s/nv+cTzlQPcCdhn/eyVVYhr9iAJ0Pgmrmpew39wnPMyS403KOETkh16FBJ+0u0ZrRYfryBk3jmmCAD40IhZr/zqd85g01Wr6WNfL7PsMruV7q0aYWqUVJ3coXi5Ki5nx2V9Un/3bl6lAG1+JzlVWUb8YaPNGyREBOMn4eFO7NhlnxmnK0hhcqhUksKADbhDm+AElUkiErlFaVNqCbFWiremgNnxl05xzctPDVD/GQgEbQ==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=citrix.com 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)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=daKAEf94PhbZ9hRj/TDn2v6ZtbA/LJclSAowjn1m8Ok=;
 b=I8czKUbpmoYyS+BbZJTQWa6p2XFmP0kr2QUqZiNMtk93+33Axcb4fRl2KJbyxpOMJVIuGBs/id7vjRX6hwmaqejfcJfT2gxHXKHODpPa3IgG9nt9nGxsYakBKxzx+9KE9F3ternSAVC9fV2m23fSz+1UIhVKAXr5odhzEzZVHBA=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=SATLEXMB03.amd.com; pr=C
Message-ID: <2df1ffd4-827f-4e28-9547-293a60f590b0@amd.com>
Date: Wed, 24 Jan 2024 00:00:44 -0500
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v12.2 01/15] vpci: use per-domain PCI lock to protect vpci
 structure
Content-Language: en-US
To: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>, Jan Beulich
	<jbeulich@suse.com>
CC: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>, Andrew Cooper
	<andrew.cooper3@citrix.com>, Wei Liu <wl@xen.org>, George Dunlap
	<george.dunlap@citrix.com>, Julien Grall <julien@xen.org>, Stefano Stabellini
	<sstabellini@kernel.org>, Jun Nakajima <jun.nakajima@intel.com>, Kevin Tian
	<kevin.tian@intel.com>, Paul Durrant <paul@xen.org>, Volodymyr Babchuk
	<volodymyr_babchuk@epam.com>, <xen-devel@lists.xenproject.org>
References: <20240109215145.430207-1-stewart.hildebrand@amd.com>
 <20240109215145.430207-2-stewart.hildebrand@amd.com>
 <20240115194309.45683-1-stewart.hildebrand@amd.com>
 <715e40c9-1776-4677-9565-dac1565a2aa8@suse.com> <Za_WGzS14Eqt8yZF@macbook>
From: Stewart Hildebrand <stewart.hildebrand@amd.com>
In-Reply-To: <Za_WGzS14Eqt8yZF@macbook>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CO1PEPF000044F8:EE_|DM6PR12MB4353:EE_
X-MS-Office365-Filtering-Correlation-Id: b3fb8de9-8082-4147-d7ba-08dc1c996f1b
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam: BCL:0;
X-Microsoft-Antispam-Message-Info:
	JY44LoeBVuOZUd9QypdYlrZOI1mhg/9jawokLkk/SvX3WqM+ozfmrbZ5a/VrSDm84GNPM4bo+ucsGZQa1GbN0Wg3ZrtXZFCwiRzCwwV+IjqAB5zjdL21mc5A8/3nImGiXN7UmEQJZWuT8QuI8CJpLteumXVhs0Jcoir0SUccXSCWwLi2MdtZcwHL/NhczZA6KZKvPSAAt1RWMez5atu7y0UNHKLTs9yhO17ORwvqv8dGeENJ2RhooR74Up40MP+ex2A5JKydBn374hpk9WUD15tZ6NwmqTWJ7IHKHrRPUz2Lf7HYaQk1jI9LgWjlwiZyGwkYVw/ovIaF7o6TP5n9BtAyUfM+UeowDeH0jKWai9IJqFlesIiNzS7WTBscsNFB0H3O2r/eF3Ziazf/5D3PP9SnEvFQlscItKqoh1igmoNWUn4tZE9aRhFTMrFdzEj2+A9Q8Dv3LUAdfDTOTZlAkeTJDsJ8Zrql75PDX9H0eJfZGQknBdZkTxrxL39PxNHdWu6iFqMtOnI1/aRKdAK0KVQAYJfG+MV8gxNqczN8YT5Vjgt4iHaeg+eGGJsHeP0qpWtIicWPX0cOt22bx03juQu2YzNGeWLD3INzGiyOMbAQxoZ8rSfYtM0Yt/9pz/liA2M1iR4GmeWhFSvi9rfYrVx/rTqak4emIdUlkHJ5YR2Wsyt+5zONUTvxzjHrn/QyM5Dym2bF3J2tN4YIdEL4HBbquPTeMQPg4ch9KdNBifZr68a6vGsc7Dn75RynS8jRbYYfDUbSu7WhrtJ2UXUqPoBJeTJSe4VdTNX6BWc9OAc=
X-Forefront-Antispam-Report:
	CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB03.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230031)(4636009)(376002)(136003)(39860400002)(396003)(346002)(230922051799003)(186009)(82310400011)(64100799003)(1800799012)(451199024)(40470700004)(36840700001)(46966006)(31686004)(110136005)(40480700001)(40460700003)(5660300002)(2906002)(7416002)(44832011)(316002)(16576012)(54906003)(4326008)(8936002)(41300700001)(70206006)(70586007)(8676002)(81166007)(82740400003)(356005)(478600001)(31696002)(36756003)(86362001)(47076005)(26005)(426003)(336012)(36860700001)(2616005)(83380400001)(53546011)(43740500002)(36900700001);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Jan 2024 05:00:49.8031
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: b3fb8de9-8082-4147-d7ba-08dc1c996f1b
X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB03.amd.com]
X-MS-Exchange-CrossTenant-AuthSource:
	CO1PEPF000044F8.namprd21.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR12MB4353

On 1/23/24 10:07, Roger Pau Monné wrote:
> On Tue, Jan 23, 2024 at 03:32:12PM +0100, Jan Beulich wrote:
>> On 15.01.2024 20:43, Stewart Hildebrand wrote:
>>> @@ -2888,6 +2888,8 @@ int allocate_and_map_msi_pirq(struct domain *d, int index, int *pirq_p,
>>>  {
>>>      int irq, pirq, ret;
>>>  
>>> +    ASSERT(pcidevs_locked() || rw_is_locked(&d->pci_lock));
>>
>> If either lock is sufficient to hold here, ...
>>
>>> --- a/xen/arch/x86/physdev.c
>>> +++ b/xen/arch/x86/physdev.c
>>> @@ -123,7 +123,9 @@ int physdev_map_pirq(domid_t domid, int type, int *index, int *pirq_p,
>>>  
>>>      case MAP_PIRQ_TYPE_MSI:
>>>      case MAP_PIRQ_TYPE_MULTI_MSI:
>>> +        pcidevs_lock();
>>>          ret = allocate_and_map_msi_pirq(d, *index, pirq_p, type, msi);
>>> +        pcidevs_unlock();
>>>          break;
>>
>> ... why is it the global lock that's being acquired here?
>>
> 
> IIRC (Stewart can further comment) this is done holding the pcidevs
> lock to keep the path unmodified, as there's no need to hold the
> per-domain rwlock.
> 

Although allocate_and_map_msi_pirq() was itself acquiring the global pcidevs_lock() before this patch, we could just as well use read_lock(&d->pci_lock) here instead now. It seems like a good optimization to make, so if there aren't any objections I'll change it to read_lock(&d->pci_lock).


From xen-devel-bounces@lists.xenproject.org Wed Jan 24 05:08:05 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 24 Jan 2024 05:08:05 +0000
Received: from list by lists.xenproject.org with outflank-mailman.670719.1043673 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSVUW-0000q1-Qh; Wed, 24 Jan 2024 05:08:00 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 670719.1043673; Wed, 24 Jan 2024 05:08:00 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSVUW-0000pu-Mc; Wed, 24 Jan 2024 05:08:00 +0000
Received: by outflank-mailman (input) for mailman id 670719;
 Wed, 24 Jan 2024 05:07:59 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=87Ys=JC=amd.com=Stewart.Hildebrand@srs-se1.protection.inumbo.net>)
 id 1rSVUV-0000po-QA
 for xen-devel@lists.xenproject.org; Wed, 24 Jan 2024 05:07:59 +0000
Received: from NAM10-MW2-obe.outbound.protection.outlook.com
 (mail-mw2nam10on20600.outbound.protection.outlook.com
 [2a01:111:f403:2412::600])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 8937d9dc-ba76-11ee-98f5-6d05b1d4d9a1;
 Wed, 24 Jan 2024 06:07:58 +0100 (CET)
Received: from DS7PR05CA0065.namprd05.prod.outlook.com (2603:10b6:8:57::10) by
 IA1PR12MB7494.namprd12.prod.outlook.com (2603:10b6:208:41a::10) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7202.37; Wed, 24 Jan
 2024 05:07:53 +0000
Received: from DS2PEPF00003445.namprd04.prod.outlook.com
 (2603:10b6:8:57:cafe::70) by DS7PR05CA0065.outlook.office365.com
 (2603:10b6:8:57::10) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7228.21 via Frontend
 Transport; Wed, 24 Jan 2024 05:07:53 +0000
Received: from SATLEXMB03.amd.com (165.204.84.17) by
 DS2PEPF00003445.mail.protection.outlook.com (10.167.17.72) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.7202.16 via Frontend Transport; Wed, 24 Jan 2024 05:07:52 +0000
Received: from SATLEXMB06.amd.com (10.181.40.147) by SATLEXMB03.amd.com
 (10.181.40.144) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.34; Tue, 23 Jan
 2024 23:07:50 -0600
Received: from SATLEXMB03.amd.com (10.181.40.144) by SATLEXMB06.amd.com
 (10.181.40.147) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.34; Tue, 23 Jan
 2024 23:07:30 -0600
Received: from [172.23.114.18] (10.180.168.240) by SATLEXMB03.amd.com
 (10.181.40.144) with Microsoft SMTP Server id 15.1.2507.34 via Frontend
 Transport; Tue, 23 Jan 2024 23:07:29 -0600
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 8937d9dc-ba76-11ee-98f5-6d05b1d4d9a1
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=L/CsqmI6xQ1u9J+TChrM13XqHI8r2WNuqM9T+HWVmkiljwb5TXB34goX97Bi8XDVPeh2VKM8pnQ5TT8OrppfClleVmIwLrJYsf8VrFt3uCcORljGK0fSgnZDjpyZXyK6kH/mGX74+tuhZvdopkIXhhoEIXbX5MzIEwnNEvIFDOvFvM/xq60gf83Lqn6aiO7YzqVP4V33g2O5u8D0/altoSGSOqGkE63eTfe1kVti4Y16UU0vHz7Tm6tZ5rbdViSWIRYiBFR/8eS5nrcEnoi/sVge2LnE6def9sxeiCS/kkk8JzGtsawTsaRso2Vkfi5Joav1IExkJtLILrTz4EYUqA==
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=p7OQkgaHwt2qt3q0A5mrs+QCPeRPZNHKYNn+J+Chwu4=;
 b=liFhjt3LThU8JbySdiaP8KEWxbzohVUPt7Rvv1HP7aJCygpNaiM1kaCdlLr7IqW1+Q/tFjQSlvkzPmWWVOCGFx4pQ7LJgOVTsoQKrjBxt6TyyEwRmwg1mUvobEz69vdaxZEh4hkiJ67qnu1H0eXD8koVxpyI3pBY7ZjERZpzpbfupGEv4EmAdZQ1K5kfv8sPse3xpXMd0ZySwJ1vcnKg/gS4V+7W9q/bhsmNSuEXDdpiDvbHuUFNl7g5MBOxLimVQK1uU2wEaVbb9wPrhxJupTI4sOvCnUuDQ+UZe9z4eT5DZMvcrRKskkv95WqLV0xSRe5XwsD25Mey5IhVnTyWhQ==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=suse.com 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)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=p7OQkgaHwt2qt3q0A5mrs+QCPeRPZNHKYNn+J+Chwu4=;
 b=ILpgiMWLx9CfcVzXrQTa1+Y6+lGAgGopY5tBETusssyjDEXzyRvUjuOj4KwtwJCuuAs+xaxnlzmzBYoeXXwoySoU5ZVCb8Ts+s17R3uq1qYKsrfJwoqkURgAgmWCmppMBOTuMnWnVY7B2byDYvqyUiLKd5RA5MZ5DCsQa0XC7ng=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=SATLEXMB03.amd.com; pr=C
Message-ID: <e05e63ab-a86f-45c4-bd80-2b7d6b99aa3d@amd.com>
Date: Wed, 24 Jan 2024 00:07:28 -0500
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v12.2 01/15] vpci: use per-domain PCI lock to protect vpci
 structure
To: Jan Beulich <jbeulich@suse.com>
CC: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>, Andrew Cooper
	<andrew.cooper3@citrix.com>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
	<roger.pau@citrix.com>, Wei Liu <wl@xen.org>, George Dunlap
	<george.dunlap@citrix.com>, Julien Grall <julien@xen.org>, Stefano Stabellini
	<sstabellini@kernel.org>, Jun Nakajima <jun.nakajima@intel.com>, Kevin Tian
	<kevin.tian@intel.com>, Paul Durrant <paul@xen.org>, Volodymyr Babchuk
	<volodymyr_babchuk@epam.com>, <xen-devel@lists.xenproject.org>
References: <20240109215145.430207-1-stewart.hildebrand@amd.com>
 <20240109215145.430207-2-stewart.hildebrand@amd.com>
 <20240115194309.45683-1-stewart.hildebrand@amd.com>
 <7e936e6a-3218-4c4a-ac68-a58cd363a11d@suse.com>
Content-Language: en-US
From: Stewart Hildebrand <stewart.hildebrand@amd.com>
In-Reply-To: <7e936e6a-3218-4c4a-ac68-a58cd363a11d@suse.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 7bit
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: DS2PEPF00003445:EE_|IA1PR12MB7494:EE_
X-MS-Office365-Filtering-Correlation-Id: be886803-73d8-4bbe-d163-08dc1c9a6b4c
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam: BCL:0;
X-Microsoft-Antispam-Message-Info:
	FixAuo4ZpyT4LsTNkGhOiwCKwdsReiHQUeacYvCMd0uTsA1b/gq/XLZ67fRlTkpgZtm+k8GKiLTXmfigVHlno4iIsqLQ1WI+IgN62/cXjxLy79vsOVTm+FEyi8NNjmzE5AOldP+xpRNuilpD3S59I4mAqj372DQyWTMzMsal6LJKsi9n1zMKlBzvGukoxEzgV+3O7J3rAIV+zPMn1CXoKbVUKP8aOhhlkujUozc+QK5WlKlzI6MPxI4onPakn2e7/BxEZOQbV9CZVWWIEm88oJoGcfECBzOSlScbUo9Lns4yubIP1jCDOfmgfpmoYMpipZCAkG+opf5IzrDERQylAQNVyiSPh+ijgVkjRwmxqIMrXw/W6Hla/yKpzJB/ESxID8E6pCQVCPQiPJX9JJpnBjMOVzgUMHSUxgqL1woT9Tw8sJJ1O8zXgScMMaQ7a2Hveqd/re7mnDjm07iDaJxCN7lj8sX494UoKDksXrAkZTxOUNMkyC/NLTvow8J+f1RGg7mIEJJKxhxP4WE7JWZQom4lsqerkcT2Q45hiDQnonaXW6HtHDlIdF6kbG8B41OLx2yHhLz1bOraUbXNCc7clpHH4rcbzvaHK/cTkBCKRUZf98Iltf/NoL+Ii8+DJNCgsK7XO1hqheh8QjTMxaFrRKF3aiiPpTwMx7TmFPINHwck3FGtlDwAQQtbc/B9Lhnd/1GqPKbk5bLsenDEEapMEJ4aQyfapN4sAznv3xjIZxA9BSfLknHnFJH33f8wqA4iJCyAH/NFRXBWfsMn+IqBwSHTzeyF7IaLk27BQ7RFXYY=
X-Forefront-Antispam-Report:
	CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB03.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230031)(4636009)(136003)(39860400002)(376002)(396003)(346002)(230922051799003)(64100799003)(186009)(1800799012)(82310400011)(451199024)(36840700001)(46966006)(40470700004)(36860700001)(2906002)(81166007)(40460700003)(40480700001)(82740400003)(5660300002)(41300700001)(31686004)(7416002)(47076005)(44832011)(86362001)(70586007)(70206006)(356005)(54906003)(31696002)(36756003)(966005)(16576012)(6916009)(426003)(8676002)(316002)(8936002)(4326008)(478600001)(26005)(2616005)(53546011)(83380400001)(336012)(43740500002)(36900700001);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Jan 2024 05:07:52.9568
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: be886803-73d8-4bbe-d163-08dc1c9a6b4c
X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB03.amd.com]
X-MS-Exchange-CrossTenant-AuthSource:
	DS2PEPF00003445.namprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA1PR12MB7494

On 1/23/24 09:29, Jan Beulich wrote:
> On 15.01.2024 20:43, Stewart Hildebrand wrote:
>> @@ -1043,11 +1043,11 @@ static int __pci_enable_msix(struct pci_dev *pdev, struct msi_info *msi,
>>  {
>>      struct msi_desc *old_desc;
>>  
>> -    ASSERT(pcidevs_locked());
>> -
>>      if ( !pdev || !pdev->msix )
>>          return -ENODEV;
>>  
>> +    ASSERT(pcidevs_locked() || rw_is_locked(&pdev->domain->pci_lock));
>> +
>>      if ( msi->entry_nr >= pdev->msix->nr_entries )
>>          return -EINVAL;
> 
> Further looking at this - is dereferencing pdev actually safe without holding
> the global lock?

Are you referring to the new placement of the ASSERT, which opens up the possibility that pdev could be dereferenced and the function return before the ASSERT? If that is what you mean, I see your point. The ASSERT was placed there simply because we wanted to check that pdev != NULL first. See prior discussion at [1]. Hmm.. How about splitting the pdev-checking condition? E.g.:

    if ( !pdev )
        return -ENODEV;

    ASSERT(pcidevs_locked() || rw_is_locked(&pdev->domain->pci_lock));

    if ( !pdev->msix )
        return -ENODEV;


[1] https://lore.kernel.org/xen-devel/85a52f8d-d6db-4478-92b1-2b6305769c96@amd.com/


From xen-devel-bounces@lists.xenproject.org Wed Jan 24 07:23:42 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 24 Jan 2024 07:23:42 +0000
Received: from list by lists.xenproject.org with outflank-mailman.670725.1043682 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSXba-0001Qb-EG; Wed, 24 Jan 2024 07:23:26 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 670725.1043682; Wed, 24 Jan 2024 07:23:26 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSXba-0001QU-AN; Wed, 24 Jan 2024 07:23:26 +0000
Received: by outflank-mailman (input) for mailman id 670725;
 Wed, 24 Jan 2024 07:23:24 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=bgOV=JC=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rSXbY-0001PK-AU
 for xen-devel@lists.xen.org; Wed, 24 Jan 2024 07:23:24 +0000
Received: from mail-ej1-x62d.google.com (mail-ej1-x62d.google.com
 [2a00:1450:4864:20::62d])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 72532c85-ba89-11ee-9b0f-b553b5be7939;
 Wed, 24 Jan 2024 08:23:20 +0100 (CET)
Received: by mail-ej1-x62d.google.com with SMTP id
 a640c23a62f3a-a30e445602cso166118966b.0
 for <xen-devel@lists.xen.org>; Tue, 23 Jan 2024 23:23:19 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 y4-20020a05663824c400b0046993034c91sm3862625jat.77.2024.01.23.23.23.17
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 23 Jan 2024 23:23:18 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 72532c85-ba89-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1706080999; x=1706685799; darn=lists.xen.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=VSE4kQ/hPcHD6nbAQ9d8843Yfcvkq/XWY737A3Us3WI=;
        b=dval/+RGR8UNDrAhLtZRZUvageuHHUoqo/DzxpCETbgTdZd8x+OuHptNCGHO0copfP
         aTass94T4xf/vfdttQkxhhA6wzSHUsftugrVyHnlRY/XXEasncNk5xt50URfXJ3fgaSI
         MAV45dvR6GUSWH3ZTQ4SVjupV3YcZ4IvIHR5s5YivdUFZ8erEVhJFpbYNkHLukk51bxB
         GauCMopes4Cqy1zfdWYO8zP957jOqPAM30m6BPDntuiBpzdt1dqHZz/m7Up2zmtLtrJ3
         uJ1XDk+2mNw/c/i/jlLZMfjPks8K/g1MWAwSOsYP8liSWtq5Sw5omyJ8dyW0Cb5ld9Oh
         QkWg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706080999; x=1706685799;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=VSE4kQ/hPcHD6nbAQ9d8843Yfcvkq/XWY737A3Us3WI=;
        b=UcqalVVj9T5uShI+sathoR2dcNr3U7VV4Deo53lmoUc1GccsDIdSyno8UL82ydXTyW
         poi4Rr4BHnv+zMJM+CzBIpMN+XJLX/jeSaJ+2fTR4F1pUgcNXpdlCNX6pwUQ32ImwuxI
         KvXctRRSBay8N9H4N2Zhu0LsG9f+4o9nIaC74ucaVJPVcuYD/ipl2fZ/ZnriserYxWTl
         opVt7iBXhmDx82h8dK1MuE+BV4EuG0+pmU9AbzLedDb4roPew8jYbwVbZRhJP6SGGqNH
         OClbowCFqVS1iQMvpq/n0mauZZeLaDUnQ4V4YvqyaZcTTpH6DAY/VSyQ5ztAnZzuLrEw
         Rrlw==
X-Gm-Message-State: AOJu0YwZNXcKdpiXj/BLlI5wR3CMLIrbpKsNeIWVgLTJF7bQEuTnWKqP
	z92ewU/sPdfAAYIEvohOmJ2oov1BdTzvfVx1YQtVnYJkr+jBRLDzerDt5iWwOA==
X-Google-Smtp-Source: AGHT+IF4VP3QmJG+4fbChWciNa+ZL8MsSwLzBO19zc3oDhnHSVEN4wd37RARJGGdWWCcHxeSCMdtfg==
X-Received: by 2002:a17:906:5399:b0:a2e:7f37:8301 with SMTP id g25-20020a170906539900b00a2e7f378301mr793830ejo.27.1706080998926;
        Tue, 23 Jan 2024 23:23:18 -0800 (PST)
Message-ID: <e7d67831-d7b9-48fd-9478-f89e85ce0422@suse.com>
Date: Wed, 24 Jan 2024 08:23:15 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: Thoughts on current Xen EDAC/MCE situation
Content-Language: en-US
To: Elliott Mitchell <ehem+xen@m5p.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, xen-devel@lists.xen.org
References: <Za7Vr+Rb25y/+MSy@mattapan.m5p.com>
 <111f5551-70fa-4ded-a62a-e0aa967b3c29@suse.com>
 <ZbBDJGKqTU9rdpgD@mattapan.m5p.com>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <ZbBDJGKqTU9rdpgD@mattapan.m5p.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 23.01.2024 23:52, Elliott Mitchell wrote:
> On Tue, Jan 23, 2024 at 11:44:03AM +0100, Jan Beulich wrote:
>> On 22.01.2024 21:53, Elliott Mitchell wrote:
>>
>>> I find the present handling of MCE in Xen an odd choice.  Having Xen do
>>> most of the handling of MCE events is a behavior matching a traditional
>>> stand-alone hypervisor.  Yet Xen was originally pushing any task not
>>> requiring hypervisor action onto Domain 0.
>>
>> Not exactly. Xen in particular deals with all of CPU and all of memory.
>> Dom0 may be unaware of the full amount of CPUs in the system, nor the
>> full memory map (without resorting to interfaces specifically making
>> that information available, but not to be used for Dom0 kernel's own
>> acting as a kernel).
> 
> Why would this be an issue?

Well, counter question: For all of ...

> I would expect the handling to be roughly:  NMI -> Xen; Xen schedules a
> Dom0 vCPU which is eligible to run on the pCPU onto the pCPU; Dom0
> examines registers/MSRs, Dom0 then issues a hypercall to Xen telling
> Xen how to resolve the issue (no action, fix memory contents, kill page).
> 
> Ideally there would be an idle Dom0 vCPU, but interrupting a busy vCPU
> would be viable.  It would even be reasonable to ignore affinity and
> grab any Dom0 vCPU.
> 
> Dom0 has 2 purposes for the address.  First, to pass it back to Xen.
> Second, to report it to a system administrator so they could restart the
> system with that address marked as bad.  Dom0 wouldn't care whether the
> address was directly accessible to it or not.
> 
> The proposed hypercall should report back what was effected by a UE
> event.  A given site might have a policy that if $some_domain is hit by a
> UE, everything is restarted.  Meanwhile Dom0 or Xen being the winner
> could deserve urgent action.

... this, did you first look at code and figure how what you suggest
could be seamlessly integrated? Part of your suggestion (if I got it
right) is, after all, to make maintenance on the Dom0 kernel side easy.
I expect such adjustments being not overly intrusive would also be an
acceptance criteria by the maintainers.

Second - since you specifically talk about UE: The more code is involved
in handling, the higher the chance of the #MC ending up fatal to the
system.

Third, as to Dom0's purposes of having the address: If all it is to use
it for is to pass it back to Xen, paths in the respective drivers will
necessarily be entirely different for the Xen vs the native cases.

Jan


From xen-devel-bounces@lists.xenproject.org Wed Jan 24 07:28:21 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 24 Jan 2024 07:28:21 +0000
Received: from list by lists.xenproject.org with outflank-mailman.670729.1043692 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSXgI-0002Ci-TT; Wed, 24 Jan 2024 07:28:18 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 670729.1043692; Wed, 24 Jan 2024 07:28:18 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSXgI-0002Cb-Qx; Wed, 24 Jan 2024 07:28:18 +0000
Received: by outflank-mailman (input) for mailman id 670729;
 Wed, 24 Jan 2024 07:28:17 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=bgOV=JC=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rSXgH-0002CV-KM
 for xen-devel@lists.xenproject.org; Wed, 24 Jan 2024 07:28:17 +0000
Received: from mail-lj1-x234.google.com (mail-lj1-x234.google.com
 [2a00:1450:4864:20::234])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 2360b9b1-ba8a-11ee-98f5-6d05b1d4d9a1;
 Wed, 24 Jan 2024 08:28:15 +0100 (CET)
Received: by mail-lj1-x234.google.com with SMTP id
 38308e7fff4ca-2cf0390eddbso29594731fa.3
 for <xen-devel@lists.xenproject.org>; Tue, 23 Jan 2024 23:28:16 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 bp15-20020a056e02348f00b00362768a8dccsm2544939ilb.30.2024.01.23.23.28.13
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 23 Jan 2024 23:28:15 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 2360b9b1-ba8a-11ee-98f5-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1706081295; x=1706686095; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=13J/573p5yTOl4Bv2jB6f75mu7N4YGoeH7GAbsuZwXk=;
        b=U+XySo6RRQVHFvO3S/ZtfD0G+VkJKB9UcuBwwUCxc0Tz9DUU1yR2vjxo+3Tu6bPec4
         Qg9KsTzbrC+lwUKjY1Pis15uINumvsep79tJhZMlBW9vvsZoRLE3IpmnKZ32629kOZ2e
         7J8+t+hqHXmefBOi5flxgNiDkxtflkSiPPe0hR1BHv1mIagrERUxTLRI0bf4O6IwhJEN
         w4GmOTfXzwEMGp5Fh7e90JMeYJRbjjKOeE6bNf9yXsNmhBjdsYTFqEN2UuJ9LKJqaeTe
         nThxaoUy3uZ/CxxVi1q5ZD8FbRVKNLrCkLfJi1YTdu5IMHRaiAGgngbAfuh9H8Wsygts
         QLog==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706081295; x=1706686095;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=13J/573p5yTOl4Bv2jB6f75mu7N4YGoeH7GAbsuZwXk=;
        b=G0e6NvtkaFxQHvhDLfddxxTgS3+Y/8QbhgskWDURd/btTlkYB1AAEv0baY7I6q+3cc
         xFvJUOJGtlVLHdu+zf/YTSPRXTVylNKZop+Py3PqVSJWuo/mTaqBANKuZPlflTtUZiHv
         MRaIqXFt2FP7cyuGNWi3CE/xizHxc1ejvwE4dUurfAG5UCoc7LiGlphFkCTuMHPJ0So9
         jQABzQFDAXnRFYtYJZLEY8W665U7dIpj6Dsl93DvRA8LFZ1Zn9nz9gB1/Nh9jKEowc6A
         FN9q3R5oADV2yoRWyv/C+nqbNvawNRNrha1jkdpvhIZsbAKN8ZTkDoP7TBYiX7Ub/9qx
         DdWA==
X-Gm-Message-State: AOJu0YzOnuO4XUjyO/Pn4V0gIhoP8UpC295bCoHhzavaEWd6GFfBVwRP
	sKt3gIECtdobntO2hYdwiVDFS11cIcY5thZ49KoOARyHWT3+WbkVCgJxyD2ZoA==
X-Google-Smtp-Source: AGHT+IFevQRJWrlFfmpyhLUhWszya8KaKTrlU+ZT1o+xmbzitNjTi+zr+uP17fWY3tmz1gEmlrnTnA==
X-Received: by 2002:a2e:b163:0:b0:2cc:dcb6:5191 with SMTP id a3-20020a2eb163000000b002ccdcb65191mr567619ljm.62.1706081295529;
        Tue, 23 Jan 2024 23:28:15 -0800 (PST)
Message-ID: <665b7ea9-77d9-4bbc-a67c-1ac0d9ba908a@suse.com>
Date: Wed, 24 Jan 2024 08:28:10 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] consolidate do_bug_frame() / bug_fn_t
Content-Language: en-US
To: Stefano Stabellini <sstabellini@kernel.org>
Cc: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>,
 Federico Serafini <federico.serafini@bugseng.com>,
 Andrew Cooper <andrew.cooper3@citrix.com>,
 George Dunlap <george.dunlap@citrix.com>, Julien Grall <julien@xen.org>,
 Wei Liu <wl@xen.org>, Bertrand Marquis <bertrand.marquis@arm.com>,
 Michal Orzel <michal.orzel@amd.com>
References: <d466eb44-1160-4b57-a41f-752dbf626748@suse.com>
 <alpine.DEB.2.22.394.2401231731570.2287888@ubuntu-linux-20-04-desktop>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <alpine.DEB.2.22.394.2401231731570.2287888@ubuntu-linux-20-04-desktop>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 24.01.2024 02:34, Stefano Stabellini wrote:
> I managed to get back to read the mailing list and noticed this patch.
> 
> Is it still relevant and needs to be reviewed?
> 
> Are there any outstanding disagreements between maintainers on the
> approach to take here?  Or should I just go ahead and review it?

It is still relevant from my pov, and everything that may be controversial
is said ...

> On Tue, 9 Jan 2024, Jan Beulich wrote:
>> The type not being used in do_bug_frame() is suspicious. Apparently
>> that's solely because the type uses a pointer-to-const parameter,
>> when run_in_exception_handler() wants functions taking pointer-to-non-
>> const. Drop the const, in turn requiring Arm's do_bug_frame() to also
>> have its const dropped. This then brings that function also closer to
>> the common one, with Arm's use of vaddr_t remaining as a difference.
>>
>> Signed-off-by: Jan Beulich <jbeulich@suse.com>
>> ---
>> This is an alternative proposal to
>> https://lists.xen.org/archives/html/xen-devel/2023-12/msg01385.html,
>> albeit without paving a road towards Andrew's desire of getting rid of
>> show_execution_state_nonconst() again. Retaining (and propagating) the
>> const would imply the need to cast away the const-ness somewhere on (at
>> least) the path to invoking gdb stub code. Personally I'm averse to such
>> casting away of const-ness ...

... here. Without Andrew commenting, I'm afraid it's not actually clear
whether he objects to this approach, or is meaning to tolerate it
silently, or actually views it as a step in a good direction, even if
not quite getting where earlier on he thought we may want to move to.

Jan


From xen-devel-bounces@lists.xenproject.org Wed Jan 24 08:08:16 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 24 Jan 2024 08:08:16 +0000
Received: from list by lists.xenproject.org with outflank-mailman.670742.1043702 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSYIi-0008HB-AJ; Wed, 24 Jan 2024 08:08:00 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 670742.1043702; Wed, 24 Jan 2024 08:08:00 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSYIi-0008H4-7Y; Wed, 24 Jan 2024 08:08:00 +0000
Received: by outflank-mailman (input) for mailman id 670742;
 Wed, 24 Jan 2024 08:07:59 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=bgOV=JC=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rSYIh-0008Gy-4l
 for xen-devel@lists.xenproject.org; Wed, 24 Jan 2024 08:07:59 +0000
Received: from mail-lj1-x22f.google.com (mail-lj1-x22f.google.com
 [2a00:1450:4864:20::22f])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id af46d7b6-ba8f-11ee-98f5-6d05b1d4d9a1;
 Wed, 24 Jan 2024 09:07:58 +0100 (CET)
Received: by mail-lj1-x22f.google.com with SMTP id
 38308e7fff4ca-2cf108f6a2dso17984401fa.3
 for <xen-devel@lists.xenproject.org>; Wed, 24 Jan 2024 00:07:57 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 c8-20020a056e020cc800b0036197f7f157sm2837097ilj.2.2024.01.24.00.07.55
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 24 Jan 2024 00:07:56 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: af46d7b6-ba8f-11ee-98f5-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1706083677; x=1706688477; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=oydzX1fgiau+XzsIwkm0mdErCi3ZW6pW/Kj3UVBTZDI=;
        b=IALKg70Zx7jFl71wJ9fd6jO/Ok3oZHNtje5nUr+qPBbbkn0ZVNABWn8aR3w+NKSSZc
         rO41aqxOrDeJ6zr/9LwjYqJxRIE+ppny/kJkFYS9KZ0/E+g5/tmvPkeqyz9Ki8CAWIPc
         Cfo5Iy1EwuNmN2TJEYmTiZOcyf/p6oo7kebSxVmZGHGsQ1U93kyrODoUdITnVwEJjXi5
         IKtXrJSziE4zRscK/y0r/mrcd+eAqDbx9D2TZc12aoT5ISE84vJEjiwK22Mg0MJ+ozVJ
         QnHduf24SrhPdGSSMpnCAD+WfWQKIVLQ6Uo9fhZzxqNOcFysvfHcfoPEzTAVN+SFv+QG
         6LLg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706083677; x=1706688477;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=oydzX1fgiau+XzsIwkm0mdErCi3ZW6pW/Kj3UVBTZDI=;
        b=FOptgTQaH9xAniNs7ql9l0ehA+6W9mT7/s3Y1xecNZ1dvURBtiPDur8yXGF411Jryl
         c1pgjm8InjenajVVBUqvRTOyQ97ybKQqEZycvwQGhJPqu9GieUFN0nexLLwpW9wUOOiP
         kLIFE+k9hKedxqZ0qisyTUE8OetFMLMdyDjhZ8Nai9s80wbG4DvaxJAeqM1kZdeXM7CW
         XO4A804+VozB2Bcpzu7mQmv0mx9LKKsMguWVSD6Kg82LXZoPxj9JUlcYl0cPy7gwLRwa
         p8JHJasbboAtaEC+YqFRDxYfRULhgHbVbi7cbuHFSQJMkW+anrN0lj5eQ7FG/ucbuoaj
         tukg==
X-Gm-Message-State: AOJu0YwyEOtADxtquhDm19UILjBmWWxZ6K1A+/D7qey9sOSzxgReYLfi
	1w1M65wwQiUnaYnnMEc1zpHJwrQiP4E0GlosDhvBrrnncdMdle4LFI8T7225AA==
X-Google-Smtp-Source: AGHT+IHFCklphROpCt7dbUm9nz7Vvd5QPBLRt6sGEH1A3gVytYNZas5nGdLDmv0c5uUNH+32wpR+Yg==
X-Received: by 2002:a2e:8916:0:b0:2cf:1b7b:11d2 with SMTP id d22-20020a2e8916000000b002cf1b7b11d2mr553716lji.105.1706083677371;
        Wed, 24 Jan 2024 00:07:57 -0800 (PST)
Message-ID: <b6dd4bff-d40a-47c7-9c18-913ed2bd07c1@suse.com>
Date: Wed, 24 Jan 2024 09:07:53 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 27/34] xen/riscv: define an address of frame table
Content-Language: en-US
To: Oleksii <oleksii.kurochko@gmail.com>
Cc: Alistair Francis <alistair.francis@wdc.com>,
 Bob Eshleman <bobbyeshleman@gmail.com>, Connor Davis
 <connojdavis@gmail.com>, Andrew Cooper <andrew.cooper3@citrix.com>,
 George Dunlap <george.dunlap@citrix.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>,
 xen-devel@lists.xenproject.org
References: <cover.1703255175.git.oleksii.kurochko@gmail.com>
 <d0a357e3b9597479b539e88915731b3f15489c04.1703255175.git.oleksii.kurochko@gmail.com>
 <39837f92-d139-49c3-9e5f-a79dd585f050@suse.com>
 <2267a8dc4b1be495be65c2d7e22378cd2394829c.camel@gmail.com>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <2267a8dc4b1be495be65c2d7e22378cd2394829c.camel@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 23.01.2024 17:50, Oleksii wrote:
> On Tue, 2024-01-23 at 12:32 +0100, Jan Beulich wrote:
>> On 22.12.2023 16:13, Oleksii Kurochko wrote:
>>> @@ -22,25 +30,56 @@
>>>   *
>>>   * It means that:
>>>   *   top VA bits are simply ignored for the purpose of translating
>>> to PA.
>>> +#endif
>>>   *
>>> - *
>>> ===================================================================
>>> =========
>>> - *    Start addr    |   End addr        |  Size  | Slot      
>>> |area description
>>> - *
>>> ===================================================================
>>> =========
>>> - * FFFFFFFFC0800000 |  FFFFFFFFFFFFFFFF |1016 MB | L2 511     |
>>> Unused
>>> - * FFFFFFFFC0600000 |  FFFFFFFFC0800000 |  2 MB  | L2 511     |
>>> Fixmap
>>> - * FFFFFFFFC0200000 |  FFFFFFFFC0600000 |  4 MB  | L2 511     |
>>> FDT
>>> - * FFFFFFFFC0000000 |  FFFFFFFFC0200000 |  2 MB  | L2 511     |
>>> Xen
>>> - *                 ...                  |  1 GB  | L2 510     |
>>> Unused
>>> - * 0000003200000000 |  0000007F80000000 | 309 GB | L2 200-509 |
>>> Direct map
>>> - *                 ...                  |  1 GB  | L2 199     |
>>> Unused
>>> - * 0000003100000000 |  00000031C0000000 |  3 GB  | L2 196-198 |
>>> Frametable
>>> - *                 ...                  |  1 GB  | L2 195     |
>>> Unused
>>> - * 0000003080000000 |  00000030C0000000 |  1 GB  | L2 194     |
>>> VMAP
>>> - *                 ...                  | 194 GB | L2 0 - 193 |
>>> Unused
>>> - *
>>> ===================================================================
>>> =========
>>> + *       SATP_MODE_SV32   | SATP_MODE_SV39   | SATP_MODE_SV48   |
>>> SATP_MODE_SV57
>>> + *     
>>> ==================|==================|==================|==========
>>> =======
>>> + * BA0 | FFFFFFFFFFE00000 | FFFFFFFFC0000000 | FFFFFF8000000000 |
>>> FFFF000000000000
>>> + * BA1 | 0000000019000000 | 0000003200000000 | 0000640000000000 |
>>> 00C8000000000000
>>> + * BA2 | 0000000018800000 | 0000003100000000 | 0000620000000000 |
>>> 00C4000000000000
>>> + * BA3 | 0000000018400000 | 0000003080000000 | 0000610000000000 |
>>> 00C2000000000000
>>>   *
>>> -#endif
>>> + *
>>> ===================================================================
>>> ============
>>> + * Start addr     |   End addr          |  Size  | Root PT slot |
>>> Area description
>>> + *
>>> ===================================================================
>>> ============
>>> + * BA0 + 0x800000 |  FFFFFFFFFFFFFFFF   |1016 MB |     511      |
>>> Unused
>>> + * BA0 + 0x400000 |  BA0 + 0x800000     |  2 MB  |     511      |
>>> Fixmap
>>> + * BA0 + 0x200000 |  BA0 + 0x400000     |  4 MB  |     511      |
>>> FDT
>>> + * BA0            |  BA0 + 0x200000     |  2 MB  |     511      |
>>> Xen
>>> + *                 ...                  |  1 GB  |     510      |
>>> Unused
>>> + * BA1 + 0x000000 |  BA1 + 0x4D80000000 | 309 GB |   200-509    |
>>> Direct map
>>
>> This definitely can't be right for SV32. Others may be problematic,
>> too, like ...
>>
>>> + *                 ...                  |  1 GB  |     199      |
>>> Unused
>>> + * BA2 + 0x000000 |  BA2 + 0xC0000000   |  3 GB  |   196-198    |
>>> Frametable
>>
>> ... this one. Otoh I'd expect both to potentially be much larger in
>> SV48 and SV57 modes.
> Regarding Sv32, it looks to me the only BA0 and End addr at the first
> line isn't correct as address size is 32.
> 
> Regarding other modes, yes, it should be changed Size column. Also, the
> size of frame table should be recalculated.
> 
> Do we really need size column?
> 
> Wouldn't it be enough only have PT slot number?

Perhaps.

> Would it be better to have separate table for each mode?

Don't know.

>>> +#define VPN_BITS    (9)
>>
>> This need to move ...
>>
>>> +#define HYP_PT_ROOT_LEVEL (CONFIG_PAGING_LEVELS - 1)
>>> +
>>> +#ifdef CONFIG_RISCV_64
>>
>> ... here, I think, for not being applicable to SV32?
> You are right, it is not applicable for Sv32. In case of Sv32, it
> should be 10.
> But I am not sure that it is correct only to move this definition as
> RISCV-64 can also use Sv32. So it looks like VPN_BITS should be "#ifdef
> RV_STAGE1_MODE == Sv32".

Can it? The spec talks of SXLEN=32 implying SV32, while SXLEN=64 permits
SV39, SV48, and SV57. No mention of SV32 there.

>>> +#define SLOTN_ENTRY_BITS        (HYP_PT_ROOT_LEVEL * VPN_BITS +
>>> PAGE_SHIFT)
>>> +#define SLOTN(slot)             (_AT(vaddr_t, slot) <<
>>> SLOTN_ENTRY_BITS)
>>> +#define SLOTN_ENTRY_SIZE        SLOTN(1)
>>
>> Do you have any example of how/where this going to be used?
> Yes, it will be used to define DIRECTMAP_SIZE:
> #define DIRECTMAP_SIZE          (SLOTN_ENTRY_SIZE * (509-200))

How about

#define DIRECTMAP_SIZE          (SLOTN(509) - SLOTN(200))

instead?

>>> +#define XEN_VIRT_START 0xFFFFFFFFC0000000 /* (_AC(-1, UL) + 1 -
>>> GB(1)) */
>>
>> Won't /* -GB(1) */ do, thus allowing the line to also be padded such
>> that
>> it matches neighboring ones in layout?
> Could you please clarify what do you mean by padded here? The intention
> was to show that 1 GB is used for Xen, FDT and fixmap.

I'm talking of blank padding in the source file. Note how preceding and
following #define-s blank-pad expansions so they all align. Just this
one in the middle does not.

Jan

>>> +#define FRAMETABLE_VIRT_START   SLOTN(196)
>>> +#define FRAMETABLE_SIZE         GB(3)
>>> +#define FRAMETABLE_NR           (FRAMETABLE_SIZE /
>>> sizeof(*frame_table))
>>> +#define FRAMETABLE_VIRT_END     (FRAMETABLE_VIRT_START +
>>> FRAMETABLE_SIZE - 1)
>>> +
>>> +#define VMAP_VIRT_START         SLOTN(194)
>>> +#define VMAP_VIRT_SIZE          GB(1)
>>> [...]
>>
> 



From xen-devel-bounces@lists.xenproject.org Wed Jan 24 08:09:41 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 24 Jan 2024 08:09:41 +0000
Received: from list by lists.xenproject.org with outflank-mailman.670746.1043712 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSYKA-0000SY-LK; Wed, 24 Jan 2024 08:09:30 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 670746.1043712; Wed, 24 Jan 2024 08:09:30 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSYKA-0000SR-Hb; Wed, 24 Jan 2024 08:09:30 +0000
Received: by outflank-mailman (input) for mailman id 670746;
 Wed, 24 Jan 2024 08:09:29 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=bgOV=JC=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rSYK9-0000SJ-7Y
 for xen-devel@lists.xenproject.org; Wed, 24 Jan 2024 08:09:29 +0000
Received: from mail-lj1-x234.google.com (mail-lj1-x234.google.com
 [2a00:1450:4864:20::234])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id e4755720-ba8f-11ee-9b0f-b553b5be7939;
 Wed, 24 Jan 2024 09:09:27 +0100 (CET)
Received: by mail-lj1-x234.google.com with SMTP id
 38308e7fff4ca-2cf0e9f76b4so19978991fa.1
 for <xen-devel@lists.xenproject.org>; Wed, 24 Jan 2024 00:09:27 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 c8-20020a056e020cc800b0036197f7f157sm2837097ilj.2.2024.01.24.00.09.24
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 24 Jan 2024 00:09:26 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: e4755720-ba8f-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1706083767; x=1706688567; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=+P7zV7K1yaA9axuWOisKiHkCjFbxEMBhbbcgQ3S5fcA=;
        b=TtDbVWhQ6hh4gzUeOgEWI10/yLR42QvILW1/8Xl/ph0HrV0fpZOm1DqI499o8Z/Yvd
         1g3c0Jvwy6KTyeBO+nntpRtqTkW6oGTDYFkA1MVALcEu2LjhnDmr8qHqjKDGNNwTjBE4
         j9hMndluTIJDKecvook40sWQmb2wej03SVzU4qHO55AwCl+70iybKXS+sIFmj+q24DtR
         yY+x8wzrf3e01XumFUd0eiC2cwE7lIChdsXnCcAqWs57Vrhrgfk+1dqhlFNPXeA1HlBi
         nBc3otVhSUQmrj433fOWlPycRC9T3gWvp6sNB/N7gi5f8SL+RI7rDb04SnGzCzMmHr1i
         5chg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706083767; x=1706688567;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=+P7zV7K1yaA9axuWOisKiHkCjFbxEMBhbbcgQ3S5fcA=;
        b=V35C1D8Rx8yKAdTlVRa0zDIPJVNLuWiUT1cY5gTz+wUuct53Gm1D/tvBycJ0ZdaMxn
         XoMRUTSPI3y5YDVW/d6UfjWe8prjoqp67BHaPy0XlW76hagmHVbWPnQy6fJ3ne15v6lv
         EO8TeXYnvkL9V4utJN/rEMiYwq2Ak7z+qswB8P+9oaUGvkz0x5FYPahTB6XhVeKcFSH+
         J8i9/xRan3/rVyjWwHnI326LBA159XARNDjOVFlYo6NqZDfMaAXZirGOyqM9mVlWx3Mq
         x1uuSWU83xJK2P4DLOa2j2KvBfLk2PBhJ4yd0/wXxugCk/LknW51BioKX3L7FOAqGgTP
         wDoQ==
X-Gm-Message-State: AOJu0YyUx/3Y+60fHj8VSmwLq39t8FQ6BnfkgiMM3DNny8g6xgXpx+S2
	XX9KQZ2oLCEjvoIfrg8+e8PS0yGssLVz2UAf6UHMrPVljsNG7Ba4neUvjHB2jQ==
X-Google-Smtp-Source: AGHT+IGT9ZI4LD6FXzLl2wnqyq6Svkr4f+Xx/xyaysk0nr/b4Vv8UI5TPiTfAGstXj5jZamXCEBbuA==
X-Received: by 2002:a2e:a453:0:b0:2cf:1707:2c23 with SMTP id v19-20020a2ea453000000b002cf17072c23mr276394ljn.61.1706083766759;
        Wed, 24 Jan 2024 00:09:26 -0800 (PST)
Message-ID: <2c3086e1-39d8-4060-93f1-4c53283c0d70@suse.com>
Date: Wed, 24 Jan 2024 09:09:24 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 29/34] xen/riscv: add minimal stuff to page.h to build
 full Xen
Content-Language: en-US
To: Oleksii <oleksii.kurochko@gmail.com>
Cc: Alistair Francis <alistair.francis@wdc.com>,
 Bob Eshleman <bobbyeshleman@gmail.com>, Connor Davis
 <connojdavis@gmail.com>, Andrew Cooper <andrew.cooper3@citrix.com>,
 George Dunlap <george.dunlap@citrix.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>,
 xen-devel@lists.xenproject.org
References: <cover.1703255175.git.oleksii.kurochko@gmail.com>
 <7aa26bdad9bf923fd57f7a90e41c049cab0cd5bd.1703255175.git.oleksii.kurochko@gmail.com>
 <0740cab9-be2e-4aae-8b03-e3ec95d0b0ef@suse.com>
 <c7004f13d082535cebd50fbe0e2446e3af78e48d.camel@gmail.com>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <c7004f13d082535cebd50fbe0e2446e3af78e48d.camel@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 23.01.2024 17:54, Oleksii wrote:
> On Tue, 2024-01-23 at 12:36 +0100, Jan Beulich wrote:
>> On 22.12.2023 16:13, Oleksii Kurochko wrote:
>>> Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>
>>> Acked-by: Jan Beulich <jbeulich@suse.com>
>>> ---
>>> Changes in V3:
>>>  - update the commit message
>>
>> Once again I find this puzzling, considering there's no commit
>> message
>> at all.
> By the I meant that asm/page.h was changed to page.h

Oh. Can you say "title" or "subject" when you mean that, and "commit
message" (or "description") only when you actually mean the description?

Jan


From xen-devel-bounces@lists.xenproject.org Wed Jan 24 08:19:49 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 24 Jan 2024 08:19:49 +0000
Received: from list by lists.xenproject.org with outflank-mailman.670754.1043722 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSYU4-0002Xm-LB; Wed, 24 Jan 2024 08:19:44 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 670754.1043722; Wed, 24 Jan 2024 08:19:44 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSYU4-0002Xf-IT; Wed, 24 Jan 2024 08:19:44 +0000
Received: by outflank-mailman (input) for mailman id 670754;
 Wed, 24 Jan 2024 08:19:43 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=bgOV=JC=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rSYU3-0002WM-1j
 for xen-devel@lists.xenproject.org; Wed, 24 Jan 2024 08:19:43 +0000
Received: from mail-lj1-x22f.google.com (mail-lj1-x22f.google.com
 [2a00:1450:4864:20::22f])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 5205350e-ba91-11ee-9b0f-b553b5be7939;
 Wed, 24 Jan 2024 09:19:40 +0100 (CET)
Received: by mail-lj1-x22f.google.com with SMTP id
 38308e7fff4ca-2cf19f65271so15144491fa.2
 for <xen-devel@lists.xenproject.org>; Wed, 24 Jan 2024 00:19:40 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 bq3-20020a056e02238300b003628d0476eesm908814ilb.26.2024.01.24.00.19.37
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 24 Jan 2024 00:19:39 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 5205350e-ba91-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1706084380; x=1706689180; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=58+NCikL/bQyJl0QckgCyYqs5+fQvIdlAVkDfEwnz6Q=;
        b=KCTA5aWb6cPzZ6HQ9wXhMxket9h9yhqaYIQ+1Ts7vP7E9p2RPVRng8xwE6INWJbtGG
         n6vPkwqLcTOID4T5ym2rkiBRaZYpSuh9vn2WyuzX0EO55TVkTHwi7BOrvmmZckCYl0Cc
         wGEOah7MRn/9lYAupperKuUU5mBoLmRcFshhKd6vtC7wNwRDkRccvHUFJwbw2wIdsB6p
         rDiJEDsos4rqZr5STWU2cEKlszmXjomakzX/9CFAwA9B9pX8Ivr6t1dPQ1PW4vTSxhoh
         kFZe6PM+Jjzp9gZhkOguXReiVdg9gWzRyIw7nyCFw/cgzvofvY+CiiXBAefublDR8OCp
         nq7w==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706084380; x=1706689180;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=58+NCikL/bQyJl0QckgCyYqs5+fQvIdlAVkDfEwnz6Q=;
        b=LAteiyYS36vbmIb6ajZTzjZUKX6VSTwrfyqzAbllC3YUBbME91Yg+g8YeCy8Vnly/J
         T+ueAmrWyYL0CLMuXQ850B7h/upYXiBeE1OKrT+agxmpfaOuN/2qAEM7WzAF22uKH5Fw
         Ivfe3u99n2f3CpIlMwb2jwwDuI33gzKN6/v0woAIvpdRdFDW9F8wbVE3jyL6fPIwjCP1
         nRXb7QD7egRFvLLPaCiIfQnIg/eJTg+bibSyXQvZU0q0XYWuGUMqYzA+abgtKmCQzx7m
         xXardnkRQ4VhI9Yg+8nt0Ldk7fdVMXLkwygsOkPl3JO2TQEf7p0V/Gya8kZrB5KnT958
         kszw==
X-Gm-Message-State: AOJu0YzIVMXc8p8VZYODWggVi3u0CAdns08vA0ZCFGfqTOP85GozISCV
	idlZGCCtmvzFG4xnGVxfDnNJzXSz6Qy3AVqeBGdNFJF8eWDgy/GwOT6CC93tqg==
X-Google-Smtp-Source: AGHT+IGjVjzhcgct+KVK1uT5HXAz901I0B9Ziif64Uhol1niDNB07qUss5SwfKlOicfmYDz+LE2eqw==
X-Received: by 2002:a2e:9c96:0:b0:2cd:ac43:b1e7 with SMTP id x22-20020a2e9c96000000b002cdac43b1e7mr569300lji.106.1706084380007;
        Wed, 24 Jan 2024 00:19:40 -0800 (PST)
Message-ID: <b8f47c93-43c4-4c61-a569-7d07e811c6ab@suse.com>
Date: Wed, 24 Jan 2024 09:19:35 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 30/34] xen/riscv: add minimal stuff to processor.h to
 build full Xen
Content-Language: en-US
To: Oleksii <oleksii.kurochko@gmail.com>
Cc: Alistair Francis <alistair.francis@wdc.com>,
 Bob Eshleman <bobbyeshleman@gmail.com>, Connor Davis
 <connojdavis@gmail.com>, Andrew Cooper <andrew.cooper3@citrix.com>,
 George Dunlap <george.dunlap@citrix.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>,
 xen-devel@lists.xenproject.org
References: <cover.1703255175.git.oleksii.kurochko@gmail.com>
 <5bd7c5db6638f09dabdc13a6e12f0b204eacb234.1703255175.git.oleksii.kurochko@gmail.com>
 <aa4d18c5-a8e0-44a6-ae7e-16fd9cd029b4@suse.com>
 <5f8291916b01a2b29a16bd1345fc20e3d4f29cab.camel@gmail.com>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <5f8291916b01a2b29a16bd1345fc20e3d4f29cab.camel@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 23.01.2024 18:08, Oleksii wrote:
> On Tue, 2024-01-23 at 12:39 +0100, Jan Beulich wrote:
>> On 22.12.2023 16:13, Oleksii Kurochko wrote:
>>> Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>
>>> ---
>>> Changes in V3:
>>>  - Update the commit message
>>
>> ??? (again)
> The same as with previous. asm/processor.h was changed to processor.h
> 
>>
>>> @@ -53,6 +56,18 @@ struct cpu_user_regs
>>>      unsigned long pregs;
>>>  };
>>>  
>>> +/* TODO: need to implement */
>>> +#define cpu_to_core(cpu)   (0)
>>> +#define cpu_to_socket(cpu) (0)
>>> +
>>> +static inline void cpu_relax(void)
>>> +{
>>> +    /* Encoding of the pause instruction */
>>> +    __asm__ __volatile__ ( ".insn 0x100000F" );
>>
>> binutils 2.40 knows "pause" - why use .insn then?
> I thought that for this instruction it is needed to have extension
> ZIHINTPAUSE ( according to Linux Kernel source code [1] ) and to cover
> older version.

Well, of course you'll need to enable the extension then for gas. But
as long as you use the insn unconditionally, that's all fine and
natural. Another thing would be if you meant to also run on systems
not supporting the extension: Then the above use of .insn would need
to become conditional anyway.

>>> +    barrier();
>>
>> Why?
> Just to be aligned with Linux kernel implemetation from where this
> function was taken.

Hmm, looking more closely we have an (open-coded) barrier even on x86.
So I suppose it's really wanted (to keep the compiler from moving
memory accesses around this construct), but then you may want to
consider using

    __asm__ __volatile__ ( "pause" ::: "memory" );

here. First and foremost because at least in the general case two
separate asm()s aren't the same as one combined one (volatile ones
are more restricted, but I'd always err on the safe side, even if
just to avoid giving bad examples which later on may be taken as a
basis for deriving other code).

Jan


From xen-devel-bounces@lists.xenproject.org Wed Jan 24 08:20:49 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 24 Jan 2024 08:20:49 +0000
Received: from list by lists.xenproject.org with outflank-mailman.670757.1043733 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSYV7-0003uQ-1F; Wed, 24 Jan 2024 08:20:49 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 670757.1043733; Wed, 24 Jan 2024 08:20:48 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSYV6-0003uJ-RT; Wed, 24 Jan 2024 08:20:48 +0000
Received: by outflank-mailman (input) for mailman id 670757;
 Wed, 24 Jan 2024 08:20:47 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=pABP=JC=bugseng.com=federico.serafini@srs-se1.protection.inumbo.net>)
 id 1rSYV5-0003uB-T8
 for xen-devel@lists.xenproject.org; Wed, 24 Jan 2024 08:20:47 +0000
Received: from support.bugseng.com (mail.bugseng.com [162.55.131.47])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 79597f0f-ba91-11ee-98f5-6d05b1d4d9a1;
 Wed, 24 Jan 2024 09:20:46 +0100 (CET)
Received: from [192.168.1.15] (host-87-16-84-78.retail.telecomitalia.it
 [87.16.84.78])
 by support.bugseng.com (Postfix) with ESMTPSA id A4CD44EE0746;
 Wed, 24 Jan 2024 09:20:45 +0100 (CET)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 79597f0f-ba91-11ee-98f5-6d05b1d4d9a1
Message-ID: <11660006-7651-4562-9e14-0d7b22788feb@bugseng.com>
Date: Wed, 24 Jan 2024 09:20:44 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [XEN PATCH 1/3] xen: introduce static_assert_unreachable()
To: Jan Beulich <jbeulich@suse.com>
Cc: consulting@bugseng.com, Andrew Cooper <andrew.cooper3@citrix.com>,
 George Dunlap <george.dunlap@citrix.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>,
 xen-devel@lists.xenproject.org
References: <cover.1705930767.git.federico.serafini@bugseng.com>
 <01c57c7e5131d699cf622be96fea7cd8e03c23f9.1705930767.git.federico.serafini@bugseng.com>
 <d4e5b1c0-bb44-4482-b86f-ff9f0947f338@suse.com>
Content-Language: en-US, it
From: Federico Serafini <federico.serafini@bugseng.com>
Organization: BUGSENG srl
In-Reply-To: <d4e5b1c0-bb44-4482-b86f-ff9f0947f338@suse.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

On 22/01/24 15:02, Jan Beulich wrote:
> On 22.01.2024 14:48, Federico Serafini wrote:
>> Introduce macro static_asser_unreachable() to check that a program
>> point is considered unreachable by the static analysis performed by the
>> compiler, even at optimization level -O0.
> 
> Is it really intended to limit use of this macro to cases where even
> at -O0 the compiler would eliminate respective code? Note that right
> now even debug builds are done with some optimization, and some of
> the DCE we're relying depends on that (iirc).

I'll remove this restriction.


> 
>> --- a/xen/include/xen/compiler.h
>> +++ b/xen/include/xen/compiler.h
>> @@ -64,6 +64,14 @@
>>   # define fallthrough        do {} while (0)  /* fallthrough */
>>   #endif
>>   
>> +/*
>> + * Add the following macro to check that a program point is considered
>> + * unreachable by the static analysis performed by the compiler,
>> + * even at optimization level -O0.
>> + */
>> +#define static_assert_unreachable() \
>> +    asm(".error \"unreachable program point reached\"");
> 
> Did you check the diagnostic that results when this check actually
> triggers? I expect it will be not really obvious from the message
> you introduce where the issue actually is. I expect we will want
> to use some of __FILE__ / __LINE__ / __FUNCTION__ to actually
> supply such context.

The assembler error comes with file and line information, for example:

./arch/x86/include/asm/uaccess.h: Assembler messages:
./arch/x86/include/asm/uaccess.h:377: Error: unreachable program point 
reached

At line 377 there is an use of get_unsafe_size() where I passed a wrong
size as argument. Is that clear enough?

What do you think about modifying the message as follows:
"unreachability static assert failed."


> 
> Also: Stray semicolon and (nit) missing blanks.

It is not clear to me where are the missing blanks.


> 
> Finally I wonder about case: We have ASSERT_UNREACHABLE() and it
> may be indicated to use all uppercase her as well.

Ok.


-- 
Federico Serafini, M.Sc.

Software Engineer, BUGSENG (http://bugseng.com)


From xen-devel-bounces@lists.xenproject.org Wed Jan 24 08:21:59 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 24 Jan 2024 08:21:59 +0000
Received: from list by lists.xenproject.org with outflank-mailman.670760.1043742 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSYWE-0004Ru-7B; Wed, 24 Jan 2024 08:21:58 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 670760.1043742; Wed, 24 Jan 2024 08:21:58 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSYWE-0004Rn-4e; Wed, 24 Jan 2024 08:21:58 +0000
Received: by outflank-mailman (input) for mailman id 670760;
 Wed, 24 Jan 2024 08:21:57 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=V3ap=JC=cloud.com=roger.pau@srs-se1.protection.inumbo.net>)
 id 1rSYWD-0004Rf-4a
 for xen-devel@lists.xenproject.org; Wed, 24 Jan 2024 08:21:57 +0000
Received: from mail-wm1-x32a.google.com (mail-wm1-x32a.google.com
 [2a00:1450:4864:20::32a])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id a2cd8e36-ba91-11ee-98f5-6d05b1d4d9a1;
 Wed, 24 Jan 2024 09:21:56 +0100 (CET)
Received: by mail-wm1-x32a.google.com with SMTP id
 5b1f17b1804b1-40ec6a251a6so2641775e9.0
 for <xen-devel@lists.xenproject.org>; Wed, 24 Jan 2024 00:21:56 -0800 (PST)
Received: from localhost ([213.195.118.74]) by smtp.gmail.com with ESMTPSA id
 w11-20020adfec4b000000b003392bfcf508sm9627681wrn.29.2024.01.24.00.21.55
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 24 Jan 2024 00:21:55 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: a2cd8e36-ba91-11ee-98f5-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1706084515; x=1706689315; darn=lists.xenproject.org;
        h=in-reply-to:content-disposition:mime-version:references:message-id
         :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to;
        bh=P4UmGzzVLHAGCOfMTNJuI1YfNA+8XwSE56/Ppn8LxxE=;
        b=VDFurrZJh+mr7KjGRi71Rdhwi9c5bu6ok33rCtgFacAN6UOt8+9n+/qKbOLzUMUDdh
         i9qJdanl+KeoSL2vJGkulK15cSjmSCgL043BtoZJAVWkFkeGYESI8X7M+k3BbnOwfliU
         t70aoj15uKmUdPlLR7R4EjYkauyvb4Po654bk=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706084515; x=1706689315;
        h=in-reply-to:content-disposition:mime-version:references:message-id
         :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to;
        bh=P4UmGzzVLHAGCOfMTNJuI1YfNA+8XwSE56/Ppn8LxxE=;
        b=aKfoAxggARSrKQLHPISaVa010qgVtr14aqpNEXt6ROdbtkzuQMzFwAtC4LdHOWBIX2
         yNmX6Rk8IYHH5PAMYG61ZDdc3tM/Q3XkHCf0FDG7z2ivuAwxKzjDSKuHDL0muWOAWufX
         am1GMkofQ3Ahaywa5eG0jhOCG0qYxwhnONPNC8FnmrNVwLGZsFPwXubD/kwc57+JtaQW
         e6vky3Zg2okowMpTlfSZvqScrlUOxsv530EXjkwGTaIwJtyYuyiHLyu07inps36zVH+x
         fM+tAAUIniZJo/V7vzE2XPDSkJi6/B8/qunSKkGMg6koyb3qrzcFxzSA8FLvOFnI9hCE
         Hzsg==
X-Gm-Message-State: AOJu0YyBMtoSakckERa7MCpHtsIDdIzyD1uc6eWBaQNiosGMt/ncxAyE
	KrByTKOCHvQT46nv+XQG8Tyf9x5PowWfD0porIkIj1Eg6ZkBkpCA8E/vUQlx0mc=
X-Google-Smtp-Source: AGHT+IF1jW4ruvN2OphiSjMPmdMSNeOBNbcqMnx6FqidFUGBbEBOTyrtj/evLQd+V5f0Q9Y5Lb/e+Q==
X-Received: by 2002:a05:600c:1c84:b0:40e:c048:42e4 with SMTP id k4-20020a05600c1c8400b0040ec04842e4mr850564wms.104.1706084515464;
        Wed, 24 Jan 2024 00:21:55 -0800 (PST)
Date: Wed, 24 Jan 2024 09:21:54 +0100
From: Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
To: Stewart Hildebrand <stewart.hildebrand@amd.com>
Cc: Jan Beulich <jbeulich@suse.com>,
	Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>, Wei Liu <wl@xen.org>,
	George Dunlap <george.dunlap@citrix.com>,
	Julien Grall <julien@xen.org>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Jun Nakajima <jun.nakajima@intel.com>,
	Kevin Tian <kevin.tian@intel.com>, Paul Durrant <paul@xen.org>,
	Volodymyr Babchuk <volodymyr_babchuk@epam.com>,
	xen-devel@lists.xenproject.org
Subject: Re: [PATCH v12.2 01/15] vpci: use per-domain PCI lock to protect
 vpci structure
Message-ID: <ZbDIoobsFmx-U5Xt@macbook>
References: <20240109215145.430207-1-stewart.hildebrand@amd.com>
 <20240109215145.430207-2-stewart.hildebrand@amd.com>
 <20240115194309.45683-1-stewart.hildebrand@amd.com>
 <7e936e6a-3218-4c4a-ac68-a58cd363a11d@suse.com>
 <e05e63ab-a86f-45c4-bd80-2b7d6b99aa3d@amd.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
In-Reply-To: <e05e63ab-a86f-45c4-bd80-2b7d6b99aa3d@amd.com>

On Wed, Jan 24, 2024 at 12:07:28AM -0500, Stewart Hildebrand wrote:
> On 1/23/24 09:29, Jan Beulich wrote:
> > On 15.01.2024 20:43, Stewart Hildebrand wrote:
> >> @@ -1043,11 +1043,11 @@ static int __pci_enable_msix(struct pci_dev *pdev, struct msi_info *msi,
> >>  {
> >>      struct msi_desc *old_desc;
> >>  
> >> -    ASSERT(pcidevs_locked());
> >> -
> >>      if ( !pdev || !pdev->msix )
> >>          return -ENODEV;
> >>  
> >> +    ASSERT(pcidevs_locked() || rw_is_locked(&pdev->domain->pci_lock));
> >> +
> >>      if ( msi->entry_nr >= pdev->msix->nr_entries )
> >>          return -EINVAL;
> > 
> > Further looking at this - is dereferencing pdev actually safe without holding
> > the global lock?

It is safe because either the global pcidevs lock or the per-domain
pci_lock will be held, which should prevent the device from being
removed.

> Are you referring to the new placement of the ASSERT, which opens up the possibility that pdev could be dereferenced and the function return before the ASSERT? If that is what you mean, I see your point. The ASSERT was placed there simply because we wanted to check that pdev != NULL first. See prior discussion at [1]. Hmm.. How about splitting the pdev-checking condition? E.g.:
> 
>     if ( !pdev )
>         return -ENODEV;
> 
>     ASSERT(pcidevs_locked() || rw_is_locked(&pdev->domain->pci_lock));
> 
>     if ( !pdev->msix )
>         return -ENODEV;

I'm not specially worried about the position of the assert, those are
just debug messages at the end.

One worry I have after further looking at the code, when called from
ns16550_init_postirq(), does the device have pdev->domain set?

That case would satisfy the first condition of the assert, so won't
attempt to dereference pdev->domain, but still would be good to ensure
consistency here wrt the state of pdev->domain.

Regards, Roger.


From xen-devel-bounces@lists.xenproject.org Wed Jan 24 08:23:26 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 24 Jan 2024 08:23:26 +0000
Received: from list by lists.xenproject.org with outflank-mailman.670764.1043752 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSYXc-0004zo-Gl; Wed, 24 Jan 2024 08:23:24 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 670764.1043752; Wed, 24 Jan 2024 08:23:24 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSYXc-0004zh-EB; Wed, 24 Jan 2024 08:23:24 +0000
Received: by outflank-mailman (input) for mailman id 670764;
 Wed, 24 Jan 2024 08:23:23 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=bgOV=JC=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rSYXb-0004zS-3X
 for xen-devel@lists.xenproject.org; Wed, 24 Jan 2024 08:23:23 +0000
Received: from mail-lj1-x22d.google.com (mail-lj1-x22d.google.com
 [2a00:1450:4864:20::22d])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id d592c1a7-ba91-11ee-9b0f-b553b5be7939;
 Wed, 24 Jan 2024 09:23:21 +0100 (CET)
Received: by mail-lj1-x22d.google.com with SMTP id
 38308e7fff4ca-2cf206e4d56so3357041fa.3
 for <xen-devel@lists.xenproject.org>; Wed, 24 Jan 2024 00:23:21 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 b17-20020a026f51000000b0046ebc973227sm3301326jae.147.2024.01.24.00.23.18
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 24 Jan 2024 00:23:20 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: d592c1a7-ba91-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1706084601; x=1706689401; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=kQWS33Fiea3Nb95RU7aDCCT7AN5Bju0X0QtjG/gLrkI=;
        b=cg6G+zgkqgfUuiH04HzsRbdZsvyvBlWN4icQhs3UnfwdN1j1C1PptvCgvFm+uy8otH
         fhbxbHcP3O9XTH5USp4eJ/odT3Ee6dPd1izJjYbA1vS+X7mRrdLpBBAVPuiFaCzhAR7l
         VdLH42uCkPsnvc4lW8W/Ed8U2ehZZQLXDU5igG6PSeyEXy1W7LfYv/pgs8n4JYlLEk3e
         1gS2P3PTNgmdqN/rpl8qBj26gSewROiO2oSAvyTfDEinKdbvjvXfZ4oqRX+naxIXaOBO
         06qaDifJQDQ3H1SeJXXC5BubmzSsdLw6mzxGj7upxKHlGvkejMrcbALeIRqNeLvPDrV9
         zuKA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706084601; x=1706689401;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=kQWS33Fiea3Nb95RU7aDCCT7AN5Bju0X0QtjG/gLrkI=;
        b=YY4exFbcuaLueQRx85NId8XpSHO4YVl4l64blGhRHa91nMiq00GMxq1/GbQYYyVu+m
         RFRMcoxi3RnBhHEHlwz/qvnsoP9gBuPYuRns/bVSAqFTcB9Fk2RfjQz2OQ/A5WDaQ127
         r0x6Pzc7p7UFVQYz17F8hUpQy5PejLsAPQiviob7ZYD/Y38mEmytbeGANpTG3RBWrhav
         hO+guZCTG59szIFX0KzgeB2mmZUKkN3jYXaQePhgLosuv+Y6pyxWi9ko8+230G+42LPM
         bwcSjH4HSU4wUXl0CbJcPZNsGOuBkIlyL60tkpAqwqyACvpNr0P9KfNgIdvbIlLcUbss
         rD2A==
X-Gm-Message-State: AOJu0Yw1wH+zBwR6egJFNDmeAIvct0pEpdRQ63TosV8omF7G6lpj8HGM
	RWKI80EWiv9exDYjCQ+omhQZnD2cD1qi4/vfBwtmQWotzyLPI8xA3c+o5oM26mmpDjiz5utHqeU
	=
X-Google-Smtp-Source: AGHT+IFEzP4wFIIJ/hILEMqS/7sBmRs1+eSkOv7e1HRdQDZaEhfTHrx/Y6qafHI92obxcE3L8qLFBA==
X-Received: by 2002:a2e:b889:0:b0:2cf:1c9c:a43b with SMTP id r9-20020a2eb889000000b002cf1c9ca43bmr438612ljp.18.1706084600782;
        Wed, 24 Jan 2024 00:23:20 -0800 (PST)
Message-ID: <bb1bcfe9-333f-4e7b-b4a8-3d376931985e@suse.com>
Date: Wed, 24 Jan 2024 09:23:17 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 31/34] xen/riscv: add minimal stuff to mm.h to build
 full Xen
Content-Language: en-US
To: Oleksii <oleksii.kurochko@gmail.com>
Cc: Alistair Francis <alistair.francis@wdc.com>,
 Bob Eshleman <bobbyeshleman@gmail.com>, Connor Davis
 <connojdavis@gmail.com>, Andrew Cooper <andrew.cooper3@citrix.com>,
 George Dunlap <george.dunlap@citrix.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>,
 xen-devel@lists.xenproject.org
References: <cover.1703255175.git.oleksii.kurochko@gmail.com>
 <4411f6af38586074b347cd6005f19f9c670faa74.1703255175.git.oleksii.kurochko@gmail.com>
 <d347c4d9-e93b-4937-8e33-e5fbbdcd6bfb@suse.com>
 <7ba286f9f1255cbf5c0957f0a0a92e5e18f2bc8d.camel@gmail.com>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <7ba286f9f1255cbf5c0957f0a0a92e5e18f2bc8d.camel@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 23.01.2024 18:27, Oleksii wrote:
> On Tue, 2024-01-23 at 14:03 +0100, Jan Beulich wrote:
>> On 22.12.2023 16:13, Oleksii Kurochko wrote:
>>> +#define _PGC_extra        PG_shift(10)
>>> +#define PGC_extra         PG_mask(1, 10)
>>> +
>>> +#define is_xen_heap_page(page) ((page)->count_info & PGC_xen_heap)
>>> +#define is_xen_heap_mfn(mfn) \
>>> +    (mfn_valid(mfn) && is_xen_heap_page(mfn_to_page(mfn)))
>>> +
>>> +#define is_xen_fixed_mfn(mfn)                                   \
>>> +    ((mfn_to_maddr(mfn) >= virt_to_maddr(&_start)) &&           \
>>> +     (mfn_to_maddr(mfn) <= virt_to_maddr((vaddr_t)_end - 1)))
>>
>> Why does _start need prefixing wuth & and _end prefixing with a cast?
>> First and foremost both want to be consistent. And then preferably
>> with as little extra clutter as possible.
> This is how it was defined in Arm. I think it both can be casted.
> I'll update that.

Judging from your present use of virt_to_maddr(&_start), I'd assume
you're fine without casts. And when casts aren't needed, they're
better avoided.

Jan


From xen-devel-bounces@lists.xenproject.org Wed Jan 24 08:23:59 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 24 Jan 2024 08:23:59 +0000
Received: from list by lists.xenproject.org with outflank-mailman.670766.1043761 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSYY3-0005V1-OC; Wed, 24 Jan 2024 08:23:51 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 670766.1043761; Wed, 24 Jan 2024 08:23:51 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSYY3-0005Uu-LI; Wed, 24 Jan 2024 08:23:51 +0000
Received: by outflank-mailman (input) for mailman id 670766;
 Wed, 24 Jan 2024 08:23:50 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=V3ap=JC=cloud.com=roger.pau@srs-se1.protection.inumbo.net>)
 id 1rSYY2-0004zS-3C
 for xen-devel@lists.xenproject.org; Wed, 24 Jan 2024 08:23:50 +0000
Received: from mail-wm1-x32e.google.com (mail-wm1-x32e.google.com
 [2a00:1450:4864:20::32e])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id e5cd737d-ba91-11ee-9b0f-b553b5be7939;
 Wed, 24 Jan 2024 09:23:48 +0100 (CET)
Received: by mail-wm1-x32e.google.com with SMTP id
 5b1f17b1804b1-40e60e137aaso56909045e9.0
 for <xen-devel@lists.xenproject.org>; Wed, 24 Jan 2024 00:23:48 -0800 (PST)
Received: from localhost ([213.195.118.74]) by smtp.gmail.com with ESMTPSA id
 q4-20020adfab04000000b00337d603fd01sm15139816wrc.66.2024.01.24.00.23.47
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 24 Jan 2024 00:23:47 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: e5cd737d-ba91-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1706084628; x=1706689428; darn=lists.xenproject.org;
        h=in-reply-to:content-transfer-encoding:content-disposition
         :mime-version:references:message-id:subject:cc:to:from:date:from:to
         :cc:subject:date:message-id:reply-to;
        bh=sMTmGFnBSW53su+bP0T0HtTbdX+NNUS1jw36GND5eYk=;
        b=wLN1NPDoaKzA5rdsS+V2YHEMkQ9CV2YFsRTjbDKkTZwvDZpGjeRdpUjVUhTmd6gwol
         kC1o7UuvrVu0VtDs6clQuumTG4422CH7xy2iz3IVtvndgHfZoUV4COMAlr6TGrCU3QzL
         Trw/NRDVW/COP11x/I/C7K7VDpTsDGscdJp+8=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706084628; x=1706689428;
        h=in-reply-to:content-transfer-encoding:content-disposition
         :mime-version:references:message-id:subject:cc:to:from:date
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=sMTmGFnBSW53su+bP0T0HtTbdX+NNUS1jw36GND5eYk=;
        b=RU9W2Bfxno/aHk3/GcxRvy169UOSjNHDbzJBAgPVMXllhqHgBtbrrHQOYxBvBEi8Ai
         4LuLFEw3m2ExNv8zs0nzgquF422OrLu5RbOqoIp3Zsq7bRatpRodDUb1fGpX71PEfZ53
         GK1CynDUr/oYSTcEkInIlRaD1sUkOLgXmvCpD9ByowyU4tHtMcHQyNXonJGrxchrqtCp
         OG1W3RauMCx4NH9Ef7YFjh5L5tIpOBWhW3wky/NYCh5EwkbGK8QwBYmNpqz0ptMb1xTS
         jTJn3uURMnBGJZ88isYizcsEzHb6Gyd3kgkDtEEY0BO+8FJfY9X1df4hvh96gHOF9z1e
         8qIA==
X-Gm-Message-State: AOJu0YzyBr+fzR/SOQwnftYX2kabGAjOc6z81WWBnoxx+wBha2lUn9yh
	vPBGnRm2VfZmYxFdjquC4OwnmzZhHAMJLpYwACy5sKuIOFanQNeUV60jGyEtomWCD4ITlRTBnrE
	R
X-Google-Smtp-Source: AGHT+IG63QNj63g37SiP7EfxFvXpxHw5WerdYpBTDDcJ3BVjaJ9muCu1C+pPSHomHhDb5sXcNMKjWg==
X-Received: by 2002:a05:600c:3b04:b0:40e:bfba:5c0d with SMTP id m4-20020a05600c3b0400b0040ebfba5c0dmr1165714wms.171.1706084627943;
        Wed, 24 Jan 2024 00:23:47 -0800 (PST)
Date: Wed, 24 Jan 2024 09:23:47 +0100
From: Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
To: Patrick Plenefisch <simonpatp@gmail.com>
Cc: Jan Beulich <jbeulich@suse.com>, xen-devel@lists.xenproject.org,
	Juergen Gross <jgross@suse.com>, Huang Rui <ray.huang@amd.com>,
	Jiqian Chen <Jiqian.Chen@amd.com>
Subject: Re: ACPI VFCT table too short on PVH dom0 (was: Re: E820 memory
 allocation issue on Threadripper platforms)
Message-ID: <ZbDJE-tMhnQoXkPK@macbook>
References: <fa23a590-5869-4e11-8998-1d03742c5919@suse.com>
 <CAOCpoWf4CMkCWx8uR2NbFrZrKSS78wj1-hFsAUqsjCfsmqooVA@mail.gmail.com>
 <Zajg1O7Z52VTBq31@macbook>
 <CAOCpoWeO9h7b_CjJb9jtKaEUVv_=XDSVkr55QSg3ArFc4n8G2w@mail.gmail.com>
 <ZajzcpArQYQhdj3T@macbook>
 <ZakcdfS3UwEb0oh2@macbook>
 <CAOCpoWdL3YnpitZxEoFgdvtZ6juy8oykYj6fX_tv4QLvj2Fv0g@mail.gmail.com>
 <ZapXoOKdhWgJFxbF@macbook>
 <CAOCpoWccvC91FiJr_MpVxXYqOfZxAn6bKkr6vQG+6p4WbxT03A@mail.gmail.com>
 <CAOCpoWf0pfp72=X9iqziP+uVkLwB0HRp3gvQhPOsHWEtFzZgVA@mail.gmail.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <CAOCpoWf0pfp72=X9iqziP+uVkLwB0HRp3gvQhPOsHWEtFzZgVA@mail.gmail.com>

On Tue, Jan 23, 2024 at 08:27:18PM -0500, Patrick Plenefisch wrote:
> On Sat, Jan 20, 2024 at 8:33 PM Patrick Plenefisch <simonpatp@gmail.com>
> wrote:
> 
> >
> >
> > On Fri, Jan 19, 2024 at 6:06 AM Roger Pau Monné <roger.pau@citrix.com>
> > wrote:
> >
> >> On Fri, Jan 19, 2024 at 02:44:35AM -0500, Patrick Plenefisch wrote:
> >> > On Thu, Jan 18, 2024 at 7:41 AM Roger Pau Monné <roger.pau@citrix.com>
> >> > wrote:
> >> >
> >> > >
> >> > > From that environment (PVH dom0) can you see if you can dump the
> >> > > contents of the VFCT table?  I don't have a system with that table, so
> >> > > not sure if this will work (because iasl is unlikely to know how to
> >> > > decode it):
> >> > >
> >> > > # acpidump -n VFCT -o table.dump
> >> > > # acpixtract -a table.dump
> >> > > # iasl -d vfct.dat
> >> > > # cat vfct.dsl
> >> > >
> >> > > Would be good if you can compare the output from what you get on a PV
> >> > > dom0 or when running native Linux.
> >> > >
> >> > > I'm also adding some AMD folks, as IIRC they did some fixes to Linux
> >> > > in order to get some AMD graphics cards running on a PVH dom0, maybe
> >> > > they can provide some additional input.
> >> > >
> >> > >
> >> > Well, this is pretty weird. I'll go into more details because it may be
> >> > relevant.
> >>
> >> Wow, you have certainly gone out of the beaten path here.
> >>
> >
> > Yeah, I wasn't expecting this many issues for being an early adopter of
> > Threaderipper 7000!
> >
> >
> >>
> >> > I had been working with ASRock support ever since I got my brand
> >> > new motherboard because I couldn't see the BIOS/UEFI screens. I could
> >> boot
> >> > up, and once native linux took control amdgpu got the screens/gpu
> >> working
> >> > fine. I finally managed to be able to see the UEFI/BIOS setup screens by
> >> > patching my VBIOS: I extracted the VBIOS image of a cheap R5 430 OEM,
> >> ran
> >> > GOPupd to update the VBIOS UEFI component (GOP) from version 1.60 to
> >> 1.67.
> >> > That allowed the UEFI to actually initialize and use a screen. However,
> >> I
> >> > later realized that only 1 monitor was lighting up in the bios: my
> >> monitor
> >> > plugged into the Radeon RX 480 that was still on VBIOS GOP 1.60. It
> >> appears
> >> > the GOP was initializing the RX 480 too, despite not being flashed with
> >> the
> >> > latest itself. I am working on an email to asrock support about that.
> >> Once
> >> > I get into linux (native or PV), both monitors light up as expected.
> >> Also,
> >> > If I boot linux PVH from grub, they also work.
> >>
> >> OK, that's good, so that would be UEFI -> grub -> Xen -> Linux PVH?
> >>
> >
> > Correct. Inserting grub into the chain "fixes" the acpi tables and things
> > work correctly.
> >
> 
> Ok, I am not sure what I did the other day to get it to work, but I can't
> replicate *any* PVH success today. One driver (radeon or amdgpu) always
> complains the VFCT table is wrong, and leads to the symptoms previously
> reported.

Are you sure you are using Xen 4.18?  Some of the Xen logs you
provided did use Xen 4.17, which doesn't have the VFCT fix.

Can you please provide the `xl dmesg` for the non-working case when
using grub2?

Thanks, Roger.


From xen-devel-bounces@lists.xenproject.org Wed Jan 24 08:30:57 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 24 Jan 2024 08:30:57 +0000
Received: from list by lists.xenproject.org with outflank-mailman.670780.1043772 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSYeo-0007wS-JE; Wed, 24 Jan 2024 08:30:50 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 670780.1043772; Wed, 24 Jan 2024 08:30:50 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSYeo-0007wL-Fo; Wed, 24 Jan 2024 08:30:50 +0000
Received: by outflank-mailman (input) for mailman id 670780;
 Wed, 24 Jan 2024 08:30:48 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rSYem-0007w7-J2; Wed, 24 Jan 2024 08:30:48 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rSYem-0007ep-Fn; Wed, 24 Jan 2024 08:30:48 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rSYem-0000uC-2k; Wed, 24 Jan 2024 08:30:48 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rSYem-0001xz-27; Wed, 24 Jan 2024 08:30:48 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=ydGoj7HZGi0HaUEKFcJIwoFHt5gNhApanryfR4ey6YE=; b=CsjRYz8tjzUvbX4hea3q4Sim1A
	PsHG192X5+VYFe9EaHDDBu1VrlLLgv6Lud2/ucPs4vIh4l6LQIA9nTcSy5mULdAuchRu2+Q0QlBHX
	FhDWFiqZ/ZMAYQIFvecAA8PEPxBgcyo50ojXcEihm3z890EOr5FqcZ/1WRvCAzOr4Iw8=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184446-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [ovmf test] 184446: all pass - PUSHED
X-Osstest-Versions-This:
    ovmf=d24187a81f724fc2af4f739ad92a9b158c9254df
X-Osstest-Versions-That:
    ovmf=1063665fa5466ece0814a3e764ee3382656956a1
From: osstest service owner <osstest-admin@xenproject.org>
Date: Wed, 24 Jan 2024 08:30:48 +0000

flight 184446 ovmf real [real]
http://logs.test-lab.xenproject.org/osstest/logs/184446/

Perfect :-)
All tests in this flight passed as required
version targeted for testing:
 ovmf                 d24187a81f724fc2af4f739ad92a9b158c9254df
baseline version:
 ovmf                 1063665fa5466ece0814a3e764ee3382656956a1

Last test of basis   184444  2024-01-24 01:58:35 Z    0 days
Testing same since   184446  2024-01-24 06:41:04 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Jeff Brasen <jbrasen@nvidia.com>

jobs:
 build-amd64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-amd64-amd64-xl-qemuu-ovmf-amd64                         pass    
 test-amd64-i386-xl-qemuu-ovmf-amd64                          pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Pushing revision :

To xenbits.xen.org:/home/xen/git/osstest/ovmf.git
   1063665fa5..d24187a81f  d24187a81f724fc2af4f739ad92a9b158c9254df -> xen-tested-master


From xen-devel-bounces@lists.xenproject.org Wed Jan 24 08:34:00 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 24 Jan 2024 08:34:00 +0000
Received: from list by lists.xenproject.org with outflank-mailman.670786.1043782 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSYhr-0008WG-20; Wed, 24 Jan 2024 08:33:59 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 670786.1043782; Wed, 24 Jan 2024 08:33:59 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSYhq-0008W9-Up; Wed, 24 Jan 2024 08:33:58 +0000
Received: by outflank-mailman (input) for mailman id 670786;
 Wed, 24 Jan 2024 08:33:57 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=bgOV=JC=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rSYhp-0008W3-H9
 for xen-devel@lists.xenproject.org; Wed, 24 Jan 2024 08:33:57 +0000
Received: from mail-lj1-x22e.google.com (mail-lj1-x22e.google.com
 [2a00:1450:4864:20::22e])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 4f919803-ba93-11ee-9b0f-b553b5be7939;
 Wed, 24 Jan 2024 09:33:55 +0100 (CET)
Received: by mail-lj1-x22e.google.com with SMTP id
 38308e7fff4ca-2cf0390eddbso30421131fa.3
 for <xen-devel@lists.xenproject.org>; Wed, 24 Jan 2024 00:33:55 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 r12-20020a02c84c000000b0046eda09d55esm2032632jao.179.2024.01.24.00.33.53
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 24 Jan 2024 00:33:54 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 4f919803-ba93-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1706085235; x=1706690035; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=I4itC0/tZEuJvr9+EnBUlbZyPDZ+08fGFmkYm3tJ3z8=;
        b=C0v4+eWbXhkovKR/EeDh4HKA0bNWOqIzOJAtTbdpM9y4nZw3WUtxWcJad5AQk3pqJo
         iJoOtzZOJb4EIu1H9bWTw8wna3Zg5pVFaUdYGdu5CUy0c/K7IuTApJuKyd8L27Gd+GwL
         0tLLAVBrXz600/9j576FI5wqHHy7yiz66SPtnUxA8TP+as1fAni9j12ILt42x+0hppbn
         MX8XQRTP6F3C/xmuM9/orBB5K4FB9JYtV2NK4Uwg0brPqFIHqYD+iCLdcDDCVuCrYlC/
         0tkBZfixJrQcOUN8N8DgOvLb8q1DRQuYkxl5RTbeoNP6fKAv+kC4gObWHrPdjcGUxiq2
         NfaQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706085235; x=1706690035;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=I4itC0/tZEuJvr9+EnBUlbZyPDZ+08fGFmkYm3tJ3z8=;
        b=PVLRnV7i+KiskRdt/RqQtI1qQMucxKcUYwhqYQtWLL/ob+uty81t6fhTPZk1f0uhz/
         MzAyBBWURRnPXX/ifXu3Gps5ZFhCJ8xiO2OsMe2ke4w/D/4OeHegtkQWCf0+hcT9eiFH
         /R/eFQLuc9Hund628Hz5gF6LVjyM4i9j1skClwJBpMUxYby7R2x8SIr+hPN1TxQkZzKC
         Xfx+t+QiLG2/ewsxfo3FA7rcY5HW6xrm9yXVsht/0Jtls4m56VUdifb4D72OQyWWAEEI
         RBc464rBsJFby0mY27GDbeM6IlTyxOsuCY1yX/C5Z2w2cuIcO1FLjWvZQ5CVOLB9zheS
         BVbg==
X-Gm-Message-State: AOJu0Yx+LntSMHn5Sn8OUjCfhWnsGwZEgtIIK9gpwzL/qJ2NcdDmz+oE
	aHylOATITS6jng7G4GTnXtOOgnUHHwEUbkxZPlLqIsZk87rHbW9PwXA35CaGSg==
X-Google-Smtp-Source: AGHT+IH105wsbQyuHQgtSWwCTXuy/ooq90Uks6Q92kak+9YmSpmUKZ6rqVA7fqY0hVVTYRvVMz/+1Q==
X-Received: by 2002:a2e:a784:0:b0:2cd:e935:ea02 with SMTP id c4-20020a2ea784000000b002cde935ea02mr766937ljf.20.1706085234901;
        Wed, 24 Jan 2024 00:33:54 -0800 (PST)
Message-ID: <652d50ad-33a4-42cd-bf88-e06cc53ffd7f@suse.com>
Date: Wed, 24 Jan 2024 09:33:51 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [XEN PATCH 1/3] xen: introduce static_assert_unreachable()
Content-Language: en-US
To: Federico Serafini <federico.serafini@bugseng.com>
Cc: consulting@bugseng.com, Andrew Cooper <andrew.cooper3@citrix.com>,
 George Dunlap <george.dunlap@citrix.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>,
 xen-devel@lists.xenproject.org
References: <cover.1705930767.git.federico.serafini@bugseng.com>
 <01c57c7e5131d699cf622be96fea7cd8e03c23f9.1705930767.git.federico.serafini@bugseng.com>
 <d4e5b1c0-bb44-4482-b86f-ff9f0947f338@suse.com>
 <11660006-7651-4562-9e14-0d7b22788feb@bugseng.com>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <11660006-7651-4562-9e14-0d7b22788feb@bugseng.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 24.01.2024 09:20, Federico Serafini wrote:
> On 22/01/24 15:02, Jan Beulich wrote:
>> On 22.01.2024 14:48, Federico Serafini wrote:
>>> --- a/xen/include/xen/compiler.h
>>> +++ b/xen/include/xen/compiler.h
>>> @@ -64,6 +64,14 @@
>>>   # define fallthrough        do {} while (0)  /* fallthrough */
>>>   #endif
>>>   
>>> +/*
>>> + * Add the following macro to check that a program point is considered
>>> + * unreachable by the static analysis performed by the compiler,
>>> + * even at optimization level -O0.
>>> + */
>>> +#define static_assert_unreachable() \
>>> +    asm(".error \"unreachable program point reached\"");
>>
>> Did you check the diagnostic that results when this check actually
>> triggers? I expect it will be not really obvious from the message
>> you introduce where the issue actually is. I expect we will want
>> to use some of __FILE__ / __LINE__ / __FUNCTION__ to actually
>> supply such context.
> 
> The assembler error comes with file and line information, for example:
> 
> ./arch/x86/include/asm/uaccess.h: Assembler messages:
> ./arch/x86/include/asm/uaccess.h:377: Error: unreachable program point 
> reached
> 
> At line 377 there is an use of get_unsafe_size() where I passed a wrong
> size as argument. Is that clear enough?

Hmm, yes, looks like it might be sufficient. Mentioning __FUNCTION__ may
still add value, though. But I see now that __FILE__ / __LINE__ are
already covered for.

> What do you think about modifying the message as follows:
> "unreachability static assert failed."

I'm okay-ish with the original text, and I like it slightly better than
this new suggestion. If we want "static assert" in the output, then maybe
"static assertion failed: unreachable".

>> Also: Stray semicolon and (nit) missing blanks.
> 
> It is not clear to me where are the missing blanks.

Just like for other keywords:

    asm ( ".error \"unreachable program point reached\"" )

Jan


From xen-devel-bounces@lists.xenproject.org Wed Jan 24 08:45:13 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 24 Jan 2024 08:45:13 +0000
Received: from list by lists.xenproject.org with outflank-mailman.670792.1043792 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSYsc-0002VZ-WF; Wed, 24 Jan 2024 08:45:07 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 670792.1043792; Wed, 24 Jan 2024 08:45:06 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSYsc-0002VS-TU; Wed, 24 Jan 2024 08:45:06 +0000
Received: by outflank-mailman (input) for mailman id 670792;
 Wed, 24 Jan 2024 08:45:06 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=V3ap=JC=cloud.com=roger.pau@srs-se1.protection.inumbo.net>)
 id 1rSYsc-0002VL-AB
 for xen-devel@lists.xenproject.org; Wed, 24 Jan 2024 08:45:06 +0000
Received: from mail-wm1-x32e.google.com (mail-wm1-x32e.google.com
 [2a00:1450:4864:20::32e])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id de3a5d49-ba94-11ee-9b0f-b553b5be7939;
 Wed, 24 Jan 2024 09:45:04 +0100 (CET)
Received: by mail-wm1-x32e.google.com with SMTP id
 5b1f17b1804b1-40eb95bd2c6so19979085e9.0
 for <xen-devel@lists.xenproject.org>; Wed, 24 Jan 2024 00:45:04 -0800 (PST)
Received: from localhost ([213.195.118.74]) by smtp.gmail.com with ESMTPSA id
 n31-20020a05600c501f00b0040ec7042dfesm743486wmr.21.2024.01.24.00.45.02
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 24 Jan 2024 00:45:02 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: de3a5d49-ba94-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1706085903; x=1706690703; darn=lists.xenproject.org;
        h=content-transfer-encoding:mime-version:message-id:date:subject:cc
         :to:from:from:to:cc:subject:date:message-id:reply-to;
        bh=NLVMdBI3mGflXerzkzoRarMcDIqfvyEmvvtXMWjRZ8c=;
        b=cfwysfVYk8SBuLn5eXsdsRqOUPCYzTUp8BunmwwEbCdo4atfoLdm3egvyZX8SraS3J
         MISLZ1fMxRuNy2JyPPz1FXEB7yZfX+CekNaSZUiCAAJ94mmEGF7rS0TdzNWYsWwSoCMQ
         XkvAuRkyFomtlFPwba1s4zW3e9L2Ojlb8UzoQ=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706085903; x=1706690703;
        h=content-transfer-encoding:mime-version:message-id:date:subject:cc
         :to:from:x-gm-message-state:from:to:cc:subject:date:message-id
         :reply-to;
        bh=NLVMdBI3mGflXerzkzoRarMcDIqfvyEmvvtXMWjRZ8c=;
        b=Nhkxun/ytgrv9fP08IRPuTM4yVx4fwkBh5feEptx2XewZgEotodjCS6UD4RZGSmEI7
         DMUpNYmqJ1kXG7/FCN+Ff8bvVjr94MsHJxb48ZYk7FsSXdTW+dVWgv72wlIrrqFtLO+5
         oTb3N+Ar3HY0Q+35p+hMbixLp5Yg64UYjA+n/g/hKs2TNY2C+sjtK1IoaO+gLi5nbj8h
         w1krazu1qstb1c6BEGl2OF4R8yXHIAGgrQeIR5sZ/fby7k9NqZ0NH3jy3quJ1SzLSdLH
         sqReRM09EgovSydYTzN/0SmUocvCHPjkDZ9OyTkGwIgzQ3XYHf9aDbzci4eNCGlq6Ghx
         urVw==
X-Gm-Message-State: AOJu0YwTzwReh5bPVk1gg8jR21EvC9p84z9pzY+L7+Ozy+sVQU+eYe40
	J9vEYnXPhi7saDkFxh2RN5mE98748DtjWyYcaJ4iRFnoLCQsvSAUxlC/g6Cy+niMwedlNcURkIr
	V
X-Google-Smtp-Source: AGHT+IGg027fIPFKDB5PfP5DlsF2BuDnVpL9oPFkkFTG/cOFzDYC8eW/2CRXOE+evOmG7DQHjSGR/A==
X-Received: by 2002:a05:600c:5398:b0:40e:4afe:12eb with SMTP id hg24-20020a05600c539800b0040e4afe12ebmr914113wmb.188.1706085903023;
        Wed, 24 Jan 2024 00:45:03 -0800 (PST)
From: Roger Pau Monne <roger.pau@citrix.com>
To: xen-devel@lists.xenproject.org
Cc: Roger Pau Monne <roger.pau@citrix.com>,
	Jan Beulich <jbeulich@suse.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	George Dunlap <george.dunlap@citrix.com>,
	Wei Liu <wl@xen.org>
Subject: [PATCH] x86/p2m-pt: fix off by one in entry check assert
Date: Wed, 24 Jan 2024 09:37:42 +0100
Message-ID: <20240124083742.24324-1-roger.pau@citrix.com>
X-Mailer: git-send-email 2.43.0
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

The MMIO RO rangeset overlap check is bogus: the rangeset is inclusive so the
passed end mfn should be the last mfn to be mapped (not last + 1).

Fixes: 6fa1755644d0 ('amd/npt/shadow: replace assert that prevents creating 2M/1G MMIO entries')
Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
---
 xen/arch/x86/mm/p2m-pt.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/xen/arch/x86/mm/p2m-pt.c b/xen/arch/x86/mm/p2m-pt.c
index 640a11f5647f..348130d0dd3b 100644
--- a/xen/arch/x86/mm/p2m-pt.c
+++ b/xen/arch/x86/mm/p2m-pt.c
@@ -552,7 +552,7 @@ static void check_entry(mfn_t mfn, p2m_type_t new, p2m_type_t old,
     if ( new == p2m_mmio_direct )
         ASSERT(!mfn_eq(mfn, INVALID_MFN) &&
                !rangeset_overlaps_range(mmio_ro_ranges, mfn_x(mfn),
-                                        mfn_x(mfn) + (1UL << order)));
+                                        mfn_x(mfn) + (1UL << order) - 1));
     else if ( p2m_allows_invalid_mfn(new) || new == p2m_invalid ||
               new == p2m_mmio_dm )
         ASSERT(mfn_valid(mfn) || mfn_eq(mfn, INVALID_MFN));
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Wed Jan 24 08:48:45 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 24 Jan 2024 08:48:45 +0000
Received: from list by lists.xenproject.org with outflank-mailman.670797.1043802 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSYw8-0003WC-FX; Wed, 24 Jan 2024 08:48:44 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 670797.1043802; Wed, 24 Jan 2024 08:48:44 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSYw8-0003W5-BU; Wed, 24 Jan 2024 08:48:44 +0000
Received: by outflank-mailman (input) for mailman id 670797;
 Wed, 24 Jan 2024 08:48:43 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=bgOV=JC=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rSYw7-0003Vz-33
 for xen-devel@lists.xenproject.org; Wed, 24 Jan 2024 08:48:43 +0000
Received: from mail-lj1-x231.google.com (mail-lj1-x231.google.com
 [2a00:1450:4864:20::231])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 5f7b8406-ba95-11ee-9b0f-b553b5be7939;
 Wed, 24 Jan 2024 09:48:41 +0100 (CET)
Received: by mail-lj1-x231.google.com with SMTP id
 38308e7fff4ca-2cf2a381b86so1797751fa.0
 for <xen-devel@lists.xenproject.org>; Wed, 24 Jan 2024 00:48:41 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 r6-20020a056638044600b0046ea43e4d0csm317612jap.168.2024.01.24.00.48.37
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 24 Jan 2024 00:48:40 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 5f7b8406-ba95-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1706086120; x=1706690920; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=Vma3ZstLlvtgIcV3IBZ8UWRQOuJC04zV0bqwgc+mfgk=;
        b=e5tj/5CGiNI1avgluGg/wVbNvjV9ajTWsCgHEveyDznD9x/hCk39b2lJiAJ+lV8hEn
         5sazC00ibqqs/uLGQrMjAq73deZUwfAR80pTFRcoV/cDUofeEmQd5nSBGAYoM4bTdDby
         EUSXyE7t+782gRR/dug54shFhHJvAoRkYOygP6R5pahFPZOJXtbLSAAZp+gGhKdS815Z
         6ZIKc87s3HrAoq885z5USFV9DiZKcx1LIXrgJBDPwnhuKiEF8OkjWPM/w3AwLgPUia+A
         HkfDG+9s/cC+H73UllIm4fLes/Z843J+Swv3JZl1xJjY8tddUXB/UDWVbacB/ufcVCBY
         8Ahg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706086120; x=1706690920;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=Vma3ZstLlvtgIcV3IBZ8UWRQOuJC04zV0bqwgc+mfgk=;
        b=srbUr5/mzEOAaBK5kNp+9tYgHczGmJc+7unR4rUY3jEcgSVpkNjNP/2Tc3PuLC49O5
         xMn9zwuupqLj0MYMzEP3pbgvoMa/uWNlwsq8X59fw4F/pOnEI/NyT9ZNFx2oDQR7cYG8
         jXVv3O2kSbPgpEMycmuF1skBhZ9v4WsA2H5LSsThgD/4uzZv/xcsn65F4sG602zjedAB
         /Qulyimh9umqOWmWTQPMPe+kQiiQoOPegHfsUuKClAXUAwtGIrFOp21eXGUhdpunRQuy
         ibkXStKDnWec93tJp3lVp6CuAxsGoK9ItK3UWbCBg8aMOUaPXNvsO58M09Akax5s90Ol
         QZHQ==
X-Gm-Message-State: AOJu0YyRNJbZfthAwQrxXlebP4hoz+TI/R0aR/whk9NrANeNPj+zAFoN
	WqnPbwm5cT49CPBYZAAu9nuCRgLnf9uEnT8eNV76JI9QbefZ6jDhWuC7ZRbsPA==
X-Google-Smtp-Source: AGHT+IFH9ezyHCKvewPgv3wEjtntSZmXZQDE/aU9FBIv8fMP1SF7TXNWGys1VtJl3f3ALo0K/MxsGQ==
X-Received: by 2002:a2e:910d:0:b0:2ce:5520:8b9f with SMTP id m13-20020a2e910d000000b002ce55208b9fmr570962ljg.92.1706086120562;
        Wed, 24 Jan 2024 00:48:40 -0800 (PST)
Message-ID: <ae7a57f2-2433-4b75-ab45-c8be55d489c9@suse.com>
Date: Wed, 24 Jan 2024 09:48:35 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v12.2 01/15] vpci: use per-domain PCI lock to protect vpci
 structure
Content-Language: en-US
To: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
Cc: Stewart Hildebrand <stewart.hildebrand@amd.com>,
 Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>,
 Andrew Cooper <andrew.cooper3@citrix.com>, Wei Liu <wl@xen.org>,
 George Dunlap <george.dunlap@citrix.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>,
 Jun Nakajima <jun.nakajima@intel.com>, Kevin Tian <kevin.tian@intel.com>,
 Paul Durrant <paul@xen.org>, Volodymyr Babchuk <volodymyr_babchuk@epam.com>,
 xen-devel@lists.xenproject.org
References: <20240109215145.430207-1-stewart.hildebrand@amd.com>
 <20240109215145.430207-2-stewart.hildebrand@amd.com>
 <20240115194309.45683-1-stewart.hildebrand@amd.com>
 <715e40c9-1776-4677-9565-dac1565a2aa8@suse.com> <Za_WGzS14Eqt8yZF@macbook>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <Za_WGzS14Eqt8yZF@macbook>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 23.01.2024 16:07, Roger Pau Monné wrote:
> On Tue, Jan 23, 2024 at 03:32:12PM +0100, Jan Beulich wrote:
>> On 15.01.2024 20:43, Stewart Hildebrand wrote:
>>> @@ -2888,6 +2888,8 @@ int allocate_and_map_msi_pirq(struct domain *d, int index, int *pirq_p,
>>>  {
>>>      int irq, pirq, ret;
>>>  
>>> +    ASSERT(pcidevs_locked() || rw_is_locked(&d->pci_lock));
>>
>> If either lock is sufficient to hold here, ...
>>
>>> --- a/xen/arch/x86/physdev.c
>>> +++ b/xen/arch/x86/physdev.c
>>> @@ -123,7 +123,9 @@ int physdev_map_pirq(domid_t domid, int type, int *index, int *pirq_p,
>>>  
>>>      case MAP_PIRQ_TYPE_MSI:
>>>      case MAP_PIRQ_TYPE_MULTI_MSI:
>>> +        pcidevs_lock();
>>>          ret = allocate_and_map_msi_pirq(d, *index, pirq_p, type, msi);
>>> +        pcidevs_unlock();
>>>          break;
>>
> 
> IIRC (Stewart can further comment) this is done holding the pcidevs
> lock to keep the path unmodified, as there's no need to hold the
> per-domain rwlock.

Yet why would we prefer to acquire a global lock when a per-domain one
suffices?

Jan


From xen-devel-bounces@lists.xenproject.org Wed Jan 24 08:49:46 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 24 Jan 2024 08:49:46 +0000
Received: from list by lists.xenproject.org with outflank-mailman.670800.1043812 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSYx7-0004J7-Oa; Wed, 24 Jan 2024 08:49:45 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 670800.1043812; Wed, 24 Jan 2024 08:49:45 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSYx7-0004J0-Ks; Wed, 24 Jan 2024 08:49:45 +0000
Received: by outflank-mailman (input) for mailman id 670800;
 Wed, 24 Jan 2024 08:49:44 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rSYx6-0004Iq-Kf; Wed, 24 Jan 2024 08:49:44 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rSYx6-0007yi-Cg; Wed, 24 Jan 2024 08:49:44 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rSYx6-0001Jv-0d; Wed, 24 Jan 2024 08:49:44 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rSYx6-0006V4-0B; Wed, 24 Jan 2024 08:49:44 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=5wiveUDLZB6KfBEH/cjWLl9MMbcIfo2tv24pIz0n2rI=; b=eiFP3GDxFP7Jo2BT/hVXLtZcba
	OtK7C7eV7snO106eO6WnU1h2XsyJLcQtGR+HGTFTGTMtCR/vhl2pPnojabZfy7PAalH8EGjax7i0C
	Ez2qnW1V/pZ2LzM0BOF+2rrzgnfGq7DXmZjnyzwAZmqUSs6vAK5+qS3lqQ/MChNM28Fk=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184434-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [xen-unstable test] 184434: tolerable FAIL - PUSHED
X-Osstest-Failures:
    xen-unstable:test-amd64-amd64-xl-qemut-debianhvm-i386-xsm:debian-hvm-install:fail:heisenbug
    xen-unstable:test-amd64-amd64-libvirt-vhd:guest-start/debian.repeat:fail:heisenbug
    xen-unstable:test-amd64-amd64-xl-rtds:guest-localmigrate/x10:fail:allowable
    xen-unstable:test-armhf-armhf-xl-vhd:guest-start:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-amd64-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-qcow2:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-raw:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-amd64-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-amd64-qemuu-nested-amd:debian-hvm-install/l1/l2:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-amd64-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-i386-libvirt-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-libvirt:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-pvshim:guest-start:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-credit2:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-credit2:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-credit1:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-credit1:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-thunderx:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-thunderx:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-libvirt-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-libvirt-xsm:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-xsm:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-multivcpu:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-multivcpu:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-libvirt-raw:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-libvirt-raw:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-libvirt-raw:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt-vhd:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-vhd:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-vhd:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-qcow2:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-raw:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit1:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit1:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-rtds:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-rtds:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit2:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit2:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-arndale:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-arndale:saverestore-support-check:fail:nonblocking
X-Osstest-Versions-This:
    xen=f67bddf3bccd99a5fee968c3b3f288db6a57d3be
X-Osstest-Versions-That:
    xen=4900c939cb9b876c51cfc7a4c854f54c722a30b5
From: osstest service owner <osstest-admin@xenproject.org>
Date: Wed, 24 Jan 2024 08:49:44 +0000

flight 184434 xen-unstable real [real]
flight 184447 xen-unstable real-retest [real]
http://logs.test-lab.xenproject.org/osstest/logs/184434/
http://logs.test-lab.xenproject.org/osstest/logs/184447/

Failures :-/ but no regressions.

Tests which are failing intermittently (not blocking):
 test-amd64-amd64-xl-qemut-debianhvm-i386-xsm 12 debian-hvm-install fail pass in 184447-retest
 test-amd64-amd64-libvirt-vhd 19 guest-start/debian.repeat fail pass in 184447-retest

Regressions which are regarded as allowable (not blocking):
 test-amd64-amd64-xl-rtds     20 guest-localmigrate/x10   fail REGR. vs. 184429

Tests which did not succeed, but are not blocking:
 test-armhf-armhf-xl-vhd      13 guest-start                  fail  like 184426
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 184429
 test-amd64-amd64-xl-qemut-win7-amd64 19 guest-stop            fail like 184429
 test-amd64-i386-xl-qemuu-win7-amd64 19 guest-stop             fail like 184429
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 184429
 test-armhf-armhf-libvirt-qcow2 15 saverestore-support-check   fail like 184429
 test-amd64-i386-xl-qemut-ws16-amd64 19 guest-stop             fail like 184429
 test-armhf-armhf-libvirt-raw 15 saverestore-support-check    fail  like 184429
 test-amd64-i386-xl-qemut-win7-amd64 19 guest-stop             fail like 184429
 test-amd64-amd64-xl-qemut-ws16-amd64 19 guest-stop            fail like 184429
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 184429
 test-amd64-i386-xl-qemuu-ws16-amd64 19 guest-stop             fail like 184429
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 184429
 test-amd64-i386-libvirt-xsm  15 migrate-support-check        fail   never pass
 test-amd64-i386-libvirt      15 migrate-support-check        fail   never pass
 test-amd64-i386-xl-pvshim    14 guest-start                  fail   never pass
 test-amd64-amd64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit2  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit2  16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl          15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl          16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-credit1  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit1  16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-thunderx 15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-thunderx 16 saverestore-support-check    fail   never pass
 test-arm64-arm64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-xsm 16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-xsm      15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-xsm      16 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt     15 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-armhf-armhf-libvirt     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-multivcpu 15 migrate-support-check        fail  never pass
 test-armhf-armhf-xl-multivcpu 16 saverestore-support-check    fail  never pass
 test-amd64-i386-libvirt-raw  14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 15 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-vhd 14 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-vhd      14 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-vhd      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-qcow2 14 migrate-support-check        fail never pass
 test-armhf-armhf-libvirt-raw 14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-credit1  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit1  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-rtds     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-rtds     16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-credit2  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit2  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-arndale  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-arndale  16 saverestore-support-check    fail   never pass

version targeted for testing:
 xen                  f67bddf3bccd99a5fee968c3b3f288db6a57d3be
baseline version:
 xen                  4900c939cb9b876c51cfc7a4c854f54c722a30b5

Last test of basis   184429  2024-01-23 02:01:05 Z    1 days
Testing same since   184434  2024-01-23 14:39:00 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Jan Beulich <jbeulich@suse.com>
  Michal Orzel <michal.orzel@amd.com>
  Shawn Anastasio <sanastasio@raptorengineering.com>

jobs:
 build-amd64-xsm                                              pass    
 build-arm64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64-xtf                                              pass    
 build-amd64                                                  pass    
 build-arm64                                                  pass    
 build-armhf                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-arm64-libvirt                                          pass    
 build-armhf-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-prev                                             pass    
 build-i386-prev                                              pass    
 build-amd64-pvops                                            pass    
 build-arm64-pvops                                            pass    
 build-armhf-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-xtf-amd64-amd64-1                                       pass    
 test-xtf-amd64-amd64-2                                       pass    
 test-xtf-amd64-amd64-3                                       pass    
 test-xtf-amd64-amd64-4                                       pass    
 test-xtf-amd64-amd64-5                                       pass    
 test-amd64-amd64-xl                                          pass    
 test-amd64-coresched-amd64-xl                                pass    
 test-arm64-arm64-xl                                          pass    
 test-armhf-armhf-xl                                          pass    
 test-amd64-i386-xl                                           pass    
 test-amd64-coresched-i386-xl                                 pass    
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm           pass    
 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm            pass    
 test-amd64-amd64-xl-qemut-stubdom-debianhvm-amd64-xsm        pass    
 test-amd64-i386-xl-qemut-stubdom-debianhvm-amd64-xsm         pass    
 test-amd64-amd64-xl-qemut-debianhvm-i386-xsm                 fail    
 test-amd64-i386-xl-qemut-debianhvm-i386-xsm                  pass    
 test-amd64-amd64-xl-qemuu-debianhvm-i386-xsm                 pass    
 test-amd64-i386-xl-qemuu-debianhvm-i386-xsm                  pass    
 test-amd64-amd64-libvirt-xsm                                 pass    
 test-arm64-arm64-libvirt-xsm                                 pass    
 test-amd64-i386-libvirt-xsm                                  pass    
 test-amd64-amd64-xl-xsm                                      pass    
 test-arm64-arm64-xl-xsm                                      pass    
 test-amd64-i386-xl-xsm                                       pass    
 test-amd64-amd64-qemuu-nested-amd                            fail    
 test-amd64-amd64-xl-pvhv2-amd                                pass    
 test-amd64-i386-qemut-rhel6hvm-amd                           pass    
 test-amd64-i386-qemuu-rhel6hvm-amd                           pass    
 test-amd64-amd64-dom0pvh-xl-amd                              pass    
 test-amd64-amd64-xl-qemut-debianhvm-amd64                    pass    
 test-amd64-i386-xl-qemut-debianhvm-amd64                     pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64                    pass    
 test-amd64-i386-xl-qemuu-debianhvm-amd64                     pass    
 test-amd64-i386-freebsd10-amd64                              pass    
 test-amd64-amd64-qemuu-freebsd11-amd64                       pass    
 test-amd64-amd64-qemuu-freebsd12-amd64                       pass    
 test-amd64-amd64-xl-qemuu-ovmf-amd64                         pass    
 test-amd64-i386-xl-qemuu-ovmf-amd64                          pass    
 test-amd64-amd64-xl-qemut-win7-amd64                         fail    
 test-amd64-i386-xl-qemut-win7-amd64                          fail    
 test-amd64-amd64-xl-qemuu-win7-amd64                         fail    
 test-amd64-i386-xl-qemuu-win7-amd64                          fail    
 test-amd64-amd64-xl-qemut-ws16-amd64                         fail    
 test-amd64-i386-xl-qemut-ws16-amd64                          fail    
 test-amd64-amd64-xl-qemuu-ws16-amd64                         fail    
 test-amd64-i386-xl-qemuu-ws16-amd64                          fail    
 test-armhf-armhf-xl-arndale                                  pass    
 test-amd64-amd64-examine-bios                                pass    
 test-amd64-i386-examine-bios                                 pass    
 test-amd64-amd64-xl-credit1                                  pass    
 test-arm64-arm64-xl-credit1                                  pass    
 test-armhf-armhf-xl-credit1                                  pass    
 test-amd64-amd64-xl-credit2                                  pass    
 test-arm64-arm64-xl-credit2                                  pass    
 test-armhf-armhf-xl-credit2                                  pass    
 test-amd64-amd64-xl-qemuu-dmrestrict-amd64-dmrestrict        pass    
 test-amd64-i386-xl-qemuu-dmrestrict-amd64-dmrestrict         pass    
 test-amd64-amd64-examine                                     pass    
 test-arm64-arm64-examine                                     pass    
 test-armhf-armhf-examine                                     pass    
 test-amd64-i386-examine                                      pass    
 test-amd64-i386-freebsd10-i386                               pass    
 test-amd64-amd64-qemuu-nested-intel                          pass    
 test-amd64-amd64-xl-pvhv2-intel                              pass    
 test-amd64-i386-qemut-rhel6hvm-intel                         pass    
 test-amd64-i386-qemuu-rhel6hvm-intel                         pass    
 test-amd64-amd64-dom0pvh-xl-intel                            pass    
 test-amd64-amd64-libvirt                                     pass    
 test-armhf-armhf-libvirt                                     pass    
 test-amd64-i386-libvirt                                      pass    
 test-amd64-amd64-livepatch                                   pass    
 test-amd64-i386-livepatch                                    pass    
 test-amd64-amd64-migrupgrade                                 pass    
 test-amd64-i386-migrupgrade                                  pass    
 test-amd64-amd64-xl-multivcpu                                pass    
 test-armhf-armhf-xl-multivcpu                                pass    
 test-amd64-amd64-pair                                        pass    
 test-amd64-i386-pair                                         pass    
 test-amd64-amd64-libvirt-pair                                pass    
 test-amd64-i386-libvirt-pair                                 pass    
 test-amd64-amd64-xl-pvshim                                   pass    
 test-amd64-i386-xl-pvshim                                    fail    
 test-amd64-amd64-pygrub                                      pass    
 test-armhf-armhf-libvirt-qcow2                               pass    
 test-amd64-amd64-xl-qcow2                                    pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-armhf-armhf-libvirt-raw                                 pass    
 test-amd64-i386-libvirt-raw                                  pass    
 test-amd64-amd64-xl-rtds                                     fail    
 test-armhf-armhf-xl-rtds                                     pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64-shadow             pass    
 test-amd64-i386-xl-qemuu-debianhvm-amd64-shadow              pass    
 test-amd64-amd64-xl-shadow                                   pass    
 test-amd64-i386-xl-shadow                                    pass    
 test-arm64-arm64-xl-thunderx                                 pass    
 test-amd64-amd64-examine-uefi                                pass    
 test-amd64-i386-examine-uefi                                 pass    
 test-amd64-amd64-libvirt-vhd                                 fail    
 test-arm64-arm64-xl-vhd                                      pass    
 test-armhf-armhf-xl-vhd                                      fail    
 test-amd64-i386-xl-vhd                                       pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Pushing revision :

To xenbits.xen.org:/home/xen/git/xen.git
   4900c939cb..f67bddf3bc  f67bddf3bccd99a5fee968c3b3f288db6a57d3be -> master


From xen-devel-bounces@lists.xenproject.org Wed Jan 24 08:51:06 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 24 Jan 2024 08:51:06 +0000
Received: from list by lists.xenproject.org with outflank-mailman.670806.1043821 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSYyN-0005xs-6L; Wed, 24 Jan 2024 08:51:03 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 670806.1043821; Wed, 24 Jan 2024 08:51:03 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSYyN-0005xl-3o; Wed, 24 Jan 2024 08:51:03 +0000
Received: by outflank-mailman (input) for mailman id 670806;
 Wed, 24 Jan 2024 08:51:02 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=bgOV=JC=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rSYyM-0005xd-8x
 for xen-devel@lists.xenproject.org; Wed, 24 Jan 2024 08:51:02 +0000
Received: from mail-lj1-x230.google.com (mail-lj1-x230.google.com
 [2a00:1450:4864:20::230])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id b250d9f4-ba95-11ee-9b0f-b553b5be7939;
 Wed, 24 Jan 2024 09:51:00 +0100 (CET)
Received: by mail-lj1-x230.google.com with SMTP id
 38308e7fff4ca-2cf1288097aso15519131fa.0
 for <xen-devel@lists.xenproject.org>; Wed, 24 Jan 2024 00:51:00 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 w28-20020a02cf9c000000b0046f177277desm45510jar.108.2024.01.24.00.50.57
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 24 Jan 2024 00:50:59 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: b250d9f4-ba95-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1706086259; x=1706691059; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=55T1hPpBQANGO/GLRngLaJp3A6Mt9O4uX1ghnAaCyBc=;
        b=Ue2gcOUTH4V0OlAlvzDFXsa0qouCqg7O7Qe5LUn3tVIg0efVNJM7C38M6hZ/svTseo
         UntIwPX8BlF0SFM0ygslX4tzvlIjzP15VgW2bR5fGktZ3Ya/dWKubB9kSwWvYOkWQWDQ
         ZDDEZGmm0EZfRvT8oqYr55oS4AR89oCJUkFwiZomIixv6OPFczeZzycOmyTP3XvpesXB
         V82DxHD7lK5GM0M/dOvuRj6qTE3zV6p7bIRME89xME8jvr3wgPwF4R7d+MIiEHv7soSu
         IqijPdaKw2fdVdH+qHT4PyVMp9hR0VFk/5qs2G3pqjWgXg5YmDpaXBVg8/FUmeHZLBys
         EQRg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706086259; x=1706691059;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=55T1hPpBQANGO/GLRngLaJp3A6Mt9O4uX1ghnAaCyBc=;
        b=dIRyW2zPyjMp5IAq+xNUiyhDfwERwwROv9GwH9r3Ase7bBfOeLYxtl4I+jcUjF6RKE
         +nDoAi5kZeCpNBKJwgb7Gw2Q4+cTzdryWe8q/DANFWtgp/CyvbEZnjJuGyvwmC4xeDK3
         UB5a7wjhjixiJV3itkcUv4Dfa3KlMTsxc6/87lKr/U+0wP45buj9TqN3gTTud4xHksX6
         /crHzw24+wTMq44BGmLSRGH+jfAihTQcul3vzTEtsUTyw82EtnPGr4L57gYV6w6MKCX1
         PqDnuntwXnSVlNsqD17vstj1drEkNQSzv24G15uyMXQvqxqnrXidqNHMovQf9Xbepi+V
         ZKgg==
X-Gm-Message-State: AOJu0YyN6XRZ96sBKtT2Yf4mdEs1fcdAQLifCLyZz+kppcE4T9nJgiYq
	VK5qFyFfTpwwbAu2bZ/Tqg6EZ3KDUPaOVzWLxP+uig+UylL66IgoklmSJ4cWgw==
X-Google-Smtp-Source: AGHT+IGR9Tbs5Z7GxBNfLbGzNL049IPkRbCv0jiU9m21L3qYy3QBIrK4NFB7TPzV7X7fuMycjtCv+w==
X-Received: by 2002:a2e:780c:0:b0:2cd:15c9:247f with SMTP id t12-20020a2e780c000000b002cd15c9247fmr631505ljc.80.1706086259619;
        Wed, 24 Jan 2024 00:50:59 -0800 (PST)
Message-ID: <16bdb126-0cee-4014-9a88-d916455e35c4@suse.com>
Date: Wed, 24 Jan 2024 09:50:55 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v12.2 01/15] vpci: use per-domain PCI lock to protect vpci
 structure
Content-Language: en-US
To: Stewart Hildebrand <stewart.hildebrand@amd.com>
Cc: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>,
 Andrew Cooper <andrew.cooper3@citrix.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>, Wei Liu
 <wl@xen.org>, George Dunlap <george.dunlap@citrix.com>,
 Julien Grall <julien@xen.org>, Stefano Stabellini <sstabellini@kernel.org>,
 Jun Nakajima <jun.nakajima@intel.com>, Kevin Tian <kevin.tian@intel.com>,
 Paul Durrant <paul@xen.org>, Volodymyr Babchuk <volodymyr_babchuk@epam.com>,
 xen-devel@lists.xenproject.org
References: <20240109215145.430207-1-stewart.hildebrand@amd.com>
 <20240109215145.430207-2-stewart.hildebrand@amd.com>
 <20240115194309.45683-1-stewart.hildebrand@amd.com>
 <7e936e6a-3218-4c4a-ac68-a58cd363a11d@suse.com>
 <e05e63ab-a86f-45c4-bd80-2b7d6b99aa3d@amd.com>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <e05e63ab-a86f-45c4-bd80-2b7d6b99aa3d@amd.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 24.01.2024 06:07, Stewart Hildebrand wrote:
> On 1/23/24 09:29, Jan Beulich wrote:
>> On 15.01.2024 20:43, Stewart Hildebrand wrote:
>>> @@ -1043,11 +1043,11 @@ static int __pci_enable_msix(struct pci_dev *pdev, struct msi_info *msi,
>>>  {
>>>      struct msi_desc *old_desc;
>>>  
>>> -    ASSERT(pcidevs_locked());
>>> -
>>>      if ( !pdev || !pdev->msix )
>>>          return -ENODEV;
>>>  
>>> +    ASSERT(pcidevs_locked() || rw_is_locked(&pdev->domain->pci_lock));
>>> +
>>>      if ( msi->entry_nr >= pdev->msix->nr_entries )
>>>          return -EINVAL;
>>
>> Further looking at this - is dereferencing pdev actually safe without holding
>> the global lock?
> 
> Are you referring to the new placement of the ASSERT, which opens up the possibility that pdev could be dereferenced and the function return before the ASSERT? If that is what you mean, I see your point. The ASSERT was placed there simply because we wanted to check that pdev != NULL first. See prior discussion at [1]. Hmm.. How about splitting the pdev-checking condition? E.g.:
> 
>     if ( !pdev )
>         return -ENODEV;
> 
>     ASSERT(pcidevs_locked() || rw_is_locked(&pdev->domain->pci_lock));
> 
>     if ( !pdev->msix )
>         return -ENODEV;

Yes, this is the particular arrangement I would have expected (at least
partly based on the guessing of the purpose of holding those locks).

Jan

> [1] https://lore.kernel.org/xen-devel/85a52f8d-d6db-4478-92b1-2b6305769c96@amd.com/



From xen-devel-bounces@lists.xenproject.org Wed Jan 24 08:56:54 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 24 Jan 2024 08:56:54 +0000
Received: from list by lists.xenproject.org with outflank-mailman.670818.1043844 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSZ3x-0006ji-Ub; Wed, 24 Jan 2024 08:56:49 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 670818.1043844; Wed, 24 Jan 2024 08:56:49 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSZ3x-0006jb-Qd; Wed, 24 Jan 2024 08:56:49 +0000
Received: by outflank-mailman (input) for mailman id 670818;
 Wed, 24 Jan 2024 08:56:48 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=bgOV=JC=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rSZ3w-0006jF-TU
 for xen-devel@lists.xenproject.org; Wed, 24 Jan 2024 08:56:48 +0000
Received: from mail-lj1-x22c.google.com (mail-lj1-x22c.google.com
 [2a00:1450:4864:20::22c])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 817f5d03-ba96-11ee-98f5-6d05b1d4d9a1;
 Wed, 24 Jan 2024 09:56:47 +0100 (CET)
Received: by mail-lj1-x22c.google.com with SMTP id
 38308e7fff4ca-2cddb0ee311so56379441fa.0
 for <xen-devel@lists.xenproject.org>; Wed, 24 Jan 2024 00:56:48 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 x4-20020a056e020f0400b00361b6a1e6aasm2960866ilj.87.2024.01.24.00.56.45
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 24 Jan 2024 00:56:47 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 817f5d03-ba96-11ee-98f5-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1706086608; x=1706691408; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=Ts+uFTaRePmueIU5jH7HQYe7b0R4U5xP6OKpShqXZGM=;
        b=VXSHbqz+zHmIVyPxpWIUOl2QmXrDWt4/Fv4EYXlCzBlhZth70W0WNUNCae8rWCdKZU
         GGRAQnZMhxqCHgeAl8jFIPrOz/jqoH9NfPaKyFpPVUlYrUyCftsUqDZYcl8a5H2ZE8OH
         XZaJewA77+77+lHkez5nsg4xo0mL0g+heGRFMY/teNkZr0UvO/y0VAK3YTKbmqAE4Ygq
         4F5t1Z74UhbD7YN3udrcjGtcYyXj1Q0LHWijbwfP7AaJJXm2+76pUjiD/LzQuJLTsXoc
         l4Z72amPiyRgat4LrSbmgp0WtxTMUnQuDLQ0C3qbCQpXospzzCzyPEtP+LfGKkyrAffB
         VMbQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706086608; x=1706691408;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=Ts+uFTaRePmueIU5jH7HQYe7b0R4U5xP6OKpShqXZGM=;
        b=G7QyeFbmunAZTXsYUi2jVLlP0mmkxYIQCf9rZzETX4mm+eLux1LiIbw+8thAUtJ+CP
         jiGyfyfYx9wwX5EHfwJVtKkGaHCpcU/IXIefWoreF62zTo/1zfFnLqgTGHXmdTC+C+li
         3wDfwpOOPUA3WH0lW8JC6sqmDboZUYP2cf1wh60o7cLEgaLH29XAquEThqt35r6UOlFO
         +cdHgiOzdOP+g1et+hA7Yxp171CIs8VzmIrjZ+e33PoPPIU9l/+pVvT24s/WlEbKzq7F
         OdxZNxy7cG8UYzX1+HDXoej4iYFGIB8+i51JUAkybYjyx4IG4ikut5Ojfyb/0fkSuvZt
         Tmjw==
X-Gm-Message-State: AOJu0YwIyW40MSjny/nEXuJ1inYCor3/H3TgRH+hA3HiAaAZILSytObH
	Ll87L1lC5XOR22i+uLUa6Yx8U7D7wguEjJgMuqDi1qlSUM368N1Avyk8DItEDw==
X-Google-Smtp-Source: AGHT+IEktw8YQL1QsTGtPHYfVIvIAqHfFfuMJhmykcW5kDjvFdOojsSt3azW5f3I3hSZyqnacnto3g==
X-Received: by 2002:a2e:9e46:0:b0:2cc:c895:7140 with SMTP id g6-20020a2e9e46000000b002ccc8957140mr251279ljk.73.1706086607717;
        Wed, 24 Jan 2024 00:56:47 -0800 (PST)
Message-ID: <c8792489-3e61-4c2e-af80-97832a3622b7@suse.com>
Date: Wed, 24 Jan 2024 09:56:42 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v12.2 01/15] vpci: use per-domain PCI lock to protect vpci
 structure
Content-Language: en-US
To: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
Cc: Stewart Hildebrand <stewart.hildebrand@amd.com>,
 Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>,
 Andrew Cooper <andrew.cooper3@citrix.com>, Wei Liu <wl@xen.org>,
 George Dunlap <george.dunlap@citrix.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>,
 Jun Nakajima <jun.nakajima@intel.com>, Kevin Tian <kevin.tian@intel.com>,
 Paul Durrant <paul@xen.org>, Volodymyr Babchuk <volodymyr_babchuk@epam.com>,
 xen-devel@lists.xenproject.org
References: <20240109215145.430207-1-stewart.hildebrand@amd.com>
 <20240109215145.430207-2-stewart.hildebrand@amd.com>
 <20240115194309.45683-1-stewart.hildebrand@amd.com>
 <18ec3401-4334-40c0-82a0-31abfd9797d0@suse.com> <Za_Z_WlLbBgb0EzF@macbook>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <Za_Z_WlLbBgb0EzF@macbook>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 23.01.2024 16:23, Roger Pau Monné wrote:
> On Tue, Jan 23, 2024 at 03:26:26PM +0100, Jan Beulich wrote:
>> On 15.01.2024 20:43, Stewart Hildebrand wrote:
>>> --- a/xen/arch/x86/hvm/vmsi.c
>>> +++ b/xen/arch/x86/hvm/vmsi.c
>>> @@ -468,7 +468,7 @@ int msixtbl_pt_register(struct domain *d, struct pirq *pirq, uint64_t gtable)
>>>      struct msixtbl_entry *entry, *new_entry;
>>>      int r = -EINVAL;
>>>  
>>> -    ASSERT(pcidevs_locked());
>>> +    ASSERT(pcidevs_locked() || rw_is_locked(&d->pci_lock));
>>>      ASSERT(rw_is_write_locked(&d->event_lock));
>>>  
>>>      if ( !msixtbl_initialised(d) )
>>> @@ -538,7 +538,7 @@ void msixtbl_pt_unregister(struct domain *d, struct pirq *pirq)
>>>      struct pci_dev *pdev;
>>>      struct msixtbl_entry *entry;
>>>  
>>> -    ASSERT(pcidevs_locked());
>>> +    ASSERT(pcidevs_locked() || rw_is_locked(&d->pci_lock));
>>>      ASSERT(rw_is_write_locked(&d->event_lock));
>>
>> I was hoping to just ack this patch, but the two changes above look
>> questionable to me: How can it be that holding _either_ lock is okay?
>> It's not obvious in this context that consumers have to hold both
>> locks now. In fact consumers looks to be the callers of
>> msixtbl_find_entry(), yet the list is RCU-protected. Whereas races
>> against themselves or against one another are avoided by holding
>> d->event_lock.
> 
> The reason for the change here is that msixtbl_pt_{un,}register() gets
> called by pt_irq_{create,destroy}_bind(), which is in turn called by
> vPCI code (pcidevs_locked()) that has been switched to not take the
> pcidevs lock anymore, and hence the ASSERT would trigger.

I understand this is the motivation for the change, but that doesn't
(alone) render the construct above sensible / correct.

>> My only guess then for the original need of holding pcidevs_lock is
>> the use of msi_desc->dev, with the desire for the device to not go
>> away. Yet the description doesn't talk about interactions of the per-
>> domain PCI lock with that one at all; it all circles around the
>> domain'd vPCI lock.
> 
> I do agree that it looks like the original intention of holding
> pcidevs_lock is to prevent msi_desc->dev from being removed - yet I'm
> not sure it's possible for the device to go away while the domain
> event_lock is hold, as device removal would need to take that same
> lock in order to destroy the irq_desc.

Yes, that matches an observation of mine as well. If we can simplify
(rather then complicate) locking, I'd prefer if we did. May need to
be a separate (prereq) patch, though.

>> Feels like I'm missing something that's obvious to everyone else.
>> Or maybe this part of the patch is actually unrelated, and should be
>> split off (with its own [proper] justification)? Or wouldn't it then
>> be better to also change the other paths leading here to acquire the
>> per-domain PCI lock?
> 
> Other paths in vPCI vpci_msi_update(), vpci_msi_arch_update(),
> vpci_msi_arch_enable()... are switched in this patch to use the
> per-domain pci_lock instead of pcidevs lock.

Hence my question: Can't we consolidate to all paths only using the
per-domain lock? That would make these odd-looking assertions become
normal-looking again.

Jan


From xen-devel-bounces@lists.xenproject.org Wed Jan 24 09:15:36 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 24 Jan 2024 09:15:36 +0000
Received: from list by lists.xenproject.org with outflank-mailman.670824.1043857 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSZM0-0003JX-CZ; Wed, 24 Jan 2024 09:15:28 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 670824.1043857; Wed, 24 Jan 2024 09:15:28 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSZM0-0003JQ-8m; Wed, 24 Jan 2024 09:15:28 +0000
Received: by outflank-mailman (input) for mailman id 670824;
 Wed, 24 Jan 2024 09:15:26 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=k9jB=JC=gmail.com=oleksii.kurochko@srs-se1.protection.inumbo.net>)
 id 1rSZLy-0003Iy-IW
 for xen-devel@lists.xenproject.org; Wed, 24 Jan 2024 09:15:26 +0000
Received: from mail-ed1-x534.google.com (mail-ed1-x534.google.com
 [2a00:1450:4864:20::534])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 1bbfbc24-ba99-11ee-98f5-6d05b1d4d9a1;
 Wed, 24 Jan 2024 10:15:25 +0100 (CET)
Received: by mail-ed1-x534.google.com with SMTP id
 4fb4d7f45d1cf-55cca88b6a5so210831a12.1
 for <xen-devel@lists.xenproject.org>; Wed, 24 Jan 2024 01:15:25 -0800 (PST)
Received: from [192.168.206.239] ([94.75.70.14])
 by smtp.gmail.com with ESMTPSA id
 h9-20020a0564020e0900b00559736b84ffsm11044750edh.89.2024.01.24.01.15.23
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 24 Jan 2024 01:15:24 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 1bbfbc24-ba99-11ee-98f5-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1706087725; x=1706692525; darn=lists.xenproject.org;
        h=mime-version:user-agent:content-transfer-encoding:references
         :in-reply-to:date:cc:to:from:subject:message-id:from:to:cc:subject
         :date:message-id:reply-to;
        bh=9BEar1HU8T7eftDSQ6Z4GKnAGz6bSQ3j5Ys1+r4Vbgg=;
        b=UCtHggJDPwimFiDBntRtJO4IXXx5jPKjjWT0r3g586+nDcbhBFl3rdrPdX/sWPDyvz
         b6N9vkdodUkQdcHn11myLl9KPDRXG91xRwLEbBw2b4gdrmDEW/4Sgr7jHWcoIVJHuVv2
         61es+xCLUDEH0pkEM3N7iI5PvUcha2eLIvuaRxkKakbhbGXjFFu5Ol79NiAKegsN5Y4B
         Q9CK/lGVLrzVxqkueFk2r6W1f3EFvr0/S0fz3F+4HxpK2K7gb0/iJjxozgmAb8594N+g
         UTC8eA4x9MUh4FPOjWLnAkerC/k8qn27HgQDgvovkJc75T+HWLG2j3xQWH2n5gUyzmeD
         tsmQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706087725; x=1706692525;
        h=mime-version:user-agent:content-transfer-encoding:references
         :in-reply-to:date:cc:to:from:subject:message-id:x-gm-message-state
         :from:to:cc:subject:date:message-id:reply-to;
        bh=9BEar1HU8T7eftDSQ6Z4GKnAGz6bSQ3j5Ys1+r4Vbgg=;
        b=BfjKT89BIlkP2ArY5XbywBCn2SZUZlGMf8+QIKvkczAHmO2TIqItnSGYYuRXkMJwaY
         drKzkNv2lnX0N+M2lm7o3JFkLgbeCncPOGht2tO+QzIhAZfq6AQynjUypx8lUEPVEYXc
         AIyuoqXNsxjf6w1/kQAco69kRWtQ+MxwsA78xtQv7OWDTC0q24qxdQtZHmuCNfSz0Awx
         D3oIXzOa9ream1spjeBF2MYb5i7qVFOOgBCuMXR2Kv4drDU8qyBlMzRj+WJEC8ClaI1q
         X2TvkkSLEDJz715C2kje0iJL/U+nDv64je+mp++l2j284qvJdLO1NJrH3Lh/8H7G+2dW
         h0ZQ==
X-Gm-Message-State: AOJu0YzjjazK+obelSp7nbQYpazbm+WBgLfVQTkkPUnMP3D7G6YTSgXs
	uV49YhwGNgTOSJwBsXRp7ZnffvH3RNdOoLtXcWakvTzwe5H5IBk4
X-Google-Smtp-Source: AGHT+IEBM+V/cjbnzJ2r80lvSZKH9FPCZ7UZoWjBENcm6ZiwxHzb1I+sF8CBsvr8ESwl4jhJVRwczg==
X-Received: by 2002:aa7:d399:0:b0:559:f4b4:3077 with SMTP id x25-20020aa7d399000000b00559f4b43077mr1996589edq.45.1706087724677;
        Wed, 24 Jan 2024 01:15:24 -0800 (PST)
Message-ID: <3c6aead1a067c6202474e9752b343d268c335b8c.camel@gmail.com>
Subject: Re: [PATCH v3 13/34] xen/riscv: introduce cmpxchg.h
From: Oleksii <oleksii.kurochko@gmail.com>
To: Jan Beulich <jbeulich@suse.com>
Cc: Alistair Francis <alistair.francis@wdc.com>, Bob Eshleman
 <bobbyeshleman@gmail.com>, Connor Davis <connojdavis@gmail.com>, Andrew
 Cooper <andrew.cooper3@citrix.com>, George Dunlap
 <george.dunlap@citrix.com>,  Julien Grall <julien@xen.org>, Stefano
 Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>, 
 xen-devel@lists.xenproject.org
Date: Wed, 24 Jan 2024 11:15:23 +0200
In-Reply-To: <c57e17ed-61db-4da2-975b-083bfabcbe47@suse.com>
References: <cover.1703255175.git.oleksii.kurochko@gmail.com>
	 <214bfd61c8ccf2a5b2c640b815ebfa6a705f6234.1703255175.git.oleksii.kurochko@gmail.com>
	 <8ee35a76-f3ef-4143-93ef-8e6089f82a80@suse.com>
	 <56c23efdd79c0b1393ceef1adfcb45f66d4d1cf6.camel@gmail.com>
	 <c5872ae0-a26a-4f51-bad6-08fd0c37d488@suse.com>
	 <835c58c1deb89db2fa500bd7cd767facd5b5fb78.camel@gmail.com>
	 <c57e17ed-61db-4da2-975b-083bfabcbe47@suse.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: base64
User-Agent: Evolution 3.50.2 (3.50.2-1.fc39) 
MIME-Version: 1.0

T24gVHVlLCAyMDI0LTAxLTIzIGF0IDE0OjI3ICswMTAwLCBKYW4gQmV1bGljaCB3cm90ZToKPiBP
biAyMy4wMS4yMDI0IDEzOjE4LCBPbGVrc2lpIHdyb3RlOgo+ID4gT24gVHVlLCAyMDI0LTAxLTIz
IGF0IDExOjI4ICswMTAwLCBKYW4gQmV1bGljaCB3cm90ZToKPiA+ID4gT24gMjMuMDEuMjAyNCAx
MToxNSwgT2xla3NpaSB3cm90ZToKPiA+ID4gPiBPbiBNb24sIDIwMjQtMDEtMjIgYXQgMTc6Mjcg
KzAxMDAsIEphbiBCZXVsaWNoIHdyb3RlOgo+ID4gPiA+ID4gT24gMjIuMTIuMjAyMyAxNjoxMiwg
T2xla3NpaSBLdXJvY2hrbyB3cm90ZToKPiA+ID4gPiA+ID4gK3N0YXRpYyBpbmxpbmUgdW5zaWdu
ZWQgbG9uZyBfX3hjaGcodm9sYXRpbGUgdm9pZCAqcHRyLAo+ID4gPiA+ID4gPiB1bnNpZ25lZAo+
ID4gPiA+ID4gPiBsb25nIHgsIGludCBzaXplKQo+ID4gPiA+ID4gPiArewo+ID4gPiA+ID4gPiAr
wqDCoMKgIHN3aXRjaCAoc2l6ZSkgewo+ID4gPiA+ID4gPiArwqDCoMKgIGNhc2UgMToKPiA+ID4g
PiA+ID4gK8KgwqDCoMKgwqDCoMKgIHJldHVybiBfX2NtcHhjaGdfY2FzZV8xKHB0ciwgKHVpbnQz
Ml90KS0xLCB4KTsKPiA+ID4gPiA+ID4gK8KgwqDCoCBjYXNlIDI6Cj4gPiA+ID4gPiA+ICvCoMKg
wqDCoMKgwqDCoCByZXR1cm4gX19jbXB4Y2hnX2Nhc2VfMihwdHIsICh1aW50MzJfdCktMSwgeCk7
Cj4gPiA+ID4gPiAKPiA+ID4gPiA+IEhvdyBhcmUgdGhlc2UgZ29pbmcgdG8gd29yaz8gWW91J2xs
IGNvbXBhcmUgYWdhaW5zdCB+MCwgYW5kCj4gPiA+ID4gPiBpZgo+ID4gPiA+ID4gdGhlCj4gPiA+
ID4gPiB2YWx1ZQo+ID4gPiA+ID4gaW4gbWVtb3J5IGlzbid0IH4wLCBtZW1vcnkgd29uJ3QgYmUg
dXBkYXRlZDsgeW91IHdpbGwgb25seQo+ID4gPiA+ID4gKGNvcnJlY3RseSkKPiA+ID4gPiA+IHJl
dHVybiB0aGUgdmFsdWUgZm91bmQgaW4gbWVtb3J5Lgo+ID4gPiA+ID4gCj4gPiA+ID4gPiBPciB3
YWl0IC0gbG9va2luZyBhdCBfX2NtcHhjaGdfY2FzZV97MSwyfSgpIGZhciBmdXJ0aGVyIGRvd24s
Cj4gPiA+ID4gPiB5b3UKPiA+ID4gPiA+IGlnbm9yZQo+ID4gPiA+ID4gIm9sZCIgdGhlcmUuIFdo
aWNoIGFwcGFyZW50bHkgbWVhbnMgdGhleSdsbCB3b3JrIGZvciB0aGUgdXNlCj4gPiA+ID4gPiBo
ZXJlLAo+ID4gPiA+ID4gYnV0Cj4gPiA+ID4gPiBub3QgZm9yIHRoZSB1c2UgaW4gX19jbXB4Y2hn
KCkuCj4gPiA+ID4gWWVzLCB0aGUgdHJpY2sgaXMgdGhhdCBvbGQgaXMgaWdub3JlZCBhbmQgaXMg
cmVhZCBpbgo+ID4gPiA+IF9fZW11bGF0ZV9jbXB4Y2hnX2Nhc2UxXzIoKSBiZWZvcmUgX19jbXB4
Y2hnX2Nhc2VfNCBpcyBjYWxsZWQ6Cj4gPiA+ID4gwqDCoMKgIGRvCj4gPiA+ID4ge8KgwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC
oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg
IAo+ID4gPiA+IMKgwqDCoMKgwqDCoMKgIHJlYWRfdmFsID0KPiA+ID4gPiByZWFkX2Z1bmMoYWxp
Z25lZF9wdHIpO8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC
oMKgwqDCoCAKPiA+ID4gPiDCoMKgwqDCoMKgwqDCoCBzd2FwcGVkX25ldyA9IHJlYWRfdmFsICYK
PiA+ID4gPiB+bWFzazvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC
oMKgwqDCoMKgwqDCoMKgwqAgCj4gPiA+ID4gwqDCoMKgwqDCoMKgwqAgc3dhcHBlZF9uZXcgfD0K
PiA+ID4gPiBtYXNrZWRfbmV3O8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgCj4gPiA+ID4gwqDCoMKgwqDCoMKgwqAg
cmV0ID0gY21weGNoZ19mdW5jKGFsaWduZWRfcHRyLCByZWFkX3ZhbCwKPiA+ID4gPiBzd2FwcGVk
X25ldyk7wqDCoMKgwqDCoMKgIAo+ID4gPiA+IMKgwqDCoCB9IHdoaWxlICggcmV0ICE9IHJlYWRf
dmFsCj4gPiA+ID4gKTvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC
oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAKPiA+ID4gPiByZWFkX3ZhbCBpdCBpcyAn
b2xkJy4KPiA+ID4gPiAKPiA+ID4gPiBCdXQgbm93IEkgYW0gbm90IDEwMCUgc3VyZSB0aGF0IGl0
IGlzIGNvcnJlY3QgZm9yIF9fY21weGNoZy4uLgo+ID4gPiAKPiA+ID4gSXQganVzdCBjYW4ndCBi
ZSBjb3JyZWN0IC0geW91IGNhbid0IGlnbm9yZSAib2xkIiB0aGVyZS4gSSB0aGluawo+ID4gPiB5
b3UKPiA+ID4gd2FudCBzaW1wbGUgY21weGNoZyBwcmltaXRpdmVzLCB3aGljaCB4Y2hnIHRoZW4g
dXNlcyBpbiBhIGxvb3AKPiA+ID4gKHdoaWxlCj4gPiA+IGNtcHhjaGcgdXNlcyB0aGVtIHBsYWlu
bHkpLgo+ID4gQnV0IHhjaGcgZG9lc24ndCByZXF1aXJlICdvbGQnIHZhbHVlLCBzbyBpdCBzaG91
bGQgYmUgaWdub3JlZCBpbgo+ID4gc29tZQo+ID4gd2F5IGJ5IGNtcHhjaGcuCj4gCj4gV2VsbCwg
bm8uIElmIHlvdSBoYXZlIG9ubHkgY21weGNoZywgSSB0aGluayB5b3VyIG9ubHkgY2hvaWNlIGlz
IC0gYXMKPiBzYWlkIC0gdG8gcmVhZCB0aGUgb2xkIHZhbHVlIGFuZCB0aGVuIGxvb3Agb3ZlciBj
bXB4Y2hnIHVudGlsIHRoYXQKPiBzdWNjZWVkcy4gTm90IHJlYWxseSBkaWZmZXJlbnQgZnJvbSBv
dGhlciBvcGVyYXRpb25zIHdoaWNoIG5lZWQKPiBlbXVsYXRpbmcgdXNpbmcgY21weGNoZy4KVGhl
biBpdCBsb29rcyBsaWtlIHRoZSBtYWluIGVycm9yIGluIF9fZW11bGF0ZV9jbXB4Y2hnX2Nhc2Ux
XzIgaXMgdGhhdApJIHJlYWQgdGhlIHZhbHVlIGVhY2ggdGltZSwgc28gcmVhZF92YWwgPSByZWFk
X2Z1bmMoYWxpZ25lZF9wdHIpOyAKc2hvdWxkIGJlIGJlZm9yZSB0aGUgZG8gey4uLn0gd2hpbGUo
KS4gQWxzbywgaXQgd291bGQgYmUgYmV0dGVyIHRvCnJlbmFtZSBpdCB0byBvbGRfdmFsIG9yIGp1
c3Qgb2xkLgoKPiAKPiA+ID4gPiA+ID4gK3N0YXRpYyBhbHdheXNfaW5saW5lIHVuc2lnbmVkIHNo
b3J0Cj4gPiA+ID4gPiA+IF9fY21weGNoZ19jYXNlXzIodm9sYXRpbGUKPiA+ID4gPiA+ID4gdWlu
dDMyX3QgKnB0ciwKPiA+ID4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC
oMKgwqDCoMKgwqDCoMKgCj4gPiA+ID4gPiA+IHVpbnQzMl90Cj4gPiA+ID4gPiA+IG9sZCwKPiA+
ID4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC
oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg
Cj4gPiA+ID4gPiA+IHVpbnQzMl90Cj4gPiA+ID4gPiA+IG5ldykKPiA+ID4gPiA+ID4gK3sKPiA+
ID4gPiA+ID4gK8KgwqDCoCAodm9pZCkgb2xkOwo+ID4gPiA+ID4gPiArCj4gPiA+ID4gPiA+ICvC
oMKgwqAgaWYgKCgodW5zaWduZWQgbG9uZylwdHIgJiAzKSA9PSAzKQo+ID4gPiA+ID4gPiArwqDC
oMKgIHsKPiA+ID4gPiA+ID4gKyNpZmRlZiBDT05GSUdfNjRCSVQKPiA+ID4gPiA+ID4gK8KgwqDC
oMKgwqDCoMKgIHJldHVybiBfX2VtdWxhdGVfY21weGNoZ19jYXNlMV8yKCh1aW50NjRfdCAqKXB0
ciwKPiA+ID4gPiA+ID4gbmV3LAo+ID4gPiA+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg
cmVhZHEsCj4gPiA+ID4gPiA+IF9fY21weGNoZ19jYXNlXzgsCj4gPiA+ID4gPiA+IDB4ZmZmZlUp
Owo+ID4gPiA+ID4gCj4gPiA+ID4gPiBXaGF0IGlmICgodW5zaWduZWQgbG9uZylwdHIgJiA3KSA9
PSA3ICh3aGljaCBpcyBhIHN1Yi1jYXNlIG9mCj4gPiA+ID4gPiB3aGF0Cj4gPiA+ID4gPiB0aGUK
PiA+ID4gPiA+IGlmKCkgYWJvdmUgY2hlY2tzIGZvcj8gSXNuJ3QgaXQgbW9yZSByZWFzb25hYmxl
IHRvIHJlcXVpcmUKPiA+ID4gPiA+IGFsaWduZWQKPiA+ID4gPiA+IDE2LWJpdCBxdWFudGl0aWVz
IGhlcmU/IE9yIGlmIG1pcy1hbGlnbmVkIGFkZHJlc3NlcyBhcmUgb2theSwKPiA+ID4gPiA+IHlv
dQo+ID4gPiA+ID4gY291bGQKPiA+ID4gPiA+IGFzIHdlbGwgZW11bGF0ZSB1c2luZyBfX2NtcHhj
aGdfY2FzZV80KCkuCj4gPiA+ID4gWWVzLCBpdCB3aWxsIGJlIG1vcmUgcmVhc29uYWJsZS4gSSds
bCB1c2UgSVNfQUxJR05FRCBpbnN0ZWFkLgo+ID4gPiAKPiA+ID4gTm90IHN1cmUgSSBnZXQgeW91
ciB1c2Ugb2YgImluc3RlYWQiIGhlcmUgY29ycmVjdGx5LiBUaGVyZSdzIG1vcmUKPiA+ID4gdG8g
Y2hhbmdlIGhlcmUgdGhhbiBqdXN0IHRoZSBpZigpIGNvbmRpdGlvbi4KPiA+IEkgbWVhbnQgc29t
ZXRoaW5nIGxpa2U6Cj4gPiAKPiA+IGlmICggSVNfQUxJR05FRChwdHIsIDE2KSApCj4gPiDCoMKg
wqAgX19lbXVsYXRlX2NtcHhjaGdfY2FzZTFfMiguLi4pOwo+ID4gZWxzZQo+ID4gwqDCoMKgIGFz
c2VydF9mYWlsZWQoInB0ciBpc24ndCBhbGlnbmVkXG4iKTsKPiAKPiBFeGNlcHQgdGhhdCB5b3Un
ZCBiZXR0ZXIgbm90IHVzZSBhc3NlcnRfZmFpbGVkKCkgZGlyZWN0bHkgYW55d2hlcmUsCj4gYW5k
IHRoZSBhYm92ZSBpcyBlYXNpZXIgYXMKPiAKPiDCoMKgwqAgQVNTRVJUKElTX0FMSUdORUQocHRy
LCAxNikpOwo+IMKgwqDCoCBfX2VtdWxhdGVfY21weGNoZ19jYXNlMV8yKC4uLik7Cj4gCj4gYW55
d2F5IChsZWF2aW5nIGFzaWRlIHRoYXQgSSBndWVzcyB5b3UgbWVhbiAyLCBub3QgMTYpLgpZZWFo
LCBpdCBzaG91bGQgYmUgMi4gVGhhbmtzLgoKfiBPbGVrc2lpCg==



From xen-devel-bounces@lists.xenproject.org Wed Jan 24 09:21:24 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 24 Jan 2024 09:21:24 +0000
Received: from list by lists.xenproject.org with outflank-mailman.670828.1043866 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSZRf-0006E1-W7; Wed, 24 Jan 2024 09:21:19 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 670828.1043866; Wed, 24 Jan 2024 09:21:19 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSZRf-0006Du-Sb; Wed, 24 Jan 2024 09:21:19 +0000
Received: by outflank-mailman (input) for mailman id 670828;
 Wed, 24 Jan 2024 09:21:18 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=V3ap=JC=cloud.com=roger.pau@srs-se1.protection.inumbo.net>)
 id 1rSZRe-0006Dg-2e
 for xen-devel@lists.xenproject.org; Wed, 24 Jan 2024 09:21:18 +0000
Received: from mail-ej1-x636.google.com (mail-ej1-x636.google.com
 [2a00:1450:4864:20::636])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id ec9a0c65-ba99-11ee-9b0f-b553b5be7939;
 Wed, 24 Jan 2024 10:21:15 +0100 (CET)
Received: by mail-ej1-x636.google.com with SMTP id
 a640c23a62f3a-a293f2280c7so542184966b.1
 for <xen-devel@lists.xenproject.org>; Wed, 24 Jan 2024 01:21:15 -0800 (PST)
Received: from localhost ([213.195.118.74]) by smtp.gmail.com with ESMTPSA id
 qo3-20020a170907874300b00a2fb9c0337esm4653960ejc.112.2024.01.24.01.21.14
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 24 Jan 2024 01:21:14 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: ec9a0c65-ba99-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1706088075; x=1706692875; darn=lists.xenproject.org;
        h=in-reply-to:content-transfer-encoding:content-disposition
         :mime-version:references:message-id:subject:cc:to:from:date:from:to
         :cc:subject:date:message-id:reply-to;
        bh=FkJIuusH5FCy3puYBU45Z3EEnAGFrMcnM5eOBleEIlY=;
        b=DFERdMmoe1MvKP7uOejA/G7JupJfU6h7w5lWBhns0WoVezfnVALwc84zVrfp+SM+Ji
         OKcb+XpK8kEqtO1KnhPfJ7nDrrKCzJiyGrZa7ZgSFEHeliCArjU1vYV6pd3wnvYTbtvP
         UX4lbgQYcTe5L3siE9FIuBmniioi7U2sXT4so=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706088075; x=1706692875;
        h=in-reply-to:content-transfer-encoding:content-disposition
         :mime-version:references:message-id:subject:cc:to:from:date
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=FkJIuusH5FCy3puYBU45Z3EEnAGFrMcnM5eOBleEIlY=;
        b=J1f04CA809NpyEgv+sVHC16R3sXB851YQjHI2hAtP9B8jP9XHD+Tk0k18B31Sxid5f
         /45y1xjC7XJy1I1aQyo09l4T1pO5/QIlU4nmh7uVcg5UZ21EuDpOMy6q7z9oReuZFl/h
         BOscwFsA/LvwlXoqEQXlasHL/lQcuRfwO8OIkdit6b0SuJY+TY3ec+M9cm2aE7OmoiWn
         589FnqMncB62eVZZCEZCP0odSUcmNeHsjKLbCrmDF59/WW/pao577Xyx32XjP00Astr0
         baiom9D7Q1qHZOjGaPRWHJwtlo3RM906MSC0Fkl8HirDYL423xX5MX4CIuS+UsvL/ODO
         tU2w==
X-Gm-Message-State: AOJu0YygXicWHaQXiwGb41qcGJcl4Z17oHHHXFzwLt2lCvqBRdfbfOpv
	G/s0Z3zrfRfhCGHeCx23VFzbrvgDpJNU8QOX65bm1ALwEJUWWzMBXjKnKPodPCM=
X-Google-Smtp-Source: AGHT+IEEaxKRAxNQDe6I+mZrynxqdIj/jUCbWDTI+HA7bf0gv9+PlUCOn2jnN+D1Mz0Lk3BXPKP6gg==
X-Received: by 2002:a17:906:7fc5:b0:a30:e761:620 with SMTP id r5-20020a1709067fc500b00a30e7610620mr282830ejs.240.1706088075152;
        Wed, 24 Jan 2024 01:21:15 -0800 (PST)
Date: Wed, 24 Jan 2024 10:21:14 +0100
From: Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
To: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: Xen-devel <xen-devel@lists.xenproject.org>,
	Jan Beulich <JBeulich@suse.com>, Wei Liu <wl@xen.org>,
	Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>,
	Ross Lagerwall <ross.lagerwall@citrix.com>
Subject: Re: [PATCH 3/3] x86/entry: Make intra-funciton symbols properly local
Message-ID: <ZbDWijN6UKDdArMg@macbook>
References: <20240122181714.1543738-1-andrew.cooper3@citrix.com>
 <20240122181714.1543738-5-andrew.cooper3@citrix.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <20240122181714.1543738-5-andrew.cooper3@citrix.com>

On Mon, Jan 22, 2024 at 06:17:14PM +0000, Andrew Cooper wrote:
> Each of these symbols are local to their main function.  By not having them
> globally visible, livepatch's binary diffing logic can reason about the
> functions properly.
> 
> Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
> ---
> CC: Jan Beulich <JBeulich@suse.com>
> CC: Roger Pau Monné <roger.pau@citrix.com>
> CC: Wei Liu <wl@xen.org>
> CC: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
> CC: Ross Lagerwall <ross.lagerwall@citrix.com>
> 
> sysenter_eflags_saved() is an open question.  This does need to be globally
> visible, and I think any livepatch modifying sysenter_entry() will need a
> manual adjustment to do_debug() to update the reference there.

Hm, yes, this stuff is indeed problematic.  There's also the usage of
sysenter_entry in do_debug(), which will also need adjusting to
account for the position of the payload text replacement, as there's
no explicitly guarantee the payload will be loaded at an address
greater than the current sysenter_entry position.

> ---
>  xen/arch/x86/x86_64/compat/entry.S | 20 ++++++++++----------
>  xen/arch/x86/x86_64/entry.S        | 22 +++++++++++-----------
>  2 files changed, 21 insertions(+), 21 deletions(-)
> 
> diff --git a/xen/arch/x86/x86_64/compat/entry.S b/xen/arch/x86/x86_64/compat/entry.S
> index 4fbd89cea1a9..1e9e0455eaf3 100644
> --- a/xen/arch/x86/x86_64/compat/entry.S
> +++ b/xen/arch/x86/x86_64/compat/entry.S
> @@ -41,7 +41,7 @@ FUNC(compat_test_all_events)
>          shll  $IRQSTAT_shift,%eax
>          leaq  irq_stat+IRQSTAT_softirq_pending(%rip),%rcx
>          cmpl  $0,(%rcx,%rax,1)
> -        jne   compat_process_softirqs
> +        jne   .L_compat_process_softirqs
>  
>          /* Inject exception if pending. */
>          lea   VCPU_trap_bounce(%rbx), %rdx
> @@ -49,11 +49,11 @@ FUNC(compat_test_all_events)
>          jnz   .Lcompat_process_trapbounce
>  
>          cmpb  $0, VCPU_mce_pending(%rbx)
> -        jne   compat_process_mce
> +        jne   .L_compat_process_mce
>  .Lcompat_test_guest_nmi:
>          cmpb  $0, VCPU_nmi_pending(%rbx)
> -        jne   compat_process_nmi
> -compat_test_guest_events:
> +        jne   .L_compat_process_nmi
> +.L_compat_test_guest_events:
>          movq  VCPU_vcpu_info(%rbx),%rax
>          movzwl COMPAT_VCPUINFO_upcall_pending(%rax),%eax
>          decl  %eax
> @@ -71,7 +71,7 @@ compat_test_guest_events:
>          jmp   compat_test_all_events
>  
>  /* %rbx: struct vcpu */
> -LABEL_LOCAL(compat_process_softirqs)
> +LABEL_LOCAL(.L_compat_process_softirqs)
>          sti
>          call  do_softirq
>          jmp   compat_test_all_events
> @@ -84,7 +84,7 @@ LABEL_LOCAL(.Lcompat_process_trapbounce)
>          jmp   compat_test_all_events
>  
>  /* %rbx: struct vcpu */
> -LABEL_LOCAL(compat_process_mce)
> +LABEL_LOCAL(.L_compat_process_mce)
>          testb $1 << VCPU_TRAP_MCE,VCPU_async_exception_mask(%rbx)
>          jnz   .Lcompat_test_guest_nmi
>          sti
> @@ -96,12 +96,12 @@ LABEL_LOCAL(compat_process_mce)
>          movb %dl,VCPU_mce_old_mask(%rbx)            # iret hypercall
>          orl  $1 << VCPU_TRAP_MCE,%edx
>          movb %dl,VCPU_async_exception_mask(%rbx)
> -        jmp   compat_process_trap
> +        jmp   .L_compat_process_trap
>  
>  /* %rbx: struct vcpu */
> -LABEL_LOCAL(compat_process_nmi)
> +LABEL_LOCAL(.L_compat_process_nmi)
>          testb $1 << VCPU_TRAP_NMI,VCPU_async_exception_mask(%rbx)
> -        jnz   compat_test_guest_events
> +        jnz   .L_compat_test_guest_events
>          sti
>          movb  $0, VCPU_nmi_pending(%rbx)
>          call  set_guest_nmi_trapbounce
> @@ -112,7 +112,7 @@ LABEL_LOCAL(compat_process_nmi)
>          orl  $1 << VCPU_TRAP_NMI,%edx
>          movb %dl,VCPU_async_exception_mask(%rbx)
>          /* FALLTHROUGH */
> -compat_process_trap:
> +.L_compat_process_trap:
>          leaq  VCPU_trap_bounce(%rbx),%rdx
>          call  compat_create_bounce_frame
>          jmp   compat_test_all_events
> diff --git a/xen/arch/x86/x86_64/entry.S b/xen/arch/x86/x86_64/entry.S
> index fc64ef1fd460..130462ba0e1a 100644
> --- a/xen/arch/x86/x86_64/entry.S
> +++ b/xen/arch/x86/x86_64/entry.S
> @@ -188,7 +188,7 @@ FUNC_LOCAL(restore_all_guest)
>  
>          RESTORE_ALL
>          testw $TRAP_syscall,4(%rsp)
> -        jz    iret_exit_to_guest
> +        jz    .L_iret_exit_to_guest
>  
>          movq  24(%rsp),%r11           # RFLAGS
>          andq  $~(X86_EFLAGS_IOPL | X86_EFLAGS_VM), %r11
> @@ -220,7 +220,7 @@ FUNC_LOCAL(restore_all_guest)
>  LABEL_LOCAL(.Lrestore_rcx_iret_exit_to_guest)
>          movq  8(%rsp), %rcx           # RIP
>  /* No special register assumptions. */
> -iret_exit_to_guest:
> +.L_iret_exit_to_guest:
>          andl  $~(X86_EFLAGS_IOPL | X86_EFLAGS_VM), 24(%rsp)
>          orl   $X86_EFLAGS_IF,24(%rsp)
>          addq  $8,%rsp
> @@ -432,10 +432,10 @@ UNLIKELY_END(msi_check)
>          cmove %rdi, %rdx
>  
>          test  %rdx, %rdx
> -        jz    int80_slow_path
> +        jz    .L_int80_slow_path
>  #else
>          test  %rdi, %rdi
> -        jz    int80_slow_path
> +        jz    .L_int80_slow_path
>  #endif
>  
>          /* Construct trap_bounce from trap_ctxt[0x80]. */
> @@ -457,7 +457,7 @@ UNLIKELY_END(msi_check)
>          call  create_bounce_frame
>          jmp   test_all_events
>  
> -int80_slow_path:
> +.L_int80_slow_path:
>          /* 
>           * Setup entry vector and error code as if this was a GPF caused by an
>           * IDT entry with DPL==0.
> @@ -472,7 +472,7 @@ int80_slow_path:
>           * need to set up %r14 here, while %r15 is required to still be zero.
>           */
>          GET_STACK_END(14)
> -        jmp   handle_exception_saved
> +        jmp   .L_handle_exception_saved

This one is IMO problematic, as you are jumping from function symbol
entry_int80 into handle_exception.  Any livepatch that modifies
handle_exception will quite likely break that jump, as the jump won't
be relocated to point at the new position of the local label inside of
the new handle_exception text.

handle_exception needs further work in order to be livepatched, and
making handle_exception_saved local makes it looks like it's safe to
patch, while it's not.

We need to split handle_exception_saved into a separate function, so
it has it's own section, as long as it's referenced from other
functions.

Thanks, Roger.


From xen-devel-bounces@lists.xenproject.org Wed Jan 24 09:22:52 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 24 Jan 2024 09:22:52 +0000
Received: from list by lists.xenproject.org with outflank-mailman.670833.1043877 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSZT8-0006rR-Cm; Wed, 24 Jan 2024 09:22:50 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 670833.1043877; Wed, 24 Jan 2024 09:22:50 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSZT8-0006rK-9q; Wed, 24 Jan 2024 09:22:50 +0000
Received: by outflank-mailman (input) for mailman id 670833;
 Wed, 24 Jan 2024 09:22:49 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=V3ap=JC=cloud.com=roger.pau@srs-se1.protection.inumbo.net>)
 id 1rSZT7-0006rC-MK
 for xen-devel@lists.xenproject.org; Wed, 24 Jan 2024 09:22:49 +0000
Received: from mail-lf1-x129.google.com (mail-lf1-x129.google.com
 [2a00:1450:4864:20::129])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 23a2b365-ba9a-11ee-98f5-6d05b1d4d9a1;
 Wed, 24 Jan 2024 10:22:48 +0100 (CET)
Received: by mail-lf1-x129.google.com with SMTP id
 2adb3069b0e04-50e766937ddso6206330e87.3
 for <xen-devel@lists.xenproject.org>; Wed, 24 Jan 2024 01:22:48 -0800 (PST)
Received: from localhost ([213.195.118.74]) by smtp.gmail.com with ESMTPSA id
 ef5-20020a05640228c500b00557d839727esm16290583edb.7.2024.01.24.01.22.47
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 24 Jan 2024 01:22:47 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 23a2b365-ba9a-11ee-98f5-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1706088167; x=1706692967; darn=lists.xenproject.org;
        h=in-reply-to:content-transfer-encoding:content-disposition
         :mime-version:references:message-id:subject:cc:to:from:date:from:to
         :cc:subject:date:message-id:reply-to;
        bh=shxK/mjfxX+fUVfht29zbiJG7ZSk3Mn0kuammqyAbD8=;
        b=qUUT34pRGr3I/eDs7RzWydvc/sqL424epF/A3Q119BxzfKj8a391egj7gFSIX3Z9Ep
         RIf211dBT+3LY8yBG47Dv7iceAVejVtsmKsVQQCganMvearKpwuOldegg3VBk1xypLyV
         MBYNYxEXRgXzFvjANXoLcBUbY7NYIPZQ/AGA0=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706088167; x=1706692967;
        h=in-reply-to:content-transfer-encoding:content-disposition
         :mime-version:references:message-id:subject:cc:to:from:date
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=shxK/mjfxX+fUVfht29zbiJG7ZSk3Mn0kuammqyAbD8=;
        b=bpmWO6bIqQSnqjY2+7NmJvi2Ci+6ILoBmfkvtlKXHj1CqbRkBtm6NF2cMtv+kHcvTu
         uVIT0bT41RAVdomgbAFHhGu85VJJhSdhwzsRx+LQy6vZbdprPSLCzbKhk0LqIERKfnye
         oWvNVesGaZREzId95r9TJNlZ6+TbXFBMD/L9ns9qIJ8Nai+hkN3m+RGe9/WWu7IstShR
         lJ/W/3z2XME7nQdHQ2R9VTAbgHX8zRQjvhun79nxoeYFJ4yPmgyym2GmroF9yaULy2ki
         ZB1hpln3gKDj/Ao8mNWB/Dwj9zg8Sa23cKO9R6oXHdpkwv1u9vDOOAkrf5ZmuvWC7LcG
         dH4w==
X-Gm-Message-State: AOJu0YwCR7ZMHZ6v0NbXLiAIbLSoQx24AOKrqvNDHFcOft/FIZSp3m8H
	+FDQyeXwE02gnjedlyKLJzaEPOqfo+RqW+1yLdbqbE4FpbNQmojFIw1NWWAvndw=
X-Google-Smtp-Source: AGHT+IGIatMlXAIT9wtFN4TVKhyxS8oAmqGfVN2/qMY8nODju2VQwelodI3MBQqSNPKI+RmLV0f68g==
X-Received: by 2002:a19:7405:0:b0:50f:152b:48a9 with SMTP id v5-20020a197405000000b0050f152b48a9mr2744170lfe.122.1706088167663;
        Wed, 24 Jan 2024 01:22:47 -0800 (PST)
Date: Wed, 24 Jan 2024 10:22:46 +0100
From: Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
To: Jan Beulich <jbeulich@suse.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, Wei Liu <wl@xen.org>,
	Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>,
	Ross Lagerwall <ross.lagerwall@citrix.com>,
	Xen-devel <xen-devel@lists.xenproject.org>
Subject: Re: [PATCH 2/3] x86/entry: Make #PF/NMI/INT0x82 more amenable to
 livepatching
Message-ID: <ZbDW5nCuHW7xCYOo@macbook>
References: <20240122181714.1543738-1-andrew.cooper3@citrix.com>
 <20240122181714.1543738-3-andrew.cooper3@citrix.com>
 <0edeb969-6fef-46f4-b216-0858edbaefa6@suse.com>
 <Za_BF_wr0qWH5eKC@macbook>
 <ebdfc495-b8bc-4468-8b41-d5fdb2a85adb@suse.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <ebdfc495-b8bc-4468-8b41-d5fdb2a85adb@suse.com>

On Tue, Jan 23, 2024 at 02:43:15PM +0100, Jan Beulich wrote:
> On 23.01.2024 14:37, Roger Pau Monné wrote:
> > On Tue, Jan 23, 2024 at 10:22:10AM +0100, Jan Beulich wrote:
> >> On 22.01.2024 19:17, Andrew Cooper wrote:
> >>> It is bad form to have inter-function fallthrough.  It only functions right
> >>> now because alignment padding bytes are NOPs.
> >>
> >> But that's a requirement anyway in executable sections.
> > 
> > Really?  I was under the impression we wanted to replace the padding
> > nops with rets maybe, or even poison the padding with int3 or ud2.
> 
> Well, that would be a decision of ours. Which then imo can't be described as
> "only functions right now because ..." The assembler can't[1] use other than
> NOPs by default, as it can't know whether fall-through is intended.

So it's not a strict requirement of ELF that padding is done using
nops, it's just the default decision of the assembler because it
doesn't know better.

Thanks, Roger.


From xen-devel-bounces@lists.xenproject.org Wed Jan 24 09:23:18 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 24 Jan 2024 09:23:18 +0000
Received: from list by lists.xenproject.org with outflank-mailman.670835.1043887 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSZTa-0007Ly-KU; Wed, 24 Jan 2024 09:23:18 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 670835.1043887; Wed, 24 Jan 2024 09:23:18 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSZTa-0007Lr-Hf; Wed, 24 Jan 2024 09:23:18 +0000
Received: by outflank-mailman (input) for mailman id 670835;
 Wed, 24 Jan 2024 09:23:17 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=k9jB=JC=gmail.com=oleksii.kurochko@srs-se1.protection.inumbo.net>)
 id 1rSZTZ-0007AZ-6z
 for xen-devel@lists.xenproject.org; Wed, 24 Jan 2024 09:23:17 +0000
Received: from mail-ej1-x62c.google.com (mail-ej1-x62c.google.com
 [2a00:1450:4864:20::62c])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 33f177ec-ba9a-11ee-9b0f-b553b5be7939;
 Wed, 24 Jan 2024 10:23:15 +0100 (CET)
Received: by mail-ej1-x62c.google.com with SMTP id
 a640c23a62f3a-a310f4b3597so45614966b.3
 for <xen-devel@lists.xenproject.org>; Wed, 24 Jan 2024 01:23:15 -0800 (PST)
Received: from [192.168.206.239] ([94.75.70.14])
 by smtp.gmail.com with ESMTPSA id
 hy7-20020a1709068a6700b00a280944f775sm15232251ejc.153.2024.01.24.01.23.13
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 24 Jan 2024 01:23:14 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 33f177ec-ba9a-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1706088195; x=1706692995; darn=lists.xenproject.org;
        h=mime-version:user-agent:content-transfer-encoding:references
         :in-reply-to:date:cc:to:from:subject:message-id:from:to:cc:subject
         :date:message-id:reply-to;
        bh=q2iakNn+EEOiV5rOhMK/NZwK16rBRN56Kv/2r6MIdvM=;
        b=Qy/ci3YC6fjXSNRPnMbwELccad3+DRvhrt4obXfvPC7pz5Qyo/Hdc47weCHPnFihTi
         R3TOXD0JyJjHFHpejPXiyqAbPc8CX3BztpqZy2h3FQ1SyHiQrRtxMsIp4F6FWtqjOY/P
         m14clqsCAa1Tr1GlsZL8LrtkHZyjWqUYFyUGeAv8gNL80rrMGMfrQa39TCvBZ4H8EfqJ
         WoDieX8vRwro+G5FjUl67lDaJFSArf81tZTZ0OEaU3Zy6foD/Q+EgFdK016mhnQyFd7o
         CyaxM2GQwR+qznAtu51iL0TJrOghCb5HHCwVS+dxJG8Y/kdTAXhPaqQRDWHLrYmWGu9f
         9cmA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706088195; x=1706692995;
        h=mime-version:user-agent:content-transfer-encoding:references
         :in-reply-to:date:cc:to:from:subject:message-id:x-gm-message-state
         :from:to:cc:subject:date:message-id:reply-to;
        bh=q2iakNn+EEOiV5rOhMK/NZwK16rBRN56Kv/2r6MIdvM=;
        b=HuEDVeaDC75J3DG8dKuzvbLQHMLWrA+C5yQLaUTvphf+Di9xMNM02yBDDMbQ311AZQ
         nI4Nj4MtzgIJIuPPWjDypR4rLIBJ9o7I3j6gtaTdFNm+Rs2XyvzB9HzAFS/OEFeq311S
         lTZjo2hvOmzF2qEgxQCcC+LjVW1MqQMErLU5HeMvADBGHbeu/MJZK6AVtK7IjGA3j9kd
         YulwOJLVcvOTvcIwq8WsXuJAoAPa9vop14Gqlqj69djHkT9DOYjPG6lWjKnVVN22Bg16
         T+gTvlMB2q9mqmC08bspZBk4avBo8kkm6X108JV9oaqwirUbdKbvsxGQPGvi5jQmlQAL
         SNOg==
X-Gm-Message-State: AOJu0Ywm0RJUg1T9RYJqrv2lyxNh/1zYY7hRhVKSCWJa6b0QInDIuMH5
	H9REjYv/eCHVBtVJMHZcJjUSu7dtczByF2iccQlJh1G3W7sDcEsb
X-Google-Smtp-Source: AGHT+IH0OaQwllYiup9B7T8Xnl3urN8fel4PAc4WEJjXtu1sOLGUIuSl/lN8UqPmxDKzUVsYNlXD+g==
X-Received: by 2002:a17:906:57ce:b0:a30:d4f2:1603 with SMTP id u14-20020a17090657ce00b00a30d4f21603mr735516ejr.15.1706088194692;
        Wed, 24 Jan 2024 01:23:14 -0800 (PST)
Message-ID: <b0c23db4b8162e5859347a582b43050c1601c10b.camel@gmail.com>
Subject: Re: [PATCH v3 15/34] xen/riscv: introduce atomic.h
From: Oleksii <oleksii.kurochko@gmail.com>
To: Jan Beulich <jbeulich@suse.com>
Cc: Bobby Eshleman <bobbyeshleman@gmail.com>, Alistair Francis
 <alistair.francis@wdc.com>, Connor Davis <connojdavis@gmail.com>, Andrew
 Cooper <andrew.cooper3@citrix.com>, George Dunlap
 <george.dunlap@citrix.com>,  Julien Grall <julien@xen.org>, Stefano
 Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>, 
 xen-devel@lists.xenproject.org
Date: Wed, 24 Jan 2024 11:23:13 +0200
In-Reply-To: <d33fe182-8283-4552-bc0e-3eac90f20d31@suse.com>
References: <cover.1703255175.git.oleksii.kurochko@gmail.com>
	 <54f5f13a4ee3de3c3cf4ba2b4d0347bb77bb7d08.1703255175.git.oleksii.kurochko@gmail.com>
	 <2429395f-3ce8-4f17-aabe-78af2446ff6d@suse.com>
	 <92d7caf20a37b68dce7676812c2780bc2fbc00cf.camel@gmail.com>
	 <6aa39fac-fef6-47ce-8c27-4941d83c138a@suse.com>
	 <d7f89e6f4aae5c8cfa5215bd893b62a3d542ce4c.camel@gmail.com>
	 <d33fe182-8283-4552-bc0e-3eac90f20d31@suse.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
User-Agent: Evolution 3.50.2 (3.50.2-1.fc39) 
MIME-Version: 1.0

On Tue, 2024-01-23 at 14:30 +0100, Jan Beulich wrote:
> On 23.01.2024 13:24, Oleksii wrote:
> > On Tue, 2024-01-23 at 11:30 +0100, Jan Beulich wrote:
> > > On 23.01.2024 11:21, Oleksii wrote:
> > > > On Mon, 2024-01-22 at 17:56 +0100, Jan Beulich wrote:
> > > > > On 22.12.2023 16:12, Oleksii Kurochko wrote:
> > > > > > --- /dev/null
> > > > > > +++ b/xen/arch/riscv/include/asm/fence.h
> > > > > > @@ -0,0 +1,13 @@
> > > > > > +/* SPDX-License-Identifier: GPL-2.0-or-later */
> > > > > > +#ifndef _ASM_RISCV_FENCE_H
> > > > > > +#define _ASM_RISCV_FENCE_H
> > > > > > +
> > > > > > +#ifdef CONFIG_SMP
> > > > > > +#define RISCV_ACQUIRE_BARRIER		"\tfence r , rw\n"
> > > > > > +#define RISCV_RELEASE_BARRIER		"\tfence rw,=C2=A0 w\n"
> > > > > > +#else
> > > > > > +#define RISCV_ACQUIRE_BARRIER
> > > > > > +#define RISCV_RELEASE_BARRIER
> > > > > > +#endif
> > > > >=20
> > > > > Do you really care about the !SMP case? On x86 at least we
> > > > > stopped
> > > > > special-
> > > > > casing that configuration many years ago (the few cases where
> > > > > for
> > > > > typically
> > > > > build reasons it matters, using CONFIG_NR_CPUS is
> > > > > sufficient). If
> > > > > you
> > > > > care
> > > > > about it, there needs to be somewhere you actually #define
> > > > > CONFIG_SMP.
> > > > Can't we use instead of CONFIG_SMP - CONFIG_NR_CPUS?
> > >=20
> > > You can. Question is whether there's a point in doing so. Do you
> > > expect people to actually want to run Xen on single-CPU systems?
> > > They're generally not overly well suited for virtualization ...
> > Just to clarify.
> >=20
> > Do you mean physically single based CPU?
> > Then I don't expect to run Xen on such systems and it is not
> > nesessary
> > to define *_BARRIER in this case. Should we have to add build error
> > notification that we don't support single-CPU systems in this
> > header?
> >=20
> > If you are speaking about we have ,let it be, 4 CPUs and only 1 CPU
> > is
> > currently supported by Xen then it still makes sense.
>=20
> No, that's still not what I mean. The question is: Is it useful for
> you
> to _special case_ the NR_CPUS=3D1 case? Or is it instead simpler to
> handle
> NR_CPUS=3D1 the same as NR_CPUS>1 (accepting less than ideal
> performance,
> on the basis that in reality nobody's expected to use such in
> production
> anyway)?
NR_CPUS=3D1 sometimes is useful for debugging. At least, at the start I
used that several times, but ITBO I don't remember when I used that
case after SMP support was added and context_switch() was fixed.

Probably, I misunderstand the real idea of NR_CPUS. Does NR_CPUS
represent a number of logical CPUs which can be different from physical
amount of CPU?
If yes, then what I wrote above it was about physical CPU and then in
context of logical CPUs I don't need a special case when NR_CPUS=3D1.

~ Oleksii



From xen-devel-bounces@lists.xenproject.org Wed Jan 24 09:25:04 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 24 Jan 2024 09:25:04 +0000
Received: from list by lists.xenproject.org with outflank-mailman.670840.1043897 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSZV4-0007zd-W7; Wed, 24 Jan 2024 09:24:50 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 670840.1043897; Wed, 24 Jan 2024 09:24:50 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSZV4-0007zU-SW; Wed, 24 Jan 2024 09:24:50 +0000
Received: by outflank-mailman (input) for mailman id 670840;
 Wed, 24 Jan 2024 09:24:50 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=V3ap=JC=cloud.com=roger.pau@srs-se1.protection.inumbo.net>)
 id 1rSZV3-0007zH-Uo
 for xen-devel@lists.xenproject.org; Wed, 24 Jan 2024 09:24:49 +0000
Received: from mail-ej1-x62a.google.com (mail-ej1-x62a.google.com
 [2a00:1450:4864:20::62a])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 6bae4eb4-ba9a-11ee-98f5-6d05b1d4d9a1;
 Wed, 24 Jan 2024 10:24:49 +0100 (CET)
Received: by mail-ej1-x62a.google.com with SMTP id
 a640c23a62f3a-a2dc7827a97so577998566b.2
 for <xen-devel@lists.xenproject.org>; Wed, 24 Jan 2024 01:24:49 -0800 (PST)
Received: from localhost ([213.195.118.74]) by smtp.gmail.com with ESMTPSA id
 c3-20020a17090654c300b00a2a2426728bsm15379886ejp.178.2024.01.24.01.24.48
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 24 Jan 2024 01:24:48 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 6bae4eb4-ba9a-11ee-98f5-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1706088288; x=1706693088; darn=lists.xenproject.org;
        h=in-reply-to:content-transfer-encoding:content-disposition
         :mime-version:references:message-id:subject:cc:to:from:date:from:to
         :cc:subject:date:message-id:reply-to;
        bh=V4EwUoOZBbZsvLoA6UXEk6Wj7UQEbhyHy+fuu11Fi7A=;
        b=O2JnU1fwQeSUbjsGzGYJQg36Fb3M/oSzhKVqFoWxcLwPmJoGahX1PVwhRW+4VWHWQw
         W0+lSukOOd2pMEuupaqHrjp1gpwkDeNmdM41UHxM1bgEsfCVLkw5RAJvA1zexXOE2BFV
         0w6CJ8m4yfDDyokMwBctoPjfMKh2rrFqPBSXM=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706088288; x=1706693088;
        h=in-reply-to:content-transfer-encoding:content-disposition
         :mime-version:references:message-id:subject:cc:to:from:date
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=V4EwUoOZBbZsvLoA6UXEk6Wj7UQEbhyHy+fuu11Fi7A=;
        b=khT0VWtQtfQ7r5lusa+CP/SHKU4+oxtglRUOqDadE7pWJkWiaHT15B0YUITG17KPvA
         Wk2rQWOwfiKvyWwXn4Jo2fQpUbs1Izln/bo1JLTJi2jubhewB5G0lwzx5MKNkBnRQjD2
         ceAX2dZOXpvqtlZHmMbEPKAdUuUZ8qK/rtRnTbrCZO9QntFKX+6DhcyrlVrH5BaXjiIl
         OhkAq4IJif6AEGYy8LF5V3zka03av49MLqde2MbkOJtEAxuQhtarjaQvCiDIC8s14Pei
         Skf2STbE3g2TVVWrQWk5l8cIdwOoe/IABb9NrNzstJarmrRAV247TzzCrAliTcChz0Fm
         Ly6Q==
X-Gm-Message-State: AOJu0YxpBumz8s8prC40HRlFAiaxfmjKnO06gxNrDjgp+2eZt9hnvwmm
	YOVE9qS4EhYvZFF8QbYI8oeP9DTmd0LbuMS/Z3LEwXIIw30RIAF1tUYbNMY/XHs=
X-Google-Smtp-Source: AGHT+IG1vDeZ++GJaS0LfVwQt0h7tKWomTY+/CT2b92EEpDlL4zJFnBWj8It7Ej/cv4yym8EOjO3TQ==
X-Received: by 2002:a17:906:f8d4:b0:a2e:70b4:28b0 with SMTP id lh20-20020a170906f8d400b00a2e70b428b0mr627726ejb.3.1706088288593;
        Wed, 24 Jan 2024 01:24:48 -0800 (PST)
Date: Wed, 24 Jan 2024 10:24:47 +0100
From: Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
To: Jan Beulich <jbeulich@suse.com>
Cc: Stewart Hildebrand <stewart.hildebrand@amd.com>,
	Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>, Wei Liu <wl@xen.org>,
	George Dunlap <george.dunlap@citrix.com>,
	Julien Grall <julien@xen.org>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Jun Nakajima <jun.nakajima@intel.com>,
	Kevin Tian <kevin.tian@intel.com>, Paul Durrant <paul@xen.org>,
	Volodymyr Babchuk <volodymyr_babchuk@epam.com>,
	xen-devel@lists.xenproject.org
Subject: Re: [PATCH v12.2 01/15] vpci: use per-domain PCI lock to protect
 vpci structure
Message-ID: <ZbDXXyucJhLJ4u9H@macbook>
References: <20240109215145.430207-1-stewart.hildebrand@amd.com>
 <20240109215145.430207-2-stewart.hildebrand@amd.com>
 <20240115194309.45683-1-stewart.hildebrand@amd.com>
 <715e40c9-1776-4677-9565-dac1565a2aa8@suse.com>
 <Za_WGzS14Eqt8yZF@macbook>
 <ae7a57f2-2433-4b75-ab45-c8be55d489c9@suse.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <ae7a57f2-2433-4b75-ab45-c8be55d489c9@suse.com>

On Wed, Jan 24, 2024 at 09:48:35AM +0100, Jan Beulich wrote:
> On 23.01.2024 16:07, Roger Pau Monné wrote:
> > On Tue, Jan 23, 2024 at 03:32:12PM +0100, Jan Beulich wrote:
> >> On 15.01.2024 20:43, Stewart Hildebrand wrote:
> >>> @@ -2888,6 +2888,8 @@ int allocate_and_map_msi_pirq(struct domain *d, int index, int *pirq_p,
> >>>  {
> >>>      int irq, pirq, ret;
> >>>  
> >>> +    ASSERT(pcidevs_locked() || rw_is_locked(&d->pci_lock));
> >>
> >> If either lock is sufficient to hold here, ...
> >>
> >>> --- a/xen/arch/x86/physdev.c
> >>> +++ b/xen/arch/x86/physdev.c
> >>> @@ -123,7 +123,9 @@ int physdev_map_pirq(domid_t domid, int type, int *index, int *pirq_p,
> >>>  
> >>>      case MAP_PIRQ_TYPE_MSI:
> >>>      case MAP_PIRQ_TYPE_MULTI_MSI:
> >>> +        pcidevs_lock();
> >>>          ret = allocate_and_map_msi_pirq(d, *index, pirq_p, type, msi);
> >>> +        pcidevs_unlock();
> >>>          break;
> >>
> > 
> > IIRC (Stewart can further comment) this is done holding the pcidevs
> > lock to keep the path unmodified, as there's no need to hold the
> > per-domain rwlock.
> 
> Yet why would we prefer to acquire a global lock when a per-domain one
> suffices?

I was hoping to introduce less changes, specially if they are not
strictly required, as it's less risk.  I'm always quite worry of
locking changes.

Thanks, Roger.


From xen-devel-bounces@lists.xenproject.org Wed Jan 24 09:34:18 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 24 Jan 2024 09:34:18 +0000
Received: from list by lists.xenproject.org with outflank-mailman.670850.1043907 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSZe7-0002u8-Qf; Wed, 24 Jan 2024 09:34:11 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 670850.1043907; Wed, 24 Jan 2024 09:34:11 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSZe7-0002u1-Np; Wed, 24 Jan 2024 09:34:11 +0000
Received: by outflank-mailman (input) for mailman id 670850;
 Wed, 24 Jan 2024 09:34:10 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=k9jB=JC=gmail.com=oleksii.kurochko@srs-se1.protection.inumbo.net>)
 id 1rSZe6-0002ts-Ju
 for xen-devel@lists.xenproject.org; Wed, 24 Jan 2024 09:34:10 +0000
Received: from mail-lf1-x135.google.com (mail-lf1-x135.google.com
 [2a00:1450:4864:20::135])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id b9c6265e-ba9b-11ee-98f5-6d05b1d4d9a1;
 Wed, 24 Jan 2024 10:34:09 +0100 (CET)
Received: by mail-lf1-x135.google.com with SMTP id
 2adb3069b0e04-510133ed214so305811e87.1
 for <xen-devel@lists.xenproject.org>; Wed, 24 Jan 2024 01:34:09 -0800 (PST)
Received: from [192.168.206.239] ([94.75.70.14])
 by smtp.gmail.com with ESMTPSA id
 h12-20020a0564020e8c00b00557aa8d72c9sm16167140eda.25.2024.01.24.01.34.07
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 24 Jan 2024 01:34:08 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: b9c6265e-ba9b-11ee-98f5-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1706088849; x=1706693649; darn=lists.xenproject.org;
        h=mime-version:user-agent:content-transfer-encoding:references
         :in-reply-to:date:cc:to:from:subject:message-id:from:to:cc:subject
         :date:message-id:reply-to;
        bh=UzfRtJKxBWFrwkUQPlxfRl0S//YXEUIvD8RXNlzy1hk=;
        b=UE1+9lMGvsnqodXSnbCzOTWmLkN6ErQvLB8WAHp4KZjFsjy4ShReLMFLFnzGVmdJIa
         JgsUGZJ3FTqjHLXNE+HR2ppeGxM94Sp3WXhGDZkVyIJLo/iC5aD1EJe/WWg5WKYPSslq
         FVc0JYT2dyfpJsAu/ppGYlOoLXe6rpUW4yeU444oV4r6HmlUA/yBMyPPm9BCtOqP46W1
         hV/vROZRvrEYuxLVnVj7YIq8kaoQYxRRe9OD/wvTfS7qczW9nZXNW6EqQq8BgV7dyMFS
         TGn8lStfBiRJ2PJV4L4jlNZP+gPsPzc00bXafBDWKATZy7rYReWHPhx7DPlSOFk3SSar
         tmZg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706088849; x=1706693649;
        h=mime-version:user-agent:content-transfer-encoding:references
         :in-reply-to:date:cc:to:from:subject:message-id:x-gm-message-state
         :from:to:cc:subject:date:message-id:reply-to;
        bh=UzfRtJKxBWFrwkUQPlxfRl0S//YXEUIvD8RXNlzy1hk=;
        b=V1sV5DiUfzH8vyb66GIljLy/6znymHiR9xwzTwaVvLIyp7z8J3f/w/0jK8no0Oj6bk
         58EhIHKX/6QPPV4g/yFFi/4OrMSTdEFvE/J7ApIS2lWvqxs+rvoYZs5lNwjnYdPnM+vP
         BRm158woK2Sg60VuMWCxrfAW1h929DZzNyJubPA8s0yiqQkGxkJfAn7Q8U/eHWb+dR1Y
         6tViWZRgOaTYQibCS62iqYLhia0UxG3XXt7k1yQDUUrZSdA1ULhZRJ9PHl8B64FGk30b
         jmv4sWfPQR+F6zx5vq9h9N+HgtXHeU4wA8uK14+0aM3TxMEsn6JHdazifOCC71kFwFY+
         3R1g==
X-Gm-Message-State: AOJu0YxFE15gNQn7mQUC0duCCS9MRK8S3xtdy+mmJemKs9d4ZorIyFr1
	T4Ji1qoJgo++fkxj35Nn02AozenQ8fDXY6rVbVPh440Tf2GpMMiO
X-Google-Smtp-Source: AGHT+IEPZhHAUxhu2MAXxAn8Jc/Xtm9Zat35sWOpXWnm4qNL68kOxMCp4aAaQsLSWTDjSXsSieEgsw==
X-Received: by 2002:a05:6512:2206:b0:50e:3fbc:7c12 with SMTP id h6-20020a056512220600b0050e3fbc7c12mr3635733lfu.126.1706088848779;
        Wed, 24 Jan 2024 01:34:08 -0800 (PST)
Message-ID: <2974faee197b0a60d6e7ac54356639706c2ecb43.camel@gmail.com>
Subject: Re: [PATCH v3 16/34] xen/lib: introduce generic find next bit
 operations
From: Oleksii <oleksii.kurochko@gmail.com>
To: Jan Beulich <jbeulich@suse.com>
Cc: Alistair Francis <alistair.francis@wdc.com>, Bob Eshleman
 <bobbyeshleman@gmail.com>, Connor Davis <connojdavis@gmail.com>, Andrew
 Cooper <andrew.cooper3@citrix.com>, George Dunlap
 <george.dunlap@citrix.com>,  Julien Grall <julien@xen.org>, Stefano
 Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>, 
 xen-devel@lists.xenproject.org
Date: Wed, 24 Jan 2024 11:34:07 +0200
In-Reply-To: <8e60f998-aeb4-4648-a3e9-d083bb8eefde@suse.com>
References: <cover.1703255175.git.oleksii.kurochko@gmail.com>
	 <bb47caf6c275d8aea307b96e79828831eab4a703.1703255175.git.oleksii.kurochko@gmail.com>
	 <81e5cac4-90f0-4fff-b891-53ca73c61832@suse.com>
	 <05d685b0b7ccd329454a336b20351979bdf91ea4.camel@gmail.com>
	 <8e60f998-aeb4-4648-a3e9-d083bb8eefde@suse.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
User-Agent: Evolution 3.50.2 (3.50.2-1.fc39) 
MIME-Version: 1.0

On Tue, 2024-01-23 at 14:37 +0100, Jan Beulich wrote:
> On 23.01.2024 13:34, Oleksii wrote:
> > On Tue, 2024-01-23 at 12:14 +0100, Jan Beulich wrote:
> > > On 22.12.2023 16:13, Oleksii Kurochko wrote:
> > > > --- a/xen/common/Kconfig
> > > > +++ b/xen/common/Kconfig
> > > > @@ -47,6 +47,9 @@ config ARCH_MAP_DOMAIN_PAGE
> > > > =C2=A0config GENERIC_BUG_FRAME
> > > > =C2=A0	bool
> > > > =C2=A0
> > > > +config GENERIC_FIND_NEXT_BIT
> > > > +	bool
> > >=20
> > > There's no need for this, as ...
> > >=20
> > > > --- a/xen/lib/Makefile
> > > > +++ b/xen/lib/Makefile
> > > > @@ -3,6 +3,7 @@ obj-$(CONFIG_X86) +=3D x86/
> > > > =C2=A0lib-y +=3D bsearch.o
> > > > =C2=A0lib-y +=3D ctors.o
> > > > =C2=A0lib-y +=3D ctype.o
> > > > +lib-$(CONFIG_GENERIC_FIND_NEXT_BIT) +=3D find-next-bit.o
> > >=20
> > > ... you're moving this to lib/. Or have you encountered any issue
> > > with building this uniformly, and you forgot to mention this in
> > > the description?
> > I didn't check. My intention was to provide opportunity to check if
> > an
> > architecture want to use generic version or not. Otherwise, I
> > expected
> > that we will have multiple definiotion of the funcion.
> >=20
> > But considering that they are all defined under #ifdef...#endif we
> > can
> > remove the declaration of the config GENERIC_FIND_NEXT_BIT.
>=20
> What #ifdef / #endif would matter here? Whats in lib/ is intended to
> be
> generic anyway. And what is in the resulting lib.a won't be used by
> an
> arch if it has an arch-specific implementation.=C2=A0
If what is implemented in lib.a won't be used by an arch if it has an
arch-specific implementation then, for sure, I have to drop
CONFIG_GENERIC_FIND_NEXT_BIT.
But I am not really understand if lib.a is linked with Xen, then it
should be an issue then if some arch implement find-next-bit function
we will have to multiple definitions ( one in lib.a and one arch
specific ). Probably, I have to look at how it is done.

> Problems could arise if
> an arch had an inline function colliding with the out-of-line one.
> But
> that's about the old case where I could see a need to make the
> building
> of one of the objects conditional. And you'll note that withing this
> Makefile there are pretty few conditionals.
Could you please clarify What does it mean "out-of-line" ?
>=20
> > > > --- /dev/null
> > > > +++ b/xen/lib/find-next-bit.c
> > > > [...]
> > >=20
> > > I was going to ask that you convince git to actually present a
> > > proper
> > > diff, to make visible what changes. But other than the
> > > description
> > > says
> > > you don't really move the file, you copy it. Judging from further
> > > titles
> > > there's also nowhere you'd make Arm actually use this now generic
> > > code.
> > I wanted to do it separately, outside this patch series to simplify
> > review and not have Arm specific changes in RISC-V patch series.
>=20
> Then do it the other way around: Make a separate _prereq_ change
> truly
> moving the file.
So this one patch should be separated by 2? One which moves find-next-
bit.c from Arm to xen/lib, and second where xen/lib/Makefile is
updated.

>=20
> > Regarding a proper diff, you would like me to make git shows that
> > it
> > was copy from Arm and it is not newly created file. Am I understand
> > you
> > correctly?
>=20
> Not quite, I think. Git has move detection (and we've seen that in
> action in other patches of yours). So when truly moving a file, what
> (if anything) is changed is easily visible.
I think I am still a little bit confused. But I think the answer on my
question above can clarify that.

~ Oleksii


From xen-devel-bounces@lists.xenproject.org Wed Jan 24 09:39:27 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 24 Jan 2024 09:39:27 +0000
Received: from list by lists.xenproject.org with outflank-mailman.670856.1043917 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSZjA-0004E8-Bc; Wed, 24 Jan 2024 09:39:24 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 670856.1043917; Wed, 24 Jan 2024 09:39:24 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSZjA-0004E0-8n; Wed, 24 Jan 2024 09:39:24 +0000
Received: by outflank-mailman (input) for mailman id 670856;
 Wed, 24 Jan 2024 09:39:22 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=V3ap=JC=cloud.com=roger.pau@srs-se1.protection.inumbo.net>)
 id 1rSZj8-0004Dp-8B
 for xen-devel@lists.xenproject.org; Wed, 24 Jan 2024 09:39:22 +0000
Received: from mail-wr1-x42a.google.com (mail-wr1-x42a.google.com
 [2a00:1450:4864:20::42a])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 73124b94-ba9c-11ee-98f5-6d05b1d4d9a1;
 Wed, 24 Jan 2024 10:39:20 +0100 (CET)
Received: by mail-wr1-x42a.google.com with SMTP id
 ffacd0b85a97d-337d5480a6aso4957495f8f.1
 for <xen-devel@lists.xenproject.org>; Wed, 24 Jan 2024 01:39:20 -0800 (PST)
Received: from localhost ([213.195.118.74]) by smtp.gmail.com with ESMTPSA id
 q4-20020adfab04000000b00337d603fd01sm15310259wrc.66.2024.01.24.01.39.19
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 24 Jan 2024 01:39:19 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 73124b94-ba9c-11ee-98f5-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1706089160; x=1706693960; darn=lists.xenproject.org;
        h=in-reply-to:content-transfer-encoding:content-disposition
         :mime-version:references:message-id:subject:cc:to:from:date:from:to
         :cc:subject:date:message-id:reply-to;
        bh=BouSWap0rhZxxjBdJxNrLY3LEopoGYXMaavX1hcr6Vw=;
        b=L14qUg82DMkSaXNIOUlV+mARLZw2bF+BaSO8olZObvGpGj97zY/Woa7qH/JCWHT9e1
         AN8dP8kObPR5hPcKjRaMfuZIti9Pj52nZI4Eyvk6ro1Etg2soZuNZQZDQJt83xAlABBm
         ZEF63/T4FTOGtRmiG4sEjzZXJZKZ9yuOwBGjA=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706089160; x=1706693960;
        h=in-reply-to:content-transfer-encoding:content-disposition
         :mime-version:references:message-id:subject:cc:to:from:date
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=BouSWap0rhZxxjBdJxNrLY3LEopoGYXMaavX1hcr6Vw=;
        b=GYiEVceByGJJGiz6Yk9T+68SXIGmVF7fVVe5oLCZ+P0RX8wyUXEeGTKBqXdiDqHhLD
         P8apq/zuEwD/wdUM1KEDQpc+QeLe2JCMD5EURztSjRFX2piSR3/GvNzf4YDVFu0QQY2N
         ISy7g23HlZeLUvdixEgV0q4soyoUekWUipYQgHH8u32+SCK/OYmbq+w9qzk5HDtkwVHd
         RHrCyNWQ6vH6BylLWKkH5iK0C2ZVFM17Ew0jjfzK1IIITrAptQjpXPQmOLjClcBcUqMF
         uuxwAePzyB7nvqAlYmOUfmVWzk0Y3wlh7pQ0AF3fjkCdtF5NKEoU33hB3JzTud8H4Zxq
         NAFQ==
X-Gm-Message-State: AOJu0YzrJb/1KoXsiVrkj7YYbL8xW/3lis9osQUUY3CscWeELLBDQnG3
	A8SSj9BRMW5ogYqmqiwXaQFMXHXfJkoIAOyOpqxx8xmSbiWUvnSSNDq1NbzI2/s=
X-Google-Smtp-Source: AGHT+IEKw5a8KHFeqBy9NmNPIWIDROLcjb7ONIhgTd0c8jLdSrYRob3pVaTG/wervvp5fIaB1dJN8A==
X-Received: by 2002:a5d:58d0:0:b0:337:c555:18b5 with SMTP id o16-20020a5d58d0000000b00337c55518b5mr344700wrf.115.1706089159850;
        Wed, 24 Jan 2024 01:39:19 -0800 (PST)
Date: Wed, 24 Jan 2024 10:39:18 +0100
From: Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
To: Jan Beulich <jbeulich@suse.com>
Cc: Stewart Hildebrand <stewart.hildebrand@amd.com>,
	Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>, Wei Liu <wl@xen.org>,
	George Dunlap <george.dunlap@citrix.com>,
	Julien Grall <julien@xen.org>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Jun Nakajima <jun.nakajima@intel.com>,
	Kevin Tian <kevin.tian@intel.com>, Paul Durrant <paul@xen.org>,
	Volodymyr Babchuk <volodymyr_babchuk@epam.com>,
	xen-devel@lists.xenproject.org
Subject: Re: [PATCH v12.2 01/15] vpci: use per-domain PCI lock to protect
 vpci structure
Message-ID: <ZbDaxiUO0T2w5UPs@macbook>
References: <20240109215145.430207-1-stewart.hildebrand@amd.com>
 <20240109215145.430207-2-stewart.hildebrand@amd.com>
 <20240115194309.45683-1-stewart.hildebrand@amd.com>
 <18ec3401-4334-40c0-82a0-31abfd9797d0@suse.com>
 <Za_Z_WlLbBgb0EzF@macbook>
 <c8792489-3e61-4c2e-af80-97832a3622b7@suse.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <c8792489-3e61-4c2e-af80-97832a3622b7@suse.com>

On Wed, Jan 24, 2024 at 09:56:42AM +0100, Jan Beulich wrote:
> On 23.01.2024 16:23, Roger Pau Monné wrote:
> > On Tue, Jan 23, 2024 at 03:26:26PM +0100, Jan Beulich wrote:
> >> On 15.01.2024 20:43, Stewart Hildebrand wrote:
> >>> --- a/xen/arch/x86/hvm/vmsi.c
> >>> +++ b/xen/arch/x86/hvm/vmsi.c
> >>> @@ -468,7 +468,7 @@ int msixtbl_pt_register(struct domain *d, struct pirq *pirq, uint64_t gtable)
> >>>      struct msixtbl_entry *entry, *new_entry;
> >>>      int r = -EINVAL;
> >>>  
> >>> -    ASSERT(pcidevs_locked());
> >>> +    ASSERT(pcidevs_locked() || rw_is_locked(&d->pci_lock));
> >>>      ASSERT(rw_is_write_locked(&d->event_lock));
> >>>  
> >>>      if ( !msixtbl_initialised(d) )
> >>> @@ -538,7 +538,7 @@ void msixtbl_pt_unregister(struct domain *d, struct pirq *pirq)
> >>>      struct pci_dev *pdev;
> >>>      struct msixtbl_entry *entry;
> >>>  
> >>> -    ASSERT(pcidevs_locked());
> >>> +    ASSERT(pcidevs_locked() || rw_is_locked(&d->pci_lock));
> >>>      ASSERT(rw_is_write_locked(&d->event_lock));
> >>
> >> I was hoping to just ack this patch, but the two changes above look
> >> questionable to me: How can it be that holding _either_ lock is okay?
> >> It's not obvious in this context that consumers have to hold both
> >> locks now. In fact consumers looks to be the callers of
> >> msixtbl_find_entry(), yet the list is RCU-protected. Whereas races
> >> against themselves or against one another are avoided by holding
> >> d->event_lock.
> > 
> > The reason for the change here is that msixtbl_pt_{un,}register() gets
> > called by pt_irq_{create,destroy}_bind(), which is in turn called by
> > vPCI code (pcidevs_locked()) that has been switched to not take the
> > pcidevs lock anymore, and hence the ASSERT would trigger.
> 
> I understand this is the motivation for the change, but that doesn't
> (alone) render the construct above sensible / correct.

But we agreed that for the purpose of the device not going anyway,
either the pcidevs or the per-domain pci_lock should be held, both are
valid for the purpose, and hence functions have adjusted to take that
into account.

So your concern is about the pcidevs lock being used here not just for
preventing the device from being removed, but also for protecting MSI
related state?

> >> My only guess then for the original need of holding pcidevs_lock is
> >> the use of msi_desc->dev, with the desire for the device to not go
> >> away. Yet the description doesn't talk about interactions of the per-
> >> domain PCI lock with that one at all; it all circles around the
> >> domain'd vPCI lock.
> > 
> > I do agree that it looks like the original intention of holding
> > pcidevs_lock is to prevent msi_desc->dev from being removed - yet I'm
> > not sure it's possible for the device to go away while the domain
> > event_lock is hold, as device removal would need to take that same
> > lock in order to destroy the irq_desc.
> 
> Yes, that matches an observation of mine as well. If we can simplify
> (rather then complicate) locking, I'd prefer if we did. May need to
> be a separate (prereq) patch, though.

Hm, yes, that might be an option, and doing a pre-patch that removes
the need to have pcidevs locked here would avoid the what seem
controversial changes.

> >> Feels like I'm missing something that's obvious to everyone else.
> >> Or maybe this part of the patch is actually unrelated, and should be
> >> split off (with its own [proper] justification)? Or wouldn't it then
> >> be better to also change the other paths leading here to acquire the
> >> per-domain PCI lock?
> > 
> > Other paths in vPCI vpci_msi_update(), vpci_msi_arch_update(),
> > vpci_msi_arch_enable()... are switched in this patch to use the
> > per-domain pci_lock instead of pcidevs lock.
> 
> Hence my question: Can't we consolidate to all paths only using the
> per-domain lock? That would make these odd-looking assertions become
> normal-looking again.

Hm, I think that's more work than originally planned, as the initial
plan was to use both locks during an interim period in order to avoid
doing a full swept change to switch to the per-domain one.

Regards, Roger.


From xen-devel-bounces@lists.xenproject.org Wed Jan 24 10:01:39 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 24 Jan 2024 10:01:39 +0000
Received: from list by lists.xenproject.org with outflank-mailman.670863.1043927 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSa4b-0003Nu-4o; Wed, 24 Jan 2024 10:01:33 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 670863.1043927; Wed, 24 Jan 2024 10:01:33 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSa4b-0003Nn-1l; Wed, 24 Jan 2024 10:01:33 +0000
Received: by outflank-mailman (input) for mailman id 670863;
 Wed, 24 Jan 2024 10:01:31 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=k9jB=JC=gmail.com=oleksii.kurochko@srs-se1.protection.inumbo.net>)
 id 1rSa4Z-0003Nc-LK
 for xen-devel@lists.xenproject.org; Wed, 24 Jan 2024 10:01:31 +0000
Received: from mail-ej1-x62a.google.com (mail-ej1-x62a.google.com
 [2a00:1450:4864:20::62a])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 8bd608d5-ba9f-11ee-98f5-6d05b1d4d9a1;
 Wed, 24 Jan 2024 11:01:30 +0100 (CET)
Received: by mail-ej1-x62a.google.com with SMTP id
 a640c23a62f3a-a31092083acso75656766b.3
 for <xen-devel@lists.xenproject.org>; Wed, 24 Jan 2024 02:01:30 -0800 (PST)
Received: from [192.168.206.239] ([94.75.70.14])
 by smtp.gmail.com with ESMTPSA id
 vi8-20020a170907d40800b00a3025e05665sm3548615ejc.14.2024.01.24.02.01.28
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 24 Jan 2024 02:01:29 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 8bd608d5-ba9f-11ee-98f5-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1706090490; x=1706695290; darn=lists.xenproject.org;
        h=mime-version:user-agent:content-transfer-encoding:references
         :in-reply-to:date:cc:to:from:subject:message-id:from:to:cc:subject
         :date:message-id:reply-to;
        bh=RIBzpwOhO2jcdXjQfJL+SPlVolakHfB3XfF35JUQzWA=;
        b=CmzF05OYKn4JM2VrGFQDo+zmCquDX7D3at0yVRJbhRCqxCMfN89TrRZVT1TwkxlNxB
         3vKHPhKK2qTQMK7AxX088w7n440rNuR/h/d1WIsy9jxY3p5ZTKVURlRFVKMMLu+85bV5
         gMCpKSo7CFcJVpQ9UK4m5/Vkd30VdJBfbRD5e0BqYw59F3MDl7jL58bcI5tEbBdh/b3U
         HwWRrzv78MKijqaTTvJrShEszzgvYkuFs0i57mWd1YvuaZF0etvXInQhVZg16pQ1xrGs
         ylkvAw4GeVnc4XoxwPuhWQ57cZlSSynptOuCWpjnMKj8KonxNx0yxyqHJMl2/vsBwqX1
         tQQw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706090490; x=1706695290;
        h=mime-version:user-agent:content-transfer-encoding:references
         :in-reply-to:date:cc:to:from:subject:message-id:x-gm-message-state
         :from:to:cc:subject:date:message-id:reply-to;
        bh=RIBzpwOhO2jcdXjQfJL+SPlVolakHfB3XfF35JUQzWA=;
        b=XLIUaKWs11RDQiY4wwpy3VWVpueNSiKqva2Ewa7BmCz2aPmrshFSaJY6yBuPf3djbd
         tqLNy6F34gU2xDIxcK68W43dcvnOd56Jq7DED6ZPltHU9fKu8KyYR62/ps2o7vt/365v
         bIlBAznvQyLgKKazCTt54ewyH9fweqLgx8tJ57KosToZh4LJA6ZdTMM6ZIV6DcE4F4aS
         0MYn2DwBQa1UzXpXEBHbFSCkDLcHZw5DHD85fFwiUsbXDvB0N6vtgK1AhrqziWr58N7T
         65K+LCkyb4PwP3NOMwilAy4HPcI/EdxeZKqor8QKG6nrHxEfmJTxfE81GVpKwR2fusNE
         I5bw==
X-Gm-Message-State: AOJu0Yx799Ay0wmMo9di7QoIpxCWfxAn3duTvULvyNwoe5dgGFr72qHE
	pokrihEPiqjJLys3EtPNvnFRAT5BZXlCPIrM2W7wPTHzoy/Mnwz+
X-Google-Smtp-Source: AGHT+IEGt0TFwgj4XDFHXdjriNgEYju8CbXWZlHSv6K1tgKL3Z7Nm6pV9Dx1UxV18zU4H74raqp/Eg==
X-Received: by 2002:a17:907:a708:b0:a2f:1466:a3e4 with SMTP id vw8-20020a170907a70800b00a2f1466a3e4mr868874ejc.25.1706090489605;
        Wed, 24 Jan 2024 02:01:29 -0800 (PST)
Message-ID: <ee23db5131f0be8d146f3c0410f0e471509eece0.camel@gmail.com>
Subject: Re: [PATCH v3 27/34] xen/riscv: define an address of frame table
From: Oleksii <oleksii.kurochko@gmail.com>
To: Jan Beulich <jbeulich@suse.com>
Cc: Alistair Francis <alistair.francis@wdc.com>, Bob Eshleman
 <bobbyeshleman@gmail.com>, Connor Davis <connojdavis@gmail.com>, Andrew
 Cooper <andrew.cooper3@citrix.com>, George Dunlap
 <george.dunlap@citrix.com>,  Julien Grall <julien@xen.org>, Stefano
 Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>, 
 xen-devel@lists.xenproject.org
Date: Wed, 24 Jan 2024 12:01:28 +0200
In-Reply-To: <b6dd4bff-d40a-47c7-9c18-913ed2bd07c1@suse.com>
References: <cover.1703255175.git.oleksii.kurochko@gmail.com>
	 <d0a357e3b9597479b539e88915731b3f15489c04.1703255175.git.oleksii.kurochko@gmail.com>
	 <39837f92-d139-49c3-9e5f-a79dd585f050@suse.com>
	 <2267a8dc4b1be495be65c2d7e22378cd2394829c.camel@gmail.com>
	 <b6dd4bff-d40a-47c7-9c18-913ed2bd07c1@suse.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
User-Agent: Evolution 3.50.2 (3.50.2-1.fc39) 
MIME-Version: 1.0

On Wed, 2024-01-24 at 09:07 +0100, Jan Beulich wrote:
> On 23.01.2024 17:50, Oleksii wrote:
> > On Tue, 2024-01-23 at 12:32 +0100, Jan Beulich wrote:
> > > On 22.12.2023 16:13, Oleksii Kurochko wrote:
> > > > @@ -22,25 +30,56 @@
> > > > =C2=A0 *
> > > > =C2=A0 * It means that:
> > > > =C2=A0 *=C2=A0=C2=A0 top VA bits are simply ignored for the purpose=
 of
> > > > translating
> > > > to PA.
> > > > +#endif
> > > > =C2=A0 *
> > > > - *
> > > > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
> > > > =3D=3D=3D=3D
> > > > =3D=3D=3D=3D=3D=3D=3D=3D=3D
> > > > - *=C2=A0=C2=A0=C2=A0 Start addr=C2=A0=C2=A0=C2=A0 |=C2=A0=C2=A0 En=
d addr=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 |=C2=A0 Size=C2=A0 | Slot=
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0
> > > > > area description
> > > > - *
> > > > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
> > > > =3D=3D=3D=3D
> > > > =3D=3D=3D=3D=3D=3D=3D=3D=3D
> > > > - * FFFFFFFFC0800000 |=C2=A0 FFFFFFFFFFFFFFFF |1016 MB | L2 511=C2=
=A0=C2=A0=C2=A0=C2=A0
> > > > |
> > > > Unused
> > > > - * FFFFFFFFC0600000 |=C2=A0 FFFFFFFFC0800000 |=C2=A0 2 MB=C2=A0 | =
L2 511=C2=A0=C2=A0=C2=A0=C2=A0
> > > > |
> > > > Fixmap
> > > > - * FFFFFFFFC0200000 |=C2=A0 FFFFFFFFC0600000 |=C2=A0 4 MB=C2=A0 | =
L2 511=C2=A0=C2=A0=C2=A0=C2=A0
> > > > |
> > > > FDT
> > > > - * FFFFFFFFC0000000 |=C2=A0 FFFFFFFFC0200000 |=C2=A0 2 MB=C2=A0 | =
L2 511=C2=A0=C2=A0=C2=A0=C2=A0
> > > > |
> > > > Xen
> > > > - *=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 ...=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 |=C2=A0 =
1 GB=C2=A0 | L2 510=C2=A0=C2=A0=C2=A0=C2=A0
> > > > |
> > > > Unused
> > > > - * 0000003200000000 |=C2=A0 0000007F80000000 | 309 GB | L2 200-509
> > > > |
> > > > Direct map
> > > > - *=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 ...=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 |=C2=A0 =
1 GB=C2=A0 | L2 199=C2=A0=C2=A0=C2=A0=C2=A0
> > > > |
> > > > Unused
> > > > - * 0000003100000000 |=C2=A0 00000031C0000000 |=C2=A0 3 GB=C2=A0 | =
L2 196-198
> > > > |
> > > > Frametable
> > > > - *=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 ...=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 |=C2=A0 =
1 GB=C2=A0 | L2 195=C2=A0=C2=A0=C2=A0=C2=A0
> > > > |
> > > > Unused
> > > > - * 0000003080000000 |=C2=A0 00000030C0000000 |=C2=A0 1 GB=C2=A0 | =
L2 194=C2=A0=C2=A0=C2=A0=C2=A0
> > > > |
> > > > VMAP
> > > > - *=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 ...=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 | 194 GB=
 | L2 0 - 193
> > > > |
> > > > Unused
> > > > - *
> > > > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
> > > > =3D=3D=3D=3D
> > > > =3D=3D=3D=3D=3D=3D=3D=3D=3D
> > > > + *=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 SATP_MODE_SV32=C2=A0=C2=A0 =
| SATP_MODE_SV39=C2=A0=C2=A0 |
> > > > SATP_MODE_SV48=C2=A0=C2=A0 |
> > > > SATP_MODE_SV57
> > > > + *=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0
> > > > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D|=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D|=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D|=3D=3D=3D=3D=3D=3D
> > > > =3D=3D=3D=3D
> > > > =3D=3D=3D=3D=3D=3D=3D
> > > > + * BA0 | FFFFFFFFFFE00000 | FFFFFFFFC0000000 |
> > > > FFFFFF8000000000 |
> > > > FFFF000000000000
> > > > + * BA1 | 0000000019000000 | 0000003200000000 |
> > > > 0000640000000000 |
> > > > 00C8000000000000
> > > > + * BA2 | 0000000018800000 | 0000003100000000 |
> > > > 0000620000000000 |
> > > > 00C4000000000000
> > > > + * BA3 | 0000000018400000 | 0000003080000000 |
> > > > 0000610000000000 |
> > > > 00C2000000000000
> > > > =C2=A0 *
> > > > -#endif
> > > > + *
> > > > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
> > > > =3D=3D=3D=3D
> > > > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
> > > > + * Start addr=C2=A0=C2=A0=C2=A0=C2=A0 |=C2=A0=C2=A0 End addr=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 |=C2=A0 Size=C2=A0 | Root =
PT
> > > > slot |
> > > > Area description
> > > > + *
> > > > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
> > > > =3D=3D=3D=3D
> > > > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
> > > > + * BA0 + 0x800000 |=C2=A0 FFFFFFFFFFFFFFFF=C2=A0=C2=A0 |1016 MB |=
=C2=A0=C2=A0=C2=A0=C2=A0
> > > > 511=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 |
> > > > Unused
> > > > + * BA0 + 0x400000 |=C2=A0 BA0 + 0x800000=C2=A0=C2=A0=C2=A0=C2=A0 |=
=C2=A0 2 MB=C2=A0 |=C2=A0=C2=A0=C2=A0=C2=A0
> > > > 511=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 |
> > > > Fixmap
> > > > + * BA0 + 0x200000 |=C2=A0 BA0 + 0x400000=C2=A0=C2=A0=C2=A0=C2=A0 |=
=C2=A0 4 MB=C2=A0 |=C2=A0=C2=A0=C2=A0=C2=A0
> > > > 511=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 |
> > > > FDT
> > > > + * BA0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0 |=C2=A0 BA0 + 0x200000=C2=A0=C2=A0=C2=A0=C2=A0 |=C2=A0 2 MB=C2=A0 |=
=C2=A0=C2=A0=C2=A0=C2=A0
> > > > 511=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 |
> > > > Xen
> > > > + *=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 ...=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 |=C2=A0 =
1 GB=C2=A0 |=C2=A0=C2=A0=C2=A0=C2=A0
> > > > 510=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 |
> > > > Unused
> > > > + * BA1 + 0x000000 |=C2=A0 BA1 + 0x4D80000000 | 309 GB |=C2=A0=C2=
=A0 200-
> > > > 509=C2=A0=C2=A0=C2=A0 |
> > > > Direct map
> > >=20
> > > This definitely can't be right for SV32. Others may be
> > > problematic,
> > > too, like ...
> > >=20
> > > > + *=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 ...=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 |=C2=A0 =
1 GB=C2=A0 |=C2=A0=C2=A0=C2=A0=C2=A0
> > > > 199=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 |
> > > > Unused
> > > > + * BA2 + 0x000000 |=C2=A0 BA2 + 0xC0000000=C2=A0=C2=A0 |=C2=A0 3 G=
B=C2=A0 |=C2=A0=C2=A0 196-
> > > > 198=C2=A0=C2=A0=C2=A0 |
> > > > Frametable
> > >=20
> > > ... this one. Otoh I'd expect both to potentially be much larger
> > > in
> > > SV48 and SV57 modes.
> > Regarding Sv32, it looks to me the only BA0 and End addr at the
> > first
> > line isn't correct as address size is 32.
> >=20
> > Regarding other modes, yes, it should be changed Size column. Also,
> > the
> > size of frame table should be recalculated.
> >=20
> > Do we really need size column?
> >=20
> > Wouldn't it be enough only have PT slot number?
>=20
> Perhaps.
>=20
> > Would it be better to have separate table for each mode?
>=20
> Don't know.
Then I'll play around different ways to display memory layout.

>=20
> > > > +#define VPN_BITS=C2=A0=C2=A0=C2=A0 (9)
> > >=20
> > > This need to move ...
> > >=20
> > > > +#define HYP_PT_ROOT_LEVEL (CONFIG_PAGING_LEVELS - 1)
> > > > +
> > > > +#ifdef CONFIG_RISCV_64
> > >=20
> > > ... here, I think, for not being applicable to SV32?
> > You are right, it is not applicable for Sv32. In case of Sv32, it
> > should be 10.
> > But I am not sure that it is correct only to move this definition
> > as
> > RISCV-64 can also use Sv32. So it looks like VPN_BITS should be
> > "#ifdef
> > RV_STAGE1_MODE =3D=3D Sv32".
>=20
> Can it? The spec talks of SXLEN=3D32 implying SV32, while SXLEN=3D64
> permits
> SV39, SV48, and SV57. No mention of SV32 there.
According to spec it can't, but when I tried that in baremetal it
worked.

Let's stick to the spec, and then it would be better to move VPN_BITS
to #ifdef CONFIG_RISCV_64.

>=20
> > > > +#define SLOTN_ENTRY_BITS=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
 (HYP_PT_ROOT_LEVEL * VPN_BITS
> > > > +
> > > > PAGE_SHIFT)
> > > > +#define SLOTN(slot)=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0 (_AT(vaddr_t, slot) <<
> > > > SLOTN_ENTRY_BITS)
> > > > +#define SLOTN_ENTRY_SIZE=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
 SLOTN(1)
> > >=20
> > > Do you have any example of how/where this going to be used?
> > Yes, it will be used to define DIRECTMAP_SIZE:
> > #define DIRECTMAP_SIZE=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0 (SLOTN_ENTRY_SIZE * (509-200))
>=20
> How about
>=20
> #define DIRECTMAP_SIZE=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0 (SLOTN(509) - SLOTN(200))
>=20
> instead?
It would be better, I'll drop SLOTN_ENTRY_SIZE then. Thanks.

>=20
> > > > +#define XEN_VIRT_START 0xFFFFFFFFC0000000 /* (_AC(-1, UL) + 1
> > > > -
> > > > GB(1)) */
> > >=20
> > > Won't /* -GB(1) */ do, thus allowing the line to also be padded
> > > such
> > > that
> > > it matches neighboring ones in layout?
> > Could you please clarify what do you mean by padded here? The
> > intention
> > was to show that 1 GB is used for Xen, FDT and fixmap.
>=20
> I'm talking of blank padding in the source file. Note how preceding
> and
> following #define-s blank-pad expansions so they all align. Just this
> one in the middle does not.
I see what you mean now. Thanks.

~ Oleksii
>=20
> > > > +#define FRAMETABLE_VIRT_START=C2=A0=C2=A0 SLOTN(196)
> > > > +#define FRAMETABLE_SIZE=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0 GB(3)
> > > > +#define FRAMETABLE_NR=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0 (FRAMETABLE_SIZE /
> > > > sizeof(*frame_table))
> > > > +#define FRAMETABLE_VIRT_END=C2=A0=C2=A0=C2=A0=C2=A0 (FRAMETABLE_VI=
RT_START +
> > > > FRAMETABLE_SIZE - 1)
> > > > +
> > > > +#define VMAP_VIRT_START=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0 SLOTN(194)
> > > > +#define VMAP_VIRT_SIZE=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0 GB(1)
> > > > [...]
> > >=20
> >=20
>=20



From xen-devel-bounces@lists.xenproject.org Wed Jan 24 10:02:44 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 24 Jan 2024 10:02:44 +0000
Received: from list by lists.xenproject.org with outflank-mailman.670865.1043936 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSa5j-0003u3-E0; Wed, 24 Jan 2024 10:02:43 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 670865.1043936; Wed, 24 Jan 2024 10:02:43 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSa5j-0003tw-BS; Wed, 24 Jan 2024 10:02:43 +0000
Received: by outflank-mailman (input) for mailman id 670865;
 Wed, 24 Jan 2024 10:02:42 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=k9jB=JC=gmail.com=oleksii.kurochko@srs-se1.protection.inumbo.net>)
 id 1rSa5i-0003to-G3
 for xen-devel@lists.xenproject.org; Wed, 24 Jan 2024 10:02:42 +0000
Received: from mail-ej1-x62c.google.com (mail-ej1-x62c.google.com
 [2a00:1450:4864:20::62c])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id b641cda3-ba9f-11ee-98f5-6d05b1d4d9a1;
 Wed, 24 Jan 2024 11:02:41 +0100 (CET)
Received: by mail-ej1-x62c.google.com with SMTP id
 a640c23a62f3a-a311e9cca0cso44331766b.1
 for <xen-devel@lists.xenproject.org>; Wed, 24 Jan 2024 02:02:41 -0800 (PST)
Received: from [192.168.206.239] ([94.75.70.14])
 by smtp.gmail.com with ESMTPSA id
 wb3-20020a170907d50300b00a2cc6398083sm14337600ejc.10.2024.01.24.02.02.40
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 24 Jan 2024 02:02:40 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: b641cda3-ba9f-11ee-98f5-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1706090561; x=1706695361; darn=lists.xenproject.org;
        h=mime-version:user-agent:content-transfer-encoding:references
         :in-reply-to:date:cc:to:from:subject:message-id:from:to:cc:subject
         :date:message-id:reply-to;
        bh=P08UYimgPnZ4Wj/CCTMK24tZCWToGs+b4sSM2Ujxu5M=;
        b=Gs45pzx3NMjXCq2cXq7yOzgciU+FUqfYdB5PGXY5ft4JqDRK21+iEn8OYfTTVMERF2
         oVazKZgszE8vHZi4zXqpx6Q8CCGZVe474zBimUNxytXisgKmRVnmmGTUK1s2Bnj5ebn4
         d99CNdIsAkXitwClVqtKCWZBi6FQW7A79HCXK9SFnHi182EUNmlsUbrAwxe2d5K5gEcR
         lnEgIQ6OK4cBrkH2zQEWyfuJ2DiRgH4zDFv0Bc0ch9WoPS/i+sj1eqcZPDmTtvttYgkd
         pZCELEoJ/gl1psX6i+D6SQAaefAYDIceIgvqdS/1dz0bV9nFTGvroWHOunw6nvEvCodR
         p1AQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706090561; x=1706695361;
        h=mime-version:user-agent:content-transfer-encoding:references
         :in-reply-to:date:cc:to:from:subject:message-id:x-gm-message-state
         :from:to:cc:subject:date:message-id:reply-to;
        bh=P08UYimgPnZ4Wj/CCTMK24tZCWToGs+b4sSM2Ujxu5M=;
        b=Ew3Mag5BYrTn/d0jyi/HiZbej4kNe3EqNYu/uknVtRaz1KtG3ByyKtWZJZpJ7Q6J4d
         QdyccTeVydIeA77l/ro4eOSSy6ccIhuzKF8WhK3lijUuL9Jz1PQGvPwV9qo6soSAlffo
         4oADlw7IDpVznk1er7Xzui5m2z7Wdl5Em7oSjo1+W55KZa6g7dY0igeOofeYl1fa4S8B
         ioYsqCLuItpAEV/8ntYXQx5m59UC9mrkFFXxMzPxrD1Gm4rws+Yesy73PEYbZYCdx305
         yE/9qW94U+B5rQq4nBWTKZrZuz26AEidFzspOYB8PcbkiQli/xRv9NOKKAmNNHxtUYFs
         Y54g==
X-Gm-Message-State: AOJu0Yxv3fDv6LsU8NpsPCVcsADitp8ST9DovXa3+fWQfUWdPYQx8Mk4
	KY13xoD7N3kcBOFWsSDuIGCxTUzqS9SvQc2zOUsEtHP+xR4S0PRq
X-Google-Smtp-Source: AGHT+IGbWXnfplk7L7bM9ymnETIgpGpguaV3qdsCHVQOHKU9/whBiYeaFViaBd26rE1aRfAkkO9O5w==
X-Received: by 2002:a17:906:3389:b0:a2a:767f:29cd with SMTP id v9-20020a170906338900b00a2a767f29cdmr775414eja.75.1706090560991;
        Wed, 24 Jan 2024 02:02:40 -0800 (PST)
Message-ID: <e22f3d3ee4bf786962622bdb5c196e4d22ea37ce.camel@gmail.com>
Subject: Re: [PATCH v3 29/34] xen/riscv: add minimal stuff to page.h to
 build full Xen
From: Oleksii <oleksii.kurochko@gmail.com>
To: Jan Beulich <jbeulich@suse.com>
Cc: Alistair Francis <alistair.francis@wdc.com>, Bob Eshleman
 <bobbyeshleman@gmail.com>, Connor Davis <connojdavis@gmail.com>, Andrew
 Cooper <andrew.cooper3@citrix.com>, George Dunlap
 <george.dunlap@citrix.com>,  Julien Grall <julien@xen.org>, Stefano
 Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>, 
 xen-devel@lists.xenproject.org
Date: Wed, 24 Jan 2024 12:02:39 +0200
In-Reply-To: <2c3086e1-39d8-4060-93f1-4c53283c0d70@suse.com>
References: <cover.1703255175.git.oleksii.kurochko@gmail.com>
	 <7aa26bdad9bf923fd57f7a90e41c049cab0cd5bd.1703255175.git.oleksii.kurochko@gmail.com>
	 <0740cab9-be2e-4aae-8b03-e3ec95d0b0ef@suse.com>
	 <c7004f13d082535cebd50fbe0e2446e3af78e48d.camel@gmail.com>
	 <2c3086e1-39d8-4060-93f1-4c53283c0d70@suse.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
User-Agent: Evolution 3.50.2 (3.50.2-1.fc39) 
MIME-Version: 1.0

On Wed, 2024-01-24 at 09:09 +0100, Jan Beulich wrote:
> On 23.01.2024 17:54, Oleksii wrote:
> > On Tue, 2024-01-23 at 12:36 +0100, Jan Beulich wrote:
> > > On 22.12.2023 16:13, Oleksii Kurochko wrote:
> > > > Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>
> > > > Acked-by: Jan Beulich <jbeulich@suse.com>
> > > > ---
> > > > Changes in V3:
> > > > =C2=A0- update the commit message
> > >=20
> > > Once again I find this puzzling, considering there's no commit
> > > message
> > > at all.
> > By the I meant that asm/page.h was changed to page.h
>=20
> Oh. Can you say "title" or "subject" when you mean that, and "commit
> message" (or "description") only when you actually mean the
> description?
Sure, I'll stick to proposed terminology next time.
Thanks.

~ Oleksii


From xen-devel-bounces@lists.xenproject.org Wed Jan 24 10:12:13 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 24 Jan 2024 10:12:13 +0000
Received: from list by lists.xenproject.org with outflank-mailman.670871.1043946 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSaEq-0006wv-9n; Wed, 24 Jan 2024 10:12:08 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 670871.1043946; Wed, 24 Jan 2024 10:12:08 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSaEq-0006wo-6s; Wed, 24 Jan 2024 10:12:08 +0000
Received: by outflank-mailman (input) for mailman id 670871;
 Wed, 24 Jan 2024 10:12:06 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=k9jB=JC=gmail.com=oleksii.kurochko@srs-se1.protection.inumbo.net>)
 id 1rSaEo-0006wb-ND
 for xen-devel@lists.xenproject.org; Wed, 24 Jan 2024 10:12:06 +0000
Received: from mail-ed1-x529.google.com (mail-ed1-x529.google.com
 [2a00:1450:4864:20::529])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 05e03193-baa1-11ee-9b0f-b553b5be7939;
 Wed, 24 Jan 2024 11:12:04 +0100 (CET)
Received: by mail-ed1-x529.google.com with SMTP id
 4fb4d7f45d1cf-55a5e7fa471so4694190a12.1
 for <xen-devel@lists.xenproject.org>; Wed, 24 Jan 2024 02:12:04 -0800 (PST)
Received: from [192.168.206.239] ([94.75.70.14])
 by smtp.gmail.com with ESMTPSA id
 vq7-20020a170907a4c700b00a2cf537042asm13555299ejc.192.2024.01.24.02.12.03
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 24 Jan 2024 02:12:03 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 05e03193-baa1-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1706091124; x=1706695924; darn=lists.xenproject.org;
        h=mime-version:user-agent:content-transfer-encoding:references
         :in-reply-to:date:cc:to:from:subject:message-id:from:to:cc:subject
         :date:message-id:reply-to;
        bh=5S1d5nGLnkvwjU2iypUDNHqS2WDMTAXYy+547mpozjA=;
        b=iNpLg9J53WDJlE8iufuAhPEtqspLmv4129e2tzh+3lHUjyGcZx6+Mo9p0ccjJ62MPm
         Irrff/EfHxTpATH0xmocb1PwhUOfQU4RITxlVdKihHDRbOB9hwD6tW3DhArr5Qa6Xsak
         YQVgQV03nsmxCs966GpPxz8Mh6hlXrHD9vqDaELAzrOg0MbAmAnkMfe0f3bP2MsC/V7G
         Sn+fWCwf2vyvCfTlpgMZfC+CKMx6TjW3aQsEUWOFP1iRpJ8fuCVlcuZhcYsbXsu1/10N
         K8C5Oc2FL7tjqhRCpRo04OxHIwAmz09M17rd2rEv9AjeBdVvgjBzudhhlaquun/jijWu
         lQaQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706091124; x=1706695924;
        h=mime-version:user-agent:content-transfer-encoding:references
         :in-reply-to:date:cc:to:from:subject:message-id:x-gm-message-state
         :from:to:cc:subject:date:message-id:reply-to;
        bh=5S1d5nGLnkvwjU2iypUDNHqS2WDMTAXYy+547mpozjA=;
        b=YyF2KjL1FCc0MT8yr0emuWyHOUJsSeXhKRbJaOdcSuNLAcd38XBKMgfWjH5rFkRwUj
         vrBeuFyZQ811qdCnJNAr7I8DxF9NMrkDhX5wISTz4AILwRyx2pr0viXH8uTE0GVppTJW
         TS6Seq6fdIe032wvAYg9S9BYqInmJzGs6NO4CvDjzbOlrvI7Z9kBL9Nufx9tVg4518/D
         TjIDn2uyfKTMI8f+oNTmuOxqI26fbRlm7NWH/ZHghhXNq7KDgSf+6mmQ6R4jHIMgDrtk
         J30yfuauCfX8xA99K8tlBGCfY8PgY2uGGyTApXN8zyB2WhZYut0EiuZh2ME38J1sj2pw
         AVaw==
X-Gm-Message-State: AOJu0Yyj8e/04vwLwzZaRANQpfQ9DDmYWwAbPGgadVRTrivdU1PYWYI6
	Q6euWxaPIp+zoh3qTgwUuhglhNghHMdK5/8RuYIGs3vxbNWpl02e
X-Google-Smtp-Source: AGHT+IEr/9jk6Pq1XUiE/jtR/DQ7IfPSE9sdidH6+SB1Nvt29yX2AGj1YoV7QkVWRuA+sG+oLKphYQ==
X-Received: by 2002:a17:906:899:b0:a2c:2437:101c with SMTP id n25-20020a170906089900b00a2c2437101cmr655535eje.13.1706091124020;
        Wed, 24 Jan 2024 02:12:04 -0800 (PST)
Message-ID: <22a0c2444201262202cd60d6d5a1cdff62c236bf.camel@gmail.com>
Subject: Re: [PATCH v3 30/34] xen/riscv: add minimal stuff to processor.h to
 build full Xen
From: Oleksii <oleksii.kurochko@gmail.com>
To: Jan Beulich <jbeulich@suse.com>
Cc: Alistair Francis <alistair.francis@wdc.com>, Bob Eshleman
 <bobbyeshleman@gmail.com>, Connor Davis <connojdavis@gmail.com>, Andrew
 Cooper <andrew.cooper3@citrix.com>, George Dunlap
 <george.dunlap@citrix.com>,  Julien Grall <julien@xen.org>, Stefano
 Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>, 
 xen-devel@lists.xenproject.org
Date: Wed, 24 Jan 2024 12:12:02 +0200
In-Reply-To: <b8f47c93-43c4-4c61-a569-7d07e811c6ab@suse.com>
References: <cover.1703255175.git.oleksii.kurochko@gmail.com>
	 <5bd7c5db6638f09dabdc13a6e12f0b204eacb234.1703255175.git.oleksii.kurochko@gmail.com>
	 <aa4d18c5-a8e0-44a6-ae7e-16fd9cd029b4@suse.com>
	 <5f8291916b01a2b29a16bd1345fc20e3d4f29cab.camel@gmail.com>
	 <b8f47c93-43c4-4c61-a569-7d07e811c6ab@suse.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
User-Agent: Evolution 3.50.2 (3.50.2-1.fc39) 
MIME-Version: 1.0

On Wed, 2024-01-24 at 09:19 +0100, Jan Beulich wrote:
> On 23.01.2024 18:08, Oleksii wrote:
> > On Tue, 2024-01-23 at 12:39 +0100, Jan Beulich wrote:
> > > On 22.12.2023 16:13, Oleksii Kurochko wrote:
> > > > Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>
> > > > ---
> > > > Changes in V3:
> > > > =C2=A0- Update the commit message
> > >=20
> > > ??? (again)
> > The same as with previous. asm/processor.h was changed to
> > processor.h
> >=20
> > >=20
> > > > @@ -53,6 +56,18 @@ struct cpu_user_regs
> > > > =C2=A0=C2=A0=C2=A0=C2=A0 unsigned long pregs;
> > > > =C2=A0};
> > > > =C2=A0
> > > > +/* TODO: need to implement */
> > > > +#define cpu_to_core(cpu)=C2=A0=C2=A0 (0)
> > > > +#define cpu_to_socket(cpu) (0)
> > > > +
> > > > +static inline void cpu_relax(void)
> > > > +{
> > > > +=C2=A0=C2=A0=C2=A0 /* Encoding of the pause instruction */
> > > > +=C2=A0=C2=A0=C2=A0 __asm__ __volatile__ ( ".insn 0x100000F" );
> > >=20
> > > binutils 2.40 knows "pause" - why use .insn then?
> > I thought that for this instruction it is needed to have extension
> > ZIHINTPAUSE ( according to Linux Kernel source code [1] ) and to
> > cover
> > older version.
>=20
> Well, of course you'll need to enable the extension then for gas. But
> as long as you use the insn unconditionally, that's all fine and
> natural. Another thing would be if you meant to also run on systems
> not supporting the extension: Then the above use of .insn would need
> to become conditional anyway.
Then it makes sense to use "pause".=C2=A0
Let's assume that for now we are running only on systems which support
the extension until we won't face compilation issue for some system.

>=20
> > > > +=C2=A0=C2=A0=C2=A0 barrier();
> > >=20
> > > Why?
> > Just to be aligned with Linux kernel implemetation from where this
> > function was taken.
>=20
> Hmm, looking more closely we have an (open-coded) barrier even on
> x86.
> So I suppose it's really wanted (to keep the compiler from moving
> memory accesses around this construct), but then you may want to
> consider using
>=20
> =C2=A0=C2=A0=C2=A0 __asm__ __volatile__ ( "pause" ::: "memory" );
>=20
> here. First and foremost because at least in the general case two
> separate asm()s aren't the same as one combined one (volatile ones
> are more restricted, but I'd always err on the safe side, even if
> just to avoid giving bad examples which later on may be taken as a
> basis for deriving other code).
It makes sense, I'll update inline assembler line code.

Thanks.

~ Oleksii



From xen-devel-bounces@lists.xenproject.org Wed Jan 24 10:23:29 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 24 Jan 2024 10:23:29 +0000
Received: from list by lists.xenproject.org with outflank-mailman.670878.1043957 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSaPh-0000m4-Af; Wed, 24 Jan 2024 10:23:21 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 670878.1043957; Wed, 24 Jan 2024 10:23:21 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSaPh-0000lx-6t; Wed, 24 Jan 2024 10:23:21 +0000
Received: by outflank-mailman (input) for mailman id 670878;
 Wed, 24 Jan 2024 10:23:19 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=3b7Y=JC=cloud.com=george.dunlap@srs-se1.protection.inumbo.net>)
 id 1rSaPf-0000lp-Ig
 for xen-devel@lists.xenproject.org; Wed, 24 Jan 2024 10:23:19 +0000
Received: from mail-lj1-x234.google.com (mail-lj1-x234.google.com
 [2a00:1450:4864:20::234])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 979a3c2d-baa2-11ee-98f5-6d05b1d4d9a1;
 Wed, 24 Jan 2024 11:23:18 +0100 (CET)
Received: by mail-lj1-x234.google.com with SMTP id
 38308e7fff4ca-2cf2a381b86so2801231fa.0
 for <xen-devel@lists.xenproject.org>; Wed, 24 Jan 2024 02:23:18 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 979a3c2d-baa2-11ee-98f5-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1706091798; x=1706696598; darn=lists.xenproject.org;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:from:to:cc:subject:date
         :message-id:reply-to;
        bh=T/R2PbYdjMJQy9yYJWmrpzNFr0xsjltHxJHwJoARcmo=;
        b=GkWE8GQ+FxNvAHaqZvsuh+E/cWwZTOoIC2KrWMO78fjlpKZaF7gv2pIZagsqLVr5RB
         IwBAkp0CtkXPI9YV9n7zHS2DvOI+dpQgohgfF+GnDd5GeLhh1rK0IrzpDygwbRDp+QSM
         njxuEw4HdH2FeVP4XaQYZSuxDb1udv3LhNBlc=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706091798; x=1706696598;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to;
        bh=T/R2PbYdjMJQy9yYJWmrpzNFr0xsjltHxJHwJoARcmo=;
        b=czXzT255xUn5XXNfYMq4qiIiuhe1rdTBRcUwR8hu0ecY6scelUG1NM1qRzSRWkEz7O
         qqMek3DR0sMqtDS4kEd+MyRayItSprhQbMaV6AIghW5mSP6JbIdWfhkHcYjROktG5ad+
         nx6G1fMgVagMWVK/piuunJMs2XXFpgSzRWklgpOJoQYTNkj3bdH3z4+uHNOgJKuCbZzr
         /hGn8ESMlYilLnPftUacUwy0ea/3dxHKStvbTrP01ebnSpn4nBRGf/6VnVVuw1NYtlxD
         etcCJgitugPqsjx766wgi+6X1pjDG6EtVwF4r5COLk0fTWU+QdlVzPuFsZ4DaM9NL/Mk
         l3gA==
X-Gm-Message-State: AOJu0YwZKdKOYaZ4aK7Uc2VRisCFagWEUQDEstFa0abnsM9216HS1mpz
	rS+HNDrf+qeglzXP+LF8evjduoxIvu9EH/YJp9byvxnTov0TeaEH5kpQEgjUVSGc6sU4zeP9ktm
	zmzZq0mGRppsj744qfkJZMQNsRZjKVof0Glg8ew==
X-Google-Smtp-Source: AGHT+IEXgvPp0kb4+oJYDfSMtGl+Y5OXT30CLfTVOxX6dPf0xK8C+xV3gR+6CwQbikNrk3ArDCrJlCyuKar8AW6YCkA=
X-Received: by 2002:a05:651c:2d9:b0:2cf:81d:3abf with SMTP id
 f25-20020a05651c02d900b002cf081d3abfmr589072ljo.50.1706091798208; Wed, 24 Jan
 2024 02:23:18 -0800 (PST)
MIME-Version: 1.0
References: <20240124083742.24324-1-roger.pau@citrix.com>
In-Reply-To: <20240124083742.24324-1-roger.pau@citrix.com>
From: George Dunlap <george.dunlap@cloud.com>
Date: Wed, 24 Jan 2024 10:23:07 +0000
Message-ID: <CA+zSX=b=nU0TtY_ejC7fyBMVz99zcqPZxDyZ9=Pw23xwMR8sXg@mail.gmail.com>
Subject: Re: [PATCH] x86/p2m-pt: fix off by one in entry check assert
To: Roger Pau Monne <roger.pau@citrix.com>
Cc: xen-devel@lists.xenproject.org, Jan Beulich <jbeulich@suse.com>, 
	Andrew Cooper <andrew.cooper3@citrix.com>, Wei Liu <wl@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

On Wed, Jan 24, 2024 at 8:45=E2=80=AFAM Roger Pau Monne <roger.pau@citrix.c=
om> wrote:
>
> The MMIO RO rangeset overlap check is bogus: the rangeset is inclusive so=
 the
> passed end mfn should be the last mfn to be mapped (not last + 1).
>
> Fixes: 6fa1755644d0 ('amd/npt/shadow: replace assert that prevents creati=
ng 2M/1G MMIO entries')
> Signed-off-by: Roger Pau Monn=C3=A9 <roger.pau@citrix.com>

Reviewed-by: George Dunlap <george.dunlap@cloud.com>


From xen-devel-bounces@lists.xenproject.org Wed Jan 24 10:27:33 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 24 Jan 2024 10:27:33 +0000
Received: from list by lists.xenproject.org with outflank-mailman.670657.1043972 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSaTf-0002Bh-56; Wed, 24 Jan 2024 10:27:27 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 670657.1043972; Wed, 24 Jan 2024 10:27:27 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSaTf-0002BC-0a; Wed, 24 Jan 2024 10:27:27 +0000
Received: by outflank-mailman (input) for mailman id 670657;
 Wed, 24 Jan 2024 01:12:36 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=YSeL=JC=nxp.com=peng.fan@srs-se1.protection.inumbo.net>)
 id 1rSRoi-0005UB-J3
 for xen-devel@lists.xenproject.org; Wed, 24 Jan 2024 01:12:36 +0000
Received: from EUR05-VI1-obe.outbound.protection.outlook.com
 (mail-vi1eur05on20601.outbound.protection.outlook.com
 [2a01:111:f403:2613::601])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id a7ee1535-ba55-11ee-98f5-6d05b1d4d9a1;
 Wed, 24 Jan 2024 02:12:35 +0100 (CET)
Received: from DU0PR04MB9417.eurprd04.prod.outlook.com (2603:10a6:10:358::11)
 by AS1PR04MB9430.eurprd04.prod.outlook.com (2603:10a6:20b:4da::16)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7202.36; Wed, 24 Jan
 2024 01:12:32 +0000
Received: from DU0PR04MB9417.eurprd04.prod.outlook.com
 ([fe80::c499:8cef:9bb1:ced6]) by DU0PR04MB9417.eurprd04.prod.outlook.com
 ([fe80::c499:8cef:9bb1:ced6%3]) with mapi id 15.20.7202.031; Wed, 24 Jan 2024
 01:12:31 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: a7ee1535-ba55-11ee-98f5-6d05b1d4d9a1
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=G5qMPJZGa+RmHXqmfby8a3KMvRyOlZYQ1UNF3LqOVkGaFIU1Tp4VgYJ75t7F9NQSV22aCF/loVGguw1/VHB1XzhkmDf2aumKBqDIBPMOXlcihRw2fuixE20qLeetJg0W3IccK9zbtiOPyuEy9c2gJwh+bULjVzkNHZsmFCMFh7iJCCLVJ3JSQCR53hSO/eCBfUtITAYbPtw7vhkNIxkMTN3LhAdBPm5hzUcdwcKlYEa12wS9mceuPlOhX5ymqjOMRLZjEj5Q4kxqSfv6bNOoAP1QwjxYgK0SRTQwAjZ6nu7WvKkAPaIVnrC79Hl8Tnxz+9c68J5ld1KJXGb6p5MZLQ==
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=1Uh5Uuewj3HrZv8HvNW0sw98JGv5swA2ITXbEp8Fm9k=;
 b=Rxanh8BPZ1gw3c2ybkkb9CfWF3OkaElyTODzUJpaPs9Yd2N7k8nxsEF/oIfk8PG7/AIZW9beiyX/NEcyxeOFXpq/nOXimHRGluCPa1n0WWdqdVr4+MRP+dCIpzwpDoMJ/4Lc15zYnR7NgmdFXXNwrRJ3L2HQp7MoQiUDR2lMjAzgnWxwMCuGWJwd6+jF5M/V7ZGT3ORVEm8EMDjP3Mw0qP/qE1ikXflbg0vB7UaT2hUtMXINzpA5VkuFpsZt5Ct1JXkTaaeiqpk55SxPH1kSvwtNY9C3KWF239TF7XWwa0NogcUc3HxDk+PU0jamk4FBT/+Jg/DVzgfhZyk1y928EQ==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass
 header.d=nxp.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector2;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=1Uh5Uuewj3HrZv8HvNW0sw98JGv5swA2ITXbEp8Fm9k=;
 b=fL86yTR7Uq+xMmbNB5XLFekOlN80piDURrt7wDY+OdFzR5htWbUaTFcoXIQBnSJ4mGs5khXvdBrLLEPhknLNKIh0p1IL7rbY9q25/yHRA/+tl2yDeT4WzT9GfqTmkS/M9meNmGLrspoRUe3DrHbT/Ssx87lnJDkYuy6mgJM5m+k=
From: Peng Fan <peng.fan@nxp.com>
To: Stefano Stabellini <sstabellini@kernel.org>, "Peng Fan (OSS)"
	<peng.fan@oss.nxp.com>
CC: "anthony.perard@citrix.com" <anthony.perard@citrix.com>, "paul@xen.org"
	<paul@xen.org>, "vikram.garhwal@amd.com" <vikram.garhwal@amd.com>,
	"viresh.kumar@linaro.org" <viresh.kumar@linaro.org>,
	"xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>,
	"qemu-devel@nongnu.org" <qemu-devel@nongnu.org>
Subject: RE: [PATCH] xen: Drop out of coroutine context
 xen_invalidate_map_cache_entry
Thread-Topic: [PATCH] xen: Drop out of coroutine context
 xen_invalidate_map_cache_entry
Thread-Index: AQHaSIFf0aPvG3VKVE6r93sE3K93tLDoL1+AgAACyxA=
Date: Wed, 24 Jan 2024 01:12:31 +0000
Message-ID:
 <DU0PR04MB9417727EDAF25B0CCC228DD4887B2@DU0PR04MB9417.eurprd04.prod.outlook.com>
References: <20240116143622.6641-1-peng.fan@oss.nxp.com>
 <alpine.DEB.2.22.394.2401231655530.2287888@ubuntu-linux-20-04-desktop>
In-Reply-To:
 <alpine.DEB.2.22.394.2401231655530.2287888@ubuntu-linux-20-04-desktop>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=nxp.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: DU0PR04MB9417:EE_|AS1PR04MB9430:EE_
x-ms-office365-filtering-correlation-id: 4b6c043a-ecf9-49be-4a78-08dc1c798a5f
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam: BCL:0;
x-microsoft-antispam-message-info:
 36W8ezj0V81gaIVN0yS4oETonN+jBsNleCvduOBT9dx0T/MMzVaSCD+55m1NeXVKt8JIW6bJi7xwNfPgw4ppT6r4mwwv+7YwOfFQOVqjQ+LM2Hztyi9nF7tNNXakSQux500cmWxiwC7ivwCAuqo9iVeofSi1BvP8LWMfVi9kbGhG8Hz4EiAZiv94kV/yUbBDtOoO6JeO6ZgcLQZlesDWny3IbLVDabL9tTyRz4MzMqN15uLDJy0jFvjvjhzTjPSBf0VHsrvJXPsxAdqeJqHMrSttsNYVxVMwfzpqnnQLPhcg0+hoG4qPdG0Arz4z5car9DRjzIMhNONyDhMSRBE99q4dY1iyDdyBys8Zrbbi5roJG5WIIELXkyAabsaTIDnjOrM0SL3GeZTmap/kVxzuVojv8fZqGqDYxqAA89W+dWkLKHqvkRMIwfejbGd7zcGGh74trQwmzMfPNlDDzIf/IgrdICE1tKZy1JO+R/nlVKlYxQuLnL/aUSM1CjThShXlwa+nPBuw/lx3jItXQRA88xRRrzwILk1dHPBOeLbNMg7JyRyVU/cjvgEux4pjd4L35T5eyhwzDCBP09zpUujl1KyVhGiRx27oU0B+OVIr+IEBNUBBB9+cnQPDyaCRS5CX
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DU0PR04MB9417.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230031)(396003)(376002)(366004)(346002)(136003)(39860400002)(230922051799003)(1800799012)(186009)(64100799003)(451199024)(478600001)(55016003)(71200400001)(83380400001)(52536014)(38100700002)(122000001)(5660300002)(44832011)(6506007)(8676002)(7696005)(4326008)(8936002)(2906002)(26005)(66946007)(66446008)(86362001)(9686003)(33656002)(41300700001)(316002)(38070700009)(54906003)(66556008)(66476007)(76116006)(64756008)(110136005);DIR:OUT;SFP:1101;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?us-ascii?Q?yeKfW96zKjWEQpwO/8Yd+25E/IQJIZkNVhBQFH09ki8d2o/IJmQ9ameDVuja?=
 =?us-ascii?Q?Z0u6OnnF//0nMReKF75fUA81GsvBgpKgAlmzBuQspmwUSP1GlIO9eBmatRWd?=
 =?us-ascii?Q?ByBeXFBREg78eFvOHT3vt2Z57pPOGcLRbp0z/fG1cgX5svsjmr3oYfLoL6fR?=
 =?us-ascii?Q?o5isyyHmXq4XC9p6nsOVQTlxbbhmoS76VJaa5zBa4M72zIGKhJ5KcFy31s1h?=
 =?us-ascii?Q?jg7hbz1H/ziIK6AYaItDx61ILz4dBhVz96EQB/nlngPQK4axftmA3eWV6nkt?=
 =?us-ascii?Q?sJZb29nIRM9159qTfvsqjLqpAujaHHmzeqTLHU0biop2xgt9MQ9AFvI/OszQ?=
 =?us-ascii?Q?ujFbq+ybrVM7qpGBUmI4VdA+eL4jrbu59iVHgtrvVIhb6PSFGvuYiqUhEykX?=
 =?us-ascii?Q?Hm6gpFCq/uDFHYcH+czIrwV8pzNuBWCS/vStZ2sGgPblYq5cQi6NGavwhiTx?=
 =?us-ascii?Q?o1GZY+wLWGosTlEDGWqRyD9qKF9iVTnnJm3DkRgbfKDyefQXhfFzhreN6nDf?=
 =?us-ascii?Q?I9OvtuIn3MHmsSNjLT1lDmLhzJDUM31f1Od4w4H2RIc1k/Fi9aaAqIb8sAh8?=
 =?us-ascii?Q?dDuyRqlvpo9LT/5LlwdaXt6MvJy9V+gkE/r4xhwrrg7TlzIwC1qocftphgQK?=
 =?us-ascii?Q?T6USKruCSZmW+RC19HCETluym9/FppZtYOte/PNXuIKoG8sfSbWQz7XR/OqY?=
 =?us-ascii?Q?y5mhXTyooGR/PTqv8BT5OsSK3E/GNJF5ONBLdFTZYayKzVXTLAtAmQUKz4Am?=
 =?us-ascii?Q?Q7rECc+PIc9nu6QtU5rmE3P1U/nEOjTELIchz4P9/pcGDYVs95M8AiGt3a11?=
 =?us-ascii?Q?UPEluY3XwziBj/vsXOcvWXgaT5DnS018wc1Z0ySzutAG13d/6w4bpJeqRMic?=
 =?us-ascii?Q?LmUTUEgqFdfHoxJpgy2hLw+cei4rdeZkdOIiWn/MqCKY1O7oeDJEdR2GZ6BG?=
 =?us-ascii?Q?5obcwUoEe7iuS55XYNrcdZovyA7zw/86WkBZtQEGCLuw9mJ1X6Mg61oZB86F?=
 =?us-ascii?Q?UCRuAPb6HueL/5lE8+CuKXvhd3wy7sJ9NY+18X+95KmdP2Dign7RjtfZ8YkH?=
 =?us-ascii?Q?ESRr6swyYzFMWUMELARXUC5WihuQCeDxIGJ7Oe87GnuJa3wjn4gfqlO79sJ9?=
 =?us-ascii?Q?fIMGDU27H5Fd1x5m8D6mzw43OLi+lmhWjtSIn79U6iGesEZk54nftzYNpXH5?=
 =?us-ascii?Q?dpitzNJG5wq8WWXUfnMQxhc9PzXOdTXmW47sqrCgIyhHhBgBSNGz7ZvAX8MH?=
 =?us-ascii?Q?cc+BtOqZ6TC1AJmOGJM0LxaN76xSYes5qaPUO/+BvgySh9W/c8JjC3aWEtul?=
 =?us-ascii?Q?ytf5DJX0kWE+y3bSJ88ndemPZEXcZSm+MZl/d5FvpQENVDE2DUzmqazofXVF?=
 =?us-ascii?Q?4mwd8jnm4nBu5HWemxzS4kaD4s54Xn226VZwTEDkCpkG2vZHUrTSxpF0y1Gq?=
 =?us-ascii?Q?Se4GSIU2t11mWOZapFmQpPKhsIhf4LA6AZxydtpY6OEQq/6tQxViWxO2Isgp?=
 =?us-ascii?Q?PR9C997/+5syDn6690EvR8tfKD9sNymOiZVsmQnOgp+IYe9aHAd0UD5aSbfw?=
 =?us-ascii?Q?hm2WSh/+sPQxnvcQPyk=3D?=
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-OriginatorOrg: nxp.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: DU0PR04MB9417.eurprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 4b6c043a-ecf9-49be-4a78-08dc1c798a5f
X-MS-Exchange-CrossTenant-originalarrivaltime: 24 Jan 2024 01:12:31.7535
 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: m9ZqRwUusv1bNBY+eWITgJK8s0fU3d5T2gAeKVrkFjEH9REvlgJEOmMQyfDoX36VijHE/wnrOyBA3Qzx7s2Jww==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS1PR04MB9430

> Subject: Re: [PATCH] xen: Drop out of coroutine context
> xen_invalidate_map_cache_entry
>=20
> On Tue, 16 Jan 2024, Peng Fan (OSS) wrote:
> > From: Peng Fan <peng.fan@nxp.com>
> >
> > xen_invalidate_map_cache_entry is not expected to run in a coroutine.
> > Without this, there is crash:
> >
> >     signo=3Dsigno@entry=3D6, no_tid=3Dno_tid@entry=3D0) at pthread_kill=
.c:44
> >     threadid=3D<optimized out>) at pthread_kill.c:78
> >     at /usr/src/debug/glibc/2.38+git-r0/sysdeps/posix/raise.c:26
> >     fmt=3D0xffff9e1ca8a8 "%s%s%s:%u: %s%sAssertion `%s' failed.\n%n",
> >     assertion=3Dassertion@entry=3D0xaaaae0d25740 "!qemu_in_coroutine()"=
,
> >     file=3Dfile@entry=3D0xaaaae0d301a8 "../qemu-xen-dir-remote/block/gr=
aph-
> lock.c", line=3Dline@entry=3D260,
> >     function=3Dfunction@entry=3D0xaaaae0e522c0 <__PRETTY_FUNCTION__.3>
> "bdrv_graph_rdlock_main_loop") at assert.c:92
> >     assertion=3Dassertion@entry=3D0xaaaae0d25740 "!qemu_in_coroutine()"=
,
> >     file=3Dfile@entry=3D0xaaaae0d301a8 "../qemu-xen-dir-remote/block/gr=
aph-
> lock.c", line=3Dline@entry=3D260,
> >     function=3Dfunction@entry=3D0xaaaae0e522c0 <__PRETTY_FUNCTION__.3>
> "bdrv_graph_rdlock_main_loop") at assert.c:101
> >     at ../qemu-xen-dir-remote/block/graph-lock.c:260
> >     at /home/Freenix/work/sw-stash/xen/upstream/tools/qemu-xen-dir-
> remote/include/block/graph-lock.h:259
> >     host=3Dhost@entry=3D0xffff742c8000, size=3Dsize@entry=3D2097152)
> >     at ../qemu-xen-dir-remote/block/io.c:3362
> >     host=3D0xffff742c8000, size=3D2097152)
> >     at ../qemu-xen-dir-remote/block/block-backend.c:2859
> >     host=3D<optimized out>, size=3D<optimized out>, max_size=3D<optimiz=
ed out>)
> >     at ../qemu-xen-dir-remote/block/block-ram-registrar.c:33
> >     size=3D2097152, max_size=3D2097152)
> >     at ../qemu-xen-dir-remote/hw/core/numa.c:883
> >     buffer=3Dbuffer@entry=3D0xffff743c5000 "")
> >     at ../qemu-xen-dir-remote/hw/xen/xen-mapcache.c:475
> >     buffer=3Dbuffer@entry=3D0xffff743c5000 "")
> >     at ../qemu-xen-dir-remote/hw/xen/xen-mapcache.c:487
> >     as=3Das@entry=3D0xaaaae1ca3ae8 <address_space_memory>,
> buffer=3D0xffff743c5000,
> >     len=3D<optimized out>, is_write=3Dis_write@entry=3Dtrue,
> >     access_len=3Daccess_len@entry=3D32768)
> >     at ../qemu-xen-dir-remote/system/physmem.c:3199
> >     dir=3DDMA_DIRECTION_FROM_DEVICE, len=3D<optimized out>,
> >     buffer=3D<optimized out>, as=3D0xaaaae1ca3ae8 <address_space_memory=
>)
> >     at /home/Freenix/work/sw-stash/xen/upstream/tools/qemu-xen-dir-
> remote/include/sysemu/dma.h:236
> >     elem=3Delem@entry=3D0xaaaaf620aa30, len=3Dlen@entry=3D32769)
> >     at ../qemu-xen-dir-remote/hw/virtio/virtio.c:758
> >     elem=3Delem@entry=3D0xaaaaf620aa30, len=3Dlen@entry=3D32769,
> idx=3Didx@entry=3D0)
> >     at ../qemu-xen-dir-remote/hw/virtio/virtio.c:919
> >     elem=3Delem@entry=3D0xaaaaf620aa30, len=3D32769)
> >     at ../qemu-xen-dir-remote/hw/virtio/virtio.c:994
> >     req=3Dreq@entry=3D0xaaaaf620aa30, status=3Dstatus@entry=3D0 '\000')
> >     at ../qemu-xen-dir-remote/hw/block/virtio-blk.c:67
> >     ret=3D0) at ../qemu-xen-dir-remote/hw/block/virtio-blk.c:136
> >     at ../qemu-xen-dir-remote/block/block-backend.c:1559
> > --Type <RET> for more, q to quit, c to continue without paging--
> >     at ../qemu-xen-dir-remote/block/block-backend.c:1614
> >     i1=3D<optimized out>) at ../qemu-xen-dir-remote/util/coroutine-
> ucontext.c:177
> >     at ../sysdeps/unix/sysv/linux/aarch64/setcontext.S:123
> >
> > Signed-off-by: Peng Fan <peng.fan@nxp.com>
>=20
> Hi Peng! Many thanks for the patch and for the investigation!
>=20
> Only one minor question below
>=20
>=20
> > ---
> >  hw/xen/xen-mapcache.c | 31 +++++++++++++++++++++++++++++--
> >  1 file changed, 29 insertions(+), 2 deletions(-)
> >
> > diff --git a/hw/xen/xen-mapcache.c b/hw/xen/xen-mapcache.c index
> > f7d974677d..4e1bb665ee 100644
> > --- a/hw/xen/xen-mapcache.c
> > +++ b/hw/xen/xen-mapcache.c
> > @@ -481,11 +481,38 @@ static void
> xen_invalidate_map_cache_entry_unlocked(uint8_t *buffer)
> >      g_free(entry);
> >  }
> >
> > -void xen_invalidate_map_cache_entry(uint8_t *buffer)
> > +typedef struct XenMapCacheData {
> > +    Coroutine *co;
> > +    uint8_t *buffer;
> > +    int ret;
>=20
> Do we need int ret? It doesn't look like we are using it.

Good catch, it is not needed, I will drop it in V2.

Thanks,
Peng.

>=20
>=20
> > +} XenMapCacheData;
> > +
> > +static void xen_invalidate_map_cache_entry_bh(void *opaque)
> >  {
> > +    XenMapCacheData *data =3D opaque;
> > +
> >      mapcache_lock();
> > -    xen_invalidate_map_cache_entry_unlocked(buffer);
> > +    xen_invalidate_map_cache_entry_unlocked(data->buffer);
> >      mapcache_unlock();
> > +
> > +    aio_co_wake(data->co);
> > +}
> > +
> > +void coroutine_mixed_fn xen_invalidate_map_cache_entry(uint8_t
> > +*buffer) {
> > +    if (qemu_in_coroutine()) {
> > +        XenMapCacheData data =3D {
> > +            .co =3D qemu_coroutine_self(),
> > +            .buffer =3D buffer,
> > +        };
> > +        aio_bh_schedule_oneshot(qemu_get_current_aio_context(),
> > +                                xen_invalidate_map_cache_entry_bh, &da=
ta);
> > +        qemu_coroutine_yield();
> > +    } else {
> > +        mapcache_lock();
> > +        xen_invalidate_map_cache_entry_unlocked(buffer);
> > +        mapcache_unlock();
> > +    }
> >  }
> >
> >  void xen_invalidate_map_cache(void)
> > --
> > 2.35.3
> >


From xen-devel-bounces@lists.xenproject.org Wed Jan 24 10:27:33 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 24 Jan 2024 10:27:33 +0000
Received: from list by lists.xenproject.org with outflank-mailman.670150.1043966 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSaTe-00029l-SA; Wed, 24 Jan 2024 10:27:26 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 670150.1043966; Wed, 24 Jan 2024 10:27:26 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSaTe-00029e-PQ; Wed, 24 Jan 2024 10:27:26 +0000
Received: by outflank-mailman (input) for mailman id 670150;
 Mon, 22 Jan 2024 20:59:28 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=bVzE=JA=amd.com=Mario.Limonciello@srs-se1.protection.inumbo.net>)
 id 1rS1OC-0002b9-3R
 for xen-devel@lists.xenproject.org; Mon, 22 Jan 2024 20:59:28 +0000
Received: from NAM11-DM6-obe.outbound.protection.outlook.com
 (mail-dm6nam11on20615.outbound.protection.outlook.com
 [2a01:111:f400:7eaa::615])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 1fcc0145-b969-11ee-98f3-6d05b1d4d9a1;
 Mon, 22 Jan 2024 21:59:26 +0100 (CET)
Received: from MN0PR12MB6101.namprd12.prod.outlook.com (2603:10b6:208:3cb::10)
 by SN7PR12MB8001.namprd12.prod.outlook.com (2603:10b6:806:340::5)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7202.24; Mon, 22 Jan
 2024 20:59:21 +0000
Received: from MN0PR12MB6101.namprd12.prod.outlook.com
 ([fe80::ce8d:7121:cb06:91ba]) by MN0PR12MB6101.namprd12.prod.outlook.com
 ([fe80::ce8d:7121:cb06:91ba%4]) with mapi id 15.20.7202.034; Mon, 22 Jan 2024
 20:59:21 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 1fcc0145-b969-11ee-98f3-6d05b1d4d9a1
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=iges5od8jLRyOpYXXPsAkBB4aGhemAeo+LhEaR/Sm1enCRHgIRCHRZXEEozwkdaY9wQ+P/hCgCHLaDxWF48Pbktr/E1YpwylJC2fPoIXO85p6/++ozS2b6VVKRYBG+PU2yU2GPp4vTVifjAOc6xltV+RuLz4eIZH2caUjpE/O0Ha2Zs8CLTSVNHGQacfbPZBfjbzVRJW6mLsn6Daz+yHElI7XPG6QYBdBkNqUeEAXS2omyQG4v+AKRFDRKAQlByx7pvG4IrXEqh1i96tBgmG6/VZns8kPSDrL+hZYc0QrnzsPepmqh96OXbG5X4VdboJZOb0wuJ0FeRz0DyCyod0yA==
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=pP1qwKcJmkLgycbmU3ILh1EJRkrNlepdGndJ2gdfWIU=;
 b=CzzcRnid90m3sfs2dNwhqa7SPSf12MeO3iH9ziJnc2/a+MATVY30mv2fx2U75tTqXZadFV2uVwEDplcHNzAu+s2OZaIP+z6TinGVq6JEGUEse6ON2XnoGaX9qKMeC8DHG4Nnld+5N4xeB8uvSK5wmQMFUa7ecZ2m0yWwoNfCRNHpZ2Pw3upztX0J122exPU6uKh6poAbjRREXhHiJ8Dew+kz6/NT8YMtM5dUR34nXxKnWDIQnq2eCWpQOxThigJBmqG9i6z+7nJyH2Y9tqAxprG9/AGgK3esTTeTUKY2LHaAeUPtPmaqhVO+xfeirrAzBCK78DN9Rwhh23bEfebA2g==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=amd.com; dmarc=pass action=none header.from=amd.com; dkim=pass
 header.d=amd.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=pP1qwKcJmkLgycbmU3ILh1EJRkrNlepdGndJ2gdfWIU=;
 b=MrmqsV6l2P99conRmTgYE8MneVBwudPL1z+JYynmBzzgxfIBAOu28KU5BR+XPYD/bjH7Vx9BNqgDW6OZooME6PfSg4BsIWzePYVU9uK+bbmgBlG0My0oqmYcaGBper76xc0Y5IQloTwIEk8VRQhL5oqBOpN4t9ZpCIRj1/U3BqU=
Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=amd.com;
Message-ID: <214585d5-689d-4ba6-bd48-359428a7ed8f@amd.com>
Date: Mon, 22 Jan 2024 14:59:19 -0600
User-Agent: Mozilla Thunderbird
Subject: Re: [BUG]i2c_hid_acpi broken with 4.17.2 on Framework Laptop 13 AMD
To: =?UTF-8?Q?S=C3=A9bastien_Chaumat?= <euidzero@gmail.com>
Cc: Jan Beulich <jbeulich@suse.com>, xen-devel@lists.xenproject.org,
 Juergen Gross <jgross@suse.com>
References: <CAKm-Umas=5=JzooRzPHxUDigKpFK3Ze7cQcG8eR5kWgn-d_7fQ@mail.gmail.com>
 <CAKm-UmaUZ=rj-F3RvMoR7H3OvBHm1iy4PTRZAjyi=MQUVTuYVg@mail.gmail.com>
 <CAKm-Umat77MTh6=GEuH+bf1WRX+_B4-N5hY4xwADALfhj4QCPA@mail.gmail.com>
 <6ba9568a-ff8e-48ad-907f-74303e04d3a2@suse.com>
 <CAKm-UmZVoUhidEV15Xk+J_XN5a2GsBqMbXL9wqdFdoAFf_u5AA@mail.gmail.com>
 <bcbceba7-42ac-45be-80ab-e3dfe7741ec6@suse.com>
 <2eafe45b-fd97-472c-a173-459d6ff0b957@suse.com>
 <CAKm-Umbs2D7NHFE+NW2xKOu7-AZhFpH4uzE5QTuQusnGA_eNWA@mail.gmail.com>
 <f539144c-885a-461c-a506-bdb73e626a65@suse.com>
 <CAKm-UmY126AfdGhWcZ3s9vwN9+ksVRRFEhOu0ZFMoDvxrqOibw@mail.gmail.com>
 <CAKm-UmYt3iV8zOhSmtqMGhi_8T93c_nCbnefs4m3UC+3UABqeQ@mail.gmail.com>
 <CAKm-UmY-KXEAtBagikW4Jvp=SFXtmEg8P62pHfSo3Hr2s-0_-A@mail.gmail.com>
 <CAKm-UmYbMCfXc1Ny0=qfB+UaLSXV9oEHZiSgS=mwKMwmOFGVrQ@mail.gmail.com>
 <77c1c05d-a0a0-4292-9257-9b7fbebee0e3@suse.com>
 <2859ad22-8714-4628-8142-fc77fc2072c3@amd.com>
 <CAKm-UmZpyGkWXugYTJqU+qqVDyCFEKghtd=NTr2wK5EMCeL9Ww@mail.gmail.com>
Content-Language: en-US
From: Mario Limonciello <mario.limonciello@amd.com>
In-Reply-To: <CAKm-UmZpyGkWXugYTJqU+qqVDyCFEKghtd=NTr2wK5EMCeL9Ww@mail.gmail.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
X-ClientProxiedBy: DS0PR17CA0008.namprd17.prod.outlook.com
 (2603:10b6:8:191::15) To MN0PR12MB6101.namprd12.prod.outlook.com
 (2603:10b6:208:3cb::10)
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: MN0PR12MB6101:EE_|SN7PR12MB8001:EE_
X-MS-Office365-Filtering-Correlation-Id: 01c7d922-88bd-40df-ec89-08dc1b8d01b7
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam: BCL:0;
X-Microsoft-Antispam-Message-Info:
	0VyKvwbX3UrZ/gc1kvUnNePYX2yrLcT2yBbDLNsspo/qJAosp9tG1430ZGyE9QXXgQYcImC8KESzQvRb+SAgbMQ/iO8oKO8bQrS4NZS3kl89gsmzui3WOoxyn2PvOErwZknk4av4b6MEZHxZ4cZagi6qRJJCEczHMW6DkkBlJe43ZRPeNZr0HGYt+ya+BHhWzZ6kHLmBoiMF6JimlaPKwNsX6YWKZw4gXqI5mbjgoIUsO4I35EJahXi8WdInavYqHqYptSb+LEiRQqjucuBB65i+QvBcsELzTqBSU6efzg2coYu6EYy1hxeSIFlNJ0ZuSPhJjLDYnCdTGbS6dUmXFdh64dQTFG71wVBHU3vo93fr6gZjG4G8tQTk5Ky13bnj8bG9AMRvx1Gal+chPdvQ/We7JBNsBaI7Ktlmnwah4ZQP7mvVji2QLSWrBYSnz82NxUKPlTT0MZVm4WiiNuGx5vjcud3n/frkyYJINCJr9/PrnobrNgw74fb7DAm0inFz3/GMvR5uzQ4S8dHm7cIyzbcQh5yNFgvj1Acr59DlUojq2Wfqxmdm740f58g0eNx2fk4vRZpptKIrUxesn6It5oPorflxM03l94CTqhKrQc73NIefssAqr17B0mcjCM/M
X-Forefront-Antispam-Report:
	CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:MN0PR12MB6101.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230031)(376002)(39860400002)(396003)(136003)(366004)(346002)(230922051799003)(1800799012)(64100799003)(451199024)(186009)(31686004)(38100700002)(31696002)(478600001)(2906002)(316002)(54906003)(966005)(6486002)(66946007)(66556008)(6916009)(4326008)(44832011)(26005)(83380400001)(86362001)(66476007)(8676002)(8936002)(6506007)(66574015)(5660300002)(6512007)(41300700001)(2616005)(36756003)(53546011)(45980500001)(43740500002);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
	=?utf-8?B?eXVhbnUwUXZSV3lxb08yM01oelhKSE51cHdQQnpBdnU4Z3UrL3Y1ZVdyV3o5?=
 =?utf-8?B?alNHWkFTWXdzaUdVSFlFT01KTnNHdEU4L1pMT3NqcTkzVkxaWFpFWmp1ZHk1?=
 =?utf-8?B?U3l6RC9STEZHN0dtZ2hCMzYwRDdCUmVCTGR3UDRWNGZZOU9FaGZlTXlKdUkr?=
 =?utf-8?B?TStyVmZXTU5lLzN5aTdwRWl2OTZVdU5Edk53ckVrYkJlYjZWWmFkSWhCYWVa?=
 =?utf-8?B?WktwYzVSQnp6UGZzTlBZYTJTdGVsTkZtZWdtUGFpNWpaZ0tKZzJsWkhWR2h5?=
 =?utf-8?B?YzlEam05Z2EwbzMyUU00UWdpc0lNNFlzTXdvQWpOSGpoNlVRNWJqbVF4Rlp2?=
 =?utf-8?B?TkhZZFRuSXJ5ak8rSlVFbHozcER2WTYzQTFZVkRjUkdzV1kyYktKbHBjdlU3?=
 =?utf-8?B?UGxLaXdXQ3pUOGFYZU1idkFTQTlMTlAwYUNvcWVWdVh4djBMeExZZ2oyU0w0?=
 =?utf-8?B?dkliMzhOOGtDRW9pR0h5OU5DQ05iSHFvSGREYnJoNVR6ZFhjMFNtYldlY05p?=
 =?utf-8?B?YXlES0xuVFNDRk94SkFiTXBpajZWMExzcTd2VVFleXg1SHlES0taNmJLU0Q4?=
 =?utf-8?B?TWFMVG1uRDJpVzBma2ppZjZwL3l1T1pVNndqbituK0Z6VzhQbTcvVndEaGxv?=
 =?utf-8?B?Tys0V2dPK0EvcFJyMG9uSnhYQ25temFoY3llTUJpRWl0alZIdWxVSHRzajVQ?=
 =?utf-8?B?TWRCNXRTSm1JS0Y5VTA5Wkhja0NxVjNNUWdnNmI0MVlhamxVSHNkRVlndXd3?=
 =?utf-8?B?WjJPY1RaVko2cXlsR1YxMkU3eWhhbjU3SXNFZXBDazdkdlhrckU0Vk5HMS9X?=
 =?utf-8?B?MEczRnYzMHU1QWNDT2U2eFV3ZERIb1QvTnNMRG1QR05PSS9samRrcmdOOUE2?=
 =?utf-8?B?YnFySHBCSUErUHF4bGYwYWpVWFBrWlBUVEdvY09hVnk4ZGx3Y2Vxcy92cDNC?=
 =?utf-8?B?eDRpYW1qTGM4KzVaNzBuUEd1czI1T2QxTDEyRUpJRktqaytYSTFFR1JBY01i?=
 =?utf-8?B?WTA1VHdUamcwdFNhaFBhdjF4MmhDYWlESkl4WjB1QmF5NFE4Z2F1azVHdlVo?=
 =?utf-8?B?NVN6VytXeExhdy9PalZ2KzBIWHVLQ0RuZHZ4eUxsVEZuazBObVJnbVE4cngx?=
 =?utf-8?B?YTlKQUk1eU9PYzBrSXBRTUVFUFZpajFpQ09TbFI3SHFUTndYckl0cWtjcW9N?=
 =?utf-8?B?QTVxVUhCeHE2c2I2a09BWGI2NE9QK3VhZFJ4MjBTUDdNUGRhZG44RU9aSklQ?=
 =?utf-8?B?L3QrYXB6UEJmNElodXl0U1k0RlNpVjJuWkRQcGhFS1ZzYXdKdDRpb1N0azVK?=
 =?utf-8?B?Mzdma05XM1B5THRYdnJPVDBodjgzb1VpdjBJOFhDdlkvL0hHcXZ1bFR4QVVj?=
 =?utf-8?B?RWx3ZmlhVy9WTUZDeS94ZHM3ZS9RZm1pUkFSTjB5RWZHU0FFL3p5bk9RRFpw?=
 =?utf-8?B?b3E3aGhSV2R5SFdXaDVxbXlvRkVNbUtUeHJpRkFqcjZPZk8wdm5kMmZjcDVz?=
 =?utf-8?B?cFF5OFNuSUxkcSt1UGExdVFjMlhOU21uaXNyWHMrTWpCZFU1TFEwY3JEMFlK?=
 =?utf-8?B?akYyaEp1WHNzVlVKWS82bnd5b1cxVm1wVjRsS1VkU1FtQzZ4WEpjZ1NCWTMy?=
 =?utf-8?B?cmNyVWpaRVAzdXpCR29lZ3dqQllIM2ErZHNuOVZrb1UrRmxUMVk1bDljMi9m?=
 =?utf-8?B?QitUakN0TU9HNGNQeWh6UHdzVVNVR1BSeHJRNXRZSm1XcDBHS3ZpNkxLU2tm?=
 =?utf-8?B?aEprNXR6TTRxL0JUV244cVNYck80VGdOb0x2VWoyNUplU1cvMDYveFR0Z21F?=
 =?utf-8?B?VTdyL3ZVY01KS3BWZnZ6SnRNbUdzN0MvV3FVY0orN3NvSW9Jd0JiUFlLaUk3?=
 =?utf-8?B?S0xKRzduZVVQZ2ZEcnVPSVVzcHFoTGUyaEEzUjhEL05Mei9KYkNXNkpCb2NK?=
 =?utf-8?B?dVNDWmE2NGxZMTJCOXV4NkZEYVNhL2QzbkUrUms1cnM2aDRBVDZNTTRKeXRC?=
 =?utf-8?B?RE9uTXZIalJYVXlzNGJRak0vK1pNVGpMSGdCK1cvTVlyc21kUFV6bE1sQ2U5?=
 =?utf-8?B?cjNySzVwN09XUTVhWkhGa05iN0J5Umh6THlkd2xnVkx4eFZmZ25waS9tZkdT?=
 =?utf-8?Q?VCj5sm4AmD2pJACjzX6HUUnUl?=
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 01c7d922-88bd-40df-ec89-08dc1b8d01b7
X-MS-Exchange-CrossTenant-AuthSource: MN0PR12MB6101.namprd12.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Jan 2024 20:59:21.4481
 (UTC)
X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted
X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d
X-MS-Exchange-CrossTenant-MailboxType: HOSTED
X-MS-Exchange-CrossTenant-UserPrincipalName: V49VGfPpVz6Sug6E8Ybs3ZqgheeFGnUkyiZSlIB+15LH9U1Up4H1HbYbXiCmdX1KIpL4mwE/BjzltX4Re/m3Kg==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN7PR12MB8001

On 1/22/2024 11:06, Sébastien Chaumat wrote:
> 
> 
> Le mer. 17 janv. 2024 à 03:20, Mario Limonciello 
> <mario.limonciello@amd.com <mailto:mario.limonciello@amd.com>> a écrit :
> 
>     On 1/16/2024 10:18, Jan Beulich wrote:
>      > On 16.01.2024 16:52, Sébastien Chaumat wrote:
>      >> Le mar. 2 janv. 2024 à 21:23, Sébastien Chaumat
>     <euidzero@gmail.com <mailto:euidzero@gmail.com>> a
>      >> écrit :
>      >>
>      >>>
>      >>>   output of gpioinfo
>      >>>>
>      >>>> kernel alone :
>      >>>>
>      >>>>          line   5: unnamed         input active-low
>     consumer=interrupt
>      >>>>          line  84: unnamed         input active-low
>     consumer=interrupt
>      >>>>
>      >>>> xen:
>      >>>>
>      >>>>          line   5: unnamed         input active-low
>      >>>>          line  84: unnamed         input active-low
>      >>>>
>      >>>> xen with skipping IRQ7 double init :
>      >>>>
>      >>>>          line   5: unnamed         input active-low
>     consumer=interrupt
>      >>>>          line  84: unnamed         input active-low
>      >>>>
>      >>>>
>      >>>> So definitely progressing.
>      >>>>
>      >>>
>      >>> Checking /sys/kernel/irq/7
>      >>>
>      >>> kernel alone :
>      >>>   actions: pinctrl_amd
>      >>>   chip_name: IR-IO-APIC
>      >>>   hwirq: 7
>      >>>   name: fasteoi
>      >>>   per_cpu_count: 0,0,0,0,0,20,0,0,0,0,0,0,0,0,0,0
>      >>>   type: level
>      >>>   wakeup: enabled
>      >>>
>      >>> xen skipping IRQ7 double init :
>      >>>
>      >>> actions: pinctrl_amd
>      >>>   chip_name: xen-pirq
>      >>>   hwirq:
>      >>>   name: ioapic-level
>      >>>   per_cpu_count: 0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0
>      >>>   type: edge
>      >>>   wakeup: disabled
>      >>>
>      >>> So the skip of IRQ7 in pci_xen_initial_domain() sets the
>     correct handler
>      >>>   (IIUC xen uses the ioapic-level and handles the eoi
>     separately), but not
>      >>> the correct type (still edge).
>      >>> I guess this may explains the results above.
>      >>>
>      >>>
>      >>   Mario (in CC) patched the pinctrl_amd to flush pending
>     interrupt before
>      >> starting the driver for the GPIO.
>      >>
>      >> This helped in  the sense of there's no more pending interrupt
>     on IRQ7
>      >> (whatever the handler is, level or edge) but then the touchpad
>     is not
>      >> detected by i2c-hid.
>      >>
>      >> Is there any work in progress related to the incorrect IRQ
>     configuration ?
>      >
>      > I'm not aware of any. As per my recollection it's still not entirely
>      > clear where in the kernel things go astray. And to be honest I don't
>      > feel comfortable trying to half-blindly address this, e.g. by trying
>      > to circumvent / defer the early setting up of the low 16 IRQs.
>      >
>      > Jan
> 
>     Shot in the dark - but could this be a problem where PCAT_COMPAT from
>     the MADT is being ignored causing PIC not to be setup properly in the
>     Xen case?
> 
>     See https://lore.kernel.org/all/875y2u5s8g.ffs@tglx/
>     <https://lore.kernel.org/all/875y2u5s8g.ffs@tglx/> for some context.
> 
> At least we know that no MADT override is found by xen for INT7 as no 
> INT_SRC_OVR message is printed.
> 
> Do we expect one @Mario Limonciello <mailto:mario.limonciello@amd.com>  ?

No; the INT_SRV_OVR you'll see on Framework 13 AMD is on IRQ 2 and IRQ 9.



From xen-devel-bounces@lists.xenproject.org Wed Jan 24 10:47:36 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 24 Jan 2024 10:47:36 +0000
Received: from list by lists.xenproject.org with outflank-mailman.670921.1044003 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSan4-0000WZ-15; Wed, 24 Jan 2024 10:47:30 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 670921.1044003; Wed, 24 Jan 2024 10:47:29 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSan3-0000WR-TY; Wed, 24 Jan 2024 10:47:29 +0000
Received: by outflank-mailman (input) for mailman id 670921;
 Wed, 24 Jan 2024 10:47:28 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rSan2-0000WG-F7; Wed, 24 Jan 2024 10:47:28 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rSan2-0001xh-8g; Wed, 24 Jan 2024 10:47:28 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rSan1-0004Uw-Tk; Wed, 24 Jan 2024 10:47:27 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rSan1-0002Pr-TH; Wed, 24 Jan 2024 10:47:27 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=fbflBwBIAoib9i96yTpfFjWRK6DPmnWy66tRZ6b1PZ4=; b=B1ehYm+15Hc7P+pgQjZkZDAIms
	RcXCnQKuJd+ElKtxoMzUAo3/29jnu7MguNqkKm0DirBnMgRAq6VrE7WzTopye3a9DaCg9qSzlZJwK
	rm7TLLkLauvLVTjv8WRQZcTQb+CBP1RbayKhVUqNPmJqBMGi2hBOYK1k56yaueW6NrrE=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184448-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [ovmf test] 184448: all pass - PUSHED
X-Osstest-Versions-This:
    ovmf=97e1ef87300cdf01f5b21cd4c5ee1d8df6ae1f39
X-Osstest-Versions-That:
    ovmf=d24187a81f724fc2af4f739ad92a9b158c9254df
From: osstest service owner <osstest-admin@xenproject.org>
Date: Wed, 24 Jan 2024 10:47:27 +0000

flight 184448 ovmf real [real]
http://logs.test-lab.xenproject.org/osstest/logs/184448/

Perfect :-)
All tests in this flight passed as required
version targeted for testing:
 ovmf                 97e1ef87300cdf01f5b21cd4c5ee1d8df6ae1f39
baseline version:
 ovmf                 d24187a81f724fc2af4f739ad92a9b158c9254df

Last test of basis   184446  2024-01-24 06:41:04 Z    0 days
Testing same since   184448  2024-01-24 08:42:37 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  devel@edk2.groups.io <devel@edk2.groups.io>
  Jeff Brasen <jbrasen@nvidia.com>

jobs:
 build-amd64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-amd64-amd64-xl-qemuu-ovmf-amd64                         pass    
 test-amd64-i386-xl-qemuu-ovmf-amd64                          pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Pushing revision :

To xenbits.xen.org:/home/xen/git/osstest/ovmf.git
   d24187a81f..97e1ef8730  97e1ef87300cdf01f5b21cd4c5ee1d8df6ae1f39 -> xen-tested-master


From xen-devel-bounces@lists.xenproject.org Wed Jan 24 11:19:35 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 24 Jan 2024 11:19:35 +0000
Received: from list by lists.xenproject.org with outflank-mailman.670929.1044013 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSbI1-0008Uy-G5; Wed, 24 Jan 2024 11:19:29 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 670929.1044013; Wed, 24 Jan 2024 11:19:29 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSbI1-0008Ur-DF; Wed, 24 Jan 2024 11:19:29 +0000
Received: by outflank-mailman (input) for mailman id 670929;
 Wed, 24 Jan 2024 11:19:28 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=bgOV=JC=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rSbI0-0008US-7A
 for xen-devel@lists.xenproject.org; Wed, 24 Jan 2024 11:19:28 +0000
Received: from mail-lj1-x22e.google.com (mail-lj1-x22e.google.com
 [2a00:1450:4864:20::22e])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 6e832405-baaa-11ee-9b0f-b553b5be7939;
 Wed, 24 Jan 2024 12:19:25 +0100 (CET)
Received: by mail-lj1-x22e.google.com with SMTP id
 38308e7fff4ca-2cf2b218c62so3166281fa.2
 for <xen-devel@lists.xenproject.org>; Wed, 24 Jan 2024 03:19:25 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 d6-20020a02a486000000b0046ee34b8c3dsm1701094jam.91.2024.01.24.03.19.23
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 24 Jan 2024 03:19:24 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 6e832405-baaa-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1706095165; x=1706699965; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=QYv/Gq1mIK3LsdtOqhgxy2t9sdd0gLhNDzDEjkxW9xg=;
        b=KfxYBZ83jWDHzSsWmtl5H0PgJ/gZoyqSSkgaVa7TJt7wwaUHzoEniEDuUwGvFJjXnv
         fMJi9JNPrB+fsOz4X7Bh8AHbH+qiX0IkTaYtRzJ9ZrDNfPAh9msI5ruhgWMT+tYZM5ey
         uWnFXnvrpCVnWgDqLZwXZMxXvo5QR8AONJBG+K7RO0AJl16oAervC33U7MVHNjJCRr0I
         BfMFcNa4xByib7FhVzFkoVWerutZ39NKqrw+8vnmMZm1DdKTGXfMsqk2e29r7QgMq4xE
         Roq59iVIl6t8iToMged2aqpwCKy8HZLdb/WAECElRUvOhaw++uMQccx/oOXYuyrtIGHw
         schg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706095165; x=1706699965;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=QYv/Gq1mIK3LsdtOqhgxy2t9sdd0gLhNDzDEjkxW9xg=;
        b=gCsln87TDTRspR5+c0w94oydyTVPpgTBmSfUAgr9HMg8FRJNdroFSYVoFzx8JkP1wk
         H5lwJfcnf/oPN8mqZO6Aryg6TUYnyiyx9FnLz8s6qRGraC2xXzCKCJmaSkJLbYozqZ+2
         d4Hi/IwJl0cEhm3e1CFgPpheZUgR5diYZiUC/YWtMhJ0zDZ6aw6kwObTPqQ1Hsw2IJgG
         4Dh1bHZiJbmZsiig4KrLJtZ1Hjda2WD4Km97hm58qE/I1UWixnX/xNjuIkzuM8ynLUow
         vl2FZHrC674h/Ravqz9iqVnRijRpw3MGx9cE6pxXaaeeh6ij3tN/eT81RDSb61yfvbzx
         +fmQ==
X-Gm-Message-State: AOJu0YyY18gLZdzed6y7SC0dUi2owUwg8TjUFjMb4KzqR/dMhg2ZuLBZ
	iwVQ6ZhVmUdYXDHG/JpMHUR0A3h0Ne1ymp22XY9m287bz9E0kAi3ruOsKbFjDw==
X-Google-Smtp-Source: AGHT+IGmsflNCczXUS5NbCuKayw6OhxzwnNk6VRqwfwwU/qurRS6d4kKlrbwwJK2FHzlWfvUVlQIxQ==
X-Received: by 2002:a2e:3c05:0:b0:2cf:2db4:cd7e with SMTP id j5-20020a2e3c05000000b002cf2db4cd7emr33507lja.203.1706095165237;
        Wed, 24 Jan 2024 03:19:25 -0800 (PST)
Message-ID: <e15ab025-d677-429b-abc4-9de23546b32c@suse.com>
Date: Wed, 24 Jan 2024 12:19:20 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 15/34] xen/riscv: introduce atomic.h
Content-Language: en-US
To: Oleksii <oleksii.kurochko@gmail.com>
Cc: Bobby Eshleman <bobbyeshleman@gmail.com>,
 Alistair Francis <alistair.francis@wdc.com>,
 Connor Davis <connojdavis@gmail.com>,
 Andrew Cooper <andrew.cooper3@citrix.com>,
 George Dunlap <george.dunlap@citrix.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>,
 xen-devel@lists.xenproject.org
References: <cover.1703255175.git.oleksii.kurochko@gmail.com>
 <54f5f13a4ee3de3c3cf4ba2b4d0347bb77bb7d08.1703255175.git.oleksii.kurochko@gmail.com>
 <2429395f-3ce8-4f17-aabe-78af2446ff6d@suse.com>
 <92d7caf20a37b68dce7676812c2780bc2fbc00cf.camel@gmail.com>
 <6aa39fac-fef6-47ce-8c27-4941d83c138a@suse.com>
 <d7f89e6f4aae5c8cfa5215bd893b62a3d542ce4c.camel@gmail.com>
 <d33fe182-8283-4552-bc0e-3eac90f20d31@suse.com>
 <b0c23db4b8162e5859347a582b43050c1601c10b.camel@gmail.com>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <b0c23db4b8162e5859347a582b43050c1601c10b.camel@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 24.01.2024 10:23, Oleksii wrote:
> On Tue, 2024-01-23 at 14:30 +0100, Jan Beulich wrote:
>> On 23.01.2024 13:24, Oleksii wrote:
>>> On Tue, 2024-01-23 at 11:30 +0100, Jan Beulich wrote:
>>>> On 23.01.2024 11:21, Oleksii wrote:
>>>>> On Mon, 2024-01-22 at 17:56 +0100, Jan Beulich wrote:
>>>>>> On 22.12.2023 16:12, Oleksii Kurochko wrote:
>>>>>>> --- /dev/null
>>>>>>> +++ b/xen/arch/riscv/include/asm/fence.h
>>>>>>> @@ -0,0 +1,13 @@
>>>>>>> +/* SPDX-License-Identifier: GPL-2.0-or-later */
>>>>>>> +#ifndef _ASM_RISCV_FENCE_H
>>>>>>> +#define _ASM_RISCV_FENCE_H
>>>>>>> +
>>>>>>> +#ifdef CONFIG_SMP
>>>>>>> +#define RISCV_ACQUIRE_BARRIER		"\tfence r , rw\n"
>>>>>>> +#define RISCV_RELEASE_BARRIER		"\tfence rw,  w\n"
>>>>>>> +#else
>>>>>>> +#define RISCV_ACQUIRE_BARRIER
>>>>>>> +#define RISCV_RELEASE_BARRIER
>>>>>>> +#endif
>>>>>>
>>>>>> Do you really care about the !SMP case? On x86 at least we
>>>>>> stopped
>>>>>> special-
>>>>>> casing that configuration many years ago (the few cases where
>>>>>> for
>>>>>> typically
>>>>>> build reasons it matters, using CONFIG_NR_CPUS is
>>>>>> sufficient). If
>>>>>> you
>>>>>> care
>>>>>> about it, there needs to be somewhere you actually #define
>>>>>> CONFIG_SMP.
>>>>> Can't we use instead of CONFIG_SMP - CONFIG_NR_CPUS?
>>>>
>>>> You can. Question is whether there's a point in doing so. Do you
>>>> expect people to actually want to run Xen on single-CPU systems?
>>>> They're generally not overly well suited for virtualization ...
>>> Just to clarify.
>>>
>>> Do you mean physically single based CPU?
>>> Then I don't expect to run Xen on such systems and it is not
>>> nesessary
>>> to define *_BARRIER in this case. Should we have to add build error
>>> notification that we don't support single-CPU systems in this
>>> header?
>>>
>>> If you are speaking about we have ,let it be, 4 CPUs and only 1 CPU
>>> is
>>> currently supported by Xen then it still makes sense.
>>
>> No, that's still not what I mean. The question is: Is it useful for
>> you
>> to _special case_ the NR_CPUS=1 case? Or is it instead simpler to
>> handle
>> NR_CPUS=1 the same as NR_CPUS>1 (accepting less than ideal
>> performance,
>> on the basis that in reality nobody's expected to use such in
>> production
>> anyway)?
> NR_CPUS=1 sometimes is useful for debugging. At least, at the start I
> used that several times, but ITBO I don't remember when I used that
> case after SMP support was added and context_switch() was fixed.

And "sometimes is useful for debugging" warrants introducing special
cases? I've not suggested disallowing that configuration. I'm merely
asking whether it isn't easier to have the barriers there at all
times. Just like on x86 we now leave the LOCK prefixes in place at
all times.

> Probably, I misunderstand the real idea of NR_CPUS. Does NR_CPUS
> represent a number of logical CPUs which can be different from physical
> amount of CPU?

No.

Jan


From xen-devel-bounces@lists.xenproject.org Wed Jan 24 11:21:23 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 24 Jan 2024 11:21:23 +0000
Received: from list by lists.xenproject.org with outflank-mailman.670931.1044023 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSbJp-0001hk-RG; Wed, 24 Jan 2024 11:21:21 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 670931.1044023; Wed, 24 Jan 2024 11:21:21 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSbJp-0001hd-NZ; Wed, 24 Jan 2024 11:21:21 +0000
Received: by outflank-mailman (input) for mailman id 670931;
 Wed, 24 Jan 2024 11:21:20 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>) id 1rSbJo-0001hW-Lw
 for xen-devel@lists.xenproject.org; Wed, 24 Jan 2024 11:21:20 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rSbJo-0002gF-76; Wed, 24 Jan 2024 11:21:20 +0000
Received: from [15.248.2.233] (helo=[10.24.67.33])
 by xenbits.xenproject.org with esmtpsa
 (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rSbJo-0006BZ-0s; Wed, 24 Jan 2024 11:21:20 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
	s=20200302mail; h=Content-Transfer-Encoding:Content-Type:In-Reply-To:From:
	References:Cc:To:Subject:MIME-Version:Date:Message-ID;
	bh=5258zXnY+iOkzZaQbQTpzYAZdBhmz4JigGJ0CznOVDQ=; b=24CT8SBo7VIH/USEWFeSCln4RF
	nPCGulWRhXimYFJZFu4q6PQr0NxO1lzjH4OVx7+Lcge1ql/rygHl+oRE46m0x7zFIvmYn6vZBjSWi
	/0GGqx49JYRutZrLHTJ0E2iiMvQ1mNFAIGl/cooDzsZNzpGvpTag/WfhScMZ68hZ1dIQ=;
Message-ID: <6424dda2-3274-4ff9-b409-a46dd139ebee@xen.org>
Date: Wed, 24 Jan 2024 11:21:17 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 1/2] arm: vgic: Add the ability to trigger MSIs from the
 Hypervisor
Content-Language: en-GB
To: Stefano Stabellini <sstabellini@kernel.org>,
 Mykyta Poturai <Mykyta_Poturai@epam.com>
Cc: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>,
 Bertrand Marquis <bertrand.marquis@arm.com>,
 Michal Orzel <michal.orzel@amd.com>,
 Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>
References: <cover.1705066642.git.mykyta_poturai@epam.com>
 <e109a4092d80a825256d26a8e56dbb5a2ae6d04e.1705066642.git.mykyta_poturai@epam.com>
 <alpine.DEB.2.22.394.2401231711160.2287888@ubuntu-linux-20-04-desktop>
From: Julien Grall <julien@xen.org>
In-Reply-To: <alpine.DEB.2.22.394.2401231711160.2287888@ubuntu-linux-20-04-desktop>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

Hi,

On 24/01/2024 01:17, Stefano Stabellini wrote:
> On Sun, 14 Jan 2024, Mykyta Poturai wrote:
>> Add the vgic_its_trigger_msi() function to the vgic interface. This
>> function allows to inject MSIs from the Hypervisor to the guest.
>> Which is useful for userspace PCI backend drivers.
>>
>> Signed-off-by: Mykyta Poturai <mykyta_poturai@epam.com>
>> ---
>>   xen/arch/arm/include/asm/vgic.h | 11 +++++++++++
>>   xen/arch/arm/vgic-v3-its.c      | 35 +++++++++++++++++++++++++++++++++
>>   2 files changed, 46 insertions(+)
>>
>> diff --git a/xen/arch/arm/include/asm/vgic.h b/xen/arch/arm/include/asm/vgic.h
>> index 922779ce14..4695743848 100644
>> --- a/xen/arch/arm/include/asm/vgic.h
>> +++ b/xen/arch/arm/include/asm/vgic.h
>> @@ -317,6 +317,17 @@ extern bool vgic_migrate_irq(struct vcpu *old, struct vcpu *new, unsigned int ir
>>   extern void vgic_check_inflight_irqs_pending(struct domain *d, struct vcpu *v,
>>                                                unsigned int rank, uint32_t r);
>>   
>> +#ifdef CONFIG_HAS_ITS
>> +int vgic_its_trigger_msi(struct domain *d, paddr_t doorbell_address,
>> +                                u32 devid, u32 eventid);
>> +#else
>> +static inline int vgic_its_trigger_msi(struct domain *d, paddr_t doorbell_address,
>> +                                u32 devid, u32 eventid)
>> +{
>> +    return -EOPNOTSUPP;
>> +}
>> +#endif /* CONFIG_HAS_ITS */
>> +
>>   #endif /* !CONFIG_NEW_VGIC */
>>   
>>   /*** Common VGIC functions used by Xen arch code ****/
>> diff --git a/xen/arch/arm/vgic-v3-its.c b/xen/arch/arm/vgic-v3-its.c
>> index 70b5aeb822..683a378f6e 100644
>> --- a/xen/arch/arm/vgic-v3-its.c
>> +++ b/xen/arch/arm/vgic-v3-its.c
>> @@ -1484,6 +1484,41 @@ static int vgic_v3_its_init_virtual(struct domain *d, paddr_t guest_addr,
>>       return 0;
>>   }
>>   
>> +int vgic_its_trigger_msi(struct domain *d, paddr_t doorbell_address,
>> +                                u32 devid, u32 eventid)
>> +{
>> +    struct vcpu *vcpu;
>> +    struct virt_its *pos, *temp;
>> +    struct virt_its *its = NULL;
>> +    uint32_t vlpi;
>> +    bool ret;
>> +
>> +    list_for_each_entry_safe( pos, temp, &d->arch.vgic.vits_list, vits_list )
>> +    {
>> +        if ( pos->doorbell_address == doorbell_address )
>> +        {
>> +            its = pos;
>> +            break;
>> +        }
>> +    }
>> +
>> +    if ( !its )
>> +        return -EINVAL;
>> +
>> +    spin_lock(&its->its_lock);
>> +    ret = read_itte(its, devid, eventid, &vcpu, &vlpi);
>> +    spin_unlock(&its->its_lock);
>> +    if ( !ret )
>> +        return -1;
>> +
>> +    if ( vlpi == INVALID_LPI )
>> +        return -1;
> 
> We need a better error code, maybe EINVAL or ENOENT ?

EINVAL tends to be overloaded. I would prefer ENOENT.

Cheers,

-- 
Julien Grall


From xen-devel-bounces@lists.xenproject.org Wed Jan 24 11:24:20 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 24 Jan 2024 11:24:20 +0000
Received: from list by lists.xenproject.org with outflank-mailman.670937.1044033 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSbMh-0002Hy-71; Wed, 24 Jan 2024 11:24:19 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 670937.1044033; Wed, 24 Jan 2024 11:24:19 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSbMh-0002Hr-4M; Wed, 24 Jan 2024 11:24:19 +0000
Received: by outflank-mailman (input) for mailman id 670937;
 Wed, 24 Jan 2024 11:24:17 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=bgOV=JC=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rSbMf-0002Hj-DQ
 for xen-devel@lists.xenproject.org; Wed, 24 Jan 2024 11:24:17 +0000
Received: from mail-lj1-x22b.google.com (mail-lj1-x22b.google.com
 [2a00:1450:4864:20::22b])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 1ac1a337-baab-11ee-9b0f-b553b5be7939;
 Wed, 24 Jan 2024 12:24:14 +0100 (CET)
Received: by mail-lj1-x22b.google.com with SMTP id
 38308e7fff4ca-2cd33336b32so71166771fa.0
 for <xen-devel@lists.xenproject.org>; Wed, 24 Jan 2024 03:24:14 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 j8-20020a5d93c8000000b007bf3754d792sm5805294ioo.19.2024.01.24.03.24.11
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 24 Jan 2024 03:24:13 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 1ac1a337-baab-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1706095454; x=1706700254; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=dJfAhozIe2Qfgu7v5+3FdteMLGp5lcfWvVXRPI2E/EU=;
        b=YgAearmT4r2mkmebg3pgcE9VWvvyfvcFGW68xSZA13ijhil3UDt5x2sR6nwJ92y7w6
         C8RIo0fPDnY+72T/sRZrFpOeseRUduh0sKBp2gLOQ9rWgAj0LMoPHR0UIqAG3abTnAok
         BZMvEf2idGhcu902p5UZ7LlPZDpl8SQr8WDWyFl+3nfvPCUiFWt7AhN/pj9z+2wJisB7
         9s9KgAW4aCC3N2KO4qDmxWanoMFiB6Fs1EYF0XJtsu8Ygl1gqoKAqhMskSuFFx/tDL46
         BWGjMkH6D7cZmEtSaE/Muk+5emBwLvzqt8ngyZDkM5XADuArfjQzd324mHL6axBOScOg
         HEyg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706095454; x=1706700254;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=dJfAhozIe2Qfgu7v5+3FdteMLGp5lcfWvVXRPI2E/EU=;
        b=luSmfELKTeljqHUU37kEIde1pdekMKyfObAe0Viq+p+oSJjzgNr3N3KZUleHmkCDRs
         ezOGTdPTPCPEWkYY7Ra2zl4lXUvRdvmVM2xticZRcCQse0yTziwUfyjvy0xdifA7MSob
         w8wF0+uZ+cNRTO1nLagsY4m9XhjDpMJsrUL4VuNUwlk9t0hJ9WvOrNsVREBjeCbvWqSE
         mFt239wPMRc0r+LgAEJHEhTfBj2tyhvF6rJ8N+d+Ko8AKu0RKay74CESwYu2aAo4WGIc
         4lHUtBSj3LE6PNZtFIYfaSc/X5HMH348+PzdImR1jhgm1zVSlpsvHAEiFVPnkEtKiKeD
         CSgg==
X-Gm-Message-State: AOJu0YwkqvwQdyvv+e5Hh7zzESokLiVeDz/nHCMoAjukAydQlx1mqfJY
	JE0/oTDGxDt1YmXUSbesMHja1DZOYfFhKcSsMesR7pu7BFMhCBA2TSCY2iUswA==
X-Google-Smtp-Source: AGHT+IG3dNcPGZI83FtLzwlfLj1aaPOlM058dL4mPysFwfmuR7ER+sEnxIInVsuWHXFEIuxRtndU7A==
X-Received: by 2002:a2e:99d1:0:b0:2cf:473:b182 with SMTP id l17-20020a2e99d1000000b002cf0473b182mr832268ljj.0.1706095454245;
        Wed, 24 Jan 2024 03:24:14 -0800 (PST)
Message-ID: <b7c58adb-f3e2-4089-bba4-3f7f0740f111@suse.com>
Date: Wed, 24 Jan 2024 12:24:09 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 16/34] xen/lib: introduce generic find next bit
 operations
Content-Language: en-US
To: Oleksii <oleksii.kurochko@gmail.com>
Cc: Alistair Francis <alistair.francis@wdc.com>,
 Bob Eshleman <bobbyeshleman@gmail.com>, Connor Davis
 <connojdavis@gmail.com>, Andrew Cooper <andrew.cooper3@citrix.com>,
 George Dunlap <george.dunlap@citrix.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>,
 xen-devel@lists.xenproject.org
References: <cover.1703255175.git.oleksii.kurochko@gmail.com>
 <bb47caf6c275d8aea307b96e79828831eab4a703.1703255175.git.oleksii.kurochko@gmail.com>
 <81e5cac4-90f0-4fff-b891-53ca73c61832@suse.com>
 <05d685b0b7ccd329454a336b20351979bdf91ea4.camel@gmail.com>
 <8e60f998-aeb4-4648-a3e9-d083bb8eefde@suse.com>
 <2974faee197b0a60d6e7ac54356639706c2ecb43.camel@gmail.com>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <2974faee197b0a60d6e7ac54356639706c2ecb43.camel@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 24.01.2024 10:34, Oleksii wrote:
> On Tue, 2024-01-23 at 14:37 +0100, Jan Beulich wrote:
>> On 23.01.2024 13:34, Oleksii wrote:
>>> On Tue, 2024-01-23 at 12:14 +0100, Jan Beulich wrote:
>>>> On 22.12.2023 16:13, Oleksii Kurochko wrote:
>>>>> --- a/xen/common/Kconfig
>>>>> +++ b/xen/common/Kconfig
>>>>> @@ -47,6 +47,9 @@ config ARCH_MAP_DOMAIN_PAGE
>>>>>  config GENERIC_BUG_FRAME
>>>>>  	bool
>>>>>  
>>>>> +config GENERIC_FIND_NEXT_BIT
>>>>> +	bool
>>>>
>>>> There's no need for this, as ...
>>>>
>>>>> --- a/xen/lib/Makefile
>>>>> +++ b/xen/lib/Makefile
>>>>> @@ -3,6 +3,7 @@ obj-$(CONFIG_X86) += x86/
>>>>>  lib-y += bsearch.o
>>>>>  lib-y += ctors.o
>>>>>  lib-y += ctype.o
>>>>> +lib-$(CONFIG_GENERIC_FIND_NEXT_BIT) += find-next-bit.o
>>>>
>>>> ... you're moving this to lib/. Or have you encountered any issue
>>>> with building this uniformly, and you forgot to mention this in
>>>> the description?
>>> I didn't check. My intention was to provide opportunity to check if
>>> an
>>> architecture want to use generic version or not. Otherwise, I
>>> expected
>>> that we will have multiple definiotion of the funcion.
>>>
>>> But considering that they are all defined under #ifdef...#endif we
>>> can
>>> remove the declaration of the config GENERIC_FIND_NEXT_BIT.
>>
>> What #ifdef / #endif would matter here? Whats in lib/ is intended to
>> be
>> generic anyway. And what is in the resulting lib.a won't be used by
>> an
>> arch if it has an arch-specific implementation. 
> If what is implemented in lib.a won't be used by an arch if it has an
> arch-specific implementation then, for sure, I have to drop
> CONFIG_GENERIC_FIND_NEXT_BIT.
> But I am not really understand if lib.a is linked with Xen, then it
> should be an issue then if some arch implement find-next-bit function
> we will have to multiple definitions ( one in lib.a and one arch
> specific ). Probably, I have to look at how it is done.

You're aware how linking works? Objects are pulled out of archives only
if there's no other definition for a to-be-resolved symbol provided by
a particular object in the archive.

>> Problems could arise if
>> an arch had an inline function colliding with the out-of-line one.
>> But
>> that's about the old case where I could see a need to make the
>> building
>> of one of the objects conditional. And you'll note that withing this
>> Makefile there are pretty few conditionals.
> Could you please clarify What does it mean "out-of-line" ?

"not inline"

>>>>> --- /dev/null
>>>>> +++ b/xen/lib/find-next-bit.c
>>>>> [...]
>>>>
>>>> I was going to ask that you convince git to actually present a
>>>> proper
>>>> diff, to make visible what changes. But other than the
>>>> description
>>>> says
>>>> you don't really move the file, you copy it. Judging from further
>>>> titles
>>>> there's also nowhere you'd make Arm actually use this now generic
>>>> code.
>>> I wanted to do it separately, outside this patch series to simplify
>>> review and not have Arm specific changes in RISC-V patch series.
>>
>> Then do it the other way around: Make a separate _prereq_ change
>> truly
>> moving the file.
> So this one patch should be separated by 2? One which moves find-next-
> bit.c from Arm to xen/lib, and second where xen/lib/Makefile is
> updated.

No, that would break the Arm build. I suggested breaking out this
patch from the series, and then doing what the description says:
Actually move the file. I don't think I suggested splitting the
patch. Even the breaking out of the series was only because you
said "I wanted to do it separately, outside this patch series".

Jan


From xen-devel-bounces@lists.xenproject.org Wed Jan 24 11:26:29 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 24 Jan 2024 11:26:29 +0000
Received: from list by lists.xenproject.org with outflank-mailman.670941.1044043 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSbOi-0002pl-Js; Wed, 24 Jan 2024 11:26:24 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 670941.1044043; Wed, 24 Jan 2024 11:26:24 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSbOi-0002pe-G5; Wed, 24 Jan 2024 11:26:24 +0000
Received: by outflank-mailman (input) for mailman id 670941;
 Wed, 24 Jan 2024 11:26:23 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>) id 1rSbOh-0002pY-6F
 for xen-devel@lists.xenproject.org; Wed, 24 Jan 2024 11:26:23 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rSbOg-0002nU-Nc; Wed, 24 Jan 2024 11:26:22 +0000
Received: from [15.248.2.233] (helo=[10.24.67.33])
 by xenbits.xenproject.org with esmtpsa
 (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rSbOg-0006R6-GE; Wed, 24 Jan 2024 11:26:22 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
	s=20200302mail; h=Content-Transfer-Encoding:Content-Type:In-Reply-To:From:
	References:Cc:To:Subject:MIME-Version:Date:Message-ID;
	bh=Z55pWqrsVrAYfNXQUHtFcrEcggPBge8pnSxYHx9egx8=; b=sXDCTQzuZnlArZ2DaWbfHA0uo8
	D5x2g+Q+sySMTtA9xaLKOFfR1fVTEdOTbPTT1Oz8BguLwpOTV6KETZvTLS3h+xXKTLP5AHs8TaMeG
	sBdbGWh9BjAAv8Dyx9xzmtaIn29fjTndXeMoEifwQOIbvMPffdKUeg51wWCq0hoTc8z8=;
Message-ID: <69f77f3c-27f2-4353-83c7-4450df28397b@xen.org>
Date: Wed, 24 Jan 2024 11:26:19 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 0/2] Add support for MSI injection on Arm
Content-Language: en-GB
To: Mykyta Poturai <Mykyta_Poturai@epam.com>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Stefano Stabellini <sstabellini@kernel.org>,
 Bertrand Marquis <bertrand.marquis@arm.com>,
 Michal Orzel <michal.orzel@amd.com>,
 Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>, Wei Liu <wl@xen.org>,
 Anthony PERARD <anthony.perard@citrix.com>, Juergen Gross <jgross@suse.com>,
 Andrew Cooper <andrew.cooper3@citrix.com>,
 George Dunlap <george.dunlap@citrix.com>, Jan Beulich <jbeulich@suse.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
References: <cover.1705066642.git.mykyta_poturai@epam.com>
From: Julien Grall <julien@xen.org>
In-Reply-To: <cover.1705066642.git.mykyta_poturai@epam.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

Hi,

On 14/01/2024 10:01, Mykyta Poturai wrote:
> This series adds the base support for MSI injection on Arm. This is
> needed to streamline virtio-pci interrupt triggering.
> 
> With this patches, MSIs can be triggered in guests by issuing the new
> DM op, inject_msi2. This op is similar to inject_msi, but it allows
> to specify the source id of the MSI.
> 
> We chose the approach of adding a new DM op instead of using the pad
> field of inject_msi because we have no clear way of distinguishing
> between set and unset pad fields. New implementations also adds flags
> field to clearly specify if the SBDF is set.
> 
> Patches were tested on QEMU with QEMU virtio-pci backends, with
> virtio-pci patches and patches for ITS support for DomUs applied.

I have seen some virtio-pci patches on the ML. But nothing about ITS 
support in the DomUs (at least in recent months).

It would feel odd to me to even consider merging this series before the 
ITS support for DomUs is merged. So what's the plan for it?

Cheers,

-- 
Julien Grall


From xen-devel-bounces@lists.xenproject.org Wed Jan 24 11:28:06 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 24 Jan 2024 11:28:06 +0000
Received: from list by lists.xenproject.org with outflank-mailman.670946.1044052 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSbQB-0003vO-Uj; Wed, 24 Jan 2024 11:27:55 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 670946.1044052; Wed, 24 Jan 2024 11:27:55 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSbQB-0003uV-Rr; Wed, 24 Jan 2024 11:27:55 +0000
Received: by outflank-mailman (input) for mailman id 670946;
 Wed, 24 Jan 2024 11:27:55 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=bgOV=JC=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rSbQB-0003uB-4Z
 for xen-devel@lists.xenproject.org; Wed, 24 Jan 2024 11:27:55 +0000
Received: from mail-lj1-x22c.google.com (mail-lj1-x22c.google.com
 [2a00:1450:4864:20::22c])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 9da23fc3-baab-11ee-98f5-6d05b1d4d9a1;
 Wed, 24 Jan 2024 12:27:54 +0100 (CET)
Received: by mail-lj1-x22c.google.com with SMTP id
 38308e7fff4ca-2cf1c487235so10460191fa.2
 for <xen-devel@lists.xenproject.org>; Wed, 24 Jan 2024 03:27:54 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 em21-20020a0566384db500b0046d9e290a74sm3949611jab.7.2024.01.24.03.27.51
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 24 Jan 2024 03:27:53 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 9da23fc3-baab-11ee-98f5-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1706095674; x=1706700474; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=Ix1CFNwXPrXlRQ4RQ6NOZvA6LnaUcpMHg46xi+43rcA=;
        b=KBxsfImdFGmL+4sfzB4vX53HotKj8bUz+gM8WjjrhNq6wGRg4AuRyhi1RxK0yZnYaw
         AGT7QOvGlghcXLaeROztIhfwjAAlvUyW1gLK2g8P4YjCPP77DtH0DIsWjz+YVtyALXSA
         CGhxoBUGAqxN9qsWjcN9SPXfWLImXkBDRAcEjE90LWn3aMR9ys4Lp4JYB1SNz3kGwb8I
         7VQGwE8GZJxJ+QaYpTgdT6WBseIJhE3ZmwXG8J0NreJpUXGHU7o1/aWq9IGoHSA8gxug
         szObLYxywxDA+SenKMK+KT11lDvltR53lA6XM39QF812r1EFywKZU41iIA8pTiscs4OI
         TAxg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706095674; x=1706700474;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=Ix1CFNwXPrXlRQ4RQ6NOZvA6LnaUcpMHg46xi+43rcA=;
        b=H9Z5XQdVQqG0Pd0KRyXgLfZUPd985kU91wUt/NNASseQWbOV2KqBDCaxaZrHpzokPQ
         bFdhuWNsEmtxrh5vWYvSlZSWzp6sqhg5xUbrMuPFrkHVblBmwHnE7LsXln5HtUbT1Wi7
         NCQFdgHmzo2SZQx1zXDAfUHDCljYD7/2nyEDGAXK1mdFlPMGa2j+w6Ata1rjSGTV4Ir3
         hzl4v5Sd24qiAx8SGggWUr6TdmpDS4ya5fdy/k72kVPrF8lCOkUSY9JkZRRfG3WqcJ48
         xKJOdOBsn62wkEKxyGektbXUygi4ArpWjqO4ePXwW+GKNWWhelIqLahqyX+yy4aOd+r8
         fidQ==
X-Gm-Message-State: AOJu0Yw9xJILsNrc6VE4gYyeZZriIGpfjSudX/QpzHRrjisW1VdMQstB
	sDaPr/EMCbdphBXsHBeNh+NS3i+ob5zIwavfgrHeDthoSaSNVjXdCJqJn8D/iQ==
X-Google-Smtp-Source: AGHT+IE62pA+AlK6ODZzrN6tx0EnYWfySncSwrG+qjKugOjwjHNerd8PzHaVwzLru/XgVMxnJd0myQ==
X-Received: by 2002:a05:651c:2c9:b0:2cd:9fbc:d3d3 with SMTP id f9-20020a05651c02c900b002cd9fbcd3d3mr619801ljo.69.1706095673809;
        Wed, 24 Jan 2024 03:27:53 -0800 (PST)
Message-ID: <5f6c35ed-de1f-4a47-897d-33ed979b28db@suse.com>
Date: Wed, 24 Jan 2024 12:27:49 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 30/34] xen/riscv: add minimal stuff to processor.h to
 build full Xen
Content-Language: en-US
To: Oleksii <oleksii.kurochko@gmail.com>
Cc: Alistair Francis <alistair.francis@wdc.com>,
 Bob Eshleman <bobbyeshleman@gmail.com>, Connor Davis
 <connojdavis@gmail.com>, Andrew Cooper <andrew.cooper3@citrix.com>,
 George Dunlap <george.dunlap@citrix.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>,
 xen-devel@lists.xenproject.org
References: <cover.1703255175.git.oleksii.kurochko@gmail.com>
 <5bd7c5db6638f09dabdc13a6e12f0b204eacb234.1703255175.git.oleksii.kurochko@gmail.com>
 <aa4d18c5-a8e0-44a6-ae7e-16fd9cd029b4@suse.com>
 <5f8291916b01a2b29a16bd1345fc20e3d4f29cab.camel@gmail.com>
 <b8f47c93-43c4-4c61-a569-7d07e811c6ab@suse.com>
 <22a0c2444201262202cd60d6d5a1cdff62c236bf.camel@gmail.com>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <22a0c2444201262202cd60d6d5a1cdff62c236bf.camel@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 24.01.2024 11:12, Oleksii wrote:
> On Wed, 2024-01-24 at 09:19 +0100, Jan Beulich wrote:
>> On 23.01.2024 18:08, Oleksii wrote:
>>> On Tue, 2024-01-23 at 12:39 +0100, Jan Beulich wrote:
>>>> On 22.12.2023 16:13, Oleksii Kurochko wrote:
>>>>> @@ -53,6 +56,18 @@ struct cpu_user_regs
>>>>>      unsigned long pregs;
>>>>>  };
>>>>>  
>>>>> +/* TODO: need to implement */
>>>>> +#define cpu_to_core(cpu)   (0)
>>>>> +#define cpu_to_socket(cpu) (0)
>>>>> +
>>>>> +static inline void cpu_relax(void)
>>>>> +{
>>>>> +    /* Encoding of the pause instruction */
>>>>> +    __asm__ __volatile__ ( ".insn 0x100000F" );
>>>>
>>>> binutils 2.40 knows "pause" - why use .insn then?
>>> I thought that for this instruction it is needed to have extension
>>> ZIHINTPAUSE ( according to Linux Kernel source code [1] ) and to
>>> cover
>>> older version.
>>
>> Well, of course you'll need to enable the extension then for gas. But
>> as long as you use the insn unconditionally, that's all fine and
>> natural. Another thing would be if you meant to also run on systems
>> not supporting the extension: Then the above use of .insn would need
>> to become conditional anyway.
> Then it makes sense to use "pause". 
> Let's assume that for now we are running only on systems which support
> the extension until we won't face compilation issue for some system.

Gives me the impression that you still don't properly separate the two
aspects: One is what systems Xen is to run on, and other is what's
needed to make Xen build properly. The first needs documenting (and
ideally at some point actually enforcing), while the latter may require
e.g. compiler command line option adjustments.

Jan


From xen-devel-bounces@lists.xenproject.org Wed Jan 24 11:34:25 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 24 Jan 2024 11:34:25 +0000
Received: from list by lists.xenproject.org with outflank-mailman.670957.1044063 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSbWN-0006Es-MQ; Wed, 24 Jan 2024 11:34:19 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 670957.1044063; Wed, 24 Jan 2024 11:34:19 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSbWN-0006El-JW; Wed, 24 Jan 2024 11:34:19 +0000
Received: by outflank-mailman (input) for mailman id 670957;
 Wed, 24 Jan 2024 11:34:18 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=bgOV=JC=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rSbWM-0006Ef-DU
 for xen-devel@lists.xenproject.org; Wed, 24 Jan 2024 11:34:18 +0000
Received: from mail-lj1-x22f.google.com (mail-lj1-x22f.google.com
 [2a00:1450:4864:20::22f])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 82038e6d-baac-11ee-98f5-6d05b1d4d9a1;
 Wed, 24 Jan 2024 12:34:17 +0100 (CET)
Received: by mail-lj1-x22f.google.com with SMTP id
 38308e7fff4ca-2cf2a381b86so3567641fa.0
 for <xen-devel@lists.xenproject.org>; Wed, 24 Jan 2024 03:34:17 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 cd23-20020a0566381a1700b0046e4195769csm238998jab.79.2024.01.24.03.34.13
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 24 Jan 2024 03:34:16 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 82038e6d-baac-11ee-98f5-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1706096057; x=1706700857; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=AwAWUtC54XrA/Dhk1Q7tkyxk5kE1pvy5hgugkUUJqXY=;
        b=Ty7Uqt4jNUuo3aS7nXKXQ+SK0FNXDn52OxT90Zx1T1B8JCfyJHBP1gcBbrl50oOWoq
         SLrCcEKgFKe8OnZA2VZk2mdy7JAZ5pCGiZqwh4H3eOtObqEKodNQkPYzEM2dgDxk6HTP
         ZWpz4VnwJa6bNM2nFUiN2IrWKhP6zIFkk+GX/6I1xsSHkkmhjQFTeX557+G6fJHrN+K7
         /nUK/NOeTA0VjyQpplMe1I93qzRWcvtTrxtkEHnv6nvZ0VhaYjBkDQpOq3LqcIIkem41
         snDE/Qp6t/F8DYDShZ4VAGBJypwGvRcOSN16Y05mnmiUDY/Y+3az1UWpYFaiUgsHVAWD
         4t/A==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706096057; x=1706700857;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=AwAWUtC54XrA/Dhk1Q7tkyxk5kE1pvy5hgugkUUJqXY=;
        b=tco92ytqPkMw67fbGI4ys7W4GksdyZ43rhN7m+c1DqO9D7V4R07fpRsJQSQh9QVO8l
         ATWaRO9bsp9mThnvT4Fq89k2WI0rhPPVkL79KNKwmH4uWMROrfEq1nte6bVkrAgR6p+M
         ofyHwT6rpcmEbHd+jzXrbTO2bPE04tS/iTTOJYhfsopicGHRMdHlRcjqlz0KPLwsgQ/F
         lNxkTUqJzs4HQzdsCazaSd3rDVCh1TRmXQ13M0o0rjgVsuQ5c1S7KOS+SA8RxwkowT74
         EVNa3IeQ5ES1bxG7rRhl9uPdmfbq3+HVGt/7sjEGcU5wQLP7DVd05NowTYDbvYE5pPWK
         AJhQ==
X-Gm-Message-State: AOJu0YxVsKFpzk0ATkbPDYJKhirwYqw7MtnLS3AbgtquS7ZdRXmmBe3E
	Ufu01u2x6JdDex+oVa0xD1dtTTzqeaAvDMzbZUHydN0/FsbqboksoQdmQ32tyg==
X-Google-Smtp-Source: AGHT+IGC8DNBTsR1xB6RxQuQQdICZHVa4JilOizikVtH/AzQ1RKspwvz6uHbszemykwq73WYSdPJZg==
X-Received: by 2002:a2e:868b:0:b0:2cf:159e:d401 with SMTP id l11-20020a2e868b000000b002cf159ed401mr755555lji.36.1706096056905;
        Wed, 24 Jan 2024 03:34:16 -0800 (PST)
Message-ID: <a3233487-965b-49ae-bebe-e5476fcda29c@suse.com>
Date: Wed, 24 Jan 2024 12:34:10 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v12.2 01/15] vpci: use per-domain PCI lock to protect vpci
 structure
Content-Language: en-US
To: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
Cc: Stewart Hildebrand <stewart.hildebrand@amd.com>,
 Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>,
 Andrew Cooper <andrew.cooper3@citrix.com>, Wei Liu <wl@xen.org>,
 George Dunlap <george.dunlap@citrix.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>,
 Jun Nakajima <jun.nakajima@intel.com>, Kevin Tian <kevin.tian@intel.com>,
 Paul Durrant <paul@xen.org>, Volodymyr Babchuk <volodymyr_babchuk@epam.com>,
 xen-devel@lists.xenproject.org
References: <20240109215145.430207-1-stewart.hildebrand@amd.com>
 <20240109215145.430207-2-stewart.hildebrand@amd.com>
 <20240115194309.45683-1-stewart.hildebrand@amd.com>
 <715e40c9-1776-4677-9565-dac1565a2aa8@suse.com> <Za_WGzS14Eqt8yZF@macbook>
 <ae7a57f2-2433-4b75-ab45-c8be55d489c9@suse.com> <ZbDXXyucJhLJ4u9H@macbook>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <ZbDXXyucJhLJ4u9H@macbook>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 24.01.2024 10:24, Roger Pau Monné wrote:
> On Wed, Jan 24, 2024 at 09:48:35AM +0100, Jan Beulich wrote:
>> On 23.01.2024 16:07, Roger Pau Monné wrote:
>>> On Tue, Jan 23, 2024 at 03:32:12PM +0100, Jan Beulich wrote:
>>>> On 15.01.2024 20:43, Stewart Hildebrand wrote:
>>>>> @@ -2888,6 +2888,8 @@ int allocate_and_map_msi_pirq(struct domain *d, int index, int *pirq_p,
>>>>>  {
>>>>>      int irq, pirq, ret;
>>>>>  
>>>>> +    ASSERT(pcidevs_locked() || rw_is_locked(&d->pci_lock));
>>>>
>>>> If either lock is sufficient to hold here, ...
>>>>
>>>>> --- a/xen/arch/x86/physdev.c
>>>>> +++ b/xen/arch/x86/physdev.c
>>>>> @@ -123,7 +123,9 @@ int physdev_map_pirq(domid_t domid, int type, int *index, int *pirq_p,
>>>>>  
>>>>>      case MAP_PIRQ_TYPE_MSI:
>>>>>      case MAP_PIRQ_TYPE_MULTI_MSI:
>>>>> +        pcidevs_lock();
>>>>>          ret = allocate_and_map_msi_pirq(d, *index, pirq_p, type, msi);
>>>>> +        pcidevs_unlock();
>>>>>          break;
>>>>
>>>
>>> IIRC (Stewart can further comment) this is done holding the pcidevs
>>> lock to keep the path unmodified, as there's no need to hold the
>>> per-domain rwlock.
>>
>> Yet why would we prefer to acquire a global lock when a per-domain one
>> suffices?
> 
> I was hoping to introduce less changes, specially if they are not
> strictly required, as it's less risk.  I'm always quite worry of
> locking changes.

In which case more description / code commenting is needed. The pattern
of the assertions looks dangerous. Even if (as you say in a later reply)
this is only temporary, we all know how long "temporary" can be. It
might even be advisable to introduce a helper construct. That would then
be where the respective code comment goes, clarifying that the _sole_
purpose is to guarantee a pdev to not go away; no further protection of
any state, no other critical region aspects (assuming of course all of
this is actually true for all of the affected use sites).

Jan


From xen-devel-bounces@lists.xenproject.org Wed Jan 24 11:41:47 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 24 Jan 2024 11:41:47 +0000
Received: from list by lists.xenproject.org with outflank-mailman.670961.1044073 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSbdX-0000V2-DG; Wed, 24 Jan 2024 11:41:43 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 670961.1044073; Wed, 24 Jan 2024 11:41:43 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSbdX-0000Uv-A8; Wed, 24 Jan 2024 11:41:43 +0000
Received: by outflank-mailman (input) for mailman id 670961;
 Wed, 24 Jan 2024 11:41:41 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>) id 1rSbdV-0000Td-Mu
 for xen-devel@lists.xenproject.org; Wed, 24 Jan 2024 11:41:41 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rSbdV-00038F-6A; Wed, 24 Jan 2024 11:41:41 +0000
Received: from [15.248.2.233] (helo=[10.24.67.33])
 by xenbits.xenproject.org with esmtpsa
 (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rSbdU-0007Bl-U9; Wed, 24 Jan 2024 11:41:41 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
	s=20200302mail; h=Content-Transfer-Encoding:Content-Type:In-Reply-To:From:
	References:Cc:To:Subject:MIME-Version:Date:Message-ID;
	bh=JbdnSJN23Uz8HwFPiRoM3GL3kCU+LLlrS81Z6u8HWC0=; b=47MTzOaroJ/3I1Ss+5pvN4wkKz
	JYBm4YttMbk1Dab61W2wIQhVyBvVRU52II9ab+vr0n/Qe7jjgtqQAhCMNt5Ahvdupd3qh7xNzTX2K
	NippIs/3SJ+sblL1s1217eDJ3OChqM9iwxkSzcNbnm1eQZBqRfzXwhVHkaXuK+9hSQ+g=;
Message-ID: <56da4008-f0a5-437f-b3ff-50220ea50c81@xen.org>
Date: Wed, 24 Jan 2024 11:41:39 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 1/2] arm: vgic: Add the ability to trigger MSIs from the
 Hypervisor
Content-Language: en-GB
To: Mykyta Poturai <Mykyta_Poturai@epam.com>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Stefano Stabellini <sstabellini@kernel.org>,
 Bertrand Marquis <bertrand.marquis@arm.com>,
 Michal Orzel <michal.orzel@amd.com>,
 Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>
References: <cover.1705066642.git.mykyta_poturai@epam.com>
 <e109a4092d80a825256d26a8e56dbb5a2ae6d04e.1705066642.git.mykyta_poturai@epam.com>
From: Julien Grall <julien@xen.org>
In-Reply-To: <e109a4092d80a825256d26a8e56dbb5a2ae6d04e.1705066642.git.mykyta_poturai@epam.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

Hi,

On 14/01/2024 10:01, Mykyta Poturai wrote:
> Add the vgic_its_trigger_msi() function to the vgic interface. This
> function allows to inject MSIs from the Hypervisor to the guest.
> Which is useful for userspace PCI backend drivers.
> 
> Signed-off-by: Mykyta Poturai <mykyta_poturai@epam.com>
> ---
>   xen/arch/arm/include/asm/vgic.h | 11 +++++++++++
>   xen/arch/arm/vgic-v3-its.c      | 35 +++++++++++++++++++++++++++++++++
>   2 files changed, 46 insertions(+)
> 
> diff --git a/xen/arch/arm/include/asm/vgic.h b/xen/arch/arm/include/asm/vgic.h
> index 922779ce14..4695743848 100644
> --- a/xen/arch/arm/include/asm/vgic.h
> +++ b/xen/arch/arm/include/asm/vgic.h
> @@ -317,6 +317,17 @@ extern bool vgic_migrate_irq(struct vcpu *old, struct vcpu *new, unsigned int ir
>   extern void vgic_check_inflight_irqs_pending(struct domain *d, struct vcpu *v,
>                                                unsigned int rank, uint32_t r);
>   
> +#ifdef CONFIG_HAS_ITS
> +int vgic_its_trigger_msi(struct domain *d, paddr_t doorbell_address,
> +                                u32 devid, u32 eventid);
> +#else
> +static inline int vgic_its_trigger_msi(struct domain *d, paddr_t doorbell_address,
> +                                u32 devid, u32 eventid)
> +{
> +    return -EOPNOTSUPP;
> +}
> +#endif /* CONFIG_HAS_ITS */
> +
>   #endif /* !CONFIG_NEW_VGIC */
>   
>   /*** Common VGIC functions used by Xen arch code ****/
> diff --git a/xen/arch/arm/vgic-v3-its.c b/xen/arch/arm/vgic-v3-its.c
> index 70b5aeb822..683a378f6e 100644
> --- a/xen/arch/arm/vgic-v3-its.c
> +++ b/xen/arch/arm/vgic-v3-its.c
> @@ -1484,6 +1484,41 @@ static int vgic_v3_its_init_virtual(struct domain *d, paddr_t guest_addr,
>       return 0;
>   }
>   
> +int vgic_its_trigger_msi(struct domain *d, paddr_t doorbell_address,
> +                                u32 devid, u32 eventid)
> +{
> +    struct vcpu *vcpu;
> +    struct virt_its *pos, *temp;
> +    struct virt_its *its = NULL;
> +    uint32_t vlpi;
> +    bool ret;
> +
> +    list_for_each_entry_safe( pos, temp, &d->arch.vgic.vits_list, vits_list )
> +    {
> +        if ( pos->doorbell_address == doorbell_address )
> +        {
> +            its = pos;
> +            break;
> +        }
> +    }
> +
> +    if ( !its )
> +        return -EINVAL;
> +
> +    spin_lock(&its->its_lock);
> +    ret = read_itte(its, devid, eventid, &vcpu, &vlpi);
> +    spin_unlock(&its->its_lock);
> +    if ( !ret )
> +        return -1;
> +
> +    if ( vlpi == INVALID_LPI )
> +        return -1;

Reading the code, I think you want to use get_event_pending_irq(). This 
will return the associated pending_irq. Then you can...

> +
> +    vgic_vcpu_inject_lpi(its->d, vlpi);

... open-code vgic_vcpu_inject_lpi(). This would avoid access the guest 
memory (done by read_itte) and reduce to just one lookup (today you are 
doing two: read_itte() and irq_to_pending()).

Cheers,

-- 
Julien Grall


From xen-devel-bounces@lists.xenproject.org Wed Jan 24 12:16:52 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 24 Jan 2024 12:16:52 +0000
Received: from list by lists.xenproject.org with outflank-mailman.670974.1044087 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rScBQ-0000Vr-Db; Wed, 24 Jan 2024 12:16:44 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 670974.1044087; Wed, 24 Jan 2024 12:16:44 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rScBQ-0000Vk-9U; Wed, 24 Jan 2024 12:16:44 +0000
Received: by outflank-mailman (input) for mailman id 670974;
 Wed, 24 Jan 2024 12:16:42 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rScBO-0000Va-Nd; Wed, 24 Jan 2024 12:16:42 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rScBO-0003wX-JX; Wed, 24 Jan 2024 12:16:42 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rScBO-0001cn-4u; Wed, 24 Jan 2024 12:16:42 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rScBO-0006AR-4O; Wed, 24 Jan 2024 12:16:42 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=c8gblfrBXeIgmJ4zHi5UVk/X6jjNDr2BwLilWUxwoIc=; b=6Q0Ezaes6LRQL+JErtzMeNLv4A
	JZOSUoAITmYKMQqgvX3wSEZwRTND1XT1ZVzxInFe+vB1/2U6I91zIPBib1hriYvGa2sek9/l9/eQl
	zdg8D2pWfH9wkq7Wnv/JVazbAln/Dhn0ZFKDeWPAU7aBxjhV99ZiKwlVmSWlwNlMAiEQ=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184443-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [linux-linus test] 184443: tolerable FAIL - PUSHED
X-Osstest-Failures:
    linux-linus:test-armhf-armhf-libvirt:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    linux-linus:test-amd64-amd64-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    linux-linus:test-amd64-amd64-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-qcow2:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-raw:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    linux-linus:test-amd64-amd64-qemuu-nested-amd:debian-hvm-install/l1/l2:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-xsm:migrate-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-thunderx:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-thunderx:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-libvirt-xsm:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-libvirt-xsm:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-credit2:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-credit2:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-xsm:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-xsm:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-credit1:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-credit1:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-arndale:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-arndale:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-rtds:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-rtds:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-multivcpu:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-multivcpu:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-libvirt-raw:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-vhd:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-vhd:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-qcow2:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-vhd:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-vhd:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-qcow2:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit1:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit1:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit2:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit2:saverestore-support-check:fail:nonblocking
X-Osstest-Versions-This:
    linux=615d300648869c774bd1fe54b4627bb0c20faed4
X-Osstest-Versions-That:
    linux=7ed2632ec7d72e926b9e8bcc9ad1bb0cd37274bf
From: osstest service owner <osstest-admin@xenproject.org>
Date: Wed, 24 Jan 2024 12:16:42 +0000

flight 184443 linux-linus real [real]
http://logs.test-lab.xenproject.org/osstest/logs/184443/

Failures :-/ but no regressions.

Tests which did not succeed, but are not blocking:
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 184432
 test-amd64-amd64-xl-qemut-win7-amd64 19 guest-stop            fail like 184432
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 184432
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 184432
 test-armhf-armhf-libvirt-qcow2 15 saverestore-support-check   fail like 184432
 test-armhf-armhf-libvirt-raw 15 saverestore-support-check    fail  like 184432
 test-amd64-amd64-xl-qemut-ws16-amd64 19 guest-stop            fail like 184432
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 184432
 test-amd64-amd64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt     15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-thunderx 15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-thunderx 16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl          15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl          16 saverestore-support-check    fail   never pass
 test-arm64-arm64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-xsm 16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-credit2  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit2  16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-xsm      15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-xsm      16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-credit1  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit1  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-arndale  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-arndale  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-rtds     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-rtds     16 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-armhf-armhf-xl-multivcpu 15 migrate-support-check        fail  never pass
 test-armhf-armhf-xl-multivcpu 16 saverestore-support-check    fail  never pass
 test-armhf-armhf-libvirt     15 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 15 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-raw 14 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-vhd      14 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-vhd      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-qcow2 14 migrate-support-check        fail never pass
 test-armhf-armhf-libvirt-raw 14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      15 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-qcow2 14 migrate-support-check        fail never pass
 test-armhf-armhf-xl          15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-credit1  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit1  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-credit2  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit2  16 saverestore-support-check    fail   never pass

version targeted for testing:
 linux                615d300648869c774bd1fe54b4627bb0c20faed4
baseline version:
 linux                7ed2632ec7d72e926b9e8bcc9ad1bb0cd37274bf

Last test of basis   184432  2024-01-23 05:00:38 Z    1 days
Testing same since   184443  2024-01-24 01:43:31 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Geert Uytterhoeven <geert+renesas@glider.be>
  Linus Torvalds <torvalds@linux-foundation.org>
  Petr Pavlu <petr.pavlu@suse.com>
  Steven Rostedt (Google) <rostedt@goodmis.org>
  Tom Zanussi <tom.zanussi@linux.intel.com>

jobs:
 build-amd64-xsm                                              pass    
 build-arm64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64                                                  pass    
 build-arm64                                                  pass    
 build-armhf                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-arm64-libvirt                                          pass    
 build-armhf-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-pvops                                            pass    
 build-arm64-pvops                                            pass    
 build-armhf-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-amd64-amd64-xl                                          pass    
 test-amd64-coresched-amd64-xl                                pass    
 test-arm64-arm64-xl                                          pass    
 test-armhf-armhf-xl                                          pass    
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm           pass    
 test-amd64-amd64-xl-qemut-stubdom-debianhvm-amd64-xsm        pass    
 test-amd64-amd64-xl-qemut-debianhvm-i386-xsm                 pass    
 test-amd64-amd64-xl-qemuu-debianhvm-i386-xsm                 pass    
 test-amd64-amd64-libvirt-xsm                                 pass    
 test-arm64-arm64-libvirt-xsm                                 pass    
 test-amd64-amd64-xl-xsm                                      pass    
 test-arm64-arm64-xl-xsm                                      pass    
 test-amd64-amd64-qemuu-nested-amd                            fail    
 test-amd64-amd64-xl-pvhv2-amd                                pass    
 test-amd64-amd64-dom0pvh-xl-amd                              pass    
 test-amd64-amd64-xl-qemut-debianhvm-amd64                    pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64                    pass    
 test-amd64-amd64-freebsd11-amd64                             pass    
 test-amd64-amd64-freebsd12-amd64                             pass    
 test-amd64-amd64-xl-qemuu-ovmf-amd64                         pass    
 test-amd64-amd64-xl-qemut-win7-amd64                         fail    
 test-amd64-amd64-xl-qemuu-win7-amd64                         fail    
 test-amd64-amd64-xl-qemut-ws16-amd64                         fail    
 test-amd64-amd64-xl-qemuu-ws16-amd64                         fail    
 test-armhf-armhf-xl-arndale                                  pass    
 test-amd64-amd64-examine-bios                                pass    
 test-amd64-amd64-xl-credit1                                  pass    
 test-arm64-arm64-xl-credit1                                  pass    
 test-armhf-armhf-xl-credit1                                  pass    
 test-amd64-amd64-xl-credit2                                  pass    
 test-arm64-arm64-xl-credit2                                  pass    
 test-armhf-armhf-xl-credit2                                  pass    
 test-amd64-amd64-xl-qemuu-dmrestrict-amd64-dmrestrict        pass    
 test-amd64-amd64-examine                                     pass    
 test-arm64-arm64-examine                                     pass    
 test-armhf-armhf-examine                                     pass    
 test-amd64-amd64-qemuu-nested-intel                          pass    
 test-amd64-amd64-xl-pvhv2-intel                              pass    
 test-amd64-amd64-dom0pvh-xl-intel                            pass    
 test-amd64-amd64-libvirt                                     pass    
 test-armhf-armhf-libvirt                                     pass    
 test-amd64-amd64-xl-multivcpu                                pass    
 test-armhf-armhf-xl-multivcpu                                pass    
 test-amd64-amd64-pair                                        pass    
 test-amd64-amd64-libvirt-pair                                pass    
 test-amd64-amd64-xl-pvshim                                   pass    
 test-amd64-amd64-pygrub                                      pass    
 test-amd64-amd64-libvirt-qcow2                               pass    
 test-armhf-armhf-libvirt-qcow2                               pass    
 test-amd64-amd64-libvirt-raw                                 pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-armhf-armhf-libvirt-raw                                 pass    
 test-amd64-amd64-xl-rtds                                     pass    
 test-armhf-armhf-xl-rtds                                     pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64-shadow             pass    
 test-amd64-amd64-xl-shadow                                   pass    
 test-arm64-arm64-xl-thunderx                                 pass    
 test-amd64-amd64-examine-uefi                                pass    
 test-amd64-amd64-xl-vhd                                      pass    
 test-arm64-arm64-xl-vhd                                      pass    
 test-armhf-armhf-xl-vhd                                      pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Pushing revision :

hint: The 'hooks/update' hook was ignored because it's not set as executable.
hint: You can disable this warning with `git config advice.ignoredHook false`.
hint: The 'hooks/post-receive' hook was ignored because it's not set as executable.
hint: You can disable this warning with `git config advice.ignoredHook false`.
hint: The 'hooks/post-update' hook was ignored because it's not set as executable.
hint: You can disable this warning with `git config advice.ignoredHook false`.
To xenbits.xen.org:/home/xen/git/linux-pvops.git
   7ed2632ec7d7..615d30064886  615d300648869c774bd1fe54b4627bb0c20faed4 -> tested/linux-linus


From xen-devel-bounces@lists.xenproject.org Wed Jan 24 13:09:09 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 24 Jan 2024 13:09:09 +0000
Received: from list by lists.xenproject.org with outflank-mailman.670986.1044098 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSczs-0002PA-8f; Wed, 24 Jan 2024 13:08:52 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 670986.1044098; Wed, 24 Jan 2024 13:08:52 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSczs-0002P3-5a; Wed, 24 Jan 2024 13:08:52 +0000
Received: by outflank-mailman (input) for mailman id 670986;
 Wed, 24 Jan 2024 13:08:51 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=I+Nb=JC=linaro.org=philmd@srs-se1.protection.inumbo.net>)
 id 1rSczr-0002Ox-02
 for xen-devel@lists.xenproject.org; Wed, 24 Jan 2024 13:08:51 +0000
Received: from mail-wr1-x434.google.com (mail-wr1-x434.google.com
 [2a00:1450:4864:20::434])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id b65f62b6-bab9-11ee-9b0f-b553b5be7939;
 Wed, 24 Jan 2024 14:08:48 +0100 (CET)
Received: by mail-wr1-x434.google.com with SMTP id
 ffacd0b85a97d-336c8ab0b20so5464177f8f.1
 for <xen-devel@lists.xenproject.org>; Wed, 24 Jan 2024 05:08:48 -0800 (PST)
Received: from [192.168.69.100] (lgp44-h02-176-184-8-67.dsl.sta.abo.bbox.fr.
 [176.184.8.67]) by smtp.gmail.com with ESMTPSA id
 b13-20020a05600010cd00b003392c1f40acsm10050862wrx.28.2024.01.24.05.08.45
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 24 Jan 2024 05:08:47 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: b65f62b6-bab9-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=linaro.org; s=google; t=1706101728; x=1706706528; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:from:references:cc:to
         :content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=P+w00aYVWLDaZ0z/ysw7lebbGl9R7ORAINPsdBB0cUQ=;
        b=hTOS2p0ExjKaXNqUUFh7nzWGkqXaVI3m3z/InsnrNvtezYv7hK9pBXZK46feyi6Qn/
         2Zut8GU2gGmWkjMTH9bnNPO5YdtSIWSkeeWvza/bH6fOLds738+HC5pLE+3RD5L727bl
         SbuDquAcWPmRcMzi1DQxJ0kVpyKPVNhxgfu8Ami/7WQWa+0PN3G8WaydOXZ7n4WbOPhQ
         gCW6xK9NA2au3pIa4l0ZSQV9Nnisar1kIU8uI5+kmwcoBoSDXfHwPPG2uJBYw7pOX77g
         Uww28HUlt8po741cB7UHM/A9CtN/f5xroRwC//Bacy3HBWP987B9eMDnncWsrYS36NN5
         yYEA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706101728; x=1706706528;
        h=content-transfer-encoding:in-reply-to:from:references:cc:to
         :content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=P+w00aYVWLDaZ0z/ysw7lebbGl9R7ORAINPsdBB0cUQ=;
        b=FDPWshnofT51Aj8QH0DlYSpzNlBDNYmEL8LTRS499/7cZtS2j0P+4kHwVIQATvznPG
         vQ/lB24UHDYHCMrYlyCMzWU28uHl+x2UBgfOQ/WNP4VAbiTR+ZuCiZxO+NbZe33wZPr9
         W29fVmlhW0bLbkLUk2EhpHCkNOL4ca3SXSQ5lDWxf8Y7nwNWXIQ4XG+93h21GJoNOk+3
         rsrGmjEF73ua/oxM/JblACk25lD8MV7m1D5/lmiHJHb30yLBz34Wi/h5QcSRRWpKkoma
         VbUqv9r/3+fjg5jKtvZQWNT9WG4BsrkG7ljOwVFIvjjpxcy2t51VhkaW7H57CFqaTrIX
         2Rsw==
X-Gm-Message-State: AOJu0Yzhnsv3aXiyN7nxC9Alve/V6A2LvOA/2Agv8uL/dcZz2buoKjfp
	YLw190QxmUcARg9u8DQA8yOhRLceSzOqS3eOjoZy6egGI5APpd7rT16vMQb4JmU=
X-Google-Smtp-Source: AGHT+IEuxiEzF8Ew3KDQATXOxVv+0frNsAg3XzkqsJwP9FR2cDsB2gTwNv0P4S9O4vtXVDRoWYc33w==
X-Received: by 2002:a05:6000:1291:b0:337:c4d3:cfa2 with SMTP id f17-20020a056000129100b00337c4d3cfa2mr512592wrx.30.1706101728284;
        Wed, 24 Jan 2024 05:08:48 -0800 (PST)
Message-ID: <33478869-d1c5-4f1c-9814-314e4076bfe5@linaro.org>
Date: Wed, 24 Jan 2024 14:08:44 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] hw/i386/pc_piix: Make piix_intx_routing_notifier_xen()
 more device independent
Content-Language: en-US
To: "Michael S. Tsirkin" <mst@redhat.com>,
 Bernhard Beschow <shentey@gmail.com>
Cc: qemu-devel@nongnu.org, Chuck Zmudzinski <brchuckz@aol.com>,
 Paolo Bonzini <pbonzini@redhat.com>,
 Stefano Stabellini <sstabellini@kernel.org>, xen-devel@lists.xenproject.org,
 David Woodhouse <dwmw2@infradead.org>, Eduardo Habkost
 <eduardo@habkost.net>, Marcel Apfelbaum <marcel.apfelbaum@gmail.com>,
 Paul Durrant <paul@xen.org>, Richard Henderson
 <richard.henderson@linaro.org>, Anthony PERARD <anthony.perard@citrix.com>
References: <20240107231623.5282-1-shentey@gmail.com>
 <B404ABCE-E6B5-4716-BA60-3CEE74B72701@gmail.com>
 <20240114072529-mutt-send-email-mst@kernel.org>
From: =?UTF-8?Q?Philippe_Mathieu-Daud=C3=A9?= <philmd@linaro.org>
In-Reply-To: <20240114072529-mutt-send-email-mst@kernel.org>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

On 14/1/24 13:25, Michael S. Tsirkin wrote:
> On Sun, Jan 14, 2024 at 12:21:59PM +0000, Bernhard Beschow wrote:
>>
>>
>> Am 7. Januar 2024 23:16:23 UTC schrieb Bernhard Beschow <shentey@gmail.com>:
>>> This is a follow-up on commit 89965db43cce "hw/isa/piix3: Avoid Xen-specific
>>> variant of piix3_write_config()" which introduced
>>> piix_intx_routing_notifier_xen(). This function is implemented in board code but
>>> accesses the PCI configuration space of the PIIX ISA function to determine the
>>> PCI interrupt routes. Avoid this by reusing pci_device_route_intx_to_irq() which
>>> makes piix_intx_routing_notifier_xen() more device-agnostic.
>>>
>>> One remaining improvement would be making piix_intx_routing_notifier_xen()
>>> agnostic towards the number of PCI interrupt routes and move it to xen-hvm.
>>> This might be useful for possible Q35 Xen efforts but remains a future exercise
>>> for now.
>>>
>>> Signed-off-by: Bernhard Beschow <shentey@gmail.com>
>>
>> Hi Michael,
>>
>> could you tag this, too? Or do we need another R-b?
>>
>> Best regards,
>> Bernhard
> 
> tagged, too.

FYI merged as commit ebd92d6de3.


From xen-devel-bounces@lists.xenproject.org Wed Jan 24 13:12:50 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 24 Jan 2024 13:12:50 +0000
Received: from list by lists.xenproject.org with outflank-mailman.670990.1044109 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSd3g-0004DE-OC; Wed, 24 Jan 2024 13:12:48 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 670990.1044109; Wed, 24 Jan 2024 13:12:48 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSd3g-0004D7-Kg; Wed, 24 Jan 2024 13:12:48 +0000
Received: by outflank-mailman (input) for mailman id 670990;
 Wed, 24 Jan 2024 13:12:47 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=gMsF=JC=cloud.com=kelly.choi@srs-se1.protection.inumbo.net>)
 id 1rSd3f-0004Cy-4K
 for xen-devel@lists.xenproject.org; Wed, 24 Jan 2024 13:12:47 +0000
Received: from mail-lf1-x130.google.com (mail-lf1-x130.google.com
 [2a00:1450:4864:20::130])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 431a66c5-baba-11ee-98f5-6d05b1d4d9a1;
 Wed, 24 Jan 2024 14:12:44 +0100 (CET)
Received: by mail-lf1-x130.google.com with SMTP id
 2adb3069b0e04-51016492b14so246974e87.3
 for <xen-devel@lists.xenproject.org>; Wed, 24 Jan 2024 05:12:44 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 431a66c5-baba-11ee-98f5-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1706101964; x=1706706764; darn=lists.xenproject.org;
        h=cc:to:subject:message-id:date:from:in-reply-to:references
         :mime-version:from:to:cc:subject:date:message-id:reply-to;
        bh=g/G1ugZzrZbHA6LOwRxw6QHuobDH/OUiclucLl9IIu4=;
        b=XFPY2poDsxRGINr9cf46Ns8tvZ3Fx67NjyWinKsp7cEtbbZlH6zztGq7lWJcoGsqOU
         58qDWulXazpW+cUQHUedtalihHrUroxSwk9wSSK40jnjQpkd1uoy/R8zI2dv+at/OcGB
         RIrWY6VfWUwwhGI7ZxiXxn/pnh1pxx3KHe6nA=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706101964; x=1706706764;
        h=cc:to:subject:message-id:date:from:in-reply-to:references
         :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id
         :reply-to;
        bh=g/G1ugZzrZbHA6LOwRxw6QHuobDH/OUiclucLl9IIu4=;
        b=wsFjvVkfPeofroqdEM6u+FpuyCgAkl5cpBtNxG7okKCUo8Fo0wr5kYneF5gBgZx18R
         uETMlhS1lW3iBUq81crodAxZ4ToZFPjTZS9mWxzUldZ8Zx9aDkE16uuR8KWmgEDKS99T
         Bj6GR+kv8K5ZOt/m0ID6OJ6M7ihqprEBfN8w2t9IxuIpLMHYy6IgJmJRm36k3dsC735v
         CIgxH4TF5Hafnwsf/eB/Z0bCO/IRaXLxHNqtAs68nhAWeOE0paVfkdeaYwENSYm+36Va
         RhtidaCVeU0qdD+k9r063wtEeBVO09rg3NHGE04K9/db/NkEIAhcfxwBQiZezz8Oku4i
         HT2w==
X-Gm-Message-State: AOJu0Yx4xGz3b9L4fzpwT0ygH1Mf61hiN2HRw+BprtU4Ql4hIY6+Uhl2
	odoaLGP82m81I3+k6hQ2e+se8OpP2lWBs9Svp8v2+ttn9Lylbm4CvuhWarjErsTAT/jkKguNHNG
	Y9yQZm++V09gZyxFkqWH/42JVeFYcEhQ85i1/jg==
X-Google-Smtp-Source: AGHT+IHzUI1Im1snzCFzM5RQwYCtKBn7cwxteIW1aZvkao3MVxiIiVc9u9i0M9A0d+Cp6y5qo0xOANrs7lr5X7V5Oko=
X-Received: by 2002:a05:6512:3da3:b0:510:db4:9688 with SMTP id
 k35-20020a0565123da300b005100db49688mr634642lfv.168.1706101964189; Wed, 24
 Jan 2024 05:12:44 -0800 (PST)
MIME-Version: 1.0
References: <CAO-mL=yvVWjnOHSFSqcrknoXOqk-N3JY76qObQnzftrkmsq6xw@mail.gmail.com>
 <5309e7d3-7b3c-4522-99dc-bbd7734aeb34@suse.com>
In-Reply-To: <5309e7d3-7b3c-4522-99dc-bbd7734aeb34@suse.com>
From: Kelly Choi <kelly.choi@cloud.com>
Date: Wed, 24 Jan 2024 13:12:08 +0000
Message-ID: <CAO-mL=y1Sn2i0mafzGfRM6nWwmq+O6JcGs86kGqxT-315vQwKg@mail.gmail.com>
Subject: Re: Community Process Group - Proposal
To: Jan Beulich <jbeulich@suse.com>
Cc: committers@xenproject.org, xen-devel@lists.xenproject.org
Content-Type: multipart/alternative; boundary="00000000000086d956060fb0d10e"

--00000000000086d956060fb0d10e
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

- AB

Hi Jan,
Please see my reply to the points below

Many thanks,
Kelly Choi

Community Manager
Xen Project


On Mon, Jan 22, 2024 at 10:32=E2=80=AFAM Jan Beulich <jbeulich@suse.com> wr=
ote:

> On 17.01.2024 18:10, Kelly Choi wrote:
> > Hi everyone,
> >
> > I've spent a bit of time talking to various individuals and the advisor=
y
> > board about setting up a new Community Process Group.
> >
> > A survey was recently conducted to identify how the community as a whol=
e
> > feels about a certain situation. It was not intended to ban specific
> > wording or create a policy to do so, but more to give context that the
> > community has a wide range of ideas, and individuals may agree and
> disagree
> > a lot more frequently than we as individuals might think. It helps us
> > understand that as a community there are many situations where it is no=
t
> > clear. As such, the results indicated a very even split among the
> > community, which indicates a larger problem as we may not always come t=
o
> > agreement.
> >
> > There is obvious frustration with how certain matters are handled, as
> some
> > members may want the project to move faster, whereas others like to tak=
e
> a
> > cautious approach. Given we are an open source project, differences in
> > opinion are likely to happen and what we don=E2=80=99t want to do is ca=
use
> further
> > frustration.
> >
> > *This is where I would like to propose the idea of a =E2=80=98Community=
 Process
> > Group=E2=80=99.*
> >
> > A CPG can help as they will be able to advise members on similar issues
> > regarding community processes or appeals and decide on the best way
> > forward. To help with this process, I have consulted with various
> > individuals including some committers and conduct team members.
> >
> > *What is a CPG=E2=80=99s purpose?*
> > In the first instance, we would expect an informal vote resolves most
> > disagreements. However, there will be certain circumstances where the
> > outcome is not always agreed on.
> >
> > A CPG will be your second point of call, where you can escalate matters
> > quickly for a democratic solution.
>
> Between informal voting and this "second point of call", where does
> formal voting go?
>

Formal voting among committers will still exist in matters related to
technical decisions. The CPG handles disputes around processes and areas
where there are disagreements that can cause frustration around the
community, but don't necessarily break the code of conduct. For example,
naming conventions or how to move forward in cases of non-actionable
feedback.

>
> > Their purpose is to resolve process issues and informal vote appeals to
> > avoid matters going to a formal vote, but also act as a representative =
on
> > behalf of others in the community on future matters.
> >
> > For example:
> >
> >    - Naming conventions
> >    - Whether feedback requesting changes on a patch series is acceptabl=
e
> >    - How to move forward in case of non-actionable feedback to a patch
> >    series
> >    - How to move forward when a contributor or reviewer has not been
> >    responsive
> >    - Policy questions not related to the code of conduct
> >
> > *What is their role and responsibility?*
> >
> > The CPG has the authority to propose a resolution to situations where
> there
> > are disagreements, that don=E2=80=99t involve large technical decisions=
. Their
> > decision proposed should be accepted as final since members will have
> > discussed the best steps and come to a consensus vote.
> >
> > The CPG does not aim to replace the committers' authority or the adviso=
ry
> > board but instead holds the authority to make decisions that are in the
> > best interest of the community in relation to processes. Committers sti=
ll
> > hold the power should there be a formal escalation regarding technical
> > decisions, but this would be extremely rare. Advisory Board members hol=
d
> > the final power regarding project and business-wide decisions.
>
> Nevertheless it doesn't become clear to me how adding yet another authori=
ty
> besides the committers will actually help.
>

We've seen cases where committers can disagree, and rather than calling a
formal vote each time among those that disagree, the wider community can
help provide clarity on the best steps forward.
The individuals in this CPG aim to help represent wider collective feedback
and prevent disagreements from coming to a standstill, which we have seen
in the past.

>
> > *How are members selected?*
> > The CPG will be composed of 5 randomly selected members in total.
> > An odd number has been purposely selected to avoid an impasse during
> > decisions.
> >
> > The criteria:
> > Individual members must be active contributors and are willing to help
> the
> > community succeed. As such they must be a part of the following groups:
> >
> >    - Committers
> >    - Active Maintainers: maintainers with >=3D 20 reviews in the last 2
> >    releases
> >    - Active Contributors: contributors with >=3D 10 commits in the last=
 2
> >    releases
>
> I'm afraid I can't leave this uncommented, as matching a common pattern
> I'm generally unhappy with. Whatever the numbers you select in such
> criteria, they'll open up an easy road for faking. At the same time it
> of course is difficult to come up with any non-numeric or not-only-
> numeric criteria. For example, I'd be heavily inclined to ask that
> "non-trivial" be added to both of the numbers. Yet then there arises a
> judgement issue: What's non-trivial can be entirely different
> depending on who you ask.
>
> What definitely needs clarifying is what "review" is: Are R-b tags
> counted, or is it the number of replies sent commenting on patches?
>

Please see Stefano's reply

>
> > Future rotations of CPG members:
> > New members will be selected randomly for each new release to ensure
> > fairness.
> >
> > *Expectations*
> > CPG members are expected to use their best judgement of what is best fo=
r
> > the community in terms of conflict resolution and process improvements.
> > They can propose an outcome that progresses the project forward.
> > The CPG is also expected to address wider concerns, feedback, and ideas
> > during a monthly meeting with all community members.
> >
> > For example:
> >
> >    - If someone is displaying repeated concerning behaviour that disrup=
ts
> >    the community, members can ask the CPG for help on a solution. (This
> is
> >    different from a code of conduct violation which would be for seriou=
s
> >    offences only.)
> >    - Help drive discussions on how much we deviate from technical
> >    specifications
> >
> > *Next steps*
> > Given this suggestion is a big change in what I hope is a positive
> > direction, we will require your feedback and a final formal vote on the
> > process, before it is implemented into the governance policies. The
> > specific wording can be decided after this proposal.
> >
> > This will hopefully help us overcome some of the frustrations and issue=
s
> we
> > have seen in the community from a difference in opinion as a collective
> > discussion will now be made. Should we need to, the process can be
> reviewed
> > to improve at later stages.
>
> Related to what I said earlier: Should it turn out that disagreement with=
in
> the CPG is difficult to deal with, will we then gain yet another authorit=
y?
> Imo before adding such a new instance, it wants properly sorting
> - why with what we already have we can't deal with the (supposedly few)
>   situations, and
> - in how far introducing a new instance will (likely) once and for all
>   avoid similar situations arising again, just one layer up (i.e. to make
>   sure there's no scalability issue, due to proliferation of instances).
>

If we are looking at the current landscape, open-source projects tend to
have disagreements as individuals will have varying opinions.
When committers are at a standstill, it tends to be because we cannot agree
on an outcome. As we have seen in the past, there are situations where
members have disagreed even during an informal vote. Those matters wouldn't
be appropriate for a formal vote either, and we previously didn't have
anything in between to move those disputes forward. I appreciate it adds
another layer of complexity but given that the CPG is representative of the
community, their decision should be the one that stands to help the project
progress. This also helps give a voice to the many members in our
community, who are passionate about improving Xen. Until we try something
new, there is no guarantee that staying stagnant will improve existing
conflict.


> Jan
>

--00000000000086d956060fb0d10e
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><div dir=3D"ltr">- AB<div><br></div><div>Hi Jan,=C2=A0</di=
v><div>Please see my reply to the points below=C2=A0</div><div><br clear=3D=
"all"><div><div dir=3D"ltr" class=3D"gmail_signature"><div dir=3D"ltr"><div=
>Many thanks,</div><div>Kelly Choi</div><div><br></div><div><div style=3D"c=
olor:rgb(136,136,136)">Community Manager</div><div style=3D"color:rgb(136,1=
36,136)">Xen Project=C2=A0<br></div></div></div></div></div><br></div></div=
><br><div class=3D"gmail_quote"><div dir=3D"ltr" class=3D"gmail_attr">On Mo=
n, Jan 22, 2024 at 10:32=E2=80=AFAM Jan Beulich &lt;<a href=3D"mailto:jbeul=
ich@suse.com">jbeulich@suse.com</a>&gt; wrote:<br></div><blockquote class=
=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rg=
b(204,204,204);padding-left:1ex">On 17.01.2024 18:10, Kelly Choi wrote:<br>
&gt; Hi everyone,<br>
&gt; <br>
&gt; I&#39;ve spent a bit of time talking to various individuals and the ad=
visory<br>
&gt; board about setting up a new Community Process Group.<br>
&gt; <br>
&gt; A survey was recently conducted to identify how the community as a who=
le<br>
&gt; feels about a certain situation. It was not intended to ban specific<b=
r>
&gt; wording or create a policy to do so, but more to give context that the=
<br>
&gt; community has a wide range of ideas, and individuals may agree and dis=
agree<br>
&gt; a lot more frequently than we as individuals might think. It helps us<=
br>
&gt; understand that as a community there are many situations where it is n=
ot<br>
&gt; clear. As such, the results indicated a very even split among the<br>
&gt; community, which indicates a larger problem as we may not always come =
to<br>
&gt; agreement.<br>
&gt; <br>
&gt; There is obvious frustration with how certain matters are handled, as =
some<br>
&gt; members may want the project to move faster, whereas others like to ta=
ke a<br>
&gt; cautious approach. Given we are an open source project, differences in=
<br>
&gt; opinion are likely to happen and what we don=E2=80=99t want to do is c=
ause further<br>
&gt; frustration.<br>
&gt; <br>
&gt; *This is where I would like to propose the idea of a =E2=80=98Communit=
y Process<br>
&gt; Group=E2=80=99.*<br>
&gt; <br>
&gt; A CPG can help as they will be able to advise members on similar issue=
s<br>
&gt; regarding community processes or appeals and decide on the best way<br=
>
&gt; forward. To help with this process, I have consulted with various<br>
&gt; individuals including some committers and conduct team members.<br>
&gt; <br>
&gt; *What is a CPG=E2=80=99s purpose?*<br>
&gt; In the first instance, we would expect an informal vote resolves most<=
br>
&gt; disagreements. However, there will be certain circumstances where the<=
br>
&gt; outcome is not always agreed on.<br>
&gt; <br>
&gt; A CPG will be your second point of call, where you can escalate matter=
s<br>
&gt; quickly for a democratic solution.<br>
<br>
Between informal voting and this &quot;second point of call&quot;, where do=
es<br>
formal voting go?<br></blockquote><div><br></div><div>Formal voting among c=
ommitters will still exist in matters related to technical decisions. The C=
PG handles disputes around processes and areas where there are disagreement=
s that can cause frustration around the community, but don&#39;t necessaril=
y break the code of conduct. For example, naming conventions or how to move=
 forward in cases of non-actionable feedback.=C2=A0=C2=A0</div><blockquote =
class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px sol=
id rgb(204,204,204);padding-left:1ex">
<br>
&gt; Their purpose is to resolve process issues and informal vote appeals t=
o<br>
&gt; avoid matters going to a formal vote, but also act as a representative=
 on<br>
&gt; behalf of others in the community on future matters.<br>
&gt; <br>
&gt; For example:<br>
&gt; <br>
&gt;=C2=A0 =C2=A0 - Naming conventions<br>
&gt;=C2=A0 =C2=A0 - Whether feedback requesting changes on a patch series i=
s acceptable<br>
&gt;=C2=A0 =C2=A0 - How to move forward in case of non-actionable feedback =
to a patch<br>
&gt;=C2=A0 =C2=A0 series<br>
&gt;=C2=A0 =C2=A0 - How to move forward when a contributor or reviewer has =
not been<br>
&gt;=C2=A0 =C2=A0 responsive<br>
&gt;=C2=A0 =C2=A0 - Policy questions not related to the code of conduct<br>
&gt; <br>
&gt; *What is their role and responsibility?*<br>
&gt; <br>
&gt; The CPG has the authority to propose a resolution to situations where =
there<br>
&gt; are disagreements, that don=E2=80=99t involve large technical decision=
s. Their<br>
&gt; decision proposed should be accepted as final since members will have<=
br>
&gt; discussed the best steps and come to a consensus vote.<br>
&gt; <br>
&gt; The CPG does not aim to replace the committers&#39; authority or the a=
dvisory<br>
&gt; board but instead holds the authority to make decisions that are in th=
e<br>
&gt; best interest of the community in relation to processes. Committers st=
ill<br>
&gt; hold the power should there be a formal escalation regarding technical=
<br>
&gt; decisions, but this would be extremely rare. Advisory Board members ho=
ld<br>
&gt; the final power regarding project and business-wide decisions.<br>
<br>
Nevertheless it doesn&#39;t become clear to me how adding yet another autho=
rity<br>
besides the committers will actually help.<br></blockquote><div><br></div><=
div>We&#39;ve seen cases where committers can disagree, and rather than cal=
ling a formal vote each time among those that disagree, the wider community=
 can help provide clarity on the best steps forward.=C2=A0</div><div>The in=
dividuals in this CPG aim to help represent wider collective feedback and p=
revent disagreements from coming to a standstill, which we have seen in the=
 past.=C2=A0</div><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px=
 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<br>
&gt; *How are members selected?*<br>
&gt; The CPG will be composed of 5 randomly selected members in total.<br>
&gt; An odd number has been purposely selected to avoid an impasse during<b=
r>
&gt; decisions.<br>
&gt; <br>
&gt; The criteria:<br>
&gt; Individual members must be active contributors and are willing to help=
 the<br>
&gt; community succeed. As such they must be a part of the following groups=
:<br>
&gt; <br>
&gt;=C2=A0 =C2=A0 - Committers<br>
&gt;=C2=A0 =C2=A0 - Active Maintainers: maintainers with &gt;=3D 20 reviews=
 in the last 2<br>
&gt;=C2=A0 =C2=A0 releases<br>
&gt;=C2=A0 =C2=A0 - Active Contributors: contributors with &gt;=3D 10 commi=
ts in the last 2<br>
&gt;=C2=A0 =C2=A0 releases<br>
<br>
I&#39;m afraid I can&#39;t leave this uncommented, as matching a common pat=
tern<br>
I&#39;m generally unhappy with. Whatever the numbers you select in such<br>
criteria, they&#39;ll open up an easy road for faking. At the same time it<=
br>
of course is difficult to come up with any non-numeric or not-only-<br>
numeric criteria. For example, I&#39;d be heavily inclined to ask that<br>
&quot;non-trivial&quot; be added to both of the numbers. Yet then there ari=
ses a<br>
judgement issue: What&#39;s non-trivial can be entirely different<br>
depending on who you ask.<br>
<br>
What definitely needs clarifying is what &quot;review&quot; is: Are R-b tag=
s<br>
counted, or is it the number of replies sent commenting on patches?<br></bl=
ockquote><div><br></div><div>Please see Stefano&#39;s reply=C2=A0</div><blo=
ckquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left=
:1px solid rgb(204,204,204);padding-left:1ex">
<br>
&gt; Future rotations of CPG members:<br>
&gt; New members will be selected randomly for each new release to ensure<b=
r>
&gt; fairness.<br>
&gt; <br>
&gt; *Expectations*<br>
&gt; CPG members are expected to use their best judgement of what is best f=
or<br>
&gt; the community in terms of conflict resolution and process improvements=
.<br>
&gt; They can propose an outcome that progresses the project forward.<br>
&gt; The CPG is also expected to address wider concerns, feedback, and idea=
s<br>
&gt; during a monthly meeting with all community members.<br>
&gt; <br>
&gt; For example:<br>
&gt; <br>
&gt;=C2=A0 =C2=A0 - If someone is displaying repeated concerning behaviour =
that disrupts<br>
&gt;=C2=A0 =C2=A0 the community, members can ask the CPG for help on a solu=
tion. (This is<br>
&gt;=C2=A0 =C2=A0 different from a code of conduct violation which would be=
 for serious<br>
&gt;=C2=A0 =C2=A0 offences only.)<br>
&gt;=C2=A0 =C2=A0 - Help drive discussions on how much we deviate from tech=
nical<br>
&gt;=C2=A0 =C2=A0 specifications<br>
&gt; <br>
&gt; *Next steps*<br>
&gt; Given this suggestion is a big change in what I hope is a positive<br>
&gt; direction, we will require your feedback and a final formal vote on th=
e<br>
&gt; process, before it is implemented into the governance policies. The<br=
>
&gt; specific wording can be decided after this proposal.<br>
&gt; <br>
&gt; This will hopefully help us overcome some of the frustrations and issu=
es we<br>
&gt; have seen in the community from a difference in opinion as a collectiv=
e<br>
&gt; discussion will now be made. Should we need to, the process can be rev=
iewed<br>
&gt; to improve at later stages.<br>
<br>
Related to what I said earlier: Should it turn out that disagreement within=
<br>
the CPG is difficult to deal with, will we then gain yet another authority?=
<br>
Imo before adding such a new instance, it wants properly sorting<br>
- why with what we already have we can&#39;t deal with the (supposedly few)=
<br>
=C2=A0 situations, and<br>
- in how far introducing a new instance will (likely) once and for all<br>
=C2=A0 avoid similar situations arising again, just one layer up (i.e. to m=
ake<br>
=C2=A0 sure there&#39;s no scalability issue, due to proliferation of insta=
nces).<br></blockquote><div><br></div><div>If we are looking at the current=
 landscape, open-source projects tend to have disagreements as individuals =
will have varying opinions.=C2=A0</div><div>When committers are at a stands=
till, it tends to be because we cannot agree on an outcome. As we have seen=
 in the past, there are situations where members have disagreed even during=
 an informal vote. Those matters wouldn&#39;t be appropriate for a formal v=
ote either, and we previously didn&#39;t have anything in between to move t=
hose disputes forward. I appreciate it adds another layer of complexity but=
 given that the CPG is representative of the community, their decision shou=
ld be the one that stands to help the project progress. This also helps giv=
e a voice to the many members in our community, who are passionate about im=
proving Xen. Until we try something new, there is no guarantee that staying=
 stagnant will improve existing conflict.=C2=A0</div><div><br></div><blockq=
uote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1p=
x solid rgb(204,204,204);padding-left:1ex">
<br>
Jan<br>
</blockquote></div></div>

--00000000000086d956060fb0d10e--


From xen-devel-bounces@lists.xenproject.org Wed Jan 24 13:21:29 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 24 Jan 2024 13:21:29 +0000
Received: from list by lists.xenproject.org with outflank-mailman.670997.1044119 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSdBz-0006SV-NX; Wed, 24 Jan 2024 13:21:23 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 670997.1044119; Wed, 24 Jan 2024 13:21:23 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSdBz-0006SO-Kl; Wed, 24 Jan 2024 13:21:23 +0000
Received: by outflank-mailman (input) for mailman id 670997;
 Wed, 24 Jan 2024 13:21:21 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=+J0g=JC=casper.srs.infradead.org=BATV+8e6fa95217b724aba31a+7458+infradead.org+dwmw2@srs-se1.protection.inumbo.net>)
 id 1rSdBx-0006S4-K8
 for xen-devel@lists.xenproject.org; Wed, 24 Jan 2024 13:21:21 +0000
Received: from casper.infradead.org (casper.infradead.org
 [2001:8b0:10b:1236::1])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 74094e98-babb-11ee-98f5-6d05b1d4d9a1;
 Wed, 24 Jan 2024 14:21:19 +0100 (CET)
Received: from [2001:8b0:10b:5:61a5:fd15:fab7:344f]
 (helo=u3832b3a9db3152.ant.amazon.com)
 by casper.infradead.org with esmtpsa (Exim 4.97.1 #2 (Red Hat Linux))
 id 1rSdBq-00000006jL0-1vID; Wed, 24 Jan 2024 13:21:15 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 74094e98-babb-11ee-98f5-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=infradead.org; s=casper.20170209; h=MIME-Version:Content-Type:References:
	In-Reply-To:Date:Cc:To:From:Subject:Message-ID:Sender:Reply-To:
	Content-Transfer-Encoding:Content-ID:Content-Description;
	bh=rZldVBCE9IksvGyO36ZGLq0plh1JftKYwTXgZwdrgnA=; b=KVv3qfdGS1VRDPrKhjZD4RdDQl
	glr5lXFRXN63HUeMmwGoCAGmjCJqUBCoVYOCCNHUWBGtNsbBGBYQjuYgTgrKVKXDi4LkkOH2ufMEs
	o+KUFtBHlHNILtBRGYz1t/UaNYTisV/RGemT7y7FSS3zWe2Z9BC0YF8BySDmheon9fZIUDR6C+e3q
	VpEIPS6Bg/kru7qz4U9Yk7X6sS+MSiVGVH8++l9QGV0odraGpj/MH/yM24nFiv0pga8Gy1CjyNkSl
	EiRVwmZRf5r/xJSYluUx0wFXU+lnDJOgmePyzxZ6FHHANqd7hu/8W2DQfE5nEHUwD3+3Q1YJpByb2
	FOGbC/8w==;
Message-ID: <9ef401a61cce3ceffb000697fe671339b4492e20.camel@infradead.org>
Subject: Re: Community Process Group - Proposal
From: David Woodhouse <dwmw2@infradead.org>
To: Jan Beulich <jbeulich@suse.com>, Stefano Stabellini
 <sstabellini@kernel.org>
Cc: Kelly Choi <kelly.choi@cloud.com>, committers@xenproject.org, 
	advisory-board@lists.xenproject.org, xen-devel@lists.xenproject.org
Date: Wed, 24 Jan 2024 13:21:15 +0000
In-Reply-To: <ecddb385-fc87-412b-a956-0a08237cc120@suse.com>
References: 
	<CAO-mL=yvVWjnOHSFSqcrknoXOqk-N3JY76qObQnzftrkmsq6xw@mail.gmail.com>
	 <5309e7d3-7b3c-4522-99dc-bbd7734aeb34@suse.com>
	 <alpine.DEB.2.22.394.2401221434440.2287888@ubuntu-linux-20-04-desktop>
	 <ecddb385-fc87-412b-a956-0a08237cc120@suse.com>
Content-Type: multipart/signed; micalg="sha-256"; protocol="application/pkcs7-signature";
	boundary="=-ckh7dT+otIrqfg38idlm"
User-Agent: Evolution 3.44.4-0ubuntu2 
MIME-Version: 1.0
X-SRS-Rewrite: SMTP reverse-path rewritten from <dwmw2@infradead.org> by casper.infradead.org. See http://www.infradead.org/rpr.html


--=-ckh7dT+otIrqfg38idlm
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

On Tue, 2024-01-23 at 08:34 +0100, Jan Beulich wrote:
> On 22.01.2024 23:47, Stefano Stabellini wrote:
> > On Mon, 22 Jan 2024, Jan Beulich wrote:
> > > What definitely needs clarifying is what "review" is: Are R-b tags
> > > counted, or is it the number of replies sent commenting on patches?
> >=20
> > Yes, I think this needs to be clarified. I would say Reviewed-by tags.
>=20
> Which may end up unfair. It's not uncommon for one person to do a lot
> of review on a patch, and for someone else to then ack the final
> version that goes in. In the end this is then no different from basing
> the decision on simple numbers, without regard to actual (potentially
> heavily differing) effort behind each individual instance.


Perhaps that isn't such a bad thing. It would mean that a hypothetical
reviewer who only ever nitpicks and is holding up progress of a patch
which others find acceptable does not get 'credit' for reviewing that
particular patch.

--=-ckh7dT+otIrqfg38idlm
Content-Type: application/pkcs7-signature; name="smime.p7s"
Content-Disposition: attachment; filename="smime.p7s"
Content-Transfer-Encoding: base64

MIAGCSqGSIb3DQEHAqCAMIACAQExDzANBglghkgBZQMEAgEFADCABgkqhkiG9w0BBwEAAKCCEkQw
ggYQMIID+KADAgECAhBNlCwQ1DvglAnFgS06KwZPMA0GCSqGSIb3DQEBDAUAMIGIMQswCQYDVQQG
EwJVUzETMBEGA1UECBMKTmV3IEplcnNleTEUMBIGA1UEBxMLSmVyc2V5IENpdHkxHjAcBgNVBAoT
FVRoZSBVU0VSVFJVU1QgTmV0d29yazEuMCwGA1UEAxMlVVNFUlRydXN0IFJTQSBDZXJ0aWZpY2F0
aW9uIEF1dGhvcml0eTAeFw0xODExMDIwMDAwMDBaFw0zMDEyMzEyMzU5NTlaMIGWMQswCQYDVQQG
EwJHQjEbMBkGA1UECBMSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHEwdTYWxmb3JkMRgwFgYD
VQQKEw9TZWN0aWdvIExpbWl0ZWQxPjA8BgNVBAMTNVNlY3RpZ28gUlNBIENsaWVudCBBdXRoZW50
aWNhdGlvbiBhbmQgU2VjdXJlIEVtYWlsIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
AQEAyjztlApB/975Rrno1jvm2pK/KxBOqhq8gr2+JhwpKirSzZxQgT9tlC7zl6hn1fXjSo5MqXUf
ItMltrMaXqcESJuK8dtK56NCSrq4iDKaKq9NxOXFmqXX2zN8HHGjQ2b2Xv0v1L5Nk1MQPKA19xeW
QcpGEGFUUd0kN+oHox+L9aV1rjfNiCj3bJk6kJaOPabPi2503nn/ITX5e8WfPnGw4VuZ79Khj1YB
rf24k5Ee1sLTHsLtpiK9OjG4iQRBdq6Z/TlVx/hGAez5h36bBJMxqdHLpdwIUkTqT8se3ed0PewD
ch/8kHPo5fZl5u1B0ecpq/sDN/5sCG52Ds+QU5O5EwIDAQABo4IBZDCCAWAwHwYDVR0jBBgwFoAU
U3m/WqorSs9UgOHYm8Cd8rIDZsswHQYDVR0OBBYEFAnA8vwL2pTbX/4r36iZQs/J4K0AMA4GA1Ud
DwEB/wQEAwIBhjASBgNVHRMBAf8ECDAGAQH/AgEAMB0GA1UdJQQWMBQGCCsGAQUFBwMCBggrBgEF
BQcDBDARBgNVHSAECjAIMAYGBFUdIAAwUAYDVR0fBEkwRzBFoEOgQYY/aHR0cDovL2NybC51c2Vy
dHJ1c3QuY29tL1VTRVJUcnVzdFJTQUNlcnRpZmljYXRpb25BdXRob3JpdHkuY3JsMHYGCCsGAQUF
BwEBBGowaDA/BggrBgEFBQcwAoYzaHR0cDovL2NydC51c2VydHJ1c3QuY29tL1VTRVJUcnVzdFJT
QUFkZFRydXN0Q0EuY3J0MCUGCCsGAQUFBzABhhlodHRwOi8vb2NzcC51c2VydHJ1c3QuY29tMA0G
CSqGSIb3DQEBDAUAA4ICAQBBRHUAqznCFfXejpVtMnFojADdF9d6HBA4kMjjsb0XMZHztuOCtKF+
xswhh2GqkW5JQrM8zVlU+A2VP72Ky2nlRA1GwmIPgou74TZ/XTarHG8zdMSgaDrkVYzz1g3nIVO9
IHk96VwsacIvBF8JfqIs+8aWH2PfSUrNxP6Ys7U0sZYx4rXD6+cqFq/ZW5BUfClN/rhk2ddQXyn7
kkmka2RQb9d90nmNHdgKrwfQ49mQ2hWQNDkJJIXwKjYA6VUR/fZUFeCUisdDe/0ABLTI+jheXUV1
eoYV7lNwNBKpeHdNuO6Aacb533JlfeUHxvBz9OfYWUiXu09sMAviM11Q0DuMZ5760CdO2VnpsXP4
KxaYIhvqPqUMWqRdWyn7crItNkZeroXaecG03i3mM7dkiPaCkgocBg0EBYsbZDZ8bsG3a08LwEsL
1Ygz3SBsyECa0waq4hOf/Z85F2w2ZpXfP+w8q4ifwO90SGZZV+HR/Jh6rEaVPDRF/CEGVqR1hiuQ
OZ1YL5ezMTX0ZSLwrymUE0pwi/KDaiYB15uswgeIAcA6JzPFf9pLkAFFWs1QNyN++niFhsM47qod
x/PL+5jR87myx5uYdBEQkkDc+lKB1Wct6ucXqm2EmsaQ0M95QjTmy+rDWjkDYdw3Ms6mSWE3Bn7i
5ZgtwCLXgAIe5W8mybM2JzCCBhQwggT8oAMCAQICEQDGvhmWZ0DEAx0oURL6O6l+MA0GCSqGSIb3
DQEBCwUAMIGWMQswCQYDVQQGEwJHQjEbMBkGA1UECBMSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYD
VQQHEwdTYWxmb3JkMRgwFgYDVQQKEw9TZWN0aWdvIExpbWl0ZWQxPjA8BgNVBAMTNVNlY3RpZ28g
UlNBIENsaWVudCBBdXRoZW50aWNhdGlvbiBhbmQgU2VjdXJlIEVtYWlsIENBMB4XDTIyMDEwNzAw
MDAwMFoXDTI1MDEwNjIzNTk1OVowJDEiMCAGCSqGSIb3DQEJARYTZHdtdzJAaW5mcmFkZWFkLm9y
ZzCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBALQ3GpC2bomUqk+91wLYBzDMcCj5C9m6
oZaHwvmIdXftOgTbCJXADo6G9T7BBAebw2JV38EINgKpy/ZHh7htyAkWYVoFsFPrwHounto8xTsy
SSePMiPlmIdQ10BcVSXMUJ3Juu16GlWOnAMJY2oYfEzmE7uT9YgcBqKCo65pTFmOnR/VVbjJk4K2
xE34GC2nAdUQkPFuyaFisicc6HRMOYXPuF0DuwITEKnjxgNjP+qDrh0db7PAjO1D4d5ftfrsf+kd
RR4gKVGSk8Tz2WwvtLAroJM4nXjNPIBJNT4w/FWWc/5qPHJy2U+eITZ5LLE5s45mX2oPFknWqxBo
bQZ8a9dsZ3dSPZBvE9ZrmtFLrVrN4eo1jsXgAp1+p7bkfqd3BgBEmfsYWlBXO8rVXfvPgLs32VdV
NZxb/CDWPqBsiYv0Hv3HPsz07j5b+/cVoWqyHDKzkaVbxfq/7auNVRmPB3v5SWEsH8xi4Bez2V9U
KxfYCnqsjp8RaC2/khxKt0A552Eaxnz/4ly/2C7wkwTQnBmdlFYhAflWKQ03Ufiu8t3iBE3VJbc2
5oMrglj7TRZrmKq3CkbFnX0fyulB+kHimrt6PIWn7kgyl9aelIl6vtbhMA+l0nfrsORMa4kobqQ5
C5rveVgmcIad67EDa+UqEKy/GltUwlSh6xy+TrK1tzDvAgMBAAGjggHMMIIByDAfBgNVHSMEGDAW
gBQJwPL8C9qU21/+K9+omULPyeCtADAdBgNVHQ4EFgQUzMeDMcimo0oz8o1R1Nver3ZVpSkwDgYD
VR0PAQH/BAQDAgWgMAwGA1UdEwEB/wQCMAAwHQYDVR0lBBYwFAYIKwYBBQUHAwQGCCsGAQUFBwMC
MEAGA1UdIAQ5MDcwNQYMKwYBBAGyMQECAQEBMCUwIwYIKwYBBQUHAgEWF2h0dHBzOi8vc2VjdGln
by5jb20vQ1BTMFoGA1UdHwRTMFEwT6BNoEuGSWh0dHA6Ly9jcmwuc2VjdGlnby5jb20vU2VjdGln
b1JTQUNsaWVudEF1dGhlbnRpY2F0aW9uYW5kU2VjdXJlRW1haWxDQS5jcmwwgYoGCCsGAQUFBwEB
BH4wfDBVBggrBgEFBQcwAoZJaHR0cDovL2NydC5zZWN0aWdvLmNvbS9TZWN0aWdvUlNBQ2xpZW50
QXV0aGVudGljYXRpb25hbmRTZWN1cmVFbWFpbENBLmNydDAjBggrBgEFBQcwAYYXaHR0cDovL29j
c3Auc2VjdGlnby5jb20wHgYDVR0RBBcwFYETZHdtdzJAaW5mcmFkZWFkLm9yZzANBgkqhkiG9w0B
AQsFAAOCAQEAyW6MUir5dm495teKqAQjDJwuFCi35h4xgnQvQ/fzPXmtR9t54rpmI2TfyvcKgOXp
qa7BGXNFfh1JsqexVkIqZP9uWB2J+uVMD+XZEs/KYNNX2PvIlSPrzIB4Z2wyIGQpaPLlYflrrVFK
v9CjT2zdqvy2maK7HKOQRt3BiJbVG5lRiwbbygldcALEV9ChWFfgSXvrWDZspnU3Gjw/rMHrGnql
Htlyebp3pf3fSS9kzQ1FVtVIDrL6eqhTwJxe+pXSMMqFiN0whpBtXdyDjzBtQTaZJ7zTT/vlehc/
tDuqZwGHm/YJy883Ll+GP3NvOkgaRGWEuYWJJ6hFCkXYjyR9IzCCBhQwggT8oAMCAQICEQDGvhmW
Z0DEAx0oURL6O6l+MA0GCSqGSIb3DQEBCwUAMIGWMQswCQYDVQQGEwJHQjEbMBkGA1UECBMSR3Jl
YXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHEwdTYWxmb3JkMRgwFgYDVQQKEw9TZWN0aWdvIExpbWl0
ZWQxPjA8BgNVBAMTNVNlY3RpZ28gUlNBIENsaWVudCBBdXRoZW50aWNhdGlvbiBhbmQgU2VjdXJl
IEVtYWlsIENBMB4XDTIyMDEwNzAwMDAwMFoXDTI1MDEwNjIzNTk1OVowJDEiMCAGCSqGSIb3DQEJ
ARYTZHdtdzJAaW5mcmFkZWFkLm9yZzCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBALQ3
GpC2bomUqk+91wLYBzDMcCj5C9m6oZaHwvmIdXftOgTbCJXADo6G9T7BBAebw2JV38EINgKpy/ZH
h7htyAkWYVoFsFPrwHounto8xTsySSePMiPlmIdQ10BcVSXMUJ3Juu16GlWOnAMJY2oYfEzmE7uT
9YgcBqKCo65pTFmOnR/VVbjJk4K2xE34GC2nAdUQkPFuyaFisicc6HRMOYXPuF0DuwITEKnjxgNj
P+qDrh0db7PAjO1D4d5ftfrsf+kdRR4gKVGSk8Tz2WwvtLAroJM4nXjNPIBJNT4w/FWWc/5qPHJy
2U+eITZ5LLE5s45mX2oPFknWqxBobQZ8a9dsZ3dSPZBvE9ZrmtFLrVrN4eo1jsXgAp1+p7bkfqd3
BgBEmfsYWlBXO8rVXfvPgLs32VdVNZxb/CDWPqBsiYv0Hv3HPsz07j5b+/cVoWqyHDKzkaVbxfq/
7auNVRmPB3v5SWEsH8xi4Bez2V9UKxfYCnqsjp8RaC2/khxKt0A552Eaxnz/4ly/2C7wkwTQnBmd
lFYhAflWKQ03Ufiu8t3iBE3VJbc25oMrglj7TRZrmKq3CkbFnX0fyulB+kHimrt6PIWn7kgyl9ae
lIl6vtbhMA+l0nfrsORMa4kobqQ5C5rveVgmcIad67EDa+UqEKy/GltUwlSh6xy+TrK1tzDvAgMB
AAGjggHMMIIByDAfBgNVHSMEGDAWgBQJwPL8C9qU21/+K9+omULPyeCtADAdBgNVHQ4EFgQUzMeD
Mcimo0oz8o1R1Nver3ZVpSkwDgYDVR0PAQH/BAQDAgWgMAwGA1UdEwEB/wQCMAAwHQYDVR0lBBYw
FAYIKwYBBQUHAwQGCCsGAQUFBwMCMEAGA1UdIAQ5MDcwNQYMKwYBBAGyMQECAQEBMCUwIwYIKwYB
BQUHAgEWF2h0dHBzOi8vc2VjdGlnby5jb20vQ1BTMFoGA1UdHwRTMFEwT6BNoEuGSWh0dHA6Ly9j
cmwuc2VjdGlnby5jb20vU2VjdGlnb1JTQUNsaWVudEF1dGhlbnRpY2F0aW9uYW5kU2VjdXJlRW1h
aWxDQS5jcmwwgYoGCCsGAQUFBwEBBH4wfDBVBggrBgEFBQcwAoZJaHR0cDovL2NydC5zZWN0aWdv
LmNvbS9TZWN0aWdvUlNBQ2xpZW50QXV0aGVudGljYXRpb25hbmRTZWN1cmVFbWFpbENBLmNydDAj
BggrBgEFBQcwAYYXaHR0cDovL29jc3Auc2VjdGlnby5jb20wHgYDVR0RBBcwFYETZHdtdzJAaW5m
cmFkZWFkLm9yZzANBgkqhkiG9w0BAQsFAAOCAQEAyW6MUir5dm495teKqAQjDJwuFCi35h4xgnQv
Q/fzPXmtR9t54rpmI2TfyvcKgOXpqa7BGXNFfh1JsqexVkIqZP9uWB2J+uVMD+XZEs/KYNNX2PvI
lSPrzIB4Z2wyIGQpaPLlYflrrVFKv9CjT2zdqvy2maK7HKOQRt3BiJbVG5lRiwbbygldcALEV9Ch
WFfgSXvrWDZspnU3Gjw/rMHrGnqlHtlyebp3pf3fSS9kzQ1FVtVIDrL6eqhTwJxe+pXSMMqFiN0w
hpBtXdyDjzBtQTaZJ7zTT/vlehc/tDuqZwGHm/YJy883Ll+GP3NvOkgaRGWEuYWJJ6hFCkXYjyR9
IzGCBMcwggTDAgEBMIGsMIGWMQswCQYDVQQGEwJHQjEbMBkGA1UECBMSR3JlYXRlciBNYW5jaGVz
dGVyMRAwDgYDVQQHEwdTYWxmb3JkMRgwFgYDVQQKEw9TZWN0aWdvIExpbWl0ZWQxPjA8BgNVBAMT
NVNlY3RpZ28gUlNBIENsaWVudCBBdXRoZW50aWNhdGlvbiBhbmQgU2VjdXJlIEVtYWlsIENBAhEA
xr4ZlmdAxAMdKFES+jupfjANBglghkgBZQMEAgEFAKCCAeswGAYJKoZIhvcNAQkDMQsGCSqGSIb3
DQEHATAcBgkqhkiG9w0BCQUxDxcNMjQwMTI0MTMyMTE1WjAvBgkqhkiG9w0BCQQxIgQgy5Uc8LZN
hGXvlqrDxhjafQ9PB5SkSmFBGtJtO6CN0Jkwgb0GCSsGAQQBgjcQBDGBrzCBrDCBljELMAkGA1UE
BhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEYMBYG
A1UEChMPU2VjdGlnbyBMaW1pdGVkMT4wPAYDVQQDEzVTZWN0aWdvIFJTQSBDbGllbnQgQXV0aGVu
dGljYXRpb24gYW5kIFNlY3VyZSBFbWFpbCBDQQIRAMa+GZZnQMQDHShREvo7qX4wgb8GCyqGSIb3
DQEJEAILMYGvoIGsMIGWMQswCQYDVQQGEwJHQjEbMBkGA1UECBMSR3JlYXRlciBNYW5jaGVzdGVy
MRAwDgYDVQQHEwdTYWxmb3JkMRgwFgYDVQQKEw9TZWN0aWdvIExpbWl0ZWQxPjA8BgNVBAMTNVNl
Y3RpZ28gUlNBIENsaWVudCBBdXRoZW50aWNhdGlvbiBhbmQgU2VjdXJlIEVtYWlsIENBAhEAxr4Z
lmdAxAMdKFES+jupfjANBgkqhkiG9w0BAQEFAASCAgAeMlUJMOtX9Z5mTpSX4yMbBXDiIU8ym3/X
GwHTo/cpjG3aEmrE8SUXzr0xQUwi6Lh52GZilgvOfoPYc7BESlg/RCkDuskAaAUbAuYjGoXlHgYV
4UTQ8uGuNk7l7ge73CJSHp3l5mKYUVZub/Z/8uHdj7eA9JaK3buQjYRC3P++bEHenYEz2Zz/v2CJ
0vX5WY79zIV36j54SldhXn550g9Eq77aHSuW36ZlOFe3ggGHy0wQO1ja0jdRPmzKsEp3F3+MpvjT
IMRt3WxRSYLcSYD3VTgbEy5BxK81msZm5vsgBexCzM4lG3GC4IwtJ0D/uL2qGf97t4p2/GvVMaQT
1VEcKUtVui5Jtirj3KRAigrJfFpK7WYpdgo6+ibRcTd0z1LqY7p4Cx1mO/aEQKP7SgdGS8d3wu/u
dgsSqaJ/UDOgLrbiQvHe+/phPn5OU9wq/sg5giE+fhBGSBHu6/bDP6IvAwjsgViOtnQFGUTofP48
RAWy+ZGAuh+0MQKnfTY9B+0P4BJmw9cFL7ix7wr1mp7KccSFjxns0ZXYylUZOLIT3BphCVf9or66
fokJky+CnDnSVwUt9axX1/+SvOTwwXzxVHA5EdQzpeiOAn/NmvJif1pyoM/56B9IpCRxCCLJ1cyX
Wxo+U/bvDNsq1m/IqeGfjilF9611lC/iVkwDCQQDWQAAAAAAAA==


--=-ckh7dT+otIrqfg38idlm--


From xen-devel-bounces@lists.xenproject.org Wed Jan 24 14:29:25 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 24 Jan 2024 14:29:25 +0000
Received: from list by lists.xenproject.org with outflank-mailman.671014.1044133 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSeFY-00082J-Or; Wed, 24 Jan 2024 14:29:08 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 671014.1044133; Wed, 24 Jan 2024 14:29:08 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSeFY-00082C-Kg; Wed, 24 Jan 2024 14:29:08 +0000
Received: by outflank-mailman (input) for mailman id 671014;
 Wed, 24 Jan 2024 14:29:07 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=RVUo=JC=kernel.org=sashal@srs-se1.protection.inumbo.net>)
 id 1rSeFX-000826-S9
 for xen-devel@lists.xenproject.org; Wed, 24 Jan 2024 14:29:07 +0000
Received: from sin.source.kernel.org (sin.source.kernel.org [145.40.73.55])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id eb8ce1a0-bac4-11ee-9b0f-b553b5be7939;
 Wed, 24 Jan 2024 15:29:04 +0100 (CET)
Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58])
 by sin.source.kernel.org (Postfix) with ESMTP id 9B3D6CE3131;
 Wed, 24 Jan 2024 14:28:56 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 99AB0C433A6;
 Wed, 24 Jan 2024 14:28:49 +0000 (UTC)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: eb8ce1a0-bac4-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
	s=k20201202; t=1706106530;
	bh=6FfN1GzAtURfOQTJtQ8dKYe9y+zDqRTWUeydka0I57o=;
	h=From:To:Cc:Subject:Date:In-Reply-To:References:From;
	b=QEzV0nwRM9NUaAdv4p65JnRWWLrKcd05SQ9dz4qwf/H7X3Gnkx58CR6WDE9YFxbeu
	 QLEknnCQRqFoytqS9iD0wLFCcXX4/AgJ5ABqZOBwIxZtMp+F4zm0uKJPZ6gj2Y7Pu+
	 mL9bXzi6rOubl7qoOvovBIRlNa7kSIbjL3stkqOQq4f9URhe+1NWxVcErXiBAVSE4y
	 FrK6Z6FUDQpHWWhB0457PKa4OiIEsHQx6S4ekOttMiu60Pkc9HFxNcXVcqFNkUab0s
	 BosGAm2rjzi2XDHR8ubekdoxQxEqF9XuGSZ/eYhgsAY8cZ6LDfmnL1H/QCGfM+PDR/
	 RD+sGkicI/iNw==
From: Sasha Levin <sashal@kernel.org>
To: linux-kernel@vger.kernel.org,
	stable@vger.kernel.org
Cc: Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>,
	Daniel Vetter <daniel@ffwll.ch>,
	=?UTF-8?q?Christian=20K=C3=B6nig?= <christian.koenig@amd.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Juergen Gross <jgross@suse.com>,
	Sasha Levin <sashal@kernel.org>,
	xen-devel@lists.xenproject.org
Subject: [PATCH AUTOSEL 6.7 11/13] xen/gntdev: Fix the abuse of underlying struct page in DMA-buf import
Date: Wed, 24 Jan 2024 09:28:04 -0500
Message-ID: <20240124142820.1283206-11-sashal@kernel.org>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20240124142820.1283206-1-sashal@kernel.org>
References: <20240124142820.1283206-1-sashal@kernel.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
X-stable: review
X-Patchwork-Hint: Ignore
X-stable-base: Linux 6.7.1
Content-Transfer-Encoding: 8bit

From: Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>

[ Upstream commit 2d2db7d40254d5fb53b11ebd703cd1ed0c5de7a1 ]

DO NOT access the underlying struct page of an sg table exported
by DMA-buf in dmabuf_imp_to_refs(), this is not allowed.
Please see drivers/dma-buf/dma-buf.c:mangle_sg_table() for details.

Fortunately, here (for special Xen device) we can avoid using
pages and calculate gfns directly from dma addresses provided by
the sg table.

Suggested-by: Daniel Vetter <daniel@ffwll.ch>
Signed-off-by: Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>
Acked-by: Christian König <christian.koenig@amd.com>
Reviewed-by: Stefano Stabellini <sstabellini@kernel.org>
Acked-by: Daniel Vetter <daniel@ffwll.ch>
Link: https://lore.kernel.org/r/20240107103426.2038075-1-olekstysh@gmail.com
Signed-off-by: Juergen Gross <jgross@suse.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/xen/gntdev-dmabuf.c | 50 ++++++++++++++++++-------------------
 1 file changed, 25 insertions(+), 25 deletions(-)

diff --git a/drivers/xen/gntdev-dmabuf.c b/drivers/xen/gntdev-dmabuf.c
index 4440e626b797..42adc2c1e06b 100644
--- a/drivers/xen/gntdev-dmabuf.c
+++ b/drivers/xen/gntdev-dmabuf.c
@@ -11,6 +11,7 @@
 #include <linux/kernel.h>
 #include <linux/errno.h>
 #include <linux/dma-buf.h>
+#include <linux/dma-direct.h>
 #include <linux/slab.h>
 #include <linux/types.h>
 #include <linux/uaccess.h>
@@ -50,7 +51,7 @@ struct gntdev_dmabuf {
 
 	/* Number of pages this buffer has. */
 	int nr_pages;
-	/* Pages of this buffer. */
+	/* Pages of this buffer (only for dma-buf export). */
 	struct page **pages;
 };
 
@@ -484,7 +485,7 @@ static int dmabuf_exp_from_refs(struct gntdev_priv *priv, int flags,
 /* DMA buffer import support. */
 
 static int
-dmabuf_imp_grant_foreign_access(struct page **pages, u32 *refs,
+dmabuf_imp_grant_foreign_access(unsigned long *gfns, u32 *refs,
 				int count, int domid)
 {
 	grant_ref_t priv_gref_head;
@@ -507,7 +508,7 @@ dmabuf_imp_grant_foreign_access(struct page **pages, u32 *refs,
 		}
 
 		gnttab_grant_foreign_access_ref(cur_ref, domid,
-						xen_page_to_gfn(pages[i]), 0);
+						gfns[i], 0);
 		refs[i] = cur_ref;
 	}
 
@@ -529,7 +530,6 @@ static void dmabuf_imp_end_foreign_access(u32 *refs, int count)
 
 static void dmabuf_imp_free_storage(struct gntdev_dmabuf *gntdev_dmabuf)
 {
-	kfree(gntdev_dmabuf->pages);
 	kfree(gntdev_dmabuf->u.imp.refs);
 	kfree(gntdev_dmabuf);
 }
@@ -549,12 +549,6 @@ static struct gntdev_dmabuf *dmabuf_imp_alloc_storage(int count)
 	if (!gntdev_dmabuf->u.imp.refs)
 		goto fail;
 
-	gntdev_dmabuf->pages = kcalloc(count,
-				       sizeof(gntdev_dmabuf->pages[0]),
-				       GFP_KERNEL);
-	if (!gntdev_dmabuf->pages)
-		goto fail;
-
 	gntdev_dmabuf->nr_pages = count;
 
 	for (i = 0; i < count; i++)
@@ -576,7 +570,8 @@ dmabuf_imp_to_refs(struct gntdev_dmabuf_priv *priv, struct device *dev,
 	struct dma_buf *dma_buf;
 	struct dma_buf_attachment *attach;
 	struct sg_table *sgt;
-	struct sg_page_iter sg_iter;
+	struct sg_dma_page_iter sg_iter;
+	unsigned long *gfns;
 	int i;
 
 	dma_buf = dma_buf_get(fd);
@@ -624,26 +619,31 @@ dmabuf_imp_to_refs(struct gntdev_dmabuf_priv *priv, struct device *dev,
 
 	gntdev_dmabuf->u.imp.sgt = sgt;
 
-	/* Now convert sgt to array of pages and check for page validity. */
+	gfns = kcalloc(count, sizeof(*gfns), GFP_KERNEL);
+	if (!gfns) {
+		ret = ERR_PTR(-ENOMEM);
+		goto fail_unmap;
+	}
+
+	/*
+	 * Now convert sgt to array of gfns without accessing underlying pages.
+	 * It is not allowed to access the underlying struct page of an sg table
+	 * exported by DMA-buf, but since we deal with special Xen dma device here
+	 * (not a normal physical one) look at the dma addresses in the sg table
+	 * and then calculate gfns directly from them.
+	 */
 	i = 0;
-	for_each_sgtable_page(sgt, &sg_iter, 0) {
-		struct page *page = sg_page_iter_page(&sg_iter);
-		/*
-		 * Check if page is valid: this can happen if we are given
-		 * a page from VRAM or other resources which are not backed
-		 * by a struct page.
-		 */
-		if (!pfn_valid(page_to_pfn(page))) {
-			ret = ERR_PTR(-EINVAL);
-			goto fail_unmap;
-		}
+	for_each_sgtable_dma_page(sgt, &sg_iter, 0) {
+		dma_addr_t addr = sg_page_iter_dma_address(&sg_iter);
+		unsigned long pfn = bfn_to_pfn(XEN_PFN_DOWN(dma_to_phys(dev, addr)));
 
-		gntdev_dmabuf->pages[i++] = page;
+		gfns[i++] = pfn_to_gfn(pfn);
 	}
 
-	ret = ERR_PTR(dmabuf_imp_grant_foreign_access(gntdev_dmabuf->pages,
+	ret = ERR_PTR(dmabuf_imp_grant_foreign_access(gfns,
 						      gntdev_dmabuf->u.imp.refs,
 						      count, domid));
+	kfree(gfns);
 	if (IS_ERR(ret))
 		goto fail_end_access;
 
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Wed Jan 24 14:29:51 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 24 Jan 2024 14:29:51 +0000
Received: from list by lists.xenproject.org with outflank-mailman.671016.1044143 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSeGF-0008Sc-0U; Wed, 24 Jan 2024 14:29:51 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 671016.1044143; Wed, 24 Jan 2024 14:29:50 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSeGE-0008SV-Ty; Wed, 24 Jan 2024 14:29:50 +0000
Received: by outflank-mailman (input) for mailman id 671016;
 Wed, 24 Jan 2024 14:29:49 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=RVUo=JC=kernel.org=sashal@srs-se1.protection.inumbo.net>)
 id 1rSeGD-0008QV-Ke
 for xen-devel@lists.xenproject.org; Wed, 24 Jan 2024 14:29:49 +0000
Received: from sin.source.kernel.org (sin.source.kernel.org [145.40.73.55])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 0507374d-bac5-11ee-9b0f-b553b5be7939;
 Wed, 24 Jan 2024 15:29:46 +0100 (CET)
Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58])
 by sin.source.kernel.org (Postfix) with ESMTP id E22E0CE3161;
 Wed, 24 Jan 2024 14:29:42 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id B995BC433B2;
 Wed, 24 Jan 2024 14:29:34 +0000 (UTC)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 0507374d-bac5-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
	s=k20201202; t=1706106576;
	bh=6FfN1GzAtURfOQTJtQ8dKYe9y+zDqRTWUeydka0I57o=;
	h=From:To:Cc:Subject:Date:In-Reply-To:References:From;
	b=O47LrhDTGz8MNnbZS/pWzoFcmO5zKUuMKVjb8owayXYob6LNoU8bKLcwZPCnSKPzI
	 cBC9pOfv+Wn1ekegjPPi3V8qiptS4JYVpZK8xssitnOx29EPsI9q/Jum7eoIWq8Iz/
	 NUU7uJ8z3Ki5pCekxDNVRa49rFTbqb8GUP3REKwNp7g8Fyydk2kGFh4SOTjmhuKxJg
	 jTt8C8XnkJGgCM5wyUYG7OYBZv+I5i6LaOnTDHMpUiHg9uI8VLtFI/AVkkQf5G3RhV
	 MDekWMT/hPfxFDA2L98h9uzufUD2KBTBTjETj+prDWr+9yyijt7wiWRlAMH0Agzpoc
	 tjiWJxZm8KBww==
From: Sasha Levin <sashal@kernel.org>
To: linux-kernel@vger.kernel.org,
	stable@vger.kernel.org
Cc: Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>,
	Daniel Vetter <daniel@ffwll.ch>,
	=?UTF-8?q?Christian=20K=C3=B6nig?= <christian.koenig@amd.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Juergen Gross <jgross@suse.com>,
	Sasha Levin <sashal@kernel.org>,
	xen-devel@lists.xenproject.org
Subject: [PATCH AUTOSEL 6.6 09/11] xen/gntdev: Fix the abuse of underlying struct page in DMA-buf import
Date: Wed, 24 Jan 2024 09:28:52 -0500
Message-ID: <20240124142907.1283546-9-sashal@kernel.org>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20240124142907.1283546-1-sashal@kernel.org>
References: <20240124142907.1283546-1-sashal@kernel.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
X-stable: review
X-Patchwork-Hint: Ignore
X-stable-base: Linux 6.6.13
Content-Transfer-Encoding: 8bit

From: Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>

[ Upstream commit 2d2db7d40254d5fb53b11ebd703cd1ed0c5de7a1 ]

DO NOT access the underlying struct page of an sg table exported
by DMA-buf in dmabuf_imp_to_refs(), this is not allowed.
Please see drivers/dma-buf/dma-buf.c:mangle_sg_table() for details.

Fortunately, here (for special Xen device) we can avoid using
pages and calculate gfns directly from dma addresses provided by
the sg table.

Suggested-by: Daniel Vetter <daniel@ffwll.ch>
Signed-off-by: Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>
Acked-by: Christian König <christian.koenig@amd.com>
Reviewed-by: Stefano Stabellini <sstabellini@kernel.org>
Acked-by: Daniel Vetter <daniel@ffwll.ch>
Link: https://lore.kernel.org/r/20240107103426.2038075-1-olekstysh@gmail.com
Signed-off-by: Juergen Gross <jgross@suse.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/xen/gntdev-dmabuf.c | 50 ++++++++++++++++++-------------------
 1 file changed, 25 insertions(+), 25 deletions(-)

diff --git a/drivers/xen/gntdev-dmabuf.c b/drivers/xen/gntdev-dmabuf.c
index 4440e626b797..42adc2c1e06b 100644
--- a/drivers/xen/gntdev-dmabuf.c
+++ b/drivers/xen/gntdev-dmabuf.c
@@ -11,6 +11,7 @@
 #include <linux/kernel.h>
 #include <linux/errno.h>
 #include <linux/dma-buf.h>
+#include <linux/dma-direct.h>
 #include <linux/slab.h>
 #include <linux/types.h>
 #include <linux/uaccess.h>
@@ -50,7 +51,7 @@ struct gntdev_dmabuf {
 
 	/* Number of pages this buffer has. */
 	int nr_pages;
-	/* Pages of this buffer. */
+	/* Pages of this buffer (only for dma-buf export). */
 	struct page **pages;
 };
 
@@ -484,7 +485,7 @@ static int dmabuf_exp_from_refs(struct gntdev_priv *priv, int flags,
 /* DMA buffer import support. */
 
 static int
-dmabuf_imp_grant_foreign_access(struct page **pages, u32 *refs,
+dmabuf_imp_grant_foreign_access(unsigned long *gfns, u32 *refs,
 				int count, int domid)
 {
 	grant_ref_t priv_gref_head;
@@ -507,7 +508,7 @@ dmabuf_imp_grant_foreign_access(struct page **pages, u32 *refs,
 		}
 
 		gnttab_grant_foreign_access_ref(cur_ref, domid,
-						xen_page_to_gfn(pages[i]), 0);
+						gfns[i], 0);
 		refs[i] = cur_ref;
 	}
 
@@ -529,7 +530,6 @@ static void dmabuf_imp_end_foreign_access(u32 *refs, int count)
 
 static void dmabuf_imp_free_storage(struct gntdev_dmabuf *gntdev_dmabuf)
 {
-	kfree(gntdev_dmabuf->pages);
 	kfree(gntdev_dmabuf->u.imp.refs);
 	kfree(gntdev_dmabuf);
 }
@@ -549,12 +549,6 @@ static struct gntdev_dmabuf *dmabuf_imp_alloc_storage(int count)
 	if (!gntdev_dmabuf->u.imp.refs)
 		goto fail;
 
-	gntdev_dmabuf->pages = kcalloc(count,
-				       sizeof(gntdev_dmabuf->pages[0]),
-				       GFP_KERNEL);
-	if (!gntdev_dmabuf->pages)
-		goto fail;
-
 	gntdev_dmabuf->nr_pages = count;
 
 	for (i = 0; i < count; i++)
@@ -576,7 +570,8 @@ dmabuf_imp_to_refs(struct gntdev_dmabuf_priv *priv, struct device *dev,
 	struct dma_buf *dma_buf;
 	struct dma_buf_attachment *attach;
 	struct sg_table *sgt;
-	struct sg_page_iter sg_iter;
+	struct sg_dma_page_iter sg_iter;
+	unsigned long *gfns;
 	int i;
 
 	dma_buf = dma_buf_get(fd);
@@ -624,26 +619,31 @@ dmabuf_imp_to_refs(struct gntdev_dmabuf_priv *priv, struct device *dev,
 
 	gntdev_dmabuf->u.imp.sgt = sgt;
 
-	/* Now convert sgt to array of pages and check for page validity. */
+	gfns = kcalloc(count, sizeof(*gfns), GFP_KERNEL);
+	if (!gfns) {
+		ret = ERR_PTR(-ENOMEM);
+		goto fail_unmap;
+	}
+
+	/*
+	 * Now convert sgt to array of gfns without accessing underlying pages.
+	 * It is not allowed to access the underlying struct page of an sg table
+	 * exported by DMA-buf, but since we deal with special Xen dma device here
+	 * (not a normal physical one) look at the dma addresses in the sg table
+	 * and then calculate gfns directly from them.
+	 */
 	i = 0;
-	for_each_sgtable_page(sgt, &sg_iter, 0) {
-		struct page *page = sg_page_iter_page(&sg_iter);
-		/*
-		 * Check if page is valid: this can happen if we are given
-		 * a page from VRAM or other resources which are not backed
-		 * by a struct page.
-		 */
-		if (!pfn_valid(page_to_pfn(page))) {
-			ret = ERR_PTR(-EINVAL);
-			goto fail_unmap;
-		}
+	for_each_sgtable_dma_page(sgt, &sg_iter, 0) {
+		dma_addr_t addr = sg_page_iter_dma_address(&sg_iter);
+		unsigned long pfn = bfn_to_pfn(XEN_PFN_DOWN(dma_to_phys(dev, addr)));
 
-		gntdev_dmabuf->pages[i++] = page;
+		gfns[i++] = pfn_to_gfn(pfn);
 	}
 
-	ret = ERR_PTR(dmabuf_imp_grant_foreign_access(gntdev_dmabuf->pages,
+	ret = ERR_PTR(dmabuf_imp_grant_foreign_access(gfns,
 						      gntdev_dmabuf->u.imp.refs,
 						      count, domid));
+	kfree(gfns);
 	if (IS_ERR(ret))
 		goto fail_end_access;
 
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Wed Jan 24 14:30:14 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 24 Jan 2024 14:30:14 +0000
Received: from list by lists.xenproject.org with outflank-mailman.671018.1044153 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSeGc-0001HS-7r; Wed, 24 Jan 2024 14:30:14 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 671018.1044153; Wed, 24 Jan 2024 14:30:14 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSeGc-0001HL-4p; Wed, 24 Jan 2024 14:30:14 +0000
Received: by outflank-mailman (input) for mailman id 671018;
 Wed, 24 Jan 2024 14:30:12 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=RVUo=JC=kernel.org=sashal@srs-se1.protection.inumbo.net>)
 id 1rSeGa-0001Be-N3
 for xen-devel@lists.xenproject.org; Wed, 24 Jan 2024 14:30:12 +0000
Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 13e2fe7b-bac5-11ee-98f5-6d05b1d4d9a1;
 Wed, 24 Jan 2024 15:30:10 +0100 (CET)
Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58])
 by dfw.source.kernel.org (Postfix) with ESMTP id E080F61D73;
 Wed, 24 Jan 2024 14:30:09 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 62A10C433C7;
 Wed, 24 Jan 2024 14:30:08 +0000 (UTC)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 13e2fe7b-bac5-11ee-98f5-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
	s=k20201202; t=1706106609;
	bh=4NLraLO7/AX0zW13dim0c0URPDyyqwoeRLWjqOfYK/Q=;
	h=From:To:Cc:Subject:Date:In-Reply-To:References:From;
	b=YJPsUMX5h1m6G96o2TTL7e71ZTMMD+H+JmiJREZ2o8lm2/bPHjfPmLqlkgQlDQctw
	 QTksrPqfygUFzwcM+8oTZEbX5CmPwQF/WBIv9TZqz9+O/4871LJb++ancfOCnZg3yq
	 Ac61VnAuNkw01DnxLdpaTM0pZaN6gN/sc8jpnPvkRTGKVca8ubp61aROpp/wJWmxgq
	 Eta/SJuOTJYNs2w1oucumqJJvteN6yPZ9kGteoZxPiuYICDk5FH7ujLMK+EZhs7oCO
	 cqJiwoQdO6ziBDse74fS3iUWnekvjH+kjFJV05hEQuELU8TXQehKApNz9gL0EUCG4H
	 0c4wtQ8N3K0Mg==
From: Sasha Levin <sashal@kernel.org>
To: linux-kernel@vger.kernel.org,
	stable@vger.kernel.org
Cc: Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>,
	Daniel Vetter <daniel@ffwll.ch>,
	=?UTF-8?q?Christian=20K=C3=B6nig?= <christian.koenig@amd.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Juergen Gross <jgross@suse.com>,
	Sasha Levin <sashal@kernel.org>,
	xen-devel@lists.xenproject.org
Subject: [PATCH AUTOSEL 6.1 7/9] xen/gntdev: Fix the abuse of underlying struct page in DMA-buf import
Date: Wed, 24 Jan 2024 09:29:37 -0500
Message-ID: <20240124142949.1283818-7-sashal@kernel.org>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20240124142949.1283818-1-sashal@kernel.org>
References: <20240124142949.1283818-1-sashal@kernel.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
X-stable: review
X-Patchwork-Hint: Ignore
X-stable-base: Linux 6.1.74
Content-Transfer-Encoding: 8bit

From: Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>

[ Upstream commit 2d2db7d40254d5fb53b11ebd703cd1ed0c5de7a1 ]

DO NOT access the underlying struct page of an sg table exported
by DMA-buf in dmabuf_imp_to_refs(), this is not allowed.
Please see drivers/dma-buf/dma-buf.c:mangle_sg_table() for details.

Fortunately, here (for special Xen device) we can avoid using
pages and calculate gfns directly from dma addresses provided by
the sg table.

Suggested-by: Daniel Vetter <daniel@ffwll.ch>
Signed-off-by: Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>
Acked-by: Christian König <christian.koenig@amd.com>
Reviewed-by: Stefano Stabellini <sstabellini@kernel.org>
Acked-by: Daniel Vetter <daniel@ffwll.ch>
Link: https://lore.kernel.org/r/20240107103426.2038075-1-olekstysh@gmail.com
Signed-off-by: Juergen Gross <jgross@suse.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/xen/gntdev-dmabuf.c | 50 ++++++++++++++++++-------------------
 1 file changed, 25 insertions(+), 25 deletions(-)

diff --git a/drivers/xen/gntdev-dmabuf.c b/drivers/xen/gntdev-dmabuf.c
index 940e5e9e8a54..335451309566 100644
--- a/drivers/xen/gntdev-dmabuf.c
+++ b/drivers/xen/gntdev-dmabuf.c
@@ -11,6 +11,7 @@
 #include <linux/kernel.h>
 #include <linux/errno.h>
 #include <linux/dma-buf.h>
+#include <linux/dma-direct.h>
 #include <linux/slab.h>
 #include <linux/types.h>
 #include <linux/uaccess.h>
@@ -50,7 +51,7 @@ struct gntdev_dmabuf {
 
 	/* Number of pages this buffer has. */
 	int nr_pages;
-	/* Pages of this buffer. */
+	/* Pages of this buffer (only for dma-buf export). */
 	struct page **pages;
 };
 
@@ -484,7 +485,7 @@ static int dmabuf_exp_from_refs(struct gntdev_priv *priv, int flags,
 /* DMA buffer import support. */
 
 static int
-dmabuf_imp_grant_foreign_access(struct page **pages, u32 *refs,
+dmabuf_imp_grant_foreign_access(unsigned long *gfns, u32 *refs,
 				int count, int domid)
 {
 	grant_ref_t priv_gref_head;
@@ -507,7 +508,7 @@ dmabuf_imp_grant_foreign_access(struct page **pages, u32 *refs,
 		}
 
 		gnttab_grant_foreign_access_ref(cur_ref, domid,
-						xen_page_to_gfn(pages[i]), 0);
+						gfns[i], 0);
 		refs[i] = cur_ref;
 	}
 
@@ -529,7 +530,6 @@ static void dmabuf_imp_end_foreign_access(u32 *refs, int count)
 
 static void dmabuf_imp_free_storage(struct gntdev_dmabuf *gntdev_dmabuf)
 {
-	kfree(gntdev_dmabuf->pages);
 	kfree(gntdev_dmabuf->u.imp.refs);
 	kfree(gntdev_dmabuf);
 }
@@ -549,12 +549,6 @@ static struct gntdev_dmabuf *dmabuf_imp_alloc_storage(int count)
 	if (!gntdev_dmabuf->u.imp.refs)
 		goto fail;
 
-	gntdev_dmabuf->pages = kcalloc(count,
-				       sizeof(gntdev_dmabuf->pages[0]),
-				       GFP_KERNEL);
-	if (!gntdev_dmabuf->pages)
-		goto fail;
-
 	gntdev_dmabuf->nr_pages = count;
 
 	for (i = 0; i < count; i++)
@@ -576,7 +570,8 @@ dmabuf_imp_to_refs(struct gntdev_dmabuf_priv *priv, struct device *dev,
 	struct dma_buf *dma_buf;
 	struct dma_buf_attachment *attach;
 	struct sg_table *sgt;
-	struct sg_page_iter sg_iter;
+	struct sg_dma_page_iter sg_iter;
+	unsigned long *gfns;
 	int i;
 
 	dma_buf = dma_buf_get(fd);
@@ -624,26 +619,31 @@ dmabuf_imp_to_refs(struct gntdev_dmabuf_priv *priv, struct device *dev,
 
 	gntdev_dmabuf->u.imp.sgt = sgt;
 
-	/* Now convert sgt to array of pages and check for page validity. */
+	gfns = kcalloc(count, sizeof(*gfns), GFP_KERNEL);
+	if (!gfns) {
+		ret = ERR_PTR(-ENOMEM);
+		goto fail_unmap;
+	}
+
+	/*
+	 * Now convert sgt to array of gfns without accessing underlying pages.
+	 * It is not allowed to access the underlying struct page of an sg table
+	 * exported by DMA-buf, but since we deal with special Xen dma device here
+	 * (not a normal physical one) look at the dma addresses in the sg table
+	 * and then calculate gfns directly from them.
+	 */
 	i = 0;
-	for_each_sgtable_page(sgt, &sg_iter, 0) {
-		struct page *page = sg_page_iter_page(&sg_iter);
-		/*
-		 * Check if page is valid: this can happen if we are given
-		 * a page from VRAM or other resources which are not backed
-		 * by a struct page.
-		 */
-		if (!pfn_valid(page_to_pfn(page))) {
-			ret = ERR_PTR(-EINVAL);
-			goto fail_unmap;
-		}
+	for_each_sgtable_dma_page(sgt, &sg_iter, 0) {
+		dma_addr_t addr = sg_page_iter_dma_address(&sg_iter);
+		unsigned long pfn = bfn_to_pfn(XEN_PFN_DOWN(dma_to_phys(dev, addr)));
 
-		gntdev_dmabuf->pages[i++] = page;
+		gfns[i++] = pfn_to_gfn(pfn);
 	}
 
-	ret = ERR_PTR(dmabuf_imp_grant_foreign_access(gntdev_dmabuf->pages,
+	ret = ERR_PTR(dmabuf_imp_grant_foreign_access(gfns,
 						      gntdev_dmabuf->u.imp.refs,
 						      count, domid));
+	kfree(gfns);
 	if (IS_ERR(ret))
 		goto fail_end_access;
 
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Wed Jan 24 14:31:06 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 24 Jan 2024 14:31:06 +0000
Received: from list by lists.xenproject.org with outflank-mailman.671024.1044163 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSeHR-0001zl-Js; Wed, 24 Jan 2024 14:31:05 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 671024.1044163; Wed, 24 Jan 2024 14:31:05 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSeHR-0001ze-Gm; Wed, 24 Jan 2024 14:31:05 +0000
Received: by outflank-mailman (input) for mailman id 671024;
 Wed, 24 Jan 2024 14:31:04 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=RVUo=JC=kernel.org=sashal@srs-se1.protection.inumbo.net>)
 id 1rSeHQ-0001tR-EO
 for xen-devel@lists.xenproject.org; Wed, 24 Jan 2024 14:31:04 +0000
Received: from sin.source.kernel.org (sin.source.kernel.org
 [2604:1380:40e1:4800::1])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 30e4ae16-bac5-11ee-9b0f-b553b5be7939;
 Wed, 24 Jan 2024 15:31:00 +0100 (CET)
Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58])
 by sin.source.kernel.org (Postfix) with ESMTP id 2C78ECE302B;
 Wed, 24 Jan 2024 14:30:56 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id A9296C433B2;
 Wed, 24 Jan 2024 14:30:43 +0000 (UTC)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 30e4ae16-bac5-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
	s=k20201202; t=1706106644;
	bh=j7KBrdgzwN0IO1FenNnoGKVgyjjhdMdG0YY85G4rJpc=;
	h=From:To:Cc:Subject:Date:In-Reply-To:References:From;
	b=uNYDjUn70A8TsRp1zL/fz4PWjsceNKciszon5hhml/Zk/Mu2UoKuzhlhBj/y/sh/x
	 6YlEqvNCFfzWu5M4AKCiWYLBxTWwB9fC1/GSh0OfdiS2YPWAxD19gAAO1hVjCj+gBk
	 tn/emwieOIVTKsBstcrtSRW07+1YzxGILRvEwgHtLVOzT9JXZ3e2OflQXBTxUC0a2l
	 uNUE7LH+68tJhQaufAnHoBHyV2UVieIcZZA97LH8cM2ckmEby8YOrUZdr87nSXcI5T
	 tsZNkjItRzhh3BxBt7huVjGD0ToHMXufY/j+0fVz9nrvgwbCMlWKM9FpeTlrHWat+e
	 qs7EMyUTExcWA==
From: Sasha Levin <sashal@kernel.org>
To: linux-kernel@vger.kernel.org,
	stable@vger.kernel.org
Cc: Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>,
	Daniel Vetter <daniel@ffwll.ch>,
	=?UTF-8?q?Christian=20K=C3=B6nig?= <christian.koenig@amd.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Juergen Gross <jgross@suse.com>,
	Sasha Levin <sashal@kernel.org>,
	xen-devel@lists.xenproject.org
Subject: [PATCH AUTOSEL 5.15 7/9] xen/gntdev: Fix the abuse of underlying struct page in DMA-buf import
Date: Wed, 24 Jan 2024 09:30:10 -0500
Message-ID: <20240124143024.1284046-7-sashal@kernel.org>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20240124143024.1284046-1-sashal@kernel.org>
References: <20240124143024.1284046-1-sashal@kernel.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
X-stable: review
X-Patchwork-Hint: Ignore
X-stable-base: Linux 5.15.147
Content-Transfer-Encoding: 8bit

From: Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>

[ Upstream commit 2d2db7d40254d5fb53b11ebd703cd1ed0c5de7a1 ]

DO NOT access the underlying struct page of an sg table exported
by DMA-buf in dmabuf_imp_to_refs(), this is not allowed.
Please see drivers/dma-buf/dma-buf.c:mangle_sg_table() for details.

Fortunately, here (for special Xen device) we can avoid using
pages and calculate gfns directly from dma addresses provided by
the sg table.

Suggested-by: Daniel Vetter <daniel@ffwll.ch>
Signed-off-by: Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>
Acked-by: Christian König <christian.koenig@amd.com>
Reviewed-by: Stefano Stabellini <sstabellini@kernel.org>
Acked-by: Daniel Vetter <daniel@ffwll.ch>
Link: https://lore.kernel.org/r/20240107103426.2038075-1-olekstysh@gmail.com
Signed-off-by: Juergen Gross <jgross@suse.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/xen/gntdev-dmabuf.c | 50 ++++++++++++++++++-------------------
 1 file changed, 25 insertions(+), 25 deletions(-)

diff --git a/drivers/xen/gntdev-dmabuf.c b/drivers/xen/gntdev-dmabuf.c
index 4c13cbc99896..398ea69c176c 100644
--- a/drivers/xen/gntdev-dmabuf.c
+++ b/drivers/xen/gntdev-dmabuf.c
@@ -11,6 +11,7 @@
 #include <linux/kernel.h>
 #include <linux/errno.h>
 #include <linux/dma-buf.h>
+#include <linux/dma-direct.h>
 #include <linux/slab.h>
 #include <linux/types.h>
 #include <linux/uaccess.h>
@@ -56,7 +57,7 @@ struct gntdev_dmabuf {
 
 	/* Number of pages this buffer has. */
 	int nr_pages;
-	/* Pages of this buffer. */
+	/* Pages of this buffer (only for dma-buf export). */
 	struct page **pages;
 };
 
@@ -490,7 +491,7 @@ static int dmabuf_exp_from_refs(struct gntdev_priv *priv, int flags,
 /* DMA buffer import support. */
 
 static int
-dmabuf_imp_grant_foreign_access(struct page **pages, u32 *refs,
+dmabuf_imp_grant_foreign_access(unsigned long *gfns, u32 *refs,
 				int count, int domid)
 {
 	grant_ref_t priv_gref_head;
@@ -513,7 +514,7 @@ dmabuf_imp_grant_foreign_access(struct page **pages, u32 *refs,
 		}
 
 		gnttab_grant_foreign_access_ref(cur_ref, domid,
-						xen_page_to_gfn(pages[i]), 0);
+						gfns[i], 0);
 		refs[i] = cur_ref;
 	}
 
@@ -535,7 +536,6 @@ static void dmabuf_imp_end_foreign_access(u32 *refs, int count)
 
 static void dmabuf_imp_free_storage(struct gntdev_dmabuf *gntdev_dmabuf)
 {
-	kfree(gntdev_dmabuf->pages);
 	kfree(gntdev_dmabuf->u.imp.refs);
 	kfree(gntdev_dmabuf);
 }
@@ -555,12 +555,6 @@ static struct gntdev_dmabuf *dmabuf_imp_alloc_storage(int count)
 	if (!gntdev_dmabuf->u.imp.refs)
 		goto fail;
 
-	gntdev_dmabuf->pages = kcalloc(count,
-				       sizeof(gntdev_dmabuf->pages[0]),
-				       GFP_KERNEL);
-	if (!gntdev_dmabuf->pages)
-		goto fail;
-
 	gntdev_dmabuf->nr_pages = count;
 
 	for (i = 0; i < count; i++)
@@ -582,7 +576,8 @@ dmabuf_imp_to_refs(struct gntdev_dmabuf_priv *priv, struct device *dev,
 	struct dma_buf *dma_buf;
 	struct dma_buf_attachment *attach;
 	struct sg_table *sgt;
-	struct sg_page_iter sg_iter;
+	struct sg_dma_page_iter sg_iter;
+	unsigned long *gfns;
 	int i;
 
 	dma_buf = dma_buf_get(fd);
@@ -630,26 +625,31 @@ dmabuf_imp_to_refs(struct gntdev_dmabuf_priv *priv, struct device *dev,
 
 	gntdev_dmabuf->u.imp.sgt = sgt;
 
-	/* Now convert sgt to array of pages and check for page validity. */
+	gfns = kcalloc(count, sizeof(*gfns), GFP_KERNEL);
+	if (!gfns) {
+		ret = ERR_PTR(-ENOMEM);
+		goto fail_unmap;
+	}
+
+	/*
+	 * Now convert sgt to array of gfns without accessing underlying pages.
+	 * It is not allowed to access the underlying struct page of an sg table
+	 * exported by DMA-buf, but since we deal with special Xen dma device here
+	 * (not a normal physical one) look at the dma addresses in the sg table
+	 * and then calculate gfns directly from them.
+	 */
 	i = 0;
-	for_each_sgtable_page(sgt, &sg_iter, 0) {
-		struct page *page = sg_page_iter_page(&sg_iter);
-		/*
-		 * Check if page is valid: this can happen if we are given
-		 * a page from VRAM or other resources which are not backed
-		 * by a struct page.
-		 */
-		if (!pfn_valid(page_to_pfn(page))) {
-			ret = ERR_PTR(-EINVAL);
-			goto fail_unmap;
-		}
+	for_each_sgtable_dma_page(sgt, &sg_iter, 0) {
+		dma_addr_t addr = sg_page_iter_dma_address(&sg_iter);
+		unsigned long pfn = bfn_to_pfn(XEN_PFN_DOWN(dma_to_phys(dev, addr)));
 
-		gntdev_dmabuf->pages[i++] = page;
+		gfns[i++] = pfn_to_gfn(pfn);
 	}
 
-	ret = ERR_PTR(dmabuf_imp_grant_foreign_access(gntdev_dmabuf->pages,
+	ret = ERR_PTR(dmabuf_imp_grant_foreign_access(gfns,
 						      gntdev_dmabuf->u.imp.refs,
 						      count, domid));
+	kfree(gfns);
 	if (IS_ERR(ret))
 		goto fail_end_access;
 
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Wed Jan 24 14:31:19 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 24 Jan 2024 14:31:19 +0000
Received: from list by lists.xenproject.org with outflank-mailman.671025.1044172 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSeHe-0002Lr-Qe; Wed, 24 Jan 2024 14:31:18 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 671025.1044172; Wed, 24 Jan 2024 14:31:18 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSeHe-0002Lk-NZ; Wed, 24 Jan 2024 14:31:18 +0000
Received: by outflank-mailman (input) for mailman id 671025;
 Wed, 24 Jan 2024 14:31:16 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=RVUo=JC=kernel.org=sashal@srs-se1.protection.inumbo.net>)
 id 1rSeHc-0001tR-QU
 for xen-devel@lists.xenproject.org; Wed, 24 Jan 2024 14:31:16 +0000
Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 3980054b-bac5-11ee-9b0f-b553b5be7939;
 Wed, 24 Jan 2024 15:31:14 +0100 (CET)
Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58])
 by dfw.source.kernel.org (Postfix) with ESMTP id 7FFD061D79;
 Wed, 24 Jan 2024 14:31:13 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 27CF1C43399;
 Wed, 24 Jan 2024 14:31:12 +0000 (UTC)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 3980054b-bac5-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
	s=k20201202; t=1706106673;
	bh=j7KBrdgzwN0IO1FenNnoGKVgyjjhdMdG0YY85G4rJpc=;
	h=From:To:Cc:Subject:Date:In-Reply-To:References:From;
	b=vOKM5rf6IBSc3MCyDh+ypjuJHEVRQ+/jAtDMYpbvxSjrvK18VJItRa2gQ5eG1vStb
	 GRYq9RBOaMFpGuYmK6T30t4s21e6cr9smvkJ4KvBXmKW6Fwya2Dxu4aswYDkU9ErT8
	 gfACZWHUorgkIvzw3iCQPSE7kYsaWAsHyCJZBiRxHFpgG9gPQC8vNPkdNzGv0eFN8Y
	 ZXNNd7sWZljasTv1lZJwm8aofzP1vUpRTVpOXm9YUI8lOEHvCZeeJH1aQxSJCLGysk
	 3O47cNCH2neUXWlYxHpG9E9DM8hxWQuEAl22g1QtCulFJ7vrI75cycpf94iHx6Gp8H
	 nukQHvyBEprLQ==
From: Sasha Levin <sashal@kernel.org>
To: linux-kernel@vger.kernel.org,
	stable@vger.kernel.org
Cc: Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>,
	Daniel Vetter <daniel@ffwll.ch>,
	=?UTF-8?q?Christian=20K=C3=B6nig?= <christian.koenig@amd.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Juergen Gross <jgross@suse.com>,
	Sasha Levin <sashal@kernel.org>,
	xen-devel@lists.xenproject.org
Subject: [PATCH AUTOSEL 5.10 6/7] xen/gntdev: Fix the abuse of underlying struct page in DMA-buf import
Date: Wed, 24 Jan 2024 09:30:47 -0500
Message-ID: <20240124143057.1284274-6-sashal@kernel.org>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20240124143057.1284274-1-sashal@kernel.org>
References: <20240124143057.1284274-1-sashal@kernel.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
X-stable: review
X-Patchwork-Hint: Ignore
X-stable-base: Linux 5.10.208
Content-Transfer-Encoding: 8bit

From: Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>

[ Upstream commit 2d2db7d40254d5fb53b11ebd703cd1ed0c5de7a1 ]

DO NOT access the underlying struct page of an sg table exported
by DMA-buf in dmabuf_imp_to_refs(), this is not allowed.
Please see drivers/dma-buf/dma-buf.c:mangle_sg_table() for details.

Fortunately, here (for special Xen device) we can avoid using
pages and calculate gfns directly from dma addresses provided by
the sg table.

Suggested-by: Daniel Vetter <daniel@ffwll.ch>
Signed-off-by: Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>
Acked-by: Christian König <christian.koenig@amd.com>
Reviewed-by: Stefano Stabellini <sstabellini@kernel.org>
Acked-by: Daniel Vetter <daniel@ffwll.ch>
Link: https://lore.kernel.org/r/20240107103426.2038075-1-olekstysh@gmail.com
Signed-off-by: Juergen Gross <jgross@suse.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/xen/gntdev-dmabuf.c | 50 ++++++++++++++++++-------------------
 1 file changed, 25 insertions(+), 25 deletions(-)

diff --git a/drivers/xen/gntdev-dmabuf.c b/drivers/xen/gntdev-dmabuf.c
index 4c13cbc99896..398ea69c176c 100644
--- a/drivers/xen/gntdev-dmabuf.c
+++ b/drivers/xen/gntdev-dmabuf.c
@@ -11,6 +11,7 @@
 #include <linux/kernel.h>
 #include <linux/errno.h>
 #include <linux/dma-buf.h>
+#include <linux/dma-direct.h>
 #include <linux/slab.h>
 #include <linux/types.h>
 #include <linux/uaccess.h>
@@ -56,7 +57,7 @@ struct gntdev_dmabuf {
 
 	/* Number of pages this buffer has. */
 	int nr_pages;
-	/* Pages of this buffer. */
+	/* Pages of this buffer (only for dma-buf export). */
 	struct page **pages;
 };
 
@@ -490,7 +491,7 @@ static int dmabuf_exp_from_refs(struct gntdev_priv *priv, int flags,
 /* DMA buffer import support. */
 
 static int
-dmabuf_imp_grant_foreign_access(struct page **pages, u32 *refs,
+dmabuf_imp_grant_foreign_access(unsigned long *gfns, u32 *refs,
 				int count, int domid)
 {
 	grant_ref_t priv_gref_head;
@@ -513,7 +514,7 @@ dmabuf_imp_grant_foreign_access(struct page **pages, u32 *refs,
 		}
 
 		gnttab_grant_foreign_access_ref(cur_ref, domid,
-						xen_page_to_gfn(pages[i]), 0);
+						gfns[i], 0);
 		refs[i] = cur_ref;
 	}
 
@@ -535,7 +536,6 @@ static void dmabuf_imp_end_foreign_access(u32 *refs, int count)
 
 static void dmabuf_imp_free_storage(struct gntdev_dmabuf *gntdev_dmabuf)
 {
-	kfree(gntdev_dmabuf->pages);
 	kfree(gntdev_dmabuf->u.imp.refs);
 	kfree(gntdev_dmabuf);
 }
@@ -555,12 +555,6 @@ static struct gntdev_dmabuf *dmabuf_imp_alloc_storage(int count)
 	if (!gntdev_dmabuf->u.imp.refs)
 		goto fail;
 
-	gntdev_dmabuf->pages = kcalloc(count,
-				       sizeof(gntdev_dmabuf->pages[0]),
-				       GFP_KERNEL);
-	if (!gntdev_dmabuf->pages)
-		goto fail;
-
 	gntdev_dmabuf->nr_pages = count;
 
 	for (i = 0; i < count; i++)
@@ -582,7 +576,8 @@ dmabuf_imp_to_refs(struct gntdev_dmabuf_priv *priv, struct device *dev,
 	struct dma_buf *dma_buf;
 	struct dma_buf_attachment *attach;
 	struct sg_table *sgt;
-	struct sg_page_iter sg_iter;
+	struct sg_dma_page_iter sg_iter;
+	unsigned long *gfns;
 	int i;
 
 	dma_buf = dma_buf_get(fd);
@@ -630,26 +625,31 @@ dmabuf_imp_to_refs(struct gntdev_dmabuf_priv *priv, struct device *dev,
 
 	gntdev_dmabuf->u.imp.sgt = sgt;
 
-	/* Now convert sgt to array of pages and check for page validity. */
+	gfns = kcalloc(count, sizeof(*gfns), GFP_KERNEL);
+	if (!gfns) {
+		ret = ERR_PTR(-ENOMEM);
+		goto fail_unmap;
+	}
+
+	/*
+	 * Now convert sgt to array of gfns without accessing underlying pages.
+	 * It is not allowed to access the underlying struct page of an sg table
+	 * exported by DMA-buf, but since we deal with special Xen dma device here
+	 * (not a normal physical one) look at the dma addresses in the sg table
+	 * and then calculate gfns directly from them.
+	 */
 	i = 0;
-	for_each_sgtable_page(sgt, &sg_iter, 0) {
-		struct page *page = sg_page_iter_page(&sg_iter);
-		/*
-		 * Check if page is valid: this can happen if we are given
-		 * a page from VRAM or other resources which are not backed
-		 * by a struct page.
-		 */
-		if (!pfn_valid(page_to_pfn(page))) {
-			ret = ERR_PTR(-EINVAL);
-			goto fail_unmap;
-		}
+	for_each_sgtable_dma_page(sgt, &sg_iter, 0) {
+		dma_addr_t addr = sg_page_iter_dma_address(&sg_iter);
+		unsigned long pfn = bfn_to_pfn(XEN_PFN_DOWN(dma_to_phys(dev, addr)));
 
-		gntdev_dmabuf->pages[i++] = page;
+		gfns[i++] = pfn_to_gfn(pfn);
 	}
 
-	ret = ERR_PTR(dmabuf_imp_grant_foreign_access(gntdev_dmabuf->pages,
+	ret = ERR_PTR(dmabuf_imp_grant_foreign_access(gfns,
 						      gntdev_dmabuf->u.imp.refs,
 						      count, domid));
+	kfree(gfns);
 	if (IS_ERR(ret))
 		goto fail_end_access;
 
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Wed Jan 24 14:56:51 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 24 Jan 2024 14:56:51 +0000
Received: from list by lists.xenproject.org with outflank-mailman.671074.1044198 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSegG-0007kd-4T; Wed, 24 Jan 2024 14:56:44 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 671074.1044198; Wed, 24 Jan 2024 14:56:44 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSegG-0007kW-1L; Wed, 24 Jan 2024 14:56:44 +0000
Received: by outflank-mailman (input) for mailman id 671074;
 Wed, 24 Jan 2024 14:56:42 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=k9jB=JC=gmail.com=oleksii.kurochko@srs-se1.protection.inumbo.net>)
 id 1rSegE-0007kQ-Kf
 for xen-devel@lists.xenproject.org; Wed, 24 Jan 2024 14:56:42 +0000
Received: from mail-ed1-x529.google.com (mail-ed1-x529.google.com
 [2a00:1450:4864:20::529])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id c8777ff7-bac8-11ee-98f5-6d05b1d4d9a1;
 Wed, 24 Jan 2024 15:56:41 +0100 (CET)
Received: by mail-ed1-x529.google.com with SMTP id
 4fb4d7f45d1cf-55790581457so7606323a12.3
 for <xen-devel@lists.xenproject.org>; Wed, 24 Jan 2024 06:56:41 -0800 (PST)
Received: from [192.168.206.239] ([94.75.70.14])
 by smtp.gmail.com with ESMTPSA id
 n5-20020a056402434500b00559c6000835sm9800167edc.5.2024.01.24.06.56.39
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 24 Jan 2024 06:56:40 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: c8777ff7-bac8-11ee-98f5-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1706108201; x=1706713001; darn=lists.xenproject.org;
        h=mime-version:user-agent:content-transfer-encoding:references
         :in-reply-to:date:cc:to:from:subject:message-id:from:to:cc:subject
         :date:message-id:reply-to;
        bh=+c/BDb31XKSwE0whlvOisVCRxCOXwfcFgXAHAi0ZIE8=;
        b=YKW2YZhF7q2u4AlAD7tiiDHMLnDaEW1T5jTxwiRiarklM5DdWg5uL9Ne6X+2GnFn1b
         7E/KbyshSnJJs959TQ4rLfKJnOzZioUJY2kWEyV8xjhPzDmFrDb1pO9uqFAdxRIb6Wbs
         2WLC3BTi2L7LAfzzfyu2AMo5E+dxCKWgx0c4+dB54jhAnalvW2FDj4eJ14EFA/7pLXWc
         L8H8/ZuA96XXRxukmHbn0rLE0Jgvbldn6vkC4G5HTJdPmnyC0bEfJPaOVYR2muycFEyD
         6XvJmIv8vzQNoQPSD1kPdupBexMnTvIeQdETveGLiZHRLkovKFURwSt2JkPt8LtamPai
         NNOA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706108201; x=1706713001;
        h=mime-version:user-agent:content-transfer-encoding:references
         :in-reply-to:date:cc:to:from:subject:message-id:x-gm-message-state
         :from:to:cc:subject:date:message-id:reply-to;
        bh=+c/BDb31XKSwE0whlvOisVCRxCOXwfcFgXAHAi0ZIE8=;
        b=b7+5ubT4zV1/mvyKF1lxdrgpFNNAj7wXDdnAdAhIOyM8CtL4j+Hkb2C8NsR1WxW0kJ
         0clnPtSI4wFTDDgAL6MPtSYY+NktUM7RR6kOdzrmppbWZrVxw9MR0oxIr45srrebNXOb
         THP59ieOtJpvoDOnXqe0Vi81qCdOW29AJyJk0NEE0Jv7sLTIl0rGqAKZK5CaDsu7Lv8I
         ypR1k2UUN0MJFhC77EAmpA3KrzpjQouE2SLc3sVBeVskbQeKvOPQA2TfRxFvBjQeyRda
         2d7MZZDfu8yRJijYkLugoNQS5H9poHU9UKt8DyiBRvChpU59ToHG+NFvDpx1R2J2a1OB
         dRvw==
X-Gm-Message-State: AOJu0Yyab7hd6nln4WdxTaYS+vM53HI8rdN6jjt2oX+cQrAMG7s6znNT
	X42K8GU/9IZwdTtbVa92fKQSb8GlUfYF6BCfcZzTFl/tDF9GcINQ
X-Google-Smtp-Source: AGHT+IHWztJc0AGhbYy5Kwt5bF1eUg6cfW6oIOWHRwDeDs8MTKbm8FzJs4gJPeLYsioJg0honBXerg==
X-Received: by 2002:a05:6402:1c0e:b0:558:d960:e2e7 with SMTP id ck14-20020a0564021c0e00b00558d960e2e7mr1809627edb.40.1706108200798;
        Wed, 24 Jan 2024 06:56:40 -0800 (PST)
Message-ID: <e14ec7b9a6341732927bb4b4849afa76b5780f5b.camel@gmail.com>
Subject: Re: [PATCH v3 15/34] xen/riscv: introduce atomic.h
From: Oleksii <oleksii.kurochko@gmail.com>
To: Jan Beulich <jbeulich@suse.com>
Cc: Bobby Eshleman <bobbyeshleman@gmail.com>, Alistair Francis
 <alistair.francis@wdc.com>, Connor Davis <connojdavis@gmail.com>, Andrew
 Cooper <andrew.cooper3@citrix.com>, George Dunlap
 <george.dunlap@citrix.com>,  Julien Grall <julien@xen.org>, Stefano
 Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>, 
 xen-devel@lists.xenproject.org
Date: Wed, 24 Jan 2024 16:56:39 +0200
In-Reply-To: <e15ab025-d677-429b-abc4-9de23546b32c@suse.com>
References: <cover.1703255175.git.oleksii.kurochko@gmail.com>
	 <54f5f13a4ee3de3c3cf4ba2b4d0347bb77bb7d08.1703255175.git.oleksii.kurochko@gmail.com>
	 <2429395f-3ce8-4f17-aabe-78af2446ff6d@suse.com>
	 <92d7caf20a37b68dce7676812c2780bc2fbc00cf.camel@gmail.com>
	 <6aa39fac-fef6-47ce-8c27-4941d83c138a@suse.com>
	 <d7f89e6f4aae5c8cfa5215bd893b62a3d542ce4c.camel@gmail.com>
	 <d33fe182-8283-4552-bc0e-3eac90f20d31@suse.com>
	 <b0c23db4b8162e5859347a582b43050c1601c10b.camel@gmail.com>
	 <e15ab025-d677-429b-abc4-9de23546b32c@suse.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
User-Agent: Evolution 3.50.2 (3.50.2-1.fc39) 
MIME-Version: 1.0

On Wed, 2024-01-24 at 12:19 +0100, Jan Beulich wrote:
> On 24.01.2024 10:23, Oleksii wrote:
> > On Tue, 2024-01-23 at 14:30 +0100, Jan Beulich wrote:
> > > On 23.01.2024 13:24, Oleksii wrote:
> > > > On Tue, 2024-01-23 at 11:30 +0100, Jan Beulich wrote:
> > > > > On 23.01.2024 11:21, Oleksii wrote:
> > > > > > On Mon, 2024-01-22 at 17:56 +0100, Jan Beulich wrote:
> > > > > > > On 22.12.2023 16:12, Oleksii Kurochko wrote:
> > > > > > > > --- /dev/null
> > > > > > > > +++ b/xen/arch/riscv/include/asm/fence.h
> > > > > > > > @@ -0,0 +1,13 @@
> > > > > > > > +/* SPDX-License-Identifier: GPL-2.0-or-later */
> > > > > > > > +#ifndef _ASM_RISCV_FENCE_H
> > > > > > > > +#define _ASM_RISCV_FENCE_H
> > > > > > > > +
> > > > > > > > +#ifdef CONFIG_SMP
> > > > > > > > +#define RISCV_ACQUIRE_BARRIER		"\tfence r ,
> > > > > > > > rw\n"
> > > > > > > > +#define RISCV_RELEASE_BARRIER		"\tfence rw,=C2=A0
> > > > > > > > w\n"
> > > > > > > > +#else
> > > > > > > > +#define RISCV_ACQUIRE_BARRIER
> > > > > > > > +#define RISCV_RELEASE_BARRIER
> > > > > > > > +#endif
> > > > > > >=20
> > > > > > > Do you really care about the !SMP case? On x86 at least
> > > > > > > we
> > > > > > > stopped
> > > > > > > special-
> > > > > > > casing that configuration many years ago (the few cases
> > > > > > > where
> > > > > > > for
> > > > > > > typically
> > > > > > > build reasons it matters, using CONFIG_NR_CPUS is
> > > > > > > sufficient). If
> > > > > > > you
> > > > > > > care
> > > > > > > about it, there needs to be somewhere you actually
> > > > > > > #define
> > > > > > > CONFIG_SMP.
> > > > > > Can't we use instead of CONFIG_SMP - CONFIG_NR_CPUS?
> > > > >=20
> > > > > You can. Question is whether there's a point in doing so. Do
> > > > > you
> > > > > expect people to actually want to run Xen on single-CPU
> > > > > systems?
> > > > > They're generally not overly well suited for virtualization
> > > > > ...
> > > > Just to clarify.
> > > >=20
> > > > Do you mean physically single based CPU?
> > > > Then I don't expect to run Xen on such systems and it is not
> > > > nesessary
> > > > to define *_BARRIER in this case. Should we have to add build
> > > > error
> > > > notification that we don't support single-CPU systems in this
> > > > header?
> > > >=20
> > > > If you are speaking about we have ,let it be, 4 CPUs and only 1
> > > > CPU
> > > > is
> > > > currently supported by Xen then it still makes sense.
> > >=20
> > > No, that's still not what I mean. The question is: Is it useful
> > > for
> > > you
> > > to _special case_ the NR_CPUS=3D1 case? Or is it instead simpler to
> > > handle
> > > NR_CPUS=3D1 the same as NR_CPUS>1 (accepting less than ideal
> > > performance,
> > > on the basis that in reality nobody's expected to use such in
> > > production
> > > anyway)?
> > NR_CPUS=3D1 sometimes is useful for debugging. At least, at the start
> > I
> > used that several times, but ITBO I don't remember when I used that
> > case after SMP support was added and context_switch() was fixed.
>=20
> And "sometimes is useful for debugging" warrants introducing special
> cases? I've not suggested disallowing that configuration. I'm merely
> asking whether it isn't easier to have the barriers there at all
> times. Just like on x86 we now leave the LOCK prefixes in place at
> all times.
I misunderstood your initial suggestion. In this case we can always
have the barriers. I'll drop then #ifdef CONFIG_SMP.

Thanks for clarification.

~ Oleksii
>=20
> > Probably, I misunderstand the real idea of NR_CPUS. Does NR_CPUS
> > represent a number of logical CPUs which can be different from
> > physical
> > amount of CPU?
>=20
> No.
>=20
> Jan



From xen-devel-bounces@lists.xenproject.org Wed Jan 24 15:04:59 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 24 Jan 2024 15:04:59 +0000
Received: from list by lists.xenproject.org with outflank-mailman.671079.1044209 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSeoA-0001ed-0I; Wed, 24 Jan 2024 15:04:54 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 671079.1044209; Wed, 24 Jan 2024 15:04:53 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSeo9-0001eW-SU; Wed, 24 Jan 2024 15:04:53 +0000
Received: by outflank-mailman (input) for mailman id 671079;
 Wed, 24 Jan 2024 15:04:53 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=k9jB=JC=gmail.com=oleksii.kurochko@srs-se1.protection.inumbo.net>)
 id 1rSeo9-0001eO-0B
 for xen-devel@lists.xenproject.org; Wed, 24 Jan 2024 15:04:53 +0000
Received: from mail-ej1-x636.google.com (mail-ej1-x636.google.com
 [2a00:1450:4864:20::636])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id ec0f8755-bac9-11ee-9b0f-b553b5be7939;
 Wed, 24 Jan 2024 16:04:50 +0100 (CET)
Received: by mail-ej1-x636.google.com with SMTP id
 a640c23a62f3a-a2f79e79f0cso557088766b.2
 for <xen-devel@lists.xenproject.org>; Wed, 24 Jan 2024 07:04:50 -0800 (PST)
Received: from [192.168.206.239] ([94.75.70.14])
 by smtp.gmail.com with ESMTPSA id
 vo14-20020a170907a80e00b00a31291a0d33sm604577ejc.26.2024.01.24.07.04.48
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 24 Jan 2024 07:04:49 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: ec0f8755-bac9-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1706108690; x=1706713490; darn=lists.xenproject.org;
        h=mime-version:user-agent:content-transfer-encoding:references
         :in-reply-to:date:cc:to:from:subject:message-id:from:to:cc:subject
         :date:message-id:reply-to;
        bh=iZL5eUJZwTTNXwvq5U2y+Yu5rih1nBLci8An8OONLNE=;
        b=hU/3IQzklBhWuTCIG0xba56V2arTlM6u3f/mbfQdvE2CLfHNmt34ZvLgQDvFUJvbki
         26DGJWXQ+rqIbJuDC/X5FwaPvuzsXbvl0tnssuVgF/mOOfWUsFP6DSh7G915MyP3UmiU
         SOs0xhwA110jep5054z4s6SWZBMBnt42f/EvpuKSyGwWq1C3Qifua4X860LV2tomY4Il
         lAt11YjLgLww643NaxsHHjgsNYpVgpYhhw6OQJTlbfNtEgVcfpFEunxzqC+CMR6llqlM
         zWX1ekL+Ef0NG5Pfn1Y25PbWjpwsfvXugQfh2ZoTjdjB7tMI7I2U/t0r2JgJEG1N+7Yj
         +Lug==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706108690; x=1706713490;
        h=mime-version:user-agent:content-transfer-encoding:references
         :in-reply-to:date:cc:to:from:subject:message-id:x-gm-message-state
         :from:to:cc:subject:date:message-id:reply-to;
        bh=iZL5eUJZwTTNXwvq5U2y+Yu5rih1nBLci8An8OONLNE=;
        b=UGEe29ZfLOpe0KJk5USCnEWOdzmWW9Pwq8ZmrY7btf9yf3PkTvcwsP4GrhUJv8CXT+
         kJnqNDcdIs87tZ8yruXevr6FXUIhtGsKQ/aevQnN8hNeURw2H5+G0WlA8sx5NcTnmfgQ
         TUEVq8GvxKmRdn8T1YQec//fXxUHclKZX5Qod2PbCtYVCScjS0LalYW7qTplXBHVn7W0
         NcmW4ltFqvi05gcYXm5eUxv5ezkMp5/mDAoT5wQEah8+1PJzyJzmjeA0LTod5sQ58ipi
         WWKAUGUh/saQe8NZ+UjTDftr6mFmJsOBcyanB7yLFrbXCgwcwNgyR7zihnCCZ4SYnSza
         SU9g==
X-Gm-Message-State: AOJu0YyFVzzMktg2vvB3WLGlT37MRCSdqckwLp/ycX4cJPDpnYIigH67
	4J3Pt/edMkPjOpu+GMdSROK1nosy3M1jcrkmQZjOA+YNNl8MLScq
X-Google-Smtp-Source: AGHT+IFLVWgiv5+BAyhY3aUqs7vSHoU0SIGXbdkhW1jO3Ej8kWFoBsEdmIXkEw5TAzButHEoG+X1xw==
X-Received: by 2002:a17:907:c787:b0:a31:12cc:1977 with SMTP id tz7-20020a170907c78700b00a3112cc1977mr821937ejc.126.1706108689974;
        Wed, 24 Jan 2024 07:04:49 -0800 (PST)
Message-ID: <d1f0a6d418b228860f2e84b89bcbd18b430e9305.camel@gmail.com>
Subject: Re: [PATCH v3 16/34] xen/lib: introduce generic find next bit
 operations
From: Oleksii <oleksii.kurochko@gmail.com>
To: Jan Beulich <jbeulich@suse.com>
Cc: Alistair Francis <alistair.francis@wdc.com>, Bob Eshleman
 <bobbyeshleman@gmail.com>, Connor Davis <connojdavis@gmail.com>, Andrew
 Cooper <andrew.cooper3@citrix.com>, George Dunlap
 <george.dunlap@citrix.com>,  Julien Grall <julien@xen.org>, Stefano
 Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>, 
 xen-devel@lists.xenproject.org
Date: Wed, 24 Jan 2024 17:04:48 +0200
In-Reply-To: <b7c58adb-f3e2-4089-bba4-3f7f0740f111@suse.com>
References: <cover.1703255175.git.oleksii.kurochko@gmail.com>
	 <bb47caf6c275d8aea307b96e79828831eab4a703.1703255175.git.oleksii.kurochko@gmail.com>
	 <81e5cac4-90f0-4fff-b891-53ca73c61832@suse.com>
	 <05d685b0b7ccd329454a336b20351979bdf91ea4.camel@gmail.com>
	 <8e60f998-aeb4-4648-a3e9-d083bb8eefde@suse.com>
	 <2974faee197b0a60d6e7ac54356639706c2ecb43.camel@gmail.com>
	 <b7c58adb-f3e2-4089-bba4-3f7f0740f111@suse.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
User-Agent: Evolution 3.50.2 (3.50.2-1.fc39) 
MIME-Version: 1.0

On Wed, 2024-01-24 at 12:24 +0100, Jan Beulich wrote:
> On 24.01.2024 10:34, Oleksii wrote:
> > On Tue, 2024-01-23 at 14:37 +0100, Jan Beulich wrote:
> > > On 23.01.2024 13:34, Oleksii wrote:
> > > > On Tue, 2024-01-23 at 12:14 +0100, Jan Beulich wrote:
> > > > > On 22.12.2023 16:13, Oleksii Kurochko wrote:
> > > > > > --- a/xen/common/Kconfig
> > > > > > +++ b/xen/common/Kconfig
> > > > > > @@ -47,6 +47,9 @@ config ARCH_MAP_DOMAIN_PAGE
> > > > > > =C2=A0config GENERIC_BUG_FRAME
> > > > > > =C2=A0	bool
> > > > > > =C2=A0
> > > > > > +config GENERIC_FIND_NEXT_BIT
> > > > > > +	bool
> > > > >=20
> > > > > There's no need for this, as ...
> > > > >=20
> > > > > > --- a/xen/lib/Makefile
> > > > > > +++ b/xen/lib/Makefile
> > > > > > @@ -3,6 +3,7 @@ obj-$(CONFIG_X86) +=3D x86/
> > > > > > =C2=A0lib-y +=3D bsearch.o
> > > > > > =C2=A0lib-y +=3D ctors.o
> > > > > > =C2=A0lib-y +=3D ctype.o
> > > > > > +lib-$(CONFIG_GENERIC_FIND_NEXT_BIT) +=3D find-next-bit.o
> > > > >=20
> > > > > ... you're moving this to lib/. Or have you encountered any
> > > > > issue
> > > > > with building this uniformly, and you forgot to mention this
> > > > > in
> > > > > the description?
> > > > I didn't check. My intention was to provide opportunity to
> > > > check if
> > > > an
> > > > architecture want to use generic version or not. Otherwise, I
> > > > expected
> > > > that we will have multiple definiotion of the funcion.
> > > >=20
> > > > But considering that they are all defined under #ifdef...#endif
> > > > we
> > > > can
> > > > remove the declaration of the config GENERIC_FIND_NEXT_BIT.
> > >=20
> > > What #ifdef / #endif would matter here? Whats in lib/ is intended
> > > to
> > > be
> > > generic anyway. And what is in the resulting lib.a won't be used
> > > by
> > > an
> > > arch if it has an arch-specific implementation.=C2=A0
> > If what is implemented in lib.a won't be used by an arch if it has
> > an
> > arch-specific implementation then, for sure, I have to drop
> > CONFIG_GENERIC_FIND_NEXT_BIT.
> > But I am not really understand if lib.a is linked with Xen, then it
> > should be an issue then if some arch implement find-next-bit
> > function
> > we will have to multiple definitions ( one in lib.a and one arch
> > specific ). Probably, I have to look at how it is done.
>=20
> You're aware how linking works? Objects are pulled out of archives
> only
> if there's no other definition for a to-be-resolved symbol provided
> by
> a particular object in the archive.
I wasn't aware about the case of the archive. Thanks for the
explanation.

>=20
> > > Problems could arise if
> > > an arch had an inline function colliding with the out-of-line
> > > one.
> > > But
> > > that's about the old case where I could see a need to make the
> > > building
> > > of one of the objects conditional. And you'll note that withing
> > > this
> > > Makefile there are pretty few conditionals.
> > Could you please clarify What does it mean "out-of-line" ?
>=20
> "not inline"
>=20
> > > > > > --- /dev/null
> > > > > > +++ b/xen/lib/find-next-bit.c
> > > > > > [...]
> > > > >=20
> > > > > I was going to ask that you convince git to actually present
> > > > > a
> > > > > proper
> > > > > diff, to make visible what changes. But other than the
> > > > > description
> > > > > says
> > > > > you don't really move the file, you copy it. Judging from
> > > > > further
> > > > > titles
> > > > > there's also nowhere you'd make Arm actually use this now
> > > > > generic
> > > > > code.
> > > > I wanted to do it separately, outside this patch series to
> > > > simplify
> > > > review and not have Arm specific changes in RISC-V patch
> > > > series.
> > >=20
> > > Then do it the other way around: Make a separate _prereq_ change
> > > truly
> > > moving the file.
> > So this one patch should be separated by 2? One which moves find-
> > next-
> > bit.c from Arm to xen/lib, and second where xen/lib/Makefile is
> > updated.
>=20
> No, that would break the Arm build. I suggested breaking out this
> patch from the series, and then doing what the description says:
> Actually move the file. I don't think I suggested splitting the
> patch. Even the breaking out of the series was only because you
> said "I wanted to do it separately, outside this patch series".
What I meant was that I would like to have a patch which introduces
generic version of find-next-bit in the current patch series and
provide a separate patch outside of the current patch series which
switches Arm to use generic version.

~ Oleksii


From xen-devel-bounces@lists.xenproject.org Wed Jan 24 15:21:21 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 24 Jan 2024 15:21:21 +0000
Received: from list by lists.xenproject.org with outflank-mailman.671085.1044219 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSf40-0005cN-Eh; Wed, 24 Jan 2024 15:21:16 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 671085.1044219; Wed, 24 Jan 2024 15:21:16 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSf40-0005cG-At; Wed, 24 Jan 2024 15:21:16 +0000
Received: by outflank-mailman (input) for mailman id 671085;
 Wed, 24 Jan 2024 15:21:14 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=Z0X+=JC=m5p.com=ehem@srs-se1.protection.inumbo.net>)
 id 1rSf3y-0005cA-9i
 for xen-devel@lists.xen.org; Wed, 24 Jan 2024 15:21:14 +0000
Received: from mailhost.m5p.com (mailhost.m5p.com [74.104.188.4])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 343f0909-bacc-11ee-98f5-6d05b1d4d9a1;
 Wed, 24 Jan 2024 16:21:12 +0100 (CET)
Received: from m5p.com (mailhost.m5p.com [IPv6:2001:470:1f07:15ff:0:0:0:f7])
 by mailhost.m5p.com (8.17.1/8.15.2) with ESMTPS id 40OFKuFs071729
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NO);
 Wed, 24 Jan 2024 10:21:02 -0500 (EST) (envelope-from ehem@m5p.com)
Received: (from ehem@localhost)
 by m5p.com (8.17.1/8.15.2/Submit) id 40OFKuS8071728;
 Wed, 24 Jan 2024 07:20:56 -0800 (PST) (envelope-from ehem)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 343f0909-bacc-11ee-98f5-6d05b1d4d9a1
Date: Wed, 24 Jan 2024 07:20:56 -0800
From: Elliott Mitchell <ehem+xen@m5p.com>
To: Jan Beulich <jbeulich@suse.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, xen-devel@lists.xen.org
Subject: Re: Thoughts on current Xen EDAC/MCE situation
Message-ID: <ZbEq2JLY25TyLltX@mattapan.m5p.com>
References: <Za7Vr+Rb25y/+MSy@mattapan.m5p.com>
 <111f5551-70fa-4ded-a62a-e0aa967b3c29@suse.com>
 <ZbBDJGKqTU9rdpgD@mattapan.m5p.com>
 <e7d67831-d7b9-48fd-9478-f89e85ce0422@suse.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <e7d67831-d7b9-48fd-9478-f89e85ce0422@suse.com>
X-Spam-Status: No, score=0.0 required=10.0 tests=KHOP_HELO_FCRDNS
	autolearn=unavailable autolearn_force=no version=4.0.0
X-Spam-Checker-Version: SpamAssassin 4.0.0 (2022-12-14) on mattapan.m5p.com

On Wed, Jan 24, 2024 at 08:23:15AM +0100, Jan Beulich wrote:
> On 23.01.2024 23:52, Elliott Mitchell wrote:
> > On Tue, Jan 23, 2024 at 11:44:03AM +0100, Jan Beulich wrote:
> >> On 22.01.2024 21:53, Elliott Mitchell wrote:
> >>
> >>> I find the present handling of MCE in Xen an odd choice.  Having Xen do
> >>> most of the handling of MCE events is a behavior matching a traditional
> >>> stand-alone hypervisor.  Yet Xen was originally pushing any task not
> >>> requiring hypervisor action onto Domain 0.
> >>
> >> Not exactly. Xen in particular deals with all of CPU and all of memory.
> >> Dom0 may be unaware of the full amount of CPUs in the system, nor the
> >> full memory map (without resorting to interfaces specifically making
> >> that information available, but not to be used for Dom0 kernel's own
> >> acting as a kernel).
> > 
> > Why would this be an issue?
> 
> Well, counter question: For all of ...
> 
> > I would expect the handling to be roughly:  NMI -> Xen; Xen schedules a
> > Dom0 vCPU which is eligible to run on the pCPU onto the pCPU; Dom0
> > examines registers/MSRs, Dom0 then issues a hypercall to Xen telling
> > Xen how to resolve the issue (no action, fix memory contents, kill page).
> > 
> > Ideally there would be an idle Dom0 vCPU, but interrupting a busy vCPU
> > would be viable.  It would even be reasonable to ignore affinity and
> > grab any Dom0 vCPU.
> > 
> > Dom0 has 2 purposes for the address.  First, to pass it back to Xen.
> > Second, to report it to a system administrator so they could restart the
> > system with that address marked as bad.  Dom0 wouldn't care whether the
> > address was directly accessible to it or not.
> > 
> > The proposed hypercall should report back what was effected by a UE
> > event.  A given site might have a policy that if $some_domain is hit by a
> > UE, everything is restarted.  Meanwhile Dom0 or Xen being the winner
> > could deserve urgent action.
> 
> ... this, did you first look at code and figure how what you suggest
> could be seamlessly integrated? Part of your suggestion (if I got it
> right) is, after all, to make maintenance on the Dom0 kernel side easy.
> I expect such adjustments being not overly intrusive would also be an
> acceptance criteria by the maintainers.

Maintenance on the Dom0 kernel isn't the issue.

One issue is for reporting of MCEs when running on Xen to be consistent
with MCE when not running on Xen.  Notably similar level of information
and ideally tools which assist with analyzing failures working when
running on Xen.

Another issue is to do a better job of keeping Xen up to date with MCE
handling as new hardware with new MCE implementations show up.

> Second - since you specifically talk about UE: The more code is involved
> in handling, the higher the chance of the #MC ending up fatal to the
> system.

Indeed.  Yet right now I'm more concerned over whether MCEs reporting is
happening at all.  There aren't very many messages at all.

> Third, as to Dom0's purposes of having the address: If all it is to use
> it for is to pass it back to Xen, paths in the respective drivers will
> necessarily be entirely different for the Xen vs the native cases.

I'm less than certain of the best place for Xen to intercept MCE events.
For UE memory events, the simplest approach on Linux might be to wrap the
memory_failure() function.  Yet for Linux/x86,
mce_register_decode_chain() also looks like a very good candidate.


-- 
(\___(\___(\______          --=> 8-) EHM <=--          ______/)___/)___/)
 \BS (    |         ehem+sigmsg@m5p.com  PGP 87145445         |    )   /
  \_CS\   |  _____  -O #include <stddisclaimer.h> O-   _____  |   /  _/
8A19\___\_|_/58D2 7E3D DDF4 7BA6 <-PGP-> 41D1 B375 37D0 8714\_|_/___/5445




From xen-devel-bounces@lists.xenproject.org Wed Jan 24 15:21:31 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 24 Jan 2024 15:21:31 +0000
Received: from list by lists.xenproject.org with outflank-mailman.671086.1044229 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSf4F-00060N-Lo; Wed, 24 Jan 2024 15:21:31 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 671086.1044229; Wed, 24 Jan 2024 15:21:31 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSf4F-00060G-J4; Wed, 24 Jan 2024 15:21:31 +0000
Received: by outflank-mailman (input) for mailman id 671086;
 Wed, 24 Jan 2024 15:21:30 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=bgOV=JC=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rSf4E-0005y3-R1
 for xen-devel@lists.xenproject.org; Wed, 24 Jan 2024 15:21:30 +0000
Received: from mail-ej1-x630.google.com (mail-ej1-x630.google.com
 [2a00:1450:4864:20::630])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 3eb6add8-bacc-11ee-9b0f-b553b5be7939;
 Wed, 24 Jan 2024 16:21:28 +0100 (CET)
Received: by mail-ej1-x630.google.com with SMTP id
 a640c23a62f3a-a2e0be86878so1248754366b.1
 for <xen-devel@lists.xenproject.org>; Wed, 24 Jan 2024 07:21:28 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 g14-20020a056638060e00b0046e80c50d73sm4012598jar.22.2024.01.24.07.21.26
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 24 Jan 2024 07:21:27 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 3eb6add8-bacc-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1706109688; x=1706714488; darn=lists.xenproject.org;
        h=content-transfer-encoding:autocrypt:subject:from:cc:to
         :content-language:user-agent:mime-version:date:message-id:from:to:cc
         :subject:date:message-id:reply-to;
        bh=NHbry3mGxalDD+ohiGv55543evF0oBb72dJrX/9cbxU=;
        b=g0eQMNi3nwJak5DAYfp3KYdYGMj/TDMcShmuUo6tVFcp5+x+6flM41sYK6QX1Zr0V1
         vszjOQXt7YxOHh6uD7TKZ2LGeIJZRzx8hdzslB+NQ8TyXO1fcIQfjtaaxxaGbmYN3wOW
         mmHEiqOJNvWVBMHU4/nmjrc/bO/Px99Je8wugYyRgV6NhNQbVI/xKeX7ZNoL8d7sOwOx
         /S5Wnl+BS0is995wZ9TNv2S90K0cCl1D2NyGJa773SJM82vwjnKeYxL5j7PLhQZvM4Yw
         2G07mZhFEvUzPJ0ns0GV/PI6QivjLaxrm4zf77zsCtKTcWcQUVFJrQJpxiJYDAeI/xnH
         laSw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706109688; x=1706714488;
        h=content-transfer-encoding:autocrypt:subject:from:cc:to
         :content-language:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=NHbry3mGxalDD+ohiGv55543evF0oBb72dJrX/9cbxU=;
        b=RCfAECMgoyYD5XhH/1sdNA28oO9uvfGtdmmLEm3bOzUct1RfZFW6NgjjDjPEkxxzIu
         kKMM7mybEzDP4gWJqewW4k+sv13aws7kxqTIWANe2WJoV4efq7VYrJ/2cBqoSRvHeY2n
         qWpQVeIz9WdG5XgCdnKnXGkBqPrNwswoF7uK/3GYF8oix/c0/ahYNTz2jLAkP3O3gnmq
         gg5oYhgLmoWzRknqbBM0peWkKIGh88m0hTpbT8xBR+eCUfHaNaffGAdJn1nSb931ktIU
         2KYhxDQUykB3bZe9dBJgiXNH6PP0ZptnlzCpKiavTAJykZ0b6YKLSdvglgTaSX04QWww
         PhOg==
X-Gm-Message-State: AOJu0YzMRd47w9sAjgzrUQEJXvhLXWjnnDrbl63e46xBT7LDgXdWS59z
	kumecMocX/6e1IwZdmrlx0K+F4mE3zdJ9tnw5BY3OFMzk4A+xaRcUOU5dvrKxxh2fyAOirIvN6o
	=
X-Google-Smtp-Source: AGHT+IGFAWesxPFXDEhnQFwicGj5Lqr8yL+IrGWtPHfdfw/eLrxDtZeWMLnBeixehsMhO4ra2PppNA==
X-Received: by 2002:a17:906:51a:b0:a26:f7ea:7cb6 with SMTP id j26-20020a170906051a00b00a26f7ea7cb6mr1539539eja.16.1706109687954;
        Wed, 24 Jan 2024 07:21:27 -0800 (PST)
Message-ID: <87108f1d-4b13-4c1e-9432-4f14d4f5c12d@suse.com>
Date: Wed, 24 Jan 2024 16:21:24 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Content-Language: en-US
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, Wei Liu <wl@xen.org>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
From: Jan Beulich <jbeulich@suse.com>
Subject: [PATCH] x86/NMI: refine "watchdog stuck" log message
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

Observing

"Testing NMI watchdog on all CPUs: 0 stuck"

it felt like it's not quite right, but I still read it as "no CPU stuck;
all good", when really the system suffered from what 6bdb965178bb
("x86/intel: ensure Global Performance Counter Control is setup
correctly") works around. Convert this to

"Testing NMI watchdog on all CPUs: {0} stuck"

or, with multiple CPUs having an issue, e.g.

"Testing NMI watchdog on all CPUs: {0,40} stuck"

to make more obvious that a lone number is not a count of CPUs.

Signed-off-by: Jan Beulich <jbeulich@suse.com>
---
In principle "sep" could also fulfill the job of "ok"; it felt to me as
if this may not be liked very much, though.

--- a/xen/arch/x86/nmi.c
+++ b/xen/arch/x86/nmi.c
@@ -167,13 +167,14 @@ static void __init cf_check wait_for_nmi
 void __init check_nmi_watchdog(void)
 {
     static unsigned int __initdata prev_nmi_count[NR_CPUS];
-    int cpu;
+    unsigned int cpu;
+    char sep = '{';
     bool ok = true;
 
     if ( nmi_watchdog == NMI_NONE )
         return;
 
-    printk("Testing NMI watchdog on all CPUs:");
+    printk("Testing NMI watchdog on all CPUs: ");
 
     for_each_online_cpu ( cpu )
         prev_nmi_count[cpu] = per_cpu(nmi_count, cpu);
@@ -189,12 +190,13 @@ void __init check_nmi_watchdog(void)
     {
         if ( per_cpu(nmi_count, cpu) - prev_nmi_count[cpu] < 2 )
         {
-            printk(" %d", cpu);
+            printk("%c%u", sep, cpu);
+            sep = ',';
             ok = false;
         }
     }
 
-    printk(" %s\n", ok ? "ok" : "stuck");
+    printk("%s\n", ok ? "ok" : "} stuck");
 
     /*
      * Now that we know it works we can reduce NMI frequency to


From xen-devel-bounces@lists.xenproject.org Wed Jan 24 15:24:01 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 24 Jan 2024 15:24:01 +0000
Received: from list by lists.xenproject.org with outflank-mailman.671093.1044239 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSf6e-0006tS-3d; Wed, 24 Jan 2024 15:24:00 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 671093.1044239; Wed, 24 Jan 2024 15:24:00 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSf6e-0006tL-0V; Wed, 24 Jan 2024 15:24:00 +0000
Received: by outflank-mailman (input) for mailman id 671093;
 Wed, 24 Jan 2024 15:23:58 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=bgOV=JC=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rSf6c-0006tB-Fo
 for xen-devel@lists.xenproject.org; Wed, 24 Jan 2024 15:23:58 +0000
Received: from mail-lj1-x22a.google.com (mail-lj1-x22a.google.com
 [2a00:1450:4864:20::22a])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 978b6f0e-bacc-11ee-98f5-6d05b1d4d9a1;
 Wed, 24 Jan 2024 16:23:57 +0100 (CET)
Received: by mail-lj1-x22a.google.com with SMTP id
 38308e7fff4ca-2cdeb954640so67458931fa.3
 for <xen-devel@lists.xenproject.org>; Wed, 24 Jan 2024 07:23:57 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 h3-20020a05660224c300b007ba7365ef13sm7073466ioe.51.2024.01.24.07.23.55
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 24 Jan 2024 07:23:56 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 978b6f0e-bacc-11ee-98f5-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1706109837; x=1706714637; darn=lists.xenproject.org;
        h=content-transfer-encoding:autocrypt:subject:from:cc:to
         :content-language:user-agent:mime-version:date:message-id:from:to:cc
         :subject:date:message-id:reply-to;
        bh=HiFe89OlB0ztEDTTtlTEcBTLBXtT94hlr0TSVcs2b+E=;
        b=Lfww/1dBJdRPTxMjVxJGyhI8jWzmlbnt5r4814+o32lEUiYXvY977f3robu2KLa3pq
         H0iNS7YPdwpPkkriDHRfr/ivk53CFuLXaMuCZHa/k3A/h25v8pDCRtTxPIL9KjsRDFTe
         4LlVEXm5T+oeBS/0GqseYpeFk7rcXh3FH4WFgWRIdgbg/Xlq9kvrRRJyy2+vJ86Z+L4f
         c43cmxiZz3IBqvS+hyYOu1vilvXPsRdr6C7yGr5jHNLzP2m2N+PCp/k4Ean3UAYt5vnu
         5pUFD3IehfHcW0nJ7WjFaW64nVTcxY62NwdkAcU/wZs5sMnHhvz+WeH6pZOZpGaTRx4E
         3hJw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706109837; x=1706714637;
        h=content-transfer-encoding:autocrypt:subject:from:cc:to
         :content-language:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=HiFe89OlB0ztEDTTtlTEcBTLBXtT94hlr0TSVcs2b+E=;
        b=aRkw42QDFjgMneVzzdiMIOzMykWTf2+rn4MELR/rlbfgd0MxdvOt8oE93JY3/Avlca
         Yc8YwMOI5vgdBJrlt4+mdAyY5nvEGNO2zfnRyOC0vHqb4J13YYiTaFaLabMIJBSl+zXt
         f9ZmEHf0ac4TN1Y7hgwfrQI6R0Kc1rRi38OeER5FHQnaXIY5R9gY6nMGL88BQzWuNjRZ
         CjHzLxZFayFNs03St+81nlwNWGt3bfMGSu5l1CQghtvn6yA1vy5sUs6aLzJa/CsxPSwy
         UYy4fil4Ge/6WzUByksGFfYmUrVJAsT9HOAvwcKEe9v0NFTvjbdtU1LJJPFFFeaJbgD/
         0IOQ==
X-Gm-Message-State: AOJu0YwJ+a4iadt8Qx1mC+/IHd3RsFk3FAJPG1AEm2hEYvXnOS7BHN4H
	kyTXMdLHJEKHdva/pvU+8hNHhfqZLukL0XpVfjYbJaDUnSUPZYNllo1uze9QCgO3KBVhaUWZWAo
	=
X-Google-Smtp-Source: AGHT+IGV+ClFAcCU/Sm/fLZ72mgavjoi7hja4VvglCxK6aPfBpO4QKyje84qoTmeX8vOOxmYbq3BSQ==
X-Received: by 2002:a2e:80d9:0:b0:2cd:3487:9a05 with SMTP id r25-20020a2e80d9000000b002cd34879a05mr824693ljg.88.1706109836883;
        Wed, 24 Jan 2024 07:23:56 -0800 (PST)
Message-ID: <3a2345f2-c4a5-4265-b96f-8eed0f193706@suse.com>
Date: Wed, 24 Jan 2024 16:23:53 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Content-Language: en-US
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, Wei Liu <wl@xen.org>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
From: Jan Beulich <jbeulich@suse.com>
Subject: [PATCH] x86/entry: replace two GET_CURRENT() uses
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

Now that we have %r14 set up using GET_STACK_END() in a number of
places, in two places we can eliminate the redundancy of GET_CURRENT()
also invoking that macro. In handle_ist_exception() actually go a step
farther and avoid using %rbx altogether when retrieving the processor
ID: Obtain the current vCPU pointer only in the PV32-specific code
actually needing it.

Signed-off-by: Jan Beulich <jbeulich@suse.com>

--- a/xen/arch/x86/x86_64/asm-offsets.c
+++ b/xen/arch/x86/x86_64/asm-offsets.c
@@ -118,6 +118,7 @@ void __dummy__(void)
 #endif
 
     OFFSET(CPUINFO_guest_cpu_user_regs, struct cpu_info, guest_cpu_user_regs);
+    OFFSET(CPUINFO_processor_id, struct cpu_info, processor_id);
     OFFSET(CPUINFO_verw_sel, struct cpu_info, verw_sel);
     OFFSET(CPUINFO_current_vcpu, struct cpu_info, current_vcpu);
     OFFSET(CPUINFO_per_cpu_offset, struct cpu_info, per_cpu_offset);
--- a/xen/arch/x86/x86_64/entry.S
+++ b/xen/arch/x86/x86_64/entry.S
@@ -749,7 +749,7 @@ FUNC(handle_exception, 0)
 .Lxcpt_cr3_okay:
 
 handle_exception_saved:
-        GET_CURRENT(bx)
+        mov   STACK_CPUINFO_FIELD(current_vcpu)(%r14), %rbx
         testb $X86_EFLAGS_IF>>8,UREGS_eflags+1(%rsp)
         jz    exception_with_ints_disabled
 
@@ -1128,9 +1128,8 @@ handle_ist_exception:
 #ifdef CONFIG_PV
         testb $3,UREGS_cs(%rsp)
         jz    restore_all_xen
-        GET_CURRENT(bx)
         /* Send an IPI to ourselves to cover for the lack of event checking. */
-        movl  VCPU_processor(%rbx),%eax
+        mov   STACK_CPUINFO_FIELD(processor_id)(%r14), %eax
         shll  $IRQSTAT_shift,%eax
         leaq  irq_stat+IRQSTAT_softirq_pending(%rip),%rcx
         cmpl  $0,(%rcx,%rax,1)
@@ -1139,6 +1138,7 @@ handle_ist_exception:
         call  send_IPI_self
 1:
 #ifdef CONFIG_PV32
+        mov   STACK_CPUINFO_FIELD(current_vcpu)(%r14), %rbx
         movq  VCPU_domain(%rbx),%rax
         cmpb  $0,DOMAIN_is_32bit_pv(%rax)
         je    restore_all_guest


From xen-devel-bounces@lists.xenproject.org Wed Jan 24 15:27:23 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 24 Jan 2024 15:27:23 +0000
Received: from list by lists.xenproject.org with outflank-mailman.671099.1044249 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSf9r-0007Rm-Go; Wed, 24 Jan 2024 15:27:19 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 671099.1044249; Wed, 24 Jan 2024 15:27:19 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSf9r-0007Ra-EB; Wed, 24 Jan 2024 15:27:19 +0000
Received: by outflank-mailman (input) for mailman id 671099;
 Wed, 24 Jan 2024 15:27:18 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=bgOV=JC=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rSf9q-0007RT-JN
 for xen-devel@lists.xenproject.org; Wed, 24 Jan 2024 15:27:18 +0000
Received: from mail-lj1-x22f.google.com (mail-lj1-x22f.google.com
 [2a00:1450:4864:20::22f])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 0e2c3da8-bacd-11ee-9b0f-b553b5be7939;
 Wed, 24 Jan 2024 16:27:16 +0100 (CET)
Received: by mail-lj1-x22f.google.com with SMTP id
 38308e7fff4ca-2cf1fd1cc5bso9360421fa.3
 for <xen-devel@lists.xenproject.org>; Wed, 24 Jan 2024 07:27:16 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 bz6-20020a056e02268600b003619a43268asm2288009ilb.34.2024.01.24.07.27.13
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 24 Jan 2024 07:27:14 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 0e2c3da8-bacd-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1706110036; x=1706714836; darn=lists.xenproject.org;
        h=content-transfer-encoding:autocrypt:subject:from:cc:to
         :content-language:user-agent:mime-version:date:message-id:from:to:cc
         :subject:date:message-id:reply-to;
        bh=zzXHmr1qvA0UdSLvnaXumfuQjNmGkhE1FDpYmZ+o+Cg=;
        b=E3OnNoDM5WYad4xohgd/jQ7A/tp+T01Qd7EgTOO7/y6c4zgsl6JqVO6gBe5Iy65vnA
         +fynKVGszp0/9Gb2HBl/BKidaPXepnCczY0cVCMCAPfeZZdH54qhiENh+vXYIFrLT+Iw
         8lhDO0GlNg5b5EAgu6P38fECXauNw3glzuZWy3yIUPuNnVSlaEBp9LucHRFxPBUPh0dD
         vHskjmu/0ozrLQIzD+tf0gxIzUih+Eu5BqPDBhHer6jkEWgcVoTpueFbNRdvETCCsnCu
         SkTw2TnHX5a3DZgO7jrUM8fLbHPiVKwbbWEyL4Jymd4qP9sUWzhFAT231yVprQb3SxKx
         BcQg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706110036; x=1706714836;
        h=content-transfer-encoding:autocrypt:subject:from:cc:to
         :content-language:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=zzXHmr1qvA0UdSLvnaXumfuQjNmGkhE1FDpYmZ+o+Cg=;
        b=IeS1kBoYouYLam8QuNAbOJ5Rrt8ZnDussGFhNNPIGcaAcHgWyXpccYBbmbNWejmvtE
         tgBZWJh4E4L4FD5s63xdMSFhlyRsg5MI/CDmzGiB2uMERdwaJ0ojI4gZjfn7xgUkFT1K
         yBFU46K2SLS4upc0Ew6jRq/pOic8+ycC8PqCXIMuTMnjnlCN02uDRPkba8i6fZVs2dQe
         5Xu39Fnxnhgyg5JBq/m3olyn8WPmuKLlfvB8jpXlLVihHb6d3xCnQ35yhpYfcD+eLILk
         y9JqGdBAA3UtYT8zsB8bKSnity/f7FkH5ldcanfMyW9tzHoPpXMGKmGF/gth+RXaA7Fq
         a1hw==
X-Gm-Message-State: AOJu0YzLH9iHuaDhB2h/bIfK/BdO1iHkTwMw2viNgGnRm2zByt+jRaOZ
	1Wrtb0Dpj/+m1VmGScmD4/nHyR2jjJaXAmpfc9y5r0UOLeNSVYQVoJ8RDCRB+b+tU93gDE8nx+g
	=
X-Google-Smtp-Source: AGHT+IER3uXpZGaS8FSK8Bp7CJgbAR7fB3/HfCvQH3Miq8/g98au1H0X0DSyL3JiNT2HnQ+NquKcVw==
X-Received: by 2002:a2e:8199:0:b0:2cd:d7eb:4fce with SMTP id e25-20020a2e8199000000b002cdd7eb4fcemr1060786ljg.80.1706110036039;
        Wed, 24 Jan 2024 07:27:16 -0800 (PST)
Message-ID: <50978ef4-9f11-4c70-952b-94107616f265@suse.com>
Date: Wed, 24 Jan 2024 16:27:11 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Content-Language: en-US
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, Wei Liu <wl@xen.org>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
From: Jan Beulich <jbeulich@suse.com>
Subject: [PATCH] x86: amend 'n' debug-key output with SMI count
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

... if available only, of course.

Signed-off-by: Jan Beulich <jbeulich@suse.com>

--- a/xen/arch/x86/cpu/common.c
+++ b/xen/arch/x86/cpu/common.c
@@ -406,9 +406,15 @@ void __init early_cpu_init(bool verbose)
 		paddr_bits -= (ebx >> 6) & 0x3f;
 	}
 
-	if (!(c->x86_vendor & (X86_VENDOR_AMD | X86_VENDOR_HYGON)))
+	if (!(c->x86_vendor & (X86_VENDOR_AMD | X86_VENDOR_HYGON))) {
+		uint64_t smi_count;
+
 		park_offline_cpus = opt_mce;
 
+		if (!verbose && !rdmsr_safe(MSR_SMI_COUNT, smi_count))
+			setup_force_cpu_cap(X86_FEATURE_SMI_COUNT);
+	}
+
 	initialize_cpu_data(0);
 }
 
--- a/xen/arch/x86/include/asm/cpufeatures.h
+++ b/xen/arch/x86/include/asm/cpufeatures.h
@@ -24,7 +24,7 @@ XEN_CPUFEATURE(APERFMPERF,        X86_SY
 XEN_CPUFEATURE(MFENCE_RDTSC,      X86_SYNTH( 9)) /* MFENCE synchronizes RDTSC */
 XEN_CPUFEATURE(XEN_SMEP,          X86_SYNTH(10)) /* SMEP gets used by Xen itself */
 XEN_CPUFEATURE(XEN_SMAP,          X86_SYNTH(11)) /* SMAP gets used by Xen itself */
-/* Bit 12 unused. */
+XEN_CPUFEATURE(SMI_COUNT,         X86_SYNTH(12)) /* MSR_SMI_COUNT exists */
 XEN_CPUFEATURE(IND_THUNK_LFENCE,  X86_SYNTH(13)) /* Use IND_THUNK_LFENCE */
 XEN_CPUFEATURE(IND_THUNK_JMP,     X86_SYNTH(14)) /* Use IND_THUNK_JMP */
 XEN_CPUFEATURE(SC_NO_BRANCH_HARDEN, X86_SYNTH(15)) /* (Disable) Conditional branch hardening */
--- a/xen/arch/x86/include/asm/msr-index.h
+++ b/xen/arch/x86/include/asm/msr-index.h
@@ -28,6 +28,8 @@
 #define  TEST_CTRL_SPLITLOCK_DETECT         (_AC(1, ULL) << 29)
 #define  TEST_CTRL_SPLITLOCK_DISABLE        (_AC(1, ULL) << 31)
 
+#define MSR_SMI_COUNT                       0x00000034
+
 #define MSR_INTEL_CORE_THREAD_COUNT         0x00000035
 #define  MSR_CTC_THREAD_MASK                0x0000ffff
 #define  MSR_CTC_CORE_MASK                  _AC(0xffff0000, U)
--- a/xen/arch/x86/nmi.c
+++ b/xen/arch/x86/nmi.c
@@ -589,9 +589,20 @@ static void cf_check do_nmi_stats(unsign
     unsigned int cpu;
     bool pend, mask;
 
-    printk("CPU\tNMI\n");
+    printk("CPU\tNMI%s\n", boot_cpu_has(X86_FEATURE_SMI_COUNT) ? "\tSMI" : "");
     for_each_online_cpu ( cpu )
-        printk("%3u\t%3u\n", cpu, per_cpu(nmi_count, cpu));
+    {
+        printk("%3u\t%3u", cpu, per_cpu(nmi_count, cpu));
+        if ( boot_cpu_has(X86_FEATURE_SMI_COUNT) )
+        {
+            unsigned int smi_count, dummy;
+
+            rdmsr(MSR_SMI_COUNT, smi_count, dummy);
+            printk("\t%3u\n", smi_count);
+        }
+        else
+            printk("\n");
+    }
 
     if ( !hardware_domain || !(v = domain_vcpu(hardware_domain, 0)) )
         return;


From xen-devel-bounces@lists.xenproject.org Wed Jan 24 15:33:16 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 24 Jan 2024 15:33:16 +0000
Received: from list by lists.xenproject.org with outflank-mailman.671104.1044260 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSfFQ-0001OC-6B; Wed, 24 Jan 2024 15:33:04 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 671104.1044260; Wed, 24 Jan 2024 15:33:04 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSfFQ-0001O5-1P; Wed, 24 Jan 2024 15:33:04 +0000
Received: by outflank-mailman (input) for mailman id 671104;
 Wed, 24 Jan 2024 15:33:02 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=bgOV=JC=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rSfFO-0001Nz-I7
 for xen-devel@lists.xenproject.org; Wed, 24 Jan 2024 15:33:02 +0000
Received: from mail-lj1-x234.google.com (mail-lj1-x234.google.com
 [2a00:1450:4864:20::234])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id db1983b9-bacd-11ee-9b0f-b553b5be7939;
 Wed, 24 Jan 2024 16:33:00 +0100 (CET)
Received: by mail-lj1-x234.google.com with SMTP id
 38308e7fff4ca-2cd2f472665so58613651fa.2
 for <xen-devel@lists.xenproject.org>; Wed, 24 Jan 2024 07:33:00 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 m3-20020a056602018300b007bee55fd6e5sm6903572ioo.43.2024.01.24.07.32.57
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 24 Jan 2024 07:32:59 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: db1983b9-bacd-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1706110380; x=1706715180; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:from:to:cc:subject:date:message-id:reply-to;
        bh=i1hmwnHTXz6m2lr90jo4Z3WUtCGsoyqYBpj9xkitF68=;
        b=abS2Nsvp39aJA6lV9ErjMoMNRtaFjqGzMrqSbcnKF5wvs2N7bVmowqwR6GnL2YxvaB
         Yls+gG07uKjor3oimFt+2oHPVtira0LIDW8CiPBrx5foTdkiV3HppEyRN1QuQLBReaLe
         IlGU3hJLN1/NjIPynkI0r0YpImQnZgofx0/InGUA5nmbTjV2gatZEhPu43STIys6D2y6
         S6Ha2IrgOCBIAt0rzmgaS97VOFar6yiKdZ5xZkK2Sv3tX4jdvQ9bw31O06+E1VAKnm/1
         jhNIOqy311MpVZ2yyEuazgDlKCcoaf+v2HW8p2qmsOnbgLYmEeEPw1cwY50Q61YG+qb4
         7/YA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706110380; x=1706715180;
        h=content-transfer-encoding:in-reply-to:autocrypt:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to;
        bh=i1hmwnHTXz6m2lr90jo4Z3WUtCGsoyqYBpj9xkitF68=;
        b=wvwTHCtpgHducKEog1J3R+NYEPdbYrkUvn9paPdQqmEnudE/Jb/kuMhj2UuRyTvpq8
         wuthsigqubT7N9/S9SPm8JD9ktFVfjpPyARVei/9B0soN4G7ENxNUzRY1dEMmW6DO2sY
         lWkFRPUsLvyyglam9xR0Cn4ZWM5G8tAplO6V4gMRLbh1K5PtrPjrhJ3NbB99vQ+Xpfpc
         tUovQFd/K7z0zSe0NTcfwT+2tNKY3M3COL9+KFta/r3PjxSybRLki2m4DDGav2z4oh3M
         xAPt8aNunyUoAxlj3s9ltI5Q8zT0/x2idRsa1jJYZDuh5WpUZwAKHaZWCfEnwJnv+GGB
         I4Mg==
X-Gm-Message-State: AOJu0Yx8O+RQdOx7xUnW7GKKgpZ7UpBrcfLs6hZRk0YcC+TQ+8tqHz2p
	tngBfvh/YshlYgSVL3aPOFQgfT2xeKcQ/cg9iLdZKrZdMt0vH16DGnS9/uxggw==
X-Google-Smtp-Source: AGHT+IHm/eHDVBPZ7rHxAmGji/yEGS2AU2o5yw4RJY8uy9vbYZT9ClKH2CdzGND3Hcd6q7W8i9IYgA==
X-Received: by 2002:a05:651c:1ca:b0:2cf:30ee:6472 with SMTP id d10-20020a05651c01ca00b002cf30ee6472mr34019ljn.6.1706110379834;
        Wed, 24 Jan 2024 07:32:59 -0800 (PST)
Message-ID: <855376bd-3744-4663-8fce-264a87465a2c@suse.com>
Date: Wed, 24 Jan 2024 16:32:54 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 16/34] xen/lib: introduce generic find next bit
 operations
To: Oleksii <oleksii.kurochko@gmail.com>
Cc: Alistair Francis <alistair.francis@wdc.com>,
 Bob Eshleman <bobbyeshleman@gmail.com>, Connor Davis
 <connojdavis@gmail.com>, Andrew Cooper <andrew.cooper3@citrix.com>,
 George Dunlap <george.dunlap@citrix.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>,
 xen-devel@lists.xenproject.org
References: <cover.1703255175.git.oleksii.kurochko@gmail.com>
 <bb47caf6c275d8aea307b96e79828831eab4a703.1703255175.git.oleksii.kurochko@gmail.com>
 <81e5cac4-90f0-4fff-b891-53ca73c61832@suse.com>
 <05d685b0b7ccd329454a336b20351979bdf91ea4.camel@gmail.com>
 <8e60f998-aeb4-4648-a3e9-d083bb8eefde@suse.com>
 <2974faee197b0a60d6e7ac54356639706c2ecb43.camel@gmail.com>
 <b7c58adb-f3e2-4089-bba4-3f7f0740f111@suse.com>
 <d1f0a6d418b228860f2e84b89bcbd18b430e9305.camel@gmail.com>
Content-Language: en-US
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <d1f0a6d418b228860f2e84b89bcbd18b430e9305.camel@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 24.01.2024 16:04, Oleksii wrote:
> On Wed, 2024-01-24 at 12:24 +0100, Jan Beulich wrote:
>> On 24.01.2024 10:34, Oleksii wrote:
>>> On Tue, 2024-01-23 at 14:37 +0100, Jan Beulich wrote:
>>>> On 23.01.2024 13:34, Oleksii wrote:
>>>>> On Tue, 2024-01-23 at 12:14 +0100, Jan Beulich wrote:
>>>>>> On 22.12.2023 16:13, Oleksii Kurochko wrote:
>>>>>>> --- /dev/null
>>>>>>> +++ b/xen/lib/find-next-bit.c
>>>>>>> [...]
>>>>>>
>>>>>> I was going to ask that you convince git to actually present
>>>>>> a
>>>>>> proper
>>>>>> diff, to make visible what changes. But other than the
>>>>>> description
>>>>>> says
>>>>>> you don't really move the file, you copy it. Judging from
>>>>>> further
>>>>>> titles
>>>>>> there's also nowhere you'd make Arm actually use this now
>>>>>> generic
>>>>>> code.
>>>>> I wanted to do it separately, outside this patch series to
>>>>> simplify
>>>>> review and not have Arm specific changes in RISC-V patch
>>>>> series.
>>>>
>>>> Then do it the other way around: Make a separate _prereq_ change
>>>> truly
>>>> moving the file.
>>> So this one patch should be separated by 2? One which moves find-
>>> next-
>>> bit.c from Arm to xen/lib, and second where xen/lib/Makefile is
>>> updated.
>>
>> No, that would break the Arm build. I suggested breaking out this
>> patch from the series, and then doing what the description says:
>> Actually move the file. I don't think I suggested splitting the
>> patch. Even the breaking out of the series was only because you
>> said "I wanted to do it separately, outside this patch series".
> What I meant was that I would like to have a patch which introduces
> generic version of find-next-bit in the current patch series and
> provide a separate patch outside of the current patch series which
> switches Arm to use generic version.

I understand that this is what you meant. Yet I don't like the
duplication of code, even if it's only temporary. The more that iirc
git can show proper history for moved files, while there'll be a
disconnect when you first add a 2nd copy and later purge the original.
If you want this change separate from the series - fine. But then, as
said, please as a prereq patch.

Jan


From xen-devel-bounces@lists.xenproject.org Wed Jan 24 15:33:47 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 24 Jan 2024 15:33:47 +0000
Received: from list by lists.xenproject.org with outflank-mailman.671108.1044269 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSfG7-0001wu-Fh; Wed, 24 Jan 2024 15:33:47 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 671108.1044269; Wed, 24 Jan 2024 15:33:47 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSfG7-0001wn-Cv; Wed, 24 Jan 2024 15:33:47 +0000
Received: by outflank-mailman (input) for mailman id 671108;
 Wed, 24 Jan 2024 15:33:46 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=k9jB=JC=gmail.com=oleksii.kurochko@srs-se1.protection.inumbo.net>)
 id 1rSfG5-0001Nz-V8
 for xen-devel@lists.xenproject.org; Wed, 24 Jan 2024 15:33:45 +0000
Received: from mail-lf1-x12c.google.com (mail-lf1-x12c.google.com
 [2a00:1450:4864:20::12c])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id f54f8ada-bacd-11ee-9b0f-b553b5be7939;
 Wed, 24 Jan 2024 16:33:44 +0100 (CET)
Received: by mail-lf1-x12c.google.com with SMTP id
 2adb3069b0e04-51008c86ecbso2295584e87.2
 for <xen-devel@lists.xenproject.org>; Wed, 24 Jan 2024 07:33:44 -0800 (PST)
Received: from [192.168.206.239] ([94.75.70.14])
 by smtp.gmail.com with ESMTPSA id
 r1-20020a056402018100b00558e2a97fc2sm15001955edv.68.2024.01.24.07.33.42
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 24 Jan 2024 07:33:43 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: f54f8ada-bacd-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1706110424; x=1706715224; darn=lists.xenproject.org;
        h=mime-version:user-agent:content-transfer-encoding:references
         :in-reply-to:date:cc:to:from:subject:message-id:from:to:cc:subject
         :date:message-id:reply-to;
        bh=VBUuETU9MYsN9kSlu7mn5y8qBarO7BzcQEFpS3xXJ6o=;
        b=J54VmRbciBI5tTHCUsh2FO13SFQDdk5v9/IlG0Esy7OH8pGJOKI6NV2XgtbW71uh4l
         I/rD7ZCufm+pD5DcKxGL21R+AhO85SEXKZa0B3AmN44i0znCc+aq55O7gDnEiMKB6rwu
         yrPTNSPERR3glLLBJIP+SZETk/5xruLY20v7/BxxFgGTwi1vGTaeeFDwEKRl2QMAG+p5
         uy9aOjFYmG0SdIR42y4SXj/0oRiJ1MC/I0qBUAE4FkN9YwzFPonqRm21pkYknPaw9B7d
         XKGZpeQnmM47/SFzvbdbzDiA3js7GXHk0Cd9OPXqgx5I18MY+SENjEJqWJ2g1cV/C7n7
         NKLQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706110424; x=1706715224;
        h=mime-version:user-agent:content-transfer-encoding:references
         :in-reply-to:date:cc:to:from:subject:message-id:x-gm-message-state
         :from:to:cc:subject:date:message-id:reply-to;
        bh=VBUuETU9MYsN9kSlu7mn5y8qBarO7BzcQEFpS3xXJ6o=;
        b=atjpKZ4SAsqh040Qp6Ig9QmOgyyXXYSnQb5EVhBFvbaPYzyep4eV6spGnOXlQOOsJt
         3uo6MvnNBDeqVUHfnRtG5b5Y3cNkRrtSjc/yoI1nqKILYX/G97vYa+Ko26kVPLlICFN8
         PXbZDG707B6LpshCyid7ahpOm12FqFM9iKcDfuAQTi5pn4nHuq1Z6cQ2zGIZGO09Z5u/
         Q+k0AJ7NHDvXYaD9xYjXqz/GJyxtvyy+DJvgaJ1C0FoOMcSyejOMcnhPmY1efrO1l5Fk
         aAxIQ4vouTj/xCEZ7ICaDCatUNGEWEcePeRD4yKMxRTEU1mwk47UYPonkfrZmeUe56Eh
         QDuw==
X-Gm-Message-State: AOJu0Yx25ODOX770tMjRISPZIkC8zEG4tmqiclwX4DMa0RFoBeFUcN9I
	5L7nIhUaTq8moUh0S2e2uXsPVOy+V4UZR5ioKu7MUIKEe51k78J6
X-Google-Smtp-Source: AGHT+IHpVHMciTBxBZZkR6RuS0BRWTwDVud3E3zFzaK3ufaajg224uSGCV8FOVSivl3JBLih46plng==
X-Received: by 2002:a05:6512:3e01:b0:50e:ab9b:c32 with SMTP id i1-20020a0565123e0100b0050eab9b0c32mr4922936lfv.78.1706110423465;
        Wed, 24 Jan 2024 07:33:43 -0800 (PST)
Message-ID: <3ae77a2a9c37f0ea68ec7641f72f931ffc92f304.camel@gmail.com>
Subject: Re: [PATCH v3 30/34] xen/riscv: add minimal stuff to processor.h to
 build full Xen
From: Oleksii <oleksii.kurochko@gmail.com>
To: Jan Beulich <jbeulich@suse.com>
Cc: Alistair Francis <alistair.francis@wdc.com>, Bob Eshleman
 <bobbyeshleman@gmail.com>, Connor Davis <connojdavis@gmail.com>, Andrew
 Cooper <andrew.cooper3@citrix.com>, George Dunlap
 <george.dunlap@citrix.com>,  Julien Grall <julien@xen.org>, Stefano
 Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>, 
 xen-devel@lists.xenproject.org
Date: Wed, 24 Jan 2024 17:33:42 +0200
In-Reply-To: <5f6c35ed-de1f-4a47-897d-33ed979b28db@suse.com>
References: <cover.1703255175.git.oleksii.kurochko@gmail.com>
	 <5bd7c5db6638f09dabdc13a6e12f0b204eacb234.1703255175.git.oleksii.kurochko@gmail.com>
	 <aa4d18c5-a8e0-44a6-ae7e-16fd9cd029b4@suse.com>
	 <5f8291916b01a2b29a16bd1345fc20e3d4f29cab.camel@gmail.com>
	 <b8f47c93-43c4-4c61-a569-7d07e811c6ab@suse.com>
	 <22a0c2444201262202cd60d6d5a1cdff62c236bf.camel@gmail.com>
	 <5f6c35ed-de1f-4a47-897d-33ed979b28db@suse.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
User-Agent: Evolution 3.50.2 (3.50.2-1.fc39) 
MIME-Version: 1.0

On Wed, 2024-01-24 at 12:27 +0100, Jan Beulich wrote:
> On 24.01.2024 11:12, Oleksii wrote:
> > On Wed, 2024-01-24 at 09:19 +0100, Jan Beulich wrote:
> > > On 23.01.2024 18:08, Oleksii wrote:
> > > > On Tue, 2024-01-23 at 12:39 +0100, Jan Beulich wrote:
> > > > > On 22.12.2023 16:13, Oleksii Kurochko wrote:
> > > > > > @@ -53,6 +56,18 @@ struct cpu_user_regs
> > > > > > =C2=A0=C2=A0=C2=A0=C2=A0 unsigned long pregs;
> > > > > > =C2=A0};
> > > > > > =C2=A0
> > > > > > +/* TODO: need to implement */
> > > > > > +#define cpu_to_core(cpu)=C2=A0=C2=A0 (0)
> > > > > > +#define cpu_to_socket(cpu) (0)
> > > > > > +
> > > > > > +static inline void cpu_relax(void)
> > > > > > +{
> > > > > > +=C2=A0=C2=A0=C2=A0 /* Encoding of the pause instruction */
> > > > > > +=C2=A0=C2=A0=C2=A0 __asm__ __volatile__ ( ".insn 0x100000F" );
> > > > >=20
> > > > > binutils 2.40 knows "pause" - why use .insn then?
> > > > I thought that for this instruction it is needed to have
> > > > extension
> > > > ZIHINTPAUSE ( according to Linux Kernel source code [1] ) and
> > > > to
> > > > cover
> > > > older version.
> > >=20
> > > Well, of course you'll need to enable the extension then for gas.
> > > But
> > > as long as you use the insn unconditionally, that's all fine and
> > > natural. Another thing would be if you meant to also run on
> > > systems
> > > not supporting the extension: Then the above use of .insn would
> > > need
> > > to become conditional anyway.
> > Then it makes sense to use "pause".=C2=A0
> > Let's assume that for now we are running only on systems which
> > support
> > the extension until we won't face compilation issue for some
> > system.
>=20
> Gives me the impression that you still don't properly separate the
> two
> aspects: One is what systems Xen is to run on, and other is what's
> needed to make Xen build properly. The first needs documenting (and
> ideally at some point actually enforcing), while the latter may
> require
> e.g. compiler command line option adjustments.
I understand that it will be required update "-march=3D..._zihintpause"
and it should be a check that this extension is supported by a
toolchain.

But I am not sure that I know how can I enforce that a system should
have this extension, and considering Linux kernel implementation which
uses always pause instruction, it looks like all available systems
support this extension.

But I agree what I wrote above isn't fully correct.

~ Oleksii


From xen-devel-bounces@lists.xenproject.org Wed Jan 24 15:37:27 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 24 Jan 2024 15:37:27 +0000
Received: from list by lists.xenproject.org with outflank-mailman.671114.1044279 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSfJd-0002bT-0k; Wed, 24 Jan 2024 15:37:25 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 671114.1044279; Wed, 24 Jan 2024 15:37:24 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSfJc-0002bM-TW; Wed, 24 Jan 2024 15:37:24 +0000
Received: by outflank-mailman (input) for mailman id 671114;
 Wed, 24 Jan 2024 15:37:24 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=bgOV=JC=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rSfJc-0002bG-Dr
 for xen-devel@lists.xenproject.org; Wed, 24 Jan 2024 15:37:24 +0000
Received: from mail-ej1-x62e.google.com (mail-ej1-x62e.google.com
 [2a00:1450:4864:20::62e])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 77d6fc01-bace-11ee-98f5-6d05b1d4d9a1;
 Wed, 24 Jan 2024 16:37:23 +0100 (CET)
Received: by mail-ej1-x62e.google.com with SMTP id
 a640c23a62f3a-a30e445602cso241080366b.0
 for <xen-devel@lists.xenproject.org>; Wed, 24 Jan 2024 07:37:23 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 c14-20020a056602334e00b007bc102fb67asm7117305ioz.10.2024.01.24.07.37.21
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 24 Jan 2024 07:37:22 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 77d6fc01-bace-11ee-98f5-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1706110643; x=1706715443; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=XvSbzhrxHs2/32DEGN2m/4q8IW70rWnO9+XaRiyIRAc=;
        b=Q6hGhR+RJhnv/UAtmL7PUZRPkCfN8d9QkcHSnvADj7j7mEQ7oqqEPu1OApjCzFdwa6
         Gk/41kQG/QhaFXOwezzm6Ib6eDLe1FYkaANe8rlKK37ozyFl8hKotfBj4iYgvn6LVFIt
         PWVQnl2aXkrFQtmLyLyAeW5XL78pumdVpY667IhRSF1ujsmsWe+ikJhvDJdL3XZWXEsU
         1Tx7YHwxxIWXDO12rF0aBQCDWVsd0EWrw5XnqLSknvyB8vcupM1mf6SeRX4/JQMHtT3J
         +OzsV5NeGc/poW2o2ntpacaX3rKFCevLvP7D8CkHObym9SIStetrGeOkaY/bdGohtt6w
         F4QA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706110643; x=1706715443;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=XvSbzhrxHs2/32DEGN2m/4q8IW70rWnO9+XaRiyIRAc=;
        b=ljAI8x9MOCSbl81H2JT1cDJbp00kZqVTLfRWEqOkzmk2e92BBetdacI0MUkMR9piTB
         JGUhw0cuZnCqfEZUm7S0uPZZKu8zeMcW1Hp5O2v8NZNs4dlgv6nScx0KnYCMmsJmOHDy
         dsKpmonuB5a0Wv56TTdaSFpbnfo/Gr5c6ftQcQNVxOyEIFR6oCR/U+rdytSKsCU0tJ9s
         w3yoQ9V18OC9+/1/VzO7HdKLbTjtQ+efUPiOVncCLSUTW8GAGoqniDdn9ENz1fSliT5a
         Ts9DJ7yoZReges4+k8YePaw0f02wKhEDWYJjm35miHsJ2yfYB0e+HMqfaTuKiOhq5T5O
         qtbw==
X-Gm-Message-State: AOJu0YwICw4nd8gQCSnWYsp3iifag5X4rktwZvGKmw4UvYlA7aDiEc5c
	O4XHv6lQcGaeZlUAyB7/jHQvSVpZuSUx+28flRns6jEb+zoVF12Zh+0buiYfpw==
X-Google-Smtp-Source: AGHT+IEoEqyG3fgVrLmBRylmgNYzku7dBD60YakiVnwaMfupmn1VhmLrEhQWRwmHn43pKPsa0Bplhg==
X-Received: by 2002:a17:906:53d6:b0:a2b:4ee:3b6c with SMTP id p22-20020a17090653d600b00a2b04ee3b6cmr1649201ejo.7.1706110642830;
        Wed, 24 Jan 2024 07:37:22 -0800 (PST)
Message-ID: <090f64ae-ecf3-4edc-a6c6-8be3a09ea1ba@suse.com>
Date: Wed, 24 Jan 2024 16:37:19 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] x86/ucode: Fix stability of the Raw CPU Policy rescan
Content-Language: en-US
To: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Wei Liu <wl@xen.org>, Xen-devel <xen-devel@lists.xenproject.org>
References: <20240123205948.1782556-1-andrew.cooper3@citrix.com>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <20240123205948.1782556-1-andrew.cooper3@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 23.01.2024 21:59, Andrew Cooper wrote:
> Always run microcode_update_helper() on the BSP, so the the updated Raw CPU
> policy doesn't get non-BSP topology details included.

Wouldn't it be better (and consistent with ...

> Have calculate_raw_cpu_policy() clear the instantanious XSTATE sizes.  The
> value XCR0 | MSR_XSS had when we scanned the policy isn't terribly interesting
> to report.

... this) to purge these details from the raw policy as well then?

> When CPUID Masking is active, it affects CPUID instructions issued by Xen
> too.  Transiently disable masking to get a clean scan.
> 
> Fixes: 694d79ed5aac ("x86/ucode: Refresh raw CPU policy after microcode load")
> Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>

Irrespective of the question above, I'm also okay with the change as is:
Reviewed-by: Jan Beulich <jbeulich@suse.com>

Jan


From xen-devel-bounces@lists.xenproject.org Wed Jan 24 15:39:08 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 24 Jan 2024 15:39:08 +0000
Received: from list by lists.xenproject.org with outflank-mailman.671117.1044289 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSfLE-0003TT-BD; Wed, 24 Jan 2024 15:39:04 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 671117.1044289; Wed, 24 Jan 2024 15:39:04 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSfLE-0003TM-7i; Wed, 24 Jan 2024 15:39:04 +0000
Received: by outflank-mailman (input) for mailman id 671117;
 Wed, 24 Jan 2024 15:39:03 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=bgOV=JC=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rSfLD-0003TC-Kv
 for xen-devel@lists.xenproject.org; Wed, 24 Jan 2024 15:39:03 +0000
Received: from mail-lj1-x233.google.com (mail-lj1-x233.google.com
 [2a00:1450:4864:20::233])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id b2679247-bace-11ee-9b0f-b553b5be7939;
 Wed, 24 Jan 2024 16:39:01 +0100 (CET)
Received: by mail-lj1-x233.google.com with SMTP id
 38308e7fff4ca-2cf2adac1ccso6369801fa.3
 for <xen-devel@lists.xenproject.org>; Wed, 24 Jan 2024 07:39:01 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 c14-20020a056602334e00b007bc102fb67asm7117305ioz.10.2024.01.24.07.38.58
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 24 Jan 2024 07:39:00 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: b2679247-bace-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1706110741; x=1706715541; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=RJdTcsHHmhCivDIdfqM2GogOA2EJXp4CKFcm36Ko+K8=;
        b=bbIZZG8XRg/VT273W+J52s9HuiIubxORneyhalRbs+ejGj5d1hdNMuRz+3NJ63+J0h
         ekluC1mqNH+RCuqwG52VC3D2+suF8PdDv/xHe1ca2MKIw+Z+Zxv/xcbrF3veok+NOpJo
         fCyOydRnvm+F0pKJp/STGtGg2ZQSAslr4oiXmOEmffVPVUYcnLHstGVMl5L6wQbGAe12
         B/VV55rLu9myvzU2tPmxDEY7dAy6yiwl0L02ojL7Ek3Evmly/DGyZTfjtLqE1Wi9hwVs
         yX1cE5JxEhnsPHiKmeU/DwRFe5MNmT23LEJ9CW+RnkEyYg/rsF/yGceSoi7M73H1NUgw
         jNMQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706110741; x=1706715541;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=RJdTcsHHmhCivDIdfqM2GogOA2EJXp4CKFcm36Ko+K8=;
        b=xQfexLQ3Tfkzpu7ZbnR7RoVE9EXdBrZUtOnNOPFafSa04q1OuF84ROKlLghrnishM4
         z7eNiADI5sXe9i6LHdS5JEFgcxNPscaasphEGSphtIi1ECYszWA/Pktsr6drkLAJ985a
         Y/SrWWtr6hEJgG+F3gqgTFL4EmuVetsvEPMBvYVk8IDXzaOfYg0WrYecSz1RyV7XUNvf
         xBYbRYi/ESgZpL5Ha5xzDkHvi0U7/miCGjE/t5PaUEp2vuDUzgHGFcNVVKL6YuvNWCwZ
         xwYiyesfrXLg1osadzG+Cwv9yALbrwf/ScTey+3G1KE1U00Of3HXyckLw62jN8+eWv5m
         Ns8w==
X-Gm-Message-State: AOJu0Yxjhv2kFNrSEo++quSOJE/Lfbpi/AA4Ze1/W6tuHS3Qxk25RL5H
	0FcMEO7j8rg0jre1Jdms1W7GE9KKE85zWNYEtrZa5R2LCymEdZ4Q4BORDt9vog==
X-Google-Smtp-Source: AGHT+IEdr1koSfnRHgSWbfNM5XoNg93TyHuftmK1c3Fnbm82Plfy98cT1NN+u+W7dQHqGjkum697pA==
X-Received: by 2002:a2e:9911:0:b0:2cd:633c:55b6 with SMTP id v17-20020a2e9911000000b002cd633c55b6mr865359lji.46.1706110740974;
        Wed, 24 Jan 2024 07:39:00 -0800 (PST)
Message-ID: <4a64f394-2c01-44a9-be5b-ffdcb3616cc6@suse.com>
Date: Wed, 24 Jan 2024 16:38:58 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 30/34] xen/riscv: add minimal stuff to processor.h to
 build full Xen
Content-Language: en-US
To: Oleksii <oleksii.kurochko@gmail.com>
Cc: Alistair Francis <alistair.francis@wdc.com>,
 Bob Eshleman <bobbyeshleman@gmail.com>, Connor Davis
 <connojdavis@gmail.com>, Andrew Cooper <andrew.cooper3@citrix.com>,
 George Dunlap <george.dunlap@citrix.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>,
 xen-devel@lists.xenproject.org
References: <cover.1703255175.git.oleksii.kurochko@gmail.com>
 <5bd7c5db6638f09dabdc13a6e12f0b204eacb234.1703255175.git.oleksii.kurochko@gmail.com>
 <aa4d18c5-a8e0-44a6-ae7e-16fd9cd029b4@suse.com>
 <5f8291916b01a2b29a16bd1345fc20e3d4f29cab.camel@gmail.com>
 <b8f47c93-43c4-4c61-a569-7d07e811c6ab@suse.com>
 <22a0c2444201262202cd60d6d5a1cdff62c236bf.camel@gmail.com>
 <5f6c35ed-de1f-4a47-897d-33ed979b28db@suse.com>
 <3ae77a2a9c37f0ea68ec7641f72f931ffc92f304.camel@gmail.com>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <3ae77a2a9c37f0ea68ec7641f72f931ffc92f304.camel@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 24.01.2024 16:33, Oleksii wrote:
> On Wed, 2024-01-24 at 12:27 +0100, Jan Beulich wrote:
>> On 24.01.2024 11:12, Oleksii wrote:
>>> On Wed, 2024-01-24 at 09:19 +0100, Jan Beulich wrote:
>>>> On 23.01.2024 18:08, Oleksii wrote:
>>>>> On Tue, 2024-01-23 at 12:39 +0100, Jan Beulich wrote:
>>>>>> On 22.12.2023 16:13, Oleksii Kurochko wrote:
>>>>>>> @@ -53,6 +56,18 @@ struct cpu_user_regs
>>>>>>>      unsigned long pregs;
>>>>>>>  };
>>>>>>>  
>>>>>>> +/* TODO: need to implement */
>>>>>>> +#define cpu_to_core(cpu)   (0)
>>>>>>> +#define cpu_to_socket(cpu) (0)
>>>>>>> +
>>>>>>> +static inline void cpu_relax(void)
>>>>>>> +{
>>>>>>> +    /* Encoding of the pause instruction */
>>>>>>> +    __asm__ __volatile__ ( ".insn 0x100000F" );
>>>>>>
>>>>>> binutils 2.40 knows "pause" - why use .insn then?
>>>>> I thought that for this instruction it is needed to have
>>>>> extension
>>>>> ZIHINTPAUSE ( according to Linux Kernel source code [1] ) and
>>>>> to
>>>>> cover
>>>>> older version.
>>>>
>>>> Well, of course you'll need to enable the extension then for gas.
>>>> But
>>>> as long as you use the insn unconditionally, that's all fine and
>>>> natural. Another thing would be if you meant to also run on
>>>> systems
>>>> not supporting the extension: Then the above use of .insn would
>>>> need
>>>> to become conditional anyway.
>>> Then it makes sense to use "pause". 
>>> Let's assume that for now we are running only on systems which
>>> support
>>> the extension until we won't face compilation issue for some
>>> system.
>>
>> Gives me the impression that you still don't properly separate the
>> two
>> aspects: One is what systems Xen is to run on, and other is what's
>> needed to make Xen build properly. The first needs documenting (and
>> ideally at some point actually enforcing), while the latter may
>> require
>> e.g. compiler command line option adjustments.
> I understand that it will be required update "-march=..._zihintpause"
> and it should be a check that this extension is supported by a
> toolchain.
> 
> But I am not sure that I know how can I enforce that a system should
> have this extension, and considering Linux kernel implementation which
> uses always pause instruction, it looks like all available systems
> support this extension.

Which is why I said documenting will suffice, at least for now.

Jan


From xen-devel-bounces@lists.xenproject.org Wed Jan 24 15:44:20 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 24 Jan 2024 15:44:20 +0000
Received: from list by lists.xenproject.org with outflank-mailman.671126.1044298 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSfQD-0005jI-Rb; Wed, 24 Jan 2024 15:44:13 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 671126.1044298; Wed, 24 Jan 2024 15:44:13 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSfQD-0005jB-Oe; Wed, 24 Jan 2024 15:44:13 +0000
Received: by outflank-mailman (input) for mailman id 671126;
 Wed, 24 Jan 2024 15:44:12 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=Zgc/=JC=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1rSfQC-0005j5-NT
 for xen-devel@lists.xenproject.org; Wed, 24 Jan 2024 15:44:12 +0000
Received: from mail-wm1-x32e.google.com (mail-wm1-x32e.google.com
 [2a00:1450:4864:20::32e])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 6b3db283-bacf-11ee-98f5-6d05b1d4d9a1;
 Wed, 24 Jan 2024 16:44:11 +0100 (CET)
Received: by mail-wm1-x32e.google.com with SMTP id
 5b1f17b1804b1-40e60e135a7so54832505e9.0
 for <xen-devel@lists.xenproject.org>; Wed, 24 Jan 2024 07:44:11 -0800 (PST)
Received: from [10.80.67.30] (default-46-102-197-194.interdsl.co.uk.
 [46.102.197.194]) by smtp.gmail.com with ESMTPSA id
 fs20-20020a05600c3f9400b0040e88fbe051sm25728wmb.48.2024.01.24.07.44.10
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 24 Jan 2024 07:44:10 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 6b3db283-bacf-11ee-98f5-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1706111051; x=1706715851; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=bevsPldzJp2EWfjr/PsMBVA92fFKcQKQOrHnPmaRaIc=;
        b=oEiLGMdek+poMA2U/ZWjOFuEK1kEF31Ur4I7Ijt/IA/M0vmnD52cYUnLIC54TWxyUq
         HPzGI4nTAFVZEobtIOk+l/P1i2xez+NUMgQnIsCYQ++wvhxcLtmsFogGOoUD4NkksZ8F
         t/enSGPharqsaG2L4k9VCdR4/KHFBgWFqAGsM=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706111051; x=1706715851;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=bevsPldzJp2EWfjr/PsMBVA92fFKcQKQOrHnPmaRaIc=;
        b=vYdsavB6US+G42aTofZ2BRFyTYCBPQMQ+0T6Ll0ggAXDQe7476ueQOQvqSXI3xBJh5
         kwAJQYLfRa+g/ES67G1F1AkksAVRM2sCq3dX56P01BcGjwoo7/sUkpiz2+/fMY9sLX1M
         S4R6ML1MTr5Ihw4eTAAL4wCd40pZOKxkpctvBsuyP5c4j8z6T5QndtgPS4PahMvnysND
         BkrfydDmHVwRUFQPCG+Tvylcjo1pmiOeJoLuIA0mu5n/BM3MEStUGbi4fSciP01KJ58u
         fvHD7vqPYQbL9jDBANcnXgs3bRnZyQR3D4QMuPyT6u44PTpeL7N/3yw8mmrF8FM9/vRJ
         t3uA==
X-Gm-Message-State: AOJu0YzBRdqpSRvp+wp8DgKN1zwetzghb7uWURi6bRg6xiXdTrHkUZnp
	ZXRfJRsP/BRJn2zmS8B3R9CiwYn1uqM/ULl8CNvUlMbn6mZcgeKBG7F7xpNEmXg=
X-Google-Smtp-Source: AGHT+IH4lHzcvtSJQDviJI9x85Acv81CmsEHTUZHRJ5D2xigd2fx6tWOF/M3p92g10tPBdG9NKHiEw==
X-Received: by 2002:a05:600c:354d:b0:40e:af37:547e with SMTP id i13-20020a05600c354d00b0040eaf37547emr1811016wmq.25.1706111050937;
        Wed, 24 Jan 2024 07:44:10 -0800 (PST)
Message-ID: <f26ec4af-a524-459a-b907-70985ad5fafd@citrix.com>
Date: Wed, 24 Jan 2024 15:44:10 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] x86/entry: replace two GET_CURRENT() uses
Content-Language: en-GB
To: Jan Beulich <jbeulich@suse.com>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Wei Liu <wl@xen.org>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger.pau@citrix.com>
References: <3a2345f2-c4a5-4265-b96f-8eed0f193706@suse.com>
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 xsFNBFLhNn8BEADVhE+Hb8i0GV6mihnnr/uiQQdPF8kUoFzCOPXkf7jQ5sLYeJa0cQi6Penp
 VtiFYznTairnVsN5J+ujSTIb+OlMSJUWV4opS7WVNnxHbFTPYZVQ3erv7NKc2iVizCRZ2Kxn
 srM1oPXWRic8BIAdYOKOloF2300SL/bIpeD+x7h3w9B/qez7nOin5NzkxgFoaUeIal12pXSR
 Q354FKFoy6Vh96gc4VRqte3jw8mPuJQpfws+Pb+swvSf/i1q1+1I4jsRQQh2m6OTADHIqg2E
 ofTYAEh7R5HfPx0EXoEDMdRjOeKn8+vvkAwhviWXTHlG3R1QkbE5M/oywnZ83udJmi+lxjJ5
 YhQ5IzomvJ16H0Bq+TLyVLO/VRksp1VR9HxCzItLNCS8PdpYYz5TC204ViycobYU65WMpzWe
 LFAGn8jSS25XIpqv0Y9k87dLbctKKA14Ifw2kq5OIVu2FuX+3i446JOa2vpCI9GcjCzi3oHV
 e00bzYiHMIl0FICrNJU0Kjho8pdo0m2uxkn6SYEpogAy9pnatUlO+erL4LqFUO7GXSdBRbw5
 gNt25XTLdSFuZtMxkY3tq8MFss5QnjhehCVPEpE6y9ZjI4XB8ad1G4oBHVGK5LMsvg22PfMJ
 ISWFSHoF/B5+lHkCKWkFxZ0gZn33ju5n6/FOdEx4B8cMJt+cWwARAQABzSlBbmRyZXcgQ29v
 cGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPsLBegQTAQgAJAIbAwULCQgHAwUVCgkI
 CwUWAgMBAAIeAQIXgAUCWKD95wIZAQAKCRBlw/kGpdefoHbdD/9AIoR3k6fKl+RFiFpyAhvO
 59ttDFI7nIAnlYngev2XUR3acFElJATHSDO0ju+hqWqAb8kVijXLops0gOfqt3VPZq9cuHlh
 IMDquatGLzAadfFx2eQYIYT+FYuMoPZy/aTUazmJIDVxP7L383grjIkn+7tAv+qeDfE+txL4
 SAm1UHNvmdfgL2/lcmL3xRh7sub3nJilM93RWX1Pe5LBSDXO45uzCGEdst6uSlzYR/MEr+5Z
 JQQ32JV64zwvf/aKaagSQSQMYNX9JFgfZ3TKWC1KJQbX5ssoX/5hNLqxMcZV3TN7kU8I3kjK
 mPec9+1nECOjjJSO/h4P0sBZyIUGfguwzhEeGf4sMCuSEM4xjCnwiBwftR17sr0spYcOpqET
 ZGcAmyYcNjy6CYadNCnfR40vhhWuCfNCBzWnUW0lFoo12wb0YnzoOLjvfD6OL3JjIUJNOmJy
 RCsJ5IA/Iz33RhSVRmROu+TztwuThClw63g7+hoyewv7BemKyuU6FTVhjjW+XUWmS/FzknSi
 dAG+insr0746cTPpSkGl3KAXeWDGJzve7/SBBfyznWCMGaf8E2P1oOdIZRxHgWj0zNr1+ooF
 /PzgLPiCI4OMUttTlEKChgbUTQ+5o0P080JojqfXwbPAyumbaYcQNiH1/xYbJdOFSiBv9rpt
 TQTBLzDKXok86M7BTQRS4TZ/ARAAkgqudHsp+hd82UVkvgnlqZjzz2vyrYfz7bkPtXaGb9H4
 Rfo7mQsEQavEBdWWjbga6eMnDqtu+FC+qeTGYebToxEyp2lKDSoAsvt8w82tIlP/EbmRbDVn
 7bhjBlfRcFjVYw8uVDPptT0TV47vpoCVkTwcyb6OltJrvg/QzV9f07DJswuda1JH3/qvYu0p
 vjPnYvCq4NsqY2XSdAJ02HrdYPFtNyPEntu1n1KK+gJrstjtw7KsZ4ygXYrsm/oCBiVW/OgU
 g/XIlGErkrxe4vQvJyVwg6YH653YTX5hLLUEL1NS4TCo47RP+wi6y+TnuAL36UtK/uFyEuPy
 wwrDVcC4cIFhYSfsO0BumEI65yu7a8aHbGfq2lW251UcoU48Z27ZUUZd2Dr6O/n8poQHbaTd
 6bJJSjzGGHZVbRP9UQ3lkmkmc0+XCHmj5WhwNNYjgbbmML7y0fsJT5RgvefAIFfHBg7fTY/i
 kBEimoUsTEQz+N4hbKwo1hULfVxDJStE4sbPhjbsPCrlXf6W9CxSyQ0qmZ2bXsLQYRj2xqd1
 bpA+1o1j2N4/au1R/uSiUFjewJdT/LX1EklKDcQwpk06Af/N7VZtSfEJeRV04unbsKVXWZAk
 uAJyDDKN99ziC0Wz5kcPyVD1HNf8bgaqGDzrv3TfYjwqayRFcMf7xJaL9xXedMcAEQEAAcLB
 XwQYAQgACQUCUuE2fwIbDAAKCRBlw/kGpdefoG4XEACD1Qf/er8EA7g23HMxYWd3FXHThrVQ
 HgiGdk5Yh632vjOm9L4sd/GCEACVQKjsu98e8o3ysitFlznEns5EAAXEbITrgKWXDDUWGYxd
 pnjj2u+GkVdsOAGk0kxczX6s+VRBhpbBI2PWnOsRJgU2n10PZ3mZD4Xu9kU2IXYmuW+e5KCA
 vTArRUdCrAtIa1k01sPipPPw6dfxx2e5asy21YOytzxuWFfJTGnVxZZSCyLUO83sh6OZhJkk
 b9rxL9wPmpN/t2IPaEKoAc0FTQZS36wAMOXkBh24PQ9gaLJvfPKpNzGD8XWR5HHF0NLIJhgg
 4ZlEXQ2fVp3XrtocHqhu4UZR4koCijgB8sB7Tb0GCpwK+C4UePdFLfhKyRdSXuvY3AHJd4CP
 4JzW0Bzq/WXY3XMOzUTYApGQpnUpdOmuQSfpV9MQO+/jo7r6yPbxT7CwRS5dcQPzUiuHLK9i
 nvjREdh84qycnx0/6dDroYhp0DFv4udxuAvt1h4wGwTPRQZerSm4xaYegEFusyhbZrI0U9tJ
 B8WrhBLXDiYlyJT6zOV2yZFuW47VrLsjYnHwn27hmxTC/7tvG3euCklmkn9Sl9IAKFu29RSo
 d5bD8kMSCYsTqtTfT6W4A3qHGvIDta3ptLYpIAOD2sY3GYq2nf3Bbzx81wZK14JdDDHUX2Rs
 6+ahAA==
In-Reply-To: <3a2345f2-c4a5-4265-b96f-8eed0f193706@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 24/01/2024 3:23 pm, Jan Beulich wrote:
> Now that we have %r14 set up using GET_STACK_END() in a number of
> places, in two places we can eliminate the redundancy of GET_CURRENT()
> also invoking that macro. In handle_ist_exception() actually go a step
> farther and avoid using %rbx altogether when retrieving the processor
> ID: Obtain the current vCPU pointer only in the PV32-specific code
> actually needing it.
>
> Signed-off-by: Jan Beulich <jbeulich@suse.com>

Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>


From xen-devel-bounces@lists.xenproject.org Wed Jan 24 15:49:44 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 24 Jan 2024 15:49:44 +0000
Received: from list by lists.xenproject.org with outflank-mailman.671131.1044308 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSfVT-0007Bp-HA; Wed, 24 Jan 2024 15:49:39 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 671131.1044308; Wed, 24 Jan 2024 15:49:39 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSfVT-0007Bi-EY; Wed, 24 Jan 2024 15:49:39 +0000
Received: by outflank-mailman (input) for mailman id 671131;
 Wed, 24 Jan 2024 15:49:37 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=A7cU=JC=citrix.com=prvs=74624b4f2=Andrew.Cooper3@srs-se1.protection.inumbo.net>)
 id 1rSfVR-0007Bc-FS
 for xen-devel@lists.xenproject.org; Wed, 24 Jan 2024 15:49:37 +0000
Received: from esa3.hc3370-68.iphmx.com (esa3.hc3370-68.iphmx.com
 [216.71.145.155]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 2a8741b2-bad0-11ee-9b0f-b553b5be7939;
 Wed, 24 Jan 2024 16:49:34 +0100 (CET)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 2a8741b2-bad0-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple;
  d=citrix.com; s=securemail; t=1706111372;
  h=from:to:cc:subject:date:message-id:mime-version:
   content-transfer-encoding;
  bh=/Ks0Tz6y1kJHaOSNrHjkYGWTxSUYLTBOLahsv0s7EdI=;
  b=BPCW0Gb3c5Rk+Cn50Eev6KZHKdCJMLISeRsC0M4v/56/PVgA8oq0k+Oy
   JUyQDgNIqMRj1NM/WHjWz6sogV9oRW3+0jCtw7BMb1P8bPBljRQRYbnnF
   WUSAwa19i/KrBWzVEBMp4g/Okxktm0nAD6inniTigi/Je93kBZkOpdpj4
   A=;
X-CSE-ConnectionGUID: ucEQqUatSFKl2NPySWASpw==
X-CSE-MsgGUID: X4c0d06oSxqT0Ma6LMJJxg==
Authentication-Results: esa3.hc3370-68.iphmx.com; dkim=none (message not signed) header.i=none
X-SBRS: 4.0
X-MesageID: 129634936
X-Ironport-Server: esa3.hc3370-68.iphmx.com
X-Remote-IP: 162.221.159.70
X-Policy: $RELAYED
X-ThreatScanner-Verdict: Negative
IronPort-Data: A9a23:q/xzEKyVI0hgSPl4vZN6t+dzxirEfRIJ4+MujC+fZmUNrF6WrkUPz
 WtNXm2FM/mCajSkctF/aNjioxkD65eGzYNlTgo4rCAxQypGp/SeCIXCJC8cHc8wwu7rFxs7s
 ppEOrEsCOhuExcwcz/0auCJQUFUjPzOHvykTrecZkidfCc8IA85kxVvhuUltYBhhNm9Emult
 Mj75sbSIzdJ4RYtWo4vw/zF8E4HUMja4mtC4gRnP6wT5TcyqlFOZH4hDfDpR5fHatE88t6SH
 47r0Ly/92XFyBYhYvvNfmHTKxBirhb6ZGBiu1IOM0SQqkEqSh8ai87XAME0e0ZP4whlqvgqo
 Dl7WT5cfi9yVkHEsLx1vxC1iEiSN4UekFPMCSDXXcB+UyQq2pYjqhljJBheAGEWxgp4KXxF2
 MUBFTkRVT6gg7iQ+KOAdcBXntt2eaEHPKtH0p1h5TTQDPJgSpHfWaTao9Rf2V/chOgXQ6yYP
 ZBAL2MyPVKfO3WjOX9OYH46tM6uimPybHtzr1WNqLBsy2PS0BZwwP7mN9+9ltmiHJ8EwB3E9
 zmYl4j/KiFGP4STkWSCyWK1urfqlH3ffaAwBLLto5aGh3XMnzdOWXX6T2CTsfS/z0KzRd9bA
 0gV4TY167g/8lSxSdvwVAH+p2SL1jY+cddNF+wx6CmW17HZpQ2eAwAsUTppeNEg8sgsSlQXO
 kShxo2zQ2Y16fvMFCPbqe/8QS6O1TY9MGQvXDY5RBc+zfrn+qcLnynwZ+17D/vg5jHqIg0c0
 wxmvQBn2O1N1JZSiv/klW0rlQ5AsXQgc+LU2uk0djj8hu+BTNT5D7FEEHCChRq6EK6XT0Oao
 F8PkNWE4eYFAPmlzXPVHr1WQevwvqrbaFUwZGKD+LF4qVyQF4OLJ9gMsFmS2m83Wir7RdMZS
 BCK4l4AjHOiFHCrcbV2c+qMNije9oC5TY6NfqmNPrJzjm1ZKFfvENdGORTBgAgAUSEEzckCB
 HtsWZzyVyhCV/g7nWHeqiV0+eZD+x3SDFj7HfjTpylLG5LHDJJJYd/p6GezU90=
IronPort-HdrOrdr: A9a23:+cmPZKu47Aatkd7d6esc9kh67skDetV00zEX/kB9WHVpmszxra
 6TdZMgpHjJYVcqKRUdcL+7WJVoLUmxyXcX2/h1AV7BZniEhILAFugLhuGO/9SJIVyZygc378
 ZdmsZFZ+EYdWIK7/rH3A==
X-Talos-CUID: 9a23:URkREG2nw4ya8kZJnW/ik7xfB8sIS2TgxWvrDWy8U0BRWYaqYGSI5/Yx
X-Talos-MUID: =?us-ascii?q?9a23=3A4t3lOA7lrRnegwBJMVuQLjWXxoxYv6/2BBhTlq4?=
 =?us-ascii?q?WovXcECUuHxK/riS4F9o=3D?=
X-IronPort-AV: E=Sophos;i="6.05,216,1701147600"; 
   d="scan'208";a="129634936"
From: Andrew Cooper <andrew.cooper3@citrix.com>
To: Xen-devel <xen-devel@lists.xenproject.org>
CC: Andrew Cooper <andrew.cooper3@citrix.com>, Jan Beulich
	<JBeulich@suse.com>, =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?=
	<roger.pau@citrix.com>, Wei Liu <wl@xen.org>
Subject: [PATCH] x86/entry: Avoid register spilling in cr4_pv32_restore()
Date: Wed, 24 Jan 2024 15:49:28 +0000
Message-ID: <20240124154928.2147423-1-andrew.cooper3@citrix.com>
X-Mailer: git-send-email 2.30.2
MIME-Version: 1.0
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit

cr4_pv32_restore() needs two registers.  Right now, it spills %rdx and
clobbers %rax.

However, %rcx is free to use at all callsites.  Annotate CR4_PV32_RESTORE with
our usual clobber comments, and swap %rdx for %rcx in the non-fatal paths

Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
---
CC: Jan Beulich <JBeulich@suse.com>
CC: Roger Pau Monné <roger.pau@citrix.com>
CC: Wei Liu <wl@xen.org>

I suspect we can further improve this by using %r14 rather than
GET_CPUINFO_FIELD(), but I'll leave that to a future change.
---
 xen/arch/x86/x86_64/compat/entry.S | 17 +++++++----------
 xen/arch/x86/x86_64/entry.S        |  8 ++++----
 2 files changed, 11 insertions(+), 14 deletions(-)

diff --git a/xen/arch/x86/x86_64/compat/entry.S b/xen/arch/x86/x86_64/compat/entry.S
index 49811a56e965..d4f0e4804090 100644
--- a/xen/arch/x86/x86_64/compat/entry.S
+++ b/xen/arch/x86/x86_64/compat/entry.S
@@ -23,7 +23,7 @@ FUNC(entry_int82)
 
         sti
 
-        CR4_PV32_RESTORE
+        CR4_PV32_RESTORE /* Clob: ac */
 
         GET_CURRENT(bx)
 
@@ -163,17 +163,15 @@ FUNC(compat_restore_all_guest)
         _ASM_PRE_EXTABLE(.Lft0, handle_exception)
 END(compat_restore_all_guest)
 
-/* This mustn't modify registers other than %rax. */
+/* Callers can cope with both %rax and %rcx being clobbered. */
 FUNC(cr4_pv32_restore)
-        push  %rdx
-        GET_CPUINFO_FIELD(cr4, dx)
-        mov   (%rdx), %rax
+        GET_CPUINFO_FIELD(cr4, cx)
+        mov   (%rcx), %rax
         test  $XEN_CR4_PV32_BITS, %eax
         jnz   0f
         or    cr4_pv32_mask(%rip), %rax
         mov   %rax, %cr4
-        mov   %rax, (%rdx)
-        pop   %rdx
+        mov   %rax, (%rcx)
         ret
 0:
 #ifndef NDEBUG
@@ -191,7 +189,6 @@ FUNC(cr4_pv32_restore)
         BUG
 1:
 #endif
-        pop   %rdx
         xor   %eax, %eax
         ret
 END(cr4_pv32_restore)
@@ -227,7 +224,7 @@ UNLIKELY_END(compat_syscall_gpf)
 END(compat_syscall)
 
 FUNC(compat_sysenter)
-        CR4_PV32_RESTORE
+        CR4_PV32_RESTORE /* Clob: ac */
         movq  VCPU_trap_ctxt(%rbx),%rcx
         cmpb  $X86_EXC_GP, UREGS_entry_vector(%rsp)
         movzwl VCPU_sysenter_sel(%rbx),%eax
@@ -242,7 +239,7 @@ FUNC(compat_sysenter)
 END(compat_sysenter)
 
 FUNC(compat_int80_direct_trap)
-        CR4_PV32_RESTORE
+        CR4_PV32_RESTORE /* Clob: ac */
         call  compat_create_bounce_frame
         jmp   compat_test_all_events
 END(compat_int80_direct_trap)
diff --git a/xen/arch/x86/x86_64/entry.S b/xen/arch/x86/x86_64/entry.S
index c3f6b667a72a..6c53c0091168 100644
--- a/xen/arch/x86/x86_64/entry.S
+++ b/xen/arch/x86/x86_64/entry.S
@@ -309,7 +309,7 @@ FUNC(cstar_enter)
 .Lcstar_cr3_okay:
         sti
 
-        CR4_PV32_RESTORE
+        CR4_PV32_RESTORE /* Clob: ac */
 
         movq  STACK_CPUINFO_FIELD(current_vcpu)(%rbx), %rbx
 
@@ -712,7 +712,7 @@ FUNC(common_interrupt)
         cmovnz %r12d, %ebx
 .Lintr_cr3_okay:
 
-        CR4_PV32_RESTORE
+        CR4_PV32_RESTORE /* Clob: ac */
         movq %rsp,%rdi
         callq do_IRQ
         mov   %r15, STACK_CPUINFO_FIELD(xen_cr3)(%r14)
@@ -762,7 +762,7 @@ handle_exception_saved:
         jz    .Lcr4_pv32_done
         cmpb  $0,DOMAIN_is_32bit_pv(%rax)
         je    .Lcr4_pv32_done
-        call  cr4_pv32_restore
+        call  cr4_pv32_restore /* Clob: ac */
         /*
          * An NMI or #MC may occur between clearing CR4.SMEP / CR4.SMAP in
          * compat_restore_all_guest and it actually returning to guest
@@ -1046,7 +1046,7 @@ FUNC(handle_ist_exception)
 .List_cr3_okay:
 
 #ifdef CONFIG_PV
-        CR4_PV32_RESTORE
+        CR4_PV32_RESTORE /* Clob: ac */
         testb $3,UREGS_cs(%rsp)
         jz    1f
         /*

base-commit: 98ae35cab0e40e59963f9f58345bf378b9522d74
-- 
2.30.2



From xen-devel-bounces@lists.xenproject.org Wed Jan 24 15:52:56 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 24 Jan 2024 15:52:56 +0000
Received: from list by lists.xenproject.org with outflank-mailman.671136.1044318 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSfYc-0000l1-Ua; Wed, 24 Jan 2024 15:52:54 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 671136.1044318; Wed, 24 Jan 2024 15:52:54 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSfYc-0000ku-Rv; Wed, 24 Jan 2024 15:52:54 +0000
Received: by outflank-mailman (input) for mailman id 671136;
 Wed, 24 Jan 2024 15:52:53 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=V3ap=JC=cloud.com=roger.pau@srs-se1.protection.inumbo.net>)
 id 1rSfYb-0000kj-D6
 for xen-devel@lists.xenproject.org; Wed, 24 Jan 2024 15:52:53 +0000
Received: from mail-wm1-x329.google.com (mail-wm1-x329.google.com
 [2a00:1450:4864:20::329])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id a1ea03d1-bad0-11ee-98f5-6d05b1d4d9a1;
 Wed, 24 Jan 2024 16:52:52 +0100 (CET)
Received: by mail-wm1-x329.google.com with SMTP id
 5b1f17b1804b1-40e72a567eeso67322525e9.0
 for <xen-devel@lists.xenproject.org>; Wed, 24 Jan 2024 07:52:52 -0800 (PST)
Received: from localhost ([213.195.118.74]) by smtp.gmail.com with ESMTPSA id
 s20-20020a05600c45d400b0040e395cd20bsm73267wmo.7.2024.01.24.07.52.51
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 24 Jan 2024 07:52:52 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: a1ea03d1-bad0-11ee-98f5-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1706111572; x=1706716372; darn=lists.xenproject.org;
        h=in-reply-to:content-transfer-encoding:content-disposition
         :mime-version:references:message-id:subject:cc:to:from:date:from:to
         :cc:subject:date:message-id:reply-to;
        bh=2v0Mu6nlvp9WWHwblCnMv7pR1mMRQLcj5g6YjRP3i3A=;
        b=Vkv44fXiCxwLkKCn4/Iws4EuX8sNMYMaYrx3txTZVd/9GdWxRZ+s2sxTCY7+VUMCtP
         VLkarhg36k1Bi9kHyFTkeuVq7ydG3iYSc4JhKxng2zcN/tXrHD3MX0z6WjoeQqvRHEyL
         RObZ1NX93M7vq6CBH7HsszOT8Nj4odaWONYCo=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706111572; x=1706716372;
        h=in-reply-to:content-transfer-encoding:content-disposition
         :mime-version:references:message-id:subject:cc:to:from:date
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=2v0Mu6nlvp9WWHwblCnMv7pR1mMRQLcj5g6YjRP3i3A=;
        b=o/+4dz8iY7UYcz1wnL5RNCrjJR4jFkPjpi9K89atRbkKWOPWtZRirSe/n0CYhuJS/g
         llLAzrjDUv9SBlbQWGWzuN97C62dIfUeLTl6a6DlpCFNKknM8zhsorbOiZZ891tgJkat
         DcJDiVylN9hMe/ROEzGVYSHwFBI7xTuYpK2EhCDJYmguufqEM0WRYS52sYophZqOobMB
         9WXF+SIbQUuITIj5UUv/7Il3dgEhPnOIZbd98EhWgy1699b69Fl+pfSve9gWyNu4cpgY
         rcvyuj8pBPhOU8/JtSpg1fyt0F7docK+zztmH5h0hDPKo5/6xMsBk/v96PrlgRFkek0X
         KY8Q==
X-Gm-Message-State: AOJu0Yzcua/KlPA+95indBwXUTRuNCkHkT9mVUw7GPvcDQ1Vn82O2HA9
	N+AbyKlZyNW7czg1DbK9CILSyf/Auj3nNgY8fF3ldrJNScI6zHUHc52o3eEnDaI=
X-Google-Smtp-Source: AGHT+IH7ydDx2XrVAOAnYntZsJ+axrNFsWPMJ7nBfGCN7x+/HNZ/5KbagEfkNpGVBhwW3tE6iTak6w==
X-Received: by 2002:a05:600c:4c19:b0:40e:509b:4bcd with SMTP id d25-20020a05600c4c1900b0040e509b4bcdmr875755wmp.375.1706111572348;
        Wed, 24 Jan 2024 07:52:52 -0800 (PST)
Date: Wed, 24 Jan 2024 16:52:51 +0100
From: Roger Pau =?utf-8?B?TW9ubsOp?= <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>
Subject: Re: [PATCH] x86/NMI: refine "watchdog stuck" log message
Message-ID: <ZbEyU4HQjYG7biii@macbook>
References: <87108f1d-4b13-4c1e-9432-4f14d4f5c12d@suse.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <87108f1d-4b13-4c1e-9432-4f14d4f5c12d@suse.com>

On Wed, Jan 24, 2024 at 04:21:24PM +0100, Jan Beulich wrote:
> Observing
> 
> "Testing NMI watchdog on all CPUs: 0 stuck"
> 
> it felt like it's not quite right, but I still read it as "no CPU stuck;
> all good", when really the system suffered from what 6bdb965178bb
> ("x86/intel: ensure Global Performance Counter Control is setup
> correctly") works around. Convert this to
> 
> "Testing NMI watchdog on all CPUs: {0} stuck"

To make this even more obvious, maybe it could be prefixed with "error":

"Testing NMI watchdog on all CPUs: error {0} stuck"

Hm, albeit I don't like it that much

> 
> or, with multiple CPUs having an issue, e.g.
> 
> "Testing NMI watchdog on all CPUs: {0,40} stuck"
> 
> to make more obvious that a lone number is not a count of CPUs.
> 
> Signed-off-by: Jan Beulich <jbeulich@suse.com>

Reviewed-by: Roger Pau Monné <roger.pau@citrix.com>

> ---
> In principle "sep" could also fulfill the job of "ok"; it felt to me as
> if this may not be liked very much, though.

I think I prefer it the current way.

Thanks, Roger.


From xen-devel-bounces@lists.xenproject.org Wed Jan 24 15:55:21 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 24 Jan 2024 15:55:21 +0000
Received: from list by lists.xenproject.org with outflank-mailman.671140.1044329 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSfat-0001Ju-Ab; Wed, 24 Jan 2024 15:55:15 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 671140.1044329; Wed, 24 Jan 2024 15:55:15 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSfat-0001Jn-7b; Wed, 24 Jan 2024 15:55:15 +0000
Received: by outflank-mailman (input) for mailman id 671140;
 Wed, 24 Jan 2024 15:55:14 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=Zgc/=JC=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1rSfas-0001Jh-3b
 for xen-devel@lists.xenproject.org; Wed, 24 Jan 2024 15:55:14 +0000
Received: from mail-wr1-x433.google.com (mail-wr1-x433.google.com
 [2a00:1450:4864:20::433])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id f4b9b75d-bad0-11ee-9b0f-b553b5be7939;
 Wed, 24 Jan 2024 16:55:11 +0100 (CET)
Received: by mail-wr1-x433.google.com with SMTP id
 ffacd0b85a97d-337d99f9cdfso4922185f8f.0
 for <xen-devel@lists.xenproject.org>; Wed, 24 Jan 2024 07:55:11 -0800 (PST)
Received: from [10.80.67.30] (default-46-102-197-194.interdsl.co.uk.
 [46.102.197.194]) by smtp.gmail.com with ESMTPSA id
 v11-20020a05600c470b00b0040e813f1f31sm72117wmo.25.2024.01.24.07.55.10
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 24 Jan 2024 07:55:11 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: f4b9b75d-bad0-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1706111711; x=1706716511; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=T3DK6SgLV+TwDxouGwRyDRJ797FHhET1Iy792u2WG6g=;
        b=ijcPxWKd9+vRDR/FeX15jlreoTCPQ20GWjfipoO0WQ/TNZqHSkqNw3lxuWPUCxPKFI
         XVgQ9H07F1QXc6Pf3Y9BKMgu3oseO4uZMGCZ6YMq8iQyzsw7dv579FuW2wd+GukIbl9R
         hJwtf4e7M6HtzS6e892VvWXFKrWtavXFXCIbE=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706111711; x=1706716511;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=T3DK6SgLV+TwDxouGwRyDRJ797FHhET1Iy792u2WG6g=;
        b=Unh4a+fJTuK7YJvDveEuEU8npxMFFxTbs27iNLyuvQfWk/i1SFM8OCsX7cHqthrK8H
         9vqchCiMwrAXkcBV6xZH2XXT2DhGZAvIKgvTTJ/UcN8whSHhYk76fAqZmbfXuLqKo3Fj
         erwj/04O7oLOSB7aDzDGyvBmBuVUNQJsAY6xMdAkI3j9JOvYpAlyOPZRQa3RUUZuxvnm
         uUbE2uAMm+KmZ4wrEWkiAivKuaTh9rNG27qhZvleSSkH/mcvz3+zODHbiN/9uQZHm0Za
         PmsF+cditB5Vo/SBXWQX/b+PoCVs1L1rrxR0SDn2llJUAJZKB0J91GQn8U9WmkrollrD
         g7jA==
X-Gm-Message-State: AOJu0YyjfVfkTsd7luDa1AyptcAojLI+qRQe+qO78v5gj+NH2O26Q39w
	+L3hKfIVSX0oaHybpsmmBBASPYn7V48QxVu+QvBW9SkI0NZhIIHniQQB0UWVcgM=
X-Google-Smtp-Source: AGHT+IFT/A0DvqmlLzIbXy/5KnvvujIO4t1MzQDxz9ZXeER3m0n5Uh2jnQHHyqe/Mrzza7LOPIafuQ==
X-Received: by 2002:a05:600c:3490:b0:40e:ccd5:e7bd with SMTP id a16-20020a05600c349000b0040eccd5e7bdmr195520wmq.67.1706111711287;
        Wed, 24 Jan 2024 07:55:11 -0800 (PST)
Message-ID: <add9b6b3-cc50-4165-8f63-cd4541a3ba23@citrix.com>
Date: Wed, 24 Jan 2024 15:55:10 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] x86/NMI: refine "watchdog stuck" log message
Content-Language: en-GB
To: Jan Beulich <jbeulich@suse.com>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Wei Liu <wl@xen.org>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger.pau@citrix.com>
References: <87108f1d-4b13-4c1e-9432-4f14d4f5c12d@suse.com>
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 xsFNBFLhNn8BEADVhE+Hb8i0GV6mihnnr/uiQQdPF8kUoFzCOPXkf7jQ5sLYeJa0cQi6Penp
 VtiFYznTairnVsN5J+ujSTIb+OlMSJUWV4opS7WVNnxHbFTPYZVQ3erv7NKc2iVizCRZ2Kxn
 srM1oPXWRic8BIAdYOKOloF2300SL/bIpeD+x7h3w9B/qez7nOin5NzkxgFoaUeIal12pXSR
 Q354FKFoy6Vh96gc4VRqte3jw8mPuJQpfws+Pb+swvSf/i1q1+1I4jsRQQh2m6OTADHIqg2E
 ofTYAEh7R5HfPx0EXoEDMdRjOeKn8+vvkAwhviWXTHlG3R1QkbE5M/oywnZ83udJmi+lxjJ5
 YhQ5IzomvJ16H0Bq+TLyVLO/VRksp1VR9HxCzItLNCS8PdpYYz5TC204ViycobYU65WMpzWe
 LFAGn8jSS25XIpqv0Y9k87dLbctKKA14Ifw2kq5OIVu2FuX+3i446JOa2vpCI9GcjCzi3oHV
 e00bzYiHMIl0FICrNJU0Kjho8pdo0m2uxkn6SYEpogAy9pnatUlO+erL4LqFUO7GXSdBRbw5
 gNt25XTLdSFuZtMxkY3tq8MFss5QnjhehCVPEpE6y9ZjI4XB8ad1G4oBHVGK5LMsvg22PfMJ
 ISWFSHoF/B5+lHkCKWkFxZ0gZn33ju5n6/FOdEx4B8cMJt+cWwARAQABzSlBbmRyZXcgQ29v
 cGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPsLBegQTAQgAJAIbAwULCQgHAwUVCgkI
 CwUWAgMBAAIeAQIXgAUCWKD95wIZAQAKCRBlw/kGpdefoHbdD/9AIoR3k6fKl+RFiFpyAhvO
 59ttDFI7nIAnlYngev2XUR3acFElJATHSDO0ju+hqWqAb8kVijXLops0gOfqt3VPZq9cuHlh
 IMDquatGLzAadfFx2eQYIYT+FYuMoPZy/aTUazmJIDVxP7L383grjIkn+7tAv+qeDfE+txL4
 SAm1UHNvmdfgL2/lcmL3xRh7sub3nJilM93RWX1Pe5LBSDXO45uzCGEdst6uSlzYR/MEr+5Z
 JQQ32JV64zwvf/aKaagSQSQMYNX9JFgfZ3TKWC1KJQbX5ssoX/5hNLqxMcZV3TN7kU8I3kjK
 mPec9+1nECOjjJSO/h4P0sBZyIUGfguwzhEeGf4sMCuSEM4xjCnwiBwftR17sr0spYcOpqET
 ZGcAmyYcNjy6CYadNCnfR40vhhWuCfNCBzWnUW0lFoo12wb0YnzoOLjvfD6OL3JjIUJNOmJy
 RCsJ5IA/Iz33RhSVRmROu+TztwuThClw63g7+hoyewv7BemKyuU6FTVhjjW+XUWmS/FzknSi
 dAG+insr0746cTPpSkGl3KAXeWDGJzve7/SBBfyznWCMGaf8E2P1oOdIZRxHgWj0zNr1+ooF
 /PzgLPiCI4OMUttTlEKChgbUTQ+5o0P080JojqfXwbPAyumbaYcQNiH1/xYbJdOFSiBv9rpt
 TQTBLzDKXok86M7BTQRS4TZ/ARAAkgqudHsp+hd82UVkvgnlqZjzz2vyrYfz7bkPtXaGb9H4
 Rfo7mQsEQavEBdWWjbga6eMnDqtu+FC+qeTGYebToxEyp2lKDSoAsvt8w82tIlP/EbmRbDVn
 7bhjBlfRcFjVYw8uVDPptT0TV47vpoCVkTwcyb6OltJrvg/QzV9f07DJswuda1JH3/qvYu0p
 vjPnYvCq4NsqY2XSdAJ02HrdYPFtNyPEntu1n1KK+gJrstjtw7KsZ4ygXYrsm/oCBiVW/OgU
 g/XIlGErkrxe4vQvJyVwg6YH653YTX5hLLUEL1NS4TCo47RP+wi6y+TnuAL36UtK/uFyEuPy
 wwrDVcC4cIFhYSfsO0BumEI65yu7a8aHbGfq2lW251UcoU48Z27ZUUZd2Dr6O/n8poQHbaTd
 6bJJSjzGGHZVbRP9UQ3lkmkmc0+XCHmj5WhwNNYjgbbmML7y0fsJT5RgvefAIFfHBg7fTY/i
 kBEimoUsTEQz+N4hbKwo1hULfVxDJStE4sbPhjbsPCrlXf6W9CxSyQ0qmZ2bXsLQYRj2xqd1
 bpA+1o1j2N4/au1R/uSiUFjewJdT/LX1EklKDcQwpk06Af/N7VZtSfEJeRV04unbsKVXWZAk
 uAJyDDKN99ziC0Wz5kcPyVD1HNf8bgaqGDzrv3TfYjwqayRFcMf7xJaL9xXedMcAEQEAAcLB
 XwQYAQgACQUCUuE2fwIbDAAKCRBlw/kGpdefoG4XEACD1Qf/er8EA7g23HMxYWd3FXHThrVQ
 HgiGdk5Yh632vjOm9L4sd/GCEACVQKjsu98e8o3ysitFlznEns5EAAXEbITrgKWXDDUWGYxd
 pnjj2u+GkVdsOAGk0kxczX6s+VRBhpbBI2PWnOsRJgU2n10PZ3mZD4Xu9kU2IXYmuW+e5KCA
 vTArRUdCrAtIa1k01sPipPPw6dfxx2e5asy21YOytzxuWFfJTGnVxZZSCyLUO83sh6OZhJkk
 b9rxL9wPmpN/t2IPaEKoAc0FTQZS36wAMOXkBh24PQ9gaLJvfPKpNzGD8XWR5HHF0NLIJhgg
 4ZlEXQ2fVp3XrtocHqhu4UZR4koCijgB8sB7Tb0GCpwK+C4UePdFLfhKyRdSXuvY3AHJd4CP
 4JzW0Bzq/WXY3XMOzUTYApGQpnUpdOmuQSfpV9MQO+/jo7r6yPbxT7CwRS5dcQPzUiuHLK9i
 nvjREdh84qycnx0/6dDroYhp0DFv4udxuAvt1h4wGwTPRQZerSm4xaYegEFusyhbZrI0U9tJ
 B8WrhBLXDiYlyJT6zOV2yZFuW47VrLsjYnHwn27hmxTC/7tvG3euCklmkn9Sl9IAKFu29RSo
 d5bD8kMSCYsTqtTfT6W4A3qHGvIDta3ptLYpIAOD2sY3GYq2nf3Bbzx81wZK14JdDDHUX2Rs
 6+ahAA==
In-Reply-To: <87108f1d-4b13-4c1e-9432-4f14d4f5c12d@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 24/01/2024 3:21 pm, Jan Beulich wrote:
> Observing
>
> "Testing NMI watchdog on all CPUs: 0 stuck"
>
> it felt like it's not quite right, but I still read it as "no CPU stuck;
> all good", when really the system suffered from what 6bdb965178bb
> ("x86/intel: ensure Global Performance Counter Control is setup
> correctly") works around. Convert this to
>
> "Testing NMI watchdog on all CPUs: {0} stuck"
>
> or, with multiple CPUs having an issue, e.g.
>
> "Testing NMI watchdog on all CPUs: {0,40} stuck"
>
> to make more obvious that a lone number is not a count of CPUs.
>
> Signed-off-by: Jan Beulich <jbeulich@suse.com>

I'd forgotten it was still opencoded like this.

Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>, but if you felt
turning this into using a scratch cpumask and %*pb then I think that
would be nicer still.

~Andrew


From xen-devel-bounces@lists.xenproject.org Wed Jan 24 16:25:08 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 24 Jan 2024 16:25:08 +0000
Received: from list by lists.xenproject.org with outflank-mailman.671148.1044338 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSg3h-00014j-KE; Wed, 24 Jan 2024 16:25:01 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 671148.1044338; Wed, 24 Jan 2024 16:25:01 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSg3h-00014c-HY; Wed, 24 Jan 2024 16:25:01 +0000
Received: by outflank-mailman (input) for mailman id 671148;
 Wed, 24 Jan 2024 16:25:00 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=Zgc/=JC=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1rSg3f-00014W-Uu
 for xen-devel@lists.xenproject.org; Wed, 24 Jan 2024 16:24:59 +0000
Received: from mail-lj1-x22b.google.com (mail-lj1-x22b.google.com
 [2a00:1450:4864:20::22b])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 1d51f4eb-bad5-11ee-9b0f-b553b5be7939;
 Wed, 24 Jan 2024 17:24:57 +0100 (CET)
Received: by mail-lj1-x22b.google.com with SMTP id
 38308e7fff4ca-2cf0390eddbso37265901fa.3
 for <xen-devel@lists.xenproject.org>; Wed, 24 Jan 2024 08:24:57 -0800 (PST)
Received: from [10.80.67.30] (default-46-102-197-194.interdsl.co.uk.
 [46.102.197.194]) by smtp.gmail.com with ESMTPSA id
 qa32-20020a17090786a000b00a26f1e3093asm45708ejc.49.2024.01.24.08.24.56
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 24 Jan 2024 08:24:57 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 1d51f4eb-bad5-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1706113497; x=1706718297; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=MMKz5CptMuNtGt+EBWiwk2MAAOeXuEqdjAeN7o3H6DU=;
        b=nlnwADHwfwUZP8mPwIMf9n/QWbWLvVMDruKtHCuSHWsqtM30L7cwIP+EwSbS+jGRfp
         hoJfFZrkNN3koAurG0rjTtSQB+svve5ebNioW3n5pOZATsuc0s51acYpuz+EJS4jxIgA
         ExbBpK2dJHu9b/9KZJe8RSTpWmkL7FxB4xeZ4=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706113497; x=1706718297;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=MMKz5CptMuNtGt+EBWiwk2MAAOeXuEqdjAeN7o3H6DU=;
        b=xKeVRkqRCnK1WS0gGui3ByPKThilWbon4lSYGot7vVRUm2iuJNPzKXlmXW5Pq8NJ+b
         nnLawdQVxXu9AskHRpG/pQ7hkDORgf034NC1Bwguvik+KTHVviBS/LOLwwvC8SmWtho5
         /fVShdhvwArubVAalcMrJv69Fr89JYhXb/Q5d7zUDdxEOn42r53IHW2clksstSUwikF5
         J6sjlZpzbsLTxNN+ItKvZjxYpYJ/e0yp8fVqKkqucSF1RF0BUFIVc9NLQUs9BDJeFTlU
         y913ms0PzqGMWJH9PePRexQlHLv2+A4PlsvBgGnQM7n3922jQwJis4RBJAYNnwz9uCbv
         Q0OA==
X-Gm-Message-State: AOJu0YyjdslUMG6BFAqLZbV1Q5TJ25UDDfO0mfZxxpuqKX5R5lijGFzz
	g8lCiSvGH+LekPZh89rNSoQ0aOgYhyrGGA6uWAkK6NLrGqHJIyynphG/frjULiw=
X-Google-Smtp-Source: AGHT+IF0oOv4bZBenh47isSuOEjVw5uXj7fpSLUPsDfAitrqZfczle/PnveJSK6UtgV3WXHCuubjmA==
X-Received: by 2002:a05:6512:3ca8:b0:510:1620:939b with SMTP id h40-20020a0565123ca800b005101620939bmr523854lfv.0.1706113497343;
        Wed, 24 Jan 2024 08:24:57 -0800 (PST)
Message-ID: <e6dcf78b-bd68-49bc-8711-381befc25f02@citrix.com>
Date: Wed, 24 Jan 2024 16:24:56 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] x86: amend 'n' debug-key output with SMI count
Content-Language: en-GB
To: Jan Beulich <jbeulich@suse.com>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Wei Liu <wl@xen.org>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger.pau@citrix.com>
References: <50978ef4-9f11-4c70-952b-94107616f265@suse.com>
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 xsFNBFLhNn8BEADVhE+Hb8i0GV6mihnnr/uiQQdPF8kUoFzCOPXkf7jQ5sLYeJa0cQi6Penp
 VtiFYznTairnVsN5J+ujSTIb+OlMSJUWV4opS7WVNnxHbFTPYZVQ3erv7NKc2iVizCRZ2Kxn
 srM1oPXWRic8BIAdYOKOloF2300SL/bIpeD+x7h3w9B/qez7nOin5NzkxgFoaUeIal12pXSR
 Q354FKFoy6Vh96gc4VRqte3jw8mPuJQpfws+Pb+swvSf/i1q1+1I4jsRQQh2m6OTADHIqg2E
 ofTYAEh7R5HfPx0EXoEDMdRjOeKn8+vvkAwhviWXTHlG3R1QkbE5M/oywnZ83udJmi+lxjJ5
 YhQ5IzomvJ16H0Bq+TLyVLO/VRksp1VR9HxCzItLNCS8PdpYYz5TC204ViycobYU65WMpzWe
 LFAGn8jSS25XIpqv0Y9k87dLbctKKA14Ifw2kq5OIVu2FuX+3i446JOa2vpCI9GcjCzi3oHV
 e00bzYiHMIl0FICrNJU0Kjho8pdo0m2uxkn6SYEpogAy9pnatUlO+erL4LqFUO7GXSdBRbw5
 gNt25XTLdSFuZtMxkY3tq8MFss5QnjhehCVPEpE6y9ZjI4XB8ad1G4oBHVGK5LMsvg22PfMJ
 ISWFSHoF/B5+lHkCKWkFxZ0gZn33ju5n6/FOdEx4B8cMJt+cWwARAQABzSlBbmRyZXcgQ29v
 cGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPsLBegQTAQgAJAIbAwULCQgHAwUVCgkI
 CwUWAgMBAAIeAQIXgAUCWKD95wIZAQAKCRBlw/kGpdefoHbdD/9AIoR3k6fKl+RFiFpyAhvO
 59ttDFI7nIAnlYngev2XUR3acFElJATHSDO0ju+hqWqAb8kVijXLops0gOfqt3VPZq9cuHlh
 IMDquatGLzAadfFx2eQYIYT+FYuMoPZy/aTUazmJIDVxP7L383grjIkn+7tAv+qeDfE+txL4
 SAm1UHNvmdfgL2/lcmL3xRh7sub3nJilM93RWX1Pe5LBSDXO45uzCGEdst6uSlzYR/MEr+5Z
 JQQ32JV64zwvf/aKaagSQSQMYNX9JFgfZ3TKWC1KJQbX5ssoX/5hNLqxMcZV3TN7kU8I3kjK
 mPec9+1nECOjjJSO/h4P0sBZyIUGfguwzhEeGf4sMCuSEM4xjCnwiBwftR17sr0spYcOpqET
 ZGcAmyYcNjy6CYadNCnfR40vhhWuCfNCBzWnUW0lFoo12wb0YnzoOLjvfD6OL3JjIUJNOmJy
 RCsJ5IA/Iz33RhSVRmROu+TztwuThClw63g7+hoyewv7BemKyuU6FTVhjjW+XUWmS/FzknSi
 dAG+insr0746cTPpSkGl3KAXeWDGJzve7/SBBfyznWCMGaf8E2P1oOdIZRxHgWj0zNr1+ooF
 /PzgLPiCI4OMUttTlEKChgbUTQ+5o0P080JojqfXwbPAyumbaYcQNiH1/xYbJdOFSiBv9rpt
 TQTBLzDKXok86M7BTQRS4TZ/ARAAkgqudHsp+hd82UVkvgnlqZjzz2vyrYfz7bkPtXaGb9H4
 Rfo7mQsEQavEBdWWjbga6eMnDqtu+FC+qeTGYebToxEyp2lKDSoAsvt8w82tIlP/EbmRbDVn
 7bhjBlfRcFjVYw8uVDPptT0TV47vpoCVkTwcyb6OltJrvg/QzV9f07DJswuda1JH3/qvYu0p
 vjPnYvCq4NsqY2XSdAJ02HrdYPFtNyPEntu1n1KK+gJrstjtw7KsZ4ygXYrsm/oCBiVW/OgU
 g/XIlGErkrxe4vQvJyVwg6YH653YTX5hLLUEL1NS4TCo47RP+wi6y+TnuAL36UtK/uFyEuPy
 wwrDVcC4cIFhYSfsO0BumEI65yu7a8aHbGfq2lW251UcoU48Z27ZUUZd2Dr6O/n8poQHbaTd
 6bJJSjzGGHZVbRP9UQ3lkmkmc0+XCHmj5WhwNNYjgbbmML7y0fsJT5RgvefAIFfHBg7fTY/i
 kBEimoUsTEQz+N4hbKwo1hULfVxDJStE4sbPhjbsPCrlXf6W9CxSyQ0qmZ2bXsLQYRj2xqd1
 bpA+1o1j2N4/au1R/uSiUFjewJdT/LX1EklKDcQwpk06Af/N7VZtSfEJeRV04unbsKVXWZAk
 uAJyDDKN99ziC0Wz5kcPyVD1HNf8bgaqGDzrv3TfYjwqayRFcMf7xJaL9xXedMcAEQEAAcLB
 XwQYAQgACQUCUuE2fwIbDAAKCRBlw/kGpdefoG4XEACD1Qf/er8EA7g23HMxYWd3FXHThrVQ
 HgiGdk5Yh632vjOm9L4sd/GCEACVQKjsu98e8o3ysitFlznEns5EAAXEbITrgKWXDDUWGYxd
 pnjj2u+GkVdsOAGk0kxczX6s+VRBhpbBI2PWnOsRJgU2n10PZ3mZD4Xu9kU2IXYmuW+e5KCA
 vTArRUdCrAtIa1k01sPipPPw6dfxx2e5asy21YOytzxuWFfJTGnVxZZSCyLUO83sh6OZhJkk
 b9rxL9wPmpN/t2IPaEKoAc0FTQZS36wAMOXkBh24PQ9gaLJvfPKpNzGD8XWR5HHF0NLIJhgg
 4ZlEXQ2fVp3XrtocHqhu4UZR4koCijgB8sB7Tb0GCpwK+C4UePdFLfhKyRdSXuvY3AHJd4CP
 4JzW0Bzq/WXY3XMOzUTYApGQpnUpdOmuQSfpV9MQO+/jo7r6yPbxT7CwRS5dcQPzUiuHLK9i
 nvjREdh84qycnx0/6dDroYhp0DFv4udxuAvt1h4wGwTPRQZerSm4xaYegEFusyhbZrI0U9tJ
 B8WrhBLXDiYlyJT6zOV2yZFuW47VrLsjYnHwn27hmxTC/7tvG3euCklmkn9Sl9IAKFu29RSo
 d5bD8kMSCYsTqtTfT6W4A3qHGvIDta3ptLYpIAOD2sY3GYq2nf3Bbzx81wZK14JdDDHUX2Rs
 6+ahAA==
In-Reply-To: <50978ef4-9f11-4c70-952b-94107616f265@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 24/01/2024 3:27 pm, Jan Beulich wrote:
> ... if available only, of course.
>
> Signed-off-by: Jan Beulich <jbeulich@suse.com>
>
> --- a/xen/arch/x86/cpu/common.c
> +++ b/xen/arch/x86/cpu/common.c
> @@ -406,9 +406,15 @@ void __init early_cpu_init(bool verbose)
>  		paddr_bits -= (ebx >> 6) & 0x3f;
>  	}
>  
> -	if (!(c->x86_vendor & (X86_VENDOR_AMD | X86_VENDOR_HYGON)))
> +	if (!(c->x86_vendor & (X86_VENDOR_AMD | X86_VENDOR_HYGON))) {
> +		uint64_t smi_count;
> +
>  		park_offline_cpus = opt_mce;
>  
> +		if (!verbose && !rdmsr_safe(MSR_SMI_COUNT, smi_count))
> +			setup_force_cpu_cap(X86_FEATURE_SMI_COUNT);
> +	}
> +

I know you're re-using an existing condition, but I think it's more
likely that it's Intel-only than common to VIA and Shanghai.

Also, why is gated on verbose?

(I think I can see why this is rhetorical question, and I expect you can
guess what the feedback will be.)

>  	initialize_cpu_data(0);
>  }
>  
> --- a/xen/arch/x86/include/asm/cpufeatures.h
> +++ b/xen/arch/x86/include/asm/cpufeatures.h
> @@ -24,7 +24,7 @@ XEN_CPUFEATURE(APERFMPERF,        X86_SY
>  XEN_CPUFEATURE(MFENCE_RDTSC,      X86_SYNTH( 9)) /* MFENCE synchronizes RDTSC */
>  XEN_CPUFEATURE(XEN_SMEP,          X86_SYNTH(10)) /* SMEP gets used by Xen itself */
>  XEN_CPUFEATURE(XEN_SMAP,          X86_SYNTH(11)) /* SMAP gets used by Xen itself */
> -/* Bit 12 unused. */
> +XEN_CPUFEATURE(SMI_COUNT,         X86_SYNTH(12)) /* MSR_SMI_COUNT exists */
>  XEN_CPUFEATURE(IND_THUNK_LFENCE,  X86_SYNTH(13)) /* Use IND_THUNK_LFENCE */
>  XEN_CPUFEATURE(IND_THUNK_JMP,     X86_SYNTH(14)) /* Use IND_THUNK_JMP */
>  XEN_CPUFEATURE(SC_NO_BRANCH_HARDEN, X86_SYNTH(15)) /* (Disable) Conditional branch hardening */
> --- a/xen/arch/x86/include/asm/msr-index.h
> +++ b/xen/arch/x86/include/asm/msr-index.h
> @@ -28,6 +28,8 @@
>  #define  TEST_CTRL_SPLITLOCK_DETECT         (_AC(1, ULL) << 29)
>  #define  TEST_CTRL_SPLITLOCK_DISABLE        (_AC(1, ULL) << 31)
>  
> +#define MSR_SMI_COUNT                       0x00000034
> +
>  #define MSR_INTEL_CORE_THREAD_COUNT         0x00000035
>  #define  MSR_CTC_THREAD_MASK                0x0000ffff
>  #define  MSR_CTC_CORE_MASK                  _AC(0xffff0000, U)
> --- a/xen/arch/x86/nmi.c
> +++ b/xen/arch/x86/nmi.c
> @@ -589,9 +589,20 @@ static void cf_check do_nmi_stats(unsign
>      unsigned int cpu;
>      bool pend, mask;
>  
> -    printk("CPU\tNMI\n");
> +    printk("CPU\tNMI%s\n", boot_cpu_has(X86_FEATURE_SMI_COUNT) ? "\tSMI" : "");
>      for_each_online_cpu ( cpu )
> -        printk("%3u\t%3u\n", cpu, per_cpu(nmi_count, cpu));
> +    {
> +        printk("%3u\t%3u", cpu, per_cpu(nmi_count, cpu));
> +        if ( boot_cpu_has(X86_FEATURE_SMI_COUNT) )
> +        {
> +            unsigned int smi_count, dummy;
> +
> +            rdmsr(MSR_SMI_COUNT, smi_count, dummy);
> +            printk("\t%3u\n", smi_count);

This reads MSR_SMI_COUNT repeatedly on the same CPU.

You'll need to IPI all CPUs to dump the count into a per-cpu variable.

~Andrew


From xen-devel-bounces@lists.xenproject.org Wed Jan 24 16:32:12 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 24 Jan 2024 16:32:12 +0000
Received: from list by lists.xenproject.org with outflank-mailman.671154.1044349 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSgAa-0003HN-Dd; Wed, 24 Jan 2024 16:32:08 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 671154.1044349; Wed, 24 Jan 2024 16:32:08 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSgAa-0003HG-AC; Wed, 24 Jan 2024 16:32:08 +0000
Received: by outflank-mailman (input) for mailman id 671154;
 Wed, 24 Jan 2024 16:32:07 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=I9GA=JC=amazon.de=prvs=7465400e6=mheyne@srs-se1.protection.inumbo.net>)
 id 1rSgAZ-0003HA-2N
 for xen-devel@lists.xenproject.org; Wed, 24 Jan 2024 16:32:07 +0000
Received: from smtp-fw-52005.amazon.com (smtp-fw-52005.amazon.com
 [52.119.213.156]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 1b759d33-bad6-11ee-98f5-6d05b1d4d9a1;
 Wed, 24 Jan 2024 17:32:05 +0100 (CET)
Received: from iad12-co-svc-p1-lb1-vlan3.amazon.com (HELO
 email-inbound-relay-iad-1e-m6i4x-3554bfcf.us-east-1.amazon.com) ([10.43.8.6])
 by smtp-border-fw-52005.iad7.amazon.com with
 ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 24 Jan 2024 16:32:02 +0000
Received: from smtpout.prod.us-east-1.prod.farcaster.email.amazon.dev
 (iad7-ws-svc-p70-lb3-vlan2.iad.amazon.com [10.32.235.34])
 by email-inbound-relay-iad-1e-m6i4x-3554bfcf.us-east-1.amazon.com (Postfix)
 with ESMTPS id 641D7806A9; Wed, 24 Jan 2024 16:32:00 +0000 (UTC)
Received: from EX19MTAUEA001.ant.amazon.com [10.0.44.209:41371]
 by smtpin.naws.us-east-1.prod.farcaster.email.amazon.dev [10.0.88.120:2525]
 with esmtp (Farcaster)
 id 439588db-d258-4371-8e65-95409cade95b; Wed, 24 Jan 2024 16:31:59 +0000 (UTC)
Received: from EX19D008UEA003.ant.amazon.com (10.252.134.116) by
 EX19MTAUEA001.ant.amazon.com (10.252.134.203) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1118.40; Wed, 24 Jan 2024 16:31:49 +0000
Received: from EX19MTAUWC001.ant.amazon.com (10.250.64.145) by
 EX19D008UEA003.ant.amazon.com (10.252.134.116) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.2.1118.40; Wed, 24 Jan 2024 16:31:48 +0000
Received: from dev-dsk-mheyne-1b-c1362c4d.eu-west-1.amazon.com (10.15.57.183)
 by mail-relay.amazon.com (10.250.64.145) with Microsoft SMTP Server
 id
 15.2.1118.40 via Frontend Transport; Wed, 24 Jan 2024 16:31:48 +0000
Received: by dev-dsk-mheyne-1b-c1362c4d.eu-west-1.amazon.com (Postfix,
 from userid 5466572)
 id 37CB1ADF; Wed, 24 Jan 2024 16:31:48 +0000 (UTC)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 1b759d33-bad6-11ee-98f5-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
  d=amazon.de; i=@amazon.de; q=dns/txt; s=amazon201209;
  t=1706113925; x=1737649925;
  h=from:to:cc:subject:date:message-id:mime-version:
   content-transfer-encoding;
  bh=7vT1PswudYg3wT0G4RuvjsUk701LiPWja9I6tIWZQRY=;
  b=CNkDA6LvxIBfTlyEwqlfSXPNmBGHBovLb1WLNGLwie/sQSLlJvouxmNn
   OeI63NIwC2F8p10Heas1BZwPr1dxHQXwCkaWiZlihBQLho8sdmiO+93zI
   9ISo0xMyeLsewiCAvaCrsexNqeEgZjP6gflG3CF0piGE+1aQC1TEFpXAu
   A=;
X-IronPort-AV: E=Sophos;i="6.05,216,1701129600"; 
   d="scan'208";a="629728689"
X-Farcaster-Flow-ID: 439588db-d258-4371-8e65-95409cade95b
From: Maximilian Heyne <mheyne@amazon.de>
To: 
CC: Julien Grall <jgrall@amazon.com>, Maximilian Heyne <mheyne@amazon.de>,
	<stable@vger.kernel.org>, Andrew Panyakin <apanyaki@amazon.com>, "Juergen
 Gross" <jgross@suse.com>, Stefano Stabellini <sstabellini@kernel.org>,
	Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>, Rahul Singh
	<rahul.singh@arm.com>, David Woodhouse <dwmw@amazon.co.uk>, Viresh Kumar
	<viresh.kumar@linaro.org>, Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>,
	Jeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com>,
	<xen-devel@lists.xenproject.org>, <linux-kernel@vger.kernel.org>
Subject: [PATCH] xen/events: close evtchn after mapping cleanup
Date: Wed, 24 Jan 2024 16:31:28 +0000
Message-ID: <20240124163130.31324-1-mheyne@amazon.de>
X-Mailer: git-send-email 2.40.1
MIME-Version: 1.0
Precedence: Bulk
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit

shutdown_pirq and startup_pirq are not taking the
irq_mapping_update_lock because they can't due to lock inversion. Both
are called with the irq_desc->lock being taking. The lock order,
however, is first irq_mapping_update_lock and then irq_desc->lock.

This opens multiple races:
- shutdown_pirq can be interrupted by a function that allocates an event
  channel:

  CPU0                        CPU1
  shutdown_pirq {
    xen_evtchn_close(e)
                              __startup_pirq {
                                EVTCHNOP_bind_pirq
                                  -> returns just freed evtchn e
                                set_evtchn_to_irq(e, irq)
                              }
    xen_irq_info_cleanup() {
      set_evtchn_to_irq(e, -1)
    }
  }

  Assume here event channel e refers here to the same event channel
  number.
  After this race the evtchn_to_irq mapping for e is invalid (-1).

- __startup_pirq races with __unbind_from_irq in a similar way. Because
  __startup_pirq doesn't take irq_mapping_update_lock it can grab the
  evtchn that __unbind_from_irq is currently freeing and cleaning up. In
  this case even though the event channel is allocated, its mapping can
  be unset in evtchn_to_irq.

The fix is to first cleanup the mappings and then close the event
channel. In this way, when an event channel gets allocated it's
potential previous evtchn_to_irq mappings are guaranteed to be unset already.
This is also the reverse order of the allocation where first the event
channel is allocated and then the mappings are setup.

On a 5.10 kernel prior to commit 3fcdaf3d7634 ("xen/events: modify internal
[un]bind interfaces"), we hit a BUG like the following during probing of NVMe
devices. The issue is that during nvme_setup_io_queues, pci_free_irq
is called for every device which results in a call to shutdown_pirq.
With many nvme devices it's therefore likely to hit this race during
boot because there will be multiple calls to shutdown_pirq and
startup_pirq are running potentially in parallel.

  ------------[ cut here ]------------
  blkfront: xvda: barrier or flush: disabled; persistent grants: enabled; indirect descriptors: enabled; bounce buffer: enabled
  kernel BUG at drivers/xen/events/events_base.c:499!
  invalid opcode: 0000 [#1] SMP PTI
  CPU: 44 PID: 375 Comm: kworker/u257:23 Not tainted 5.10.201-191.748.amzn2.x86_64 #1
  Hardware name: Xen HVM domU, BIOS 4.11.amazon 08/24/2006
  Workqueue: nvme-reset-wq nvme_reset_work
  RIP: 0010:bind_evtchn_to_cpu+0xdf/0xf0
  Code: 5d 41 5e c3 cc cc cc cc 44 89 f7 e8 2b 55 ad ff 49 89 c5 48 85 c0 0f 84 64 ff ff ff 4c 8b 68 30 41 83 fe ff 0f 85 60 ff ff ff <0f> 0b 66 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 40 00 0f 1f 44 00 00
  RSP: 0000:ffffc9000d533b08 EFLAGS: 00010046
  RAX: 0000000000000000 RBX: 0000000000000000 RCX: 0000000000000006
  RDX: 0000000000000028 RSI: 00000000ffffffff RDI: 00000000ffffffff
  RBP: ffff888107419680 R08: 0000000000000000 R09: ffffffff82d72b00
  R10: 0000000000000000 R11: 0000000000000000 R12: 00000000000001ed
  R13: 0000000000000000 R14: 00000000ffffffff R15: 0000000000000002
  FS:  0000000000000000(0000) GS:ffff88bc8b500000(0000) knlGS:0000000000000000
  CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
  CR2: 0000000000000000 CR3: 0000000002610001 CR4: 00000000001706e0
  DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
  DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
  Call Trace:
   ? show_trace_log_lvl+0x1c1/0x2d9
   ? show_trace_log_lvl+0x1c1/0x2d9
   ? set_affinity_irq+0xdc/0x1c0
   ? __die_body.cold+0x8/0xd
   ? die+0x2b/0x50
   ? do_trap+0x90/0x110
   ? bind_evtchn_to_cpu+0xdf/0xf0
   ? do_error_trap+0x65/0x80
   ? bind_evtchn_to_cpu+0xdf/0xf0
   ? exc_invalid_op+0x4e/0x70
   ? bind_evtchn_to_cpu+0xdf/0xf0
   ? asm_exc_invalid_op+0x12/0x20
   ? bind_evtchn_to_cpu+0xdf/0xf0
   ? bind_evtchn_to_cpu+0xc5/0xf0
   set_affinity_irq+0xdc/0x1c0
   irq_do_set_affinity+0x1d7/0x1f0
   irq_setup_affinity+0xd6/0x1a0
   irq_startup+0x8a/0xf0
   __setup_irq+0x639/0x6d0
   ? nvme_suspend+0x150/0x150
   request_threaded_irq+0x10c/0x180
   ? nvme_suspend+0x150/0x150
   pci_request_irq+0xa8/0xf0
   ? __blk_mq_free_request+0x74/0xa0
   queue_request_irq+0x6f/0x80
   nvme_create_queue+0x1af/0x200
   nvme_create_io_queues+0xbd/0xf0
   nvme_setup_io_queues+0x246/0x320
   ? nvme_irq_check+0x30/0x30
   nvme_reset_work+0x1c8/0x400
   process_one_work+0x1b0/0x350
   worker_thread+0x49/0x310
   ? process_one_work+0x350/0x350
   kthread+0x11b/0x140
   ? __kthread_bind_mask+0x60/0x60
   ret_from_fork+0x22/0x30
  Modules linked in:
  ---[ end trace a11715de1eee1873 ]---

Fixes: d46a78b05c0e ("xen: implement pirq type event channels")
Cc: stable@vger.kernel.org
Co-debugged-by: Andrew Panyakin <apanyaki@amazon.com>
Signed-off-by: Maximilian Heyne <mheyne@amazon.de>
---
 drivers/xen/events/events_base.c | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/drivers/xen/events/events_base.c b/drivers/xen/events/events_base.c
index b8cfea7812d6..3b9f080109d7 100644
--- a/drivers/xen/events/events_base.c
+++ b/drivers/xen/events/events_base.c
@@ -923,8 +923,8 @@ static void shutdown_pirq(struct irq_data *data)
 		return;
 
 	do_mask(info, EVT_MASK_REASON_EXPLICIT);
-	xen_evtchn_close(evtchn);
 	xen_irq_info_cleanup(info);
+	xen_evtchn_close(evtchn);
 }
 
 static void enable_pirq(struct irq_data *data)
@@ -956,6 +956,7 @@ EXPORT_SYMBOL_GPL(xen_irq_from_gsi);
 static void __unbind_from_irq(struct irq_info *info, unsigned int irq)
 {
 	evtchn_port_t evtchn;
+	bool close_evtchn = false;
 
 	if (!info) {
 		xen_irq_free_desc(irq);
@@ -975,7 +976,7 @@ static void __unbind_from_irq(struct irq_info *info, unsigned int irq)
 		struct xenbus_device *dev;
 
 		if (!info->is_static)
-			xen_evtchn_close(evtchn);
+			close_evtchn = true;
 
 		switch (info->type) {
 		case IRQT_VIRQ:
@@ -995,6 +996,9 @@ static void __unbind_from_irq(struct irq_info *info, unsigned int irq)
 		}
 
 		xen_irq_info_cleanup(info);
+
+		if (close_evtchn)
+			xen_evtchn_close(evtchn);
 	}
 
 	xen_free_irq(info);
-- 
2.40.1




Amazon Development Center Germany GmbH
Krausenstr. 38
10117 Berlin
Geschaeftsfuehrung: Christian Schlaeger, Jonathan Weiss
Eingetragen am Amtsgericht Charlottenburg unter HRB 149173 B
Sitz: Berlin
Ust-ID: DE 289 237 879





From xen-devel-bounces@lists.xenproject.org Wed Jan 24 16:47:35 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 24 Jan 2024 16:47:35 +0000
Received: from list by lists.xenproject.org with outflank-mailman.671160.1044360 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSgPJ-0006mZ-Mb; Wed, 24 Jan 2024 16:47:21 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 671160.1044360; Wed, 24 Jan 2024 16:47:21 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSgPJ-0006mS-Hz; Wed, 24 Jan 2024 16:47:21 +0000
Received: by outflank-mailman (input) for mailman id 671160;
 Wed, 24 Jan 2024 16:47:20 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=LRLw=JC=gmail.com=jandryuk@srs-se1.protection.inumbo.net>)
 id 1rSgPI-0006mG-CJ
 for xen-devel@lists.xenproject.org; Wed, 24 Jan 2024 16:47:20 +0000
Received: from mail-lj1-x231.google.com (mail-lj1-x231.google.com
 [2a00:1450:4864:20::231])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 36bcbc3f-bad8-11ee-9b0f-b553b5be7939;
 Wed, 24 Jan 2024 17:47:09 +0100 (CET)
Received: by mail-lj1-x231.google.com with SMTP id
 38308e7fff4ca-2ccec119587so73548781fa.0
 for <xen-devel@lists.xenproject.org>; Wed, 24 Jan 2024 08:47:09 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 36bcbc3f-bad8-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1706114828; x=1706719628; darn=lists.xenproject.org;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:from:to:cc:subject:date
         :message-id:reply-to;
        bh=M27HGgarpmQx+Rw68mVlwB59f0zBCIzGXPprd0IdXmU=;
        b=hcRG19v2COzbl9/Fheto9lwL/XFY7wSWIVv3oYfNCgfZL3fgsFDzv6uROSDZ1gz8px
         BBK6POmRJz0aIdURVXk0t1usstNaEIpv/4w/MV8xNjdQwc9VRcOjqen7ZKFf/aIHFRbz
         6Ty2tSUNaR1T0K8utLB0E7Uzi458/eTrgHGVBCl0rCc7efONqH42KUmEalpPVUnyIS0l
         4X6ZfHgDegEGnJaB1Ue7YauDTmP80JanM9nUk5qAEamNRfpCX1oFxArii9wRKy1XPwzx
         jMx9dZu206OzfimMycYAtNnJEvmkzyLIqqDFqjfLn6ygAhPXRcGOgXR6nPTyXG6mqFLl
         0twQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706114828; x=1706719628;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to;
        bh=M27HGgarpmQx+Rw68mVlwB59f0zBCIzGXPprd0IdXmU=;
        b=DfAICNQfzd6BadP2U2Iek/8ebc+iXV0ukiSZLoKB6Y73CvA4k/KS1J4/pq5rsMKct0
         MFiyxEtKjkQK8k0wF8usuiRml/MFU9SJzCYwbe3lSJJD6WTTGEd5nyYaQ9ll34R1UgDD
         lL77FGO3frQP3mmF755JHRus/ye+ZvzLk2W4pZWEwpbe58qL35wv9UOSBkufkGzYp8x4
         tBavM7d3+6ftDD4JZgSjHneD/A2iGxW3iOlm//m7S7iyRVwPQWfBEWgmP67zSQgrtIXt
         Zio5pnn6KJEuAbrSmHn9tF+v9ChiYgVcAYaxSGlnTdvikk1uL2w0sCPCKhBCvjDT00fi
         bKqA==
X-Gm-Message-State: AOJu0Ywlv8Bii0x2C6Y9ya6umQGwUb9YNI1Ht6ayaGEXjwib/j5PK/ML
	MUTC2rPUsDyMiTwm0LWi+sPZlP8e20iM0YbRq0Wt4WfjGrBGyYTBaAltljLeIJFG01Q1PNGcJrN
	ICUEgISUN6Cn//hRCx8nnSa5VM3E=
X-Google-Smtp-Source: AGHT+IFzjGw8dh/sQjyWnnY66whdokA8QXc7Z9m1SzC0ouPnQGeMkZjlAznYa0G5qSPOwvwvBPsRu0MAn53mR0z1SEE=
X-Received: by 2002:a2e:95c8:0:b0:2cc:6bf6:cdc6 with SMTP id
 y8-20020a2e95c8000000b002cc6bf6cdc6mr952822ljh.7.1706114828138; Wed, 24 Jan
 2024 08:47:08 -0800 (PST)
MIME-Version: 1.0
References: <20240122190934.52080-1-jandryuk@gmail.com> <0a02a53c-9163-428d-a5d9-6cf2234d7b9c@suse.com>
In-Reply-To: <0a02a53c-9163-428d-a5d9-6cf2234d7b9c@suse.com>
From: Jason Andryuk <jandryuk@gmail.com>
Date: Wed, 24 Jan 2024 11:46:56 -0500
Message-ID: <CAKf6xps_22hsOtJtr7+DbRO+UDs5sChHr=0Noq3g=Mw6QK7PjQ@mail.gmail.com>
Subject: Re: [PATCH] pmstat: Limit hypercalls under HWP
To: Jan Beulich <jbeulich@suse.com>
Cc: xen-devel@lists.xenproject.org
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

On Tue, Jan 23, 2024 at 3:17=E2=80=AFAM Jan Beulich <jbeulich@suse.com> wro=
te:
>
> On 22.01.2024 20:09, Jason Andryuk wrote:
> > When HWP is active, the cpufreq P-state information is not updated.  In
> > that case, return -ENODEV instead of bogus, incomplete info.  The xenpm
> > command already supports skipping results when -ENODEV is returned, so
> > it is re-used when -EOPNOTSUPP might be more accurate.
> >
> > Similarly, set_cpufreq_para() is not applicable when HWP is active.
> > Many of the options already checked the governor and were inaccessible,
> > but SCALING_MIN/MAX_FREQ was still accessible (though it would do
> > nothing).  Add an ealier HWP check to handle all cases.
> >
> > Signed-off-by: Jason Andryuk <jandryuk@gmail.com>
> > ---
> > `xenpm get-cpufreq-states` now doesn't return any output.  It also exit=
s
> > successfully since xenpm doesn't check the returns there.
>
> This isn't very nice. Is there nothing sensible that can be output
> instead in the HWP case? If not, I think it would help if
> inapplicability of the command would be indicated by at least one line
> of output. Or might it make sense to at least fall back to
> get-cpufreq-average in that case?

Sorry, I should have explained more, but, yes, not nice.  "No output
and exits with success" is how xenpm works if -ENODEV is received -
which I guess occurs when cpufreq is disabled (regardless of HWP).  I
found that surprising, but that behaviour is matched under HWP with
this patch.

Yes, `xenpm get-cpufreq-states` can be enhanced.  The re-use of ENODEV
was useful to make `xenpm get-cpufreq-average` output C-states but
skip P-states.  If EOPNOTSUPP is used, then that can differentiate
when HWP is used.  So `xenpm get-cpufreq-states` can print a message
when cpufreq is disabled, and a different one when P-States  are
unavailable.

Regards,
Jason


From xen-devel-bounces@lists.xenproject.org Wed Jan 24 16:54:23 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 24 Jan 2024 16:54:23 +0000
Received: from list by lists.xenproject.org with outflank-mailman.671164.1044369 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSgW0-0000w2-CU; Wed, 24 Jan 2024 16:54:16 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 671164.1044369; Wed, 24 Jan 2024 16:54:16 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSgW0-0000vv-9B; Wed, 24 Jan 2024 16:54:16 +0000
Received: by outflank-mailman (input) for mailman id 671164;
 Wed, 24 Jan 2024 16:54:15 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=LRLw=JC=gmail.com=jandryuk@srs-se1.protection.inumbo.net>)
 id 1rSgVz-0000vp-Cq
 for xen-devel@lists.xenproject.org; Wed, 24 Jan 2024 16:54:15 +0000
Received: from mail-qk1-x72c.google.com (mail-qk1-x72c.google.com
 [2607:f8b0:4864:20::72c])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 33c522d3-bad9-11ee-98f5-6d05b1d4d9a1;
 Wed, 24 Jan 2024 17:54:14 +0100 (CET)
Received: by mail-qk1-x72c.google.com with SMTP id
 af79cd13be357-7831aacdaffso500299685a.3
 for <xen-devel@lists.xenproject.org>; Wed, 24 Jan 2024 08:54:14 -0800 (PST)
Received: from pm2-ws13.praxislan02.com
 (207-172-141-204.s8906.c3-0.slvr-cbr1.lnh-slvr.md.cable.rcncustomer.com.
 [207.172.141.204]) by smtp.gmail.com with ESMTPSA id
 u15-20020a05620a022f00b00783a46b6f5bsm2312376qkm.27.2024.01.24.08.54.11
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 24 Jan 2024 08:54:11 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 33c522d3-bad9-11ee-98f5-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1706115252; x=1706720052; darn=lists.xenproject.org;
        h=content-transfer-encoding:mime-version:message-id:date:subject:cc
         :to:from:from:to:cc:subject:date:message-id:reply-to;
        bh=AN401EloX0DQRhSCQt652byeIy6eWfP+Mah5wo4s254=;
        b=QgiaO2yCU8CwqXfk9/lJjxohvJgk3rCdVqj+3+eeSkv6XRIjs9JDTuvYHXRaVz2Ovg
         hvMu0MWBusvJTXZ0NynJJZlE/7vnOK3pJiqjvTbm8ssN4ndZrwYIuE7COHSJDEvKVQ6R
         yvA710AXjpkbIRHGhDru2UnzWSu2Ded4uXPTLBJ37lALwJhUbI8lxrTEOs1irwBb1bTy
         JyIxIobn81HONT5+OGqiZ577EXs63mDKazDy8T9m/ImicD5kiXeOdGPunoSwr+AFESrz
         6b0jOlmWuqNWvB90sIa04p9XKpDNC7+If4FfWWWxPEse8yw0Jsx5RYqLROl6lvynqHHD
         U1UA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706115252; x=1706720052;
        h=content-transfer-encoding:mime-version:message-id:date:subject:cc
         :to:from:x-gm-message-state:from:to:cc:subject:date:message-id
         :reply-to;
        bh=AN401EloX0DQRhSCQt652byeIy6eWfP+Mah5wo4s254=;
        b=ijnjrG5l58U7o8rxQ0XWc99bgsYVr6/N8mCcJ70Y/+1uxWxClMJv5t3hSvizNL1Yrl
         KnoPZ8GAfanryzZbWoeuYv/SxpKJcnzZiSzGTq0DRuGF6fahTA07gBiQAt66KfeFc9kM
         UOfRFL3q2Het9Bh0Wx1Vt6+yhsHD/GLlIUpCEJyaPvc4jTyRHfz2PRa2GURjcKvMMTS7
         0J3Z5LQ/TSt+1+IaUy60++PXgiJAA3nZLBKq/4krh2jmhd+9egDd8wh90p2fG7/pQgeu
         3CBpNXkdYspsjqWVjC7zwulUMQtddu65/qnoB9/Xb4EdWBwzWLEsbS1t69h1b+9E7yMO
         P5CA==
X-Gm-Message-State: AOJu0YyNW1vVM/oAsOOZZzaIeYfWbq+gF5746aIO8PoIVHq4RtuDoHJI
	C1QvBW/tx9IgmbCXRiflAzBZiuvtXAt3cYHWE2OlWABbElW9FKKIq+oIHV49
X-Google-Smtp-Source: AGHT+IHI+p0X72YhrAC3yzs+ukwwIiEZ3TUc+I/Cyi93Zpuufv6VyKhPc9ByCdHS1+HHyzBcocbKDg==
X-Received: by 2002:a05:620a:254a:b0:783:5b45:8570 with SMTP id s10-20020a05620a254a00b007835b458570mr10537546qko.46.1706115251982;
        Wed, 24 Jan 2024 08:54:11 -0800 (PST)
From: Jason Andryuk <jandryuk@gmail.com>
To: xen-devel@lists.xenproject.org
Cc: Jason Andryuk <jandryuk@gmail.com>
Subject: Linux Xen PV CPA W^X violation false-positives
Date: Wed, 24 Jan 2024 11:54:01 -0500
Message-ID: <20240124165401.35784-1-jandryuk@gmail.com>
X-Mailer: git-send-email 2.43.0
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Xen PV domains show CPA W^X violations like:

CPA detected W^X violation: 0000000000000064 -> 0000000000000067 range: 0xffff888000010000 - 0xffff888000010fff PFN 10
WARNING: CPU: 0 PID: 30 at arch/x86/mm/pat/set_memory.c:613 __change_page_attr_set_clr+0x113a/0x11c0
Modules linked in: xt_physdev xt_MASQUERADE iptable_nat nf_nat nf_conntrack libcrc32c nf_defrag_ipv4 ip_tables x_tables xen_argo(O)
CPU: 0 PID: 30 Comm: kworker/0:2 Tainted: G           O       6.1.38 #1
Workqueue: events bpf_prog_free_deferred
RIP: e030:__change_page_attr_set_clr+0x113a/0x11c0
Code: 4c 89 f1 4c 89 e2 4c 89 d6 4c 89 8d 70 ff ff ff 4d 8d 86 ff 0f 00 00 48 c7 c7 f0 3c da 81 c6 05 d0 0e 0e 01 01 e8 f6 71 00 00 <0f> 0b 4c 8b 8d 70 ff ff ff e9 2a fd ff ff 48 8b 85 60 ff ff ff 48
RSP: e02b:ffffc90000367c48 EFLAGS: 00010282
RAX: 0000000000000000 RBX: 000ffffffffef064 RCX: 0000000000000000
RDX: 0000000000000003 RSI: 00000000fffff7ff RDI: 00000000ffffffff
RBP: ffffc90000367d48 R08: 0000000000000000 R09: ffffc90000367aa0
R10: 0000000000000001 R11: 0000000000000001 R12: 0000000000000067
R13: 0000000000000001 R14: ffff888000010000 R15: ffffc90000367d60
FS:  0000000000000000(0000) GS:ffff88800b800000(0000) knlGS:0000000000000000
CS:  e030 DS: 0000 ES: 0000 CR0: 0000000080050033
CR2: 00007fdbaeda01c0 CR3: 0000000004312000 CR4: 0000000000050660
Call Trace:
 <TASK>
 ? show_regs.cold+0x1a/0x1f
 ? __change_page_attr_set_clr+0x113a/0x11c0
 ? __warn+0x7b/0xc0
 ? __change_page_attr_set_clr+0x113a/0x11c0
 ? report_bug+0x111/0x1a0
 ? handle_bug+0x4d/0xa0
 ? exc_invalid_op+0x19/0x70
 ? asm_exc_invalid_op+0x1b/0x20
 ? __change_page_attr_set_clr+0x113a/0x11c0
 ? __change_page_attr_set_clr+0x113a/0x11c0
 ? debug_smp_processor_id+0x17/0x20
 ? ___cache_free+0x2e/0x1e0
 ? _raw_spin_unlock+0x1e/0x40
 ? __purge_vmap_area_lazy+0x2ea/0x6b0
 set_direct_map_default_noflush+0x7c/0xa0
 __vunmap+0x1ac/0x280
 __vfree+0x1d/0x60
 vfree+0x27/0x40
 __bpf_prog_free+0x44/0x50
 bpf_prog_free_deferred+0x104/0x120
 process_one_work+0x1ca/0x3d0
 ? process_one_work+0x3d0/0x3d0
 worker_thread+0x45/0x3c0
 ? process_one_work+0x3d0/0x3d0
 kthread+0xe2/0x110
 ? kthread_complete_and_exit+0x20/0x20
 ret_from_fork+0x1f/0x30
 </TASK>
---[ end trace 0000000000000000 ]---

Xen provides a set of page tables that the guest executes out of when it
starts.  The L1 entries are shared between level2_ident_pgt and
level2_kernel_pgt, and xen_setup_kernel_pagetable() sets the NX bit in
the level2_ident_pgt entries.  verify_rwx() only checks the l1 entry and
reports a false-positive violation.

Here is a dump of some kernel virtual addresses and the corresponding
L1 and L2 entries:
This is the start of the directmap (ident) and they have NX (bit 63) set
in the PMD.
ndvm-pv (1): [    0.466778] va=ffff888000000000 pte=0010000000000027 level: 1
ndvm-pv (1): [    0.466788] va=ffff888000000000 pmd=800000000242c067 level: 2
Directmap for kernel text:
ndvm-pv (1): [    0.466795] va=ffff888001000000 pte=0010000001000065 level: 1
ndvm-pv (1): [    0.466801] va=ffff888001000000 pmd=8000000002434067 level: 2
ndvm-pv (1): [    0.466807] va=ffff888001010000 pte=0010000001010065 level: 1
ndvm-pv (1): [    0.466814] va=ffff888001010000 pmd=8000000002434067 level: 2
The start of the kernel text highmap is unmapped:
ndvm-pv (1): [    0.466820] va=ffffffff80000000 pte=0000000000000000 level: 3
ndvm-pv (1): [    0.466826] va=ffffffff80000000 pmd=0000000000000000 level: 3
Kernel PMD for .text has NX bit clear
ndvm-pv (1): [    0.466832] va=ffffffff81000000 pte=0010000001000065 level: 1
ndvm-pv (1): [    0.466838] va=ffffffff81000000 pmd=0000000002434067 level: 2
Kernel PTE for rodata_end has NX bit set
ndvm-pv (1): [    0.466846] va=ffffffff81e62000 pte=8010000001e62025 level: 1
ndvm-pv (1): [    0.466874] va=ffffffff81e62000 pmd=000000000243b067 level: 2
Directmap of rodata_end
ndvm-pv (1): [    0.466907] va=ffff888001e62000 pte=8010000001e62025 level: 1
ndvm-pv (1): [    0.466913] va=ffff888001e62000 pmd=800000000243b067 level: 2
Directmap of a low RAM address
ndvm-pv (1): [    0.466920] va=ffff888000010000 pte=0010000000010027 level: 1
ndvm-pv (1): [    0.466926] va=ffff888000010000 pmd=800000000242c067 level: 2
Directmap of another RAM address close to but below kernel text
ndvm-pv (1): [    0.466932] va=ffff88800096c000 pte=001000000096c027 level: 1
ndvm-pv (1): [    0.466938] va=ffff88800096c000 pmd=8000000002430067 level: 2

Here are some L2 entries showing the differing NX bits for l2_ident vs.
l2_kernel while they point at the same L1 addresses
ndvm-pv (1): [    0.466944]  l2_ident[  0] pmd=800000000242c067
ndvm-pv (1): [    0.466949]  l2_ident[  1] pmd=800000000242d067
ndvm-pv (1): [    0.466955]  l2_ident[  8] pmd=8000000002434067
ndvm-pv (1): [    0.466959]  l2_ident[  9] pmd=8000000002435067
ndvm-pv (1): [    0.466964]  l2_ident[ 14] pmd=800000000243a067
ndvm-pv (1): [    0.466969]  l2_ident[ 15] pmd=800000000243b067
ndvm-pv (1): [    0.466974] l2_kernel[  8] pmd=0000000002434067
ndvm-pv (1): [    0.466979] l2_kernel[  9] pmd=0000000002435067
ndvm-pv (1): [    0.466984] l2_kernel[ 14] pmd=000000000243a067
ndvm-pv (1): [    0.466989] l2_kernel[ 15] pmd=000000000243b067

One option is to add a fallback check for verify_rwx() to check the PMD
permissions to silence the warning.  Something like below.  I think it's
not readily generalizable as it hardcodes checking the PMD.  That works
for Xen where L1 PTEs are always used, but wouldn't work for Non-Xen.

The other option would be to duplicate L1 page tables.  Xen PV doesn't
support large pages, so the kernel highmap can't use large pages.  The
increased memory would add up though.

Regards,
Jason
---
 arch/x86/mm/pat/set_memory.c | 14 ++++++++++++++
 1 file changed, 14 insertions(+)

diff --git a/arch/x86/mm/pat/set_memory.c b/arch/x86/mm/pat/set_memory.c
index e9b448d1b1b7..904129b411ee 100644
--- a/arch/x86/mm/pat/set_memory.c
+++ b/arch/x86/mm/pat/set_memory.c
@@ -641,6 +641,20 @@ static inline pgprot_t verify_rwx(pgprot_t old, pgprot_t new, unsigned long star
 	if ((pgprot_val(new) & (_PAGE_RW | _PAGE_NX)) != _PAGE_RW)
 		return new;
 
+	if ((pgprot_val(new) & (_PAGE_RW | _PAGE_NX)) == _PAGE_RW) {
+		pmd_t *pmd = lookup_pmd_address(start);
+
+		if (pmd && pmd_val(*pmd) & _PAGE_NX) {
+			pr_debug_once("CPA PMD 0x%016lx NX prevents PTE W^X violation: %016llx -> %016llx range: 0x%016lx - 0x%016lx PFN %lx\n",
+				      pmd_flags(*pmd),
+				      (unsigned long long)pgprot_val(old),
+				      (unsigned long long)pgprot_val(new),
+				      start, end, pfn);
+
+			return new;
+		}
+	}
+
 	end = start + npg * PAGE_SIZE - 1;
 	WARN_ONCE(1, "CPA detected W^X violation: %016llx -> %016llx range: 0x%016lx - 0x%016lx PFN %lx\n",
 		  (unsigned long long)pgprot_val(old),
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Wed Jan 24 17:23:10 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 24 Jan 2024 17:23:10 +0000
Received: from list by lists.xenproject.org with outflank-mailman.671171.1044380 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSgxr-0007bk-Ks; Wed, 24 Jan 2024 17:23:03 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 671171.1044380; Wed, 24 Jan 2024 17:23:03 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSgxr-0007bd-Fq; Wed, 24 Jan 2024 17:23:03 +0000
Received: by outflank-mailman (input) for mailman id 671171;
 Wed, 24 Jan 2024 17:23:02 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=Zgc/=JC=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1rSgxq-0007bX-N2
 for xen-devel@lists.xenproject.org; Wed, 24 Jan 2024 17:23:02 +0000
Received: from mail-wr1-x430.google.com (mail-wr1-x430.google.com
 [2a00:1450:4864:20::430])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 3994c39c-badd-11ee-98f5-6d05b1d4d9a1;
 Wed, 24 Jan 2024 18:23:01 +0100 (CET)
Received: by mail-wr1-x430.google.com with SMTP id
 ffacd0b85a97d-338aca547d9so4572787f8f.0
 for <xen-devel@lists.xenproject.org>; Wed, 24 Jan 2024 09:23:01 -0800 (PST)
Received: from [10.80.67.30] (default-46-102-197-194.interdsl.co.uk.
 [46.102.197.194]) by smtp.gmail.com with ESMTPSA id
 p12-20020adfce0c000000b0033865f08f2asm14302733wrn.34.2024.01.24.09.23.00
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 24 Jan 2024 09:23:00 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 3994c39c-badd-11ee-98f5-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1706116981; x=1706721781; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=SSA19w1x/UH79pVuEe9Q4jKlI9k5zfXjQivwqOoSS7A=;
        b=Si+zwmEQ2i42td8Z7XwjLbnMs9UunxeOcGWpfaJTEGznWir8Ztd96Gm3uxpjNbDwXX
         7V6PPSJOgqETVBi8/2h5oX8ACnWQ3F0dRx3X1wVX8qLXfZ0DKDoaS2HrS36qiXHwcsSb
         5m4xJnh297kaCaKxaSDoARoacSWkU038qD1aY=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706116981; x=1706721781;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=SSA19w1x/UH79pVuEe9Q4jKlI9k5zfXjQivwqOoSS7A=;
        b=dmPrBsk7m7ldSWTCHDQdPEsnnNqXrVRvgE4vUZYGNEmEwlmn5cbin80MZjF7xg7Yse
         SJJW2T/8MueTt385Lf+3P6L849gJnzR/wm/K85mAMEx/Ln2NcEtPSZPoik/H+mJeOIQL
         12yMTRWgcBYflKTJGpKjOmlqbnLwVbZpyDiWK8DThwn4LhAGZYDoTA/l4FAd2kk0L6pJ
         Owrwjry6e4dKgEZzeZME8/7/m2hi91fa54Fa/0vaHnXvk9j9DqjptGWmBMfq3JHHzr3V
         o0aYy7m+V0KQYM0+uZSJbRKxUbz/M+M8/XN80i7xkqs7OIV2SvA1Qd9z2MxZH8zZgx4j
         /uOw==
X-Gm-Message-State: AOJu0YwFZUNfgvvMWpcfFlaTioOrq6fv/8X2HTP9jd3O7Ij6b200ItUs
	zB2xq3m3IheDSn/OsOFqHRnWmPEplE61ENW9UbLRCB56CpqEGX4RBJci4yA+hvc=
X-Google-Smtp-Source: AGHT+IExbcQrFYV6R4dq4zoUhgDJjX6ZEZnJEfRumv6lx9rb770xm3jd+iu8DqjOXdPk72oZ6ni7bw==
X-Received: by 2002:a5d:6705:0:b0:337:32ef:177b with SMTP id o5-20020a5d6705000000b0033732ef177bmr374706wru.38.1706116980787;
        Wed, 24 Jan 2024 09:23:00 -0800 (PST)
Message-ID: <95a1f94e-7c82-4996-8f24-87c6628bc81a@citrix.com>
Date: Wed, 24 Jan 2024 17:23:00 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] x86/ucode: Fix stability of the Raw CPU Policy rescan
Content-Language: en-GB
To: Jan Beulich <jbeulich@suse.com>
Cc: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Wei Liu <wl@xen.org>, Xen-devel <xen-devel@lists.xenproject.org>
References: <20240123205948.1782556-1-andrew.cooper3@citrix.com>
 <090f64ae-ecf3-4edc-a6c6-8be3a09ea1ba@suse.com>
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 xsFNBFLhNn8BEADVhE+Hb8i0GV6mihnnr/uiQQdPF8kUoFzCOPXkf7jQ5sLYeJa0cQi6Penp
 VtiFYznTairnVsN5J+ujSTIb+OlMSJUWV4opS7WVNnxHbFTPYZVQ3erv7NKc2iVizCRZ2Kxn
 srM1oPXWRic8BIAdYOKOloF2300SL/bIpeD+x7h3w9B/qez7nOin5NzkxgFoaUeIal12pXSR
 Q354FKFoy6Vh96gc4VRqte3jw8mPuJQpfws+Pb+swvSf/i1q1+1I4jsRQQh2m6OTADHIqg2E
 ofTYAEh7R5HfPx0EXoEDMdRjOeKn8+vvkAwhviWXTHlG3R1QkbE5M/oywnZ83udJmi+lxjJ5
 YhQ5IzomvJ16H0Bq+TLyVLO/VRksp1VR9HxCzItLNCS8PdpYYz5TC204ViycobYU65WMpzWe
 LFAGn8jSS25XIpqv0Y9k87dLbctKKA14Ifw2kq5OIVu2FuX+3i446JOa2vpCI9GcjCzi3oHV
 e00bzYiHMIl0FICrNJU0Kjho8pdo0m2uxkn6SYEpogAy9pnatUlO+erL4LqFUO7GXSdBRbw5
 gNt25XTLdSFuZtMxkY3tq8MFss5QnjhehCVPEpE6y9ZjI4XB8ad1G4oBHVGK5LMsvg22PfMJ
 ISWFSHoF/B5+lHkCKWkFxZ0gZn33ju5n6/FOdEx4B8cMJt+cWwARAQABzSlBbmRyZXcgQ29v
 cGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPsLBegQTAQgAJAIbAwULCQgHAwUVCgkI
 CwUWAgMBAAIeAQIXgAUCWKD95wIZAQAKCRBlw/kGpdefoHbdD/9AIoR3k6fKl+RFiFpyAhvO
 59ttDFI7nIAnlYngev2XUR3acFElJATHSDO0ju+hqWqAb8kVijXLops0gOfqt3VPZq9cuHlh
 IMDquatGLzAadfFx2eQYIYT+FYuMoPZy/aTUazmJIDVxP7L383grjIkn+7tAv+qeDfE+txL4
 SAm1UHNvmdfgL2/lcmL3xRh7sub3nJilM93RWX1Pe5LBSDXO45uzCGEdst6uSlzYR/MEr+5Z
 JQQ32JV64zwvf/aKaagSQSQMYNX9JFgfZ3TKWC1KJQbX5ssoX/5hNLqxMcZV3TN7kU8I3kjK
 mPec9+1nECOjjJSO/h4P0sBZyIUGfguwzhEeGf4sMCuSEM4xjCnwiBwftR17sr0spYcOpqET
 ZGcAmyYcNjy6CYadNCnfR40vhhWuCfNCBzWnUW0lFoo12wb0YnzoOLjvfD6OL3JjIUJNOmJy
 RCsJ5IA/Iz33RhSVRmROu+TztwuThClw63g7+hoyewv7BemKyuU6FTVhjjW+XUWmS/FzknSi
 dAG+insr0746cTPpSkGl3KAXeWDGJzve7/SBBfyznWCMGaf8E2P1oOdIZRxHgWj0zNr1+ooF
 /PzgLPiCI4OMUttTlEKChgbUTQ+5o0P080JojqfXwbPAyumbaYcQNiH1/xYbJdOFSiBv9rpt
 TQTBLzDKXok86M7BTQRS4TZ/ARAAkgqudHsp+hd82UVkvgnlqZjzz2vyrYfz7bkPtXaGb9H4
 Rfo7mQsEQavEBdWWjbga6eMnDqtu+FC+qeTGYebToxEyp2lKDSoAsvt8w82tIlP/EbmRbDVn
 7bhjBlfRcFjVYw8uVDPptT0TV47vpoCVkTwcyb6OltJrvg/QzV9f07DJswuda1JH3/qvYu0p
 vjPnYvCq4NsqY2XSdAJ02HrdYPFtNyPEntu1n1KK+gJrstjtw7KsZ4ygXYrsm/oCBiVW/OgU
 g/XIlGErkrxe4vQvJyVwg6YH653YTX5hLLUEL1NS4TCo47RP+wi6y+TnuAL36UtK/uFyEuPy
 wwrDVcC4cIFhYSfsO0BumEI65yu7a8aHbGfq2lW251UcoU48Z27ZUUZd2Dr6O/n8poQHbaTd
 6bJJSjzGGHZVbRP9UQ3lkmkmc0+XCHmj5WhwNNYjgbbmML7y0fsJT5RgvefAIFfHBg7fTY/i
 kBEimoUsTEQz+N4hbKwo1hULfVxDJStE4sbPhjbsPCrlXf6W9CxSyQ0qmZ2bXsLQYRj2xqd1
 bpA+1o1j2N4/au1R/uSiUFjewJdT/LX1EklKDcQwpk06Af/N7VZtSfEJeRV04unbsKVXWZAk
 uAJyDDKN99ziC0Wz5kcPyVD1HNf8bgaqGDzrv3TfYjwqayRFcMf7xJaL9xXedMcAEQEAAcLB
 XwQYAQgACQUCUuE2fwIbDAAKCRBlw/kGpdefoG4XEACD1Qf/er8EA7g23HMxYWd3FXHThrVQ
 HgiGdk5Yh632vjOm9L4sd/GCEACVQKjsu98e8o3ysitFlznEns5EAAXEbITrgKWXDDUWGYxd
 pnjj2u+GkVdsOAGk0kxczX6s+VRBhpbBI2PWnOsRJgU2n10PZ3mZD4Xu9kU2IXYmuW+e5KCA
 vTArRUdCrAtIa1k01sPipPPw6dfxx2e5asy21YOytzxuWFfJTGnVxZZSCyLUO83sh6OZhJkk
 b9rxL9wPmpN/t2IPaEKoAc0FTQZS36wAMOXkBh24PQ9gaLJvfPKpNzGD8XWR5HHF0NLIJhgg
 4ZlEXQ2fVp3XrtocHqhu4UZR4koCijgB8sB7Tb0GCpwK+C4UePdFLfhKyRdSXuvY3AHJd4CP
 4JzW0Bzq/WXY3XMOzUTYApGQpnUpdOmuQSfpV9MQO+/jo7r6yPbxT7CwRS5dcQPzUiuHLK9i
 nvjREdh84qycnx0/6dDroYhp0DFv4udxuAvt1h4wGwTPRQZerSm4xaYegEFusyhbZrI0U9tJ
 B8WrhBLXDiYlyJT6zOV2yZFuW47VrLsjYnHwn27hmxTC/7tvG3euCklmkn9Sl9IAKFu29RSo
 d5bD8kMSCYsTqtTfT6W4A3qHGvIDta3ptLYpIAOD2sY3GYq2nf3Bbzx81wZK14JdDDHUX2Rs
 6+ahAA==
In-Reply-To: <090f64ae-ecf3-4edc-a6c6-8be3a09ea1ba@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 24/01/2024 3:37 pm, Jan Beulich wrote:
> On 23.01.2024 21:59, Andrew Cooper wrote:
>> Always run microcode_update_helper() on the BSP, so the the updated Raw CPU
>> policy doesn't get non-BSP topology details included.
> Wouldn't it be better (and consistent with ...
>
>> Have calculate_raw_cpu_policy() clear the instantanious XSTATE sizes.  The
>> value XCR0 | MSR_XSS had when we scanned the policy isn't terribly interesting
>> to report.
> ... this) to purge these details from the raw policy as well then?

I did spend some time considering this.

Rerunning on the same CPU is more resilient to new topology leaves, so
we'd want to be doing that irrespective.

The XCR0/XSS state really is transient, and the useful information is
everywhere else in leaf 0xd.

>
>> When CPUID Masking is active, it affects CPUID instructions issued by Xen
>> too.  Transiently disable masking to get a clean scan.
>>
>> Fixes: 694d79ed5aac ("x86/ucode: Refresh raw CPU policy after microcode load")
>> Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
> Irrespective of the question above, I'm also okay with the change as is:
> Reviewed-by: Jan Beulich <jbeulich@suse.com>

Thanks.

~Andrew


From xen-devel-bounces@lists.xenproject.org Wed Jan 24 17:43:48 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 24 Jan 2024 17:43:48 +0000
Received: from list by lists.xenproject.org with outflank-mailman.671177.1044389 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rShHr-0003ex-9i; Wed, 24 Jan 2024 17:43:43 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 671177.1044389; Wed, 24 Jan 2024 17:43:43 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rShHr-0003eq-6x; Wed, 24 Jan 2024 17:43:43 +0000
Received: by outflank-mailman (input) for mailman id 671177;
 Wed, 24 Jan 2024 17:43:41 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=V3ap=JC=cloud.com=roger.pau@srs-se1.protection.inumbo.net>)
 id 1rShHp-0003ef-Ka
 for xen-devel@lists.xenproject.org; Wed, 24 Jan 2024 17:43:41 +0000
Received: from mail-wm1-x332.google.com (mail-wm1-x332.google.com
 [2a00:1450:4864:20::332])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 1bb8f327-bae0-11ee-9b0f-b553b5be7939;
 Wed, 24 Jan 2024 18:43:39 +0100 (CET)
Received: by mail-wm1-x332.google.com with SMTP id
 5b1f17b1804b1-40e800461baso68570865e9.3
 for <xen-devel@lists.xenproject.org>; Wed, 24 Jan 2024 09:43:39 -0800 (PST)
Received: from localhost ([213.195.118.74]) by smtp.gmail.com with ESMTPSA id
 h14-20020a05600c314e00b0040e527602c8sm354667wmo.9.2024.01.24.09.43.38
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 24 Jan 2024 09:43:38 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 1bb8f327-bae0-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1706118218; x=1706723018; darn=lists.xenproject.org;
        h=content-transfer-encoding:mime-version:message-id:date:subject:cc
         :to:from:from:to:cc:subject:date:message-id:reply-to;
        bh=/ktZPZB25+rNGngPEJC3SNP1hcPRwFDLAedq3xcvo5U=;
        b=EV/qU6VbObYCcC/NbbBhlTqiHAdvIe7FMkF4Iqxlas80IalZbFsGland8jvxXMJ64x
         qpfXu1f9SoUdr/MNHSRlMf3+bmnVYa/8KIu945tswVW1RCQ9jwiD66fNKJonXbSixtl6
         VGd6+7IAoFZpiZzB7qpj2j6Ph70Hfh1Qpin4M=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706118218; x=1706723018;
        h=content-transfer-encoding:mime-version:message-id:date:subject:cc
         :to:from:x-gm-message-state:from:to:cc:subject:date:message-id
         :reply-to;
        bh=/ktZPZB25+rNGngPEJC3SNP1hcPRwFDLAedq3xcvo5U=;
        b=UYnUjBbJA8BzsPwk6PsIm5OOCdq6owDt0GnlrnmF+hjYayyBTcYllgfLQaVKiriR8U
         y/sp2377/JFNwtda3A3fz/ng8ePeRjcvv6Un4YqXd6peeBlpRjpipv+xD00tLAbzkFoF
         WgSyQiHVC8QYi+oe4Wt7pJ4W1mRGO4VuJ43dkfmEb9dJ49ckECv0US7+neVE1i/uipot
         EqbyRIZ+aZStDfD9VlxsRDXj5a1VwAzs+ZDKkzdQ26c2V0V1F023uwIaUOUdsRqBqB97
         kfChf/pMiJQ9/lCZFaO/vI3hXJM2WlIRFmLO5Fw7OAVq4VpW+KhLzJEc+m0URgqPtwLS
         BkBA==
X-Gm-Message-State: AOJu0YxmPHuLCRJw63/1plE6DC7zfpP7betMi1hdnWHoichEB3qvv8L6
	nFlqHRUmls5dBFtJR1LJJ9VQjxtrlB2Vc/fyxBWM2QTSc7JcYaj4mj1Sz5GAOpfOIsxc5LJvQdz
	4
X-Google-Smtp-Source: AGHT+IGYaUOoQLyPKqq8U01f2eZx0W5MiQAdNqHxbMGItcNIuiBqT0zpODnmZdY+i7h2Bo4OmhjG6Q==
X-Received: by 2002:a05:600c:3b0e:b0:40e:bfbc:76aa with SMTP id m14-20020a05600c3b0e00b0040ebfbc76aamr827255wms.188.1706118218550;
        Wed, 24 Jan 2024 09:43:38 -0800 (PST)
From: Roger Pau Monne <roger.pau@citrix.com>
To: xen-devel@lists.xenproject.org
Cc: Roger Pau Monne <roger.pau@citrix.com>,
	Paul Durrant <paul@xen.org>,
	Jan Beulich <jbeulich@suse.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Wei Liu <wl@xen.org>,
	Oleksii Kurochko <oleksii.kurochko@gmail.com>,
	Community Manager <community.manager@xenproject.org>,
	Lukasz Hawrylko <lukasz@hawrylko.pl>,
	"Daniel P. Smith" <dpsmith@apertussolutions.com>,
	=?UTF-8?q?Mateusz=20M=C3=B3wka?= <mateusz.mowka@intel.com>
Subject: [PATCH v5 0/3] x86/iommu: improve setup time of hwdom IOMMU
Date: Wed, 24 Jan 2024 18:29:50 +0100
Message-ID: <20240124172953.29814-1-roger.pau@citrix.com>
X-Mailer: git-send-email 2.43.0
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Hello,

The aim of the series is to reduce boot time setup of IOMMU page tables
for dom0.

This patches rework the hardware domain IOMMU setup to use a rangeset
instead of iterating over all addresses up to the max RAM page.  See
patch 2/3 for performance figures.

Jan: I've kept your RB in patch 1 with the off-by-one adjustments, and
dropped it for patch 2 with the addition of the default label in the
switch over the e820 ranges.  Such default label is required to continue
to deal equally with the  ACPI and NVS ranges.

Thanks, Roger.

Roger Pau Monne (3):
  x86/iommu: remove regions not to be mapped
  x86/iommu: switch hwdom IOMMU to use a rangeset
  x86/iommu: cleanup unused functions

 CHANGELOG.md                        |   2 +
 xen/arch/x86/hvm/io.c               |  15 ++-
 xen/arch/x86/include/asm/hvm/io.h   |   4 +-
 xen/arch/x86/include/asm/setup.h    |   2 +-
 xen/arch/x86/setup.c                |  81 ++++++------
 xen/arch/x86/tboot.c                |   2 +-
 xen/drivers/passthrough/x86/iommu.c | 196 ++++++++++++----------------
 7 files changed, 146 insertions(+), 156 deletions(-)

-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Wed Jan 24 17:43:48 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 24 Jan 2024 17:43:48 +0000
Received: from list by lists.xenproject.org with outflank-mailman.671179.1044409 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rShHt-00047u-ML; Wed, 24 Jan 2024 17:43:45 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 671179.1044409; Wed, 24 Jan 2024 17:43:45 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rShHt-00047n-Jg; Wed, 24 Jan 2024 17:43:45 +0000
Received: by outflank-mailman (input) for mailman id 671179;
 Wed, 24 Jan 2024 17:43:43 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=V3ap=JC=cloud.com=roger.pau@srs-se1.protection.inumbo.net>)
 id 1rShHr-0003ef-Gl
 for xen-devel@lists.xenproject.org; Wed, 24 Jan 2024 17:43:43 +0000
Received: from mail-wm1-x32d.google.com (mail-wm1-x32d.google.com
 [2a00:1450:4864:20::32d])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 1ce3a92c-bae0-11ee-9b0f-b553b5be7939;
 Wed, 24 Jan 2024 18:43:41 +0100 (CET)
Received: by mail-wm1-x32d.google.com with SMTP id
 5b1f17b1804b1-40eb0836f8dso31423565e9.2
 for <xen-devel@lists.xenproject.org>; Wed, 24 Jan 2024 09:43:41 -0800 (PST)
Received: from localhost ([213.195.118.74]) by smtp.gmail.com with ESMTPSA id
 t3-20020a05600c450300b0040d5ae2906esm327184wmo.30.2024.01.24.09.43.40
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 24 Jan 2024 09:43:40 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 1ce3a92c-bae0-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1706118221; x=1706723021; darn=lists.xenproject.org;
        h=content-transfer-encoding:mime-version:references:in-reply-to
         :message-id:date:subject:cc:to:from:from:to:cc:subject:date
         :message-id:reply-to;
        bh=zJJnNGbJJMDiPLfKGkoshyel4WrLYy7Bf15l7HNG1jU=;
        b=N5lqyTIycGwVSAIb3W7MA3JS3OWPKiHBtXd881KSATskCDEYraFWyctZnwvKew6mef
         Bv7A+uIrsIaCdjJp5qP5KL2Q7x9FmvwIhWUNcTtPtrDhe3PBY8OBrpVoN6ELH9JFEH4t
         RaZFaR5iXnwZZwLWLEaX91fZJEk8/dMUsaCrI=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706118221; x=1706723021;
        h=content-transfer-encoding:mime-version:references:in-reply-to
         :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to;
        bh=zJJnNGbJJMDiPLfKGkoshyel4WrLYy7Bf15l7HNG1jU=;
        b=jQK8MjsbTlo1nwWm+cd/IXAItTeNTLim+HZHl4OrJs197j8MoSq+3fcWIM4v0HTVne
         RNZttSGw6XIwmKs1HGquycH5x0VJdxYRR0IT61H7JsLMyXMpCyu6LgfcvX9gD6nShwHr
         xqrkvVII+8+1V22Lskslrjsb7Hr/4IuWnsy/zSYTaD7flIT6F/Dzqm+B6tDxIzmzGACH
         LN3fKPs3KvhQUbwXMMsZ9PHJkpuZFzZ2c+5P536dElgzmIkTa6//fEcXw8zN7sTgSm4S
         pJOuP9L55a0leT1jTNS1PD00Ry4b7QOfJhxaIBJEEwWaB+aroEiDG7WMCVGw7nc2zA1i
         P8aw==
X-Gm-Message-State: AOJu0YyAbuMePNlk1lNEW4QWvMFHa66vJR2S6ATaJvb1wynXlNIpQJja
	3YufBKbrZ4Freu4lWbzJw2TlXNrrpC/TG3d006GeRahw+OrMLjnDaFAl7F5y+opD0dyNjNP6S6r
	F
X-Google-Smtp-Source: AGHT+IHw8o2+5Td5uIeu9JZ/ycI6dcz5hmMjUeBh/8s7ZUz6E1YbHcxF8gi6kT+opFj/AgCaiyaD2g==
X-Received: by 2002:a7b:cb96:0:b0:40e:7597:42bb with SMTP id m22-20020a7bcb96000000b0040e759742bbmr1312051wmi.181.1706118220923;
        Wed, 24 Jan 2024 09:43:40 -0800 (PST)
From: Roger Pau Monne <roger.pau@citrix.com>
To: xen-devel@lists.xenproject.org
Cc: Roger Pau Monne <roger.pau@citrix.com>,
	Oleksii Kurochko <oleksii.kurochko@gmail.com>,
	Community Manager <community.manager@xenproject.org>,
	Jan Beulich <jbeulich@suse.com>,
	Paul Durrant <paul@xen.org>
Subject: [PATCH v5 2/3] x86/iommu: switch hwdom IOMMU to use a rangeset
Date: Wed, 24 Jan 2024 18:29:52 +0100
Message-ID: <20240124172953.29814-3-roger.pau@citrix.com>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20240124172953.29814-1-roger.pau@citrix.com>
References: <20240124172953.29814-1-roger.pau@citrix.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

The current loop that iterates from 0 to the maximum RAM address in order to
setup the IOMMU mappings is highly inefficient, and it will get worse as the
amount of RAM increases.  It's also not accounting for any reserved regions
past the last RAM address.

Instead of iterating over memory addresses, iterate over the memory map regions
and use a rangeset in order to keep track of which ranges need to be identity
mapped in the hardware domain physical address space.

On an AMD EPYC 7452 with 512GiB of RAM, the time to execute
arch_iommu_hwdom_init() in nanoseconds is:

x old
+ new
    N           Min           Max        Median           Avg        Stddev
x   5 2.2364154e+10  2.338244e+10 2.2474685e+10 2.2622409e+10 4.2949869e+08
+   5       1025012       1033036       1026188     1028276.2     3623.1194
Difference at 95.0% confidence
        -2.26214e+10 +/- 4.42931e+08
        -99.9955% +/- 9.05152e-05%
        (Student's t, pooled s = 3.03701e+08)

Execution time of arch_iommu_hwdom_init() goes down from ~22s to ~0.001s.

Note there's a change for HVM domains (ie: PVH dom0) that get switched to
create the p2m mappings using map_mmio_regions() instead of
p2m_add_identity_entry(), so that ranges can be mapped with a single function
call if possible.  Note that the interface of map_mmio_regions() doesn't
allow creating read-only mappings, but so far there are no such mappings
created for PVH dom0 in arch_iommu_hwdom_init().

No change intended in the resulting mappings that a hardware domain gets.

Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
---
Changes since v4:
 - Add default case to handle ACPI and NVS regions (which are not mapped)
   unless in the low 4GB and when inclusive mode is set.
 - Add changelog entry.
 - Dropped Jans RB.

Changes since v3:
 - Remove unnecessary line wraps.

Changes since v2:
 - Simplify a bit the logic related to inclusive option, at the cost of making
   some no-op calls on some cases.

Changes since v1:
 - Split from bigger patch.
 - Remove unneeded default case.

x86/iommu: add CHANGELOG entry for hwdom setup time improvements

Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
---
 CHANGELOG.md                        |   2 +
 xen/drivers/passthrough/x86/iommu.c | 149 ++++++----------------------
 2 files changed, 35 insertions(+), 116 deletions(-)

diff --git a/CHANGELOG.md b/CHANGELOG.md
index 723d06425431..3e8b996e4718 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -9,6 +9,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/)
 ### Changed
  - Changed flexible array definitions in public I/O interface headers to not
    use "1" as the number of array elements.
+ - On x86:
+   - Reduce IOMMU setup time for hardware domain.
 
 ### Added
  - On x86:
diff --git a/xen/drivers/passthrough/x86/iommu.c b/xen/drivers/passthrough/x86/iommu.c
index fc5215a9dc40..c90755ff58fa 100644
--- a/xen/drivers/passthrough/x86/iommu.c
+++ b/xen/drivers/passthrough/x86/iommu.c
@@ -300,76 +300,6 @@ void iommu_identity_map_teardown(struct domain *d)
     }
 }
 
-static unsigned int __hwdom_init hwdom_iommu_map(const struct domain *d,
-                                                 unsigned long pfn,
-                                                 unsigned long max_pfn)
-{
-    mfn_t mfn = _mfn(pfn);
-    unsigned int i, type, perms = IOMMUF_readable | IOMMUF_writable;
-
-    /*
-     * Set up 1:1 mapping for dom0. Default to include only conventional RAM
-     * areas and let RMRRs include needed reserved regions. When set, the
-     * inclusive mapping additionally maps in every pfn up to 4GB except those
-     * that fall in unusable ranges for PV Dom0.
-     */
-    if ( (pfn > max_pfn && !mfn_valid(mfn)) || xen_in_range(pfn) )
-        return 0;
-
-    switch ( type = page_get_ram_type(mfn) )
-    {
-    case RAM_TYPE_UNUSABLE:
-        return 0;
-
-    case RAM_TYPE_CONVENTIONAL:
-        if ( iommu_hwdom_strict )
-            return 0;
-        break;
-
-    default:
-        if ( type & RAM_TYPE_RESERVED )
-        {
-            if ( !iommu_hwdom_inclusive && !iommu_hwdom_reserved )
-                perms = 0;
-        }
-        else if ( is_hvm_domain(d) )
-            return 0;
-        else if ( !iommu_hwdom_inclusive || pfn > max_pfn )
-            perms = 0;
-    }
-
-    /* Check that it doesn't overlap with the Interrupt Address Range. */
-    if ( pfn >= 0xfee00 && pfn <= 0xfeeff )
-        return 0;
-    /* ... or the IO-APIC */
-    if ( has_vioapic(d) )
-    {
-        for ( i = 0; i < d->arch.hvm.nr_vioapics; i++ )
-            if ( pfn == PFN_DOWN(domain_vioapic(d, i)->base_address) )
-                return 0;
-    }
-    else if ( is_pv_domain(d) )
-    {
-        /*
-         * Be consistent with CPU mappings: Dom0 is permitted to establish r/o
-         * ones there (also for e.g. HPET in certain cases), so it should also
-         * have such established for IOMMUs.
-         */
-        if ( iomem_access_permitted(d, pfn, pfn) &&
-             rangeset_contains_singleton(mmio_ro_ranges, pfn) )
-            perms = IOMMUF_readable;
-    }
-    /*
-     * ... or the PCIe MCFG regions.
-     * TODO: runtime added MMCFG regions are not checked to make sure they
-     * don't overlap with already mapped regions, thus preventing trapping.
-     */
-    if ( has_vpci(d) && vpci_is_mmcfg_address(d, pfn_to_paddr(pfn)) )
-        return 0;
-
-    return perms;
-}
-
 static int __hwdom_init cf_check map_subtract(unsigned long s, unsigned long e,
                                               void *data)
 {
@@ -455,8 +385,7 @@ static int __hwdom_init cf_check identity_map(unsigned long s, unsigned long e,
 
 void __hwdom_init arch_iommu_hwdom_init(struct domain *d)
 {
-    unsigned long i, top, max_pfn, start, count;
-    unsigned int start_perms = 0;
+    unsigned int i;
     struct rangeset *map;
     struct map_data map_data = { .d = d };
     int rc;
@@ -487,58 +416,46 @@ void __hwdom_init arch_iommu_hwdom_init(struct domain *d)
     if ( !map )
         panic("IOMMU init: unable to allocate rangeset\n");
 
-    max_pfn = (GB(4) >> PAGE_SHIFT) - 1;
-    top = max(max_pdx, pfn_to_pdx(max_pfn) + 1);
+    if ( iommu_hwdom_inclusive )
+    {
+        /* Add the whole range below 4GB, UNUSABLE regions will be removed. */
+        rc = rangeset_add_range(map, 0, PFN_DOWN(GB(4)) - 1);
+        if ( rc )
+            panic("IOMMU inclusive mappings can't be added: %d\n", rc);
+    }
 
-    for ( i = 0, start = 0, count = 0; i < top; )
+    for ( i = 0; i < e820.nr_map; i++ )
     {
-        unsigned long pfn = pdx_to_pfn(i);
-        unsigned int perms = hwdom_iommu_map(d, pfn, max_pfn);
+        const struct e820entry entry = e820.map[i];
 
-        if ( !perms )
-            /* nothing */;
-        else if ( paging_mode_translate(d) )
+        switch ( entry.type )
         {
-            int rc;
-
-            rc = p2m_add_identity_entry(d, pfn,
-                                        perms & IOMMUF_writable ? p2m_access_rw
-                                                                : p2m_access_r,
-                                        0);
+        case E820_UNUSABLE:
+            /* Only relevant for inclusive mode, otherwise this is a no-op. */
+            rc = rangeset_remove_range(map, PFN_DOWN(entry.addr),
+                                       PFN_DOWN(entry.addr + entry.size - 1));
             if ( rc )
-                printk(XENLOG_WARNING
-                       "%pd: identity mapping of %lx failed: %d\n",
-                       d, pfn, rc);
-        }
-        else if ( pfn != start + count || perms != start_perms )
-        {
-            long rc;
+                panic("IOMMU failed to remove unusable memory: %d\n", rc);
+            continue;
 
-        commit:
-            while ( (rc = iommu_map(d, _dfn(start), _mfn(start), count,
-                                    start_perms | IOMMUF_preempt,
-                                    &map_data.flush_flags)) > 0 )
-            {
-                start += rc;
-                count -= rc;
-                process_pending_softirqs();
-            }
-            if ( rc )
-                printk(XENLOG_WARNING
-                       "%pd: IOMMU identity mapping of [%lx,%lx) failed: %ld\n",
-                       d, start, start + count, rc);
-            start = pfn;
-            count = 1;
-            start_perms = perms;
-        }
-        else
-            ++count;
+        case E820_RESERVED:
+            if ( !iommu_hwdom_inclusive && !iommu_hwdom_reserved )
+                continue;
+            break;
 
-        if ( !(++i & 0xfffff) )
-            process_pending_softirqs();
+        case E820_RAM:
+            if ( iommu_hwdom_strict )
+                continue;
+            break;
 
-        if ( i == top && count )
-            goto commit;
+        default:
+            continue;
+        }
+
+        rc = rangeset_add_range(map, PFN_DOWN(entry.addr),
+                                PFN_DOWN(entry.addr + entry.size - 1));
+        if ( rc )
+            panic("IOMMU failed to add identity range: %d\n", rc);
     }
 
     /* Remove any areas in-use by Xen. */
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Wed Jan 24 17:43:48 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 24 Jan 2024 17:43:48 +0000
Received: from list by lists.xenproject.org with outflank-mailman.671178.1044399 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rShHs-0003tD-GQ; Wed, 24 Jan 2024 17:43:44 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 671178.1044399; Wed, 24 Jan 2024 17:43:44 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rShHs-0003t6-DY; Wed, 24 Jan 2024 17:43:44 +0000
Received: by outflank-mailman (input) for mailman id 671178;
 Wed, 24 Jan 2024 17:43:42 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=V3ap=JC=cloud.com=roger.pau@srs-se1.protection.inumbo.net>)
 id 1rShHq-0003ef-KQ
 for xen-devel@lists.xenproject.org; Wed, 24 Jan 2024 17:43:42 +0000
Received: from mail-wr1-x436.google.com (mail-wr1-x436.google.com
 [2a00:1450:4864:20::436])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 1c73fa59-bae0-11ee-9b0f-b553b5be7939;
 Wed, 24 Jan 2024 18:43:40 +0100 (CET)
Received: by mail-wr1-x436.google.com with SMTP id
 ffacd0b85a97d-3394b892691so774377f8f.1
 for <xen-devel@lists.xenproject.org>; Wed, 24 Jan 2024 09:43:40 -0800 (PST)
Received: from localhost ([213.195.118.74]) by smtp.gmail.com with ESMTPSA id
 k2-20020a5d6282000000b0033838c2c169sm14419901wru.108.2024.01.24.09.43.39
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 24 Jan 2024 09:43:39 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 1c73fa59-bae0-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1706118220; x=1706723020; darn=lists.xenproject.org;
        h=content-transfer-encoding:mime-version:references:in-reply-to
         :message-id:date:subject:cc:to:from:from:to:cc:subject:date
         :message-id:reply-to;
        bh=PRRTVoMsffBaeCx7H0UZfS7Un0PKaRloiBABlVU/CRw=;
        b=lwbha7if0VIQZ69f6ardj89bG4ml+2dzseawo9iXDe2N4ln2mqEypb5zKQXmxgjVie
         Sv78gMHQHiBDZ+AzaDnXwct8GsmKiEG4m0iDkJzsmMOSIjQ5zStna5ekkcnkp6lhYbMB
         M1OY3uthjW8wJFcC3lUhX0GvVPfQQfEpKamtg=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706118220; x=1706723020;
        h=content-transfer-encoding:mime-version:references:in-reply-to
         :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to;
        bh=PRRTVoMsffBaeCx7H0UZfS7Un0PKaRloiBABlVU/CRw=;
        b=wA+aRJBfPZOL20aj8YMMDvtPzCUhzIJmiVXm3ZpAYtZV5FkHvLfnbGh7MPZ/VGf4kr
         7KCOLw5PtqKpXguFpa+ZZDlZRSkBYQ8trzZfFQ6oY/M9z7z2Qx40wEo7R151cJTl+8Rx
         R32qopjgz4ZZCtI2CLrmehub/nnNbdrj0SRYLAuzB0/G1IWrFiATyOd32cwC8pMAl5Rg
         88aWL43So2xKUYiXWxBgC6N0RWe6ek+StaTM75yfuqZLCbl5Wg+ectELK0jOGwP2nHB4
         s1ZjZz5EBM1q5z+tVwdE+W0ukaLQzD+HmOKe32Liz7RsUl2p1mzmE5WyqWksT85sYF1N
         0H0Q==
X-Gm-Message-State: AOJu0Yxaq9DdFMaWKT1yPK4gmMkkiIyoRyiupdY5oFkmjbPqtmIO4Ot4
	oM6G62DT9VKEiV1sG1yrWxbdUqHzKJRfE5lxY1E1bvvtMwhe5BgSNxbtmMe2mYbwd4KxHp022V5
	o
X-Google-Smtp-Source: AGHT+IH6TMMY4cg2huxFvd8qdL8Ao0BquEAyYm67Y1uR33w8uMPyTRzFYILSedvn+lTN+7cJPzFDZQ==
X-Received: by 2002:a5d:4592:0:b0:337:7cda:f60f with SMTP id p18-20020a5d4592000000b003377cdaf60fmr695501wrq.26.1706118219684;
        Wed, 24 Jan 2024 09:43:39 -0800 (PST)
From: Roger Pau Monne <roger.pau@citrix.com>
To: xen-devel@lists.xenproject.org
Cc: Roger Pau Monne <roger.pau@citrix.com>,
	Paul Durrant <paul@xen.org>,
	Jan Beulich <jbeulich@suse.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Wei Liu <wl@xen.org>
Subject: [PATCH v5 1/3] x86/iommu: remove regions not to be mapped
Date: Wed, 24 Jan 2024 18:29:51 +0100
Message-ID: <20240124172953.29814-2-roger.pau@citrix.com>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20240124172953.29814-1-roger.pau@citrix.com>
References: <20240124172953.29814-1-roger.pau@citrix.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Introduce the code to remove regions not to be mapped from the rangeset
that will be used to setup the IOMMU page tables for the hardware domain.

This change also introduces two new functions: remove_xen_ranges() and
vpci_subtract_mmcfg() that copy the logic in xen_in_range() and
vpci_is_mmcfg_address() respectively and remove the ranges that would otherwise
be intercepted by the original functions.

Note that the rangeset is still not populated.

Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
Reviewed-by: Jan Beulich <jbeulich@suse.com>
---
Changes since v4:
 - Fix off-by-one when removing the Xen used ranges, as the rangesets are
   inclusive.

Changes since v3:
 - Remove unnecessary line wrapping.

Changes since v1:
 - Split from bigger patch.
---
 xen/arch/x86/hvm/io.c               | 16 ++++++++
 xen/arch/x86/include/asm/hvm/io.h   |  3 ++
 xen/arch/x86/include/asm/setup.h    |  1 +
 xen/arch/x86/setup.c                | 48 +++++++++++++++++++++++
 xen/drivers/passthrough/x86/iommu.c | 61 +++++++++++++++++++++++++++++
 5 files changed, 129 insertions(+)

diff --git a/xen/arch/x86/hvm/io.c b/xen/arch/x86/hvm/io.c
index d75af83ad01f..a42854c52b65 100644
--- a/xen/arch/x86/hvm/io.c
+++ b/xen/arch/x86/hvm/io.c
@@ -369,6 +369,22 @@ bool vpci_is_mmcfg_address(const struct domain *d, paddr_t addr)
     return vpci_mmcfg_find(d, addr);
 }
 
+int __hwdom_init vpci_subtract_mmcfg(const struct domain *d, struct rangeset *r)
+{
+    const struct hvm_mmcfg *mmcfg;
+
+    list_for_each_entry ( mmcfg, &d->arch.hvm.mmcfg_regions, next )
+    {
+        int rc = rangeset_remove_range(r, PFN_DOWN(mmcfg->addr),
+                                       PFN_DOWN(mmcfg->addr + mmcfg->size - 1));
+
+        if ( rc )
+            return rc;
+    }
+
+    return 0;
+}
+
 static unsigned int vpci_mmcfg_decode_addr(const struct hvm_mmcfg *mmcfg,
                                            paddr_t addr, pci_sbdf_t *sbdf)
 {
diff --git a/xen/arch/x86/include/asm/hvm/io.h b/xen/arch/x86/include/asm/hvm/io.h
index a97731657801..e1e5e6fe7491 100644
--- a/xen/arch/x86/include/asm/hvm/io.h
+++ b/xen/arch/x86/include/asm/hvm/io.h
@@ -156,6 +156,9 @@ void destroy_vpci_mmcfg(struct domain *d);
 /* Check if an address is between a MMCFG region for a domain. */
 bool vpci_is_mmcfg_address(const struct domain *d, paddr_t addr);
 
+/* Remove MMCFG regions from a given rangeset. */
+int vpci_subtract_mmcfg(const struct domain *d, struct rangeset *r);
+
 #endif /* __ASM_X86_HVM_IO_H__ */
 
 
diff --git a/xen/arch/x86/include/asm/setup.h b/xen/arch/x86/include/asm/setup.h
index 9a460e4db8f4..cd07d98101d8 100644
--- a/xen/arch/x86/include/asm/setup.h
+++ b/xen/arch/x86/include/asm/setup.h
@@ -37,6 +37,7 @@ void discard_initial_images(void);
 void *bootstrap_map(const module_t *mod);
 
 int xen_in_range(unsigned long mfn);
+int remove_xen_ranges(struct rangeset *r);
 
 extern uint8_t kbd_shift_flags;
 
diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
index 897b7e92082e..c9f65c3a70b8 100644
--- a/xen/arch/x86/setup.c
+++ b/xen/arch/x86/setup.c
@@ -2138,6 +2138,54 @@ int __hwdom_init xen_in_range(unsigned long mfn)
     return 0;
 }
 
+int __hwdom_init remove_xen_ranges(struct rangeset *r)
+{
+    paddr_t start, end;
+    int rc;
+
+    /* S3 resume code (and other real mode trampoline code) */
+    rc = rangeset_remove_range(r, PFN_DOWN(bootsym_phys(trampoline_start)),
+                               PFN_DOWN(bootsym_phys(trampoline_end)) - 1);
+    if ( rc )
+        return rc;
+
+    /*
+     * This needs to remain in sync with the uses of the same symbols in
+     * - __start_xen()
+     * - is_xen_fixed_mfn()
+     * - tboot_shutdown()
+     */
+    /* hypervisor .text + .rodata */
+    rc = rangeset_remove_range(r, PFN_DOWN(__pa(&_stext)),
+                               PFN_DOWN(__pa(&__2M_rodata_end)) - 1);
+    if ( rc )
+        return rc;
+
+    /* hypervisor .data + .bss */
+    if ( efi_boot_mem_unused(&start, &end) )
+    {
+        ASSERT(__pa(start) >= __pa(&__2M_rwdata_start));
+        rc = rangeset_remove_range(r, PFN_DOWN(__pa(&__2M_rwdata_start)),
+                                   PFN_DOWN(__pa(start)) - 1);
+        if ( rc )
+            return rc;
+        ASSERT(__pa(end) <= __pa(&__2M_rwdata_end));
+        rc = rangeset_remove_range(r, PFN_DOWN(__pa(end)),
+                                   PFN_DOWN(__pa(&__2M_rwdata_end)) - 1);
+        if ( rc )
+            return rc;
+    }
+    else
+    {
+        rc = rangeset_remove_range(r, PFN_DOWN(__pa(&__2M_rwdata_start)),
+                                   PFN_DOWN(__pa(&__2M_rwdata_end)) - 1);
+        if ( rc )
+            return rc;
+    }
+
+    return 0;
+}
+
 static int __hwdom_init cf_check io_bitmap_cb(
     unsigned long s, unsigned long e, void *ctx)
 {
diff --git a/xen/drivers/passthrough/x86/iommu.c b/xen/drivers/passthrough/x86/iommu.c
index 59b0c7e980ca..fc5215a9dc40 100644
--- a/xen/drivers/passthrough/x86/iommu.c
+++ b/xen/drivers/passthrough/x86/iommu.c
@@ -370,6 +370,14 @@ static unsigned int __hwdom_init hwdom_iommu_map(const struct domain *d,
     return perms;
 }
 
+static int __hwdom_init cf_check map_subtract(unsigned long s, unsigned long e,
+                                              void *data)
+{
+    struct rangeset *map = data;
+
+    return rangeset_remove_range(map, s, e);
+}
+
 struct map_data {
     struct domain *d;
     unsigned int flush_flags;
@@ -533,6 +541,59 @@ void __hwdom_init arch_iommu_hwdom_init(struct domain *d)
             goto commit;
     }
 
+    /* Remove any areas in-use by Xen. */
+    rc = remove_xen_ranges(map);
+    if ( rc )
+        panic("IOMMU failed to remove Xen ranges: %d\n", rc);
+
+    /* Remove any overlap with the Interrupt Address Range. */
+    rc = rangeset_remove_range(map, 0xfee00, 0xfeeff);
+    if ( rc )
+        panic("IOMMU failed to remove Interrupt Address Range: %d\n", rc);
+
+    /* If emulating IO-APIC(s) make sure the base address is unmapped. */
+    if ( has_vioapic(d) )
+    {
+        for ( i = 0; i < d->arch.hvm.nr_vioapics; i++ )
+        {
+            rc = rangeset_remove_singleton(map,
+                PFN_DOWN(domain_vioapic(d, i)->base_address));
+            if ( rc )
+                panic("IOMMU failed to remove IO-APIC: %d\n", rc);
+        }
+    }
+
+    if ( is_pv_domain(d) )
+    {
+        /*
+         * Be consistent with CPU mappings: Dom0 is permitted to establish r/o
+         * ones there (also for e.g. HPET in certain cases), so it should also
+         * have such established for IOMMUs.  Remove any read-only ranges here,
+         * since ranges in mmio_ro_ranges are already explicitly mapped below
+         * in read-only mode.
+         */
+        rc = rangeset_report_ranges(mmio_ro_ranges, 0, ~0UL, map_subtract, map);
+        if ( rc )
+            panic("IOMMU failed to remove read-only regions: %d\n", rc);
+    }
+
+    if ( has_vpci(d) )
+    {
+        /*
+         * TODO: runtime added MMCFG regions are not checked to make sure they
+         * don't overlap with already mapped regions, thus preventing trapping.
+         */
+        rc = vpci_subtract_mmcfg(d, map);
+        if ( rc )
+            panic("IOMMU unable to remove MMCFG areas: %d\n", rc);
+    }
+
+    /* Remove any regions past the last address addressable by the domain. */
+    rc = rangeset_remove_range(map, PFN_DOWN(1UL << domain_max_paddr_bits(d)),
+                               ~0UL);
+    if ( rc )
+        panic("IOMMU unable to remove unaddressable ranges: %d\n", rc);
+
     if ( iommu_verbose )
         printk(XENLOG_INFO "%pd: identity mappings for IOMMU:\n", d);
 
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Wed Jan 24 17:43:48 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 24 Jan 2024 17:43:48 +0000
Received: from list by lists.xenproject.org with outflank-mailman.671180.1044414 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rShHu-0004AK-1s; Wed, 24 Jan 2024 17:43:46 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 671180.1044414; Wed, 24 Jan 2024 17:43:46 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rShHt-00049V-Qw; Wed, 24 Jan 2024 17:43:45 +0000
Received: by outflank-mailman (input) for mailman id 671180;
 Wed, 24 Jan 2024 17:43:44 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=V3ap=JC=cloud.com=roger.pau@srs-se1.protection.inumbo.net>)
 id 1rShHs-0003pm-LT
 for xen-devel@lists.xenproject.org; Wed, 24 Jan 2024 17:43:44 +0000
Received: from mail-wm1-x32c.google.com (mail-wm1-x32c.google.com
 [2a00:1450:4864:20::32c])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 1dc0bf3c-bae0-11ee-98f5-6d05b1d4d9a1;
 Wed, 24 Jan 2024 18:43:43 +0100 (CET)
Received: by mail-wm1-x32c.google.com with SMTP id
 5b1f17b1804b1-40ec048e0c1so16821445e9.2
 for <xen-devel@lists.xenproject.org>; Wed, 24 Jan 2024 09:43:43 -0800 (PST)
Received: from localhost ([213.195.118.74]) by smtp.gmail.com with ESMTPSA id
 dq15-20020a0560000ccf00b00339336660d4sm8910859wrb.9.2024.01.24.09.43.41
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 24 Jan 2024 09:43:41 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 1dc0bf3c-bae0-11ee-98f5-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1706118222; x=1706723022; darn=lists.xenproject.org;
        h=content-transfer-encoding:mime-version:references:in-reply-to
         :message-id:date:subject:cc:to:from:from:to:cc:subject:date
         :message-id:reply-to;
        bh=2ZrLEkQUk8aM9B2yvHvaZ4PCpBx3ctjQNdrs96yJVB0=;
        b=TokWcNMy5fWzHUmBb+mEg7FeSoO4Lhpn/yy2p4UguAO2BI4NjlrjcQYTr++nEo9v3H
         oPueGI6t3VpgVfR7h1pF8k5j2wQOyusWz5cI5AIyCW+5CG+tudyYVPPB4+zcYnjjHvHc
         S3h8G+DEf09GAtrFvTU0XeAlzI2FZ/YKk7kyk=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706118222; x=1706723022;
        h=content-transfer-encoding:mime-version:references:in-reply-to
         :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to;
        bh=2ZrLEkQUk8aM9B2yvHvaZ4PCpBx3ctjQNdrs96yJVB0=;
        b=P6rIPMOzVHU+XKjnQ64bvlMZm6Ieq0FZ3M+IooKK+9X46PFkXsRhBtv8kjeEI92j3c
         PkA/EH0ivF3jA+C90672ZXKyQA6bgRiPQSEsJ6YDUQ0l3wa4dR3qFNBE7iLMwfazUz3W
         YW1bXrJpWVSJP2DwyYS89NZ4P5xO1Ocgaomq6iieRp6Rj0Gybx00AP0xgoG6UlaHPy6C
         5aFK5n6APjAKGGG1lfsZL7ZPifx778s/4DblS2Y+kJ2D7xzcbsrgKqHVKX1REk86pfzR
         TVM1JFG8h+PaDoZHhVp2VZWKX54Ttl5zj61PRFSWNFKjdndTCHBeA5Czy8M/dPRHOXnO
         NvPw==
X-Gm-Message-State: AOJu0YwL8f3EIuhWQQN7BrzHO0h2iIhXad6w7fWOb3UQ98Tn6jujhU1h
	JmuNhdxsRRiZNPX6SlpZGGry7Nll15Ly02EIo2Yxqal7ElLxshwHD4Mw2M7Io5ahKVxCzyL8yfp
	1
X-Google-Smtp-Source: AGHT+IH5AzWiSaq4eLMTqR/LLEusMUTSCBemKLBGdhiYMc57QJ3dIHk4Rw9lEyiuHT68bhBymEyUrg==
X-Received: by 2002:a05:600c:314d:b0:40e:53ef:8ecb with SMTP id h13-20020a05600c314d00b0040e53ef8ecbmr2041557wmo.5.1706118221947;
        Wed, 24 Jan 2024 09:43:41 -0800 (PST)
From: Roger Pau Monne <roger.pau@citrix.com>
To: xen-devel@lists.xenproject.org
Cc: Roger Pau Monne <roger.pau@citrix.com>,
	Paul Durrant <paul@xen.org>,
	Jan Beulich <jbeulich@suse.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Wei Liu <wl@xen.org>,
	Lukasz Hawrylko <lukasz@hawrylko.pl>,
	"Daniel P. Smith" <dpsmith@apertussolutions.com>,
	=?UTF-8?q?Mateusz=20M=C3=B3wka?= <mateusz.mowka@intel.com>
Subject: [PATCH v5 3/3] x86/iommu: cleanup unused functions
Date: Wed, 24 Jan 2024 18:29:53 +0100
Message-ID: <20240124172953.29814-4-roger.pau@citrix.com>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20240124172953.29814-1-roger.pau@citrix.com>
References: <20240124172953.29814-1-roger.pau@citrix.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Remove xen_in_range() and vpci_is_mmcfg_address() now that hey are unused.

Adjust comments to point to the new functions that replace the existing ones.

No functional change.

Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
Reviewed-by: Jan Beulich <jbeulich@suse.com>
---
Changes since v2:
 - Do remove vpci_is_mmcfg_address().
---
Can be squashed with the previous patch if desired, split as a separate patch
for clarity.
---
 xen/arch/x86/hvm/io.c             |  5 ---
 xen/arch/x86/include/asm/hvm/io.h |  3 --
 xen/arch/x86/include/asm/setup.h  |  1 -
 xen/arch/x86/setup.c              | 53 ++-----------------------------
 xen/arch/x86/tboot.c              |  2 +-
 5 files changed, 3 insertions(+), 61 deletions(-)

diff --git a/xen/arch/x86/hvm/io.c b/xen/arch/x86/hvm/io.c
index a42854c52b65..06283b41c463 100644
--- a/xen/arch/x86/hvm/io.c
+++ b/xen/arch/x86/hvm/io.c
@@ -364,11 +364,6 @@ static const struct hvm_mmcfg *vpci_mmcfg_find(const struct domain *d,
     return NULL;
 }
 
-bool vpci_is_mmcfg_address(const struct domain *d, paddr_t addr)
-{
-    return vpci_mmcfg_find(d, addr);
-}
-
 int __hwdom_init vpci_subtract_mmcfg(const struct domain *d, struct rangeset *r)
 {
     const struct hvm_mmcfg *mmcfg;
diff --git a/xen/arch/x86/include/asm/hvm/io.h b/xen/arch/x86/include/asm/hvm/io.h
index e1e5e6fe7491..24d1b6134f02 100644
--- a/xen/arch/x86/include/asm/hvm/io.h
+++ b/xen/arch/x86/include/asm/hvm/io.h
@@ -153,9 +153,6 @@ int register_vpci_mmcfg_handler(struct domain *d, paddr_t addr,
 /* Destroy tracked MMCFG areas. */
 void destroy_vpci_mmcfg(struct domain *d);
 
-/* Check if an address is between a MMCFG region for a domain. */
-bool vpci_is_mmcfg_address(const struct domain *d, paddr_t addr);
-
 /* Remove MMCFG regions from a given rangeset. */
 int vpci_subtract_mmcfg(const struct domain *d, struct rangeset *r);
 
diff --git a/xen/arch/x86/include/asm/setup.h b/xen/arch/x86/include/asm/setup.h
index cd07d98101d8..1ced1299c77b 100644
--- a/xen/arch/x86/include/asm/setup.h
+++ b/xen/arch/x86/include/asm/setup.h
@@ -36,7 +36,6 @@ unsigned long initial_images_nrpages(nodeid_t node);
 void discard_initial_images(void);
 void *bootstrap_map(const module_t *mod);
 
-int xen_in_range(unsigned long mfn);
 int remove_xen_ranges(struct rangeset *r);
 
 extern uint8_t kbd_shift_flags;
diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
index c9f65c3a70b8..8082aac303e0 100644
--- a/xen/arch/x86/setup.c
+++ b/xen/arch/x86/setup.c
@@ -1343,7 +1343,7 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
         relocated = true;
 
         /*
-         * This needs to remain in sync with xen_in_range() and the
+         * This needs to remain in sync with remove_xen_ranges() and the
          * respective reserve_e820_ram() invocation below. No need to
          * query efi_boot_mem_unused() here, though.
          */
@@ -1495,7 +1495,7 @@ void asmlinkage __init noreturn __start_xen(unsigned long mbi_p)
     if ( using_2M_mapping() )
         efi_boot_mem_unused(NULL, NULL);
 
-    /* This needs to remain in sync with xen_in_range(). */
+    /* This needs to remain in sync with remove_xen_ranges(). */
     if ( efi_boot_mem_unused(&eb_start, &eb_end) )
     {
         reserve_e820_ram(&boot_e820, __pa(_stext), __pa(eb_start));
@@ -2089,55 +2089,6 @@ void arch_get_xen_caps(xen_capabilities_info_t *info)
     }
 }
 
-int __hwdom_init xen_in_range(unsigned long mfn)
-{
-    paddr_t start, end;
-    int i;
-
-    enum { region_s3, region_ro, region_rw, region_bss, nr_regions };
-    static struct {
-        paddr_t s, e;
-    } xen_regions[nr_regions] __hwdom_initdata;
-
-    /* initialize first time */
-    if ( !xen_regions[0].s )
-    {
-        /* S3 resume code (and other real mode trampoline code) */
-        xen_regions[region_s3].s = bootsym_phys(trampoline_start);
-        xen_regions[region_s3].e = bootsym_phys(trampoline_end);
-
-        /*
-         * This needs to remain in sync with the uses of the same symbols in
-         * - __start_xen() (above)
-         * - is_xen_fixed_mfn()
-         * - tboot_shutdown()
-         */
-
-        /* hypervisor .text + .rodata */
-        xen_regions[region_ro].s = __pa(&_stext);
-        xen_regions[region_ro].e = __pa(&__2M_rodata_end);
-        /* hypervisor .data + .bss */
-        xen_regions[region_rw].s = __pa(&__2M_rwdata_start);
-        xen_regions[region_rw].e = __pa(&__2M_rwdata_end);
-        if ( efi_boot_mem_unused(&start, &end) )
-        {
-            ASSERT(__pa(start) >= xen_regions[region_rw].s);
-            ASSERT(__pa(end) <= xen_regions[region_rw].e);
-            xen_regions[region_rw].e = __pa(start);
-            xen_regions[region_bss].s = __pa(end);
-            xen_regions[region_bss].e = __pa(&__2M_rwdata_end);
-        }
-    }
-
-    start = (paddr_t)mfn << PAGE_SHIFT;
-    end = start + PAGE_SIZE;
-    for ( i = 0; i < nr_regions; i++ )
-        if ( (start < xen_regions[i].e) && (end > xen_regions[i].s) )
-            return 1;
-
-    return 0;
-}
-
 int __hwdom_init remove_xen_ranges(struct rangeset *r)
 {
     paddr_t start, end;
diff --git a/xen/arch/x86/tboot.c b/xen/arch/x86/tboot.c
index 86c4c22cacb8..4c254b4e34b4 100644
--- a/xen/arch/x86/tboot.c
+++ b/xen/arch/x86/tboot.c
@@ -321,7 +321,7 @@ void tboot_shutdown(uint32_t shutdown_type)
 
         /*
          * Xen regions for tboot to MAC. This needs to remain in sync with
-         * xen_in_range().
+         * remove_xen_ranges().
          */
         g_tboot_shared->num_mac_regions = 3;
         /* S3 resume code (and other real mode trampoline code) */
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Wed Jan 24 17:51:32 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 24 Jan 2024 17:51:32 +0000
Received: from list by lists.xenproject.org with outflank-mailman.671198.1044428 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rShPD-0007pz-Ra; Wed, 24 Jan 2024 17:51:19 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 671198.1044428; Wed, 24 Jan 2024 17:51:19 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rShPD-0007ps-P2; Wed, 24 Jan 2024 17:51:19 +0000
Received: by outflank-mailman (input) for mailman id 671198;
 Wed, 24 Jan 2024 17:51:18 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=V3ap=JC=cloud.com=roger.pau@srs-se1.protection.inumbo.net>)
 id 1rShPC-0007oN-IM
 for xen-devel@lists.xenproject.org; Wed, 24 Jan 2024 17:51:18 +0000
Received: from mail-wm1-x32a.google.com (mail-wm1-x32a.google.com
 [2a00:1450:4864:20::32a])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 2c8ed2d4-bae1-11ee-98f5-6d05b1d4d9a1;
 Wed, 24 Jan 2024 18:51:17 +0100 (CET)
Received: by mail-wm1-x32a.google.com with SMTP id
 5b1f17b1804b1-40eb99a72dcso22337935e9.1
 for <xen-devel@lists.xenproject.org>; Wed, 24 Jan 2024 09:51:17 -0800 (PST)
Received: from localhost ([213.195.118.74]) by smtp.gmail.com with ESMTPSA id
 jg25-20020a05600ca01900b0040e5034d8e0sm348758wmb.43.2024.01.24.09.51.16
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 24 Jan 2024 09:51:16 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 2c8ed2d4-bae1-11ee-98f5-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1706118677; x=1706723477; darn=lists.xenproject.org;
        h=in-reply-to:content-transfer-encoding:content-disposition
         :mime-version:references:message-id:subject:cc:to:from:date:from:to
         :cc:subject:date:message-id:reply-to;
        bh=Qkv9S6EA2vAXDWj+0n1XIHPUiPzgbSxqqzLliHK3F5A=;
        b=TJAfZHM/xMy/ioLoGLrPhvZxgcKprzQPAo/YxumpzAdGP7edlBc7iPumpZDN2qiLyL
         oV6YYU+Qr7F3ozMfVTiq+W9uY5U9wcFAFaMMUQ+VNtX5pUsQzS8TU0WmyhqJTU+sLJPo
         oDU4hj36grCgF/iXAXgX8cUKEqtvbR0tbbaUc=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706118677; x=1706723477;
        h=in-reply-to:content-transfer-encoding:content-disposition
         :mime-version:references:message-id:subject:cc:to:from:date
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=Qkv9S6EA2vAXDWj+0n1XIHPUiPzgbSxqqzLliHK3F5A=;
        b=Zn3emvTBdRWxYtyzN/XDHGCZh+eTWWyva+Kyf34icwYDZRXkQ+V5O3sjXtyxP9hZMv
         r8dmWa739cn20zhhtgn5DONOjLBI9lJMv6Sd64XmcwS5CpkFN+0vf2h58VBVal5KzY5M
         HDtCJN+v073KU8Q99NRqTLLXistyer3gGh/iIFm+4fTratfeuggaVSR6KazAtdsFFb1U
         aEoeMdUo00DkNRllT9F7/6fRb+vRoED1CQhos6IyckDp4DsAiXm/THXYY02JeVhaxNZp
         EDhpBHVVGTC6dyW9Wxl8IMh4J45z4yyKgCe8GuWFvY6s+hWvIyd9dRMRBqkNliNQiSz8
         tQOQ==
X-Gm-Message-State: AOJu0Yxpf6dz7DnHJXNRLsJ/jSHRjukW3wOejXF6jXUG0Wn4vz5r5hgv
	MbyjgQVNS75vrHnUCVM+rwAs2rrSvH7xT9mD1O2WBXtf2jjRkW/FhXCigPzW7eM=
X-Google-Smtp-Source: AGHT+IEoWhWHv7rFIGr98dunGN5WlqLrM11UcJZMpc7liQDhZtKnWjaep/901ESi4fZGY6tOmXh96g==
X-Received: by 2002:a05:600c:880f:b0:40e:49c4:43c7 with SMTP id gy15-20020a05600c880f00b0040e49c443c7mr1334489wmb.159.1706118676900;
        Wed, 24 Jan 2024 09:51:16 -0800 (PST)
Date: Wed, 24 Jan 2024 18:51:15 +0100
From: Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
To: Jan Beulich <jbeulich@suse.com>
Cc: Stewart Hildebrand <stewart.hildebrand@amd.com>,
	Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>, Wei Liu <wl@xen.org>,
	George Dunlap <george.dunlap@citrix.com>,
	Julien Grall <julien@xen.org>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Jun Nakajima <jun.nakajima@intel.com>,
	Kevin Tian <kevin.tian@intel.com>, Paul Durrant <paul@xen.org>,
	Volodymyr Babchuk <volodymyr_babchuk@epam.com>,
	xen-devel@lists.xenproject.org
Subject: Re: [PATCH v12.2 01/15] vpci: use per-domain PCI lock to protect
 vpci structure
Message-ID: <ZbFOE6kV7NXFrNjb@macbook>
References: <20240109215145.430207-1-stewart.hildebrand@amd.com>
 <20240109215145.430207-2-stewart.hildebrand@amd.com>
 <20240115194309.45683-1-stewart.hildebrand@amd.com>
 <715e40c9-1776-4677-9565-dac1565a2aa8@suse.com>
 <Za_WGzS14Eqt8yZF@macbook>
 <ae7a57f2-2433-4b75-ab45-c8be55d489c9@suse.com>
 <ZbDXXyucJhLJ4u9H@macbook>
 <a3233487-965b-49ae-bebe-e5476fcda29c@suse.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <a3233487-965b-49ae-bebe-e5476fcda29c@suse.com>

On Wed, Jan 24, 2024 at 12:34:10PM +0100, Jan Beulich wrote:
> On 24.01.2024 10:24, Roger Pau Monné wrote:
> > On Wed, Jan 24, 2024 at 09:48:35AM +0100, Jan Beulich wrote:
> >> On 23.01.2024 16:07, Roger Pau Monné wrote:
> >>> On Tue, Jan 23, 2024 at 03:32:12PM +0100, Jan Beulich wrote:
> >>>> On 15.01.2024 20:43, Stewart Hildebrand wrote:
> >>>>> @@ -2888,6 +2888,8 @@ int allocate_and_map_msi_pirq(struct domain *d, int index, int *pirq_p,
> >>>>>  {
> >>>>>      int irq, pirq, ret;
> >>>>>  
> >>>>> +    ASSERT(pcidevs_locked() || rw_is_locked(&d->pci_lock));
> >>>>
> >>>> If either lock is sufficient to hold here, ...
> >>>>
> >>>>> --- a/xen/arch/x86/physdev.c
> >>>>> +++ b/xen/arch/x86/physdev.c
> >>>>> @@ -123,7 +123,9 @@ int physdev_map_pirq(domid_t domid, int type, int *index, int *pirq_p,
> >>>>>  
> >>>>>      case MAP_PIRQ_TYPE_MSI:
> >>>>>      case MAP_PIRQ_TYPE_MULTI_MSI:
> >>>>> +        pcidevs_lock();
> >>>>>          ret = allocate_and_map_msi_pirq(d, *index, pirq_p, type, msi);
> >>>>> +        pcidevs_unlock();
> >>>>>          break;
> >>>>
> >>>
> >>> IIRC (Stewart can further comment) this is done holding the pcidevs
> >>> lock to keep the path unmodified, as there's no need to hold the
> >>> per-domain rwlock.
> >>
> >> Yet why would we prefer to acquire a global lock when a per-domain one
> >> suffices?
> > 
> > I was hoping to introduce less changes, specially if they are not
> > strictly required, as it's less risk.  I'm always quite worry of
> > locking changes.
> 
> In which case more description / code commenting is needed. The pattern
> of the assertions looks dangerous.

Is such dangerousness perception because you fear some of the pcidevs
lock usage might be there not just for preventing the pdev from going
away, but also to guarantee exclusive access to certain state?

> Even if (as you say in a later reply)
> this is only temporary, we all know how long "temporary" can be. It
> might even be advisable to introduce a helper construct.

The aim here was to modify as little as possible, in order to avoid
having to analyze all possible users of pcidevs lock, and thus not
block the vPCI work on the probably lengthy and difficult analysis.

Not sure adding a construct makes is much better, as I didn't want to
give the impression all checks for the pcidevs lock can merely be
replaced by the new construct.

Thanks, Roger.


From xen-devel-bounces@lists.xenproject.org Wed Jan 24 18:14:36 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 24 Jan 2024 18:14:36 +0000
Received: from list by lists.xenproject.org with outflank-mailman.671203.1044439 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rShle-0004jZ-KA; Wed, 24 Jan 2024 18:14:30 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 671203.1044439; Wed, 24 Jan 2024 18:14:30 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rShle-0004jS-H0; Wed, 24 Jan 2024 18:14:30 +0000
Received: by outflank-mailman (input) for mailman id 671203;
 Wed, 24 Jan 2024 18:14:29 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rShld-0004jI-9U; Wed, 24 Jan 2024 18:14:29 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rShld-0003X1-3W; Wed, 24 Jan 2024 18:14:29 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rShlc-0001N0-Nf; Wed, 24 Jan 2024 18:14:28 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rShlc-0006Fv-NB; Wed, 24 Jan 2024 18:14:28 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=eGxW2mOR62gNrDeuHp21+PxlT7ZPFeOzR+mNFE8kfAo=; b=I5BJ/Ps8XEWObYLiUg32bbOKlH
	tfdxHuUuY9k8I72QrvgLBJstCONBWjVkA1Dx/0kuMHLUCQCKmKmXvzmzQSAg7Rp3BcX/JaJGT58w2
	EtN+ZwbJjmGPD8yHkU0rR6BADhMNRJRy6EIm7yHHHFL4UBwXYPSqoqYfZZ7VGHDlDmTg=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184453-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [ovmf test] 184453: all pass - PUSHED
X-Osstest-Versions-This:
    ovmf=ff52277e3796c50511e544219dde0b21edf5c53e
X-Osstest-Versions-That:
    ovmf=97e1ef87300cdf01f5b21cd4c5ee1d8df6ae1f39
From: osstest service owner <osstest-admin@xenproject.org>
Date: Wed, 24 Jan 2024 18:14:28 +0000

flight 184453 ovmf real [real]
http://logs.test-lab.xenproject.org/osstest/logs/184453/

Perfect :-)
All tests in this flight passed as required
version targeted for testing:
 ovmf                 ff52277e3796c50511e544219dde0b21edf5c53e
baseline version:
 ovmf                 97e1ef87300cdf01f5b21cd4c5ee1d8df6ae1f39

Last test of basis   184448  2024-01-24 08:42:37 Z    0 days
Testing same since   184453  2024-01-24 16:14:24 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Ming Tan <ming.tan@intel.com>

jobs:
 build-amd64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-amd64-amd64-xl-qemuu-ovmf-amd64                         pass    
 test-amd64-i386-xl-qemuu-ovmf-amd64                          pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Pushing revision :

To xenbits.xen.org:/home/xen/git/osstest/ovmf.git
   97e1ef8730..ff52277e37  ff52277e3796c50511e544219dde0b21edf5c53e -> xen-tested-master


From xen-devel-bounces@lists.xenproject.org Wed Jan 24 19:28:12 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 24 Jan 2024 19:28:12 +0000
Received: from list by lists.xenproject.org with outflank-mailman.671212.1044449 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSiui-0000Ul-MN; Wed, 24 Jan 2024 19:27:56 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 671212.1044449; Wed, 24 Jan 2024 19:27:56 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSiui-0000Ue-J8; Wed, 24 Jan 2024 19:27:56 +0000
Received: by outflank-mailman (input) for mailman id 671212;
 Wed, 24 Jan 2024 19:27:55 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rSiuh-0000UU-4m; Wed, 24 Jan 2024 19:27:55 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rSiug-00054M-Qh; Wed, 24 Jan 2024 19:27:54 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rSiug-00039I-B4; Wed, 24 Jan 2024 19:27:54 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rSiug-0003wq-AV; Wed, 24 Jan 2024 19:27:54 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=+BtxHR5u9kWJB6+5iXOMLPH+bFv02M5fpm8/RJuTcWw=; b=VVH/abwQ2eAOrCvcZGybz7oEVs
	BHkXNcT0isZSkaM9145Sd4C/i5991UbzSaQTdLv1n1VSY+FBTyf6bRKgJ5j1mGFM8tDQxikRUn1qF
	cOZr1G3f4XmT7Lk7vK8cvE6w1jk6p/o/hvt02y2OBmIsPpHJ1e/YX2iw5weMYQJW3fn0=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184445-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [libvirt test] 184445: tolerable all pass - PUSHED
X-Osstest-Failures:
    libvirt:test-armhf-armhf-libvirt:saverestore-support-check:fail:nonblocking
    libvirt:test-armhf-armhf-libvirt-qcow2:saverestore-support-check:fail:nonblocking
    libvirt:test-armhf-armhf-libvirt-raw:saverestore-support-check:fail:nonblocking
    libvirt:test-amd64-amd64-libvirt-xsm:migrate-support-check:fail:nonblocking
    libvirt:test-amd64-i386-libvirt-xsm:migrate-support-check:fail:nonblocking
    libvirt:test-amd64-i386-libvirt:migrate-support-check:fail:nonblocking
    libvirt:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    libvirt:test-arm64-arm64-libvirt:migrate-support-check:fail:nonblocking
    libvirt:test-arm64-arm64-libvirt:saverestore-support-check:fail:nonblocking
    libvirt:test-arm64-arm64-libvirt-xsm:migrate-support-check:fail:nonblocking
    libvirt:test-arm64-arm64-libvirt-xsm:saverestore-support-check:fail:nonblocking
    libvirt:test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    libvirt:test-armhf-armhf-libvirt:migrate-support-check:fail:nonblocking
    libvirt:test-amd64-i386-libvirt-raw:migrate-support-check:fail:nonblocking
    libvirt:test-arm64-arm64-libvirt-qcow2:migrate-support-check:fail:nonblocking
    libvirt:test-arm64-arm64-libvirt-qcow2:saverestore-support-check:fail:nonblocking
    libvirt:test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    libvirt:test-arm64-arm64-libvirt-raw:migrate-support-check:fail:nonblocking
    libvirt:test-arm64-arm64-libvirt-raw:saverestore-support-check:fail:nonblocking
    libvirt:test-amd64-amd64-libvirt-vhd:migrate-support-check:fail:nonblocking
    libvirt:test-armhf-armhf-libvirt-qcow2:migrate-support-check:fail:nonblocking
    libvirt:test-armhf-armhf-libvirt-raw:migrate-support-check:fail:nonblocking
X-Osstest-Versions-This:
    libvirt=91f9a9fb4fc0d34ed8d7a869de3d9f87687c3618
X-Osstest-Versions-That:
    libvirt=642af05e3e58b90cb9d15936678f16bd7e454d26
From: osstest service owner <osstest-admin@xenproject.org>
Date: Wed, 24 Jan 2024 19:27:54 +0000

flight 184445 libvirt real [real]
http://logs.test-lab.xenproject.org/osstest/logs/184445/

Failures :-/ but no regressions.

Tests which did not succeed, but are not blocking:
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 184431
 test-armhf-armhf-libvirt-qcow2 15 saverestore-support-check   fail like 184431
 test-armhf-armhf-libvirt-raw 15 saverestore-support-check    fail  like 184431
 test-amd64-amd64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-amd64-i386-libvirt-xsm  15 migrate-support-check        fail   never pass
 test-amd64-i386-libvirt      15 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt     15 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt     15 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt     16 saverestore-support-check    fail   never pass
 test-arm64-arm64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-xsm 16 saverestore-support-check    fail   never pass
 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-armhf-armhf-libvirt     15 migrate-support-check        fail   never pass
 test-amd64-i386-libvirt-raw  14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-qcow2 14 migrate-support-check        fail never pass
 test-arm64-arm64-libvirt-qcow2 15 saverestore-support-check    fail never pass
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-arm64-arm64-libvirt-raw 14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 15 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-vhd 14 migrate-support-check        fail   never pass
 test-armhf-armhf-libvirt-qcow2 14 migrate-support-check        fail never pass
 test-armhf-armhf-libvirt-raw 14 migrate-support-check        fail   never pass

version targeted for testing:
 libvirt              91f9a9fb4fc0d34ed8d7a869de3d9f87687c3618
baseline version:
 libvirt              642af05e3e58b90cb9d15936678f16bd7e454d26

Last test of basis   184431  2024-01-23 04:20:35 Z    1 days
Testing same since   184445  2024-01-24 04:20:28 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Michal Privoznik <mprivozn@redhat.com>

jobs:
 build-amd64-xsm                                              pass    
 build-arm64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64                                                  pass    
 build-arm64                                                  pass    
 build-armhf                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-arm64-libvirt                                          pass    
 build-armhf-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-pvops                                            pass    
 build-arm64-pvops                                            pass    
 build-armhf-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm           pass    
 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm            pass    
 test-amd64-amd64-libvirt-xsm                                 pass    
 test-arm64-arm64-libvirt-xsm                                 pass    
 test-amd64-i386-libvirt-xsm                                  pass    
 test-amd64-amd64-libvirt                                     pass    
 test-arm64-arm64-libvirt                                     pass    
 test-armhf-armhf-libvirt                                     pass    
 test-amd64-i386-libvirt                                      pass    
 test-amd64-amd64-libvirt-pair                                pass    
 test-amd64-i386-libvirt-pair                                 pass    
 test-arm64-arm64-libvirt-qcow2                               pass    
 test-armhf-armhf-libvirt-qcow2                               pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-armhf-armhf-libvirt-raw                                 pass    
 test-amd64-i386-libvirt-raw                                  pass    
 test-amd64-amd64-libvirt-vhd                                 pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Pushing revision :

To xenbits.xen.org:/home/xen/git/libvirt.git
   642af05e3e..91f9a9fb4f  91f9a9fb4fc0d34ed8d7a869de3d9f87687c3618 -> xen-tested-master


From xen-devel-bounces@lists.xenproject.org Wed Jan 24 20:21:26 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 24 Jan 2024 20:21:26 +0000
Received: from list by lists.xenproject.org with outflank-mailman.671220.1044458 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSjkN-0000WG-J1; Wed, 24 Jan 2024 20:21:19 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 671220.1044458; Wed, 24 Jan 2024 20:21:19 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSjkN-0000W9-GO; Wed, 24 Jan 2024 20:21:19 +0000
Received: by outflank-mailman (input) for mailman id 671220;
 Wed, 24 Jan 2024 20:21:18 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=87Ys=JC=amd.com=Stewart.Hildebrand@srs-se1.protection.inumbo.net>)
 id 1rSjkM-0000W3-Gb
 for xen-devel@lists.xenproject.org; Wed, 24 Jan 2024 20:21:18 +0000
Received: from NAM11-DM6-obe.outbound.protection.outlook.com
 (mail-dm6nam11on20620.outbound.protection.outlook.com
 [2a01:111:f400:7eaa::620])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 1f471a31-baf6-11ee-9b0f-b553b5be7939;
 Wed, 24 Jan 2024 21:21:15 +0100 (CET)
Received: from CY5PR17CA0032.namprd17.prod.outlook.com (2603:10b6:930:12::28)
 by CY8PR12MB7729.namprd12.prod.outlook.com (2603:10b6:930:84::21)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7202.37; Wed, 24 Jan
 2024 20:21:12 +0000
Received: from CY4PEPF0000EE33.namprd05.prod.outlook.com
 (2603:10b6:930:12:cafe::81) by CY5PR17CA0032.outlook.office365.com
 (2603:10b6:930:12::28) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7228.22 via Frontend
 Transport; Wed, 24 Jan 2024 20:21:07 +0000
Received: from SATLEXMB04.amd.com (165.204.84.17) by
 CY4PEPF0000EE33.mail.protection.outlook.com (10.167.242.39) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.7228.16 via Frontend Transport; Wed, 24 Jan 2024 20:21:07 +0000
Received: from SATLEXMB04.amd.com (10.181.40.145) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.34; Wed, 24 Jan
 2024 14:21:06 -0600
Received: from [172.23.114.18] (10.180.168.240) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server id 15.1.2507.34 via Frontend
 Transport; Wed, 24 Jan 2024 14:21:04 -0600
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 1f471a31-baf6-11ee-9b0f-b553b5be7939
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=A7yRXSmYIwUk8mLZCCFbFTDA7+h4ryxav2QBzkBdYldA5h2nz+pLQFelr0rYSRQoHL1g/QXwk5/lupr1jA5RYwfdNdWpm0JAUIGVqY4g8SlXG/b6yYi3Yt17Vam9AoNEPgPgT52cZJgXjXRe8w3om5RSdTO77+Wel7bhX/WiCLy+rnrnH/k0es0DeHkjkcCNKzGRHniEOGmCHOQdVDPSE6V7TTGntd0nrIF0YYidjoiTqohMQVdgQf1Up6ZG7X2F05RY6Ao4QGU3Yl38AuKxW7IvNs2cksuL7Qu41qlWQQ8rIbPw9ckNfeDmuoacYUo33ccZx+Pajz0vXJ+EKORITw==
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=V0JA7FoHuWcbjJZsa8jjyQSeGIximf/CWa4nHoAsF54=;
 b=TKSQijbEGCV1VZzykcGVR3MldpSun9E56vCS+KtVt41rr+JrdJl/ihzdWs4nGhiIkQlQ0iiWDXQyVIE1HTmUjhqsWFPFQSZRKgAAghyBYmzkNnaO72WF0LTjveIZcIa9ZQMDpULw1L6vhxwyUEWeGh+Oq+B0qbVAdVx4LvsZlExf3ykOyVuJNF7+NAvFO3jwQvqHXv8S6RH1itPKeM+PnmO65lotp8eC3irsCt9Mm2plNsh8R37YJ1ktLXvBIqAgAXDQR36ml3huDN1MQ8t96eQZY55qt7YGj1EfTTMb5G/0feiJJoU+Ek3seS2qEAM2JNOKV/W5bPCnAHZx4ThRDw==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=citrix.com 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)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=V0JA7FoHuWcbjJZsa8jjyQSeGIximf/CWa4nHoAsF54=;
 b=oqLRuGUBo34kEqfirYj7WzL+Oxwp8Aao9La7sagdoJXXiIbsb2EnXC1lYwf41XLbpJLfpi99XnYs6vA0xHKLauTJNgbsMV4uYiFd2jG4pvfZAK35E+JykCpCgB8ICwISZtdNFiEpEO4bbYgD0yVxnaO261VMYIk+UdIoX/n4bYI=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C
Message-ID: <3fa355a2-da4e-4a16-b4fe-0d402a290b14@amd.com>
Date: Wed, 24 Jan 2024 15:21:04 -0500
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v12.2 01/15] vpci: use per-domain PCI lock to protect vpci
 structure
Content-Language: en-US
To: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
CC: Jan Beulich <jbeulich@suse.com>, Oleksandr Andrushchenko
	<oleksandr_andrushchenko@epam.com>, Andrew Cooper
	<andrew.cooper3@citrix.com>, Wei Liu <wl@xen.org>, George Dunlap
	<george.dunlap@citrix.com>, Julien Grall <julien@xen.org>, Stefano Stabellini
	<sstabellini@kernel.org>, Jun Nakajima <jun.nakajima@intel.com>, Kevin Tian
	<kevin.tian@intel.com>, Paul Durrant <paul@xen.org>, Volodymyr Babchuk
	<volodymyr_babchuk@epam.com>, <xen-devel@lists.xenproject.org>
References: <20240109215145.430207-1-stewart.hildebrand@amd.com>
 <20240109215145.430207-2-stewart.hildebrand@amd.com>
 <20240115194309.45683-1-stewart.hildebrand@amd.com>
 <7e936e6a-3218-4c4a-ac68-a58cd363a11d@suse.com>
 <e05e63ab-a86f-45c4-bd80-2b7d6b99aa3d@amd.com> <ZbDIoobsFmx-U5Xt@macbook>
From: Stewart Hildebrand <stewart.hildebrand@amd.com>
In-Reply-To: <ZbDIoobsFmx-U5Xt@macbook>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CY4PEPF0000EE33:EE_|CY8PR12MB7729:EE_
X-MS-Office365-Filtering-Correlation-Id: a9486e12-2fc4-49ae-63aa-08dc1d19ff1b
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam: BCL:0;
X-Microsoft-Antispam-Message-Info:
	4ZB5KK4o6Q9+8DvpgVhC05xC1RUiHlVzYyG2Wnf75QnI5vcz/53ATA5WcCA0T9ek+yKeGE6R2RhcNf3I5wgSyFRmEeHjLgdlg9NfIUBxYqtjqEPcQz1US0U1fjpbMN4+w8710OR6I1RFVxjBswepeX9FDSzJaUh4Aq41CIRPs6m8qm/yDpfdpI2i6RHcrSqjegr3Yngq54LVhCCNnTWzElHEZRwB+gbtTjMhLpHKJM8KmdNHpzlQuLG5R7PJD9MN8nTIdty47GC3A4FsIP2bD/RtyRXDIE1BO8rF2Q3a2GeFGeW0yyLuWxfqYSAl1XObt1jhuA7M9mb/bvxsaH0eFaiZr3Sh4z5+nKZOqn7gtr0AdIa+fGo/NhNdQA4WZVVJbH1Kwf+HUVYXskZut+9lqqo6o7aGOUapm6LrqCSwfN5jjmITk1vlAzeeDPZUFSmC3SQHbm381A2mY/Ug2guLimXM9bzgDgBiHf4rbN6SV8KH+sBDpqZN/gM+6ro5Oet/mwuRc1E/9YlLxjWkYX1GcqsNMlZdla6uGUQpG+2yoruXPZKicJpbYR/8GFrlmdIXCkfWnb8pE7+HHp3sEcgSbk426B8A3TBgRK0DO22e31IkCwkshRPQtRaH2TSLCvBiS+H6vAmz+m9rfi6aUE8P7GHzeHB0BaEUSMKUzSi5LM7zFTGPIWxPOZUQub9FTcs7kn5diMeF5jXT3UJK5qwZm3z86R6roi+GQYvWSyJ6MWAhwYuxbWEIQBiiUa6++9Ro2goO+ZCYn7q7X+wHFqC3yLgJjaluL7k0pD2BIj9oUWdH36fzogVzQTERqxWf5jzM
X-Forefront-Antispam-Report:
	CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230031)(4636009)(39860400002)(396003)(376002)(346002)(136003)(230922051799003)(64100799003)(186009)(451199024)(1800799012)(82310400011)(40470700004)(36840700001)(46966006)(478600001)(31686004)(40480700001)(40460700003)(82740400003)(4326008)(8936002)(44832011)(5660300002)(8676002)(426003)(336012)(83380400001)(7416002)(2906002)(81166007)(36860700001)(31696002)(47076005)(26005)(54906003)(86362001)(70586007)(41300700001)(16576012)(53546011)(36756003)(6916009)(356005)(70206006)(316002)(2616005)(43740500002)(36900700001);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Jan 2024 20:21:07.0046
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: a9486e12-2fc4-49ae-63aa-08dc1d19ff1b
X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com]
X-MS-Exchange-CrossTenant-AuthSource:
	CY4PEPF0000EE33.namprd05.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY8PR12MB7729

On 1/24/24 03:21, Roger Pau Monné wrote:
> On Wed, Jan 24, 2024 at 12:07:28AM -0500, Stewart Hildebrand wrote:
>> On 1/23/24 09:29, Jan Beulich wrote:
>>> On 15.01.2024 20:43, Stewart Hildebrand wrote:
>>>> @@ -1043,11 +1043,11 @@ static int __pci_enable_msix(struct pci_dev *pdev, struct msi_info *msi,
>>>>  {
>>>>      struct msi_desc *old_desc;
>>>>  
>>>> -    ASSERT(pcidevs_locked());
>>>> -
>>>>      if ( !pdev || !pdev->msix )
>>>>          return -ENODEV;
>>>>  
>>>> +    ASSERT(pcidevs_locked() || rw_is_locked(&pdev->domain->pci_lock));
>>>> +
>>>>      if ( msi->entry_nr >= pdev->msix->nr_entries )
>>>>          return -EINVAL;
>>>
>>> Further looking at this - is dereferencing pdev actually safe without holding
>>> the global lock?
> 
> It is safe because either the global pcidevs lock or the per-domain
> pci_lock will be held, which should prevent the device from being
> removed.
> 
>> Are you referring to the new placement of the ASSERT, which opens up the possibility that pdev could be dereferenced and the function return before the ASSERT? If that is what you mean, I see your point. The ASSERT was placed there simply because we wanted to check that pdev != NULL first. See prior discussion at [1]. Hmm.. How about splitting the pdev-checking condition? E.g.:
>>
>>     if ( !pdev )
>>         return -ENODEV;
>>
>>     ASSERT(pcidevs_locked() || rw_is_locked(&pdev->domain->pci_lock));
>>
>>     if ( !pdev->msix )
>>         return -ENODEV;
> 
> I'm not specially worried about the position of the assert, those are
> just debug messages at the end.
> 
> One worry I have after further looking at the code, when called from
> ns16550_init_postirq(), does the device have pdev->domain set?
> 
> That case would satisfy the first condition of the assert, so won't
> attempt to dereference pdev->domain, but still would be good to ensure
> consistency here wrt the state of pdev->domain.

Indeed. How about this?

    if ( !pdev )
        return -ENODEV;

    ASSERT(pcidevs_locked() ||
           (pdev->domain && rw_is_locked(&pdev->domain->pci_lock)));

    if ( !pdev->msix )
        return -ENODEV;

And similarly in __pci_enable_msi(), without the !pdev->msix check. And similarly in pci_enable_msi(), which then should also gain its own if ( !pdev ) return -ENODEV; check.


From xen-devel-bounces@lists.xenproject.org Wed Jan 24 20:26:03 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 24 Jan 2024 20:26:03 +0000
Received: from list by lists.xenproject.org with outflank-mailman.671226.1044470 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSjow-0001Ae-Av; Wed, 24 Jan 2024 20:26:02 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 671226.1044470; Wed, 24 Jan 2024 20:26:02 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSjow-0001AX-6r; Wed, 24 Jan 2024 20:26:02 +0000
Received: by outflank-mailman (input) for mailman id 671226;
 Wed, 24 Jan 2024 20:26:00 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=Zgc/=JC=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1rSjou-0001AR-Ir
 for xen-devel@lists.xenproject.org; Wed, 24 Jan 2024 20:26:00 +0000
Received: from mail-wm1-x32f.google.com (mail-wm1-x32f.google.com
 [2a00:1450:4864:20::32f])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id c82f4dbc-baf6-11ee-9b0f-b553b5be7939;
 Wed, 24 Jan 2024 21:25:58 +0100 (CET)
Received: by mail-wm1-x32f.google.com with SMTP id
 5b1f17b1804b1-40e80046246so247915e9.1
 for <xen-devel@lists.xenproject.org>; Wed, 24 Jan 2024 12:25:58 -0800 (PST)
Received: from [10.80.67.30] (default-46-102-197-194.interdsl.co.uk.
 [46.102.197.194]) by smtp.gmail.com with ESMTPSA id
 h9-20020a05600c314900b0040e8800fcf3sm181958wmo.5.2024.01.24.12.25.56
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 24 Jan 2024 12:25:57 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: c82f4dbc-baf6-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1706127957; x=1706732757; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=RDQCwhm+rWzxLsogpCruXYPPndOSKczdziyjfyIgJ/s=;
        b=FOFu2IdZomjsdvjtdQ8bkWgQhINvKumtzoSHS80i5ZovRRRu6DrA8ig0+YPZJl3Ufy
         /d2J32j5ov5Gl04lYFzFXULcGIZWaliHjmyH8yWBi1zn0Grcu3cIjBTJf2Nbc6OoqVFY
         /JYKYWlX8xeA79Pm8/4kqr9bvCVdVpHop0QkE=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706127957; x=1706732757;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=RDQCwhm+rWzxLsogpCruXYPPndOSKczdziyjfyIgJ/s=;
        b=B6MHQqmXZlhUdl3teUBmOfPYTj/qzO15M1uzgz+346LxpmyIcIWKVcxjVZ4mbh/fi+
         HoaTFWW80AMjdiQqMJMThSXMLyZ5OkoQf8GfzJrBsHIeHGJPWw+iWXrgs+78Rdiq5t15
         IeQA5+FawzWc4NwGf9AT6yQRMmTGrrAdBB2bhhzw5S5SMkvgwO5XR1E+rBs7PJE6SvGM
         lvaJCh0hQhWdepig2oRHqi/zmZEZ5N9o3GTjyN69Hk9FUIhbk90cyy6DCNOOvezOez3j
         aWQ7CuzyUMnCoqfO/Jmf1oF4Ib45CrdWH2IHOY1vwhmE4rH1LVHsdc1TNdYffKTE1QVI
         U1Jw==
X-Gm-Message-State: AOJu0YyR/b60PMfftCz+OVT3HRz/98ucJEab+WtDXUg11GXMhcw5JueK
	22fBrec3lL9NLkO2F2Mw3Uf6v7H/d5vqtj7/ohgMRn8IB3tbWJ8f+ZaUmbc3JjE=
X-Google-Smtp-Source: AGHT+IEIp/e6E2fz8rpAqC1OQoAzpfGh2zAeC9HeWcvgF3gxF/a64zeK4rnEuvnkKbMthMmG6LWx1g==
X-Received: by 2002:a05:600c:acc:b0:40e:52cf:e7af with SMTP id c12-20020a05600c0acc00b0040e52cfe7afmr126140wmr.130.1706127957425;
        Wed, 24 Jan 2024 12:25:57 -0800 (PST)
Message-ID: <a289ae5e-0831-4f7b-8f04-df71af23ae0b@citrix.com>
Date: Wed, 24 Jan 2024 20:25:56 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 2/2] xen/dm: arm: Introduce inject_msi2 DM op
Content-Language: en-GB
To: Mykyta Poturai <Mykyta_Poturai@epam.com>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Wei Liu <wl@xen.org>, Anthony PERARD <anthony.perard@citrix.com>,
 Juergen Gross <jgross@suse.com>, George Dunlap <george.dunlap@citrix.com>,
 Jan Beulich <jbeulich@suse.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>,
 Bertrand Marquis <bertrand.marquis@arm.com>,
 Michal Orzel <michal.orzel@amd.com>,
 Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
References: <cover.1705066642.git.mykyta_poturai@epam.com>
 <6c551b03796fbf091b22fcde96d894cd5308ff91.1705066642.git.mykyta_poturai@epam.com>
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 xsFNBFLhNn8BEADVhE+Hb8i0GV6mihnnr/uiQQdPF8kUoFzCOPXkf7jQ5sLYeJa0cQi6Penp
 VtiFYznTairnVsN5J+ujSTIb+OlMSJUWV4opS7WVNnxHbFTPYZVQ3erv7NKc2iVizCRZ2Kxn
 srM1oPXWRic8BIAdYOKOloF2300SL/bIpeD+x7h3w9B/qez7nOin5NzkxgFoaUeIal12pXSR
 Q354FKFoy6Vh96gc4VRqte3jw8mPuJQpfws+Pb+swvSf/i1q1+1I4jsRQQh2m6OTADHIqg2E
 ofTYAEh7R5HfPx0EXoEDMdRjOeKn8+vvkAwhviWXTHlG3R1QkbE5M/oywnZ83udJmi+lxjJ5
 YhQ5IzomvJ16H0Bq+TLyVLO/VRksp1VR9HxCzItLNCS8PdpYYz5TC204ViycobYU65WMpzWe
 LFAGn8jSS25XIpqv0Y9k87dLbctKKA14Ifw2kq5OIVu2FuX+3i446JOa2vpCI9GcjCzi3oHV
 e00bzYiHMIl0FICrNJU0Kjho8pdo0m2uxkn6SYEpogAy9pnatUlO+erL4LqFUO7GXSdBRbw5
 gNt25XTLdSFuZtMxkY3tq8MFss5QnjhehCVPEpE6y9ZjI4XB8ad1G4oBHVGK5LMsvg22PfMJ
 ISWFSHoF/B5+lHkCKWkFxZ0gZn33ju5n6/FOdEx4B8cMJt+cWwARAQABzSlBbmRyZXcgQ29v
 cGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPsLBegQTAQgAJAIbAwULCQgHAwUVCgkI
 CwUWAgMBAAIeAQIXgAUCWKD95wIZAQAKCRBlw/kGpdefoHbdD/9AIoR3k6fKl+RFiFpyAhvO
 59ttDFI7nIAnlYngev2XUR3acFElJATHSDO0ju+hqWqAb8kVijXLops0gOfqt3VPZq9cuHlh
 IMDquatGLzAadfFx2eQYIYT+FYuMoPZy/aTUazmJIDVxP7L383grjIkn+7tAv+qeDfE+txL4
 SAm1UHNvmdfgL2/lcmL3xRh7sub3nJilM93RWX1Pe5LBSDXO45uzCGEdst6uSlzYR/MEr+5Z
 JQQ32JV64zwvf/aKaagSQSQMYNX9JFgfZ3TKWC1KJQbX5ssoX/5hNLqxMcZV3TN7kU8I3kjK
 mPec9+1nECOjjJSO/h4P0sBZyIUGfguwzhEeGf4sMCuSEM4xjCnwiBwftR17sr0spYcOpqET
 ZGcAmyYcNjy6CYadNCnfR40vhhWuCfNCBzWnUW0lFoo12wb0YnzoOLjvfD6OL3JjIUJNOmJy
 RCsJ5IA/Iz33RhSVRmROu+TztwuThClw63g7+hoyewv7BemKyuU6FTVhjjW+XUWmS/FzknSi
 dAG+insr0746cTPpSkGl3KAXeWDGJzve7/SBBfyznWCMGaf8E2P1oOdIZRxHgWj0zNr1+ooF
 /PzgLPiCI4OMUttTlEKChgbUTQ+5o0P080JojqfXwbPAyumbaYcQNiH1/xYbJdOFSiBv9rpt
 TQTBLzDKXok86M7BTQRS4TZ/ARAAkgqudHsp+hd82UVkvgnlqZjzz2vyrYfz7bkPtXaGb9H4
 Rfo7mQsEQavEBdWWjbga6eMnDqtu+FC+qeTGYebToxEyp2lKDSoAsvt8w82tIlP/EbmRbDVn
 7bhjBlfRcFjVYw8uVDPptT0TV47vpoCVkTwcyb6OltJrvg/QzV9f07DJswuda1JH3/qvYu0p
 vjPnYvCq4NsqY2XSdAJ02HrdYPFtNyPEntu1n1KK+gJrstjtw7KsZ4ygXYrsm/oCBiVW/OgU
 g/XIlGErkrxe4vQvJyVwg6YH653YTX5hLLUEL1NS4TCo47RP+wi6y+TnuAL36UtK/uFyEuPy
 wwrDVcC4cIFhYSfsO0BumEI65yu7a8aHbGfq2lW251UcoU48Z27ZUUZd2Dr6O/n8poQHbaTd
 6bJJSjzGGHZVbRP9UQ3lkmkmc0+XCHmj5WhwNNYjgbbmML7y0fsJT5RgvefAIFfHBg7fTY/i
 kBEimoUsTEQz+N4hbKwo1hULfVxDJStE4sbPhjbsPCrlXf6W9CxSyQ0qmZ2bXsLQYRj2xqd1
 bpA+1o1j2N4/au1R/uSiUFjewJdT/LX1EklKDcQwpk06Af/N7VZtSfEJeRV04unbsKVXWZAk
 uAJyDDKN99ziC0Wz5kcPyVD1HNf8bgaqGDzrv3TfYjwqayRFcMf7xJaL9xXedMcAEQEAAcLB
 XwQYAQgACQUCUuE2fwIbDAAKCRBlw/kGpdefoG4XEACD1Qf/er8EA7g23HMxYWd3FXHThrVQ
 HgiGdk5Yh632vjOm9L4sd/GCEACVQKjsu98e8o3ysitFlznEns5EAAXEbITrgKWXDDUWGYxd
 pnjj2u+GkVdsOAGk0kxczX6s+VRBhpbBI2PWnOsRJgU2n10PZ3mZD4Xu9kU2IXYmuW+e5KCA
 vTArRUdCrAtIa1k01sPipPPw6dfxx2e5asy21YOytzxuWFfJTGnVxZZSCyLUO83sh6OZhJkk
 b9rxL9wPmpN/t2IPaEKoAc0FTQZS36wAMOXkBh24PQ9gaLJvfPKpNzGD8XWR5HHF0NLIJhgg
 4ZlEXQ2fVp3XrtocHqhu4UZR4koCijgB8sB7Tb0GCpwK+C4UePdFLfhKyRdSXuvY3AHJd4CP
 4JzW0Bzq/WXY3XMOzUTYApGQpnUpdOmuQSfpV9MQO+/jo7r6yPbxT7CwRS5dcQPzUiuHLK9i
 nvjREdh84qycnx0/6dDroYhp0DFv4udxuAvt1h4wGwTPRQZerSm4xaYegEFusyhbZrI0U9tJ
 B8WrhBLXDiYlyJT6zOV2yZFuW47VrLsjYnHwn27hmxTC/7tvG3euCklmkn9Sl9IAKFu29RSo
 d5bD8kMSCYsTqtTfT6W4A3qHGvIDta3ptLYpIAOD2sY3GYq2nf3Bbzx81wZK14JdDDHUX2Rs
 6+ahAA==
In-Reply-To: <6c551b03796fbf091b22fcde96d894cd5308ff91.1705066642.git.mykyta_poturai@epam.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 14/01/2024 10:01 am, Mykyta Poturai wrote:
> diff --git a/tools/include/xendevicemodel.h b/tools/include/xendevicemodel.h
> index 797e0c6b29..4833e55bce 100644
> --- a/tools/include/xendevicemodel.h
> +++ b/tools/include/xendevicemodel.h
> @@ -236,6 +236,20 @@ int xendevicemodel_inject_msi(
>      xendevicemodel_handle *dmod, domid_t domid, uint64_t msi_addr,
>      uint32_t msi_data);
>  
> +/**
> + * This function injects an MSI into a guest.
> + *
> + * @parm dmod a handle to an open devicemodel interface.
> + * @parm domid the domain id to be serviced
> + * @parm msi_addr the MSI address (0xfeexxxxx)

This 0xfeexxxxx is an x86-ism which I doubt is correct for ARM.  I'd
suggest dropping it from the comment.

> + * @parm source_id the PCI SBDF of the source device
> + * @parm msi_data the MSI data
> + * @return 0 on success, -1 on failure.
> +*/
> +int xendevicemodel_inject_msi2(
> +    xendevicemodel_handle *dmod, domid_t domid, uint64_t msi_addr, uint32_t source_id,
> +    uint32_t msi_data, unsigned int source_id_valid);

The Source ID is always valid when making this call.  It is only within
the hypervisor itself that we may need to worry about the source ID
being invalid.

This means you don't have the flags field, and as a consequence, there's
no padding to worry about.

Also, the msi_ prefix to address and data are redundant.  Either drop
them, or put a prefix on source_id too, because we shouldn't be
inconsistent here.

> +
>  /**
>   * This function enables tracking of changes in the VRAM area.
>   *
> diff --git a/tools/libs/devicemodel/core.c b/tools/libs/devicemodel/core.c
> index 8e619eeb0a..17ad00c5d9 100644
> --- a/tools/libs/devicemodel/core.c
> +++ b/tools/libs/devicemodel/core.c
> @@ -448,6 +448,28 @@ int xendevicemodel_set_irq_level(
>      return xendevicemodel_op(dmod, domid, 1, &op, sizeof(op));
>  }
>  
> +int xendevicemodel_inject_msi2(
> +    xendevicemodel_handle *dmod, domid_t domid, uint64_t msi_addr, uint32_t source_id,
> +    uint32_t msi_data, unsigned int source_id_valid)
> +{
> +    struct xen_dm_op op;
> +    struct xen_dm_op_inject_msi2 *data;
> +
> +    memset(&op, 0, sizeof(op));
> +
> +    op.op = XEN_DMOP_inject_msi2;
> +    data = &op.u.inject_msi2;
> +
> +    data->addr = msi_addr;
> +    data->data = msi_data;
> +    if ( source_id_valid ) {
> +        data->source_id = source_id;
> +        data->flags = XEN_DMOP_MSI_SOURCE_ID_VALID;
> +    }
> +
> +    return xendevicemodel_op(dmod, domid, 1, &op, sizeof(op));

{
    struct xen_dm_op op = {
        .op = XEN_DMOP_inject_msi2,
        .u.inject_msi2 = {
            .addr = msi_addr,
            .data = msi_data,
            .source_id = source_id,
        },
    };

    return xendevicemodel_op(dmod, domid, 1, &op, sizeof(op));
}


> diff --git a/xen/arch/x86/hvm/dm.c b/xen/arch/x86/hvm/dm.c
> index 462691f91d..a4a0e3dff9 100644
> --- a/xen/arch/x86/hvm/dm.c
> +++ b/xen/arch/x86/hvm/dm.c
> @@ -539,6 +540,18 @@ int dm_op(const struct dmop_args *op_args)
>          break;
>      }
>  
> +    case XEN_DMOP_inject_msi2:
> +    {
> +        const struct xen_dm_op_inject_msi2 *data =
> +            &op.u.inject_msi2;
> +
> +        if ( !(data->flags & XEN_DMOP_MSI_SOURCE_ID_VALID) )
> +            printk(XENLOG_WARNING "XEN_DMOP_inject_msi2: source_id is ignored\n");
> +
> +        rc = hvm_inject_msi(d, data->addr, data->data);

You need a prep patch adding a source id parameter into hvm_inject_msi().

The XEN_DMOP_inject_msi case can probably pass in 0 in the short term,
and it can probably be discarded internally.

As I said before, the source id doesn't matter until we start trying to
expose vIOMMUs to guests, at which point I suspect the easiest option
will simply to be to reject XEN_DMOP_inject_msi against a domain with a
vIOMMU and force Qemu/whatever in dom0 to use XEN_DMOP_inject_msi2.

~Andrew


From xen-devel-bounces@lists.xenproject.org Wed Jan 24 20:50:35 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 24 Jan 2024 20:50:35 +0000
Received: from list by lists.xenproject.org with outflank-mailman.671232.1044479 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSkCS-0005ri-7r; Wed, 24 Jan 2024 20:50:20 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 671232.1044479; Wed, 24 Jan 2024 20:50:20 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSkCS-0005rb-3k; Wed, 24 Jan 2024 20:50:20 +0000
Received: by outflank-mailman (input) for mailman id 671232;
 Wed, 24 Jan 2024 20:50:18 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=Zgc/=JC=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1rSkCQ-0005rS-FN
 for xen-devel@lists.xenproject.org; Wed, 24 Jan 2024 20:50:18 +0000
Received: from mail-wr1-x430.google.com (mail-wr1-x430.google.com
 [2a00:1450:4864:20::430])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 2daace7b-bafa-11ee-98f5-6d05b1d4d9a1;
 Wed, 24 Jan 2024 21:50:16 +0100 (CET)
Received: by mail-wr1-x430.google.com with SMTP id
 ffacd0b85a97d-3392291b21bso5062514f8f.1
 for <xen-devel@lists.xenproject.org>; Wed, 24 Jan 2024 12:50:16 -0800 (PST)
Received: from [10.80.67.30] (default-46-102-197-194.interdsl.co.uk.
 [46.102.197.194]) by smtp.gmail.com with ESMTPSA id
 p13-20020a05600c468d00b0040eaebc4e8fsm238362wmo.1.2024.01.24.12.50.15
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 24 Jan 2024 12:50:15 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 2daace7b-bafa-11ee-98f5-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1706129416; x=1706734216; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=2VwY+aCsFZluRQARnFTdV8KtOVxvgFwpSewfPimzyaA=;
        b=aXBjKZiGAY04GOJmM9J5QiMiDAkuSxVv8DKV6wWJvYKtU8k7dRCfe9djNoYNy7Yh+v
         Qq7XIgjdSbX95FRZfuqApE43S764GeSpyBhquRO5SI2i/l2BQ7eaWap7TtUxOdw+5Znb
         ti8rguMonyWniUMmfRwqCyBPN5zUbQLoaRPC8=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706129416; x=1706734216;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=2VwY+aCsFZluRQARnFTdV8KtOVxvgFwpSewfPimzyaA=;
        b=NkVoRDX6HcGsqbSpex/B5JDUj0Vy7lV6MAXycWcxEjZeN5SymBqiQAoLwXkVKOZ106
         noRoxqR30XReoG7Fz33B/0JCRo+8wocLz7oPQi1LxYnhgnI+h3wqb1PzMvqswywBVIbM
         l+MHu4aatGDmxvRum2+HWJ4WnjoJMqUI1Xuk1D5d5teahHpq8rw+qi7tDi8/Cx/EbYLU
         9UO/0s9f5030ue8Hq3II8HalUVyNjeCayv0rQ6CViDuMF5TFXnbZqf9orYHmtz2A4b4b
         27YtFFBqV1Eod4d34GwfRtixVBG51iPx1H/5z3VAlAi/U5Gd9ldQazWIpRC5RwdqGCQG
         a/XA==
X-Gm-Message-State: AOJu0YwMTC1eX5AlO/XeZFZlKnzA54u9MNj85akhej6kqTYkxwUjL3wQ
	wynRRGmAXsKda/hW+3QrVULxhiolLqIKkG0Q3YjT5Yve5oDI2Awr/JRXpJ5JNI0=
X-Google-Smtp-Source: AGHT+IF8Fe78+HrZvhRSc8fzqN+CTnPc9YFviEDIGM7H/HnMTTMlJJ3rQ+UgCtEP1/PMZccqtzsLng==
X-Received: by 2002:a05:600c:46ce:b0:40e:88fb:e040 with SMTP id q14-20020a05600c46ce00b0040e88fbe040mr1473255wmo.22.1706129416209;
        Wed, 24 Jan 2024 12:50:16 -0800 (PST)
Message-ID: <dcf0fbe3-a95d-483f-a424-949c16805786@citrix.com>
Date: Wed, 24 Jan 2024 20:50:15 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 2/2] xen/dm: arm: Introduce inject_msi2 DM op
Content-Language: en-GB
To: Stefano Stabellini <sstabellini@kernel.org>,
 Mykyta Poturai <Mykyta_Poturai@epam.com>
Cc: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>,
 Wei Liu <wl@xen.org>, Anthony PERARD <anthony.perard@citrix.com>,
 Juergen Gross <jgross@suse.com>, George Dunlap <george.dunlap@citrix.com>,
 Jan Beulich <jbeulich@suse.com>, Julien Grall <julien@xen.org>,
 Bertrand Marquis <bertrand.marquis@arm.com>,
 Michal Orzel <michal.orzel@amd.com>,
 Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
References: <cover.1705066642.git.mykyta_poturai@epam.com>
 <6c551b03796fbf091b22fcde96d894cd5308ff91.1705066642.git.mykyta_poturai@epam.com>
 <alpine.DEB.2.22.394.2401231704270.2287888@ubuntu-linux-20-04-desktop>
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 xsFNBFLhNn8BEADVhE+Hb8i0GV6mihnnr/uiQQdPF8kUoFzCOPXkf7jQ5sLYeJa0cQi6Penp
 VtiFYznTairnVsN5J+ujSTIb+OlMSJUWV4opS7WVNnxHbFTPYZVQ3erv7NKc2iVizCRZ2Kxn
 srM1oPXWRic8BIAdYOKOloF2300SL/bIpeD+x7h3w9B/qez7nOin5NzkxgFoaUeIal12pXSR
 Q354FKFoy6Vh96gc4VRqte3jw8mPuJQpfws+Pb+swvSf/i1q1+1I4jsRQQh2m6OTADHIqg2E
 ofTYAEh7R5HfPx0EXoEDMdRjOeKn8+vvkAwhviWXTHlG3R1QkbE5M/oywnZ83udJmi+lxjJ5
 YhQ5IzomvJ16H0Bq+TLyVLO/VRksp1VR9HxCzItLNCS8PdpYYz5TC204ViycobYU65WMpzWe
 LFAGn8jSS25XIpqv0Y9k87dLbctKKA14Ifw2kq5OIVu2FuX+3i446JOa2vpCI9GcjCzi3oHV
 e00bzYiHMIl0FICrNJU0Kjho8pdo0m2uxkn6SYEpogAy9pnatUlO+erL4LqFUO7GXSdBRbw5
 gNt25XTLdSFuZtMxkY3tq8MFss5QnjhehCVPEpE6y9ZjI4XB8ad1G4oBHVGK5LMsvg22PfMJ
 ISWFSHoF/B5+lHkCKWkFxZ0gZn33ju5n6/FOdEx4B8cMJt+cWwARAQABzSlBbmRyZXcgQ29v
 cGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPsLBegQTAQgAJAIbAwULCQgHAwUVCgkI
 CwUWAgMBAAIeAQIXgAUCWKD95wIZAQAKCRBlw/kGpdefoHbdD/9AIoR3k6fKl+RFiFpyAhvO
 59ttDFI7nIAnlYngev2XUR3acFElJATHSDO0ju+hqWqAb8kVijXLops0gOfqt3VPZq9cuHlh
 IMDquatGLzAadfFx2eQYIYT+FYuMoPZy/aTUazmJIDVxP7L383grjIkn+7tAv+qeDfE+txL4
 SAm1UHNvmdfgL2/lcmL3xRh7sub3nJilM93RWX1Pe5LBSDXO45uzCGEdst6uSlzYR/MEr+5Z
 JQQ32JV64zwvf/aKaagSQSQMYNX9JFgfZ3TKWC1KJQbX5ssoX/5hNLqxMcZV3TN7kU8I3kjK
 mPec9+1nECOjjJSO/h4P0sBZyIUGfguwzhEeGf4sMCuSEM4xjCnwiBwftR17sr0spYcOpqET
 ZGcAmyYcNjy6CYadNCnfR40vhhWuCfNCBzWnUW0lFoo12wb0YnzoOLjvfD6OL3JjIUJNOmJy
 RCsJ5IA/Iz33RhSVRmROu+TztwuThClw63g7+hoyewv7BemKyuU6FTVhjjW+XUWmS/FzknSi
 dAG+insr0746cTPpSkGl3KAXeWDGJzve7/SBBfyznWCMGaf8E2P1oOdIZRxHgWj0zNr1+ooF
 /PzgLPiCI4OMUttTlEKChgbUTQ+5o0P080JojqfXwbPAyumbaYcQNiH1/xYbJdOFSiBv9rpt
 TQTBLzDKXok86M7BTQRS4TZ/ARAAkgqudHsp+hd82UVkvgnlqZjzz2vyrYfz7bkPtXaGb9H4
 Rfo7mQsEQavEBdWWjbga6eMnDqtu+FC+qeTGYebToxEyp2lKDSoAsvt8w82tIlP/EbmRbDVn
 7bhjBlfRcFjVYw8uVDPptT0TV47vpoCVkTwcyb6OltJrvg/QzV9f07DJswuda1JH3/qvYu0p
 vjPnYvCq4NsqY2XSdAJ02HrdYPFtNyPEntu1n1KK+gJrstjtw7KsZ4ygXYrsm/oCBiVW/OgU
 g/XIlGErkrxe4vQvJyVwg6YH653YTX5hLLUEL1NS4TCo47RP+wi6y+TnuAL36UtK/uFyEuPy
 wwrDVcC4cIFhYSfsO0BumEI65yu7a8aHbGfq2lW251UcoU48Z27ZUUZd2Dr6O/n8poQHbaTd
 6bJJSjzGGHZVbRP9UQ3lkmkmc0+XCHmj5WhwNNYjgbbmML7y0fsJT5RgvefAIFfHBg7fTY/i
 kBEimoUsTEQz+N4hbKwo1hULfVxDJStE4sbPhjbsPCrlXf6W9CxSyQ0qmZ2bXsLQYRj2xqd1
 bpA+1o1j2N4/au1R/uSiUFjewJdT/LX1EklKDcQwpk06Af/N7VZtSfEJeRV04unbsKVXWZAk
 uAJyDDKN99ziC0Wz5kcPyVD1HNf8bgaqGDzrv3TfYjwqayRFcMf7xJaL9xXedMcAEQEAAcLB
 XwQYAQgACQUCUuE2fwIbDAAKCRBlw/kGpdefoG4XEACD1Qf/er8EA7g23HMxYWd3FXHThrVQ
 HgiGdk5Yh632vjOm9L4sd/GCEACVQKjsu98e8o3ysitFlznEns5EAAXEbITrgKWXDDUWGYxd
 pnjj2u+GkVdsOAGk0kxczX6s+VRBhpbBI2PWnOsRJgU2n10PZ3mZD4Xu9kU2IXYmuW+e5KCA
 vTArRUdCrAtIa1k01sPipPPw6dfxx2e5asy21YOytzxuWFfJTGnVxZZSCyLUO83sh6OZhJkk
 b9rxL9wPmpN/t2IPaEKoAc0FTQZS36wAMOXkBh24PQ9gaLJvfPKpNzGD8XWR5HHF0NLIJhgg
 4ZlEXQ2fVp3XrtocHqhu4UZR4koCijgB8sB7Tb0GCpwK+C4UePdFLfhKyRdSXuvY3AHJd4CP
 4JzW0Bzq/WXY3XMOzUTYApGQpnUpdOmuQSfpV9MQO+/jo7r6yPbxT7CwRS5dcQPzUiuHLK9i
 nvjREdh84qycnx0/6dDroYhp0DFv4udxuAvt1h4wGwTPRQZerSm4xaYegEFusyhbZrI0U9tJ
 B8WrhBLXDiYlyJT6zOV2yZFuW47VrLsjYnHwn27hmxTC/7tvG3euCklmkn9Sl9IAKFu29RSo
 d5bD8kMSCYsTqtTfT6W4A3qHGvIDta3ptLYpIAOD2sY3GYq2nf3Bbzx81wZK14JdDDHUX2Rs
 6+ahAA==
In-Reply-To: <alpine.DEB.2.22.394.2401231704270.2287888@ubuntu-linux-20-04-desktop>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 24/01/2024 1:07 am, Stefano Stabellini wrote:
>> I agree with Jan that we could reuse
>> xendevicemodel_inject_msi by assuing that PCI BDF zero is invalid.

I've already explained why that will break future x86.  (See the other
thread off this patch for specifics).

When we add vIOMMUs to guests, we *must* have correct source ids.  0 is
ambiguous, so not safe to reuse.


Allocating a new subop now is the only way to not shoot in the foot later.

~Andrew


From xen-devel-bounces@lists.xenproject.org Wed Jan 24 20:59:48 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 24 Jan 2024 20:59:48 +0000
Received: from list by lists.xenproject.org with outflank-mailman.671237.1044489 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSkLY-0006yt-2U; Wed, 24 Jan 2024 20:59:44 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 671237.1044489; Wed, 24 Jan 2024 20:59:44 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSkLX-0006ym-V5; Wed, 24 Jan 2024 20:59:43 +0000
Received: by outflank-mailman (input) for mailman id 671237;
 Wed, 24 Jan 2024 20:59:43 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=LRLw=JC=gmail.com=jandryuk@srs-se1.protection.inumbo.net>)
 id 1rSkLX-0006yg-4g
 for xen-devel@lists.xenproject.org; Wed, 24 Jan 2024 20:59:43 +0000
Received: from mail-oi1-x234.google.com (mail-oi1-x234.google.com
 [2607:f8b0:4864:20::234])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 7d1d86a6-bafb-11ee-9b0f-b553b5be7939;
 Wed, 24 Jan 2024 21:59:40 +0100 (CET)
Received: by mail-oi1-x234.google.com with SMTP id
 5614622812f47-3bd5c4cffefso5858916b6e.1
 for <xen-devel@lists.xenproject.org>; Wed, 24 Jan 2024 12:59:40 -0800 (PST)
Received: from pm2-ws13.praxislan02.com
 (207-172-141-204.s8906.c3-0.slvr-cbr1.lnh-slvr.md.cable.rcncustomer.com.
 [207.172.141.204]) by smtp.gmail.com with ESMTPSA id
 d3-20020ac80603000000b004260b65b4f7sm4643391qth.97.2024.01.24.12.59.37
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 24 Jan 2024 12:59:37 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 7d1d86a6-bafb-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1706129978; x=1706734778; darn=lists.xenproject.org;
        h=content-transfer-encoding:mime-version:message-id:date:subject:cc
         :to:from:from:to:cc:subject:date:message-id:reply-to;
        bh=rs+2M8KTyAKehsizBSzR0MS8R8OUBfDLhnXKxIq1CfM=;
        b=iTXCi5HTJTaveQ/7DNMqqwickQeqpLANlXZXvlOwulb3RfgYZhHjeZM5bxma7sw0qO
         mTk+vlKsmph+AoWgaIsNekLdncBivcIpPNFp/x1L1IPg9L3AAm47NJDzXEok8hkEqEyx
         ldiO4sgKQrB6bjCAtAUg6ExVHkm51K3swUJj0HAdHmq1s3iMlZaiDfX2Hk6GxfOz4uN9
         tRH0j9I3XYZjt98gNIjXmnc0uYGf6plVxs6fXOCxLPZEo1PpsMxTSd1ANvBJD7fRTRw5
         MyFhcS6wjPusrz3A3c9URGfNYPIhdJr05k6w2/W+5f8xOUCR+4J9fDuqVKO8+4dX5p5O
         /vUg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706129978; x=1706734778;
        h=content-transfer-encoding:mime-version:message-id:date:subject:cc
         :to:from:x-gm-message-state:from:to:cc:subject:date:message-id
         :reply-to;
        bh=rs+2M8KTyAKehsizBSzR0MS8R8OUBfDLhnXKxIq1CfM=;
        b=Gvspvd3H49uZ4Q4DrpmldkXbHBTkBEhf5r5+/g+jFhiLTiC6XJPZ3NKwZdbAQbep2g
         Ss8F47jacOg2Ozv/hQ5ox2SoWbG9l6ZRANRZqqEpRe/pJ47ShfUrcEQW1pxsk1Mzdp9X
         5UorGEtNn7PP4zyPJ2/wD2jOJ5YHW69pS24X33CbJ9q0N92jJfMU9QETidwQeqNLc+6c
         m7XHwLyYOYDFvWfGnxpcC0pe+z43Ut92Mtk9370B/85R+OucWqPAM16sSLEL20ZWppSr
         LTFu5fExFCLcPk5jB+28IteAoCrYSTaPNQ0wf15DL/m01nc74DH76FT7pN1o5ibtNgoo
         ngIQ==
X-Gm-Message-State: AOJu0YwNQKCMQUEc37sf/ed5pAFUVVVhB93aj1c+Bf9XTbhuwIkv2hdm
	OF5VUX01MM2QnEQDNFu12utBuxgoNaa4/0Ah99iu4KjcVBQ4s4PfMJmStvad
X-Google-Smtp-Source: AGHT+IEJsVpIMEV0AcFvRbfw4fyAyzqUnAvQ6jKY6cjEygADi1rWYzfBl4f5VAsMKIakVpTPm8ktKg==
X-Received: by 2002:a05:6870:15c8:b0:210:9dda:f938 with SMTP id k8-20020a05687015c800b002109ddaf938mr3638523oad.107.1706129977968;
        Wed, 24 Jan 2024 12:59:37 -0800 (PST)
From: Jason Andryuk <jandryuk@gmail.com>
To: xen-devel@lists.xenproject.org
Cc: Jason Andryuk <jandryuk@gmail.com>,
	Jan Beulich <jbeulich@suse.com>,
	Wei Liu <wl@xen.org>,
	Anthony PERARD <anthony.perard@citrix.com>
Subject: [PATCH v2 0/2] Improve xenpm output under HWP
Date: Wed, 24 Jan 2024 15:59:20 -0500
Message-ID: <20240124205922.67266-1-jandryuk@gmail.com>
X-Mailer: git-send-email 2.43.0
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Have xen return -EOPNOTSUPP for more pmstat hypercalls instead of
returning misleading data under HWP.  Enhance xenpm to handle
-EOPNOTSUPP and provide more informative messages.

Jason Andryuk (2):
  pmstat: Limit hypercalls under HWP
  xenpm: Print message for disabled commands

 tools/misc/xenpm.c        | 19 +++++++++++++++----
 xen/drivers/acpi/pmstat.c |  5 +++++
 2 files changed, 20 insertions(+), 4 deletions(-)

-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Wed Jan 24 20:59:51 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 24 Jan 2024 20:59:51 +0000
Received: from list by lists.xenproject.org with outflank-mailman.671238.1044499 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSkLf-0007FG-8v; Wed, 24 Jan 2024 20:59:51 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 671238.1044499; Wed, 24 Jan 2024 20:59:51 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSkLf-0007F9-5X; Wed, 24 Jan 2024 20:59:51 +0000
Received: by outflank-mailman (input) for mailman id 671238;
 Wed, 24 Jan 2024 20:59:50 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=LRLw=JC=gmail.com=jandryuk@srs-se1.protection.inumbo.net>)
 id 1rSkLe-0006yg-KC
 for xen-devel@lists.xenproject.org; Wed, 24 Jan 2024 20:59:50 +0000
Received: from mail-il1-x135.google.com (mail-il1-x135.google.com
 [2607:f8b0:4864:20::135])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 826c774d-bafb-11ee-9b0f-b553b5be7939;
 Wed, 24 Jan 2024 21:59:49 +0100 (CET)
Received: by mail-il1-x135.google.com with SMTP id
 e9e14a558f8ab-3619e804f3aso22487495ab.2
 for <xen-devel@lists.xenproject.org>; Wed, 24 Jan 2024 12:59:48 -0800 (PST)
Received: from pm2-ws13.praxislan02.com
 (207-172-141-204.s8906.c3-0.slvr-cbr1.lnh-slvr.md.cable.rcncustomer.com.
 [207.172.141.204]) by smtp.gmail.com with ESMTPSA id
 d3-20020ac80603000000b004260b65b4f7sm4643391qth.97.2024.01.24.12.59.45
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 24 Jan 2024 12:59:45 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 826c774d-bafb-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1706129987; x=1706734787; darn=lists.xenproject.org;
        h=content-transfer-encoding:mime-version:references:in-reply-to
         :message-id:date:subject:cc:to:from:from:to:cc:subject:date
         :message-id:reply-to;
        bh=yUrmZO37v19vw6177GV1p1vq04J3q1Ohle6m53SQw+Q=;
        b=E3sApGUTKeAwNnndLJa9mIUuFmiRVnRbeZGOHA41K9Xj5masF2IwYFjejAzF2LPVdV
         jD/Yj1ecWSAh/9iVY8vCnjwwVIBBu4x8A9PCYo42qwEDl6OPJAYKDUlhZQBb9rID70UM
         NofQzt9ZU/6XiuXDCO4OPHs6QbFF6M8I5P5mCD9o3pCdERxHTj7IH3p1fvJUHa9VjKtB
         OCmVXQivnBKUYz+0S8puLaqyy/wiZxxj46Mtrkjp2SV0W5C56zmkwKaDWTV34m9CtftD
         Re41uRj1dLqqJivAYLnPzGtaQryrwlhKIfySeg48VSGU6jiBwQvP45P2GWYJ1+NA/ezc
         T8TA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706129987; x=1706734787;
        h=content-transfer-encoding:mime-version:references:in-reply-to
         :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to;
        bh=yUrmZO37v19vw6177GV1p1vq04J3q1Ohle6m53SQw+Q=;
        b=OHHdET7ENNTFCUJZdW2c8zJ1MNbUdI6ltmjcVNGcu29pe8rlgbIl5Y01AZ2JmFOeY3
         I6uUv1HAE3ej7CpO3E+rSQIEDCkGQaz8Dp4ikE3A9PztorjWRTFtW77YJqmK3qkm/kkk
         z1M964gTeUqrMSnn5uep54k9eYyBwF9tJss7ryqECK+nzzNMitTpD+5I6g2xHzUTzev8
         CKxJlWf4tlsx5yNahvthQxVfjvUDNylOvB7NzjErec2onVweo4+PlCBffDDiOZN/RJ/G
         QAQAur+QksGeCTXN3xXDDsq35VR1vFW81TaangOd0fezoJU4JrDfXi1j4mFXmsiYBKdx
         xT8g==
X-Gm-Message-State: AOJu0YytOBfgKp83od6q0OmSCJ4JWhXvxcD1aBUz4+PKEYlPHLOY11Zi
	j4tFcS6pi+mSY11lZJeuUSIOCBas/M029GLkSTjaDRlWl8P7AupztFB81Qmq
X-Google-Smtp-Source: AGHT+IEHzyqRfHJmmh4174x8bgg177aZWQxWxvguQ+KgBd8RXILpqaRpZRkTTLapoQS2Fec8QSnzPQ==
X-Received: by 2002:a05:6e02:1210:b0:361:a0ba:ad09 with SMTP id a16-20020a056e02121000b00361a0baad09mr40784ilq.12.1706129986876;
        Wed, 24 Jan 2024 12:59:46 -0800 (PST)
From: Jason Andryuk <jandryuk@gmail.com>
To: xen-devel@lists.xenproject.org
Cc: Jason Andryuk <jandryuk@gmail.com>,
	Jan Beulich <jbeulich@suse.com>
Subject: [PATCH v2 1/2] pmstat: Limit hypercalls under HWP
Date: Wed, 24 Jan 2024 15:59:21 -0500
Message-ID: <20240124205922.67266-2-jandryuk@gmail.com>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20240124205922.67266-1-jandryuk@gmail.com>
References: <20240124205922.67266-1-jandryuk@gmail.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

When HWP is active, the cpufreq P-state information is not updated.  In
that case, return -EOPNOTSUPP instead of bogus, incomplete info.

Similarly, set_cpufreq_para() is not applicable when HWP is active.
Many of the options already checked the governor and were inaccessible,
but SCALING_MIN/MAX_FREQ was still accessible (though it would do
nothing).  Add an ealier HWP check to handle all cases.

Signed-off-by: Jason Andryuk <jandryuk@gmail.com>
---
v2:
Use -EOPNOTSUPP in both places

 xen/drivers/acpi/pmstat.c | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/xen/drivers/acpi/pmstat.c b/xen/drivers/acpi/pmstat.c
index 85097d463c..86588ddd42 100644
--- a/xen/drivers/acpi/pmstat.c
+++ b/xen/drivers/acpi/pmstat.c
@@ -66,6 +66,8 @@ int do_get_pm_info(struct xen_sysctl_get_pmstat *op)
             return -ENODEV;
         if ( !cpufreq_driver.init )
             return -ENODEV;
+        if ( hwp_active() )
+            return -EOPNOTSUPP;
         if ( !pmpt || !(pmpt->perf.init & XEN_PX_INIT) )
             return -EINVAL;
         break;
@@ -329,6 +331,9 @@ static int set_cpufreq_para(struct xen_sysctl_pm_op *op)
     if ( !policy || !policy->governor )
         return -EINVAL;
 
+    if ( hwp_active() )
+        return -EOPNOTSUPP;
+
     switch(op->u.set_para.ctrl_type)
     {
     case SCALING_MAX_FREQ:
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Wed Jan 24 20:59:55 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 24 Jan 2024 20:59:55 +0000
Received: from list by lists.xenproject.org with outflank-mailman.671239.1044509 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSkLj-0007Wn-GW; Wed, 24 Jan 2024 20:59:55 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 671239.1044509; Wed, 24 Jan 2024 20:59:55 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSkLj-0007Wa-DD; Wed, 24 Jan 2024 20:59:55 +0000
Received: by outflank-mailman (input) for mailman id 671239;
 Wed, 24 Jan 2024 20:59:54 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=LRLw=JC=gmail.com=jandryuk@srs-se1.protection.inumbo.net>)
 id 1rSkLi-0006yg-8Y
 for xen-devel@lists.xenproject.org; Wed, 24 Jan 2024 20:59:54 +0000
Received: from mail-qt1-x82f.google.com (mail-qt1-x82f.google.com
 [2607:f8b0:4864:20::82f])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 84a4d3a3-bafb-11ee-9b0f-b553b5be7939;
 Wed, 24 Jan 2024 21:59:52 +0100 (CET)
Received: by mail-qt1-x82f.google.com with SMTP id
 d75a77b69052e-42a446cb1baso15500591cf.0
 for <xen-devel@lists.xenproject.org>; Wed, 24 Jan 2024 12:59:52 -0800 (PST)
Received: from pm2-ws13.praxislan02.com
 (207-172-141-204.s8906.c3-0.slvr-cbr1.lnh-slvr.md.cable.rcncustomer.com.
 [207.172.141.204]) by smtp.gmail.com with ESMTPSA id
 d3-20020ac80603000000b004260b65b4f7sm4643391qth.97.2024.01.24.12.59.49
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 24 Jan 2024 12:59:50 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 84a4d3a3-bafb-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1706129990; x=1706734790; darn=lists.xenproject.org;
        h=content-transfer-encoding:mime-version:references:in-reply-to
         :message-id:date:subject:cc:to:from:from:to:cc:subject:date
         :message-id:reply-to;
        bh=BthpWTlw2BkiPY7xlL82j899+I8S9+DzigRUVf0kQtA=;
        b=AXZz6knApLhe/YDur+gQV/1/s4/5WeHOkxnosC1b7Tw7jUt81u09RWMiZNp0YLIrgD
         EglE6JNlfPRMWdHHNpsJmYTEu3M/EEbdVTm/gmIdi2RNJVjQA0JJx3aFZFU4NRR7OOnK
         8IOioxtVZfdeshf+dR4BmCL0zEjtGpcJXtaEYf2K+QdGwe/qAKI/0iMY3L6/VvrArxqN
         qfSXLODtRyGtoqhUpJ3wyskWu3BJHr4p/aXdykudwPjHsTf/HfOwZ/+LAyPSi9vz40hE
         1e8hqQXnfBlnz0PUpqVA5X/tmrkRp2rJj710HOj4rpA12mEcOwSXDPbdEEaa2Lh6VRcw
         3idw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706129990; x=1706734790;
        h=content-transfer-encoding:mime-version:references:in-reply-to
         :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to;
        bh=BthpWTlw2BkiPY7xlL82j899+I8S9+DzigRUVf0kQtA=;
        b=JvQ+1rmyZ9JzQxcYT6qaSMFmVNjgEG0H9nd4FSXJ6l/45MYx/vkY5h1PgNgij9Jujc
         bQjZGDS4HewFJwW/zBIlPA4LjyiVnzgCXU8buARSVB67hRifCYvNnTPN+pIBb171gMmZ
         FH851tkLzUXNr0mFcf51Q3VmzmXeSbOKRkcuU6Inl8ATIfAYOF+XOAE4QmS2YbhK3cBL
         VoDWFRLrAdIZfYDNOf8ZETCNViD2RUqYz6TyF32Hg58heJelBdSKNY4gEoaRDS5N+zHx
         Ypo7VrdlsYWxofSef/9ByEaO5rpmg94x7eJCNBjB0LnRwQ/EGN3QjjOrKQvIzt4X7GB8
         jP6w==
X-Gm-Message-State: AOJu0Yy+DZ7ubjEfS94szcK0x2DvQAkjJZA6XdK9bBIfv1e0pL9Tkm3v
	6xIIbOM0QorwllzOGen87QAVDBIVuRJdEbnWS9aiq5jCZDoqCzco2nmd4Vkw
X-Google-Smtp-Source: AGHT+IEL1N+v8/fKPf+QXUL4GVjzna7A1Yy/9ub/38bNbJfUs/Q8gv0AwbvyW/uXPcE7s0Sw9GJOuQ==
X-Received: by 2002:a05:622a:138e:b0:42a:5dc5:fdc8 with SMTP id o14-20020a05622a138e00b0042a5dc5fdc8mr1387749qtk.63.1706129990612;
        Wed, 24 Jan 2024 12:59:50 -0800 (PST)
From: Jason Andryuk <jandryuk@gmail.com>
To: xen-devel@lists.xenproject.org
Cc: Jason Andryuk <jandryuk@gmail.com>,
	Wei Liu <wl@xen.org>,
	Anthony PERARD <anthony.perard@citrix.com>
Subject: [PATCH v2 2/2] xenpm: Print message for disabled commands
Date: Wed, 24 Jan 2024 15:59:22 -0500
Message-ID: <20240124205922.67266-3-jandryuk@gmail.com>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20240124205922.67266-1-jandryuk@gmail.com>
References: <20240124205922.67266-1-jandryuk@gmail.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

xenpm get-cpufreq-states currently just prints no output when cpufreq is
disabled or HWP is running.  Have it print an appropriate message.  The
cpufreq disabled one mirros the cpuidle disabled one.

cpufreq disabled:
$ xenpm get-cpufreq-states
Either Xen cpufreq is disabled or no valid information is registered!

Under HWP:
$ xenpm get-cpufreq-states
P-State information not supported.  Try get-cpufreq-average or start.

Also allow xenpm to handle EOPNOTSUPP from the pmstat hypercalls.
EOPNOTSUPP is returned when HWP is active in some cases and allows the
differentiation from cpufreq being disabled.

Signed-off-by: Jason Andryuk <jandryuk@gmail.com>
---
v2:
New

 tools/misc/xenpm.c | 19 +++++++++++++++----
 1 file changed, 15 insertions(+), 4 deletions(-)

diff --git a/tools/misc/xenpm.c b/tools/misc/xenpm.c
index d982482a3f..79c618590b 100644
--- a/tools/misc/xenpm.c
+++ b/tools/misc/xenpm.c
@@ -362,7 +362,15 @@ static int show_pxstat_by_cpuid(xc_interface *xc_handle, int cpuid)
 
     ret = get_pxstat_by_cpuid(xc_handle, cpuid, &pxstatinfo);
     if ( ret )
+    {
+        if ( ret == -ENODEV )
+            fprintf(stderr,
+                    "Either Xen cpufreq is disabled or no valid information is registered!\n");
+       else if ( ret == -EOPNOTSUPP )
+            fprintf(stderr,
+                    "P-State information not supported.  Try get-cpufreq-average or start.\n");
         return ret;
+    }
 
     print_pxstat(cpuid, &pxstatinfo);
 
@@ -382,9 +390,11 @@ void pxstat_func(int argc, char *argv[])
     {
         /* show pxstates on all cpus */
         int i;
-        for ( i = 0; i < max_cpu_nr; i++ )
-            if ( show_pxstat_by_cpuid(xc_handle, i) == -ENODEV )
+        for ( i = 0; i < max_cpu_nr; i++ ) {
+            int ret = show_pxstat_by_cpuid(xc_handle, i);
+            if ( ret == -ENODEV || ret == -EOPNOTSUPP )
                 break;
+	}
     }
     else
         show_pxstat_by_cpuid(xc_handle, cpuid);
@@ -432,7 +442,7 @@ static uint64_t *sum, *sum_cx, *sum_px;
 
 static void signal_int_handler(int signo)
 {
-    int i, j, k;
+    int i, j, k, ret;
     struct timeval tv;
     int cx_cap = 0, px_cap = 0;
     xc_cputopo_t *cputopo = NULL;
@@ -473,7 +483,8 @@ static void signal_int_handler(int signo)
                 }
     }
 
-    if ( get_pxstat_by_cpuid(xc_handle, 0, NULL) != -ENODEV )
+    ret = get_pxstat_by_cpuid(xc_handle, 0, NULL);
+    if ( ret != -ENODEV && ret != -EOPNOTSUPP )
     {
         px_cap = 1;
         for ( i = 0; i < max_cpu_nr; i++ )
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Wed Jan 24 23:05:48 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 24 Jan 2024 23:05:48 +0000
Received: from list by lists.xenproject.org with outflank-mailman.671285.1044535 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSmJH-0005Z7-KW; Wed, 24 Jan 2024 23:05:31 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 671285.1044535; Wed, 24 Jan 2024 23:05:31 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSmJH-0005Z0-Ga; Wed, 24 Jan 2024 23:05:31 +0000
Received: by outflank-mailman (input) for mailman id 671285;
 Wed, 24 Jan 2024 23:05:30 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=Ityc=JC=onlineschubla.de=paul@srs-se1.protection.inumbo.net>)
 id 1rSmJF-0005Yu-Qf
 for xen-devel@lists.xenproject.org; Wed, 24 Jan 2024 23:05:30 +0000
Received: from mo4-p00-ob.smtp.rzone.de (mo4-p00-ob.smtp.rzone.de
 [81.169.146.216]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 0f77ec1f-bb0d-11ee-9b0f-b553b5be7939;
 Thu, 25 Jan 2024 00:05:26 +0100 (CET)
Received: from mail.onlineschubla.de by smtp.strato.de (RZmta 49.11.2 AUTH)
 with ESMTPSA id Y5995400ON5P3s5
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256 bits))
 (Client did not present a certificate)
 for <xen-devel@lists.xenproject.org>;
 Thu, 25 Jan 2024 00:05:25 +0100 (CET)
Received: from localhost (localhost [127.0.0.1])
 by mail.onlineschubla.de (Postfix) with ESMTP id 0121021180
 for <xen-devel@lists.xenproject.org>; Thu, 25 Jan 2024 00:05:25 +0100 (CET)
Received: from mail.onlineschubla.de ([127.0.0.1])
 by localhost (mail.onlineschubla.de [127.0.0.1]) (amavis, port 10024)
 with ESMTP id d3zJXa65ubxz for <xen-devel@lists.xenproject.org>;
 Thu, 25 Jan 2024 00:05:23 +0100 (CET)
Received: from [10.0.0.105] (unknown [10.0.0.105])
 by mail.onlineschubla.de (Postfix) with ESMTPA id CE3232060C
 for <xen-devel@lists.xenproject.org>; Thu, 25 Jan 2024 00:05:23 +0100 (CET)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 0f77ec1f-bb0d-11ee-9b0f-b553b5be7939
ARC-Seal: i=1; a=rsa-sha256; t=1706137525; cv=none;
    d=strato.com; s=strato-dkim-0002;
    b=BeBmNF7cfmB56R26XHi6ys9rfZrwBJK+75j1AJE7gms5jb3WwBFdF48+pRQ/PpsKvs
    XX6iie77vXdJGhyoXwik+aSJHTLF2001J1NuuPXaFTM7SEcm3upTHRZarVYe0sPkUjvm
    GhJATO/whb8jmmHImr0/grp/5zzRNIzIxCltdKrDl0lz+1uqTdhLmD3kyX/pc76qwmTZ
    35Ec9DbWknw+jfYPQkgR6AKaL3xvyotT4zKGOKZP4nUnp3tIpEHUNTSDZelZaW035sRn
    EZS9vRrwqCrw7etAjB/AOUOnQgLs4hSkhLOKmTOmXVfQjpYXidhzcrUUlFvyv/1lC8Tt
    FQZg==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; t=1706137525;
    s=strato-dkim-0002; d=strato.com;
    h=In-Reply-To:From:References:To:Subject:Date:Message-ID:Cc:Date:From:
    Subject:Sender;
    bh=BYkrkLrqNCH9bKkUilflp8kvRUfJ8gd/v6fK/C6UFxA=;
    b=U2fyk2o7h5N0TCdo1qIKzes9UF133/G0+iXYrdipsNBC4SLQgzfyLOx2mqra/8uVws
    LJgvvZgCwpmJr8vbWSZffElS7uKc0dgGpO+Jc8nUnAFny4P1zSuygKAeubi0KphaevyX
    8Fcj90QS4nePJd5z5PxANwQgTWK0NPHcqEZmSOlsoZdgwwhp9mGJiGF1v4OvvpxSUFBB
    s0mSJkh6KMVGs4ZkVnkML4NReYWbA7URFh0qosin3lo5CepsvFgkpa9PHx9dCP9ApPqd
    mh3VSSgXv85Vz7sVqNX4whS+J3yxmnkx24YhIRBlTG7eh2VA/Mk3ZY6WEwL9KKqvZG/I
    qGxw==
ARC-Authentication-Results: i=1; strato.com;
    arc=none;
    dkim=none
X-RZG-CLASS-ID: mo00
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; t=1706137525;
    s=strato-dkim-0002; d=onlineschubla.de;
    h=In-Reply-To:From:References:To:Subject:Date:Message-ID:Cc:Date:From:
    Subject:Sender;
    bh=BYkrkLrqNCH9bKkUilflp8kvRUfJ8gd/v6fK/C6UFxA=;
    b=NmGt5UYAJH4Bzk9PKcqcy/OqKGTM97/xVbeGnYYDwRQooHGujOK9xwpCgVu3wHyBLY
    cFOxyX7GuuGURhxGRdM77m8iL8mCcfDUza7WD7beVUQywwc9DfaxC3uR4m3QJVbNH3b/
    KRxRl3qr9pAEkuwTF1ssZKqtF0ODIJE4D3UHsElnroaV/XNZ/8q2LuWD1h7hRlU/yw0u
    CxA+6P5CCgg4glIwKzZqJWFMS2mb/ZEfJi81ac64ShzIJwyAreBR6uuH0Tdj5Hd4mCs3
    hSzRdv+v6/E+x6n90IMthy3MAfi1qlSt8E2z34KVSrzJ+n2WiztbsTmnBtG8QPu7RWqg
    Z7VA==
DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; t=1706137525;
    s=strato-dkim-0003; d=onlineschubla.de;
    h=In-Reply-To:From:References:To:Subject:Date:Message-ID:Cc:Date:From:
    Subject:Sender;
    bh=BYkrkLrqNCH9bKkUilflp8kvRUfJ8gd/v6fK/C6UFxA=;
    b=3C5ysrIodvd0gC78B4Fks0r78TLryRFJ9hrTQa2MAKo67oac6Z3UqQ9Yx7MtfXGOUM
    l9oLsjqQGk13DmkF6LDw==
X-RZG-AUTH: ":PG0ReWCndfO3rCSML4AvNaDxJ7WJyilEI/NMX3IPsStZLbcZC9mNZx0oO9uVFQeS3s1LjmLQaRrzDLEB/dHHONRV2tfxcHomvzTSHAOlag=="
X-Virus-Scanned: Debian amavis at onlineschubla.de
Message-ID: <1572ed53-494d-4dd0-b470-85ff2efb229b@onlineschubla.de>
Date: Thu, 25 Jan 2024 00:05:23 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: Xen 4.18rc/ARM64 on Raspberry Pi 4B: Traffic in DomU crashing
 Dom0 when using VLANs
Content-Language: en-US
To: xen-devel@lists.xenproject.org
References: <838ff75f-1352-4d3c-9bc1-c7a57c828231@onlineschubla.de>
 <4cddfd89-f195-4a50-a14d-b86121414e56@onlineschubla.de>
 <f8f39239-ea95-4fc7-9abe-6ca005eb02d2@onlineschubla.de>
 <ZarcWQ6Ugwowy050@mattapan.m5p.com>
 <CA+zSX=Y=BsVEp3o6jRprn5sntWVA0Z6wNXUxtffDN+=fPv_Fzg@mail.gmail.com>
 <D2496DDC-78FA-4CC1-B7FC-EB62E506BC4F@arm.com>
From: Paul Leiber <paul@onlineschubla.de>
In-Reply-To: <D2496DDC-78FA-4CC1-B7FC-EB62E506BC4F@arm.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit

Elliot, Bertrand, George: Thanks for your replies.

Am 23.01.2024 um 09:29 schrieb Bertrand Marquis:
> Hi,
> 
>   will try to explain some of the messages here after but I am not sure of the reason
> of the crash so I will just set some pointers...
> 
>> On 22 Jan 2024, at 11:46, George Dunlap <george.dunlap@cloud.com> wrote:
>>
>> On Fri, Jan 19, 2024 at 8:32 PM Elliott Mitchell <ehem+xen@m5p.com> wrote:
>>>
>>> On Sun, Jan 14, 2024 at 10:54:24PM +0100, Paul Leiber wrote:
>>>>
>>>> Am 22.10.2023 um 07:42 schrieb Paul Leiber:
>>>>> Am 13.10.2023 um 20:56 schrieb Paul Leiber:
>>>>>> Hi Xen developers list,
>>>>>>
>>>>>> TL;DR:
>>>>>> ------
>>>>>>
>>>>>> Causing certain web server traffic on a secondary VLAN on Raspberry Pi
>>>>>> under vanilla Debian/UEFI in combination with Xen leads to complete
>>>>>> system reboot (watchdog triggering for Dom0). Other strange things are
>>>>>> happening.
>>>>>>
>>>>>> Description:
>>>>>> ----------
>>>>>>
>>>>>> I recently set up Xen (self compiled, Version 4.18-rc) on a Raspberry
>>>>>> Pi 4B (on vanilla Debian Bookworm, UEFI boot mode). Until some time
>>>>>> ago, everything worked well with Dom0, one DomU and one bridge.
>>>>>>
>>>>>> Then I wanted to actually make use of the virtualization and started
>>>>>> to set up a second Debian Bookworm DomU (using xen-create-image) for
>>>>>> monitoring my systems with zabbix (a webserver based system monitoring
>>>>>> solution). The bridge used for this setup was the device bridging the
>>>>>> hardware NIC. I installed zabbix, set it up, and everything went well,
>>>>>> I could access the web interface without any problem.
>>>>>>
>>>>>> Then I set up VLANs (initally using VLAN numbers 1 and 2) to separate
>>>>>> network traffic between the DomUs. I made the existing device bridge
>>>>>> VLAN 1 (bridge 1) and created a secondary device for bridging VLAN 2
>>>>>> (bridge 2). Using only bridge 1 / VLAN 1 everything works well, I can
>>>>>> access the zabbix web interface without any noticeable issue. After
>>>>>> switching the zabbix DomU to VLAN 2 / bridge 2, everything seemingly
>>>>>> keeps on working well, I can ping different devices in my network from
>>>>>> the zabbix DomU and vice versa, I can ssh into the machine.
>>>>>>
>>>>>> However, as soon as I remotely access the zabbix web interface, the
>>>>>> complete system (DomUs and Dom0) becomes unresponsive and reboots
>>>>>> after some time (usually seconds, sometimes 1-2 minutes). The reboot
>>>>>> is reliably reproducable.
>>>>>>
>>>>>> I didn't see any error message in any log (zabbix, DomU syslog, Dom0
>>>>>> syslog) except for the following lines immediately before the system
>>>>>> reboots on the Xen serial console:
>>>>>>
>>>>>> (XEN) Watchdog timer fired for domain 0
>>>>>> (XEN) Hardware Dom0 shutdown: watchdog rebooting machine
>>>>>>
>>>>>> As soon as I change the bridge to bridge 1 (with or without VLAN
>>>>>> setup), the web interface is accessible again after booting the zabbix
>>>>>> DomU, no reboots.
>>>>>>
>>>>>> So I assume that causing specific traffic on the virtual NIC when
>>>>>> using a VLAN setup with more than one VLAN under Xen makes the Dom0
>>>>>> system hard crash. Of course, there might be other causes that I'm not
>>>>>> aware of, but to me, this seems to be the most likely explanation
>>>>>> right now.
>>>>>>
>>>>>> What I tried:
>>>>>> -------------
>>>>>>
>>>>>> 1. I changed the VLAN numbers. First to 101, 102, 103 etc. This was
>>>>>> when I noticed another strange thing: VLANs with numbers >99 simply
>>>>>> don't work on my Raspberry Pi under Debian, with or without Xen. VLAN
>>>>>> 99 works, VLAN 100 (or everything else >99 that I tried) doesn't work.
>>>>>> If I choose a number >99, the VLAN is not configured, "ip a" doesn't
>>>>>> list it. Other Debian systems on x64 architecture don't show this
>>>>>> behavior, there, it was no problem to set up VLANs > 99. Therefore,
>>>>>> I've changed the VLANs to 10, 20, 30 etc., which worked. But it didn't
>>>>>> solve the initial problem of the crashing Dom0 and DomUs.
>>>>>>
>>>>>> 2. Different bridge options, without noticable effect:
>>>>>> bridge_stp off      # dont use STP (spanning tree proto)
>>>>>> bridge_waitport 0   # dont wait for port to be available
>>>>>> bridge_fd 0         # no forward delay
>>>>>>
>>>>>> 3. Removing IPv6: No noticable effect.
>>>>>>
>>>>>> 4. Network traffic analysis: Now, here it becomes _really_ strange. I
>>>>>> started tcpdumps on Dom0, and depending on on which interface/bridge
>>>>>> traffic was logged, the problem went away, meaning, the DomU was
>>>>>> running smoothly for hours, even when accessing the zabbix web
>>>>>> interface. Stopping the log makes the system crash (as above, after
>>>>>> seconds up to 1-2 minutes) reproducably if I access the zabbix web
>>>>>> interface.
>>>>>>
>>>>>> Logging enabcm6e4ei0 (NIC): no crashes
>>>>>> Logging enabcm6e4ei0.10 (VLAN 10): instant crash
>>>>>> Logging enabcm6e4ei0.20 (VLAN 20): no crashes
>>>>>> Logging xenbr0 (on VLAN 10): instant crash
>>>>>> Logging xenbr1 (on VLAN 20): no crashes
>>>>>>
>>>>>> I am clinging to the thought that there must be a rational explanation
>>>>>> for why logging the traffic on certain interfaces/bridges should avoid
>>>>>> the crash of the complete system, while logging other
>>>>>> interfaces/bridges doesn't. I myself can't think of one.
>>>>>>
>>>>>> I checked the dumps of enabcm6e4ei0.10 and xenbr0 (where the system
>>>>>> crashes) with wireshark, nothing sticks out to me (but I am really no
>>>>>> expert in analyzing network traffic). Dumps can be provided.
>>>>>>
>>>>>> 5. Watchdog: I tried to dig deeper into the cause for the watchdog
>>>>>> triggering. However, I didn't find any useful documentation on the web
>>>>>> on how the watchdog works or how to enable logging.
>>>>>>
>>>>>> 6. Eliminating Xen as cause: I booted the Debian system (which in Xen
>>>>>> setup would be Dom0) without Xen and set it up to use the VLAN 20
>>>>>> bridge (the same that leads to a reboot when using it in the DomU) as
>>>>>> primary network interface. Everything seemed to be working, I could
>>>>>> download large files from the internet without any problem. Setting up
>>>>>> Zabbix on the base Debian system showed that the same setup (VLANs 10
>>>>>> and 20, bridges 1 and 2, using bridge 2 as interface for Zabbix)
>>>>>> without Xen is working reliably, no reboots. This points to some Xen
>>>>>> related component being the root cause, I think.
>>>>>>
>>>>>> 7. Eliminating Apache as root cause: Reloading the Apache starting
>>>>>> page hosted on DomU several times per second didn't lead to a reboot.
>>>>>>
>>>>>> 8. Recompiling Xen: Independent of which Xen master branch version I
>>>>>> was using (all 4.18), the behavior was the same. I didn't get Xen
>>>>>> working on ARM64/UEFI in version 4.17.
>>>>>>
>>>>>> Current situation:(XEN) d3v0 Unhandled SMC/HVC: 0x84000050
>>>> (XEN) d3v0 Unhandled SMC/HVC: 0x8600ff01
>>>> (XEN) d3v0: vGICD: unhandled word write 0x000000ffffffff to ICACTIVER0
>>>> (XEN) common/grant_table.c:1909:d3v0 Expanding d3 grant table from 1 to
>>>> 2 frames
>>>> (XEN) common/grant_table.c:1909:d3v0 Expanding d3 grant table from 2 to
>>>> 3 frames
>>>> (XEN) common/grant_table.c:1909:d3v0 Expanding d3 grant table from 3 to
>>>> 4 frames
>>>>>> ------------------
>>>>>>
>>>>>> I am out of ideas what to do next. Everything that was recommended to
>>>>>> me on xen-users didn't lead to significant insight or solve the problem.
>>>>>>
>>>>>> I'd appreciate any hints how to troubleshoot this and/or how to
>>>>>> proceed otherwise.
>>>>>
>>>>> O.k., let's try to break that issue down.
>>>>>
>>>>> Firstly, how can I get more information on why the Xen watchdog
>>>>> triggers? Is there documentation? Are there any logs? I couldn't find
>>>>> anything useful with my search skills.
>>>>>
>>>>
>>>> After some delay, I have picked up the Raspberry Pi again, built Xen
>>>> 4.19-unstable, with the same result: Reboot of the complete system after
>>>> the Dom0 watchdog triggering when accessing the Zabbix content on a
>>>> webserver on DomU.
>>>>
>>>> I still would like to find out what's going wrong here, but I have no
>>>> idea what to do. I'd appreciate any hint.
>>>>
>>>> Not knowing if it helps, I added Xen logs from boot until Dom0
>>>> crash/reboot below.
>>>>
>>>> Loading Xen xen ...
>>>> Loading Linux 6.1.0-17-arm64 ...
>>>> Loading initial ramdisk ...
>>>> Using modules provided by bootloader in FDT
>>>> Xen 4.19-unstable (c/s Fri Jan 12 11:54:31 2024 +0000
>>>> git:1ec3fe1f66-dirty) EFI
>>>> loader
>>>>   Xen 4.19-unstable
>>>> (XEN) Xen version 4.19-unstable (root@lan.onlineschubla.de) (gcc (Debian
>>>> 12.2.0-
>>>>
>>>>
>>>>                             14) 12.2.0) debug=y Sun Jan 14 21:46:34 CET 2024
>>>> (XEN) Latest ChangeSet: Fri Jan 12 11:54:31 2024 +0000 git:1ec3fe1f66-dirty
>>>> (XEN) build-id: babb03cb6107fc46f7d8969142ccd6772a1133c3
>>>> (XEN) Console output is synchronous.
>>>> (XEN) Processor: 00000000410fd083: "ARM Limited", variant: 0x0, part
>>>> 0xd08,rev 0
>>>>
>>>>
>>>>                                 x3
>>>> (XEN) 64-bit Execution:
>>>> (XEN)   Processor Features: 0000000000002222 0000000000000000
>>>> (XEN)     Exception Levels: EL3:64+32 EL2:64+32 EL1:64+32 EL0:64+32
>>>> (XEN)     Extensions: FloatingPoint AdvancedSIMD
>>>> (XEN)   Debug Features: 0000000010305106 0000000000000000
>>>> (XEN)   Auxiliary Features: 0000000000000000 0000000000000000
>>>> (XEN)   Memory Model Features: 0000000000001124 0000000000000000
>>>> (XEN)   ISA Features:  0000000000010000 0000000000000000
>>>> (XEN) 32-bit Execution:
>>>> (XEN)   Processor Features: 0000000000000131:0000000000011011
>>>> (XEN)     Instruction Sets: AArch32 A32 Thumb Thumb-2 Jazelle
>>>> (XEN)     Extensions: GenericTimer Security
>>>> (XEN)   Debug Features: 0000000003010066
>>>> (XEN)   Auxiliary Features: 0000000000000000
>>>> (XEN)   Memory Model Features: 0000000010201105 0000000040000000
>>>> (XEN)                          0000000001260000 0000000002102211
>>>> (XEN)   ISA Features: 0000000002101110 0000000013112111 0000000021232042
>>>> (XEN)                 0000000001112131 0000000000011142 0000000000010001
>>>> (XEN) Using SMC Calling Convention v1.2
>>>> (XEN) Using PSCI v1.1
>>>> (XEN) ACPI: GICC (acpi_id[0x0000] address[0xff842000] MPIDR[0x0] enabled)
>>>> (XEN) ACPI: GICC (acpi_id[0x0001] address[0xff842000] MPIDR[0x1] enabled)
>>>> (XEN) ACPI: GICC (acpi_id[0x0002] address[0xff842000] MPIDR[0x2] enabled)
>>>> (XEN) ACPI: GICC (acpi_id[0x0003] address[0xff842000] MPIDR[0x3] enabled)
>>>> (XEN) 4 CPUs enabled, 4 CPUs total
>>>> (XEN) SMP: Allowing 4 CPUs
>>>> (XEN) enabled workaround for: ARM erratum 1319537
>>>> (XEN) Generic Timer IRQ: phys=30 hyp=26 virt=27 Freq: 54000 KHz
>>>> (XEN) GICv2 initialization:
>>>> (XEN)         gic_dist_addr=00000000ff841000
>>>> (XEN)         gic_cpu_addr=00000000ff842000
>>>> (XEN)         gic_hyp_addr=00000000ff844000
>>>> (XEN)         gic_vcpu_addr=00000000ff846000
>>>> (XEN)         gic_maintenance_irq=25
>>>> (XEN) GICv2: 256 lines, 4 cpus, secure (IID 0200143b).
>>>> (XEN) XSM Framework v1.0.1 initialized
>>>> (XEN) Initialising XSM SILO mode
>>>> (XEN) Using scheduler: SMP Credit Scheduler rev2 (credit2)
>>>> (XEN) Initializing Credit2 scheduler
>>>> (XEN)  load_precision_shift: 18
>>>> (XEN)  load_window_shift: 30
>>>> (XEN)  underload_balance_tolerance: 0
>>>> (XEN)  overload_balance_tolerance: -3
>>>> (XEN)  runqueues arrangement: socket
>>>> (XEN)  cap enforcement granularity: 10ms
>>>> (XEN) load tracking window length 1073741824 ns
>>>> (XEN) Allocated console ring of 32 KiB.
>>>> (XEN) CPU0: Guest atomics will try 16 times before pausing the domain
>>>> (XEN) Bringing up CPU1
>>>> (XEN) CPU1: Guest atomics will try 16 times before pausing the domain
>>>> (XEN) CPU 1 booted.
>>>> (XEN) Bringing up CPU2
>>>> (XEN) CPU2: Guest atomics will try 13 times before pausing the domain
>>>> (XEN) CPU 2 booted.
>>>> (XEN) Bringing up CPU3
>>>> (XEN) CPU3: Guest atomics will try 16 times before pausing the domain
>>>> (XEN) Brought up 4 CPUs
>>>> (XEN) CPU 3 booted.
>>>> (XEN) I/O virtualisation disabled
>>>> (XEN) P2M: 44-bit IPA with 44-bit PA and 8-bit VMID
>>>> (XEN) P2M: 4 levels with order-0 root, VTCR 0x0000000080043594
>>>> (XEN) Scheduling granularity: cpu, 1 CPU per sched-resource
>>>> (XEN) Initializing Credit2 scheduler
>>>> (XEN)  load_precision_shift: 18
>>>> (XEN)  load_window_shift: 30
>>>> (XEN)  underload_balance_tolerance: 0
>>>> (XEN)  overload_balance_tolerance: -3
>>>> (XEN)  runqueues arrangement: socket
>>>> (XEN)  cap enforcement granularity: 10ms
>>>> (XEN) load tracking window length 1073741824 ns
>>>> (XEN) Adding cpu 0 to runqueue 0
>>>> (XEN)  First cpu on runqueue, activating
>>>> (XEN) Adding cpu 1 to runqueue 0
>>>> (XEN) Adding cpu 2 to runqueue 0
>>>> (XEN) Adding cpu 3 to runqueue 0
>>>> (XEN) alternatives: Patching with alt table 00000a00002ee0b0 ->
>>>> 00000a00002ef250
>>>> (XEN) CPU2 will call ARM_SMCCC_ARCH_WORKAROUND_1 on exception entry
>>>> (XEN) CPU1 will call ARM_SMCCC_ARCH_WORKAROUND_1 on exception entry
>>>> (XEN) CPU3 will call ARM_SMCCC_ARCH_WORKAROUND_1 on exception entry
>>>> (XEN) CPU0 will call ARM_SMCCC_ARCH_WORKAROUND_1 on exception entry
>>>> (XEN) *** LOADING DOMAIN 0 ***
>>>> (XEN) Loading d0 kernel from boot module @ 0000000030ef7000
>>>> (XEN) Loading ramdisk from boot module @ 000000002ee6d000
>>>> (XEN) Allocating 1:1 mappings totalling 1024MB for dom0:
>>>> (XEN) BANK[0] 0x00000040000000-0x00000080000000 (1024MB)
>>>> (XEN) Grant table range: 0x0000002eceb000-0x0000002ed2b000
>>>> (XEN) Allocating PPI 16 for event channel interrupt
>>>> (XEN) Loading zImage from 0000000030ef7000 to
>>>> 0000000040000000-0000000041f1c7c0
>>>> (XEN) Loading d0 initrd from 000000002ee6d000 to
>>>> 0x0000000048200000-0x000000004a
>>>>
>>>>
>>>>                                                     288c22
>>>> (XEN) Loading d0 DTB to 0x0000000048000000-0x00000000480002c3
>>>> (XEN) Initial low memory virq threshold set at 0x4000 pages.
>>>> (XEN) Scrubbing Free RAM in background
>>>> (XEN) Std. Loglevel: All
>>>> (XEN) Guest Loglevel: All
>>>> (XEN) ***************************************************
>>>> (XEN) WARNING: CONSOLE OUTPUT IS SYNCHRONOUS
>>>> (XEN) This option is intended to aid debugging of Xen by ensuring
>>>> (XEN) that all output is synchronously delivered on the serial line.
>>>> (XEN) However it can introduce SIGNIFICANT latencies and affect
>>>> (XEN) timekeeping. It is NOT recommended for production use!
>>>> (XEN) ***************************************************
>>>> (XEN) 3... 2... 1...
>>>> (XEN) *** Serial input to DOM0 (type 'CTRL-a' three times to switch input)
>>>> (XEN) Freed 376kB init memory.
>>>> (XEN) d0v0 Unhandled SMC/HVC: 0x84000050
>>>> (XEN) d0v0 Unhandled SMC/HVC: 0x8600ff01
> 
> This means Linux is trying to do some kind of smc call which is not handled.
> I will highly suggest to investigate here as it could really be some platform
> specific calls trying to enable some clocks.
> 
>>>> (XEN) d0v0: vGICD: unhandled word write 0x000000ffffffff to ICACTIVER4
>>>> (XEN) d0v0: vGICD: unhandled word write 0x000000ffffffff to ICACTIVER8
>>>> (XEN) d0v0: vGICD: unhandled word write 0x000000ffffffff to ICACTIVER12
>>>> (XEN) d0v0: vGICD: unhandled word write 0x000000ffffffff to ICACTIVER16
>>>> (XEN) d0v0: vGICD: unhandled word write 0x000000ffffffff to ICACTIVER20
>>>> (XEN) d0v0: vGICD: unhandled word write 0x000000ffffffff to ICACTIVER24
>>>> (XEN) d0v0: vGICD: unhandled word write 0x000000ffffffff to ICACTIVER28
>>>> (XEN) d0v0: vGICD: unhandled word write 0x000000ffffffff to ICACTIVER0
>>>> (XEN) d0v1: vGICD: unhandled word write 0x000000ffffffff to ICACTIVER0
>>>> (XEN) d0v2: vGICD: unhandled word write 0x000000ffffffff to ICACTIVER0
>>>> (XEN) d0v3: vGICD: unhandled word write 0x000000ffffffff to ICACTIVER0
> 
> Those can be ignored. This is Linux writing to some GIC registers we do not
> emulate so we warn that those are ignored. Those messages are present on
> all arm targets when the log level of Xen is high.
> 
>>>> (XEN) d1v0 Unhandled SMC/HVC: 0x84000050
>>>> (XEN) d1v0 Unhandled SMC/HVC: 0x8600ff01
> 
> 
> Same as upper done on a different core
> 
>>>> (XEN) d1v0: vGICD: unhandled word write 0x000000ffffffff to ICACTIVER0
> 
> Can be ignored as explained earlier
> 
>>>> (XEN) common/grant_table.c:1909:d1v0 Expanding d1 grant table from 1 to
>>>> 2 frames
> 
> Those are internal debug messages to Xen and can be ignored (they are present
> on most arm targets).
> 
>>>> (XEN) gnttab_mark_dirty not implemented yet
> 
> Can be ignored to
> 
>>>> (XEN) d2v0 Unhandled SMC/HVC: 0x84000050
>>>> (XEN) d2v0 Unhandled SMC/HVC: 0x8600ff01
> 
> Same as upper on a different core
> 
>>>> (XEN) d2v0: vGICD: unhandled word write 0x000000
> 
> Same as upper on a different core

Is this also relevant or not?

I couldn't identify this yet. There is a mailing list exchange that 
could be related:

https://lists.xenproject.org/archives/html/xen-devel/2021-09/msg00382.html

Although I'm a little bit puzzled because when comparing with the other 
messages, this log meassage seems to be missing some parts "vGICD: 
unhandled word write 0x000000" instead of "vGICD: unhandled word write 
0x000000xxxxxxx to y"

>>>> ffffffff to ICACTIVER0
>>>> (XEN) common/grant_table.c:1909:d2v0 Expanding d2 grant table from 1 to
>>>> 2 frames
>>>> (XEN) common/grant_table.c:1909:d2v0 Expanding d2 grant table from 2 to
>>>> 3 frames
>>>> (XEN) common/grant_table.c:1909:d2v0 Expanding d2 grant table from 3 to
>>>> 4 frames
>>>> (XEN) Watchdog timer fired for domain 0
>>>> (XEN) Hardware Dom0 shutdown: watchdog rebooting machine
>>>
>>> I'm unsure whose attention to draw to this report.
>>>
>>> This might be a scheduler issue since the watchdog timer is triggering.
>>>
>>> This might be an ACPI issue as ACPI is in use here.
>>>
>>> This might be an ARM Linux kernel issue.
>>>
>>> In the end this is someone running into trouble with Xen on an ARM
>>> device.  Yet despite bringing up the issue hasn't gotten any help...
>>
>> Hey Elliot,
>>
>> Thanks for raising the visibility of this.  I'm not familiar with ARM,
>> but if I were investigating this I'd try to figure out what the
>> "unhandled" error messages are.  "gnttab_mark_dirty not implemented
>> yet" looks pretty sus too, and also sounds like it might be something
>> ARM-specific.
> 
> I tried to explain those and they are not the reason of the problem.
> 
>>
>> I don't see anything suspicious WRT the scheduler, but a simple way to
>> test that would be to set the scheduler to credit1 and see if that
>> changes things.
> 
> I would definitely suggest to investigate the 2 unhandled SMC/HVC calls
> as if one of them is to enable some clock it could explain why the system is
> getting stuck at some point (maybe waiting for something to be started).
> 
> Other than that i did not see anything that could point to an obvious issue.

I'll try to use credit1 scheduler and report results when I've got some 
more time, just to make sure.

 From what I could find out in ARM documentation, the unhandled calls 
seem to be the following:

0x84000050 = TRNG_VERSION, returns the implemented TRNG (True Random 
Number Generator) ABI version [1]
0x8600ff01 = Call UID Query for Vendor Specific Hypervisor Service, 
Returns a unique identifier of the service provider [2]

Does this make sense?

What could be next steps?

Thanks,

Paul

[1] https://developer.arm.com/documentation/den0098/latest/
[2] 
https://documentation-service.arm.com/static/628b755ce3c4322a76af56de?token=


From xen-devel-bounces@lists.xenproject.org Wed Jan 24 23:27:39 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 24 Jan 2024 23:27:39 +0000
Received: from list by lists.xenproject.org with outflank-mailman.671290.1044544 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSmea-0000NT-Ab; Wed, 24 Jan 2024 23:27:32 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 671290.1044544; Wed, 24 Jan 2024 23:27:32 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSmea-0000NM-7k; Wed, 24 Jan 2024 23:27:32 +0000
Received: by outflank-mailman (input) for mailman id 671290;
 Wed, 24 Jan 2024 23:27:31 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=Zgc/=JC=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1rSmeZ-0000NG-2h
 for xen-devel@lists.xenproject.org; Wed, 24 Jan 2024 23:27:31 +0000
Received: from mail-ej1-x631.google.com (mail-ej1-x631.google.com
 [2a00:1450:4864:20::631])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 245aac8f-bb10-11ee-98f5-6d05b1d4d9a1;
 Thu, 25 Jan 2024 00:27:30 +0100 (CET)
Received: by mail-ej1-x631.google.com with SMTP id
 a640c23a62f3a-a3150c9568bso76222766b.1
 for <xen-devel@lists.xenproject.org>; Wed, 24 Jan 2024 15:27:30 -0800 (PST)
Received: from [192.168.1.10] (host-92-3-248-192.as13285.net. [92.3.248.192])
 by smtp.gmail.com with ESMTPSA id
 ew21-20020a170907951500b00a311082cd00sm377047ejc.37.2024.01.24.15.27.28
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 24 Jan 2024 15:27:29 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 245aac8f-bb10-11ee-98f5-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1706138849; x=1706743649; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=8tEn01KwZNU0+GA5hs7byTE8DBvbc2zLj1d+aiVcGjo=;
        b=ti8wW44YAN9PIXYK4VHADa9WocCeRFnA2kP3FgQvrMqzq1xSJ0XgLI4x4A0CYzkaa9
         KqPgDk/6791Yla+wi7nPajxsm9lVwwSuWhUb+dzCROFOHNLAuFUncygOUzYWcunNWOYE
         w5UlCV9j9u3PxVB8bwpaXJTVvrWahvXusI+Os=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706138849; x=1706743649;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=8tEn01KwZNU0+GA5hs7byTE8DBvbc2zLj1d+aiVcGjo=;
        b=qF8Qmhy1pkpPkn9dVCMM5uG4qJ70epJ33NXz69eGLT7vg9zXYxiQZSotGO9KH0ZNmA
         Cv6UhYEKxV+HFkpk46aq51NrTJZWR0tm331RIs37R2wqQihtvwokJPlzMMj5Vue23ivk
         thjDLLQZdHsXLBwUEwyKFzJFJKLt+gKqh+74/JJlaQae/wZKib15o4kqRmjKFGGtfNOZ
         2trfeznYJcERMgmybkmCnM+4EZMDoLhPMNPhU7gXJrsfkUYVlhBZWdpPz3FtqhHUxHnh
         EfQi9zLv27PvE5YywxvbXkOEBfsLPsk0aDfbsZIY90nxpNSpHXVlmD8OCR/5iRmiyLDl
         dcXQ==
X-Gm-Message-State: AOJu0YxIv6B4nkhbAkHPNfJm6W5ndOsyvBymUGx7eWQ5fcRFCX8o0twY
	sU4T0gxeHdHcbtIF+Neq8unkr6MO+VDvUtHPUyFm3OHiBHT1D3NVy0X6w7KLQME=
X-Google-Smtp-Source: AGHT+IFoRyoZ4FclVKG6OguP1WAErK5PP5pzsY/uUUUGO95/C7nY3i3f0g+acqdGj0Gn6SQMvk69LQ==
X-Received: by 2002:a17:906:da0e:b0:a30:8f07:ba00 with SMTP id fi14-20020a170906da0e00b00a308f07ba00mr24629ejb.224.1706138849539;
        Wed, 24 Jan 2024 15:27:29 -0800 (PST)
Message-ID: <211c5cbb-2269-48b6-91b5-3a1a8127ce48@citrix.com>
Date: Wed, 24 Jan 2024 23:27:28 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: Xen 4.18rc/ARM64 on Raspberry Pi 4B: Traffic in DomU crashing
 Dom0 when using VLANs
Content-Language: en-GB
To: Bertrand Marquis <Bertrand.Marquis@arm.com>,
 George Dunlap <george.dunlap@cloud.com>
Cc: Elliott Mitchell <ehem+xen@m5p.com>, Paul Leiber <paul@onlineschubla.de>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>,
 Dario Faggioli <dfaggioli@suse.com>, Jan Beulich <jbeulich@suse.com>,
 Stefano Stabellini <sstabellini@kernel.org>, Julien Grall <julien@xen.org>
References: <838ff75f-1352-4d3c-9bc1-c7a57c828231@onlineschubla.de>
 <4cddfd89-f195-4a50-a14d-b86121414e56@onlineschubla.de>
 <f8f39239-ea95-4fc7-9abe-6ca005eb02d2@onlineschubla.de>
 <ZarcWQ6Ugwowy050@mattapan.m5p.com>
 <CA+zSX=Y=BsVEp3o6jRprn5sntWVA0Z6wNXUxtffDN+=fPv_Fzg@mail.gmail.com>
 <D2496DDC-78FA-4CC1-B7FC-EB62E506BC4F@arm.com>
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 xsFNBFLhNn8BEADVhE+Hb8i0GV6mihnnr/uiQQdPF8kUoFzCOPXkf7jQ5sLYeJa0cQi6Penp
 VtiFYznTairnVsN5J+ujSTIb+OlMSJUWV4opS7WVNnxHbFTPYZVQ3erv7NKc2iVizCRZ2Kxn
 srM1oPXWRic8BIAdYOKOloF2300SL/bIpeD+x7h3w9B/qez7nOin5NzkxgFoaUeIal12pXSR
 Q354FKFoy6Vh96gc4VRqte3jw8mPuJQpfws+Pb+swvSf/i1q1+1I4jsRQQh2m6OTADHIqg2E
 ofTYAEh7R5HfPx0EXoEDMdRjOeKn8+vvkAwhviWXTHlG3R1QkbE5M/oywnZ83udJmi+lxjJ5
 YhQ5IzomvJ16H0Bq+TLyVLO/VRksp1VR9HxCzItLNCS8PdpYYz5TC204ViycobYU65WMpzWe
 LFAGn8jSS25XIpqv0Y9k87dLbctKKA14Ifw2kq5OIVu2FuX+3i446JOa2vpCI9GcjCzi3oHV
 e00bzYiHMIl0FICrNJU0Kjho8pdo0m2uxkn6SYEpogAy9pnatUlO+erL4LqFUO7GXSdBRbw5
 gNt25XTLdSFuZtMxkY3tq8MFss5QnjhehCVPEpE6y9ZjI4XB8ad1G4oBHVGK5LMsvg22PfMJ
 ISWFSHoF/B5+lHkCKWkFxZ0gZn33ju5n6/FOdEx4B8cMJt+cWwARAQABzSlBbmRyZXcgQ29v
 cGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPsLBegQTAQgAJAIbAwULCQgHAwUVCgkI
 CwUWAgMBAAIeAQIXgAUCWKD95wIZAQAKCRBlw/kGpdefoHbdD/9AIoR3k6fKl+RFiFpyAhvO
 59ttDFI7nIAnlYngev2XUR3acFElJATHSDO0ju+hqWqAb8kVijXLops0gOfqt3VPZq9cuHlh
 IMDquatGLzAadfFx2eQYIYT+FYuMoPZy/aTUazmJIDVxP7L383grjIkn+7tAv+qeDfE+txL4
 SAm1UHNvmdfgL2/lcmL3xRh7sub3nJilM93RWX1Pe5LBSDXO45uzCGEdst6uSlzYR/MEr+5Z
 JQQ32JV64zwvf/aKaagSQSQMYNX9JFgfZ3TKWC1KJQbX5ssoX/5hNLqxMcZV3TN7kU8I3kjK
 mPec9+1nECOjjJSO/h4P0sBZyIUGfguwzhEeGf4sMCuSEM4xjCnwiBwftR17sr0spYcOpqET
 ZGcAmyYcNjy6CYadNCnfR40vhhWuCfNCBzWnUW0lFoo12wb0YnzoOLjvfD6OL3JjIUJNOmJy
 RCsJ5IA/Iz33RhSVRmROu+TztwuThClw63g7+hoyewv7BemKyuU6FTVhjjW+XUWmS/FzknSi
 dAG+insr0746cTPpSkGl3KAXeWDGJzve7/SBBfyznWCMGaf8E2P1oOdIZRxHgWj0zNr1+ooF
 /PzgLPiCI4OMUttTlEKChgbUTQ+5o0P080JojqfXwbPAyumbaYcQNiH1/xYbJdOFSiBv9rpt
 TQTBLzDKXok86M7BTQRS4TZ/ARAAkgqudHsp+hd82UVkvgnlqZjzz2vyrYfz7bkPtXaGb9H4
 Rfo7mQsEQavEBdWWjbga6eMnDqtu+FC+qeTGYebToxEyp2lKDSoAsvt8w82tIlP/EbmRbDVn
 7bhjBlfRcFjVYw8uVDPptT0TV47vpoCVkTwcyb6OltJrvg/QzV9f07DJswuda1JH3/qvYu0p
 vjPnYvCq4NsqY2XSdAJ02HrdYPFtNyPEntu1n1KK+gJrstjtw7KsZ4ygXYrsm/oCBiVW/OgU
 g/XIlGErkrxe4vQvJyVwg6YH653YTX5hLLUEL1NS4TCo47RP+wi6y+TnuAL36UtK/uFyEuPy
 wwrDVcC4cIFhYSfsO0BumEI65yu7a8aHbGfq2lW251UcoU48Z27ZUUZd2Dr6O/n8poQHbaTd
 6bJJSjzGGHZVbRP9UQ3lkmkmc0+XCHmj5WhwNNYjgbbmML7y0fsJT5RgvefAIFfHBg7fTY/i
 kBEimoUsTEQz+N4hbKwo1hULfVxDJStE4sbPhjbsPCrlXf6W9CxSyQ0qmZ2bXsLQYRj2xqd1
 bpA+1o1j2N4/au1R/uSiUFjewJdT/LX1EklKDcQwpk06Af/N7VZtSfEJeRV04unbsKVXWZAk
 uAJyDDKN99ziC0Wz5kcPyVD1HNf8bgaqGDzrv3TfYjwqayRFcMf7xJaL9xXedMcAEQEAAcLB
 XwQYAQgACQUCUuE2fwIbDAAKCRBlw/kGpdefoG4XEACD1Qf/er8EA7g23HMxYWd3FXHThrVQ
 HgiGdk5Yh632vjOm9L4sd/GCEACVQKjsu98e8o3ysitFlznEns5EAAXEbITrgKWXDDUWGYxd
 pnjj2u+GkVdsOAGk0kxczX6s+VRBhpbBI2PWnOsRJgU2n10PZ3mZD4Xu9kU2IXYmuW+e5KCA
 vTArRUdCrAtIa1k01sPipPPw6dfxx2e5asy21YOytzxuWFfJTGnVxZZSCyLUO83sh6OZhJkk
 b9rxL9wPmpN/t2IPaEKoAc0FTQZS36wAMOXkBh24PQ9gaLJvfPKpNzGD8XWR5HHF0NLIJhgg
 4ZlEXQ2fVp3XrtocHqhu4UZR4koCijgB8sB7Tb0GCpwK+C4UePdFLfhKyRdSXuvY3AHJd4CP
 4JzW0Bzq/WXY3XMOzUTYApGQpnUpdOmuQSfpV9MQO+/jo7r6yPbxT7CwRS5dcQPzUiuHLK9i
 nvjREdh84qycnx0/6dDroYhp0DFv4udxuAvt1h4wGwTPRQZerSm4xaYegEFusyhbZrI0U9tJ
 B8WrhBLXDiYlyJT6zOV2yZFuW47VrLsjYnHwn27hmxTC/7tvG3euCklmkn9Sl9IAKFu29RSo
 d5bD8kMSCYsTqtTfT6W4A3qHGvIDta3ptLYpIAOD2sY3GYq2nf3Bbzx81wZK14JdDDHUX2Rs
 6+ahAA==
In-Reply-To: <D2496DDC-78FA-4CC1-B7FC-EB62E506BC4F@arm.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 23/01/2024 8:29 am, Bertrand Marquis wrote:
>> Thanks for raising the visibility of this.  I'm not familiar with ARM,
>> but if I were investigating this I'd try to figure out what the
>> "unhandled" error messages are.  "gnttab_mark_dirty not implemented
>> yet" looks pretty sus too, and also sounds like it might be something
>> ARM-specific.
> I tried to explain those and they are not the reason of the problem.

The "gnttab_mark_dirty not implemented yet" printk() should be deleted.

It's /* TODO - logdirty support */ in a form that is actively unhelpful
to people using a debug hypervisor to debug other things.

~Andrew


From xen-devel-bounces@lists.xenproject.org Thu Jan 25 00:01:50 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 25 Jan 2024 00:01:50 +0000
Received: from list by lists.xenproject.org with outflank-mailman.671298.1044554 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSnBf-0006fU-Cv; Thu, 25 Jan 2024 00:01:43 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 671298.1044554; Thu, 25 Jan 2024 00:01:43 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSnBf-0006fN-9r; Thu, 25 Jan 2024 00:01:43 +0000
Received: by outflank-mailman (input) for mailman id 671298;
 Thu, 25 Jan 2024 00:01:41 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=uncx=JD=kernel.org=sstabellini@srs-se1.protection.inumbo.net>)
 id 1rSnBd-0006fH-ML
 for xen-devel@lists.xenproject.org; Thu, 25 Jan 2024 00:01:41 +0000
Received: from sin.source.kernel.org (sin.source.kernel.org [145.40.73.55])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id e9924b40-bb14-11ee-98f5-6d05b1d4d9a1;
 Thu, 25 Jan 2024 01:01:40 +0100 (CET)
Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58])
 by sin.source.kernel.org (Postfix) with ESMTP id 5DDE4CE31A1;
 Thu, 25 Jan 2024 00:01:35 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 8349FC433F1;
 Thu, 25 Jan 2024 00:01:32 +0000 (UTC)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: e9924b40-bb14-11ee-98f5-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
	s=k20201202; t=1706140894;
	bh=LbSrEN6S1ZKkePLoCe5auKR7lirj9RHXYgCFk2r0BhY=;
	h=Date:From:To:cc:Subject:In-Reply-To:References:From;
	b=AmnjFpyFcBvZe8EN0QOulE6ecMXqyufKC2j05avcY/jmSn3VsjnOlHj0WIlsHZ1ss
	 F/cLyAUH4gPQINoy/Cb41mCuA5SRNKmnU1rpxGkCsq8L0kXkUeigHMglA6HmVvdPdC
	 7fmkR82Phtttx1sU/8GlON2bz2VpbbPNGJm0oScUTs6MN06KeKH/2gAY8rrOL3ERmy
	 CzZZ2MO5BndQaW1Kt7oaXPddwNKbxN8G7YqWhtMOH6MpKpswn+YYsjIoFNCyJMsOz2
	 B14XtIgMWbIW97VBgWNFLxb2I31c3owhobnQAsqXts8RSxElXmr/yWScuDXwSEbCXK
	 JrBQzxqozsp+w==
Date: Wed, 24 Jan 2024 16:01:27 -0800 (PST)
From: Stefano Stabellini <sstabellini@kernel.org>
X-X-Sender: sstabellini@ubuntu-linux-20-04-desktop
To: Andrew Cooper <andrew.cooper3@citrix.com>
cc: Stefano Stabellini <sstabellini@kernel.org>, 
    Mykyta Poturai <Mykyta_Poturai@epam.com>, 
    "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>, 
    Wei Liu <wl@xen.org>, Anthony PERARD <anthony.perard@citrix.com>, 
    Juergen Gross <jgross@suse.com>, George Dunlap <george.dunlap@citrix.com>, 
    Jan Beulich <jbeulich@suse.com>, Julien Grall <julien@xen.org>, 
    Bertrand Marquis <bertrand.marquis@arm.com>, 
    Michal Orzel <michal.orzel@amd.com>, 
    Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>, 
    =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
Subject: Re: [PATCH 2/2] xen/dm: arm: Introduce inject_msi2 DM op
In-Reply-To: <dcf0fbe3-a95d-483f-a424-949c16805786@citrix.com>
Message-ID: <alpine.DEB.2.22.394.2401241601130.7734@ubuntu-linux-20-04-desktop>
References: <cover.1705066642.git.mykyta_poturai@epam.com> <6c551b03796fbf091b22fcde96d894cd5308ff91.1705066642.git.mykyta_poturai@epam.com> <alpine.DEB.2.22.394.2401231704270.2287888@ubuntu-linux-20-04-desktop>
 <dcf0fbe3-a95d-483f-a424-949c16805786@citrix.com>
User-Agent: Alpine 2.22 (DEB 394 2020-01-19)
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="8323329-401759874-1706140894=:7734"

  This message is in MIME format.  The first part should be readable text,
  while the remaining parts are likely unreadable without MIME-aware tools.

--8323329-401759874-1706140894=:7734
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8BIT

On Wed, 24 Jan 2024, Andrew Cooper wrote:
> On 24/01/2024 1:07 am, Stefano Stabellini wrote:
> >> I agree with Jan that we could reuse
> >> xendevicemodel_inject_msi by assuing that PCI BDF zero is invalid.
> 
> I've already explained why that will break future x86.  (See the other
> thread off this patch for specifics).
> 
> When we add vIOMMUs to guests, we *must* have correct source ids.  0 is
> ambiguous, so not safe to reuse.
> 
> 
> Allocating a new subop now is the only way to not shoot in the foot later.

OK, what you wrote makes sense to me.
--8323329-401759874-1706140894=:7734--


From xen-devel-bounces@lists.xenproject.org Thu Jan 25 00:20:39 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 25 Jan 2024 00:20:39 +0000
Received: from list by lists.xenproject.org with outflank-mailman.671304.1044565 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSnTl-0001XR-SR; Thu, 25 Jan 2024 00:20:25 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 671304.1044565; Thu, 25 Jan 2024 00:20:25 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSnTl-0001XK-PP; Thu, 25 Jan 2024 00:20:25 +0000
Received: by outflank-mailman (input) for mailman id 671304;
 Thu, 25 Jan 2024 00:20:25 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=CPaO=JD=gmail.com=simonpatp@srs-se1.protection.inumbo.net>)
 id 1rSnTk-0001XE-I2
 for xen-devel@lists.xenproject.org; Thu, 25 Jan 2024 00:20:25 +0000
Received: from mail-lj1-x231.google.com (mail-lj1-x231.google.com
 [2a00:1450:4864:20::231])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 86e8ce09-bb17-11ee-98f5-6d05b1d4d9a1;
 Thu, 25 Jan 2024 01:20:21 +0100 (CET)
Received: by mail-lj1-x231.google.com with SMTP id
 38308e7fff4ca-2cf33035d1dso2960181fa.2
 for <xen-devel@lists.xenproject.org>; Wed, 24 Jan 2024 16:20:21 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 86e8ce09-bb17-11ee-98f5-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1706142021; x=1706746821; darn=lists.xenproject.org;
        h=cc:to:subject:message-id:date:from:in-reply-to:references
         :mime-version:from:to:cc:subject:date:message-id:reply-to;
        bh=XcT56BrPnVgO3zxnvIkdagO9uiBP+FPrerR597aVXeQ=;
        b=fppdf3oBGNWT57KaNpsP5oCVclR1mDhnkhel2A6T84ISpnmJIvAIh3d3xluoWWE3f8
         rvZQ762zcGl0/jJNC7lBZQpxgZvXW93RTU6d96NtONeYkBae8iAdYSDfF1LGkx0dmQtN
         t4KFNhjCgbtJp9A329cQOrVGB9xs/9B1a7PDhVUgrVXmi2dDK1LuOu6i/Ua1HfYk/p7m
         JUzpL2N3qjlZUoqzfe8Gl1bCrA7IzZOY6WsJZC4gu59W3rSB+5wDgwgq7F4eK1mryebw
         IecxY+YmYNJWCEjG1X8SfaLtM5hkDG/265BE0lywW3pGKsL+0W9iYk8r83tKh56VRtH9
         EnRA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706142021; x=1706746821;
        h=cc:to:subject:message-id:date:from:in-reply-to:references
         :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id
         :reply-to;
        bh=XcT56BrPnVgO3zxnvIkdagO9uiBP+FPrerR597aVXeQ=;
        b=ie5Lbx2sBJ/chwzhY879NbgwDJdvI396JtA8QMwOHAEBFoqZ8rTBsA2J0yzpKapkHd
         mEHUCe3RWl1gSBxR7EkNH0rQobR4RD1XVlIGmHjyY2/pc9tWKWvh7vW9hAx7x6aHIkNM
         JptOdcOIKvIj25GCw53t7eiHmZyiu4YDkG9Hyhfh+hLIpfbK62ttmJqTXxU8+LXPPVsN
         cQHxonPhDdVJ053vGYvGfbV5ROEf6NNg+VJcrgZd2MU8cVCryTWoJZ3N+a08Ur7elufi
         a62EHAW5apOpSvMtMzuEIqw3YuSByz0mih33UQoEF5fxi7yg87UQ6IfacdSch8yEqRhv
         Bb1w==
X-Gm-Message-State: AOJu0YxEyGFaKmhD6K3nGeMR90TAP5qAjj2WbRC8b+s6U+iKf1dsDJz8
	D1F/Wy2yNpWg7C0SfnR+bbZmrH09/M6YZDmEbxg7rizxbETHg6Mm7k8wgZvh7d+Oq03h+AooWVj
	M6akGq3L+3AwvMtEA/+jop0yLII8=
X-Google-Smtp-Source: AGHT+IHjueQl23Pv6jy8FmFLqUvJE4jvxk6lQWT6IVIoHodvnxpZj6Rv1sqcaoGnvy8sPsjAu26yHVFiA3oYE6qtea4=
X-Received: by 2002:a2e:8516:0:b0:2cc:9b9f:a97d with SMTP id
 j22-20020a2e8516000000b002cc9b9fa97dmr91034lji.102.1706142021052; Wed, 24 Jan
 2024 16:20:21 -0800 (PST)
MIME-Version: 1.0
References: <fa23a590-5869-4e11-8998-1d03742c5919@suse.com>
 <CAOCpoWf4CMkCWx8uR2NbFrZrKSS78wj1-hFsAUqsjCfsmqooVA@mail.gmail.com>
 <Zajg1O7Z52VTBq31@macbook> <CAOCpoWeO9h7b_CjJb9jtKaEUVv_=XDSVkr55QSg3ArFc4n8G2w@mail.gmail.com>
 <ZajzcpArQYQhdj3T@macbook> <ZakcdfS3UwEb0oh2@macbook> <CAOCpoWdL3YnpitZxEoFgdvtZ6juy8oykYj6fX_tv4QLvj2Fv0g@mail.gmail.com>
 <ZapXoOKdhWgJFxbF@macbook> <CAOCpoWccvC91FiJr_MpVxXYqOfZxAn6bKkr6vQG+6p4WbxT03A@mail.gmail.com>
 <CAOCpoWf0pfp72=X9iqziP+uVkLwB0HRp3gvQhPOsHWEtFzZgVA@mail.gmail.com> <ZbDJE-tMhnQoXkPK@macbook>
In-Reply-To: <ZbDJE-tMhnQoXkPK@macbook>
From: Patrick Plenefisch <simonpatp@gmail.com>
Date: Wed, 24 Jan 2024 19:20:09 -0500
Message-ID: <CAOCpoWcuZTciH3sV_F0u-RGXXJin+6zgYkyLAQHAK7xn=EB_LA@mail.gmail.com>
Subject: Re: ACPI VFCT table too short on PVH dom0 (was: Re: E820 memory
 allocation issue on Threadripper platforms)
To: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
Cc: Jan Beulich <jbeulich@suse.com>, xen-devel@lists.xenproject.org, 
	Juergen Gross <jgross@suse.com>, Huang Rui <ray.huang@amd.com>, Jiqian Chen <Jiqian.Chen@amd.com>
Content-Type: multipart/mixed; boundary="0000000000001a0282060fba2598"

--0000000000001a0282060fba2598
Content-Type: multipart/alternative; boundary="0000000000001a0280060fba2596"

--0000000000001a0280060fba2596
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

On Wed, Jan 24, 2024 at 3:23=E2=80=AFAM Roger Pau Monn=C3=A9 <roger.pau@cit=
rix.com>
wrote:

> > >
> > >>
> > >> > I had been working with ASRock support ever since I got my brand
> > >> > new motherboard because I couldn't see the BIOS/UEFI screens. I
> could
> > >> boot
> > >> > up, and once native linux took control amdgpu got the screens/gpu
> > >> working
> > >> > fine. I finally managed to be able to see the UEFI/BIOS setup
> screens by
> > >> > patching my VBIOS: I extracted the VBIOS image of a cheap R5 430
> OEM,
> > >> ran
> > >> > GOPupd to update the VBIOS UEFI component (GOP) from version 1.60 =
to
> > >> 1.67.
> > >> > That allowed the UEFI to actually initialize and use a screen.
> However,
> > >> I
> > >> > later realized that only 1 monitor was lighting up in the bios: my
> > >> monitor
> > >> > plugged into the Radeon RX 480 that was still on VBIOS GOP 1.60. I=
t
> > >> appears
> > >> > the GOP was initializing the RX 480 too, despite not being flashed
> with
> > >> the
> > >> > latest itself. I am working on an email to asrock support about
> that.
> > >> Once
> > >> > I get into linux (native or PV), both monitors light up as expecte=
d.
> > >> Also,
> > >> > If I boot linux PVH from grub, they also work.
> > >>
> > >> OK, that's good, so that would be UEFI -> grub -> Xen -> Linux PVH?
> > >>
> > >
> > > Correct. Inserting grub into the chain "fixes" the acpi tables and
> things
> > > work correctly.
> > >
> >
> > Ok, I am not sure what I did the other day to get it to work, but I can=
't
> > replicate *any* PVH success today. One driver (radeon or amdgpu) always
> > complains the VFCT table is wrong, and leads to the symptoms previously
> > reported.
>
> Are you sure you are using Xen 4.18?  Some of the Xen logs you
> provided did use Xen 4.17, which doesn't have the VFCT fix.
>
> Can you please provide the `xl dmesg` for the non-working case when
> using grub2?
>

Yes, I expected it to fail on 4.17, but failing on 4.18 surprised me. I
tried this build with several kernels, with similar results.

Interestingly, with xen 4.18 + Debian 12 + Linux 6.1 (recompiled with the
working start address), I get the following graphics modes:
Grub, old low resolution with matching low resolution colXrow count
Xen font, xen boot, high resolution with low resolution colXrow count
Xen font, kernel early boot, high resolution with low resolution colXrow
count
Linux font, kernel later boot, high resolution with high resolution colxrow
count
At ~18s in the kernel logs, no graphics anymore

I have attached the log of serial output (xen+linux) after grub


>
> Thanks, Roger.
>

--0000000000001a0280060fba2596
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><div dir=3D"ltr"><br></div><br><div class=3D"gmail_quote">=
<div dir=3D"ltr" class=3D"gmail_attr">On Wed, Jan 24, 2024 at 3:23=E2=80=AF=
AM Roger Pau Monn=C3=A9 &lt;<a href=3D"mailto:roger.pau@citrix.com">roger.p=
au@citrix.com</a>&gt; wrote:</div><blockquote class=3D"gmail_quote" style=
=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding=
-left:1ex">
&gt; &gt;<br>
&gt; &gt;&gt;<br>
&gt; &gt;&gt; &gt; I had been working with ASRock support ever since I got =
my brand<br>
&gt; &gt;&gt; &gt; new motherboard because I couldn&#39;t see the BIOS/UEFI=
 screens. I could<br>
&gt; &gt;&gt; boot<br>
&gt; &gt;&gt; &gt; up, and once native linux took control amdgpu got the sc=
reens/gpu<br>
&gt; &gt;&gt; working<br>
&gt; &gt;&gt; &gt; fine. I finally managed to be able to see the UEFI/BIOS =
setup screens by<br>
&gt; &gt;&gt; &gt; patching my VBIOS: I extracted the VBIOS image of a chea=
p R5 430 OEM,<br>
&gt; &gt;&gt; ran<br>
&gt; &gt;&gt; &gt; GOPupd to update the VBIOS UEFI component (GOP) from ver=
sion 1.60 to<br>
&gt; &gt;&gt; 1.67.<br>
&gt; &gt;&gt; &gt; That allowed the UEFI to actually initialize and use a s=
creen. However,<br>
&gt; &gt;&gt; I<br>
&gt; &gt;&gt; &gt; later realized that only 1 monitor was lighting up in th=
e bios: my<br>
&gt; &gt;&gt; monitor<br>
&gt; &gt;&gt; &gt; plugged into the Radeon RX 480 that was still on VBIOS G=
OP 1.60. It<br>
&gt; &gt;&gt; appears<br>
&gt; &gt;&gt; &gt; the GOP was initializing the RX 480 too, despite not bei=
ng flashed with<br>
&gt; &gt;&gt; the<br>
&gt; &gt;&gt; &gt; latest itself. I am working on an email to asrock suppor=
t about that.<br>
&gt; &gt;&gt; Once<br>
&gt; &gt;&gt; &gt; I get into linux (native or PV), both monitors light up =
as expected.<br>
&gt; &gt;&gt; Also,<br>
&gt; &gt;&gt; &gt; If I boot linux PVH from grub, they also work.<br>
&gt; &gt;&gt;<br>
&gt; &gt;&gt; OK, that&#39;s good, so that would be UEFI -&gt; grub -&gt; X=
en -&gt; Linux PVH?<br>
&gt; &gt;&gt;<br>
&gt; &gt;<br>
&gt; &gt; Correct. Inserting grub into the chain &quot;fixes&quot; the acpi=
 tables and things<br>
&gt; &gt; work correctly.<br>
&gt; &gt;<br>
&gt; <br>
&gt; Ok, I am not sure what I did the other day to get it to work, but I ca=
n&#39;t<br>
&gt; replicate *any* PVH success today. One driver (radeon or amdgpu) alway=
s<br>
&gt; complains the VFCT table is wrong, and leads to the symptoms previousl=
y<br>
&gt; reported.<br>
<br>
Are you sure you are using Xen 4.18?=C2=A0 Some of the Xen logs you<br>
provided did use Xen 4.17, which doesn&#39;t have the VFCT fix.<br>
<br>
Can you please provide the `xl dmesg` for the non-working case when<br>
using grub2?<br></blockquote><div><br></div><div>Yes, I expected it to fail=
 on 4.17, but failing on 4.18 surprised me. I tried this build with several=
 kernels, with similar results.</div><div><br></div><div>Interestingly, wit=
h xen 4.18 + Debian 12 + Linux 6.1 (recompiled with the working start addre=
ss), I get the following graphics modes:</div><div>Grub, old low resolution=
 with matching low resolution colXrow count<br></div><div>Xen font, xen boo=
t, high resolution with low resolution colXrow count<br></div><div>Xen font=
, kernel early boot, high resolution with low resolution colXrow count</div=
><div>Linux font, kernel later boot, high resolution with high resolution c=
olxrow count</div><div>At ~18s in the kernel logs, no graphics anymore</div=
><div><br></div><div>I have attached the log of serial output (xen+linux) a=
fter grub<br></div><div>=C2=A0</div><blockquote class=3D"gmail_quote" style=
=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding=
-left:1ex">
<br>
Thanks, Roger.<br>
</blockquote></div></div>

--0000000000001a0280060fba2596--
--0000000000001a0282060fba2598
Content-Type: text/plain; charset="UTF-8"; name="xen18grubpvh.txt"
Content-Disposition: attachment; filename="xen18grubpvh.txt"
Content-Transfer-Encoding: base64
Content-ID: <f_lrsgvl7w0>
X-Attachment-Id: f_lrsgvl7w0

WGVuIDQuMTguMA0KKFhFTikgWGVuIHZlcnNpb24gNC4xOC4wIChwYXRyaWNrQCkgKGdjYyAoRGVi
aWFuIDEwLjIuMS02KSAxMC4yLjEgMjAyMTAxMTApIGRlYnVnPW4gV2VkIEphbiAxNyAxODozMTo1
MyBFU1QgMjAyNA0KKFhFTikgTGF0ZXN0IENoYW5nZVNldDogDQooWEVOKSBidWlsZC1pZDogZTY4
ZTgyODQ3NTUwZTQwYTI1ZWVhNjZlYThhMmUxZDg2NTM4NWExZA0KKFhFTikgQ29uc29sZSBvdXRw
dXQgaXMgc3luY2hyb25vdXMuDQooWEVOKSBCb290bG9hZGVyOiBHUlVCIDIuMDYtMTMrZGViMTJ1
MQ0KKFhFTikgQ29tbWFuZCBsaW5lOiBwbGFjZWhvbGRlciBkb20wPXB2aCBkb20wX21lbT04Ryxt
YXg6OEcgbG9nbHZsPWFsbCBlODIwLXZlcmJvc2U9dHJ1ZSBjb25zb2xlX3RvX3Jpbmcgc3luY19j
b25zb2xlIGd1ZXN0X2xvZ2x2bD1hbGwgY29tMT0xMTUyMDAsOG4xIGNvbnNvbGU9Y29tMSx2Z2Eg
bm8tcmVhbC1tb2RlIGVkZD1vZmYNCihYRU4pIFhlbiBpbWFnZSBsb2FkIGJhc2UgYWRkcmVzczog
MHg5ZjYwMDAwMA0KKFhFTikgVmlkZW8gaW5mb3JtYXRpb246DQooWEVOKSAgVkdBIGlzIGdyYXBo
aWNzIG1vZGUgMjU2MHgxNDQwLCAzMiBicHANCihYRU4pICBWQkUvRERDIG1ldGhvZHM6IG5vbmU7
IEVESUQgdHJhbnNmZXIgdGltZTogMCBzZWNvbmRzDQooWEVOKSBEaXNjIGluZm9ybWF0aW9uOg0K
KFhFTikgIEZvdW5kIDAgTUJSIHNpZ25hdHVyZXMNCihYRU4pICBGb3VuZCA2IEVERCBpbmZvcm1h
dGlvbiBzdHJ1Y3R1cmVzDQooWEVOKSBDUFUgVmVuZG9yOiBBTUQsIEZhbWlseSAyNSAoMHgxOSks
IE1vZGVsIDI0ICgweDE4KSwgU3RlcHBpbmcgMSAocmF3IDAwYTEwZjgxKQ0KKFhFTikgRW5hYmxp
bmcgU3VwZXJ2aXNvciBTaGFkb3cgU3RhY2tzDQooWEVOKSBJbml0aWFsIEVGSSBSQU0gbWFwOg0K
KFhFTikgIFswMDAwMDAwMDAwMDAwMDAwLCAwMDAwMDAwMDAwMDlmZmZmXSAodXNhYmxlKQ0KKFhF
TikgIFswMDAwMDAwMDAwMTAwMDAwLCAwMDAwMDAwMDAzZmZmZmZmXSAodXNhYmxlKQ0KKFhFTikg
IFswMDAwMDAwMDA0MDAwMDAwLCAwMDAwMDAwMDA0MDQ1ZmZmXSAoQUNQSSBOVlMpDQooWEVOKSAg
WzAwMDAwMDAwMDQwNDYwMDAsIDAwMDAwMDAwMDlhZmVmZmZdICh1c2FibGUpDQooWEVOKSAgWzAw
MDAwMDAwMDlhZmYwMDAsIDAwMDAwMDAwMDlmZmZmZmZdIChyZXNlcnZlZCkNCihYRU4pICBbMDAw
MDAwMDAwYTAwMDAwMCwgMDAwMDAwMDAwYWZmZmZmZl0gKHVzYWJsZSkNCihYRU4pICBbMDAwMDAw
MDAwYjAwMDAwMCwgMDAwMDAwMDAwYjAyMGZmZl0gKHJlc2VydmVkKQ0KKFhFTikgIFswMDAwMDAw
MDBiMDIxMDAwLCAwMDAwMDAwMGEwNGU4ZmZmXSAodXNhYmxlKQ0KKFhFTikgIFswMDAwMDAwMGEw
NGU5MDAwLCAwMDAwMDAwMGE2NGU4ZmZmXSAocmVzZXJ2ZWQpDQooWEVOKSAgWzAwMDAwMDAwYTY0
ZTkwMDAsIDAwMDAwMDAwYTc0N2VmZmZdIChBQ1BJIGRhdGEpDQooWEVOKSAgWzAwMDAwMDAwYTc0
N2YwMDAsIDAwMDAwMDAwYTk0N2VmZmZdIChBQ1BJIE5WUykNCihYRU4pICBbMDAwMDAwMDBhOTQ3
ZjAwMCwgMDAwMDAwMDBhZGRmZWZmZl0gKHJlc2VydmVkKQ0KKFhFTikgIFswMDAwMDAwMGFkZGZm
MDAwLCAwMDAwMDAwMGFmZmZhZmZmXSAodXNhYmxlKQ0KKFhFTikgIFswMDAwMDAwMGFmZmZiMDAw
LCAwMDAwMDAwMGFmZmZmZmZmXSAocmVzZXJ2ZWQpDQooWEVOKSAgWzAwMDAwMDAxMDAwMDAwMDAs
IDAwMDAwMDQwM2RiYmZmZmZdICh1c2FibGUpDQooWEVOKSAgWzAwMDAwMDAwMDAwYTAwMDAsIDAw
MDAwMDAwMDAwZmZmZmZdIChyZXNlcnZlZCkNCihYRU4pICBbMDAwMDAwMDBiMDAwMDAwMCwgMDAw
MDAwMDBiZmZmZmZmZl0gKHJlc2VydmVkKQ0KKFhFTikgIFswMDAwMDAwMGRmMjAwMDAwLCAwMDAw
MDAwMGRmMmZmZmZmXSAocmVzZXJ2ZWQpDQooWEVOKSAgWzAwMDAwMDAwZTAwMDAwMDAsIDAwMDAw
MDAwZWZmZmZmZmZdIChyZXNlcnZlZCkNCihYRU4pICBbMDAwMDAwMDBmZWEwMDAwMCwgMDAwMDAw
MDBmZWFmZmZmZl0gKHJlc2VydmVkKQ0KKFhFTikgIFswMDAwMDAwMGZlYzAwMDAwLCAwMDAwMDAw
MGZlYzAwZmZmXSAocmVzZXJ2ZWQpDQooWEVOKSAgWzAwMDAwMDAwZmVjMTAwMDAsIDAwMDAwMDAw
ZmVjMTBmZmZdIChyZXNlcnZlZCkNCihYRU4pICBbMDAwMDAwMDBmZWMzMDAwMCwgMDAwMDAwMDBm
ZWMzMGZmZl0gKHJlc2VydmVkKQ0KKFhFTikgIFswMDAwMDAwMGZlZDAwMDAwLCAwMDAwMDAwMGZl
ZDAwZmZmXSAocmVzZXJ2ZWQpDQooWEVOKSAgWzAwMDAwMDAwZmVkNDAwMDAsIDAwMDAwMDAwZmVk
NDRmZmZdIChyZXNlcnZlZCkNCihYRU4pICBbMDAwMDAwMDBmZWQ4MDAwMCwgMDAwMDAwMDBmZWQ4
ZmZmZl0gKHJlc2VydmVkKQ0KKFhFTikgIFswMDAwMDAwMGZmMDAwMDAwLCAwMDAwMDAwMGZmZmZm
ZmZmXSAocmVzZXJ2ZWQpDQooWEVOKSAgWzAwMDAwMDQwM2RiYzAwMDAsIDAwMDAwMDQwM2ZmZmZm
ZmZdIChyZXNlcnZlZCkNCihYRU4pIEVGSSBSQU0gbWFwOg0KKFhFTikgIFswMDAwMDAwMDAwMDAw
MDAwLCAwMDAwMDAwMDAwMDlmZmZmXSAodXNhYmxlKQ0KKFhFTikgIFswMDAwMDAwMDAwMGEwMDAw
LCAwMDAwMDAwMDAwMGZmZmZmXSAocmVzZXJ2ZWQpDQooWEVOKSAgWzAwMDAwMDAwMDAxMDAwMDAs
IDAwMDAwMDAwMDNmZmZmZmZdICh1c2FibGUpDQooWEVOKSAgWzAwMDAwMDAwMDQwMDAwMDAsIDAw
MDAwMDAwMDQwNDVmZmZdIChBQ1BJIE5WUykNCihYRU4pICBbMDAwMDAwMDAwNDA0NjAwMCwgMDAw
MDAwMDAwOWFmZWZmZl0gKHVzYWJsZSkNCihYRU4pICBbMDAwMDAwMDAwOWFmZjAwMCwgMDAwMDAw
MDAwOWZmZmZmZl0gKHJlc2VydmVkKQ0KKFhFTikgIFswMDAwMDAwMDBhMDAwMDAwLCAwMDAwMDAw
MDBhZmZmZmZmXSAodXNhYmxlKQ0KKFhFTikgIFswMDAwMDAwMDBiMDAwMDAwLCAwMDAwMDAwMDBi
MDIwZmZmXSAocmVzZXJ2ZWQpDQooWEVOKSAgWzAwMDAwMDAwMGIwMjEwMDAsIDAwMDAwMDAwYTA0
ZThmZmZdICh1c2FibGUpDQooWEVOKSAgWzAwMDAwMDAwYTA0ZTkwMDAsIDAwMDAwMDAwYTY0ZThm
ZmZdIChyZXNlcnZlZCkNCihYRU4pICBbMDAwMDAwMDBhNjRlOTAwMCwgMDAwMDAwMDBhNzQ3ZWZm
Zl0gKEFDUEkgZGF0YSkNCihYRU4pICBbMDAwMDAwMDBhNzQ3ZjAwMCwgMDAwMDAwMDBhOTQ3ZWZm
Zl0gKEFDUEkgTlZTKQ0KKFhFTikgIFswMDAwMDAwMGE5NDdmMDAwLCAwMDAwMDAwMGFkZGZlZmZm
XSAocmVzZXJ2ZWQpDQooWEVOKSAgWzAwMDAwMDAwYWRkZmYwMDAsIDAwMDAwMDAwYWZmZmFmZmZd
ICh1c2FibGUpDQooWEVOKSAgWzAwMDAwMDAwYWZmZmIwMDAsIDAwMDAwMDAwYmZmZmZmZmZdIChy
ZXNlcnZlZCkNCihYRU4pICBbMDAwMDAwMDBkZjIwMDAwMCwgMDAwMDAwMDBkZjJmZmZmZl0gKHJl
c2VydmVkKQ0KKFhFTikgIFswMDAwMDAwMGUwMDAwMDAwLCAwMDAwMDAwMGVmZmZmZmZmXSAocmVz
ZXJ2ZWQpDQooWEVOKSAgWzAwMDAwMDAwZmVhMDAwMDAsIDAwMDAwMDAwZmVhZmZmZmZdIChyZXNl
cnZlZCkNCihYRU4pICBbMDAwMDAwMDBmZWMwMDAwMCwgMDAwMDAwMDBmZWMwMGZmZl0gKHJlc2Vy
dmVkKQ0KKFhFTikgIFswMDAwMDAwMGZlYzEwMDAwLCAwMDAwMDAwMGZlYzEwZmZmXSAocmVzZXJ2
ZWQpDQooWEVOKSAgWzAwMDAwMDAwZmVjMzAwMDAsIDAwMDAwMDAwZmVjMzBmZmZdIChyZXNlcnZl
ZCkNCihYRU4pICBbMDAwMDAwMDBmZWQwMDAwMCwgMDAwMDAwMDBmZWQwMGZmZl0gKHJlc2VydmVk
KQ0KKFhFTikgIFswMDAwMDAwMGZlZDQwMDAwLCAwMDAwMDAwMGZlZDQ0ZmZmXSAocmVzZXJ2ZWQp
DQooWEVOKSAgWzAwMDAwMDAwZmVkODAwMDAsIDAwMDAwMDAwZmVkOGZmZmZdIChyZXNlcnZlZCkN
CihYRU4pICBbMDAwMDAwMDBmZjAwMDAwMCwgMDAwMDAwMDBmZmZmZmZmZl0gKHJlc2VydmVkKQ0K
KFhFTikgIFswMDAwMDAwMTAwMDAwMDAwLCAwMDAwMDA0MDNkYmJmZmZmXSAodXNhYmxlKQ0KKFhF
TikgIFswMDAwMDA0MDNkYmMwMDAwLCAwMDAwMDA0MDNmZmZmZmZmXSAocmVzZXJ2ZWQpDQooWEVO
KSBBQ1BJOiBSU0RQIEE5NDYzMDE0LCAwMDI0IChyMiBBTUQgICApDQooWEVOKSBBQ1BJOiBYU0RU
IEE5NDYyNzI4LCAwMTFDIChyMSBBTUQgICAgICBBIE0gSSAgICAgICAgIDEgQU1JICAgMTAwMDAx
MykNCihYRU4pIEFDUEk6IEZBQ1AgQTc0N0MwMDAsIDAxMTQgKHI2IEFNRCAgICAgIEEgTSBJICAg
ICAgICAgMSBBTUkgICAgIDEwMDEzKQ0KKFhFTikgQUNQSTogRFNEVCBBNzQ2RTAwMCwgRDJGNiAo
cjIgQU1EICAgICAgQSBNIEkgICAgICAgICAxIElOVEwgMjAyMzAzMzEpDQooWEVOKSBBQ1BJOiBG
QUNTIEE5NDVBMDAwLCAwMDQwDQooWEVOKSBBQ1BJOiBTU0RUIEE3NDdFMDAwLCAwOUNDIChyMiAg
ICBBTUQgQk9VTERFUkcgICAgICAgIDIgTVNGVCAgNDAwMDAwMCkNCihYRU4pIEFDUEk6IFNTRFQg
QTc0N0QwMDAsIDAwNjcgKHIyICAgIEFNRCAgIENQTURTTSAgICAgICAgMSBJTlRMIDIwMjMwMzMx
KQ0KKFhFTikgQUNQSTogRklEVCBBNzQ2RDAwMCwgMDA5QyAocjEgICAgQU1EICAgIEEgTSBJICAg
ICAgICAxIEFNSSAgICAgMTAwMTMpDQooWEVOKSBBQ1BJOiBNQ0ZHIEE3NDZDMDAwLCAwMDNDIChy
MSAgICBBTUQgICAgQSBNIEkgICAgICAgIDEgTVNGVCAgICAxMDAxMykNCihYRU4pIEFDUEk6IFNT
RFQgQTc0NkIwMDAsIDA1QzUgKHIyICAgIEFNRCAgQ1BVU1NEVCAgICAgICAgMSBBTUkgICAgICAg
ICAxKQ0KKFhFTikgQUNQSTogSFBFVCBBNzQ2QTAwMCwgMDAzOCAocjEgICAgQU1EICAgIEEgTSBJ
ICAgICAgICAxIEFNSSAgICAgICAgIDUpDQooWEVOKSBBQ1BJOiBTU0RUIEE3NDY4MDAwLCAxQjUz
IChyMiAgICBBTUQgICBDUE1SQVMgICAgICAgIDEgSU5UTCAyMDIzMDMzMSkNCihYRU4pIEFDUEk6
IEJFUlQgQTc0NjcwMDAsIDAwMzAgKHIxIEFNRCAgICBBTUQgQkVSVCAgICAgICAgMSBBTUQgICAg
ICAgICAxKQ0KKFhFTikgQUNQSTogRlBEVCBBNzQ2NTAwMCwgMDA0NCAocjEgQU1EICAgICAgQSBN
IEkgICAxMDcyMDA5IEFNSSAgIDEwMDAwMTMpDQooWEVOKSBBQ1BJOiBTU0RUIEE3NDYyMDAwLCAy
NDQ4IChyMiAgICBBTUQgR1BQX1BNRV8gICAgICAgIDEgSU5UTCAyMDIzMDMzMSkNCihYRU4pIEFD
UEk6IFNTRFQgQTc0NUYwMDAsIDI0NDggKHIyICAgIEFNRCBHUFBfUE1FXyAgICAgICAgMSBJTlRM
IDIwMjMwMzMxKQ0KKFhFTikgQUNQSTogU1NEVCBBNzQ1QzAwMCwgMjQ0OCAocjIgICAgQU1EIEdQ
UF9QTUVfICAgICAgICAxIElOVEwgMjAyMzAzMzEpDQooWEVOKSBBQ1BJOiBTU0RUIEE3NDU5MDAw
LCAyNDQ4IChyMiAgICBBTUQgR1BQX1BNRV8gICAgICAgIDEgSU5UTCAyMDIzMDMzMSkNCihYRU4p
IEFDUEk6IFZGQ1QgQTc0NEEwMDAsIEU2ODQgKHIxIEFNRCAgICAgIEEgTSBJICAgICAgICAgMSAg
QU1EIDMxNTA0RjQ3KQ0KKFhFTikgQUNQSTogU1NEVCBBNzQzRTAwMCwgQTQwRSAocjIgICAgQU1E
ICBBTUQgQ1BVICAgICAgICAxIEFNRCAgICAgICAgIDEpDQooWEVOKSBBQ1BJOiBITUFUIEE3NDNE
MDAwLCAwMEE0IChyMiAgICBBTUQgQW1kVGFibGUgICAgICAgIDEgQU1EICAgICAgICAgMSkNCihY
RU4pIEFDUEk6IFdQQlQgQTY4NEUwMDAsIDAwMzYgKHIxICAgIEFNRCAgICBBIE0gSSAgICAgICAg
MSBNU0ZUICAgIDEwMDEzKQ0KKFhFTikgQUNQSTogQkdSVCBBNzQ0OTAwMCwgMDAzOCAocjEgQU1E
ICAgICAgQSBNIEkgICAgICAgICAxIEFNSSAgICAgMTAwMTMpDQooWEVOKSBBQ1BJOiBJVlJTIEE2
ODREMDAwLCAwMUU4IChyMiAgQU1EICAgQW1kVGFibGUgICAgICAgIDEgQU1EICAgICAgICAgMSkN
CihYRU4pIEFDUEk6IFNTRFQgQTY4NEMwMDAsIDA2RDQgKHIyICAgIEFNRCAgQ1BNV0xSQyAgICAg
ICAgMSBJTlRMIDIwMjMwMzMxKQ0KKFhFTikgQUNQSTogU1NEVCBBNjg0MjAwMCwgOTgyRiAocjIg
ICAgQU1EICAgQ1BNQ01OICAgICAgICAxIElOVEwgMjAyMzAzMzEpDQooWEVOKSBBQ1BJOiBXU01U
IEE2ODQxMDAwLCAwMDI4IChyMSBBTUQgICAgICBBIE0gSSAgICAgICAgIDEgQU1JICAgICAxMDAx
MykNCihYRU4pIEFDUEk6IEFQSUMgQTY4M0YwMDAsIDEwODggKHI2IEFNRCAgICAgIEEgTSBJICAg
ICAgICAgMSBBTUkgICAgIDEwMDEzKQ0KKFhFTikgQUNQSTogU1NEVCBBNjgzQzAwMCwgMjM4NyAo
cjIgICAgQU1EIEFPRCAgICAgICAgICAgICAxIElOVEwgMjAyMzAzMzEpDQooWEVOKSBBQ1BJOiBT
U0RUIEE2ODNCMDAwLCAwNTAwIChyMiAgICBBTUQgTUVNVE9PTDAgICAgICAgIDIgSU5UTCAyMDIz
MDMzMSkNCihYRU4pIEFDUEk6IFNTRFQgQTY4M0EwMDAsIDA5NkEgKHIyICAgIEFNRCBDUE1NU09T
QyAgICAgICAgMSBJTlRMIDIwMjMwMzMxKQ0KKFhFTikgQUNQSTogU1NEVCBBNjgzOTAwMCwgMEI3
MiAocjIgICAgQU1EIENQTUFDUFY2ICAgICAgICAxIElOVEwgMjAyMzAzMzEpDQooWEVOKSBBQ1BJ
OiBTU0RUIEE2ODM4MDAwLCAwNDRFIChyMiAgICBBTUQgQW1kVGFibGUgICAgICAgIDEgSU5UTCAy
MDIzMDMzMSkNCihYRU4pIEFDUEk6IEVSU1QgQTY4MzcwMDAsIDAyMzAgKHIxICBBTUlFUiBBTUku
RVJTVCAgICAgICAgMCBBTUkuICAgICAgICAwKQ0KKFhFTikgQUNQSTogSEVTVCBBNjgwNjAwMCwg
MzBBMTQgKHIxIEFNRCAgICBBTUQgSEVTVCAgICAgICAgMSBBTUQgICAgICAgICAxKQ0KKFhFTikg
U3lzdGVtIFJBTTogMjYxNjI4TUIgKDI2NzkwNzk1NmtCKQ0KKFhFTikgTm8gTlVNQSBjb25maWd1
cmF0aW9uIGZvdW5kDQooWEVOKSBGYWtpbmcgYSBub2RlIGF0IDAwMDAwMDAwMDAwMDAwMDAtMDAw
MDAwNDAzZGJjMDAwMA0KKFhFTikgRG9tYWluIGhlYXAgaW5pdGlhbGlzZWQNCihYRU4pIHZlc2Fm
YjogZnJhbWVidWZmZXIgYXQgMHgwMDAwMDRkODAwMDAwMDAwLCBtYXBwZWQgdG8gMHhmZmZmODJj
MDAwMjAxMDAwLCB1c2luZyAxNDQwMGssIHRvdGFsIDE0NDAwaw0KKFhFTikgdmVzYWZiOiBtb2Rl
IGlzIDI1NgooWEVOKSBFTEY6IHBoZHI6IHBhZGRyPTB4MjAwMDAwIG1lbXN6PTB4MThkNjNmNA0K
KFhFTikgRUxGOiBwaGRyOiBwYWRkcj0weDFjMDAwMDAgbWVtc3o9MHg2M2EwMDANCihYRU4pIEVM
RjogcGhkcjogcGFkZHI9MHgyMjNhMDAwIG1lbXN6PTB4MzQwMDANCihYRU4pIEVMRjogcGhkcjog
cGFkZHI9MHgyMjZlMDAwIG1lbXN6PTB4MTk5MjAwMA0KKFhFTikgRUxGOiBtZW1vcnk6IDB4MjAw
MDAwIC0+IDB4M2MwMDAwMA0KKFhFTikgRUxGOiBub3RlOiBHVUVTVF9PUyA9ICJsaW51eCINCihY
RU4pIEVMRjogbm90ZTogR1VFU1RfVkVSU0lPTiA9ICIyLjYiDQooWEVOKSBFTEY6IG5vdGU6IFhF
Tl9WRVJTSU9OID0gInhlbi0zLjAiDQooWEVOKSBFTEY6IG5vdGU6IFZJUlRfQkFTRSA9IDB4ZmZm
ZmZmZmY4MDAwMDAwMA0KKFhFTikgRUxGOiBub3RlOiBJTklUX1AyTSA9IDB4ODAwMDAwMDAwMA0K
KFhFTikgRUxGOiBub3RlOiBFTlRSWSA9IDB4ZmZmZmZmZmY4MjI2ZTFjMA0KKFhFTikgRUxGOiBu
b3RlOiBIWVBFUkNBTExfUEFHRSA9IDB4ZmZmZmZmZmY4MGMxZjAwMA0KKFhFTikgRUxGOiBub3Rl
OiBGRUFUVVJFUyA9ICIhd3JpdGFibGVfcGFnZV90YWJsZXN8cGFlX3BnZGlyX2Fib3ZlXzRnYiIN
CihYRU4pIEVMRjogbm90ZTogU1VQUE9SVEVEX0ZFQVRVUkVTID0gMHg4ODAxDQooWEVOKSBFTEY6
IG5vdGU6IFBBRV9NT0RFID0gInllcyINCihYRU4pIEVMRjogbm90ZTogTE9BREVSID0gImdlbmVy
aWMiDQooWEVOKSBFTEY6IG5vdGU6IEwxX01GTl9WQUxJRCA9IDANCihYRU4pIEVMRjogbm90ZTog
U1VTUEVORF9DQU5DRUwgPSAweDENCihYRU4pIEVMRjogbm90ZTogTU9EX1NUQVJUX1BGTiA9IDB4
MQ0KKFhFTikgRUxGOiBub3RlOiBIVl9TVEFSVF9MT1cgPSAweGZmZmY4MDAwMDAwMDAwMDANCihY
RU4pIEVMRjogbm90ZTogUEFERFJfT0ZGU0VUID0gMA0KKFhFTikgRUxGOiBub3RlOiBQSFlTMzJf
RU5UUlkgPSAweDIwMDg0MA0KKFhFTikgRUxGOiBGb3VuZCBQVkggaW1hZ2UNCihYRU4pIEVMRjog
YWRkcmVzc2VzOg0KKFhFTikgICAgIHZpcnRfYmFzZSAgICAgICAgPSAweDANCihYRU4pICAgICBl
bGZfcGFkZHJfb2Zmc2V0ID0gMHgwDQooWEVOKSAgICAgdmlydF9vZmZzZXQgICAgICA9IDB4MA0K
KFhFTikgICAgIHZpcnRfa3N0YXJ0ICAgICAgPSAweDIwMDAwMA0KKFhFTikgICAgIHZpcnRfa2Vu
ZCAgICAgICAgPSAweDNjMDAwMDANCihYRU4pICAgICB2aXJ0X2VudHJ5ICAgICAgID0gMHgyMDA4
NDANCihYRU4pICAgICBwMm1fYmFzZSAgICAgICAgID0gMHg4MDAwMDAwMDAwDQooWEVOKSBFTEY6
IHBoZHIgMCBhdCAweDIwMDAwMCAtPiAweDFhZDYzZjQNCihYRU4pIEVMRjogcGhkciAxIGF0IDB4
MWMwMDAwMCAtPiAweDIyM2EwMDANCihYRU4pIEVMRjogcGhkciAyIGF0IDB4MjIzYTAwMCAtPiAw
eDIyNmUwMDANCihYRU4pIEVMRjogcGhkciAzIGF0IDB4MjI2ZTAwMCAtPiAweDNjMDAwMDANCihY
RU4pIFdBUk5JTkc6IFBWSCBpcyBhbiBleHBlcmltZW50YWwgbW9kZSB3aXRoIGxpbWl0ZWQgZnVu
Y3Rpb25hbGl0eQ0KKFhFTikgSW5pdGlhbCBsb3cgbWVtb3J5IHZpcnEgdGhyZXNob2xkIHNldCBh
dCAweDQwMDAgcGFnZXMuDQooWEVOKSBTY3J1YmJpbmcgRnJlZSBSQU0gaW4gYmFja2dyb3VuZA0K
KFhFTikgU3RkLiBMb2dsZXZlbDogQWxsDQooWEVOKSBHdWVzdCBMb2dsZXZlbDogQWxsDQooWEVO
KSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCihY
RU4pIFdBUk5JTkc6IENPTlNPTEUgT1VUUFVUIElTIFNZTkNIUk9OT1VTDQooWEVOKSBUaGlzIG9w
dGlvbiBpcyBpbnRlbmRlZCB0byBhaWQgZGVidWdnaW5nIG9mIFhlbiBieSBlbnN1cmluZw0KKFhF
TikgdGhhdCBhbGwgb3V0cHV0IGlzIHN5bmNocm9ub3VzbHkgZGVsaXZlcmVkIG9uIHRoZSBzZXJp
YWwgbGluZS4NCihYRU4pIEhvd2V2ZXIgaXQgY2FuIGludHJvZHVjZSBTSUdOSUZJQ0FOVCBsYXRl
bmNpZXMgYW5kIGFmZmVjdA0KKFhFTikgdGltZWtlZXBpbmcuIEl0IGlzIE5PVCByZWNvbW1lbmRl
ZCBmb3IgcHJvZHVjdGlvbiB1c2UhDQooWEVOKSAqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioNCihYRU4pIDMuLi4gMi4uLiAxLi4uIA0KKFhFTikgWGVu
IGlzIHJlbGlucXVpc2hpbmcgVkdBIGNvbnNvbGUuDQooWEVOKSAqKiogU2VyaWFsIGlucHV0IHRv
IERPTTAgKHR5cGUgJ0NUUkwtYScgdGhyZWUgdGltZXMgdG8gc3dpdGNoIGlucHV0KQ0KKFhFTikg
RnJlZWQgNjYwa0IgaW5pdCBtZW1vcnkNClsgICAgMC4wMDAwMDBdIExpbnV4IHZlcnNpb24gNi4x
LjY5IChyb290QHBvbGx1eCkgKGdjYyAoRGViaWFuIDEyLjIuMC0xNCkgMTIuMi4wLCBHTlUgbGQg
KEdOVSBCaW51dGlscyBmb3IgRGViaWFuKSAyLjQwKSAjMTAgU01QIFBSRUVNUFRfRFlOQU1JQyBX
ZWQgSmFuIDE3IDIzOjQ0OjMxIEVTVCAyMDI0DQpbICAgIDAuMDAwMDAwXSBDb21tYW5kIGxpbmU6
IHBsYWNlaG9sZGVyIHJvb3Q9VVVJRD05MjJiMTBmMi1hODI2LTQ3ZmItYWIzOC04MzZmOWIzOTdm
Zjcgcm8gcm9vdGZsYWdzPXN1YnZvbD1Acm9vdGZzIGVhcmx5cHJpbnRrPXhlbiBjb25zb2xlPWh2
YzANClsgICAgMC4wMDAwMDBdIFtGaXJtd2FyZSBCdWddOiBUU0MgZG9lc24ndCBjb3VudCB3aXRo
IFAwIGZyZXF1ZW5jeSENClsgICAgMC4wMDAwMDBdIEJJT1MtcHJvdmlkZWQgcGh5c2ljYWwgUkFN
IG1hcDoNClsgICAgMC4wMDAwMDBdIEJJT1MtZTgyMDogW21lbSAweDAwMDAwMDAwMDAwMDAwMDAt
MHgwMDAwMDAwMDAwMDlmZmZmXSB1c2FibGUNClsgICAgMC4wMDAwMDBdIEJJT1MtZTgyMDogW21l
bSAweDAwMDAwMDAwMDAwYTAwMDAtMHgwMDAwMDAwMDAwMGZmZmZmXSByZXNlcnZlZA0KWyAgICAw
LjAwMDAwMF0gQklPUy1lODIwOiBbbWVtIDB4MDAwMDAwMDAwMDEwMDAwMC0weDAwMDAwMDAwMDNm
ZmZmZmZdIHVzYWJsZQ0KWyAgICAwLjAwMDAwMF0gQklPUy1lODIwOiBbbWVtIDB4MDAwMDAwMDAw
NDAwMDAwMC0weDAwMDAwMDAwMDQwNDVmZmZdIEFDUEkgTlZTDQpbICAgIDAuMDAwMDAwXSBCSU9T
LWU4MjA6IFttZW0gMHgwMDAwMDAwMDA0MDQ2MDAwLTB4MDAwMDAwMDAwOWFmZWZmZl0gdXNhYmxl
DQpbICAgIDAuMDAwMDAwXSBCSU9TLWU4MjA6IFttZW0gMHgwMDAwMDAwMDA5YWZmMDAwLTB4MDAw
MDAwMDAwOWZmZmZmZl0gcmVzZXJ2ZWQNClsgICAgMC4wMDAwMDBdIEJJT1MtZTgyMDogW21lbSAw
eDAwMDAwMDAwMGEwMDAwMDAtMHgwMDAwMDAwMDBhZmZmZmZmXSB1c2FibGUNClsgICAgMC4wMDAw
MDBdIEJJT1MtZTgyMDogW21lbSAweDAwMDAwMDAwMGIwMDAwMDAtMHgwMDAwMDAwMDBiMDIwZmZm
XSByZXNlcnZlZA0KWyAgICAwLjAwMDAwMF0gQklPUy1lODIwOiBbbWVtIDB4MDAwMDAwMDAwYjAy
MTAwMC0weDAwMDAwMDAwYTA0ZThmZmZdIHVzYWJsZQ0KWyAgICAwLjAwMDAwMF0gQklPUy1lODIw
OiBbbWVtIDB4MDAwMDAwMDBhMDRlOTAwMC0weDAwMDAwMDAwYTY0ZThmZmZdIHJlc2VydmVkDQpb
ICAgIDAuMDAwMDAwXSBCSU9TLWU4MjA6IFttZW0gMHgwMDAwMDAwMGE2NGU5MDAwLTB4MDAwMDAw
MDBhNzQ3ZWZmZl0gQUNQSSBkYXRhDQpbICAgIDAuMDAwMDAwXSBCSU9TLWU4MjA6IFttZW0gMHgw
MDAwMDAwMGE3NDdmMDAwLTB4MDAwMDAwMDBhOTQ3ZWZmZl0gQUNQSSBOVlMNClsgICAgMC4wMDAw
MDBdIEJJT1MtZTgyMDogW21lbSAweDAwMDAwMDAwYTk0N2YwMDAtMHgwMDAwMDAwMGFkZGZlZmZm
XSByZXNlcnZlZA0KWyAgICAwLjAwMDAwMF0gQklPUy1lODIwOiBbbWVtIDB4MDAwMDAwMDBhZGRm
ZjAwMC0weDAwMDAwMDAwYWZmZmFiOTNdIHVzYWJsZQ0KWyAgICAwLjAwMDAwMF0gQklPUy1lODIw
OiBbbWVtIDB4MDAwMDAwMDBhZmZmYWI5NC0weDAwMDAwMDAwYWZmZmFmMGZdIEFDUEkgZGF0YQ0K
WyAgICAwLjAwMDAwMF0gQklPUy1lODIwOiBbbWVtIDB4MDAwMDAwMDBhZmZmYjAwMC0weDAwMDAw
MDAwYmZmZmZmZmZdIHJlc2VydmVkDQpbICAgIDAuMDAwMDAwXSBCSU9TLWU4MjA6IFttZW0gMHgw
MDAwMDAwMGRmMjAwMDAwLTB4MDAwMDAwMDBkZjJmZmZmZl0gcmVzZXJ2ZWQNClsgICAgMC4wMDAw
MDBdIEJJT1MtZTgyMDogW21lbSAweDAwMDAwMDAwZTAwMDAwMDAtMHgwMDAwMDAwMGVmZmZmZmZm
XSByZXNlcnZlZA0KWyAgICAwLjAwMDAwMF0gQklPUy1lODIwOiBbbWVtIDB4MDAwMDAwMDBmZWEw
MDAwMC0weDAwMDAwMDAwZmVhZmZmZmZdIHJlc2VydmVkDQpbICAgIDAuMDAwMDAwXSBCSU9TLWU4
MjA6IFttZW0gMHgwMDAwMDAwMGZlYzAwMDAwLTB4MDAwMDAwMDBmZWMwMGZmZl0gcmVzZXJ2ZWQN
ClsgICAgMC4wMDAwMDBdIEJJT1MtZTgyMDogW21lbSAweDAwMDAwMDAwZmVjMTAwMDAtMHgwMDAw
MDAwMGZlYzEwZmZmXSByZXNlcnZlZA0KWyAgICAwLjAwMDAwMF0gQklPUy1lODIwOiBbbWVtIDB4
MDAwMDAwMDBmZWMzMDAwMC0weDAwMDAwMDAwZmVjMzBmZmZdIHJlc2VydmVkDQpbICAgIDAuMDAw
MDAwXSBCSU9TLWU4MjA6IFttZW0gMHgwMDAwMDAwMGZlZDAwMDAwLTB4MDAwMDAwMDBmZWQwMGZm
Zl0gcmVzZXJ2ZWQNClsgICAgMC4wMDAwMDBdIEJJT1MtZTgyMDogW21lbSAweDAwMDAwMDAwZmVk
NDAwMDAtMHgwMDAwMDAwMGZlZDQ0ZmZmXSByZXNlcnZlZA0KWyAgICAwLjAwMDAwMF0gQklPUy1l
ODIwOiBbbWVtIDB4MDAwMDAwMDBmZWQ4MDAwMC0weDAwMDAwMDAwZmVkOGZmZmZdIHJlc2VydmVk
DQpbICAgIDAuMDAwMDAwXSBCSU9TLWU4MjA6IFttZW0gMHgwMDAwMDAwMGZmMDAwMDAwLTB4MDAw
MDAwMDBmZmZmZmZmZl0gcmVzZXJ2ZWQNClsgICAgMC4wMDAwMDBdIEJJT1MtZTgyMDogW21lbSAw
eDAwMDAwMDAxMDAwMDAwMDAtMHgwMDAwMDAwMjVkZWUyZmZmXSB1c2FibGUNClsgICAgMC4wMDAw
MDBdIEJJT1MtZTgyMDogW21lbSAweDAwMDAwMDAyNWRlZTMwMDAtMHgwMDAwMDA0MDNkYmJmZmZm
XSB1bnVzYWJsZQ0KWyAgICAwLjAwMDAwMF0gQklPUy1lODIwOiBbbWVtIDB4MDAwMDAwNDAzZGJj
MDAwMC0weDAwMDAwMDQwM2ZmZmZmZmZdIHJlc2VydmVkDQpbICAgIDAuMDAwMDAwXSBwcmludGs6
IGJvb3Rjb25zb2xlIFt4ZW5ib290MF0gZW5hYmxlZA0KWyAgICAwLjAwMDAwMF0gTlggKEV4ZWN1
dGUgRGlzYWJsZSkgcHJvdGVjdGlvbjogYWN0aXZlDQpbICAgIDAuMDAwMDAwXSBlZmk6IEVGSSB2
Mi45MCBieSBBbWVyaWNhbiBNZWdhdHJlbmRzDQpbICAgIDAuMDAwMDAwXSBlZmk6IEFDUEk9MHhh
OTQ2MzAwMCBBQ1BJIDIuMD0weGE5NDYzMDE0IFNNQklPUz0weGFkOWY0MDAwIFNNQklPUyAzLjA9
MHhhZDlmMzAwMCBNRU1BVFRSPTB4OWIyMWM1MTggRVNSVD0weGE3NDY2MDE4IE1PS3Zhcj0weGFk
Yjc4MDAwIA0KWyAgICAwLjAwMDAwMF0gc2VjdXJlYm9vdDogU2VjdXJlIGJvb3QgZGlzYWJsZWQN
ClsgICAgMC4wMDAwMDBdIFNNQklPUyAzLjYuMCBwcmVzZW50Lg0KWyAgICAwLjAwMDAwMF0gRE1J
OiBUbyBCZSBGaWxsZWQgQnkgTy5FLk0uIFRSWDUwIFdTL1RSWDUwIFdTLCBCSU9TIDcuMDggMDEv
MTYvMjAyNA0KWyAgICAwLjAwMDAwMF0gSHlwZXJ2aXNvciBkZXRlY3RlZDogWGVuIEhWTQ0KWyAg
ICAwLjAwMDAwMF0gWGVuIHZlcnNpb24gNC4xOC4NClsgICAgMC4wNDExMDFdIHRzYzogRmFzdCBU
U0MgY2FsaWJyYXRpb24gZmFpbGVkDQpbICAgIDAuMDQ1OTQwXSB0c2M6IERldGVjdGVkIDQxOTku
ODM2IE1IeiBwcm9jZXNzb3INClsgICAgMC4wNTEzNzhdIGxhc3RfcGZuID0gMHgyNWRlZTMgbWF4
X2FyY2hfcGZuID0gMHg0MDAwMDAwMDANClsgICAgMC4wNTkwNDldIHg4Ni9QQVQ6IENvbmZpZ3Vy
YXRpb24gWzAtN106IFdCICBXQyAgVUMtIFVDICBXQiAgV1AgIFVDLSBXVCAgDQpbICAgIDAuMDY3
MzY1XSBDUFUgTVRSUnMgYWxsIGJsYW5rIC0gdmlydHVhbGl6ZWQgc3lzdGVtLg0KWyAgICAwLjA3
MzE5MV0gbGFzdF9wZm4gPSAweGFmZmZhIG1heF9hcmNoX3BmbiA9IDB4NDAwMDAwMDAwDQpbICAg
IDAuMDgyNjA5XSBVc2luZyBHQiBwYWdlcyBmb3IgZGlyZWN0IG1hcHBpbmcNClsgICAgMC4wODgy
NDhdIFJBTURJU0s6IFttZW0gMHgwNDA0NjAwMC0weDA2OGNkZmZmXQ0KWyAgICAwLjA5MzUxM10g
QUNQSTogRWFybHkgdGFibGUgY2hlY2tzdW0gdmVyaWZpY2F0aW9uIGRpc2FibGVkDQpbICAgIDAu
MDk5OTcxXSBBQ1BJOiBSU0RQIDB4MDAwMDAwMDBBRkZGQUI5NCAwMDAwMjQgKHYwMiBBTUQgICAp
DQpbICAgIDAuMTA2NDc1XSBBQ1BJOiBYU0RUIDB4MDAwMDAwMDBBRkZGQUJCOCAwMDAwQ0MgKHYw
MSBBTUQgICAgQSBNIEkgICAgMDAwMDAwMDEgQU1JICAwMTAwMDAxMykNClsgICAgMC4xMTYzNDFd
IEFDUEk6IEFQSUMgMHgwMDAwMDAwMEFGRkZBQzg0IDAwMDM3QyAodjA0IEFNRCAgICBBIE0gSSAg
ICAwMDAwMDAwMSBBTUkgIDAwMDEwMDEzKQ0KWyAgICAwLjEyNjI1N10gQUNQSTogRkFDUCAweDAw
MDAwMDAwQTc0N0MwMDAgMDAwMTE0ICh2MDYgQU1EICAgIEEgTSBJICAgIDAwMDAwMDAxIEFNSSAg
MDAwMTAwMTMpDQpbICAgIDAuMTM2MDkzXSBBQ1BJOiBEU0RUIDB4MDAwMDAwMDBBNzQ2RTAwMCAw
MEQyRjYgKHYwMiBBTUQgICAgQSBNIEkgICAgMDAwMDAwMDEgSU5UTCAyMDIzMDMzMSkNClsgICAg
MC4xNDU4NjRdIEFDUEk6IEZBQ1MgMHgwMDAwMDAwMEE5NDVBMDAwIDAwMDA0MA0KWyAgICAwLjE1
MTI1MF0gQUNQSTogU1NEVCAweDAwMDAwMDAwQTc0N0UwMDAgMDAwOUNDICh2MDIgQU1EICAgIEJP
VUxERVJHIDAwMDAwMDAyIE1TRlQgMDQwMDAwMDApDQpbICAgIDAuMTYxMTE5XSBBQ1BJOiBTU0RU
IDB4MDAwMDAwMDBBNzQ3RDAwMCAwMDAwNjcgKHYwMiBBTUQgICAgQ1BNRFNNICAgMDAwMDAwMDEg
SU5UTCAyMDIzMDMzMSkNClsgICAgMC4xNzA4NzddIEFDUEk6IE1DRkcgMHgwMDAwMDAwMEE3NDZD
MDAwIDAwMDAzQyAodjAxIEFNRCAgICBBIE0gSSAgICAwMDAwMDAwMSBNU0ZUIDAwMDEwMDEzKQ0K
WyAgICAwLjE4MDY4OV0gQUNQSTogU1NEVCAweDAwMDAwMDAwQTc0NkIwMDAgMDAwNUM1ICh2MDIg
QU1EICAgIENQVVNTRFQgIDAwMDAwMDAxIEFNSSAgMDAwMDAwMDEpDQpbICAgIDAuMTkwNTk3XSBB
Q1BJOiBTU0RUIDB4MDAwMDAwMDBBNzQ2ODAwMCAwMDFCNTMgKHYwMiBBTUQgICAgQ1BNUkFTICAg
MDAwMDAwMDEgSU5UTCAyMDIzMDMzMSkNClsgICAgMC4yMDAwNjZdIEFDUEk6IEZQRFQgMHgwMDAw
MDAwMEE3NDY1MDAwIDAwMDA0NCAodjAxIEFNRCAgICBBIE0gSSAgICAwMTA3MjAwOSBBTUkgIDAx
MDAwMDEzKQ0KWyAgICAwLjIwOTYzNl0gQUNQSTogU1NEVCAweDAwMDAwMDAwQTc0NjIwMDAgMDAy
NDQ4ICh2MDIgQU1EICAgIEdQUF9QTUVfIDAwMDAwMDAxIElOVEwgMjAyMzAzMzEpDQpbICAgIDAu
MjE5MTM3XSBBQ1BJOiBTU0RUIDB4MDAwMDAwMDBBNzQ1RjAwMCAwMDI0NDggKHYwMiBBTUQgICAg
R1BQX1BNRV8gMDAwMDAwMDEgSU5UTCAyMDIzMDMzMSkNClsgICAgMC4yMjg2MjVdIEFDUEk6IFNT
RFQgMHgwMDAwMDAwMEE3NDVDMDAwIDAwMjQ0OCAodjAyIEFNRCAgICBHUFBfUE1FXyAwMDAwMDAw
MSBJTlRMIDIwMjMwMzMxKQ0KWyAgICAwLjIzODEyMV0gQUNQSTogU1NEVCAweDAwMDAwMDAwQTc0
NTkwMDAgMDAyNDQ4ICh2MDIgQU1EICAgIEdQUF9QTUVfIDAwMDAwMDAxIElOVEwgMjAyMzAzMzEp
DQpbICAgIDAuMjQ3NTk2XSBBQ1BJOiBWRkNUIDB4MDAwMDAwMDBBNzQ0QTAwMCAwMEU2ODQgKHYw
MSBBTUQgICAgQSBNIEkgICAgMDAwMDAwMDEgQU1EICAzMTUwNEY0NykNClsgICAgMC4yNTcwNzVd
IEFDUEk6IFNTRFQgMHgwMDAwMDAwMEE3NDNFMDAwIDAwQTQwRSAodjAyIEFNRCAgICBBTUQgQ1BV
ICAwMDAwMDAwMSBBTUQgIDAwMDAwMDAxKQ0KWyAgICAwLjI2NjYyOV0gQUNQSTogU1NEVCAweDAw
MDAwMDAwQTY4NEMwMDAgMDAwNkQ0ICh2MDIgQU1EICAgIENQTVdMUkMgIDAwMDAwMDAxIElOVEwg
MjAyMzAzMzEpDQpbICAgIDAuMjc2MTI5XSBBQ1BJOiBTU0RUIDB4MDAwMDAwMDBBNjg0MjAwMCAw
MDk4MkYgKHYwMiBBTUQgICAgQ1BNQ01OICAgMDAwMDAwMDEgSU5UTCAyMDIzMDMzMSkNClsgICAg
MC4yODU1NzVdIEFDUEk6IFNTRFQgMHgwMDAwMDAwMEE2ODNDMDAwIDAwMjM4NyAodjAyIEFNRCAg
ICBBT0QgICAgICAwMDAwMDAwMSBJTlRMIDIwMjMwMzMxKQ0KWyAgICAwLjI5NTAwM10gQUNQSTog
U1NEVCAweDAwMDAwMDAwQTY4M0IwMDAgMDAwNTAwICh2MDIgQU1EICAgIE1FTVRPT0wwIDAwMDAw
MDAyIElOVEwgMjAyMzAzMzEpDQpbICAgIDAuMzA0ODkyXSBBQ1BJOiBTU0RUIDB4MDAwMDAwMDBB
NjgzQTAwMCAwMDA5NkEgKHYwMiBBTUQgICAgQ1BNTVNPU0MgMDAwMDAwMDEgSU5UTCAyMDIzMDMz
MSkNClsgICAgMC4zMTQ4MzBdIEFDUEk6IFNTRFQgMHgwMDAwMDAwMEE2ODM5MDAwIDAwMEI3MiAo
djAyIEFNRCAgICBDUE1BQ1BWNiAwMDAwMDAwMSBJTlRMIDIwMjMwMzMxKQ0KWyAgICAwLjMyNDQ4
M10gQUNQSTogU1NEVCAweDAwMDAwMDAwQTY4MzgwMDAgMDAwNDRFICh2MDIgQU1EICAgIEFtZFRh
YmxlIDAwMDAwMDAxIElOVEwgMjAyMzAzMzEpDQpbICAgIDAuMzM0Mjc2XSBBQ1BJOiBSZXNlcnZp
bmcgQVBJQyB0YWJsZSBtZW1vcnkgYXQgW21lbSAweGFmZmZhYzg0LTB4YWZmZmFmZmZdDQpbICAg
IDAuMzQyMjcxXSBBQ1BJOiBSZXNlcnZpbmcgRkFDUCB0YWJsZSBtZW1vcnkgYXQgW21lbSAweGE3
NDdjMDAwLTB4YTc0N2MxMTNdDQpbICAgIDAuMzUwNDgwXSBBQ1BJOiBSZXNlcnZpbmcgRFNEVCB0
YWJsZSBtZW1vcnkgYXQgW21lbSAweGE3NDZlMDAwLTB4YTc0N2IyZjVdDQpbICAgIDAuMzU4NjA1
XSBBQ1BJOiBSZXNlcnZpbmcgRkFDUyB0YWJsZSBtZW1vcnkgYXQgW21lbSAweGE5NDVhMDAwLTB4
YTk0NWEwM2ZdDQpbICAgIDAuMzY2ODMyXSBBQ1BJOiBSZXNlcnZpbmcgU1NEVCB0YWJsZSBtZW1v
cnkgYXQgW21lbSAweGE3NDdlMDAwLTB4YTc0N2U5Y2JdDQpbICAgIDAuMzc1MDA4XSBBQ1BJOiBS
ZXNlcnZpbmcgU1NEVCB0YWJsZSBtZW1vcnkgYXQgW21lbSAweGE3NDdkMDAwLTB4YTc0N2QwNjZd
DQpbICAgIDAuMzgzMjE0XSBBQ1BJOiBSZXNlcnZpbmcgTUNGRyB0YWJsZSBtZW1vcnkgYXQgW21l
bSAweGE3NDZjMDAwLTB4YTc0NmMwM2JdDQpbICAgIDAuMzkxNDY3XSBBQ1BJOiBSZXNlcnZpbmcg
U1NEVCB0YWJsZSBtZW1vcnkgYXQgW21lbSAweGE3NDZiMDAwLTB4YTc0NmI1YzRdDQpbICAgIDAu
Mzk5Njc0XSBBQ1BJOiBSZXNlcnZpbmcgU1NEVCB0YWJsZSBtZW1vcnkgYXQgW21lbSAweGE3NDY4
MDAwLTB4YTc0NjliNTJdDQpbICAgIDAuNDA3NzM3XSBBQ1BJOiBSZXNlcnZpbmcgRlBEVCB0YWJs
ZSBtZW1vcnkgYXQgW21lbSAweGE3NDY1MDAwLTB4YTc0NjUwNDNdDQpbICAgIDAuNDE1OTQ4XSBB
Q1BJOiBSZXNlcnZpbmcgU1NEVCB0YWJsZSBtZW1vcnkgYXQgW21lbSAweGE3NDYyMDAwLTB4YTc0
NjQ0NDddDQpbICAgIDAuNDI0MDcyXSBBQ1BJOiBSZXNlcnZpbmcgU1NEVCB0YWJsZSBtZW1vcnkg
YXQgW21lbSAweGE3NDVmMDAwLTB4YTc0NjE0NDddDQpbICAgIDAuNDMyMzEwXSBBQ1BJOiBSZXNl
cnZpbmcgU1NEVCB0YWJsZSBtZW1vcnkgYXQgW21lbSAweGE3NDVjMDAwLTB4YTc0NWU0NDddDQpb
ICAgIDAuNDQwMTM3XSBBQ1BJOiBSZXNlcnZpbmcgU1NEVCB0YWJsZSBtZW1vcnkgYXQgW21lbSAw
eGE3NDU5MDAwLTB4YTc0NWI0NDddDQpbICAgIDAuNDQ3OTczXSBBQ1BJOiBSZXNlcnZpbmcgVkZD
VCB0YWJsZSBtZW1vcnkgYXQgW21lbSAweGE3NDRhMDAwLTB4YTc0NTg2ODNdDQpbICAgIDAuNDU1
ODIzXSBBQ1BJOiBSZXNlcnZpbmcgU1NEVCB0YWJsZSBtZW1vcnkgYXQgW21lbSAweGE3NDNlMDAw
LTB4YTc0NDg0MGRdDQpbICAgIDAuNDYzNjE3XSBBQ1BJOiBSZXNlcnZpbmcgU1NEVCB0YWJsZSBt
ZW1vcnkgYXQgW21lbSAweGE2ODRjMDAwLTB4YTY4NGM2ZDNdDQpbICAgIDAuNDcxNTIwXSBBQ1BJ
OiBSZXNlcnZpbmcgU1NEVCB0YWJsZSBtZW1vcnkgYXQgW21lbSAweGE2ODQyMDAwLTB4YTY4NGI4
MmVdDQpbICAgIDAuNDc5MzUwXSBBQ1BJOiBSZXNlcnZpbmcgU1NEVCB0YWJsZSBtZW1vcnkgYXQg
W21lbSAweGE2ODNjMDAwLTB4YTY4M2UzODZdDQpbICAgIDAuNDg3MTk3XSBBQ1BJOiBSZXNlcnZp
bmcgU1NEVCB0YWJsZSBtZW1vcnkgYXQgW21lbSAweGE2ODNiMDAwLTB4YTY4M2I0ZmZdDQpbICAg
IDAuNDk1MDcwXSBBQ1BJOiBSZXNlcnZpbmcgU1NEVCB0YWJsZSBtZW1vcnkgYXQgW21lbSAweGE2
ODNhMDAwLTB4YTY4M2E5NjldDQpbICAgIDAuNTAyOTA3XSBBQ1BJOiBSZXNlcnZpbmcgU1NEVCB0
YWJsZSBtZW1vcnkgYXQgW21lbSAweGE2ODM5MDAwLTB4YTY4MzliNzFdDQpbICAgIDAuNTEwNzQ5
XSBBQ1BJOiBSZXNlcnZpbmcgU1NEVCB0YWJsZSBtZW1vcnkgYXQgW21lbSAweGE2ODM4MDAwLTB4
YTY4Mzg0NGRdDQpbICAgIDAuNTE4Njk0XSBObyBOVU1BIGNvbmZpZ3VyYXRpb24gZm91bmQNClsg
ICAgMC41MjMwMTRdIEZha2luZyBhIG5vZGUgYXQgW21lbSAweDAwMDAwMDAwMDAwMDAwMDAtMHgw
MDAwMDAwMjVkZWUyZmZmXQ0KWyAgICAwLjUzMDc4Ml0gTk9ERV9EQVRBKDApIGFsbG9jYXRlZCBb
bWVtIDB4MjVkZWI4MDAwLTB4MjVkZWUyZmZmXQ0KWyAgICAwLjUzNzcwM10gWm9uZSByYW5nZXM6
DQpbICAgIDAuNTQwNDQzXSAgIERNQSAgICAgIFttZW0gMHgwMDAwMDAwMDAwMDAxMDAwLTB4MDAw
MDAwMDAwMGZmZmZmZl0NClsgICAgMC41NDc1NTBdICAgRE1BMzIgICAgW21lbSAweDAwMDAwMDAw
MDEwMDAwMDAtMHgwMDAwMDAwMGZmZmZmZmZmXQ0KWyAgICAwLjU1NDY0NV0gICBOb3JtYWwgICBb
bWVtIDB4MDAwMDAwMDEwMDAwMDAwMC0weDAwMDAwMDAyNWRlZTJmZmZdDQpbICAgIDAuNTYxNzMy
XSAgIERldmljZSAgIGVtcHR5DQpbICAgIDAuNTY1MDgwXSBNb3ZhYmxlIHpvbmUgc3RhcnQgZm9y
IGVhY2ggbm9kZQ0KWyAgICAwLjU3MDA2OV0gRWFybHkgbWVtb3J5IG5vZGUgcmFuZ2VzDQpbICAg
IDAuNTc0MjY1XSAgIG5vZGUgICAwOiBbbWVtIDB4MDAwMDAwMDAwMDAwMTAwMC0weDAwMDAwMDAw
MDAwOWZmZmZdDQpbICAgIDAuNTgxNDMxXSAgIG5vZGUgICAwOiBbbWVtIDB4MDAwMDAwMDAwMDEw
MDAwMC0weDAwMDAwMDAwMDNmZmZmZmZdDQpbICAgIDAuNTg4NzI0XSAgIG5vZGUgICAwOiBbbWVt
IDB4MDAwMDAwMDAwNDA0NjAwMC0weDAwMDAwMDAwMDlhZmVmZmZdDQpbICAgIDAuNTk1OTYwXSAg
IG5vZGUgICAwOiBbbWVtIDB4MDAwMDAwMDAwYTAwMDAwMC0weDAwMDAwMDAwMGFmZmZmZmZdDQpb
ICAgIDAuNjAzMjU4XSAgIG5vZGUgICAwOiBbbWVtIDB4MDAwMDAwMDAwYjAyMTAwMC0weDAwMDAw
MDAwYTA0ZThmZmZdDQpbICAgIDAuNjEwNTY3XSAgIG5vZGUgICAwOiBbbWVtIDB4MDAwMDAwMDBh
ZGRmZjAwMC0weDAwMDAwMDAwYWZmZjlmZmZdDQpbICAgIDAuNjE3ODUxXSAgIG5vZGUgICAwOiBb
bWVtIDB4MDAwMDAwMDEwMDAwMDAwMC0weDAwMDAwMDAyNWRlZTJmZmZdDQpbICAgIDAuNjI1MTUz
XSBJbml0bWVtIHNldHVwIG5vZGUgMCBbbWVtIDB4MDAwMDAwMDAwMDAwMTAwMC0weDAwMDAwMDAy
NWRlZTJmZmZdDQpbICAgIDAuNjMzMzE1XSBPbiBub2RlIDAsIHpvbmUgRE1BOiAxIHBhZ2VzIGlu
IHVuYXZhaWxhYmxlIHJhbmdlcw0KWyAgICAwLjYzMzMzMl0gT24gbm9kZSAwLCB6b25lIERNQTog
OTYgcGFnZXMgaW4gdW5hdmFpbGFibGUgcmFuZ2VzDQpbICAgIDAuNjQwMTc3XSBPbiBub2RlIDAs
IHpvbmUgRE1BMzI6IDcwIHBhZ2VzIGluIHVuYXZhaWxhYmxlIHJhbmdlcw0KWyAgICAwLjY0NzA3
MF0gT24gbm9kZSAwLCB6b25lIERNQTMyOiAxMjgxIHBhZ2VzIGluIHVuYXZhaWxhYmxlIHJhbmdl
cw0KWyAgICAwLjY1NjUwNF0gT24gbm9kZSAwLCB6b25lIERNQTMyOiAzMyBwYWdlcyBpbiB1bmF2
YWlsYWJsZSByYW5nZXMNClsgICAgMC42NjM5MzFdcGNpIDAwMDA6ODc6MDAuMDogcmVnIDB4MTg6
IFttZW0gMHhjYWIwMDAwMC0weGNhYjAwZmZmIDY0Yml0XQ0NClsgICAgMy4wNjEwMDFdIHBjaSAw
MDAwOjg3OjAwLjA6IHJlZyAweDIwOiBbbWVtIDB4MzE5YjMyMDAwMDAtMHgzMTliMzIwM2ZmZiA2
NGJpdCBwcmVmXQ0NClsgICAgMy4wNjUxNDddIHBjaSAwMDAwOjg3OjAwLjA6IHN1cHBvcnRzIEQx
IEQyDQ0KWyAgICAzLjA2ODk4MF0gcGNpIDAwMDA6ODc6MDAuMDogUE1FIyBzdXBwb3J0ZWQgZnJv
bSBEMCBEMSBEMiBEM2hvdCBEM2NvbGQNDQooWEVOKSBQQ0kgYWRkIGRldmljZSAwMDAwOjg3OjAw
LjANClsgICAgMy4wNzY2NjNdIHBjaSAwMDAwOjg1OjA3LjA6IFBDSSBicmlkZ2UgdG8gW2J1cyA4
N10NDQpbICAgIDMuMDc2OTg1XSBwY2kgMDAwMDo4NTowNy4wOiAgIGJyaWRnZSB3aW5kb3cgW2lv
ICAweDgwMDAtMHg4ZmZmXQ0NClsgICAgMy4wODA5ODJdIHBjaSAwMDAwOjg1OjA3LjA6ICAgYnJp
ZGdlIHdpbmRvdyBbbWVtIDB4Y2FiMDAwMDAtMHhjYWJmZmZmZl0NDQpbICAgIDMuMDg0OTg2XSBw
Y2kgMDAwMDo4NTowNy4wOiAgIGJyaWRnZSB3aW5kb3cgW21lbSAweDMxOWIzMjAwMDAwLTB4MzE5
YjMyZmZmZmYgNjRiaXQgcHJlZl0NDQpbICAgIDMuMDg5MDk4XSBwY2kgMDAwMDo4ODowMC4wOiBb
MTAyMjoxNGFjXSB0eXBlIDAwIGNsYXNzIDB4MTMwMDAwDQ0KWyAgICAzLjA5MzAzNF0gcGNpIDAw
MDA6ODg6MDAuMDogZW5hYmxpbmcgRXh0ZW5kZWQgVGFncw0NCihYRU4pIFBDSSBhZGQgZGV2aWNl
IDAwMDA6ODg6MDAuMA0KWyAgICAzLjEwMDcxOF0gcGNpIDAwMDA6ODA6MDcuMTogUENJIGJyaWRn
ZSB0byBbYnVzIDg4XQ0NClsgICAgMy4xMDE0MzZdIEFDUEk6IFBDSSBSb290IEJyaWRnZSBbUENJ
MF0gKGRvbWFpbiAwMDAwIFtidXMgMDAtM2ZdKQ0NClsgICAgMy4xMDQ5ODFdIGFjcGkgUE5QMEEw
ODowMjogX09TQzogT1Mgc3VwcG9ydHMgW0V4dGVuZGVkQ29uZmlnIEFTUE0gQ2xvY2tQTSBTZWdt
ZW50cyBNU0kgSFBYLVR5cGUzXQ0NClsgICAgMy4xMDkwODhdIGFjcGkgUE5QMEEwODowMjogX09T
QzogcGxhdGZvcm0gZG9lcyBub3Qgc3VwcG9ydCBbQUVSIExUUl0NDQpbICAgIDMuMTEzMTc3XSBh
Y3BpIFBOUDBBMDg6MDI6IF9PU0M6IE9TIG5vdyBjb250cm9scyBbUENJZUhvdHBsdWcgU0hQQ0hv
dHBsdWcgUE1FIFBDSWVDYXBhYmlsaXR5XQ0NClsgICAgMy4xMTczODhdIFBDSSBob3N0IGJyaWRn
ZSB0byBidXMgMDAwMDowMA0NClsgICAgMy4xMjA5NzldIHBjaV9idXMgMDAwMDowMDogcm9vdCBi
dXMgcmVzb3VyY2UgW2lvICAweDAwMDAtMHgwMmU3IHdpbmRvd10NDQpbICAgIDMuMTI0OTc5XSBw
Y2lfYnVzIDAwMDA6MDA6IHJvb3QgYnVzIHJlc291cmNlIFtpbyAgMHgwMzAwLTB4MDNhZiB3aW5k
b3ddDQ0KWyAgICAzLjEyODk4MV0gcGNpX2J1cyAwMDAwOjAwOiByb290IGJ1cyByZXNvdXJjZSBb
aW8gIDB4MDQwMC0weDBjZjcgd2luZG93XQ0NClsgICAgMy4xMzI5NzldIHBjaV9idXMgMDAwMDow
MDogcm9vdCBidXMgcmVzb3VyY2UgW2lvICAweDAzYjAtMHgwM2RmIHdpbmRvd10NDQpbICAgIDMu
MTM2OTc5XSBwY2lfYnVzIDAwMDA6MDA6IHJvb3QgYnVzIHJlc291cmNlIFtpbyAgMHgxMDAwLTB4
M2ZmZiB3aW5kb3ddDQ0KWyAgICAzLjE0MDk4MF0gcGNpX2J1cyAwMDAwOjAwOiByb290IGJ1cyBy
ZXNvdXJjZSBbbWVtIDB4MDAwYTAwMDAtMHgwMDBkZmZmZiB3aW5kb3ddDQ0KWyAgICAzLjE0NDk3
OV0gcGNpX2J1cyAwMDAwOjAwOiByb290IGJ1cyByZXNvdXJjZSBbbWVtIDB4ZjAwMDAwMDAtMHhm
MGZmZmZmZiB3aW5kb3ddDQ0KWyAgICAzLjE0ODk3OF0gcGNpX2J1cyAwMDAwOjAwOiByb290IGJ1
cyByZXNvdXJjZSBbbWVtIDB4NDgwMjA0MDAwMDAtMHg0ZDliMzNmZmZmZiB3aW5kb3ddDQ0KWyAg
ICAzLjE1Mjk3OV0gcGNpX2J1cyAwMDAwOjAwOiByb290IGJ1cyByZXNvdXJjZSBbYnVzIDAwLTNm
XQ0NClsgICAgMy4xNTcwMDFdIHBjaSAwMDAwOjAwOjAwLjA6IFsxMDIyOjE0YTRdIHR5cGUgMDAg
Y2xhc3MgMHgwNjAwMDANDQooWEVOKSBQQ0kgYWRkIGRldmljZSAwMDAwOjAwOjAwLjANClsgICAg
My4xNjQ1MjZdIHBjaSAwMDAwOjAwOjAwLjI6IFsxMDIyOjE0OWVdIHR5cGUgMDAgY2xhc3MgMHgw
ODA2MDANDQooWEVOKSBQQ0kgYWRkIGRldmljZSAwMDAwOjAwOjAwLjINClsgICAgMy4xNjg2MDJd
IHBjaSAwMDAwOjAwOjAwLjM6IFsxMDIyOjE0YTZdIHR5cGUgMDAgY2xhc3MgMHgwODA3MDANDQpb
ICAgIDMuMTY5MDUxXSBwY2kgMDAwMDowMDowMC4zOiBlbmFibGluZyBFeHRlbmRlZCBUYWdzDQ0K
KFhFTikgUENJIGFkZCBkZXZpY2UgMDAwMDowMDowMC4zDQpbICAgIDMuMTc2NzA0XSBwY2kgMDAw
MDowMDowMS4wOiBbMTAyMjoxNDlmXSB0eXBlIDAwIGNsYXNzIDB4MDYwMDAwDQ0KKFhFTikgUENJ
IGFkZCBkZXZpY2UgMDAwMDowMDowMS4wDQpbICAgIDMuMTgwNTk4XSBwY2kgMDAwMDowMDowMS4x
OiBbMTAyMjoxNGFiXSB0eXBlIDAxIGNsYXNzIDB4MDYwNDAwDQ0KWyAgICAzLjE4MTIzM10gcGNp
IDAwMDA6MDA6MDEuMTogUE1FIyBzdXBwb3J0ZWQgZnJvbSBEMCBEM2hvdCBEM2NvbGQNDQooWEVO
KSBQQ0kgYWRkIGRldmljZSAwMDAwOjAwOjAxLjENClsgICAgMy4xODg4NTVdIHBjaSAwMDAwOjAw
OjAyLjA6IFsxMDIyOjE0OWZdIHR5cGUgMDAgY2xhc3MgMHgwNjAwMDANDQooWEVOKSBQQ0kgYWRk
IGRldmljZSAwMDAwOjAwOjAyLjANClsgICAgMy4xOTI0NTJdIHBjaSAwMDAwOjAwOjAzLjA6IFsx
MDIyOjE0OWZdIHR5cGUgMDAgY2xhc3MgMHgwNjAwMDANDQooWEVOKSBQQ0kgYWRkIGRldmljZSAw
MDAwOjAwOjAzLjANClsgICAgMy4xOTY1OTNdIHBjaSAwMDAwOjAwOjA0LjA6IFsxMDIyOjE0OWZd
IHR5cGUgMDAgY2xhc3MgMHgwNjAwMDANDQooWEVOKSBQQ0kgYWRkIGRldmljZSAwMDAwOjAwOjA0
LjANClsgICAgMy4yMDA0NjNdIHBjaSAwMDAwOjAwOjA1LjA6IFsxMDIyOjE0OWZdIHR5cGUgMDAg
Y2xhc3MgMHgwNjAwMDANDQooWEVOKSBQQ0kgYWRkIGRldmljZSAwMDAwOjAwOjA1LjANClsgICAg
My4yMDQ1ODVdIHBjaSAwMDAwOjAwOjA1LjE6IFsxMDIyOjE0YWFdIHR5cGUgMDEgY2xhc3MgMHgw
NjA0MDANDQpbICAgIDMuMjA1MDg1XSBwY2kgMDAwMDowMDowNS4xOiBlbmFibGluZyBFeHRlbmRl
ZCBUYWdzDQ0KWyAgICAzLjIwOTE3OF0gcGNpIDAwMDA6MDA6MDUuMTogUE1FIyBzdXBwb3J0ZWQg
ZnJvbSBEMCBEM2hvdCBEM2NvbGQNDQooWEVOKSBQQ0kgYWRkIGRldmljZSAwMDAwOjAwOjA1LjEN
ClsgICAgMy4yMTY4NjRdIHBjaSAwMDAwOjAwOjA1LjI6IFsxMDIyOjE0YWFdIHR5cGUgMDEgY2xh
c3MgMHgwNjA0MDANDQpbICAgIDMuMjE3MDg2XSBwY2kgMDAwMDowMDowNS4yOiBlbmFibGluZyBF
eHRlbmRlZCBUYWdzDQ0KWyAgICAzLjIyMTE3OV0gcGNpIDAwMDA6MDA6MDUuMjogUE1FIyBzdXBw
b3J0ZWQgZnJvbSBEMCBEM2hvdCBEM2NvbGQNDQooWEVOKSBQQ0kgYWRkIGRldmljZSAwMDAwOjAw
OjA1LjINClsgICAgMy4yMjg4MjRdIHBjaSAwMDAwOjAwOjA1LjM6IFsxMDIyOjE0YWFdIHR5cGUg
MDEgY2xhc3MgMHgwNjA0MDANDQpbICAgIDMuMjI5MDgyXSBwY2kgMDAwMDowMDowNS4zOiBlbmFi
bGluZyBFeHRlbmRlZCBUYWdzDQ0KWyAgICAzLjIzMzE3OF0gcGNpIDAwMDA6MDA6MDUuMzogUE1F
IyBzdXBwb3J0ZWQgZnJvbSBEMCBEM2hvdCBEM2NvbGQNDQooWEVOKSBQQ0kgYWRkIGRldmljZSAw
MDAwOjAwOjA1LjMNClsgICAgMy4yNDA4MDNdIHBjaSAwMDAwOjAwOjA1LjQ6IFsxMDIyOjE0YWFd
IHR5cGUgMDEgY2xhc3MgMHgwNjA0MDANDQpbICAgIDMuMjQxMDg1XSBwY2kgMDAwMDowMDowNS40
OiBlbmFibGluZyBFeHRlbmRlZCBUYWdzDQ0KWyAgICAzLjI0NTE3Nl0gcGNpIDAwMDA6MDA6MDUu
NDogUE1FIyBzdXBwb3J0ZWQgZnJvbSBEMCBEM2hvdCBEM2NvbGQNDQooWEVOKSBQQ0kgYWRkIGRl
dmljZSAwMDAwOjAwOjA1LjQNClsgICAgMy4yNTI4NjVdIHBjaSAwMDAwOjAwOjA3LjA6IFsxMDIy
OjE0OWZdIHR5cGUgMDAgY2xhc3MgMHgwNjAwMDANDQooWEVOKSBQQ0kgYWRkIGRldmljZSAwMDAw
OjAwOjA3LjANClsgICAgMy4yNTY0OTJdIHBjaSAwMDAwOjAwOjA3LjE6IFsxMDIyOjE0YTddIHR5
cGUgMDEgY2xhc3MgMHgwNjA0MDANDQpbICAgIDMuMjU3MDM4XSBwY2kgMDAwMDowMDowNy4xOiBl
bmFibGluZyBFeHRlbmRlZCBUYWdzDQ0KWyAgICAzLjI2MTA4NV0gcGNpIDAwMDA6MDA6MDcuMTog
UE1FIyBzdXBwb3J0ZWQgZnJvbSBEMCBEM2hvdCBEM2NvbGQNDQooWEVOKSBQQ0kgYWRkIGRldmlj
ZSAwMDAwOjAwOjA3LjENClsgICAgMy4yNjg2MThdIHBjaSAwMDAwOjAwOjA3LjI6IFsxMDIyOjE0
YTddIHR5cGUgMDEgY2xhc3MgMHgwNjA0MDANDQpbICAgIDMuMjY5MDM4XSBwY2kgMDAwMDowMDow
Ny4yOiBlbmFibGluZyBFeHRlbmRlZCBUYWdzDQ0KWyAgICAzLjI3MzA4NF0gcGNpIDAwMDA6MDA6
MDcuMjogUE1FIyBzdXBwb3J0ZWQgZnJvbSBEMCBEM2hvdCBEM2NvbGQNDQooWEVOKSBQQ0kgYWRk
IGRldmljZSAwMDAwOjAwOjA3LjINClsgICAgMy4yODA2OThdIHBjaSAwMDAwOjAwOjE0LjA6IFsx
MDIyOjc5MGJdIHR5cGUgMDAgY2xhc3MgMHgwYzA1MDANDQooWEVOKSBQQ0kgYWRkIGRldmljZSAw
MDAwOjAwOjE0LjANClsgICAgMy4yODQ3MDFdIHBjaSAwMDAwOjAwOjE0LjM6IFsxMDIyOjc5MGVd
IHR5cGUgMDAgY2xhc3MgMHgwNjAxMDANDQooWEVOKSBQQ0kgYWRkIGRldmljZSAwMDAwOjAwOjE0
LjMNClsgICAgMy4yODg2NTFdIHBjaSAwMDAwOjAwOjE4LjA6IFsxMDIyOjE0YWRdIHR5cGUgMDAg
Y2xhc3MgMHgwNjAwMDANDQooWEVOKSBQQ0kgYWRkIGRldmljZSAwMDAwOjAwOjE4LjANClsgICAg
My4yOTIzNjVdIHBjaSAwMDAwOjAwOjE4LjE6IFsxMDIyOjE0YWVdIHR5cGUgMDAgY2xhc3MgMHgw
NjAwMDANDQooWEVOKSBQQ0kgYWRkIGRldmljZSAwMDE0Ml0gcGNpX2J1cyAwMDAwOjg3OiByZXNv
dXJjZSAyIFttZW0gMHgzMTliMzIwMDAwMC0weDMxOWIzMmZmZmZmIDY0Yml0IHByZWZdDQ0KWyAg
ICA0LjkzNzkxNl0gcGNpIDAwMDA6MDA6MDEuMTogUENJIGJyaWRnZSB0byBbYnVzIDAxXQ0NClsg
ICAgNC45NDM1MTFdIHBjaSAwMDAwOjAwOjAxLjE6ICAgYnJpZGdlIHdpbmRvdyBbaW8gIDB4MzAw
MC0weDNmZmZdDQ0KWyAgICA0Ljk1MDQ4N10gcGNpIDAwMDA6MDA6MDEuMTogICBicmlkZ2Ugd2lu
ZG93IFttZW0gMHhmMGYwMDAwMC0weGYwZmZmZmZmXQ0NClsgICAgNC45NTgzMDldIHBjaSAwMDAw
OjAwOjAxLjE6ICAgYnJpZGdlIHdpbmRvdyBbbWVtIDB4NGQ4MDAwMDAwMDAtMHg0ZDkwMDFmZmZm
ZiA2NGJpdCBwcmVmXQ0NClsgICAgNC45Njc3MThdIHBjaSAwMDAwOjAwOjA1LjE6IFBDSSBicmlk
Z2UgdG8gW2J1cyAwMl0NDQpbICAgIDQuOTczNDI4XSBwY2kgMDAwMDowMDowNS4yOiBQQ0kgYnJp
ZGdlIHRvIFtidXMgMDNdDQ0KWyAgICA0Ljk3OTEwOF0gcGNpIDAwMDA6MDA6MDUuMzogUENJIGJy
aWRnZSB0byBbYnVzIDA0XQ0NClsgICAgNC45ODQ3NDZdIHBjaSAwMDAwOjAwOjA1LjQ6IFBDSSBi
cmlkZ2UgdG8gW2J1cyAwNV0NDQpbICAgIDQuOTkwNDgxXSBwY2kgMDAwMDowMDowNy4xOiBQQ0kg
YnJpZGdlIHRvIFtidXMgMDZdDQ0KWyAgICA0Ljk5NjEwOF0gcGNpIDAwMDA6MDA6MDcuMTogICBi
cmlkZ2Ugd2luZG93IFttZW0gMHhmMGIwMDAwMC0weGYwZGZmZmZmXQ0NClsgICAgNS4wMDM4NDNd
IHBjaSAwMDAwOjAwOjA3LjI6IFBDSSBicmlkZ2UgdG8gW2J1cyAwN10NDQpbICAgIDUuMDA5NTQ1
XSBwY2kgMDAwMDowMDowNy4yOiAgIGJyaWRnZSB3aW5kb3cgW21lbSAweGYwZTAwMDAwLTB4ZjBl
ZmZmZmZdDQ0KWyAgICA1LjAxNzI4Ml0gcGNpX2J1cyAwMDAwOjAwOiByZXNvdXJjZSA0IFtpbyAg
MHgwMDAwLTB4MDJlNyB3aW5kb3ddDQ0KWyAgICA1LjAyNDMxM10gcGNpX2J1cyAwMDAwOjAwOiBy
ZXNvdXJjZSA1IFtpbyAgMHgwMzAwLTB4MDNhZiB3aW5kb3ddDQ0KWyAgICA1LjAzMTQyNl0gcGNp
X2J1cyAwMDAwOjAwOiByZXNvdXJjZSA2IFtpbyAgMHgwNDAwLTB4MGNmNyB3aW5kb3ddDQ0KWyAg
ICA1LjAzODQyM10gcGNpX2J1cyAwMDAwOjAwOiByZXNvdXJjZSA3IFtpbyAgMHgwM2IwLTB4MDNk
ZiB3aW5kb3ddDQ0KWyAgICA1LjA0NTQ5NV0gcGNpX2J1cyAwMDAwOjAwOiByZXNvdXJjZSA4IFtp
byAgMHgxMDAwLTB4M2ZmZiB3aW5kb3ddDQ0KWyAgICA1LjA1MjQ4OF0gcGNpX2J1cyAwMDAwOjAw
OiByZXNvdXJjZSA5IFttZW0gMHgwMDBhMDAwMC0weDAwMGRmZmZmIHdpbmRvd10NDQpbICAgIDUu
MDYwMzE4XSBwY2lfYnVzIDAwMDA6MDA6IHJlc291cmNlIDEwIFttZW0gMHhmMDAwMDAwMC0weGYw
ZmZmZmZmIHdpbmRvd10NDQpbICAgIDUuMDY4Mjg2XSBwY2lfYnVzIDAwMDA6MDA6IHJlc291cmNl
IDExIFttZW0gMHg0ODAyMDQwMDAwMC0weDRkOWIzM2ZmZmZmIHdpbmRvd10NDQpbICAgIDUuMDc2
ODE0XSBwY2lfYnVzIDAwMDA6MDE6IHJlc291cmNlIDAgW2lvICAweDMwMDAtMHgzZmZmXQ0NClsg
ICAgNS4wODMxNDRdIHBjaV9idXMgMDAwMDowMTogcmVzb3VyY2UgMSBbbWVtIDB4ZjBmMDAwMDAt
MHhmMGZmZmZmZl0NDQpbICAgIDUuMDkwMzI3XSBwY2lfYnVzIDAwMDA6MDE6IHJlc291cmNlIDIg
W21lbSAweDRkODAwMDAwMDAwLTB4NGQ5MDAxZmZmZmYgNjRiaXQgcHJlZl0NDQpbICAgIDUuMDk5
MjMzXSBwY2lfYnVzIDAwMDA6MDY6IHJlc291cmNlIDEgW21lbSAweGYwYjAwMDAwLTB4ZjBkZmZm
ZmZdDQ0KWyAgICA1LjEwNjM5Nl0gcGNpX2J1cyAwMDAwOjA3OiByZXNvdXJjZSAxIFttZW0gMHhm
MGUwMDAwMC0weGYwZWZmZmZmXQ0NClsgICAgNS4xMTM1MjJdIHBjaSAwMDAwOjQwOjAxLjE6IFBD
SSBicmlkZ2UgdG8gW2J1cyA0MV0NDQpbICAgIDUuMTE5MjA1XSBwY2kgMDAwMDo0MDowMS4xOiAg
IGJyaWRnZSB3aW5kb3cgW2lvICAweDYwMDAtMHg2ZmZmXQ0NClsgICAgNS4xMjYzNTJdIHBjaSAw
MDAwOjQwOjAxLjE6ICAgYnJpZGdlIHdpbmRvdyBbbWVtIDB4YzBjMDAwMDAtMHhjMGNmZmZmZl0N
DQpbICAgIDUuMTM0MTU0XSBwY2kgMDAwMDo0MDowMS4xOiAgIGJyaWRnZSB3aW5kb3cgW21lbSAw
eDY5OTQwMDAwMDAwLTB4Njk5N2ZmZmZmZmYgNjRiaXQgcHJlZl0NDQpbICAgIDUuMTQzNjE5XSBw
Y2kgMDAwMDo0MDowMy4xOiBQQ0kgYnJpZGdlIHRvIFtidXMgNDJdDQ0KWyAgICA1LjE0OTMzNV0g
cGNpIDAwMDA6NDA6MDMuMTogICBicmlkZ2Ugd2luZG93IFttZW0gMHhjMDAwMDAwMC0weGMwNGZm
ZmZmXQ0NClsgICAgNS4xNTcxMDBdIHBjaSAwMDAwOjQwOjAzLjI6IFBDSSBicmlkZ2UgdG8gW2J1
cyA0M10NDQpbICAgIDUuMTYyNzY3XSBwY2kgMDAwMDo0MDowMy4yOiAgIGJyaWRnZSB3aW5kb3cg
W21lbSAweGMwYjAwMDAwLTB4YzBiZmZmZmZdDQ0KWyAgICA1LjE3MDQ1M10gcGNpIDAwMDA6NDU6
MDAuMDogUENJIGJyaWRnZSB0byBbYnVzIDQ2XQ0NClsgICAgNS4xNzYyMTRdIHBjaSAwMDAwOjQ1
OjAwLjA6ICAgYnJpZGdlIHdpbmRvdyBbbWVtIDB4YzBhMDAwMDAtMHhjMGFmZmZmZl0NDQpbICAg
IDUuMTgzOTMwXSBwY2kgMDAwMDo0NTowMC4wOiAgIGJyaWRnZSB3aW5kb3cgW21lbSAweDY5OTgw
MDAwMDAwLTB4Njk5ODAwZmZmZmYgNjRiaXQgcHJlZl0NDQpbICAgIDUuMTkzNDU0XSBwY2kgMDAw
MDo0NTowMi4wOiBQQ0kgYnJpZGdlIHRvIFtidXMgNDddDQ0KWyAgICA1LjE5OTIxNF0gcGNpIDAw
MDA6NDU6MDIuMDogICBicmlkZ2Ugd2luZG93IFtpbyAgMHg1MDAwLTB4NWZmZl0NDQpbICAgIDUu
MjA2MTk4XSBwY2kgMDAwMDo0NTowMi4wOiAgIGJyaWRnZSB3aW5kb3cgW21lbSAweGMwOTAwMDAw
LTB4YzA5ZmZmZmZdDQ0KWyAgICA1LjIxMzk4Nl0gcGNpIDAwMDA6NDU6MDguMDogUENJIGJyaWRn
ZSB0byBbYnVzIDQ4XQ0NClsgICAgNS4yMTk3NTNdIHBjaSAwMDAwOjQ1OjA4LjA6ICAgYnJpZGdl
IHdpbmRvdyBbbWVtIDB4YzA4MDAwMDAtMHhjMDhmZmZmZl0NDQpbICAgIDUuMjI3NTY0XSBwY2kg
MDAwMDo0NTowYy4wOiBQQ0kgYnJpZGdlIHRvIFtidXMgNDldDQ0KWyAgICA1LjIzMzI4NF0gcGNp
IDAwMDA6NDU6MGMuMDogICBicmlkZ2Ugd2luZG93IFttZW0gMHhjMDcwMDAwMC0weGMwN2ZmZmZm
XQ0NClsgICAgNS4yNDEwNjddIHBjaSAwMDAwOjQ1OjBkLjA6IFBDSSBicmlkZ2UgdG8gW2J1cyA0
YV0NDQpbICAgIDUuMjQ2ODA2XSBwY2kgMDAwMDo0NTowZC4wOiAgIGJyaWRnZSB3aW5kb3cgW21l
bSAweGMwNjAwMDAwLTB4YzA2ZmZmZmZdDQ0KWyAgICA1LjI1NDU2MF0gcGNpIDAwMDA6NDQ6MDAu
MDogUENJIGJyaWRnZSB0byBbYnVzIDQ1LTRhXQ0NClsgICAgNS4yNjA0ODRdIHBjaSAwMDAwOjQ0
OjAwLjA6ICAgYnJpZGdlIHdpbmRvdyBbaW8gIDB4NTAwMC0weDVmZmZdDQ0KWyAgICA1LjI2NzUx
Nl0gcGNpIDAwMDA6NDQ6MDAuMDogICBicmlkZ2Ugd2luZG93IFttZW0gMHhjMDYwMDAwMC0weGMw
YWZmZmZmXQ0NClsgICAgNS4yNzUyMTJdIHBjaSAwMDAwOjQ0OjAwLjA6ICAgYnJpZGdlIHdpbmRv
dyBbbWVtIDB4Njk5ODAwMDAwMDAtMHg2OTk4MDBmZmZmZiA2NGJpdCBwcmVmXQ0NClsgICAgNS4y
ODQ2MjBdIHBjaSAwMDAwOjQwOjAzLjM6IFBDSSBicmlkZ2UgdG8gW2J1cyA0NC00YV0NDQpbICAg
IDUuMjkwNjE5XSBwY2kgMDAwMDo0MDowMy4zOiAgIGJyaWRnZSB3aW5kb3cgW2lvICAweDUwMDAt
MHg1ZmZmXQ0NClsgICAgNS4yOTc1NjldIHBjaSAwMDAwOjQwOjAzLjM6ICAgYnJpZGdlIHdpbmRv
dyBbbWVtIDB4YzA2MDAwMDAtMHhjMGFmZmZmZl0NDQpbICAgIDUuMzA1Mjg0XSBwY2kgMDAwMDo0
MDowMy4zOiAgIGJyaWRnZSB3aW5kb3cgW21lbSAweDY5OTgwMDAwMDAwLTB4Njk5ODAwZmZmZmYg
NjRiaXQgcHJlZl0NDQpbICAgIDUuMzE0NzQ2XSBwY2kgMDAwMDo0MDowNy4xOiBQQ0kgYnJpZGdl
IHRvIFtidXMgNGJdDQ0KWyAgICA1LjMyMDQ1OV0gcGNpX2J1cyAwMDAwOjQwOiByZXNvdXJjZSA0
IFtpbyAgMHg0MDAwLTB4NmZmZiB3aW5kb3ddDQ0KWyAgICA1LjMyNzUyN10gcGNpX2J1cyAwMDAw
OjQwOiByZXNvdXJjZSA1IFttZW0gMHhjMDAwMDAwMC0weGMwZmZmZmZmIHdpbmRvd10NDQpbICAg
IDUuMzM1MzQzXSBwY2lfYnVzIDAwMDA6NDA6IHJlc291cmNlIDYgW21lbSAweDY0MDIwNDAwMDAw
LTB4Njk5YjMzZmZmZmYgd2luZG93XQ0NClsgICAgNS4zNDM4MDRdIHBjaV9idXMgMDAwMDo0MTog
cmVzb3VyY2UgMCBbaW8gIDB4NjAwMC0weDZmZmZdDQ0KWyAgICA1LjM1MDIyNl0gcGNpX2J1cyAw
MDAwOjQxOiByZXNvdXJjZSAxIFttZW0gMHhjMGMwMDAwMC0weGMwY2ZmZmZmXQ0NClsgICAgNS4z
NTczMzldIHBjaV9idXMgMDAwMDo0MTogcmVzb3VyY2UgMiBbbWVtIDB4Njk5NDAwMDAwMDAtMHg2
OTk3ZmZmZmZmZiA2NGJpdCBwcmVmXQ0NClsgICAgNS4zNjYxMDJdIHBjaV9idXMgMDAwMDo0Mjog
cmVzb3VyY2UgMSBbbWVtIDB4YzAwMDAwMDAtMHhjMDRmZmZmZl0NDQpbICAgIDUuMzczMjQ2XSBw
Y2lfYnVzIDAwMDA6NDM6IHJlc291cmNlIDEgW21lbSAweGMwYjAwMDAwLTB4YzBiZmZmZmZdDQ0K
WyAgICA1LjM4MDI3NV0gcGNpX2J1cyAwMDAwOjQ0OiByZXNvdXJjZSAwIFtpbyAgMHg1MDAwLTB4
NWZmZl0NDQpbICAgIDUuMzg2NjgxXSBwY2lfYnVzIDAwMDA6NDQ6IHJlc291cmNlIDEgW21lbSAw
eGMwNjAwMDAwLTB4YzBhZmZmZmZdDQ0KWyAgICA1LjM5MzgzMV0gcGNpX2J1cyAwMDAwOjQ0OiBy
ZXNvdXJjZSAyIFttZW0gMHg2OTk4MDAwMDAwMC0weDY5OTgwMGZmZmZmIDY0Yml0IHByZWZdDQ0K
WyAgICA1LjQwMjYxOF0gcGNpX2J1cyAwMDAwOjQ1OiByZXNvdXJjZSAwIFtpbyAgMHg1MDAwLTB4
NWZmZl0NDQpbICAgIDUuNDA4OTY1XSBwY2lfYnVzIDAwMDA6NDU6IHJlc291cmNlIDEgW21lbSAw
eGMwNjAwMDAwLTB4YzBhZmZmZmZdDQ0KWyAgICA1LjRyaWFsTnVtYmVyOiAwMDAwMDAwMDENDQpb
ICAgIDcuNjUyNDI0XSBkZXZpY2UtbWFwcGVyOiBpb2N0bDogNC40Ny4wLWlvY3RsICgyMDIyLTA3
LTI4KSBpbml0aWFsaXNlZDogZG0tZGV2ZWxAcmVkaGF0LmNvbQ0NClsgICAgNy42NTgxNTldIGh1
YiA0LTI6MS4wOiBVU0IgaHViIGZvdW5kDQ0KWyAgICA3LjcwMjU1NF0gaHViIDQtMjoxLjA6IDQg
cG9ydHMgZGV0ZWN0ZWQNDQpbICAgIDcuODExMzk2XSBhdGEyOiBTQVRBIGxpbmsgdXAgNi4wIEdi
cHMgKFNTdGF0dXMgMTMzIFNDb250cm9sIDMwMCkNDQpbICAgIDcuODE2MTkxXSB1c2IgNy01OiBO
ZXcgVVNCIGRldmljZSBmb3VuZCwgaWRWZW5kb3I9MDQ1MSwgaWRQcm9kdWN0PTgwNDMsIGJjZERl
dmljZT0gMS4wMA0NClsgICAgNy44Mjg3NTddIGF0YTIuMDA6IEFUQS04OiBTVDE1MDBETDAwMy05
VlQxNkwsIENDMzIsIG1heCBVRE1BLzEzMw0NClsgICAgNy44Mjk1NzVdIHVzYiA3LTU6IE5ldyBV
U0IgZGV2aWNlIHN0cmluZ3M6IE1mcj0wLCBQcm9kdWN0PTAsIFNlcmlhbE51bWJlcj0xDQ0KWyAg
ICA3LjgzNjczN10gYXRhMi4wMDogMjkzMDI3NzE2OCBzZWN0b3JzLCBtdWx0aSAxNjogTEJBNDgg
TkNRIChkZXB0aCAzMikNDQpbICAgIDcuODQ0OTQ3XSB1c2IgNy01OiBTZXJpYWxOdW1iZXI6IDE4
MDUwMDc5QkZCOQ0NClsgICAgNy44NTk1ODhdIGF0YTIuMDA6IGNvbmZpZ3VyZWQgZm9yIFVETUEv
MTMzDQ0KWyAgICA3Ljg2NzA4NV0gc2NzaSAxOjA6MDowOiBEaXJlY3QtQWNjZXNzICAgICBBVEEg
ICAgICBTVDE1MDBETDAwMy05VlQxIENDMzIgUFE6IDAgQU5TSTogNQ0NClsgICAgNy44NjgzOTZd
IGh1YiA3LTU6MS4wOiBVU0IgaHViIGZvdW5kDQ0KWyAgICA3Ljg4NTE3OF0gaHViIDctNToxLjA6
IDQgcG9ydHMgZGV0ZWN0ZWQNDQpbICAgIDcuOTM1NDg0XSB1c2IgNC0zOiBuZXcgU3VwZXJTcGVl
ZCBVU0IgZGV2aWNlIG51bWJlciAzIHVzaW5nIHhoY2lfaGNkDQ0KWyAgICA3Ljk0NDA0OV0gdXNi
IDgtNTogbmV3IFN1cGVyU3BlZWQgVVNCIGRldmljZSBudW1iZXIgMiB1c2luZyB4aGNpX2hjZA0N
ClsgICAgNy45NjQ0NzhdIHVzYiA0LTM6IE5ldyBVU0IgZGV2aWNlIGZvdW5kLCBpZFZlbmRvcj0x
MDU4LCBpZFByb2R1Y3Q9MDgyMCwgYmNkRGV2aWNlPTEwLjEyDQ0KWyAgICA3Ljk3MjkyOV0gdXNi
IDgtNTogTmV3IFVTQiBkZXZpY2UgZm91bmQsIGlkVmVuZG9yPTA0NTEsIGlkUHJvZHVjdD04MDQx
LCBiY2REZXZpY2U9IDEuMDANDQpbICAgIDcuOTczOTQ3XSB1c2IgNC0zOiBOZXcgVVNCIGRldmlj
ZSBzdHJpbmdzOiBNZnI9MSwgUHJvZHVjdD0yLCBTZXJpYWxOdW1iZXI9NQ0NClsgICAgNy45ODMx
NzJdIHVzYiA4LTU6IE5ldyBVU0IgZGV2aWNlIHN0cmluZ3M6IE1mcj0wLCBQcm9kdWN0PTAsIFNl
cmlhbE51bWJlcj0wDQ0KWyAgICA3Ljk5MTM3MV0gdXNiIDQtMzogUHJvZHVjdDogTXkgUGFzc3Bv
cnQgMDgyMA0NClsgICAgNy45OTEzNzJdIHVzYiA0LTM6IE1hbnVmYWN0dXJlcjogV2VzdGVybiBE
aWdpdGFsDQ0KWyAgICA3Ljk5MTM3M10gdXNiIDQtMzogU2VyaWFsTnVtYmVyOiA1NzU4NTMzMTQ1
NDMzNDRBMzI1NDM1NDMNDQpbICAgIDguMDA2NTgxXSBodWIgOC01OjEuMDogVVNCIGh1YiBmb3Vu
ZA0NClsgICAgOC4wMjcxMDBdIGh1YiA4LTU6MS4wOiA0IHBvcnRzIGRldGVjdGVkDQ0KWyAgICA4
LjEzOTQ4Nl0gdXNiIDQtNDogbmV3IFN1cGVyU3BlZWQgVVNCIGRldmljZSBudW1iZXIgNCB1c2lu
ZyB4aGNpX2hjZA0NClsgICAgOC4xNjc0MjFdIHVzYiA3LTc6IG5ldyBoaWdoLXNwZWVkIFVTQiBk
ZXZpY2UgbnVtYmVyIDMgdXNpbmcgeGhjaV9oY2QNDQpbICAgIDguMTY4MzMzXSB1c2IgNC00OiBO
ZXcgVVNCIGRldmljZSBmb3VuZCwgaWRWZW5kb3I9MGJjMiwgaWRQcm9kdWN0PWFjMjUsIGJjZERl
dmljZT0gMS4wMA0NClsgICAgOC4xODYwNDJdIHVzYiA0LTQ6IE5ldyBVU0IgZGV2aWNlIHN0cmlu
Z3M6IE1mcj0yLCBQcm9kdWN0PTMsIFNlcmlhbE51bWJlcj0xDQ0KWyAgICA4LjE5NDk3OV0gdXNi
IDQtNDogUHJvZHVjdDogQlVQIFBvcnRhYmxlDQ0KWyAgICA4LjIwMDM4NV0gdXNiIDQtNDogTWFu
dWZhY3R1cmVyOiBTZWFnYXRlDQ0KWyAgICA4LjIwNTc3MF0gdXNiIDQtNDogU2VyaWFsTnVtYmVy
OiAwMDAwMDAwME5BQjlLNEdNDQ0KWyAgICA4LjI5NTQxMF0gdXNiIDMtMi4yOiBuZXcgbG93LXNw
ZWVkIFVTQiBkZXZpY2UgbnVtYmVyIDMgdXNpbmcgeGhjaV9oY2QNDQpbICAgIDguMzUxNDIwXSBh
dGEzOiBTQVRBIGxpbmsgdXAgNi4wIEdicHMgKFNTdGF0dXMgMTMzIFNDb250cm9sIDMwMCkNDQpb
ICAgIDguMzU5ODQzXSBhdGEzLjAwOiBBVEEtOTogU1QzMDAwRE0wMDgtMkRNMTY2LCBDQzI2LCBt
YXggVURNQS8xMzMNDQpbICAgIDguMzY3NjkyXSBhdGEzLjAwOiA1ODYwNTMzMTY4IHNlY3RvcnMs
IG11bHRpIDE2OiBMQkE0OCBOQ1EgKGRlcHRoIDMyKSwgQUENDQpbICAgIDguMzc3MTkyXSBhdGEz
LjAwOiBjb25maWd1cmVkIGZvciBVRE1BLzEzMw0NClsgICAgOC4zODI4NTNdIHNjc2kgMjowOjA6
MDogRGlyZWN0LUFjY2VzcyAgICAgQVRBICAgICAgU1QzMDAwRE0wMDgtMkRNMSBDQzI2IFBROiAw
IEFOU0k6IDUNDQpbICAgIDguNDA5MjEyXSB1c2IgNy03OiBOZXcgVVNCIGRldmljZSBmb3VuZCwg
aWRWZW5kb3I9MDY3YiwgaWRQcm9kdWN0PTI1ODYsIGJjZERldmljZT0gMC4wMA0NClsgICAgOC40
MTk0MzFdIHVzYiA3LTc6IE5ldyBVU0IgZGV2aWNlIHN0cmluZ3M6IE1mcj0xLCBQcm9kdWN0PTMs
IFNlcmlhbE51bWJlcj0wDQ0KWyAgICA4LjQyODMyMl0gdXNiIDctNzogUHJvZHVjdDogVVNCIDIu
MCBIdWIgICAgICAgICAgICANDQpbICAgIDguNDM0OTUwXSB1c2IgNy03OiBNYW51ZmFjdHVyZXI6
IFVTQiBEZXZpY2UgIA0NClsgICAgOC40NDk0MThdIGh1YiA3LTc6MS4wOiBVU0IgaHViIGZvdW5k
DQ0KWyAgICA4LjQ1NTg2Nl0gdXNiIDMtMi4yOiBOZXcgVVNCIGRldmljZSBmb3VuZCwgaWRWZW5k
b3I9MWJjZiwgaWRQcm9kdWN0PTAwMDUsIGJjZERldmljZT0gMC4xNA0NClsgICAgOC40NTcyMDVd
IGh1YiA3LTc6MS4wOiA0IHBvcnRzIGRldGVjdGVkDQ0KWyAgICA4LjQ2NTQ2OF0gdXNiIDMtMi4y
OiBOZXcgVVNCIGRldmljZSBzdHJpbmdzOiBNZnI9MCwgUHJvZHVjdD0yLCBTZXJpYWxOdW1iZXI9
MA0NClsgICAgOC40ODA2NTNdIHVzYiAzLTIuMjogUHJvZHVjdDogVVNCIE9wdGljYWwgTW91c2UN
DQpbICAgIDguNjE5NDE1XSB1c2IgMy0yLjM6IG5ldyBmdWxsLXNwZWVkIFVTQiBkZXZpY2UgbnVt
YmVyIDQgdXNpbmcgeGhjaV9oY2QNDQpbICAgIDguNjc1NDA4XSB1c2IgNy04OiBuZXcgaGlnaC1z
cGVlZCBVU0IgZGV2aWNlIG51bWJlciA0IHVzaW5nIHhoY2lfaGNkDQ0KWyAgICA4Ljc4MDEwN10g
dXNiIDMtMi4zOiBOZXcgVVNCIGRldmljZSBmb3VuZCwgaWRWZW5kb3I9MWE3YywgaWRQcm9kdWN0
PTAxOTIsIGJjZERldmljZT0gMS4xMw0NClsgICAgOC43OTAzODVdIHVzYiAzLTIuMzogTmV3IFVT
QiBkZXZpY2Ugc3RyaW5nczogTWZyPTEsIFByb2R1Y3Q9NiwgU2VyaWFsTnVtYmVyPTANDQpbICAg
IDguNzk5NTMzXSB1c2IgMy0yLjM6IFByb2R1Y3Q6IEV2b2x1ZW50IFZlcnRpY2FsTW91c2UgNCBM
ZWZ0DQ0KWyAgICA4LjgwNjg3Ml0gdXNiIDMtMi4zOiBNYW51ZmFjdHVyZXI6IEtpbmdzaXMgUGVy
aXBoZXJhbHMNDQpbICAgIDguODY3NDE5XSBhdGE0OiBTQVRBIGxpbmsgdXAgNi4wIEdicHMgKFNT
dGF0dXMgMTMzIFNDb250cm9sIDMwMCkNDQpbICAgIDguODg2NzYyXSBhdGE0LjAwOiBBVEEtODog
T0NaLVZFUlRFWDMgTUksIDIuMjUsIG1heCBVRE1BLzEzMw0NClsgICAgOC44OTQxNDldIGF0YTQu
MDA6IDQ2ODg2MjEyOCBzZWN0b3JzLCBtdWx0aSAxNjogTEJBNDggTkNRIChkZXB0aCAzMiksIEFB
DQ0KWyAgICA4LjkwNzE2M10gYXRhNC4wMDogY29uZmlndXJlZCBmb3IgVURNQS8xMzMNDQpbICAg
IDguOTEyODU0XSBzY3NpIDM6MDowOjA6IERpcmVjdC1BY2Nlc3MgICAgIEFUQSAgICAgIE9DWi1W
RVJURVgzIE1JICAgMi4yNSBQUTogMCBBTlNJOiA1DQ0KWyAgICA4LjkxNzIyMl0gdXNiIDctODog
TmV3IFVTQiBkZXZpY2UgZm91bmQsIGlkVmVuZG9yPTA2N2IsIGlkUHJvZHVjdD0yNTg2LCBiY2RE
ZXZpY2U9IDAuMDANDQpbICAgIDguOTMzMTA0XSB1c2IgNy04OiBOZXcgVVNCIGRldmljZSBzdHJp
bmdzOiBNZnI9MSwgUHJvZHVjdD0zLCBTZXJpYWxOdW1iZXI9MA0NClsgICAgOC45NDIwODBdIHVz
YiA3LTg6IFByb2R1Y3Q6IFVTQiAyLjAgSHViICAgICAgICAgICAgDQ0KWyAgICA4Ljk0ODY2N10g
dXNiIDctODogTWFudWZhY3R1cmVyOiBVU0IgRGV2aWNlICANDQpbICAgIDguOTU2MjM4XSBoaWQ6
IHJhdyBISUQgZXZlbnRzIGRyaXZlciAoQykgSmlyaSBLb3NpbmENDQpbICAgIDguOTYzMTE0XSB1
c2Itc3RvcmFnZSA0LTM6MS4wOiBVU0IgTWFzcyBTdG9yYWdlIGRldmljZSBkZXRlY3RlZA0NClsg
ICAgOC45NjQ0NjZdIGh1YiA3LTg6MS4wOiBVU0IgaHViIGZvdW5kDQ0KWyAgICA4Ljk3MDI4M10g
c2NzaSBob3N0NjogdXNiLXN0b3JhZ2UgNC0zOjEuMA0NClsgICAgOC45NzcyMTldIGh1YiA3LTg6
MS4wOiA0IHBvcnRzIGRldGVjdGVkDQ0KWyAgICA4Ljk3OTI3MV0gdXNiY29yZTogcmVnaXN0ZXJl
ZCBuZXcgaW50ZXJmYWNlIGRyaXZlciB1c2Itc3RvcmFnZQ0NClsgICAgOC45OTUwMjNdIHNkIDA6
MDowOjA6IFtzZGFdIDU4NjA1MzMxNjggNTEyLWJ5dGUgbG9naWNhbCBibG9ja3M6ICgzLjAwIFRC
LzIuNzMgVGlCKQ0NClsgICAgOC45OTUxNzhdIHNkIDM6MDowOjA6IFtzZGRdIDQ2ODg2MjEyOCA1
MTItYnl0ZSBsb2dpY2FsIGJsb2NrczogKDI0MCBHQi8yMjQgR2lCKQ0NClsgICAgOC45OTUxODNd
IHNkIDI6MDowOjA6IFtzZGNdIDU4NjA1MzMxNjggNTEyLWJ5dGUgbG9naWNhbCBibG9ja3M6ICgz
LjAwIFRCLzIuNzMgVGlCKQ0NClsgICAgOC45OTUxODRdIHNkIDI6MDowOjA6IFtzZGNdIDQwOTYt
Ynl0ZSBwaHlzaWNhbCBibG9ja3MNDQpbICAgIDguOTk1MjAzXSBzZCAxOjA6MDowOiBbc2RiXSAy
OTMwMjc3MTY4IDUxMi1ieXRlIGxvZ2ljYWwgYmxvY2tzOiAoMS41MCBUQi8xLjM2IFRpQikNDQpb
ICAgIDguOTk1MjA1XSBzZCAyOjA6MDowOiBbc2RjXSBXcml0ZSBQcm90ZWN0IGlzIG9mZg0NClsg
ICAgOC45OTUyMzJdIHNkIDE6MDowOjA6IFtzZGJdIFdyaXRlIFByb3RlY3QgaXMgb2ZmDQ0KWyAg
ICA4Ljk5NTI0M10gc2QgMjowOjA6MDogW3NkY10gV3JpdGUgY2FjaGU6IGVuYWJsZWQsIHJlYWQg
Y2FjaGU6IGVuYWJsZWQsIGRvZXNuJ3Qgc3VwcG9ydCBEUE8gb3IgRlVBDQ0KWyAgICA4Ljk5NTI3
N10gc2QgMTowOjA6MDogW3NkYl0gV3JpdGUgY2FjaGU6IGVuYWJsZWQsIHJlYWQgY2FjaGU6IGVu
YWJsZWQsIGRvZXNuJ3Qgc3VwcG9ydCBEUE8gb3IgRlVBDQ0KWyAgICA4Ljk5NTI4OV0gc2QgMjow
OjA6MDogW3NkY10gUHJlZmVycmVkIG1pbmltdW0gSS9PIHNpemUgNDA5NiBieXRlcw0NClsgICAg
OC45OTUzMjVdIHNkIDE6MDowOjA6IFtzZGJdIFByZWZlcnJlZCBtaW5pbXVtIEkvTyBzaXplIDUx
MiBieXRlcw0NClsgICAgOS4wMDM4MjRdIHNkIDA6MDowOjA6IFtzZGFdIDQwOTYtYnl0ZSBwaHlz
aWNhbCBibG9ja3MNDQpbICAgIDkuMDEyNTA3XSBzZCAzOjA6MDowOiBbc2RkXSBXcml0ZSBQcm90
ZWN0IGlzIG9mZg0NClsgICAgOS4wMjE0ODldIHNkIDA6MDowOjA6IFtzZGFdIFdyaXRlIFByb3Rl
Y3QgaXMgb2ZmDQ0KWyAgICA5LjAzNjkyN10gIHNkYzogc2RjMSBzZGMyIHNkYzMNDQpbICAgIDku
MDM3MDY5XSBzZCAyOjA6MDowOiBbc2RjXSBBdHRhY2hlZCBTQ1NJIGRpc2sNDQpbICAgIDkuMDQx
ODM0XSBzZCAzOjA6MDowOiBbc2RkXSBXcml0ZSBjYWNoZTogZW5hYmxlZCwgcmVhZCBjYWNoZTog
ZW5hYmxlZCwgZG9lc24ndCBzdXBwb3J0IERQTyBvciBGVUENDQpbICAgIDkuMDQyNTc1XSBzZCAw
OjA6MDowOiBbc2RhXSBXcml0ZSBjYWNoZTogZW5hYmxlZCwgcmVhZCBjYWNoZTogZW5hYmxlZCwg
ZG9lc24ndCBzdXBwb3J0IERQTyBvciBGVUENDQpbICAgIDkuMDQ4MDMyXSBzZCAzOjA6MDowOiBb
c2RkXSBQcmVmZXJyZWQgbWluaW11bSBJL08gc2l6ZSA1MTIgYnl0ZXMNDQpbICAgIDkuMDQ4NzY3
XSBzZCAwOjA6MDowOiBbc2RhXSBQcmVmZXJyZWQgbWluaW11bSBJL08gc2l6ZSA0MDk2IGJ5dGVz
DQ0KWyAgICA5LjA1NzkwN10gIHNkYjogc2RiMSBzZGIyIHNkYjMNDQpbICAgIDkuMDU4MDU1XSBz
ZCAxOjA6MDowOiBbc2RiXSBBdHRhY2hlZCBTQ1NJIGRpc2sNDQpbICAgIDkuMDU5NDgyXSB1c2Ig
Ny03LjE6IG5ldyBmdWxsLXNwZWVkIFVTQiBkZXZpY2UgbnVtYmVyIDUgdXNpbmcgeGhjaV9oY2QN
DQpbICAgIDkuMDg2ODk3XSBzY3NpIGhvc3Q3OiB1YXMNDQpbICAgIDkuMDg4OTEwXSB1c2Jjb3Jl
OiByZWdpc3RlcmVkIG5ldyBpbnRlcmZhY2UgZHJpdmVyIHVzYmhpZA0NClsgICAgOS4wODg5MTJd
IHVzYmhpZDogVVNCIEhJRCBjb3JlIGRyaXZlcg0NClsgICAgOS4wOTE2MDhdICBzZGQ6IHNkZDEN
DQpbICAgIDkuMDk2OTk3XSB1c2Jjb3JlOiByZWdpc3RlcmVkIG5ldyBpbnRlcmZhY2UgZHJpdmVy
IHVhcw0NClsgICAgOS4wOTcyNTJdIHNjc2kgNzowOjA6MDogRGlyZWN0LUFjY2VzcyAgICAgU2Vh
Z2F0ZSAgQlVQIFBvcnRhYmxlICAgICAwMDA0IFBROiAwIEFOU0k6IDYNDQpbICAgIDkuMDk4Mzg3
XSBzZCA3OjA6MDowOiBbc2RlXSA3ODE0MDM3MTY3IDUxMi1ieXRlIGxvZ2ljYWwgYmxvY2tzOiAo
NC4wMCBUQi8zLjY0IFRpQikNDQpbICAgIDkuMDk4Mzg5XSBzZCA3OjA6MDowOiBbc2RlXSA0MDk2
LWJ5dGUgcGh5c2ljYWwgYmxvY2tzDQ0KWyAgICA5LjA5ODQ3Ml0gc2QgNzowOjA6MDogW3NkZV0g
V3JpdGUgUHJvdGVjdCBpcyBvZmYNDQpbICAgIDkuMDk4NjMwXSBzZCA3OjA6MDowOiBbc2RlXSBX
cml0ZSBjYWNoZTogZW5hYmxlZCwgcmVhZCBjYWNoZTogZW5hYmxlZCwgZG9lc24ndCBzdXBwb3J0
IERQTyBvciBGVUENDQpbICAgIDkuMDk4NzkxXSBzZCA3OjA6MDowOiBbc2RlXSBQcmVmZXJyZWQg
bWluaW11bSBJL08gc2l6ZSA0MDk2IGJ5dGVzDQ0KWyAgICA5LjA5ODc5Ml0gc2QgNzowOjA6MDog
W3NkZV0gT3B0aW1hbCB0cmFuc2ZlciBzaXplIDMzNTUzOTIwIGJ5dGVzIG5vdCBhIG11bHRpcGxl
IG9mIHByZWZlcnJlZCBtaW5pbXVtIGJsb2NrIHNpemUgKDQwOTYgYnl0ZXMpDQ0KWyAgICA5LjA5
OTQ2OF0gcjgxNjkgMDAwMDo4NjowMC4wIGVucDEzNHMwOiByZW5hbWVkIGZyb20gZXRoMQ0NClsg
ICAgOS4xMDI0MzNdIHNkIDM6MDowOjA6IFtzZGRdIEF0dGFjaGVkIFNDU0kgZGlzaw0NClsgICAg
OS4xMTUxODBdICBzZGU6IHNkZTMgc2RlOQ0NClsgICAgOS4xMTc4MjddICBzZGE6IHNkYTEgc2Rh
MiBzZGEzDQ0KWyAgICA5LjExODAwN10gc2QgMDowOjA6MDogW3NkYV0gQXR0YWNoZWQgU0NTSSBk
aXNrDQ0KWyAgICA5LjI5NTU5OF0gc2QgNzowOjA6MDogW3NkZV0gQXR0YWNoZWQgU0NTSSBkaXNr
DQ0KWyAgICA5LjMwNDIzMV0gaW5wdXQ6IFVTQiBPcHRpY2FsIE1vdXNlIGFzIC9kZXZpY2VzL3Bj
aTAwMDA6ODAvMDAwMDo4MDowMS4zLzAwMDA6ODI6MDAuMC91c2IzLzMtMi8zLTIuMi8zLTIuMjox
LjAvMDAwMzoxQkNGOjAwMDUuMDAwMS9pbnB1dC9pbnB1dDANDQpbICAgIDkuMzE5NTAzXSByODE2
OSAwMDAwOjg3OjAwLjAgZW5wMTM1czA6IHJlbmFtZWQgZnJvbSBldGgwDQ0KWyAgICA5LjMxOTY5
Nl0gaGlkLWdlbmVyaWMgMDAwMzoxQkNGOjAwMDUuMDAwMTogaW5wdXQsaGlkcmF3MDogVVNCIEhJ
RCB2MS4xMCBNb3VzZSBbVVNCIE9wdGljYWwgTW91c2VdIG9uIHVzYi0wMDAwOjgyOjAwLjAtMi4y
L2lucHV0MA0NClsgICAgOS4zNDA5ODJdIGlucHV0OiBLaW5nc2lzIFBlcmlwaGVyYWxzIEV2b2x1
ZW50IFZlcnRpY2FsTW91c2UgNCBMZWZ0IGFzIC9kZXZpY2VzL3BjaTAwMDA6ODAvMDAwMDo4MDow
MS4zLzAwMDA6ODI6MDAuMC91c2IzLzMtMi8zLTIuMy8zLTIuMzoxLjAvMDAwMzoxQTdDOjAxOTIu
MDAwMi9pbnB1dC9pbnB1dDENDQpbICAgIDkuMzYwMzgwXSBoaWQtZ2VuZXJpYyAwMDAzOjFBN0M6
MDE5Mi4wMDAyOiBpbnB1dCxoaWRyYXcxOiBVU0IgSElEIHYxLjExIE1vdXNlIFtLaW5nc2lzIFBl
cmlwaGVyYWxzIEV2b2x1ZW50IFZlcnRpY2FsTW91c2UgNCBMZWZ0XSBvbiB1c2ItMDAwMDo4Mjow
MC4wLTIuMy9pbnB1dDANDQpbICAgIDkuMzcxNDI0XSByYWlkNjogYXZ4NTEyeDQgZ2VuKCkgNTcw
NjUgTUIvcw0NClsgICAgOS40MTkyNDFdIHVzYiA3LTcuMTogTmV3IFVTQiBkZXZpY2UgZm91bmQs
IGlkVmVuZG9yPTA1MWQsIGlkUHJvZHVjdD0wMDAyLCBiY2REZXZpY2U9IDAuOTANDQpbICAgIDku
NDI5Nzg5XSB1c2IgNy03LjE6IE5ldyBVU0IgZGV2aWNlIHN0cmluZ3M6IE1mcj0xLCBQcm9kdWN0
PTIsIFNlcmlhbE51bWJlcj0zDQ0KWyAgICA5LjQzOTA5MF0gdXNiIDctNy4xOiBQcm9kdWN0OiBC
YWNrLVVQUyBYUyAxMDAwTSBGVzo5NDUuZDkgLkQgVVNCIEZXOmQ5ICAgICANDQpbICAgIDkuNDQ4
MjkxXSB1c2IgNy03LjE6IE1hbnVmYWN0dXJlcjogQW1lcmljYW4gUG93ZXIgQ29udmVyc2lvbg0N
ClsgICAgOS40NTE0MzRdIHJhaWQ2OiBhdng1MTJ4MiBnZW4oKSA1OTgyMyBNQi9zDQ0KWyAgICA5
LjQ1NTAyMV0gdXNiIDctNy4xOiBTZXJpYWxOdW1iZXI6IDNCMTgzMVgyNjUxMyAgDQ0KWyAgICA5
LjUyNzM5NV0gcmFpZDY6IGF2eDUxMngxIGdlbigpIDU1NDE4IE1CL3MNDQpbICAgIDkuNTI3NDcw
XSB1c2IgNy05OiBuZXcgZnVsbC1zcGVlZCBVU0IgZGV2aWNlIG51bWJlciA2IHVzaW5nIHhoY2lf
aGNkDQ0KWyAgICA5LjU0MTg2N10gaGlkLWdlbmVyaWMgMDAwMzowNTFEOjAwMDIuMDAwMzogaGlk
ZGV2MCxoaWRyYXcyOiBVU0IgSElEIHYxLjAwIERldmljZSBbQW1lcmljYW4gUG93ZXIgQ29udmVy
c2lvbiBCYWNrLVVQUyBYUyAxMDAwTSBGVzo5NDUuZDkgLkQgVVNCIEZXOmQ5ICAgICBdIG9uIHVz
Yi0wMDAwOjQ5OjAwLjAtNy4xL2lucHV0MA0NClsgICAgOS41OTkzOTVdIHJhaWQ2OiBhdngyeDQg
ICBnZW4oKSA2MTU1OCBNQi9zDQ0KWyAgICA5LjY3MTQ1NF0gcmFpZDY6IGF2eDJ4MiAgIGdlbigp
IDYzMjIxIE1CL3MNDQpbICAgIDkuNzQzNDYyXSByYWlkNjogYXZ4MngxICAgZ2VuKCkgNDkyMTMg
TUIvcw0NClsgICAgOS43NDkxOTJdIHJhaWQ2OiB1c2luZyBhbGdvcml0aG0gYXZ4MngyIGdlbigp
IDYzMjIxIE1CL3MNDQpbICAgIDkuODIzNDU3XSByYWlkNjogLi4uLiB4b3IoKSA1MDYwOSBNQi9z
LCBybXcgZW5hYmxlZA0NClsgICAgOS44MzAxNzJdIHJhaWQ2OiB1c2luZyBhdng1MTJ4MiByZWNv
dmVyeSBhbGdvcml0aG0NDQpbICAgIDkuODM3OTg2XSB4b3I6IGF1dG9tYXRpY2FsbHkgdXNpbmcg
YmVzdCBjaGVja3N1bW1pbmcgZnVuY3Rpb24gICBhdnggICAgICAgDQ0KWyAgICA5Ljg2MzE3NF0g
YXN5bmNfdHg6IGFwaSBpbml0aWFsaXplZCAoYXN5bmMpDQ0KWyAgICA5Ljg3NzEwMF0gdXNiIDct
OTogTmV3IFVTQiBkZXZpY2UgZm91bmQsIGlkVmVuZG9yPTI2Y2UsIGlkUHJvZHVjdD0wMWEyLCBi
Y2REZXZpY2U9IDAuMDANDQpbICAgIDkuODg3NTExXSB1c2IgNy05OiBOZXcgVVNCIGRldmljZSBz
dHJpbmdzOiBNZnI9MSwgUHJvZHVjdD0yLCBTZXJpYWxOdW1iZXI9Mw0NClsgICAgOS44OTY2OTZd
IHVzYiA3LTk6IFByb2R1Y3Q6IExFRCBDb250cm9sbGVyDQ0KWyAgICA5LjkwMjQyNV0gdXNiIDct
OTogTWFudWZhY3R1cmVyOiBBU1JvY2sNDQpbICAgIDkuOTA3OTUyXSB1c2IgNy05OiBTZXJpYWxO
dW1iZXI6IEEwMjAxOTEwMDkwMA0NClsgICAgOS45MTg4NDFdIGRldmljZS1tYXBwZXI6IHJhaWQ6
IExvYWRpbmcgdGFyZ2V0IHZlcnNpb24gMS4xNS4xDQ0KWyAgICA5LjkyNzQzMl0gdXNiIDctOC4x
OiBuZXcgZnVsbC1zcGVlZCBVU0IgZGV2aWNlIG51bWJlciA3IHVzaW5nIHhoY2lfaGNkDQ0KWyAg
ICA5Ljk0NzQ1Nl0gcjgxNjkgMDAwMDo0NzowMC4wIGVucDcxczA6IHJlbmFtZWQgZnJvbSBldGgy
DQ0KWyAgICA5Ljk1MDk4NF0gaW5wdXQ6IEFTUm9jayBMRUQgQ29udHJvbGxlciBhcyAvZGV2aWNl
cy9wY2kwMDAwOjQwLzAwMDA6NDA6MDMuMy8wMDAwOjQ0OjAwLjAvMDAwMDo0NTowYy4wLzAwMDA6
NDk6MDAuMC91c2I3LzctOS83LTk6MS4wLzAwMDM6MjZDRTowMUEyLjAwMDQvaW5wdXQvaW5wdXQy
DQ0KWyAgIDEwLjAwMzg5MV0gc2NzaSA2OjA6MDowOiBEaXJlYwpbICAgMTMuNjgwOTAwXSBsb2dp
dGVjaC1oaWRwcC1kZXZpY2UgMDAwMzowNDZEOjQwMTEuMDAwRDogaGlkcmF3NjogVVNCIEhJRCB2
MS4xMSBLZXlib2FyZCBbTG9naXRlY2ggV2lyZWxlc3MgVG91Y2hdIG9uIHVzYi0wMDAwOjQ5OjAw
LjAtOC4yL2lucHV0MjoxDQ0KWyAgIDEzLjgyODk2Nl0gaW5wdXQ6IExvZ2l0ZWNoIEs0MDAgYXMg
L2RldmljZXMvcGNpMDAwMDo0MC8wMDAwOjQwOjAzLjMvMDAwMDo0NDowMC4wLzAwMDA6NDU6MGMu
MC8wMDAwOjQ5OjAwLjAvdXNiNy83LTgvNy04LjIvNy04LjI6MS4yLzAwMDM6MDQ2RDpDNTJCLjAw
MDgvMDAwMzowNDZEOjQwMjQuMDAwRS9pbnB1dC9pbnB1dDI2DQ0KWyAgIDEzLjg1MTQ3OF0gbG9n
aXRlY2gtaGlkcHAtZGV2aWNlIDAwMDM6MDQ2RDo0MDI0LjAwMEU6IGlucHV0LGhpZHJhdzc6IFVT
QiBISUQgdjEuMTEgS2V5Ym9hcmQgW0xvZ2l0ZWNoIEs0MDBdIG9uIHVzYi0wMDAwOjQ5OjAwLjAt
OC4yL2lucHV0MjoyDQ0KQmVnaW46IExvYWRpbmcgZXNzZW50aWFsIGRyaXZlcnMgLi4uIGRvbmUu
DQ0KQmVnaW46IFJ1bm5pbmcgL3NjcmlwdHMvaW5pdC1wcmVtb3VudCAuLi4gZG9uZS4NDQpCZWdp
bjogTW91bnRpbmcgcm9vdCBmaWxlIHN5c3RlbSAuLi4gQmVnaW46IFJ1bm5pbmcgL3NjcmlwdHMv
bG9jYWwtdG9wIC4uLiBkb25lLg0NCkJlZ2luOiBSdW5uaW5nIC9zY3JpcHRzL2xvY2FsLXByZW1v
dW50IC4uLiBbICAgMTQuMTE2NDE0XSBCdHJmcyBsb2FkZWQsIGNyYzMyYz1jcmMzMmMtaW50ZWws
IHpvbmVkPXllcywgZnN2ZXJpdHk9eWVzDQ0KU2Nhbm5pbmcgZm9yIEJ0cmZzIGZpbGVzeXN0ZW1z
DQ0KcmVnaXN0ZXJlZDogL2Rldi9tYXBwZXIvbWVic3V0YS1tZWJzdXRhUm9vdDINDQpyZWdpc3Rl
cmVkOiAvZGV2L3NkZjMNDQpyZWdpc3RlcmVkOiAvZGV2L3NkZDENDQpyZWdpc3RlcmVkOiAvZGV2
L21hcHBlci9tZWJzdXRhLWZpbmFuY2UNDQpyZWdpc3RlcmVkOiAvZGV2L21hcHBlci9tZWJzdXRh
LXBvbGx1eFJvb3QNDQpyZWdpc3RlcmVkOiAvZGV2L21hcHBlci9tZWJzdXRhLW1lYnN1dGFSb290
DQ0KcmVnaXN0ZXJlZDogL2Rldi9tYXBwZXIvbWVic3V0YS1maW5hbmNlMg0NCnJlZ2lzdGVyZWQ6
IC9kZXYvbWFwcGVyL21lYnN1dGEtcG9sbHV4Um9vdDINDQpbICAgMTQuNjQ5MjgyXSBCVFJGUzog
ZGV2aWNlIGxhYmVsIEJ1dHRlclJvb3QgZGV2aWQgMiB0cmFuc2lkIDE1NyAvZGV2L21hcHBlci9t
ZWJzdXRhLXBvbGx1eFJvb3QyIHNjYW5uZWQgYnkgYnRyZnMgKDc1NikNDQpbICAgMTQuNjYzMDQ5
XSBCVFJGUzogZGV2aWNlIGxhYmVsIEJ1dHRlclJvb3QgZGV2aWQgMSB0cmFuc2lkIDE1NyAvZGV2
L21hcHBlci9tZWJzdXRhLXBvbGx1eFJvb3Qgc2Nhbm5lZCBieSBidHJmcyAoNzU2KQ0NClsgICAx
NC42NzY3OTJdIEJUUkZTOiBkZXZpY2UgbGFiZWwgTG93U2VjIGRldmlkIDIgdHJhbnNpZCAxMjAz
MyAvZGV2L21hcHBlci9tZWJzdXRhLWZpbmFuY2UyIHNjYW5uZWQgYnkgYnRyZnMgKDc1NikNDQpb
ICAgMTQuNjkwMzA2XSBCVFJGUzogZGV2aWNlIGxhYmVsIExvd1NlYyBkZXZpZCAxIHRyYW5zaWQg
MTIwMzMgL2Rldi9tYXBwZXIvbWVic3V0YS1maW5hbmNlIHNjYW5uZWQgYnkgYnRyZnMgKDc1NikN
DQpbICAgMTQuNzA0OTc0XSBCVFJGUzogZGV2aWNlIGxhYmVsIEJ1dHRlckJhbGwgZGV2aWQgMSB0
cmFuc2lkIDc0NjU5NzggL2Rldi9zZGQxIHNjYW5uZWQgYnkgYnRyZnMgKDc1NikNDQpbICAgMTQu
NzE3MjQ1XSBCVFJGUzogZGV2aWNlIGxhYmVsIEhlcHRNaWdmIGRldmlkIDEgdHJhbnNpZCAyMjc3
ODYgL2Rldi9zZGYzIHNjYW5uZWQgYnkgYnRyZnMgKDc1NikNDQpbICAgMTQuNzI5MTAwXSBCVFJG
UzogZGV2aWNlIGxhYmVsIE1lYnN1dGFSb290IGRldmlkIDEgdHJhbnNpZCAxMzgxIC9kZXYvbWFw
cGVyL21lYnN1dGEtbWVic3V0YVJvb3Qgc2Nhbm5lZCBieSBidHJmcyAoNzU2KQ0NClsgICAxNC43
NDMwODVdIEJUUkZTOiBkZXZpY2UgbGFiZWwgTWVic3V0YVJvb3QgZGV2aWQgMiB0cmFuc2lkIDEz
ODEgL2Rldi9tYXBwZXIvbWVic3V0YS1tZWJzdXRhUm9vdDIgc2Nhbm5lZCBieSBidHJmcyAoNzU2
KQ0NCmRvbmUuDQ0KQmVnaW46IFdpbGwgbm93IGNoZWNrIHJvb3QgZmlsZSBzeXN0ZW0gLi4uIGZz
Y2sgZnJvbSB1dGlsLWxpbnV4IDIuMzguMQ0NClsvc2Jpbi9mc2NrLmJ0cmZzICgxKSAtLSAvZGV2
L21hcHBlci9tZWJzdXRhLW1lYnN1dGFSb290Ml0gZnNjay5idHJmcyAtYSAvZGV2L21hcHBlci9t
ZWJzdXRhLW1lYnN1dGFSb290MiANDQpkb25lLg0NClsgICAxNC44MDA3OTldIEJUUkZTIGluZm8g
KGRldmljZSBkbS0wKTogZmlyc3QgbW91bnQgb2YgZmlsZXN5c3RlbSA5MjJiMTBmMi1hODI2LTQ3
ZmItYWIzOC04MzZmOWIzOTdmZjcNDQpbICAgMTQuODEyNzI5XSBCVFJGUyBpbmZvIChkZXZpY2Ug
ZG0tMCk6IHVzaW5nIGNyYzMyYyAoY3JjMzJjLWludGVsKSBjaGVja3N1bSBhbGdvcml0aG0NDQpb
ICAgMTQuODIyOTc3XSBCVFJGUyBpbmZvIChkZXZpY2UgZG0tMCk6IHVzaW5nIGZyZWUgc3BhY2Ug
dHJlZQ0NClsgICAxNC44MzM3MzRdIEJUUkZTIGluZm8gKGRldmljZSBkbS0wKTogZW5hYmxpbmcg
c3NkIG9wdGltaXphdGlvbnMNDQpbICAgMTQuODQxOTg4XSBCVFJGUyBpbmZvIChkZXZpY2UgZG0t
MCk6IHN0YXJ0IHRyZWUtbG9nIHJlcGxheQ0NCmRvbmUuDQ0KQmVnaW46IFJ1bm5pbmcgL3Njcmlw
dHMvbG9jYWwtYm90dG9tIC4uLiBkb25lLg0NCkJlZ2luOiBSdW5uaW5nIC9zY3JpcHRzL2luaXQt
Ym90dG9tIC4uLiBkb25lLg0NClsgICAxNC45MDQ1NjJdIE5vdCBhY3RpdmF0aW5nIE1hbmRhdG9y
eSBBY2Nlc3MgQ29udHJvbCBhcyAvc2Jpbi90b21veW8taW5pdCBkb2VzIG5vdCBleGlzdC4NDQpb
ICAgMTQuOTQzMjg2XSBzeXN0ZW1kWzFdOiBJbnNlcnRlZCBtb2R1bGUgJ2F1dG9mczQnDQ0KWyAg
IDE0Ljk2NTg3MV0gc3lzdGVtZFsxXTogc3lzdGVtZCAyNTIuMTktMX5kZWIxMnUxIHJ1bm5pbmcg
aW4gc3lzdGVtIG1vZGUgKCtQQU0gK0FVRElUICtTRUxJTlVYICtBUFBBUk1PUiArSU1BICtTTUFD
SyArU0VDQ09NUCArR0NSWVBUIC1HTlVUTFMgK09QRU5TU0wgK0FDTCArQkxLSUQgK0NVUkwgK0VM
RlVUSUxTICtGSURPMiArSUROMiAtSUROICtJUFRDICtLTU9EICtMSUJDUllQVFNFVFVQICtMSUJG
RElTSyArUENSRTIgLVBXUVVBTElUWSArUDExS0lUICtRUkVOQ09ERSArVFBNMiArQlpJUDIgK0xa
NCArWFogK1pMSUIgK1pTVEQgLUJQRl9GUkFNRVdPUksgLVhLQkNPTU1PTiArVVRNUCArU1lTVklO
SVQgZGVmYXVsdC1oaWVyYXJjaHk9dW5pZmllZCkNDQpbICAgMTUuMDA3OTcyXSBzeXN0ZW1kWzFd
OiBEZXRlY3RlZCB2aXJ0dWFsaXphdGlvbiB4ZW4uDQ0KWyAgIDE1LjAxNTIzN10gc3lzdGVtZFsx
XTogRGV0ZWN0ZWQgYXJjaGl0ZWN0dXJlIHg4Ni02NC4NDQoNDQpXZWxjb21lIHRvIBtbMW1EZWJp
YW4gR05VL0xpbnV4IDEyIChib29rd29ybSkbWzBtIQ0NCg0NClsgICAxNS4wMjkwMjJdIHN5c3Rl
bWRbMV06IEhvc3RuYW1lIHNldCB0byA8bWVic3V0YT4uDQ0KWyAgIDE1LjExMjg5NV0gc3lzdGVt
ZFsxXTogUXVldWVkIHN0YXJ0IGpvYiBmb3IgZGVmYXVsdCB0YXJnZXQgZ3JhcGhpY2FsLnRhcmdl
dC4NDQpbICAgMTUuMTQ0NDU1XSBzeXN0ZW1kWzFdOiBDcmVhdGVkIHNsaWNlIHN5c3RlbS1nZXR0
eS5zbGljZSAtIFNsaWNlIC9zeXN0ZW0vZ2V0dHkuDQ0KWxtbMDszMm0gIE9LICAbWzBtXSBDcmVh
dGVkIHNsaWNlIBtbMDsxOzM5bXN5c3RlbS1nZXR0eS5zbGljZRtbMG0gLSBTbGljZSAvc3lzdGVt
L2dldHR5Lg0NClsgICAxNS4xNjI5MTZdIHN5c3RlbWRbMV06IENyZWF0ZWQgc2xpY2Ugc3lzdGVt
LW1vZHByb2JlLnNsaWNlIC0gU2xpY2UgL3N5c3RlbS9tb2Rwcm9iZS4NDQpbG1swOzMybSAgT0sg
IBtbMG1dIENyZWF0ZWQgc2xpY2UgG1swOzE7Mzltc3lzdGVtLW1vZHBy4oCmbGljZRtbMG0gLSBT
bGljZSAvc3lzdGVtL21vZHByb2JlLg0NClsgICAxNS4xODI0MDNdIHN5c3RlbWRbMV06IENyZWF0
ZWQgc2xpY2Ugc3lzdGVtLXNlcmlhbFx4MmRnZXR0eS5zbGljZSAtIFNsaWNlIC9zeXN0ZW0vc2Vy
aWFsLWdldHR5Lg0NClsbWzA7MzJtICBPSyAgG1swbV0gQ3JlYXRlZCBzbGljZSAbWzA7MTszOW1z
eXN0ZW0tc2VyaWHigKYbWzBtIC0gU2xpY2UgL3N5c3RlbS9zZXJpYWwtZ2V0dHkuDQ0KWyAgIDE1
LjIwMjg1MF0gc3lzdGVtZFsxXTogQ3JlYXRlZCBzbGljZSBzeXN0ZW0tc3lzdGVtZFx4MmRmc2Nr
LnNsaWNlIC0gU2xpY2UgL3N5c3RlbS9zeXN0ZW1kLWZzY2suDQ0KWxtbMDszMm0gIE9LICAbWzBt
XSBDcmVhdGVkIHNsaWNlIBtbMDsxOzM5bXN5c3RlbS1zeXN0ZeKAphtbMG0gLSBTbGljZSAvc3lz
dGVtL3N5c3RlbWQtZnNjay4NDQpbICAgMTUuMjIzMjE0XSBzeXN0ZW1kWzFdOiBDcmVhdGVkIHNs
aWNlIHVzZXIuc2xpY2UgLSBVc2VyIGFuZCBTZXNzaW9uIFNsaWNlLg0NClsbWzA7MzJtICBPSyAg
G1swbV0gQ3JlYXRlZCBzbGljZSAbWzA7MTszOW11c2VyLnNsaWNlG1swbSAtIFVzZXIgYW5kIFNl
c3Npb24gU2xpY2UuDQ0KWyAgIDE1LjI0MDM5OV0gc3lzdGVtZFsxXTogU3RhcnRlZCBzeXN0ZW1k
LWFzay1wYXNzd29yZC1jb25zb2xlLnBhdGggLSBEaXNwYXRjaCBQYXNzd29yZCBSZXF1ZXN0cyB0
byBDb25zb2xlIERpcmVjdG9yeSBXYXRjaC4NDQpbG1swOzMybSAgT0sgIBtbMG1dIFN0YXJ0ZWQg
G1swOzE7Mzltc3lzdGVtZC1hc2stcGFzc3dv4oCmcXVlc3RzIHRvIENvbnNvbGUgRGlyZWN0b3J5
IFdhdGNoLg0NClsgICAxNS4yNjMyOTFdIHN5c3RlbWRbMV06IFN0YXJ0ZWQgc3lzdGVtZC1hc2st
cGFzc3dvcmQtd2FsbC5wYXRoIC0gRm9yd2FyZCBQYXNzd29yZCBSZXF1ZXN0cyB0byBXYWxsIERp
cmVjdG9yeSBXYXRjaC4NDQpbG1swOzMybSAgT0sgIBtbMG1dIFN0YXJ0ZWQgG1swOzE7Mzltc3lz
dGVtZC1hc2stcGFzc3dv4oCmIFJlcXVlc3RzIHRvIFdhbGwgRGlyZWN0b3J5IFdhdGNoLg0NClsg
ICAxNS4yODUzMTBdIHN5c3RlbWRbMV06IFNldCB1cCBhdXRvbW91bnQgcHJvYy1zeXMtZnMtYmlu
Zm10X21pc2MuYXV0b21vdW50IC0gQXJiaXRyYXJ5IEV4ZWN1dGFibGUgRmlsZSBGb3JtYXRzIEZp
bGUgU3lzdGVtIEF1dG9tb3VudCBQb2ludC4NDQpbG1swOzMybSAgT0sgIBtbMG1dIFNldCB1cCBh
dXRvbW91bnQgG1swOzE7MzltcHJvYy1zeXMt4oCmcm1hdHMgRmlsZSBTeXN0ZW0gQXV0b21vdW50
IFBvaW50Lg0NClsgICAxNS4zMDk2MzVdIHN5c3RlbWRbMV06IFJlYWNoZWQgdGFyZ2V0IGNyeXB0
c2V0dXAudGFyZ2V0IC0gTG9jYWwgRW5jcnlwdGVkIFZvbHVtZXMuDQ0KWxtbMDszMm0gIE9LICAb
WzBtXSBSZWFjaGVkIHRhcmdldCAbWzA7MTszOW1jcnlwdHNldHVwLuKApmdldBtbMG0gLSBMb2Nh
bCBFbmNyeXB0ZWQgVm9sdW1lcy4NDQpbICAgMTUuMzI4NDkxXSBzeXN0ZW1kWzFdOiBSZWFjaGVk
IHRhcmdldCBpbnRlZ3JpdHlzZXR1cC50YXJnZXQgLSBMb2NhbCBJbnRlZ3JpdHkgUHJvdGVjdGVk
IFZvbHVtZXMuDQ0KWxtbMDszMm0gIE9LICAbWzBtXSBSZWFjaGVkIHRhcmdldCAbWzA7MTszOW1p
bnRlZ3JpdHlzZeKApkxvY2FsIEludGVncml0eSBQcm90ZWN0ZWQgVm9sdW1lcy4NDQpbICAgMTUu
MzQ4Njc0XSBzeXN0ZW1kWzFdOiBSZWFjaGVkIHRhcmdldCBwYXRocy50YXJnZXQgLSBQYXRoIFVu
aXRzLg0NClsbWzA7MzJtICBPSyAgG1swbV0gUmVhY2hlZCB0YXJnZXQgG1swOzE7MzltcGF0aHMu
dGFyZ2V0G1swbSAtIFBhdGggVW5pdHMuDQ0KWyAgIDE1LjM2NDAyNl0gc3lzdGVtZFsxXTogUmVh
Y2hlZCB0YXJnZXQgcmVtb3RlLWZzLnRhcmdldCAtIFJlbW90ZSBGaWxlIFN5c3RlbXMuDQ0KWxtb
MDszMm0gIE9LICAbWzBtXSBSZWFjaGVkIHRhcmdldCAbWzA7MTszOW1yZW1vdGUtZnMudGFyZ2V0
G1swbSAtIFJlbW90ZSBGaWxlIFN5c3RlbXMuDQ0KWyAgIDE1LjM4MTg2M10gc3lzdGVtZFsxXTog
UmVhY2hlZCB0YXJnZXQgc2xpY2VzLnRhcmdldCAtIFNsaWNlIFVuaXRzLg0NClsbWzA7MzJtICBP
SyAgG1swbV0gUmVhY2hlZCB0YXJnZXQgG1swOzE7Mzltc2xpY2VzLnRhcmdldBtbMG0gLSBTbGlj
ZSBVbml0cy4NDQpbICAgMTUuMzk3NjA2XSBzeXN0ZW1kWzFdOiBSZWFjaGVkIHRhcmdldCBzd2Fw
LnRhcmdldCAtIFN3YXBzLg0NClsbWzA7MzJtICBPSyAgG1swbV0gUmVhY2hlZCB0YXJnZXQgG1sw
OzE7Mzltc3dhcC50YXJnZXQbWzBtIC0gU3dhcHMuDQ0KWyAgIDE1LjQxMTY5N10gc3lzdGVtZFsx
XTogUmVhY2hlZCB0YXJnZXQgdmVyaXR5c2V0dXAudGFyZ2V0IC0gTG9jYWwgVmVyaXR5IFByb3Rl
Y3RlZCBWb2x1bWVzLg0NClsbWzA7MzJtICBPSyAgG1swbV0gUmVhY2hlZCB0YXJnZXQgG1swOzE7
MzltdmVyaXR5c2V0dXDigKYgLSBMb2NhbCBWZXJpdHkgUHJvdGVjdGVkIFZvbHVtZXMuDQ0KWyAg
IDE1LjQzMTI5N10gc3lzdGVtZFsxXTogTGlzdGVuaW5nIG9uIGRtLWV2ZW50LnNvY2tldCAtIERl
dmljZS1tYXBwZXIgZXZlbnQgZGFlbW9uIEZJRk9zLg0NClsbWzA7MzJtICBPSyAgG1swbV0gTGlz
dGVuaW5nIG9uIBtbMDsxOzM5bWRtLWV2ZW50LnNvY2vigKYgRGV2aWNlLW1hcHBlciBldmVudCBk
YWVtb24gRklGT3MuDQ0KWyAgIDE1LjQ1MDQ5MF0gc3lzdGVtZFsxXTogTGlzdGVuaW5nIG9uIGx2
bTItbHZtcG9sbGQuc29ja2V0IC0gTFZNMiBwb2xsIGRhZW1vbiBzb2NrZXQuDQ0KWxtbMDszMm0g
IE9LICAbWzBtXSBMaXN0ZW5pbmcgb24gG1swOzE7MzltbHZtMi1sdm1wb2xsZOKApmtldBtbMG0g
LSBMVk0yIHBvbGwgZGFlbW9uIHNvY2tldC4NDQpbICAgMTUuNDY5MTg1XSBzeXN0ZW1kWzFdOiBM
aXN0ZW5pbmcgb24gc3lzdGVtZC1mc2NrZC5zb2NrZXQgLSBmc2NrIHRvIGZzY2tkIGNvbW11bmlj
YXRpb24gU29ja2V0Lg0NClsbWzA7MzJtICBPSyAgG1swbV0gTGlzdGVuaW5nIG9uIBtbMDsxOzM5
bXN5c3RlbWQtZnNja2TigKZzY2sgdG8gZnNja2QgY29tbXVuaWNhdGlvbiBTb2NrZXQuDQ0KWyAg
IDE1LjQ4OTA1NF0gc3lzdGVtZFsxXTogTGlzdGVuaW5nIG9uIHN5c3RlbWQtaW5pdGN0bC5zb2Nr
ZXQgLSBpbml0Y3RsIENvbXBhdGliaWxpdHkgTmFtZWQgUGlwZS4NDQpbG1swOzMybSAgT0sgIBtb
MG1dIExpc3RlbmluZyBvbiAbWzA7MTszOW1zeXN0ZW1kLWluaXRj4oCmIGluaXRjdGwgQ29tcGF0
aWJpbGl0eSBOYW1lZCBQaXBlLg0NClsgICAxNS41MDkxMzNdIHN5c3RlbWRbMV06IExpc3Rlbmlu
ZyBvbiBzeXN0ZW1kLWpvdXJuYWxkLWF1ZGl0LnNvY2tldCAtIEpvdXJuYWwgQXVkaXQgU29ja2V0
Lg0NClsbWzA7MzJtICBPSyAgG1swbV0gTGlzdGVuaW5nIG9uIBtbMDsxOzM5bXN5c3RlbWQtam91
cm7igKZzb2NrZXQbWzBtIC0gSm91cm5hbCBBdWRpdCBTb2NrZXQuDQ0KWyAgIDE1LjUyOTEwMF0g
c3lzdGVtZFsxXTogTGlzdGVuaW5nIG9uIHN5c3RlbWQtam91cm5hbGQtZGV2LWxvZy5zb2NrZXQg
LSBKb3VybmFsIFNvY2tldCAoL2Rldi9sb2cpLg0NClsbWzA7MzJtICBPSyAgG1swbV0gTGlzdGVu
aW5nIG9uIBtbMDsxOzM5bXN5c3RlbWQtam91cm7igKZ0G1swbSAtIEpvdXJuYWwgU29ja2V0ICgv
ZGV2L2xvZykuDQ0KWyAgIDE1LjU0OTcwN10gc3lzdGVtZFsxXTogTGlzdGVuaW5nIG9uIHN5c3Rl
bWQtam91cm5hbGQuc29ja2V0IC0gSm91cm5hbCBTb2NrZXQuDQ0KWxtbMDszMm0gIE9LICAbWzBt
XSBMaXN0ZW5pbmcgb24gG1swOzE7Mzltc3lzdGVtZC1qb3VybmFsZC5zb2NrZXQbWzBtIC0gSm91
cm5hbCBTb2NrZXQuDQ0KWyAgIDE1LjU2ODAxOV0gc3lzdGVtZFsxXTogTGlzdGVuaW5nIG9uIHN5
c3RlbWQtdWRldmQtY29udHJvbC5zb2NrZXQgLSB1ZGV2IENvbnRyb2wgU29ja2V0Lg0NClsbWzA7
MzJtICBPSyAgG1swbV0gTGlzdGVuaW5nIG9uIBtbMDsxOzM5bXN5c3RlbWQtdWRldmTigKYuc29j
a2V0G1swbSAtIHVkZXYgQ29udHJvbCBTb2NrZXQuDQ0KWyAgIDE1LjU4NzY2MV0gc3lzdGVtZFsx
XTogTGlzdGVuaW5nIG9uIHN5c3RlbWQtdWRldmQta2VybmVsLnNvY2tldCAtIHVkZXYgS2VybmVs
IFNvY2tldC4NDQpbG1swOzMybSAgT0sgIBtbMG1dIExpc3RlbmluZyBvbiAbWzA7MTszOW1zeXN0
ZW1kLXVkZXZk4oCmbC5zb2NrZXQbWzBtIC0gdWRldiBLZXJuZWwgU29ja2V0Lg0NClsgICAxNS42
MzE1MjJdIHN5c3RlbWRbMV06IE1vdW50aW5nIGRldi1odWdlcGFnZXMubW91bnQgLSBIdWdlIFBh
Z2VzIEZpbGUgU3lzdGVtLi4uDQ0KICAgICAgICAgTW91bnRpbmcgG1swOzE7MzltZGV2LWh1Z2Vw
YWdlcy5tb3VudBtbMG0gLSBIdWdlIFBhZ2VzIEZpbGUgU3lzdGVtLi4uDQ0KWyAgIDE1LjY0OTQx
MV0gc3lzdGVtZFsxXTogTW91bnRpbmcgZGV2LW1xdWV1ZS5tb3VudCAtIFBPU0lYIE1lc3NhZ2Ug
UXVldWUgRmlsZSBTeXN0ZW0uLi5jZWVkZWQgaW4gMSB1c2Vjcw0NClsgICAxOC4zMjEyMzRdIFtk
cm1dIGFkZCBpcCBibG9jayBudW1iZXIgMSA8Z21jX3Y4XzA+DQ0KWyAgIDE4LjMyNjkwOV0gW2Ry
bV0gcmluZyB0ZXN0IG9uIDEgc3VjY2VlZGVkIGluIDEgdXNlY3MNDQpbICAgMTguMzI2OTEzXSBb
ZHJtXSByaW5nIHRlc3Qgb24gMiBzdWNjZWVkZWQgaW4gMSB1c2Vjcw0NClsgICAxOC4zMzI4MjFd
IFtkcm1dIGFkZCBpcCBibG9jayBudW1iZXIgMiA8dG9uZ2FfaWg+DQ0KWyAgIDE4LjMzMjgyM10g
W2RybV0gYWRkIGlwIGJsb2NrIG51bWJlciAzIDxnZnhfdjhfMD4NDQpbICAgMTguMzMyODI0XSBb
ZHJtXSBhZGQgaXAgYmxvY2sgbnVtYmVyIDQgPHNkbWFfdjNfMD4NDQpbICAgMTguMzMyODI1XSBb
ZHJtXSBhZGQgaXAgYmxvY2sgbnVtYmVyIDUgPHBvd2VycGxheT4NDQpbICAgMTguMzMyODI2XSBb
ZHJtXSBhZGQgaXAgYmxvY2sgbnVtYmVyIDYgPGRtPg0NClsgICAxOC4zMzI4MjZdIFtkcm1dIGFk
ZCBpcCBibG9jayBudW1iZXIgNyA8dXZkX3Y2XzA+DQ0KWyAgIDE4LjMzMjgyN10gW2RybV0gYWRk
IGlwIGJsb2NrIG51bWJlciA4IDx2Y2VfdjNfMD4NDQpbICAgMTguMzM4NDY1XSBbZHJtXSByaW5n
IHRlc3Qgb24gMyBzdWNjZWVkZWQgaW4gMyB1c2Vjcw0NClsgICAxOC4zNTA3MzBdIGFtZGdwdSAw
MDAwOjAxOjAwLjA6IGFtZGdwdTogRmV0Y2hlZCBWQklPUyBmcm9tIFZGQ1QNDQpbICAgMTguMzU2
MTk0XSBbZHJtXSByaW5nIHRlc3Qgb24gNCBzdWNjZWVkZWQgaW4gMyB1c2Vjcw0NClsgICAxOC4z
NjE3MDRdIGFtZGdwdTogQVRPTSBCSU9TOiAxMTMtVjM0MTExLUYxDQ0KWyAgIDE4LjM2MTcyMV0g
W2RybV0gVVZEIGlzIGVuYWJsZWQgaW4gVk0gbW9kZQ0NClsgICAxOC4zODY5MDZdIHVzYmNvcmU6
IHJlZ2lzdGVyZWQgbmV3IGludGVyZmFjZSBkcml2ZXIgc25kLXVzYi1hdWRpbw0NClsgICAxOC4z
OTAzNDddIFtkcm1dIFVWRCBFTkMgaXMgZW5hYmxlZCBpbiBWTSBtb2RlDQ0KWyAgIDE4LjM5MDM0
OV0gW2RybV0gVkNFIGVuYWJsZWQgaW4gVk0gbW9kZQ0NClsgICAxOC4zOTY0NzZdIG10NzkyMWUg
MDAwMDo0NjowMC4wOiBlbmFibGluZyBkZXZpY2UgKDAwMDAgLT4gMDAwMikNDQpbICAgMTguNDU0
NDM1XSBDb25zb2xlOiBzd2l0Y2hpbmcgdG8gY29sb3VyIGR1bW15IGRldmljZSA4MHgyNQ0NClsg
ICAxOC40NjExNThdIGFtZGdwdSAwMDAwOjAxOjAwLjA6IGFtZGdwdTogVHJ1c3RlZCBNZW1vcnkg
Wm9uZSAoVE1aKSBmZWF0dXJlIG5vdCBzdXBwb3J0ZWQNDQpbICAgMTguNDcwNTM0XSBbZHJtXSB2
bSBzaXplIGlzIDY0IEdCLCAyIGxldmVscywgYmxvY2sgc2l6ZSBpcyAxMC1iaXQsIGZyYWdtZW50
IHNpemUgaXMgOS1iaXQNDQpbICAgMTguNDcxNDgwXSBtdDc5MjFlIDAwMDA6NDY6MDAuMDogQVNJ
QyByZXZpc2lvbjogNzkyMjAwMTANDQpbICAgMTguNDgwNjcyXSBhbWRncHUgMDAwMDowMTowMC4w
OiBmaXJtd2FyZTogZGlyZWN0LWxvYWRpbmcgZmlybXdhcmUgYW1kZ3B1L3BvbGFyaXMxMF9tYy5i
aW4NDQpbICAgMTguNDk2MDg0XSBhbWRncHUgMDAwMDowMTowMC4wOiBhbWRncHU6IFZSQU06IDQw
OTZNIDB4MDAwMDAwRjQwMDAwMDAwMCAtIDB4MDAwMDAwRjRGRkZGRkZGRiAoNDA5Nk0gdXNlZCkN
DQpbICAgMTguNTA3MjQ5XSBhbWRncHUgMDAwMDowMTowMC4wOiBhbWRncHU6IEdBUlQ6IDI1Nk0g
MHgwMDAwMDBGRjAwMDAwMDAwIC0gMHgwMDAwMDBGRjBGRkZGRkZGDQ0KWyAgIDE4LjUxNzAxNl0g
W2RybV0gRGV0ZWN0ZWQgVlJBTSBSQU09NDA5Nk0sIEJBUj00MDk2TQ0NClsgICAxOC41MTczMzFd
IEJsdWV0b290aDogQ29yZSB2ZXIgMi4yMg0NClsgICAxOC41MjI4NjRdIFtkcm1dIFJBTSB3aWR0
aCAyNTZiaXRzIEdERFI1DQ0KWyAgIDE4LjUyNzAzMV0gTkVUOiBSZWdpc3RlcmVkIFBGX0JMVUVU
T09USCBwcm90b2NvbCBmYW1pbHkNDQpbICAgMTguNTI3NDUxXSBpbnB1dDogSERBIEFUSSBIRE1J
IEhETUkvRFAscGNtPTMgYXMgL2RldmljZXMvcGNpMDAwMDo0MC8wMDAwOjQwOjAxLjEvMDAwMDo0
MTowMC4xL3NvdW5kL2NhcmQxL2lucHV0MzENDQpbICAgMTguNTI3NTM3XSBpbnB1dDogSERBIEFU
SSBIRE1JIEhETUkvRFAscGNtPTcgYXMgL2RldmljZXMvcGNpMDAwMDo0MC8wMDAwOjQwOjAxLjEv
MDAwMDo0MTowMC4xL3NvdW5kL2NhcmQxL2lucHV0MzINDQpbICAgMTguNTMxNzc2XSBbZHJtXSBh
bWRncHU6IDQwOTZNIG9mIFZSQU0gbWVtb3J5IHJlYWR5DQ0KWyAgIDE4LjUzNzk3M10gQmx1ZXRv
b3RoOiBIQ0kgZGV2aWNlIGFuZCBjb25uZWN0aW9uIG1hbmFnZXIgaW5pdGlhbGl6ZWQNDQpbICAg
MTguNTM3OTgwXSBCbHVldG9vdGg6IEhDSSBzb2NrZXQgbGF5ZXIgaW5pdGlhbGl6ZWQNDQpbICAg
MTguNTQzNzQ0XSBbZHJtXSByaW5nIHRlc3Qgb24gNSBzdWNjZWVkZWQgaW4gMiB1c2Vjcw0NClsg
ICAxOC41NDM3NDldIFtkcm1dIFVWRCBpbml0aWFsaXplZCBzdWNjZXNzZnVsbHkuDQ0KWyAgIDE4
LjU0MzgyOV0gW2RybV0gaWIgdGVzdCBvbiByaW5nIDAgc3VjY2VlZGVkIGluIDAgdXNlY3MNDQpb
ICAgMTguNTQzODU3XSBbZHJtXSBpYiB0ZXN0IG9uIHJpbmcgMSBzdWNjZWVkZWQgaW4gMCB1c2Vj
cw0NClsgICAxOC41NDM4ODRdIFtkcm1dIGliIHRlc3Qgb24gcmluZyAyIHN1Y2NlZWRlZCBpbiAw
IHVzZWNzDQ0KWyAgIDE4LjU0MzkxMF0gW2RybV0gaWIgdGVzdCBvbiByaW5nIDMgc3VjY2VlZGVk
IGluIDAgdXNlY3MNDQpbICAgMTguNTQzOTM1XSBbZHJtXSBpYiB0ZXN0IG9uIHJpbmcgNCBzdWNj
ZWVkZWQgaW4gMCB1c2Vjcw0NClsgICAxOC41NTAwMjFdIFtkcm1dIGFtZGdwdTogMzk2Mk0gb2Yg
R1RUIG1lbW9yeSByZWFkeS4NDQpbICAgMTguNTUwMDM4XSBbZHJtXSBHQVJUOiBudW0gY3B1IHBh
Z2VzIDY1NTM2LCBudW0gZ3B1IHBhZ2VzIDY1NTM2DQ0KWyAgIDE4LjU2MTk4NV0gQmx1ZXRvb3Ro
OiBMMkNBUCBzb2NrZXQgbGF5ZXIgaW5pdGlhbGl6ZWQNDQpbICAgMTguNTY5MDYyXSBbZHJtXSBQ
Q0lFIEdBUlQgb2YgMjU2TSBlbmFibGVkICh0YWJsZSBhdCAweDAwMDAwMEY0MDBFODAwMDApLg0N
ClsgICAxOC41NzUxNDJdIEJsdWV0b290aDogU0NPIHNvY2tldCBsYXllciBpbml0aWFsaXplZA0N
ClsgICAxOC41ODEyODVdIGFtZGdwdSAwMDAwOjAxOjAwLjA6IGZpcm13YXJlOiBkaXJlY3QtbG9h
ZGluZyBmaXJtd2FyZSBhbWRncHUvcG9sYXJpczEwX3BmcF8yLmJpbg0NClsgICAxOC41ODY4NjJd
IG10NzkyMWUgMDAwMDo0NjowMC4wOiBmaXJtd2FyZTogZGlyZWN0LWxvYWRpbmcgZmlybXdhcmUg
bWVkaWF0ZWsvV0lGSV9NVDc5MjJfcGF0Y2hfbWN1XzFfMV9oZHIuYmluDQ0KWyAgIDE4LjU5MjM2
NV0gYW1kZ3B1IDAwMDA6MDE6MDAuMDogZmlybXdhcmU6IGRpcmVjdC1sb2FkaW5nIGZpcm13YXJl
IGFtZGdwdS9wb2xhcmlzMTBfbWVfMi5iaW4NDQpbICAgMTguNTk4MjQzXSBtdDc5MjFlIDAwMDA6
NDY6MDAuMDogSFcvU1cgVmVyc2lvbjogMHg4YTEwOGExMCwgQnVpbGQgVGltZTogMjAyMjEyMjcx
MjMxNTRhDQ0KWyAgIDE4LjU5ODI0M10gDQ0KWyAgIDE4LjYwNDQ2Ml0gYW1kZ3B1IDAwMDA6MDE6
MDAuMDogZmlybXdhcmU6IGRpcmVjdC1sb2FkaW5nIGZpcm13YXJlIGFtZGdwdS9wb2xhcmlzMTBf
Y2VfMi5iaW4NDQpbICAgMTguNjI0OTU3XSBtdDc5MjFlIDAwMDA6NDY6MDAuMDogZmlybXdhcmU6
IGRpcmVjdC1sb2FkaW5nIGZpcm13YXJlIG1lZGlhdGVrL1dJRklfUkFNX0NPREVfTVQ3OTIyXzEu
YmluDQ0KWyAgIDE4LjYyODY2MV0gW2RybV0gQ2hhaW5lZCBJQiBzdXBwb3J0IGVuYWJsZWQhDQ0K
WyAgIDE4LjYzNTY5M10gbXQ3OTIxZSAwMDAwOjQ2OjAwLjA6IFdNIEZpcm13YXJlIFZlcnNpb246
IF9fX18wMDAwMDAsIEJ1aWxkIFRpbWU6IDIwMjIxMjI3MTIzMjQzDQ0KWyAgIDE4LjY4Mjc3OF0g
bXQ3OTIxZSAwMDAwOjQ2OjAwLjA6IGZpcm13YXJlOiBkaXJlY3QtbG9hZGluZyBmaXJtd2FyZSBt
ZWRpYXRlay9XSUZJX1JBTV9DT0RFX01UNzkyMl8xLmJpbg0NClsgICAxOC42ODY5NjFdIGFtZGdw
dSAwMDAwOjAxOjAwLjA6IGZpcm13YXJlOiBkaXJlY3QtbG9hZGluZyBmaXJtd2FyZSBhbWRncHUv
cG9sYXJpczEwX3JsYy5iaW4NDQogICAgICAgICBNb3VudGluZyAbWzA7MTszOW1ib290LWVmaS5t
b3VudBtbMG0gLSAvYm9vdC9lZmkuLi5bICAgMTguNzUzOTE0XSBhDQ0KbWRncHUgMDAwMDowMTow
MC4wOiBmaXJtd2FyZTogZGlyZWN0LWxvYWRpbmcgZmlybXdhcmUgYW1kZ3B1L3BvbGFyaXMxMF9t
ZWNfMi5iaW4NDQpbG1swOzMybSAgT0sgIBtbMG1dIFJlYWNoZWQgdGFyZ2V0IBtbMDsxOzM5bXNv
dW5kLnRhcmdldBtbMG0gLSBTb3VuZCBDYXJkLlsgICAxOC43NzAxODJdIGENDQptZGdwdSAwMDAw
OjAxOjAwLjA6IGZpcm13YXJlOiBkaXJlY3QtbG9hZGluZyBmaXJtd2FyZSBhbWRncHUvcG9sYXJp
czEwX21lYzJfMi5iaW4NDQpbG1swOzMybSAgT0sgIBtbMG1dIExpc3RlbmluZyBvbiAbWzA7MTsz
OW1zeXN0ZW1kLXJma2ls4oCmbCBTd2l0Y2ggU3RhdHVzIC9kZXYvcmZraWxsIFdhdGNoLlsgICAx
OC43ODc4OThdIGENDQptZGdwdSAwMDAwOjAxOjAwLjA6IGZpcm13YXJlOiBkaXJlY3QtbG9hZGlu
ZyBmaXJtd2FyZSBhbWRncHUvcG9sYXJpczEwX3NkbWEuYmluDQ0KWyAgIDE4LjgwNzE2MV0gYW1k
Z3B1IDAwMDA6MDE6MDAuMDogZmlybXdhcmU6IGRpcmVjdC1sb2FkaW5nIGZpcm13YXJlIGFtZGdw
dS9wb2xhcmlzMTBfc2RtYTEuYmluDQ0KWyAgIDE4LjgxNzA2OF0gYW1kZ3B1OiBod21ncl9zd19p
bml0IHNtdSBiYWNrZWQgaXMgcG9sYXJpczEwX3NtdQ0NClsgICAxOC44MjQxOTBdIGFtZGdwdSAw
MDAwOjAxOjAwLjA6IGZpcm13YXJlOiBkaXJlY3QtbG9hZGluZyBmaXJtd2FyZSBhbWRncHUvcG9s
YXJpczEwX3V2ZC5iaW4NDQpbICAgMTguODMzODUzXSBbZHJtXSBGb3VuZCBVVkQgZmlybXdhcmUg
VmVyc2lvbjogMS4xMzAgRmFtaWx5ClsgICAyMC45Nzk0MjNdIGFtZGdwdSAwMDAwOjAxOjAwLjA6
IFtkcm06YW1kZ3B1X2liX3JpbmdfdGVzdHMgW2FtZGdwdV1dICpFUlJPUiogSUIgdGVzdCBmYWls
ZWQgb24gdXZkICgtMTEwKS4NDQpbICAgMjIuMDAzNDE0XSBhbWRncHUgMDAwMDowMTowMC4wOiBb
ZHJtOmFtZGdwdV9pYl9yaW5nX3Rlc3RzIFthbWRncHVdXSAqRVJST1IqIElCIHRlc3QgZmFpbGVk
IG9uIHV2ZF9lbmMwICgtMTEwKS4NDQpbICAgMjIuNzg5ODYxXSByODE2OSAwMDAwOjg3OjAwLjAg
ZW5wMTM1czA6IExpbmsgaXMgVXAgLSAxR2Jwcy9GdWxsIC0gZmxvdyBjb250cm9sIHJ4L3R4DQ0K
WyAgIDIyLjc5ODc5MF0gSVB2NjogQUREUkNPTkYoTkVUREVWX0NIQU5HRSk6IGVucDEzNXMwOiBs
aW5rIGJlY29tZXMgcmVhZHkNDQpbICAgMjMuMDI3NDE4XSBhbWRncHUgMDAwMDowMTowMC4wOiBb
ZHJtOmFtZGdwdV9pYl9yaW5nX3Rlc3RzIFthbWRncHVdXSAqRVJST1IqIElCIHRlc3QgZmFpbGVk
IG9uIHV2ZF9lbmMxICgtMTEwKS4NDQpbICAgMjMuMTM4NzQyXSBhbWRncHUgMDAwMDowMTowMC4w
OiBhbWRncHU6IA0NClsgICAyMy4xMzg3NDJdIGxhc3QgbWVzc2FnZSB3YXMgZmFpbGVkIHJldCBp
cyA2NTUzNQ0NClsgICAyNC4xNzk0MDVdIGFtZGdwdSAwMDAwOjAxOjAwLjA6IFtkcm06YW1kZ3B1
X2liX3JpbmdfdGVzdHMgW2FtZGdwdV1dICpFUlJPUiogSUIgdGVzdCBmYWlsZWQgb24gdmNlMCAo
LTExMCkuDQ0KWyAgIDI0LjE5MDg4Ml0gW2RybTpwcm9jZXNzX29uZV93b3JrXSAqRVJST1IqIGli
IHJpbmcgdGVzdCBmYWlsZWQgKC0xMTApLg0NCihYRU4pIEhhcmR3YXJlIERvbTAgc2h1dGRvd246
IHJlYm9vdGluZyBtYWNoaW5lDQooWEVOKSBBUElDIGVycm9yIG9uIENQVTA6IDAwKDA4KSwgUmVj
ZWl2ZSBhY2NlcHQgZXJyb3INCg==
--0000000000001a0282060fba2598--


From xen-devel-bounces@lists.xenproject.org Thu Jan 25 01:15:13 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 25 Jan 2024 01:15:13 +0000
Received: from list by lists.xenproject.org with outflank-mailman.671312.1044575 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSoKY-0002sY-0o; Thu, 25 Jan 2024 01:14:58 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 671312.1044575; Thu, 25 Jan 2024 01:14:57 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSoKX-0002sR-UJ; Thu, 25 Jan 2024 01:14:57 +0000
Received: by outflank-mailman (input) for mailman id 671312;
 Thu, 25 Jan 2024 01:14:56 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=+DBC=JD=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1rSoKW-0002sL-NJ
 for xen-devel@lists.xenproject.org; Thu, 25 Jan 2024 01:14:56 +0000
Received: from mail-wm1-x331.google.com (mail-wm1-x331.google.com
 [2a00:1450:4864:20::331])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 25e9cf94-bb1f-11ee-98f5-6d05b1d4d9a1;
 Thu, 25 Jan 2024 02:14:55 +0100 (CET)
Received: by mail-wm1-x331.google.com with SMTP id
 5b1f17b1804b1-40e80046264so77184345e9.0
 for <xen-devel@lists.xenproject.org>; Wed, 24 Jan 2024 17:14:55 -0800 (PST)
Received: from [192.168.1.10] (host-92-3-248-192.as13285.net. [92.3.248.192])
 by smtp.gmail.com with ESMTPSA id
 k10-20020a05600c1c8a00b0040e451fd602sm711151wms.33.2024.01.24.17.14.53
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 24 Jan 2024 17:14:54 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 25e9cf94-bb1f-11ee-98f5-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1706145294; x=1706750094; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=JjhTkAcyX1mrDbwTjJczCt/6YY2bgfxIFtKZkAkc0U8=;
        b=vnqmOfI5U0hwjIOhZqTn5GTJh+OOW627H+7UsDZ+xXme6SOIiu1xcPHxn2RkhE1ugF
         ZFOesTG0/cFuWDyEylaC/ojhw4Gn4iPA8IWlPTh6qgrA1ZfZus1bOW4A7O3hgLhNoByK
         PTN42bj27dQiqPr4TakLe01MQBWaz/QmN9uw4=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706145294; x=1706750094;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=JjhTkAcyX1mrDbwTjJczCt/6YY2bgfxIFtKZkAkc0U8=;
        b=tQmnvrMjfIZJmnF/vlfwMjULUtP94MyO7fjx0LAhNP63uGgdegQsuA+TfA/1SySa/L
         n0yH3oTSd9IQ4DbLNJ7TpFQLsr5rzGDp0I7RnZB2I+2aQlbzT9p3yJQYjLJEi8VBvi/v
         6XZYYwlCr2R1E3qceL0REjTV+Ig6gSXAwaf1bp3Nw+2aed1Z5LG+nGQSYRcW+g3F7afN
         vC4WY+lnUE9YrlgHK6Q6PQQk7DG0/pYpXKqTnoULMJH20fL9nh10Ax8x8Go5psPqrl15
         nm4LrJTxLUU0h08vl3kAd2rofhmm3c2eYh7kAwGINZdD+FIk13DA2yyU11CQioqJkly/
         axGw==
X-Gm-Message-State: AOJu0YxNoMlVKYVd9JVamkiVDRETh+NUQBwhJLcCVVyChoLaH2/qCcDE
	kcjxard/DdBxvXoldJjCwEikJuNboRr68Qaw/keapDs8Cv+fL3GXb5VcYbjiWvo=
X-Google-Smtp-Source: AGHT+IHDhUnw/uzF/FcZF6EhJPuc/3/HImIMi0Pau9KzKYPv/QS/lFFaKiYPcekC4fGVMotRbCQnow==
X-Received: by 2002:a05:600c:aca:b0:40e:4833:5daa with SMTP id c10-20020a05600c0aca00b0040e48335daamr37929wmr.187.1706145294561;
        Wed, 24 Jan 2024 17:14:54 -0800 (PST)
Message-ID: <37afd0b1-a6b3-41aa-8338-c99b68592c92@citrix.com>
Date: Thu, 25 Jan 2024 01:14:53 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] consolidate do_bug_frame() / bug_fn_t
Content-Language: en-GB
To: Jan Beulich <jbeulich@suse.com>,
 Stefano Stabellini <sstabellini@kernel.org>
Cc: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>,
 Federico Serafini <federico.serafini@bugseng.com>,
 George Dunlap <george.dunlap@citrix.com>, Julien Grall <julien@xen.org>,
 Wei Liu <wl@xen.org>, Bertrand Marquis <bertrand.marquis@arm.com>,
 Michal Orzel <michal.orzel@amd.com>
References: <d466eb44-1160-4b57-a41f-752dbf626748@suse.com>
 <alpine.DEB.2.22.394.2401231731570.2287888@ubuntu-linux-20-04-desktop>
 <665b7ea9-77d9-4bbc-a67c-1ac0d9ba908a@suse.com>
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 xsFNBFLhNn8BEADVhE+Hb8i0GV6mihnnr/uiQQdPF8kUoFzCOPXkf7jQ5sLYeJa0cQi6Penp
 VtiFYznTairnVsN5J+ujSTIb+OlMSJUWV4opS7WVNnxHbFTPYZVQ3erv7NKc2iVizCRZ2Kxn
 srM1oPXWRic8BIAdYOKOloF2300SL/bIpeD+x7h3w9B/qez7nOin5NzkxgFoaUeIal12pXSR
 Q354FKFoy6Vh96gc4VRqte3jw8mPuJQpfws+Pb+swvSf/i1q1+1I4jsRQQh2m6OTADHIqg2E
 ofTYAEh7R5HfPx0EXoEDMdRjOeKn8+vvkAwhviWXTHlG3R1QkbE5M/oywnZ83udJmi+lxjJ5
 YhQ5IzomvJ16H0Bq+TLyVLO/VRksp1VR9HxCzItLNCS8PdpYYz5TC204ViycobYU65WMpzWe
 LFAGn8jSS25XIpqv0Y9k87dLbctKKA14Ifw2kq5OIVu2FuX+3i446JOa2vpCI9GcjCzi3oHV
 e00bzYiHMIl0FICrNJU0Kjho8pdo0m2uxkn6SYEpogAy9pnatUlO+erL4LqFUO7GXSdBRbw5
 gNt25XTLdSFuZtMxkY3tq8MFss5QnjhehCVPEpE6y9ZjI4XB8ad1G4oBHVGK5LMsvg22PfMJ
 ISWFSHoF/B5+lHkCKWkFxZ0gZn33ju5n6/FOdEx4B8cMJt+cWwARAQABzSlBbmRyZXcgQ29v
 cGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPsLBegQTAQgAJAIbAwULCQgHAwUVCgkI
 CwUWAgMBAAIeAQIXgAUCWKD95wIZAQAKCRBlw/kGpdefoHbdD/9AIoR3k6fKl+RFiFpyAhvO
 59ttDFI7nIAnlYngev2XUR3acFElJATHSDO0ju+hqWqAb8kVijXLops0gOfqt3VPZq9cuHlh
 IMDquatGLzAadfFx2eQYIYT+FYuMoPZy/aTUazmJIDVxP7L383grjIkn+7tAv+qeDfE+txL4
 SAm1UHNvmdfgL2/lcmL3xRh7sub3nJilM93RWX1Pe5LBSDXO45uzCGEdst6uSlzYR/MEr+5Z
 JQQ32JV64zwvf/aKaagSQSQMYNX9JFgfZ3TKWC1KJQbX5ssoX/5hNLqxMcZV3TN7kU8I3kjK
 mPec9+1nECOjjJSO/h4P0sBZyIUGfguwzhEeGf4sMCuSEM4xjCnwiBwftR17sr0spYcOpqET
 ZGcAmyYcNjy6CYadNCnfR40vhhWuCfNCBzWnUW0lFoo12wb0YnzoOLjvfD6OL3JjIUJNOmJy
 RCsJ5IA/Iz33RhSVRmROu+TztwuThClw63g7+hoyewv7BemKyuU6FTVhjjW+XUWmS/FzknSi
 dAG+insr0746cTPpSkGl3KAXeWDGJzve7/SBBfyznWCMGaf8E2P1oOdIZRxHgWj0zNr1+ooF
 /PzgLPiCI4OMUttTlEKChgbUTQ+5o0P080JojqfXwbPAyumbaYcQNiH1/xYbJdOFSiBv9rpt
 TQTBLzDKXok86M7BTQRS4TZ/ARAAkgqudHsp+hd82UVkvgnlqZjzz2vyrYfz7bkPtXaGb9H4
 Rfo7mQsEQavEBdWWjbga6eMnDqtu+FC+qeTGYebToxEyp2lKDSoAsvt8w82tIlP/EbmRbDVn
 7bhjBlfRcFjVYw8uVDPptT0TV47vpoCVkTwcyb6OltJrvg/QzV9f07DJswuda1JH3/qvYu0p
 vjPnYvCq4NsqY2XSdAJ02HrdYPFtNyPEntu1n1KK+gJrstjtw7KsZ4ygXYrsm/oCBiVW/OgU
 g/XIlGErkrxe4vQvJyVwg6YH653YTX5hLLUEL1NS4TCo47RP+wi6y+TnuAL36UtK/uFyEuPy
 wwrDVcC4cIFhYSfsO0BumEI65yu7a8aHbGfq2lW251UcoU48Z27ZUUZd2Dr6O/n8poQHbaTd
 6bJJSjzGGHZVbRP9UQ3lkmkmc0+XCHmj5WhwNNYjgbbmML7y0fsJT5RgvefAIFfHBg7fTY/i
 kBEimoUsTEQz+N4hbKwo1hULfVxDJStE4sbPhjbsPCrlXf6W9CxSyQ0qmZ2bXsLQYRj2xqd1
 bpA+1o1j2N4/au1R/uSiUFjewJdT/LX1EklKDcQwpk06Af/N7VZtSfEJeRV04unbsKVXWZAk
 uAJyDDKN99ziC0Wz5kcPyVD1HNf8bgaqGDzrv3TfYjwqayRFcMf7xJaL9xXedMcAEQEAAcLB
 XwQYAQgACQUCUuE2fwIbDAAKCRBlw/kGpdefoG4XEACD1Qf/er8EA7g23HMxYWd3FXHThrVQ
 HgiGdk5Yh632vjOm9L4sd/GCEACVQKjsu98e8o3ysitFlznEns5EAAXEbITrgKWXDDUWGYxd
 pnjj2u+GkVdsOAGk0kxczX6s+VRBhpbBI2PWnOsRJgU2n10PZ3mZD4Xu9kU2IXYmuW+e5KCA
 vTArRUdCrAtIa1k01sPipPPw6dfxx2e5asy21YOytzxuWFfJTGnVxZZSCyLUO83sh6OZhJkk
 b9rxL9wPmpN/t2IPaEKoAc0FTQZS36wAMOXkBh24PQ9gaLJvfPKpNzGD8XWR5HHF0NLIJhgg
 4ZlEXQ2fVp3XrtocHqhu4UZR4koCijgB8sB7Tb0GCpwK+C4UePdFLfhKyRdSXuvY3AHJd4CP
 4JzW0Bzq/WXY3XMOzUTYApGQpnUpdOmuQSfpV9MQO+/jo7r6yPbxT7CwRS5dcQPzUiuHLK9i
 nvjREdh84qycnx0/6dDroYhp0DFv4udxuAvt1h4wGwTPRQZerSm4xaYegEFusyhbZrI0U9tJ
 B8WrhBLXDiYlyJT6zOV2yZFuW47VrLsjYnHwn27hmxTC/7tvG3euCklmkn9Sl9IAKFu29RSo
 d5bD8kMSCYsTqtTfT6W4A3qHGvIDta3ptLYpIAOD2sY3GYq2nf3Bbzx81wZK14JdDDHUX2Rs
 6+ahAA==
In-Reply-To: <665b7ea9-77d9-4bbc-a67c-1ac0d9ba908a@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 24/01/2024 7:28 am, Jan Beulich wrote:
> On 24.01.2024 02:34, Stefano Stabellini wrote:
>> I managed to get back to read the mailing list and noticed this patch.
>>
>> Is it still relevant and needs to be reviewed?
>>
>> Are there any outstanding disagreements between maintainers on the
>> approach to take here?  Or should I just go ahead and review it?
> It is still relevant from my pov, and everything that may be controversial
> is said ...

BUGFRAME_* cannot legitimately modify the interrupted context.  Two are
fatal paths, and other two are side-effect-less as far as C can tell.

So the infrastructure ought to take a const pointer.

The reason why this pointer is non-const is to do with the interaction
of the serial and keyhandler infrastructures.  Because we're adjusting
that for other reasons, I was hoping it would subsequently be easy to
switch Xen to being properly const in this regard.

Turns out it is:

 
https://gitlab.com/xen-project/people/andyhhp/xen/-/commit/4f857075005da1d28632e4f9198c2e7d0f404b9a

with a couple of caveats.  (Only the buster-gcc-ibt run failed, so I've
got some cf_check-ing to adjust, but all the other builds worked fine).


To make the serial code compile, I ended up having to revert patch 2 of
the regs series, which I believe is safe to do following patch 3-5 which
un-plumb the regs pointer deeper in the call chain.  If this is turns
out to be true, then the patch ought to be added and reverted in the
same series so it isn't left hanging about after the fact.

The _$X_poll() functions are used in timer context, which means there's
an outer regs context already latched, and that's arguably a better
context to use anyway for 'd'.

This in turn allows us to remove a #UD from a fast(ish) path, and remove
some per-cpu or static variables which are just used for non-standard
parameter passing because run_in_exception_handler() doesn't let you
pass any.


This leaves the '%' debugger infrastructure.  Being a debugger, it's
making arbitrary changes anyway and I'd much rather cast away constness
for a debugger, than to keep everything else mutable when it oughtn't to be.

If absolutely nothing else, registration and handling '%' ought to be
from x86 code rather than common code, which would remove the
do_debugger_trap_fatal() layering violation.

But, the more I look into the gdbstub the more I'm convinced that it
doesn't work.  For example, this gem:

/* Resuming after we've stopped used to work, but more through luck than
any actual intention.  It doesn't at the moment. */

>From c/s b69f92f3012 in July 2004, and more specifically the commit
which added the gdbstub functionality to begin with.  I.e. it doesn't
appear to have ever supported more than "poke around in the crashed
state".  In the 2 decades that noone has fixed this, we've gained far
better technologies for doing this, such as running it in a VM.

I am going to submit some patches deleting gdbstub.  It clearly had not
much value to begin with, and is not definitely not worth the problems
it is creating in adjacent code these days.

~Andrew


From xen-devel-bounces@lists.xenproject.org Thu Jan 25 06:41:45 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 25 Jan 2024 06:41:45 +0000
Received: from list by lists.xenproject.org with outflank-mailman.671320.1044585 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rStQQ-0007f2-IN; Thu, 25 Jan 2024 06:41:22 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 671320.1044585; Thu, 25 Jan 2024 06:41:22 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rStQQ-0007ev-FQ; Thu, 25 Jan 2024 06:41:22 +0000
Received: by outflank-mailman (input) for mailman id 671320;
 Thu, 25 Jan 2024 06:41:21 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rStQP-0007el-PC; Thu, 25 Jan 2024 06:41:21 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rStQP-0004Q2-EL; Thu, 25 Jan 2024 06:41:21 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rStQO-0006Fe-Vq; Thu, 25 Jan 2024 06:41:21 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rStQO-00088K-VQ; Thu, 25 Jan 2024 06:41:20 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=Nr2HiaP/twPtsOs2JMKAhYLck1XeYXXuRssZzXNp+dM=; b=r/ko5Ry+GigEzn9q0LUkc+mToS
	uF4uc6NqQzoo5Ab7QLDyX42c5e0e9GtAsh39LTzpknOD8QCNOrGdW/nMNNG65euKov9tb0PACZFk6
	ehnW7tlqO/STtQRbxTMxempQ5ppK/M23FkMX///WTYjKlgOvj/Wg4ATF6ETRNbyRVll0=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184449-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [xen-unstable test] 184449: tolerable FAIL - PUSHED
X-Osstest-Failures:
    xen-unstable:test-armhf-armhf-libvirt:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-amd64-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-qcow2:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-raw:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-amd64-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-amd64-qemuu-nested-amd:debian-hvm-install/l1/l2:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-amd64-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-i386-libvirt-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-libvirt:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-pvshim:guest-start:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-credit2:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-credit2:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-credit1:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-credit1:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-thunderx:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-thunderx:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-libvirt-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-libvirt-xsm:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-xsm:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-multivcpu:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-multivcpu:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-libvirt-raw:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-libvirt-raw:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-libvirt-raw:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt-vhd:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-vhd:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-vhd:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-qcow2:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-raw:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-vhd:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-vhd:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit1:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit1:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-rtds:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-rtds:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit2:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit2:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-arndale:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-arndale:saverestore-support-check:fail:nonblocking
X-Osstest-Versions-This:
    xen=98ae35cab0e40e59963f9f58345bf378b9522d74
X-Osstest-Versions-That:
    xen=f67bddf3bccd99a5fee968c3b3f288db6a57d3be
From: osstest service owner <osstest-admin@xenproject.org>
Date: Thu, 25 Jan 2024 06:41:20 +0000

flight 184449 xen-unstable real [real]
http://logs.test-lab.xenproject.org/osstest/logs/184449/

Failures :-/ but no regressions.

Tests which did not succeed, but are not blocking:
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 184434
 test-amd64-amd64-xl-qemut-win7-amd64 19 guest-stop            fail like 184434
 test-amd64-i386-xl-qemuu-win7-amd64 19 guest-stop             fail like 184434
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 184434
 test-armhf-armhf-libvirt-qcow2 15 saverestore-support-check   fail like 184434
 test-amd64-i386-xl-qemut-ws16-amd64 19 guest-stop             fail like 184434
 test-armhf-armhf-libvirt-raw 15 saverestore-support-check    fail  like 184434
 test-amd64-i386-xl-qemut-win7-amd64 19 guest-stop             fail like 184434
 test-amd64-amd64-xl-qemut-ws16-amd64 19 guest-stop            fail like 184434
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 184434
 test-amd64-i386-xl-qemuu-ws16-amd64 19 guest-stop             fail like 184434
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 184434
 test-amd64-i386-libvirt-xsm  15 migrate-support-check        fail   never pass
 test-amd64-i386-libvirt      15 migrate-support-check        fail   never pass
 test-amd64-i386-xl-pvshim    14 guest-start                  fail   never pass
 test-amd64-amd64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit2  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit2  16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl          15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl          16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-credit1  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit1  16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-thunderx 15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-thunderx 16 saverestore-support-check    fail   never pass
 test-arm64-arm64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-xsm 16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-xsm      15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-xsm      16 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-amd64-amd64-libvirt     15 migrate-support-check        fail   never pass
 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-armhf-armhf-libvirt     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-multivcpu 15 migrate-support-check        fail  never pass
 test-armhf-armhf-xl-multivcpu 16 saverestore-support-check    fail  never pass
 test-amd64-i386-libvirt-raw  14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 15 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-vhd 14 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-vhd      14 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-vhd      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-qcow2 14 migrate-support-check        fail never pass
 test-armhf-armhf-libvirt-raw 14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl          15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-credit1  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit1  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-rtds     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-rtds     16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-credit2  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit2  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-arndale  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-arndale  16 saverestore-support-check    fail   never pass

version targeted for testing:
 xen                  98ae35cab0e40e59963f9f58345bf378b9522d74
baseline version:
 xen                  f67bddf3bccd99a5fee968c3b3f288db6a57d3be

Last test of basis   184434  2024-01-23 14:39:00 Z    1 days
Testing same since   184449  2024-01-24 08:52:12 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Andrew Cooper <andrew.cooper3@citrix.com>
  Jan Beulich <jbeulich@suse.com>
  Oleksii Kurochko <oleksii.kurochko@gmail.com>

jobs:
 build-amd64-xsm                                              pass    
 build-arm64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64-xtf                                              pass    
 build-amd64                                                  pass    
 build-arm64                                                  pass    
 build-armhf                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-arm64-libvirt                                          pass    
 build-armhf-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-prev                                             pass    
 build-i386-prev                                              pass    
 build-amd64-pvops                                            pass    
 build-arm64-pvops                                            pass    
 build-armhf-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-xtf-amd64-amd64-1                                       pass    
 test-xtf-amd64-amd64-2                                       pass    
 test-xtf-amd64-amd64-3                                       pass    
 test-xtf-amd64-amd64-4                                       pass    
 test-xtf-amd64-amd64-5                                       pass    
 test-amd64-amd64-xl                                          pass    
 test-amd64-coresched-amd64-xl                                pass    
 test-arm64-arm64-xl                                          pass    
 test-armhf-armhf-xl                                          pass    
 test-amd64-i386-xl                                           pass    
 test-amd64-coresched-i386-xl                                 pass    
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm           pass    
 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm            pass    
 test-amd64-amd64-xl-qemut-stubdom-debianhvm-amd64-xsm        pass    
 test-amd64-i386-xl-qemut-stubdom-debianhvm-amd64-xsm         pass    
 test-amd64-amd64-xl-qemut-debianhvm-i386-xsm                 pass    
 test-amd64-i386-xl-qemut-debianhvm-i386-xsm                  pass    
 test-amd64-amd64-xl-qemuu-debianhvm-i386-xsm                 pass    
 test-amd64-i386-xl-qemuu-debianhvm-i386-xsm                  pass    
 test-amd64-amd64-libvirt-xsm                                 pass    
 test-arm64-arm64-libvirt-xsm                                 pass    
 test-amd64-i386-libvirt-xsm                                  pass    
 test-amd64-amd64-xl-xsm                                      pass    
 test-arm64-arm64-xl-xsm                                      pass    
 test-amd64-i386-xl-xsm                                       pass    
 test-amd64-amd64-qemuu-nested-amd                            fail    
 test-amd64-amd64-xl-pvhv2-amd                                pass    
 test-amd64-i386-qemut-rhel6hvm-amd                           pass    
 test-amd64-i386-qemuu-rhel6hvm-amd                           pass    
 test-amd64-amd64-dom0pvh-xl-amd                              pass    
 test-amd64-amd64-xl-qemut-debianhvm-amd64                    pass    
 test-amd64-i386-xl-qemut-debianhvm-amd64                     pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64                    pass    
 test-amd64-i386-xl-qemuu-debianhvm-amd64                     pass    
 test-amd64-i386-freebsd10-amd64                              pass    
 test-amd64-amd64-qemuu-freebsd11-amd64                       pass    
 test-amd64-amd64-qemuu-freebsd12-amd64                       pass    
 test-amd64-amd64-xl-qemuu-ovmf-amd64                         pass    
 test-amd64-i386-xl-qemuu-ovmf-amd64                          pass    
 test-amd64-amd64-xl-qemut-win7-amd64                         fail    
 test-amd64-i386-xl-qemut-win7-amd64                          fail    
 test-amd64-amd64-xl-qemuu-win7-amd64                         fail    
 test-amd64-i386-xl-qemuu-win7-amd64                          fail    
 test-amd64-amd64-xl-qemut-ws16-amd64                         fail    
 test-amd64-i386-xl-qemut-ws16-amd64                          fail    
 test-amd64-amd64-xl-qemuu-ws16-amd64                         fail    
 test-amd64-i386-xl-qemuu-ws16-amd64                          fail    
 test-armhf-armhf-xl-arndale                                  pass    
 test-amd64-amd64-examine-bios                                pass    
 test-amd64-i386-examine-bios                                 pass    
 test-amd64-amd64-xl-credit1                                  pass    
 test-arm64-arm64-xl-credit1                                  pass    
 test-armhf-armhf-xl-credit1                                  pass    
 test-amd64-amd64-xl-credit2                                  pass    
 test-arm64-arm64-xl-credit2                                  pass    
 test-armhf-armhf-xl-credit2                                  pass    
 test-amd64-amd64-xl-qemuu-dmrestrict-amd64-dmrestrict        pass    
 test-amd64-i386-xl-qemuu-dmrestrict-amd64-dmrestrict         pass    
 test-amd64-amd64-examine                                     pass    
 test-arm64-arm64-examine                                     pass    
 test-armhf-armhf-examine                                     pass    
 test-amd64-i386-examine                                      pass    
 test-amd64-i386-freebsd10-i386                               pass    
 test-amd64-amd64-qemuu-nested-intel                          pass    
 test-amd64-amd64-xl-pvhv2-intel                              pass    
 test-amd64-i386-qemut-rhel6hvm-intel                         pass    
 test-amd64-i386-qemuu-rhel6hvm-intel                         pass    
 test-amd64-amd64-dom0pvh-xl-intel                            pass    
 test-amd64-amd64-libvirt                                     pass    
 test-armhf-armhf-libvirt                                     pass    
 test-amd64-i386-libvirt                                      pass    
 test-amd64-amd64-livepatch                                   pass    
 test-amd64-i386-livepatch                                    pass    
 test-amd64-amd64-migrupgrade                                 pass    
 test-amd64-i386-migrupgrade                                  pass    
 test-amd64-amd64-xl-multivcpu                                pass    
 test-armhf-armhf-xl-multivcpu                                pass    
 test-amd64-amd64-pair                                        pass    
 test-amd64-i386-pair                                         pass    
 test-amd64-amd64-libvirt-pair                                pass    
 test-amd64-i386-libvirt-pair                                 pass    
 test-amd64-amd64-xl-pvshim                                   pass    
 test-amd64-i386-xl-pvshim                                    fail    
 test-amd64-amd64-pygrub                                      pass    
 test-armhf-armhf-libvirt-qcow2                               pass    
 test-amd64-amd64-xl-qcow2                                    pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-armhf-armhf-libvirt-raw                                 pass    
 test-amd64-i386-libvirt-raw                                  pass    
 test-amd64-amd64-xl-rtds                                     pass    
 test-armhf-armhf-xl-rtds                                     pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64-shadow             pass    
 test-amd64-i386-xl-qemuu-debianhvm-amd64-shadow              pass    
 test-amd64-amd64-xl-shadow                                   pass    
 test-amd64-i386-xl-shadow                                    pass    
 test-arm64-arm64-xl-thunderx                                 pass    
 test-amd64-amd64-examine-uefi                                pass    
 test-amd64-i386-examine-uefi                                 pass    
 test-amd64-amd64-libvirt-vhd                                 pass    
 test-arm64-arm64-xl-vhd                                      pass    
 test-armhf-armhf-xl-vhd                                      pass    
 test-amd64-i386-xl-vhd                                       pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Pushing revision :

To xenbits.xen.org:/home/xen/git/xen.git
   f67bddf3bc..98ae35cab0  98ae35cab0e40e59963f9f58345bf378b9522d74 -> master


From xen-devel-bounces@lists.xenproject.org Thu Jan 25 07:17:40 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 25 Jan 2024 07:17:40 +0000
Received: from list by lists.xenproject.org with outflank-mailman.671333.1044611 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rStzR-00034x-He; Thu, 25 Jan 2024 07:17:33 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 671333.1044611; Thu, 25 Jan 2024 07:17:33 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rStzR-00034q-EE; Thu, 25 Jan 2024 07:17:33 +0000
Received: by outflank-mailman (input) for mailman id 671333;
 Thu, 25 Jan 2024 07:17:32 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=Ej07=JD=amd.com=Jiqian.Chen@srs-se1.protection.inumbo.net>)
 id 1rStzQ-00034k-53
 for xen-devel@lists.xenproject.org; Thu, 25 Jan 2024 07:17:32 +0000
Received: from NAM02-BN1-obe.outbound.protection.outlook.com
 (mail-bn1nam02on20600.outbound.protection.outlook.com
 [2a01:111:f403:2407::600])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id ccabbdea-bb51-11ee-9b0f-b553b5be7939;
 Thu, 25 Jan 2024 08:17:29 +0100 (CET)
Received: from BL1PR12MB5849.namprd12.prod.outlook.com (2603:10b6:208:384::18)
 by SA3PR12MB8812.namprd12.prod.outlook.com (2603:10b6:806:312::10)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7228.22; Thu, 25 Jan
 2024 07:17:24 +0000
Received: from BL1PR12MB5849.namprd12.prod.outlook.com
 ([fe80::bafd:1985:94e6:ef33]) by BL1PR12MB5849.namprd12.prod.outlook.com
 ([fe80::bafd:1985:94e6:ef33%7]) with mapi id 15.20.7202.035; Thu, 25 Jan 2024
 07:17:24 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: ccabbdea-bb51-11ee-9b0f-b553b5be7939
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=ObyP+T/+PeOdRtHKXtEJB4ncG88TqdQH9up6eKFEjdnFvsVYYYVN8J3Fvrky1MhhjRGuym3QfXEesBpvRpb/JTbkPOnAGPX9aQD53+s4bmm4URYeSKfttNLtP54lNS7eMg8iideuTxyyJ40Wpv2dpDN+v6EgoD9POBHtX3JN+REx6rv9Z6OJCAYPlOOpfZtU9gu8/ajeK0uMjDFMqEFQ3hvrFeUnLareJgWJI9ICJ0s9tFw8INyJDRY/yTUEodbF9ciigtJVO/IlBTchDm6vzbp1pXHo+3khEsPiBRGvqTqcrM5HbIsNAAMwrflgLmwiG+DlVM+SrM/Ca5z2+EbHIQ==
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=pqatrYytfLKiPk2v/ZKyHk0/71bcH/0KTHfFL5H2apo=;
 b=AXFkSrc3Td5lhrE9C9EwQ8vIrXcK31aWLX89o5oFRTwj8M0u5vaDX74oi8pgPjzNKK+b4YhIRluG9Is0hhk+GEplVHmMk+n9hBl3+3zJ3Ki8l9IOecqn8oj/ZCE81iL4uE+LTfIeFV6cNKHWBMJiI883doO019tNog7eYlMj7a8uZFGsrW7gx68ow3hUNB2D5ikQqKgEuTbJfhfL3PDe395ouYZyS9hvuagCU889OHm8jFIxIgcoxUfT1qGma7a8KlYKnObZ/XI9+Dn220Dz9U6OiKH9SGXensjIJ/sh8OXAae8fEsJZPupADqA04IR92kotRQrG+x4jcXF/nryFcQ==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=amd.com; dmarc=pass action=none header.from=amd.com; dkim=pass
 header.d=amd.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=pqatrYytfLKiPk2v/ZKyHk0/71bcH/0KTHfFL5H2apo=;
 b=03wRxQ+tdRLcpodjTNYuHUx4w9nJZzHD2bI2Ola6NEeA6RHLQaA+keqbffnKqeQpxnKz1pJs/H+JTKGhRlOG9MUpxmptL1kIm/TkwqzGLnvAU/c9MMbIvrQwVup3vLg0jWj3VnZEw6qzaCLrHAZHuxeBeByM3+vMXlGRJLGheog=
From: "Chen, Jiqian" <Jiqian.Chen@amd.com>
To: Bjorn Helgaas <helgaas@kernel.org>
CC: "Rafael J . Wysocki" <rafael@kernel.org>, Len Brown <lenb@kernel.org>,
	Juergen Gross <jgross@suse.com>, Stefano Stabellini <sstabellini@kernel.org>,
	Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>, Boris Ostrovsky
	<boris.ostrovsky@oracle.com>, Bjorn Helgaas <bhelgaas@google.com>,
	=?utf-8?B?Um9nZXIgUGF1IE1vbm7DqQ==?= <roger.pau@citrix.com>,
	"xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>,
	"linux-pci@vger.kernel.org" <linux-pci@vger.kernel.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"linux-acpi@vger.kernel.org" <linux-acpi@vger.kernel.org>, "Hildebrand,
 Stewart" <Stewart.Hildebrand@amd.com>, "Huang, Ray" <Ray.Huang@amd.com>,
	"Ragiadakou, Xenia" <Xenia.Ragiadakou@amd.com>, "Chen, Jiqian"
	<Jiqian.Chen@amd.com>
Subject: Re: [RFC KERNEL PATCH v4 3/3] PCI/sysfs: Add gsi sysfs for pci_dev
Thread-Topic: [RFC KERNEL PATCH v4 3/3] PCI/sysfs: Add gsi sysfs for pci_dev
Thread-Index: AQHaP5+doYjSbLzTtkiUcLxinuNXV7DmmK+AgAEHcQCAAAvdAIABnLmA
Date: Thu, 25 Jan 2024 07:17:24 +0000
Message-ID:
 <BL1PR12MB5849B51FADC8226764078A98E77A2@BL1PR12MB5849.namprd12.prod.outlook.com>
References: <20240123160252.GA316914@bhelgaas>
In-Reply-To: <20240123160252.GA316914@bhelgaas>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-ms-exchange-imapappendstamp: BL1PR12MB5851.namprd12.prod.outlook.com
 (15.20.7202.013)
authentication-results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=amd.com;
x-ms-exchange-messagesentrepresentingtype: 1
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: BL1PR12MB5849:EE_|SA3PR12MB8812:EE_
x-ms-office365-filtering-correlation-id: a36db38f-0be2-45ad-0aed-08dc1d75ae06
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam: BCL:0;
x-microsoft-antispam-message-info:
 VrNxpmNvIT0O4BfVAEuumQml/jMSdoJkzPPabZGX4oig1IfqSQGSfChpnPQEWtlTD6eUojjq+6PYxu2N24UOgA7KYfYDpoeiMD+TuPmteCpf0ms1Cvg0V8DtGDbKwZgIXbX2pk40JkmKpuQ8XPOiJtaQaoRzjExnQKeaR9uVI51ioSMDGGWeOWJLDIDvPPR9RfroCALjkdyLbIjNQK8KHxAmWva+eVPbwFM8g8wC2cliUIb7CpeTJ6ZNJWx6prn/4u/nia1EirfUVxFfumzh6JRYTnJjIcARsIVKLAyE/aRd8e3mG8zKG3rQwsfxhlV7lBOCUoA4nCai5ksm+A9pfoOLGe0RvQheanAc5pQ107v1u7WWN27fKjXX2Cjvra4ljLmgRLLyag3ALWIU9JPjHzzFDTurHxinTt+oCjEW2N10qWkvzSA4hhElFlkpF977mCtYKgdqSMnC2fD4AiOABUYN4EU6H8Zqu804rHd/HXvD17d0H9SC96+WSxbc2V6yVMBbJ1vDxsN6KNmkdeAoU9Xrx0bj3l0p2t9c0DP2IAw1t01J0RBMraWUG3prB+QhTr+h8NzT08nUBZdiPzIj2O5SnnLunZheMOukHxHr77ETI6xcaFkLx3KSpPdlhKBC
x-forefront-antispam-report:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BL1PR12MB5849.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230031)(366004)(39860400002)(396003)(136003)(376002)(346002)(230922051799003)(1800799012)(186009)(64100799003)(451199024)(66476007)(316002)(66556008)(66946007)(53546011)(64756008)(26005)(66446008)(122000001)(54906003)(6916009)(9686003)(478600001)(55016003)(38100700002)(6506007)(7696005)(71200400001)(8936002)(76116006)(8676002)(4326008)(52536014)(7416002)(5660300002)(83380400001)(41300700001)(2906002)(33656002)(38070700009);DIR:OUT;SFP:1101;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
 =?utf-8?B?V0FYNkdDaVd0NGlleGxvVFduUlduRTUvVE11dDhDamYwMEZrM0w4czNFTlFn?=
 =?utf-8?B?dGQ3ekNPSlhqeUlwTUQ2Skh6bythUmpNY2Vvenh6TUJCNWpMcEZlMXN3d2Fy?=
 =?utf-8?B?aHQrZG51N0lObE5mU2FLUTBPRStRaHZKQ3QzaFRuMnJxa0U5RndDZDNhQUFC?=
 =?utf-8?B?bTBFdjQ0cnlaYWJFc1RLMkd2WFIyUitnb3JpSmFsVEhpa0l0RzVmSFlXUy8x?=
 =?utf-8?B?Q3lxYmFnelc2ZWhycXU3MFZPM3ZQU1lsQXJtVEJTdWo2em01ZGpmSlU5TENu?=
 =?utf-8?B?VkxhbGpESkg4Z0wzaXdyOUt0S05GOVB5N01MZ1BiU0Y5dElOU0pWb2QzNkdv?=
 =?utf-8?B?YkpzTDg0a1J0SE1Gd1J1QXo0VW9BVTJRdkFoUGhHb1JtZXBobU5IRTJITGpu?=
 =?utf-8?B?ZlFaS3dqT1NlRmVLS0NyQlFlUjNpSnByZDZMaktkdDJIRys2UzdkTXBGWlUv?=
 =?utf-8?B?U0tSNU1mOXp2YWZDUnl6YmFaakFKb1FwZ29xYndVSThhM2NZbWRGR3hrL3Ir?=
 =?utf-8?B?cmxQSDJybGFOdzhkUFZwclg0bnJNd2RZQXE4V2Q2UGkyVkMrK3ZUZGQ5Mk1P?=
 =?utf-8?B?djBWSkt4N1lMbi9IaGFIczkxVWVLcVhxcFJvcGVVcjFFUlpiQVlUNTk1UFl0?=
 =?utf-8?B?S0Ewdmx0dVlVREpPeHhFK2VYUGVTbjJuYWhNQjFGUkd0a3cyQzhYNlBrVWlr?=
 =?utf-8?B?RTZBQWRCcGkzK3ZDMVQyOHZieWNneVZjWmtUWXJFYjhoSWJhMEZiVFJJMUV5?=
 =?utf-8?B?cWtqQ0NSakdMbnJlU3lDbThEVjZvT1RhWXZuWnNuZTNpQllSODZoMndUbzNB?=
 =?utf-8?B?WlI5bCtDWDhFcitpQ3ZYQU5jeUxWUktMOWhNT3lKSk4zcW5pTGlYcSt6bnky?=
 =?utf-8?B?OFFIVndJVUdOUTVWRDE5NlZiSURPMm5naEpYQVFtTjdJQ2EzWTNOK1lIbWtI?=
 =?utf-8?B?bXdrclFtTnhVRVZiVkdsL3VodUI1YVhsc0hsdUNqUmZhSFU5LzNvTi85VVJ3?=
 =?utf-8?B?bThMRkpsanFaKzY3YjdoMnF5STJ2aUVDYmRzamZOUXFyYlZ4SXFVeFA4aXdB?=
 =?utf-8?B?RXR2T0V6VXZad3lEMUtpMllCSExTNittdnhXRnpWblhhQ1JrbVoxcmROUU90?=
 =?utf-8?B?SkI4eXJWUGFhV0lIVlVMMHhWc20zaW9lbFhvam11NTFtdUtjRy9xaGpBTExQ?=
 =?utf-8?B?MmFUTG9rY29QRmVscFhxbnlCTjU5RVU3OVRabmVKYXIzaGtpQ1kvdlJLUEhH?=
 =?utf-8?B?RkJLT3Bwb1U2MkdwQzdmdHRPbFVaTkZVdE5IREpGMU5BRG1JTmxZM2VYWmVu?=
 =?utf-8?B?bVpaVUJ2RC9ocDFyZGJNQkIrVW1mWUFVK1VtQkhYWWtvUThhRDlYRXp6MFEy?=
 =?utf-8?B?eEo1TDYwSmZFWVhoeTJWbzhDQTN2MHhQRENYd3lGL1ZQWDRlUU90NFJYV2R4?=
 =?utf-8?B?STZJSGtRSlp0MThCdUZaei9ZTjZCYTBueXBSUmxHR2k1ZHNVeGYyRlpRNEt1?=
 =?utf-8?B?aVd5YzZVcWhuckRrNGNGaGtDNWEvTENuclhNZXVzYTlIREZ4V0psMFpoZ2Vk?=
 =?utf-8?B?R0c5ZmUwdVEvc2lSS2lES20wTXVxVHFvTE1ObVQyMGRnU3d4YzRYS2o0N3VD?=
 =?utf-8?B?RHUvQXVaK2ZVYzFNZ2diQjM4T1VEWVFWRmRqdE9MYlRTdlV4Q1BSQzJBUGFL?=
 =?utf-8?B?Z3E1M3dLNEVpRldJS0xYUjF2cy8wQk1HYXptSE1PN1oybGRXdFRjcXU5YzZF?=
 =?utf-8?B?SU55R1EzcDN4czNHRllvVHJqRnB3K3ByKzdHaTFGS3BBQVNITVRnSEYxandJ?=
 =?utf-8?B?THA4NWJvT0xqaHRHWXNCTmc2dzYySTY1a00rOTJlNW1mN3ZKN0k4QjlFSWQ1?=
 =?utf-8?B?SGQydnh5M3U1UTNCZWhCMHFucnliYVBuZHY5cXRXZE4vbFE4MjA5bk5YeElu?=
 =?utf-8?B?eWxtbUM3aysvY1k1N3A0ckgrcm9hOVhJTEpsZ0w3MTNJTVI2VHR1ZXpiQTFw?=
 =?utf-8?B?TG53VWJITzArOFZTZGN3RmRYZzA0RWJXUURoTXFiRjhOaUNoQjJWZkZ0SFpZ?=
 =?utf-8?B?Yit4ZE9zQjFEaUR6WEpMMG1kZ0R1S2dyU1hlbWM1YlRMcVRZRUF1K05IcFRZ?=
 =?utf-8?Q?tWFM=3D?=
Content-Type: text/plain; charset="utf-8"
Content-ID: <0A0C0ED826A8FC4B9CD427BE0CDA7D40@amdcloud.onmicrosoft.com>
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: BL1PR12MB5849.namprd12.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: a36db38f-0be2-45ad-0aed-08dc1d75ae06
X-MS-Exchange-CrossTenant-originalarrivaltime: 25 Jan 2024 07:17:24.7168
 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 3dd8961f-e488-4e60-8e11-a82d994e183d
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: wpX/ZJDyXtP/MfoAA29vKUvQsZNdB5PCanjMVRjGQcY6qLFx09TJJoAz34i6vBZMMS3lELRKd6L2LsrpgBA5Yg==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA3PR12MB8812

T24gMjAyNC8xLzI0IDAwOjAyLCBCam9ybiBIZWxnYWFzIHdyb3RlOg0KPiBPbiBUdWUsIEphbiAy
MywgMjAyNCBhdCAxMDoxMzo1MkFNICswMDAwLCBDaGVuLCBKaXFpYW4gd3JvdGU6DQo+PiBPbiAy
MDI0LzEvMjMgMDc6MzcsIEJqb3JuIEhlbGdhYXMgd3JvdGU6DQo+Pj4gT24gRnJpLCBKYW4gMDUs
IDIwMjQgYXQgMDI6MjI6MTdQTSArMDgwMCwgSmlxaWFuIENoZW4gd3JvdGU6DQo+Pj4+IFRoZXJl
IGlzIGEgbmVlZCBmb3Igc29tZSBzY2VuYXJpb3MgdG8gdXNlIGdzaSBzeXNmcy4NCj4+Pj4gRm9y
IGV4YW1wbGUsIHdoZW4geGVuIHBhc3N0aHJvdWdoIGEgZGV2aWNlIHRvIGR1bVUsIGl0IHdpbGwN
Cj4+Pj4gdXNlIGdzaSB0byBtYXAgcGlycSwgYnV0IGN1cnJlbnRseSB1c2Vyc3BhY2UgY2FuJ3Qg
Z2V0IGdzaQ0KPj4+PiBudW1iZXIuDQo+Pj4+IFNvLCBhZGQgZ3NpIHN5c2ZzIGZvciB0aGF0IGFu
ZCBmb3Igb3RoZXIgcG90ZW50aWFsIHNjZW5hcmlvcy4NCj4+IC4uLg0KPiANCj4+PiBJIGRvbid0
IGtub3cgZW5vdWdoIGFib3V0IFhlbiB0byBrbm93IHdoeSBpdCBuZWVkcyB0aGUgR1NJIGluDQo+
Pj4gdXNlcnNwYWNlLiAgSXMgdGhpcyBwYXNzdGhyb3VnaCBicmFuZCBuZXcgZnVuY3Rpb25hbGl0
eSB0aGF0IGNhbid0IGJlDQo+Pj4gZG9uZSB0b2RheSBiZWNhdXNlIHdlIGRvbid0IGV4cG9zZSB0
aGUgR1NJIHlldD8NCj4+DQo+PiBJbiBYZW4gYXJjaGl0ZWN0dXJlLCB0aGVyZSBpcyBhIHByaXZp
bGVnZWQgZG9tYWluIG5hbWVkIERvbTAgdGhhdA0KPj4gaGFzIEFDUEkgc3VwcG9ydCBhbmQgaXMg
cmVzcG9uc2libGUgZm9yIGRldGVjdGluZyBhbmQgY29udHJvbGxpbmcNCj4+IHRoZSBoYXJkd2Fy
ZSwgYWxzbyBpdCBwZXJmb3JtcyBwcml2aWxlZ2VkIG9wZXJhdGlvbnMgc3VjaCBhcyB0aGUNCj4+
IGNyZWF0aW9uIG9mIG5vcm1hbCAodW5wcml2aWxlZ2VkKSBkb21haW5zIERvbVVzLiBXaGVuIHdl
IGdpdmUgdG8gYQ0KPj4gRG9tVSBkaXJlY3QgYWNjZXNzIHRvIGEgZGV2aWNlLCB3ZSBuZWVkIGFs
c28gdG8gcm91dGUgdGhlIHBoeXNpY2FsDQo+PiBpbnRlcnJ1cHRzIHRvIHRoZSBEb21VLiBJbiBv
cmRlciB0byBkbyBzbyBYZW4gbmVlZHMgdG8gc2V0dXAgYW5kIG1hcA0KPj4gdGhlIGludGVycnVw
dHMgYXBwcm9wcmlhdGVseS4NCj4gDQo+IFdoYXQga2VybmVsIGludGVyZmFjZXMgYXJlIHVzZWQg
Zm9yIHRoaXMgc2V0dXAgYW5kIG1hcHBpbmc/DQpGb3IgcGFzc3Rocm91Z2ggZGV2aWNlcywgdGhl
IHNldHVwIGFuZCBtYXBwaW5nIG9mIHJvdXRpbmcgcGh5c2ljYWwgaW50ZXJydXB0cyB0byBEb21V
IGFyZSBkb25lIG9uIFhlbiBoeXBlcnZpc29yIHNpZGUsIGh5cGVydmlzb3Igb25seSBuZWVkIHVz
ZXJzcGFjZSB0byBwcm92aWRlIHRoZSBHU0kgaW5mbywgc2VlIFhlbiBjb2RlOiB4Y19waHlzZGV2
X21hcF9waXJxIHJlcXVpcmUgR1NJIGFuZCB0aGVuIHdpbGwgY2FsbCBoeXBlcmNhbGwgdG8gcGFz
cyBHU0kgaW50byBoeXBlcnZpc29yIGFuZCB0aGVuIGh5cGVydmlzb3Igd2lsbCBkbyB0aGUgbWFw
cGluZyBhbmQgcm91dGluZywga2VybmVsIGRvZXNuJ3QgZG8gdGhlIHNldHVwIGFuZCBtYXBwaW5n
Lg0KRm9yIGRldmljZXMgb24gUFZIIERvbTAsIERvbTAgc2V0dXBzIGludGVycnVwdHMgZm9yIGRl
dmljZXMgYXMgdGhlIGJhcmVtZXRhbCBMaW51eCBrZXJuZWwgZG9lcywgdGhyb3VnaCB1c2luZyBh
Y3BpX3BjaV9pcnFfZW5hYmxlLT4gYWNwaV9yZWdpc3Rlcl9nc2ktPiBfX2FjcGlfcmVnaXN0ZXJf
Z3NpLT5hY3BpX3JlZ2lzdGVyX2dzaV9pb2FwaWMuDQoNCi0tIA0KQmVzdCByZWdhcmRzLA0KSmlx
aWFuIENoZW4uDQo=


From xen-devel-bounces@lists.xenproject.org Thu Jan 25 07:43:31 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 25 Jan 2024 07:43:31 +0000
Received: from list by lists.xenproject.org with outflank-mailman.671339.1044620 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSuOK-0006i0-GK; Thu, 25 Jan 2024 07:43:16 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 671339.1044620; Thu, 25 Jan 2024 07:43:16 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSuOK-0006ht-DM; Thu, 25 Jan 2024 07:43:16 +0000
Received: by outflank-mailman (input) for mailman id 671339;
 Thu, 25 Jan 2024 07:43:15 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=vt1H=JD=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rSuOJ-0006hn-8A
 for xen-devel@lists.xenproject.org; Thu, 25 Jan 2024 07:43:15 +0000
Received: from mail-lj1-x235.google.com (mail-lj1-x235.google.com
 [2a00:1450:4864:20::235])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 63450968-bb55-11ee-9b0f-b553b5be7939;
 Thu, 25 Jan 2024 08:43:10 +0100 (CET)
Received: by mail-lj1-x235.google.com with SMTP id
 38308e7fff4ca-2cdeb954640so78552931fa.3
 for <xen-devel@lists.xenproject.org>; Wed, 24 Jan 2024 23:43:11 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 x8-20020a056e02194800b003627f685d1dsm2516020ilu.39.2024.01.24.23.43.07
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 24 Jan 2024 23:43:10 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 63450968-bb55-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1706168590; x=1706773390; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=63RQ+M57HbberoytkjsN2ecRdeKnenHpzQByihc0hSM=;
        b=H7nmr5A3ZdimUkRO952HstEjuyPWirbMt2ItL80mN0p5mrEelSHSYYPBRzjsxgqx0b
         uligtiXqx8XArW622pSxcgmtgAjuqVRi9gAiRPVXDV8yABmbQSbXU6EYlyg+C9bEl2iM
         FFtOvBfJU+dbVFg2lGgMenhYW9Oe9kKhe9otnDmMyULkRM2R8SN0EuxxDMhHY7XFPzKy
         eErErlrBEShoiVZy/rcYxTn20HvgJp13z1hHwQvQDmcnTNFWzoYJBcBSpPyPgta5uhWY
         HSLgxYhLYY2uAAc0YKITOVk43IZWSBAtJWGVMvd2Xsn+R9n8bt9u3Cj2EcG7hSBiYFO3
         FLew==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706168590; x=1706773390;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=63RQ+M57HbberoytkjsN2ecRdeKnenHpzQByihc0hSM=;
        b=Sr67RltyMrXkXoDQwyOZTMSXHJmR4AuoASewiJvaNEBYdkdIXTB+dgvOehJYWRKqXq
         mvBjKVDZwv7c1YH9T8PvAofezj1A1O+8OXLkLcfYXmtVWjdO+a6bcgjHBAEBnCugnbV2
         2OZ1AcFKacrCbNdpa+JwJIgqh0Emj9hw/cpVdSZE03xbOn8YhWhNZZINf00iZHK4P5q3
         wRg5C/0U+H0C4E63SXrkrmzUJgGCNk1Gi526zZ95WnF/KE5W35SdJSNGq0b/vtzylBK3
         VbHCZadMET43evKhANCvwpZ8n7G3kvyLKjhpT5rK+MHqf8pLKO2mHOpnSdaqD14iqZvi
         COrg==
X-Gm-Message-State: AOJu0YxhnRMGjqWL6tyysrUveTK6bDwMkTNaxr7/WfmeYOdBEGIzW6E+
	H62W+oHh0YF2qattXtvr7qg3UGNcuxf5mWdHj14mcexJfo2YiiOm8/zuodhEXA==
X-Google-Smtp-Source: AGHT+IExOEfx+11MoK3uxVnzR7iTGGUfUvTIpDBxcDssBiFE/UFxa8/pYTLzSQvJgG8Tfr8uQZVlTg==
X-Received: by 2002:a2e:a99c:0:b0:2ce:fc2b:c739 with SMTP id x28-20020a2ea99c000000b002cefc2bc739mr392169ljq.104.1706168590551;
        Wed, 24 Jan 2024 23:43:10 -0800 (PST)
Message-ID: <fa7df700-06f1-4110-bc76-c59d59e5d887@suse.com>
Date: Thu, 25 Jan 2024 08:43:05 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v12.2 01/15] vpci: use per-domain PCI lock to protect vpci
 structure
Content-Language: en-US
To: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
Cc: Stewart Hildebrand <stewart.hildebrand@amd.com>,
 Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>,
 Andrew Cooper <andrew.cooper3@citrix.com>, Wei Liu <wl@xen.org>,
 George Dunlap <george.dunlap@citrix.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>,
 Jun Nakajima <jun.nakajima@intel.com>, Kevin Tian <kevin.tian@intel.com>,
 Paul Durrant <paul@xen.org>, Volodymyr Babchuk <volodymyr_babchuk@epam.com>,
 xen-devel@lists.xenproject.org
References: <20240109215145.430207-1-stewart.hildebrand@amd.com>
 <20240109215145.430207-2-stewart.hildebrand@amd.com>
 <20240115194309.45683-1-stewart.hildebrand@amd.com>
 <715e40c9-1776-4677-9565-dac1565a2aa8@suse.com> <Za_WGzS14Eqt8yZF@macbook>
 <ae7a57f2-2433-4b75-ab45-c8be55d489c9@suse.com> <ZbDXXyucJhLJ4u9H@macbook>
 <a3233487-965b-49ae-bebe-e5476fcda29c@suse.com> <ZbFOE6kV7NXFrNjb@macbook>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <ZbFOE6kV7NXFrNjb@macbook>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 24.01.2024 18:51, Roger Pau Monné wrote:
> On Wed, Jan 24, 2024 at 12:34:10PM +0100, Jan Beulich wrote:
>> On 24.01.2024 10:24, Roger Pau Monné wrote:
>>> On Wed, Jan 24, 2024 at 09:48:35AM +0100, Jan Beulich wrote:
>>>> On 23.01.2024 16:07, Roger Pau Monné wrote:
>>>>> On Tue, Jan 23, 2024 at 03:32:12PM +0100, Jan Beulich wrote:
>>>>>> On 15.01.2024 20:43, Stewart Hildebrand wrote:
>>>>>>> @@ -2888,6 +2888,8 @@ int allocate_and_map_msi_pirq(struct domain *d, int index, int *pirq_p,
>>>>>>>  {
>>>>>>>      int irq, pirq, ret;
>>>>>>>  
>>>>>>> +    ASSERT(pcidevs_locked() || rw_is_locked(&d->pci_lock));
>>>>>>
>>>>>> If either lock is sufficient to hold here, ...
>>>>>>
>>>>>>> --- a/xen/arch/x86/physdev.c
>>>>>>> +++ b/xen/arch/x86/physdev.c
>>>>>>> @@ -123,7 +123,9 @@ int physdev_map_pirq(domid_t domid, int type, int *index, int *pirq_p,
>>>>>>>  
>>>>>>>      case MAP_PIRQ_TYPE_MSI:
>>>>>>>      case MAP_PIRQ_TYPE_MULTI_MSI:
>>>>>>> +        pcidevs_lock();
>>>>>>>          ret = allocate_and_map_msi_pirq(d, *index, pirq_p, type, msi);
>>>>>>> +        pcidevs_unlock();
>>>>>>>          break;
>>>>>>
>>>>>
>>>>> IIRC (Stewart can further comment) this is done holding the pcidevs
>>>>> lock to keep the path unmodified, as there's no need to hold the
>>>>> per-domain rwlock.
>>>>
>>>> Yet why would we prefer to acquire a global lock when a per-domain one
>>>> suffices?
>>>
>>> I was hoping to introduce less changes, specially if they are not
>>> strictly required, as it's less risk.  I'm always quite worry of
>>> locking changes.
>>
>> In which case more description / code commenting is needed. The pattern
>> of the assertions looks dangerous.
> 
> Is such dangerousness perception because you fear some of the pcidevs
> lock usage might be there not just for preventing the pdev from going
> away, but also to guarantee exclusive access to certain state?

Indeed. In my view the main purpose of locks is to guard state. Their
use here to guard against devices here is imo rather an abuse; as
mentioned before this should instead be achieved e.g via refcounting.
And it's bad enough already that pcidevs_lock() alone has been abused
this way, without proper marking (leaving us to guess in many places).
It gets worse when a second lock can now also serve this same purpose.

>> Even if (as you say in a later reply)
>> this is only temporary, we all know how long "temporary" can be. It
>> might even be advisable to introduce a helper construct.
> 
> The aim here was to modify as little as possible, in order to avoid
> having to analyze all possible users of pcidevs lock, and thus not
> block the vPCI work on the probably lengthy and difficult analysis.
> 
> Not sure adding a construct makes is much better, as I didn't want to
> give the impression all checks for the pcidevs lock can merely be
> replaced by the new construct.

Of course such a construct could only be used in places where it can
be shown to be appropriate.

Jan


From xen-devel-bounces@lists.xenproject.org Thu Jan 25 07:49:24 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 25 Jan 2024 07:49:24 +0000
Received: from list by lists.xenproject.org with outflank-mailman.671344.1044631 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSuUC-0007ZQ-5L; Thu, 25 Jan 2024 07:49:20 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 671344.1044631; Thu, 25 Jan 2024 07:49:20 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSuUC-0007ZJ-1X; Thu, 25 Jan 2024 07:49:20 +0000
Received: by outflank-mailman (input) for mailman id 671344;
 Thu, 25 Jan 2024 07:49:18 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=vt1H=JD=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rSuUA-0007ZD-I4
 for xen-devel@lists.xenproject.org; Thu, 25 Jan 2024 07:49:18 +0000
Received: from mail-lj1-x22f.google.com (mail-lj1-x22f.google.com
 [2a00:1450:4864:20::22f])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 3de736b5-bb56-11ee-98f5-6d05b1d4d9a1;
 Thu, 25 Jan 2024 08:49:17 +0100 (CET)
Received: by mail-lj1-x22f.google.com with SMTP id
 38308e7fff4ca-2cf1288097aso29030631fa.0
 for <xen-devel@lists.xenproject.org>; Wed, 24 Jan 2024 23:49:17 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 he1-20020a0566386d0100b0046f2873f6c9sm72013jab.79.2024.01.24.23.49.15
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 24 Jan 2024 23:49:16 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 3de736b5-bb56-11ee-98f5-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1706168957; x=1706773757; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=eiEwNBI+YcpU2tqYvaVI5Vi3emYhfk5Pf1daxAbIN2E=;
        b=NZXtAmUlU8ZlFbXmp1E+etppom/yk6w/lz+YUgdSTVgkXx16suRahiC/o61f06WJVE
         PqWFBrN7gELu9k5Rygq6DInn8CzAbCjDUd9Rk6h/t8E7+C6mzv9KsFayK1bPsX+6YX/+
         k8Jhpk1yuhbrsZydgE+0UIF7ujlw89VGskW9eGxosN32MKrKV1tFfqVodr/R3DY9h125
         eq2Wrs6JN+mSzju4ZI/dZAkKA7RN4gHxTBMBT5qdNfaSSC8aCUPHdTADARTdWLs+51TQ
         M8Qv52HNdqO+YmVnw1r4QTbdc4F3xdrlKo1pae2JL2Y67Nz11BDkJzRuV1tXOeyHn/tA
         UGlQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706168957; x=1706773757;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=eiEwNBI+YcpU2tqYvaVI5Vi3emYhfk5Pf1daxAbIN2E=;
        b=ISXdvoHbj4B1so9EeB8lAhesavPt4m13q5unQNobK/RdMU1JsiVzPlMtZ/wLGrUKoi
         oYnQ/13jlTC5NRbP4uDIoxG7GSEkWV5eEMI0gaYe1jS3Ii7s1ggivALLY7ReLZQNs5AK
         x5CPCYAwdNG8vU/VIjTqWAEZYihJrpR3LPtkmYT43uT8R7HLTrsqwPnH4VAKbttfj8v+
         zS0ANQ/foRf3Ly8LJCArxJPqj/DWAL/ZGmkrUeeVsw0ZVw9uP+jnPQYB/NOA7Au5NNuU
         Jr7Fgpwlp5TDRnYeURPLzrf/MnWXV0aHAoScC2NH2qZGGOcmdSpF0RcWJWkZcl6zhRQG
         0u0w==
X-Gm-Message-State: AOJu0YyLxgpDNBcVlF3seZw/5Mo7bYhfIrXnXi55UL82bPAYlNbJHflh
	UoKvZXS/okdQZksjSPruDKDjPNmP/alT12fZ7wMy4zb9JhxfVExX+y0bsowj2w==
X-Google-Smtp-Source: AGHT+IF1IdCvR9dfDFMFZFjO+rW5IIRTpawFafXhLxbAfPWyQxXqn/UjXtDALrRgvsb0PcGTuj/hWg==
X-Received: by 2002:a2e:9b94:0:b0:2cd:4d27:2086 with SMTP id z20-20020a2e9b94000000b002cd4d272086mr313826lji.100.1706168957098;
        Wed, 24 Jan 2024 23:49:17 -0800 (PST)
Message-ID: <0be02b31-a50b-4ed3-9bb8-90cc61f0f20d@suse.com>
Date: Thu, 25 Jan 2024 08:49:13 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] x86/ucode: Fix stability of the Raw CPU Policy rescan
Content-Language: en-US
To: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Wei Liu <wl@xen.org>, Xen-devel <xen-devel@lists.xenproject.org>
References: <20240123205948.1782556-1-andrew.cooper3@citrix.com>
 <090f64ae-ecf3-4edc-a6c6-8be3a09ea1ba@suse.com>
 <95a1f94e-7c82-4996-8f24-87c6628bc81a@citrix.com>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <95a1f94e-7c82-4996-8f24-87c6628bc81a@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 24.01.2024 18:23, Andrew Cooper wrote:
> On 24/01/2024 3:37 pm, Jan Beulich wrote:
>> On 23.01.2024 21:59, Andrew Cooper wrote:
>>> Always run microcode_update_helper() on the BSP, so the the updated Raw CPU
>>> policy doesn't get non-BSP topology details included.
>> Wouldn't it be better (and consistent with ...
>>
>>> Have calculate_raw_cpu_policy() clear the instantanious XSTATE sizes.  The
>>> value XCR0 | MSR_XSS had when we scanned the policy isn't terribly interesting
>>> to report.
>> ... this) to purge these details from the raw policy as well then?
> 
> I did spend some time considering this.
> 
> Rerunning on the same CPU is more resilient to new topology leaves, so
> we'd want to be doing that irrespective.

I'm afraid I don't understand this: If a ucode update surfaced new leaves,
they surely would appear on all CPUs? IOW my question still stands: Wouldn't
we better zap topology data from the raw policy (thus also not propagating
it into other policies)? At which point retrieval becomes independent of
what CPU it is run on (if there were any other CPU-specific pieces of data,
similar zapping should happen for them).

Surely using CPU0 here isn't much of a problem, as this is a pretty
infrequent event. But generally I'd like to avoid "preferring" CPU0 as much
as possible. Hence I'd prefer if even in cases like this one we could avoid
it.

> The XCR0/XSS state really is transient, and the useful information is
> everywhere else in leaf 0xd.

Sure, but this is still independent on what CPU the retrieval is run on.

Jan


From xen-devel-bounces@lists.xenproject.org Thu Jan 25 07:59:17 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 25 Jan 2024 07:59:17 +0000
Received: from list by lists.xenproject.org with outflank-mailman.671349.1044641 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSudl-0000zk-0w; Thu, 25 Jan 2024 07:59:13 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 671349.1044641; Thu, 25 Jan 2024 07:59:12 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSudk-0000zd-Ty; Thu, 25 Jan 2024 07:59:12 +0000
Received: by outflank-mailman (input) for mailman id 671349;
 Thu, 25 Jan 2024 07:59:10 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=vt1H=JD=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rSudi-0000zX-SV
 for xen-devel@lists.xenproject.org; Thu, 25 Jan 2024 07:59:10 +0000
Received: from mail-lf1-x136.google.com (mail-lf1-x136.google.com
 [2a00:1450:4864:20::136])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 9ef09e0b-bb57-11ee-98f5-6d05b1d4d9a1;
 Thu, 25 Jan 2024 08:59:09 +0100 (CET)
Received: by mail-lf1-x136.google.com with SMTP id
 2adb3069b0e04-5100893015fso3338482e87.1
 for <xen-devel@lists.xenproject.org>; Wed, 24 Jan 2024 23:59:09 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 h16-20020a056602155000b007bc45c52f55sm7466419iow.13.2024.01.24.23.59.07
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 24 Jan 2024 23:59:08 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 9ef09e0b-bb57-11ee-98f5-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1706169549; x=1706774349; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=NgHQziVKHREXn1KO8sOhxHpYyzc78sndffEbjiPRUfQ=;
        b=D75qZHVdKDOxzEZT+Q38BnTaNBlEaM8jj8Q6fL5ged+k2x5Ye0FR9NkSFyHmt2ANE/
         gHGQFa41mB1uaTa2UvFbL5jnGbCI81/rUFYFKMKCfl2mt1577EmiT/48cBqhj+OZpmR7
         tjpAMSXshy/4Dhtucjh1pFtXZmEHhbSn/p2fTdXTXDVnKnyPea+sS92BzV/ljt1GRV+X
         pWUW2MAx4k//1B//Zk5C7lGZSBrrnsTxZHW8+QQ1ttSH+3PCyMkjDEKYCrIo1fnzj80X
         AmKg6hCCrqIdRfQJLHwCbZTmy7bXdZnxEglTealjScQkB06kMtk9fAoLZgRtc2W9HQts
         VXDg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706169549; x=1706774349;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=NgHQziVKHREXn1KO8sOhxHpYyzc78sndffEbjiPRUfQ=;
        b=vqFXxePPQkyXSgWfgU3TH7bu4IFTjVNQuF/3jJeyP0HNjMq+tddR5vAGeFSRTENVhz
         jFCtWKBWGmsqhn9YwyJ6TSlmQF9A6zdDlwwFMqZ17qcfOqTkoNA+wsNWjLK+hpXxFxWD
         Ef2y++h63H5zyjl8vOKeUgGzejJhqYcb1WltwlrlK1cd5MDvwFe957LsJD6zchP6G2W8
         LRmZa5Sf2ZhemGxdURDQANWBuc+jlI+aXXz8mbm7UKrLTbom0yAp3NTp/I80cMxEp/qn
         39OYRNEswn3lwsEqv4Rs5fKceZQRV9miP+yR21CGOJ14X2kxRz++ebiWnUiqZxysJpHj
         XZEg==
X-Gm-Message-State: AOJu0Yw1NlCpfzWiUohYJk1zT+NmYt8Hunnjlaf94C14WyAmph7iMJDM
	L9i2G70ulhBtmD+LBT3TbaMjGxjHq9FKd+GEP/kvoaJBor5KbuU2Wl64bOlLeQ==
X-Google-Smtp-Source: AGHT+IEXI6vk4q8PkoL/yXfUBUc4H/PIDqIJcVsqyJcre1kD3mZLkDHIuBEeYkPIVQXsM2lz6UfX1Q==
X-Received: by 2002:ac2:44bb:0:b0:50f:f9bc:b248 with SMTP id c27-20020ac244bb000000b0050ff9bcb248mr115555lfm.165.1706169549304;
        Wed, 24 Jan 2024 23:59:09 -0800 (PST)
Message-ID: <6bb0ba9e-0f69-4e31-a99c-16a1ce94a9cf@suse.com>
Date: Thu, 25 Jan 2024 08:59:05 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] x86: amend 'n' debug-key output with SMI count
Content-Language: en-US
To: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: Wei Liu <wl@xen.org>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger.pau@citrix.com>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
References: <50978ef4-9f11-4c70-952b-94107616f265@suse.com>
 <e6dcf78b-bd68-49bc-8711-381befc25f02@citrix.com>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <e6dcf78b-bd68-49bc-8711-381befc25f02@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 24.01.2024 17:24, Andrew Cooper wrote:
> On 24/01/2024 3:27 pm, Jan Beulich wrote:
>> ... if available only, of course.
>>
>> Signed-off-by: Jan Beulich <jbeulich@suse.com>
>>
>> --- a/xen/arch/x86/cpu/common.c
>> +++ b/xen/arch/x86/cpu/common.c
>> @@ -406,9 +406,15 @@ void __init early_cpu_init(bool verbose)
>>  		paddr_bits -= (ebx >> 6) & 0x3f;
>>  	}
>>  
>> -	if (!(c->x86_vendor & (X86_VENDOR_AMD | X86_VENDOR_HYGON)))
>> +	if (!(c->x86_vendor & (X86_VENDOR_AMD | X86_VENDOR_HYGON))) {
>> +		uint64_t smi_count;
>> +
>>  		park_offline_cpus = opt_mce;
>>  
>> +		if (!verbose && !rdmsr_safe(MSR_SMI_COUNT, smi_count))
>> +			setup_force_cpu_cap(X86_FEATURE_SMI_COUNT);
>> +	}
>> +
> 
> I know you're re-using an existing condition, but I think it's more
> likely that it's Intel-only than common to VIA and Shanghai.

Then again when re-using the condition I questioned how likely it is
that people actually use Xen on CPUs of these two vendors, when the
respective code is only bit-rotting.

> Also, why is gated on verbose?
> 
> (I think I can see why this is rhetorical question, and I expect you can
> guess what the feedback will be.)

Hmm, no, I don't think I can guess that. The reason is simple: In
case the MSR doesn't exist, I'd like to avoid the respective (debug)
log message, emitted while recovering from the #GP, appearing twice.
(Which imo eliminates the only guess I might otherwise have: Don't
add complexity [the extra part of the condition] when it's not
needed.)

>> --- a/xen/arch/x86/nmi.c
>> +++ b/xen/arch/x86/nmi.c
>> @@ -589,9 +589,20 @@ static void cf_check do_nmi_stats(unsign
>>      unsigned int cpu;
>>      bool pend, mask;
>>  
>> -    printk("CPU\tNMI\n");
>> +    printk("CPU\tNMI%s\n", boot_cpu_has(X86_FEATURE_SMI_COUNT) ? "\tSMI" : "");
>>      for_each_online_cpu ( cpu )
>> -        printk("%3u\t%3u\n", cpu, per_cpu(nmi_count, cpu));
>> +    {
>> +        printk("%3u\t%3u", cpu, per_cpu(nmi_count, cpu));
>> +        if ( boot_cpu_has(X86_FEATURE_SMI_COUNT) )
>> +        {
>> +            unsigned int smi_count, dummy;
>> +
>> +            rdmsr(MSR_SMI_COUNT, smi_count, dummy);
>> +            printk("\t%3u\n", smi_count);
> 
> This reads MSR_SMI_COUNT repeatedly on the same CPU.
> 
> You'll need to IPI all CPUs to dump the count into a per-cpu variable.

Oh, how embarrassing.

Jan


From xen-devel-bounces@lists.xenproject.org Thu Jan 25 08:05:23 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 25 Jan 2024 08:05:23 +0000
Received: from list by lists.xenproject.org with outflank-mailman.671357.1044650 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSujf-00034i-35; Thu, 25 Jan 2024 08:05:19 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 671357.1044650; Thu, 25 Jan 2024 08:05:19 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSujf-00034b-0a; Thu, 25 Jan 2024 08:05:19 +0000
Received: by outflank-mailman (input) for mailman id 671357;
 Thu, 25 Jan 2024 08:05:18 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=vt1H=JD=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rSuje-00034V-30
 for xen-devel@lists.xenproject.org; Thu, 25 Jan 2024 08:05:18 +0000
Received: from mail-lf1-x136.google.com (mail-lf1-x136.google.com
 [2a00:1450:4864:20::136])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 79f3c7e1-bb58-11ee-98f5-6d05b1d4d9a1;
 Thu, 25 Jan 2024 09:05:17 +0100 (CET)
Received: by mail-lf1-x136.google.com with SMTP id
 2adb3069b0e04-51005675963so4334472e87.0
 for <xen-devel@lists.xenproject.org>; Thu, 25 Jan 2024 00:05:17 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 a13-20020a056638004d00b0046e6a6482d2sm4465850jap.97.2024.01.25.00.05.15
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 25 Jan 2024 00:05:16 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 79f3c7e1-bb58-11ee-98f5-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1706169917; x=1706774717; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=EQfWqoPL3Zc4FUHGRm3o67KgNh0b/gQtidd9nh9cEh0=;
        b=C+TQHLoy45AbBYnsTWjNvwT1zjMpUTbu8FXSnYGTl4vmtVoHz0wigtzeOTJAthQLFV
         w45zwj+lt7lYaqkz2oPyrq/JkqSuTBn46p9IT4E36sck8/FHpjlb92/ODgy9U/jOpToj
         TQT69M2KczMOns5hWP/nUjqnhDhVU4/s8FwLZOMhLDr/Jrbc34a2swFUO3Qd5MyvgHGD
         vUr9L+7oPXlpV94BjCwmcQ/kon31fGqvC7KMHMG6IHPNj8p0H636y+IMcsKzehNVGRz+
         EeQ4Ytf/wYYYuQ+pkq1fsR7cnp5WdSJ+Owd+6IWjRucTMpmGoZps7Rc9uuhD9UBYeWUk
         uVRg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706169917; x=1706774717;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=EQfWqoPL3Zc4FUHGRm3o67KgNh0b/gQtidd9nh9cEh0=;
        b=q2VjCavORtQv6+TRJiYpOFJqfGiZa6eEU1sniChplj6CA5Gv4vR02L/OMzHBWcWZmX
         aR2iB9pSdDj/hkbvDy8qUR0k1Xo21KaFIEt+ZZjF46shyT9PimR9EtlakvUZJLAeG7wj
         Xrpl4Mi9kwK1WoWEQAc9JAA5Ekqt/PUa1bgYsdckXFv/KKdGcB3IG373SCBb1E5vFmLD
         Gq3iKyrTu1F/m1YtJotQhpqifzp6snUoUiU+Mh3GLq6EJ04Od6i62mi8A+29V2OmOsTT
         c4vqiEXm3jYWNGVJ6qELjnKl08jZIzPu2jI6jrI6C3GGloYXJ4IiCwzmoygpudhShRue
         hWQg==
X-Gm-Message-State: AOJu0YznFTnw5yUQAZXWaWA2RvjXYcuPRzrSkiNbiuBDUExR8CLo1OcD
	lRi4lztHdD/K+xDqFgKe/lbIZrJ9FXd6fO7/li4uhaOzeuOdQtO3M/KhnnySvg==
X-Google-Smtp-Source: AGHT+IGxRoI/Itr3WhBPDTbfxIl1BcuTg/+DlpWQ0RmmWch3QKjBwlYmR7e+8TNWCas7yDzSX/SqLg==
X-Received: by 2002:a05:6512:3603:b0:510:12f4:ea36 with SMTP id f3-20020a056512360300b0051012f4ea36mr153853lfs.125.1706169916807;
        Thu, 25 Jan 2024 00:05:16 -0800 (PST)
Message-ID: <c8f3e7d4-8b7c-4835-b63b-dc784f27a936@suse.com>
Date: Thu, 25 Jan 2024 09:05:13 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] x86/NMI: refine "watchdog stuck" log message
Content-Language: en-US
To: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: Wei Liu <wl@xen.org>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger.pau@citrix.com>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
References: <87108f1d-4b13-4c1e-9432-4f14d4f5c12d@suse.com>
 <add9b6b3-cc50-4165-8f63-cd4541a3ba23@citrix.com>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <add9b6b3-cc50-4165-8f63-cd4541a3ba23@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 24.01.2024 16:55, Andrew Cooper wrote:
> On 24/01/2024 3:21 pm, Jan Beulich wrote:
>> Observing
>>
>> "Testing NMI watchdog on all CPUs: 0 stuck"
>>
>> it felt like it's not quite right, but I still read it as "no CPU stuck;
>> all good", when really the system suffered from what 6bdb965178bb
>> ("x86/intel: ensure Global Performance Counter Control is setup
>> correctly") works around. Convert this to
>>
>> "Testing NMI watchdog on all CPUs: {0} stuck"
>>
>> or, with multiple CPUs having an issue, e.g.
>>
>> "Testing NMI watchdog on all CPUs: {0,40} stuck"
>>
>> to make more obvious that a lone number is not a count of CPUs.
>>
>> Signed-off-by: Jan Beulich <jbeulich@suse.com>
> 
> I'd forgotten it was still opencoded like this.
> 
> Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>,

Thanks (Roger, also to you).

> but if you felt
> turning this into using a scratch cpumask and %*pb then I think that
> would be nicer still.

I expected you might say that, and indeed I considered it. But then
I wanted to keep code churn limited. The way it's done it's imo an
almost purely mechanical change. Much like with Roger's consideration
of further refining the message text in the error case.

Jan


From xen-devel-bounces@lists.xenproject.org Thu Jan 25 08:13:08 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 25 Jan 2024 08:13:08 +0000
Received: from list by lists.xenproject.org with outflank-mailman.671364.1044661 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSur9-00052I-SR; Thu, 25 Jan 2024 08:13:03 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 671364.1044661; Thu, 25 Jan 2024 08:13:03 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSur9-00052B-Od; Thu, 25 Jan 2024 08:13:03 +0000
Received: by outflank-mailman (input) for mailman id 671364;
 Thu, 25 Jan 2024 08:13:02 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=HXBH=JD=arm.com=Bertrand.Marquis@srs-se1.protection.inumbo.net>)
 id 1rSur7-000525-Sm
 for xen-devel@lists.xenproject.org; Thu, 25 Jan 2024 08:13:02 +0000
Received: from EUR05-DB8-obe.outbound.protection.outlook.com
 (mail-db8eur05on20614.outbound.protection.outlook.com
 [2a01:111:f400:7e1a::614])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 8e134496-bb59-11ee-98f5-6d05b1d4d9a1;
 Thu, 25 Jan 2024 09:13:01 +0100 (CET)
Received: from AS4P191CA0049.EURP191.PROD.OUTLOOK.COM (2603:10a6:20b:657::8)
 by AS8PR08MB7694.eurprd08.prod.outlook.com (2603:10a6:20b:509::13) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7202.37; Thu, 25 Jan
 2024 08:12:53 +0000
Received: from AM4PEPF00027A6C.eurprd04.prod.outlook.com
 (2603:10a6:20b:657:cafe::d9) by AS4P191CA0049.outlook.office365.com
 (2603:10a6:20b:657::8) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7228.26 via Frontend
 Transport; Thu, 25 Jan 2024 08:12:53 +0000
Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by
 AM4PEPF00027A6C.mail.protection.outlook.com (10.167.16.90) with
 Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.7202.16 via Frontend Transport; Thu, 25 Jan 2024 08:12:53 +0000
Received: ("Tessian outbound 31df1b57f90c:v228");
 Thu, 25 Jan 2024 08:12:53 +0000
Received: from 6af32a26a48e.1
 by 64aa7808-outbound-1.mta.getcheckrecipient.com id
 F5BE83B3-52FF-4943-8253-1241157E90D0.1; 
 Thu, 25 Jan 2024 08:12:46 +0000
Received: from EUR04-DB3-obe.outbound.protection.outlook.com
 by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id 6af32a26a48e.1
 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384);
 Thu, 25 Jan 2024 08:12:46 +0000
Received: from DB9PR08MB6588.eurprd08.prod.outlook.com (2603:10a6:10:25a::24)
 by DB4PR08MB9215.eurprd08.prod.outlook.com (2603:10a6:10:3f9::9) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7228.22; Thu, 25 Jan
 2024 08:12:44 +0000
Received: from DB9PR08MB6588.eurprd08.prod.outlook.com
 ([fe80::2257:5fcb:b449:fff0]) by DB9PR08MB6588.eurprd08.prod.outlook.com
 ([fe80::2257:5fcb:b449:fff0%7]) with mapi id 15.20.7228.026; Thu, 25 Jan 2024
 08:12:44 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 8e134496-bb59-11ee-98f5-6d05b1d4d9a1
ARC-Seal: i=2; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=pass;
 b=fwxdcqCoY6s2ctR/mk4wQgOzpwahAaO2OaFzoW1KB7oIINm8cQdYNjCM8ob78bb9Z1EWoubEHYeEBNU7myOIeUdfnDqn3E2Hg0ZXWCAZaZ9P8Cascm+Ic3CNhmpZlI7Th7Ebp/pIR0loecWFbqUbHpB5BKOMMHxzWcfPTjP6c0P2n/LBIxyl9geKjI7szcUOPll3aNwmJT4NNjNyvXS83/Zj1M915RCo6QElDf4TqdwjSf3yCsFGlaGCkNwNT0R/ZD7sCK6kDhoUuF4gfhQTFb/g4J6cpfo+DpKbjIJMRAtITB7VDJH7xZoCyLfUQ3x24BNB3nMvVGujoHm5Px3vyg==
ARC-Message-Signature: i=2; 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=nxOjUDVLy5NJj7meipqkoXYird+x4/d1Tap1486Yjns=;
 b=Z5iqK/5saEUite/cA5FgI91B/BD81yYvbomtRwOJDXe59lgedrtZvY48YxpWmyALfoDlo8SjeDdmiOkqDQbzzEJsV7IvVcv7EwF7/F9boSHN0zlelhWiedaddLm617RYiuiG0S7Dx/WJs9egIMMNWvOm728b8lughu+Es/qwGw39F/GSDXJjVb6bIAOgGPNIV39ak05xNGeOo6vUasV6PyH9gSWFYqrEVKsDTTqrYgx/3TYTrSWw3HjUFKutoOu1yeC+WAIsm7mIbxLIPQXPgt5RIsUQ8rJ82n3DbJHWhfYH30m8izvaPpNEl81Mnz66d6E2OhCq5f2tudmzQYBgbA==
ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is
 63.35.35.123) smtp.rcpttodomain=lists.xenproject.org smtp.mailfrom=arm.com;
 dmarc=pass (p=none sp=none pct=100) action=none header.from=arm.com;
 dkim=pass (signature was verified) header.d=armh.onmicrosoft.com; arc=pass (0
 oda=1 ltdi=1 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com]
 dmarc=[1,1,header.from=arm.com])
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com;
 s=selector2-armh-onmicrosoft-com;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=nxOjUDVLy5NJj7meipqkoXYird+x4/d1Tap1486Yjns=;
 b=qUdq3WxO+Ny6stQKHKRuBgZlGQ/g+niZCI5l3l6xn3BVcTH361uY6whLsYsfcEtI/q0KPBuiMmdUyy+/m8Orpq60FmHe9kXV0TDSkmpRFAcCYLdHtdhXTs7L65k+uBMMMptXJDCmQqnsZgEGv7/+e3YhR3OrqbMWa/lntyorZVw=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 63.35.35.123)
 smtp.mailfrom=arm.com; dkim=pass (signature was verified)
 header.d=armh.onmicrosoft.com;dmarc=pass action=none header.from=arm.com;
Received-SPF: Pass (protection.outlook.com: domain of arm.com designates
 63.35.35.123 as permitted sender) receiver=protection.outlook.com;
 client-ip=63.35.35.123; helo=64aa7808-outbound-1.mta.getcheckrecipient.com;
 pr=C
X-CheckRecipientChecked: true
X-CR-MTA-CID: 7a27b57da3111c55
X-CR-MTA-TID: 64aa7808
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=ZvwV83Z/zwwrZpQAc3aRiOgZOsqtfPwDd/HJTUpUhQH2Ir1Hok5CyB6cRFTkwg/Biz0OsOkJFbINL2QfDvp3u/15zdnqJ9pGXNqgzn9hGKsa1OychWgrf84r0RG8aqv9+Xwkqec08PokUncOI/WQ2RSnnMTVVyZPG5CnncVkgiiOw85AG+lRKYQOmmSNDBS2cUK6AIOPT4o5W888GTJqftyhlGvq7nb18PfnWSR2ah0xqs5T8e92V64xg3Idv5G988DjQkTYFJyl0DqxrleFefISd4MrFFgvZ4wRtKodKQmaoKCRrrPv6NwDjFtDsg19qMWT2ZdPL6vYUq+Bu/RE4Q==
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=nxOjUDVLy5NJj7meipqkoXYird+x4/d1Tap1486Yjns=;
 b=C6p8j9UiXp1cdwKqGUgpysrU62qfsQjFuKhKOU0TIlWUn4FAfAS9s+4UOvpJ+p7+oo1+Mi6Mon8qFafWyIEwLppyrKL5LGucwU1rlE+3lZnaIlQsb7EBCpSg94FZV5pHfdTSn9Q/SHA23UC7yxYiMYsyNgo0gLHWcsToz5m1Rtc794VvSNyj/Yqgr1DfMxYNp61irF2iKYaYA1IYTYHn9VFijhwNDDyf1gF+OrX0MGoTFJP6XwWc/OA4noeC4m/DiF0eOIJE3m7m64tN8ODq8ghyJ1E/ckHtcVvu8m4Uk+7naiRzqCz+FlDrYNpJfwTMHCotf1HDc1BlF7WM937Etw==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass
 header.d=arm.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com;
 s=selector2-armh-onmicrosoft-com;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=nxOjUDVLy5NJj7meipqkoXYird+x4/d1Tap1486Yjns=;
 b=qUdq3WxO+Ny6stQKHKRuBgZlGQ/g+niZCI5l3l6xn3BVcTH361uY6whLsYsfcEtI/q0KPBuiMmdUyy+/m8Orpq60FmHe9kXV0TDSkmpRFAcCYLdHtdhXTs7L65k+uBMMMptXJDCmQqnsZgEGv7/+e3YhR3OrqbMWa/lntyorZVw=
From: Bertrand Marquis <Bertrand.Marquis@arm.com>
To: Paul Leiber <paul@onlineschubla.de>
CC: Xen-devel <xen-devel@lists.xenproject.org>, Stefano Stabellini
	<sstabellini@kernel.org>, Julien Grall <julien@xen.org>, Michal Orzel
	<michal.orzel@amd.com>
Subject: Re: Xen 4.18rc/ARM64 on Raspberry Pi 4B: Traffic in DomU crashing
 Dom0 when using VLANs
Thread-Topic: Xen 4.18rc/ARM64 on Raspberry Pi 4B: Traffic in DomU crashing
 Dom0 when using VLANs
Thread-Index:
 AQHZ/gcaPQmWs3huW06NGLzfgAl1VbBVWRAAgIUTWgCAB8TBgIAEEyeAgAFsJwCAAocXgIAAmOCA
Date: Thu, 25 Jan 2024 08:12:44 +0000
Message-ID: <D24E1CA2-4033-455D-A97A-3D35547FAE76@arm.com>
References: <838ff75f-1352-4d3c-9bc1-c7a57c828231@onlineschubla.de>
 <4cddfd89-f195-4a50-a14d-b86121414e56@onlineschubla.de>
 <f8f39239-ea95-4fc7-9abe-6ca005eb02d2@onlineschubla.de>
 <ZarcWQ6Ugwowy050@mattapan.m5p.com>
 <CA+zSX=Y=BsVEp3o6jRprn5sntWVA0Z6wNXUxtffDN+=fPv_Fzg@mail.gmail.com>
 <D2496DDC-78FA-4CC1-B7FC-EB62E506BC4F@arm.com>
 <1572ed53-494d-4dd0-b470-85ff2efb229b@onlineschubla.de>
In-Reply-To: <1572ed53-494d-4dd0-b470-85ff2efb229b@onlineschubla.de>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-mailer: Apple Mail (2.3774.200.91.1.1)
Authentication-Results-Original: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=arm.com;
x-ms-traffictypediagnostic:
	DB9PR08MB6588:EE_|DB4PR08MB9215:EE_|AM4PEPF00027A6C:EE_|AS8PR08MB7694:EE_
X-MS-Office365-Filtering-Correlation-Id: 25fa72da-e691-418b-ba48-08dc1d7d6e08
x-checkrecipientrouted: true
nodisclaimer: true
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted: BCL:0;
X-Microsoft-Antispam-Message-Info-Original:
 4ZLWP7XMRk7v35+aGCYkdHwc+eHnxgtj5fRxGH8sO/FXF8ninydb/Wt+9tZDjwa7T98GytInuI2xjVzvT0wKjykJgDNbYC0IoPfERm20cmGQhhkeWJgcG9F4SIhmquxDrVenhc8KX9SFRr/NTPansjdkjAoiIwP/qi/5DBGASGmxhiL34goGIj3HqlUzD4KhZxm35SFGbV2SJaqYkvYyOl63mmZNXwx0L6zJnRMtWcHxuqlVgY5EbSbb4TVsEOAplBEqffy4rvoF8hg/rG6aFBRaKJuxZhlx3XeSjFOlhmgiaVp838lMlUCZNSm0P9+mcTipRqlYVr91U0xXJ1Bxc4DVjGVMgwRzPAOU6ztzhq4hoH9Fl8L9BhdXAFpKWA2OKMC3/qmtMfcl3MunZ5BqrJRLenJwKpObVJOyI+401is3XTYy+HHKe6Va/OPbIwBLO/6HMbQPcaOwcmCdE89YdsyImVqd0LbQOzb0gQ7tOSx4D9WnHV5vG4Qux00bibWQ9aWFoVOGwrCPBzigtzPI79v3Kq8akS1L+BO9xMwzGf7AVmbJZnZUgRJXXn2yp3YeLrG7tHAy6Lc772lQsiN1hMnv7kEF+l+99HvAtR4rqK4cecUEEvUd6EUHkEbusXMwm9rhHY4SRfaX4NX6UAtT/bB/1i8EnQDWj7kVws35kcWpdEiWldwqIZReLnvzaacyTZXQCvh1ir40G9HY4+5w/Ewpbet7C/3iCcOj3QrOyFs=
X-Forefront-Antispam-Report-Untrusted:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DB9PR08MB6588.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230031)(396003)(376002)(136003)(346002)(366004)(39860400002)(230273577357003)(230173577357003)(230922051799003)(64100799003)(186009)(451199024)(1800799012)(86362001)(5660300002)(2906002)(30864003)(41300700001)(38070700009)(36756003)(33656002)(76116006)(38100700002)(83380400001)(6916009)(6486002)(478600001)(316002)(66476007)(66556008)(64756008)(66446008)(66946007)(54906003)(2616005)(966005)(66574015)(6506007)(4326008)(8676002)(8936002)(53546011)(6512007)(122000001)(71200400001)(45980500001)(579004);DIR:OUT;SFP:1101;
Content-Type: text/plain; charset="utf-8"
Content-ID: <7F9C95F84EE89248A74EE6EE026FF4EB@eurprd08.prod.outlook.com>
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB4PR08MB9215
Original-Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=arm.com;
X-EOPAttributedMessage: 0
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 AM4PEPF00027A6C.eurprd04.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	d441600f-8e03-495a-5580-08dc1d7d688b
X-Microsoft-Antispam: BCL:0;
X-Microsoft-Antispam-Message-Info:
	xS77+2hqoo7cU+4WP4Ksnagwjs0bgEBy1DDe6qms180vFMmmru54DkdUVAtjCT7vry4GlMpqdN5Qx5b4phwRuuDTBlSoRFg/7FOqRKX8X0ExMPni2OWFjCgCt85th6mBq53R5pJBxwqt+Xqw3VpRl6yr3pJphUU46vPpI24L7bqTVKSOLzvqvSJjcfxEhXqEDb9k3NZNm7n2qiMZPFvQYFErattjSE68S06UqldWb8ViBIIYpWeV3e8llx7f2AlRG1JxLrO9AB0H7OZ/m/Jxjg3saJHIlcgZOtrEHRtm5KBhQpvPYP3P6z8LIxB4l5Q2vKbGGvhOv+w8yXT4uQYXIhoBqqX//PEdQmF1z1pNQuo52UrVn/7fMfiqSbGeL7Vr1zREnl0V72b8E8eZ4JknHZ4hjCzr9WibGs2Nw25fXPwVR0EDzwwEF2hRTXETtVisK6Q7UUqFlupbN44NjILg8nJg96UnDa1fclVgdWhSlS9sD4c//F7Jtn1jyE5hWTL/B8AIIc6qegp/OaNkiXUH9vVcQNtg3wY50Mim9De6Jd5vrnmjoHWrnZkiH7V1zKlYdbA463KfZQd8O2a/oyKZwwevAu4y2ZBXW886cCAnn3maeG4n4nvV5uKY3hGYsc4oNShzHGhehcSu2sjs4IpfWRPfUXtbq4oqrWQY171d4U8XLVEQ2uBPczuPUGm8EvQeNK6KALOBocxjhNMi9FUSkY9+y3rDa5Onf3XHivRFCbtxlzpEYUTJl0Li6emnmmyceX313vXy7mazzyAs/cHx5NxBcclL5BQS2pSLUbgkkUSVQEshPPwU5yodQRomepCj
X-Forefront-Antispam-Report:
	CIP:63.35.35.123;CTRY:IE;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:64aa7808-outbound-1.mta.getcheckrecipient.com;PTR:ec2-63-35-35-123.eu-west-1.compute.amazonaws.com;CAT:NONE;SFS:(13230031)(4636009)(376002)(136003)(396003)(346002)(39860400002)(230922051799003)(230173577357003)(230273577357003)(186009)(64100799003)(1800799012)(82310400011)(451199024)(40470700004)(46966006)(36840700001)(6862004)(83380400001)(36756003)(316002)(86362001)(81166007)(2616005)(356005)(70206006)(70586007)(6512007)(54906003)(33656002)(41300700001)(53546011)(47076005)(8676002)(6506007)(82740400003)(5660300002)(66574015)(336012)(8936002)(26005)(30864003)(36860700001)(2906002)(4326008)(478600001)(40480700001)(40460700003)(6486002)(966005);DIR:OUT;SFP:1101;
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Jan 2024 08:12:53.3326
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 25fa72da-e691-418b-ba48-08dc1d7d6e08
X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[63.35.35.123];Helo=[64aa7808-outbound-1.mta.getcheckrecipient.com]
X-MS-Exchange-CrossTenant-AuthSource:
	AM4PEPF00027A6C.eurprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR08MB7694

SGkgUGF1bCwNCg0KUGxlYXNlIGtlZXAgbWUgaW4gQ0Mgc28gdGhhdCBpIGNhbiBtb3JlIGVhc2ls
eSBmaW5kIG91dCB0aGF0IHlvdSBhbnN3ZXJlZCBtZSA6LSkNCg0KPiBPbiAyNSBKYW4gMjAyNCwg
YXQgMDA6MDUsIFBhdWwgTGVpYmVyIDxwYXVsQG9ubGluZXNjaHVibGEuZGU+IHdyb3RlOg0KPiAN
Cj4gRWxsaW90LCBCZXJ0cmFuZCwgR2VvcmdlOiBUaGFua3MgZm9yIHlvdXIgcmVwbGllcy4NCj4g
DQo+IEFtIDIzLjAxLjIwMjQgdW0gMDk6Mjkgc2NocmllYiBCZXJ0cmFuZCBNYXJxdWlzOg0KPj4g
SGksDQo+PiAgd2lsbCB0cnkgdG8gZXhwbGFpbiBzb21lIG9mIHRoZSBtZXNzYWdlcyBoZXJlIGFm
dGVyIGJ1dCBJIGFtIG5vdCBzdXJlIG9mIHRoZSByZWFzb24NCj4+IG9mIHRoZSBjcmFzaCBzbyBJ
IHdpbGwganVzdCBzZXQgc29tZSBwb2ludGVycy4uLg0KPj4+IE9uIDIyIEphbiAyMDI0LCBhdCAx
MTo0NiwgR2VvcmdlIER1bmxhcCA8Z2VvcmdlLmR1bmxhcEBjbG91ZC5jb20+IHdyb3RlOg0KPj4+
IA0KPj4+IE9uIEZyaSwgSmFuIDE5LCAyMDI0IGF0IDg6MzLigK9QTSBFbGxpb3R0IE1pdGNoZWxs
IDxlaGVtK3hlbkBtNXAuY29tPiB3cm90ZToNCj4+Pj4gDQo+Pj4+IE9uIFN1biwgSmFuIDE0LCAy
MDI0IGF0IDEwOjU0OjI0UE0gKzAxMDAsIFBhdWwgTGVpYmVyIHdyb3RlOg0KPj4+Pj4gDQo+Pj4+
PiBBbSAyMi4xMC4yMDIzIHVtIDA3OjQyIHNjaHJpZWIgUGF1bCBMZWliZXI6DQo+Pj4+Pj4gQW0g
MTMuMTAuMjAyMyB1bSAyMDo1NiBzY2hyaWViIFBhdWwgTGVpYmVyOg0KPj4+Pj4+PiBIaSBYZW4g
ZGV2ZWxvcGVycyBsaXN0LA0KPj4+Pj4+PiANCj4+Pj4+Pj4gVEw7RFI6DQo+Pj4+Pj4+IC0tLS0t
LQ0KPj4+Pj4+PiANCj4+Pj4+Pj4gQ2F1c2luZyBjZXJ0YWluIHdlYiBzZXJ2ZXIgdHJhZmZpYyBv
biBhIHNlY29uZGFyeSBWTEFOIG9uIFJhc3BiZXJyeSBQaQ0KPj4+Pj4+PiB1bmRlciB2YW5pbGxh
IERlYmlhbi9VRUZJIGluIGNvbWJpbmF0aW9uIHdpdGggWGVuIGxlYWRzIHRvIGNvbXBsZXRlDQo+
Pj4+Pj4+IHN5c3RlbSByZWJvb3QgKHdhdGNoZG9nIHRyaWdnZXJpbmcgZm9yIERvbTApLiBPdGhl
ciBzdHJhbmdlIHRoaW5ncyBhcmUNCj4+Pj4+Pj4gaGFwcGVuaW5nLg0KPj4+Pj4+PiANCj4+Pj4+
Pj4gRGVzY3JpcHRpb246DQo+Pj4+Pj4+IC0tLS0tLS0tLS0NCj4+Pj4+Pj4gDQo+Pj4+Pj4+IEkg
cmVjZW50bHkgc2V0IHVwIFhlbiAoc2VsZiBjb21waWxlZCwgVmVyc2lvbiA0LjE4LXJjKSBvbiBh
IFJhc3BiZXJyeQ0KPj4+Pj4+PiBQaSA0QiAob24gdmFuaWxsYSBEZWJpYW4gQm9va3dvcm0sIFVF
RkkgYm9vdCBtb2RlKS4gVW50aWwgc29tZSB0aW1lDQo+Pj4+Pj4+IGFnbywgZXZlcnl0aGluZyB3
b3JrZWQgd2VsbCB3aXRoIERvbTAsIG9uZSBEb21VIGFuZCBvbmUgYnJpZGdlLg0KPj4+Pj4+PiAN
Cj4+Pj4+Pj4gVGhlbiBJIHdhbnRlZCB0byBhY3R1YWxseSBtYWtlIHVzZSBvZiB0aGUgdmlydHVh
bGl6YXRpb24gYW5kIHN0YXJ0ZWQNCj4+Pj4+Pj4gdG8gc2V0IHVwIGEgc2Vjb25kIERlYmlhbiBC
b29rd29ybSBEb21VICh1c2luZyB4ZW4tY3JlYXRlLWltYWdlKSBmb3INCj4+Pj4+Pj4gbW9uaXRv
cmluZyBteSBzeXN0ZW1zIHdpdGggemFiYml4IChhIHdlYnNlcnZlciBiYXNlZCBzeXN0ZW0gbW9u
aXRvcmluZw0KPj4+Pj4+PiBzb2x1dGlvbikuIFRoZSBicmlkZ2UgdXNlZCBmb3IgdGhpcyBzZXR1
cCB3YXMgdGhlIGRldmljZSBicmlkZ2luZyB0aGUNCj4+Pj4+Pj4gaGFyZHdhcmUgTklDLiBJIGlu
c3RhbGxlZCB6YWJiaXgsIHNldCBpdCB1cCwgYW5kIGV2ZXJ5dGhpbmcgd2VudCB3ZWxsLA0KPj4+
Pj4+PiBJIGNvdWxkIGFjY2VzcyB0aGUgd2ViIGludGVyZmFjZSB3aXRob3V0IGFueSBwcm9ibGVt
Lg0KPj4+Pj4+PiANCj4+Pj4+Pj4gVGhlbiBJIHNldCB1cCBWTEFOcyAoaW5pdGFsbHkgdXNpbmcg
VkxBTiBudW1iZXJzIDEgYW5kIDIpIHRvIHNlcGFyYXRlDQo+Pj4+Pj4+IG5ldHdvcmsgdHJhZmZp
YyBiZXR3ZWVuIHRoZSBEb21Vcy4gSSBtYWRlIHRoZSBleGlzdGluZyBkZXZpY2UgYnJpZGdlDQo+
Pj4+Pj4+IFZMQU4gMSAoYnJpZGdlIDEpIGFuZCBjcmVhdGVkIGEgc2Vjb25kYXJ5IGRldmljZSBm
b3IgYnJpZGdpbmcgVkxBTiAyDQo+Pj4+Pj4+IChicmlkZ2UgMikuIFVzaW5nIG9ubHkgYnJpZGdl
IDEgLyBWTEFOIDEgZXZlcnl0aGluZyB3b3JrcyB3ZWxsLCBJIGNhbg0KPj4+Pj4+PiBhY2Nlc3Mg
dGhlIHphYmJpeCB3ZWIgaW50ZXJmYWNlIHdpdGhvdXQgYW55IG5vdGljZWFibGUgaXNzdWUuIEFm
dGVyDQo+Pj4+Pj4+IHN3aXRjaGluZyB0aGUgemFiYml4IERvbVUgdG8gVkxBTiAyIC8gYnJpZGdl
IDIsIGV2ZXJ5dGhpbmcgc2VlbWluZ2x5DQo+Pj4+Pj4+IGtlZXBzIG9uIHdvcmtpbmcgd2VsbCwg
SSBjYW4gcGluZyBkaWZmZXJlbnQgZGV2aWNlcyBpbiBteSBuZXR3b3JrIGZyb20NCj4+Pj4+Pj4g
dGhlIHphYmJpeCBEb21VIGFuZCB2aWNlIHZlcnNhLCBJIGNhbiBzc2ggaW50byB0aGUgbWFjaGlu
ZS4NCj4+Pj4+Pj4gDQo+Pj4+Pj4+IEhvd2V2ZXIsIGFzIHNvb24gYXMgSSByZW1vdGVseSBhY2Nl
c3MgdGhlIHphYmJpeCB3ZWIgaW50ZXJmYWNlLCB0aGUNCj4+Pj4+Pj4gY29tcGxldGUgc3lzdGVt
IChEb21VcyBhbmQgRG9tMCkgYmVjb21lcyB1bnJlc3BvbnNpdmUgYW5kIHJlYm9vdHMNCj4+Pj4+
Pj4gYWZ0ZXIgc29tZSB0aW1lICh1c3VhbGx5IHNlY29uZHMsIHNvbWV0aW1lcyAxLTIgbWludXRl
cykuIFRoZSByZWJvb3QNCj4+Pj4+Pj4gaXMgcmVsaWFibHkgcmVwcm9kdWNhYmxlLg0KPj4+Pj4+
PiANCj4+Pj4+Pj4gSSBkaWRuJ3Qgc2VlIGFueSBlcnJvciBtZXNzYWdlIGluIGFueSBsb2cgKHph
YmJpeCwgRG9tVSBzeXNsb2csIERvbTANCj4+Pj4+Pj4gc3lzbG9nKSBleGNlcHQgZm9yIHRoZSBm
b2xsb3dpbmcgbGluZXMgaW1tZWRpYXRlbHkgYmVmb3JlIHRoZSBzeXN0ZW0NCj4+Pj4+Pj4gcmVi
b290cyBvbiB0aGUgWGVuIHNlcmlhbCBjb25zb2xlOg0KPj4+Pj4+PiANCj4+Pj4+Pj4gKFhFTikg
V2F0Y2hkb2cgdGltZXIgZmlyZWQgZm9yIGRvbWFpbiAwDQo+Pj4+Pj4+IChYRU4pIEhhcmR3YXJl
IERvbTAgc2h1dGRvd246IHdhdGNoZG9nIHJlYm9vdGluZyBtYWNoaW5lDQo+Pj4+Pj4+IA0KPj4+
Pj4+PiBBcyBzb29uIGFzIEkgY2hhbmdlIHRoZSBicmlkZ2UgdG8gYnJpZGdlIDEgKHdpdGggb3Ig
d2l0aG91dCBWTEFODQo+Pj4+Pj4+IHNldHVwKSwgdGhlIHdlYiBpbnRlcmZhY2UgaXMgYWNjZXNz
aWJsZSBhZ2FpbiBhZnRlciBib290aW5nIHRoZSB6YWJiaXgNCj4+Pj4+Pj4gRG9tVSwgbm8gcmVi
b290cy4NCj4+Pj4+Pj4gDQo+Pj4+Pj4+IFNvIEkgYXNzdW1lIHRoYXQgY2F1c2luZyBzcGVjaWZp
YyB0cmFmZmljIG9uIHRoZSB2aXJ0dWFsIE5JQyB3aGVuDQo+Pj4+Pj4+IHVzaW5nIGEgVkxBTiBz
ZXR1cCB3aXRoIG1vcmUgdGhhbiBvbmUgVkxBTiB1bmRlciBYZW4gbWFrZXMgdGhlIERvbTANCj4+
Pj4+Pj4gc3lzdGVtIGhhcmQgY3Jhc2guIE9mIGNvdXJzZSwgdGhlcmUgbWlnaHQgYmUgb3RoZXIg
Y2F1c2VzIHRoYXQgSSdtIG5vdA0KPj4+Pj4+PiBhd2FyZSBvZiwgYnV0IHRvIG1lLCB0aGlzIHNl
ZW1zIHRvIGJlIHRoZSBtb3N0IGxpa2VseSBleHBsYW5hdGlvbg0KPj4+Pj4+PiByaWdodCBub3cu
DQo+Pj4+Pj4+IA0KPj4+Pj4+PiBXaGF0IEkgdHJpZWQ6DQo+Pj4+Pj4+IC0tLS0tLS0tLS0tLS0N
Cj4+Pj4+Pj4gDQo+Pj4+Pj4+IDEuIEkgY2hhbmdlZCB0aGUgVkxBTiBudW1iZXJzLiBGaXJzdCB0
byAxMDEsIDEwMiwgMTAzIGV0Yy4gVGhpcyB3YXMNCj4+Pj4+Pj4gd2hlbiBJIG5vdGljZWQgYW5v
dGhlciBzdHJhbmdlIHRoaW5nOiBWTEFOcyB3aXRoIG51bWJlcnMgPjk5IHNpbXBseQ0KPj4+Pj4+
PiBkb24ndCB3b3JrIG9uIG15IFJhc3BiZXJyeSBQaSB1bmRlciBEZWJpYW4sIHdpdGggb3Igd2l0
aG91dCBYZW4uIFZMQU4NCj4+Pj4+Pj4gOTkgd29ya3MsIFZMQU4gMTAwIChvciBldmVyeXRoaW5n
IGVsc2UgPjk5IHRoYXQgSSB0cmllZCkgZG9lc24ndCB3b3JrLg0KPj4+Pj4+PiBJZiBJIGNob29z
ZSBhIG51bWJlciA+OTksIHRoZSBWTEFOIGlzIG5vdCBjb25maWd1cmVkLCAiaXAgYSIgZG9lc24n
dA0KPj4+Pj4+PiBsaXN0IGl0LiBPdGhlciBEZWJpYW4gc3lzdGVtcyBvbiB4NjQgYXJjaGl0ZWN0
dXJlIGRvbid0IHNob3cgdGhpcw0KPj4+Pj4+PiBiZWhhdmlvciwgdGhlcmUsIGl0IHdhcyBubyBw
cm9ibGVtIHRvIHNldCB1cCBWTEFOcyA+IDk5LiBUaGVyZWZvcmUsDQo+Pj4+Pj4+IEkndmUgY2hh
bmdlZCB0aGUgVkxBTnMgdG8gMTAsIDIwLCAzMCBldGMuLCB3aGljaCB3b3JrZWQuIEJ1dCBpdCBk
aWRuJ3QNCj4+Pj4+Pj4gc29sdmUgdGhlIGluaXRpYWwgcHJvYmxlbSBvZiB0aGUgY3Jhc2hpbmcg
RG9tMCBhbmQgRG9tVXMuDQo+Pj4+Pj4+IA0KPj4+Pj4+PiAyLiBEaWZmZXJlbnQgYnJpZGdlIG9w
dGlvbnMsIHdpdGhvdXQgbm90aWNhYmxlIGVmZmVjdDoNCj4+Pj4+Pj4gYnJpZGdlX3N0cCBvZmYg
ICAgICAjIGRvbnQgdXNlIFNUUCAoc3Bhbm5pbmcgdHJlZSBwcm90bykNCj4+Pj4+Pj4gYnJpZGdl
X3dhaXRwb3J0IDAgICAjIGRvbnQgd2FpdCBmb3IgcG9ydCB0byBiZSBhdmFpbGFibGUNCj4+Pj4+
Pj4gYnJpZGdlX2ZkIDAgICAgICAgICAjIG5vIGZvcndhcmQgZGVsYXkNCj4+Pj4+Pj4gDQo+Pj4+
Pj4+IDMuIFJlbW92aW5nIElQdjY6IE5vIG5vdGljYWJsZSBlZmZlY3QuDQo+Pj4+Pj4+IA0KPj4+
Pj4+PiA0LiBOZXR3b3JrIHRyYWZmaWMgYW5hbHlzaXM6IE5vdywgaGVyZSBpdCBiZWNvbWVzIF9y
ZWFsbHlfIHN0cmFuZ2UuIEkNCj4+Pj4+Pj4gc3RhcnRlZCB0Y3BkdW1wcyBvbiBEb20wLCBhbmQg
ZGVwZW5kaW5nIG9uIG9uIHdoaWNoIGludGVyZmFjZS9icmlkZ2UNCj4+Pj4+Pj4gdHJhZmZpYyB3
YXMgbG9nZ2VkLCB0aGUgcHJvYmxlbSB3ZW50IGF3YXksIG1lYW5pbmcsIHRoZSBEb21VIHdhcw0K
Pj4+Pj4+PiBydW5uaW5nIHNtb290aGx5IGZvciBob3VycywgZXZlbiB3aGVuIGFjY2Vzc2luZyB0
aGUgemFiYml4IHdlYg0KPj4+Pj4+PiBpbnRlcmZhY2UuIFN0b3BwaW5nIHRoZSBsb2cgbWFrZXMg
dGhlIHN5c3RlbSBjcmFzaCAoYXMgYWJvdmUsIGFmdGVyDQo+Pj4+Pj4+IHNlY29uZHMgdXAgdG8g
MS0yIG1pbnV0ZXMpIHJlcHJvZHVjYWJseSBpZiBJIGFjY2VzcyB0aGUgemFiYml4IHdlYg0KPj4+
Pj4+PiBpbnRlcmZhY2UuDQo+Pj4+Pj4+IA0KPj4+Pj4+PiBMb2dnaW5nIGVuYWJjbTZlNGVpMCAo
TklDKTogbm8gY3Jhc2hlcw0KPj4+Pj4+PiBMb2dnaW5nIGVuYWJjbTZlNGVpMC4xMCAoVkxBTiAx
MCk6IGluc3RhbnQgY3Jhc2gNCj4+Pj4+Pj4gTG9nZ2luZyBlbmFiY202ZTRlaTAuMjAgKFZMQU4g
MjApOiBubyBjcmFzaGVzDQo+Pj4+Pj4+IExvZ2dpbmcgeGVuYnIwIChvbiBWTEFOIDEwKTogaW5z
dGFudCBjcmFzaA0KPj4+Pj4+PiBMb2dnaW5nIHhlbmJyMSAob24gVkxBTiAyMCk6IG5vIGNyYXNo
ZXMNCj4+Pj4+Pj4gDQo+Pj4+Pj4+IEkgYW0gY2xpbmdpbmcgdG8gdGhlIHRob3VnaHQgdGhhdCB0
aGVyZSBtdXN0IGJlIGEgcmF0aW9uYWwgZXhwbGFuYXRpb24NCj4+Pj4+Pj4gZm9yIHdoeSBsb2dn
aW5nIHRoZSB0cmFmZmljIG9uIGNlcnRhaW4gaW50ZXJmYWNlcy9icmlkZ2VzIHNob3VsZCBhdm9p
ZA0KPj4+Pj4+PiB0aGUgY3Jhc2ggb2YgdGhlIGNvbXBsZXRlIHN5c3RlbSwgd2hpbGUgbG9nZ2lu
ZyBvdGhlcg0KPj4+Pj4+PiBpbnRlcmZhY2VzL2JyaWRnZXMgZG9lc24ndC4gSSBteXNlbGYgY2Fu
J3QgdGhpbmsgb2Ygb25lLg0KPj4+Pj4+PiANCj4+Pj4+Pj4gSSBjaGVja2VkIHRoZSBkdW1wcyBv
ZiBlbmFiY202ZTRlaTAuMTAgYW5kIHhlbmJyMCAod2hlcmUgdGhlIHN5c3RlbQ0KPj4+Pj4+PiBj
cmFzaGVzKSB3aXRoIHdpcmVzaGFyaywgbm90aGluZyBzdGlja3Mgb3V0IHRvIG1lIChidXQgSSBh
bSByZWFsbHkgbm8NCj4+Pj4+Pj4gZXhwZXJ0IGluIGFuYWx5emluZyBuZXR3b3JrIHRyYWZmaWMp
LiBEdW1wcyBjYW4gYmUgcHJvdmlkZWQuDQo+Pj4+Pj4+IA0KPj4+Pj4+PiA1LiBXYXRjaGRvZzog
SSB0cmllZCB0byBkaWcgZGVlcGVyIGludG8gdGhlIGNhdXNlIGZvciB0aGUgd2F0Y2hkb2cNCj4+
Pj4+Pj4gdHJpZ2dlcmluZy4gSG93ZXZlciwgSSBkaWRuJ3QgZmluZCBhbnkgdXNlZnVsIGRvY3Vt
ZW50YXRpb24gb24gdGhlIHdlYg0KPj4+Pj4+PiBvbiBob3cgdGhlIHdhdGNoZG9nIHdvcmtzIG9y
IGhvdyB0byBlbmFibGUgbG9nZ2luZy4NCj4+Pj4+Pj4gDQo+Pj4+Pj4+IDYuIEVsaW1pbmF0aW5n
IFhlbiBhcyBjYXVzZTogSSBib290ZWQgdGhlIERlYmlhbiBzeXN0ZW0gKHdoaWNoIGluIFhlbg0K
Pj4+Pj4+PiBzZXR1cCB3b3VsZCBiZSBEb20wKSB3aXRob3V0IFhlbiBhbmQgc2V0IGl0IHVwIHRv
IHVzZSB0aGUgVkxBTiAyMA0KPj4+Pj4+PiBicmlkZ2UgKHRoZSBzYW1lIHRoYXQgbGVhZHMgdG8g
YSByZWJvb3Qgd2hlbiB1c2luZyBpdCBpbiB0aGUgRG9tVSkgYXMNCj4+Pj4+Pj4gcHJpbWFyeSBu
ZXR3b3JrIGludGVyZmFjZS4gRXZlcnl0aGluZyBzZWVtZWQgdG8gYmUgd29ya2luZywgSSBjb3Vs
ZA0KPj4+Pj4+PiBkb3dubG9hZCBsYXJnZSBmaWxlcyBmcm9tIHRoZSBpbnRlcm5ldCB3aXRob3V0
IGFueSBwcm9ibGVtLiBTZXR0aW5nIHVwDQo+Pj4+Pj4+IFphYmJpeCBvbiB0aGUgYmFzZSBEZWJp
YW4gc3lzdGVtIHNob3dlZCB0aGF0IHRoZSBzYW1lIHNldHVwIChWTEFOcyAxMA0KPj4+Pj4+PiBh
bmQgMjAsIGJyaWRnZXMgMSBhbmQgMiwgdXNpbmcgYnJpZGdlIDIgYXMgaW50ZXJmYWNlIGZvciBa
YWJiaXgpDQo+Pj4+Pj4+IHdpdGhvdXQgWGVuIGlzIHdvcmtpbmcgcmVsaWFibHksIG5vIHJlYm9v
dHMuIFRoaXMgcG9pbnRzIHRvIHNvbWUgWGVuDQo+Pj4+Pj4+IHJlbGF0ZWQgY29tcG9uZW50IGJl
aW5nIHRoZSByb290IGNhdXNlLCBJIHRoaW5rLg0KPj4+Pj4+PiANCj4+Pj4+Pj4gNy4gRWxpbWlu
YXRpbmcgQXBhY2hlIGFzIHJvb3QgY2F1c2U6IFJlbG9hZGluZyB0aGUgQXBhY2hlIHN0YXJ0aW5n
DQo+Pj4+Pj4+IHBhZ2UgaG9zdGVkIG9uIERvbVUgc2V2ZXJhbCB0aW1lcyBwZXIgc2Vjb25kIGRp
ZG4ndCBsZWFkIHRvIGEgcmVib290Lg0KPj4+Pj4+PiANCj4+Pj4+Pj4gOC4gUmVjb21waWxpbmcg
WGVuOiBJbmRlcGVuZGVudCBvZiB3aGljaCBYZW4gbWFzdGVyIGJyYW5jaCB2ZXJzaW9uIEkNCj4+
Pj4+Pj4gd2FzIHVzaW5nIChhbGwgNC4xOCksIHRoZSBiZWhhdmlvciB3YXMgdGhlIHNhbWUuIEkg
ZGlkbid0IGdldCBYZW4NCj4+Pj4+Pj4gd29ya2luZyBvbiBBUk02NC9VRUZJIGluIHZlcnNpb24g
NC4xNy4NCj4+Pj4+Pj4gDQo+Pj4+Pj4+IEN1cnJlbnQgc2l0dWF0aW9uOihYRU4pIGQzdjAgVW5o
YW5kbGVkIFNNQy9IVkM6IDB4ODQwMDAwNTANCj4+Pj4+IChYRU4pIGQzdjAgVW5oYW5kbGVkIFNN
Qy9IVkM6IDB4ODYwMGZmMDENCj4+Pj4+IChYRU4pIGQzdjA6IHZHSUNEOiB1bmhhbmRsZWQgd29y
ZCB3cml0ZSAweDAwMDAwMGZmZmZmZmZmIHRvIElDQUNUSVZFUjANCj4+Pj4+IChYRU4pIGNvbW1v
bi9ncmFudF90YWJsZS5jOjE5MDk6ZDN2MCBFeHBhbmRpbmcgZDMgZ3JhbnQgdGFibGUgZnJvbSAx
IHRvDQo+Pj4+PiAyIGZyYW1lcw0KPj4+Pj4gKFhFTikgY29tbW9uL2dyYW50X3RhYmxlLmM6MTkw
OTpkM3YwIEV4cGFuZGluZyBkMyBncmFudCB0YWJsZSBmcm9tIDIgdG8NCj4+Pj4+IDMgZnJhbWVz
DQo+Pj4+PiAoWEVOKSBjb21tb24vZ3JhbnRfdGFibGUuYzoxOTA5OmQzdjAgRXhwYW5kaW5nIGQz
IGdyYW50IHRhYmxlIGZyb20gMyB0bw0KPj4+Pj4gNCBmcmFtZXMNCj4+Pj4+Pj4gLS0tLS0tLS0t
LS0tLS0tLS0tDQo+Pj4+Pj4+IA0KPj4+Pj4+PiBJIGFtIG91dCBvZiBpZGVhcyB3aGF0IHRvIGRv
IG5leHQuIEV2ZXJ5dGhpbmcgdGhhdCB3YXMgcmVjb21tZW5kZWQgdG8NCj4+Pj4+Pj4gbWUgb24g
eGVuLXVzZXJzIGRpZG4ndCBsZWFkIHRvIHNpZ25pZmljYW50IGluc2lnaHQgb3Igc29sdmUgdGhl
IHByb2JsZW0uDQo+Pj4+Pj4+IA0KPj4+Pj4+PiBJJ2QgYXBwcmVjaWF0ZSBhbnkgaGludHMgaG93
IHRvIHRyb3VibGVzaG9vdCB0aGlzIGFuZC9vciBob3cgdG8NCj4+Pj4+Pj4gcHJvY2VlZCBvdGhl
cndpc2UuDQo+Pj4+Pj4gDQo+Pj4+Pj4gTy5rLiwgbGV0J3MgdHJ5IHRvIGJyZWFrIHRoYXQgaXNz
dWUgZG93bi4NCj4+Pj4+PiANCj4+Pj4+PiBGaXJzdGx5LCBob3cgY2FuIEkgZ2V0IG1vcmUgaW5m
b3JtYXRpb24gb24gd2h5IHRoZSBYZW4gd2F0Y2hkb2cNCj4+Pj4+PiB0cmlnZ2Vycz8gSXMgdGhl
cmUgZG9jdW1lbnRhdGlvbj8gQXJlIHRoZXJlIGFueSBsb2dzPyBJIGNvdWxkbid0IGZpbmQNCj4+
Pj4+PiBhbnl0aGluZyB1c2VmdWwgd2l0aCBteSBzZWFyY2ggc2tpbGxzLg0KPj4+Pj4+IA0KPj4+
Pj4gDQo+Pj4+PiBBZnRlciBzb21lIGRlbGF5LCBJIGhhdmUgcGlja2VkIHVwIHRoZSBSYXNwYmVy
cnkgUGkgYWdhaW4sIGJ1aWx0IFhlbg0KPj4+Pj4gNC4xOS11bnN0YWJsZSwgd2l0aCB0aGUgc2Ft
ZSByZXN1bHQ6IFJlYm9vdCBvZiB0aGUgY29tcGxldGUgc3lzdGVtIGFmdGVyDQo+Pj4+PiB0aGUg
RG9tMCB3YXRjaGRvZyB0cmlnZ2VyaW5nIHdoZW4gYWNjZXNzaW5nIHRoZSBaYWJiaXggY29udGVu
dCBvbiBhDQo+Pj4+PiB3ZWJzZXJ2ZXIgb24gRG9tVS4NCj4+Pj4+IA0KPj4+Pj4gSSBzdGlsbCB3
b3VsZCBsaWtlIHRvIGZpbmQgb3V0IHdoYXQncyBnb2luZyB3cm9uZyBoZXJlLCBidXQgSSBoYXZl
IG5vDQo+Pj4+PiBpZGVhIHdoYXQgdG8gZG8uIEknZCBhcHByZWNpYXRlIGFueSBoaW50Lg0KPj4+
Pj4gDQo+Pj4+PiBOb3Qga25vd2luZyBpZiBpdCBoZWxwcywgSSBhZGRlZCBYZW4gbG9ncyBmcm9t
IGJvb3QgdW50aWwgRG9tMA0KPj4+Pj4gY3Jhc2gvcmVib290IGJlbG93Lg0KPj4+Pj4gDQo+Pj4+
PiBMb2FkaW5nIFhlbiB4ZW4gLi4uDQo+Pj4+PiBMb2FkaW5nIExpbnV4IDYuMS4wLTE3LWFybTY0
IC4uLg0KPj4+Pj4gTG9hZGluZyBpbml0aWFsIHJhbWRpc2sgLi4uDQo+Pj4+PiBVc2luZyBtb2R1
bGVzIHByb3ZpZGVkIGJ5IGJvb3Rsb2FkZXIgaW4gRkRUDQo+Pj4+PiBYZW4gNC4xOS11bnN0YWJs
ZSAoYy9zIEZyaSBKYW4gMTIgMTE6NTQ6MzEgMjAyNCArMDAwMA0KPj4+Pj4gZ2l0OjFlYzNmZTFm
NjYtZGlydHkpIEVGSQ0KPj4+Pj4gbG9hZGVyDQo+Pj4+PiAgWGVuIDQuMTktdW5zdGFibGUNCj4+
Pj4+IChYRU4pIFhlbiB2ZXJzaW9uIDQuMTktdW5zdGFibGUgKHJvb3RAbGFuLm9ubGluZXNjaHVi
bGEuZGUpIChnY2MgKERlYmlhbg0KPj4+Pj4gMTIuMi4wLQ0KPj4+Pj4gDQo+Pj4+PiANCj4+Pj4+
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE0KSAxMi4yLjApIGRlYnVnPXkgU3VuIEphbiAx
NCAyMTo0NjozNCBDRVQgMjAyNA0KPj4+Pj4gKFhFTikgTGF0ZXN0IENoYW5nZVNldDogRnJpIEph
biAxMiAxMTo1NDozMSAyMDI0ICswMDAwIGdpdDoxZWMzZmUxZjY2LWRpcnR5DQo+Pj4+PiAoWEVO
KSBidWlsZC1pZDogYmFiYjAzY2I2MTA3ZmM0NmY3ZDg5NjkxNDJjY2Q2NzcyYTExMzNjMw0KPj4+
Pj4gKFhFTikgQ29uc29sZSBvdXRwdXQgaXMgc3luY2hyb25vdXMuDQo+Pj4+PiAoWEVOKSBQcm9j
ZXNzb3I6IDAwMDAwMDAwNDEwZmQwODM6ICJBUk0gTGltaXRlZCIsIHZhcmlhbnQ6IDB4MCwgcGFy
dA0KPj4+Pj4gMHhkMDgscmV2IDANCj4+Pj4+IA0KPj4+Pj4gDQo+Pj4+PiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgeDMNCj4+Pj4+IChYRU4pIDY0LWJpdCBFeGVjdXRpb246DQo+Pj4+
PiAoWEVOKSAgIFByb2Nlc3NvciBGZWF0dXJlczogMDAwMDAwMDAwMDAwMjIyMiAwMDAwMDAwMDAw
MDAwMDAwDQo+Pj4+PiAoWEVOKSAgICAgRXhjZXB0aW9uIExldmVsczogRUwzOjY0KzMyIEVMMjo2
NCszMiBFTDE6NjQrMzIgRUwwOjY0KzMyDQo+Pj4+PiAoWEVOKSAgICAgRXh0ZW5zaW9uczogRmxv
YXRpbmdQb2ludCBBZHZhbmNlZFNJTUQNCj4+Pj4+IChYRU4pICAgRGVidWcgRmVhdHVyZXM6IDAw
MDAwMDAwMTAzMDUxMDYgMDAwMDAwMDAwMDAwMDAwMA0KPj4+Pj4gKFhFTikgICBBdXhpbGlhcnkg
RmVhdHVyZXM6IDAwMDAwMDAwMDAwMDAwMDAgMDAwMDAwMDAwMDAwMDAwMA0KPj4+Pj4gKFhFTikg
ICBNZW1vcnkgTW9kZWwgRmVhdHVyZXM6IDAwMDAwMDAwMDAwMDExMjQgMDAwMDAwMDAwMDAwMDAw
MA0KPj4+Pj4gKFhFTikgICBJU0EgRmVhdHVyZXM6ICAwMDAwMDAwMDAwMDEwMDAwIDAwMDAwMDAw
MDAwMDAwMDANCj4+Pj4+IChYRU4pIDMyLWJpdCBFeGVjdXRpb246DQo+Pj4+PiAoWEVOKSAgIFBy
b2Nlc3NvciBGZWF0dXJlczogMDAwMDAwMDAwMDAwMDEzMTowMDAwMDAwMDAwMDExMDExDQo+Pj4+
PiAoWEVOKSAgICAgSW5zdHJ1Y3Rpb24gU2V0czogQUFyY2gzMiBBMzIgVGh1bWIgVGh1bWItMiBK
YXplbGxlDQo+Pj4+PiAoWEVOKSAgICAgRXh0ZW5zaW9uczogR2VuZXJpY1RpbWVyIFNlY3VyaXR5
DQo+Pj4+PiAoWEVOKSAgIERlYnVnIEZlYXR1cmVzOiAwMDAwMDAwMDAzMDEwMDY2DQo+Pj4+PiAo
WEVOKSAgIEF1eGlsaWFyeSBGZWF0dXJlczogMDAwMDAwMDAwMDAwMDAwMA0KPj4+Pj4gKFhFTikg
ICBNZW1vcnkgTW9kZWwgRmVhdHVyZXM6IDAwMDAwMDAwMTAyMDExMDUgMDAwMDAwMDA0MDAwMDAw
MA0KPj4+Pj4gKFhFTikgICAgICAgICAgICAgICAgICAgICAgICAgIDAwMDAwMDAwMDEyNjAwMDAg
MDAwMDAwMDAwMjEwMjIxMQ0KPj4+Pj4gKFhFTikgICBJU0EgRmVhdHVyZXM6IDAwMDAwMDAwMDIx
MDExMTAgMDAwMDAwMDAxMzExMjExMSAwMDAwMDAwMDIxMjMyMDQyDQo+Pj4+PiAoWEVOKSAgICAg
ICAgICAgICAgICAgMDAwMDAwMDAwMTExMjEzMSAwMDAwMDAwMDAwMDExMTQyIDAwMDAwMDAwMDAw
MTAwMDENCj4+Pj4+IChYRU4pIFVzaW5nIFNNQyBDYWxsaW5nIENvbnZlbnRpb24gdjEuMg0KPj4+
Pj4gKFhFTikgVXNpbmcgUFNDSSB2MS4xDQo+Pj4+PiAoWEVOKSBBQ1BJOiBHSUNDIChhY3BpX2lk
WzB4MDAwMF0gYWRkcmVzc1sweGZmODQyMDAwXSBNUElEUlsweDBdIGVuYWJsZWQpDQo+Pj4+PiAo
WEVOKSBBQ1BJOiBHSUNDIChhY3BpX2lkWzB4MDAwMV0gYWRkcmVzc1sweGZmODQyMDAwXSBNUElE
UlsweDFdIGVuYWJsZWQpDQo+Pj4+PiAoWEVOKSBBQ1BJOiBHSUNDIChhY3BpX2lkWzB4MDAwMl0g
YWRkcmVzc1sweGZmODQyMDAwXSBNUElEUlsweDJdIGVuYWJsZWQpDQo+Pj4+PiAoWEVOKSBBQ1BJ
OiBHSUNDIChhY3BpX2lkWzB4MDAwM10gYWRkcmVzc1sweGZmODQyMDAwXSBNUElEUlsweDNdIGVu
YWJsZWQpDQo+Pj4+PiAoWEVOKSA0IENQVXMgZW5hYmxlZCwgNCBDUFVzIHRvdGFsDQo+Pj4+PiAo
WEVOKSBTTVA6IEFsbG93aW5nIDQgQ1BVcw0KPj4+Pj4gKFhFTikgZW5hYmxlZCB3b3JrYXJvdW5k
IGZvcjogQVJNIGVycmF0dW0gMTMxOTUzNw0KPj4+Pj4gKFhFTikgR2VuZXJpYyBUaW1lciBJUlE6
IHBoeXM9MzAgaHlwPTI2IHZpcnQ9MjcgRnJlcTogNTQwMDAgS0h6DQo+Pj4+PiAoWEVOKSBHSUN2
MiBpbml0aWFsaXphdGlvbjoNCj4+Pj4+IChYRU4pICAgICAgICAgZ2ljX2Rpc3RfYWRkcj0wMDAw
MDAwMGZmODQxMDAwDQo+Pj4+PiAoWEVOKSAgICAgICAgIGdpY19jcHVfYWRkcj0wMDAwMDAwMGZm
ODQyMDAwDQo+Pj4+PiAoWEVOKSAgICAgICAgIGdpY19oeXBfYWRkcj0wMDAwMDAwMGZmODQ0MDAw
DQo+Pj4+PiAoWEVOKSAgICAgICAgIGdpY192Y3B1X2FkZHI9MDAwMDAwMDBmZjg0NjAwMA0KPj4+
Pj4gKFhFTikgICAgICAgICBnaWNfbWFpbnRlbmFuY2VfaXJxPTI1DQo+Pj4+PiAoWEVOKSBHSUN2
MjogMjU2IGxpbmVzLCA0IGNwdXMsIHNlY3VyZSAoSUlEIDAyMDAxNDNiKS4NCj4+Pj4+IChYRU4p
IFhTTSBGcmFtZXdvcmsgdjEuMC4xIGluaXRpYWxpemVkDQo+Pj4+PiAoWEVOKSBJbml0aWFsaXNp
bmcgWFNNIFNJTE8gbW9kZQ0KPj4+Pj4gKFhFTikgVXNpbmcgc2NoZWR1bGVyOiBTTVAgQ3JlZGl0
IFNjaGVkdWxlciByZXYyIChjcmVkaXQyKQ0KPj4+Pj4gKFhFTikgSW5pdGlhbGl6aW5nIENyZWRp
dDIgc2NoZWR1bGVyDQo+Pj4+PiAoWEVOKSAgbG9hZF9wcmVjaXNpb25fc2hpZnQ6IDE4DQo+Pj4+
PiAoWEVOKSAgbG9hZF93aW5kb3dfc2hpZnQ6IDMwDQo+Pj4+PiAoWEVOKSAgdW5kZXJsb2FkX2Jh
bGFuY2VfdG9sZXJhbmNlOiAwDQo+Pj4+PiAoWEVOKSAgb3ZlcmxvYWRfYmFsYW5jZV90b2xlcmFu
Y2U6IC0zDQo+Pj4+PiAoWEVOKSAgcnVucXVldWVzIGFycmFuZ2VtZW50OiBzb2NrZXQNCj4+Pj4+
IChYRU4pICBjYXAgZW5mb3JjZW1lbnQgZ3JhbnVsYXJpdHk6IDEwbXMNCj4+Pj4+IChYRU4pIGxv
YWQgdHJhY2tpbmcgd2luZG93IGxlbmd0aCAxMDczNzQxODI0IG5zDQo+Pj4+PiAoWEVOKSBBbGxv
Y2F0ZWQgY29uc29sZSByaW5nIG9mIDMyIEtpQi4NCj4+Pj4+IChYRU4pIENQVTA6IEd1ZXN0IGF0
b21pY3Mgd2lsbCB0cnkgMTYgdGltZXMgYmVmb3JlIHBhdXNpbmcgdGhlIGRvbWFpbg0KPj4+Pj4g
KFhFTikgQnJpbmdpbmcgdXAgQ1BVMQ0KPj4+Pj4gKFhFTikgQ1BVMTogR3Vlc3QgYXRvbWljcyB3
aWxsIHRyeSAxNiB0aW1lcyBiZWZvcmUgcGF1c2luZyB0aGUgZG9tYWluDQo+Pj4+PiAoWEVOKSBD
UFUgMSBib290ZWQuDQo+Pj4+PiAoWEVOKSBCcmluZ2luZyB1cCBDUFUyDQo+Pj4+PiAoWEVOKSBD
UFUyOiBHdWVzdCBhdG9taWNzIHdpbGwgdHJ5IDEzIHRpbWVzIGJlZm9yZSBwYXVzaW5nIHRoZSBk
b21haW4NCj4+Pj4+IChYRU4pIENQVSAyIGJvb3RlZC4NCj4+Pj4+IChYRU4pIEJyaW5naW5nIHVw
IENQVTMNCj4+Pj4+IChYRU4pIENQVTM6IEd1ZXN0IGF0b21pY3Mgd2lsbCB0cnkgMTYgdGltZXMg
YmVmb3JlIHBhdXNpbmcgdGhlIGRvbWFpbg0KPj4+Pj4gKFhFTikgQnJvdWdodCB1cCA0IENQVXMN
Cj4+Pj4+IChYRU4pIENQVSAzIGJvb3RlZC4NCj4+Pj4+IChYRU4pIEkvTyB2aXJ0dWFsaXNhdGlv
biBkaXNhYmxlZA0KPj4+Pj4gKFhFTikgUDJNOiA0NC1iaXQgSVBBIHdpdGggNDQtYml0IFBBIGFu
ZCA4LWJpdCBWTUlEDQo+Pj4+PiAoWEVOKSBQMk06IDQgbGV2ZWxzIHdpdGggb3JkZXItMCByb290
LCBWVENSIDB4MDAwMDAwMDA4MDA0MzU5NA0KPj4+Pj4gKFhFTikgU2NoZWR1bGluZyBncmFudWxh
cml0eTogY3B1LCAxIENQVSBwZXIgc2NoZWQtcmVzb3VyY2UNCj4+Pj4+IChYRU4pIEluaXRpYWxp
emluZyBDcmVkaXQyIHNjaGVkdWxlcg0KPj4+Pj4gKFhFTikgIGxvYWRfcHJlY2lzaW9uX3NoaWZ0
OiAxOA0KPj4+Pj4gKFhFTikgIGxvYWRfd2luZG93X3NoaWZ0OiAzMA0KPj4+Pj4gKFhFTikgIHVu
ZGVybG9hZF9iYWxhbmNlX3RvbGVyYW5jZTogMA0KPj4+Pj4gKFhFTikgIG92ZXJsb2FkX2JhbGFu
Y2VfdG9sZXJhbmNlOiAtMw0KPj4+Pj4gKFhFTikgIHJ1bnF1ZXVlcyBhcnJhbmdlbWVudDogc29j
a2V0DQo+Pj4+PiAoWEVOKSAgY2FwIGVuZm9yY2VtZW50IGdyYW51bGFyaXR5OiAxMG1zDQo+Pj4+
PiAoWEVOKSBsb2FkIHRyYWNraW5nIHdpbmRvdyBsZW5ndGggMTA3Mzc0MTgyNCBucw0KPj4+Pj4g
KFhFTikgQWRkaW5nIGNwdSAwIHRvIHJ1bnF1ZXVlIDANCj4+Pj4+IChYRU4pICBGaXJzdCBjcHUg
b24gcnVucXVldWUsIGFjdGl2YXRpbmcNCj4+Pj4+IChYRU4pIEFkZGluZyBjcHUgMSB0byBydW5x
dWV1ZSAwDQo+Pj4+PiAoWEVOKSBBZGRpbmcgY3B1IDIgdG8gcnVucXVldWUgMA0KPj4+Pj4gKFhF
TikgQWRkaW5nIGNwdSAzIHRvIHJ1bnF1ZXVlIDANCj4+Pj4+IChYRU4pIGFsdGVybmF0aXZlczog
UGF0Y2hpbmcgd2l0aCBhbHQgdGFibGUgMDAwMDBhMDAwMDJlZTBiMCAtPg0KPj4+Pj4gMDAwMDBh
MDAwMDJlZjI1MA0KPj4+Pj4gKFhFTikgQ1BVMiB3aWxsIGNhbGwgQVJNX1NNQ0NDX0FSQ0hfV09S
S0FST1VORF8xIG9uIGV4Y2VwdGlvbiBlbnRyeQ0KPj4+Pj4gKFhFTikgQ1BVMSB3aWxsIGNhbGwg
QVJNX1NNQ0NDX0FSQ0hfV09SS0FST1VORF8xIG9uIGV4Y2VwdGlvbiBlbnRyeQ0KPj4+Pj4gKFhF
TikgQ1BVMyB3aWxsIGNhbGwgQVJNX1NNQ0NDX0FSQ0hfV09SS0FST1VORF8xIG9uIGV4Y2VwdGlv
biBlbnRyeQ0KPj4+Pj4gKFhFTikgQ1BVMCB3aWxsIGNhbGwgQVJNX1NNQ0NDX0FSQ0hfV09SS0FS
T1VORF8xIG9uIGV4Y2VwdGlvbiBlbnRyeQ0KPj4+Pj4gKFhFTikgKioqIExPQURJTkcgRE9NQUlO
IDAgKioqDQo+Pj4+PiAoWEVOKSBMb2FkaW5nIGQwIGtlcm5lbCBmcm9tIGJvb3QgbW9kdWxlIEAg
MDAwMDAwMDAzMGVmNzAwMA0KPj4+Pj4gKFhFTikgTG9hZGluZyByYW1kaXNrIGZyb20gYm9vdCBt
b2R1bGUgQCAwMDAwMDAwMDJlZTZkMDAwDQo+Pj4+PiAoWEVOKSBBbGxvY2F0aW5nIDE6MSBtYXBw
aW5ncyB0b3RhbGxpbmcgMTAyNE1CIGZvciBkb20wOg0KPj4+Pj4gKFhFTikgQkFOS1swXSAweDAw
MDAwMDQwMDAwMDAwLTB4MDAwMDAwODAwMDAwMDAgKDEwMjRNQikNCj4+Pj4+IChYRU4pIEdyYW50
IHRhYmxlIHJhbmdlOiAweDAwMDAwMDJlY2ViMDAwLTB4MDAwMDAwMmVkMmIwMDANCj4+Pj4+IChY
RU4pIEFsbG9jYXRpbmcgUFBJIDE2IGZvciBldmVudCBjaGFubmVsIGludGVycnVwdA0KPj4+Pj4g
KFhFTikgTG9hZGluZyB6SW1hZ2UgZnJvbSAwMDAwMDAwMDMwZWY3MDAwIHRvDQo+Pj4+PiAwMDAw
MDAwMDQwMDAwMDAwLTAwMDAwMDAwNDFmMWM3YzANCj4+Pj4+IChYRU4pIExvYWRpbmcgZDAgaW5p
dHJkIGZyb20gMDAwMDAwMDAyZWU2ZDAwMCB0bw0KPj4+Pj4gMHgwMDAwMDAwMDQ4MjAwMDAwLTB4
MDAwMDAwMDA0YQ0KPj4+Pj4gDQo+Pj4+PiANCj4+Pj4+ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDI4OGMyMg0KPj4+Pj4gKFhFTikgTG9hZGluZyBk
MCBEVEIgdG8gMHgwMDAwMDAwMDQ4MDAwMDAwLTB4MDAwMDAwMDA0ODAwMDJjMw0KPj4+Pj4gKFhF
TikgSW5pdGlhbCBsb3cgbWVtb3J5IHZpcnEgdGhyZXNob2xkIHNldCBhdCAweDQwMDAgcGFnZXMu
DQo+Pj4+PiAoWEVOKSBTY3J1YmJpbmcgRnJlZSBSQU0gaW4gYmFja2dyb3VuZA0KPj4+Pj4gKFhF
TikgU3RkLiBMb2dsZXZlbDogQWxsDQo+Pj4+PiAoWEVOKSBHdWVzdCBMb2dsZXZlbDogQWxsDQo+
Pj4+PiAoWEVOKSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioNCj4+Pj4+IChYRU4pIFdBUk5JTkc6IENPTlNPTEUgT1VUUFVUIElTIFNZTkNIUk9OT1VT
DQo+Pj4+PiAoWEVOKSBUaGlzIG9wdGlvbiBpcyBpbnRlbmRlZCB0byBhaWQgZGVidWdnaW5nIG9m
IFhlbiBieSBlbnN1cmluZw0KPj4+Pj4gKFhFTikgdGhhdCBhbGwgb3V0cHV0IGlzIHN5bmNocm9u
b3VzbHkgZGVsaXZlcmVkIG9uIHRoZSBzZXJpYWwgbGluZS4NCj4+Pj4+IChYRU4pIEhvd2V2ZXIg
aXQgY2FuIGludHJvZHVjZSBTSUdOSUZJQ0FOVCBsYXRlbmNpZXMgYW5kIGFmZmVjdA0KPj4+Pj4g
KFhFTikgdGltZWtlZXBpbmcuIEl0IGlzIE5PVCByZWNvbW1lbmRlZCBmb3IgcHJvZHVjdGlvbiB1
c2UhDQo+Pj4+PiAoWEVOKSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioNCj4+Pj4+IChYRU4pIDMuLi4gMi4uLiAxLi4uDQo+Pj4+PiAoWEVOKSAqKiog
U2VyaWFsIGlucHV0IHRvIERPTTAgKHR5cGUgJ0NUUkwtYScgdGhyZWUgdGltZXMgdG8gc3dpdGNo
IGlucHV0KQ0KPj4+Pj4gKFhFTikgRnJlZWQgMzc2a0IgaW5pdCBtZW1vcnkuDQo+Pj4+PiAoWEVO
KSBkMHYwIFVuaGFuZGxlZCBTTUMvSFZDOiAweDg0MDAwMDUwDQo+Pj4+PiAoWEVOKSBkMHYwIFVu
aGFuZGxlZCBTTUMvSFZDOiAweDg2MDBmZjAxDQo+PiBUaGlzIG1lYW5zIExpbnV4IGlzIHRyeWlu
ZyB0byBkbyBzb21lIGtpbmQgb2Ygc21jIGNhbGwgd2hpY2ggaXMgbm90IGhhbmRsZWQuDQo+PiBJ
IHdpbGwgaGlnaGx5IHN1Z2dlc3QgdG8gaW52ZXN0aWdhdGUgaGVyZSBhcyBpdCBjb3VsZCByZWFs
bHkgYmUgc29tZSBwbGF0Zm9ybQ0KPj4gc3BlY2lmaWMgY2FsbHMgdHJ5aW5nIHRvIGVuYWJsZSBz
b21lIGNsb2Nrcy4NCj4+Pj4+IChYRU4pIGQwdjA6IHZHSUNEOiB1bmhhbmRsZWQgd29yZCB3cml0
ZSAweDAwMDAwMGZmZmZmZmZmIHRvIElDQUNUSVZFUjQNCj4+Pj4+IChYRU4pIGQwdjA6IHZHSUNE
OiB1bmhhbmRsZWQgd29yZCB3cml0ZSAweDAwMDAwMGZmZmZmZmZmIHRvIElDQUNUSVZFUjgNCj4+
Pj4+IChYRU4pIGQwdjA6IHZHSUNEOiB1bmhhbmRsZWQgd29yZCB3cml0ZSAweDAwMDAwMGZmZmZm
ZmZmIHRvIElDQUNUSVZFUjEyDQo+Pj4+PiAoWEVOKSBkMHYwOiB2R0lDRDogdW5oYW5kbGVkIHdv
cmQgd3JpdGUgMHgwMDAwMDBmZmZmZmZmZiB0byBJQ0FDVElWRVIxNg0KPj4+Pj4gKFhFTikgZDB2
MDogdkdJQ0Q6IHVuaGFuZGxlZCB3b3JkIHdyaXRlIDB4MDAwMDAwZmZmZmZmZmYgdG8gSUNBQ1RJ
VkVSMjANCj4+Pj4+IChYRU4pIGQwdjA6IHZHSUNEOiB1bmhhbmRsZWQgd29yZCB3cml0ZSAweDAw
MDAwMGZmZmZmZmZmIHRvIElDQUNUSVZFUjI0DQo+Pj4+PiAoWEVOKSBkMHYwOiB2R0lDRDogdW5o
YW5kbGVkIHdvcmQgd3JpdGUgMHgwMDAwMDBmZmZmZmZmZiB0byBJQ0FDVElWRVIyOA0KPj4+Pj4g
KFhFTikgZDB2MDogdkdJQ0Q6IHVuaGFuZGxlZCB3b3JkIHdyaXRlIDB4MDAwMDAwZmZmZmZmZmYg
dG8gSUNBQ1RJVkVSMA0KPj4+Pj4gKFhFTikgZDB2MTogdkdJQ0Q6IHVuaGFuZGxlZCB3b3JkIHdy
aXRlIDB4MDAwMDAwZmZmZmZmZmYgdG8gSUNBQ1RJVkVSMA0KPj4+Pj4gKFhFTikgZDB2MjogdkdJ
Q0Q6IHVuaGFuZGxlZCB3b3JkIHdyaXRlIDB4MDAwMDAwZmZmZmZmZmYgdG8gSUNBQ1RJVkVSMA0K
Pj4+Pj4gKFhFTikgZDB2MzogdkdJQ0Q6IHVuaGFuZGxlZCB3b3JkIHdyaXRlIDB4MDAwMDAwZmZm
ZmZmZmYgdG8gSUNBQ1RJVkVSMA0KPj4gVGhvc2UgY2FuIGJlIGlnbm9yZWQuIFRoaXMgaXMgTGlu
dXggd3JpdGluZyB0byBzb21lIEdJQyByZWdpc3RlcnMgd2UgZG8gbm90DQo+PiBlbXVsYXRlIHNv
IHdlIHdhcm4gdGhhdCB0aG9zZSBhcmUgaWdub3JlZC4gVGhvc2UgbWVzc2FnZXMgYXJlIHByZXNl
bnQgb24NCj4+IGFsbCBhcm0gdGFyZ2V0cyB3aGVuIHRoZSBsb2cgbGV2ZWwgb2YgWGVuIGlzIGhp
Z2guDQo+Pj4+PiAoWEVOKSBkMXYwIFVuaGFuZGxlZCBTTUMvSFZDOiAweDg0MDAwMDUwDQo+Pj4+
PiAoWEVOKSBkMXYwIFVuaGFuZGxlZCBTTUMvSFZDOiAweDg2MDBmZjAxDQo+PiBTYW1lIGFzIHVw
cGVyIGRvbmUgb24gYSBkaWZmZXJlbnQgY29yZQ0KPj4+Pj4gKFhFTikgZDF2MDogdkdJQ0Q6IHVu
aGFuZGxlZCB3b3JkIHdyaXRlIDB4MDAwMDAwZmZmZmZmZmYgdG8gSUNBQ1RJVkVSMA0KPj4gQ2Fu
IGJlIGlnbm9yZWQgYXMgZXhwbGFpbmVkIGVhcmxpZXINCj4+Pj4+IChYRU4pIGNvbW1vbi9ncmFu
dF90YWJsZS5jOjE5MDk6ZDF2MCBFeHBhbmRpbmcgZDEgZ3JhbnQgdGFibGUgZnJvbSAxIHRvDQo+
Pj4+PiAyIGZyYW1lcw0KPj4gVGhvc2UgYXJlIGludGVybmFsIGRlYnVnIG1lc3NhZ2VzIHRvIFhl
biBhbmQgY2FuIGJlIGlnbm9yZWQgKHRoZXkgYXJlIHByZXNlbnQNCj4+IG9uIG1vc3QgYXJtIHRh
cmdldHMpLg0KPj4+Pj4gKFhFTikgZ250dGFiX21hcmtfZGlydHkgbm90IGltcGxlbWVudGVkIHll
dA0KPj4gQ2FuIGJlIGlnbm9yZWQgdG8NCj4+Pj4+IChYRU4pIGQydjAgVW5oYW5kbGVkIFNNQy9I
VkM6IDB4ODQwMDAwNTANCj4+Pj4+IChYRU4pIGQydjAgVW5oYW5kbGVkIFNNQy9IVkM6IDB4ODYw
MGZmMDENCj4+IFNhbWUgYXMgdXBwZXIgb24gYSBkaWZmZXJlbnQgY29yZQ0KPj4+Pj4gKFhFTikg
ZDJ2MDogdkdJQ0Q6IHVuaGFuZGxlZCB3b3JkIHdyaXRlIDB4MDAwMDAwDQo+PiBTYW1lIGFzIHVw
cGVyIG9uIGEgZGlmZmVyZW50IGNvcmUNCj4gDQo+IElzIHRoaXMgYWxzbyByZWxldmFudCBvciBu
b3Q/DQoNClRoaXMgb25lIGlzIHdlaXJkIGFuZCBpIGNhbm5vdCBpZGVudGlmeSB3aGVyZSBpdCBj
b3VsZCBjb21lIGZyb20gYXMgYWxsIHByaW50ayBpbiB2R0lDRA0KaGF2ZSBzb21ldGhpbmcgYWZ0
ZXIuIE1heWJlIHNwZWNpZmljIHRvIHlvdXIgdmVyc2lvbiBvZiBYZW4uDQpCdXQgSSB3b3VsZCBz
YXkgeW91IGNhbiBpZ25vcmUuDQoNCj4gDQo+IEkgY291bGRuJ3QgaWRlbnRpZnkgdGhpcyB5ZXQu
IFRoZXJlIGlzIGEgbWFpbGluZyBsaXN0IGV4Y2hhbmdlIHRoYXQgY291bGQgYmUgcmVsYXRlZDoN
Cj4gDQo+IGh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvYXJjaGl2ZXMvaHRtbC94ZW4tZGV2
ZWwvMjAyMS0wOS9tc2cwMDM4Mi5odG1sDQo+IA0KPiBBbHRob3VnaCBJJ20gYSBsaXR0bGUgYml0
IHB1enpsZWQgYmVjYXVzZSB3aGVuIGNvbXBhcmluZyB3aXRoIHRoZSBvdGhlciBtZXNzYWdlcywg
dGhpcyBsb2cgbWVhc3NhZ2Ugc2VlbXMgdG8gYmUgbWlzc2luZyBzb21lIHBhcnRzICJ2R0lDRDog
dW5oYW5kbGVkIHdvcmQgd3JpdGUgMHgwMDAwMDAiIGluc3RlYWQgb2YgInZHSUNEOiB1bmhhbmRs
ZWQgd29yZCB3cml0ZSAweDAwMDAwMHh4eHh4eHggdG8geSINCg0KQWdyZWUsIGNvdWxkIGJlIHRo
YXQgc29tZXRoaW5nIGlzIGxvc3QgaW4gdGhlIGNvbnNvbGUuDQoNCj4gDQo+Pj4+PiBmZmZmZmZm
ZiB0byBJQ0FDVElWRVIwDQo+Pj4+PiAoWEVOKSBjb21tb24vZ3JhbnRfdGFibGUuYzoxOTA5OmQy
djAgRXhwYW5kaW5nIGQyIGdyYW50IHRhYmxlIGZyb20gMSB0bw0KPj4+Pj4gMiBmcmFtZXMNCj4+
Pj4+IChYRU4pIGNvbW1vbi9ncmFudF90YWJsZS5jOjE5MDk6ZDJ2MCBFeHBhbmRpbmcgZDIgZ3Jh
bnQgdGFibGUgZnJvbSAyIHRvDQo+Pj4+PiAzIGZyYW1lcw0KPj4+Pj4gKFhFTikgY29tbW9uL2dy
YW50X3RhYmxlLmM6MTkwOTpkMnYwIEV4cGFuZGluZyBkMiBncmFudCB0YWJsZSBmcm9tIDMgdG8N
Cj4+Pj4+IDQgZnJhbWVzDQo+Pj4+PiAoWEVOKSBXYXRjaGRvZyB0aW1lciBmaXJlZCBmb3IgZG9t
YWluIDANCj4+Pj4+IChYRU4pIEhhcmR3YXJlIERvbTAgc2h1dGRvd246IHdhdGNoZG9nIHJlYm9v
dGluZyBtYWNoaW5lDQo+Pj4+IA0KPj4+PiBJJ20gdW5zdXJlIHdob3NlIGF0dGVudGlvbiB0byBk
cmF3IHRvIHRoaXMgcmVwb3J0Lg0KPj4+PiANCj4+Pj4gVGhpcyBtaWdodCBiZSBhIHNjaGVkdWxl
ciBpc3N1ZSBzaW5jZSB0aGUgd2F0Y2hkb2cgdGltZXIgaXMgdHJpZ2dlcmluZy4NCj4+Pj4gDQo+
Pj4+IFRoaXMgbWlnaHQgYmUgYW4gQUNQSSBpc3N1ZSBhcyBBQ1BJIGlzIGluIHVzZSBoZXJlLg0K
Pj4+PiANCj4+Pj4gVGhpcyBtaWdodCBiZSBhbiBBUk0gTGludXgga2VybmVsIGlzc3VlLg0KPj4+
PiANCj4+Pj4gSW4gdGhlIGVuZCB0aGlzIGlzIHNvbWVvbmUgcnVubmluZyBpbnRvIHRyb3VibGUg
d2l0aCBYZW4gb24gYW4gQVJNDQo+Pj4+IGRldmljZS4gIFlldCBkZXNwaXRlIGJyaW5naW5nIHVw
IHRoZSBpc3N1ZSBoYXNuJ3QgZ290dGVuIGFueSBoZWxwLi4uDQo+Pj4gDQo+Pj4gSGV5IEVsbGlv
dCwNCj4+PiANCj4+PiBUaGFua3MgZm9yIHJhaXNpbmcgdGhlIHZpc2liaWxpdHkgb2YgdGhpcy4g
IEknbSBub3QgZmFtaWxpYXIgd2l0aCBBUk0sDQo+Pj4gYnV0IGlmIEkgd2VyZSBpbnZlc3RpZ2F0
aW5nIHRoaXMgSSdkIHRyeSB0byBmaWd1cmUgb3V0IHdoYXQgdGhlDQo+Pj4gInVuaGFuZGxlZCIg
ZXJyb3IgbWVzc2FnZXMgYXJlLiAgImdudHRhYl9tYXJrX2RpcnR5IG5vdCBpbXBsZW1lbnRlZA0K
Pj4+IHlldCIgbG9va3MgcHJldHR5IHN1cyB0b28sIGFuZCBhbHNvIHNvdW5kcyBsaWtlIGl0IG1p
Z2h0IGJlIHNvbWV0aGluZw0KPj4+IEFSTS1zcGVjaWZpYy4NCj4+IEkgdHJpZWQgdG8gZXhwbGFp
biB0aG9zZSBhbmQgdGhleSBhcmUgbm90IHRoZSByZWFzb24gb2YgdGhlIHByb2JsZW0uDQo+Pj4g
DQo+Pj4gSSBkb24ndCBzZWUgYW55dGhpbmcgc3VzcGljaW91cyBXUlQgdGhlIHNjaGVkdWxlciwg
YnV0IGEgc2ltcGxlIHdheSB0bw0KPj4+IHRlc3QgdGhhdCB3b3VsZCBiZSB0byBzZXQgdGhlIHNj
aGVkdWxlciB0byBjcmVkaXQxIGFuZCBzZWUgaWYgdGhhdA0KPj4+IGNoYW5nZXMgdGhpbmdzLg0K
Pj4gSSB3b3VsZCBkZWZpbml0ZWx5IHN1Z2dlc3QgdG8gaW52ZXN0aWdhdGUgdGhlIDIgdW5oYW5k
bGVkIFNNQy9IVkMgY2FsbHMNCj4+IGFzIGlmIG9uZSBvZiB0aGVtIGlzIHRvIGVuYWJsZSBzb21l
IGNsb2NrIGl0IGNvdWxkIGV4cGxhaW4gd2h5IHRoZSBzeXN0ZW0gaXMNCj4+IGdldHRpbmcgc3R1
Y2sgYXQgc29tZSBwb2ludCAobWF5YmUgd2FpdGluZyBmb3Igc29tZXRoaW5nIHRvIGJlIHN0YXJ0
ZWQpLg0KPj4gT3RoZXIgdGhhbiB0aGF0IGkgZGlkIG5vdCBzZWUgYW55dGhpbmcgdGhhdCBjb3Vs
ZCBwb2ludCB0byBhbiBvYnZpb3VzIGlzc3VlLg0KPiANCj4gSSdsbCB0cnkgdG8gdXNlIGNyZWRp
dDEgc2NoZWR1bGVyIGFuZCByZXBvcnQgcmVzdWx0cyB3aGVuIEkndmUgZ290IHNvbWUgbW9yZSB0
aW1lLCBqdXN0IHRvIG1ha2Ugc3VyZS4NCg0KVGhpcyBpcyBub3QgcmVsYXRlZCB0byB0aGUgc2No
ZWR1bGVyLiBXaGVuIGkgc2FpZCBjbG9jayBpIG1lYW50IGxpbnV4IHRyeWluZyB0byBjb25maWd1
cmUgdGhlIGNsb2NrDQpmcmVxdWVuY3kgb3Igdm9sdGFnZSBvZiBhIHNwZWNpZmljIHBlcmlwaGVy
YWwuDQoNCj4gDQo+IEZyb20gd2hhdCBJIGNvdWxkIGZpbmQgb3V0IGluIEFSTSBkb2N1bWVudGF0
aW9uLCB0aGUgdW5oYW5kbGVkIGNhbGxzIHNlZW0gdG8gYmUgdGhlIGZvbGxvd2luZzoNCj4gDQo+
IDB4ODQwMDAwNTAgPSBUUk5HX1ZFUlNJT04sIHJldHVybnMgdGhlIGltcGxlbWVudGVkIFRSTkcg
KFRydWUgUmFuZG9tIE51bWJlciBHZW5lcmF0b3IpIEFCSSB2ZXJzaW9uIFsxXQ0KDQpDb3VsZCBi
ZSB0aGUgb3JpZ2luIGJ1dCB0aGVuIHlvdSBjYW4gaWdub3JlIGkgd291bGQgc2F5LCBsaW51eCBt
aWdodCBmYWxsIGJhY2sgdG8gYW4gb3RoZXIgd2F5Lg0KDQo+IDB4ODYwMGZmMDEgPSBDYWxsIFVJ
RCBRdWVyeSBmb3IgVmVuZG9yIFNwZWNpZmljIEh5cGVydmlzb3IgU2VydmljZSwgUmV0dXJucyBh
IHVuaXF1ZSBpZGVudGlmaWVyIG9mIHRoZSBzZXJ2aWNlIHByb3ZpZGVyIFsyXQ0KDQpJIHdvdWxk
IHNheSB0aGlzIG9uZSBpcyB0aGUgcHJvYmxlbSBhbmQgeW91IHdvdWxkIG5lZWQgdG8gZGlnIGlu
IExpbnV4IHRvIHVuZGVyc3RhbmQgd2hhdCB2ZW5kb3Igc3BlY2lmaWMgY2FsbCBpcyBiZWluZyBt
YWRlLg0KTGludXggbWlnaHQgZXhwZWN0IHRoYXQgdGhpcyBvbmUgaXMgZG9uZSBidXQgWGVuIGlz
IGlnbm9yaW5nIGl0Lg0KU28gTGludXggY291bGQganVzdCBiZSB3YWl0aW5nIGZvciBzb21ldGhp
bmcgdGhhdCB3YXMgYWN0dWFsbHkgbm90IHN0YXJ0ZWQgYXQgYWxsLg0KDQo+IA0KPiBEb2VzIHRo
aXMgbWFrZSBzZW5zZT8NCj4gDQo+IFdoYXQgY291bGQgYmUgbmV4dCBzdGVwcz8NCg0KSSB3b3Vs
ZCBzYXkgdW5kZXJzdGFuZCBpbiBMaW51eCB3aG8gaXMgZ2VuZXJhdGluZyB0aGlzIGNhbGwgYW5k
IHRyeSB0byBkaXNhYmxlIGluIHRoZSBsaW51eA0KY29uZmlndXJhdGlvbiB3aGF0ZXZlciBjbG9j
ay92b2x0YWdlL3BlcmZvcm1hbmNlIGRyaXZlciBpcyBkb2luZyB0aGlzIGNhbGwuDQoNClJlZ2Fy
ZHMNCkJlcnRyYW5kDQoNCj4gDQo+IFRoYW5rcywNCj4gDQo+IFBhdWwNCj4gDQo+IFsxXSBodHRw
czovL2RldmVsb3Blci5hcm0uY29tL2RvY3VtZW50YXRpb24vZGVuMDA5OC9sYXRlc3QvDQo+IFsy
XSBodHRwczovL2RvY3VtZW50YXRpb24tc2VydmljZS5hcm0uY29tL3N0YXRpYy82MjhiNzU1Y2Uz
YzQzMjJhNzZhZjU2ZGU/dG9rZW49DQoNCg0K


From xen-devel-bounces@lists.xenproject.org Thu Jan 25 08:14:28 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 25 Jan 2024 08:14:28 +0000
Received: from list by lists.xenproject.org with outflank-mailman.671368.1044670 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSusV-0005dI-8U; Thu, 25 Jan 2024 08:14:27 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 671368.1044670; Thu, 25 Jan 2024 08:14:27 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSusV-0005dB-5o; Thu, 25 Jan 2024 08:14:27 +0000
Received: by outflank-mailman (input) for mailman id 671368;
 Thu, 25 Jan 2024 08:14:25 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=HXBH=JD=arm.com=Bertrand.Marquis@srs-se1.protection.inumbo.net>)
 id 1rSusT-0005d3-Cg
 for xen-devel@lists.xenproject.org; Thu, 25 Jan 2024 08:14:25 +0000
Received: from EUR05-AM6-obe.outbound.protection.outlook.com
 (mail-am6eur05on20601.outbound.protection.outlook.com
 [2a01:111:f403:2612::601])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id c0201266-bb59-11ee-98f5-6d05b1d4d9a1;
 Thu, 25 Jan 2024 09:14:24 +0100 (CET)
Received: from AS9PR06CA0665.eurprd06.prod.outlook.com (2603:10a6:20b:49c::10)
 by DU0PR08MB8614.eurprd08.prod.outlook.com (2603:10a6:10:402::8) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7228.22; Thu, 25 Jan
 2024 08:14:21 +0000
Received: from AMS0EPF00000195.eurprd05.prod.outlook.com
 (2603:10a6:20b:49c:cafe::89) by AS9PR06CA0665.outlook.office365.com
 (2603:10a6:20b:49c::10) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7228.26 via Frontend
 Transport; Thu, 25 Jan 2024 08:14:21 +0000
Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by
 AMS0EPF00000195.mail.protection.outlook.com (10.167.16.215) with
 Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.7202.16 via Frontend Transport; Thu, 25 Jan 2024 08:14:21 +0000
Received: ("Tessian outbound 67699c3f02bc:v228");
 Thu, 25 Jan 2024 08:14:20 +0000
Received: from bc75081f3b19.1
 by 64aa7808-outbound-1.mta.getcheckrecipient.com id
 19E40153-13CB-4693-BCE5-27F88946C2E7.1; 
 Thu, 25 Jan 2024 08:14:13 +0000
Received: from EUR05-VI1-obe.outbound.protection.outlook.com
 by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id bc75081f3b19.1
 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384);
 Thu, 25 Jan 2024 08:14:13 +0000
Received: from DB9PR08MB6588.eurprd08.prod.outlook.com (2603:10a6:10:25a::24)
 by VE1PR08MB5728.eurprd08.prod.outlook.com (2603:10a6:800:1a0::13)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7228.26; Thu, 25 Jan
 2024 08:14:11 +0000
Received: from DB9PR08MB6588.eurprd08.prod.outlook.com
 ([fe80::2257:5fcb:b449:fff0]) by DB9PR08MB6588.eurprd08.prod.outlook.com
 ([fe80::2257:5fcb:b449:fff0%7]) with mapi id 15.20.7228.026; Thu, 25 Jan 2024
 08:14:11 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: c0201266-bb59-11ee-98f5-6d05b1d4d9a1
ARC-Seal: i=2; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=pass;
 b=P9Eh/UgWlvAueuUasy04i0urfbbBm6+7/L6EyFT5ySPLyjlZWfPE3ZVBcFagdF690AX8Toxw5MKco1qjv8GdfFLgHUC3M+l5gzfgvWljWoDtHYs62J9AV39IoOwAvbtuVSfmwEkLh9iSQztUFOKS4TGTejwsChOEW3y+L87hdCmRu2BAGzELmU8czy4pDZUszyXzjsdkrVYw5cofLF31Xd4WfGwUBt0mJxyBgtd2jeBUsKYRxX1y14Q8LpbDOuzSpBfJV8WZ6+CWk7XuapdYCyAcypHrZ980KqsbBlVTIRRTu8nKHt3Xqyvu4z8oxSaPCxmHN9nJKyUrv25Zw3tzBQ==
ARC-Message-Signature: i=2; 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=LP+H53kxYLWzykxkSbENkcVzXQp0tirQrZogqVaHrNI=;
 b=M+AkAk2Cf5+VEhspYGfBhalr+vhoCO/NrwCHYQGFfhDYKp17fUw8F/2Lowr+SK59p/N5kD1uGn4a6WXYJPqfHh2TkiwaeWZmz4BZRuBGtLnTDlAyFqi2huUQPHAH1ONNDAXv8cOZABxSo3fjSu8oRDSB5RZTfDqZZP5Ly8wHYd9Fn4dX4Z+IJ1xu5TgV1x2xgCBIU89lpDkQZRTXPj9px2QF9rWq+7abAr9JviKafGxzi6qRh8XS6jcMeZmJMesnsj0Ozy5eNRUtkjG4zMwO6ap+wFvtCenSplMaza/gNSUMP73hneeLg5rzG2xLvN6Y6hU271/VUKzy5zG0M6c9Sw==
ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is
 63.35.35.123) smtp.rcpttodomain=lists.xenproject.org smtp.mailfrom=arm.com;
 dmarc=pass (p=none sp=none pct=100) action=none header.from=arm.com;
 dkim=pass (signature was verified) header.d=armh.onmicrosoft.com; arc=pass (0
 oda=1 ltdi=1 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com]
 dmarc=[1,1,header.from=arm.com])
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com;
 s=selector2-armh-onmicrosoft-com;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=LP+H53kxYLWzykxkSbENkcVzXQp0tirQrZogqVaHrNI=;
 b=d5Boq4pTGPovJyTDB1NqmVMgKecpE/gPcpcclL2P4mOOZebY/t8QFXY3kG7g21rBBPy5RTtGx0mUJ85CLDr2KpDxNXlaXJWEuW+wC8MnRO8tSow5Xp25xk5PDeNGDq9FTAeUtr3ezjoazIRwyZblZZWSqAIPWJFHgbRGOSywukc=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 63.35.35.123)
 smtp.mailfrom=arm.com; dkim=pass (signature was verified)
 header.d=armh.onmicrosoft.com;dmarc=pass action=none header.from=arm.com;
Received-SPF: Pass (protection.outlook.com: domain of arm.com designates
 63.35.35.123 as permitted sender) receiver=protection.outlook.com;
 client-ip=63.35.35.123; helo=64aa7808-outbound-1.mta.getcheckrecipient.com;
 pr=C
X-CheckRecipientChecked: true
X-CR-MTA-CID: 9ba8df456bae1c3a
X-CR-MTA-TID: 64aa7808
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=kXo+C6rcLmTw/ZcrP2H+1N9gYyiCfjNyzAn1PECnn3uDLbVPOpHg/1VPQYwFSqrUuf3v+2Hls3Qko+hP/ftlEqZWHMwCGQFJzMF5xYyy+E6MMldw6v+aDU/SNjDVjcNAq9di6670aIPHvfA0JyeImdw9pJZVqgV+BdB5qRcDp9R2sY6f8V0uvZEswd17mWfeCjX81VA1ujGfeuJTyNFqHpjig+6HjwVPhzPYov8WNHOAOcBfk0n+gw+STs88WXKopUGbExiYJnP5tklIH4kkDv3qMFTGMqdPy47yZ4GwqYB/xtxrxOaUFsE4KVQ/sVmQYUk2y/Wg+cqW54WwwCJ/QQ==
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=LP+H53kxYLWzykxkSbENkcVzXQp0tirQrZogqVaHrNI=;
 b=Pl4lOg7KODEyAtbDWqyAHAP63qk0e3+HL4dVcRwa7XCByOvtTAJKklJpuMMUiKSDRC1VMQc4dd5Txuqbd5uSbSAzMdFlvJ7b6yttjnWW2ckfyhJKgrxI9MEVk7V7xV0iL/jqh5od+tA2nzKO9RSbwQgltOkhS1/m4gX61YJj9hqw6AyVRGKddofal6deH9dtSehK5Fe6IefZfYDY59uZi9ZG0a8axt72rOJL1JqofJcj+Vqai+1HXlAwJL9IsQN2GEShpnIHHxZZ07w013erDoTVw7hZJ1OWR1wZrsNVby1ikDXTxAguvxPZUUr3QGwHC9SFEooGwUemgNEyu9beXQ==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass
 header.d=arm.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com;
 s=selector2-armh-onmicrosoft-com;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=LP+H53kxYLWzykxkSbENkcVzXQp0tirQrZogqVaHrNI=;
 b=d5Boq4pTGPovJyTDB1NqmVMgKecpE/gPcpcclL2P4mOOZebY/t8QFXY3kG7g21rBBPy5RTtGx0mUJ85CLDr2KpDxNXlaXJWEuW+wC8MnRO8tSow5Xp25xk5PDeNGDq9FTAeUtr3ezjoazIRwyZblZZWSqAIPWJFHgbRGOSywukc=
From: Bertrand Marquis <Bertrand.Marquis@arm.com>
To: Andrew Cooper <andrew.cooper3@citrix.com>
CC: George Dunlap <george.dunlap@cloud.com>, Elliott Mitchell
	<ehem+xen@m5p.com>, Paul Leiber <paul@onlineschubla.de>,
	"xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>, Dario
 Faggioli <dfaggioli@suse.com>, Jan Beulich <jbeulich@suse.com>, Stefano
 Stabellini <sstabellini@kernel.org>, Julien Grall <julien@xen.org>
Subject: Re: Xen 4.18rc/ARM64 on Raspberry Pi 4B: Traffic in DomU crashing
 Dom0 when using VLANs
Thread-Topic: Xen 4.18rc/ARM64 on Raspberry Pi 4B: Traffic in DomU crashing
 Dom0 when using VLANs
Thread-Index:
 AQHZ/gcaPQmWs3huW06NGLzfgAl1VbBVWRAAgIUTWgCAB8TBgIAEEyeAgAFsJwCAAo1CAIAAkx0A
Date: Thu, 25 Jan 2024 08:14:11 +0000
Message-ID: <5DA12CD1-9F65-43EE-BA11-0B4E45E3E44E@arm.com>
References: <838ff75f-1352-4d3c-9bc1-c7a57c828231@onlineschubla.de>
 <4cddfd89-f195-4a50-a14d-b86121414e56@onlineschubla.de>
 <f8f39239-ea95-4fc7-9abe-6ca005eb02d2@onlineschubla.de>
 <ZarcWQ6Ugwowy050@mattapan.m5p.com>
 <CA+zSX=Y=BsVEp3o6jRprn5sntWVA0Z6wNXUxtffDN+=fPv_Fzg@mail.gmail.com>
 <D2496DDC-78FA-4CC1-B7FC-EB62E506BC4F@arm.com>
 <211c5cbb-2269-48b6-91b5-3a1a8127ce48@citrix.com>
In-Reply-To: <211c5cbb-2269-48b6-91b5-3a1a8127ce48@citrix.com>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-mailer: Apple Mail (2.3774.200.91.1.1)
Authentication-Results-Original: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=arm.com;
x-ms-traffictypediagnostic:
	DB9PR08MB6588:EE_|VE1PR08MB5728:EE_|AMS0EPF00000195:EE_|DU0PR08MB8614:EE_
X-MS-Office365-Filtering-Correlation-Id: dca1cc7d-ea1c-4dfa-c03c-08dc1d7da25d
x-checkrecipientrouted: true
nodisclaimer: true
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted: BCL:0;
X-Microsoft-Antispam-Message-Info-Original:
 oaeH+Ii29mhFazw3wHanR8xy5cbOw6/L2wrFqGHCnuWGAqz45T/Ko4nCDNociJrcrXUEAJLeek/drSJUQH0t2lrBVvQkSeuzTtYTdJrOUu2wOY6FCs5Mf1m5wPcj34QP7+1HwjnfeAnVwtMIJ54YM0EJnPWH0K25OVJyJwzJPKjpDjhW/AwcvfKe0SD4X5w4auUqnVAc/Khn/fRSEfHrQA7qxJ6oY52ICXqu4w5nhG+wI96a8hyALCd1t9PcMy9BE468DCpt3zFLtP63chGGPSbH9iOm/catkiHcPdR9ydzefr7s52bLDYKb4wSJHPifY583w1Kk+UK/+SKwWivCtvso+jiNoyyk8ImP5L5PceBeFkJqozZuMpAw6mtH3IrjVI42ZzSwlQO4ikWC/22QzFK/pQzDPIc30plBV/DSCgr7BE/rvmSYyiuGAmYw87djHwAmnYMiypi7IXzaDhHe761paviX6DBZX6oGOTdCLmJ0SPVV7qZev0q3VMtvYsiMiZdoicCoODQrK1AdxCIHF5o3PLnc3FERj9BiNAjWrq5kY7oLjHdN+gSipV4oYyzjNH2y5tTScoTH3OPsFPNVf4lQ5GDvRI1/JKFSbGCeI5sM+mvLAwLI0q/T8JaRxLAK9T4/lVw0gvaHt/xU33Oq3A==
X-Forefront-Antispam-Report-Untrusted:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DB9PR08MB6588.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230031)(346002)(376002)(39860400002)(136003)(396003)(366004)(230922051799003)(64100799003)(186009)(451199024)(1800799012)(83380400001)(122000001)(6506007)(53546011)(38100700002)(36756003)(71200400001)(2616005)(38070700009)(6512007)(2906002)(6486002)(478600001)(86362001)(33656002)(41300700001)(4744005)(5660300002)(66556008)(66946007)(6916009)(66476007)(316002)(66446008)(76116006)(64756008)(54906003)(8676002)(8936002)(4326008)(45980500001);DIR:OUT;SFP:1101;
Content-Type: text/plain; charset="us-ascii"
Content-ID: <B02BE70CEAB1BE45BF9C6CA60D923DDC@eurprd08.prod.outlook.com>
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-MS-Exchange-Transport-CrossTenantHeadersStamped: VE1PR08MB5728
Original-Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=arm.com;
X-EOPAttributedMessage: 0
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 AMS0EPF00000195.eurprd05.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	36433fca-8757-40ad-4851-08dc1d7d9c6a
X-Microsoft-Antispam: BCL:0;
X-Microsoft-Antispam-Message-Info:
	+Kh1/K+lNOmMvtsAOzTAGhYEme5ALm1bnXPjGOt76fNFbvUy78G1IHVSdS3YDwQ4nMJhh1fYEE2Er91VpCkvjAafEDQs32mf8BrI0VhM70Sh54KlybYv/A2iEVZSqsnJ0o0NiOQleHHOgQWfIMPxkkgmpuW9UcU/q+FmmKJp/CqWTMBfLdly9hx4EV7os1jXRwnFRi2zWvQMcH15ELgaRzOhFO+NJHCGM7WjEbZLLCXdckkEJffVfRFOTza7fP1VaLVvn3JQET5CR1R6YCUKNs73KmzmfwcV2SkyMf3JXOEQsNOZMPoLtFD67HcetA6b8yuhq65FwyTdis/LrcEcFkFwwgd3b0tcqjY6B1aRdYuf5ePIGRhsBq3TPIv+qogJTlvaDf1vP/h/a8K8U3PPnlUShSir35rnnopD4z1p0XZOifBx96kwuTcwDXQ0ZGxfK8qyV53how9ZGTNvlcSFBlsPQckfbvkbQAxSH/r5rHmanF85Kk7lAuRrHLpWIv/eROHSlsAqI81Z6bNUluxNODpYtxLiKmv0DbjfzpxYDSNnH0kw3vqbhce98Ga03eUZBoRjdLpxoc82+zhtqvGAt19KWHG0Pk0qAnt5mTkL7KWwXYwl0J/2ZfPvnApGqbgqituxXDWZiz8l3Zv0eLuKvf4t5UplFiqOO9cXXW9EKFIoDiqtOhX9kAfUSLqx4MweNi0AQ6pVTEje2le/l7eghrE+RlpEhDfgO7YpVGqmDS1q+UO4e6CIJUrw+tHAMQf9
X-Forefront-Antispam-Report:
	CIP:63.35.35.123;CTRY:IE;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:64aa7808-outbound-1.mta.getcheckrecipient.com;PTR:ec2-63-35-35-123.eu-west-1.compute.amazonaws.com;CAT:NONE;SFS:(13230031)(4636009)(39860400002)(136003)(396003)(346002)(376002)(230922051799003)(1800799012)(451199024)(82310400011)(64100799003)(186009)(46966006)(40470700004)(36840700001)(41300700001)(82740400003)(356005)(81166007)(54906003)(70206006)(316002)(70586007)(86362001)(8676002)(8936002)(53546011)(6506007)(478600001)(6486002)(40480700001)(40460700003)(36756003)(4326008)(6862004)(5660300002)(36860700001)(33656002)(2906002)(4744005)(47076005)(26005)(2616005)(336012)(6512007)(83380400001);DIR:OUT;SFP:1101;
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Jan 2024 08:14:21.1313
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: dca1cc7d-ea1c-4dfa-c03c-08dc1d7da25d
X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[63.35.35.123];Helo=[64aa7808-outbound-1.mta.getcheckrecipient.com]
X-MS-Exchange-CrossTenant-AuthSource:
	AMS0EPF00000195.eurprd05.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU0PR08MB8614

Hi Andrew,

> On 25 Jan 2024, at 00:27, Andrew Cooper <andrew.cooper3@citrix.com> wrote=
:
>=20
> On 23/01/2024 8:29 am, Bertrand Marquis wrote:
>>> Thanks for raising the visibility of this.  I'm not familiar with ARM,
>>> but if I were investigating this I'd try to figure out what the
>>> "unhandled" error messages are.  "gnttab_mark_dirty not implemented
>>> yet" looks pretty sus too, and also sounds like it might be something
>>> ARM-specific.
>> I tried to explain those and they are not the reason of the problem.
>=20
> The "gnttab_mark_dirty not implemented yet" printk() should be deleted.
>=20
> It's /* TODO - logdirty support */ in a form that is actively unhelpful
> to people using a debug hypervisor to debug other things.

Could make sense.
It is true that this one appears in all debug log but it might not be
very useful in fact.

@julien and Stefano: what would you say ?

Bertrand

>=20
> ~Andrew



From xen-devel-bounces@lists.xenproject.org Thu Jan 25 08:15:17 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 25 Jan 2024 08:15:17 +0000
Received: from list by lists.xenproject.org with outflank-mailman.671370.1044681 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSutJ-00068V-I3; Thu, 25 Jan 2024 08:15:17 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 671370.1044681; Thu, 25 Jan 2024 08:15:17 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSutJ-00068O-Eh; Thu, 25 Jan 2024 08:15:17 +0000
Received: by outflank-mailman (input) for mailman id 671370;
 Thu, 25 Jan 2024 08:15:16 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=vt1H=JD=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rSutI-00065O-Qq
 for xen-devel@lists.xenproject.org; Thu, 25 Jan 2024 08:15:16 +0000
Received: from mail-lj1-x22f.google.com (mail-lj1-x22f.google.com
 [2a00:1450:4864:20::22f])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id de01a8c4-bb59-11ee-9b0f-b553b5be7939;
 Thu, 25 Jan 2024 09:15:14 +0100 (CET)
Received: by mail-lj1-x22f.google.com with SMTP id
 38308e7fff4ca-2cd0d05838fso76485221fa.1
 for <xen-devel@lists.xenproject.org>; Thu, 25 Jan 2024 00:15:14 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 r4-20020a6b4404000000b007bc3ebacf3esm7404845ioa.46.2024.01.25.00.15.12
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 25 Jan 2024 00:15:13 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: de01a8c4-bb59-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1706170514; x=1706775314; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=0TsVYP8V1WNBgDGLGJluNWLWIKRAhg3pidQ/dxNYMkg=;
        b=FzXpeJZa5ApJyc2V2saLn2w8jpMzkwWSOpsSk+/2ivzrK0emExTIi0muKTQeHySmYF
         SH7wBI94/iHpm5BpnG+4wndhRuxTCbQgHYfQKuVS/i/4TYgQ0gqBCmo1yVsYJNg450xV
         LbJJi/6m67jz10zlovnBAz18NcLClIec7qXPhNjxYn1jRKPLNW1U/L8jNgKnLsfjoVEb
         VsnHWtPrK3kBGRwyr+FafoLNifHSi3+WjA7U2Zvk1xy9NELwB/H+vedK+S8ZfPQfzeu4
         yuAQLMY3KAfaYhW1BheKmBGdxQaAAvwpiOxMiyayStDBkOTnm7DDPKzuXtiAo/HAq27m
         NeZA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706170514; x=1706775314;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=0TsVYP8V1WNBgDGLGJluNWLWIKRAhg3pidQ/dxNYMkg=;
        b=ePtQ1fJGOyc+pwAUjf9fzRwZoFbNyhT43ouhWList8qZxgZlqG+nBaOmKSmAyIZG+7
         fz3Rox7Bsu+4G780Rdt4lRaHgU0If/iExrWAEScS/kE/1xyT5LrAgX/rzJRJetBlVFeE
         8qEylvskdOPi8Hpg3gfNJCtBvK2mBiyOL3TdYtztjUgQDrzOXlET6Ytd5a8o09UblVwb
         X6Oo5Ovcd/lu99iykSixRUyRB+OBK9WH7pidG/yepMNJAMuwXFY+CPr1sIR9/nWFl/ZT
         TlhH/rdnmWiKQtSAqcwLyG0vmAf0hcTIr6/R79YQ1n0DFUY1kcioZG0z/kl0KU8d1r1C
         T43Q==
X-Gm-Message-State: AOJu0YwUsdxufU8AAM/OKI/rPq5l679Jur7yClmnFgOHjeWAQo0H16CS
	yk8wwAfK7gYVCg9e8bg27zZaSMpTnRRG9q2azrP4R07mCp4s+SWBU5m8M1tzIw==
X-Google-Smtp-Source: AGHT+IEBazSi4tb6211TpYCjtgUZj5mLub0prg1DQfO97nrvFgAvCvcYWssrUsEUtmE7SRdKokQnDA==
X-Received: by 2002:a2e:a686:0:b0:2cf:1586:bd with SMTP id q6-20020a2ea686000000b002cf158600bdmr276180lje.14.1706170514108;
        Thu, 25 Jan 2024 00:15:14 -0800 (PST)
Message-ID: <b19ef7de-b55c-4a70-8b64-d0d4d5a96d93@suse.com>
Date: Thu, 25 Jan 2024 09:15:10 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] consolidate do_bug_frame() / bug_fn_t
Content-Language: en-US
To: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>,
 Federico Serafini <federico.serafini@bugseng.com>,
 George Dunlap <george.dunlap@citrix.com>, Julien Grall <julien@xen.org>,
 Wei Liu <wl@xen.org>, Bertrand Marquis <bertrand.marquis@arm.com>,
 Michal Orzel <michal.orzel@amd.com>,
 Stefano Stabellini <sstabellini@kernel.org>
References: <d466eb44-1160-4b57-a41f-752dbf626748@suse.com>
 <alpine.DEB.2.22.394.2401231731570.2287888@ubuntu-linux-20-04-desktop>
 <665b7ea9-77d9-4bbc-a67c-1ac0d9ba908a@suse.com>
 <37afd0b1-a6b3-41aa-8338-c99b68592c92@citrix.com>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <37afd0b1-a6b3-41aa-8338-c99b68592c92@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 25.01.2024 02:14, Andrew Cooper wrote:
> On 24/01/2024 7:28 am, Jan Beulich wrote:
>> On 24.01.2024 02:34, Stefano Stabellini wrote:
>>> I managed to get back to read the mailing list and noticed this patch.
>>>
>>> Is it still relevant and needs to be reviewed?
>>>
>>> Are there any outstanding disagreements between maintainers on the
>>> approach to take here?  Or should I just go ahead and review it?
>> It is still relevant from my pov, and everything that may be controversial
>> is said ...
> 
> BUGFRAME_* cannot legitimately modify the interrupted context.  Two are
> fatal paths, and other two are side-effect-less as far as C can tell.
> 
> So the infrastructure ought to take a const pointer.
> 
> The reason why this pointer is non-const is to do with the interaction
> of the serial and keyhandler infrastructures.  Because we're adjusting
> that for other reasons, I was hoping it would subsequently be easy to
> switch Xen to being properly const in this regard.
> 
> Turns out it is:
> 
>  
> https://gitlab.com/xen-project/people/andyhhp/xen/-/commit/4f857075005da1d28632e4f9198c2e7d0f404b9a
> 
> with a couple of caveats.  (Only the buster-gcc-ibt run failed, so I've
> got some cf_check-ing to adjust, but all the other builds worked fine).
> 
> 
> To make the serial code compile, I ended up having to revert patch 2 of
> the regs series, which I believe is safe to do following patch 3-5 which
> un-plumb the regs pointer deeper in the call chain.  If this is turns
> out to be true, then the patch ought to be added and reverted in the
> same series so it isn't left hanging about after the fact.

Hmm, I'm not sure I see how reverting that would end up working. However,
aiui you need to revert primarily for the non-const-ness of the pointers
involved in [gs]et_irq_regs(). I wonder whether, if we followed your
underlying thought here, those shouldn't be const-ified then anyway.

> The _$X_poll() functions are used in timer context, which means there's
> an outer regs context already latched, and that's arguably a better
> context to use anyway for 'd'.

If the timer happens to run on an idle vCPU, what "outer regs context"
would we have there?

> This in turn allows us to remove a #UD from a fast(ish) path, and remove
> some per-cpu or static variables which are just used for non-standard
> parameter passing because run_in_exception_handler() doesn't let you
> pass any.
> 
> 
> This leaves the '%' debugger infrastructure.  Being a debugger, it's
> making arbitrary changes anyway and I'd much rather cast away constness
> for a debugger, than to keep everything else mutable when it oughtn't to be.
> 
> If absolutely nothing else, registration and handling '%' ought to be
> from x86 code rather than common code, which would remove the
> do_debugger_trap_fatal() layering violation.
> 
> But, the more I look into the gdbstub the more I'm convinced that it
> doesn't work.  For example, this gem:
> 
> /* Resuming after we've stopped used to work, but more through luck than
> any actual intention.  It doesn't at the moment. */
> 
> From c/s b69f92f3012 in July 2004, and more specifically the commit
> which added the gdbstub functionality to begin with.  I.e. it doesn't
> appear to have ever supported more than "poke around in the crashed
> state".  In the 2 decades that noone has fixed this, we've gained far
> better technologies for doing this, such as running it in a VM.
> 
> I am going to submit some patches deleting gdbstub.  It clearly had not
> much value to begin with, and is not definitely not worth the problems
> it is creating in adjacent code these days.

All fine. Still I wonder whether in the meantime this patch isn't an
improvement on its own, and hence whether the const couldn't sensibly
be added subsequently.

Jan


From xen-devel-bounces@lists.xenproject.org Thu Jan 25 08:23:11 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 25 Jan 2024 08:23:11 +0000
Received: from list by lists.xenproject.org with outflank-mailman.671380.1044691 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSv0s-0008SU-Ag; Thu, 25 Jan 2024 08:23:06 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 671380.1044691; Thu, 25 Jan 2024 08:23:06 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSv0s-0008SN-7A; Thu, 25 Jan 2024 08:23:06 +0000
Received: by outflank-mailman (input) for mailman id 671380;
 Thu, 25 Jan 2024 08:23:05 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=vt1H=JD=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rSv0r-0008SH-At
 for xen-devel@lists.xenproject.org; Thu, 25 Jan 2024 08:23:05 +0000
Received: from mail-lf1-x133.google.com (mail-lf1-x133.google.com
 [2a00:1450:4864:20::133])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id f501e472-bb5a-11ee-9b0f-b553b5be7939;
 Thu, 25 Jan 2024 09:23:02 +0100 (CET)
Received: by mail-lf1-x133.google.com with SMTP id
 2adb3069b0e04-5100fdd37f7so2452739e87.2
 for <xen-devel@lists.xenproject.org>; Thu, 25 Jan 2024 00:23:02 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 l21-20020a02ccf5000000b0046e6063e2c0sm4516250jaq.107.2024.01.25.00.23.00
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 25 Jan 2024 00:23:01 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: f501e472-bb5a-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1706170982; x=1706775782; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=m3E4knhkWBU1uhlMvX/fdydLJX4MEs/nNUhxgOJklns=;
        b=PV8iqCcn5PBQ//rhox1btOgb7k/bUxjvGvN5qlcAfmmHf0TS1ZkGhfIbzwpIUunraP
         KqqCPqm2G7nDSxWpdfnYEqsGLbPlcL/n7zxuoCrX8dMHgCmh79Alzlx+mFaJo68lKY3M
         jT2SfkOoAXvXO0lkQuD2IQN4Bm4Ke5LbGllZjL8KX2KSVpUPteQctixOf/CdDnrYF7bv
         QHGY6mW8qRALsXL+spqL5eojCKwe+lY4V2OJfIFrOQ0XbYkl9KbCZs4AFp9QNEVDCfqY
         EMHvy20sK/dpNoL9wJs4UW6IfG24eUDj40BWwaIwgFiF/wJZCbYNqOIdUJT7dhl0BlHB
         b0mA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706170982; x=1706775782;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=m3E4knhkWBU1uhlMvX/fdydLJX4MEs/nNUhxgOJklns=;
        b=bwaA+Yi4ijYITmECLuoESFFnIpvMhOAyyAnZu/R1TXQqzd1HKkgWwBWOnTTA/R4HE6
         cW2r+6fUVHBVFGa2WfViYhslsK5EySvnGi6NmtEDBzIwd1xw0CHa/tD2QyXmzrwT8v0s
         VkDxC1kq+DABHqfYtfZJRlrfIsAOiZzYmnkNG/Yy9NIUQCUU80vQMSpC1L6twc5dHu2M
         v8cn176hlZAwoFzSLte6pdJumWK+Dlc3WT4FcgWzo7IdU0qHiYwIkhnZZIQIY91Rh/Ky
         f05LRoW6V6aF9/jrpXkmOj+GeI5kcpcqIVkx16GIHjDRD3ZPc+1Q99yfblka3SKCTGpa
         1IQw==
X-Gm-Message-State: AOJu0YzS2zYSEj6KH9wrjP34AT9BSQiAjvOhjBcQNPfLO63g6uHgiRrG
	WrbmGKVZKziNfZXB8nDLjrOjCnJIz7Q2KMvwB7Z02yPxy0vBjtvhTudMFGU52w==
X-Google-Smtp-Source: AGHT+IFhPhVk7GZNmxQRA7JZsT7D8LrfoEf61NLHRghutGFew+dewPdwr78oPGF9MmX/O92dLIXY/Q==
X-Received: by 2002:a2e:b0cb:0:b0:2cf:321a:17d7 with SMTP id g11-20020a2eb0cb000000b002cf321a17d7mr403728ljl.69.1706170982313;
        Thu, 25 Jan 2024 00:23:02 -0800 (PST)
Message-ID: <dcbd607f-f7ff-4dd3-98d1-39aec51fd81b@suse.com>
Date: Thu, 25 Jan 2024 09:22:58 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] consolidate do_bug_frame() / bug_fn_t
Content-Language: en-US
To: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>,
 Federico Serafini <federico.serafini@bugseng.com>,
 George Dunlap <george.dunlap@citrix.com>, Julien Grall <julien@xen.org>,
 Wei Liu <wl@xen.org>, Bertrand Marquis <bertrand.marquis@arm.com>,
 Michal Orzel <michal.orzel@amd.com>,
 Stefano Stabellini <sstabellini@kernel.org>
References: <d466eb44-1160-4b57-a41f-752dbf626748@suse.com>
 <alpine.DEB.2.22.394.2401231731570.2287888@ubuntu-linux-20-04-desktop>
 <665b7ea9-77d9-4bbc-a67c-1ac0d9ba908a@suse.com>
 <37afd0b1-a6b3-41aa-8338-c99b68592c92@citrix.com>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <37afd0b1-a6b3-41aa-8338-c99b68592c92@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 25.01.2024 02:14, Andrew Cooper wrote:
> On 24/01/2024 7:28 am, Jan Beulich wrote:
>> On 24.01.2024 02:34, Stefano Stabellini wrote:
>>> I managed to get back to read the mailing list and noticed this patch.
>>>
>>> Is it still relevant and needs to be reviewed?
>>>
>>> Are there any outstanding disagreements between maintainers on the
>>> approach to take here?  Or should I just go ahead and review it?
>> It is still relevant from my pov, and everything that may be controversial
>> is said ...
> 
> BUGFRAME_* cannot legitimately modify the interrupted context.  Two are
> fatal paths, and other two are side-effect-less as far as C can tell.
> 
> So the infrastructure ought to take a const pointer.
> 
> The reason why this pointer is non-const is to do with the interaction
> of the serial and keyhandler infrastructures.  Because we're adjusting
> that for other reasons, I was hoping it would subsequently be easy to
> switch Xen to being properly const in this regard.
> 
> Turns out it is:
> 
>  
> https://gitlab.com/xen-project/people/andyhhp/xen/-/commit/4f857075005da1d28632e4f9198c2e7d0f404b9a
> 
> with a couple of caveats.  (Only the buster-gcc-ibt run failed, so I've
> got some cf_check-ing to adjust, but all the other builds worked fine).
> 
> 
> To make the serial code compile, I ended up having to revert patch 2 of
> the regs series, which I believe is safe to do following patch 3-5 which
> un-plumb the regs pointer deeper in the call chain.  If this is turns
> out to be true, then the patch ought to be added and reverted in the
> same series so it isn't left hanging about after the fact.

Looking further into this, I can't see how reverting ought to be possible,
even less so specifically after patch 5. Patches 4 and 5 merely eliminate
now unused parameters. Hence imo if it could be reverted after 5, it also
ought to be fine to revert after 3. Which in turn it would mean it's not
needed at all. Which I simply cannot see (yet?).

Jan


From xen-devel-bounces@lists.xenproject.org Thu Jan 25 08:34:53 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 25 Jan 2024 08:34:53 +0000
Received: from list by lists.xenproject.org with outflank-mailman.671386.1044702 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSvCB-0002Vs-E8; Thu, 25 Jan 2024 08:34:47 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 671386.1044702; Thu, 25 Jan 2024 08:34:47 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSvCB-0002Vl-9h; Thu, 25 Jan 2024 08:34:47 +0000
Received: by outflank-mailman (input) for mailman id 671386;
 Thu, 25 Jan 2024 08:34:46 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=vt1H=JD=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rSvCA-0002Vf-8r
 for xen-devel@lists.xenproject.org; Thu, 25 Jan 2024 08:34:46 +0000
Received: from mail-lj1-x235.google.com (mail-lj1-x235.google.com
 [2a00:1450:4864:20::235])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 97a77fc9-bb5c-11ee-98f5-6d05b1d4d9a1;
 Thu, 25 Jan 2024 09:34:45 +0100 (CET)
Received: by mail-lj1-x235.google.com with SMTP id
 38308e7fff4ca-2cf1b770833so25755291fa.0
 for <xen-devel@lists.xenproject.org>; Thu, 25 Jan 2024 00:34:45 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 t5-20020a5edd05000000b007bfbe4e309asm96222iop.27.2024.01.25.00.34.43
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 25 Jan 2024 00:34:44 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 97a77fc9-bb5c-11ee-98f5-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1706171684; x=1706776484; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=6TUw9FUDv+Cjc8ukj2KeedkIP/sjen5jeo28MzoMBx4=;
        b=Je/7oOfU7Git/MtUI6+nopOqolGfoX50bToa2ucfDYfXifjx+bsZbqS/ug3oyweXHb
         qz08haFRRy+LYnqF/6Tw5SlTjFM1t5WxQA3eeXuLeG5/v3xl2OXvebe1yG6tZxzWF5jK
         q8uN5iAwugHqxU+CO3O05TTNjA7PN2tjRBfK6qUs0WBhlojrVfbKJ4yKwT2/he7zAyjU
         9X6t6qRUbeRVxAO3E2+2cTPdkgWfD/PRk0yYRnAhCc7XFWt9ldAWX5EvenXqo2gqPdqB
         Mdt2cThheyTPnoPMb2B72u3yFMwxfNrheP2hcasmT3xi8CQGfDiW20trSwpulaNigt4r
         W49g==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706171684; x=1706776484;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=6TUw9FUDv+Cjc8ukj2KeedkIP/sjen5jeo28MzoMBx4=;
        b=BO0n96gInb7xOGY3tgDCt7cG2VdvN4rf3UMV86h9jFJgfAHo2tgG2UjgV1XwpMbzj7
         owoEmAwnAMUfaZUXwpXRdxeOBtig0DBBwTAsW20s23ItZcRjLdk0fFDMu/2Nu9sXX8bx
         E183YLCgKZZgH0934AzOQlVqCV/+IsUlQQjQvI0T3W5Wdgm0RJ5P+rdrW+/lAsvcFpRQ
         76jlGxe0i9ppJTkYBs6sr4NVJWlN8qWAyJZigc9HtN0ggZ26S+Td7HrupdB9EVIKAAoj
         t4PdLF+3g3Co7BtxDdbIqnxicbg3pNzRmsLyNHIsz91ExRZYge8qf/jsW0NyD1RCrO+9
         89UQ==
X-Gm-Message-State: AOJu0YxNmJy0br5d9WNi5GHg+dNsYSgJT99VMu6NArMtzzhAzQsSHNYB
	LEvvKs0AXwmoAUhwuG8rAyVKx/X47Xog8UY9hEVwmgGkD4An4jEgkk8+dJaV4Q==
X-Google-Smtp-Source: AGHT+IFeb2YZ/0f1mwIivcBGoPrye2uctxkUJnIYkKwSeIX6Qa2IOtOIn1gEzoI38rn0p4B3Ag48iQ==
X-Received: by 2002:a05:651c:1cd:b0:2cc:78c5:7ffa with SMTP id d13-20020a05651c01cd00b002cc78c57ffamr447310ljn.7.1706171684577;
        Thu, 25 Jan 2024 00:34:44 -0800 (PST)
Message-ID: <ad178469-15c3-4ae5-8538-e927f1116a42@suse.com>
Date: Thu, 25 Jan 2024 09:34:40 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v5 1/3] x86/iommu: remove regions not to be mapped
Content-Language: en-US
To: Roger Pau Monne <roger.pau@citrix.com>
Cc: Paul Durrant <paul@xen.org>, Andrew Cooper <andrew.cooper3@citrix.com>,
 Wei Liu <wl@xen.org>, xen-devel@lists.xenproject.org
References: <20240124172953.29814-1-roger.pau@citrix.com>
 <20240124172953.29814-2-roger.pau@citrix.com>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <20240124172953.29814-2-roger.pau@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 24.01.2024 18:29, Roger Pau Monne wrote:
> --- a/xen/arch/x86/hvm/io.c
> +++ b/xen/arch/x86/hvm/io.c
> @@ -369,6 +369,22 @@ bool vpci_is_mmcfg_address(const struct domain *d, paddr_t addr)
>      return vpci_mmcfg_find(d, addr);
>  }
>  
> +int __hwdom_init vpci_subtract_mmcfg(const struct domain *d, struct rangeset *r)
> +{
> +    const struct hvm_mmcfg *mmcfg;
> +
> +    list_for_each_entry ( mmcfg, &d->arch.hvm.mmcfg_regions, next )
> +    {
> +        int rc = rangeset_remove_range(r, PFN_DOWN(mmcfg->addr),
> +                                       PFN_DOWN(mmcfg->addr + mmcfg->size - 1));

Along the lines of this, ...

> --- a/xen/arch/x86/setup.c
> +++ b/xen/arch/x86/setup.c
> @@ -2138,6 +2138,54 @@ int __hwdom_init xen_in_range(unsigned long mfn)
>      return 0;
>  }
>  
> +int __hwdom_init remove_xen_ranges(struct rangeset *r)
> +{
> +    paddr_t start, end;
> +    int rc;
> +
> +    /* S3 resume code (and other real mode trampoline code) */
> +    rc = rangeset_remove_range(r, PFN_DOWN(bootsym_phys(trampoline_start)),
> +                               PFN_DOWN(bootsym_phys(trampoline_end)) - 1);

... did you perhaps mean

                               PFN_DOWN(bootsym_phys(trampoline_end) - 1));

here (and then similarly below, except there the difference is benign I
think, for the labels being page-aligned)?

Jan


From xen-devel-bounces@lists.xenproject.org Thu Jan 25 08:47:33 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 25 Jan 2024 08:47:33 +0000
Received: from list by lists.xenproject.org with outflank-mailman.671395.1044711 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSvOK-00050l-Gy; Thu, 25 Jan 2024 08:47:20 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 671395.1044711; Thu, 25 Jan 2024 08:47:20 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSvOK-00050e-Cq; Thu, 25 Jan 2024 08:47:20 +0000
Received: by outflank-mailman (input) for mailman id 671395;
 Thu, 25 Jan 2024 08:47:19 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=etx6=JD=cloud.com=roger.pau@srs-se1.protection.inumbo.net>)
 id 1rSvOI-00050U-Vq
 for xen-devel@lists.xenproject.org; Thu, 25 Jan 2024 08:47:19 +0000
Received: from mail-ed1-x530.google.com (mail-ed1-x530.google.com
 [2a00:1450:4864:20::530])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 57a3005b-bb5e-11ee-98f5-6d05b1d4d9a1;
 Thu, 25 Jan 2024 09:47:16 +0100 (CET)
Received: by mail-ed1-x530.google.com with SMTP id
 4fb4d7f45d1cf-55a45a453eeso8132757a12.0
 for <xen-devel@lists.xenproject.org>; Thu, 25 Jan 2024 00:47:17 -0800 (PST)
Received: from localhost ([213.195.118.74]) by smtp.gmail.com with ESMTPSA id
 n20-20020a05640205d400b0055d07073cc6sm210687edx.80.2024.01.25.00.47.16
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 25 Jan 2024 00:47:16 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 57a3005b-bb5e-11ee-98f5-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1706172436; x=1706777236; darn=lists.xenproject.org;
        h=in-reply-to:content-disposition:mime-version:references:message-id
         :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to;
        bh=nOPKVww7bzuKHViPxmqAo+KZYz+GyO21TmYZk/zuNNM=;
        b=XX/fyuNbZNNxDOU3w29C2rV3GYL5zZlfcDj+op4psfH3uutyD2pF81TUB2i3H/+Bof
         hkdRcbJfvWCTcvmBEVNZ5jwvWpCcJe/mkOJ8JV9UvFHbz985rrbwdrR00OnFw3AQZK74
         BpxzlEB4urj05fs3uoFD+6v6+rK2vb1r5TsXE=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706172436; x=1706777236;
        h=in-reply-to:content-disposition:mime-version:references:message-id
         :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to;
        bh=nOPKVww7bzuKHViPxmqAo+KZYz+GyO21TmYZk/zuNNM=;
        b=qYcWmY5t0IVT78uX24E/gPeqWtQ0kU1ijD+jvtMFpjItDJQKfqruCImLR5tb0zuPJx
         9eOWlypzsChK6loSJnXy508vmUF5rEIgp1KRyhWwFUssiS0j4u3QQQ9mBx9JA6sLAMbP
         QE1k2lk9JMXvFLL6y4eMbQLNYmZR/ncZ/vUz4bgV+l6kjahJqaGRiRGn1l3M7LZHzNDr
         4I6E5Yz88O4Osx/R3JbWrb02B8lkCVw9c88DOsx8/WSbu0rREDgSdumhUflgLjZUEMPb
         j9THh8UVZCYQFp97bNvLKrGffd+MzkPO08Soec5OrGAe7Fk24KvzKkK9K7lw0mjmQvpH
         TbUA==
X-Gm-Message-State: AOJu0Yy4fEH4aQ0WrMwq8sUbmeuQP9HvVxFq3UA9WUOTuc+Erq+t+QaC
	k2SSyEnoxi1z2NTF6BtHio3D51ObSzCd6YyrNcyuFCxtPInejrAEpsNgzAYRe5o=
X-Google-Smtp-Source: AGHT+IFpLUCv/rnBIyP18spKrrYjzTOcMsiBBxznXs5pn/MgWBw2fqcsJ08xEH2q/Nwb54KDe0gpuQ==
X-Received: by 2002:a50:9f03:0:b0:559:e715:8424 with SMTP id b3-20020a509f03000000b00559e7158424mr456845edf.31.1706172436583;
        Thu, 25 Jan 2024 00:47:16 -0800 (PST)
Date: Thu, 25 Jan 2024 09:47:15 +0100
From: Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
To: Jan Beulich <jbeulich@suse.com>
Cc: Paul Durrant <paul@xen.org>, Andrew Cooper <andrew.cooper3@citrix.com>,
	Wei Liu <wl@xen.org>, xen-devel@lists.xenproject.org
Subject: Re: [PATCH v5 1/3] x86/iommu: remove regions not to be mapped
Message-ID: <ZbIgE8exXDVicN8D@macbook>
References: <20240124172953.29814-1-roger.pau@citrix.com>
 <20240124172953.29814-2-roger.pau@citrix.com>
 <ad178469-15c3-4ae5-8538-e927f1116a42@suse.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
In-Reply-To: <ad178469-15c3-4ae5-8538-e927f1116a42@suse.com>

On Thu, Jan 25, 2024 at 09:34:40AM +0100, Jan Beulich wrote:
> On 24.01.2024 18:29, Roger Pau Monne wrote:
> > --- a/xen/arch/x86/hvm/io.c
> > +++ b/xen/arch/x86/hvm/io.c
> > @@ -369,6 +369,22 @@ bool vpci_is_mmcfg_address(const struct domain *d, paddr_t addr)
> >      return vpci_mmcfg_find(d, addr);
> >  }
> >  
> > +int __hwdom_init vpci_subtract_mmcfg(const struct domain *d, struct rangeset *r)
> > +{
> > +    const struct hvm_mmcfg *mmcfg;
> > +
> > +    list_for_each_entry ( mmcfg, &d->arch.hvm.mmcfg_regions, next )
> > +    {
> > +        int rc = rangeset_remove_range(r, PFN_DOWN(mmcfg->addr),
> > +                                       PFN_DOWN(mmcfg->addr + mmcfg->size - 1));
> 
> Along the lines of this, ...
> 
> > --- a/xen/arch/x86/setup.c
> > +++ b/xen/arch/x86/setup.c
> > @@ -2138,6 +2138,54 @@ int __hwdom_init xen_in_range(unsigned long mfn)
> >      return 0;
> >  }
> >  
> > +int __hwdom_init remove_xen_ranges(struct rangeset *r)
> > +{
> > +    paddr_t start, end;
> > +    int rc;
> > +
> > +    /* S3 resume code (and other real mode trampoline code) */
> > +    rc = rangeset_remove_range(r, PFN_DOWN(bootsym_phys(trampoline_start)),
> > +                               PFN_DOWN(bootsym_phys(trampoline_end)) - 1);
> 
> ... did you perhaps mean
> 
>                                PFN_DOWN(bootsym_phys(trampoline_end) - 1));
> 
> here (and then similarly below, except there the difference is benign I
> think, for the labels being page-aligned)?

They are all page aligned, so I didn't care much,  but now that you
point it might be safer to do the subtraction from the address instead
of the frame number, just in case.

Thanks, Roger.


From xen-devel-bounces@lists.xenproject.org Thu Jan 25 09:05:39 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 25 Jan 2024 09:05:39 +0000
Received: from list by lists.xenproject.org with outflank-mailman.671401.1044721 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSvfw-0000zX-Up; Thu, 25 Jan 2024 09:05:32 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 671401.1044721; Thu, 25 Jan 2024 09:05:32 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSvfw-0000zQ-Rz; Thu, 25 Jan 2024 09:05:32 +0000
Received: by outflank-mailman (input) for mailman id 671401;
 Thu, 25 Jan 2024 09:05:30 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=etx6=JD=cloud.com=roger.pau@srs-se1.protection.inumbo.net>)
 id 1rSvfu-0000zK-Sa
 for xen-devel@lists.xenproject.org; Thu, 25 Jan 2024 09:05:30 +0000
Received: from mail-ej1-x62d.google.com (mail-ej1-x62d.google.com
 [2a00:1450:4864:20::62d])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id e19fc2c5-bb60-11ee-9b0f-b553b5be7939;
 Thu, 25 Jan 2024 10:05:27 +0100 (CET)
Received: by mail-ej1-x62d.google.com with SMTP id
 a640c23a62f3a-a2d7e2e7fe0so105470066b.1
 for <xen-devel@lists.xenproject.org>; Thu, 25 Jan 2024 01:05:27 -0800 (PST)
Received: from localhost ([213.195.118.74]) by smtp.gmail.com with ESMTPSA id
 p13-20020a17090653cd00b00a28badcf367sm800007ejo.54.2024.01.25.01.05.26
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 25 Jan 2024 01:05:26 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: e19fc2c5-bb60-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1706173527; x=1706778327; darn=lists.xenproject.org;
        h=in-reply-to:content-transfer-encoding:content-disposition
         :mime-version:references:message-id:subject:cc:to:from:date:from:to
         :cc:subject:date:message-id:reply-to;
        bh=1bYi9CWG3dnGVT8Jw+SqKTCptSp3YH1LRrk9mQn41R0=;
        b=p0fi9A+UIwQe++odfLPr67LZOfAxXv/6vmJTF6NnxHaGRzfXua2UE59FaDrMX3xrjr
         SnxeSVTCkanpLXl3yP2kANSNij4RvaLYw3//JdULB00JSpywna+8BSTcxWajo2wCGlJZ
         GNawYOUBlJzaizPO++D0tiUrQczkQBjwuh5n4=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706173527; x=1706778327;
        h=in-reply-to:content-transfer-encoding:content-disposition
         :mime-version:references:message-id:subject:cc:to:from:date
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=1bYi9CWG3dnGVT8Jw+SqKTCptSp3YH1LRrk9mQn41R0=;
        b=apIrNHS1Sc8iIIDTFfzjF58gFSW55Jzz1wtdNHWrbJ6ouwZOyo1RPMxzgqhMIaWIQj
         4ieWMUpJhFjOvgV1G3627dG0xmpDvjl7nCGzXpXvpMwwxlPWGGfSt9FYD+g9g5kH09JL
         8BqfCoL48CcSTIlc1SidxR9cd19flBduXIMCC5GTNnDT7Ufpt2TN1VF22IEXx8Sofcg5
         RqChPStyivwoHuypka8kqvUYbHmFrFd/fXu8Yj8JeY7m6vhV1d3dvvFMrYLtEKoDyaYD
         y63xj3PLgBBn1XJk46RnOaAeaNUKFJqR0b6PuX6Ptpkbc8Br60vHVNqJ5FcE1NTDcRzi
         JpAg==
X-Gm-Message-State: AOJu0YxoEHxYldEeEgnp7MexUVpGxu5u7o5xmC2O1rxzy8jv53DOu8WS
	yF9J+50tq422qR0m8sCiLNCYnNDd1PbNxeJ2tm7bMTa0E0iZdB9n72WmH09RG84=
X-Google-Smtp-Source: AGHT+IEfIxqW/sr4Em2gsTkyAUA3bBkyGB+k+P+/X7tWR9SIbatgAYr6J6/Qm598iyzr/pL1nbvzsQ==
X-Received: by 2002:a17:906:e281:b0:a31:2c01:576a with SMTP id gg1-20020a170906e28100b00a312c01576amr577278ejb.25.1706173526753;
        Thu, 25 Jan 2024 01:05:26 -0800 (PST)
Date: Thu, 25 Jan 2024 10:05:25 +0100
From: Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
To: Jan Beulich <jbeulich@suse.com>
Cc: Stewart Hildebrand <stewart.hildebrand@amd.com>,
	Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>, Wei Liu <wl@xen.org>,
	George Dunlap <george.dunlap@citrix.com>,
	Julien Grall <julien@xen.org>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Jun Nakajima <jun.nakajima@intel.com>,
	Kevin Tian <kevin.tian@intel.com>, Paul Durrant <paul@xen.org>,
	Volodymyr Babchuk <volodymyr_babchuk@epam.com>,
	xen-devel@lists.xenproject.org
Subject: Re: [PATCH v12.2 01/15] vpci: use per-domain PCI lock to protect
 vpci structure
Message-ID: <ZbIkVcYkcuT2iF8e@macbook>
References: <20240109215145.430207-1-stewart.hildebrand@amd.com>
 <20240109215145.430207-2-stewart.hildebrand@amd.com>
 <20240115194309.45683-1-stewart.hildebrand@amd.com>
 <715e40c9-1776-4677-9565-dac1565a2aa8@suse.com>
 <Za_WGzS14Eqt8yZF@macbook>
 <ae7a57f2-2433-4b75-ab45-c8be55d489c9@suse.com>
 <ZbDXXyucJhLJ4u9H@macbook>
 <a3233487-965b-49ae-bebe-e5476fcda29c@suse.com>
 <ZbFOE6kV7NXFrNjb@macbook>
 <fa7df700-06f1-4110-bc76-c59d59e5d887@suse.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <fa7df700-06f1-4110-bc76-c59d59e5d887@suse.com>

On Thu, Jan 25, 2024 at 08:43:05AM +0100, Jan Beulich wrote:
> On 24.01.2024 18:51, Roger Pau Monné wrote:
> > On Wed, Jan 24, 2024 at 12:34:10PM +0100, Jan Beulich wrote:
> >> On 24.01.2024 10:24, Roger Pau Monné wrote:
> >>> On Wed, Jan 24, 2024 at 09:48:35AM +0100, Jan Beulich wrote:
> >>>> On 23.01.2024 16:07, Roger Pau Monné wrote:
> >>>>> On Tue, Jan 23, 2024 at 03:32:12PM +0100, Jan Beulich wrote:
> >>>>>> On 15.01.2024 20:43, Stewart Hildebrand wrote:
> >>>>>>> @@ -2888,6 +2888,8 @@ int allocate_and_map_msi_pirq(struct domain *d, int index, int *pirq_p,
> >>>>>>>  {
> >>>>>>>      int irq, pirq, ret;
> >>>>>>>  
> >>>>>>> +    ASSERT(pcidevs_locked() || rw_is_locked(&d->pci_lock));
> >>>>>>
> >>>>>> If either lock is sufficient to hold here, ...
> >>>>>>
> >>>>>>> --- a/xen/arch/x86/physdev.c
> >>>>>>> +++ b/xen/arch/x86/physdev.c
> >>>>>>> @@ -123,7 +123,9 @@ int physdev_map_pirq(domid_t domid, int type, int *index, int *pirq_p,
> >>>>>>>  
> >>>>>>>      case MAP_PIRQ_TYPE_MSI:
> >>>>>>>      case MAP_PIRQ_TYPE_MULTI_MSI:
> >>>>>>> +        pcidevs_lock();
> >>>>>>>          ret = allocate_and_map_msi_pirq(d, *index, pirq_p, type, msi);
> >>>>>>> +        pcidevs_unlock();
> >>>>>>>          break;
> >>>>>>
> >>>>>
> >>>>> IIRC (Stewart can further comment) this is done holding the pcidevs
> >>>>> lock to keep the path unmodified, as there's no need to hold the
> >>>>> per-domain rwlock.
> >>>>
> >>>> Yet why would we prefer to acquire a global lock when a per-domain one
> >>>> suffices?
> >>>
> >>> I was hoping to introduce less changes, specially if they are not
> >>> strictly required, as it's less risk.  I'm always quite worry of
> >>> locking changes.
> >>
> >> In which case more description / code commenting is needed. The pattern
> >> of the assertions looks dangerous.
> > 
> > Is such dangerousness perception because you fear some of the pcidevs
> > lock usage might be there not just for preventing the pdev from going
> > away, but also to guarantee exclusive access to certain state?
> 
> Indeed. In my view the main purpose of locks is to guard state. Their
> use here to guard against devices here is imo rather an abuse; as
> mentioned before this should instead be achieved e.g via refcounting.
> And it's bad enough already that pcidevs_lock() alone has been abused
> this way, without proper marking (leaving us to guess in many places).
> It gets worse when a second lock can now also serve this same
> purpose.

The new lock is taken in read mode in most contexts, and hence can't
be used to indirectly gain exclusive access to domain related
structures in a safe way.

Not saying this makes it any better, but so far this is the best
solution we could come up with that didn't involve a full evaluation
and possible re-write of all usage of the pcidevs lock.

I would also prefer a solution that fully replaces the pcidevs lock
with something else, but for once I don't have a clear picture of how
that would look like because the analysis is a huge amount of work,
likely more than the implementation itself.

Hence the proposed compromise solution that should allow the vPCI work
to make progress.

Regards, Roger.


From xen-devel-bounces@lists.xenproject.org Thu Jan 25 09:10:22 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 25 Jan 2024 09:10:22 +0000
Received: from list by lists.xenproject.org with outflank-mailman.671408.1044731 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSvkb-0003Te-GU; Thu, 25 Jan 2024 09:10:21 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 671408.1044731; Thu, 25 Jan 2024 09:10:21 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSvkb-0003TX-Dr; Thu, 25 Jan 2024 09:10:21 +0000
Received: by outflank-mailman (input) for mailman id 671408;
 Thu, 25 Jan 2024 09:10:20 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=etx6=JD=cloud.com=roger.pau@srs-se1.protection.inumbo.net>)
 id 1rSvka-0003TR-U5
 for xen-devel@lists.xenproject.org; Thu, 25 Jan 2024 09:10:20 +0000
Received: from mail-wm1-x32a.google.com (mail-wm1-x32a.google.com
 [2a00:1450:4864:20::32a])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 8ff4d52c-bb61-11ee-98f5-6d05b1d4d9a1;
 Thu, 25 Jan 2024 10:10:19 +0100 (CET)
Received: by mail-wm1-x32a.google.com with SMTP id
 5b1f17b1804b1-40e72a567eeso77051995e9.0
 for <xen-devel@lists.xenproject.org>; Thu, 25 Jan 2024 01:10:20 -0800 (PST)
Received: from localhost ([213.195.118.74]) by smtp.gmail.com with ESMTPSA id
 t18-20020a05600c199200b0040ecea22794sm1708714wmq.45.2024.01.25.01.10.19
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 25 Jan 2024 01:10:19 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 8ff4d52c-bb61-11ee-98f5-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1706173819; x=1706778619; darn=lists.xenproject.org;
        h=in-reply-to:content-disposition:mime-version:references:message-id
         :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to;
        bh=13hw+jSl0gF3eZ6rlPYeh061glQKyoDVGbDjjwDq6vY=;
        b=bZIl0DKjVkdJ2V4CwZgb30krPBbJvFICRfd3Ahpd42qYHHf1T2Wmi7QTVafbsAgRI5
         0XtzHYQ/sWlcfi4xfqTefW+/B2l9ujxDQ2lywPfPzJ7xKhdgOBx8na9/mQeq29KTBOe5
         hud/z3sZBtsWPfC5E9o0p4TjRYOUoJ5wp1gTU=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706173819; x=1706778619;
        h=in-reply-to:content-disposition:mime-version:references:message-id
         :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to;
        bh=13hw+jSl0gF3eZ6rlPYeh061glQKyoDVGbDjjwDq6vY=;
        b=Eqq5tY6v4CqsYpS9Y0PRYJ6WQUjdCuB9k5SEPobHB+hE70Qv21mCJWkI6Yzo8vhD43
         eif5apNU0rx2z4+GhyXZe5TL3p9MfJUf9xzmagNUrbDZCoc/yS/nS9MPEhQv4STt0fqR
         agujtoqkRfsWjrQDupgpZXkwXo7CDXzimGc0EITko/WzzDj6SNG1HWh344WvOaD5r4o+
         eMuCqrm6otVzEFXUJZW1GUZbUuTj6x567xsqhzwE9kMqU0v4LTzpUDpgCxX940nSh7o2
         /yYn3yxUK2Rvwa4smipoZ9l5LcSgehPKW8YHGlMvXukQd8v40alkeN7RmRZfi8cg61Y0
         zyXA==
X-Gm-Message-State: AOJu0YxMkMzNeb8aOGP6wpkiBBDAqUwzXx7OoQG7Kk+uRx58em4lTvp2
	pZ2oQyYIo6w/8RsrKCxLeqyoDP/Yo1jP+uodbGFsQx4Y/Jf/C5c7PT+Pkf0No/I=
X-Google-Smtp-Source: AGHT+IHK8IV1xz+aLtEH/Ews7qXoRV7VAnsVSxr00M4NCEMFDAim6Ov5lUXhB2r0C8rIi1GNTtErkg==
X-Received: by 2002:a7b:cb16:0:b0:40e:54f1:5d3e with SMTP id u22-20020a7bcb16000000b0040e54f15d3emr173043wmj.199.1706173819612;
        Thu, 25 Jan 2024 01:10:19 -0800 (PST)
Date: Thu, 25 Jan 2024 10:10:18 +0100
From: Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
To: Jan Beulich <jbeulich@suse.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, Wei Liu <wl@xen.org>,
	"xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Subject: Re: [PATCH] x86/NMI: refine "watchdog stuck" log message
Message-ID: <ZbIleqqWHTY4vhqp@macbook>
References: <87108f1d-4b13-4c1e-9432-4f14d4f5c12d@suse.com>
 <add9b6b3-cc50-4165-8f63-cd4541a3ba23@citrix.com>
 <c8f3e7d4-8b7c-4835-b63b-dc784f27a936@suse.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
In-Reply-To: <c8f3e7d4-8b7c-4835-b63b-dc784f27a936@suse.com>

On Thu, Jan 25, 2024 at 09:05:13AM +0100, Jan Beulich wrote:
> On 24.01.2024 16:55, Andrew Cooper wrote:
> > On 24/01/2024 3:21 pm, Jan Beulich wrote:
> > but if you felt
> > turning this into using a scratch cpumask and %*pb then I think that
> > would be nicer still.
> 
> I expected you might say that, and indeed I considered it. But then
> I wanted to keep code churn limited. The way it's done it's imo an
> almost purely mechanical change. Much like with Roger's consideration
> of further refining the message text in the error case.

One suggestion I had in mind (which is not explicitly related to the
fix here) would be to taint the hypervisor when we hit such selftests
errors, as that would make it more obvious to go search the dmesg for
reported failures. I think it's still fairly easy to miss noticing the
watchdog selftest failed on some CPUs.

Regards, Roger.


From xen-devel-bounces@lists.xenproject.org Thu Jan 25 09:32:04 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 25 Jan 2024 09:32:04 +0000
Received: from list by lists.xenproject.org with outflank-mailman.671417.1044751 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSw5Z-0008AB-KL; Thu, 25 Jan 2024 09:32:01 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 671417.1044751; Thu, 25 Jan 2024 09:32:01 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSw5Z-0008A4-GQ; Thu, 25 Jan 2024 09:32:01 +0000
Received: by outflank-mailman (input) for mailman id 671417;
 Thu, 25 Jan 2024 09:31:59 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=etx6=JD=cloud.com=roger.pau@srs-se1.protection.inumbo.net>)
 id 1rSw5X-0007vY-Jk
 for xen-devel@lists.xenproject.org; Thu, 25 Jan 2024 09:31:59 +0000
Received: from mail-ed1-x529.google.com (mail-ed1-x529.google.com
 [2a00:1450:4864:20::529])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 9526b459-bb64-11ee-98f5-6d05b1d4d9a1;
 Thu, 25 Jan 2024 10:31:58 +0100 (CET)
Received: by mail-ed1-x529.google.com with SMTP id
 4fb4d7f45d1cf-55a8fd60af0so5938968a12.1
 for <xen-devel@lists.xenproject.org>; Thu, 25 Jan 2024 01:31:56 -0800 (PST)
Received: from localhost ([213.195.118.74]) by smtp.gmail.com with ESMTPSA id
 wh22-20020a170906fd1600b00a30fc529f25sm821405ejb.199.2024.01.25.01.31.55
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 25 Jan 2024 01:31:55 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 9526b459-bb64-11ee-98f5-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1706175116; x=1706779916; darn=lists.xenproject.org;
        h=content-transfer-encoding:mime-version:references:in-reply-to
         :message-id:date:subject:cc:to:from:from:to:cc:subject:date
         :message-id:reply-to;
        bh=7vP6sfxLmfNUVHHugUyr46Hq2QM66JBX8dinWtvdjh4=;
        b=ZMAIwqKeIyW9Nj5Sdj9lnpf5mtz2x9YgxecdmziGc1NYmp1y50LwN/rRn0HcNiKMWy
         OlevOx9KrO65cU1wU5TQHEpDrrVGEP7p4/aRGJ4bc6MSDsUhLnTaYEuinYSpBunzYnWo
         NPRNIj6YQ7f7mLSYWT/VkNH4cM/VyLfpSUAn8=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706175116; x=1706779916;
        h=content-transfer-encoding:mime-version:references:in-reply-to
         :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to;
        bh=7vP6sfxLmfNUVHHugUyr46Hq2QM66JBX8dinWtvdjh4=;
        b=rFFfaJ8EB23TTimwBv7NkA8p/P5FzJBmCTlkYs+WMartDC9QMu3NtG5yQjOM2YbaFK
         H6quHuLwd0EqHx80r30c0+HJbpPdECYdS6UP+P4/4/nxww76sQWbHJQs+X+S+EnRmuDu
         uTjWMne6xJS2QT35363acq1c0n0LXnryEO/izmjE1d9LSJorBrMUiV8al+7jQwr2QXwM
         I8cNlUM853Mux4SXFMj9culVs2Lcvn87yqY3yRXMdiSm8giKGVVAFYADd67IoXz2GsRM
         Ofbv8AVBR6lcSNsrbtbdejSTzWzQbqp5eUbpaJZOIlPNfEJqGE7YxcjoQGtWnI+dqkYI
         t0GQ==
X-Gm-Message-State: AOJu0YzBWL4SA8CcNANYgacb8hoGO0PSqTLWa2O44Zk6w4EhP+Et3t5i
	to/NyoPLA9Jky4NdGMY0XQCIn1R4EGmSWZSPH2P1RBtvc5pj8K/ik04pS+TbIcs684FF28f3frO
	M
X-Google-Smtp-Source: AGHT+IFkcCmiMKZzVykMGtuqpJz06SojcWRYZe1/Dui3aHOSq/Z+oZXED+GXSKOdmrQNcyHlHV0oKg==
X-Received: by 2002:a17:907:a708:b0:a31:8c1e:5ced with SMTP id vw8-20020a170907a70800b00a318c1e5cedmr121647ejc.76.1706175115746;
        Thu, 25 Jan 2024 01:31:55 -0800 (PST)
From: Roger Pau Monne <roger.pau@citrix.com>
To: xen-devel@lists.xenproject.org
Cc: Roger Pau Monne <roger.pau@citrix.com>,
	Jan Beulich <jbeulich@suse.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Wei Liu <wl@xen.org>
Subject: [PATCH v4 1/2] x86/hvm: make X86_EMU_USE_PIRQ optional
Date: Thu, 25 Jan 2024 10:30:40 +0100
Message-ID: <20240125093041.33087-2-roger.pau@citrix.com>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20240125093041.33087-1-roger.pau@citrix.com>
References: <20240125093041.33087-1-roger.pau@citrix.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Allow selecting X86_EMU_USE_PIRQ for HVM guests, so it's no longer mandated to
be always on.

There's no restriction in Xen that forces such feature to be always on for HVM
guests, as for example PVH guests don't support it, as such allow toolstack to
select whether to enabled it on a per-domain basis.

Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
---
Changes since v3:
 - Split hypervisor side from previous patch.
---
 xen/arch/x86/domain.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/xen/arch/x86/domain.c b/xen/arch/x86/domain.c
index 8a31d18f6967..bda853e3c92b 100644
--- a/xen/arch/x86/domain.c
+++ b/xen/arch/x86/domain.c
@@ -725,7 +725,9 @@ static bool emulation_flags_ok(const struct domain *d, uint32_t emflags)
              emflags != (X86_EMU_VPCI | X86_EMU_LAPIC | X86_EMU_IOAPIC) )
             return false;
         if ( !is_hardware_domain(d) &&
-             emflags != (X86_EMU_ALL & ~X86_EMU_VPCI) &&
+             /* HVM PIRQ feature is user-selectable. */
+             (emflags & ~X86_EMU_USE_PIRQ) !=
+             (X86_EMU_ALL & ~(X86_EMU_VPCI | X86_EMU_USE_PIRQ)) &&
              emflags != X86_EMU_LAPIC )
             return false;
     }
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Thu Jan 25 09:32:04 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 25 Jan 2024 09:32:04 +0000
Received: from list by lists.xenproject.org with outflank-mailman.671416.1044740 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSw5X-0007vV-91; Thu, 25 Jan 2024 09:31:59 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 671416.1044740; Thu, 25 Jan 2024 09:31:59 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSw5X-0007vO-6S; Thu, 25 Jan 2024 09:31:59 +0000
Received: by outflank-mailman (input) for mailman id 671416;
 Thu, 25 Jan 2024 09:31:58 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=etx6=JD=cloud.com=roger.pau@srs-se1.protection.inumbo.net>)
 id 1rSw5W-0007vI-0d
 for xen-devel@lists.xenproject.org; Thu, 25 Jan 2024 09:31:58 +0000
Received: from mail-ed1-x533.google.com (mail-ed1-x533.google.com
 [2a00:1450:4864:20::533])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 9402a485-bb64-11ee-9b0f-b553b5be7939;
 Thu, 25 Jan 2024 10:31:55 +0100 (CET)
Received: by mail-ed1-x533.google.com with SMTP id
 4fb4d7f45d1cf-55c1ac8d2f2so5609071a12.2
 for <xen-devel@lists.xenproject.org>; Thu, 25 Jan 2024 01:31:55 -0800 (PST)
Received: from localhost ([213.195.118.74]) by smtp.gmail.com with ESMTPSA id
 t16-20020a1709064f1000b00a3100210020sm819686eju.79.2024.01.25.01.31.54
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 25 Jan 2024 01:31:54 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 9402a485-bb64-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1706175114; x=1706779914; darn=lists.xenproject.org;
        h=content-transfer-encoding:mime-version:message-id:date:subject:cc
         :to:from:from:to:cc:subject:date:message-id:reply-to;
        bh=y0SPcwmga2cwvkrapbO/X2uehAdSE4bmD8VXuP8VvNc=;
        b=CXVRgrqncyWBtKgsh7UVzPX/mLCViOE1IW4oJ40qOlw4JDOk2VYwIrfEUB39Yfj6jK
         /xSMXQLO1NYmaOBMTOqW+8N6wga5pJ3vBb1ltYql1DlCxY3Prneoz2uUjI/vsdIhbW4L
         dHQFhgIMElODge2eb2+uc9r8P2XsuaRimFlBY=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706175114; x=1706779914;
        h=content-transfer-encoding:mime-version:message-id:date:subject:cc
         :to:from:x-gm-message-state:from:to:cc:subject:date:message-id
         :reply-to;
        bh=y0SPcwmga2cwvkrapbO/X2uehAdSE4bmD8VXuP8VvNc=;
        b=ZayUOH95Wtpuqg8oZIc3H8SVCxS66Naziedk+4llY3cSNFctmZkMC1lMZLJ2QqREAe
         /szuij/L6kN0BGPDyby2EhRGvdtU9eB4eodA8TEFiC86TBH2UWHTgzbOeyPlMuzsyCIL
         N5V2vOVKGX+tem9MIhnX2LJOb0sihzYd2qplgbg8CKwiJUVchXo+6BZIw4tGxWHycvzC
         INWQVzIkCljvdhjvtiYIuCcdumXJTz0vmZZSsG1XM/FLypBPLp6brOW8iZslv75d3B5p
         w0i3prY1dGWJmLvn5HFXVA+pZwOer0eOoUrPcOCkcPkgYead36LqWeHZo9VW/fJydLcp
         hfRA==
X-Gm-Message-State: AOJu0YxuhfW16mwXoysvuW+6b61Y0JiaUC+R02cG1RBOGZih+Tao1Z5O
	8Mf+FnzW5WLcEYO+nycgurbKFsvO4cXmL19kQ5DNLWbJP7c1CuKlLk4AHCrItzjCBVd12w4RLia
	4
X-Google-Smtp-Source: AGHT+IHuwt+nCN0dy3pPyX3tQguA7dbd+D6OJZEZTXhNpcRpxqU0ggL0qYWw4SQjdIlAWApYCRW1/A==
X-Received: by 2002:a17:907:a80c:b0:a31:19d7:b57d with SMTP id vo12-20020a170907a80c00b00a3119d7b57dmr449493ejc.105.1706175114471;
        Thu, 25 Jan 2024 01:31:54 -0800 (PST)
From: Roger Pau Monne <roger.pau@citrix.com>
To: xen-devel@lists.xenproject.org
Cc: Roger Pau Monne <roger.pau@citrix.com>,
	Jan Beulich <jbeulich@suse.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Wei Liu <wl@xen.org>,
	Oleksii Kurochko <oleksii.kurochko@gmail.com>,
	Community Manager <community.manager@xenproject.org>,
	Anthony PERARD <anthony.perard@citrix.com>,
	Juergen Gross <jgross@suse.com>,
	=?UTF-8?q?Marek=20Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
Subject: [PATCH v4 0/2] x86/hvm: disable exposing HVM pirqs by default
Date: Thu, 25 Jan 2024 10:30:39 +0100
Message-ID: <20240125093041.33087-1-roger.pau@citrix.com>
X-Mailer: git-send-email 2.43.0
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Hello,

The HVM pirq feature has been found to be buggy on some scenarios, and
given it's an optional feature, and fully undocumented, opt to disable
it by default for the time being.  Note that an xl.cfg option is
provided to allow users to enable it on a per-domain basis.

Domain migrated from older versions also get the feature enabled by
default, in order to keep compatibility.

Thanks, Roger.

Roger Pau Monne (2):
  x86/hvm: make X86_EMU_USE_PIRQ optional
  tools: don't expose XENFEAT_hvm_pirqs by default

 CHANGELOG.md                      |  2 ++
 docs/man/xl.cfg.5.pod.in          |  7 +++++++
 tools/include/libxl.h             |  7 +++++++
 tools/libs/light/libxl_create.c   |  7 +++++--
 tools/libs/light/libxl_types.idl  |  1 +
 tools/libs/light/libxl_x86.c      | 12 +++++++++---
 tools/python/xen/lowlevel/xc/xc.c |  4 +++-
 tools/xl/xl_parse.c               |  1 +
 xen/arch/x86/domain.c             |  4 +++-
 9 files changed, 38 insertions(+), 7 deletions(-)

-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Thu Jan 25 09:32:04 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 25 Jan 2024 09:32:04 +0000
Received: from list by lists.xenproject.org with outflank-mailman.671418.1044756 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSw5Z-0008Ds-VN; Thu, 25 Jan 2024 09:32:01 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 671418.1044756; Thu, 25 Jan 2024 09:32:01 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSw5Z-0008Ct-PA; Thu, 25 Jan 2024 09:32:01 +0000
Received: by outflank-mailman (input) for mailman id 671418;
 Thu, 25 Jan 2024 09:32:00 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=etx6=JD=cloud.com=roger.pau@srs-se1.protection.inumbo.net>)
 id 1rSw5Y-0007vY-8X
 for xen-devel@lists.xenproject.org; Thu, 25 Jan 2024 09:32:00 +0000
Received: from mail-ej1-x629.google.com (mail-ej1-x629.google.com
 [2a00:1450:4864:20::629])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 95de57b1-bb64-11ee-98f5-6d05b1d4d9a1;
 Thu, 25 Jan 2024 10:31:58 +0100 (CET)
Received: by mail-ej1-x629.google.com with SMTP id
 a640c23a62f3a-a2f79e79f0cso663219566b.2
 for <xen-devel@lists.xenproject.org>; Thu, 25 Jan 2024 01:31:58 -0800 (PST)
Received: from localhost ([213.195.118.74]) by smtp.gmail.com with ESMTPSA id
 k14-20020a1709065fce00b00a28aa4871c7sm810653ejv.205.2024.01.25.01.31.56
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 25 Jan 2024 01:31:56 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 95de57b1-bb64-11ee-98f5-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1706175117; x=1706779917; darn=lists.xenproject.org;
        h=content-transfer-encoding:mime-version:references:in-reply-to
         :message-id:date:subject:cc:to:from:from:to:cc:subject:date
         :message-id:reply-to;
        bh=YpZTccjC01lQ22ZOUMrUv8uxGkg2XLJ2380ya8EGEHU=;
        b=lGfMDu1/EcZx7MBc0RXsWK1HclEXiG9tqLPkSU2SUoRIq3/oOrhfivSdwISiYEHiE2
         clzpkpX76sWBvESfCSXRwohzkMxyg3fcx7Gip7NbYZ6VPsf4+Vsacf5FftD8n9/rLs5r
         cwarAOmPTz4hB6fTXCXqNHmMmX461lhT1cRZI=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706175117; x=1706779917;
        h=content-transfer-encoding:mime-version:references:in-reply-to
         :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to;
        bh=YpZTccjC01lQ22ZOUMrUv8uxGkg2XLJ2380ya8EGEHU=;
        b=c5Ephy5+DNaVdJrWwlDi0pz+ykqeY3HEIPhivoEG2iiXiax0QgdVrjfNxPzrxuB3qY
         9+ekWJusNRt4VnZO91grP+OTXaqX4d1cM2EgtiRVAQgj7Lpd6H5z0nzHbcRRKEYy69Qv
         s+/LN+tfcvmtZlib9c6EES8RriYN64uDp3yx7FvNL8Czuxpx60cTUlS2gmfAIDMpaeMk
         c/pIDmweFgh5ZogdDS4SycSWv/PrAWW/Z9qeAkgKeKMVsJ/WGMJcltffukPJy80s9srj
         aIvuUCPvwQ+H5a+zRS3i5o8OkZ6ohap4Zji3BwQ6I3GTA4EmCGRsqg3zF4o1daF91fiP
         xHCA==
X-Gm-Message-State: AOJu0Yz8N4cLQhmm4MTi2OKk0sejR+wBLB5FjNXRlrURH9dGXO40BLEb
	DXVxvLIYPtG/Q7nxp9QfYUsihYa0FZM4OxPR9TSRKCOhfn+F/Eo0Nk7qDrcyamsJ/BlgYJl2dUG
	B
X-Google-Smtp-Source: AGHT+IHBsGM9NK49qjju4cShorcblJDM+dhzIM1aoPqU0XJdQoT+zmL2yyPh64GNw+QwNMblNor7hA==
X-Received: by 2002:a17:907:93c3:b0:a31:6dd6:5646 with SMTP id cp3-20020a17090793c300b00a316dd65646mr352105ejc.87.1706175116991;
        Thu, 25 Jan 2024 01:31:56 -0800 (PST)
From: Roger Pau Monne <roger.pau@citrix.com>
To: xen-devel@lists.xenproject.org
Cc: Roger Pau Monne <roger.pau@citrix.com>,
	Oleksii Kurochko <oleksii.kurochko@gmail.com>,
	Community Manager <community.manager@xenproject.org>,
	Wei Liu <wl@xen.org>,
	Anthony PERARD <anthony.perard@citrix.com>,
	Juergen Gross <jgross@suse.com>,
	=?UTF-8?q?Marek=20Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
Subject: [PATCH v4 2/2] tools: don't expose XENFEAT_hvm_pirqs by default
Date: Thu, 25 Jan 2024 10:30:41 +0100
Message-ID: <20240125093041.33087-3-roger.pau@citrix.com>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20240125093041.33087-1-roger.pau@citrix.com>
References: <20240125093041.33087-1-roger.pau@citrix.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

The HVM pirq feature allows routing interrupts from both physical and emulated
devices over event channels, this was done a performance improvement.  However
its usage is fully undocumented, and the only reference implementation is in
Linux.  It defeats the purpose of local APIC hardware virtualization, because
when using it interrupts avoid the usage of the local APIC altogether.

It has also been reported to not work properly with certain devices, at least
when using some AMD GPUs Linux attempts to route interrupts over event
channels, but Xen doesn't correctly detect such routing, which leads to the
hypervisor complaining with:

(XEN) d15v0: Unsupported MSI delivery mode 7 for Dom15

When MSIs are attempted to be routed over event channels the entry delivery
mode is set to ExtINT, but Xen doesn't detect such routing and attempts to
inject the interrupt following the native MSI path, and the ExtINT delivery
mode is not supported.

Disable HVM PIRQs by default and provide a per-domain option in xl.cfg to
enable such feature.  Also for backwards compatibility keep the feature enabled
for any resumed domains that don't have an explicit selection.

Note that the only user of the feature (Linux) is also able to handle native
interrupts fine, as the feature was already not used if Xen reported local APIC
hardware virtualization active.

Link: https://github.com/QubesOS/qubes-issues/issues/7971
Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
Reviewed-by: Anthony PERARD <anthony.perard@citrix.com>
---
Changes since v2:
 - Add changelog entry.

Changes since v1:
 - Fix libxl for PV guests.
---
 CHANGELOG.md                      |  2 ++
 docs/man/xl.cfg.5.pod.in          |  7 +++++++
 tools/include/libxl.h             |  7 +++++++
 tools/libs/light/libxl_create.c   |  7 +++++--
 tools/libs/light/libxl_types.idl  |  1 +
 tools/libs/light/libxl_x86.c      | 12 +++++++++---
 tools/python/xen/lowlevel/xc/xc.c |  4 +++-
 tools/xl/xl_parse.c               |  1 +
 8 files changed, 35 insertions(+), 6 deletions(-)

diff --git a/CHANGELOG.md b/CHANGELOG.md
index 723d06425431..ddb3ab8db4e7 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -9,6 +9,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/)
 ### Changed
  - Changed flexible array definitions in public I/O interface headers to not
    use "1" as the number of array elements.
+ - On x86:
+   - HVM PIRQs are disabled by default.
 
 ### Added
  - On x86:
diff --git a/docs/man/xl.cfg.5.pod.in b/docs/man/xl.cfg.5.pod.in
index 2e234b450efb..ea8d41727d8e 100644
--- a/docs/man/xl.cfg.5.pod.in
+++ b/docs/man/xl.cfg.5.pod.in
@@ -2460,6 +2460,13 @@ The viridian option can be specified as a boolean. A value of true (1)
 is equivalent to the list [ "defaults" ], and a value of false (0) is
 equivalent to an empty list.
 
+=item B<hvm_pirq=BOOLEAN>
+
+Select whether the guest is allowed to route interrupts from devices (either
+emulated or passed through) over event channels.
+
+This option is disabled by default.
+
 =back
 
 =head3 Emulated VGA Graphics Device
diff --git a/tools/include/libxl.h b/tools/include/libxl.h
index 907aa0a3303a..f1652b1664f0 100644
--- a/tools/include/libxl.h
+++ b/tools/include/libxl.h
@@ -608,6 +608,13 @@
  * executable in order to not run it as the same user as libxl.
  */
 
+/*
+ * LIBXL_HAVE_HVM_PIRQ indicates the presence of the u.hvm.pirq filed in
+ * libxl_domain_build_info that signals whether an HVM guest has accesses to
+ * the XENFEAT_hvm_pirqs feature.
+ */
+#define LIBXL_HAVE_HVM_PIRQ 1
+
 /*
  * libxl memory management
  *
diff --git a/tools/libs/light/libxl_create.c b/tools/libs/light/libxl_create.c
index ce1d43110336..0008fac607e3 100644
--- a/tools/libs/light/libxl_create.c
+++ b/tools/libs/light/libxl_create.c
@@ -376,6 +376,7 @@ int libxl__domain_build_info_setdefault(libxl__gc *gc,
         libxl_defbool_setdefault(&b_info->u.hvm.usb,                false);
         libxl_defbool_setdefault(&b_info->u.hvm.vkb_device,         true);
         libxl_defbool_setdefault(&b_info->u.hvm.xen_platform_pci,   true);
+        libxl_defbool_setdefault(&b_info->u.hvm.pirq,               false);
 
         libxl_defbool_setdefault(&b_info->u.hvm.spice.enable, false);
         if (!libxl_defbool_val(b_info->u.hvm.spice.enable) &&
@@ -2375,10 +2376,12 @@ int libxl_domain_create_restore(libxl_ctx *ctx, libxl_domain_config *d_config,
 
     /*
      * When restoring (either from a save file or for a migration domain) set
-     * the MSR relaxed mode for compatibility with older Xen versions if the
-     * option is not set as part of the original configuration.
+     * the MSR relaxed mode and HVM PIRQs for compatibility with older Xen
+     * versions if the options are not set as part of the original
+     * configuration.
      */
     libxl_defbool_setdefault(&d_config->b_info.arch_x86.msr_relaxed, true);
+    libxl_defbool_setdefault(&d_config->b_info.u.hvm.pirq, true);
 
     return do_domain_create(ctx, d_config, domid, restore_fd, send_back_fd,
                             params, ao_how, aop_console_how);
diff --git a/tools/libs/light/libxl_types.idl b/tools/libs/light/libxl_types.idl
index 7d8bd5d21667..899ad3096926 100644
--- a/tools/libs/light/libxl_types.idl
+++ b/tools/libs/light/libxl_types.idl
@@ -692,6 +692,7 @@ libxl_domain_build_info = Struct("domain_build_info",[
                                        ("rdm", libxl_rdm_reserve),
                                        ("rdm_mem_boundary_memkb", MemKB),
                                        ("mca_caps",         uint64),
+                                       ("pirq",             libxl_defbool),
                                        ])),
                  ("pv", Struct(None, [("kernel", string, {'deprecated_by': 'kernel'}),
                                       ("slack_memkb", MemKB),
diff --git a/tools/libs/light/libxl_x86.c b/tools/libs/light/libxl_x86.c
index d16573e72cd4..a50ec37eb3eb 100644
--- a/tools/libs/light/libxl_x86.c
+++ b/tools/libs/light/libxl_x86.c
@@ -9,6 +9,8 @@ int libxl__arch_domain_prepare_config(libxl__gc *gc,
     switch(d_config->c_info.type) {
     case LIBXL_DOMAIN_TYPE_HVM:
         config->arch.emulation_flags = (XEN_X86_EMU_ALL & ~XEN_X86_EMU_VPCI);
+        if (!libxl_defbool_val(d_config->b_info.u.hvm.pirq))
+            config->arch.emulation_flags &= ~XEN_X86_EMU_USE_PIRQ;
         break;
     case LIBXL_DOMAIN_TYPE_PVH:
         config->arch.emulation_flags = XEN_X86_EMU_LAPIC;
@@ -864,15 +866,19 @@ void libxl__arch_update_domain_config(libxl__gc *gc,
                                       const libxl_domain_config *src)
 {
     /*
-     * Force MSR relaxed to be set (either to true or false) so it's part of
-     * the domain configuration when saving or performing a live-migration.
+     * Force MSR relaxed and HVM pirq to be set (either to true or false) so
+     * it's part of the domain configuration when saving or performing a
+     * live-migration.
      *
-     * Doing so allows the recovery side to figure out whether the flag should
+     * Doing so allows the recovery side to figure out whether the flags should
      * be set to true in order to keep backwards compatibility with already
      * started domains.
      */
     libxl_defbool_setdefault(&dst->b_info.arch_x86.msr_relaxed,
                     libxl_defbool_val(src->b_info.arch_x86.msr_relaxed));
+    if (src->c_info.type == LIBXL_DOMAIN_TYPE_HVM )
+        libxl_defbool_setdefault(&dst->b_info.u.hvm.pirq,
+                                 libxl_defbool_val(src->b_info.u.hvm.pirq));
 }
 
 /*
diff --git a/tools/python/xen/lowlevel/xc/xc.c b/tools/python/xen/lowlevel/xc/xc.c
index d3ea350e07b9..9feb12ae2b16 100644
--- a/tools/python/xen/lowlevel/xc/xc.c
+++ b/tools/python/xen/lowlevel/xc/xc.c
@@ -159,7 +159,9 @@ static PyObject *pyxc_domain_create(XcObject *self,
 
 #if defined (__i386) || defined(__x86_64__)
     if ( config.flags & XEN_DOMCTL_CDF_hvm )
-        config.arch.emulation_flags = (XEN_X86_EMU_ALL & ~XEN_X86_EMU_VPCI);
+        config.arch.emulation_flags = XEN_X86_EMU_ALL &
+                                      ~(XEN_X86_EMU_VPCI |
+                                        XEN_X86_EMU_USE_PIRQ);
 #elif defined (__arm__) || defined(__aarch64__)
     config.arch.gic_version = XEN_DOMCTL_CONFIG_GIC_NATIVE;
 #else
diff --git a/tools/xl/xl_parse.c b/tools/xl/xl_parse.c
index ed983200c3f8..9b358f11b88e 100644
--- a/tools/xl/xl_parse.c
+++ b/tools/xl/xl_parse.c
@@ -1801,6 +1801,7 @@ void parse_config_data(const char *config_source,
         xlu_cfg_get_defbool(config, "hpet", &b_info->u.hvm.hpet, 0);
         xlu_cfg_get_defbool(config, "vpt_align", &b_info->u.hvm.vpt_align, 0);
         xlu_cfg_get_defbool(config, "apic", &b_info->apic, 0);
+        xlu_cfg_get_defbool(config, "hvm_pirq", &b_info->u.hvm.pirq, 0);
 
         switch (xlu_cfg_get_list(config, "viridian",
                                  &viridian, &num_viridian, 1))
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Thu Jan 25 10:32:20 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 25 Jan 2024 10:32:20 +0000
Received: from list by lists.xenproject.org with outflank-mailman.671436.1044770 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSx1k-0003uJ-70; Thu, 25 Jan 2024 10:32:08 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 671436.1044770; Thu, 25 Jan 2024 10:32:08 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSx1k-0003uC-4A; Thu, 25 Jan 2024 10:32:08 +0000
Received: by outflank-mailman (input) for mailman id 671436;
 Thu, 25 Jan 2024 10:32:06 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>) id 1rSx1i-0003u6-Og
 for xen-devel@lists.xenproject.org; Thu, 25 Jan 2024 10:32:06 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rSx1X-0000fk-Sn; Thu, 25 Jan 2024 10:31:55 +0000
Received: from gw1.octic.net ([88.97.20.152] helo=[10.0.1.240])
 by xenbits.xenproject.org with esmtpsa
 (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rSx1X-0004FK-HO; Thu, 25 Jan 2024 10:31:55 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
	s=20200302mail; h=Content-Transfer-Encoding:Content-Type:In-Reply-To:From:
	References:Cc:To:Subject:MIME-Version:Date:Message-ID;
	bh=H89KEc9r3dsEnqZYNLYQEqrLkSMslQ+40ffmODQUhtI=; b=jhKc3RdGtS2BnF1JE0veTxMBys
	vWjNVa8oGDhawk6AUz9csJVqWU60iMCR6jcdnmEuhQT9aSU5vElZvmqdNw8mkVDj5eFw3frsF9JUG
	FkzVZUZkJQNnrN3AnTRnwldtymxDO6StqmkT8HuD2OiLCLWLnIWfy19QwM3xscUS7E3U=;
Message-ID: <2523d40b-02d4-4b58-a734-bb9ac8a4e691@xen.org>
Date: Thu, 25 Jan 2024 10:31:53 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: Xen 4.18rc/ARM64 on Raspberry Pi 4B: Traffic in DomU crashing
 Dom0 when using VLANs
Content-Language: en-GB
To: Bertrand Marquis <Bertrand.Marquis@arm.com>,
 Andrew Cooper <andrew.cooper3@citrix.com>
Cc: George Dunlap <george.dunlap@cloud.com>,
 Elliott Mitchell <ehem+xen@m5p.com>, Paul Leiber <paul@onlineschubla.de>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>,
 Dario Faggioli <dfaggioli@suse.com>, Jan Beulich <jbeulich@suse.com>,
 Stefano Stabellini <sstabellini@kernel.org>
References: <838ff75f-1352-4d3c-9bc1-c7a57c828231@onlineschubla.de>
 <4cddfd89-f195-4a50-a14d-b86121414e56@onlineschubla.de>
 <f8f39239-ea95-4fc7-9abe-6ca005eb02d2@onlineschubla.de>
 <ZarcWQ6Ugwowy050@mattapan.m5p.com>
 <CA+zSX=Y=BsVEp3o6jRprn5sntWVA0Z6wNXUxtffDN+=fPv_Fzg@mail.gmail.com>
 <D2496DDC-78FA-4CC1-B7FC-EB62E506BC4F@arm.com>
 <211c5cbb-2269-48b6-91b5-3a1a8127ce48@citrix.com>
 <5DA12CD1-9F65-43EE-BA11-0B4E45E3E44E@arm.com>
From: Julien Grall <julien@xen.org>
In-Reply-To: <5DA12CD1-9F65-43EE-BA11-0B4E45E3E44E@arm.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

Hi Bertrand,

On 25/01/2024 08:14, Bertrand Marquis wrote:
> Hi Andrew,
> 
>> On 25 Jan 2024, at 00:27, Andrew Cooper <andrew.cooper3@citrix.com> wrote:
>>
>> On 23/01/2024 8:29 am, Bertrand Marquis wrote:
>>>> Thanks for raising the visibility of this.  I'm not familiar with ARM,
>>>> but if I were investigating this I'd try to figure out what the
>>>> "unhandled" error messages are.  "gnttab_mark_dirty not implemented
>>>> yet" looks pretty sus too, and also sounds like it might be something
>>>> ARM-specific.
>>> I tried to explain those and they are not the reason of the problem.
>>
>> The "gnttab_mark_dirty not implemented yet" printk() should be deleted.
>>
>> It's /* TODO - logdirty support */ in a form that is actively unhelpful
>> to people using a debug hypervisor to debug other things.
> 
> Could make sense.
> It is true that this one appears in all debug log but it might not be
> very useful in fact.
> 
> @julien and Stefano: what would you say ?
I would be fine to replace the printk with a comment. I am happy to 
review it if someone wants to send a patch.

Cheers,

-- 
Julien Grall


From xen-devel-bounces@lists.xenproject.org Thu Jan 25 10:49:43 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 25 Jan 2024 10:49:43 +0000
Received: from list by lists.xenproject.org with outflank-mailman.671441.1044781 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSxIe-0006gR-Kv; Thu, 25 Jan 2024 10:49:36 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 671441.1044781; Thu, 25 Jan 2024 10:49:36 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSxIe-0006gK-HI; Thu, 25 Jan 2024 10:49:36 +0000
Received: by outflank-mailman (input) for mailman id 671441;
 Thu, 25 Jan 2024 10:49:35 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=+DBC=JD=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1rSxId-0006gE-8o
 for xen-devel@lists.xenproject.org; Thu, 25 Jan 2024 10:49:35 +0000
Received: from mail-wm1-x32a.google.com (mail-wm1-x32a.google.com
 [2a00:1450:4864:20::32a])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 6c01f52b-bb6f-11ee-9b0f-b553b5be7939;
 Thu, 25 Jan 2024 11:49:32 +0100 (CET)
Received: by mail-wm1-x32a.google.com with SMTP id
 5b1f17b1804b1-40e913e3f03so82011005e9.3
 for <xen-devel@lists.xenproject.org>; Thu, 25 Jan 2024 02:49:32 -0800 (PST)
Received: from [10.80.67.30] (default-46-102-197-194.interdsl.co.uk.
 [46.102.197.194]) by smtp.gmail.com with ESMTPSA id
 hg26-20020a05600c539a00b0040ec7f249dfsm2126451wmb.14.2024.01.25.02.49.31
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 25 Jan 2024 02:49:31 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 6c01f52b-bb6f-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1706179772; x=1706784572; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=7lg88gPO7dJFJ8+7WMdpL36S0ZBNTJ04Xo6kDx3oGsI=;
        b=EE/8B2MZjGVUKtDsIt8Cw/Ct40pRp3+DFb4pKL4zWJawFu6RSVS2e9rY/ChOSk+AtY
         ZFvVlbirQvx7GJO7eGXf5d8VCAxzCRmUrw3+IXKCIeOtjdT+q5begy85R9ip1LIXgC20
         4gzTsdpS6qzKmzfjsv3PKhZDr6cchQ3BPVGFw=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706179772; x=1706784572;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=7lg88gPO7dJFJ8+7WMdpL36S0ZBNTJ04Xo6kDx3oGsI=;
        b=aT2d2pIH/SEhT4wPCQxMx+AcKA1/Ka4NLEmpDN50IoHFwzptff71PTuhegqQt4X3mI
         jLxdx/18BDfc9VhIR24r7CQM2YGigYevwa61qEqnRCtOn9BZ+iHhnjBgEiZVgAl+aWDU
         9jDxDjrYM/KVnD4Hd9wlyfTfMv0Po9WDozv95xph3AiwlyRBNS33mswNbDajFM8gIwZj
         Tpa1PMpQyygxDFHdOf3DghvhuX5hlD0zwJveCpm0EqUCMchW7Sm5dM0pUAXKzx7hx32w
         /J36VazrdjHFIR/sS+S9GsPnCLE8v/UVjK07QhZje7sCAnq+nF94aMAYL/cd1OUGE5WG
         zlUg==
X-Gm-Message-State: AOJu0YyHDXeIQCjW92bJah1SCMyeumZySw43if82AOvBnwW2sjrQANXw
	dinE39Xs5ie4gd6CICmkMMRKnEy4unJaAbTGAfoECy6+07fxAWGxKrODh/Z4Uk4=
X-Google-Smtp-Source: AGHT+IHL/CH6zqKzN/JjE++W0HJJPexNab7xpjQxTt6/mCPhh3sdE9GLwSk3hK7DWyap3OO+pCARpQ==
X-Received: by 2002:a05:600c:570f:b0:40e:b26c:ecd with SMTP id jv15-20020a05600c570f00b0040eb26c0ecdmr416766wmb.175.1706179771906;
        Thu, 25 Jan 2024 02:49:31 -0800 (PST)
Message-ID: <7d64aea2-d920-4335-a17f-e1994eb2f7b7@citrix.com>
Date: Thu, 25 Jan 2024 10:49:31 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v4 0/2] x86/hvm: disable exposing HVM pirqs by default
Content-Language: en-GB
To: Roger Pau Monne <roger.pau@citrix.com>, xen-devel@lists.xenproject.org
Cc: Jan Beulich <jbeulich@suse.com>, Wei Liu <wl@xen.org>,
 Oleksii Kurochko <oleksii.kurochko@gmail.com>,
 Community Manager <community.manager@xenproject.org>,
 Anthony PERARD <anthony.perard@citrix.com>, Juergen Gross <jgross@suse.com>,
 =?UTF-8?Q?Marek_Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
References: <20240125093041.33087-1-roger.pau@citrix.com>
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 xsFNBFLhNn8BEADVhE+Hb8i0GV6mihnnr/uiQQdPF8kUoFzCOPXkf7jQ5sLYeJa0cQi6Penp
 VtiFYznTairnVsN5J+ujSTIb+OlMSJUWV4opS7WVNnxHbFTPYZVQ3erv7NKc2iVizCRZ2Kxn
 srM1oPXWRic8BIAdYOKOloF2300SL/bIpeD+x7h3w9B/qez7nOin5NzkxgFoaUeIal12pXSR
 Q354FKFoy6Vh96gc4VRqte3jw8mPuJQpfws+Pb+swvSf/i1q1+1I4jsRQQh2m6OTADHIqg2E
 ofTYAEh7R5HfPx0EXoEDMdRjOeKn8+vvkAwhviWXTHlG3R1QkbE5M/oywnZ83udJmi+lxjJ5
 YhQ5IzomvJ16H0Bq+TLyVLO/VRksp1VR9HxCzItLNCS8PdpYYz5TC204ViycobYU65WMpzWe
 LFAGn8jSS25XIpqv0Y9k87dLbctKKA14Ifw2kq5OIVu2FuX+3i446JOa2vpCI9GcjCzi3oHV
 e00bzYiHMIl0FICrNJU0Kjho8pdo0m2uxkn6SYEpogAy9pnatUlO+erL4LqFUO7GXSdBRbw5
 gNt25XTLdSFuZtMxkY3tq8MFss5QnjhehCVPEpE6y9ZjI4XB8ad1G4oBHVGK5LMsvg22PfMJ
 ISWFSHoF/B5+lHkCKWkFxZ0gZn33ju5n6/FOdEx4B8cMJt+cWwARAQABzSlBbmRyZXcgQ29v
 cGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPsLBegQTAQgAJAIbAwULCQgHAwUVCgkI
 CwUWAgMBAAIeAQIXgAUCWKD95wIZAQAKCRBlw/kGpdefoHbdD/9AIoR3k6fKl+RFiFpyAhvO
 59ttDFI7nIAnlYngev2XUR3acFElJATHSDO0ju+hqWqAb8kVijXLops0gOfqt3VPZq9cuHlh
 IMDquatGLzAadfFx2eQYIYT+FYuMoPZy/aTUazmJIDVxP7L383grjIkn+7tAv+qeDfE+txL4
 SAm1UHNvmdfgL2/lcmL3xRh7sub3nJilM93RWX1Pe5LBSDXO45uzCGEdst6uSlzYR/MEr+5Z
 JQQ32JV64zwvf/aKaagSQSQMYNX9JFgfZ3TKWC1KJQbX5ssoX/5hNLqxMcZV3TN7kU8I3kjK
 mPec9+1nECOjjJSO/h4P0sBZyIUGfguwzhEeGf4sMCuSEM4xjCnwiBwftR17sr0spYcOpqET
 ZGcAmyYcNjy6CYadNCnfR40vhhWuCfNCBzWnUW0lFoo12wb0YnzoOLjvfD6OL3JjIUJNOmJy
 RCsJ5IA/Iz33RhSVRmROu+TztwuThClw63g7+hoyewv7BemKyuU6FTVhjjW+XUWmS/FzknSi
 dAG+insr0746cTPpSkGl3KAXeWDGJzve7/SBBfyznWCMGaf8E2P1oOdIZRxHgWj0zNr1+ooF
 /PzgLPiCI4OMUttTlEKChgbUTQ+5o0P080JojqfXwbPAyumbaYcQNiH1/xYbJdOFSiBv9rpt
 TQTBLzDKXok86M7BTQRS4TZ/ARAAkgqudHsp+hd82UVkvgnlqZjzz2vyrYfz7bkPtXaGb9H4
 Rfo7mQsEQavEBdWWjbga6eMnDqtu+FC+qeTGYebToxEyp2lKDSoAsvt8w82tIlP/EbmRbDVn
 7bhjBlfRcFjVYw8uVDPptT0TV47vpoCVkTwcyb6OltJrvg/QzV9f07DJswuda1JH3/qvYu0p
 vjPnYvCq4NsqY2XSdAJ02HrdYPFtNyPEntu1n1KK+gJrstjtw7KsZ4ygXYrsm/oCBiVW/OgU
 g/XIlGErkrxe4vQvJyVwg6YH653YTX5hLLUEL1NS4TCo47RP+wi6y+TnuAL36UtK/uFyEuPy
 wwrDVcC4cIFhYSfsO0BumEI65yu7a8aHbGfq2lW251UcoU48Z27ZUUZd2Dr6O/n8poQHbaTd
 6bJJSjzGGHZVbRP9UQ3lkmkmc0+XCHmj5WhwNNYjgbbmML7y0fsJT5RgvefAIFfHBg7fTY/i
 kBEimoUsTEQz+N4hbKwo1hULfVxDJStE4sbPhjbsPCrlXf6W9CxSyQ0qmZ2bXsLQYRj2xqd1
 bpA+1o1j2N4/au1R/uSiUFjewJdT/LX1EklKDcQwpk06Af/N7VZtSfEJeRV04unbsKVXWZAk
 uAJyDDKN99ziC0Wz5kcPyVD1HNf8bgaqGDzrv3TfYjwqayRFcMf7xJaL9xXedMcAEQEAAcLB
 XwQYAQgACQUCUuE2fwIbDAAKCRBlw/kGpdefoG4XEACD1Qf/er8EA7g23HMxYWd3FXHThrVQ
 HgiGdk5Yh632vjOm9L4sd/GCEACVQKjsu98e8o3ysitFlznEns5EAAXEbITrgKWXDDUWGYxd
 pnjj2u+GkVdsOAGk0kxczX6s+VRBhpbBI2PWnOsRJgU2n10PZ3mZD4Xu9kU2IXYmuW+e5KCA
 vTArRUdCrAtIa1k01sPipPPw6dfxx2e5asy21YOytzxuWFfJTGnVxZZSCyLUO83sh6OZhJkk
 b9rxL9wPmpN/t2IPaEKoAc0FTQZS36wAMOXkBh24PQ9gaLJvfPKpNzGD8XWR5HHF0NLIJhgg
 4ZlEXQ2fVp3XrtocHqhu4UZR4koCijgB8sB7Tb0GCpwK+C4UePdFLfhKyRdSXuvY3AHJd4CP
 4JzW0Bzq/WXY3XMOzUTYApGQpnUpdOmuQSfpV9MQO+/jo7r6yPbxT7CwRS5dcQPzUiuHLK9i
 nvjREdh84qycnx0/6dDroYhp0DFv4udxuAvt1h4wGwTPRQZerSm4xaYegEFusyhbZrI0U9tJ
 B8WrhBLXDiYlyJT6zOV2yZFuW47VrLsjYnHwn27hmxTC/7tvG3euCklmkn9Sl9IAKFu29RSo
 d5bD8kMSCYsTqtTfT6W4A3qHGvIDta3ptLYpIAOD2sY3GYq2nf3Bbzx81wZK14JdDDHUX2Rs
 6+ahAA==
In-Reply-To: <20240125093041.33087-1-roger.pau@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 25/01/2024 9:30 am, Roger Pau Monne wrote:
> Hello,
>
> The HVM pirq feature has been found to be buggy on some scenarios, and
> given it's an optional feature, and fully undocumented, opt to disable
> it by default for the time being.  Note that an xl.cfg option is
> provided to allow users to enable it on a per-domain basis.
>
> Domain migrated from older versions also get the feature enabled by
> default, in order to keep compatibility.
>
> Thanks, Roger.
>
> Roger Pau Monne (2):
>   x86/hvm: make X86_EMU_USE_PIRQ optional
>   tools: don't expose XENFEAT_hvm_pirqs by default

Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>


From xen-devel-bounces@lists.xenproject.org Thu Jan 25 11:13:17 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 25 Jan 2024 11:13:17 +0000
Received: from list by lists.xenproject.org with outflank-mailman.671448.1044791 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSxfS-0002hr-IM; Thu, 25 Jan 2024 11:13:10 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 671448.1044791; Thu, 25 Jan 2024 11:13:10 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSxfS-0002hk-F4; Thu, 25 Jan 2024 11:13:10 +0000
Received: by outflank-mailman (input) for mailman id 671448;
 Thu, 25 Jan 2024 11:13:09 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=vt1H=JD=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rSxfR-0002hc-6o
 for xen-devel@lists.xenproject.org; Thu, 25 Jan 2024 11:13:09 +0000
Received: from mail-lj1-x230.google.com (mail-lj1-x230.google.com
 [2a00:1450:4864:20::230])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id b682fa84-bb72-11ee-9b0f-b553b5be7939;
 Thu, 25 Jan 2024 12:13:05 +0100 (CET)
Received: by mail-lj1-x230.google.com with SMTP id
 38308e7fff4ca-2cf3a0b2355so3204991fa.0
 for <xen-devel@lists.xenproject.org>; Thu, 25 Jan 2024 03:13:05 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 h7-20020a02c727000000b0046edb73ff8fsm2489302jao.74.2024.01.25.03.13.03
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 25 Jan 2024 03:13:04 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: b682fa84-bb72-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1706181185; x=1706785985; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:from:to:cc:subject:date:message-id:reply-to;
        bh=dJ5/HGGOnpZmOgJrZRjwRcSVcy21eqbEiTKW/rL9VXg=;
        b=bKES19xa7kLmRy9eI+DNsbi4eQGvG/JTa1r9YtCLE1VdGpiK8Tj7iyBM7hlfoDJZgL
         Tb4TxG4XqElOdmUAixR++KaBetXRgtBngPe8hzRDHZdyQVwuIRcHzVJPRGlpBOqECFTu
         f2IRWUVwpyfaXvi7yZRN0ouRJTl/ZbygHKp8gfVojxvuAKuspnAFGTeVmSo5bA+5exxf
         ECc2hblY9zEjrQNANfhiqeRSz547G3Qzct7Y71BCrDRZW75AJQe1NeN7NZuNz7saaLee
         A4gGcDuJcymqOSBqqEZpuMeNcbgdqWm6i6EOrvN8vVfpLAzTOThcF2wLFMvccugoMhHa
         BOXQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706181185; x=1706785985;
        h=content-transfer-encoding:in-reply-to:autocrypt:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to;
        bh=dJ5/HGGOnpZmOgJrZRjwRcSVcy21eqbEiTKW/rL9VXg=;
        b=FWHcyzl+2oWlk6JHcoxLqzC9Wy89gbK3Cz+qX713wGoil1nwrayszm4uf/1097QHjJ
         TDrc1a9mTdjLhFnvvTo0aM8xIFdn3vJkEN+T//IocGt6PMdb4kOimb2WBG4yyYqbcbU2
         QdUNxz/JjPzzRwwLyoGlvwRuB94QZ4mcDsMj8lHL7SRctiZyGPRiMde7Qg+i5iWHYnGV
         MpIU7hIQtjpAFgtggkVofQQHGbWjhQowKm3md/BaNegSyhni2CF+gZXUCfxGQHSQFxg5
         KCBtw5avSUkX/4OeFYxzuIr76iBmtLKyY5GpOZZf9Qul+vZfeJk35O8DBmg7RgZmF3CI
         dv0g==
X-Gm-Message-State: AOJu0YyQ6sJaWYiT37/x3sFSUiGNTbWCbjZBU6A1mqnnw7FpC/pObkNv
	gxbXpm3cLO5VmR0ONsb02ADkqbR/Wl/2J4U3E8sKxXdgj+ht0IVaTf3EyNrsGg==
X-Google-Smtp-Source: AGHT+IFH2lBu3Glf5LELuaKlGfGfvYE5N/FDa69m3BNunzc+MP/fQJn0YWdbRydBjB3FAowtEjSApA==
X-Received: by 2002:a2e:7c19:0:b0:2cc:769e:723d with SMTP id x25-20020a2e7c19000000b002cc769e723dmr386778ljc.87.1706181185307;
        Thu, 25 Jan 2024 03:13:05 -0800 (PST)
Message-ID: <ed221b62-0151-45ce-a88d-d7e2a9946136@suse.com>
Date: Thu, 25 Jan 2024 12:13:01 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v5 1/3] x86/iommu: remove regions not to be mapped
To: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
Cc: Paul Durrant <paul@xen.org>, Andrew Cooper <andrew.cooper3@citrix.com>,
 Wei Liu <wl@xen.org>, xen-devel@lists.xenproject.org
References: <20240124172953.29814-1-roger.pau@citrix.com>
 <20240124172953.29814-2-roger.pau@citrix.com>
 <ad178469-15c3-4ae5-8538-e927f1116a42@suse.com> <ZbIgE8exXDVicN8D@macbook>
Content-Language: en-US
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <ZbIgE8exXDVicN8D@macbook>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 25.01.2024 09:47, Roger Pau Monné wrote:
> On Thu, Jan 25, 2024 at 09:34:40AM +0100, Jan Beulich wrote:
>> On 24.01.2024 18:29, Roger Pau Monne wrote:
>>> --- a/xen/arch/x86/hvm/io.c
>>> +++ b/xen/arch/x86/hvm/io.c
>>> @@ -369,6 +369,22 @@ bool vpci_is_mmcfg_address(const struct domain *d, paddr_t addr)
>>>      return vpci_mmcfg_find(d, addr);
>>>  }
>>>  
>>> +int __hwdom_init vpci_subtract_mmcfg(const struct domain *d, struct rangeset *r)
>>> +{
>>> +    const struct hvm_mmcfg *mmcfg;
>>> +
>>> +    list_for_each_entry ( mmcfg, &d->arch.hvm.mmcfg_regions, next )
>>> +    {
>>> +        int rc = rangeset_remove_range(r, PFN_DOWN(mmcfg->addr),
>>> +                                       PFN_DOWN(mmcfg->addr + mmcfg->size - 1));
>>
>> Along the lines of this, ...
>>
>>> --- a/xen/arch/x86/setup.c
>>> +++ b/xen/arch/x86/setup.c
>>> @@ -2138,6 +2138,54 @@ int __hwdom_init xen_in_range(unsigned long mfn)
>>>      return 0;
>>>  }
>>>  
>>> +int __hwdom_init remove_xen_ranges(struct rangeset *r)
>>> +{
>>> +    paddr_t start, end;
>>> +    int rc;
>>> +
>>> +    /* S3 resume code (and other real mode trampoline code) */
>>> +    rc = rangeset_remove_range(r, PFN_DOWN(bootsym_phys(trampoline_start)),
>>> +                               PFN_DOWN(bootsym_phys(trampoline_end)) - 1);
>>
>> ... did you perhaps mean
>>
>>                                PFN_DOWN(bootsym_phys(trampoline_end) - 1));
>>
>> here (and then similarly below, except there the difference is benign I
>> think, for the labels being page-aligned)?
> 
> They are all page aligned, so I didn't care much,  but now that you
> point it might be safer to do the subtraction from the address instead
> of the frame number, just in case.

Hmm, no, for me neither trampoline_end nor trampoline_start are page
aligned. While bootsym_phys(trampoline_start) is, I don't think
bootsym_phys(trampoline_end) normally would be (it might only be by
coincidence).

Jan


From xen-devel-bounces@lists.xenproject.org Thu Jan 25 11:23:19 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 25 Jan 2024 11:23:19 +0000
Received: from list by lists.xenproject.org with outflank-mailman.671454.1044801 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSxpC-0004kh-EP; Thu, 25 Jan 2024 11:23:14 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 671454.1044801; Thu, 25 Jan 2024 11:23:14 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSxpC-0004ka-Bi; Thu, 25 Jan 2024 11:23:14 +0000
Received: by outflank-mailman (input) for mailman id 671454;
 Thu, 25 Jan 2024 11:23:12 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=vt1H=JD=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rSxpA-0004kU-I9
 for xen-devel@lists.xenproject.org; Thu, 25 Jan 2024 11:23:12 +0000
Received: from mail-lj1-x22d.google.com (mail-lj1-x22d.google.com
 [2a00:1450:4864:20::22d])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 1ec7297c-bb74-11ee-9b0f-b553b5be7939;
 Thu, 25 Jan 2024 12:23:10 +0100 (CET)
Received: by mail-lj1-x22d.google.com with SMTP id
 38308e7fff4ca-2cf3ea86423so2650621fa.1
 for <xen-devel@lists.xenproject.org>; Thu, 25 Jan 2024 03:23:10 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 u26-20020a6be41a000000b007bf4344cee1sm5961349iog.4.2024.01.25.03.23.07
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 25 Jan 2024 03:23:09 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 1ec7297c-bb74-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1706181790; x=1706786590; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=kWInFb1XN6PqU5zz44BXW3fM/C0z6yBDwDik3RGrddA=;
        b=PRXa51pR/y/d7d3vhP/seaN3rsKisAUtAsandr0L9l2qmk8dmm9BIZ9M2nmT38zOwt
         TYFj6oIrSQzWeNw2RMiueByJEvEziRtn6yjFXiBt2fBqrjGI+8Gi+KwnSlINzQ8YvZwX
         6AFZR8+3UV0UmDhAoCBYI77BkUJgrZ6SPSdN8nAP7fl1JoJMv2B8o5YRNeks0NIzcipH
         n66CdqWmy+STB2pugL10LqIAJXspgn0lIsxdyfVBaJoTGb1Y0bDD37oggBC++L7yV1iI
         GsR/VbDmg/3V1r4SsOsdBvHIGOWTQ1C6ia84EhvERaVeJUMGBrLhOABhXOhqPXINkgjH
         F8LQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706181790; x=1706786590;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=kWInFb1XN6PqU5zz44BXW3fM/C0z6yBDwDik3RGrddA=;
        b=kNGoTmoCNXZSqZWhU3Ndm24WzsLd+5ZdX85StHufC01I6gfGiDc2TnIBHWAkQSNxTQ
         VNVR9kUPZc2KlWPLEMeY75U7XE5kdjTdhmYR8mJR1YFGrgFDE/q3ByC5AFF4XbT4Qt2N
         VJzIjWwo8RHwTBIscTJnZ3TBdnGQ2LlRzwF3iSsbrbD9pJvEGIw3skq4zih0tbJJ4HoF
         Nu6sxTY+LT4QQ4gkBFSirhohlSGNrv/AX9JY0zFkFOJiDcsMh+G9pvaq4tq2HA+opnK3
         pVrQoziB/ceAUGRADN1+Pu318rXgiTt7OzrGRhrknBs3Flsn2Oj+3vHOkzAHvN9nOjPz
         7NBg==
X-Gm-Message-State: AOJu0YwDiUE3JAv1fRWAXNSdGQCn+Fl4gKIAGpLPszfVey4HC+aUCgNF
	F47kcx5Tltz8YMCQD3xTWLV48h1F1IdiTHpbXotSJ5a9vhXZYxF0PLwSThGUMA==
X-Google-Smtp-Source: AGHT+IFczN7veABRfQNDQex7in09sujyWMAAuahfzmm/bTTckwpyQwCBL26YMhB0jGIlKqbmFwoDFA==
X-Received: by 2002:a2e:995a:0:b0:2cf:725:f93 with SMTP id r26-20020a2e995a000000b002cf07250f93mr413778ljj.88.1706181789741;
        Thu, 25 Jan 2024 03:23:09 -0800 (PST)
Message-ID: <247df339-e631-4c50-85e4-b6a486235564@suse.com>
Date: Thu, 25 Jan 2024 12:23:05 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v12.2 01/15] vpci: use per-domain PCI lock to protect vpci
 structure
Content-Language: en-US
To: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
Cc: Stewart Hildebrand <stewart.hildebrand@amd.com>,
 Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>,
 Andrew Cooper <andrew.cooper3@citrix.com>, Wei Liu <wl@xen.org>,
 George Dunlap <george.dunlap@citrix.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>,
 Jun Nakajima <jun.nakajima@intel.com>, Kevin Tian <kevin.tian@intel.com>,
 Paul Durrant <paul@xen.org>, Volodymyr Babchuk <volodymyr_babchuk@epam.com>,
 xen-devel@lists.xenproject.org
References: <20240109215145.430207-1-stewart.hildebrand@amd.com>
 <20240109215145.430207-2-stewart.hildebrand@amd.com>
 <20240115194309.45683-1-stewart.hildebrand@amd.com>
 <715e40c9-1776-4677-9565-dac1565a2aa8@suse.com> <Za_WGzS14Eqt8yZF@macbook>
 <ae7a57f2-2433-4b75-ab45-c8be55d489c9@suse.com> <ZbDXXyucJhLJ4u9H@macbook>
 <a3233487-965b-49ae-bebe-e5476fcda29c@suse.com> <ZbFOE6kV7NXFrNjb@macbook>
 <fa7df700-06f1-4110-bc76-c59d59e5d887@suse.com> <ZbIkVcYkcuT2iF8e@macbook>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <ZbIkVcYkcuT2iF8e@macbook>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 25.01.2024 10:05, Roger Pau Monné wrote:
> On Thu, Jan 25, 2024 at 08:43:05AM +0100, Jan Beulich wrote:
>> On 24.01.2024 18:51, Roger Pau Monné wrote:
>>> On Wed, Jan 24, 2024 at 12:34:10PM +0100, Jan Beulich wrote:
>>>> On 24.01.2024 10:24, Roger Pau Monné wrote:
>>>>> On Wed, Jan 24, 2024 at 09:48:35AM +0100, Jan Beulich wrote:
>>>>>> On 23.01.2024 16:07, Roger Pau Monné wrote:
>>>>>>> On Tue, Jan 23, 2024 at 03:32:12PM +0100, Jan Beulich wrote:
>>>>>>>> On 15.01.2024 20:43, Stewart Hildebrand wrote:
>>>>>>>>> @@ -2888,6 +2888,8 @@ int allocate_and_map_msi_pirq(struct domain *d, int index, int *pirq_p,
>>>>>>>>>  {
>>>>>>>>>      int irq, pirq, ret;
>>>>>>>>>  
>>>>>>>>> +    ASSERT(pcidevs_locked() || rw_is_locked(&d->pci_lock));
>>>>>>>>
>>>>>>>> If either lock is sufficient to hold here, ...
>>>>>>>>
>>>>>>>>> --- a/xen/arch/x86/physdev.c
>>>>>>>>> +++ b/xen/arch/x86/physdev.c
>>>>>>>>> @@ -123,7 +123,9 @@ int physdev_map_pirq(domid_t domid, int type, int *index, int *pirq_p,
>>>>>>>>>  
>>>>>>>>>      case MAP_PIRQ_TYPE_MSI:
>>>>>>>>>      case MAP_PIRQ_TYPE_MULTI_MSI:
>>>>>>>>> +        pcidevs_lock();
>>>>>>>>>          ret = allocate_and_map_msi_pirq(d, *index, pirq_p, type, msi);
>>>>>>>>> +        pcidevs_unlock();
>>>>>>>>>          break;
>>>>>>>>
>>>>>>>
>>>>>>> IIRC (Stewart can further comment) this is done holding the pcidevs
>>>>>>> lock to keep the path unmodified, as there's no need to hold the
>>>>>>> per-domain rwlock.
>>>>>>
>>>>>> Yet why would we prefer to acquire a global lock when a per-domain one
>>>>>> suffices?
>>>>>
>>>>> I was hoping to introduce less changes, specially if they are not
>>>>> strictly required, as it's less risk.  I'm always quite worry of
>>>>> locking changes.
>>>>
>>>> In which case more description / code commenting is needed. The pattern
>>>> of the assertions looks dangerous.
>>>
>>> Is such dangerousness perception because you fear some of the pcidevs
>>> lock usage might be there not just for preventing the pdev from going
>>> away, but also to guarantee exclusive access to certain state?
>>
>> Indeed. In my view the main purpose of locks is to guard state. Their
>> use here to guard against devices here is imo rather an abuse; as
>> mentioned before this should instead be achieved e.g via refcounting.
>> And it's bad enough already that pcidevs_lock() alone has been abused
>> this way, without proper marking (leaving us to guess in many places).
>> It gets worse when a second lock can now also serve this same
>> purpose.
> 
> The new lock is taken in read mode in most contexts, and hence can't
> be used to indirectly gain exclusive access to domain related
> structures in a safe way.

Oh, right - I keep being misled by rw_is_locked(). This is a fair
argument. Irrespective it would feel better to me if an abstraction
construct was introduced; but seeing you don't like the idea I guess
I won't insist.

Jan


From xen-devel-bounces@lists.xenproject.org Thu Jan 25 11:34:27 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 25 Jan 2024 11:34:27 +0000
Received: from list by lists.xenproject.org with outflank-mailman.671461.1044810 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSxzo-0006ti-Ba; Thu, 25 Jan 2024 11:34:12 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 671461.1044810; Thu, 25 Jan 2024 11:34:12 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSxzo-0006tb-8b; Thu, 25 Jan 2024 11:34:12 +0000
Received: by outflank-mailman (input) for mailman id 671461;
 Thu, 25 Jan 2024 11:34:11 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=vt1H=JD=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rSxzn-0006tV-L3
 for xen-devel@lists.xenproject.org; Thu, 25 Jan 2024 11:34:11 +0000
Received: from mail-lf1-x136.google.com (mail-lf1-x136.google.com
 [2a00:1450:4864:20::136])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id a7b71640-bb75-11ee-9b0f-b553b5be7939;
 Thu, 25 Jan 2024 12:34:09 +0100 (CET)
Received: by mail-lf1-x136.google.com with SMTP id
 2adb3069b0e04-5102188d2aeso79070e87.2
 for <xen-devel@lists.xenproject.org>; Thu, 25 Jan 2024 03:34:09 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 r5-20020a056638130500b0046e8d86f2a7sm4552010jad.57.2024.01.25.03.34.07
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 25 Jan 2024 03:34:08 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: a7b71640-bb75-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1706182449; x=1706787249; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=kDK+TQjGK0IDvgftstzM4aabFGqeqgzPyGYiIDlulLA=;
        b=D69K53V7IXDHL8nva2Y1tI6P5rc5y7B3/VMmNPqOunZOnFDLABNGddRmDw7Oy+hjMP
         xcLg/1L/bEFA9Ngq5XdU4gxgMAnoXP4MRzFStVsozt6IX7kTK6xSO4A95L12OEcpUrEW
         pPCbZqUDnY3InnTkj9xXw+ExwigNf7/tGwpLQIPVALqO9f1903kG11eKWnKy8l8kgzIq
         mpsLTjutPaRTDIO+abmAST3yaKnZpodJYLtB0g8vHlridezCmBswbrBUuEPqyu10Gyzj
         CMOaGBjafnzIt+PdYcyW/qZg8LzMuyCU3jdFVu0MvjOGKDgkO0XL3JL7752ki5eO6g+i
         1tEQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706182449; x=1706787249;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=kDK+TQjGK0IDvgftstzM4aabFGqeqgzPyGYiIDlulLA=;
        b=pgR0GsMy+dUhnZ1n9QSJTKgTczyyD1BMFNhCiSAkP0gKWnjXYGn/Rqwz3MG7rbNGRx
         32ZXd4dF1rUM2SUGUGpL3UdvuWruRyqOc4AwXZCBOw2OhfRQ0To/H8nxJWi9TurtUDOt
         TbIbZDngwsUiQRvxMLr4z3U3wFYmRzXdGsZoAbTXRMja35hvr53aV09EmTK0ieP7jacT
         SEXVIRWlc9Mx3cQkztiLgCb/Bai3YZM8gvgkmH/Zx9eclEFT6+/rkw3hqs9lT3T+9gox
         OCQgAiKAqRNBx2Oq9cCo60xViVSX5Ql4KwecFxy4f+ZcsEp4kR4BwMWraIyvJsBMYwMF
         U9uw==
X-Gm-Message-State: AOJu0YwyTJ7Nymedi1f6BT/y8180Bm0oUUrFia0VgEVlkUTvnMA4GsN0
	DOJswfEDyfWQ1tQX00dZYHZEsFCPOZYy3DYMWD7NGnDHBcuQRudDoVylErujbw==
X-Google-Smtp-Source: AGHT+IEKGpSBF/TEMIakWipI9tlCmqwK9XsKak5MO4g1dycJHsJFaw1SzDcOGVWJyZQAqDLiyvJ9eA==
X-Received: by 2002:ac2:485b:0:b0:50e:6d96:4b32 with SMTP id 27-20020ac2485b000000b0050e6d964b32mr351903lfy.71.1706182449027;
        Thu, 25 Jan 2024 03:34:09 -0800 (PST)
Message-ID: <5337f0ad-d709-46a8-b973-5bceef961d6b@suse.com>
Date: Thu, 25 Jan 2024 12:34:05 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] x86/entry: Avoid register spilling in cr4_pv32_restore()
Content-Language: en-US
To: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Wei Liu <wl@xen.org>, Xen-devel <xen-devel@lists.xenproject.org>
References: <20240124154928.2147423-1-andrew.cooper3@citrix.com>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <20240124154928.2147423-1-andrew.cooper3@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 24.01.2024 16:49, Andrew Cooper wrote:
> cr4_pv32_restore() needs two registers.  Right now, it spills %rdx and
> clobbers %rax.
> 
> However, %rcx is free to use at all callsites.  Annotate CR4_PV32_RESTORE with
> our usual clobber comments, and swap %rdx for %rcx in the non-fatal paths
> 
> Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>

Reviewed-by: Jan Beulich <jbeulich@suse.com>




From xen-devel-bounces@lists.xenproject.org Thu Jan 25 11:48:03 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 25 Jan 2024 11:48:03 +0000
Received: from list by lists.xenproject.org with outflank-mailman.671466.1044821 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSyD8-0000mW-HQ; Thu, 25 Jan 2024 11:47:58 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 671466.1044821; Thu, 25 Jan 2024 11:47:58 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSyD8-0000mP-Ec; Thu, 25 Jan 2024 11:47:58 +0000
Received: by outflank-mailman (input) for mailman id 671466;
 Thu, 25 Jan 2024 11:47:57 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=QGEI=JD=invisiblethingslab.com=marmarek@srs-se1.protection.inumbo.net>)
 id 1rSyD7-0000mJ-E7
 for xen-devel@lists.xenproject.org; Thu, 25 Jan 2024 11:47:57 +0000
Received: from wout4-smtp.messagingengine.com (wout4-smtp.messagingengine.com
 [64.147.123.20]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 916b7cc6-bb77-11ee-9b0f-b553b5be7939;
 Thu, 25 Jan 2024 12:47:54 +0100 (CET)
Received: from compute6.internal (compute6.nyi.internal [10.202.2.47])
 by mailout.west.internal (Postfix) with ESMTP id 204893200B08;
 Thu, 25 Jan 2024 06:47:49 -0500 (EST)
Received: from mailfrontend1 ([10.202.2.162])
 by compute6.internal (MEProxy); Thu, 25 Jan 2024 06:47:49 -0500
Received: by mail.messagingengine.com (Postfix) with ESMTPA; Thu,
 25 Jan 2024 06:47:47 -0500 (EST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 916b7cc6-bb77-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=
	invisiblethingslab.com; h=cc:cc:content-type:content-type:date
	:date:from:from:in-reply-to:in-reply-to:message-id:mime-version
	:references:reply-to:subject:subject:to:to; s=fm3; t=1706183268;
	 x=1706269668; bh=DMkmXjxEiBHByOXD9PDmM/4xbu4XrklIuLd1RJe/z8E=; b=
	Gjx1VBQOudHLsAXg+XPbWakl9TJkM9r2sOvVqQDDbnKBoYOSGQGsh7y4bWt052oA
	z3ZVEwk3znYYlBW7jHliuJa+szmDMVODepbcEkgayWMbsd6q7ToFEGD5ywEXHu9Z
	kXSmu2VejzR4MlLbzfjyQex+k47zOD3xMVl+C6Ym2u+JgSXM/Ulh6UEV1I2WJ2Hq
	LQCsZgB1z9wVxrrVvX764Ly9wiLL8A52tyEsseJqd6Sgy8ovS6j4kEhtUhLo/IXb
	64dQAr8Wlmx4uvPt/LDRWSA890BgxRul3jK9FDMns2AHfx8zt9mWEaGSkaHBGU72
	VZA/KMsV1HO1GV91o8KekA==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=
	messagingengine.com; h=cc:cc:content-type:content-type:date:date
	:feedback-id:feedback-id:from:from:in-reply-to:in-reply-to
	:message-id:mime-version:references:reply-to:subject:subject:to
	:to:x-me-proxy:x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s=
	fm3; t=1706183268; x=1706269668; bh=DMkmXjxEiBHByOXD9PDmM/4xbu4X
	rklIuLd1RJe/z8E=; b=A3iVR0as0ZhQbfQGybAql/RBQuwXAeJgV5CzAM2Urha3
	5X+GfIIYR6k9xz0c+wjsx05Z5EeNOzt6fkxZrLhU+tTYuh0EMBIhfIKMaTTRRcj0
	N0pL0SQvl2HCD30N3KmofLhNURWqv7LmiaqJh1MBhUqA2loy7LE2MSmUGYzp2fV/
	NhpLGkG5/T5gyshDCSCJKFYKvs5qX3CiZ5JUsMMey69uyTGZ5w9hH+7mVm3+jkTi
	pxi/f2aiwc4/xA/YXHb6t8LWsmAbyjjOHoRdSOQ5gURUKnOqNI8T2wqQhLRtAaMs
	8gAKoJcatMfHsrPgrAf7UaFtz2isz4entdluPuatsA==
X-ME-Sender: <xms:ZEqyZUAe2OOdgoBWqwWwbDLbCattB7yo49fQ2Dw0ZVDDeApP_kPN_w>
    <xme:ZEqyZWh9KNlwaKATGcNl29fVOLJbInmxkc4jh9KXygoPkcn30r3M1f5-pQr0bcu2i
    ByeoZm6AsGVxw>
X-ME-Received: <xmr:ZEqyZXktKZqzu2NrOoHlzPKWhuS2Qdu6CRo4exwrglI3k12i14-aaDqRdhdKt0HPcr_T2lQqC3aTjkLpg-MEmKYsN5pbsVJOJw>
X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvkedrvdelgedgtdeiucetufdoteggodetrfdotf
    fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen
    uceurghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmne
    cujfgurhepfffhvfevuffkfhggtggujgesghdtreertddtjeenucfhrhhomhepofgrrhgv
    khcuofgrrhgtiiihkhhofihskhhiqdfikphrvggtkhhiuceomhgrrhhmrghrvghksehinh
    hvihhsihgslhgvthhhihhnghhslhgrsgdrtghomheqnecuggftrfgrthhtvghrnhepleeh
    ffeikefhledvkeeigeevfeejkeelkeegvddtteetteehleelkeeivdekjeelnecuffhomh
    grihhnpehgihhthhhusgdrtghomhdpphhougdrihhnpdhkvggvphgrtghhrghnghgvlhho
    ghdrtghomhenucevlhhushhtvghrufhiiigvpedtnecurfgrrhgrmhepmhgrihhlfhhroh
    hmpehmrghrmhgrrhgvkhesihhnvhhishhisghlvghthhhinhhgshhlrggsrdgtohhm
X-ME-Proxy: <xmx:ZEqyZax-0sB6W2na-6d2m0iW07fQqilJgMOF5tmLV49_eUeVNCfzTQ>
    <xmx:ZEqyZZQ7QmIXe5biIP8mPUYAcwx_PMkEdzLC3zNSB_LLL4pa3Z66vw>
    <xmx:ZEqyZVbyEB2ihFk5azhDtKJHW-RXY2JsQUU2hGfIeaNcaILTCfE7kA>
    <xmx:ZEqyZXNzTjlCCob-bFDydQSvKcl8lHrGoopLQc9eqi9APkQakJ20Cg>
Feedback-ID: i1568416f:Fastmail
Date: Thu, 25 Jan 2024 12:47:43 +0100
From: Marek =?utf-8?Q?Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
To: Roger Pau Monne <roger.pau@citrix.com>
Cc: xen-devel@lists.xenproject.org,
	Oleksii Kurochko <oleksii.kurochko@gmail.com>,
	Community Manager <community.manager@xenproject.org>,
	Wei Liu <wl@xen.org>, Anthony PERARD <anthony.perard@citrix.com>,
	Juergen Gross <jgross@suse.com>
Subject: Re: [PATCH v4 2/2] tools: don't expose XENFEAT_hvm_pirqs by default
Message-ID: <ZbJKX1P3rsa2XLsG@mail-itl>
References: <20240125093041.33087-1-roger.pau@citrix.com>
 <20240125093041.33087-3-roger.pau@citrix.com>
MIME-Version: 1.0
Content-Type: multipart/signed; micalg=pgp-sha256;
	protocol="application/pgp-signature"; boundary="lGKABZGVWp7Eqo+G"
Content-Disposition: inline
In-Reply-To: <20240125093041.33087-3-roger.pau@citrix.com>


--lGKABZGVWp7Eqo+G
Content-Type: text/plain; protected-headers=v1; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable
Date: Thu, 25 Jan 2024 12:47:43 +0100
From: Marek =?utf-8?Q?Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
To: Roger Pau Monne <roger.pau@citrix.com>
Cc: xen-devel@lists.xenproject.org,
	Oleksii Kurochko <oleksii.kurochko@gmail.com>,
	Community Manager <community.manager@xenproject.org>,
	Wei Liu <wl@xen.org>, Anthony PERARD <anthony.perard@citrix.com>,
	Juergen Gross <jgross@suse.com>
Subject: Re: [PATCH v4 2/2] tools: don't expose XENFEAT_hvm_pirqs by default

On Thu, Jan 25, 2024 at 10:30:41AM +0100, Roger Pau Monne wrote:
> The HVM pirq feature allows routing interrupts from both physical and emu=
lated
> devices over event channels, this was done a performance improvement.  Ho=
wever
> its usage is fully undocumented, and the only reference implementation is=
 in
> Linux.  It defeats the purpose of local APIC hardware virtualization, bec=
ause
> when using it interrupts avoid the usage of the local APIC altogether.
>=20
> It has also been reported to not work properly with certain devices, at l=
east
> when using some AMD GPUs Linux attempts to route interrupts over event
> channels, but Xen doesn't correctly detect such routing, which leads to t=
he
> hypervisor complaining with:
>=20
> (XEN) d15v0: Unsupported MSI delivery mode 7 for Dom15
>=20
> When MSIs are attempted to be routed over event channels the entry delive=
ry
> mode is set to ExtINT, but Xen doesn't detect such routing and attempts to
> inject the interrupt following the native MSI path, and the ExtINT delive=
ry
> mode is not supported.
>=20
> Disable HVM PIRQs by default and provide a per-domain option in xl.cfg to
> enable such feature.  Also for backwards compatibility keep the feature e=
nabled
> for any resumed domains that don't have an explicit selection.
>=20
> Note that the only user of the feature (Linux) is also able to handle nat=
ive
> interrupts fine, as the feature was already not used if Xen reported loca=
l APIC
> hardware virtualization active.
>=20
> Link: https://github.com/QubesOS/qubes-issues/issues/7971
> Signed-off-by: Roger Pau Monn=C3=A9 <roger.pau@citrix.com>
> Reviewed-by: Anthony PERARD <anthony.perard@citrix.com>

For the python part - it's a bit unfortunate there is no knob to control
the value, but in practice I doubt it would be useful (and especially
for python bindings users), so:

Acked-by: Marek Marczykowski-G=C3=B3recki <marmarek@invisiblethingslab.com>

> ---
> Changes since v2:
>  - Add changelog entry.
>=20
> Changes since v1:
>  - Fix libxl for PV guests.
> ---
>  CHANGELOG.md                      |  2 ++
>  docs/man/xl.cfg.5.pod.in          |  7 +++++++
>  tools/include/libxl.h             |  7 +++++++
>  tools/libs/light/libxl_create.c   |  7 +++++--
>  tools/libs/light/libxl_types.idl  |  1 +
>  tools/libs/light/libxl_x86.c      | 12 +++++++++---
>  tools/python/xen/lowlevel/xc/xc.c |  4 +++-
>  tools/xl/xl_parse.c               |  1 +
>  8 files changed, 35 insertions(+), 6 deletions(-)
>=20
> diff --git a/CHANGELOG.md b/CHANGELOG.md
> index 723d06425431..ddb3ab8db4e7 100644
> --- a/CHANGELOG.md
> +++ b/CHANGELOG.md
> @@ -9,6 +9,8 @@ The format is based on [Keep a Changelog](https://keepach=
angelog.com/en/1.0.0/)
>  ### Changed
>   - Changed flexible array definitions in public I/O interface headers to=
 not
>     use "1" as the number of array elements.
> + - On x86:
> +   - HVM PIRQs are disabled by default.
> =20
>  ### Added
>   - On x86:
> diff --git a/docs/man/xl.cfg.5.pod.in b/docs/man/xl.cfg.5.pod.in
> index 2e234b450efb..ea8d41727d8e 100644
> --- a/docs/man/xl.cfg.5.pod.in
> +++ b/docs/man/xl.cfg.5.pod.in
> @@ -2460,6 +2460,13 @@ The viridian option can be specified as a boolean.=
 A value of true (1)
>  is equivalent to the list [ "defaults" ], and a value of false (0) is
>  equivalent to an empty list.
> =20
> +=3Ditem B<hvm_pirq=3DBOOLEAN>
> +
> +Select whether the guest is allowed to route interrupts from devices (ei=
ther
> +emulated or passed through) over event channels.
> +
> +This option is disabled by default.
> +
>  =3Dback
> =20
>  =3Dhead3 Emulated VGA Graphics Device
> diff --git a/tools/include/libxl.h b/tools/include/libxl.h
> index 907aa0a3303a..f1652b1664f0 100644
> --- a/tools/include/libxl.h
> +++ b/tools/include/libxl.h
> @@ -608,6 +608,13 @@
>   * executable in order to not run it as the same user as libxl.
>   */
> =20
> +/*
> + * LIBXL_HAVE_HVM_PIRQ indicates the presence of the u.hvm.pirq filed in
> + * libxl_domain_build_info that signals whether an HVM guest has accesse=
s to
> + * the XENFEAT_hvm_pirqs feature.
> + */
> +#define LIBXL_HAVE_HVM_PIRQ 1
> +
>  /*
>   * libxl memory management
>   *
> diff --git a/tools/libs/light/libxl_create.c b/tools/libs/light/libxl_cre=
ate.c
> index ce1d43110336..0008fac607e3 100644
> --- a/tools/libs/light/libxl_create.c
> +++ b/tools/libs/light/libxl_create.c
> @@ -376,6 +376,7 @@ int libxl__domain_build_info_setdefault(libxl__gc *gc,
>          libxl_defbool_setdefault(&b_info->u.hvm.usb,                fals=
e);
>          libxl_defbool_setdefault(&b_info->u.hvm.vkb_device,         true=
);
>          libxl_defbool_setdefault(&b_info->u.hvm.xen_platform_pci,   true=
);
> +        libxl_defbool_setdefault(&b_info->u.hvm.pirq,               fals=
e);
> =20
>          libxl_defbool_setdefault(&b_info->u.hvm.spice.enable, false);
>          if (!libxl_defbool_val(b_info->u.hvm.spice.enable) &&
> @@ -2375,10 +2376,12 @@ int libxl_domain_create_restore(libxl_ctx *ctx, l=
ibxl_domain_config *d_config,
> =20
>      /*
>       * When restoring (either from a save file or for a migration domain=
) set
> -     * the MSR relaxed mode for compatibility with older Xen versions if=
 the
> -     * option is not set as part of the original configuration.
> +     * the MSR relaxed mode and HVM PIRQs for compatibility with older X=
en
> +     * versions if the options are not set as part of the original
> +     * configuration.
>       */
>      libxl_defbool_setdefault(&d_config->b_info.arch_x86.msr_relaxed, tru=
e);
> +    libxl_defbool_setdefault(&d_config->b_info.u.hvm.pirq, true);
> =20
>      return do_domain_create(ctx, d_config, domid, restore_fd, send_back_=
fd,
>                              params, ao_how, aop_console_how);
> diff --git a/tools/libs/light/libxl_types.idl b/tools/libs/light/libxl_ty=
pes.idl
> index 7d8bd5d21667..899ad3096926 100644
> --- a/tools/libs/light/libxl_types.idl
> +++ b/tools/libs/light/libxl_types.idl
> @@ -692,6 +692,7 @@ libxl_domain_build_info =3D Struct("domain_build_info=
",[
>                                         ("rdm", libxl_rdm_reserve),
>                                         ("rdm_mem_boundary_memkb", MemKB),
>                                         ("mca_caps",         uint64),
> +                                       ("pirq",             libxl_defboo=
l),
>                                         ])),
>                   ("pv", Struct(None, [("kernel", string, {'deprecated_by=
': 'kernel'}),
>                                        ("slack_memkb", MemKB),
> diff --git a/tools/libs/light/libxl_x86.c b/tools/libs/light/libxl_x86.c
> index d16573e72cd4..a50ec37eb3eb 100644
> --- a/tools/libs/light/libxl_x86.c
> +++ b/tools/libs/light/libxl_x86.c
> @@ -9,6 +9,8 @@ int libxl__arch_domain_prepare_config(libxl__gc *gc,
>      switch(d_config->c_info.type) {
>      case LIBXL_DOMAIN_TYPE_HVM:
>          config->arch.emulation_flags =3D (XEN_X86_EMU_ALL & ~XEN_X86_EMU=
_VPCI);
> +        if (!libxl_defbool_val(d_config->b_info.u.hvm.pirq))
> +            config->arch.emulation_flags &=3D ~XEN_X86_EMU_USE_PIRQ;
>          break;
>      case LIBXL_DOMAIN_TYPE_PVH:
>          config->arch.emulation_flags =3D XEN_X86_EMU_LAPIC;
> @@ -864,15 +866,19 @@ void libxl__arch_update_domain_config(libxl__gc *gc,
>                                        const libxl_domain_config *src)
>  {
>      /*
> -     * Force MSR relaxed to be set (either to true or false) so it's par=
t of
> -     * the domain configuration when saving or performing a live-migrati=
on.
> +     * Force MSR relaxed and HVM pirq to be set (either to true or false=
) so
> +     * it's part of the domain configuration when saving or performing a
> +     * live-migration.
>       *
> -     * Doing so allows the recovery side to figure out whether the flag =
should
> +     * Doing so allows the recovery side to figure out whether the flags=
 should
>       * be set to true in order to keep backwards compatibility with alre=
ady
>       * started domains.
>       */
>      libxl_defbool_setdefault(&dst->b_info.arch_x86.msr_relaxed,
>                      libxl_defbool_val(src->b_info.arch_x86.msr_relaxed));
> +    if (src->c_info.type =3D=3D LIBXL_DOMAIN_TYPE_HVM )
> +        libxl_defbool_setdefault(&dst->b_info.u.hvm.pirq,
> +                                 libxl_defbool_val(src->b_info.u.hvm.pir=
q));
>  }
> =20
>  /*
> diff --git a/tools/python/xen/lowlevel/xc/xc.c b/tools/python/xen/lowleve=
l/xc/xc.c
> index d3ea350e07b9..9feb12ae2b16 100644
> --- a/tools/python/xen/lowlevel/xc/xc.c
> +++ b/tools/python/xen/lowlevel/xc/xc.c
> @@ -159,7 +159,9 @@ static PyObject *pyxc_domain_create(XcObject *self,
> =20
>  #if defined (__i386) || defined(__x86_64__)
>      if ( config.flags & XEN_DOMCTL_CDF_hvm )
> -        config.arch.emulation_flags =3D (XEN_X86_EMU_ALL & ~XEN_X86_EMU_=
VPCI);
> +        config.arch.emulation_flags =3D XEN_X86_EMU_ALL &
> +                                      ~(XEN_X86_EMU_VPCI |
> +                                        XEN_X86_EMU_USE_PIRQ);
>  #elif defined (__arm__) || defined(__aarch64__)
>      config.arch.gic_version =3D XEN_DOMCTL_CONFIG_GIC_NATIVE;
>  #else
> diff --git a/tools/xl/xl_parse.c b/tools/xl/xl_parse.c
> index ed983200c3f8..9b358f11b88e 100644
> --- a/tools/xl/xl_parse.c
> +++ b/tools/xl/xl_parse.c
> @@ -1801,6 +1801,7 @@ void parse_config_data(const char *config_source,
>          xlu_cfg_get_defbool(config, "hpet", &b_info->u.hvm.hpet, 0);
>          xlu_cfg_get_defbool(config, "vpt_align", &b_info->u.hvm.vpt_alig=
n, 0);
>          xlu_cfg_get_defbool(config, "apic", &b_info->apic, 0);
> +        xlu_cfg_get_defbool(config, "hvm_pirq", &b_info->u.hvm.pirq, 0);
> =20
>          switch (xlu_cfg_get_list(config, "viridian",
>                                   &viridian, &num_viridian, 1))
> --=20
> 2.43.0
>=20

--=20
Best Regards,
Marek Marczykowski-G=C3=B3recki
Invisible Things Lab

--lGKABZGVWp7Eqo+G
Content-Type: application/pgp-signature; name="signature.asc"

-----BEGIN PGP SIGNATURE-----

iQEzBAEBCAAdFiEEhrpukzGPukRmQqkK24/THMrX1ywFAmWySl8ACgkQ24/THMrX
1yyCFAgAgGpCrDbCfCCogdFT7JrlnK71yfCddZ5P2A+dFbJhYj8Lmf5YAkTfPSAz
leycGeus/xoQyDNJh4sFPqwQOPzzNa29xC75xGM/NKeh9w3YLe6OWPwxj+7XNO7Q
+WKXcyVBXmnartIUKME9yja2nv5KQN+9DhE+JrB94iiHqydZ+Y09MEbboQIu6Ljb
KZP2inphZxrSx/d0JbvMJ/rGFzvO4ujFCHH9jz7e6uCbxlTxwD0n9oji7G/rLNvc
Q4Rc5n8BMhhK6S9RNL7sZiy79Hupe+xzJW5YbWF0arLHro7McJBJ4uI4riX9rsrY
wvSr54e2AhST4DdAuhACdJAg3kI7/g==
=OYsb
-----END PGP SIGNATURE-----

--lGKABZGVWp7Eqo+G--


From xen-devel-bounces@lists.xenproject.org Thu Jan 25 12:10:48 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 25 Jan 2024 12:10:48 +0000
Received: from list by lists.xenproject.org with outflank-mailman.671482.1044830 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSyZ8-0005mW-Ky; Thu, 25 Jan 2024 12:10:42 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 671482.1044830; Thu, 25 Jan 2024 12:10:42 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSyZ8-0005mP-IB; Thu, 25 Jan 2024 12:10:42 +0000
Received: by outflank-mailman (input) for mailman id 671482;
 Thu, 25 Jan 2024 12:10:40 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=+DBC=JD=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1rSyZ6-0005mJ-JB
 for xen-devel@lists.xenproject.org; Thu, 25 Jan 2024 12:10:40 +0000
Received: from mail-wm1-x335.google.com (mail-wm1-x335.google.com
 [2a00:1450:4864:20::335])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id c029e8dc-bb7a-11ee-9b0f-b553b5be7939;
 Thu, 25 Jan 2024 13:10:38 +0100 (CET)
Received: by mail-wm1-x335.google.com with SMTP id
 5b1f17b1804b1-40ed2333c8fso4968165e9.0
 for <xen-devel@lists.xenproject.org>; Thu, 25 Jan 2024 04:10:38 -0800 (PST)
Received: from [10.80.67.30] (default-46-102-197-194.interdsl.co.uk.
 [46.102.197.194]) by smtp.gmail.com with ESMTPSA id
 n14-20020a05600c3b8e00b0040d8d11bf63sm2355887wms.41.2024.01.25.04.10.37
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 25 Jan 2024 04:10:37 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: c029e8dc-bb7a-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1706184637; x=1706789437; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=/ACXtgyXgsGJ/p1CWim1rfSJpU/5WKbgM6SYN9qYZKc=;
        b=mXK7sa9aLOqtKhb7tXLxF5RuMKML2UEqrE8ua5/tlsiNE4vEp9K0dCS/2PRzlzjlhC
         /yCGzTqMB9aftmusPhTZVHL84sn9PesMxJ0yTYybX5l4xtTC5a4u1vDg+RDjVgVfuC6f
         P01BX/Ve01jDR+Iuvn0dHEBVTxffS5fjwJNXM=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706184637; x=1706789437;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=/ACXtgyXgsGJ/p1CWim1rfSJpU/5WKbgM6SYN9qYZKc=;
        b=ZN2e3riQh2vUWUcp/O774XeaqmtTWAU4oS8Ysc0cl9z35myfvajTSIcrEKGJEN6eK2
         gbYKXtGRzCvcD/Nxu14al6Z8Q0J5U46lxqiz5MSNm8GXKls4w6uSjR2w6kWOSAZStZxN
         kf4CKFv/jYnB/r4qwHpBUzlhcQTBzo/PETzHYWM9O9YtPzRwoUCF1QmToEdslI3ELYLw
         +2ZtncHoz3etQfBklyKcZW1UP4/9qdHbzPSCb9o0izgkO6+WC59XutRRcLKeeqLgsp4W
         SoCANCEpLd4AxIC5SeKXslkayV/7cxaoiqusVQ4I6TrTyvFSU7Oi7ynkcqtW++I5jA9a
         ZC+A==
X-Gm-Message-State: AOJu0YyR7OFfSUNfk2E0Nyz8q5SbU1MmWYbVceFy9/VzRg6+sH47tqEX
	00L3HtqmJVwYqM0ndpgjpAuiqiCyU3UcPMmh2svfK/mmmtMR3pcd4pHpgfWZDAU=
X-Google-Smtp-Source: AGHT+IHcoJ1yuRYymi+9wfHIDBGmTAxmhhF42wa/jc83O/opanGz00CfDjwlln3Kv/GJhlug6T0g0w==
X-Received: by 2002:a05:600c:56c5:b0:40e:4d65:59c7 with SMTP id ju5-20020a05600c56c500b0040e4d6559c7mr524855wmb.244.1706184637507;
        Thu, 25 Jan 2024 04:10:37 -0800 (PST)
Message-ID: <1b109fd8-2a23-4ee8-88a4-e3bf48d2f4c5@citrix.com>
Date: Thu, 25 Jan 2024 12:10:36 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] consolidate do_bug_frame() / bug_fn_t
Content-Language: en-GB
To: Jan Beulich <jbeulich@suse.com>
Cc: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>,
 Federico Serafini <federico.serafini@bugseng.com>,
 George Dunlap <george.dunlap@citrix.com>, Julien Grall <julien@xen.org>,
 Wei Liu <wl@xen.org>, Bertrand Marquis <bertrand.marquis@arm.com>,
 Michal Orzel <michal.orzel@amd.com>,
 Stefano Stabellini <sstabellini@kernel.org>
References: <d466eb44-1160-4b57-a41f-752dbf626748@suse.com>
 <alpine.DEB.2.22.394.2401231731570.2287888@ubuntu-linux-20-04-desktop>
 <665b7ea9-77d9-4bbc-a67c-1ac0d9ba908a@suse.com>
 <37afd0b1-a6b3-41aa-8338-c99b68592c92@citrix.com>
 <b19ef7de-b55c-4a70-8b64-d0d4d5a96d93@suse.com>
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 xsFNBFLhNn8BEADVhE+Hb8i0GV6mihnnr/uiQQdPF8kUoFzCOPXkf7jQ5sLYeJa0cQi6Penp
 VtiFYznTairnVsN5J+ujSTIb+OlMSJUWV4opS7WVNnxHbFTPYZVQ3erv7NKc2iVizCRZ2Kxn
 srM1oPXWRic8BIAdYOKOloF2300SL/bIpeD+x7h3w9B/qez7nOin5NzkxgFoaUeIal12pXSR
 Q354FKFoy6Vh96gc4VRqte3jw8mPuJQpfws+Pb+swvSf/i1q1+1I4jsRQQh2m6OTADHIqg2E
 ofTYAEh7R5HfPx0EXoEDMdRjOeKn8+vvkAwhviWXTHlG3R1QkbE5M/oywnZ83udJmi+lxjJ5
 YhQ5IzomvJ16H0Bq+TLyVLO/VRksp1VR9HxCzItLNCS8PdpYYz5TC204ViycobYU65WMpzWe
 LFAGn8jSS25XIpqv0Y9k87dLbctKKA14Ifw2kq5OIVu2FuX+3i446JOa2vpCI9GcjCzi3oHV
 e00bzYiHMIl0FICrNJU0Kjho8pdo0m2uxkn6SYEpogAy9pnatUlO+erL4LqFUO7GXSdBRbw5
 gNt25XTLdSFuZtMxkY3tq8MFss5QnjhehCVPEpE6y9ZjI4XB8ad1G4oBHVGK5LMsvg22PfMJ
 ISWFSHoF/B5+lHkCKWkFxZ0gZn33ju5n6/FOdEx4B8cMJt+cWwARAQABzSlBbmRyZXcgQ29v
 cGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPsLBegQTAQgAJAIbAwULCQgHAwUVCgkI
 CwUWAgMBAAIeAQIXgAUCWKD95wIZAQAKCRBlw/kGpdefoHbdD/9AIoR3k6fKl+RFiFpyAhvO
 59ttDFI7nIAnlYngev2XUR3acFElJATHSDO0ju+hqWqAb8kVijXLops0gOfqt3VPZq9cuHlh
 IMDquatGLzAadfFx2eQYIYT+FYuMoPZy/aTUazmJIDVxP7L383grjIkn+7tAv+qeDfE+txL4
 SAm1UHNvmdfgL2/lcmL3xRh7sub3nJilM93RWX1Pe5LBSDXO45uzCGEdst6uSlzYR/MEr+5Z
 JQQ32JV64zwvf/aKaagSQSQMYNX9JFgfZ3TKWC1KJQbX5ssoX/5hNLqxMcZV3TN7kU8I3kjK
 mPec9+1nECOjjJSO/h4P0sBZyIUGfguwzhEeGf4sMCuSEM4xjCnwiBwftR17sr0spYcOpqET
 ZGcAmyYcNjy6CYadNCnfR40vhhWuCfNCBzWnUW0lFoo12wb0YnzoOLjvfD6OL3JjIUJNOmJy
 RCsJ5IA/Iz33RhSVRmROu+TztwuThClw63g7+hoyewv7BemKyuU6FTVhjjW+XUWmS/FzknSi
 dAG+insr0746cTPpSkGl3KAXeWDGJzve7/SBBfyznWCMGaf8E2P1oOdIZRxHgWj0zNr1+ooF
 /PzgLPiCI4OMUttTlEKChgbUTQ+5o0P080JojqfXwbPAyumbaYcQNiH1/xYbJdOFSiBv9rpt
 TQTBLzDKXok86M7BTQRS4TZ/ARAAkgqudHsp+hd82UVkvgnlqZjzz2vyrYfz7bkPtXaGb9H4
 Rfo7mQsEQavEBdWWjbga6eMnDqtu+FC+qeTGYebToxEyp2lKDSoAsvt8w82tIlP/EbmRbDVn
 7bhjBlfRcFjVYw8uVDPptT0TV47vpoCVkTwcyb6OltJrvg/QzV9f07DJswuda1JH3/qvYu0p
 vjPnYvCq4NsqY2XSdAJ02HrdYPFtNyPEntu1n1KK+gJrstjtw7KsZ4ygXYrsm/oCBiVW/OgU
 g/XIlGErkrxe4vQvJyVwg6YH653YTX5hLLUEL1NS4TCo47RP+wi6y+TnuAL36UtK/uFyEuPy
 wwrDVcC4cIFhYSfsO0BumEI65yu7a8aHbGfq2lW251UcoU48Z27ZUUZd2Dr6O/n8poQHbaTd
 6bJJSjzGGHZVbRP9UQ3lkmkmc0+XCHmj5WhwNNYjgbbmML7y0fsJT5RgvefAIFfHBg7fTY/i
 kBEimoUsTEQz+N4hbKwo1hULfVxDJStE4sbPhjbsPCrlXf6W9CxSyQ0qmZ2bXsLQYRj2xqd1
 bpA+1o1j2N4/au1R/uSiUFjewJdT/LX1EklKDcQwpk06Af/N7VZtSfEJeRV04unbsKVXWZAk
 uAJyDDKN99ziC0Wz5kcPyVD1HNf8bgaqGDzrv3TfYjwqayRFcMf7xJaL9xXedMcAEQEAAcLB
 XwQYAQgACQUCUuE2fwIbDAAKCRBlw/kGpdefoG4XEACD1Qf/er8EA7g23HMxYWd3FXHThrVQ
 HgiGdk5Yh632vjOm9L4sd/GCEACVQKjsu98e8o3ysitFlznEns5EAAXEbITrgKWXDDUWGYxd
 pnjj2u+GkVdsOAGk0kxczX6s+VRBhpbBI2PWnOsRJgU2n10PZ3mZD4Xu9kU2IXYmuW+e5KCA
 vTArRUdCrAtIa1k01sPipPPw6dfxx2e5asy21YOytzxuWFfJTGnVxZZSCyLUO83sh6OZhJkk
 b9rxL9wPmpN/t2IPaEKoAc0FTQZS36wAMOXkBh24PQ9gaLJvfPKpNzGD8XWR5HHF0NLIJhgg
 4ZlEXQ2fVp3XrtocHqhu4UZR4koCijgB8sB7Tb0GCpwK+C4UePdFLfhKyRdSXuvY3AHJd4CP
 4JzW0Bzq/WXY3XMOzUTYApGQpnUpdOmuQSfpV9MQO+/jo7r6yPbxT7CwRS5dcQPzUiuHLK9i
 nvjREdh84qycnx0/6dDroYhp0DFv4udxuAvt1h4wGwTPRQZerSm4xaYegEFusyhbZrI0U9tJ
 B8WrhBLXDiYlyJT6zOV2yZFuW47VrLsjYnHwn27hmxTC/7tvG3euCklmkn9Sl9IAKFu29RSo
 d5bD8kMSCYsTqtTfT6W4A3qHGvIDta3ptLYpIAOD2sY3GYq2nf3Bbzx81wZK14JdDDHUX2Rs
 6+ahAA==
In-Reply-To: <b19ef7de-b55c-4a70-8b64-d0d4d5a96d93@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Answering out of order:

On 25/01/2024 8:15 am, Jan Beulich wrote:
> All fine. Still I wonder whether in the meantime this patch isn't an
> improvement on its own, and hence whether the const couldn't sensibly
> be added subsequently.

We have a while until 4.19 goes out.  I would prefer to try and get this
untangled properly, because half of your patch is in the opposite
direction for getting the const-ness working.

If we start to hit rc1 and the const-ness isn't complete, we can revisit.


Regarding the removal of gdb-stub.  I'd like to get that done, and
rebase the remainder of the IRQ series over it, because it will reduce
the churn in your IRQ series.  I'm happy to do the rebase if you want.


> On 25.01.2024 02:14, Andrew Cooper wrote:
>> To make the serial code compile, I ended up having to revert patch 2 of
>> the regs series, which I believe is safe to do following patch 3-5 which
>> un-plumb the regs pointer deeper in the call chain.  If this is turns
>> out to be true, then the patch ought to be added and reverted in the
>> same series so it isn't left hanging about after the fact.
> Hmm, I'm not sure I see how reverting that would end up working. However,
> aiui you need to revert primarily for the non-const-ness of the pointers
> involved in [gs]et_irq_regs(). I wonder whether, if we followed your
> underlying thought here, those shouldn't be const-ified then anyway.
>
>> The _$X_poll() functions are used in timer context, which means there's
>> an outer regs context already latched, and that's arguably a better
>> context to use anyway for 'd'.
> If the timer happens to run on an idle vCPU, what "outer regs context"
> would we have there?

The only reason the serial infrastructure was setting up a fake IRQ
context was because it was using run_in_exception_handler().

But I (think I have) removed that fully (and it simplifies things more
than I was hoping).

With '%' deleted, it's only 'd' that cares, isn't it?  And that's "dump
the current regs", rather than wanting something else.

~Andrew


From xen-devel-bounces@lists.xenproject.org Thu Jan 25 12:33:14 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 25 Jan 2024 12:33:14 +0000
Received: from list by lists.xenproject.org with outflank-mailman.671489.1044840 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSyuq-0001GP-Am; Thu, 25 Jan 2024 12:33:08 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 671489.1044840; Thu, 25 Jan 2024 12:33:08 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSyuq-0001GI-83; Thu, 25 Jan 2024 12:33:08 +0000
Received: by outflank-mailman (input) for mailman id 671489;
 Thu, 25 Jan 2024 12:33:06 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=etx6=JD=cloud.com=roger.pau@srs-se1.protection.inumbo.net>)
 id 1rSyuo-0001GC-Jc
 for xen-devel@lists.xenproject.org; Thu, 25 Jan 2024 12:33:06 +0000
Received: from mail-wr1-x42b.google.com (mail-wr1-x42b.google.com
 [2a00:1450:4864:20::42b])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id e135b7ca-bb7d-11ee-9b0f-b553b5be7939;
 Thu, 25 Jan 2024 13:33:02 +0100 (CET)
Received: by mail-wr1-x42b.google.com with SMTP id
 ffacd0b85a97d-3394dc75eadso1198182f8f.2
 for <xen-devel@lists.xenproject.org>; Thu, 25 Jan 2024 04:33:02 -0800 (PST)
Received: from localhost ([213.195.118.74]) by smtp.gmail.com with ESMTPSA id
 s16-20020a5d5110000000b0033763a9ea2dsm11685172wrt.63.2024.01.25.04.33.00
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 25 Jan 2024 04:33:01 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: e135b7ca-bb7d-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1706185981; x=1706790781; darn=lists.xenproject.org;
        h=in-reply-to:content-transfer-encoding:content-disposition
         :mime-version:references:message-id:subject:cc:to:from:date:from:to
         :cc:subject:date:message-id:reply-to;
        bh=CHk2G2HmpWq0QnWFnsfk19qLU5bHn4G+1OQlTmFZkQQ=;
        b=PiFyOqFNGZC4/63PymwJImcPPSFg33epyekNVdsWxsuq1YfW9y9b7Z63sFPUup8UVv
         oLL0S1fM748G03h6/hjY5+/JvPch7O1vuYdvw+56x3uYdg0wsIB/vpWsTrGi2Xxo3chL
         6fHBg/F6cBvPd5bPypYo8rHrdjcw9AKH1XWOM=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706185981; x=1706790781;
        h=in-reply-to:content-transfer-encoding:content-disposition
         :mime-version:references:message-id:subject:cc:to:from:date
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=CHk2G2HmpWq0QnWFnsfk19qLU5bHn4G+1OQlTmFZkQQ=;
        b=f05oSz+XcGEnlGpwgThIUHBXIB3P1pO7LIy9ctKy81vIjaRQxnH/y0vSnFppjJzJS9
         Cf7//S/vIpMYODvQItDdAhN0WgtUduCGQPWJFB1+aj6WaKf0O2Z9mNQJuoUBm4KvaXvs
         4ecjaXiEsHOXVnKCb3yuSqwd0gaOsVJEWwvC90WJMmZD1VVLk4AAChkPbqKZXSzctTav
         pfagan4swAb5nkpyWvshiDgPMswx+GYJc+NF9lHx9Hhq2dXsvJ1lNnEY0BsrXlMFkTr3
         EudFJESa+UGhzI899r+dWezyxndJwU5KH+3UoUFbnpVeLIG2gs9Uq0rIpxudt7qo0qJq
         +eKQ==
X-Gm-Message-State: AOJu0YxsFIiSCrZUhrkUpqgaVNxLn/4b3j9JzK7GtEK6xtKI0yuP5ooR
	tLTMvzM+C4/zNgjyT75MGE21BNIjj/euXy43aKebCxg1ccaAfki3pWNN1ubnwZE=
X-Google-Smtp-Source: AGHT+IGKPFJL+BAEAkhOjrbfNreMCisrMsZRZtazP8rkkl8Oairdambp4ggHgfG9TNDmVuc+nWc31Q==
X-Received: by 2002:a5d:55c4:0:b0:337:cdc1:b52d with SMTP id i4-20020a5d55c4000000b00337cdc1b52dmr482700wrw.65.1706185981388;
        Thu, 25 Jan 2024 04:33:01 -0800 (PST)
Date: Thu, 25 Jan 2024 13:33:00 +0100
From: Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
To: Jan Beulich <jbeulich@suse.com>
Cc: Stewart Hildebrand <stewart.hildebrand@amd.com>,
	Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>, Wei Liu <wl@xen.org>,
	George Dunlap <george.dunlap@citrix.com>,
	Julien Grall <julien@xen.org>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Jun Nakajima <jun.nakajima@intel.com>,
	Kevin Tian <kevin.tian@intel.com>, Paul Durrant <paul@xen.org>,
	Volodymyr Babchuk <volodymyr_babchuk@epam.com>,
	xen-devel@lists.xenproject.org
Subject: Re: [PATCH v12.2 01/15] vpci: use per-domain PCI lock to protect
 vpci structure
Message-ID: <ZbJU_PuYo9EEzyac@macbook>
References: <20240115194309.45683-1-stewart.hildebrand@amd.com>
 <715e40c9-1776-4677-9565-dac1565a2aa8@suse.com>
 <Za_WGzS14Eqt8yZF@macbook>
 <ae7a57f2-2433-4b75-ab45-c8be55d489c9@suse.com>
 <ZbDXXyucJhLJ4u9H@macbook>
 <a3233487-965b-49ae-bebe-e5476fcda29c@suse.com>
 <ZbFOE6kV7NXFrNjb@macbook>
 <fa7df700-06f1-4110-bc76-c59d59e5d887@suse.com>
 <ZbIkVcYkcuT2iF8e@macbook>
 <247df339-e631-4c50-85e4-b6a486235564@suse.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <247df339-e631-4c50-85e4-b6a486235564@suse.com>

On Thu, Jan 25, 2024 at 12:23:05PM +0100, Jan Beulich wrote:
> On 25.01.2024 10:05, Roger Pau Monné wrote:
> > On Thu, Jan 25, 2024 at 08:43:05AM +0100, Jan Beulich wrote:
> >> On 24.01.2024 18:51, Roger Pau Monné wrote:
> >>> On Wed, Jan 24, 2024 at 12:34:10PM +0100, Jan Beulich wrote:
> >>>> On 24.01.2024 10:24, Roger Pau Monné wrote:
> >>>>> On Wed, Jan 24, 2024 at 09:48:35AM +0100, Jan Beulich wrote:
> >>>>>> On 23.01.2024 16:07, Roger Pau Monné wrote:
> >>>>>>> On Tue, Jan 23, 2024 at 03:32:12PM +0100, Jan Beulich wrote:
> >>>>>>>> On 15.01.2024 20:43, Stewart Hildebrand wrote:
> >>>>>>>>> @@ -2888,6 +2888,8 @@ int allocate_and_map_msi_pirq(struct domain *d, int index, int *pirq_p,
> >>>>>>>>>  {
> >>>>>>>>>      int irq, pirq, ret;
> >>>>>>>>>  
> >>>>>>>>> +    ASSERT(pcidevs_locked() || rw_is_locked(&d->pci_lock));
> >>>>>>>>
> >>>>>>>> If either lock is sufficient to hold here, ...
> >>>>>>>>
> >>>>>>>>> --- a/xen/arch/x86/physdev.c
> >>>>>>>>> +++ b/xen/arch/x86/physdev.c
> >>>>>>>>> @@ -123,7 +123,9 @@ int physdev_map_pirq(domid_t domid, int type, int *index, int *pirq_p,
> >>>>>>>>>  
> >>>>>>>>>      case MAP_PIRQ_TYPE_MSI:
> >>>>>>>>>      case MAP_PIRQ_TYPE_MULTI_MSI:
> >>>>>>>>> +        pcidevs_lock();
> >>>>>>>>>          ret = allocate_and_map_msi_pirq(d, *index, pirq_p, type, msi);
> >>>>>>>>> +        pcidevs_unlock();
> >>>>>>>>>          break;
> >>>>>>>>
> >>>>>>>
> >>>>>>> IIRC (Stewart can further comment) this is done holding the pcidevs
> >>>>>>> lock to keep the path unmodified, as there's no need to hold the
> >>>>>>> per-domain rwlock.
> >>>>>>
> >>>>>> Yet why would we prefer to acquire a global lock when a per-domain one
> >>>>>> suffices?
> >>>>>
> >>>>> I was hoping to introduce less changes, specially if they are not
> >>>>> strictly required, as it's less risk.  I'm always quite worry of
> >>>>> locking changes.
> >>>>
> >>>> In which case more description / code commenting is needed. The pattern
> >>>> of the assertions looks dangerous.
> >>>
> >>> Is such dangerousness perception because you fear some of the pcidevs
> >>> lock usage might be there not just for preventing the pdev from going
> >>> away, but also to guarantee exclusive access to certain state?
> >>
> >> Indeed. In my view the main purpose of locks is to guard state. Their
> >> use here to guard against devices here is imo rather an abuse; as
> >> mentioned before this should instead be achieved e.g via refcounting.
> >> And it's bad enough already that pcidevs_lock() alone has been abused
> >> this way, without proper marking (leaving us to guess in many places).
> >> It gets worse when a second lock can now also serve this same
> >> purpose.
> > 
> > The new lock is taken in read mode in most contexts, and hence can't
> > be used to indirectly gain exclusive access to domain related
> > structures in a safe way.
> 
> Oh, right - I keep being misled by rw_is_locked(). This is a fair
> argument. Irrespective it would feel better to me if an abstraction
> construct was introduced; but seeing you don't like the idea I guess
> I won't insist.

TBH I'm not going to argue against it if you and Stewart think it's
clearer, but I also won't request the addition of such wrapper myself.

Thanks, Roger.


From xen-devel-bounces@lists.xenproject.org Thu Jan 25 12:37:52 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 25 Jan 2024 12:37:52 +0000
Received: from list by lists.xenproject.org with outflank-mailman.671494.1044851 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSyzI-0001sq-Rs; Thu, 25 Jan 2024 12:37:44 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 671494.1044851; Thu, 25 Jan 2024 12:37:44 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSyzI-0001sj-P8; Thu, 25 Jan 2024 12:37:44 +0000
Received: by outflank-mailman (input) for mailman id 671494;
 Thu, 25 Jan 2024 12:37:43 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=etx6=JD=cloud.com=roger.pau@srs-se1.protection.inumbo.net>)
 id 1rSyzH-0001sd-IX
 for xen-devel@lists.xenproject.org; Thu, 25 Jan 2024 12:37:43 +0000
Received: from mail-wm1-x32a.google.com (mail-wm1-x32a.google.com
 [2a00:1450:4864:20::32a])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 87e43c91-bb7e-11ee-9b0f-b553b5be7939;
 Thu, 25 Jan 2024 13:37:41 +0100 (CET)
Received: by mail-wm1-x32a.google.com with SMTP id
 5b1f17b1804b1-40e60e137aaso72974185e9.0
 for <xen-devel@lists.xenproject.org>; Thu, 25 Jan 2024 04:37:41 -0800 (PST)
Received: from localhost ([213.195.118.74]) by smtp.gmail.com with ESMTPSA id
 p13-20020a05600c468d00b0040eaebc4e8fsm2511170wmo.1.2024.01.25.04.37.40
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 25 Jan 2024 04:37:40 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 87e43c91-bb7e-11ee-9b0f-b553b5be7939
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1706186261; x=1706791061; darn=lists.xenproject.org;
        h=in-reply-to:content-transfer-encoding:content-disposition
         :mime-version:references:message-id:subject:cc:to:from:date:from:to
         :cc:subject:date:message-id:reply-to;
        bh=luCEpTxw4XQv55unlWcwjxK8MY6VPEoYnYmGzG9GLF0=;
        b=FXfCsPos0/dijwXzth9gKUi0nIUWOv3Vnwla18gzLqMT0mfNVfZqsfI6QCDSA1r25v
         VzP53Or/XtJyraa1B5OwmClHceprB94xvh4XvGeqPOdmYHdY/ytSFhFCZnhtSnEvzjSC
         9va5LaczKoZYJrViPol8n/mI6GOSVTjmoq4Pg=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706186261; x=1706791061;
        h=in-reply-to:content-transfer-encoding:content-disposition
         :mime-version:references:message-id:subject:cc:to:from:date
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=luCEpTxw4XQv55unlWcwjxK8MY6VPEoYnYmGzG9GLF0=;
        b=sd0R2kL/b+k4KBokTbiLhTFZBJ+n+SW+PSbUx7yDqh8pBqMjlSp5smC54fN/AEz5Nm
         Af2yjPvUegQ5Xw+95x4c5d9P7pQxg0zFwU5nWxcDEC4ML44i+E8e7VqFTJYOQTja0mvW
         6Uw/svJeTn8ZgrNmsCE5ZpbYiuWG7yP61oJkPgaDI1kZmnK0GfRFnUWdF5Q103SKdV6W
         3SNap22ovDW3XiFvo/wGvBobYC4r6GL8f2q3Whjb2xG+1iHl3VBsumekgypFulJ+Bi8p
         KQWbPxWa6Sw9SD88bEg1KAQB9ploIHvVjoegoYfT2uYf+LBUS8bnLvcv3mzcnzEbECUv
         20VQ==
X-Gm-Message-State: AOJu0YwGrP7C/hYcrHwfVqweRI2o51tU/1AkYjU341aqYuwEHTPiaXqR
	i1fYGNZmA5FKHx1sFOx0Shz0DThycOs3lV5PcLubnn6o2wrvoPNZmXkAvZuNpdc=
X-Google-Smtp-Source: AGHT+IHR9kr7BpN1LT7qZinY6LGjXvtKIW2EQOGa6pFcVpg09zC9v4b1K9/owk/0BCwPwfLFaLDZ/A==
X-Received: by 2002:a7b:c389:0:b0:40e:52ca:3043 with SMTP id s9-20020a7bc389000000b0040e52ca3043mr318709wmj.131.1706186261047;
        Thu, 25 Jan 2024 04:37:41 -0800 (PST)
Date: Thu, 25 Jan 2024 13:37:39 +0100
From: Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
To: Jan Beulich <jbeulich@suse.com>
Cc: Paul Durrant <paul@xen.org>, Andrew Cooper <andrew.cooper3@citrix.com>,
	Wei Liu <wl@xen.org>, xen-devel@lists.xenproject.org
Subject: Re: [PATCH v5 1/3] x86/iommu: remove regions not to be mapped
Message-ID: <ZbJWE2HhCo_IHBpF@macbook>
References: <20240124172953.29814-1-roger.pau@citrix.com>
 <20240124172953.29814-2-roger.pau@citrix.com>
 <ad178469-15c3-4ae5-8538-e927f1116a42@suse.com>
 <ZbIgE8exXDVicN8D@macbook>
 <ed221b62-0151-45ce-a88d-d7e2a9946136@suse.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <ed221b62-0151-45ce-a88d-d7e2a9946136@suse.com>

On Thu, Jan 25, 2024 at 12:13:01PM +0100, Jan Beulich wrote:
> On 25.01.2024 09:47, Roger Pau Monné wrote:
> > On Thu, Jan 25, 2024 at 09:34:40AM +0100, Jan Beulich wrote:
> >> On 24.01.2024 18:29, Roger Pau Monne wrote:
> >>> --- a/xen/arch/x86/hvm/io.c
> >>> +++ b/xen/arch/x86/hvm/io.c
> >>> @@ -369,6 +369,22 @@ bool vpci_is_mmcfg_address(const struct domain *d, paddr_t addr)
> >>>      return vpci_mmcfg_find(d, addr);
> >>>  }
> >>>  
> >>> +int __hwdom_init vpci_subtract_mmcfg(const struct domain *d, struct rangeset *r)
> >>> +{
> >>> +    const struct hvm_mmcfg *mmcfg;
> >>> +
> >>> +    list_for_each_entry ( mmcfg, &d->arch.hvm.mmcfg_regions, next )
> >>> +    {
> >>> +        int rc = rangeset_remove_range(r, PFN_DOWN(mmcfg->addr),
> >>> +                                       PFN_DOWN(mmcfg->addr + mmcfg->size - 1));
> >>
> >> Along the lines of this, ...
> >>
> >>> --- a/xen/arch/x86/setup.c
> >>> +++ b/xen/arch/x86/setup.c
> >>> @@ -2138,6 +2138,54 @@ int __hwdom_init xen_in_range(unsigned long mfn)
> >>>      return 0;
> >>>  }
> >>>  
> >>> +int __hwdom_init remove_xen_ranges(struct rangeset *r)
> >>> +{
> >>> +    paddr_t start, end;
> >>> +    int rc;
> >>> +
> >>> +    /* S3 resume code (and other real mode trampoline code) */
> >>> +    rc = rangeset_remove_range(r, PFN_DOWN(bootsym_phys(trampoline_start)),
> >>> +                               PFN_DOWN(bootsym_phys(trampoline_end)) - 1);
> >>
> >> ... did you perhaps mean
> >>
> >>                                PFN_DOWN(bootsym_phys(trampoline_end) - 1));
> >>
> >> here (and then similarly below, except there the difference is benign I
> >> think, for the labels being page-aligned)?
> > 
> > They are all page aligned, so I didn't care much,  but now that you
> > point it might be safer to do the subtraction from the address instead
> > of the frame number, just in case.
> 
> Hmm, no, for me neither trampoline_end nor trampoline_start are page
> aligned. While bootsym_phys(trampoline_start) is, I don't think
> bootsym_phys(trampoline_end) normally would be (it might only be by
> coincidence).

Oh, so it had been a coincidence of the build I was using I guess then.

Thanks, Roger.


From xen-devel-bounces@lists.xenproject.org Thu Jan 25 12:56:01 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 25 Jan 2024 12:56:01 +0000
Received: from list by lists.xenproject.org with outflank-mailman.671499.1044862 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSzGs-0005Zf-B3; Thu, 25 Jan 2024 12:55:54 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 671499.1044862; Thu, 25 Jan 2024 12:55:54 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSzGs-0005ZY-75; Thu, 25 Jan 2024 12:55:54 +0000
Received: by outflank-mailman (input) for mailman id 671499;
 Thu, 25 Jan 2024 12:55:53 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=+DBC=JD=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1rSzGq-0005ZS-Un
 for xen-devel@lists.xenproject.org; Thu, 25 Jan 2024 12:55:52 +0000
Received: from mail-wr1-x42e.google.com (mail-wr1-x42e.google.com
 [2a00:1450:4864:20::42e])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 1134ad1d-bb81-11ee-98f5-6d05b1d4d9a1;
 Thu, 25 Jan 2024 13:55:51 +0100 (CET)
Received: by mail-wr1-x42e.google.com with SMTP id
 ffacd0b85a97d-3394dc75eadso1213386f8f.2
 for <xen-devel@lists.xenproject.org>; Thu, 25 Jan 2024 04:55:52 -0800 (PST)
Received: from [10.80.67.30] (default-46-102-197-194.interdsl.co.uk.
 [46.102.197.194]) by smtp.gmail.com with ESMTPSA id
 c9-20020a5d4cc9000000b003392c3141a8sm2974823wrt.11.2024.01.25.04.55.50
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 25 Jan 2024 04:55:51 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 1134ad1d-bb81-11ee-98f5-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1706187351; x=1706792151; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=EiOQ4bIoTTWE3EGgPyHuCktXObE4gU3cQecs2oP7Nq8=;
        b=v8Uy9yNjkMaAn9lgl9CUPgpA6PZTaEdShesk0jYKDoLwj3bvb60aYdljkf9ds7JDHU
         hsZtSlJ6+jKP44SKfOqqcyo6uvu2U9c9cqtm3rRoegp3/LOPbGstbNGFn8y3vPpogVUx
         FOHEOnrGcE6aHUrzAY2eFJtvM2nca/ISjT4x0=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706187351; x=1706792151;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=EiOQ4bIoTTWE3EGgPyHuCktXObE4gU3cQecs2oP7Nq8=;
        b=qEYNQA4q60KVmLwt4WJmrLAJTGUYKmGF/u1Ha8eUbqpbu6e6MBwBJncUAkqb+8Y+FL
         wWBmM8taU3+rWXv63eAo5tpVBzZMTzO2qzKGdB4ZGbbyDYaxVXiI29fCfSP9Qn+oR/q8
         WTWFcnliJoVHVsxQcR25VJ59ltxfreHV5lEmGyHkk+kBqpc7cadMNUlgOrmlsoEtlqQJ
         5XaNauZoxNxMI8zx+VNXTPHBjyVwNBRFVZj1S2hAkuQKufkckgEp10N+iT214f17K8LD
         gY4uGF2I5mx4ssrylSyPIesRzCVOH8VEBFzGh9H8DkAL3+9grlm69vH3z5GayGZmluyy
         1Iqw==
X-Gm-Message-State: AOJu0Ywl56/WyAwVfoMAL8W7Ptj6Q/O3z50vUm4k78+fwVSd7ZeQabSc
	ejwthlm/JKwQgn4r7F6LZ9GK08GACjK4jw7k+4pDwt0rE82jkwWMhvRBjhWuZ2s=
X-Google-Smtp-Source: AGHT+IE7lLAvG/kNgdt/LRhuhDVnGFQb6k1Q5utQbYfPqnPsJ5FVmveSVwIBmC++6vo3BDaNuhw/8g==
X-Received: by 2002:adf:eaca:0:b0:337:bcdf:10a7 with SMTP id o10-20020adfeaca000000b00337bcdf10a7mr526480wrn.137.1706187351375;
        Thu, 25 Jan 2024 04:55:51 -0800 (PST)
Message-ID: <be2ccc2e-f311-4368-86b3-bdf5edd0c2b6@citrix.com>
Date: Thu, 25 Jan 2024 12:55:50 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v5 1/3] x86/iommu: remove regions not to be mapped
Content-Language: en-GB
To: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Jan Beulich <jbeulich@suse.com>
Cc: Paul Durrant <paul@xen.org>, Wei Liu <wl@xen.org>,
 xen-devel@lists.xenproject.org
References: <20240124172953.29814-1-roger.pau@citrix.com>
 <20240124172953.29814-2-roger.pau@citrix.com>
 <ad178469-15c3-4ae5-8538-e927f1116a42@suse.com> <ZbIgE8exXDVicN8D@macbook>
 <ed221b62-0151-45ce-a88d-d7e2a9946136@suse.com> <ZbJWE2HhCo_IHBpF@macbook>
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 xsFNBFLhNn8BEADVhE+Hb8i0GV6mihnnr/uiQQdPF8kUoFzCOPXkf7jQ5sLYeJa0cQi6Penp
 VtiFYznTairnVsN5J+ujSTIb+OlMSJUWV4opS7WVNnxHbFTPYZVQ3erv7NKc2iVizCRZ2Kxn
 srM1oPXWRic8BIAdYOKOloF2300SL/bIpeD+x7h3w9B/qez7nOin5NzkxgFoaUeIal12pXSR
 Q354FKFoy6Vh96gc4VRqte3jw8mPuJQpfws+Pb+swvSf/i1q1+1I4jsRQQh2m6OTADHIqg2E
 ofTYAEh7R5HfPx0EXoEDMdRjOeKn8+vvkAwhviWXTHlG3R1QkbE5M/oywnZ83udJmi+lxjJ5
 YhQ5IzomvJ16H0Bq+TLyVLO/VRksp1VR9HxCzItLNCS8PdpYYz5TC204ViycobYU65WMpzWe
 LFAGn8jSS25XIpqv0Y9k87dLbctKKA14Ifw2kq5OIVu2FuX+3i446JOa2vpCI9GcjCzi3oHV
 e00bzYiHMIl0FICrNJU0Kjho8pdo0m2uxkn6SYEpogAy9pnatUlO+erL4LqFUO7GXSdBRbw5
 gNt25XTLdSFuZtMxkY3tq8MFss5QnjhehCVPEpE6y9ZjI4XB8ad1G4oBHVGK5LMsvg22PfMJ
 ISWFSHoF/B5+lHkCKWkFxZ0gZn33ju5n6/FOdEx4B8cMJt+cWwARAQABzSlBbmRyZXcgQ29v
 cGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPsLBegQTAQgAJAIbAwULCQgHAwUVCgkI
 CwUWAgMBAAIeAQIXgAUCWKD95wIZAQAKCRBlw/kGpdefoHbdD/9AIoR3k6fKl+RFiFpyAhvO
 59ttDFI7nIAnlYngev2XUR3acFElJATHSDO0ju+hqWqAb8kVijXLops0gOfqt3VPZq9cuHlh
 IMDquatGLzAadfFx2eQYIYT+FYuMoPZy/aTUazmJIDVxP7L383grjIkn+7tAv+qeDfE+txL4
 SAm1UHNvmdfgL2/lcmL3xRh7sub3nJilM93RWX1Pe5LBSDXO45uzCGEdst6uSlzYR/MEr+5Z
 JQQ32JV64zwvf/aKaagSQSQMYNX9JFgfZ3TKWC1KJQbX5ssoX/5hNLqxMcZV3TN7kU8I3kjK
 mPec9+1nECOjjJSO/h4P0sBZyIUGfguwzhEeGf4sMCuSEM4xjCnwiBwftR17sr0spYcOpqET
 ZGcAmyYcNjy6CYadNCnfR40vhhWuCfNCBzWnUW0lFoo12wb0YnzoOLjvfD6OL3JjIUJNOmJy
 RCsJ5IA/Iz33RhSVRmROu+TztwuThClw63g7+hoyewv7BemKyuU6FTVhjjW+XUWmS/FzknSi
 dAG+insr0746cTPpSkGl3KAXeWDGJzve7/SBBfyznWCMGaf8E2P1oOdIZRxHgWj0zNr1+ooF
 /PzgLPiCI4OMUttTlEKChgbUTQ+5o0P080JojqfXwbPAyumbaYcQNiH1/xYbJdOFSiBv9rpt
 TQTBLzDKXok86M7BTQRS4TZ/ARAAkgqudHsp+hd82UVkvgnlqZjzz2vyrYfz7bkPtXaGb9H4
 Rfo7mQsEQavEBdWWjbga6eMnDqtu+FC+qeTGYebToxEyp2lKDSoAsvt8w82tIlP/EbmRbDVn
 7bhjBlfRcFjVYw8uVDPptT0TV47vpoCVkTwcyb6OltJrvg/QzV9f07DJswuda1JH3/qvYu0p
 vjPnYvCq4NsqY2XSdAJ02HrdYPFtNyPEntu1n1KK+gJrstjtw7KsZ4ygXYrsm/oCBiVW/OgU
 g/XIlGErkrxe4vQvJyVwg6YH653YTX5hLLUEL1NS4TCo47RP+wi6y+TnuAL36UtK/uFyEuPy
 wwrDVcC4cIFhYSfsO0BumEI65yu7a8aHbGfq2lW251UcoU48Z27ZUUZd2Dr6O/n8poQHbaTd
 6bJJSjzGGHZVbRP9UQ3lkmkmc0+XCHmj5WhwNNYjgbbmML7y0fsJT5RgvefAIFfHBg7fTY/i
 kBEimoUsTEQz+N4hbKwo1hULfVxDJStE4sbPhjbsPCrlXf6W9CxSyQ0qmZ2bXsLQYRj2xqd1
 bpA+1o1j2N4/au1R/uSiUFjewJdT/LX1EklKDcQwpk06Af/N7VZtSfEJeRV04unbsKVXWZAk
 uAJyDDKN99ziC0Wz5kcPyVD1HNf8bgaqGDzrv3TfYjwqayRFcMf7xJaL9xXedMcAEQEAAcLB
 XwQYAQgACQUCUuE2fwIbDAAKCRBlw/kGpdefoG4XEACD1Qf/er8EA7g23HMxYWd3FXHThrVQ
 HgiGdk5Yh632vjOm9L4sd/GCEACVQKjsu98e8o3ysitFlznEns5EAAXEbITrgKWXDDUWGYxd
 pnjj2u+GkVdsOAGk0kxczX6s+VRBhpbBI2PWnOsRJgU2n10PZ3mZD4Xu9kU2IXYmuW+e5KCA
 vTArRUdCrAtIa1k01sPipPPw6dfxx2e5asy21YOytzxuWFfJTGnVxZZSCyLUO83sh6OZhJkk
 b9rxL9wPmpN/t2IPaEKoAc0FTQZS36wAMOXkBh24PQ9gaLJvfPKpNzGD8XWR5HHF0NLIJhgg
 4ZlEXQ2fVp3XrtocHqhu4UZR4koCijgB8sB7Tb0GCpwK+C4UePdFLfhKyRdSXuvY3AHJd4CP
 4JzW0Bzq/WXY3XMOzUTYApGQpnUpdOmuQSfpV9MQO+/jo7r6yPbxT7CwRS5dcQPzUiuHLK9i
 nvjREdh84qycnx0/6dDroYhp0DFv4udxuAvt1h4wGwTPRQZerSm4xaYegEFusyhbZrI0U9tJ
 B8WrhBLXDiYlyJT6zOV2yZFuW47VrLsjYnHwn27hmxTC/7tvG3euCklmkn9Sl9IAKFu29RSo
 d5bD8kMSCYsTqtTfT6W4A3qHGvIDta3ptLYpIAOD2sY3GYq2nf3Bbzx81wZK14JdDDHUX2Rs
 6+ahAA==
In-Reply-To: <ZbJWE2HhCo_IHBpF@macbook>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 25/01/2024 12:37 pm, Roger Pau Monné wrote:
> On Thu, Jan 25, 2024 at 12:13:01PM +0100, Jan Beulich wrote:
>> On 25.01.2024 09:47, Roger Pau Monné wrote:
>>> On Thu, Jan 25, 2024 at 09:34:40AM +0100, Jan Beulich wrote:
>>>> On 24.01.2024 18:29, Roger Pau Monne wrote:
>>>>> --- a/xen/arch/x86/hvm/io.c
>>>>> +++ b/xen/arch/x86/hvm/io.c
>>>>> @@ -369,6 +369,22 @@ bool vpci_is_mmcfg_address(const struct domain *d, paddr_t addr)
>>>>>      return vpci_mmcfg_find(d, addr);
>>>>>  }
>>>>>  
>>>>> +int __hwdom_init vpci_subtract_mmcfg(const struct domain *d, struct rangeset *r)
>>>>> +{
>>>>> +    const struct hvm_mmcfg *mmcfg;
>>>>> +
>>>>> +    list_for_each_entry ( mmcfg, &d->arch.hvm.mmcfg_regions, next )
>>>>> +    {
>>>>> +        int rc = rangeset_remove_range(r, PFN_DOWN(mmcfg->addr),
>>>>> +                                       PFN_DOWN(mmcfg->addr + mmcfg->size - 1));
>>>> Along the lines of this, ...
>>>>
>>>>> --- a/xen/arch/x86/setup.c
>>>>> +++ b/xen/arch/x86/setup.c
>>>>> @@ -2138,6 +2138,54 @@ int __hwdom_init xen_in_range(unsigned long mfn)
>>>>>      return 0;
>>>>>  }
>>>>>  
>>>>> +int __hwdom_init remove_xen_ranges(struct rangeset *r)
>>>>> +{
>>>>> +    paddr_t start, end;
>>>>> +    int rc;
>>>>> +
>>>>> +    /* S3 resume code (and other real mode trampoline code) */
>>>>> +    rc = rangeset_remove_range(r, PFN_DOWN(bootsym_phys(trampoline_start)),
>>>>> +                               PFN_DOWN(bootsym_phys(trampoline_end)) - 1);
>>>> ... did you perhaps mean
>>>>
>>>>                                PFN_DOWN(bootsym_phys(trampoline_end) - 1));
>>>>
>>>> here (and then similarly below, except there the difference is benign I
>>>> think, for the labels being page-aligned)?
>>> They are all page aligned, so I didn't care much,  but now that you
>>> point it might be safer to do the subtraction from the address instead
>>> of the frame number, just in case.
>> Hmm, no, for me neither trampoline_end nor trampoline_start are page
>> aligned. While bootsym_phys(trampoline_start) is, I don't think
>> bootsym_phys(trampoline_end) normally would be (it might only be by
>> coincidence).
> Oh, so it had been a coincidence of the build I was using I guess then.

trampoline_start has to be page aligned because of constraints from SIPI
and S3 (cant remember which one is the 4k constraint, but it's in the
comments).

On APs (and indeed, in Xen's pagetables), the trampoline is only a
single 4k page.

However, trampoline_end is quite a lot longer because there's various
things that get done on the BSP only, including recovering the E820 map,
EDID/etc in 16bit mode.

That said, we don't edit the trampoline very often, so if it happened to
work for you first time around, it probably hasn't changed since.

~Andrew


From xen-devel-bounces@lists.xenproject.org Thu Jan 25 13:13:53 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 25 Jan 2024 13:13:53 +0000
Received: from list by lists.xenproject.org with outflank-mailman.671508.1044871 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSzYB-0000w1-Qs; Thu, 25 Jan 2024 13:13:47 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 671508.1044871; Thu, 25 Jan 2024 13:13:47 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSzYB-0000vu-Ni; Thu, 25 Jan 2024 13:13:47 +0000
Received: by outflank-mailman (input) for mailman id 671508;
 Thu, 25 Jan 2024 13:13:46 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=vt1H=JD=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rSzYA-0000uZ-KW
 for xen-devel@lists.xenproject.org; Thu, 25 Jan 2024 13:13:46 +0000
Received: from mail-lj1-x235.google.com (mail-lj1-x235.google.com
 [2a00:1450:4864:20::235])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 9194673b-bb83-11ee-98f5-6d05b1d4d9a1;
 Thu, 25 Jan 2024 14:13:45 +0100 (CET)
Received: by mail-lj1-x235.google.com with SMTP id
 38308e7fff4ca-2cf161b5eadso33037031fa.2
 for <xen-devel@lists.xenproject.org>; Thu, 25 Jan 2024 05:13:45 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 s9-20020a92cb09000000b00362a58bda60sm248389ilo.47.2024.01.25.05.13.43
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 25 Jan 2024 05:13:44 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 9194673b-bb83-11ee-98f5-6d05b1d4d9a1
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1706188425; x=1706793225; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=9Pcl2GJX5hQrx4wHwY6laCw1dF70AhMuyT56xV9wAho=;
        b=IR/v2kT/YHd7zVR+U1IA2wt825MMyJcMBqfcre9/dHkeXKRRujN0fs6hyINty4VS7r
         uG7887/l8A5dPH6Bv8unBbvrtc6viS5WiLaRjv1x1aU8j3PURbA52iPBIVgDm+7ivmWP
         hf/kigoHzrtmrP27oiDgGUdwsCMKsZWiv83dcK8PggVwbuiDW8iNtIdgsFJuqMqkMt0V
         SvCAuRkjQhE7Q0BfpBnLKQYWzepuOqNtxn7KKvaM/d2aIVz/A9OMM6kH/iKo3xvZnq//
         LUh1BTdMDbzQKeNua6uCky7AP9Rrn1wLo1wVidzBpZZOyfR0BSAKLk6IefSEZMDbKoWm
         8HCg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706188425; x=1706793225;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=9Pcl2GJX5hQrx4wHwY6laCw1dF70AhMuyT56xV9wAho=;
        b=JujeNL/iPTTqdMOeXwTMLDO+4VdgpG4qLQggBEJ2zMeuVinvZA3RPyRytolEvuZ5XH
         cceS/5qT2s35VnI8D5JoX0rJ26zwL1bz0tmZoHQ6PTK8t6dw2weLT6+XWi6uRasp3QN7
         9fAwXrMAuGVDPQ2YZL8KStbDtlO0GO8OHT314dUWPemb1m74RAFmYJXQcICZyKxIz3yJ
         EhakgjVx7YwpXYtSP8L35q7TrO5pKGFEsPRUzE9R5CPLD+D7lkl/E5QToRfu5Xa6IOGe
         dbrZ2L48rhz5yCJrZsNW2LjO3m+/btFmRPU0d5otCIRfWbZ5lPk9deLfNvBDznppVE1w
         Pqew==
X-Gm-Message-State: AOJu0YyMKTm3RDg+qVbuDvDyD5zFibus6Qa8noqEbtXwcXgC2du6q1Sr
	5RLI+JR3K2OmEoHuAVZ4y1JBeMw+oiyMLKW5elnG21A6Y3Ul5QI5b6RFlOqkqA==
X-Google-Smtp-Source: AGHT+IHAx3sN+AvNIQWVuqyOuaQsZyKLxUbCSQi0o9qJ3EYTu0cyJbLPtAtjGeq/1ApLrppjrowLXQ==
X-Received: by 2002:a2e:3318:0:b0:2cc:6e38:25ef with SMTP id d24-20020a2e3318000000b002cc6e3825efmr739408ljc.55.1706188425014;
        Thu, 25 Jan 2024 05:13:45 -0800 (PST)
Message-ID: <4b8f5b3e-456d-4bc5-94a4-d7a0c77563a2@suse.com>
Date: Thu, 25 Jan 2024 14:13:41 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v5 1/3] x86/iommu: remove regions not to be mapped
Content-Language: en-US
To: Andrew Cooper <andrew.cooper3@citrix.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
Cc: Paul Durrant <paul@xen.org>, Wei Liu <wl@xen.org>,
 xen-devel@lists.xenproject.org
References: <20240124172953.29814-1-roger.pau@citrix.com>
 <20240124172953.29814-2-roger.pau@citrix.com>
 <ad178469-15c3-4ae5-8538-e927f1116a42@suse.com> <ZbIgE8exXDVicN8D@macbook>
 <ed221b62-0151-45ce-a88d-d7e2a9946136@suse.com> <ZbJWE2HhCo_IHBpF@macbook>
 <be2ccc2e-f311-4368-86b3-bdf5edd0c2b6@citrix.com>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <be2ccc2e-f311-4368-86b3-bdf5edd0c2b6@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 25.01.2024 13:55, Andrew Cooper wrote:
> On 25/01/2024 12:37 pm, Roger Pau Monné wrote:
>> On Thu, Jan 25, 2024 at 12:13:01PM +0100, Jan Beulich wrote:
>>> On 25.01.2024 09:47, Roger Pau Monné wrote:
>>>> On Thu, Jan 25, 2024 at 09:34:40AM +0100, Jan Beulich wrote:
>>>>> On 24.01.2024 18:29, Roger Pau Monne wrote:
>>>>>> --- a/xen/arch/x86/hvm/io.c
>>>>>> +++ b/xen/arch/x86/hvm/io.c
>>>>>> @@ -369,6 +369,22 @@ bool vpci_is_mmcfg_address(const struct domain *d, paddr_t addr)
>>>>>>      return vpci_mmcfg_find(d, addr);
>>>>>>  }
>>>>>>  
>>>>>> +int __hwdom_init vpci_subtract_mmcfg(const struct domain *d, struct rangeset *r)
>>>>>> +{
>>>>>> +    const struct hvm_mmcfg *mmcfg;
>>>>>> +
>>>>>> +    list_for_each_entry ( mmcfg, &d->arch.hvm.mmcfg_regions, next )
>>>>>> +    {
>>>>>> +        int rc = rangeset_remove_range(r, PFN_DOWN(mmcfg->addr),
>>>>>> +                                       PFN_DOWN(mmcfg->addr + mmcfg->size - 1));
>>>>> Along the lines of this, ...
>>>>>
>>>>>> --- a/xen/arch/x86/setup.c
>>>>>> +++ b/xen/arch/x86/setup.c
>>>>>> @@ -2138,6 +2138,54 @@ int __hwdom_init xen_in_range(unsigned long mfn)
>>>>>>      return 0;
>>>>>>  }
>>>>>>  
>>>>>> +int __hwdom_init remove_xen_ranges(struct rangeset *r)
>>>>>> +{
>>>>>> +    paddr_t start, end;
>>>>>> +    int rc;
>>>>>> +
>>>>>> +    /* S3 resume code (and other real mode trampoline code) */
>>>>>> +    rc = rangeset_remove_range(r, PFN_DOWN(bootsym_phys(trampoline_start)),
>>>>>> +                               PFN_DOWN(bootsym_phys(trampoline_end)) - 1);
>>>>> ... did you perhaps mean
>>>>>
>>>>>                                PFN_DOWN(bootsym_phys(trampoline_end) - 1));
>>>>>
>>>>> here (and then similarly below, except there the difference is benign I
>>>>> think, for the labels being page-aligned)?
>>>> They are all page aligned, so I didn't care much,  but now that you
>>>> point it might be safer to do the subtraction from the address instead
>>>> of the frame number, just in case.
>>> Hmm, no, for me neither trampoline_end nor trampoline_start are page
>>> aligned. While bootsym_phys(trampoline_start) is, I don't think
>>> bootsym_phys(trampoline_end) normally would be (it might only be by
>>> coincidence).
>> Oh, so it had been a coincidence of the build I was using I guess then.
> 
> trampoline_start has to be page aligned because of constraints from SIPI
> and S3 (cant remember which one is the 4k constraint, but it's in the
> comments).

What you're talking about is the copy of the trampoline code/data in
low memory. trampoline_{start,end} themselves point into the Xen image.

> On APs (and indeed, in Xen's pagetables), the trampoline is only a
> single 4k page.
> 
> However, trampoline_end is quite a lot longer because there's various
> things that get done on the BSP only, including recovering the E820 map,
> EDID/etc in 16bit mode.

And this BSP-only part really wouldn't need removing here, I think.
The issue is that the BSP-only and also-AP plus S3-wakeup parts aren't
properly delimited (hmm, maybe wakeup_stack can be used for this
purpose). But if, as you say, we map only a single page, we could as
well limit logic here to just that.

Jan

> That said, we don't edit the trampoline very often, so if it happened to
> work for you first time around, it probably hasn't changed since.
> 
> ~Andrew



From xen-devel-bounces@lists.xenproject.org Thu Jan 25 13:22:27 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 25 Jan 2024 13:22:27 +0000
Received: from list by lists.xenproject.org with outflank-mailman.671513.1044880 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSzgT-0003Ds-In; Thu, 25 Jan 2024 13:22:21 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 671513.1044880; Thu, 25 Jan 2024 13:22:21 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSzgT-0003Dl-GA; Thu, 25 Jan 2024 13:22:21 +0000
Received: by outflank-mailman (input) for mailman id 671513;
 Thu, 25 Jan 2024 13:22:20 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=+DBC=JD=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1rSzgS-0003Df-9v
 for xen-devel@lists.xenproject.org; Thu, 25 Jan 2024 13:22:20 +0000
Received: from mail-wr1-x42f.google.com (mail-wr1-x42f.google.com
 [2a00:1450:4864:20::42f])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id c2b04dc6-bb84-11ee-8206-e5715332e9e2;
 Thu, 25 Jan 2024 14:22:18 +0100 (CET)
Received: by mail-wr1-x42f.google.com with SMTP id
 ffacd0b85a97d-337d99f9cdfso5590410f8f.0
 for <xen-devel@lists.xenproject.org>; Thu, 25 Jan 2024 05:22:17 -0800 (PST)
Received: from [10.80.67.30] (default-46-102-197-194.interdsl.co.uk.
 [46.102.197.194]) by smtp.gmail.com with ESMTPSA id
 z17-20020a5d4d11000000b003392af92996sm12943120wrt.101.2024.01.25.05.22.16
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 25 Jan 2024 05:22:16 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: c2b04dc6-bb84-11ee-8206-e5715332e9e2
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1706188937; x=1706793737; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=SIT3lBeUvkzdhaNcX+YQ64AC+juXLjreQ0WuYbZJgwQ=;
        b=LuZK0mHCbpmk5PcVZgv+mlbCr10x9tCd+BZfcB1e+b8izDb6uCYtcB8qgODEVC0Mpr
         MT3oO2IznnBNi8wSHLv2gtpRWYFvYijd9Uakr+6hc2upL2ze1Ymy443kFNfX6eyxIqsD
         tN1WKeWvWuc4kvJACUvA4rpVDUCOwmXVDrMTI=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706188937; x=1706793737;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=SIT3lBeUvkzdhaNcX+YQ64AC+juXLjreQ0WuYbZJgwQ=;
        b=pTbAkenE4mDItf/1eO2g/eHtnCjEIjbbPiL/uCAwsT5A6Mk6sSs8BqqdRiipQC/cBX
         7Q2jon7N9DMsj/NdI7TrXLVc3drQl0pt+IwLZ45qNdSwUl0bqIvv0JoAMtonesNBO3Cn
         UI2GcoyZOBijQomum2K0a2TyUAFJHLbD+32vdlW6p+vq8Zpmjvy6NKH5H46Sv3nFhgBG
         dzoVxpltrTnDramX3z9Av7Jh9Ruz6wqDeelr5DJZv6/bUB47AK6d3KWEpK0ADlZB4QE+
         oQ2XOj8vZH/NpOp+gH5PB8YdmYZsaVn4FSfgVpJUvfubM68P3eabfLgNdORe8YcWzDsl
         cFwg==
X-Gm-Message-State: AOJu0Yztlox9j0Bj03QejJLLM6/b9sjj2zCmXJWBA5ZU8geyLcImnMb9
	2Wgqvrl30nhIjx6nhbSlsRkLyHxBJWIx4bBePZxe3kzbNGzH2JPyi25lFkBXmTvZM2PtgQcvQo5
	Xi8c=
X-Google-Smtp-Source: AGHT+IEgsjR1lnBkxv5ZPRM4680sF8rLDKHXp6aLVjg4/4I43pDj9SwyqMugZBCWSPVXmZb4LhE4tA==
X-Received: by 2002:a5d:5390:0:b0:337:aa5e:ba4d with SMTP id d16-20020a5d5390000000b00337aa5eba4dmr514430wrv.22.1706188936621;
        Thu, 25 Jan 2024 05:22:16 -0800 (PST)
Message-ID: <d39c739b-fe27-4471-94a9-b56734985a30@citrix.com>
Date: Thu, 25 Jan 2024 13:22:15 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v5 1/3] x86/iommu: remove regions not to be mapped
Content-Language: en-GB
To: Jan Beulich <jbeulich@suse.com>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger.pau@citrix.com>
Cc: Paul Durrant <paul@xen.org>, Wei Liu <wl@xen.org>,
 xen-devel@lists.xenproject.org
References: <20240124172953.29814-1-roger.pau@citrix.com>
 <20240124172953.29814-2-roger.pau@citrix.com>
 <ad178469-15c3-4ae5-8538-e927f1116a42@suse.com> <ZbIgE8exXDVicN8D@macbook>
 <ed221b62-0151-45ce-a88d-d7e2a9946136@suse.com> <ZbJWE2HhCo_IHBpF@macbook>
 <be2ccc2e-f311-4368-86b3-bdf5edd0c2b6@citrix.com>
 <4b8f5b3e-456d-4bc5-94a4-d7a0c77563a2@suse.com>
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 xsFNBFLhNn8BEADVhE+Hb8i0GV6mihnnr/uiQQdPF8kUoFzCOPXkf7jQ5sLYeJa0cQi6Penp
 VtiFYznTairnVsN5J+ujSTIb+OlMSJUWV4opS7WVNnxHbFTPYZVQ3erv7NKc2iVizCRZ2Kxn
 srM1oPXWRic8BIAdYOKOloF2300SL/bIpeD+x7h3w9B/qez7nOin5NzkxgFoaUeIal12pXSR
 Q354FKFoy6Vh96gc4VRqte3jw8mPuJQpfws+Pb+swvSf/i1q1+1I4jsRQQh2m6OTADHIqg2E
 ofTYAEh7R5HfPx0EXoEDMdRjOeKn8+vvkAwhviWXTHlG3R1QkbE5M/oywnZ83udJmi+lxjJ5
 YhQ5IzomvJ16H0Bq+TLyVLO/VRksp1VR9HxCzItLNCS8PdpYYz5TC204ViycobYU65WMpzWe
 LFAGn8jSS25XIpqv0Y9k87dLbctKKA14Ifw2kq5OIVu2FuX+3i446JOa2vpCI9GcjCzi3oHV
 e00bzYiHMIl0FICrNJU0Kjho8pdo0m2uxkn6SYEpogAy9pnatUlO+erL4LqFUO7GXSdBRbw5
 gNt25XTLdSFuZtMxkY3tq8MFss5QnjhehCVPEpE6y9ZjI4XB8ad1G4oBHVGK5LMsvg22PfMJ
 ISWFSHoF/B5+lHkCKWkFxZ0gZn33ju5n6/FOdEx4B8cMJt+cWwARAQABzSlBbmRyZXcgQ29v
 cGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPsLBegQTAQgAJAIbAwULCQgHAwUVCgkI
 CwUWAgMBAAIeAQIXgAUCWKD95wIZAQAKCRBlw/kGpdefoHbdD/9AIoR3k6fKl+RFiFpyAhvO
 59ttDFI7nIAnlYngev2XUR3acFElJATHSDO0ju+hqWqAb8kVijXLops0gOfqt3VPZq9cuHlh
 IMDquatGLzAadfFx2eQYIYT+FYuMoPZy/aTUazmJIDVxP7L383grjIkn+7tAv+qeDfE+txL4
 SAm1UHNvmdfgL2/lcmL3xRh7sub3nJilM93RWX1Pe5LBSDXO45uzCGEdst6uSlzYR/MEr+5Z
 JQQ32JV64zwvf/aKaagSQSQMYNX9JFgfZ3TKWC1KJQbX5ssoX/5hNLqxMcZV3TN7kU8I3kjK
 mPec9+1nECOjjJSO/h4P0sBZyIUGfguwzhEeGf4sMCuSEM4xjCnwiBwftR17sr0spYcOpqET
 ZGcAmyYcNjy6CYadNCnfR40vhhWuCfNCBzWnUW0lFoo12wb0YnzoOLjvfD6OL3JjIUJNOmJy
 RCsJ5IA/Iz33RhSVRmROu+TztwuThClw63g7+hoyewv7BemKyuU6FTVhjjW+XUWmS/FzknSi
 dAG+insr0746cTPpSkGl3KAXeWDGJzve7/SBBfyznWCMGaf8E2P1oOdIZRxHgWj0zNr1+ooF
 /PzgLPiCI4OMUttTlEKChgbUTQ+5o0P080JojqfXwbPAyumbaYcQNiH1/xYbJdOFSiBv9rpt
 TQTBLzDKXok86M7BTQRS4TZ/ARAAkgqudHsp+hd82UVkvgnlqZjzz2vyrYfz7bkPtXaGb9H4
 Rfo7mQsEQavEBdWWjbga6eMnDqtu+FC+qeTGYebToxEyp2lKDSoAsvt8w82tIlP/EbmRbDVn
 7bhjBlfRcFjVYw8uVDPptT0TV47vpoCVkTwcyb6OltJrvg/QzV9f07DJswuda1JH3/qvYu0p
 vjPnYvCq4NsqY2XSdAJ02HrdYPFtNyPEntu1n1KK+gJrstjtw7KsZ4ygXYrsm/oCBiVW/OgU
 g/XIlGErkrxe4vQvJyVwg6YH653YTX5hLLUEL1NS4TCo47RP+wi6y+TnuAL36UtK/uFyEuPy
 wwrDVcC4cIFhYSfsO0BumEI65yu7a8aHbGfq2lW251UcoU48Z27ZUUZd2Dr6O/n8poQHbaTd
 6bJJSjzGGHZVbRP9UQ3lkmkmc0+XCHmj5WhwNNYjgbbmML7y0fsJT5RgvefAIFfHBg7fTY/i
 kBEimoUsTEQz+N4hbKwo1hULfVxDJStE4sbPhjbsPCrlXf6W9CxSyQ0qmZ2bXsLQYRj2xqd1
 bpA+1o1j2N4/au1R/uSiUFjewJdT/LX1EklKDcQwpk06Af/N7VZtSfEJeRV04unbsKVXWZAk
 uAJyDDKN99ziC0Wz5kcPyVD1HNf8bgaqGDzrv3TfYjwqayRFcMf7xJaL9xXedMcAEQEAAcLB
 XwQYAQgACQUCUuE2fwIbDAAKCRBlw/kGpdefoG4XEACD1Qf/er8EA7g23HMxYWd3FXHThrVQ
 HgiGdk5Yh632vjOm9L4sd/GCEACVQKjsu98e8o3ysitFlznEns5EAAXEbITrgKWXDDUWGYxd
 pnjj2u+GkVdsOAGk0kxczX6s+VRBhpbBI2PWnOsRJgU2n10PZ3mZD4Xu9kU2IXYmuW+e5KCA
 vTArRUdCrAtIa1k01sPipPPw6dfxx2e5asy21YOytzxuWFfJTGnVxZZSCyLUO83sh6OZhJkk
 b9rxL9wPmpN/t2IPaEKoAc0FTQZS36wAMOXkBh24PQ9gaLJvfPKpNzGD8XWR5HHF0NLIJhgg
 4ZlEXQ2fVp3XrtocHqhu4UZR4koCijgB8sB7Tb0GCpwK+C4UePdFLfhKyRdSXuvY3AHJd4CP
 4JzW0Bzq/WXY3XMOzUTYApGQpnUpdOmuQSfpV9MQO+/jo7r6yPbxT7CwRS5dcQPzUiuHLK9i
 nvjREdh84qycnx0/6dDroYhp0DFv4udxuAvt1h4wGwTPRQZerSm4xaYegEFusyhbZrI0U9tJ
 B8WrhBLXDiYlyJT6zOV2yZFuW47VrLsjYnHwn27hmxTC/7tvG3euCklmkn9Sl9IAKFu29RSo
 d5bD8kMSCYsTqtTfT6W4A3qHGvIDta3ptLYpIAOD2sY3GYq2nf3Bbzx81wZK14JdDDHUX2Rs
 6+ahAA==
In-Reply-To: <4b8f5b3e-456d-4bc5-94a4-d7a0c77563a2@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 25/01/2024 1:13 pm, Jan Beulich wrote:
> On 25.01.2024 13:55, Andrew Cooper wrote:
>> On 25/01/2024 12:37 pm, Roger Pau Monné wrote:
>>> On Thu, Jan 25, 2024 at 12:13:01PM +0100, Jan Beulich wrote:
>>>> On 25.01.2024 09:47, Roger Pau Monné wrote:
>>>>> On Thu, Jan 25, 2024 at 09:34:40AM +0100, Jan Beulich wrote:
>>>>>> On 24.01.2024 18:29, Roger Pau Monne wrote:
>>>>>>> --- a/xen/arch/x86/hvm/io.c
>>>>>>> +++ b/xen/arch/x86/hvm/io.c
>>>>>>> @@ -369,6 +369,22 @@ bool vpci_is_mmcfg_address(const struct domain *d, paddr_t addr)
>>>>>>>      return vpci_mmcfg_find(d, addr);
>>>>>>>  }
>>>>>>>  
>>>>>>> +int __hwdom_init vpci_subtract_mmcfg(const struct domain *d, struct rangeset *r)
>>>>>>> +{
>>>>>>> +    const struct hvm_mmcfg *mmcfg;
>>>>>>> +
>>>>>>> +    list_for_each_entry ( mmcfg, &d->arch.hvm.mmcfg_regions, next )
>>>>>>> +    {
>>>>>>> +        int rc = rangeset_remove_range(r, PFN_DOWN(mmcfg->addr),
>>>>>>> +                                       PFN_DOWN(mmcfg->addr + mmcfg->size - 1));
>>>>>> Along the lines of this, ...
>>>>>>
>>>>>>> --- a/xen/arch/x86/setup.c
>>>>>>> +++ b/xen/arch/x86/setup.c
>>>>>>> @@ -2138,6 +2138,54 @@ int __hwdom_init xen_in_range(unsigned long mfn)
>>>>>>>      return 0;
>>>>>>>  }
>>>>>>>  
>>>>>>> +int __hwdom_init remove_xen_ranges(struct rangeset *r)
>>>>>>> +{
>>>>>>> +    paddr_t start, end;
>>>>>>> +    int rc;
>>>>>>> +
>>>>>>> +    /* S3 resume code (and other real mode trampoline code) */
>>>>>>> +    rc = rangeset_remove_range(r, PFN_DOWN(bootsym_phys(trampoline_start)),
>>>>>>> +                               PFN_DOWN(bootsym_phys(trampoline_end)) - 1);
>>>>>> ... did you perhaps mean
>>>>>>
>>>>>>                                PFN_DOWN(bootsym_phys(trampoline_end) - 1));
>>>>>>
>>>>>> here (and then similarly below, except there the difference is benign I
>>>>>> think, for the labels being page-aligned)?
>>>>> They are all page aligned, so I didn't care much,  but now that you
>>>>> point it might be safer to do the subtraction from the address instead
>>>>> of the frame number, just in case.
>>>> Hmm, no, for me neither trampoline_end nor trampoline_start are page
>>>> aligned. While bootsym_phys(trampoline_start) is, I don't think
>>>> bootsym_phys(trampoline_end) normally would be (it might only be by
>>>> coincidence).
>>> Oh, so it had been a coincidence of the build I was using I guess then.
>> trampoline_start has to be page aligned because of constraints from SIPI
>> and S3 (cant remember which one is the 4k constraint, but it's in the
>> comments).
> What you're talking about is the copy of the trampoline code/data in
> low memory. trampoline_{start,end} themselves point into the Xen image.

True, but we're operating on bootsym_phys(trampoline_start) which had
better be aligned.

We hard-code (by virtue of only filling in 1 single 4k PTE in the
pagetables) that the AP trampoline is 4k.

The range here should be 4k only too, or we're (falsely) marking lowmem
adjacent to the AP trampoline as a Xen range when it's not.

~Andrew


From xen-devel-bounces@lists.xenproject.org Thu Jan 25 13:26:44 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 25 Jan 2024 13:26:44 +0000
Received: from list by lists.xenproject.org with outflank-mailman.671519.1044891 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSzkg-0003wI-4L; Thu, 25 Jan 2024 13:26:42 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 671519.1044891; Thu, 25 Jan 2024 13:26:42 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSzkg-0003wB-1B; Thu, 25 Jan 2024 13:26:42 +0000
Received: by outflank-mailman (input) for mailman id 671519;
 Thu, 25 Jan 2024 13:26:40 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=etx6=JD=cloud.com=roger.pau@srs-se1.protection.inumbo.net>)
 id 1rSzke-0003vs-JW
 for xen-devel@lists.xenproject.org; Thu, 25 Jan 2024 13:26:40 +0000
Received: from mail-wm1-x329.google.com (mail-wm1-x329.google.com
 [2a00:1450:4864:20::329])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 5e8dfa33-bb85-11ee-8206-e5715332e9e2;
 Thu, 25 Jan 2024 14:26:38 +0100 (CET)
Received: by mail-wm1-x329.google.com with SMTP id
 5b1f17b1804b1-40ed4690ee4so750725e9.2
 for <xen-devel@lists.xenproject.org>; Thu, 25 Jan 2024 05:26:38 -0800 (PST)
Received: from localhost ([213.195.118.74]) by smtp.gmail.com with ESMTPSA id
 y3-20020adfee03000000b003368c8d120fsm20962543wrn.7.2024.01.25.05.26.36
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 25 Jan 2024 05:26:37 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 5e8dfa33-bb85-11ee-8206-e5715332e9e2
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1706189197; x=1706793997; darn=lists.xenproject.org;
        h=content-transfer-encoding:mime-version:references:in-reply-to
         :message-id:date:subject:cc:to:from:from:to:cc:subject:date
         :message-id:reply-to;
        bh=mxphC12eXImvPbg7V8xfoWVVZF0qzhNPdnhCGU1GK+s=;
        b=UbYzMpxMi3UP5lAzsgpgf2/0BspLRclV6GD7En8L2+skvt6qWy5dWsr6zB61wtFapS
         iQpZDXZB49Fh6vpWJrTUuIAv73ZglSv4bvaCFhyIOpNCtEXaaKEe+ZP9upzsbJyYnNGN
         ETTjPfrvbOYgRT0ZpvSbqTHYMq9Nkxl0IYLxg=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706189197; x=1706793997;
        h=content-transfer-encoding:mime-version:references:in-reply-to
         :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to;
        bh=mxphC12eXImvPbg7V8xfoWVVZF0qzhNPdnhCGU1GK+s=;
        b=ow+URGofoZvyXMxcCIOFyBsrkPZhcFWIQMTxtnNkxZsJdIfyhr3W5/zN9B3bHUuNAQ
         cq14l4/C8h+UQ8v7kd3mQ0sncPnJCNyIa4Q7ba0Tw+ftEz/ZXnxqg8xoeVxZvN+qpm64
         etHEG3/Em7DNQVDAZ5I64GrH6ciCmC6kCxMc3A9HbQxoC5XZY0g8wtkDuFwIkKnZWJKh
         OJyd5zLHrDhcB/oVKsidPN6GkWZNaxgXMvTnXmXKLerY1Svj/+u4N3urK0hEjRZ0gkzn
         rANgv+ZxGEk1MkV6RX3eXg3CvNSrmNSni/bvke3hVN52ZaD3ql7tZfWqc6zEjpmwMM32
         Z5yg==
X-Gm-Message-State: AOJu0YwrV4uNOGP4AaLji0/s8QcyNZgsxjRu9Ms8oUZxS1sOcURDCIee
	s1NPDhJJ0X5lnuYOY+siKG0Ob1UIgWy/cu7mvn9c+/UJp1WP0PkEgXtOkW9sVz1QK0l8kImYHUj
	g
X-Google-Smtp-Source: AGHT+IF5jIcwT3zQmCtLKsaGZ3Ouu8JG1y6TA3LrvobiqjWEseI5M0AV0L+8XonTtQE/WdwpRHPbuA==
X-Received: by 2002:a05:600c:3d91:b0:40e:d319:4784 with SMTP id bi17-20020a05600c3d9100b0040ed3194784mr318964wmb.130.1706189197488;
        Thu, 25 Jan 2024 05:26:37 -0800 (PST)
From: Roger Pau Monne <roger.pau@citrix.com>
To: xen-devel@lists.xenproject.org
Cc: Roger Pau Monne <roger.pau@citrix.com>,
	Paul Durrant <paul@xen.org>,
	Jan Beulich <jbeulich@suse.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Wei Liu <wl@xen.org>
Subject: [PATCH v6 1/3] x86/iommu: remove regions not to be mapped
Date: Thu, 25 Jan 2024 14:26:26 +0100
Message-ID: <20240125132626.34553-1-roger.pau@citrix.com>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20240124172953.29814-2-roger.pau@citrix.com>
References: <20240124172953.29814-2-roger.pau@citrix.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Introduce the code to remove regions not to be mapped from the rangeset
that will be used to setup the IOMMU page tables for the hardware domain.

This change also introduces two new functions: remove_xen_ranges() and
vpci_subtract_mmcfg() that copy the logic in xen_in_range() and
vpci_is_mmcfg_address() respectively and remove the ranges that would otherwise
be intercepted by the original functions.

Note that the rangeset is still not populated.

Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
---
Changes since v6:
 - Fix subtraction to be done against the address, not the mfn.

Changes since v4:
 - Fix off-by-one when removing the Xen used ranges, as the rangesets are
   inclusive.

Changes since v3:
 - Remove unnecessary line wrapping.

Changes since v1:
 - Split from bigger patch.
---
 xen/arch/x86/hvm/io.c               | 16 ++++++++
 xen/arch/x86/include/asm/hvm/io.h   |  3 ++
 xen/arch/x86/include/asm/setup.h    |  1 +
 xen/arch/x86/setup.c                | 48 +++++++++++++++++++++++
 xen/drivers/passthrough/x86/iommu.c | 61 +++++++++++++++++++++++++++++
 5 files changed, 129 insertions(+)

diff --git a/xen/arch/x86/hvm/io.c b/xen/arch/x86/hvm/io.c
index d75af83ad01f..a42854c52b65 100644
--- a/xen/arch/x86/hvm/io.c
+++ b/xen/arch/x86/hvm/io.c
@@ -369,6 +369,22 @@ bool vpci_is_mmcfg_address(const struct domain *d, paddr_t addr)
     return vpci_mmcfg_find(d, addr);
 }
 
+int __hwdom_init vpci_subtract_mmcfg(const struct domain *d, struct rangeset *r)
+{
+    const struct hvm_mmcfg *mmcfg;
+
+    list_for_each_entry ( mmcfg, &d->arch.hvm.mmcfg_regions, next )
+    {
+        int rc = rangeset_remove_range(r, PFN_DOWN(mmcfg->addr),
+                                       PFN_DOWN(mmcfg->addr + mmcfg->size - 1));
+
+        if ( rc )
+            return rc;
+    }
+
+    return 0;
+}
+
 static unsigned int vpci_mmcfg_decode_addr(const struct hvm_mmcfg *mmcfg,
                                            paddr_t addr, pci_sbdf_t *sbdf)
 {
diff --git a/xen/arch/x86/include/asm/hvm/io.h b/xen/arch/x86/include/asm/hvm/io.h
index a97731657801..e1e5e6fe7491 100644
--- a/xen/arch/x86/include/asm/hvm/io.h
+++ b/xen/arch/x86/include/asm/hvm/io.h
@@ -156,6 +156,9 @@ void destroy_vpci_mmcfg(struct domain *d);
 /* Check if an address is between a MMCFG region for a domain. */
 bool vpci_is_mmcfg_address(const struct domain *d, paddr_t addr);
 
+/* Remove MMCFG regions from a given rangeset. */
+int vpci_subtract_mmcfg(const struct domain *d, struct rangeset *r);
+
 #endif /* __ASM_X86_HVM_IO_H__ */
 
 
diff --git a/xen/arch/x86/include/asm/setup.h b/xen/arch/x86/include/asm/setup.h
index 9a460e4db8f4..cd07d98101d8 100644
--- a/xen/arch/x86/include/asm/setup.h
+++ b/xen/arch/x86/include/asm/setup.h
@@ -37,6 +37,7 @@ void discard_initial_images(void);
 void *bootstrap_map(const module_t *mod);
 
 int xen_in_range(unsigned long mfn);
+int remove_xen_ranges(struct rangeset *r);
 
 extern uint8_t kbd_shift_flags;
 
diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
index 897b7e92082e..ee233c69f1cb 100644
--- a/xen/arch/x86/setup.c
+++ b/xen/arch/x86/setup.c
@@ -2138,6 +2138,54 @@ int __hwdom_init xen_in_range(unsigned long mfn)
     return 0;
 }
 
+int __hwdom_init remove_xen_ranges(struct rangeset *r)
+{
+    paddr_t start, end;
+    int rc;
+
+    /* S3 resume code (and other real mode trampoline code) */
+    rc = rangeset_remove_range(r, PFN_DOWN(bootsym_phys(trampoline_start)),
+                               PFN_DOWN(bootsym_phys(trampoline_end) - 1));
+    if ( rc )
+        return rc;
+
+    /*
+     * This needs to remain in sync with the uses of the same symbols in
+     * - __start_xen()
+     * - is_xen_fixed_mfn()
+     * - tboot_shutdown()
+     */
+    /* hypervisor .text + .rodata */
+    rc = rangeset_remove_range(r, PFN_DOWN(__pa(&_stext)),
+                               PFN_DOWN(__pa(&__2M_rodata_end) - 1));
+    if ( rc )
+        return rc;
+
+    /* hypervisor .data + .bss */
+    if ( efi_boot_mem_unused(&start, &end) )
+    {
+        ASSERT(__pa(start) >= __pa(&__2M_rwdata_start));
+        rc = rangeset_remove_range(r, PFN_DOWN(__pa(&__2M_rwdata_start)),
+                                   PFN_DOWN(__pa(start) - 1));
+        if ( rc )
+            return rc;
+        ASSERT(__pa(end) <= __pa(&__2M_rwdata_end));
+        rc = rangeset_remove_range(r, PFN_DOWN(__pa(end)),
+                                   PFN_DOWN(__pa(&__2M_rwdata_end) - 1));
+        if ( rc )
+            return rc;
+    }
+    else
+    {
+        rc = rangeset_remove_range(r, PFN_DOWN(__pa(&__2M_rwdata_start)),
+                                   PFN_DOWN(__pa(&__2M_rwdata_end) - 1));
+        if ( rc )
+            return rc;
+    }
+
+    return 0;
+}
+
 static int __hwdom_init cf_check io_bitmap_cb(
     unsigned long s, unsigned long e, void *ctx)
 {
diff --git a/xen/drivers/passthrough/x86/iommu.c b/xen/drivers/passthrough/x86/iommu.c
index 59b0c7e980ca..fc5215a9dc40 100644
--- a/xen/drivers/passthrough/x86/iommu.c
+++ b/xen/drivers/passthrough/x86/iommu.c
@@ -370,6 +370,14 @@ static unsigned int __hwdom_init hwdom_iommu_map(const struct domain *d,
     return perms;
 }
 
+static int __hwdom_init cf_check map_subtract(unsigned long s, unsigned long e,
+                                              void *data)
+{
+    struct rangeset *map = data;
+
+    return rangeset_remove_range(map, s, e);
+}
+
 struct map_data {
     struct domain *d;
     unsigned int flush_flags;
@@ -533,6 +541,59 @@ void __hwdom_init arch_iommu_hwdom_init(struct domain *d)
             goto commit;
     }
 
+    /* Remove any areas in-use by Xen. */
+    rc = remove_xen_ranges(map);
+    if ( rc )
+        panic("IOMMU failed to remove Xen ranges: %d\n", rc);
+
+    /* Remove any overlap with the Interrupt Address Range. */
+    rc = rangeset_remove_range(map, 0xfee00, 0xfeeff);
+    if ( rc )
+        panic("IOMMU failed to remove Interrupt Address Range: %d\n", rc);
+
+    /* If emulating IO-APIC(s) make sure the base address is unmapped. */
+    if ( has_vioapic(d) )
+    {
+        for ( i = 0; i < d->arch.hvm.nr_vioapics; i++ )
+        {
+            rc = rangeset_remove_singleton(map,
+                PFN_DOWN(domain_vioapic(d, i)->base_address));
+            if ( rc )
+                panic("IOMMU failed to remove IO-APIC: %d\n", rc);
+        }
+    }
+
+    if ( is_pv_domain(d) )
+    {
+        /*
+         * Be consistent with CPU mappings: Dom0 is permitted to establish r/o
+         * ones there (also for e.g. HPET in certain cases), so it should also
+         * have such established for IOMMUs.  Remove any read-only ranges here,
+         * since ranges in mmio_ro_ranges are already explicitly mapped below
+         * in read-only mode.
+         */
+        rc = rangeset_report_ranges(mmio_ro_ranges, 0, ~0UL, map_subtract, map);
+        if ( rc )
+            panic("IOMMU failed to remove read-only regions: %d\n", rc);
+    }
+
+    if ( has_vpci(d) )
+    {
+        /*
+         * TODO: runtime added MMCFG regions are not checked to make sure they
+         * don't overlap with already mapped regions, thus preventing trapping.
+         */
+        rc = vpci_subtract_mmcfg(d, map);
+        if ( rc )
+            panic("IOMMU unable to remove MMCFG areas: %d\n", rc);
+    }
+
+    /* Remove any regions past the last address addressable by the domain. */
+    rc = rangeset_remove_range(map, PFN_DOWN(1UL << domain_max_paddr_bits(d)),
+                               ~0UL);
+    if ( rc )
+        panic("IOMMU unable to remove unaddressable ranges: %d\n", rc);
+
     if ( iommu_verbose )
         printk(XENLOG_INFO "%pd: identity mappings for IOMMU:\n", d);
 
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Thu Jan 25 13:37:03 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 25 Jan 2024 13:37:03 +0000
Received: from list by lists.xenproject.org with outflank-mailman.671525.1044902 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSzuc-0006OI-7M; Thu, 25 Jan 2024 13:36:58 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 671525.1044902; Thu, 25 Jan 2024 13:36:58 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rSzuc-0006OB-2R; Thu, 25 Jan 2024 13:36:58 +0000
Received: by outflank-mailman (input) for mailman id 671525;
 Thu, 25 Jan 2024 13:36:57 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=vt1H=JD=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rSzub-0006O5-Ap
 for xen-devel@lists.xenproject.org; Thu, 25 Jan 2024 13:36:57 +0000
Received: from mail-lj1-x231.google.com (mail-lj1-x231.google.com
 [2a00:1450:4864:20::231])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id cd8b6655-bb86-11ee-98f5-efadbce2ee36;
 Thu, 25 Jan 2024 14:36:55 +0100 (CET)
Received: by mail-lj1-x231.google.com with SMTP id
 38308e7fff4ca-2cddb2c2b54so68585521fa.1
 for <xen-devel@lists.xenproject.org>; Thu, 25 Jan 2024 05:36:54 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 c1-20020a056e02058100b0036194d1dad6sm456689ils.40.2024.01.25.05.36.52
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 25 Jan 2024 05:36:53 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: cd8b6655-bb86-11ee-98f5-efadbce2ee36
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1706189814; x=1706794614; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=pm3S5uxI+0hPBVUwoJRnuc869OgqXz66WJKWBP9M0GM=;
        b=OtZPQuGg+nUiLhCijxBRhPEaOhtA8sKqFUKakn7NzoJZ8jZw8KLOKGkLGVKXCVxD+/
         rMdcyx4NBCInEkgdK2AYynafFw15QYm8cZnq5Prbxut0IkSka0oiZCa9YItDC0MYO2Dg
         i9cPzn7JzocW7MEMdBAChQFiGL7DwBLMry7uLU9QXbQJp+VkPGezUyeZrONDGCf/0q0E
         a+k57Z1X2pPK6MOO29fcJbvtkdr00c6at2KOjCcgXA0FeT4CDMcdNNcJcHTFqCFJ2l7g
         hXt0yOm9abEfM243fx8PDs1hVH4/b2ZidHwoiEKPU2VTbi9gV8C4hrgVBFUhL0xMWPQH
         F61g==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706189814; x=1706794614;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=pm3S5uxI+0hPBVUwoJRnuc869OgqXz66WJKWBP9M0GM=;
        b=iYneV9kfIQtY/zSOtrOmcaQ3/B2SFm2Sibu6y8j48cTjCUwxgeduBOkz52znqSxB2+
         M7NtN2hnZcc/KbaVrFugUW+8iQlfD/ML+vL3xmtuTaYN/6jBbQuaT9DHIrPExn/4yu39
         augOamY9BJC3sJEFPhtS4MkZ6h2JNy0D4sD+UghqUoD47tCgVn2/xsAGUMFufAMSrjec
         gUyoLYtHasEZczttWrlBRrW5EVhphvKZjt5xKIrAzyd8WK+669gSy1nHufnhvqW3+HXw
         EW5OXvBvl0zJCnrpc16862KdqY4+TbvyhQZUYD0bS3W6zRUuAEmifi1SgnmcH8rp0yjp
         S62w==
X-Gm-Message-State: AOJu0YydACHAszLLuVSwL1jEi89LgKQb+WpL7sR/R2BGDG99/m4wZLSk
	37/sTxjudtjWJkMKdqCmYo2Lk6FbXJOM8wVcrks2AUJuDkRATrHcNcclzR0rag==
X-Google-Smtp-Source: AGHT+IGvKEuw/9cyaoSJcUoRJEPixkLG3kkjWvQs/bryOIeUY/xB6kW6zEH8Pgkq74Y/Y8XsNvsBjw==
X-Received: by 2002:a05:651c:210c:b0:2cc:7b19:1b05 with SMTP id a12-20020a05651c210c00b002cc7b191b05mr1103505ljq.48.1706189813931;
        Thu, 25 Jan 2024 05:36:53 -0800 (PST)
Message-ID: <210c11b0-4948-45cb-be96-d048d36082ca@suse.com>
Date: Thu, 25 Jan 2024 14:36:50 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v6 1/3] x86/iommu: remove regions not to be mapped
Content-Language: en-US
To: Roger Pau Monne <roger.pau@citrix.com>
Cc: Paul Durrant <paul@xen.org>, Andrew Cooper <andrew.cooper3@citrix.com>,
 Wei Liu <wl@xen.org>, xen-devel@lists.xenproject.org
References: <20240124172953.29814-2-roger.pau@citrix.com>
 <20240125132626.34553-1-roger.pau@citrix.com>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <20240125132626.34553-1-roger.pau@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 25.01.2024 14:26, Roger Pau Monne wrote:
> --- a/xen/arch/x86/setup.c
> +++ b/xen/arch/x86/setup.c
> @@ -2138,6 +2138,54 @@ int __hwdom_init xen_in_range(unsigned long mfn)
>      return 0;
>  }
>  
> +int __hwdom_init remove_xen_ranges(struct rangeset *r)
> +{
> +    paddr_t start, end;
> +    int rc;
> +
> +    /* S3 resume code (and other real mode trampoline code) */
> +    rc = rangeset_remove_range(r, PFN_DOWN(bootsym_phys(trampoline_start)),
> +                               PFN_DOWN(bootsym_phys(trampoline_end) - 1));

As per further v5 comments this wants to be

    rc = rangeset_remove_range(r, PFN_DOWN(bootsym_phys(trampoline_start)),
                               PFN_DOWN(bootsym_phys(trampoline_start)));

or some such, with suitable cross-referencing comments added here and on
the other side as to this only being a single page (unless this is already
somehow abstracted; I can't spot any respective assertion in xen.lds.S
though, for example).

Jan


From xen-devel-bounces@lists.xenproject.org Thu Jan 25 13:43:10 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 25 Jan 2024 13:43:10 +0000
Received: from list by lists.xenproject.org with outflank-mailman.671529.1044910 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rT00N-0000Py-PH; Thu, 25 Jan 2024 13:42:55 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 671529.1044910; Thu, 25 Jan 2024 13:42:55 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rT00N-0000Pr-MK; Thu, 25 Jan 2024 13:42:55 +0000
Received: by outflank-mailman (input) for mailman id 671529;
 Thu, 25 Jan 2024 13:42:54 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=vt1H=JD=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rT00M-0000Pl-Ni
 for xen-devel@lists.xenproject.org; Thu, 25 Jan 2024 13:42:54 +0000
Received: from mail-lj1-x236.google.com (mail-lj1-x236.google.com
 [2a00:1450:4864:20::236])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id a257946a-bb87-11ee-8a42-1f161083a0e0;
 Thu, 25 Jan 2024 14:42:53 +0100 (CET)
Received: by mail-lj1-x236.google.com with SMTP id
 38308e7fff4ca-2cf354613easo8861691fa.1
 for <xen-devel@lists.xenproject.org>; Thu, 25 Jan 2024 05:42:51 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 h15-20020a02b60f000000b0046e2ce45dafsm4509040jam.165.2024.01.25.05.42.48
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 25 Jan 2024 05:42:49 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: a257946a-bb87-11ee-8a42-1f161083a0e0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1706190170; x=1706794970; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=ucocFwjbJuOYLTmjV0LYYSNKRdd+VCNltMxWXEPDbhA=;
        b=c5cKnbVD3ZJIUy5EHwz3UAZ+edOAMLwRSyusBvnGej7ikbEye1j5EDqmZbEoilpTmL
         8ruMJVp48N1d39XLIBI4yoJtTQSWLuFuvJFOZLTM2y7bwzP6pzF0p1R4oUBt3EumF3DF
         yoIuqG01NvvWJFbbNLzglBLxhLuY8eIKaaQJgCqPTwd514lZgLr4xZLguKkh7agBWEG3
         N0FsBf2MmdxKWUt+Uc0QAOdKf4Q6xeW5i89UFevYqIwuNB6KV2cr6TOjRAcMaK4DAfOP
         +pfZm22knt7OgbeS1X8tIIClrrnKRcpPAJ9JvAkZnrjP9J+3N8sAXTmrKDS1Kv+nzlaA
         Bj/A==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706190170; x=1706794970;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=ucocFwjbJuOYLTmjV0LYYSNKRdd+VCNltMxWXEPDbhA=;
        b=bkPoGl/NEGHWC4FDiL6HPaYMSA5n5ly8q9dE+ZqrJTAv9kAGOhQ1RGnVU6hddpt7J3
         54UcDR4ygPUXZ8ENPcn0fv9LUIKm+rNZD7iNGCEUjNUzGjKj9V47BIV1W7cHogF6pUhC
         eLmpHg825wS8FyC+4HjXGkP7qtsyV0ORsk6a61acUaBrVvqsdW40acEn64pgLw+G6GEL
         iSiGuVAHXpVWN+ukCxtWYDfKbzgK2qgV5SybZ17/1511l9ggxE0RB6l5fumaUHDv5Kwd
         acyGInVhwHHUaQppNF4tfO6Fi82/JbC/NRGZG9WZthkVt004RUb7ntz0cEZLnnYvJ7FO
         QxIQ==
X-Gm-Message-State: AOJu0YxlfGCTP+B1mWCnbplQW3m3HxDD8QKGnhF9a4/u151CKG07anIm
	BDk54k10/iA9CJrB17pJ24bMke9OZPPcQLzGpH2lx7bxZzIUuPL/AuV9oabgKA==
X-Google-Smtp-Source: AGHT+IH8nEbvz2iYuiXbMI43jRWwb7AErbQlYzfsa1uMkgM2fX5pYutYu5whElS+4c/K/pAUZz/j2w==
X-Received: by 2002:a2e:7a0e:0:b0:2cf:1696:4ecc with SMTP id v14-20020a2e7a0e000000b002cf16964eccmr572535ljc.18.1706190170260;
        Thu, 25 Jan 2024 05:42:50 -0800 (PST)
Message-ID: <8073feb1-81c2-4f0e-835a-70940ec46dc2@suse.com>
Date: Thu, 25 Jan 2024 14:42:46 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] consolidate do_bug_frame() / bug_fn_t
Content-Language: en-US
To: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>,
 Federico Serafini <federico.serafini@bugseng.com>,
 George Dunlap <george.dunlap@citrix.com>, Julien Grall <julien@xen.org>,
 Wei Liu <wl@xen.org>, Bertrand Marquis <bertrand.marquis@arm.com>,
 Michal Orzel <michal.orzel@amd.com>,
 Stefano Stabellini <sstabellini@kernel.org>
References: <d466eb44-1160-4b57-a41f-752dbf626748@suse.com>
 <alpine.DEB.2.22.394.2401231731570.2287888@ubuntu-linux-20-04-desktop>
 <665b7ea9-77d9-4bbc-a67c-1ac0d9ba908a@suse.com>
 <37afd0b1-a6b3-41aa-8338-c99b68592c92@citrix.com>
 <b19ef7de-b55c-4a70-8b64-d0d4d5a96d93@suse.com>
 <1b109fd8-2a23-4ee8-88a4-e3bf48d2f4c5@citrix.com>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <1b109fd8-2a23-4ee8-88a4-e3bf48d2f4c5@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 25.01.2024 13:10, Andrew Cooper wrote:
> Answering out of order:
> 
> On 25/01/2024 8:15 am, Jan Beulich wrote:
>> All fine. Still I wonder whether in the meantime this patch isn't an
>> improvement on its own, and hence whether the const couldn't sensibly
>> be added subsequently.
> 
> We have a while until 4.19 goes out.  I would prefer to try and get this
> untangled properly, because half of your patch is in the opposite
> direction for getting the const-ness working.
> 
> If we start to hit rc1 and the const-ness isn't complete, we can revisit.
> 
> 
> Regarding the removal of gdb-stub.  I'd like to get that done, and
> rebase the remainder of the IRQ series over it, because it will reduce
> the churn in your IRQ series.  I'm happy to do the rebase if you want.

Shouldn't be overly difficult, so I guess I can as well do it before
(eventually) re-submitting.

>> On 25.01.2024 02:14, Andrew Cooper wrote:
>>> To make the serial code compile, I ended up having to revert patch 2 of
>>> the regs series, which I believe is safe to do following patch 3-5 which
>>> un-plumb the regs pointer deeper in the call chain.  If this is turns
>>> out to be true, then the patch ought to be added and reverted in the
>>> same series so it isn't left hanging about after the fact.
>> Hmm, I'm not sure I see how reverting that would end up working. However,
>> aiui you need to revert primarily for the non-const-ness of the pointers
>> involved in [gs]et_irq_regs(). I wonder whether, if we followed your
>> underlying thought here, those shouldn't be const-ified then anyway.
>>
>>> The _$X_poll() functions are used in timer context, which means there's
>>> an outer regs context already latched, and that's arguably a better
>>> context to use anyway for 'd'.
>> If the timer happens to run on an idle vCPU, what "outer regs context"
>> would we have there?
> 
> The only reason the serial infrastructure was setting up a fake IRQ
> context was because it was using run_in_exception_handler().
> 
> But I (think I have) removed that fully (and it simplifies things more
> than I was hoping).
> 
> With '%' deleted, it's only 'd' that cares, isn't it?

Yes.

>  And that's "dump the current regs", rather than wanting something else.

Question remains though: What are "current regs" when on an idle vCPU?
But perhaps that will clarify itself once I see how you "removed that
fully".

Jan


From xen-devel-bounces@lists.xenproject.org Thu Jan 25 14:08:37 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 25 Jan 2024 14:08:37 +0000
Received: from list by lists.xenproject.org with outflank-mailman.671538.1044921 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rT0P8-0004uU-Oc; Thu, 25 Jan 2024 14:08:30 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 671538.1044921; Thu, 25 Jan 2024 14:08:30 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rT0P8-0004uN-Lx; Thu, 25 Jan 2024 14:08:30 +0000
Received: by outflank-mailman (input) for mailman id 671538;
 Thu, 25 Jan 2024 14:08:29 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=vt1H=JD=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rT0P7-0004t3-66
 for xen-devel@lists.xenproject.org; Thu, 25 Jan 2024 14:08:29 +0000
Received: from mail-lj1-x22e.google.com (mail-lj1-x22e.google.com
 [2a00:1450:4864:20::22e])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 3624b681-bb8b-11ee-8a42-1f161083a0e0;
 Thu, 25 Jan 2024 15:08:28 +0100 (CET)
Received: by mail-lj1-x22e.google.com with SMTP id
 38308e7fff4ca-2cd0d05838fso80529671fa.1
 for <xen-devel@lists.xenproject.org>; Thu, 25 Jan 2024 06:08:28 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 dh7-20020a056e021f0700b0035ff0206ae6sm9633439ilb.17.2024.01.25.06.08.26
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 25 Jan 2024 06:08:26 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 3624b681-bb8b-11ee-8a42-1f161083a0e0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1706191707; x=1706796507; darn=lists.xenproject.org;
        h=content-transfer-encoding:autocrypt:subject:from:cc:to
         :content-language:user-agent:mime-version:date:message-id:from:to:cc
         :subject:date:message-id:reply-to;
        bh=+HuTXjxH4616szVPq8HliiCCadwqF+XGEvJNni08ZyM=;
        b=LHmz1c2449JbYSLyuNGlnr9WeDyHoXmKIFB4mjMEYVG/53XUFt+NkAfJuwl5pQo4eE
         b2b5cC3NSHPzh4zqLQYkgXR96CHL6ZvqVq6uDvSCwfpGiqae8OpEvRtn9G2cZ25q67Sm
         3sfRs0RvTMguxh+EO/i0zp+nli7wYLaVrWdFgjuPd7t/8VW3b071TuzvgDVAnUe0juNT
         3WtSumLLmXpkqwlXY+4sSmvSlrhznS6OYzbyoQd/5vJt0PVIZhifyPkFpPOWwCyyG+85
         3hKSPpprvfAe+uM4yjkQ9EIx0jZlFSRDQuUVofj7yJ+mf0IEt1iLh8jnKQViLPCCQ87u
         6jYA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706191707; x=1706796507;
        h=content-transfer-encoding:autocrypt:subject:from:cc:to
         :content-language:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=+HuTXjxH4616szVPq8HliiCCadwqF+XGEvJNni08ZyM=;
        b=DmUFAoXVN2e1QM8uoza13bVlyE+C01OFdI+G3Lp6gDDtlg5zAeLoB63WvGZgb/1WSf
         EPGC/fAhRG1dSMOc3gq9MChV+D+MXsqtAFZ7u9AA/sPyOwsDMcv7hMdrQ/lGncdlIyIo
         43blMGY4/gWbXw9vQNuuRB8wcvka5zhyLCYD0NY4hLoQKiSgFQoNzseMIlqkqmEkoocK
         MtouKRTCNKlQw5g8U+TAAojb5Qi+2rNF+k1QaZhvb5pS0f1HDg7AljfMeRNwywwb3ab7
         UbJdVEnY0HQYbmoFYSWJrq7+gbHfzZtiAUGJZPihJpfEwzHUigpPWKD7a58MyTK/dJUt
         luog==
X-Gm-Message-State: AOJu0Yy4esxswTwJgtA1vwc+H4hifBO0G/oM07PC1V9BI2+WR4wcz5vU
	yAdMsDytRHpbhQ3MQ+D84QUZy2EOKyaA5tgVql+JVNATViB4oQsFiaYW+j8FMLu+BMzWgpx7hvo
	=
X-Google-Smtp-Source: AGHT+IHG+r/xE89z+CI9uuliZdlEvOvQp9t0k7rwseUjyEd6Dh2rtvIK83bHF3RCjoBmBibX4nBYMQ==
X-Received: by 2002:a2e:984b:0:b0:2cd:7b5e:7358 with SMTP id e11-20020a2e984b000000b002cd7b5e7358mr544302ljj.25.1706191707394;
        Thu, 25 Jan 2024 06:08:27 -0800 (PST)
Message-ID: <6842ceff-a6cd-475d-b3bb-c828eee6c83a@suse.com>
Date: Thu, 25 Jan 2024 15:08:24 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Content-Language: en-US
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, Wei Liu <wl@xen.org>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
From: Jan Beulich <jbeulich@suse.com>
Subject: [PATCH] x86/APIC: purge {GET,SET}_APIC_DELIVERY_MODE()
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

The few uses we have can easily be replaced, eliminating the need for
redundant APIC_DM_* and APIC_MODE_* constants. Therefore also purge all
respective APIC_MODE_* constants, introducing APIC_DM_MASK anew instead.
This is further relevant since we have a different set of APIC_MODE_*,
which could otherwise end up confusing.

No functional change intended.

Signed-off-by: Jan Beulich <jbeulich@suse.com>

--- a/xen/arch/x86/apic.c
+++ b/xen/arch/x86/apic.c
@@ -263,22 +263,20 @@ void disconnect_bsp_APIC(int virt_wire_s
         if (!virt_wire_setup) {
             /* For LVT0 make it edge triggered, active high, external and enabled */
             value = apic_read(APIC_LVT0);
-            value &= ~(APIC_MODE_MASK | APIC_SEND_PENDING |
+            value &= ~(APIC_DM_MASK | APIC_SEND_PENDING |
                        APIC_INPUT_POLARITY | APIC_LVT_REMOTE_IRR |
                        APIC_LVT_LEVEL_TRIGGER | APIC_LVT_MASKED );
-            value |= APIC_LVT_REMOTE_IRR | APIC_SEND_PENDING;
-            value = SET_APIC_DELIVERY_MODE(value, APIC_MODE_EXTINT);
+            value |= APIC_LVT_REMOTE_IRR | APIC_SEND_PENDING | APIC_DM_EXTINT;
             apic_write(APIC_LVT0, value);
         }
 
         /* For LVT1 make it edge triggered, active high, nmi and enabled */
         value = apic_read(APIC_LVT1);
         value &= ~(
-            APIC_MODE_MASK | APIC_SEND_PENDING |
+            APIC_DM_MASK | APIC_SEND_PENDING |
             APIC_INPUT_POLARITY | APIC_LVT_REMOTE_IRR |
             APIC_LVT_LEVEL_TRIGGER | APIC_LVT_MASKED);
-        value |= APIC_LVT_REMOTE_IRR | APIC_SEND_PENDING;
-        value = SET_APIC_DELIVERY_MODE(value, APIC_MODE_NMI);
+        value |= APIC_LVT_REMOTE_IRR | APIC_SEND_PENDING | APIC_DM_NMI;
         apic_write(APIC_LVT1, value);
     }
 }
--- a/xen/arch/x86/cpu/mcheck/mce_intel.c
+++ b/xen/arch/x86/cpu/mcheck/mce_intel.c
@@ -139,12 +139,12 @@ static void intel_init_thermal(struct cp
      * BIOS has programmed on AP based on BSP's info we saved (since BIOS
      * is required to set the same value for all threads/cores).
      */
-    if ( (val & APIC_MODE_MASK) != APIC_DM_FIXED
+    if ( (val & APIC_DM_MASK) != APIC_DM_FIXED
          || (val & APIC_VECTOR_MASK) > 0xf )
         apic_write(APIC_LVTTHMR, val);
 
     if ( (msr_content & (1ULL<<3))
-         && (val & APIC_MODE_MASK) == APIC_DM_SMI )
+         && (val & APIC_DM_MASK) == APIC_DM_SMI )
     {
         if ( c == &boot_cpu_data )
             printk(KERN_DEBUG "Thermal monitoring handled by SMI\n");
--- a/xen/arch/x86/cpu/vpmu.c
+++ b/xen/arch/x86/cpu/vpmu.c
@@ -308,12 +308,12 @@ void vpmu_do_interrupt(void)
 
     vlapic_lvtpc = vlapic_get_reg(vlapic, APIC_LVTPC);
 
-    switch ( GET_APIC_DELIVERY_MODE(vlapic_lvtpc) )
+    switch ( vlapic_lvtpc & APIC_DM_MASK )
     {
-    case APIC_MODE_FIXED:
+    case APIC_DM_FIXED:
         vlapic_set_irq(vlapic, vlapic_lvtpc & APIC_VECTOR_MASK, 0);
         break;
-    case APIC_MODE_NMI:
+    case APIC_DM_NMI:
         sampling->arch.nmi_pending = true;
         break;
     }
--- a/xen/arch/x86/hvm/vlapic.c
+++ b/xen/arch/x86/hvm/vlapic.c
@@ -39,7 +39,7 @@
     (APIC_LVT_MASKED | APIC_SEND_PENDING | APIC_VECTOR_MASK)
 
 #define LINT_MASK   \
-    (LVT_MASK | APIC_MODE_MASK | APIC_INPUT_POLARITY |\
+    (LVT_MASK | APIC_DM_MASK | APIC_INPUT_POLARITY |\
     APIC_LVT_REMOTE_IRR | APIC_LVT_LEVEL_TRIGGER)
 
 static const unsigned int vlapic_lvt_mask[VLAPIC_LVT_NUM] =
@@ -47,9 +47,9 @@ static const unsigned int vlapic_lvt_mas
      /* LVTT */
      LVT_MASK | APIC_TIMER_MODE_MASK,
      /* LVTTHMR */
-     LVT_MASK | APIC_MODE_MASK,
+     LVT_MASK | APIC_DM_MASK,
      /* LVTPC */
-     LVT_MASK | APIC_MODE_MASK,
+     LVT_MASK | APIC_DM_MASK,
      /* LVT0-1 */
      LINT_MASK, LINT_MASK,
      /* LVTERR */
@@ -260,7 +260,7 @@ static void vlapic_init_sipi_one(struct
 {
     vcpu_pause(target);
 
-    switch ( icr & APIC_MODE_MASK )
+    switch ( icr & APIC_DM_MASK )
     {
     case APIC_DM_INIT: {
         bool fpu_initialised;
@@ -329,7 +329,7 @@ static void vlapic_accept_irq(struct vcp
     struct vlapic *vlapic = vcpu_vlapic(v);
     uint8_t vector = (uint8_t)icr_low;
 
-    switch ( icr_low & APIC_MODE_MASK )
+    switch ( icr_low & APIC_DM_MASK )
     {
     case APIC_DM_FIXED:
     case APIC_DM_LOWEST:
@@ -488,7 +488,7 @@ void vlapic_ipi(
 
     dest = _VLAPIC_ID(vlapic, icr_high);
 
-    switch ( icr_low & APIC_MODE_MASK )
+    switch ( icr_low & APIC_DM_MASK )
     {
     case APIC_DM_INIT:
     case APIC_DM_STARTUP:
@@ -993,7 +993,7 @@ int guest_wrmsr_x2apic(struct vcpu *v, u
     case APIC_LVTTHMR:
     case APIC_LVTPC:
     case APIC_CMCI:
-        if ( val & ~(LVT_MASK | APIC_MODE_MASK) )
+        if ( val & ~(LVT_MASK | APIC_DM_MASK) )
             return X86EMUL_EXCEPTION;
         break;
 
@@ -1017,7 +1017,7 @@ int guest_wrmsr_x2apic(struct vcpu *v, u
         break;
 
     case APIC_ICR:
-        if ( (uint32_t)val & ~(APIC_VECTOR_MASK | APIC_MODE_MASK |
+        if ( (uint32_t)val & ~(APIC_VECTOR_MASK | APIC_DM_MASK |
                                APIC_DEST_MASK | APIC_INT_ASSERT |
                                APIC_INT_LEVELTRIG | APIC_SHORT_MASK) )
             return X86EMUL_EXCEPTION;
@@ -1266,7 +1266,7 @@ static int __vlapic_accept_pic_intr(stru
               redir0.fields.dest_id == VLAPIC_ID(vlapic) &&
               !vlapic_disabled(vlapic)) ||
              /* LAPIC has LVT0 unmasked for ExtInts? */
-             ((lvt0 & (APIC_MODE_MASK|APIC_LVT_MASKED)) == APIC_DM_EXTINT) ||
+             ((lvt0 & (APIC_DM_MASK | APIC_LVT_MASKED)) == APIC_DM_EXTINT) ||
              /* LAPIC is fully disabled? */
              vlapic_hw_disabled(vlapic)));
 }
--- a/xen/arch/x86/include/asm/apicdef.h
+++ b/xen/arch/x86/include/asm/apicdef.h
@@ -68,6 +68,7 @@
 #define			APIC_DEST_MASK		0x00800
 #define			APIC_DEST_LOGICAL	0x00800
 #define			APIC_DEST_PHYSICAL	0x00000
+#define			APIC_DM_MASK		0x00700
 #define			APIC_DM_FIXED		0x00000
 #define			APIC_DM_LOWEST		0x00100
 #define			APIC_DM_SMI		0x00200
@@ -95,12 +96,6 @@
 #define			APIC_LVT_REMOTE_IRR		(1<<14)
 #define			APIC_INPUT_POLARITY		(1<<13)
 #define			APIC_SEND_PENDING		(1<<12)
-#define			APIC_MODE_MASK			0x700
-#define			GET_APIC_DELIVERY_MODE(x)	(((x)>>8)&0x7)
-#define			SET_APIC_DELIVERY_MODE(x,y)	(((x)&~0x700)|((y)<<8))
-#define				APIC_MODE_FIXED		0x0
-#define				APIC_MODE_NMI		0x4
-#define				APIC_MODE_EXTINT	0x7
 #define 	APIC_LVT1	0x360
 #define		APIC_LVTERR	0x370
 #define		APIC_TMICT	0x380
--- a/xen/arch/x86/oprofile/nmi_int.c
+++ b/xen/arch/x86/oprofile/nmi_int.c
@@ -290,7 +290,7 @@ static void cf_check nmi_cpu_stop(void *
 	 * power on apic lvt contain a zero vector nr which are legal only for
 	 * NMI delivery mode. So inhibit apic err before restoring lvtpc
 	 */
-	if ( (apic_read(APIC_LVTPC) & APIC_MODE_MASK) != APIC_DM_NMI
+	if ( (apic_read(APIC_LVTPC) & APIC_DM_MASK) != APIC_DM_NMI
 	     || (apic_read(APIC_LVTPC) & APIC_LVT_MASKED) )
 	{
 		printk("nmi_stop: APIC not good %ul\n", apic_read(APIC_LVTPC));


From xen-devel-bounces@lists.xenproject.org Thu Jan 25 14:12:52 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 25 Jan 2024 14:12:52 +0000
Received: from list by lists.xenproject.org with outflank-mailman.671543.1044931 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rT0TL-0006hE-9g; Thu, 25 Jan 2024 14:12:51 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 671543.1044931; Thu, 25 Jan 2024 14:12:51 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rT0TL-0006h7-5k; Thu, 25 Jan 2024 14:12:51 +0000
Received: by outflank-mailman (input) for mailman id 671543;
 Thu, 25 Jan 2024 14:12:49 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=vt1H=JD=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rT0TJ-0006h1-Kb
 for xen-devel@lists.xenproject.org; Thu, 25 Jan 2024 14:12:49 +0000
Received: from mail-lj1-x234.google.com (mail-lj1-x234.google.com
 [2a00:1450:4864:20::234])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id d0d86541-bb8b-11ee-98f5-efadbce2ee36;
 Thu, 25 Jan 2024 15:12:47 +0100 (CET)
Received: by mail-lj1-x234.google.com with SMTP id
 38308e7fff4ca-2cdf69bb732so74091161fa.3
 for <xen-devel@lists.xenproject.org>; Thu, 25 Jan 2024 06:12:47 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 h9-20020a0566380f0900b0046e3bcd98eesm4625016jas.172.2024.01.25.06.12.44
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 25 Jan 2024 06:12:45 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: d0d86541-bb8b-11ee-98f5-efadbce2ee36
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1706191967; x=1706796767; darn=lists.xenproject.org;
        h=content-transfer-encoding:autocrypt:subject:from:cc:to
         :content-language:user-agent:mime-version:date:message-id:from:to:cc
         :subject:date:message-id:reply-to;
        bh=gxxgccS1wSEPKkgUnRWqhvznqPhyruj6fiIenO88NeM=;
        b=CvVAunpqhuo2aBz2iOqp+xpPJ585yNQTGecjfZbOb3V88c9KRizBeezWAp64THcNoK
         nXzj4Gn+Wsrvus/XdX07MggA5UXpvvxqJcCvhJ7NTF00GW6BV9SxQBwkY+NlgVdKGV19
         BbRAn4ZLHpDeiJGJYafhOVPPcq+0Q7q2KbG6Wd63Fy0J/O5y3aE8bIgo4ndf7O83Hi12
         ltB136NKd9liZ7el3pvMdnbcZyXhUrabXou/OUoLQDKto+i1cxZlVi7pfMLbqF72rTwW
         7/4eWENsOFjFrLtwKKDDwHX1QMk4lW1zaGDFTLE6fC50aNPx5rXzk8Ma5qVYp+eKlbWH
         FDmg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706191967; x=1706796767;
        h=content-transfer-encoding:autocrypt:subject:from:cc:to
         :content-language:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=gxxgccS1wSEPKkgUnRWqhvznqPhyruj6fiIenO88NeM=;
        b=GfnSQmGh7LPfAPcoP18nKXpFk51WtmEJD3csG9FokN+aQMcXsSuYTIm6hSR43qY22S
         6lRA/HKb1HFQuNe92STzJ/KK0HrpMnb1SedPwqEBji3kAEaO6LFvODv+A42WBTpCjh8/
         C6BPOt1XQqw5XLom5EDv2ASu779NL3Z5IS3DSgCzmfuhHN53lCqE3Ve/ZrWWnBIC6bdU
         WlSsSXpmepopUaeMYBX7NXPNxrIC1PLCYSWAz7m4fB/WmGqFjwzUsilFT/JAGiMS1k6y
         lJOQEUZZr3ZNdSD8S2VC2I2BhaazE0LUUEDmKb+raS62cWwJNjny/V3yNQfLb4+CXom3
         U0Kw==
X-Gm-Message-State: AOJu0YwL69jd2/xzEsjrm4uqAPGEC+5MFsn4Vrkyb3H77O6yoqD/T+xQ
	KJq+tQCMzhTJaNrTYIgY+Nen4fDjXznYSTo4/ynWC3JP/oaODZ7+HO+UdARrIu2iQ55Q5bSLSRY
	=
X-Google-Smtp-Source: AGHT+IGovENTqxzjsjwjWmNL10NACWg2Gr2HgEoTxT7qhRWxplycGBueJjNzAZvqdrOoscjSYbRmXQ==
X-Received: by 2002:a2e:8046:0:b0:2cf:4017:64f5 with SMTP id p6-20020a2e8046000000b002cf401764f5mr104632ljg.37.1706191967015;
        Thu, 25 Jan 2024 06:12:47 -0800 (PST)
Message-ID: <fe289ca1-aa3a-49af-b7d7-70949237464b@suse.com>
Date: Thu, 25 Jan 2024 15:12:41 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Content-Language: en-US
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 George Dunlap <george.dunlap@citrix.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
From: Jan Beulich <jbeulich@suse.com>
Subject: [PATCH] x86: adjust initial setting of watchdog kind
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

"watchdog_timeout=0" is documented to disable the watchdog. Make sure
this also is true when there's a subsequent "watchdog" command line
option (and no further "watchdog_timeout=" one).

While there also switch watchdog_setup() to returning void, bringing it
in line with the !CONFIG_WATCHDOG case. Further amend command line
documentation to also mention the implicit effect of specifying a non-
zero timeout.

Signed-off-by: Jan Beulich <jbeulich@suse.com>
---
Alternatively "watchdog" following "watchdog_timeout=0" could be taken
to mean to use the default timeout again.

Really I think the comment in watchdog_setup() is wrong, and the
function would hence better go away. The CPU notifier registration can
surely be done in a pre-SMP initcall, which would have the benefit of
boot-time AP bringup then working the same as runtime CPU-onlining. (In
particular the set_timer() out of CPU_UP_PREPARE is a little suspicious,
as the timer can't possibly be run right away when a CPU isn't online
yet.) Which would leave __start_xen() to call watchdog_enable() in the
place it's calling watchdog_setup() now.

--- a/docs/misc/xen-command-line.pandoc
+++ b/docs/misc/xen-command-line.pandoc
@@ -2795,7 +2795,7 @@ unknown NMIs will still be processed.
 > Default: `5`
 
 Set the NMI watchdog timeout in seconds.  Specifying `0` will turn off
-the watchdog.
+the watchdog.  Specifying a non-zero value enables the watchdog.
 
 ### x2apic (x86)
 > `= <boolean>`
--- a/xen/arch/x86/nmi.c
+++ b/xen/arch/x86/nmi.c
@@ -473,7 +473,16 @@ bool watchdog_enabled(void)
     return !atomic_read(&watchdog_disable_count);
 }
 
-int __init watchdog_setup(void)
+void __init watchdog_configure(void)
+{
+    if ( !opt_watchdog_timeout )
+        opt_watchdog = false;
+
+    if ( opt_watchdog )
+        nmi_watchdog = NMI_LOCAL_APIC;
+}
+
+void __init watchdog_setup(void)
 {
     unsigned int cpu;
 
@@ -486,7 +495,6 @@ int __init watchdog_setup(void)
     register_cpu_notifier(&cpu_nmi_nfb);
 
     watchdog_enable();
-    return 0;
 }
 
 /* Returns false if this was not a watchdog NMI, true otherwise */
--- a/xen/arch/x86/setup.c
+++ b/xen/arch/x86/setup.c
@@ -1783,8 +1783,7 @@ void asmlinkage __init noreturn __start_
 
     open_softirq(NEW_TLBFLUSH_CLOCK_PERIOD_SOFTIRQ, new_tlbflush_clock_period);
 
-    if ( opt_watchdog ) 
-        nmi_watchdog = NMI_LOCAL_APIC;
+    watchdog_configure();
 
     find_smp_config();
 
--- a/xen/include/xen/watchdog.h
+++ b/xen/include/xen/watchdog.h
@@ -11,8 +11,11 @@
 
 #ifdef CONFIG_WATCHDOG
 
+/* Configure what, if any, watchdog to (try to) use. */
+void watchdog_configure(void);
+
 /* Try to set up a watchdog. */
-int watchdog_setup(void);
+void watchdog_setup(void);
 
 /* Enable the watchdog. */
 void watchdog_enable(void);


From xen-devel-bounces@lists.xenproject.org Thu Jan 25 14:13:58 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 25 Jan 2024 14:13:58 +0000
Received: from list by lists.xenproject.org with outflank-mailman.671544.1044941 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rT0UK-0007M1-MN; Thu, 25 Jan 2024 14:13:52 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 671544.1044941; Thu, 25 Jan 2024 14:13:52 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rT0UK-0007Ls-JG; Thu, 25 Jan 2024 14:13:52 +0000
Received: by outflank-mailman (input) for mailman id 671544;
 Thu, 25 Jan 2024 14:13:52 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=vt1H=JD=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rT0UK-0007Lm-0m
 for xen-devel@lists.xenproject.org; Thu, 25 Jan 2024 14:13:52 +0000
Received: from mail-lj1-x22b.google.com (mail-lj1-x22b.google.com
 [2a00:1450:4864:20::22b])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id f6a2b520-bb8b-11ee-8a42-1f161083a0e0;
 Thu, 25 Jan 2024 15:13:50 +0100 (CET)
Received: by mail-lj1-x22b.google.com with SMTP id
 38308e7fff4ca-2cf108d8dbeso35930861fa.3
 for <xen-devel@lists.xenproject.org>; Thu, 25 Jan 2024 06:13:50 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 h9-20020a0566380f0900b0046e3bcd98eesm4625016jas.172.2024.01.25.06.13.49
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 25 Jan 2024 06:13:50 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: f6a2b520-bb8b-11ee-8a42-1f161083a0e0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1706192030; x=1706796830; darn=lists.xenproject.org;
        h=content-transfer-encoding:autocrypt:subject:from:cc:to
         :content-language:user-agent:mime-version:date:message-id:from:to:cc
         :subject:date:message-id:reply-to;
        bh=fte/AGoa1OQ1snzZ1FbmIm+pebnFcv8JkyWs6so/7+k=;
        b=MpjttVWqbJYVCGCI1frqyRVL+onJg9js62OV31rX6j6JaIQJhoywAfuVYSuRX52nik
         OM+tYy0tFehZ2NM6ewhDM7C9EZALT3DYpPmXSO2/GWXB/kukyuIUctDz7Ez93gkXAodC
         eRk25seK5BJTij/grX2oJl3+Phagv+JZTpWsUfTpRHd1CV9MDNTsJhdcBmBeV2A817tN
         npP4j9Poch0gMcfHLw9jxWaeIXMU3v9fB1p1jcUxrDfF1wRscdhN5zWqB0lIpsaTh4QC
         S+VhanSqlGybAQ1NYyQgP85ISb4ZWdhAJEIDbjxnjRAXnJ5Zccx+wLFOkrFzpKJ6kUPM
         eftA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706192030; x=1706796830;
        h=content-transfer-encoding:autocrypt:subject:from:cc:to
         :content-language:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=fte/AGoa1OQ1snzZ1FbmIm+pebnFcv8JkyWs6so/7+k=;
        b=JaMhaCo8V1gR8p2Y0gkTb7BIDO+OBicIeHQkemie28YvjyuZY9xFohrsf52hAOAi0j
         1RZowkexlR/VeHe568IPi0l52xknc9W5D3hksmE0LC1CXrdfcKz3yNtX6sFj1ZRfMegF
         s6m1ZP0mqo7bibvgXOIWrNDPxC/1VL2PDFxIQT1kNDzFVuB54wl6WGNnKDKgfSJ5H7VG
         X5TQfQ78S9tnKpYo9ckEqbsULnvLDxBVzn/WkwncNmLJ2deT4sMNKDmj7LQqRC/DuMM8
         IJg9eUawhWXTGbG3fLnb6kV+SBp3b3Vu38Zgr3KdrxU2BO2dHgKFo0Rdwete7gwEFSxG
         zmhw==
X-Gm-Message-State: AOJu0YzAzkCak2wBjUZEejXkIFAeCylFCbB59oYbwKVLRdZkOA5BHOV6
	73eexdp/ciw9I17P6wStERD8z1JCIWFzKQ4CScEq59ZAtDg/Pb8DLGUCt1Plag1JEVKzU5LSlBY
	=
X-Google-Smtp-Source: AGHT+IFr/NLG6YrzJ/iL57m1TN8wG7bOWM1Kl/ylxE1Z+SLzwGZAMiI+3RKpZpkvCk3gABYGpR7TOw==
X-Received: by 2002:a2e:a984:0:b0:2cf:3fd3:507a with SMTP id x4-20020a2ea984000000b002cf3fd3507amr281642ljq.99.1706192030399;
        Thu, 25 Jan 2024 06:13:50 -0800 (PST)
Message-ID: <fd1e8ff0-0d85-47bd-85d6-6cfbfdd8813a@suse.com>
Date: Thu, 25 Jan 2024 15:13:48 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Content-Language: en-US
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, Wei Liu <wl@xen.org>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
From: Jan Beulich <jbeulich@suse.com>
Subject: [PATCH] x86: purge NMI_IO_APIC
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

Even going back to 3.2 source code, I can't spot how this watchdog mode
could ever have been enabled in Xen. The only effect its presence had
for all the years was the retaining of a dead string literal.

Signed-off-by: Jan Beulich <jbeulich@suse.com>

--- a/xen/arch/x86/include/asm/apic.h
+++ b/xen/arch/x86/include/asm/apic.h
@@ -186,7 +186,6 @@ extern void check_nmi_watchdog(void);
 
 extern unsigned int nmi_watchdog;
 #define NMI_NONE	0
-#define NMI_IO_APIC	1
-#define NMI_LOCAL_APIC	2
+#define NMI_LOCAL_APIC	1
 
 #endif /* __ASM_APIC_H */
--- a/xen/arch/x86/io_apic.c
+++ b/xen/arch/x86/io_apic.c
@@ -2004,11 +2004,6 @@ static void __init check_timer(void)
     }
     printk(" failed.\n");
 
-    if (nmi_watchdog == NMI_IO_APIC) {
-        printk(KERN_WARNING "timer doesn't work through the IO-APIC - disabling NMI Watchdog!\n");
-        nmi_watchdog = 0;
-    }
-
     printk(KERN_INFO "...trying to set up timer as Virtual Wire IRQ...");
 
     disable_8259A_irq(irq_to_desc(0));


From xen-devel-bounces@lists.xenproject.org Thu Jan 25 14:18:01 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 25 Jan 2024 14:18:01 +0000
Received: from list by lists.xenproject.org with outflank-mailman.671557.1044951 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rT0YK-0008FU-84; Thu, 25 Jan 2024 14:18:00 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 671557.1044951; Thu, 25 Jan 2024 14:18:00 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rT0YK-0008FN-58; Thu, 25 Jan 2024 14:18:00 +0000
Received: by outflank-mailman (input) for mailman id 671557;
 Thu, 25 Jan 2024 14:17:58 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=vt1H=JD=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rT0YI-0008FH-OG
 for xen-devel@lists.xenproject.org; Thu, 25 Jan 2024 14:17:58 +0000
Received: from mail-lj1-x231.google.com (mail-lj1-x231.google.com
 [2a00:1450:4864:20::231])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 89cb61b0-bb8c-11ee-8a42-1f161083a0e0;
 Thu, 25 Jan 2024 15:17:57 +0100 (CET)
Received: by mail-lj1-x231.google.com with SMTP id
 38308e7fff4ca-2cf1524cb17so35162571fa.2
 for <xen-devel@lists.xenproject.org>; Thu, 25 Jan 2024 06:17:57 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 ck12-20020a056e02370c00b003627a7f95a7sm3152941ilb.0.2024.01.25.06.17.55
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 25 Jan 2024 06:17:56 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 89cb61b0-bb8c-11ee-8a42-1f161083a0e0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1706192277; x=1706797077; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=r5fQXMPxMD8d8Klb1wbUEWroUKuBsn+nFLixeJAmMys=;
        b=DIjgRlMz2XuRzBy55fPIovZMuPSeNNSA2Pf77dc6vtL/79sK77ZSRW4aOKIMgjk5If
         lwIBEI+XKhhIzQLAbuI86bqRze29nKtQz9KoML+1++vcnw5ru0gGFZr4n6RZ4/sC0HKb
         3/a1YTDSEsu8I7IYIURfgzeW8+Yc7H548FfJz6SB5BzK+1U31mVLV8eAvlszjFpmiKQ3
         ncGvRxPK0UwwfTrFRDkDPeqAqUSXpyKXhhdW9wt7FUJ64xjDq0OimPcqEI4ToDsHi2d3
         3O3x/JnXBw3Zy2LYtlqrVHHFm0tCDEbXWHIkXgHlr9UKUqGCpnOWf3a4CU/gttax/56V
         w2Ng==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706192277; x=1706797077;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=r5fQXMPxMD8d8Klb1wbUEWroUKuBsn+nFLixeJAmMys=;
        b=FNAWubIT9pVthATXhKhI3IMqZa52hjPOLAQinCy6dJru7h1t97y9WRaoxcN1x/qWNs
         5GEH7hKK5xs2FOlz9375+Rk1k4AHaBX4rcy6MsNS1pw2Wo4tHBUucfNrkB6B/NaZHhtb
         T2KWMg/RPSP81UKOFtivLtFnVph0BNIgyO8cYqF1uG4HdGPVNROG+EBKR6xNAVQQx66m
         p+XnT1RwfYumx/rBhhLass5wHMMMUxsqpBYYoIamLZTE4gdb4mOi6heEMXq25S5aFfkE
         gSZtViuJLi7siM+8mCpqueHoOT2Qjf4SKEpo81OclQMW9G3v8Ooz9aitkhcWIdBs2d45
         9gyQ==
X-Gm-Message-State: AOJu0YzWGn/4SGlpDyBJ/1/J2DWE3tU4Kp9MOZEQYetm7mkxx9+KDIb8
	uOFChcAZ8QuqpfY/PKlPVKZe5m2UuoH2BPnce+K6yEPmP54LbLFs3TTW/KWbLA==
X-Google-Smtp-Source: AGHT+IHHn1IECyxt7jsjj6zdwojDaJKS6OyOvWzDPZTgjn/xWwMtYN1IyUI0T7RsMQxvdj9q+b9GjA==
X-Received: by 2002:a2e:9158:0:b0:2cf:3238:ebe3 with SMTP id q24-20020a2e9158000000b002cf3238ebe3mr494846ljg.55.1706192277336;
        Thu, 25 Jan 2024 06:17:57 -0800 (PST)
Message-ID: <719c3002-46f8-47de-afd7-c17fded0e4e6@suse.com>
Date: Thu, 25 Jan 2024 15:17:53 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v5 2/3] x86/iommu: switch hwdom IOMMU to use a rangeset
Content-Language: en-US
To: Roger Pau Monne <roger.pau@citrix.com>
Cc: Oleksii Kurochko <oleksii.kurochko@gmail.com>,
 Community Manager <community.manager@xenproject.org>,
 Paul Durrant <paul@xen.org>, xen-devel@lists.xenproject.org
References: <20240124172953.29814-1-roger.pau@citrix.com>
 <20240124172953.29814-3-roger.pau@citrix.com>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <20240124172953.29814-3-roger.pau@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 24.01.2024 18:29, Roger Pau Monne wrote:
> The current loop that iterates from 0 to the maximum RAM address in order to
> setup the IOMMU mappings is highly inefficient, and it will get worse as the
> amount of RAM increases.  It's also not accounting for any reserved regions
> past the last RAM address.
> 
> Instead of iterating over memory addresses, iterate over the memory map regions
> and use a rangeset in order to keep track of which ranges need to be identity
> mapped in the hardware domain physical address space.
> 
> On an AMD EPYC 7452 with 512GiB of RAM, the time to execute
> arch_iommu_hwdom_init() in nanoseconds is:
> 
> x old
> + new
>     N           Min           Max        Median           Avg        Stddev
> x   5 2.2364154e+10  2.338244e+10 2.2474685e+10 2.2622409e+10 4.2949869e+08
> +   5       1025012       1033036       1026188     1028276.2     3623.1194
> Difference at 95.0% confidence
>         -2.26214e+10 +/- 4.42931e+08
>         -99.9955% +/- 9.05152e-05%
>         (Student's t, pooled s = 3.03701e+08)
> 
> Execution time of arch_iommu_hwdom_init() goes down from ~22s to ~0.001s.
> 
> Note there's a change for HVM domains (ie: PVH dom0) that get switched to
> create the p2m mappings using map_mmio_regions() instead of
> p2m_add_identity_entry(), so that ranges can be mapped with a single function
> call if possible.  Note that the interface of map_mmio_regions() doesn't
> allow creating read-only mappings, but so far there are no such mappings
> created for PVH dom0 in arch_iommu_hwdom_init().
> 
> No change intended in the resulting mappings that a hardware domain gets.
> 
> Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>

Reviewed-by: Jan Beulich <jbeulich@suse.com>




From xen-devel-bounces@lists.xenproject.org Thu Jan 25 14:22:56 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 25 Jan 2024 14:22:56 +0000
Received: from list by lists.xenproject.org with outflank-mailman.671562.1044962 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rT0d1-0002Mz-Oz; Thu, 25 Jan 2024 14:22:51 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 671562.1044962; Thu, 25 Jan 2024 14:22:51 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rT0d1-0002Mq-KU; Thu, 25 Jan 2024 14:22:51 +0000
Received: by outflank-mailman (input) for mailman id 671562;
 Thu, 25 Jan 2024 14:22:50 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=vt1H=JD=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rT0d0-0002Mk-1w
 for xen-devel@lists.xenproject.org; Thu, 25 Jan 2024 14:22:50 +0000
Received: from mail-lj1-x22b.google.com (mail-lj1-x22b.google.com
 [2a00:1450:4864:20::22b])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 36c39bc4-bb8d-11ee-98f5-efadbce2ee36;
 Thu, 25 Jan 2024 15:22:47 +0100 (CET)
Received: by mail-lj1-x22b.google.com with SMTP id
 38308e7fff4ca-2cf3a095ba6so5804781fa.2
 for <xen-devel@lists.xenproject.org>; Thu, 25 Jan 2024 06:22:47 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 l4-20020a056e020e4400b00361a956a57bsm4722978ilk.53.2024.01.25.06.22.05
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 25 Jan 2024 06:22:20 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 36c39bc4-bb8d-11ee-98f5-efadbce2ee36
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1706192567; x=1706797367; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:cc:references
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=jjgE4/eD39pLbdN37dGtPPl8iUShLmoC1ifdou/kWqM=;
        b=Qxu3tO092/8Fl54UTO8Ywv2ZR7dFI5UozoRz9hHe07gXzXeqWHETjVvLLj3vRjF/IU
         q8wlzc7rH6C1Apf+xybC2Q0EeIA2bf29O8IPoAOclubRWE1tkUhzyGPQ+ii4Xa5A7FyR
         SELcApEos42zycb0egVw2qclAZHLa3UT3GdKQq+NAJqbS302KKMoZ5qqVvcLqPz+ilFv
         31ct4rWNa8xYLjzuT2jvkEAuO68myAhyq8sGGTvZ45k6lybP+ArwG8go6HcytHzspKTC
         5QF82cuJDbzAZ9QAfx7tCV6b076HdJ3FO+gx4OAczdQJ16KLZ8PScy7PMJwQbPivUVt0
         jj+Q==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706192567; x=1706797367;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:cc:references
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=jjgE4/eD39pLbdN37dGtPPl8iUShLmoC1ifdou/kWqM=;
        b=Y8s3dG5zrYCKEXMga+hAxVM51sYkpzTsvp1EUq9KF6DJwOQL00vH21hMGmDnOkCve0
         s0WdgDQ6uiTc8HostL3pDvrwt29KT5ehpr2KWWMIYWvZM7IEnSvplWkPKz+P+579t6u3
         zEpdkNcnAHD0BFlaNMqfBTu6RGj7RV3lQhOiUxcL+Fk3q4MvQDJKUqufVpnY3JlytYHn
         RqBGYX+rhgZrXJWfwp71d8/5tSOvt9ny/pKkmaaXkTdYIkUFCQzn1i46FrrSHaE663J7
         4uVsSj/89Xgm+8YJjf8T7bknODCM4TMPiN6XrsZJdygdLw9tBTiuhjtHu6iLfGe9yp+F
         ADqw==
X-Gm-Message-State: AOJu0YzFu8zquelhDOqfuZT34+nLtSp9kedkm3osI2ph6wv/zwfoXgCy
	CkCks/jf9qwWIG2G9Vt8JHj2EbNCXiKl2rSDpOIcrqm+zHECktu/Q93eOYk20hHoItyO286AG8E
	=
X-Google-Smtp-Source: AGHT+IFoxCuetn85ahuq6bc2E6CJTIq3V2N4smbbROBR/a//nl9GHAtUrc/tpR5KuYWS7oUZnvuklQ==
X-Received: by 2002:a2e:8882:0:b0:2cf:2a9f:7eaf with SMTP id k2-20020a2e8882000000b002cf2a9f7eafmr644140lji.36.1706192567464;
        Thu, 25 Jan 2024 06:22:47 -0800 (PST)
Message-ID: <c6af3d7a-c67f-449f-a04a-1de18db07fc6@suse.com>
Date: Thu, 25 Jan 2024 15:21:56 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2 1/2] pmstat: Limit hypercalls under HWP
Content-Language: en-US
To: Jason Andryuk <jandryuk@gmail.com>
References: <20240124205922.67266-1-jandryuk@gmail.com>
 <20240124205922.67266-2-jandryuk@gmail.com>
Cc: xen-devel@lists.xenproject.org
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <20240124205922.67266-2-jandryuk@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 24.01.2024 21:59, Jason Andryuk wrote:
> When HWP is active, the cpufreq P-state information is not updated.  In
> that case, return -EOPNOTSUPP instead of bogus, incomplete info.
> 
> Similarly, set_cpufreq_para() is not applicable when HWP is active.
> Many of the options already checked the governor and were inaccessible,
> but SCALING_MIN/MAX_FREQ was still accessible (though it would do
> nothing).  Add an ealier HWP check to handle all cases.
> 
> Signed-off-by: Jason Andryuk <jandryuk@gmail.com>

Reviewed-by: Jan Beulich <jbeulich@suse.com>




From xen-devel-bounces@lists.xenproject.org Thu Jan 25 14:31:17 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 25 Jan 2024 14:31:17 +0000
Received: from list by lists.xenproject.org with outflank-mailman.671568.1044971 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rT0l5-0004bU-Gh; Thu, 25 Jan 2024 14:31:11 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 671568.1044971; Thu, 25 Jan 2024 14:31:11 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rT0l5-0004bN-Dm; Thu, 25 Jan 2024 14:31:11 +0000
Received: by outflank-mailman (input) for mailman id 671568;
 Thu, 25 Jan 2024 14:31:10 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=vt1H=JD=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rT0l4-0004bH-5u
 for xen-devel@lists.xenproject.org; Thu, 25 Jan 2024 14:31:10 +0000
Received: from mail-lj1-x229.google.com (mail-lj1-x229.google.com
 [2a00:1450:4864:20::229])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 6095bccb-bb8e-11ee-98f5-efadbce2ee36;
 Thu, 25 Jan 2024 15:31:07 +0100 (CET)
Received: by mail-lj1-x229.google.com with SMTP id
 38308e7fff4ca-2cf205dc075so22545141fa.2
 for <xen-devel@lists.xenproject.org>; Thu, 25 Jan 2024 06:31:07 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 u15-20020a056638134f00b0046b6f096e3bsm4200408jad.134.2024.01.25.06.31.05
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 25 Jan 2024 06:31:06 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 6095bccb-bb8e-11ee-98f5-efadbce2ee36
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1706193067; x=1706797867; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=LvXwS8XGm0gZ26k92bMdl1h5JsxkeaxXRpPPMNYEY1g=;
        b=YriuM1NbsYYqfo2emOuPoV3LjdOtKJATeKrsO8QHxLx/oMo8HKUSbvjVi6i3GItLiS
         KgJJQrG4SVIZ2NB5pr2T74KwCwk1WlanBeXCAOxqceAlbloktjhXjd4dc8BszZNBuULF
         wI0QPHWGmUpVWwQm1748aVn9a9K0AGfUU4htc2rDmNw0OYXcsU6HmggAW0j36jfvSvCQ
         qLlNxLesmCiUxfdbWaPKz3vLhaML8LMZtG6FBC3oW2FiKPTPNWe1oGM80p8pPUIWQuJR
         Hk2piXuPKRiVUH/USVnawrmRYJ2QNftJdT+JAxrxeP7mzxi9iBs/IaU8bQyycbP5vKfm
         hPQw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706193067; x=1706797867;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=LvXwS8XGm0gZ26k92bMdl1h5JsxkeaxXRpPPMNYEY1g=;
        b=uQCqqHX+XYWXlXI9s7S06QoCjyKENnjamlh/kS/EzDn0BGwIaXcTkjcSzb8pAdM/4Y
         9Sf9ZNwlG8ujF87+ZygnOfaGBGIs3w0oyhZWMCx2syzNgRAvRSNdKDl3f8T5KApR0W41
         v8HkOJ1586WLS3CMFoH6UmJxgwBZ6WEp/qTeyz06YMi7dYtwxX+AbkaJ7rGEZQx7T+xp
         rZRD8LTFxj9bWt3fBF59vYR5sawqK8m+Rt83IkukffQEhPAEeRdmMTnAYq823uCim6Do
         sH5KxCAHk/tRzLB6333sEyd/WA+2CiNRP3X8UGLw4wi7buHIEmf6pqcBDrFx7QIB3Ybn
         07/Q==
X-Gm-Message-State: AOJu0YwAALQ3IDpCtiVVwnWaHjsawQnQBucmQwYBRIPGFbmpY4/CWX4g
	Qay47NfD5Ih5bMSAjVAa8Bf64jpvJiN152scho/r+mq8TfEoEN204k56z18rQQ==
X-Google-Smtp-Source: AGHT+IGVU5sjw8LciQwdI4EXIt1uc2D+ECWTuEtNxLQDhsGnReNkom0aebe+kjdyY3G0icQ1rOAcLw==
X-Received: by 2002:a2e:b1c1:0:b0:2cd:fc1c:a1dd with SMTP id e1-20020a2eb1c1000000b002cdfc1ca1ddmr601535lja.11.1706193067121;
        Thu, 25 Jan 2024 06:31:07 -0800 (PST)
Message-ID: <a9d6efce-8185-4dc8-b1d3-097ec49e3b28@suse.com>
Date: Thu, 25 Jan 2024 15:31:03 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2 2/2] xenpm: Print message for disabled commands
Content-Language: en-US
To: Jason Andryuk <jandryuk@gmail.com>
Cc: Wei Liu <wl@xen.org>, Anthony PERARD <anthony.perard@citrix.com>,
 xen-devel@lists.xenproject.org
References: <20240124205922.67266-1-jandryuk@gmail.com>
 <20240124205922.67266-3-jandryuk@gmail.com>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <20240124205922.67266-3-jandryuk@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 24.01.2024 21:59, Jason Andryuk wrote:
> xenpm get-cpufreq-states currently just prints no output when cpufreq is
> disabled or HWP is running.  Have it print an appropriate message.  The
> cpufreq disabled one mirros the cpuidle disabled one.
> 
> cpufreq disabled:
> $ xenpm get-cpufreq-states
> Either Xen cpufreq is disabled or no valid information is registered!
> 
> Under HWP:
> $ xenpm get-cpufreq-states
> P-State information not supported.  Try get-cpufreq-average or start.
> 
> Also allow xenpm to handle EOPNOTSUPP from the pmstat hypercalls.
> EOPNOTSUPP is returned when HWP is active in some cases and allows the
> differentiation from cpufreq being disabled.
> 
> Signed-off-by: Jason Andryuk <jandryuk@gmail.com>

Largely okay, but a number of cosmetic remarks / nits:

> --- a/tools/misc/xenpm.c
> +++ b/tools/misc/xenpm.c
> @@ -362,7 +362,15 @@ static int show_pxstat_by_cpuid(xc_interface *xc_handle, int cpuid)
>  
>      ret = get_pxstat_by_cpuid(xc_handle, cpuid, &pxstatinfo);
>      if ( ret )
> +    {
> +        if ( ret == -ENODEV )
> +            fprintf(stderr,
> +                    "Either Xen cpufreq is disabled or no valid information is registered!\n");
> +       else if ( ret == -EOPNOTSUPP )

One too few blanks for indentation.

> +            fprintf(stderr,
> +                    "P-State information not supported.  Try get-cpufreq-average or start.\n");

Especially the "or start" part reads odd without any quotation.

> @@ -382,9 +390,11 @@ void pxstat_func(int argc, char *argv[])
>      {
>          /* show pxstates on all cpus */
>          int i;
> -        for ( i = 0; i < max_cpu_nr; i++ )
> -            if ( show_pxstat_by_cpuid(xc_handle, i) == -ENODEV )
> +        for ( i = 0; i < max_cpu_nr; i++ ) {

This file tries to follow hypervisor style, so the brace ought to
go on its own line. While there may I ask that you also add the
missing blank line (separating declaration from statements)? This
then also applies ...

> +            int ret = show_pxstat_by_cpuid(xc_handle, i);
> +            if ( ret == -ENODEV || ret == -EOPNOTSUPP )

... between these two new lines.

>                  break;
> +	}

Hard tab?

> @@ -473,7 +483,8 @@ static void signal_int_handler(int signo)
>                  }
>      }
>  
> -    if ( get_pxstat_by_cpuid(xc_handle, 0, NULL) != -ENODEV )
> +    ret = get_pxstat_by_cpuid(xc_handle, 0, NULL);
> +    if ( ret != -ENODEV && ret != -EOPNOTSUPP )

While looking odd, I can see why it wants to be this way.

Jan


From xen-devel-bounces@lists.xenproject.org Thu Jan 25 14:34:02 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 25 Jan 2024 14:34:02 +0000
Received: from list by lists.xenproject.org with outflank-mailman.671571.1044980 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rT0no-0005Tu-Ts; Thu, 25 Jan 2024 14:34:00 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 671571.1044980; Thu, 25 Jan 2024 14:34:00 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rT0no-0005Tn-Qy; Thu, 25 Jan 2024 14:34:00 +0000
Received: by outflank-mailman (input) for mailman id 671571;
 Thu, 25 Jan 2024 14:33:58 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rT0nm-0005SO-Rg; Thu, 25 Jan 2024 14:33:58 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rT0nm-00055i-LP; Thu, 25 Jan 2024 14:33:58 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rT0nm-0007Fz-42; Thu, 25 Jan 2024 14:33:58 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rT0nm-0000Ec-11; Thu, 25 Jan 2024 14:33:58 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=VISG/42Nlu+EIl8JhNGpWLSlT8/b+vTSIC4boY1oLjA=; b=t6VAr1GPfVBSmqcU+b/g3xxXSu
	E9XvoFslTGDOa/gXnmioJxlGFtMIqa19eCKXD+C7fu+zfUolYDmoiwWg6rNoQQxTKVxViTzim1kak
	ITCR9+c4FUeRVEWM451C5h94JzPzOfxj41T5Ok5orpNwGHuqr8LpWKPyPj6KvX+wpbmM=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184456-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [linux-linus test] 184456: tolerable FAIL - PUSHED
X-Osstest-Failures:
    linux-linus:test-amd64-amd64-freebsd12-amd64:guest-localmigrate/x10:fail:heisenbug
    linux-linus:test-armhf-armhf-libvirt:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    linux-linus:test-amd64-amd64-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    linux-linus:test-amd64-amd64-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-qcow2:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-raw:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    linux-linus:test-amd64-amd64-qemuu-nested-amd:debian-hvm-install/l1/l2:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-xsm:migrate-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-thunderx:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-thunderx:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-libvirt-xsm:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-libvirt-xsm:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-credit2:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-credit2:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-xsm:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-xsm:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-credit1:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-credit1:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-arndale:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-arndale:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-rtds:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-rtds:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-multivcpu:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-multivcpu:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-libvirt-raw:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-vhd:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-vhd:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-qcow2:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-vhd:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-vhd:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-qcow2:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit1:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit1:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit2:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit2:saverestore-support-check:fail:nonblocking
X-Osstest-Versions-This:
    linux=443b349019f2d9461b23213a4308f9cf72e41c5e
X-Osstest-Versions-That:
    linux=615d300648869c774bd1fe54b4627bb0c20faed4
From: osstest service owner <osstest-admin@xenproject.org>
Date: Thu, 25 Jan 2024 14:33:58 +0000

flight 184456 linux-linus real [real]
flight 184463 linux-linus real-retest [real]
http://logs.test-lab.xenproject.org/osstest/logs/184456/
http://logs.test-lab.xenproject.org/osstest/logs/184463/

Failures :-/ but no regressions.

Tests which are failing intermittently (not blocking):
 test-amd64-amd64-freebsd12-amd64 19 guest-localmigrate/x10 fail pass in 184463-retest

Tests which did not succeed, but are not blocking:
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 184443
 test-amd64-amd64-xl-qemut-win7-amd64 19 guest-stop            fail like 184443
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 184443
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 184443
 test-armhf-armhf-libvirt-qcow2 15 saverestore-support-check   fail like 184443
 test-armhf-armhf-libvirt-raw 15 saverestore-support-check    fail  like 184443
 test-amd64-amd64-xl-qemut-ws16-amd64 19 guest-stop            fail like 184443
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 184443
 test-amd64-amd64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt     15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-thunderx 15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-thunderx 16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl          15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl          16 saverestore-support-check    fail   never pass
 test-arm64-arm64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-xsm 16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-credit2  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit2  16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-xsm      15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-xsm      16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-credit1  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit1  16 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-armhf-armhf-xl-arndale  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-arndale  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-rtds     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-rtds     16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-multivcpu 15 migrate-support-check        fail  never pass
 test-armhf-armhf-xl-multivcpu 16 saverestore-support-check    fail  never pass
 test-armhf-armhf-libvirt     15 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 15 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-raw 14 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-vhd      14 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-vhd      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-qcow2 14 migrate-support-check        fail never pass
 test-armhf-armhf-libvirt-raw 14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      15 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-qcow2 14 migrate-support-check        fail never pass
 test-armhf-armhf-xl          15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-credit1  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit1  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-credit2  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit2  16 saverestore-support-check    fail   never pass

version targeted for testing:
 linux                443b349019f2d9461b23213a4308f9cf72e41c5e
baseline version:
 linux                615d300648869c774bd1fe54b4627bb0c20faed4

Last test of basis   184443  2024-01-24 01:43:31 Z    1 days
Testing same since   184456  2024-01-24 20:14:07 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Fullway Wang <fullwaywang@outlook.com>
  Geert Uytterhoeven <geert+renesas@glider.be>
  Helge Deller <deller@gmx.de>
  Jiapeng Chong <jiapeng.chong@linux.alibaba.com>
  Kees Cook <keescook@chromium.org>
  Linus Torvalds <torvalds@linux-foundation.org>

jobs:
 build-amd64-xsm                                              pass    
 build-arm64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64                                                  pass    
 build-arm64                                                  pass    
 build-armhf                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-arm64-libvirt                                          pass    
 build-armhf-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-pvops                                            pass    
 build-arm64-pvops                                            pass    
 build-armhf-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-amd64-amd64-xl                                          pass    
 test-amd64-coresched-amd64-xl                                pass    
 test-arm64-arm64-xl                                          pass    
 test-armhf-armhf-xl                                          pass    
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm           pass    
 test-amd64-amd64-xl-qemut-stubdom-debianhvm-amd64-xsm        pass    
 test-amd64-amd64-xl-qemut-debianhvm-i386-xsm                 pass    
 test-amd64-amd64-xl-qemuu-debianhvm-i386-xsm                 pass    
 test-amd64-amd64-libvirt-xsm                                 pass    
 test-arm64-arm64-libvirt-xsm                                 pass    
 test-amd64-amd64-xl-xsm                                      pass    
 test-arm64-arm64-xl-xsm                                      pass    
 test-amd64-amd64-qemuu-nested-amd                            fail    
 test-amd64-amd64-xl-pvhv2-amd                                pass    
 test-amd64-amd64-dom0pvh-xl-amd                              pass    
 test-amd64-amd64-xl-qemut-debianhvm-amd64                    pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64                    pass    
 test-amd64-amd64-freebsd11-amd64                             pass    
 test-amd64-amd64-freebsd12-amd64                             fail    
 test-amd64-amd64-xl-qemuu-ovmf-amd64                         pass    
 test-amd64-amd64-xl-qemut-win7-amd64                         fail    
 test-amd64-amd64-xl-qemuu-win7-amd64                         fail    
 test-amd64-amd64-xl-qemut-ws16-amd64                         fail    
 test-amd64-amd64-xl-qemuu-ws16-amd64                         fail    
 test-armhf-armhf-xl-arndale                                  pass    
 test-amd64-amd64-examine-bios                                pass    
 test-amd64-amd64-xl-credit1                                  pass    
 test-arm64-arm64-xl-credit1                                  pass    
 test-armhf-armhf-xl-credit1                                  pass    
 test-amd64-amd64-xl-credit2                                  pass    
 test-arm64-arm64-xl-credit2                                  pass    
 test-armhf-armhf-xl-credit2                                  pass    
 test-amd64-amd64-xl-qemuu-dmrestrict-amd64-dmrestrict        pass    
 test-amd64-amd64-examine                                     pass    
 test-arm64-arm64-examine                                     pass    
 test-armhf-armhf-examine                                     pass    
 test-amd64-amd64-qemuu-nested-intel                          pass    
 test-amd64-amd64-xl-pvhv2-intel                              pass    
 test-amd64-amd64-dom0pvh-xl-intel                            pass    
 test-amd64-amd64-libvirt                                     pass    
 test-armhf-armhf-libvirt                                     pass    
 test-amd64-amd64-xl-multivcpu                                pass    
 test-armhf-armhf-xl-multivcpu                                pass    
 test-amd64-amd64-pair                                        pass    
 test-amd64-amd64-libvirt-pair                                pass    
 test-amd64-amd64-xl-pvshim                                   pass    
 test-amd64-amd64-pygrub                                      pass    
 test-amd64-amd64-libvirt-qcow2                               pass    
 test-armhf-armhf-libvirt-qcow2                               pass    
 test-amd64-amd64-libvirt-raw                                 pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-armhf-armhf-libvirt-raw                                 pass    
 test-amd64-amd64-xl-rtds                                     pass    
 test-armhf-armhf-xl-rtds                                     pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64-shadow             pass    
 test-amd64-amd64-xl-shadow                                   pass    
 test-arm64-arm64-xl-thunderx                                 pass    
 test-amd64-amd64-examine-uefi                                pass    
 test-amd64-amd64-xl-vhd                                      pass    
 test-arm64-arm64-xl-vhd                                      pass    
 test-armhf-armhf-xl-vhd                                      pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Pushing revision :

hint: The 'hooks/update' hook was ignored because it's not set as executable.
hint: You can disable this warning with `git config advice.ignoredHook false`.
hint: The 'hooks/post-receive' hook was ignored because it's not set as executable.
hint: You can disable this warning with `git config advice.ignoredHook false`.
hint: The 'hooks/post-update' hook was ignored because it's not set as executable.
hint: You can disable this warning with `git config advice.ignoredHook false`.
To xenbits.xen.org:/home/xen/git/linux-pvops.git
   615d30064886..443b349019f2  443b349019f2d9461b23213a4308f9cf72e41c5e -> tested/linux-linus


From xen-devel-bounces@lists.xenproject.org Thu Jan 25 14:37:35 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 25 Jan 2024 14:37:35 +0000
Received: from list by lists.xenproject.org with outflank-mailman.671581.1044990 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rT0rD-0006eY-H1; Thu, 25 Jan 2024 14:37:31 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 671581.1044990; Thu, 25 Jan 2024 14:37:31 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rT0rD-0006eR-EJ; Thu, 25 Jan 2024 14:37:31 +0000
Received: by outflank-mailman (input) for mailman id 671581;
 Thu, 25 Jan 2024 14:37:30 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=etx6=JD=cloud.com=roger.pau@srs-se1.protection.inumbo.net>)
 id 1rT0rB-0006aU-W6
 for xen-devel@lists.xenproject.org; Thu, 25 Jan 2024 14:37:30 +0000
Received: from mail-wm1-x32e.google.com (mail-wm1-x32e.google.com
 [2a00:1450:4864:20::32e])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 43cd7c20-bb8f-11ee-8a42-1f161083a0e0;
 Thu, 25 Jan 2024 15:37:28 +0100 (CET)
Received: by mail-wm1-x32e.google.com with SMTP id
 5b1f17b1804b1-40e60e137aaso74469845e9.0
 for <xen-devel@lists.xenproject.org>; Thu, 25 Jan 2024 06:37:28 -0800 (PST)
Received: from localhost ([213.195.118.74]) by smtp.gmail.com with ESMTPSA id
 v16-20020a5d4b10000000b00337d4eed87asm18015011wrq.115.2024.01.25.06.37.27
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 25 Jan 2024 06:37:28 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 43cd7c20-bb8f-11ee-8a42-1f161083a0e0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1706193448; x=1706798248; darn=lists.xenproject.org;
        h=in-reply-to:content-transfer-encoding:content-disposition
         :mime-version:references:message-id:subject:cc:to:from:date:from:to
         :cc:subject:date:message-id:reply-to;
        bh=7bFLGc7BhJ4cTj8Pb0JctkaL5XiuuEOipLP9umyOTpA=;
        b=mud5y/sJJiy9b447cm7ck2seJQXCfCPhbA0tF56PlunE/D24YJFzFtZTg7q6EdFI7E
         GhaXHlT5xe2bgyR/+XTHbcP6HzLTAS6xGr9Fg5+5YCPd+OJPOA7mRkbbPicJfdNfG0c5
         zC4+JegVprMSikYNiKRqStPt5WchugOTQQNyo=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706193448; x=1706798248;
        h=in-reply-to:content-transfer-encoding:content-disposition
         :mime-version:references:message-id:subject:cc:to:from:date
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=7bFLGc7BhJ4cTj8Pb0JctkaL5XiuuEOipLP9umyOTpA=;
        b=swLbU8CW77rkvR8+V0SwtN62S9xPC+CgctS1kU2T4mUlqM3YIEQSG7skG+8pAPzN0a
         jlzjcJYS8l47QI0p4jzDhfAMnPUZc58ti8GvD9YZy5TXUl6YKKwGBHnkBgkKi+cmA7BH
         AseRiOkYbMPKW0l3o9KCrc65dBzaDI7fm3mIgef656ahTIhLp5fmPKPdWIjRsfkrgXMa
         K7TBgVBQQTaT8Olj4bJF9kVzFJN3RzupHhPvSkxLEoIOidQWlJw8boK8bb0T3ykFSG+S
         1XWqVT36j8tMT7ToJnlRswHNjWQmqxmBt71yUQ6gsUhucqohI1hw0JC9IGQayZ2ko+dj
         OS8Q==
X-Gm-Message-State: AOJu0YxwWCiJP46grvL9JoSTOZ9z9sC5ARV8zXR6EFRqS5yDVtvhPoJB
	c3lnN8my3AwqMUMMbJr0QhnnOMAT2IzF4bHOF96MNpcgb2uPgqo0i/G/4K/te1o=
X-Google-Smtp-Source: AGHT+IH/M26Qc7QMX4m+SSjXx8oYoELdzsHw8Yq08Z9VpAzWRKMjH5/QOWI405eXNrWJXb+pmIA3uA==
X-Received: by 2002:a05:600c:474b:b0:40e:b284:c333 with SMTP id w11-20020a05600c474b00b0040eb284c333mr444168wmo.1.1706193448269;
        Thu, 25 Jan 2024 06:37:28 -0800 (PST)
Date: Thu, 25 Jan 2024 15:37:27 +0100
From: Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
To: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: Jan Beulich <jbeulich@suse.com>, Paul Durrant <paul@xen.org>,
	Wei Liu <wl@xen.org>, xen-devel@lists.xenproject.org
Subject: Re: [PATCH v5 1/3] x86/iommu: remove regions not to be mapped
Message-ID: <ZbJyJywf34uFxl0I@macbook>
References: <20240124172953.29814-1-roger.pau@citrix.com>
 <20240124172953.29814-2-roger.pau@citrix.com>
 <ad178469-15c3-4ae5-8538-e927f1116a42@suse.com>
 <ZbIgE8exXDVicN8D@macbook>
 <ed221b62-0151-45ce-a88d-d7e2a9946136@suse.com>
 <ZbJWE2HhCo_IHBpF@macbook>
 <be2ccc2e-f311-4368-86b3-bdf5edd0c2b6@citrix.com>
 <4b8f5b3e-456d-4bc5-94a4-d7a0c77563a2@suse.com>
 <d39c739b-fe27-4471-94a9-b56734985a30@citrix.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <d39c739b-fe27-4471-94a9-b56734985a30@citrix.com>

On Thu, Jan 25, 2024 at 01:22:15PM +0000, Andrew Cooper wrote:
> On 25/01/2024 1:13 pm, Jan Beulich wrote:
> > On 25.01.2024 13:55, Andrew Cooper wrote:
> >> On 25/01/2024 12:37 pm, Roger Pau Monné wrote:
> >>> On Thu, Jan 25, 2024 at 12:13:01PM +0100, Jan Beulich wrote:
> >>>> On 25.01.2024 09:47, Roger Pau Monné wrote:
> >>>>> On Thu, Jan 25, 2024 at 09:34:40AM +0100, Jan Beulich wrote:
> >>>>>> On 24.01.2024 18:29, Roger Pau Monne wrote:
> >>>>>>> --- a/xen/arch/x86/hvm/io.c
> >>>>>>> +++ b/xen/arch/x86/hvm/io.c
> >>>>>>> @@ -369,6 +369,22 @@ bool vpci_is_mmcfg_address(const struct domain *d, paddr_t addr)
> >>>>>>>      return vpci_mmcfg_find(d, addr);
> >>>>>>>  }
> >>>>>>>  
> >>>>>>> +int __hwdom_init vpci_subtract_mmcfg(const struct domain *d, struct rangeset *r)
> >>>>>>> +{
> >>>>>>> +    const struct hvm_mmcfg *mmcfg;
> >>>>>>> +
> >>>>>>> +    list_for_each_entry ( mmcfg, &d->arch.hvm.mmcfg_regions, next )
> >>>>>>> +    {
> >>>>>>> +        int rc = rangeset_remove_range(r, PFN_DOWN(mmcfg->addr),
> >>>>>>> +                                       PFN_DOWN(mmcfg->addr + mmcfg->size - 1));
> >>>>>> Along the lines of this, ...
> >>>>>>
> >>>>>>> --- a/xen/arch/x86/setup.c
> >>>>>>> +++ b/xen/arch/x86/setup.c
> >>>>>>> @@ -2138,6 +2138,54 @@ int __hwdom_init xen_in_range(unsigned long mfn)
> >>>>>>>      return 0;
> >>>>>>>  }
> >>>>>>>  
> >>>>>>> +int __hwdom_init remove_xen_ranges(struct rangeset *r)
> >>>>>>> +{
> >>>>>>> +    paddr_t start, end;
> >>>>>>> +    int rc;
> >>>>>>> +
> >>>>>>> +    /* S3 resume code (and other real mode trampoline code) */
> >>>>>>> +    rc = rangeset_remove_range(r, PFN_DOWN(bootsym_phys(trampoline_start)),
> >>>>>>> +                               PFN_DOWN(bootsym_phys(trampoline_end)) - 1);
> >>>>>> ... did you perhaps mean
> >>>>>>
> >>>>>>                                PFN_DOWN(bootsym_phys(trampoline_end) - 1));
> >>>>>>
> >>>>>> here (and then similarly below, except there the difference is benign I
> >>>>>> think, for the labels being page-aligned)?
> >>>>> They are all page aligned, so I didn't care much,  but now that you
> >>>>> point it might be safer to do the subtraction from the address instead
> >>>>> of the frame number, just in case.
> >>>> Hmm, no, for me neither trampoline_end nor trampoline_start are page
> >>>> aligned. While bootsym_phys(trampoline_start) is, I don't think
> >>>> bootsym_phys(trampoline_end) normally would be (it might only be by
> >>>> coincidence).
> >>> Oh, so it had been a coincidence of the build I was using I guess then.
> >> trampoline_start has to be page aligned because of constraints from SIPI
> >> and S3 (cant remember which one is the 4k constraint, but it's in the
> >> comments).
> > What you're talking about is the copy of the trampoline code/data in
> > low memory. trampoline_{start,end} themselves point into the Xen image.
> 
> True, but we're operating on bootsym_phys(trampoline_start) which had
> better be aligned.
> 
> We hard-code (by virtue of only filling in 1 single 4k PTE in the
> pagetables) that the AP trampoline is 4k.
> 
> The range here should be 4k only too, or we're (falsely) marking lowmem
> adjacent to the AP trampoline as a Xen range when it's not.

Hm, looking at zap_low_mappings() we do seem to possibly map more than
one page, in fact on my current build trampoline_end -
trampoline_start is 6528.

Thanks, Roger.


From xen-devel-bounces@lists.xenproject.org Thu Jan 25 14:52:20 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 25 Jan 2024 14:52:20 +0000
Received: from list by lists.xenproject.org with outflank-mailman.671586.1045000 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rT15J-0002iS-No; Thu, 25 Jan 2024 14:52:05 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 671586.1045000; Thu, 25 Jan 2024 14:52:05 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rT15J-0002iL-L8; Thu, 25 Jan 2024 14:52:05 +0000
Received: by outflank-mailman (input) for mailman id 671586;
 Thu, 25 Jan 2024 14:52:04 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rT15I-0002iB-5x; Thu, 25 Jan 2024 14:52:04 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rT15I-0005Nh-0B; Thu, 25 Jan 2024 14:52:04 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rT15H-0007vm-Gc; Thu, 25 Jan 2024 14:52:03 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rT15H-00066P-G8; Thu, 25 Jan 2024 14:52:03 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=RMXI+99TWCgyioGGTe+SQZZ5tRp+Cv6+XwvH1nuK9KA=; b=p1ZGk+HP76ZZGS8yAHxvvG/laX
	LB/WtdXdpGQN5IVqxvDg0yhTiWY/FYijEV6l/vAyZWX14XPbiJC5Xq8Tt85h/f2EL1p5I0lV+/20x
	gLogC1wdMjhADWqm9m5FyxOx5VxwQh0VBLBAnOdNLmoQsYtoQkI3OKpbbc2FG3n6uP9s=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184462-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [ovmf test] 184462: all pass - PUSHED
X-Osstest-Versions-This:
    ovmf=049695a0b1e2a9cbb7c2088a918f285bbb950999
X-Osstest-Versions-That:
    ovmf=ff52277e3796c50511e544219dde0b21edf5c53e
From: osstest service owner <osstest-admin@xenproject.org>
Date: Thu, 25 Jan 2024 14:52:03 +0000

flight 184462 ovmf real [real]
http://logs.test-lab.xenproject.org/osstest/logs/184462/

Perfect :-)
All tests in this flight passed as required
version targeted for testing:
 ovmf                 049695a0b1e2a9cbb7c2088a918f285bbb950999
baseline version:
 ovmf                 ff52277e3796c50511e544219dde0b21edf5c53e

Last test of basis   184453  2024-01-24 16:14:24 Z    0 days
Testing same since   184462  2024-01-25 10:11:11 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Sheng Wei <w.sheng@intel.com>

jobs:
 build-amd64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-amd64-amd64-xl-qemuu-ovmf-amd64                         pass    
 test-amd64-i386-xl-qemuu-ovmf-amd64                          pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Pushing revision :

To xenbits.xen.org:/home/xen/git/osstest/ovmf.git
   ff52277e37..049695a0b1  049695a0b1e2a9cbb7c2088a918f285bbb950999 -> xen-tested-master


From xen-devel-bounces@lists.xenproject.org Thu Jan 25 15:05:25 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 25 Jan 2024 15:05:25 +0000
Received: from list by lists.xenproject.org with outflank-mailman.671595.1045011 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rT1Hy-00058C-VX; Thu, 25 Jan 2024 15:05:10 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 671595.1045011; Thu, 25 Jan 2024 15:05:10 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rT1Hy-000585-Si; Thu, 25 Jan 2024 15:05:10 +0000
Received: by outflank-mailman (input) for mailman id 671595;
 Thu, 25 Jan 2024 15:05:09 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=KpLG=JD=gmail.com=jandryuk@srs-se1.protection.inumbo.net>)
 id 1rT1Hx-00057z-2a
 for xen-devel@lists.xenproject.org; Thu, 25 Jan 2024 15:05:09 +0000
Received: from mail-lf1-x12c.google.com (mail-lf1-x12c.google.com
 [2a00:1450:4864:20::12c])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 204c901f-bb93-11ee-98f5-efadbce2ee36;
 Thu, 25 Jan 2024 16:05:07 +0100 (CET)
Received: by mail-lf1-x12c.google.com with SMTP id
 2adb3069b0e04-5100ed2b33dso3134416e87.0
 for <xen-devel@lists.xenproject.org>; Thu, 25 Jan 2024 07:05:07 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 204c901f-bb93-11ee-98f5-efadbce2ee36
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1706195107; x=1706799907; darn=lists.xenproject.org;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:from:to:cc:subject:date
         :message-id:reply-to;
        bh=ujVQl2eHoFIN1NSaiWIIT/EwOKwIdEPVDpBXFuNHGPY=;
        b=mMKMrUdIpDihORht6UrMYwZNt/14fsJmj9CBg3OwYipyp4F+yaShchKP2EMzbOEX3r
         jOCOkps2gyFoQiRMkJG9E5QxoM7hLhoeR81cnePj41hO8N3YtiV/+dJ0GgSSyuxw3/R7
         IZtWqypiB+mB6qegVo+CAIe1v+pwpRSNhJew7dJMJg77l2uABv/1qj6vIQHBy9TuR5BF
         STxxwh30zlgb070VX4+umeLFOB52NEQdBhFnzLfleDso70F9d9bQrzRkSfNQbJAsvyiv
         n/mc1jkVrR+S4oxGskmMCTq8k6d+wbsjeKH2JJy+q6H64RW0Eh+qsRpEGL2HoB3jUzD0
         wMXw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706195107; x=1706799907;
        h=content-transfer-encoding:cc:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to;
        bh=ujVQl2eHoFIN1NSaiWIIT/EwOKwIdEPVDpBXFuNHGPY=;
        b=Al+hFhbDzdcmVjppf0mf/L1bjLFEcq0DzhCcOmwGMLOAqvUEelLWqJmr4Zt0sspOeA
         +Lgikbsb5nohiBU8gP6d1dmL1QEIBVnX39ZoHyLOdz+xZ1QgGR0JZ4HgPrAbY7OIbi0q
         ypRvN+rE5ZZd/y0Meo9+UI1RuWNinXV5vnYeIgyC1Ouq52sMLC9NLgJx4aEUDeaFdYa3
         M4ZFiEggasap2D4yklepIU1g+naqp+HX0AVvhyjO6BlpURAzJilQQdHjiHd8KKBxZhif
         sYxAmn2aKGE1uLyN10QJFwUhFxuZAMlnusnVMAbpij7HJCIMs4as+Kg4FZsgziyKb7Po
         5RFw==
X-Gm-Message-State: AOJu0YzjkvpzQE3FaXwxrx0gZyKsbirbmwPdhj03893OsfmN+2s4bCX7
	e1BSsPPDZSHOKnF2SjXrUdzC4ipLEm0/MKotaXExQBwAPgZMc88KMbRYzyN9YZU/WVbeWPVFsOj
	I6f28cGRAFtwVftpTPDPajotAoa4=
X-Google-Smtp-Source: AGHT+IF2GsjJao73A40LDKWcVvT06jIqx2xkwjQejp3diA32/kINlerhHNfs/OC1cs2/HVghJCA0zJmv26F/1G8WuM0=
X-Received: by 2002:a05:6512:3d21:b0:510:c62:bcd4 with SMTP id
 d33-20020a0565123d2100b005100c62bcd4mr824535lfv.55.1706195106499; Thu, 25 Jan
 2024 07:05:06 -0800 (PST)
MIME-Version: 1.0
References: <20240124205922.67266-1-jandryuk@gmail.com> <20240124205922.67266-3-jandryuk@gmail.com>
 <a9d6efce-8185-4dc8-b1d3-097ec49e3b28@suse.com>
In-Reply-To: <a9d6efce-8185-4dc8-b1d3-097ec49e3b28@suse.com>
From: Jason Andryuk <jandryuk@gmail.com>
Date: Thu, 25 Jan 2024 10:04:54 -0500
Message-ID: <CAKf6xpvR3DYseUM0BTmpoDy+WZN7vrdB-7gM4D5F4sOrBXa7rw@mail.gmail.com>
Subject: Re: [PATCH v2 2/2] xenpm: Print message for disabled commands
To: Jan Beulich <jbeulich@suse.com>
Cc: Wei Liu <wl@xen.org>, Anthony PERARD <anthony.perard@citrix.com>, 
	xen-devel@lists.xenproject.org
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

On Thu, Jan 25, 2024 at 9:31=E2=80=AFAM Jan Beulich <jbeulich@suse.com> wro=
te:
>
> On 24.01.2024 21:59, Jason Andryuk wrote:
> > xenpm get-cpufreq-states currently just prints no output when cpufreq i=
s
> > disabled or HWP is running.  Have it print an appropriate message.  The
> > cpufreq disabled one mirros the cpuidle disabled one.
> >
> > cpufreq disabled:
> > $ xenpm get-cpufreq-states
> > Either Xen cpufreq is disabled or no valid information is registered!
> >
> > Under HWP:
> > $ xenpm get-cpufreq-states
> > P-State information not supported.  Try get-cpufreq-average or start.
> >
> > Also allow xenpm to handle EOPNOTSUPP from the pmstat hypercalls.
> > EOPNOTSUPP is returned when HWP is active in some cases and allows the
> > differentiation from cpufreq being disabled.
> >
> > Signed-off-by: Jason Andryuk <jandryuk@gmail.com>
>
> Largely okay, but a number of cosmetic remarks / nits:

Thanks for taking a look.  Sorry about the cosmetic issues.  All your
suggestions are good with me.

Thanks,
Jason


From xen-devel-bounces@lists.xenproject.org Thu Jan 25 15:40:17 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 25 Jan 2024 15:40:17 +0000
Received: from list by lists.xenproject.org with outflank-mailman.671603.1045020 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rT1pq-0005DO-Fh; Thu, 25 Jan 2024 15:40:10 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 671603.1045020; Thu, 25 Jan 2024 15:40:10 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rT1pq-0005DH-Ct; Thu, 25 Jan 2024 15:40:10 +0000
Received: by outflank-mailman (input) for mailman id 671603;
 Thu, 25 Jan 2024 15:40:09 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=+DBC=JD=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1rT1pp-0005Bx-6A
 for xen-devel@lists.xenproject.org; Thu, 25 Jan 2024 15:40:09 +0000
Received: from mail-wr1-x434.google.com (mail-wr1-x434.google.com
 [2a00:1450:4864:20::434])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 0457d418-bb98-11ee-8a42-1f161083a0e0;
 Thu, 25 Jan 2024 16:40:08 +0100 (CET)
Received: by mail-wr1-x434.google.com with SMTP id
 ffacd0b85a97d-339289fead2so5840135f8f.3
 for <xen-devel@lists.xenproject.org>; Thu, 25 Jan 2024 07:40:07 -0800 (PST)
Received: from [10.80.67.30] (default-46-102-197-194.interdsl.co.uk.
 [46.102.197.194]) by smtp.gmail.com with ESMTPSA id
 l6-20020a5d5606000000b0033922468707sm15741024wrv.83.2024.01.25.07.40.06
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 25 Jan 2024 07:40:07 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 0457d418-bb98-11ee-8a42-1f161083a0e0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1706197207; x=1706802007; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=8+V74Fe0DEXs1Ie5BHBfh7yvIkP5GDGrO1LDElEb+oc=;
        b=fjH2LlmMCxTS5/gwLnUjuaefR4XNbkO/q18WgF0l7G93FStl2fj/OVPq3eEmGyoZbz
         EitUDS22kT3z18ZPzreDWuXtBZCLQz7W8Lw6lkEK62504/hZCTKrI93236hNnplaPLxI
         sHWuEONbFvFMfXU/P1yEQMTVIxBzYRyXBbh7A=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706197207; x=1706802007;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=8+V74Fe0DEXs1Ie5BHBfh7yvIkP5GDGrO1LDElEb+oc=;
        b=wS9ixWJ6IqdYhhyUhWjQPijC3qZ0VawmU+lTcWaN44XFJ2pCVELegLcvxcwWK1CWof
         pUy2V3C8agv+MJs0UqluiIdd7/btuwm0UAonaNjDwJPe4wTn+DyxBpC4qI54oszfl9OT
         hWStItgQCpO6WlSWeXEB/fMXbw8Z+V/NwLx7kfkojQrhKa8guMKYdx1RkeozryEUVra1
         zC0MHPoyK4hCaQTnLmvs8RR2OnK2sz9SkGaGQtnjzGu9wcmnyM7jkuUV63AnBdB0C7OV
         NcFg00JFQerZpRZwP5rf2RaqONpxMVXit7ngL3HTkibJ76KuPRD3qDDWvEM9elkbSeDk
         epfA==
X-Gm-Message-State: AOJu0YzdD0AdH5dXIm7HEwQe/CpQkQNnmKg5cNGa/KGIPlFplOPMBNLJ
	UYAq5p7xGU3eYvOUUIUC9s2h0TzELO5l9Im5HsJ80Jz8BLFPea2NZCoigsYjWx8=
X-Google-Smtp-Source: AGHT+IE6FxWbCHFG7TcbnaZ9GICY8M/yNvc7Iuyr0yDrvvjEN5Kbji3WpaDKBZ08zpD2jgKiqiOOxg==
X-Received: by 2002:a05:6000:1b06:b0:339:2214:ada6 with SMTP id f6-20020a0560001b0600b003392214ada6mr662345wrz.48.1706197207342;
        Thu, 25 Jan 2024 07:40:07 -0800 (PST)
Message-ID: <323d0100-8e7d-43d9-b193-2c8cb4eb6ebc@citrix.com>
Date: Thu, 25 Jan 2024 15:40:06 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] x86/APIC: purge {GET,SET}_APIC_DELIVERY_MODE()
Content-Language: en-GB
To: Jan Beulich <jbeulich@suse.com>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Wei Liu <wl@xen.org>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger.pau@citrix.com>
References: <6842ceff-a6cd-475d-b3bb-c828eee6c83a@suse.com>
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 xsFNBFLhNn8BEADVhE+Hb8i0GV6mihnnr/uiQQdPF8kUoFzCOPXkf7jQ5sLYeJa0cQi6Penp
 VtiFYznTairnVsN5J+ujSTIb+OlMSJUWV4opS7WVNnxHbFTPYZVQ3erv7NKc2iVizCRZ2Kxn
 srM1oPXWRic8BIAdYOKOloF2300SL/bIpeD+x7h3w9B/qez7nOin5NzkxgFoaUeIal12pXSR
 Q354FKFoy6Vh96gc4VRqte3jw8mPuJQpfws+Pb+swvSf/i1q1+1I4jsRQQh2m6OTADHIqg2E
 ofTYAEh7R5HfPx0EXoEDMdRjOeKn8+vvkAwhviWXTHlG3R1QkbE5M/oywnZ83udJmi+lxjJ5
 YhQ5IzomvJ16H0Bq+TLyVLO/VRksp1VR9HxCzItLNCS8PdpYYz5TC204ViycobYU65WMpzWe
 LFAGn8jSS25XIpqv0Y9k87dLbctKKA14Ifw2kq5OIVu2FuX+3i446JOa2vpCI9GcjCzi3oHV
 e00bzYiHMIl0FICrNJU0Kjho8pdo0m2uxkn6SYEpogAy9pnatUlO+erL4LqFUO7GXSdBRbw5
 gNt25XTLdSFuZtMxkY3tq8MFss5QnjhehCVPEpE6y9ZjI4XB8ad1G4oBHVGK5LMsvg22PfMJ
 ISWFSHoF/B5+lHkCKWkFxZ0gZn33ju5n6/FOdEx4B8cMJt+cWwARAQABzSlBbmRyZXcgQ29v
 cGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPsLBegQTAQgAJAIbAwULCQgHAwUVCgkI
 CwUWAgMBAAIeAQIXgAUCWKD95wIZAQAKCRBlw/kGpdefoHbdD/9AIoR3k6fKl+RFiFpyAhvO
 59ttDFI7nIAnlYngev2XUR3acFElJATHSDO0ju+hqWqAb8kVijXLops0gOfqt3VPZq9cuHlh
 IMDquatGLzAadfFx2eQYIYT+FYuMoPZy/aTUazmJIDVxP7L383grjIkn+7tAv+qeDfE+txL4
 SAm1UHNvmdfgL2/lcmL3xRh7sub3nJilM93RWX1Pe5LBSDXO45uzCGEdst6uSlzYR/MEr+5Z
 JQQ32JV64zwvf/aKaagSQSQMYNX9JFgfZ3TKWC1KJQbX5ssoX/5hNLqxMcZV3TN7kU8I3kjK
 mPec9+1nECOjjJSO/h4P0sBZyIUGfguwzhEeGf4sMCuSEM4xjCnwiBwftR17sr0spYcOpqET
 ZGcAmyYcNjy6CYadNCnfR40vhhWuCfNCBzWnUW0lFoo12wb0YnzoOLjvfD6OL3JjIUJNOmJy
 RCsJ5IA/Iz33RhSVRmROu+TztwuThClw63g7+hoyewv7BemKyuU6FTVhjjW+XUWmS/FzknSi
 dAG+insr0746cTPpSkGl3KAXeWDGJzve7/SBBfyznWCMGaf8E2P1oOdIZRxHgWj0zNr1+ooF
 /PzgLPiCI4OMUttTlEKChgbUTQ+5o0P080JojqfXwbPAyumbaYcQNiH1/xYbJdOFSiBv9rpt
 TQTBLzDKXok86M7BTQRS4TZ/ARAAkgqudHsp+hd82UVkvgnlqZjzz2vyrYfz7bkPtXaGb9H4
 Rfo7mQsEQavEBdWWjbga6eMnDqtu+FC+qeTGYebToxEyp2lKDSoAsvt8w82tIlP/EbmRbDVn
 7bhjBlfRcFjVYw8uVDPptT0TV47vpoCVkTwcyb6OltJrvg/QzV9f07DJswuda1JH3/qvYu0p
 vjPnYvCq4NsqY2XSdAJ02HrdYPFtNyPEntu1n1KK+gJrstjtw7KsZ4ygXYrsm/oCBiVW/OgU
 g/XIlGErkrxe4vQvJyVwg6YH653YTX5hLLUEL1NS4TCo47RP+wi6y+TnuAL36UtK/uFyEuPy
 wwrDVcC4cIFhYSfsO0BumEI65yu7a8aHbGfq2lW251UcoU48Z27ZUUZd2Dr6O/n8poQHbaTd
 6bJJSjzGGHZVbRP9UQ3lkmkmc0+XCHmj5WhwNNYjgbbmML7y0fsJT5RgvefAIFfHBg7fTY/i
 kBEimoUsTEQz+N4hbKwo1hULfVxDJStE4sbPhjbsPCrlXf6W9CxSyQ0qmZ2bXsLQYRj2xqd1
 bpA+1o1j2N4/au1R/uSiUFjewJdT/LX1EklKDcQwpk06Af/N7VZtSfEJeRV04unbsKVXWZAk
 uAJyDDKN99ziC0Wz5kcPyVD1HNf8bgaqGDzrv3TfYjwqayRFcMf7xJaL9xXedMcAEQEAAcLB
 XwQYAQgACQUCUuE2fwIbDAAKCRBlw/kGpdefoG4XEACD1Qf/er8EA7g23HMxYWd3FXHThrVQ
 HgiGdk5Yh632vjOm9L4sd/GCEACVQKjsu98e8o3ysitFlznEns5EAAXEbITrgKWXDDUWGYxd
 pnjj2u+GkVdsOAGk0kxczX6s+VRBhpbBI2PWnOsRJgU2n10PZ3mZD4Xu9kU2IXYmuW+e5KCA
 vTArRUdCrAtIa1k01sPipPPw6dfxx2e5asy21YOytzxuWFfJTGnVxZZSCyLUO83sh6OZhJkk
 b9rxL9wPmpN/t2IPaEKoAc0FTQZS36wAMOXkBh24PQ9gaLJvfPKpNzGD8XWR5HHF0NLIJhgg
 4ZlEXQ2fVp3XrtocHqhu4UZR4koCijgB8sB7Tb0GCpwK+C4UePdFLfhKyRdSXuvY3AHJd4CP
 4JzW0Bzq/WXY3XMOzUTYApGQpnUpdOmuQSfpV9MQO+/jo7r6yPbxT7CwRS5dcQPzUiuHLK9i
 nvjREdh84qycnx0/6dDroYhp0DFv4udxuAvt1h4wGwTPRQZerSm4xaYegEFusyhbZrI0U9tJ
 B8WrhBLXDiYlyJT6zOV2yZFuW47VrLsjYnHwn27hmxTC/7tvG3euCklmkn9Sl9IAKFu29RSo
 d5bD8kMSCYsTqtTfT6W4A3qHGvIDta3ptLYpIAOD2sY3GYq2nf3Bbzx81wZK14JdDDHUX2Rs
 6+ahAA==
In-Reply-To: <6842ceff-a6cd-475d-b3bb-c828eee6c83a@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 25/01/2024 2:08 pm, Jan Beulich wrote:
> --- a/xen/arch/x86/cpu/vpmu.c
> +++ b/xen/arch/x86/cpu/vpmu.c
> @@ -308,12 +308,12 @@ void vpmu_do_interrupt(void)
>  
>      vlapic_lvtpc = vlapic_get_reg(vlapic, APIC_LVTPC);
>  
> -    switch ( GET_APIC_DELIVERY_MODE(vlapic_lvtpc) )
> +    switch ( vlapic_lvtpc & APIC_DM_MASK )
>      {
> -    case APIC_MODE_FIXED:
> +    case APIC_DM_FIXED:
>          vlapic_set_irq(vlapic, vlapic_lvtpc & APIC_VECTOR_MASK, 0);
>          break;
> -    case APIC_MODE_NMI:
> +    case APIC_DM_NMI:
>          sampling->arch.nmi_pending = true;
>          break;
>      }

Looking at the asm diff between the two, this is the only function with
any delta at all.

This transformation does shift the case literals by 8 bits, but I'm
reasonably confident the result is still logically the same.

Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>


From xen-devel-bounces@lists.xenproject.org Thu Jan 25 15:43:18 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 25 Jan 2024 15:43:18 +0000
Received: from list by lists.xenproject.org with outflank-mailman.671606.1045032 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rT1sr-00064H-UK; Thu, 25 Jan 2024 15:43:17 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 671606.1045032; Thu, 25 Jan 2024 15:43:17 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rT1sr-00064A-Q4; Thu, 25 Jan 2024 15:43:17 +0000
Received: by outflank-mailman (input) for mailman id 671606;
 Thu, 25 Jan 2024 15:43:17 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=vt1H=JD=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rT1sr-000642-Bx
 for xen-devel@lists.xenproject.org; Thu, 25 Jan 2024 15:43:17 +0000
Received: from mail-lf1-x133.google.com (mail-lf1-x133.google.com
 [2a00:1450:4864:20::133])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 7482083a-bb98-11ee-8a42-1f161083a0e0;
 Thu, 25 Jan 2024 16:43:16 +0100 (CET)
Received: by mail-lf1-x133.google.com with SMTP id
 2adb3069b0e04-50f11e3ba3aso10204190e87.1
 for <xen-devel@lists.xenproject.org>; Thu, 25 Jan 2024 07:43:16 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 b8-20020a056638150800b0046ef7300541sm1545075jat.46.2024.01.25.07.43.13
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 25 Jan 2024 07:43:15 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 7482083a-bb98-11ee-8a42-1f161083a0e0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1706197395; x=1706802195; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=lCGR6bn0TzcMbOqkBkqdazW4hbhSiHYr5AtmBgjFngI=;
        b=XyW0r8VW6NCDQudxHzhIDiqCBxmCnIiQJXebDO6BMkeD1Cons+zjA9+2IliWkIR5M5
         Fptua7FxjBRZDVqOuo2HEByBHKXsftNA8lzDzKxa+1KCANI7cn0ySMh8tUmkZDsAQ9TS
         0Bjbe83+p6VnRzsD8fMW04FFxrQIyrASUSUoE4BdDb570akaF1YKUwpQ6g3p3M7v3oTs
         8EhHYMoNcrBkcbLWKtdg5HRihG4Fb7G2nslqILlPxvV25HQDZjiZm9hJWzipI1hEwGgG
         Ht6uye8pm2dwZwj5x9rd6E9pbNE3nKk0LUPkVl0hIDPO/3Ziwx+h5Q5mMYO2TOnuVxyX
         1sig==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706197395; x=1706802195;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=lCGR6bn0TzcMbOqkBkqdazW4hbhSiHYr5AtmBgjFngI=;
        b=hyiE34ts9asKNSIZm5/UCNnVP1Bxm0FYjeu6O84mhO4wGbe75O50VLKp8w/JCC45ep
         mE95sDXI0II8m9lu18cYuQtPoVS+w/HPLyW4WpAKNyhW3NLy0SWOZCqhNXur3hlPXTcV
         ij1m3T444gpKx1hVyzR1/5Dq6JKoxeQey6RbnchQP+GK2i3qrfZ8DujkWB4UCFyDGSbR
         taL4CBs1tjoZJCmp+uSZuqQM//YEpGj3cHz2Y7G7Dv7/GPuIMB8nQvK+0Y9fgupnT3Ol
         p/eRhMtZ2geZHR+SdC15t2OWOlI2z81B/wB610cwYnAKJXyi2vFeiiUoVD4QtqdwuAM9
         DjoQ==
X-Gm-Message-State: AOJu0Yw1WL9enMkhIxhB/qg5JwXYLg/SPH927EjYCbmS3egmSFzjtoLS
	hdOFPr81Jvm8Bf6UQvcTlVI3APnqMu4N35+UFjFcp/Yr/ZDoo9Wrv4r4OdAIhw==
X-Google-Smtp-Source: AGHT+IFrgwMXQ4IiviEwmjYqKl3oA7NphOzhTxEII6lMAiyIC88HDYop0ZBsvITnJi2qSnqZ1MOeHA==
X-Received: by 2002:a2e:980f:0:b0:2cd:7fe1:3a1 with SMTP id a15-20020a2e980f000000b002cd7fe103a1mr993330ljj.66.1706197395525;
        Thu, 25 Jan 2024 07:43:15 -0800 (PST)
Message-ID: <50e79338-b2fd-40e9-b754-4e725e27ceb3@suse.com>
Date: Thu, 25 Jan 2024 16:43:11 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v12 10/15] vpci/header: emulate PCI_COMMAND register for
 guests
Content-Language: en-US
To: Stewart Hildebrand <stewart.hildebrand@amd.com>
Cc: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Andrew Cooper <andrew.cooper3@citrix.com>,
 George Dunlap <george.dunlap@citrix.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>,
 Volodymyr Babchuk <volodymyr_babchuk@epam.com>,
 xen-devel@lists.xenproject.org
References: <20240109215145.430207-1-stewart.hildebrand@amd.com>
 <20240109215145.430207-11-stewart.hildebrand@amd.com>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <20240109215145.430207-11-stewart.hildebrand@amd.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 09.01.2024 22:51, Stewart Hildebrand wrote:
> --- a/xen/drivers/vpci/header.c
> +++ b/xen/drivers/vpci/header.c
> @@ -168,6 +168,9 @@ static void modify_decoding(const struct pci_dev *pdev, uint16_t cmd,
>      if ( !rom_only )
>      {
>          pci_conf_write16(pdev->sbdf, PCI_COMMAND, cmd);
> +        /* Show DomU that we updated P2M */
> +        header->guest_cmd &= ~PCI_COMMAND_MEMORY;
> +        header->guest_cmd |= cmd & PCI_COMMAND_MEMORY;
>          header->bars_mapped = map;
>      }

I don't follow what the comment means to say. The bit in question has no
real connection to the P2M, and the guest also may have no notion of the
underlying hypervisor's internals. Likely connected to ...

> @@ -524,9 +527,26 @@ static void cf_check cmd_write(
>  {
>      struct vpci_header *header = data;
>  
> +    if ( !is_hardware_domain(pdev->domain) )
> +    {
> +        const struct vpci *vpci = pdev->vpci;
> +
> +        if ( (vpci->msi && vpci->msi->enabled) ||
> +             (vpci->msix && vpci->msix->enabled) )
> +            cmd |= PCI_COMMAND_INTX_DISABLE;
> +
> +        /*
> +         * Do not show change to PCI_COMMAND_MEMORY bit until we finish
> +         * modifying P2M mappings.
> +         */
> +        header->guest_cmd = (cmd & ~PCI_COMMAND_MEMORY) |
> +                            (header->guest_cmd & PCI_COMMAND_MEMORY);
> +    }

... the comment here, but then shouldn't it be that the guest can't even
issue a 2nd cfg space access until the present write has been carried out?
Otherwise I'd be inclined to claim that such a partial update is unlikely
to be spec-conformant.

> @@ -843,6 +885,15 @@ static int cf_check init_header(struct pci_dev *pdev)
>      if ( cmd & PCI_COMMAND_MEMORY )
>          pci_conf_write16(pdev->sbdf, PCI_COMMAND, cmd & ~PCI_COMMAND_MEMORY);
>  
> +    /*
> +     * Clear PCI_COMMAND_MEMORY and PCI_COMMAND_IO for DomUs, so they will
> +     * always start with memory decoding disabled and to ensure that we will not
> +     * call modify_bars() at the end of this function.
> +     */
> +    if ( !is_hwdom )
> +        cmd &= ~(PCI_COMMAND_MEMORY | PCI_COMMAND_IO);
> +    header->guest_cmd = cmd;

With PCI_COMMAND_MEMORY clear, the hw reg won't further be written on the
success return path. Yet wouldn't we better clear PCI_COMMAND_IO also in
hardware (until we properly support it)?

I also think the insertion point for the new code isn't well chosen: The
comment just out of context indicates that the code in context above is
connected to the subsequent code. Whereas the addition is not.

> --- a/xen/drivers/vpci/msi.c
> +++ b/xen/drivers/vpci/msi.c
> @@ -70,6 +70,15 @@ static void cf_check control_write(
>  
>          if ( vpci_msi_arch_enable(msi, pdev, vectors) )
>              return;
> +
> +        /*
> +         * Make sure domU doesn't enable INTx while enabling MSI.
> +         */

Nit: This ought to be a single line comment, just like ...

> +        if ( !is_hardware_domain(pdev->domain) )
> +        {
> +            pci_intx(pdev, false);
> +            pdev->vpci->header.guest_cmd |= PCI_COMMAND_INTX_DISABLE;
> +        }
>      }
>      else
>          vpci_msi_arch_disable(msi, pdev);
> --- a/xen/drivers/vpci/msix.c
> +++ b/xen/drivers/vpci/msix.c
> @@ -135,6 +135,13 @@ static void cf_check control_write(
>          }
>      }
>  
> +    /* Make sure domU doesn't enable INTx while enabling MSI-X. */
> +    if ( new_enabled && !msix->enabled && !is_hardware_domain(pdev->domain) )
> +    {
> +        pci_intx(pdev, false);
> +        pdev->vpci->header.guest_cmd |= PCI_COMMAND_INTX_DISABLE;
> +    }

... the similar code here has it.

In both cases, is it really appropriate to set the bit in guest view?

Jan


From xen-devel-bounces@lists.xenproject.org Thu Jan 25 16:00:36 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 25 Jan 2024 16:00:36 +0000
Received: from list by lists.xenproject.org with outflank-mailman.671617.1045041 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rT29N-0002Rx-Bu; Thu, 25 Jan 2024 16:00:21 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 671617.1045041; Thu, 25 Jan 2024 16:00:21 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rT29N-0002Rq-8v; Thu, 25 Jan 2024 16:00:21 +0000
Received: by outflank-mailman (input) for mailman id 671617;
 Thu, 25 Jan 2024 16:00:20 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=vt1H=JD=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rT29M-0002Re-AU
 for xen-devel@lists.xenproject.org; Thu, 25 Jan 2024 16:00:20 +0000
Received: from mail-lj1-x22f.google.com (mail-lj1-x22f.google.com
 [2a00:1450:4864:20::22f])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id d64edbce-bb9a-11ee-8a42-1f161083a0e0;
 Thu, 25 Jan 2024 17:00:19 +0100 (CET)
Received: by mail-lj1-x22f.google.com with SMTP id
 38308e7fff4ca-2cf372b8b88so9514911fa.1
 for <xen-devel@lists.xenproject.org>; Thu, 25 Jan 2024 08:00:19 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 j2-20020a6b3102000000b007bf197d6ca8sm7411664ioa.25.2024.01.25.08.00.16
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 25 Jan 2024 08:00:18 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: d64edbce-bb9a-11ee-8a42-1f161083a0e0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1706198418; x=1706803218; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=qDLNJiSQ8imt2bLpfcLEQ4kFYJtLrv523F/k+eVGwmo=;
        b=Ku/u4OPM+hMcQqKK3hcFScBA+chwIHrl9lzv/oAf6aNQ2i2GRTQeDJKpBhSPFRUXZd
         41KcSpS7txEA8amX6ulucBL4cgnHCagGezJ7tAoVZnYZ7fEpr4KwSKpirbhxETgzeSW7
         eFinSFOVvNK89D154bcg6dYCpTpZ1OkAoBcVEGB0EJ4mCQZzrNbU/gbnSQZ9OFzGMJwL
         TT7QcgDD91x4VI+WbzAwX4fDjN4OYJqfhI8w7hYMYTAhmOKnThMg5FLa/qTOavYaUTN/
         YFsiC1lW/vTlSq97CUa+cd72HTWJOm9BaZQEUULiUUiDT8iz6wzP0xPlVQ5aM+CSuCsM
         ywhg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706198418; x=1706803218;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=qDLNJiSQ8imt2bLpfcLEQ4kFYJtLrv523F/k+eVGwmo=;
        b=uqdgf4GuywfuifnrLWDULrLED1do0H0D9Ztu7xY58gVxNLo2ckhJ1O5gZsCrj1Q/sl
         wsJhQR3PR0IC6qHZFgQUpvhPx8qFMHGCl5N5j1UJFygQrooXhx31HVLTNJShOsfVIekq
         GW5Vt0+vQfeL+qYnIkSvAdcBCPtmhEbtP2ZqfNMikNo2z+zHLmNF3asK/gnW8hJneF/T
         gVtyo6M2CjUe3RmyhGlg58UWRJ8NPB5YaaiAVfyFLgcCWJSch8FxvYKFdyAnLyXt+wHK
         FuwbJjvCVnHbpeo4jCNwVwqBXDS/cXt0GHGCow1tZVLo4IsyD8s5lbfM9XkaPOVWI865
         PwPQ==
X-Gm-Message-State: AOJu0YyRF93xYx7pmaUJ6DSry2E+LLfFblNgs3wEmCwAGkyv0SO5kSf3
	RE8cVo+eH4Ijj8q+NgM1fMr8I/CKvWNg407FcKAolUZsN0xM3llw1uJtNxX6Fw==
X-Google-Smtp-Source: AGHT+IElXlHNdBX0EkXvZw84KF29OQhHoHURyIc2Hh7WKtDv6RqWM3DLAoS/lRgsCFJDDI6LMZ8YKA==
X-Received: by 2002:a2e:878d:0:b0:2cc:c567:e539 with SMTP id n13-20020a2e878d000000b002ccc567e539mr796743lji.101.1706198418541;
        Thu, 25 Jan 2024 08:00:18 -0800 (PST)
Message-ID: <ec947a93-3026-4119-84dc-09785fab8f7f@suse.com>
Date: Thu, 25 Jan 2024 17:00:13 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v12 11/15] vpci: add initial support for virtual PCI bus
 topology
Content-Language: en-US
To: Stewart Hildebrand <stewart.hildebrand@amd.com>
Cc: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>,
 Andrew Cooper <andrew.cooper3@citrix.com>,
 George Dunlap <george.dunlap@citrix.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Volodymyr Babchuk <volodymyr_babchuk@epam.com>,
 xen-devel@lists.xenproject.org
References: <20240109215145.430207-1-stewart.hildebrand@amd.com>
 <20240109215145.430207-12-stewart.hildebrand@amd.com>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <20240109215145.430207-12-stewart.hildebrand@amd.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 09.01.2024 22:51, Stewart Hildebrand wrote:
> --- a/xen/drivers/Kconfig
> +++ b/xen/drivers/Kconfig
> @@ -15,4 +15,8 @@ source "drivers/video/Kconfig"
>  config HAS_VPCI
>  	bool
>  
> +config HAS_VPCI_GUEST_SUPPORT
> +	bool
> +	depends on HAS_VPCI

Wouldn't this better be "select", or even just "imply"?

> --- a/xen/drivers/vpci/vpci.c
> +++ b/xen/drivers/vpci/vpci.c
> @@ -40,6 +40,49 @@ extern vpci_register_init_t *const __start_vpci_array[];
>  extern vpci_register_init_t *const __end_vpci_array[];
>  #define NUM_VPCI_INIT (__end_vpci_array - __start_vpci_array)
>  
> +#ifdef CONFIG_HAS_VPCI_GUEST_SUPPORT
> +static int add_virtual_device(struct pci_dev *pdev)
> +{
> +    struct domain *d = pdev->domain;
> +    unsigned int new_dev_number;
> +
> +    if ( is_hardware_domain(d) )
> +        return 0;
> +
> +    ASSERT(rw_is_write_locked(&pdev->domain->pci_lock));
> +
> +    /*
> +     * Each PCI bus supports 32 devices/slots at max or up to 256 when
> +     * there are multi-function ones which are not yet supported.
> +     */
> +    if ( pdev->info.is_extfn && !pdev->info.is_virtfn )
> +    {
> +        gdprintk(XENLOG_ERR, "%pp: only function 0 passthrough supported\n",
> +                 &pdev->sbdf);

The message suggests you ought to check pdev->devfn to have the low
three bits clear. Yet what you check are two booleans.

Further doesn't this require the multi-function bit to be emulated
clear? And finally don't you then also need to disallow assignment of
devices with phantom functions?

> --- a/xen/include/xen/sched.h
> +++ b/xen/include/xen/sched.h
> @@ -484,6 +484,14 @@ struct domain
>       * 2. pdev->vpci->lock
>       */
>      rwlock_t pci_lock;
> +#ifdef CONFIG_HAS_VPCI_GUEST_SUPPORT
> +    /*
> +     * The bitmap which shows which device numbers are already used by the
> +     * virtual PCI bus topology and is used to assign a unique SBDF to the
> +     * next passed through virtual PCI device.
> +     */
> +    DECLARE_BITMAP(vpci_dev_assigned_map, VPCI_MAX_VIRT_DEV);
> +#endif
>  #endif

With this the 2nd #endif would likely better gain a comment.

> --- a/xen/include/xen/vpci.h
> +++ b/xen/include/xen/vpci.h
> @@ -21,6 +21,13 @@ typedef int vpci_register_init_t(struct pci_dev *dev);
>  
>  #define VPCI_ECAM_BDF(addr)     (((addr) & 0x0ffff000) >> 12)
>  
> +/*
> + * Maximum number of devices supported by the virtual bus topology:
> + * each PCI bus supports 32 devices/slots at max or up to 256 when
> + * there are multi-function ones which are not yet supported.
> + */
> +#define VPCI_MAX_VIRT_DEV       (PCI_SLOT(~0) + 1)

The limit being this means only bus 0 / seg 0 is supported, which I
think the comment would better also say. (In add_virtual_device(),
which has a similar comment, there's then at least a 2nd one saying
so.)

Jan


From xen-devel-bounces@lists.xenproject.org Thu Jan 25 16:14:38 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 25 Jan 2024 16:14:38 +0000
Received: from list by lists.xenproject.org with outflank-mailman.671622.1045051 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rT2N7-00057C-HN; Thu, 25 Jan 2024 16:14:33 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 671622.1045051; Thu, 25 Jan 2024 16:14:33 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rT2N7-000575-EF; Thu, 25 Jan 2024 16:14:33 +0000
Received: by outflank-mailman (input) for mailman id 671622;
 Thu, 25 Jan 2024 16:14:31 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=vt1H=JD=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rT2N5-00056z-Pn
 for xen-devel@lists.xenproject.org; Thu, 25 Jan 2024 16:14:31 +0000
Received: from mail-lj1-x231.google.com (mail-lj1-x231.google.com
 [2a00:1450:4864:20::231])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id d12f69ac-bb9c-11ee-98f5-efadbce2ee36;
 Thu, 25 Jan 2024 17:14:29 +0100 (CET)
Received: by mail-lj1-x231.google.com with SMTP id
 38308e7fff4ca-2cddb2c2b54so70867611fa.1
 for <xen-devel@lists.xenproject.org>; Thu, 25 Jan 2024 08:14:29 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 z15-20020a6bc90f000000b007bf05f618f3sm8447933iof.55.2024.01.25.08.14.26
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 25 Jan 2024 08:14:28 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: d12f69ac-bb9c-11ee-98f5-efadbce2ee36
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1706199269; x=1706804069; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=47RlakhfRyn8lW4fs3dY8kIWGczXx47Izar2AGiOFD0=;
        b=MsKHzf0B+XAQf/+efimFUZgc4byFE828JzOEuwKfbT6FiVCHI9wutUp9MJ2/tUyE71
         9iDpU8oRx+7grULjLtqaNDAxkVZijR5xPXYMoMv/bHrK21vE6nfjXM20iGYNgUHye4y+
         EGbrgqlMyYhXucwAWipLhMyNHNP4imxvCUjyoc/zP4Xn0kHlS8bfBJ13rbiM9hdck9Sv
         vpNhxrRSzXJABUU6KC7S7cKDUQ+uQ9ST8CIjMsmLhi0V+6tsDux1Pd0OQPiMczT0p6YF
         pSBYnovnOSE7x3CRghREMVMWGccZiKX71z/5eYC4gRDkSeLl54e+xrY6RRBioh4EYX8Q
         dFbA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706199269; x=1706804069;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=47RlakhfRyn8lW4fs3dY8kIWGczXx47Izar2AGiOFD0=;
        b=WKDougIyIZ1QukIT4dcg7f1uu9fN6mMYtQuKLIb/zvGWHang6s/66/V88OBRoedy9G
         wEKFtTP6Ye9BKFaUbHsG6ZxSJIiTofg8mAt5C+zZgPn7tp3AEcBaswPoXCpLyoGqJU5x
         17EBDnjROdsdZYTXZfO9hs1kOWORQGb6O5RL55Z4JXDn+WocZJWi7pwGR3zCbwiy5p1N
         uJPd9G4+pk7iqloZPnOMnLCfpqGxBkwpllhoa24W1MT1qLoGLR5nLp6euKCY94f6+Sai
         1zFAsuJuTbAv7KTwyQ+yM3JCvJ5getpIdbobxR+86rYMK52d4ahcte9bQPMu4ypfGNFj
         5qwA==
X-Gm-Message-State: AOJu0YwKGF7aU7KgDlCoc0lpHvJcZLsh/HtiGwFtV+B15hr2gHTGwqTB
	had/ID+34I1tysYcwF67kopudAtPuzeeq4hqLw6yPrRzO54Sfk4CFZ/8yNKrBw==
X-Google-Smtp-Source: AGHT+IGnV2BAc1rBJmqif0CVVC49QD09Sl+Ye8LjwoaYvu7i87Vgtrq5VNMgDAon4DCkSFspqPGDHQ==
X-Received: by 2002:a2e:7805:0:b0:2cc:f5b6:91ed with SMTP id t5-20020a2e7805000000b002ccf5b691edmr1054623ljc.23.1706199269004;
        Thu, 25 Jan 2024 08:14:29 -0800 (PST)
Message-ID: <076a05e7-aa62-45bd-9f11-4a7cea0af396@suse.com>
Date: Thu, 25 Jan 2024 17:14:24 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2 (resend) 01/27] xen/vmap: Check the page has been
 mapped in vm_init_type()
Content-Language: en-US
To: Elias El Yandouzi <eliasely@amazon.com>
Cc: julien@xen.org, pdurrant@amazon.com, dwmw@amazon.com,
 Julien Grall <jgrall@amazon.com>, Andrew Cooper <andrew.cooper3@citrix.com>,
 George Dunlap <george.dunlap@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>,
 xen-devel@lists.xenproject.org
References: <20240116192611.41112-1-eliasely@amazon.com>
 <20240116192611.41112-2-eliasely@amazon.com>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <20240116192611.41112-2-eliasely@amazon.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 16.01.2024 20:25, Elias El Yandouzi wrote:
> From: Julien Grall <jgrall@amazon.com>
> 
> The function map_pages_to_xen() could fail if it can't allocate the
> underlying page tables or (at least on Arm) if the area was already
> mapped.
> 
> The first error is caught by clear_page() because it would fault.
> However, the second error while very unlikely is not caught at all.
> 
> As this is boot code, use BUG_ON() to check if map_pages_to_xen() has
> succeeded.
> 
> Signed-off-by: Julien Grall <jgrall@amazon.com>
> Signed-off-by: Elias El Yandouzi <eliasely@amazon.com>

Acked-by: Jan Beulich <jbeulich@suse.com>




From xen-devel-bounces@lists.xenproject.org Thu Jan 25 16:17:23 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 25 Jan 2024 16:17:23 +0000
Received: from list by lists.xenproject.org with outflank-mailman.671625.1045061 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rT2Pp-0005fW-VD; Thu, 25 Jan 2024 16:17:21 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 671625.1045061; Thu, 25 Jan 2024 16:17:21 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rT2Pp-0005fP-RT; Thu, 25 Jan 2024 16:17:21 +0000
Received: by outflank-mailman (input) for mailman id 671625;
 Thu, 25 Jan 2024 16:17:20 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=vt1H=JD=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rT2Po-0005e1-Ai
 for xen-devel@lists.xenproject.org; Thu, 25 Jan 2024 16:17:20 +0000
Received: from mail-lj1-x232.google.com (mail-lj1-x232.google.com
 [2a00:1450:4864:20::232])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 35eb3cad-bb9d-11ee-98f5-efadbce2ee36;
 Thu, 25 Jan 2024 17:17:18 +0100 (CET)
Received: by mail-lj1-x232.google.com with SMTP id
 38308e7fff4ca-2cf3a0b2355so6780251fa.0
 for <xen-devel@lists.xenproject.org>; Thu, 25 Jan 2024 08:17:18 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 h9-20020a0566380f0900b0046e3bcd98eesm4673182jas.172.2024.01.25.08.17.15
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 25 Jan 2024 08:17:17 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 35eb3cad-bb9d-11ee-98f5-efadbce2ee36
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1706199438; x=1706804238; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=NkaWoOXuQsLCXKe2CZtneDrD9FozKeNnFxnTxr7pM6M=;
        b=Dg/2oRvILcXojzCNaFI0yPE9B+d50GcyZZNbeQDJHkC48827B8YC+w/AN1rCsAfwW6
         9oWtMc5Lf7S7asKANHe/nizMEVLDXPrt1FDikx9RYiYLocu16e72h8zJmXXBUBDGwpPs
         amyVVncA0hnoUvjxFIe+FWe+UwMzBVT5CEBCj2Vd0xYJQ2hkR45Qbhzq/B+m38AqWmu7
         Wln/NNVkAxS3+M6vIIGMRqdmD8jPTGTO+go30CBc+gnlxlA32DmiS8aoizUWBQqZzz8x
         RsCJkdywxwEPORTxI25bqDJ3hT2jt+af9CWTrs4q8oMerBI31eXL16fDCj+SOR8oCB/o
         Ghrw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706199438; x=1706804238;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=NkaWoOXuQsLCXKe2CZtneDrD9FozKeNnFxnTxr7pM6M=;
        b=XTWSSeL7Rj//bkaVEjs2kltvDrPiBq0lH0GqthTEno76CPN8HUY03D1E7ONiiAUiCz
         JSWPaEoiTubfaArZlfnQn2YkBHsIIynFAAGGIBHo+i2POYoYTtrzdlExk7582AOTrzF0
         7hgp1f8Wsg/NzZ4xGM2CxjyoOIZxQ/p1jrd0XJQXAD4josT564uM4B1BiQcZ6XN9ZjBJ
         HXpwVLyy0WtyjrPFDqx2yumpzUZKsyYN0XzowZDUj6lxpi5UbWgq5OBs3au25Z0+HQEK
         I26hQtaf0q7CzTu1nU3Nm6Wxcvhc7i0luo++6hF5DgKuz2hyyEis4x6f7jyWwIXYzquZ
         vdcw==
X-Gm-Message-State: AOJu0YzXBri31S5KV+FCCyKEtX4TJ/c1PYbj3ug6tD9Td16wO15ZE6TI
	rBtsaeXKTddHw7XpdOO629uX8ymRq09xKvnPmvbV3CSHFeNp9H0DGqVmSEpKzQ==
X-Google-Smtp-Source: AGHT+IFWw0VCcq32QzPxdochEblVROzkwVYSrq5tY03HKgqhMrTvZNsPlsFeWDX6pyaTsa8veh0vLQ==
X-Received: by 2002:a2e:3217:0:b0:2cd:98e3:42b3 with SMTP id y23-20020a2e3217000000b002cd98e342b3mr686908ljy.24.1706199438061;
        Thu, 25 Jan 2024 08:17:18 -0800 (PST)
Message-ID: <6fc809af-9662-47fd-b91e-533fd75d0473@suse.com>
Date: Thu, 25 Jan 2024 17:17:13 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2 (resend) 02/27] x86/setup: Move vm_init() before acpi
 calls
Content-Language: en-US
To: Elias El Yandouzi <eliasely@amazon.com>
Cc: julien@xen.org, pdurrant@amazon.com, dwmw@amazon.com,
 Wei Liu <wei.liu2@citrix.com>, Stefano Stabellini <sstabellini@kernel.org>,
 Bertrand Marquis <bertrand.marquis@arm.com>,
 Michal Orzel <michal.orzel@amd.com>,
 Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
 Andrew Cooper <andrew.cooper3@citrix.com>,
 George Dunlap <george.dunlap@citrix.com>, Wei Liu <wl@xen.org>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 David Woodhouse <dwmw2@amazon.com>, Hongyan Xia <hongyxia@amazon.com>,
 Julien Grall <jgrall@amazon.com>, xen-devel@lists.xenproject.org
References: <20240116192611.41112-1-eliasely@amazon.com>
 <20240116192611.41112-3-eliasely@amazon.com>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <20240116192611.41112-3-eliasely@amazon.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 16.01.2024 20:25, Elias El Yandouzi wrote:
> From: Wei Liu <wei.liu2@citrix.com>
> 
> After the direct map removal, pages from the boot allocator are not
> going to be mapped in the direct map. Although we have map_domain_page,
> they are ephemeral and are less helpful for mappings that are more than a
> page, so we want a mechanism to globally map a range of pages, which is
> what vmap is for. Therefore, we bring vm_init into early boot stage.
> 
> To allow vmap to be initialised and used in early boot, we need to
> modify vmap to receive pages from the boot allocator during early boot
> stage.
> 
> Signed-off-by: Wei Liu <wei.liu2@citrix.com>
> Signed-off-by: David Woodhouse <dwmw2@amazon.com>
> Signed-off-by: Hongyan Xia <hongyxia@amazon.com>
> Signed-off-by: Julien Grall <jgrall@amazon.com>
> Signed-off-by: Elias El Yandouzi <eliasely@amazon.com>

Reviewed-by: Jan Beulich <jbeulich@suse.com>
albeit ...

> --- a/xen/arch/arm/setup.c
> +++ b/xen/arch/arm/setup.c
> @@ -748,6 +748,8 @@ void asmlinkage __init start_xen(unsigned long boot_phys_offset,
>  
>      setup_mm();
>  
> +    vm_init();
> +
>      /* Parse the ACPI tables for possible boot-time configuration */
>      acpi_boot_table_init();
>  
> @@ -759,8 +761,6 @@ void asmlinkage __init start_xen(unsigned long boot_phys_offset,
>       */
>      system_state = SYS_STATE_boot;
>  
> -    vm_init();
> -
>      if ( acpi_disabled )
>      {
>          printk("Booting using Device Tree\n");

... with this change the title claiming x86 isn't quite right. Hopefully
Arm folks will spot the need for an ack there nevertheless.

Jan


From xen-devel-bounces@lists.xenproject.org Thu Jan 25 16:25:08 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 25 Jan 2024 16:25:08 +0000
Received: from list by lists.xenproject.org with outflank-mailman.671631.1045071 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rT2XG-0007zo-Lg; Thu, 25 Jan 2024 16:25:02 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 671631.1045071; Thu, 25 Jan 2024 16:25:02 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rT2XG-0007zh-IR; Thu, 25 Jan 2024 16:25:02 +0000
Received: by outflank-mailman (input) for mailman id 671631;
 Thu, 25 Jan 2024 16:25:01 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rT2XF-0007zX-8i; Thu, 25 Jan 2024 16:25:01 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rT2XE-00085Z-OE; Thu, 25 Jan 2024 16:25:00 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rT2XE-0006B2-GG; Thu, 25 Jan 2024 16:25:00 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rT2XE-0007Tu-AJ; Thu, 25 Jan 2024 16:25:00 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=DUDfe2xk/xratFFTo1nvXQKymZyil81yooEeJo15Eu8=; b=yLiHM7+p81IjP0Epkaxb1kVtgc
	Y/H8GuBH8KJokHhIlF8vhG14IJ1TGB/bb6miaa2pn6KCBsxERuwGbvzEFQk8HHEQXafAPiE9Ch1Ts
	LyV0NUPgeD26nGBfwSXvxnPeJgr6j3642xVMhREYCWaeiHimi45buEQpMAJYloFpFgOM=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184461-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [seabios test] 184461: tolerable FAIL - PUSHED
X-Osstest-Failures:
    seabios:test-amd64-amd64-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    seabios:test-amd64-i386-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    seabios:test-amd64-amd64-qemuu-nested-amd:debian-hvm-install/l1/l2:fail:nonblocking
    seabios:test-amd64-amd64-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    seabios:test-amd64-i386-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    seabios:test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    seabios:test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
X-Osstest-Versions-This:
    seabios=3ae8888611e59ad82a59df7bead143662036d946
X-Osstest-Versions-That:
    seabios=a6ed6b701f0a57db0569ab98b0661c12a6ec3ff8
From: osstest service owner <osstest-admin@xenproject.org>
Date: Thu, 25 Jan 2024 16:25:00 +0000

flight 184461 seabios real [real]
http://logs.test-lab.xenproject.org/osstest/logs/184461/

Failures :-/ but no regressions.

Tests which did not succeed, but are not blocking:
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 183912
 test-amd64-i386-xl-qemuu-win7-amd64 19 guest-stop             fail like 183912
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 183912
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 183912
 test-amd64-i386-xl-qemuu-ws16-amd64 19 guest-stop             fail like 183912
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass

version targeted for testing:
 seabios              3ae8888611e59ad82a59df7bead143662036d946
baseline version:
 seabios              a6ed6b701f0a57db0569ab98b0661c12a6ec3ff8

Last test of basis   183912  2023-11-28 20:11:08 Z   57 days
Testing same since   184461  2024-01-25 09:12:41 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Gerd Hoffmann <kraxel@redhat.com>
  Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>

jobs:
 build-amd64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm           pass    
 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm            pass    
 test-amd64-amd64-xl-qemuu-debianhvm-i386-xsm                 pass    
 test-amd64-i386-xl-qemuu-debianhvm-i386-xsm                  pass    
 test-amd64-amd64-qemuu-nested-amd                            fail    
 test-amd64-i386-qemuu-rhel6hvm-amd                           pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64                    pass    
 test-amd64-i386-xl-qemuu-debianhvm-amd64                     pass    
 test-amd64-amd64-qemuu-freebsd11-amd64                       pass    
 test-amd64-amd64-qemuu-freebsd12-amd64                       pass    
 test-amd64-amd64-xl-qemuu-win7-amd64                         fail    
 test-amd64-i386-xl-qemuu-win7-amd64                          fail    
 test-amd64-amd64-xl-qemuu-ws16-amd64                         fail    
 test-amd64-i386-xl-qemuu-ws16-amd64                          fail    
 test-amd64-amd64-xl-qemuu-dmrestrict-amd64-dmrestrict        pass    
 test-amd64-i386-xl-qemuu-dmrestrict-amd64-dmrestrict         pass    
 test-amd64-amd64-qemuu-nested-intel                          pass    
 test-amd64-i386-qemuu-rhel6hvm-intel                         pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64-shadow             pass    
 test-amd64-i386-xl-qemuu-debianhvm-amd64-shadow              pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Pushing revision :

To xenbits.xen.org:/home/xen/git/osstest/seabios.git
   a6ed6b7..3ae8888  3ae8888611e59ad82a59df7bead143662036d946 -> xen-tested-master


From xen-devel-bounces@lists.xenproject.org Thu Jan 25 16:26:57 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 25 Jan 2024 16:26:57 +0000
Received: from list by lists.xenproject.org with outflank-mailman.671637.1045080 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rT2Z7-000092-4G; Thu, 25 Jan 2024 16:26:57 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 671637.1045080; Thu, 25 Jan 2024 16:26:57 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rT2Z7-00008v-15; Thu, 25 Jan 2024 16:26:57 +0000
Received: by outflank-mailman (input) for mailman id 671637;
 Thu, 25 Jan 2024 16:26:55 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=vt1H=JD=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rT2Z5-00008k-GQ
 for xen-devel@lists.xenproject.org; Thu, 25 Jan 2024 16:26:55 +0000
Received: from mail-lj1-x229.google.com (mail-lj1-x229.google.com
 [2a00:1450:4864:20::229])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 8d2b31c0-bb9e-11ee-8a42-1f161083a0e0;
 Thu, 25 Jan 2024 17:26:54 +0100 (CET)
Received: by mail-lj1-x229.google.com with SMTP id
 38308e7fff4ca-2cf1288097aso35196271fa.0
 for <xen-devel@lists.xenproject.org>; Thu, 25 Jan 2024 08:26:54 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 c8-20020a056e020cc800b0036197f7f157sm3760360ilj.2.2024.01.25.08.26.51
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 25 Jan 2024 08:26:53 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 8d2b31c0-bb9e-11ee-8a42-1f161083a0e0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1706200014; x=1706804814; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=lS/QFd9JgayhWPSwlPdPzOLOtKzV6aRZX87ksbq+cQI=;
        b=J4dk2hpA9HlAZ2/sixTf5/kWzyHiryTHy3kf/q8uw8pFrUiyCaYEAOif2KrvG4AkoK
         8qEaYVqIJmH/6Tqpp1w2TuMXV+CDcwwrixODPMs30qXqebseG2FWH0z78RbJmmEAkfxV
         izxPI6UvU+FFCHzxG4peI2u+IuZQa5gGh0L2Mc6iXIatISRTq5PEpnopNnqAphn9j6jf
         aFljzeqH75LDaBqux1cRMk6KLJQjrmFHtiGhR7THe0ZS1LHXZie2THHvol+lQNc0MPN/
         pBW04xNbTTWsV+MiKjt/X2UndgLSrz9fQelXj94p4jKzFqNwkoIzV8Ds8XCQhGcZwDpH
         n6Dg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706200014; x=1706804814;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=lS/QFd9JgayhWPSwlPdPzOLOtKzV6aRZX87ksbq+cQI=;
        b=uhKfohm/tA+ZdHaI5zPRP4xRDTYU56PJD6gc4vTfX9OpivnXUJk7QV+jPBtR/csLYi
         yf68vgcEw5KNp9nIROoajmDyPb3w9hrekWy58VRBceEzGD/3rPFEyNvPu4Iqor3cwLf9
         OpiuRC+jgfoluEPtuOJZ/K8H7A7IlZPbRlvVZuk3gFB5GBMYuemwNekbdjivf69BVF0P
         +IRWcWesyR0O5U215FZ+oUofWEaxEb9hJvj/sZmim+0K1CYrD3iRgBObONxOHqp5wH0w
         4kQf1qxFROEqUyBrEtJnJXcFueFdLLBiRiutHDJaxY8Yg6FjfgHN+I7V5dPvL+bBs2Vc
         cgYQ==
X-Gm-Message-State: AOJu0YzF3XNdxnJDychLZw8rEQFQc54yoCc6RKHnDhMbZBM+9SBji2c0
	QURrkbsazfZiJYuq0PQdbLoUpssFi7TkaroDYnciJnyHWAQmZyW5tduqKq20sg==
X-Google-Smtp-Source: AGHT+IFV0j6XSP5o7onfbyQ1UP/b4txN7/eQie5kCCaqtWl8WNLr+ESMo8ftYiYr2Hmt6gDBFrPMKA==
X-Received: by 2002:a2e:b059:0:b0:2cc:6210:1dce with SMTP id d25-20020a2eb059000000b002cc62101dcemr792266ljl.4.1706200013931;
        Thu, 25 Jan 2024 08:26:53 -0800 (PST)
Message-ID: <f4c31d93-ec71-4d63-8412-14b94bb078b4@suse.com>
Date: Thu, 25 Jan 2024 17:26:49 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2 (resend) 03/27] xen/vmap: Introduce vmap_size() and use
 it
Content-Language: en-US
To: Elias El Yandouzi <eliasely@amazon.com>
Cc: julien@xen.org, pdurrant@amazon.com, dwmw@amazon.com,
 Julien Grall <jgrall@amazon.com>, Andrew Cooper <andrew.cooper3@citrix.com>,
 George Dunlap <george.dunlap@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>,
 xen-devel@lists.xenproject.org
References: <20240116192611.41112-1-eliasely@amazon.com>
 <20240116192611.41112-4-eliasely@amazon.com>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <20240116192611.41112-4-eliasely@amazon.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 16.01.2024 20:25, Elias El Yandouzi wrote:
> From: Julien Grall <jgrall@amazon.com>
> 
> vunmap() and vfree() currently duplicate the (small) logic to find the
> size of an vmap area. In a follow-up patch, we will want to introduce
> another one (this time externally).
> 
> So introduce a new helper vmap_size() that will return the number of
> pages in the area starting at the given address. Take the opportunity
> to replace the open-coded version.
> 
> Note that vfree() was storing the type of the area in a local variable.
> But this seems to have never been used (even when it was introduced).
> 
> Signed-off-by: Julien Grall <jgrall@amazon.com>
> Signed-off-by: Elias El Yandouzi <eliasely@amazon.com>

I'm not really happy with exposing the function, but alternatives coming
to mind for the next patch aren't great either. Hence
Acked-by: Jan Beulich <jbeulich@suse.com>

Jan


From xen-devel-bounces@lists.xenproject.org Thu Jan 25 16:28:32 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 25 Jan 2024 16:28:32 +0000
Received: from list by lists.xenproject.org with outflank-mailman.671642.1045091 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rT2ad-0001Ed-EK; Thu, 25 Jan 2024 16:28:31 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 671642.1045091; Thu, 25 Jan 2024 16:28:31 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rT2ad-0001EW-Ba; Thu, 25 Jan 2024 16:28:31 +0000
Received: by outflank-mailman (input) for mailman id 671642;
 Thu, 25 Jan 2024 16:28:31 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=vt1H=JD=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rT2ac-0001EQ-VY
 for xen-devel@lists.xenproject.org; Thu, 25 Jan 2024 16:28:30 +0000
Received: from mail-ed1-x532.google.com (mail-ed1-x532.google.com
 [2a00:1450:4864:20::532])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id c57415f1-bb9e-11ee-98f5-efadbce2ee36;
 Thu, 25 Jan 2024 17:28:28 +0100 (CET)
Received: by mail-ed1-x532.google.com with SMTP id
 4fb4d7f45d1cf-55cdaa96f34so1772918a12.1
 for <xen-devel@lists.xenproject.org>; Thu, 25 Jan 2024 08:28:28 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 c8-20020a056e020cc800b0036197f7f157sm3760360ilj.2.2024.01.25.08.28.26
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 25 Jan 2024 08:28:27 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: c57415f1-bb9e-11ee-98f5-efadbce2ee36
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1706200108; x=1706804908; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=7pQid3mXTBuu2fPYArxOPPVeK5fmBM9o7miluHzNukM=;
        b=NSQuqGLaJrbhTORHNH27AUAk9NUoTZOQ93x0Kq/l6MbnlPtPFiTuLjrNgpgRjW2BvA
         KcTBN/EsktZr/SCHXjJl8huGBbo6tc2kht4LrKgIogMdPlufJGHNl16dkLdQw9P19cLz
         uVmtOVkB/QAbV+uUlMuRt/Nxinja3p8k9T7ysOAjOwF7s02m98mzH+p0G+1jBCDsBOPZ
         5DQqt5xBncb1zGWMOLLw3oXfr6rDoxf/yWDA4TtTZQbYU0eHbPKuFICQRFWVUFlBIntK
         YxDTqnl35WMOoqk8GeUD9/CJmqd3ev61gp6XeMwUlbuPHrTfPumhxrM2lVJ0/74O5mhZ
         2EdA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706200108; x=1706804908;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=7pQid3mXTBuu2fPYArxOPPVeK5fmBM9o7miluHzNukM=;
        b=HLyUai0cleTHu7h9IONh7uvvMAYh/pYIgTuE+KfamK5otcMqCmApOIjKrzP3+0+kys
         S3HKW9vjod4M5hdLh94w9uFs0RVGOOalubpexVRiJAjGC+GdfIR4sOouWomKkdg+ZLHm
         k6q7fSy7tc9Waqyqbk6hNywkuM9Dr0D9BvcdY0UZ1KGCIAsWHel5X6qa6GpmZnmjizNP
         yrWHkC+6fxppvy2Kz27jKshmz7ncFuJ8keCmlwrRZaVDoLX/X/HCqR8uLFK9DECseD2A
         EIGiqz4A8+m8Uv6sOmsBRSS5YY29oMHyL79SYA1Qpf0ftT8RXMMEYQB8HOa6ogu1mRGS
         Y32A==
X-Gm-Message-State: AOJu0YxXnZX6wBTb4MJ3WGnxUXtj5ppLjOwFEbSc9lLeht7jx0/FhV7M
	X1d8nwi6XE0B8bXs7iTb+vlgNwnPTvw4cSCHz6CVRTMX9dNC5byMfPi2BJlrng==
X-Google-Smtp-Source: AGHT+IEFpJsA+MLudHTE9ZnetRgYlKLjKi16iZCopjx1vfBq5aDfxxFq17R3AipJqGUxT8xtpFQj9w==
X-Received: by 2002:a17:906:fcd9:b0:a2f:ebb:f200 with SMTP id qx25-20020a170906fcd900b00a2f0ebbf200mr146015ejb.9.1706200108317;
        Thu, 25 Jan 2024 08:28:28 -0800 (PST)
Message-ID: <316b72bf-177b-4bcb-8941-e1013096f7cd@suse.com>
Date: Thu, 25 Jan 2024 17:28:25 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2 (resend) 04/27] acpi: vmap pages in
 acpi_os_alloc_memory
Content-Language: en-US
To: Elias El Yandouzi <eliasely@amazon.com>
Cc: julien@xen.org, pdurrant@amazon.com, dwmw@amazon.com,
 Hongyan Xia <hongyxia@amazon.com>, Andrew Cooper
 <andrew.cooper3@citrix.com>, George Dunlap <george.dunlap@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>,
 Julien Grall <jgrall@amazon.com>, xen-devel@lists.xenproject.org
References: <20240116192611.41112-1-eliasely@amazon.com>
 <20240116192611.41112-5-eliasely@amazon.com>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <20240116192611.41112-5-eliasely@amazon.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 16.01.2024 20:25, Elias El Yandouzi wrote:
> From: Hongyan Xia <hongyxia@amazon.com>
> 
> Also, introduce a wrapper around vmap that maps a contiguous range for
> boot allocations. Unfortunately, the new helper cannot be a static inline
> because the dependencies are a mess. We would need to re-include
> asm/page.h (was removed in aa4b9d1ee653 "include: don't use asm/page.h
> from common headers") and it doesn't look to be enough anymore
> because bits from asm/cpufeature.h is used in the definition of PAGE_NX.
> 
> Lastly, with the move to vmap(), it is now easier to find the size
> of the mapping. So pass the whole area to init_boot_pages() rather than
> just the first page.
> 
> Signed-off-by: Hongyan Xia <hongyxia@amazon.com>
> Signed-off-by: Julien Grall <jgrall@amazon.com>
> Signed-off-by: Elias El Yandouzi <eliasely@amazon.com>

Acked-by: Jan Beulich <jbeulich@suse.com>




From xen-devel-bounces@lists.xenproject.org Thu Jan 25 16:31:00 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 25 Jan 2024 16:31:00 +0000
Received: from list by lists.xenproject.org with outflank-mailman.671647.1045101 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rT2cx-0002yN-Q8; Thu, 25 Jan 2024 16:30:55 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 671647.1045101; Thu, 25 Jan 2024 16:30:55 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rT2cx-0002yG-ND; Thu, 25 Jan 2024 16:30:55 +0000
Received: by outflank-mailman (input) for mailman id 671647;
 Thu, 25 Jan 2024 16:30:54 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=vt1H=JD=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rT2cw-0002yA-Tw
 for xen-devel@lists.xenproject.org; Thu, 25 Jan 2024 16:30:54 +0000
Received: from mail-ed1-x531.google.com (mail-ed1-x531.google.com
 [2a00:1450:4864:20::531])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 1b408e6b-bb9f-11ee-98f5-efadbce2ee36;
 Thu, 25 Jan 2024 17:30:52 +0100 (CET)
Received: by mail-ed1-x531.google.com with SMTP id
 4fb4d7f45d1cf-55cd798b394so1794198a12.0
 for <xen-devel@lists.xenproject.org>; Thu, 25 Jan 2024 08:30:52 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 dh7-20020a056e021f0700b0035ff0206ae6sm9706806ilb.17.2024.01.25.08.30.50
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 25 Jan 2024 08:30:51 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 1b408e6b-bb9f-11ee-98f5-efadbce2ee36
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1706200252; x=1706805052; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=jpBBixWO47Get8Mb1/AylK/t47FYEgf3+z0r8OD2wPY=;
        b=X5VOsvsuQ62lAHWuzce8gz+YQbXPzHuBybmizjL/Ks/oX5Cxt6IXZ2nHbk6D6wnMPa
         U+d5MwUwTQOsdu2E/r9iBuOvkZtU+PQnHdW0g7vyuQFMwN3pC+F5kf2I4L65uT103OJY
         jCbidxTODEe9WARrBU4oUaE8xZx1O+4Y3hWp/Q1redg3aTfgbGgziTVLiooM2VwA0YiN
         6BPTlbD0pNsFQctV3lM7QOpA9fDcy7FKrNvEyOzC6kEA21dmdFnosUAt4WP+tn0lDzTz
         R2klWXCjIwhUgmoEGJVP4FE9yKj4Hbku/ieB2t7ZP066BFB+QEbA+WNPBgYIb0584UZI
         4wow==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706200252; x=1706805052;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=jpBBixWO47Get8Mb1/AylK/t47FYEgf3+z0r8OD2wPY=;
        b=F6/odaPJE2pJHBPWTuGfsxeY+nj8yITmJfAKCnmjpOBr8/XfBoNqClMakM2n+0qFJ+
         JNQNqs1ZLiFXREk5qm8EEPQpPgXNkrdrYEV8qik0ZoI8swwqf82yC7JyDuOZqvv98EHT
         /hrJCDv35Pg7WFF+Axs0qbQUjmJWA74OnwHpLd16+FOmDJPu7kP1VKulV9+LAH6yt+l3
         Rpic81JIvmcMfAUtipJ0oPZp4eyheVsUMFT7BP2cZ06gzcsu7La049lNMmq+BWocSpmk
         1Ddu0KiGiaLm6PtqOG/dRB16tbSE4YgqYqgXcVOTxmjwzGFPVv0aQnGddHbPb6Yc7zlh
         yvyw==
X-Gm-Message-State: AOJu0YyutEd66rQwDWG6I7H0BoNt+hQulYmIfYHgqtzdLp4gLSg17ml7
	cI29Ux0NZ4MQUmwAxa5EfwezI8KpV9YvvWew9Y9lTch/grTIQssOAPnu2khppQ==
X-Google-Smtp-Source: AGHT+IGFBPFsEv0BPkxNcVFm7mvc1d5BPT8/6dnaXKkUs7dMk7YEdCnw/i4AtO0B0UiKQE/rziz6Ww==
X-Received: by 2002:a17:906:4749:b0:a2b:f7d:5b5d with SMTP id j9-20020a170906474900b00a2b0f7d5b5dmr126728ejs.32.1706200252319;
        Thu, 25 Jan 2024 08:30:52 -0800 (PST)
Message-ID: <df2fb038-680f-41be-b378-9ff7514fcb68@suse.com>
Date: Thu, 25 Jan 2024 17:30:48 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2 (resend) 05/27] xen/numa: vmap the pages for memnodemap
Content-Language: en-US
To: Elias El Yandouzi <eliasely@amazon.com>
Cc: julien@xen.org, pdurrant@amazon.com, dwmw@amazon.com,
 Hongyan Xia <hongyxia@amazon.com>, Andrew Cooper
 <andrew.cooper3@citrix.com>, George Dunlap <george.dunlap@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>,
 Julien Grall <jgrall@amazon.com>, xen-devel@lists.xenproject.org
References: <20240116192611.41112-1-eliasely@amazon.com>
 <20240116192611.41112-6-eliasely@amazon.com>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <20240116192611.41112-6-eliasely@amazon.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 16.01.2024 20:25, Elias El Yandouzi wrote:
> --- a/xen/common/numa.c
> +++ b/xen/common/numa.c
> @@ -424,13 +424,14 @@ static int __init populate_memnodemap(const struct node *nodes,
>  static int __init allocate_cachealigned_memnodemap(void)
>  {
>      unsigned long size = PFN_UP(memnodemapsize * sizeof(*memnodemap));
> -    unsigned long mfn = mfn_x(alloc_boot_pages(size, 1));
> +    mfn_t mfn = alloc_boot_pages(size, 1);
>  
> -    memnodemap = mfn_to_virt(mfn);
> -    mfn <<= PAGE_SHIFT;
> +    memnodemap = vmap_contig(mfn, size);
> +    if ( !memnodemap )
> +        panic("Unable to map the ACPI SLIT. Retry with numa=off");

Looks like a copy-and-paste mistake from the next patch (which I expect
to have a similar panic(), with the text then actually applicable). With
this adjusted (could also be done while committing):
Reviewed-by: Jan Beulich <jbeulich@suse.com>

Jan


From xen-devel-bounces@lists.xenproject.org Thu Jan 25 16:32:13 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 25 Jan 2024 16:32:13 +0000
Received: from list by lists.xenproject.org with outflank-mailman.671650.1045111 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rT2eD-0003c6-2U; Thu, 25 Jan 2024 16:32:13 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 671650.1045111; Thu, 25 Jan 2024 16:32:13 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rT2eC-0003bz-Vz; Thu, 25 Jan 2024 16:32:12 +0000
Received: by outflank-mailman (input) for mailman id 671650;
 Thu, 25 Jan 2024 16:32:11 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=vt1H=JD=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rT2eB-0003bp-Tm
 for xen-devel@lists.xenproject.org; Thu, 25 Jan 2024 16:32:11 +0000
Received: from mail-lj1-x22a.google.com (mail-lj1-x22a.google.com
 [2a00:1450:4864:20::22a])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 4937366e-bb9f-11ee-98f5-efadbce2ee36;
 Thu, 25 Jan 2024 17:32:09 +0100 (CET)
Received: by mail-lj1-x22a.google.com with SMTP id
 38308e7fff4ca-2cf2adac1ccso21960551fa.3
 for <xen-devel@lists.xenproject.org>; Thu, 25 Jan 2024 08:32:09 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 dh7-20020a056e021f0700b0035ff0206ae6sm9706806ilb.17.2024.01.25.08.32.07
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 25 Jan 2024 08:32:08 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 4937366e-bb9f-11ee-98f5-efadbce2ee36
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1706200329; x=1706805129; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=dS5ri2IXt5mJgfqboW/ZEsC4RkztN2S/qXwuMfz7Cyg=;
        b=BlzEE1W8rJmXR5aVPN3dSTlTTvGj5JeGckF2uMteMoN6cyF3mxZHpyJEIKGrTO4Nhr
         RkE61YybTuSs28ZUs96Y4zU2FGao3tOneKMABwE+R7zF77iWYgGu2ZCdK3wwUzcKDwLM
         BSBCZ9JjNLz/0GE48xuADCs4bOsfKQm2dFCjpjEeHogJnEdOIxNtB1mhTmgongrcQXqm
         xs72p/C79/52PJf2SVOtYOUDOE70zLbIq3NIFqgr3k8jy0/8hc++EmMCXwioY2pUZith
         01dTnc9D20NfKFDdAVG3HoY5Z32qHXes0nZ9KDqr0e1oct8q1RQ9z2LlQBkCsVV9Xc+J
         TIoQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706200329; x=1706805129;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=dS5ri2IXt5mJgfqboW/ZEsC4RkztN2S/qXwuMfz7Cyg=;
        b=bvGL/VV2Ggtz4hYYlrvd4Hs9k3gjcoPk5mZET9OsoQ7fbzDTpbJQfsOLK048kvRxWf
         90f+DNhMLXp5Wmvrzo7XY0kZxk4cHCmMalJPKzTftm8h8g8jGfajCaLZU95ZqUwAbnKj
         C8I1bYD76t8IcFjnAi6gZEwC8pWHK191suEyvFIJ7igzgnVg1WOl0AYBXrMUAjfQiUIJ
         KtQ1x3iLvAHkqAH30oOwM/9PZHNYbkj0wj/GvLxTsjlYzxV0WlTdRz2Y3L0ARHXWsATt
         3wapSvCB7W+BANmPSTADmQAKimCRg9CSYS3fORyFjuEl6mtHPZFTj3X5/Ik++TTDc04w
         ftAA==
X-Gm-Message-State: AOJu0YwgWaZfAvEh1t/qBNSxEznpojVHFEgoHe7MowvvPjUjUPHZd68E
	aULxyzNH8nSOEWZR4vx4RFLo7296+Q30HtFlLCdptNjxn0B0mQ3gxx4hBWKLuQ==
X-Google-Smtp-Source: AGHT+IFElkGtgsOnB79U9FLaV0MobHUc8cuojmtwV6plhGvP8Jgeiai/dLcI0LUfXgIqeKIpzcCKxw==
X-Received: by 2002:a2e:b5dc:0:b0:2ce:540:f693 with SMTP id g28-20020a2eb5dc000000b002ce0540f693mr669136ljn.25.1706200329245;
        Thu, 25 Jan 2024 08:32:09 -0800 (PST)
Message-ID: <171af4f2-1725-4280-9440-b3bedf6ccf45@suse.com>
Date: Thu, 25 Jan 2024 17:32:06 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2 (resend) 06/27] x86/srat: vmap the pages for acpi_slit
Content-Language: en-US
To: Elias El Yandouzi <eliasely@amazon.com>
Cc: julien@xen.org, pdurrant@amazon.com, dwmw@amazon.com,
 Hongyan Xia <hongyxia@amazon.com>, Andrew Cooper
 <andrew.cooper3@citrix.com>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger.pau@citrix.com>, Wei Liu <wl@xen.org>,
 Julien Grall <jgrall@amazon.com>, xen-devel@lists.xenproject.org
References: <20240116192611.41112-1-eliasely@amazon.com>
 <20240116192611.41112-7-eliasely@amazon.com>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <20240116192611.41112-7-eliasely@amazon.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 16.01.2024 20:25, Elias El Yandouzi wrote:
> From: Hongyan Xia <hongyxia@amazon.com>
> 
> This avoids the assumption that boot pages are in the direct map.
> 
> Signed-off-by: Hongyan Xia <hongyxia@amazon.com>
> Signed-off-by: Julien Grall <jgrall@amazon.com>
> Signed-off-by: Elias El Yandouzi <eliasely@amazon.com>

Reviewed-by: Jan Beulich <jbeulich@suse.com>




From xen-devel-bounces@lists.xenproject.org Thu Jan 25 16:45:58 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 25 Jan 2024 16:45:58 +0000
Received: from list by lists.xenproject.org with outflank-mailman.671661.1045120 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rT2rP-0006Np-6R; Thu, 25 Jan 2024 16:45:51 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 671661.1045120; Thu, 25 Jan 2024 16:45:51 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rT2rP-0006Ni-3j; Thu, 25 Jan 2024 16:45:51 +0000
Received: by outflank-mailman (input) for mailman id 671661;
 Thu, 25 Jan 2024 16:45:49 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=+DBC=JD=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1rT2rN-0006Nc-NK
 for xen-devel@lists.xenproject.org; Thu, 25 Jan 2024 16:45:49 +0000
Received: from mail-wm1-x333.google.com (mail-wm1-x333.google.com
 [2a00:1450:4864:20::333])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 3100729d-bba1-11ee-8a42-1f161083a0e0;
 Thu, 25 Jan 2024 17:45:48 +0100 (CET)
Received: by mail-wm1-x333.google.com with SMTP id
 5b1f17b1804b1-40ed2333c8fso9170975e9.0
 for <xen-devel@lists.xenproject.org>; Thu, 25 Jan 2024 08:45:48 -0800 (PST)
Received: from [10.80.67.30] (default-46-102-197-194.interdsl.co.uk.
 [46.102.197.194]) by smtp.gmail.com with ESMTPSA id
 l1-20020a05600c4f0100b0040e549c77a1sm3227637wmq.32.2024.01.25.08.45.47
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 25 Jan 2024 08:45:47 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 3100729d-bba1-11ee-8a42-1f161083a0e0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1706201148; x=1706805948; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=WgVwAW5QZiKkSMI6onyy0wKX+GR8T1FmIY5QV7mUsII=;
        b=nG1TcmRFX6aC9DuBfzdUt1T+yu2HjtINq0L1D3VAn9sPjoG4UqT92S6czLebBnBfVs
         a8z32emZUaicsAVjVBU5yaSBGbW1iV27camP17NqPfm78flf1C+8U3ccK0nkkeeyZxEd
         9jfCLFvcEiEyZ3yoDB5lrrZTfSXLFn0EsbIcQ=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706201148; x=1706805948;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=WgVwAW5QZiKkSMI6onyy0wKX+GR8T1FmIY5QV7mUsII=;
        b=t/41fPFmjKHA8r9/5cnIaR7hFOqOr2pCxlvdzB+HkGpsPXdx5/AjNwsdwEK3sopGEv
         t+PDM0uGNMAIQP50Fi7M87DVJy1xE4z0FJudh9b414ssJ6J6Kd1Ejb1xwt1LYpGmVi+N
         lkmPLRZZpFADOiN+0bcmNb2AUZJ1weH/RBqIcSvsxkj90v+xfyeaPgg1Jz2A4DJMdd8S
         Lvvi0piR2uC8HkcBRDt+1BaTW96LIn41zMtUJLry0OtIhqPnLLf+UySCI3F6KwcUBkse
         S3OvX45pzjDV11gNGGcV6gJYQuq+Mj8xau9YX+OBIedHkgLkCVDa5B6yJf0S1t1ItHPd
         BN/Q==
X-Gm-Message-State: AOJu0YxtUmeYx6MpyQ5DhA3+SG9Y0jh+d/6wjoXegjiySWzQPIXMMrAn
	+a3Fw3oCLdnWor2Ub5U1MW+vhlwoV5nzcPF4+qPKk5dHPae9SvFtGWwN67UpIHs=
X-Google-Smtp-Source: AGHT+IER1LVpbeQ6Su2uj4kIirksuZ2Qknuhy2iH1gqeiPk7XzesrvJWBEeNA4KS1RjHbA2dRIrvAg==
X-Received: by 2002:a7b:c30e:0:b0:40e:76d9:e5ce with SMTP id k14-20020a7bc30e000000b0040e76d9e5cemr2035wmj.219.1706201147728;
        Thu, 25 Jan 2024 08:45:47 -0800 (PST)
Message-ID: <6758d47e-95f6-45af-8ce4-7ebfe8f24669@citrix.com>
Date: Thu, 25 Jan 2024 16:45:47 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] x86: purge NMI_IO_APIC
Content-Language: en-GB
To: Jan Beulich <jbeulich@suse.com>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Wei Liu <wl@xen.org>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger.pau@citrix.com>
References: <fd1e8ff0-0d85-47bd-85d6-6cfbfdd8813a@suse.com>
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 xsFNBFLhNn8BEADVhE+Hb8i0GV6mihnnr/uiQQdPF8kUoFzCOPXkf7jQ5sLYeJa0cQi6Penp
 VtiFYznTairnVsN5J+ujSTIb+OlMSJUWV4opS7WVNnxHbFTPYZVQ3erv7NKc2iVizCRZ2Kxn
 srM1oPXWRic8BIAdYOKOloF2300SL/bIpeD+x7h3w9B/qez7nOin5NzkxgFoaUeIal12pXSR
 Q354FKFoy6Vh96gc4VRqte3jw8mPuJQpfws+Pb+swvSf/i1q1+1I4jsRQQh2m6OTADHIqg2E
 ofTYAEh7R5HfPx0EXoEDMdRjOeKn8+vvkAwhviWXTHlG3R1QkbE5M/oywnZ83udJmi+lxjJ5
 YhQ5IzomvJ16H0Bq+TLyVLO/VRksp1VR9HxCzItLNCS8PdpYYz5TC204ViycobYU65WMpzWe
 LFAGn8jSS25XIpqv0Y9k87dLbctKKA14Ifw2kq5OIVu2FuX+3i446JOa2vpCI9GcjCzi3oHV
 e00bzYiHMIl0FICrNJU0Kjho8pdo0m2uxkn6SYEpogAy9pnatUlO+erL4LqFUO7GXSdBRbw5
 gNt25XTLdSFuZtMxkY3tq8MFss5QnjhehCVPEpE6y9ZjI4XB8ad1G4oBHVGK5LMsvg22PfMJ
 ISWFSHoF/B5+lHkCKWkFxZ0gZn33ju5n6/FOdEx4B8cMJt+cWwARAQABzSlBbmRyZXcgQ29v
 cGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPsLBegQTAQgAJAIbAwULCQgHAwUVCgkI
 CwUWAgMBAAIeAQIXgAUCWKD95wIZAQAKCRBlw/kGpdefoHbdD/9AIoR3k6fKl+RFiFpyAhvO
 59ttDFI7nIAnlYngev2XUR3acFElJATHSDO0ju+hqWqAb8kVijXLops0gOfqt3VPZq9cuHlh
 IMDquatGLzAadfFx2eQYIYT+FYuMoPZy/aTUazmJIDVxP7L383grjIkn+7tAv+qeDfE+txL4
 SAm1UHNvmdfgL2/lcmL3xRh7sub3nJilM93RWX1Pe5LBSDXO45uzCGEdst6uSlzYR/MEr+5Z
 JQQ32JV64zwvf/aKaagSQSQMYNX9JFgfZ3TKWC1KJQbX5ssoX/5hNLqxMcZV3TN7kU8I3kjK
 mPec9+1nECOjjJSO/h4P0sBZyIUGfguwzhEeGf4sMCuSEM4xjCnwiBwftR17sr0spYcOpqET
 ZGcAmyYcNjy6CYadNCnfR40vhhWuCfNCBzWnUW0lFoo12wb0YnzoOLjvfD6OL3JjIUJNOmJy
 RCsJ5IA/Iz33RhSVRmROu+TztwuThClw63g7+hoyewv7BemKyuU6FTVhjjW+XUWmS/FzknSi
 dAG+insr0746cTPpSkGl3KAXeWDGJzve7/SBBfyznWCMGaf8E2P1oOdIZRxHgWj0zNr1+ooF
 /PzgLPiCI4OMUttTlEKChgbUTQ+5o0P080JojqfXwbPAyumbaYcQNiH1/xYbJdOFSiBv9rpt
 TQTBLzDKXok86M7BTQRS4TZ/ARAAkgqudHsp+hd82UVkvgnlqZjzz2vyrYfz7bkPtXaGb9H4
 Rfo7mQsEQavEBdWWjbga6eMnDqtu+FC+qeTGYebToxEyp2lKDSoAsvt8w82tIlP/EbmRbDVn
 7bhjBlfRcFjVYw8uVDPptT0TV47vpoCVkTwcyb6OltJrvg/QzV9f07DJswuda1JH3/qvYu0p
 vjPnYvCq4NsqY2XSdAJ02HrdYPFtNyPEntu1n1KK+gJrstjtw7KsZ4ygXYrsm/oCBiVW/OgU
 g/XIlGErkrxe4vQvJyVwg6YH653YTX5hLLUEL1NS4TCo47RP+wi6y+TnuAL36UtK/uFyEuPy
 wwrDVcC4cIFhYSfsO0BumEI65yu7a8aHbGfq2lW251UcoU48Z27ZUUZd2Dr6O/n8poQHbaTd
 6bJJSjzGGHZVbRP9UQ3lkmkmc0+XCHmj5WhwNNYjgbbmML7y0fsJT5RgvefAIFfHBg7fTY/i
 kBEimoUsTEQz+N4hbKwo1hULfVxDJStE4sbPhjbsPCrlXf6W9CxSyQ0qmZ2bXsLQYRj2xqd1
 bpA+1o1j2N4/au1R/uSiUFjewJdT/LX1EklKDcQwpk06Af/N7VZtSfEJeRV04unbsKVXWZAk
 uAJyDDKN99ziC0Wz5kcPyVD1HNf8bgaqGDzrv3TfYjwqayRFcMf7xJaL9xXedMcAEQEAAcLB
 XwQYAQgACQUCUuE2fwIbDAAKCRBlw/kGpdefoG4XEACD1Qf/er8EA7g23HMxYWd3FXHThrVQ
 HgiGdk5Yh632vjOm9L4sd/GCEACVQKjsu98e8o3ysitFlznEns5EAAXEbITrgKWXDDUWGYxd
 pnjj2u+GkVdsOAGk0kxczX6s+VRBhpbBI2PWnOsRJgU2n10PZ3mZD4Xu9kU2IXYmuW+e5KCA
 vTArRUdCrAtIa1k01sPipPPw6dfxx2e5asy21YOytzxuWFfJTGnVxZZSCyLUO83sh6OZhJkk
 b9rxL9wPmpN/t2IPaEKoAc0FTQZS36wAMOXkBh24PQ9gaLJvfPKpNzGD8XWR5HHF0NLIJhgg
 4ZlEXQ2fVp3XrtocHqhu4UZR4koCijgB8sB7Tb0GCpwK+C4UePdFLfhKyRdSXuvY3AHJd4CP
 4JzW0Bzq/WXY3XMOzUTYApGQpnUpdOmuQSfpV9MQO+/jo7r6yPbxT7CwRS5dcQPzUiuHLK9i
 nvjREdh84qycnx0/6dDroYhp0DFv4udxuAvt1h4wGwTPRQZerSm4xaYegEFusyhbZrI0U9tJ
 B8WrhBLXDiYlyJT6zOV2yZFuW47VrLsjYnHwn27hmxTC/7tvG3euCklmkn9Sl9IAKFu29RSo
 d5bD8kMSCYsTqtTfT6W4A3qHGvIDta3ptLYpIAOD2sY3GYq2nf3Bbzx81wZK14JdDDHUX2Rs
 6+ahAA==
In-Reply-To: <fd1e8ff0-0d85-47bd-85d6-6cfbfdd8813a@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 25/01/2024 2:13 pm, Jan Beulich wrote:
> Even going back to 3.2 source code, I can't spot how this watchdog mode
> could ever have been enabled in Xen. The only effect its presence had
> for all the years was the retaining of a dead string literal.
>
> Signed-off-by: Jan Beulich <jbeulich@suse.com>

We have far too much junk here.

Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>


From xen-devel-bounces@lists.xenproject.org Thu Jan 25 16:46:12 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 25 Jan 2024 16:46:12 +0000
Received: from list by lists.xenproject.org with outflank-mailman.671662.1045130 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rT2rk-0006kx-IE; Thu, 25 Jan 2024 16:46:12 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 671662.1045130; Thu, 25 Jan 2024 16:46:12 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rT2rk-0006ko-FG; Thu, 25 Jan 2024 16:46:12 +0000
Received: by outflank-mailman (input) for mailman id 671662;
 Thu, 25 Jan 2024 16:46:11 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=vt1H=JD=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rT2rj-0006Nc-3H
 for xen-devel@lists.xenproject.org; Thu, 25 Jan 2024 16:46:11 +0000
Received: from mail-lj1-x232.google.com (mail-lj1-x232.google.com
 [2a00:1450:4864:20::232])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 3d1a6ab1-bba1-11ee-8a42-1f161083a0e0;
 Thu, 25 Jan 2024 17:46:08 +0100 (CET)
Received: by mail-lj1-x232.google.com with SMTP id
 38308e7fff4ca-2cf205dc075so24520841fa.2
 for <xen-devel@lists.xenproject.org>; Thu, 25 Jan 2024 08:46:08 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 5-20020a6b1505000000b007bf2c9bbdd6sm7616710iov.50.2024.01.25.08.46.06
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 25 Jan 2024 08:46:07 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 3d1a6ab1-bba1-11ee-8a42-1f161083a0e0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1706201168; x=1706805968; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=+2zNLH228gIijs1yWo5a80VfczrzNbWVli54+hLosIs=;
        b=R7+wgcJQNz6HwgnzuMgmxVCXuMaqFQuKE3V8EsSoVrhWECiFEckWXRQKN6l0leqUHG
         qrGaQr5gTkHs1f8Z74xmX77qyTPd2ZWiO2DenrY3proD7q7bDHlJrBVKcOehXeINGuCc
         6rNqVBUg6okgPJaNWAUczhS0OJI4SnukgI8vH2iVfqDwxvtZawm3tD6+063T8VxSBsvq
         pV1gTZMiLnmETrWf24JT6Yof18Qk1UaHO6h3Ak7VSbdD9BDrmfuUOUoW5glyy4EY6G/2
         N+yfJGTeJZl4JMZiABNqVZdyajHeltkXIZ6fFo7IUAlGU93l33d1OC/ATaa0nALRKBPA
         CCaw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706201168; x=1706805968;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=+2zNLH228gIijs1yWo5a80VfczrzNbWVli54+hLosIs=;
        b=AWKZ7UAdwwxxG0IML60V/ahasF5TW4jLFitxZ6SxCWCQnNylwOuPwJnvlw9gaP72u9
         KQPtYr1e/tIZNLMeP7YC5ZZVpHJ6MGJfER30htYXlgotMsPdTyx0FwLkqqQWuGgY7xML
         5RceGb3wFHs66W4PLw6FvTiT/54QWh+GyFBADSz6dYe8q0i2Rj06ns47mX/2PwbtTeL2
         9t9Sdbpxx4D3Bf7zVAj0iVmmtW6+5KJ7WssUHMbB+YqyP4rD/izn+yp6TYreCTkAUQhF
         95ZyHDkZeJnhWA3if9aixMaZbKNyNRangW4FE3VWbNS2BzXvsU6hYdd+hW6K5F5R16yN
         BDNQ==
X-Gm-Message-State: AOJu0YwyFHhetX2z4gvSurPE6Xro4XZiJg+MwWESikfzjBKa1bxf+ldc
	IlmNvvXe+4JuOexi2fb+4wiLQ4icQUnrwnaVaRE4gyDaEhvwqEHvMjcIf1YpBQ==
X-Google-Smtp-Source: AGHT+IHWdPur9nNqDN1s5T+7s7ULD6UTGdc4aj6G8KXAuSGl/4q6QjscWQMEm9tA6b8bcN9vgP9COA==
X-Received: by 2002:a05:651c:cc:b0:2cb:2d48:334 with SMTP id 12-20020a05651c00cc00b002cb2d480334mr659742ljr.60.1706201167993;
        Thu, 25 Jan 2024 08:46:07 -0800 (PST)
Message-ID: <8bfc95ea-9d0b-4ef5-8179-5e345a318af4@suse.com>
Date: Thu, 25 Jan 2024 17:46:04 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v6 1/3] x86/iommu: remove regions not to be mapped
Content-Language: en-US
To: Roger Pau Monne <roger.pau@citrix.com>
Cc: Paul Durrant <paul@xen.org>, Andrew Cooper <andrew.cooper3@citrix.com>,
 Wei Liu <wl@xen.org>, xen-devel@lists.xenproject.org
References: <20240124172953.29814-2-roger.pau@citrix.com>
 <20240125132626.34553-1-roger.pau@citrix.com>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <20240125132626.34553-1-roger.pau@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 25.01.2024 14:26, Roger Pau Monne wrote:
> --- a/xen/arch/x86/setup.c
> +++ b/xen/arch/x86/setup.c
> @@ -2138,6 +2138,54 @@ int __hwdom_init xen_in_range(unsigned long mfn)
>      return 0;
>  }
>  
> +int __hwdom_init remove_xen_ranges(struct rangeset *r)
> +{
> +    paddr_t start, end;
> +    int rc;
> +
> +    /* S3 resume code (and other real mode trampoline code) */
> +    rc = rangeset_remove_range(r, PFN_DOWN(bootsym_phys(trampoline_start)),
> +                               PFN_DOWN(bootsym_phys(trampoline_end) - 1));

With the understanding that we've settled on us not quite being at the
point where only one page of the trampoline is kept mapped:
Reviewed-by: Jan Beulich <jbeulich@suse.com>

Jan


From xen-devel-bounces@lists.xenproject.org Thu Jan 25 16:55:51 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 25 Jan 2024 16:55:51 +0000
Received: from list by lists.xenproject.org with outflank-mailman.671673.1045141 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rT30z-0001GE-FN; Thu, 25 Jan 2024 16:55:45 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 671673.1045141; Thu, 25 Jan 2024 16:55:45 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rT30z-0001G7-BY; Thu, 25 Jan 2024 16:55:45 +0000
Received: by outflank-mailman (input) for mailman id 671673;
 Thu, 25 Jan 2024 16:55:44 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=vt1H=JD=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rT30y-0001G0-RV
 for xen-devel@lists.xenproject.org; Thu, 25 Jan 2024 16:55:44 +0000
Received: from mail-ej1-x62c.google.com (mail-ej1-x62c.google.com
 [2a00:1450:4864:20::62c])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 93f409e2-bba2-11ee-8a42-1f161083a0e0;
 Thu, 25 Jan 2024 17:55:43 +0100 (CET)
Received: by mail-ej1-x62c.google.com with SMTP id
 a640c23a62f3a-a2e0be86878so188767966b.1
 for <xen-devel@lists.xenproject.org>; Thu, 25 Jan 2024 08:55:43 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 s4-20020a92c5c4000000b00361a7db24e4sm4852224ilt.57.2024.01.25.08.55.41
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 25 Jan 2024 08:55:42 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 93f409e2-bba2-11ee-8a42-1f161083a0e0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1706201743; x=1706806543; darn=lists.xenproject.org;
        h=content-transfer-encoding:autocrypt:subject:from:cc:to
         :content-language:user-agent:mime-version:date:message-id:from:to:cc
         :subject:date:message-id:reply-to;
        bh=GoAzlCIARaqGmBCt9LvtfR+hrmC+N8QP92P3NFqBjuc=;
        b=eG7Wki/uhCwrfPCSKNyAp5oYL4Yn5UYGioo99yHY+1DbmFg7BM4tNKtls1TDnCdiSt
         dTc6JDLlQYIOd4Nap68vuEh+sxe1nFVtKGgtaiv9jxypTKwiHblSGwZHaMJirZEyMuCb
         rEGO7w9TOMoXDVIbLl8O2Ka/J/c6SPeyad7NzoiRtyRkz0QntdeOMqQza2oaFM+5O+F6
         5qylzXAMJaWnbjO0el0NM5NsBnQgXtmg0Rny2Sk22GrWZVg9LJ17INF/5zY9QZQOrLT5
         KzRvmN/nLCYQZeWdXPcqHUv12JBxniNlHvHAEi3mOcjFNsiEEoMuzkPrdYES9/uHUyi/
         pzXA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706201743; x=1706806543;
        h=content-transfer-encoding:autocrypt:subject:from:cc:to
         :content-language:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=GoAzlCIARaqGmBCt9LvtfR+hrmC+N8QP92P3NFqBjuc=;
        b=HkQB0eglVPYNVYZfMlrRJjzTsY/uZcejrk9Hy1o+OaphIzoLNl3AnrezUsjnRLvBCr
         bZUXTvAj5/XTk62cLt7/R+mQdWb9G1deicm7xG6Ktx+9zxuvxH2d6R6p5g94oK9fDqDt
         +uXauiNGxvu1pj0ZEtr7I71TMwvOIG86xrOvDxIbPBFm/yXgJW/ohepXBkdUCfZprZqX
         mtfP2XBVuVp+IUt3czLpfEB3lLCWj3dNxYmdsaLXdyi2ynd++bcUdaGAaAl29jcYwAdm
         Cow0J4uVo7hmbOoznp7uM9ry5igXgoaeBkx8+JiTWs+6eeOTHdpvZKf9HMbIDflSfSQP
         w2nQ==
X-Gm-Message-State: AOJu0YxdXLYpe5TNockoyhdsLKQfBZshj+dRc8M62MmRwWOvlBnKkFYo
	gpE6ePReiVULUqyDTJ+1hE7VOu1fGIBTEgVM/qa24S3GmMjnMXG4vQBzx6VvADRIh7EnXgk+T4c
	=
X-Google-Smtp-Source: AGHT+IH20hRUPdzUzKnR7qdOZAKJ0Z7NZXuIYsBgnYpgYfkgtpGmZqyBUtJp8QlXGH45l9yc3IYmww==
X-Received: by 2002:a17:906:847c:b0:a31:8299:3781 with SMTP id hx28-20020a170906847c00b00a3182993781mr169788ejc.20.1706201743258;
        Thu, 25 Jan 2024 08:55:43 -0800 (PST)
Message-ID: <d5fd3646-18b3-4dae-8da7-6afa187f930e@suse.com>
Date: Thu, 25 Jan 2024 17:55:39 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Content-Language: en-US
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, Wei Liu <wl@xen.org>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
From: Jan Beulich <jbeulich@suse.com>
Subject: [PATCH] x86: increase NMI timer frequency if necessary
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

Since the performance counters used for the NMI watchdog count non-
halted cycles, they may count at a rate higher than cpu_khz. Thus the
watchdog tick may occur more frequently than invocations of the timer
if we don't account for the ratio between nominal and maximum CPU clock
speeds, which would be a problem in particular when "watchdog_timeout=1"
is in effect (for high enough ratios even larger timout values may pose
a problem).

Leverage the so far display-only data we collect on newer Intel and AMD
CPUs. On older CPUs we just have to (continue to) hope that the default
frequency of 1 Hz is okay(-ish) to use.

While adding the new variable, also move the (now adjacent) cpu_khz to
.data.ro_after_init.

Signed-off-by: Jan Beulich <jbeulich@suse.com>
---
This renders the "log" in the function names somewhat stale, but I don't
think this strictly warrants renaming the functions right away.

--- a/xen/arch/x86/cpu/amd.c
+++ b/xen/arch/x86/cpu/amd.c
@@ -657,12 +657,18 @@ void amd_log_freq(const struct cpuinfo_x
 		                     : (((v) & 0xff) * 25 * 8) / (((v) >> 8) & 0x3f))
 	if (idx && idx < h &&
 	    !rdmsr_safe(0xC0010064 + idx, val) && (val >> 63) &&
-	    !rdmsr_safe(0xC0010064, hi) && (hi >> 63))
+	    !rdmsr_safe(0xC0010064, hi) && (hi >> 63)) {
+		if (c == &boot_cpu_data)
+			cpu_max_mhz = FREQ(hi);
 		printk("CPU%u: %lu (%lu ... %lu) MHz\n",
 		       smp_processor_id(), FREQ(val), FREQ(lo), FREQ(hi));
-	else if (h && !rdmsr_safe(0xC0010064, hi) && (hi >> 63))
+	}
+	else if (h && !rdmsr_safe(0xC0010064, hi) && (hi >> 63)) {
+		if (c == &boot_cpu_data)
+			cpu_max_mhz = FREQ(hi);
 		printk("CPU%u: %lu ... %lu MHz\n",
 		       smp_processor_id(), FREQ(lo), FREQ(hi));
+	}
 	else
 		printk("CPU%u: %lu MHz\n", smp_processor_id(), FREQ(lo));
 #undef FREQ
--- a/xen/arch/x86/cpu/intel.c
+++ b/xen/arch/x86/cpu/intel.c
@@ -456,7 +456,11 @@ static void intel_log_freq(const struct
             if ( eax )
                 printk(" base: %u MHz", eax);
             if ( ebx )
+            {
+                if ( c == &boot_cpu_data )
+                    cpu_max_mhz = ebx;
                 printk(" max: %u MHz", ebx);
+            }
             printk("\n");
         }
     }
@@ -522,6 +526,8 @@ static void intel_log_freq(const struct
     printk("CPU%u: ", smp_processor_id());
     if ( min_ratio )
         printk("%u ... ", (factor * min_ratio + 50) / 100);
+    if ( c == &boot_cpu_data && !cpu_max_mhz )
+        cpu_max_mhz = (factor * max_ratio + 50) / 100;
     printk("%u MHz\n", (factor * max_ratio + 50) / 100);
 }
 
--- a/xen/arch/x86/include/asm/time.h
+++ b/xen/arch/x86/include/asm/time.h
@@ -8,6 +8,8 @@ typedef u64 cycles_t;
 
 extern bool disable_tsc_sync;
 
+extern unsigned int cpu_max_mhz;
+
 static inline cycles_t get_cycles(void)
 {
     return rdtsc_ordered();
--- a/xen/arch/x86/nmi.c
+++ b/xen/arch/x86/nmi.c
@@ -213,10 +213,12 @@ void __init check_nmi_watchdog(void)
     return;
 }
 
+static unsigned int __ro_after_init timer_gap = MILLISECS(1000);
+
 static void cf_check nmi_timer_fn(void *unused)
 {
     this_cpu(nmi_timer_ticks)++;
-    set_timer(&this_cpu(nmi_timer), NOW() + MILLISECS(1000));
+    set_timer(&this_cpu(nmi_timer), NOW() + timer_gap);
 }
 
 void disable_lapic_nmi_watchdog(void)
@@ -477,8 +479,17 @@ bool watchdog_enabled(void)
 
 int __init watchdog_setup(void)
 {
+    unsigned long cpu_mhz = cpu_khz / 1000;
     unsigned int cpu;
 
+    if ( cpu_max_mhz > cpu_mhz )
+    {
+        timer_gap = timer_gap * cpu_mhz / cpu_max_mhz;
+        /* To be on the safe side, bound to 1ms. */
+        if ( timer_gap < MILLISECS(1) )
+            timer_gap = MILLISECS(1);
+    }
+
     /*
      * Activate periodic heartbeats. We cannot do this earlier during 
      * setup because the timer infrastructure is not available.
--- a/xen/arch/x86/time.c
+++ b/xen/arch/x86/time.c
@@ -47,7 +47,9 @@
 static char __initdata opt_clocksource[10];
 string_param("clocksource", opt_clocksource);
 
-unsigned long __read_mostly cpu_khz;  /* CPU clock frequency in kHz. */
+unsigned long __ro_after_init cpu_khz;    /* CPU clock frequency in kHz. */
+unsigned int __ro_after_init cpu_max_mhz; /* CPU max (known) clkfreq in MHz. */
+
 DEFINE_SPINLOCK(rtc_lock);
 unsigned long pit0_ticks;
 


From xen-devel-bounces@lists.xenproject.org Thu Jan 25 16:57:15 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 25 Jan 2024 16:57:15 +0000
Received: from list by lists.xenproject.org with outflank-mailman.671676.1045151 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rT32P-0001tU-OX; Thu, 25 Jan 2024 16:57:13 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 671676.1045151; Thu, 25 Jan 2024 16:57:13 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rT32P-0001tN-LQ; Thu, 25 Jan 2024 16:57:13 +0000
Received: by outflank-mailman (input) for mailman id 671676;
 Thu, 25 Jan 2024 16:57:12 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=5F1I=JD=linaro.org=philmd@srs-se1.protection.inumbo.net>)
 id 1rT32O-0001tF-4S
 for xen-devel@lists.xenproject.org; Thu, 25 Jan 2024 16:57:12 +0000
Received: from mail-wm1-x330.google.com (mail-wm1-x330.google.com
 [2a00:1450:4864:20::330])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id c64e1f2d-bba2-11ee-98f5-efadbce2ee36;
 Thu, 25 Jan 2024 17:57:08 +0100 (CET)
Received: by mail-wm1-x330.google.com with SMTP id
 5b1f17b1804b1-40ed1e78835so8517595e9.2
 for <xen-devel@lists.xenproject.org>; Thu, 25 Jan 2024 08:57:08 -0800 (PST)
Received: from m1x-phil.lan (lec62-h02-176-184-19-125.dsl.sta.abo.bbox.fr.
 [176.184.19.125]) by smtp.gmail.com with ESMTPSA id
 g8-20020a05600c310800b0040e703ad630sm3152838wmo.22.2024.01.25.08.57.01
 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256);
 Thu, 25 Jan 2024 08:57:06 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: c64e1f2d-bba2-11ee-98f5-efadbce2ee36
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=linaro.org; s=google; t=1706201828; x=1706806628; darn=lists.xenproject.org;
        h=content-transfer-encoding:mime-version:references:in-reply-to
         :message-id:date:subject:cc:to:from:from:to:cc:subject:date
         :message-id:reply-to;
        bh=frxDJ8mOODgX6KeI6KdBy7eqBvF7YFgEYnjO259YkXE=;
        b=YXoiBBKFgG+yfJ9HFigvi87e4bgVYgo1Cj5iF/QEwEEKTZPRzx38EI4ATBektWzAld
         ZXt79gJPmQvGF/KRjgGALEs2b6dNo1W3gRbGi+ZQZOJPa5onuP0H6mt5bejkmhz7sEu2
         IDSm2zqazUBetBamdOKkVtl8+iRw01ARqr7DJbFhTw1Wzk51ItiCDTeDTLrciIvcToW8
         Sgvccsvq6+AL+wyDjnJmSMemczFF07i2c7Xo3DE9ofxf3akXo7ysj3IDHqxldX5jBChC
         W2L+OU7vDp44TyXgm37GwJyAoUxk5H48SKXpoQUgir+GNT2tYNmV8p+XkUb+q4HHXwp9
         oodA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706201828; x=1706806628;
        h=content-transfer-encoding:mime-version:references:in-reply-to
         :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to;
        bh=frxDJ8mOODgX6KeI6KdBy7eqBvF7YFgEYnjO259YkXE=;
        b=ksGf5KLvXjE8otimkW0msooiFOJ9o7Os67m3S0Z2TvdvhxhB9L3aNIexKhAJZ5nPud
         GYc1jdmgYKFPeoSABAzsiIbUPwtWET95agtNm2bYq2fp/6KuuIrgiAcGcqaHkJa3ye5z
         lPmyzOlnemLe2UuTfw1fp4Cl5CIpK9QHBXGt5emSMrrs5/ucpJjHxbI2RDpJS/VAHHtY
         1OdY1eVcDWgl7WWsLazH41l6rG8f5R8FkUuGfExINhx4eO0SIkYrltfphSQJNaQa3g1B
         FY5DYL8/8wxVHwdtzR64OHhIdYYX5T6VejPoEkbL3JYOiIkp38LyXZaCdgsqZcWTpwHX
         cMCg==
X-Gm-Message-State: AOJu0YwIZ1593K5We2tNYdkyPCeDOQrp/JHpLt2bbA5VscFRVB9Gx/27
	nP0jY59X2HvIJLMMgczzz/tso2ftEYsMxlCRWCU96WinWa7K/gMuqQ2wzbFm4kE=
X-Google-Smtp-Source: AGHT+IHAf1tUHg8vPCB9uxTQ0sgUXqqsojScCWzVChUpHOsLRlLkN2s5hrgmu+P5JGNhimDORxWy6Q==
X-Received: by 2002:a05:600c:6b0e:b0:40e:5aa7:769d with SMTP id jn14-20020a05600c6b0e00b0040e5aa7769dmr14683wmb.143.1706201827085;
        Thu, 25 Jan 2024 08:57:07 -0800 (PST)
From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= <philmd@linaro.org>
To: qemu-devel@nongnu.org
Cc: Peter Maydell <peter.maydell@linaro.org>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Eduardo Habkost <eduardo@habkost.net>,
	Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>,
	Richard Henderson <richard.henderson@linaro.org>,
	qemu-s390x@nongnu.org,
	qemu-ppc@nongnu.org,
	qemu-riscv@nongnu.org,
	qemu-arm@nongnu.org,
	=?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= <philmd@linaro.org>,
	"Michael S. Tsirkin" <mst@redhat.com>,
	Marcel Apfelbaum <marcel.apfelbaum@gmail.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Anthony Perard <anthony.perard@citrix.com>,
	Paul Durrant <paul@xen.org>,
	=?UTF-8?q?C=C3=A9dric=20Le=20Goater?= <clg@kaod.org>,
	Nicholas Piggin <npiggin@gmail.com>,
	=?UTF-8?q?Fr=C3=A9d=C3=A9ric=20Barrat?= <fbarrat@linux.ibm.com>,
	Daniel Henrique Barboza <danielhb413@gmail.com>,
	David Gibson <david@gibson.dropbear.id.au>,
	Harsh Prateek Bora <harshpb@linux.ibm.com>,
	Alexander Graf <agraf@csgraf.de>,
	Michael Rolnik <mrolnik@gmail.com>,
	"Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
	Cameron Esfahani <dirty@apple.com>,
	Roman Bolshakov <rbolshakov@ddn.com>,
	Marcelo Tosatti <mtosatti@redhat.com>,
	David Woodhouse <dwmw2@infradead.org>,
	Laurent Vivier <laurent@vivier.eu>,
	Aurelien Jarno <aurelien@aurel32.net>,
	Jiaxun Yang <jiaxun.yang@flygoat.com>,
	Aleksandar Rikalo <aleksandar.rikalo@syrmia.com>,
	Huacai Chen <chenhuacai@kernel.org>,
	Chris Wulff <crwulff@gmail.com>,
	Marek Vasut <marex@denx.de>,
	Stafford Horne <shorne@gmail.com>,
	Palmer Dabbelt <palmer@dabbelt.com>,
	Alistair Francis <alistair.francis@wdc.com>,
	Bin Meng <bin.meng@windriver.com>,
	Weiwei Li <liwei1518@gmail.com>,
	Liu Zhiwei <zhiwei_liu@linux.alibaba.com>,
	Yoshinori Sato <ysato@users.sourceforge.jp>,
	Thomas Huth <thuth@redhat.com>,
	David Hildenbrand <david@redhat.com>,
	Ilya Leoshkevich <iii@linux.ibm.com>,
	Halil Pasic <pasic@linux.ibm.com>,
	Christian Borntraeger <borntraeger@linux.ibm.com>,
	Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>,
	Artyom Tarasenko <atar4qemu@gmail.com>,
	Bastian Koppelmann <kbastian@mail.uni-paderborn.de>,
	Max Filippov <jcmvbkbc@gmail.com>,
	xen-devel@lists.xenproject.org,
	kvm@vger.kernel.org
Subject: [PATCH 2/2] bulk: Prefer fast cpu_env() over slower CPU QOM cast macro
Date: Thu, 25 Jan 2024 17:56:46 +0100
Message-ID: <20240125165648.49898-3-philmd@linaro.org>
X-Mailer: git-send-email 2.41.0
In-Reply-To: <20240125165648.49898-1-philmd@linaro.org>
References: <20240125165648.49898-1-philmd@linaro.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Mechanical patch produced running the command documented
in scripts/coccinelle/cpu_env.cocci_template header.

Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
---
 target/i386/hvf/vmx.h                   |  9 +++----
 hw/i386/vmmouse.c                       |  6 ++---
 hw/i386/xen/xen-hvm.c                   |  3 +--
 hw/intc/arm_gicv3_cpuif_common.c        |  3 +--
 hw/ppc/mpc8544_guts.c                   |  3 +--
 hw/ppc/pnv.c                            |  3 +--
 hw/ppc/pnv_xscom.c                      |  3 +--
 hw/ppc/ppce500_spin.c                   |  3 +--
 hw/ppc/spapr.c                          |  3 +--
 hw/ppc/spapr_caps.c                     |  6 ++---
 target/alpha/cpu.c                      | 21 +++++----------
 target/alpha/gdbstub.c                  |  6 ++---
 target/alpha/helper.c                   | 12 +++------
 target/alpha/mem_helper.c               |  9 +++----
 target/arm/cpu.c                        | 15 ++++-------
 target/arm/debug_helper.c               |  6 ++---
 target/arm/gdbstub.c                    |  6 ++---
 target/arm/gdbstub64.c                  |  6 ++---
 target/arm/helper.c                     |  9 +++----
 target/arm/hvf/hvf.c                    | 12 +++------
 target/arm/kvm.c                        |  3 +--
 target/arm/ptw.c                        |  3 +--
 target/arm/tcg/cpu32.c                  |  3 +--
 target/avr/cpu.c                        | 21 +++++----------
 target/avr/gdbstub.c                    |  6 ++---
 target/avr/helper.c                     |  9 +++----
 target/cris/cpu.c                       |  3 +--
 target/cris/gdbstub.c                   |  9 +++----
 target/cris/helper.c                    | 12 +++------
 target/cris/translate.c                 |  3 +--
 target/hppa/cpu.c                       |  6 ++---
 target/hppa/int_helper.c                |  6 ++---
 target/hppa/mem_helper.c                |  3 +--
 target/i386/arch_memory_mapping.c       |  3 +--
 target/i386/cpu-dump.c                  |  3 +--
 target/i386/cpu.c                       | 36 +++++++++----------------
 target/i386/helper.c                    | 30 +++++++--------------
 target/i386/hvf/hvf.c                   |  6 ++---
 target/i386/hvf/x86.c                   |  3 +--
 target/i386/hvf/x86_emu.c               |  6 ++---
 target/i386/hvf/x86_task.c              | 10 +++----
 target/i386/hvf/x86hvf.c                |  6 ++---
 target/i386/kvm/kvm.c                   |  6 ++---
 target/i386/kvm/xen-emu.c               | 30 +++++++--------------
 target/i386/tcg/sysemu/bpt_helper.c     |  3 +--
 target/i386/tcg/tcg-cpu.c               | 12 +++------
 target/i386/tcg/user/excp_helper.c      |  3 +--
 target/i386/tcg/user/seg_helper.c       |  3 +--
 target/m68k/cpu.c                       | 30 +++++++--------------
 target/m68k/gdbstub.c                   |  6 ++---
 target/m68k/helper.c                    |  3 +--
 target/m68k/m68k-semi.c                 |  6 ++---
 target/m68k/op_helper.c                 |  9 +++----
 target/m68k/translate.c                 |  3 +--
 target/microblaze/helper.c              |  3 +--
 target/microblaze/translate.c           |  3 +--
 target/mips/cpu.c                       |  9 +++----
 target/mips/gdbstub.c                   |  6 ++---
 target/mips/kvm.c                       | 27 +++++++------------
 target/mips/sysemu/physaddr.c           |  3 +--
 target/mips/tcg/exception.c             |  3 +--
 target/mips/tcg/op_helper.c             |  3 +--
 target/mips/tcg/sysemu/special_helper.c |  3 +--
 target/mips/tcg/sysemu/tlb_helper.c     |  6 ++---
 target/mips/tcg/translate.c             |  3 +--
 target/nios2/cpu.c                      |  9 +++----
 target/nios2/helper.c                   |  3 +--
 target/nios2/nios2-semi.c               |  6 ++---
 target/openrisc/gdbstub.c               |  3 +--
 target/openrisc/interrupt.c             |  6 ++---
 target/openrisc/translate.c             |  3 +--
 target/ppc/cpu_init.c                   |  9 +++----
 target/ppc/excp_helper.c                |  3 +--
 target/ppc/gdbstub.c                    | 12 +++------
 target/ppc/kvm.c                        |  6 ++---
 target/ppc/ppc-qmp-cmds.c               |  3 +--
 target/ppc/user_only_helper.c           |  3 +--
 target/riscv/arch_dump.c                |  6 ++---
 target/riscv/cpu.c                      | 15 ++++-------
 target/riscv/cpu_helper.c               | 13 +++------
 target/riscv/debug.c                    |  9 +++----
 target/riscv/gdbstub.c                  |  6 ++---
 target/riscv/kvm/kvm-cpu.c              |  6 ++---
 target/riscv/tcg/tcg-cpu.c              |  9 +++----
 target/riscv/translate.c                |  3 +--
 target/rx/gdbstub.c                     |  6 ++---
 target/rx/helper.c                      |  6 ++---
 target/rx/translate.c                   |  3 +--
 target/s390x/cpu-dump.c                 |  3 +--
 target/s390x/gdbstub.c                  |  6 ++---
 target/s390x/helper.c                   |  3 +--
 target/s390x/kvm/kvm.c                  |  6 ++---
 target/s390x/tcg/excp_helper.c          |  9 +++----
 target/s390x/tcg/translate.c            |  3 +--
 target/sh4/cpu.c                        | 15 ++++-------
 target/sh4/gdbstub.c                    |  6 ++---
 target/sh4/helper.c                     |  9 +++----
 target/sh4/translate.c                  |  3 +--
 target/sparc/cpu.c                      | 12 +++------
 target/sparc/gdbstub.c                  |  3 +--
 target/sparc/int32_helper.c             |  3 +--
 target/sparc/int64_helper.c             |  3 +--
 target/sparc/ldst_helper.c              |  6 ++---
 target/sparc/mmu_helper.c               | 15 ++++-------
 target/sparc/translate.c                |  3 +--
 target/tricore/cpu.c                    | 12 +++------
 target/tricore/gdbstub.c                |  6 ++---
 target/tricore/helper.c                 |  3 +--
 target/tricore/translate.c              |  3 +--
 target/xtensa/dbg_helper.c              |  3 +--
 target/xtensa/exc_helper.c              |  3 +--
 target/xtensa/gdbstub.c                 |  6 ++---
 target/xtensa/helper.c                  |  9 +++----
 target/xtensa/translate.c               |  3 +--
 114 files changed, 273 insertions(+), 548 deletions(-)

diff --git a/target/i386/hvf/vmx.h b/target/i386/hvf/vmx.h
index 0fffcfa46c..21752e6146 100644
--- a/target/i386/hvf/vmx.h
+++ b/target/i386/hvf/vmx.h
@@ -175,8 +175,7 @@ static inline void macvm_set_cr4(hv_vcpuid_t vcpu, uint64_t cr4)
 
 static inline void macvm_set_rip(CPUState *cpu, uint64_t rip)
 {
-    X86CPU *x86_cpu = X86_CPU(cpu);
-    CPUX86State *env = &x86_cpu->env;
+    CPUX86State *env = cpu_env(cpu);
     uint64_t val;
 
     /* BUG, should take considering overlap.. */
@@ -196,8 +195,7 @@ static inline void macvm_set_rip(CPUState *cpu, uint64_t rip)
 
 static inline void vmx_clear_nmi_blocking(CPUState *cpu)
 {
-    X86CPU *x86_cpu = X86_CPU(cpu);
-    CPUX86State *env = &x86_cpu->env;
+    CPUX86State *env = cpu_env(cpu);
 
     env->hflags2 &= ~HF2_NMI_MASK;
     uint32_t gi = (uint32_t) rvmcs(cpu->accel->fd, VMCS_GUEST_INTERRUPTIBILITY);
@@ -207,8 +205,7 @@ static inline void vmx_clear_nmi_blocking(CPUState *cpu)
 
 static inline void vmx_set_nmi_blocking(CPUState *cpu)
 {
-    X86CPU *x86_cpu = X86_CPU(cpu);
-    CPUX86State *env = &x86_cpu->env;
+    CPUX86State *env = cpu_env(cpu);
 
     env->hflags2 |= HF2_NMI_MASK;
     uint32_t gi = (uint32_t)rvmcs(cpu->accel->fd, VMCS_GUEST_INTERRUPTIBILITY);
diff --git a/hw/i386/vmmouse.c b/hw/i386/vmmouse.c
index a8d014d09a..eb0613bfbe 100644
--- a/hw/i386/vmmouse.c
+++ b/hw/i386/vmmouse.c
@@ -74,8 +74,7 @@ struct VMMouseState {
 
 static void vmmouse_get_data(uint32_t *data)
 {
-    X86CPU *cpu = X86_CPU(current_cpu);
-    CPUX86State *env = &cpu->env;
+    CPUX86State *env = cpu_env(CPU(current_cpu));
 
     data[0] = env->regs[R_EAX]; data[1] = env->regs[R_EBX];
     data[2] = env->regs[R_ECX]; data[3] = env->regs[R_EDX];
@@ -84,8 +83,7 @@ static void vmmouse_get_data(uint32_t *data)
 
 static void vmmouse_set_data(const uint32_t *data)
 {
-    X86CPU *cpu = X86_CPU(current_cpu);
-    CPUX86State *env = &cpu->env;
+    CPUX86State *env = cpu_env(CPU(current_cpu));
 
     env->regs[R_EAX] = data[0]; env->regs[R_EBX] = data[1];
     env->regs[R_ECX] = data[2]; env->regs[R_EDX] = data[3];
diff --git a/hw/i386/xen/xen-hvm.c b/hw/i386/xen/xen-hvm.c
index f42621e674..3d3ae49be5 100644
--- a/hw/i386/xen/xen-hvm.c
+++ b/hw/i386/xen/xen-hvm.c
@@ -487,8 +487,7 @@ static void regs_to_cpu(vmware_regs_t *vmport_regs, ioreq_t *req)
 
 static void regs_from_cpu(vmware_regs_t *vmport_regs)
 {
-    X86CPU *cpu = X86_CPU(current_cpu);
-    CPUX86State *env = &cpu->env;
+    CPUX86State *env = cpu_env(CPU(current_cpu));
 
     vmport_regs->ebx = env->regs[R_EBX];
     vmport_regs->ecx = env->regs[R_ECX];
diff --git a/hw/intc/arm_gicv3_cpuif_common.c b/hw/intc/arm_gicv3_cpuif_common.c
index ff1239f65d..8572675a75 100644
--- a/hw/intc/arm_gicv3_cpuif_common.c
+++ b/hw/intc/arm_gicv3_cpuif_common.c
@@ -15,8 +15,7 @@
 
 void gicv3_set_gicv3state(CPUState *cpu, GICv3CPUState *s)
 {
-    ARMCPU *arm_cpu = ARM_CPU(cpu);
-    CPUARMState *env = &arm_cpu->env;
+    CPUARMState *env = cpu_env(cpu);
 
     env->gicv3state = (void *)s;
 };
diff --git a/hw/ppc/mpc8544_guts.c b/hw/ppc/mpc8544_guts.c
index a26e83d048..3c6a852ad4 100644
--- a/hw/ppc/mpc8544_guts.c
+++ b/hw/ppc/mpc8544_guts.c
@@ -71,8 +71,7 @@ static uint64_t mpc8544_guts_read(void *opaque, hwaddr addr,
                                   unsigned size)
 {
     uint32_t value = 0;
-    PowerPCCPU *cpu = POWERPC_CPU(current_cpu);
-    CPUPPCState *env = &cpu->env;
+    CPUPPCState *env = cpu_env(CPU(current_cpu));
 
     addr &= MPC8544_GUTS_MMIO_SIZE - 1;
     switch (addr) {
diff --git a/hw/ppc/pnv.c b/hw/ppc/pnv.c
index 0297871bdd..a202b377e1 100644
--- a/hw/ppc/pnv.c
+++ b/hw/ppc/pnv.c
@@ -2294,8 +2294,7 @@ static void pnv_machine_set_hb(Object *obj, bool value, Error **errp)
 
 static void pnv_cpu_do_nmi_on_cpu(CPUState *cs, run_on_cpu_data arg)
 {
-    PowerPCCPU *cpu = POWERPC_CPU(cs);
-    CPUPPCState *env = &cpu->env;
+    CPUPPCState *env = cpu_env(cs);
 
     cpu_synchronize_state(cs);
     ppc_cpu_do_system_reset(cs);
diff --git a/hw/ppc/pnv_xscom.c b/hw/ppc/pnv_xscom.c
index 805b1d0c87..ae3e87548d 100644
--- a/hw/ppc/pnv_xscom.c
+++ b/hw/ppc/pnv_xscom.c
@@ -44,8 +44,7 @@ static void xscom_complete(CPUState *cs, uint64_t hmer_bits)
      * passed for the cpu, and no CPU completion is generated.
      */
     if (cs) {
-        PowerPCCPU *cpu = POWERPC_CPU(cs);
-        CPUPPCState *env = &cpu->env;
+        CPUPPCState *env = cpu_env(cs);
 
         /*
          * TODO: Need a CPU helper to set HMER, also handle generation
diff --git a/hw/ppc/ppce500_spin.c b/hw/ppc/ppce500_spin.c
index bbce63e8a4..dfbe759481 100644
--- a/hw/ppc/ppce500_spin.c
+++ b/hw/ppc/ppce500_spin.c
@@ -90,8 +90,7 @@ static void mmubooke_create_initial_mapping(CPUPPCState *env,
 
 static void spin_kick(CPUState *cs, run_on_cpu_data data)
 {
-    PowerPCCPU *cpu = POWERPC_CPU(cs);
-    CPUPPCState *env = &cpu->env;
+    CPUPPCState *env = cpu_env(cs);
     SpinInfo *curspin = data.host_ptr;
     hwaddr map_size = 64 * MiB;
     hwaddr map_start;
diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c
index e8dabc8614..d7edfc2a1a 100644
--- a/hw/ppc/spapr.c
+++ b/hw/ppc/spapr.c
@@ -3487,8 +3487,7 @@ static void spapr_machine_finalizefn(Object *obj)
 void spapr_do_system_reset_on_cpu(CPUState *cs, run_on_cpu_data arg)
 {
     SpaprMachineState *spapr = SPAPR_MACHINE(qdev_get_machine());
-    PowerPCCPU *cpu = POWERPC_CPU(cs);
-    CPUPPCState *env = &cpu->env;
+    CPUPPCState *env = cpu_env(cs);
 
     cpu_synchronize_state(cs);
     /* If FWNMI is inactive, addr will be -1, which will deliver to 0x100 */
diff --git a/hw/ppc/spapr_caps.c b/hw/ppc/spapr_caps.c
index e889244e52..1dad45be10 100644
--- a/hw/ppc/spapr_caps.c
+++ b/hw/ppc/spapr_caps.c
@@ -194,8 +194,7 @@ static void cap_htm_apply(SpaprMachineState *spapr, uint8_t val, Error **errp)
 static void cap_vsx_apply(SpaprMachineState *spapr, uint8_t val, Error **errp)
 {
     ERRP_GUARD();
-    PowerPCCPU *cpu = POWERPC_CPU(first_cpu);
-    CPUPPCState *env = &cpu->env;
+    CPUPPCState *env = cpu_env(CPU(first_cpu));
 
     if (!val) {
         /* TODO: We don't support disabling vsx yet */
@@ -213,8 +212,7 @@ static void cap_vsx_apply(SpaprMachineState *spapr, uint8_t val, Error **errp)
 static void cap_dfp_apply(SpaprMachineState *spapr, uint8_t val, Error **errp)
 {
     ERRP_GUARD();
-    PowerPCCPU *cpu = POWERPC_CPU(first_cpu);
-    CPUPPCState *env = &cpu->env;
+    CPUPPCState *env = cpu_env(CPU(first_cpu));
 
     if (!val) {
         /* TODO: We don't support disabling dfp yet */
diff --git a/target/alpha/cpu.c b/target/alpha/cpu.c
index b8ed29e343..65a408754e 100644
--- a/target/alpha/cpu.c
+++ b/target/alpha/cpu.c
@@ -130,40 +130,35 @@ static ObjectClass *alpha_cpu_class_by_name(const char *cpu_model)
 
 static void ev4_cpu_initfn(Object *obj)
 {
-    AlphaCPU *cpu = ALPHA_CPU(obj);
-    CPUAlphaState *env = &cpu->env;
+    CPUAlphaState *env = cpu_env(CPU(obj));
 
     env->implver = IMPLVER_2106x;
 }
 
 static void ev5_cpu_initfn(Object *obj)
 {
-    AlphaCPU *cpu = ALPHA_CPU(obj);
-    CPUAlphaState *env = &cpu->env;
+    CPUAlphaState *env = cpu_env(CPU(obj));
 
     env->implver = IMPLVER_21164;
 }
 
 static void ev56_cpu_initfn(Object *obj)
 {
-    AlphaCPU *cpu = ALPHA_CPU(obj);
-    CPUAlphaState *env = &cpu->env;
+    CPUAlphaState *env = cpu_env(CPU(obj));
 
     env->amask |= AMASK_BWX;
 }
 
 static void pca56_cpu_initfn(Object *obj)
 {
-    AlphaCPU *cpu = ALPHA_CPU(obj);
-    CPUAlphaState *env = &cpu->env;
+    CPUAlphaState *env = cpu_env(CPU(obj));
 
     env->amask |= AMASK_MVI;
 }
 
 static void ev6_cpu_initfn(Object *obj)
 {
-    AlphaCPU *cpu = ALPHA_CPU(obj);
-    CPUAlphaState *env = &cpu->env;
+    CPUAlphaState *env = cpu_env(CPU(obj));
 
     env->implver = IMPLVER_21264;
     env->amask = AMASK_BWX | AMASK_FIX | AMASK_MVI | AMASK_TRAP;
@@ -171,16 +166,14 @@ static void ev6_cpu_initfn(Object *obj)
 
 static void ev67_cpu_initfn(Object *obj)
 {
-    AlphaCPU *cpu = ALPHA_CPU(obj);
-    CPUAlphaState *env = &cpu->env;
+    CPUAlphaState *env = cpu_env(CPU(obj));
 
     env->amask |= AMASK_CIX | AMASK_PREFETCH;
 }
 
 static void alpha_cpu_initfn(Object *obj)
 {
-    AlphaCPU *cpu = ALPHA_CPU(obj);
-    CPUAlphaState *env = &cpu->env;
+    CPUAlphaState *env = cpu_env(CPU(obj));
 
     env->lock_addr = -1;
 #if defined(CONFIG_USER_ONLY)
diff --git a/target/alpha/gdbstub.c b/target/alpha/gdbstub.c
index 0f8fa150f8..13694fd321 100644
--- a/target/alpha/gdbstub.c
+++ b/target/alpha/gdbstub.c
@@ -23,8 +23,7 @@
 
 int alpha_cpu_gdb_read_register(CPUState *cs, GByteArray *mem_buf, int n)
 {
-    AlphaCPU *cpu = ALPHA_CPU(cs);
-    CPUAlphaState *env = &cpu->env;
+    CPUAlphaState *env = cpu_env(cs);
     uint64_t val;
     CPU_DoubleU d;
 
@@ -59,8 +58,7 @@ int alpha_cpu_gdb_read_register(CPUState *cs, GByteArray *mem_buf, int n)
 
 int alpha_cpu_gdb_write_register(CPUState *cs, uint8_t *mem_buf, int n)
 {
-    AlphaCPU *cpu = ALPHA_CPU(cs);
-    CPUAlphaState *env = &cpu->env;
+    CPUAlphaState *env = cpu_env(cs);
     target_ulong tmp = ldtul_p(mem_buf);
     CPU_DoubleU d;
 
diff --git a/target/alpha/helper.c b/target/alpha/helper.c
index 970c869771..eeed874e5a 100644
--- a/target/alpha/helper.c
+++ b/target/alpha/helper.c
@@ -298,8 +298,7 @@ bool alpha_cpu_tlb_fill(CPUState *cs, vaddr addr, int size,
                         MMUAccessType access_type, int mmu_idx,
                         bool probe, uintptr_t retaddr)
 {
-    AlphaCPU *cpu = ALPHA_CPU(cs);
-    CPUAlphaState *env = &cpu->env;
+    CPUAlphaState *env = cpu_env(cs);
     target_ulong phys;
     int prot, fail;
 
@@ -325,8 +324,7 @@ bool alpha_cpu_tlb_fill(CPUState *cs, vaddr addr, int size,
 
 void alpha_cpu_do_interrupt(CPUState *cs)
 {
-    AlphaCPU *cpu = ALPHA_CPU(cs);
-    CPUAlphaState *env = &cpu->env;
+    CPUAlphaState *env = cpu_env(cs);
     int i = cs->exception_index;
 
     if (qemu_loglevel_mask(CPU_LOG_INT)) {
@@ -435,8 +433,7 @@ void alpha_cpu_do_interrupt(CPUState *cs)
 
 bool alpha_cpu_exec_interrupt(CPUState *cs, int interrupt_request)
 {
-    AlphaCPU *cpu = ALPHA_CPU(cs);
-    CPUAlphaState *env = &cpu->env;
+    CPUAlphaState *env = cpu_env(cs);
     int idx = -1;
 
     /* We never take interrupts while in PALmode.  */
@@ -487,8 +484,7 @@ void alpha_cpu_dump_state(CPUState *cs, FILE *f, int flags)
         "a0",  "a1",  "a2", "a3",  "a4", "a5", "t8", "t9",
         "t10", "t11", "ra", "t12", "at", "gp", "sp"
     };
-    AlphaCPU *cpu = ALPHA_CPU(cs);
-    CPUAlphaState *env = &cpu->env;
+    CPUAlphaState *env = cpu_env(cs);
     int i;
 
     qemu_fprintf(f, "PC      " TARGET_FMT_lx " PS      %02x\n",
diff --git a/target/alpha/mem_helper.c b/target/alpha/mem_helper.c
index a39b52c5dd..a8a36fa3a8 100644
--- a/target/alpha/mem_helper.c
+++ b/target/alpha/mem_helper.c
@@ -42,8 +42,7 @@ static void do_unaligned_access(CPUAlphaState *env, vaddr addr, uintptr_t retadd
 void alpha_cpu_record_sigbus(CPUState *cs, vaddr addr,
                              MMUAccessType access_type, uintptr_t retaddr)
 {
-    AlphaCPU *cpu = ALPHA_CPU(cs);
-    CPUAlphaState *env = &cpu->env;
+    CPUAlphaState *env = cpu_env(cs);
 
     do_unaligned_access(env, addr, retaddr);
 }
@@ -52,8 +51,7 @@ void alpha_cpu_do_unaligned_access(CPUState *cs, vaddr addr,
                                    MMUAccessType access_type,
                                    int mmu_idx, uintptr_t retaddr)
 {
-    AlphaCPU *cpu = ALPHA_CPU(cs);
-    CPUAlphaState *env = &cpu->env;
+    CPUAlphaState *env = cpu_env(cs);
 
     do_unaligned_access(env, addr, retaddr);
     cs->exception_index = EXCP_UNALIGN;
@@ -67,8 +65,7 @@ void alpha_cpu_do_transaction_failed(CPUState *cs, hwaddr physaddr,
                                      int mmu_idx, MemTxAttrs attrs,
                                      MemTxResult response, uintptr_t retaddr)
 {
-    AlphaCPU *cpu = ALPHA_CPU(cs);
-    CPUAlphaState *env = &cpu->env;
+    CPUAlphaState *env = cpu_env(cs);
 
     env->trap_arg0 = addr;
     env->trap_arg1 = access_type == MMU_DATA_STORE ? 1 : 0;
diff --git a/target/arm/cpu.c b/target/arm/cpu.c
index 593695b424..4900271a86 100644
--- a/target/arm/cpu.c
+++ b/target/arm/cpu.c
@@ -51,8 +51,7 @@
 
 static void arm_cpu_set_pc(CPUState *cs, vaddr value)
 {
-    ARMCPU *cpu = ARM_CPU(cs);
-    CPUARMState *env = &cpu->env;
+    CPUARMState *env = cpu_env(cs);
 
     if (is_a64(env)) {
         env->pc = value;
@@ -65,8 +64,7 @@ static void arm_cpu_set_pc(CPUState *cs, vaddr value)
 
 static vaddr arm_cpu_get_pc(CPUState *cs)
 {
-    ARMCPU *cpu = ARM_CPU(cs);
-    CPUARMState *env = &cpu->env;
+    CPUARMState *env = cpu_env(cs);
 
     if (is_a64(env)) {
         return env->pc;
@@ -994,8 +992,7 @@ static void arm_cpu_kvm_set_irq(void *opaque, int irq, int level)
 
 static bool arm_cpu_virtio_is_big_endian(CPUState *cs)
 {
-    ARMCPU *cpu = ARM_CPU(cs);
-    CPUARMState *env = &cpu->env;
+    CPUARMState *env = cpu_env(cs);
 
     cpu_synchronize_state(cs);
     return arm_cpu_data_is_big_endian(env);
@@ -1005,8 +1002,7 @@ static bool arm_cpu_virtio_is_big_endian(CPUState *cs)
 
 static void arm_disas_set_info(CPUState *cpu, disassemble_info *info)
 {
-    ARMCPU *ac = ARM_CPU(cpu);
-    CPUARMState *env = &ac->env;
+    CPUARMState *env = cpu_env(cpu);
     bool sctlr_b;
 
     if (is_a64(env)) {
@@ -2428,8 +2424,7 @@ static Property arm_cpu_properties[] = {
 
 static const gchar *arm_gdb_arch_name(CPUState *cs)
 {
-    ARMCPU *cpu = ARM_CPU(cs);
-    CPUARMState *env = &cpu->env;
+    CPUARMState *env = cpu_env(cs);
 
     if (arm_feature(env, ARM_FEATURE_IWMMXT)) {
         return "iwmmxt";
diff --git a/target/arm/debug_helper.c b/target/arm/debug_helper.c
index 7d856acddf..cd5dbe2ffc 100644
--- a/target/arm/debug_helper.c
+++ b/target/arm/debug_helper.c
@@ -468,8 +468,7 @@ void arm_debug_excp_handler(CPUState *cs)
      * Called by core code when a watchpoint or breakpoint fires;
      * need to check which one and raise the appropriate exception.
      */
-    ARMCPU *cpu = ARM_CPU(cs);
-    CPUARMState *env = &cpu->env;
+    CPUARMState *env = cpu_env(cs);
     CPUWatchpoint *wp_hit = cs->watchpoint_hit;
 
     if (wp_hit) {
@@ -757,8 +756,7 @@ void hw_breakpoint_update_all(ARMCPU *cpu)
 
 vaddr arm_adjust_watchpoint_address(CPUState *cs, vaddr addr, int len)
 {
-    ARMCPU *cpu = ARM_CPU(cs);
-    CPUARMState *env = &cpu->env;
+    CPUARMState *env = cpu_env(cs);
 
     /*
      * In BE32 system mode, target memory is stored byteswapped (on a
diff --git a/target/arm/gdbstub.c b/target/arm/gdbstub.c
index 28f546a5ff..dc6c29669c 100644
--- a/target/arm/gdbstub.c
+++ b/target/arm/gdbstub.c
@@ -40,8 +40,7 @@ typedef struct RegisterSysregXmlParam {
 
 int arm_cpu_gdb_read_register(CPUState *cs, GByteArray *mem_buf, int n)
 {
-    ARMCPU *cpu = ARM_CPU(cs);
-    CPUARMState *env = &cpu->env;
+    CPUARMState *env = cpu_env(cs);
 
     if (n < 16) {
         /* Core integer register.  */
@@ -61,8 +60,7 @@ int arm_cpu_gdb_read_register(CPUState *cs, GByteArray *mem_buf, int n)
 
 int arm_cpu_gdb_write_register(CPUState *cs, uint8_t *mem_buf, int n)
 {
-    ARMCPU *cpu = ARM_CPU(cs);
-    CPUARMState *env = &cpu->env;
+    CPUARMState *env = cpu_env(cs);
     uint32_t tmp;
 
     tmp = ldl_p(mem_buf);
diff --git a/target/arm/gdbstub64.c b/target/arm/gdbstub64.c
index d7b79a6589..b9f29b0a60 100644
--- a/target/arm/gdbstub64.c
+++ b/target/arm/gdbstub64.c
@@ -24,8 +24,7 @@
 
 int aarch64_cpu_gdb_read_register(CPUState *cs, GByteArray *mem_buf, int n)
 {
-    ARMCPU *cpu = ARM_CPU(cs);
-    CPUARMState *env = &cpu->env;
+    CPUARMState *env = cpu_env(cs);
 
     if (n < 31) {
         /* Core integer register.  */
@@ -45,8 +44,7 @@ int aarch64_cpu_gdb_read_register(CPUState *cs, GByteArray *mem_buf, int n)
 
 int aarch64_cpu_gdb_write_register(CPUState *cs, uint8_t *mem_buf, int n)
 {
-    ARMCPU *cpu = ARM_CPU(cs);
-    CPUARMState *env = &cpu->env;
+    CPUARMState *env = cpu_env(cs);
     uint64_t tmp;
 
     tmp = ldq_p(mem_buf);
diff --git a/target/arm/helper.c b/target/arm/helper.c
index e068d35383..a504ed0612 100644
--- a/target/arm/helper.c
+++ b/target/arm/helper.c
@@ -10900,8 +10900,7 @@ static void arm_cpu_do_interrupt_aarch32_hyp(CPUState *cs)
      * PSTATE A/I/F masks are set based only on the SCR.EA/IRQ/FIQ values.
      */
     uint32_t addr, mask;
-    ARMCPU *cpu = ARM_CPU(cs);
-    CPUARMState *env = &cpu->env;
+    CPUARMState *env = cpu_env(cs);
 
     switch (cs->exception_index) {
     case EXCP_UDEF:
@@ -10979,8 +10978,7 @@ static void arm_cpu_do_interrupt_aarch32_hyp(CPUState *cs)
 
 static void arm_cpu_do_interrupt_aarch32(CPUState *cs)
 {
-    ARMCPU *cpu = ARM_CPU(cs);
-    CPUARMState *env = &cpu->env;
+    CPUARMState *env = cpu_env(cs);
     uint32_t addr;
     uint32_t mask;
     int new_mode;
@@ -11479,8 +11477,7 @@ static void arm_cpu_do_interrupt_aarch64(CPUState *cs)
 #ifdef CONFIG_TCG
 static void tcg_handle_semihosting(CPUState *cs)
 {
-    ARMCPU *cpu = ARM_CPU(cs);
-    CPUARMState *env = &cpu->env;
+    CPUARMState *env = cpu_env(cs);
 
     if (is_a64(env)) {
         qemu_log_mask(CPU_LOG_INT,
diff --git a/target/arm/hvf/hvf.c b/target/arm/hvf/hvf.c
index a537a5bc94..69211d0a60 100644
--- a/target/arm/hvf/hvf.c
+++ b/target/arm/hvf/hvf.c
@@ -1004,8 +1004,7 @@ void hvf_kick_vcpu_thread(CPUState *cpu)
 static void hvf_raise_exception(CPUState *cpu, uint32_t excp,
                                 uint32_t syndrome)
 {
-    ARMCPU *arm_cpu = ARM_CPU(cpu);
-    CPUARMState *env = &arm_cpu->env;
+    CPUARMState *env = cpu_env(cpu);
 
     cpu->exception_index = excp;
     env->exception.target_el = 1;
@@ -1483,8 +1482,7 @@ static bool hvf_sysreg_write_cp(CPUState *cpu, uint32_t reg, uint64_t val)
 
 static int hvf_sysreg_write(CPUState *cpu, uint32_t reg, uint64_t val)
 {
-    ARMCPU *arm_cpu = ARM_CPU(cpu);
-    CPUARMState *env = &arm_cpu->env;
+    CPUARMState *env = cpu_env(cpu);
 
     trace_hvf_sysreg_write(reg,
                            SYSREG_OP0(reg),
@@ -2150,8 +2148,7 @@ static void hvf_put_gdbstub_debug_registers(CPUState *cpu)
  */
 static void hvf_put_guest_debug_registers(CPUState *cpu)
 {
-    ARMCPU *arm_cpu = ARM_CPU(cpu);
-    CPUARMState *env = &arm_cpu->env;
+    CPUARMState *env = cpu_env(cpu);
     hv_return_t r = HV_SUCCESS;
     int i;
 
@@ -2205,8 +2202,7 @@ static void hvf_arch_set_traps(void)
 
 void hvf_arch_update_guest_debug(CPUState *cpu)
 {
-    ARMCPU *arm_cpu = ARM_CPU(cpu);
-    CPUARMState *env = &arm_cpu->env;
+    CPUARMState *env = cpu_env(cpu);
 
     /* Check whether guest debugging is enabled */
     cpu->accel->guest_debug_enabled = cpu->singlestep_enabled ||
diff --git a/target/arm/kvm.c b/target/arm/kvm.c
index 8f52b211f9..9e97c847b3 100644
--- a/target/arm/kvm.c
+++ b/target/arm/kvm.c
@@ -1957,8 +1957,7 @@ int kvm_arch_destroy_vcpu(CPUState *cs)
 /* Callers must hold the iothread mutex lock */
 static void kvm_inject_arm_sea(CPUState *c)
 {
-    ARMCPU *cpu = ARM_CPU(c);
-    CPUARMState *env = &cpu->env;
+    CPUARMState *env = cpu_env(c);
     uint32_t esr;
     bool same_el;
 
diff --git a/target/arm/ptw.c b/target/arm/ptw.c
index 5eb3577bcd..57a761ad68 100644
--- a/target/arm/ptw.c
+++ b/target/arm/ptw.c
@@ -3528,8 +3528,7 @@ bool get_phys_addr(CPUARMState *env, target_ulong address,
 hwaddr arm_cpu_get_phys_page_attrs_debug(CPUState *cs, vaddr addr,
                                          MemTxAttrs *attrs)
 {
-    ARMCPU *cpu = ARM_CPU(cs);
-    CPUARMState *env = &cpu->env;
+    CPUARMState *env = cpu_env(cs);
     ARMMMUIdx mmu_idx = arm_mmu_idx(env);
     ARMSecuritySpace ss = arm_security_space(env);
     S1Translate ptw = {
diff --git a/target/arm/tcg/cpu32.c b/target/arm/tcg/cpu32.c
index d9e0e2a4dd..c11c5c85c4 100644
--- a/target/arm/tcg/cpu32.c
+++ b/target/arm/tcg/cpu32.c
@@ -102,8 +102,7 @@ void aa32_max_features(ARMCPU *cpu)
 static bool arm_v7m_cpu_exec_interrupt(CPUState *cs, int interrupt_request)
 {
     CPUClass *cc = CPU_GET_CLASS(cs);
-    ARMCPU *cpu = ARM_CPU(cs);
-    CPUARMState *env = &cpu->env;
+    CPUARMState *env = cpu_env(cs);
     bool ret = false;
 
     /*
diff --git a/target/avr/cpu.c b/target/avr/cpu.c
index f5cbdc4a8c..3dec251767 100644
--- a/target/avr/cpu.c
+++ b/target/avr/cpu.c
@@ -43,8 +43,7 @@ static vaddr avr_cpu_get_pc(CPUState *cs)
 
 static bool avr_cpu_has_work(CPUState *cs)
 {
-    AVRCPU *cpu = AVR_CPU(cs);
-    CPUAVRState *env = &cpu->env;
+    CPUAVRState *env = cpu_env(cs);
 
     return (cs->interrupt_request & (CPU_INTERRUPT_HARD | CPU_INTERRUPT_RESET))
             && cpu_interrupts_enabled(env);
@@ -53,8 +52,7 @@ static bool avr_cpu_has_work(CPUState *cs)
 static void avr_cpu_synchronize_from_tb(CPUState *cs,
                                         const TranslationBlock *tb)
 {
-    AVRCPU *cpu = AVR_CPU(cs);
-    CPUAVRState *env = &cpu->env;
+    CPUAVRState *env = cpu_env(cs);
 
     tcg_debug_assert(!(cs->tcg_cflags & CF_PCREL));
     env->pc_w = tb->pc / 2; /* internally PC points to words */
@@ -64,8 +62,7 @@ static void avr_restore_state_to_opc(CPUState *cs,
                                      const TranslationBlock *tb,
                                      const uint64_t *data)
 {
-    AVRCPU *cpu = AVR_CPU(cs);
-    CPUAVRState *env = &cpu->env;
+    CPUAVRState *env = cpu_env(cs);
 
     env->pc_w = data[0];
 }
@@ -165,8 +162,7 @@ static ObjectClass *avr_cpu_class_by_name(const char *cpu_model)
 
 static void avr_cpu_dump_state(CPUState *cs, FILE *f, int flags)
 {
-    AVRCPU *cpu = AVR_CPU(cs);
-    CPUAVRState *env = &cpu->env;
+    CPUAVRState *env = cpu_env(cs);
     int i;
 
     qemu_fprintf(f, "\n");
@@ -276,8 +272,7 @@ static void avr_cpu_class_init(ObjectClass *oc, void *data)
  */
 static void avr_avr5_initfn(Object *obj)
 {
-    AVRCPU *cpu = AVR_CPU(obj);
-    CPUAVRState *env = &cpu->env;
+    CPUAVRState *env = cpu_env(CPU(obj));
 
     set_avr_feature(env, AVR_FEATURE_LPM);
     set_avr_feature(env, AVR_FEATURE_IJMP_ICALL);
@@ -305,8 +300,7 @@ static void avr_avr5_initfn(Object *obj)
  */
 static void avr_avr51_initfn(Object *obj)
 {
-    AVRCPU *cpu = AVR_CPU(obj);
-    CPUAVRState *env = &cpu->env;
+    CPUAVRState *env = cpu_env(CPU(obj));
 
     set_avr_feature(env, AVR_FEATURE_LPM);
     set_avr_feature(env, AVR_FEATURE_IJMP_ICALL);
@@ -335,8 +329,7 @@ static void avr_avr51_initfn(Object *obj)
  */
 static void avr_avr6_initfn(Object *obj)
 {
-    AVRCPU *cpu = AVR_CPU(obj);
-    CPUAVRState *env = &cpu->env;
+    CPUAVRState *env = cpu_env(CPU(obj));
 
     set_avr_feature(env, AVR_FEATURE_LPM);
     set_avr_feature(env, AVR_FEATURE_IJMP_ICALL);
diff --git a/target/avr/gdbstub.c b/target/avr/gdbstub.c
index 150344d8b9..2eeee2bf4e 100644
--- a/target/avr/gdbstub.c
+++ b/target/avr/gdbstub.c
@@ -23,8 +23,7 @@
 
 int avr_cpu_gdb_read_register(CPUState *cs, GByteArray *mem_buf, int n)
 {
-    AVRCPU *cpu = AVR_CPU(cs);
-    CPUAVRState *env = &cpu->env;
+    CPUAVRState *env = cpu_env(cs);
 
     /*  R */
     if (n < 32) {
@@ -53,8 +52,7 @@ int avr_cpu_gdb_read_register(CPUState *cs, GByteArray *mem_buf, int n)
 
 int avr_cpu_gdb_write_register(CPUState *cs, uint8_t *mem_buf, int n)
 {
-    AVRCPU *cpu = AVR_CPU(cs);
-    CPUAVRState *env = &cpu->env;
+    CPUAVRState *env = cpu_env(cs);
 
     /*  R */
     if (n < 32) {
diff --git a/target/avr/helper.c b/target/avr/helper.c
index fdc9884ea0..eeabefa1c0 100644
--- a/target/avr/helper.c
+++ b/target/avr/helper.c
@@ -30,8 +30,7 @@
 
 bool avr_cpu_exec_interrupt(CPUState *cs, int interrupt_request)
 {
-    AVRCPU *cpu = AVR_CPU(cs);
-    CPUAVRState *env = &cpu->env;
+    CPUAVRState *env = cpu_env(cs);
 
     /*
      * We cannot separate a skip from the next instruction,
@@ -69,8 +68,7 @@ bool avr_cpu_exec_interrupt(CPUState *cs, int interrupt_request)
 
 void avr_cpu_do_interrupt(CPUState *cs)
 {
-    AVRCPU *cpu = AVR_CPU(cs);
-    CPUAVRState *env = &cpu->env;
+    CPUAVRState *env = cpu_env(cs);
 
     uint32_t ret = env->pc_w;
     int vector = 0;
@@ -144,8 +142,7 @@ bool avr_cpu_tlb_fill(CPUState *cs, vaddr address, int size,
             if (probe) {
                 page_size = 1;
             } else {
-                AVRCPU *cpu = AVR_CPU(cs);
-                CPUAVRState *env = &cpu->env;
+                CPUAVRState *env = cpu_env(cs);
                 env->fullacc = 1;
                 cpu_loop_exit_restore(cs, retaddr);
             }
diff --git a/target/cris/cpu.c b/target/cris/cpu.c
index 9ba08e8b0c..c3cdcf107f 100644
--- a/target/cris/cpu.c
+++ b/target/cris/cpu.c
@@ -142,8 +142,7 @@ static void cris_cpu_set_irq(void *opaque, int irq, int level)
 
 static void cris_disas_set_info(CPUState *cpu, disassemble_info *info)
 {
-    CRISCPU *cc = CRIS_CPU(cpu);
-    CPUCRISState *env = &cc->env;
+    CPUCRISState *env = cpu_env(cpu);
 
     if (env->pregs[PR_VR] != 32) {
         info->mach = bfd_mach_cris_v0_v10;
diff --git a/target/cris/gdbstub.c b/target/cris/gdbstub.c
index 25c0ca33a5..9e87069da8 100644
--- a/target/cris/gdbstub.c
+++ b/target/cris/gdbstub.c
@@ -23,8 +23,7 @@
 
 int crisv10_cpu_gdb_read_register(CPUState *cs, GByteArray *mem_buf, int n)
 {
-    CRISCPU *cpu = CRIS_CPU(cs);
-    CPUCRISState *env = &cpu->env;
+    CPUCRISState *env = cpu_env(cs);
 
     if (n < 15) {
         return gdb_get_reg32(mem_buf, env->regs[n]);
@@ -55,8 +54,7 @@ int crisv10_cpu_gdb_read_register(CPUState *cs, GByteArray *mem_buf, int n)
 
 int cris_cpu_gdb_read_register(CPUState *cs, GByteArray *mem_buf, int n)
 {
-    CRISCPU *cpu = CRIS_CPU(cs);
-    CPUCRISState *env = &cpu->env;
+    CPUCRISState *env = cpu_env(cs);
     uint8_t srs;
 
     srs = env->pregs[PR_SRS];
@@ -90,8 +88,7 @@ int cris_cpu_gdb_read_register(CPUState *cs, GByteArray *mem_buf, int n)
 
 int cris_cpu_gdb_write_register(CPUState *cs, uint8_t *mem_buf, int n)
 {
-    CRISCPU *cpu = CRIS_CPU(cs);
-    CPUCRISState *env = &cpu->env;
+    CPUCRISState *env = cpu_env(cs);
     uint32_t tmp;
 
     if (n > 49) {
diff --git a/target/cris/helper.c b/target/cris/helper.c
index c0bf987e3e..1c3f86876f 100644
--- a/target/cris/helper.c
+++ b/target/cris/helper.c
@@ -53,8 +53,7 @@ bool cris_cpu_tlb_fill(CPUState *cs, vaddr address, int size,
                        MMUAccessType access_type, int mmu_idx,
                        bool probe, uintptr_t retaddr)
 {
-    CRISCPU *cpu = CRIS_CPU(cs);
-    CPUCRISState *env = &cpu->env;
+    CPUCRISState *env = cpu_env(cs);
     struct cris_mmu_result res;
     int prot, miss;
     target_ulong phy;
@@ -97,8 +96,7 @@ bool cris_cpu_tlb_fill(CPUState *cs, vaddr address, int size,
 
 void crisv10_cpu_do_interrupt(CPUState *cs)
 {
-    CRISCPU *cpu = CRIS_CPU(cs);
-    CPUCRISState *env = &cpu->env;
+    CPUCRISState *env = cpu_env(cs);
     int ex_vec = -1;
 
     D_LOG("exception index=%d interrupt_req=%d\n",
@@ -159,8 +157,7 @@ void crisv10_cpu_do_interrupt(CPUState *cs)
 
 void cris_cpu_do_interrupt(CPUState *cs)
 {
-    CRISCPU *cpu = CRIS_CPU(cs);
-    CPUCRISState *env = &cpu->env;
+    CPUCRISState *env = cpu_env(cs);
     int ex_vec = -1;
 
     D_LOG("exception index=%d interrupt_req=%d\n",
@@ -262,8 +259,7 @@ hwaddr cris_cpu_get_phys_page_debug(CPUState *cs, vaddr addr)
 bool cris_cpu_exec_interrupt(CPUState *cs, int interrupt_request)
 {
     CPUClass *cc = CPU_GET_CLASS(cs);
-    CRISCPU *cpu = CRIS_CPU(cs);
-    CPUCRISState *env = &cpu->env;
+    CPUCRISState *env = cpu_env(cs);
     bool ret = false;
 
     if (interrupt_request & CPU_INTERRUPT_HARD
diff --git a/target/cris/translate.c b/target/cris/translate.c
index b3974ba0bb..a935167f00 100644
--- a/target/cris/translate.c
+++ b/target/cris/translate.c
@@ -3180,8 +3180,7 @@ void gen_intermediate_code(CPUState *cs, TranslationBlock *tb, int *max_insns,
 
 void cris_cpu_dump_state(CPUState *cs, FILE *f, int flags)
 {
-    CRISCPU *cpu = CRIS_CPU(cs);
-    CPUCRISState *env = &cpu->env;
+    CPUCRISState *env = cpu_env(cs);
     const char * const *regnames;
     const char * const *pregnames;
     int i;
diff --git a/target/hppa/cpu.c b/target/hppa/cpu.c
index 14e17fa9aa..07ea8ab9d8 100644
--- a/target/hppa/cpu.c
+++ b/target/hppa/cpu.c
@@ -106,8 +106,7 @@ void hppa_cpu_do_unaligned_access(CPUState *cs, vaddr addr,
                                   MMUAccessType access_type, int mmu_idx,
                                   uintptr_t retaddr)
 {
-    HPPACPU *cpu = HPPA_CPU(cs);
-    CPUHPPAState *env = &cpu->env;
+    CPUHPPAState *env = cpu_env(cs);
 
     cs->exception_index = EXCP_UNALIGN;
     hppa_set_ior_and_isr(env, addr, MMU_IDX_MMU_DISABLED(mmu_idx));
@@ -145,8 +144,7 @@ static void hppa_cpu_realizefn(DeviceState *dev, Error **errp)
 static void hppa_cpu_initfn(Object *obj)
 {
     CPUState *cs = CPU(obj);
-    HPPACPU *cpu = HPPA_CPU(obj);
-    CPUHPPAState *env = &cpu->env;
+    CPUHPPAState *env = cpu_env(CPU(obj));
 
     cs->exception_index = -1;
     cpu_hppa_loaded_fr0(env);
diff --git a/target/hppa/int_helper.c b/target/hppa/int_helper.c
index efe638b36e..1dc25ada01 100644
--- a/target/hppa/int_helper.c
+++ b/target/hppa/int_helper.c
@@ -99,8 +99,7 @@ void HELPER(write_eiem)(CPUHPPAState *env, target_ulong val)
 
 void hppa_cpu_do_interrupt(CPUState *cs)
 {
-    HPPACPU *cpu = HPPA_CPU(cs);
-    CPUHPPAState *env = &cpu->env;
+    CPUHPPAState *env = cpu_env(cs);
     int i = cs->exception_index;
     uint64_t old_psw;
 
@@ -268,8 +267,7 @@ void hppa_cpu_do_interrupt(CPUState *cs)
 
 bool hppa_cpu_exec_interrupt(CPUState *cs, int interrupt_request)
 {
-    HPPACPU *cpu = HPPA_CPU(cs);
-    CPUHPPAState *env = &cpu->env;
+    CPUHPPAState *env = cpu_env(cs);
 
     if (interrupt_request & CPU_INTERRUPT_NMI) {
         /* Raise TOC (NMI) interrupt */
diff --git a/target/hppa/mem_helper.c b/target/hppa/mem_helper.c
index 4fcc612754..f50a4122b3 100644
--- a/target/hppa/mem_helper.c
+++ b/target/hppa/mem_helper.c
@@ -357,8 +357,7 @@ bool hppa_cpu_tlb_fill(CPUState *cs, vaddr addr, int size,
                        MMUAccessType type, int mmu_idx,
                        bool probe, uintptr_t retaddr)
 {
-    HPPACPU *cpu = HPPA_CPU(cs);
-    CPUHPPAState *env = &cpu->env;
+    CPUHPPAState *env = cpu_env(cs);
     HPPATLBEntry *ent;
     int prot, excp, a_prot;
     hwaddr phys;
diff --git a/target/i386/arch_memory_mapping.c b/target/i386/arch_memory_mapping.c
index d1ff659128..c0604d5956 100644
--- a/target/i386/arch_memory_mapping.c
+++ b/target/i386/arch_memory_mapping.c
@@ -269,8 +269,7 @@ static void walk_pml5e(MemoryMappingList *list, AddressSpace *as,
 bool x86_cpu_get_memory_mapping(CPUState *cs, MemoryMappingList *list,
                                 Error **errp)
 {
-    X86CPU *cpu = X86_CPU(cs);
-    CPUX86State *env = &cpu->env;
+    CPUX86State *env = cpu_env(cs);
     int32_t a20_mask;
 
     if (!cpu_paging_enabled(cs)) {
diff --git a/target/i386/cpu-dump.c b/target/i386/cpu-dump.c
index 40697064d9..5459d84abd 100644
--- a/target/i386/cpu-dump.c
+++ b/target/i386/cpu-dump.c
@@ -343,8 +343,7 @@ void x86_cpu_dump_local_apic_state(CPUState *cs, int flags)
 
 void x86_cpu_dump_state(CPUState *cs, FILE *f, int flags)
 {
-    X86CPU *cpu = X86_CPU(cs);
-    CPUX86State *env = &cpu->env;
+    CPUX86State *env = cpu_env(cs);
     int eflags, i, nb;
     char cc_op_name[32];
     static const char *seg_name[6] = { "ES", "CS", "SS", "DS", "FS", "GS" };
diff --git a/target/i386/cpu.c b/target/i386/cpu.c
index 03822d9ba8..e0ce270d48 100644
--- a/target/i386/cpu.c
+++ b/target/i386/cpu.c
@@ -5062,8 +5062,7 @@ static void x86_cpuid_version_get_family(Object *obj, Visitor *v,
                                          const char *name, void *opaque,
                                          Error **errp)
 {
-    X86CPU *cpu = X86_CPU(obj);
-    CPUX86State *env = &cpu->env;
+    CPUX86State *env = cpu_env(CPU(obj));
     int64_t value;
 
     value = (env->cpuid_version >> 8) & 0xf;
@@ -5077,8 +5076,7 @@ static void x86_cpuid_version_set_family(Object *obj, Visitor *v,
                                          const char *name, void *opaque,
                                          Error **errp)
 {
-    X86CPU *cpu = X86_CPU(obj);
-    CPUX86State *env = &cpu->env;
+    CPUX86State *env = cpu_env(CPU(obj));
     const int64_t min = 0;
     const int64_t max = 0xff + 0xf;
     int64_t value;
@@ -5104,8 +5102,7 @@ static void x86_cpuid_version_get_model(Object *obj, Visitor *v,
                                         const char *name, void *opaque,
                                         Error **errp)
 {
-    X86CPU *cpu = X86_CPU(obj);
-    CPUX86State *env = &cpu->env;
+    CPUX86State *env = cpu_env(CPU(obj));
     int64_t value;
 
     value = (env->cpuid_version >> 4) & 0xf;
@@ -5117,8 +5114,7 @@ static void x86_cpuid_version_set_model(Object *obj, Visitor *v,
                                         const char *name, void *opaque,
                                         Error **errp)
 {
-    X86CPU *cpu = X86_CPU(obj);
-    CPUX86State *env = &cpu->env;
+    CPUX86State *env = cpu_env(CPU(obj));
     const int64_t min = 0;
     const int64_t max = 0xff;
     int64_t value;
@@ -5140,8 +5136,7 @@ static void x86_cpuid_version_get_stepping(Object *obj, Visitor *v,
                                            const char *name, void *opaque,
                                            Error **errp)
 {
-    X86CPU *cpu = X86_CPU(obj);
-    CPUX86State *env = &cpu->env;
+    CPUX86State *env = cpu_env(CPU(obj));
     int64_t value;
 
     value = env->cpuid_version & 0xf;
@@ -5152,8 +5147,7 @@ static void x86_cpuid_version_set_stepping(Object *obj, Visitor *v,
                                            const char *name, void *opaque,
                                            Error **errp)
 {
-    X86CPU *cpu = X86_CPU(obj);
-    CPUX86State *env = &cpu->env;
+    CPUX86State *env = cpu_env(CPU(obj));
     const int64_t min = 0;
     const int64_t max = 0xf;
     int64_t value;
@@ -5173,8 +5167,7 @@ static void x86_cpuid_version_set_stepping(Object *obj, Visitor *v,
 
 static char *x86_cpuid_get_vendor(Object *obj, Error **errp)
 {
-    X86CPU *cpu = X86_CPU(obj);
-    CPUX86State *env = &cpu->env;
+    CPUX86State *env = cpu_env(CPU(obj));
     char *value;
 
     value = g_malloc(CPUID_VENDOR_SZ + 1);
@@ -5186,8 +5179,7 @@ static char *x86_cpuid_get_vendor(Object *obj, Error **errp)
 static void x86_cpuid_set_vendor(Object *obj, const char *value,
                                  Error **errp)
 {
-    X86CPU *cpu = X86_CPU(obj);
-    CPUX86State *env = &cpu->env;
+    CPUX86State *env = cpu_env(CPU(obj));
     int i;
 
     if (strlen(value) != CPUID_VENDOR_SZ) {
@@ -5208,8 +5200,7 @@ static void x86_cpuid_set_vendor(Object *obj, const char *value,
 
 static char *x86_cpuid_get_model_id(Object *obj, Error **errp)
 {
-    X86CPU *cpu = X86_CPU(obj);
-    CPUX86State *env = &cpu->env;
+    CPUX86State *env = cpu_env(CPU(obj));
     char *value;
     int i;
 
@@ -5224,8 +5215,7 @@ static char *x86_cpuid_get_model_id(Object *obj, Error **errp)
 static void x86_cpuid_set_model_id(Object *obj, const char *model_id,
                                    Error **errp)
 {
-    X86CPU *cpu = X86_CPU(obj);
-    CPUX86State *env = &cpu->env;
+    CPUX86State *env = cpu_env(CPU(obj));
     int c, len, i;
 
     if (model_id == NULL) {
@@ -7673,8 +7663,7 @@ static vaddr x86_cpu_get_pc(CPUState *cs)
 
 int x86_cpu_pending_interrupt(CPUState *cs, int interrupt_request)
 {
-    X86CPU *cpu = X86_CPU(cs);
-    CPUX86State *env = &cpu->env;
+    CPUX86State *env = cpu_env(cs);
 
 #if !defined(CONFIG_USER_ONLY)
     if (interrupt_request & CPU_INTERRUPT_POLL) {
@@ -7722,8 +7711,7 @@ static bool x86_cpu_has_work(CPUState *cs)
 
 static void x86_disas_set_info(CPUState *cs, disassemble_info *info)
 {
-    X86CPU *cpu = X86_CPU(cs);
-    CPUX86State *env = &cpu->env;
+    CPUX86State *env = cpu_env(cs);
 
     info->mach = (env->hflags & HF_CS64_MASK ? bfd_mach_x86_64
                   : env->hflags & HF_CS32_MASK ? bfd_mach_i386_i386
diff --git a/target/i386/helper.c b/target/i386/helper.c
index 2070dd0dda..19fe7e56e9 100644
--- a/target/i386/helper.c
+++ b/target/i386/helper.c
@@ -230,8 +230,7 @@ void cpu_x86_update_cr4(CPUX86State *env, uint32_t new_cr4)
 hwaddr x86_cpu_get_phys_page_attrs_debug(CPUState *cs, vaddr addr,
                                          MemTxAttrs *attrs)
 {
-    X86CPU *cpu = X86_CPU(cs);
-    CPUX86State *env = &cpu->env;
+    CPUX86State *env = cpu_env(cs);
     target_ulong pde_addr, pte_addr;
     uint64_t pte;
     int32_t a20_mask;
@@ -625,8 +624,7 @@ void cpu_load_efer(CPUX86State *env, uint64_t val)
 
 uint8_t x86_ldub_phys(CPUState *cs, hwaddr addr)
 {
-    X86CPU *cpu = X86_CPU(cs);
-    CPUX86State *env = &cpu->env;
+    CPUX86State *env = cpu_env(cs);
     MemTxAttrs attrs = cpu_get_mem_attrs(env);
     AddressSpace *as = cpu_addressspace(cs, attrs);
 
@@ -635,8 +633,7 @@ uint8_t x86_ldub_phys(CPUState *cs, hwaddr addr)
 
 uint32_t x86_lduw_phys(CPUState *cs, hwaddr addr)
 {
-    X86CPU *cpu = X86_CPU(cs);
-    CPUX86State *env = &cpu->env;
+    CPUX86State *env = cpu_env(cs);
     MemTxAttrs attrs = cpu_get_mem_attrs(env);
     AddressSpace *as = cpu_addressspace(cs, attrs);
 
@@ -645,8 +642,7 @@ uint32_t x86_lduw_phys(CPUState *cs, hwaddr addr)
 
 uint32_t x86_ldl_phys(CPUState *cs, hwaddr addr)
 {
-    X86CPU *cpu = X86_CPU(cs);
-    CPUX86State *env = &cpu->env;
+    CPUX86State *env = cpu_env(cs);
     MemTxAttrs attrs = cpu_get_mem_attrs(env);
     AddressSpace *as = cpu_addressspace(cs, attrs);
 
@@ -655,8 +651,7 @@ uint32_t x86_ldl_phys(CPUState *cs, hwaddr addr)
 
 uint64_t x86_ldq_phys(CPUState *cs, hwaddr addr)
 {
-    X86CPU *cpu = X86_CPU(cs);
-    CPUX86State *env = &cpu->env;
+    CPUX86State *env = cpu_env(cs);
     MemTxAttrs attrs = cpu_get_mem_attrs(env);
     AddressSpace *as = cpu_addressspace(cs, attrs);
 
@@ -665,8 +660,7 @@ uint64_t x86_ldq_phys(CPUState *cs, hwaddr addr)
 
 void x86_stb_phys(CPUState *cs, hwaddr addr, uint8_t val)
 {
-    X86CPU *cpu = X86_CPU(cs);
-    CPUX86State *env = &cpu->env;
+    CPUX86State *env = cpu_env(cs);
     MemTxAttrs attrs = cpu_get_mem_attrs(env);
     AddressSpace *as = cpu_addressspace(cs, attrs);
 
@@ -675,8 +669,7 @@ void x86_stb_phys(CPUState *cs, hwaddr addr, uint8_t val)
 
 void x86_stl_phys_notdirty(CPUState *cs, hwaddr addr, uint32_t val)
 {
-    X86CPU *cpu = X86_CPU(cs);
-    CPUX86State *env = &cpu->env;
+    CPUX86State *env = cpu_env(cs);
     MemTxAttrs attrs = cpu_get_mem_attrs(env);
     AddressSpace *as = cpu_addressspace(cs, attrs);
 
@@ -685,8 +678,7 @@ void x86_stl_phys_notdirty(CPUState *cs, hwaddr addr, uint32_t val)
 
 void x86_stw_phys(CPUState *cs, hwaddr addr, uint32_t val)
 {
-    X86CPU *cpu = X86_CPU(cs);
-    CPUX86State *env = &cpu->env;
+    CPUX86State *env = cpu_env(cs);
     MemTxAttrs attrs = cpu_get_mem_attrs(env);
     AddressSpace *as = cpu_addressspace(cs, attrs);
 
@@ -695,8 +687,7 @@ void x86_stw_phys(CPUState *cs, hwaddr addr, uint32_t val)
 
 void x86_stl_phys(CPUState *cs, hwaddr addr, uint32_t val)
 {
-    X86CPU *cpu = X86_CPU(cs);
-    CPUX86State *env = &cpu->env;
+    CPUX86State *env = cpu_env(cs);
     MemTxAttrs attrs = cpu_get_mem_attrs(env);
     AddressSpace *as = cpu_addressspace(cs, attrs);
 
@@ -705,8 +696,7 @@ void x86_stl_phys(CPUState *cs, hwaddr addr, uint32_t val)
 
 void x86_stq_phys(CPUState *cs, hwaddr addr, uint64_t val)
 {
-    X86CPU *cpu = X86_CPU(cs);
-    CPUX86State *env = &cpu->env;
+    CPUX86State *env = cpu_env(cs);
     MemTxAttrs attrs = cpu_get_mem_attrs(env);
     AddressSpace *as = cpu_addressspace(cs, attrs);
 
diff --git a/target/i386/hvf/hvf.c b/target/i386/hvf/hvf.c
index 11ffdd4c69..c8f5cf4d84 100644
--- a/target/i386/hvf/hvf.c
+++ b/target/i386/hvf/hvf.c
@@ -159,8 +159,7 @@ static bool ept_emulation_fault(hvf_slot *slot, uint64_t gpa, uint64_t ept_qual)
 
 void hvf_arch_vcpu_destroy(CPUState *cpu)
 {
-    X86CPU *x86_cpu = X86_CPU(cpu);
-    CPUX86State *env = &x86_cpu->env;
+    CPUX86State *env = cpu_env(cpu);
 
     g_free(env->hvf_mmio_buf);
 }
@@ -313,8 +312,7 @@ int hvf_arch_init_vcpu(CPUState *cpu)
 
 static void hvf_store_events(CPUState *cpu, uint32_t ins_len, uint64_t idtvec_info)
 {
-    X86CPU *x86_cpu = X86_CPU(cpu);
-    CPUX86State *env = &x86_cpu->env;
+    CPUX86State *env = cpu_env(cpu);
 
     env->exception_nr = -1;
     env->exception_pending = 0;
diff --git a/target/i386/hvf/x86.c b/target/i386/hvf/x86.c
index 8ceea6398e..5794d1ef8c 100644
--- a/target/i386/hvf/x86.c
+++ b/target/i386/hvf/x86.c
@@ -128,8 +128,7 @@ bool x86_is_real(struct CPUState *cpu)
 
 bool x86_is_v8086(struct CPUState *cpu)
 {
-    X86CPU *x86_cpu = X86_CPU(cpu);
-    CPUX86State *env = &x86_cpu->env;
+    CPUX86State *env = cpu_env(CPU(cpu));
     return x86_is_protected(cpu) && (env->eflags & VM_MASK);
 }
 
diff --git a/target/i386/hvf/x86_emu.c b/target/i386/hvf/x86_emu.c
index 3a3f0a50d0..0d13b32f91 100644
--- a/target/i386/hvf/x86_emu.c
+++ b/target/i386/hvf/x86_emu.c
@@ -1419,8 +1419,7 @@ static void init_cmd_handler()
 
 void load_regs(CPUState *cs)
 {
-    X86CPU *cpu = X86_CPU(cs);
-    CPUX86State *env = &cpu->env;
+    CPUX86State *env = cpu_env(cs);
 
     int i = 0;
     RRX(env, R_EAX) = rreg(cs->accel->fd, HV_X86_RAX);
@@ -1442,8 +1441,7 @@ void load_regs(CPUState *cs)
 
 void store_regs(CPUState *cs)
 {
-    X86CPU *cpu = X86_CPU(cs);
-    CPUX86State *env = &cpu->env;
+    CPUX86State *env = cpu_env(cs);
 
     int i = 0;
     wreg(cs->accel->fd, HV_X86_RAX, RAX(env));
diff --git a/target/i386/hvf/x86_task.c b/target/i386/hvf/x86_task.c
index f09bfbdda5..c173e9d883 100644
--- a/target/i386/hvf/x86_task.c
+++ b/target/i386/hvf/x86_task.c
@@ -33,8 +33,7 @@
 // TODO: taskswitch handling
 static void save_state_to_tss32(CPUState *cpu, struct x86_tss_segment32 *tss)
 {
-    X86CPU *x86_cpu = X86_CPU(cpu);
-    CPUX86State *env = &x86_cpu->env;
+    CPUX86State *env = cpu_env(cpu);
 
     /* CR3 and ldt selector are not saved intentionally */
     tss->eip = (uint32_t)env->eip;
@@ -58,8 +57,7 @@ static void save_state_to_tss32(CPUState *cpu, struct x86_tss_segment32 *tss)
 
 static void load_state_from_tss32(CPUState *cpu, struct x86_tss_segment32 *tss)
 {
-    X86CPU *x86_cpu = X86_CPU(cpu);
-    CPUX86State *env = &x86_cpu->env;
+    CPUX86State *env = cpu_env(cpu);
 
     wvmcs(cpu->accel->fd, VMCS_GUEST_CR3, tss->cr3);
 
@@ -128,9 +126,7 @@ void vmx_handle_task_switch(CPUState *cpu, x68_segment_selector tss_sel, int rea
     uint32_t desc_limit;
     struct x86_call_gate task_gate_desc;
     struct vmx_segment vmx_seg;
-
-    X86CPU *x86_cpu = X86_CPU(cpu);
-    CPUX86State *env = &x86_cpu->env;
+    CPUX86State *env = cpu_env(cpu);
 
     x86_read_segment_descriptor(cpu, &next_tss_desc, tss_sel);
     x86_read_segment_descriptor(cpu, &curr_tss_desc, old_tss_sel);
diff --git a/target/i386/hvf/x86hvf.c b/target/i386/hvf/x86hvf.c
index 3b1ef5f49a..1e7fd587fe 100644
--- a/target/i386/hvf/x86hvf.c
+++ b/target/i386/hvf/x86hvf.c
@@ -238,8 +238,7 @@ void hvf_get_msrs(CPUState *cs)
 
 int hvf_put_registers(CPUState *cs)
 {
-    X86CPU *x86cpu = X86_CPU(cs);
-    CPUX86State *env = &x86cpu->env;
+    CPUX86State *env = cpu_env(cs);
 
     wreg(cs->accel->fd, HV_X86_RAX, env->regs[R_EAX]);
     wreg(cs->accel->fd, HV_X86_RBX, env->regs[R_EBX]);
@@ -282,8 +281,7 @@ int hvf_put_registers(CPUState *cs)
 
 int hvf_get_registers(CPUState *cs)
 {
-    X86CPU *x86cpu = X86_CPU(cs);
-    CPUX86State *env = &x86cpu->env;
+    CPUX86State *env = cpu_env(cs);
 
     env->regs[R_EAX] = rreg(cs->accel->fd, HV_X86_RAX);
     env->regs[R_EBX] = rreg(cs->accel->fd, HV_X86_RBX);
diff --git a/target/i386/kvm/kvm.c b/target/i386/kvm/kvm.c
index 76a66246eb..e4f1c62888 100644
--- a/target/i386/kvm/kvm.c
+++ b/target/i386/kvm/kvm.c
@@ -754,8 +754,7 @@ static inline bool freq_within_bounds(int freq, int target_freq)
 
 static int kvm_arch_set_tsc_khz(CPUState *cs)
 {
-    X86CPU *cpu = X86_CPU(cs);
-    CPUX86State *env = &cpu->env;
+    CPUX86State *env = cpu_env(cs);
     int r, cur_freq;
     bool set_ioctl = false;
 
@@ -5369,8 +5368,7 @@ int kvm_arch_handle_exit(CPUState *cs, struct kvm_run *run)
 
 bool kvm_arch_stop_on_emulation_error(CPUState *cs)
 {
-    X86CPU *cpu = X86_CPU(cs);
-    CPUX86State *env = &cpu->env;
+    CPUX86State *env = cpu_env(cs);
 
     kvm_cpu_synchronize_state(cs);
     return !(env->cr[0] & CR0_PE_MASK) ||
diff --git a/target/i386/kvm/xen-emu.c b/target/i386/kvm/xen-emu.c
index fc2c2321ac..e7dbfe4d74 100644
--- a/target/i386/kvm/xen-emu.c
+++ b/target/i386/kvm/xen-emu.c
@@ -313,8 +313,7 @@ static int kvm_xen_set_vcpu_callback_vector(CPUState *cs)
 
 static void do_set_vcpu_callback_vector(CPUState *cs, run_on_cpu_data data)
 {
-    X86CPU *cpu = X86_CPU(cs);
-    CPUX86State *env = &cpu->env;
+    CPUX86State *env = cpu_env(cs);
 
     env->xen_vcpu_callback_vector = data.host_int;
 
@@ -325,8 +324,7 @@ static void do_set_vcpu_callback_vector(CPUState *cs, run_on_cpu_data data)
 
 static int set_vcpu_info(CPUState *cs, uint64_t gpa)
 {
-    X86CPU *cpu = X86_CPU(cs);
-    CPUX86State *env = &cpu->env;
+    CPUX86State *env = cpu_env(cs);
     MemoryRegionSection mrs = { .mr = NULL };
     void *vcpu_info_hva = NULL;
     int ret;
@@ -362,8 +360,7 @@ static int set_vcpu_info(CPUState *cs, uint64_t gpa)
 
 static void do_set_vcpu_info_default_gpa(CPUState *cs, run_on_cpu_data data)
 {
-    X86CPU *cpu = X86_CPU(cs);
-    CPUX86State *env = &cpu->env;
+    CPUX86State *env = cpu_env(cs);
 
     env->xen_vcpu_info_default_gpa = data.host_ulong;
 
@@ -375,8 +372,7 @@ static void do_set_vcpu_info_default_gpa(CPUState *cs, run_on_cpu_data data)
 
 static void do_set_vcpu_info_gpa(CPUState *cs, run_on_cpu_data data)
 {
-    X86CPU *cpu = X86_CPU(cs);
-    CPUX86State *env = &cpu->env;
+    CPUX86State *env = cpu_env(cs);
 
     env->xen_vcpu_info_gpa = data.host_ulong;
 
@@ -479,8 +475,7 @@ void kvm_xen_inject_vcpu_callback_vector(uint32_t vcpu_id, int type)
 /* Must always be called with xen_timers_lock held */
 static int kvm_xen_set_vcpu_timer(CPUState *cs)
 {
-    X86CPU *cpu = X86_CPU(cs);
-    CPUX86State *env = &cpu->env;
+    CPUX86State *env = cpu_env(cs);
 
     struct kvm_xen_vcpu_attr va = {
         .type = KVM_XEN_VCPU_ATTR_TYPE_TIMER,
@@ -527,8 +522,7 @@ int kvm_xen_set_vcpu_virq(uint32_t vcpu_id, uint16_t virq, uint16_t port)
 
 static void do_set_vcpu_time_info_gpa(CPUState *cs, run_on_cpu_data data)
 {
-    X86CPU *cpu = X86_CPU(cs);
-    CPUX86State *env = &cpu->env;
+    CPUX86State *env = cpu_env(cs);
 
     env->xen_vcpu_time_info_gpa = data.host_ulong;
 
@@ -538,8 +532,7 @@ static void do_set_vcpu_time_info_gpa(CPUState *cs, run_on_cpu_data data)
 
 static void do_set_vcpu_runstate_gpa(CPUState *cs, run_on_cpu_data data)
 {
-    X86CPU *cpu = X86_CPU(cs);
-    CPUX86State *env = &cpu->env;
+    CPUX86State *env = cpu_env(cs);
 
     env->xen_vcpu_runstate_gpa = data.host_ulong;
 
@@ -549,8 +542,7 @@ static void do_set_vcpu_runstate_gpa(CPUState *cs, run_on_cpu_data data)
 
 static void do_vcpu_soft_reset(CPUState *cs, run_on_cpu_data data)
 {
-    X86CPU *cpu = X86_CPU(cs);
-    CPUX86State *env = &cpu->env;
+    CPUX86State *env = cpu_env(cs);
 
     env->xen_vcpu_info_gpa = INVALID_GPA;
     env->xen_vcpu_info_default_gpa = INVALID_GPA;
@@ -1813,8 +1805,7 @@ uint16_t kvm_xen_get_evtchn_max_pirq(void)
 
 int kvm_put_xen_state(CPUState *cs)
 {
-    X86CPU *cpu = X86_CPU(cs);
-    CPUX86State *env = &cpu->env;
+    CPUX86State *env = cpu_env(cs);
     uint64_t gpa;
     int ret;
 
@@ -1887,8 +1878,7 @@ int kvm_put_xen_state(CPUState *cs)
 
 int kvm_get_xen_state(CPUState *cs)
 {
-    X86CPU *cpu = X86_CPU(cs);
-    CPUX86State *env = &cpu->env;
+    CPUX86State *env = cpu_env(cs);
     uint64_t gpa;
     int ret;
 
diff --git a/target/i386/tcg/sysemu/bpt_helper.c b/target/i386/tcg/sysemu/bpt_helper.c
index 4d96a48a3c..90d6117497 100644
--- a/target/i386/tcg/sysemu/bpt_helper.c
+++ b/target/i386/tcg/sysemu/bpt_helper.c
@@ -208,8 +208,7 @@ bool check_hw_breakpoints(CPUX86State *env, bool force_dr6_update)
 
 void breakpoint_handler(CPUState *cs)
 {
-    X86CPU *cpu = X86_CPU(cs);
-    CPUX86State *env = &cpu->env;
+    CPUX86State *env = cpu_env(cs);
 
     if (cs->watchpoint_hit) {
         if (cs->watchpoint_hit->flags & BP_CPU) {
diff --git a/target/i386/tcg/tcg-cpu.c b/target/i386/tcg/tcg-cpu.c
index e1405b7be9..50230fe5f4 100644
--- a/target/i386/tcg/tcg-cpu.c
+++ b/target/i386/tcg/tcg-cpu.c
@@ -29,8 +29,7 @@
 
 static void x86_cpu_exec_enter(CPUState *cs)
 {
-    X86CPU *cpu = X86_CPU(cs);
-    CPUX86State *env = &cpu->env;
+    CPUX86State *env = cpu_env(cs);
 
     CC_SRC = env->eflags & (CC_O | CC_S | CC_Z | CC_A | CC_P | CC_C);
     env->df = 1 - (2 * ((env->eflags >> 10) & 1));
@@ -40,8 +39,7 @@ static void x86_cpu_exec_enter(CPUState *cs)
 
 static void x86_cpu_exec_exit(CPUState *cs)
 {
-    X86CPU *cpu = X86_CPU(cs);
-    CPUX86State *env = &cpu->env;
+    CPUX86State *env = cpu_env(cs);
 
     env->eflags = cpu_compute_eflags(env);
 }
@@ -65,8 +63,7 @@ static void x86_restore_state_to_opc(CPUState *cs,
                                      const TranslationBlock *tb,
                                      const uint64_t *data)
 {
-    X86CPU *cpu = X86_CPU(cs);
-    CPUX86State *env = &cpu->env;
+    CPUX86State *env = cpu_env(cs);
     int cc_op = data[1];
     uint64_t new_pc;
 
@@ -96,8 +93,7 @@ static void x86_restore_state_to_opc(CPUState *cs,
 #ifndef CONFIG_USER_ONLY
 static bool x86_debug_check_breakpoint(CPUState *cs)
 {
-    X86CPU *cpu = X86_CPU(cs);
-    CPUX86State *env = &cpu->env;
+    CPUX86State *env = cpu_env(cs);
 
     /* RF disables all architectural breakpoints. */
     return !(env->eflags & RF_MASK);
diff --git a/target/i386/tcg/user/excp_helper.c b/target/i386/tcg/user/excp_helper.c
index b3bdb7831a..bfcae9f39e 100644
--- a/target/i386/tcg/user/excp_helper.c
+++ b/target/i386/tcg/user/excp_helper.c
@@ -26,8 +26,7 @@ void x86_cpu_record_sigsegv(CPUState *cs, vaddr addr,
                             MMUAccessType access_type,
                             bool maperr, uintptr_t ra)
 {
-    X86CPU *cpu = X86_CPU(cs);
-    CPUX86State *env = &cpu->env;
+    CPUX86State *env = cpu_env(cs);
 
     /*
      * The error_code that hw reports as part of the exception frame
diff --git a/target/i386/tcg/user/seg_helper.c b/target/i386/tcg/user/seg_helper.c
index c45f2ac2ba..2f89dbb51e 100644
--- a/target/i386/tcg/user/seg_helper.c
+++ b/target/i386/tcg/user/seg_helper.c
@@ -78,8 +78,7 @@ static void do_interrupt_user(CPUX86State *env, int intno, int is_int,
 
 void x86_cpu_do_interrupt(CPUState *cs)
 {
-    X86CPU *cpu = X86_CPU(cs);
-    CPUX86State *env = &cpu->env;
+    CPUX86State *env = cpu_env(cs);
 
     /* if user mode only, we simulate a fake exception
        which will be handled outside the cpu execution
diff --git a/target/m68k/cpu.c b/target/m68k/cpu.c
index 1421e77c2c..c122fd96fb 100644
--- a/target/m68k/cpu.c
+++ b/target/m68k/cpu.c
@@ -117,8 +117,7 @@ static ObjectClass *m68k_cpu_class_by_name(const char *cpu_model)
 
 static void m5206_cpu_initfn(Object *obj)
 {
-    M68kCPU *cpu = M68K_CPU(obj);
-    CPUM68KState *env = &cpu->env;
+    CPUM68KState *env = cpu_env(CPU(obj));
 
     m68k_set_feature(env, M68K_FEATURE_CF_ISA_A);
     m68k_set_feature(env, M68K_FEATURE_MOVEFROMSR_PRIV);
@@ -127,8 +126,7 @@ static void m5206_cpu_initfn(Object *obj)
 /* Base feature set, including isns. for m68k family */
 static void m68000_cpu_initfn(Object *obj)
 {
-    M68kCPU *cpu = M68K_CPU(obj);
-    CPUM68KState *env = &cpu->env;
+    CPUM68KState *env = cpu_env(CPU(obj));
 
     m68k_set_feature(env, M68K_FEATURE_M68K);
     m68k_set_feature(env, M68K_FEATURE_USP);
@@ -141,8 +139,7 @@ static void m68000_cpu_initfn(Object *obj)
  */
 static void m68010_cpu_initfn(Object *obj)
 {
-    M68kCPU *cpu = M68K_CPU(obj);
-    CPUM68KState *env = &cpu->env;
+    CPUM68KState *env = cpu_env(CPU(obj));
 
     m68000_cpu_initfn(obj);
     m68k_set_feature(env, M68K_FEATURE_M68010);
@@ -161,8 +158,7 @@ static void m68010_cpu_initfn(Object *obj)
  */
 static void m68020_cpu_initfn(Object *obj)
 {
-    M68kCPU *cpu = M68K_CPU(obj);
-    CPUM68KState *env = &cpu->env;
+    CPUM68KState *env = cpu_env(CPU(obj));
 
     m68010_cpu_initfn(obj);
     m68k_unset_feature(env, M68K_FEATURE_M68010);
@@ -192,8 +188,7 @@ static void m68020_cpu_initfn(Object *obj)
  */
 static void m68030_cpu_initfn(Object *obj)
 {
-    M68kCPU *cpu = M68K_CPU(obj);
-    CPUM68KState *env = &cpu->env;
+    CPUM68KState *env = cpu_env(CPU(obj));
 
     m68020_cpu_initfn(obj);
     m68k_unset_feature(env, M68K_FEATURE_M68020);
@@ -219,8 +214,7 @@ static void m68030_cpu_initfn(Object *obj)
  */
 static void m68040_cpu_initfn(Object *obj)
 {
-    M68kCPU *cpu = M68K_CPU(obj);
-    CPUM68KState *env = &cpu->env;
+    CPUM68KState *env = cpu_env(CPU(obj));
 
     m68030_cpu_initfn(obj);
     m68k_unset_feature(env, M68K_FEATURE_M68030);
@@ -240,8 +234,7 @@ static void m68040_cpu_initfn(Object *obj)
  */
 static void m68060_cpu_initfn(Object *obj)
 {
-    M68kCPU *cpu = M68K_CPU(obj);
-    CPUM68KState *env = &cpu->env;
+    CPUM68KState *env = cpu_env(CPU(obj));
 
     m68040_cpu_initfn(obj);
     m68k_unset_feature(env, M68K_FEATURE_M68040);
@@ -254,8 +247,7 @@ static void m68060_cpu_initfn(Object *obj)
 
 static void m5208_cpu_initfn(Object *obj)
 {
-    M68kCPU *cpu = M68K_CPU(obj);
-    CPUM68KState *env = &cpu->env;
+    CPUM68KState *env = cpu_env(CPU(obj));
 
     m68k_set_feature(env, M68K_FEATURE_CF_ISA_A);
     m68k_set_feature(env, M68K_FEATURE_CF_ISA_APLUSC);
@@ -267,8 +259,7 @@ static void m5208_cpu_initfn(Object *obj)
 
 static void cfv4e_cpu_initfn(Object *obj)
 {
-    M68kCPU *cpu = M68K_CPU(obj);
-    CPUM68KState *env = &cpu->env;
+    CPUM68KState *env = cpu_env(CPU(obj));
 
     m68k_set_feature(env, M68K_FEATURE_CF_ISA_A);
     m68k_set_feature(env, M68K_FEATURE_CF_ISA_B);
@@ -281,8 +272,7 @@ static void cfv4e_cpu_initfn(Object *obj)
 
 static void any_cpu_initfn(Object *obj)
 {
-    M68kCPU *cpu = M68K_CPU(obj);
-    CPUM68KState *env = &cpu->env;
+    CPUM68KState *env = cpu_env(CPU(obj));
 
     m68k_set_feature(env, M68K_FEATURE_CF_ISA_A);
     m68k_set_feature(env, M68K_FEATURE_CF_ISA_B);
diff --git a/target/m68k/gdbstub.c b/target/m68k/gdbstub.c
index 1e5f033a12..15547e2313 100644
--- a/target/m68k/gdbstub.c
+++ b/target/m68k/gdbstub.c
@@ -23,8 +23,7 @@
 
 int m68k_cpu_gdb_read_register(CPUState *cs, GByteArray *mem_buf, int n)
 {
-    M68kCPU *cpu = M68K_CPU(cs);
-    CPUM68KState *env = &cpu->env;
+    CPUM68KState *env = cpu_env(cs);
 
     if (n < 8) {
         /* D0-D7 */
@@ -50,8 +49,7 @@ int m68k_cpu_gdb_read_register(CPUState *cs, GByteArray *mem_buf, int n)
 
 int m68k_cpu_gdb_write_register(CPUState *cs, uint8_t *mem_buf, int n)
 {
-    M68kCPU *cpu = M68K_CPU(cs);
-    CPUM68KState *env = &cpu->env;
+    CPUM68KState *env = cpu_env(cs);
     uint32_t tmp;
 
     tmp = ldl_p(mem_buf);
diff --git a/target/m68k/helper.c b/target/m68k/helper.c
index 14508dfa11..85f3cd1680 100644
--- a/target/m68k/helper.c
+++ b/target/m68k/helper.c
@@ -894,8 +894,7 @@ txfail:
 
 hwaddr m68k_cpu_get_phys_page_debug(CPUState *cs, vaddr addr)
 {
-    M68kCPU *cpu = M68K_CPU(cs);
-    CPUM68KState *env = &cpu->env;
+    CPUM68KState *env = cpu_env(cs);
     hwaddr phys_addr;
     int prot;
     int access_type;
diff --git a/target/m68k/m68k-semi.c b/target/m68k/m68k-semi.c
index b4ffb70f8b..546cff2246 100644
--- a/target/m68k/m68k-semi.c
+++ b/target/m68k/m68k-semi.c
@@ -77,8 +77,7 @@ static int host_to_gdb_errno(int err)
 
 static void m68k_semi_u32_cb(CPUState *cs, uint64_t ret, int err)
 {
-    M68kCPU *cpu = M68K_CPU(cs);
-    CPUM68KState *env = &cpu->env;
+    CPUM68KState *env = cpu_env(cs);
 
     target_ulong args = env->dregs[1];
     if (put_user_u32(ret, args) ||
@@ -95,8 +94,7 @@ static void m68k_semi_u32_cb(CPUState *cs, uint64_t ret, int err)
 
 static void m68k_semi_u64_cb(CPUState *cs, uint64_t ret, int err)
 {
-    M68kCPU *cpu = M68K_CPU(cs);
-    CPUM68KState *env = &cpu->env;
+    CPUM68KState *env = cpu_env(cs);
 
     target_ulong args = env->dregs[1];
     if (put_user_u32(ret >> 32, args) ||
diff --git a/target/m68k/op_helper.c b/target/m68k/op_helper.c
index 1ce850bbc5..89f0915e2e 100644
--- a/target/m68k/op_helper.c
+++ b/target/m68k/op_helper.c
@@ -441,8 +441,7 @@ static void do_interrupt_all(CPUM68KState *env, int is_hw)
 
 void m68k_cpu_do_interrupt(CPUState *cs)
 {
-    M68kCPU *cpu = M68K_CPU(cs);
-    CPUM68KState *env = &cpu->env;
+    CPUM68KState *env = cpu_env(cs);
 
     do_interrupt_all(env, 0);
 }
@@ -457,8 +456,7 @@ void m68k_cpu_transaction_failed(CPUState *cs, hwaddr physaddr, vaddr addr,
                                  int mmu_idx, MemTxAttrs attrs,
                                  MemTxResult response, uintptr_t retaddr)
 {
-    M68kCPU *cpu = M68K_CPU(cs);
-    CPUM68KState *env = &cpu->env;
+    CPUM68KState *env = cpu_env(cs);
 
     cpu_restore_state(cs, retaddr);
 
@@ -511,8 +509,7 @@ void m68k_cpu_transaction_failed(CPUState *cs, hwaddr physaddr, vaddr addr,
 
 bool m68k_cpu_exec_interrupt(CPUState *cs, int interrupt_request)
 {
-    M68kCPU *cpu = M68K_CPU(cs);
-    CPUM68KState *env = &cpu->env;
+    CPUM68KState *env = cpu_env(cs);
 
     if (interrupt_request & CPU_INTERRUPT_HARD
         && ((env->sr & SR_I) >> SR_I_SHIFT) < env->pending_level) {
diff --git a/target/m68k/translate.c b/target/m68k/translate.c
index 4a0b0b2703..9688476a7b 100644
--- a/target/m68k/translate.c
+++ b/target/m68k/translate.c
@@ -6108,8 +6108,7 @@ static double floatx80_to_double(CPUM68KState *env, uint16_t high, uint64_t low)
 
 void m68k_cpu_dump_state(CPUState *cs, FILE *f, int flags)
 {
-    M68kCPU *cpu = M68K_CPU(cs);
-    CPUM68KState *env = &cpu->env;
+    CPUM68KState *env = cpu_env(cs);
     int i;
     uint16_t sr;
     for (i = 0; i < 8; i++) {
diff --git a/target/microblaze/helper.c b/target/microblaze/helper.c
index 98bdb82de8..bf955dd425 100644
--- a/target/microblaze/helper.c
+++ b/target/microblaze/helper.c
@@ -253,8 +253,7 @@ hwaddr mb_cpu_get_phys_page_attrs_debug(CPUState *cs, vaddr addr,
 
 bool mb_cpu_exec_interrupt(CPUState *cs, int interrupt_request)
 {
-    MicroBlazeCPU *cpu = MICROBLAZE_CPU(cs);
-    CPUMBState *env = &cpu->env;
+    CPUMBState *env = cpu_env(cs);
 
     if ((interrupt_request & CPU_INTERRUPT_HARD)
         && (env->msr & MSR_IE)
diff --git a/target/microblaze/translate.c b/target/microblaze/translate.c
index 49bfb4a0ea..1c6e4fcfe4 100644
--- a/target/microblaze/translate.c
+++ b/target/microblaze/translate.c
@@ -1800,8 +1800,7 @@ void gen_intermediate_code(CPUState *cpu, TranslationBlock *tb, int *max_insns,
 
 void mb_cpu_dump_state(CPUState *cs, FILE *f, int flags)
 {
-    MicroBlazeCPU *cpu = MICROBLAZE_CPU(cs);
-    CPUMBState *env = &cpu->env;
+    CPUMBState *env = cpu_env(cs);
     uint32_t iflags;
     int i;
 
diff --git a/target/mips/cpu.c b/target/mips/cpu.c
index a0023edd43..1eaa42e561 100644
--- a/target/mips/cpu.c
+++ b/target/mips/cpu.c
@@ -80,8 +80,7 @@ static void fpu_dump_state(CPUMIPSState *env, FILE *f, int flags)
 
 static void mips_cpu_dump_state(CPUState *cs, FILE *f, int flags)
 {
-    MIPSCPU *cpu = MIPS_CPU(cs);
-    CPUMIPSState *env = &cpu->env;
+    CPUMIPSState *env = cpu_env(cs);
     int i;
 
     qemu_fprintf(f, "pc=0x" TARGET_FMT_lx " HI=0x" TARGET_FMT_lx
@@ -137,8 +136,7 @@ static vaddr mips_cpu_get_pc(CPUState *cs)
 
 static bool mips_cpu_has_work(CPUState *cs)
 {
-    MIPSCPU *cpu = MIPS_CPU(cs);
-    CPUMIPSState *env = &cpu->env;
+    CPUMIPSState *env = cpu_env(cs);
     bool has_work = false;
 
     /*
@@ -428,8 +426,7 @@ static void mips_cpu_reset_hold(Object *obj)
 
 static void mips_cpu_disas_set_info(CPUState *s, disassemble_info *info)
 {
-    MIPSCPU *cpu = MIPS_CPU(s);
-    CPUMIPSState *env = &cpu->env;
+    CPUMIPSState *env = cpu_env(s);
 
     if (!(env->insn_flags & ISA_NANOMIPS32)) {
 #if TARGET_BIG_ENDIAN
diff --git a/target/mips/gdbstub.c b/target/mips/gdbstub.c
index 62d7b72407..169d47416a 100644
--- a/target/mips/gdbstub.c
+++ b/target/mips/gdbstub.c
@@ -25,8 +25,7 @@
 
 int mips_cpu_gdb_read_register(CPUState *cs, GByteArray *mem_buf, int n)
 {
-    MIPSCPU *cpu = MIPS_CPU(cs);
-    CPUMIPSState *env = &cpu->env;
+    CPUMIPSState *env = cpu_env(cs);
 
     if (n < 32) {
         return gdb_get_regl(mem_buf, env->active_tc.gpr[n]);
@@ -78,8 +77,7 @@ int mips_cpu_gdb_read_register(CPUState *cs, GByteArray *mem_buf, int n)
 
 int mips_cpu_gdb_write_register(CPUState *cs, uint8_t *mem_buf, int n)
 {
-    MIPSCPU *cpu = MIPS_CPU(cs);
-    CPUMIPSState *env = &cpu->env;
+    CPUMIPSState *env = cpu_env(cs);
     target_ulong tmp;
 
     tmp = ldtul_p(mem_buf);
diff --git a/target/mips/kvm.c b/target/mips/kvm.c
index 15d0cf9adb..6c52e59f55 100644
--- a/target/mips/kvm.c
+++ b/target/mips/kvm.c
@@ -63,8 +63,7 @@ int kvm_arch_irqchip_create(KVMState *s)
 
 int kvm_arch_init_vcpu(CPUState *cs)
 {
-    MIPSCPU *cpu = MIPS_CPU(cs);
-    CPUMIPSState *env = &cpu->env;
+    CPUMIPSState *env = cpu_env(cs);
     int ret = 0;
 
     qemu_add_vm_change_state_handler(kvm_mips_update_state, cs);
@@ -460,8 +459,7 @@ static inline int kvm_mips_change_one_reg(CPUState *cs, uint64_t reg_id,
  */
 static int kvm_mips_save_count(CPUState *cs)
 {
-    MIPSCPU *cpu = MIPS_CPU(cs);
-    CPUMIPSState *env = &cpu->env;
+    CPUMIPSState *env = cpu_env(cs);
     uint64_t count_ctl;
     int err, ret = 0;
 
@@ -502,8 +500,7 @@ static int kvm_mips_save_count(CPUState *cs)
  */
 static int kvm_mips_restore_count(CPUState *cs)
 {
-    MIPSCPU *cpu = MIPS_CPU(cs);
-    CPUMIPSState *env = &cpu->env;
+    CPUMIPSState *env = cpu_env(cs);
     uint64_t count_ctl;
     int err_dc, err, ret = 0;
 
@@ -590,8 +587,7 @@ static void kvm_mips_update_state(void *opaque, bool running, RunState state)
 
 static int kvm_mips_put_fpu_registers(CPUState *cs, int level)
 {
-    MIPSCPU *cpu = MIPS_CPU(cs);
-    CPUMIPSState *env = &cpu->env;
+    CPUMIPSState *env = cpu_env(cs);
     int err, ret = 0;
     unsigned int i;
 
@@ -670,8 +666,7 @@ static int kvm_mips_put_fpu_registers(CPUState *cs, int level)
 
 static int kvm_mips_get_fpu_registers(CPUState *cs)
 {
-    MIPSCPU *cpu = MIPS_CPU(cs);
-    CPUMIPSState *env = &cpu->env;
+    CPUMIPSState *env = cpu_env(cs);
     int err, ret = 0;
     unsigned int i;
 
@@ -751,8 +746,7 @@ static int kvm_mips_get_fpu_registers(CPUState *cs)
 
 static int kvm_mips_put_cp0_registers(CPUState *cs, int level)
 {
-    MIPSCPU *cpu = MIPS_CPU(cs);
-    CPUMIPSState *env = &cpu->env;
+    CPUMIPSState *env = cpu_env(cs);
     int err, ret = 0;
 
     (void)level;
@@ -974,8 +968,7 @@ static int kvm_mips_put_cp0_registers(CPUState *cs, int level)
 
 static int kvm_mips_get_cp0_registers(CPUState *cs)
 {
-    MIPSCPU *cpu = MIPS_CPU(cs);
-    CPUMIPSState *env = &cpu->env;
+    CPUMIPSState *env = cpu_env(cs);
     int err, ret = 0;
 
     err = kvm_mips_get_one_reg(cs, KVM_REG_MIPS_CP0_INDEX, &env->CP0_Index);
@@ -1181,8 +1174,7 @@ static int kvm_mips_get_cp0_registers(CPUState *cs)
 
 int kvm_arch_put_registers(CPUState *cs, int level)
 {
-    MIPSCPU *cpu = MIPS_CPU(cs);
-    CPUMIPSState *env = &cpu->env;
+    CPUMIPSState *env = cpu_env(cs);
     struct kvm_regs regs;
     int ret;
     int i;
@@ -1217,8 +1209,7 @@ int kvm_arch_put_registers(CPUState *cs, int level)
 
 int kvm_arch_get_registers(CPUState *cs)
 {
-    MIPSCPU *cpu = MIPS_CPU(cs);
-    CPUMIPSState *env = &cpu->env;
+    CPUMIPSState *env = cpu_env(cs);
     int ret = 0;
     struct kvm_regs regs;
     int i;
diff --git a/target/mips/sysemu/physaddr.c b/target/mips/sysemu/physaddr.c
index 05990aa5bb..56380dfe6c 100644
--- a/target/mips/sysemu/physaddr.c
+++ b/target/mips/sysemu/physaddr.c
@@ -230,8 +230,7 @@ int get_physical_address(CPUMIPSState *env, hwaddr *physical,
 
 hwaddr mips_cpu_get_phys_page_debug(CPUState *cs, vaddr addr)
 {
-    MIPSCPU *cpu = MIPS_CPU(cs);
-    CPUMIPSState *env = &cpu->env;
+    CPUMIPSState *env = cpu_env(cs);
     hwaddr phys_addr;
     int prot;
 
diff --git a/target/mips/tcg/exception.c b/target/mips/tcg/exception.c
index da49a93912..13275d1ded 100644
--- a/target/mips/tcg/exception.c
+++ b/target/mips/tcg/exception.c
@@ -79,8 +79,7 @@ void helper_wait(CPUMIPSState *env)
 
 void mips_cpu_synchronize_from_tb(CPUState *cs, const TranslationBlock *tb)
 {
-    MIPSCPU *cpu = MIPS_CPU(cs);
-    CPUMIPSState *env = &cpu->env;
+    CPUMIPSState *env = cpu_env(cs);
 
     tcg_debug_assert(!(cs->tcg_cflags & CF_PCREL));
     env->active_tc.PC = tb->pc;
diff --git a/target/mips/tcg/op_helper.c b/target/mips/tcg/op_helper.c
index 98935b5e64..b57baa7ec1 100644
--- a/target/mips/tcg/op_helper.c
+++ b/target/mips/tcg/op_helper.c
@@ -279,8 +279,7 @@ void mips_cpu_do_unaligned_access(CPUState *cs, vaddr addr,
                                   MMUAccessType access_type,
                                   int mmu_idx, uintptr_t retaddr)
 {
-    MIPSCPU *cpu = MIPS_CPU(cs);
-    CPUMIPSState *env = &cpu->env;
+    CPUMIPSState *env = cpu_env(cs);
     int error_code = 0;
     int excp;
 
diff --git a/target/mips/tcg/sysemu/special_helper.c b/target/mips/tcg/sysemu/special_helper.c
index 93276f789d..7934f2ea41 100644
--- a/target/mips/tcg/sysemu/special_helper.c
+++ b/target/mips/tcg/sysemu/special_helper.c
@@ -90,8 +90,7 @@ static void debug_post_eret(CPUMIPSState *env)
 
 bool mips_io_recompile_replay_branch(CPUState *cs, const TranslationBlock *tb)
 {
-    MIPSCPU *cpu = MIPS_CPU(cs);
-    CPUMIPSState *env = &cpu->env;
+    CPUMIPSState *env = cpu_env(cs);
 
     if ((env->hflags & MIPS_HFLAG_BMASK) != 0
         && !(cs->tcg_cflags & CF_PCREL) && env->active_tc.PC != tb->pc) {
diff --git a/target/mips/tcg/sysemu/tlb_helper.c b/target/mips/tcg/sysemu/tlb_helper.c
index 4ede904800..6c48c4fa80 100644
--- a/target/mips/tcg/sysemu/tlb_helper.c
+++ b/target/mips/tcg/sysemu/tlb_helper.c
@@ -910,8 +910,7 @@ bool mips_cpu_tlb_fill(CPUState *cs, vaddr address, int size,
                        MMUAccessType access_type, int mmu_idx,
                        bool probe, uintptr_t retaddr)
 {
-    MIPSCPU *cpu = MIPS_CPU(cs);
-    CPUMIPSState *env = &cpu->env;
+    CPUMIPSState *env = cpu_env(cs);
     hwaddr physical;
     int prot;
     int ret = TLBRET_BADADDR;
@@ -1346,8 +1345,7 @@ void mips_cpu_do_interrupt(CPUState *cs)
 bool mips_cpu_exec_interrupt(CPUState *cs, int interrupt_request)
 {
     if (interrupt_request & CPU_INTERRUPT_HARD) {
-        MIPSCPU *cpu = MIPS_CPU(cs);
-        CPUMIPSState *env = &cpu->env;
+        CPUMIPSState *env = cpu_env(cs);
 
         if (cpu_mips_hw_interrupts_enabled(env) &&
             cpu_mips_hw_interrupts_pending(env)) {
diff --git a/target/mips/tcg/translate.c b/target/mips/tcg/translate.c
index 13e43fa3b6..e74b98de1c 100644
--- a/target/mips/tcg/translate.c
+++ b/target/mips/tcg/translate.c
@@ -15628,8 +15628,7 @@ void mips_restore_state_to_opc(CPUState *cs,
                                const TranslationBlock *tb,
                                const uint64_t *data)
 {
-    MIPSCPU *cpu = MIPS_CPU(cs);
-    CPUMIPSState *env = &cpu->env;
+    CPUMIPSState *env = cpu_env(cs);
 
     env->active_tc.PC = data[0];
     env->hflags &= ~MIPS_HFLAG_BMASK;
diff --git a/target/nios2/cpu.c b/target/nios2/cpu.c
index a27732bf2b..d98f1e85c5 100644
--- a/target/nios2/cpu.c
+++ b/target/nios2/cpu.c
@@ -28,16 +28,14 @@
 
 static void nios2_cpu_set_pc(CPUState *cs, vaddr value)
 {
-    Nios2CPU *cpu = NIOS2_CPU(cs);
-    CPUNios2State *env = &cpu->env;
+    CPUNios2State *env = cpu_env(cs);
 
     env->pc = value;
 }
 
 static vaddr nios2_cpu_get_pc(CPUState *cs)
 {
-    Nios2CPU *cpu = NIOS2_CPU(cs);
-    CPUNios2State *env = &cpu->env;
+    CPUNios2State *env = cpu_env(cs);
 
     return env->pc;
 }
@@ -46,8 +44,7 @@ static void nios2_restore_state_to_opc(CPUState *cs,
                                        const TranslationBlock *tb,
                                        const uint64_t *data)
 {
-    Nios2CPU *cpu = NIOS2_CPU(cs);
-    CPUNios2State *env = &cpu->env;
+    CPUNios2State *env = cpu_env(cs);
 
     env->pc = data[0];
 }
diff --git a/target/nios2/helper.c b/target/nios2/helper.c
index bb3b09e5a7..ac57121afc 100644
--- a/target/nios2/helper.c
+++ b/target/nios2/helper.c
@@ -287,8 +287,7 @@ void nios2_cpu_do_unaligned_access(CPUState *cs, vaddr addr,
                                    MMUAccessType access_type,
                                    int mmu_idx, uintptr_t retaddr)
 {
-    Nios2CPU *cpu = NIOS2_CPU(cs);
-    CPUNios2State *env = &cpu->env;
+    CPUNios2State *env = cpu_env(cs);
 
     env->ctrl[CR_BADADDR] = addr;
     cs->exception_index = EXCP_UNALIGN;
diff --git a/target/nios2/nios2-semi.c b/target/nios2/nios2-semi.c
index 0b84fcb6b6..420702e293 100644
--- a/target/nios2/nios2-semi.c
+++ b/target/nios2/nios2-semi.c
@@ -75,8 +75,7 @@ static int host_to_gdb_errno(int err)
 
 static void nios2_semi_u32_cb(CPUState *cs, uint64_t ret, int err)
 {
-    Nios2CPU *cpu = NIOS2_CPU(cs);
-    CPUNios2State *env = &cpu->env;
+    CPUNios2State *env = cpu_env(cs);
     target_ulong args = env->regs[R_ARG1];
 
     if (put_user_u32(ret, args) ||
@@ -93,8 +92,7 @@ static void nios2_semi_u32_cb(CPUState *cs, uint64_t ret, int err)
 
 static void nios2_semi_u64_cb(CPUState *cs, uint64_t ret, int err)
 {
-    Nios2CPU *cpu = NIOS2_CPU(cs);
-    CPUNios2State *env = &cpu->env;
+    CPUNios2State *env = cpu_env(cs);
     target_ulong args = env->regs[R_ARG1];
 
     if (put_user_u32(ret >> 32, args) ||
diff --git a/target/openrisc/gdbstub.c b/target/openrisc/gdbstub.c
index d1074a0581..0cce8d4f92 100644
--- a/target/openrisc/gdbstub.c
+++ b/target/openrisc/gdbstub.c
@@ -23,8 +23,7 @@
 
 int openrisc_cpu_gdb_read_register(CPUState *cs, GByteArray *mem_buf, int n)
 {
-    OpenRISCCPU *cpu = OPENRISC_CPU(cs);
-    CPUOpenRISCState *env = &cpu->env;
+    CPUOpenRISCState *env = cpu_env(cs);
 
     if (n < 32) {
         return gdb_get_reg32(mem_buf, cpu_get_gpr(env, n));
diff --git a/target/openrisc/interrupt.c b/target/openrisc/interrupt.c
index d4fdb8ce8e..b3b5b40577 100644
--- a/target/openrisc/interrupt.c
+++ b/target/openrisc/interrupt.c
@@ -29,8 +29,7 @@
 
 void openrisc_cpu_do_interrupt(CPUState *cs)
 {
-    OpenRISCCPU *cpu = OPENRISC_CPU(cs);
-    CPUOpenRISCState *env = &cpu->env;
+    CPUOpenRISCState *env = cpu_env(cs);
     int exception = cs->exception_index;
 
     env->epcr = env->pc;
@@ -105,8 +104,7 @@ void openrisc_cpu_do_interrupt(CPUState *cs)
 
 bool openrisc_cpu_exec_interrupt(CPUState *cs, int interrupt_request)
 {
-    OpenRISCCPU *cpu = OPENRISC_CPU(cs);
-    CPUOpenRISCState *env = &cpu->env;
+    CPUOpenRISCState *env = cpu_env(cs);
     int idx = -1;
 
     if ((interrupt_request & CPU_INTERRUPT_HARD) && (env->sr & SR_IEE)) {
diff --git a/target/openrisc/translate.c b/target/openrisc/translate.c
index ecff4412b7..aff53c0065 100644
--- a/target/openrisc/translate.c
+++ b/target/openrisc/translate.c
@@ -1668,8 +1668,7 @@ void gen_intermediate_code(CPUState *cs, TranslationBlock *tb, int *max_insns,
 
 void openrisc_cpu_dump_state(CPUState *cs, FILE *f, int flags)
 {
-    OpenRISCCPU *cpu = OPENRISC_CPU(cs);
-    CPUOpenRISCState *env = &cpu->env;
+    CPUOpenRISCState *env = cpu_env(cs);
     int i;
 
     qemu_fprintf(f, "PC=%08x\n", env->pc);
diff --git a/target/ppc/cpu_init.c b/target/ppc/cpu_init.c
index 344196a8ce..f14ca2bd25 100644
--- a/target/ppc/cpu_init.c
+++ b/target/ppc/cpu_init.c
@@ -7195,8 +7195,7 @@ static void ppc_cpu_reset_hold(Object *obj)
 
 static bool ppc_cpu_is_big_endian(CPUState *cs)
 {
-    PowerPCCPU *cpu = POWERPC_CPU(cs);
-    CPUPPCState *env = &cpu->env;
+    CPUPPCState *env = cpu_env(cs);
 
     cpu_synchronize_state(cs);
 
@@ -7287,8 +7286,7 @@ static bool ppc_pvr_match_default(PowerPCCPUClass *pcc, uint32_t pvr, bool best)
 
 static void ppc_disas_set_info(CPUState *cs, disassemble_info *info)
 {
-    PowerPCCPU *cpu = POWERPC_CPU(cs);
-    CPUPPCState *env = &cpu->env;
+    CPUPPCState *env = cpu_env(cs);
 
     if ((env->hflags >> MSR_LE) & 1) {
         info->endian = BFD_ENDIAN_LITTLE;
@@ -7446,8 +7444,7 @@ void ppc_cpu_dump_state(CPUState *cs, FILE *f, int flags)
 #define RGPL  4
 #define RFPL  4
 
-    PowerPCCPU *cpu = POWERPC_CPU(cs);
-    CPUPPCState *env = &cpu->env;
+    CPUPPCState *env = cpu_env(cs);
     int i;
 
     qemu_fprintf(f, "NIP " TARGET_FMT_lx "   LR " TARGET_FMT_lx " CTR "
diff --git a/target/ppc/excp_helper.c b/target/ppc/excp_helper.c
index 2ec6429e36..fccfefa88e 100644
--- a/target/ppc/excp_helper.c
+++ b/target/ppc/excp_helper.c
@@ -2588,8 +2588,7 @@ void ppc_cpu_do_fwnmi_machine_check(CPUState *cs, target_ulong vector)
 
 bool ppc_cpu_exec_interrupt(CPUState *cs, int interrupt_request)
 {
-    PowerPCCPU *cpu = POWERPC_CPU(cs);
-    CPUPPCState *env = &cpu->env;
+    CPUPPCState *env = cpu_env(cs);
     int interrupt;
 
     if ((interrupt_request & CPU_INTERRUPT_HARD) == 0) {
diff --git a/target/ppc/gdbstub.c b/target/ppc/gdbstub.c
index ec5731e5d6..fd986b1922 100644
--- a/target/ppc/gdbstub.c
+++ b/target/ppc/gdbstub.c
@@ -108,8 +108,7 @@ void ppc_maybe_bswap_register(CPUPPCState *env, uint8_t *mem_buf, int len)
 
 int ppc_cpu_gdb_read_register(CPUState *cs, GByteArray *buf, int n)
 {
-    PowerPCCPU *cpu = POWERPC_CPU(cs);
-    CPUPPCState *env = &cpu->env;
+    CPUPPCState *env = cpu_env(cs);
     uint8_t *mem_buf;
     int r = ppc_gdb_register_len(n);
 
@@ -152,8 +151,7 @@ int ppc_cpu_gdb_read_register(CPUState *cs, GByteArray *buf, int n)
 
 int ppc_cpu_gdb_read_register_apple(CPUState *cs, GByteArray *buf, int n)
 {
-    PowerPCCPU *cpu = POWERPC_CPU(cs);
-    CPUPPCState *env = &cpu->env;
+    CPUPPCState *env = cpu_env(cs);
     uint8_t *mem_buf;
     int r = ppc_gdb_register_len_apple(n);
 
@@ -206,8 +204,7 @@ int ppc_cpu_gdb_read_register_apple(CPUState *cs, GByteArray *buf, int n)
 
 int ppc_cpu_gdb_write_register(CPUState *cs, uint8_t *mem_buf, int n)
 {
-    PowerPCCPU *cpu = POWERPC_CPU(cs);
-    CPUPPCState *env = &cpu->env;
+    CPUPPCState *env = cpu_env(cs);
     int r = ppc_gdb_register_len(n);
 
     if (!r) {
@@ -253,8 +250,7 @@ int ppc_cpu_gdb_write_register(CPUState *cs, uint8_t *mem_buf, int n)
 }
 int ppc_cpu_gdb_write_register_apple(CPUState *cs, uint8_t *mem_buf, int n)
 {
-    PowerPCCPU *cpu = POWERPC_CPU(cs);
-    CPUPPCState *env = &cpu->env;
+    CPUPPCState *env = cpu_env(cs);
     int r = ppc_gdb_register_len_apple(n);
 
     if (!r) {
diff --git a/target/ppc/kvm.c b/target/ppc/kvm.c
index 26fa9d0575..7a0651b0af 100644
--- a/target/ppc/kvm.c
+++ b/target/ppc/kvm.c
@@ -546,8 +546,7 @@ static void kvm_sw_tlb_put(PowerPCCPU *cpu)
 
 static void kvm_get_one_spr(CPUState *cs, uint64_t id, int spr)
 {
-    PowerPCCPU *cpu = POWERPC_CPU(cs);
-    CPUPPCState *env = &cpu->env;
+    CPUPPCState *env = cpu_env(cs);
     /* Init 'val' to avoid "uninitialised value" Valgrind warnings */
     union {
         uint32_t u32;
@@ -581,8 +580,7 @@ static void kvm_get_one_spr(CPUState *cs, uint64_t id, int spr)
 
 static void kvm_put_one_spr(CPUState *cs, uint64_t id, int spr)
 {
-    PowerPCCPU *cpu = POWERPC_CPU(cs);
-    CPUPPCState *env = &cpu->env;
+    CPUPPCState *env = cpu_env(cs);
     union {
         uint32_t u32;
         uint64_t u64;
diff --git a/target/ppc/ppc-qmp-cmds.c b/target/ppc/ppc-qmp-cmds.c
index c0c137d9d7..9ac74f5c04 100644
--- a/target/ppc/ppc-qmp-cmds.c
+++ b/target/ppc/ppc-qmp-cmds.c
@@ -133,8 +133,7 @@ static int ppc_cpu_get_reg_num(const char *numstr, int maxnum, int *pregnum)
 int target_get_monitor_def(CPUState *cs, const char *name, uint64_t *pval)
 {
     int i, regnum;
-    PowerPCCPU *cpu = POWERPC_CPU(cs);
-    CPUPPCState *env = &cpu->env;
+    CPUPPCState *env = cpu_env(cs);
 
     /* General purpose registers */
     if ((qemu_tolower(name[0]) == 'r') &&
diff --git a/target/ppc/user_only_helper.c b/target/ppc/user_only_helper.c
index 7ff76f7a06..a4d07a0d0d 100644
--- a/target/ppc/user_only_helper.c
+++ b/target/ppc/user_only_helper.c
@@ -27,8 +27,7 @@ void ppc_cpu_record_sigsegv(CPUState *cs, vaddr address,
                             MMUAccessType access_type,
                             bool maperr, uintptr_t retaddr)
 {
-    PowerPCCPU *cpu = POWERPC_CPU(cs);
-    CPUPPCState *env = &cpu->env;
+    CPUPPCState *env = cpu_env(cs);
     int exception, error_code;
 
     /*
diff --git a/target/riscv/arch_dump.c b/target/riscv/arch_dump.c
index 434c8a3dbb..994709647f 100644
--- a/target/riscv/arch_dump.c
+++ b/target/riscv/arch_dump.c
@@ -68,8 +68,7 @@ int riscv_cpu_write_elf64_note(WriteCoreDumpFunction f, CPUState *cs,
                                int cpuid, DumpState *s)
 {
     struct riscv64_note note;
-    RISCVCPU *cpu = RISCV_CPU(cs);
-    CPURISCVState *env = &cpu->env;
+    CPURISCVState *env = cpu_env(cs);
     int ret, i = 0;
     const char name[] = "CORE";
 
@@ -137,8 +136,7 @@ int riscv_cpu_write_elf32_note(WriteCoreDumpFunction f, CPUState *cs,
                                int cpuid, DumpState *s)
 {
     struct riscv32_note note;
-    RISCVCPU *cpu = RISCV_CPU(cs);
-    CPURISCVState *env = &cpu->env;
+    CPURISCVState *env = cpu_env(cs);
     int ret, i;
     const char name[] = "CORE";
 
diff --git a/target/riscv/cpu.c b/target/riscv/cpu.c
index 8cbfc7e781..bb58acfa37 100644
--- a/target/riscv/cpu.c
+++ b/target/riscv/cpu.c
@@ -419,8 +419,7 @@ static void riscv_any_cpu_init(Object *obj)
 
 static void riscv_max_cpu_init(Object *obj)
 {
-    RISCVCPU *cpu = RISCV_CPU(obj);
-    CPURISCVState *env = &cpu->env;
+    CPURISCVState *env = cpu_env(CPU(obj));
     RISCVMXL mlx = MXL_RV64;
 
 #ifdef TARGET_RISCV32
@@ -828,8 +827,7 @@ static void riscv_cpu_dump_state(CPUState *cs, FILE *f, int flags)
 
 static void riscv_cpu_set_pc(CPUState *cs, vaddr value)
 {
-    RISCVCPU *cpu = RISCV_CPU(cs);
-    CPURISCVState *env = &cpu->env;
+    CPURISCVState *env = cpu_env(cs);
 
     if (env->xl == MXL_RV32) {
         env->pc = (int32_t)value;
@@ -840,8 +838,7 @@ static void riscv_cpu_set_pc(CPUState *cs, vaddr value)
 
 static vaddr riscv_cpu_get_pc(CPUState *cs)
 {
-    RISCVCPU *cpu = RISCV_CPU(cs);
-    CPURISCVState *env = &cpu->env;
+    CPURISCVState *env = cpu_env(cs);
 
     /* Match cpu_get_tb_cpu_state. */
     if (env->xl == MXL_RV32) {
@@ -853,8 +850,7 @@ static vaddr riscv_cpu_get_pc(CPUState *cs)
 static bool riscv_cpu_has_work(CPUState *cs)
 {
 #ifndef CONFIG_USER_ONLY
-    RISCVCPU *cpu = RISCV_CPU(cs);
-    CPURISCVState *env = &cpu->env;
+    CPURISCVState *env = cpu_env(cs);
     /*
      * Definition of the WFI instruction requires it to ignore the privilege
      * mode and delegation registers, but respect individual enables
@@ -1642,8 +1638,7 @@ static void rva22s64_profile_cpu_init(Object *obj)
 
 static const gchar *riscv_gdb_arch_name(CPUState *cs)
 {
-    RISCVCPU *cpu = RISCV_CPU(cs);
-    CPURISCVState *env = &cpu->env;
+    CPURISCVState *env = cpu_env(cs);
 
     switch (riscv_cpu_mxl(env)) {
     case MXL_RV32:
diff --git a/target/riscv/cpu_helper.c b/target/riscv/cpu_helper.c
index c7cc7eb423..5c3ed07aeb 100644
--- a/target/riscv/cpu_helper.c
+++ b/target/riscv/cpu_helper.c
@@ -493,8 +493,7 @@ static int riscv_cpu_local_irq_pending(CPURISCVState *env)
 bool riscv_cpu_exec_interrupt(CPUState *cs, int interrupt_request)
 {
     if (interrupt_request & CPU_INTERRUPT_HARD) {
-        RISCVCPU *cpu = RISCV_CPU(cs);
-        CPURISCVState *env = &cpu->env;
+        CPURISCVState *env = cpu_env(cs);
         int interruptno = riscv_cpu_local_irq_pending(env);
         if (interruptno >= 0) {
             cs->exception_index = RISCV_EXCP_INT_FLAG | interruptno;
@@ -1223,8 +1222,7 @@ void riscv_cpu_do_transaction_failed(CPUState *cs, hwaddr physaddr,
                                      int mmu_idx, MemTxAttrs attrs,
                                      MemTxResult response, uintptr_t retaddr)
 {
-    RISCVCPU *cpu = RISCV_CPU(cs);
-    CPURISCVState *env = &cpu->env;
+    CPURISCVState *env = cpu_env(cs);
 
     if (access_type == MMU_DATA_STORE) {
         cs->exception_index = RISCV_EXCP_STORE_AMO_ACCESS_FAULT;
@@ -1244,8 +1242,7 @@ void riscv_cpu_do_unaligned_access(CPUState *cs, vaddr addr,
                                    MMUAccessType access_type, int mmu_idx,
                                    uintptr_t retaddr)
 {
-    RISCVCPU *cpu = RISCV_CPU(cs);
-    CPURISCVState *env = &cpu->env;
+    CPURISCVState *env = cpu_env(cs);
     switch (access_type) {
     case MMU_INST_FETCH:
         cs->exception_index = RISCV_EXCP_INST_ADDR_MIS;
@@ -1631,9 +1628,7 @@ static target_ulong riscv_transformed_insn(CPURISCVState *env,
 void riscv_cpu_do_interrupt(CPUState *cs)
 {
 #if !defined(CONFIG_USER_ONLY)
-
-    RISCVCPU *cpu = RISCV_CPU(cs);
-    CPURISCVState *env = &cpu->env;
+    CPURISCVState *env = cpu_env(cs);
     bool write_gva = false;
     uint64_t s;
 
diff --git a/target/riscv/debug.c b/target/riscv/debug.c
index 4945d1a1f2..c8df9812be 100644
--- a/target/riscv/debug.c
+++ b/target/riscv/debug.c
@@ -757,8 +757,7 @@ target_ulong tinfo_csr_read(CPURISCVState *env)
 
 void riscv_cpu_debug_excp_handler(CPUState *cs)
 {
-    RISCVCPU *cpu = RISCV_CPU(cs);
-    CPURISCVState *env = &cpu->env;
+    CPURISCVState *env = cpu_env(cs);
 
     if (cs->watchpoint_hit) {
         if (cs->watchpoint_hit->flags & BP_CPU) {
@@ -773,8 +772,7 @@ void riscv_cpu_debug_excp_handler(CPUState *cs)
 
 bool riscv_cpu_debug_check_breakpoint(CPUState *cs)
 {
-    RISCVCPU *cpu = RISCV_CPU(cs);
-    CPURISCVState *env = &cpu->env;
+    CPURISCVState *env = cpu_env(cs);
     CPUBreakpoint *bp;
     target_ulong ctrl;
     target_ulong pc;
@@ -832,8 +830,7 @@ bool riscv_cpu_debug_check_breakpoint(CPUState *cs)
 
 bool riscv_cpu_debug_check_watchpoint(CPUState *cs, CPUWatchpoint *wp)
 {
-    RISCVCPU *cpu = RISCV_CPU(cs);
-    CPURISCVState *env = &cpu->env;
+    CPURISCVState *env = cpu_env(cs);
     target_ulong ctrl;
     target_ulong addr;
     int trigger_type;
diff --git a/target/riscv/gdbstub.c b/target/riscv/gdbstub.c
index 58b3ace0fe..999d815b34 100644
--- a/target/riscv/gdbstub.c
+++ b/target/riscv/gdbstub.c
@@ -49,8 +49,7 @@ static const struct TypeSize vec_lanes[] = {
 
 int riscv_cpu_gdb_read_register(CPUState *cs, GByteArray *mem_buf, int n)
 {
-    RISCVCPU *cpu = RISCV_CPU(cs);
-    CPURISCVState *env = &cpu->env;
+    CPURISCVState *env = cpu_env(cs);
     target_ulong tmp;
 
     if (n < 32) {
@@ -75,8 +74,7 @@ int riscv_cpu_gdb_read_register(CPUState *cs, GByteArray *mem_buf, int n)
 
 int riscv_cpu_gdb_write_register(CPUState *cs, uint8_t *mem_buf, int n)
 {
-    RISCVCPU *cpu = RISCV_CPU(cs);
-    CPURISCVState *env = &cpu->env;
+    CPURISCVState *env = cpu_env(cs);
     int length = 0;
     target_ulong tmp;
 
diff --git a/target/riscv/kvm/kvm-cpu.c b/target/riscv/kvm/kvm-cpu.c
index 680a729cd8..cf0cae813b 100644
--- a/target/riscv/kvm/kvm-cpu.c
+++ b/target/riscv/kvm/kvm-cpu.c
@@ -171,8 +171,7 @@ static void kvm_cpu_get_misa_ext_cfg(Object *obj, Visitor *v,
 {
     KVMCPUConfig *misa_ext_cfg = opaque;
     target_ulong misa_bit = misa_ext_cfg->offset;
-    RISCVCPU *cpu = RISCV_CPU(obj);
-    CPURISCVState *env = &cpu->env;
+    CPURISCVState *env = cpu_env(CPU(obj));
     bool value = env->misa_ext_mask & misa_bit;
 
     visit_type_bool(v, name, &value, errp);
@@ -184,8 +183,7 @@ static void kvm_cpu_set_misa_ext_cfg(Object *obj, Visitor *v,
 {
     KVMCPUConfig *misa_ext_cfg = opaque;
     target_ulong misa_bit = misa_ext_cfg->offset;
-    RISCVCPU *cpu = RISCV_CPU(obj);
-    CPURISCVState *env = &cpu->env;
+    CPURISCVState *env = cpu_env(CPU(obj));
     bool value, host_bit;
 
     if (!visit_type_bool(v, name, &value, errp)) {
diff --git a/target/riscv/tcg/tcg-cpu.c b/target/riscv/tcg/tcg-cpu.c
index 994ca1cdf9..c7c4d9ac92 100644
--- a/target/riscv/tcg/tcg-cpu.c
+++ b/target/riscv/tcg/tcg-cpu.c
@@ -92,8 +92,7 @@ static void riscv_cpu_synchronize_from_tb(CPUState *cs,
                                           const TranslationBlock *tb)
 {
     if (!(tb_cflags(tb) & CF_PCREL)) {
-        RISCVCPU *cpu = RISCV_CPU(cs);
-        CPURISCVState *env = &cpu->env;
+        CPURISCVState *env = cpu_env(cs);
         RISCVMXL xl = FIELD_EX32(tb->flags, TB_FLAGS, XL);
 
         tcg_debug_assert(!(cs->tcg_cflags & CF_PCREL));
@@ -110,8 +109,7 @@ static void riscv_restore_state_to_opc(CPUState *cs,
                                        const TranslationBlock *tb,
                                        const uint64_t *data)
 {
-    RISCVCPU *cpu = RISCV_CPU(cs);
-    CPURISCVState *env = &cpu->env;
+    CPURISCVState *env = cpu_env(cs);
     RISCVMXL xl = FIELD_EX32(tb->flags, TB_FLAGS, XL);
     target_ulong pc;
 
@@ -1030,8 +1028,7 @@ static void cpu_get_misa_ext_cfg(Object *obj, Visitor *v, const char *name,
 {
     const RISCVCPUMisaExtConfig *misa_ext_cfg = opaque;
     target_ulong misa_bit = misa_ext_cfg->misa_bit;
-    RISCVCPU *cpu = RISCV_CPU(obj);
-    CPURISCVState *env = &cpu->env;
+    CPURISCVState *env = cpu_env(CPU(obj));
     bool value;
 
     value = env->misa_ext & misa_bit;
diff --git a/target/riscv/translate.c b/target/riscv/translate.c
index 071fbad7ef..e94fb107e0 100644
--- a/target/riscv/translate.c
+++ b/target/riscv/translate.c
@@ -1265,8 +1265,7 @@ static void riscv_tr_disas_log(const DisasContextBase *dcbase,
                                CPUState *cpu, FILE *logfile)
 {
 #ifndef CONFIG_USER_ONLY
-    RISCVCPU *rvcpu = RISCV_CPU(cpu);
-    CPURISCVState *env = &rvcpu->env;
+    CPURISCVState *env = cpu_env(cpu);
 #endif
 
     fprintf(logfile, "IN: %s\n", lookup_symbol(dcbase->pc_first));
diff --git a/target/rx/gdbstub.c b/target/rx/gdbstub.c
index d7e0e6689b..f222bf003b 100644
--- a/target/rx/gdbstub.c
+++ b/target/rx/gdbstub.c
@@ -21,8 +21,7 @@
 
 int rx_cpu_gdb_read_register(CPUState *cs, GByteArray *mem_buf, int n)
 {
-    RXCPU *cpu = RX_CPU(cs);
-    CPURXState *env = &cpu->env;
+    CPURXState *env = cpu_env(cs);
 
     switch (n) {
     case 0 ... 15:
@@ -53,8 +52,7 @@ int rx_cpu_gdb_read_register(CPUState *cs, GByteArray *mem_buf, int n)
 
 int rx_cpu_gdb_write_register(CPUState *cs, uint8_t *mem_buf, int n)
 {
-    RXCPU *cpu = RX_CPU(cs);
-    CPURXState *env = &cpu->env;
+    CPURXState *env = cpu_env(cs);
     uint32_t psw;
     switch (n) {
     case 0 ... 15:
diff --git a/target/rx/helper.c b/target/rx/helper.c
index dad5fb4976..80912e8dcb 100644
--- a/target/rx/helper.c
+++ b/target/rx/helper.c
@@ -45,8 +45,7 @@ void rx_cpu_unpack_psw(CPURXState *env, uint32_t psw, int rte)
 #define INT_FLAGS (CPU_INTERRUPT_HARD | CPU_INTERRUPT_FIR)
 void rx_cpu_do_interrupt(CPUState *cs)
 {
-    RXCPU *cpu = RX_CPU(cs);
-    CPURXState *env = &cpu->env;
+    CPURXState *env = cpu_env(cs);
     int do_irq = cs->interrupt_request & INT_FLAGS;
     uint32_t save_psw;
 
@@ -122,8 +121,7 @@ void rx_cpu_do_interrupt(CPUState *cs)
 
 bool rx_cpu_exec_interrupt(CPUState *cs, int interrupt_request)
 {
-    RXCPU *cpu = RX_CPU(cs);
-    CPURXState *env = &cpu->env;
+    CPURXState *env = cpu_env(cs);
     int accept = 0;
     /* hardware interrupt (Normal) */
     if ((interrupt_request & CPU_INTERRUPT_HARD) &&
diff --git a/target/rx/translate.c b/target/rx/translate.c
index c6ce717a95..8d8d9a4677 100644
--- a/target/rx/translate.c
+++ b/target/rx/translate.c
@@ -131,8 +131,7 @@ static int bdsp_s(DisasContext *ctx, int d)
 
 void rx_cpu_dump_state(CPUState *cs, FILE *f, int flags)
 {
-    RXCPU *cpu = RX_CPU(cs);
-    CPURXState *env = &cpu->env;
+    CPURXState *env = cpu_env(cs);
     int i;
     uint32_t psw;
 
diff --git a/target/s390x/cpu-dump.c b/target/s390x/cpu-dump.c
index ffa9e94d84..69cc9f7746 100644
--- a/target/s390x/cpu-dump.c
+++ b/target/s390x/cpu-dump.c
@@ -27,8 +27,7 @@
 
 void s390_cpu_dump_state(CPUState *cs, FILE *f, int flags)
 {
-    S390CPU *cpu = S390_CPU(cs);
-    CPUS390XState *env = &cpu->env;
+    CPUS390XState *env = cpu_env(cs);
     int i;
 
     qemu_fprintf(f, "PSW=mask %016" PRIx64 " addr %016" PRIx64,
diff --git a/target/s390x/gdbstub.c b/target/s390x/gdbstub.c
index 6fbfd41bc8..f02fa316e5 100644
--- a/target/s390x/gdbstub.c
+++ b/target/s390x/gdbstub.c
@@ -30,8 +30,7 @@
 
 int s390_cpu_gdb_read_register(CPUState *cs, GByteArray *mem_buf, int n)
 {
-    S390CPU *cpu = S390_CPU(cs);
-    CPUS390XState *env = &cpu->env;
+    CPUS390XState *env = cpu_env(cs);
 
     switch (n) {
     case S390_PSWM_REGNUM:
@@ -46,8 +45,7 @@ int s390_cpu_gdb_read_register(CPUState *cs, GByteArray *mem_buf, int n)
 
 int s390_cpu_gdb_write_register(CPUState *cs, uint8_t *mem_buf, int n)
 {
-    S390CPU *cpu = S390_CPU(cs);
-    CPUS390XState *env = &cpu->env;
+    CPUS390XState *env = cpu_env(cs);
     target_ulong tmpl = ldtul_p(mem_buf);
 
     switch (n) {
diff --git a/target/s390x/helper.c b/target/s390x/helper.c
index d76c06381b..00d5d403f3 100644
--- a/target/s390x/helper.c
+++ b/target/s390x/helper.c
@@ -139,8 +139,7 @@ void do_restart_interrupt(CPUS390XState *env)
 void s390_cpu_recompute_watchpoints(CPUState *cs)
 {
     const int wp_flags = BP_CPU | BP_MEM_WRITE | BP_STOP_BEFORE_ACCESS;
-    S390CPU *cpu = S390_CPU(cs);
-    CPUS390XState *env = &cpu->env;
+    CPUS390XState *env = cpu_env(cs);
 
     /* We are called when the watchpoints have changed. First
        remove them all.  */
diff --git a/target/s390x/kvm/kvm.c b/target/s390x/kvm/kvm.c
index 888d6c1a1c..4ce809c5d4 100644
--- a/target/s390x/kvm/kvm.c
+++ b/target/s390x/kvm/kvm.c
@@ -474,8 +474,7 @@ static int can_sync_regs(CPUState *cs, int regs)
 
 int kvm_arch_put_registers(CPUState *cs, int level)
 {
-    S390CPU *cpu = S390_CPU(cs);
-    CPUS390XState *env = &cpu->env;
+    CPUS390XState *env = cpu_env(cs);
     struct kvm_fpu fpu = {};
     int r;
     int i;
@@ -601,8 +600,7 @@ int kvm_arch_put_registers(CPUState *cs, int level)
 
 int kvm_arch_get_registers(CPUState *cs)
 {
-    S390CPU *cpu = S390_CPU(cs);
-    CPUS390XState *env = &cpu->env;
+    CPUS390XState *env = cpu_env(cs);
     struct kvm_fpu fpu;
     int i, r;
 
diff --git a/target/s390x/tcg/excp_helper.c b/target/s390x/tcg/excp_helper.c
index b875bf14e5..0f48bcfdba 100644
--- a/target/s390x/tcg/excp_helper.c
+++ b/target/s390x/tcg/excp_helper.c
@@ -90,8 +90,7 @@ void HELPER(data_exception)(CPUS390XState *env, uint32_t dxc)
 static G_NORETURN
 void do_unaligned_access(CPUState *cs, uintptr_t retaddr)
 {
-    S390CPU *cpu = S390_CPU(cs);
-    CPUS390XState *env = &cpu->env;
+    CPUS390XState *env = cpu_env(cs);
 
     tcg_s390_program_interrupt(env, PGM_SPECIFICATION, retaddr);
 }
@@ -146,8 +145,7 @@ bool s390_cpu_tlb_fill(CPUState *cs, vaddr address, int size,
                        MMUAccessType access_type, int mmu_idx,
                        bool probe, uintptr_t retaddr)
 {
-    S390CPU *cpu = S390_CPU(cs);
-    CPUS390XState *env = &cpu->env;
+    CPUS390XState *env = cpu_env(cs);
     target_ulong vaddr, raddr;
     uint64_t asc, tec;
     int prot, excp;
@@ -600,8 +598,7 @@ bool s390_cpu_exec_interrupt(CPUState *cs, int interrupt_request)
 
 void s390x_cpu_debug_excp_handler(CPUState *cs)
 {
-    S390CPU *cpu = S390_CPU(cs);
-    CPUS390XState *env = &cpu->env;
+    CPUS390XState *env = cpu_env(cs);
     CPUWatchpoint *wp_hit = cs->watchpoint_hit;
 
     if (wp_hit && wp_hit->flags & BP_CPU) {
diff --git a/target/s390x/tcg/translate.c b/target/s390x/tcg/translate.c
index 8df00b7df9..9995689bc8 100644
--- a/target/s390x/tcg/translate.c
+++ b/target/s390x/tcg/translate.c
@@ -6558,8 +6558,7 @@ void s390x_restore_state_to_opc(CPUState *cs,
                                 const TranslationBlock *tb,
                                 const uint64_t *data)
 {
-    S390CPU *cpu = S390_CPU(cs);
-    CPUS390XState *env = &cpu->env;
+    CPUS390XState *env = cpu_env(cs);
     int cc_op = data[1];
 
     env->psw.addr = data[0];
diff --git a/target/sh4/cpu.c b/target/sh4/cpu.c
index 806a0ef875..786c77615e 100644
--- a/target/sh4/cpu.c
+++ b/target/sh4/cpu.c
@@ -71,8 +71,7 @@ static void superh_restore_state_to_opc(CPUState *cs,
 static bool superh_io_recompile_replay_branch(CPUState *cs,
                                               const TranslationBlock *tb)
 {
-    SuperHCPU *cpu = SUPERH_CPU(cs);
-    CPUSH4State *env = &cpu->env;
+    CPUSH4State *env = cpu_env(cs);
 
     if ((env->flags & (TB_FLAG_DELAY_SLOT | TB_FLAG_DELAY_SLOT_COND))
         && !(cs->tcg_cflags & CF_PCREL) && env->pc != tb->pc) {
@@ -144,8 +143,7 @@ out:
 
 static void sh7750r_cpu_initfn(Object *obj)
 {
-    SuperHCPU *cpu = SUPERH_CPU(obj);
-    CPUSH4State *env = &cpu->env;
+    CPUSH4State *env = cpu_env(CPU(obj));
 
     env->id = SH_CPU_SH7750R;
     env->features = SH_FEATURE_BCR3_AND_BCR4;
@@ -162,8 +160,7 @@ static void sh7750r_class_init(ObjectClass *oc, void *data)
 
 static void sh7751r_cpu_initfn(Object *obj)
 {
-    SuperHCPU *cpu = SUPERH_CPU(obj);
-    CPUSH4State *env = &cpu->env;
+    CPUSH4State *env = cpu_env(CPU(obj));
 
     env->id = SH_CPU_SH7751R;
     env->features = SH_FEATURE_BCR3_AND_BCR4;
@@ -180,8 +177,7 @@ static void sh7751r_class_init(ObjectClass *oc, void *data)
 
 static void sh7785_cpu_initfn(Object *obj)
 {
-    SuperHCPU *cpu = SUPERH_CPU(obj);
-    CPUSH4State *env = &cpu->env;
+    CPUSH4State *env = cpu_env(CPU(obj));
 
     env->id = SH_CPU_SH7785;
     env->features = SH_FEATURE_SH4A;
@@ -216,8 +212,7 @@ static void superh_cpu_realizefn(DeviceState *dev, Error **errp)
 
 static void superh_cpu_initfn(Object *obj)
 {
-    SuperHCPU *cpu = SUPERH_CPU(obj);
-    CPUSH4State *env = &cpu->env;
+    CPUSH4State *env = cpu_env(CPU(obj));
 
     env->movcal_backup_tail = &(env->movcal_backup);
 }
diff --git a/target/sh4/gdbstub.c b/target/sh4/gdbstub.c
index d8e199fc06..75926d4e04 100644
--- a/target/sh4/gdbstub.c
+++ b/target/sh4/gdbstub.c
@@ -26,8 +26,7 @@
 
 int superh_cpu_gdb_read_register(CPUState *cs, GByteArray *mem_buf, int n)
 {
-    SuperHCPU *cpu = SUPERH_CPU(cs);
-    CPUSH4State *env = &cpu->env;
+    CPUSH4State *env = cpu_env(cs);
 
     switch (n) {
     case 0 ... 7:
@@ -76,8 +75,7 @@ int superh_cpu_gdb_read_register(CPUState *cs, GByteArray *mem_buf, int n)
 
 int superh_cpu_gdb_write_register(CPUState *cs, uint8_t *mem_buf, int n)
 {
-    SuperHCPU *cpu = SUPERH_CPU(cs);
-    CPUSH4State *env = &cpu->env;
+    CPUSH4State *env = cpu_env(cs);
 
     switch (n) {
     case 0 ... 7:
diff --git a/target/sh4/helper.c b/target/sh4/helper.c
index 5a6f653c12..86857c86f7 100644
--- a/target/sh4/helper.c
+++ b/target/sh4/helper.c
@@ -55,8 +55,7 @@ int cpu_sh4_is_cached(CPUSH4State *env, target_ulong addr)
 
 void superh_cpu_do_interrupt(CPUState *cs)
 {
-    SuperHCPU *cpu = SUPERH_CPU(cs);
-    CPUSH4State *env = &cpu->env;
+    CPUSH4State *env = cpu_env(cs);
     int do_irq = cs->interrupt_request & CPU_INTERRUPT_HARD;
     int do_exp, irq_vector = cs->exception_index;
 
@@ -782,8 +781,7 @@ int cpu_sh4_is_cached(CPUSH4State * env, target_ulong addr)
 bool superh_cpu_exec_interrupt(CPUState *cs, int interrupt_request)
 {
     if (interrupt_request & CPU_INTERRUPT_HARD) {
-        SuperHCPU *cpu = SUPERH_CPU(cs);
-        CPUSH4State *env = &cpu->env;
+        CPUSH4State *env = cpu_env(cs);
 
         /* Delay slots are indivisible, ignore interrupts */
         if (env->flags & TB_FLAG_DELAY_SLOT_MASK) {
@@ -800,8 +798,7 @@ bool superh_cpu_tlb_fill(CPUState *cs, vaddr address, int size,
                          MMUAccessType access_type, int mmu_idx,
                          bool probe, uintptr_t retaddr)
 {
-    SuperHCPU *cpu = SUPERH_CPU(cs);
-    CPUSH4State *env = &cpu->env;
+    CPUSH4State *env = cpu_env(cs);
     int ret;
 
     target_ulong physical;
diff --git a/target/sh4/translate.c b/target/sh4/translate.c
index 81f825f125..4a933adad8 100644
--- a/target/sh4/translate.c
+++ b/target/sh4/translate.c
@@ -159,8 +159,7 @@ void sh4_translate_init(void)
 
 void superh_cpu_dump_state(CPUState *cs, FILE *f, int flags)
 {
-    SuperHCPU *cpu = SUPERH_CPU(cs);
-    CPUSH4State *env = &cpu->env;
+    CPUSH4State *env = cpu_env(cs);
     int i;
 
     qemu_fprintf(f, "pc=0x%08x sr=0x%08x pr=0x%08x fpscr=0x%08x\n",
diff --git a/target/sparc/cpu.c b/target/sparc/cpu.c
index befa7fc4eb..941273e833 100644
--- a/target/sparc/cpu.c
+++ b/target/sparc/cpu.c
@@ -83,8 +83,7 @@ static void sparc_cpu_reset_hold(Object *obj)
 static bool sparc_cpu_exec_interrupt(CPUState *cs, int interrupt_request)
 {
     if (interrupt_request & CPU_INTERRUPT_HARD) {
-        SPARCCPU *cpu = SPARC_CPU(cs);
-        CPUSPARCState *env = &cpu->env;
+        CPUSPARCState *env = cpu_env(cs);
 
         if (cpu_interrupts_enabled(env) && env->interrupt_index > 0) {
             int pil = env->interrupt_index & 0xf;
@@ -613,8 +612,7 @@ static void cpu_print_cc(FILE *f, uint32_t cc)
 
 static void sparc_cpu_dump_state(CPUState *cs, FILE *f, int flags)
 {
-    SPARCCPU *cpu = SPARC_CPU(cs);
-    CPUSPARCState *env = &cpu->env;
+    CPUSPARCState *env = cpu_env(cs);
     int i, x;
 
     qemu_fprintf(f, "pc: " TARGET_FMT_lx "  npc: " TARGET_FMT_lx "\n", env->pc,
@@ -711,8 +709,7 @@ static void sparc_cpu_synchronize_from_tb(CPUState *cs,
 
 static bool sparc_cpu_has_work(CPUState *cs)
 {
-    SPARCCPU *cpu = SPARC_CPU(cs);
-    CPUSPARCState *env = &cpu->env;
+    CPUSPARCState *env = cpu_env(cs);
 
     return (cs->interrupt_request & CPU_INTERRUPT_HARD) &&
            cpu_interrupts_enabled(env);
@@ -749,8 +746,7 @@ static void sparc_cpu_realizefn(DeviceState *dev, Error **errp)
     CPUState *cs = CPU(dev);
     SPARCCPUClass *scc = SPARC_CPU_GET_CLASS(dev);
     Error *local_err = NULL;
-    SPARCCPU *cpu = SPARC_CPU(dev);
-    CPUSPARCState *env = &cpu->env;
+    CPUSPARCState *env = cpu_env(CPU(dev));
 
 #if defined(CONFIG_USER_ONLY)
     /* We are emulating the kernel, which will trap and emulate float128. */
diff --git a/target/sparc/gdbstub.c b/target/sparc/gdbstub.c
index a1c8fdc4d5..5257c49a0d 100644
--- a/target/sparc/gdbstub.c
+++ b/target/sparc/gdbstub.c
@@ -29,8 +29,7 @@
 
 int sparc_cpu_gdb_read_register(CPUState *cs, GByteArray *mem_buf, int n)
 {
-    SPARCCPU *cpu = SPARC_CPU(cs);
-    CPUSPARCState *env = &cpu->env;
+    CPUSPARCState *env = cpu_env(cs);
 
     if (n < 8) {
         /* g0..g7 */
diff --git a/target/sparc/int32_helper.c b/target/sparc/int32_helper.c
index 058dd712b5..6b7d65b031 100644
--- a/target/sparc/int32_helper.c
+++ b/target/sparc/int32_helper.c
@@ -99,8 +99,7 @@ void cpu_check_irqs(CPUSPARCState *env)
 
 void sparc_cpu_do_interrupt(CPUState *cs)
 {
-    SPARCCPU *cpu = SPARC_CPU(cs);
-    CPUSPARCState *env = &cpu->env;
+    CPUSPARCState *env = cpu_env(cs);
     int cwp, intno = cs->exception_index;
 
     if (qemu_loglevel_mask(CPU_LOG_INT)) {
diff --git a/target/sparc/int64_helper.c b/target/sparc/int64_helper.c
index 27df9dba89..bd14c7a0db 100644
--- a/target/sparc/int64_helper.c
+++ b/target/sparc/int64_helper.c
@@ -130,8 +130,7 @@ void cpu_check_irqs(CPUSPARCState *env)
 
 void sparc_cpu_do_interrupt(CPUState *cs)
 {
-    SPARCCPU *cpu = SPARC_CPU(cs);
-    CPUSPARCState *env = &cpu->env;
+    CPUSPARCState *env = cpu_env(cs);
     int intno = cs->exception_index;
     trap_state *tsptr;
 
diff --git a/target/sparc/ldst_helper.c b/target/sparc/ldst_helper.c
index 09066d5487..203441bfb2 100644
--- a/target/sparc/ldst_helper.c
+++ b/target/sparc/ldst_helper.c
@@ -421,8 +421,7 @@ static void sparc_raise_mmu_fault(CPUState *cs, hwaddr addr,
                                   bool is_write, bool is_exec, int is_asi,
                                   unsigned size, uintptr_t retaddr)
 {
-    SPARCCPU *cpu = SPARC_CPU(cs);
-    CPUSPARCState *env = &cpu->env;
+    CPUSPARCState *env = cpu_env(cs);
     int fault_type;
 
 #ifdef DEBUG_UNASSIGNED
@@ -483,8 +482,7 @@ static void sparc_raise_mmu_fault(CPUState *cs, hwaddr addr,
                                   bool is_write, bool is_exec, int is_asi,
                                   unsigned size, uintptr_t retaddr)
 {
-    SPARCCPU *cpu = SPARC_CPU(cs);
-    CPUSPARCState *env = &cpu->env;
+    CPUSPARCState *env = cpu_env(cs);
 
 #ifdef DEBUG_UNASSIGNED
     printf("Unassigned mem access to " HWADDR_FMT_plx " from " TARGET_FMT_lx
diff --git a/target/sparc/mmu_helper.c b/target/sparc/mmu_helper.c
index 453498c670..a05ee22315 100644
--- a/target/sparc/mmu_helper.c
+++ b/target/sparc/mmu_helper.c
@@ -206,8 +206,7 @@ bool sparc_cpu_tlb_fill(CPUState *cs, vaddr address, int size,
                         MMUAccessType access_type, int mmu_idx,
                         bool probe, uintptr_t retaddr)
 {
-    SPARCCPU *cpu = SPARC_CPU(cs);
-    CPUSPARCState *env = &cpu->env;
+    CPUSPARCState *env = cpu_env(cs);
     CPUTLBEntryFull full = {};
     target_ulong vaddr;
     int error_code = 0, access_index;
@@ -391,8 +390,7 @@ void dump_mmu(CPUSPARCState *env)
 int sparc_cpu_memory_rw_debug(CPUState *cs, vaddr address,
                               uint8_t *buf, int len, bool is_write)
 {
-    SPARCCPU *cpu = SPARC_CPU(cs);
-    CPUSPARCState *env = &cpu->env;
+    CPUSPARCState *env = cpu_env(cs);
     target_ulong addr = address;
     int i;
     int len1;
@@ -759,8 +757,7 @@ bool sparc_cpu_tlb_fill(CPUState *cs, vaddr address, int size,
                         MMUAccessType access_type, int mmu_idx,
                         bool probe, uintptr_t retaddr)
 {
-    SPARCCPU *cpu = SPARC_CPU(cs);
-    CPUSPARCState *env = &cpu->env;
+    CPUSPARCState *env = cpu_env(cs);
     CPUTLBEntryFull full = {};
     int error_code = 0, access_index;
 
@@ -898,8 +895,7 @@ hwaddr cpu_get_phys_page_nofault(CPUSPARCState *env, target_ulong addr,
 
 hwaddr sparc_cpu_get_phys_page_debug(CPUState *cs, vaddr addr)
 {
-    SPARCCPU *cpu = SPARC_CPU(cs);
-    CPUSPARCState *env = &cpu->env;
+    CPUSPARCState *env = cpu_env(cs);
     hwaddr phys_addr;
     int mmu_idx = cpu_mmu_index(env, false);
 
@@ -916,8 +912,7 @@ G_NORETURN void sparc_cpu_do_unaligned_access(CPUState *cs, vaddr addr,
                                               int mmu_idx,
                                               uintptr_t retaddr)
 {
-    SPARCCPU *cpu = SPARC_CPU(cs);
-    CPUSPARCState *env = &cpu->env;
+    CPUSPARCState *env = cpu_env(cs);
 
 #ifdef TARGET_SPARC64
     env->dmmu.sfsr = build_sfsr(env, mmu_idx, access_type);
diff --git a/target/sparc/translate.c b/target/sparc/translate.c
index 9387299559..412b7d1b66 100644
--- a/target/sparc/translate.c
+++ b/target/sparc/translate.c
@@ -5406,8 +5406,7 @@ void sparc_restore_state_to_opc(CPUState *cs,
                                 const TranslationBlock *tb,
                                 const uint64_t *data)
 {
-    SPARCCPU *cpu = SPARC_CPU(cs);
-    CPUSPARCState *env = &cpu->env;
+    CPUSPARCState *env = cpu_env(cs);
     target_ulong pc = data[0];
     target_ulong npc = data[1];
 
diff --git a/target/tricore/cpu.c b/target/tricore/cpu.c
index 8acacdf0c0..0bbd0271a9 100644
--- a/target/tricore/cpu.c
+++ b/target/tricore/cpu.c
@@ -36,16 +36,14 @@ static const gchar *tricore_gdb_arch_name(CPUState *cs)
 
 static void tricore_cpu_set_pc(CPUState *cs, vaddr value)
 {
-    TriCoreCPU *cpu = TRICORE_CPU(cs);
-    CPUTriCoreState *env = &cpu->env;
+    CPUTriCoreState *env = cpu_env(cs);
 
     env->PC = value & ~(target_ulong)1;
 }
 
 static vaddr tricore_cpu_get_pc(CPUState *cs)
 {
-    TriCoreCPU *cpu = TRICORE_CPU(cs);
-    CPUTriCoreState *env = &cpu->env;
+    CPUTriCoreState *env = cpu_env(cs);
 
     return env->PC;
 }
@@ -53,8 +51,7 @@ static vaddr tricore_cpu_get_pc(CPUState *cs)
 static void tricore_cpu_synchronize_from_tb(CPUState *cs,
                                             const TranslationBlock *tb)
 {
-    TriCoreCPU *cpu = TRICORE_CPU(cs);
-    CPUTriCoreState *env = &cpu->env;
+    CPUTriCoreState *env = cpu_env(cs);
 
     tcg_debug_assert(!(cs->tcg_cflags & CF_PCREL));
     env->PC = tb->pc;
@@ -64,8 +61,7 @@ static void tricore_restore_state_to_opc(CPUState *cs,
                                          const TranslationBlock *tb,
                                          const uint64_t *data)
 {
-    TriCoreCPU *cpu = TRICORE_CPU(cs);
-    CPUTriCoreState *env = &cpu->env;
+    CPUTriCoreState *env = cpu_env(cs);
 
     env->PC = data[0];
 }
diff --git a/target/tricore/gdbstub.c b/target/tricore/gdbstub.c
index e8f8e5e6ea..f9309c5e27 100644
--- a/target/tricore/gdbstub.c
+++ b/target/tricore/gdbstub.c
@@ -106,8 +106,7 @@ static void tricore_cpu_gdb_write_csfr(CPUTriCoreState *env, int n,
 
 int tricore_cpu_gdb_read_register(CPUState *cs, GByteArray *mem_buf, int n)
 {
-    TriCoreCPU *cpu = TRICORE_CPU(cs);
-    CPUTriCoreState *env = &cpu->env;
+    CPUTriCoreState *env = cpu_env(cs);
 
     if (n < 16) { /* data registers */
         return gdb_get_reg32(mem_buf, env->gpr_d[n]);
@@ -121,8 +120,7 @@ int tricore_cpu_gdb_read_register(CPUState *cs, GByteArray *mem_buf, int n)
 
 int tricore_cpu_gdb_write_register(CPUState *cs, uint8_t *mem_buf, int n)
 {
-    TriCoreCPU *cpu = TRICORE_CPU(cs);
-    CPUTriCoreState *env = &cpu->env;
+    CPUTriCoreState *env = cpu_env(cs);
     uint32_t tmp;
 
     tmp = ldl_p(mem_buf);
diff --git a/target/tricore/helper.c b/target/tricore/helper.c
index 174f666e1e..d328414c99 100644
--- a/target/tricore/helper.c
+++ b/target/tricore/helper.c
@@ -67,8 +67,7 @@ bool tricore_cpu_tlb_fill(CPUState *cs, vaddr address, int size,
                           MMUAccessType rw, int mmu_idx,
                           bool probe, uintptr_t retaddr)
 {
-    TriCoreCPU *cpu = TRICORE_CPU(cs);
-    CPUTriCoreState *env = &cpu->env;
+    CPUTriCoreState *env = cpu_env(cs);
     hwaddr physical;
     int prot;
     int ret = 0;
diff --git a/target/tricore/translate.c b/target/tricore/translate.c
index 66553d1be0..ad314bdf3c 100644
--- a/target/tricore/translate.c
+++ b/target/tricore/translate.c
@@ -95,8 +95,7 @@ enum {
 
 void tricore_cpu_dump_state(CPUState *cs, FILE *f, int flags)
 {
-    TriCoreCPU *cpu = TRICORE_CPU(cs);
-    CPUTriCoreState *env = &cpu->env;
+    CPUTriCoreState *env = cpu_env(cs);
     uint32_t psw;
     int i;
 
diff --git a/target/xtensa/dbg_helper.c b/target/xtensa/dbg_helper.c
index 497dafca71..5546c82ecd 100644
--- a/target/xtensa/dbg_helper.c
+++ b/target/xtensa/dbg_helper.c
@@ -66,8 +66,7 @@ void HELPER(wsr_ibreaka)(CPUXtensaState *env, uint32_t i, uint32_t v)
 
 bool xtensa_debug_check_breakpoint(CPUState *cs)
 {
-    XtensaCPU *cpu = XTENSA_CPU(cs);
-    CPUXtensaState *env = &cpu->env;
+    CPUXtensaState *env = cpu_env(cs);
     unsigned int i;
 
     if (xtensa_get_cintlevel(env) >= env->config->debug_level) {
diff --git a/target/xtensa/exc_helper.c b/target/xtensa/exc_helper.c
index 168419a505..0514c2c1f3 100644
--- a/target/xtensa/exc_helper.c
+++ b/target/xtensa/exc_helper.c
@@ -205,8 +205,7 @@ static void handle_interrupt(CPUXtensaState *env)
 /* Called from cpu_handle_interrupt with BQL held */
 void xtensa_cpu_do_interrupt(CPUState *cs)
 {
-    XtensaCPU *cpu = XTENSA_CPU(cs);
-    CPUXtensaState *env = &cpu->env;
+    CPUXtensaState *env = cpu_env(cs);
 
     if (cs->exception_index == EXC_IRQ) {
         qemu_log_mask(CPU_LOG_INT,
diff --git a/target/xtensa/gdbstub.c b/target/xtensa/gdbstub.c
index 4b3bfb7e59..4748fb6532 100644
--- a/target/xtensa/gdbstub.c
+++ b/target/xtensa/gdbstub.c
@@ -65,8 +65,7 @@ void xtensa_count_regs(const XtensaConfig *config,
 
 int xtensa_cpu_gdb_read_register(CPUState *cs, GByteArray *mem_buf, int n)
 {
-    XtensaCPU *cpu = XTENSA_CPU(cs);
-    CPUXtensaState *env = &cpu->env;
+    CPUXtensaState *env = cpu_env(cs);
     const XtensaGdbReg *reg = env->config->gdb_regmap.reg + n;
 #ifdef CONFIG_USER_ONLY
     int num_regs = env->config->gdb_regmap.num_core_regs;
@@ -120,8 +119,7 @@ int xtensa_cpu_gdb_read_register(CPUState *cs, GByteArray *mem_buf, int n)
 
 int xtensa_cpu_gdb_write_register(CPUState *cs, uint8_t *mem_buf, int n)
 {
-    XtensaCPU *cpu = XTENSA_CPU(cs);
-    CPUXtensaState *env = &cpu->env;
+    CPUXtensaState *env = cpu_env(cs);
     uint32_t tmp;
     const XtensaGdbReg *reg = env->config->gdb_regmap.reg + n;
 #ifdef CONFIG_USER_ONLY
diff --git a/target/xtensa/helper.c b/target/xtensa/helper.c
index a9f8907083..ca214b948a 100644
--- a/target/xtensa/helper.c
+++ b/target/xtensa/helper.c
@@ -217,8 +217,7 @@ static uint32_t check_hw_breakpoints(CPUXtensaState *env)
 
 void xtensa_breakpoint_handler(CPUState *cs)
 {
-    XtensaCPU *cpu = XTENSA_CPU(cs);
-    CPUXtensaState *env = &cpu->env;
+    CPUXtensaState *env = cpu_env(cs);
 
     if (cs->watchpoint_hit) {
         if (cs->watchpoint_hit->flags & BP_CPU) {
@@ -266,8 +265,7 @@ bool xtensa_cpu_tlb_fill(CPUState *cs, vaddr address, int size,
                          MMUAccessType access_type, int mmu_idx,
                          bool probe, uintptr_t retaddr)
 {
-    XtensaCPU *cpu = XTENSA_CPU(cs);
-    CPUXtensaState *env = &cpu->env;
+    CPUXtensaState *env = cpu_env(cs);
     uint32_t paddr;
     uint32_t page_size;
     unsigned access;
@@ -297,8 +295,7 @@ void xtensa_cpu_do_transaction_failed(CPUState *cs, hwaddr physaddr, vaddr addr,
                                       int mmu_idx, MemTxAttrs attrs,
                                       MemTxResult response, uintptr_t retaddr)
 {
-    XtensaCPU *cpu = XTENSA_CPU(cs);
-    CPUXtensaState *env = &cpu->env;
+    CPUXtensaState *env = cpu_env(cs);
 
     cpu_restore_state(cs, retaddr);
     HELPER(exception_cause_vaddr)(env, env->pc,
diff --git a/target/xtensa/translate.c b/target/xtensa/translate.c
index 87947236ca..426dcb6169 100644
--- a/target/xtensa/translate.c
+++ b/target/xtensa/translate.c
@@ -1248,8 +1248,7 @@ void gen_intermediate_code(CPUState *cpu, TranslationBlock *tb, int *max_insns,
 
 void xtensa_cpu_dump_state(CPUState *cs, FILE *f, int flags)
 {
-    XtensaCPU *cpu = XTENSA_CPU(cs);
-    CPUXtensaState *env = &cpu->env;
+    CPUXtensaState *env = cpu_env(cs);
     xtensa_isa isa = env->config->isa;
     int i, j;
 
-- 
2.41.0



From xen-devel-bounces@lists.xenproject.org Thu Jan 25 17:01:13 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 25 Jan 2024 17:01:13 +0000
Received: from list by lists.xenproject.org with outflank-mailman.671683.1045160 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rT364-00045u-Dc; Thu, 25 Jan 2024 17:01:00 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 671683.1045160; Thu, 25 Jan 2024 17:01:00 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rT364-00045n-Au; Thu, 25 Jan 2024 17:01:00 +0000
Received: by outflank-mailman (input) for mailman id 671683;
 Thu, 25 Jan 2024 17:00:59 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=vt1H=JD=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rT363-00045h-6j
 for xen-devel@lists.xenproject.org; Thu, 25 Jan 2024 17:00:59 +0000
Received: from mail-lj1-x231.google.com (mail-lj1-x231.google.com
 [2a00:1450:4864:20::231])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 4f4d8d7e-bba3-11ee-8a42-1f161083a0e0;
 Thu, 25 Jan 2024 18:00:58 +0100 (CET)
Received: by mail-lj1-x231.google.com with SMTP id
 38308e7fff4ca-2cf33035d1dso10855911fa.2
 for <xen-devel@lists.xenproject.org>; Thu, 25 Jan 2024 09:00:58 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 g7-20020a056e020d0700b00361aebe5816sm4399977ilj.28.2024.01.25.09.00.55
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Thu, 25 Jan 2024 09:00:57 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 4f4d8d7e-bba3-11ee-8a42-1f161083a0e0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1706202057; x=1706806857; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:references:cc:to
         :from:content-language:subject:user-agent:mime-version:date
         :message-id:from:to:cc:subject:date:message-id:reply-to;
        bh=zUEcEVl0KJ72mIpvaQVsIxrv6PDG9No30DdDb4Ad3r0=;
        b=gabKPiXSZ8CE4DmYlzsc+fQjRqZ1HQWkwqyplhfqfAQJuZ862yssilH3Xgc00C3lYG
         X4ixzvG/TREwwnQAMwqAcXyQu/jZ0OoCrDkkZcebZNdc4KorAXWVi8ZrOPY1JlFJbd9E
         Ft6MyRBQDXakB6DQPW/zLEkLZlbx2Nlt2kzmrh/Q2MSWT0OLGHqOmy2J5IHQMYfVGTk4
         J/22xTVxSzJaLcH49fltoWm8f6qDtq6ms8MC8U8uYuw2rMrazPHATaWIGf/WPgJ3iwNj
         ezzKPaR1mYcmJTGaKEvyz4fi2pfBf76I+p/yqUDW2gZEVv24VI82f9DP9m1bet35qLYP
         mq5g==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706202057; x=1706806857;
        h=content-transfer-encoding:in-reply-to:autocrypt:references:cc:to
         :from:content-language:subject:user-agent:mime-version:date
         :message-id:x-gm-message-state:from:to:cc:subject:date:message-id
         :reply-to;
        bh=zUEcEVl0KJ72mIpvaQVsIxrv6PDG9No30DdDb4Ad3r0=;
        b=txSR9ynFZUnSdY83oejjHVi7dspB6ddWFUnqdiVR+KdJDTgIbvrVihiHpye4nauO4i
         AdXZ6X5iE7N3MWIXO3exnCztTox+iralNq58ng45JPSogm/Y6hPynC6cZ11wN2ueJPay
         CfoS4RhWbhSJ99zd+oLEVkzRhvgBsJHjxxwy7cLPGI8bg219z7oq6QbIYzoLcubsqopp
         re0B9Fndq1SwMO07jKDyR+vozYMS0axxFZBwNJ6gKx3dMP+V6y4aRDAJsrHW3d0mIbU/
         4lBmLYhjJbDtEWioIm8hPNPpjgvjgNPJNreCw43TF6kS7PQsc1MH4ifm9cTKZMJH0D5k
         ZQ3g==
X-Gm-Message-State: AOJu0YyFUMCy2gGb+KRwgmPldA2aDpzlnIe8J0300cNlR7X9YxHdaEeE
	uEKxzpAptZF8J6M8bFMyMh9axMuwDbpF7wvRZiLIyjzanBQVPZLvOsa7ja4QOyopta5lXimwb0w
	=
X-Google-Smtp-Source: AGHT+IE/80TvLRFeO90E1CYKToR9bHUXqHauNnL4/sQ4B+xe15oO1vIbX0daQOXA23VVuX+mcKmi9g==
X-Received: by 2002:a2e:8699:0:b0:2cc:e5ec:f6f9 with SMTP id l25-20020a2e8699000000b002cce5ecf6f9mr797571lji.40.1706202057563;
        Thu, 25 Jan 2024 09:00:57 -0800 (PST)
Message-ID: <32ab102b-d91a-4076-a9df-94f08c7e6fa0@suse.com>
Date: Thu, 25 Jan 2024 18:00:53 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Ping: [PATCH v2] NUMA: no need for asm/numa.h when !NUMA
Content-Language: en-US
From: Jan Beulich <jbeulich@suse.com>
To: Julien Grall <julien@xen.org>, Stefano Stabellini
 <sstabellini@kernel.org>, Bertrand Marquis <bertrand.marquis@arm.com>,
 Michal Orzel <michal.orzel@amd.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 George Dunlap <george.dunlap@citrix.com>, Wei Liu <wl@xen.org>,
 Shawn Anastasio <sanastasio@raptorengineering.com>,
 Oleksii Kurochko <oleksii.kurochko@gmail.com>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
References: <94cffa48-5e31-4557-827d-c6dec6031d05@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <94cffa48-5e31-4557-827d-c6dec6031d05@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 08.01.2024 12:30, Jan Beulich wrote:
> There's no point in every architecture carrying the same stubs for the
> case when NUMA isn't enabled (or even supported). Move all of that to
> xen/numa.h; replace explicit uses of asm/numa.h in common code. Make
> inclusion of asm/numa.h dependent upon NUMA=y.
> 
> Drop the no longer applicable "implement NUMA support" comments - in a
> !NUMA section this simply makes no sense.
> 
> Signed-off-by: Jan Beulich <jbeulich@suse.com>

May I please ask for an Arm ack (or otherwise) here?

Thanks, Jan

> --- a/xen/arch/arm/include/asm/numa.h
> +++ /dev/null
> @@ -1,31 +0,0 @@
> -#ifndef __ARCH_ARM_NUMA_H
> -#define __ARCH_ARM_NUMA_H
> -
> -#include <xen/mm.h>
> -
> -typedef u8 nodeid_t;
> -
> -#ifndef CONFIG_NUMA
> -
> -/* Fake one node for now. See also node_online_map. */
> -#define cpu_to_node(cpu) 0
> -#define node_to_cpumask(node)   (cpu_online_map)
> -
> -/* XXX: implement NUMA support */
> -#define node_spanned_pages(nid) (max_page - mfn_x(first_valid_mfn))
> -#define node_start_pfn(nid) (mfn_x(first_valid_mfn))
> -#define __node_distance(a, b) (20)
> -
> -#endif
> -
> -#define arch_want_default_dmazone() (false)
> -
> -#endif /* __ARCH_ARM_NUMA_H */
> -/*
> - * Local variables:
> - * mode: C
> - * c-file-style: "BSD"
> - * c-basic-offset: 4
> - * indent-tabs-mode: nil
> - * End:
> - */
> --- a/xen/arch/arm/smpboot.c
> +++ b/xen/arch/arm/smpboot.c
> @@ -42,7 +42,7 @@ integer_param("maxcpus", max_cpus);
>  /* CPU logical map: map xen cpuid to an MPIDR */
>  register_t __cpu_logical_map[NR_CPUS] = { [0 ... NR_CPUS-1] = MPIDR_INVALID };
>  
> -/* Fake one node for now. See also asm/numa.h */
> +/* Fake one node for now. See also xen/numa.h */
>  nodemask_t __read_mostly node_online_map = { { [0] = 1UL } };
>  
>  /* Xen stack for bringing up the first CPU. */
> --- a/xen/arch/ppc/include/asm/numa.h
> +++ /dev/null
> @@ -1,20 +0,0 @@
> -#ifndef __ASM_PPC_NUMA_H__
> -#define __ASM_PPC_NUMA_H__
> -
> -#include <xen/types.h>
> -#include <xen/mm.h>
> -
> -typedef uint8_t nodeid_t;
> -
> -/* Fake one node for now. See also node_online_map. */
> -#define cpu_to_node(cpu) 0
> -#define node_to_cpumask(node)   (cpu_online_map)
> -
> -/* XXX: implement NUMA support */
> -#define node_spanned_pages(nid) (max_page - mfn_x(first_valid_mfn))
> -#define node_start_pfn(nid) (mfn_x(first_valid_mfn))
> -#define __node_distance(a, b) (20)
> -
> -#define arch_want_default_dmazone() (false)
> -
> -#endif /* __ASM_PPC_NUMA_H__ */
> --- a/xen/common/page_alloc.c
> +++ b/xen/common/page_alloc.c
> @@ -138,7 +138,6 @@
>  #include <xen/spinlock.h>
>  
>  #include <asm/flushtlb.h>
> -#include <asm/numa.h>
>  #include <asm/page.h>
>  
>  #include <public/sysctl.h>
> --- a/xen/common/sysctl.c
> +++ b/xen/common/sysctl.c
> @@ -22,8 +22,8 @@
>  #include <asm/current.h>
>  #include <xen/hypercall.h>
>  #include <public/sysctl.h>
> -#include <asm/numa.h>
>  #include <xen/nodemask.h>
> +#include <xen/numa.h>
>  #include <xsm/xsm.h>
>  #include <xen/pmstat.h>
>  #include <xen/livepatch.h>
> --- a/xen/include/xen/domain.h
> +++ b/xen/include/xen/domain.h
> @@ -2,6 +2,7 @@
>  #ifndef __XEN_DOMAIN_H__
>  #define __XEN_DOMAIN_H__
>  
> +#include <xen/numa.h>
>  #include <xen/types.h>
>  
>  #include <public/xen.h>
> @@ -12,7 +13,6 @@ struct guest_area {
>  };
>  
>  #include <asm/domain.h>
> -#include <asm/numa.h>
>  
>  typedef union {
>      struct vcpu_guest_context *nat;
> --- a/xen/include/xen/numa.h
> +++ b/xen/include/xen/numa.h
> @@ -2,7 +2,13 @@
>  #define _XEN_NUMA_H
>  
>  #include <xen/mm-frame.h>
> +
> +#ifdef CONFIG_NUMA
> +#include <xen/pdx.h>
>  #include <asm/numa.h>
> +#else
> +typedef uint8_t nodeid_t;
> +#endif
>  
>  #define NUMA_NO_NODE     0xFF
>  #define NUMA_NO_DISTANCE 0xFF
> @@ -108,8 +114,18 @@ extern void numa_set_processor_nodes_par
>  
>  #else
>  
> +/* Fake one node for now. See also node_online_map. */
> +#define cpu_to_node(cpu) 0
> +#define node_to_cpumask(node)   cpu_online_map
> +
> +#define arch_want_default_dmazone() false
> +
>  extern mfn_t first_valid_mfn;
>  
> +#define node_spanned_pages(nid) (max_page - mfn_x(first_valid_mfn))
> +#define node_start_pfn(nid) mfn_x(first_valid_mfn)
> +#define __node_distance(a, b) 20
> +
>  static inline nodeid_t mfn_to_nid(mfn_t mfn)
>  {
>      return 0;
> --- a/xen/include/xen/pci.h
> +++ b/xen/include/xen/pci.h
> @@ -11,10 +11,10 @@
>  #include <xen/list.h>
>  #include <xen/spinlock.h>
>  #include <xen/irq.h>
> +#include <xen/numa.h>
>  #include <xen/pci_regs.h>
>  #include <xen/pfn.h>
>  #include <asm/device.h>
> -#include <asm/numa.h>
>  
>  /*
>   * The PCI interface treats multi-function devices as independent



From xen-devel-bounces@lists.xenproject.org Thu Jan 25 18:15:38 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 25 Jan 2024 18:15:38 +0000
Received: from list by lists.xenproject.org with outflank-mailman.671697.1045171 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rT4G7-0004He-RK; Thu, 25 Jan 2024 18:15:27 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 671697.1045171; Thu, 25 Jan 2024 18:15:27 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rT4G7-0004HX-Na; Thu, 25 Jan 2024 18:15:27 +0000
Received: by outflank-mailman (input) for mailman id 671697;
 Thu, 25 Jan 2024 18:15:26 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=KpLG=JD=gmail.com=jandryuk@srs-se1.protection.inumbo.net>)
 id 1rT4G6-0004GD-15
 for xen-devel@lists.xenproject.org; Thu, 25 Jan 2024 18:15:26 +0000
Received: from mail-qk1-x736.google.com (mail-qk1-x736.google.com
 [2607:f8b0:4864:20::736])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id b5929adf-bbad-11ee-8a42-1f161083a0e0;
 Thu, 25 Jan 2024 19:15:25 +0100 (CET)
Received: by mail-qk1-x736.google.com with SMTP id
 af79cd13be357-783c919d9f2so2321185a.1
 for <xen-devel@lists.xenproject.org>; Thu, 25 Jan 2024 10:15:25 -0800 (PST)
Received: from pm2-ws13.praxislan02.com
 (207-172-141-204.s8906.c3-0.slvr-cbr1.lnh-slvr.md.cable.rcncustomer.com.
 [207.172.141.204]) by smtp.gmail.com with ESMTPSA id
 wg8-20020a05620a568800b00781b8f4c89asm5265899qkn.43.2024.01.25.10.15.22
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 25 Jan 2024 10:15:22 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: b5929adf-bbad-11ee-8a42-1f161083a0e0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1706206523; x=1706811323; darn=lists.xenproject.org;
        h=content-transfer-encoding:mime-version:message-id:date:subject:cc
         :to:from:from:to:cc:subject:date:message-id:reply-to;
        bh=ZezEyUSDnqquRJb9HB6UmZ+I34K2f3fyhppolYsTpgs=;
        b=Oo4E5FPSvrBHjy+gbAodl4DxoNsqnBdRyzhBDL2fe58/foadhqhs2cCPhStKb6Er+V
         05U04Z2kTpHT6JRkd/B3RXWhXkmgZMgKdIVfoCPzSIFXe95iQYNe6Sd8SFkgs3ykqsHE
         A1NMkXoBmxOzz/nhJ37+c3v8oQ1kjlX2LJdIWeN6us8auSAGThUVIj/KTigMR1kXjRYh
         JBYvcRUABrGJezyshDOLP8s0P9SppPZYTNO8nxFi2FsaNL7jrEzNPNglR9WupyKqnezT
         29MPrh3YYrsJ0eTVSqMXFeyZVFS0Y30cdrbDDJnDZqT5nB+15LdRYnG2v6fOf3D1gKeb
         LvuA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706206523; x=1706811323;
        h=content-transfer-encoding:mime-version:message-id:date:subject:cc
         :to:from:x-gm-message-state:from:to:cc:subject:date:message-id
         :reply-to;
        bh=ZezEyUSDnqquRJb9HB6UmZ+I34K2f3fyhppolYsTpgs=;
        b=qXTsKujvUETy16kp8bYhxK3ZqUqE6HSc52O9aeDLEEM8/RrTf5+rN/fqHC3hf08+ah
         yoRDYDhcrmG8k/gIgSqVhi5a6UqKdam47AVt+xBbPXyCBkJ2SgPciFrEVtUw9KcuE0Vp
         4vy6nm/aEjajqCynKkZgqXKELMrwL/vI1mG4LxbBCSB9L0SQat6ilGbUljN8mIYuy0wS
         dTt9CoQoYr187lWLsSMr/iw9TW4gcji4TH6VNl4p3k+EnbUMBN2E+83v6t31lwUmci6l
         qRmtVG0duypHYfW3NGB84BZwyZTu9IEbP6BhzRm7Ft0w/IrHSMQOM7x9CCKH8OfwQ6K7
         wMFA==
X-Gm-Message-State: AOJu0YwaCD4UnY70MqXD+ZABF5reaL2TbKBOjLBS2hujvgeiDg5ChLlo
	jdm8lyw8TQjqS40FyZ6ZQ7ntK7vSgOk548Z/9E/zap7DV5xYqBBvA1magzNR
X-Google-Smtp-Source: AGHT+IGlceR/5cNScSUxO5c/ILPwA3lLUY+Fe7+hruScZ1dnxzQarqVPwtrrBvP+LZ+De0ulvw/Zxw==
X-Received: by 2002:a05:620a:4383:b0:783:a973:f9a1 with SMTP id a3-20020a05620a438300b00783a973f9a1mr127468qkp.104.1706206523142;
        Thu, 25 Jan 2024 10:15:23 -0800 (PST)
From: Jason Andryuk <jandryuk@gmail.com>
To: xen-devel@lists.xenproject.org
Cc: Jason Andryuk <jandryuk@gmail.com>,
	Jan Beulich <jbeulich@suse.com>,
	Wei Liu <wl@xen.org>,
	Anthony PERARD <anthony.perard@citrix.com>
Subject: [PATCH v3 0/2] Improve xenpm output under HWP
Date: Thu, 25 Jan 2024 13:14:52 -0500
Message-ID: <20240125181454.50534-1-jandryuk@gmail.com>
X-Mailer: git-send-email 2.43.0
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Have xen return -EOPNOTSUPP for more pmstat hypercalls instead of
returning misleading data under HWP.  Enhance xenpm to handle
-EOPNOTSUPP and provide more informative messages.

Jason Andryuk (2):
  pmstat: Limit hypercalls under HWP
  xenpm: Print message for disabled commands

 tools/misc/xenpm.c        | 19 ++++++++++++++++---
 xen/drivers/acpi/pmstat.c |  5 +++++
 2 files changed, 21 insertions(+), 3 deletions(-)

-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Thu Jan 25 18:15:38 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 25 Jan 2024 18:15:38 +0000
Received: from list by lists.xenproject.org with outflank-mailman.671699.1045191 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rT4GD-0004nm-9m; Thu, 25 Jan 2024 18:15:33 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 671699.1045191; Thu, 25 Jan 2024 18:15:33 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rT4GD-0004nZ-6W; Thu, 25 Jan 2024 18:15:33 +0000
Received: by outflank-mailman (input) for mailman id 671699;
 Thu, 25 Jan 2024 18:15:32 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=KpLG=JD=gmail.com=jandryuk@srs-se1.protection.inumbo.net>)
 id 1rT4GC-0004GD-F9
 for xen-devel@lists.xenproject.org; Thu, 25 Jan 2024 18:15:32 +0000
Received: from mail-qk1-x72a.google.com (mail-qk1-x72a.google.com
 [2607:f8b0:4864:20::72a])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id b990f26d-bbad-11ee-8a42-1f161083a0e0;
 Thu, 25 Jan 2024 19:15:31 +0100 (CET)
Received: by mail-qk1-x72a.google.com with SMTP id
 af79cd13be357-783b0813e48so70209485a.1
 for <xen-devel@lists.xenproject.org>; Thu, 25 Jan 2024 10:15:31 -0800 (PST)
Received: from pm2-ws13.praxislan02.com
 (207-172-141-204.s8906.c3-0.slvr-cbr1.lnh-slvr.md.cable.rcncustomer.com.
 [207.172.141.204]) by smtp.gmail.com with ESMTPSA id
 wg8-20020a05620a568800b00781b8f4c89asm5265899qkn.43.2024.01.25.10.15.29
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 25 Jan 2024 10:15:29 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: b990f26d-bbad-11ee-8a42-1f161083a0e0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1706206530; x=1706811330; darn=lists.xenproject.org;
        h=content-transfer-encoding:mime-version:references:in-reply-to
         :message-id:date:subject:cc:to:from:from:to:cc:subject:date
         :message-id:reply-to;
        bh=8Cyl/tzhVyURcOp/nlofd5b74JJYkMUzcH4H5kjvyLE=;
        b=LhjLdVhRzPbpca1iKmVk0uBO+lU67vwnUZy9sOlHed0DMtNzFFm9ETK9Oxmbo4LCO7
         k5rA9NNq0w/jouCiIxInQ2z/pvwba3lF1dHiv1tW+wNQH+xKwERS3zhdQHopVzhUbCHR
         T5IlSbQFmYVP1rPd/02FFQyF+w2CYir9ywEjGzQEOTGvySx1WJ2yYAw23spvTfm3RoEu
         3qy8nc6eNQurDryFHSCwpcBgQYNumps1rcLbUDdFj2UgkfDaXI4v1e+aybf/8Q876E++
         0JclIGdRYSpyVZmH6RIEqojU9Ifll3HI6+v8Ho/iiXCyrQ+qClMWOS5TF9yOkSG+yru4
         X3WA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706206530; x=1706811330;
        h=content-transfer-encoding:mime-version:references:in-reply-to
         :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to;
        bh=8Cyl/tzhVyURcOp/nlofd5b74JJYkMUzcH4H5kjvyLE=;
        b=lIOHP8q0x99XeIJRCbaoDr5ES0fNvAkxm5zpGnp3bx9y7VbzLZDPtyjSD2KjH/Lb+8
         KOu1bn6N/E3QTnUgPz1xENEWlkXrc6gZ2Uq2Ub7EdeplYW9enA6AgJmDnne21n7gV/t5
         t2kJgxYbEGrFxhOK3tbRzB3yxYqd0xAoxiZNuSAcc3yGhiwISiyKwMI6Yvj2EAzufJV0
         Ee4ImKreQ62rxCBNgR1AySud6+rz7Flgf0ch4SMQlumbGVZ9Y8MPEZ6Lcv3Pq6bLshf6
         rzlxz7VU3IAPhQIoJJOnDqZNYEsoSNDqYGS3SisVxGEMU/+ZUDWkj+6p/xgXvJvqZJZi
         WK0Q==
X-Gm-Message-State: AOJu0YyoBD0nIa8sF4JnrfW6AgIKAyJrzNy+QMavOIiun2Jhk/T1o9Qf
	APOblpTi7FPiq2w+wWLB4/kKUWhIIDsUeIwrlUtq4tq6lLx8VXut6fPcwrga
X-Google-Smtp-Source: AGHT+IHIGKvvx5bRtA8gFtzC3UIz69okIYgMu7Dy5xhL55yABZzc84JQCJWdijmUREAcIQtOM3hCoQ==
X-Received: by 2002:a05:620a:2116:b0:783:8b88:e4df with SMTP id l22-20020a05620a211600b007838b88e4dfmr306321qkl.14.1706206529887;
        Thu, 25 Jan 2024 10:15:29 -0800 (PST)
From: Jason Andryuk <jandryuk@gmail.com>
To: xen-devel@lists.xenproject.org
Cc: Jason Andryuk <jandryuk@gmail.com>,
	Wei Liu <wl@xen.org>,
	Anthony PERARD <anthony.perard@citrix.com>
Subject: [PATCH v3 2/2] xenpm: Print message for disabled commands
Date: Thu, 25 Jan 2024 13:14:54 -0500
Message-ID: <20240125181454.50534-3-jandryuk@gmail.com>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20240125181454.50534-1-jandryuk@gmail.com>
References: <20240125181454.50534-1-jandryuk@gmail.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

xenpm get-cpufreq-states currently just prints no output when cpufreq is
disabled or HWP is running.  Have it print an appropriate message.  The
cpufreq disabled one mirrors the cpuidle disabled one.

cpufreq disabled:
$ xenpm get-cpufreq-states
Either Xen cpufreq is disabled or no valid information is registered!

Under HWP:
$ xenpm get-cpufreq-states
P-State information not supported.  Try 'get-cpufreq-average' or 'start'.

Also allow xenpm to handle EOPNOTSUPP from the pmstat hypercalls.
EOPNOTSUPP is returned when HWP is active in some cases and allows the
differentiation from cpufreq being disabled.

Signed-off-by: Jason Andryuk <jandryuk@gmail.com>
---
v2:
New

v3:
Quote subcommands in error message
Fix style errors
s/mirros/mirrors/ in commit message
---
 tools/misc/xenpm.c | 19 ++++++++++++++++---
 1 file changed, 16 insertions(+), 3 deletions(-)

diff --git a/tools/misc/xenpm.c b/tools/misc/xenpm.c
index d982482a3f..336d246346 100644
--- a/tools/misc/xenpm.c
+++ b/tools/misc/xenpm.c
@@ -362,7 +362,15 @@ static int show_pxstat_by_cpuid(xc_interface *xc_handle, int cpuid)
 
     ret = get_pxstat_by_cpuid(xc_handle, cpuid, &pxstatinfo);
     if ( ret )
+    {
+        if ( ret == -ENODEV )
+            fprintf(stderr,
+                    "Either Xen cpufreq is disabled or no valid information is registered!\n");
+        else if ( ret == -EOPNOTSUPP )
+            fprintf(stderr,
+                    "P-State information not supported.  Try 'get-cpufreq-average' or 'start'.\n");
         return ret;
+    }
 
     print_pxstat(cpuid, &pxstatinfo);
 
@@ -383,8 +391,12 @@ void pxstat_func(int argc, char *argv[])
         /* show pxstates on all cpus */
         int i;
         for ( i = 0; i < max_cpu_nr; i++ )
-            if ( show_pxstat_by_cpuid(xc_handle, i) == -ENODEV )
+        {
+            int ret = show_pxstat_by_cpuid(xc_handle, i);
+
+            if ( ret == -ENODEV || ret == -EOPNOTSUPP )
                 break;
+        }
     }
     else
         show_pxstat_by_cpuid(xc_handle, cpuid);
@@ -432,7 +444,7 @@ static uint64_t *sum, *sum_cx, *sum_px;
 
 static void signal_int_handler(int signo)
 {
-    int i, j, k;
+    int i, j, k, ret;
     struct timeval tv;
     int cx_cap = 0, px_cap = 0;
     xc_cputopo_t *cputopo = NULL;
@@ -473,7 +485,8 @@ static void signal_int_handler(int signo)
                 }
     }
 
-    if ( get_pxstat_by_cpuid(xc_handle, 0, NULL) != -ENODEV )
+    ret = get_pxstat_by_cpuid(xc_handle, 0, NULL);
+    if ( ret != -ENODEV && ret != -EOPNOTSUPP )
     {
         px_cap = 1;
         for ( i = 0; i < max_cpu_nr; i++ )
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Thu Jan 25 18:15:38 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 25 Jan 2024 18:15:38 +0000
Received: from list by lists.xenproject.org with outflank-mailman.671698.1045181 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rT4GA-0004X5-31; Thu, 25 Jan 2024 18:15:30 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 671698.1045181; Thu, 25 Jan 2024 18:15:30 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rT4G9-0004Wy-V9; Thu, 25 Jan 2024 18:15:29 +0000
Received: by outflank-mailman (input) for mailman id 671698;
 Thu, 25 Jan 2024 18:15:29 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=KpLG=JD=gmail.com=jandryuk@srs-se1.protection.inumbo.net>)
 id 1rT4G9-0004GD-8a
 for xen-devel@lists.xenproject.org; Thu, 25 Jan 2024 18:15:29 +0000
Received: from mail-qk1-x733.google.com (mail-qk1-x733.google.com
 [2607:f8b0:4864:20::733])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id b7bd1c09-bbad-11ee-8a42-1f161083a0e0;
 Thu, 25 Jan 2024 19:15:28 +0100 (CET)
Received: by mail-qk1-x733.google.com with SMTP id
 af79cd13be357-78313f4d149so610365385a.1
 for <xen-devel@lists.xenproject.org>; Thu, 25 Jan 2024 10:15:28 -0800 (PST)
Received: from pm2-ws13.praxislan02.com
 (207-172-141-204.s8906.c3-0.slvr-cbr1.lnh-slvr.md.cable.rcncustomer.com.
 [207.172.141.204]) by smtp.gmail.com with ESMTPSA id
 wg8-20020a05620a568800b00781b8f4c89asm5265899qkn.43.2024.01.25.10.15.26
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 25 Jan 2024 10:15:26 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: b7bd1c09-bbad-11ee-8a42-1f161083a0e0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1706206527; x=1706811327; darn=lists.xenproject.org;
        h=content-transfer-encoding:mime-version:references:in-reply-to
         :message-id:date:subject:cc:to:from:from:to:cc:subject:date
         :message-id:reply-to;
        bh=YyEbMZdJfecnQ9Hzg5AB7rtSEVHtymjTaGyNCauyTks=;
        b=lXkC4e+HiRB2trX7vR+kWAhNGoBR2laQbKVfsVYOGq7wgZka7tOvGETFFYQKgUaEmv
         DqJ3969bItTnbt4aO0hbMtotTDAJZMlL4dDiPUF9lyb28I/7nu9AEiRdTAdYRtp7L1Yk
         7FrqbJ5smL9jCiYLxihvE2pgBoY/V8pHNKF1+t0MOx2ox49hFhBpZKmHx4/4jbygfBAo
         aT6vnObae4bIrpeiB6OLh56ee7644OQ4qGqxItOaZSN7ejdViD0UpvSAOHosH0/RTrND
         eB4BQ0YE4+37lonSUqRQq3prqwEKMVdrZP544PmytY/UMJ/pA+HKJa38vZTHnMnA9xEi
         0u7A==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706206527; x=1706811327;
        h=content-transfer-encoding:mime-version:references:in-reply-to
         :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to;
        bh=YyEbMZdJfecnQ9Hzg5AB7rtSEVHtymjTaGyNCauyTks=;
        b=rQM57gvaELl73F5Q8Twy7bzCgKCRElF5uWYW4r+DTn2W1z5PZa7454KoBvNDTkzgD9
         ii8GmhT1Mg1y9+iKn33FrcH6f8jPrgRcUxYtytJ4HyP5+JOcb1j/sk7mLPpio9JAaFeB
         YsvvEjvAKWnC0zLmLIY8R5RsrQ7n30XN5mvClc87iJ9F29XXLS2UGLA/tFtTiYMsIuQS
         d0RQ1QCq9/2GBjSNTPH/52gQh+mNCRp7vKeGhFKHieMZOX2ygrvovy7B+loSLITx/d4G
         s6hcFXN6324eJ3j4CckDIzXnaBNhx066DHxMgXe07F7Ws3YJ+OBvcd2J5r7V48MHSTUz
         yIOQ==
X-Gm-Message-State: AOJu0Yzyw6Q1QN5fdp82tkumKLqIxG4HHTtKVbGKZsuby+A0sriTK34V
	R0/WHgOML8kZeG2dx8an34l4OuXgGIlkL4jSh7xHYtlMPIG0lxE+FPtFUFxs
X-Google-Smtp-Source: AGHT+IG6CrsocHLAqBMNBRYNbbTEsI51rayRyRzMxZzvh6CjXbmVn3O61ug+Dsl6MG48ddQCoucSbg==
X-Received: by 2002:a05:620a:22f7:b0:783:3b4a:b55b with SMTP id p23-20020a05620a22f700b007833b4ab55bmr1288900qki.53.1706206526712;
        Thu, 25 Jan 2024 10:15:26 -0800 (PST)
From: Jason Andryuk <jandryuk@gmail.com>
To: xen-devel@lists.xenproject.org
Cc: Jason Andryuk <jandryuk@gmail.com>,
	Jan Beulich <jbeulich@suse.com>
Subject: [PATCH v3 1/2] pmstat: Limit hypercalls under HWP
Date: Thu, 25 Jan 2024 13:14:53 -0500
Message-ID: <20240125181454.50534-2-jandryuk@gmail.com>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20240125181454.50534-1-jandryuk@gmail.com>
References: <20240125181454.50534-1-jandryuk@gmail.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

When HWP is active, the cpufreq P-state information is not updated.  In
that case, return -EOPNOTSUPP instead of bogus, incomplete info.

Similarly, set_cpufreq_para() is not applicable when HWP is active.
Many of the options already checked the governor and were inaccessible,
but SCALING_MIN/MAX_FREQ was still accessible (though it would do
nothing).  Add an ealier HWP check to handle all cases.

Signed-off-by: Jason Andryuk <jandryuk@gmail.com>
Reviewed-by: Jan Beulich <jbeulich@suse.com>
---
v2:
Use -EOPNOTSUPP in both places

v3:
Add Jan's R-b
---
 xen/drivers/acpi/pmstat.c | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/xen/drivers/acpi/pmstat.c b/xen/drivers/acpi/pmstat.c
index 85097d463c..86588ddd42 100644
--- a/xen/drivers/acpi/pmstat.c
+++ b/xen/drivers/acpi/pmstat.c
@@ -66,6 +66,8 @@ int do_get_pm_info(struct xen_sysctl_get_pmstat *op)
             return -ENODEV;
         if ( !cpufreq_driver.init )
             return -ENODEV;
+        if ( hwp_active() )
+            return -EOPNOTSUPP;
         if ( !pmpt || !(pmpt->perf.init & XEN_PX_INIT) )
             return -EINVAL;
         break;
@@ -329,6 +331,9 @@ static int set_cpufreq_para(struct xen_sysctl_pm_op *op)
     if ( !policy || !policy->governor )
         return -EINVAL;
 
+    if ( hwp_active() )
+        return -EOPNOTSUPP;
+
     switch(op->u.set_para.ctrl_type)
     {
     case SCALING_MAX_FREQ:
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Thu Jan 25 18:23:30 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 25 Jan 2024 18:23:30 +0000
Received: from list by lists.xenproject.org with outflank-mailman.671713.1045201 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rT4Nr-0000JU-1b; Thu, 25 Jan 2024 18:23:27 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 671713.1045201; Thu, 25 Jan 2024 18:23:27 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rT4Nq-0000JN-UY; Thu, 25 Jan 2024 18:23:26 +0000
Received: by outflank-mailman (input) for mailman id 671713;
 Thu, 25 Jan 2024 18:23:25 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>) id 1rT4Np-0000HS-7y
 for xen-devel@lists.xenproject.org; Thu, 25 Jan 2024 18:23:25 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rT4Nj-000246-KP; Thu, 25 Jan 2024 18:23:19 +0000
Received: from 54-240-197-233.amazon.com ([54.240.197.233] helo=[192.168.5.50])
 by xenbits.xenproject.org with esmtpsa
 (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rT4Nj-0007Ph-Bh; Thu, 25 Jan 2024 18:23:19 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
	s=20200302mail; h=Content-Transfer-Encoding:Content-Type:In-Reply-To:From:
	References:Cc:To:Subject:MIME-Version:Date:Message-ID;
	bh=AD+zfIW7mXJnTz6aOr2nBeXKqCaz6Kvs97fIflSfmCc=; b=c49eXfSjzltVBaW8Ufed9g33u2
	3hYDTF2lyQT6xY00fPANHm/IBHXnseJSbfLTT73PK+KHtFZLH887AH06pXKfh9hAyc9V1UAxDrObO
	kv2ZNKbE3/CoARmc6Cd5QY8F/4kyDE2CfD16RO02zIxn/GS5H6FJYw/KzK+juY6/Nme0=;
Message-ID: <98934d62-71de-4cb3-8d0e-8d1e3a679cdf@xen.org>
Date: Thu, 25 Jan 2024 18:23:16 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: Ping: [PATCH v2] NUMA: no need for asm/numa.h when !NUMA
Content-Language: en-GB
To: Jan Beulich <jbeulich@suse.com>,
 Stefano Stabellini <sstabellini@kernel.org>,
 Bertrand Marquis <bertrand.marquis@arm.com>,
 Michal Orzel <michal.orzel@amd.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 George Dunlap <george.dunlap@citrix.com>, Wei Liu <wl@xen.org>,
 Shawn Anastasio <sanastasio@raptorengineering.com>,
 Oleksii Kurochko <oleksii.kurochko@gmail.com>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
References: <94cffa48-5e31-4557-827d-c6dec6031d05@suse.com>
 <32ab102b-d91a-4076-a9df-94f08c7e6fa0@suse.com>
From: Julien Grall <julien@xen.org>
In-Reply-To: <32ab102b-d91a-4076-a9df-94f08c7e6fa0@suse.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

Hi Jan,

On 25/01/2024 17:00, Jan Beulich wrote:
> On 08.01.2024 12:30, Jan Beulich wrote:
>> There's no point in every architecture carrying the same stubs for the
>> case when NUMA isn't enabled (or even supported). Move all of that to
>> xen/numa.h; replace explicit uses of asm/numa.h in common code. Make
>> inclusion of asm/numa.h dependent upon NUMA=y.
>>
>> Drop the no longer applicable "implement NUMA support" comments - in a
>> !NUMA section this simply makes no sense.
>>
>> Signed-off-by: Jan Beulich <jbeulich@suse.com>
> 
> May I please ask for an Arm ack (or otherwise) here?

Thanks for the reminder.

Acked-by: Julien Grall <jgrall@amazon.com>

Cheers,

-- 
Julien Grall


From xen-devel-bounces@lists.xenproject.org Thu Jan 25 18:26:41 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 25 Jan 2024 18:26:41 +0000
Received: from list by lists.xenproject.org with outflank-mailman.671718.1045211 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rT4Qx-0000v9-I8; Thu, 25 Jan 2024 18:26:39 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 671718.1045211; Thu, 25 Jan 2024 18:26:39 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rT4Qx-0000v2-Ez; Thu, 25 Jan 2024 18:26:39 +0000
Received: by outflank-mailman (input) for mailman id 671718;
 Thu, 25 Jan 2024 18:26:38 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>) id 1rT4Qw-0000uw-1d
 for xen-devel@lists.xenproject.org; Thu, 25 Jan 2024 18:26:38 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rT4Qv-00026t-8c; Thu, 25 Jan 2024 18:26:37 +0000
Received: from 54-240-197-233.amazon.com ([54.240.197.233] helo=[192.168.5.50])
 by xenbits.xenproject.org with esmtpsa
 (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rT4Qv-0007Vo-3A; Thu, 25 Jan 2024 18:26:37 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
	s=20200302mail; h=Content-Transfer-Encoding:Content-Type:In-Reply-To:From:
	References:Cc:To:Subject:MIME-Version:Date:Message-ID;
	bh=7d+MbCETnagjlE54CNi1Kd+FcS46f6lvW1HGuk+vg8c=; b=Ie6T0LWF5xivqSVxl352dfNWO4
	RYJh2k2UVjhyNBLs34WBNuSq3r/V7ohOZhVS8/1+xZCwlmE9cqvjBrLcm+XljcUrc5Tif+0+tA/y4
	cdTaTAJebtChB3uRPUgjDHs2MVtm6kRcjFtRTWdtPh71jmtEettk7/yK1Lvw5O+erkDE=;
Message-ID: <29f00ed3-d030-4875-905e-ccaba3d6e308@xen.org>
Date: Thu, 25 Jan 2024 18:26:35 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v5 01/13] xen/common: add cache coloring common code
Content-Language: en-GB
To: Carlo Nonato <carlo.nonato@minervasys.tech>,
 Stefano Stabellini <sstabellini@kernel.org>
Cc: xen-devel@lists.xenproject.org, Andrew Cooper
 <andrew.cooper3@citrix.com>, George Dunlap <george.dunlap@citrix.com>,
 Jan Beulich <jbeulich@suse.com>, Wei Liu <wl@xen.org>,
 Marco Solieri <marco.solieri@minervasys.tech>
References: <20240102095138.17933-1-carlo.nonato@minervasys.tech>
 <20240102095138.17933-2-carlo.nonato@minervasys.tech>
 <1ac0e50d-0551-4abb-a929-03d5b0be25c1@xen.org>
 <alpine.DEB.2.22.394.2401041343100.1322202@ubuntu-linux-20-04-desktop>
 <CAG+AhRVJ7jnTzdaPMqJxOjsRMhLCN8OinRQYC=6-DYYc32vEpw@mail.gmail.com>
From: Julien Grall <julien@xen.org>
In-Reply-To: <CAG+AhRVJ7jnTzdaPMqJxOjsRMhLCN8OinRQYC=6-DYYc32vEpw@mail.gmail.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit

Hi Carlo,

On 05/01/2024 16:32, Carlo Nonato wrote:
> Hi Stefano, Julien,
> 
> On Thu, Jan 4, 2024 at 10:43 PM Stefano Stabellini
> <sstabellini@kernel.org> wrote:
>>
>> On Thu, 4 Jan 2024, Julien Grall wrote:
>>> Hi,
>>>
>>> On 02/01/2024 09:51, Carlo Nonato wrote:
>>>> This commit adds the Last Level Cache (LLC) coloring common header, Kconfig
>>>> options and functions. Since this is an arch specific feature, actual
>>>> implementation is postponed to later patches and Kconfig options are placed
>>>> under xen/arch.
>>>>
>>>> LLC colors are a property of the domain, so the domain struct has to be
>>>> extended.
>>>>
>>>> Based on original work from: Luca Miccio <lucmiccio@gmail.com>
>>>>
>>>> Signed-off-by: Carlo Nonato <carlo.nonato@minervasys.tech>
>>>> Signed-off-by: Marco Solieri <marco.solieri@minervasys.tech>
>>>> ---
>>>> v5:
>>>> - used - instead of _ for filenames
>>>> - removed domain_create_llc_colored()
>>>> - removed stub functions
>>>> - coloring domain fields are now #ifdef protected
>>>> v4:
>>>> - Kconfig options moved to xen/arch
>>>> - removed range for CONFIG_NR_LLC_COLORS
>>>> - added "llc_coloring_enabled" global to later implement the boot-time
>>>>     switch
>>>> - added domain_create_llc_colored() to be able to pass colors
>>>> - added is_domain_llc_colored() macro
>>>> ---
>>>>    xen/arch/Kconfig               | 16 ++++++++++++
>>>>    xen/common/Kconfig             |  3 +++
>>>>    xen/common/domain.c            |  4 +++
>>>>    xen/common/keyhandler.c        |  4 +++
>>>>    xen/include/xen/llc-coloring.h | 46 ++++++++++++++++++++++++++++++++++
>>>>    xen/include/xen/sched.h        |  5 ++++
>>>>    6 files changed, 78 insertions(+)
>>>>    create mode 100644 xen/include/xen/llc-coloring.h
>>>>
>>>> diff --git a/xen/arch/Kconfig b/xen/arch/Kconfig
>>>> index 67ba38f32f..aad7e9da38 100644
>>>> --- a/xen/arch/Kconfig
>>>> +++ b/xen/arch/Kconfig
>>>> @@ -31,3 +31,19 @@ config NR_NUMA_NODES
>>>>        associated with multiple-nodes management. It is the upper bound of
>>>>        the number of NUMA nodes that the scheduler, memory allocation and
>>>>        other NUMA-aware components can handle.
>>>> +
>>>> +config LLC_COLORING
>>>> +   bool "Last Level Cache (LLC) coloring" if EXPERT
>>>
>>> While look at the rest of the series, I noticed that SUPPORT.md is not
>>> updated. Can this be done?
>>>
>>> I think the feature should be in experimental for now. We can decide to switch
>>> to tech preview before Xen 4.19 is out and the support is completed.
>>>
>>> Stefano, what do you think?
>>
>> That's reasonable
> 
> I would put it under "Resource management" features. Are you ok with it?

I think this wants to go under "## Memory Management". The section 
"Resource management" seems to be more related to the scheduler.

Cheers,

-- 
Julien Grall


From xen-devel-bounces@lists.xenproject.org Thu Jan 25 18:28:20 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 25 Jan 2024 18:28:20 +0000
Received: from list by lists.xenproject.org with outflank-mailman.671723.1045220 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rT4SY-0001lp-Rb; Thu, 25 Jan 2024 18:28:18 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 671723.1045220; Thu, 25 Jan 2024 18:28:18 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rT4SY-0001li-Op; Thu, 25 Jan 2024 18:28:18 +0000
Received: by outflank-mailman (input) for mailman id 671723;
 Thu, 25 Jan 2024 18:28:17 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>) id 1rT4SX-0001lc-4r
 for xen-devel@lists.xenproject.org; Thu, 25 Jan 2024 18:28:17 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rT4SV-0002AW-Uo; Thu, 25 Jan 2024 18:28:15 +0000
Received: from 54-240-197-233.amazon.com ([54.240.197.233] helo=[192.168.5.50])
 by xenbits.xenproject.org with esmtpsa
 (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rT4SV-0007Vo-NP; Thu, 25 Jan 2024 18:28:15 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
	s=20200302mail; h=Content-Transfer-Encoding:Content-Type:In-Reply-To:From:
	References:Cc:To:Subject:MIME-Version:Date:Message-ID;
	bh=dLatqXr+T4H8QRyAXhC2bYtpdxKpdsdYE4FNCs38yNk=; b=U34RWfoYPaQw1hw8SMwb6ZNVaF
	gVHuxESCsxVCEY/B7QYvWRcoasyqWw/4mEmiPDjBbCkti5/fB4QCnTVgB2xp5OoWm5ZToYlRJQaHq
	JXOyBNhEEcSgC6EM1G+VPNvteDcopkET5aBsyO+HLW/e/01ZJl2107KXIDkiacgeHWSw=;
Message-ID: <2e788726-2216-48f2-ad9b-b4dca963bdd9@xen.org>
Date: Thu, 25 Jan 2024 18:28:13 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v5 12/13] xen/arm: add Xen cache colors command line
 parameter
Content-Language: en-GB
To: Stefano Stabellini <sstabellini@kernel.org>
Cc: Carlo Nonato <carlo.nonato@minervasys.tech>,
 xen-devel@lists.xenproject.org, Luca Miccio <lucmiccio@gmail.com>,
 Andrew Cooper <andrew.cooper3@citrix.com>,
 George Dunlap <george.dunlap@citrix.com>, Jan Beulich <jbeulich@suse.com>,
 Wei Liu <wl@xen.org>, Bertrand Marquis <bertrand.marquis@arm.com>,
 Michal Orzel <michal.orzel@amd.com>,
 Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
 Marco Solieri <marco.solieri@minervasys.tech>
References: <20240102095138.17933-1-carlo.nonato@minervasys.tech>
 <20240102095138.17933-13-carlo.nonato@minervasys.tech>
 <7e69b9de-8156-4944-87be-207ad79f2df9@xen.org>
 <alpine.DEB.2.22.394.2401051449260.3675@ubuntu-linux-20-04-desktop>
From: Julien Grall <julien@xen.org>
In-Reply-To: <alpine.DEB.2.22.394.2401051449260.3675@ubuntu-linux-20-04-desktop>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

Hi Stefano,

On 05/01/2024 23:09, Stefano Stabellini wrote:
> On Fri, 5 Jan 2024, Julien Grall wrote:
>> Hi,
>>
>> On 02/01/2024 09:51, Carlo Nonato wrote:
>>> From: Luca Miccio <lucmiccio@gmail.com>
>>>
>>> This commit adds a new command line parameter to configure Xen cache colors.
>>> These colors can be dumped with the cache coloring info debug-key.
>>>
>>> By default, Xen uses the first color.
>>> Benchmarking the VM interrupt response time provides an estimation of
>>> LLC usage by Xen's most latency-critical runtime task. Results on Arm
>>> Cortex-A53 on Xilinx Zynq UltraScale+ XCZU9EG show that one color, which
>>> reserves 64 KiB of L2, is enough to attain best responsiveness.
>>
>> Would you be able to share some numbers? This is quite helpful if in the
>> future we need to revise the default.
> 
> Here are the numbers for Xen 1 color vs Xen 2 colors.
> 
> We are measuring IRQ lantecy using a baremetal app (a unikernel) that
> has 0.5 us latency on native without interference.
> 
> Running the same application on Xen with 3 interference agents (3 other
> VMs that keep thrashing the cache):
> 
> - Xen 1 color latency:  3.1 us
> - Xen 2 color2 latency: 3.1 us

Thanks for sharing the numbers. Would it be possible to include them in 
the commit message?

Cheers,

-- 
Julien Grall


From xen-devel-bounces@lists.xenproject.org Thu Jan 25 18:39:03 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 25 Jan 2024 18:39:03 +0000
Received: from list by lists.xenproject.org with outflank-mailman.671731.1045231 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rT4co-0004yQ-P9; Thu, 25 Jan 2024 18:38:54 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 671731.1045231; Thu, 25 Jan 2024 18:38:54 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rT4co-0004yJ-LD; Thu, 25 Jan 2024 18:38:54 +0000
Received: by outflank-mailman (input) for mailman id 671731;
 Thu, 25 Jan 2024 18:38:53 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>) id 1rT4cn-0004yD-SE
 for xen-devel@lists.xenproject.org; Thu, 25 Jan 2024 18:38:53 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rT4cn-0002N1-7L; Thu, 25 Jan 2024 18:38:53 +0000
Received: from 54-240-197-233.amazon.com ([54.240.197.233] helo=[192.168.5.50])
 by xenbits.xenproject.org with esmtpsa
 (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rT4cm-00085r-Vi; Thu, 25 Jan 2024 18:38:53 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
	s=20200302mail; h=Content-Transfer-Encoding:Content-Type:In-Reply-To:From:
	References:Cc:To:Subject:MIME-Version:Date:Message-ID;
	bh=SHSwFOjAUhi+bk6nvItESzNwlg2aQIOOYgGaTS9Wc6w=; b=EtQQIRhErv6n4/RIHOG81mgxLU
	+NRPLFwP88g7nCr080kthYhY+4C7WZygtFZEriIw+/P+6bJcv+G41vFdUuA1wW9Q9ANAa1VHhnwSy
	uzhYNa1NKFIg58zX8Nmvv8/vKz0bQI67twlT8L8dVESGdY/vUAyaiwakbTIxxzmgSgRc=;
Message-ID: <5bb011fe-3026-483a-8529-19294f1ad001@xen.org>
Date: Thu, 25 Jan 2024 18:38:50 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v1 repost 0/4] xen/arm64: Rework the MMU-off code (idmap)
 so it is self-contained
Content-Language: en-GB
To: xen-devel@lists.xenproject.org
Cc: carlo.nonato@minervasys.tech, Julien Grall <jgrall@amazon.com>,
 Stefano Stabellini <sstabellini@kernel.org>,
 Bertrand Marquis <bertrand.marquis@arm.com>,
 Michal Orzel <michal.orzel@amd.com>,
 Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>
References: <20240116143709.86584-1-julien@xen.org>
From: Julien Grall <julien@xen.org>
In-Reply-To: <20240116143709.86584-1-julien@xen.org>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

Hi,

On 16/01/2024 14:37, Julien Grall wrote:
> From: Julien Grall <jgrall@amazon.com>
> 
> Hi all,
> 
> Right now, the MMU-off code will access may access data that are either
> in .rodata or .data. With the enablement of cache coloring, Xen may
> not be physcally contiguous anymore when secondary CPUs are brought up.
> 
> There are multiple way to solve this problem. The first is to keep
> a copy of Xen physically contiguous in memory. The downside is this
> means we are using up to 8MB (maximum size of Xen) when only a few
> KBs is necessary.
> 
> This series is reworking the logic so all the MMU-off code is now
> self-contained for secondary boot CPUs on arm64.
> 
> On arm32, this is not yet possible because secondary CPUs needs to
> rebuild boot page-tables.
> 
> Cheers,
> 
> Julien Grall (4):
>    arm/mmu: Move init_ttbr to a new section .data.idmap
>    arm/smpboot: Move smp_up_cpu to a new section .data.idmap
>    xen/arm64: head: Use PRINT_ID() for secondary CPU MMU-off boot code

The first 3 patches are now committed.

Cheers,

-- 
Julien Grall


From xen-devel-bounces@lists.xenproject.org Thu Jan 25 18:47:20 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 25 Jan 2024 18:47:20 +0000
Received: from list by lists.xenproject.org with outflank-mailman.671737.1045240 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rT4kt-0007aR-H8; Thu, 25 Jan 2024 18:47:15 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 671737.1045240; Thu, 25 Jan 2024 18:47:15 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rT4kt-0007aK-Ed; Thu, 25 Jan 2024 18:47:15 +0000
Received: by outflank-mailman (input) for mailman id 671737;
 Thu, 25 Jan 2024 18:47:14 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>) id 1rT4ks-0007aE-2M
 for xen-devel@lists.xenproject.org; Thu, 25 Jan 2024 18:47:14 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rT4kr-0002VT-D9; Thu, 25 Jan 2024 18:47:13 +0000
Received: from 54-240-197-233.amazon.com ([54.240.197.233] helo=[192.168.5.50])
 by xenbits.xenproject.org with esmtpsa
 (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rT4kr-0008VC-6o; Thu, 25 Jan 2024 18:47:13 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
	s=20200302mail; h=Content-Transfer-Encoding:Content-Type:In-Reply-To:From:
	References:Cc:To:Subject:MIME-Version:Date:Message-ID;
	bh=1sWA3lBuGp/hPSm+43trthR5afGMOBUKC/9cdOTI3dw=; b=2g6nZyinjDgqa+etotGfRgsLxo
	bIteytAszbQVtTMdYRzCda0/rVTr8CkCy7fDp+6TEP1N9IQY0a1ML3JIhSke+J61sgoxNv0LkZx1t
	8tEuTDjfyB/kewMHQ1qaPpOLKm8nQ8kXQkjvyteNVgB0iz5QBGqXky85fh2wKwhw777k=;
Message-ID: <b0c56882-2a34-4815-95c4-5d5f360d4492@xen.org>
Date: Thu, 25 Jan 2024 18:47:11 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 22/33] tools/xenstored: add early_init() function
Content-Language: en-GB
To: Juergen Gross <jgross@suse.com>, xen-devel@lists.xenproject.org
Cc: Wei Liu <wl@xen.org>, Anthony PERARD <anthony.perard@citrix.com>
References: <20240104090055.27323-1-jgross@suse.com>
 <20240104090055.27323-23-jgross@suse.com>
From: Julien Grall <julien@xen.org>
In-Reply-To: <20240104090055.27323-23-jgross@suse.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

Hi Juergen,

On 04/01/2024 09:00, Juergen Gross wrote:
> Some xenstored initialization needs to be done in the daemon case only,
> so split it out into a new early_init() function being a stub in the
> stubdom case.
> 
> Remove the call of talloc_enable_leak_report_full(), as it serves no
> real purpose: the daemon only ever exits due to a crash, in which case
> a log of talloc()ed memory hardly has any value.
> 
> Signed-off-by: Juergen Gross <jgross@suse.com>

Reviewed-by: Julien Grall <jgrall@amazon.com>

Cheers,

-- 
Julien Grall


From xen-devel-bounces@lists.xenproject.org Thu Jan 25 18:48:53 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 25 Jan 2024 18:48:53 +0000
Received: from list by lists.xenproject.org with outflank-mailman.671740.1045250 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rT4mS-00008M-R2; Thu, 25 Jan 2024 18:48:52 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 671740.1045250; Thu, 25 Jan 2024 18:48:52 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rT4mS-00008F-OQ; Thu, 25 Jan 2024 18:48:52 +0000
Received: by outflank-mailman (input) for mailman id 671740;
 Thu, 25 Jan 2024 18:48:51 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>) id 1rT4mR-000071-Bl
 for xen-devel@lists.xenproject.org; Thu, 25 Jan 2024 18:48:51 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rT4mQ-0002Y9-R1; Thu, 25 Jan 2024 18:48:50 +0000
Received: from 54-240-197-233.amazon.com ([54.240.197.233] helo=[192.168.5.50])
 by xenbits.xenproject.org with esmtpsa
 (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rT4mQ-0008VC-LL; Thu, 25 Jan 2024 18:48:50 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
	s=20200302mail; h=Content-Transfer-Encoding:Content-Type:In-Reply-To:From:
	References:Cc:To:Subject:MIME-Version:Date:Message-ID;
	bh=j5feY0RnNWk7OxAy2CMwwYpZbICSab+r2OzITnqkZ2U=; b=WA4a84ZDUwOEfSUOifzUfkidKB
	cvmiT86yCtt1HLaBgB4rUvejCq8vyzg2p4yA47N0XPIdgpYlVLX9I7WPGduY0qKjTGLFOTpb3El2Y
	F/WU3DtjQwtgCRBwN+7XYBQokYD3ZQFsF3kY5pPKW4senc//XC5H8E91+uDn9nSuNp0w=;
Message-ID: <bcf4ef42-9528-43f3-bee0-a9523c13172a@xen.org>
Date: Thu, 25 Jan 2024 18:48:49 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 23/33] tools/xenstored: move systemd handling to
 posix.c
Content-Language: en-GB
To: Juergen Gross <jgross@suse.com>, xen-devel@lists.xenproject.org
Cc: Wei Liu <wl@xen.org>, Anthony PERARD <anthony.perard@citrix.com>
References: <20240104090055.27323-1-jgross@suse.com>
 <20240104090055.27323-24-jgross@suse.com>
From: Julien Grall <julien@xen.org>
In-Reply-To: <20240104090055.27323-24-jgross@suse.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

Hi Juergen,

On 04/01/2024 09:00, Juergen Gross wrote:
> Move systemd handling to a new late_init() function in posix.c.
> 
> This prepares a future removal of the NO_SOCKETS macro.
> 
> Signed-off-by: Juergen Gross <jgross@suse.com>

Reviewed-by: Julien Grall <jgrall@amazon.com>

Cheers,

-- 
Julien Grall


From xen-devel-bounces@lists.xenproject.org Thu Jan 25 18:54:39 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 25 Jan 2024 18:54:39 +0000
Received: from list by lists.xenproject.org with outflank-mailman.671745.1045261 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rT4rx-0002rp-EO; Thu, 25 Jan 2024 18:54:33 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 671745.1045261; Thu, 25 Jan 2024 18:54:33 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rT4rx-0002ri-BZ; Thu, 25 Jan 2024 18:54:33 +0000
Received: by outflank-mailman (input) for mailman id 671745;
 Thu, 25 Jan 2024 18:54:31 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>) id 1rT4rv-0002rc-Ri
 for xen-devel@lists.xenproject.org; Thu, 25 Jan 2024 18:54:31 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rT4rv-0002e9-0h; Thu, 25 Jan 2024 18:54:31 +0000
Received: from 54-240-197-225.amazon.com ([54.240.197.225] helo=[192.168.5.50])
 by xenbits.xenproject.org with esmtpsa
 (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rT4ru-0000Fd-PV; Thu, 25 Jan 2024 18:54:30 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
	s=20200302mail; h=Content-Transfer-Encoding:Content-Type:In-Reply-To:From:
	References:Cc:To:Subject:MIME-Version:Date:Message-ID;
	bh=r/EAGkVsGdWc3s3qAR2k/CswpTvdAD7UWy8VIbjBVhY=; b=xxsFlaQVqShH6GadGSMaq5NonM
	uw225axU/pbLmCC1uf6Q/GxVhHhVoipvDWZLvt4apmPESBHIilfp1jTTy03yIXy3pZ5jpPbb54OHO
	52G8SloC5HJ8mVXoL+rk50weFIYOMmwaIAeDjXsXwGCEa5XnoaFrMzmnx+B4jTpqeyOg=;
Message-ID: <7feae542-5b76-481e-8f2e-8dac91042a03@xen.org>
Date: Thu, 25 Jan 2024 18:54:29 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 24/33] tools/xenstored: move all log-pipe handling into
 posix.c
Content-Language: en-GB
To: Juergen Gross <jgross@suse.com>, xen-devel@lists.xenproject.org
Cc: Wei Liu <wl@xen.org>, Anthony PERARD <anthony.perard@citrix.com>
References: <20240104090055.27323-1-jgross@suse.com>
 <20240104090055.27323-25-jgross@suse.com>
From: Julien Grall <julien@xen.org>
In-Reply-To: <20240104090055.27323-25-jgross@suse.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

Hi Juergen,

On 04/01/2024 09:00, Juergen Gross wrote:
> All of the log-pipe handling is needed only when running as daemon.
> 
> Move it into posix.c. This requires to have a service function in the
> main event loop for handling the related requests and one for setting
> the fds[] array. Use a generic name for those functions, as socket
> handling can be added to them later, too.
> 
> Signed-off-by: Juergen Gross <jgross@suse.com>
> ---
> V3:
> - new patch
> ---
>   tools/xenstored/core.c   | 41 ++++-------------------------------
>   tools/xenstored/core.h   | 11 ++++++----
>   tools/xenstored/minios.c | 14 ++++++------
>   tools/xenstored/posix.c  | 46 +++++++++++++++++++++++++++++++++++++++-
>   4 files changed, 64 insertions(+), 48 deletions(-)
> 
> diff --git a/tools/xenstored/core.c b/tools/xenstored/core.c
> index 7b5e1d0c0f..650c1d1574 100644
> --- a/tools/xenstored/core.c
> +++ b/tools/xenstored/core.c
> @@ -56,7 +56,7 @@
>   
>   extern xenevtchn_handle *xce_handle; /* in domain.c */
>   static int xce_pollfd_idx = -1;
> -static struct pollfd *fds;
> +struct pollfd *fds;

The name is quite generic. So, I am not sure I like the idea to export 
it. How about passing 'fds' as an argument of handle_special_fds()?

This is still not very great (we have an array of "unknown" sized pass). 
But it is better than exporting it.

The rest LGTM.

Cheers,

-- 
Julien Grall


From xen-devel-bounces@lists.xenproject.org Thu Jan 25 19:10:28 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 25 Jan 2024 19:10:28 +0000
Received: from list by lists.xenproject.org with outflank-mailman.671752.1045270 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rT57F-0007tY-Na; Thu, 25 Jan 2024 19:10:21 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 671752.1045270; Thu, 25 Jan 2024 19:10:21 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rT57F-0007tR-Kh; Thu, 25 Jan 2024 19:10:21 +0000
Received: by outflank-mailman (input) for mailman id 671752;
 Thu, 25 Jan 2024 19:10:19 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rT57D-0007rv-TC; Thu, 25 Jan 2024 19:10:19 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rT57D-00032b-Ot; Thu, 25 Jan 2024 19:10:19 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rT57D-0006rf-AY; Thu, 25 Jan 2024 19:10:19 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rT57D-0005n6-A3; Thu, 25 Jan 2024 19:10:19 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=XTkY+N7NDYRYN0ki33gGjdw7vP7kpmNJYzqDwgTRp7Q=; b=z1OP/pYccHl2WDbeKLjReAqXFV
	CcX1hZhJjbYk1HwrQQHG/EJEGmHqXV4dmQ/ZmaKytlan/0Y/gPYTUYnDS2LMMl9RzKzGbyimZY9Xn
	6B7mkaQmSdHlQGCbVesaeOO8NJJONu3f2Rfuagy6rRUuQLiaunjmarAKWml3Hmf7fRKs=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184466-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [xen-unstable-smoke test] 184466: tolerable all pass - PUSHED
X-Osstest-Failures:
    xen-unstable-smoke:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    xen-unstable-smoke:test-arm64-arm64-xl-xsm:migrate-support-check:fail:nonblocking
    xen-unstable-smoke:test-arm64-arm64-xl-xsm:saverestore-support-check:fail:nonblocking
    xen-unstable-smoke:test-armhf-armhf-xl:migrate-support-check:fail:nonblocking
    xen-unstable-smoke:test-armhf-armhf-xl:saverestore-support-check:fail:nonblocking
X-Osstest-Versions-This:
    xen=052d78fbec6a3163281df1b4204d6d606507c4c8
X-Osstest-Versions-That:
    xen=98ae35cab0e40e59963f9f58345bf378b9522d74
From: osstest service owner <osstest-admin@xenproject.org>
Date: Thu, 25 Jan 2024 19:10:19 +0000

flight 184466 xen-unstable-smoke real [real]
http://logs.test-lab.xenproject.org/osstest/logs/184466/

Failures :-/ but no regressions.

Tests which did not succeed, but are not blocking:
 test-amd64-amd64-libvirt     15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-xsm      15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-xsm      16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl          15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          16 saverestore-support-check    fail   never pass

version targeted for testing:
 xen                  052d78fbec6a3163281df1b4204d6d606507c4c8
baseline version:
 xen                  98ae35cab0e40e59963f9f58345bf378b9522d74

Last test of basis   184440  2024-01-23 20:02:08 Z    1 days
Testing same since   184466  2024-01-25 16:02:09 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Andrew Cooper <andrew.cooper3@citrix.com>
  Jan Beulich <jbeulich@suse.com>
  Jason Andryuk <jandryuk@gmail.com>
  Roger Pau Monné <roger.pau@citrix.com>

jobs:
 build-arm64-xsm                                              pass    
 build-amd64                                                  pass    
 build-armhf                                                  pass    
 build-amd64-libvirt                                          pass    
 test-armhf-armhf-xl                                          pass    
 test-arm64-arm64-xl-xsm                                      pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64                    pass    
 test-amd64-amd64-libvirt                                     pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Pushing revision :

To xenbits.xen.org:/home/xen/git/xen.git
   98ae35cab0..052d78fbec  052d78fbec6a3163281df1b4204d6d606507c4c8 -> smoke


From xen-devel-bounces@lists.xenproject.org Thu Jan 25 20:22:40 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 25 Jan 2024 20:22:40 +0000
Received: from list by lists.xenproject.org with outflank-mailman.671760.1045280 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rT6Ex-0007QI-SY; Thu, 25 Jan 2024 20:22:23 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 671760.1045280; Thu, 25 Jan 2024 20:22:23 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rT6Ex-0007QB-Q0; Thu, 25 Jan 2024 20:22:23 +0000
Received: by outflank-mailman (input) for mailman id 671760;
 Thu, 25 Jan 2024 20:22:22 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rT6Ew-0007Q1-2v; Thu, 25 Jan 2024 20:22:22 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rT6Ev-0004df-VU; Thu, 25 Jan 2024 20:22:21 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rT6Ev-0000ZN-Ef; Thu, 25 Jan 2024 20:22:21 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rT6Ev-0007Bb-EE; Thu, 25 Jan 2024 20:22:21 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=SDfh+LmgAPHIiSq67g+RZ7CI/X8/Kr2j06ZR1eGy8ek=; b=YsEoSfZw4eOAvqZfpGm9aqMvRi
	YQHDe+bWo+Nv12xqFe1GfkxStO4cKhgd6P60yqh0UeB6n2lRiTnZWhAQKkkwFzF3/KXWo8Aru8FlB
	VVpcQ5gHvPRE5twfnOjyPiWAyDFVif/xq9H4uuhSY0nomg4Nh+30N+bWgv8PYtYUj7r8=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184467-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [seabios test] 184467: tolerable FAIL - PUSHED
X-Osstest-Failures:
    seabios:test-amd64-amd64-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    seabios:test-amd64-i386-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    seabios:test-amd64-amd64-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    seabios:test-amd64-amd64-qemuu-nested-amd:debian-hvm-install/l1/l2:fail:nonblocking
    seabios:test-amd64-i386-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    seabios:test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    seabios:test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
X-Osstest-Versions-This:
    seabios=3f082f38bf0050270dc65abf256f7014f6c0c4a8
X-Osstest-Versions-That:
    seabios=3ae8888611e59ad82a59df7bead143662036d946
From: osstest service owner <osstest-admin@xenproject.org>
Date: Thu, 25 Jan 2024 20:22:21 +0000

flight 184467 seabios real [real]
http://logs.test-lab.xenproject.org/osstest/logs/184467/

Failures :-/ but no regressions.

Tests which did not succeed, but are not blocking:
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 184461
 test-amd64-i386-xl-qemuu-win7-amd64 19 guest-stop             fail like 184461
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 184461
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 184461
 test-amd64-i386-xl-qemuu-ws16-amd64 19 guest-stop             fail like 184461
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass

version targeted for testing:
 seabios              3f082f38bf0050270dc65abf256f7014f6c0c4a8
baseline version:
 seabios              3ae8888611e59ad82a59df7bead143662036d946

Last test of basis   184461  2024-01-25 09:12:41 Z    0 days
Testing same since   184467  2024-01-25 16:41:04 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Andrej Krutak andrej.krutak@sysgo.com
  Andrej Kruták <andrej.krutak@sysgo.com>
  Gerd Hoffmann <kraxel@redhat.com>

jobs:
 build-amd64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm           pass    
 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm            pass    
 test-amd64-amd64-xl-qemuu-debianhvm-i386-xsm                 pass    
 test-amd64-i386-xl-qemuu-debianhvm-i386-xsm                  pass    
 test-amd64-amd64-qemuu-nested-amd                            fail    
 test-amd64-i386-qemuu-rhel6hvm-amd                           pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64                    pass    
 test-amd64-i386-xl-qemuu-debianhvm-amd64                     pass    
 test-amd64-amd64-qemuu-freebsd11-amd64                       pass    
 test-amd64-amd64-qemuu-freebsd12-amd64                       pass    
 test-amd64-amd64-xl-qemuu-win7-amd64                         fail    
 test-amd64-i386-xl-qemuu-win7-amd64                          fail    
 test-amd64-amd64-xl-qemuu-ws16-amd64                         fail    
 test-amd64-i386-xl-qemuu-ws16-amd64                          fail    
 test-amd64-amd64-xl-qemuu-dmrestrict-amd64-dmrestrict        pass    
 test-amd64-i386-xl-qemuu-dmrestrict-amd64-dmrestrict         pass    
 test-amd64-amd64-qemuu-nested-intel                          pass    
 test-amd64-i386-qemuu-rhel6hvm-intel                         pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64-shadow             pass    
 test-amd64-i386-xl-qemuu-debianhvm-amd64-shadow              pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Pushing revision :

To xenbits.xen.org:/home/xen/git/osstest/seabios.git
   3ae8888..3f082f3  3f082f38bf0050270dc65abf256f7014f6c0c4a8 -> xen-tested-master


From xen-devel-bounces@lists.xenproject.org Thu Jan 25 20:25:10 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 25 Jan 2024 20:25:10 +0000
Received: from list by lists.xenproject.org with outflank-mailman.671766.1045291 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rT6Hc-00082z-F5; Thu, 25 Jan 2024 20:25:08 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 671766.1045291; Thu, 25 Jan 2024 20:25:08 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rT6Hc-00082s-BK; Thu, 25 Jan 2024 20:25:08 +0000
Received: by outflank-mailman (input) for mailman id 671766;
 Thu, 25 Jan 2024 20:25:06 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=oGM9=JD=m5p.com=ehem@srs-se1.protection.inumbo.net>)
 id 1rT6Ha-00082g-Pf
 for xen-devel@lists.xenproject.org; Thu, 25 Jan 2024 20:25:06 +0000
Received: from mailhost.m5p.com (mailhost.m5p.com [74.104.188.4])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id d1aede21-bbbf-11ee-98f5-efadbce2ee36;
 Thu, 25 Jan 2024 21:25:04 +0100 (CET)
Received: from m5p.com (mailhost.m5p.com [IPv6:2001:470:1f07:15ff:0:0:0:f7])
 by mailhost.m5p.com (8.17.1/8.15.2) with ESMTPS id 40PKOr43077921
 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NO);
 Thu, 25 Jan 2024 15:24:59 -0500 (EST) (envelope-from ehem@m5p.com)
Received: (from ehem@localhost)
 by m5p.com (8.17.1/8.15.2/Submit) id 40PKOrMA077920;
 Thu, 25 Jan 2024 12:24:53 -0800 (PST) (envelope-from ehem)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: d1aede21-bbbf-11ee-98f5-efadbce2ee36
Date: Thu, 25 Jan 2024 12:24:53 -0800
From: Elliott Mitchell <ehem+xen@m5p.com>
To: xen-devel@lists.xenproject.org
Cc: Jan Beulich <jbeulich@suse.com>, Andrew Cooper <andrew.cooper3@citrix.com>
Subject: Serious AMD-Vi issue
Message-ID: <ZbLDlRi0vctlhsNp@mattapan.m5p.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
X-Spam-Status: No, score=0.0 required=10.0 tests=KHOP_HELO_FCRDNS
	autolearn=unavailable autolearn_force=no version=4.0.0
X-Spam-Checker-Version: SpamAssassin 4.0.0 (2022-12-14) on mattapan.m5p.com

Apparently this was first noticed with 4.14, but more recently I've been
able to reproduce the issue:

https://bugs.debian.org/988477

The original observation features MD-RAID1 using a pair of Samsung
SATA-attached flash devices.  The main line shows up in `xl dmesg`:

(XEN) AMD-Vi: IO_PAGE_FAULT: DDDD:bb:dd.f d0 addr ffffff???????000 flags 0x8 I

Where the device points at the SATA controller.  I've ended up
reproducing this with some noticable differences.

A major goal of RAID is to have different devices fail at different
times.  Hence my initial run had a Samsung device plus a device from
another reputable flash manufacturer.

I initially noticed this due to messages in domain 0's dmesg about
errors from the SATA device.  Wasn't until rather later that I noticed
the IOMMU warnings in Xen's dmesg (perhaps post-domain 0 messages should
be duplicated into domain 0's dmesg?).

All of the failures consistently pointed at the Samsung device.  Due to
the expectation it would fail first (lower quality offering with
lesser guarantees), I proceeded to replace it with a NVMe device.

With some monitoring I discovered the NVMe device was now triggering
IOMMU errors, though not nearly as many as the Samsung SATA device did.
As such looks like AMD-Vi plus MD-RAID1 appears to be exposing some sort
of IOMMU issue with Xen.


All I can do is offer speculation about the underlying cause.  There
does seem to be a pattern of higher-performance flash storage devices
being more severely effected.

I was speculating about the issue being the MD-RAID1 driver abusing
Linux's DMA infrastructure in some fashion.

Upon further consideration, I'm wondering if this is perhaps a latency
issue.  I imagine there is some sort of flush after the IOMMU tables are
modified.  Perhaps the Samsung SATA (and all NVMe) devices were trying to
execute commands before reloading the IOMMU tables is complete.


-- 
(\___(\___(\______          --=> 8-) EHM <=--          ______/)___/)___/)
 \BS (    |         ehem+sigmsg@m5p.com  PGP 87145445         |    )   /
  \_CS\   |  _____  -O #include <stddisclaimer.h> O-   _____  |   /  _/
8A19\___\_|_/58D2 7E3D DDF4 7BA6 <-PGP-> 41D1 B375 37D0 8714\_|_/___/5445




From xen-devel-bounces@lists.xenproject.org Thu Jan 25 22:31:12 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 25 Jan 2024 22:31:12 +0000
Received: from list by lists.xenproject.org with outflank-mailman.671807.1045318 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rT8FL-0004kK-IM; Thu, 25 Jan 2024 22:30:55 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 671807.1045318; Thu, 25 Jan 2024 22:30:55 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rT8FL-0004kD-DA; Thu, 25 Jan 2024 22:30:55 +0000
Received: by outflank-mailman (input) for mailman id 671807;
 Thu, 25 Jan 2024 22:30:54 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rT8FK-0004k3-2M; Thu, 25 Jan 2024 22:30:54 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rT8FJ-0007T5-UD; Thu, 25 Jan 2024 22:30:53 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rT8FJ-0003dC-F5; Thu, 25 Jan 2024 22:30:53 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rT8FJ-000413-Ek; Thu, 25 Jan 2024 22:30:53 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=oOi5UUVSu4EI+SszqOX08PkXzsfrhuunKwuFxVyVT3I=; b=nGYiLavq8n1Edxl7nkhi76wbCa
	bIFiWkZ+/d7unWymSfx92GsdcOwZpOrorYUhcJYoPOb298wwREY7NHH8MQzf+tAAQdd+ykt1Av1+y
	tg+ktq3f8EnFQoaoCLiJLWDrTufKXAlPrlcRlWG/T4CCl5sfeWLN4P61rJzcH1PcZKfQ=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184468-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [xen-unstable-smoke test] 184468: tolerable all pass - PUSHED
X-Osstest-Failures:
    xen-unstable-smoke:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    xen-unstable-smoke:test-arm64-arm64-xl-xsm:migrate-support-check:fail:nonblocking
    xen-unstable-smoke:test-arm64-arm64-xl-xsm:saverestore-support-check:fail:nonblocking
    xen-unstable-smoke:test-armhf-armhf-xl:migrate-support-check:fail:nonblocking
    xen-unstable-smoke:test-armhf-armhf-xl:saverestore-support-check:fail:nonblocking
X-Osstest-Versions-This:
    xen=dbdd7e8df75030d0b1097eb5a1b3c3cb378a657b
X-Osstest-Versions-That:
    xen=052d78fbec6a3163281df1b4204d6d606507c4c8
From: osstest service owner <osstest-admin@xenproject.org>
Date: Thu, 25 Jan 2024 22:30:53 +0000

flight 184468 xen-unstable-smoke real [real]
http://logs.test-lab.xenproject.org/osstest/logs/184468/

Failures :-/ but no regressions.

Tests which did not succeed, but are not blocking:
 test-amd64-amd64-libvirt     15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-xsm      15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-xsm      16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl          15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          16 saverestore-support-check    fail   never pass

version targeted for testing:
 xen                  dbdd7e8df75030d0b1097eb5a1b3c3cb378a657b
baseline version:
 xen                  052d78fbec6a3163281df1b4204d6d606507c4c8

Last test of basis   184466  2024-01-25 16:02:09 Z    0 days
Testing same since   184468  2024-01-25 20:03:47 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Andrew Cooper <andrew.cooper3@citrix.com>
  Julien Grall <jgrall@amazon.com>
  Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
  Roger Pau Monne <roger.pau@citrix.com>
  Roger Pau Monné <roger.pau@citrix.com>

jobs:
 build-arm64-xsm                                              pass    
 build-amd64                                                  pass    
 build-armhf                                                  pass    
 build-amd64-libvirt                                          pass    
 test-armhf-armhf-xl                                          pass    
 test-arm64-arm64-xl-xsm                                      pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64                    pass    
 test-amd64-amd64-libvirt                                     pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Pushing revision :

To xenbits.xen.org:/home/xen/git/xen.git
   052d78fbec..dbdd7e8df7  dbdd7e8df75030d0b1097eb5a1b3c3cb378a657b -> smoke


From xen-devel-bounces@lists.xenproject.org Thu Jan 25 23:22:53 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 25 Jan 2024 23:22:53 +0000
Received: from list by lists.xenproject.org with outflank-mailman.671816.1045327 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rT93X-00030w-E8; Thu, 25 Jan 2024 23:22:47 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 671816.1045327; Thu, 25 Jan 2024 23:22:47 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rT93X-00030p-99; Thu, 25 Jan 2024 23:22:47 +0000
Received: by outflank-mailman (input) for mailman id 671816;
 Thu, 25 Jan 2024 23:22:46 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rT93W-00030f-Ky; Thu, 25 Jan 2024 23:22:46 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rT93W-00008W-9Q; Thu, 25 Jan 2024 23:22:46 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rT93V-0004qs-Sg; Thu, 25 Jan 2024 23:22:45 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rT93V-00044X-SF; Thu, 25 Jan 2024 23:22:45 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=NbzNdxG6c+gF0tPtBbE+7rw88l3Ykrxe3NtkL7Y4S2U=; b=CEDYbZTLGCv/HyVtc0VflfH+Xm
	xQvJeob/4F05zuIy8Cj48p5b68dnb/KN3vgWoHCgpybRX2ci4q1MUAoeb4CJMnK59sb0gzqNvunjz
	ATPlOXWcZqh2ZI5l02Xd6tAWUxO40TWm7R7q/8k673i/nMOwnu5nNT1KtlXYeGAT4xF8=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184458-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [libvirt test] 184458: tolerable all pass - PUSHED
X-Osstest-Failures:
    libvirt:test-armhf-armhf-libvirt:saverestore-support-check:fail:nonblocking
    libvirt:test-armhf-armhf-libvirt-qcow2:saverestore-support-check:fail:nonblocking
    libvirt:test-armhf-armhf-libvirt-raw:saverestore-support-check:fail:nonblocking
    libvirt:test-amd64-amd64-libvirt-xsm:migrate-support-check:fail:nonblocking
    libvirt:test-amd64-i386-libvirt-xsm:migrate-support-check:fail:nonblocking
    libvirt:test-amd64-i386-libvirt:migrate-support-check:fail:nonblocking
    libvirt:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    libvirt:test-arm64-arm64-libvirt:migrate-support-check:fail:nonblocking
    libvirt:test-arm64-arm64-libvirt:saverestore-support-check:fail:nonblocking
    libvirt:test-arm64-arm64-libvirt-xsm:migrate-support-check:fail:nonblocking
    libvirt:test-arm64-arm64-libvirt-xsm:saverestore-support-check:fail:nonblocking
    libvirt:test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    libvirt:test-armhf-armhf-libvirt:migrate-support-check:fail:nonblocking
    libvirt:test-amd64-amd64-libvirt-vhd:migrate-support-check:fail:nonblocking
    libvirt:test-arm64-arm64-libvirt-qcow2:migrate-support-check:fail:nonblocking
    libvirt:test-arm64-arm64-libvirt-qcow2:saverestore-support-check:fail:nonblocking
    libvirt:test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    libvirt:test-amd64-i386-libvirt-raw:migrate-support-check:fail:nonblocking
    libvirt:test-arm64-arm64-libvirt-raw:migrate-support-check:fail:nonblocking
    libvirt:test-arm64-arm64-libvirt-raw:saverestore-support-check:fail:nonblocking
    libvirt:test-armhf-armhf-libvirt-qcow2:migrate-support-check:fail:nonblocking
    libvirt:test-armhf-armhf-libvirt-raw:migrate-support-check:fail:nonblocking
X-Osstest-Versions-This:
    libvirt=a27982ed54c430e2f5caf9c5e01eae49d7c4cd1e
X-Osstest-Versions-That:
    libvirt=91f9a9fb4fc0d34ed8d7a869de3d9f87687c3618
From: osstest service owner <osstest-admin@xenproject.org>
Date: Thu, 25 Jan 2024 23:22:45 +0000

flight 184458 libvirt real [real]
http://logs.test-lab.xenproject.org/osstest/logs/184458/

Failures :-/ but no regressions.

Tests which did not succeed, but are not blocking:
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 184445
 test-armhf-armhf-libvirt-qcow2 15 saverestore-support-check   fail like 184445
 test-armhf-armhf-libvirt-raw 15 saverestore-support-check    fail  like 184445
 test-amd64-amd64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-amd64-i386-libvirt-xsm  15 migrate-support-check        fail   never pass
 test-amd64-i386-libvirt      15 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt     15 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt     15 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt     16 saverestore-support-check    fail   never pass
 test-arm64-arm64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-xsm 16 saverestore-support-check    fail   never pass
 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-armhf-armhf-libvirt     15 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt-vhd 14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-qcow2 14 migrate-support-check        fail never pass
 test-arm64-arm64-libvirt-qcow2 15 saverestore-support-check    fail never pass
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-amd64-i386-libvirt-raw  14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 15 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-qcow2 14 migrate-support-check        fail never pass
 test-armhf-armhf-libvirt-raw 14 migrate-support-check        fail   never pass

version targeted for testing:
 libvirt              a27982ed54c430e2f5caf9c5e01eae49d7c4cd1e
baseline version:
 libvirt              91f9a9fb4fc0d34ed8d7a869de3d9f87687c3618

Last test of basis   184445  2024-01-24 04:20:28 Z    1 days
Testing same since   184458  2024-01-25 04:20:28 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Alexandra Diupina <adiupina@astralinux.ru>
  Egor Makrushin <emakrushin@astralinux.ru>
  Göran Uddeborg <goeran@uddeborg.se>
  Jonathon Jongsma <jjongsma@redhat.com>
  Peter Krempa <pkrempa@redhat.com>

jobs:
 build-amd64-xsm                                              pass    
 build-arm64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64                                                  pass    
 build-arm64                                                  pass    
 build-armhf                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-arm64-libvirt                                          pass    
 build-armhf-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-pvops                                            pass    
 build-arm64-pvops                                            pass    
 build-armhf-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm           pass    
 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm            pass    
 test-amd64-amd64-libvirt-xsm                                 pass    
 test-arm64-arm64-libvirt-xsm                                 pass    
 test-amd64-i386-libvirt-xsm                                  pass    
 test-amd64-amd64-libvirt                                     pass    
 test-arm64-arm64-libvirt                                     pass    
 test-armhf-armhf-libvirt                                     pass    
 test-amd64-i386-libvirt                                      pass    
 test-amd64-amd64-libvirt-pair                                pass    
 test-amd64-i386-libvirt-pair                                 pass    
 test-arm64-arm64-libvirt-qcow2                               pass    
 test-armhf-armhf-libvirt-qcow2                               pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-armhf-armhf-libvirt-raw                                 pass    
 test-amd64-i386-libvirt-raw                                  pass    
 test-amd64-amd64-libvirt-vhd                                 pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Pushing revision :

To xenbits.xen.org:/home/xen/git/libvirt.git
   91f9a9fb4f..a27982ed54  a27982ed54c430e2f5caf9c5e01eae49d7c4cd1e -> xen-tested-master


From xen-devel-bounces@lists.xenproject.org Thu Jan 25 23:43:46 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Thu, 25 Jan 2024 23:43:46 +0000
Received: from list by lists.xenproject.org with outflank-mailman.671823.1045338 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rT9Na-00060I-3Q; Thu, 25 Jan 2024 23:43:30 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 671823.1045338; Thu, 25 Jan 2024 23:43:30 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rT9NZ-00060B-UB; Thu, 25 Jan 2024 23:43:29 +0000
Received: by outflank-mailman (input) for mailman id 671823;
 Thu, 25 Jan 2024 23:43:28 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=f5FC=JD=infradead.org=rdunlap@srs-se1.protection.inumbo.net>)
 id 1rT9NW-0005zJ-Lu
 for xen-devel@lists.xenproject.org; Thu, 25 Jan 2024 23:43:28 +0000
Received: from bombadil.infradead.org (bombadil.infradead.org
 [2607:7c80:54:3::133])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 87640590-bbdb-11ee-8a43-1f161083a0e0;
 Fri, 26 Jan 2024 00:43:24 +0100 (CET)
Received: from [50.53.50.0] (helo=[192.168.254.15])
 by bombadil.infradead.org with esmtpsa (Exim 4.97.1 #2 (Red Hat Linux))
 id 1rT9NQ-00000002Uqr-3oBl; Thu, 25 Jan 2024 23:43:21 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 87640590-bbdb-11ee-8a43-1f161083a0e0
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=infradead.org; s=bombadil.20210309; h=In-Reply-To:From:References:Cc:To:
	Subject:MIME-Version:Date:Message-ID:Content-Type:Sender:Reply-To:
	Content-Transfer-Encoding:Content-ID:Content-Description;
	bh=KYEJSDYweEkYWVN88OQ8zkLn+eIZYAv8k/oqK/FDpbs=; b=VDzJlbZtHTJLA/D/C9vAPOlMpG
	xt6T5twlNO6E7muqY3BBvea28mWpCdcHgXs2XRFRIXmDKDdqfUeUkSwO9XUqfFQDPYouwfjKvY6WG
	J0yuiGlfsYt9XTT15jYhYBp8+ckajgbawHgfKLZN0uyVRDJrOAgJbcVqVo1z8mOVpJQgZXsuXt5nY
	Qi3EqezAEvfh1OaS8GO9QzEXzTc3AORlabg3o6dfk03z8kiJZQzmbcsD3CCMr8WNvtZD4IpmVKNzY
	W6f+aTWZ/DPUnufimWF9XrZ9UrNh6t91nR/a7fLJ0HEutdJXX2Xt2Tt6s6uA+GK886viJDWV6grA6
	HikXPBNw==;
Content-Type: multipart/mixed; boundary="------------BXi97aiqPtiOomFKSZnu7BMC"
Message-ID: <044e50c4-c939-4bda-8c0a-82863425438e@infradead.org>
Date: Thu, 25 Jan 2024 15:43:20 -0800
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: linux-next: Tree for Jan 25 (arch/x86/xen/mmu_pv.o)
Content-Language: en-US
To: Stephen Rothwell <sfr@canb.auug.org.au>,
 Linux Next Mailing List <linux-next@vger.kernel.org>
Cc: Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
 Juergen Gross <jgross@suse.com>, Boris Ostrovsky
 <boris.ostrovsky@oracle.com>, xen-devel@lists.xenproject.org
References: <20240125144301.2b6884d4@canb.auug.org.au>
From: Randy Dunlap <rdunlap@infradead.org>
In-Reply-To: <20240125144301.2b6884d4@canb.auug.org.au>

This is a multi-part message in MIME format.
--------------BXi97aiqPtiOomFKSZnu7BMC
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit



On 1/24/24 19:43, Stephen Rothwell wrote:
> Hi all,
> 
> News: there will be no linux-next release on Friday
> 
> Changes since 20240124:
> 

on x86_64:
when CONFIG_VMCORE_INFO is not set:


ld: arch/x86/xen/mmu_pv.o: in function `paddr_vmcoreinfo_note':
mmu_pv.c:(.text+0x468d): undefined reference to `vmcoreinfo_note'
ld: mmu_pv.c:(.text+0x4699): undefined reference to `vmcoreinfo_note'


Full randconfig file is attached.

-- 
#Randy
--------------BXi97aiqPtiOomFKSZnu7BMC
Content-Type: application/gzip; name="config-r5869.gz"
Content-Disposition: attachment; filename="config-r5869.gz"
Content-Transfer-Encoding: base64

H4sICJtKsmUAA2NvbmZpZy1yNTg2OQCMXEtz27iy3p9fofJsZhbJSLLjydQtL0ASlBCRBAOQ
evjWLZRiy4nrOHaObM9J/v3tBvgAQFBJFkmEbrwb3V83GvztX79NyOvL09f9y/3N/uHhx+Tz
4fFw3L8cbid39w+H/5kkfFLwakITVr0F5uz+8fX7n9/fX6rLi8nl2/dvp2+ON7PJ6nB8PDxM
4qfHu/vPr1D//unxX7/9K+ZFyhYqjtWaCsl4oSq6ra7OPt/cTH6XtaSmvT8ms/O387ezyXw6
v5jOpn9P/vd4+Of+GRqZnF/e3n56Nz+f3r273J9Pz2d/XZ5P93/P39/e/nV+uL24PNzup+d3
s/87s3pjUi3i+OpHW7ToR3A1O5/Op7OOOSPFoqNN22IidRtF3bcBRS3b/GI27VizBFmjNOlZ
oSjMahGm1nBjUqiMFau+BatQyYpULHZoSxgMkbla8IorXldlXY3TK0aTAVPFeSaVrMuSi0oJ
molgA6yAIdABqeCqFDxlGVVpoUhVWbVLsuRQ3i33/F1XmReyEnVccSF7fiY+qg0X1uSjmmVJ
xXKqKhJBUxKGaI18KSiBNS9SDn8Bi8SqIGy/TRZadh8mz4eX12+9+LGCVYoWa0UE7AHLWXV1
Pu8HlZc4j4pK7OS3SVO+oUJwMbl/njw+vWCL3SbymGTt7M7OnEErSbLKKlySNVUrKgqaqcU1
K/tZ2JQIKPMwKbvOSZiyvR6rwccIF2HCtawSe+bWeO3p+3Q96lMMOPZT9O11YHWdWQxbvDjV
IE4k0GRCU1JnlRYDa2/a4iWXVUFyenX2++PT4+GPs75duZNrVsaBNjekipfqY01r+3AILqXK
ac7FDg8FiZc9EZRdxiJvB4iAVkgNuhW6ArHKWkmGQzF5fv30/OP55fC1l+QFLahgsT4zcAAj
q3ObJJd8E6bQNKVxxbDrNFW5OTseX0mLhBX6YIYbydlCgEoC8Q+SWfEB+7DJSyISIIHC2YCu
kdBBuGq8tM8IliQ8J6wIlaklowIXcDcySlIJtlWwqHBgQeWEuXA0Yq1no3KeULenlIsYlKdR
ObAmPVWWREg6vkYJjepFKrUQHx5vJ0933p72BojHK8lr6MhIVcKtbrSA2CxaiH+EKq9JxhJS
UZURWal4F2cB6dBadd0Lm0fW7dE1LSp5kqgiwUkSE1mdZsthm0jyoQ7y5VyqusQhe6ei5BI2
Li5rPVwhtY73bAT8g1BCVYLEK2dnfIpiiV4Jfa6q+6+H43PoaIGJXSleUDg71mDB0C2v0Ubk
Wpw7zQCFJcyCJywOaiRTD3sOKA9DTGt7BwajBn0hfkI24mkPS7ccHNCSLZYo7M2SBkYVEkQ4
RFslV3QD/WlL3gnzYCE7O1im3nZSKFIfbLHVUr0hRdUp4Z5FbxP8DO0Rcg1kd9B6UwAnf0N2
Utl6qCW13bqbitS6KAVb9wxp6i5nM313gB30EZTmZWWwgIWImuKCF85uteVrntVFRcQuuHMN
V2DH2voxh+qD7hwF3LImOzB1NpiU8RIUXMxFd0Tg3P1Z7Z//PXmBLZ7sYb7PL/uX58n+5ubp
9fHl/vFzvyFrBuARDyqJ9SCcgxgg4uF3NaxWSKHaWnTM6Mi6NUb9okgW3JdfGHwn7zAyJnnW
WjI9eRHXExlQDrB8CmjDBTWF3bjgp6JbUA2h/dKtSKcZ1GxS12rUYoA0KKoTGipH3eARsGFw
H7KsV2EWpaCwuJIu4ihjtobWNB5HuETh0u58mJPoTD8j17vg3rhr2wnByvzn6mtfsgRrC0qq
L8o4Amw4/EuWVlezv+xyHA6qKYs+t08PK6oVmM2EbgNboqWsBrfEOBrmMKAibAVC3nw53L4+
HI6Tu8P+5fV4eO6logbnMS9bD8QtjGowgmABzdm0FGegQUctNi4Z+Fh1TlREwD+NnYPRK88I
tTQMuC5yAsPIIpVmtbQwZ+OtwQrM5u+dYpaXGYtBE6awgwBveL1YXp292dx//fZwf3P/8uZu
//Dw8uX49Pr5y9W7DjODHz2boZUhQpCdimByiXQaHqV1VcEFhPnwUnFwotLMRqpQ/wTVXZ5u
Ur3xcxYsZOEWMM/SGlNJFtTskLa1XUuGEdZmzQWqTACGIYsJSD+2Nkb/VCv4x5qRaUkLVl+a
EiaUS+n7TgFdkSLZsKRaBjoFnTpS0xJHwzK6BKpkiQxMWCQjHlu7IKDArmnIKYZDKKkNGsE7
ibGbhhLoLKFrFofgUUOHimAXQjVBvabj9RwA0pTlTMaDQg3RLUsIp74jkcpyuxsrVFdcUy2V
SDNieR9RtsJZaYwurO3Wv0kOG2vgleWEisSLC0CBFw6AkiYK0KvZxHOebQq4ziGxSZoAgM06
4jBHnCOo0FrZhkd9sUGep6sqmke20A9ICuNH1lr0y1Qar4yqHOGBIwGx4gBtcnZNcQxaFLjI
4cgHJcnjlvAfJ0rHRbkkBWhTUYyVqwx8mezq7L/746Mb16lZMru0pASAaZWB9Y+pBl/GHvuu
TSzLFQwbUAeOu6ca0GBPNQf7yhDmBzdaLmiF7nuLhwOzBwqKXIeXu7opzM3zTHp7qX2vUSfB
mFNHKuqQqh2dZ0TAa25cn35AdeVa545CSx6eG1sUJEsd/acHnYYEWnujdoBWLh0tTZgVM2Nc
1cK1uMmawaiblbSUHDQSgbVjrvVYxXk4cCYk/RiSUgL6BYO8Q9+mjGdTK2q3wu53uRyWAIzL
0iaE6ZOcFvvSCLAvrDseIQfndRx6q1DFYbzIM8MIK/rZw8CLuHUiHHGHDVGDeEIN4/RIGms1
lwjl4Xj3dPy6f7w5TOg/h0eA7wSwU4wAHnzOHn+5TXTLrPW6IcLxUetch4CCkPQXe7ThJEa9
w/BCn/eSM2dG3w832g25Oe6fvwQw5Ipuabd0VkATSoPRUeTWetPnxiMRtt2CyKVKal8ouyUY
G2LL4UbV26FcXkS2073VN0LOb9sAmrg/asWExjyxQxvmZkJpNV5dnR0e7i4v3nx/f/nm8qLT
t4jIE1q26M86yBWJV8bxGdDyvPakNkecLAowscwEp67m708xkK11UeAy4LUBnNiuoZF2HDZo
bnbph8GYJCqxg/xdfEzWuT9+wNWNGVFpEgfqkIxFAoOAiQtNukOL3hKe6a1PYxEVhYmDgg2Q
LMr8My9riaHhEBkj2JrJViMSLKhckoRvMIyCIHD6/fYO/txMuz+u+CiZl4NOG7xf63i3pUZS
sFOUiGwXY+jWVuflwrhz2nLLqwvPHYJxUSM40GRFYxMb1ue1PD7dHJ6fn46Tlx/fTPxgeGSd
QeLAt3NS2p47luWlDhBbW8SzJGW2d4ZsZjsAOIjMJdBtBWsNIGloQpG8NoPoDjmWtT0E9AaS
QS/RDGTVBqZcpiqP2LDEB8fYQLcVzQ0HeDFZbat8g5N5jm4lADkM5LLGtWqNwg7UMhhTwGLa
CtiumCAYMBqWqO3WAQtduR5iGMS0LLJkhQ5rjqzJco1HJotAFtS6lYSWboeq4Icq1+7vd7P5
IvJZPOnQZct1Higa4fQXBgkSzzyISeWZCaQZa5fK4EI0Y8olmGiShiDyatijuXMoa4xew4HJ
KsRgzg6sQzLWLfpoSK/jaCMsXYsfQJSWHK21HkugdRIDFG8H2mPk1fvgvPNShuPyOVra8K0l
WB+eB3rudKsNktoDJQowZgbB9cEniyebOcRLm1ZJT2cY1U6opyLychsvF55xxeuTtadywIHK
61zrlJTkLNtdXV7YDFpUwEcBcbBOPDmfq5SCkQKKp2TyrabAIVd4Q+qgLHTwqcSTDNATjk44
KIBKw2gey/1uikmeDAuXu4UdpmyLYwB5pBZDwvWS8K19QbgsqRFB4ZVRcKjQMorKWvYkt5Tf
goBsMu7gBu21rikY6SG+IFvnCBdCBzuUIMWCqoguEBbM/p6H6XgHGqI2kdUQzZT1LmATraxl
FYzJGLrMbbiki/JB/D+P0bPj7vbrRAc1NG3gIDWFjvkRVHD0J9DRjgRfgerRi4f3viPqN3dv
r5oiDOpmdEHi3Xi1Tqb8yihVJ6rhTa5c8iwJVTUX13ZtAwos7+Dr0+P9y9PRuQSx3JDGyNaF
D+iHPIKUIcd2yBija0j7WLjNAZMFI7uxZd0nd2MZoUfCuaQemayLPYyb2pwo557JyEeZ4V/U
Bi05i0FhmAv2XuW2hUqfzIzrS/ax7bO1VoOd2GAf32nQN9JEwgRssFpEGPiVftW4JCbXSlYs
DoksBpgtMwmL15S4IWhYluClb0JlayP6PDONcTVUBFQFSoEEcHdHbnVDr7wzPChZC7QwB6Cm
CLMP+9vpNAyz4cAD2okA6aHbKer2ptBZCzy5aK7zFuz1rKaBsAmtREgRYYN1bkc524uJyPMg
YzdSjEVNbg+wnsa1ZpgNosdhruhusMWGt5JbnesxvN09wVqc7L7jwyix36tchK6e9KrgLX7j
I2mPxK66vFaz6TR8m3+t5u+mgUaBcD6dDlsJ816dTz1JbCG+DimMuWJOFMLh0EjgFIPbRFmL
Babm+I6qxyaZf/01ZOhyIU6wRdcsxxufNeC5dPfzZj/U4+5oH1U5zbGEc5TZnlS53EmGhhX2
W6BLPGuOaB8mpDpjCTVByEC09cHVXxRQf+6ccJIkYOGkTu1y79PNQFwY24Qn1ol0hNZY317R
b3mRhYyxz+cnOMR5gumjqE2ysMLgCe5EllShOHaPdCoA4BVuGHgj+pzoUP7YfW7G1rTEu1HH
sJ1w7T21hFg3UUQO9JXMhmWCAj4uAFjUXv4uEsHKolKCTXH2IgWjbCIthqLilF3NZqPkaFeB
uepjR7KkcWN6wYZWsCz4Xzsw3RWaO04TD7GzHSwb3LHCVMDVgw0L3XX2bCwqIzOzYIcMEEVH
DnUDq3i6g0Uig8dZJyUniWqtt0FnT/89HCcAWPafD18Pjy96Z0lcssnTN8xCfzZJLc3CmRBW
SHCa+BftAgL2ZSY46xml5bDEdeKhFPV/y9ujv1xrejDkMe05Qoc7Vxuyojpk4TTblTb5yzNb
YTj0RShuXOZOa21wx26BJGu8RUuGYRV/yl5oCMq9m662xHW1oDTOVs7v1rU2CZ3WjDcfDazF
fFUWM9pnip2qrwYLj/TFTlvmECZ0FTYKjV1ZC5HvDID6nKTHw39eD483PybPN/sHxxfQvreg
VlJoW6IWfK0z5ZW5Dg+R/SSdjoiwNFDcZuFgXesm1FHBQV5cWwwqhS8MQlU6+f31Ktq1rCsW
Wnln2u7QgxztgHs3yKF3oxuh8yKh0H4yuu5FkwW8HhtBN5mrPk1ucucLwuT2eP+Pc0fVQ8TS
+HEeNiwvTDQMRHQga89f9sfDraPH+jS3gBR242K3Dwdb7elUt8GNr9WWqdCZyp+qVJOk+frc
Fkx+L2M2ObzcvP3D8otj1nhc1qGFMhNY7XUPFMVFNJ+ChfpYMxF2LfCaJKpDhqO5QMGYhOec
Rbb9Hxmtmcn94/74Y0K/vj7s27VuW8fwmO3o9iNyKJ3kJzAeMLZjQYgtVCJ2xL2BYOdzv2jA
goGV+vLCAL+cFpUzvcEUHEi00iHobuwYha2hnWs99pBmBHW43r6bWaNC/LMkM1Uwv2z+7tIv
Beextm8/oGiRejwbUcvOjLeXjPvjzZf7l8MNArM3t4dvMD2UwP4MeHDWCW91GJcLqu+kT5Bg
w0hyiu7mZ3f9lRmrDHa3M4FaMvrM4JMHUus9wLTyr7PQ2VAZidyolnn7pX3Z7op/BCJrRg3D
Q4wNGy8rv+PBxZpJ2u4Mb11ogUNEHGPE1wNlGLTHfOeKFSqSG2ItygoBpdd4V6YM4FxyvvK6
ZrAFeH+KvrxHGqyaKQ30owmB2drN4BBSD7uYyw8udKDIul3GgELbjddaB9f1i7Hw8xdgK+xQ
s2mUiY9pRhZyGFv26FB3yNO/INLcgZVEtQi/AVjXvA686ADwqu1C88AlALdB51TaVzaJa0MG
ADNN7GWE2MTccuI7yu1tdMpQwK79py3W7MyDP5NCoDZLBtaUDS6sMCNWtvntJgnS1AjyFdwk
Jfj9yRzBYvO6zxcbQWErAEUYuWiOg2t3DJ+0AaApcp7AuGKDrxJH21puVATTX+kIn0fL2ZYm
FlnqEXpMOsTUOKkFh81k1J+1HRJ2pNSMgIgEEYrOmDTX5bpGqJFA/20ejmhWzQ2Z9Lvs6L8T
1EBGUp7XClzHJfRhHF3MUw2SMT/9Jyw5eAw6aUi6ZExr1znWgqbeg4tGnM0Z1xet7aVdQOQ7
lmrJzAHgpb9mrcJtRB79XY+jad/c0YzQEl4Pg8k6cbwBFKyMlXnG1j5nDfDyLLH4Q3sjaYwM
J0gYCvRSrBvKWAjH1EaByUC6vaYHuRu9DfyFclxVPkio77zArOLmUfhPGXAH7bRRKG8CYMF6
ccr8hvupbhg21hwRnTzhy0R8+oHYOI9OvmliyzbzT5/nGGP80zc6OcdTXifB4twvbu1Vgbca
CC+W9YIGBHyUL9CVOVu1ObZBOWyJmAgYEnJNh8Eimh0kMZpt5Km2ZdVuMM+kvaahMWhXq30g
1RnADIRIAMm05gosL90yfIlmXu4GNgq7Rhqw8E3hs5ymdmpH9w+2i+dODnQ/QSf1zQeDOMIg
RnBr9dl0gXatVLixRmyWQFMNWbNjcqr/kgNjwipDO1ph9vblxSo6zQGOy8p/ks2jD/htBK/U
sj/L4Q4VXIOJU6Tmde4QFtaN6R9lMDphlAxCxczjpQ6s9hyN1+ziCtToki2aWOj5wM9s6MQD
sZ2jGjGTYBGSIjyAQSHW1E4A1crMqskL7FjHGfrbkTBL63+PRfk0HDXXCM2NothYOZAnSH51
c6qD1UOkfvYlbBV4/831josvEWAZCGbeI/lHpMm3Bi8yFrvSB4KW8zdOGXzLw8CzsYehIarX
Q68/x55SuBawScyGgxhSxB2bdWOhr5rD2kw76n6kpGNAPxyOXqKyWeK/imsnAzKuLW2gOqDu
sqJqB1sRxHC8AFiSaovR8pgoRszXbz7tnw+3k3+b1PJvx6e7+yZG3MkwsjWydkpeNVv7nZX2
DUeblH2iJ2cL8dM3GJpw4uu979HGktRFdJI8uzxJx8upQcL4T2I53aGHg4MPQGx9rt8eSDTY
/YdyGnPq21fnUwsBytjFIzLoWyaddxK6kTI8dYH0Qa+m6gjRFIMQg1dmf6LA7r91Msd7liJu
P5vkveBpGUZS/hsyng59GYyw9JcY/W++jLDpb8+MNjLyqqzbk5Yx0AbqhQ2+1pOIRnXOob4z
Y7lWDeFWTTgJ9MDy6uzP50/3j39+fbqF0/DpcOaJjnmBnXG+qp1rogjVbzCl1X0ISGQx63/V
hdGoOstYb/lAV/V3SxVHlSNy6z2rFnpT2YA3G8+LjQR1P0LU1mKE1gXl9Mdpkj4FumcZp/iV
xSZcdVBuq0b9dDcjZYl72OYjmNuZgFFtXw6piKb4D7os7odYLF6TZrAR0Lg95+ZdaquF6ffD
zevL/tPDQX/DbKIT2l6s4HHEijSv0IoM4E2I1FgbR2IMm4wFC36aoaE37077ixhoZvQlztiw
9Zzyw9en449J3l/K9CFx81D9Yf9psn94eLrZvzwdhwFzmdWR44DDb4BxRfijExKwbhMKGQdW
mgnXHsNxDTCzMJFDxSgSLez3oHoAiE/kYFjolYIFrxgJ2UfTkVoZd655PmfbxpGlsDpZ1mma
UYM0ug8EhW82G7EQIf3QZeZZs+pz+bagbWx00ZPW8BcCZT/db8ARDMi0L1oTsv0lPnRuMXA1
4DVhSPxa0MK+y6BbzCnGb0TBgatgMACSvA7MwNukuz7HqdfnDmUM5OTLUjVLYd7wYJ3houCN
S1lppafToC9CY2nYMCG2cjVx026EG+1e4enNjUeuwLRwCIr62wl6BL5+Vcal+RiDQgVF9Uuv
7qt3mLCl1aCq/EdzGFe0YrL9gz4ZeojQ3jDq9TJfVkr+n7NnW27c2PFX9LR1zsNsJOr+kAeK
pKSOeRs2JdN5YSm2M3HFt7KdzcnfL4Amqb6gZe+maiYjAOwruhtAA+jq59l4vTDGwx+mY89O
h/HNDnERXRWEac9EDKOhLg06n7r5OQfjMqYbzisWU5DAXk5Lvo8KrzB/lelPZdDRzLBkeHSp
eFblikvRGcK2F4G6qLIIKPNXlRg+vJGZA6EX2ftrPIw466+o9M9gdpKqMo22dKXhYy26eMHr
HU1dj/tNyU1rdb4zoXgSJXgYtpwzxaGicVf6sROEdVaSKE7wyF/N/AoyI10gGQp6D3Uh+gU2
sArt/Hgf4JqVYZKkykcFVdMIcIJEafvvHjNdQfaEp6u570+Vvjkw22ZsNLS3LIrUghoDQ+Y8
3bYOi2YbtxFwi+nFIROA1YC9aMtGsYaWL5RxzdoodQpY3boBW0PpNWMzs7ACRbKF8wzL5Xw0
q4Np1u0A3b5pFNijaPz8ZcGyT68kE197VuHRFx0m19yIeSjt61lGF2tbAX8dib1IqIlPH6dR
eIuOm6NMD704L7swM3fvQQrwfdvj/RKV5s+fuOEg8f3/PNzej2Lb00dZSoXU1kb36+yOhva4
IxzFZQVHc84rb0SETjH4Dz9F58LRVkXBbTFEkzP3CFCyfnCZP1xPPADSEbg5WMDQCDpRgO7u
24S3sD4MIZiIZcmtF6IvzZQfBItLPp5PfVBnPmSbmYnCNAz5Gkmr+5ZrI4BkDXLz4FVGAZWR
wCwv2wpvW/JYi8wBcmPjUSOamIAk0sUphOAKIKO0glmdh8Pm6OkCsJFNXIZScNo31WN7l9Do
oX24PuT+aIiByq8JDCR4s8nW4EnUwhEmVYB/sWTHXQhbzYYPiuh9cCLXbRNhty/PH28vj5h6
y3HTo+pDvKQMzflEAwxIe6k1iZg01nHXpEKyerkIJkYhSdtgzghMaZn1O1t0urt/vr3vTHhA
dK+1z/T1u0zZ7UnvDz+er09vXynwc2Klcb78BoP08PiFEj8lHTwL+WkYpih5vnt9eXj+0Hd4
WjN5TGIMu9EbHw5Fvf/98HH7x2eTjglp5bUA0b1OIpg0o1B/EYPRoElbtTOexUcAWRyoYwwP
HoTYItIZBrvp+dbHyU9NpbGRZmUUhXr6qTLKQJKhzhkQsnu2keBDx7EMy+GyG9tvt6e3u9Fv
bw93P/S0CDcYonuulX62RWBDQIgu9npHFLgWbCs6ZCH3YsMfhmW8WAZrzi90FYzXgb4QsUto
oBoSqmuXSqWIReF0lizZD7fdYT8qbKNKeMCVHaJ2aXLBQYmq+yQt2dhcOEDqrDSN1j2szVDA
ZTs7kHii+aFneRymhhdCWam2gMKUXYdVMmQnpR5uH96e/oatYPT4AvvM27lr22viD8PM1oNI
R4kx4yKHpLxTujkBlJmhdi3f1/kLclNQY6UPCEtAGQsxPoMdoPMnvZWZGSUgIiXKaPyh7Cz5
wxZgD01P3CWuPQ7WPE0KJvs1j7OgVrqiuBJHD6cQOjlWiXQ/w12h+xZ2DfS5YIeFyELl9qqI
yWjOcdCN1LJ06CrdkAWhy9zHZYhGdfpQF57U5Ig+HlI0KGxg2dRCL0MWUWsImbAJGpqp+t2G
0Xp5XtQdUASRQ5hlekB7T6jn6ybtFh0+iJW3JvMhcpvkkdLFuaHa0kyrJxpwZMm/n27Gi4Ph
m+3ZRQYn+jvSKIxApbDKKGwATU1F1aa8gLupJ21Ybpi2EabRXfmEhCGHH22qe3Gp0ATRlLOm
aRPDQPwdVhCARMAUn+2FOVkdwI0s6hF41nZ8wN9EdXQJbxvXh6mTn27/0JUwTVzSEeYedyYn
OAzySFI2Wny4BM94inTQNEKB+b9+P4G6V769fLzcvjxqez9MkYwyQX7KRVQYkvWArMJrFRjc
6cassa2jJf1MGc4MMcEkyOSOQQ2fkWKoc76XpPf6m9BeCceYFTrk/7C7zVIWhEs9UkFcAK2r
wri+/n8N/XCixJrSBT9QczHOjf6kU7Zl/iTNBKsnxeieSQfYkwHC11gyODTQ7IZ3XMlWDCeR
cY5E251dgA7tY2K1jQ/AG+tnKzFBb6LDN1E2W8IizY/KHH/eBDqEBD7kdGqsHRamLHUJcFcU
uzQZRsoRfL7/dXq8fXl6Gv3erx1Heqb9AWb53M8eAjrvtboAJ84/R+4N0+8vXmXpv//xdrJx
+iL3EDgn93kbGDqesyJBVmssBT/oxMQpVDLv6e3jATft0evp7b3fcDRqmIPFFOYAL608xbeb
CkbmQJkVzKr6KGn6WJ8kRNKNUNVS4Hodeq77z3SgAdN5BOKhkoM8jenJq8auEA/EUqYXuwIn
JqV26VvMoJTbP927kLnv28SsxiiCYkzoFo6Nm3Lp0RMRY9J1nnIniWbpAP8EBRVTbqusjvXb
6fldBUmN0tM/Bk9jTQX6Yz9Zg1ULVMIwU04o6/NNMyzFn2DV/bR9xNSJt388vLrrhKZ4K8wi
f0niJFJikgFH6yoDRt/hMD7SnZ4Z6N0h88K+gOkxm4TCx+mCxss9SJh+lXCXFFlSV1xCACRR
3pnAhJTBup2YjbWwwUXszO2omDCwwO54UV/uAok9oJh4ukDDncXS3hQQDlJe6EIpMtRcCGFm
Ly1rfzZw4UYmHvvGBSZThprT66sWe4p+A4rqRMZvixPxqE8aHGn0z5D2yOFtpXVm6ptDNA/G
UVyaXc2TmhB2f2s5n7OZR6jDWbxcNNAvsywR7TugUVQiN8Gl4YuuVuNZc4lCRpsAL5vM/IgG
CfTj4/7R0950NhvvnN2St/QojG11OUPbEESIG1DzedMLjQMJ5scKVjZvCaXS0hAzZrNc8xlX
KKeR+8ffv6F96/TwfA/iVx13Ura2jZk1ZtF8PvEPcpmEVSsz36DIVC0Lg+EcEPyxYZiJqC5q
TJuCd576pXeHBaVSdjeik2DVmUUf3v/8Vjx/i7Dfzr2N0fK4iHZTdiA/HyMqKw/z2FxqCFGZ
fS0mgIMEcb6TDjQGRPfCR3X6+yc40U6Pj8Cb9N3vaiMwbLF2vXGCUXXWOj0j6ObHRYYZqnBp
7fAtYTvRwNNu1V20/zPl1lmSMvAsrI5JymFkGqGmOg2ahvvOwLotRVnrwhATzRaEHLGNmNKP
28Vk3ObbyDMKsI1E9cVhiMOjyGmE3e/rplnn8Tbz6MFDNYe88S0jIkCNfj6eMe1HOZwbtPqK
bVDWCC5nyLnBaIXgpqjOMHVkFgVcZYkscra6XSm4BwoG/JDwlvs4rDCt8KXPqyRPZDiI7tnD
+6291okO/wIt6/IkkLH64kQLeVXk9Gwd19wzWkl1Q5aVr5U5fEQ+lD+PL9ew2dTXlahdZS6J
ItjMfsD2NXr/6/X15e2D2TAS/b1UHYpXJPswy0wnKJ4Atv7Ilih0sk104fTt6T7jR6JJYgHa
wpV+ZcN1s8fR7kyDkZYwmqP/Uv8PRnAgj56UJwAruROZyd/f6enRXkofqvi8YLO/h41veZP9
Fc1rGkvtN1kE2/Nizr+AWXAPoigfO7Hb10PWcFBlTNuSDwDExo3RAG23YluwbdBo5IFex/uM
TElDrIOUooGTfNbrWvkxS0Zy4N/z1OrwYc2zRtV4HsybNi5Zj4n4kGU3ZCDW+70Pcz4tcC22
mZO3n4DLppkwH4hIrqeBnI0nhpENT8ZWSo7jkzxKC4nZdzE7DZncB0aUGTAgZhwwbqAV1PY6
3petSLk9lww2UQFHVaLH9RAY/UKrUjsewzKW69U4CFNDaRAyDdbj8ZSda4UM+CSGoPDIAl93
BKI5m82wp9jsJ8vlWOtmB6cmrceGDLDPosV0zhmtYzlZrDSF89hdh3V+odpF4R7mXff6kJbJ
Lb5uG4wMoMt9r+tJf2ndepN2dG4BMt6yrz3gPLZVLbVosrqUi/l6BvpQ5gLLrdTO/VwniQLr
5pl+A89Dz0BiDybzcX9iJgkZEt+1ldbzI2GAZQN+E+rwWdgsVsv5JZL1NGoWHMcrNCj/7Wq9
LxOpCX8dLkkmY5J6zvu+2eChi5slSHGd/G3ALC8fDdiGUh6ywcjSGSP/c3ofief3j7e/nuht
kC4v0wcakrDK0SOeOXew6zy84j9NS+X/+ethwZE7ChocSm1x9ulONfF9AMEfDlo3Grjj+mOm
KwC7JL/+nti/B1Gsy2xSJRGGdtycQ7KSaK/dNBC/hmmECSJ0x7KBjzvw+ZYcY1+57f9Yhrl5
Q9+BbIX7bNctETVp4D9eHdbPBKX7RlL0mty7e6xwaO2K4SAtr3H1bHOSJKPJdD0b/Wv78HZ/
DX/+7cpcW1El18I8OXpYW+w9PRwo8kLyDyxerH2YjDACzigweSndBA98Lp5f//rgBmTgp/Lg
ekPuT293ZGoXPxUj/EQPOUkq8yLKEUd6Cu1MAEArVuMZt4MrLPzdbWbWZ1G9CiJYy94vQay4
2sTuh8A5pfRXmIoNoPXjB6Ggp9ugbsUi8ZNThwwyy3nOooDxaa1mWBQF6Lxw6Ek2bQZd2mOm
qE2B7j9P1qAd8pnoWmYgUB0z4Qdr3nZhlpinRw/B9GeT8dXEuFnqcdtsNZ6wfMrxzMDDHBcq
NoR983T7gV5Yg2jXH4C1kWv0yIl3h1w061Vb1jd62LVKYOsDdq93BvOFhYMDIpK1sZelMe1+
h7qww0k7S9vbw+nR1TFwrMN0eMjG5k1AraxMz0oYfnn+Roh3VS4dJMyi7coIsw2wZTr2rg2k
IRvNPxyUEiQWRlCOji31p4gMDExM6CzUMFXWAX9TorSUy8mkMXkVjX9hJo2QbBMOBwpeSM2c
+np81w/vEgtTZe3wN01kjVM7wIYRsluMLUqFHTFgoLhWeSjzquvixB4ADD0S7rgQ+PxZ4I6M
ovjCwHSUPademD3jvQEN6GUjYRisOuAvuvza84106UhbAYFF2HuujvtKB4/1ir+u6PCFFfGj
gT+fwhT0SPHdZegoypuSAU8WQoIiydQ34NDr6SIni2yTVHF4udfd1fWFfUEdar/U4Q6ZiGmR
RfH5YHQfdMV5cahJUDzJOeKPIdqEhxifPPt5MpkHelpkhvbTlqHu5+llj/oKK2UNKKdIfJEI
Tt0vNmsg5Ua/4nTHDlmVgTPCADvvCFN3S0DDeFrarWdoRL5Nk8bTLIviSzsM+ihe6IwsSa5x
P8umfqkJR+8Iul17uUPFtXv2AUzbsuxSYWVdaOohL1PTgmdiPp/z/HAsagyLDafzeKIrvJYs
YfMKPiZHYh3TaOX9nMcgIfJqVPeGHJ7cTNPy4tdCTxCYH1I65A0DzDHCMBm2+KrM5M5TdtdC
dJNVts+zcNc/O8vAuud5BwGNoIlmsU1L99gpS6hFb3Pn13aJR0VJDnj4cC7nVEPoq0i2m8ww
nIayxNBVxBDJJuMYPC+jDHd0nUzT5LWy24hemAaIB6+E97PVTtW/qZlypRRbvrpN5+Or3jjb
Gom199dOqP8AUg9vicIIiT9jnUebzijr2SaOAiXKT2g24WzK2V41iigLVtM52zp6s7zKd8F4
zOF3CaalcMcBuCfkwMqrlsPYkoSJmdqOIkyF5OL5xJWQNdQHPlhCaxzIrEDGMaM+Xyg7UXls
Bzt07cHn0JtYXHFjiZeXHni94cqSNQdt0KWYK4fOBH6ISxFNOV3/TJE0N3kh+eHFlfrJ0Dai
3CesDnGmiXLQm/kaftmD6sNbzMOyRB9uz6XltS+hP8Z4J/xH5E3q+8jjrwyb4E49IqWe2Tvv
yhHaojO+WzUb8EmfCOm4SXTwC1+gy7/7AXrifz/AfsU7zWgft1E150dZJ3I2HYYGhByRJ+Zt
t47vDnJPKbmMzBG0fCUQhBnzDcARRhNvIJsbdgzq6fTXMph5FQTYhSM75ZF+KZHebGzXpN67
3jHCKNshVOSYOY2gDBwIMkzh5akJtpO4EYzyxRyNiyYAZwf+mXg1VfycI64LHULrDHd2B5gK
WwkdQ3fCxx8vbw8ffzy9Gz0CdWJXGEk8emAZbbUzdACGuo+qVfBQ2WARwziH80B2AXcjaBzA
/3h5/7gYz0gDF+2a9hBJYbdFTOZw7D1ZY4bgxdQzJoRtplZJWbycL6zuE6yVs5V+v9ZhVpPJ
xCxiL5r5Pg7syRWWvVBHyWhvliEw8b8BKYVoZiYopyRtTkUdGNq7Xs09NeZHEYsQxOiDWaQU
cj5fz81eAnAxHduDC9D1glOsEYkywz8WABb0YIzHBaXiI37D0JfOie9fT8ADj/+M7p9+u7+7
u78b/dRRfXt5/obeff+2mJWkP2sC6/XEhWC6Jsr0ihf3mNEvTC2iphGhPZKdNOVdd4BXYtVF
iqsi505LQldRhhKBVW8UxokvkpzwGErkcTRC/Nk/SwcmUuxyuh0zbw0tJI2UOXkaVnNf8hA4
9YodHOppUdkMlIAkyh3AhMuSY2CWQyqfA2lV0iCVmUGP6CMC3fakluZun8KBrR/rCm7vKCLb
OQs483E7Sptp6RwIoiinpgcfQn/5dbZc8Uczoq+SrEx5ZQHRqQz8Z4Rjdzax9WJuXx8aaIzs
96OPi5lz+6jjG/b1GtxrQKa0x7JAFuTdgwnN+2gT6jp1tnmQG/2LBc6ogWs9ZZa5M0tlw6sY
iFN+JZ57zIEAlQdPfd/1fGQIqISI7BZUvx4DX4PlNApmk7G1Te/bDM7uNLG39EwF/+uwsrK2
TVJAzP0ddYztzNcCwi6tQg75QrRlcC2slvVSqwmmu4h2U2bWKj3koGIIe4320HZrt3RIYuFp
67V9luJrhrAHOJOuHFa809qk5Zo1JdN0RWE1+Jj8B0TI59MjnnM/KenmdHd6/TCkGpPdlEeY
jz+7q3+rF2Eh2+Q45NwoPv6ACs5VaiereWxmaROVaWwf0IPSrUlzrORm88mBC9EllHuUdOcw
+bRYzEMYdCY65LYAqrxXbHe0MwZlUe+0KRKfyK/L9kOVU229RHEuEdLHRmk8E19rCN5Ee4w8
JB1BJkpBFHvTn1qW/PYiSzb6YG/YG6QwlBHlySCF5VN/Bj8+oOuOzpNYBCopnPdKadgO4Keb
iFhJ9qXsi3a1J/wsSukFpitLz9ZQdOts19bh/EtGI+qEhqE9Pyh388fLm6uH1CW09uX2T6at
ddlO5quVesqui1ILh6fykmdKalrub1KxoTjfPKmvi+oKo43IiCDrMMNwpNHHC7TzfgQLFTaE
Owrng12Cqn3/b909x23N0BiQ7OqKeYGrQ7S7qjjoT64AHPRK4zf+iy/AQHQJze0K+4pC/fWL
HhjdrKL1vBlr09lh4nA9XgTuF1lUBlM5XpkKtY11MbKZzMcN80XabLZTpmVyFqSzqduwDANJ
QxcOHyzT9ZgtCRDB2bMIw6peH55vP94YF4j+q014U1ehMDNU9SXuk6q6OYrkmmPnjii9yRv1
TpLT1N7ybM9QGmOq4qvERW2qoqmN7E59U8Ic87/jR09MQ5M4xExXvG1lmOokhzOZNwr1NEl6
tcd7f7Z1SZaJWm4O1c7t6y7JRC58DRRRgqiLzfsF9cbKJrNHG9BbkaQMj6fJtfA0LkvqpPAM
OUhHlZBJ/9SV06xa7D5tVR3mO+OFq3PFVSU87c0KODgVTj/eWbbtsjHfPZzq+z8Zpj67uqLr
b1ZfsYeqtwC31yBoB3Ne5tJJlpzcNUxIGUqJGpg7ITJaBquxQeGUL7PFZDI/01xsjMzQMYkn
dkmn80/rXs2+Wly0gq405cXuZqu5VaVLsbAoVBwenIzvp/dLU94X0cUgXWrqvi23zG6u4P3t
rYvElxc8WPxOWQVYVLUKl8s1Wa5c/hnwvGM3Uw6vnzuEy/UXC/xieWtP8Klb8eqLBfKBCy4d
Z5p0qRbzS6O/YM5KDTu5PDfbr44Rd7vlUq0uNmZ5ERtexO4uYWfjS72chl/kwNnyi6Mx462T
Lh3vQuLSfZFhZpxhwKWKLg7HcpZ8ie9m4WXemW0+K0bul8GYEQp73GJ2Abf24qDQCzjPVoW4
6czXIcTOl59OApKtPp97Ilt8hWwacr6BTp/8Y7gMLvSp4YPPfYfOoJrAUQBKlaarKACFb+GT
KG0qQFL8eT4JbApRfae4VUubMQ8XsiBbCf0IFqnbORvUHicWtFOeLKid3I2AmIKxnSz6A7dL
0Px0en29vxuRNd/RHeg76OZybZXV3yvoI65a2fkWM3NJ+Pg6LDeGQ7vqRbstPU4VejcvGVKJ
znR8UN3W77YIkm1WC7lsbGgZrZqmsb7Omsima+zJQgNzK22XMOX57zHjqlmKQt5qo7Cg6yMH
+SmkKHjBlbDkvNFKzjam8KnNIPiq+zbaO2xTT4PZtNEvWi/wjjJmvLx9fOuwGIVgcZfZ0GMD
MqOvlQKk3bnVosl41iIvz1aJM+CI6xjdPzQdERTgq3a7nKxWjVO6YgAv94l6tbQXd/S/jF1J
k9w2sv4rijnMbSZIcH8Rc0CBrCq6SRZFsKooXSrakmwrxnI7ZClC8+8fEuCCJcH2wUvnl8SS
SCSWQmaeI+OpvaSq0C0W8V53h0tXOpXeeZiyOEcN2K6g1586JfXTjz+f//iIDcBxatI48Mqi
5HFCAqdZLZ2yKMC3CRsD8VqCntEiiSbHFsx0MKD+siVThq0YM3zMk8yey2NfM5LrP1vMgxEX
QWC/I7BkpkzmsXRlacygsk8SYldAh/o92EpzuA+l6EHY3m8WnQ3v+Cif9N8qC4IrrCRxRkK7
yvBLzP1dT0ebPiriyLZ9y8WUJXvatOjpazZqyZjkkdNI3pCc+X5ZVOOw/6B+HkIuTo855ty6
4XnqzlzlxIs66Cj8bTvlqa0Z9yYOIlf1BT0N4h3Vv4uTd7hjm+/yZO5ri0CLIjbsrat4ayTu
fYVcH4iYDTiMuee3VDXy623ODg/cc/q6IEFi65O6GbWW0+ZRX+w1p3fWbBmpf93A2MagrhRI
sFOBUsuSRSQ0FjFEeFKot89fv31//n13S3Q6iS0WxI61mtlAmiLXVMr87n5Rqt++9hZ6PAgV
2tLt27vnMC+jhg4Vr3D/CYVDQNUGe0h+vre6O7/8U/TAcB1QxPlXM2sPoxzsnr+J1mL+enPo
gUM9Xk/X4Wo+8bdA7GXVwiRjNeieP/O3ZRaHMVoqINgiuDG0YUAS/FuA8B2HyYOFUjc4ohBr
dBuGWeapuSAeU7TxjKJrexEgFAdaswBS4gGywAckCHAeQ4yfR2gxnJmJHlZggsiw3Rr11mF4
yseq7RF6GODAkbZhclZqj9Q3B9tFhc8PocelbWEwH4it9HHqQ6xECCzdow62C0fJU4LIC6Jv
YOKatwwOvU6ewG3VBSCr2IR8ADviIDlijZabZXLE8tBtLEmUJdwttmVhlOWRUBuGFi32zx7X
hZVl5GN1heDg+Huehe/UJGGOZn7TOEhgukDOQJYGFCUTrNGnqVcqOg64R8XCeK7PaRjtKdCZ
iy02Mqz1fH5wioQ3CqDmO2XKU4pT4k8sRjsjpsUQkldizDS0K1L0MebKUXcVPVVuvc3ISBGj
VlVBmf3OGuMqkCmhAER4CkCMmgDiMMG/iEmIzAoJEE9RJPZ9keLNFQBSuThHhQQZMaCnQYqK
TmLh3mIjOdIcL7bAq4vCLEJarpDUDFAKtJxk+y1IUVumAFwSaRoVHiDxFeXvDaY2LYvi22Ac
zzeojwK0Yc0k9oMw6V1sZGmCbjjEkYREeYpdHa/lVt2RhOB3tuy63JEeMmG18FvzVbXa9DWG
bG8vJWBMk9sMEaygIkrVtDmm8uIYhE78Fn04rsFoxQVqEQXd5766Mux3vkhIFKMVJiRGl3EF
7fWhZ3kWpWiDAYoJfgW/8HRsFJN3r9nAkWWJ9dbaQr3A7P/jglkeINYOgCJAtXz2vdztzYWx
R5+/YuflnQ5mziGTJCQ/wXd3Ei3rtvXD2o/UreEbuzLhZMoOFXhin4IIXTph205S7K7C4MhQ
Cw5F93gWooWjp4+Bp/g+QIaZFXvuKglKBoZpfw/F+0eEew3Pe4ZD+2DHY8/RunpekIDiaePW
EjreX4dH3fMeuzta2YYoIZiJFUCK2l4B5EGK6t4Mwc8h18abg3rj7nkS20F1bCbepLnYsr5i
UUgS7A58M4o9M0GlKXcn2d5BVHBEeejbMsUEvR7Tl/ckClCzNe8osEsUc9uAbUkFQoIsQrVR
YcnuUicX5Ny3m4niON7bKAuWPM2x7UxP8iRFSxVIvidnwVDgk1MhuF45rElAIqxdSYEvWG3/
Niu8IRdmi1S3cUT2Gt83dUiC4oCY8RXaOrDdv202L83SeBzQFWqqxO5ybzjeJjH/KQxyiiwW
fOzLkuFr31hSsSXaHWmxbYqDGNtzCySJ0gzZHwISpyVBVvErK4sA2+wBQHDjOpV9FaJBMA0O
gq4KM/S3lOd9I8SMtK2/t/hmc6C8P8Bbzr72bxk5chVvsxxG3SNpIw8tRj6P2OFIkAlqZwQQ
/djVb8ER/9hr33lkeNHKgXDv03dZGqUU+7hsK3HC2TuzVC0L4wCZzgIgYYDuZgGKgr0mCY70
TnCbzFvO4qzdM50LC3akVdghws5AnJ2TdJqWRKtY5cCxe4iTHBFqX/k48szzoGzlOTL7tgLZ
RrGQ5GX+yuUsz3KC2H8qZJuj+4aOCiOI06cJp0dIBYIeEVzPR5btraXjuWUJbgbbPgz27Itk
QNRQ0pFGCnqMLdpA97RdILs7AcGQhEgTbjXVduNOuQJO8xR/FbHyjCEJ9zT+NuYEuyi/51GW
RSccyMMSaxBARbh/xyh5yJ7BlByINCQdsY2KDkbcdG7Q8Ebshkbk2KGgtMO7KabrGb2lVVh1
xn6zW3nk75ZIufL3yo0+nquhpYYrwUySaRprPtYMv41d2ORvQ0c0AsXMUbXVcKo6CBUJN/OX
4xEONfTdo+VbhNyFGSLzQ7a8xzjUPcfaNadJe5wuN9HGqn/ca46drjD+I60HlcrytZJlJlXe
U4/zNPbJgXYn+a+dxrzeiL/bLaPGTe10eOuD/njtdhyqt9rAO6MFm5naDLH5FC040qLlfROm
TPAyCvt08w749um/4Mb09cuz+VRcdwDAeDSPGffzuXZxklj7dbPdumXY51HP5gDs/ROE/Wj1
zqgcmKyv34hvojiY9tq7y7fJRdUOofL8cl1bKNb1S6PSSlhOF6hQDl9fnj9+ePnil8scLWDt
42oO4DVgx3E6HzT6lnDUV5knJri3TWMtU9vqVWwIIqQVVqGg/GIEPMZ0E4Bk58NyoFlCjC+9
wcrR3vPnL399/+PXPXXxscyZHCC2xpzE0S846fwsZCcbqpn21SkameyARcFjVOuCPqC7lZo5
L3f65eVZF6R+KN123eHVRXk5uRTHZ3cFusudvrtc8ScQK5eKSCezSs75WLFNwMp+6atuTVEc
OPDy0hepZ5BOqJBNfP7cMXv3528ffvv48uub/uunb5+/fHr5/u3N6UVI548X803fWuhWGNh1
f4FO6q5F2JfjuMlW9zuGH5XJCqEiVD88ozwaRxrpFegAQYDt5xAXU1sXTBWUF5QLzOkh3KIW
oO7Kyx3B39f1AL7iLiLJvMea3ogCSzOS53wM35cjFape0kcE8Qt3hAlBZoYWLiz0nm6lCJjT
ttgtQzDQpIwRUc0BYZB+HUfRqyAMEGgOEoEUx2kYBtgn5R3Vt6ovov3uyyjBbkV9N8VBkKM6
JkPUoNWJbYuYjvvDMnTJmIb5rjghxRjSqCUapYvM7w0xiYnTlhDBJBrGsA95RiZMleH3z8is
S/+JNstSEux3tG4nAprrA7Nr09v4UsFlgtC0ltqrBWZHbjJ6CXykzXt+6R6n6XBA+q5AzFio
HFa4BVuCAu01pOlZmKNinT0Q51ZuSjGTh/fUJ7GNpQtxqW0cJ9JYspvDje4pncwa50ppqCBQ
89PjMo4XU7hySXW7eKu5+L8RU+CWsyiMKlSwMhbOvkYtIXr3zR57e4VsHLiMZJ63sRL7YKMr
G7lis9otSFO3EKHN4hfULAxCexyrg9g8R3nsqb0Sam0WLx9H5ZVJ5H0CVm5kmsOPTORqV8cP
kPZr7NkrS2p1HS5Lp7GN/yELAnu21YeWcvx3rzs9VoOvrDQKgoofTHnVFVwXGp2c0+DUJWpi
atF5Xw1jnoXkaJUmiCbljC2m517wPLq2FudSdimN1Hnqnbul4iwkgSN2+Tt7GHmNW3eDscNm
qHpLbNaRBpNFYf3V0je4jF08QhwlgFmVHTIlAOwEL1+o25/BbRvOv9wFmfIU1DzLjma7BLHY
iNoCwc7vveIBra36SUyUPXu0pUkyahQnwzizdQkik8WByTinMH2cRrcE6YFmFqFT10RUa5MF
mgVRvrOcnfqSeeQJWcxOYqkJ7SkGz/12562KbOatte3BKAS+RVScKCgJzW7ykQ7HGt2CToLf
ENS1bfS5ufgN/Ovn578+fdwOAez560fT257VPdsZWVGJkYaKC2vRXzivD1Y8d9QFTQwF1dk1
svnX43zho3z+j3OvOEYWx1uLrLIy2ZmydKite/zqUjJxJ8c1UsRJzJwHaztfFZ7QiYplVlp1
1fX992+ff/n+xweI1OPmjl5U5Fg651xJ40kSYb87AagyFp16WjL7O3iSjV6/y+/Md/V9WzPX
7UmWQkeSZ4GVr0QiEBDzyo30FIoukzW2zCQLsSRFYCQqBurqPmW3fupJ4GTvMMRiBeLRiOa7
JwDs6DwbzY6RPBeTNSHuF73inoieK44+flvRwpLzFg1IHxI4Q0eTLZv54O6XzephZtH0wEkr
LUKKDz1RnwEGf9SnQ1SgL54lg4wMrmKDWBJnYTTZKjATkTHrSUoKu3WQNaQZhL57ahcHnUSc
pKyX6ICoReztlQ5Pa+BP/LxgehsDgesOtaoguLCEQTJFqrCm59xHt9L+AfaWp2Sym/sT7d4L
8yM2RmgmaMGhNkm2gPK8b3PUn2FDE1PSkpjqYbDU/JjCONFfh87ULEvi0OEVp9AiQqh57FLz
IsgQIkkQYoFxFrlFHNNIf4690DKEVtg9Wu6j7BEYqvHqEWPPjomYOnocsJli+0CsdFvdjKqE
/Cc0KKQ01utbB71xqyucThzjXP9FVdGSIIpsviS0Lf3m8qlXXcdZOlnPTxXQwhFRqq89cZcr
MVuevE3Q4NUSe3qXC20z3toM78V4oe5h9DAlQYAul3P00IFhPiJKmnAkNrsptqW0jaJkEpaD
qQHU0NWt1qio6fMMfXg2F9i0V7MS5XGr3dH3PA2DxE5cG4SGq6qioYGrZEWzK63dOkX3RAxa
Wih6EO0WrHxwbWphtlCj7y1KcwJerLzYjNq3XKC5e44FoddSD8Axe/IiH9ybkGQRqihNGyUR
plxKOosXs9UA5WBsqIeMfGCSHF9xjejOF7n2m3FPZNvbxHo+4sCeFBgKBtO5D/u0V4BxYJmH
+VEBQjMHb6EnyPdJgPIubtL6JB3vcY7GH1EoXI81/RLy0/oUQAlhDxPUFpURZ7mbiW4Ln860
pOA2crXGk0G2BLBDemDk5ceDNVnH8lv23iFg/dh9ybmS7IzMG3Csp0qo4aUZwTcLYQDP5CtV
ebquRpTUjQfeC8jnAjqXduG58Im9wilHncQMHthPZFhbaJlE+uqtIZ34T48i6hCCQvOkaspL
iHVrwcVGDXyhURZbGzToHmWJHvFpg9zzjIa5QSG0YVz29ChiBoYwsRR7S2awkDDAR01i2Nqr
aRHtxDlTt2QbZkbN3+g1b8Q5IME6A0/sSRZSvD3C+KYR7k6iMYl1N9tvtGQhWNNgcSMTLkzA
0GA1GsvIoiQvPN8LMM1wR/GNa9k/79YjH/LrK4oBZVL7vFiMqvzyi5AfSzxaovbrnrhhBlue
xphbosWTolMWoLzwdUseDXytgyPCq9UWCaoQzmHChnJvtSQIPOHPLLb4lTmmxK9HKLGxIsJV
Tg0N+prUZiK4Ns3HbHMrb+KZ6chngjkaMlHj6fM8KdCeiUNXGPoQgmuCQCJcvQEhnnYKLHll
wgFL7is4KXxIis8n64xpIvpJc0PWcwDSgf5QU/zeUuNhtIjRuDM6j30+1bBbngd4dySU+6EC
ndDyp96hOp6qzg/37RnXbAnztgSWV3quWK3Y9T6+Kz88bla8fodzoJSAI5XHIM5n4leqg1M3
erC1WNB9hH1k1xHz4G4gxvHdRIqAeqAs8ixogCV4FFqdKQ3TfbUDFlxHBAKO9CjyloRRjEPt
zYxZZnyWZqj3jlk0kVHfkQI4aXv6yrABD8dNF0/aPEvR5YQzceZEh1S75XCx5gS/NKOTT51p
DpeLnTvCZrmJaXi4Yo/Dbc7+jh4y4CbkcMDbII9kj1urX+1ruH1LpRXa8yRMfUZ7uQfZbTQw
EcvV2kTBQe/VIuAmBe32do2CY6GZKdNCXzsQadcmKJbH+OkGCV22gW54MpQlQUuej/ioNNWR
fLdgaWEbeqgPWlhVVjHrCgYo3WWEIGSDSe3rbvl5TPzpZsuYeR7VMMBhovtJO5PDkyDJACe6
i5lYW7bhnEUEswwAqodGVDvOANUO+ylLpy2/dicx07E4LJJjrM1eLRlVNZJ8KGVWxiumKlvy
RWoC0O4yZDfnLjrPPk9fn//87fMHJCcKvU5lzfuGvtMacqZDw7Sg/hDIBbg2yrmMIaPY4kam
Z4VVCCKDJx4Yfkrq74cck+CH2E5agPT8+M8aZLdu4S0Uq+sHtE1TRfEnQQPDq2Qt4r+dkagC
/lzA7cHuTB4uR8hmlZhkBglaK9AGblyaKFS+FF6wf/zDEuPj0Dwux6OhLxqCO+lrHL4fn1W3
tndNJ8P1SvwJgQBTPPY3oPI3Juy2XGC85kbJcz5m6z0f/NyOmhTITVf315t7lVoOntS4QzuH
jmsvJUSpe9jJVKUeH78+f/n05ufvv/zy6ev8hNl4v3DEnh20bf8wtXehLAHFGmlv1hmG1qL8
JZ4//Pf3z7/+9u3NP9+I4Vku5rZZpSvlgzWQ70Cl/cZ++qfsqalP59Fg1N4urPjTWJLEOGzp
2Ps8R+MObDzwUlbbYWyA+4vxhvkP0BqPdaDZEPWgs9EDoW2gvYvdEE6F4lNMBqubGtLU+S0C
/oJD5xKSwiyTxYP3aP3ZE23CcoTaL32+mURKl1dcBYb0kOwZl4m7Qdww8xJOq+gmJJXpcaA3
7FCKrVXmkfHAJtbh1kobWXWfbXIt/j/7k2dbWtpan43O2rUw8su10xYp+efjwrm1qzDp4CAh
plvdagydHq2vK+0c3ECCdJI24WEkvlmIdcWKJDfpZUur7iQWUbec872sepPEq7eLLTDoA723
dVmbRMj0PIilB5aY5kKtnvwkBsZsipADuO2ZxLaeqgEg43Hi3CFBxt4cz6iSldnbdx2F5yht
3V0GbtVEpwejQ8n/ExGjz2rj8rg05YP2tfnRrRoOFw5DJ9Ysqz9sbGRgfniq96SnuJQtsR8D
rsSlTE/PoNS666/j40abunScHBceJwmdJfs5R2y9BEa1+jVn97N15cFP4lTm9tOwprOmXMFH
Y0AU6Nq27zzc80hbX4BuPapbpef60jGXeqsHHLi21kC0/TUOwscVnn8Z3JQVmdDhUv9NTEpB
PpqzlGfpkzEMVAy8J5aAUlHI7ugZIrQD7djTm03iaWx3c6hp87iGaWLEoFs7a5kLodwt7cgU
I/2fg+8aeSsRcPEgFntWo48193jWy/7XzibqXP6Lfv/4+UVz+gJDVFLLMpV0TcEgNM8aC0CV
7XLIwsBKgov08LL0AWbK1npAWT0MV4gu4aqDhCHg6bpl4y6D+lDwRUmTpK/hVrSzpRLJMjtO
+GDaCaU72Yq44bw+tRTfXJuMaleNQnIV9GBKUP76GRendTQOpMl26aqJduNOQTQI8ZA/DpsV
DQ3BYfS8eqoxy5Ps32DkdRQkaLAKU3ldKXqm1LzfWKeH29mhcgurptGD9KBG4hgjWvq+2g6a
clpOEG/kAWlmLKkd66G6i3/8Sy4zc8ZLOzb14rRU+cxcX8oXMOxombALcwjK5kDku//ZyGIL
zM2Mw7ZsSFyEOkuFIsrwzjWxlyQN5H1Zu42XuUso620RLhB7DzfVaZxIpwaPbLRyoh++koaq
u9RozCazhOSHt5GpB3rHZOusVUF985jtqK/MLYgPgkOpuwxNdaLsHVL7wsAvxx106Ju1X67Q
pEdYy6hHZvOr7wuzP14BdSZGo6908nk4yaNEMqKaw96dOtdEis+kZ6T45HE/13xsfCmUBfPs
gCpK8zSirISh7+5UHCpq4tSlob35ulA5/L+wN9LMvPnl5eub49dPn/768Pz7pzesv655ktnL
ly8vf2isL3/Cc6C/kE/+z1zMQQRHLgaID8gcB4TTGhs4gNq3vg3/WuxVrE6Tp2COzHIJzJMY
rbMS7XmlUnGkONaNtwDo6islTOxm75S3DpHz6OnRdazt7YbUu3aSJyBhD7FGAQxyuqIRsmHb
1k7zDLAUYj7nWqP8+d/t9ObnF/DYQQZbFuYT8NKU2teUhWnedGwhJ/aU1Jly51vkTkaYauc6
JWHgYrPvFzqJn+rh6X65IKuUjsye8lEWPP6fsitpjtxG1vf3KxRz8hwmokgWlzq8A7hUFS1u
TaIW9YXRTy7LCsuSn1qOmf73gwS4YEmQ8sFtVX4fsSOxZ6axWZKQ6uLt7fXpO+tGQ8/SUj2+
8OIJbRK0U0wcWLmiWxtLUZoFfTDHRtjchhTkFV6BArWZrpB5DWnZrIMpUY2MUHmDEVFaUTBq
YUlRwxQoGx7AB1bFlrEV2DgiyXICxVsItlynNRshztY58ky+z7IyJsaybyaQ85K6Gl+EY9+X
NHJwu6kT4b6PaXLu9HX3+HGEy7nxL2ELCFqG3KHJHy9vT8+Pd3++fPtgv/9Qtq/56lGcOOXY
WwIJvx7YVHFfq/FLWJumrQ2k9RKYlj142yOU6vsKKolX+p7ou1QKyWzOCmxvojNNbN9Bz7PF
wxuqaKd2fCklTYp6iJg4EDk2CgwoX40cihNaEIermgMkCQfHJaxOCA9oMSEDE9Q0vaItmtPo
bqM/RxtNTq03Ry2F125hBjQsY5B5HCQGjgAWtQHm7VCjDKeqRvDDYWuDvtuQGdjSYYDQieP0
XZnej7fNkbwpNB7HYk6l0PQ0I6PNpSCVxTbhyMkpm7uWebGkP7uqvpgZrNO2zhF9RtqKP2Cw
lkiZw732S+lE3GnQwqRl9LDKUEO98RCPWzaxWprvtV/xaYg1FiPRbO0yDjHmaAtokyDzVADA
LBta5YCxhQ82cqHkwSjb+kAH1jiQtICNjjJJ9e1YgIan4Cby8zF02FSruZRsKLbCTPWiOaTm
ZmFHy+fH97fby+3x4/3tFc5h+LWFO9AK3+RKQWuaXx5antsLDt4ZxefQvdqr0iI+nyoxDL+8
/Pv59fX2brYlbUrIX0iPO5Bqfk5VlCs7gLZMnSp/k+t7hUYkZo7Fd2mp71mJmEnK95TgWg34
+ZVKYyl3Zp3ws3ujns3+ZVquG/qzHl7eZ3BoYRxtDWC3BJ5m0GIFMGWNR0oWsvYZzTqRTj9I
k8AyQWFuQwop8REqk9j6WZk06ZRws/zEWu3u388fv326LAcDhcM9LjxaEmfjEzasEwtOOXiD
WFRSnAqTiUXWz6HrZH12xt0Rfrrd6Hk5VXlzzI2jKwlhk+B6AS1Sx1mAm2tnbEkrBKaUh63k
xewPhuFy9IqRRuLbrLbZs8SzrtSvFFxir0QGr9EJ/M3HqUHtQjZMz4rj2F4UIqeIjpWuNRgz
Au1Z4ghcyv54ipGwGEBSrL+QOBIvcI2TnWnPGde5fBPYibylVRoj7Dx0OiwQKKjVz83joBGL
kI5I0tDzsOZHUnKalgpIesjJ8ULj3auduJZ0TvOscYXojWWVcrVkwwmDBUQ3hGHgn0h5GFkj
iFYiiD4VwU7zn6lhnwzC1jTIKdwojpFkxHGQvYER6Y/IxHwCbdGdo42llQO0UtHnSDEdPwGd
w1oAGur91tngtwdlCm6gfyZ4mjOVGdn6K5/6no+kmMl9dEnGkMBBvWNJhC3W4kCO1SOThyjf
96IAlfs+VutF4gcuVvoAmAenHOIjSQ5uh60byJx3iUIPi/MSRd7OH04YcRAHXLTXQzQ7TBHy
oHYmEKduhGY6pnAQj5zYHPl1UXSASJqEIKNK8mWz2XlnVE0kbd31/JB7bYDn9wFsrncUjsWf
nsKxHUjPDKTcBYA0KQ5sHbwaBxDN/fDdsoIbWajCESDaeQfoU6HrXuVkUL+kIQHC6D2yKlZv
b+BJg8+b5UntxEsvi1kAA1Eucr4voXgyxIda8BbeWrsSVqo+kVTf0hg4tDrpELy1jgCcpdkY
Z4RIx+dAhM5VAPKWxxqgBKg/HYkQIhqKyxGVJuT2dsTR9Wa0da9Xw4shxvM0p78oZ7s0inPC
zpJa3QIZxnDRcXPJPJnCwf1zygxshBhNlSGA7xXYKjeBp9HYgAxA6KKzleEocV3bA9H1408y
g88GGSJEjZaSUDO4oCBLMxdOQEZ5LkcGXyb3XGRFZzgGH+XoBgjsDNiXZVkXOoujHSO42HQr
6yLPQTQ/yF2bHMm8kNs68ICudeB9S8qFOyBAOdAyWJxdH1OC3deTIGQNjQpz3sXxGWGe0gi8
jS0VeV5Vdd/eextsLpF3JM4KbIe/KLe7rY+o7KJOjhU5EHikaqKTlUTzGIpc2bIZ97OoUDCF
MSBIM+WI54dIyQkI0/Mc8Teo6uNYgLo6kxlgaQ4Pd4c12AEJbWlxUSUgchAsqYEhk0hFjYit
N0z48iRC0NBTbY5Yq8vb2crBt2c2WB4Py66Mdk7QX5J0Zb9dI4Odd0rQm0JNUjpBZHFPJ3HC
aLc6pnPezjA6auWtqSLgRcHnwgPe8uybsbzNBqlJDgRIRQ6ArQmN8Hq0rISRHjoiS+Fz/BPl
BJbOlre2Ocn9z2cKk/NWI81idxvgVl1GDlO8FvesEyFyEK3QFoHq2G6We1tM2bXUDfXnCEKM
bUsw8Q5pBy11NtgOJpcj+k7IkVU4BwKsSjkSMp2TkBXFw5nIRIbJvQ2eGG8TWeJkyOrCC2iO
sfzDaUZoBsn3HbQ+/ACb6IAcrW+4rIx0THGJGZf7lnB8tDD9AOv4XI4MKlxuiTdAW5QfYCsw
LsfaPZNHyDRfyG16YkBXqyTQXW1PEHhMWK/40HE+zTLbN0p1/zYVJuaf4bt/I2j/06xPBbhz
LA9vZ8oXxokWOSyavqyT+5P9hQinHWjhb1BrxROFm6A1GxV/k4OeTY3IfLBuELjxWsL+FaYp
bIzyhEVcEqaRkO5lPQTs2mQ7mLheLo2utPkYlhg+tnAEINig64wBWhnnRxa6ucfALevyCEAJ
ui4Fuf6KbpD7LqLJ4N7pLgwQ3drBhQOCdnxKOtfHHXjLjADRSACExgvAEcB0Hgewk0MBOPAy
A93UHfF9eVnE0YJnIDdLgwKhg+6ccGilCwMn2vjWu3aCEmxdrIhSEm6xsZ3uyS4KbcAOT2xx
9twNSRMPt3+t8fIEO4GQQNsgI1PWpoYzd2lbdGJ5zhXpATNsPBE14NVEc9Jy/525i4m5rse1
thARzJQkHrr1O9Xo1dku6XXaecR1Q2T3gnZiF9aC+Fhx2i7YzPdqNOCUMi3uIUFxIEIXuWwt
uvNWNlY5Z4ubNlU40XV1LOa8ncHTWdzGNZrecrOxvvYUBMf1N312Riadl9JVrJFJcheXg/ky
PBlWQ9YyZSWlETqgTHasTLnvWOSYCuFypDWAHNP6TB5iiy2Qu+gdBY4sLSaBgK0ihNzWbwd0
uctyEjJ8gxzb0QU5vs/DkeXjLaCEK3UZhsiYBnJs+cDk0QavGyZfKBhAVwtmZ2k+O2yKx+V4
UnaYlgE5tj8PcmzlxuXomR9HluY6QMC2S7kc3SzlyEqL3EWWUogsucL2Gvk9eUtud5Yk7yzx
7iylj20vczm6kbFgHV+hLJfOboPddwI5nttdiG19gNxBmz2T43q9I5FmHR/nWExsK5yVsepr
4YG12IVyKMpt5Fv2xkNs24ID2H4D30TGNhZm48Q6ULiBg+ltbswXOzwYzf+au9Pc/O/SjjQN
0N2WipwiD9tgA8DHtAIAETY6ccBFki0AdHknoKVDJMFAEkgbErClLEEaH/feBI/F29r65lxw
WCMSPBvhvIK312WczvhsMlG5Hqt8J1buthdeEqwCV9n4JxdkVb9v64pmujUpcKcgX2SeLCxM
ErA9XB+TfHjW07MgcqLYGwIGYttxwssS9aOSlWw9LFuAGiWax7nbH2/vP7qP58ffFQft+ken
qiP7rG8zcPhgvCCQQzm+ff+4S95eP97fXl7AiJ7hvm4Mk+b7si87JIk/lzmrxqpnU1/F38eI
tz5qYnzGB++3ykOfKrtoxmzglzA2gMmE9UU5fgkrTwUVHoWRdHBe3IJVtArscx0vgxXJdCx2
8CtvXNnmn0kettR4SXNC61+AbY4+MxLghU3Dr1ctj9yrjaRZZqFrMpVLklyoG2QXZVPHrOD7
L6c4w5GWfNECH+ypKvGBF6UtIvRdo1SKxt9c8XGJ42AC3UctBk9w4OlFA9Kdr+xCcPngxaaj
hKLWwieSbEmXC3VXHlw4+3BRyypO3WATlOezkVu4WWlZH3F8fGO9dTf4ro4oM8qGL+ywWbSW
wbmjVt2m0X8urzqsI3KIJgSsKBuZoEXi7xx0D0dEpbtfmFqm/x8jsJouZnXy2LZQZp3n7AvP
2V0NtTb3UvGq5+X59fefnH/eMZV81x5ijrNv/nr9Bd5f/Xl7fP72cnfMp6599xP70dNjXh3K
f2r9PC7y6r408lMWV3CIZi2b4spajVEL4JLHWg3cwdg8NGttoQSvwdicQHw8eh5TW0PeqKam
RcMZvRwZ5bh/+fb9t7tvbECmb++Pv2naTwulY8rGx4zHTOndOHpPErZIB4WtJrWlbHnva/zu
UHrOdjNq47Eu5zRN1U/fn5+eTC1NmXI/KEbqZPFkGVFr+ANas0HhWOOjuUIsqbUhjJRjRloa
Z4RaUjKZ57TgSXOyICSh+TmnDxZYtTGqQINhrb6eDHc///nx7f9ebt/vPkRxzr2mun38+vzy
wf56fHv99fnp7ico9Y9v70+3D73LTKXbkqrLFWOFap7gXhcxmvoIN6TKsSmTRoJXXJUlBuFV
zhYBpQ9GF+ie//jz5WZr+SRJMnB2nLNZ4AOStAzukrGRgh8JJu1JMqXOodm8uSSV2x9nDVaf
uoduj3sO4SybXUuRhqJXvV9yaRb6LqbOOZhHLlvcXY2Pcg8/zRtAZedQyDIP3LprWb96kRk0
W0vhg4KAQ7jUbY162JxUv9Acf3BpU6XY4CeSBSbTtKR+fai+lI0WdKU8j+UisH5JJPPeLU34
K4AfsoANyNsgciIT0Sa0IDomtGbVjgpHe7P/eP943PxDJjCQsrWJ+tUg1L6aCgYothYEWHVm
k/RJ71LWD19Z5//1mzDmLRHZVGYvmqri02BEWPSWGNL23IPdz/8d3kfCUSpEZEy3RzI24x4x
Esf+16xD3UVMlKz+usM/vkYbi+uygRK3CVuyYJbLR0basXW36udKQfqEKcJT+7AYDVDRQV4i
BKGLZYLNxoId2lElxuCKCwNkT70KIF9MUoHQkg7PsR2pSCTuNWuR1HZ+4oX4LHrk5F3BdA22
p6cyXLTMrgxBvY8NeJPs+dmCUTAcEI62McSzIqpvbgWyOSUai2zr0AhXllMj/eK590vZ0dzV
Tr1wdgxrhDm4c13qw6MnFCPc0f+wAXRs8ar6NBqAfQlPMEx5yzqo5ghxRvwIdfkjfer62KdZ
6W1ci2e88eMzoyy1LiBoXnAmJIo2y1Xaoaf1E5oyrRGNKhgOPazaUX5tLvFhIm9qVUTpeK6H
ul2am6fruCFSLVA8u8SSf8D646W0uM+YKyjQDgp5IpvB2tHymJCUtTHuDHrSXVEvjOI7+DVj
mWI5GpMVcuT3e1LmxapuD7dLxZx27nazNUtZfxEiywOsd9F7J6Qkwmql3EYUNacmEzwkMpAr
rvRGeVcGrrzpNCujLet4WN20jZ/gXroGwoGtCxJla2pETAcTMuIvq0dw4mXZgpooDVumLfeE
0Qkfb6Rvr/9iC7PlJkq6cucGiFKDO/B8ZxLRg13R72nJpvGkLZFxGUyIoYMvty125vM1u2Lx
ElQdcluqS9Uy2Go2knOmYDkCaYjguN2kM/EVEZdnM4Q9ZX9tsLGlo2WDNnDhFHMhG6OlSOzr
ooGLOctthE1CrysUw3yPmcz6SiznBBOFuqGzpC8Gf5RYM6BhgLrLmiY+fNWDFaqHd1maOtrG
m57lvL/30Aohnp86hnqH3bfu9vodjIQtD0+Hukj3OepeaVZCCZs3IC2tS9nUL1WcG8GLKFgR
dUaSGASO9gYDvpKFlocq6bnHqfk06cKlyvHP8LmZSgGwKj9nwnXag5YgQG1rsQHusmIPiyVp
aTggx4w0ppQvyPgGuOULvj7MStmJi5b/8auTvO/PfvRJrjjKAlEz6Ie8/YK2aeCkbEGJcCQG
ke0KgKDL2qTuPCO2JB+VkSWkKpMNBfNv2pPsUANE5T6Qz5lBdDybFunPe3kDDX71h7aW3Zhw
GfubkrySnSZweV6X5amnD03maKFUNcc0/pmVz15pslzM28febLQAKqadwJvEL5PXLTkIKDb1
lfwkLuFS9Q9DzFbwVyMlmruKEeInqBNDPtldTCKeidHUpS0nBaFgwamPSWdkZ8A0MSljMo7a
PLopivcby4Y5fKsRJaS4Zim5HkoCrie6jFqiBfOD10OcLZPipNwX2bUtJ5paWrbEWYvUKDAl
3pKpvDkprIH18cNwG6AiB/m2PFSj5Nhlqvkqp23dZ1VSkHOGHamRpK36Y1eqQUHBV8lRnuIM
R+3ab97clB0yVT7siRpwmVUn7Bs0HALGbm0h8YhwKAYXEXVlRl4qmmEWsmVJCv4Yh803pSTP
4JGPp9s8nQd7id/ffv24O/748/b+r/Pd01+37x+mFcQj0yatVKPiN5uHFdw135zQAdAcQA3S
MVtS41tLAU/m9fY6nrYZKYMrFkZxgZDvhvcNa23d5NBDIbCi6rMzTY7SXr4ILbnPZB9iTKju
NQILPFoQKjCkdfIUPHRDzvNObpCAsf/iU4dcDgHwUFHRf5QYhbQ3R32V1ZKK8rxxNyOWpA2s
kgiWPM/Ia1rEQNJzzNorBDsUjyXghvVk1haNb4VYeJLa2z4+gvOV5qwMUSAnJ1r3V6bKMlXO
+edGp/NC7ZtDmrd9dwSnWX/gea/leQxAk6pQEj/0M6ZHk0x8rZb+0JSRVjqGfWizh1j1PDGI
+jgjhyIDV6tolbJmlqXo7VNKDnklG40XAmHbXLkbA90fmmtdscLHGuuYlvHwChP3pIlNuw9T
LuqaqWtsc2lkiKNGI2zFDOosrBtoZibSkospPOdxq16WmJLV5ukhS/vm+IClGk4qF5KsvKYZ
haq3sqmI2uSYyVHs86xIAcGPI85lNvjTEfODMruL359/ebqZl6KASrvc2SrbKyDdk3vzwhUE
JbyTSkEpn1muBIyrnr7JGyUryZHVbDZNJbAGVGZFQar6Os+F5ptb/F5Cf6xpU5ykuh7k6mHp
ICwwtVWdYQ1Uue5GudtcsxV0f62dEH3yduK26Oe0S909CubZETJqglFnNrvAzJDDGfI9m8Je
leNANUAxoQFzq5Kl6TRJY/UZGuB9G+P3tzjYlXFeY2U+oHUUySefaCqO0lQ7j9kUkEqJGvwl
wBFy17hsYaXcYtRQxdmg/mWpQ/leyawQNiXt2f+zMqOWs6mZl7SkO2o2HsTR3evH7QUu1tx+
YYt6MPh8R2+Pv72+vbw9/ZhPDs3pwnAPqsmYVmBL3CyhisuCSZn/3QikVJ1eH9/eb+AY5f//
ur0+/hivPOqJOFXc9ei+zb6M/uvkxfFKYHpxxQ80aZO+ubS4y5uhUE9sXt3nTaLXcJd2udz8
BzPljcUM8ACf2rjm3juxY1DBOXeZsmsRM1XJ5r7+xqZ9R8vyBWlo3RjpTE5o8pMTxlTm5bP4
klIzr0PI/MIvfps9Z2226uD6L6F5AmQk+Y3bSWsKPkNJintTAo7gGqI4uuf3sFT2LJt3ooU+
f3mb7uUKnw1tedfefr29s1ZyY4uy789Pr4rqhzDypMO3AAHsmsjZoDObT0b2P1Jgxy7FsyGc
gFWysUcJHY9p0U/hav828uWqk9BjHmjXOTFWl5TYbEphNLklii73cWNsGke1uKeCW9yinUSK
SyeKsGN1iZOkSRZuAks0cEAabdH3U3IYHTzO65MGLWx+IFBk185aGoPDsLXsHDK2Bl4pc8IV
MpqOzi2bTn4lxzN4UQz5DCJ4pInFw9CiczZuRNjQWKT5wVJsfI96OaHjVr5rKRNx4L0cRlmy
wdK4JyZnuQk3LtrMoKi442BlqgLi+sIqw0dvY0xwuNmgn+GXOHhk3MJSnNOuv7QN2AsvKjc6
NolaHTHJ7wkbDhw9+Jg6fQJ6uMBVqsxJ8/Mqp0Wd9nJGUrpgdiM9y815ACLPN4Q9+PzDpf1B
WWkOUOC5QWTe3xw/vK8r7GqqVK1509YJ9qlwS2jPWH9sXey7yuI6dcaxE5kR7YxssMlWE2dt
+4A+d1RULVNxQXL25Pmvju+skL8jVh3uBeg7MY0TblBdwaBwFyVnV72Spw4SroteWYJdUQZ3
Nm0Xs1W0eq9gXA1cE23Mhrour1FZ6gXMpVgYE9ioHYvLvuiqDqSnAluZDOjOQz4Ba0q+eesh
f326vT4/cncM5p50XsH5CcvgYbonrkycZlTY2rRMFlWaj1/V0mmuj91+01nyObeOhQtYtLHl
BJZ1WBNROZGHBE6ZjhJtQZrGI+U7fgd2SR66ZJr14VO78vbL8zd6+x3CmKtGHlFGd3borGkA
+/0xoYWldcPRL3pDQuM4Lh4Hh/o4bcRdUlsUjJOXB8ZZmzT8t7QnWW7k2PFXFH2yI+z3RGqj
Dn1IViXJsmpTLSTVlwq1RHdz3FpCy9g9Xz9ALlW5IEt8Mz5YTQCVeyIBJIBUxH+US3yf4uaj
E1VSZ4tltFiOV59lh9e+/g/qXvMcaWmhtjm/OD8LDByipDQwNnSCKmJu44Oky4hbXr0+hRiI
MQI5UWMUa/l6yE0dYLa6psVhMy6JkzI5Zod2U1DPP+opEE3Y+ORIovmHU4BkU7d5H9HPD6S/
oCKHHZrLs5HBvjxTe+CQctQKCI0JEKw/nF0kkgv/kP5dUjlVLRp0IglMJaI63qzGGiRoVsni
oPYIYth4B6w1IL0MrgtEqoYdVOnl4S28JP1MXZrzcNMASTQtQDoLljObBLyrHSoyaa5Dc3Ey
Ug3mqj3wfBDEB3JzQXsgN5e0PTcPFTijLF4uzXlgdyFKcfMxCsWBRxoBNCU/cAiAePOfECdZ
2SUg02wqFlAzvE+yqD1ohJFUigojvVen+WjvD55/oD14/pF29DQXT/zSXApR4rUreaRPz7Mx
QnOIR+oaBJsgxTouPlgqQFOWB/X/cjpSziXFM0eID5NZBOmHy13Q0Isy/IFY8sHBBYp+JY5U
e9ipKklHdzUS1HE0hq+j0nkvzaf56GSWRIeezPg09QFUJ+RLGzbN2SRguhUotXTMe5ZxZcfQ
hw5+Lts0K26Xch+OWLUPffc4w+dVld8nxsaGTFoWXRakilalHJgyEHFpdCNv10UTiGkwbY/6
5fWAYUBIHxPbTpE1IKHWNqziOcdsmRaQZ3ztGaGqLyxkpqwu6kt82ML9YsYuTljABK7wF0Er
rsT6zRBg8kDusY4BUAItM1IPZRMKOveMmxIejTeWU4VdzCjgJVnB5Wj5l1Txl/QIXX4w7Jfk
9u6x5+RkApyOaDEIAsylJ7igzUYDAX0b0qMvqWnEZF4ElAV6sfioDcsRAij1fHkceC1MU1ws
j8NrVOFPvcZJxBkVDqfxM/jQ7SuAocUTZ3XUK9h87mBFDGP9l7YvZI9Z8nyKaBp1EkadBlBt
PYcC0yK6wvt3h+DLcuqCJDMSLczquhrDNiWNjZP1uTMQiXgom4B1ZWVmBkKEuh4uInyF1THz
mqgTb9tZ6HMyvRY+521d/A7XzYiqI3wRA1H0lXRPc8LGidqsPptMgzRiANT74eI98ECUvEeH
z4qPXO64tAFZEClVjI79OQLlahn9Dmctc6N/fOxsFHtpYFXFplcBgJJ1t5hEMDa1h5riG92T
ELhSiGFO5KvesCgQQ3ouSYIJ3tDCtw/+t4iqxj9fnauPXfAkhFBNtas7FbW5VVkNSsINOYev
T/yhAbDISeCA8U3z6QnRCEScnISrQfzspKEKXAXKW5/Uo+XFfEp/WJ2OjsYlNsWjsEtwCzbv
fzEoivQ8M+/40bu8TEMG/XWC1woNfTuvHpxek+0zClFpKYwaVpu6THLcj95FkhSn66f3F3QJ
cS+SxL1pVyyGqZGQsirmNiPm6wYzg5wZ0VXiJ747Zd+yzdPYpQRoXUXST74Hqitg/+5W39tK
DO2Dp16KH6HQQZU+jaJQz8m7TvHxRvjUOtBF02TVMew2r7XJtjzdbkdaImIxz0cI8LY/1Mgq
Zm5T5M732iG3+6oO1yOiEYM1CSxaWbySZVhn8ENMiHKhR8CYcxaDpsu7BriJg1KRsOStPa6T
eL7FCvEEILdCWtZwbG3977NtPTLOOWySigf7gWLBUngswwLweiNb1itzHkZwhy41ZB1WZeuL
TMTXybyOfUNYk6HTX0I7fUlsyKVC1KV88cqNdZetg4VHlmJz9QEWVGhiLZsii7/wVoppRBnV
5h6dNa1xi6ClwAIGzljbmrjJrIOZq17hmxHhcSm3zGVkSbYVAR9RQy007Tc0waEcGe8GA4KH
opdbb31IywIn2IO+gw6uOomHRsJQUF8WrnOgZShxOLsxmyxJ5wUVqisjEZntQSaBRN5Smfhn
9/D0tnt+eboj4tt5VjRcedF4sC7CmBnvSn5dtl1lf4PLr46sc02GscMUsgJ9+Y1iiW6VVWu2
ZQhqRv3GQgxLV2zayi2wH2Ki23I4nh9evxEjUWa1oVyJn7jyLGlAQnNKcJYoYhwkQga80A21
GiQTf0Cffql/vr7tHo6Kx6Po+/7516NXzHn45/7OCEIQxNrEVj8RCQzkLEQsX5tJYxQUrVWc
1a0ZTipRyy3qWEm+KMgpVTiyO1RzZDufMSkb2UrpwapW/dAWCa6aq6RxgTWrGtMnxC9c1im8
IJ1KB24tndYx3AFnmphVg6LOi8KaWIXD6JWuKtoGtke4hHLK9GqyEeYw6774je4/ai4nIgdz
Yrh29sB6UWln5vnL0+393dMDPd5IrLJhmRWTH4ni8m3578XLbvd6dwvDfP30klx7g6oK+YhU
0P75/l/7t9f3UBkUWmYc2L/uf+zvnh5DX9IEMi/iv7JtaCWIIUXPMOoQlLhL08bulSUdv0Cc
/OcfesiVqHmdLY2gKgXMSztQwi9GFM8fMa/jUbp/28nK5+/7H5jXsecMVJ7PpOFiw3aovFRF
mroShKr18NJ163vP3W7ZNn3glXnbQGa5Rkkli6n8AYiCE4eVlk8nQmGLVMy5L7II+vS+0M22
TMnjGukcHx3Br9fW9QnZfk2/AXn59OwYx1PvtOv32x+wZwI77Rp0P5EwoTOD3CW0nicOKE0j
41AVoBLTUJZxtGIVprtsreg+QVGxrJS8xYGXGbDUuhGSl5VDQqNXDqjOYgQ75dQeZBPldU1V
mUTAVzbapVENKDlA9tZTAiV1rIKGCjJ72S0rK2GFYHdSlA5sWaEQTI+7dZE2bMn1unALEWQn
Hlmo0MQUUr2EFEL16dmzDLQGdvTo8oQhwJXAatxhQoDMs5UdxU8Pt3s7PAV1U1gDMSjLiS2z
WHKD87FzjBtY+wQugZOJ2KjGcu0GzUlEhHQlrxaqblNsG/DFBtPXCgKvbf1JRDeOQg88nv7G
RdnMih5BJc6hEkIPpM813Br61U+3ikIbsqNe/XTt1rLrScwVjjZiOGBKUhdXxtSybM3tSkx4
KcI5MapOr2r182j5BIvw8cnkeArVLYu1ftahyGOeMTMk3yTChVJUgI+42XSLBNdKzdZUKIlJ
h3G4dclGCmJ1naz9EF/dHyK+Fxcs397kRd2p4GNBSWr/QIpKa4DOoJLmnGFQrSJ69+IoSj6s
bzDjZh81b5hGmTSAJOLbJqKd8kELq4y8GnFsqNBKmOzicsF9KHxq6HQYeZJOu8iMmAVeyjM7
JRFaRDCaM+dNF1EpmZAgWbhKaGZw6JjNYPFDQx0vbW2/qMoooUqWquUii6YdN89obbvJjErV
0qirwrLnyAkOpMJPXE1QwXM7Oe0wcbaBQ8qa1fXRHRwJfjwuJseCuoHASuWl+pzkmGuyui4T
apJ7qurasgio8frCJhrlDybeNAosNaLpdIap9kX11jjVpzNgXqGcU2YUQJCmuu7aPClXCSYL
T2IeeLpFKK9IHIiSxZ0LaBCYTOOQgOYNPjnrnfyyNw/OUsAqQBiaqzxSphuL2weNQdcVbmbl
g2VWprCdZdzaMGpaQ3An3xgNYH9XyIHI2cWInEEPsKcRcWxyXJOmbIltVsKlwgZu64mTz1nA
RXzXaSCFsKTgVRpYhQLdK6gUGH9FLLWXuAg4qmMyf65Awmxe+J+kLG8SamIUuowmMzOyTYLF
rMFpU23PPBR3cxMOYJ37o6L3uqREu3ywPcp5SWXlc+s2zdxOqUJGZ0UdXhtS5Ygjv+3jkWyK
RrCAtp6XqxvH2iEJUPDzYEJG8KCub4ACy31BgLdewRgJFJFQER/kDw+gmrI+cdKI2yT56Szr
kJP5n+PVXvBD69Z+e+x1wHYUIG4gdTTdeDSfpsKQPC2rwWQc1e9fX4UmMRwTKkeeSOTykwCK
QAs40E00gvv1hRNtNlRMOsvlixERxzwZ9GkGdPKyuq/BO90Qpt91QTfCXuA3/RON8gSzgbMe
mmQotf1lpPCQkT0Z5NyPqzBrkGMq+vxgw3FG1Fg48AtNb/VdYUD2oMRZSYEMDs8Qb/QxnBKO
g1yM/tSZmS3rprM8AxaYRO7M9Ej8LlAv0ngdybLyxO+2gIp6bLBwiOyTBxqYiuEbPFhQoHLt
NIbRFbxCqQ+E+djOICPoekcpKIvy/hJEWnGKxa/tsdecXrMKT0NPU+dlLQhP7KFRB75YxmsQ
PAq3Fi0wjow5CAUiYfHkZHKMJdlplWyKU0URLCpZnR5f+JMl5VnJl72F4foTqREL1uF4KsGo
uA2Wt9GXp105pf05kEjK5vRyELf7SkxxE02h7JWUnE7ojQVLD7ErzrM5gymiX+zzCb1Bk+h0
mYky3FFT/h7SnYO0CNhsty8ZNdmIeUlYKlZKdcdN+IOIsP0kCgSSZNHc56m7F2Rrt5hf5OHp
cf/2ZOb+syqIIkosE5jMyAkoNLBsO0MVC20MVno9PEoChgcsKM6i8+mx+1XGqjUmYYryyfFV
17DYLWFoZprM2ZzplD9xtQlUtsrrk660r6TtalTraVeUTSTW+EhPsP4aU7EhjUhbpvLyqs5p
5Q44RMIOpWZZySt+KLUULM1Z0ItwZM57CcR0TMccXczUzGFfmPl14ZdOY9ttqsS0/Fk4GOFl
klvZ9CQ+Y9aDMezx/uVpf29cBeZxVSRxB+pTjD4A5t29jVvUIUyffOzT1z0+fPXb97/VP/77
8V7+61O4vj5Ps3Unp9o5mBYMfUC/s2P+9J/TkeCU3RQtmTJQ4qVxlS/amhNfo0RTREVDebIp
CnS9zNcV8xokNNmEBIsiqbbml+fn0w6QdPo41SFegSpW8q5elG7pSnfqON7fZ+ZWt/FOlxyq
/uJZjMsYIT5lKs7s0TajpUgUZW5PgdjWajC8luaJSCtafNBUoUFdL0ondaNDVWHKqrpUwxJs
Z4XrymliL5XoDrhFa/zYKpHPKKgi3IWbr/Gpz2VZuVULHyL6G+mMUcj2Oi3SxozxhdubcAL9
Wi/OQd4YL+O6qJLrvoXyxnhz9PZye7d//OZbymz3pSZD18kGUwVbcu2AwHsAy80HUXGbZZRE
hri6aDHBKUDqIuXulwrbvyo4XsgC9KrIEw+alZ8OsFkF8nv36GXgs7qhMvT3aBBm6dpIx64e
rd9A1gcyqjBlYyXMJmapFzIsMwD+6vDmSRsIHkIYtGUZ52naoFG0RA4v5Sy/SEUTrS1W2KNR
1hO/KFs0EsnUqJY1X5a4qDj/whWe+FoJkyUeXPqa8sFpQcWXSSBgTeDjBeW/YjU+K0ODKR/B
01jDiE2qRnAElQajr5PCMv/h747KBTtQpElGWyhF4kj4d84jL5+ghuOJ9cGnkgsXNZwvps+z
SaFUswBWanYGcjY9M171gUlCarOFk+PT7roFgXVGdlluhmtO8S5Rc9WWDcijjcV3hFeqctDM
G4tXAWpA2PoRj1B9YmXTkg8vIgU0xJAepfOi8Us7/g0CMwJrMkV1yc3oHvwl3jk1mrRqnCNb
v1Vh59SVr9fuf+yOpM5k3ilGLFrxblPA+SOf7zQbtwZdIGYNsEjQ0llF5+KVL2mY7u58i+6S
C+P+XkO6uQimsnJZ49shwl/ekmmBludRdVNiBjn79go3Ff3A6KLuXxDR/fOfFEkkyEstPNTA
JAVRwXVbNNZGFoDg8yQS2wCTMvxBFlnTrScuwLA4ia+sSzzMKQ79tjPU4lnckfncCxggEB47
cwYGGDC8OKlwL8KfoQ6KgKUbBifzokjTYmN22yBG6Z7iGgbJFoZc9CFQRMahv0VJDbhBpQ87
qVLf3n3fWff9CiIV8tfd+/3T0Z+w5IcVP1gZ0AGXHLgrXuWm8qM1Db2/MQDaYuMI6MqiTraw
e6hjQlJsWdNUTjm4DmN+fuqXJ+afXJmrdsmbdE62XaiwKwaHQ7LEW5dIPCdgclb8I1eRaaz1
h8pgTkkt3/aRqjGpW6XGAMGP/vmCT/vXp9ns7PL3yScTjWmYsGHd6cmF/WGPuTixbpJsHJk6
2yKZnR0HP5+dUdZCh8R4383BhFo8Ox+p8pwKO3dIrGhMB0dZYh2S01CLz4N9OT8PYi4Dvbw8
CX1zOTLkl4FQY5vo9PJjotkFHRSOREld4GLrqNcorUIm05G2AjI0WayOksTuvq5z4panEeGO
awra2GpSUIG4Jv6MbtO5PYcafOGuM42gsnlZfTyhC5ycBsbkzKa/KpJZV7kDJaC0eRDR4jWh
ImOUyVTjI5429p3MgAHpr60CDiGaqCpYkzBa/O+JbqokTRPS6qFIloynpmrbw+Hsv7KHAsEJ
NNty2+oReZs07jD145CMDgVIpVdJvXLHom0WtOTc5gmufEpuLrrNtXlKWMKjDKTY3b2/7N9+
+g/CXXE7MR3+BpHiuuUo/qK4Scq6VZ3AGZM3SF+BKGieu1ULqFiW/EBBMfm7WacSHRWWPOlv
ungFgihokTpHsYESAmASuaiaRy2KnvhaWy1umJsqsfUpTUKe0StWxTzH0AbxdltpyaULkJBR
LpVWCdJkIVK547f4jtGKp6UVAUmhQQhoVp8//fv16/7x3++vu5eHp/vd7993P54NS606so3u
McM2nNbZ508/bh/vMbLqN/zf/dPfj7/9vH24hV+398/7x99eb//Ep7j29799ff7zk1whV7uX
x92Po++3L/e7R7Q/DCtFeYg+PL3g8wT7t/3tj/3/3CLWSBkaCWlGPKezZhXsjKTB3oBGZ1yU
kFRfeIW2JitffYjO1gySRuoysABy2hpq0LA01Q0idU+LkKwLfVbwSaN+Bkj/QE2Kxg6D0uuc
6HaElcEaiNGuYe1DAk0qj/S8SJPfMJd/Hv0l5/f+9u326PXt5f3u7f1l50RIwI7Xa54cTZDo
sWegY4r7G1TVPVuMNmQdULcekAp4K2zNFlQYnEiTk4VXZe8d7nK2fpiRpRS9BvLy8/nt6Ui8
ePH0ciS3lLF8BTFM71KGFFLgqQ/nLCaBPmmdLAngVZSUKytE10b4n8DKWZFAn7QyFfQBRhL6
z5jp3gRbwkKNvypLn/rKtJTpEqIiI0j1O34BePADUJBrNk9557wtqqjy1nwvxwD6BZbirwcW
f4gJb5sVzyMPrq733HWgXjDTejC5LqVa/P71x/7u9792P4/uBNW3l9vn7z+9RVvVzKs79hcJ
nJ/VIrq4nFzKJz/9EeKR5e/WQ+MVyQ0GfE2mp9foCvD+OGT+sMNxtubTM5nffVB5A8Mg4yNE
/PDd/vm7FW3Ub0W/kwDD6BW3PayyXzZT4HlabALv9ToUnZ/DXHeL4RtWycgYRUw+o5ZZx8SA
OyOh50RdMfmepUIu6GUNEkjJcwKenVIw/1FZvd43BQ5ECG4OkA5fsWZPTGi6e/z29v33Z3wr
9OW/keMr9BGINEcoDhHTHIOk3bSZV3O0AvmVTY99xNxvftT4LCci+AiP5h5sBR9PvRJBNFXp
N91pSqtNeJpKqnVbbJ4HpNjcqizSm8nJ8Zk50ocMq/RDgNPr6Jfb97fvu8e3/d3t2+4eyhAb
D07Xo7/3b9+Pbl9fn+72AoVH+q/G/nM7yvgyqSdTWqNxZkm3e2SfRBkxmEvSRVgjeZ6siSV/
TUA5NCOhyDkGy5jD+f8aJSWbvX7fvf52dL//tnt9g3/gPIBaSA3iPGVXfEo5iOlxgQ+pgUG5
IPzVKmMRwUKyOJDMT6NHJihLYAh5in/9QxWmd81SbxH3y9XvQJXFE9rLV03jik38kwXW0tm5
P+UrdjYhRLAVOyG4HAkLcr4a7wzmZkCqQqzlxNjATUk1ZCt3vTsE2607iYaIHVpCcg1V0evR
L3c/7+D0PHrZ3b8/3t/iK29333d3f73+6nFRoD+ZUk0QiJHFV0XN5DhOFj5HraLzU+GHURcL
y4voo7bJDjw9IL96tfVMfc4t1JutHmv9QiYplciZk+FTf0LmQOyRK2qbfKmbmJwWs9ky0QbM
y9PD0eP7w9fdy9G33ePuxVWeFbPMa7wzRLndHcq4mi+d96FNjNrKFIbSFwSGOu8Q4QH/SFBp
5uiFWt6MY1VwnLw3rD+fnx5OnHzhn0+mo/RFXX2euGdsvJgdH0+OZ312HJ1NJDTqYk5aOAZf
n/GVxf69RfN2ikITOlenMlbIk/PubvcDKwGGHw2CKixw9uPbE6io3x+kg31Utke//DM7/5Vg
9YMIjM9thlclSrF5Im/TvcXSi6T4Yue5L8RpgVTjvX2r8VALVMLW28Mpp2FSkGPHywKR1iYg
pNuTjsdcUYwdU0qo7eqaTwlymtioPCAkW12khGNvyEaJgkVpmfkgdHeyYTdBsXtkyFHpoVrs
SXEVNcVjwy++WC7kB5gd9KMp0EJgqMdakFTNwGn1ujOIvhIfFo1FN4gFJiWt2t17LpkSZboo
zdq0o18gtIWb8NiiDAPNrTmZwNcUaSRVQLBRSF/NPhmfWiEj9h2RDGX0rAcZQbEdQtNFNOgv
WNoBAoOiNJX9/wMT9VqxonQrVt9k+CxwEokbg+amNHM1DMiynaeKpm7ngmx4hvns+LKLeKUu
G7hysjGcfq6ieiYepEcsltFTDO4MQHOBjrw1XmH6bjryUNi9vGF2CxgH2V18BfUWraZSRAIF
zsraI13hYfVGV8KKqy5laPnkgLJ1h+ZJzuCEhh7lzUIfdOn+68vty8+jl6f3t/2jqY+nSc4x
TxnLl6blBSNxLW+heQICM/raGXOgI+5Als4jOOwXVZGJ2xGaJOV5AIsRU/jQrvPcUhWTN4LQ
tYx3eZvNoTlDYfKaiaV+8WWUYJ45M3JFoxxw3WSl8sA3lhr6faArUJSV22i1FK5UFV84FHhB
sECrEOyPJinTxEo9qcuAZQtCY140/c2Xaev+EZwnLdom836kfAxlPEP4cgFsWG5bH6kZqNaU
PDYuO7fmgloyfbIWiTLK8YT2nmhEdkeaQaIKqW82GYnu+XglBNWJK4ba/TIsMCNFhcbIKSHc
8UNMJkgt1GSqll5Vds3R3tIZPsa0yiCVm+VFE/M1IqDw9UFHETRok6btbJCT7FycKToUJXAq
CxLg23x+EzI1GSQhyUWQsGrDGvKpXoEH1mU11hZVIkvGii6GXzDcvYI9EMxMjpPHRWZ0dUCB
1orG07KS/p4GFN2kXfgXnFlQTFIrHZGADlqzbhUqt0TZACfL3n5BsDk9EhIUmBRaxOiVdBIQ
RYLvfo+jmxVw6TEazEFA8XiFFjEx6ZeMuf3p7OEeOt4tvyQliZgDYkpi7AoshLFU9JEh7pMx
XZuxEGQ2xLTIROoEAoqlmo/hCL9plEdt19Utqyp2I08QU9bBTItwYACvEgQDCg+dpLBCuCQI
vYEpWGeddwiPrc5nzPYdzkUnJAIOcIy+sHGIwJhXL5cWcFfEMQzta0CStbZhvUmKJp17gC6+
yZllihRlYKy9HYlhgbvaeudTN2nO82iVsYrKqVEvUzmTxpyIVLSu0wdIrRmrr7pisXCcsJdp
Mbd/EYwgSr90DTPoMMUKnAGGmJKVifXaBob0YcgEyEyGiihOKr0G13Fd+CtzyRv0qy8WMSPy
IuA3wu++Mx1uetGllBF8xrIDgIzcIKhhVKSnEazk3od97INW+r53i7StV+JLqlRhYoocjBj2
DTMfVRagmJdFQ8G0VzW6dZD4jG1BWGUg0Rv2LuBEGTOaXsz/YEtjxaWb684NrfTk6mHL5hP0
kSpiU9lYJFW2YZgLHC+9tezXO0xoJUFAn1/2j29/CQPx/cPu1XTuMfysgY/I1Nq0nIxYdEhx
vJiiKxGQ1c3bBPMamffjMtwLRNxlCuJ+2jsZXAQprtuEN59Ph1Uj1SSvhJ5iXsAUqMbFPGWW
j5ba/77DP00h4qHoQJ2bbF6gXsirCj6gwziCgzwcBlgJeq3b2rOEo/e2rwg+PTzvf+x+f9s/
KPVM3tjdSfiL788HKx9Xf455jWF0QRdK+RwkdvNMwurQdDm42/ioGNbWomuKIhW3Ynrk6VF0
PqMFLJeKklrFRuoAm3+eHp/OhmVWJSWm3MeZsLLesFi4fADK7MeKY+4v3LSwQANvyChmzyPU
nXD0M9ZE1HWZSyKa1xV5euMP3aIQIYptLj8BZrbM8biiYiXmf+DommWsM9Cg2y2eN8QHZg0b
zq7QC1OEGJny+6HrRayuJVrF93eaacS7r+/fvuHlcPKIbloPu8c3M4U2W8oc79W1wdcHYO/s
xnPBkY7/mVBUoLQnpmLt4/B6tsV3Fz5/+uR0viaGvBZn76ZzJtolQu8gQZdh0NpIOa4zoXlm
ijPkahlbCX/w91iIRzuvWQ6aBZwgoDxiLUPvBc5gmZHxxRwaGted77VqoomKVX2rZEF8FSdr
4VtI+xirggtqJCWS523ml2p2joqrQWdi2dUHYjwjawwEQsCEZpLoBG1qiR+0aGWy7t3b308v
eA4OVFaGbgpvOruaX/UHOxxHfNvwvLZkE7mGEOsIgg5CbQ7f365O23kvlxoRohpKO5uK5hSb
3DyTBUwIBR1IRqaQ6WKgMYKdxA5JWSR1YSetGLrRWdYqCa8K4RNqS6v9+pc0m637lQnpzWtN
3GaGUiF/60jlQViRYJVlI7Rb1YELomQK/NLf8hpDe7jj7X0nX5NTaaOdz4GDw9FAv7FZr0Am
uRIpOOhgQ3X8CI/jtmZ2vHQN0xMrJM9jOVtjLEaWts66cqnFQaexa8pJhvgsUHJSNa3JtUfB
6mLXFpnVCpJnFh5xtbPlJS9gPi8YEDgl9vZSDFNifYuaxG6KCg3QwNkHPgWapGXacCq2yoX+
gIAJE1rjCoX1n2ydD/2qJbhoGzSKW6eFQCQ5wqlQB4HW2qHzleo+ueJUU4u4VS6wI1TAwDAz
qvN0hT/mC+4kI5aQ8Y8yOZCuh7rJYh0ZbOWkA5WpiJH+qHh6fv3tKH26++v9WYoyq9vHb2bW
Oybel4GhtkwNFhgjo1s++A5IpFBv2+bzsbHvikWDO75F1tLA5i6oEGrRV3SUd0hBBYpjSygk
iAJxJopKsmVsGayAzLI94efdCrOoNay+MjFS6upRfccmU6NrqCiBVsoyg1CMA9EgUE43KOnG
hXUYARi3rsj/gtmj4SRwH9oZYmPxxJedCsS8j82ujFkC+fX+HYVW+/S2eCSh2unAAOJzmxfh
OF1xXsqDzlmUsM15VvqvCGFjDaHjl9fn/SO6sUI/Ht7fdv+gR9bu7e5f//qX4WIlThFR7hL5
kHqhyFitVbE2o+rN4GccZ7aRReQwqt69nlkHnlRBPo8Gu7bhW/NiR+1A9fKex8hp8s1GYkA8
KTYiZMmVBzY1z7zPRAsd/o2wmJceAA3t9efJmQsWymitsOcuVp6Yyh4hSC7HSMTdt6Q79SpK
qqhNWdWBKtLq0qbuKlHUwSFnTYHmhTrlvPTXmJpwYXvU1j5KmBEDB7wDE1k4QtYwFdpaaD4N
FS2sz6hbjTqWxW9Y0rh2UQJpCK6D4eo/2BK9RiAmAPj+ImV28KAJ73IzTy78UAxSa722ZUF9
RMfiKTOVxc9QjxcRVnnNeYxRVuISJjibV1Li07Y2ycM+DqxSk50EjmTFbz7A12EhUoY/WvfX
avsyzKGmbgUc1huKyRIei1FL6j6SGZmPoNKLEkg6TErNBxungQmtSIsIhCyjCKLrSISnkTDw
9EfedGLi+bYkaI7pIuBfSOG1FldNsJn8uh45guxxdHjotTLlVNqIozcdtGgFZ3Uq1YOG6wyg
7uxGIozHVsfQJcI0ynonTV6UskuGwijkmYo3q6IwTgAPIMh60xZZiDanLvReCyO7TdKsdNTj
R2QqwQlanw8hZ9VHpeYFxoLCYWIpPbKHkiITuY2ggeg64pBg4myxopASlOW8catboM/qjQNU
Fj9VdACJE0QSRKotJFIY38V9jGp3bc26nCxxVeHMjOxsZB/+6DsERS4W5gSLpzIEvWUYwMUJ
6gTeuaFt1F0WSozCiypytLzytCHALUgR+ivaXWso6IqR8Ir21653D7Dwtrv7LTDBReLfgRBl
4hsKxWKhMCQLUaNDkFhCrrfXNilrPGhR50VSc3/kMD2W9UFfPz5mHGZwaieo1U6dq2pd1Tlo
86vC4vQOqlf86w1p3J7D0QvLR42udzGh4crbCcZEfsBp60tPDpuUItTarHgiWq5sY022NHhe
LjyYXjcu3CnBuEjKgT9JOGViRfbtf4V50GFAk+USDnla3RIzJbdokqOQEpotsQGH22xy01to
rw6WigtxHGBqo0gyyavwT1vZltIAQScdq6Yzqj0flubflWtEw0DaKB0BZeBlHsWQlMKgEdrs
yD4w2xoqz6Tpb7kFo4p52pCPvhnMU9xtOiHF5vJFvulXuSYLLTBHe1esomRycilTETu32wyf
oqhdQMfabZzUZWp6BCiUsQCttGcWOmpr0IfCy98ilpe6RhpAiVTzahl7rO+kU4vfBCW8h6uV
w0m1/gpkIYmkbb2SarUBXsPZldhhY4RXi8R9M9YmUI/uponzOJVNJX+ZWeMUYr1IME6Pr7us
aW7G0HFJjZRBMC+i1WintZ0oZCazZ03Kca40RZB4XkuDOVoma1aXddx6f0TelCkaz3Lzz+yc
0mo4q9Ib7ULgPOWBbvNrXs0LOFZRrmipo8sswGAxZrHxfFkGUFBjt43n3o0RJo5D95YBLl2K
vCsiCQ5cY4gB7k95X3hKCsVZjrezY7vUHhFIBtJTtOLPOE3gTlV2VfpwoG3S9tkuiVSNjlYs
xOywYpwlxMmAk6qufE29q2wxcQsabFwzSJtvZFJ00NfMBvZw6bUg9n3gUVl77ZmeOs3u9Q2t
Jmj8jPAVwdtvO9N4cIXNInqolX50SSkqdegnpstgmdFEdlZKJdY6pdDyoLAzkzTuNr2KCjOM
Wl6m1CCIFWvN3s27Ekk99BnJ1EUpXgGzCu8jSQkOKdHLo2ozEZ5l3q1LJByeDNiylC+O/zk9
hv+MIxKUJaEsSMuqiLEMdQxd7oGx2KtpAAzi2g0Iu2tdJLkexiZfmmDeX98ML67BpGDBvTQ5
KnxDWKee7sRluI41tc1eWVLX2N+4iMTI0UxeWsjmiVwedAIiu57/BSwMM1yNLAIA

--------------BXi97aiqPtiOomFKSZnu7BMC--


From xen-devel-bounces@lists.xenproject.org Fri Jan 26 02:28:21 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 26 Jan 2024 02:28:21 +0000
Received: from list by lists.xenproject.org with outflank-mailman.671837.1045347 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTBwi-000321-VG; Fri, 26 Jan 2024 02:27:56 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 671837.1045347; Fri, 26 Jan 2024 02:27:56 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTBwi-00031u-Rw; Fri, 26 Jan 2024 02:27:56 +0000
Received: by outflank-mailman (input) for mailman id 671837;
 Fri, 26 Jan 2024 02:27:55 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rTBwh-00031k-14; Fri, 26 Jan 2024 02:27:55 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rTBwg-0007Iz-PL; Fri, 26 Jan 2024 02:27:54 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rTBwg-0006PW-76; Fri, 26 Jan 2024 02:27:54 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rTBwg-0005w2-63; Fri, 26 Jan 2024 02:27:54 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=rzOleQC7gKcyX2KrqcYKbEYOtA0QzbvRwFgE4rqk9y0=; b=ru5JKlaEmTwB35THOEZalqTRVP
	oQKE6NdYY87rIjgUO4oqGmdLD3vIoAkGND4NtC3FXwaNAwtqbqEVnAkhSOQPgoj5ByQErxQSc02gL
	DzsIojYMO98cjBCcNtL74lqhK9C04q9KdGmbqckWTwFEtfdWRJs2Vp5hlm/16BgiEFEA=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184459-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [xen-unstable test] 184459: tolerable FAIL
X-Osstest-Failures:
    xen-unstable:test-amd64-amd64-xl-qemuu-win7-amd64:windows-install:fail:heisenbug
    xen-unstable:test-amd64-amd64-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-amd64-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-qcow2:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-raw:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-amd64-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-amd64-qemuu-nested-amd:debian-hvm-install/l1/l2:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-i386-libvirt-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-libvirt:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-pvshim:guest-start:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-credit2:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-credit2:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-credit1:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-credit1:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-thunderx:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-thunderx:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-libvirt-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-libvirt-xsm:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-xsm:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-multivcpu:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-multivcpu:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-libvirt-raw:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-libvirt-raw:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-libvirt-raw:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt-vhd:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-vhd:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-vhd:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-qcow2:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-raw:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-vhd:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-vhd:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit1:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit1:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-rtds:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-rtds:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit2:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit2:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-arndale:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-arndale:saverestore-support-check:fail:nonblocking
X-Osstest-Versions-This:
    xen=98ae35cab0e40e59963f9f58345bf378b9522d74
X-Osstest-Versions-That:
    xen=98ae35cab0e40e59963f9f58345bf378b9522d74
From: osstest service owner <osstest-admin@xenproject.org>
Date: Fri, 26 Jan 2024 02:27:54 +0000

flight 184459 xen-unstable real [real]
http://logs.test-lab.xenproject.org/osstest/logs/184459/

Failures :-/ but no regressions.

Tests which are failing intermittently (not blocking):
 test-amd64-amd64-xl-qemuu-win7-amd64 12 windows-install    fail pass in 184449

Tests which did not succeed, but are not blocking:
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop fail in 184449 blocked in 184459
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 184449
 test-amd64-amd64-xl-qemut-win7-amd64 19 guest-stop            fail like 184449
 test-amd64-i386-xl-qemuu-win7-amd64 19 guest-stop             fail like 184449
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 184449
 test-armhf-armhf-libvirt-qcow2 15 saverestore-support-check   fail like 184449
 test-amd64-i386-xl-qemut-ws16-amd64 19 guest-stop             fail like 184449
 test-armhf-armhf-libvirt-raw 15 saverestore-support-check    fail  like 184449
 test-amd64-i386-xl-qemut-win7-amd64 19 guest-stop             fail like 184449
 test-amd64-amd64-xl-qemut-ws16-amd64 19 guest-stop            fail like 184449
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 184449
 test-amd64-i386-xl-qemuu-ws16-amd64 19 guest-stop             fail like 184449
 test-amd64-i386-libvirt-xsm  15 migrate-support-check        fail   never pass
 test-amd64-i386-libvirt      15 migrate-support-check        fail   never pass
 test-amd64-i386-xl-pvshim    14 guest-start                  fail   never pass
 test-amd64-amd64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit2  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit2  16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl          15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl          16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-credit1  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit1  16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-thunderx 15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-thunderx 16 saverestore-support-check    fail   never pass
 test-arm64-arm64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-xsm 16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-xsm      15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-xsm      16 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-amd64-amd64-libvirt     15 migrate-support-check        fail   never pass
 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-armhf-armhf-libvirt     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-multivcpu 15 migrate-support-check        fail  never pass
 test-armhf-armhf-xl-multivcpu 16 saverestore-support-check    fail  never pass
 test-amd64-i386-libvirt-raw  14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 15 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-vhd 14 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-vhd      14 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-vhd      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-qcow2 14 migrate-support-check        fail never pass
 test-armhf-armhf-libvirt-raw 14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl          15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-credit1  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit1  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-rtds     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-rtds     16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-credit2  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit2  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-arndale  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-arndale  16 saverestore-support-check    fail   never pass

version targeted for testing:
 xen                  98ae35cab0e40e59963f9f58345bf378b9522d74
baseline version:
 xen                  98ae35cab0e40e59963f9f58345bf378b9522d74

Last test of basis   184459  2024-01-25 06:45:32 Z    0 days
Testing same since                          (not found)         0 attempts

jobs:
 build-amd64-xsm                                              pass    
 build-arm64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64-xtf                                              pass    
 build-amd64                                                  pass    
 build-arm64                                                  pass    
 build-armhf                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-arm64-libvirt                                          pass    
 build-armhf-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-prev                                             pass    
 build-i386-prev                                              pass    
 build-amd64-pvops                                            pass    
 build-arm64-pvops                                            pass    
 build-armhf-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-xtf-amd64-amd64-1                                       pass    
 test-xtf-amd64-amd64-2                                       pass    
 test-xtf-amd64-amd64-3                                       pass    
 test-xtf-amd64-amd64-4                                       pass    
 test-xtf-amd64-amd64-5                                       pass    
 test-amd64-amd64-xl                                          pass    
 test-amd64-coresched-amd64-xl                                pass    
 test-arm64-arm64-xl                                          pass    
 test-armhf-armhf-xl                                          pass    
 test-amd64-i386-xl                                           pass    
 test-amd64-coresched-i386-xl                                 pass    
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm           pass    
 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm            pass    
 test-amd64-amd64-xl-qemut-stubdom-debianhvm-amd64-xsm        pass    
 test-amd64-i386-xl-qemut-stubdom-debianhvm-amd64-xsm         pass    
 test-amd64-amd64-xl-qemut-debianhvm-i386-xsm                 pass    
 test-amd64-i386-xl-qemut-debianhvm-i386-xsm                  pass    
 test-amd64-amd64-xl-qemuu-debianhvm-i386-xsm                 pass    
 test-amd64-i386-xl-qemuu-debianhvm-i386-xsm                  pass    
 test-amd64-amd64-libvirt-xsm                                 pass    
 test-arm64-arm64-libvirt-xsm                                 pass    
 test-amd64-i386-libvirt-xsm                                  pass    
 test-amd64-amd64-xl-xsm                                      pass    
 test-arm64-arm64-xl-xsm                                      pass    
 test-amd64-i386-xl-xsm                                       pass    
 test-amd64-amd64-qemuu-nested-amd                            fail    
 test-amd64-amd64-xl-pvhv2-amd                                pass    
 test-amd64-i386-qemut-rhel6hvm-amd                           pass    
 test-amd64-i386-qemuu-rhel6hvm-amd                           pass    
 test-amd64-amd64-dom0pvh-xl-amd                              pass    
 test-amd64-amd64-xl-qemut-debianhvm-amd64                    pass    
 test-amd64-i386-xl-qemut-debianhvm-amd64                     pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64                    pass    
 test-amd64-i386-xl-qemuu-debianhvm-amd64                     pass    
 test-amd64-i386-freebsd10-amd64                              pass    
 test-amd64-amd64-qemuu-freebsd11-amd64                       pass    
 test-amd64-amd64-qemuu-freebsd12-amd64                       pass    
 test-amd64-amd64-xl-qemuu-ovmf-amd64                         pass    
 test-amd64-i386-xl-qemuu-ovmf-amd64                          pass    
 test-amd64-amd64-xl-qemut-win7-amd64                         fail    
 test-amd64-i386-xl-qemut-win7-amd64                          fail    
 test-amd64-amd64-xl-qemuu-win7-amd64                         fail    
 test-amd64-i386-xl-qemuu-win7-amd64                          fail    
 test-amd64-amd64-xl-qemut-ws16-amd64                         fail    
 test-amd64-i386-xl-qemut-ws16-amd64                          fail    
 test-amd64-amd64-xl-qemuu-ws16-amd64                         fail    
 test-amd64-i386-xl-qemuu-ws16-amd64                          fail    
 test-armhf-armhf-xl-arndale                                  pass    
 test-amd64-amd64-examine-bios                                pass    
 test-amd64-i386-examine-bios                                 pass    
 test-amd64-amd64-xl-credit1                                  pass    
 test-arm64-arm64-xl-credit1                                  pass    
 test-armhf-armhf-xl-credit1                                  pass    
 test-amd64-amd64-xl-credit2                                  pass    
 test-arm64-arm64-xl-credit2                                  pass    
 test-armhf-armhf-xl-credit2                                  pass    
 test-amd64-amd64-xl-qemuu-dmrestrict-amd64-dmrestrict        pass    
 test-amd64-i386-xl-qemuu-dmrestrict-amd64-dmrestrict         pass    
 test-amd64-amd64-examine                                     pass    
 test-arm64-arm64-examine                                     pass    
 test-armhf-armhf-examine                                     pass    
 test-amd64-i386-examine                                      pass    
 test-amd64-i386-freebsd10-i386                               pass    
 test-amd64-amd64-qemuu-nested-intel                          pass    
 test-amd64-amd64-xl-pvhv2-intel                              pass    
 test-amd64-i386-qemut-rhel6hvm-intel                         pass    
 test-amd64-i386-qemuu-rhel6hvm-intel                         pass    
 test-amd64-amd64-dom0pvh-xl-intel                            pass    
 test-amd64-amd64-libvirt                                     pass    
 test-armhf-armhf-libvirt                                     pass    
 test-amd64-i386-libvirt                                      pass    
 test-amd64-amd64-livepatch                                   pass    
 test-amd64-i386-livepatch                                    pass    
 test-amd64-amd64-migrupgrade                                 pass    
 test-amd64-i386-migrupgrade                                  pass    
 test-amd64-amd64-xl-multivcpu                                pass    
 test-armhf-armhf-xl-multivcpu                                pass    
 test-amd64-amd64-pair                                        pass    
 test-amd64-i386-pair                                         pass    
 test-amd64-amd64-libvirt-pair                                pass    
 test-amd64-i386-libvirt-pair                                 pass    
 test-amd64-amd64-xl-pvshim                                   pass    
 test-amd64-i386-xl-pvshim                                    fail    
 test-amd64-amd64-pygrub                                      pass    
 test-armhf-armhf-libvirt-qcow2                               pass    
 test-amd64-amd64-xl-qcow2                                    pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-armhf-armhf-libvirt-raw                                 pass    
 test-amd64-i386-libvirt-raw                                  pass    
 test-amd64-amd64-xl-rtds                                     pass    
 test-armhf-armhf-xl-rtds                                     pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64-shadow             pass    
 test-amd64-i386-xl-qemuu-debianhvm-amd64-shadow              pass    
 test-amd64-amd64-xl-shadow                                   pass    
 test-amd64-i386-xl-shadow                                    pass    
 test-arm64-arm64-xl-thunderx                                 pass    
 test-amd64-amd64-examine-uefi                                pass    
 test-amd64-i386-examine-uefi                                 pass    
 test-amd64-amd64-libvirt-vhd                                 pass    
 test-arm64-arm64-xl-vhd                                      pass    
 test-armhf-armhf-xl-vhd                                      pass    
 test-amd64-i386-xl-vhd                                       pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Published tested tree is already up to date.



From xen-devel-bounces@lists.xenproject.org Fri Jan 26 07:07:42 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 26 Jan 2024 07:07:42 +0000
Received: from list by lists.xenproject.org with outflank-mailman.671850.1045356 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTGJ2-0000KG-I9; Fri, 26 Jan 2024 07:07:16 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 671850.1045356; Fri, 26 Jan 2024 07:07:16 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTGJ2-0000K9-F3; Fri, 26 Jan 2024 07:07:16 +0000
Received: by outflank-mailman (input) for mailman id 671850;
 Fri, 26 Jan 2024 07:07:14 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rTGJ0-0000Jz-IH; Fri, 26 Jan 2024 07:07:14 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rTGJ0-0004fl-8f; Fri, 26 Jan 2024 07:07:14 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rTGIz-0002cU-Tg; Fri, 26 Jan 2024 07:07:13 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rTGIz-0007p6-TE; Fri, 26 Jan 2024 07:07:13 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=V5qPY3Ea18oBpKFLc/20fybzlVKfR9e6HAAZT7RGbQ4=; b=aVxVJC7x/0u7lssD9h+T2kqgJM
	+S7uH3JwEotAkW2s4njw+xHoms98vUlxXXPg7QSBorXaXP+We/AsBwIUA1rrnBmCFRIpa9ytUkhMW
	D7rRCmEf3K4gn7RqIjdjlgFUgYDuzkLx6cJkFKXEx3BJKleUlphIQVbuXfh2LDhLupj0=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184471-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [ovmf test] 184471: all pass - PUSHED
X-Osstest-Versions-This:
    ovmf=9a75b030cf27d2530444e9a2f9f11867f79bf679
X-Osstest-Versions-That:
    ovmf=049695a0b1e2a9cbb7c2088a918f285bbb950999
From: osstest service owner <osstest-admin@xenproject.org>
Date: Fri, 26 Jan 2024 07:07:13 +0000

flight 184471 ovmf real [real]
http://logs.test-lab.xenproject.org/osstest/logs/184471/

Perfect :-)
All tests in this flight passed as required
version targeted for testing:
 ovmf                 9a75b030cf27d2530444e9a2f9f11867f79bf679
baseline version:
 ovmf                 049695a0b1e2a9cbb7c2088a918f285bbb950999

Last test of basis   184462  2024-01-25 10:11:11 Z    0 days
Testing same since   184471  2024-01-26 03:42:49 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Gua Guo <gua.guo@intel.com>

jobs:
 build-amd64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-amd64-amd64-xl-qemuu-ovmf-amd64                         pass    
 test-amd64-i386-xl-qemuu-ovmf-amd64                          pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Pushing revision :

To xenbits.xen.org:/home/xen/git/osstest/ovmf.git
   049695a0b1..9a75b030cf  9a75b030cf27d2530444e9a2f9f11867f79bf679 -> xen-tested-master


From xen-devel-bounces@lists.xenproject.org Fri Jan 26 07:20:26 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 26 Jan 2024 07:20:26 +0000
Received: from list by lists.xenproject.org with outflank-mailman.671857.1045367 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTGVh-0002sd-O6; Fri, 26 Jan 2024 07:20:21 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 671857.1045367; Fri, 26 Jan 2024 07:20:21 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTGVh-0002sW-Jp; Fri, 26 Jan 2024 07:20:21 +0000
Received: by outflank-mailman (input) for mailman id 671857;
 Fri, 26 Jan 2024 07:20:19 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rTGVf-0002sJ-IS; Fri, 26 Jan 2024 07:20:19 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rTGVf-0004tX-AP; Fri, 26 Jan 2024 07:20:19 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rTGVe-0003AU-Vm; Fri, 26 Jan 2024 07:20:19 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rTGVe-0001K5-VM; Fri, 26 Jan 2024 07:20:18 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=x/IT+ZW8+mDtq1sAMBd7bj7LoxZjtKL0ycAVbROsoY8=; b=C0XBouN99uDZ/4LI9Jm6iaFFRh
	/zvt0VsIak+fivRhDlocmgx3qJfxFmfOjuVXvav8RT1ywpUa9SS8woAUTUcp+i24L4hcz+CjmCbJP
	jPn3CA2j/opbaZqwCvECTIh3znEXXeGTFdpVnffK/w2AK5DEjBq097DJLQIPZYVhca3s=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184465-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [linux-linus test] 184465: tolerable FAIL - PUSHED
X-Osstest-Failures:
    linux-linus:test-armhf-armhf-libvirt:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    linux-linus:test-amd64-amd64-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    linux-linus:test-amd64-amd64-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-qcow2:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-raw:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    linux-linus:test-amd64-amd64-qemuu-nested-amd:debian-hvm-install/l1/l2:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-xsm:migrate-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-libvirt-xsm:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-thunderx:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-libvirt-xsm:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-thunderx:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-credit2:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-credit2:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-credit1:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-xsm:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-credit1:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-xsm:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-arndale:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-arndale:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-rtds:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-rtds:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-multivcpu:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-multivcpu:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-libvirt-raw:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-vhd:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-vhd:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-qcow2:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-vhd:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-vhd:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-qcow2:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit1:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit1:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit2:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit2:saverestore-support-check:fail:nonblocking
X-Osstest-Versions-This:
    linux=6098d87eaf31f48153c984e2adadf14762520a87
X-Osstest-Versions-That:
    linux=443b349019f2d9461b23213a4308f9cf72e41c5e
From: osstest service owner <osstest-admin@xenproject.org>
Date: Fri, 26 Jan 2024 07:20:18 +0000

flight 184465 linux-linus real [real]
http://logs.test-lab.xenproject.org/osstest/logs/184465/

Failures :-/ but no regressions.

Tests which did not succeed, but are not blocking:
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 184456
 test-amd64-amd64-xl-qemut-win7-amd64 19 guest-stop            fail like 184456
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 184456
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 184456
 test-armhf-armhf-libvirt-qcow2 15 saverestore-support-check   fail like 184456
 test-armhf-armhf-libvirt-raw 15 saverestore-support-check    fail  like 184456
 test-amd64-amd64-xl-qemut-ws16-amd64 19 guest-stop            fail like 184456
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 184456
 test-amd64-amd64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt     15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl          15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl          16 saverestore-support-check    fail   never pass
 test-arm64-arm64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-thunderx 15 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-xsm 16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-thunderx 16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-credit2  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit2  16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-credit1  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-xsm      15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit1  16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-xsm      16 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-armhf-armhf-xl-arndale  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-arndale  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-rtds     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-rtds     16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-multivcpu 15 migrate-support-check        fail  never pass
 test-armhf-armhf-xl-multivcpu 16 saverestore-support-check    fail  never pass
 test-armhf-armhf-libvirt     15 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 15 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-raw 14 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-vhd      14 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-vhd      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-qcow2 14 migrate-support-check        fail never pass
 test-armhf-armhf-libvirt-raw 14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      15 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-qcow2 14 migrate-support-check        fail never pass
 test-armhf-armhf-xl          15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-credit1  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit1  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-credit2  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit2  16 saverestore-support-check    fail   never pass

version targeted for testing:
 linux                6098d87eaf31f48153c984e2adadf14762520a87
baseline version:
 linux                443b349019f2d9461b23213a4308f9cf72e41c5e

Last test of basis   184456  2024-01-24 20:14:07 Z    1 days
Testing same since   184465  2024-01-25 14:37:22 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Alexey Dobriyan <adobriyan@gmail.com>
  Askar Safin <safinaskar@zohomail.com>
  Bernd Edlinger <bernd.edlinger@hotmail.de>
  Christophe JAILLET <christophe.jaillet@wanadoo.fr>
  Eric W. Biederman <ebiederm@xmission.com>
  Ilya Dryomov <idryomov@gmail.com>
  Kees Cook <keescook@chromium.org>
  Linus Torvalds <torvalds@linux-foundation.org>
  Mimi Zohar <zohar@linux.ibm.com>

jobs:
 build-amd64-xsm                                              pass    
 build-arm64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64                                                  pass    
 build-arm64                                                  pass    
 build-armhf                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-arm64-libvirt                                          pass    
 build-armhf-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-pvops                                            pass    
 build-arm64-pvops                                            pass    
 build-armhf-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-amd64-amd64-xl                                          pass    
 test-amd64-coresched-amd64-xl                                pass    
 test-arm64-arm64-xl                                          pass    
 test-armhf-armhf-xl                                          pass    
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm           pass    
 test-amd64-amd64-xl-qemut-stubdom-debianhvm-amd64-xsm        pass    
 test-amd64-amd64-xl-qemut-debianhvm-i386-xsm                 pass    
 test-amd64-amd64-xl-qemuu-debianhvm-i386-xsm                 pass    
 test-amd64-amd64-libvirt-xsm                                 pass    
 test-arm64-arm64-libvirt-xsm                                 pass    
 test-amd64-amd64-xl-xsm                                      pass    
 test-arm64-arm64-xl-xsm                                      pass    
 test-amd64-amd64-qemuu-nested-amd                            fail    
 test-amd64-amd64-xl-pvhv2-amd                                pass    
 test-amd64-amd64-dom0pvh-xl-amd                              pass    
 test-amd64-amd64-xl-qemut-debianhvm-amd64                    pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64                    pass    
 test-amd64-amd64-freebsd11-amd64                             pass    
 test-amd64-amd64-freebsd12-amd64                             pass    
 test-amd64-amd64-xl-qemuu-ovmf-amd64                         pass    
 test-amd64-amd64-xl-qemut-win7-amd64                         fail    
 test-amd64-amd64-xl-qemuu-win7-amd64                         fail    
 test-amd64-amd64-xl-qemut-ws16-amd64                         fail    
 test-amd64-amd64-xl-qemuu-ws16-amd64                         fail    
 test-armhf-armhf-xl-arndale                                  pass    
 test-amd64-amd64-examine-bios                                pass    
 test-amd64-amd64-xl-credit1                                  pass    
 test-arm64-arm64-xl-credit1                                  pass    
 test-armhf-armhf-xl-credit1                                  pass    
 test-amd64-amd64-xl-credit2                                  pass    
 test-arm64-arm64-xl-credit2                                  pass    
 test-armhf-armhf-xl-credit2                                  pass    
 test-amd64-amd64-xl-qemuu-dmrestrict-amd64-dmrestrict        pass    
 test-amd64-amd64-examine                                     pass    
 test-arm64-arm64-examine                                     pass    
 test-armhf-armhf-examine                                     pass    
 test-amd64-amd64-qemuu-nested-intel                          pass    
 test-amd64-amd64-xl-pvhv2-intel                              pass    
 test-amd64-amd64-dom0pvh-xl-intel                            pass    
 test-amd64-amd64-libvirt                                     pass    
 test-armhf-armhf-libvirt                                     pass    
 test-amd64-amd64-xl-multivcpu                                pass    
 test-armhf-armhf-xl-multivcpu                                pass    
 test-amd64-amd64-pair                                        pass    
 test-amd64-amd64-libvirt-pair                                pass    
 test-amd64-amd64-xl-pvshim                                   pass    
 test-amd64-amd64-pygrub                                      pass    
 test-amd64-amd64-libvirt-qcow2                               pass    
 test-armhf-armhf-libvirt-qcow2                               pass    
 test-amd64-amd64-libvirt-raw                                 pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-armhf-armhf-libvirt-raw                                 pass    
 test-amd64-amd64-xl-rtds                                     pass    
 test-armhf-armhf-xl-rtds                                     pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64-shadow             pass    
 test-amd64-amd64-xl-shadow                                   pass    
 test-arm64-arm64-xl-thunderx                                 pass    
 test-amd64-amd64-examine-uefi                                pass    
 test-amd64-amd64-xl-vhd                                      pass    
 test-arm64-arm64-xl-vhd                                      pass    
 test-armhf-armhf-xl-vhd                                      pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Pushing revision :

hint: The 'hooks/update' hook was ignored because it's not set as executable.
hint: You can disable this warning with `git config advice.ignoredHook false`.
hint: The 'hooks/post-receive' hook was ignored because it's not set as executable.
hint: You can disable this warning with `git config advice.ignoredHook false`.
hint: The 'hooks/post-update' hook was ignored because it's not set as executable.
hint: You can disable this warning with `git config advice.ignoredHook false`.
To xenbits.xen.org:/home/xen/git/linux-pvops.git
   443b349019f2..6098d87eaf31  6098d87eaf31f48153c984e2adadf14762520a87 -> tested/linux-linus


From xen-devel-bounces@lists.xenproject.org Fri Jan 26 07:36:04 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 26 Jan 2024 07:36:04 +0000
Received: from list by lists.xenproject.org with outflank-mailman.671866.1045377 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTGkn-0004c8-4p; Fri, 26 Jan 2024 07:35:57 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 671866.1045377; Fri, 26 Jan 2024 07:35:57 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTGkn-0004c1-1M; Fri, 26 Jan 2024 07:35:57 +0000
Received: by outflank-mailman (input) for mailman id 671866;
 Fri, 26 Jan 2024 07:35:55 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=QK5s=JE=gmail.com=morel.dav@srs-se1.protection.inumbo.net>)
 id 1rTGkl-0004bv-IS
 for xen-devel@lists.xenproject.org; Fri, 26 Jan 2024 07:35:55 +0000
Received: from mail-wm1-f54.google.com (mail-wm1-f54.google.com
 [209.85.128.54]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 894b1373-bc1d-11ee-8a43-1f161083a0e0;
 Fri, 26 Jan 2024 08:35:54 +0100 (CET)
Received: by mail-wm1-f54.google.com with SMTP id
 5b1f17b1804b1-40eacb4bfa0so926355e9.1
 for <xen-devel@lists.xenproject.org>; Thu, 25 Jan 2024 23:35:54 -0800 (PST)
Received: from raton (lfbn-idf1-1-1403-15.w90-79.abo.wanadoo.fr. [90.79.94.15])
 by smtp.gmail.com with ESMTPSA id
 f19-20020a05600c155300b0040e541ddcb1sm1011930wmg.33.2024.01.25.23.35.52
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 25 Jan 2024 23:35:52 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 894b1373-bc1d-11ee-8a43-1f161083a0e0
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706254553; x=1706859353;
        h=in-reply-to:content-disposition:mime-version:references:message-id
         :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to;
        bh=MlX/IquZyKvuHc90dtJQTcywuIx0rC9GleofrUB3ERE=;
        b=avp0OlObR5q3lDnzS0Xwh+AxGeYKkz3pZM9SQUXsojWM7wiErLOl79QZHWc8ohkf2r
         OiRn8OpviQWEagwwVRJjFRqod2luHM671Zu8hDI6le5vM6Ijtm6kNtCrfYaNDbGoMLRK
         r3+7YzOfHnWul+vbISHpensfKoJUSK/Znk+afY5HPF/cdsIObEDQZmXhKeR/iSq0QN6Y
         AFpocMCvczco4z4+DTSYxzdjcVV9tf8wVtlA0ot4p/EOQtRgvQ5404F1eaCyvP32Kme5
         doBYdd30oTx45aSiwmI3XO3o5w0hYuO0dBpWKTL5hV3Q/8TD0BjJoZ+ohcNzbDvSvOcU
         YeQA==
X-Gm-Message-State: AOJu0YwdDLENW7lzlydnSni1cGVN5YzS40rUlBXcuo0PlTKeW+quFDa7
	zUGkb1o0iA9EMboLCeW+v7AuXQOBpn4fbrt2j5ORomi9+KJR1jQD
X-Google-Smtp-Source: AGHT+IGsicAVDzancTWhHu3jwViqgfcfo6UCMJ21r5H9iBZUP9BtQXy9WkmoPBdwg0QU6wFnIv7vUw==
X-Received: by 2002:a05:600c:20d5:b0:40e:4694:38a6 with SMTP id y21-20020a05600c20d500b0040e469438a6mr542748wmm.157.1706254553208;
        Thu, 25 Jan 2024 23:35:53 -0800 (PST)
Date: Fri, 26 Jan 2024 08:35:45 +0100
From: David Morel <david.morel@vates.tech>
To: Stefano Stabellini <sstabellini@kernel.org>
Cc: xen-devel@lists.xenproject.org, xenia.ragiadakou@amd.com,
	andrew.cooper3@citrix.com, Jan Beulich <jbeulich@suse.com>,
	Roger Pau =?iso-8859-1?Q?Monn=E9?= <roger.pau@citrix.com>,
	Juergen Gross <jgross@suse.com>
Subject: Re: AMD EPYC VM to VM performance investigation
Message-ID: <ZbNg0VHjHM98pPgh@raton>
References: <ZZbSIH_pGjaQr5x-@raton>
 <alpine.DEB.2.22.394.2401041624500.1322202@ubuntu-linux-20-04-desktop>
 <ZZ5vkr0Qx0h_iO5D@raton>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <ZZ5vkr0Qx0h_iO5D@raton>

On Wed, Jan 10, 2024 at 11:21:06AM, David Morel wrote:
> > I think it might be difficult to triage this if you are working on a
> > Xen/Linux version that is so different from upstream
> I ran some tests on a Xen 4.13.5 with a dom0 in 6.6.10, and on an XCP-ng on
> the same machine, the performances are similar, a few percent better on
> the recent Xen, but still pretty low for such a machine and similar to
> other EPYC we looked at.
I only recently went over my message and realized I typed the XCP-ng
version out of the habit... The test I was talking about was actually on
a Xen 4.17.3, so recent Xen and recent kernel. Sorry about that.


From xen-devel-bounces@lists.xenproject.org Fri Jan 26 09:19:17 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 26 Jan 2024 09:19:17 +0000
Received: from list by lists.xenproject.org with outflank-mailman.671880.1045387 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTIMV-0007wy-RX; Fri, 26 Jan 2024 09:18:59 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 671880.1045387; Fri, 26 Jan 2024 09:18:59 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTIMV-0007wr-NO; Fri, 26 Jan 2024 09:18:59 +0000
Received: by outflank-mailman (input) for mailman id 671880;
 Fri, 26 Jan 2024 09:18:59 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rTIMV-0007wh-2D; Fri, 26 Jan 2024 09:18:59 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rTIMU-0007oO-Px; Fri, 26 Jan 2024 09:18:58 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rTIMU-0000En-Bo; Fri, 26 Jan 2024 09:18:58 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rTIMU-0002tg-BL; Fri, 26 Jan 2024 09:18:58 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=6Zu3r8+8uSZkOtCNpS4XxU5UtukTr/j6MW27KVlcmnE=; b=y23Yz3BsvpbLY1Zg0hWefaId/k
	ckKzbGauEm6P5Y10CeAHcfnY2kILKjtHjukNdTuXJrfdncAl6SK7xG+pfcnToKqfregJgvLfxtX+O
	G9kJTkacGmRFoDhApBsBsH7XPZ0I+6I9P8n0HRzb/KdL15g7RNxTbJdO/ND94Ex8Egiw=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184473-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [ovmf test] 184473: all pass - PUSHED
X-Osstest-Versions-This:
    ovmf=7d7decfa3dc817775322505ae770a27f185465cf
X-Osstest-Versions-That:
    ovmf=9a75b030cf27d2530444e9a2f9f11867f79bf679
From: osstest service owner <osstest-admin@xenproject.org>
Date: Fri, 26 Jan 2024 09:18:58 +0000

flight 184473 ovmf real [real]
http://logs.test-lab.xenproject.org/osstest/logs/184473/

Perfect :-)
All tests in this flight passed as required
version targeted for testing:
 ovmf                 7d7decfa3dc817775322505ae770a27f185465cf
baseline version:
 ovmf                 9a75b030cf27d2530444e9a2f9f11867f79bf679

Last test of basis   184471  2024-01-26 03:42:49 Z    0 days
Testing same since   184473  2024-01-26 07:14:25 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Gua Guo <gua.guo@intel.com>

jobs:
 build-amd64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-amd64-amd64-xl-qemuu-ovmf-amd64                         pass    
 test-amd64-i386-xl-qemuu-ovmf-amd64                          pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Pushing revision :

To xenbits.xen.org:/home/xen/git/osstest/ovmf.git
   9a75b030cf..7d7decfa3d  7d7decfa3dc817775322505ae770a27f185465cf -> xen-tested-master


From xen-devel-bounces@lists.xenproject.org Fri Jan 26 09:44:54 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 26 Jan 2024 09:44:54 +0000
Received: from list by lists.xenproject.org with outflank-mailman.671892.1045399 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTIlU-00033E-Rb; Fri, 26 Jan 2024 09:44:48 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 671892.1045399; Fri, 26 Jan 2024 09:44:48 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTIlU-000337-Ow; Fri, 26 Jan 2024 09:44:48 +0000
Received: by outflank-mailman (input) for mailman id 671892;
 Fri, 26 Jan 2024 09:44:47 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=DqdW=JE=gmail.com=oleksii.kurochko@srs-se1.protection.inumbo.net>)
 id 1rTIlT-000331-KE
 for xen-devel@lists.xenproject.org; Fri, 26 Jan 2024 09:44:47 +0000
Received: from mail-lj1-x232.google.com (mail-lj1-x232.google.com
 [2a00:1450:4864:20::232])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 89af7013-bc2f-11ee-98f5-efadbce2ee36;
 Fri, 26 Jan 2024 10:44:45 +0100 (CET)
Received: by mail-lj1-x232.google.com with SMTP id
 38308e7fff4ca-2cf161b5eadso1367881fa.2
 for <xen-devel@lists.xenproject.org>; Fri, 26 Jan 2024 01:44:45 -0800 (PST)
Received: from [192.168.206.239] ([94.75.70.14])
 by smtp.gmail.com with ESMTPSA id
 z17-20020a2e8e91000000b002cd3e4d712asm111203ljk.51.2024.01.26.01.44.43
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Fri, 26 Jan 2024 01:44:44 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 89af7013-bc2f-11ee-98f5-efadbce2ee36
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1706262285; x=1706867085; darn=lists.xenproject.org;
        h=mime-version:user-agent:content-transfer-encoding:references
         :in-reply-to:date:cc:to:from:subject:message-id:from:to:cc:subject
         :date:message-id:reply-to;
        bh=PHno6lDjNrDl1xq3lRo8a1gpAFJigxBmIk9Hsda5wTA=;
        b=K04pdz6B95ObDziU1zxb4ALXbRP9tH++LyOPTy2Wdk1wqBSfHKUK8RIUim7IF3EbFm
         RM29oEmBeQHLqFCtRcTLxym8XIMRftF8eE73oJAXJfIqCiZIgyBCliOSipziEHE/WKiC
         bltTMc+Cczon4QUmxcBu4bWAXwzTImvQxOm3TXBXMmOkGGjyYJKjamIMoAZDDv8Klz5p
         Zh/LFNNhAzfSUhHuvfNnopOVce45hQi6Fkd3nCltT9QnAJ1tyLZvyUL11tTZKvERGLlF
         oTt8iQ7PoKRpT80RkUUENSJ/MZFb6aQqSq84SB2NKkBfpd4u2JnGBb4E3Vhtiyq0YQNV
         ggKg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706262285; x=1706867085;
        h=mime-version:user-agent:content-transfer-encoding:references
         :in-reply-to:date:cc:to:from:subject:message-id:x-gm-message-state
         :from:to:cc:subject:date:message-id:reply-to;
        bh=PHno6lDjNrDl1xq3lRo8a1gpAFJigxBmIk9Hsda5wTA=;
        b=TANSppEtbamupG564GPvBCBKS7ValJPV17U7RxDUQW1V17piefqENOusqLKwFgHTw9
         1PxpC0BGp4nfVNKrTBwUrSc9PMNI+Lru+MgtuGyPzSKE7NyFzUikNueYZ03bcaFaKz1M
         CuBrpW8UP5iksmyi2a7OUWPUeag7us0WX/XNWzcSA+zfg+vC6ENBbtj8+Q+qWDeLPJkt
         5ZA59kckNpZVXxFbPu4J/khabXl1SkfiPSF7ZYZ/JO1/pGHsDXDR6LVzyNOLtRW9azMR
         jvl1YdrSHf9QZgSvKBr5HpZWslQZUkPtU3m+Ig5uj6am+uIjs4J7lYQ8Hh3pUuQes72b
         MI9w==
X-Gm-Message-State: AOJu0Yx+X+P/e/zpLKqxiJOTIar2o7M/wC9ysjRAmk+sxo++V+q/kvqj
	spAKrqLYgmnS12X/kD+UnwOaMmZODmR39urQ/F8I1t+oKkcDEwBW
X-Google-Smtp-Source: AGHT+IHejFXNArCz74cKS664T5P/UjmoneDIg/SsRh5CjDd7fbEI9IV/MpFqTWrgLgFlxw59T6nQcQ==
X-Received: by 2002:a2e:5c88:0:b0:2cf:48e2:794f with SMTP id q130-20020a2e5c88000000b002cf48e2794fmr727625ljb.22.1706262284588;
        Fri, 26 Jan 2024 01:44:44 -0800 (PST)
Message-ID: <c899f039185d02ea49db29641ff5ca46a29008dd.camel@gmail.com>
Subject: Re: [PATCH v3 16/34] xen/lib: introduce generic find next bit
 operations
From: Oleksii <oleksii.kurochko@gmail.com>
To: Jan Beulich <jbeulich@suse.com>
Cc: Alistair Francis <alistair.francis@wdc.com>, Bob Eshleman
 <bobbyeshleman@gmail.com>, Connor Davis <connojdavis@gmail.com>, Andrew
 Cooper <andrew.cooper3@citrix.com>, George Dunlap
 <george.dunlap@citrix.com>,  Julien Grall <julien@xen.org>, Stefano
 Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>, 
 xen-devel@lists.xenproject.org
Date: Fri, 26 Jan 2024 11:44:43 +0200
In-Reply-To: <8e60f998-aeb4-4648-a3e9-d083bb8eefde@suse.com>
References: <cover.1703255175.git.oleksii.kurochko@gmail.com>
	 <bb47caf6c275d8aea307b96e79828831eab4a703.1703255175.git.oleksii.kurochko@gmail.com>
	 <81e5cac4-90f0-4fff-b891-53ca73c61832@suse.com>
	 <05d685b0b7ccd329454a336b20351979bdf91ea4.camel@gmail.com>
	 <8e60f998-aeb4-4648-a3e9-d083bb8eefde@suse.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
User-Agent: Evolution 3.50.2 (3.50.2-1.fc39) 
MIME-Version: 1.0

On Tue, 2024-01-23 at 14:37 +0100, Jan Beulich wrote:
> On 23.01.2024 13:34, Oleksii wrote:
> > On Tue, 2024-01-23 at 12:14 +0100, Jan Beulich wrote:
> > > On 22.12.2023 16:13, Oleksii Kurochko wrote:
> > > > --- a/xen/common/Kconfig
> > > > +++ b/xen/common/Kconfig
> > > > @@ -47,6 +47,9 @@ config ARCH_MAP_DOMAIN_PAGE
> > > > =C2=A0config GENERIC_BUG_FRAME
> > > > =C2=A0	bool
> > > > =C2=A0
> > > > +config GENERIC_FIND_NEXT_BIT
> > > > +	bool
> > >=20
> > > There's no need for this, as ...
> > >=20
> > > > --- a/xen/lib/Makefile
> > > > +++ b/xen/lib/Makefile
> > > > @@ -3,6 +3,7 @@ obj-$(CONFIG_X86) +=3D x86/
> > > > =C2=A0lib-y +=3D bsearch.o
> > > > =C2=A0lib-y +=3D ctors.o
> > > > =C2=A0lib-y +=3D ctype.o
> > > > +lib-$(CONFIG_GENERIC_FIND_NEXT_BIT) +=3D find-next-bit.o
> > >=20
> > > ... you're moving this to lib/. Or have you encountered any issue
> > > with building this uniformly, and you forgot to mention this in
> > > the description?
> > I didn't check. My intention was to provide opportunity to check if
> > an
> > architecture want to use generic version or not. Otherwise, I
> > expected
> > that we will have multiple definiotion of the funcion.
> >=20
> > But considering that they are all defined under #ifdef...#endif we
> > can
> > remove the declaration of the config GENERIC_FIND_NEXT_BIT.
>=20
> What #ifdef / #endif would matter here? Whats in lib/ is intended to
> be
> generic anyway. And what is in the resulting lib.a won't be used by
> an
> arch if it has an arch-specific implementation. Problems could arise
> if
> an arch had an inline function colliding with the out-of-line one.
> But
> that's about the old case where I could see a need to make the
> building
> of one of the objects conditional. And you'll note that withing this
> Makefile there are pretty few conditionals.
We will have such issue with PPC:
...
static inline unsigned long find_next_bit(const unsigned long *addr,
                                          unsigned long size,
                                          unsigned long offset)
...

It looks like an introduction of new config for find_next_bit is
needed.

Does a better option exist? Would making find_next_bit non inline non
inline for PPC better?

~ Oleksii


From xen-devel-bounces@lists.xenproject.org Fri Jan 26 09:48:29 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 26 Jan 2024 09:48:29 +0000
Received: from list by lists.xenproject.org with outflank-mailman.671895.1045410 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTIp2-0003ct-9f; Fri, 26 Jan 2024 09:48:28 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 671895.1045410; Fri, 26 Jan 2024 09:48:28 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTIp2-0003cm-6w; Fri, 26 Jan 2024 09:48:28 +0000
Received: by outflank-mailman (input) for mailman id 671895;
 Fri, 26 Jan 2024 09:48:27 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=fjXx=JE=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rTIp1-0003cQ-CA
 for xen-devel@lists.xenproject.org; Fri, 26 Jan 2024 09:48:27 +0000
Received: from mail-lj1-x22e.google.com (mail-lj1-x22e.google.com
 [2a00:1450:4864:20::22e])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 0cfd965f-bc30-11ee-8a43-1f161083a0e0;
 Fri, 26 Jan 2024 10:48:25 +0100 (CET)
Received: by mail-lj1-x22e.google.com with SMTP id
 38308e7fff4ca-2cf206e4d56so1494171fa.3
 for <xen-devel@lists.xenproject.org>; Fri, 26 Jan 2024 01:48:25 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 x66-20020a0294c8000000b0046f1bf4e994sm224779jah.24.2024.01.26.01.48.22
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Fri, 26 Jan 2024 01:48:24 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 0cfd965f-bc30-11ee-8a43-1f161083a0e0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1706262505; x=1706867305; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=phcuuLWXShAVPjQKUhUaBwj74e8U0OiTTbSMIlFzxTg=;
        b=O5iRLACIY92VrFPuF7Uz3pZW92GarK7KeakZA3IGvsQ9A7wSxRTOPjbL7+J8y74Zu3
         Tnu0/zGsNhbGxu1oMbm1Z50iVqV0RajyQh17FMZXSeMIhoIZ24+HliEOQWsf5587GnL4
         vwO8KVOFxJa+gkEO61XWzgVXgmV9z3wiMZKcasVSINCatPktmXAnZHLWIRfmGzeL1gMv
         XDrlXYA61T4gAcoj24s29fFVzWdRKyT/t44a+he48h+ZoZYDWV+eOw/IaXGRQuTvbAqD
         hhizTmha2yMdWcdG87KslAnbwCGkJq+3nVhXCOcckmFOQ0tLi6N5Lkfwg7vDg2aGzCGe
         uO9Q==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706262505; x=1706867305;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=phcuuLWXShAVPjQKUhUaBwj74e8U0OiTTbSMIlFzxTg=;
        b=v4c16jCS7UPS5FrU1w68/fG8iwKk4Jf/S1iORai9KtQf4eHKgF43LQyxtTI8GRVM0t
         n/AbfGAtDgX7wYbo/ovy/YxpSahJLUawUomC7UF9jLBWyMVIZnFjVgsxF24Pny8im0Ve
         C9r763yR/TmHkbx4pN1wVWa8GI45Gn31io4+n2xYO5djBoPFjQpU27SohRYLm1jxaxaC
         FdaPaCV53/ZyDgnjchCUBUR3cd/GjJKIcawiXrZNK90ZuHqwcH8j2Fhli92uLj6IqM2j
         d9Bm4Rni+8GEvBBVIJAycQfMgky1kNBPVykTV7aX/Z0LPyHdKUgfVE2pO06cyky8evhZ
         aJww==
X-Gm-Message-State: AOJu0YwtcHng5eMR8f394D4FKqNOj5+OdgF1L2HhNiz2ABUGynZvvRd2
	memuakcYIMS8Ir1yLFGo9OTjWKh/37fRtXGhgwgOVgeaCgfJlJZbXwAiolLJAQ==
X-Google-Smtp-Source: AGHT+IFtifITsPSmoQ4uK1Gd1660zX5zHfOw0XbMGuL5XlfvYbEmHtwy6JHyhNJ1zojuiUcwiWrgvA==
X-Received: by 2002:a05:651c:168d:b0:2cf:34a1:400e with SMTP id bd13-20020a05651c168d00b002cf34a1400emr387962ljb.17.1706262505404;
        Fri, 26 Jan 2024 01:48:25 -0800 (PST)
Message-ID: <e6d7806a-56c8-4b1e-965d-57685d856d98@suse.com>
Date: Fri, 26 Jan 2024 10:48:20 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 16/34] xen/lib: introduce generic find next bit
 operations
Content-Language: en-US
To: Oleksii <oleksii.kurochko@gmail.com>,
 Shawn Anastasio <sanastasio@raptorengineering.com>
Cc: Alistair Francis <alistair.francis@wdc.com>,
 Bob Eshleman <bobbyeshleman@gmail.com>, Connor Davis
 <connojdavis@gmail.com>, Andrew Cooper <andrew.cooper3@citrix.com>,
 George Dunlap <george.dunlap@citrix.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>,
 xen-devel@lists.xenproject.org
References: <cover.1703255175.git.oleksii.kurochko@gmail.com>
 <bb47caf6c275d8aea307b96e79828831eab4a703.1703255175.git.oleksii.kurochko@gmail.com>
 <81e5cac4-90f0-4fff-b891-53ca73c61832@suse.com>
 <05d685b0b7ccd329454a336b20351979bdf91ea4.camel@gmail.com>
 <8e60f998-aeb4-4648-a3e9-d083bb8eefde@suse.com>
 <c899f039185d02ea49db29641ff5ca46a29008dd.camel@gmail.com>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <c899f039185d02ea49db29641ff5ca46a29008dd.camel@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 26.01.2024 10:44, Oleksii wrote:
> On Tue, 2024-01-23 at 14:37 +0100, Jan Beulich wrote:
>> On 23.01.2024 13:34, Oleksii wrote:
>>> On Tue, 2024-01-23 at 12:14 +0100, Jan Beulich wrote:
>>>> On 22.12.2023 16:13, Oleksii Kurochko wrote:
>>>>> --- a/xen/common/Kconfig
>>>>> +++ b/xen/common/Kconfig
>>>>> @@ -47,6 +47,9 @@ config ARCH_MAP_DOMAIN_PAGE
>>>>>  config GENERIC_BUG_FRAME
>>>>>  	bool
>>>>>  
>>>>> +config GENERIC_FIND_NEXT_BIT
>>>>> +	bool
>>>>
>>>> There's no need for this, as ...
>>>>
>>>>> --- a/xen/lib/Makefile
>>>>> +++ b/xen/lib/Makefile
>>>>> @@ -3,6 +3,7 @@ obj-$(CONFIG_X86) += x86/
>>>>>  lib-y += bsearch.o
>>>>>  lib-y += ctors.o
>>>>>  lib-y += ctype.o
>>>>> +lib-$(CONFIG_GENERIC_FIND_NEXT_BIT) += find-next-bit.o
>>>>
>>>> ... you're moving this to lib/. Or have you encountered any issue
>>>> with building this uniformly, and you forgot to mention this in
>>>> the description?
>>> I didn't check. My intention was to provide opportunity to check if
>>> an
>>> architecture want to use generic version or not. Otherwise, I
>>> expected
>>> that we will have multiple definiotion of the funcion.
>>>
>>> But considering that they are all defined under #ifdef...#endif we
>>> can
>>> remove the declaration of the config GENERIC_FIND_NEXT_BIT.
>>
>> What #ifdef / #endif would matter here? Whats in lib/ is intended to
>> be
>> generic anyway. And what is in the resulting lib.a won't be used by
>> an
>> arch if it has an arch-specific implementation. Problems could arise
>> if
>> an arch had an inline function colliding with the out-of-line one.
>> But
>> that's about the old case where I could see a need to make the
>> building
>> of one of the objects conditional. And you'll note that withing this
>> Makefile there are pretty few conditionals.
> We will have such issue with PPC:
> ...
> static inline unsigned long find_next_bit(const unsigned long *addr,
>                                           unsigned long size,
>                                           unsigned long offset)
> ...
> 
> It looks like an introduction of new config for find_next_bit is
> needed.
> 
> Does a better option exist? Would making find_next_bit non inline non
> inline for PPC better?

Isn't that generic code anyway? If so, that also wants replacing by
the generic library function(s). Shawn - I have to admit I have a
hard time seeing why this was introduced as inline functions in the
first place.

Jan


From xen-devel-bounces@lists.xenproject.org Fri Jan 26 09:56:28 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 26 Jan 2024 09:56:28 +0000
Received: from list by lists.xenproject.org with outflank-mailman.671902.1045419 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTIwi-0005FQ-2A; Fri, 26 Jan 2024 09:56:24 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 671902.1045419; Fri, 26 Jan 2024 09:56:24 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTIwh-0005FJ-Vb; Fri, 26 Jan 2024 09:56:23 +0000
Received: by outflank-mailman (input) for mailman id 671902;
 Fri, 26 Jan 2024 09:56:23 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=DqdW=JE=gmail.com=oleksii.kurochko@srs-se1.protection.inumbo.net>)
 id 1rTIwh-0005FD-2H
 for xen-devel@lists.xenproject.org; Fri, 26 Jan 2024 09:56:23 +0000
Received: from mail-ed1-x52c.google.com (mail-ed1-x52c.google.com
 [2a00:1450:4864:20::52c])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 2899c537-bc31-11ee-8a43-1f161083a0e0;
 Fri, 26 Jan 2024 10:56:21 +0100 (CET)
Received: by mail-ed1-x52c.google.com with SMTP id
 4fb4d7f45d1cf-55a539d205aso212052a12.3
 for <xen-devel@lists.xenproject.org>; Fri, 26 Jan 2024 01:56:21 -0800 (PST)
Received: from [192.168.206.239] ([94.75.70.14])
 by smtp.gmail.com with ESMTPSA id
 a2-20020a05640233c200b0055731d8f459sm422596edc.24.2024.01.26.01.56.20
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Fri, 26 Jan 2024 01:56:20 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 2899c537-bc31-11ee-8a43-1f161083a0e0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1706262981; x=1706867781; darn=lists.xenproject.org;
        h=mime-version:user-agent:content-transfer-encoding:references
         :in-reply-to:date:cc:to:from:subject:message-id:from:to:cc:subject
         :date:message-id:reply-to;
        bh=IfgyVviuNpZc+Nmi6QDi11EENi6yfNlW354N1B1Dq1M=;
        b=UHC/J4BxTL4mk6H38I/lSbhMvp0pVkWCP1i88iqL4wi5aRBU5imoHr6seLdS7AS//1
         N6fO4+e+8hHrT2RpwMDGkdRCCWimJSY0oz7UkPXkm5WMqsq5xSdj9zBoTrS+2gqQcHDR
         sBPDs2Fd8hv0CK4rY22a0tbHmDj6OvsBQNazaDtMDnqGnYf9dbCVLwtt4h4QIzPYjvTO
         St/hUSjHb63umBP+rsAvkcBzbsWwJeelfkFobLn72AwNOedJNfkYxbdLPrLmSD7kC0M+
         xnVSk1mGy3Lg797hqVxmqZGWNQiGR3jVN6O7XRIrwi0V//0M4Ixn3VqKQl4CpDo519IH
         is4g==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706262981; x=1706867781;
        h=mime-version:user-agent:content-transfer-encoding:references
         :in-reply-to:date:cc:to:from:subject:message-id:x-gm-message-state
         :from:to:cc:subject:date:message-id:reply-to;
        bh=IfgyVviuNpZc+Nmi6QDi11EENi6yfNlW354N1B1Dq1M=;
        b=p/pHLox+1Dq4piAeo+S9oA0ZzIf1YIFtBEw8JyssL7E8RdsGOXhFg8xcE/j2HIOdKe
         9poQGigg7FQG044b3Umvmtfz/nS9j3v/PgOOvVP8tqzygYO4kTmKy8pzrk4grv3vByX5
         6uy5LxUo6l5LIFuqBB0Mm1y6iqkd7AZPz/4DRob6rvwE7s10Dj0rmAFFXOIYXVnEbb9t
         ZtzSo/pPiHK8mfUQ7PXFhz25O4+5+fHzCLKSFA7QMHtmuqZge0n/cZdiMkViWOxTC9MT
         ZbGWOuC8cb04wdx/MTswcnoBC4Q7HCf67hMh8uNvsxah1axE/dF0LQiA4ok57uWF6KHD
         JZ7Q==
X-Gm-Message-State: AOJu0YwNah0tSZPS/+LPem+s6GNcMDZ+GfqU66jhgAPwd8F6+UmqDxFX
	LCj9C4NxeKvi98F//LkPaZk8kiabhklzvakH1Wx+5239ANe3etLQ
X-Google-Smtp-Source: AGHT+IGQdH7JVZ9JXEKx+RdyXy0+jIan4K6HK415XKzaUPxJwkdOSTKXWLuKEs/ZMkLxpV4eBsg2OA==
X-Received: by 2002:a05:6402:1d1c:b0:55d:31f8:920a with SMTP id dg28-20020a0564021d1c00b0055d31f8920amr590724edb.27.1706262980936;
        Fri, 26 Jan 2024 01:56:20 -0800 (PST)
Message-ID: <f8f6fadb5c2e94fb52bedb0cc12d7504567992c5.camel@gmail.com>
Subject: Re: [PATCH v3 16/34] xen/lib: introduce generic find next bit
 operations
From: Oleksii <oleksii.kurochko@gmail.com>
To: Jan Beulich <jbeulich@suse.com>, Shawn Anastasio
	 <sanastasio@raptorengineering.com>
Cc: Alistair Francis <alistair.francis@wdc.com>, Bob Eshleman
 <bobbyeshleman@gmail.com>, Connor Davis <connojdavis@gmail.com>, Andrew
 Cooper <andrew.cooper3@citrix.com>, George Dunlap
 <george.dunlap@citrix.com>,  Julien Grall <julien@xen.org>, Stefano
 Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>, 
 xen-devel@lists.xenproject.org
Date: Fri, 26 Jan 2024 11:56:19 +0200
In-Reply-To: <e6d7806a-56c8-4b1e-965d-57685d856d98@suse.com>
References: <cover.1703255175.git.oleksii.kurochko@gmail.com>
	 <bb47caf6c275d8aea307b96e79828831eab4a703.1703255175.git.oleksii.kurochko@gmail.com>
	 <81e5cac4-90f0-4fff-b891-53ca73c61832@suse.com>
	 <05d685b0b7ccd329454a336b20351979bdf91ea4.camel@gmail.com>
	 <8e60f998-aeb4-4648-a3e9-d083bb8eefde@suse.com>
	 <c899f039185d02ea49db29641ff5ca46a29008dd.camel@gmail.com>
	 <e6d7806a-56c8-4b1e-965d-57685d856d98@suse.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
User-Agent: Evolution 3.50.2 (3.50.2-1.fc39) 
MIME-Version: 1.0

On Fri, 2024-01-26 at 10:48 +0100, Jan Beulich wrote:
> On 26.01.2024 10:44, Oleksii wrote:
> > On Tue, 2024-01-23 at 14:37 +0100, Jan Beulich wrote:
> > > On 23.01.2024 13:34, Oleksii wrote:
> > > > On Tue, 2024-01-23 at 12:14 +0100, Jan Beulich wrote:
> > > > > On 22.12.2023 16:13, Oleksii Kurochko wrote:
> > > > > > --- a/xen/common/Kconfig
> > > > > > +++ b/xen/common/Kconfig
> > > > > > @@ -47,6 +47,9 @@ config ARCH_MAP_DOMAIN_PAGE
> > > > > > =C2=A0config GENERIC_BUG_FRAME
> > > > > > =C2=A0	bool
> > > > > > =C2=A0
> > > > > > +config GENERIC_FIND_NEXT_BIT
> > > > > > +	bool
> > > > >=20
> > > > > There's no need for this, as ...
> > > > >=20
> > > > > > --- a/xen/lib/Makefile
> > > > > > +++ b/xen/lib/Makefile
> > > > > > @@ -3,6 +3,7 @@ obj-$(CONFIG_X86) +=3D x86/
> > > > > > =C2=A0lib-y +=3D bsearch.o
> > > > > > =C2=A0lib-y +=3D ctors.o
> > > > > > =C2=A0lib-y +=3D ctype.o
> > > > > > +lib-$(CONFIG_GENERIC_FIND_NEXT_BIT) +=3D find-next-bit.o
> > > > >=20
> > > > > ... you're moving this to lib/. Or have you encountered any
> > > > > issue
> > > > > with building this uniformly, and you forgot to mention this
> > > > > in
> > > > > the description?
> > > > I didn't check. My intention was to provide opportunity to
> > > > check if
> > > > an
> > > > architecture want to use generic version or not. Otherwise, I
> > > > expected
> > > > that we will have multiple definiotion of the funcion.
> > > >=20
> > > > But considering that they are all defined under #ifdef...#endif
> > > > we
> > > > can
> > > > remove the declaration of the config GENERIC_FIND_NEXT_BIT.
> > >=20
> > > What #ifdef / #endif would matter here? Whats in lib/ is intended
> > > to
> > > be
> > > generic anyway. And what is in the resulting lib.a won't be used
> > > by
> > > an
> > > arch if it has an arch-specific implementation. Problems could
> > > arise
> > > if
> > > an arch had an inline function colliding with the out-of-line
> > > one.
> > > But
> > > that's about the old case where I could see a need to make the
> > > building
> > > of one of the objects conditional. And you'll note that withing
> > > this
> > > Makefile there are pretty few conditionals.
> > We will have such issue with PPC:
> > ...
> > static inline unsigned long find_next_bit(const unsigned long
> > *addr,
> > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0 unsigned long size,
> > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0 unsigned long offset)
> > ...
> >=20
> > It looks like an introduction of new config for find_next_bit is
> > needed.
> >=20
> > Does a better option exist? Would making find_next_bit non inline
> > non
> > inline for PPC better?
>=20
> Isn't that generic code anyway? If so, that also wants replacing by
> the generic library function(s). Shawn - I have to admit I have a
> hard time seeing why this was introduced as inline functions in the
> first place.
You are right, it is generic one too. I'll replace it too.

~ Oleksii


From xen-devel-bounces@lists.xenproject.org Fri Jan 26 10:06:03 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 26 Jan 2024 10:06:03 +0000
Received: from list by lists.xenproject.org with outflank-mailman.671908.1045429 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTJ60-0007CY-1f; Fri, 26 Jan 2024 10:06:00 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 671908.1045429; Fri, 26 Jan 2024 10:06:00 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTJ5z-0007CR-Uu; Fri, 26 Jan 2024 10:05:59 +0000
Received: by outflank-mailman (input) for mailman id 671908;
 Fri, 26 Jan 2024 10:05:58 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=lGGJ=JE=alien8.de=bp@srs-se1.protection.inumbo.net>)
 id 1rTJ5x-0007C2-2B
 for xen-devel@lists.xenproject.org; Fri, 26 Jan 2024 10:05:58 +0000
Received: from mail.alien8.de (mail.alien8.de [65.109.113.108])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 7e29368c-bc32-11ee-8a43-1f161083a0e0;
 Fri, 26 Jan 2024 11:05:54 +0100 (CET)
Received: from localhost (localhost.localdomain [127.0.0.1])
 by mail.alien8.de (SuperMail on ZX Spectrum 128k) with ESMTP id 18D2340E00C5; 
 Fri, 26 Jan 2024 10:05:52 +0000 (UTC)
Received: from mail.alien8.de ([127.0.0.1])
 by localhost (mail.alien8.de [127.0.0.1]) (amavisd-new, port 10026)
 with ESMTP id HOVI-hxIbPhW; Fri, 26 Jan 2024 10:05:49 +0000 (UTC)
Received: from zn.tnic (pd953033e.dip0.t-ipconnect.de [217.83.3.62])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange ECDHE (P-256) server-signature ECDSA (P-256) server-digest
 SHA256) (No client certificate requested)
 by mail.alien8.de (SuperMail on ZX Spectrum 128k) with ESMTPSA id 54CA540E016C;
 Fri, 26 Jan 2024 10:05:20 +0000 (UTC)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 7e29368c-bc32-11ee-8a43-1f161083a0e0
X-Virus-Scanned: Debian amavisd-new at mail.alien8.de
Authentication-Results: mail.alien8.de (amavisd-new); dkim=pass (4096-bit key)
	header.d=alien8.de
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=alien8.de; s=alien8;
	t=1706263543; bh=CSDUpNaCRO35pLF0DPKBpgiDLYukJvy5tt1fuNxZqtU=;
	h=Date:From:To:Cc:Subject:References:In-Reply-To:From;
	b=RzBuE/sqSSSx8reEf+A7w+39s5fyy7WXWDtdgsijfb+fmDlMq0cKAMRQrWxJVFcP4
	 xQ3kBqsxu+8HDub9eAdcCDgf6e8/JEq4IbocYuBURARdwaqD78QEk4+KPLvbTqV0Gu
	 US1VuzuibloCObpCuoQfhBOpiMmyFQxu8WtaTliYC95819ZJ7m95lu0eOWUsXLSqBu
	 utBSg6TWlhtMLcF27aAgAFeezydG7rS/+t5B6/6FZSFlIUsQwJUR1RykgyL6TZFCZ0
	 EFYEIOUIUK3dRGWWBzgi72/ntZWyiK8ldcEWE28rc2qBWZJPPHS6pqHFZFGG4sdLRz
	 UGlaKsc+1yK1mAufV84zqWrLoMvtPZ2RG6jwevpWLZE/m0cbJ8kpKkDxjgBR6nczhV
	 KD5efwNfAJk+mvIy3mlHPHTKc5jsdv7c1e2HY8PwbRRGVWlFSd0l3/940fbgXkJvYo
	 eNtimAs6KsBLWFSLV7/f5HTc0jS+WNzLaShm202bz2Fb+SJVKld1MKLxuElyaWU5b+
	 yvtbgMExoeuMu8qLnDV/usXgUFdwXdSFc+FrgaO/gjDj0uAxzkji64OvXEQLyNKpSD
	 oVZMG+2Ri5btWoaMChdT11ObvvulwwNhiwuV57F/lcsrxDpeU+V1oQCVp06bt8S5n1
	 2sesf0eTWE3cAmiXhQvvi1VY=
Date: Fri, 26 Jan 2024 11:05:19 +0100
From: Borislav Petkov <bp@alien8.de>
To: Xin Li <xin3.li@intel.com>
Cc: linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org,
	linux-edac@vger.kernel.org, linux-hyperv@vger.kernel.org,
	kvm@vger.kernel.org, xen-devel@lists.xenproject.org,
	tglx@linutronix.de, mingo@redhat.com, dave.hansen@linux.intel.com,
	x86@kernel.org, hpa@zytor.com, luto@kernel.org, pbonzini@redhat.com,
	seanjc@google.com, peterz@infradead.org, jgross@suse.com,
	ravi.v.shankar@intel.com, mhiramat@kernel.org,
	andrew.cooper3@citrix.com, jiangshanlai@gmail.com,
	nik.borisov@suse.com, shan.kang@intel.com
Subject: Re: [PATCH v13A 26/35] x86/fred: FRED entry/exit and dispatch code
Message-ID: <20240126100519.GBZbOD3xFB0v3mp5B1@fat_crate.local>
References: <SA1PR11MB6734ACF7F90649CADDC82C6EA88BA@SA1PR11MB6734.namprd11.prod.outlook.com>
 <20231209214214.2932-1-xin3.li@intel.com>
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="rJOTPPhA5KDTsGYN"
Content-Disposition: inline
In-Reply-To: <20231209214214.2932-1-xin3.li@intel.com>


--rJOTPPhA5KDTsGYN
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline

On Sat, Dec 09, 2023 at 01:42:14PM -0800, Xin Li wrote:
> +static noinstr void fred_intx(struct pt_regs *regs)
> +{
> +	switch (regs->fred_ss.vector) {
> +	/* Opcode 0xcd, 0x3, NOT INT3 (opcode 0xcc) */
> +	case X86_TRAP_BP:
> +		return exc_int3(regs);
> +
> +	/* Opcode 0xcd, 0x4, NOT INTO (opcode 0xce) */
> +	case X86_TRAP_OF:
> +		return exc_overflow(regs);
> +
> +	/* INT80 */
> +	case IA32_SYSCALL_VECTOR:
> +		if (ia32_enabled())
> +			return int80_emulation(regs);

Second compiler no likey:

arch/x86/entry/entry_fred.c:68:11: error: implicit declaration of function 'int80_emulation' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
                        return int80_emulation(regs);
                               ^
arch/x86/entry/entry_fred.c:68:4: error: void function 'fred_intx' should not return a value [-Wreturn-type]
                        return int80_emulation(regs);
                        ^      ~~~~~~~~~~~~~~~~~~~~~
2 errors generated.

config is attached.

compiler is Ubuntu clang version 14.0.0-1ubuntu1.1.

-- 
Regards/Gruss,
    Boris.

https://people.kernel.org/tglx/notes-about-netiquette

--rJOTPPhA5KDTsGYN
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment;
	filename="00-38-19-randconfig-x86_64-14904.cfg"

#
# Automatically generated file; DO NOT EDIT.
# Linux/x86_64 6.8.0-rc1 Kernel Configuration
#
CONFIG_CC_VERSION_TEXT="gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0"
CONFIG_CC_IS_GCC=y
CONFIG_GCC_VERSION=110400
CONFIG_CLANG_VERSION=0
CONFIG_AS_IS_GNU=y
CONFIG_AS_VERSION=23800
CONFIG_LD_IS_BFD=y
CONFIG_LD_VERSION=23800
CONFIG_LLD_VERSION=0
CONFIG_CC_CAN_LINK=y
CONFIG_CC_CAN_LINK_STATIC=y
CONFIG_CC_HAS_ASM_GOTO_OUTPUT=y
CONFIG_CC_HAS_ASM_GOTO_TIED_OUTPUT=y
CONFIG_TOOLS_SUPPORT_RELR=y
CONFIG_CC_HAS_ASM_INLINE=y
CONFIG_CC_HAS_NO_PROFILE_FN_ATTR=y
CONFIG_PAHOLE_VERSION=0
CONFIG_CONSTRUCTORS=y
CONFIG_IRQ_WORK=y
CONFIG_BUILDTIME_TABLE_SORT=y
CONFIG_THREAD_INFO_IN_TASK=y

#
# General setup
#
CONFIG_INIT_ENV_ARG_LIMIT=32
CONFIG_COMPILE_TEST=y
# CONFIG_WERROR is not set
# CONFIG_UAPI_HEADER_TEST is not set
CONFIG_LOCALVERSION=""
CONFIG_BUILD_SALT=""
CONFIG_HAVE_KERNEL_GZIP=y
CONFIG_HAVE_KERNEL_BZIP2=y
CONFIG_HAVE_KERNEL_LZMA=y
CONFIG_HAVE_KERNEL_XZ=y
CONFIG_HAVE_KERNEL_LZO=y
CONFIG_HAVE_KERNEL_LZ4=y
CONFIG_HAVE_KERNEL_ZSTD=y
CONFIG_KERNEL_GZIP=y
# CONFIG_KERNEL_BZIP2 is not set
# CONFIG_KERNEL_LZMA is not set
# CONFIG_KERNEL_XZ is not set
# CONFIG_KERNEL_LZO is not set
# CONFIG_KERNEL_LZ4 is not set
# CONFIG_KERNEL_ZSTD is not set
CONFIG_DEFAULT_INIT=""
CONFIG_DEFAULT_HOSTNAME="(none)"
# CONFIG_SYSVIPC is not set
# CONFIG_POSIX_MQUEUE is not set
# CONFIG_WATCH_QUEUE is not set
CONFIG_CROSS_MEMORY_ATTACH=y
CONFIG_USELIB=y
CONFIG_AUDIT=y
CONFIG_HAVE_ARCH_AUDITSYSCALL=y
CONFIG_AUDITSYSCALL=y

#
# IRQ subsystem
#
CONFIG_GENERIC_IRQ_PROBE=y
CONFIG_GENERIC_IRQ_SHOW=y
CONFIG_GENERIC_IRQ_EFFECTIVE_AFF_MASK=y
CONFIG_GENERIC_PENDING_IRQ=y
CONFIG_GENERIC_IRQ_MIGRATION=y
CONFIG_GENERIC_IRQ_INJECTION=y
CONFIG_HARDIRQS_SW_RESEND=y
CONFIG_GENERIC_IRQ_CHIP=y
CONFIG_IRQ_DOMAIN=y
CONFIG_IRQ_SIM=y
CONFIG_IRQ_DOMAIN_HIERARCHY=y
CONFIG_IRQ_MSI_IOMMU=y
CONFIG_GENERIC_IRQ_MATRIX_ALLOCATOR=y
CONFIG_GENERIC_IRQ_RESERVATION_MODE=y
CONFIG_IRQ_FORCED_THREADING=y
CONFIG_SPARSE_IRQ=y
CONFIG_GENERIC_IRQ_DEBUGFS=y
# end of IRQ subsystem

CONFIG_CLOCKSOURCE_WATCHDOG=y
CONFIG_ARCH_CLOCKSOURCE_INIT=y
CONFIG_CLOCKSOURCE_VALIDATE_LAST_CYCLE=y
CONFIG_GENERIC_TIME_VSYSCALL=y
CONFIG_GENERIC_CLOCKEVENTS=y
CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y
CONFIG_GENERIC_CLOCKEVENTS_MIN_ADJUST=y
CONFIG_GENERIC_CMOS_UPDATE=y
CONFIG_HAVE_POSIX_CPU_TIMERS_TASK_WORK=y
CONFIG_POSIX_CPU_TIMERS_TASK_WORK=y
CONFIG_CONTEXT_TRACKING=y
CONFIG_CONTEXT_TRACKING_IDLE=y

#
# Timers subsystem
#
CONFIG_TICK_ONESHOT=y
CONFIG_NO_HZ_COMMON=y
# CONFIG_HZ_PERIODIC is not set
CONFIG_NO_HZ_IDLE=y
# CONFIG_NO_HZ_FULL is not set
CONFIG_NO_HZ=y
CONFIG_HIGH_RES_TIMERS=y
CONFIG_CLOCKSOURCE_WATCHDOG_MAX_SKEW_US=125
# end of Timers subsystem

CONFIG_BPF=y
CONFIG_HAVE_EBPF_JIT=y
CONFIG_ARCH_WANT_DEFAULT_BPF_JIT=y

#
# BPF subsystem
#
# CONFIG_BPF_SYSCALL is not set
# end of BPF subsystem

CONFIG_PREEMPT_BUILD=y
CONFIG_PREEMPT_NONE=y
# CONFIG_PREEMPT_VOLUNTARY is not set
# CONFIG_PREEMPT is not set
CONFIG_PREEMPT_COUNT=y
CONFIG_PREEMPTION=y
CONFIG_PREEMPT_DYNAMIC=y
# CONFIG_SCHED_CORE is not set

#
# CPU/Task time and stats accounting
#
CONFIG_TICK_CPU_ACCOUNTING=y
# CONFIG_VIRT_CPU_ACCOUNTING_GEN is not set
# CONFIG_IRQ_TIME_ACCOUNTING is not set
# CONFIG_BSD_PROCESS_ACCT is not set
# CONFIG_TASKSTATS is not set
CONFIG_PSI=y
# CONFIG_PSI_DEFAULT_DISABLED is not set
# end of CPU/Task time and stats accounting

# CONFIG_CPU_ISOLATION is not set

#
# RCU Subsystem
#
CONFIG_TREE_RCU=y
CONFIG_PREEMPT_RCU=y
CONFIG_RCU_EXPERT=y
CONFIG_TREE_SRCU=y
CONFIG_TASKS_RCU_GENERIC=y
CONFIG_FORCE_TASKS_RCU=y
CONFIG_TASKS_RCU=y
# CONFIG_FORCE_TASKS_RUDE_RCU is not set
CONFIG_TASKS_RUDE_RCU=y
CONFIG_FORCE_TASKS_TRACE_RCU=y
CONFIG_TASKS_TRACE_RCU=y
CONFIG_RCU_STALL_COMMON=y
CONFIG_RCU_NEED_SEGCBLIST=y
CONFIG_RCU_FANOUT=64
CONFIG_RCU_FANOUT_LEAF=16
# CONFIG_RCU_BOOST is not set
CONFIG_RCU_NOCB_CPU=y
CONFIG_RCU_NOCB_CPU_DEFAULT_ALL=y
CONFIG_TASKS_TRACE_RCU_READ_MB=y
# CONFIG_RCU_LAZY is not set
# CONFIG_RCU_DOUBLE_CHECK_CB_TIME is not set
# end of RCU Subsystem

CONFIG_IKCONFIG=y
# CONFIG_IKCONFIG_PROC is not set
CONFIG_IKHEADERS=y
CONFIG_LOG_BUF_SHIFT=17
CONFIG_LOG_CPU_MAX_BUF_SHIFT=0
CONFIG_PRINTK_INDEX=y
CONFIG_HAVE_UNSTABLE_SCHED_CLOCK=y

#
# Scheduler features
#
# end of Scheduler features

CONFIG_ARCH_SUPPORTS_NUMA_BALANCING=y
CONFIG_ARCH_WANT_BATCHED_UNMAP_TLB_FLUSH=y
CONFIG_CC_HAS_INT128=y
CONFIG_CC_IMPLICIT_FALLTHROUGH="-Wimplicit-fallthrough=5"
CONFIG_GCC11_NO_ARRAY_BOUNDS=y
CONFIG_CC_NO_ARRAY_BOUNDS=y
CONFIG_GCC11_NO_STRINGOP_OVERFLOW=y
CONFIG_CC_NO_STRINGOP_OVERFLOW=y
CONFIG_ARCH_SUPPORTS_INT128=y
CONFIG_NUMA_BALANCING=y
CONFIG_NUMA_BALANCING_DEFAULT_ENABLED=y
CONFIG_CGROUPS=y
CONFIG_PAGE_COUNTER=y
CONFIG_CGROUP_FAVOR_DYNMODS=y
CONFIG_MEMCG=y
CONFIG_MEMCG_KMEM=y
# CONFIG_BLK_CGROUP is not set
CONFIG_CGROUP_SCHED=y
CONFIG_FAIR_GROUP_SCHED=y
CONFIG_CFS_BANDWIDTH=y
CONFIG_RT_GROUP_SCHED=y
CONFIG_SCHED_MM_CID=y
# CONFIG_CGROUP_PIDS is not set
# CONFIG_CGROUP_RDMA is not set
CONFIG_CGROUP_FREEZER=y
# CONFIG_CGROUP_HUGETLB is not set
# CONFIG_CPUSETS is not set
CONFIG_CGROUP_DEVICE=y
CONFIG_CGROUP_CPUACCT=y
# CONFIG_CGROUP_PERF is not set
CONFIG_CGROUP_MISC=y
# CONFIG_CGROUP_DEBUG is not set
CONFIG_SOCK_CGROUP_DATA=y
CONFIG_NAMESPACES=y
# CONFIG_UTS_NS is not set
CONFIG_TIME_NS=y
CONFIG_USER_NS=y
CONFIG_PID_NS=y
CONFIG_NET_NS=y
CONFIG_CHECKPOINT_RESTORE=y
CONFIG_SCHED_AUTOGROUP=y
# CONFIG_RELAY is not set
CONFIG_BLK_DEV_INITRD=y
CONFIG_INITRAMFS_SOURCE=""
CONFIG_RD_GZIP=y
# CONFIG_RD_BZIP2 is not set
# CONFIG_RD_LZMA is not set
CONFIG_RD_XZ=y
# CONFIG_RD_LZO is not set
# CONFIG_RD_LZ4 is not set
CONFIG_RD_ZSTD=y
CONFIG_BOOT_CONFIG=y
CONFIG_BOOT_CONFIG_FORCE=y
# CONFIG_BOOT_CONFIG_EMBED is not set
CONFIG_INITRAMFS_PRESERVE_MTIME=y
CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE=y
# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
CONFIG_LD_ORPHAN_WARN=y
CONFIG_LD_ORPHAN_WARN_LEVEL="warn"
CONFIG_SYSCTL=y
CONFIG_SYSCTL_EXCEPTION_TRACE=y
CONFIG_HAVE_PCSPKR_PLATFORM=y
# CONFIG_EXPERT is not set
CONFIG_MULTIUSER=y
CONFIG_SGETMASK_SYSCALL=y
CONFIG_SYSFS_SYSCALL=y
CONFIG_FHANDLE=y
CONFIG_POSIX_TIMERS=y
CONFIG_PRINTK=y
CONFIG_BUG=y
CONFIG_ELF_CORE=y
CONFIG_PCSPKR_PLATFORM=y
CONFIG_BASE_FULL=y
CONFIG_FUTEX=y
CONFIG_FUTEX_PI=y
CONFIG_EPOLL=y
CONFIG_SIGNALFD=y
CONFIG_TIMERFD=y
CONFIG_EVENTFD=y
CONFIG_SHMEM=y
CONFIG_AIO=y
CONFIG_IO_URING=y
CONFIG_ADVISE_SYSCALLS=y
CONFIG_MEMBARRIER=y
CONFIG_KCMP=y
CONFIG_RSEQ=y
CONFIG_CACHESTAT_SYSCALL=y
CONFIG_KALLSYMS=y
CONFIG_KALLSYMS_SELFTEST=y
CONFIG_KALLSYMS_ALL=y
CONFIG_KALLSYMS_ABSOLUTE_PERCPU=y
CONFIG_KALLSYMS_BASE_RELATIVE=y
CONFIG_ARCH_HAS_MEMBARRIER_SYNC_CORE=y
CONFIG_HAVE_PERF_EVENTS=y
CONFIG_GUEST_PERF_EVENTS=y
CONFIG_PERF_USE_VMALLOC=y

#
# Kernel Performance Events And Counters
#
CONFIG_PERF_EVENTS=y
CONFIG_DEBUG_PERF_USE_VMALLOC=y
# end of Kernel Performance Events And Counters

CONFIG_SYSTEM_DATA_VERIFICATION=y
CONFIG_PROFILING=y
CONFIG_TRACEPOINTS=y

#
# Kexec and crash features
#
# CONFIG_KEXEC is not set
# CONFIG_KEXEC_FILE is not set
# CONFIG_CRASH_DUMP is not set
# end of Kexec and crash features
# end of General setup

CONFIG_64BIT=y
CONFIG_X86_64=y
CONFIG_X86=y
CONFIG_INSTRUCTION_DECODER=y
CONFIG_OUTPUT_FORMAT="elf64-x86-64"
CONFIG_LOCKDEP_SUPPORT=y
CONFIG_STACKTRACE_SUPPORT=y
CONFIG_MMU=y
CONFIG_ARCH_MMAP_RND_BITS_MIN=28
CONFIG_ARCH_MMAP_RND_BITS_MAX=32
CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MIN=8
CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MAX=16
CONFIG_GENERIC_ISA_DMA=y
CONFIG_GENERIC_BUG=y
CONFIG_GENERIC_BUG_RELATIVE_POINTERS=y
CONFIG_ARCH_MAY_HAVE_PC_FDC=y
CONFIG_GENERIC_CALIBRATE_DELAY=y
CONFIG_ARCH_HAS_CPU_RELAX=y
CONFIG_ARCH_HIBERNATION_POSSIBLE=y
CONFIG_ARCH_SUSPEND_POSSIBLE=y
CONFIG_AUDIT_ARCH=y
CONFIG_X86_64_SMP=y
CONFIG_ARCH_SUPPORTS_UPROBES=y
CONFIG_FIX_EARLYCON_MEM=y
CONFIG_PGTABLE_LEVELS=4
CONFIG_CC_HAS_SANE_STACKPROTECTOR=y

#
# Processor type and features
#
CONFIG_SMP=y
CONFIG_X86_MPPARSE=y
# CONFIG_GOLDFISH is not set
CONFIG_X86_CPU_RESCTRL=y
CONFIG_X86_FRED=y
# CONFIG_X86_EXTENDED_PLATFORM is not set
CONFIG_IOSF_MBI=y
CONFIG_IOSF_MBI_DEBUG=y
CONFIG_SCHED_OMIT_FRAME_POINTER=y
# CONFIG_HYPERVISOR_GUEST is not set
# CONFIG_MK8 is not set
# CONFIG_MPSC is not set
# CONFIG_MCORE2 is not set
# CONFIG_MATOM is not set
CONFIG_GENERIC_CPU=y
CONFIG_X86_INTERNODE_CACHE_SHIFT=6
CONFIG_X86_L1_CACHE_SHIFT=6
CONFIG_X86_TSC=y
CONFIG_X86_HAVE_PAE=y
CONFIG_X86_CMPXCHG64=y
CONFIG_X86_CMOV=y
CONFIG_X86_MINIMUM_CPU_FAMILY=64
CONFIG_X86_DEBUGCTLMSR=y
CONFIG_IA32_FEAT_CTL=y
CONFIG_X86_VMX_FEATURE_NAMES=y
CONFIG_CPU_SUP_INTEL=y
CONFIG_CPU_SUP_AMD=y
CONFIG_CPU_SUP_HYGON=y
CONFIG_CPU_SUP_CENTAUR=y
CONFIG_CPU_SUP_ZHAOXIN=y
CONFIG_HPET_TIMER=y
CONFIG_DMI=y
# CONFIG_GART_IOMMU is not set
CONFIG_BOOT_VESA_SUPPORT=y
CONFIG_MAXSMP=y
CONFIG_NR_CPUS_RANGE_BEGIN=8192
CONFIG_NR_CPUS_RANGE_END=8192
CONFIG_NR_CPUS_DEFAULT=8192
CONFIG_NR_CPUS=8192
# CONFIG_SCHED_CLUSTER is not set
CONFIG_SCHED_SMT=y
# CONFIG_SCHED_MC is not set
CONFIG_X86_LOCAL_APIC=y
CONFIG_X86_IO_APIC=y
CONFIG_X86_REROUTE_FOR_BROKEN_BOOT_IRQS=y
# CONFIG_X86_MCE is not set

#
# Performance monitoring
#
CONFIG_PERF_EVENTS_INTEL_UNCORE=y
CONFIG_PERF_EVENTS_INTEL_RAPL=y
# CONFIG_PERF_EVENTS_INTEL_CSTATE is not set
# CONFIG_PERF_EVENTS_AMD_POWER is not set
CONFIG_PERF_EVENTS_AMD_UNCORE=y
# CONFIG_PERF_EVENTS_AMD_BRS is not set
# end of Performance monitoring

CONFIG_X86_16BIT=y
CONFIG_X86_ESPFIX64=y
CONFIG_X86_VSYSCALL_EMULATION=y
CONFIG_X86_IOPL_IOPERM=y
CONFIG_MICROCODE=y
CONFIG_MICROCODE_LATE_LOADING=y
# CONFIG_MICROCODE_LATE_FORCE_MINREV is not set
# CONFIG_X86_MSR is not set
# CONFIG_X86_CPUID is not set
# CONFIG_X86_5LEVEL is not set
CONFIG_X86_DIRECT_GBPAGES=y
# CONFIG_X86_CPA_STATISTICS is not set
CONFIG_NUMA=y
# CONFIG_AMD_NUMA is not set
CONFIG_NUMA_EMU=y
CONFIG_NODES_SHIFT=10
CONFIG_ARCH_SPARSEMEM_ENABLE=y
CONFIG_ARCH_SPARSEMEM_DEFAULT=y
CONFIG_ILLEGAL_POINTER_VALUE=0xdead000000000000
CONFIG_X86_CHECK_BIOS_CORRUPTION=y
CONFIG_X86_BOOTPARAM_MEMORY_CORRUPTION_CHECK=y
CONFIG_MTRR=y
CONFIG_MTRR_SANITIZER=y
CONFIG_MTRR_SANITIZER_ENABLE_DEFAULT=0
CONFIG_MTRR_SANITIZER_SPARE_REG_NR_DEFAULT=1
CONFIG_X86_PAT=y
CONFIG_ARCH_USES_PG_UNCACHED=y
CONFIG_X86_UMIP=y
CONFIG_CC_HAS_IBT=y
CONFIG_X86_CET=y
CONFIG_X86_KERNEL_IBT=y
# CONFIG_X86_INTEL_MEMORY_PROTECTION_KEYS is not set
CONFIG_X86_INTEL_TSX_MODE_OFF=y
# CONFIG_X86_INTEL_TSX_MODE_ON is not set
# CONFIG_X86_INTEL_TSX_MODE_AUTO is not set
CONFIG_X86_USER_SHADOW_STACK=y
# CONFIG_HZ_100 is not set
CONFIG_HZ_250=y
# CONFIG_HZ_300 is not set
# CONFIG_HZ_1000 is not set
CONFIG_HZ=250
CONFIG_SCHED_HRTICK=y
CONFIG_ARCH_SUPPORTS_KEXEC=y
CONFIG_ARCH_SUPPORTS_KEXEC_FILE=y
CONFIG_ARCH_SUPPORTS_KEXEC_PURGATORY=y
CONFIG_ARCH_SUPPORTS_KEXEC_SIG=y
CONFIG_ARCH_SUPPORTS_KEXEC_SIG_FORCE=y
CONFIG_ARCH_SUPPORTS_KEXEC_BZIMAGE_VERIFY_SIG=y
CONFIG_ARCH_SUPPORTS_KEXEC_JUMP=y
CONFIG_ARCH_SUPPORTS_CRASH_DUMP=y
CONFIG_ARCH_SUPPORTS_CRASH_HOTPLUG=y
CONFIG_PHYSICAL_START=0x1000000
# CONFIG_RELOCATABLE is not set
CONFIG_PHYSICAL_ALIGN=0x200000
CONFIG_ADDRESS_MASKING=y
CONFIG_HOTPLUG_CPU=y
CONFIG_LEGACY_VSYSCALL_XONLY=y
# CONFIG_LEGACY_VSYSCALL_NONE is not set
CONFIG_CMDLINE_BOOL=y
CONFIG_CMDLINE=""
CONFIG_MODIFY_LDT_SYSCALL=y
CONFIG_STRICT_SIGALTSTACK_SIZE=y
CONFIG_HAVE_LIVEPATCH=y
# end of Processor type and features

CONFIG_CC_HAS_SLS=y
CONFIG_CC_HAS_RETURN_THUNK=y
CONFIG_CC_HAS_ENTRY_PADDING=y
CONFIG_FUNCTION_PADDING_CFI=11
CONFIG_FUNCTION_PADDING_BYTES=16
CONFIG_SPECULATION_MITIGATIONS=y
CONFIG_MITIGATION_PAGE_TABLE_ISOLATION=y
CONFIG_MITIGATION_RETPOLINE=y
# CONFIG_MITIGATION_RETHUNK is not set
CONFIG_MITIGATION_IBPB_ENTRY=y
CONFIG_MITIGATION_IBRS_ENTRY=y
CONFIG_MITIGATION_SLS=y
CONFIG_MITIGATION_GDS_FORCE=y
CONFIG_ARCH_HAS_ADD_PAGES=y

#
# Power management and ACPI options
#
# CONFIG_SUSPEND is not set
# CONFIG_HIBERNATION is not set
# CONFIG_PM is not set
CONFIG_ARCH_SUPPORTS_ACPI=y
# CONFIG_ACPI is not set

#
# CPU Frequency scaling
#
# CONFIG_CPU_FREQ is not set
# end of CPU Frequency scaling

#
# CPU Idle
#
# CONFIG_CPU_IDLE is not set
# end of CPU Idle
# end of Power management and ACPI options

#
# Bus options (PCI etc.)
#
CONFIG_PCI_DIRECT=y
CONFIG_ISA_DMA_API=y
CONFIG_AMD_NB=y
# end of Bus options (PCI etc.)

#
# Binary Emulations
#
# CONFIG_IA32_EMULATION is not set
# CONFIG_X86_X32_ABI is not set
# end of Binary Emulations

CONFIG_HAVE_KVM=y
CONFIG_KVM_COMMON=y
CONFIG_HAVE_KVM_PFNCACHE=y
CONFIG_HAVE_KVM_IRQCHIP=y
CONFIG_HAVE_KVM_IRQ_ROUTING=y
CONFIG_HAVE_KVM_DIRTY_RING=y
CONFIG_HAVE_KVM_DIRTY_RING_TSO=y
CONFIG_HAVE_KVM_DIRTY_RING_ACQ_REL=y
CONFIG_KVM_MMIO=y
CONFIG_KVM_ASYNC_PF=y
CONFIG_HAVE_KVM_MSI=y
CONFIG_HAVE_KVM_CPU_RELAX_INTERCEPT=y
CONFIG_KVM_VFIO=y
CONFIG_KVM_GENERIC_DIRTYLOG_READ_PROTECT=y
CONFIG_HAVE_KVM_IRQ_BYPASS=y
CONFIG_HAVE_KVM_NO_POLL=y
CONFIG_KVM_XFER_TO_GUEST_WORK=y
CONFIG_KVM_GENERIC_HARDWARE_ENABLING=y
CONFIG_KVM_GENERIC_MMU_NOTIFIER=y
CONFIG_VIRTUALIZATION=y
CONFIG_KVM=y
CONFIG_KVM_INTEL=y
CONFIG_KVM_AMD=y
# CONFIG_KVM_SMM is not set
CONFIG_KVM_HYPERV=y
CONFIG_KVM_XEN=y
CONFIG_KVM_MAX_NR_VCPUS=4096
CONFIG_AS_AVX512=y
CONFIG_AS_SHA1_NI=y
CONFIG_AS_SHA256_NI=y
CONFIG_AS_TPAUSE=y
CONFIG_AS_GFNI=y
CONFIG_AS_WRUSS=y

#
# General architecture-dependent options
#
CONFIG_HOTPLUG_SMT=y
CONFIG_HOTPLUG_CORE_SYNC=y
CONFIG_HOTPLUG_CORE_SYNC_DEAD=y
CONFIG_HOTPLUG_CORE_SYNC_FULL=y
CONFIG_HOTPLUG_SPLIT_STARTUP=y
CONFIG_HOTPLUG_PARALLEL=y
CONFIG_GENERIC_ENTRY=y
CONFIG_JUMP_LABEL=y
CONFIG_STATIC_KEYS_SELFTEST=y
# CONFIG_STATIC_CALL_SELFTEST is not set
CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y
CONFIG_ARCH_USE_BUILTIN_BSWAP=y
CONFIG_USER_RETURN_NOTIFIER=y
CONFIG_HAVE_IOREMAP_PROT=y
CONFIG_HAVE_KPROBES=y
CONFIG_HAVE_KRETPROBES=y
CONFIG_HAVE_OPTPROBES=y
CONFIG_HAVE_KPROBES_ON_FTRACE=y
CONFIG_ARCH_CORRECT_STACKTRACE_ON_KRETPROBE=y
CONFIG_HAVE_FUNCTION_ERROR_INJECTION=y
CONFIG_HAVE_NMI=y
CONFIG_TRACE_IRQFLAGS_SUPPORT=y
CONFIG_TRACE_IRQFLAGS_NMI_SUPPORT=y
CONFIG_HAVE_ARCH_TRACEHOOK=y
CONFIG_HAVE_DMA_CONTIGUOUS=y
CONFIG_GENERIC_SMP_IDLE_THREAD=y
CONFIG_ARCH_HAS_FORTIFY_SOURCE=y
CONFIG_ARCH_HAS_SET_MEMORY=y
CONFIG_ARCH_HAS_SET_DIRECT_MAP=y
CONFIG_ARCH_HAS_CPU_FINALIZE_INIT=y
CONFIG_HAVE_ARCH_THREAD_STRUCT_WHITELIST=y
CONFIG_ARCH_WANTS_DYNAMIC_TASK_STRUCT=y
CONFIG_ARCH_WANTS_NO_INSTR=y
CONFIG_HAVE_ASM_MODVERSIONS=y
CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y
CONFIG_HAVE_RSEQ=y
CONFIG_HAVE_RUST=y
CONFIG_HAVE_FUNCTION_ARG_ACCESS_API=y
CONFIG_HAVE_HW_BREAKPOINT=y
CONFIG_HAVE_MIXED_BREAKPOINTS_REGS=y
CONFIG_HAVE_USER_RETURN_NOTIFIER=y
CONFIG_HAVE_PERF_EVENTS_NMI=y
CONFIG_HAVE_HARDLOCKUP_DETECTOR_PERF=y
CONFIG_HAVE_PERF_REGS=y
CONFIG_HAVE_PERF_USER_STACK_DUMP=y
CONFIG_HAVE_ARCH_JUMP_LABEL=y
CONFIG_HAVE_ARCH_JUMP_LABEL_RELATIVE=y
CONFIG_MMU_GATHER_MERGE_VMAS=y
CONFIG_MMU_LAZY_TLB_REFCOUNT=y
CONFIG_ARCH_HAVE_NMI_SAFE_CMPXCHG=y
CONFIG_ARCH_HAS_NMI_SAFE_THIS_CPU_OPS=y
CONFIG_HAVE_ALIGNED_STRUCT_PAGE=y
CONFIG_HAVE_CMPXCHG_LOCAL=y
CONFIG_HAVE_CMPXCHG_DOUBLE=y
CONFIG_HAVE_ARCH_SECCOMP=y
CONFIG_HAVE_ARCH_SECCOMP_FILTER=y
CONFIG_SECCOMP=y
CONFIG_SECCOMP_FILTER=y
CONFIG_SECCOMP_CACHE_DEBUG=y
CONFIG_HAVE_ARCH_STACKLEAK=y
CONFIG_HAVE_STACKPROTECTOR=y
# CONFIG_STACKPROTECTOR is not set
CONFIG_ARCH_SUPPORTS_LTO_CLANG=y
CONFIG_ARCH_SUPPORTS_LTO_CLANG_THIN=y
CONFIG_LTO_NONE=y
CONFIG_ARCH_SUPPORTS_CFI_CLANG=y
CONFIG_HAVE_ARCH_WITHIN_STACK_FRAMES=y
CONFIG_HAVE_CONTEXT_TRACKING_USER=y
CONFIG_HAVE_CONTEXT_TRACKING_USER_OFFSTACK=y
CONFIG_HAVE_VIRT_CPU_ACCOUNTING_GEN=y
CONFIG_HAVE_IRQ_TIME_ACCOUNTING=y
CONFIG_HAVE_MOVE_PUD=y
CONFIG_HAVE_MOVE_PMD=y
CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE=y
CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE_PUD=y
CONFIG_HAVE_ARCH_HUGE_VMAP=y
CONFIG_HAVE_ARCH_HUGE_VMALLOC=y
CONFIG_ARCH_WANT_HUGE_PMD_SHARE=y
CONFIG_HAVE_ARCH_SOFT_DIRTY=y
CONFIG_HAVE_MOD_ARCH_SPECIFIC=y
CONFIG_MODULES_USE_ELF_RELA=y
CONFIG_HAVE_IRQ_EXIT_ON_IRQ_STACK=y
CONFIG_HAVE_SOFTIRQ_ON_OWN_STACK=y
CONFIG_SOFTIRQ_ON_OWN_STACK=y
CONFIG_ARCH_HAS_ELF_RANDOMIZE=y
CONFIG_HAVE_ARCH_MMAP_RND_BITS=y
CONFIG_HAVE_EXIT_THREAD=y
CONFIG_ARCH_MMAP_RND_BITS=28
CONFIG_PAGE_SIZE_LESS_THAN_64KB=y
CONFIG_PAGE_SIZE_LESS_THAN_256KB=y
CONFIG_HAVE_OBJTOOL=y
CONFIG_HAVE_JUMP_LABEL_HACK=y
CONFIG_HAVE_NOINSTR_HACK=y
CONFIG_HAVE_NOINSTR_VALIDATION=y
CONFIG_HAVE_UACCESS_VALIDATION=y
CONFIG_HAVE_STACK_VALIDATION=y
CONFIG_HAVE_RELIABLE_STACKTRACE=y
CONFIG_ISA_BUS_API=y
# CONFIG_COMPAT_32BIT_TIME is not set
CONFIG_HAVE_ARCH_VMAP_STACK=y
CONFIG_VMAP_STACK=y
CONFIG_HAVE_ARCH_RANDOMIZE_KSTACK_OFFSET=y
CONFIG_RANDOMIZE_KSTACK_OFFSET=y
CONFIG_RANDOMIZE_KSTACK_OFFSET_DEFAULT=y
CONFIG_ARCH_HAS_STRICT_KERNEL_RWX=y
CONFIG_STRICT_KERNEL_RWX=y
CONFIG_ARCH_HAS_STRICT_MODULE_RWX=y
CONFIG_HAVE_ARCH_PREL32_RELOCATIONS=y
CONFIG_LOCK_EVENT_COUNTS=y
CONFIG_ARCH_HAS_MEM_ENCRYPT=y
CONFIG_HAVE_STATIC_CALL=y
CONFIG_HAVE_STATIC_CALL_INLINE=y
CONFIG_HAVE_PREEMPT_DYNAMIC=y
CONFIG_HAVE_PREEMPT_DYNAMIC_CALL=y
CONFIG_ARCH_WANT_LD_ORPHAN_WARN=y
CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y
CONFIG_ARCH_SUPPORTS_PAGE_TABLE_CHECK=y
CONFIG_ARCH_HAS_ELFCORE_COMPAT=y
CONFIG_ARCH_HAS_PARANOID_L1D_FLUSH=y
CONFIG_DYNAMIC_SIGFRAME=y
CONFIG_ARCH_HAS_HW_PTE_YOUNG=y
CONFIG_ARCH_HAS_NONLEAF_PMD_YOUNG=y

#
# GCOV-based kernel profiling
#
CONFIG_GCOV_KERNEL=y
CONFIG_ARCH_HAS_GCOV_PROFILE_ALL=y
# end of GCOV-based kernel profiling

CONFIG_HAVE_GCC_PLUGINS=y
CONFIG_FUNCTION_ALIGNMENT_4B=y
CONFIG_FUNCTION_ALIGNMENT_16B=y
CONFIG_FUNCTION_ALIGNMENT=16
# end of General architecture-dependent options

CONFIG_RT_MUTEXES=y
CONFIG_BASE_SMALL=0
# CONFIG_MODULES is not set
CONFIG_BLOCK=y
# CONFIG_BLOCK_LEGACY_AUTOLOAD is not set
CONFIG_BLK_CGROUP_PUNT_BIO=y
CONFIG_BLK_DEV_BSG_COMMON=y
CONFIG_BLK_DEV_BSGLIB=y
CONFIG_BLK_DEV_INTEGRITY=y
CONFIG_BLK_DEV_INTEGRITY_T10=y
# CONFIG_BLK_DEV_WRITE_MOUNTED is not set
CONFIG_BLK_DEV_ZONED=y
# CONFIG_BLK_WBT is not set
CONFIG_BLK_DEBUG_FS=y
CONFIG_BLK_DEBUG_FS_ZONED=y
# CONFIG_BLK_SED_OPAL is not set
CONFIG_BLK_INLINE_ENCRYPTION=y
CONFIG_BLK_INLINE_ENCRYPTION_FALLBACK=y

#
# Partition Types
#
# CONFIG_PARTITION_ADVANCED is not set
CONFIG_MSDOS_PARTITION=y
CONFIG_EFI_PARTITION=y
# end of Partition Types

CONFIG_BLK_MQ_PCI=y
CONFIG_BLK_MQ_VIRTIO=y
CONFIG_BLOCK_HOLDER_DEPRECATED=y
CONFIG_BLK_MQ_STACKING=y

#
# IO Schedulers
#
CONFIG_MQ_IOSCHED_DEADLINE=y
CONFIG_MQ_IOSCHED_KYBER=y
# CONFIG_IOSCHED_BFQ is not set
# end of IO Schedulers

CONFIG_PREEMPT_NOTIFIERS=y
CONFIG_PADATA=y
CONFIG_ASN1=y
CONFIG_UNINLINE_SPIN_UNLOCK=y
CONFIG_ARCH_SUPPORTS_ATOMIC_RMW=y
CONFIG_MUTEX_SPIN_ON_OWNER=y
CONFIG_RWSEM_SPIN_ON_OWNER=y
CONFIG_LOCK_SPIN_ON_OWNER=y
CONFIG_ARCH_USE_QUEUED_SPINLOCKS=y
CONFIG_QUEUED_SPINLOCKS=y
CONFIG_ARCH_USE_QUEUED_RWLOCKS=y
CONFIG_QUEUED_RWLOCKS=y
CONFIG_ARCH_HAS_NON_OVERLAPPING_ADDRESS_SPACE=y
CONFIG_ARCH_HAS_SYNC_CORE_BEFORE_USERMODE=y
CONFIG_ARCH_HAS_SYSCALL_WRAPPER=y
CONFIG_FREEZER=y

#
# Executable file formats
#
# CONFIG_BINFMT_ELF is not set
# CONFIG_BINFMT_SCRIPT is not set
CONFIG_BINFMT_MISC=y
CONFIG_COREDUMP=y
# end of Executable file formats

#
# Memory Management options
#
CONFIG_ZPOOL=y
CONFIG_SWAP=y
CONFIG_ZSWAP=y
# CONFIG_ZSWAP_DEFAULT_ON is not set
CONFIG_ZSWAP_EXCLUSIVE_LOADS_DEFAULT_ON=y
# CONFIG_ZSWAP_SHRINKER_DEFAULT_ON is not set
# CONFIG_ZSWAP_COMPRESSOR_DEFAULT_DEFLATE is not set
CONFIG_ZSWAP_COMPRESSOR_DEFAULT_LZO=y
# CONFIG_ZSWAP_COMPRESSOR_DEFAULT_842 is not set
# CONFIG_ZSWAP_COMPRESSOR_DEFAULT_LZ4 is not set
# CONFIG_ZSWAP_COMPRESSOR_DEFAULT_LZ4HC is not set
# CONFIG_ZSWAP_COMPRESSOR_DEFAULT_ZSTD is not set
CONFIG_ZSWAP_COMPRESSOR_DEFAULT="lzo"
# CONFIG_ZSWAP_ZPOOL_DEFAULT_ZBUD is not set
# CONFIG_ZSWAP_ZPOOL_DEFAULT_Z3FOLD is not set
CONFIG_ZSWAP_ZPOOL_DEFAULT_ZSMALLOC=y
CONFIG_ZSWAP_ZPOOL_DEFAULT="zsmalloc"
# CONFIG_ZBUD is not set
CONFIG_Z3FOLD=y
CONFIG_ZSMALLOC=y
CONFIG_ZSMALLOC_STAT=y
CONFIG_ZSMALLOC_CHAIN_SIZE=8

#
# Slab allocator options
#
CONFIG_SLUB=y
CONFIG_SLAB_MERGE_DEFAULT=y
# CONFIG_SLAB_FREELIST_RANDOM is not set
CONFIG_SLAB_FREELIST_HARDENED=y
# CONFIG_SLUB_STATS is not set
CONFIG_SLUB_CPU_PARTIAL=y
# CONFIG_RANDOM_KMALLOC_CACHES is not set
# end of Slab allocator options

CONFIG_SHUFFLE_PAGE_ALLOCATOR=y
CONFIG_COMPAT_BRK=y
CONFIG_SPARSEMEM=y
CONFIG_SPARSEMEM_EXTREME=y
CONFIG_SPARSEMEM_VMEMMAP_ENABLE=y
CONFIG_SPARSEMEM_VMEMMAP=y
CONFIG_ARCH_WANT_OPTIMIZE_DAX_VMEMMAP=y
CONFIG_ARCH_WANT_OPTIMIZE_HUGETLB_VMEMMAP=y
CONFIG_HAVE_FAST_GUP=y
CONFIG_MEMORY_ISOLATION=y
CONFIG_EXCLUSIVE_SYSTEM_RAM=y
CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
# CONFIG_MEMORY_HOTPLUG is not set
CONFIG_ARCH_MHP_MEMMAP_ON_MEMORY_ENABLE=y
CONFIG_SPLIT_PTLOCK_CPUS=4
CONFIG_ARCH_ENABLE_SPLIT_PMD_PTLOCK=y
CONFIG_MEMORY_BALLOON=y
# CONFIG_COMPACTION is not set
CONFIG_PAGE_REPORTING=y
CONFIG_MIGRATION=y
CONFIG_ARCH_ENABLE_HUGEPAGE_MIGRATION=y
CONFIG_CONTIG_ALLOC=y
CONFIG_PCP_BATCH_SCALE_MAX=5
CONFIG_PHYS_ADDR_T_64BIT=y
CONFIG_MMU_NOTIFIER=y
CONFIG_KSM=y
CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
CONFIG_ARCH_WANT_GENERAL_HUGETLB=y
CONFIG_ARCH_WANTS_THP_SWAP=y
# CONFIG_TRANSPARENT_HUGEPAGE is not set
CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK=y
CONFIG_NEED_PER_CPU_PAGE_FIRST_CHUNK=y
CONFIG_USE_PERCPU_NUMA_NODE_ID=y
CONFIG_HAVE_SETUP_PER_CPU_AREA=y
CONFIG_CMA=y
# CONFIG_CMA_DEBUG is not set
# CONFIG_CMA_DEBUGFS is not set
# CONFIG_CMA_SYSFS is not set
CONFIG_CMA_AREAS=19
CONFIG_MEM_SOFT_DIRTY=y
CONFIG_GENERIC_EARLY_IOREMAP=y
CONFIG_DEFERRED_STRUCT_PAGE_INIT=y
# CONFIG_IDLE_PAGE_TRACKING is not set
CONFIG_ARCH_HAS_CACHE_LINE_SIZE=y
CONFIG_ARCH_HAS_CURRENT_STACK_POINTER=y
CONFIG_ARCH_HAS_PTE_DEVMAP=y
CONFIG_ZONE_DMA=y
CONFIG_ZONE_DMA32=y
CONFIG_GET_FREE_REGION=y
CONFIG_ARCH_USES_HIGH_VMA_FLAGS=y
CONFIG_VM_EVENT_COUNTERS=y
# CONFIG_PERCPU_STATS is not set
CONFIG_GUP_TEST=y
CONFIG_DMAPOOL_TEST=y
CONFIG_ARCH_HAS_PTE_SPECIAL=y
CONFIG_MEMFD_CREATE=y
CONFIG_SECRETMEM=y
CONFIG_ANON_VMA_NAME=y
# CONFIG_USERFAULTFD is not set
CONFIG_LRU_GEN=y
# CONFIG_LRU_GEN_ENABLED is not set
CONFIG_LRU_GEN_STATS=y
CONFIG_LRU_GEN_WALKS_MMU=y
CONFIG_ARCH_SUPPORTS_PER_VMA_LOCK=y
CONFIG_PER_VMA_LOCK=y
CONFIG_LOCK_MM_AND_FIND_VMA=y

#
# Data Access Monitoring
#
# CONFIG_DAMON is not set
# end of Data Access Monitoring
# end of Memory Management options

CONFIG_NET=y
CONFIG_NET_INGRESS=y
CONFIG_NET_EGRESS=y
CONFIG_NET_XGRESS=y
CONFIG_SKB_EXTENSIONS=y

#
# Networking options
#
# CONFIG_PACKET is not set
CONFIG_UNIX=y
CONFIG_UNIX_SCM=y
CONFIG_AF_UNIX_OOB=y
CONFIG_UNIX_DIAG=y
CONFIG_TLS=y
# CONFIG_TLS_DEVICE is not set
# CONFIG_TLS_TOE is not set
CONFIG_XFRM=y
CONFIG_XFRM_ALGO=y
CONFIG_XFRM_USER=y
# CONFIG_XFRM_SUB_POLICY is not set
CONFIG_XFRM_MIGRATE=y
CONFIG_XFRM_STATISTICS=y
CONFIG_NET_KEY=y
CONFIG_NET_KEY_MIGRATE=y
CONFIG_SMC=y
CONFIG_SMC_DIAG=y
CONFIG_NET_HANDSHAKE=y
CONFIG_INET=y
CONFIG_IP_MULTICAST=y
# CONFIG_IP_ADVANCED_ROUTER is not set
CONFIG_IP_ROUTE_CLASSID=y
# CONFIG_IP_PNP is not set
# CONFIG_NET_IPIP is not set
CONFIG_NET_IPGRE_DEMUX=y
CONFIG_NET_IP_TUNNEL=y
# CONFIG_NET_IPGRE is not set
# CONFIG_IP_MROUTE is not set
CONFIG_SYN_COOKIES=y
CONFIG_NET_IPVTI=y
CONFIG_NET_UDP_TUNNEL=y
# CONFIG_NET_FOU is not set
# CONFIG_INET_AH is not set
# CONFIG_INET_ESP is not set
# CONFIG_INET_IPCOMP is not set
CONFIG_INET_TABLE_PERTURB_ORDER=16
CONFIG_INET_TUNNEL=y
CONFIG_INET_DIAG=y
CONFIG_INET_TCP_DIAG=y
CONFIG_INET_UDP_DIAG=y
# CONFIG_INET_RAW_DIAG is not set
# CONFIG_INET_DIAG_DESTROY is not set
CONFIG_TCP_CONG_ADVANCED=y
CONFIG_TCP_CONG_BIC=y
CONFIG_TCP_CONG_CUBIC=y
CONFIG_TCP_CONG_WESTWOOD=y
CONFIG_TCP_CONG_HTCP=y
CONFIG_TCP_CONG_HSTCP=y
CONFIG_TCP_CONG_HYBLA=y
CONFIG_TCP_CONG_VEGAS=y
CONFIG_TCP_CONG_NV=y
CONFIG_TCP_CONG_SCALABLE=y
CONFIG_TCP_CONG_LP=y
CONFIG_TCP_CONG_VENO=y
CONFIG_TCP_CONG_YEAH=y
CONFIG_TCP_CONG_ILLINOIS=y
# CONFIG_TCP_CONG_DCTCP is not set
CONFIG_TCP_CONG_CDG=y
CONFIG_TCP_CONG_BBR=y
# CONFIG_DEFAULT_BIC is not set
CONFIG_DEFAULT_CUBIC=y
# CONFIG_DEFAULT_HTCP is not set
# CONFIG_DEFAULT_HYBLA is not set
# CONFIG_DEFAULT_VEGAS is not set
# CONFIG_DEFAULT_VENO is not set
# CONFIG_DEFAULT_WESTWOOD is not set
# CONFIG_DEFAULT_CDG is not set
# CONFIG_DEFAULT_BBR is not set
# CONFIG_DEFAULT_RENO is not set
CONFIG_DEFAULT_TCP_CONG="cubic"
CONFIG_TCP_SIGPOOL=y
CONFIG_TCP_AO=y
CONFIG_TCP_MD5SIG=y
# CONFIG_IPV6 is not set
# CONFIG_NETLABEL is not set
# CONFIG_MPTCP is not set
CONFIG_NETWORK_SECMARK=y
CONFIG_NET_PTP_CLASSIFY=y
CONFIG_NETWORK_PHY_TIMESTAMPING=y
CONFIG_NETFILTER=y
CONFIG_NETFILTER_ADVANCED=y
CONFIG_BRIDGE_NETFILTER=y

#
# Core Netfilter Configuration
#
CONFIG_NETFILTER_INGRESS=y
CONFIG_NETFILTER_EGRESS=y
CONFIG_NETFILTER_SKIP_EGRESS=y
CONFIG_NETFILTER_NETLINK=y
CONFIG_NETFILTER_FAMILY_BRIDGE=y
CONFIG_NETFILTER_FAMILY_ARP=y
CONFIG_NETFILTER_NETLINK_HOOK=y
CONFIG_NETFILTER_NETLINK_ACCT=y
CONFIG_NETFILTER_NETLINK_QUEUE=y
# CONFIG_NETFILTER_NETLINK_LOG is not set
CONFIG_NETFILTER_NETLINK_OSF=y
CONFIG_NF_CONNTRACK=y
CONFIG_NF_LOG_SYSLOG=y
CONFIG_NETFILTER_CONNCOUNT=y
CONFIG_NF_CONNTRACK_MARK=y
CONFIG_NF_CONNTRACK_SECMARK=y
# CONFIG_NF_CONNTRACK_ZONES is not set
CONFIG_NF_CONNTRACK_PROCFS=y
# CONFIG_NF_CONNTRACK_EVENTS is not set
CONFIG_NF_CONNTRACK_TIMEOUT=y
# CONFIG_NF_CONNTRACK_TIMESTAMP is not set
CONFIG_NF_CONNTRACK_LABELS=y
CONFIG_NF_CONNTRACK_OVS=y
CONFIG_NF_CT_PROTO_DCCP=y
# CONFIG_NF_CT_PROTO_SCTP is not set
# CONFIG_NF_CT_PROTO_UDPLITE is not set
CONFIG_NF_CONNTRACK_AMANDA=y
CONFIG_NF_CONNTRACK_FTP=y
# CONFIG_NF_CONNTRACK_H323 is not set
CONFIG_NF_CONNTRACK_IRC=y
CONFIG_NF_CONNTRACK_BROADCAST=y
# CONFIG_NF_CONNTRACK_NETBIOS_NS is not set
CONFIG_NF_CONNTRACK_SNMP=y
# CONFIG_NF_CONNTRACK_PPTP is not set
CONFIG_NF_CONNTRACK_SANE=y
# CONFIG_NF_CONNTRACK_SIP is not set
CONFIG_NF_CONNTRACK_TFTP=y
# CONFIG_NF_CT_NETLINK is not set
# CONFIG_NF_CT_NETLINK_TIMEOUT is not set
# CONFIG_NF_NAT is not set
CONFIG_NF_TABLES=y
CONFIG_NF_TABLES_NETDEV=y
CONFIG_NFT_NUMGEN=y
CONFIG_NFT_CT=y
# CONFIG_NFT_FLOW_OFFLOAD is not set
CONFIG_NFT_CONNLIMIT=y
# CONFIG_NFT_LOG is not set
# CONFIG_NFT_LIMIT is not set
# CONFIG_NFT_NAT is not set
CONFIG_NFT_TUNNEL=y
# CONFIG_NFT_QUEUE is not set
CONFIG_NFT_QUOTA=y
CONFIG_NFT_REJECT=y
CONFIG_NFT_COMPAT=y
# CONFIG_NFT_HASH is not set
CONFIG_NFT_FIB=y
# CONFIG_NFT_XFRM is not set
CONFIG_NFT_SOCKET=y
# CONFIG_NFT_OSF is not set
CONFIG_NFT_TPROXY=y
# CONFIG_NFT_SYNPROXY is not set
CONFIG_NF_DUP_NETDEV=y
# CONFIG_NFT_DUP_NETDEV is not set
CONFIG_NFT_FWD_NETDEV=y
CONFIG_NF_FLOW_TABLE_INET=y
CONFIG_NF_FLOW_TABLE=y
CONFIG_NF_FLOW_TABLE_PROCFS=y
CONFIG_NETFILTER_XTABLES=y

#
# Xtables combined modules
#
CONFIG_NETFILTER_XT_MARK=y
CONFIG_NETFILTER_XT_CONNMARK=y

#
# Xtables targets
#
# CONFIG_NETFILTER_XT_TARGET_AUDIT is not set
# CONFIG_NETFILTER_XT_TARGET_CLASSIFY is not set
CONFIG_NETFILTER_XT_TARGET_CONNMARK=y
CONFIG_NETFILTER_XT_TARGET_CONNSECMARK=y
CONFIG_NETFILTER_XT_TARGET_HMARK=y
CONFIG_NETFILTER_XT_TARGET_IDLETIMER=y
# CONFIG_NETFILTER_XT_TARGET_LED is not set
CONFIG_NETFILTER_XT_TARGET_LOG=y
CONFIG_NETFILTER_XT_TARGET_MARK=y
# CONFIG_NETFILTER_XT_TARGET_NFLOG is not set
CONFIG_NETFILTER_XT_TARGET_NFQUEUE=y
CONFIG_NETFILTER_XT_TARGET_RATEEST=y
# CONFIG_NETFILTER_XT_TARGET_TEE is not set
# CONFIG_NETFILTER_XT_TARGET_SECMARK is not set
CONFIG_NETFILTER_XT_TARGET_TCPMSS=y

#
# Xtables matches
#
CONFIG_NETFILTER_XT_MATCH_ADDRTYPE=y
CONFIG_NETFILTER_XT_MATCH_BPF=y
CONFIG_NETFILTER_XT_MATCH_CGROUP=y
CONFIG_NETFILTER_XT_MATCH_CLUSTER=y
CONFIG_NETFILTER_XT_MATCH_COMMENT=y
CONFIG_NETFILTER_XT_MATCH_CONNBYTES=y
CONFIG_NETFILTER_XT_MATCH_CONNLABEL=y
CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=y
CONFIG_NETFILTER_XT_MATCH_CONNMARK=y
CONFIG_NETFILTER_XT_MATCH_CONNTRACK=y
CONFIG_NETFILTER_XT_MATCH_CPU=y
CONFIG_NETFILTER_XT_MATCH_DCCP=y
CONFIG_NETFILTER_XT_MATCH_DEVGROUP=y
CONFIG_NETFILTER_XT_MATCH_DSCP=y
# CONFIG_NETFILTER_XT_MATCH_ECN is not set
CONFIG_NETFILTER_XT_MATCH_ESP=y
CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=y
# CONFIG_NETFILTER_XT_MATCH_HELPER is not set
# CONFIG_NETFILTER_XT_MATCH_HL is not set
CONFIG_NETFILTER_XT_MATCH_IPCOMP=y
# CONFIG_NETFILTER_XT_MATCH_IPRANGE is not set
CONFIG_NETFILTER_XT_MATCH_IPVS=y
CONFIG_NETFILTER_XT_MATCH_L2TP=y
CONFIG_NETFILTER_XT_MATCH_LENGTH=y
CONFIG_NETFILTER_XT_MATCH_LIMIT=y
# CONFIG_NETFILTER_XT_MATCH_MAC is not set
# CONFIG_NETFILTER_XT_MATCH_MARK is not set
# CONFIG_NETFILTER_XT_MATCH_MULTIPORT is not set
CONFIG_NETFILTER_XT_MATCH_NFACCT=y
# CONFIG_NETFILTER_XT_MATCH_OSF is not set
CONFIG_NETFILTER_XT_MATCH_OWNER=y
CONFIG_NETFILTER_XT_MATCH_POLICY=y
CONFIG_NETFILTER_XT_MATCH_PHYSDEV=y
CONFIG_NETFILTER_XT_MATCH_PKTTYPE=y
CONFIG_NETFILTER_XT_MATCH_QUOTA=y
CONFIG_NETFILTER_XT_MATCH_RATEEST=y
CONFIG_NETFILTER_XT_MATCH_REALM=y
CONFIG_NETFILTER_XT_MATCH_RECENT=y
CONFIG_NETFILTER_XT_MATCH_SCTP=y
# CONFIG_NETFILTER_XT_MATCH_SOCKET is not set
# CONFIG_NETFILTER_XT_MATCH_STATE is not set
CONFIG_NETFILTER_XT_MATCH_STATISTIC=y
CONFIG_NETFILTER_XT_MATCH_STRING=y
# CONFIG_NETFILTER_XT_MATCH_TCPMSS is not set
# CONFIG_NETFILTER_XT_MATCH_TIME is not set
CONFIG_NETFILTER_XT_MATCH_U32=y
# end of Core Netfilter Configuration

# CONFIG_IP_SET is not set
CONFIG_IP_VS=y
# CONFIG_IP_VS_DEBUG is not set
CONFIG_IP_VS_TAB_BITS=12

#
# IPVS transport protocol load balancing support
#
CONFIG_IP_VS_PROTO_TCP=y
# CONFIG_IP_VS_PROTO_UDP is not set
CONFIG_IP_VS_PROTO_AH_ESP=y
CONFIG_IP_VS_PROTO_ESP=y
CONFIG_IP_VS_PROTO_AH=y
CONFIG_IP_VS_PROTO_SCTP=y

#
# IPVS scheduler
#
# CONFIG_IP_VS_RR is not set
CONFIG_IP_VS_WRR=y
# CONFIG_IP_VS_LC is not set
# CONFIG_IP_VS_WLC is not set
CONFIG_IP_VS_FO=y
# CONFIG_IP_VS_OVF is not set
CONFIG_IP_VS_LBLC=y
CONFIG_IP_VS_LBLCR=y
CONFIG_IP_VS_DH=y
# CONFIG_IP_VS_SH is not set
CONFIG_IP_VS_MH=y
# CONFIG_IP_VS_SED is not set
CONFIG_IP_VS_NQ=y
CONFIG_IP_VS_TWOS=y

#
# IPVS SH scheduler
#
CONFIG_IP_VS_SH_TAB_BITS=8

#
# IPVS MH scheduler
#
CONFIG_IP_VS_MH_TAB_INDEX=12

#
# IPVS application helper
#
# CONFIG_IP_VS_NFCT is not set

#
# IP: Netfilter Configuration
#
CONFIG_NF_DEFRAG_IPV4=y
CONFIG_NF_SOCKET_IPV4=y
CONFIG_NF_TPROXY_IPV4=y
CONFIG_NF_TABLES_IPV4=y
CONFIG_NFT_REJECT_IPV4=y
CONFIG_NFT_DUP_IPV4=y
CONFIG_NFT_FIB_IPV4=y
# CONFIG_NF_TABLES_ARP is not set
CONFIG_NF_DUP_IPV4=y
CONFIG_NF_LOG_ARP=y
# CONFIG_NF_LOG_IPV4 is not set
CONFIG_NF_REJECT_IPV4=y
# CONFIG_IP_NF_IPTABLES is not set
CONFIG_IP_NF_ARPTABLES=y
# CONFIG_IP_NF_ARPFILTER is not set
# CONFIG_IP_NF_ARP_MANGLE is not set
# end of IP: Netfilter Configuration

CONFIG_NF_TABLES_BRIDGE=y
CONFIG_NFT_BRIDGE_META=y
CONFIG_NF_CONNTRACK_BRIDGE=y
CONFIG_BRIDGE_NF_EBTABLES=y
CONFIG_BRIDGE_EBT_BROUTE=y
# CONFIG_BRIDGE_EBT_T_FILTER is not set
CONFIG_BRIDGE_EBT_T_NAT=y
# CONFIG_BRIDGE_EBT_802_3 is not set
# CONFIG_BRIDGE_EBT_AMONG is not set
CONFIG_BRIDGE_EBT_ARP=y
# CONFIG_BRIDGE_EBT_IP is not set
# CONFIG_BRIDGE_EBT_LIMIT is not set
CONFIG_BRIDGE_EBT_MARK=y
CONFIG_BRIDGE_EBT_PKTTYPE=y
CONFIG_BRIDGE_EBT_STP=y
CONFIG_BRIDGE_EBT_VLAN=y
CONFIG_BRIDGE_EBT_ARPREPLY=y
CONFIG_BRIDGE_EBT_DNAT=y
# CONFIG_BRIDGE_EBT_MARK_T is not set
# CONFIG_BRIDGE_EBT_REDIRECT is not set
CONFIG_BRIDGE_EBT_SNAT=y
CONFIG_BRIDGE_EBT_LOG=y
CONFIG_BRIDGE_EBT_NFLOG=y
CONFIG_IP_DCCP=y
CONFIG_INET_DCCP_DIAG=y

#
# DCCP CCIDs Configuration
#
CONFIG_IP_DCCP_CCID2_DEBUG=y
CONFIG_IP_DCCP_CCID3=y
CONFIG_IP_DCCP_CCID3_DEBUG=y
CONFIG_IP_DCCP_TFRC_LIB=y
CONFIG_IP_DCCP_TFRC_DEBUG=y
# end of DCCP CCIDs Configuration

#
# DCCP Kernel Hacking
#
CONFIG_IP_DCCP_DEBUG=y
# end of DCCP Kernel Hacking

CONFIG_IP_SCTP=y
CONFIG_SCTP_DBG_OBJCNT=y
CONFIG_SCTP_DEFAULT_COOKIE_HMAC_MD5=y
# CONFIG_SCTP_DEFAULT_COOKIE_HMAC_SHA1 is not set
# CONFIG_SCTP_DEFAULT_COOKIE_HMAC_NONE is not set
CONFIG_SCTP_COOKIE_HMAC_MD5=y
CONFIG_SCTP_COOKIE_HMAC_SHA1=y
CONFIG_INET_SCTP_DIAG=y
CONFIG_RDS=y
# CONFIG_RDS_RDMA is not set
# CONFIG_RDS_TCP is not set
# CONFIG_RDS_DEBUG is not set
CONFIG_TIPC=y
# CONFIG_TIPC_MEDIA_IB is not set
CONFIG_TIPC_MEDIA_UDP=y
# CONFIG_TIPC_CRYPTO is not set
CONFIG_TIPC_DIAG=y
# CONFIG_ATM is not set
# CONFIG_L2TP is not set
CONFIG_STP=y
CONFIG_BRIDGE=y
CONFIG_BRIDGE_IGMP_SNOOPING=y
CONFIG_BRIDGE_MRP=y
# CONFIG_BRIDGE_CFM is not set
CONFIG_NET_DSA=y
CONFIG_NET_DSA_TAG_NONE=y
CONFIG_NET_DSA_TAG_AR9331=y
CONFIG_NET_DSA_TAG_BRCM_COMMON=y
CONFIG_NET_DSA_TAG_BRCM=y
CONFIG_NET_DSA_TAG_BRCM_LEGACY=y
CONFIG_NET_DSA_TAG_BRCM_PREPEND=y
CONFIG_NET_DSA_TAG_HELLCREEK=y
CONFIG_NET_DSA_TAG_GSWIP=y
CONFIG_NET_DSA_TAG_DSA_COMMON=y
CONFIG_NET_DSA_TAG_DSA=y
CONFIG_NET_DSA_TAG_EDSA=y
CONFIG_NET_DSA_TAG_MTK=y
# CONFIG_NET_DSA_TAG_KSZ is not set
CONFIG_NET_DSA_TAG_OCELOT=y
CONFIG_NET_DSA_TAG_OCELOT_8021Q=y
CONFIG_NET_DSA_TAG_QCA=y
CONFIG_NET_DSA_TAG_RTL4_A=y
CONFIG_NET_DSA_TAG_RTL8_4=y
# CONFIG_NET_DSA_TAG_RZN1_A5PSW is not set
CONFIG_NET_DSA_TAG_LAN9303=y
# CONFIG_NET_DSA_TAG_SJA1105 is not set
# CONFIG_NET_DSA_TAG_TRAILER is not set
CONFIG_NET_DSA_TAG_XRS700X=y
# CONFIG_VLAN_8021Q is not set
CONFIG_LLC=y
# CONFIG_LLC2 is not set
CONFIG_ATALK=y
CONFIG_X25=y
# CONFIG_LAPB is not set
CONFIG_PHONET=y
# CONFIG_IEEE802154 is not set
CONFIG_NET_SCHED=y

#
# Queueing/Scheduling
#
# CONFIG_NET_SCH_HTB is not set
# CONFIG_NET_SCH_HFSC is not set
CONFIG_NET_SCH_PRIO=y
CONFIG_NET_SCH_MULTIQ=y
CONFIG_NET_SCH_RED=y
# CONFIG_NET_SCH_SFB is not set
# CONFIG_NET_SCH_SFQ is not set
CONFIG_NET_SCH_TEQL=y
CONFIG_NET_SCH_TBF=y
# CONFIG_NET_SCH_CBS is not set
# CONFIG_NET_SCH_ETF is not set
# CONFIG_NET_SCH_TAPRIO is not set
# CONFIG_NET_SCH_GRED is not set
CONFIG_NET_SCH_NETEM=y
# CONFIG_NET_SCH_DRR is not set
# CONFIG_NET_SCH_MQPRIO is not set
# CONFIG_NET_SCH_SKBPRIO is not set
# CONFIG_NET_SCH_CHOKE is not set
CONFIG_NET_SCH_QFQ=y
CONFIG_NET_SCH_CODEL=y
CONFIG_NET_SCH_FQ_CODEL=y
CONFIG_NET_SCH_CAKE=y
CONFIG_NET_SCH_FQ=y
# CONFIG_NET_SCH_HHF is not set
# CONFIG_NET_SCH_PIE is not set
# CONFIG_NET_SCH_INGRESS is not set
CONFIG_NET_SCH_PLUG=y
CONFIG_NET_SCH_ETS=y
# CONFIG_NET_SCH_DEFAULT is not set

#
# Classification
#
CONFIG_NET_CLS=y
# CONFIG_NET_CLS_BASIC is not set
CONFIG_NET_CLS_ROUTE4=y
# CONFIG_NET_CLS_FW is not set
CONFIG_NET_CLS_U32=y
CONFIG_CLS_U32_PERF=y
CONFIG_CLS_U32_MARK=y
# CONFIG_NET_CLS_FLOW is not set
CONFIG_NET_CLS_CGROUP=y
CONFIG_NET_CLS_BPF=y
CONFIG_NET_CLS_FLOWER=y
CONFIG_NET_CLS_MATCHALL=y
# CONFIG_NET_EMATCH is not set
CONFIG_NET_CLS_ACT=y
CONFIG_NET_ACT_POLICE=y
# CONFIG_NET_ACT_GACT is not set
CONFIG_NET_ACT_MIRRED=y
CONFIG_NET_ACT_SAMPLE=y
# CONFIG_NET_ACT_IPT is not set
# CONFIG_NET_ACT_NAT is not set
# CONFIG_NET_ACT_PEDIT is not set
CONFIG_NET_ACT_SIMP=y
# CONFIG_NET_ACT_SKBEDIT is not set
CONFIG_NET_ACT_CSUM=y
CONFIG_NET_ACT_MPLS=y
# CONFIG_NET_ACT_VLAN is not set
# CONFIG_NET_ACT_BPF is not set
CONFIG_NET_ACT_CONNMARK=y
CONFIG_NET_ACT_CTINFO=y
CONFIG_NET_ACT_SKBMOD=y
CONFIG_NET_ACT_IFE=y
CONFIG_NET_ACT_TUNNEL_KEY=y
CONFIG_NET_ACT_CT=y
CONFIG_NET_ACT_GATE=y
# CONFIG_NET_IFE_SKBMARK is not set
# CONFIG_NET_IFE_SKBPRIO is not set
CONFIG_NET_IFE_SKBTCINDEX=y
CONFIG_NET_TC_SKB_EXT=y
CONFIG_NET_SCH_FIFO=y
CONFIG_DCB=y
CONFIG_DNS_RESOLVER=y
CONFIG_BATMAN_ADV=y
CONFIG_BATMAN_ADV_BATMAN_V=y
# CONFIG_BATMAN_ADV_BLA is not set
CONFIG_BATMAN_ADV_DAT=y
# CONFIG_BATMAN_ADV_NC is not set
CONFIG_BATMAN_ADV_MCAST=y
# CONFIG_BATMAN_ADV_DEBUG is not set
CONFIG_BATMAN_ADV_TRACING=y
CONFIG_OPENVSWITCH=y
CONFIG_VSOCKETS=y
# CONFIG_VSOCKETS_DIAG is not set
# CONFIG_VSOCKETS_LOOPBACK is not set
# CONFIG_VMWARE_VMCI_VSOCKETS is not set
# CONFIG_VIRTIO_VSOCKETS is not set
# CONFIG_NETLINK_DIAG is not set
CONFIG_MPLS=y
CONFIG_NET_MPLS_GSO=y
CONFIG_MPLS_ROUTING=y
# CONFIG_MPLS_IPTUNNEL is not set
CONFIG_NET_NSH=y
CONFIG_HSR=y
CONFIG_NET_SWITCHDEV=y
# CONFIG_NET_L3_MASTER_DEV is not set
CONFIG_QRTR=y
CONFIG_QRTR_SMD=y
CONFIG_QRTR_TUN=y
CONFIG_NET_NCSI=y
# CONFIG_NCSI_OEM_CMD_GET_MAC is not set
# CONFIG_NCSI_OEM_CMD_KEEP_PHY is not set
CONFIG_PCPU_DEV_REFCNT=y
CONFIG_MAX_SKB_FRAGS=17
CONFIG_RPS=y
CONFIG_RFS_ACCEL=y
CONFIG_SOCK_RX_QUEUE_MAPPING=y
CONFIG_XPS=y
# CONFIG_CGROUP_NET_PRIO is not set
CONFIG_CGROUP_NET_CLASSID=y
CONFIG_NET_RX_BUSY_POLL=y
CONFIG_BQL=y
CONFIG_NET_FLOW_LIMIT=y

#
# Network testing
#
CONFIG_NET_PKTGEN=y
CONFIG_NET_DROP_MONITOR=y
# end of Network testing
# end of Networking options

# CONFIG_HAMRADIO is not set
# CONFIG_CAN is not set
CONFIG_BT=y
# CONFIG_BT_BREDR is not set
# CONFIG_BT_LE is not set
# CONFIG_BT_LEDS is not set
CONFIG_BT_MSFTEXT=y
CONFIG_BT_AOSPEXT=y
# CONFIG_BT_DEBUGFS is not set
CONFIG_BT_SELFTEST=y

#
# Bluetooth device drivers
#
CONFIG_BT_MTK=y
# CONFIG_BT_HCIUART is not set
# CONFIG_BT_HCIBCM4377 is not set
CONFIG_BT_HCIDTL1=y
# CONFIG_BT_HCIBT3C is not set
# CONFIG_BT_HCIBLUECARD is not set
# CONFIG_BT_HCIVHCI is not set
# CONFIG_BT_MRVL is not set
CONFIG_BT_MTKUART=y
# CONFIG_BT_QCOMSMD is not set
# CONFIG_BT_VIRTIO is not set
# CONFIG_BT_NXPUART is not set
# end of Bluetooth device drivers

CONFIG_AF_RXRPC=y
# CONFIG_AF_RXRPC_INJECT_LOSS is not set
# CONFIG_AF_RXRPC_INJECT_RX_DELAY is not set
CONFIG_AF_RXRPC_DEBUG=y
# CONFIG_RXKAD is not set
CONFIG_RXPERF=y
# CONFIG_AF_KCM is not set
CONFIG_STREAM_PARSER=y
CONFIG_MCTP=y
CONFIG_MCTP_FLOWS=y
CONFIG_WIRELESS=y
# CONFIG_CFG80211 is not set

#
# CFG80211 needs to be enabled for MAC80211
#
CONFIG_MAC80211_STA_HASH_MAX_SIZE=0
# CONFIG_RFKILL is not set
CONFIG_NET_9P=y
CONFIG_NET_9P_FD=y
CONFIG_NET_9P_VIRTIO=y
CONFIG_NET_9P_RDMA=y
CONFIG_NET_9P_DEBUG=y
# CONFIG_CAIF is not set
CONFIG_CEPH_LIB=y
# CONFIG_CEPH_LIB_PRETTYDEBUG is not set
CONFIG_CEPH_LIB_USE_DNS_RESOLVER=y
CONFIG_NFC=y
# CONFIG_NFC_DIGITAL is not set
# CONFIG_NFC_NCI is not set
CONFIG_NFC_HCI=y
CONFIG_NFC_SHDLC=y

#
# Near Field Communication (NFC) devices
#
CONFIG_NFC_MEI_PHY=y
# CONFIG_NFC_PN544_I2C is not set
# CONFIG_NFC_PN544_MEI is not set
CONFIG_NFC_PN533=y
# CONFIG_NFC_PN533_I2C is not set
CONFIG_NFC_PN532_UART=y
CONFIG_NFC_MICROREAD=y
CONFIG_NFC_MICROREAD_I2C=y
CONFIG_NFC_MICROREAD_MEI=y
CONFIG_NFC_ST21NFCA=y
CONFIG_NFC_ST21NFCA_I2C=y
# end of Near Field Communication (NFC) devices

CONFIG_PSAMPLE=y
CONFIG_NET_IFE=y
CONFIG_LWTUNNEL=y
# CONFIG_LWTUNNEL_BPF is not set
CONFIG_DST_CACHE=y
CONFIG_GRO_CELLS=y
CONFIG_NET_SELFTESTS=y
CONFIG_NET_SOCK_MSG=y
CONFIG_NET_DEVLINK=y
CONFIG_PAGE_POOL=y
# CONFIG_PAGE_POOL_STATS is not set
CONFIG_FAILOVER=y
# CONFIG_ETHTOOL_NETLINK is not set

#
# Device Drivers
#
CONFIG_HAVE_EISA=y
CONFIG_EISA=y
CONFIG_EISA_VLB_PRIMING=y
CONFIG_EISA_PCI_EISA=y
# CONFIG_EISA_VIRTUAL_ROOT is not set
CONFIG_EISA_NAMES=y
CONFIG_HAVE_PCI=y
CONFIG_PCI=y
CONFIG_PCI_DOMAINS=y
# CONFIG_PCIEPORTBUS is not set
CONFIG_PCIEASPM=y
CONFIG_PCIEASPM_DEFAULT=y
# CONFIG_PCIEASPM_POWERSAVE is not set
# CONFIG_PCIEASPM_POWER_SUPERSAVE is not set
# CONFIG_PCIEASPM_PERFORMANCE is not set
CONFIG_PCIE_PTM=y
# CONFIG_PCI_MSI is not set
CONFIG_PCI_QUIRKS=y
# CONFIG_PCI_DEBUG is not set
CONFIG_PCI_REALLOC_ENABLE_AUTO=y
CONFIG_PCI_STUB=y
# CONFIG_PCI_PF_STUB is not set
CONFIG_PCI_ATS=y
CONFIG_PCI_DOE=y
CONFIG_PCI_ECAM=y
CONFIG_PCI_LOCKLESS_CONFIG=y
CONFIG_PCI_IOV=y
# CONFIG_PCI_PRI is not set
# CONFIG_PCI_PASID is not set
CONFIG_PCI_LABEL=y
CONFIG_VGA_ARB=y
CONFIG_VGA_ARB_MAX_GPUS=16
# CONFIG_HOTPLUG_PCI is not set

#
# PCI controller drivers
#
CONFIG_PCIE_ALTERA=y
# CONFIG_PCI_VERSATILE is not set
CONFIG_PCI_HOST_COMMON=y
# CONFIG_PCIE_MT7621 is not set
CONFIG_PCIE_XILINX_CPM=y

#
# Cadence-based PCIe controllers
#
# end of Cadence-based PCIe controllers

#
# DesignWare-based PCIe controllers
#
# end of DesignWare-based PCIe controllers

#
# Mobiveil-based PCIe controllers
#
# end of Mobiveil-based PCIe controllers
# end of PCI controller drivers

#
# PCI Endpoint
#
# CONFIG_PCI_ENDPOINT is not set
# end of PCI Endpoint

#
# PCI switch controller drivers
#
CONFIG_PCI_SW_SWITCHTEC=y
# end of PCI switch controller drivers

CONFIG_CXL_BUS=y
CONFIG_CXL_PCI=y
# CONFIG_CXL_MEM_RAW_COMMANDS is not set
CONFIG_CXL_MEM=y
CONFIG_CXL_PORT=y
CONFIG_CXL_REGION=y
CONFIG_CXL_REGION_INVALIDATION_TEST=y
CONFIG_CXL_PMU=y
CONFIG_PCCARD=y
CONFIG_PCMCIA=y
# CONFIG_PCMCIA_LOAD_CIS is not set
CONFIG_CARDBUS=y

#
# PC-card bridges
#
CONFIG_YENTA=y
CONFIG_YENTA_O2=y
CONFIG_YENTA_RICOH=y
CONFIG_YENTA_TI=y
CONFIG_YENTA_ENE_TUNE=y
CONFIG_YENTA_TOSHIBA=y
CONFIG_PD6729=y
CONFIG_I82092=y
CONFIG_PCCARD_NONSTATIC=y
# CONFIG_RAPIDIO is not set

#
# Generic Driver Options
#
CONFIG_AUXILIARY_BUS=y
CONFIG_UEVENT_HELPER=y
CONFIG_UEVENT_HELPER_PATH=""
CONFIG_DEVTMPFS=y
CONFIG_DEVTMPFS_MOUNT=y
# CONFIG_DEVTMPFS_SAFE is not set
# CONFIG_STANDALONE is not set
# CONFIG_PREVENT_FIRMWARE_BUILD is not set

#
# Firmware loader
#
CONFIG_FW_LOADER=y
# CONFIG_FW_LOADER_DEBUG is not set
CONFIG_FW_LOADER_PAGED_BUF=y
CONFIG_FW_LOADER_SYSFS=y
CONFIG_EXTRA_FIRMWARE=""
# CONFIG_FW_LOADER_USER_HELPER is not set
# CONFIG_FW_LOADER_COMPRESS is not set
CONFIG_FW_UPLOAD=y
# end of Firmware loader

CONFIG_ALLOW_DEV_COREDUMP=y
# CONFIG_DEBUG_DRIVER is not set
# CONFIG_DEBUG_DEVRES is not set
CONFIG_DEBUG_TEST_DRIVER_REMOVE=y
CONFIG_GENERIC_CPU_DEVICES=y
CONFIG_GENERIC_CPU_AUTOPROBE=y
CONFIG_GENERIC_CPU_VULNERABILITIES=y
CONFIG_SOC_BUS=y
CONFIG_REGMAP=y
CONFIG_REGMAP_I2C=y
CONFIG_REGMAP_SLIMBUS=y
CONFIG_REGMAP_SPMI=y
CONFIG_REGMAP_W1=y
CONFIG_REGMAP_MMIO=y
CONFIG_REGMAP_IRQ=y
CONFIG_REGMAP_I3C=y
CONFIG_DMA_SHARED_BUFFER=y
CONFIG_DMA_FENCE_TRACE=y
# CONFIG_FW_DEVLINK_SYNC_STATE_TIMEOUT is not set
# end of Generic Driver Options

#
# Bus devices
#
# CONFIG_ARM_INTEGRATOR_LM is not set
CONFIG_BT1_APB=y
CONFIG_BT1_AXI=y
# CONFIG_HISILICON_LPC is not set
# CONFIG_INTEL_IXP4XX_EB is not set
CONFIG_QCOM_EBI2=y
# CONFIG_MHI_BUS is not set
CONFIG_MHI_BUS_EP=y
# end of Bus devices

#
# Cache Drivers
#
# end of Cache Drivers

CONFIG_CONNECTOR=y
# CONFIG_PROC_EVENTS is not set

#
# Firmware Drivers
#

#
# ARM System Control and Management Interface Protocol
#
CONFIG_ARM_SCMI_PROTOCOL=y
CONFIG_ARM_SCMI_NEED_DEBUGFS=y
CONFIG_ARM_SCMI_RAW_MODE_SUPPORT=y
CONFIG_ARM_SCMI_RAW_MODE_SUPPORT_COEX=y
# CONFIG_ARM_SCMI_TRANSPORT_MAILBOX is not set
# CONFIG_ARM_SCMI_TRANSPORT_VIRTIO is not set
CONFIG_ARM_SCMI_POWER_CONTROL=y
# end of ARM System Control and Management Interface Protocol

CONFIG_ARM_SCPI_PROTOCOL=y
CONFIG_EDD=y
CONFIG_EDD_OFF=y
CONFIG_FIRMWARE_MEMMAP=y
CONFIG_DMIID=y
CONFIG_DMI_SYSFS=y
CONFIG_DMI_SCAN_MACHINE_NON_EFI_FALLBACK=y
CONFIG_FW_CFG_SYSFS=y
CONFIG_FW_CFG_SYSFS_CMDLINE=y
CONFIG_SYSFB=y
CONFIG_SYSFB_SIMPLEFB=y
# CONFIG_BCM47XX_NVRAM is not set
CONFIG_TEE_BNXT_FW=y
# CONFIG_GOOGLE_FIRMWARE is not set
CONFIG_POLARFIRE_SOC_AUTO_UPDATE=y

#
# Qualcomm firmware drivers
#
CONFIG_QCOM_SCM=y
CONFIG_QCOM_SCM_DOWNLOAD_MODE_DEFAULT=y
# CONFIG_QCOM_QSEECOM is not set
# end of Qualcomm firmware drivers

#
# Tegra firmware driver
#
# end of Tegra firmware driver
# end of Firmware Drivers

CONFIG_GNSS=y
CONFIG_GNSS_SERIAL=y
# CONFIG_GNSS_MTK_SERIAL is not set
# CONFIG_GNSS_SIRF_SERIAL is not set
CONFIG_GNSS_UBX_SERIAL=y
CONFIG_MTD=y

#
# Partition parsers
#
CONFIG_MTD_BCM63XX_PARTS=y
CONFIG_MTD_BRCM_U_BOOT=y
CONFIG_MTD_CMDLINE_PARTS=y
CONFIG_MTD_PARSER_IMAGETAG=y
CONFIG_MTD_PARSER_TPLINK_SAFELOADER=y
# CONFIG_MTD_PARSER_TRX is not set
CONFIG_MTD_SHARPSL_PARTS=y
# CONFIG_MTD_REDBOOT_PARTS is not set
# end of Partition parsers

#
# User Modules And Translation Layers
#
CONFIG_MTD_BLKDEVS=y
CONFIG_MTD_BLOCK=y

#
# Note that in some cases UBI block is preferred. See MTD_UBI_BLOCK.
#
CONFIG_FTL=y
# CONFIG_NFTL is not set
CONFIG_INFTL=y
CONFIG_RFD_FTL=y
# CONFIG_SSFDC is not set
CONFIG_SM_FTL=y
CONFIG_MTD_OOPS=y
CONFIG_MTD_SWAP=y
CONFIG_MTD_PARTITIONED_MASTER=y

#
# RAM/ROM/Flash chip drivers
#
CONFIG_MTD_CFI=y
CONFIG_MTD_JEDECPROBE=y
CONFIG_MTD_GEN_PROBE=y
# CONFIG_MTD_CFI_ADV_OPTIONS is not set
CONFIG_MTD_MAP_BANK_WIDTH_1=y
CONFIG_MTD_MAP_BANK_WIDTH_2=y
CONFIG_MTD_MAP_BANK_WIDTH_4=y
CONFIG_MTD_CFI_I1=y
CONFIG_MTD_CFI_I2=y
CONFIG_MTD_CFI_INTELEXT=y
CONFIG_MTD_CFI_AMDSTD=y
CONFIG_MTD_CFI_STAA=y
CONFIG_MTD_CFI_UTIL=y
CONFIG_MTD_RAM=y
CONFIG_MTD_ROM=y
# CONFIG_MTD_ABSENT is not set
# end of RAM/ROM/Flash chip drivers

#
# Mapping drivers for chip access
#
CONFIG_MTD_COMPLEX_MAPPINGS=y
CONFIG_MTD_PHYSMAP=y
CONFIG_MTD_PHYSMAP_COMPAT=y
CONFIG_MTD_PHYSMAP_START=0x8000000
CONFIG_MTD_PHYSMAP_LEN=0
CONFIG_MTD_PHYSMAP_BANKWIDTH=2
# CONFIG_MTD_PHYSMAP_GPIO_ADDR is not set
CONFIG_MTD_SC520CDP=y
CONFIG_MTD_NETSC520=y
CONFIG_MTD_TS5500=y
CONFIG_MTD_SBC_GXX=y
# CONFIG_MTD_AMD76XROM is not set
# CONFIG_MTD_ICHXROM is not set
CONFIG_MTD_ESB2ROM=y
CONFIG_MTD_CK804XROM=y
CONFIG_MTD_SCB2_FLASH=y
# CONFIG_MTD_NETtel is not set
# CONFIG_MTD_L440GX is not set
CONFIG_MTD_PCI=y
CONFIG_MTD_PCMCIA=y
CONFIG_MTD_PCMCIA_ANONYMOUS=y
CONFIG_MTD_INTEL_VR_NOR=y
CONFIG_MTD_PLATRAM=y
# end of Mapping drivers for chip access

#
# Self-contained MTD device drivers
#
CONFIG_MTD_PMC551=y
# CONFIG_MTD_PMC551_BUGFIX is not set
# CONFIG_MTD_PMC551_DEBUG is not set
CONFIG_MTD_SPEAR_SMI=y
# CONFIG_MTD_SLRAM is not set
CONFIG_MTD_PHRAM=y
CONFIG_MTD_MTDRAM=y
CONFIG_MTDRAM_TOTAL_SIZE=4096
CONFIG_MTDRAM_ERASE_SIZE=128
CONFIG_MTD_BLOCK2MTD=y

#
# Disk-On-Chip Device Drivers
#
CONFIG_MTD_DOCG3=y
CONFIG_BCH_CONST_M=14
CONFIG_BCH_CONST_T=4
# end of Self-contained MTD device drivers

#
# NAND
#
CONFIG_MTD_NAND_CORE=y
# CONFIG_MTD_ONENAND is not set
CONFIG_MTD_RAW_NAND=y

#
# Raw/parallel NAND flash controllers
#
CONFIG_MTD_NAND_DENALI=y
CONFIG_MTD_NAND_DENALI_PCI=y
CONFIG_MTD_NAND_AMS_DELTA=y
# CONFIG_MTD_NAND_SHARPSL is not set
# CONFIG_MTD_NAND_CAFE is not set
# CONFIG_MTD_NAND_ATMEL is not set
CONFIG_MTD_NAND_MARVELL=y
CONFIG_MTD_NAND_SLC_LPC32XX=y
CONFIG_MTD_NAND_MLC_LPC32XX=y
CONFIG_MTD_NAND_BRCMNAND=y
CONFIG_MTD_NAND_BRCMNAND_BCM63XX=y
# CONFIG_MTD_NAND_BRCMNAND_BCMA is not set
# CONFIG_MTD_NAND_BRCMNAND_BCMBCA is not set
CONFIG_MTD_NAND_BRCMNAND_BRCMSTB=y
# CONFIG_MTD_NAND_BRCMNAND_IPROC is not set
CONFIG_MTD_NAND_BCM47XXNFLASH=y
CONFIG_MTD_NAND_FSL_IFC=y
CONFIG_MTD_NAND_VF610_NFC=y
CONFIG_MTD_NAND_SH_FLCTL=y
# CONFIG_MTD_NAND_DAVINCI is not set
# CONFIG_MTD_NAND_TXX9NDFMC is not set
# CONFIG_MTD_NAND_SUNXI is not set
CONFIG_MTD_NAND_HISI504=y
CONFIG_MTD_NAND_QCOM=y
CONFIG_MTD_NAND_MXIC=y
CONFIG_MTD_NAND_TEGRA=y
CONFIG_MTD_NAND_STM32_FMC2=y
CONFIG_MTD_NAND_GPIO=y
# CONFIG_MTD_NAND_PLATFORM is not set
CONFIG_MTD_NAND_ARASAN=y
CONFIG_MTD_NAND_RENESAS=y

#
# Misc
#
CONFIG_MTD_SM_COMMON=y
# CONFIG_MTD_NAND_NANDSIM is not set
CONFIG_MTD_NAND_RICOH=y
CONFIG_MTD_NAND_DISKONCHIP=y
CONFIG_MTD_NAND_DISKONCHIP_PROBE_ADVANCED=y
CONFIG_MTD_NAND_DISKONCHIP_PROBE_ADDRESS=0
CONFIG_MTD_NAND_DISKONCHIP_PROBE_HIGH=y
CONFIG_MTD_NAND_DISKONCHIP_BBTWRITE=y

#
# ECC engine support
#
CONFIG_MTD_NAND_ECC=y
CONFIG_MTD_NAND_ECC_SW_HAMMING=y
CONFIG_MTD_NAND_ECC_SW_HAMMING_SMC=y
CONFIG_MTD_NAND_ECC_SW_BCH=y
CONFIG_MTD_NAND_ECC_MXIC=y
# CONFIG_MTD_NAND_ECC_MEDIATEK is not set
# end of ECC engine support
# end of NAND

#
# LPDDR & LPDDR2 PCM memory drivers
#
# CONFIG_MTD_LPDDR is not set
# end of LPDDR & LPDDR2 PCM memory drivers

CONFIG_MTD_UBI=y
CONFIG_MTD_UBI_WL_THRESHOLD=4096
CONFIG_MTD_UBI_BEB_LIMIT=20
CONFIG_MTD_UBI_FASTMAP=y
CONFIG_MTD_UBI_GLUEBI=y
# CONFIG_MTD_UBI_BLOCK is not set
# CONFIG_MTD_UBI_FAULT_INJECTION is not set
CONFIG_MTD_HYPERBUS=y
CONFIG_HBMC_AM654=y
# CONFIG_OF is not set
CONFIG_ARCH_MIGHT_HAVE_PC_PARPORT=y
CONFIG_PARPORT=y
CONFIG_PARPORT_PC=y
CONFIG_PARPORT_SERIAL=y
# CONFIG_PARPORT_PC_FIFO is not set
CONFIG_PARPORT_PC_SUPERIO=y
CONFIG_PARPORT_PC_PCMCIA=y
CONFIG_PARPORT_1284=y
# CONFIG_BLK_DEV is not set

#
# NVME Support
#
CONFIG_NVME_AUTH=y
CONFIG_NVME_CORE=y
CONFIG_BLK_DEV_NVME=y
CONFIG_NVME_MULTIPATH=y
CONFIG_NVME_VERBOSE_ERRORS=y
# CONFIG_NVME_HWMON is not set
CONFIG_NVME_FABRICS=y
# CONFIG_NVME_RDMA is not set
CONFIG_NVME_FC=y
CONFIG_NVME_TCP=y
# CONFIG_NVME_TCP_TLS is not set
CONFIG_NVME_HOST_AUTH=y
CONFIG_NVME_TARGET=y
CONFIG_NVME_TARGET_PASSTHRU=y
# CONFIG_NVME_TARGET_LOOP is not set
CONFIG_NVME_TARGET_RDMA=y
CONFIG_NVME_TARGET_FC=y
CONFIG_NVME_TARGET_FCLOOP=y
# CONFIG_NVME_TARGET_TCP is not set
# CONFIG_NVME_TARGET_AUTH is not set
# end of NVME Support

#
# Misc devices
#
CONFIG_SENSORS_LIS3LV02D=y
CONFIG_AD525X_DPOT=y
# CONFIG_AD525X_DPOT_I2C is not set
CONFIG_DUMMY_IRQ=y
CONFIG_IBM_ASM=y
CONFIG_PHANTOM=y
CONFIG_TIFM_CORE=y
CONFIG_TIFM_7XX1=y
# CONFIG_ICS932S401 is not set
CONFIG_ATMEL_SSC=y
CONFIG_ENCLOSURE_SERVICES=y
CONFIG_SMPRO_ERRMON=y
# CONFIG_SMPRO_MISC is not set
# CONFIG_HP_ILO is not set
# CONFIG_QCOM_COINCELL is not set
# CONFIG_QCOM_FASTRPC is not set
CONFIG_APDS9802ALS=y
CONFIG_ISL29003=y
CONFIG_ISL29020=y
CONFIG_SENSORS_TSL2550=y
CONFIG_SENSORS_BH1770=y
# CONFIG_SENSORS_APDS990X is not set
CONFIG_HMC6352=y
CONFIG_DS1682=y
# CONFIG_PCH_PHUB is not set
# CONFIG_SRAM is not set
CONFIG_DW_XDATA_PCIE=y
CONFIG_PCI_ENDPOINT_TEST=y
CONFIG_XILINX_SDFEC=y
CONFIG_MISC_RTSX=y
CONFIG_TPS6594_ESM=y
CONFIG_TPS6594_PFSM=y
CONFIG_NSM=y
CONFIG_C2PORT=y
CONFIG_C2PORT_DURAMAR_2150=y

#
# EEPROM support
#
# CONFIG_EEPROM_AT24 is not set
CONFIG_EEPROM_MAX6875=y
CONFIG_EEPROM_93CX6=y
CONFIG_EEPROM_IDT_89HPESX=y
CONFIG_EEPROM_EE1004=y
# end of EEPROM support

# CONFIG_CB710_CORE is not set

#
# Texas Instruments shared transport line discipline
#
CONFIG_TI_ST=y
# end of Texas Instruments shared transport line discipline

CONFIG_SENSORS_LIS3_I2C=y
CONFIG_ALTERA_STAPL=y
CONFIG_INTEL_MEI=y
CONFIG_INTEL_MEI_ME=y
CONFIG_INTEL_MEI_TXE=y
CONFIG_VMWARE_VMCI=y
# CONFIG_GENWQE is not set
CONFIG_ECHO=y
CONFIG_MISC_ALCOR_PCI=y
CONFIG_MISC_RTSX_PCI=y
CONFIG_UACCE=y
# CONFIG_PVPANIC is not set
# end of Misc devices

#
# SCSI device support
#
CONFIG_SCSI_MOD=y
CONFIG_RAID_ATTRS=y
CONFIG_SCSI_COMMON=y
CONFIG_SCSI=y
CONFIG_SCSI_DMA=y
CONFIG_SCSI_PROC_FS=y

#
# SCSI support type (disk, tape, CD-ROM)
#
CONFIG_BLK_DEV_SD=y
CONFIG_CHR_DEV_ST=y
CONFIG_CHR_DEV_SG=y
CONFIG_BLK_DEV_BSG=y
# CONFIG_CHR_DEV_SCH is not set
# CONFIG_SCSI_ENCLOSURE is not set
# CONFIG_SCSI_CONSTANTS is not set
# CONFIG_SCSI_LOGGING is not set
CONFIG_SCSI_SCAN_ASYNC=y

#
# SCSI Transports
#
CONFIG_SCSI_SPI_ATTRS=y
# CONFIG_SCSI_FC_ATTRS is not set
CONFIG_SCSI_ISCSI_ATTRS=y
CONFIG_SCSI_SAS_ATTRS=y
CONFIG_SCSI_SAS_LIBSAS=y
CONFIG_SCSI_SAS_ATA=y
# CONFIG_SCSI_SAS_HOST_SMP is not set
CONFIG_SCSI_SRP_ATTRS=y
# end of SCSI Transports

CONFIG_SCSI_LOWLEVEL=y
CONFIG_ISCSI_TCP=y
CONFIG_ISCSI_BOOT_SYSFS=y
CONFIG_SCSI_CXGB3_ISCSI=y
CONFIG_SCSI_CXGB4_ISCSI=y
# CONFIG_SCSI_BNX2_ISCSI is not set
# CONFIG_BE2ISCSI is not set
# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
# CONFIG_SCSI_HPSA is not set
# CONFIG_SCSI_3W_9XXX is not set
# CONFIG_SCSI_3W_SAS is not set
# CONFIG_SCSI_ACARD is not set
# CONFIG_SCSI_AHA1740 is not set
CONFIG_SCSI_AACRAID=y
# CONFIG_SCSI_AIC7XXX is not set
# CONFIG_SCSI_AIC79XX is not set
CONFIG_SCSI_AIC94XX=y
CONFIG_AIC94XX_DEBUG=y
CONFIG_SCSI_HISI_SAS=y
# CONFIG_SCSI_HISI_SAS_DEBUGFS_DEFAULT_ENABLE is not set
CONFIG_SCSI_MVSAS=y
# CONFIG_SCSI_MVSAS_DEBUG is not set
# CONFIG_SCSI_MVSAS_TASKLET is not set
# CONFIG_SCSI_MVUMI is not set
CONFIG_SCSI_ADVANSYS=y
CONFIG_SCSI_ARCMSR=y
CONFIG_SCSI_ESAS2R=y
# CONFIG_MEGARAID_NEWGEN is not set
CONFIG_MEGARAID_LEGACY=y
# CONFIG_MEGARAID_SAS is not set
CONFIG_SCSI_MPT3SAS=y
CONFIG_SCSI_MPT2SAS_MAX_SGE=128
CONFIG_SCSI_MPT3SAS_MAX_SGE=128
CONFIG_SCSI_MPT2SAS=y
CONFIG_SCSI_MPI3MR=y
# CONFIG_SCSI_SMARTPQI is not set
# CONFIG_SCSI_HPTIOP is not set
CONFIG_SCSI_BUSLOGIC=y
CONFIG_SCSI_FLASHPOINT=y
CONFIG_SCSI_MYRB=y
# CONFIG_SCSI_MYRS is not set
CONFIG_VMWARE_PVSCSI=y
CONFIG_SCSI_SNIC=y
CONFIG_SCSI_SNIC_DEBUG_FS=y
CONFIG_SCSI_DMX3191D=y
# CONFIG_SCSI_FDOMAIN_PCI is not set
# CONFIG_SCSI_ISCI is not set
CONFIG_SCSI_IPS=y
CONFIG_SCSI_INITIO=y
CONFIG_SCSI_INIA100=y
# CONFIG_SCSI_PPA is not set
CONFIG_SCSI_IMM=y
# CONFIG_SCSI_IZIP_SLOW_CTR is not set
CONFIG_SCSI_STEX=y
# CONFIG_SCSI_SYM53C8XX_2 is not set
CONFIG_SCSI_IPR=y
CONFIG_SCSI_IPR_TRACE=y
CONFIG_SCSI_IPR_DUMP=y
# CONFIG_SCSI_QLOGIC_1280 is not set
CONFIG_SCSI_QLA_ISCSI=y
# CONFIG_SCSI_SIM710 is not set
CONFIG_SCSI_DC395x=y
# CONFIG_SCSI_AM53C974 is not set
CONFIG_SCSI_WD719X=y
CONFIG_SCSI_DEBUG=y
CONFIG_SCSI_PMCRAID=y
CONFIG_SCSI_PM8001=y
CONFIG_SCSI_VIRTIO=y
# CONFIG_SCSI_LOWLEVEL_PCMCIA is not set
CONFIG_SCSI_DH=y
CONFIG_SCSI_DH_RDAC=y
CONFIG_SCSI_DH_HP_SW=y
CONFIG_SCSI_DH_EMC=y
# CONFIG_SCSI_DH_ALUA is not set
# end of SCSI device support

CONFIG_ATA=y
CONFIG_SATA_HOST=y
CONFIG_PATA_TIMINGS=y
# CONFIG_ATA_VERBOSE_ERROR is not set
CONFIG_ATA_FORCE=y
# CONFIG_SATA_PMP is not set

#
# Controllers with non-SFF native interface
#
CONFIG_SATA_AHCI=y
CONFIG_SATA_MOBILE_LPM_POLICY=0
CONFIG_SATA_AHCI_PLATFORM=y
CONFIG_AHCI_BRCM=y
# CONFIG_AHCI_DA850 is not set
# CONFIG_AHCI_DM816 is not set
CONFIG_AHCI_DWC=y
# CONFIG_AHCI_ST is not set
# CONFIG_AHCI_IMX is not set
# CONFIG_AHCI_MTK is not set
CONFIG_AHCI_MVEBU=y
CONFIG_AHCI_SUNXI=y
CONFIG_AHCI_TEGRA=y
CONFIG_AHCI_XGENE=y
CONFIG_SATA_FSL=y
# CONFIG_SATA_GEMINI is not set
# CONFIG_SATA_AHCI_SEATTLE is not set
CONFIG_SATA_INIC162X=y
# CONFIG_SATA_ACARD_AHCI is not set
CONFIG_SATA_SIL24=y
CONFIG_ATA_SFF=y

#
# SFF controllers with custom DMA interface
#
CONFIG_PDC_ADMA=y
CONFIG_SATA_QSTOR=y
CONFIG_SATA_SX4=y
# CONFIG_ATA_BMDMA is not set

#
# PIO-only SFF controllers
#
# CONFIG_PATA_CMD640_PCI is not set
CONFIG_PATA_IXP4XX_CF=y
# CONFIG_PATA_MPIIX is not set
CONFIG_PATA_NS87410=y
# CONFIG_PATA_OPTI is not set
CONFIG_PATA_PCMCIA=y
# CONFIG_PATA_RZ1000 is not set
CONFIG_PATA_PARPORT=y

#
# Parallel IDE protocol modules
#
# CONFIG_PATA_PARPORT_ATEN is not set
# CONFIG_PATA_PARPORT_BPCK is not set
# CONFIG_PATA_PARPORT_BPCK6 is not set
CONFIG_PATA_PARPORT_COMM=y
CONFIG_PATA_PARPORT_DSTR=y
CONFIG_PATA_PARPORT_FIT2=y
# CONFIG_PATA_PARPORT_FIT3 is not set
CONFIG_PATA_PARPORT_EPAT=y
# CONFIG_PATA_PARPORT_EPATC8 is not set
CONFIG_PATA_PARPORT_EPIA=y
CONFIG_PATA_PARPORT_FRIQ=y
# CONFIG_PATA_PARPORT_FRPW is not set
CONFIG_PATA_PARPORT_KBIC=y
# CONFIG_PATA_PARPORT_KTTI is not set
# CONFIG_PATA_PARPORT_ON20 is not set
CONFIG_PATA_PARPORT_ON26=y

#
# Generic fallback / legacy drivers
#
CONFIG_PATA_LEGACY=y
CONFIG_MD=y
# CONFIG_BLK_DEV_MD is not set
CONFIG_MD_BITMAP_FILE=y
# CONFIG_BCACHE is not set
CONFIG_BLK_DEV_DM_BUILTIN=y
CONFIG_BLK_DEV_DM=y
# CONFIG_DM_DEBUG is not set
CONFIG_DM_BUFIO=y
# CONFIG_DM_DEBUG_BLOCK_MANAGER_LOCKING is not set
CONFIG_DM_BIO_PRISON=y
CONFIG_DM_PERSISTENT_DATA=y
CONFIG_DM_UNSTRIPED=y
CONFIG_DM_CRYPT=y
# CONFIG_DM_SNAPSHOT is not set
CONFIG_DM_THIN_PROVISIONING=y
CONFIG_DM_CACHE=y
# CONFIG_DM_CACHE_SMQ is not set
# CONFIG_DM_WRITECACHE is not set
# CONFIG_DM_EBS is not set
CONFIG_DM_ERA=y
CONFIG_DM_CLONE=y
CONFIG_DM_MIRROR=y
CONFIG_DM_LOG_USERSPACE=y
# CONFIG_DM_RAID is not set
# CONFIG_DM_ZERO is not set
CONFIG_DM_MULTIPATH=y
CONFIG_DM_MULTIPATH_QL=y
# CONFIG_DM_MULTIPATH_ST is not set
CONFIG_DM_MULTIPATH_HST=y
CONFIG_DM_MULTIPATH_IOA=y
CONFIG_DM_DELAY=y
# CONFIG_DM_DUST is not set
CONFIG_DM_INIT=y
CONFIG_DM_UEVENT=y
# CONFIG_DM_FLAKEY is not set
CONFIG_DM_VERITY=y
# CONFIG_DM_VERITY_VERIFY_ROOTHASH_SIG is not set
CONFIG_DM_VERITY_FEC=y
# CONFIG_DM_SWITCH is not set
CONFIG_DM_LOG_WRITES=y
CONFIG_DM_INTEGRITY=y
CONFIG_DM_ZONED=y
CONFIG_DM_AUDIT=y
CONFIG_TARGET_CORE=y
CONFIG_TCM_IBLOCK=y
# CONFIG_TCM_FILEIO is not set
# CONFIG_TCM_PSCSI is not set
CONFIG_TCM_USER2=y
CONFIG_LOOPBACK_TARGET=y
# CONFIG_ISCSI_TARGET is not set
CONFIG_SBP_TARGET=y
CONFIG_REMOTE_TARGET=y
# CONFIG_FUSION is not set

#
# IEEE 1394 (FireWire) support
#
CONFIG_FIREWIRE=y
# CONFIG_FIREWIRE_OHCI is not set
CONFIG_FIREWIRE_SBP2=y
CONFIG_FIREWIRE_NET=y
CONFIG_FIREWIRE_NOSY=y
# end of IEEE 1394 (FireWire) support

CONFIG_MACINTOSH_DRIVERS=y
CONFIG_MAC_EMUMOUSEBTN=y
CONFIG_NETDEVICES=y
CONFIG_MII=y
# CONFIG_NET_CORE is not set
CONFIG_ARCNET=y
CONFIG_ARCNET_1201=y
CONFIG_ARCNET_1051=y
# CONFIG_ARCNET_RAW is not set
CONFIG_ARCNET_CAP=y
# CONFIG_ARCNET_COM90xx is not set
CONFIG_ARCNET_COM90xxIO=y
CONFIG_ARCNET_RIM_I=y
CONFIG_ARCNET_COM20020=y
# CONFIG_ARCNET_COM20020_PCI is not set
# CONFIG_ARCNET_COM20020_CS is not set

#
# Distributed Switch Architecture drivers
#
CONFIG_B53=y
CONFIG_B53_MDIO_DRIVER=y
# CONFIG_B53_MMAP_DRIVER is not set
# CONFIG_B53_SRAB_DRIVER is not set
CONFIG_B53_SERDES=y
CONFIG_NET_DSA_BCM_SF2=y
# CONFIG_NET_DSA_LOOP is not set
CONFIG_NET_DSA_LANTIQ_GSWIP=y
# CONFIG_NET_DSA_MT7530 is not set
# CONFIG_NET_DSA_MV88E6060 is not set
# CONFIG_NET_DSA_MICROCHIP_KSZ_COMMON is not set
CONFIG_NET_DSA_MV88E6XXX=y
CONFIG_NET_DSA_MSCC_FELIX_DSA_LIB=y
# CONFIG_NET_DSA_MSCC_FELIX is not set
CONFIG_NET_DSA_MSCC_SEVILLE=y
CONFIG_NET_DSA_AR9331=y
CONFIG_NET_DSA_QCA8K=y
# CONFIG_NET_DSA_QCA8K_LEDS_SUPPORT is not set
CONFIG_NET_DSA_XRS700X=y
CONFIG_NET_DSA_XRS700X_I2C=y
CONFIG_NET_DSA_XRS700X_MDIO=y
CONFIG_NET_DSA_REALTEK=y
# CONFIG_NET_DSA_REALTEK_MDIO is not set
# CONFIG_NET_DSA_REALTEK_SMI is not set
CONFIG_NET_DSA_REALTEK_RTL8365MB=y
CONFIG_NET_DSA_REALTEK_RTL8366RB=y
CONFIG_NET_DSA_SMSC_LAN9303=y
CONFIG_NET_DSA_SMSC_LAN9303_I2C=y
CONFIG_NET_DSA_SMSC_LAN9303_MDIO=y
CONFIG_NET_DSA_VITESSE_VSC73XX=y
CONFIG_NET_DSA_VITESSE_VSC73XX_PLATFORM=y
# end of Distributed Switch Architecture drivers

CONFIG_ETHERNET=y
CONFIG_MDIO=y
CONFIG_NET_VENDOR_3COM=y
CONFIG_EL3=y
# CONFIG_PCMCIA_3C574 is not set
# CONFIG_PCMCIA_3C589 is not set
# CONFIG_VORTEX is not set
# CONFIG_TYPHOON is not set
# CONFIG_NET_VENDOR_ACTIONS is not set
# CONFIG_NET_VENDOR_ADAPTEC is not set
# CONFIG_NET_VENDOR_AGERE is not set
# CONFIG_NET_VENDOR_ALACRITECH is not set
CONFIG_NET_VENDOR_ALTEON=y
CONFIG_ACENIC=y
CONFIG_ACENIC_OMIT_TIGON_I=y
CONFIG_ALTERA_TSE=y
# CONFIG_NET_VENDOR_AMAZON is not set
CONFIG_NET_VENDOR_AMD=y
CONFIG_AMD8111_ETH=y
CONFIG_PCNET32=y
CONFIG_PCMCIA_NMCLAN=y
CONFIG_AMD_XGBE=y
# CONFIG_AMD_XGBE_DCB is not set
CONFIG_AMD_XGBE_HAVE_ECC=y
CONFIG_PDS_CORE=y
CONFIG_NET_XGENE=y
CONFIG_NET_XGENE_V2=y
# CONFIG_NET_VENDOR_AQUANTIA is not set
CONFIG_NET_VENDOR_ARC=y
CONFIG_NET_VENDOR_ASIX=y
CONFIG_NET_VENDOR_ATHEROS=y
CONFIG_ATL2=y
# CONFIG_ATL1 is not set
CONFIG_ATL1E=y
CONFIG_ATL1C=y
CONFIG_ALX=y
CONFIG_CX_ECAT=y
CONFIG_NET_VENDOR_BROADCOM=y
CONFIG_B44=y
CONFIG_B44_PCI_AUTOSELECT=y
CONFIG_B44_PCICORE_AUTOSELECT=y
CONFIG_B44_PCI=y
CONFIG_BCM4908_ENET=y
CONFIG_BCMGENET=y
# CONFIG_BNX2 is not set
# CONFIG_CNIC is not set
# CONFIG_TIGON3 is not set
CONFIG_BNX2X=y
CONFIG_BNX2X_SRIOV=y
CONFIG_BGMAC=y
CONFIG_BGMAC_BCMA=y
CONFIG_BGMAC_PLATFORM=y
# CONFIG_SYSTEMPORT is not set
# CONFIG_BNXT is not set
# CONFIG_NET_VENDOR_CADENCE is not set
# CONFIG_NET_CALXEDA_XGMAC is not set
# CONFIG_NET_VENDOR_CAVIUM is not set
CONFIG_NET_VENDOR_CHELSIO=y
CONFIG_CHELSIO_T1=y
CONFIG_CHELSIO_T1_1G=y
CONFIG_CHELSIO_T3=y
CONFIG_CHELSIO_T4=y
CONFIG_CHELSIO_T4_DCB=y
CONFIG_CHELSIO_T4VF=y
CONFIG_CHELSIO_LIB=y
CONFIG_CHELSIO_INLINE_CRYPTO=y
CONFIG_NET_VENDOR_CIRRUS=y
CONFIG_CS89x0=y
CONFIG_CS89x0_PLATFORM=y
# CONFIG_EP93XX_ETH is not set
CONFIG_NET_VENDOR_CISCO=y
CONFIG_ENIC=y
# CONFIG_NET_VENDOR_CORTINA is not set
CONFIG_NET_VENDOR_DAVICOM=y
CONFIG_DM9000=y
# CONFIG_DM9000_FORCE_SIMPLE_PHY_POLL is not set
CONFIG_DNET=y
CONFIG_NET_VENDOR_DEC=y
CONFIG_NET_TULIP=y
# CONFIG_DE2104X is not set
# CONFIG_TULIP is not set
# CONFIG_WINBOND_840 is not set
CONFIG_DM9102=y
CONFIG_ULI526X=y
CONFIG_PCMCIA_XIRCOM=y
CONFIG_NET_VENDOR_DLINK=y
CONFIG_DL2K=y
CONFIG_SUNDANCE=y
# CONFIG_SUNDANCE_MMIO is not set
CONFIG_NET_VENDOR_EMULEX=y
CONFIG_BE2NET=y
CONFIG_BE2NET_HWMON=y
CONFIG_BE2NET_BE2=y
# CONFIG_BE2NET_BE3 is not set
CONFIG_BE2NET_LANCER=y
# CONFIG_BE2NET_SKYHAWK is not set
# CONFIG_NET_VENDOR_ENGLEDER is not set
CONFIG_NET_VENDOR_EZCHIP=y
CONFIG_NET_VENDOR_FARADAY=y
CONFIG_NET_VENDOR_FREESCALE=y
# CONFIG_FEC is not set
CONFIG_FSL_FMAN=y
CONFIG_FSL_PQ_MDIO=y
# CONFIG_GIANFAR is not set
CONFIG_FSL_DPAA2_SWITCH=y
CONFIG_FSL_ENETC_IERB=y
CONFIG_FSL_ENETC_MDIO=y
CONFIG_NET_VENDOR_FUJITSU=y
# CONFIG_PCMCIA_FMVJ18X is not set
CONFIG_NET_VENDOR_FUNGIBLE=y
CONFIG_NET_VENDOR_GOOGLE=y
# CONFIG_NET_VENDOR_HUAWEI is not set
# CONFIG_NET_VENDOR_INTEL is not set
CONFIG_JME=y
CONFIG_KORINA=y
CONFIG_NET_VENDOR_LITEX=y
# CONFIG_NET_VENDOR_MARVELL is not set
# CONFIG_NET_VENDOR_MEDIATEK is not set
CONFIG_NET_VENDOR_MELLANOX=y
CONFIG_MLX4_EN=y
CONFIG_MLX4_EN_DCB=y
CONFIG_MLX4_CORE=y
CONFIG_MLX4_DEBUG=y
CONFIG_MLX4_CORE_GEN2=y
CONFIG_MLX5_CORE=y
# CONFIG_MLX5_FPGA is not set
CONFIG_MLX5_CORE_EN=y
CONFIG_MLX5_EN_ARFS=y
# CONFIG_MLX5_EN_RXNFC is not set
# CONFIG_MLX5_MPFS is not set
# CONFIG_MLX5_ESWITCH is not set
CONFIG_MLX5_CORE_EN_DCB=y
CONFIG_MLX5_CORE_IPOIB=y
# CONFIG_MLX5_SF is not set
CONFIG_MLX5_DPLL=y
# CONFIG_MLXSW_CORE is not set
CONFIG_MLXFW=y
CONFIG_MLXBF_GIGE=y
# CONFIG_NET_VENDOR_MICREL is not set
CONFIG_NET_VENDOR_MICROCHIP=y
CONFIG_LAN743X=y
# CONFIG_VCAP is not set
CONFIG_NET_VENDOR_MICROSEMI=y
CONFIG_MSCC_OCELOT_SWITCH_LIB=y
CONFIG_NET_VENDOR_MICROSOFT=y
CONFIG_NET_VENDOR_MYRI=y
CONFIG_MYRI10GE=y
# CONFIG_MYRI10GE_DCA is not set
CONFIG_FEALNX=y
# CONFIG_NET_VENDOR_NI is not set
CONFIG_NET_VENDOR_NATSEMI=y
CONFIG_NATSEMI=y
CONFIG_NS83820=y
# CONFIG_NET_VENDOR_NETERION is not set
# CONFIG_NET_VENDOR_NETRONOME is not set
CONFIG_NET_VENDOR_8390=y
CONFIG_PCMCIA_AXNET=y
CONFIG_AX88796=y
CONFIG_AX88796_93CX6=y
# CONFIG_NE2K_PCI is not set
# CONFIG_PCMCIA_PCNET is not set
CONFIG_NET_VENDOR_NVIDIA=y
# CONFIG_FORCEDETH is not set
# CONFIG_LPC_ENET is not set
# CONFIG_NET_VENDOR_OKI is not set
# CONFIG_ETHOC is not set
# CONFIG_NET_VENDOR_PACKET_ENGINES is not set
# CONFIG_NET_VENDOR_PENSANDO is not set
# CONFIG_NET_VENDOR_QLOGIC is not set
# CONFIG_NET_VENDOR_BROCADE is not set
CONFIG_NET_VENDOR_QUALCOMM=y
CONFIG_QCOM_EMAC=y
CONFIG_RMNET=y
CONFIG_NET_VENDOR_RDC=y
CONFIG_R6040=y
CONFIG_NET_VENDOR_REALTEK=y
CONFIG_ATP=y
# CONFIG_8139CP is not set
CONFIG_8139TOO=y
# CONFIG_8139TOO_PIO is not set
CONFIG_8139TOO_TUNE_TWISTER=y
CONFIG_8139TOO_8129=y
CONFIG_8139_OLD_RX_RESET=y
CONFIG_R8169=y
CONFIG_R8169_LEDS=y
# CONFIG_NET_VENDOR_RENESAS is not set
CONFIG_NET_VENDOR_ROCKER=y
# CONFIG_ROCKER is not set
# CONFIG_NET_VENDOR_SAMSUNG is not set
CONFIG_NET_VENDOR_SEEQ=y
# CONFIG_NET_VENDOR_SILAN is not set
CONFIG_NET_VENDOR_SIS=y
CONFIG_SIS900=y
# CONFIG_SIS190 is not set
CONFIG_NET_VENDOR_SOLARFLARE=y
CONFIG_SFC=y
CONFIG_SFC_MTD=y
# CONFIG_SFC_MCDI_MON is not set
# CONFIG_SFC_SRIOV is not set
CONFIG_SFC_MCDI_LOGGING=y
CONFIG_SFC_FALCON=y
# CONFIG_SFC_FALCON_MTD is not set
# CONFIG_NET_VENDOR_SMSC is not set
# CONFIG_NET_VENDOR_SOCIONEXT is not set
# CONFIG_NET_VENDOR_STMICRO is not set
# CONFIG_NET_VENDOR_SUN is not set
# CONFIG_NET_VENDOR_SUNPLUS is not set
# CONFIG_NET_VENDOR_SYNOPSYS is not set
CONFIG_NET_VENDOR_TEHUTI=y
CONFIG_TEHUTI=y
# CONFIG_NET_VENDOR_TI is not set
# CONFIG_NET_VENDOR_VERTEXCOM is not set
CONFIG_NET_VENDOR_VIA=y
# CONFIG_VIA_RHINE is not set
CONFIG_VIA_VELOCITY=y
# CONFIG_NET_VENDOR_WANGXUN is not set
CONFIG_NET_VENDOR_WIZNET=y
CONFIG_WIZNET_W5100=y
CONFIG_WIZNET_W5300=y
# CONFIG_WIZNET_BUS_DIRECT is not set
# CONFIG_WIZNET_BUS_INDIRECT is not set
CONFIG_WIZNET_BUS_ANY=y
CONFIG_NET_VENDOR_XILINX=y
CONFIG_XILINX_EMACLITE=y
CONFIG_XILINX_AXI_EMAC=y
CONFIG_XILINX_LL_TEMAC=y
CONFIG_NET_VENDOR_XIRCOM=y
# CONFIG_PCMCIA_XIRC2PS is not set
CONFIG_FDDI=y
# CONFIG_DEFXX is not set
CONFIG_SKFP=y
# CONFIG_HIPPI is not set
CONFIG_PHYLINK=y
CONFIG_PHYLIB=y
CONFIG_SWPHY=y
# CONFIG_LED_TRIGGER_PHY is not set
CONFIG_FIXED_PHY=y
CONFIG_SFP=y

#
# MII PHY device drivers
#
CONFIG_AMD_PHY=y
CONFIG_MESON_GXL_PHY=y
CONFIG_ADIN_PHY=y
# CONFIG_ADIN1100_PHY is not set
CONFIG_AQUANTIA_PHY=y
CONFIG_AX88796B_PHY=y
CONFIG_BROADCOM_PHY=y
CONFIG_BCM54140_PHY=y
# CONFIG_BCM63XX_PHY is not set
CONFIG_BCM7XXX_PHY=y
# CONFIG_BCM84881_PHY is not set
# CONFIG_BCM87XX_PHY is not set
CONFIG_BCM_NET_PHYLIB=y
CONFIG_BCM_NET_PHYPTP=y
CONFIG_CICADA_PHY=y
CONFIG_CORTINA_PHY=y
CONFIG_DAVICOM_PHY=y
CONFIG_ICPLUS_PHY=y
CONFIG_LXT_PHY=y
CONFIG_INTEL_XWAY_PHY=y
CONFIG_LSI_ET1011C_PHY=y
CONFIG_MARVELL_PHY=y
# CONFIG_MARVELL_10G_PHY is not set
CONFIG_MARVELL_88Q2XXX_PHY=y
# CONFIG_MARVELL_88X2222_PHY is not set
CONFIG_MAXLINEAR_GPHY=y
# CONFIG_MEDIATEK_GE_PHY is not set
CONFIG_MEDIATEK_GE_SOC_PHY=y
# CONFIG_MICREL_PHY is not set
CONFIG_MICROCHIP_T1S_PHY=y
CONFIG_MICROCHIP_PHY=y
CONFIG_MICROCHIP_T1_PHY=y
CONFIG_MICROSEMI_PHY=y
CONFIG_MOTORCOMM_PHY=y
CONFIG_NATIONAL_PHY=y
# CONFIG_NXP_CBTX_PHY is not set
CONFIG_NXP_C45_TJA11XX_PHY=y
CONFIG_NXP_TJA11XX_PHY=y
CONFIG_NCN26000_PHY=y
CONFIG_QSEMI_PHY=y
CONFIG_REALTEK_PHY=y
CONFIG_RENESAS_PHY=y
# CONFIG_ROCKCHIP_PHY is not set
CONFIG_SMSC_PHY=y
# CONFIG_STE10XP is not set
CONFIG_TERANETICS_PHY=y
# CONFIG_DP83822_PHY is not set
# CONFIG_DP83TC811_PHY is not set
# CONFIG_DP83848_PHY is not set
CONFIG_DP83867_PHY=y
# CONFIG_DP83869_PHY is not set
# CONFIG_DP83TD510_PHY is not set
CONFIG_DP83TG720_PHY=y
CONFIG_VITESSE_PHY=y
# CONFIG_XILINX_GMII2RGMII is not set
# CONFIG_PSE_CONTROLLER is not set

#
# MCTP Device Drivers
#
CONFIG_MCTP_SERIAL=y
CONFIG_MCTP_TRANSPORT_I2C=y
CONFIG_MCTP_TRANSPORT_I3C=y
# end of MCTP Device Drivers

CONFIG_MDIO_DEVICE=y
CONFIG_MDIO_BUS=y
CONFIG_FWNODE_MDIO=y
CONFIG_MDIO_DEVRES=y
# CONFIG_MDIO_SUN4I is not set
CONFIG_MDIO_XGENE=y
CONFIG_MDIO_BITBANG=y
CONFIG_MDIO_BCM_UNIMAC=y
# CONFIG_MDIO_GPIO is not set
CONFIG_MDIO_I2C=y
CONFIG_MDIO_MSCC_MIIM=y
CONFIG_MDIO_MOXART=y
# CONFIG_MDIO_OCTEON is not set
CONFIG_MDIO_REGMAP=y
# CONFIG_MDIO_THUNDER is not set

#
# MDIO Multiplexers
#

#
# PCS device drivers
#
CONFIG_PCS_LYNX=y
# end of PCS device drivers

# CONFIG_PLIP is not set
CONFIG_PPP=y
# CONFIG_PPP_BSDCOMP is not set
CONFIG_PPP_DEFLATE=y
# CONFIG_PPP_FILTER is not set
CONFIG_PPP_MPPE=y
CONFIG_PPP_MULTILINK=y
CONFIG_PPPOE=y
# CONFIG_PPPOE_HASH_BITS_1 is not set
# CONFIG_PPPOE_HASH_BITS_2 is not set
CONFIG_PPPOE_HASH_BITS_4=y
# CONFIG_PPPOE_HASH_BITS_8 is not set
CONFIG_PPPOE_HASH_BITS=4
# CONFIG_PPTP is not set
CONFIG_PPP_ASYNC=y
# CONFIG_PPP_SYNC_TTY is not set
CONFIG_SLIP=y
CONFIG_SLHC=y
# CONFIG_SLIP_COMPRESSED is not set
# CONFIG_SLIP_SMART is not set
CONFIG_SLIP_MODE_SLIP6=y

#
# Host-side USB support is needed for USB Network Adapter support
#
CONFIG_WLAN=y
# CONFIG_WLAN_VENDOR_ADMTEK is not set
CONFIG_WLAN_VENDOR_ATH=y
CONFIG_ATH_DEBUG=y
# CONFIG_ATH_TRACEPOINTS is not set
CONFIG_ATH5K_PCI=y
# CONFIG_WLAN_VENDOR_ATMEL is not set
# CONFIG_WLAN_VENDOR_BROADCOM is not set
# CONFIG_WLAN_VENDOR_INTEL is not set
CONFIG_WLAN_VENDOR_INTERSIL=y
# CONFIG_WLAN_VENDOR_MARVELL is not set
# CONFIG_WLAN_VENDOR_MEDIATEK is not set
CONFIG_WLAN_VENDOR_MICROCHIP=y
CONFIG_WLAN_VENDOR_PURELIFI=y
CONFIG_WLAN_VENDOR_RALINK=y
CONFIG_WLAN_VENDOR_REALTEK=y
CONFIG_WLAN_VENDOR_RSI=y
CONFIG_WLAN_VENDOR_SILABS=y
# CONFIG_WLAN_VENDOR_ST is not set
# CONFIG_WLAN_VENDOR_TI is not set
# CONFIG_WLAN_VENDOR_ZYDAS is not set
# CONFIG_WLAN_VENDOR_QUANTENNA is not set
CONFIG_WAN=y
# CONFIG_HDLC is not set
# CONFIG_FRAMER is not set

#
# Wireless WAN
#
# CONFIG_WWAN is not set
# end of Wireless WAN

CONFIG_VMXNET3=y
CONFIG_USB4_NET=y
CONFIG_NETDEVSIM=y
CONFIG_NET_FAILOVER=y
CONFIG_ISDN=y
CONFIG_ISDN_CAPI=y
CONFIG_MISDN=y
# CONFIG_MISDN_DSP is not set
CONFIG_MISDN_L1OIP=y

#
# mISDN hardware drivers
#
CONFIG_MISDN_HFCPCI=y
CONFIG_MISDN_HFCMULTI=y
CONFIG_MISDN_AVMFRITZ=y
CONFIG_MISDN_SPEEDFAX=y
CONFIG_MISDN_INFINEON=y
CONFIG_MISDN_W6692=y
CONFIG_MISDN_NETJET=y
CONFIG_MISDN_HDLC=y
CONFIG_MISDN_IPAC=y
CONFIG_MISDN_ISAR=y

#
# Input device support
#
CONFIG_INPUT=y
# CONFIG_INPUT_LEDS is not set
CONFIG_INPUT_FF_MEMLESS=y
CONFIG_INPUT_SPARSEKMAP=y
CONFIG_INPUT_MATRIXKMAP=y

#
# Userland interfaces
#
# CONFIG_INPUT_MOUSEDEV is not set
# CONFIG_INPUT_JOYDEV is not set
CONFIG_INPUT_EVDEV=y
CONFIG_INPUT_EVBUG=y

#
# Input Device Drivers
#
# CONFIG_INPUT_KEYBOARD is not set
# CONFIG_INPUT_MOUSE is not set
# CONFIG_INPUT_JOYSTICK is not set
CONFIG_INPUT_TABLET=y
CONFIG_TABLET_SERIAL_WACOM4=y
CONFIG_INPUT_TOUCHSCREEN=y
CONFIG_TOUCHSCREEN_AD7879=y
# CONFIG_TOUCHSCREEN_AD7879_I2C is not set
# CONFIG_TOUCHSCREEN_ADC is not set
# CONFIG_TOUCHSCREEN_ATMEL_MXT is not set
CONFIG_TOUCHSCREEN_AUO_PIXCIR=y
# CONFIG_TOUCHSCREEN_BU21013 is not set
# CONFIG_TOUCHSCREEN_BU21029 is not set
# CONFIG_TOUCHSCREEN_CY8CTMA140 is not set
CONFIG_TOUCHSCREEN_CY8CTMG110=y
CONFIG_TOUCHSCREEN_CYTTSP_CORE=y
CONFIG_TOUCHSCREEN_CYTTSP_I2C=y
# CONFIG_TOUCHSCREEN_CYTTSP4_CORE is not set
# CONFIG_TOUCHSCREEN_CYTTSP5 is not set
# CONFIG_TOUCHSCREEN_DYNAPRO is not set
CONFIG_TOUCHSCREEN_HAMPSHIRE=y
CONFIG_TOUCHSCREEN_EETI=y
# CONFIG_TOUCHSCREEN_EGALAX_SERIAL is not set
# CONFIG_TOUCHSCREEN_EXC3000 is not set
CONFIG_TOUCHSCREEN_FUJITSU=y
CONFIG_TOUCHSCREEN_GOODIX=y
CONFIG_TOUCHSCREEN_HIDEEP=y
CONFIG_TOUCHSCREEN_HYCON_HY46XX=y
CONFIG_TOUCHSCREEN_HYNITRON_CSTXXX=y
CONFIG_TOUCHSCREEN_ILI210X=y
# CONFIG_TOUCHSCREEN_ILITEK is not set
CONFIG_TOUCHSCREEN_IPROC=y
# CONFIG_TOUCHSCREEN_S6SY761 is not set
CONFIG_TOUCHSCREEN_GUNZE=y
CONFIG_TOUCHSCREEN_EKTF2127=y
CONFIG_TOUCHSCREEN_ELAN=y
CONFIG_TOUCHSCREEN_ELO=y
CONFIG_TOUCHSCREEN_WACOM_W8001=y
CONFIG_TOUCHSCREEN_WACOM_I2C=y
# CONFIG_TOUCHSCREEN_MAX11801 is not set
CONFIG_TOUCHSCREEN_MCS5000=y
CONFIG_TOUCHSCREEN_MMS114=y
# CONFIG_TOUCHSCREEN_MELFAS_MIP4 is not set
# CONFIG_TOUCHSCREEN_MSG2638 is not set
CONFIG_TOUCHSCREEN_MTOUCH=y
# CONFIG_TOUCHSCREEN_NOVATEK_NVT_TS is not set
CONFIG_TOUCHSCREEN_IMAGIS=y
# CONFIG_TOUCHSCREEN_IMX6UL_TSC is not set
CONFIG_TOUCHSCREEN_INEXIO=y
CONFIG_TOUCHSCREEN_PENMOUNT=y
CONFIG_TOUCHSCREEN_EDT_FT5X06=y
# CONFIG_TOUCHSCREEN_RASPBERRYPI_FW is not set
CONFIG_TOUCHSCREEN_MIGOR=y
# CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set
CONFIG_TOUCHSCREEN_TOUCHWIN=y
CONFIG_TOUCHSCREEN_PIXCIR=y
CONFIG_TOUCHSCREEN_WDT87XX_I2C=y
CONFIG_TOUCHSCREEN_WM831X=y
# CONFIG_TOUCHSCREEN_MXS_LRADC is not set
CONFIG_TOUCHSCREEN_TOUCHIT213=y
CONFIG_TOUCHSCREEN_TSC_SERIO=y
# CONFIG_TOUCHSCREEN_TSC2004 is not set
# CONFIG_TOUCHSCREEN_TSC2007 is not set
CONFIG_TOUCHSCREEN_RM_TS=y
# CONFIG_TOUCHSCREEN_SILEAD is not set
CONFIG_TOUCHSCREEN_SIS_I2C=y
CONFIG_TOUCHSCREEN_ST1232=y
CONFIG_TOUCHSCREEN_STMFTS=y
# CONFIG_TOUCHSCREEN_SUN4I is not set
# CONFIG_TOUCHSCREEN_SX8654 is not set
CONFIG_TOUCHSCREEN_TPS6507X=y
CONFIG_TOUCHSCREEN_ZET6223=y
CONFIG_TOUCHSCREEN_ZFORCE=y
CONFIG_TOUCHSCREEN_COLIBRI_VF50=y
CONFIG_TOUCHSCREEN_ROHM_BU21023=y
CONFIG_TOUCHSCREEN_IQS5XX=y
CONFIG_TOUCHSCREEN_IQS7211=y
CONFIG_TOUCHSCREEN_ZINITIX=y
CONFIG_TOUCHSCREEN_HIMAX_HX83112B=y
CONFIG_INPUT_MISC=y
# CONFIG_INPUT_AD714X is not set
CONFIG_INPUT_ATC260X_ONKEY=y
CONFIG_INPUT_BMA150=y
CONFIG_INPUT_E3X0_BUTTON=y
# CONFIG_INPUT_PCSPKR is not set
CONFIG_INPUT_PM8XXX_VIBRATOR=y
CONFIG_INPUT_PMIC8XXX_PWRKEY=y
CONFIG_INPUT_MAX77693_HAPTIC=y
# CONFIG_INPUT_MAX8925_ONKEY is not set
# CONFIG_INPUT_MMA8450 is not set
CONFIG_INPUT_APANEL=y
# CONFIG_INPUT_GPIO_BEEPER is not set
CONFIG_INPUT_GPIO_DECODER=y
# CONFIG_INPUT_GPIO_VIBRA is not set
# CONFIG_INPUT_KXTJ9 is not set
CONFIG_INPUT_RETU_PWRBUTTON=y
CONFIG_INPUT_AXP20X_PEK=y
CONFIG_INPUT_TWL4030_PWRBUTTON=y
CONFIG_INPUT_TWL4030_VIBRA=y
CONFIG_INPUT_TWL6040_VIBRA=y
# CONFIG_INPUT_UINPUT is not set
# CONFIG_INPUT_PALMAS_PWRBUTTON is not set
CONFIG_INPUT_PCF50633_PMU=y
CONFIG_INPUT_PCF8574=y
CONFIG_INPUT_PWM_BEEPER=y
CONFIG_INPUT_PWM_VIBRA=y
CONFIG_INPUT_GPIO_ROTARY_ENCODER=y
CONFIG_INPUT_DA7280_HAPTICS=y
CONFIG_INPUT_DA9055_ONKEY=y
CONFIG_INPUT_DA9063_ONKEY=y
CONFIG_INPUT_WM831X_ON=y
CONFIG_INPUT_ADXL34X=y
CONFIG_INPUT_ADXL34X_I2C=y
CONFIG_INPUT_IBM_PANEL=y
CONFIG_INPUT_IQS269A=y
CONFIG_INPUT_IQS626A=y
CONFIG_INPUT_IQS7222=y
CONFIG_INPUT_CMA3000=y
CONFIG_INPUT_CMA3000_I2C=y
CONFIG_INPUT_IDEAPAD_SLIDEBAR=y
CONFIG_INPUT_DRV260X_HAPTICS=y
# CONFIG_INPUT_DRV2665_HAPTICS is not set
CONFIG_INPUT_DRV2667_HAPTICS=y
CONFIG_INPUT_HISI_POWERKEY=y
# CONFIG_INPUT_SC27XX_VIBRA is not set
CONFIG_INPUT_RT5120_PWRKEY=y
CONFIG_RMI4_CORE=y
CONFIG_RMI4_I2C=y
CONFIG_RMI4_SMB=y
CONFIG_RMI4_F03=y
CONFIG_RMI4_F03_SERIO=y
CONFIG_RMI4_2D_SENSOR=y
# CONFIG_RMI4_F11 is not set
CONFIG_RMI4_F12=y
# CONFIG_RMI4_F30 is not set
CONFIG_RMI4_F34=y
# CONFIG_RMI4_F3A is not set
# CONFIG_RMI4_F54 is not set
# CONFIG_RMI4_F55 is not set

#
# Hardware I/O ports
#
CONFIG_SERIO=y
CONFIG_ARCH_MIGHT_HAVE_PC_SERIO=y
CONFIG_SERIO_I8042=y
CONFIG_SERIO_SERPORT=y
CONFIG_SERIO_CT82C710=y
CONFIG_SERIO_PARKBD=y
CONFIG_SERIO_PCIPS2=y
CONFIG_SERIO_LIBPS2=y
CONFIG_SERIO_RAW=y
CONFIG_SERIO_ALTERA_PS2=y
CONFIG_SERIO_PS2MULT=y
CONFIG_SERIO_ARC_PS2=y
CONFIG_SERIO_OLPC_APSP=y
CONFIG_SERIO_SUN4I_PS2=y
# CONFIG_SERIO_GPIO_PS2 is not set
# CONFIG_USERIO is not set
CONFIG_GAMEPORT=y
CONFIG_GAMEPORT_EMU10K1=y
CONFIG_GAMEPORT_FM801=y
# end of Hardware I/O ports
# end of Input device support

#
# Character devices
#
CONFIG_TTY=y
CONFIG_VT=y
CONFIG_CONSOLE_TRANSLATIONS=y
CONFIG_VT_CONSOLE=y
CONFIG_HW_CONSOLE=y
CONFIG_VT_HW_CONSOLE_BINDING=y
CONFIG_UNIX98_PTYS=y
CONFIG_LEGACY_PTYS=y
CONFIG_LEGACY_PTY_COUNT=256
# CONFIG_LEGACY_TIOCSTI is not set
# CONFIG_LDISC_AUTOLOAD is not set

#
# Serial drivers
#
CONFIG_SERIAL_EARLYCON=y
CONFIG_SERIAL_8250=y
CONFIG_SERIAL_8250_DEPRECATED_OPTIONS=y
# CONFIG_SERIAL_8250_16550A_VARIANTS is not set
# CONFIG_SERIAL_8250_FINTEK is not set
CONFIG_SERIAL_8250_CONSOLE=y
CONFIG_SERIAL_8250_DMA=y
CONFIG_SERIAL_8250_PCILIB=y
CONFIG_SERIAL_8250_PCI=y
# CONFIG_SERIAL_8250_EXAR is not set
CONFIG_SERIAL_8250_CS=y
CONFIG_SERIAL_8250_MEN_MCB=y
CONFIG_SERIAL_8250_NR_UARTS=4
CONFIG_SERIAL_8250_RUNTIME_UARTS=4
CONFIG_SERIAL_8250_EXTENDED=y
CONFIG_SERIAL_8250_MANY_PORTS=y
CONFIG_SERIAL_8250_PCI1XXXX=y
# CONFIG_SERIAL_8250_SHARE_IRQ is not set
# CONFIG_SERIAL_8250_DETECT_IRQ is not set
# CONFIG_SERIAL_8250_RSA is not set
CONFIG_SERIAL_8250_DWLIB=y
CONFIG_SERIAL_8250_FSL=y
# CONFIG_SERIAL_8250_DW is not set
# CONFIG_SERIAL_8250_IOC3 is not set
# CONFIG_SERIAL_8250_RT288X is not set
CONFIG_SERIAL_8250_OMAP=y
CONFIG_SERIAL_8250_OMAP_TTYO_FIXUP=y
CONFIG_SERIAL_8250_MT6577=y
CONFIG_SERIAL_8250_UNIPHIER=y
CONFIG_SERIAL_8250_LPSS=y
CONFIG_SERIAL_8250_MID=y
CONFIG_SERIAL_8250_PERICOM=y
CONFIG_SERIAL_8250_PXA=y
CONFIG_SERIAL_8250_TEGRA=y
# CONFIG_SERIAL_8250_BCM7271 is not set

#
# Non-8250 serial port support
#
# CONFIG_SERIAL_AMBA_PL010 is not set
CONFIG_SERIAL_MESON=y
# CONFIG_SERIAL_MESON_CONSOLE is not set
CONFIG_SERIAL_CLPS711X=y
CONFIG_SERIAL_CLPS711X_CONSOLE=y
CONFIG_SERIAL_SAMSUNG=y
CONFIG_SERIAL_SAMSUNG_UARTS=4
# CONFIG_SERIAL_SAMSUNG_CONSOLE is not set
# CONFIG_SERIAL_TEGRA is not set
# CONFIG_SERIAL_TEGRA_TCU is not set
# CONFIG_SERIAL_IMX is not set
# CONFIG_SERIAL_UARTLITE is not set
CONFIG_SERIAL_SH_SCI=y
CONFIG_SERIAL_SH_SCI_NR_UARTS=2
CONFIG_SERIAL_SH_SCI_CONSOLE=y
CONFIG_SERIAL_CORE=y
CONFIG_SERIAL_CORE_CONSOLE=y
# CONFIG_SERIAL_ICOM is not set
CONFIG_SERIAL_JSM=y
# CONFIG_SERIAL_MSM is not set
CONFIG_SERIAL_QCOM_GENI=y
# CONFIG_SERIAL_QCOM_GENI_CONSOLE is not set
# CONFIG_SERIAL_VT8500 is not set
# CONFIG_SERIAL_OMAP is not set
CONFIG_SERIAL_LANTIQ=y
# CONFIG_SERIAL_LANTIQ_CONSOLE is not set
CONFIG_SERIAL_SCCNXP=y
CONFIG_SERIAL_SCCNXP_CONSOLE=y
# CONFIG_SERIAL_SC16IS7XX is not set
CONFIG_SERIAL_TIMBERDALE=y
# CONFIG_SERIAL_BCM63XX is not set
# CONFIG_SERIAL_ALTERA_JTAGUART is not set
CONFIG_SERIAL_ALTERA_UART=y
CONFIG_SERIAL_ALTERA_UART_MAXPORTS=4
CONFIG_SERIAL_ALTERA_UART_BAUDRATE=115200
# CONFIG_SERIAL_ALTERA_UART_CONSOLE is not set
# CONFIG_SERIAL_PCH_UART is not set
CONFIG_SERIAL_MXS_AUART=y
CONFIG_SERIAL_MXS_AUART_CONSOLE=y
CONFIG_SERIAL_MPS2_UART_CONSOLE=y
CONFIG_SERIAL_MPS2_UART=y
CONFIG_SERIAL_ARC=y
# CONFIG_SERIAL_ARC_CONSOLE is not set
CONFIG_SERIAL_ARC_NR_PORTS=1
CONFIG_SERIAL_RP2=y
CONFIG_SERIAL_RP2_NR_UARTS=32
CONFIG_SERIAL_FSL_LPUART=y
# CONFIG_SERIAL_FSL_LPUART_CONSOLE is not set
# CONFIG_SERIAL_FSL_LINFLEXUART is not set
CONFIG_SERIAL_ST_ASC=y
# CONFIG_SERIAL_ST_ASC_CONSOLE is not set
# CONFIG_SERIAL_MEN_Z135 is not set
CONFIG_SERIAL_STM32=y
# CONFIG_SERIAL_STM32_CONSOLE is not set
CONFIG_SERIAL_OWL=y
# CONFIG_SERIAL_OWL_CONSOLE is not set
# CONFIG_SERIAL_RDA is not set
CONFIG_SERIAL_SUNPLUS=y
CONFIG_SERIAL_SUNPLUS_CONSOLE=y
CONFIG_SERIAL_NUVOTON_MA35D1=y
# CONFIG_SERIAL_NUVOTON_MA35D1_CONSOLE is not set
# end of Serial drivers

CONFIG_SERIAL_MCTRL_GPIO=y
# CONFIG_SERIAL_NONSTANDARD is not set
CONFIG_IPWIRELESS=y
# CONFIG_N_GSM is not set
CONFIG_NOZOMI=y
CONFIG_NULL_TTY=y
CONFIG_HVC_DRIVER=y
# CONFIG_RPMSG_TTY is not set
CONFIG_SERIAL_DEV_BUS=y
# CONFIG_SERIAL_DEV_CTRL_TTYPORT is not set
CONFIG_PRINTER=y
CONFIG_LP_CONSOLE=y
CONFIG_PPDEV=y
CONFIG_VIRTIO_CONSOLE=y
# CONFIG_IPMI_HANDLER is not set
CONFIG_IPMI_KCS_BMC=y
CONFIG_ASPEED_KCS_IPMI_BMC=y
CONFIG_NPCM7XX_KCS_IPMI_BMC=y
CONFIG_IPMI_KCS_BMC_CDEV_IPMI=y
CONFIG_IPMI_KCS_BMC_SERIO=y
CONFIG_ASPEED_BT_IPMI_BMC=y
CONFIG_SSIF_IPMI_BMC=y
CONFIG_IPMB_DEVICE_INTERFACE=y
CONFIG_HW_RANDOM=y
CONFIG_HW_RANDOM_TIMERIOMEM=y
CONFIG_HW_RANDOM_INTEL=y
CONFIG_HW_RANDOM_AMD=y
CONFIG_HW_RANDOM_ATMEL=y
CONFIG_HW_RANDOM_BA431=y
CONFIG_HW_RANDOM_BCM2835=y
CONFIG_HW_RANDOM_IPROC_RNG200=y
# CONFIG_HW_RANDOM_GEODE is not set
CONFIG_HW_RANDOM_VIA=y
CONFIG_HW_RANDOM_IXP4XX=y
CONFIG_HW_RANDOM_OMAP=y
CONFIG_HW_RANDOM_OMAP3_ROM=y
CONFIG_HW_RANDOM_VIRTIO=y
# CONFIG_HW_RANDOM_MXC_RNGA is not set
CONFIG_HW_RANDOM_IMX_RNGC=y
CONFIG_HW_RANDOM_INGENIC_RNG=y
CONFIG_HW_RANDOM_INGENIC_TRNG=y
CONFIG_HW_RANDOM_NOMADIK=y
CONFIG_HW_RANDOM_HISI=y
CONFIG_HW_RANDOM_HISTB=y
# CONFIG_HW_RANDOM_ST is not set
# CONFIG_HW_RANDOM_XGENE is not set
CONFIG_HW_RANDOM_STM32=y
# CONFIG_HW_RANDOM_PIC32 is not set
CONFIG_HW_RANDOM_POLARFIRE_SOC=y
CONFIG_HW_RANDOM_EXYNOS=y
CONFIG_HW_RANDOM_NPCM=y
CONFIG_HW_RANDOM_XIPHERA=y
# CONFIG_HW_RANDOM_CN10K is not set
# CONFIG_HW_RANDOM_JH7110 is not set
CONFIG_APPLICOM=y
CONFIG_MWAVE=y
CONFIG_DEVMEM=y
CONFIG_NVRAM=y
# CONFIG_DEVPORT is not set
# CONFIG_HANGCHECK_TIMER is not set
CONFIG_TCG_TPM=y
# CONFIG_HW_RANDOM_TPM is not set
CONFIG_TCG_TIS_CORE=y
CONFIG_TCG_TIS=y
CONFIG_TCG_TIS_I2C=y
CONFIG_TCG_TIS_SYNQUACER=y
CONFIG_TCG_TIS_I2C_CR50=y
CONFIG_TCG_TIS_I2C_ATMEL=y
CONFIG_TCG_TIS_I2C_INFINEON=y
# CONFIG_TCG_TIS_I2C_NUVOTON is not set
# CONFIG_TCG_NSC is not set
# CONFIG_TCG_ATMEL is not set
# CONFIG_TCG_VTPM_PROXY is not set
CONFIG_TCG_TIS_ST33ZP24=y
CONFIG_TCG_TIS_ST33ZP24_I2C=y
# CONFIG_TELCLOCK is not set
CONFIG_XILLYBUS_CLASS=y
CONFIG_XILLYBUS=y
# end of Character devices

#
# I2C support
#
CONFIG_I2C=y
CONFIG_I2C_BOARDINFO=y
# CONFIG_I2C_COMPAT is not set
CONFIG_I2C_CHARDEV=y
CONFIG_I2C_MUX=y

#
# Multiplexer I2C Chip support
#
CONFIG_I2C_MUX_GPIO=y
CONFIG_I2C_MUX_LTC4306=y
CONFIG_I2C_MUX_PCA9541=y
CONFIG_I2C_MUX_PCA954x=y
# CONFIG_I2C_MUX_REG is not set
# CONFIG_I2C_MUX_MLXCPLD is not set
# end of Multiplexer I2C Chip support

CONFIG_I2C_ATR=y
# CONFIG_I2C_HELPER_AUTO is not set
CONFIG_I2C_SMBUS=y

#
# I2C Algorithms
#
CONFIG_I2C_ALGOBIT=y
CONFIG_I2C_ALGOPCF=y
# CONFIG_I2C_ALGOPCA is not set
# end of I2C Algorithms

#
# I2C Hardware Bus support
#

#
# PC SMBus host controller drivers
#
CONFIG_I2C_CCGX_UCSI=y
CONFIG_I2C_ALI1535=y
CONFIG_I2C_ALI1563=y
CONFIG_I2C_ALI15X3=y
CONFIG_I2C_AMD756=y
CONFIG_I2C_AMD756_S4882=y
CONFIG_I2C_AMD8111=y
CONFIG_I2C_HIX5HD2=y
# CONFIG_I2C_I801 is not set
CONFIG_I2C_ISCH=y
# CONFIG_I2C_ISMT is not set
CONFIG_I2C_PIIX4=y
# CONFIG_I2C_NFORCE2 is not set
# CONFIG_I2C_NVIDIA_GPU is not set
# CONFIG_I2C_SIS5595 is not set
# CONFIG_I2C_SIS630 is not set
CONFIG_I2C_SIS96X=y
CONFIG_I2C_VIA=y
CONFIG_I2C_VIAPRO=y

#
# I2C system bus drivers (mostly embedded / system-on-chip)
#
# CONFIG_I2C_ASPEED is not set
CONFIG_I2C_AT91=y
# CONFIG_I2C_AT91_SLAVE_EXPERIMENTAL is not set
CONFIG_I2C_AXXIA=y
CONFIG_I2C_BCM_IPROC=y
# CONFIG_I2C_BCM_KONA is not set
CONFIG_I2C_BRCMSTB=y
CONFIG_I2C_CADENCE=y
CONFIG_I2C_CBUS_GPIO=y
CONFIG_I2C_DAVINCI=y
CONFIG_I2C_DESIGNWARE_CORE=y
# CONFIG_I2C_DESIGNWARE_SLAVE is not set
CONFIG_I2C_DESIGNWARE_PLATFORM=y
CONFIG_I2C_DESIGNWARE_PCI=y
CONFIG_I2C_DIGICOLOR=y
CONFIG_I2C_EG20T=y
# CONFIG_I2C_GPIO is not set
CONFIG_I2C_GXP=y
CONFIG_I2C_HIGHLANDER=y
# CONFIG_I2C_HISI is not set
CONFIG_I2C_IMG=y
CONFIG_I2C_IMX=y
CONFIG_I2C_IMX_LPI2C=y
# CONFIG_I2C_IOP3XX is not set
CONFIG_I2C_JZ4780=y
CONFIG_I2C_KEMPLD=y
# CONFIG_I2C_LS2X is not set
# CONFIG_I2C_MT65XX is not set
CONFIG_I2C_MT7621=y
CONFIG_I2C_MV64XXX=y
# CONFIG_I2C_MXS is not set
CONFIG_I2C_NPCM=y
CONFIG_I2C_OCORES=y
CONFIG_I2C_OMAP=y
CONFIG_I2C_OWL=y
CONFIG_I2C_APPLE=y
# CONFIG_I2C_PCA_PLATFORM is not set
CONFIG_I2C_PNX=y
# CONFIG_I2C_PXA is not set
# CONFIG_I2C_QCOM_CCI is not set
CONFIG_I2C_QCOM_GENI=y
CONFIG_I2C_QUP=y
# CONFIG_I2C_RIIC is not set
CONFIG_I2C_RZV2M=y
# CONFIG_I2C_S3C2410 is not set
CONFIG_I2C_SH_MOBILE=y
CONFIG_I2C_SIMTEC=y
CONFIG_I2C_ST=y
CONFIG_I2C_STM32F4=y
CONFIG_I2C_STM32F7=y
CONFIG_I2C_SUN6I_P2WI=y
CONFIG_I2C_SYNQUACER=y
CONFIG_I2C_TEGRA_BPMP=y
CONFIG_I2C_UNIPHIER=y
# CONFIG_I2C_UNIPHIER_F is not set
CONFIG_I2C_VERSATILE=y
CONFIG_I2C_WMT=y
CONFIG_I2C_THUNDERX=y
CONFIG_I2C_XILINX=y
CONFIG_I2C_XLP9XX=y
CONFIG_I2C_RCAR=y

#
# External I2C/SMBus adapter drivers
#
CONFIG_I2C_PARPORT=y
CONFIG_I2C_PCI1XXXX=y
CONFIG_I2C_TAOS_EVM=y

#
# Other I2C/SMBus bus drivers
#
# CONFIG_I2C_MLXCPLD is not set
CONFIG_I2C_CROS_EC_TUNNEL=y
CONFIG_I2C_VIRTIO=y
# end of I2C Hardware Bus support

CONFIG_I2C_SLAVE=y
CONFIG_I2C_SLAVE_EEPROM=y
# CONFIG_I2C_SLAVE_TESTUNIT is not set
CONFIG_I2C_DEBUG_CORE=y
CONFIG_I2C_DEBUG_ALGO=y
# CONFIG_I2C_DEBUG_BUS is not set
# end of I2C support

CONFIG_I3C=y
# CONFIG_CDNS_I3C_MASTER is not set
CONFIG_DW_I3C_MASTER=y
CONFIG_AST2600_I3C_MASTER=y
CONFIG_SVC_I3C_MASTER=y
CONFIG_MIPI_I3C_HCI=y
# CONFIG_SPI is not set
CONFIG_SPMI=y
# CONFIG_SPMI_HISI3670 is not set
CONFIG_SPMI_MSM_PMIC_ARB=y
CONFIG_SPMI_MTK_PMIF=y
CONFIG_HSI=y
CONFIG_HSI_BOARDINFO=y

#
# HSI controllers
#

#
# HSI clients
#
CONFIG_HSI_CHAR=y
CONFIG_PPS=y
# CONFIG_PPS_DEBUG is not set

#
# PPS clients support
#
# CONFIG_PPS_CLIENT_KTIMER is not set
# CONFIG_PPS_CLIENT_LDISC is not set
# CONFIG_PPS_CLIENT_PARPORT is not set
# CONFIG_PPS_CLIENT_GPIO is not set

#
# PPS generators support
#

#
# PTP clock support
#
# CONFIG_PTP_1588_CLOCK is not set
CONFIG_PTP_1588_CLOCK_OPTIONAL=y
# end of PTP clock support

CONFIG_PINCTRL=y
CONFIG_PINMUX=y
CONFIG_PINCONF=y
CONFIG_GENERIC_PINCONF=y
CONFIG_DEBUG_PINCTRL=y
# CONFIG_PINCTRL_AMD is not set
# CONFIG_PINCTRL_CY8C95X0 is not set
# CONFIG_PINCTRL_DA9062 is not set
CONFIG_PINCTRL_MCP23S08_I2C=y
CONFIG_PINCTRL_MCP23S08=y
# CONFIG_PINCTRL_SX150X is not set
CONFIG_PINCTRL_MLXBF3=y
CONFIG_PINCTRL_CS42L43=y

#
# Intel pinctrl drivers
#
CONFIG_PINCTRL_BAYTRAIL=y
# CONFIG_PINCTRL_CHERRYVIEW is not set
# CONFIG_PINCTRL_LYNXPOINT is not set
CONFIG_PINCTRL_INTEL=y
CONFIG_PINCTRL_ALDERLAKE=y
CONFIG_PINCTRL_BROXTON=y
# CONFIG_PINCTRL_CANNONLAKE is not set
CONFIG_PINCTRL_CEDARFORK=y
CONFIG_PINCTRL_DENVERTON=y
# CONFIG_PINCTRL_ELKHARTLAKE is not set
# CONFIG_PINCTRL_EMMITSBURG is not set
CONFIG_PINCTRL_GEMINILAKE=y
CONFIG_PINCTRL_ICELAKE=y
CONFIG_PINCTRL_JASPERLAKE=y
# CONFIG_PINCTRL_LAKEFIELD is not set
CONFIG_PINCTRL_LEWISBURG=y
CONFIG_PINCTRL_METEORLAKE=y
CONFIG_PINCTRL_SUNRISEPOINT=y
CONFIG_PINCTRL_TIGERLAKE=y
CONFIG_PINCTRL_TANGIER=y
CONFIG_PINCTRL_MERRIFIELD=y
CONFIG_PINCTRL_MOOREFIELD=y
# end of Intel pinctrl drivers

#
# MediaTek pinctrl drivers
#
CONFIG_EINT_MTK=y
# end of MediaTek pinctrl drivers

CONFIG_PINCTRL_PXA=y
CONFIG_PINCTRL_PXA25X=y
CONFIG_PINCTRL_PXA27X=y
# CONFIG_PINCTRL_LPASS_LPI is not set

#
# Renesas pinctrl drivers
#
CONFIG_PINCTRL_RENESAS=y
CONFIG_PINCTRL_SH_PFC=y
CONFIG_PINCTRL_SH_PFC_GPIO=y
CONFIG_PINCTRL_SH_FUNC_GPIO=y
# CONFIG_PINCTRL_PFC_EMEV2 is not set
# CONFIG_PINCTRL_PFC_R8A77995 is not set
CONFIG_PINCTRL_PFC_R8A7794=y
CONFIG_PINCTRL_PFC_R8A77990=y
CONFIG_PINCTRL_PFC_R8A7779=y
# CONFIG_PINCTRL_PFC_R8A7790 is not set
# CONFIG_PINCTRL_PFC_R8A77951 is not set
# CONFIG_PINCTRL_PFC_R8A7778 is not set
# CONFIG_PINCTRL_PFC_R8A7793 is not set
CONFIG_PINCTRL_PFC_R8A7791=y
CONFIG_PINCTRL_PFC_R8A77965=y
# CONFIG_PINCTRL_PFC_R8A77960 is not set
CONFIG_PINCTRL_PFC_R8A77961=y
# CONFIG_PINCTRL_PFC_R8A779F0 is not set
# CONFIG_PINCTRL_PFC_R8A7792 is not set
# CONFIG_PINCTRL_PFC_R8A77980 is not set
# CONFIG_PINCTRL_PFC_R8A77970 is not set
CONFIG_PINCTRL_PFC_R8A779A0=y
CONFIG_PINCTRL_PFC_R8A779G0=y
CONFIG_PINCTRL_PFC_R8A7740=y
# CONFIG_PINCTRL_PFC_R8A73A4 is not set
# CONFIG_PINCTRL_PFC_R8A77470 is not set
# CONFIG_PINCTRL_PFC_R8A7745 is not set
CONFIG_PINCTRL_PFC_R8A7742=y
# CONFIG_PINCTRL_PFC_R8A7743 is not set
CONFIG_PINCTRL_PFC_R8A7744=y
# CONFIG_PINCTRL_PFC_R8A774C0 is not set
# CONFIG_PINCTRL_PFC_R8A774E1 is not set
CONFIG_PINCTRL_PFC_R8A774A1=y
# CONFIG_PINCTRL_PFC_R8A774B1 is not set
CONFIG_PINCTRL_PFC_SH7203=y
CONFIG_PINCTRL_PFC_SH7264=y
# CONFIG_PINCTRL_PFC_SH7269 is not set
CONFIG_PINCTRL_PFC_SH7720=y
# CONFIG_PINCTRL_PFC_SH7722 is not set
CONFIG_PINCTRL_PFC_SH7734=y
CONFIG_PINCTRL_PFC_SH7757=y
CONFIG_PINCTRL_PFC_SH7785=y
CONFIG_PINCTRL_PFC_SH7786=y
# CONFIG_PINCTRL_PFC_SH73A0 is not set
# CONFIG_PINCTRL_PFC_SH7723 is not set
CONFIG_PINCTRL_PFC_SH7724=y
CONFIG_PINCTRL_PFC_SHX3=y
# end of Renesas pinctrl drivers

CONFIG_GPIOLIB=y
CONFIG_GPIOLIB_FASTPATH_LIMIT=512
CONFIG_GPIOLIB_IRQCHIP=y
# CONFIG_DEBUG_GPIO is not set
CONFIG_GPIO_CDEV=y
CONFIG_GPIO_CDEV_V1=y
CONFIG_GPIO_GENERIC=y
CONFIG_GPIO_REGMAP=y

#
# Memory mapped GPIO drivers
#
CONFIG_GPIO_ATH79=y
# CONFIG_GPIO_BCM_KONA is not set
CONFIG_GPIO_CLPS711X=y
CONFIG_GPIO_DWAPB=y
# CONFIG_GPIO_GE_FPGA is not set
# CONFIG_GPIO_GENERIC_PLATFORM is not set
# CONFIG_GPIO_HISI is not set
# CONFIG_GPIO_ICH is not set
CONFIG_GPIO_MB86S7X=y
# CONFIG_GPIO_MENZ127 is not set
CONFIG_GPIO_MPC8XXX=y
CONFIG_GPIO_MXC=y
# CONFIG_GPIO_MXS is not set
# CONFIG_GPIO_NPCM_SGPIO is not set
CONFIG_GPIO_PXA=y
# CONFIG_GPIO_RCAR is not set
CONFIG_GPIO_ROCKCHIP=y
CONFIG_GPIO_XGENE_SB=y
# CONFIG_GPIO_XLP is not set
# CONFIG_GPIO_AMD_FCH is not set
CONFIG_GPIO_IDT3243X=y
# end of Memory mapped GPIO drivers

#
# Port-mapped I/O GPIO drivers
#
# CONFIG_GPIO_VX855 is not set
CONFIG_GPIO_F7188X=y
CONFIG_GPIO_IT87=y
# CONFIG_GPIO_SCH311X is not set
# CONFIG_GPIO_TS5500 is not set
CONFIG_GPIO_WINBOND=y
CONFIG_GPIO_WS16C48=y
# end of Port-mapped I/O GPIO drivers

#
# I2C GPIO expanders
#
CONFIG_GPIO_FXL6408=y
CONFIG_GPIO_DS4520=y
# CONFIG_GPIO_MAX7300 is not set
CONFIG_GPIO_MAX732X=y
# CONFIG_GPIO_MAX732X_IRQ is not set
# CONFIG_GPIO_PCA953X is not set
CONFIG_GPIO_PCA9570=y
CONFIG_GPIO_PCF857X=y
CONFIG_GPIO_TPIC2810=y
CONFIG_GPIO_TS4900=y
# end of I2C GPIO expanders

#
# MFD GPIO expanders
#
CONFIG_GPIO_ADP5520=y
CONFIG_GPIO_ARIZONA=y
# CONFIG_GPIO_BD9571MWV is not set
CONFIG_GPIO_DA9055=y
# CONFIG_GPIO_ELKHARTLAKE is not set
CONFIG_GPIO_JANZ_TTL=y
# CONFIG_GPIO_KEMPLD is not set
# CONFIG_GPIO_LP3943 is not set
CONFIG_GPIO_PALMAS=y
# CONFIG_GPIO_RC5T583 is not set
# CONFIG_GPIO_SL28CPLD is not set
# CONFIG_GPIO_TIMBERDALE is not set
# CONFIG_GPIO_TPS6586X is not set
# CONFIG_GPIO_TPS65912 is not set
# CONFIG_GPIO_TQMX86 is not set
CONFIG_GPIO_TWL4030=y
CONFIG_GPIO_TWL6040=y
# CONFIG_GPIO_WM831X is not set
CONFIG_GPIO_WM8994=y
# end of MFD GPIO expanders

#
# PCI GPIO expanders
#
CONFIG_GPIO_AMD8111=y
CONFIG_GPIO_BT8XX=y
# CONFIG_GPIO_MLXBF is not set
CONFIG_GPIO_MLXBF2=y
CONFIG_GPIO_MLXBF3=y
CONFIG_GPIO_ML_IOH=y
# CONFIG_GPIO_PCH is not set
# CONFIG_GPIO_PCI_IDIO_16 is not set
CONFIG_GPIO_PCIE_IDIO_24=y
CONFIG_GPIO_RDC321X=y
# end of PCI GPIO expanders

#
# Virtual GPIO drivers
#
CONFIG_GPIO_AGGREGATOR=y
# CONFIG_GPIO_LATCH is not set
CONFIG_GPIO_MOCKUP=y
CONFIG_GPIO_VIRTIO=y
# CONFIG_GPIO_SIM is not set
# end of Virtual GPIO drivers

CONFIG_W1=y
CONFIG_W1_CON=y

#
# 1-wire Bus Masters
#
CONFIG_W1_MASTER_AMD_AXI=y
# CONFIG_W1_MASTER_MATROX is not set
# CONFIG_W1_MASTER_DS2482 is not set
# CONFIG_W1_MASTER_MXC is not set
CONFIG_W1_MASTER_GPIO=y
CONFIG_HDQ_MASTER_OMAP=y
CONFIG_W1_MASTER_SGI=y
# end of 1-wire Bus Masters

#
# 1-wire Slaves
#
# CONFIG_W1_SLAVE_THERM is not set
# CONFIG_W1_SLAVE_SMEM is not set
CONFIG_W1_SLAVE_DS2405=y
CONFIG_W1_SLAVE_DS2408=y
CONFIG_W1_SLAVE_DS2408_READBACK=y
CONFIG_W1_SLAVE_DS2413=y
CONFIG_W1_SLAVE_DS2406=y
# CONFIG_W1_SLAVE_DS2423 is not set
# CONFIG_W1_SLAVE_DS2805 is not set
CONFIG_W1_SLAVE_DS2430=y
CONFIG_W1_SLAVE_DS2431=y
# CONFIG_W1_SLAVE_DS2433 is not set
# CONFIG_W1_SLAVE_DS2438 is not set
CONFIG_W1_SLAVE_DS250X=y
CONFIG_W1_SLAVE_DS2780=y
CONFIG_W1_SLAVE_DS2781=y
CONFIG_W1_SLAVE_DS28E04=y
CONFIG_W1_SLAVE_DS28E17=y
# end of 1-wire Slaves

CONFIG_POWER_RESET=y
CONFIG_POWER_RESET_ATC260X=y
# CONFIG_POWER_RESET_BRCMKONA is not set
# CONFIG_POWER_RESET_BRCMSTB is not set
CONFIG_POWER_RESET_OCELOT_RESET=y
CONFIG_POWER_RESET_PIIX4_POWEROFF=y
CONFIG_POWER_RESET_MT6323=y
# CONFIG_POWER_RESET_RESTART is not set
CONFIG_POWER_RESET_KEYSTONE=y
CONFIG_POWER_RESET_RMOBILE=y
CONFIG_POWER_RESET_SC27XX=y
CONFIG_POWER_SUPPLY=y
# CONFIG_POWER_SUPPLY_DEBUG is not set
# CONFIG_POWER_SUPPLY_HWMON is not set
CONFIG_GENERIC_ADC_BATTERY=y
CONFIG_IP5XXX_POWER=y
CONFIG_MAX8925_POWER=y
CONFIG_WM831X_BACKUP=y
# CONFIG_WM831X_POWER is not set
CONFIG_TEST_POWER=y
CONFIG_CHARGER_ADP5061=y
# CONFIG_BATTERY_ACT8945A is not set
# CONFIG_BATTERY_CW2015 is not set
# CONFIG_BATTERY_DS2760 is not set
CONFIG_BATTERY_DS2780=y
# CONFIG_BATTERY_DS2781 is not set
CONFIG_BATTERY_DS2782=y
# CONFIG_BATTERY_SAMSUNG_SDI is not set
CONFIG_BATTERY_INGENIC=y
# CONFIG_BATTERY_SBS is not set
CONFIG_CHARGER_SBS=y
CONFIG_MANAGER_SBS=y
# CONFIG_BATTERY_BQ27XXX is not set
CONFIG_CHARGER_AXP20X=y
# CONFIG_BATTERY_AXP20X is not set
# CONFIG_AXP20X_POWER is not set
# CONFIG_BATTERY_MAX17040 is not set
CONFIG_BATTERY_MAX17042=y
CONFIG_BATTERY_MAX1721X=y
CONFIG_BATTERY_TWL4030_MADC=y
# CONFIG_CHARGER_PCF50633 is not set
# CONFIG_BATTERY_RX51 is not set
# CONFIG_CHARGER_MAX8903 is not set
CONFIG_CHARGER_TWL4030=y
CONFIG_CHARGER_LP8727=y
# CONFIG_CHARGER_GPIO is not set
CONFIG_CHARGER_LT3651=y
CONFIG_CHARGER_LTC4162L=y
CONFIG_CHARGER_MAX77976=y
CONFIG_BATTERY_PM8916_BMS_VM=y
CONFIG_CHARGER_PM8916_LBC=y
CONFIG_CHARGER_BQ2415X=y
CONFIG_CHARGER_BQ24190=y
# CONFIG_CHARGER_BQ24257 is not set
CONFIG_CHARGER_BQ24735=y
CONFIG_CHARGER_BQ2515X=y
CONFIG_CHARGER_BQ25890=y
CONFIG_CHARGER_BQ25980=y
CONFIG_CHARGER_BQ256XX=y
CONFIG_CHARGER_TPS65090=y
CONFIG_BATTERY_GAUGE_LTC2941=y
CONFIG_BATTERY_GOLDFISH=y
CONFIG_BATTERY_RT5033=y
# CONFIG_CHARGER_RT5033 is not set
CONFIG_CHARGER_RT9455=y
CONFIG_CHARGER_SC2731=y
CONFIG_FUEL_GAUGE_SC27XX=y
# CONFIG_CHARGER_BD99954 is not set
CONFIG_BATTERY_UG3105=y
CONFIG_FUEL_GAUGE_MM8013=y
CONFIG_HWMON=y
CONFIG_HWMON_VID=y
CONFIG_HWMON_DEBUG_CHIP=y

#
# Native drivers
#
CONFIG_SENSORS_ABITUGURU=y
CONFIG_SENSORS_ABITUGURU3=y
# CONFIG_SENSORS_AD7414 is not set
CONFIG_SENSORS_AD7418=y
CONFIG_SENSORS_ADM1025=y
CONFIG_SENSORS_ADM1026=y
CONFIG_SENSORS_ADM1029=y
CONFIG_SENSORS_ADM1031=y
# CONFIG_SENSORS_ADM1177 is not set
CONFIG_SENSORS_ADM9240=y
CONFIG_SENSORS_ADT7X10=y
CONFIG_SENSORS_ADT7410=y
# CONFIG_SENSORS_ADT7411 is not set
# CONFIG_SENSORS_ADT7462 is not set
CONFIG_SENSORS_ADT7470=y
CONFIG_SENSORS_ADT7475=y
CONFIG_SENSORS_AHT10=y
# CONFIG_SENSORS_AS370 is not set
CONFIG_SENSORS_ASC7621=y
CONFIG_SENSORS_AXI_FAN_CONTROL=y
CONFIG_SENSORS_K8TEMP=y
# CONFIG_SENSORS_K10TEMP is not set
CONFIG_SENSORS_FAM15H_POWER=y
# CONFIG_SENSORS_APPLESMC is not set
CONFIG_SENSORS_ARM_SCMI=y
CONFIG_SENSORS_ARM_SCPI=y
# CONFIG_SENSORS_ASB100 is not set
# CONFIG_SENSORS_ASPEED is not set
# CONFIG_SENSORS_ATXP1 is not set
# CONFIG_SENSORS_BT1_PVT is not set
CONFIG_SENSORS_DRIVETEMP=y
CONFIG_SENSORS_DS620=y
CONFIG_SENSORS_DS1621=y
CONFIG_SENSORS_DA9055=y
CONFIG_SENSORS_I5K_AMB=y
CONFIG_SENSORS_SPARX5=y
# CONFIG_SENSORS_F71805F is not set
# CONFIG_SENSORS_F71882FG is not set
CONFIG_SENSORS_F75375S=y
CONFIG_SENSORS_FSCHMD=y
CONFIG_SENSORS_GL518SM=y
# CONFIG_SENSORS_GL520SM is not set
CONFIG_SENSORS_G760A=y
# CONFIG_SENSORS_G762 is not set
CONFIG_SENSORS_GXP_FAN_CTRL=y
# CONFIG_SENSORS_HIH6130 is not set
# CONFIG_SENSORS_HS3001 is not set
CONFIG_SENSORS_IIO_HWMON=y
CONFIG_SENSORS_I5500=y
# CONFIG_SENSORS_CORETEMP is not set
CONFIG_SENSORS_IT87=y
# CONFIG_SENSORS_JC42 is not set
# CONFIG_SENSORS_POWR1220 is not set
CONFIG_SENSORS_LAN966X=y
CONFIG_SENSORS_LINEAGE=y
CONFIG_SENSORS_LTC2945=y
CONFIG_SENSORS_LTC2947=y
CONFIG_SENSORS_LTC2947_I2C=y
CONFIG_SENSORS_LTC2990=y
CONFIG_SENSORS_LTC2991=y
CONFIG_SENSORS_LTC2992=y
CONFIG_SENSORS_LTC4151=y
# CONFIG_SENSORS_LTC4215 is not set
CONFIG_SENSORS_LTC4222=y
CONFIG_SENSORS_LTC4245=y
CONFIG_SENSORS_LTC4260=y
CONFIG_SENSORS_LTC4261=y
# CONFIG_SENSORS_MAX127 is not set
CONFIG_SENSORS_MAX16065=y
CONFIG_SENSORS_MAX1619=y
CONFIG_SENSORS_MAX1668=y
# CONFIG_SENSORS_MAX197 is not set
CONFIG_SENSORS_MAX31730=y
CONFIG_SENSORS_MAX31760=y
CONFIG_MAX31827=y
# CONFIG_SENSORS_MAX6620 is not set
CONFIG_SENSORS_MAX6621=y
CONFIG_SENSORS_MAX6639=y
CONFIG_SENSORS_MAX6650=y
CONFIG_SENSORS_MAX6697=y
# CONFIG_SENSORS_MAX31790 is not set
# CONFIG_SENSORS_MC34VR500 is not set
CONFIG_SENSORS_MCP3021=y
CONFIG_SENSORS_MLXREG_FAN=y
CONFIG_SENSORS_TC654=y
CONFIG_SENSORS_TPS23861=y
CONFIG_SENSORS_MR75203=y
# CONFIG_SENSORS_LM63 is not set
CONFIG_SENSORS_LM73=y
# CONFIG_SENSORS_LM75 is not set
CONFIG_SENSORS_LM77=y
# CONFIG_SENSORS_LM78 is not set
CONFIG_SENSORS_LM80=y
CONFIG_SENSORS_LM83=y
CONFIG_SENSORS_LM85=y
CONFIG_SENSORS_LM87=y
CONFIG_SENSORS_LM90=y
CONFIG_SENSORS_LM92=y
CONFIG_SENSORS_LM93=y
CONFIG_SENSORS_LM95234=y
# CONFIG_SENSORS_LM95241 is not set
# CONFIG_SENSORS_LM95245 is not set
CONFIG_SENSORS_PC87360=y
CONFIG_SENSORS_PC87427=y
# CONFIG_SENSORS_NTC_THERMISTOR is not set
# CONFIG_SENSORS_NCT6683 is not set
CONFIG_SENSORS_NCT6775_CORE=y
CONFIG_SENSORS_NCT6775=y
# CONFIG_SENSORS_NCT6775_I2C is not set
CONFIG_SENSORS_NCT7802=y
# CONFIG_SENSORS_NPCM7XX is not set
CONFIG_SENSORS_OCC_P8_I2C=y
CONFIG_SENSORS_OCC=y
CONFIG_SENSORS_PCF8591=y
# CONFIG_SENSORS_PECI_CPUTEMP is not set
CONFIG_SENSORS_PECI_DIMMTEMP=y
CONFIG_SENSORS_PECI=y
# CONFIG_PMBUS is not set
# CONFIG_SENSORS_PWM_FAN is not set
CONFIG_SENSORS_RASPBERRYPI_HWMON=y
CONFIG_SENSORS_SL28CPLD=y
CONFIG_SENSORS_SBTSI=y
CONFIG_SENSORS_SBRMI=y
CONFIG_SENSORS_SHT15=y
CONFIG_SENSORS_SHT21=y
# CONFIG_SENSORS_SHT3x is not set
# CONFIG_SENSORS_SHT4x is not set
# CONFIG_SENSORS_SHTC1 is not set
CONFIG_SENSORS_SIS5595=y
# CONFIG_SENSORS_SY7636A is not set
# CONFIG_SENSORS_DME1737 is not set
# CONFIG_SENSORS_EMC1403 is not set
# CONFIG_SENSORS_EMC2103 is not set
CONFIG_SENSORS_EMC2305=y
# CONFIG_SENSORS_EMC6W201 is not set
CONFIG_SENSORS_SMSC47M1=y
CONFIG_SENSORS_SMSC47M192=y
CONFIG_SENSORS_SMSC47B397=y
# CONFIG_SENSORS_STTS751 is not set
CONFIG_SENSORS_SFCTEMP=y
# CONFIG_SENSORS_ADC128D818 is not set
# CONFIG_SENSORS_ADS7828 is not set
CONFIG_SENSORS_AMC6821=y
CONFIG_SENSORS_INA209=y
CONFIG_SENSORS_INA2XX=y
CONFIG_SENSORS_INA238=y
CONFIG_SENSORS_INA3221=y
# CONFIG_SENSORS_TC74 is not set
CONFIG_SENSORS_THMC50=y
# CONFIG_SENSORS_TMP102 is not set
CONFIG_SENSORS_TMP103=y
CONFIG_SENSORS_TMP108=y
CONFIG_SENSORS_TMP401=y
# CONFIG_SENSORS_TMP421 is not set
CONFIG_SENSORS_TMP464=y
# CONFIG_SENSORS_TMP513 is not set
CONFIG_SENSORS_VIA_CPUTEMP=y
# CONFIG_SENSORS_VIA686A is not set
CONFIG_SENSORS_VT1211=y
CONFIG_SENSORS_VT8231=y
# CONFIG_SENSORS_W83773G is not set
CONFIG_SENSORS_W83781D=y
CONFIG_SENSORS_W83791D=y
CONFIG_SENSORS_W83792D=y
CONFIG_SENSORS_W83793=y
CONFIG_SENSORS_W83795=y
CONFIG_SENSORS_W83795_FANCTRL=y
# CONFIG_SENSORS_W83L785TS is not set
CONFIG_SENSORS_W83L786NG=y
CONFIG_SENSORS_W83627HF=y
CONFIG_SENSORS_W83627EHF=y
CONFIG_SENSORS_WM831X=y
CONFIG_THERMAL=y
CONFIG_THERMAL_NETLINK=y
# CONFIG_THERMAL_STATISTICS is not set
# CONFIG_THERMAL_DEBUGFS is not set
CONFIG_THERMAL_EMERGENCY_POWEROFF_DELAY_MS=0
# CONFIG_THERMAL_HWMON is not set
CONFIG_THERMAL_WRITABLE_TRIPS=y
CONFIG_THERMAL_DEFAULT_GOV_STEP_WISE=y
# CONFIG_THERMAL_DEFAULT_GOV_FAIR_SHARE is not set
# CONFIG_THERMAL_DEFAULT_GOV_USER_SPACE is not set
# CONFIG_THERMAL_DEFAULT_GOV_BANG_BANG is not set
CONFIG_THERMAL_GOV_FAIR_SHARE=y
CONFIG_THERMAL_GOV_STEP_WISE=y
CONFIG_THERMAL_GOV_BANG_BANG=y
CONFIG_THERMAL_GOV_USER_SPACE=y
# CONFIG_THERMAL_EMULATION is not set
CONFIG_K3_THERMAL=y
CONFIG_ROCKCHIP_THERMAL=y
CONFIG_RCAR_THERMAL=y

#
# Mediatek thermal drivers
#
# end of Mediatek thermal drivers

#
# Intel thermal drivers
#
CONFIG_X86_THERMAL_VECTOR=y
CONFIG_INTEL_TCC=y
CONFIG_X86_PKG_TEMP_THERMAL=y

#
# ACPI INT340X thermal drivers
#
# end of ACPI INT340X thermal drivers

CONFIG_INTEL_PCH_THERMAL=y
CONFIG_INTEL_TCC_COOLING=y
CONFIG_INTEL_HFI_THERMAL=y
# end of Intel thermal drivers

#
# Broadcom thermal drivers
#
CONFIG_BRCMSTB_THERMAL=y
CONFIG_BCM_NS_THERMAL=y
CONFIG_BCM_SR_THERMAL=y
# end of Broadcom thermal drivers

#
# Texas Instruments thermal drivers
#
CONFIG_TI_SOC_THERMAL=y
# CONFIG_TI_THERMAL is not set
CONFIG_OMAP3_THERMAL=y
# CONFIG_OMAP4_THERMAL is not set
# CONFIG_OMAP5_THERMAL is not set
CONFIG_DRA752_THERMAL=y
# end of Texas Instruments thermal drivers

#
# Samsung thermal drivers
#
# end of Samsung thermal drivers

#
# NVIDIA Tegra thermal drivers
#
# CONFIG_TEGRA_SOCTHERM is not set
CONFIG_TEGRA_BPMP_THERMAL=y
CONFIG_TEGRA30_TSENSOR=y
# end of NVIDIA Tegra thermal drivers

# CONFIG_GENERIC_ADC_THERMAL is not set

#
# Qualcomm thermal drivers
#
# CONFIG_QCOM_TSENS is not set
# end of Qualcomm thermal drivers

# CONFIG_SPRD_THERMAL is not set
# CONFIG_WATCHDOG is not set
CONFIG_SSB_POSSIBLE=y
CONFIG_SSB=y
CONFIG_SSB_SPROM=y
CONFIG_SSB_PCIHOST_POSSIBLE=y
CONFIG_SSB_PCIHOST=y
CONFIG_SSB_PCMCIAHOST_POSSIBLE=y
CONFIG_SSB_PCMCIAHOST=y
CONFIG_SSB_DRIVER_PCICORE_POSSIBLE=y
CONFIG_SSB_DRIVER_PCICORE=y
# CONFIG_SSB_DRIVER_GPIO is not set
CONFIG_BCMA_POSSIBLE=y
CONFIG_BCMA=y
CONFIG_BCMA_HOST_PCI_POSSIBLE=y
# CONFIG_BCMA_HOST_PCI is not set
CONFIG_BCMA_HOST_SOC=y
# CONFIG_BCMA_DRIVER_PCI is not set
CONFIG_BCMA_DRIVER_MIPS=y
CONFIG_BCMA_PFLASH=y
CONFIG_BCMA_SFLASH=y
CONFIG_BCMA_NFLASH=y
# CONFIG_BCMA_DRIVER_GMAC_CMN is not set
# CONFIG_BCMA_DRIVER_GPIO is not set
CONFIG_BCMA_DEBUG=y

#
# Multifunction device drivers
#
CONFIG_MFD_CORE=y
# CONFIG_MFD_CS5535 is not set
CONFIG_MFD_SUN4I_GPADC=y
CONFIG_MFD_AS3711=y
# CONFIG_MFD_SMPRO is not set
CONFIG_PMIC_ADP5520=y
CONFIG_MFD_AAT2870_CORE=y
# CONFIG_MFD_AT91_USART is not set
CONFIG_MFD_BCM590XX=y
CONFIG_MFD_BD9571MWV=y
CONFIG_MFD_AXP20X=y
CONFIG_MFD_AXP20X_I2C=y
# CONFIG_MFD_CROS_EC_DEV is not set
CONFIG_MFD_CS42L43=y
CONFIG_MFD_CS42L43_I2C=y
# CONFIG_MFD_MADERA is not set
# CONFIG_PMIC_DA903X is not set
# CONFIG_MFD_DA9052_I2C is not set
CONFIG_MFD_DA9055=y
CONFIG_MFD_DA9062=y
CONFIG_MFD_DA9063=y
# CONFIG_MFD_DA9150 is not set
CONFIG_MFD_ENE_KB3930=y
CONFIG_MFD_EXYNOS_LPASS=y
# CONFIG_MFD_MC13XXX_I2C is not set
# CONFIG_MFD_MP2629 is not set
CONFIG_MFD_MXS_LRADC=y
# CONFIG_MFD_MX25_TSADC is not set
CONFIG_LPC_ICH=y
CONFIG_LPC_SCH=y
# CONFIG_MFD_INTEL_LPSS_PCI is not set
CONFIG_MFD_IQS62X=y
CONFIG_MFD_JANZ_CMODIO=y
CONFIG_MFD_KEMPLD=y
# CONFIG_MFD_88PM800 is not set
# CONFIG_MFD_88PM805 is not set
# CONFIG_MFD_88PM860X is not set
# CONFIG_MFD_MAX14577 is not set
# CONFIG_MFD_MAX77541 is not set
# CONFIG_MFD_MAX77693 is not set
CONFIG_MFD_MAX77843=y
CONFIG_MFD_MAX8907=y
CONFIG_MFD_MAX8925=y
# CONFIG_MFD_MAX8997 is not set
# CONFIG_MFD_MAX8998 is not set
CONFIG_MFD_MT6360=y
CONFIG_MFD_MT6370=y
CONFIG_MFD_MT6397=y
# CONFIG_MFD_MENF21BMC is not set
CONFIG_MFD_RETU=y
CONFIG_MFD_PCF50633=y
CONFIG_PCF50633_ADC=y
CONFIG_PCF50633_GPIO=y
CONFIG_MFD_PM8XXX=y
CONFIG_MFD_SY7636A=y
CONFIG_MFD_RDC321X=y
CONFIG_MFD_RT4831=y
CONFIG_MFD_RT5033=y
CONFIG_MFD_RT5120=y
CONFIG_MFD_RC5T583=y
CONFIG_MFD_SI476X_CORE=y
CONFIG_MFD_SIMPLE_MFD_I2C=y
# CONFIG_MFD_SL28CPLD is not set
CONFIG_MFD_SM501=y
# CONFIG_MFD_SM501_GPIO is not set
# CONFIG_MFD_SKY81452 is not set
CONFIG_RZ_MTU3=y
CONFIG_ABX500_CORE=y
CONFIG_MFD_SUN6I_PRCM=y
CONFIG_MFD_SYSCON=y
# CONFIG_MFD_TI_AM335X_TSCADC is not set
CONFIG_MFD_LP3943=y
CONFIG_MFD_LP8788=y
CONFIG_MFD_TI_LMU=y
CONFIG_MFD_PALMAS=y
# CONFIG_TPS6105X is not set
CONFIG_TPS65010=y
CONFIG_TPS6507X=y
# CONFIG_MFD_TPS65086 is not set
CONFIG_MFD_TPS65090=y
# CONFIG_MFD_TI_LP873X is not set
CONFIG_MFD_TPS6586X=y
# CONFIG_MFD_TPS65910 is not set
CONFIG_MFD_TPS65912=y
CONFIG_MFD_TPS65912_I2C=y
CONFIG_MFD_TPS6594=y
CONFIG_MFD_TPS6594_I2C=y
CONFIG_TWL4030_CORE=y
CONFIG_MFD_TWL4030_AUDIO=y
CONFIG_TWL6040_CORE=y
# CONFIG_MFD_WL1273_CORE is not set
CONFIG_MFD_LM3533=y
CONFIG_MFD_TIMBERDALE=y
CONFIG_MFD_TQMX86=y
# CONFIG_MFD_VX855 is not set
CONFIG_MFD_ARIZONA=y
CONFIG_MFD_ARIZONA_I2C=y
# CONFIG_MFD_CS47L24 is not set
# CONFIG_MFD_WM5102 is not set
# CONFIG_MFD_WM5110 is not set
CONFIG_MFD_WM8997=y
# CONFIG_MFD_WM8998 is not set
# CONFIG_MFD_WM8400 is not set
CONFIG_MFD_WM831X=y
CONFIG_MFD_WM831X_I2C=y
# CONFIG_MFD_WM8350_I2C is not set
CONFIG_MFD_WM8994=y
CONFIG_MFD_STW481X=y
# CONFIG_MFD_STM32_LPTIMER is not set
CONFIG_MFD_STM32_TIMERS=y
CONFIG_MFD_WCD934X=y
CONFIG_MFD_ATC260X=y
CONFIG_MFD_ATC260X_I2C=y
CONFIG_MFD_KHADAS_MCU=y
# CONFIG_MFD_ACER_A500_EC is not set
# CONFIG_RAVE_SP_CORE is not set
# end of Multifunction device drivers

# CONFIG_REGULATOR is not set
# CONFIG_RC_CORE is not set
CONFIG_CEC_CORE=y

#
# CEC support
#
# CONFIG_MEDIA_CEC_SUPPORT is not set
# end of CEC support

CONFIG_MEDIA_SUPPORT=y
CONFIG_MEDIA_SUPPORT_FILTER=y
# CONFIG_MEDIA_SUBDRV_AUTOSELECT is not set

#
# Media device types
#
CONFIG_MEDIA_CAMERA_SUPPORT=y
CONFIG_MEDIA_ANALOG_TV_SUPPORT=y
# CONFIG_MEDIA_DIGITAL_TV_SUPPORT is not set
# CONFIG_MEDIA_RADIO_SUPPORT is not set
CONFIG_MEDIA_SDR_SUPPORT=y
CONFIG_MEDIA_PLATFORM_SUPPORT=y
CONFIG_MEDIA_TEST_SUPPORT=y
# end of Media device types

CONFIG_VIDEO_DEV=y
CONFIG_MEDIA_CONTROLLER=y

#
# Video4Linux options
#
CONFIG_VIDEO_V4L2_I2C=y
CONFIG_VIDEO_V4L2_SUBDEV_API=y
# CONFIG_VIDEO_ADV_DEBUG is not set
# CONFIG_VIDEO_FIXED_MINOR_RANGES is not set
CONFIG_V4L2_FLASH_LED_CLASS=y
CONFIG_V4L2_FWNODE=y
CONFIG_V4L2_ASYNC=y
CONFIG_V4L2_CCI=y
CONFIG_V4L2_CCI_I2C=y
# end of Video4Linux options

#
# Media controller options
#
# end of Media controller options

#
# Media drivers
#

#
# Drivers filtered as selected at 'Filter media drivers'
#

#
# Media drivers
#
# CONFIG_MEDIA_PCI_SUPPORT is not set
# CONFIG_MEDIA_PLATFORM_DRIVERS is not set
# CONFIG_V4L_TEST_DRIVERS is not set
CONFIG_VIDEOBUF2_CORE=y
CONFIG_VIDEOBUF2_V4L2=y
CONFIG_VIDEOBUF2_MEMOPS=y
CONFIG_VIDEOBUF2_VMALLOC=y
# end of Media drivers

#
# Media ancillary drivers
#
# CONFIG_VIDEO_CAMERA_SENSOR is not set

#
# Camera ISPs
#
CONFIG_VIDEO_THP7312=y
# end of Camera ISPs

#
# Lens drivers
#
# CONFIG_VIDEO_AD5820 is not set
# CONFIG_VIDEO_AK7375 is not set
CONFIG_VIDEO_DW9714=y
CONFIG_VIDEO_DW9719=y
CONFIG_VIDEO_DW9768=y
# CONFIG_VIDEO_DW9807_VCM is not set
# end of Lens drivers

#
# Flash devices
#
CONFIG_VIDEO_ADP1653=y
# CONFIG_VIDEO_LM3560 is not set
# CONFIG_VIDEO_LM3646 is not set
# end of Flash devices

#
# Audio decoders, processors and mixers
#
# CONFIG_VIDEO_CS3308 is not set
CONFIG_VIDEO_CS5345=y
# CONFIG_VIDEO_CS53L32A is not set
CONFIG_VIDEO_MSP3400=y
CONFIG_VIDEO_SONY_BTF_MPX=y
# CONFIG_VIDEO_TDA7432 is not set
# CONFIG_VIDEO_TDA9840 is not set
CONFIG_VIDEO_TEA6415C=y
CONFIG_VIDEO_TEA6420=y
# CONFIG_VIDEO_TLV320AIC23B is not set
CONFIG_VIDEO_TVAUDIO=y
CONFIG_VIDEO_UDA1342=y
# CONFIG_VIDEO_VP27SMPX is not set
CONFIG_VIDEO_WM8739=y
# CONFIG_VIDEO_WM8775 is not set
# end of Audio decoders, processors and mixers

#
# RDS decoders
#
CONFIG_VIDEO_SAA6588=y
# end of RDS decoders

#
# Video decoders
#
# CONFIG_VIDEO_ADV7180 is not set
CONFIG_VIDEO_ADV7183=y
CONFIG_VIDEO_ADV7604=y
# CONFIG_VIDEO_ADV7604_CEC is not set
# CONFIG_VIDEO_ADV7842 is not set
# CONFIG_VIDEO_BT819 is not set
CONFIG_VIDEO_BT856=y
CONFIG_VIDEO_BT866=y
CONFIG_VIDEO_KS0127=y
CONFIG_VIDEO_ML86V7667=y
CONFIG_VIDEO_SAA7110=y
CONFIG_VIDEO_SAA711X=y
CONFIG_VIDEO_TC358743=y
CONFIG_VIDEO_TC358743_CEC=y
CONFIG_VIDEO_TVP514X=y
CONFIG_VIDEO_TVP5150=y
CONFIG_VIDEO_TVP7002=y
CONFIG_VIDEO_TW2804=y
CONFIG_VIDEO_TW9903=y
# CONFIG_VIDEO_TW9906 is not set
CONFIG_VIDEO_TW9910=y
CONFIG_VIDEO_VPX3220=y

#
# Video and audio decoders
#
CONFIG_VIDEO_SAA717X=y
CONFIG_VIDEO_CX25840=y
# end of Video decoders

#
# Video encoders
#
# CONFIG_VIDEO_ADV7170 is not set
# CONFIG_VIDEO_ADV7175 is not set
CONFIG_VIDEO_ADV7343=y
CONFIG_VIDEO_ADV7393=y
# CONFIG_VIDEO_ADV7511 is not set
# CONFIG_VIDEO_AK881X is not set
# CONFIG_VIDEO_SAA7127 is not set
# CONFIG_VIDEO_SAA7185 is not set
# CONFIG_VIDEO_THS8200 is not set
# end of Video encoders

#
# Video improvement chips
#
# CONFIG_VIDEO_UPD64031A is not set
# CONFIG_VIDEO_UPD64083 is not set
# end of Video improvement chips

#
# Audio/Video compression chips
#
CONFIG_VIDEO_SAA6752HS=y
# end of Audio/Video compression chips

#
# SDR tuner chips
#
CONFIG_SDR_MAX2175=y
# end of SDR tuner chips

#
# Miscellaneous helper chips
#
CONFIG_VIDEO_I2C=y
CONFIG_VIDEO_M52790=y
# CONFIG_VIDEO_ST_MIPID02 is not set
CONFIG_VIDEO_THS7303=y
# end of Miscellaneous helper chips

#
# Video serializers and deserializers
#
# end of Video serializers and deserializers

CONFIG_MEDIA_TUNER=y

#
# Customize TV tuners
#
CONFIG_MEDIA_TUNER_E4000=y
CONFIG_MEDIA_TUNER_FC0011=y
CONFIG_MEDIA_TUNER_FC0012=y
CONFIG_MEDIA_TUNER_FC0013=y
CONFIG_MEDIA_TUNER_FC2580=y
# CONFIG_MEDIA_TUNER_IT913X is not set
# CONFIG_MEDIA_TUNER_M88RS6000T is not set
CONFIG_MEDIA_TUNER_MAX2165=y
# CONFIG_MEDIA_TUNER_MC44S803 is not set
CONFIG_MEDIA_TUNER_MT2060=y
# CONFIG_MEDIA_TUNER_MT2063 is not set
# CONFIG_MEDIA_TUNER_MT20XX is not set
CONFIG_MEDIA_TUNER_MT2131=y
CONFIG_MEDIA_TUNER_MT2266=y
CONFIG_MEDIA_TUNER_MXL301RF=y
# CONFIG_MEDIA_TUNER_MXL5005S is not set
# CONFIG_MEDIA_TUNER_MXL5007T is not set
# CONFIG_MEDIA_TUNER_QM1D1B0004 is not set
# CONFIG_MEDIA_TUNER_QM1D1C0042 is not set
CONFIG_MEDIA_TUNER_QT1010=y
# CONFIG_MEDIA_TUNER_R820T is not set
CONFIG_MEDIA_TUNER_SI2157=y
# CONFIG_MEDIA_TUNER_SIMPLE is not set
CONFIG_MEDIA_TUNER_TDA18212=y
CONFIG_MEDIA_TUNER_TDA18218=y
# CONFIG_MEDIA_TUNER_TDA18250 is not set
CONFIG_MEDIA_TUNER_TDA18271=y
CONFIG_MEDIA_TUNER_TDA827X=y
CONFIG_MEDIA_TUNER_TDA8290=y
CONFIG_MEDIA_TUNER_TDA9887=y
# CONFIG_MEDIA_TUNER_TEA5761 is not set
CONFIG_MEDIA_TUNER_TEA5767=y
# CONFIG_MEDIA_TUNER_TUA9001 is not set
CONFIG_MEDIA_TUNER_XC2028=y
CONFIG_MEDIA_TUNER_XC4000=y
# CONFIG_MEDIA_TUNER_XC5000 is not set
# end of Customize TV tuners

#
# Tools to develop new frontends
#
# end of Media ancillary drivers

#
# Graphics support
#
CONFIG_APERTURE_HELPERS=y
CONFIG_VIDEO_CMDLINE=y
CONFIG_VIDEO_NOMODESET=y
CONFIG_AUXDISPLAY=y
CONFIG_CHARLCD=y
CONFIG_LINEDISP=y
CONFIG_HD44780_COMMON=y
CONFIG_HD44780=y
CONFIG_KS0108=y
CONFIG_KS0108_PORT=0x378
CONFIG_KS0108_DELAY=2
# CONFIG_CFAG12864B is not set
CONFIG_IMG_ASCII_LCD=y
CONFIG_HT16K33=y
# CONFIG_LCD2S is not set
CONFIG_PARPORT_PANEL=y
CONFIG_PANEL_PARPORT=0
CONFIG_PANEL_PROFILE=5
CONFIG_PANEL_CHANGE_MESSAGE=y
CONFIG_PANEL_BOOT_MESSAGE=""
# CONFIG_CHARLCD_BL_OFF is not set
# CONFIG_CHARLCD_BL_ON is not set
CONFIG_CHARLCD_BL_FLASH=y
CONFIG_PANEL=y
CONFIG_AGP=y
CONFIG_AGP_AMD64=y
CONFIG_AGP_INTEL=y
# CONFIG_AGP_SIS is not set
CONFIG_AGP_VIA=y
CONFIG_INTEL_GTT=y
# CONFIG_TEGRA_HOST1X is not set
CONFIG_IMX_IPUV3_CORE=y
# CONFIG_DRM is not set

#
# Frame buffer Devices
#
CONFIG_FB=y
CONFIG_FB_HECUBA=y
CONFIG_FB_SVGALIB=y
CONFIG_FB_CIRRUS=y
# CONFIG_FB_PM2 is not set
CONFIG_FB_CLPS711X=y
# CONFIG_FB_CYBER2000 is not set
# CONFIG_FB_ARC is not set
# CONFIG_FB_CONTROL is not set
# CONFIG_FB_ASILIANT is not set
# CONFIG_FB_IMSTT is not set
CONFIG_FB_VGA16=y
CONFIG_FB_UVESA=y
CONFIG_FB_VESA=y
CONFIG_FB_N411=y
# CONFIG_FB_HGA is not set
# CONFIG_FB_GBE is not set
CONFIG_FB_PVR2=y
CONFIG_FB_OPENCORES=y
CONFIG_FB_S1D13XXX=y
# CONFIG_FB_NVIDIA is not set
CONFIG_FB_RIVA=y
CONFIG_FB_RIVA_I2C=y
# CONFIG_FB_RIVA_DEBUG is not set
# CONFIG_FB_RIVA_BACKLIGHT is not set
# CONFIG_FB_I740 is not set
CONFIG_FB_MATROX=y
# CONFIG_FB_MATROX_MILLENIUM is not set
CONFIG_FB_MATROX_MYSTIQUE=y
CONFIG_FB_MATROX_G=y
CONFIG_FB_MATROX_I2C=y
CONFIG_FB_MATROX_MAVEN=y
CONFIG_FB_RADEON=y
CONFIG_FB_RADEON_I2C=y
CONFIG_FB_RADEON_BACKLIGHT=y
# CONFIG_FB_RADEON_DEBUG is not set
CONFIG_FB_ATY128=y
CONFIG_FB_ATY128_BACKLIGHT=y
# CONFIG_FB_ATY is not set
# CONFIG_FB_S3 is not set
# CONFIG_FB_SAVAGE is not set
CONFIG_FB_SIS=y
CONFIG_FB_SIS_300=y
# CONFIG_FB_SIS_315 is not set
# CONFIG_FB_VIA is not set
CONFIG_FB_NEOMAGIC=y
CONFIG_FB_KYRO=y
CONFIG_FB_3DFX=y
# CONFIG_FB_3DFX_ACCEL is not set
# CONFIG_FB_3DFX_I2C is not set
CONFIG_FB_VT8623=y
CONFIG_FB_TRIDENT=y
CONFIG_FB_ARK=y
CONFIG_FB_PM3=y
# CONFIG_FB_CARMINE is not set
# CONFIG_FB_WM8505 is not set
CONFIG_FB_GEODE=y
CONFIG_FB_GEODE_LX=y
CONFIG_FB_GEODE_GX=y
CONFIG_FB_GEODE_GX1=y
# CONFIG_FB_SM501 is not set
CONFIG_FB_IBM_GXT4500=y
# CONFIG_FB_GOLDFISH is not set
CONFIG_FB_VIRTUAL=y
# CONFIG_FB_METRONOME is not set
# CONFIG_FB_MB862XX is not set
CONFIG_FB_BROADSHEET=y
# CONFIG_FB_SIMPLE is not set
CONFIG_FB_SSD1307=y
CONFIG_FB_SM712=y
# CONFIG_MMP_DISP is not set
CONFIG_FB_CORE=y
CONFIG_FB_NOTIFY=y
CONFIG_FIRMWARE_EDID=y
# CONFIG_FB_DEVICE is not set
CONFIG_FB_DDC=y
CONFIG_FB_CFB_FILLRECT=y
CONFIG_FB_CFB_COPYAREA=y
CONFIG_FB_CFB_IMAGEBLIT=y
CONFIG_FB_SYS_FILLRECT=y
CONFIG_FB_SYS_COPYAREA=y
CONFIG_FB_SYS_IMAGEBLIT=y
# CONFIG_FB_FOREIGN_ENDIAN is not set
CONFIG_FB_SYSMEM_FOPS=y
CONFIG_FB_DEFERRED_IO=y
CONFIG_FB_IOMEM_FOPS=y
CONFIG_FB_IOMEM_HELPERS=y
CONFIG_FB_SYSMEM_HELPERS=y
CONFIG_FB_SYSMEM_HELPERS_DEFERRED=y
CONFIG_FB_BACKLIGHT=y
CONFIG_FB_MODE_HELPERS=y
CONFIG_FB_TILEBLITTING=y
# end of Frame buffer Devices

#
# Backlight & LCD device support
#
CONFIG_LCD_CLASS_DEVICE=y
CONFIG_LCD_PLATFORM=y
CONFIG_BACKLIGHT_CLASS_DEVICE=y
CONFIG_BACKLIGHT_KTD253=y
# CONFIG_BACKLIGHT_KTZ8866 is not set
CONFIG_BACKLIGHT_LM3533=y
CONFIG_BACKLIGHT_OMAP1=y
CONFIG_BACKLIGHT_PWM=y
CONFIG_BACKLIGHT_MAX8925=y
CONFIG_BACKLIGHT_MT6370=y
# CONFIG_BACKLIGHT_QCOM_WLED is not set
CONFIG_BACKLIGHT_RT4831=y
CONFIG_BACKLIGHT_SAHARA=y
CONFIG_BACKLIGHT_WM831X=y
CONFIG_BACKLIGHT_ADP5520=y
CONFIG_BACKLIGHT_ADP8860=y
CONFIG_BACKLIGHT_ADP8870=y
CONFIG_BACKLIGHT_PCF50633=y
CONFIG_BACKLIGHT_AAT2870=y
# CONFIG_BACKLIGHT_LM3630A is not set
# CONFIG_BACKLIGHT_LM3639 is not set
CONFIG_BACKLIGHT_LP855X=y
CONFIG_BACKLIGHT_LP8788=y
CONFIG_BACKLIGHT_MP3309C=y
CONFIG_BACKLIGHT_PANDORA=y
# CONFIG_BACKLIGHT_AS3711 is not set
# CONFIG_BACKLIGHT_GPIO is not set
CONFIG_BACKLIGHT_LV5207LP=y
CONFIG_BACKLIGHT_BD6107=y
# CONFIG_BACKLIGHT_ARCXCNN is not set
# end of Backlight & LCD device support

CONFIG_VGASTATE=y
CONFIG_VIDEOMODE_HELPERS=y
CONFIG_HDMI=y

#
# Console display driver support
#
CONFIG_VGA_CONSOLE=y
CONFIG_DUMMY_CONSOLE=y
CONFIG_DUMMY_CONSOLE_COLUMNS=80
CONFIG_DUMMY_CONSOLE_ROWS=25
# CONFIG_FRAMEBUFFER_CONSOLE is not set
# end of Console display driver support

# CONFIG_LOGO is not set
# end of Graphics support

# CONFIG_SOUND is not set
# CONFIG_HID_SUPPORT is not set
CONFIG_USB_OHCI_LITTLE_ENDIAN=y
# CONFIG_USB_SUPPORT is not set
# CONFIG_MMC is not set
# CONFIG_SCSI_UFSHCD is not set
# CONFIG_MEMSTICK is not set
CONFIG_NEW_LEDS=y
CONFIG_LEDS_CLASS=y
CONFIG_LEDS_CLASS_FLASH=y
CONFIG_LEDS_CLASS_MULTICOLOR=y
CONFIG_LEDS_BRIGHTNESS_HW_CHANGED=y

#
# LED drivers
#
# CONFIG_LEDS_APU is not set
CONFIG_LEDS_ARIEL=y
# CONFIG_LEDS_AW200XX is not set
CONFIG_LEDS_LM3530=y
CONFIG_LEDS_LM3532=y
CONFIG_LEDS_LM3533=y
# CONFIG_LEDS_LM3642 is not set
CONFIG_LEDS_MT6323=y
CONFIG_LEDS_COBALT_QUBE=y
CONFIG_LEDS_COBALT_RAQ=y
CONFIG_LEDS_SUN50I_A100=y
# CONFIG_LEDS_PCA9532 is not set
# CONFIG_LEDS_GPIO is not set
CONFIG_LEDS_LP3944=y
# CONFIG_LEDS_LP3952 is not set
CONFIG_LEDS_LP50XX=y
# CONFIG_LEDS_LP8788 is not set
# CONFIG_LEDS_PCA955X is not set
CONFIG_LEDS_PCA963X=y
# CONFIG_LEDS_PCA995X is not set
CONFIG_LEDS_WM831X_STATUS=y
# CONFIG_LEDS_PWM is not set
CONFIG_LEDS_BD2606MVV=y
CONFIG_LEDS_BD2802=y
CONFIG_LEDS_INTEL_SS4200=y
CONFIG_LEDS_LT3593=y
# CONFIG_LEDS_ADP5520 is not set
CONFIG_LEDS_NS2=y
# CONFIG_LEDS_TCA6507 is not set
CONFIG_LEDS_TLC591XX=y
CONFIG_LEDS_LM355x=y
# CONFIG_LEDS_OT200 is not set
# CONFIG_LEDS_IS31FL319X is not set

#
# LED driver for blink(1) USB RGB LED is under Special HID drivers (HID_THINGM)
#
# CONFIG_LEDS_BLINKM is not set
# CONFIG_LEDS_PM8058 is not set
# CONFIG_LEDS_MLXCPLD is not set
CONFIG_LEDS_MLXREG=y
CONFIG_LEDS_USER=y
CONFIG_LEDS_TI_LMU_COMMON=y
CONFIG_LEDS_LM36274=y
# CONFIG_LEDS_IP30 is not set

#
# Flash and Torch LED drivers
#
# CONFIG_LEDS_AS3645A is not set
CONFIG_LEDS_LM3601X=y
CONFIG_LEDS_MT6370_FLASH=y
CONFIG_LEDS_RT8515=y
CONFIG_LEDS_SGM3140=y

#
# RGB LED drivers
#
CONFIG_LEDS_PWM_MULTICOLOR=y
CONFIG_LEDS_MT6370_RGB=y

#
# LED Triggers
#
CONFIG_LEDS_TRIGGERS=y
CONFIG_LEDS_TRIGGER_TIMER=y
CONFIG_LEDS_TRIGGER_ONESHOT=y
# CONFIG_LEDS_TRIGGER_DISK is not set
# CONFIG_LEDS_TRIGGER_MTD is not set
# CONFIG_LEDS_TRIGGER_HEARTBEAT is not set
# CONFIG_LEDS_TRIGGER_BACKLIGHT is not set
CONFIG_LEDS_TRIGGER_CPU=y
CONFIG_LEDS_TRIGGER_ACTIVITY=y
CONFIG_LEDS_TRIGGER_GPIO=y
# CONFIG_LEDS_TRIGGER_DEFAULT_ON is not set

#
# iptables trigger is under Netfilter config (LED target)
#
# CONFIG_LEDS_TRIGGER_TRANSIENT is not set
# CONFIG_LEDS_TRIGGER_CAMERA is not set
# CONFIG_LEDS_TRIGGER_PANIC is not set
CONFIG_LEDS_TRIGGER_NETDEV=y
# CONFIG_LEDS_TRIGGER_PATTERN is not set
CONFIG_LEDS_TRIGGER_AUDIO=y
CONFIG_LEDS_TRIGGER_TTY=y

#
# Simple LED drivers
#
# CONFIG_ACCESSIBILITY is not set
CONFIG_INFINIBAND=y
# CONFIG_INFINIBAND_USER_MAD is not set
CONFIG_INFINIBAND_USER_ACCESS=y
CONFIG_INFINIBAND_USER_MEM=y
# CONFIG_INFINIBAND_ON_DEMAND_PAGING is not set
CONFIG_INFINIBAND_ADDR_TRANS=y
CONFIG_INFINIBAND_ADDR_TRANS_CONFIGFS=y
CONFIG_INFINIBAND_VIRT_DMA=y
# CONFIG_INFINIBAND_CXGB4 is not set
# CONFIG_MLX4_INFINIBAND is not set
CONFIG_MLX5_INFINIBAND=y
CONFIG_INFINIBAND_MTHCA=y
CONFIG_INFINIBAND_MTHCA_DEBUG=y
CONFIG_INFINIBAND_OCRDMA=y
CONFIG_INFINIBAND_VMWARE_PVRDMA=y
# CONFIG_INFINIBAND_RDMAVT is not set
# CONFIG_RDMA_RXE is not set
CONFIG_RDMA_SIW=y
CONFIG_INFINIBAND_IPOIB=y
# CONFIG_INFINIBAND_IPOIB_CM is not set
CONFIG_INFINIBAND_IPOIB_DEBUG=y
CONFIG_INFINIBAND_IPOIB_DEBUG_DATA=y
CONFIG_INFINIBAND_SRP=y
# CONFIG_INFINIBAND_SRPT is not set
# CONFIG_INFINIBAND_ISER is not set
CONFIG_INFINIBAND_RTRS=y
CONFIG_INFINIBAND_RTRS_CLIENT=y
# CONFIG_INFINIBAND_RTRS_SERVER is not set
CONFIG_INFINIBAND_OPA_VNIC=y
CONFIG_EDAC_ATOMIC_SCRUB=y
CONFIG_EDAC_SUPPORT=y
CONFIG_EDAC=y
# CONFIG_EDAC_LEGACY_SYSFS is not set
# CONFIG_EDAC_DEBUG is not set
# CONFIG_EDAC_AL_MC is not set
CONFIG_EDAC_E752X=y
CONFIG_EDAC_I82975X=y
CONFIG_EDAC_I3000=y
CONFIG_EDAC_I3200=y
# CONFIG_EDAC_IE31200 is not set
CONFIG_EDAC_X38=y
CONFIG_EDAC_I5400=y
# CONFIG_EDAC_I5100 is not set
CONFIG_EDAC_I7300=y
CONFIG_EDAC_XGENE=y
# CONFIG_EDAC_ZYNQMP is not set
# CONFIG_EDAC_NPCM is not set
CONFIG_EDAC_VERSAL=y
CONFIG_RTC_LIB=y
CONFIG_RTC_MC146818_LIB=y
# CONFIG_RTC_CLASS is not set
CONFIG_DMADEVICES=y
# CONFIG_DMADEVICES_DEBUG is not set

#
# DMA Devices
#
CONFIG_ASYNC_TX_ENABLE_CHANNEL_SWITCH=y
CONFIG_DMA_ENGINE=y
CONFIG_DMA_VIRTUAL_CHANNELS=y
CONFIG_ALTERA_MSGDMA=y
CONFIG_APPLE_ADMAC=y
CONFIG_AXI_DMAC=y
CONFIG_BCM_SBA_RAID=y
CONFIG_DMA_JZ4780=y
# CONFIG_DMA_SA11X0 is not set
CONFIG_DMA_SUN6I=y
CONFIG_EP93XX_DMA=y
# CONFIG_IMG_MDC_DMA is not set
# CONFIG_INTEL_IDMA64 is not set
# CONFIG_INTEL_IDXD_COMPAT is not set
CONFIG_INTEL_IOATDMA=y
# CONFIG_K3_DMA is not set
# CONFIG_LS2X_APB_DMA is not set
CONFIG_MCF_EDMA=y
CONFIG_MMP_PDMA=y
# CONFIG_MMP_TDMA is not set
# CONFIG_MV_XOR is not set
# CONFIG_MXS_DMA is not set
CONFIG_NBPFAXI_DMA=y
# CONFIG_PCH_DMA is not set
CONFIG_PLX_DMA=y
CONFIG_STM32_DMA=y
CONFIG_STM32_DMAMUX=y
CONFIG_SPRD_DMA=y
CONFIG_TEGRA186_GPC_DMA=y
CONFIG_TEGRA20_APB_DMA=y
CONFIG_TEGRA210_ADMA=y
# CONFIG_TIMB_DMA is not set
CONFIG_XGENE_DMA=y
CONFIG_XILINX_DMA=y
# CONFIG_XILINX_XDMA is not set
CONFIG_XILINX_ZYNQMP_DMA=y
CONFIG_MTK_HSDMA=y
CONFIG_MTK_CQDMA=y
# CONFIG_AMD_PTDMA is not set
CONFIG_QCOM_HIDMA_MGMT=y
CONFIG_QCOM_HIDMA=y
CONFIG_DW_DMAC_CORE=y
CONFIG_DW_DMAC=y
# CONFIG_RZN1_DMAMUX is not set
CONFIG_DW_DMAC_PCI=y
CONFIG_HSU_DMA=y
# CONFIG_SF_PDMA is not set
CONFIG_RENESAS_DMA=y
CONFIG_SH_DMAE_BASE=y
# CONFIG_SH_DMAE is not set
CONFIG_RCAR_DMAC=y
CONFIG_RENESAS_USB_DMAC=y
CONFIG_RZ_DMAC=y
CONFIG_TI_EDMA=y
CONFIG_DMA_OMAP=y
CONFIG_TI_DMA_CROSSBAR=y
# CONFIG_INTEL_LDMA is not set

#
# DMA Clients
#
CONFIG_ASYNC_TX_DMA=y
CONFIG_DMATEST=y
CONFIG_DMA_ENGINE_RAID=y

#
# DMABUF options
#
CONFIG_SYNC_FILE=y
CONFIG_SW_SYNC=y
# CONFIG_UDMABUF is not set
# CONFIG_DMABUF_MOVE_NOTIFY is not set
# CONFIG_DMABUF_DEBUG is not set
# CONFIG_DMABUF_SELFTESTS is not set
CONFIG_DMABUF_HEAPS=y
CONFIG_DMABUF_SYSFS_STATS=y
CONFIG_DMABUF_HEAPS_SYSTEM=y
# CONFIG_DMABUF_HEAPS_CMA is not set
# end of DMABUF options

CONFIG_DCA=y
CONFIG_UIO=y
CONFIG_UIO_CIF=y
CONFIG_UIO_PDRV_GENIRQ=y
CONFIG_UIO_DMEM_GENIRQ=y
CONFIG_UIO_AEC=y
CONFIG_UIO_SERCOS3=y
# CONFIG_UIO_PCI_GENERIC is not set
CONFIG_UIO_NETX=y
CONFIG_UIO_PRUSS=y
# CONFIG_UIO_MF624 is not set
CONFIG_VFIO=y
CONFIG_VFIO_GROUP=y
CONFIG_VFIO_CONTAINER=y
CONFIG_VFIO_IOMMU_TYPE1=y
CONFIG_VFIO_NOIOMMU=y
CONFIG_VFIO_VIRQFD=y
# CONFIG_VFIO_DEBUGFS is not set

#
# VFIO support for PCI devices
#
CONFIG_VFIO_PCI_CORE=y
CONFIG_VFIO_PCI_MMAP=y
CONFIG_VFIO_PCI_INTX=y
CONFIG_VFIO_PCI=y
# CONFIG_VFIO_PCI_VGA is not set
CONFIG_VFIO_PCI_IGD=y
CONFIG_MLX5_VFIO_PCI=y
CONFIG_PDS_VFIO_PCI=y
# end of VFIO support for PCI devices

#
# VFIO support for platform devices
#
CONFIG_VFIO_PLATFORM_BASE=y
CONFIG_VFIO_PLATFORM=y
CONFIG_VFIO_AMBA=y

#
# VFIO platform reset drivers
#
CONFIG_VFIO_PLATFORM_CALXEDAXGMAC_RESET=y
CONFIG_VFIO_PLATFORM_AMDXGBE_RESET=y
# CONFIG_VFIO_PLATFORM_BCMFLEXRM_RESET is not set
# end of VFIO platform reset drivers
# end of VFIO support for platform devices

CONFIG_IRQ_BYPASS_MANAGER=y
CONFIG_VIRT_DRIVERS=y
CONFIG_VBOXGUEST=y
CONFIG_NITRO_ENCLAVES=y
CONFIG_VIRTIO_ANCHOR=y
CONFIG_VIRTIO=y
CONFIG_VIRTIO_MENU=y
# CONFIG_VIRTIO_PCI is not set
CONFIG_VIRTIO_VDPA=y
CONFIG_VIRTIO_BALLOON=y
# CONFIG_VIRTIO_INPUT is not set
# CONFIG_VIRTIO_MMIO is not set
CONFIG_VDPA=y
CONFIG_VDPA_USER=y
# CONFIG_MLX5_VDPA_NET is not set
# CONFIG_MLX5_VDPA_STEERING_DEBUG is not set
CONFIG_VHOST_IOTLB=y
# CONFIG_VHOST_MENU is not set

#
# Microsoft Hyper-V guest support
#
# end of Microsoft Hyper-V guest support

CONFIG_GREYBUS=y
CONFIG_GREYBUS_BEAGLEPLAY=y
CONFIG_COMEDI=y
# CONFIG_COMEDI_DEBUG is not set
CONFIG_COMEDI_DEFAULT_BUF_SIZE_KB=2048
CONFIG_COMEDI_DEFAULT_BUF_MAXSIZE_KB=20480
CONFIG_COMEDI_MISC_DRIVERS=y
# CONFIG_COMEDI_BOND is not set
CONFIG_COMEDI_TEST=y
CONFIG_COMEDI_PARPORT=y
CONFIG_COMEDI_SSV_DNP=y
# CONFIG_COMEDI_PCI_DRIVERS is not set
# CONFIG_COMEDI_PCMCIA_DRIVERS is not set
CONFIG_COMEDI_8255=y
CONFIG_COMEDI_8255_SA=y
# CONFIG_COMEDI_KCOMEDILIB is not set
CONFIG_COMEDI_TESTS=y
CONFIG_COMEDI_TESTS_EXAMPLE=y
# CONFIG_COMEDI_TESTS_NI_ROUTES is not set
# CONFIG_STAGING is not set
CONFIG_CHROME_PLATFORMS=y
# CONFIG_CHROMEOS_LAPTOP is not set
# CONFIG_CHROMEOS_PSTORE is not set
CONFIG_CROS_EC=y
CONFIG_CROS_EC_I2C=y
CONFIG_CROS_EC_PROTO=y
CONFIG_CROS_KBD_LED_BACKLIGHT=y
CONFIG_MELLANOX_PLATFORM=y
# CONFIG_MLXREG_HOTPLUG is not set
CONFIG_MLXREG_IO=y
CONFIG_MLXREG_LC=y
CONFIG_NVSW_SN2201=y
CONFIG_OLPC_XO175=y
# CONFIG_SURFACE_PLATFORMS is not set
# CONFIG_X86_PLATFORM_DEVICES is not set
CONFIG_P2SB=y
# CONFIG_COMMON_CLK is not set
# CONFIG_HWSPINLOCK is not set

#
# Clock Source drivers
#
CONFIG_TIMER_OF=y
CONFIG_TIMER_PROBE=y
CONFIG_CLKEVT_I8253=y
CONFIG_I8253_LOCK=y
CONFIG_CLKBLD_I8253=y
CONFIG_CLKSRC_MMIO=y
# CONFIG_BCM2835_TIMER is not set
# CONFIG_BCM_KONA_TIMER is not set
# CONFIG_DAVINCI_TIMER is not set
CONFIG_DIGICOLOR_TIMER=y
CONFIG_OMAP_DM_TIMER=y
# CONFIG_DW_APB_TIMER is not set
CONFIG_FTTMR010_TIMER=y
CONFIG_IXP4XX_TIMER=y
# CONFIG_MESON6_TIMER is not set
# CONFIG_OWL_TIMER is not set
CONFIG_RDA_TIMER=y
# CONFIG_SUN4I_TIMER is not set
# CONFIG_TEGRA_TIMER is not set
# CONFIG_VT8500_TIMER is not set
# CONFIG_NPCM7XX_TIMER is not set
# CONFIG_ASM9260_TIMER is not set
CONFIG_CLKSRC_DBX500_PRCMU=y
# CONFIG_CLPS711X_TIMER is not set
CONFIG_MXS_TIMER=y
# CONFIG_NSPIRE_TIMER is not set
CONFIG_INTEGRATOR_AP_TIMER=y
CONFIG_CLKSRC_PISTACHIO=y
# CONFIG_CLKSRC_STM32_LP is not set
# CONFIG_ARMV7M_SYSTICK is not set
# CONFIG_ATMEL_PIT is not set
CONFIG_ATMEL_ST=y
CONFIG_CLKSRC_SAMSUNG_PWM=y
# CONFIG_FSL_FTM_TIMER is not set
# CONFIG_MTK_TIMER is not set
# CONFIG_MTK_CPUX_TIMER is not set
CONFIG_SH_TIMER_CMT=y
CONFIG_SH_TIMER_MTU2=y
CONFIG_RENESAS_OSTM=y
CONFIG_SH_TIMER_TMU=y
CONFIG_EM_TIMER_STI=y
# CONFIG_CLKSRC_PXA is not set
CONFIG_TIMER_IMX_SYS_CTR=y
# CONFIG_CLKSRC_LOONGSON1_PWM is not set
CONFIG_CLKSRC_ST_LPC=y
# CONFIG_GXP_TIMER is not set
CONFIG_MSC313E_TIMER=y
# end of Clock Source drivers

CONFIG_MAILBOX=y
# CONFIG_IMX_MBOX is not set
CONFIG_ROCKCHIP_MBOX=y
CONFIG_ALTERA_MBOX=y
CONFIG_POLARFIRE_SOC_MAILBOX=y
CONFIG_QCOM_APCS_IPC=y
# CONFIG_BCM_PDC_MBOX is not set
# CONFIG_STM32_IPCC is not set
# CONFIG_MTK_ADSP_MBOX is not set
CONFIG_MTK_CMDQ_MBOX=y
CONFIG_SUN6I_MSGBOX=y
CONFIG_SPRD_MBOX=y
CONFIG_QCOM_IPCC=y
CONFIG_IOMMU_IOVA=y
CONFIG_IOMMU_API=y
CONFIG_IOMMUFD_DRIVER=y
CONFIG_IOMMU_SUPPORT=y

#
# Generic IOMMU Pagetable Support
#
CONFIG_IOMMU_IO_PGTABLE=y
CONFIG_IOMMU_IO_PGTABLE_LPAE=y
CONFIG_IOMMU_IO_PGTABLE_LPAE_SELFTEST=y
# CONFIG_IOMMU_IO_PGTABLE_ARMV7S is not set
CONFIG_IOMMU_IO_PGTABLE_DART=y
# end of Generic IOMMU Pagetable Support

CONFIG_IOMMU_DEBUGFS=y
# CONFIG_IOMMU_DEFAULT_DMA_STRICT is not set
CONFIG_IOMMU_DEFAULT_DMA_LAZY=y
# CONFIG_IOMMU_DEFAULT_PASSTHROUGH is not set
CONFIG_IOMMU_DMA=y
# CONFIG_IOMMUFD is not set
# CONFIG_OMAP_IOMMU is not set
CONFIG_ROCKCHIP_IOMMU=y
CONFIG_SUN50I_IOMMU=y
# CONFIG_EXYNOS_IOMMU is not set
CONFIG_IPMMU_VMSA=y
CONFIG_APPLE_DART=y
CONFIG_ARM_SMMU=y
CONFIG_ARM_SMMU_DISABLE_BYPASS_BY_DEFAULT=y
# CONFIG_MTK_IOMMU is not set
# CONFIG_QCOM_IOMMU is not set
CONFIG_VIRTIO_IOMMU=y
CONFIG_SPRD_IOMMU=y

#
# Remoteproc drivers
#
# CONFIG_REMOTEPROC is not set
# end of Remoteproc drivers

#
# Rpmsg drivers
#
CONFIG_RPMSG=y
CONFIG_RPMSG_CHAR=y
CONFIG_RPMSG_CTRL=y
CONFIG_RPMSG_NS=y
CONFIG_RPMSG_QCOM_GLINK=y
CONFIG_RPMSG_QCOM_GLINK_RPM=y
CONFIG_RPMSG_VIRTIO=y
# end of Rpmsg drivers

#
# SOC (System On Chip) specific Drivers
#

#
# Amlogic SoC drivers
#
CONFIG_MESON_CANVAS=y
CONFIG_MESON_CLK_MEASURE=y
# CONFIG_MESON_GX_SOCINFO is not set
CONFIG_MESON_MX_SOCINFO=y
# end of Amlogic SoC drivers

#
# Apple SoC drivers
#
CONFIG_APPLE_SART=y
# end of Apple SoC drivers

#
# ASPEED SoC drivers
#
# CONFIG_ASPEED_LPC_CTRL is not set
# CONFIG_ASPEED_LPC_SNOOP is not set
CONFIG_ASPEED_UART_ROUTING=y
CONFIG_ASPEED_P2A_CTRL=y
# CONFIG_ASPEED_SOCINFO is not set
# end of ASPEED SoC drivers

# CONFIG_AT91_SOC_ID is not set
# CONFIG_AT91_SOC_SFR is not set

#
# Broadcom SoC drivers
#
# CONFIG_SOC_BRCMSTB is not set
# end of Broadcom SoC drivers

#
# NXP/Freescale QorIQ SoC drivers
#
# end of NXP/Freescale QorIQ SoC drivers

#
# fujitsu SoC drivers
#
# end of fujitsu SoC drivers

#
# Hisilicon SoC drivers
#
# end of Hisilicon SoC drivers

#
# i.MX SoC drivers
#
CONFIG_SOC_IMX8M=y
CONFIG_SOC_IMX9=y
# end of i.MX SoC drivers

#
# IXP4xx SoC drivers
#
# CONFIG_IXP4XX_QMGR is not set
# CONFIG_IXP4XX_NPE is not set
# end of IXP4xx SoC drivers

#
# Enable LiteX SoC Builder specific drivers
#
# CONFIG_LITEX_SOC_CONTROLLER is not set
# end of Enable LiteX SoC Builder specific drivers

# CONFIG_LOONGSON2_GUTS is not set

#
# MediaTek SoC drivers
#
CONFIG_MTK_CMDQ=y
CONFIG_MTK_DEVAPC=y
CONFIG_MTK_INFRACFG=y
CONFIG_MTK_MMSYS=y
CONFIG_MTK_SVS=y
# end of MediaTek SoC drivers

CONFIG_POLARFIRE_SOC_SYS_CTRL=y
CONFIG_WPCM450_SOC=y

#
# Qualcomm SoC drivers
#
CONFIG_QCOM_GENI_SE=y
# CONFIG_QCOM_GSBI is not set
CONFIG_QCOM_LLCC=y
CONFIG_QCOM_PDR_HELPERS=y
# CONFIG_QCOM_PMIC_PDCHARGER_ULOG is not set
CONFIG_QCOM_QMI_HELPERS=y
CONFIG_QCOM_RAMP_CTRL=y
# CONFIG_QCOM_RPM_MASTER_STATS is not set
CONFIG_QCOM_RPMH=y
# CONFIG_QCOM_SMD_RPM is not set
CONFIG_QCOM_SPM=y
CONFIG_QCOM_WCNSS_CTRL=y
CONFIG_QCOM_APR=y
CONFIG_QCOM_ICC_BWMON=y
# end of Qualcomm SoC drivers

CONFIG_SOC_RENESAS=y
CONFIG_PWC_RZV2M=y
CONFIG_RST_RCAR=y
CONFIG_ROCKCHIP_GRF=y
CONFIG_SOC_SAMSUNG=y
# CONFIG_EXYNOS_CHIPID is not set
CONFIG_EXYNOS_USI=y
CONFIG_EXYNOS_REGULATOR_COUPLER=y
# CONFIG_SOC_TI is not set
# CONFIG_UX500_SOC_ID is not set

#
# Xilinx SoC drivers
#
# end of Xilinx SoC drivers
# end of SOC (System On Chip) specific Drivers

#
# PM Domains
#

#
# Amlogic PM Domains
#
# end of Amlogic PM Domains

# CONFIG_ARM_SCMI_PERF_DOMAIN is not set
CONFIG_ARM_SCMI_POWER_DOMAIN=y
CONFIG_ARM_SCPI_POWER_DOMAIN=y

#
# Broadcom PM Domains
#
# end of Broadcom PM Domains

#
# i.MX PM Domains
#
# end of i.MX PM Domains

#
# MediaTek PM Domains
#
# end of MediaTek PM Domains

#
# Qualcomm PM Domains
#
# end of Qualcomm PM Domains

CONFIG_SYSC_RCAR=y
CONFIG_SYSC_RCAR_GEN4=y
# CONFIG_SYSC_R8A77995 is not set
# CONFIG_SYSC_R8A7794 is not set
# CONFIG_SYSC_R8A77990 is not set
CONFIG_SYSC_R8A7779=y
CONFIG_SYSC_R8A7790=y
# CONFIG_SYSC_R8A7795 is not set
CONFIG_SYSC_R8A7791=y
CONFIG_SYSC_R8A77965=y
CONFIG_SYSC_R8A77960=y
# CONFIG_SYSC_R8A77961 is not set
CONFIG_SYSC_R8A779F0=y
# CONFIG_SYSC_R8A7792 is not set
# CONFIG_SYSC_R8A77980 is not set
CONFIG_SYSC_R8A77970=y
# CONFIG_SYSC_R8A779A0 is not set
# CONFIG_SYSC_R8A779G0 is not set
# CONFIG_SYSC_RMOBILE is not set
# CONFIG_SYSC_R8A77470 is not set
# CONFIG_SYSC_R8A7745 is not set
CONFIG_SYSC_R8A7742=y
# CONFIG_SYSC_R8A7743 is not set
# CONFIG_SYSC_R8A774C0 is not set
# CONFIG_SYSC_R8A774E1 is not set
CONFIG_SYSC_R8A774A1=y
CONFIG_SYSC_R8A774B1=y
CONFIG_EXYNOS_PM_DOMAINS=y
CONFIG_UX500_PM_DOMAIN=y
# end of PM Domains

# CONFIG_PM_DEVFREQ is not set
CONFIG_EXTCON=y

#
# Extcon Device Drivers
#
# CONFIG_EXTCON_ADC_JACK is not set
CONFIG_EXTCON_FSA9480=y
CONFIG_EXTCON_GPIO=y
# CONFIG_EXTCON_MAX3355 is not set
# CONFIG_EXTCON_MAX77843 is not set
CONFIG_EXTCON_PALMAS=y
CONFIG_EXTCON_PTN5150=y
CONFIG_EXTCON_QCOM_SPMI_MISC=y
CONFIG_EXTCON_RT8973A=y
# CONFIG_EXTCON_SM5502 is not set
CONFIG_EXTCON_USB_GPIO=y
CONFIG_EXTCON_USBC_CROS_EC=y
CONFIG_MEMORY=y
CONFIG_DDR=y
CONFIG_BRCMSTB_DPFE=y
CONFIG_BRCMSTB_MEMC=y
# CONFIG_BT1_L2_CTL is not set
CONFIG_TI_EMIF=y
# CONFIG_FSL_CORENET_CF is not set
CONFIG_FSL_IFC=y
CONFIG_MTK_SMI=y
# CONFIG_DA8XX_DDRCTL is not set
CONFIG_RENESAS_RPCIF=y
CONFIG_STM32_FMC2_EBI=y
# CONFIG_SAMSUNG_MC is not set
CONFIG_IIO=y
CONFIG_IIO_BUFFER=y
CONFIG_IIO_BUFFER_CB=y
CONFIG_IIO_BUFFER_DMA=y
# CONFIG_IIO_BUFFER_DMAENGINE is not set
# CONFIG_IIO_BUFFER_HW_CONSUMER is not set
CONFIG_IIO_KFIFO_BUF=y
CONFIG_IIO_TRIGGERED_BUFFER=y
CONFIG_IIO_CONFIGFS=y
CONFIG_IIO_GTS_HELPER=y
CONFIG_IIO_TRIGGER=y
CONFIG_IIO_CONSUMERS_PER_TRIGGER=2
# CONFIG_IIO_SW_DEVICE is not set
CONFIG_IIO_SW_TRIGGER=y
CONFIG_IIO_TRIGGERED_EVENT=y

#
# Accelerometers
#
# CONFIG_ADXL313_I2C is not set
# CONFIG_ADXL355_I2C is not set
# CONFIG_ADXL367_I2C is not set
CONFIG_ADXL372=y
CONFIG_ADXL372_I2C=y
# CONFIG_BMA400 is not set
CONFIG_BMC150_ACCEL=y
CONFIG_BMC150_ACCEL_I2C=y
CONFIG_DA280=y
CONFIG_DA311=y
# CONFIG_DMARD06 is not set
# CONFIG_DMARD09 is not set
CONFIG_DMARD10=y
CONFIG_FXLS8962AF=y
CONFIG_FXLS8962AF_I2C=y
CONFIG_IIO_KX022A=y
CONFIG_IIO_KX022A_I2C=y
# CONFIG_KXSD9 is not set
CONFIG_KXCJK1013=y
# CONFIG_MC3230 is not set
CONFIG_MMA7455=y
CONFIG_MMA7455_I2C=y
CONFIG_MMA7660=y
CONFIG_MMA8452=y
CONFIG_MMA9551_CORE=y
# CONFIG_MMA9551 is not set
CONFIG_MMA9553=y
# CONFIG_MSA311 is not set
CONFIG_MXC4005=y
CONFIG_MXC6255=y
CONFIG_STK8312=y
CONFIG_STK8BA50=y
# end of Accelerometers

#
# Analog to digital converters
#
CONFIG_AD7091R=y
CONFIG_AD7091R5=y
CONFIG_AD7291=y
# CONFIG_AD7606_IFACE_PARALLEL is not set
CONFIG_AD799X=y
# CONFIG_AT91_SAMA5D2_ADC is not set
CONFIG_AXP20X_ADC=y
# CONFIG_AXP288_ADC is not set
CONFIG_BCM_IPROC_ADC=y
# CONFIG_BERLIN2_ADC is not set
CONFIG_ENVELOPE_DETECTOR=y
CONFIG_EP93XX_ADC=y
CONFIG_MXS_LRADC_ADC=y
CONFIG_HX711=y
CONFIG_INGENIC_ADC=y
# CONFIG_IMX7D_ADC is not set
CONFIG_IMX8QXP_ADC=y
CONFIG_IMX93_ADC=y
# CONFIG_LP8788_ADC is not set
CONFIG_LPC18XX_ADC=y
CONFIG_LPC32XX_ADC=y
# CONFIG_LTC2309 is not set
# CONFIG_LTC2471 is not set
# CONFIG_LTC2485 is not set
# CONFIG_LTC2497 is not set
# CONFIG_MAX1363 is not set
CONFIG_MAX34408=y
CONFIG_MAX9611=y
CONFIG_MCP3422=y
# CONFIG_MEDIATEK_MT6360_ADC is not set
# CONFIG_MEDIATEK_MT6370_ADC is not set
CONFIG_MEDIATEK_MT6577_AUXADC=y
CONFIG_MEN_Z188_ADC=y
CONFIG_NAU7802=y
CONFIG_NPCM_ADC=y
# CONFIG_PALMAS_GPADC is not set
CONFIG_QCOM_VADC_COMMON=y
CONFIG_QCOM_PM8XXX_XOADC=y
CONFIG_QCOM_SPMI_IADC=y
CONFIG_QCOM_SPMI_VADC=y
CONFIG_QCOM_SPMI_ADC5=y
# CONFIG_RCAR_GYRO_ADC is not set
CONFIG_ROCKCHIP_SARADC=y
CONFIG_RICHTEK_RTQ6056=y
CONFIG_RZG2L_ADC=y
CONFIG_SC27XX_ADC=y
CONFIG_SPEAR_ADC=y
CONFIG_SD_ADC_MODULATOR=y
# CONFIG_STM32_DFSDM_CORE is not set
# CONFIG_STM32_DFSDM_ADC is not set
CONFIG_SUN4I_GPADC=y
CONFIG_SUN20I_GPADC=y
CONFIG_TI_ADC081C=y
# CONFIG_TI_ADS1015 is not set
# CONFIG_TI_ADS7924 is not set
# CONFIG_TI_ADS1100 is not set
CONFIG_TWL4030_MADC=y
# CONFIG_TWL6030_GPADC is not set
CONFIG_VF610_ADC=y
CONFIG_XILINX_XADC=y
# CONFIG_XILINX_AMS is not set
# end of Analog to digital converters

#
# Analog to digital and digital to analog converters
#
# end of Analog to digital and digital to analog converters

#
# Analog Front Ends
#
CONFIG_IIO_RESCALE=y
# end of Analog Front Ends

#
# Amplifiers
#
CONFIG_HMC425=y
# end of Amplifiers

#
# Capacitance to digital converters
#
CONFIG_AD7150=y
# CONFIG_AD7746 is not set
# end of Capacitance to digital converters

#
# Chemical Sensors
#
# CONFIG_AOSONG_AGS02MA is not set
CONFIG_ATLAS_PH_SENSOR=y
# CONFIG_ATLAS_EZO_SENSOR is not set
# CONFIG_BME680 is not set
# CONFIG_CCS811 is not set
# CONFIG_IAQCORE is not set
CONFIG_PMS7003=y
CONFIG_SCD30_CORE=y
# CONFIG_SCD30_I2C is not set
# CONFIG_SCD30_SERIAL is not set
CONFIG_SCD4X=y
CONFIG_SENSIRION_SGP30=y
# CONFIG_SENSIRION_SGP40 is not set
CONFIG_SPS30=y
CONFIG_SPS30_I2C=y
CONFIG_SPS30_SERIAL=y
CONFIG_SENSEAIR_SUNRISE_CO2=y
CONFIG_VZ89X=y
# end of Chemical Sensors

#
# Hid Sensor IIO Common
#
# end of Hid Sensor IIO Common

CONFIG_IIO_INV_SENSORS_TIMESTAMP=y
CONFIG_IIO_MS_SENSORS_I2C=y

#
# IIO SCMI Sensors
#
CONFIG_IIO_SCMI=y
# end of IIO SCMI Sensors

#
# SSP Sensor Common
#
# end of SSP Sensor Common

CONFIG_IIO_ST_SENSORS_CORE=y

#
# Digital to analog converters
#
# CONFIG_AD5064 is not set
CONFIG_AD5380=y
CONFIG_AD5446=y
# CONFIG_AD5593R is not set
# CONFIG_AD5696_I2C is not set
CONFIG_DPOT_DAC=y
CONFIG_DS4424=y
CONFIG_LPC18XX_DAC=y
# CONFIG_M62332 is not set
CONFIG_MAX517=y
CONFIG_MAX5821=y
# CONFIG_MCP4725 is not set
# CONFIG_MCP4728 is not set
CONFIG_TI_DAC5571=y
CONFIG_VF610_DAC=y
# end of Digital to analog converters

#
# IIO dummy driver
#
# end of IIO dummy driver

#
# Filters
#
# end of Filters

#
# Frequency Synthesizers DDS/PLL
#

#
# Clock Generator/Distribution
#
# end of Clock Generator/Distribution

#
# Phase-Locked Loop (PLL) frequency synthesizers
#
# end of Phase-Locked Loop (PLL) frequency synthesizers
# end of Frequency Synthesizers DDS/PLL

#
# Digital gyroscope sensors
#
CONFIG_BMG160=y
CONFIG_BMG160_I2C=y
# CONFIG_FXAS21002C is not set
CONFIG_MPU3050=y
CONFIG_MPU3050_I2C=y
# CONFIG_IIO_ST_GYRO_3AXIS is not set
CONFIG_ITG3200=y
# end of Digital gyroscope sensors

#
# Health Sensors
#

#
# Heart Rate Monitors
#
# CONFIG_AFE4404 is not set
CONFIG_MAX30100=y
CONFIG_MAX30102=y
# end of Heart Rate Monitors
# end of Health Sensors

#
# Humidity sensors
#
CONFIG_AM2315=y
# CONFIG_DHT11 is not set
CONFIG_HDC100X=y
# CONFIG_HDC2010 is not set
CONFIG_HTS221=y
CONFIG_HTS221_I2C=y
CONFIG_HTU21=y
CONFIG_SI7005=y
CONFIG_SI7020=y
# end of Humidity sensors

#
# Inertial measurement units
#
# CONFIG_BMI160_I2C is not set
# CONFIG_BMI323_I2C is not set
# CONFIG_BOSCH_BNO055_SERIAL is not set
# CONFIG_BOSCH_BNO055_I2C is not set
CONFIG_FXOS8700=y
CONFIG_FXOS8700_I2C=y
# CONFIG_KMX61 is not set
CONFIG_INV_ICM42600=y
CONFIG_INV_ICM42600_I2C=y
CONFIG_INV_MPU6050_IIO=y
CONFIG_INV_MPU6050_I2C=y
CONFIG_IIO_ST_LSM6DSX=y
CONFIG_IIO_ST_LSM6DSX_I2C=y
CONFIG_IIO_ST_LSM6DSX_I3C=y
# end of Inertial measurement units

#
# Light sensors
#
CONFIG_ADJD_S311=y
# CONFIG_ADUX1020 is not set
CONFIG_AL3010=y
CONFIG_AL3320A=y
CONFIG_APDS9300=y
CONFIG_APDS9960=y
CONFIG_AS73211=y
CONFIG_BH1750=y
CONFIG_BH1780=y
# CONFIG_CM32181 is not set
CONFIG_CM3232=y
CONFIG_CM3323=y
CONFIG_CM3605=y
# CONFIG_CM36651 is not set
CONFIG_GP2AP002=y
# CONFIG_GP2AP020A00F is not set
CONFIG_IQS621_ALS=y
CONFIG_SENSORS_ISL29018=y
# CONFIG_SENSORS_ISL29028 is not set
CONFIG_ISL29125=y
CONFIG_ISL76682=y
# CONFIG_JSA1212 is not set
CONFIG_ROHM_BU27008=y
# CONFIG_ROHM_BU27034 is not set
CONFIG_RPR0521=y
# CONFIG_SENSORS_LM3533 is not set
# CONFIG_LTR390 is not set
CONFIG_LTR501=y
CONFIG_LTRF216A=y
# CONFIG_LV0104CS is not set
CONFIG_MAX44000=y
# CONFIG_MAX44009 is not set
# CONFIG_NOA1305 is not set
# CONFIG_OPT3001 is not set
# CONFIG_OPT4001 is not set
CONFIG_PA12203001=y
# CONFIG_SI1133 is not set
# CONFIG_SI1145 is not set
# CONFIG_STK3310 is not set
# CONFIG_ST_UVIS25 is not set
CONFIG_TCS3414=y
CONFIG_TCS3472=y
CONFIG_SENSORS_TSL2563=y
# CONFIG_TSL2583 is not set
# CONFIG_TSL2591 is not set
CONFIG_TSL2772=y
CONFIG_TSL4531=y
CONFIG_US5182D=y
CONFIG_VCNL4000=y
CONFIG_VCNL4035=y
CONFIG_VEML6030=y
# CONFIG_VEML6070 is not set
CONFIG_VEML6075=y
CONFIG_VL6180=y
# CONFIG_ZOPT2201 is not set
# end of Light sensors

#
# Magnetometer sensors
#
# CONFIG_AK8974 is not set
CONFIG_AK8975=y
CONFIG_AK09911=y
CONFIG_BMC150_MAGN=y
CONFIG_BMC150_MAGN_I2C=y
CONFIG_MAG3110=y
# CONFIG_MMC35240 is not set
# CONFIG_IIO_ST_MAGN_3AXIS is not set
CONFIG_SENSORS_HMC5843=y
CONFIG_SENSORS_HMC5843_I2C=y
# CONFIG_SENSORS_RM3100_I2C is not set
CONFIG_TI_TMAG5273=y
CONFIG_YAMAHA_YAS530=y
# end of Magnetometer sensors

#
# Multiplexers
#
# CONFIG_IIO_MUX is not set
# end of Multiplexers

#
# Inclinometer sensors
#
# end of Inclinometer sensors

#
# Triggers - standalone
#
CONFIG_IIO_HRTIMER_TRIGGER=y
CONFIG_IIO_INTERRUPT_TRIGGER=y
CONFIG_IIO_STM32_LPTIMER_TRIGGER=y
CONFIG_IIO_STM32_TIMER_TRIGGER=y
# CONFIG_IIO_TIGHTLOOP_TRIGGER is not set
CONFIG_IIO_SYSFS_TRIGGER=y
# end of Triggers - standalone

#
# Linear and angular position sensors
#
# CONFIG_IQS624_POS is not set
# end of Linear and angular position sensors

#
# Digital potentiometers
#
# CONFIG_AD5110 is not set
CONFIG_AD5272=y
CONFIG_DS1803=y
CONFIG_MAX5432=y
CONFIG_MCP4018=y
# CONFIG_MCP4531 is not set
CONFIG_TPL0102=y
# end of Digital potentiometers

#
# Digital potentiostats
#
CONFIG_LMP91000=y
# end of Digital potentiostats

#
# Pressure sensors
#
CONFIG_ABP060MG=y
# CONFIG_ROHM_BM1390 is not set
CONFIG_BMP280=y
CONFIG_BMP280_I2C=y
CONFIG_DLHL60D=y
CONFIG_DPS310=y
CONFIG_HP03=y
CONFIG_HSC030PA=y
CONFIG_HSC030PA_I2C=y
CONFIG_ICP10100=y
# CONFIG_MPL115_I2C is not set
CONFIG_MPL3115=y
CONFIG_MPRLS0025PA=y
# CONFIG_MS5611 is not set
# CONFIG_MS5637 is not set
CONFIG_IIO_ST_PRESS=y
# CONFIG_IIO_ST_PRESS_I2C is not set
# CONFIG_T5403 is not set
CONFIG_HP206C=y
CONFIG_ZPA2326=y
CONFIG_ZPA2326_I2C=y
# end of Pressure sensors

#
# Lightning sensors
#
# end of Lightning sensors

#
# Proximity and distance sensors
#
CONFIG_CROS_EC_MKBP_PROXIMITY=y
CONFIG_IRSD200=y
CONFIG_ISL29501=y
# CONFIG_LIDAR_LITE_V2 is not set
CONFIG_MB1232=y
CONFIG_PING=y
CONFIG_RFD77402=y
CONFIG_SRF04=y
CONFIG_SX_COMMON=y
CONFIG_SX9310=y
CONFIG_SX9324=y
CONFIG_SX9360=y
CONFIG_SX9500=y
CONFIG_SRF08=y
CONFIG_VCNL3020=y
CONFIG_VL53L0X_I2C=y
# end of Proximity and distance sensors

#
# Resolver to digital converters
#
# end of Resolver to digital converters

#
# Temperature sensors
#
CONFIG_IQS620AT_TEMP=y
CONFIG_MLX90614=y
CONFIG_MLX90632=y
CONFIG_MLX90635=y
CONFIG_TMP006=y
# CONFIG_TMP007 is not set
CONFIG_TMP117=y
# CONFIG_TSYS01 is not set
CONFIG_TSYS02D=y
CONFIG_MAX30208=y
CONFIG_MCP9600=y
# end of Temperature sensors

CONFIG_NTB=y
CONFIG_NTB_AMD=y
CONFIG_NTB_IDT=y
CONFIG_NTB_INTEL=y
# CONFIG_NTB_SWITCHTEC is not set
CONFIG_NTB_PINGPONG=y
CONFIG_NTB_TOOL=y
# CONFIG_NTB_PERF is not set
# CONFIG_NTB_TRANSPORT is not set
CONFIG_PWM=y
CONFIG_PWM_SYSFS=y
# CONFIG_PWM_DEBUG is not set
# CONFIG_PWM_APPLE is not set
# CONFIG_PWM_BCM2835 is not set
# CONFIG_PWM_BERLIN is not set
CONFIG_PWM_BRCMSTB=y
CONFIG_PWM_CLK=y
# CONFIG_PWM_CLPS711X is not set
CONFIG_PWM_CROS_EC=y
CONFIG_PWM_DWC_CORE=y
CONFIG_PWM_DWC=y
CONFIG_PWM_EP93XX=y
CONFIG_PWM_HIBVT=y
CONFIG_PWM_IMX1=y
CONFIG_PWM_IMX27=y
CONFIG_PWM_INTEL_LGM=y
CONFIG_PWM_IQS620A=y
# CONFIG_PWM_LP3943 is not set
# CONFIG_PWM_LPC18XX_SCT is not set
# CONFIG_PWM_LPC32XX is not set
CONFIG_PWM_LPSS=y
# CONFIG_PWM_LPSS_PCI is not set
CONFIG_PWM_LPSS_PLATFORM=y
CONFIG_PWM_MTK_DISP=y
CONFIG_PWM_MEDIATEK=y
CONFIG_PWM_PCA9685=y
CONFIG_PWM_PXA=y
CONFIG_PWM_RASPBERRYPI_POE=y
CONFIG_PWM_RCAR=y
# CONFIG_PWM_RENESAS_TPU is not set
CONFIG_PWM_ROCKCHIP=y
# CONFIG_PWM_RZ_MTU3 is not set
CONFIG_PWM_SAMSUNG=y
CONFIG_PWM_SL28CPLD=y
CONFIG_PWM_SPRD=y
CONFIG_PWM_STM32=y
CONFIG_PWM_STM32_LP=y
# CONFIG_PWM_TEGRA is not set
CONFIG_PWM_TIECAP=y
# CONFIG_PWM_TIEHRPWM is not set
CONFIG_PWM_TWL=y
CONFIG_PWM_TWL_LED=y
# CONFIG_PWM_VISCONTI is not set
# CONFIG_PWM_VT8500 is not set

#
# IRQ chip support
#
CONFIG_RENESAS_INTC_IRQPIN=y
# CONFIG_RENESAS_IRQC is not set
# CONFIG_RENESAS_RZA1_IRQC is not set
CONFIG_RENESAS_RZG2L_IRQC=y
CONFIG_SL28CPLD_INTC=y
CONFIG_TS4800_IRQ=y
# CONFIG_INGENIC_TCU_IRQ is not set
CONFIG_IRQ_UNIPHIER_AIDET=y
# CONFIG_MESON_IRQ_GPIO is not set
CONFIG_IMX_IRQSTEER=y
# CONFIG_IMX_INTMUX is not set
# CONFIG_EXYNOS_IRQ_COMBINER is not set
# CONFIG_MST_IRQ is not set
# CONFIG_MCHP_EIC is not set
CONFIG_SUNPLUS_SP7021_INTC=y
# end of IRQ chip support

CONFIG_IPACK_BUS=y
CONFIG_BOARD_TPCI200=y
CONFIG_SERIAL_IPOCTAL=y
CONFIG_RESET_CONTROLLER=y
CONFIG_RESET_A10SR=y
CONFIG_RESET_ATH79=y
CONFIG_RESET_AXS10X=y
CONFIG_RESET_BCM6345=y
# CONFIG_RESET_BERLIN is not set
# CONFIG_RESET_BRCMSTB is not set
CONFIG_RESET_BRCMSTB_RESCAL=y
# CONFIG_RESET_HSDK is not set
CONFIG_RESET_IMX7=y
CONFIG_RESET_LANTIQ=y
CONFIG_RESET_LPC18XX=y
# CONFIG_RESET_MCHP_SPARX5 is not set
CONFIG_RESET_MESON=y
# CONFIG_RESET_MESON_AUDIO_ARB is not set
# CONFIG_RESET_NPCM is not set
CONFIG_RESET_NUVOTON_MA35D1=y
# CONFIG_RESET_PISTACHIO is not set
CONFIG_RESET_QCOM_AOSS=y
CONFIG_RESET_QCOM_PDC=y
CONFIG_RESET_RASPBERRYPI=y
CONFIG_RESET_RZG2L_USBPHY_CTRL=y
CONFIG_RESET_SCMI=y
CONFIG_RESET_SIMPLE=y
# CONFIG_RESET_SOCFPGA is not set
# CONFIG_RESET_SUNPLUS is not set
CONFIG_RESET_SUNXI=y
CONFIG_RESET_TI_SCI=y
# CONFIG_RESET_TI_SYSCON is not set
CONFIG_RESET_TI_TPS380X=y
# CONFIG_RESET_TN48M_CPLD is not set
# CONFIG_RESET_ZYNQ is not set
# CONFIG_RESET_STARFIVE_JH7100 is not set
CONFIG_COMMON_RESET_HI3660=y
# CONFIG_COMMON_RESET_HI6220 is not set

#
# PHY Subsystem
#
CONFIG_GENERIC_PHY=y
CONFIG_GENERIC_PHY_MIPI_DPHY=y
# CONFIG_PHY_PISTACHIO_USB is not set
# CONFIG_PHY_CAN_TRANSCEIVER is not set

#
# PHY drivers for Broadcom platforms
#
# CONFIG_PHY_BCM63XX_USBH is not set
CONFIG_BCM_KONA_USB2_PHY=y
CONFIG_PHY_NS2_PCIE=y
# end of PHY drivers for Broadcom platforms

CONFIG_PHY_HI6220_USB=y
# CONFIG_PHY_HI3660_USB is not set
# CONFIG_PHY_HI3670_USB is not set
# CONFIG_PHY_HI3670_PCIE is not set
CONFIG_PHY_HISTB_COMBPHY=y
CONFIG_PHY_HISI_INNO_USB2=y
# CONFIG_PHY_PXA_28NM_HSIC is not set
CONFIG_PHY_PXA_28NM_USB2=y
CONFIG_PHY_PXA_USB=y
# CONFIG_PHY_MMP3_USB is not set
CONFIG_PHY_MMP3_HSIC=y
CONFIG_PHY_MT7621_PCI=y
# CONFIG_PHY_RALINK_USB is not set
# CONFIG_PHY_R8A779F0_ETHERNET_SERDES is not set
CONFIG_PHY_RCAR_GEN3_USB3=y
CONFIG_PHY_ROCKCHIP_DPHY_RX0=y
CONFIG_PHY_ROCKCHIP_PCIE=y
CONFIG_PHY_ROCKCHIP_SNPS_PCIE3=y
CONFIG_PHY_EXYNOS_MIPI_VIDEO=y
CONFIG_PHY_SAMSUNG_USB2=y
# CONFIG_PHY_S5PV210_USB2 is not set
CONFIG_PHY_ST_SPEAR1310_MIPHY=y
CONFIG_PHY_ST_SPEAR1340_MIPHY=y
CONFIG_PHY_STIH407_USB=y
# CONFIG_PHY_STARFIVE_JH7110_DPHY_RX is not set
# CONFIG_PHY_STARFIVE_JH7110_PCIE is not set
CONFIG_PHY_TEGRA194_P2U=y
CONFIG_PHY_DA8XX_USB=y
CONFIG_OMAP_CONTROL_PHY=y
CONFIG_TI_PIPE3=y
# CONFIG_PHY_INTEL_KEEMBAY_EMMC is not set
# CONFIG_PHY_INTEL_KEEMBAY_USB is not set
CONFIG_PHY_INTEL_LGM_EMMC=y
CONFIG_PHY_XILINX_ZYNQMP=y
# end of PHY Subsystem

# CONFIG_POWERCAP is not set
CONFIG_MCB=y
# CONFIG_MCB_PCI is not set
# CONFIG_MCB_LPC is not set

#
# Performance monitor support
#
CONFIG_ARM_CCN=y
CONFIG_ARM_CMN=y
CONFIG_FSL_IMX8_DDR_PMU=y
CONFIG_XGENE_PMU=y
CONFIG_ARM_DMC620_PMU=y
CONFIG_MARVELL_CN10K_TAD_PMU=y
# CONFIG_ALIBABA_UNCORE_DRW_PMU is not set
CONFIG_HNS3_PMU=y
CONFIG_MARVELL_CN10K_DDR_PMU=y
# CONFIG_DWC_PCIE_PMU is not set
CONFIG_ARM_CORESIGHT_PMU_ARCH_SYSTEM_PMU=y
CONFIG_NVIDIA_CORESIGHT_PMU_ARCH_SYSTEM_PMU=y
CONFIG_AMPERE_CORESIGHT_PMU_ARCH_SYSTEM_PMU=y
CONFIG_MESON_DDR_PMU=y
# end of Performance monitor support

CONFIG_RAS=y
# CONFIG_AMD_ATL is not set
CONFIG_USB4=y
CONFIG_USB4_DEBUGFS_WRITE=y
CONFIG_USB4_DEBUGFS_MARGINING=y
CONFIG_USB4_DMA_TEST=y

#
# Android
#
CONFIG_ANDROID_BINDER_IPC=y
CONFIG_ANDROID_BINDERFS=y
CONFIG_ANDROID_BINDER_DEVICES="binder,hwbinder,vndbinder"
CONFIG_ANDROID_BINDER_IPC_SELFTEST=y
# end of Android

# CONFIG_DAX is not set
CONFIG_NVMEM=y
# CONFIG_NVMEM_SYSFS is not set
# CONFIG_NVMEM_LAYOUTS is not set
CONFIG_NVMEM_APPLE_EFUSES=y
CONFIG_NVMEM_BCM_OCOTP=y
CONFIG_NVMEM_BRCM_NVRAM=y
# CONFIG_NVMEM_IMX_IIM is not set
# CONFIG_NVMEM_IMX_OCOTP is not set
CONFIG_NVMEM_LAN9662_OTPC=y
CONFIG_NVMEM_LAYERSCAPE_SFP=y
CONFIG_NVMEM_LPC18XX_EEPROM=y
# CONFIG_NVMEM_LPC18XX_OTP is not set
# CONFIG_NVMEM_MESON_MX_EFUSE is not set
CONFIG_NVMEM_MICROCHIP_OTPC=y
CONFIG_NVMEM_MTK_EFUSE=y
CONFIG_NVMEM_MXS_OCOTP=y
CONFIG_NVMEM_NINTENDO_OTP=y
CONFIG_NVMEM_QCOM_QFPROM=y
CONFIG_NVMEM_RMEM=y
CONFIG_NVMEM_ROCKCHIP_EFUSE=y
CONFIG_NVMEM_ROCKCHIP_OTP=y
# CONFIG_NVMEM_SC27XX_EFUSE is not set
CONFIG_NVMEM_SNVS_LPGPR=y
CONFIG_NVMEM_SPMI_SDAM=y
CONFIG_NVMEM_SPRD_EFUSE=y
CONFIG_NVMEM_STM32_ROMEM=y
CONFIG_NVMEM_SUNPLUS_OCOTP=y
CONFIG_NVMEM_UNIPHIER_EFUSE=y
# CONFIG_NVMEM_VF610_OCOTP is not set
CONFIG_NVMEM_QORIQ_EFUSE=y

#
# HW tracing support
#
CONFIG_STM=y
CONFIG_STM_PROTO_BASIC=y
# CONFIG_STM_PROTO_SYS_T is not set
# CONFIG_STM_DUMMY is not set
# CONFIG_STM_SOURCE_CONSOLE is not set
CONFIG_STM_SOURCE_HEARTBEAT=y
# CONFIG_STM_SOURCE_FTRACE is not set
CONFIG_INTEL_TH=y
# CONFIG_INTEL_TH_PCI is not set
CONFIG_INTEL_TH_GTH=y
CONFIG_INTEL_TH_STH=y
CONFIG_INTEL_TH_MSU=y
# CONFIG_INTEL_TH_PTI is not set
CONFIG_INTEL_TH_DEBUG=y
# CONFIG_HISI_PTT is not set
# end of HW tracing support

# CONFIG_FPGA is not set
CONFIG_TEE=y
CONFIG_MULTIPLEXER=y

#
# Multiplexer drivers
#
# CONFIG_MUX_ADG792A is not set
CONFIG_MUX_GPIO=y
# CONFIG_MUX_MMIO is not set
# end of Multiplexer drivers

CONFIG_PM_OPP=y
# CONFIG_SIOX is not set
CONFIG_SLIMBUS=y
CONFIG_SLIM_QCOM_CTRL=y
CONFIG_SLIM_QCOM_NGD_CTRL=y
# CONFIG_INTERCONNECT is not set
CONFIG_COUNTER=y
# CONFIG_104_QUAD_8 is not set
CONFIG_INTEL_QEP=y
# CONFIG_INTERRUPT_CNT is not set
CONFIG_RZ_MTU3_CNT=y
# CONFIG_STM32_LPTIMER_CNT is not set
CONFIG_STM32_TIMER_CNT=y
CONFIG_TI_ECAP_CAPTURE=y
# CONFIG_TI_EQEP is not set
CONFIG_MOST=y
# CONFIG_MOST_CDEV is not set
CONFIG_PECI=y
CONFIG_PECI_CPU=y
# CONFIG_HTE is not set
CONFIG_DPLL=y
# end of Device Drivers

#
# File systems
#
CONFIG_DCACHE_WORD_ACCESS=y
CONFIG_VALIDATE_FS_PARSER=y
CONFIG_FS_IOMAP=y
CONFIG_FS_STACK=y
CONFIG_BUFFER_HEAD=y
CONFIG_LEGACY_DIRECT_IO=y
CONFIG_EXT2_FS=y
CONFIG_EXT2_FS_XATTR=y
CONFIG_EXT2_FS_POSIX_ACL=y
# CONFIG_EXT2_FS_SECURITY is not set
CONFIG_EXT3_FS=y
CONFIG_EXT3_FS_POSIX_ACL=y
# CONFIG_EXT3_FS_SECURITY is not set
CONFIG_EXT4_FS=y
CONFIG_EXT4_FS_POSIX_ACL=y
# CONFIG_EXT4_FS_SECURITY is not set
CONFIG_EXT4_DEBUG=y
CONFIG_JBD2=y
# CONFIG_JBD2_DEBUG is not set
CONFIG_FS_MBCACHE=y
CONFIG_REISERFS_FS=y
# CONFIG_REISERFS_CHECK is not set
# CONFIG_REISERFS_PROC_INFO is not set
# CONFIG_REISERFS_FS_XATTR is not set
# CONFIG_JFS_FS is not set
CONFIG_XFS_FS=y
# CONFIG_XFS_SUPPORT_V4 is not set
# CONFIG_XFS_SUPPORT_ASCII_CI is not set
CONFIG_XFS_QUOTA=y
# CONFIG_XFS_POSIX_ACL is not set
CONFIG_XFS_RT=y
# CONFIG_XFS_ONLINE_SCRUB is not set
# CONFIG_XFS_WARN is not set
# CONFIG_XFS_DEBUG is not set
CONFIG_GFS2_FS=y
# CONFIG_GFS2_FS_LOCKING_DLM is not set
# CONFIG_OCFS2_FS is not set
CONFIG_BTRFS_FS=y
# CONFIG_BTRFS_FS_POSIX_ACL is not set
# CONFIG_BTRFS_FS_RUN_SANITY_TESTS is not set
# CONFIG_BTRFS_DEBUG is not set
# CONFIG_BTRFS_ASSERT is not set
CONFIG_BTRFS_FS_REF_VERIFY=y
CONFIG_NILFS2_FS=y
CONFIG_F2FS_FS=y
# CONFIG_F2FS_STAT_FS is not set
CONFIG_F2FS_FS_XATTR=y
# CONFIG_F2FS_FS_POSIX_ACL is not set
# CONFIG_F2FS_FS_SECURITY is not set
CONFIG_F2FS_CHECK_FS=y
# CONFIG_F2FS_FAULT_INJECTION is not set
CONFIG_F2FS_FS_COMPRESSION=y
CONFIG_F2FS_FS_LZO=y
# CONFIG_F2FS_FS_LZORLE is not set
CONFIG_F2FS_FS_LZ4=y
# CONFIG_F2FS_FS_LZ4HC is not set
CONFIG_F2FS_FS_ZSTD=y
# CONFIG_F2FS_IOSTAT is not set
CONFIG_BCACHEFS_FS=y
# CONFIG_BCACHEFS_QUOTA is not set
CONFIG_BCACHEFS_ERASURE_CODING=y
# CONFIG_BCACHEFS_POSIX_ACL is not set
# CONFIG_BCACHEFS_DEBUG is not set
# CONFIG_BCACHEFS_TESTS is not set
CONFIG_BCACHEFS_LOCK_TIME_STATS=y
# CONFIG_BCACHEFS_NO_LATENCY_ACCT is not set
# CONFIG_BCACHEFS_SIX_OPTIMISTIC_SPIN is not set
CONFIG_ZONEFS_FS=y
CONFIG_FS_POSIX_ACL=y
CONFIG_EXPORTFS=y
CONFIG_EXPORTFS_BLOCK_OPS=y
CONFIG_FILE_LOCKING=y
# CONFIG_FS_ENCRYPTION is not set
CONFIG_FS_VERITY=y
CONFIG_FS_VERITY_BUILTIN_SIGNATURES=y
CONFIG_FSNOTIFY=y
CONFIG_DNOTIFY=y
CONFIG_INOTIFY_USER=y
# CONFIG_FANOTIFY is not set
CONFIG_QUOTA=y
# CONFIG_QUOTA_NETLINK_INTERFACE is not set
# CONFIG_QUOTA_DEBUG is not set
CONFIG_QUOTA_TREE=y
CONFIG_QFMT_V1=y
CONFIG_QFMT_V2=y
CONFIG_QUOTACTL=y
CONFIG_AUTOFS_FS=y
# CONFIG_FUSE_FS is not set
CONFIG_OVERLAY_FS=y
CONFIG_OVERLAY_FS_REDIRECT_DIR=y
CONFIG_OVERLAY_FS_REDIRECT_ALWAYS_FOLLOW=y
# CONFIG_OVERLAY_FS_INDEX is not set
CONFIG_OVERLAY_FS_XINO_AUTO=y
CONFIG_OVERLAY_FS_METACOPY=y
# CONFIG_OVERLAY_FS_DEBUG is not set

#
# Caches
#
CONFIG_NETFS_SUPPORT=y
CONFIG_NETFS_STATS=y
# CONFIG_FSCACHE is not set
# end of Caches

#
# CD-ROM/DVD Filesystems
#
CONFIG_ISO9660_FS=y
# CONFIG_JOLIET is not set
CONFIG_ZISOFS=y
# CONFIG_UDF_FS is not set
# end of CD-ROM/DVD Filesystems

#
# DOS/FAT/EXFAT/NT Filesystems
#
CONFIG_FAT_FS=y
CONFIG_MSDOS_FS=y
# CONFIG_VFAT_FS is not set
CONFIG_FAT_DEFAULT_CODEPAGE=437
CONFIG_EXFAT_FS=y
CONFIG_EXFAT_DEFAULT_IOCHARSET="utf8"
CONFIG_NTFS_FS=y
# CONFIG_NTFS_DEBUG is not set
CONFIG_NTFS_RW=y
CONFIG_NTFS3_FS=y
# CONFIG_NTFS3_64BIT_CLUSTER is not set
CONFIG_NTFS3_LZX_XPRESS=y
CONFIG_NTFS3_FS_POSIX_ACL=y
# end of DOS/FAT/EXFAT/NT Filesystems

#
# Pseudo filesystems
#
CONFIG_PROC_FS=y
# CONFIG_PROC_KCORE is not set
CONFIG_PROC_SYSCTL=y
CONFIG_PROC_PAGE_MONITOR=y
CONFIG_PROC_CHILDREN=y
CONFIG_PROC_PID_ARCH_STATUS=y
CONFIG_PROC_CPU_RESCTRL=y
CONFIG_KERNFS=y
CONFIG_SYSFS=y
CONFIG_TMPFS=y
CONFIG_TMPFS_POSIX_ACL=y
CONFIG_TMPFS_XATTR=y
CONFIG_TMPFS_INODE64=y
# CONFIG_TMPFS_QUOTA is not set
CONFIG_HUGETLBFS=y
# CONFIG_HUGETLB_PAGE_OPTIMIZE_VMEMMAP_DEFAULT_ON is not set
CONFIG_HUGETLB_PAGE=y
CONFIG_HUGETLB_PAGE_OPTIMIZE_VMEMMAP=y
CONFIG_ARCH_HAS_GIGANTIC_PAGE=y
CONFIG_CONFIGFS_FS=y
# end of Pseudo filesystems

# CONFIG_MISC_FILESYSTEMS is not set
CONFIG_NETWORK_FILESYSTEMS=y
# CONFIG_NFS_FS is not set
CONFIG_NFSD=y
CONFIG_NFSD_V2=y
CONFIG_NFSD_V2_ACL=y
# CONFIG_NFSD_V3_ACL is not set
# CONFIG_NFSD_V4 is not set
CONFIG_GRACE_PERIOD=y
CONFIG_LOCKD=y
CONFIG_LOCKD_V4=y
CONFIG_NFS_ACL_SUPPORT=y
CONFIG_NFS_COMMON=y
CONFIG_SUNRPC=y
CONFIG_SUNRPC_GSS=y
CONFIG_RPCSEC_GSS_KRB5=y
CONFIG_SUNRPC_DEBUG=y
CONFIG_SUNRPC_XPRT_RDMA=y
CONFIG_CEPH_FS=y
# CONFIG_CEPH_FS_POSIX_ACL is not set
CONFIG_CEPH_FS_SECURITY_LABEL=y
# CONFIG_CIFS is not set
CONFIG_SMB_SERVER=y
CONFIG_SMB_SERVER_SMBDIRECT=y
CONFIG_SMB_SERVER_CHECK_CAP_NET_ADMIN=y
CONFIG_SMB_SERVER_KERBEROS5=y
CONFIG_SMBFS=y
CONFIG_CODA_FS=y
CONFIG_AFS_FS=y
CONFIG_AFS_DEBUG=y
CONFIG_AFS_DEBUG_CURSOR=y
CONFIG_9P_FS=y
# CONFIG_9P_FS_POSIX_ACL is not set
CONFIG_9P_FS_SECURITY=y
CONFIG_NLS=y
CONFIG_NLS_DEFAULT="iso8859-1"
CONFIG_NLS_CODEPAGE_437=y
CONFIG_NLS_CODEPAGE_737=y
CONFIG_NLS_CODEPAGE_775=y
CONFIG_NLS_CODEPAGE_850=y
CONFIG_NLS_CODEPAGE_852=y
CONFIG_NLS_CODEPAGE_855=y
CONFIG_NLS_CODEPAGE_857=y
# CONFIG_NLS_CODEPAGE_860 is not set
# CONFIG_NLS_CODEPAGE_861 is not set
CONFIG_NLS_CODEPAGE_862=y
# CONFIG_NLS_CODEPAGE_863 is not set
CONFIG_NLS_CODEPAGE_864=y
CONFIG_NLS_CODEPAGE_865=y
CONFIG_NLS_CODEPAGE_866=y
# CONFIG_NLS_CODEPAGE_869 is not set
# CONFIG_NLS_CODEPAGE_936 is not set
CONFIG_NLS_CODEPAGE_950=y
CONFIG_NLS_CODEPAGE_932=y
# CONFIG_NLS_CODEPAGE_949 is not set
CONFIG_NLS_CODEPAGE_874=y
CONFIG_NLS_ISO8859_8=y
CONFIG_NLS_CODEPAGE_1250=y
# CONFIG_NLS_CODEPAGE_1251 is not set
CONFIG_NLS_ASCII=y
CONFIG_NLS_ISO8859_1=y
# CONFIG_NLS_ISO8859_2 is not set
CONFIG_NLS_ISO8859_3=y
CONFIG_NLS_ISO8859_4=y
# CONFIG_NLS_ISO8859_5 is not set
CONFIG_NLS_ISO8859_6=y
CONFIG_NLS_ISO8859_7=y
CONFIG_NLS_ISO8859_9=y
# CONFIG_NLS_ISO8859_13 is not set
CONFIG_NLS_ISO8859_14=y
CONFIG_NLS_ISO8859_15=y
CONFIG_NLS_KOI8_R=y
CONFIG_NLS_KOI8_U=y
CONFIG_NLS_MAC_ROMAN=y
# CONFIG_NLS_MAC_CELTIC is not set
# CONFIG_NLS_MAC_CENTEURO is not set
CONFIG_NLS_MAC_CROATIAN=y
CONFIG_NLS_MAC_CYRILLIC=y
CONFIG_NLS_MAC_GAELIC=y
CONFIG_NLS_MAC_GREEK=y
CONFIG_NLS_MAC_ICELAND=y
# CONFIG_NLS_MAC_INUIT is not set
CONFIG_NLS_MAC_ROMANIAN=y
CONFIG_NLS_MAC_TURKISH=y
CONFIG_NLS_UTF8=y
CONFIG_NLS_UCS2_UTILS=y
CONFIG_DLM=y
CONFIG_DLM_DEBUG=y
# CONFIG_UNICODE is not set
CONFIG_IO_WQ=y
# end of File systems

#
# Security options
#
CONFIG_KEYS=y
CONFIG_KEYS_REQUEST_CACHE=y
CONFIG_PERSISTENT_KEYRINGS=y
# CONFIG_BIG_KEYS is not set
CONFIG_TRUSTED_KEYS=y
CONFIG_TRUSTED_KEYS_TPM=y
# CONFIG_TRUSTED_KEYS_TEE is not set
CONFIG_ENCRYPTED_KEYS=y
CONFIG_USER_DECRYPTED_DATA=y
CONFIG_KEY_DH_OPERATIONS=y
CONFIG_SECURITY_DMESG_RESTRICT=y
CONFIG_SECURITY=y
CONFIG_SECURITYFS=y
CONFIG_SECURITY_NETWORK=y
CONFIG_SECURITY_INFINIBAND=y
CONFIG_SECURITY_NETWORK_XFRM=y
CONFIG_SECURITY_PATH=y
CONFIG_LSM_MMAP_MIN_ADDR=65536
CONFIG_HARDENED_USERCOPY=y
# CONFIG_FORTIFY_SOURCE is not set
# CONFIG_STATIC_USERMODEHELPER is not set
CONFIG_SECURITY_SELINUX=y
CONFIG_SECURITY_SELINUX_BOOTPARAM=y
CONFIG_SECURITY_SELINUX_DEVELOP=y
CONFIG_SECURITY_SELINUX_AVC_STATS=y
CONFIG_SECURITY_SELINUX_SIDTAB_HASH_BITS=9
CONFIG_SECURITY_SELINUX_SID2STR_CACHE_SIZE=256
# CONFIG_SECURITY_SELINUX_DEBUG is not set
# CONFIG_SECURITY_SMACK is not set
# CONFIG_SECURITY_TOMOYO is not set
CONFIG_SECURITY_APPARMOR=y
# CONFIG_SECURITY_APPARMOR_DEBUG is not set
# CONFIG_SECURITY_APPARMOR_INTROSPECT_POLICY is not set
# CONFIG_SECURITY_APPARMOR_PARANOID_LOAD is not set
CONFIG_SECURITY_LOADPIN=y
CONFIG_SECURITY_LOADPIN_ENFORCE=y
# CONFIG_SECURITY_LOADPIN_VERITY is not set
CONFIG_SECURITY_YAMA=y
# CONFIG_SECURITY_SAFESETID is not set
# CONFIG_SECURITY_LOCKDOWN_LSM is not set
# CONFIG_SECURITY_LANDLOCK is not set
# CONFIG_INTEGRITY is not set
CONFIG_DEFAULT_SECURITY_SELINUX=y
# CONFIG_DEFAULT_SECURITY_APPARMOR is not set
# CONFIG_DEFAULT_SECURITY_DAC is not set
CONFIG_LSM="landlock,lockdown,yama,loadpin,safesetid,selinux,smack,tomoyo,apparmor,bpf"

#
# Kernel hardening options
#

#
# Memory initialization
#
CONFIG_INIT_STACK_NONE=y
CONFIG_INIT_ON_ALLOC_DEFAULT_ON=y
# CONFIG_INIT_ON_FREE_DEFAULT_ON is not set
CONFIG_CC_HAS_ZERO_CALL_USED_REGS=y
CONFIG_ZERO_CALL_USED_REGS=y
# end of Memory initialization

#
# Hardening of kernel data structures
#
CONFIG_LIST_HARDENED=y
# CONFIG_BUG_ON_DATA_CORRUPTION is not set
# end of Hardening of kernel data structures

CONFIG_RANDSTRUCT_NONE=y
# end of Kernel hardening options
# end of Security options

CONFIG_XOR_BLOCKS=y
CONFIG_ASYNC_CORE=y
CONFIG_ASYNC_XOR=y
CONFIG_ASYNC_TX_DISABLE_PQ_VAL_DMA=y
CONFIG_ASYNC_TX_DISABLE_XOR_VAL_DMA=y
CONFIG_CRYPTO=y

#
# Crypto core or helper
#
CONFIG_CRYPTO_ALGAPI=y
CONFIG_CRYPTO_ALGAPI2=y
CONFIG_CRYPTO_AEAD=y
CONFIG_CRYPTO_AEAD2=y
CONFIG_CRYPTO_SIG2=y
CONFIG_CRYPTO_SKCIPHER=y
CONFIG_CRYPTO_SKCIPHER2=y
CONFIG_CRYPTO_HASH=y
CONFIG_CRYPTO_HASH2=y
CONFIG_CRYPTO_RNG=y
CONFIG_CRYPTO_RNG2=y
CONFIG_CRYPTO_RNG_DEFAULT=y
CONFIG_CRYPTO_AKCIPHER2=y
CONFIG_CRYPTO_AKCIPHER=y
CONFIG_CRYPTO_KPP2=y
CONFIG_CRYPTO_KPP=y
CONFIG_CRYPTO_ACOMP2=y
CONFIG_CRYPTO_MANAGER=y
CONFIG_CRYPTO_MANAGER2=y
CONFIG_CRYPTO_USER=y
CONFIG_CRYPTO_MANAGER_DISABLE_TESTS=y
CONFIG_CRYPTO_NULL=y
CONFIG_CRYPTO_NULL2=y
CONFIG_CRYPTO_PCRYPT=y
CONFIG_CRYPTO_CRYPTD=y
CONFIG_CRYPTO_AUTHENC=y
CONFIG_CRYPTO_SIMD=y
# end of Crypto core or helper

#
# Public-key cryptography
#
CONFIG_CRYPTO_RSA=y
CONFIG_CRYPTO_DH=y
CONFIG_CRYPTO_DH_RFC7919_GROUPS=y
CONFIG_CRYPTO_ECC=y
CONFIG_CRYPTO_ECDH=y
CONFIG_CRYPTO_ECDSA=y
# CONFIG_CRYPTO_ECRDSA is not set
CONFIG_CRYPTO_SM2=y
CONFIG_CRYPTO_CURVE25519=y
# end of Public-key cryptography

#
# Block ciphers
#
CONFIG_CRYPTO_AES=y
# CONFIG_CRYPTO_AES_TI is not set
CONFIG_CRYPTO_ARIA=y
# CONFIG_CRYPTO_BLOWFISH is not set
# CONFIG_CRYPTO_CAMELLIA is not set
CONFIG_CRYPTO_CAST_COMMON=y
CONFIG_CRYPTO_CAST5=y
CONFIG_CRYPTO_CAST6=y
CONFIG_CRYPTO_DES=y
# CONFIG_CRYPTO_FCRYPT is not set
CONFIG_CRYPTO_SERPENT=y
CONFIG_CRYPTO_SM4=y
CONFIG_CRYPTO_SM4_GENERIC=y
CONFIG_CRYPTO_TWOFISH=y
CONFIG_CRYPTO_TWOFISH_COMMON=y
# end of Block ciphers

#
# Length-preserving ciphers and modes
#
CONFIG_CRYPTO_ADIANTUM=y
CONFIG_CRYPTO_CHACHA20=y
CONFIG_CRYPTO_CBC=y
CONFIG_CRYPTO_CTR=y
# CONFIG_CRYPTO_CTS is not set
CONFIG_CRYPTO_ECB=y
CONFIG_CRYPTO_HCTR2=y
CONFIG_CRYPTO_KEYWRAP=y
CONFIG_CRYPTO_LRW=y
# CONFIG_CRYPTO_PCBC is not set
CONFIG_CRYPTO_XCTR=y
CONFIG_CRYPTO_XTS=y
CONFIG_CRYPTO_NHPOLY1305=y
# end of Length-preserving ciphers and modes

#
# AEAD (authenticated encryption with associated data) ciphers
#
CONFIG_CRYPTO_AEGIS128=y
CONFIG_CRYPTO_CHACHA20POLY1305=y
CONFIG_CRYPTO_CCM=y
CONFIG_CRYPTO_GCM=y
# CONFIG_CRYPTO_SEQIV is not set
# CONFIG_CRYPTO_ECHAINIV is not set
CONFIG_CRYPTO_ESSIV=y
# end of AEAD (authenticated encryption with associated data) ciphers

#
# Hashes, digests, and MACs
#
CONFIG_CRYPTO_BLAKE2B=y
CONFIG_CRYPTO_CMAC=y
CONFIG_CRYPTO_GHASH=y
CONFIG_CRYPTO_HMAC=y
CONFIG_CRYPTO_MD4=y
CONFIG_CRYPTO_MD5=y
CONFIG_CRYPTO_MICHAEL_MIC=y
CONFIG_CRYPTO_POLYVAL=y
CONFIG_CRYPTO_POLY1305=y
# CONFIG_CRYPTO_RMD160 is not set
CONFIG_CRYPTO_SHA1=y
CONFIG_CRYPTO_SHA256=y
CONFIG_CRYPTO_SHA512=y
CONFIG_CRYPTO_SHA3=y
CONFIG_CRYPTO_SM3=y
# CONFIG_CRYPTO_SM3_GENERIC is not set
CONFIG_CRYPTO_STREEBOG=y
# CONFIG_CRYPTO_VMAC is not set
CONFIG_CRYPTO_WP512=y
CONFIG_CRYPTO_XCBC=y
CONFIG_CRYPTO_XXHASH=y
# end of Hashes, digests, and MACs

#
# CRCs (cyclic redundancy checks)
#
CONFIG_CRYPTO_CRC32C=y
CONFIG_CRYPTO_CRC32=y
CONFIG_CRYPTO_CRCT10DIF=y
CONFIG_CRYPTO_CRC64_ROCKSOFT=y
# end of CRCs (cyclic redundancy checks)

#
# Compression
#
CONFIG_CRYPTO_DEFLATE=y
CONFIG_CRYPTO_LZO=y
CONFIG_CRYPTO_842=y
# CONFIG_CRYPTO_LZ4 is not set
# CONFIG_CRYPTO_LZ4HC is not set
CONFIG_CRYPTO_ZSTD=y
# end of Compression

#
# Random number generation
#
CONFIG_CRYPTO_ANSI_CPRNG=y
CONFIG_CRYPTO_DRBG_MENU=y
CONFIG_CRYPTO_DRBG_HMAC=y
# CONFIG_CRYPTO_DRBG_HASH is not set
# CONFIG_CRYPTO_DRBG_CTR is not set
CONFIG_CRYPTO_DRBG=y
CONFIG_CRYPTO_JITTERENTROPY=y
CONFIG_CRYPTO_JITTERENTROPY_MEMORY_BLOCKS=64
CONFIG_CRYPTO_JITTERENTROPY_MEMORY_BLOCKSIZE=32
CONFIG_CRYPTO_JITTERENTROPY_OSR=1
CONFIG_CRYPTO_KDF800108_CTR=y
# end of Random number generation

#
# Userspace interface
#
CONFIG_CRYPTO_USER_API=y
CONFIG_CRYPTO_USER_API_HASH=y
CONFIG_CRYPTO_USER_API_SKCIPHER=y
CONFIG_CRYPTO_USER_API_RNG=y
# CONFIG_CRYPTO_USER_API_RNG_CAVP is not set
# CONFIG_CRYPTO_USER_API_AEAD is not set
# CONFIG_CRYPTO_USER_API_ENABLE_OBSOLETE is not set
# CONFIG_CRYPTO_STATS is not set
# end of Userspace interface

CONFIG_CRYPTO_HASH_INFO=y

#
# Accelerated Cryptographic Algorithms for CPU (x86)
#
CONFIG_CRYPTO_CURVE25519_X86=y
# CONFIG_CRYPTO_AES_NI_INTEL is not set
# CONFIG_CRYPTO_BLOWFISH_X86_64 is not set
CONFIG_CRYPTO_CAMELLIA_X86_64=y
CONFIG_CRYPTO_CAMELLIA_AESNI_AVX_X86_64=y
CONFIG_CRYPTO_CAMELLIA_AESNI_AVX2_X86_64=y
CONFIG_CRYPTO_CAST5_AVX_X86_64=y
# CONFIG_CRYPTO_CAST6_AVX_X86_64 is not set
CONFIG_CRYPTO_DES3_EDE_X86_64=y
# CONFIG_CRYPTO_SERPENT_SSE2_X86_64 is not set
# CONFIG_CRYPTO_SERPENT_AVX_X86_64 is not set
# CONFIG_CRYPTO_SERPENT_AVX2_X86_64 is not set
CONFIG_CRYPTO_SM4_AESNI_AVX_X86_64=y
# CONFIG_CRYPTO_SM4_AESNI_AVX2_X86_64 is not set
CONFIG_CRYPTO_TWOFISH_X86_64=y
CONFIG_CRYPTO_TWOFISH_X86_64_3WAY=y
CONFIG_CRYPTO_TWOFISH_AVX_X86_64=y
CONFIG_CRYPTO_ARIA_AESNI_AVX_X86_64=y
CONFIG_CRYPTO_ARIA_AESNI_AVX2_X86_64=y
# CONFIG_CRYPTO_ARIA_GFNI_AVX512_X86_64 is not set
CONFIG_CRYPTO_CHACHA20_X86_64=y
CONFIG_CRYPTO_AEGIS128_AESNI_SSE2=y
CONFIG_CRYPTO_NHPOLY1305_SSE2=y
# CONFIG_CRYPTO_NHPOLY1305_AVX2 is not set
# CONFIG_CRYPTO_BLAKE2S_X86 is not set
CONFIG_CRYPTO_POLYVAL_CLMUL_NI=y
CONFIG_CRYPTO_POLY1305_X86_64=y
CONFIG_CRYPTO_SHA1_SSSE3=y
CONFIG_CRYPTO_SHA256_SSSE3=y
# CONFIG_CRYPTO_SHA512_SSSE3 is not set
CONFIG_CRYPTO_SM3_AVX_X86_64=y
CONFIG_CRYPTO_GHASH_CLMUL_NI_INTEL=y
CONFIG_CRYPTO_CRC32C_INTEL=y
CONFIG_CRYPTO_CRC32_PCLMUL=y
# CONFIG_CRYPTO_CRCT10DIF_PCLMUL is not set
# end of Accelerated Cryptographic Algorithms for CPU (x86)

# CONFIG_CRYPTO_HW is not set
CONFIG_ASYMMETRIC_KEY_TYPE=y
CONFIG_ASYMMETRIC_PUBLIC_KEY_SUBTYPE=y
CONFIG_X509_CERTIFICATE_PARSER=y
CONFIG_PKCS8_PRIVATE_KEY_PARSER=y
CONFIG_PKCS7_MESSAGE_PARSER=y
CONFIG_PKCS7_TEST_KEY=y
# CONFIG_SIGNED_PE_FILE_VERIFICATION is not set
# CONFIG_FIPS_SIGNATURE_SELFTEST is not set

#
# Certificates for signature checking
#
CONFIG_SYSTEM_TRUSTED_KEYRING=y
CONFIG_SYSTEM_TRUSTED_KEYS=""
# CONFIG_SYSTEM_EXTRA_CERTIFICATE is not set
CONFIG_SECONDARY_TRUSTED_KEYRING=y
CONFIG_SECONDARY_TRUSTED_KEYRING_SIGNED_BY_BUILTIN=y
# CONFIG_SYSTEM_BLACKLIST_KEYRING is not set
# end of Certificates for signature checking

CONFIG_BINARY_PRINTF=y

#
# Library routines
#
CONFIG_RAID6_PQ=y
CONFIG_RAID6_PQ_BENCHMARK=y
CONFIG_LINEAR_RANGES=y
CONFIG_PACKING=y
CONFIG_BITREVERSE=y
CONFIG_GENERIC_STRNCPY_FROM_USER=y
CONFIG_GENERIC_STRNLEN_USER=y
CONFIG_GENERIC_NET_UTILS=y
CONFIG_CORDIC=y
# CONFIG_PRIME_NUMBERS is not set
CONFIG_RATIONAL=y
CONFIG_GENERIC_PCI_IOMAP=y
CONFIG_GENERIC_IOMAP=y
CONFIG_STMP_DEVICE=y
CONFIG_ARCH_USE_CMPXCHG_LOCKREF=y
CONFIG_ARCH_HAS_FAST_MULTIPLIER=y
CONFIG_ARCH_USE_SYM_ANNOTATIONS=y

#
# Crypto library routines
#
CONFIG_CRYPTO_LIB_UTILS=y
CONFIG_CRYPTO_LIB_AES=y
CONFIG_CRYPTO_LIB_ARC4=y
CONFIG_CRYPTO_LIB_GF128MUL=y
CONFIG_CRYPTO_LIB_BLAKE2S_GENERIC=y
CONFIG_CRYPTO_ARCH_HAVE_LIB_CHACHA=y
CONFIG_CRYPTO_LIB_CHACHA_GENERIC=y
CONFIG_CRYPTO_LIB_CHACHA=y
CONFIG_CRYPTO_ARCH_HAVE_LIB_CURVE25519=y
CONFIG_CRYPTO_LIB_CURVE25519_GENERIC=y
CONFIG_CRYPTO_LIB_CURVE25519=y
CONFIG_CRYPTO_LIB_DES=y
CONFIG_CRYPTO_LIB_POLY1305_RSIZE=11
CONFIG_CRYPTO_ARCH_HAVE_LIB_POLY1305=y
CONFIG_CRYPTO_LIB_POLY1305_GENERIC=y
CONFIG_CRYPTO_LIB_POLY1305=y
CONFIG_CRYPTO_LIB_CHACHA20POLY1305=y
CONFIG_CRYPTO_LIB_SHA1=y
CONFIG_CRYPTO_LIB_SHA256=y
# end of Crypto library routines

CONFIG_CRC_CCITT=y
CONFIG_CRC16=y
CONFIG_CRC_T10DIF=y
CONFIG_CRC64_ROCKSOFT=y
CONFIG_CRC_ITU_T=y
CONFIG_CRC32=y
CONFIG_CRC32_SELFTEST=y
CONFIG_CRC32_SLICEBY8=y
# CONFIG_CRC32_SLICEBY4 is not set
# CONFIG_CRC32_SARWATE is not set
# CONFIG_CRC32_BIT is not set
CONFIG_CRC64=y
# CONFIG_CRC4 is not set
CONFIG_CRC7=y
CONFIG_LIBCRC32C=y
CONFIG_CRC8=y
CONFIG_XXHASH=y
# CONFIG_RANDOM32_SELFTEST is not set
CONFIG_842_COMPRESS=y
CONFIG_842_DECOMPRESS=y
CONFIG_ZLIB_INFLATE=y
CONFIG_ZLIB_DEFLATE=y
CONFIG_LZO_COMPRESS=y
CONFIG_LZO_DECOMPRESS=y
CONFIG_LZ4_COMPRESS=y
CONFIG_LZ4HC_COMPRESS=y
CONFIG_LZ4_DECOMPRESS=y
CONFIG_ZSTD_COMMON=y
CONFIG_ZSTD_COMPRESS=y
CONFIG_ZSTD_DECOMPRESS=y
CONFIG_XZ_DEC=y
CONFIG_XZ_DEC_X86=y
CONFIG_XZ_DEC_POWERPC=y
CONFIG_XZ_DEC_ARM=y
CONFIG_XZ_DEC_ARMTHUMB=y
CONFIG_XZ_DEC_SPARC=y
CONFIG_XZ_DEC_MICROLZMA=y
CONFIG_XZ_DEC_BCJ=y
# CONFIG_XZ_DEC_TEST is not set
CONFIG_DECOMPRESS_GZIP=y
CONFIG_DECOMPRESS_XZ=y
CONFIG_DECOMPRESS_ZSTD=y
CONFIG_GENERIC_ALLOCATOR=y
CONFIG_REED_SOLOMON=y
CONFIG_REED_SOLOMON_DEC8=y
CONFIG_REED_SOLOMON_DEC16=y
CONFIG_BCH=y
CONFIG_TEXTSEARCH=y
CONFIG_TEXTSEARCH_KMP=y
CONFIG_TEXTSEARCH_BM=y
CONFIG_TEXTSEARCH_FSM=y
CONFIG_INTERVAL_TREE=y
CONFIG_XARRAY_MULTI=y
CONFIG_ASSOCIATIVE_ARRAY=y
CONFIG_CLOSURES=y
CONFIG_HAS_IOMEM=y
CONFIG_HAS_IOPORT=y
CONFIG_HAS_IOPORT_MAP=y
CONFIG_HAS_DMA=y
CONFIG_DMA_OPS=y
CONFIG_NEED_SG_DMA_FLAGS=y
CONFIG_NEED_SG_DMA_LENGTH=y
CONFIG_NEED_DMA_MAP_STATE=y
CONFIG_ARCH_DMA_ADDR_T_64BIT=y
CONFIG_SWIOTLB=y
# CONFIG_SWIOTLB_DYNAMIC is not set
CONFIG_DMA_CMA=y
CONFIG_DMA_NUMA_CMA=y

#
# Default contiguous memory area size:
#
CONFIG_CMA_SIZE_MBYTES=0
CONFIG_CMA_SIZE_SEL_MBYTES=y
# CONFIG_CMA_SIZE_SEL_PERCENTAGE is not set
# CONFIG_CMA_SIZE_SEL_MIN is not set
# CONFIG_CMA_SIZE_SEL_MAX is not set
CONFIG_CMA_ALIGNMENT=8
CONFIG_DMA_API_DEBUG=y
# CONFIG_DMA_API_DEBUG_SG is not set
# CONFIG_DMA_MAP_BENCHMARK is not set
CONFIG_SGL_ALLOC=y
CONFIG_CHECK_SIGNATURE=y
CONFIG_CPUMASK_OFFSTACK=y
CONFIG_CPU_RMAP=y
CONFIG_DQL=y
CONFIG_GLOB=y
# CONFIG_GLOB_SELFTEST is not set
CONFIG_NLATTR=y
CONFIG_CLZ_TAB=y
CONFIG_IRQ_POLL=y
CONFIG_MPILIB=y
CONFIG_DIMLIB=y
CONFIG_OID_REGISTRY=y
CONFIG_HAVE_GENERIC_VDSO=y
CONFIG_GENERIC_GETTIMEOFDAY=y
CONFIG_GENERIC_VDSO_TIME_NS=y
CONFIG_SG_POOL=y
CONFIG_ARCH_HAS_PMEM_API=y
CONFIG_MEMREGION=y
CONFIG_ARCH_HAS_CPU_CACHE_INVALIDATE_MEMREGION=y
CONFIG_ARCH_HAS_UACCESS_FLUSHCACHE=y
CONFIG_ARCH_HAS_COPY_MC=y
CONFIG_ARCH_STACKWALK=y
CONFIG_STACKDEPOT=y
CONFIG_STACKDEPOT_ALWAYS_INIT=y
CONFIG_STACKDEPOT_MAX_FRAMES=64
CONFIG_REF_TRACKER=y
CONFIG_SBITMAP=y
CONFIG_PARMAN=y
# CONFIG_OBJAGG is not set
# CONFIG_LWQ_TEST is not set
# end of Library routines

CONFIG_ASN1_ENCODER=y
CONFIG_POLYNOMIAL=y
CONFIG_FIRMWARE_TABLE=y

#
# Kernel hacking
#

#
# printk and dmesg options
#
# CONFIG_PRINTK_TIME is not set
# CONFIG_PRINTK_CALLER is not set
# CONFIG_STACKTRACE_BUILD_ID is not set
CONFIG_CONSOLE_LOGLEVEL_DEFAULT=7
CONFIG_CONSOLE_LOGLEVEL_QUIET=4
CONFIG_MESSAGE_LOGLEVEL_DEFAULT=4
CONFIG_BOOT_PRINTK_DELAY=y
CONFIG_DYNAMIC_DEBUG=y
CONFIG_DYNAMIC_DEBUG_CORE=y
CONFIG_SYMBOLIC_ERRNAME=y
CONFIG_DEBUG_BUGVERBOSE=y
# end of printk and dmesg options

CONFIG_DEBUG_KERNEL=y
CONFIG_DEBUG_MISC=y

#
# Compile-time checks and compiler options
#
CONFIG_AS_HAS_NON_CONST_ULEB128=y
CONFIG_DEBUG_INFO_NONE=y
# CONFIG_DEBUG_INFO_DWARF_TOOLCHAIN_DEFAULT is not set
# CONFIG_DEBUG_INFO_DWARF4 is not set
# CONFIG_DEBUG_INFO_DWARF5 is not set
CONFIG_FRAME_WARN=2048
CONFIG_STRIP_ASM_SYMS=y
CONFIG_READABLE_ASM=y
CONFIG_HEADERS_INSTALL=y
CONFIG_DEBUG_SECTION_MISMATCH=y
# CONFIG_SECTION_MISMATCH_WARN_ONLY is not set
CONFIG_OBJTOOL=y
CONFIG_DEBUG_FORCE_WEAK_PER_CPU=y
# end of Compile-time checks and compiler options

#
# Generic Kernel Debugging Instruments
#
CONFIG_MAGIC_SYSRQ=y
CONFIG_MAGIC_SYSRQ_DEFAULT_ENABLE=0x1
CONFIG_MAGIC_SYSRQ_SERIAL=y
CONFIG_MAGIC_SYSRQ_SERIAL_SEQUENCE=""
CONFIG_DEBUG_FS=y
CONFIG_DEBUG_FS_ALLOW_ALL=y
# CONFIG_DEBUG_FS_DISALLOW_MOUNT is not set
# CONFIG_DEBUG_FS_ALLOW_NONE is not set
CONFIG_HAVE_ARCH_KGDB=y
# CONFIG_KGDB is not set
CONFIG_ARCH_HAS_UBSAN_SANITIZE_ALL=y
# CONFIG_UBSAN is not set
CONFIG_HAVE_ARCH_KCSAN=y
CONFIG_HAVE_KCSAN_COMPILER=y
CONFIG_KCSAN=y
# CONFIG_KCSAN_VERBOSE is not set
# CONFIG_KCSAN_SELFTEST is not set
# CONFIG_KCSAN_EARLY_ENABLE is not set
CONFIG_KCSAN_NUM_WATCHPOINTS=64
CONFIG_KCSAN_UDELAY_TASK=80
CONFIG_KCSAN_UDELAY_INTERRUPT=20
# CONFIG_KCSAN_DELAY_RANDOMIZE is not set
CONFIG_KCSAN_SKIP_WATCH=4000
CONFIG_KCSAN_SKIP_WATCH_RANDOMIZE=y
CONFIG_KCSAN_INTERRUPT_WATCHER=y
CONFIG_KCSAN_REPORT_ONCE_IN_MS=3000
CONFIG_KCSAN_REPORT_RACE_UNKNOWN_ORIGIN=y
# CONFIG_KCSAN_STRICT is not set
CONFIG_KCSAN_REPORT_VALUE_CHANGE_ONLY=y
CONFIG_KCSAN_ASSUME_PLAIN_WRITES_ATOMIC=y
# CONFIG_KCSAN_IGNORE_ATOMICS is not set
# CONFIG_KCSAN_PERMISSIVE is not set
# end of Generic Kernel Debugging Instruments

#
# Networking Debugging
#
# CONFIG_NET_DEV_REFCNT_TRACKER is not set
CONFIG_NET_NS_REFCNT_TRACKER=y
# CONFIG_DEBUG_NET is not set
# end of Networking Debugging

#
# Memory Debugging
#
# CONFIG_PAGE_EXTENSION is not set
# CONFIG_DEBUG_PAGEALLOC is not set
CONFIG_SLUB_DEBUG=y
CONFIG_SLUB_DEBUG_ON=y
# CONFIG_PAGE_OWNER is not set
# CONFIG_PAGE_TABLE_CHECK is not set
CONFIG_PAGE_POISONING=y
CONFIG_DEBUG_PAGE_REF=y
CONFIG_DEBUG_RODATA_TEST=y
CONFIG_ARCH_HAS_DEBUG_WX=y
CONFIG_DEBUG_WX=y
CONFIG_GENERIC_PTDUMP=y
CONFIG_PTDUMP_CORE=y
CONFIG_PTDUMP_DEBUGFS=y
CONFIG_HAVE_DEBUG_KMEMLEAK=y
CONFIG_DEBUG_KMEMLEAK=y
CONFIG_DEBUG_KMEMLEAK_MEM_POOL_SIZE=16000
CONFIG_DEBUG_KMEMLEAK_DEFAULT_OFF=y
# CONFIG_DEBUG_KMEMLEAK_AUTO_SCAN is not set
CONFIG_PER_VMA_LOCK_STATS=y
CONFIG_DEBUG_OBJECTS=y
CONFIG_DEBUG_OBJECTS_SELFTEST=y
# CONFIG_DEBUG_OBJECTS_FREE is not set
# CONFIG_DEBUG_OBJECTS_TIMERS is not set
CONFIG_DEBUG_OBJECTS_WORK=y
# CONFIG_DEBUG_OBJECTS_RCU_HEAD is not set
# CONFIG_DEBUG_OBJECTS_PERCPU_COUNTER is not set
CONFIG_DEBUG_OBJECTS_ENABLE_DEFAULT=1
CONFIG_SHRINKER_DEBUG=y
CONFIG_DEBUG_STACK_USAGE=y
CONFIG_SCHED_STACK_END_CHECK=y
CONFIG_ARCH_HAS_DEBUG_VM_PGTABLE=y
# CONFIG_DEBUG_VM is not set
CONFIG_DEBUG_VM_PGTABLE=y
CONFIG_ARCH_HAS_DEBUG_VIRTUAL=y
CONFIG_DEBUG_VIRTUAL=y
CONFIG_DEBUG_MEMORY_INIT=y
# CONFIG_DEBUG_PER_CPU_MAPS is not set
CONFIG_HAVE_ARCH_KASAN=y
CONFIG_HAVE_ARCH_KASAN_VMALLOC=y
CONFIG_CC_HAS_KASAN_GENERIC=y
CONFIG_CC_HAS_WORKING_NOSANITIZE_ADDRESS=y
# CONFIG_KASAN is not set
CONFIG_HAVE_ARCH_KFENCE=y
CONFIG_KFENCE=y
CONFIG_KFENCE_SAMPLE_INTERVAL=100
CONFIG_KFENCE_NUM_OBJECTS=255
# CONFIG_KFENCE_DEFERRABLE is not set
CONFIG_KFENCE_STRESS_TEST_FAULTS=0
CONFIG_HAVE_ARCH_KMSAN=y
# end of Memory Debugging

# CONFIG_DEBUG_SHIRQ is not set

#
# Debug Oops, Lockups and Hangs
#
# CONFIG_PANIC_ON_OOPS is not set
CONFIG_PANIC_ON_OOPS_VALUE=0
CONFIG_PANIC_TIMEOUT=0
CONFIG_LOCKUP_DETECTOR=y
CONFIG_SOFTLOCKUP_DETECTOR=y
# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set
CONFIG_HAVE_HARDLOCKUP_DETECTOR_BUDDY=y
CONFIG_HARDLOCKUP_DETECTOR=y
# CONFIG_HARDLOCKUP_DETECTOR_PREFER_BUDDY is not set
CONFIG_HARDLOCKUP_DETECTOR_PERF=y
# CONFIG_HARDLOCKUP_DETECTOR_BUDDY is not set
# CONFIG_HARDLOCKUP_DETECTOR_ARCH is not set
CONFIG_HARDLOCKUP_DETECTOR_COUNTS_HRTIMER=y
CONFIG_HARDLOCKUP_CHECK_TIMESTAMP=y
CONFIG_BOOTPARAM_HARDLOCKUP_PANIC=y
# CONFIG_DETECT_HUNG_TASK is not set
CONFIG_WQ_WATCHDOG=y
# CONFIG_WQ_CPU_INTENSIVE_REPORT is not set
# end of Debug Oops, Lockups and Hangs

#
# Scheduler Debugging
#
# CONFIG_SCHED_DEBUG is not set
CONFIG_SCHED_INFO=y
CONFIG_SCHEDSTATS=y
# end of Scheduler Debugging

CONFIG_DEBUG_TIMEKEEPING=y
CONFIG_DEBUG_PREEMPT=y

#
# Lock Debugging (spinlocks, mutexes, etc...)
#
CONFIG_LOCK_DEBUGGING_SUPPORT=y
CONFIG_PROVE_LOCKING=y
# CONFIG_PROVE_RAW_LOCK_NESTING is not set
# CONFIG_LOCK_STAT is not set
CONFIG_DEBUG_RT_MUTEXES=y
CONFIG_DEBUG_SPINLOCK=y
CONFIG_DEBUG_MUTEXES=y
CONFIG_DEBUG_WW_MUTEX_SLOWPATH=y
CONFIG_DEBUG_RWSEMS=y
CONFIG_DEBUG_LOCK_ALLOC=y
CONFIG_LOCKDEP=y
CONFIG_LOCKDEP_BITS=15
CONFIG_LOCKDEP_CHAINS_BITS=16
CONFIG_LOCKDEP_STACK_TRACE_BITS=19
CONFIG_LOCKDEP_STACK_TRACE_HASH_BITS=14
CONFIG_LOCKDEP_CIRCULAR_QUEUE_BITS=12
# CONFIG_DEBUG_LOCKDEP is not set
CONFIG_DEBUG_ATOMIC_SLEEP=y
# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
CONFIG_LOCK_TORTURE_TEST=y
# CONFIG_WW_MUTEX_SELFTEST is not set
# CONFIG_SCF_TORTURE_TEST is not set
# CONFIG_CSD_LOCK_WAIT_DEBUG is not set
# end of Lock Debugging (spinlocks, mutexes, etc...)

CONFIG_TRACE_IRQFLAGS=y
CONFIG_TRACE_IRQFLAGS_NMI=y
CONFIG_NMI_CHECK_CPU=y
CONFIG_DEBUG_IRQFLAGS=y
CONFIG_STACKTRACE=y
CONFIG_WARN_ALL_UNSEEDED_RANDOM=y
# CONFIG_DEBUG_KOBJECT is not set

#
# Debug kernel data structures
#
# CONFIG_DEBUG_LIST is not set
# CONFIG_DEBUG_PLIST is not set
CONFIG_DEBUG_SG=y
# CONFIG_DEBUG_NOTIFIERS is not set
CONFIG_DEBUG_CLOSURES=y
CONFIG_DEBUG_MAPLE_TREE=y
# end of Debug kernel data structures

#
# RCU Debugging
#
CONFIG_PROVE_RCU=y
# CONFIG_PROVE_RCU_LIST is not set
CONFIG_TORTURE_TEST=y
# CONFIG_RCU_SCALE_TEST is not set
# CONFIG_RCU_TORTURE_TEST is not set
CONFIG_RCU_REF_SCALE_TEST=y
CONFIG_RCU_CPU_STALL_TIMEOUT=21
CONFIG_RCU_EXP_CPU_STALL_TIMEOUT=0
# CONFIG_RCU_CPU_STALL_CPUTIME is not set
# CONFIG_RCU_CPU_STALL_NOTIFIER is not set
CONFIG_RCU_TRACE=y
# CONFIG_RCU_EQS_DEBUG is not set
# end of RCU Debugging

# CONFIG_DEBUG_WQ_FORCE_RR_CPU is not set
CONFIG_CPU_HOTPLUG_STATE_CONTROL=y
CONFIG_LATENCYTOP=y
CONFIG_USER_STACKTRACE_SUPPORT=y
CONFIG_NOP_TRACER=y
CONFIG_HAVE_RETHOOK=y
CONFIG_RETHOOK=y
CONFIG_HAVE_FUNCTION_TRACER=y
CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
CONFIG_HAVE_FUNCTION_GRAPH_RETVAL=y
CONFIG_HAVE_DYNAMIC_FTRACE=y
CONFIG_HAVE_DYNAMIC_FTRACE_WITH_REGS=y
CONFIG_HAVE_DYNAMIC_FTRACE_WITH_DIRECT_CALLS=y
CONFIG_HAVE_DYNAMIC_FTRACE_WITH_ARGS=y
CONFIG_HAVE_DYNAMIC_FTRACE_NO_PATCHABLE=y
CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
CONFIG_HAVE_SYSCALL_TRACEPOINTS=y
CONFIG_HAVE_FENTRY=y
CONFIG_HAVE_OBJTOOL_MCOUNT=y
CONFIG_HAVE_OBJTOOL_NOP_MCOUNT=y
CONFIG_HAVE_C_RECORDMCOUNT=y
CONFIG_HAVE_BUILDTIME_MCOUNT_SORT=y
CONFIG_BUILDTIME_MCOUNT_SORT=y
CONFIG_TRACER_MAX_TRACE=y
CONFIG_TRACE_CLOCK=y
CONFIG_RING_BUFFER=y
CONFIG_EVENT_TRACING=y
CONFIG_CONTEXT_SWITCH_TRACER=y
CONFIG_RING_BUFFER_ALLOW_SWAP=y
CONFIG_PREEMPTIRQ_TRACEPOINTS=y
CONFIG_TRACING=y
CONFIG_GENERIC_TRACER=y
CONFIG_TRACING_SUPPORT=y
CONFIG_FTRACE=y
CONFIG_BOOTTIME_TRACING=y
CONFIG_FUNCTION_TRACER=y
# CONFIG_FUNCTION_GRAPH_TRACER is not set
CONFIG_DYNAMIC_FTRACE=y
CONFIG_DYNAMIC_FTRACE_WITH_REGS=y
CONFIG_DYNAMIC_FTRACE_WITH_DIRECT_CALLS=y
CONFIG_DYNAMIC_FTRACE_WITH_ARGS=y
CONFIG_FPROBE=y
CONFIG_FUNCTION_PROFILER=y
# CONFIG_STACK_TRACER is not set
CONFIG_TRACE_PREEMPT_TOGGLE=y
CONFIG_IRQSOFF_TRACER=y
CONFIG_PREEMPT_TRACER=y
# CONFIG_SCHED_TRACER is not set
# CONFIG_HWLAT_TRACER is not set
CONFIG_OSNOISE_TRACER=y
CONFIG_TIMERLAT_TRACER=y
# CONFIG_MMIOTRACE is not set
# CONFIG_FTRACE_SYSCALLS is not set
CONFIG_TRACER_SNAPSHOT=y
CONFIG_TRACER_SNAPSHOT_PER_CPU_SWAP=y
CONFIG_BRANCH_PROFILE_NONE=y
# CONFIG_PROFILE_ANNOTATED_BRANCHES is not set
# CONFIG_PROFILE_ALL_BRANCHES is not set
# CONFIG_BLK_DEV_IO_TRACE is not set
CONFIG_FPROBE_EVENTS=y
# CONFIG_UPROBE_EVENTS is not set
CONFIG_DYNAMIC_EVENTS=y
CONFIG_PROBE_EVENTS=y
CONFIG_FTRACE_MCOUNT_RECORD=y
CONFIG_FTRACE_MCOUNT_USE_CC=y
CONFIG_TRACING_MAP=y
CONFIG_SYNTH_EVENTS=y
CONFIG_USER_EVENTS=y
CONFIG_HIST_TRIGGERS=y
CONFIG_TRACE_EVENT_INJECT=y
CONFIG_TRACEPOINT_BENCHMARK=y
# CONFIG_RING_BUFFER_BENCHMARK is not set
CONFIG_TRACE_EVAL_MAP_FILE=y
# CONFIG_FTRACE_RECORD_RECURSION is not set
CONFIG_GCOV_PROFILE_FTRACE=y
# CONFIG_FTRACE_STARTUP_TEST is not set
CONFIG_FTRACE_SORT_STARTUP_TEST=y
CONFIG_RING_BUFFER_STARTUP_TEST=y
CONFIG_RING_BUFFER_VALIDATE_TIME_DELTAS=y
# CONFIG_SYNTH_EVENT_GEN_TEST is not set
CONFIG_HIST_TRIGGERS_DEBUG=y
# CONFIG_RV is not set
CONFIG_PROVIDE_OHCI1394_DMA_INIT=y
# CONFIG_SAMPLES is not set
CONFIG_HAVE_SAMPLE_FTRACE_DIRECT=y
CONFIG_HAVE_SAMPLE_FTRACE_DIRECT_MULTI=y
CONFIG_ARCH_HAS_DEVMEM_IS_ALLOWED=y
CONFIG_STRICT_DEVMEM=y
# CONFIG_IO_STRICT_DEVMEM is not set

#
# x86 Debugging
#
CONFIG_EARLY_PRINTK_USB=y
CONFIG_X86_VERBOSE_BOOTUP=y
CONFIG_EARLY_PRINTK=y
CONFIG_EARLY_PRINTK_DBGP=y
# CONFIG_EARLY_PRINTK_USB_XDBC is not set
# CONFIG_DEBUG_TLBFLUSH is not set
CONFIG_HAVE_MMIOTRACE_SUPPORT=y
CONFIG_IO_DELAY_0X80=y
# CONFIG_IO_DELAY_0XED is not set
# CONFIG_IO_DELAY_UDELAY is not set
# CONFIG_IO_DELAY_NONE is not set
CONFIG_DEBUG_BOOT_PARAMS=y
CONFIG_CPA_DEBUG=y
# CONFIG_DEBUG_ENTRY is not set
# CONFIG_DEBUG_NMI_SELFTEST is not set
# CONFIG_X86_DEBUG_FPU is not set
CONFIG_PUNIT_ATOM_DEBUG=y
CONFIG_UNWINDER_ORC=y
# CONFIG_UNWINDER_FRAME_POINTER is not set
# end of x86 Debugging

#
# Kernel Testing and Coverage
#
# CONFIG_KUNIT is not set
CONFIG_NOTIFIER_ERROR_INJECTION=y
# CONFIG_NETDEV_NOTIFIER_ERROR_INJECT is not set
CONFIG_FAULT_INJECTION=y
CONFIG_FAILSLAB=y
CONFIG_FAIL_PAGE_ALLOC=y
CONFIG_FAULT_INJECTION_USERCOPY=y
# CONFIG_FAIL_MAKE_REQUEST is not set
# CONFIG_FAIL_IO_TIMEOUT is not set
CONFIG_FAIL_FUTEX=y
CONFIG_FAULT_INJECTION_DEBUG_FS=y
# CONFIG_FAIL_SUNRPC is not set
# CONFIG_FAULT_INJECTION_CONFIGFS is not set
# CONFIG_FAULT_INJECTION_STACKTRACE_FILTER is not set
CONFIG_ARCH_HAS_KCOV=y
CONFIG_CC_HAS_SANCOV_TRACE_PC=y
# CONFIG_KCOV is not set
# CONFIG_RUNTIME_TESTING_MENU is not set
CONFIG_ARCH_USE_MEMTEST=y
# CONFIG_MEMTEST is not set
# end of Kernel Testing and Coverage

#
# Rust hacking
#
# end of Rust hacking
# end of Kernel hacking

#
# Documentation
#
CONFIG_WARN_MISSING_DOCUMENTS=y
# CONFIG_WARN_ABI_ERRORS is not set
# end of Documentation

--rJOTPPhA5KDTsGYN--


From xen-devel-bounces@lists.xenproject.org Fri Jan 26 10:08:48 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 26 Jan 2024 10:08:48 +0000
Received: from list by lists.xenproject.org with outflank-mailman.671912.1045440 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTJ8g-0007sA-N0; Fri, 26 Jan 2024 10:08:46 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 671912.1045440; Fri, 26 Jan 2024 10:08:46 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTJ8g-0007s3-K5; Fri, 26 Jan 2024 10:08:46 +0000
Received: by outflank-mailman (input) for mailman id 671912;
 Fri, 26 Jan 2024 10:08:45 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=rljN=JE=bugseng.com=federico.serafini@srs-se1.protection.inumbo.net>)
 id 1rTJ8f-0007rm-Pi
 for xen-devel@lists.xenproject.org; Fri, 26 Jan 2024 10:08:45 +0000
Received: from support.bugseng.com (mail.bugseng.com [162.55.131.47])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id e2eab20f-bc32-11ee-8a43-1f161083a0e0;
 Fri, 26 Jan 2024 11:08:44 +0100 (CET)
Received: from Dell.homenet.telecomitalia.it
 (host-87-16-84-78.retail.telecomitalia.it [87.16.84.78])
 by support.bugseng.com (Postfix) with ESMTPSA id D90774EE073E;
 Fri, 26 Jan 2024 11:08:42 +0100 (CET)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: e2eab20f-bc32-11ee-8a43-1f161083a0e0
From: Federico Serafini <federico.serafini@bugseng.com>
To: xen-devel@lists.xenproject.org
Cc: consulting@bugseng.com,
	Federico Serafini <federico.serafini@bugseng.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	George Dunlap <george.dunlap@citrix.com>,
	Jan Beulich <jbeulich@suse.com>,
	Julien Grall <julien@xen.org>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Wei Liu <wl@xen.org>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>,
	Simone Ballarin <simone.ballarin@bugseng.com>,
	Doug Goldstein <cardoe@cardoe.com>
Subject: [XEN PATCH v2 0/3] Introduce and use STATIC_ASSERT_UNREACHABLE()
Date: Fri, 26 Jan 2024 11:05:40 +0100
Message-Id: <cover.1706259490.git.federico.serafini@bugseng.com>
X-Mailer: git-send-email 2.34.1
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Introduce macro STATIC_ASSERT_UNREACHABLE(),
use it to replace __{get,put}_user_bad(),
update ECLAIR configuration to allow the use of such macro at the end of
switch-caluses.

Federico Serafini (3):
  xen: introduce STATIC_ASSERT_UNREACHABLE()
  x86/uaccess: replace __{get,put}_user_bad() with
    STATIC_ASSERT_UNREACHABLE()
  automation/eclair: add deviation for MISRA C:2012 Rule 16.3

 automation/eclair_analysis/ECLAIR/deviations.ecl | 4 ++++
 docs/misra/deviations.rst                        | 5 +++++
 xen/arch/x86/include/asm/uaccess.h               | 7 ++-----
 xen/include/xen/compiler.h                       | 7 +++++++
 4 files changed, 18 insertions(+), 5 deletions(-)

-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Fri Jan 26 10:08:48 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 26 Jan 2024 10:08:48 +0000
Received: from list by lists.xenproject.org with outflank-mailman.671914.1045454 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTJ8i-00089l-5o; Fri, 26 Jan 2024 10:08:48 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 671914.1045454; Fri, 26 Jan 2024 10:08:48 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTJ8i-00088b-1G; Fri, 26 Jan 2024 10:08:48 +0000
Received: by outflank-mailman (input) for mailman id 671914;
 Fri, 26 Jan 2024 10:08:46 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=rljN=JE=bugseng.com=federico.serafini@srs-se1.protection.inumbo.net>)
 id 1rTJ8g-0007rm-EO
 for xen-devel@lists.xenproject.org; Fri, 26 Jan 2024 10:08:46 +0000
Received: from support.bugseng.com (mail.bugseng.com [162.55.131.47])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id e359c6eb-bc32-11ee-8a43-1f161083a0e0;
 Fri, 26 Jan 2024 11:08:44 +0100 (CET)
Received: from Dell.homenet.telecomitalia.it
 (host-87-16-84-78.retail.telecomitalia.it [87.16.84.78])
 by support.bugseng.com (Postfix) with ESMTPSA id 030DB4EE074B;
 Fri, 26 Jan 2024 11:08:43 +0100 (CET)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: e359c6eb-bc32-11ee-8a43-1f161083a0e0
From: Federico Serafini <federico.serafini@bugseng.com>
To: xen-devel@lists.xenproject.org
Cc: consulting@bugseng.com,
	Federico Serafini <federico.serafini@bugseng.com>,
	Jan Beulich <jbeulich@suse.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>,
	Wei Liu <wl@xen.org>
Subject: [XEN PATCH v2 2/3] x86/uaccess: replace __{get,put}_user_bad() with STATIC_ASSERT_UNREACHABLE()
Date: Fri, 26 Jan 2024 11:05:42 +0100
Message-Id: <e28bb23a12fae3c8630f943b469137d367f20022.1706259490.git.federico.serafini@bugseng.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <cover.1706259490.git.federico.serafini@bugseng.com>
References: <cover.1706259490.git.federico.serafini@bugseng.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Use STATIC_ASSERT_UNREACHABLE() to improve readability and anticipate
the build failure (from a linker error to an assembler error) in case
of wrong size.

Signed-off-by: Federico Serafini <federico.serafini@bugseng.com>
---
 xen/arch/x86/include/asm/uaccess.h | 7 ++-----
 1 file changed, 2 insertions(+), 5 deletions(-)

diff --git a/xen/arch/x86/include/asm/uaccess.h b/xen/arch/x86/include/asm/uaccess.h
index 7443519d5b..52faf1d919 100644
--- a/xen/arch/x86/include/asm/uaccess.h
+++ b/xen/arch/x86/include/asm/uaccess.h
@@ -21,9 +21,6 @@ unsigned int copy_from_guest_ll(void *to, const void __user *from, unsigned int
 unsigned int copy_to_unsafe_ll(void *to, const void *from, unsigned int n);
 unsigned int copy_from_unsafe_ll(void *to, const void *from, unsigned int n);
 
-extern long __get_user_bad(void);
-extern void __put_user_bad(void);
-
 #define UA_KEEP(args...) args
 #define UA_DROP(args...)
 
@@ -208,7 +205,7 @@ do {                                                                       \
     case 8:                                                                \
         put_unsafe_asm(x, ptr, grd, retval, "q",  "", "ir", errret);       \
         break;                                                             \
-    default: __put_user_bad();                                             \
+    default: STATIC_ASSERT_UNREACHABLE();                                  \
     }                                                                      \
     clac();                                                                \
 } while ( false )
@@ -227,7 +224,7 @@ do {                                                                       \
     case 2: get_unsafe_asm(x, ptr, grd, retval, "w", "=r", errret); break; \
     case 4: get_unsafe_asm(x, ptr, grd, retval, "k", "=r", errret); break; \
     case 8: get_unsafe_asm(x, ptr, grd, retval,  "", "=r", errret); break; \
-    default: __get_user_bad();                                             \
+    default: STATIC_ASSERT_UNREACHABLE();                                  \
     }                                                                      \
     clac();                                                                \
 } while ( false )
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Fri Jan 26 10:08:48 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 26 Jan 2024 10:08:48 +0000
Received: from list by lists.xenproject.org with outflank-mailman.671913.1045450 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTJ8h-00086S-Td; Fri, 26 Jan 2024 10:08:47 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 671913.1045450; Fri, 26 Jan 2024 10:08:47 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTJ8h-00086L-Qm; Fri, 26 Jan 2024 10:08:47 +0000
Received: by outflank-mailman (input) for mailman id 671913;
 Fri, 26 Jan 2024 10:08:46 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=rljN=JE=bugseng.com=federico.serafini@srs-se1.protection.inumbo.net>)
 id 1rTJ8g-0007rs-Ah
 for xen-devel@lists.xenproject.org; Fri, 26 Jan 2024 10:08:46 +0000
Received: from support.bugseng.com (mail.bugseng.com [162.55.131.47])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id e32ebed6-bc32-11ee-98f5-efadbce2ee36;
 Fri, 26 Jan 2024 11:08:44 +0100 (CET)
Received: from Dell.homenet.telecomitalia.it
 (host-87-16-84-78.retail.telecomitalia.it [87.16.84.78])
 by support.bugseng.com (Postfix) with ESMTPSA id 888294EE0749;
 Fri, 26 Jan 2024 11:08:43 +0100 (CET)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: e32ebed6-bc32-11ee-98f5-efadbce2ee36
From: Federico Serafini <federico.serafini@bugseng.com>
To: xen-devel@lists.xenproject.org
Cc: consulting@bugseng.com,
	Federico Serafini <federico.serafini@bugseng.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	George Dunlap <george.dunlap@citrix.com>,
	Jan Beulich <jbeulich@suse.com>,
	Julien Grall <julien@xen.org>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Wei Liu <wl@xen.org>
Subject: [XEN PATCH v2 1/3] xen: introduce STATIC_ASSERT_UNREACHABLE()
Date: Fri, 26 Jan 2024 11:05:41 +0100
Message-Id: <42fc6ae8d3eb802429d29c774502ff232340dc84.1706259490.git.federico.serafini@bugseng.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <cover.1706259490.git.federico.serafini@bugseng.com>
References: <cover.1706259490.git.federico.serafini@bugseng.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Introduce macro STATIC_ASSERT_UNREACHABLE() to check that a program
point is considered unreachable by the static analysis performed by the
compiler.

The use of such macro will lead to one of the following outcomes:
- the program point identified by the macro is considered unreachable,
  then the compiler removes the macro;
- the program point identified by the macro is not considered
  unreachable, then the compiler does not remove the macro, which will
  lead to a failure in the build process caused by an assembler error.

Signed-off-by: Federico Serafini <federico.serafini@bugseng.com>
---
Changes in v2:
- removed constraint about optimization level -O0;
- use capital letters for macro name;
- add missing blanks;
- remove stray semicolon;
- cite the assertion failure in the error message.
---
 xen/include/xen/compiler.h | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/xen/include/xen/compiler.h b/xen/include/xen/compiler.h
index 16d554f2a5..062f54449c 100644
--- a/xen/include/xen/compiler.h
+++ b/xen/include/xen/compiler.h
@@ -64,6 +64,13 @@
 # define fallthrough        do {} while (0)  /* fallthrough */
 #endif
 
+/*
+ * Add the following macro to check that a program point is considered
+ * unreachable by the static analysis performed by the compiler.
+ */
+#define STATIC_ASSERT_UNREACHABLE() \
+    asm ( ".error \"static assertion failed: unreachable\"" )
+
 #ifdef __clang__
 /* Clang can replace some vars with new automatic ones that go in .data;
  * mark all explicit-segment vars 'used' to prevent that. */
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Fri Jan 26 10:08:49 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 26 Jan 2024 10:08:49 +0000
Received: from list by lists.xenproject.org with outflank-mailman.671915.1045470 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTJ8j-00008c-DV; Fri, 26 Jan 2024 10:08:49 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 671915.1045470; Fri, 26 Jan 2024 10:08:49 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTJ8j-00008E-A4; Fri, 26 Jan 2024 10:08:49 +0000
Received: by outflank-mailman (input) for mailman id 671915;
 Fri, 26 Jan 2024 10:08:47 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=rljN=JE=bugseng.com=federico.serafini@srs-se1.protection.inumbo.net>)
 id 1rTJ8h-0007rm-EP
 for xen-devel@lists.xenproject.org; Fri, 26 Jan 2024 10:08:47 +0000
Received: from support.bugseng.com (mail.bugseng.com [162.55.131.47])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id e3a8a3eb-bc32-11ee-8a43-1f161083a0e0;
 Fri, 26 Jan 2024 11:08:45 +0100 (CET)
Received: from Dell.homenet.telecomitalia.it
 (host-87-16-84-78.retail.telecomitalia.it [87.16.84.78])
 by support.bugseng.com (Postfix) with ESMTPSA id 613824EE074C;
 Fri, 26 Jan 2024 11:08:44 +0100 (CET)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: e3a8a3eb-bc32-11ee-8a43-1f161083a0e0
From: Federico Serafini <federico.serafini@bugseng.com>
To: xen-devel@lists.xenproject.org
Cc: consulting@bugseng.com,
	Federico Serafini <federico.serafini@bugseng.com>,
	Simone Ballarin <simone.ballarin@bugseng.com>,
	Doug Goldstein <cardoe@cardoe.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	George Dunlap <george.dunlap@citrix.com>,
	Jan Beulich <jbeulich@suse.com>,
	Julien Grall <julien@xen.org>,
	Wei Liu <wl@xen.org>
Subject: [XEN PATCH v2 3/3] automation/eclair: add deviation for MISRA C:2012 Rule 16.3
Date: Fri, 26 Jan 2024 11:05:43 +0100
Message-Id: <5a9ac027852dc661faac65de2caee6a7260c204c.1706259490.git.federico.serafini@bugseng.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <cover.1706259490.git.federico.serafini@bugseng.com>
References: <cover.1706259490.git.federico.serafini@bugseng.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Update ECLAIR configuration to consider safe switch clauses ending
with STATIC_ASSERT_UNREACHABLE().

Update docs/misra/deviations.rst accordingly.

Signed-off-by: Federico Serafini <federico.serafini@bugseng.com>
---
 automation/eclair_analysis/ECLAIR/deviations.ecl | 4 ++++
 docs/misra/deviations.rst                        | 5 +++++
 2 files changed, 9 insertions(+)

diff --git a/automation/eclair_analysis/ECLAIR/deviations.ecl b/automation/eclair_analysis/ECLAIR/deviations.ecl
index fd32ff8a9c..539efd7b30 100644
--- a/automation/eclair_analysis/ECLAIR/deviations.ecl
+++ b/automation/eclair_analysis/ECLAIR/deviations.ecl
@@ -368,6 +368,10 @@ safe."
 -config=MC3R1.R16.3,reports+={safe, "any_area(end_loc(any_exp(text(/BUG\\(\\);/))))"}
 -doc_end
 
+-doc_begin="Switch clauses ending with unreachability assertion \"STATIC_ASSERT_UNREACHABLE()\" are safe."
+-config=MC3R1.R16.3,reports+={safe, "any_area(end_loc(any_exp(text(/STATIC_ASSERT_UNREACHABLE\\(\\);/))))"}
+-doc_end
+
 -doc_begin="Switch clauses not ending with the break statement are safe if an
 explicit comment indicating the fallthrough intention is present."
 -config=MC3R1.R16.3,reports+={safe, "any_area(end_loc(any_exp(text(^(?s).*/\\* [fF]all ?through.? \\*/.*$,0..1))))"}
diff --git a/docs/misra/deviations.rst b/docs/misra/deviations.rst
index 123c78e20a..c96efdd292 100644
--- a/docs/misra/deviations.rst
+++ b/docs/misra/deviations.rst
@@ -307,6 +307,11 @@ Deviations related to MISRA C:2012 Rules:
      - Switch clauses ending with failure method \"BUG()\" are safe.
      - Tagged as `safe` for ECLAIR.
 
+   * - R16.3
+     - Switch clauses ending with unreachability assertion
+       \"STATIC_ASSERT_UNREACHABLE()\" are safe.
+     - Tagged as `safe` for ECLAIR.
+
    * - R16.3
      - Existing switch clauses not ending with the break statement are safe if
        an explicit comment indicating the fallthrough intention is present.
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Fri Jan 26 10:44:39 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 26 Jan 2024 10:44:39 +0000
Received: from list by lists.xenproject.org with outflank-mailman.671935.1045480 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTJhC-00079f-5m; Fri, 26 Jan 2024 10:44:26 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 671935.1045480; Fri, 26 Jan 2024 10:44:26 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTJhC-00079Y-1v; Fri, 26 Jan 2024 10:44:26 +0000
Received: by outflank-mailman (input) for mailman id 671935;
 Fri, 26 Jan 2024 10:44:24 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=UtOA=JE=redhat.com=thuth@srs-se1.protection.inumbo.net>)
 id 1rTJhA-00079S-NX
 for xen-devel@lists.xenproject.org; Fri, 26 Jan 2024 10:44:24 +0000
Received: from us-smtp-delivery-124.mimecast.com
 (us-smtp-delivery-124.mimecast.com [170.10.133.124])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id dc4d18c3-bc37-11ee-98f5-efadbce2ee36;
 Fri, 26 Jan 2024 11:44:21 +0100 (CET)
Received: from mail-qt1-f200.google.com (mail-qt1-f200.google.com
 [209.85.160.200]) by relay.mimecast.com with ESMTP with STARTTLS
 (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id
 us-mta-442-aq3sLulKNfK4pV62j9fcQQ-1; Fri, 26 Jan 2024 05:44:18 -0500
Received: by mail-qt1-f200.google.com with SMTP id
 d75a77b69052e-42a5f41304cso2269881cf.3
 for <xen-devel@lists.xenproject.org>; Fri, 26 Jan 2024 02:44:18 -0800 (PST)
Received: from [192.168.0.9] (ip-109-43-176-119.web.vodafone.de.
 [109.43.176.119]) by smtp.gmail.com with ESMTPSA id
 z5-20020ac86b85000000b0042a6859ff3esm405399qts.61.2024.01.26.02.44.02
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Fri, 26 Jan 2024 02:44:16 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: dc4d18c3-bc37-11ee-98f5-efadbce2ee36
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
	s=mimecast20190719; t=1706265859;
	h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
	 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references:autocrypt:autocrypt;
	bh=qdgZVkts9TNdCcMB7WSm4PePcnSmcwv1SyVUyDuZlro=;
	b=QI7s0cAPTyGQWNY+eLFft3Uou66FFsREBHm89vbdzO6Fr81wKRA9vM4wAJJaCBBDc3V1lj
	Z02tpbGWHJGZg5pUiZCEmxAK09v1p698E6ANo8QqmDezdyWc1LLPp1RSKzHCNwtKYygUkH
	b2tLlYLSgXb/lVlysz/nv/5VUGuP71c=
X-MC-Unique: aq3sLulKNfK4pV62j9fcQQ-1
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706265858; x=1706870658;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=qdgZVkts9TNdCcMB7WSm4PePcnSmcwv1SyVUyDuZlro=;
        b=AIwdyRsbVrFoooFj62fukQlP9LJQKpTfraALqwdV76C7jgYD6pkCKGWWwR/ZtycDvT
         v9sTAJVFNr2XTDlG94jHrWpYqIMJ2Fxz0XreVxlTpG+F5zpiq32mbX2KCJMSaquxBcHT
         l92w7OELNplN6hofKmFp6RauEw6Bv9eb+ke2WPPV5PKtCmSN7pK+ivb5HKw/ShrNc4UV
         wElC2+FrPeA8iOc/iou+bYaM3Cy9XMrEd4WLdureG7XdzRN2zDhFj6qdNG04W3KDH2V6
         2FLR8WH9SxVHwxgNNXbOCPlQj953YBxsJ9dK619jGTxjQvxyeZgf/GTtEGeXbjAoipWS
         Yneg==
X-Gm-Message-State: AOJu0Yyuo9nZpTys7yzIeoSz6bHbQ59vXrz/AhXQxIitTMCCsVyP0w8z
	QxaLLptozxPYUml8swUOgzumjCn3GuRlYgar1dg0xDIO4hjf2Ee5hJy4PP2EkWZXg6CxN2Sc0fY
	bVLxiKEaOl1wHbIeg0pUZHGn786lFZcj7nQdk4gQ/xXKBximR19mxkXapHJMZLENT
X-Received: by 2002:a05:622a:1244:b0:42a:85b1:9bdf with SMTP id z4-20020a05622a124400b0042a85b19bdfmr49554qtx.118.1706265857454;
        Fri, 26 Jan 2024 02:44:17 -0800 (PST)
X-Google-Smtp-Source: AGHT+IEs+u/g5hW3mLwGN/+U+q+HUat9s5yDCDXJ6+VLisoOE1qJ7LskvrAR7MMb1PswjGvvfOollQ==
X-Received: by 2002:a05:622a:1244:b0:42a:85b1:9bdf with SMTP id z4-20020a05622a124400b0042a85b19bdfmr49529qtx.118.1706265856437;
        Fri, 26 Jan 2024 02:44:16 -0800 (PST)
Message-ID: <d6b0fd22-92ef-4873-a19a-e7752bfddd2d@redhat.com>
Date: Fri, 26 Jan 2024 11:43:59 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 05/46] hw/i386/pc: use qemu_get_nic_info() and
 pci_init_nic_devices()
To: David Woodhouse <dwmw2@infradead.org>, qemu-devel@nongnu.org
Cc: Richard Henderson <richard.henderson@linaro.org>,
 Beniamino Galvani <b.galvani@gmail.com>,
 Peter Maydell <peter.maydell@linaro.org>,
 Strahinja Jankovic <strahinja.p.jankovic@gmail.com>,
 Niek Linnenbank <nieklinnenbank@gmail.com>, =?UTF-8?Q?C=C3=A9dric_Le_Goater?=
 <clg@kaod.org>, Andrew Jeffery <andrew@codeconstruct.com.au>,
 Joel Stanley <joel@jms.id.au>, Igor Mitsyanko <i.mitsyanko@gmail.com>,
 Jean-Christophe Dubois <jcd@tribudubois.net>,
 Andrey Smirnov <andrew.smirnov@gmail.com>,
 =?UTF-8?Q?Philippe_Mathieu-Daud=C3=A9?= <philmd@linaro.org>,
 Rob Herring <robh@kernel.org>, Subbaraya Sundeep <sundeep.lkml@gmail.com>,
 Jan Kiszka <jan.kiszka@web.de>, Tyrone Ting <kfting@nuvoton.com>,
 Hao Wu <wuhaotsh@google.com>, Radoslaw Biernacki <rad@semihalf.com>,
 Leif Lindholm <quic_llindhol@quicinc.com>,
 Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org>,
 "Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
 Alistair Francis <alistair@alistair23.me>, Helge Deller <deller@gmx.de>,
 Paolo Bonzini <pbonzini@redhat.com>, Eduardo Habkost <eduardo@habkost.net>,
 "Michael S. Tsirkin" <mst@redhat.com>,
 Marcel Apfelbaum <marcel.apfelbaum@gmail.com>, Song Gao
 <gaosong@loongson.cn>, Thomas Huth <huth@tuxfamily.org>,
 Laurent Vivier <laurent@vivier.eu>, Huacai Chen <chenhuacai@kernel.org>,
 Jiaxun Yang <jiaxun.yang@flygoat.com>,
 =?UTF-8?Q?Herv=C3=A9_Poussineau?= <hpoussin@reactos.org>,
 Aleksandar Rikalo <aleksandar.rikalo@syrmia.com>,
 Aurelien Jarno <aurelien@aurel32.net>, Jason Wang <jasowang@redhat.com>,
 Jia Liu <proljc@gmail.com>, Stafford Horne <shorne@gmail.com>,
 Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>,
 Nicholas Piggin <npiggin@gmail.com>,
 Daniel Henrique Barboza <danielhb413@gmail.com>,
 David Gibson <david@gibson.dropbear.id.au>,
 Harsh Prateek Bora <harshpb@linux.ibm.com>, Bin Meng
 <bin.meng@windriver.com>, Palmer Dabbelt <palmer@dabbelt.com>,
 Weiwei Li <liwei1518@gmail.com>, Liu Zhiwei <zhiwei_liu@linux.alibaba.com>,
 Halil Pasic <pasic@linux.ibm.com>,
 Christian Borntraeger <borntraeger@linux.ibm.com>,
 Eric Farman <farman@linux.ibm.com>, David Hildenbrand <david@redhat.com>,
 Ilya Leoshkevich <iii@linux.ibm.com>,
 Yoshinori Sato <ysato@users.sourceforge.jp>,
 Magnus Damm <magnus.damm@gmail.com>, Artyom Tarasenko <atar4qemu@gmail.com>,
 Stefano Stabellini <sstabellini@kernel.org>,
 Anthony Perard <anthony.perard@citrix.com>, Paul Durrant <paul@xen.org>,
 Max Filippov <jcmvbkbc@gmail.com>, qemu-arm@nongnu.org, qemu-ppc@nongnu.org,
 qemu-riscv@nongnu.org, qemu-s390x@nongnu.org,
 xen-devel@lists.xenproject.org, David Woodhouse <dwmw@amazon.co.uk>
References: <20240108204909.564514-1-dwmw2@infradead.org>
 <20240108204909.564514-6-dwmw2@infradead.org>
From: Thomas Huth <thuth@redhat.com>
Autocrypt: addr=thuth@redhat.com; keydata=
 xsFNBFH7eUwBEACzyOXKU+5Pcs6wNpKzrlJwzRl3VGZt95VCdb+FgoU9g11m7FWcOafrVRwU
 yYkTm9+7zBUc0sW5AuPGR/dp3pSLX/yFWsA/UB4nJsHqgDvDU7BImSeiTrnpMOTXb7Arw2a2
 4CflIyFqjCpfDM4MuTmzTjXq4Uov1giGE9X6viNo1pxyEpd7PanlKNnf4PqEQp06X4IgUacW
 tSGj6Gcns1bCuHV8OPWLkf4hkRnu8hdL6i60Yxz4E6TqlrpxsfYwLXgEeswPHOA6Mn4Cso9O
 0lewVYfFfsmokfAVMKWzOl1Sr0KGI5T9CpmRfAiSHpthhHWnECcJFwl72NTi6kUcUzG4se81
 O6n9d/kTj7pzTmBdfwuOZ0YUSqcqs0W+l1NcASSYZQaDoD3/SLk+nqVeCBB4OnYOGhgmIHNW
 0CwMRO/GK+20alxzk//V9GmIM2ACElbfF8+Uug3pqiHkVnKqM7W9/S1NH2qmxB6zMiJUHlTH
 gnVeZX0dgH27mzstcF786uPcdEqS0KJuxh2kk5IvUSL3Qn3ZgmgdxBMyCPciD/1cb7/Ahazr
 3ThHQXSHXkH/aDXdfLsKVuwDzHLVSkdSnZdt5HHh75/NFHxwaTlydgfHmFFwodK8y/TjyiGZ
 zg2Kje38xnz8zKn9iesFBCcONXS7txENTzX0z80WKBhK+XSFJwARAQABzR5UaG9tYXMgSHV0
 aCA8dGh1dGhAcmVkaGF0LmNvbT7CwXgEEwECACIFAlVgX6oCGwMGCwkIBwMCBhUIAgkKCwQW
 AgMBAh4BAheAAAoJEC7Z13T+cC21EbIP/ii9cvT2HHGbFRl8HqGT6+7Wkb+XLMqJBMAIGiQK
 QIP3xk1HPTsLfVG0ao4hy/oYkGNOP8+ubLnZen6Yq3zAFiMhQ44lvgigDYJo3Ve59gfe99KX
 EbtB+X95ODARkq0McR6OAsPNJ7gpEUzfkQUUJTXRDQXfG/FX303Gvk+YU0spm2tsIKPl6AmV
 1CegDljzjycyfJbk418MQmMu2T82kjrkEofUO2a24ed3VGC0/Uz//XCR2ZTo+vBoBUQl41BD
 eFFtoCSrzo3yPFS+w5fkH9NT8ChdpSlbNS32NhYQhJtr9zjWyFRf0Zk+T/1P7ECn6gTEkp5k
 ofFIA4MFBc/fXbaDRtBmPB0N9pqTFApIUI4vuFPPO0JDrII9dLwZ6lO9EKiwuVlvr1wwzsgq
 zJTPBU3qHaUO4d/8G+gD7AL/6T4zi8Jo/GmjBsnYaTzbm94lf0CjXjsOX3seMhaE6WAZOQQG
 tZHAO1kAPWpaxne+wtgMKthyPLNwelLf+xzGvrIKvLX6QuLoWMnWldu22z2ICVnLQChlR9d6
 WW8QFEpo/FK7omuS8KvvopFcOOdlbFMM8Y/8vBgVMSsK6fsYUhruny/PahprPbYGiNIhKqz7
 UvgyZVl4pBFjTaz/SbimTk210vIlkDyy1WuS8Zsn0htv4+jQPgo9rqFE4mipJjy/iboDzsFN
 BFH7eUwBEAC2nzfUeeI8dv0C4qrfCPze6NkryUflEut9WwHhfXCLjtvCjnoGqFelH/PE9NF4
 4VPSCdvD1SSmFVzu6T9qWdcwMSaC+e7G/z0/AhBfqTeosAF5XvKQlAb9ZPkdDr7YN0a1XDfa
 +NgA+JZB4ROyBZFFAwNHT+HCnyzy0v9Sh3BgJJwfpXHH2l3LfncvV8rgFv0bvdr70U+On2XH
 5bApOyW1WpIG5KPJlDdzcQTyptOJ1dnEHfwnABEfzI3dNf63rlxsGouX/NFRRRNqkdClQR3K
 gCwciaXfZ7ir7fF0u1N2UuLsWA8Ei1JrNypk+MRxhbvdQC4tyZCZ8mVDk+QOK6pyK2f4rMf/
 WmqxNTtAVmNuZIwnJdjRMMSs4W4w6N/bRvpqtykSqx7VXcgqtv6eqoDZrNuhGbekQA0sAnCJ
 VPArerAZGArm63o39me/bRUQeQVSxEBmg66yshF9HkcUPGVeC4B0TPwz+HFcVhheo6hoJjLq
 knFOPLRj+0h+ZL+D0GenyqD3CyuyeTT5dGcNU9qT74bdSr20k/CklvI7S9yoQje8BeQAHtdV
 cvO8XCLrpGuw9SgOS7OP5oI26a0548M4KldAY+kqX6XVphEw3/6U1KTf7WxW5zYLTtadjISB
 X9xsRWSU+Yqs3C7oN5TIPSoj9tXMoxZkCIHWvnqGwZ7JhwARAQABwsFfBBgBAgAJBQJR+3lM
 AhsMAAoJEC7Z13T+cC21hPAQAIsBL9MdGpdEpvXs9CYrBkd6tS9mbaSWj6XBDfA1AEdQkBOn
 ZH1Qt7HJesk+qNSnLv6+jP4VwqK5AFMrKJ6IjE7jqgzGxtcZnvSjeDGPF1h2CKZQPpTw890k
 fy18AvgFHkVk2Oylyexw3aOBsXg6ukN44vIFqPoc+YSU0+0QIdYJp/XFsgWxnFIMYwDpxSHS
 5fdDxUjsk3UBHZx+IhFjs2siVZi5wnHIqM7eK9abr2cK2weInTBwXwqVWjsXZ4tq5+jQrwDK
 cvxIcwXdUTLGxc4/Z/VRH1PZSvfQxdxMGmNTGaXVNfdFZjm4fz0mz+OUi6AHC4CZpwnsliGV
 ODqwX8Y1zic9viSTbKS01ZNp175POyWViUk9qisPZB7ypfSIVSEULrL347qY/hm9ahhqmn17
 Ng255syASv3ehvX7iwWDfzXbA0/TVaqwa1YIkec+/8miicV0zMP9siRcYQkyTqSzaTFBBmqD
 oiT+z+/E59qj/EKfyce3sbC9XLjXv3mHMrq1tKX4G7IJGnS989E/fg6crv6NHae9Ckm7+lSs
 IQu4bBP2GxiRQ+NV3iV/KU3ebMRzqIC//DCOxzQNFNJAKldPe/bKZMCxEqtVoRkuJtNdp/5a
 yXFZ6TfE1hGKrDBYAm4vrnZ4CXFSBDllL59cFFOJCkn4Xboj/aVxxJxF30bn
In-Reply-To: <20240108204909.564514-6-dwmw2@infradead.org>
X-Mimecast-Spam-Score: 0
X-Mimecast-Originator: redhat.com
Content-Language: en-US
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

On 08/01/2024 21.26, David Woodhouse wrote:
> From: David Woodhouse <dwmw@amazon.co.uk>
> 
> Eliminate direct access to nd_table[] and nb_nics by processing the the
> Xen and ISA NICs first and then calling pci_init_nic_devices() for the
> rest.
> 
> Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
> Reviewed-by: Paul Durrant <paul@xen.org>
> ---
>   hw/i386/pc.c                | 26 ++++++++++++++++----------
>   include/hw/net/ne2000-isa.h |  2 --
>   2 files changed, 16 insertions(+), 12 deletions(-)
> 
> diff --git a/hw/i386/pc.c b/hw/i386/pc.c
> index 496498df3a..d80c536d88 100644
> --- a/hw/i386/pc.c
> +++ b/hw/i386/pc.c
> @@ -658,8 +658,11 @@ static void pc_init_ne2k_isa(ISABus *bus, NICInfo *nd)
>   {
>       static int nb_ne2k = 0;
>   
> -    if (nb_ne2k == NE2000_NB_MAX)
> +    if (nb_ne2k == NE2000_NB_MAX) {
> +        error_setg(&error_fatal,
> +                   "maximum number of ISA NE2000 devices exceeded");
>           return;
> +    }

error_setg(&error_fatal, ...) quits QEMU, so the "return;" does not make 
much sense anymore.
Now, according to include/qapi/error.h :

  * Please don't error_setg(&error_fatal, ...), use error_report() and
  * exit(), because that's more obvious.

So I'd suggest to do that instead.

  Thanks,
   Thomas


>       isa_ne2000_init(bus, ne2000_io[nb_ne2k],
>                       ne2000_irq[nb_ne2k], nd);
>       nb_ne2k++;



From xen-devel-bounces@lists.xenproject.org Fri Jan 26 11:10:41 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 26 Jan 2024 11:10:41 +0000
Received: from list by lists.xenproject.org with outflank-mailman.671940.1045489 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTK6W-0003FB-4q; Fri, 26 Jan 2024 11:10:36 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 671940.1045489; Fri, 26 Jan 2024 11:10:36 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTK6W-0003F4-2H; Fri, 26 Jan 2024 11:10:36 +0000
Received: by outflank-mailman (input) for mailman id 671940;
 Fri, 26 Jan 2024 11:10:34 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=UtOA=JE=redhat.com=thuth@srs-se1.protection.inumbo.net>)
 id 1rTK6U-0003Ey-Ue
 for xen-devel@lists.xenproject.org; Fri, 26 Jan 2024 11:10:34 +0000
Received: from us-smtp-delivery-124.mimecast.com
 (us-smtp-delivery-124.mimecast.com [170.10.129.124])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 84bde023-bc3b-11ee-98f5-efadbce2ee36;
 Fri, 26 Jan 2024 12:10:32 +0100 (CET)
Received: from mail-qv1-f69.google.com (mail-qv1-f69.google.com
 [209.85.219.69]) by relay.mimecast.com with ESMTP with STARTTLS
 (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id
 us-mta-445-WrQ4OGVdMTqJnQnOn4APmg-1; Fri, 26 Jan 2024 06:10:30 -0500
Received: by mail-qv1-f69.google.com with SMTP id
 6a1803df08f44-6800e52d47aso33491776d6.1
 for <xen-devel@lists.xenproject.org>; Fri, 26 Jan 2024 03:10:30 -0800 (PST)
Received: from [192.168.0.9] (ip-109-43-176-119.web.vodafone.de.
 [109.43.176.119]) by smtp.gmail.com with ESMTPSA id
 mu3-20020a056214328300b006869d54c818sm11603qvb.109.2024.01.26.03.10.14
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Fri, 26 Jan 2024 03:10:28 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 84bde023-bc3b-11ee-98f5-efadbce2ee36
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
	s=mimecast20190719; t=1706267431;
	h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
	 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references:autocrypt:autocrypt;
	bh=v2/lmMXltQRLNYt6P2ilUAPc0Q3BMq0DxuQOWysRNdo=;
	b=Fs4ZRu9NaHPg4cFCp7cRe5bJVf1xNezs/GDaHERnftaNaXCt00brlPaBDT864UlH+CxTvF
	iIo31Ll8Owf99mxnhanstvtSv7xFD1IuoOoTFdEUrnJgySn6t3bMauHEJ4W2BRCc+4xOVV
	ue/xDqQGzZal4jvU29WhKn77N547VGI=
X-MC-Unique: WrQ4OGVdMTqJnQnOn4APmg-1
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706267429; x=1706872229;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=v2/lmMXltQRLNYt6P2ilUAPc0Q3BMq0DxuQOWysRNdo=;
        b=kARhZSjQ9W8yGUfUDQbt8OUAIDoUHkVF9LSDQTXTfu83dLOrhsPk6cixJEmfmROlAa
         H5x/dIOxAXOloDTX0LjE0xZldE7iUazc4jVjIgv4TIROtEqcCCamAGJsGe/LdTlzKAb6
         xmKT1slaXNE+beblEas4CwXl2oXbyr/46O/111obCGvJ1osGvUzCuWKngFazSEa1o+0S
         veV251dThe85Un5iJtVHM85FpnygvYz9ykv0Vb5hO7VvHHOq09Kbu0mwE8KhqpyCyTvY
         9A9gk8HWyOSxW5sYKY979VSBnGoqorIl17J1Jcd97+4+Q6X2XGB7JKo3/PtYS1lq4jq8
         esZg==
X-Gm-Message-State: AOJu0YzVj3WR2Or5rHdWLFoJTvvrc+jbATRqq1yyRiWJo7uENX675SSC
	aqyMPOCy/rUcQt3O8oTq9wY+lUcy46cwswJdgCNDE4W2ljxTT7u2EcCcNj2TS7sGnz5Wq7Lcn9r
	fG8MnZWqGND1dzPmQnAd5gcpTcZ7qUSvf9BLXkwK/KQ/MTgh2/QSFiQZ4/EwAB0Pl
X-Received: by 2002:a0c:b341:0:b0:681:132c:8b8e with SMTP id a1-20020a0cb341000000b00681132c8b8emr1235229qvf.46.1706267429636;
        Fri, 26 Jan 2024 03:10:29 -0800 (PST)
X-Google-Smtp-Source: AGHT+IExh71HXG5OQTQJ658GxmPXTaBWNJQ1JNeXo3zpX4HUYj9y/kYObKvL/nmUj6LeMZaJG5o+SA==
X-Received: by 2002:a0c:b341:0:b0:681:132c:8b8e with SMTP id a1-20020a0cb341000000b00681132c8b8emr1235181qvf.46.1706267429300;
        Fri, 26 Jan 2024 03:10:29 -0800 (PST)
Message-ID: <9218c20b-8ba8-402b-bea5-856cb51156dc@redhat.com>
Date: Fri, 26 Jan 2024 12:10:11 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 01/46] net: add qemu_{configure, create}_nic_device(),
 qemu_find_nic_info()
To: David Woodhouse <dwmw2@infradead.org>, qemu-devel@nongnu.org
Cc: Richard Henderson <richard.henderson@linaro.org>,
 Beniamino Galvani <b.galvani@gmail.com>,
 Peter Maydell <peter.maydell@linaro.org>,
 Strahinja Jankovic <strahinja.p.jankovic@gmail.com>,
 Niek Linnenbank <nieklinnenbank@gmail.com>, =?UTF-8?Q?C=C3=A9dric_Le_Goater?=
 <clg@kaod.org>, Andrew Jeffery <andrew@codeconstruct.com.au>,
 Joel Stanley <joel@jms.id.au>, Igor Mitsyanko <i.mitsyanko@gmail.com>,
 Jean-Christophe Dubois <jcd@tribudubois.net>,
 Andrey Smirnov <andrew.smirnov@gmail.com>,
 =?UTF-8?Q?Philippe_Mathieu-Daud=C3=A9?= <philmd@linaro.org>,
 Rob Herring <robh@kernel.org>, Subbaraya Sundeep <sundeep.lkml@gmail.com>,
 Jan Kiszka <jan.kiszka@web.de>, Tyrone Ting <kfting@nuvoton.com>,
 Hao Wu <wuhaotsh@google.com>, Radoslaw Biernacki <rad@semihalf.com>,
 Leif Lindholm <quic_llindhol@quicinc.com>,
 Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org>,
 "Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
 Alistair Francis <alistair@alistair23.me>, Helge Deller <deller@gmx.de>,
 Paolo Bonzini <pbonzini@redhat.com>, Eduardo Habkost <eduardo@habkost.net>,
 "Michael S. Tsirkin" <mst@redhat.com>,
 Marcel Apfelbaum <marcel.apfelbaum@gmail.com>, Song Gao
 <gaosong@loongson.cn>, Thomas Huth <huth@tuxfamily.org>,
 Laurent Vivier <laurent@vivier.eu>, Huacai Chen <chenhuacai@kernel.org>,
 Jiaxun Yang <jiaxun.yang@flygoat.com>,
 =?UTF-8?Q?Herv=C3=A9_Poussineau?= <hpoussin@reactos.org>,
 Aleksandar Rikalo <aleksandar.rikalo@syrmia.com>,
 Aurelien Jarno <aurelien@aurel32.net>, Jason Wang <jasowang@redhat.com>,
 Jia Liu <proljc@gmail.com>, Stafford Horne <shorne@gmail.com>,
 Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>,
 Nicholas Piggin <npiggin@gmail.com>,
 Daniel Henrique Barboza <danielhb413@gmail.com>,
 David Gibson <david@gibson.dropbear.id.au>,
 Harsh Prateek Bora <harshpb@linux.ibm.com>, Bin Meng
 <bin.meng@windriver.com>, Palmer Dabbelt <palmer@dabbelt.com>,
 Weiwei Li <liwei1518@gmail.com>, Liu Zhiwei <zhiwei_liu@linux.alibaba.com>,
 Halil Pasic <pasic@linux.ibm.com>,
 Christian Borntraeger <borntraeger@linux.ibm.com>,
 Eric Farman <farman@linux.ibm.com>, David Hildenbrand <david@redhat.com>,
 Ilya Leoshkevich <iii@linux.ibm.com>,
 Yoshinori Sato <ysato@users.sourceforge.jp>,
 Magnus Damm <magnus.damm@gmail.com>, Artyom Tarasenko <atar4qemu@gmail.com>,
 Stefano Stabellini <sstabellini@kernel.org>,
 Anthony Perard <anthony.perard@citrix.com>, Paul Durrant <paul@xen.org>,
 Max Filippov <jcmvbkbc@gmail.com>, qemu-arm@nongnu.org, qemu-ppc@nongnu.org,
 qemu-riscv@nongnu.org, qemu-s390x@nongnu.org,
 xen-devel@lists.xenproject.org, David Woodhouse <dwmw@amazon.co.uk>
References: <20240108204909.564514-1-dwmw2@infradead.org>
 <20240108204909.564514-2-dwmw2@infradead.org>
From: Thomas Huth <thuth@redhat.com>
Autocrypt: addr=thuth@redhat.com; keydata=
 xsFNBFH7eUwBEACzyOXKU+5Pcs6wNpKzrlJwzRl3VGZt95VCdb+FgoU9g11m7FWcOafrVRwU
 yYkTm9+7zBUc0sW5AuPGR/dp3pSLX/yFWsA/UB4nJsHqgDvDU7BImSeiTrnpMOTXb7Arw2a2
 4CflIyFqjCpfDM4MuTmzTjXq4Uov1giGE9X6viNo1pxyEpd7PanlKNnf4PqEQp06X4IgUacW
 tSGj6Gcns1bCuHV8OPWLkf4hkRnu8hdL6i60Yxz4E6TqlrpxsfYwLXgEeswPHOA6Mn4Cso9O
 0lewVYfFfsmokfAVMKWzOl1Sr0KGI5T9CpmRfAiSHpthhHWnECcJFwl72NTi6kUcUzG4se81
 O6n9d/kTj7pzTmBdfwuOZ0YUSqcqs0W+l1NcASSYZQaDoD3/SLk+nqVeCBB4OnYOGhgmIHNW
 0CwMRO/GK+20alxzk//V9GmIM2ACElbfF8+Uug3pqiHkVnKqM7W9/S1NH2qmxB6zMiJUHlTH
 gnVeZX0dgH27mzstcF786uPcdEqS0KJuxh2kk5IvUSL3Qn3ZgmgdxBMyCPciD/1cb7/Ahazr
 3ThHQXSHXkH/aDXdfLsKVuwDzHLVSkdSnZdt5HHh75/NFHxwaTlydgfHmFFwodK8y/TjyiGZ
 zg2Kje38xnz8zKn9iesFBCcONXS7txENTzX0z80WKBhK+XSFJwARAQABzR5UaG9tYXMgSHV0
 aCA8dGh1dGhAcmVkaGF0LmNvbT7CwXgEEwECACIFAlVgX6oCGwMGCwkIBwMCBhUIAgkKCwQW
 AgMBAh4BAheAAAoJEC7Z13T+cC21EbIP/ii9cvT2HHGbFRl8HqGT6+7Wkb+XLMqJBMAIGiQK
 QIP3xk1HPTsLfVG0ao4hy/oYkGNOP8+ubLnZen6Yq3zAFiMhQ44lvgigDYJo3Ve59gfe99KX
 EbtB+X95ODARkq0McR6OAsPNJ7gpEUzfkQUUJTXRDQXfG/FX303Gvk+YU0spm2tsIKPl6AmV
 1CegDljzjycyfJbk418MQmMu2T82kjrkEofUO2a24ed3VGC0/Uz//XCR2ZTo+vBoBUQl41BD
 eFFtoCSrzo3yPFS+w5fkH9NT8ChdpSlbNS32NhYQhJtr9zjWyFRf0Zk+T/1P7ECn6gTEkp5k
 ofFIA4MFBc/fXbaDRtBmPB0N9pqTFApIUI4vuFPPO0JDrII9dLwZ6lO9EKiwuVlvr1wwzsgq
 zJTPBU3qHaUO4d/8G+gD7AL/6T4zi8Jo/GmjBsnYaTzbm94lf0CjXjsOX3seMhaE6WAZOQQG
 tZHAO1kAPWpaxne+wtgMKthyPLNwelLf+xzGvrIKvLX6QuLoWMnWldu22z2ICVnLQChlR9d6
 WW8QFEpo/FK7omuS8KvvopFcOOdlbFMM8Y/8vBgVMSsK6fsYUhruny/PahprPbYGiNIhKqz7
 UvgyZVl4pBFjTaz/SbimTk210vIlkDyy1WuS8Zsn0htv4+jQPgo9rqFE4mipJjy/iboDzsFN
 BFH7eUwBEAC2nzfUeeI8dv0C4qrfCPze6NkryUflEut9WwHhfXCLjtvCjnoGqFelH/PE9NF4
 4VPSCdvD1SSmFVzu6T9qWdcwMSaC+e7G/z0/AhBfqTeosAF5XvKQlAb9ZPkdDr7YN0a1XDfa
 +NgA+JZB4ROyBZFFAwNHT+HCnyzy0v9Sh3BgJJwfpXHH2l3LfncvV8rgFv0bvdr70U+On2XH
 5bApOyW1WpIG5KPJlDdzcQTyptOJ1dnEHfwnABEfzI3dNf63rlxsGouX/NFRRRNqkdClQR3K
 gCwciaXfZ7ir7fF0u1N2UuLsWA8Ei1JrNypk+MRxhbvdQC4tyZCZ8mVDk+QOK6pyK2f4rMf/
 WmqxNTtAVmNuZIwnJdjRMMSs4W4w6N/bRvpqtykSqx7VXcgqtv6eqoDZrNuhGbekQA0sAnCJ
 VPArerAZGArm63o39me/bRUQeQVSxEBmg66yshF9HkcUPGVeC4B0TPwz+HFcVhheo6hoJjLq
 knFOPLRj+0h+ZL+D0GenyqD3CyuyeTT5dGcNU9qT74bdSr20k/CklvI7S9yoQje8BeQAHtdV
 cvO8XCLrpGuw9SgOS7OP5oI26a0548M4KldAY+kqX6XVphEw3/6U1KTf7WxW5zYLTtadjISB
 X9xsRWSU+Yqs3C7oN5TIPSoj9tXMoxZkCIHWvnqGwZ7JhwARAQABwsFfBBgBAgAJBQJR+3lM
 AhsMAAoJEC7Z13T+cC21hPAQAIsBL9MdGpdEpvXs9CYrBkd6tS9mbaSWj6XBDfA1AEdQkBOn
 ZH1Qt7HJesk+qNSnLv6+jP4VwqK5AFMrKJ6IjE7jqgzGxtcZnvSjeDGPF1h2CKZQPpTw890k
 fy18AvgFHkVk2Oylyexw3aOBsXg6ukN44vIFqPoc+YSU0+0QIdYJp/XFsgWxnFIMYwDpxSHS
 5fdDxUjsk3UBHZx+IhFjs2siVZi5wnHIqM7eK9abr2cK2weInTBwXwqVWjsXZ4tq5+jQrwDK
 cvxIcwXdUTLGxc4/Z/VRH1PZSvfQxdxMGmNTGaXVNfdFZjm4fz0mz+OUi6AHC4CZpwnsliGV
 ODqwX8Y1zic9viSTbKS01ZNp175POyWViUk9qisPZB7ypfSIVSEULrL347qY/hm9ahhqmn17
 Ng255syASv3ehvX7iwWDfzXbA0/TVaqwa1YIkec+/8miicV0zMP9siRcYQkyTqSzaTFBBmqD
 oiT+z+/E59qj/EKfyce3sbC9XLjXv3mHMrq1tKX4G7IJGnS989E/fg6crv6NHae9Ckm7+lSs
 IQu4bBP2GxiRQ+NV3iV/KU3ebMRzqIC//DCOxzQNFNJAKldPe/bKZMCxEqtVoRkuJtNdp/5a
 yXFZ6TfE1hGKrDBYAm4vrnZ4CXFSBDllL59cFFOJCkn4Xboj/aVxxJxF30bn
In-Reply-To: <20240108204909.564514-2-dwmw2@infradead.org>
X-Mimecast-Spam-Score: 0
X-Mimecast-Originator: redhat.com
Content-Language: en-US
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

On 08/01/2024 21.26, David Woodhouse wrote:
> From: David Woodhouse <dwmw@amazon.co.uk>
> 
> Most code which directly accesses nd_table[] and nb_nics uses them for
> one of two things. Either "I have created a NIC device and I'd like a
> configuration for it", or "I will create a NIC device *if* there is a
> configuration for it".  With some variants on the theme around whether
> they actually *check* if the model specified in the configuration is
> the right one.
> 
> Provide functions which perform both of those, allowing platforms to
> be a little more consistent and as a step towards making nd_table[]
> and nb_nics private to the net code.
> 
> Also export the qemu_find_nic_info() helper, as some platforms have
> special cases they need to handle.
> 
> Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
> Reviewed-by: Paul Durrant <paul@xen.org>
> ---
>   include/net/net.h |  7 ++++++-
>   net/net.c         | 51 +++++++++++++++++++++++++++++++++++++++++++++++
>   2 files changed, 57 insertions(+), 1 deletion(-)
> 
> diff --git a/include/net/net.h b/include/net/net.h
> index ffbd2c8d56..25ea83fd12 100644
> --- a/include/net/net.h
> +++ b/include/net/net.h
> @@ -207,7 +207,12 @@ int qemu_show_nic_models(const char *arg, const char *const *models);
>   void qemu_check_nic_model(NICInfo *nd, const char *model);
>   int qemu_find_nic_model(NICInfo *nd, const char * const *models,
>                           const char *default_model);
> -
> +NICInfo *qemu_find_nic_info(const char *typename, bool match_default,
> +                            const char *alias);
> +bool qemu_configure_nic_device(DeviceState *dev, bool match_default,
> +                               const char *alias);
> +DeviceState *qemu_create_nic_device(const char *typename, bool match_default,
> +                                    const char *alias);
>   void print_net_client(Monitor *mon, NetClientState *nc);
>   void net_socket_rs_init(SocketReadState *rs,
>                           SocketReadStateFinalize *finalize,
> diff --git a/net/net.c b/net/net.c
> index 0520bc1681..aeb7f573fc 100644
> --- a/net/net.c
> +++ b/net/net.c
> @@ -1087,6 +1087,57 @@ static int net_init_nic(const Netdev *netdev, const char *name,
>       return idx;
>   }
>   
> +NICInfo *qemu_find_nic_info(const char *typename, bool match_default,
> +                            const char *alias)
> +{
> +    NICInfo *nd;
> +    int i;
> +
> +    for (i = 0; i < nb_nics; i++) {
> +        nd = &nd_table[i];
> +
> +        if (!nd->used || nd->instantiated) {
> +            continue;
> +        }
> +
> +        if ((match_default && !nd->model) || !g_strcmp0(nd->model, typename)
> +            || (alias && !g_strcmp0(nd->model, alias))) {
> +            return nd;
> +        }
> +    }
> +    return NULL;
> +}
> +
> +
> +/* "I have created a device. Please configure it if you can" */
> +bool qemu_configure_nic_device(DeviceState *dev, bool match_default,
> +                               const char *alias)
> +{
> +    NICInfo *nd = qemu_find_nic_info(object_get_typename(OBJECT(dev)),
> +                                     match_default, alias);
> +
> +    if (nd) {
> +        qdev_set_nic_properties(dev, nd);
> +        return true;
> +    }
> +    return false;
> +}
> +
> +/* "Please create a device, if you have a configuration for it" */
> +DeviceState *qemu_create_nic_device(const char *typename, bool match_default,
> +                                    const char *alias)
> +{
> +    NICInfo *nd = qemu_find_nic_info(typename, match_default, alias);
> +    DeviceState *dev;
> +
> +    if (!nd) {
> +        return NULL;
> +    }

The qemu_check_nic_model() function that was used in some code that you 
turned into qemu_create_nic_device() used to set:

     if (!nd->model)
         nd->model = g_strdup(default_model);

(in the qemu_find_nic_model() function that has been called by 
qemu_check_nic_model())

Should we do that also here to make sure that nd->model is not NULL afterwards?

(same question likely applies to qemu_configure_nic_device() )

Apart from that, the patch looks fine to me.

  Thomas

> +    dev = qdev_new(typename);
> +    qdev_set_nic_properties(dev, nd);
> +    return dev;
> +}
>   
>   static int (* const net_client_init_fun[NET_CLIENT_DRIVER__MAX])(
>       const Netdev *netdev,



From xen-devel-bounces@lists.xenproject.org Fri Jan 26 11:14:14 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 26 Jan 2024 11:14:14 +0000
Received: from list by lists.xenproject.org with outflank-mailman.671946.1045500 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTKA1-0003uR-N9; Fri, 26 Jan 2024 11:14:13 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 671946.1045500; Fri, 26 Jan 2024 11:14:13 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTKA1-0003uK-KW; Fri, 26 Jan 2024 11:14:13 +0000
Received: by outflank-mailman (input) for mailman id 671946;
 Fri, 26 Jan 2024 11:14:11 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=bPDA=JE=casper.srs.infradead.org=BATV+7caeb094913322f6f00d+7460+infradead.org+dwmw2@srs-se1.protection.inumbo.net>)
 id 1rTK9y-0003uE-Ro
 for xen-devel@lists.xenproject.org; Fri, 26 Jan 2024 11:14:11 +0000
Received: from casper.infradead.org (casper.infradead.org
 [2001:8b0:10b:1236::1])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 040b7cbe-bc3c-11ee-98f5-efadbce2ee36;
 Fri, 26 Jan 2024 12:14:07 +0100 (CET)
Received: from [2001:8b0:10b:5:66db:af88:1954:1e3]
 (helo=u3832b3a9db3152.ant.amazon.com)
 by casper.infradead.org with esmtpsa (Exim 4.97.1 #2 (Red Hat Linux))
 id 1rTK98-0000000DOzl-2nfY; Fri, 26 Jan 2024 11:13:20 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 040b7cbe-bc3c-11ee-98f5-efadbce2ee36
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=infradead.org; s=casper.20170209; h=MIME-Version:Content-Type:References:
	In-Reply-To:Date:Cc:To:From:Subject:Message-ID:Sender:Reply-To:
	Content-Transfer-Encoding:Content-ID:Content-Description;
	bh=rGcyZFtQ8e1yDzALEYOlYku6BgBW9A5YMGHy7WTs20Y=; b=kkVmPvq54H/Q0MXQzaSPcINkoO
	nA6jqgQuXw01gS6NYGolq3qdmAiTicunOLRG5UdGSgjSX4uP6vjouOFuH1Gh/KHT1wxXQkSHSC8FQ
	zf45ffaxFIEulFt4F/TjcATeKGAa4IsPS/W93TwNvgmsw7HK/eCkhIJgwVYaNN0zYnHiNuLlxNsQ4
	xV/7qAqOH5lHsACluzNgj7TfoRw9FLHWqeHP+iNqc73dc/Ke5jLIWvBPJmR6qf56Ei+YojBHISg9S
	l1w2CNguIjPdYmYG6ecFOU+XM4bmxdEWl7sUfRoB9m6zXWZ5DwizxVqAKxX2cRADfnhua0PsKIhtY
	xUudWvrA==;
Message-ID: <b618c5e3163a3407c413464edd5f638f1c8563fa.camel@infradead.org>
Subject: Re: [PATCH v3 05/46] hw/i386/pc: use qemu_get_nic_info() and
 pci_init_nic_devices()
From: David Woodhouse <dwmw2@infradead.org>
To: Thomas Huth <thuth@redhat.com>, qemu-devel@nongnu.org
Cc: Richard Henderson <richard.henderson@linaro.org>, Beniamino Galvani
 <b.galvani@gmail.com>, Peter Maydell <peter.maydell@linaro.org>, Strahinja
 Jankovic <strahinja.p.jankovic@gmail.com>, Niek Linnenbank
 <nieklinnenbank@gmail.com>,  =?ISO-8859-1?Q?C=E9dric?= Le Goater
 <clg@kaod.org>, Andrew Jeffery <andrew@codeconstruct.com.au>, Joel Stanley
 <joel@jms.id.au>, Igor Mitsyanko <i.mitsyanko@gmail.com>, Jean-Christophe
 Dubois <jcd@tribudubois.net>, Andrey Smirnov <andrew.smirnov@gmail.com>,
 Philippe =?ISO-8859-1?Q?Mathieu-Daud=E9?= <philmd@linaro.org>, Rob Herring
 <robh@kernel.org>, Subbaraya Sundeep <sundeep.lkml@gmail.com>, Jan Kiszka
 <jan.kiszka@web.de>, Tyrone Ting <kfting@nuvoton.com>, Hao Wu
 <wuhaotsh@google.com>, Radoslaw Biernacki <rad@semihalf.com>, Leif Lindholm
 <quic_llindhol@quicinc.com>, Marcin Juszkiewicz
 <marcin.juszkiewicz@linaro.org>, "Edgar E. Iglesias"
 <edgar.iglesias@gmail.com>, Alistair Francis <alistair@alistair23.me>,
 Helge Deller <deller@gmx.de>, Paolo Bonzini <pbonzini@redhat.com>,  Eduardo
 Habkost <eduardo@habkost.net>, "Michael S. Tsirkin" <mst@redhat.com>,
 Marcel Apfelbaum <marcel.apfelbaum@gmail.com>, Song Gao
 <gaosong@loongson.cn>, Thomas Huth <huth@tuxfamily.org>, Laurent Vivier
 <laurent@vivier.eu>, Huacai Chen <chenhuacai@kernel.org>, Jiaxun Yang
 <jiaxun.yang@flygoat.com>,  =?ISO-8859-1?Q?Herv=E9?= Poussineau
 <hpoussin@reactos.org>, Aleksandar Rikalo <aleksandar.rikalo@syrmia.com>, 
 Aurelien Jarno <aurelien@aurel32.net>, Jason Wang <jasowang@redhat.com>,
 Jia Liu <proljc@gmail.com>, Stafford Horne <shorne@gmail.com>, Mark
 Cave-Ayland <mark.cave-ayland@ilande.co.uk>, Nicholas Piggin
 <npiggin@gmail.com>, Daniel Henrique Barboza <danielhb413@gmail.com>, David
 Gibson <david@gibson.dropbear.id.au>, Harsh Prateek Bora
 <harshpb@linux.ibm.com>, Bin Meng <bin.meng@windriver.com>, Palmer Dabbelt
 <palmer@dabbelt.com>, Weiwei Li <liwei1518@gmail.com>, Liu Zhiwei
 <zhiwei_liu@linux.alibaba.com>, Halil Pasic <pasic@linux.ibm.com>,
 Christian Borntraeger <borntraeger@linux.ibm.com>,  Eric Farman
 <farman@linux.ibm.com>, David Hildenbrand <david@redhat.com>, Ilya
 Leoshkevich <iii@linux.ibm.com>, Yoshinori Sato
 <ysato@users.sourceforge.jp>, Magnus Damm <magnus.damm@gmail.com>, Artyom
 Tarasenko <atar4qemu@gmail.com>, Stefano Stabellini
 <sstabellini@kernel.org>, Anthony Perard <anthony.perard@citrix.com>, Paul
 Durrant <paul@xen.org>, Max Filippov <jcmvbkbc@gmail.com>,
 qemu-arm@nongnu.org,  qemu-ppc@nongnu.org, qemu-riscv@nongnu.org,
 qemu-s390x@nongnu.org,  xen-devel@lists.xenproject.org
Date: Fri, 26 Jan 2024 11:13:18 +0000
In-Reply-To: <d6b0fd22-92ef-4873-a19a-e7752bfddd2d@redhat.com>
References: <20240108204909.564514-1-dwmw2@infradead.org>
	 <20240108204909.564514-6-dwmw2@infradead.org>
	 <d6b0fd22-92ef-4873-a19a-e7752bfddd2d@redhat.com>
Content-Type: multipart/signed; micalg="sha-256"; protocol="application/pkcs7-signature";
	boundary="=-/fqV+mqgpy/lBp/ksIzL"
User-Agent: Evolution 3.44.4-0ubuntu2 
MIME-Version: 1.0
X-SRS-Rewrite: SMTP reverse-path rewritten from <dwmw2@infradead.org> by casper.infradead.org. See http://www.infradead.org/rpr.html


--=-/fqV+mqgpy/lBp/ksIzL
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

On Fri, 2024-01-26 at 11:43 +0100, Thomas Huth wrote:
> On 08/01/2024 21.26, David Woodhouse wrote:
> > From: David Woodhouse <dwmw@amazon.co.uk>
> >=20
> > Eliminate direct access to nd_table[] and nb_nics by processing the the
> > Xen and ISA NICs first and then calling pci_init_nic_devices() for the
> > rest.
> >=20
> > Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
> > Reviewed-by: Paul Durrant <paul@xen.org>
> > ---
> > =C2=A0 hw/i386/pc.c=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 | 26 ++++++++++++++++----------
> > =C2=A0 include/hw/net/ne2000-isa.h |=C2=A0 2 --
> > =C2=A0 2 files changed, 16 insertions(+), 12 deletions(-)
> >=20
> > diff --git a/hw/i386/pc.c b/hw/i386/pc.c
> > index 496498df3a..d80c536d88 100644
> > --- a/hw/i386/pc.c
> > +++ b/hw/i386/pc.c
> > @@ -658,8 +658,11 @@ static void pc_init_ne2k_isa(ISABus *bus, NICInfo =
*nd)
> > =C2=A0 {
> > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 static int nb_ne2k =3D 0;
> > =C2=A0=20
> > -=C2=A0=C2=A0=C2=A0 if (nb_ne2k =3D=3D NE2000_NB_MAX)
> > +=C2=A0=C2=A0=C2=A0 if (nb_ne2k =3D=3D NE2000_NB_MAX) {
> > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 error_setg(&error_fatal,
> > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "maximum number of ISA NE2000 devic=
es exceeded");
> > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 return;
> > +=C2=A0=C2=A0=C2=A0 }
>=20
> error_setg(&error_fatal, ...) quits QEMU, so the "return;" does not make=
=20
> much sense anymore.
> Now, according to include/qapi/error.h :
>=20
> =C2=A0 * Please don't error_setg(&error_fatal, ...), use error_report() a=
nd
> =C2=A0 * exit(), because that's more obvious.
>=20
> So I'd suggest to do that instead.

It's going slightly in the opposite direction to what's requested in
https://lore.kernel.org/qemu-devel/34e2c0c6-4e04-486a-8e1f-4afdc461a5d4@lin=
aro.org/

I was thinking that a future patch would let the &error_fatal be an
Error** passed in by the caller, and not actually hard-coded to be
fatal at all.

But sure, unless Philippe objects I'm happy to do it as you show above.

--=-/fqV+mqgpy/lBp/ksIzL
Content-Type: application/pkcs7-signature; name="smime.p7s"
Content-Disposition: attachment; filename="smime.p7s"
Content-Transfer-Encoding: base64

MIAGCSqGSIb3DQEHAqCAMIACAQExDzANBglghkgBZQMEAgEFADCABgkqhkiG9w0BBwEAAKCCEkQw
ggYQMIID+KADAgECAhBNlCwQ1DvglAnFgS06KwZPMA0GCSqGSIb3DQEBDAUAMIGIMQswCQYDVQQG
EwJVUzETMBEGA1UECBMKTmV3IEplcnNleTEUMBIGA1UEBxMLSmVyc2V5IENpdHkxHjAcBgNVBAoT
FVRoZSBVU0VSVFJVU1QgTmV0d29yazEuMCwGA1UEAxMlVVNFUlRydXN0IFJTQSBDZXJ0aWZpY2F0
aW9uIEF1dGhvcml0eTAeFw0xODExMDIwMDAwMDBaFw0zMDEyMzEyMzU5NTlaMIGWMQswCQYDVQQG
EwJHQjEbMBkGA1UECBMSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHEwdTYWxmb3JkMRgwFgYD
VQQKEw9TZWN0aWdvIExpbWl0ZWQxPjA8BgNVBAMTNVNlY3RpZ28gUlNBIENsaWVudCBBdXRoZW50
aWNhdGlvbiBhbmQgU2VjdXJlIEVtYWlsIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
AQEAyjztlApB/975Rrno1jvm2pK/KxBOqhq8gr2+JhwpKirSzZxQgT9tlC7zl6hn1fXjSo5MqXUf
ItMltrMaXqcESJuK8dtK56NCSrq4iDKaKq9NxOXFmqXX2zN8HHGjQ2b2Xv0v1L5Nk1MQPKA19xeW
QcpGEGFUUd0kN+oHox+L9aV1rjfNiCj3bJk6kJaOPabPi2503nn/ITX5e8WfPnGw4VuZ79Khj1YB
rf24k5Ee1sLTHsLtpiK9OjG4iQRBdq6Z/TlVx/hGAez5h36bBJMxqdHLpdwIUkTqT8se3ed0PewD
ch/8kHPo5fZl5u1B0ecpq/sDN/5sCG52Ds+QU5O5EwIDAQABo4IBZDCCAWAwHwYDVR0jBBgwFoAU
U3m/WqorSs9UgOHYm8Cd8rIDZsswHQYDVR0OBBYEFAnA8vwL2pTbX/4r36iZQs/J4K0AMA4GA1Ud
DwEB/wQEAwIBhjASBgNVHRMBAf8ECDAGAQH/AgEAMB0GA1UdJQQWMBQGCCsGAQUFBwMCBggrBgEF
BQcDBDARBgNVHSAECjAIMAYGBFUdIAAwUAYDVR0fBEkwRzBFoEOgQYY/aHR0cDovL2NybC51c2Vy
dHJ1c3QuY29tL1VTRVJUcnVzdFJTQUNlcnRpZmljYXRpb25BdXRob3JpdHkuY3JsMHYGCCsGAQUF
BwEBBGowaDA/BggrBgEFBQcwAoYzaHR0cDovL2NydC51c2VydHJ1c3QuY29tL1VTRVJUcnVzdFJT
QUFkZFRydXN0Q0EuY3J0MCUGCCsGAQUFBzABhhlodHRwOi8vb2NzcC51c2VydHJ1c3QuY29tMA0G
CSqGSIb3DQEBDAUAA4ICAQBBRHUAqznCFfXejpVtMnFojADdF9d6HBA4kMjjsb0XMZHztuOCtKF+
xswhh2GqkW5JQrM8zVlU+A2VP72Ky2nlRA1GwmIPgou74TZ/XTarHG8zdMSgaDrkVYzz1g3nIVO9
IHk96VwsacIvBF8JfqIs+8aWH2PfSUrNxP6Ys7U0sZYx4rXD6+cqFq/ZW5BUfClN/rhk2ddQXyn7
kkmka2RQb9d90nmNHdgKrwfQ49mQ2hWQNDkJJIXwKjYA6VUR/fZUFeCUisdDe/0ABLTI+jheXUV1
eoYV7lNwNBKpeHdNuO6Aacb533JlfeUHxvBz9OfYWUiXu09sMAviM11Q0DuMZ5760CdO2VnpsXP4
KxaYIhvqPqUMWqRdWyn7crItNkZeroXaecG03i3mM7dkiPaCkgocBg0EBYsbZDZ8bsG3a08LwEsL
1Ygz3SBsyECa0waq4hOf/Z85F2w2ZpXfP+w8q4ifwO90SGZZV+HR/Jh6rEaVPDRF/CEGVqR1hiuQ
OZ1YL5ezMTX0ZSLwrymUE0pwi/KDaiYB15uswgeIAcA6JzPFf9pLkAFFWs1QNyN++niFhsM47qod
x/PL+5jR87myx5uYdBEQkkDc+lKB1Wct6ucXqm2EmsaQ0M95QjTmy+rDWjkDYdw3Ms6mSWE3Bn7i
5ZgtwCLXgAIe5W8mybM2JzCCBhQwggT8oAMCAQICEQDGvhmWZ0DEAx0oURL6O6l+MA0GCSqGSIb3
DQEBCwUAMIGWMQswCQYDVQQGEwJHQjEbMBkGA1UECBMSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYD
VQQHEwdTYWxmb3JkMRgwFgYDVQQKEw9TZWN0aWdvIExpbWl0ZWQxPjA8BgNVBAMTNVNlY3RpZ28g
UlNBIENsaWVudCBBdXRoZW50aWNhdGlvbiBhbmQgU2VjdXJlIEVtYWlsIENBMB4XDTIyMDEwNzAw
MDAwMFoXDTI1MDEwNjIzNTk1OVowJDEiMCAGCSqGSIb3DQEJARYTZHdtdzJAaW5mcmFkZWFkLm9y
ZzCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBALQ3GpC2bomUqk+91wLYBzDMcCj5C9m6
oZaHwvmIdXftOgTbCJXADo6G9T7BBAebw2JV38EINgKpy/ZHh7htyAkWYVoFsFPrwHounto8xTsy
SSePMiPlmIdQ10BcVSXMUJ3Juu16GlWOnAMJY2oYfEzmE7uT9YgcBqKCo65pTFmOnR/VVbjJk4K2
xE34GC2nAdUQkPFuyaFisicc6HRMOYXPuF0DuwITEKnjxgNjP+qDrh0db7PAjO1D4d5ftfrsf+kd
RR4gKVGSk8Tz2WwvtLAroJM4nXjNPIBJNT4w/FWWc/5qPHJy2U+eITZ5LLE5s45mX2oPFknWqxBo
bQZ8a9dsZ3dSPZBvE9ZrmtFLrVrN4eo1jsXgAp1+p7bkfqd3BgBEmfsYWlBXO8rVXfvPgLs32VdV
NZxb/CDWPqBsiYv0Hv3HPsz07j5b+/cVoWqyHDKzkaVbxfq/7auNVRmPB3v5SWEsH8xi4Bez2V9U
KxfYCnqsjp8RaC2/khxKt0A552Eaxnz/4ly/2C7wkwTQnBmdlFYhAflWKQ03Ufiu8t3iBE3VJbc2
5oMrglj7TRZrmKq3CkbFnX0fyulB+kHimrt6PIWn7kgyl9aelIl6vtbhMA+l0nfrsORMa4kobqQ5
C5rveVgmcIad67EDa+UqEKy/GltUwlSh6xy+TrK1tzDvAgMBAAGjggHMMIIByDAfBgNVHSMEGDAW
gBQJwPL8C9qU21/+K9+omULPyeCtADAdBgNVHQ4EFgQUzMeDMcimo0oz8o1R1Nver3ZVpSkwDgYD
VR0PAQH/BAQDAgWgMAwGA1UdEwEB/wQCMAAwHQYDVR0lBBYwFAYIKwYBBQUHAwQGCCsGAQUFBwMC
MEAGA1UdIAQ5MDcwNQYMKwYBBAGyMQECAQEBMCUwIwYIKwYBBQUHAgEWF2h0dHBzOi8vc2VjdGln
by5jb20vQ1BTMFoGA1UdHwRTMFEwT6BNoEuGSWh0dHA6Ly9jcmwuc2VjdGlnby5jb20vU2VjdGln
b1JTQUNsaWVudEF1dGhlbnRpY2F0aW9uYW5kU2VjdXJlRW1haWxDQS5jcmwwgYoGCCsGAQUFBwEB
BH4wfDBVBggrBgEFBQcwAoZJaHR0cDovL2NydC5zZWN0aWdvLmNvbS9TZWN0aWdvUlNBQ2xpZW50
QXV0aGVudGljYXRpb25hbmRTZWN1cmVFbWFpbENBLmNydDAjBggrBgEFBQcwAYYXaHR0cDovL29j
c3Auc2VjdGlnby5jb20wHgYDVR0RBBcwFYETZHdtdzJAaW5mcmFkZWFkLm9yZzANBgkqhkiG9w0B
AQsFAAOCAQEAyW6MUir5dm495teKqAQjDJwuFCi35h4xgnQvQ/fzPXmtR9t54rpmI2TfyvcKgOXp
qa7BGXNFfh1JsqexVkIqZP9uWB2J+uVMD+XZEs/KYNNX2PvIlSPrzIB4Z2wyIGQpaPLlYflrrVFK
v9CjT2zdqvy2maK7HKOQRt3BiJbVG5lRiwbbygldcALEV9ChWFfgSXvrWDZspnU3Gjw/rMHrGnql
Htlyebp3pf3fSS9kzQ1FVtVIDrL6eqhTwJxe+pXSMMqFiN0whpBtXdyDjzBtQTaZJ7zTT/vlehc/
tDuqZwGHm/YJy883Ll+GP3NvOkgaRGWEuYWJJ6hFCkXYjyR9IzCCBhQwggT8oAMCAQICEQDGvhmW
Z0DEAx0oURL6O6l+MA0GCSqGSIb3DQEBCwUAMIGWMQswCQYDVQQGEwJHQjEbMBkGA1UECBMSR3Jl
YXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHEwdTYWxmb3JkMRgwFgYDVQQKEw9TZWN0aWdvIExpbWl0
ZWQxPjA8BgNVBAMTNVNlY3RpZ28gUlNBIENsaWVudCBBdXRoZW50aWNhdGlvbiBhbmQgU2VjdXJl
IEVtYWlsIENBMB4XDTIyMDEwNzAwMDAwMFoXDTI1MDEwNjIzNTk1OVowJDEiMCAGCSqGSIb3DQEJ
ARYTZHdtdzJAaW5mcmFkZWFkLm9yZzCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBALQ3
GpC2bomUqk+91wLYBzDMcCj5C9m6oZaHwvmIdXftOgTbCJXADo6G9T7BBAebw2JV38EINgKpy/ZH
h7htyAkWYVoFsFPrwHounto8xTsySSePMiPlmIdQ10BcVSXMUJ3Juu16GlWOnAMJY2oYfEzmE7uT
9YgcBqKCo65pTFmOnR/VVbjJk4K2xE34GC2nAdUQkPFuyaFisicc6HRMOYXPuF0DuwITEKnjxgNj
P+qDrh0db7PAjO1D4d5ftfrsf+kdRR4gKVGSk8Tz2WwvtLAroJM4nXjNPIBJNT4w/FWWc/5qPHJy
2U+eITZ5LLE5s45mX2oPFknWqxBobQZ8a9dsZ3dSPZBvE9ZrmtFLrVrN4eo1jsXgAp1+p7bkfqd3
BgBEmfsYWlBXO8rVXfvPgLs32VdVNZxb/CDWPqBsiYv0Hv3HPsz07j5b+/cVoWqyHDKzkaVbxfq/
7auNVRmPB3v5SWEsH8xi4Bez2V9UKxfYCnqsjp8RaC2/khxKt0A552Eaxnz/4ly/2C7wkwTQnBmd
lFYhAflWKQ03Ufiu8t3iBE3VJbc25oMrglj7TRZrmKq3CkbFnX0fyulB+kHimrt6PIWn7kgyl9ae
lIl6vtbhMA+l0nfrsORMa4kobqQ5C5rveVgmcIad67EDa+UqEKy/GltUwlSh6xy+TrK1tzDvAgMB
AAGjggHMMIIByDAfBgNVHSMEGDAWgBQJwPL8C9qU21/+K9+omULPyeCtADAdBgNVHQ4EFgQUzMeD
Mcimo0oz8o1R1Nver3ZVpSkwDgYDVR0PAQH/BAQDAgWgMAwGA1UdEwEB/wQCMAAwHQYDVR0lBBYw
FAYIKwYBBQUHAwQGCCsGAQUFBwMCMEAGA1UdIAQ5MDcwNQYMKwYBBAGyMQECAQEBMCUwIwYIKwYB
BQUHAgEWF2h0dHBzOi8vc2VjdGlnby5jb20vQ1BTMFoGA1UdHwRTMFEwT6BNoEuGSWh0dHA6Ly9j
cmwuc2VjdGlnby5jb20vU2VjdGlnb1JTQUNsaWVudEF1dGhlbnRpY2F0aW9uYW5kU2VjdXJlRW1h
aWxDQS5jcmwwgYoGCCsGAQUFBwEBBH4wfDBVBggrBgEFBQcwAoZJaHR0cDovL2NydC5zZWN0aWdv
LmNvbS9TZWN0aWdvUlNBQ2xpZW50QXV0aGVudGljYXRpb25hbmRTZWN1cmVFbWFpbENBLmNydDAj
BggrBgEFBQcwAYYXaHR0cDovL29jc3Auc2VjdGlnby5jb20wHgYDVR0RBBcwFYETZHdtdzJAaW5m
cmFkZWFkLm9yZzANBgkqhkiG9w0BAQsFAAOCAQEAyW6MUir5dm495teKqAQjDJwuFCi35h4xgnQv
Q/fzPXmtR9t54rpmI2TfyvcKgOXpqa7BGXNFfh1JsqexVkIqZP9uWB2J+uVMD+XZEs/KYNNX2PvI
lSPrzIB4Z2wyIGQpaPLlYflrrVFKv9CjT2zdqvy2maK7HKOQRt3BiJbVG5lRiwbbygldcALEV9Ch
WFfgSXvrWDZspnU3Gjw/rMHrGnqlHtlyebp3pf3fSS9kzQ1FVtVIDrL6eqhTwJxe+pXSMMqFiN0w
hpBtXdyDjzBtQTaZJ7zTT/vlehc/tDuqZwGHm/YJy883Ll+GP3NvOkgaRGWEuYWJJ6hFCkXYjyR9
IzGCBMcwggTDAgEBMIGsMIGWMQswCQYDVQQGEwJHQjEbMBkGA1UECBMSR3JlYXRlciBNYW5jaGVz
dGVyMRAwDgYDVQQHEwdTYWxmb3JkMRgwFgYDVQQKEw9TZWN0aWdvIExpbWl0ZWQxPjA8BgNVBAMT
NVNlY3RpZ28gUlNBIENsaWVudCBBdXRoZW50aWNhdGlvbiBhbmQgU2VjdXJlIEVtYWlsIENBAhEA
xr4ZlmdAxAMdKFES+jupfjANBglghkgBZQMEAgEFAKCCAeswGAYJKoZIhvcNAQkDMQsGCSqGSIb3
DQEHATAcBgkqhkiG9w0BCQUxDxcNMjQwMTI2MTExMzE4WjAvBgkqhkiG9w0BCQQxIgQg8imjZI+y
0o0n09c+2CqK4z64NypiE4BcPpHqJU87Vmkwgb0GCSsGAQQBgjcQBDGBrzCBrDCBljELMAkGA1UE
BhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEYMBYG
A1UEChMPU2VjdGlnbyBMaW1pdGVkMT4wPAYDVQQDEzVTZWN0aWdvIFJTQSBDbGllbnQgQXV0aGVu
dGljYXRpb24gYW5kIFNlY3VyZSBFbWFpbCBDQQIRAMa+GZZnQMQDHShREvo7qX4wgb8GCyqGSIb3
DQEJEAILMYGvoIGsMIGWMQswCQYDVQQGEwJHQjEbMBkGA1UECBMSR3JlYXRlciBNYW5jaGVzdGVy
MRAwDgYDVQQHEwdTYWxmb3JkMRgwFgYDVQQKEw9TZWN0aWdvIExpbWl0ZWQxPjA8BgNVBAMTNVNl
Y3RpZ28gUlNBIENsaWVudCBBdXRoZW50aWNhdGlvbiBhbmQgU2VjdXJlIEVtYWlsIENBAhEAxr4Z
lmdAxAMdKFES+jupfjANBgkqhkiG9w0BAQEFAASCAgCwy/yuIlGCEL+4E93a0tt9JpYl9u3exjs/
B+9/Qxsws157rkgB723rAoCaj/IyURAq+I1NcvEqZGkCfQh8O7+a+rpVtP/3Mmsha/R/zu9ESbOg
tMzB1ZT0s+uQQlMdoDMYctFZBJzDURLEZYrfFGyhaLxIoVm/YwfszYHARFOuJtw75zb7uHiCxmIv
AT9BWAMBq6DAPId0btALDnE/Y8BDyCVbTkZPkQzt/yq7rf2frIPt8q0P8cxt1tcwlIxC7U/F8pHY
HT48d5NdF57olwQPy0pLH6Q54evLlziM4lOH8lzMUW6QL1KUGOtl/y6Py9sWApHfDXwx9y/xpNHr
fOg3uSpqXihFbQv+WiEntTat4M+zV/t6PTMEu6JRcNZuE5zgGRh1EzgxvZihhBXngNz4uKsFRMKh
eyCzee9PmOCA5ezDbYzpcUruh13HyvXHv2CHc86S+hjJ0hInP3nrBEHnf9Tj1tiolEFTpWoWhQh8
QHiTE1xxOsYblVFgSoCUwSt5VonT10Y3v+EYkMYFwYhAqrMxc6hYBTHgsI051LtfuSjPsV3lgklg
E2U6dX0qDzqYtYH+66jqd0rPdLhliMa9bma4wcEZNm7WQ3/AUY55PstlBDrNWr2h552CCmTkiN73
1CM/lsCL2abvxEjeIVVzMYD/Rl9kDItqc1m97L0eEgAAAAAAAA==


--=-/fqV+mqgpy/lBp/ksIzL--


From xen-devel-bounces@lists.xenproject.org Fri Jan 26 11:21:08 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 26 Jan 2024 11:21:08 +0000
Received: from list by lists.xenproject.org with outflank-mailman.671950.1045510 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTKGc-00067H-Dl; Fri, 26 Jan 2024 11:21:02 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 671950.1045510; Fri, 26 Jan 2024 11:21:02 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTKGc-00067A-9u; Fri, 26 Jan 2024 11:21:02 +0000
Received: by outflank-mailman (input) for mailman id 671950;
 Fri, 26 Jan 2024 11:21:00 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=UtOA=JE=redhat.com=thuth@srs-se1.protection.inumbo.net>)
 id 1rTKGa-000674-Ld
 for xen-devel@lists.xenproject.org; Fri, 26 Jan 2024 11:21:00 +0000
Received: from us-smtp-delivery-124.mimecast.com
 (us-smtp-delivery-124.mimecast.com [170.10.133.124])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id f9931854-bc3c-11ee-98f5-efadbce2ee36;
 Fri, 26 Jan 2024 12:20:57 +0100 (CET)
Received: from mail-qv1-f71.google.com (mail-qv1-f71.google.com
 [209.85.219.71]) by relay.mimecast.com with ESMTP with STARTTLS
 (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id
 us-mta-362-iB7BsvkQPVKw3TIEQj0KKQ-1; Fri, 26 Jan 2024 06:20:55 -0500
Received: by mail-qv1-f71.google.com with SMTP id
 6a1803df08f44-6854ad24a0cso3652596d6.3
 for <xen-devel@lists.xenproject.org>; Fri, 26 Jan 2024 03:20:55 -0800 (PST)
Received: from [192.168.0.9] (ip-109-43-176-119.web.vodafone.de.
 [109.43.176.119]) by smtp.gmail.com with ESMTPSA id
 fc16-20020ad44f30000000b006845032c973sm429852qvb.124.2024.01.26.03.20.39
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Fri, 26 Jan 2024 03:20:54 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: f9931854-bc3c-11ee-98f5-efadbce2ee36
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
	s=mimecast20190719; t=1706268057;
	h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
	 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references:autocrypt:autocrypt;
	bh=fJ5FeqP2XKfj6svBB0cNkZlZTEhA0qeNru0y2SwAZq8=;
	b=NRvyy1KfWkSdmrdVla5F7OMvtwNfFnVsa3u2uI4jGyoFgc1q6sANbPbrh94m94KjrNOWja
	1lbl+RUCSVhfbZTdkeV7g2RqyHVtqufwO6BlN7i3E2fkFHckg5ggku42dDIOTg/SvJTw1I
	JLW22FRf9QeI9/bAlxx/ddrWQWUnWOQ=
X-MC-Unique: iB7BsvkQPVKw3TIEQj0KKQ-1
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706268055; x=1706872855;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=fJ5FeqP2XKfj6svBB0cNkZlZTEhA0qeNru0y2SwAZq8=;
        b=eBPPBLKQDtM4cY/vxt8P+TsQWzsR2K77sewXfOQnAysCRhf/tpwvhlFWPC2PQjrhU8
         aQW5dIe/fGzcXSW4NkESwYim/BJhj0Pth8fKaK3OpL+DbBLLETkheKkHpdyALSPYAm80
         m1Xccp6fyAUQnCfuPZnI+9qXzmwwOKerMh/VNfNKb4xCU2682ls/o4DARHkgS6i92V0b
         BIgdvTV8tUqtmvP+wXJly2BP2p6r1iR/iQKfVEG4Yf4+7N+L3gL7vfZuxVU6qoWclp7q
         FFyHLWs1Nkw9MAMRPncz9BJpKu0XACPEEI8HoRWmbUkvrbSSjW51VtQmozuS7Pqm0Chx
         cjHA==
X-Gm-Message-State: AOJu0Yy9C0yDY9Ssu+9irNjvLSj1gfH8wrqI6jtzA4lJmyy0k4oMeUNV
	gA/Oey7hAIfE1T0nlyD1tzQtSyaMTAcAWx6guyL5AEBbQOZzhDHNQ9s6gh1Sh6VksECnqxeyPAc
	F/SV1U7FUy8z0wOEXwYyr9Xh1/Js9+h3CZ4clZfdsgRL1HUMgJlYtUP/qxiC1WNL9
X-Received: by 2002:ad4:5f89:0:b0:686:9e87:a0d4 with SMTP id jp9-20020ad45f89000000b006869e87a0d4mr1477600qvb.23.1706268055200;
        Fri, 26 Jan 2024 03:20:55 -0800 (PST)
X-Google-Smtp-Source: AGHT+IHppLBe/1tsc9YBAOM4Adh/A4rcqZv2YHMC7gUpJu+11IJqxvYgKYiel6IUtmTgJOPU5q1xig==
X-Received: by 2002:ad4:5f89:0:b0:686:9e87:a0d4 with SMTP id jp9-20020ad45f89000000b006869e87a0d4mr1477571qvb.23.1706268054851;
        Fri, 26 Jan 2024 03:20:54 -0800 (PST)
Message-ID: <da5f845f-dfee-48de-9fc2-af27b83a615b@redhat.com>
Date: Fri, 26 Jan 2024 12:20:37 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 05/46] hw/i386/pc: use qemu_get_nic_info() and
 pci_init_nic_devices()
To: David Woodhouse <dwmw2@infradead.org>, qemu-devel@nongnu.org
Cc: Richard Henderson <richard.henderson@linaro.org>,
 Beniamino Galvani <b.galvani@gmail.com>,
 Peter Maydell <peter.maydell@linaro.org>,
 Strahinja Jankovic <strahinja.p.jankovic@gmail.com>,
 Niek Linnenbank <nieklinnenbank@gmail.com>, =?UTF-8?Q?C=C3=A9dric_Le_Goater?=
 <clg@kaod.org>, Andrew Jeffery <andrew@codeconstruct.com.au>,
 Joel Stanley <joel@jms.id.au>, Igor Mitsyanko <i.mitsyanko@gmail.com>,
 Jean-Christophe Dubois <jcd@tribudubois.net>,
 Andrey Smirnov <andrew.smirnov@gmail.com>,
 =?UTF-8?Q?Philippe_Mathieu-Daud=C3=A9?= <philmd@linaro.org>,
 Rob Herring <robh@kernel.org>, Subbaraya Sundeep <sundeep.lkml@gmail.com>,
 Jan Kiszka <jan.kiszka@web.de>, Tyrone Ting <kfting@nuvoton.com>,
 Hao Wu <wuhaotsh@google.com>, Radoslaw Biernacki <rad@semihalf.com>,
 Leif Lindholm <quic_llindhol@quicinc.com>,
 Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org>,
 "Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
 Alistair Francis <alistair@alistair23.me>, Helge Deller <deller@gmx.de>,
 Paolo Bonzini <pbonzini@redhat.com>, Eduardo Habkost <eduardo@habkost.net>,
 "Michael S. Tsirkin" <mst@redhat.com>,
 Marcel Apfelbaum <marcel.apfelbaum@gmail.com>, Song Gao
 <gaosong@loongson.cn>, Thomas Huth <huth@tuxfamily.org>,
 Laurent Vivier <laurent@vivier.eu>, Huacai Chen <chenhuacai@kernel.org>,
 Jiaxun Yang <jiaxun.yang@flygoat.com>,
 =?UTF-8?Q?Herv=C3=A9_Poussineau?= <hpoussin@reactos.org>,
 Aleksandar Rikalo <aleksandar.rikalo@syrmia.com>,
 Aurelien Jarno <aurelien@aurel32.net>, Jason Wang <jasowang@redhat.com>,
 Jia Liu <proljc@gmail.com>, Stafford Horne <shorne@gmail.com>,
 Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>,
 Nicholas Piggin <npiggin@gmail.com>,
 Daniel Henrique Barboza <danielhb413@gmail.com>,
 David Gibson <david@gibson.dropbear.id.au>,
 Harsh Prateek Bora <harshpb@linux.ibm.com>, Bin Meng
 <bin.meng@windriver.com>, Palmer Dabbelt <palmer@dabbelt.com>,
 Weiwei Li <liwei1518@gmail.com>, Liu Zhiwei <zhiwei_liu@linux.alibaba.com>,
 Halil Pasic <pasic@linux.ibm.com>,
 Christian Borntraeger <borntraeger@linux.ibm.com>,
 Eric Farman <farman@linux.ibm.com>, David Hildenbrand <david@redhat.com>,
 Ilya Leoshkevich <iii@linux.ibm.com>,
 Yoshinori Sato <ysato@users.sourceforge.jp>,
 Magnus Damm <magnus.damm@gmail.com>, Artyom Tarasenko <atar4qemu@gmail.com>,
 Stefano Stabellini <sstabellini@kernel.org>,
 Anthony Perard <anthony.perard@citrix.com>, Paul Durrant <paul@xen.org>,
 Max Filippov <jcmvbkbc@gmail.com>, qemu-arm@nongnu.org, qemu-ppc@nongnu.org,
 qemu-riscv@nongnu.org, qemu-s390x@nongnu.org, xen-devel@lists.xenproject.org
References: <20240108204909.564514-1-dwmw2@infradead.org>
 <20240108204909.564514-6-dwmw2@infradead.org>
 <d6b0fd22-92ef-4873-a19a-e7752bfddd2d@redhat.com>
 <b618c5e3163a3407c413464edd5f638f1c8563fa.camel@infradead.org>
From: Thomas Huth <thuth@redhat.com>
Autocrypt: addr=thuth@redhat.com; keydata=
 xsFNBFH7eUwBEACzyOXKU+5Pcs6wNpKzrlJwzRl3VGZt95VCdb+FgoU9g11m7FWcOafrVRwU
 yYkTm9+7zBUc0sW5AuPGR/dp3pSLX/yFWsA/UB4nJsHqgDvDU7BImSeiTrnpMOTXb7Arw2a2
 4CflIyFqjCpfDM4MuTmzTjXq4Uov1giGE9X6viNo1pxyEpd7PanlKNnf4PqEQp06X4IgUacW
 tSGj6Gcns1bCuHV8OPWLkf4hkRnu8hdL6i60Yxz4E6TqlrpxsfYwLXgEeswPHOA6Mn4Cso9O
 0lewVYfFfsmokfAVMKWzOl1Sr0KGI5T9CpmRfAiSHpthhHWnECcJFwl72NTi6kUcUzG4se81
 O6n9d/kTj7pzTmBdfwuOZ0YUSqcqs0W+l1NcASSYZQaDoD3/SLk+nqVeCBB4OnYOGhgmIHNW
 0CwMRO/GK+20alxzk//V9GmIM2ACElbfF8+Uug3pqiHkVnKqM7W9/S1NH2qmxB6zMiJUHlTH
 gnVeZX0dgH27mzstcF786uPcdEqS0KJuxh2kk5IvUSL3Qn3ZgmgdxBMyCPciD/1cb7/Ahazr
 3ThHQXSHXkH/aDXdfLsKVuwDzHLVSkdSnZdt5HHh75/NFHxwaTlydgfHmFFwodK8y/TjyiGZ
 zg2Kje38xnz8zKn9iesFBCcONXS7txENTzX0z80WKBhK+XSFJwARAQABzR5UaG9tYXMgSHV0
 aCA8dGh1dGhAcmVkaGF0LmNvbT7CwXgEEwECACIFAlVgX6oCGwMGCwkIBwMCBhUIAgkKCwQW
 AgMBAh4BAheAAAoJEC7Z13T+cC21EbIP/ii9cvT2HHGbFRl8HqGT6+7Wkb+XLMqJBMAIGiQK
 QIP3xk1HPTsLfVG0ao4hy/oYkGNOP8+ubLnZen6Yq3zAFiMhQ44lvgigDYJo3Ve59gfe99KX
 EbtB+X95ODARkq0McR6OAsPNJ7gpEUzfkQUUJTXRDQXfG/FX303Gvk+YU0spm2tsIKPl6AmV
 1CegDljzjycyfJbk418MQmMu2T82kjrkEofUO2a24ed3VGC0/Uz//XCR2ZTo+vBoBUQl41BD
 eFFtoCSrzo3yPFS+w5fkH9NT8ChdpSlbNS32NhYQhJtr9zjWyFRf0Zk+T/1P7ECn6gTEkp5k
 ofFIA4MFBc/fXbaDRtBmPB0N9pqTFApIUI4vuFPPO0JDrII9dLwZ6lO9EKiwuVlvr1wwzsgq
 zJTPBU3qHaUO4d/8G+gD7AL/6T4zi8Jo/GmjBsnYaTzbm94lf0CjXjsOX3seMhaE6WAZOQQG
 tZHAO1kAPWpaxne+wtgMKthyPLNwelLf+xzGvrIKvLX6QuLoWMnWldu22z2ICVnLQChlR9d6
 WW8QFEpo/FK7omuS8KvvopFcOOdlbFMM8Y/8vBgVMSsK6fsYUhruny/PahprPbYGiNIhKqz7
 UvgyZVl4pBFjTaz/SbimTk210vIlkDyy1WuS8Zsn0htv4+jQPgo9rqFE4mipJjy/iboDzsFN
 BFH7eUwBEAC2nzfUeeI8dv0C4qrfCPze6NkryUflEut9WwHhfXCLjtvCjnoGqFelH/PE9NF4
 4VPSCdvD1SSmFVzu6T9qWdcwMSaC+e7G/z0/AhBfqTeosAF5XvKQlAb9ZPkdDr7YN0a1XDfa
 +NgA+JZB4ROyBZFFAwNHT+HCnyzy0v9Sh3BgJJwfpXHH2l3LfncvV8rgFv0bvdr70U+On2XH
 5bApOyW1WpIG5KPJlDdzcQTyptOJ1dnEHfwnABEfzI3dNf63rlxsGouX/NFRRRNqkdClQR3K
 gCwciaXfZ7ir7fF0u1N2UuLsWA8Ei1JrNypk+MRxhbvdQC4tyZCZ8mVDk+QOK6pyK2f4rMf/
 WmqxNTtAVmNuZIwnJdjRMMSs4W4w6N/bRvpqtykSqx7VXcgqtv6eqoDZrNuhGbekQA0sAnCJ
 VPArerAZGArm63o39me/bRUQeQVSxEBmg66yshF9HkcUPGVeC4B0TPwz+HFcVhheo6hoJjLq
 knFOPLRj+0h+ZL+D0GenyqD3CyuyeTT5dGcNU9qT74bdSr20k/CklvI7S9yoQje8BeQAHtdV
 cvO8XCLrpGuw9SgOS7OP5oI26a0548M4KldAY+kqX6XVphEw3/6U1KTf7WxW5zYLTtadjISB
 X9xsRWSU+Yqs3C7oN5TIPSoj9tXMoxZkCIHWvnqGwZ7JhwARAQABwsFfBBgBAgAJBQJR+3lM
 AhsMAAoJEC7Z13T+cC21hPAQAIsBL9MdGpdEpvXs9CYrBkd6tS9mbaSWj6XBDfA1AEdQkBOn
 ZH1Qt7HJesk+qNSnLv6+jP4VwqK5AFMrKJ6IjE7jqgzGxtcZnvSjeDGPF1h2CKZQPpTw890k
 fy18AvgFHkVk2Oylyexw3aOBsXg6ukN44vIFqPoc+YSU0+0QIdYJp/XFsgWxnFIMYwDpxSHS
 5fdDxUjsk3UBHZx+IhFjs2siVZi5wnHIqM7eK9abr2cK2weInTBwXwqVWjsXZ4tq5+jQrwDK
 cvxIcwXdUTLGxc4/Z/VRH1PZSvfQxdxMGmNTGaXVNfdFZjm4fz0mz+OUi6AHC4CZpwnsliGV
 ODqwX8Y1zic9viSTbKS01ZNp175POyWViUk9qisPZB7ypfSIVSEULrL347qY/hm9ahhqmn17
 Ng255syASv3ehvX7iwWDfzXbA0/TVaqwa1YIkec+/8miicV0zMP9siRcYQkyTqSzaTFBBmqD
 oiT+z+/E59qj/EKfyce3sbC9XLjXv3mHMrq1tKX4G7IJGnS989E/fg6crv6NHae9Ckm7+lSs
 IQu4bBP2GxiRQ+NV3iV/KU3ebMRzqIC//DCOxzQNFNJAKldPe/bKZMCxEqtVoRkuJtNdp/5a
 yXFZ6TfE1hGKrDBYAm4vrnZ4CXFSBDllL59cFFOJCkn4Xboj/aVxxJxF30bn
In-Reply-To: <b618c5e3163a3407c413464edd5f638f1c8563fa.camel@infradead.org>
X-Mimecast-Spam-Score: 0
X-Mimecast-Originator: redhat.com
Content-Language: en-US
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit

On 26/01/2024 12.13, David Woodhouse wrote:
> On Fri, 2024-01-26 at 11:43 +0100, Thomas Huth wrote:
>> On 08/01/2024 21.26, David Woodhouse wrote:
>>> From: David Woodhouse <dwmw@amazon.co.uk>
>>>
>>> Eliminate direct access to nd_table[] and nb_nics by processing the the
>>> Xen and ISA NICs first and then calling pci_init_nic_devices() for the
>>> rest.
>>>
>>> Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
>>> Reviewed-by: Paul Durrant <paul@xen.org>
>>> ---
>>>    hw/i386/pc.c                | 26 ++++++++++++++++----------
>>>    include/hw/net/ne2000-isa.h |  2 --
>>>    2 files changed, 16 insertions(+), 12 deletions(-)
>>>
>>> diff --git a/hw/i386/pc.c b/hw/i386/pc.c
>>> index 496498df3a..d80c536d88 100644
>>> --- a/hw/i386/pc.c
>>> +++ b/hw/i386/pc.c
>>> @@ -658,8 +658,11 @@ static void pc_init_ne2k_isa(ISABus *bus, NICInfo *nd)
>>>    {
>>>        static int nb_ne2k = 0;
>>>    
>>> -    if (nb_ne2k == NE2000_NB_MAX)
>>> +    if (nb_ne2k == NE2000_NB_MAX) {
>>> +        error_setg(&error_fatal,
>>> +                   "maximum number of ISA NE2000 devices exceeded");
>>>            return;
>>> +    }
>>
>> error_setg(&error_fatal, ...) quits QEMU, so the "return;" does not make
>> much sense anymore.
>> Now, according to include/qapi/error.h :
>>
>>    * Please don't error_setg(&error_fatal, ...), use error_report() and
>>    * exit(), because that's more obvious.
>>
>> So I'd suggest to do that instead.
> 
> It's going slightly in the opposite direction to what's requested in
> https://lore.kernel.org/qemu-devel/34e2c0c6-4e04-486a-8e1f-4afdc461a5d4@linaro.org/
> 
> I was thinking that a future patch would let the &error_fatal be an
> Error** passed in by the caller, and not actually hard-coded to be
> fatal at all.
> 
> But sure, unless Philippe objects I'm happy to do it as you show above.

Now that you mention it, I'd also prefer having an Error** parameter to the 
function instead, that's certainly cleaner. So if you don't mind, please 
follow Philippe's suggestion instead!

  Thanks,
   Thomas



From xen-devel-bounces@lists.xenproject.org Fri Jan 26 11:25:58 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 26 Jan 2024 11:25:58 +0000
Received: from list by lists.xenproject.org with outflank-mailman.671956.1045520 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTKLL-0006hF-VA; Fri, 26 Jan 2024 11:25:55 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 671956.1045520; Fri, 26 Jan 2024 11:25:55 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTKLL-0006h8-S9; Fri, 26 Jan 2024 11:25:55 +0000
Received: by outflank-mailman (input) for mailman id 671956;
 Fri, 26 Jan 2024 11:25:54 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=bPDA=JE=casper.srs.infradead.org=BATV+7caeb094913322f6f00d+7460+infradead.org+dwmw2@srs-se1.protection.inumbo.net>)
 id 1rTKLK-0006h2-Ec
 for xen-devel@lists.xenproject.org; Fri, 26 Jan 2024 11:25:54 +0000
Received: from casper.infradead.org (casper.infradead.org
 [2001:8b0:10b:1236::1])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id a8db8bab-bc3d-11ee-98f5-efadbce2ee36;
 Fri, 26 Jan 2024 12:25:50 +0100 (CET)
Received: from [2001:8b0:10b:5:66db:af88:1954:1e3]
 (helo=u3832b3a9db3152.ant.amazon.com)
 by casper.infradead.org with esmtpsa (Exim 4.97.1 #2 (Red Hat Linux))
 id 1rTKKn-0000000DQl0-2of8; Fri, 26 Jan 2024 11:25:23 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: a8db8bab-bc3d-11ee-98f5-efadbce2ee36
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=infradead.org; s=casper.20170209; h=MIME-Version:Content-Type:References:
	In-Reply-To:Date:Cc:To:From:Subject:Message-ID:Sender:Reply-To:
	Content-Transfer-Encoding:Content-ID:Content-Description;
	bh=KTw/8zDf1X8KjYIr+FnbXNhPNeTYeslDSj+8vPIMptA=; b=OaHpoyL7w+9VJ9SCbKEaap7VDU
	45o+2XSuAXAFJYHjccGCadOZNStFzlNSExLajpMCvWoubMol2LrAqkrDovdC8nyUhB0JPC+iy8Y4T
	AI4nth31iPqwXg2DEfrCMW3hSvZlJpq2OjeQdmWVNwg/48ryFMXb5InMEn5rp39xxzzo1Hu52rHt/
	843OscrqWQQ/Is6ZkPlY8MbB2/ak92GvSrul5zKL6iatUWYLMdxRZuDNhsYVYnVmolzCvK46xHulu
	2c3P29LTyB72yHSX/iiTMLyo9tZkDBW9D5KPQWVnUUUf1x8TfNlzGcsha2WyBrbuiOPOEBAW+r/Ks
	8f5HIArg==;
Message-ID: <983ce258a214a0cbe6aeaabab01daed47a2e1066.camel@infradead.org>
Subject: Re: [PATCH v3 05/46] hw/i386/pc: use qemu_get_nic_info() and
 pci_init_nic_devices()
From: David Woodhouse <dwmw2@infradead.org>
To: Thomas Huth <thuth@redhat.com>, qemu-devel@nongnu.org
Cc: Richard Henderson <richard.henderson@linaro.org>, Beniamino Galvani
 <b.galvani@gmail.com>, Peter Maydell <peter.maydell@linaro.org>, Strahinja
 Jankovic <strahinja.p.jankovic@gmail.com>, Niek Linnenbank
 <nieklinnenbank@gmail.com>,  =?ISO-8859-1?Q?C=E9dric?= Le Goater
 <clg@kaod.org>, Andrew Jeffery <andrew@codeconstruct.com.au>, Joel Stanley
 <joel@jms.id.au>, Igor Mitsyanko <i.mitsyanko@gmail.com>, Jean-Christophe
 Dubois <jcd@tribudubois.net>, Andrey Smirnov <andrew.smirnov@gmail.com>,
 Philippe =?ISO-8859-1?Q?Mathieu-Daud=E9?= <philmd@linaro.org>, Rob Herring
 <robh@kernel.org>, Subbaraya Sundeep <sundeep.lkml@gmail.com>, Jan Kiszka
 <jan.kiszka@web.de>, Tyrone Ting <kfting@nuvoton.com>, Hao Wu
 <wuhaotsh@google.com>, Radoslaw Biernacki <rad@semihalf.com>, Leif Lindholm
 <quic_llindhol@quicinc.com>, Marcin Juszkiewicz
 <marcin.juszkiewicz@linaro.org>, "Edgar E. Iglesias"
 <edgar.iglesias@gmail.com>, Alistair Francis <alistair@alistair23.me>,
 Helge Deller <deller@gmx.de>, Paolo Bonzini <pbonzini@redhat.com>,  Eduardo
 Habkost <eduardo@habkost.net>, "Michael S. Tsirkin" <mst@redhat.com>,
 Marcel Apfelbaum <marcel.apfelbaum@gmail.com>, Song Gao
 <gaosong@loongson.cn>, Thomas Huth <huth@tuxfamily.org>, Laurent Vivier
 <laurent@vivier.eu>, Huacai Chen <chenhuacai@kernel.org>, Jiaxun Yang
 <jiaxun.yang@flygoat.com>,  =?ISO-8859-1?Q?Herv=E9?= Poussineau
 <hpoussin@reactos.org>, Aleksandar Rikalo <aleksandar.rikalo@syrmia.com>, 
 Aurelien Jarno <aurelien@aurel32.net>, Jason Wang <jasowang@redhat.com>,
 Jia Liu <proljc@gmail.com>, Stafford Horne <shorne@gmail.com>, Mark
 Cave-Ayland <mark.cave-ayland@ilande.co.uk>, Nicholas Piggin
 <npiggin@gmail.com>, Daniel Henrique Barboza <danielhb413@gmail.com>, David
 Gibson <david@gibson.dropbear.id.au>, Harsh Prateek Bora
 <harshpb@linux.ibm.com>, Bin Meng <bin.meng@windriver.com>, Palmer Dabbelt
 <palmer@dabbelt.com>, Weiwei Li <liwei1518@gmail.com>, Liu Zhiwei
 <zhiwei_liu@linux.alibaba.com>, Halil Pasic <pasic@linux.ibm.com>,
 Christian Borntraeger <borntraeger@linux.ibm.com>,  Eric Farman
 <farman@linux.ibm.com>, David Hildenbrand <david@redhat.com>, Ilya
 Leoshkevich <iii@linux.ibm.com>, Yoshinori Sato
 <ysato@users.sourceforge.jp>, Magnus Damm <magnus.damm@gmail.com>, Artyom
 Tarasenko <atar4qemu@gmail.com>, Stefano Stabellini
 <sstabellini@kernel.org>, Anthony Perard <anthony.perard@citrix.com>, Paul
 Durrant <paul@xen.org>, Max Filippov <jcmvbkbc@gmail.com>,
 qemu-arm@nongnu.org,  qemu-ppc@nongnu.org, qemu-riscv@nongnu.org,
 qemu-s390x@nongnu.org,  xen-devel@lists.xenproject.org
Date: Fri, 26 Jan 2024 11:25:19 +0000
In-Reply-To: <da5f845f-dfee-48de-9fc2-af27b83a615b@redhat.com>
References: <20240108204909.564514-1-dwmw2@infradead.org>
	 <20240108204909.564514-6-dwmw2@infradead.org>
	 <d6b0fd22-92ef-4873-a19a-e7752bfddd2d@redhat.com>
	 <b618c5e3163a3407c413464edd5f638f1c8563fa.camel@infradead.org>
	 <da5f845f-dfee-48de-9fc2-af27b83a615b@redhat.com>
Content-Type: multipart/signed; micalg="sha-256"; protocol="application/pkcs7-signature";
	boundary="=-tAhVskJ9pKOcssdJnf27"
User-Agent: Evolution 3.44.4-0ubuntu2 
MIME-Version: 1.0
X-SRS-Rewrite: SMTP reverse-path rewritten from <dwmw2@infradead.org> by casper.infradead.org. See http://www.infradead.org/rpr.html


--=-tAhVskJ9pKOcssdJnf27
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

On Fri, 2024-01-26 at 12:20 +0100, Thomas Huth wrote:
> On 26/01/2024 12.13, David Woodhouse wrote:
> > On Fri, 2024-01-26 at 11:43 +0100, Thomas Huth wrote:
> > > On 08/01/2024 21.26, David Woodhouse wrote:
> > > > From: David Woodhouse <dwmw@amazon.co.uk>
> > > >=20
> > > > Eliminate direct access to nd_table[] and nb_nics by processing the=
 the
> > > > Xen and ISA NICs first and then calling pci_init_nic_devices() for =
the
> > > > rest.
> > > >=20
> > > > Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
> > > > Reviewed-by: Paul Durrant <paul@xen.org>
> > > > ---
> > > > =C2=A0=C2=A0 hw/i386/pc.c=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 | 26 ++++++++++++++++-----=
-----
> > > > =C2=A0=C2=A0 include/hw/net/ne2000-isa.h |=C2=A0 2 --
> > > > =C2=A0=C2=A0 2 files changed, 16 insertions(+), 12 deletions(-)
> > > >=20
> > > > diff --git a/hw/i386/pc.c b/hw/i386/pc.c
> > > > index 496498df3a..d80c536d88 100644
> > > > --- a/hw/i386/pc.c
> > > > +++ b/hw/i386/pc.c
> > > > @@ -658,8 +658,11 @@ static void pc_init_ne2k_isa(ISABus *bus, NICI=
nfo *nd)
> > > > =C2=A0=C2=A0 {
> > > > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 static int nb_ne2k =3D 0;
> > > > =C2=A0=C2=A0=20
> > > > -=C2=A0=C2=A0=C2=A0 if (nb_ne2k =3D=3D NE2000_NB_MAX)
> > > > +=C2=A0=C2=A0=C2=A0 if (nb_ne2k =3D=3D NE2000_NB_MAX) {
> > > > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 error_setg(&error_fatal=
,
> > > > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "maximum number of ISA NE2000 de=
vices exceeded");
> > > > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 return=
;
> > > > +=C2=A0=C2=A0=C2=A0 }
> > >=20
> > > error_setg(&error_fatal, ...) quits QEMU, so the "return;" does not m=
ake
> > > much sense anymore.
> > > Now, according to include/qapi/error.h :
> > >=20
> > > =C2=A0=C2=A0 * Please don't error_setg(&error_fatal, ...), use error_=
report() and
> > > =C2=A0=C2=A0 * exit(), because that's more obvious.
> > >=20
> > > So I'd suggest to do that instead.
> >=20
> > It's going slightly in the opposite direction to what's requested in
> > https://lore.kernel.org/qemu-devel/34e2c0c6-4e04-486a-8e1f-4afdc461a5d4=
@linaro.org/
> >=20
> > I was thinking that a future patch would let the &error_fatal be an
> > Error** passed in by the caller, and not actually hard-coded to be
> > fatal at all.
> >=20
> > But sure, unless Philippe objects I'm happy to do it as you show above.
>=20
> Now that you mention it, I'd also prefer having an Error** parameter to t=
he=20
> function instead, that's certainly cleaner. So if you don't mind, please=
=20
> follow Philippe's suggestion instead!

Right. There's a whole bunch of functions to untangle, that take an
Error** but don't return success/failure independently as they should.
Or don't even take the Error**.

Rather than trying to fix that as part of this series, this was my
compromise =E2=80=94 making it easy to switch that explicit &error_fatal ou=
t
for a function parameter, but not trying to shave that part of the yak
myself just yet.

--=-tAhVskJ9pKOcssdJnf27
Content-Type: application/pkcs7-signature; name="smime.p7s"
Content-Disposition: attachment; filename="smime.p7s"
Content-Transfer-Encoding: base64

MIAGCSqGSIb3DQEHAqCAMIACAQExDzANBglghkgBZQMEAgEFADCABgkqhkiG9w0BBwEAAKCCEkQw
ggYQMIID+KADAgECAhBNlCwQ1DvglAnFgS06KwZPMA0GCSqGSIb3DQEBDAUAMIGIMQswCQYDVQQG
EwJVUzETMBEGA1UECBMKTmV3IEplcnNleTEUMBIGA1UEBxMLSmVyc2V5IENpdHkxHjAcBgNVBAoT
FVRoZSBVU0VSVFJVU1QgTmV0d29yazEuMCwGA1UEAxMlVVNFUlRydXN0IFJTQSBDZXJ0aWZpY2F0
aW9uIEF1dGhvcml0eTAeFw0xODExMDIwMDAwMDBaFw0zMDEyMzEyMzU5NTlaMIGWMQswCQYDVQQG
EwJHQjEbMBkGA1UECBMSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHEwdTYWxmb3JkMRgwFgYD
VQQKEw9TZWN0aWdvIExpbWl0ZWQxPjA8BgNVBAMTNVNlY3RpZ28gUlNBIENsaWVudCBBdXRoZW50
aWNhdGlvbiBhbmQgU2VjdXJlIEVtYWlsIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
AQEAyjztlApB/975Rrno1jvm2pK/KxBOqhq8gr2+JhwpKirSzZxQgT9tlC7zl6hn1fXjSo5MqXUf
ItMltrMaXqcESJuK8dtK56NCSrq4iDKaKq9NxOXFmqXX2zN8HHGjQ2b2Xv0v1L5Nk1MQPKA19xeW
QcpGEGFUUd0kN+oHox+L9aV1rjfNiCj3bJk6kJaOPabPi2503nn/ITX5e8WfPnGw4VuZ79Khj1YB
rf24k5Ee1sLTHsLtpiK9OjG4iQRBdq6Z/TlVx/hGAez5h36bBJMxqdHLpdwIUkTqT8se3ed0PewD
ch/8kHPo5fZl5u1B0ecpq/sDN/5sCG52Ds+QU5O5EwIDAQABo4IBZDCCAWAwHwYDVR0jBBgwFoAU
U3m/WqorSs9UgOHYm8Cd8rIDZsswHQYDVR0OBBYEFAnA8vwL2pTbX/4r36iZQs/J4K0AMA4GA1Ud
DwEB/wQEAwIBhjASBgNVHRMBAf8ECDAGAQH/AgEAMB0GA1UdJQQWMBQGCCsGAQUFBwMCBggrBgEF
BQcDBDARBgNVHSAECjAIMAYGBFUdIAAwUAYDVR0fBEkwRzBFoEOgQYY/aHR0cDovL2NybC51c2Vy
dHJ1c3QuY29tL1VTRVJUcnVzdFJTQUNlcnRpZmljYXRpb25BdXRob3JpdHkuY3JsMHYGCCsGAQUF
BwEBBGowaDA/BggrBgEFBQcwAoYzaHR0cDovL2NydC51c2VydHJ1c3QuY29tL1VTRVJUcnVzdFJT
QUFkZFRydXN0Q0EuY3J0MCUGCCsGAQUFBzABhhlodHRwOi8vb2NzcC51c2VydHJ1c3QuY29tMA0G
CSqGSIb3DQEBDAUAA4ICAQBBRHUAqznCFfXejpVtMnFojADdF9d6HBA4kMjjsb0XMZHztuOCtKF+
xswhh2GqkW5JQrM8zVlU+A2VP72Ky2nlRA1GwmIPgou74TZ/XTarHG8zdMSgaDrkVYzz1g3nIVO9
IHk96VwsacIvBF8JfqIs+8aWH2PfSUrNxP6Ys7U0sZYx4rXD6+cqFq/ZW5BUfClN/rhk2ddQXyn7
kkmka2RQb9d90nmNHdgKrwfQ49mQ2hWQNDkJJIXwKjYA6VUR/fZUFeCUisdDe/0ABLTI+jheXUV1
eoYV7lNwNBKpeHdNuO6Aacb533JlfeUHxvBz9OfYWUiXu09sMAviM11Q0DuMZ5760CdO2VnpsXP4
KxaYIhvqPqUMWqRdWyn7crItNkZeroXaecG03i3mM7dkiPaCkgocBg0EBYsbZDZ8bsG3a08LwEsL
1Ygz3SBsyECa0waq4hOf/Z85F2w2ZpXfP+w8q4ifwO90SGZZV+HR/Jh6rEaVPDRF/CEGVqR1hiuQ
OZ1YL5ezMTX0ZSLwrymUE0pwi/KDaiYB15uswgeIAcA6JzPFf9pLkAFFWs1QNyN++niFhsM47qod
x/PL+5jR87myx5uYdBEQkkDc+lKB1Wct6ucXqm2EmsaQ0M95QjTmy+rDWjkDYdw3Ms6mSWE3Bn7i
5ZgtwCLXgAIe5W8mybM2JzCCBhQwggT8oAMCAQICEQDGvhmWZ0DEAx0oURL6O6l+MA0GCSqGSIb3
DQEBCwUAMIGWMQswCQYDVQQGEwJHQjEbMBkGA1UECBMSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYD
VQQHEwdTYWxmb3JkMRgwFgYDVQQKEw9TZWN0aWdvIExpbWl0ZWQxPjA8BgNVBAMTNVNlY3RpZ28g
UlNBIENsaWVudCBBdXRoZW50aWNhdGlvbiBhbmQgU2VjdXJlIEVtYWlsIENBMB4XDTIyMDEwNzAw
MDAwMFoXDTI1MDEwNjIzNTk1OVowJDEiMCAGCSqGSIb3DQEJARYTZHdtdzJAaW5mcmFkZWFkLm9y
ZzCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBALQ3GpC2bomUqk+91wLYBzDMcCj5C9m6
oZaHwvmIdXftOgTbCJXADo6G9T7BBAebw2JV38EINgKpy/ZHh7htyAkWYVoFsFPrwHounto8xTsy
SSePMiPlmIdQ10BcVSXMUJ3Juu16GlWOnAMJY2oYfEzmE7uT9YgcBqKCo65pTFmOnR/VVbjJk4K2
xE34GC2nAdUQkPFuyaFisicc6HRMOYXPuF0DuwITEKnjxgNjP+qDrh0db7PAjO1D4d5ftfrsf+kd
RR4gKVGSk8Tz2WwvtLAroJM4nXjNPIBJNT4w/FWWc/5qPHJy2U+eITZ5LLE5s45mX2oPFknWqxBo
bQZ8a9dsZ3dSPZBvE9ZrmtFLrVrN4eo1jsXgAp1+p7bkfqd3BgBEmfsYWlBXO8rVXfvPgLs32VdV
NZxb/CDWPqBsiYv0Hv3HPsz07j5b+/cVoWqyHDKzkaVbxfq/7auNVRmPB3v5SWEsH8xi4Bez2V9U
KxfYCnqsjp8RaC2/khxKt0A552Eaxnz/4ly/2C7wkwTQnBmdlFYhAflWKQ03Ufiu8t3iBE3VJbc2
5oMrglj7TRZrmKq3CkbFnX0fyulB+kHimrt6PIWn7kgyl9aelIl6vtbhMA+l0nfrsORMa4kobqQ5
C5rveVgmcIad67EDa+UqEKy/GltUwlSh6xy+TrK1tzDvAgMBAAGjggHMMIIByDAfBgNVHSMEGDAW
gBQJwPL8C9qU21/+K9+omULPyeCtADAdBgNVHQ4EFgQUzMeDMcimo0oz8o1R1Nver3ZVpSkwDgYD
VR0PAQH/BAQDAgWgMAwGA1UdEwEB/wQCMAAwHQYDVR0lBBYwFAYIKwYBBQUHAwQGCCsGAQUFBwMC
MEAGA1UdIAQ5MDcwNQYMKwYBBAGyMQECAQEBMCUwIwYIKwYBBQUHAgEWF2h0dHBzOi8vc2VjdGln
by5jb20vQ1BTMFoGA1UdHwRTMFEwT6BNoEuGSWh0dHA6Ly9jcmwuc2VjdGlnby5jb20vU2VjdGln
b1JTQUNsaWVudEF1dGhlbnRpY2F0aW9uYW5kU2VjdXJlRW1haWxDQS5jcmwwgYoGCCsGAQUFBwEB
BH4wfDBVBggrBgEFBQcwAoZJaHR0cDovL2NydC5zZWN0aWdvLmNvbS9TZWN0aWdvUlNBQ2xpZW50
QXV0aGVudGljYXRpb25hbmRTZWN1cmVFbWFpbENBLmNydDAjBggrBgEFBQcwAYYXaHR0cDovL29j
c3Auc2VjdGlnby5jb20wHgYDVR0RBBcwFYETZHdtdzJAaW5mcmFkZWFkLm9yZzANBgkqhkiG9w0B
AQsFAAOCAQEAyW6MUir5dm495teKqAQjDJwuFCi35h4xgnQvQ/fzPXmtR9t54rpmI2TfyvcKgOXp
qa7BGXNFfh1JsqexVkIqZP9uWB2J+uVMD+XZEs/KYNNX2PvIlSPrzIB4Z2wyIGQpaPLlYflrrVFK
v9CjT2zdqvy2maK7HKOQRt3BiJbVG5lRiwbbygldcALEV9ChWFfgSXvrWDZspnU3Gjw/rMHrGnql
Htlyebp3pf3fSS9kzQ1FVtVIDrL6eqhTwJxe+pXSMMqFiN0whpBtXdyDjzBtQTaZJ7zTT/vlehc/
tDuqZwGHm/YJy883Ll+GP3NvOkgaRGWEuYWJJ6hFCkXYjyR9IzCCBhQwggT8oAMCAQICEQDGvhmW
Z0DEAx0oURL6O6l+MA0GCSqGSIb3DQEBCwUAMIGWMQswCQYDVQQGEwJHQjEbMBkGA1UECBMSR3Jl
YXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHEwdTYWxmb3JkMRgwFgYDVQQKEw9TZWN0aWdvIExpbWl0
ZWQxPjA8BgNVBAMTNVNlY3RpZ28gUlNBIENsaWVudCBBdXRoZW50aWNhdGlvbiBhbmQgU2VjdXJl
IEVtYWlsIENBMB4XDTIyMDEwNzAwMDAwMFoXDTI1MDEwNjIzNTk1OVowJDEiMCAGCSqGSIb3DQEJ
ARYTZHdtdzJAaW5mcmFkZWFkLm9yZzCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBALQ3
GpC2bomUqk+91wLYBzDMcCj5C9m6oZaHwvmIdXftOgTbCJXADo6G9T7BBAebw2JV38EINgKpy/ZH
h7htyAkWYVoFsFPrwHounto8xTsySSePMiPlmIdQ10BcVSXMUJ3Juu16GlWOnAMJY2oYfEzmE7uT
9YgcBqKCo65pTFmOnR/VVbjJk4K2xE34GC2nAdUQkPFuyaFisicc6HRMOYXPuF0DuwITEKnjxgNj
P+qDrh0db7PAjO1D4d5ftfrsf+kdRR4gKVGSk8Tz2WwvtLAroJM4nXjNPIBJNT4w/FWWc/5qPHJy
2U+eITZ5LLE5s45mX2oPFknWqxBobQZ8a9dsZ3dSPZBvE9ZrmtFLrVrN4eo1jsXgAp1+p7bkfqd3
BgBEmfsYWlBXO8rVXfvPgLs32VdVNZxb/CDWPqBsiYv0Hv3HPsz07j5b+/cVoWqyHDKzkaVbxfq/
7auNVRmPB3v5SWEsH8xi4Bez2V9UKxfYCnqsjp8RaC2/khxKt0A552Eaxnz/4ly/2C7wkwTQnBmd
lFYhAflWKQ03Ufiu8t3iBE3VJbc25oMrglj7TRZrmKq3CkbFnX0fyulB+kHimrt6PIWn7kgyl9ae
lIl6vtbhMA+l0nfrsORMa4kobqQ5C5rveVgmcIad67EDa+UqEKy/GltUwlSh6xy+TrK1tzDvAgMB
AAGjggHMMIIByDAfBgNVHSMEGDAWgBQJwPL8C9qU21/+K9+omULPyeCtADAdBgNVHQ4EFgQUzMeD
Mcimo0oz8o1R1Nver3ZVpSkwDgYDVR0PAQH/BAQDAgWgMAwGA1UdEwEB/wQCMAAwHQYDVR0lBBYw
FAYIKwYBBQUHAwQGCCsGAQUFBwMCMEAGA1UdIAQ5MDcwNQYMKwYBBAGyMQECAQEBMCUwIwYIKwYB
BQUHAgEWF2h0dHBzOi8vc2VjdGlnby5jb20vQ1BTMFoGA1UdHwRTMFEwT6BNoEuGSWh0dHA6Ly9j
cmwuc2VjdGlnby5jb20vU2VjdGlnb1JTQUNsaWVudEF1dGhlbnRpY2F0aW9uYW5kU2VjdXJlRW1h
aWxDQS5jcmwwgYoGCCsGAQUFBwEBBH4wfDBVBggrBgEFBQcwAoZJaHR0cDovL2NydC5zZWN0aWdv
LmNvbS9TZWN0aWdvUlNBQ2xpZW50QXV0aGVudGljYXRpb25hbmRTZWN1cmVFbWFpbENBLmNydDAj
BggrBgEFBQcwAYYXaHR0cDovL29jc3Auc2VjdGlnby5jb20wHgYDVR0RBBcwFYETZHdtdzJAaW5m
cmFkZWFkLm9yZzANBgkqhkiG9w0BAQsFAAOCAQEAyW6MUir5dm495teKqAQjDJwuFCi35h4xgnQv
Q/fzPXmtR9t54rpmI2TfyvcKgOXpqa7BGXNFfh1JsqexVkIqZP9uWB2J+uVMD+XZEs/KYNNX2PvI
lSPrzIB4Z2wyIGQpaPLlYflrrVFKv9CjT2zdqvy2maK7HKOQRt3BiJbVG5lRiwbbygldcALEV9Ch
WFfgSXvrWDZspnU3Gjw/rMHrGnqlHtlyebp3pf3fSS9kzQ1FVtVIDrL6eqhTwJxe+pXSMMqFiN0w
hpBtXdyDjzBtQTaZJ7zTT/vlehc/tDuqZwGHm/YJy883Ll+GP3NvOkgaRGWEuYWJJ6hFCkXYjyR9
IzGCBMcwggTDAgEBMIGsMIGWMQswCQYDVQQGEwJHQjEbMBkGA1UECBMSR3JlYXRlciBNYW5jaGVz
dGVyMRAwDgYDVQQHEwdTYWxmb3JkMRgwFgYDVQQKEw9TZWN0aWdvIExpbWl0ZWQxPjA8BgNVBAMT
NVNlY3RpZ28gUlNBIENsaWVudCBBdXRoZW50aWNhdGlvbiBhbmQgU2VjdXJlIEVtYWlsIENBAhEA
xr4ZlmdAxAMdKFES+jupfjANBglghkgBZQMEAgEFAKCCAeswGAYJKoZIhvcNAQkDMQsGCSqGSIb3
DQEHATAcBgkqhkiG9w0BCQUxDxcNMjQwMTI2MTEyNTE5WjAvBgkqhkiG9w0BCQQxIgQghzCxi+If
SuwVtaHRs3NbRkZ/Yb709etMhnctalHnp1Awgb0GCSsGAQQBgjcQBDGBrzCBrDCBljELMAkGA1UE
BhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEYMBYG
A1UEChMPU2VjdGlnbyBMaW1pdGVkMT4wPAYDVQQDEzVTZWN0aWdvIFJTQSBDbGllbnQgQXV0aGVu
dGljYXRpb24gYW5kIFNlY3VyZSBFbWFpbCBDQQIRAMa+GZZnQMQDHShREvo7qX4wgb8GCyqGSIb3
DQEJEAILMYGvoIGsMIGWMQswCQYDVQQGEwJHQjEbMBkGA1UECBMSR3JlYXRlciBNYW5jaGVzdGVy
MRAwDgYDVQQHEwdTYWxmb3JkMRgwFgYDVQQKEw9TZWN0aWdvIExpbWl0ZWQxPjA8BgNVBAMTNVNl
Y3RpZ28gUlNBIENsaWVudCBBdXRoZW50aWNhdGlvbiBhbmQgU2VjdXJlIEVtYWlsIENBAhEAxr4Z
lmdAxAMdKFES+jupfjANBgkqhkiG9w0BAQEFAASCAgClamZXrbQb4UzvcKQWRYPrJIMKLnCSn7na
JZn+fCgPYMerQjym+JOoNhnJ7OP8eTeACu24v9Uzq8Zk/PtGEKo9RqfQ+rjntYRDhWRC3sP5rQic
R3gfC9awRg7Hlj0Rtkw6khqGbGw4oLc1ZqcPY0zoI/wMJ51emWqkg5IZwImzd6UhLzjGwhW0WfxR
yJ3BIKT4DkfUgXKyKZs/ywRp7f0ayV+eqthOJxtjU2t/SDhVngnokuZH87RrScq5YWCcXivzBWv3
w/L9tm9fHGF6EYrJ73W1cJ01GizjrVDj8NjxaJpbwRgBrULqg2YGttUs6LIAAcQNJD5zayfF++ih
lrZRdKQn8W6Pe7nU179xJ6R/JfS5uc64JVsrJIoUPqZ5OdRpIVD6Zp44a1obcZKvnaM50TfiSr15
goG4ghfsLIxWb/+vj6wuZPzBzIslhJbo4+5yqU2OKA9Rw49pjFY5H9aRnjph5sSAS1r7CBLSLxQ3
lRInCBYjwV80/ldL14cX7tcvn5BvMQe78Bhwt/Tzqlcj/zotf7gAqyAy7mBje8tRPmnpt2uTdagJ
QR4/qjYVkd395CIwpqUQnlIvcP/p9We5VS9spIxVXLW8HWO3eHdOs+mUw8B0SXJktAHe0fh+bNxB
zurlebyByZHS4Qa1UBP20n8SecGHCLFSovONo6jGQwAAAAAAAA==


--=-tAhVskJ9pKOcssdJnf27--


From xen-devel-bounces@lists.xenproject.org Fri Jan 26 12:09:43 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 26 Jan 2024 12:09:43 +0000
Received: from list by lists.xenproject.org with outflank-mailman.671969.1045530 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTL1U-0005Nd-E1; Fri, 26 Jan 2024 12:09:28 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 671969.1045530; Fri, 26 Jan 2024 12:09:28 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTL1U-0005NW-9n; Fri, 26 Jan 2024 12:09:28 +0000
Received: by outflank-mailman (input) for mailman id 671969;
 Fri, 26 Jan 2024 12:09:26 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=bPDA=JE=casper.srs.infradead.org=BATV+7caeb094913322f6f00d+7460+infradead.org+dwmw2@srs-se1.protection.inumbo.net>)
 id 1rTL1S-0005NQ-6S
 for xen-devel@lists.xenproject.org; Fri, 26 Jan 2024 12:09:26 +0000
Received: from casper.infradead.org (casper.infradead.org
 [2001:8b0:10b:1236::1])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id bdf1723d-bc43-11ee-8a43-1f161083a0e0;
 Fri, 26 Jan 2024 13:09:25 +0100 (CET)
Received: from [2001:8b0:10b:5:66db:af88:1954:1e3]
 (helo=u3832b3a9db3152.ant.amazon.com)
 by casper.infradead.org with esmtpsa (Exim 4.97.1 #2 (Red Hat Linux))
 id 1rTL1M-0000000DXh7-0Sx7; Fri, 26 Jan 2024 12:09:21 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: bdf1723d-bc43-11ee-8a43-1f161083a0e0
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=infradead.org; s=casper.20170209; h=MIME-Version:Content-Type:References:
	In-Reply-To:Date:Cc:To:From:Subject:Message-ID:Sender:Reply-To:
	Content-Transfer-Encoding:Content-ID:Content-Description;
	bh=Mo6PzkAJC+EgEGtHwkdDFmc14PQHVaYrgEyJ2YCGXFE=; b=EUcUTKakzUGhKBiEerBx1ZDXvW
	v7dOT1R3uLWbbqPoCHQ/aAzmtIjzZWe6u9J+ADWpwT+2ff3/uwK4FSKodM7vgEFbOmwjh8u7tz95L
	wwCVE5uPpnQ+/R6Xoa1hHQnkqWWqIfooWLgFaGrbl7nfJep5WUmfhKOOjp+pWRwWlcBrAF5iolot4
	ILn05KJgkKlsZf79Zx1k0F7MS6Yzqt20GpyThKNqXyxKqZ9H1Ff/aVsYrkU4gVsID8pJ+7jiqMRkK
	yUQEKY++wqrKWvpDmyxp/bc1oT/wf94S+fdLO/yuakex9IlKNs/5jK6km805xmzMmyiFaqkY21/4z
	X/34G7rg==;
Message-ID: <f61da5b48fecf07e67a4e64419af6e14f05d7cdf.camel@infradead.org>
Subject: Re: [PATCH v4 1/6] hw/xen: Set XenBackendInstance in the XenDevice
 before realizing it
From: David Woodhouse <dwmw2@infradead.org>
To: Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>, "qemu-devel@nongnu.org"
	 <qemu-devel@nongnu.org>
Cc: Stefano Stabellini <sstabellini@kernel.org>, Julien Grall
 <julien@xen.org>,  Paul Durrant <paul@xen.org>, Anthony Perard
 <anthony.perard@citrix.com>, Kevin Wolf <kwolf@redhat.com>, Hanna Reitz
 <hreitz@redhat.com>,  =?ISO-8859-1?Q?Marc-Andr=E9?= Lureau
 <marcandre.lureau@redhat.com>, Paolo Bonzini <pbonzini@redhat.com>, Jason
 Wang <jasowang@redhat.com>, "open list:X86 Xen CPUs"
 <xen-devel@lists.xenproject.org>,  "open list:Block layer core"
 <qemu-block@nongnu.org>
Date: Fri, 26 Jan 2024 12:09:20 +0000
In-Reply-To: <20231202014108.2017803-2-volodymyr_babchuk@epam.com>
References: <20231202014108.2017803-1-volodymyr_babchuk@epam.com>
	 <20231202014108.2017803-2-volodymyr_babchuk@epam.com>
Content-Type: multipart/signed; micalg="sha-256"; protocol="application/pkcs7-signature";
	boundary="=-xU/Wt4Y89tMIMjdjhqEI"
User-Agent: Evolution 3.44.4-0ubuntu2 
MIME-Version: 1.0
X-SRS-Rewrite: SMTP reverse-path rewritten from <dwmw2@infradead.org> by casper.infradead.org. See http://www.infradead.org/rpr.html


--=-xU/Wt4Y89tMIMjdjhqEI
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

On Sat, 2023-12-02 at 01:41 +0000, Volodymyr Babchuk wrote:
> From: David Woodhouse <dwmw@amazon.co.uk>
>=20
> This allows a XenDevice implementation to know whether it was created
> by QEMU, or merely discovered in XenStore after the toolstack created
> it. This will allow us to create frontend/backend nodes only when we
> should, rather than unconditionally attempting to overwrite them from
> a driver domain which doesn't have privileges to do so.
>=20
> As an added benefit, it also means we no longer have to call the
> xen_backend_set_device() function from the device models immediately
> after calling qdev_realize_and_unref(). Even though we could make
> the argument that it's safe to do so, and the pointer to the unreffed
> device *will* actually still be valid, it still made my skin itch to
> look at it.
>=20
> Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
> Reviewed-by: Paul Durrant <paul@xen.org>

I still have this lying around in my working tree. Shall I forget all
about it and let you take it with this patch series?=20

--=-xU/Wt4Y89tMIMjdjhqEI
Content-Type: application/pkcs7-signature; name="smime.p7s"
Content-Disposition: attachment; filename="smime.p7s"
Content-Transfer-Encoding: base64

MIAGCSqGSIb3DQEHAqCAMIACAQExDzANBglghkgBZQMEAgEFADCABgkqhkiG9w0BBwEAAKCCEkQw
ggYQMIID+KADAgECAhBNlCwQ1DvglAnFgS06KwZPMA0GCSqGSIb3DQEBDAUAMIGIMQswCQYDVQQG
EwJVUzETMBEGA1UECBMKTmV3IEplcnNleTEUMBIGA1UEBxMLSmVyc2V5IENpdHkxHjAcBgNVBAoT
FVRoZSBVU0VSVFJVU1QgTmV0d29yazEuMCwGA1UEAxMlVVNFUlRydXN0IFJTQSBDZXJ0aWZpY2F0
aW9uIEF1dGhvcml0eTAeFw0xODExMDIwMDAwMDBaFw0zMDEyMzEyMzU5NTlaMIGWMQswCQYDVQQG
EwJHQjEbMBkGA1UECBMSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHEwdTYWxmb3JkMRgwFgYD
VQQKEw9TZWN0aWdvIExpbWl0ZWQxPjA8BgNVBAMTNVNlY3RpZ28gUlNBIENsaWVudCBBdXRoZW50
aWNhdGlvbiBhbmQgU2VjdXJlIEVtYWlsIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
AQEAyjztlApB/975Rrno1jvm2pK/KxBOqhq8gr2+JhwpKirSzZxQgT9tlC7zl6hn1fXjSo5MqXUf
ItMltrMaXqcESJuK8dtK56NCSrq4iDKaKq9NxOXFmqXX2zN8HHGjQ2b2Xv0v1L5Nk1MQPKA19xeW
QcpGEGFUUd0kN+oHox+L9aV1rjfNiCj3bJk6kJaOPabPi2503nn/ITX5e8WfPnGw4VuZ79Khj1YB
rf24k5Ee1sLTHsLtpiK9OjG4iQRBdq6Z/TlVx/hGAez5h36bBJMxqdHLpdwIUkTqT8se3ed0PewD
ch/8kHPo5fZl5u1B0ecpq/sDN/5sCG52Ds+QU5O5EwIDAQABo4IBZDCCAWAwHwYDVR0jBBgwFoAU
U3m/WqorSs9UgOHYm8Cd8rIDZsswHQYDVR0OBBYEFAnA8vwL2pTbX/4r36iZQs/J4K0AMA4GA1Ud
DwEB/wQEAwIBhjASBgNVHRMBAf8ECDAGAQH/AgEAMB0GA1UdJQQWMBQGCCsGAQUFBwMCBggrBgEF
BQcDBDARBgNVHSAECjAIMAYGBFUdIAAwUAYDVR0fBEkwRzBFoEOgQYY/aHR0cDovL2NybC51c2Vy
dHJ1c3QuY29tL1VTRVJUcnVzdFJTQUNlcnRpZmljYXRpb25BdXRob3JpdHkuY3JsMHYGCCsGAQUF
BwEBBGowaDA/BggrBgEFBQcwAoYzaHR0cDovL2NydC51c2VydHJ1c3QuY29tL1VTRVJUcnVzdFJT
QUFkZFRydXN0Q0EuY3J0MCUGCCsGAQUFBzABhhlodHRwOi8vb2NzcC51c2VydHJ1c3QuY29tMA0G
CSqGSIb3DQEBDAUAA4ICAQBBRHUAqznCFfXejpVtMnFojADdF9d6HBA4kMjjsb0XMZHztuOCtKF+
xswhh2GqkW5JQrM8zVlU+A2VP72Ky2nlRA1GwmIPgou74TZ/XTarHG8zdMSgaDrkVYzz1g3nIVO9
IHk96VwsacIvBF8JfqIs+8aWH2PfSUrNxP6Ys7U0sZYx4rXD6+cqFq/ZW5BUfClN/rhk2ddQXyn7
kkmka2RQb9d90nmNHdgKrwfQ49mQ2hWQNDkJJIXwKjYA6VUR/fZUFeCUisdDe/0ABLTI+jheXUV1
eoYV7lNwNBKpeHdNuO6Aacb533JlfeUHxvBz9OfYWUiXu09sMAviM11Q0DuMZ5760CdO2VnpsXP4
KxaYIhvqPqUMWqRdWyn7crItNkZeroXaecG03i3mM7dkiPaCkgocBg0EBYsbZDZ8bsG3a08LwEsL
1Ygz3SBsyECa0waq4hOf/Z85F2w2ZpXfP+w8q4ifwO90SGZZV+HR/Jh6rEaVPDRF/CEGVqR1hiuQ
OZ1YL5ezMTX0ZSLwrymUE0pwi/KDaiYB15uswgeIAcA6JzPFf9pLkAFFWs1QNyN++niFhsM47qod
x/PL+5jR87myx5uYdBEQkkDc+lKB1Wct6ucXqm2EmsaQ0M95QjTmy+rDWjkDYdw3Ms6mSWE3Bn7i
5ZgtwCLXgAIe5W8mybM2JzCCBhQwggT8oAMCAQICEQDGvhmWZ0DEAx0oURL6O6l+MA0GCSqGSIb3
DQEBCwUAMIGWMQswCQYDVQQGEwJHQjEbMBkGA1UECBMSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYD
VQQHEwdTYWxmb3JkMRgwFgYDVQQKEw9TZWN0aWdvIExpbWl0ZWQxPjA8BgNVBAMTNVNlY3RpZ28g
UlNBIENsaWVudCBBdXRoZW50aWNhdGlvbiBhbmQgU2VjdXJlIEVtYWlsIENBMB4XDTIyMDEwNzAw
MDAwMFoXDTI1MDEwNjIzNTk1OVowJDEiMCAGCSqGSIb3DQEJARYTZHdtdzJAaW5mcmFkZWFkLm9y
ZzCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBALQ3GpC2bomUqk+91wLYBzDMcCj5C9m6
oZaHwvmIdXftOgTbCJXADo6G9T7BBAebw2JV38EINgKpy/ZHh7htyAkWYVoFsFPrwHounto8xTsy
SSePMiPlmIdQ10BcVSXMUJ3Juu16GlWOnAMJY2oYfEzmE7uT9YgcBqKCo65pTFmOnR/VVbjJk4K2
xE34GC2nAdUQkPFuyaFisicc6HRMOYXPuF0DuwITEKnjxgNjP+qDrh0db7PAjO1D4d5ftfrsf+kd
RR4gKVGSk8Tz2WwvtLAroJM4nXjNPIBJNT4w/FWWc/5qPHJy2U+eITZ5LLE5s45mX2oPFknWqxBo
bQZ8a9dsZ3dSPZBvE9ZrmtFLrVrN4eo1jsXgAp1+p7bkfqd3BgBEmfsYWlBXO8rVXfvPgLs32VdV
NZxb/CDWPqBsiYv0Hv3HPsz07j5b+/cVoWqyHDKzkaVbxfq/7auNVRmPB3v5SWEsH8xi4Bez2V9U
KxfYCnqsjp8RaC2/khxKt0A552Eaxnz/4ly/2C7wkwTQnBmdlFYhAflWKQ03Ufiu8t3iBE3VJbc2
5oMrglj7TRZrmKq3CkbFnX0fyulB+kHimrt6PIWn7kgyl9aelIl6vtbhMA+l0nfrsORMa4kobqQ5
C5rveVgmcIad67EDa+UqEKy/GltUwlSh6xy+TrK1tzDvAgMBAAGjggHMMIIByDAfBgNVHSMEGDAW
gBQJwPL8C9qU21/+K9+omULPyeCtADAdBgNVHQ4EFgQUzMeDMcimo0oz8o1R1Nver3ZVpSkwDgYD
VR0PAQH/BAQDAgWgMAwGA1UdEwEB/wQCMAAwHQYDVR0lBBYwFAYIKwYBBQUHAwQGCCsGAQUFBwMC
MEAGA1UdIAQ5MDcwNQYMKwYBBAGyMQECAQEBMCUwIwYIKwYBBQUHAgEWF2h0dHBzOi8vc2VjdGln
by5jb20vQ1BTMFoGA1UdHwRTMFEwT6BNoEuGSWh0dHA6Ly9jcmwuc2VjdGlnby5jb20vU2VjdGln
b1JTQUNsaWVudEF1dGhlbnRpY2F0aW9uYW5kU2VjdXJlRW1haWxDQS5jcmwwgYoGCCsGAQUFBwEB
BH4wfDBVBggrBgEFBQcwAoZJaHR0cDovL2NydC5zZWN0aWdvLmNvbS9TZWN0aWdvUlNBQ2xpZW50
QXV0aGVudGljYXRpb25hbmRTZWN1cmVFbWFpbENBLmNydDAjBggrBgEFBQcwAYYXaHR0cDovL29j
c3Auc2VjdGlnby5jb20wHgYDVR0RBBcwFYETZHdtdzJAaW5mcmFkZWFkLm9yZzANBgkqhkiG9w0B
AQsFAAOCAQEAyW6MUir5dm495teKqAQjDJwuFCi35h4xgnQvQ/fzPXmtR9t54rpmI2TfyvcKgOXp
qa7BGXNFfh1JsqexVkIqZP9uWB2J+uVMD+XZEs/KYNNX2PvIlSPrzIB4Z2wyIGQpaPLlYflrrVFK
v9CjT2zdqvy2maK7HKOQRt3BiJbVG5lRiwbbygldcALEV9ChWFfgSXvrWDZspnU3Gjw/rMHrGnql
Htlyebp3pf3fSS9kzQ1FVtVIDrL6eqhTwJxe+pXSMMqFiN0whpBtXdyDjzBtQTaZJ7zTT/vlehc/
tDuqZwGHm/YJy883Ll+GP3NvOkgaRGWEuYWJJ6hFCkXYjyR9IzCCBhQwggT8oAMCAQICEQDGvhmW
Z0DEAx0oURL6O6l+MA0GCSqGSIb3DQEBCwUAMIGWMQswCQYDVQQGEwJHQjEbMBkGA1UECBMSR3Jl
YXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHEwdTYWxmb3JkMRgwFgYDVQQKEw9TZWN0aWdvIExpbWl0
ZWQxPjA8BgNVBAMTNVNlY3RpZ28gUlNBIENsaWVudCBBdXRoZW50aWNhdGlvbiBhbmQgU2VjdXJl
IEVtYWlsIENBMB4XDTIyMDEwNzAwMDAwMFoXDTI1MDEwNjIzNTk1OVowJDEiMCAGCSqGSIb3DQEJ
ARYTZHdtdzJAaW5mcmFkZWFkLm9yZzCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBALQ3
GpC2bomUqk+91wLYBzDMcCj5C9m6oZaHwvmIdXftOgTbCJXADo6G9T7BBAebw2JV38EINgKpy/ZH
h7htyAkWYVoFsFPrwHounto8xTsySSePMiPlmIdQ10BcVSXMUJ3Juu16GlWOnAMJY2oYfEzmE7uT
9YgcBqKCo65pTFmOnR/VVbjJk4K2xE34GC2nAdUQkPFuyaFisicc6HRMOYXPuF0DuwITEKnjxgNj
P+qDrh0db7PAjO1D4d5ftfrsf+kdRR4gKVGSk8Tz2WwvtLAroJM4nXjNPIBJNT4w/FWWc/5qPHJy
2U+eITZ5LLE5s45mX2oPFknWqxBobQZ8a9dsZ3dSPZBvE9ZrmtFLrVrN4eo1jsXgAp1+p7bkfqd3
BgBEmfsYWlBXO8rVXfvPgLs32VdVNZxb/CDWPqBsiYv0Hv3HPsz07j5b+/cVoWqyHDKzkaVbxfq/
7auNVRmPB3v5SWEsH8xi4Bez2V9UKxfYCnqsjp8RaC2/khxKt0A552Eaxnz/4ly/2C7wkwTQnBmd
lFYhAflWKQ03Ufiu8t3iBE3VJbc25oMrglj7TRZrmKq3CkbFnX0fyulB+kHimrt6PIWn7kgyl9ae
lIl6vtbhMA+l0nfrsORMa4kobqQ5C5rveVgmcIad67EDa+UqEKy/GltUwlSh6xy+TrK1tzDvAgMB
AAGjggHMMIIByDAfBgNVHSMEGDAWgBQJwPL8C9qU21/+K9+omULPyeCtADAdBgNVHQ4EFgQUzMeD
Mcimo0oz8o1R1Nver3ZVpSkwDgYDVR0PAQH/BAQDAgWgMAwGA1UdEwEB/wQCMAAwHQYDVR0lBBYw
FAYIKwYBBQUHAwQGCCsGAQUFBwMCMEAGA1UdIAQ5MDcwNQYMKwYBBAGyMQECAQEBMCUwIwYIKwYB
BQUHAgEWF2h0dHBzOi8vc2VjdGlnby5jb20vQ1BTMFoGA1UdHwRTMFEwT6BNoEuGSWh0dHA6Ly9j
cmwuc2VjdGlnby5jb20vU2VjdGlnb1JTQUNsaWVudEF1dGhlbnRpY2F0aW9uYW5kU2VjdXJlRW1h
aWxDQS5jcmwwgYoGCCsGAQUFBwEBBH4wfDBVBggrBgEFBQcwAoZJaHR0cDovL2NydC5zZWN0aWdv
LmNvbS9TZWN0aWdvUlNBQ2xpZW50QXV0aGVudGljYXRpb25hbmRTZWN1cmVFbWFpbENBLmNydDAj
BggrBgEFBQcwAYYXaHR0cDovL29jc3Auc2VjdGlnby5jb20wHgYDVR0RBBcwFYETZHdtdzJAaW5m
cmFkZWFkLm9yZzANBgkqhkiG9w0BAQsFAAOCAQEAyW6MUir5dm495teKqAQjDJwuFCi35h4xgnQv
Q/fzPXmtR9t54rpmI2TfyvcKgOXpqa7BGXNFfh1JsqexVkIqZP9uWB2J+uVMD+XZEs/KYNNX2PvI
lSPrzIB4Z2wyIGQpaPLlYflrrVFKv9CjT2zdqvy2maK7HKOQRt3BiJbVG5lRiwbbygldcALEV9Ch
WFfgSXvrWDZspnU3Gjw/rMHrGnqlHtlyebp3pf3fSS9kzQ1FVtVIDrL6eqhTwJxe+pXSMMqFiN0w
hpBtXdyDjzBtQTaZJ7zTT/vlehc/tDuqZwGHm/YJy883Ll+GP3NvOkgaRGWEuYWJJ6hFCkXYjyR9
IzGCBMcwggTDAgEBMIGsMIGWMQswCQYDVQQGEwJHQjEbMBkGA1UECBMSR3JlYXRlciBNYW5jaGVz
dGVyMRAwDgYDVQQHEwdTYWxmb3JkMRgwFgYDVQQKEw9TZWN0aWdvIExpbWl0ZWQxPjA8BgNVBAMT
NVNlY3RpZ28gUlNBIENsaWVudCBBdXRoZW50aWNhdGlvbiBhbmQgU2VjdXJlIEVtYWlsIENBAhEA
xr4ZlmdAxAMdKFES+jupfjANBglghkgBZQMEAgEFAKCCAeswGAYJKoZIhvcNAQkDMQsGCSqGSIb3
DQEHATAcBgkqhkiG9w0BCQUxDxcNMjQwMTI2MTIwOTIwWjAvBgkqhkiG9w0BCQQxIgQgllWem1a4
AmbMIDkyi/r5j+dJ+Vg+tQ5wKnvpX0GYW4Ewgb0GCSsGAQQBgjcQBDGBrzCBrDCBljELMAkGA1UE
BhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEYMBYG
A1UEChMPU2VjdGlnbyBMaW1pdGVkMT4wPAYDVQQDEzVTZWN0aWdvIFJTQSBDbGllbnQgQXV0aGVu
dGljYXRpb24gYW5kIFNlY3VyZSBFbWFpbCBDQQIRAMa+GZZnQMQDHShREvo7qX4wgb8GCyqGSIb3
DQEJEAILMYGvoIGsMIGWMQswCQYDVQQGEwJHQjEbMBkGA1UECBMSR3JlYXRlciBNYW5jaGVzdGVy
MRAwDgYDVQQHEwdTYWxmb3JkMRgwFgYDVQQKEw9TZWN0aWdvIExpbWl0ZWQxPjA8BgNVBAMTNVNl
Y3RpZ28gUlNBIENsaWVudCBBdXRoZW50aWNhdGlvbiBhbmQgU2VjdXJlIEVtYWlsIENBAhEAxr4Z
lmdAxAMdKFES+jupfjANBgkqhkiG9w0BAQEFAASCAgBK90P1JymnINopVL9N2w7Fx9KBtytOhOFb
W83B/oZYS7s6opLVwNYp1QgoaOiyxGDuymHe5X9qZm56FSYG7JsZNAXrq3BHcAlIflnnIrowvPtF
x1VRbpodWLIMfRDmjsPPOrEBBuWVfkrFOuYX36y9rrmP10gTx9cHzgwLZMG3L8MqNCA58LL56+Pw
l8Y2ydsxzouw/UQ7Pxyd21EF0Cp55b+qYBhNOjvJsLr9M798TArwjG37gg+Hqohk9s3O0K//Lvs1
1aRputatP335zisApKmFXpI8p6bt+qpZu0tEnZegqNz9XM3rm2BL4ZMwLAlhINZn7rXgcQIDzxoO
4JwcHyHaOoIkobDfcOKKnTJmjKSX0hNqdUFo5+rvi5LJsiP9vjVC9+5nzjF/K8Gd98vm/8JX0lf7
7hunrO+mtK1ctCo0kf36PlOxgumqGzV9kPE0NGVUXkt3d8Zsoj3hZzpDbNV1Yjv3+vyVWFT0NXcy
MdyAOyrCzxR+UHmYxjBjwCO/n5IoOuJlGOnmUZ2DpRGWEynedclTowcNc9b/kh26uhDdgSwXYGwu
LUZeO6muluf0tauhBKlOFM0SwTI9qQy8AwZdWaqrNUHPkJDArcgUlAM191Nhjao5cGIbaREcd7km
uMHGkKxItq1z35EPVYl9IAyC/zFHywWma5zjs+/EhQAAAAAAAA==


--=-xU/Wt4Y89tMIMjdjhqEI--


From xen-devel-bounces@lists.xenproject.org Fri Jan 26 12:21:12 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 26 Jan 2024 12:21:12 +0000
Received: from list by lists.xenproject.org with outflank-mailman.671974.1045539 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTLCl-00086U-DN; Fri, 26 Jan 2024 12:21:07 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 671974.1045539; Fri, 26 Jan 2024 12:21:07 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTLCl-00086N-AU; Fri, 26 Jan 2024 12:21:07 +0000
Received: by outflank-mailman (input) for mailman id 671974;
 Fri, 26 Jan 2024 12:21:05 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=DqdW=JE=gmail.com=oleksii.kurochko@srs-se1.protection.inumbo.net>)
 id 1rTLCj-00086G-Ih
 for xen-devel@lists.xenproject.org; Fri, 26 Jan 2024 12:21:05 +0000
Received: from mail-lj1-x22c.google.com (mail-lj1-x22c.google.com
 [2a00:1450:4864:20::22c])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 5f5e979f-bc45-11ee-8a43-1f161083a0e0;
 Fri, 26 Jan 2024 13:21:03 +0100 (CET)
Received: by mail-lj1-x22c.google.com with SMTP id
 38308e7fff4ca-2cc9fa5e8e1so2765461fa.3
 for <xen-devel@lists.xenproject.org>; Fri, 26 Jan 2024 04:21:03 -0800 (PST)
Received: from fedora.. ([94.75.70.14]) by smtp.gmail.com with ESMTPSA id
 v2-20020aa7cd42000000b0055d1f27f47dsm543631edw.28.2024.01.26.04.21.01
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Fri, 26 Jan 2024 04:21:02 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 5f5e979f-bc45-11ee-8a43-1f161083a0e0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1706271663; x=1706876463; darn=lists.xenproject.org;
        h=content-transfer-encoding:mime-version:message-id:date:subject:cc
         :to:from:from:to:cc:subject:date:message-id:reply-to;
        bh=C1M7zlyz5Ss6moqRXdbeQYXZV1u1WiqCMJnYW3h3HP4=;
        b=Kju/w2aiDJYc8DGlOl9isH71cGAEB7Cgc8Y8abglRjN9gDCcY2tctiIJo4oQuo7rCx
         VKMFjkDSWvYI5lUEF5vTieoCH+4NhYbcIu0hLEupM+Wx3dMkZ1s6BcfRsrnxLpJLWz1O
         dE5DcIDD01ut7+cio7Ao50tzzKVcyq7mk20j/BT5OeCQjkueNWoeD9x+mUOSqtIlIydS
         /Wnz3GrZX5e2aB1Mw1+l7hy1jMQE8dr0Vd5rQj/+osb8Y8zFrRO8N5qnlP7Yarylr3GJ
         56y6++TvyBfICDwng7rjz7RVe78Pg1owZVE+rDt6ithsYFK+2m6lUTV132uzFqeCMPRu
         Xvlg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706271663; x=1706876463;
        h=content-transfer-encoding:mime-version:message-id:date:subject:cc
         :to:from:x-gm-message-state:from:to:cc:subject:date:message-id
         :reply-to;
        bh=C1M7zlyz5Ss6moqRXdbeQYXZV1u1WiqCMJnYW3h3HP4=;
        b=SeWFFXegNZqk7sC/cN3zXIiZzLc/iJcWtYJcrMKlzlYEF64XoHfmJZj7IXNpquKUuN
         WMUScUt2pQyrOWtZoCaO3lxcg0PgTIbapqULFiWDpU7ULQn75Qycbk8OzMNidLePdC4o
         CfjoAoeE2xx9wnkvu1jv5HnewZtBLVpW9wXE6FnRy1eydOXSf5dNqk+zUbn2DnQyvPM2
         eVhMJUipU9f6onAOuWHWyNKx8Eei15d5e3g45/YP9iQr1k5U0dcrTyqPXq6xT7JxKPxA
         3AYq+Mzt9/ys1zin69xvdOk29txGjH63EKrppaMvZTjROtwHegSUOjL4WbHsLdPWt35u
         aSrQ==
X-Gm-Message-State: AOJu0YyfDBb4WrKK0GYbF9sQTQ8/fSUOgAB1RnTFYilmndS20X2Y7Mkd
	GK0uYioFpemTaFLh8oHcvUREgDkwygB15mBuOOutWmJ7rUNto+UVTCtPqczJ
X-Google-Smtp-Source: AGHT+IGDEwBXaixnyY98ilAQ1iKADDafNCOd8Bxs6Ih1X3PfYLi/IAs+19hcfACvNLxg18/KrDo7RQ==
X-Received: by 2002:a2e:994d:0:b0:2cd:dc68:829b with SMTP id r13-20020a2e994d000000b002cddc68829bmr744941ljj.23.1706271662420;
        Fri, 26 Jan 2024 04:21:02 -0800 (PST)
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
To: xen-devel@lists.xenproject.org
Cc: Oleksii Kurochko <oleksii.kurochko@gmail.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	George Dunlap <george.dunlap@citrix.com>,
	Jan Beulich <jbeulich@suse.com>,
	Julien Grall <julien@xen.org>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Wei Liu <wl@xen.org>,
	Bertrand Marquis <bertrand.marquis@arm.com>,
	Michal Orzel <michal.orzel@amd.com>,
	Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
	Shawn Anastasio <sanastasio@raptorengineering.com>
Subject: [PATCH] xen/lib: introduce generic find next bit operations
Date: Fri, 26 Jan 2024 14:20:58 +0200
Message-ID: <52730e6314210ba4164a9934a720c4fda201447b.1706266854.git.oleksii.kurochko@gmail.com>
X-Mailer: git-send-email 2.43.0
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

find-next-bit.c is common for Arm64, PPC and RISCV64,
so it is moved to xen/lib.

Suggested-by: Jan Beulich <jbeulich@suse.com>
Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>
---
 docs/misra/exclude-list.json                  |   4 -
 xen/arch/arm/arm64/lib/Makefile               |   2 +-
 xen/arch/arm/include/asm/arm64/bitops.h       |  48 --------
 xen/arch/ppc/include/asm/bitops.h             | 115 ------------------
 xen/include/xen/bitops.h                      |  48 ++++++++
 xen/lib/Makefile                              |   1 +
 .../find_next_bit.c => lib/find-next-bit.c}   |   0
 7 files changed, 50 insertions(+), 168 deletions(-)
 rename xen/{arch/arm/arm64/lib/find_next_bit.c => lib/find-next-bit.c} (100%)

diff --git a/docs/misra/exclude-list.json b/docs/misra/exclude-list.json
index 7971d0e70f..7fe02b059d 100644
--- a/docs/misra/exclude-list.json
+++ b/docs/misra/exclude-list.json
@@ -13,10 +13,6 @@
             "rel_path": "arch/arm/arm64/insn.c",
             "comment": "Imported on Linux, ignore for now"
         },
-        {
-            "rel_path": "arch/arm/arm64/lib/find_next_bit.c",
-            "comment": "Imported from Linux, ignore for now"
-        },
         {
             "rel_path": "arch/x86/acpi/boot.c",
             "comment": "Imported from Linux, ignore for now"
diff --git a/xen/arch/arm/arm64/lib/Makefile b/xen/arch/arm/arm64/lib/Makefile
index 1b9c7a95e6..66cfac435a 100644
--- a/xen/arch/arm/arm64/lib/Makefile
+++ b/xen/arch/arm/arm64/lib/Makefile
@@ -1,4 +1,4 @@
 obj-y += memcpy.o memcmp.o memmove.o memset.o memchr.o
 obj-y += clear_page.o
-obj-y += bitops.o find_next_bit.o
+obj-y += bitops.o
 obj-y += strchr.o strcmp.o strlen.o strncmp.o strnlen.o strrchr.o
diff --git a/xen/arch/arm/include/asm/arm64/bitops.h b/xen/arch/arm/include/asm/arm64/bitops.h
index d85a49bca4..f9dd066237 100644
--- a/xen/arch/arm/include/asm/arm64/bitops.h
+++ b/xen/arch/arm/include/asm/arm64/bitops.h
@@ -36,57 +36,9 @@ static inline int flsl(unsigned long x)
 
 /* Based on linux/include/asm-generic/bitops/find.h */
 
-#ifndef find_next_bit
-/**
- * find_next_bit - find the next set bit in a memory region
- * @addr: The address to base the search on
- * @offset: The bitnumber to start searching at
- * @size: The bitmap size in bits
- */
-extern unsigned long find_next_bit(const unsigned long *addr, unsigned long
-		size, unsigned long offset);
-#endif
-
-#ifndef find_next_zero_bit
-/**
- * find_next_zero_bit - find the next cleared bit in a memory region
- * @addr: The address to base the search on
- * @offset: The bitnumber to start searching at
- * @size: The bitmap size in bits
- */
-extern unsigned long find_next_zero_bit(const unsigned long *addr, unsigned
-		long size, unsigned long offset);
-#endif
-
-#ifdef CONFIG_GENERIC_FIND_FIRST_BIT
-
-/**
- * find_first_bit - find the first set bit in a memory region
- * @addr: The address to start the search at
- * @size: The maximum size to search
- *
- * Returns the bit number of the first set bit.
- */
-extern unsigned long find_first_bit(const unsigned long *addr,
-				    unsigned long size);
-
-/**
- * find_first_zero_bit - find the first cleared bit in a memory region
- * @addr: The address to start the search at
- * @size: The maximum size to search
- *
- * Returns the bit number of the first cleared bit.
- */
-extern unsigned long find_first_zero_bit(const unsigned long *addr,
-					 unsigned long size);
-#else /* CONFIG_GENERIC_FIND_FIRST_BIT */
-
 #define find_first_bit(addr, size) find_next_bit((addr), (size), 0)
 #define find_first_zero_bit(addr, size) find_next_zero_bit((addr), (size), 0)
 
-#endif /* CONFIG_GENERIC_FIND_FIRST_BIT */
-
-
 #endif /* _ARM_ARM64_BITOPS_H */
 /*
  * Local variables:
diff --git a/xen/arch/ppc/include/asm/bitops.h b/xen/arch/ppc/include/asm/bitops.h
index 5e7f36c21d..5820b9ce7b 100644
--- a/xen/arch/ppc/include/asm/bitops.h
+++ b/xen/arch/ppc/include/asm/bitops.h
@@ -217,119 +217,4 @@ static always_inline unsigned long __ffs(unsigned long word)
  */
 #define find_first_set_bit(x) (ffsl(x) - 1)
 
-/*
- * Find the first set bit in a memory region.
- */
-static inline unsigned long find_first_bit(const unsigned long *addr,
-                                           unsigned long size)
-{
-    const unsigned long *p = addr;
-    unsigned long result = 0;
-    unsigned long tmp;
-
-    while ( size & ~(BITS_PER_LONG - 1) )
-    {
-        if ( (tmp = *(p++)) )
-            goto found;
-        result += BITS_PER_LONG;
-        size -= BITS_PER_LONG;
-    }
-    if ( !size )
-        return result;
-
-    tmp = (*p) & (~0UL >> (BITS_PER_LONG - size));
-    if ( tmp == 0UL )         /* Are any bits set? */
-        return result + size; /* Nope. */
- found:
-    return result + __ffs(tmp);
-}
-
-static inline unsigned long find_next_bit(const unsigned long *addr,
-                                          unsigned long size,
-                                          unsigned long offset)
-{
-    const unsigned long *p = addr + BITOP_WORD(offset);
-    unsigned long result = offset & ~(BITS_PER_LONG - 1);
-    unsigned long tmp;
-
-    if ( offset >= size )
-        return size;
-    size -= result;
-    offset %= BITS_PER_LONG;
-    if ( offset )
-    {
-        tmp = *(p++);
-        tmp &= (~0UL << offset);
-        if ( size < BITS_PER_LONG )
-            goto found_first;
-        if ( tmp )
-            goto found_middle;
-        size -= BITS_PER_LONG;
-        result += BITS_PER_LONG;
-    }
-    while ( size & ~(BITS_PER_LONG - 1) )
-    {
-        if ( (tmp = *(p++)) )
-            goto found_middle;
-        result += BITS_PER_LONG;
-        size -= BITS_PER_LONG;
-    }
-    if ( !size )
-        return result;
-    tmp = *p;
-
- found_first:
-    tmp &= (~0UL >> (BITS_PER_LONG - size));
-    if ( tmp == 0UL )         /* Are any bits set? */
-        return result + size; /* Nope. */
- found_middle:
-    return result + __ffs(tmp);
-}
-
-/*
- * This implementation of find_{first,next}_zero_bit was stolen from
- * Linus' asm-alpha/bitops.h.
- */
-static inline unsigned long find_next_zero_bit(const unsigned long *addr,
-                                               unsigned long size,
-                                               unsigned long offset)
-{
-    const unsigned long *p = addr + BITOP_WORD(offset);
-    unsigned long result = offset & ~(BITS_PER_LONG - 1);
-    unsigned long tmp;
-
-    if ( offset >= size )
-        return size;
-    size -= result;
-    offset %= BITS_PER_LONG;
-    if ( offset )
-    {
-        tmp = *(p++);
-        tmp |= ~0UL >> (BITS_PER_LONG - offset);
-        if ( size < BITS_PER_LONG )
-            goto found_first;
-        if ( ~tmp )
-            goto found_middle;
-        size -= BITS_PER_LONG;
-        result += BITS_PER_LONG;
-    }
-    while ( size & ~(BITS_PER_LONG - 1) )
-    {
-        if ( ~(tmp = *(p++)) )
-            goto found_middle;
-        result += BITS_PER_LONG;
-        size -= BITS_PER_LONG;
-    }
-    if ( !size )
-        return result;
-    tmp = *p;
-
- found_first:
-    tmp |= ~0UL << size;
-    if ( tmp == ~0UL )        /* Are any bits zero? */
-        return result + size; /* Nope. */
- found_middle:
-    return result + ffz(tmp);
-}
-
 #endif /* _ASM_PPC_BITOPS_H */
diff --git a/xen/include/xen/bitops.h b/xen/include/xen/bitops.h
index a88d45475c..bddd75a473 100644
--- a/xen/include/xen/bitops.h
+++ b/xen/include/xen/bitops.h
@@ -105,6 +105,54 @@ static inline int generic_flsl(unsigned long x)
  */
 #include <asm/bitops.h>
 
+#ifndef find_next_bit
+/**
+ * find_next_bit - find the next set bit in a memory region
+ * @addr: The address to base the search on
+ * @offset: The bitnumber to start searching at
+ * @size: The bitmap size in bits
+ */
+extern unsigned long find_next_bit(const unsigned long *addr,
+                                   unsigned long size,
+                                   unsigned long offset);
+#endif
+
+#ifndef find_next_zero_bit
+/**
+ * find_next_zero_bit - find the next cleared bit in a memory region
+ * @addr: The address to base the search on
+ * @offset: The bitnumber to start searching at
+ * @size: The bitmap size in bits
+ */
+extern unsigned long find_next_zero_bit(const unsigned long *addr,
+                                        unsigned long size,
+                                        unsigned long offset);
+#endif
+
+#ifndef find_first_bit
+/**
+ * find_first_bit - find the first set bit in a memory region
+ * @addr: The address to start the search at
+ * @size: The maximum size to search
+ *
+ * Returns the bit number of the first set bit.
+ */
+extern unsigned long find_first_bit(const unsigned long *addr,
+                                    unsigned long size);
+#endif
+
+#ifndef find_first_zero_bit
+/**
+ * find_first_zero_bit - find the first cleared bit in a memory region
+ * @addr: The address to start the search at
+ * @size: The maximum size to search
+ *
+ * Returns the bit number of the first cleared bit.
+ */
+extern unsigned long find_first_zero_bit(const unsigned long *addr,
+                                         unsigned long size);
+#endif
+
 #if BITS_PER_LONG == 64
 # define fls64 flsl
 # define ffs64 ffsl
diff --git a/xen/lib/Makefile b/xen/lib/Makefile
index 2d9ebb945f..e63798e1d4 100644
--- a/xen/lib/Makefile
+++ b/xen/lib/Makefile
@@ -3,6 +3,7 @@ obj-$(CONFIG_X86) += x86/
 lib-y += bsearch.o
 lib-y += ctors.o
 lib-y += ctype.o
+lib-y += find-next-bit.o
 lib-y += list-sort.o
 lib-y += memchr.o
 lib-y += memchr_inv.o
diff --git a/xen/arch/arm/arm64/lib/find_next_bit.c b/xen/lib/find-next-bit.c
similarity index 100%
rename from xen/arch/arm/arm64/lib/find_next_bit.c
rename to xen/lib/find-next-bit.c
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Fri Jan 26 12:51:57 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 26 Jan 2024 12:51:57 +0000
Received: from list by lists.xenproject.org with outflank-mailman.671981.1045550 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTLgS-0003xQ-KP; Fri, 26 Jan 2024 12:51:48 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 671981.1045550; Fri, 26 Jan 2024 12:51:48 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTLgS-0003xJ-HG; Fri, 26 Jan 2024 12:51:48 +0000
Received: by outflank-mailman (input) for mailman id 671981;
 Fri, 26 Jan 2024 12:51:47 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=7E2Z=JE=amd.com=Michal.Orzel@srs-se1.protection.inumbo.net>)
 id 1rTLgQ-0003xD-Ut
 for xen-devel@lists.xenproject.org; Fri, 26 Jan 2024 12:51:47 +0000
Received: from NAM12-BN8-obe.outbound.protection.outlook.com
 (mail-bn8nam12on20601.outbound.protection.outlook.com
 [2a01:111:f403:2418::601])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id a8b6b6e6-bc49-11ee-8a43-1f161083a0e0;
 Fri, 26 Jan 2024 13:51:45 +0100 (CET)
Received: from BY3PR05CA0034.namprd05.prod.outlook.com (2603:10b6:a03:39b::9)
 by CY8PR12MB8315.namprd12.prod.outlook.com (2603:10b6:930:7e::8) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7228.26; Fri, 26 Jan
 2024 12:51:42 +0000
Received: from SJ1PEPF00001CE3.namprd05.prod.outlook.com
 (2603:10b6:a03:39b:cafe::78) by BY3PR05CA0034.outlook.office365.com
 (2603:10b6:a03:39b::9) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7228.21 via Frontend
 Transport; Fri, 26 Jan 2024 12:51:42 +0000
Received: from SATLEXMB03.amd.com (165.204.84.17) by
 SJ1PEPF00001CE3.mail.protection.outlook.com (10.167.242.11) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.7202.16 via Frontend Transport; Fri, 26 Jan 2024 12:51:41 +0000
Received: from SATLEXMB03.amd.com (10.181.40.144) by SATLEXMB03.amd.com
 (10.181.40.144) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.34; Fri, 26 Jan
 2024 06:51:37 -0600
Received: from XIR-MICHALO-L1.xilinx.com (10.180.168.240) by
 SATLEXMB03.amd.com (10.181.40.144) with Microsoft SMTP Server id 15.1.2507.34
 via Frontend Transport; Fri, 26 Jan 2024 06:51:36 -0600
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: a8b6b6e6-bc49-11ee-8a43-1f161083a0e0
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=j4Uiw/2wIjm/v2AeZGvAynD468jTvKytnXUjbYqWmIFOGMMgMHUso1FOaCxuGZ6MHR1+3kd9+/19dcdfW58V+qyxh+ajUlh8KgLPVepJFh3Fz00Gsu8dvXtL5BymYNaqFHVBMuBQApiXkNJyvekvpcp7/Vf9UHzogA6Fc52NNacfpsDRYZXjfqS7yqfRw5VfV6txWUuCs8MhkudVnHpW9S4dy+0nUCjLh8V/ZjxD4usHDH94uo3wAd78JJVLQT89KnHN4FYbUxalBNq6+cFYUQTFJ7hcuZo8YlyQHvENxzNg07nRltU51fFBo31nDj9K4ArcZDmpu7ApwdmU0aGu1Q==
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=H4Rpw5pncYCvunyAOoAL6/OC9jz6oJupOd8JCuf5T4E=;
 b=asQfjimoHxoBRbzb0OvjG1aJuKvdQ9Gmz8mUz5tq9nTx/B13YVfcNCWej+mDEZfCFTn0cZyW6HdIogabD8ck5yCcHfCnBh+vn1tqNeqvMoBR0SCML7vpRcxM7wL4KdFJLTjm5hJFcOhFfNp0eSw9pRMgYTdoicY9cwGdgD49ax/CFT3p8lZ7ESnMaLSInvy6lJ9iJemIGxrQ+3SFlu9lOA2Lk4AHU26q0YSttcWxS0J5QV7vfHh5QDwdYunfTzCWwZper9UeuvzUA3LkKg07nzsQ1UZQoFJTAgB/lC7IbF7RoMfy+lcxFDaWiDetdfkGmqCTJkRG2eyN8pJqJkzksQ==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=lists.xenproject.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)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=H4Rpw5pncYCvunyAOoAL6/OC9jz6oJupOd8JCuf5T4E=;
 b=Fa15+bRtwPEWot8SjQPUF7H3Gd7+2fqtchnHDEL1IkH2EY/SB36i/GCGu6cALdG4vxQsdEPNSSXFATP8FRgg6EPHWcQdtNdGwiLr7rmhPZyyGtaTIS0ilbdO+WUje2HnOb5G1a9925pUV9mj0OsyMK9dHeRfAs2AgKLRligtHu4=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=SATLEXMB03.amd.com; pr=C
From: Michal Orzel <michal.orzel@amd.com>
To: <xen-devel@lists.xenproject.org>
CC: <sstabellini@kernel.org>, Michal Orzel <michal.orzel@amd.com>
Subject: [ImageBuilder][PATCH] Fix Xen boot-time cpupools handling
Date: Fri, 26 Jan 2024 13:51:28 +0100
Message-ID: <20240126125128.18275-1-michal.orzel@amd.com>
X-Mailer: git-send-email 2.25.1
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: SJ1PEPF00001CE3:EE_|CY8PR12MB8315:EE_
X-MS-Office365-Filtering-Correlation-Id: 283e9640-ff5e-4a65-ad68-08dc1e6d8b53
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam: BCL:0;
X-Microsoft-Antispam-Message-Info:
	GI073R6Y/THkuPgsUTrkRZ0Mvu0847ByEq6tyb1xyvvH9ohp9IzzfqyvIPvNFgnHM/J5JmA6StselLy+0WdYHFGf1eU3Bsti2zTe/ViHw8VRZab6WnZ3BHjTM1VZUa5VCAxNIV9MvABe0rEBfIZShDUnUuaaggVCrqPGG+1ElVLotRNLHOcuWNz+ddnHg7OQiuGz3hYkYh8wUPLAib58xQCqLIJwTef/8pkVCCU6TEWhGt/z5v5YhqbadSh92IkEfrJ3BkBkY7UI7wKFEy7mpnFh8l/8jbVt71Sv13g6bh1NxKznDWUyOaK80yfHIdu4RdyGXyurzHDICpxB/BVvfTUI36JCad874j0uRBIprc4jxMdDeVn/1MUU+bGeBwUH+2OzguGz8NypdvNjlWknfeM8nTyiVOnAXaPNLuIlIIYx3TmJ2NZGbObSR2q7ZhIWdgfNbAQlrXPzc3vFU4Bt7tT0B8E6sJDNjNrDV+VshhKRccfYSfuZjxz8PMl+GJ86aWfQZOZoKPHBorXxxTpqbuPpKW+boI2wz543JRAON9ZWf+ph80FKfZA3I1MTVgxi7FUxyPWa/W6AIJv5jtvG5bP/9IDScavhsdMU3S2Ue56jHl5WnKyFwiFoJtSzKfHymAbPOLfKehWXUDKTqRxkrRG6bILlrjxwRJItZg/crtM0QEfAdzuh6ZlSR9sEP6aq5ISuhB0ljBIbWf6d7yIDhYPYmWIL2/KxSR+U93p4sQbF6K2K78xHBzRvWt7UrRro+yXt5dxpVKXOqgLXBIlmFQ==
X-Forefront-Antispam-Report:
	CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB03.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230031)(4636009)(396003)(346002)(39860400002)(376002)(136003)(230922051799003)(451199024)(186009)(82310400011)(1800799012)(64100799003)(46966006)(40470700004)(36840700001)(40460700003)(40480700001)(83380400001)(41300700001)(86362001)(36756003)(81166007)(36860700001)(8936002)(26005)(2616005)(47076005)(1076003)(426003)(336012)(356005)(2906002)(6666004)(6916009)(70206006)(70586007)(316002)(54906003)(8676002)(5660300002)(4326008)(44832011)(82740400003)(478600001)(36900700001);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Jan 2024 12:51:41.6146
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 283e9640-ff5e-4a65-ad68-08dc1e6d8b53
X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB03.amd.com]
X-MS-Exchange-CrossTenant-AuthSource:
	SJ1PEPF00001CE3.namprd05.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY8PR12MB8315

When retrieving a phandle for a CPU node using "fdtget -t x", the
resulting hex number (in case the phandle exists) lacks the '0x' prefix.
This value is subsequently used to construct the cpupool-cpus property.
This results in an incorrect property generation that leads to Xen
failure (example: cpupool-cpus < a> instead of < 0xa>). Address the
issue by adding 0x prefix to the result from fdtget.

Additionally, avoid unnecessary regeneration of the phandle if it already
exists.

Fixes: b687773b5046 ("Add support for Xen boot-time cpupools")
Signed-off-by: Michal Orzel <michal.orzel@amd.com>
---
This only worked if phandle did not exist or if its value did not contain a-f
and was regenerated anyway.
---
 scripts/uboot-script-gen | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/scripts/uboot-script-gen b/scripts/uboot-script-gen
index 078a667c61ab..3cc6b47c7c62 100755
--- a/scripts/uboot-script-gen
+++ b/scripts/uboot-script-gen
@@ -262,12 +262,12 @@ function add_device_tree_cpupools()
             fi
 
             # set phandle for a cpu if there is none
-            if ! phandle=$(fdtget -t x "${DEVICE_TREE}" "$cpu" "phandle" 2> /dev/null)
+            if ! phandle="0x$(fdtget -t x "${DEVICE_TREE}" "$cpu" "phandle" 2> /dev/null)"
             then
                 get_next_phandle phandle
+                dt_set "$cpu" "phandle" "hex" "$phandle"
             fi
 
-            dt_set "$cpu" "phandle" "hex" "$phandle"
             cpu_phandles="$cpu_phandles $phandle"
             cpu_list="$cpu_list $cpu"
         done
-- 
2.25.1



From xen-devel-bounces@lists.xenproject.org Fri Jan 26 13:20:28 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 26 Jan 2024 13:20:28 +0000
Received: from list by lists.xenproject.org with outflank-mailman.671996.1045559 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTM7y-0000nB-P2; Fri, 26 Jan 2024 13:20:14 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 671996.1045559; Fri, 26 Jan 2024 13:20:14 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTM7y-0000n4-MH; Fri, 26 Jan 2024 13:20:14 +0000
Received: by outflank-mailman (input) for mailman id 671996;
 Fri, 26 Jan 2024 13:20:14 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>) id 1rTM7y-0000my-1N
 for xen-devel@lists.xenproject.org; Fri, 26 Jan 2024 13:20:14 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rTM7w-0003uo-H7; Fri, 26 Jan 2024 13:20:12 +0000
Received: from gw1.octic.net ([88.97.20.152] helo=[10.0.1.240])
 by xenbits.xenproject.org with esmtpsa
 (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rTM7w-0002mS-As; Fri, 26 Jan 2024 13:20:12 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
	s=20200302mail; h=Content-Transfer-Encoding:Content-Type:In-Reply-To:From:
	References:Cc:To:Subject:MIME-Version:Date:Message-ID;
	bh=k6Zp/TbJ6YZu+V+7zyVKiSnVBNNyPLoQTNRy01tSTGI=; b=d0fvQLCHciLe4JSkYdacuipKx+
	380ArrhLtWimKJ98f7MMd/7XhuC5/R9wVGckVc97gZoE3YiKTfC/k2O9C5n23UmSGNjjL9Z00+CLW
	qpsptggTXRx/FeTJR9qujRTtTi1VNFcH/4mKIRmgQiLcaMCla4kl7b6TxzAon8rrsQWc=;
Message-ID: <f8602dc5-e603-42fc-b3a2-dc71c55db341@xen.org>
Date: Fri, 26 Jan 2024 13:20:10 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] xen/lib: introduce generic find next bit operations
Content-Language: en-GB
To: Oleksii Kurochko <oleksii.kurochko@gmail.com>,
 xen-devel@lists.xenproject.org
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 George Dunlap <george.dunlap@citrix.com>, Jan Beulich <jbeulich@suse.com>,
 Stefano Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>,
 Bertrand Marquis <bertrand.marquis@arm.com>,
 Michal Orzel <michal.orzel@amd.com>,
 Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
 Shawn Anastasio <sanastasio@raptorengineering.com>
References: <52730e6314210ba4164a9934a720c4fda201447b.1706266854.git.oleksii.kurochko@gmail.com>
From: Julien Grall <julien@xen.org>
In-Reply-To: <52730e6314210ba4164a9934a720c4fda201447b.1706266854.git.oleksii.kurochko@gmail.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

Hi,

On 26/01/2024 12:20, Oleksii Kurochko wrote:
> find-next-bit.c is common for Arm64, PPC and RISCV64,
> so it is moved to xen/lib.
> 
> Suggested-by: Jan Beulich <jbeulich@suse.com>
> Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>
> ---
>   docs/misra/exclude-list.json                  |   4 -
>   xen/arch/arm/arm64/lib/Makefile               |   2 +-
>   xen/arch/arm/include/asm/arm64/bitops.h       |  48 --------
>   xen/arch/ppc/include/asm/bitops.h             | 115 ------------------
>   xen/include/xen/bitops.h                      |  48 ++++++++
>   xen/lib/Makefile                              |   1 +
>   .../find_next_bit.c => lib/find-next-bit.c}   |   0
>   7 files changed, 50 insertions(+), 168 deletions(-)
>   rename xen/{arch/arm/arm64/lib/find_next_bit.c => lib/find-next-bit.c} (100%)
> 
> diff --git a/docs/misra/exclude-list.json b/docs/misra/exclude-list.json
> index 7971d0e70f..7fe02b059d 100644
> --- a/docs/misra/exclude-list.json
> +++ b/docs/misra/exclude-list.json
> @@ -13,10 +13,6 @@
>               "rel_path": "arch/arm/arm64/insn.c",
>               "comment": "Imported on Linux, ignore for now"
>           },
> -        {
> -            "rel_path": "arch/arm/arm64/lib/find_next_bit.c",

Rather than removing the section, I was expecting the rel_path to be 
updated. Can you explain why you think the exclusion is not necessary?

> -            "comment": "Imported from Linux, ignore for now"
> -        },
>           {
>               "rel_path": "arch/x86/acpi/boot.c",
>               "comment": "Imported from Linux, ignore for now"
> diff --git a/xen/arch/arm/arm64/lib/Makefile b/xen/arch/arm/arm64/lib/Makefile
> index 1b9c7a95e6..66cfac435a 100644
> --- a/xen/arch/arm/arm64/lib/Makefile
> +++ b/xen/arch/arm/arm64/lib/Makefile
> @@ -1,4 +1,4 @@
>   obj-y += memcpy.o memcmp.o memmove.o memset.o memchr.o
>   obj-y += clear_page.o
> -obj-y += bitops.o find_next_bit.o
> +obj-y += bitops.o
>   obj-y += strchr.o strcmp.o strlen.o strncmp.o strnlen.o strrchr.o
> diff --git a/xen/arch/arm/include/asm/arm64/bitops.h b/xen/arch/arm/include/asm/arm64/bitops.h
> index d85a49bca4..f9dd066237 100644
> --- a/xen/arch/arm/include/asm/arm64/bitops.h
> +++ b/xen/arch/arm/include/asm/arm64/bitops.h
> @@ -36,57 +36,9 @@ static inline int flsl(unsigned long x)
>   
>   /* Based on linux/include/asm-generic/bitops/find.h */
>   
> -#ifndef find_next_bit
> -/**
> - * find_next_bit - find the next set bit in a memory region
> - * @addr: The address to base the search on
> - * @offset: The bitnumber to start searching at
> - * @size: The bitmap size in bits
> - */
> -extern unsigned long find_next_bit(const unsigned long *addr, unsigned long
> -		size, unsigned long offset);
> -#endif
> -
> -#ifndef find_next_zero_bit
> -/**
> - * find_next_zero_bit - find the next cleared bit in a memory region
> - * @addr: The address to base the search on
> - * @offset: The bitnumber to start searching at
> - * @size: The bitmap size in bits
> - */
> -extern unsigned long find_next_zero_bit(const unsigned long *addr, unsigned
> -		long size, unsigned long offset);
> -#endif
> -
> -#ifdef CONFIG_GENERIC_FIND_FIRST_BIT
> -
> -/**
> - * find_first_bit - find the first set bit in a memory region
> - * @addr: The address to start the search at
> - * @size: The maximum size to search
> - *
> - * Returns the bit number of the first set bit.
> - */
> -extern unsigned long find_first_bit(const unsigned long *addr,
> -				    unsigned long size);
> -
> -/**
> - * find_first_zero_bit - find the first cleared bit in a memory region
> - * @addr: The address to start the search at
> - * @size: The maximum size to search
> - *
> - * Returns the bit number of the first cleared bit.
> - */
> -extern unsigned long find_first_zero_bit(const unsigned long *addr,
> -					 unsigned long size);
> -#else /* CONFIG_GENERIC_FIND_FIRST_BIT */
> -
>   #define find_first_bit(addr, size) find_next_bit((addr), (size), 0)
>   #define find_first_zero_bit(addr, size) find_next_zero_bit((addr), (size), 0)
>   
> -#endif /* CONFIG_GENERIC_FIND_FIRST_BIT */

AFAICT, you are changing the behavior for Arm64 without explaining why. 
Before, it was possible to set CONFIG_GENERIC_FIND_FIRST_BIT so the 
generic version of find_first_*_bit are used. This is not possible 
anymore with your change.

Looking at Linux, I see that arm64 is now selecting 
GENERIC_FIND_FIRST_BIT (see [1]). So I would argue, we should not define 
find_first_bit(). That said, that's probably a separate patch.

For now, you want to explain why GENERIC_FIND_FIRST_BIT is dropped.

Cheers,

[1] 
https://lore.kernel.org/linux-arch/20210225135700.1381396-1-yury.norov@gmail.com/

-- 
Julien Grall


From xen-devel-bounces@lists.xenproject.org Fri Jan 26 13:34:28 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 26 Jan 2024 13:34:28 +0000
Received: from list by lists.xenproject.org with outflank-mailman.672001.1045570 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTMLf-0002tb-03; Fri, 26 Jan 2024 13:34:23 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 672001.1045570; Fri, 26 Jan 2024 13:34:22 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTMLe-0002tU-Sg; Fri, 26 Jan 2024 13:34:22 +0000
Received: by outflank-mailman (input) for mailman id 672001;
 Fri, 26 Jan 2024 13:34:21 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rTMLd-0002tK-Ca; Fri, 26 Jan 2024 13:34:21 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rTMLd-0004Ic-05; Fri, 26 Jan 2024 13:34:21 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rTMLc-0000Jj-Iv; Fri, 26 Jan 2024 13:34:20 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rTMLc-0004qP-IS; Fri, 26 Jan 2024 13:34:20 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=Tuqqdxw0XXNpEL/LIrLti0Txs07I0APBJB0mzLctBDU=; b=rjZSeayuNFHVEoXdXrd/uUupxo
	B4ZCTpucrJWx42JhEy6P/GKXM0TN+UxXLPl7vs5wKfqFt1uhMxFyD4zXCN+RsUV4DVso+oIRQ86WN
	xvZgyvjpAf/VzQGM9ti4XosFwL1oUOVShPVs4ISnTYOqiv6wYp41XutXSQwZCWeJwUk8=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184469-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [linux-5.4 test] 184469: regressions - FAIL
X-Osstest-Failures:
    linux-5.4:test-armhf-armhf-xl-credit1:guest-start/debian.repeat:fail:regression
    linux-5.4:test-armhf-armhf-libvirt-qcow2:guest-start/debian.repeat:fail:heisenbug
    linux-5.4:test-armhf-armhf-xl-rtds:guest-start:fail:allowable
    linux-5.4:test-armhf-armhf-libvirt:saverestore-support-check:fail:nonblocking
    linux-5.4:test-amd64-amd64-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    linux-5.4:test-amd64-i386-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    linux-5.4:test-amd64-i386-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    linux-5.4:test-amd64-amd64-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-multivcpu:guest-start/debian.repeat:fail:nonblocking
    linux-5.4:test-amd64-amd64-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    linux-5.4:test-amd64-amd64-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    linux-5.4:test-amd64-i386-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    linux-5.4:test-arm64-arm64-libvirt-raw:guest-start/debian.repeat:fail:nonblocking
    linux-5.4:test-armhf-armhf-libvirt-qcow2:saverestore-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-credit2:guest-start/debian.repeat:fail:nonblocking
    linux-5.4:test-armhf-armhf-libvirt-raw:saverestore-support-check:fail:nonblocking
    linux-5.4:test-amd64-i386-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    linux-5.4:test-amd64-amd64-qemuu-nested-amd:debian-hvm-install/l1/l2:fail:nonblocking
    linux-5.4:test-amd64-i386-xl-pvshim:guest-start:fail:nonblocking
    linux-5.4:test-amd64-amd64-libvirt-xsm:migrate-support-check:fail:nonblocking
    linux-5.4:test-amd64-i386-libvirt-xsm:migrate-support-check:fail:nonblocking
    linux-5.4:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    linux-5.4:test-amd64-i386-libvirt:migrate-support-check:fail:nonblocking
    linux-5.4:test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    linux-5.4:test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-xsm:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-xsm:saverestore-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-libvirt-xsm:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-libvirt-xsm:saverestore-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-thunderx:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-thunderx:saverestore-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl:saverestore-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-credit1:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-credit1:saverestore-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-credit2:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-credit2:saverestore-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-multivcpu:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-multivcpu:saverestore-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-arndale:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-arndale:saverestore-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-credit1:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-credit1:saverestore-support-check:fail:nonblocking
    linux-5.4:test-amd64-amd64-libvirt-vhd:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-libvirt:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl:saverestore-support-check:fail:nonblocking
    linux-5.4:test-amd64-i386-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-libvirt-raw:saverestore-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-vhd:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-vhd:saverestore-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-vhd:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-vhd:saverestore-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-libvirt-qcow2:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-credit2:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-credit2:saverestore-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-libvirt-raw:migrate-support-check:fail:nonblocking
X-Osstest-Versions-This:
    linux=f0602893f43a54097fcf22bd8c2f7b8e75ca643e
X-Osstest-Versions-That:
    linux=9153fc9664959aa6bb35915b2bbd8fbc4c762962
From: osstest service owner <osstest-admin@xenproject.org>
Date: Fri, 26 Jan 2024 13:34:20 +0000

flight 184469 linux-5.4 real [real]
flight 184475 linux-5.4 real-retest [real]
http://logs.test-lab.xenproject.org/osstest/logs/184469/
http://logs.test-lab.xenproject.org/osstest/logs/184475/

Regressions :-(

Tests which did not succeed and are blocking,
including tests which could not be run:
 test-armhf-armhf-xl-credit1 18 guest-start/debian.repeat fail REGR. vs. 184381

Tests which are failing intermittently (not blocking):
 test-armhf-armhf-libvirt-qcow2 17 guest-start/debian.repeat fail pass in 184475-retest

Regressions which are regarded as allowable (not blocking):
 test-armhf-armhf-xl-rtds     14 guest-start              fail REGR. vs. 184381

Tests which did not succeed, but are not blocking:
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 184381
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 184381
 test-amd64-i386-xl-qemut-win7-amd64 19 guest-stop             fail like 184381
 test-amd64-i386-xl-qemuu-win7-amd64 19 guest-stop             fail like 184381
 test-amd64-amd64-xl-qemut-win7-amd64 19 guest-stop            fail like 184381
 test-armhf-armhf-xl-multivcpu 18 guest-start/debian.repeat    fail like 184381
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 184381
 test-amd64-amd64-xl-qemut-ws16-amd64 19 guest-stop            fail like 184381
 test-amd64-i386-xl-qemut-ws16-amd64 19 guest-stop             fail like 184381
 test-arm64-arm64-libvirt-raw 17 guest-start/debian.repeat    fail  like 184381
 test-armhf-armhf-libvirt-qcow2 15 saverestore-support-check   fail like 184381
 test-armhf-armhf-xl-credit2  18 guest-start/debian.repeat    fail  like 184381
 test-armhf-armhf-libvirt-raw 15 saverestore-support-check    fail  like 184381
 test-amd64-i386-xl-qemuu-ws16-amd64 19 guest-stop             fail like 184381
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 184381
 test-amd64-i386-xl-pvshim    14 guest-start                  fail   never pass
 test-amd64-amd64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-amd64-i386-libvirt-xsm  15 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt     15 migrate-support-check        fail   never pass
 test-amd64-i386-libvirt      15 migrate-support-check        fail   never pass
 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-arm64-arm64-xl-xsm      15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-xsm      16 saverestore-support-check    fail   never pass
 test-arm64-arm64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-xsm 16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-thunderx 15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-thunderx 16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl          15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl          16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-credit1  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit1  16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-credit2  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit2  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-multivcpu 15 migrate-support-check        fail  never pass
 test-armhf-armhf-xl-multivcpu 16 saverestore-support-check    fail  never pass
 test-armhf-armhf-xl-arndale  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-arndale  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-credit1  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit1  16 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-vhd 14 migrate-support-check        fail   never pass
 test-armhf-armhf-libvirt     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          16 saverestore-support-check    fail   never pass
 test-amd64-i386-libvirt-raw  14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 15 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-vhd      14 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-vhd      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-vhd      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-qcow2 14 migrate-support-check        fail never pass
 test-armhf-armhf-xl-credit2  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit2  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-raw 14 migrate-support-check        fail   never pass

version targeted for testing:
 linux                f0602893f43a54097fcf22bd8c2f7b8e75ca643e
baseline version:
 linux                9153fc9664959aa6bb35915b2bbd8fbc4c762962

Last test of basis   184381  2024-01-17 06:00:18 Z    9 days
Testing same since   184469  2024-01-25 22:43:10 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  "Christian A. Ehrhardt" <lk@c--e.de>
  Alex Deucher <alexander.deucher@amd.com>
  Alexander Gordeev <agordeev@linux.ibm.com>
  Alexei Starovoitov <ast@kernel.org>
  Amit Cohen <amcohen@nvidia.com>
  Andreas Gruenbacher <agruenba@redhat.com>
  Andrew Lunn <andrew@lunn.ch>
  Andrii Nakryiko <andrii@kernel.org>
  Anna Schumaker <Anna.Schumaker@Netapp.com>
  Arnaldo Carvalho de Melo <acme@redhat.com>
  Arnd Bergmann <arnd@arndb.de>
  Arseniy Krasnov <avkrasnov@salutedevices.com>
  Artem Chernyshev <artem.chernyshev@red-soft.ru>
  Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
  Benjamin Coddington <bcodding@redhat.com>
  Bhaskar Chowdhury <unixbhaskar@gmail.com>
  Bjorn Andersson <andersson@kernel.org>
  Borislav Petkov (AMD) <bp@alien8.de>
  Brian Norris <briannorris@chromium.org>
  Cameron Williams <cang1@live.co.uk>
  Carlos Llamas <cmllamas@google.com>
  Chao Yu <chao@kernel.org>
  Charles Keepax <ckeepax@opensource.cirrus.com>
  Chengming Zhou <zhouchengming@bytedance.com>
  Chih-Kang Chang <gary.chang@realtek.com>
  Christian A. Ehrhardt <lk@c--e.de>
  Christoph Hellwig <hch@lst.de>
  Christoph Niedermaier <cniedermaier@dh-electronics.com>
  Christophe JAILLET <christophe.jaillet@wanadoo.fr>
  Claudiu Beznea <claudiu.beznea.uj@bp.renesas.com>
  Colin Ian King <colin.i.king@gmail.com>
  Colin Ian King <colin.king@canonical.com>
  Curtis Klein <curtis.klein@hpe.com>
  Dan Carpenter <dan.carpenter@linaro.org>
  Daniel Thompson <daniel.thompson@linaro.org>
  Danilo Krummrich <dakr@redhat.com>
  Dario Binacchi <dario.binacchi@amarulasolutions.com>
  Dave Airlie <airlied@redhat.com>
  Dave Hansen <dave.hansen@linux.intel.com>
  David Lin <CTLIN0@nuvoton.com>
  David Lin <yu-hao.lin@nxp.com>
  David Rau <David.Rau.opensource@dm.renesas.com>
  David S. Miller <davem@davemloft.net>
  Dinghao Liu <dinghao.liu@zju.edu.cn>
  Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
  Dmitry Torokhov <dmitry.torokhov@gmail.com>
  Eric Biggers <ebiggers@google.com>
  Eric Dumazet <edumazet@google.com>
  Esther Shimanovich <eshimanovich@chromium.org>
  Fedor Pchelkin <pchelkin@ispras.ru>
  Florian Fainelli <florian.fainelli@broadcom.com>
  Florian Lehner <dev@der-flo.net>
  Florian Westphal <fw@strlen.de>
  Francesco Dolcini <francesco.dolcini@toradex.com>
  Gavrilov Ilia <Ilia.Gavrilov@infotecs.ru>
  Geert Uytterhoeven <geert+renesas@glider.be>
  Gonglei (Arei) <arei.gonglei@huawei.com>
  Gonglei <arei.gonglei@huawei.com>
  Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  Gregory CLEMENT <gregory.clement@bootlin.com>
  Guanghui Feng <guanghuifeng@linux.alibaba.com>
  Guenter Roeck <linux@roeck-us.net>
  Gui-Dong Han <2045gemini@gmail.com>
  Hangbin Liu <liuhangbin@gmail.com>
  Hans de Goede <hdegoede@redhat.com>
  Hans Verkuil <hverkuil-cisco@xs4all.nl>
  Harshit Mogalapalli <harshit.m.mogalapalli@oracle.com>
  Heikki Krogerus <heikki.krogerus@linux.intel.com>
  Heiko Carstens <hca@linux.ibm.com>
  Heiko Stuebner <heiko@sntech.de>
  Helge Deller <deller@gmx.de>
  Herbert Xu <herbert@gondor.apana.org.au>
  Ian Rogers <irogers@google.com>
  Ido Schimmel <idosch@nvidia.com>
  Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
  Inki Dae <inki.dae@samsung.com>
  Jaegeuk Kim <jaegeuk@kernel.org>
  Jakub Kicinski <kuba@kernel.org>
  James Clark <james.clark@arm.com>
  Jan Beulich <jbeulich@suse.com>
  Jani Nikula <jani.nikula@intel.com>
  Jason Gerecke <jason.gerecke@wacom.com>
  Jay Buddhabhatti <jay.buddhabhatti@amd.com>
  Jerry Hoemann <jerry.hoemann@hpe.com>
  Jiri Kosina <jkosina@suse.com>
  Jiri Olsa <jolsa@kernel.org>
  Jiri Olsa <jolsa@redhat.com>
  Joakim Zhang <joakim.zhang@cixtech.com>
  Joe Perches <joe@perches.com>
  John Johansen <john.johansen@canonical.com>
  Jon Hunter <jonathanh@nvidia.com>
  Judy Hsiao <judyhsiao@chromium.org>
  Julian Anastasov <ja@ssi.bg>
  Kalle Valo <kvalo@codeaurora.org>
  Kalle Valo <kvalo@kernel.org>
  Kamil Duljas <kamil.duljas@gmail.com>
  Kees Cook <keescook@chromium.org>
  Keith Busch <kbusch@kernel.org>
  kernelci.org bot <bot@kernelci.org>
  Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
  Konrad Dybcio <konrad.dybcio@linaro.org>
  Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
  Krzysztof Wilczyński <kwilczynski@kernel.org>
  Kunwu Chan <chentao@kylinos.cn>
  Laurent Dufour <ldufour@linux.ibm.com>
  Leon Romanovsky <leonro@nvidia.com>
  Li Jun <jun.li@nxp.com>
  Lin Ma <linma@zju.edu.cn>
  Linus Torvalds <torvalds@linux-foundation.org>
  Linus Walleij <linus.walleij@linaro.org>
  Linux Kernel Functional Testing <lkft@linaro.org>
  Luca Weiss <luca@z3ntu.xyz>
  Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
  Maciej Strozek <mstrozek@opensource.cirrus.com>
  Marek Szyprowski <m.szyprowski@samsung.com>
  Mark Brown <broonie@kernel.org>
  Martin K. Petersen <martin.petersen@oracle.com>
  Masahiro Yamada <masahiroy@kernel.org>
  Matthew Wilcox (Oracle) <willy@infradead.org>
  Maurizio Lombardi <mlombard@redhat.com>
  Mauro Carvalho Chehab <mchehab@kernel.org>
  Maxime Ripard <mripard@kernel.org>
  Michael Ellerman <mpe@ellerman.id.au>
  Michael S. Tsirkin <mst@redhat.com>
  Mickaël Salaün <mic@digikod.net>
  Mike Isely <isely@pobox.com>
  Mike Looijmans <mike.looijmans@topic.nl>
  Miquel Raynal <miquel.raynal@bootlin.com>
  Muhammad Usama Anjum <usama.anjum@collabora.com>
  Nam Cao <namcao@linutronix.de>
  Namhyung Kim <namhyung@kernel.org>
  Nathan Lynch <nathanl@linux.ibm.com>
  Nikita Kiryushin <kiryushin@ancud.ru>
  Nikita Yushchenko <nikita.yoush@cogentembedded.com>
  Nikita Zhandarovich <n.zhandarovich@fintech.ru>
  Niklas Schnelle <schnelle@linux.ibm.com>
  Nishanth Menon <nm@ti.com>
  Osama Muhammad <osmtendev@gmail.com>
  Ovidiu Panait <ovidiu.panait@windriver.com>
  Pablo Neira Ayuso <pablo@netfilter.org>
  Paolo Abeni <pabeni@redhat.com>
  Paolo Bonzini <pbonzini@redhat.com>
  Paul Moore <paul@paul-moore.com>
  Peter Chen <peter.chen@kernel.org>
  Peter Delevoryas <peter@pjd.dev>
  Peter Robinson <pbrobinson@gmail.com>
  Petr Machata <petrm@nvidia.com>
  Philipp Zabel <p.zabel@pengutronix.de>
  Ping Cheng <ping.cheng@wacom.com>
  Ping-Ke Shih <pkshih@realtek.com>
  Rafael Beims <rafael.beims@toradex.com> # Verdin iMX8MP/SD8997 SD
  Rafael J. Wysocki <rafael.j.wysocki@intel.com>
  Ram Muthiah <rammuthiah@google.com>
  Randy Dunlap <rdunlap@infradead.org>
  Ravi Gunasekaran <r-gunasekaran@ti.com>
  RD Babiera <rdbabiera@google.com>
  Ricardo B. Marliere <ricardo@marliere.net>
  Richard Weinberger <richard@nod.at>
  Rob Herring <robh@kernel.org>
  Rob Landley <rob@landley.net>
  Robert Foss <rfoss@kernel.org>
  Ronald Monthero <debug.penguin32@gmail.com>
  Sakari Ailus <sakari.ailus@linux.intel.com>
  Sasha Levin <sashal@kernel.org>
  Serge Semin <fancer.lancer@gmail.com>
  Sergey Shtylyov <s.shtylyov@omp.ru>
  Shuming Fan <shumingf@realtek.com>
  Siddharth Vadapalli <s-vadapalli@ti.com>
  Simon Horman <horms@kernel.org>
  Sjoerd Simons <sjoerd@collabora.com>
  Song Liu <song@kernel.org>
  Stefan Berger <stefanb@linux.ibm.com>
  Stefan Wahren <wahrenst@gmx.net>
  Stephen Boyd <sboyd@kernel.org>
  Steven Rostedt (Google) <rostedt@goodmis.org>
  Su Hui <suhui@nfschina.com>
  Sudip Mukherjee <sudipm.mukherjee@gmail.com>
  Suzuki K Poulose <suzuki.poulose@arm.com>
  Takashi Iwai <tiwai@suse.de>
  Tatsunosuke Tobita <tatsunosuke.tobita@wacom.com>
  Theodore Ts'o <tytso@mit.edu>
  Thinh Nguyen <Thinh.Nguyen@synopsys.com>
  Thinh Tran <thinhtr@linux.vnet.ibm.com>
  Thomas Bogendoerfer <tsbogend@alpha.franken.de>
  Thomas Gleixner <tglx@linutronix.de>
  Tiezhu Yang <yangtiezhu@loongson.cn>
  Tom Lendacky <thomas.lendacky@amd.com>
  Tomi Valkeinen <tomi.valkeinen@ideasonboard.com>
  Trond Myklebust <trond.myklebust@hammerspace.com>
  Ulf Hansson <ulf.hansson@linaro.org>
  Uttkarsh Aggarwal <quic_uaggarwa@quicinc.com>
  Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
  Vasiliy Kovalev <kovalev@altlinux.org>
  Venkata Sai Duggi <venkata.sai.duggi@ibm.com>
  Vineet Gupta <vgupta@kernel.org>
  Vineeth Vijayan <vneethv@linux.ibm.com>
  wangyangxin <wangyangxin1@huawei.com>
  Weihao Li <cn.liweihao@gmail.com>
  Wim Van Sebroeck <wim@linux-watchdog.org>
  Wolfram Sang <wsa+renesas@sang-engineering.com>
  Wolfram Sang <wsa@kernel.org>
  Xiang Chen <chenxiang66@hisilicon.com>
  Xiang Yang <xiangyang3@huawei.com>
  Xu Yang <xu.yang_2@nxp.com>
  Yang Yingliang <yangyingliang@huawei.com>
  Yihang Li <liyihang9@huawei.com>
  Zhang Yi <yi.zhang@huawei.com>
  ZhaoLong Wang <wangzhaolong1@huawei.com>
  Zheng Yejian <zhengyejian1@huawei.com>
  zhenwei pi <pizhenwei@bytedance.com>
  Zhipeng Lu <alexious@zju.edu.cn>
  Ziqi Zhao <astrajoan@yahoo.com>

jobs:
 build-amd64-xsm                                              pass    
 build-arm64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64                                                  pass    
 build-arm64                                                  pass    
 build-armhf                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-arm64-libvirt                                          pass    
 build-armhf-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-pvops                                            pass    
 build-arm64-pvops                                            pass    
 build-armhf-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-amd64-amd64-xl                                          pass    
 test-amd64-coresched-amd64-xl                                pass    
 test-arm64-arm64-xl                                          pass    
 test-armhf-armhf-xl                                          pass    
 test-amd64-i386-xl                                           pass    
 test-amd64-coresched-i386-xl                                 pass    
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm           pass    
 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm            pass    
 test-amd64-amd64-xl-qemut-stubdom-debianhvm-amd64-xsm        pass    
 test-amd64-i386-xl-qemut-stubdom-debianhvm-amd64-xsm         pass    
 test-amd64-amd64-xl-qemut-debianhvm-i386-xsm                 pass    
 test-amd64-i386-xl-qemut-debianhvm-i386-xsm                  pass    
 test-amd64-amd64-xl-qemuu-debianhvm-i386-xsm                 pass    
 test-amd64-i386-xl-qemuu-debianhvm-i386-xsm                  pass    
 test-amd64-amd64-libvirt-xsm                                 pass    
 test-arm64-arm64-libvirt-xsm                                 pass    
 test-amd64-i386-libvirt-xsm                                  pass    
 test-amd64-amd64-xl-xsm                                      pass    
 test-arm64-arm64-xl-xsm                                      pass    
 test-amd64-i386-xl-xsm                                       pass    
 test-amd64-amd64-qemuu-nested-amd                            fail    
 test-amd64-amd64-xl-pvhv2-amd                                pass    
 test-amd64-i386-qemut-rhel6hvm-amd                           pass    
 test-amd64-i386-qemuu-rhel6hvm-amd                           pass    
 test-amd64-amd64-dom0pvh-xl-amd                              pass    
 test-amd64-amd64-xl-qemut-debianhvm-amd64                    pass    
 test-amd64-i386-xl-qemut-debianhvm-amd64                     pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64                    pass    
 test-amd64-i386-xl-qemuu-debianhvm-amd64                     pass    
 test-amd64-i386-freebsd10-amd64                              pass    
 test-amd64-amd64-qemuu-freebsd11-amd64                       pass    
 test-amd64-amd64-qemuu-freebsd12-amd64                       pass    
 test-amd64-amd64-xl-qemuu-ovmf-amd64                         pass    
 test-amd64-i386-xl-qemuu-ovmf-amd64                          pass    
 test-amd64-amd64-xl-qemut-win7-amd64                         fail    
 test-amd64-i386-xl-qemut-win7-amd64                          fail    
 test-amd64-amd64-xl-qemuu-win7-amd64                         fail    
 test-amd64-i386-xl-qemuu-win7-amd64                          fail    
 test-amd64-amd64-xl-qemut-ws16-amd64                         fail    
 test-amd64-i386-xl-qemut-ws16-amd64                          fail    
 test-amd64-amd64-xl-qemuu-ws16-amd64                         fail    
 test-amd64-i386-xl-qemuu-ws16-amd64                          fail    
 test-armhf-armhf-xl-arndale                                  pass    
 test-amd64-amd64-examine-bios                                pass    
 test-amd64-i386-examine-bios                                 pass    
 test-amd64-amd64-xl-credit1                                  pass    
 test-arm64-arm64-xl-credit1                                  pass    
 test-armhf-armhf-xl-credit1                                  fail    
 test-amd64-amd64-xl-credit2                                  pass    
 test-arm64-arm64-xl-credit2                                  pass    
 test-armhf-armhf-xl-credit2                                  fail    
 test-amd64-amd64-xl-qemuu-dmrestrict-amd64-dmrestrict        pass    
 test-amd64-i386-xl-qemuu-dmrestrict-amd64-dmrestrict         pass    
 test-amd64-amd64-examine                                     pass    
 test-arm64-arm64-examine                                     pass    
 test-armhf-armhf-examine                                     pass    
 test-amd64-i386-examine                                      pass    
 test-amd64-i386-freebsd10-i386                               pass    
 test-amd64-amd64-qemuu-nested-intel                          pass    
 test-amd64-amd64-xl-pvhv2-intel                              pass    
 test-amd64-i386-qemut-rhel6hvm-intel                         pass    
 test-amd64-i386-qemuu-rhel6hvm-intel                         pass    
 test-amd64-amd64-dom0pvh-xl-intel                            pass    
 test-amd64-amd64-libvirt                                     pass    
 test-armhf-armhf-libvirt                                     pass    
 test-amd64-i386-libvirt                                      pass    
 test-amd64-amd64-xl-multivcpu                                pass    
 test-armhf-armhf-xl-multivcpu                                fail    
 test-amd64-amd64-pair                                        pass    
 test-amd64-i386-pair                                         pass    
 test-amd64-amd64-libvirt-pair                                pass    
 test-amd64-i386-libvirt-pair                                 pass    
 test-amd64-amd64-xl-pvshim                                   pass    
 test-amd64-i386-xl-pvshim                                    fail    
 test-amd64-amd64-pygrub                                      pass    
 test-armhf-armhf-libvirt-qcow2                               fail    
 test-amd64-amd64-xl-qcow2                                    pass    
 test-arm64-arm64-libvirt-raw                                 fail    
 test-armhf-armhf-libvirt-raw                                 pass    
 test-amd64-i386-libvirt-raw                                  pass    
 test-amd64-amd64-xl-rtds                                     pass    
 test-armhf-armhf-xl-rtds                                     fail    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64-shadow             pass    
 test-amd64-i386-xl-qemuu-debianhvm-amd64-shadow              pass    
 test-amd64-amd64-xl-shadow                                   pass    
 test-amd64-i386-xl-shadow                                    pass    
 test-arm64-arm64-xl-thunderx                                 pass    
 test-amd64-amd64-examine-uefi                                pass    
 test-amd64-i386-examine-uefi                                 pass    
 test-amd64-amd64-libvirt-vhd                                 pass    
 test-arm64-arm64-xl-vhd                                      pass    
 test-armhf-armhf-xl-vhd                                      pass    
 test-amd64-i386-xl-vhd                                       pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Not pushing.

(No revision log; it would be 5292 lines long.)


From xen-devel-bounces@lists.xenproject.org Fri Jan 26 13:46:17 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 26 Jan 2024 13:46:17 +0000
Received: from list by lists.xenproject.org with outflank-mailman.672009.1045580 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTMX4-0004uK-4e; Fri, 26 Jan 2024 13:46:10 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 672009.1045580; Fri, 26 Jan 2024 13:46:10 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTMX4-0004uD-1E; Fri, 26 Jan 2024 13:46:10 +0000
Received: by outflank-mailman (input) for mailman id 672009;
 Fri, 26 Jan 2024 13:46:08 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=UtOA=JE=redhat.com=thuth@srs-se1.protection.inumbo.net>)
 id 1rTMX2-0004u7-RQ
 for xen-devel@lists.xenproject.org; Fri, 26 Jan 2024 13:46:08 +0000
Received: from us-smtp-delivery-124.mimecast.com
 (us-smtp-delivery-124.mimecast.com [170.10.129.124])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 3eceb771-bc51-11ee-98f5-efadbce2ee36;
 Fri, 26 Jan 2024 14:46:04 +0100 (CET)
Received: from mail-qv1-f69.google.com (mail-qv1-f69.google.com
 [209.85.219.69]) by relay.mimecast.com with ESMTP with STARTTLS
 (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id
 us-mta-685-UHJ6FfAoNoq31H08sGPzNA-1; Fri, 26 Jan 2024 08:46:01 -0500
Received: by mail-qv1-f69.google.com with SMTP id
 6a1803df08f44-6800e52d47aso35662996d6.1
 for <xen-devel@lists.xenproject.org>; Fri, 26 Jan 2024 05:46:01 -0800 (PST)
Received: from [192.168.0.9] (ip-109-43-176-119.web.vodafone.de.
 [109.43.176.119]) by smtp.gmail.com with ESMTPSA id
 qo12-20020a056214590c00b0068181b61183sm528291qvb.31.2024.01.26.05.45.46
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Fri, 26 Jan 2024 05:45:59 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 3eceb771-bc51-11ee-98f5-efadbce2ee36
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
	s=mimecast20190719; t=1706276762;
	h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
	 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references:autocrypt:autocrypt;
	bh=gGKgT2BouFnH5blaH26ztR8G6CnT324T0Q33w49jIj8=;
	b=Djk4kW1fPMc+f3PUhrnc/IehAS2BTPyDKEESGcXghwAA/1wEvygdFVGzTZ5iRNJrXwUfK0
	YyY4GZpkfXBl7BFxwjM62DjrilWcCA3Lf4rs4qhBR+dS35frX4+bWrFaQ+Om2S4bI7TgBe
	5uqasL1oMMu75SZBDYqeX5iMZPyDCys=
X-MC-Unique: UHJ6FfAoNoq31H08sGPzNA-1
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706276760; x=1706881560;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=gGKgT2BouFnH5blaH26ztR8G6CnT324T0Q33w49jIj8=;
        b=Yvn6tXclspozjl4RdOY894o874qPKxDAdd5c1eju/jP81SMCcmY5ATDMndxZNfmskm
         plCcqvX6wgO9PdLj1aObANakzb4h36K4mLobvtlyIRZIsr0QDUBqDWWQgk0K876xIrFF
         fOqbI/Y4mLoHWyqFtQR+KN4e0d4XK9QM4lPv3KJma2P8ycegIAyqFxF91AmnlHDiiOiv
         HqOay3IsNnwPIt9/Iy9qsdfPmELH/LqsNtIwZqDecRw1ZlAqsc+mJ+3o5vEUyZCR1plq
         hlRSyg6zwSkrAFzEMKNo2tOt/76RUHlDKfYwaNJY9H2uBDE6fw9dC2IFlwGL/UlIORHP
         92Ag==
X-Gm-Message-State: AOJu0YwisA/GP4dYj2fpGQH0EUI4+CvwTaXCqJSLO2rG/k7GNdxJncgl
	LcdAv1ivCtEim11DaV7WWvreahPOacnRDvJo1UBNZQ79BSlOhDaALFvMOwTOwAKxAe4TWbRsccf
	IhShiYExRZ2ntfD8//cuFYt0hBntCt+1ySnT08Y5lWyU7cPX6YvLpaEBLv+vRzaGu
X-Received: by 2002:a0c:da88:0:b0:681:929e:28cd with SMTP id z8-20020a0cda88000000b00681929e28cdmr1377299qvj.19.1706276760654;
        Fri, 26 Jan 2024 05:46:00 -0800 (PST)
X-Google-Smtp-Source: AGHT+IEXKYlPOQk0ygMtmSNAnT+cgcujEGgjsco4aR9b7xYzMbYrF8XJ08TBjdWESprAFCfhBHUXeA==
X-Received: by 2002:a0c:da88:0:b0:681:929e:28cd with SMTP id z8-20020a0cda88000000b00681929e28cdmr1377232qvj.19.1706276760344;
        Fri, 26 Jan 2024 05:46:00 -0800 (PST)
Message-ID: <4ee5a881-4a23-4410-b6fd-b1124bce3dc5@redhat.com>
Date: Fri, 26 Jan 2024 14:45:44 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 05/46] hw/i386/pc: use qemu_get_nic_info() and
 pci_init_nic_devices()
To: David Woodhouse <dwmw2@infradead.org>, qemu-devel@nongnu.org
Cc: Richard Henderson <richard.henderson@linaro.org>,
 Beniamino Galvani <b.galvani@gmail.com>,
 Peter Maydell <peter.maydell@linaro.org>,
 Strahinja Jankovic <strahinja.p.jankovic@gmail.com>,
 Niek Linnenbank <nieklinnenbank@gmail.com>, =?UTF-8?Q?C=C3=A9dric_Le_Goater?=
 <clg@kaod.org>, Andrew Jeffery <andrew@codeconstruct.com.au>,
 Joel Stanley <joel@jms.id.au>, Igor Mitsyanko <i.mitsyanko@gmail.com>,
 Jean-Christophe Dubois <jcd@tribudubois.net>,
 Andrey Smirnov <andrew.smirnov@gmail.com>,
 =?UTF-8?Q?Philippe_Mathieu-Daud=C3=A9?= <philmd@linaro.org>,
 Rob Herring <robh@kernel.org>, Subbaraya Sundeep <sundeep.lkml@gmail.com>,
 Jan Kiszka <jan.kiszka@web.de>, Tyrone Ting <kfting@nuvoton.com>,
 Hao Wu <wuhaotsh@google.com>, Radoslaw Biernacki <rad@semihalf.com>,
 Leif Lindholm <quic_llindhol@quicinc.com>,
 Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org>,
 "Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
 Alistair Francis <alistair@alistair23.me>, Helge Deller <deller@gmx.de>,
 Paolo Bonzini <pbonzini@redhat.com>, Eduardo Habkost <eduardo@habkost.net>,
 "Michael S. Tsirkin" <mst@redhat.com>,
 Marcel Apfelbaum <marcel.apfelbaum@gmail.com>, Song Gao
 <gaosong@loongson.cn>, Thomas Huth <huth@tuxfamily.org>,
 Laurent Vivier <laurent@vivier.eu>, Huacai Chen <chenhuacai@kernel.org>,
 Jiaxun Yang <jiaxun.yang@flygoat.com>,
 =?UTF-8?Q?Herv=C3=A9_Poussineau?= <hpoussin@reactos.org>,
 Aleksandar Rikalo <aleksandar.rikalo@syrmia.com>,
 Aurelien Jarno <aurelien@aurel32.net>, Jason Wang <jasowang@redhat.com>,
 Jia Liu <proljc@gmail.com>, Stafford Horne <shorne@gmail.com>,
 Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>,
 Nicholas Piggin <npiggin@gmail.com>,
 Daniel Henrique Barboza <danielhb413@gmail.com>,
 David Gibson <david@gibson.dropbear.id.au>,
 Harsh Prateek Bora <harshpb@linux.ibm.com>, Bin Meng
 <bin.meng@windriver.com>, Palmer Dabbelt <palmer@dabbelt.com>,
 Weiwei Li <liwei1518@gmail.com>, Liu Zhiwei <zhiwei_liu@linux.alibaba.com>,
 Halil Pasic <pasic@linux.ibm.com>,
 Christian Borntraeger <borntraeger@linux.ibm.com>,
 Eric Farman <farman@linux.ibm.com>, David Hildenbrand <david@redhat.com>,
 Ilya Leoshkevich <iii@linux.ibm.com>,
 Yoshinori Sato <ysato@users.sourceforge.jp>,
 Magnus Damm <magnus.damm@gmail.com>, Artyom Tarasenko <atar4qemu@gmail.com>,
 Stefano Stabellini <sstabellini@kernel.org>,
 Anthony Perard <anthony.perard@citrix.com>, Paul Durrant <paul@xen.org>,
 Max Filippov <jcmvbkbc@gmail.com>, qemu-arm@nongnu.org, qemu-ppc@nongnu.org,
 qemu-riscv@nongnu.org, qemu-s390x@nongnu.org, xen-devel@lists.xenproject.org
References: <20240108204909.564514-1-dwmw2@infradead.org>
 <20240108204909.564514-6-dwmw2@infradead.org>
 <d6b0fd22-92ef-4873-a19a-e7752bfddd2d@redhat.com>
 <b618c5e3163a3407c413464edd5f638f1c8563fa.camel@infradead.org>
 <da5f845f-dfee-48de-9fc2-af27b83a615b@redhat.com>
 <983ce258a214a0cbe6aeaabab01daed47a2e1066.camel@infradead.org>
From: Thomas Huth <thuth@redhat.com>
Autocrypt: addr=thuth@redhat.com; keydata=
 xsFNBFH7eUwBEACzyOXKU+5Pcs6wNpKzrlJwzRl3VGZt95VCdb+FgoU9g11m7FWcOafrVRwU
 yYkTm9+7zBUc0sW5AuPGR/dp3pSLX/yFWsA/UB4nJsHqgDvDU7BImSeiTrnpMOTXb7Arw2a2
 4CflIyFqjCpfDM4MuTmzTjXq4Uov1giGE9X6viNo1pxyEpd7PanlKNnf4PqEQp06X4IgUacW
 tSGj6Gcns1bCuHV8OPWLkf4hkRnu8hdL6i60Yxz4E6TqlrpxsfYwLXgEeswPHOA6Mn4Cso9O
 0lewVYfFfsmokfAVMKWzOl1Sr0KGI5T9CpmRfAiSHpthhHWnECcJFwl72NTi6kUcUzG4se81
 O6n9d/kTj7pzTmBdfwuOZ0YUSqcqs0W+l1NcASSYZQaDoD3/SLk+nqVeCBB4OnYOGhgmIHNW
 0CwMRO/GK+20alxzk//V9GmIM2ACElbfF8+Uug3pqiHkVnKqM7W9/S1NH2qmxB6zMiJUHlTH
 gnVeZX0dgH27mzstcF786uPcdEqS0KJuxh2kk5IvUSL3Qn3ZgmgdxBMyCPciD/1cb7/Ahazr
 3ThHQXSHXkH/aDXdfLsKVuwDzHLVSkdSnZdt5HHh75/NFHxwaTlydgfHmFFwodK8y/TjyiGZ
 zg2Kje38xnz8zKn9iesFBCcONXS7txENTzX0z80WKBhK+XSFJwARAQABzR5UaG9tYXMgSHV0
 aCA8dGh1dGhAcmVkaGF0LmNvbT7CwXgEEwECACIFAlVgX6oCGwMGCwkIBwMCBhUIAgkKCwQW
 AgMBAh4BAheAAAoJEC7Z13T+cC21EbIP/ii9cvT2HHGbFRl8HqGT6+7Wkb+XLMqJBMAIGiQK
 QIP3xk1HPTsLfVG0ao4hy/oYkGNOP8+ubLnZen6Yq3zAFiMhQ44lvgigDYJo3Ve59gfe99KX
 EbtB+X95ODARkq0McR6OAsPNJ7gpEUzfkQUUJTXRDQXfG/FX303Gvk+YU0spm2tsIKPl6AmV
 1CegDljzjycyfJbk418MQmMu2T82kjrkEofUO2a24ed3VGC0/Uz//XCR2ZTo+vBoBUQl41BD
 eFFtoCSrzo3yPFS+w5fkH9NT8ChdpSlbNS32NhYQhJtr9zjWyFRf0Zk+T/1P7ECn6gTEkp5k
 ofFIA4MFBc/fXbaDRtBmPB0N9pqTFApIUI4vuFPPO0JDrII9dLwZ6lO9EKiwuVlvr1wwzsgq
 zJTPBU3qHaUO4d/8G+gD7AL/6T4zi8Jo/GmjBsnYaTzbm94lf0CjXjsOX3seMhaE6WAZOQQG
 tZHAO1kAPWpaxne+wtgMKthyPLNwelLf+xzGvrIKvLX6QuLoWMnWldu22z2ICVnLQChlR9d6
 WW8QFEpo/FK7omuS8KvvopFcOOdlbFMM8Y/8vBgVMSsK6fsYUhruny/PahprPbYGiNIhKqz7
 UvgyZVl4pBFjTaz/SbimTk210vIlkDyy1WuS8Zsn0htv4+jQPgo9rqFE4mipJjy/iboDzsFN
 BFH7eUwBEAC2nzfUeeI8dv0C4qrfCPze6NkryUflEut9WwHhfXCLjtvCjnoGqFelH/PE9NF4
 4VPSCdvD1SSmFVzu6T9qWdcwMSaC+e7G/z0/AhBfqTeosAF5XvKQlAb9ZPkdDr7YN0a1XDfa
 +NgA+JZB4ROyBZFFAwNHT+HCnyzy0v9Sh3BgJJwfpXHH2l3LfncvV8rgFv0bvdr70U+On2XH
 5bApOyW1WpIG5KPJlDdzcQTyptOJ1dnEHfwnABEfzI3dNf63rlxsGouX/NFRRRNqkdClQR3K
 gCwciaXfZ7ir7fF0u1N2UuLsWA8Ei1JrNypk+MRxhbvdQC4tyZCZ8mVDk+QOK6pyK2f4rMf/
 WmqxNTtAVmNuZIwnJdjRMMSs4W4w6N/bRvpqtykSqx7VXcgqtv6eqoDZrNuhGbekQA0sAnCJ
 VPArerAZGArm63o39me/bRUQeQVSxEBmg66yshF9HkcUPGVeC4B0TPwz+HFcVhheo6hoJjLq
 knFOPLRj+0h+ZL+D0GenyqD3CyuyeTT5dGcNU9qT74bdSr20k/CklvI7S9yoQje8BeQAHtdV
 cvO8XCLrpGuw9SgOS7OP5oI26a0548M4KldAY+kqX6XVphEw3/6U1KTf7WxW5zYLTtadjISB
 X9xsRWSU+Yqs3C7oN5TIPSoj9tXMoxZkCIHWvnqGwZ7JhwARAQABwsFfBBgBAgAJBQJR+3lM
 AhsMAAoJEC7Z13T+cC21hPAQAIsBL9MdGpdEpvXs9CYrBkd6tS9mbaSWj6XBDfA1AEdQkBOn
 ZH1Qt7HJesk+qNSnLv6+jP4VwqK5AFMrKJ6IjE7jqgzGxtcZnvSjeDGPF1h2CKZQPpTw890k
 fy18AvgFHkVk2Oylyexw3aOBsXg6ukN44vIFqPoc+YSU0+0QIdYJp/XFsgWxnFIMYwDpxSHS
 5fdDxUjsk3UBHZx+IhFjs2siVZi5wnHIqM7eK9abr2cK2weInTBwXwqVWjsXZ4tq5+jQrwDK
 cvxIcwXdUTLGxc4/Z/VRH1PZSvfQxdxMGmNTGaXVNfdFZjm4fz0mz+OUi6AHC4CZpwnsliGV
 ODqwX8Y1zic9viSTbKS01ZNp175POyWViUk9qisPZB7ypfSIVSEULrL347qY/hm9ahhqmn17
 Ng255syASv3ehvX7iwWDfzXbA0/TVaqwa1YIkec+/8miicV0zMP9siRcYQkyTqSzaTFBBmqD
 oiT+z+/E59qj/EKfyce3sbC9XLjXv3mHMrq1tKX4G7IJGnS989E/fg6crv6NHae9Ckm7+lSs
 IQu4bBP2GxiRQ+NV3iV/KU3ebMRzqIC//DCOxzQNFNJAKldPe/bKZMCxEqtVoRkuJtNdp/5a
 yXFZ6TfE1hGKrDBYAm4vrnZ4CXFSBDllL59cFFOJCkn4Xboj/aVxxJxF30bn
In-Reply-To: <983ce258a214a0cbe6aeaabab01daed47a2e1066.camel@infradead.org>
X-Mimecast-Spam-Score: 0
X-Mimecast-Originator: redhat.com
Content-Language: en-US
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit

On 26/01/2024 12.25, David Woodhouse wrote:
> On Fri, 2024-01-26 at 12:20 +0100, Thomas Huth wrote:
>> On 26/01/2024 12.13, David Woodhouse wrote:
>>> On Fri, 2024-01-26 at 11:43 +0100, Thomas Huth wrote:
>>>> On 08/01/2024 21.26, David Woodhouse wrote:
>>>>> From: David Woodhouse <dwmw@amazon.co.uk>
>>>>>
>>>>> Eliminate direct access to nd_table[] and nb_nics by processing the the
>>>>> Xen and ISA NICs first and then calling pci_init_nic_devices() for the
>>>>> rest.
>>>>>
>>>>> Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
>>>>> Reviewed-by: Paul Durrant <paul@xen.org>
>>>>> ---
>>>>>     hw/i386/pc.c                | 26 ++++++++++++++++----------
>>>>>     include/hw/net/ne2000-isa.h |  2 --
>>>>>     2 files changed, 16 insertions(+), 12 deletions(-)
>>>>>
>>>>> diff --git a/hw/i386/pc.c b/hw/i386/pc.c
>>>>> index 496498df3a..d80c536d88 100644
>>>>> --- a/hw/i386/pc.c
>>>>> +++ b/hw/i386/pc.c
>>>>> @@ -658,8 +658,11 @@ static void pc_init_ne2k_isa(ISABus *bus, NICInfo *nd)
>>>>>     {
>>>>>         static int nb_ne2k = 0;
>>>>>     
>>>>> -    if (nb_ne2k == NE2000_NB_MAX)
>>>>> +    if (nb_ne2k == NE2000_NB_MAX) {
>>>>> +        error_setg(&error_fatal,
>>>>> +                   "maximum number of ISA NE2000 devices exceeded");
>>>>>             return;
>>>>> +    }
>>>>
>>>> error_setg(&error_fatal, ...) quits QEMU, so the "return;" does not make
>>>> much sense anymore.
>>>> Now, according to include/qapi/error.h :
>>>>
>>>>     * Please don't error_setg(&error_fatal, ...), use error_report() and
>>>>     * exit(), because that's more obvious.
>>>>
>>>> So I'd suggest to do that instead.
>>>
>>> It's going slightly in the opposite direction to what's requested in
>>> https://lore.kernel.org/qemu-devel/34e2c0c6-4e04-486a-8e1f-4afdc461a5d4@linaro.org/
>>>
>>> I was thinking that a future patch would let the &error_fatal be an
>>> Error** passed in by the caller, and not actually hard-coded to be
>>> fatal at all.
>>>
>>> But sure, unless Philippe objects I'm happy to do it as you show above.
>>
>> Now that you mention it, I'd also prefer having an Error** parameter to the
>> function instead, that's certainly cleaner. So if you don't mind, please
>> follow Philippe's suggestion instead!
> 
> Right. There's a whole bunch of functions to untangle, that take an
> Error** but don't return success/failure independently as they should.
> Or don't even take the Error**.
> 
> Rather than trying to fix that as part of this series, this was my
> compromise — making it easy to switch that explicit &error_fatal out
> for a function parameter, but not trying to shave that part of the yak
> myself just yet.

I think the nicest compromise is to add the "Error **errp" to the 
pc_init_ne2k_isa() and change the caller to pass in &error_fatal there ... 
further clean-up (passing the error even up further in the stack) is out of 
scope of this series, indeed.

  Thomas



From xen-devel-bounces@lists.xenproject.org Fri Jan 26 13:54:21 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 26 Jan 2024 13:54:21 +0000
Received: from list by lists.xenproject.org with outflank-mailman.672014.1045592 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTMeu-0006tx-Ts; Fri, 26 Jan 2024 13:54:16 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 672014.1045592; Fri, 26 Jan 2024 13:54:16 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTMeu-0006tq-R5; Fri, 26 Jan 2024 13:54:16 +0000
Received: by outflank-mailman (input) for mailman id 672014;
 Fri, 26 Jan 2024 13:54:15 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=UtOA=JE=redhat.com=thuth@srs-se1.protection.inumbo.net>)
 id 1rTMet-0006tk-5S
 for xen-devel@lists.xenproject.org; Fri, 26 Jan 2024 13:54:15 +0000
Received: from us-smtp-delivery-124.mimecast.com
 (us-smtp-delivery-124.mimecast.com [170.10.129.124])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 6275e3b1-bc52-11ee-8a43-1f161083a0e0;
 Fri, 26 Jan 2024 14:54:13 +0100 (CET)
Received: from mail-oi1-f197.google.com (mail-oi1-f197.google.com
 [209.85.167.197]) by relay.mimecast.com with ESMTP with STARTTLS
 (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id
 us-mta-507-Pa9FZakQPQaZccDY9VWLdA-1; Fri, 26 Jan 2024 08:54:10 -0500
Received: by mail-oi1-f197.google.com with SMTP id
 5614622812f47-3bb87fc010fso970693b6e.0
 for <xen-devel@lists.xenproject.org>; Fri, 26 Jan 2024 05:54:10 -0800 (PST)
Received: from [192.168.0.9] (ip-109-43-176-119.web.vodafone.de.
 [109.43.176.119]) by smtp.gmail.com with ESMTPSA id
 ck14-20020a05622a230e00b00429c9bf789fsm536259qtb.42.2024.01.26.05.53.54
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Fri, 26 Jan 2024 05:54:08 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 6275e3b1-bc52-11ee-8a43-1f161083a0e0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
	s=mimecast20190719; t=1706277251;
	h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
	 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references:autocrypt:autocrypt;
	bh=9VRYilH8wo0GPEGOXIjrsT5q+mrKJOAq11IXLPYRxTw=;
	b=Vn6mM9aKxmJhtq95bUYO0wlqAXHVl+JBDJCPnAPwkpI1TVF6h6HbSGnYBtVbayvtY09LKi
	TNsj4CaZXbGzifoJ7xIPSsFajXKV/h15U4jnEsHoJRbVrqe30XmWCMsiqV1Xk/pFWheZ3B
	/sYHtkF3Doij/skecGaFyv13zMIz9XI=
X-MC-Unique: Pa9FZakQPQaZccDY9VWLdA-1
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706277249; x=1706882049;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=9VRYilH8wo0GPEGOXIjrsT5q+mrKJOAq11IXLPYRxTw=;
        b=YmnkXRhWShanXxx0ktlNDq5pjvx3+fmBRvuwaT0iS418TcaWyC16IIcTvRv7ndC5dR
         RwzhTen/SDiAx2YYvhHedhWNgFma6HCFqVSfCgiSeVcCx5lXt7LdqHgSM1JeMcdRH0oD
         i7R4YeBOMAYXGF9sXYyi4PmvlZAGvwlVDREmTnox7tgWrYj867o3Kc2uU9gtkhNMIlm2
         iYFudXo7nFSHTM0VZbKv/4x15uJd/dFYdfbdUkKJ4iBo180uzA36LIiSug9RbGPhy3Ak
         1FJ9mmi5chUd4bH6zKKXk7Yx4R6VDPJ8P7Aez+oAzd2rIityGRXlF22bniIsVDKuK8JL
         Erpg==
X-Gm-Message-State: AOJu0YysJEfVyyGa3ltpecbeG+JMsq5FfuJylauy2gWKzfMiigqA0pOI
	4Sxq3f/CeDYf1Ei0LNGM55NuU12sTYhp4lndkaSuMH2Ma/VzHQzbeK44ikOguZWSHi6SaUX5UkE
	oIntqNuI8y7evrqtrN8ua5wy0liklNkiPrHa1BHdvL9tmGSaxHgqcbWVbyvoLqw2E
X-Received: by 2002:a05:6808:1918:b0:3bd:a87a:bcbd with SMTP id bf24-20020a056808191800b003bda87abcbdmr1935226oib.39.1706277249662;
        Fri, 26 Jan 2024 05:54:09 -0800 (PST)
X-Google-Smtp-Source: AGHT+IEeQWYupQnuJXVRiBPK6Z06vZlZ5Pm+d2RphwsdO1902xUz6SyG+5CadZdnh/ITNfDEXMwkjw==
X-Received: by 2002:a05:6808:1918:b0:3bd:a87a:bcbd with SMTP id bf24-20020a056808191800b003bda87abcbdmr1935168oib.39.1706277249364;
        Fri, 26 Jan 2024 05:54:09 -0800 (PST)
Message-ID: <531b0005-7308-4274-b357-33b699adc1cc@redhat.com>
Date: Fri, 26 Jan 2024 14:53:52 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 12/46] hw/mips/fuloong2e: use pci_init_nic_devices()
To: David Woodhouse <dwmw2@infradead.org>, qemu-devel@nongnu.org,
 =?UTF-8?Q?Philippe_Mathieu-Daud=C3=A9?= <philmd@linaro.org>
Cc: Richard Henderson <richard.henderson@linaro.org>,
 Beniamino Galvani <b.galvani@gmail.com>,
 Peter Maydell <peter.maydell@linaro.org>,
 Strahinja Jankovic <strahinja.p.jankovic@gmail.com>,
 Niek Linnenbank <nieklinnenbank@gmail.com>, =?UTF-8?Q?C=C3=A9dric_Le_Goater?=
 <clg@kaod.org>, Andrew Jeffery <andrew@codeconstruct.com.au>,
 Joel Stanley <joel@jms.id.au>, Igor Mitsyanko <i.mitsyanko@gmail.com>,
 Jean-Christophe Dubois <jcd@tribudubois.net>,
 Andrey Smirnov <andrew.smirnov@gmail.com>, Rob Herring <robh@kernel.org>,
 Subbaraya Sundeep <sundeep.lkml@gmail.com>, Jan Kiszka <jan.kiszka@web.de>,
 Tyrone Ting <kfting@nuvoton.com>, Hao Wu <wuhaotsh@google.com>,
 Radoslaw Biernacki <rad@semihalf.com>,
 Leif Lindholm <quic_llindhol@quicinc.com>,
 Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org>,
 "Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
 Alistair Francis <alistair@alistair23.me>, Helge Deller <deller@gmx.de>,
 Paolo Bonzini <pbonzini@redhat.com>, Eduardo Habkost <eduardo@habkost.net>,
 "Michael S. Tsirkin" <mst@redhat.com>,
 Marcel Apfelbaum <marcel.apfelbaum@gmail.com>, Song Gao
 <gaosong@loongson.cn>, Thomas Huth <huth@tuxfamily.org>,
 Laurent Vivier <laurent@vivier.eu>, Huacai Chen <chenhuacai@kernel.org>,
 Jiaxun Yang <jiaxun.yang@flygoat.com>,
 =?UTF-8?Q?Herv=C3=A9_Poussineau?= <hpoussin@reactos.org>,
 Aleksandar Rikalo <aleksandar.rikalo@syrmia.com>,
 Aurelien Jarno <aurelien@aurel32.net>, Jason Wang <jasowang@redhat.com>,
 Jia Liu <proljc@gmail.com>, Stafford Horne <shorne@gmail.com>,
 Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>,
 Nicholas Piggin <npiggin@gmail.com>,
 Daniel Henrique Barboza <danielhb413@gmail.com>,
 David Gibson <david@gibson.dropbear.id.au>,
 Harsh Prateek Bora <harshpb@linux.ibm.com>, Bin Meng
 <bin.meng@windriver.com>, Palmer Dabbelt <palmer@dabbelt.com>,
 Weiwei Li <liwei1518@gmail.com>, Liu Zhiwei <zhiwei_liu@linux.alibaba.com>,
 Halil Pasic <pasic@linux.ibm.com>,
 Christian Borntraeger <borntraeger@linux.ibm.com>,
 Eric Farman <farman@linux.ibm.com>, David Hildenbrand <david@redhat.com>,
 Ilya Leoshkevich <iii@linux.ibm.com>,
 Yoshinori Sato <ysato@users.sourceforge.jp>,
 Magnus Damm <magnus.damm@gmail.com>, Artyom Tarasenko <atar4qemu@gmail.com>,
 Stefano Stabellini <sstabellini@kernel.org>,
 Anthony Perard <anthony.perard@citrix.com>, Paul Durrant <paul@xen.org>,
 Max Filippov <jcmvbkbc@gmail.com>, qemu-arm@nongnu.org, qemu-ppc@nongnu.org,
 qemu-riscv@nongnu.org, qemu-s390x@nongnu.org,
 xen-devel@lists.xenproject.org, David Woodhouse <dwmw@amazon.co.uk>
References: <20240108204909.564514-1-dwmw2@infradead.org>
 <20240108204909.564514-13-dwmw2@infradead.org>
From: Thomas Huth <thuth@redhat.com>
Autocrypt: addr=thuth@redhat.com; keydata=
 xsFNBFH7eUwBEACzyOXKU+5Pcs6wNpKzrlJwzRl3VGZt95VCdb+FgoU9g11m7FWcOafrVRwU
 yYkTm9+7zBUc0sW5AuPGR/dp3pSLX/yFWsA/UB4nJsHqgDvDU7BImSeiTrnpMOTXb7Arw2a2
 4CflIyFqjCpfDM4MuTmzTjXq4Uov1giGE9X6viNo1pxyEpd7PanlKNnf4PqEQp06X4IgUacW
 tSGj6Gcns1bCuHV8OPWLkf4hkRnu8hdL6i60Yxz4E6TqlrpxsfYwLXgEeswPHOA6Mn4Cso9O
 0lewVYfFfsmokfAVMKWzOl1Sr0KGI5T9CpmRfAiSHpthhHWnECcJFwl72NTi6kUcUzG4se81
 O6n9d/kTj7pzTmBdfwuOZ0YUSqcqs0W+l1NcASSYZQaDoD3/SLk+nqVeCBB4OnYOGhgmIHNW
 0CwMRO/GK+20alxzk//V9GmIM2ACElbfF8+Uug3pqiHkVnKqM7W9/S1NH2qmxB6zMiJUHlTH
 gnVeZX0dgH27mzstcF786uPcdEqS0KJuxh2kk5IvUSL3Qn3ZgmgdxBMyCPciD/1cb7/Ahazr
 3ThHQXSHXkH/aDXdfLsKVuwDzHLVSkdSnZdt5HHh75/NFHxwaTlydgfHmFFwodK8y/TjyiGZ
 zg2Kje38xnz8zKn9iesFBCcONXS7txENTzX0z80WKBhK+XSFJwARAQABzR5UaG9tYXMgSHV0
 aCA8dGh1dGhAcmVkaGF0LmNvbT7CwXgEEwECACIFAlVgX6oCGwMGCwkIBwMCBhUIAgkKCwQW
 AgMBAh4BAheAAAoJEC7Z13T+cC21EbIP/ii9cvT2HHGbFRl8HqGT6+7Wkb+XLMqJBMAIGiQK
 QIP3xk1HPTsLfVG0ao4hy/oYkGNOP8+ubLnZen6Yq3zAFiMhQ44lvgigDYJo3Ve59gfe99KX
 EbtB+X95ODARkq0McR6OAsPNJ7gpEUzfkQUUJTXRDQXfG/FX303Gvk+YU0spm2tsIKPl6AmV
 1CegDljzjycyfJbk418MQmMu2T82kjrkEofUO2a24ed3VGC0/Uz//XCR2ZTo+vBoBUQl41BD
 eFFtoCSrzo3yPFS+w5fkH9NT8ChdpSlbNS32NhYQhJtr9zjWyFRf0Zk+T/1P7ECn6gTEkp5k
 ofFIA4MFBc/fXbaDRtBmPB0N9pqTFApIUI4vuFPPO0JDrII9dLwZ6lO9EKiwuVlvr1wwzsgq
 zJTPBU3qHaUO4d/8G+gD7AL/6T4zi8Jo/GmjBsnYaTzbm94lf0CjXjsOX3seMhaE6WAZOQQG
 tZHAO1kAPWpaxne+wtgMKthyPLNwelLf+xzGvrIKvLX6QuLoWMnWldu22z2ICVnLQChlR9d6
 WW8QFEpo/FK7omuS8KvvopFcOOdlbFMM8Y/8vBgVMSsK6fsYUhruny/PahprPbYGiNIhKqz7
 UvgyZVl4pBFjTaz/SbimTk210vIlkDyy1WuS8Zsn0htv4+jQPgo9rqFE4mipJjy/iboDzsFN
 BFH7eUwBEAC2nzfUeeI8dv0C4qrfCPze6NkryUflEut9WwHhfXCLjtvCjnoGqFelH/PE9NF4
 4VPSCdvD1SSmFVzu6T9qWdcwMSaC+e7G/z0/AhBfqTeosAF5XvKQlAb9ZPkdDr7YN0a1XDfa
 +NgA+JZB4ROyBZFFAwNHT+HCnyzy0v9Sh3BgJJwfpXHH2l3LfncvV8rgFv0bvdr70U+On2XH
 5bApOyW1WpIG5KPJlDdzcQTyptOJ1dnEHfwnABEfzI3dNf63rlxsGouX/NFRRRNqkdClQR3K
 gCwciaXfZ7ir7fF0u1N2UuLsWA8Ei1JrNypk+MRxhbvdQC4tyZCZ8mVDk+QOK6pyK2f4rMf/
 WmqxNTtAVmNuZIwnJdjRMMSs4W4w6N/bRvpqtykSqx7VXcgqtv6eqoDZrNuhGbekQA0sAnCJ
 VPArerAZGArm63o39me/bRUQeQVSxEBmg66yshF9HkcUPGVeC4B0TPwz+HFcVhheo6hoJjLq
 knFOPLRj+0h+ZL+D0GenyqD3CyuyeTT5dGcNU9qT74bdSr20k/CklvI7S9yoQje8BeQAHtdV
 cvO8XCLrpGuw9SgOS7OP5oI26a0548M4KldAY+kqX6XVphEw3/6U1KTf7WxW5zYLTtadjISB
 X9xsRWSU+Yqs3C7oN5TIPSoj9tXMoxZkCIHWvnqGwZ7JhwARAQABwsFfBBgBAgAJBQJR+3lM
 AhsMAAoJEC7Z13T+cC21hPAQAIsBL9MdGpdEpvXs9CYrBkd6tS9mbaSWj6XBDfA1AEdQkBOn
 ZH1Qt7HJesk+qNSnLv6+jP4VwqK5AFMrKJ6IjE7jqgzGxtcZnvSjeDGPF1h2CKZQPpTw890k
 fy18AvgFHkVk2Oylyexw3aOBsXg6ukN44vIFqPoc+YSU0+0QIdYJp/XFsgWxnFIMYwDpxSHS
 5fdDxUjsk3UBHZx+IhFjs2siVZi5wnHIqM7eK9abr2cK2weInTBwXwqVWjsXZ4tq5+jQrwDK
 cvxIcwXdUTLGxc4/Z/VRH1PZSvfQxdxMGmNTGaXVNfdFZjm4fz0mz+OUi6AHC4CZpwnsliGV
 ODqwX8Y1zic9viSTbKS01ZNp175POyWViUk9qisPZB7ypfSIVSEULrL347qY/hm9ahhqmn17
 Ng255syASv3ehvX7iwWDfzXbA0/TVaqwa1YIkec+/8miicV0zMP9siRcYQkyTqSzaTFBBmqD
 oiT+z+/E59qj/EKfyce3sbC9XLjXv3mHMrq1tKX4G7IJGnS989E/fg6crv6NHae9Ckm7+lSs
 IQu4bBP2GxiRQ+NV3iV/KU3ebMRzqIC//DCOxzQNFNJAKldPe/bKZMCxEqtVoRkuJtNdp/5a
 yXFZ6TfE1hGKrDBYAm4vrnZ4CXFSBDllL59cFFOJCkn4Xboj/aVxxJxF30bn
In-Reply-To: <20240108204909.564514-13-dwmw2@infradead.org>
X-Mimecast-Spam-Score: 0
X-Mimecast-Originator: redhat.com
Content-Language: en-US
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

On 08/01/2024 21.26, David Woodhouse wrote:
> From: David Woodhouse <dwmw@amazon.co.uk>
> 
> The previous behaviour was: *if* the first NIC specified on the command
> line was an RTL8139 (or unspecified model) then it gets assigned to PCI
> slot 7, which is where the Fuloong board had an RTL8139. All other
> devices (including the first, if it was specified a anything other then
> an rtl8319) get dynamically assigned on the bus.
> 
> The new behaviour is subtly different: If the first NIC was given a
> specific model *other* than rtl8139, and a subsequent NIC was not,
> then the rtl8139 (or unspecified) NIC will go to slot 7 and the rest
> will be dynamically assigned.

Sounds fine for me ... Philippe, what do you think?

Reviewed-by: Thomas Huth <thuth@redhat.com>


> 
> Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
> ---
>   hw/mips/fuloong2e.c | 16 +++-------------
>   1 file changed, 3 insertions(+), 13 deletions(-)
> 
> diff --git a/hw/mips/fuloong2e.c b/hw/mips/fuloong2e.c
> index 97b2c8ed8e..a45aac368c 100644
> --- a/hw/mips/fuloong2e.c
> +++ b/hw/mips/fuloong2e.c
> @@ -201,19 +201,9 @@ static void main_cpu_reset(void *opaque)
>   /* Network support */
>   static void network_init(PCIBus *pci_bus)
>   {
> -    int i;
> -
> -    for (i = 0; i < nb_nics; i++) {
> -        NICInfo *nd = &nd_table[i];
> -        const char *default_devaddr = NULL;
> -
> -        if (i == 0 && (!nd->model || strcmp(nd->model, "rtl8139") == 0)) {
> -            /* The Fuloong board has a RTL8139 card using PCI SLOT 7 */
> -            default_devaddr = "07";
> -        }
> -
> -        pci_nic_init_nofail(nd, pci_bus, "rtl8139", default_devaddr);
> -    }
> +    /* The Fuloong board has a RTL8139 card using PCI SLOT 7 */
> +    pci_init_nic_in_slot(pci_bus, "rtl8139", NULL, "07");
> +    pci_init_nic_devices(pci_bus, "rtl8139");
>   }
>   
>   static void mips_fuloong2e_init(MachineState *machine)



From xen-devel-bounces@lists.xenproject.org Fri Jan 26 13:57:02 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 26 Jan 2024 13:57:02 +0000
Received: from list by lists.xenproject.org with outflank-mailman.672017.1045602 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTMhY-0007Re-Ao; Fri, 26 Jan 2024 13:57:00 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 672017.1045602; Fri, 26 Jan 2024 13:57:00 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTMhY-0007RX-7c; Fri, 26 Jan 2024 13:57:00 +0000
Received: by outflank-mailman (input) for mailman id 672017;
 Fri, 26 Jan 2024 13:56:58 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=bPDA=JE=casper.srs.infradead.org=BATV+7caeb094913322f6f00d+7460+infradead.org+dwmw2@srs-se1.protection.inumbo.net>)
 id 1rTMhW-0007RR-5M
 for xen-devel@lists.xenproject.org; Fri, 26 Jan 2024 13:56:58 +0000
Received: from casper.infradead.org (casper.infradead.org
 [2001:8b0:10b:1236::1])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id c4b0bf2a-bc52-11ee-8a43-1f161083a0e0;
 Fri, 26 Jan 2024 14:56:57 +0100 (CET)
Received: from [2001:8b0:10b:5:d160:e4ac:a057:38f5]
 (helo=u3832b3a9db3152.ant.amazon.com)
 by casper.infradead.org with esmtpsa (Exim 4.97.1 #2 (Red Hat Linux))
 id 1rTMgn-0000000DmMM-3q6F; Fri, 26 Jan 2024 13:56:16 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: c4b0bf2a-bc52-11ee-8a43-1f161083a0e0
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=infradead.org; s=casper.20170209; h=MIME-Version:Content-Type:References:
	In-Reply-To:Date:Cc:To:From:Subject:Message-ID:Sender:Reply-To:
	Content-Transfer-Encoding:Content-ID:Content-Description;
	bh=Z2yFcCYJztDwCied31JAlyPNCy23mwKvjfCORCc80vQ=; b=IshfsfFhzWPwQMvH5+hXNUlyYU
	ZWu7Hf7TadoTDsADYxh6FplbUPBZ3L2N+ukXAlRntRr/lVLjYH6+ChslEHZJYAoZeFczAuvt0OsAH
	Ijaifn1lWNDn2OdDt5GwzMUr8Zu6Qw1oCpLuUwIV17cXsp8thmSkrdTnCBBmcLGY6+F99k89OikJS
	5MdcqwyWtSE5HsrFjXhOuNo1ci2r/JvTiemNPXAO21CDl0R/qQ1c6CLlS4zrZ5TA7G/HFpsjgvBu5
	Qe9DofT7qe2pC2nsypFPW1ciWEtWpoA93ywMe4ZkwFgTijMKBAk8EWpmsbR/RigLaks7gpoEPcnda
	xLV7B/9w==;
Message-ID: <fb9a696f817ea1c1b471cf8eeaefec39d207f62f.camel@infradead.org>
Subject: Re: [PATCH v3 05/46] hw/i386/pc: use qemu_get_nic_info() and
 pci_init_nic_devices()
From: David Woodhouse <dwmw2@infradead.org>
To: Thomas Huth <thuth@redhat.com>, qemu-devel@nongnu.org
Cc: Richard Henderson <richard.henderson@linaro.org>, Beniamino Galvani
 <b.galvani@gmail.com>, Peter Maydell <peter.maydell@linaro.org>, Strahinja
 Jankovic <strahinja.p.jankovic@gmail.com>, Niek Linnenbank
 <nieklinnenbank@gmail.com>,  =?ISO-8859-1?Q?C=E9dric?= Le Goater
 <clg@kaod.org>, Andrew Jeffery <andrew@codeconstruct.com.au>, Joel Stanley
 <joel@jms.id.au>, Igor Mitsyanko <i.mitsyanko@gmail.com>, Jean-Christophe
 Dubois <jcd@tribudubois.net>, Andrey Smirnov <andrew.smirnov@gmail.com>,
 Philippe =?ISO-8859-1?Q?Mathieu-Daud=E9?= <philmd@linaro.org>, Rob Herring
 <robh@kernel.org>, Subbaraya Sundeep <sundeep.lkml@gmail.com>, Jan Kiszka
 <jan.kiszka@web.de>, Tyrone Ting <kfting@nuvoton.com>, Hao Wu
 <wuhaotsh@google.com>, Radoslaw Biernacki <rad@semihalf.com>, Leif Lindholm
 <quic_llindhol@quicinc.com>, Marcin Juszkiewicz
 <marcin.juszkiewicz@linaro.org>, "Edgar E. Iglesias"
 <edgar.iglesias@gmail.com>, Alistair Francis <alistair@alistair23.me>,
 Helge Deller <deller@gmx.de>, Paolo Bonzini <pbonzini@redhat.com>,  Eduardo
 Habkost <eduardo@habkost.net>, "Michael S. Tsirkin" <mst@redhat.com>,
 Marcel Apfelbaum <marcel.apfelbaum@gmail.com>, Song Gao
 <gaosong@loongson.cn>, Thomas Huth <huth@tuxfamily.org>, Laurent Vivier
 <laurent@vivier.eu>, Huacai Chen <chenhuacai@kernel.org>, Jiaxun Yang
 <jiaxun.yang@flygoat.com>,  =?ISO-8859-1?Q?Herv=E9?= Poussineau
 <hpoussin@reactos.org>, Aleksandar Rikalo <aleksandar.rikalo@syrmia.com>, 
 Aurelien Jarno <aurelien@aurel32.net>, Jason Wang <jasowang@redhat.com>,
 Jia Liu <proljc@gmail.com>, Stafford Horne <shorne@gmail.com>, Mark
 Cave-Ayland <mark.cave-ayland@ilande.co.uk>, Nicholas Piggin
 <npiggin@gmail.com>, Daniel Henrique Barboza <danielhb413@gmail.com>, David
 Gibson <david@gibson.dropbear.id.au>, Harsh Prateek Bora
 <harshpb@linux.ibm.com>, Bin Meng <bin.meng@windriver.com>, Palmer Dabbelt
 <palmer@dabbelt.com>, Weiwei Li <liwei1518@gmail.com>, Liu Zhiwei
 <zhiwei_liu@linux.alibaba.com>, Halil Pasic <pasic@linux.ibm.com>,
 Christian Borntraeger <borntraeger@linux.ibm.com>,  Eric Farman
 <farman@linux.ibm.com>, David Hildenbrand <david@redhat.com>, Ilya
 Leoshkevich <iii@linux.ibm.com>, Yoshinori Sato
 <ysato@users.sourceforge.jp>, Magnus Damm <magnus.damm@gmail.com>, Artyom
 Tarasenko <atar4qemu@gmail.com>, Stefano Stabellini
 <sstabellini@kernel.org>, Anthony Perard <anthony.perard@citrix.com>, Paul
 Durrant <paul@xen.org>, Max Filippov <jcmvbkbc@gmail.com>,
 qemu-arm@nongnu.org,  qemu-ppc@nongnu.org, qemu-riscv@nongnu.org,
 qemu-s390x@nongnu.org,  xen-devel@lists.xenproject.org
Date: Fri, 26 Jan 2024 13:56:13 +0000
In-Reply-To: <4ee5a881-4a23-4410-b6fd-b1124bce3dc5@redhat.com>
References: <20240108204909.564514-1-dwmw2@infradead.org>
	 <20240108204909.564514-6-dwmw2@infradead.org>
	 <d6b0fd22-92ef-4873-a19a-e7752bfddd2d@redhat.com>
	 <b618c5e3163a3407c413464edd5f638f1c8563fa.camel@infradead.org>
	 <da5f845f-dfee-48de-9fc2-af27b83a615b@redhat.com>
	 <983ce258a214a0cbe6aeaabab01daed47a2e1066.camel@infradead.org>
	 <4ee5a881-4a23-4410-b6fd-b1124bce3dc5@redhat.com>
Content-Type: multipart/signed; micalg="sha-256"; protocol="application/pkcs7-signature";
	boundary="=-/l5Rwkws2S6/fH4AficP"
User-Agent: Evolution 3.44.4-0ubuntu2 
MIME-Version: 1.0
X-SRS-Rewrite: SMTP reverse-path rewritten from <dwmw2@infradead.org> by casper.infradead.org. See http://www.infradead.org/rpr.html


--=-/l5Rwkws2S6/fH4AficP
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

On Fri, 2024-01-26 at 14:45 +0100, Thomas Huth wrote:
> I think the nicest compromise is to add the "Error **errp" to the=20
> pc_init_ne2k_isa() and change the caller to pass in &error_fatal there ..=
.=20
> further clean-up (passing the error even up further in the stack) is out =
of=20
> scope of this series, indeed.

Yep. That's what I've done in my tree at
https://git.infradead.org/users/dwmw2/qemu.git/commitdiff/ec5be4aaf6d2

I've fixed up the LASI NIC support, and I'm now looking into what you
said about nd->model (I don't think it matters, but I'm checking).

--=-/l5Rwkws2S6/fH4AficP
Content-Type: application/pkcs7-signature; name="smime.p7s"
Content-Disposition: attachment; filename="smime.p7s"
Content-Transfer-Encoding: base64

MIAGCSqGSIb3DQEHAqCAMIACAQExDzANBglghkgBZQMEAgEFADCABgkqhkiG9w0BBwEAAKCCEkQw
ggYQMIID+KADAgECAhBNlCwQ1DvglAnFgS06KwZPMA0GCSqGSIb3DQEBDAUAMIGIMQswCQYDVQQG
EwJVUzETMBEGA1UECBMKTmV3IEplcnNleTEUMBIGA1UEBxMLSmVyc2V5IENpdHkxHjAcBgNVBAoT
FVRoZSBVU0VSVFJVU1QgTmV0d29yazEuMCwGA1UEAxMlVVNFUlRydXN0IFJTQSBDZXJ0aWZpY2F0
aW9uIEF1dGhvcml0eTAeFw0xODExMDIwMDAwMDBaFw0zMDEyMzEyMzU5NTlaMIGWMQswCQYDVQQG
EwJHQjEbMBkGA1UECBMSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHEwdTYWxmb3JkMRgwFgYD
VQQKEw9TZWN0aWdvIExpbWl0ZWQxPjA8BgNVBAMTNVNlY3RpZ28gUlNBIENsaWVudCBBdXRoZW50
aWNhdGlvbiBhbmQgU2VjdXJlIEVtYWlsIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
AQEAyjztlApB/975Rrno1jvm2pK/KxBOqhq8gr2+JhwpKirSzZxQgT9tlC7zl6hn1fXjSo5MqXUf
ItMltrMaXqcESJuK8dtK56NCSrq4iDKaKq9NxOXFmqXX2zN8HHGjQ2b2Xv0v1L5Nk1MQPKA19xeW
QcpGEGFUUd0kN+oHox+L9aV1rjfNiCj3bJk6kJaOPabPi2503nn/ITX5e8WfPnGw4VuZ79Khj1YB
rf24k5Ee1sLTHsLtpiK9OjG4iQRBdq6Z/TlVx/hGAez5h36bBJMxqdHLpdwIUkTqT8se3ed0PewD
ch/8kHPo5fZl5u1B0ecpq/sDN/5sCG52Ds+QU5O5EwIDAQABo4IBZDCCAWAwHwYDVR0jBBgwFoAU
U3m/WqorSs9UgOHYm8Cd8rIDZsswHQYDVR0OBBYEFAnA8vwL2pTbX/4r36iZQs/J4K0AMA4GA1Ud
DwEB/wQEAwIBhjASBgNVHRMBAf8ECDAGAQH/AgEAMB0GA1UdJQQWMBQGCCsGAQUFBwMCBggrBgEF
BQcDBDARBgNVHSAECjAIMAYGBFUdIAAwUAYDVR0fBEkwRzBFoEOgQYY/aHR0cDovL2NybC51c2Vy
dHJ1c3QuY29tL1VTRVJUcnVzdFJTQUNlcnRpZmljYXRpb25BdXRob3JpdHkuY3JsMHYGCCsGAQUF
BwEBBGowaDA/BggrBgEFBQcwAoYzaHR0cDovL2NydC51c2VydHJ1c3QuY29tL1VTRVJUcnVzdFJT
QUFkZFRydXN0Q0EuY3J0MCUGCCsGAQUFBzABhhlodHRwOi8vb2NzcC51c2VydHJ1c3QuY29tMA0G
CSqGSIb3DQEBDAUAA4ICAQBBRHUAqznCFfXejpVtMnFojADdF9d6HBA4kMjjsb0XMZHztuOCtKF+
xswhh2GqkW5JQrM8zVlU+A2VP72Ky2nlRA1GwmIPgou74TZ/XTarHG8zdMSgaDrkVYzz1g3nIVO9
IHk96VwsacIvBF8JfqIs+8aWH2PfSUrNxP6Ys7U0sZYx4rXD6+cqFq/ZW5BUfClN/rhk2ddQXyn7
kkmka2RQb9d90nmNHdgKrwfQ49mQ2hWQNDkJJIXwKjYA6VUR/fZUFeCUisdDe/0ABLTI+jheXUV1
eoYV7lNwNBKpeHdNuO6Aacb533JlfeUHxvBz9OfYWUiXu09sMAviM11Q0DuMZ5760CdO2VnpsXP4
KxaYIhvqPqUMWqRdWyn7crItNkZeroXaecG03i3mM7dkiPaCkgocBg0EBYsbZDZ8bsG3a08LwEsL
1Ygz3SBsyECa0waq4hOf/Z85F2w2ZpXfP+w8q4ifwO90SGZZV+HR/Jh6rEaVPDRF/CEGVqR1hiuQ
OZ1YL5ezMTX0ZSLwrymUE0pwi/KDaiYB15uswgeIAcA6JzPFf9pLkAFFWs1QNyN++niFhsM47qod
x/PL+5jR87myx5uYdBEQkkDc+lKB1Wct6ucXqm2EmsaQ0M95QjTmy+rDWjkDYdw3Ms6mSWE3Bn7i
5ZgtwCLXgAIe5W8mybM2JzCCBhQwggT8oAMCAQICEQDGvhmWZ0DEAx0oURL6O6l+MA0GCSqGSIb3
DQEBCwUAMIGWMQswCQYDVQQGEwJHQjEbMBkGA1UECBMSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYD
VQQHEwdTYWxmb3JkMRgwFgYDVQQKEw9TZWN0aWdvIExpbWl0ZWQxPjA8BgNVBAMTNVNlY3RpZ28g
UlNBIENsaWVudCBBdXRoZW50aWNhdGlvbiBhbmQgU2VjdXJlIEVtYWlsIENBMB4XDTIyMDEwNzAw
MDAwMFoXDTI1MDEwNjIzNTk1OVowJDEiMCAGCSqGSIb3DQEJARYTZHdtdzJAaW5mcmFkZWFkLm9y
ZzCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBALQ3GpC2bomUqk+91wLYBzDMcCj5C9m6
oZaHwvmIdXftOgTbCJXADo6G9T7BBAebw2JV38EINgKpy/ZHh7htyAkWYVoFsFPrwHounto8xTsy
SSePMiPlmIdQ10BcVSXMUJ3Juu16GlWOnAMJY2oYfEzmE7uT9YgcBqKCo65pTFmOnR/VVbjJk4K2
xE34GC2nAdUQkPFuyaFisicc6HRMOYXPuF0DuwITEKnjxgNjP+qDrh0db7PAjO1D4d5ftfrsf+kd
RR4gKVGSk8Tz2WwvtLAroJM4nXjNPIBJNT4w/FWWc/5qPHJy2U+eITZ5LLE5s45mX2oPFknWqxBo
bQZ8a9dsZ3dSPZBvE9ZrmtFLrVrN4eo1jsXgAp1+p7bkfqd3BgBEmfsYWlBXO8rVXfvPgLs32VdV
NZxb/CDWPqBsiYv0Hv3HPsz07j5b+/cVoWqyHDKzkaVbxfq/7auNVRmPB3v5SWEsH8xi4Bez2V9U
KxfYCnqsjp8RaC2/khxKt0A552Eaxnz/4ly/2C7wkwTQnBmdlFYhAflWKQ03Ufiu8t3iBE3VJbc2
5oMrglj7TRZrmKq3CkbFnX0fyulB+kHimrt6PIWn7kgyl9aelIl6vtbhMA+l0nfrsORMa4kobqQ5
C5rveVgmcIad67EDa+UqEKy/GltUwlSh6xy+TrK1tzDvAgMBAAGjggHMMIIByDAfBgNVHSMEGDAW
gBQJwPL8C9qU21/+K9+omULPyeCtADAdBgNVHQ4EFgQUzMeDMcimo0oz8o1R1Nver3ZVpSkwDgYD
VR0PAQH/BAQDAgWgMAwGA1UdEwEB/wQCMAAwHQYDVR0lBBYwFAYIKwYBBQUHAwQGCCsGAQUFBwMC
MEAGA1UdIAQ5MDcwNQYMKwYBBAGyMQECAQEBMCUwIwYIKwYBBQUHAgEWF2h0dHBzOi8vc2VjdGln
by5jb20vQ1BTMFoGA1UdHwRTMFEwT6BNoEuGSWh0dHA6Ly9jcmwuc2VjdGlnby5jb20vU2VjdGln
b1JTQUNsaWVudEF1dGhlbnRpY2F0aW9uYW5kU2VjdXJlRW1haWxDQS5jcmwwgYoGCCsGAQUFBwEB
BH4wfDBVBggrBgEFBQcwAoZJaHR0cDovL2NydC5zZWN0aWdvLmNvbS9TZWN0aWdvUlNBQ2xpZW50
QXV0aGVudGljYXRpb25hbmRTZWN1cmVFbWFpbENBLmNydDAjBggrBgEFBQcwAYYXaHR0cDovL29j
c3Auc2VjdGlnby5jb20wHgYDVR0RBBcwFYETZHdtdzJAaW5mcmFkZWFkLm9yZzANBgkqhkiG9w0B
AQsFAAOCAQEAyW6MUir5dm495teKqAQjDJwuFCi35h4xgnQvQ/fzPXmtR9t54rpmI2TfyvcKgOXp
qa7BGXNFfh1JsqexVkIqZP9uWB2J+uVMD+XZEs/KYNNX2PvIlSPrzIB4Z2wyIGQpaPLlYflrrVFK
v9CjT2zdqvy2maK7HKOQRt3BiJbVG5lRiwbbygldcALEV9ChWFfgSXvrWDZspnU3Gjw/rMHrGnql
Htlyebp3pf3fSS9kzQ1FVtVIDrL6eqhTwJxe+pXSMMqFiN0whpBtXdyDjzBtQTaZJ7zTT/vlehc/
tDuqZwGHm/YJy883Ll+GP3NvOkgaRGWEuYWJJ6hFCkXYjyR9IzCCBhQwggT8oAMCAQICEQDGvhmW
Z0DEAx0oURL6O6l+MA0GCSqGSIb3DQEBCwUAMIGWMQswCQYDVQQGEwJHQjEbMBkGA1UECBMSR3Jl
YXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHEwdTYWxmb3JkMRgwFgYDVQQKEw9TZWN0aWdvIExpbWl0
ZWQxPjA8BgNVBAMTNVNlY3RpZ28gUlNBIENsaWVudCBBdXRoZW50aWNhdGlvbiBhbmQgU2VjdXJl
IEVtYWlsIENBMB4XDTIyMDEwNzAwMDAwMFoXDTI1MDEwNjIzNTk1OVowJDEiMCAGCSqGSIb3DQEJ
ARYTZHdtdzJAaW5mcmFkZWFkLm9yZzCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBALQ3
GpC2bomUqk+91wLYBzDMcCj5C9m6oZaHwvmIdXftOgTbCJXADo6G9T7BBAebw2JV38EINgKpy/ZH
h7htyAkWYVoFsFPrwHounto8xTsySSePMiPlmIdQ10BcVSXMUJ3Juu16GlWOnAMJY2oYfEzmE7uT
9YgcBqKCo65pTFmOnR/VVbjJk4K2xE34GC2nAdUQkPFuyaFisicc6HRMOYXPuF0DuwITEKnjxgNj
P+qDrh0db7PAjO1D4d5ftfrsf+kdRR4gKVGSk8Tz2WwvtLAroJM4nXjNPIBJNT4w/FWWc/5qPHJy
2U+eITZ5LLE5s45mX2oPFknWqxBobQZ8a9dsZ3dSPZBvE9ZrmtFLrVrN4eo1jsXgAp1+p7bkfqd3
BgBEmfsYWlBXO8rVXfvPgLs32VdVNZxb/CDWPqBsiYv0Hv3HPsz07j5b+/cVoWqyHDKzkaVbxfq/
7auNVRmPB3v5SWEsH8xi4Bez2V9UKxfYCnqsjp8RaC2/khxKt0A552Eaxnz/4ly/2C7wkwTQnBmd
lFYhAflWKQ03Ufiu8t3iBE3VJbc25oMrglj7TRZrmKq3CkbFnX0fyulB+kHimrt6PIWn7kgyl9ae
lIl6vtbhMA+l0nfrsORMa4kobqQ5C5rveVgmcIad67EDa+UqEKy/GltUwlSh6xy+TrK1tzDvAgMB
AAGjggHMMIIByDAfBgNVHSMEGDAWgBQJwPL8C9qU21/+K9+omULPyeCtADAdBgNVHQ4EFgQUzMeD
Mcimo0oz8o1R1Nver3ZVpSkwDgYDVR0PAQH/BAQDAgWgMAwGA1UdEwEB/wQCMAAwHQYDVR0lBBYw
FAYIKwYBBQUHAwQGCCsGAQUFBwMCMEAGA1UdIAQ5MDcwNQYMKwYBBAGyMQECAQEBMCUwIwYIKwYB
BQUHAgEWF2h0dHBzOi8vc2VjdGlnby5jb20vQ1BTMFoGA1UdHwRTMFEwT6BNoEuGSWh0dHA6Ly9j
cmwuc2VjdGlnby5jb20vU2VjdGlnb1JTQUNsaWVudEF1dGhlbnRpY2F0aW9uYW5kU2VjdXJlRW1h
aWxDQS5jcmwwgYoGCCsGAQUFBwEBBH4wfDBVBggrBgEFBQcwAoZJaHR0cDovL2NydC5zZWN0aWdv
LmNvbS9TZWN0aWdvUlNBQ2xpZW50QXV0aGVudGljYXRpb25hbmRTZWN1cmVFbWFpbENBLmNydDAj
BggrBgEFBQcwAYYXaHR0cDovL29jc3Auc2VjdGlnby5jb20wHgYDVR0RBBcwFYETZHdtdzJAaW5m
cmFkZWFkLm9yZzANBgkqhkiG9w0BAQsFAAOCAQEAyW6MUir5dm495teKqAQjDJwuFCi35h4xgnQv
Q/fzPXmtR9t54rpmI2TfyvcKgOXpqa7BGXNFfh1JsqexVkIqZP9uWB2J+uVMD+XZEs/KYNNX2PvI
lSPrzIB4Z2wyIGQpaPLlYflrrVFKv9CjT2zdqvy2maK7HKOQRt3BiJbVG5lRiwbbygldcALEV9Ch
WFfgSXvrWDZspnU3Gjw/rMHrGnqlHtlyebp3pf3fSS9kzQ1FVtVIDrL6eqhTwJxe+pXSMMqFiN0w
hpBtXdyDjzBtQTaZJ7zTT/vlehc/tDuqZwGHm/YJy883Ll+GP3NvOkgaRGWEuYWJJ6hFCkXYjyR9
IzGCBMcwggTDAgEBMIGsMIGWMQswCQYDVQQGEwJHQjEbMBkGA1UECBMSR3JlYXRlciBNYW5jaGVz
dGVyMRAwDgYDVQQHEwdTYWxmb3JkMRgwFgYDVQQKEw9TZWN0aWdvIExpbWl0ZWQxPjA8BgNVBAMT
NVNlY3RpZ28gUlNBIENsaWVudCBBdXRoZW50aWNhdGlvbiBhbmQgU2VjdXJlIEVtYWlsIENBAhEA
xr4ZlmdAxAMdKFES+jupfjANBglghkgBZQMEAgEFAKCCAeswGAYJKoZIhvcNAQkDMQsGCSqGSIb3
DQEHATAcBgkqhkiG9w0BCQUxDxcNMjQwMTI2MTM1NjEzWjAvBgkqhkiG9w0BCQQxIgQgI3XF0T9G
X96qGT6PogYxcMjic5K+925R9u49LJZdT/Ywgb0GCSsGAQQBgjcQBDGBrzCBrDCBljELMAkGA1UE
BhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEYMBYG
A1UEChMPU2VjdGlnbyBMaW1pdGVkMT4wPAYDVQQDEzVTZWN0aWdvIFJTQSBDbGllbnQgQXV0aGVu
dGljYXRpb24gYW5kIFNlY3VyZSBFbWFpbCBDQQIRAMa+GZZnQMQDHShREvo7qX4wgb8GCyqGSIb3
DQEJEAILMYGvoIGsMIGWMQswCQYDVQQGEwJHQjEbMBkGA1UECBMSR3JlYXRlciBNYW5jaGVzdGVy
MRAwDgYDVQQHEwdTYWxmb3JkMRgwFgYDVQQKEw9TZWN0aWdvIExpbWl0ZWQxPjA8BgNVBAMTNVNl
Y3RpZ28gUlNBIENsaWVudCBBdXRoZW50aWNhdGlvbiBhbmQgU2VjdXJlIEVtYWlsIENBAhEAxr4Z
lmdAxAMdKFES+jupfjANBgkqhkiG9w0BAQEFAASCAgADjOB6w/aq2U5WtZPkOHAvIGBdtZEWFvJP
Vg4N4c3IK3R8hLYXf9Kw/CBYeyJ0un6DsPeoqnreeUwxRqV9PF74oPgA48s9fJ2k4k8UV/lFCxz0
fZX2aA6abOUUMmU9TvoSzWo/gSwWcXlgw4kddR4VplIBkJgQL1nvjijHPXW1ZOFlwxoguTiXz/B3
YFIbZBVhAQo8YxYHdye3mtZ2xjPQKNFEeOw8ygBdyuXWDA3yCnqObFulUj+35y11eWYtoM+ZqY5P
bcXZZPfSNs1c5Ge3gi0MuuNjoWgBSkd6CRmcJFdqfYlv7woAWuLQWW6DOxi8wOPD8w2UcgU+yvRt
1Q4t58VUILJFCnz27gBUGl81oScy945ijyxt71pAW54B0Ia7RSN/Cm0K/+J8IJpZ1W0Ug1V7yJFy
8yNTTcumBFB9OSm7DZwx9Gb8Tgc9ChxG3bNgkgu/UrLRGSCEdIm+HEMFMUGHoP04HjajxVQxSLFm
5PDi1rmCgr2C1w5qav8Qjb+Bzpo0Kwyuz65KPIla7Rhc3e1E3NwMDx/bEpH+iEcDHPj6+8muKoRo
bVsfqNR87P3ETn0OYtuYfmCpYwSYtqymm9PW+D6DdoIp08oCQH+RLsiXv/V8/MYUDSRVEDvI0IkS
riOqdOQLPPlLFJi79sQtbQOhe3MktKTxofin6CLeTAAAAAAAAA==


--=-/l5Rwkws2S6/fH4AficP--


From xen-devel-bounces@lists.xenproject.org Fri Jan 26 13:57:51 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 26 Jan 2024 13:57:51 +0000
Received: from list by lists.xenproject.org with outflank-mailman.672020.1045612 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTMiM-0008Bj-OV; Fri, 26 Jan 2024 13:57:50 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 672020.1045612; Fri, 26 Jan 2024 13:57:50 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTMiM-0008Bc-Ly; Fri, 26 Jan 2024 13:57:50 +0000
Received: by outflank-mailman (input) for mailman id 672020;
 Fri, 26 Jan 2024 13:57:49 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=UtOA=JE=redhat.com=thuth@srs-se1.protection.inumbo.net>)
 id 1rTMiL-0008AH-Gg
 for xen-devel@lists.xenproject.org; Fri, 26 Jan 2024 13:57:49 +0000
Received: from us-smtp-delivery-124.mimecast.com
 (us-smtp-delivery-124.mimecast.com [170.10.133.124])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id e2f47acb-bc52-11ee-8a43-1f161083a0e0;
 Fri, 26 Jan 2024 14:57:48 +0100 (CET)
Received: from mail-qv1-f72.google.com (mail-qv1-f72.google.com
 [209.85.219.72]) by relay.mimecast.com with ESMTP with STARTTLS
 (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id
 us-mta-62-95RRimV7OUm4sRSmbOGkdA-1; Fri, 26 Jan 2024 08:57:46 -0500
Received: by mail-qv1-f72.google.com with SMTP id
 6a1803df08f44-68b382f111dso6335056d6.3
 for <xen-devel@lists.xenproject.org>; Fri, 26 Jan 2024 05:57:46 -0800 (PST)
Received: from [192.168.0.9] (ip-109-43-176-119.web.vodafone.de.
 [109.43.176.119]) by smtp.gmail.com with ESMTPSA id
 bt3-20020ad455c3000000b0068698b10ae6sm520455qvb.119.2024.01.26.05.57.30
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Fri, 26 Jan 2024 05:57:45 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: e2f47acb-bc52-11ee-8a43-1f161083a0e0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
	s=mimecast20190719; t=1706277467;
	h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
	 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references:autocrypt:autocrypt;
	bh=4f00KaOYW+hD0GFHAeduBNGn1fOJMEZkwWILKd+Ajqk=;
	b=Zsc/GggBMPGDdhGUQtXCWRCbrtSiL0H6+GTci6mbtmTQILy4AR1BT0rKikAFbB7s8M+3Jr
	ChmfdNQC3ZjiojUEkTRkOkanXude3xr7JlFctyWCHXdU3ybqODUMIg4gheUxUmlG7hNWOt
	syo1R/hygN+RlSzCYIWPGlBdAni79+A=
X-MC-Unique: 95RRimV7OUm4sRSmbOGkdA-1
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706277465; x=1706882265;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=4f00KaOYW+hD0GFHAeduBNGn1fOJMEZkwWILKd+Ajqk=;
        b=vq3nQshFAeJhKPC75zQbf5wW+GHIkSKO+5WugKN7w0to/KBz76frFYJWAivWWFyfPW
         vhcifOZDvfY+2L75vGl7NC9GJtOccyfcLQYQUeJdpFAHxGqb3QvypNYRrYkOEslZuA8y
         AokWLstuohuUNUmyddfjQ8Xm0tCn6gMYAiOAKfReduJFqxVAFWqqddfUWDKWDXmIIEf5
         p5O09XzaO4k4lfqBFAD8Ewbgmpg3AADl1HLSWFHYLVJVsOLhKDif5GTHD9GXY/B1edYj
         GUogYb32ZzLaBPAYEPZuaqfQ0gUjqyQy0RJ1viEoyrx1X/GjNmgRZB1pVgsw0PSscARq
         mhWA==
X-Gm-Message-State: AOJu0YzrcP3RtfT4MWQp6ButR9JwW+VB+ka32e//8b72tW+nf3XiERrZ
	Vx+6zRZbJSE/hZRqGTGS5PYegjlGxoweg6/8GOiVq6TyJ5HdUOvxaX1lIO3A/lVCn4PW3s5Ic6V
	WFxGeguj7RA8rEEk3dDB6NSi7tmZ5xJ8xammTrZ95ja41x25/UJ0hQInPmW12o2cV
X-Received: by 2002:a05:6214:1301:b0:681:899d:7169 with SMTP id pn1-20020a056214130100b00681899d7169mr1527491qvb.70.1706277465593;
        Fri, 26 Jan 2024 05:57:45 -0800 (PST)
X-Google-Smtp-Source: AGHT+IHVHPe+ZubnFiPMTriTntPlt9DLRJQPjUL7CvdiHbDklS/dg90/Zaqvq0CQvJQU/sAi2UQuhQ==
X-Received: by 2002:a05:6214:1301:b0:681:899d:7169 with SMTP id pn1-20020a056214130100b00681899d7169mr1527480qvb.70.1706277465344;
        Fri, 26 Jan 2024 05:57:45 -0800 (PST)
Message-ID: <dff6c566-04df-4dd9-b745-1058d7da277f@redhat.com>
Date: Fri, 26 Jan 2024 14:57:29 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 13/46] hw/mips/malta: use pci_init_nic_devices()
To: David Woodhouse <dwmw2@infradead.org>, qemu-devel@nongnu.org,
 =?UTF-8?Q?Philippe_Mathieu-Daud=C3=A9?= <philmd@linaro.org>
Cc: Richard Henderson <richard.henderson@linaro.org>,
 Beniamino Galvani <b.galvani@gmail.com>,
 Peter Maydell <peter.maydell@linaro.org>,
 Strahinja Jankovic <strahinja.p.jankovic@gmail.com>,
 Niek Linnenbank <nieklinnenbank@gmail.com>, =?UTF-8?Q?C=C3=A9dric_Le_Goater?=
 <clg@kaod.org>, Andrew Jeffery <andrew@codeconstruct.com.au>,
 Joel Stanley <joel@jms.id.au>, Igor Mitsyanko <i.mitsyanko@gmail.com>,
 Jean-Christophe Dubois <jcd@tribudubois.net>,
 Andrey Smirnov <andrew.smirnov@gmail.com>, Rob Herring <robh@kernel.org>,
 Subbaraya Sundeep <sundeep.lkml@gmail.com>, Jan Kiszka <jan.kiszka@web.de>,
 Tyrone Ting <kfting@nuvoton.com>, Hao Wu <wuhaotsh@google.com>,
 Radoslaw Biernacki <rad@semihalf.com>,
 Leif Lindholm <quic_llindhol@quicinc.com>,
 Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org>,
 "Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
 Alistair Francis <alistair@alistair23.me>, Helge Deller <deller@gmx.de>,
 Paolo Bonzini <pbonzini@redhat.com>, Eduardo Habkost <eduardo@habkost.net>,
 "Michael S. Tsirkin" <mst@redhat.com>,
 Marcel Apfelbaum <marcel.apfelbaum@gmail.com>, Song Gao
 <gaosong@loongson.cn>, Thomas Huth <huth@tuxfamily.org>,
 Laurent Vivier <laurent@vivier.eu>, Huacai Chen <chenhuacai@kernel.org>,
 Jiaxun Yang <jiaxun.yang@flygoat.com>,
 =?UTF-8?Q?Herv=C3=A9_Poussineau?= <hpoussin@reactos.org>,
 Aleksandar Rikalo <aleksandar.rikalo@syrmia.com>,
 Aurelien Jarno <aurelien@aurel32.net>, Jason Wang <jasowang@redhat.com>,
 Jia Liu <proljc@gmail.com>, Stafford Horne <shorne@gmail.com>,
 Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>,
 Nicholas Piggin <npiggin@gmail.com>,
 Daniel Henrique Barboza <danielhb413@gmail.com>,
 David Gibson <david@gibson.dropbear.id.au>,
 Harsh Prateek Bora <harshpb@linux.ibm.com>, Bin Meng
 <bin.meng@windriver.com>, Palmer Dabbelt <palmer@dabbelt.com>,
 Weiwei Li <liwei1518@gmail.com>, Liu Zhiwei <zhiwei_liu@linux.alibaba.com>,
 Halil Pasic <pasic@linux.ibm.com>,
 Christian Borntraeger <borntraeger@linux.ibm.com>,
 Eric Farman <farman@linux.ibm.com>, David Hildenbrand <david@redhat.com>,
 Ilya Leoshkevich <iii@linux.ibm.com>,
 Yoshinori Sato <ysato@users.sourceforge.jp>,
 Magnus Damm <magnus.damm@gmail.com>, Artyom Tarasenko <atar4qemu@gmail.com>,
 Stefano Stabellini <sstabellini@kernel.org>,
 Anthony Perard <anthony.perard@citrix.com>, Paul Durrant <paul@xen.org>,
 Max Filippov <jcmvbkbc@gmail.com>, qemu-arm@nongnu.org, qemu-ppc@nongnu.org,
 qemu-riscv@nongnu.org, qemu-s390x@nongnu.org,
 xen-devel@lists.xenproject.org, David Woodhouse <dwmw@amazon.co.uk>
References: <20240108204909.564514-1-dwmw2@infradead.org>
 <20240108204909.564514-14-dwmw2@infradead.org>
From: Thomas Huth <thuth@redhat.com>
Autocrypt: addr=thuth@redhat.com; keydata=
 xsFNBFH7eUwBEACzyOXKU+5Pcs6wNpKzrlJwzRl3VGZt95VCdb+FgoU9g11m7FWcOafrVRwU
 yYkTm9+7zBUc0sW5AuPGR/dp3pSLX/yFWsA/UB4nJsHqgDvDU7BImSeiTrnpMOTXb7Arw2a2
 4CflIyFqjCpfDM4MuTmzTjXq4Uov1giGE9X6viNo1pxyEpd7PanlKNnf4PqEQp06X4IgUacW
 tSGj6Gcns1bCuHV8OPWLkf4hkRnu8hdL6i60Yxz4E6TqlrpxsfYwLXgEeswPHOA6Mn4Cso9O
 0lewVYfFfsmokfAVMKWzOl1Sr0KGI5T9CpmRfAiSHpthhHWnECcJFwl72NTi6kUcUzG4se81
 O6n9d/kTj7pzTmBdfwuOZ0YUSqcqs0W+l1NcASSYZQaDoD3/SLk+nqVeCBB4OnYOGhgmIHNW
 0CwMRO/GK+20alxzk//V9GmIM2ACElbfF8+Uug3pqiHkVnKqM7W9/S1NH2qmxB6zMiJUHlTH
 gnVeZX0dgH27mzstcF786uPcdEqS0KJuxh2kk5IvUSL3Qn3ZgmgdxBMyCPciD/1cb7/Ahazr
 3ThHQXSHXkH/aDXdfLsKVuwDzHLVSkdSnZdt5HHh75/NFHxwaTlydgfHmFFwodK8y/TjyiGZ
 zg2Kje38xnz8zKn9iesFBCcONXS7txENTzX0z80WKBhK+XSFJwARAQABzR5UaG9tYXMgSHV0
 aCA8dGh1dGhAcmVkaGF0LmNvbT7CwXgEEwECACIFAlVgX6oCGwMGCwkIBwMCBhUIAgkKCwQW
 AgMBAh4BAheAAAoJEC7Z13T+cC21EbIP/ii9cvT2HHGbFRl8HqGT6+7Wkb+XLMqJBMAIGiQK
 QIP3xk1HPTsLfVG0ao4hy/oYkGNOP8+ubLnZen6Yq3zAFiMhQ44lvgigDYJo3Ve59gfe99KX
 EbtB+X95ODARkq0McR6OAsPNJ7gpEUzfkQUUJTXRDQXfG/FX303Gvk+YU0spm2tsIKPl6AmV
 1CegDljzjycyfJbk418MQmMu2T82kjrkEofUO2a24ed3VGC0/Uz//XCR2ZTo+vBoBUQl41BD
 eFFtoCSrzo3yPFS+w5fkH9NT8ChdpSlbNS32NhYQhJtr9zjWyFRf0Zk+T/1P7ECn6gTEkp5k
 ofFIA4MFBc/fXbaDRtBmPB0N9pqTFApIUI4vuFPPO0JDrII9dLwZ6lO9EKiwuVlvr1wwzsgq
 zJTPBU3qHaUO4d/8G+gD7AL/6T4zi8Jo/GmjBsnYaTzbm94lf0CjXjsOX3seMhaE6WAZOQQG
 tZHAO1kAPWpaxne+wtgMKthyPLNwelLf+xzGvrIKvLX6QuLoWMnWldu22z2ICVnLQChlR9d6
 WW8QFEpo/FK7omuS8KvvopFcOOdlbFMM8Y/8vBgVMSsK6fsYUhruny/PahprPbYGiNIhKqz7
 UvgyZVl4pBFjTaz/SbimTk210vIlkDyy1WuS8Zsn0htv4+jQPgo9rqFE4mipJjy/iboDzsFN
 BFH7eUwBEAC2nzfUeeI8dv0C4qrfCPze6NkryUflEut9WwHhfXCLjtvCjnoGqFelH/PE9NF4
 4VPSCdvD1SSmFVzu6T9qWdcwMSaC+e7G/z0/AhBfqTeosAF5XvKQlAb9ZPkdDr7YN0a1XDfa
 +NgA+JZB4ROyBZFFAwNHT+HCnyzy0v9Sh3BgJJwfpXHH2l3LfncvV8rgFv0bvdr70U+On2XH
 5bApOyW1WpIG5KPJlDdzcQTyptOJ1dnEHfwnABEfzI3dNf63rlxsGouX/NFRRRNqkdClQR3K
 gCwciaXfZ7ir7fF0u1N2UuLsWA8Ei1JrNypk+MRxhbvdQC4tyZCZ8mVDk+QOK6pyK2f4rMf/
 WmqxNTtAVmNuZIwnJdjRMMSs4W4w6N/bRvpqtykSqx7VXcgqtv6eqoDZrNuhGbekQA0sAnCJ
 VPArerAZGArm63o39me/bRUQeQVSxEBmg66yshF9HkcUPGVeC4B0TPwz+HFcVhheo6hoJjLq
 knFOPLRj+0h+ZL+D0GenyqD3CyuyeTT5dGcNU9qT74bdSr20k/CklvI7S9yoQje8BeQAHtdV
 cvO8XCLrpGuw9SgOS7OP5oI26a0548M4KldAY+kqX6XVphEw3/6U1KTf7WxW5zYLTtadjISB
 X9xsRWSU+Yqs3C7oN5TIPSoj9tXMoxZkCIHWvnqGwZ7JhwARAQABwsFfBBgBAgAJBQJR+3lM
 AhsMAAoJEC7Z13T+cC21hPAQAIsBL9MdGpdEpvXs9CYrBkd6tS9mbaSWj6XBDfA1AEdQkBOn
 ZH1Qt7HJesk+qNSnLv6+jP4VwqK5AFMrKJ6IjE7jqgzGxtcZnvSjeDGPF1h2CKZQPpTw890k
 fy18AvgFHkVk2Oylyexw3aOBsXg6ukN44vIFqPoc+YSU0+0QIdYJp/XFsgWxnFIMYwDpxSHS
 5fdDxUjsk3UBHZx+IhFjs2siVZi5wnHIqM7eK9abr2cK2weInTBwXwqVWjsXZ4tq5+jQrwDK
 cvxIcwXdUTLGxc4/Z/VRH1PZSvfQxdxMGmNTGaXVNfdFZjm4fz0mz+OUi6AHC4CZpwnsliGV
 ODqwX8Y1zic9viSTbKS01ZNp175POyWViUk9qisPZB7ypfSIVSEULrL347qY/hm9ahhqmn17
 Ng255syASv3ehvX7iwWDfzXbA0/TVaqwa1YIkec+/8miicV0zMP9siRcYQkyTqSzaTFBBmqD
 oiT+z+/E59qj/EKfyce3sbC9XLjXv3mHMrq1tKX4G7IJGnS989E/fg6crv6NHae9Ckm7+lSs
 IQu4bBP2GxiRQ+NV3iV/KU3ebMRzqIC//DCOxzQNFNJAKldPe/bKZMCxEqtVoRkuJtNdp/5a
 yXFZ6TfE1hGKrDBYAm4vrnZ4CXFSBDllL59cFFOJCkn4Xboj/aVxxJxF30bn
In-Reply-To: <20240108204909.564514-14-dwmw2@infradead.org>
X-Mimecast-Spam-Score: 0
X-Mimecast-Originator: redhat.com
Content-Language: en-US
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

On 08/01/2024 21.26, David Woodhouse wrote:
> From: David Woodhouse <dwmw@amazon.co.uk>
> 
> The Malta board setup code would previously place the first NIC into PCI
> slot 11 if was a PCNet card, and the rest (including the first if it was
> anything other than a PCNet card) would be dynamically assigned.
> 
> Now it will place any PCNet NIC into slot 11, and then anything else will
> be dynamically assigned.
> 
> Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
> ---
>   hw/mips/malta.c | 15 +++------------
>   1 file changed, 3 insertions(+), 12 deletions(-)
> 
> diff --git a/hw/mips/malta.c b/hw/mips/malta.c
> index d22bb1edef..af74008c82 100644
> --- a/hw/mips/malta.c
> +++ b/hw/mips/malta.c
> @@ -612,18 +612,9 @@ static MaltaFPGAState *malta_fpga_init(MemoryRegion *address_space,
>   /* Network support */
>   static void network_init(PCIBus *pci_bus)
>   {
> -    int i;
> -
> -    for (i = 0; i < nb_nics; i++) {
> -        NICInfo *nd = &nd_table[i];
> -        const char *default_devaddr = NULL;
> -
> -        if (i == 0 && (!nd->model || strcmp(nd->model, "pcnet") == 0))
> -            /* The malta board has a PCNet card using PCI SLOT 11 */
> -            default_devaddr = "0b";
> -
> -        pci_nic_init_nofail(nd, pci_bus, "pcnet", default_devaddr);
> -    }
> +    /* The malta board has a PCNet card using PCI SLOT 11 */
> +    pci_init_nic_in_slot(pci_bus, "pcnet", NULL, "0b");
> +    pci_init_nic_devices(pci_bus, "pcnet");
>   }

Reviewed-by: Thomas Huth <thuth@redhat.com>

Philippe, could you maybe have a look at this, too?




From xen-devel-bounces@lists.xenproject.org Fri Jan 26 13:58:55 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 26 Jan 2024 13:58:55 +0000
Received: from list by lists.xenproject.org with outflank-mailman.672024.1045623 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTMjO-0000Jj-1i; Fri, 26 Jan 2024 13:58:54 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 672024.1045623; Fri, 26 Jan 2024 13:58:54 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTMjN-0000Jc-Up; Fri, 26 Jan 2024 13:58:53 +0000
Received: by outflank-mailman (input) for mailman id 672024;
 Fri, 26 Jan 2024 13:58:52 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=UtOA=JE=redhat.com=thuth@srs-se1.protection.inumbo.net>)
 id 1rTMjM-0000JW-N5
 for xen-devel@lists.xenproject.org; Fri, 26 Jan 2024 13:58:52 +0000
Received: from us-smtp-delivery-124.mimecast.com
 (us-smtp-delivery-124.mimecast.com [170.10.133.124])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 089dbcee-bc53-11ee-8a43-1f161083a0e0;
 Fri, 26 Jan 2024 14:58:51 +0100 (CET)
Received: from mail-vs1-f70.google.com (mail-vs1-f70.google.com
 [209.85.217.70]) by relay.mimecast.com with ESMTP with STARTTLS
 (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id
 us-mta-632-U0YrO20yN_ioybMRNo-eAA-1; Fri, 26 Jan 2024 08:58:49 -0500
Received: by mail-vs1-f70.google.com with SMTP id
 ada2fe7eead31-46b1aeeea7cso37279137.1
 for <xen-devel@lists.xenproject.org>; Fri, 26 Jan 2024 05:58:49 -0800 (PST)
Received: from [192.168.0.9] (ip-109-43-176-119.web.vodafone.de.
 [109.43.176.119]) by smtp.gmail.com with ESMTPSA id
 bt3-20020ad455c3000000b0068698b10ae6sm520455qvb.119.2024.01.26.05.58.34
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Fri, 26 Jan 2024 05:58:48 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 089dbcee-bc53-11ee-8a43-1f161083a0e0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
	s=mimecast20190719; t=1706277530;
	h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
	 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references:autocrypt:autocrypt;
	bh=IEOUvFRUViQ3avFX3oB5M3Sw8AV4FF+8vEvsFPQx7K4=;
	b=YSycrtUa4t2yrjuwjUkXYaKQqbFBmk8JR4RtSryqjSzso/L/s5FJhFEgP5jfWiIpSui56r
	xe0u1X+VPVK7+/TSp3hUu9uK4hBh4gqS6yqwgSbmbKIXnzuWp4UcGrTiRiwfA4UrDMJ07Z
	FU4YE3K77TRRBwJ18iC5J6+9msY5j5Y=
X-MC-Unique: U0YrO20yN_ioybMRNo-eAA-1
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706277529; x=1706882329;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=IEOUvFRUViQ3avFX3oB5M3Sw8AV4FF+8vEvsFPQx7K4=;
        b=oyb5hc6ESCzccQ6o6RfEn5FL7u7Mv0FtPIkaLt04EDGJDJe9yttTFRR+5CTl1jDzmX
         O74Oa5cxJnUBrz/pP4XeTKXydZx/gKG0bzxGM6kHUU93Cz4Vdd9edFU5c29w5vQpPXgm
         wgi2EIr2dvcceOgnpU0ZHF7KZBg2uuSLCud723ZAmRvU6fsygKW4otsqlB3YdY7pxkzv
         AJ/M/tFhmcBQ+Z6PIaFKuADlbj+gXEb5yrrr6IkYMXOwwGjuLgmwanlrsjCuzNQX3eE3
         h5GpMm8wRpsm3kyt3gJKF+EvB5T1HkhYgPUR2nexUrTM4U5a6VbVzk0aP2VaGTN7k68z
         t/4g==
X-Gm-Message-State: AOJu0Yxz/uddPzlMrJSyliwhdqTfgKJKvcPnwjEpE0vnjuzl3Tovs/da
	50XjFE9h/Hfz4fjElOG5FQS1bgpEC01qFzSOFaDLxiLiPEOBD4J9bQWzqOTvWRjKLrwOhZThL8t
	wAYJ/P4vZLHKMjAnSDkQEX74ja9SuzcP02q6dCJQc6F6kSyjc/hIF4EBiP4aZEt/1
X-Received: by 2002:a05:6102:f12:b0:46b:2403:3b88 with SMTP id v18-20020a0561020f1200b0046b24033b88mr1057597vss.25.1706277528714;
        Fri, 26 Jan 2024 05:58:48 -0800 (PST)
X-Google-Smtp-Source: AGHT+IE+EyUqiT1oc8jTbobnl8hZ/hSyAFLOhY1Po3ksYgV6a5XvgIOPkE9HeND9NGdPWtD4PpoLLg==
X-Received: by 2002:a05:6102:f12:b0:46b:2403:3b88 with SMTP id v18-20020a0561020f1200b0046b24033b88mr1057583vss.25.1706277528357;
        Fri, 26 Jan 2024 05:58:48 -0800 (PST)
Message-ID: <5d8d738c-4538-496d-926b-9aaad70a1d17@redhat.com>
Date: Fri, 26 Jan 2024 14:58:34 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 14/46] hw/mips/loongson3_virt: use
 pci_init_nic_devices()
To: David Woodhouse <dwmw2@infradead.org>, qemu-devel@nongnu.org
Cc: Richard Henderson <richard.henderson@linaro.org>,
 Beniamino Galvani <b.galvani@gmail.com>,
 Peter Maydell <peter.maydell@linaro.org>,
 Strahinja Jankovic <strahinja.p.jankovic@gmail.com>,
 Niek Linnenbank <nieklinnenbank@gmail.com>, =?UTF-8?Q?C=C3=A9dric_Le_Goater?=
 <clg@kaod.org>, Andrew Jeffery <andrew@codeconstruct.com.au>,
 Joel Stanley <joel@jms.id.au>, Igor Mitsyanko <i.mitsyanko@gmail.com>,
 Jean-Christophe Dubois <jcd@tribudubois.net>,
 Andrey Smirnov <andrew.smirnov@gmail.com>,
 =?UTF-8?Q?Philippe_Mathieu-Daud=C3=A9?= <philmd@linaro.org>,
 Rob Herring <robh@kernel.org>, Subbaraya Sundeep <sundeep.lkml@gmail.com>,
 Jan Kiszka <jan.kiszka@web.de>, Tyrone Ting <kfting@nuvoton.com>,
 Hao Wu <wuhaotsh@google.com>, Radoslaw Biernacki <rad@semihalf.com>,
 Leif Lindholm <quic_llindhol@quicinc.com>,
 Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org>,
 "Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
 Alistair Francis <alistair@alistair23.me>, Helge Deller <deller@gmx.de>,
 Paolo Bonzini <pbonzini@redhat.com>, Eduardo Habkost <eduardo@habkost.net>,
 "Michael S. Tsirkin" <mst@redhat.com>,
 Marcel Apfelbaum <marcel.apfelbaum@gmail.com>, Song Gao
 <gaosong@loongson.cn>, Thomas Huth <huth@tuxfamily.org>,
 Laurent Vivier <laurent@vivier.eu>, Huacai Chen <chenhuacai@kernel.org>,
 Jiaxun Yang <jiaxun.yang@flygoat.com>,
 =?UTF-8?Q?Herv=C3=A9_Poussineau?= <hpoussin@reactos.org>,
 Aleksandar Rikalo <aleksandar.rikalo@syrmia.com>,
 Aurelien Jarno <aurelien@aurel32.net>, Jason Wang <jasowang@redhat.com>,
 Jia Liu <proljc@gmail.com>, Stafford Horne <shorne@gmail.com>,
 Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>,
 Nicholas Piggin <npiggin@gmail.com>,
 Daniel Henrique Barboza <danielhb413@gmail.com>,
 David Gibson <david@gibson.dropbear.id.au>,
 Harsh Prateek Bora <harshpb@linux.ibm.com>, Bin Meng
 <bin.meng@windriver.com>, Palmer Dabbelt <palmer@dabbelt.com>,
 Weiwei Li <liwei1518@gmail.com>, Liu Zhiwei <zhiwei_liu@linux.alibaba.com>,
 Halil Pasic <pasic@linux.ibm.com>,
 Christian Borntraeger <borntraeger@linux.ibm.com>,
 Eric Farman <farman@linux.ibm.com>, David Hildenbrand <david@redhat.com>,
 Ilya Leoshkevich <iii@linux.ibm.com>,
 Yoshinori Sato <ysato@users.sourceforge.jp>,
 Magnus Damm <magnus.damm@gmail.com>, Artyom Tarasenko <atar4qemu@gmail.com>,
 Stefano Stabellini <sstabellini@kernel.org>,
 Anthony Perard <anthony.perard@citrix.com>, Paul Durrant <paul@xen.org>,
 Max Filippov <jcmvbkbc@gmail.com>, qemu-arm@nongnu.org, qemu-ppc@nongnu.org,
 qemu-riscv@nongnu.org, qemu-s390x@nongnu.org,
 xen-devel@lists.xenproject.org, David Woodhouse <dwmw@amazon.co.uk>
References: <20240108204909.564514-1-dwmw2@infradead.org>
 <20240108204909.564514-15-dwmw2@infradead.org>
From: Thomas Huth <thuth@redhat.com>
Autocrypt: addr=thuth@redhat.com; keydata=
 xsFNBFH7eUwBEACzyOXKU+5Pcs6wNpKzrlJwzRl3VGZt95VCdb+FgoU9g11m7FWcOafrVRwU
 yYkTm9+7zBUc0sW5AuPGR/dp3pSLX/yFWsA/UB4nJsHqgDvDU7BImSeiTrnpMOTXb7Arw2a2
 4CflIyFqjCpfDM4MuTmzTjXq4Uov1giGE9X6viNo1pxyEpd7PanlKNnf4PqEQp06X4IgUacW
 tSGj6Gcns1bCuHV8OPWLkf4hkRnu8hdL6i60Yxz4E6TqlrpxsfYwLXgEeswPHOA6Mn4Cso9O
 0lewVYfFfsmokfAVMKWzOl1Sr0KGI5T9CpmRfAiSHpthhHWnECcJFwl72NTi6kUcUzG4se81
 O6n9d/kTj7pzTmBdfwuOZ0YUSqcqs0W+l1NcASSYZQaDoD3/SLk+nqVeCBB4OnYOGhgmIHNW
 0CwMRO/GK+20alxzk//V9GmIM2ACElbfF8+Uug3pqiHkVnKqM7W9/S1NH2qmxB6zMiJUHlTH
 gnVeZX0dgH27mzstcF786uPcdEqS0KJuxh2kk5IvUSL3Qn3ZgmgdxBMyCPciD/1cb7/Ahazr
 3ThHQXSHXkH/aDXdfLsKVuwDzHLVSkdSnZdt5HHh75/NFHxwaTlydgfHmFFwodK8y/TjyiGZ
 zg2Kje38xnz8zKn9iesFBCcONXS7txENTzX0z80WKBhK+XSFJwARAQABzR5UaG9tYXMgSHV0
 aCA8dGh1dGhAcmVkaGF0LmNvbT7CwXgEEwECACIFAlVgX6oCGwMGCwkIBwMCBhUIAgkKCwQW
 AgMBAh4BAheAAAoJEC7Z13T+cC21EbIP/ii9cvT2HHGbFRl8HqGT6+7Wkb+XLMqJBMAIGiQK
 QIP3xk1HPTsLfVG0ao4hy/oYkGNOP8+ubLnZen6Yq3zAFiMhQ44lvgigDYJo3Ve59gfe99KX
 EbtB+X95ODARkq0McR6OAsPNJ7gpEUzfkQUUJTXRDQXfG/FX303Gvk+YU0spm2tsIKPl6AmV
 1CegDljzjycyfJbk418MQmMu2T82kjrkEofUO2a24ed3VGC0/Uz//XCR2ZTo+vBoBUQl41BD
 eFFtoCSrzo3yPFS+w5fkH9NT8ChdpSlbNS32NhYQhJtr9zjWyFRf0Zk+T/1P7ECn6gTEkp5k
 ofFIA4MFBc/fXbaDRtBmPB0N9pqTFApIUI4vuFPPO0JDrII9dLwZ6lO9EKiwuVlvr1wwzsgq
 zJTPBU3qHaUO4d/8G+gD7AL/6T4zi8Jo/GmjBsnYaTzbm94lf0CjXjsOX3seMhaE6WAZOQQG
 tZHAO1kAPWpaxne+wtgMKthyPLNwelLf+xzGvrIKvLX6QuLoWMnWldu22z2ICVnLQChlR9d6
 WW8QFEpo/FK7omuS8KvvopFcOOdlbFMM8Y/8vBgVMSsK6fsYUhruny/PahprPbYGiNIhKqz7
 UvgyZVl4pBFjTaz/SbimTk210vIlkDyy1WuS8Zsn0htv4+jQPgo9rqFE4mipJjy/iboDzsFN
 BFH7eUwBEAC2nzfUeeI8dv0C4qrfCPze6NkryUflEut9WwHhfXCLjtvCjnoGqFelH/PE9NF4
 4VPSCdvD1SSmFVzu6T9qWdcwMSaC+e7G/z0/AhBfqTeosAF5XvKQlAb9ZPkdDr7YN0a1XDfa
 +NgA+JZB4ROyBZFFAwNHT+HCnyzy0v9Sh3BgJJwfpXHH2l3LfncvV8rgFv0bvdr70U+On2XH
 5bApOyW1WpIG5KPJlDdzcQTyptOJ1dnEHfwnABEfzI3dNf63rlxsGouX/NFRRRNqkdClQR3K
 gCwciaXfZ7ir7fF0u1N2UuLsWA8Ei1JrNypk+MRxhbvdQC4tyZCZ8mVDk+QOK6pyK2f4rMf/
 WmqxNTtAVmNuZIwnJdjRMMSs4W4w6N/bRvpqtykSqx7VXcgqtv6eqoDZrNuhGbekQA0sAnCJ
 VPArerAZGArm63o39me/bRUQeQVSxEBmg66yshF9HkcUPGVeC4B0TPwz+HFcVhheo6hoJjLq
 knFOPLRj+0h+ZL+D0GenyqD3CyuyeTT5dGcNU9qT74bdSr20k/CklvI7S9yoQje8BeQAHtdV
 cvO8XCLrpGuw9SgOS7OP5oI26a0548M4KldAY+kqX6XVphEw3/6U1KTf7WxW5zYLTtadjISB
 X9xsRWSU+Yqs3C7oN5TIPSoj9tXMoxZkCIHWvnqGwZ7JhwARAQABwsFfBBgBAgAJBQJR+3lM
 AhsMAAoJEC7Z13T+cC21hPAQAIsBL9MdGpdEpvXs9CYrBkd6tS9mbaSWj6XBDfA1AEdQkBOn
 ZH1Qt7HJesk+qNSnLv6+jP4VwqK5AFMrKJ6IjE7jqgzGxtcZnvSjeDGPF1h2CKZQPpTw890k
 fy18AvgFHkVk2Oylyexw3aOBsXg6ukN44vIFqPoc+YSU0+0QIdYJp/XFsgWxnFIMYwDpxSHS
 5fdDxUjsk3UBHZx+IhFjs2siVZi5wnHIqM7eK9abr2cK2weInTBwXwqVWjsXZ4tq5+jQrwDK
 cvxIcwXdUTLGxc4/Z/VRH1PZSvfQxdxMGmNTGaXVNfdFZjm4fz0mz+OUi6AHC4CZpwnsliGV
 ODqwX8Y1zic9viSTbKS01ZNp175POyWViUk9qisPZB7ypfSIVSEULrL347qY/hm9ahhqmn17
 Ng255syASv3ehvX7iwWDfzXbA0/TVaqwa1YIkec+/8miicV0zMP9siRcYQkyTqSzaTFBBmqD
 oiT+z+/E59qj/EKfyce3sbC9XLjXv3mHMrq1tKX4G7IJGnS989E/fg6crv6NHae9Ckm7+lSs
 IQu4bBP2GxiRQ+NV3iV/KU3ebMRzqIC//DCOxzQNFNJAKldPe/bKZMCxEqtVoRkuJtNdp/5a
 yXFZ6TfE1hGKrDBYAm4vrnZ4CXFSBDllL59cFFOJCkn4Xboj/aVxxJxF30bn
In-Reply-To: <20240108204909.564514-15-dwmw2@infradead.org>
X-Mimecast-Spam-Score: 0
X-Mimecast-Originator: redhat.com
Content-Language: en-US
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

On 08/01/2024 21.26, David Woodhouse wrote:
> From: David Woodhouse <dwmw@amazon.co.uk>
> 
> Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
> ---
>   hw/mips/loongson3_virt.c | 4 +---
>   1 file changed, 1 insertion(+), 3 deletions(-)
> 
> diff --git a/hw/mips/loongson3_virt.c b/hw/mips/loongson3_virt.c
> index 33eae01eca..caedde2df0 100644
> --- a/hw/mips/loongson3_virt.c
> +++ b/hw/mips/loongson3_virt.c
> @@ -451,9 +451,7 @@ static inline void loongson3_virt_devices_init(MachineState *machine,
>           usb_create_simple(usb_bus_find(-1), "usb-tablet");
>       }
>   
> -    for (i = 0; i < nb_nics; i++) {
> -        pci_nic_init_nofail(&nd_table[i], pci_bus, mc->default_nic, NULL);
> -    }
> +    pci_init_nic_devices(pci_bus, mc->default_nic);
>   }
>   
>   static void mips_loongson3_virt_init(MachineState *machine)

Reviewed-by: Thomas Huth <thuth@redhat.com>



From xen-devel-bounces@lists.xenproject.org Fri Jan 26 14:16:55 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 26 Jan 2024 14:16:55 +0000
Received: from list by lists.xenproject.org with outflank-mailman.672032.1045632 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTN0h-00040B-FE; Fri, 26 Jan 2024 14:16:47 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 672032.1045632; Fri, 26 Jan 2024 14:16:47 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTN0h-000404-Cb; Fri, 26 Jan 2024 14:16:47 +0000
Received: by outflank-mailman (input) for mailman id 672032;
 Fri, 26 Jan 2024 14:16:46 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=bPDA=JE=casper.srs.infradead.org=BATV+7caeb094913322f6f00d+7460+infradead.org+dwmw2@srs-se1.protection.inumbo.net>)
 id 1rTN0f-0003zy-T5
 for xen-devel@lists.xenproject.org; Fri, 26 Jan 2024 14:16:46 +0000
Received: from casper.infradead.org (casper.infradead.org
 [2001:8b0:10b:1236::1])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 889ffa72-bc55-11ee-8a43-1f161083a0e0;
 Fri, 26 Jan 2024 15:16:44 +0100 (CET)
Received: from [2001:8b0:10b:5:d160:e4ac:a057:38f5]
 (helo=u3832b3a9db3152.ant.amazon.com)
 by casper.infradead.org with esmtpsa (Exim 4.97.1 #2 (Red Hat Linux))
 id 1rTN04-0000000DpQ8-1AW4; Fri, 26 Jan 2024 14:16:09 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 889ffa72-bc55-11ee-8a43-1f161083a0e0
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=infradead.org; s=casper.20170209; h=MIME-Version:Content-Type:References:
	In-Reply-To:Date:Cc:To:From:Subject:Message-ID:Sender:Reply-To:
	Content-Transfer-Encoding:Content-ID:Content-Description;
	bh=WMKtQwDGQFDrlrI4mqsWtTQig46/I0wCQZlGkuPyJhY=; b=HMJc+4B8oDVOAfw6o7xfdKIlLl
	CZfWYnUy49ECGITnrAPZh2qWXSffoWORMYqScPNbxWD3maH3Hhqa3/0qfgJPhKHWFoq9UFgsGqpMv
	KRNJpJp0NAuEpTSNl8L80i5hp+gmdTnwTZFj4dZeoO8vMMWltEOIXSdF3/av5dZ6+a2OcNhw4GxUG
	ur/dVZvuznj04D2knJu0MKbdJX2s3pisKzjnBaqwrTfSdM7LrdT1gFgBwXekiEPLtrYFSwJZ5nlT0
	5PSt97/1s5Sw3KJmHQzwu48f5I4JIyNio6btIt4isx1PFmYJEzLGGzxZjpRgQXs3t1bfYGcAKo0JM
	js1m7/dA==;
Message-ID: <0914e6a51218793cca3121879ef21b39d9aac612.camel@infradead.org>
Subject: Re: [PATCH v3 01/46] net: add qemu_{configure,
 create}_nic_device(), qemu_find_nic_info()
From: David Woodhouse <dwmw2@infradead.org>
To: Thomas Huth <thuth@redhat.com>, qemu-devel@nongnu.org
Cc: Richard Henderson <richard.henderson@linaro.org>, Beniamino Galvani
 <b.galvani@gmail.com>, Peter Maydell <peter.maydell@linaro.org>, Strahinja
 Jankovic <strahinja.p.jankovic@gmail.com>, Niek Linnenbank
 <nieklinnenbank@gmail.com>,  =?ISO-8859-1?Q?C=E9dric?= Le Goater
 <clg@kaod.org>, Andrew Jeffery <andrew@codeconstruct.com.au>, Joel Stanley
 <joel@jms.id.au>, Igor Mitsyanko <i.mitsyanko@gmail.com>, Jean-Christophe
 Dubois <jcd@tribudubois.net>, Andrey Smirnov <andrew.smirnov@gmail.com>,
 Philippe =?ISO-8859-1?Q?Mathieu-Daud=E9?= <philmd@linaro.org>, Rob Herring
 <robh@kernel.org>, Subbaraya Sundeep <sundeep.lkml@gmail.com>, Jan Kiszka
 <jan.kiszka@web.de>, Tyrone Ting <kfting@nuvoton.com>, Hao Wu
 <wuhaotsh@google.com>, Radoslaw Biernacki <rad@semihalf.com>, Leif Lindholm
 <quic_llindhol@quicinc.com>, Marcin Juszkiewicz
 <marcin.juszkiewicz@linaro.org>, "Edgar E. Iglesias"
 <edgar.iglesias@gmail.com>, Alistair Francis <alistair@alistair23.me>,
 Helge Deller <deller@gmx.de>, Paolo Bonzini <pbonzini@redhat.com>,  Eduardo
 Habkost <eduardo@habkost.net>, "Michael S. Tsirkin" <mst@redhat.com>,
 Marcel Apfelbaum <marcel.apfelbaum@gmail.com>, Song Gao
 <gaosong@loongson.cn>, Thomas Huth <huth@tuxfamily.org>, Laurent Vivier
 <laurent@vivier.eu>, Huacai Chen <chenhuacai@kernel.org>, Jiaxun Yang
 <jiaxun.yang@flygoat.com>,  =?ISO-8859-1?Q?Herv=E9?= Poussineau
 <hpoussin@reactos.org>, Aleksandar Rikalo <aleksandar.rikalo@syrmia.com>, 
 Aurelien Jarno <aurelien@aurel32.net>, Jason Wang <jasowang@redhat.com>,
 Jia Liu <proljc@gmail.com>, Stafford Horne <shorne@gmail.com>, Mark
 Cave-Ayland <mark.cave-ayland@ilande.co.uk>, Nicholas Piggin
 <npiggin@gmail.com>, Daniel Henrique Barboza <danielhb413@gmail.com>, David
 Gibson <david@gibson.dropbear.id.au>, Harsh Prateek Bora
 <harshpb@linux.ibm.com>, Bin Meng <bin.meng@windriver.com>, Palmer Dabbelt
 <palmer@dabbelt.com>, Weiwei Li <liwei1518@gmail.com>, Liu Zhiwei
 <zhiwei_liu@linux.alibaba.com>, Halil Pasic <pasic@linux.ibm.com>,
 Christian Borntraeger <borntraeger@linux.ibm.com>,  Eric Farman
 <farman@linux.ibm.com>, David Hildenbrand <david@redhat.com>, Ilya
 Leoshkevich <iii@linux.ibm.com>, Yoshinori Sato
 <ysato@users.sourceforge.jp>, Magnus Damm <magnus.damm@gmail.com>, Artyom
 Tarasenko <atar4qemu@gmail.com>, Stefano Stabellini
 <sstabellini@kernel.org>, Anthony Perard <anthony.perard@citrix.com>, Paul
 Durrant <paul@xen.org>, Max Filippov <jcmvbkbc@gmail.com>,
 qemu-arm@nongnu.org,  qemu-ppc@nongnu.org, qemu-riscv@nongnu.org,
 qemu-s390x@nongnu.org,  xen-devel@lists.xenproject.org
Date: Fri, 26 Jan 2024 14:16:08 +0000
In-Reply-To: <9218c20b-8ba8-402b-bea5-856cb51156dc@redhat.com>
References: <20240108204909.564514-1-dwmw2@infradead.org>
	 <20240108204909.564514-2-dwmw2@infradead.org>
	 <9218c20b-8ba8-402b-bea5-856cb51156dc@redhat.com>
Content-Type: multipart/signed; micalg="sha-256"; protocol="application/pkcs7-signature";
	boundary="=-z7NOS3lipot50VpBs+fh"
User-Agent: Evolution 3.44.4-0ubuntu2 
MIME-Version: 1.0
X-SRS-Rewrite: SMTP reverse-path rewritten from <dwmw2@infradead.org> by casper.infradead.org. See http://www.infradead.org/rpr.html


--=-z7NOS3lipot50VpBs+fh
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

On Fri, 2024-01-26 at 12:10 +0100, Thomas Huth wrote:
>=20
> > +/* "Please create a device, if you have a configuration for it" */
> > +DeviceState *qemu_create_nic_device(const char *typename, bool match_d=
efault,
> > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 const ch=
ar *alias)
> > +{
> > +=C2=A0=C2=A0=C2=A0 NICInfo *nd =3D qemu_find_nic_info(typename, match_=
default, alias);
> > +=C2=A0=C2=A0=C2=A0 DeviceState *dev;
> > +
> > +=C2=A0=C2=A0=C2=A0 if (!nd) {
> > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 return NULL;
> > +=C2=A0=C2=A0=C2=A0 }
>=20
> The qemu_check_nic_model() function that was used in some code that you=
=20
> turned into qemu_create_nic_device() used to set:
>=20
> =C2=A0=C2=A0=C2=A0=C2=A0 if (!nd->model)
> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 nd->model =3D g_strdup(d=
efault_model);
>=20
> (in the qemu_find_nic_model() function that has been called by=20
> qemu_check_nic_model())
>=20
> Should we do that also here to make sure that nd->model is not NULL after=
wards?

Good question, but I don't think we care. The qdev_set_nic_properties()
function certainly doesn't propagate nd->model to anywhere.

I renamed nd->model to nd->modelname in a patch shown below, just to be
100% sure I'm not missing any other code paths which might consume it.


diff --git a/include/net/net.h b/include/net/net.h
index 766201c62c..ad6cd5b14b 100644
--- a/include/net/net.h
+++ b/include/net/net.h
@@ -238,7 +238,7 @@ GPtrArray *qemu_get_nic_models(const char *device_type)=
;
=20
 struct NICInfo {
     MACAddr macaddr;
-    char *model;
+    char *modelname;
     char *name;
     char *devaddr;
     NetClientState *netdev;
diff --git a/net/net.c b/net/net.c
index 71cccb19da..ab6185b4df 100644
--- a/net/net.c
+++ b/net/net.c
@@ -1012,7 +1012,7 @@ static int net_init_nic(const Netdev *netdev, const c=
har *name,
     }
     nd->name =3D g_strdup(name);
     if (nic->model) {
-        nd->model =3D g_strdup(nic->model);
+        nd->modelname =3D g_strdup(nic->model);
     }
     if (nic->addr) {
         nd->devaddr =3D g_strdup(nic->addr);
@@ -1142,8 +1142,8 @@ NICInfo *qemu_find_nic_info(const char *typename, boo=
l match_default,
             continue;
         }
=20
-        if ((match_default && !nd->model) || !g_strcmp0(nd->model, typenam=
e)
-            || (alias && !g_strcmp0(nd->model, alias))) {
+        if ((match_default && !nd->modelname) || !g_strcmp0(nd->modelname,=
 typename)
+            || (alias && !g_strcmp0(nd->modelname, alias))) {
             return nd;
         }
     }
@@ -1210,7 +1210,7 @@ void qemu_create_nic_bus_devices(BusState *bus, const=
 char *parent_type,
             continue;
         }
=20
-        model =3D nd->model ? nd->model : default_model;
+        model =3D nd->modelname ? nd->modelname : default_model;
         if (!model) {
             continue;
         }
@@ -1726,7 +1726,7 @@ void net_check_clients(void)
             warn_report("requested NIC (%s, model %s) "
                         "was not created (not supported by this machine?)"=
,
                         nd->name ? nd->name : "anonymous",
-                        nd->model ? nd->model : "unspecified");
+                        nd->modelname ? nd->modelname : "unspecified");
         }
     }
 }
@@ -1787,9 +1787,9 @@ static int net_param_nic(void *dummy, QemuOpts *opts,=
 Error **errp)
=20
     ni =3D &nd_table[idx];
     memset(ni, 0, sizeof(*ni));
-    ni->model =3D qemu_opt_get_del(opts, "model");
+    ni->modelname =3D qemu_opt_get_del(opts, "model");
=20
-    if (!nic_model_help && !g_strcmp0(ni->model, "help")) {
+    if (!nic_model_help && !g_strcmp0(ni->modelname, "help")) {
         nic_model_help =3D g_hash_table_new_full(g_str_hash, g_str_equal,
                                                g_free, NULL);
         return 0;


--=-z7NOS3lipot50VpBs+fh
Content-Type: application/pkcs7-signature; name="smime.p7s"
Content-Disposition: attachment; filename="smime.p7s"
Content-Transfer-Encoding: base64

MIAGCSqGSIb3DQEHAqCAMIACAQExDzANBglghkgBZQMEAgEFADCABgkqhkiG9w0BBwEAAKCCEkQw
ggYQMIID+KADAgECAhBNlCwQ1DvglAnFgS06KwZPMA0GCSqGSIb3DQEBDAUAMIGIMQswCQYDVQQG
EwJVUzETMBEGA1UECBMKTmV3IEplcnNleTEUMBIGA1UEBxMLSmVyc2V5IENpdHkxHjAcBgNVBAoT
FVRoZSBVU0VSVFJVU1QgTmV0d29yazEuMCwGA1UEAxMlVVNFUlRydXN0IFJTQSBDZXJ0aWZpY2F0
aW9uIEF1dGhvcml0eTAeFw0xODExMDIwMDAwMDBaFw0zMDEyMzEyMzU5NTlaMIGWMQswCQYDVQQG
EwJHQjEbMBkGA1UECBMSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHEwdTYWxmb3JkMRgwFgYD
VQQKEw9TZWN0aWdvIExpbWl0ZWQxPjA8BgNVBAMTNVNlY3RpZ28gUlNBIENsaWVudCBBdXRoZW50
aWNhdGlvbiBhbmQgU2VjdXJlIEVtYWlsIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
AQEAyjztlApB/975Rrno1jvm2pK/KxBOqhq8gr2+JhwpKirSzZxQgT9tlC7zl6hn1fXjSo5MqXUf
ItMltrMaXqcESJuK8dtK56NCSrq4iDKaKq9NxOXFmqXX2zN8HHGjQ2b2Xv0v1L5Nk1MQPKA19xeW
QcpGEGFUUd0kN+oHox+L9aV1rjfNiCj3bJk6kJaOPabPi2503nn/ITX5e8WfPnGw4VuZ79Khj1YB
rf24k5Ee1sLTHsLtpiK9OjG4iQRBdq6Z/TlVx/hGAez5h36bBJMxqdHLpdwIUkTqT8se3ed0PewD
ch/8kHPo5fZl5u1B0ecpq/sDN/5sCG52Ds+QU5O5EwIDAQABo4IBZDCCAWAwHwYDVR0jBBgwFoAU
U3m/WqorSs9UgOHYm8Cd8rIDZsswHQYDVR0OBBYEFAnA8vwL2pTbX/4r36iZQs/J4K0AMA4GA1Ud
DwEB/wQEAwIBhjASBgNVHRMBAf8ECDAGAQH/AgEAMB0GA1UdJQQWMBQGCCsGAQUFBwMCBggrBgEF
BQcDBDARBgNVHSAECjAIMAYGBFUdIAAwUAYDVR0fBEkwRzBFoEOgQYY/aHR0cDovL2NybC51c2Vy
dHJ1c3QuY29tL1VTRVJUcnVzdFJTQUNlcnRpZmljYXRpb25BdXRob3JpdHkuY3JsMHYGCCsGAQUF
BwEBBGowaDA/BggrBgEFBQcwAoYzaHR0cDovL2NydC51c2VydHJ1c3QuY29tL1VTRVJUcnVzdFJT
QUFkZFRydXN0Q0EuY3J0MCUGCCsGAQUFBzABhhlodHRwOi8vb2NzcC51c2VydHJ1c3QuY29tMA0G
CSqGSIb3DQEBDAUAA4ICAQBBRHUAqznCFfXejpVtMnFojADdF9d6HBA4kMjjsb0XMZHztuOCtKF+
xswhh2GqkW5JQrM8zVlU+A2VP72Ky2nlRA1GwmIPgou74TZ/XTarHG8zdMSgaDrkVYzz1g3nIVO9
IHk96VwsacIvBF8JfqIs+8aWH2PfSUrNxP6Ys7U0sZYx4rXD6+cqFq/ZW5BUfClN/rhk2ddQXyn7
kkmka2RQb9d90nmNHdgKrwfQ49mQ2hWQNDkJJIXwKjYA6VUR/fZUFeCUisdDe/0ABLTI+jheXUV1
eoYV7lNwNBKpeHdNuO6Aacb533JlfeUHxvBz9OfYWUiXu09sMAviM11Q0DuMZ5760CdO2VnpsXP4
KxaYIhvqPqUMWqRdWyn7crItNkZeroXaecG03i3mM7dkiPaCkgocBg0EBYsbZDZ8bsG3a08LwEsL
1Ygz3SBsyECa0waq4hOf/Z85F2w2ZpXfP+w8q4ifwO90SGZZV+HR/Jh6rEaVPDRF/CEGVqR1hiuQ
OZ1YL5ezMTX0ZSLwrymUE0pwi/KDaiYB15uswgeIAcA6JzPFf9pLkAFFWs1QNyN++niFhsM47qod
x/PL+5jR87myx5uYdBEQkkDc+lKB1Wct6ucXqm2EmsaQ0M95QjTmy+rDWjkDYdw3Ms6mSWE3Bn7i
5ZgtwCLXgAIe5W8mybM2JzCCBhQwggT8oAMCAQICEQDGvhmWZ0DEAx0oURL6O6l+MA0GCSqGSIb3
DQEBCwUAMIGWMQswCQYDVQQGEwJHQjEbMBkGA1UECBMSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYD
VQQHEwdTYWxmb3JkMRgwFgYDVQQKEw9TZWN0aWdvIExpbWl0ZWQxPjA8BgNVBAMTNVNlY3RpZ28g
UlNBIENsaWVudCBBdXRoZW50aWNhdGlvbiBhbmQgU2VjdXJlIEVtYWlsIENBMB4XDTIyMDEwNzAw
MDAwMFoXDTI1MDEwNjIzNTk1OVowJDEiMCAGCSqGSIb3DQEJARYTZHdtdzJAaW5mcmFkZWFkLm9y
ZzCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBALQ3GpC2bomUqk+91wLYBzDMcCj5C9m6
oZaHwvmIdXftOgTbCJXADo6G9T7BBAebw2JV38EINgKpy/ZHh7htyAkWYVoFsFPrwHounto8xTsy
SSePMiPlmIdQ10BcVSXMUJ3Juu16GlWOnAMJY2oYfEzmE7uT9YgcBqKCo65pTFmOnR/VVbjJk4K2
xE34GC2nAdUQkPFuyaFisicc6HRMOYXPuF0DuwITEKnjxgNjP+qDrh0db7PAjO1D4d5ftfrsf+kd
RR4gKVGSk8Tz2WwvtLAroJM4nXjNPIBJNT4w/FWWc/5qPHJy2U+eITZ5LLE5s45mX2oPFknWqxBo
bQZ8a9dsZ3dSPZBvE9ZrmtFLrVrN4eo1jsXgAp1+p7bkfqd3BgBEmfsYWlBXO8rVXfvPgLs32VdV
NZxb/CDWPqBsiYv0Hv3HPsz07j5b+/cVoWqyHDKzkaVbxfq/7auNVRmPB3v5SWEsH8xi4Bez2V9U
KxfYCnqsjp8RaC2/khxKt0A552Eaxnz/4ly/2C7wkwTQnBmdlFYhAflWKQ03Ufiu8t3iBE3VJbc2
5oMrglj7TRZrmKq3CkbFnX0fyulB+kHimrt6PIWn7kgyl9aelIl6vtbhMA+l0nfrsORMa4kobqQ5
C5rveVgmcIad67EDa+UqEKy/GltUwlSh6xy+TrK1tzDvAgMBAAGjggHMMIIByDAfBgNVHSMEGDAW
gBQJwPL8C9qU21/+K9+omULPyeCtADAdBgNVHQ4EFgQUzMeDMcimo0oz8o1R1Nver3ZVpSkwDgYD
VR0PAQH/BAQDAgWgMAwGA1UdEwEB/wQCMAAwHQYDVR0lBBYwFAYIKwYBBQUHAwQGCCsGAQUFBwMC
MEAGA1UdIAQ5MDcwNQYMKwYBBAGyMQECAQEBMCUwIwYIKwYBBQUHAgEWF2h0dHBzOi8vc2VjdGln
by5jb20vQ1BTMFoGA1UdHwRTMFEwT6BNoEuGSWh0dHA6Ly9jcmwuc2VjdGlnby5jb20vU2VjdGln
b1JTQUNsaWVudEF1dGhlbnRpY2F0aW9uYW5kU2VjdXJlRW1haWxDQS5jcmwwgYoGCCsGAQUFBwEB
BH4wfDBVBggrBgEFBQcwAoZJaHR0cDovL2NydC5zZWN0aWdvLmNvbS9TZWN0aWdvUlNBQ2xpZW50
QXV0aGVudGljYXRpb25hbmRTZWN1cmVFbWFpbENBLmNydDAjBggrBgEFBQcwAYYXaHR0cDovL29j
c3Auc2VjdGlnby5jb20wHgYDVR0RBBcwFYETZHdtdzJAaW5mcmFkZWFkLm9yZzANBgkqhkiG9w0B
AQsFAAOCAQEAyW6MUir5dm495teKqAQjDJwuFCi35h4xgnQvQ/fzPXmtR9t54rpmI2TfyvcKgOXp
qa7BGXNFfh1JsqexVkIqZP9uWB2J+uVMD+XZEs/KYNNX2PvIlSPrzIB4Z2wyIGQpaPLlYflrrVFK
v9CjT2zdqvy2maK7HKOQRt3BiJbVG5lRiwbbygldcALEV9ChWFfgSXvrWDZspnU3Gjw/rMHrGnql
Htlyebp3pf3fSS9kzQ1FVtVIDrL6eqhTwJxe+pXSMMqFiN0whpBtXdyDjzBtQTaZJ7zTT/vlehc/
tDuqZwGHm/YJy883Ll+GP3NvOkgaRGWEuYWJJ6hFCkXYjyR9IzCCBhQwggT8oAMCAQICEQDGvhmW
Z0DEAx0oURL6O6l+MA0GCSqGSIb3DQEBCwUAMIGWMQswCQYDVQQGEwJHQjEbMBkGA1UECBMSR3Jl
YXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHEwdTYWxmb3JkMRgwFgYDVQQKEw9TZWN0aWdvIExpbWl0
ZWQxPjA8BgNVBAMTNVNlY3RpZ28gUlNBIENsaWVudCBBdXRoZW50aWNhdGlvbiBhbmQgU2VjdXJl
IEVtYWlsIENBMB4XDTIyMDEwNzAwMDAwMFoXDTI1MDEwNjIzNTk1OVowJDEiMCAGCSqGSIb3DQEJ
ARYTZHdtdzJAaW5mcmFkZWFkLm9yZzCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBALQ3
GpC2bomUqk+91wLYBzDMcCj5C9m6oZaHwvmIdXftOgTbCJXADo6G9T7BBAebw2JV38EINgKpy/ZH
h7htyAkWYVoFsFPrwHounto8xTsySSePMiPlmIdQ10BcVSXMUJ3Juu16GlWOnAMJY2oYfEzmE7uT
9YgcBqKCo65pTFmOnR/VVbjJk4K2xE34GC2nAdUQkPFuyaFisicc6HRMOYXPuF0DuwITEKnjxgNj
P+qDrh0db7PAjO1D4d5ftfrsf+kdRR4gKVGSk8Tz2WwvtLAroJM4nXjNPIBJNT4w/FWWc/5qPHJy
2U+eITZ5LLE5s45mX2oPFknWqxBobQZ8a9dsZ3dSPZBvE9ZrmtFLrVrN4eo1jsXgAp1+p7bkfqd3
BgBEmfsYWlBXO8rVXfvPgLs32VdVNZxb/CDWPqBsiYv0Hv3HPsz07j5b+/cVoWqyHDKzkaVbxfq/
7auNVRmPB3v5SWEsH8xi4Bez2V9UKxfYCnqsjp8RaC2/khxKt0A552Eaxnz/4ly/2C7wkwTQnBmd
lFYhAflWKQ03Ufiu8t3iBE3VJbc25oMrglj7TRZrmKq3CkbFnX0fyulB+kHimrt6PIWn7kgyl9ae
lIl6vtbhMA+l0nfrsORMa4kobqQ5C5rveVgmcIad67EDa+UqEKy/GltUwlSh6xy+TrK1tzDvAgMB
AAGjggHMMIIByDAfBgNVHSMEGDAWgBQJwPL8C9qU21/+K9+omULPyeCtADAdBgNVHQ4EFgQUzMeD
Mcimo0oz8o1R1Nver3ZVpSkwDgYDVR0PAQH/BAQDAgWgMAwGA1UdEwEB/wQCMAAwHQYDVR0lBBYw
FAYIKwYBBQUHAwQGCCsGAQUFBwMCMEAGA1UdIAQ5MDcwNQYMKwYBBAGyMQECAQEBMCUwIwYIKwYB
BQUHAgEWF2h0dHBzOi8vc2VjdGlnby5jb20vQ1BTMFoGA1UdHwRTMFEwT6BNoEuGSWh0dHA6Ly9j
cmwuc2VjdGlnby5jb20vU2VjdGlnb1JTQUNsaWVudEF1dGhlbnRpY2F0aW9uYW5kU2VjdXJlRW1h
aWxDQS5jcmwwgYoGCCsGAQUFBwEBBH4wfDBVBggrBgEFBQcwAoZJaHR0cDovL2NydC5zZWN0aWdv
LmNvbS9TZWN0aWdvUlNBQ2xpZW50QXV0aGVudGljYXRpb25hbmRTZWN1cmVFbWFpbENBLmNydDAj
BggrBgEFBQcwAYYXaHR0cDovL29jc3Auc2VjdGlnby5jb20wHgYDVR0RBBcwFYETZHdtdzJAaW5m
cmFkZWFkLm9yZzANBgkqhkiG9w0BAQsFAAOCAQEAyW6MUir5dm495teKqAQjDJwuFCi35h4xgnQv
Q/fzPXmtR9t54rpmI2TfyvcKgOXpqa7BGXNFfh1JsqexVkIqZP9uWB2J+uVMD+XZEs/KYNNX2PvI
lSPrzIB4Z2wyIGQpaPLlYflrrVFKv9CjT2zdqvy2maK7HKOQRt3BiJbVG5lRiwbbygldcALEV9Ch
WFfgSXvrWDZspnU3Gjw/rMHrGnqlHtlyebp3pf3fSS9kzQ1FVtVIDrL6eqhTwJxe+pXSMMqFiN0w
hpBtXdyDjzBtQTaZJ7zTT/vlehc/tDuqZwGHm/YJy883Ll+GP3NvOkgaRGWEuYWJJ6hFCkXYjyR9
IzGCBMcwggTDAgEBMIGsMIGWMQswCQYDVQQGEwJHQjEbMBkGA1UECBMSR3JlYXRlciBNYW5jaGVz
dGVyMRAwDgYDVQQHEwdTYWxmb3JkMRgwFgYDVQQKEw9TZWN0aWdvIExpbWl0ZWQxPjA8BgNVBAMT
NVNlY3RpZ28gUlNBIENsaWVudCBBdXRoZW50aWNhdGlvbiBhbmQgU2VjdXJlIEVtYWlsIENBAhEA
xr4ZlmdAxAMdKFES+jupfjANBglghkgBZQMEAgEFAKCCAeswGAYJKoZIhvcNAQkDMQsGCSqGSIb3
DQEHATAcBgkqhkiG9w0BCQUxDxcNMjQwMTI2MTQxNjA4WjAvBgkqhkiG9w0BCQQxIgQgQb0ttLNK
ysKXPWTpt4+aNlLnPrI4mCi3Qhm+Lj8XY04wgb0GCSsGAQQBgjcQBDGBrzCBrDCBljELMAkGA1UE
BhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEYMBYG
A1UEChMPU2VjdGlnbyBMaW1pdGVkMT4wPAYDVQQDEzVTZWN0aWdvIFJTQSBDbGllbnQgQXV0aGVu
dGljYXRpb24gYW5kIFNlY3VyZSBFbWFpbCBDQQIRAMa+GZZnQMQDHShREvo7qX4wgb8GCyqGSIb3
DQEJEAILMYGvoIGsMIGWMQswCQYDVQQGEwJHQjEbMBkGA1UECBMSR3JlYXRlciBNYW5jaGVzdGVy
MRAwDgYDVQQHEwdTYWxmb3JkMRgwFgYDVQQKEw9TZWN0aWdvIExpbWl0ZWQxPjA8BgNVBAMTNVNl
Y3RpZ28gUlNBIENsaWVudCBBdXRoZW50aWNhdGlvbiBhbmQgU2VjdXJlIEVtYWlsIENBAhEAxr4Z
lmdAxAMdKFES+jupfjANBgkqhkiG9w0BAQEFAASCAgCXZomon4T6lUQoX6pMSusRgH/GBZKqbNH3
LT9cO6mnQvJ0c0d6we81iMH1sB01fVWhG+LAgHMDqbuZyTAtvHl1nYTcJER9OWtTHWzkBabDJrXd
VDNnOXF2ekb4RRRkyiZZEQ//rdCiLfopHWWAIZXTXYVuIqAJDMVHRj/El8FV9aSx/kyWCPpt2MKs
xqPOzBuCpdKbe/rLi5+4UqJz/qXK0s5Yz+7VRfAnRdlM/fJJFneam8NTFkE58YzTzlN87Y+PFqzz
Ppj38ePd9c70AqNAOqpQAX41J1i0tAia2X7J8bWY79Ih0y75ynLBHlftF/QRLnZgOOaGRA2weylF
r/nJ31iMk8W91efk9SgHNYcxkOf/l9+LL5T3QMNk40Do3WXSRkGJ2b78oitcUGkjwdhsURaC/Nk+
tsCtXPCNY4F8sUHWvA0hkL+E6RX6vOyqMiE3g0cyoS+zNyUpuj01dbTja0nI/4vsCWo18Zzc3MJJ
6GKYdKSqVrVG3tcH+GKtO9RFUng3oQLZO5IA2CZCiOCCLP8Euxkg0LaHchMh6ijLXmd9ZahtoFHG
EdIFZslOON7eszPahtGx9ARq3D7FMtjYuzGfVTsMepYKIYJYTXpgw4U8lxkYkbECCsj2CvVVcYoT
jhfQuRjNVdJSjns9D249Vw8YiedpaogwmUizhvO3ywAAAAAAAA==


--=-z7NOS3lipot50VpBs+fh--


From xen-devel-bounces@lists.xenproject.org Fri Jan 26 14:24:47 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 26 Jan 2024 14:24:47 +0000
Received: from list by lists.xenproject.org with outflank-mailman.672037.1045643 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTN8F-0006FD-BZ; Fri, 26 Jan 2024 14:24:35 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 672037.1045643; Fri, 26 Jan 2024 14:24:35 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTN8F-0006F6-8j; Fri, 26 Jan 2024 14:24:35 +0000
Received: by outflank-mailman (input) for mailman id 672037;
 Fri, 26 Jan 2024 14:24:33 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=UtOA=JE=redhat.com=thuth@srs-se1.protection.inumbo.net>)
 id 1rTN8D-0006Ez-Te
 for xen-devel@lists.xenproject.org; Fri, 26 Jan 2024 14:24:33 +0000
Received: from us-smtp-delivery-124.mimecast.com
 (us-smtp-delivery-124.mimecast.com [170.10.129.124])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 9e83cb92-bc56-11ee-98f5-efadbce2ee36;
 Fri, 26 Jan 2024 15:24:31 +0100 (CET)
Received: from mail-ot1-f71.google.com (mail-ot1-f71.google.com
 [209.85.210.71]) by relay.mimecast.com with ESMTP with STARTTLS
 (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id
 us-mta-437-Dy-aiTOXN1OkTev1MCEqfA-1; Fri, 26 Jan 2024 09:24:28 -0500
Received: by mail-ot1-f71.google.com with SMTP id
 46e09a7af769-6e103d403c4so893929a34.0
 for <xen-devel@lists.xenproject.org>; Fri, 26 Jan 2024 06:24:28 -0800 (PST)
Received: from [192.168.0.9] (ip-109-43-176-119.web.vodafone.de.
 [109.43.176.119]) by smtp.gmail.com with ESMTPSA id
 t25-20020a0cb719000000b0068602f8966esm555293qvd.111.2024.01.26.06.24.15
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Fri, 26 Jan 2024 06:24:26 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 9e83cb92-bc56-11ee-98f5-efadbce2ee36
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
	s=mimecast20190719; t=1706279070;
	h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
	 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references:autocrypt:autocrypt;
	bh=jUrd5KTeD1q5DTPPS/kJC4Y1ngRfQ3py8ThoXCvuejQ=;
	b=E09fn31CvixwwQiKUxYj0IBnwagUDyfwabgdIoS+JAn8QuNlLst16VC35T7Y5e9amLSdGV
	v+OE8mAG2IRBTyBqFKIG25//PSa4dq6oZu7XwwAFIH7o0Gx/MW7d7bnmD+KV6fhd6VSmW1
	DygBSg8wMdvoiAV37kZDedVQKy+xaew=
X-MC-Unique: Dy-aiTOXN1OkTev1MCEqfA-1
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706279067; x=1706883867;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=jUrd5KTeD1q5DTPPS/kJC4Y1ngRfQ3py8ThoXCvuejQ=;
        b=XUz+jw4i2hvMjE1Ld842WFStF/BpY86AUkhwK2OAMBwdCW9fu5rh82/mpf/ryjEcm5
         /K7F8FADSGj6F8wcFJUb5ab21j66zE2ZlJ1YoN+0mxgrfTbDHK9LXbAT0vD99JetbRPd
         HGtyL33LcxiOycn96ApGUx3+MLZ7enh4LxqKiAyygVWPDc/bJX1URLieILhpmRV/Zjhu
         +15Ih51n0ve8FUrSTRc4bTlGM3/Q6pcM20xmYTgthJNZxCqPoZ8QT+ngOesC6ZeoWE9K
         sizdH0z4lqXlEqI00IO+2zchhXphEm2WhcoVxzW3QkNfh4YbmP8l0jNY5rybqsfObm+W
         4s3A==
X-Gm-Message-State: AOJu0YwVYsDo93XEJIVEn5Nw7gcmQLQFH3YwncPwiNCGAwDB1CesblDP
	O1PkYrn81ABkO2DgGtx5Prt6xS27b2tNy+3KnXcAT8KQtoD3uryIuP4gQiGzs58ZqjWG+C2BBb7
	ulW/SC7OAPyA3qFKUqN3sT3L//Rcwkhxrcp8snJZusb6BUVNd0p0g7/OuMzIvdPyU
X-Received: by 2002:a05:6830:16c9:b0:6dc:5e1:3d89 with SMTP id l9-20020a05683016c900b006dc05e13d89mr2502814otr.17.1706279067430;
        Fri, 26 Jan 2024 06:24:27 -0800 (PST)
X-Google-Smtp-Source: AGHT+IEvQb2QMtDakhsKad11G5Ngw+td2fWgSOrBLYhwo2dd5mgI0vJLO90pn1r13zxc6OJiiMceQQ==
X-Received: by 2002:a05:6830:16c9:b0:6dc:5e1:3d89 with SMTP id l9-20020a05683016c900b006dc05e13d89mr2502754otr.17.1706279067162;
        Fri, 26 Jan 2024 06:24:27 -0800 (PST)
Message-ID: <72f116bd-f9ce-4d61-bb21-b615f15eb4b1@redhat.com>
Date: Fri, 26 Jan 2024 15:24:13 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 01/46] net: add qemu_{configure, create}_nic_device(),
 qemu_find_nic_info()
To: David Woodhouse <dwmw2@infradead.org>, qemu-devel@nongnu.org
Cc: Richard Henderson <richard.henderson@linaro.org>,
 Beniamino Galvani <b.galvani@gmail.com>,
 Peter Maydell <peter.maydell@linaro.org>,
 Strahinja Jankovic <strahinja.p.jankovic@gmail.com>,
 Niek Linnenbank <nieklinnenbank@gmail.com>, =?UTF-8?Q?C=C3=A9dric_Le_Goater?=
 <clg@kaod.org>, Andrew Jeffery <andrew@codeconstruct.com.au>,
 Joel Stanley <joel@jms.id.au>, Igor Mitsyanko <i.mitsyanko@gmail.com>,
 Jean-Christophe Dubois <jcd@tribudubois.net>,
 Andrey Smirnov <andrew.smirnov@gmail.com>,
 =?UTF-8?Q?Philippe_Mathieu-Daud=C3=A9?= <philmd@linaro.org>,
 Rob Herring <robh@kernel.org>, Subbaraya Sundeep <sundeep.lkml@gmail.com>,
 Jan Kiszka <jan.kiszka@web.de>, Tyrone Ting <kfting@nuvoton.com>,
 Hao Wu <wuhaotsh@google.com>, Radoslaw Biernacki <rad@semihalf.com>,
 Leif Lindholm <quic_llindhol@quicinc.com>,
 Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org>,
 "Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
 Alistair Francis <alistair@alistair23.me>, Helge Deller <deller@gmx.de>,
 Paolo Bonzini <pbonzini@redhat.com>, Eduardo Habkost <eduardo@habkost.net>,
 "Michael S. Tsirkin" <mst@redhat.com>,
 Marcel Apfelbaum <marcel.apfelbaum@gmail.com>, Song Gao
 <gaosong@loongson.cn>, Thomas Huth <huth@tuxfamily.org>,
 Laurent Vivier <laurent@vivier.eu>, Huacai Chen <chenhuacai@kernel.org>,
 Jiaxun Yang <jiaxun.yang@flygoat.com>,
 =?UTF-8?Q?Herv=C3=A9_Poussineau?= <hpoussin@reactos.org>,
 Aleksandar Rikalo <aleksandar.rikalo@syrmia.com>,
 Aurelien Jarno <aurelien@aurel32.net>, Jason Wang <jasowang@redhat.com>,
 Jia Liu <proljc@gmail.com>, Stafford Horne <shorne@gmail.com>,
 Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>,
 Nicholas Piggin <npiggin@gmail.com>,
 Daniel Henrique Barboza <danielhb413@gmail.com>,
 David Gibson <david@gibson.dropbear.id.au>,
 Harsh Prateek Bora <harshpb@linux.ibm.com>, Bin Meng
 <bin.meng@windriver.com>, Palmer Dabbelt <palmer@dabbelt.com>,
 Weiwei Li <liwei1518@gmail.com>, Liu Zhiwei <zhiwei_liu@linux.alibaba.com>,
 Halil Pasic <pasic@linux.ibm.com>,
 Christian Borntraeger <borntraeger@linux.ibm.com>,
 Eric Farman <farman@linux.ibm.com>, David Hildenbrand <david@redhat.com>,
 Ilya Leoshkevich <iii@linux.ibm.com>,
 Yoshinori Sato <ysato@users.sourceforge.jp>,
 Magnus Damm <magnus.damm@gmail.com>, Artyom Tarasenko <atar4qemu@gmail.com>,
 Stefano Stabellini <sstabellini@kernel.org>,
 Anthony Perard <anthony.perard@citrix.com>, Paul Durrant <paul@xen.org>,
 Max Filippov <jcmvbkbc@gmail.com>, qemu-arm@nongnu.org, qemu-ppc@nongnu.org,
 qemu-riscv@nongnu.org, qemu-s390x@nongnu.org, xen-devel@lists.xenproject.org
References: <20240108204909.564514-1-dwmw2@infradead.org>
 <20240108204909.564514-2-dwmw2@infradead.org>
 <9218c20b-8ba8-402b-bea5-856cb51156dc@redhat.com>
 <0914e6a51218793cca3121879ef21b39d9aac612.camel@infradead.org>
From: Thomas Huth <thuth@redhat.com>
Autocrypt: addr=thuth@redhat.com; keydata=
 xsFNBFH7eUwBEACzyOXKU+5Pcs6wNpKzrlJwzRl3VGZt95VCdb+FgoU9g11m7FWcOafrVRwU
 yYkTm9+7zBUc0sW5AuPGR/dp3pSLX/yFWsA/UB4nJsHqgDvDU7BImSeiTrnpMOTXb7Arw2a2
 4CflIyFqjCpfDM4MuTmzTjXq4Uov1giGE9X6viNo1pxyEpd7PanlKNnf4PqEQp06X4IgUacW
 tSGj6Gcns1bCuHV8OPWLkf4hkRnu8hdL6i60Yxz4E6TqlrpxsfYwLXgEeswPHOA6Mn4Cso9O
 0lewVYfFfsmokfAVMKWzOl1Sr0KGI5T9CpmRfAiSHpthhHWnECcJFwl72NTi6kUcUzG4se81
 O6n9d/kTj7pzTmBdfwuOZ0YUSqcqs0W+l1NcASSYZQaDoD3/SLk+nqVeCBB4OnYOGhgmIHNW
 0CwMRO/GK+20alxzk//V9GmIM2ACElbfF8+Uug3pqiHkVnKqM7W9/S1NH2qmxB6zMiJUHlTH
 gnVeZX0dgH27mzstcF786uPcdEqS0KJuxh2kk5IvUSL3Qn3ZgmgdxBMyCPciD/1cb7/Ahazr
 3ThHQXSHXkH/aDXdfLsKVuwDzHLVSkdSnZdt5HHh75/NFHxwaTlydgfHmFFwodK8y/TjyiGZ
 zg2Kje38xnz8zKn9iesFBCcONXS7txENTzX0z80WKBhK+XSFJwARAQABzR5UaG9tYXMgSHV0
 aCA8dGh1dGhAcmVkaGF0LmNvbT7CwXgEEwECACIFAlVgX6oCGwMGCwkIBwMCBhUIAgkKCwQW
 AgMBAh4BAheAAAoJEC7Z13T+cC21EbIP/ii9cvT2HHGbFRl8HqGT6+7Wkb+XLMqJBMAIGiQK
 QIP3xk1HPTsLfVG0ao4hy/oYkGNOP8+ubLnZen6Yq3zAFiMhQ44lvgigDYJo3Ve59gfe99KX
 EbtB+X95ODARkq0McR6OAsPNJ7gpEUzfkQUUJTXRDQXfG/FX303Gvk+YU0spm2tsIKPl6AmV
 1CegDljzjycyfJbk418MQmMu2T82kjrkEofUO2a24ed3VGC0/Uz//XCR2ZTo+vBoBUQl41BD
 eFFtoCSrzo3yPFS+w5fkH9NT8ChdpSlbNS32NhYQhJtr9zjWyFRf0Zk+T/1P7ECn6gTEkp5k
 ofFIA4MFBc/fXbaDRtBmPB0N9pqTFApIUI4vuFPPO0JDrII9dLwZ6lO9EKiwuVlvr1wwzsgq
 zJTPBU3qHaUO4d/8G+gD7AL/6T4zi8Jo/GmjBsnYaTzbm94lf0CjXjsOX3seMhaE6WAZOQQG
 tZHAO1kAPWpaxne+wtgMKthyPLNwelLf+xzGvrIKvLX6QuLoWMnWldu22z2ICVnLQChlR9d6
 WW8QFEpo/FK7omuS8KvvopFcOOdlbFMM8Y/8vBgVMSsK6fsYUhruny/PahprPbYGiNIhKqz7
 UvgyZVl4pBFjTaz/SbimTk210vIlkDyy1WuS8Zsn0htv4+jQPgo9rqFE4mipJjy/iboDzsFN
 BFH7eUwBEAC2nzfUeeI8dv0C4qrfCPze6NkryUflEut9WwHhfXCLjtvCjnoGqFelH/PE9NF4
 4VPSCdvD1SSmFVzu6T9qWdcwMSaC+e7G/z0/AhBfqTeosAF5XvKQlAb9ZPkdDr7YN0a1XDfa
 +NgA+JZB4ROyBZFFAwNHT+HCnyzy0v9Sh3BgJJwfpXHH2l3LfncvV8rgFv0bvdr70U+On2XH
 5bApOyW1WpIG5KPJlDdzcQTyptOJ1dnEHfwnABEfzI3dNf63rlxsGouX/NFRRRNqkdClQR3K
 gCwciaXfZ7ir7fF0u1N2UuLsWA8Ei1JrNypk+MRxhbvdQC4tyZCZ8mVDk+QOK6pyK2f4rMf/
 WmqxNTtAVmNuZIwnJdjRMMSs4W4w6N/bRvpqtykSqx7VXcgqtv6eqoDZrNuhGbekQA0sAnCJ
 VPArerAZGArm63o39me/bRUQeQVSxEBmg66yshF9HkcUPGVeC4B0TPwz+HFcVhheo6hoJjLq
 knFOPLRj+0h+ZL+D0GenyqD3CyuyeTT5dGcNU9qT74bdSr20k/CklvI7S9yoQje8BeQAHtdV
 cvO8XCLrpGuw9SgOS7OP5oI26a0548M4KldAY+kqX6XVphEw3/6U1KTf7WxW5zYLTtadjISB
 X9xsRWSU+Yqs3C7oN5TIPSoj9tXMoxZkCIHWvnqGwZ7JhwARAQABwsFfBBgBAgAJBQJR+3lM
 AhsMAAoJEC7Z13T+cC21hPAQAIsBL9MdGpdEpvXs9CYrBkd6tS9mbaSWj6XBDfA1AEdQkBOn
 ZH1Qt7HJesk+qNSnLv6+jP4VwqK5AFMrKJ6IjE7jqgzGxtcZnvSjeDGPF1h2CKZQPpTw890k
 fy18AvgFHkVk2Oylyexw3aOBsXg6ukN44vIFqPoc+YSU0+0QIdYJp/XFsgWxnFIMYwDpxSHS
 5fdDxUjsk3UBHZx+IhFjs2siVZi5wnHIqM7eK9abr2cK2weInTBwXwqVWjsXZ4tq5+jQrwDK
 cvxIcwXdUTLGxc4/Z/VRH1PZSvfQxdxMGmNTGaXVNfdFZjm4fz0mz+OUi6AHC4CZpwnsliGV
 ODqwX8Y1zic9viSTbKS01ZNp175POyWViUk9qisPZB7ypfSIVSEULrL347qY/hm9ahhqmn17
 Ng255syASv3ehvX7iwWDfzXbA0/TVaqwa1YIkec+/8miicV0zMP9siRcYQkyTqSzaTFBBmqD
 oiT+z+/E59qj/EKfyce3sbC9XLjXv3mHMrq1tKX4G7IJGnS989E/fg6crv6NHae9Ckm7+lSs
 IQu4bBP2GxiRQ+NV3iV/KU3ebMRzqIC//DCOxzQNFNJAKldPe/bKZMCxEqtVoRkuJtNdp/5a
 yXFZ6TfE1hGKrDBYAm4vrnZ4CXFSBDllL59cFFOJCkn4Xboj/aVxxJxF30bn
In-Reply-To: <0914e6a51218793cca3121879ef21b39d9aac612.camel@infradead.org>
X-Mimecast-Spam-Score: 0
X-Mimecast-Originator: redhat.com
Content-Language: en-US
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit

On 26/01/2024 15.16, David Woodhouse wrote:
> On Fri, 2024-01-26 at 12:10 +0100, Thomas Huth wrote:
>>
>>> +/* "Please create a device, if you have a configuration for it" */
>>> +DeviceState *qemu_create_nic_device(const char *typename, bool match_default,
>>> +                                    const char *alias)
>>> +{
>>> +    NICInfo *nd = qemu_find_nic_info(typename, match_default, alias);
>>> +    DeviceState *dev;
>>> +
>>> +    if (!nd) {
>>> +        return NULL;
>>> +    }
>>
>> The qemu_check_nic_model() function that was used in some code that you
>> turned into qemu_create_nic_device() used to set:
>>
>>       if (!nd->model)
>>           nd->model = g_strdup(default_model);
>>
>> (in the qemu_find_nic_model() function that has been called by
>> qemu_check_nic_model())
>>
>> Should we do that also here to make sure that nd->model is not NULL afterwards?
> 
> Good question, but I don't think we care. The qdev_set_nic_properties()
> function certainly doesn't propagate nd->model to anywhere.
> 
> I renamed nd->model to nd->modelname in a patch shown below, just to be
> 100% sure I'm not missing any other code paths which might consume it.

Ok, thanks for checking! Maybe mention it in the patch description in v4, so 
that we've got it recorded somewhere that nd->model might be left at NULL 
afterwards, but that there are no further consumers, so it should be fine?

  Thomas




From xen-devel-bounces@lists.xenproject.org Fri Jan 26 14:34:02 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 26 Jan 2024 14:34:02 +0000
Received: from list by lists.xenproject.org with outflank-mailman.672041.1045653 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTNHI-00084r-68; Fri, 26 Jan 2024 14:33:56 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 672041.1045653; Fri, 26 Jan 2024 14:33:56 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTNHI-00084k-3P; Fri, 26 Jan 2024 14:33:56 +0000
Received: by outflank-mailman (input) for mailman id 672041;
 Fri, 26 Jan 2024 14:33:54 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=UtOA=JE=redhat.com=thuth@srs-se1.protection.inumbo.net>)
 id 1rTNHG-00084e-89
 for xen-devel@lists.xenproject.org; Fri, 26 Jan 2024 14:33:54 +0000
Received: from us-smtp-delivery-124.mimecast.com
 (us-smtp-delivery-124.mimecast.com [170.10.129.124])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id ec9d43cb-bc57-11ee-98f5-efadbce2ee36;
 Fri, 26 Jan 2024 15:33:52 +0100 (CET)
Received: from mail-qk1-f198.google.com (mail-qk1-f198.google.com
 [209.85.222.198]) by relay.mimecast.com with ESMTP with STARTTLS
 (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id
 us-mta-459-bajFMqihMqird2V13U2hbA-1; Fri, 26 Jan 2024 09:33:48 -0500
Received: by mail-qk1-f198.google.com with SMTP id
 af79cd13be357-78377692045so57889885a.0
 for <xen-devel@lists.xenproject.org>; Fri, 26 Jan 2024 06:33:48 -0800 (PST)
Received: from [192.168.0.9] (ip-109-43-176-119.web.vodafone.de.
 [109.43.176.119]) by smtp.gmail.com with ESMTPSA id
 y5-20020a37e305000000b0078392eacfd4sm619792qki.80.2024.01.26.06.33.33
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Fri, 26 Jan 2024 06:33:47 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: ec9d43cb-bc57-11ee-98f5-efadbce2ee36
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
	s=mimecast20190719; t=1706279631;
	h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
	 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references:autocrypt:autocrypt;
	bh=XO3uKYSgCxcQQA08HN7uml3FSQq73eoPnM4iRraw2cY=;
	b=NwsMUB/6PxY0JCumybYXX9mAauu73kmFVYkoiceuNOYUSQkfOIM6gL6h/oUDEvCauyGZ2U
	E5ZwqzUUR4ycXcpVrvzBjwLC9evGHCDD3/3sbxB5kHenGhsfFELjH4OBJFPI1wS0d60mmP
	2B2pEh113iWJlJBTbD+/651LifpUTVA=
X-MC-Unique: bajFMqihMqird2V13U2hbA-1
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706279628; x=1706884428;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=XO3uKYSgCxcQQA08HN7uml3FSQq73eoPnM4iRraw2cY=;
        b=ibJZe54d2gvFUOaQ3gXcFTKjgAY8RFlgdpPmxd+LhhFZs9zJmnkVzY/ToZ+DBpju5L
         RF5pwULh87aYr9iszdXtfYZz+B9VUlw7lEpY8JhsorENdS6xWWfyFPhqrrF0kKGWjwTe
         NBi8wOLB/pW30S/zJuIbiQzj5WmYOEpUcRTKHyZoTsiuwDEXj4pReFwtG89x1zjcKtfZ
         FHKHil/YrmvsNJWvYJGkwd3HhJUkvnwqldCsABP9/MFypWrNkF24kjbG7/k20Rq58wd/
         J2jveE7IOg4Crtq/Zkt0a1Mm9FLzFN2hkoo8lXopiJpETCaI2lrsfXo6/ukztCPJlDo4
         n62Q==
X-Gm-Message-State: AOJu0YwxaX5CPPP3hA1qrqQVhOnF0AY9CyYCXk5obwnn+s2ZdP6Nl/XD
	/lDruih0xTqyr17vb63WIPa7yU46F0IEkIJy8RmIP4KsyZdDM++W1dStSS2Mk2j0ki8Svkmcjn/
	9JAoik1mwn26I6N9D2pV+L/NvNr9MYdRz7aQvH0fTQp9W0pKRQjK+X/BZvZF7xxzJ
X-Received: by 2002:a05:620a:a46:b0:783:9a8f:27a4 with SMTP id j6-20020a05620a0a4600b007839a8f27a4mr1843473qka.5.1706279627836;
        Fri, 26 Jan 2024 06:33:47 -0800 (PST)
X-Google-Smtp-Source: AGHT+IFLU1FiT+dpVwDXfyESOn/OYV+USTQU7Glot+fqvgnRH9/ehvAQ6E+hMypl3svO3bsrsSmPRA==
X-Received: by 2002:a05:620a:a46:b0:783:9a8f:27a4 with SMTP id j6-20020a05620a0a4600b007839a8f27a4mr1843428qka.5.1706279627561;
        Fri, 26 Jan 2024 06:33:47 -0800 (PST)
Message-ID: <9ae3e373-5213-4906-9a57-7a5eb026a51f@redhat.com>
Date: Fri, 26 Jan 2024 15:33:30 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 02/46] net: report list of available models according
 to platform
To: David Woodhouse <dwmw2@infradead.org>, qemu-devel@nongnu.org
Cc: Richard Henderson <richard.henderson@linaro.org>,
 Beniamino Galvani <b.galvani@gmail.com>,
 Peter Maydell <peter.maydell@linaro.org>,
 Strahinja Jankovic <strahinja.p.jankovic@gmail.com>,
 Niek Linnenbank <nieklinnenbank@gmail.com>, =?UTF-8?Q?C=C3=A9dric_Le_Goater?=
 <clg@kaod.org>, Andrew Jeffery <andrew@codeconstruct.com.au>,
 Joel Stanley <joel@jms.id.au>, Igor Mitsyanko <i.mitsyanko@gmail.com>,
 Jean-Christophe Dubois <jcd@tribudubois.net>,
 Andrey Smirnov <andrew.smirnov@gmail.com>,
 =?UTF-8?Q?Philippe_Mathieu-Daud=C3=A9?= <philmd@linaro.org>,
 Rob Herring <robh@kernel.org>, Subbaraya Sundeep <sundeep.lkml@gmail.com>,
 Jan Kiszka <jan.kiszka@web.de>, Tyrone Ting <kfting@nuvoton.com>,
 Hao Wu <wuhaotsh@google.com>, Radoslaw Biernacki <rad@semihalf.com>,
 Leif Lindholm <quic_llindhol@quicinc.com>,
 Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org>,
 "Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
 Alistair Francis <alistair@alistair23.me>, Helge Deller <deller@gmx.de>,
 Paolo Bonzini <pbonzini@redhat.com>, Eduardo Habkost <eduardo@habkost.net>,
 "Michael S. Tsirkin" <mst@redhat.com>,
 Marcel Apfelbaum <marcel.apfelbaum@gmail.com>, Song Gao
 <gaosong@loongson.cn>, Thomas Huth <huth@tuxfamily.org>,
 Laurent Vivier <laurent@vivier.eu>, Huacai Chen <chenhuacai@kernel.org>,
 Jiaxun Yang <jiaxun.yang@flygoat.com>,
 =?UTF-8?Q?Herv=C3=A9_Poussineau?= <hpoussin@reactos.org>,
 Aleksandar Rikalo <aleksandar.rikalo@syrmia.com>,
 Aurelien Jarno <aurelien@aurel32.net>, Jason Wang <jasowang@redhat.com>,
 Jia Liu <proljc@gmail.com>, Stafford Horne <shorne@gmail.com>,
 Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>,
 Nicholas Piggin <npiggin@gmail.com>,
 Daniel Henrique Barboza <danielhb413@gmail.com>,
 David Gibson <david@gibson.dropbear.id.au>,
 Harsh Prateek Bora <harshpb@linux.ibm.com>, Bin Meng
 <bin.meng@windriver.com>, Palmer Dabbelt <palmer@dabbelt.com>,
 Weiwei Li <liwei1518@gmail.com>, Liu Zhiwei <zhiwei_liu@linux.alibaba.com>,
 Halil Pasic <pasic@linux.ibm.com>,
 Christian Borntraeger <borntraeger@linux.ibm.com>,
 Eric Farman <farman@linux.ibm.com>, David Hildenbrand <david@redhat.com>,
 Ilya Leoshkevich <iii@linux.ibm.com>,
 Yoshinori Sato <ysato@users.sourceforge.jp>,
 Magnus Damm <magnus.damm@gmail.com>, Artyom Tarasenko <atar4qemu@gmail.com>,
 Stefano Stabellini <sstabellini@kernel.org>,
 Anthony Perard <anthony.perard@citrix.com>, Paul Durrant <paul@xen.org>,
 Max Filippov <jcmvbkbc@gmail.com>, qemu-arm@nongnu.org, qemu-ppc@nongnu.org,
 qemu-riscv@nongnu.org, qemu-s390x@nongnu.org,
 xen-devel@lists.xenproject.org, David Woodhouse <dwmw@amazon.co.uk>
References: <20240108204909.564514-1-dwmw2@infradead.org>
 <20240108204909.564514-3-dwmw2@infradead.org>
From: Thomas Huth <thuth@redhat.com>
Autocrypt: addr=thuth@redhat.com; keydata=
 xsFNBFH7eUwBEACzyOXKU+5Pcs6wNpKzrlJwzRl3VGZt95VCdb+FgoU9g11m7FWcOafrVRwU
 yYkTm9+7zBUc0sW5AuPGR/dp3pSLX/yFWsA/UB4nJsHqgDvDU7BImSeiTrnpMOTXb7Arw2a2
 4CflIyFqjCpfDM4MuTmzTjXq4Uov1giGE9X6viNo1pxyEpd7PanlKNnf4PqEQp06X4IgUacW
 tSGj6Gcns1bCuHV8OPWLkf4hkRnu8hdL6i60Yxz4E6TqlrpxsfYwLXgEeswPHOA6Mn4Cso9O
 0lewVYfFfsmokfAVMKWzOl1Sr0KGI5T9CpmRfAiSHpthhHWnECcJFwl72NTi6kUcUzG4se81
 O6n9d/kTj7pzTmBdfwuOZ0YUSqcqs0W+l1NcASSYZQaDoD3/SLk+nqVeCBB4OnYOGhgmIHNW
 0CwMRO/GK+20alxzk//V9GmIM2ACElbfF8+Uug3pqiHkVnKqM7W9/S1NH2qmxB6zMiJUHlTH
 gnVeZX0dgH27mzstcF786uPcdEqS0KJuxh2kk5IvUSL3Qn3ZgmgdxBMyCPciD/1cb7/Ahazr
 3ThHQXSHXkH/aDXdfLsKVuwDzHLVSkdSnZdt5HHh75/NFHxwaTlydgfHmFFwodK8y/TjyiGZ
 zg2Kje38xnz8zKn9iesFBCcONXS7txENTzX0z80WKBhK+XSFJwARAQABzR5UaG9tYXMgSHV0
 aCA8dGh1dGhAcmVkaGF0LmNvbT7CwXgEEwECACIFAlVgX6oCGwMGCwkIBwMCBhUIAgkKCwQW
 AgMBAh4BAheAAAoJEC7Z13T+cC21EbIP/ii9cvT2HHGbFRl8HqGT6+7Wkb+XLMqJBMAIGiQK
 QIP3xk1HPTsLfVG0ao4hy/oYkGNOP8+ubLnZen6Yq3zAFiMhQ44lvgigDYJo3Ve59gfe99KX
 EbtB+X95ODARkq0McR6OAsPNJ7gpEUzfkQUUJTXRDQXfG/FX303Gvk+YU0spm2tsIKPl6AmV
 1CegDljzjycyfJbk418MQmMu2T82kjrkEofUO2a24ed3VGC0/Uz//XCR2ZTo+vBoBUQl41BD
 eFFtoCSrzo3yPFS+w5fkH9NT8ChdpSlbNS32NhYQhJtr9zjWyFRf0Zk+T/1P7ECn6gTEkp5k
 ofFIA4MFBc/fXbaDRtBmPB0N9pqTFApIUI4vuFPPO0JDrII9dLwZ6lO9EKiwuVlvr1wwzsgq
 zJTPBU3qHaUO4d/8G+gD7AL/6T4zi8Jo/GmjBsnYaTzbm94lf0CjXjsOX3seMhaE6WAZOQQG
 tZHAO1kAPWpaxne+wtgMKthyPLNwelLf+xzGvrIKvLX6QuLoWMnWldu22z2ICVnLQChlR9d6
 WW8QFEpo/FK7omuS8KvvopFcOOdlbFMM8Y/8vBgVMSsK6fsYUhruny/PahprPbYGiNIhKqz7
 UvgyZVl4pBFjTaz/SbimTk210vIlkDyy1WuS8Zsn0htv4+jQPgo9rqFE4mipJjy/iboDzsFN
 BFH7eUwBEAC2nzfUeeI8dv0C4qrfCPze6NkryUflEut9WwHhfXCLjtvCjnoGqFelH/PE9NF4
 4VPSCdvD1SSmFVzu6T9qWdcwMSaC+e7G/z0/AhBfqTeosAF5XvKQlAb9ZPkdDr7YN0a1XDfa
 +NgA+JZB4ROyBZFFAwNHT+HCnyzy0v9Sh3BgJJwfpXHH2l3LfncvV8rgFv0bvdr70U+On2XH
 5bApOyW1WpIG5KPJlDdzcQTyptOJ1dnEHfwnABEfzI3dNf63rlxsGouX/NFRRRNqkdClQR3K
 gCwciaXfZ7ir7fF0u1N2UuLsWA8Ei1JrNypk+MRxhbvdQC4tyZCZ8mVDk+QOK6pyK2f4rMf/
 WmqxNTtAVmNuZIwnJdjRMMSs4W4w6N/bRvpqtykSqx7VXcgqtv6eqoDZrNuhGbekQA0sAnCJ
 VPArerAZGArm63o39me/bRUQeQVSxEBmg66yshF9HkcUPGVeC4B0TPwz+HFcVhheo6hoJjLq
 knFOPLRj+0h+ZL+D0GenyqD3CyuyeTT5dGcNU9qT74bdSr20k/CklvI7S9yoQje8BeQAHtdV
 cvO8XCLrpGuw9SgOS7OP5oI26a0548M4KldAY+kqX6XVphEw3/6U1KTf7WxW5zYLTtadjISB
 X9xsRWSU+Yqs3C7oN5TIPSoj9tXMoxZkCIHWvnqGwZ7JhwARAQABwsFfBBgBAgAJBQJR+3lM
 AhsMAAoJEC7Z13T+cC21hPAQAIsBL9MdGpdEpvXs9CYrBkd6tS9mbaSWj6XBDfA1AEdQkBOn
 ZH1Qt7HJesk+qNSnLv6+jP4VwqK5AFMrKJ6IjE7jqgzGxtcZnvSjeDGPF1h2CKZQPpTw890k
 fy18AvgFHkVk2Oylyexw3aOBsXg6ukN44vIFqPoc+YSU0+0QIdYJp/XFsgWxnFIMYwDpxSHS
 5fdDxUjsk3UBHZx+IhFjs2siVZi5wnHIqM7eK9abr2cK2weInTBwXwqVWjsXZ4tq5+jQrwDK
 cvxIcwXdUTLGxc4/Z/VRH1PZSvfQxdxMGmNTGaXVNfdFZjm4fz0mz+OUi6AHC4CZpwnsliGV
 ODqwX8Y1zic9viSTbKS01ZNp175POyWViUk9qisPZB7ypfSIVSEULrL347qY/hm9ahhqmn17
 Ng255syASv3ehvX7iwWDfzXbA0/TVaqwa1YIkec+/8miicV0zMP9siRcYQkyTqSzaTFBBmqD
 oiT+z+/E59qj/EKfyce3sbC9XLjXv3mHMrq1tKX4G7IJGnS989E/fg6crv6NHae9Ckm7+lSs
 IQu4bBP2GxiRQ+NV3iV/KU3ebMRzqIC//DCOxzQNFNJAKldPe/bKZMCxEqtVoRkuJtNdp/5a
 yXFZ6TfE1hGKrDBYAm4vrnZ4CXFSBDllL59cFFOJCkn4Xboj/aVxxJxF30bn
In-Reply-To: <20240108204909.564514-3-dwmw2@infradead.org>
X-Mimecast-Spam-Score: 0
X-Mimecast-Originator: redhat.com
Content-Language: en-US
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

On 08/01/2024 21.26, David Woodhouse wrote:
> From: David Woodhouse <dwmw@amazon.co.uk>
> 
> By noting the models for which a configuration was requested, we can give
> the user an accurate list of which NIC models were actually available on
> the platform/configuration that was otherwise chosen.
> 
> Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
> Reviewed-by: Paul Durrant <paul@xen.org>
> ---
>   net/net.c | 94 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
>   1 file changed, 94 insertions(+)
> 
> diff --git a/net/net.c b/net/net.c
> index aeb7f573fc..962904eaef 100644
> --- a/net/net.c
> +++ b/net/net.c
> @@ -75,6 +75,8 @@ typedef QSIMPLEQ_HEAD(, NetdevQueueEntry) NetdevQueue;
>   
>   static NetdevQueue nd_queue = QSIMPLEQ_HEAD_INITIALIZER(nd_queue);
>   
> +static GHashTable *nic_model_help;
> +
>   /***********************************************************/
>   /* network device redirectors */
>   
> @@ -1087,12 +1089,94 @@ static int net_init_nic(const Netdev *netdev, const char *name,
>       return idx;
>   }
>   
> +static gboolean add_nic_result(gpointer key, gpointer value, gpointer user_data)
> +{
> +    GPtrArray *results = user_data;
> +    GPtrArray *alias_list = value;
> +    const char *model = key;
> +    char *result;
> +
> +    if (!alias_list) {
> +        result = g_strdup(model);
> +    } else {
> +        GString *result_str = g_string_new(model);
> +        int i;
> +
> +        g_string_append(result_str, " (aka ");

It's an abbreviation, so I'd rather use "a.k.a." instead of "aka".

Apart from that, the patch looks reasonable to me.

  Thomas

> +        for (i = 0; i < alias_list->len; i++) {
> +            if (i) {
> +                g_string_append(result_str, ", ");
> +            }
> +            g_string_append(result_str, alias_list->pdata[i]);
> +        }
> +        g_string_append(result_str, ")");
> +        result = result_str->str;
> +        g_string_free(result_str, false);
> +        g_ptr_array_unref(alias_list);
> +    }
> +    g_ptr_array_add(results, result);
> +    return true;
> +}
...



From xen-devel-bounces@lists.xenproject.org Fri Jan 26 14:35:25 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 26 Jan 2024 14:35:25 +0000
Received: from list by lists.xenproject.org with outflank-mailman.672043.1045662 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTNIi-0000Eb-FO; Fri, 26 Jan 2024 14:35:24 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 672043.1045662; Fri, 26 Jan 2024 14:35:24 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTNIi-0000EU-CT; Fri, 26 Jan 2024 14:35:24 +0000
Received: by outflank-mailman (input) for mailman id 672043;
 Fri, 26 Jan 2024 14:35:23 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=bPDA=JE=casper.srs.infradead.org=BATV+7caeb094913322f6f00d+7460+infradead.org+dwmw2@srs-se1.protection.inumbo.net>)
 id 1rTNIh-0000EO-0e
 for xen-devel@lists.xenproject.org; Fri, 26 Jan 2024 14:35:23 +0000
Received: from casper.infradead.org (casper.infradead.org
 [2001:8b0:10b:1236::1])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 214c2a50-bc58-11ee-98f5-efadbce2ee36;
 Fri, 26 Jan 2024 15:35:20 +0100 (CET)
Received: from [2001:8b0:10b:5:d160:e4ac:a057:38f5]
 (helo=u3832b3a9db3152.ant.amazon.com)
 by casper.infradead.org with esmtpsa (Exim 4.97.1 #2 (Red Hat Linux))
 id 1rTNI6-0000000DsbK-2bpX; Fri, 26 Jan 2024 14:34:48 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 214c2a50-bc58-11ee-98f5-efadbce2ee36
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=infradead.org; s=casper.20170209; h=MIME-Version:Content-Type:References:
	In-Reply-To:Date:Cc:To:From:Subject:Message-ID:Sender:Reply-To:
	Content-Transfer-Encoding:Content-ID:Content-Description;
	bh=QOJP6Wa3K3U5hGRKT2qp+mvLpiYLUlN1d8vR6m8nLds=; b=TjpklgRv6mOXFqvrAQ8l3AK33b
	zo3MZ8+2o6pHS5jkzyyTac81MDBnlHh0U7NaVQD+MeY3Nb7lA5d1LpOfUpJzz9COG6zVwEYA8SVfZ
	x2hY/7f5ZIPhNa5Z3f6FH5WO+UKJht0YHKMcgJv3RyI9I2ZgdcKxDuQr2RUUbUOFjmS9Rf9YEjoNf
	s0qdGm+qTPNXQcfmmRT4y9A6FnDhN4TBFygUtSGpWcE7Wi97DVediYheZeaP8iaTfYEWOitwxHRlC
	uZ7AxS4IHTf5hnJucYXmU3STlXWtYu0pkniRvObwI2tR2aX7hcOewjmqgShOuX9d50C2G6sizE/8d
	fupgyG4w==;
Message-ID: <20c19bd1f19ebc2b1c0100f447a709dda076f721.camel@infradead.org>
Subject: Re: [PATCH v3 01/46] net: add qemu_{configure,
 create}_nic_device(), qemu_find_nic_info()
From: David Woodhouse <dwmw2@infradead.org>
To: Thomas Huth <thuth@redhat.com>, qemu-devel@nongnu.org
Cc: Richard Henderson <richard.henderson@linaro.org>, Beniamino Galvani
 <b.galvani@gmail.com>, Peter Maydell <peter.maydell@linaro.org>, Strahinja
 Jankovic <strahinja.p.jankovic@gmail.com>, Niek Linnenbank
 <nieklinnenbank@gmail.com>,  =?ISO-8859-1?Q?C=E9dric?= Le Goater
 <clg@kaod.org>, Andrew Jeffery <andrew@codeconstruct.com.au>, Joel Stanley
 <joel@jms.id.au>, Igor Mitsyanko <i.mitsyanko@gmail.com>, Jean-Christophe
 Dubois <jcd@tribudubois.net>, Andrey Smirnov <andrew.smirnov@gmail.com>,
 Philippe =?ISO-8859-1?Q?Mathieu-Daud=E9?= <philmd@linaro.org>, Rob Herring
 <robh@kernel.org>, Subbaraya Sundeep <sundeep.lkml@gmail.com>, Jan Kiszka
 <jan.kiszka@web.de>, Tyrone Ting <kfting@nuvoton.com>, Hao Wu
 <wuhaotsh@google.com>, Radoslaw Biernacki <rad@semihalf.com>, Leif Lindholm
 <quic_llindhol@quicinc.com>, Marcin Juszkiewicz
 <marcin.juszkiewicz@linaro.org>, "Edgar E. Iglesias"
 <edgar.iglesias@gmail.com>, Alistair Francis <alistair@alistair23.me>,
 Helge Deller <deller@gmx.de>, Paolo Bonzini <pbonzini@redhat.com>,  Eduardo
 Habkost <eduardo@habkost.net>, "Michael S. Tsirkin" <mst@redhat.com>,
 Marcel Apfelbaum <marcel.apfelbaum@gmail.com>, Song Gao
 <gaosong@loongson.cn>, Thomas Huth <huth@tuxfamily.org>, Laurent Vivier
 <laurent@vivier.eu>, Huacai Chen <chenhuacai@kernel.org>, Jiaxun Yang
 <jiaxun.yang@flygoat.com>,  =?ISO-8859-1?Q?Herv=E9?= Poussineau
 <hpoussin@reactos.org>, Aleksandar Rikalo <aleksandar.rikalo@syrmia.com>, 
 Aurelien Jarno <aurelien@aurel32.net>, Jason Wang <jasowang@redhat.com>,
 Jia Liu <proljc@gmail.com>, Stafford Horne <shorne@gmail.com>, Mark
 Cave-Ayland <mark.cave-ayland@ilande.co.uk>, Nicholas Piggin
 <npiggin@gmail.com>, Daniel Henrique Barboza <danielhb413@gmail.com>, David
 Gibson <david@gibson.dropbear.id.au>, Harsh Prateek Bora
 <harshpb@linux.ibm.com>, Bin Meng <bin.meng@windriver.com>, Palmer Dabbelt
 <palmer@dabbelt.com>, Weiwei Li <liwei1518@gmail.com>, Liu Zhiwei
 <zhiwei_liu@linux.alibaba.com>, Halil Pasic <pasic@linux.ibm.com>,
 Christian Borntraeger <borntraeger@linux.ibm.com>,  Eric Farman
 <farman@linux.ibm.com>, David Hildenbrand <david@redhat.com>, Ilya
 Leoshkevich <iii@linux.ibm.com>, Yoshinori Sato
 <ysato@users.sourceforge.jp>, Magnus Damm <magnus.damm@gmail.com>, Artyom
 Tarasenko <atar4qemu@gmail.com>, Stefano Stabellini
 <sstabellini@kernel.org>, Anthony Perard <anthony.perard@citrix.com>, Paul
 Durrant <paul@xen.org>, Max Filippov <jcmvbkbc@gmail.com>,
 qemu-arm@nongnu.org,  qemu-ppc@nongnu.org, qemu-riscv@nongnu.org,
 qemu-s390x@nongnu.org,  xen-devel@lists.xenproject.org
Date: Fri, 26 Jan 2024 14:34:46 +0000
In-Reply-To: <72f116bd-f9ce-4d61-bb21-b615f15eb4b1@redhat.com>
References: <20240108204909.564514-1-dwmw2@infradead.org>
	 <20240108204909.564514-2-dwmw2@infradead.org>
	 <9218c20b-8ba8-402b-bea5-856cb51156dc@redhat.com>
	 <0914e6a51218793cca3121879ef21b39d9aac612.camel@infradead.org>
	 <72f116bd-f9ce-4d61-bb21-b615f15eb4b1@redhat.com>
Content-Type: multipart/signed; micalg="sha-256"; protocol="application/pkcs7-signature";
	boundary="=-H7XB5yYqXr6Val4ZW3cr"
User-Agent: Evolution 3.44.4-0ubuntu2 
MIME-Version: 1.0
X-SRS-Rewrite: SMTP reverse-path rewritten from <dwmw2@infradead.org> by casper.infradead.org. See http://www.infradead.org/rpr.html


--=-H7XB5yYqXr6Val4ZW3cr
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

On Fri, 2024-01-26 at 15:24 +0100, Thomas Huth wrote:
> On 26/01/2024 15.16, David Woodhouse wrote:
> > On Fri, 2024-01-26 at 12:10 +0100, Thomas Huth wrote:
> > >=20
> > > > +/* "Please create a device, if you have a configuration for it" */
> > > > +DeviceState *qemu_create_nic_device(const char *typename, bool mat=
ch_default,
> > > > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 const=
 char *alias)
> > > > +{
> > > > +=C2=A0=C2=A0=C2=A0 NICInfo *nd =3D qemu_find_nic_info(typename, ma=
tch_default, alias);
> > > > +=C2=A0=C2=A0=C2=A0 DeviceState *dev;
> > > > +
> > > > +=C2=A0=C2=A0=C2=A0 if (!nd) {
> > > > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 return NULL;
> > > > +=C2=A0=C2=A0=C2=A0 }
> > >=20
> > > The qemu_check_nic_model() function that was used in some code that y=
ou
> > > turned into qemu_create_nic_device() used to set:
> > >=20
> > > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 if (!nd->model)
> > > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 nd->model =3D =
g_strdup(default_model);
> > >=20
> > > (in the qemu_find_nic_model() function that has been called by
> > > qemu_check_nic_model())
> > >=20
> > > Should we do that also here to make sure that nd->model is not NULL a=
fterwards?
> >=20
> > Good question, but I don't think we care. The qdev_set_nic_properties()
> > function certainly doesn't propagate nd->model to anywhere.
> >=20
> > I renamed nd->model to nd->modelname in a patch shown below, just to be
> > 100% sure I'm not missing any other code paths which might consume it.
>=20
> Ok, thanks for checking! Maybe mention it in the patch description in v4,=
 so=20
> that we've got it recorded somewhere that nd->model might be left at NULL=
=20
> afterwards, but that there are no further consumers, so it should be fine=
.

Makes sense.

https://git.infradead.org/?p=3Dusers/dwmw2/qemu.git;a=3Dcommitdiff;h=3D694f=
82bc09080
now says:


net: add qemu_{configure,create}_nic_device(), qemu_find_nic_info()

Most code which directly accesses nd_table[] and nb_nics uses them for
one of two things. Either "I have created a NIC device and I'd like a
configuration for it", or "I will create a NIC device *if* there is a
configuration for it".  With some variants on the theme around whether
they actually *check* if the model specified in the configuration is
the right one.

Provide functions which perform both of those, allowing platforms to
be a little more consistent and as a step towards making nd_table[]
and nb_nics private to the net code.

One might argue that platforms ought to be consistent about whether
they create the unconfigured devices or not, but making significant
user-visible changes is explicitly *not* the intent right now.

The new functions leave the 'model' field of the NICInfo as NULL after
using it for the default NIC model, unlike the qemu_check_nic_model()
function which does set nd->model to match default_model explicitly.
This is acceptable because there is no code which consumes nd->model
except this NIC-matching code in net/net.c, and no reasonable excuse
for any code wanting to use nd->model in future.

Also export the qemu_find_nic_info() helper, as some platforms have
special cases they need to handle.

Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
Reviewed-by: Paul Durrant <paul@xen.org>

--=-H7XB5yYqXr6Val4ZW3cr
Content-Type: application/pkcs7-signature; name="smime.p7s"
Content-Disposition: attachment; filename="smime.p7s"
Content-Transfer-Encoding: base64

MIAGCSqGSIb3DQEHAqCAMIACAQExDzANBglghkgBZQMEAgEFADCABgkqhkiG9w0BBwEAAKCCEkQw
ggYQMIID+KADAgECAhBNlCwQ1DvglAnFgS06KwZPMA0GCSqGSIb3DQEBDAUAMIGIMQswCQYDVQQG
EwJVUzETMBEGA1UECBMKTmV3IEplcnNleTEUMBIGA1UEBxMLSmVyc2V5IENpdHkxHjAcBgNVBAoT
FVRoZSBVU0VSVFJVU1QgTmV0d29yazEuMCwGA1UEAxMlVVNFUlRydXN0IFJTQSBDZXJ0aWZpY2F0
aW9uIEF1dGhvcml0eTAeFw0xODExMDIwMDAwMDBaFw0zMDEyMzEyMzU5NTlaMIGWMQswCQYDVQQG
EwJHQjEbMBkGA1UECBMSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHEwdTYWxmb3JkMRgwFgYD
VQQKEw9TZWN0aWdvIExpbWl0ZWQxPjA8BgNVBAMTNVNlY3RpZ28gUlNBIENsaWVudCBBdXRoZW50
aWNhdGlvbiBhbmQgU2VjdXJlIEVtYWlsIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
AQEAyjztlApB/975Rrno1jvm2pK/KxBOqhq8gr2+JhwpKirSzZxQgT9tlC7zl6hn1fXjSo5MqXUf
ItMltrMaXqcESJuK8dtK56NCSrq4iDKaKq9NxOXFmqXX2zN8HHGjQ2b2Xv0v1L5Nk1MQPKA19xeW
QcpGEGFUUd0kN+oHox+L9aV1rjfNiCj3bJk6kJaOPabPi2503nn/ITX5e8WfPnGw4VuZ79Khj1YB
rf24k5Ee1sLTHsLtpiK9OjG4iQRBdq6Z/TlVx/hGAez5h36bBJMxqdHLpdwIUkTqT8se3ed0PewD
ch/8kHPo5fZl5u1B0ecpq/sDN/5sCG52Ds+QU5O5EwIDAQABo4IBZDCCAWAwHwYDVR0jBBgwFoAU
U3m/WqorSs9UgOHYm8Cd8rIDZsswHQYDVR0OBBYEFAnA8vwL2pTbX/4r36iZQs/J4K0AMA4GA1Ud
DwEB/wQEAwIBhjASBgNVHRMBAf8ECDAGAQH/AgEAMB0GA1UdJQQWMBQGCCsGAQUFBwMCBggrBgEF
BQcDBDARBgNVHSAECjAIMAYGBFUdIAAwUAYDVR0fBEkwRzBFoEOgQYY/aHR0cDovL2NybC51c2Vy
dHJ1c3QuY29tL1VTRVJUcnVzdFJTQUNlcnRpZmljYXRpb25BdXRob3JpdHkuY3JsMHYGCCsGAQUF
BwEBBGowaDA/BggrBgEFBQcwAoYzaHR0cDovL2NydC51c2VydHJ1c3QuY29tL1VTRVJUcnVzdFJT
QUFkZFRydXN0Q0EuY3J0MCUGCCsGAQUFBzABhhlodHRwOi8vb2NzcC51c2VydHJ1c3QuY29tMA0G
CSqGSIb3DQEBDAUAA4ICAQBBRHUAqznCFfXejpVtMnFojADdF9d6HBA4kMjjsb0XMZHztuOCtKF+
xswhh2GqkW5JQrM8zVlU+A2VP72Ky2nlRA1GwmIPgou74TZ/XTarHG8zdMSgaDrkVYzz1g3nIVO9
IHk96VwsacIvBF8JfqIs+8aWH2PfSUrNxP6Ys7U0sZYx4rXD6+cqFq/ZW5BUfClN/rhk2ddQXyn7
kkmka2RQb9d90nmNHdgKrwfQ49mQ2hWQNDkJJIXwKjYA6VUR/fZUFeCUisdDe/0ABLTI+jheXUV1
eoYV7lNwNBKpeHdNuO6Aacb533JlfeUHxvBz9OfYWUiXu09sMAviM11Q0DuMZ5760CdO2VnpsXP4
KxaYIhvqPqUMWqRdWyn7crItNkZeroXaecG03i3mM7dkiPaCkgocBg0EBYsbZDZ8bsG3a08LwEsL
1Ygz3SBsyECa0waq4hOf/Z85F2w2ZpXfP+w8q4ifwO90SGZZV+HR/Jh6rEaVPDRF/CEGVqR1hiuQ
OZ1YL5ezMTX0ZSLwrymUE0pwi/KDaiYB15uswgeIAcA6JzPFf9pLkAFFWs1QNyN++niFhsM47qod
x/PL+5jR87myx5uYdBEQkkDc+lKB1Wct6ucXqm2EmsaQ0M95QjTmy+rDWjkDYdw3Ms6mSWE3Bn7i
5ZgtwCLXgAIe5W8mybM2JzCCBhQwggT8oAMCAQICEQDGvhmWZ0DEAx0oURL6O6l+MA0GCSqGSIb3
DQEBCwUAMIGWMQswCQYDVQQGEwJHQjEbMBkGA1UECBMSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYD
VQQHEwdTYWxmb3JkMRgwFgYDVQQKEw9TZWN0aWdvIExpbWl0ZWQxPjA8BgNVBAMTNVNlY3RpZ28g
UlNBIENsaWVudCBBdXRoZW50aWNhdGlvbiBhbmQgU2VjdXJlIEVtYWlsIENBMB4XDTIyMDEwNzAw
MDAwMFoXDTI1MDEwNjIzNTk1OVowJDEiMCAGCSqGSIb3DQEJARYTZHdtdzJAaW5mcmFkZWFkLm9y
ZzCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBALQ3GpC2bomUqk+91wLYBzDMcCj5C9m6
oZaHwvmIdXftOgTbCJXADo6G9T7BBAebw2JV38EINgKpy/ZHh7htyAkWYVoFsFPrwHounto8xTsy
SSePMiPlmIdQ10BcVSXMUJ3Juu16GlWOnAMJY2oYfEzmE7uT9YgcBqKCo65pTFmOnR/VVbjJk4K2
xE34GC2nAdUQkPFuyaFisicc6HRMOYXPuF0DuwITEKnjxgNjP+qDrh0db7PAjO1D4d5ftfrsf+kd
RR4gKVGSk8Tz2WwvtLAroJM4nXjNPIBJNT4w/FWWc/5qPHJy2U+eITZ5LLE5s45mX2oPFknWqxBo
bQZ8a9dsZ3dSPZBvE9ZrmtFLrVrN4eo1jsXgAp1+p7bkfqd3BgBEmfsYWlBXO8rVXfvPgLs32VdV
NZxb/CDWPqBsiYv0Hv3HPsz07j5b+/cVoWqyHDKzkaVbxfq/7auNVRmPB3v5SWEsH8xi4Bez2V9U
KxfYCnqsjp8RaC2/khxKt0A552Eaxnz/4ly/2C7wkwTQnBmdlFYhAflWKQ03Ufiu8t3iBE3VJbc2
5oMrglj7TRZrmKq3CkbFnX0fyulB+kHimrt6PIWn7kgyl9aelIl6vtbhMA+l0nfrsORMa4kobqQ5
C5rveVgmcIad67EDa+UqEKy/GltUwlSh6xy+TrK1tzDvAgMBAAGjggHMMIIByDAfBgNVHSMEGDAW
gBQJwPL8C9qU21/+K9+omULPyeCtADAdBgNVHQ4EFgQUzMeDMcimo0oz8o1R1Nver3ZVpSkwDgYD
VR0PAQH/BAQDAgWgMAwGA1UdEwEB/wQCMAAwHQYDVR0lBBYwFAYIKwYBBQUHAwQGCCsGAQUFBwMC
MEAGA1UdIAQ5MDcwNQYMKwYBBAGyMQECAQEBMCUwIwYIKwYBBQUHAgEWF2h0dHBzOi8vc2VjdGln
by5jb20vQ1BTMFoGA1UdHwRTMFEwT6BNoEuGSWh0dHA6Ly9jcmwuc2VjdGlnby5jb20vU2VjdGln
b1JTQUNsaWVudEF1dGhlbnRpY2F0aW9uYW5kU2VjdXJlRW1haWxDQS5jcmwwgYoGCCsGAQUFBwEB
BH4wfDBVBggrBgEFBQcwAoZJaHR0cDovL2NydC5zZWN0aWdvLmNvbS9TZWN0aWdvUlNBQ2xpZW50
QXV0aGVudGljYXRpb25hbmRTZWN1cmVFbWFpbENBLmNydDAjBggrBgEFBQcwAYYXaHR0cDovL29j
c3Auc2VjdGlnby5jb20wHgYDVR0RBBcwFYETZHdtdzJAaW5mcmFkZWFkLm9yZzANBgkqhkiG9w0B
AQsFAAOCAQEAyW6MUir5dm495teKqAQjDJwuFCi35h4xgnQvQ/fzPXmtR9t54rpmI2TfyvcKgOXp
qa7BGXNFfh1JsqexVkIqZP9uWB2J+uVMD+XZEs/KYNNX2PvIlSPrzIB4Z2wyIGQpaPLlYflrrVFK
v9CjT2zdqvy2maK7HKOQRt3BiJbVG5lRiwbbygldcALEV9ChWFfgSXvrWDZspnU3Gjw/rMHrGnql
Htlyebp3pf3fSS9kzQ1FVtVIDrL6eqhTwJxe+pXSMMqFiN0whpBtXdyDjzBtQTaZJ7zTT/vlehc/
tDuqZwGHm/YJy883Ll+GP3NvOkgaRGWEuYWJJ6hFCkXYjyR9IzCCBhQwggT8oAMCAQICEQDGvhmW
Z0DEAx0oURL6O6l+MA0GCSqGSIb3DQEBCwUAMIGWMQswCQYDVQQGEwJHQjEbMBkGA1UECBMSR3Jl
YXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHEwdTYWxmb3JkMRgwFgYDVQQKEw9TZWN0aWdvIExpbWl0
ZWQxPjA8BgNVBAMTNVNlY3RpZ28gUlNBIENsaWVudCBBdXRoZW50aWNhdGlvbiBhbmQgU2VjdXJl
IEVtYWlsIENBMB4XDTIyMDEwNzAwMDAwMFoXDTI1MDEwNjIzNTk1OVowJDEiMCAGCSqGSIb3DQEJ
ARYTZHdtdzJAaW5mcmFkZWFkLm9yZzCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBALQ3
GpC2bomUqk+91wLYBzDMcCj5C9m6oZaHwvmIdXftOgTbCJXADo6G9T7BBAebw2JV38EINgKpy/ZH
h7htyAkWYVoFsFPrwHounto8xTsySSePMiPlmIdQ10BcVSXMUJ3Juu16GlWOnAMJY2oYfEzmE7uT
9YgcBqKCo65pTFmOnR/VVbjJk4K2xE34GC2nAdUQkPFuyaFisicc6HRMOYXPuF0DuwITEKnjxgNj
P+qDrh0db7PAjO1D4d5ftfrsf+kdRR4gKVGSk8Tz2WwvtLAroJM4nXjNPIBJNT4w/FWWc/5qPHJy
2U+eITZ5LLE5s45mX2oPFknWqxBobQZ8a9dsZ3dSPZBvE9ZrmtFLrVrN4eo1jsXgAp1+p7bkfqd3
BgBEmfsYWlBXO8rVXfvPgLs32VdVNZxb/CDWPqBsiYv0Hv3HPsz07j5b+/cVoWqyHDKzkaVbxfq/
7auNVRmPB3v5SWEsH8xi4Bez2V9UKxfYCnqsjp8RaC2/khxKt0A552Eaxnz/4ly/2C7wkwTQnBmd
lFYhAflWKQ03Ufiu8t3iBE3VJbc25oMrglj7TRZrmKq3CkbFnX0fyulB+kHimrt6PIWn7kgyl9ae
lIl6vtbhMA+l0nfrsORMa4kobqQ5C5rveVgmcIad67EDa+UqEKy/GltUwlSh6xy+TrK1tzDvAgMB
AAGjggHMMIIByDAfBgNVHSMEGDAWgBQJwPL8C9qU21/+K9+omULPyeCtADAdBgNVHQ4EFgQUzMeD
Mcimo0oz8o1R1Nver3ZVpSkwDgYDVR0PAQH/BAQDAgWgMAwGA1UdEwEB/wQCMAAwHQYDVR0lBBYw
FAYIKwYBBQUHAwQGCCsGAQUFBwMCMEAGA1UdIAQ5MDcwNQYMKwYBBAGyMQECAQEBMCUwIwYIKwYB
BQUHAgEWF2h0dHBzOi8vc2VjdGlnby5jb20vQ1BTMFoGA1UdHwRTMFEwT6BNoEuGSWh0dHA6Ly9j
cmwuc2VjdGlnby5jb20vU2VjdGlnb1JTQUNsaWVudEF1dGhlbnRpY2F0aW9uYW5kU2VjdXJlRW1h
aWxDQS5jcmwwgYoGCCsGAQUFBwEBBH4wfDBVBggrBgEFBQcwAoZJaHR0cDovL2NydC5zZWN0aWdv
LmNvbS9TZWN0aWdvUlNBQ2xpZW50QXV0aGVudGljYXRpb25hbmRTZWN1cmVFbWFpbENBLmNydDAj
BggrBgEFBQcwAYYXaHR0cDovL29jc3Auc2VjdGlnby5jb20wHgYDVR0RBBcwFYETZHdtdzJAaW5m
cmFkZWFkLm9yZzANBgkqhkiG9w0BAQsFAAOCAQEAyW6MUir5dm495teKqAQjDJwuFCi35h4xgnQv
Q/fzPXmtR9t54rpmI2TfyvcKgOXpqa7BGXNFfh1JsqexVkIqZP9uWB2J+uVMD+XZEs/KYNNX2PvI
lSPrzIB4Z2wyIGQpaPLlYflrrVFKv9CjT2zdqvy2maK7HKOQRt3BiJbVG5lRiwbbygldcALEV9Ch
WFfgSXvrWDZspnU3Gjw/rMHrGnqlHtlyebp3pf3fSS9kzQ1FVtVIDrL6eqhTwJxe+pXSMMqFiN0w
hpBtXdyDjzBtQTaZJ7zTT/vlehc/tDuqZwGHm/YJy883Ll+GP3NvOkgaRGWEuYWJJ6hFCkXYjyR9
IzGCBMcwggTDAgEBMIGsMIGWMQswCQYDVQQGEwJHQjEbMBkGA1UECBMSR3JlYXRlciBNYW5jaGVz
dGVyMRAwDgYDVQQHEwdTYWxmb3JkMRgwFgYDVQQKEw9TZWN0aWdvIExpbWl0ZWQxPjA8BgNVBAMT
NVNlY3RpZ28gUlNBIENsaWVudCBBdXRoZW50aWNhdGlvbiBhbmQgU2VjdXJlIEVtYWlsIENBAhEA
xr4ZlmdAxAMdKFES+jupfjANBglghkgBZQMEAgEFAKCCAeswGAYJKoZIhvcNAQkDMQsGCSqGSIb3
DQEHATAcBgkqhkiG9w0BCQUxDxcNMjQwMTI2MTQzNDQ2WjAvBgkqhkiG9w0BCQQxIgQg9s6xyx6t
z3MegFinCj3L1TKeE3XlnpXEnCOw3zvbuXcwgb0GCSsGAQQBgjcQBDGBrzCBrDCBljELMAkGA1UE
BhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEYMBYG
A1UEChMPU2VjdGlnbyBMaW1pdGVkMT4wPAYDVQQDEzVTZWN0aWdvIFJTQSBDbGllbnQgQXV0aGVu
dGljYXRpb24gYW5kIFNlY3VyZSBFbWFpbCBDQQIRAMa+GZZnQMQDHShREvo7qX4wgb8GCyqGSIb3
DQEJEAILMYGvoIGsMIGWMQswCQYDVQQGEwJHQjEbMBkGA1UECBMSR3JlYXRlciBNYW5jaGVzdGVy
MRAwDgYDVQQHEwdTYWxmb3JkMRgwFgYDVQQKEw9TZWN0aWdvIExpbWl0ZWQxPjA8BgNVBAMTNVNl
Y3RpZ28gUlNBIENsaWVudCBBdXRoZW50aWNhdGlvbiBhbmQgU2VjdXJlIEVtYWlsIENBAhEAxr4Z
lmdAxAMdKFES+jupfjANBgkqhkiG9w0BAQEFAASCAgBgKFzBLqFl0LLpTDn4UwXwfaNVMDy+DHqX
HkvOVz9HdYfvHjQZgtpWWYqRgUMuXARLIQFV7peftWWBVObe6mqApwW9M5ebBlwL4j/W2vsk6XQe
U+FVhQB+jxZPWWV5VN241u3YxWnKnA3Ln2HLfIS/mqb9qck8lIygZ3qFzqur0wrIaA4mSmaByXgJ
+s9r23xnCsfU59wF3tLdRvod1ESvVIQikslmschCZaNNEJB7FkQt94Wuj/ChQdmTRjQRS5SqRRJo
kqtZ50H1aA576aWlo9k40gjxiKYhZ1c+Fn2nWCPOQyMyKhnFyhO49gS5ZM3JMI+446MIUKY70gYA
+O4ZPTa74yhWX5m29KWysx7AZ0vCIHfEOF6kOMZJVIxV3Bev47Irb4b1lQEWc3BTs5vvXMa198Zb
J/FIuWKcM6iCoDs97bNqW4gcXLFSb3QZpzLtkG0xUhu3BmWdfcrKbPh1OEAFjXMYHrLaeS+Su88u
k5O2zjG2PF4ND52jtCUO5jRYbSoCIq/+iVni+4f9TMR0L/mJj5pbmLA3FW7PaLhIGpDDRn0Lqs2P
x6Zo/1aw2vRjxqg2PAa1PGdpRMqmh29A4wnKOEQgHr5j2+qZWU7x3Hydu2cIRbdNwzTIzQwfPxcH
N6KZZ1bvhSoB/g1JF8xU/tBlhOUb4Mc0T0SpBbgnlAAAAAAAAA==


--=-H7XB5yYqXr6Val4ZW3cr--


From xen-devel-bounces@lists.xenproject.org Fri Jan 26 14:40:24 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 26 Jan 2024 14:40:24 +0000
Received: from list by lists.xenproject.org with outflank-mailman.672048.1045672 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTNNV-000255-48; Fri, 26 Jan 2024 14:40:21 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 672048.1045672; Fri, 26 Jan 2024 14:40:21 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTNNV-00024y-1N; Fri, 26 Jan 2024 14:40:21 +0000
Received: by outflank-mailman (input) for mailman id 672048;
 Fri, 26 Jan 2024 14:40:19 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=UtOA=JE=redhat.com=thuth@srs-se1.protection.inumbo.net>)
 id 1rTNNT-00024p-Mo
 for xen-devel@lists.xenproject.org; Fri, 26 Jan 2024 14:40:19 +0000
Received: from us-smtp-delivery-124.mimecast.com
 (us-smtp-delivery-124.mimecast.com [170.10.133.124])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id d2535824-bc58-11ee-98f5-efadbce2ee36;
 Fri, 26 Jan 2024 15:40:17 +0100 (CET)
Received: from mail-qv1-f72.google.com (mail-qv1-f72.google.com
 [209.85.219.72]) by relay.mimecast.com with ESMTP with STARTTLS
 (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id
 us-mta-10-cV69PXDfP9i1NAJnntR5lQ-1; Fri, 26 Jan 2024 09:40:13 -0500
Received: by mail-qv1-f72.google.com with SMTP id
 6a1803df08f44-67ef8bbfe89so13901026d6.0
 for <xen-devel@lists.xenproject.org>; Fri, 26 Jan 2024 06:40:12 -0800 (PST)
Received: from [192.168.0.9] (ip-109-43-176-119.web.vodafone.de.
 [109.43.176.119]) by smtp.gmail.com with ESMTPSA id
 qj10-20020a056214320a00b00680d39626fcsm555489qvb.47.2024.01.26.06.39.58
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Fri, 26 Jan 2024 06:40:11 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: d2535824-bc58-11ee-98f5-efadbce2ee36
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
	s=mimecast20190719; t=1706280016;
	h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
	 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references:autocrypt:autocrypt;
	bh=lGdCLCAFhzxGZy+vKK0dVykqjUNjWVDHRNUj1FjAZBY=;
	b=czMj7NBt46Yy2iM6UjN8ZhxXE/8x2eo49Ulpg+0qvbtHedq7Nesa6q6pjOXLgdUsmpcSV8
	baUilKo1Enk/XZH5UBmTUGx003R7i6Dp4PmsbtX1p7d3T/rHGh5AfA9MKm1g29IRWI+asx
	siWalRcBbwzJLf/FJZ0tw+ILzxvi28A=
X-MC-Unique: cV69PXDfP9i1NAJnntR5lQ-1
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706280012; x=1706884812;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=lGdCLCAFhzxGZy+vKK0dVykqjUNjWVDHRNUj1FjAZBY=;
        b=PpIeUddyUBFFOkn9alZIkr4+r+w4RntgKsGZ4y4Rzxgd+SVcSqzJOUVr9OJPYRMf/o
         UbMwX8RO0P444ko5iwyaiVz0D/2qB3L2x7n1mKpMibJnlcMgeEOhLjAcCWOoQpSnVzyv
         JIwsNkAFuRusdQXZCgxSlHt+B9OzAu8kIXRMdPoWqn94w8DHGcoarDWKuqe5x1o3udA0
         o2Meb4B8XWzvBh7R9i0Euyo/N98ZeW6M9sKwNNvmhKSfXVwmIqFJGmsQlVcgky/1ZUgy
         XaEHCadBLE946uswDOH4G9u8jQQzIFds4LQSeDrBVVLSetq9TaZhrpfeYawH7416tpXw
         DKtg==
X-Gm-Message-State: AOJu0YxK0snkT1HUQkndIWzbD3DkuCLi1Mtzz2buG1LK7zmpJalX78wA
	gAuJjCNTCEcgFzw4da+Rw95aozTwrxmWcqWi3tR+z8I1IcQSD1kMwuI5zbr5puxzYq6NpA8qvus
	xWSBhniQY5qsfKm4ShSSrQzRmw3OSwj9NEPXuI9JsASSBxnrtxjNa94xguQ4XH3lf
X-Received: by 2002:a05:6214:2427:b0:683:c2b7:bee8 with SMTP id gy7-20020a056214242700b00683c2b7bee8mr1913021qvb.72.1706280012545;
        Fri, 26 Jan 2024 06:40:12 -0800 (PST)
X-Google-Smtp-Source: AGHT+IF4AmBMkX6eIgFaMDf5jvVBNtU3kFgID2kR6VXcPzKNnuP5oFOc3Mgv/LdMR4JZQkSviiTu6Q==
X-Received: by 2002:a05:6214:2427:b0:683:c2b7:bee8 with SMTP id gy7-20020a056214242700b00683c2b7bee8mr1913006qvb.72.1706280012246;
        Fri, 26 Jan 2024 06:40:12 -0800 (PST)
Message-ID: <c9b9e382-fd31-429f-b4e1-cd01e751d871@redhat.com>
Date: Fri, 26 Jan 2024 15:39:56 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 01/46] net: add qemu_{configure, create}_nic_device(),
 qemu_find_nic_info()
To: David Woodhouse <dwmw2@infradead.org>, qemu-devel@nongnu.org
Cc: Richard Henderson <richard.henderson@linaro.org>,
 Beniamino Galvani <b.galvani@gmail.com>,
 Peter Maydell <peter.maydell@linaro.org>,
 Strahinja Jankovic <strahinja.p.jankovic@gmail.com>,
 Niek Linnenbank <nieklinnenbank@gmail.com>, =?UTF-8?Q?C=C3=A9dric_Le_Goater?=
 <clg@kaod.org>, Andrew Jeffery <andrew@codeconstruct.com.au>,
 Joel Stanley <joel@jms.id.au>, Igor Mitsyanko <i.mitsyanko@gmail.com>,
 Jean-Christophe Dubois <jcd@tribudubois.net>,
 Andrey Smirnov <andrew.smirnov@gmail.com>,
 =?UTF-8?Q?Philippe_Mathieu-Daud=C3=A9?= <philmd@linaro.org>,
 Rob Herring <robh@kernel.org>, Subbaraya Sundeep <sundeep.lkml@gmail.com>,
 Jan Kiszka <jan.kiszka@web.de>, Tyrone Ting <kfting@nuvoton.com>,
 Hao Wu <wuhaotsh@google.com>, Radoslaw Biernacki <rad@semihalf.com>,
 Leif Lindholm <quic_llindhol@quicinc.com>,
 Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org>,
 "Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
 Alistair Francis <alistair@alistair23.me>, Helge Deller <deller@gmx.de>,
 Paolo Bonzini <pbonzini@redhat.com>, Eduardo Habkost <eduardo@habkost.net>,
 "Michael S. Tsirkin" <mst@redhat.com>,
 Marcel Apfelbaum <marcel.apfelbaum@gmail.com>, Song Gao
 <gaosong@loongson.cn>, Thomas Huth <huth@tuxfamily.org>,
 Laurent Vivier <laurent@vivier.eu>, Huacai Chen <chenhuacai@kernel.org>,
 Jiaxun Yang <jiaxun.yang@flygoat.com>,
 =?UTF-8?Q?Herv=C3=A9_Poussineau?= <hpoussin@reactos.org>,
 Aleksandar Rikalo <aleksandar.rikalo@syrmia.com>,
 Aurelien Jarno <aurelien@aurel32.net>, Jason Wang <jasowang@redhat.com>,
 Jia Liu <proljc@gmail.com>, Stafford Horne <shorne@gmail.com>,
 Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>,
 Nicholas Piggin <npiggin@gmail.com>,
 Daniel Henrique Barboza <danielhb413@gmail.com>,
 David Gibson <david@gibson.dropbear.id.au>,
 Harsh Prateek Bora <harshpb@linux.ibm.com>, Bin Meng
 <bin.meng@windriver.com>, Palmer Dabbelt <palmer@dabbelt.com>,
 Weiwei Li <liwei1518@gmail.com>, Liu Zhiwei <zhiwei_liu@linux.alibaba.com>,
 Halil Pasic <pasic@linux.ibm.com>,
 Christian Borntraeger <borntraeger@linux.ibm.com>,
 Eric Farman <farman@linux.ibm.com>, David Hildenbrand <david@redhat.com>,
 Ilya Leoshkevich <iii@linux.ibm.com>,
 Yoshinori Sato <ysato@users.sourceforge.jp>,
 Magnus Damm <magnus.damm@gmail.com>, Artyom Tarasenko <atar4qemu@gmail.com>,
 Stefano Stabellini <sstabellini@kernel.org>,
 Anthony Perard <anthony.perard@citrix.com>, Paul Durrant <paul@xen.org>,
 Max Filippov <jcmvbkbc@gmail.com>, qemu-arm@nongnu.org, qemu-ppc@nongnu.org,
 qemu-riscv@nongnu.org, qemu-s390x@nongnu.org, xen-devel@lists.xenproject.org
References: <20240108204909.564514-1-dwmw2@infradead.org>
 <20240108204909.564514-2-dwmw2@infradead.org>
 <9218c20b-8ba8-402b-bea5-856cb51156dc@redhat.com>
 <0914e6a51218793cca3121879ef21b39d9aac612.camel@infradead.org>
 <72f116bd-f9ce-4d61-bb21-b615f15eb4b1@redhat.com>
 <20c19bd1f19ebc2b1c0100f447a709dda076f721.camel@infradead.org>
From: Thomas Huth <thuth@redhat.com>
Autocrypt: addr=thuth@redhat.com; keydata=
 xsFNBFH7eUwBEACzyOXKU+5Pcs6wNpKzrlJwzRl3VGZt95VCdb+FgoU9g11m7FWcOafrVRwU
 yYkTm9+7zBUc0sW5AuPGR/dp3pSLX/yFWsA/UB4nJsHqgDvDU7BImSeiTrnpMOTXb7Arw2a2
 4CflIyFqjCpfDM4MuTmzTjXq4Uov1giGE9X6viNo1pxyEpd7PanlKNnf4PqEQp06X4IgUacW
 tSGj6Gcns1bCuHV8OPWLkf4hkRnu8hdL6i60Yxz4E6TqlrpxsfYwLXgEeswPHOA6Mn4Cso9O
 0lewVYfFfsmokfAVMKWzOl1Sr0KGI5T9CpmRfAiSHpthhHWnECcJFwl72NTi6kUcUzG4se81
 O6n9d/kTj7pzTmBdfwuOZ0YUSqcqs0W+l1NcASSYZQaDoD3/SLk+nqVeCBB4OnYOGhgmIHNW
 0CwMRO/GK+20alxzk//V9GmIM2ACElbfF8+Uug3pqiHkVnKqM7W9/S1NH2qmxB6zMiJUHlTH
 gnVeZX0dgH27mzstcF786uPcdEqS0KJuxh2kk5IvUSL3Qn3ZgmgdxBMyCPciD/1cb7/Ahazr
 3ThHQXSHXkH/aDXdfLsKVuwDzHLVSkdSnZdt5HHh75/NFHxwaTlydgfHmFFwodK8y/TjyiGZ
 zg2Kje38xnz8zKn9iesFBCcONXS7txENTzX0z80WKBhK+XSFJwARAQABzR5UaG9tYXMgSHV0
 aCA8dGh1dGhAcmVkaGF0LmNvbT7CwXgEEwECACIFAlVgX6oCGwMGCwkIBwMCBhUIAgkKCwQW
 AgMBAh4BAheAAAoJEC7Z13T+cC21EbIP/ii9cvT2HHGbFRl8HqGT6+7Wkb+XLMqJBMAIGiQK
 QIP3xk1HPTsLfVG0ao4hy/oYkGNOP8+ubLnZen6Yq3zAFiMhQ44lvgigDYJo3Ve59gfe99KX
 EbtB+X95ODARkq0McR6OAsPNJ7gpEUzfkQUUJTXRDQXfG/FX303Gvk+YU0spm2tsIKPl6AmV
 1CegDljzjycyfJbk418MQmMu2T82kjrkEofUO2a24ed3VGC0/Uz//XCR2ZTo+vBoBUQl41BD
 eFFtoCSrzo3yPFS+w5fkH9NT8ChdpSlbNS32NhYQhJtr9zjWyFRf0Zk+T/1P7ECn6gTEkp5k
 ofFIA4MFBc/fXbaDRtBmPB0N9pqTFApIUI4vuFPPO0JDrII9dLwZ6lO9EKiwuVlvr1wwzsgq
 zJTPBU3qHaUO4d/8G+gD7AL/6T4zi8Jo/GmjBsnYaTzbm94lf0CjXjsOX3seMhaE6WAZOQQG
 tZHAO1kAPWpaxne+wtgMKthyPLNwelLf+xzGvrIKvLX6QuLoWMnWldu22z2ICVnLQChlR9d6
 WW8QFEpo/FK7omuS8KvvopFcOOdlbFMM8Y/8vBgVMSsK6fsYUhruny/PahprPbYGiNIhKqz7
 UvgyZVl4pBFjTaz/SbimTk210vIlkDyy1WuS8Zsn0htv4+jQPgo9rqFE4mipJjy/iboDzsFN
 BFH7eUwBEAC2nzfUeeI8dv0C4qrfCPze6NkryUflEut9WwHhfXCLjtvCjnoGqFelH/PE9NF4
 4VPSCdvD1SSmFVzu6T9qWdcwMSaC+e7G/z0/AhBfqTeosAF5XvKQlAb9ZPkdDr7YN0a1XDfa
 +NgA+JZB4ROyBZFFAwNHT+HCnyzy0v9Sh3BgJJwfpXHH2l3LfncvV8rgFv0bvdr70U+On2XH
 5bApOyW1WpIG5KPJlDdzcQTyptOJ1dnEHfwnABEfzI3dNf63rlxsGouX/NFRRRNqkdClQR3K
 gCwciaXfZ7ir7fF0u1N2UuLsWA8Ei1JrNypk+MRxhbvdQC4tyZCZ8mVDk+QOK6pyK2f4rMf/
 WmqxNTtAVmNuZIwnJdjRMMSs4W4w6N/bRvpqtykSqx7VXcgqtv6eqoDZrNuhGbekQA0sAnCJ
 VPArerAZGArm63o39me/bRUQeQVSxEBmg66yshF9HkcUPGVeC4B0TPwz+HFcVhheo6hoJjLq
 knFOPLRj+0h+ZL+D0GenyqD3CyuyeTT5dGcNU9qT74bdSr20k/CklvI7S9yoQje8BeQAHtdV
 cvO8XCLrpGuw9SgOS7OP5oI26a0548M4KldAY+kqX6XVphEw3/6U1KTf7WxW5zYLTtadjISB
 X9xsRWSU+Yqs3C7oN5TIPSoj9tXMoxZkCIHWvnqGwZ7JhwARAQABwsFfBBgBAgAJBQJR+3lM
 AhsMAAoJEC7Z13T+cC21hPAQAIsBL9MdGpdEpvXs9CYrBkd6tS9mbaSWj6XBDfA1AEdQkBOn
 ZH1Qt7HJesk+qNSnLv6+jP4VwqK5AFMrKJ6IjE7jqgzGxtcZnvSjeDGPF1h2CKZQPpTw890k
 fy18AvgFHkVk2Oylyexw3aOBsXg6ukN44vIFqPoc+YSU0+0QIdYJp/XFsgWxnFIMYwDpxSHS
 5fdDxUjsk3UBHZx+IhFjs2siVZi5wnHIqM7eK9abr2cK2weInTBwXwqVWjsXZ4tq5+jQrwDK
 cvxIcwXdUTLGxc4/Z/VRH1PZSvfQxdxMGmNTGaXVNfdFZjm4fz0mz+OUi6AHC4CZpwnsliGV
 ODqwX8Y1zic9viSTbKS01ZNp175POyWViUk9qisPZB7ypfSIVSEULrL347qY/hm9ahhqmn17
 Ng255syASv3ehvX7iwWDfzXbA0/TVaqwa1YIkec+/8miicV0zMP9siRcYQkyTqSzaTFBBmqD
 oiT+z+/E59qj/EKfyce3sbC9XLjXv3mHMrq1tKX4G7IJGnS989E/fg6crv6NHae9Ckm7+lSs
 IQu4bBP2GxiRQ+NV3iV/KU3ebMRzqIC//DCOxzQNFNJAKldPe/bKZMCxEqtVoRkuJtNdp/5a
 yXFZ6TfE1hGKrDBYAm4vrnZ4CXFSBDllL59cFFOJCkn4Xboj/aVxxJxF30bn
In-Reply-To: <20c19bd1f19ebc2b1c0100f447a709dda076f721.camel@infradead.org>
X-Mimecast-Spam-Score: 0
X-Mimecast-Originator: redhat.com
Content-Language: en-US
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit

On 26/01/2024 15.34, David Woodhouse wrote:
> On Fri, 2024-01-26 at 15:24 +0100, Thomas Huth wrote:
>> On 26/01/2024 15.16, David Woodhouse wrote:
>>> On Fri, 2024-01-26 at 12:10 +0100, Thomas Huth wrote:
>>>>
>>>>> +/* "Please create a device, if you have a configuration for it" */
>>>>> +DeviceState *qemu_create_nic_device(const char *typename, bool match_default,
>>>>> +                                    const char *alias)
>>>>> +{
>>>>> +    NICInfo *nd = qemu_find_nic_info(typename, match_default, alias);
>>>>> +    DeviceState *dev;
>>>>> +
>>>>> +    if (!nd) {
>>>>> +        return NULL;
>>>>> +    }
>>>>
>>>> The qemu_check_nic_model() function that was used in some code that you
>>>> turned into qemu_create_nic_device() used to set:
>>>>
>>>>        if (!nd->model)
>>>>            nd->model = g_strdup(default_model);
>>>>
>>>> (in the qemu_find_nic_model() function that has been called by
>>>> qemu_check_nic_model())
>>>>
>>>> Should we do that also here to make sure that nd->model is not NULL afterwards?
>>>
>>> Good question, but I don't think we care. The qdev_set_nic_properties()
>>> function certainly doesn't propagate nd->model to anywhere.
>>>
>>> I renamed nd->model to nd->modelname in a patch shown below, just to be
>>> 100% sure I'm not missing any other code paths which might consume it.
>>
>> Ok, thanks for checking! Maybe mention it in the patch description in v4, so
>> that we've got it recorded somewhere that nd->model might be left at NULL
>> afterwards, but that there are no further consumers, so it should be fine.
> 
> Makes sense.
> 
> https://git.infradead.org/?p=users/dwmw2/qemu.git;a=commitdiff;h=694f82bc09080
> now says:
> 
> 
> net: add qemu_{configure,create}_nic_device(), qemu_find_nic_info()
> 
> Most code which directly accesses nd_table[] and nb_nics uses them for
> one of two things. Either "I have created a NIC device and I'd like a
> configuration for it", or "I will create a NIC device *if* there is a
> configuration for it".  With some variants on the theme around whether
> they actually *check* if the model specified in the configuration is
> the right one.
> 
> Provide functions which perform both of those, allowing platforms to
> be a little more consistent and as a step towards making nd_table[]
> and nb_nics private to the net code.
> 
> One might argue that platforms ought to be consistent about whether
> they create the unconfigured devices or not, but making significant
> user-visible changes is explicitly *not* the intent right now.
> 
> The new functions leave the 'model' field of the NICInfo as NULL after
> using it for the default NIC model, unlike the qemu_check_nic_model()
> function which does set nd->model to match default_model explicitly.
> This is acceptable because there is no code which consumes nd->model
> except this NIC-matching code in net/net.c, and no reasonable excuse
> for any code wanting to use nd->model in future.

With that feel free to add:
Reviewed-by: Thomas Huth <thuth@redhat.com>




From xen-devel-bounces@lists.xenproject.org Fri Jan 26 14:41:37 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 26 Jan 2024 14:41:37 +0000
Received: from list by lists.xenproject.org with outflank-mailman.672051.1045683 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTNOi-0002ZG-En; Fri, 26 Jan 2024 14:41:36 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 672051.1045683; Fri, 26 Jan 2024 14:41:36 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTNOi-0002Z9-Aa; Fri, 26 Jan 2024 14:41:36 +0000
Received: by outflank-mailman (input) for mailman id 672051;
 Fri, 26 Jan 2024 14:41:35 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=UtOA=JE=redhat.com=thuth@srs-se1.protection.inumbo.net>)
 id 1rTNOh-0002Z3-F5
 for xen-devel@lists.xenproject.org; Fri, 26 Jan 2024 14:41:35 +0000
Received: from us-smtp-delivery-124.mimecast.com
 (us-smtp-delivery-124.mimecast.com [170.10.133.124])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 001d68ca-bc59-11ee-8a43-1f161083a0e0;
 Fri, 26 Jan 2024 15:41:34 +0100 (CET)
Received: from mail-yb1-f197.google.com (mail-yb1-f197.google.com
 [209.85.219.197]) by relay.mimecast.com with ESMTP with STARTTLS
 (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id
 us-mta-640-GQX3HfKvMBqOSC47rEepRw-1; Fri, 26 Jan 2024 09:41:31 -0500
Received: by mail-yb1-f197.google.com with SMTP id
 3f1490d57ef6-dbf216080f5so926857276.1
 for <xen-devel@lists.xenproject.org>; Fri, 26 Jan 2024 06:41:31 -0800 (PST)
Received: from [192.168.0.9] (ip-109-43-176-119.web.vodafone.de.
 [109.43.176.119]) by smtp.gmail.com with ESMTPSA id
 qj10-20020a056214320a00b00680d39626fcsm555489qvb.47.2024.01.26.06.41.16
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Fri, 26 Jan 2024 06:41:30 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 001d68ca-bc59-11ee-8a43-1f161083a0e0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
	s=mimecast20190719; t=1706280093;
	h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
	 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references:autocrypt:autocrypt;
	bh=DmKwAtFzXK8d4BC5O5Aq2vnMeF2thz+sOGStUzBKtm4=;
	b=hLyIkCmeAne1e7Zr11AQrC9MmLyfZC08NuBE+JScmfalPp9KP4gjdLynQFuQ0JCcBKIlbS
	uQuGhV3mLPusQ9gravHWRU+a2qCuCy2EmzT4qxYXV9kK/vNwVr9wqXOjLK7WnhARXzqhDh
	rg0QG4m2hBdLQe3b3rLwDNqlOMB7q8w=
X-MC-Unique: GQX3HfKvMBqOSC47rEepRw-1
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706280091; x=1706884891;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=DmKwAtFzXK8d4BC5O5Aq2vnMeF2thz+sOGStUzBKtm4=;
        b=BbJWQyCoLUUCQvCdsHJEMpbFrnNclzuD3lo1Ht0Ym57jkWue2ItM5qhhCyk3iI8DOk
         uDN857QpOOxaJPEoN6b0idPBUvvlzoONOzCc9/UOFAwZzUf8mkxDEiD3twbJxgC+e792
         FdGlYOJFoyDWpYmTMutbDKSzaAZvbCzLgQre7vi5tK7Jy1KV/m1R79c5Dkp1z0jfQHR1
         MNuvAeMbwb30BU1Nytpb11/LeOhi4OnRoCXq8XRmXKsL7bzhE6J+nR39eqisARPQ1sve
         218jcaHSczCDN1n/Xp/OVmNg1cPgY+Nf9QqdALZUyU/G/6w5D9XjeoaFMYX3j613PRVG
         tNuA==
X-Gm-Message-State: AOJu0YzHH9h5yhNQ4/FtDgnleRdXCEHtjSyLO5stImVFAsAhCZR2KIiQ
	f+iHyjcEysVqMxqQIxr3fkpBMVaGiRA/NdECBvpVbnHD3YODG4FXrIzH7CgFetwu+a0VbH8jyZk
	9oLAQGz4/YdR18qk1vtRAcYGOcSExqGa/+3FynYlmQDa8+EiIp2hdF8V1kpKK4rNX
X-Received: by 2002:a05:6902:2411:b0:dc2:52f4:2356 with SMTP id dr17-20020a056902241100b00dc252f42356mr1291557ybb.119.1706280091355;
        Fri, 26 Jan 2024 06:41:31 -0800 (PST)
X-Google-Smtp-Source: AGHT+IHZ4lnobhYx6YjCi1LfVF9lTpXT6/dvoUo9LF2Bfk+3VQgsX1dJHh5W0RY2W03/Gm8qexWmsw==
X-Received: by 2002:a05:6902:2411:b0:dc2:52f4:2356 with SMTP id dr17-20020a056902241100b00dc252f42356mr1291539ybb.119.1706280091089;
        Fri, 26 Jan 2024 06:41:31 -0800 (PST)
Message-ID: <75b8ba34-6861-495f-8bb1-48a01e50e0e6@redhat.com>
Date: Fri, 26 Jan 2024 15:41:16 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 03/46] net: add qemu_create_nic_bus_devices()
To: David Woodhouse <dwmw2@infradead.org>, qemu-devel@nongnu.org
Cc: Richard Henderson <richard.henderson@linaro.org>,
 Beniamino Galvani <b.galvani@gmail.com>,
 Peter Maydell <peter.maydell@linaro.org>,
 Strahinja Jankovic <strahinja.p.jankovic@gmail.com>,
 Niek Linnenbank <nieklinnenbank@gmail.com>, =?UTF-8?Q?C=C3=A9dric_Le_Goater?=
 <clg@kaod.org>, Andrew Jeffery <andrew@codeconstruct.com.au>,
 Joel Stanley <joel@jms.id.au>, Igor Mitsyanko <i.mitsyanko@gmail.com>,
 Jean-Christophe Dubois <jcd@tribudubois.net>,
 Andrey Smirnov <andrew.smirnov@gmail.com>,
 =?UTF-8?Q?Philippe_Mathieu-Daud=C3=A9?= <philmd@linaro.org>,
 Rob Herring <robh@kernel.org>, Subbaraya Sundeep <sundeep.lkml@gmail.com>,
 Jan Kiszka <jan.kiszka@web.de>, Tyrone Ting <kfting@nuvoton.com>,
 Hao Wu <wuhaotsh@google.com>, Radoslaw Biernacki <rad@semihalf.com>,
 Leif Lindholm <quic_llindhol@quicinc.com>,
 Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org>,
 "Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
 Alistair Francis <alistair@alistair23.me>, Helge Deller <deller@gmx.de>,
 Paolo Bonzini <pbonzini@redhat.com>, Eduardo Habkost <eduardo@habkost.net>,
 "Michael S. Tsirkin" <mst@redhat.com>,
 Marcel Apfelbaum <marcel.apfelbaum@gmail.com>, Song Gao
 <gaosong@loongson.cn>, Thomas Huth <huth@tuxfamily.org>,
 Laurent Vivier <laurent@vivier.eu>, Huacai Chen <chenhuacai@kernel.org>,
 Jiaxun Yang <jiaxun.yang@flygoat.com>,
 =?UTF-8?Q?Herv=C3=A9_Poussineau?= <hpoussin@reactos.org>,
 Aleksandar Rikalo <aleksandar.rikalo@syrmia.com>,
 Aurelien Jarno <aurelien@aurel32.net>, Jason Wang <jasowang@redhat.com>,
 Jia Liu <proljc@gmail.com>, Stafford Horne <shorne@gmail.com>,
 Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>,
 Nicholas Piggin <npiggin@gmail.com>,
 Daniel Henrique Barboza <danielhb413@gmail.com>,
 David Gibson <david@gibson.dropbear.id.au>,
 Harsh Prateek Bora <harshpb@linux.ibm.com>, Bin Meng
 <bin.meng@windriver.com>, Palmer Dabbelt <palmer@dabbelt.com>,
 Weiwei Li <liwei1518@gmail.com>, Liu Zhiwei <zhiwei_liu@linux.alibaba.com>,
 Halil Pasic <pasic@linux.ibm.com>,
 Christian Borntraeger <borntraeger@linux.ibm.com>,
 Eric Farman <farman@linux.ibm.com>, David Hildenbrand <david@redhat.com>,
 Ilya Leoshkevich <iii@linux.ibm.com>,
 Yoshinori Sato <ysato@users.sourceforge.jp>,
 Magnus Damm <magnus.damm@gmail.com>, Artyom Tarasenko <atar4qemu@gmail.com>,
 Stefano Stabellini <sstabellini@kernel.org>,
 Anthony Perard <anthony.perard@citrix.com>, Paul Durrant <paul@xen.org>,
 Max Filippov <jcmvbkbc@gmail.com>, qemu-arm@nongnu.org, qemu-ppc@nongnu.org,
 qemu-riscv@nongnu.org, qemu-s390x@nongnu.org,
 xen-devel@lists.xenproject.org, David Woodhouse <dwmw@amazon.co.uk>
References: <20240108204909.564514-1-dwmw2@infradead.org>
 <20240108204909.564514-4-dwmw2@infradead.org>
From: Thomas Huth <thuth@redhat.com>
Autocrypt: addr=thuth@redhat.com; keydata=
 xsFNBFH7eUwBEACzyOXKU+5Pcs6wNpKzrlJwzRl3VGZt95VCdb+FgoU9g11m7FWcOafrVRwU
 yYkTm9+7zBUc0sW5AuPGR/dp3pSLX/yFWsA/UB4nJsHqgDvDU7BImSeiTrnpMOTXb7Arw2a2
 4CflIyFqjCpfDM4MuTmzTjXq4Uov1giGE9X6viNo1pxyEpd7PanlKNnf4PqEQp06X4IgUacW
 tSGj6Gcns1bCuHV8OPWLkf4hkRnu8hdL6i60Yxz4E6TqlrpxsfYwLXgEeswPHOA6Mn4Cso9O
 0lewVYfFfsmokfAVMKWzOl1Sr0KGI5T9CpmRfAiSHpthhHWnECcJFwl72NTi6kUcUzG4se81
 O6n9d/kTj7pzTmBdfwuOZ0YUSqcqs0W+l1NcASSYZQaDoD3/SLk+nqVeCBB4OnYOGhgmIHNW
 0CwMRO/GK+20alxzk//V9GmIM2ACElbfF8+Uug3pqiHkVnKqM7W9/S1NH2qmxB6zMiJUHlTH
 gnVeZX0dgH27mzstcF786uPcdEqS0KJuxh2kk5IvUSL3Qn3ZgmgdxBMyCPciD/1cb7/Ahazr
 3ThHQXSHXkH/aDXdfLsKVuwDzHLVSkdSnZdt5HHh75/NFHxwaTlydgfHmFFwodK8y/TjyiGZ
 zg2Kje38xnz8zKn9iesFBCcONXS7txENTzX0z80WKBhK+XSFJwARAQABzR5UaG9tYXMgSHV0
 aCA8dGh1dGhAcmVkaGF0LmNvbT7CwXgEEwECACIFAlVgX6oCGwMGCwkIBwMCBhUIAgkKCwQW
 AgMBAh4BAheAAAoJEC7Z13T+cC21EbIP/ii9cvT2HHGbFRl8HqGT6+7Wkb+XLMqJBMAIGiQK
 QIP3xk1HPTsLfVG0ao4hy/oYkGNOP8+ubLnZen6Yq3zAFiMhQ44lvgigDYJo3Ve59gfe99KX
 EbtB+X95ODARkq0McR6OAsPNJ7gpEUzfkQUUJTXRDQXfG/FX303Gvk+YU0spm2tsIKPl6AmV
 1CegDljzjycyfJbk418MQmMu2T82kjrkEofUO2a24ed3VGC0/Uz//XCR2ZTo+vBoBUQl41BD
 eFFtoCSrzo3yPFS+w5fkH9NT8ChdpSlbNS32NhYQhJtr9zjWyFRf0Zk+T/1P7ECn6gTEkp5k
 ofFIA4MFBc/fXbaDRtBmPB0N9pqTFApIUI4vuFPPO0JDrII9dLwZ6lO9EKiwuVlvr1wwzsgq
 zJTPBU3qHaUO4d/8G+gD7AL/6T4zi8Jo/GmjBsnYaTzbm94lf0CjXjsOX3seMhaE6WAZOQQG
 tZHAO1kAPWpaxne+wtgMKthyPLNwelLf+xzGvrIKvLX6QuLoWMnWldu22z2ICVnLQChlR9d6
 WW8QFEpo/FK7omuS8KvvopFcOOdlbFMM8Y/8vBgVMSsK6fsYUhruny/PahprPbYGiNIhKqz7
 UvgyZVl4pBFjTaz/SbimTk210vIlkDyy1WuS8Zsn0htv4+jQPgo9rqFE4mipJjy/iboDzsFN
 BFH7eUwBEAC2nzfUeeI8dv0C4qrfCPze6NkryUflEut9WwHhfXCLjtvCjnoGqFelH/PE9NF4
 4VPSCdvD1SSmFVzu6T9qWdcwMSaC+e7G/z0/AhBfqTeosAF5XvKQlAb9ZPkdDr7YN0a1XDfa
 +NgA+JZB4ROyBZFFAwNHT+HCnyzy0v9Sh3BgJJwfpXHH2l3LfncvV8rgFv0bvdr70U+On2XH
 5bApOyW1WpIG5KPJlDdzcQTyptOJ1dnEHfwnABEfzI3dNf63rlxsGouX/NFRRRNqkdClQR3K
 gCwciaXfZ7ir7fF0u1N2UuLsWA8Ei1JrNypk+MRxhbvdQC4tyZCZ8mVDk+QOK6pyK2f4rMf/
 WmqxNTtAVmNuZIwnJdjRMMSs4W4w6N/bRvpqtykSqx7VXcgqtv6eqoDZrNuhGbekQA0sAnCJ
 VPArerAZGArm63o39me/bRUQeQVSxEBmg66yshF9HkcUPGVeC4B0TPwz+HFcVhheo6hoJjLq
 knFOPLRj+0h+ZL+D0GenyqD3CyuyeTT5dGcNU9qT74bdSr20k/CklvI7S9yoQje8BeQAHtdV
 cvO8XCLrpGuw9SgOS7OP5oI26a0548M4KldAY+kqX6XVphEw3/6U1KTf7WxW5zYLTtadjISB
 X9xsRWSU+Yqs3C7oN5TIPSoj9tXMoxZkCIHWvnqGwZ7JhwARAQABwsFfBBgBAgAJBQJR+3lM
 AhsMAAoJEC7Z13T+cC21hPAQAIsBL9MdGpdEpvXs9CYrBkd6tS9mbaSWj6XBDfA1AEdQkBOn
 ZH1Qt7HJesk+qNSnLv6+jP4VwqK5AFMrKJ6IjE7jqgzGxtcZnvSjeDGPF1h2CKZQPpTw890k
 fy18AvgFHkVk2Oylyexw3aOBsXg6ukN44vIFqPoc+YSU0+0QIdYJp/XFsgWxnFIMYwDpxSHS
 5fdDxUjsk3UBHZx+IhFjs2siVZi5wnHIqM7eK9abr2cK2weInTBwXwqVWjsXZ4tq5+jQrwDK
 cvxIcwXdUTLGxc4/Z/VRH1PZSvfQxdxMGmNTGaXVNfdFZjm4fz0mz+OUi6AHC4CZpwnsliGV
 ODqwX8Y1zic9viSTbKS01ZNp175POyWViUk9qisPZB7ypfSIVSEULrL347qY/hm9ahhqmn17
 Ng255syASv3ehvX7iwWDfzXbA0/TVaqwa1YIkec+/8miicV0zMP9siRcYQkyTqSzaTFBBmqD
 oiT+z+/E59qj/EKfyce3sbC9XLjXv3mHMrq1tKX4G7IJGnS989E/fg6crv6NHae9Ckm7+lSs
 IQu4bBP2GxiRQ+NV3iV/KU3ebMRzqIC//DCOxzQNFNJAKldPe/bKZMCxEqtVoRkuJtNdp/5a
 yXFZ6TfE1hGKrDBYAm4vrnZ4CXFSBDllL59cFFOJCkn4Xboj/aVxxJxF30bn
In-Reply-To: <20240108204909.564514-4-dwmw2@infradead.org>
X-Mimecast-Spam-Score: 0
X-Mimecast-Originator: redhat.com
Content-Language: en-US
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit

On 08/01/2024 21.26, David Woodhouse wrote:
> From: David Woodhouse <dwmw@amazon.co.uk>
> 
> This will instantiate any NICs which live on a given bus type. Each bus
> is allowed *one* substitution (for PCI it's virtio → virtio-net-pci, for
> Xen it's xen → xen-net-device; no point in overengineering it unless we
> actually want more).
> 
> Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
> Reviewed-by: Paul Durrant <paul@xen.org>
> ---
>   include/net/net.h |  3 +++
>   net/net.c         | 53 +++++++++++++++++++++++++++++++++++++++++++++++
>   2 files changed, 56 insertions(+)

Reviewed-by: Thomas Huth <thuth@redhat.com>




From xen-devel-bounces@lists.xenproject.org Fri Jan 26 14:43:20 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 26 Jan 2024 14:43:20 +0000
Received: from list by lists.xenproject.org with outflank-mailman.672058.1045692 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTNQN-0003Sg-O3; Fri, 26 Jan 2024 14:43:19 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 672058.1045692; Fri, 26 Jan 2024 14:43:19 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTNQN-0003SZ-LE; Fri, 26 Jan 2024 14:43:19 +0000
Received: by outflank-mailman (input) for mailman id 672058;
 Fri, 26 Jan 2024 14:43:18 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=K+M0=JE=linaro.org=peter.maydell@srs-se1.protection.inumbo.net>)
 id 1rTNQM-0003Jd-6G
 for xen-devel@lists.xenproject.org; Fri, 26 Jan 2024 14:43:18 +0000
Received: from mail-wm1-x330.google.com (mail-wm1-x330.google.com
 [2a00:1450:4864:20::330])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 3d7e9ccc-bc59-11ee-98f5-efadbce2ee36;
 Fri, 26 Jan 2024 15:43:16 +0100 (CET)
Received: by mail-wm1-x330.google.com with SMTP id
 5b1f17b1804b1-40eacb6067dso9506815e9.1
 for <xen-devel@lists.xenproject.org>; Fri, 26 Jan 2024 06:43:16 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 3d7e9ccc-bc59-11ee-98f5-efadbce2ee36
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=linaro.org; s=google; t=1706280196; x=1706884996; darn=lists.xenproject.org;
        h=cc:to:subject:message-id:date:from:in-reply-to:references
         :mime-version:from:to:cc:subject:date:message-id:reply-to;
        bh=EhLQSD7+BW8XOT2H7obLO80KK16iLrWUr/ASvWBkRuk=;
        b=OD0OCQFVmoEV/vDQe3Vh8khYLxyqnh/WoWsLmywiMzXpNZwX1wwfYxpqUCKXePAw0R
         t1aXUzYqAAwXrQ14Ppvql8XivREAopkGXukXUDNBpKPLa8rIULwdtdAtmxM4vQr53fc7
         8qYZDkix/d5rPZbHbCG0Q6omyZzG3FJC01uxxeiEjLpe5TEUEupVd+P8LSXLNMsqpDMm
         iJfAkC8xzLKioTfqINy8cXIZ8IMM64dN+RQ5Y5DvrJrPSwobZeI/MAASm2j51mASVmPb
         GPu81b5qRxpZcgYSShiXrBkgYuYbtvoYJ6x4VEKsLKNTfn5g/aI2VnPtEk2ihsWaLjgo
         Lv6w==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706280196; x=1706884996;
        h=cc:to:subject:message-id:date:from:in-reply-to:references
         :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id
         :reply-to;
        bh=EhLQSD7+BW8XOT2H7obLO80KK16iLrWUr/ASvWBkRuk=;
        b=MZVlDLGfEAX4yar4w3c6BFohU5VvbWznZ3NVRg/1E8zQIPcW00A9kqoSettCSSMcE0
         hAbocItiPx4HKh5EYukSaDEQlkCFI8R/RerlyxT1+ZsmP43WCDzDNKUaupjwja26EEPd
         HZiQpdm4zcYYRWv4X3l360Oa4ViMcLp+ZGl7NDEw9hj7g1KEjeCNp49u+7NReKN86dQu
         eGjfp36ABmlRV3SqQPo8c/BuCSYPSfIpfFjkDHsNwQDDcf7AXf24T8bm047EQKRzS32B
         LSHSBj+gI8YUJd6dWXa9obrM+db77ndvPcwhEK/TuAwGiZKEDCim+9+JZghkGID+wNi3
         9Y0w==
X-Gm-Message-State: AOJu0Yx7KwQurD3OlX7twOtp82RLf5gIIVGZMstFSONN9DV4cYaZ6zD2
	2zZrUdLrk1zncIvrOy1Wzy7rn4xZHZeFUJ/JWho5l85xB/mo6onXlWyr+R8ku9zSfBgJJVydL1z
	3NawhceAuXn2H9bJ1xRDKTNZOlhKFmWBZd9mpYQ==
X-Google-Smtp-Source: AGHT+IGgFYkEGapICfD+7OZIAc7B1qLYTLJlzePH6Kestx1lg5b0pP5KESins2khUNkI4Y7yAyfKuXsSzxAbztCM8KU=
X-Received: by 2002:a05:600c:1992:b0:40e:5577:189 with SMTP id
 t18-20020a05600c199200b0040e55770189mr568615wmq.147.1706280196041; Fri, 26
 Jan 2024 06:43:16 -0800 (PST)
MIME-Version: 1.0
References: <20240108204909.564514-1-dwmw2@infradead.org> <20240108204909.564514-2-dwmw2@infradead.org>
In-Reply-To: <20240108204909.564514-2-dwmw2@infradead.org>
From: Peter Maydell <peter.maydell@linaro.org>
Date: Fri, 26 Jan 2024 14:43:05 +0000
Message-ID: <CAFEAcA8JtnXezmo-h-rFZcbqsN_-CnOYCTUfLfd_q=F0702U9g@mail.gmail.com>
Subject: Re: [PATCH v3 01/46] net: add qemu_{configure,create}_nic_device(), qemu_find_nic_info()
To: David Woodhouse <dwmw2@infradead.org>
Cc: qemu-devel@nongnu.org, Richard Henderson <richard.henderson@linaro.org>, 
	Beniamino Galvani <b.galvani@gmail.com>, Strahinja Jankovic <strahinja.p.jankovic@gmail.com>, 
	Niek Linnenbank <nieklinnenbank@gmail.com>, =?UTF-8?Q?C=C3=A9dric_Le_Goater?= <clg@kaod.org>, 
	Andrew Jeffery <andrew@codeconstruct.com.au>, Joel Stanley <joel@jms.id.au>, 
	Igor Mitsyanko <i.mitsyanko@gmail.com>, Jean-Christophe Dubois <jcd@tribudubois.net>, 
	Andrey Smirnov <andrew.smirnov@gmail.com>, =?UTF-8?Q?Philippe_Mathieu=2DDaud=C3=A9?= <philmd@linaro.org>, 
	Rob Herring <robh@kernel.org>, Subbaraya Sundeep <sundeep.lkml@gmail.com>, Jan Kiszka <jan.kiszka@web.de>, 
	Tyrone Ting <kfting@nuvoton.com>, Hao Wu <wuhaotsh@google.com>, 
	Radoslaw Biernacki <rad@semihalf.com>, Leif Lindholm <quic_llindhol@quicinc.com>, 
	Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org>, 
	"Edgar E. Iglesias" <edgar.iglesias@gmail.com>, Alistair Francis <alistair@alistair23.me>, 
	Helge Deller <deller@gmx.de>, Paolo Bonzini <pbonzini@redhat.com>, 
	Eduardo Habkost <eduardo@habkost.net>, "Michael S. Tsirkin" <mst@redhat.com>, 
	Marcel Apfelbaum <marcel.apfelbaum@gmail.com>, Song Gao <gaosong@loongson.cn>, 
	Thomas Huth <huth@tuxfamily.org>, Laurent Vivier <laurent@vivier.eu>, 
	Huacai Chen <chenhuacai@kernel.org>, Jiaxun Yang <jiaxun.yang@flygoat.com>, 
	=?UTF-8?Q?Herv=C3=A9_Poussineau?= <hpoussin@reactos.org>, 
	Aleksandar Rikalo <aleksandar.rikalo@syrmia.com>, Aurelien Jarno <aurelien@aurel32.net>, 
	Jason Wang <jasowang@redhat.com>, Jia Liu <proljc@gmail.com>, 
	Stafford Horne <shorne@gmail.com>, Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>, 
	Nicholas Piggin <npiggin@gmail.com>, Daniel Henrique Barboza <danielhb413@gmail.com>, 
	David Gibson <david@gibson.dropbear.id.au>, Harsh Prateek Bora <harshpb@linux.ibm.com>, 
	Bin Meng <bin.meng@windriver.com>, Palmer Dabbelt <palmer@dabbelt.com>, 
	Weiwei Li <liwei1518@gmail.com>, Liu Zhiwei <zhiwei_liu@linux.alibaba.com>, 
	Halil Pasic <pasic@linux.ibm.com>, Christian Borntraeger <borntraeger@linux.ibm.com>, 
	Eric Farman <farman@linux.ibm.com>, David Hildenbrand <david@redhat.com>, 
	Ilya Leoshkevich <iii@linux.ibm.com>, Yoshinori Sato <ysato@users.sourceforge.jp>, 
	Magnus Damm <magnus.damm@gmail.com>, Artyom Tarasenko <atar4qemu@gmail.com>, 
	Stefano Stabellini <sstabellini@kernel.org>, Anthony Perard <anthony.perard@citrix.com>, 
	Paul Durrant <paul@xen.org>, Max Filippov <jcmvbkbc@gmail.com>, qemu-arm@nongnu.org, 
	qemu-ppc@nongnu.org, qemu-riscv@nongnu.org, qemu-s390x@nongnu.org, 
	xen-devel@lists.xenproject.org, David Woodhouse <dwmw@amazon.co.uk>
Content-Type: text/plain; charset="UTF-8"

On Mon, 8 Jan 2024 at 20:49, David Woodhouse <dwmw2@infradead.org> wrote:
>
> From: David Woodhouse <dwmw@amazon.co.uk>
>
> Most code which directly accesses nd_table[] and nb_nics uses them for
> one of two things. Either "I have created a NIC device and I'd like a
> configuration for it", or "I will create a NIC device *if* there is a
> configuration for it".  With some variants on the theme around whether
> they actually *check* if the model specified in the configuration is
> the right one.
>
> Provide functions which perform both of those, allowing platforms to
> be a little more consistent and as a step towards making nd_table[]
> and nb_nics private to the net code.
>
> Also export the qemu_find_nic_info() helper, as some platforms have
> special cases they need to handle.
>
> Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
> Reviewed-by: Paul Durrant <paul@xen.org>
> ---
>  include/net/net.h |  7 ++++++-
>  net/net.c         | 51 +++++++++++++++++++++++++++++++++++++++++++++++
>  2 files changed, 57 insertions(+), 1 deletion(-)
>
> diff --git a/include/net/net.h b/include/net/net.h
> index ffbd2c8d56..25ea83fd12 100644
> --- a/include/net/net.h
> +++ b/include/net/net.h
> @@ -207,7 +207,12 @@ int qemu_show_nic_models(const char *arg, const char *const *models);
>  void qemu_check_nic_model(NICInfo *nd, const char *model);
>  int qemu_find_nic_model(NICInfo *nd, const char * const *models,
>                          const char *default_model);
> -
> +NICInfo *qemu_find_nic_info(const char *typename, bool match_default,
> +                            const char *alias);
> +bool qemu_configure_nic_device(DeviceState *dev, bool match_default,
> +                               const char *alias);
> +DeviceState *qemu_create_nic_device(const char *typename, bool match_default,
> +                                    const char *alias);

Could we have doc comments that document the purpose and API
for these new global functions, please?

thanks
-- PMM


From xen-devel-bounces@lists.xenproject.org Fri Jan 26 14:46:40 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 26 Jan 2024 14:46:40 +0000
Received: from list by lists.xenproject.org with outflank-mailman.672062.1045704 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTNTX-0004fz-CJ; Fri, 26 Jan 2024 14:46:35 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 672062.1045704; Fri, 26 Jan 2024 14:46:35 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTNTX-0004fs-7k; Fri, 26 Jan 2024 14:46:35 +0000
Received: by outflank-mailman (input) for mailman id 672062;
 Fri, 26 Jan 2024 14:46:33 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=bPDA=JE=casper.srs.infradead.org=BATV+7caeb094913322f6f00d+7460+infradead.org+dwmw2@srs-se1.protection.inumbo.net>)
 id 1rTNTV-0004fm-6L
 for xen-devel@lists.xenproject.org; Fri, 26 Jan 2024 14:46:33 +0000
Received: from casper.infradead.org (casper.infradead.org
 [2001:8b0:10b:1236::1])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id b2142999-bc59-11ee-8a43-1f161083a0e0;
 Fri, 26 Jan 2024 15:46:32 +0100 (CET)
Received: from [2001:8b0:10b:5:d160:e4ac:a057:38f5]
 (helo=u3832b3a9db3152.ant.amazon.com)
 by casper.infradead.org with esmtpsa (Exim 4.97.1 #2 (Red Hat Linux))
 id 1rTNSz-0000000DuYL-0U7W; Fri, 26 Jan 2024 14:46:02 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: b2142999-bc59-11ee-8a43-1f161083a0e0
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=infradead.org; s=casper.20170209; h=MIME-Version:Content-Type:References:
	In-Reply-To:Date:Cc:To:From:Subject:Message-ID:Sender:Reply-To:
	Content-Transfer-Encoding:Content-ID:Content-Description;
	bh=ZEC/MCDZPccfG+YoukWIDeemT4xEv8aKwraG93oDQDw=; b=ERzNZBpKk4i/ojlRZu6h6UL8Oe
	yU1sKi9aP7oipAixpszVeTEGt4I6nUN+ox1qqZqdYf1WJ/RDhkGssubmnhQeKMYsJ2zWnlDS8ujay
	woi1wLjVDfC4tBfEYdO/8qR+IviSwYd5ESTtpGKuHEZi39bZSkjcvvNSEU+9wgClFKyHTrYhtxTlA
	kQDZfFFPcw12an33v4ykBxZ0kdOcu9H9cWaTvnrAe6t8SJra3437vcmHzsf/G6wBxHuZoHzjyfi6a
	sVqjkL97cch9awXcEiLNIxAvRvZQSQDE02NtIvWAE78Voh1uOS+NARHg4jwCVbrt5pqvVm7QGkUin
	ubGXHuBg==;
Message-ID: <fc2ad24aa76675928db2b8b803d826ba08bf548b.camel@infradead.org>
Subject: Re: [PATCH v3 02/46] net: report list of available models according
 to platform
From: David Woodhouse <dwmw2@infradead.org>
To: Thomas Huth <thuth@redhat.com>, qemu-devel@nongnu.org
Cc: Richard Henderson <richard.henderson@linaro.org>, Beniamino Galvani
 <b.galvani@gmail.com>, Peter Maydell <peter.maydell@linaro.org>, Strahinja
 Jankovic <strahinja.p.jankovic@gmail.com>, Niek Linnenbank
 <nieklinnenbank@gmail.com>,  =?ISO-8859-1?Q?C=E9dric?= Le Goater
 <clg@kaod.org>, Andrew Jeffery <andrew@codeconstruct.com.au>, Joel Stanley
 <joel@jms.id.au>, Igor Mitsyanko <i.mitsyanko@gmail.com>, Jean-Christophe
 Dubois <jcd@tribudubois.net>, Andrey Smirnov <andrew.smirnov@gmail.com>,
 Philippe =?ISO-8859-1?Q?Mathieu-Daud=E9?= <philmd@linaro.org>, Rob Herring
 <robh@kernel.org>, Subbaraya Sundeep <sundeep.lkml@gmail.com>, Jan Kiszka
 <jan.kiszka@web.de>, Tyrone Ting <kfting@nuvoton.com>, Hao Wu
 <wuhaotsh@google.com>, Radoslaw Biernacki <rad@semihalf.com>, Leif Lindholm
 <quic_llindhol@quicinc.com>, Marcin Juszkiewicz
 <marcin.juszkiewicz@linaro.org>, "Edgar E. Iglesias"
 <edgar.iglesias@gmail.com>, Alistair Francis <alistair@alistair23.me>,
 Helge Deller <deller@gmx.de>, Paolo Bonzini <pbonzini@redhat.com>,  Eduardo
 Habkost <eduardo@habkost.net>, "Michael S. Tsirkin" <mst@redhat.com>,
 Marcel Apfelbaum <marcel.apfelbaum@gmail.com>, Song Gao
 <gaosong@loongson.cn>, Thomas Huth <huth@tuxfamily.org>, Laurent Vivier
 <laurent@vivier.eu>, Huacai Chen <chenhuacai@kernel.org>, Jiaxun Yang
 <jiaxun.yang@flygoat.com>,  =?ISO-8859-1?Q?Herv=E9?= Poussineau
 <hpoussin@reactos.org>, Aleksandar Rikalo <aleksandar.rikalo@syrmia.com>, 
 Aurelien Jarno <aurelien@aurel32.net>, Jason Wang <jasowang@redhat.com>,
 Jia Liu <proljc@gmail.com>, Stafford Horne <shorne@gmail.com>, Mark
 Cave-Ayland <mark.cave-ayland@ilande.co.uk>, Nicholas Piggin
 <npiggin@gmail.com>, Daniel Henrique Barboza <danielhb413@gmail.com>, David
 Gibson <david@gibson.dropbear.id.au>, Harsh Prateek Bora
 <harshpb@linux.ibm.com>, Bin Meng <bin.meng@windriver.com>, Palmer Dabbelt
 <palmer@dabbelt.com>, Weiwei Li <liwei1518@gmail.com>, Liu Zhiwei
 <zhiwei_liu@linux.alibaba.com>, Halil Pasic <pasic@linux.ibm.com>,
 Christian Borntraeger <borntraeger@linux.ibm.com>,  Eric Farman
 <farman@linux.ibm.com>, David Hildenbrand <david@redhat.com>, Ilya
 Leoshkevich <iii@linux.ibm.com>, Yoshinori Sato
 <ysato@users.sourceforge.jp>, Magnus Damm <magnus.damm@gmail.com>, Artyom
 Tarasenko <atar4qemu@gmail.com>, Stefano Stabellini
 <sstabellini@kernel.org>, Anthony Perard <anthony.perard@citrix.com>, Paul
 Durrant <paul@xen.org>, Max Filippov <jcmvbkbc@gmail.com>,
 qemu-arm@nongnu.org,  qemu-ppc@nongnu.org, qemu-riscv@nongnu.org,
 qemu-s390x@nongnu.org,  xen-devel@lists.xenproject.org
Date: Fri, 26 Jan 2024 14:46:00 +0000
In-Reply-To: <9ae3e373-5213-4906-9a57-7a5eb026a51f@redhat.com>
References: <20240108204909.564514-1-dwmw2@infradead.org>
	 <20240108204909.564514-3-dwmw2@infradead.org>
	 <9ae3e373-5213-4906-9a57-7a5eb026a51f@redhat.com>
Content-Type: multipart/signed; micalg="sha-256"; protocol="application/pkcs7-signature";
	boundary="=-LuwkGHCQH0Iw9kf9ckTY"
User-Agent: Evolution 3.44.4-0ubuntu2 
MIME-Version: 1.0
X-SRS-Rewrite: SMTP reverse-path rewritten from <dwmw2@infradead.org> by casper.infradead.org. See http://www.infradead.org/rpr.html


--=-LuwkGHCQH0Iw9kf9ckTY
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

On Fri, 2024-01-26 at 15:33 +0100, Thomas Huth wrote:
>=20
> It's an abbreviation, so I'd rather use "a.k.a." instead of "aka".
>=20
> Apart from that, the patch looks reasonable to me.

I was going for shorter line length in the output.

I will note that we have only 47 instances of 'a\.k\.a' in the code
base, and about 117 instances of 'aka '. The latter does include a few
false positives, but it also includes *all* the user-visible
occurrences (mostly in CPU model names).

It is literally in the dictionary as "aka":
https://dictionary.cambridge.org/dictionary/english/aka
... unlike e.g. "e.g." which the dictionary does show as such, albeit
with a very reluctant "also eg" in very small letters:
https://dictionary.cambridge.org/dictionary/english/eg

Definitely not a hill I'm prepared to die on though :)

--=-LuwkGHCQH0Iw9kf9ckTY
Content-Type: application/pkcs7-signature; name="smime.p7s"
Content-Disposition: attachment; filename="smime.p7s"
Content-Transfer-Encoding: base64

MIAGCSqGSIb3DQEHAqCAMIACAQExDzANBglghkgBZQMEAgEFADCABgkqhkiG9w0BBwEAAKCCEkQw
ggYQMIID+KADAgECAhBNlCwQ1DvglAnFgS06KwZPMA0GCSqGSIb3DQEBDAUAMIGIMQswCQYDVQQG
EwJVUzETMBEGA1UECBMKTmV3IEplcnNleTEUMBIGA1UEBxMLSmVyc2V5IENpdHkxHjAcBgNVBAoT
FVRoZSBVU0VSVFJVU1QgTmV0d29yazEuMCwGA1UEAxMlVVNFUlRydXN0IFJTQSBDZXJ0aWZpY2F0
aW9uIEF1dGhvcml0eTAeFw0xODExMDIwMDAwMDBaFw0zMDEyMzEyMzU5NTlaMIGWMQswCQYDVQQG
EwJHQjEbMBkGA1UECBMSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHEwdTYWxmb3JkMRgwFgYD
VQQKEw9TZWN0aWdvIExpbWl0ZWQxPjA8BgNVBAMTNVNlY3RpZ28gUlNBIENsaWVudCBBdXRoZW50
aWNhdGlvbiBhbmQgU2VjdXJlIEVtYWlsIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
AQEAyjztlApB/975Rrno1jvm2pK/KxBOqhq8gr2+JhwpKirSzZxQgT9tlC7zl6hn1fXjSo5MqXUf
ItMltrMaXqcESJuK8dtK56NCSrq4iDKaKq9NxOXFmqXX2zN8HHGjQ2b2Xv0v1L5Nk1MQPKA19xeW
QcpGEGFUUd0kN+oHox+L9aV1rjfNiCj3bJk6kJaOPabPi2503nn/ITX5e8WfPnGw4VuZ79Khj1YB
rf24k5Ee1sLTHsLtpiK9OjG4iQRBdq6Z/TlVx/hGAez5h36bBJMxqdHLpdwIUkTqT8se3ed0PewD
ch/8kHPo5fZl5u1B0ecpq/sDN/5sCG52Ds+QU5O5EwIDAQABo4IBZDCCAWAwHwYDVR0jBBgwFoAU
U3m/WqorSs9UgOHYm8Cd8rIDZsswHQYDVR0OBBYEFAnA8vwL2pTbX/4r36iZQs/J4K0AMA4GA1Ud
DwEB/wQEAwIBhjASBgNVHRMBAf8ECDAGAQH/AgEAMB0GA1UdJQQWMBQGCCsGAQUFBwMCBggrBgEF
BQcDBDARBgNVHSAECjAIMAYGBFUdIAAwUAYDVR0fBEkwRzBFoEOgQYY/aHR0cDovL2NybC51c2Vy
dHJ1c3QuY29tL1VTRVJUcnVzdFJTQUNlcnRpZmljYXRpb25BdXRob3JpdHkuY3JsMHYGCCsGAQUF
BwEBBGowaDA/BggrBgEFBQcwAoYzaHR0cDovL2NydC51c2VydHJ1c3QuY29tL1VTRVJUcnVzdFJT
QUFkZFRydXN0Q0EuY3J0MCUGCCsGAQUFBzABhhlodHRwOi8vb2NzcC51c2VydHJ1c3QuY29tMA0G
CSqGSIb3DQEBDAUAA4ICAQBBRHUAqznCFfXejpVtMnFojADdF9d6HBA4kMjjsb0XMZHztuOCtKF+
xswhh2GqkW5JQrM8zVlU+A2VP72Ky2nlRA1GwmIPgou74TZ/XTarHG8zdMSgaDrkVYzz1g3nIVO9
IHk96VwsacIvBF8JfqIs+8aWH2PfSUrNxP6Ys7U0sZYx4rXD6+cqFq/ZW5BUfClN/rhk2ddQXyn7
kkmka2RQb9d90nmNHdgKrwfQ49mQ2hWQNDkJJIXwKjYA6VUR/fZUFeCUisdDe/0ABLTI+jheXUV1
eoYV7lNwNBKpeHdNuO6Aacb533JlfeUHxvBz9OfYWUiXu09sMAviM11Q0DuMZ5760CdO2VnpsXP4
KxaYIhvqPqUMWqRdWyn7crItNkZeroXaecG03i3mM7dkiPaCkgocBg0EBYsbZDZ8bsG3a08LwEsL
1Ygz3SBsyECa0waq4hOf/Z85F2w2ZpXfP+w8q4ifwO90SGZZV+HR/Jh6rEaVPDRF/CEGVqR1hiuQ
OZ1YL5ezMTX0ZSLwrymUE0pwi/KDaiYB15uswgeIAcA6JzPFf9pLkAFFWs1QNyN++niFhsM47qod
x/PL+5jR87myx5uYdBEQkkDc+lKB1Wct6ucXqm2EmsaQ0M95QjTmy+rDWjkDYdw3Ms6mSWE3Bn7i
5ZgtwCLXgAIe5W8mybM2JzCCBhQwggT8oAMCAQICEQDGvhmWZ0DEAx0oURL6O6l+MA0GCSqGSIb3
DQEBCwUAMIGWMQswCQYDVQQGEwJHQjEbMBkGA1UECBMSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYD
VQQHEwdTYWxmb3JkMRgwFgYDVQQKEw9TZWN0aWdvIExpbWl0ZWQxPjA8BgNVBAMTNVNlY3RpZ28g
UlNBIENsaWVudCBBdXRoZW50aWNhdGlvbiBhbmQgU2VjdXJlIEVtYWlsIENBMB4XDTIyMDEwNzAw
MDAwMFoXDTI1MDEwNjIzNTk1OVowJDEiMCAGCSqGSIb3DQEJARYTZHdtdzJAaW5mcmFkZWFkLm9y
ZzCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBALQ3GpC2bomUqk+91wLYBzDMcCj5C9m6
oZaHwvmIdXftOgTbCJXADo6G9T7BBAebw2JV38EINgKpy/ZHh7htyAkWYVoFsFPrwHounto8xTsy
SSePMiPlmIdQ10BcVSXMUJ3Juu16GlWOnAMJY2oYfEzmE7uT9YgcBqKCo65pTFmOnR/VVbjJk4K2
xE34GC2nAdUQkPFuyaFisicc6HRMOYXPuF0DuwITEKnjxgNjP+qDrh0db7PAjO1D4d5ftfrsf+kd
RR4gKVGSk8Tz2WwvtLAroJM4nXjNPIBJNT4w/FWWc/5qPHJy2U+eITZ5LLE5s45mX2oPFknWqxBo
bQZ8a9dsZ3dSPZBvE9ZrmtFLrVrN4eo1jsXgAp1+p7bkfqd3BgBEmfsYWlBXO8rVXfvPgLs32VdV
NZxb/CDWPqBsiYv0Hv3HPsz07j5b+/cVoWqyHDKzkaVbxfq/7auNVRmPB3v5SWEsH8xi4Bez2V9U
KxfYCnqsjp8RaC2/khxKt0A552Eaxnz/4ly/2C7wkwTQnBmdlFYhAflWKQ03Ufiu8t3iBE3VJbc2
5oMrglj7TRZrmKq3CkbFnX0fyulB+kHimrt6PIWn7kgyl9aelIl6vtbhMA+l0nfrsORMa4kobqQ5
C5rveVgmcIad67EDa+UqEKy/GltUwlSh6xy+TrK1tzDvAgMBAAGjggHMMIIByDAfBgNVHSMEGDAW
gBQJwPL8C9qU21/+K9+omULPyeCtADAdBgNVHQ4EFgQUzMeDMcimo0oz8o1R1Nver3ZVpSkwDgYD
VR0PAQH/BAQDAgWgMAwGA1UdEwEB/wQCMAAwHQYDVR0lBBYwFAYIKwYBBQUHAwQGCCsGAQUFBwMC
MEAGA1UdIAQ5MDcwNQYMKwYBBAGyMQECAQEBMCUwIwYIKwYBBQUHAgEWF2h0dHBzOi8vc2VjdGln
by5jb20vQ1BTMFoGA1UdHwRTMFEwT6BNoEuGSWh0dHA6Ly9jcmwuc2VjdGlnby5jb20vU2VjdGln
b1JTQUNsaWVudEF1dGhlbnRpY2F0aW9uYW5kU2VjdXJlRW1haWxDQS5jcmwwgYoGCCsGAQUFBwEB
BH4wfDBVBggrBgEFBQcwAoZJaHR0cDovL2NydC5zZWN0aWdvLmNvbS9TZWN0aWdvUlNBQ2xpZW50
QXV0aGVudGljYXRpb25hbmRTZWN1cmVFbWFpbENBLmNydDAjBggrBgEFBQcwAYYXaHR0cDovL29j
c3Auc2VjdGlnby5jb20wHgYDVR0RBBcwFYETZHdtdzJAaW5mcmFkZWFkLm9yZzANBgkqhkiG9w0B
AQsFAAOCAQEAyW6MUir5dm495teKqAQjDJwuFCi35h4xgnQvQ/fzPXmtR9t54rpmI2TfyvcKgOXp
qa7BGXNFfh1JsqexVkIqZP9uWB2J+uVMD+XZEs/KYNNX2PvIlSPrzIB4Z2wyIGQpaPLlYflrrVFK
v9CjT2zdqvy2maK7HKOQRt3BiJbVG5lRiwbbygldcALEV9ChWFfgSXvrWDZspnU3Gjw/rMHrGnql
Htlyebp3pf3fSS9kzQ1FVtVIDrL6eqhTwJxe+pXSMMqFiN0whpBtXdyDjzBtQTaZJ7zTT/vlehc/
tDuqZwGHm/YJy883Ll+GP3NvOkgaRGWEuYWJJ6hFCkXYjyR9IzCCBhQwggT8oAMCAQICEQDGvhmW
Z0DEAx0oURL6O6l+MA0GCSqGSIb3DQEBCwUAMIGWMQswCQYDVQQGEwJHQjEbMBkGA1UECBMSR3Jl
YXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHEwdTYWxmb3JkMRgwFgYDVQQKEw9TZWN0aWdvIExpbWl0
ZWQxPjA8BgNVBAMTNVNlY3RpZ28gUlNBIENsaWVudCBBdXRoZW50aWNhdGlvbiBhbmQgU2VjdXJl
IEVtYWlsIENBMB4XDTIyMDEwNzAwMDAwMFoXDTI1MDEwNjIzNTk1OVowJDEiMCAGCSqGSIb3DQEJ
ARYTZHdtdzJAaW5mcmFkZWFkLm9yZzCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBALQ3
GpC2bomUqk+91wLYBzDMcCj5C9m6oZaHwvmIdXftOgTbCJXADo6G9T7BBAebw2JV38EINgKpy/ZH
h7htyAkWYVoFsFPrwHounto8xTsySSePMiPlmIdQ10BcVSXMUJ3Juu16GlWOnAMJY2oYfEzmE7uT
9YgcBqKCo65pTFmOnR/VVbjJk4K2xE34GC2nAdUQkPFuyaFisicc6HRMOYXPuF0DuwITEKnjxgNj
P+qDrh0db7PAjO1D4d5ftfrsf+kdRR4gKVGSk8Tz2WwvtLAroJM4nXjNPIBJNT4w/FWWc/5qPHJy
2U+eITZ5LLE5s45mX2oPFknWqxBobQZ8a9dsZ3dSPZBvE9ZrmtFLrVrN4eo1jsXgAp1+p7bkfqd3
BgBEmfsYWlBXO8rVXfvPgLs32VdVNZxb/CDWPqBsiYv0Hv3HPsz07j5b+/cVoWqyHDKzkaVbxfq/
7auNVRmPB3v5SWEsH8xi4Bez2V9UKxfYCnqsjp8RaC2/khxKt0A552Eaxnz/4ly/2C7wkwTQnBmd
lFYhAflWKQ03Ufiu8t3iBE3VJbc25oMrglj7TRZrmKq3CkbFnX0fyulB+kHimrt6PIWn7kgyl9ae
lIl6vtbhMA+l0nfrsORMa4kobqQ5C5rveVgmcIad67EDa+UqEKy/GltUwlSh6xy+TrK1tzDvAgMB
AAGjggHMMIIByDAfBgNVHSMEGDAWgBQJwPL8C9qU21/+K9+omULPyeCtADAdBgNVHQ4EFgQUzMeD
Mcimo0oz8o1R1Nver3ZVpSkwDgYDVR0PAQH/BAQDAgWgMAwGA1UdEwEB/wQCMAAwHQYDVR0lBBYw
FAYIKwYBBQUHAwQGCCsGAQUFBwMCMEAGA1UdIAQ5MDcwNQYMKwYBBAGyMQECAQEBMCUwIwYIKwYB
BQUHAgEWF2h0dHBzOi8vc2VjdGlnby5jb20vQ1BTMFoGA1UdHwRTMFEwT6BNoEuGSWh0dHA6Ly9j
cmwuc2VjdGlnby5jb20vU2VjdGlnb1JTQUNsaWVudEF1dGhlbnRpY2F0aW9uYW5kU2VjdXJlRW1h
aWxDQS5jcmwwgYoGCCsGAQUFBwEBBH4wfDBVBggrBgEFBQcwAoZJaHR0cDovL2NydC5zZWN0aWdv
LmNvbS9TZWN0aWdvUlNBQ2xpZW50QXV0aGVudGljYXRpb25hbmRTZWN1cmVFbWFpbENBLmNydDAj
BggrBgEFBQcwAYYXaHR0cDovL29jc3Auc2VjdGlnby5jb20wHgYDVR0RBBcwFYETZHdtdzJAaW5m
cmFkZWFkLm9yZzANBgkqhkiG9w0BAQsFAAOCAQEAyW6MUir5dm495teKqAQjDJwuFCi35h4xgnQv
Q/fzPXmtR9t54rpmI2TfyvcKgOXpqa7BGXNFfh1JsqexVkIqZP9uWB2J+uVMD+XZEs/KYNNX2PvI
lSPrzIB4Z2wyIGQpaPLlYflrrVFKv9CjT2zdqvy2maK7HKOQRt3BiJbVG5lRiwbbygldcALEV9Ch
WFfgSXvrWDZspnU3Gjw/rMHrGnqlHtlyebp3pf3fSS9kzQ1FVtVIDrL6eqhTwJxe+pXSMMqFiN0w
hpBtXdyDjzBtQTaZJ7zTT/vlehc/tDuqZwGHm/YJy883Ll+GP3NvOkgaRGWEuYWJJ6hFCkXYjyR9
IzGCBMcwggTDAgEBMIGsMIGWMQswCQYDVQQGEwJHQjEbMBkGA1UECBMSR3JlYXRlciBNYW5jaGVz
dGVyMRAwDgYDVQQHEwdTYWxmb3JkMRgwFgYDVQQKEw9TZWN0aWdvIExpbWl0ZWQxPjA8BgNVBAMT
NVNlY3RpZ28gUlNBIENsaWVudCBBdXRoZW50aWNhdGlvbiBhbmQgU2VjdXJlIEVtYWlsIENBAhEA
xr4ZlmdAxAMdKFES+jupfjANBglghkgBZQMEAgEFAKCCAeswGAYJKoZIhvcNAQkDMQsGCSqGSIb3
DQEHATAcBgkqhkiG9w0BCQUxDxcNMjQwMTI2MTQ0NjAwWjAvBgkqhkiG9w0BCQQxIgQgx7NvADYf
LuatPmSn421ZpMJlmXNC0rkDdlSiy1CRcPcwgb0GCSsGAQQBgjcQBDGBrzCBrDCBljELMAkGA1UE
BhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEYMBYG
A1UEChMPU2VjdGlnbyBMaW1pdGVkMT4wPAYDVQQDEzVTZWN0aWdvIFJTQSBDbGllbnQgQXV0aGVu
dGljYXRpb24gYW5kIFNlY3VyZSBFbWFpbCBDQQIRAMa+GZZnQMQDHShREvo7qX4wgb8GCyqGSIb3
DQEJEAILMYGvoIGsMIGWMQswCQYDVQQGEwJHQjEbMBkGA1UECBMSR3JlYXRlciBNYW5jaGVzdGVy
MRAwDgYDVQQHEwdTYWxmb3JkMRgwFgYDVQQKEw9TZWN0aWdvIExpbWl0ZWQxPjA8BgNVBAMTNVNl
Y3RpZ28gUlNBIENsaWVudCBBdXRoZW50aWNhdGlvbiBhbmQgU2VjdXJlIEVtYWlsIENBAhEAxr4Z
lmdAxAMdKFES+jupfjANBgkqhkiG9w0BAQEFAASCAgADq/vuZNRn/6B+0a5YWtUMlBfl2kkhn2uJ
4EgUFkHX7W699QxLWAGpA9nYQfIhoJ5R6ucUrS0OTlh9wPeKpcCtmeu5LZpTEbE4iJSoko5SBGUL
Dw7KYNFscYZF8fM/yqQx+1izlNkWXDWh+m1QPRF78Pulybt66L1LMW+dJDanXztUci16AEsyL/bV
yPEUfQCHnzizU/pRWeac8E4eUEBh2tIjGGoEnOe43pCMge6y76+Q3qo8bQjgZ89hdYIJU9ztom3u
BniAjb4eDoIV+cK0q11Y8TITnv1l3oOoKby855P0hpQvdZ1fJmXjvUHO5p8AIquOY9mytotoy72d
r3HnFmMRkEI/2wMrCEcnt7fFknnID0rGOHFZxF9befzbcpF86k0Ojjz6hkOIqK+n/1k45HoFgtjd
xPabcsR3p8DlYgCm3aYMutam8kWtqvbldBvTMO9eeRcjk4v9wGD2Y3g0BtK47TxD7PoGIphAgMFE
yDNAKyjgBcZ0g0sgdRRxR0jaGoQSo4VnFaP8HKMbSnNoLTkHJjroc4HO87jQwkxszJcTkvNU9Dy5
xjEwDlR42MPjZ3e7dwS/EBaAz4db4UpaM8cuDoGvRhqa8CUMkDqU1S+8IMEodlsNXDwfbuldsPNR
xdewAO6SMdzkppE4eLwjEZakq5T1akSW8GJ8VTzYOQAAAAAAAA==


--=-LuwkGHCQH0Iw9kf9ckTY--


From xen-devel-bounces@lists.xenproject.org Fri Jan 26 14:51:15 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 26 Jan 2024 14:51:15 +0000
Received: from list by lists.xenproject.org with outflank-mailman.672066.1045713 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTNY0-0007Ne-Rb; Fri, 26 Jan 2024 14:51:12 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 672066.1045713; Fri, 26 Jan 2024 14:51:12 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTNY0-0007NX-On; Fri, 26 Jan 2024 14:51:12 +0000
Received: by outflank-mailman (input) for mailman id 672066;
 Fri, 26 Jan 2024 14:51:12 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=UtOA=JE=redhat.com=thuth@srs-se1.protection.inumbo.net>)
 id 1rTNY0-0007NR-Aw
 for xen-devel@lists.xenproject.org; Fri, 26 Jan 2024 14:51:12 +0000
Received: from us-smtp-delivery-124.mimecast.com
 (us-smtp-delivery-124.mimecast.com [170.10.133.124])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 5707679d-bc5a-11ee-98f5-efadbce2ee36;
 Fri, 26 Jan 2024 15:51:10 +0100 (CET)
Received: from mail-ua1-f69.google.com (mail-ua1-f69.google.com
 [209.85.222.69]) by relay.mimecast.com with ESMTP with STARTTLS
 (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id
 us-mta-328-xKYFOb9vMDqXoAe0JEH1vA-1; Fri, 26 Jan 2024 09:51:05 -0500
Received: by mail-ua1-f69.google.com with SMTP id
 a1e0cc1a2514c-7d2e0eecd89so225158241.1
 for <xen-devel@lists.xenproject.org>; Fri, 26 Jan 2024 06:51:03 -0800 (PST)
Received: from [192.168.0.9] (ip-109-43-176-119.web.vodafone.de.
 [109.43.176.119]) by smtp.gmail.com with ESMTPSA id
 ez12-20020a0561302f0c00b007ccf6145c70sm149174uab.2.2024.01.26.06.50.48
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Fri, 26 Jan 2024 06:51:01 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 5707679d-bc5a-11ee-98f5-efadbce2ee36
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
	s=mimecast20190719; t=1706280668;
	h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
	 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references:autocrypt:autocrypt;
	bh=2XyKJSI6U8K/dx96ziBW1FP9JxqX+3TWi9OE2a9VE60=;
	b=HtgOeJdNK8Z/WKQXnEx4vvQsVbZRLfGO2eW9OqpFW34hbI/Aj2XI4a9wPa/s239n5cZRRp
	Z97a6cHGH8yT1jZKPR+YKRTMHUu/v+LOrwDVr3sFEgNHzFKEwVpDJl+zuMGzpqBWJVaZ/x
	SK0KJE5iebn8l9NTafqCLx7KUJI8McE=
X-MC-Unique: xKYFOb9vMDqXoAe0JEH1vA-1
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706280662; x=1706885462;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=2XyKJSI6U8K/dx96ziBW1FP9JxqX+3TWi9OE2a9VE60=;
        b=Gj/ZnP7Ibjq/Zcy3Ybe07wwuQuxgHiVjSPXKUWyzMU7bJoEVdsQrAx0d0QNzgQWYNR
         wmy/aSyKpMD+b+sY94KXzSEIicY6fs8FSweDquphQUcQiSZGgRUMuGgVeUchPfF3LKfg
         G/KRX6AOz5pB2J68wKRWXZ33Zb7Z6LepAec/qh/DOFffu9wxYJB8ob0KIMxzxrNEY5ia
         ziHhC7eIuwGKWQGWvOHhNXQgFpdlmwXiEYaLB71DNW9CQo7DTrAB9RamVf9P9/C4Gvdq
         VJf3zbgoD/bEFs9vvXeuM69mxcIQ9t2mxOisTIZ/cezF4o9RPuihy9HSfDUbANyvc3Xc
         E8xg==
X-Gm-Message-State: AOJu0YzlAIRLAtfEORooTdiQH/XiZcNJuBuQLgFA9L80brCsynQaz+Td
	RtUXgKMqrdMLulgFQHacvpPac5URTXLbpUzY8/kuuL8tEholEXEPUQHtpnogPaK26I+nKZZ5IdJ
	Cczcti1QtBvt+YW+fGPVwcWf9CZwJh7uDJrQU07FFXs5uIsH+wibzQi07yZqhOgLs
X-Received: by 2002:a67:efd8:0:b0:469:a662:267a with SMTP id s24-20020a67efd8000000b00469a662267amr1840563vsp.3.1706280662000;
        Fri, 26 Jan 2024 06:51:02 -0800 (PST)
X-Google-Smtp-Source: AGHT+IEKiJ3IzjIKdFtdw3WqduALq6kl6n1eotQHIY+PinoXtrk8VZfkz8HYb3M3trMVWex6Z6cyZg==
X-Received: by 2002:a67:efd8:0:b0:469:a662:267a with SMTP id s24-20020a67efd8000000b00469a662267amr1840525vsp.3.1706280661752;
        Fri, 26 Jan 2024 06:51:01 -0800 (PST)
Message-ID: <1f6b8b05-1dc6-4b6f-94d0-9b79134310f3@redhat.com>
Date: Fri, 26 Jan 2024 15:50:45 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 02/46] net: report list of available models according
 to platform
To: David Woodhouse <dwmw2@infradead.org>, qemu-devel@nongnu.org
Cc: Richard Henderson <richard.henderson@linaro.org>,
 Beniamino Galvani <b.galvani@gmail.com>,
 Peter Maydell <peter.maydell@linaro.org>,
 Strahinja Jankovic <strahinja.p.jankovic@gmail.com>,
 Niek Linnenbank <nieklinnenbank@gmail.com>, =?UTF-8?Q?C=C3=A9dric_Le_Goater?=
 <clg@kaod.org>, Andrew Jeffery <andrew@codeconstruct.com.au>,
 Joel Stanley <joel@jms.id.au>, Igor Mitsyanko <i.mitsyanko@gmail.com>,
 Jean-Christophe Dubois <jcd@tribudubois.net>,
 Andrey Smirnov <andrew.smirnov@gmail.com>,
 =?UTF-8?Q?Philippe_Mathieu-Daud=C3=A9?= <philmd@linaro.org>,
 Rob Herring <robh@kernel.org>, Subbaraya Sundeep <sundeep.lkml@gmail.com>,
 Jan Kiszka <jan.kiszka@web.de>, Tyrone Ting <kfting@nuvoton.com>,
 Hao Wu <wuhaotsh@google.com>, Radoslaw Biernacki <rad@semihalf.com>,
 Leif Lindholm <quic_llindhol@quicinc.com>,
 Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org>,
 "Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
 Alistair Francis <alistair@alistair23.me>, Helge Deller <deller@gmx.de>,
 Paolo Bonzini <pbonzini@redhat.com>, Eduardo Habkost <eduardo@habkost.net>,
 "Michael S. Tsirkin" <mst@redhat.com>,
 Marcel Apfelbaum <marcel.apfelbaum@gmail.com>, Song Gao
 <gaosong@loongson.cn>, Thomas Huth <huth@tuxfamily.org>,
 Laurent Vivier <laurent@vivier.eu>, Huacai Chen <chenhuacai@kernel.org>,
 Jiaxun Yang <jiaxun.yang@flygoat.com>,
 =?UTF-8?Q?Herv=C3=A9_Poussineau?= <hpoussin@reactos.org>,
 Aleksandar Rikalo <aleksandar.rikalo@syrmia.com>,
 Aurelien Jarno <aurelien@aurel32.net>, Jason Wang <jasowang@redhat.com>,
 Jia Liu <proljc@gmail.com>, Stafford Horne <shorne@gmail.com>,
 Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>,
 Nicholas Piggin <npiggin@gmail.com>,
 Daniel Henrique Barboza <danielhb413@gmail.com>,
 David Gibson <david@gibson.dropbear.id.au>,
 Harsh Prateek Bora <harshpb@linux.ibm.com>, Bin Meng
 <bin.meng@windriver.com>, Palmer Dabbelt <palmer@dabbelt.com>,
 Weiwei Li <liwei1518@gmail.com>, Liu Zhiwei <zhiwei_liu@linux.alibaba.com>,
 Halil Pasic <pasic@linux.ibm.com>,
 Christian Borntraeger <borntraeger@linux.ibm.com>,
 Eric Farman <farman@linux.ibm.com>, David Hildenbrand <david@redhat.com>,
 Ilya Leoshkevich <iii@linux.ibm.com>,
 Yoshinori Sato <ysato@users.sourceforge.jp>,
 Magnus Damm <magnus.damm@gmail.com>, Artyom Tarasenko <atar4qemu@gmail.com>,
 Stefano Stabellini <sstabellini@kernel.org>,
 Anthony Perard <anthony.perard@citrix.com>, Paul Durrant <paul@xen.org>,
 Max Filippov <jcmvbkbc@gmail.com>, qemu-arm@nongnu.org, qemu-ppc@nongnu.org,
 qemu-riscv@nongnu.org, qemu-s390x@nongnu.org, xen-devel@lists.xenproject.org
References: <20240108204909.564514-1-dwmw2@infradead.org>
 <20240108204909.564514-3-dwmw2@infradead.org>
 <9ae3e373-5213-4906-9a57-7a5eb026a51f@redhat.com>
 <fc2ad24aa76675928db2b8b803d826ba08bf548b.camel@infradead.org>
From: Thomas Huth <thuth@redhat.com>
Autocrypt: addr=thuth@redhat.com; keydata=
 xsFNBFH7eUwBEACzyOXKU+5Pcs6wNpKzrlJwzRl3VGZt95VCdb+FgoU9g11m7FWcOafrVRwU
 yYkTm9+7zBUc0sW5AuPGR/dp3pSLX/yFWsA/UB4nJsHqgDvDU7BImSeiTrnpMOTXb7Arw2a2
 4CflIyFqjCpfDM4MuTmzTjXq4Uov1giGE9X6viNo1pxyEpd7PanlKNnf4PqEQp06X4IgUacW
 tSGj6Gcns1bCuHV8OPWLkf4hkRnu8hdL6i60Yxz4E6TqlrpxsfYwLXgEeswPHOA6Mn4Cso9O
 0lewVYfFfsmokfAVMKWzOl1Sr0KGI5T9CpmRfAiSHpthhHWnECcJFwl72NTi6kUcUzG4se81
 O6n9d/kTj7pzTmBdfwuOZ0YUSqcqs0W+l1NcASSYZQaDoD3/SLk+nqVeCBB4OnYOGhgmIHNW
 0CwMRO/GK+20alxzk//V9GmIM2ACElbfF8+Uug3pqiHkVnKqM7W9/S1NH2qmxB6zMiJUHlTH
 gnVeZX0dgH27mzstcF786uPcdEqS0KJuxh2kk5IvUSL3Qn3ZgmgdxBMyCPciD/1cb7/Ahazr
 3ThHQXSHXkH/aDXdfLsKVuwDzHLVSkdSnZdt5HHh75/NFHxwaTlydgfHmFFwodK8y/TjyiGZ
 zg2Kje38xnz8zKn9iesFBCcONXS7txENTzX0z80WKBhK+XSFJwARAQABzR5UaG9tYXMgSHV0
 aCA8dGh1dGhAcmVkaGF0LmNvbT7CwXgEEwECACIFAlVgX6oCGwMGCwkIBwMCBhUIAgkKCwQW
 AgMBAh4BAheAAAoJEC7Z13T+cC21EbIP/ii9cvT2HHGbFRl8HqGT6+7Wkb+XLMqJBMAIGiQK
 QIP3xk1HPTsLfVG0ao4hy/oYkGNOP8+ubLnZen6Yq3zAFiMhQ44lvgigDYJo3Ve59gfe99KX
 EbtB+X95ODARkq0McR6OAsPNJ7gpEUzfkQUUJTXRDQXfG/FX303Gvk+YU0spm2tsIKPl6AmV
 1CegDljzjycyfJbk418MQmMu2T82kjrkEofUO2a24ed3VGC0/Uz//XCR2ZTo+vBoBUQl41BD
 eFFtoCSrzo3yPFS+w5fkH9NT8ChdpSlbNS32NhYQhJtr9zjWyFRf0Zk+T/1P7ECn6gTEkp5k
 ofFIA4MFBc/fXbaDRtBmPB0N9pqTFApIUI4vuFPPO0JDrII9dLwZ6lO9EKiwuVlvr1wwzsgq
 zJTPBU3qHaUO4d/8G+gD7AL/6T4zi8Jo/GmjBsnYaTzbm94lf0CjXjsOX3seMhaE6WAZOQQG
 tZHAO1kAPWpaxne+wtgMKthyPLNwelLf+xzGvrIKvLX6QuLoWMnWldu22z2ICVnLQChlR9d6
 WW8QFEpo/FK7omuS8KvvopFcOOdlbFMM8Y/8vBgVMSsK6fsYUhruny/PahprPbYGiNIhKqz7
 UvgyZVl4pBFjTaz/SbimTk210vIlkDyy1WuS8Zsn0htv4+jQPgo9rqFE4mipJjy/iboDzsFN
 BFH7eUwBEAC2nzfUeeI8dv0C4qrfCPze6NkryUflEut9WwHhfXCLjtvCjnoGqFelH/PE9NF4
 4VPSCdvD1SSmFVzu6T9qWdcwMSaC+e7G/z0/AhBfqTeosAF5XvKQlAb9ZPkdDr7YN0a1XDfa
 +NgA+JZB4ROyBZFFAwNHT+HCnyzy0v9Sh3BgJJwfpXHH2l3LfncvV8rgFv0bvdr70U+On2XH
 5bApOyW1WpIG5KPJlDdzcQTyptOJ1dnEHfwnABEfzI3dNf63rlxsGouX/NFRRRNqkdClQR3K
 gCwciaXfZ7ir7fF0u1N2UuLsWA8Ei1JrNypk+MRxhbvdQC4tyZCZ8mVDk+QOK6pyK2f4rMf/
 WmqxNTtAVmNuZIwnJdjRMMSs4W4w6N/bRvpqtykSqx7VXcgqtv6eqoDZrNuhGbekQA0sAnCJ
 VPArerAZGArm63o39me/bRUQeQVSxEBmg66yshF9HkcUPGVeC4B0TPwz+HFcVhheo6hoJjLq
 knFOPLRj+0h+ZL+D0GenyqD3CyuyeTT5dGcNU9qT74bdSr20k/CklvI7S9yoQje8BeQAHtdV
 cvO8XCLrpGuw9SgOS7OP5oI26a0548M4KldAY+kqX6XVphEw3/6U1KTf7WxW5zYLTtadjISB
 X9xsRWSU+Yqs3C7oN5TIPSoj9tXMoxZkCIHWvnqGwZ7JhwARAQABwsFfBBgBAgAJBQJR+3lM
 AhsMAAoJEC7Z13T+cC21hPAQAIsBL9MdGpdEpvXs9CYrBkd6tS9mbaSWj6XBDfA1AEdQkBOn
 ZH1Qt7HJesk+qNSnLv6+jP4VwqK5AFMrKJ6IjE7jqgzGxtcZnvSjeDGPF1h2CKZQPpTw890k
 fy18AvgFHkVk2Oylyexw3aOBsXg6ukN44vIFqPoc+YSU0+0QIdYJp/XFsgWxnFIMYwDpxSHS
 5fdDxUjsk3UBHZx+IhFjs2siVZi5wnHIqM7eK9abr2cK2weInTBwXwqVWjsXZ4tq5+jQrwDK
 cvxIcwXdUTLGxc4/Z/VRH1PZSvfQxdxMGmNTGaXVNfdFZjm4fz0mz+OUi6AHC4CZpwnsliGV
 ODqwX8Y1zic9viSTbKS01ZNp175POyWViUk9qisPZB7ypfSIVSEULrL347qY/hm9ahhqmn17
 Ng255syASv3ehvX7iwWDfzXbA0/TVaqwa1YIkec+/8miicV0zMP9siRcYQkyTqSzaTFBBmqD
 oiT+z+/E59qj/EKfyce3sbC9XLjXv3mHMrq1tKX4G7IJGnS989E/fg6crv6NHae9Ckm7+lSs
 IQu4bBP2GxiRQ+NV3iV/KU3ebMRzqIC//DCOxzQNFNJAKldPe/bKZMCxEqtVoRkuJtNdp/5a
 yXFZ6TfE1hGKrDBYAm4vrnZ4CXFSBDllL59cFFOJCkn4Xboj/aVxxJxF30bn
In-Reply-To: <fc2ad24aa76675928db2b8b803d826ba08bf548b.camel@infradead.org>
X-Mimecast-Spam-Score: 0
X-Mimecast-Originator: redhat.com
Content-Language: en-US
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

On 26/01/2024 15.46, David Woodhouse wrote:
> On Fri, 2024-01-26 at 15:33 +0100, Thomas Huth wrote:
>>
>> It's an abbreviation, so I'd rather use "a.k.a." instead of "aka".
>>
>> Apart from that, the patch looks reasonable to me.
> 
> I was going for shorter line length in the output.
> 
> I will note that we have only 47 instances of 'a\.k\.a' in the code
> base, and about 117 instances of 'aka '. The latter does include a few
> false positives, but it also includes *all* the user-visible
> occurrences (mostly in CPU model names).
> 
> It is literally in the dictionary as "aka":
> https://dictionary.cambridge.org/dictionary/english/aka
> ... unlike e.g. "e.g." which the dictionary does show as such, albeit
> with a very reluctant "also eg" in very small letters:
> https://dictionary.cambridge.org/dictionary/english/eg
> 
> Definitely not a hill I'm prepared to die on though :)

OK, I'm not a native speaker ... if "aka" is fine for you, then it's fine 
for me, too ;-)

  Thomas



From xen-devel-bounces@lists.xenproject.org Fri Jan 26 14:54:35 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 26 Jan 2024 14:54:35 +0000
Received: from list by lists.xenproject.org with outflank-mailman.672074.1045722 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTNbD-0007z1-9V; Fri, 26 Jan 2024 14:54:31 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 672074.1045722; Fri, 26 Jan 2024 14:54:31 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTNbD-0007yu-70; Fri, 26 Jan 2024 14:54:31 +0000
Received: by outflank-mailman (input) for mailman id 672074;
 Fri, 26 Jan 2024 14:54:30 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=fFt0=JE=cloud.com=roger.pau@srs-se1.protection.inumbo.net>)
 id 1rTNbC-0007ym-Hh
 for xen-devel@lists.xenproject.org; Fri, 26 Jan 2024 14:54:30 +0000
Received: from mail-wr1-x429.google.com (mail-wr1-x429.google.com
 [2a00:1450:4864:20::429])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id ce731290-bc5a-11ee-8a43-1f161083a0e0;
 Fri, 26 Jan 2024 15:54:29 +0100 (CET)
Received: by mail-wr1-x429.google.com with SMTP id
 ffacd0b85a97d-3392b15ca41so317278f8f.0
 for <xen-devel@lists.xenproject.org>; Fri, 26 Jan 2024 06:54:29 -0800 (PST)
Received: from localhost ([213.195.118.74]) by smtp.gmail.com with ESMTPSA id
 bs8-20020a056000070800b003392ded41c7sm1443176wrb.39.2024.01.26.06.54.28
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Fri, 26 Jan 2024 06:54:28 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: ce731290-bc5a-11ee-8a43-1f161083a0e0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1706280868; x=1706885668; darn=lists.xenproject.org;
        h=content-transfer-encoding:mime-version:message-id:date:subject:cc
         :to:from:from:to:cc:subject:date:message-id:reply-to;
        bh=KuYHgPjRBSumtIQFHphC5j4fRNERZSq58LYLW0abvxU=;
        b=vGWF70YxKT9hwj5G1YjCmfb2lFLeN+83T7qg7cltkav1ApFBQuDw9zZhXe6a+ikmmm
         UPwoNNFN020d8wdTFmFU7yPIXIjw34BplEgbNgGavCQ9ennhbW8FVZu3oHnXvJjcFzjx
         u5niDeLBO6BN1fnRSxVcjKBEyYuM+1Jq0+51M=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706280868; x=1706885668;
        h=content-transfer-encoding:mime-version:message-id:date:subject:cc
         :to:from:x-gm-message-state:from:to:cc:subject:date:message-id
         :reply-to;
        bh=KuYHgPjRBSumtIQFHphC5j4fRNERZSq58LYLW0abvxU=;
        b=OtWGU0cKEhI6ZGmc6KoDoIrgxkU8QstQ6g9QoIfbEdDbpE93wqEXURn+mYJeWcjhjW
         cGmH8REqZbKoL+BeZ5e2BGMRDMXcx8Jr6xjj47SAXS62cMnUA+ebSCIftzAptz+LrH3E
         DAfnIwqj0KgbVXBMCbhFY7Ucua6WAxGLPNN410lT/j5ZggrdhaN9EdfeLlinBM0Xm93B
         7WVfDoJ0kw4vXLlwsdwIiKedv7ExT61vLa8la2xtzMBxveZtDSExQdSvpmyrMGa+hJxF
         7/hrqCJ6Lt7JzgxXf5D6ALxHA5OMj3kWtNaReobq/DK2WwKw2iiMr0ROUmYz05S4m4eE
         Zl+A==
X-Gm-Message-State: AOJu0Ywdox9PkIWaH77WaIeDDVORK0Y6Sc5K3g17MBJkslEfyB7NKAiq
	P99ZlO/AOt10craP2MaXo922F3I8xVLRtaKiWAEgmO2yIWUbyU2txlOcdOOzWMk63hFPDeUAj/t
	Q
X-Google-Smtp-Source: AGHT+IH3+znAItiJ9LfzBEsgiyn7JE0q7utpHrGwcSiaYn0+UWMb5jD2aupcqHsdtaLeO9jI8ncccg==
X-Received: by 2002:a5d:5f91:0:b0:337:caa9:4a16 with SMTP id dr17-20020a5d5f91000000b00337caa94a16mr742377wrb.45.1706280868525;
        Fri, 26 Jan 2024 06:54:28 -0800 (PST)
From: Roger Pau Monne <roger.pau@citrix.com>
To: xen-devel@lists.xenproject.org
Cc: Roger Pau Monne <roger.pau@citrix.com>,
	Jan Beulich <jbeulich@suse.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Wei Liu <wl@xen.org>,
	Edwin Torok <edwin.torok@cloud.com>
Subject: [PATCH] x86/entry: fix jump into restore_all_guest without %rbx correctly set
Date: Fri, 26 Jan 2024 15:54:18 +0100
Message-ID: <20240126145418.39520-1-roger.pau@citrix.com>
X-Mailer: git-send-email 2.43.0
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

e047b8d0fa05 went too far when limiting obtaining the vCPU pointer.  While the
code in ist_dispatch_done does indeed only need the vCPU pointer when PV32 is
enabled, the !PV32 path will end up jumping into restore_all_guest which does
require rbx == vCPU pointer.

Fix by moving the fetching of the vCPU pointer to be done outside of the PV32
code block.

Reported-by: Edwin Torok <edwin.torok@cloud.com>
Fixes: e047b8d0fa05 ('x86/entry: replace two GET_CURRENT() uses')
Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
---
 xen/arch/x86/x86_64/entry.S | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/xen/arch/x86/x86_64/entry.S b/xen/arch/x86/x86_64/entry.S
index 44f25def86bc..ecdd6e5b47a5 100644
--- a/xen/arch/x86/x86_64/entry.S
+++ b/xen/arch/x86/x86_64/entry.S
@@ -1139,8 +1139,9 @@ FUNC(handle_ist_exception)
         movl  $EVENT_CHECK_VECTOR,%edi
         call  send_IPI_self
 1:
-#ifdef CONFIG_PV32
+        /* For restore_all_guest. */
         mov   STACK_CPUINFO_FIELD(current_vcpu)(%r14), %rbx
+#ifdef CONFIG_PV32
         movq  VCPU_domain(%rbx),%rax
         cmpb  $0,DOMAIN_is_32bit_pv(%rax)
         je    restore_all_guest
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Fri Jan 26 15:20:38 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 26 Jan 2024 15:20:38 +0000
Received: from list by lists.xenproject.org with outflank-mailman.672081.1045733 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTO0O-0004vh-Dv; Fri, 26 Jan 2024 15:20:32 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 672081.1045733; Fri, 26 Jan 2024 15:20:32 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTO0O-0004va-BE; Fri, 26 Jan 2024 15:20:32 +0000
Received: by outflank-mailman (input) for mailman id 672081;
 Fri, 26 Jan 2024 15:20:31 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=bPDA=JE=casper.srs.infradead.org=BATV+7caeb094913322f6f00d+7460+infradead.org+dwmw2@srs-se1.protection.inumbo.net>)
 id 1rTO0M-0004sr-7o
 for xen-devel@lists.xenproject.org; Fri, 26 Jan 2024 15:20:30 +0000
Received: from casper.infradead.org (casper.infradead.org
 [2001:8b0:10b:1236::1])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 6edcf62f-bc5e-11ee-98f5-efadbce2ee36;
 Fri, 26 Jan 2024 16:20:27 +0100 (CET)
Received: from [2001:8b0:10b:5:d160:e4ac:a057:38f5]
 (helo=u3832b3a9db3152.ant.amazon.com)
 by casper.infradead.org with esmtpsa (Exim 4.97.1 #2 (Red Hat Linux))
 id 1rTNzk-0000000E0FR-1YDa; Fri, 26 Jan 2024 15:19:53 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 6edcf62f-bc5e-11ee-98f5-efadbce2ee36
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=infradead.org; s=casper.20170209; h=MIME-Version:Content-Type:References:
	In-Reply-To:Date:Cc:To:From:Subject:Message-ID:Sender:Reply-To:
	Content-Transfer-Encoding:Content-ID:Content-Description;
	bh=iceCvg4jIcdLvBfcXp8wynbNlU4tHd86D7D9LzFN6RE=; b=Tg4PV+ilQf23aXwVzc+Q6BEzI6
	RYXV6VbhWcEkf71J74lqFzKXpOVPhIZREuuavQ0Mbh1OflsRhpFfxTzgByJ9EwPTU3Yl9gzqVGs6/
	Oe1MdqCtLTJHUfAeLIKwXjJ/AL/mGyZ8NZ6gG3Rr7vcqw5Fr0ngyGrLja1H125XfIk+weeEefa2xO
	dfNVuM3ZxSJz4uACL4+fqstHZ950Svie8b9GNm9P2F6j/88h2dAoRNbomdFIwsdzv8hUMaKjNjmTg
	T+rurP8x2ViKW0y/bBceRVRVosDT29SsnVfuZSjNX6LIRS4DpiI4u1MSLPbvSBp9spPGrGzbETCbb
	9GRp/Pqg==;
Message-ID: <d501dfc14c7b109844ff6d28f6be3bba86a1be89.camel@infradead.org>
Subject: Re: [PATCH v3 01/46] net: add qemu_{configure,create}_nic_device(),
 qemu_find_nic_info()
From: David Woodhouse <dwmw2@infradead.org>
To: Peter Maydell <peter.maydell@linaro.org>
Cc: qemu-devel@nongnu.org, Richard Henderson <richard.henderson@linaro.org>,
  Beniamino Galvani <b.galvani@gmail.com>, Strahinja Jankovic
 <strahinja.p.jankovic@gmail.com>, Niek Linnenbank
 <nieklinnenbank@gmail.com>, =?ISO-8859-1?Q?C=E9dric?= Le Goater
 <clg@kaod.org>,  Andrew Jeffery <andrew@codeconstruct.com.au>, Joel Stanley
 <joel@jms.id.au>, Igor Mitsyanko <i.mitsyanko@gmail.com>, Jean-Christophe
 Dubois <jcd@tribudubois.net>,  Andrey Smirnov <andrew.smirnov@gmail.com>,
 Philippe =?ISO-8859-1?Q?Mathieu-Daud=E9?= <philmd@linaro.org>,  Rob Herring
 <robh@kernel.org>, Subbaraya Sundeep <sundeep.lkml@gmail.com>, Jan Kiszka
 <jan.kiszka@web.de>,  Tyrone Ting <kfting@nuvoton.com>, Hao Wu
 <wuhaotsh@google.com>, Radoslaw Biernacki <rad@semihalf.com>,  Leif
 Lindholm <quic_llindhol@quicinc.com>, Marcin Juszkiewicz
 <marcin.juszkiewicz@linaro.org>, "Edgar E. Iglesias"
 <edgar.iglesias@gmail.com>, Alistair Francis <alistair@alistair23.me>,
 Helge Deller <deller@gmx.de>, Paolo Bonzini <pbonzini@redhat.com>, Eduardo
 Habkost <eduardo@habkost.net>, "Michael S. Tsirkin" <mst@redhat.com>,
 Marcel Apfelbaum <marcel.apfelbaum@gmail.com>, Song Gao
 <gaosong@loongson.cn>, Thomas Huth <huth@tuxfamily.org>, Laurent Vivier
 <laurent@vivier.eu>, Huacai Chen <chenhuacai@kernel.org>, Jiaxun Yang
 <jiaxun.yang@flygoat.com>,  =?ISO-8859-1?Q?Herv=E9?= Poussineau
 <hpoussin@reactos.org>, Aleksandar Rikalo <aleksandar.rikalo@syrmia.com>, 
 Aurelien Jarno <aurelien@aurel32.net>, Jason Wang <jasowang@redhat.com>,
 Jia Liu <proljc@gmail.com>, Stafford Horne <shorne@gmail.com>, Mark
 Cave-Ayland <mark.cave-ayland@ilande.co.uk>, Nicholas Piggin
 <npiggin@gmail.com>, Daniel Henrique Barboza <danielhb413@gmail.com>, David
 Gibson <david@gibson.dropbear.id.au>, Harsh Prateek Bora
 <harshpb@linux.ibm.com>, Bin Meng <bin.meng@windriver.com>, Palmer Dabbelt
 <palmer@dabbelt.com>, Weiwei Li <liwei1518@gmail.com>, Liu Zhiwei
 <zhiwei_liu@linux.alibaba.com>, Halil Pasic <pasic@linux.ibm.com>,
 Christian Borntraeger <borntraeger@linux.ibm.com>,  Eric Farman
 <farman@linux.ibm.com>, David Hildenbrand <david@redhat.com>, Ilya
 Leoshkevich <iii@linux.ibm.com>, Yoshinori Sato
 <ysato@users.sourceforge.jp>, Magnus Damm <magnus.damm@gmail.com>, Artyom
 Tarasenko <atar4qemu@gmail.com>, Stefano Stabellini
 <sstabellini@kernel.org>, Anthony Perard <anthony.perard@citrix.com>, Paul
 Durrant <paul@xen.org>, Max Filippov <jcmvbkbc@gmail.com>,
 qemu-arm@nongnu.org,  qemu-ppc@nongnu.org, qemu-riscv@nongnu.org,
 qemu-s390x@nongnu.org,  xen-devel@lists.xenproject.org
Date: Fri, 26 Jan 2024 15:19:51 +0000
In-Reply-To: <CAFEAcA8JtnXezmo-h-rFZcbqsN_-CnOYCTUfLfd_q=F0702U9g@mail.gmail.com>
References: <20240108204909.564514-1-dwmw2@infradead.org>
	 <20240108204909.564514-2-dwmw2@infradead.org>
	 <CAFEAcA8JtnXezmo-h-rFZcbqsN_-CnOYCTUfLfd_q=F0702U9g@mail.gmail.com>
Content-Type: multipart/signed; micalg="sha-256"; protocol="application/pkcs7-signature";
	boundary="=-q6d9bQeuLliIr2NTu9b0"
User-Agent: Evolution 3.44.4-0ubuntu2 
MIME-Version: 1.0
X-SRS-Rewrite: SMTP reverse-path rewritten from <dwmw2@infradead.org> by casper.infradead.org. See http://www.infradead.org/rpr.html


--=-q6d9bQeuLliIr2NTu9b0
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

On Fri, 2024-01-26 at 14:43 +0000, Peter Maydell wrote:
>=20
> > +NICInfo *qemu_find_nic_info(const char *typename, bool match_default,
> > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0 const char *alias);
> > +bool qemu_configure_nic_device(DeviceState *dev, bool match_default,
> > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 const char *alias);
> > +DeviceState *qemu_create_nic_device(const char *typename, bool match_d=
efault,
> > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 const ch=
ar *alias);
>=20
> Could we have doc comments that document the purpose and API
> for these new global functions, please?

Like this? I deliberately fatfingered the argument names and didn't
even get a build warning, and I don't see any actual *documentation*
being generated with it...?

diff --git a/include/net/net.h b/include/net/net.h
index 25ea83fd12..14614b0a31 100644
--- a/include/net/net.h
+++ b/include/net/net.h
@@ -207,10 +207,46 @@ int qemu_show_nic_models(const char *arg, const char =
*const *models);
 void qemu_check_nic_model(NICInfo *nd, const char *model);
 int qemu_find_nic_model(NICInfo *nd, const char * const *models,
                         const char *default_model);
+/**
+ * qemu_find_nic_info: Obtain NIC configuration information
+ * @typename: Name of device object type
+ * @match_default: Match NIC configurations with no model specified
+ * @alias: Additional model string to match (for user convenience and
+ *         backward compatibility).
+ *
+ * Search for a NIC configuration matching the NIC model constraints.
+ */
 NICInfo *qemu_find_nic_info(const char *typename, bool match_default,
                             const char *alias);
+/**
+ * qemu_configure_nic_device: Apply NIC configuration to a given device
+ * @dev: Network device to be configured
+ * @match_default: Match NIC configurations with no model specified
+ * @alias: Additional model string to match
+ *
+ * Search for a NIC configuration for the provided device, using the
+ * additionally specified matching constraints. If found, apply the
+ * configuration using qdev_set_nic_properties() and return %true.
+ *
+ * This is used by platform code which creates the device anyway,
+ * regardless of whether there is a configuration for it. This tends
+ * to be platforms which ignore `--nodefaults` and create net devices
+ * anyway. This behaviour is not advised for new platforms; use the
+ * qemu_create_nic_device() function instead, which creates the device
+ * only when it is configured.
+ */
 bool qemu_configure_nic_device(DeviceState *dev, bool match_default,
                                const char *alias);
+
+/**
+ * qemu_create_nic_device: Create a NIC device if a configuration exists f=
or it
+ * @typename: Object typename of network device
+ * @match_default: Match NIC configurations with no model specified
+ * @alias: Additional model string to match
+ *
+ * Search for a NIC configuration for the provided device type. If found,
+ * create an object of the corresponding type and return it.
+ */
 DeviceState *qemu_create_nic_device(const char *typename, bool match_defau=
lt,
                                     const char *alias);
 void print_net_client(Monitor *mon, NetClientState *nc);


--=-q6d9bQeuLliIr2NTu9b0
Content-Type: application/pkcs7-signature; name="smime.p7s"
Content-Disposition: attachment; filename="smime.p7s"
Content-Transfer-Encoding: base64

MIAGCSqGSIb3DQEHAqCAMIACAQExDzANBglghkgBZQMEAgEFADCABgkqhkiG9w0BBwEAAKCCEkQw
ggYQMIID+KADAgECAhBNlCwQ1DvglAnFgS06KwZPMA0GCSqGSIb3DQEBDAUAMIGIMQswCQYDVQQG
EwJVUzETMBEGA1UECBMKTmV3IEplcnNleTEUMBIGA1UEBxMLSmVyc2V5IENpdHkxHjAcBgNVBAoT
FVRoZSBVU0VSVFJVU1QgTmV0d29yazEuMCwGA1UEAxMlVVNFUlRydXN0IFJTQSBDZXJ0aWZpY2F0
aW9uIEF1dGhvcml0eTAeFw0xODExMDIwMDAwMDBaFw0zMDEyMzEyMzU5NTlaMIGWMQswCQYDVQQG
EwJHQjEbMBkGA1UECBMSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHEwdTYWxmb3JkMRgwFgYD
VQQKEw9TZWN0aWdvIExpbWl0ZWQxPjA8BgNVBAMTNVNlY3RpZ28gUlNBIENsaWVudCBBdXRoZW50
aWNhdGlvbiBhbmQgU2VjdXJlIEVtYWlsIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
AQEAyjztlApB/975Rrno1jvm2pK/KxBOqhq8gr2+JhwpKirSzZxQgT9tlC7zl6hn1fXjSo5MqXUf
ItMltrMaXqcESJuK8dtK56NCSrq4iDKaKq9NxOXFmqXX2zN8HHGjQ2b2Xv0v1L5Nk1MQPKA19xeW
QcpGEGFUUd0kN+oHox+L9aV1rjfNiCj3bJk6kJaOPabPi2503nn/ITX5e8WfPnGw4VuZ79Khj1YB
rf24k5Ee1sLTHsLtpiK9OjG4iQRBdq6Z/TlVx/hGAez5h36bBJMxqdHLpdwIUkTqT8se3ed0PewD
ch/8kHPo5fZl5u1B0ecpq/sDN/5sCG52Ds+QU5O5EwIDAQABo4IBZDCCAWAwHwYDVR0jBBgwFoAU
U3m/WqorSs9UgOHYm8Cd8rIDZsswHQYDVR0OBBYEFAnA8vwL2pTbX/4r36iZQs/J4K0AMA4GA1Ud
DwEB/wQEAwIBhjASBgNVHRMBAf8ECDAGAQH/AgEAMB0GA1UdJQQWMBQGCCsGAQUFBwMCBggrBgEF
BQcDBDARBgNVHSAECjAIMAYGBFUdIAAwUAYDVR0fBEkwRzBFoEOgQYY/aHR0cDovL2NybC51c2Vy
dHJ1c3QuY29tL1VTRVJUcnVzdFJTQUNlcnRpZmljYXRpb25BdXRob3JpdHkuY3JsMHYGCCsGAQUF
BwEBBGowaDA/BggrBgEFBQcwAoYzaHR0cDovL2NydC51c2VydHJ1c3QuY29tL1VTRVJUcnVzdFJT
QUFkZFRydXN0Q0EuY3J0MCUGCCsGAQUFBzABhhlodHRwOi8vb2NzcC51c2VydHJ1c3QuY29tMA0G
CSqGSIb3DQEBDAUAA4ICAQBBRHUAqznCFfXejpVtMnFojADdF9d6HBA4kMjjsb0XMZHztuOCtKF+
xswhh2GqkW5JQrM8zVlU+A2VP72Ky2nlRA1GwmIPgou74TZ/XTarHG8zdMSgaDrkVYzz1g3nIVO9
IHk96VwsacIvBF8JfqIs+8aWH2PfSUrNxP6Ys7U0sZYx4rXD6+cqFq/ZW5BUfClN/rhk2ddQXyn7
kkmka2RQb9d90nmNHdgKrwfQ49mQ2hWQNDkJJIXwKjYA6VUR/fZUFeCUisdDe/0ABLTI+jheXUV1
eoYV7lNwNBKpeHdNuO6Aacb533JlfeUHxvBz9OfYWUiXu09sMAviM11Q0DuMZ5760CdO2VnpsXP4
KxaYIhvqPqUMWqRdWyn7crItNkZeroXaecG03i3mM7dkiPaCkgocBg0EBYsbZDZ8bsG3a08LwEsL
1Ygz3SBsyECa0waq4hOf/Z85F2w2ZpXfP+w8q4ifwO90SGZZV+HR/Jh6rEaVPDRF/CEGVqR1hiuQ
OZ1YL5ezMTX0ZSLwrymUE0pwi/KDaiYB15uswgeIAcA6JzPFf9pLkAFFWs1QNyN++niFhsM47qod
x/PL+5jR87myx5uYdBEQkkDc+lKB1Wct6ucXqm2EmsaQ0M95QjTmy+rDWjkDYdw3Ms6mSWE3Bn7i
5ZgtwCLXgAIe5W8mybM2JzCCBhQwggT8oAMCAQICEQDGvhmWZ0DEAx0oURL6O6l+MA0GCSqGSIb3
DQEBCwUAMIGWMQswCQYDVQQGEwJHQjEbMBkGA1UECBMSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYD
VQQHEwdTYWxmb3JkMRgwFgYDVQQKEw9TZWN0aWdvIExpbWl0ZWQxPjA8BgNVBAMTNVNlY3RpZ28g
UlNBIENsaWVudCBBdXRoZW50aWNhdGlvbiBhbmQgU2VjdXJlIEVtYWlsIENBMB4XDTIyMDEwNzAw
MDAwMFoXDTI1MDEwNjIzNTk1OVowJDEiMCAGCSqGSIb3DQEJARYTZHdtdzJAaW5mcmFkZWFkLm9y
ZzCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBALQ3GpC2bomUqk+91wLYBzDMcCj5C9m6
oZaHwvmIdXftOgTbCJXADo6G9T7BBAebw2JV38EINgKpy/ZHh7htyAkWYVoFsFPrwHounto8xTsy
SSePMiPlmIdQ10BcVSXMUJ3Juu16GlWOnAMJY2oYfEzmE7uT9YgcBqKCo65pTFmOnR/VVbjJk4K2
xE34GC2nAdUQkPFuyaFisicc6HRMOYXPuF0DuwITEKnjxgNjP+qDrh0db7PAjO1D4d5ftfrsf+kd
RR4gKVGSk8Tz2WwvtLAroJM4nXjNPIBJNT4w/FWWc/5qPHJy2U+eITZ5LLE5s45mX2oPFknWqxBo
bQZ8a9dsZ3dSPZBvE9ZrmtFLrVrN4eo1jsXgAp1+p7bkfqd3BgBEmfsYWlBXO8rVXfvPgLs32VdV
NZxb/CDWPqBsiYv0Hv3HPsz07j5b+/cVoWqyHDKzkaVbxfq/7auNVRmPB3v5SWEsH8xi4Bez2V9U
KxfYCnqsjp8RaC2/khxKt0A552Eaxnz/4ly/2C7wkwTQnBmdlFYhAflWKQ03Ufiu8t3iBE3VJbc2
5oMrglj7TRZrmKq3CkbFnX0fyulB+kHimrt6PIWn7kgyl9aelIl6vtbhMA+l0nfrsORMa4kobqQ5
C5rveVgmcIad67EDa+UqEKy/GltUwlSh6xy+TrK1tzDvAgMBAAGjggHMMIIByDAfBgNVHSMEGDAW
gBQJwPL8C9qU21/+K9+omULPyeCtADAdBgNVHQ4EFgQUzMeDMcimo0oz8o1R1Nver3ZVpSkwDgYD
VR0PAQH/BAQDAgWgMAwGA1UdEwEB/wQCMAAwHQYDVR0lBBYwFAYIKwYBBQUHAwQGCCsGAQUFBwMC
MEAGA1UdIAQ5MDcwNQYMKwYBBAGyMQECAQEBMCUwIwYIKwYBBQUHAgEWF2h0dHBzOi8vc2VjdGln
by5jb20vQ1BTMFoGA1UdHwRTMFEwT6BNoEuGSWh0dHA6Ly9jcmwuc2VjdGlnby5jb20vU2VjdGln
b1JTQUNsaWVudEF1dGhlbnRpY2F0aW9uYW5kU2VjdXJlRW1haWxDQS5jcmwwgYoGCCsGAQUFBwEB
BH4wfDBVBggrBgEFBQcwAoZJaHR0cDovL2NydC5zZWN0aWdvLmNvbS9TZWN0aWdvUlNBQ2xpZW50
QXV0aGVudGljYXRpb25hbmRTZWN1cmVFbWFpbENBLmNydDAjBggrBgEFBQcwAYYXaHR0cDovL29j
c3Auc2VjdGlnby5jb20wHgYDVR0RBBcwFYETZHdtdzJAaW5mcmFkZWFkLm9yZzANBgkqhkiG9w0B
AQsFAAOCAQEAyW6MUir5dm495teKqAQjDJwuFCi35h4xgnQvQ/fzPXmtR9t54rpmI2TfyvcKgOXp
qa7BGXNFfh1JsqexVkIqZP9uWB2J+uVMD+XZEs/KYNNX2PvIlSPrzIB4Z2wyIGQpaPLlYflrrVFK
v9CjT2zdqvy2maK7HKOQRt3BiJbVG5lRiwbbygldcALEV9ChWFfgSXvrWDZspnU3Gjw/rMHrGnql
Htlyebp3pf3fSS9kzQ1FVtVIDrL6eqhTwJxe+pXSMMqFiN0whpBtXdyDjzBtQTaZJ7zTT/vlehc/
tDuqZwGHm/YJy883Ll+GP3NvOkgaRGWEuYWJJ6hFCkXYjyR9IzCCBhQwggT8oAMCAQICEQDGvhmW
Z0DEAx0oURL6O6l+MA0GCSqGSIb3DQEBCwUAMIGWMQswCQYDVQQGEwJHQjEbMBkGA1UECBMSR3Jl
YXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHEwdTYWxmb3JkMRgwFgYDVQQKEw9TZWN0aWdvIExpbWl0
ZWQxPjA8BgNVBAMTNVNlY3RpZ28gUlNBIENsaWVudCBBdXRoZW50aWNhdGlvbiBhbmQgU2VjdXJl
IEVtYWlsIENBMB4XDTIyMDEwNzAwMDAwMFoXDTI1MDEwNjIzNTk1OVowJDEiMCAGCSqGSIb3DQEJ
ARYTZHdtdzJAaW5mcmFkZWFkLm9yZzCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBALQ3
GpC2bomUqk+91wLYBzDMcCj5C9m6oZaHwvmIdXftOgTbCJXADo6G9T7BBAebw2JV38EINgKpy/ZH
h7htyAkWYVoFsFPrwHounto8xTsySSePMiPlmIdQ10BcVSXMUJ3Juu16GlWOnAMJY2oYfEzmE7uT
9YgcBqKCo65pTFmOnR/VVbjJk4K2xE34GC2nAdUQkPFuyaFisicc6HRMOYXPuF0DuwITEKnjxgNj
P+qDrh0db7PAjO1D4d5ftfrsf+kdRR4gKVGSk8Tz2WwvtLAroJM4nXjNPIBJNT4w/FWWc/5qPHJy
2U+eITZ5LLE5s45mX2oPFknWqxBobQZ8a9dsZ3dSPZBvE9ZrmtFLrVrN4eo1jsXgAp1+p7bkfqd3
BgBEmfsYWlBXO8rVXfvPgLs32VdVNZxb/CDWPqBsiYv0Hv3HPsz07j5b+/cVoWqyHDKzkaVbxfq/
7auNVRmPB3v5SWEsH8xi4Bez2V9UKxfYCnqsjp8RaC2/khxKt0A552Eaxnz/4ly/2C7wkwTQnBmd
lFYhAflWKQ03Ufiu8t3iBE3VJbc25oMrglj7TRZrmKq3CkbFnX0fyulB+kHimrt6PIWn7kgyl9ae
lIl6vtbhMA+l0nfrsORMa4kobqQ5C5rveVgmcIad67EDa+UqEKy/GltUwlSh6xy+TrK1tzDvAgMB
AAGjggHMMIIByDAfBgNVHSMEGDAWgBQJwPL8C9qU21/+K9+omULPyeCtADAdBgNVHQ4EFgQUzMeD
Mcimo0oz8o1R1Nver3ZVpSkwDgYDVR0PAQH/BAQDAgWgMAwGA1UdEwEB/wQCMAAwHQYDVR0lBBYw
FAYIKwYBBQUHAwQGCCsGAQUFBwMCMEAGA1UdIAQ5MDcwNQYMKwYBBAGyMQECAQEBMCUwIwYIKwYB
BQUHAgEWF2h0dHBzOi8vc2VjdGlnby5jb20vQ1BTMFoGA1UdHwRTMFEwT6BNoEuGSWh0dHA6Ly9j
cmwuc2VjdGlnby5jb20vU2VjdGlnb1JTQUNsaWVudEF1dGhlbnRpY2F0aW9uYW5kU2VjdXJlRW1h
aWxDQS5jcmwwgYoGCCsGAQUFBwEBBH4wfDBVBggrBgEFBQcwAoZJaHR0cDovL2NydC5zZWN0aWdv
LmNvbS9TZWN0aWdvUlNBQ2xpZW50QXV0aGVudGljYXRpb25hbmRTZWN1cmVFbWFpbENBLmNydDAj
BggrBgEFBQcwAYYXaHR0cDovL29jc3Auc2VjdGlnby5jb20wHgYDVR0RBBcwFYETZHdtdzJAaW5m
cmFkZWFkLm9yZzANBgkqhkiG9w0BAQsFAAOCAQEAyW6MUir5dm495teKqAQjDJwuFCi35h4xgnQv
Q/fzPXmtR9t54rpmI2TfyvcKgOXpqa7BGXNFfh1JsqexVkIqZP9uWB2J+uVMD+XZEs/KYNNX2PvI
lSPrzIB4Z2wyIGQpaPLlYflrrVFKv9CjT2zdqvy2maK7HKOQRt3BiJbVG5lRiwbbygldcALEV9Ch
WFfgSXvrWDZspnU3Gjw/rMHrGnqlHtlyebp3pf3fSS9kzQ1FVtVIDrL6eqhTwJxe+pXSMMqFiN0w
hpBtXdyDjzBtQTaZJ7zTT/vlehc/tDuqZwGHm/YJy883Ll+GP3NvOkgaRGWEuYWJJ6hFCkXYjyR9
IzGCBMcwggTDAgEBMIGsMIGWMQswCQYDVQQGEwJHQjEbMBkGA1UECBMSR3JlYXRlciBNYW5jaGVz
dGVyMRAwDgYDVQQHEwdTYWxmb3JkMRgwFgYDVQQKEw9TZWN0aWdvIExpbWl0ZWQxPjA8BgNVBAMT
NVNlY3RpZ28gUlNBIENsaWVudCBBdXRoZW50aWNhdGlvbiBhbmQgU2VjdXJlIEVtYWlsIENBAhEA
xr4ZlmdAxAMdKFES+jupfjANBglghkgBZQMEAgEFAKCCAeswGAYJKoZIhvcNAQkDMQsGCSqGSIb3
DQEHATAcBgkqhkiG9w0BCQUxDxcNMjQwMTI2MTUxOTUxWjAvBgkqhkiG9w0BCQQxIgQg10fUyNQf
kRwLF5Tz7uWMUieAhFql7osCbNZ6YdCvSSwwgb0GCSsGAQQBgjcQBDGBrzCBrDCBljELMAkGA1UE
BhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEYMBYG
A1UEChMPU2VjdGlnbyBMaW1pdGVkMT4wPAYDVQQDEzVTZWN0aWdvIFJTQSBDbGllbnQgQXV0aGVu
dGljYXRpb24gYW5kIFNlY3VyZSBFbWFpbCBDQQIRAMa+GZZnQMQDHShREvo7qX4wgb8GCyqGSIb3
DQEJEAILMYGvoIGsMIGWMQswCQYDVQQGEwJHQjEbMBkGA1UECBMSR3JlYXRlciBNYW5jaGVzdGVy
MRAwDgYDVQQHEwdTYWxmb3JkMRgwFgYDVQQKEw9TZWN0aWdvIExpbWl0ZWQxPjA8BgNVBAMTNVNl
Y3RpZ28gUlNBIENsaWVudCBBdXRoZW50aWNhdGlvbiBhbmQgU2VjdXJlIEVtYWlsIENBAhEAxr4Z
lmdAxAMdKFES+jupfjANBgkqhkiG9w0BAQEFAASCAgCCA5QY/MnsTxtZszS31yELavxTQHfkKi/L
AC3nwGU1dh9vTcnyNw3jpRSaEiCx9a/quMsTu6LEXC6zOG5GxIHb34iyyuSQnzzm7v2Wn2SiPQ9W
qh9OM3Rj1m1MvLa/aZ/pwm+8qEXB2dFwJ5vGXwdbU0a362YzjtQlnwBFF7iBtw2cAvgDrkg385yw
RqbmrXFVw4tlI3PW2vNP3UNMqWko2MGrQ9Qz29sjpQmQiru6CMAI0UMQ9rcpbjtRhRCggDLxax6W
fDr7TstXf/hgN6UVl7npdOJmwgi0hJ8uYVAuij7rKJF/E7dYqN3BY1aQvil/w5S48hDNPpeFvDLV
Xml/I9oVrIdn1/pVCVRgOPBiDNyHfC/F1PbH4FYzvAjT8ENXLSQGmgOzf/+uPnFByGlCPFBvxQuY
obGn94HJbfMwh9uojtIU9Md4f0GoH2KFUefHmuYDdzlra7LHJSWd+TPt3Cf+QAKlK0gIKmDn5wSw
PzAkWlFMKFGb881/ONCxifReD3ZL0bD/qhhFkFYQlvdxBXl783HAsvAPw1RR6DIWj/mNqnQgptDL
cjXMOm/zkQwAzBV+k5HI7C4e5pNaRz7Bo5Wp28VlWQKNJfIEdw8MYw5Rs0EmlEO1jkm+VPbDMQ83
Yticmkl5CdSbY0MOrjZ5fOcMudObPDszgwIPUjtTPAAAAAAAAA==


--=-q6d9bQeuLliIr2NTu9b0--


From xen-devel-bounces@lists.xenproject.org Fri Jan 26 15:34:23 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 26 Jan 2024 15:34:23 +0000
Received: from list by lists.xenproject.org with outflank-mailman.672085.1045742 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTODa-00011Y-J2; Fri, 26 Jan 2024 15:34:10 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 672085.1045742; Fri, 26 Jan 2024 15:34:10 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTODa-00011R-GX; Fri, 26 Jan 2024 15:34:10 +0000
Received: by outflank-mailman (input) for mailman id 672085;
 Fri, 26 Jan 2024 15:34:08 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=K+M0=JE=linaro.org=peter.maydell@srs-se1.protection.inumbo.net>)
 id 1rTODY-00011L-Mr
 for xen-devel@lists.xenproject.org; Fri, 26 Jan 2024 15:34:08 +0000
Received: from mail-ed1-x52e.google.com (mail-ed1-x52e.google.com
 [2a00:1450:4864:20::52e])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 57f76fbb-bc60-11ee-8a43-1f161083a0e0;
 Fri, 26 Jan 2024 16:34:07 +0100 (CET)
Received: by mail-ed1-x52e.google.com with SMTP id
 4fb4d7f45d1cf-55a5e7fa471so394743a12.1
 for <xen-devel@lists.xenproject.org>; Fri, 26 Jan 2024 07:34:07 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 57f76fbb-bc60-11ee-8a43-1f161083a0e0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=linaro.org; s=google; t=1706283247; x=1706888047; darn=lists.xenproject.org;
        h=cc:to:subject:message-id:date:from:in-reply-to:references
         :mime-version:from:to:cc:subject:date:message-id:reply-to;
        bh=M4Saib2ffvHXLnJNyPVgcq63SWcYMj7rwkJWn182XDM=;
        b=zZAGx66BglJ8xbVxaxto1TiC+ZuiJG97LWnl9waF0GNehaMFWTX6hZLkmsQGD4Q9fk
         Of8POhSQwfcPmh3qJt+K9NQ8zO7ASqYcEVJE5tCM9jKDnhQd0vAS01VezbeIsFd/hOgJ
         yD+0Z7stPry7ssrbpemWzQRFFTzu05WrLue6eMQtAnXAt0DwCulCqXHorJuHKEjXVgOn
         cEC/D37mfvBnjpgjRlY4wiaLRse+X/sy79sk09N7kA9chETrm7ryYx4qUHxNPefQ5xLB
         XF3qUTN9f0IyP4YdFCfC0tdGURStuEjYMfWyZ9uWJ0ehFPLUpIGcUZ4fW6PJQkrq96Qa
         MnWQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706283247; x=1706888047;
        h=cc:to:subject:message-id:date:from:in-reply-to:references
         :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id
         :reply-to;
        bh=M4Saib2ffvHXLnJNyPVgcq63SWcYMj7rwkJWn182XDM=;
        b=kVcve0Z84IvMGpBnkQhGSGW8sa9ejpNFU1XnS3hWgTIFCnNPUkzZMpGwYQFipoEVB6
         Px8iWXjeLaTGnRvsnMpgp2oCKuQcUUXdkV5+WEMuY4RsxaVroC+XamfHfqAPxdPzCJ/S
         EL8Cfb9teUnimz/WdMrhELec/cZU2qTVXOPymU6z8/gF9bq6wA329nl/+D/3u38xKuHP
         9z6+JQ8u984h5lmorw5nQX2yN/JfZRuThabE9yrKZAIlGcVfCkATyMwoK2jH1UR8ixyg
         pLEzsvN59kaDDcN9eazAxVnXBQ6Bin3H9Ji9PsZNAxpX0zPpuRh8Mgpk/GxbIjG3IezN
         MlpA==
X-Gm-Message-State: AOJu0YyHmGrXjgIdwC2+7Bw49rdeSW7mTu7KQ3/4GwWJ3AmAQbujUGIq
	NjL0mrbJlosDvtKJe5szpg6QFLH7J8/Cx8Kf3MauBXaDYXclleLZ+2/m5tnD4wthhGL04JA8joU
	gSY74DC0Nvvn8aXaC1BYk6sGA1+ErC29OVCD4cg==
X-Google-Smtp-Source: AGHT+IG1RgpPDHg/Tk9a1Ljt7riCeGAggNdSQjXAIweOSDuz+FDaRKVriWawUWF21cv3V4Yx8fZBlsfv334jNPewLMo=
X-Received: by 2002:aa7:d409:0:b0:55d:2b55:f1e2 with SMTP id
 z9-20020aa7d409000000b0055d2b55f1e2mr902001edq.37.1706283246891; Fri, 26 Jan
 2024 07:34:06 -0800 (PST)
MIME-Version: 1.0
References: <20240108204909.564514-1-dwmw2@infradead.org> <20240108204909.564514-2-dwmw2@infradead.org>
 <CAFEAcA8JtnXezmo-h-rFZcbqsN_-CnOYCTUfLfd_q=F0702U9g@mail.gmail.com> <d501dfc14c7b109844ff6d28f6be3bba86a1be89.camel@infradead.org>
In-Reply-To: <d501dfc14c7b109844ff6d28f6be3bba86a1be89.camel@infradead.org>
From: Peter Maydell <peter.maydell@linaro.org>
Date: Fri, 26 Jan 2024 15:33:55 +0000
Message-ID: <CAFEAcA98ZW_1DtKvs-ZU=R9DOBwmnLPwnTBqPbTv7jE8zd1HoA@mail.gmail.com>
Subject: Re: [PATCH v3 01/46] net: add qemu_{configure,create}_nic_device(), qemu_find_nic_info()
To: David Woodhouse <dwmw2@infradead.org>
Cc: qemu-devel@nongnu.org, Richard Henderson <richard.henderson@linaro.org>, 
	Beniamino Galvani <b.galvani@gmail.com>, Strahinja Jankovic <strahinja.p.jankovic@gmail.com>, 
	Niek Linnenbank <nieklinnenbank@gmail.com>, =?UTF-8?Q?C=C3=A9dric_Le_Goater?= <clg@kaod.org>, 
	Andrew Jeffery <andrew@codeconstruct.com.au>, Joel Stanley <joel@jms.id.au>, 
	Igor Mitsyanko <i.mitsyanko@gmail.com>, Jean-Christophe Dubois <jcd@tribudubois.net>, 
	Andrey Smirnov <andrew.smirnov@gmail.com>, =?UTF-8?Q?Philippe_Mathieu=2DDaud=C3=A9?= <philmd@linaro.org>, 
	Rob Herring <robh@kernel.org>, Subbaraya Sundeep <sundeep.lkml@gmail.com>, Jan Kiszka <jan.kiszka@web.de>, 
	Tyrone Ting <kfting@nuvoton.com>, Hao Wu <wuhaotsh@google.com>, 
	Radoslaw Biernacki <rad@semihalf.com>, Leif Lindholm <quic_llindhol@quicinc.com>, 
	Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org>, 
	"Edgar E. Iglesias" <edgar.iglesias@gmail.com>, Alistair Francis <alistair@alistair23.me>, 
	Helge Deller <deller@gmx.de>, Paolo Bonzini <pbonzini@redhat.com>, 
	Eduardo Habkost <eduardo@habkost.net>, "Michael S. Tsirkin" <mst@redhat.com>, 
	Marcel Apfelbaum <marcel.apfelbaum@gmail.com>, Song Gao <gaosong@loongson.cn>, 
	Thomas Huth <huth@tuxfamily.org>, Laurent Vivier <laurent@vivier.eu>, 
	Huacai Chen <chenhuacai@kernel.org>, Jiaxun Yang <jiaxun.yang@flygoat.com>, 
	=?UTF-8?Q?Herv=C3=A9_Poussineau?= <hpoussin@reactos.org>, 
	Aleksandar Rikalo <aleksandar.rikalo@syrmia.com>, Aurelien Jarno <aurelien@aurel32.net>, 
	Jason Wang <jasowang@redhat.com>, Jia Liu <proljc@gmail.com>, 
	Stafford Horne <shorne@gmail.com>, Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>, 
	Nicholas Piggin <npiggin@gmail.com>, Daniel Henrique Barboza <danielhb413@gmail.com>, 
	David Gibson <david@gibson.dropbear.id.au>, Harsh Prateek Bora <harshpb@linux.ibm.com>, 
	Bin Meng <bin.meng@windriver.com>, Palmer Dabbelt <palmer@dabbelt.com>, 
	Weiwei Li <liwei1518@gmail.com>, Liu Zhiwei <zhiwei_liu@linux.alibaba.com>, 
	Halil Pasic <pasic@linux.ibm.com>, Christian Borntraeger <borntraeger@linux.ibm.com>, 
	Eric Farman <farman@linux.ibm.com>, David Hildenbrand <david@redhat.com>, 
	Ilya Leoshkevich <iii@linux.ibm.com>, Yoshinori Sato <ysato@users.sourceforge.jp>, 
	Magnus Damm <magnus.damm@gmail.com>, Artyom Tarasenko <atar4qemu@gmail.com>, 
	Stefano Stabellini <sstabellini@kernel.org>, Anthony Perard <anthony.perard@citrix.com>, 
	Paul Durrant <paul@xen.org>, Max Filippov <jcmvbkbc@gmail.com>, qemu-arm@nongnu.org, 
	qemu-ppc@nongnu.org, qemu-riscv@nongnu.org, qemu-s390x@nongnu.org, 
	xen-devel@lists.xenproject.org
Content-Type: text/plain; charset="UTF-8"

On Fri, 26 Jan 2024 at 15:20, David Woodhouse <dwmw2@infradead.org> wrote:
>
> On Fri, 2024-01-26 at 14:43 +0000, Peter Maydell wrote:
> >
> > > +NICInfo *qemu_find_nic_info(const char *typename, bool match_default,
> > > +                            const char *alias);
> > > +bool qemu_configure_nic_device(DeviceState *dev, bool match_default,
> > > +                               const char *alias);
> > > +DeviceState *qemu_create_nic_device(const char *typename, bool match_default,
> > > +                                    const char *alias);
> >
> > Could we have doc comments that document the purpose and API
> > for these new global functions, please?
>
> Like this? I deliberately fatfingered the argument names and didn't
> even get a build warning, and I don't see any actual *documentation*
> being generated with it...?

We use the doc comment format to allow for potential future
documentation generation, but it's only actually generated
if there's a .rst file somewhere under docs/ that has a
kernel-doc:: directive referencing the .h file (for instance
there's one in docs/devel/memory.rst that results in
https://www.qemu.org/docs/master/devel/memory.html#api-reference )

For almost all internal functions, we set the relatively low
bar of "have a doc comment so people reading the header file
can see what the functions do". Where there's a more complex
subsystem that merits its own hand-written documentation
under docs/devel, then if the author of that documentation
is enthusiastic they can clean up and pull in specific headers
to add autogenerated docs. But the primary audience is the
human reader of the .h file.

> diff --git a/include/net/net.h b/include/net/net.h
> index 25ea83fd12..14614b0a31 100644
> --- a/include/net/net.h
> +++ b/include/net/net.h
> @@ -207,10 +207,46 @@ int qemu_show_nic_models(const char *arg, const char *const *models);
>  void qemu_check_nic_model(NICInfo *nd, const char *model);
>  int qemu_find_nic_model(NICInfo *nd, const char * const *models,
>                          const char *default_model);
> +/**
> + * qemu_find_nic_info: Obtain NIC configuration information
> + * @typename: Name of device object type
> + * @match_default: Match NIC configurations with no model specified
> + * @alias: Additional model string to match (for user convenience and
> + *         backward compatibility).
> + *
> + * Search for a NIC configuration matching the NIC model constraints.
> + */
>  NICInfo *qemu_find_nic_info(const char *typename, bool match_default,
>                              const char *alias);
> +/**
> + * qemu_configure_nic_device: Apply NIC configuration to a given device
> + * @dev: Network device to be configured
> + * @match_default: Match NIC configurations with no model specified
> + * @alias: Additional model string to match
> + *
> + * Search for a NIC configuration for the provided device, using the
> + * additionally specified matching constraints. If found, apply the
> + * configuration using qdev_set_nic_properties() and return %true.
> + *
> + * This is used by platform code which creates the device anyway,
> + * regardless of whether there is a configuration for it. This tends
> + * to be platforms which ignore `--nodefaults` and create net devices
> + * anyway. This behaviour is not advised for new platforms; use the
> + * qemu_create_nic_device() function instead, which creates the device
> + * only when it is configured.

I disagree about this paragraph. The behaviour we want for new
platforms is:

 * If this is modelling some board where the ethernet device is
   always present (eg it is soldered on to the board, or it is
   a part of the SoC that the board uses), then always create
   that device
 * If the hardware being modelled has the ethernet device as an
   optional device (eg physically removable like a PCI card),
   then the board should arrange that --nodefaults causes it to
   not be created

Basically if the guest OS is entitled to assume the ethernet
device is present then we shouldn't allow the machine to be
created with it not present, because all that will happen is
that the guest will fall over in bootup.

(Similar applies to things like whether the board should
honour the option to disable USB support or not.)

thanks
-- PMM


From xen-devel-bounces@lists.xenproject.org Fri Jan 26 15:42:18 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 26 Jan 2024 15:42:18 +0000
Received: from list by lists.xenproject.org with outflank-mailman.672094.1045796 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTOLS-0003jw-6e; Fri, 26 Jan 2024 15:42:18 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 672094.1045796; Fri, 26 Jan 2024 15:42:18 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTOLR-0003hn-Vy; Fri, 26 Jan 2024 15:42:17 +0000
Received: by outflank-mailman (input) for mailman id 672094;
 Fri, 26 Jan 2024 15:42:17 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=DqdW=JE=gmail.com=oleksii.kurochko@srs-se1.protection.inumbo.net>)
 id 1rTOLR-00039n-3B
 for xen-devel@lists.xenproject.org; Fri, 26 Jan 2024 15:42:17 +0000
Received: from mail-lf1-x12e.google.com (mail-lf1-x12e.google.com
 [2a00:1450:4864:20::12e])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 7ae2e924-bc61-11ee-98f5-efadbce2ee36;
 Fri, 26 Jan 2024 16:42:15 +0100 (CET)
Received: by mail-lf1-x12e.google.com with SMTP id
 2adb3069b0e04-51022133a84so642725e87.3
 for <xen-devel@lists.xenproject.org>; Fri, 26 Jan 2024 07:42:15 -0800 (PST)
Received: from fedora.. ([94.75.70.14]) by smtp.gmail.com with ESMTPSA id
 q5-20020ac25105000000b0050e7ec49881sm208351lfb.21.2024.01.26.07.42.14
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Fri, 26 Jan 2024 07:42:14 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 7ae2e924-bc61-11ee-98f5-efadbce2ee36
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1706283735; x=1706888535; darn=lists.xenproject.org;
        h=content-transfer-encoding:mime-version:references:in-reply-to
         :message-id:date:subject:cc:to:from:from:to:cc:subject:date
         :message-id:reply-to;
        bh=FLBEcEhjguKvXHdTuEC4hoUJhlDOkKsN5bndKqUwPUQ=;
        b=bsaA9S/JUS1UyIS+31G5cqoW3XJXQGbFetJ5f/JQl4ztwutXVuL0mmBb56FWoqQ4Rt
         0Js0PAmPMqiLJSYlxkypEVUJH3Stwambj16KCZBS/AjRcAZS4+pdM5ZHxEeq1oFhMPfC
         wSmkootA+0W6SU6S3nZ5cmvVF1l4YMo+MhXb659EpbnrkjV8Kn9MuRvJqGQTBNgMIIDC
         WETffYKszlBS22oV8IaLrY0/t/7/a320fSupKModrGsIaniATBR3pR23/ZZ1+I1PHb4S
         HUU5kR0CBJCO/ou1cE5jPoprJPrM+iLLoilW9KE/5sFZbc8/spKjgZRtDF8g1ZtTAV+y
         7GAA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706283735; x=1706888535;
        h=content-transfer-encoding:mime-version:references:in-reply-to
         :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to;
        bh=FLBEcEhjguKvXHdTuEC4hoUJhlDOkKsN5bndKqUwPUQ=;
        b=gvecNdiOsvuZ0FXn8w25bK21+SySM9YWovNKIRxXYbUWPvMRqbOlxcaGyCn7sXLBj9
         LDJQ32c7cz9k9Q52jRUFkIf/gwgx6mrWKvacmsi6r7NPhhB4A7dMAyly8jgO++aLQeEs
         FidAjhX0Tptc3grUGHNiM9IqqJNmqwQWjA2IQaizPrCDXet/Lhmtjvfh3dRK5270SoZA
         IfkZh8CHiH+F8og2ex2ceF+HmRJM6VKkZAKxFMVyukHAfp6fcP4Iigr1C6/1NkxvEgwD
         IuN2/wwgO5Vxw5q9M7KuDabDFqxFcv3FDqtP+6JuQ459nS5pAZxTO1CM1tR2eDPchJzF
         TM4Q==
X-Gm-Message-State: AOJu0YypZCD62pIx5i8g069zF27HgfbrOq2rfGcEVyKLvqHynJ+RFHZv
	vp8EV6MQog0/EfRhUOURKscFfSVT4amQTDD+02s2qvgcdjH1aBe07ScjM3Tf
X-Google-Smtp-Source: AGHT+IFpaeOqR1Lx9X/+OfhLDLRNmlovnlRSZA2BL1j7RuqIt8Q1MlPu+uZ7fMMcS7Tds8AECo3DnQ==
X-Received: by 2002:a19:e05a:0:b0:50e:7c08:1a55 with SMTP id g26-20020a19e05a000000b0050e7c081a55mr43653lfj.18.1706283734802;
        Fri, 26 Jan 2024 07:42:14 -0800 (PST)
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
To: xen-devel@lists.xenproject.org
Cc: Oleksii Kurochko <oleksii.kurochko@gmail.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	George Dunlap <george.dunlap@citrix.com>,
	Jan Beulich <jbeulich@suse.com>,
	Julien Grall <julien@xen.org>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Wei Liu <wl@xen.org>
Subject: [PATCH v7 5/7] xen/asm-generic: introduce generic device.h
Date: Fri, 26 Jan 2024 17:42:05 +0200
Message-ID: <621ff5bd992ea8e6202ec03fa52c0e09aacd8f83.1706281994.git.oleksii.kurochko@gmail.com>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <cover.1706281994.git.oleksii.kurochko@gmail.com>
References: <cover.1706281994.git.oleksii.kurochko@gmail.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Arm, PPC and RISC-V use the same device.h thereby device.h
was moved to asm-generic. Arm's device.h was taken as a base with
the following changes:
 - #ifdef PCI related things.
 - #ifdef ACPI related things.
 - Rename #ifdef guards.
 - Add SPDX tag.
 - #ifdef CONFIG_HAS_DEVICE_TREE related things.
 - #ifdef-ing iommu related things with CONFIG_HAS_PASSTHROUGH.

Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>
---
Changes in V7:
 - keeping DEVICE_PCI_HOSTBRIDGE available for every build based on the reply:
    https://lore.kernel.org/xen-devel/926a5c12-7f02-42ec-92a8-1c82d060c710@xen.org/
 - add comment above enum device_type.h with explanation about DEV_TYPE_MAX.        
 - separate patch  "[PATCH v6 9/9] xen/asm-generic: introduce generic device.h" into 3 patches.
---
Changes in V6:
 - Rebase only.
---
Changes in V5:
  - Removed generated file: xen/include/headers++.chk.new
  - Removed pointless #ifdef CONFIG_HAS_DEVICE_TREE ... #endif for PPC as
    CONFIG_HAS_DEVICE_TREE will be always used for PPC.
---
Changes in V4:
 - Updated the commit message
 - Switched Arm and PPC to asm-generic version of device.h
 - Replaced HAS_PCI with CONFIG_HAS_PCI
 - ifdef-ing iommu filed of dev_archdata struct with CONFIG_HAS_PASSTHROUGH
 - ifdef-ing iommu_fwspec of device struct with CONFIG_HAS_PASSTHROUGH
 - ifdef-ing DT related things with CONFIG_HAS_DEVICE_TREE
 - Updated the commit message ( remove a note with question about
   if device.h should be in asm-generic or not )
 - Replaced DEVICE_IC with DEVICE_INTERRUPT_CONTROLLER
 - Rationalized usage of CONFIG_HAS_* in device.h
 - Fixed indents for ACPI_DEVICE_START and ACPI_DEVICE_END
---
Changes in V3:
 - ifdef device tree related things.
 - update the commit message
---
Changes in V2:
	- take ( as common ) device.h from Arm as PPC and RISC-V use it as a base.
	- #ifdef PCI related things.
	- #ifdef ACPI related things.
	- rename DEVICE_GIC to DEVIC_IC.
	- rename #ifdef guards.
	- switch Arm and PPC to generic device.h
	- add SPDX tag
	- update the commit message
---
 xen/include/asm-generic/device.h | 162 +++++++++++++++++++++++++++++++
 1 file changed, 162 insertions(+)
 create mode 100644 xen/include/asm-generic/device.h

diff --git a/xen/include/asm-generic/device.h b/xen/include/asm-generic/device.h
new file mode 100644
index 0000000000..f12b30dc43
--- /dev/null
+++ b/xen/include/asm-generic/device.h
@@ -0,0 +1,162 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+#ifndef __ASM_GENERIC_DEVICE_H__
+#define __ASM_GENERIC_DEVICE_H__
+
+#include <xen/stdbool.h>
+
+/*
+ * DEV_TYPE_MAX is currently not in use, but it was added because the enum may
+ * be empty when !HAS_DEVICE_TREE and !HAS_PCI, which could lead to
+ * a compilation error.
+ */
+enum device_type
+{
+#ifdef CONFIG_HAS_DEVICE_TREE
+    DEV_DT,
+#endif
+
+#ifdef CONFIG_HAS_PCI
+    DEV_PCI,
+#endif
+    DEV_TYPE_MAX,
+};
+
+enum device_class
+{
+    DEVICE_SERIAL,
+    DEVICE_IOMMU,
+    DEVICE_INTERRUPT_CONTROLLER,
+    DEVICE_PCI_HOSTBRIDGE,
+    /* Use for error */
+    DEVICE_UNKNOWN,
+};
+
+struct dev_archdata {
+#ifdef CONFIG_HAS_PASSTHROUGH
+    void *iommu;    /* IOMMU private data */
+#endif
+};
+
+/* struct device - The basic device structure */
+struct device
+{
+    enum device_type type;
+#ifdef CONFIG_HAS_DEVICE_TREE
+    struct dt_device_node *of_node; /* Used by drivers imported from Linux */
+#endif
+    struct dev_archdata archdata;
+#ifdef CONFIG_HAS_PASSTHROUGH
+    struct iommu_fwspec *iommu_fwspec; /* per-device IOMMU instance data */
+#endif
+};
+
+typedef struct device device_t;
+
+#ifdef CONFIG_HAS_DEVICE_TREE
+
+#include <xen/device_tree.h>
+
+#define dev_is_dt(dev)  ((dev)->type == DEV_DT)
+
+/**
+ *  device_init - Initialize a device
+ *  @dev: device to initialize
+ *  @class: class of the device (serial, network...)
+ *  @data: specific data for initializing the device
+ *
+ *  Return 0 on success.
+ */
+int device_init(struct dt_device_node *dev, enum device_class class,
+                const void *data);
+
+/**
+ * device_get_type - Get the type of the device
+ * @dev: device to match
+ *
+ * Return the device type on success or DEVICE_ANY on failure
+ */
+enum device_class device_get_class(const struct dt_device_node *dev);
+
+#define DT_DEVICE_START(_name, _namestr, _class)                    \
+static const struct device_desc __dev_desc_##_name __used           \
+__section(".dev.info") = {                                          \
+    .name = _namestr,                                               \
+    .class = _class,                                                \
+
+#define DT_DEVICE_END                                               \
+};
+
+#else /* !CONFIG_HAS_DEVICE_TREE */
+#define dev_is_dt(dev) ((void)(dev), false)
+#endif /* CONFIG_HAS_DEVICE_TREE */
+
+#ifdef CONFIG_HAS_PCI
+#define dev_is_pci(dev) ((dev)->type == DEV_PCI)
+#else
+#define dev_is_pci(dev) ((void)(dev), false)
+#endif
+
+struct device_desc {
+    /* Device name */
+    const char *name;
+    /* Device class */
+    enum device_class class;
+
+#ifdef CONFIG_HAS_DEVICE_TREE
+
+    /* List of devices supported by this driver */
+    const struct dt_device_match *dt_match;
+    /*
+     * Device initialization.
+     *
+     * -EAGAIN is used to indicate that device probing is deferred.
+     */
+    int (*init)(struct dt_device_node *dev, const void *data);
+
+#endif
+};
+
+#ifdef CONFIG_ACPI
+
+struct acpi_device_desc {
+    /* Device name */
+    const char *name;
+    /* Device class */
+    enum device_class class;
+    /* type of device supported by the driver */
+    const int class_type;
+    /* Device initialization */
+    int (*init)(const void *data);
+};
+
+/**
+ *  acpi_device_init - Initialize a device
+ *  @class: class of the device (serial, network...)
+ *  @data: specific data for initializing the device
+ *
+ *  Return 0 on success.
+ */
+int acpi_device_init(enum device_class class,
+                     const void *data, int class_type);
+
+#define ACPI_DEVICE_START(_name, _namestr, _class)              \
+static const struct acpi_device_desc __dev_desc_##_name __used  \
+__section(".adev.info") = {                                     \
+    .name = _namestr,                                           \
+    .class = _class,                                            \
+
+#define ACPI_DEVICE_END                                         \
+};
+
+#endif /* CONFIG_ACPI */
+
+#endif /* __ASM_GENERIC_DEVICE_H__ */
+
+/*
+ * Local variables:
+ * mode: C
+ * c-file-style: "BSD"
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Fri Jan 26 15:42:18 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 26 Jan 2024 15:42:18 +0000
Received: from list by lists.xenproject.org with outflank-mailman.672091.1045773 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTOLP-0003GE-V4; Fri, 26 Jan 2024 15:42:15 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 672091.1045773; Fri, 26 Jan 2024 15:42:15 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTOLP-0003G7-RK; Fri, 26 Jan 2024 15:42:15 +0000
Received: by outflank-mailman (input) for mailman id 672091;
 Fri, 26 Jan 2024 15:42:14 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=DqdW=JE=gmail.com=oleksii.kurochko@srs-se1.protection.inumbo.net>)
 id 1rTOLO-0002k9-Ip
 for xen-devel@lists.xenproject.org; Fri, 26 Jan 2024 15:42:14 +0000
Received: from mail-lf1-x12f.google.com (mail-lf1-x12f.google.com
 [2a00:1450:4864:20::12f])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 79405bba-bc61-11ee-8a43-1f161083a0e0;
 Fri, 26 Jan 2024 16:42:12 +0100 (CET)
Received: by mail-lf1-x12f.google.com with SMTP id
 2adb3069b0e04-5100c2f7a16so458704e87.1
 for <xen-devel@lists.xenproject.org>; Fri, 26 Jan 2024 07:42:12 -0800 (PST)
Received: from fedora.. ([94.75.70.14]) by smtp.gmail.com with ESMTPSA id
 q5-20020ac25105000000b0050e7ec49881sm208351lfb.21.2024.01.26.07.42.11
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Fri, 26 Jan 2024 07:42:11 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 79405bba-bc61-11ee-8a43-1f161083a0e0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1706283732; x=1706888532; darn=lists.xenproject.org;
        h=content-transfer-encoding:mime-version:references:in-reply-to
         :message-id:date:subject:cc:to:from:from:to:cc:subject:date
         :message-id:reply-to;
        bh=VEZW9bC9IZuUyn5hU4hwwOb0kPnkeC45L5CWqPFzyWM=;
        b=GcZ1e2aRoSGSa2QrUHmXldkfXO2UASRFV74EBCMwoeG/uqiiYCmx8RL5txQ6nLmgnl
         xd/L+nGjCD1euVFH4WDT9QrpEBbkj0kjkavAh0sYSrEaLf6zBIrao1b/c86SbjXcM7AV
         9MENnfMrpRx8vfBZkEYWyNQpUhxrUpFIHIjNtYr+Nx/86YvYdHZhP2Y90/21j+B2029W
         6piJcsDXAmACpUxjvfkjovpjiZmjafTEnb/MksLp88nPFVZJp44yLYU3fgk/FNmID7Hi
         iH4bAQN04DsQ9l1tVMdqxKKUPV/mFhj9N9siPLKrarluSADG/xJzVsDsRwfL4p83SQMK
         h85g==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706283732; x=1706888532;
        h=content-transfer-encoding:mime-version:references:in-reply-to
         :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to;
        bh=VEZW9bC9IZuUyn5hU4hwwOb0kPnkeC45L5CWqPFzyWM=;
        b=sG5wG89aPyKbGwt6zRlpDPynEPCjFKWSrz2ThG7/1KWSESwyxCFHYWq2XqyY7xiIeM
         b4AxM5jaldzE6JwZbUwypMKlR0Z09KCchaoNE6mMmmJdt7a0NeWSX5qkDlVgYIaV9YoP
         0aqoGGeMTvn4RJDntk+PdNjWFSqPpTbICSgWhRavWbww3oFCdZWGQLfixDOw4GpHeX04
         FfGgLxRFK3wHLmCwVAm4IqTyYuy5xdNIwntbxEKgjqMx2/UufZkBBI+PQuS5xWVETucE
         dYxucs5dC+fvr6g1ffn/gEujnfDp/LaDCpnl0FMYm4Q4mlD3Q6cEIhU2KXgY/9nZ1ma/
         0+Fg==
X-Gm-Message-State: AOJu0Yyq02gc7DmFdnn/y2oYpukKxhQRtiI4aDX//xmtZOF0BqW6pX+O
	XiQCQB81C/TuAItpgQ5w2dhij/JwwFcI/Qg4NB6mrRb6lPt3iqcEIaguQJMo
X-Google-Smtp-Source: AGHT+IEe9j/Pjph1NsnFlw2LwlbWbgpilGjH7F9SOqvpbcVHNAN5EN/XiY1sJWitLcqPCemnE/5y+g==
X-Received: by 2002:ac2:4985:0:b0:510:194e:4e07 with SMTP id f5-20020ac24985000000b00510194e4e07mr13193lfl.26.1706283732052;
        Fri, 26 Jan 2024 07:42:12 -0800 (PST)
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
To: xen-devel@lists.xenproject.org
Cc: Oleksii Kurochko <oleksii.kurochko@gmail.com>,
	Doug Goldstein <cardoe@cardoe.com>,
	Stefano Stabellini <sstabellini@kernel.org>
Subject: [PATCH v7 2/7] automation: introduce fixed randconfig for RISC-V
Date: Fri, 26 Jan 2024 17:42:02 +0200
Message-ID: <6641e6fdd36c4128c6c76badfb778dc195f1e419.1706281994.git.oleksii.kurochko@gmail.com>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <cover.1706281994.git.oleksii.kurochko@gmail.com>
References: <cover.1706281994.git.oleksii.kurochko@gmail.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

This patch introduces the file riscv-fixed-randconfig.yaml,
which includes all configurations that should be disabled for
randconfig builds.

Suggested-by: Stefano Stabellini <sstabellini@kernel.org>
Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>
---
The patch were introduced after discussion in a topic:
 https://lore.kernel.org/xen-devel/cover.1701966261.git.oleksii.kurochko@gmail.com/
---
Changes in V7:
 - Nothing changed. Only rebase
---
Changes in V6:
 - The patch was introduced in this version of patch series.
---
 automation/gitlab-ci/build.yaml                  | 8 ++++----
 automation/gitlab-ci/riscv-fixed-randconfig.yaml | 7 +++++++
 2 files changed, 11 insertions(+), 4 deletions(-)
 create mode 100644 automation/gitlab-ci/riscv-fixed-randconfig.yaml

diff --git a/automation/gitlab-ci/build.yaml b/automation/gitlab-ci/build.yaml
index 32af30cced..38cd93c306 100644
--- a/automation/gitlab-ci/build.yaml
+++ b/automation/gitlab-ci/build.yaml
@@ -516,6 +516,8 @@ alpine-3.18-gcc-debug-arm64-boot-cpupools:
       CONFIG_BOOT_TIME_CPUPOOLS=y
 
 # RISC-V 64 cross-build
+include: 'automation/gitlab-ci/riscv-fixed-randconfig.yaml'
+
 archlinux-current-gcc-riscv64:
   extends: .gcc-riscv64-cross-build
   variables:
@@ -536,8 +538,7 @@ archlinux-current-gcc-riscv64-randconfig:
     CONTAINER: archlinux:current-riscv64
     KBUILD_DEFCONFIG: tiny64_defconfig
     RANDCONFIG: y
-    EXTRA_FIXED_RANDCONFIG:
-      CONFIG_COVERAGE=n
+    EXTRA_FIXED_RANDCONFIG: !reference [.riscv-fixed-randconfig, variables, EXTRA_FIXED_RANDCONFIG]
 
 archlinux-current-gcc-riscv64-debug-randconfig:
   extends: .gcc-riscv64-cross-build-debug
@@ -545,8 +546,7 @@ archlinux-current-gcc-riscv64-debug-randconfig:
     CONTAINER: archlinux:current-riscv64
     KBUILD_DEFCONFIG: tiny64_defconfig
     RANDCONFIG: y
-    EXTRA_FIXED_RANDCONFIG:
-      CONFIG_COVERAGE=n
+    EXTRA_FIXED_RANDCONFIG: !reference [.riscv-fixed-randconfig, variables, EXTRA_FIXED_RANDCONFIG]
 
 # Power cross-build
 debian-bullseye-gcc-ppc64le:
diff --git a/automation/gitlab-ci/riscv-fixed-randconfig.yaml b/automation/gitlab-ci/riscv-fixed-randconfig.yaml
new file mode 100644
index 0000000000..f1282b40c9
--- /dev/null
+++ b/automation/gitlab-ci/riscv-fixed-randconfig.yaml
@@ -0,0 +1,7 @@
+.riscv-fixed-randconfig:
+  variables:
+    EXTRA_FIXED_RANDCONFIG:
+      CONFIG_COVERAGE=n
+      CONFIG_EXPERT=y
+      CONFIG_GRANT_TABLE=n
+      CONFIG_MEM_ACCESS=n
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Fri Jan 26 15:42:18 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 26 Jan 2024 15:42:18 +0000
Received: from list by lists.xenproject.org with outflank-mailman.672092.1045783 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTOLR-0003Vh-5g; Fri, 26 Jan 2024 15:42:17 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 672092.1045783; Fri, 26 Jan 2024 15:42:17 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTOLR-0003VQ-1v; Fri, 26 Jan 2024 15:42:17 +0000
Received: by outflank-mailman (input) for mailman id 672092;
 Fri, 26 Jan 2024 15:42:15 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=DqdW=JE=gmail.com=oleksii.kurochko@srs-se1.protection.inumbo.net>)
 id 1rTOLP-0002k9-J9
 for xen-devel@lists.xenproject.org; Fri, 26 Jan 2024 15:42:15 +0000
Received: from mail-lf1-x12e.google.com (mail-lf1-x12e.google.com
 [2a00:1450:4864:20::12e])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 7a4d0ba9-bc61-11ee-8a43-1f161083a0e0;
 Fri, 26 Jan 2024 16:42:14 +0100 (CET)
Received: by mail-lf1-x12e.google.com with SMTP id
 2adb3069b0e04-51021ba75edso624467e87.3
 for <xen-devel@lists.xenproject.org>; Fri, 26 Jan 2024 07:42:14 -0800 (PST)
Received: from fedora.. ([94.75.70.14]) by smtp.gmail.com with ESMTPSA id
 q5-20020ac25105000000b0050e7ec49881sm208351lfb.21.2024.01.26.07.42.13
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Fri, 26 Jan 2024 07:42:13 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 7a4d0ba9-bc61-11ee-8a43-1f161083a0e0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1706283734; x=1706888534; darn=lists.xenproject.org;
        h=content-transfer-encoding:mime-version:references:in-reply-to
         :message-id:date:subject:cc:to:from:from:to:cc:subject:date
         :message-id:reply-to;
        bh=GiIkhTp0Ki6vQDdcTozvmRdsu4x2izraQMAOShMyo6I=;
        b=CbxugwRaC9voWQ/OpznBtGC1d8JqSsqtvg7NmGIi/XMZesoMh+usPy3yFtwi+OTtEb
         qAyCjBSjdq9l83fgCRfSv2DBwszKyQDJ1ZG+mLudPGQBWyB0EC7QJA9toRsa+vtAoXhx
         26Lg11Jco7s/j7v0wPGB6oXnSPqCDwRh7ln4fQ4/nc+Wd18BUSrGcwBl6lUrtHNhQXqh
         kvSY8nmm1rZS76K0KEFELrCRQ1Lsi6ln/wBlSGJECWEnaXYv3wGSN172gEwMO5oPtUyt
         iAID87cyI7Hvg/rtjCl94/O1doxucOH/lcS5u9eXIfgIebho7U15R8CI4ij0I7A41Ie2
         C4Qg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706283734; x=1706888534;
        h=content-transfer-encoding:mime-version:references:in-reply-to
         :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to;
        bh=GiIkhTp0Ki6vQDdcTozvmRdsu4x2izraQMAOShMyo6I=;
        b=ct36k4+qXVPM7/vdnUSUf9A9DPuVWjhb6ypZAVl+86EeTT3H1p1z5Xvu67Z6tc8M4u
         ZQ4V2wHJXSoKWF++cegUcCaun7KP3PV7T3dwnU40h+tfqd2pB98Sikm5qjlLjn7Mf5IF
         Z0UUMRdNhj3mkZQjeFz0wPfP8WC6pNp1qpfb/6c9MOcrXFpXATdDZMdmBasNgwdkFpZr
         q+1/Yv0l+f4EW1L0DAjtcN6aGw01ZtxRITbdyXGA0fW6ro4OClUz/TE9tVBbelKmcFvZ
         5BckSyyzAYxy9idqLZfWl6GLjznGLoeoS8CMyM2LmPjZXSqQYwdTQONs/9OZLtIlRDHw
         TSSg==
X-Gm-Message-State: AOJu0YyaSALKoWSPKgS+XBdKNi0QnLA8E9lt+/zdgwg8QlvMPt5tXL7C
	JEp554fbKyGNoJKRSUN/RakY9jfte6MHjKgVd+UAoWSeUM7aY+CwKK9iQiZf
X-Google-Smtp-Source: AGHT+IHktIAD+lMcXxk2xM244NybPcZDevc44vTzmfQCMHnEFiX4MqYR1ljD+yj/CMp+vgjVz6F3/Q==
X-Received: by 2002:a05:6512:3b89:b0:510:150e:62a7 with SMTP id g9-20020a0565123b8900b00510150e62a7mr894338lfv.113.1706283733878;
        Fri, 26 Jan 2024 07:42:13 -0800 (PST)
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
To: xen-devel@lists.xenproject.org
Cc: Oleksii Kurochko <oleksii.kurochko@gmail.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Julien Grall <julien@xen.org>,
	Bertrand Marquis <bertrand.marquis@arm.com>,
	Michal Orzel <michal.orzel@amd.com>,
	Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
	Shawn Anastasio <sanastasio@raptorengineering.com>,
	Tamas K Lengyel <tamas@tklengyel.com>,
	Alexandru Isaila <aisaila@bitdefender.com>,
	Petre Pircalabu <ppircalabu@bitdefender.com>,
	Alistair Francis <alistair.francis@wdc.com>,
	Bob Eshleman <bobbyeshleman@gmail.com>,
	Connor Davis <connojdavis@gmail.com>,
	Jan Beulich <jbeulich@suse.com>
Subject: [PATCH v7 4/7] xen/asm-generic: ifdef inclusion of <asm/mem_access.h>
Date: Fri, 26 Jan 2024 17:42:04 +0200
Message-ID: <30c450ef4141656724b03adcc292fd1ac4b635b6.1706281994.git.oleksii.kurochko@gmail.com>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <cover.1706281994.git.oleksii.kurochko@gmail.com>
References: <cover.1706281994.git.oleksii.kurochko@gmail.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

ifdefing inclusion of <asm/mem_access.h> in <xen/mem_access.h>
allows to avoid generation of empty <asm/mem_access.h> header
for the case when !CONFIG_MEM_ACCESS.

For Arm it was explicitly added inclusion of <asm/mem_access.h> for p2m.c
and traps.c because they require some functions from <asm/mem_access.h> which
aren't available in case of !CONFIG_MEM_ACCESS.

Suggested-by: Jan Beulich <jbeulich@suse.com>
Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>
---
Changes in V7:
 - Nothing changed. Only rebase
---
Changes in V6:
 - Remove the way how CONFIG_MEM_ACCESS is disabled for PPC and RISC-V.
 - Disable the config in ppc64_defconfig and tiny64_defconfig (RISC-V).
---
Changes in V5:
 - Added dependencies for "Config MEM_ACCESS" to be sure that randconfig will not
   turn on the config.
---
Changes in V4:
 - Nothing changed. Only rebase.
---
Changes in V3:
 - Remove unnecessary comment.
---
 xen/arch/arm/p2m.c                      | 1 +
 xen/arch/arm/traps.c                    | 1 +
 xen/arch/ppc/configs/ppc64_defconfig    | 1 +
 xen/arch/ppc/include/asm/mem_access.h   | 5 -----
 xen/arch/riscv/configs/tiny64_defconfig | 1 +
 xen/include/xen/mem_access.h            | 2 ++
 6 files changed, 6 insertions(+), 5 deletions(-)
 delete mode 100644 xen/arch/ppc/include/asm/mem_access.h

diff --git a/xen/arch/arm/p2m.c b/xen/arch/arm/p2m.c
index b991b76ce4..2465c266e9 100644
--- a/xen/arch/arm/p2m.c
+++ b/xen/arch/arm/p2m.c
@@ -7,6 +7,7 @@
 #include <asm/event.h>
 #include <asm/flushtlb.h>
 #include <asm/guest_walk.h>
+#include <asm/mem_access.h>
 #include <asm/page.h>
 #include <asm/traps.h>
 
diff --git a/xen/arch/arm/traps.c b/xen/arch/arm/traps.c
index 9c10e8f78c..8ddca643d4 100644
--- a/xen/arch/arm/traps.c
+++ b/xen/arch/arm/traps.c
@@ -35,6 +35,7 @@
 #include <asm/cpufeature.h>
 #include <asm/event.h>
 #include <asm/hsr.h>
+#include <asm/mem_access.h>
 #include <asm/mmio.h>
 #include <asm/regs.h>
 #include <asm/smccc.h>
diff --git a/xen/arch/ppc/configs/ppc64_defconfig b/xen/arch/ppc/configs/ppc64_defconfig
index f7cc075e45..48a053237a 100644
--- a/xen/arch/ppc/configs/ppc64_defconfig
+++ b/xen/arch/ppc/configs/ppc64_defconfig
@@ -6,6 +6,7 @@
 # CONFIG_HYPFS is not set
 # CONFIG_GRANT_TABLE is not set
 # CONFIG_SPECULATIVE_HARDEN_ARRAY is not set
+# CONFIG_MEM_ACCESS is not set
 
 CONFIG_PPC64=y
 CONFIG_DEBUG=y
diff --git a/xen/arch/ppc/include/asm/mem_access.h b/xen/arch/ppc/include/asm/mem_access.h
deleted file mode 100644
index e7986dfdbd..0000000000
--- a/xen/arch/ppc/include/asm/mem_access.h
+++ /dev/null
@@ -1,5 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0-only */
-#ifndef __ASM_PPC_MEM_ACCESS_H__
-#define __ASM_PPC_MEM_ACCESS_H__
-
-#endif /* __ASM_PPC_MEM_ACCESS_H__ */
diff --git a/xen/arch/riscv/configs/tiny64_defconfig b/xen/arch/riscv/configs/tiny64_defconfig
index 3c9a2ff941..09defe236b 100644
--- a/xen/arch/riscv/configs/tiny64_defconfig
+++ b/xen/arch/riscv/configs/tiny64_defconfig
@@ -6,6 +6,7 @@
 # CONFIG_HYPFS is not set
 # CONFIG_GRANT_TABLE is not set
 # CONFIG_SPECULATIVE_HARDEN_ARRAY is not set
+# CONFIG_MEM_ACCESS is not set
 
 CONFIG_RISCV_64=y
 CONFIG_DEBUG=y
diff --git a/xen/include/xen/mem_access.h b/xen/include/xen/mem_access.h
index 4e4811680d..87d93b31f6 100644
--- a/xen/include/xen/mem_access.h
+++ b/xen/include/xen/mem_access.h
@@ -33,7 +33,9 @@
  */
 struct vm_event_st;
 
+#ifdef CONFIG_MEM_ACCESS
 #include <asm/mem_access.h>
+#endif
 
 /*
  * Additional access types, which are used to further restrict
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Fri Jan 26 15:42:18 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 26 Jan 2024 15:42:18 +0000
Received: from list by lists.xenproject.org with outflank-mailman.672090.1045759 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTOLO-0002rr-O4; Fri, 26 Jan 2024 15:42:14 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 672090.1045759; Fri, 26 Jan 2024 15:42:14 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTOLO-0002qt-JV; Fri, 26 Jan 2024 15:42:14 +0000
Received: by outflank-mailman (input) for mailman id 672090;
 Fri, 26 Jan 2024 15:42:13 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=DqdW=JE=gmail.com=oleksii.kurochko@srs-se1.protection.inumbo.net>)
 id 1rTOLN-0002k9-IV
 for xen-devel@lists.xenproject.org; Fri, 26 Jan 2024 15:42:13 +0000
Received: from mail-lf1-x12e.google.com (mail-lf1-x12e.google.com
 [2a00:1450:4864:20::12e])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 7905a9bd-bc61-11ee-8a43-1f161083a0e0;
 Fri, 26 Jan 2024 16:42:12 +0100 (CET)
Received: by mail-lf1-x12e.google.com with SMTP id
 2adb3069b0e04-5100c2f7a16so458697e87.1
 for <xen-devel@lists.xenproject.org>; Fri, 26 Jan 2024 07:42:12 -0800 (PST)
Received: from fedora.. ([94.75.70.14]) by smtp.gmail.com with ESMTPSA id
 q5-20020ac25105000000b0050e7ec49881sm208351lfb.21.2024.01.26.07.42.11
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Fri, 26 Jan 2024 07:42:11 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 7905a9bd-bc61-11ee-8a43-1f161083a0e0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1706283732; x=1706888532; darn=lists.xenproject.org;
        h=content-transfer-encoding:mime-version:references:in-reply-to
         :message-id:date:subject:cc:to:from:from:to:cc:subject:date
         :message-id:reply-to;
        bh=9frqrEGnz0W4k7a7XllRVu4rPLg+BpM3QOeHeG0pwG0=;
        b=IGdWECKa3A19Z3sQxraETJabPBn83yrgG9gXgdG46AvRLdNMTnDKsX5/MT2QblWhT+
         0pUH6MP1zVtc9rd/z7rrb/9y/ZR5asQLVcuwcB53PI5BcCZCjk/KmXgtWtOdIeG2TS1N
         /l5XnSP+euVS+MvtlEKzO/gX4P6cX01xC/zn0iJbkDFlIUp3x+vHQulA4+y72Htko0Zl
         rW/x/NhCaQ1zYOGJqFfIW6b8zkphz2wnMi56D+TVc9EhbFs+r4AJ5Yg1VXEBVO9D6DjR
         /hK94uBMrLMIhIHeBOQKq2Nk+RuJ0QuH0rCEgaa3mV6qOEIWMnYcIbPuZMBZzagCvZaW
         dEnw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706283732; x=1706888532;
        h=content-transfer-encoding:mime-version:references:in-reply-to
         :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to;
        bh=9frqrEGnz0W4k7a7XllRVu4rPLg+BpM3QOeHeG0pwG0=;
        b=ErzYlw7kKQsY3MJMNw3zL5ppNkEl1EMeI4juJlXIcYzrcuxSqizbxlA2P3LkPYQ07x
         +g5U7cE9GTqVnmaECdBKmxU9Z9xjzOVuxeC43uWvznpmGQ92fQ+7m6TeEPd2g4HXz1In
         a/C7uGadpNjg6WHTO4bpLjjzV8DOdRJAXZnM7FQqqmwCln9ccb08e4oS65Il9oGjHWOs
         8k2oan4bv9vQACe1zcxXWCZguyQxD97XkTM7f5GbtUXKq/qsbTqPb/ijadboS8+wxu5c
         a/hQaEKnxJeuJuJXBZ7NrKymxJl+8caI6X136KUlZZS37c+g63GOkUtOemXHQeuMK9KA
         61rA==
X-Gm-Message-State: AOJu0Yy4hZU3rZIJ0HxpWiwRuPgtQYKg9hSkdlhwvFMRZO/Qj7H5RECl
	1bRV6C9V8MlfLy46caTwto39a8hJpcYegjzCMPU3cehnw7ePXzJCR9Ft7Xgo
X-Google-Smtp-Source: AGHT+IE3qzD0ycJ8aiiklcdFzLB2L8rKX5f2U3LKuisq5f7IpONyuxZcQKGG95f6dysttMDBOZDcAw==
X-Received: by 2002:a19:6457:0:b0:510:1489:b5a8 with SMTP id b23-20020a196457000000b005101489b5a8mr795186lfj.4.1706283731496;
        Fri, 26 Jan 2024 07:42:11 -0800 (PST)
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
To: xen-devel@lists.xenproject.org
Cc: Oleksii Kurochko <oleksii.kurochko@gmail.com>,
	Doug Goldstein <cardoe@cardoe.com>,
	Stefano Stabellini <sstabellini@kernel.org>
Subject: [PATCH v7 1/7] automation: ensure values in EXTRA_FIXED_RANDCONFIG are separated by new line
Date: Fri, 26 Jan 2024 17:42:01 +0200
Message-ID: <0350f75605245b2300ba3c5d46d004c387e89687.1706281994.git.oleksii.kurochko@gmail.com>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <cover.1706281994.git.oleksii.kurochko@gmail.com>
References: <cover.1706281994.git.oleksii.kurochko@gmail.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Kconfig tool expects each configuration to be on a new line.

The current version of the build script puts all of ${EXTRA_FIXED_RANDCONFIG}
in a single line and configs are seperated by spaces.

As a result, only the first configuration in ${EXTRA_FIXED_RANDCONFIG} will
be used.

Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>
---
Changes in V7:
 - Nothing changed. Only rebase
---
Changes in V6:
 - The patch was introduced in this version of patch series.
---
 automation/scripts/build | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/automation/scripts/build b/automation/scripts/build
index b3c71fb6fb..13b043923d 100755
--- a/automation/scripts/build
+++ b/automation/scripts/build
@@ -14,7 +14,7 @@ if [[ "${RANDCONFIG}" == "y" ]]; then
 
     # Append job-specific fixed configuration
     if [[ -n "${EXTRA_FIXED_RANDCONFIG}" ]]; then
-        echo "${EXTRA_FIXED_RANDCONFIG}" >> xen/tools/kconfig/allrandom.config
+        sed "s/ /\n/g" <<< "${EXTRA_FIXED_RANDCONFIG}" > xen/tools/kconfig/allrandom.config
     fi
 
     make -j$(nproc) -C xen KCONFIG_ALLCONFIG=tools/kconfig/allrandom.config randconfig
@@ -28,9 +28,11 @@ else
     echo "CONFIG_DEBUG=${debug}" >> xen/.config
 
     if [[ -n "${EXTRA_XEN_CONFIG}" ]]; then
-        echo "${EXTRA_XEN_CONFIG}" >> xen/.config
+        sed "s/ /\n/g" <<< "${EXTRA_XEN_CONFIG}" >> xen/.config
     fi
 
+    cat xen/.config
+
     make -j$(nproc) -C xen olddefconfig
 fi
 
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Fri Jan 26 15:42:18 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 26 Jan 2024 15:42:18 +0000
Received: from list by lists.xenproject.org with outflank-mailman.672093.1045787 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTOLR-0003YO-Jl; Fri, 26 Jan 2024 15:42:17 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 672093.1045787; Fri, 26 Jan 2024 15:42:17 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTOLR-0003XX-CS; Fri, 26 Jan 2024 15:42:17 +0000
Received: by outflank-mailman (input) for mailman id 672093;
 Fri, 26 Jan 2024 15:42:15 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=DqdW=JE=gmail.com=oleksii.kurochko@srs-se1.protection.inumbo.net>)
 id 1rTOLP-00039n-Nq
 for xen-devel@lists.xenproject.org; Fri, 26 Jan 2024 15:42:15 +0000
Received: from mail-lf1-x132.google.com (mail-lf1-x132.google.com
 [2a00:1450:4864:20::132])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 79c0cb68-bc61-11ee-98f5-efadbce2ee36;
 Fri, 26 Jan 2024 16:42:13 +0100 (CET)
Received: by mail-lf1-x132.google.com with SMTP id
 2adb3069b0e04-5101f2dfdadso1011819e87.2
 for <xen-devel@lists.xenproject.org>; Fri, 26 Jan 2024 07:42:13 -0800 (PST)
Received: from fedora.. ([94.75.70.14]) by smtp.gmail.com with ESMTPSA id
 q5-20020ac25105000000b0050e7ec49881sm208351lfb.21.2024.01.26.07.42.12
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Fri, 26 Jan 2024 07:42:12 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 79c0cb68-bc61-11ee-98f5-efadbce2ee36
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1706283733; x=1706888533; darn=lists.xenproject.org;
        h=content-transfer-encoding:mime-version:references:in-reply-to
         :message-id:date:subject:cc:to:from:from:to:cc:subject:date
         :message-id:reply-to;
        bh=PEnbKoxUIDJ0rSJ2LPqRBVQnrHP4+bmWPqcwN9Vjt2M=;
        b=CGNMMHbXhVG/+tUMrNF+8F9QEn7L4jgLW2L3R/MtbEECpPtnLxj/H9VAQMcP/YIAh8
         fu1iOMohBwH11iBeedCrR7rAPQtS3qTnOEe7xW5WoAsE3j8mMvBB6W7KY+KpiLvF4sEQ
         fP7XlGhcmhaWdOEO3xKaqpKLHUKwtWP188lgwI/d5EV3ky9tWk71cN0l3qLlrlmK8KFS
         NzZsSHu5tsi/UX/vLjplfITq2OlobFOVtSkVHFm+2sQhTRzRfNNYxw8C8CCCeuWX6VYx
         dAy0zf7kJa8O1f3em0ZVAQx2+HpbcnGNubo0Y2+THXiuVXYrhWqsRqQM4Rvh7fB8g/nr
         UN0w==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706283733; x=1706888533;
        h=content-transfer-encoding:mime-version:references:in-reply-to
         :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to;
        bh=PEnbKoxUIDJ0rSJ2LPqRBVQnrHP4+bmWPqcwN9Vjt2M=;
        b=admZFuASGWb/yT3Ajv464jMlMAcGz7LZItv13BLhWOwLH2YcCuEbYSgr6gjJV3YM7n
         npO1m+R1tYK/qbFo1MJ7BtWFpSh37KISWTp47YVZVbVwUXBB9ovsvR3Bzbfc7jCAZOF6
         r2RI9RASz0uOkh+4W3DaraBIjWxevlJTlH3QlGOKKVkvWqCrysFPWxpgEJd+peiBsWL/
         Q7eUM/EFL2O7HjrWLW3iJkAR4aXy7ck1YWIS6L+cIE1PZerxNEcVfuDVXmpxuQrxMiGK
         iihHhejLNIDm8Ih2Hss1g8hCFFdfcCyhMR9fCNnrpdkvDP0VSSMV+5y4tTfZVOMk6hww
         21cg==
X-Gm-Message-State: AOJu0YwN6Kil0PkBZTuEkWsUOlguSGqNzczXmzf66vNwJdgCCPlhSn1P
	TyE9QWh0fVfd9LCOIJv2gNC/APty9r0VBhE8SJGq64xd5NHR2fRIttFITjS0
X-Google-Smtp-Source: AGHT+IGK8zG93Ct3BE/l1gWNjoWtAbdCtC8/XUbclrxLoCZbTAuapgwts2d3sdINbocUwJ5FtNnxdQ==
X-Received: by 2002:a19:8c14:0:b0:50e:1d6a:48d4 with SMTP id o20-20020a198c14000000b0050e1d6a48d4mr765012lfd.122.1706283732888;
        Fri, 26 Jan 2024 07:42:12 -0800 (PST)
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
To: xen-devel@lists.xenproject.org
Cc: Oleksii Kurochko <oleksii.kurochko@gmail.com>,
	Tamas K Lengyel <tamas@tklengyel.com>,
	Alexandru Isaila <aisaila@bitdefender.com>,
	Petre Pircalabu <ppircalabu@bitdefender.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Julien Grall <julien@xen.org>,
	Bertrand Marquis <bertrand.marquis@arm.com>,
	Michal Orzel <michal.orzel@amd.com>,
	Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
	Shawn Anastasio <sanastasio@raptorengineering.com>,
	Jan Beulich <jbeulich@suse.com>
Subject: [PATCH v7 3/7] xen/asm-generic: introduce stub header monitor.h
Date: Fri, 26 Jan 2024 17:42:03 +0200
Message-ID: <da7d16d1ab857e103c1b729d5ee3c9d588e1d3e0.1706281994.git.oleksii.kurochko@gmail.com>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <cover.1706281994.git.oleksii.kurochko@gmail.com>
References: <cover.1706281994.git.oleksii.kurochko@gmail.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

The header is shared between several archs so it is
moved to asm-generic.

Switch partly Arm and PPC to asm-generic/monitor.h and only
arch_monitor_get_capabilities() left in arch-specific/monitor.h.

Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>
Acked-by: Jan Beulich <jbeulich@suse.com>
---
Changes in V7:
 - Drop definition of arch_monitor_domctl_event for PPC.
 - define arch_monitor_domctl_event in asm-generic/monitor.h.
 - add "define HAS_ARCH_MONITOR_DOMCTL_EVENT" in arm/.../monitor.h as it has arch specific implementation.
---
Changes in V6:
 - Rebase only.
---
Changes in V5:
  - Switched partly Arm and PPC to asm-generic monitor.h only
    arch_monitor_get_capabilities() left in arch-specific/monitor.h.
  - Updated the commit message.
---
Changes in V4:
 - Removed the double blank line.
 - Added Acked-by: Jan Beulich <jbeulich@suse.com>.
 - Update the commit message
---
Changes in V3:
 - Use forward-declaration of struct domain instead of " #include <xen/sched.h> ".
 - Add ' include <xen/errno.h> '
 - Drop PPC's monitor.h.
---
Changes in V2:
	- remove inclusion of "+#include <public/domctl.h>"
	- add "struct xen_domctl_monitor_op;"
	- remove one of SPDX tags.
---
 xen/arch/arm/include/asm/monitor.h | 25 +-----------
 xen/arch/ppc/include/asm/monitor.h | 28 +------------
 xen/arch/ppc/stubs.c               |  8 ----
 xen/include/asm-generic/monitor.h  | 64 ++++++++++++++++++++++++++++++
 4 files changed, 67 insertions(+), 58 deletions(-)
 create mode 100644 xen/include/asm-generic/monitor.h

diff --git a/xen/arch/arm/include/asm/monitor.h b/xen/arch/arm/include/asm/monitor.h
index 7567be66bd..77a3c1a36c 100644
--- a/xen/arch/arm/include/asm/monitor.h
+++ b/xen/arch/arm/include/asm/monitor.h
@@ -25,34 +25,13 @@
 #include <xen/sched.h>
 #include <public/domctl.h>
 
-static inline
-void arch_monitor_allow_userspace(struct domain *d, bool allow_userspace)
-{
-}
+#define HAS_ARCH_MONITOR_DOMCTL_EVENT
 
-static inline
-int arch_monitor_domctl_op(struct domain *d, struct xen_domctl_monitor_op *mop)
-{
-    /* No arch-specific monitor ops on ARM. */
-    return -EOPNOTSUPP;
-}
+#include <asm-generic/monitor.h>
 
 int arch_monitor_domctl_event(struct domain *d,
                               struct xen_domctl_monitor_op *mop);
 
-static inline
-int arch_monitor_init_domain(struct domain *d)
-{
-    /* No arch-specific domain initialization on ARM. */
-    return 0;
-}
-
-static inline
-void arch_monitor_cleanup_domain(struct domain *d)
-{
-    /* No arch-specific domain cleanup on ARM. */
-}
-
 static inline uint32_t arch_monitor_get_capabilities(struct domain *d)
 {
     uint32_t capabilities = 0;
diff --git a/xen/arch/ppc/include/asm/monitor.h b/xen/arch/ppc/include/asm/monitor.h
index e5b0282bf1..89000dacc6 100644
--- a/xen/arch/ppc/include/asm/monitor.h
+++ b/xen/arch/ppc/include/asm/monitor.h
@@ -6,33 +6,7 @@
 #include <public/domctl.h>
 #include <xen/errno.h>
 
-static inline
-void arch_monitor_allow_userspace(struct domain *d, bool allow_userspace)
-{
-}
-
-static inline
-int arch_monitor_domctl_op(struct domain *d, struct xen_domctl_monitor_op *mop)
-{
-    /* No arch-specific monitor ops on PPC. */
-    return -EOPNOTSUPP;
-}
-
-int arch_monitor_domctl_event(struct domain *d,
-                              struct xen_domctl_monitor_op *mop);
-
-static inline
-int arch_monitor_init_domain(struct domain *d)
-{
-    /* No arch-specific domain initialization on PPC. */
-    return 0;
-}
-
-static inline
-void arch_monitor_cleanup_domain(struct domain *d)
-{
-    /* No arch-specific domain cleanup on PPC. */
-}
+#include <asm-generic/monitor.h>
 
 static inline uint32_t arch_monitor_get_capabilities(struct domain *d)
 {
diff --git a/xen/arch/ppc/stubs.c b/xen/arch/ppc/stubs.c
index a96e45626d..da193839bd 100644
--- a/xen/arch/ppc/stubs.c
+++ b/xen/arch/ppc/stubs.c
@@ -95,14 +95,6 @@ void arch_get_domain_info(const struct domain *d,
     BUG_ON("unimplemented");
 }
 
-/* monitor.c */
-
-int arch_monitor_domctl_event(struct domain *d,
-                              struct xen_domctl_monitor_op *mop)
-{
-    BUG_ON("unimplemented");
-}
-
 /* smp.c */
 
 void arch_flush_tlb_mask(const cpumask_t *mask)
diff --git a/xen/include/asm-generic/monitor.h b/xen/include/asm-generic/monitor.h
new file mode 100644
index 0000000000..1ade289099
--- /dev/null
+++ b/xen/include/asm-generic/monitor.h
@@ -0,0 +1,64 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+/*
+ * include/asm-generic/monitor.h
+ *
+ * Arch-specific monitor_op domctl handler.
+ *
+ * Copyright (c) 2015 Tamas K Lengyel (tamas@tklengyel.com)
+ * Copyright (c) 2016, Bitdefender S.R.L.
+ *
+ */
+
+#ifndef __ASM_GENERIC_MONITOR_H__
+#define __ASM_GENERIC_MONITOR_H__
+
+#include <xen/errno.h>
+#include <xen/lib.h>
+
+struct domain;
+struct xen_domctl_monitor_op;
+
+static inline
+void arch_monitor_allow_userspace(struct domain *d, bool allow_userspace)
+{
+}
+
+static inline
+int arch_monitor_domctl_op(struct domain *d, struct xen_domctl_monitor_op *mop)
+{
+    /* No arch-specific monitor ops on GENERIC. */
+    return -EOPNOTSUPP;
+}
+
+#ifndef HAS_ARCH_MONITOR_DOMCTL_EVENT
+static inline
+int arch_monitor_domctl_event(struct domain *d,
+                              struct xen_domctl_monitor_op *mop)
+{
+    BUG_ON("unimplemented");
+}
+#endif
+
+static inline
+int arch_monitor_init_domain(struct domain *d)
+{
+    /* No arch-specific domain initialization on GENERIC. */
+    return 0;
+}
+
+static inline
+void arch_monitor_cleanup_domain(struct domain *d)
+{
+    /* No arch-specific domain cleanup on GENERIC. */
+}
+
+#endif /* __ASM_GENERIC_MONITOR_H__ */
+
+/*
+ * Local variables:
+ * mode: C
+ * c-file-style: BSD
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Fri Jan 26 15:42:19 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 26 Jan 2024 15:42:19 +0000
Received: from list by lists.xenproject.org with outflank-mailman.672089.1045753 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTOLO-0002lj-CE; Fri, 26 Jan 2024 15:42:14 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 672089.1045753; Fri, 26 Jan 2024 15:42:14 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTOLO-0002lc-8s; Fri, 26 Jan 2024 15:42:14 +0000
Received: by outflank-mailman (input) for mailman id 672089;
 Fri, 26 Jan 2024 15:42:13 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=DqdW=JE=gmail.com=oleksii.kurochko@srs-se1.protection.inumbo.net>)
 id 1rTOLM-0002k9-Tj
 for xen-devel@lists.xenproject.org; Fri, 26 Jan 2024 15:42:12 +0000
Received: from mail-lf1-x12f.google.com (mail-lf1-x12f.google.com
 [2a00:1450:4864:20::12f])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 78b3e608-bc61-11ee-8a43-1f161083a0e0;
 Fri, 26 Jan 2024 16:42:11 +0100 (CET)
Received: by mail-lf1-x12f.google.com with SMTP id
 2adb3069b0e04-51025cafb51so798371e87.2
 for <xen-devel@lists.xenproject.org>; Fri, 26 Jan 2024 07:42:11 -0800 (PST)
Received: from fedora.. ([94.75.70.14]) by smtp.gmail.com with ESMTPSA id
 q5-20020ac25105000000b0050e7ec49881sm208351lfb.21.2024.01.26.07.42.10
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Fri, 26 Jan 2024 07:42:10 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 78b3e608-bc61-11ee-8a43-1f161083a0e0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1706283731; x=1706888531; darn=lists.xenproject.org;
        h=content-transfer-encoding:mime-version:message-id:date:subject:cc
         :to:from:from:to:cc:subject:date:message-id:reply-to;
        bh=NVBkI04VCHtY+BjWYOuLlcsihydzSeVqGac1GglpNUk=;
        b=HSpOc6ffqh0GL+CgEcqfQF9YhLAdrUhUhnWmFrjdBQEoQjuStJYaro1TISd7vyVw54
         dmCWbT26oDiyxhOYfi1XAhNNzeAQ+y8VadYcwlpcNWNCVPsnCWqBll014IS9pvam4Aq2
         FHAYfAXx7g9DpjQCA4kZmq1nkhZX9PZU45iGdd4e4ReOAantPg6twKnTLVup1B+n5pKO
         FlnT3QxCpw733nVXmUsj4D4qmIdueS1nFlw/S00+CpVAzTkIoWKv05meX2yt/quXzpjr
         HF77NCN+82IwqaBe0ChckmgBq0NclkLnfCTytm8LNr2FFh18KddonLtGfwLwdmTnDbs3
         YXig==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706283731; x=1706888531;
        h=content-transfer-encoding:mime-version:message-id:date:subject:cc
         :to:from:x-gm-message-state:from:to:cc:subject:date:message-id
         :reply-to;
        bh=NVBkI04VCHtY+BjWYOuLlcsihydzSeVqGac1GglpNUk=;
        b=uCl+dOsTwEi5pxbX0N7La1jMYeSr8T2/cby25JEhX/6PQ7ETehlnBfNEaM2B7wlxm2
         ExMfAXoJ170B4EIJUie+MIHMOsAbFlhW9yniKtShxi+Wm3aZw5X1D5X0GzzUhCMCpBOF
         E3fv/A/uZ7d0s4E8DJGuVBSL/arLCPBDQKaJwcje9vh5iKLCigbxKeEewwze4ZxWceeA
         TtxwYS19SNVDq0To71XMOfo4fPJns4T4hzONV0xwpYHHVN8BLVyw2bn1Kg2n/DpNeGKK
         5o62uQeyAVRIxhdg2AR/70RHmMptgpy7XT4s2D7sx5xlcPyzWlIsAgMPej6nG3cMjd+6
         BD4g==
X-Gm-Message-State: AOJu0YxkVIFLbGCw/CPqiSDmovPST//wJeK2UDpylG8G8JC/XRgv08RV
	K7hPXW2vy0x7IoMObhOFoU/3ZNrBpm/vUM+E13pqdc19RcLJFGPzQO24VlAS
X-Google-Smtp-Source: AGHT+IH6B7uxFwctX6Ms1Hjoj3ZpOH+Arws05ZOYwWPBS1Cf4jUxNqO1vxEZM29T7iz1HGGGGoDkvA==
X-Received: by 2002:a05:6512:e99:b0:50e:6032:984b with SMTP id bi25-20020a0565120e9900b0050e6032984bmr1096838lfb.110.1706283730958;
        Fri, 26 Jan 2024 07:42:10 -0800 (PST)
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
To: xen-devel@lists.xenproject.org
Cc: Oleksii Kurochko <oleksii.kurochko@gmail.com>,
	Doug Goldstein <cardoe@cardoe.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Tamas K Lengyel <tamas@tklengyel.com>,
	Alexandru Isaila <aisaila@bitdefender.com>,
	Petre Pircalabu <ppircalabu@bitdefender.com>,
	Julien Grall <julien@xen.org>,
	Bertrand Marquis <bertrand.marquis@arm.com>,
	Michal Orzel <michal.orzel@amd.com>,
	Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
	Shawn Anastasio <sanastasio@raptorengineering.com>,
	Alistair Francis <alistair.francis@wdc.com>,
	Bob Eshleman <bobbyeshleman@gmail.com>,
	Connor Davis <connojdavis@gmail.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	George Dunlap <george.dunlap@citrix.com>,
	Jan Beulich <jbeulich@suse.com>,
	Wei Liu <wl@xen.org>
Subject: [PATCH v7 0/7] Introduce generic headers
Date: Fri, 26 Jan 2024 17:42:00 +0200
Message-ID: <cover.1706281994.git.oleksii.kurochko@gmail.com>
X-Mailer: git-send-email 2.43.0
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Some headers are common between several architectures, so the current patch series
provide them.

Another one reason to have them as generic is a simplification of adding support
necessary to make a complete Xen build as it was/is being done in the patch series [1]
and [2].

Also, instead of providing generic/stub headers, it was used
"#ifdef CONFIG_* #include <asm/*.h> #endif" instead of providing empty headers.

This patch series is a pre-requisite for "Enable build of full Xen for RISC-V" [3].

[1] https://lore.kernel.org/xen-devel/cover.1694543103.git.sanastasio@raptorengineering.com/
[2] https://lore.kernel.org/xen-devel/cover.1692181079.git.oleksii.kurochko@gmail.com/
[3] https://lore.kernel.org/xen-devel/cover.1700761381.git.oleksii.kurochko@gmail.com/
---
Changes in V7:
 - The following patches were dropped because of rebasing as they were merged
   to staging:
   - [PATCH v6 3/9] xen/asm-generic: introduce generic div64.h header
   - [PATCH v6 6/9] xen/asm-generic: introduce stub header softirq.h
   - [PATCH v6 7/9] xen: ifdef inclusion of <asm/grant_table.h> in <xen/grant_table.h>
   - [PATCH v6 8/9] xen/asm-generic: ifdef inclusion of <asm/mem_access.h>
- [PATCH v6 5/9] xen/asm-generic: introduce stub header numa.h was dropped becaus of
  the patch: "[PATCH v2] NUMA: no need for asm/numa.h when !NUMA"
- Drop definition of arch_monitor_domctl_event for PPC.
- define arch_monitor_domctl_event in asm-generic/monitor.h.
- Add "define HAS_ARCH_MONITOR_DOMCTL_EVENT" in arm/.../monitor.h as it has arch
  specific implementation.
- keeping DEVICE_PCI_HOSTBRIDGE available for every build based on the reply:
    https://lore.kernel.org/xen-devel/926a5c12-7f02-42ec-92a8-1c82d060c710@xen.org/
- add comment above enum device_type.h with explanation about DEV_TYPE_MAX.        
- drop #ifdef HAS_PCI around "(device_get_class(dev) == DEVICE_PCI_HOSTBRIDGE))" in ARM code.
- separate patch  "[PATCH v6 9/9] xen/asm-generic: introduce generic device.h" into 3 patches.
---
Changes in V6:
 - Fix the build script to work properly with EXTRA_FIXED_RANDCONFIG.
 - Introduce separate randconfig yaml with fixed configs for RISC-V.
 - Disable CONFIG_GRANT_TABLE and CONFIG_MEM_ACCESS for PPC and RISC-V.
 - Remove change in Kconfig/common for CONFIG_GRANT_TABLE and CONFIG_MEM_ACCESS.
 - Rebase on top of the latest staging. 
---
Changes in V5:
 - Update the patch series message as patch related to delay.h was merged.
 - Rebase on top of staging because half of the patches of the patch series were
   merged to staging branch.
 - Add A-by for some of the patches.
 - Add "depends on X86 || Arm" for CONFIG_GRANT_TABLE and CONFIG_MEM_ACCESS to be
   sure it won't be turned on by randconfig in CI.
 - Partly switch Arm and PPC to asm-generic/monitor.h.
 - Some other minor changes
---
Changes in V4:
 - Update the cover letter message
 - Add Reviewed-by/Acked-by for patches:
    [PATCH v3 01/14] xen/asm-generic: introduce stub header paging.h
    [PATCH v3 03/14] xen/asm-generic: introduce generic hypercall.h
    [PATCH v3 04/14] xen/asm-generic: introduce generic header iocap.h
    [PATCH v3 05/14] xen/asm-generic: introduce stub header <asm/random.h>
    [PATCH v3 06/14] xen/asm-generic: introduce generic header percpu.h
    [PATCH v3 07/14] xen/asm-generic: introduce generalized hardirq.h
    [PATCH v3 08/14] xen/asm-generic: introduce generic div64.h header
    [PATCH v3 09/14] xen/asm-generic: introduce generic header altp2m.h
    [PATCH v3 10/14] xen/asm-generic: introduce stub header monitor.h
    [PATCH v3 11/14] xen/asm-generic: introduce stub header numa.h
    [PATCH v3 12/14] xen/asm-generic: introduce stub header softirq.h
 - Fix some code style and minor issues.
 - Use asm-generic version of device.h for Arm and PPC.
---
Changes in V3:
 - Update the commit message of the cover letter.
 - Drop the following patch as it can be arch-specific enough:
   * [PATCH v2 09/15] xen/asm-generic: introduce generic header smp.h
 - Drop correspondent arch specific headers and use asm-generic version of
   a header.
 - Back to the patch series patches:
   * xen: ifdef inclusion of <asm/grant_table.h> in <xen/grant_table.h>
   * xen/asm-generic: ifdef inclusion of <asm/mem_access.h>
---
Changes in V2:
 - Update the commit message of the cover letter.
 - Drop the following patches because they are arch-specific or was sent as a separate patch:
   - xen/asm-generic: introduce stub header event.h
	 - xen/asm-generic: introduce stub header spinlock.h
	 - [PATCH v1 03/29] xen/asm-generic: introduce stub header cpufeature.h
	 - [PATCH v1 07/29] xen/asm-generic: introduce stub header guest_atomics.h
	 - [PATCH v1 10/29] xen/asm-generic: introduce stub header iommu.h
	 - [PATCH v1 12/29] xen/asm-generic: introduce stub header pci.h because separate patch was sent [5]
	 - [PATCH v1 14/29] xen/asm-generic: introduce stub header setup.h
	 - [PATCH v1 15/29] xen/asm-generic: introduce stub header xenoprof.h because of [3].
	 - [PATCH v1 16/29] xen/asm-generic: introduce stub header flushtlb.h
	 - [PATCH v1 22/29] xen/asm-generic: introduce stub header delay.h because of [3]
	 - [PATCH v1 23/29] xen/asm-generic: introduce stub header domain.h
	 - [PATCH v1 24/29] xen/asm-generic: introduce stub header guest_access.h
	 - [PATCH v1 25/29] xen/asm-generic: introduce stub header irq.h ( probably not so generic as I expected, I'll back to it if it will be necessary in the future )
	 - [PATCH v1 28/29] xen/asm-generic: introduce stub header p2m.h ( probably not so generic as I expected, I'll back to it if it will be necessary in the future )
 - For the rest of the patches please look at changes for each patch separately.
---
Oleksii Kurochko (7):
  automation: ensure values in EXTRA_FIXED_RANDCONFIG are separated by
    new line
  automation: introduce fixed randconfig for RISC-V
  xen/asm-generic: introduce stub header monitor.h
  xen/asm-generic: ifdef inclusion of <asm/mem_access.h>
  xen/asm-generic: introduce generic device.h
  xen/arm: switch Arm to use asm-generic/device.h
  xen/ppc: switch PPC to use asm-generic/device.h

 automation/gitlab-ci/build.yaml               |   8 +-
 .../gitlab-ci/riscv-fixed-randconfig.yaml     |   7 +
 automation/scripts/build                      |   6 +-
 xen/arch/arm/device.c                         |   5 +
 xen/arch/arm/domain_build.c                   |   2 +-
 xen/arch/arm/gic-v2.c                         |   4 +-
 xen/arch/arm/gic-v3.c                         |   6 +-
 xen/arch/arm/gic.c                            |   4 +-
 xen/arch/arm/include/asm/Makefile             |   1 +
 xen/arch/arm/include/asm/monitor.h            |  25 +---
 xen/arch/arm/p2m.c                            |   1 +
 xen/arch/arm/traps.c                          |   1 +
 xen/arch/ppc/configs/ppc64_defconfig          |   1 +
 xen/arch/ppc/include/asm/Makefile             |   1 +
 xen/arch/ppc/include/asm/device.h             |  53 --------
 xen/arch/ppc/include/asm/mem_access.h         |   5 -
 xen/arch/ppc/include/asm/monitor.h            |  28 +---
 xen/arch/ppc/stubs.c                          |   8 --
 xen/arch/riscv/configs/tiny64_defconfig       |   1 +
 .../asm => include/asm-generic}/device.h      | 128 ++++++++++++------
 xen/include/asm-generic/monitor.h             |  64 +++++++++
 xen/include/xen/mem_access.h                  |   2 +
 22 files changed, 186 insertions(+), 175 deletions(-)
 create mode 100644 automation/gitlab-ci/riscv-fixed-randconfig.yaml
 delete mode 100644 xen/arch/ppc/include/asm/device.h
 delete mode 100644 xen/arch/ppc/include/asm/mem_access.h
 rename xen/{arch/arm/include/asm => include/asm-generic}/device.h (76%)
 create mode 100644 xen/include/asm-generic/monitor.h

-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Fri Jan 26 15:42:19 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 26 Jan 2024 15:42:19 +0000
Received: from list by lists.xenproject.org with outflank-mailman.672095.1045812 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTOLT-0004Bq-Gu; Fri, 26 Jan 2024 15:42:19 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 672095.1045812; Fri, 26 Jan 2024 15:42:19 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTOLT-0004Al-96; Fri, 26 Jan 2024 15:42:19 +0000
Received: by outflank-mailman (input) for mailman id 672095;
 Fri, 26 Jan 2024 15:42:18 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=DqdW=JE=gmail.com=oleksii.kurochko@srs-se1.protection.inumbo.net>)
 id 1rTOLS-00039n-2f
 for xen-devel@lists.xenproject.org; Fri, 26 Jan 2024 15:42:18 +0000
Received: from mail-lf1-x12f.google.com (mail-lf1-x12f.google.com
 [2a00:1450:4864:20::12f])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 7b6c9df7-bc61-11ee-98f5-efadbce2ee36;
 Fri, 26 Jan 2024 16:42:16 +0100 (CET)
Received: by mail-lf1-x12f.google.com with SMTP id
 2adb3069b0e04-5100ed2b33dso1253461e87.0
 for <xen-devel@lists.xenproject.org>; Fri, 26 Jan 2024 07:42:16 -0800 (PST)
Received: from fedora.. ([94.75.70.14]) by smtp.gmail.com with ESMTPSA id
 q5-20020ac25105000000b0050e7ec49881sm208351lfb.21.2024.01.26.07.42.14
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Fri, 26 Jan 2024 07:42:15 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 7b6c9df7-bc61-11ee-98f5-efadbce2ee36
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1706283736; x=1706888536; darn=lists.xenproject.org;
        h=content-transfer-encoding:mime-version:references:in-reply-to
         :message-id:date:subject:cc:to:from:from:to:cc:subject:date
         :message-id:reply-to;
        bh=9CoC0jYDEb7IzuBO+LTtL41X0IwHwYGfKM4uqjQc6J8=;
        b=ANe1mH2TQ7652+hfoPSK64RggTlI00leWyujtAMlVk7aGlENV2y4iNCJIuepjjdVeU
         c7t/uz6OGyUACRY28HDvrc9l8HzkfOIbNKW89fcb0y2rjQw1VUH6Ry/aa2ZHu+KFsTjl
         XaufhD74BZVGaev/r42K985UDCNiQhEkNs+KeabLXm2GCjj74PUqT+ph5PftGE85ZoWm
         uYr+qvM1uGt9i56UPuSR+d3NgpBBJduKv9H6I83ButZmofeg8ePkz5cyvVEN7AUzpMaL
         Wdc+o4E98FCoNb3pPiLVWEtkbBfPaIaywAEtJhNLrwCwYruFuZpibGMnw2sHdNPkJT5V
         N4Bw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706283736; x=1706888536;
        h=content-transfer-encoding:mime-version:references:in-reply-to
         :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to;
        bh=9CoC0jYDEb7IzuBO+LTtL41X0IwHwYGfKM4uqjQc6J8=;
        b=JFDdA33AJgnI9ffPDSXRpXRTTcQerxUPUtW0A+C2R4HJqgM26z3HVatsqmYWBDQcHE
         VJy0KoGrGuMqOsv091hKwuqBGhXbQI4UGb1y45qvYta/o6kZlYJwBkr/dbZN2t9Jb5MZ
         Nj2y//2BehQ96uMsUVfklnghm05y1KrEiBg5vx+Dk1eOuAincj/74wyRv03bnD3+/Ena
         /S5eIRlSKWbQdHN7nU1ww1IjvM728AKxkRPEal3nQ5iVkJGvXBDuaGjYEZaWfZeMESjz
         I2OQ5o0BywT7jQcOAnSP6elAr56S9wbWnK6lb6u1NEE5TNHw4bOxU1BZ5eRLKBprIDKb
         u65g==
X-Gm-Message-State: AOJu0Yxzs6JjwwImffUKP+AObwvX8V5Rm9DM2WJ70rLdhXesRDjX4YwG
	6hhBz3baCbt/mbCk8w5OBTofLaEi5xyH0yT8ds+NlwP1Dn8tGrpL53WeKivs
X-Google-Smtp-Source: AGHT+IHjD4GEuhO7ompOdwR9Fd6BoQjwV+WsrEoI/sNz6GEohRlCZPloaxtjJeShIRWVokLGuvgn/g==
X-Received: by 2002:a19:f816:0:b0:510:c4a:a02d with SMTP id a22-20020a19f816000000b005100c4aa02dmr810864lff.122.1706283735722;
        Fri, 26 Jan 2024 07:42:15 -0800 (PST)
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
To: xen-devel@lists.xenproject.org
Cc: Oleksii Kurochko <oleksii.kurochko@gmail.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Julien Grall <julien@xen.org>,
	Bertrand Marquis <bertrand.marquis@arm.com>,
	Michal Orzel <michal.orzel@amd.com>,
	Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>
Subject: [PATCH v7 6/7] xen/arm: switch Arm to use asm-generic/device.h
Date: Fri, 26 Jan 2024 17:42:06 +0200
Message-ID: <d5d2b0515516f0554a0532ff4d4fbd9c704e0a1b.1706281994.git.oleksii.kurochko@gmail.com>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <cover.1706281994.git.oleksii.kurochko@gmail.com>
References: <cover.1706281994.git.oleksii.kurochko@gmail.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>
---
 xen/arch/arm/device.c             |   5 ++
 xen/arch/arm/domain_build.c       |   2 +-
 xen/arch/arm/gic-v2.c             |   4 +-
 xen/arch/arm/gic-v3.c             |   6 +-
 xen/arch/arm/gic.c                |   4 +-
 xen/arch/arm/include/asm/Makefile |   1 +
 xen/arch/arm/include/asm/device.h | 124 ------------------------------
 7 files changed, 14 insertions(+), 132 deletions(-)
 delete mode 100644 xen/arch/arm/include/asm/device.h

diff --git a/xen/arch/arm/device.c b/xen/arch/arm/device.c
index 1f631d3274..3e02cff008 100644
--- a/xen/arch/arm/device.c
+++ b/xen/arch/arm/device.c
@@ -16,7 +16,10 @@
 #include <xen/lib.h>
 
 extern const struct device_desc _sdevice[], _edevice[];
+
+#ifdef CONFIG_ACPI
 extern const struct acpi_device_desc _asdevice[], _aedevice[];
+#endif
 
 int __init device_init(struct dt_device_node *dev, enum device_class class,
                        const void *data)
@@ -45,6 +48,7 @@ int __init device_init(struct dt_device_node *dev, enum device_class class,
     return -EBADF;
 }
 
+#ifdef CONFIG_ACPI
 int __init acpi_device_init(enum device_class class, const void *data, int class_type)
 {
     const struct acpi_device_desc *desc;
@@ -61,6 +65,7 @@ int __init acpi_device_init(enum device_class class, const void *data, int class
 
     return -EBADF;
 }
+#endif
 
 enum device_class device_get_class(const struct dt_device_node *dev)
 {
diff --git a/xen/arch/arm/domain_build.c b/xen/arch/arm/domain_build.c
index 46161848dc..085d88671e 100644
--- a/xen/arch/arm/domain_build.c
+++ b/xen/arch/arm/domain_build.c
@@ -1651,7 +1651,7 @@ static int __init handle_node(struct domain *d, struct kernel_info *kinfo,
      * Replace these nodes with our own. Note that the original may be
      * used_by DOMID_XEN so this check comes first.
      */
-    if ( device_get_class(node) == DEVICE_GIC )
+    if ( device_get_class(node) == DEVICE_INTERRUPT_CONTROLLER )
         return make_gic_node(d, kinfo->fdt, node);
     if ( dt_match_node(timer_matches, node) )
         return make_timer_node(kinfo);
diff --git a/xen/arch/arm/gic-v2.c b/xen/arch/arm/gic-v2.c
index cf392bfd1c..5d6885e389 100644
--- a/xen/arch/arm/gic-v2.c
+++ b/xen/arch/arm/gic-v2.c
@@ -1366,7 +1366,7 @@ static const struct dt_device_match gicv2_dt_match[] __initconst =
     { /* sentinel */ },
 };
 
-DT_DEVICE_START(gicv2, "GICv2", DEVICE_GIC)
+DT_DEVICE_START(gicv2, "GICv2", DEVICE_INTERRUPT_CONTROLLER)
         .dt_match = gicv2_dt_match,
         .init = gicv2_dt_preinit,
 DT_DEVICE_END
@@ -1381,7 +1381,7 @@ static int __init gicv2_acpi_preinit(const void *data)
     return 0;
 }
 
-ACPI_DEVICE_START(agicv2, "GICv2", DEVICE_GIC)
+ACPI_DEVICE_START(agicv2, "GICv2", DEVICE_INTERRUPT_CONTROLLER)
         .class_type = ACPI_MADT_GIC_VERSION_V2,
         .init = gicv2_acpi_preinit,
 ACPI_DEVICE_END
diff --git a/xen/arch/arm/gic-v3.c b/xen/arch/arm/gic-v3.c
index bf0e5c1b75..1cb1360606 100644
--- a/xen/arch/arm/gic-v3.c
+++ b/xen/arch/arm/gic-v3.c
@@ -1909,7 +1909,7 @@ static const struct dt_device_match gicv3_dt_match[] __initconst =
     { /* sentinel */ },
 };
 
-DT_DEVICE_START(gicv3, "GICv3", DEVICE_GIC)
+DT_DEVICE_START(gicv3, "GICv3", DEVICE_INTERRUPT_CONTROLLER)
         .dt_match = gicv3_dt_match,
         .init = gicv3_dt_preinit,
 DT_DEVICE_END
@@ -1924,12 +1924,12 @@ static int __init gicv3_acpi_preinit(const void *data)
     return 0;
 }
 
-ACPI_DEVICE_START(agicv3, "GICv3", DEVICE_GIC)
+ACPI_DEVICE_START(agicv3, "GICv3", DEVICE_INTERRUPT_CONTROLLER)
         .class_type = ACPI_MADT_GIC_VERSION_V3,
         .init = gicv3_acpi_preinit,
 ACPI_DEVICE_END
 
-ACPI_DEVICE_START(agicv4, "GICv4", DEVICE_GIC)
+ACPI_DEVICE_START(agicv4, "GICv4", DEVICE_INTERRUPT_CONTROLLER)
         .class_type = ACPI_MADT_GIC_VERSION_V4,
         .init = gicv3_acpi_preinit,
 ACPI_DEVICE_END
diff --git a/xen/arch/arm/gic.c b/xen/arch/arm/gic.c
index d922ea67aa..b5a9c8266c 100644
--- a/xen/arch/arm/gic.c
+++ b/xen/arch/arm/gic.c
@@ -234,7 +234,7 @@ static void __init gic_dt_preinit(void)
         if ( !dt_get_parent(node) )
             continue;
 
-        rc = device_init(node, DEVICE_GIC, NULL);
+        rc = device_init(node, DEVICE_INTERRUPT_CONTROLLER, NULL);
         if ( !rc )
         {
             /* NOTE: Only one GIC is supported */
@@ -262,7 +262,7 @@ static void __init gic_acpi_preinit(void)
 
     dist = container_of(header, struct acpi_madt_generic_distributor, header);
 
-    if ( acpi_device_init(DEVICE_GIC, NULL, dist->version) )
+    if ( acpi_device_init(DEVICE_INTERRUPT_CONTROLLER, NULL, dist->version) )
         panic("Unable to find compatible GIC in the ACPI table\n");
 }
 #else
diff --git a/xen/arch/arm/include/asm/Makefile b/xen/arch/arm/include/asm/Makefile
index 505cb49090..4a4036c951 100644
--- a/xen/arch/arm/include/asm/Makefile
+++ b/xen/arch/arm/include/asm/Makefile
@@ -1,5 +1,6 @@
 # SPDX-License-Identifier: GPL-2.0-only
 generic-y += altp2m.h
+generic-y += device.h
 generic-y += hardirq.h
 generic-y += iocap.h
 generic-y += paging.h
diff --git a/xen/arch/arm/include/asm/device.h b/xen/arch/arm/include/asm/device.h
deleted file mode 100644
index b5d451e087..0000000000
--- a/xen/arch/arm/include/asm/device.h
+++ /dev/null
@@ -1,124 +0,0 @@
-#ifndef __ASM_ARM_DEVICE_H
-#define __ASM_ARM_DEVICE_H
-
-enum device_type
-{
-    DEV_DT,
-    DEV_PCI,
-};
-
-struct dev_archdata {
-    void *iommu;    /* IOMMU private data */
-};
-
-/* struct device - The basic device structure */
-struct device
-{
-    enum device_type type;
-#ifdef CONFIG_HAS_DEVICE_TREE
-    struct dt_device_node *of_node; /* Used by drivers imported from Linux */
-#endif
-    struct dev_archdata archdata;
-    struct iommu_fwspec *iommu_fwspec; /* per-device IOMMU instance data */
-};
-
-typedef struct device device_t;
-
-#include <xen/device_tree.h>
-
-#define dev_is_pci(dev) ((dev)->type == DEV_PCI)
-#define dev_is_dt(dev)  ((dev)->type == DEV_DT)
-
-enum device_class
-{
-    DEVICE_SERIAL,
-    DEVICE_IOMMU,
-    DEVICE_GIC,
-    DEVICE_PCI_HOSTBRIDGE,
-    /* Use for error */
-    DEVICE_UNKNOWN,
-};
-
-struct device_desc {
-    /* Device name */
-    const char *name;
-    /* Device class */
-    enum device_class class;
-    /* List of devices supported by this driver */
-    const struct dt_device_match *dt_match;
-    /*
-     * Device initialization.
-     *
-     * -EAGAIN is used to indicate that device probing is deferred.
-     */
-    int (*init)(struct dt_device_node *dev, const void *data);
-};
-
-struct acpi_device_desc {
-    /* Device name */
-    const char *name;
-    /* Device class */
-    enum device_class class;
-    /* type of device supported by the driver */
-    const int class_type;
-    /* Device initialization */
-    int (*init)(const void *data);
-};
-
-/**
- *  acpi_device_init - Initialize a device
- *  @class: class of the device (serial, network...)
- *  @data: specific data for initializing the device
- *
- *  Return 0 on success.
- */
-int acpi_device_init(enum device_class class,
-                     const void *data, int class_type);
-
-/**
- *  device_init - Initialize a device
- *  @dev: device to initialize
- *  @class: class of the device (serial, network...)
- *  @data: specific data for initializing the device
- *
- *  Return 0 on success.
- */
-int device_init(struct dt_device_node *dev, enum device_class class,
-                const void *data);
-
-/**
- * device_get_type - Get the type of the device
- * @dev: device to match
- *
- * Return the device type on success or DEVICE_ANY on failure
- */
-enum device_class device_get_class(const struct dt_device_node *dev);
-
-#define DT_DEVICE_START(_name, _namestr, _class)                    \
-static const struct device_desc __dev_desc_##_name __used           \
-__section(".dev.info") = {                                          \
-    .name = _namestr,                                               \
-    .class = _class,                                                \
-
-#define DT_DEVICE_END                                               \
-};
-
-#define ACPI_DEVICE_START(_name, _namestr, _class)                    \
-static const struct acpi_device_desc __dev_desc_##_name __used           \
-__section(".adev.info") = {                       \
-    .name = _namestr,                                               \
-    .class = _class,                                                \
-
-#define ACPI_DEVICE_END                                               \
-};
-
-#endif /* __ASM_ARM_DEVICE_H */
-
-/*
- * Local variables:
- * mode: C
- * c-file-style: "BSD"
- * c-basic-offset: 4
- * indent-tabs-mode: nil
- * End:
- */
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Fri Jan 26 15:42:20 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 26 Jan 2024 15:42:20 +0000
Received: from list by lists.xenproject.org with outflank-mailman.672096.1045822 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTOLU-0004VB-M9; Fri, 26 Jan 2024 15:42:20 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 672096.1045822; Fri, 26 Jan 2024 15:42:20 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTOLU-0004Uk-HH; Fri, 26 Jan 2024 15:42:20 +0000
Received: by outflank-mailman (input) for mailman id 672096;
 Fri, 26 Jan 2024 15:42:18 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=DqdW=JE=gmail.com=oleksii.kurochko@srs-se1.protection.inumbo.net>)
 id 1rTOLS-00039n-OJ
 for xen-devel@lists.xenproject.org; Fri, 26 Jan 2024 15:42:18 +0000
Received: from mail-lf1-x12b.google.com (mail-lf1-x12b.google.com
 [2a00:1450:4864:20::12b])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 7be94dd4-bc61-11ee-98f5-efadbce2ee36;
 Fri, 26 Jan 2024 16:42:17 +0100 (CET)
Received: by mail-lf1-x12b.google.com with SMTP id
 2adb3069b0e04-51028acdcf0so586918e87.0
 for <xen-devel@lists.xenproject.org>; Fri, 26 Jan 2024 07:42:17 -0800 (PST)
Received: from fedora.. ([94.75.70.14]) by smtp.gmail.com with ESMTPSA id
 q5-20020ac25105000000b0050e7ec49881sm208351lfb.21.2024.01.26.07.42.15
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Fri, 26 Jan 2024 07:42:16 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 7be94dd4-bc61-11ee-98f5-efadbce2ee36
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1706283736; x=1706888536; darn=lists.xenproject.org;
        h=content-transfer-encoding:mime-version:references:in-reply-to
         :message-id:date:subject:cc:to:from:from:to:cc:subject:date
         :message-id:reply-to;
        bh=oxncQDdI2JsFCsulM3gJxCAV4/X4oGnUu68SW6S52Lw=;
        b=Oi2pM2om6OLkLP621uCBSz9SMXLAGEF8BSGBrcL/NouvLd+Nd4oG3zi0WnORQ6LH70
         PV7eXNx5agSUytgwllKcJro/bGvnVMHeADLhsHsG8FUGIOvBcWx6I+8QwfAStLuLAURV
         U0/I5Yrnm7JYeF+P7HMpyEFzlcWpSeEX9IijlrPWSJRHZTkd0G23OoWJ+QQ+dOTACReT
         VPHmBSxWheNJa4ELbEcR6PKYYqyYY2JjCmu8ZtwuJGEizby2XDmoF4A/GISeLuev9NP+
         fTY+x7fXWyfvWwfPbYIrJ26bdpdcqS1MF/XLvsUrx2w0MmvMP94qEEkp9WH/dnfl6zRZ
         NTPA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706283736; x=1706888536;
        h=content-transfer-encoding:mime-version:references:in-reply-to
         :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to;
        bh=oxncQDdI2JsFCsulM3gJxCAV4/X4oGnUu68SW6S52Lw=;
        b=Y3KvSrzKiReYp4KGF3Zv7pTPAZHI/Hzj6gmmhyA5ifCjZN6g+8aopdFa8pKZP14xh6
         lTDyxR6DRbtAoNklbVkFjIM+JjtRbtZ20UszeFFTyURVsWDuH8A0PTh8c3uhgR+lDNjd
         HlTmTVwgGCwsW2jT1N86IM0u3hn6F+RIByqBRHlxGJJM6ZC368tGJ3nskVP/R+M8Xvwe
         fRYcBg6swKxq9XyxejaGRT4Hx7itaV+itQAQPIvZw0VaHMcNLuiSH+cSay37kZL9HrPG
         H4prVFDMZFhOEiKySQB/uJZr3XIBlzON80oScw35FeAnwA0g6YFnfzR8IVvrcGgYWPi3
         ELhg==
X-Gm-Message-State: AOJu0YwEV8LnyoNdmCVT2YIXNJvKE86J1z4bXZ6KeOGrtoFXkbwUL+Ni
	Ih0d1pGqzpaV7zXKO++zxacJsLDJb+cbb7wHksBdYiyTHzgom0wLiXt/uNDO
X-Google-Smtp-Source: AGHT+IEPm2wvGXW/m2TZujtontsPVNGD00z83SjsYXEflB16DV3EwQopzspD4Uir5bnYihScvnAzAA==
X-Received: by 2002:a05:6512:4026:b0:50b:ea8e:b42c with SMTP id br38-20020a056512402600b0050bea8eb42cmr951242lfb.97.1706283736575;
        Fri, 26 Jan 2024 07:42:16 -0800 (PST)
From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
To: xen-devel@lists.xenproject.org
Cc: Oleksii Kurochko <oleksii.kurochko@gmail.com>,
	Shawn Anastasio <sanastasio@raptorengineering.com>
Subject: [PATCH v7 7/7] xen/ppc: switch PPC to use asm-generic/device.h
Date: Fri, 26 Jan 2024 17:42:07 +0200
Message-ID: <216d88fefb56f0147b5796a3a0327bdaae8b0eb2.1706281994.git.oleksii.kurochko@gmail.com>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <cover.1706281994.git.oleksii.kurochko@gmail.com>
References: <cover.1706281994.git.oleksii.kurochko@gmail.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>
---
Changes in V7:
 - newly introduced patch which is based on the previous version of the patch:
     [PATCH v6 9/9] xen/asm-generic: introduce generic device.h
---
 xen/arch/ppc/include/asm/Makefile |  1 +
 xen/arch/ppc/include/asm/device.h | 53 -------------------------------
 2 files changed, 1 insertion(+), 53 deletions(-)
 delete mode 100644 xen/arch/ppc/include/asm/device.h

diff --git a/xen/arch/ppc/include/asm/Makefile b/xen/arch/ppc/include/asm/Makefile
index 3fd893f3e0..ced02e26ed 100644
--- a/xen/arch/ppc/include/asm/Makefile
+++ b/xen/arch/ppc/include/asm/Makefile
@@ -1,5 +1,6 @@
 # SPDX-License-Identifier: GPL-2.0-only
 generic-y += altp2m.h
+generic-y += device.h
 generic-y += div64.h
 generic-y += hardirq.h
 generic-y += hypercall.h
diff --git a/xen/arch/ppc/include/asm/device.h b/xen/arch/ppc/include/asm/device.h
deleted file mode 100644
index 8253e61d51..0000000000
--- a/xen/arch/ppc/include/asm/device.h
+++ /dev/null
@@ -1,53 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0-only */
-#ifndef __ASM_PPC_DEVICE_H__
-#define __ASM_PPC_DEVICE_H__
-
-enum device_type
-{
-    DEV_DT,
-    DEV_PCI,
-};
-
-struct device {
-    enum device_type type;
-#ifdef CONFIG_HAS_DEVICE_TREE
-    struct dt_device_node *of_node; /* Used by drivers imported from Linux */
-#endif
-};
-
-enum device_class
-{
-    DEVICE_SERIAL,
-    DEVICE_IOMMU,
-    DEVICE_PCI_HOSTBRIDGE,
-    /* Use for error */
-    DEVICE_UNKNOWN,
-};
-
-struct device_desc {
-    /* Device name */
-    const char *name;
-    /* Device class */
-    enum device_class class;
-    /* List of devices supported by this driver */
-    const struct dt_device_match *dt_match;
-    /*
-     * Device initialization.
-     *
-     * -EAGAIN is used to indicate that device probing is deferred.
-     */
-    int (*init)(struct dt_device_node *dev, const void *data);
-};
-
-typedef struct device device_t;
-
-#define DT_DEVICE_START(name_, namestr_, class_)                    \
-static const struct device_desc __dev_desc_##name_ __used           \
-__section(".dev.info") = {                                          \
-    .name = namestr_,                                               \
-    .class = class_,                                                \
-
-#define DT_DEVICE_END                                               \
-};
-
-#endif /* __ASM_PPC_DEVICE_H__ */
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Fri Jan 26 15:43:48 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 26 Jan 2024 15:43:48 +0000
Received: from list by lists.xenproject.org with outflank-mailman.672117.1045832 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTOMs-0007Li-Us; Fri, 26 Jan 2024 15:43:46 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 672117.1045832; Fri, 26 Jan 2024 15:43:46 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTOMs-0007Lb-Rp; Fri, 26 Jan 2024 15:43:46 +0000
Received: by outflank-mailman (input) for mailman id 672117;
 Fri, 26 Jan 2024 15:43:45 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=bPDA=JE=casper.srs.infradead.org=BATV+7caeb094913322f6f00d+7460+infradead.org+dwmw2@srs-se1.protection.inumbo.net>)
 id 1rTOMr-0007LD-Dh
 for xen-devel@lists.xenproject.org; Fri, 26 Jan 2024 15:43:45 +0000
Received: from casper.infradead.org (casper.infradead.org
 [2001:8b0:10b:1236::1])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id afcac2fc-bc61-11ee-8a43-1f161083a0e0;
 Fri, 26 Jan 2024 16:43:44 +0100 (CET)
Received: from [2001:8b0:10b:5:d160:e4ac:a057:38f5]
 (helo=u3832b3a9db3152.ant.amazon.com)
 by casper.infradead.org with esmtpsa (Exim 4.97.1 #2 (Red Hat Linux))
 id 1rTOMN-0000000E3bm-2q3B; Fri, 26 Jan 2024 15:43:17 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: afcac2fc-bc61-11ee-8a43-1f161083a0e0
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=infradead.org; s=casper.20170209; h=MIME-Version:Content-Type:References:
	In-Reply-To:Date:Cc:To:From:Subject:Message-ID:Sender:Reply-To:
	Content-Transfer-Encoding:Content-ID:Content-Description;
	bh=mngabhQEmcs5M+mA7V2LH0SPFB5oGW39VAOwTy5lgCU=; b=j0vlGs47pwZ259SlLeAzzanfHg
	5bPw81/vFFxt69zjB0Pu1ZE5wnd+x5IR7LIDZ7vNUWofCrBdRgYMcysrYFZDDoUoCgzi9t/hTRvP7
	j05fr+L2OkTAX6IAMorVNkXjiCjeke/taf2eIYI0s8s1ttOG0VGx+YGw+UHNJvClfCR+CO89bHnia
	kFsBfUWd4pTY7ivhLzbV+Xh/PGYaZgwYjbbJp/JGyUxPcn4gSyQjUn3pksKkWC47PtFumCjDAdFfB
	hphqAzo7JQgyn9RQBYTUOAX8XKJsLjBxiQLyxS3YAPgIYl+ETrWzhEmSTBBnaUmXskcSdR7fTy65h
	WGOiKqNQ==;
Message-ID: <0f9a9d9458c0dc6edd5dc127b794fed2231f5f73.camel@infradead.org>
Subject: Re: [PATCH v3 01/46] net: add qemu_{configure,create}_nic_device(),
 qemu_find_nic_info()
From: David Woodhouse <dwmw2@infradead.org>
To: Peter Maydell <peter.maydell@linaro.org>
Cc: qemu-devel@nongnu.org, Richard Henderson <richard.henderson@linaro.org>,
  Beniamino Galvani <b.galvani@gmail.com>, Strahinja Jankovic
 <strahinja.p.jankovic@gmail.com>, Niek Linnenbank
 <nieklinnenbank@gmail.com>, =?ISO-8859-1?Q?C=E9dric?= Le Goater
 <clg@kaod.org>,  Andrew Jeffery <andrew@codeconstruct.com.au>, Joel Stanley
 <joel@jms.id.au>, Igor Mitsyanko <i.mitsyanko@gmail.com>, Jean-Christophe
 Dubois <jcd@tribudubois.net>,  Andrey Smirnov <andrew.smirnov@gmail.com>,
 Philippe =?ISO-8859-1?Q?Mathieu-Daud=E9?= <philmd@linaro.org>,  Rob Herring
 <robh@kernel.org>, Subbaraya Sundeep <sundeep.lkml@gmail.com>, Jan Kiszka
 <jan.kiszka@web.de>,  Tyrone Ting <kfting@nuvoton.com>, Hao Wu
 <wuhaotsh@google.com>, Radoslaw Biernacki <rad@semihalf.com>,  Leif
 Lindholm <quic_llindhol@quicinc.com>, Marcin Juszkiewicz
 <marcin.juszkiewicz@linaro.org>, "Edgar E. Iglesias"
 <edgar.iglesias@gmail.com>, Alistair Francis <alistair@alistair23.me>,
 Helge Deller <deller@gmx.de>, Paolo Bonzini <pbonzini@redhat.com>, Eduardo
 Habkost <eduardo@habkost.net>, "Michael S. Tsirkin" <mst@redhat.com>,
 Marcel Apfelbaum <marcel.apfelbaum@gmail.com>, Song Gao
 <gaosong@loongson.cn>, Thomas Huth <huth@tuxfamily.org>, Laurent Vivier
 <laurent@vivier.eu>, Huacai Chen <chenhuacai@kernel.org>, Jiaxun Yang
 <jiaxun.yang@flygoat.com>,  =?ISO-8859-1?Q?Herv=E9?= Poussineau
 <hpoussin@reactos.org>, Aleksandar Rikalo <aleksandar.rikalo@syrmia.com>, 
 Aurelien Jarno <aurelien@aurel32.net>, Jason Wang <jasowang@redhat.com>,
 Jia Liu <proljc@gmail.com>, Stafford Horne <shorne@gmail.com>, Mark
 Cave-Ayland <mark.cave-ayland@ilande.co.uk>, Nicholas Piggin
 <npiggin@gmail.com>, Daniel Henrique Barboza <danielhb413@gmail.com>, David
 Gibson <david@gibson.dropbear.id.au>, Harsh Prateek Bora
 <harshpb@linux.ibm.com>, Bin Meng <bin.meng@windriver.com>, Palmer Dabbelt
 <palmer@dabbelt.com>, Weiwei Li <liwei1518@gmail.com>, Liu Zhiwei
 <zhiwei_liu@linux.alibaba.com>, Halil Pasic <pasic@linux.ibm.com>,
 Christian Borntraeger <borntraeger@linux.ibm.com>,  Eric Farman
 <farman@linux.ibm.com>, David Hildenbrand <david@redhat.com>, Ilya
 Leoshkevich <iii@linux.ibm.com>, Yoshinori Sato
 <ysato@users.sourceforge.jp>, Magnus Damm <magnus.damm@gmail.com>, Artyom
 Tarasenko <atar4qemu@gmail.com>, Stefano Stabellini
 <sstabellini@kernel.org>, Anthony Perard <anthony.perard@citrix.com>, Paul
 Durrant <paul@xen.org>, Max Filippov <jcmvbkbc@gmail.com>,
 qemu-arm@nongnu.org,  qemu-ppc@nongnu.org, qemu-riscv@nongnu.org,
 qemu-s390x@nongnu.org,  xen-devel@lists.xenproject.org
Date: Fri, 26 Jan 2024 15:43:15 +0000
In-Reply-To: <CAFEAcA98ZW_1DtKvs-ZU=R9DOBwmnLPwnTBqPbTv7jE8zd1HoA@mail.gmail.com>
References: <20240108204909.564514-1-dwmw2@infradead.org>
	 <20240108204909.564514-2-dwmw2@infradead.org>
	 <CAFEAcA8JtnXezmo-h-rFZcbqsN_-CnOYCTUfLfd_q=F0702U9g@mail.gmail.com>
	 <d501dfc14c7b109844ff6d28f6be3bba86a1be89.camel@infradead.org>
	 <CAFEAcA98ZW_1DtKvs-ZU=R9DOBwmnLPwnTBqPbTv7jE8zd1HoA@mail.gmail.com>
Content-Type: multipart/signed; micalg="sha-256"; protocol="application/pkcs7-signature";
	boundary="=-O+xHr9kPrliOkD3fAySJ"
User-Agent: Evolution 3.44.4-0ubuntu2 
MIME-Version: 1.0
X-SRS-Rewrite: SMTP reverse-path rewritten from <dwmw2@infradead.org> by casper.infradead.org. See http://www.infradead.org/rpr.html


--=-O+xHr9kPrliOkD3fAySJ
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

On Fri, 2024-01-26 at 15:33 +0000, Peter Maydell wrote:
> On Fri, 26 Jan 2024 at 15:20, David Woodhouse <dwmw2@infradead.org> wrote=
:
> >=20
> > On Fri, 2024-01-26 at 14:43 +0000, Peter Maydell wrote:
> > >=20
> > > > +NICInfo *qemu_find_nic_info(const char *typename, bool match_defau=
lt,
> > > > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0 const char *alias);
> > > > +bool qemu_configure_nic_device(DeviceState *dev, bool match_defaul=
t,
> > > > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 const char *alias);
> > > > +DeviceState *qemu_create_nic_device(const char *typename, bool mat=
ch_default,
> > > > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 const=
 char *alias);
> > >=20
> > > Could we have doc comments that document the purpose and API
> > > for these new global functions, please?
> >=20
> > Like this? I deliberately fatfingered the argument names and didn't
> > even get a build warning, and I don't see any actual *documentation*
> > being generated with it...?
>=20
> We use the doc comment format to allow for potential future
> documentation generation, but it's only actually generated
> if there's a .rst file somewhere under docs/ that has a
> kernel-doc:: directive referencing the .h file (for instance
> there's one in docs/devel/memory.rst that results in
> https://www.qemu.org/docs/master/devel/memory.html#api-reference=C2=A0)
>=20
> For almost all internal functions, we set the relatively low
> bar of "have a doc comment so people reading the header file
> can see what the functions do". Where there's a more complex
> subsystem that merits its own hand-written documentation
> under docs/devel, then if the author of that documentation
> is enthusiastic they can clean up and pull in specific headers
> to add autogenerated docs. But the primary audience is the
> human reader of the .h file.

Ack, thanks.

> > diff --git a/include/net/net.h b/include/net/net.h
> > index 25ea83fd12..14614b0a31 100644
> > --- a/include/net/net.h
> > +++ b/include/net/net.h
> > @@ -207,10 +207,46 @@ int qemu_show_nic_models(const char *arg, const c=
har *const *models);
> > =C2=A0void qemu_check_nic_model(NICInfo *nd, const char *model);
> > =C2=A0int qemu_find_nic_model(NICInfo *nd, const char * const *models,
> > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
 const char *default_model);
> > +/**
> > + * qemu_find_nic_info: Obtain NIC configuration information
> > + * @typename: Name of device object type
> > + * @match_default: Match NIC configurations with no model specified
> > + * @alias: Additional model string to match (for user convenience and
> > + *=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 backward compatibil=
ity).
> > + *
> > + * Search for a NIC configuration matching the NIC model constraints.
> > + */
> > =C2=A0NICInfo *qemu_find_nic_info(const char *typename, bool match_defa=
ult,
> > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0 const char *alias);
> > +/**
> > + * qemu_configure_nic_device: Apply NIC configuration to a given devic=
e
> > + * @dev: Network device to be configured
> > + * @match_default: Match NIC configurations with no model specified
> > + * @alias: Additional model string to match
> > + *
> > + * Search for a NIC configuration for the provided device, using the
> > + * additionally specified matching constraints. If found, apply the
> > + * configuration using qdev_set_nic_properties() and return %true.
> > + *
> > + * This is used by platform code which creates the device anyway,
> > + * regardless of whether there is a configuration for it. This tends
> > + * to be platforms which ignore `--nodefaults` and create net devices
> > + * anyway. This behaviour is not advised for new platforms; use the
> > + * qemu_create_nic_device() function instead, which creates the device
> > + * only when it is configured.
>=20
> I disagree about this paragraph. The behaviour we want for new
> platforms is:
>=20
> =C2=A0* If this is modelling some board where the ethernet device is
> =C2=A0=C2=A0 always present (eg it is soldered on to the board, or it is
> =C2=A0=C2=A0 a part of the SoC that the board uses), then always create
> =C2=A0=C2=A0 that device
> =C2=A0* If the hardware being modelled has the ethernet device as an
> =C2=A0=C2=A0 optional device (eg physically removable like a PCI card),
> =C2=A0=C2=A0 then the board should arrange that --nodefaults causes it to
> =C2=A0=C2=A0 not be created
>=20

Ack. Scratch the 'better behaved' part of my last response to Thomas
about smc91c111 too then :)

How's this:

/**
 * qemu_configure_nic_device: Apply NIC configuration to a given device
 * @dev: Network device to be configured
 * @match_default: Match NIC configurations with no model specified
 * @alias: Additional model string to match
 *
 * Search for a NIC configuration for the provided device, using the
 * additionally specified matching constraints. If found, apply the
 * configuration using qdev_set_nic_properties() and return %true.
 *
 * This is used by platform code which creates the device anyway,
 * regardless of whether there is a configuration for it. This tends
 * to be platforms which ignore `--nodefaults` and create net devices
 * anyway, for example because the Ethernet device on that board is
 * always physically present.
 */



--=-O+xHr9kPrliOkD3fAySJ
Content-Type: application/pkcs7-signature; name="smime.p7s"
Content-Disposition: attachment; filename="smime.p7s"
Content-Transfer-Encoding: base64

MIAGCSqGSIb3DQEHAqCAMIACAQExDzANBglghkgBZQMEAgEFADCABgkqhkiG9w0BBwEAAKCCEkQw
ggYQMIID+KADAgECAhBNlCwQ1DvglAnFgS06KwZPMA0GCSqGSIb3DQEBDAUAMIGIMQswCQYDVQQG
EwJVUzETMBEGA1UECBMKTmV3IEplcnNleTEUMBIGA1UEBxMLSmVyc2V5IENpdHkxHjAcBgNVBAoT
FVRoZSBVU0VSVFJVU1QgTmV0d29yazEuMCwGA1UEAxMlVVNFUlRydXN0IFJTQSBDZXJ0aWZpY2F0
aW9uIEF1dGhvcml0eTAeFw0xODExMDIwMDAwMDBaFw0zMDEyMzEyMzU5NTlaMIGWMQswCQYDVQQG
EwJHQjEbMBkGA1UECBMSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHEwdTYWxmb3JkMRgwFgYD
VQQKEw9TZWN0aWdvIExpbWl0ZWQxPjA8BgNVBAMTNVNlY3RpZ28gUlNBIENsaWVudCBBdXRoZW50
aWNhdGlvbiBhbmQgU2VjdXJlIEVtYWlsIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
AQEAyjztlApB/975Rrno1jvm2pK/KxBOqhq8gr2+JhwpKirSzZxQgT9tlC7zl6hn1fXjSo5MqXUf
ItMltrMaXqcESJuK8dtK56NCSrq4iDKaKq9NxOXFmqXX2zN8HHGjQ2b2Xv0v1L5Nk1MQPKA19xeW
QcpGEGFUUd0kN+oHox+L9aV1rjfNiCj3bJk6kJaOPabPi2503nn/ITX5e8WfPnGw4VuZ79Khj1YB
rf24k5Ee1sLTHsLtpiK9OjG4iQRBdq6Z/TlVx/hGAez5h36bBJMxqdHLpdwIUkTqT8se3ed0PewD
ch/8kHPo5fZl5u1B0ecpq/sDN/5sCG52Ds+QU5O5EwIDAQABo4IBZDCCAWAwHwYDVR0jBBgwFoAU
U3m/WqorSs9UgOHYm8Cd8rIDZsswHQYDVR0OBBYEFAnA8vwL2pTbX/4r36iZQs/J4K0AMA4GA1Ud
DwEB/wQEAwIBhjASBgNVHRMBAf8ECDAGAQH/AgEAMB0GA1UdJQQWMBQGCCsGAQUFBwMCBggrBgEF
BQcDBDARBgNVHSAECjAIMAYGBFUdIAAwUAYDVR0fBEkwRzBFoEOgQYY/aHR0cDovL2NybC51c2Vy
dHJ1c3QuY29tL1VTRVJUcnVzdFJTQUNlcnRpZmljYXRpb25BdXRob3JpdHkuY3JsMHYGCCsGAQUF
BwEBBGowaDA/BggrBgEFBQcwAoYzaHR0cDovL2NydC51c2VydHJ1c3QuY29tL1VTRVJUcnVzdFJT
QUFkZFRydXN0Q0EuY3J0MCUGCCsGAQUFBzABhhlodHRwOi8vb2NzcC51c2VydHJ1c3QuY29tMA0G
CSqGSIb3DQEBDAUAA4ICAQBBRHUAqznCFfXejpVtMnFojADdF9d6HBA4kMjjsb0XMZHztuOCtKF+
xswhh2GqkW5JQrM8zVlU+A2VP72Ky2nlRA1GwmIPgou74TZ/XTarHG8zdMSgaDrkVYzz1g3nIVO9
IHk96VwsacIvBF8JfqIs+8aWH2PfSUrNxP6Ys7U0sZYx4rXD6+cqFq/ZW5BUfClN/rhk2ddQXyn7
kkmka2RQb9d90nmNHdgKrwfQ49mQ2hWQNDkJJIXwKjYA6VUR/fZUFeCUisdDe/0ABLTI+jheXUV1
eoYV7lNwNBKpeHdNuO6Aacb533JlfeUHxvBz9OfYWUiXu09sMAviM11Q0DuMZ5760CdO2VnpsXP4
KxaYIhvqPqUMWqRdWyn7crItNkZeroXaecG03i3mM7dkiPaCkgocBg0EBYsbZDZ8bsG3a08LwEsL
1Ygz3SBsyECa0waq4hOf/Z85F2w2ZpXfP+w8q4ifwO90SGZZV+HR/Jh6rEaVPDRF/CEGVqR1hiuQ
OZ1YL5ezMTX0ZSLwrymUE0pwi/KDaiYB15uswgeIAcA6JzPFf9pLkAFFWs1QNyN++niFhsM47qod
x/PL+5jR87myx5uYdBEQkkDc+lKB1Wct6ucXqm2EmsaQ0M95QjTmy+rDWjkDYdw3Ms6mSWE3Bn7i
5ZgtwCLXgAIe5W8mybM2JzCCBhQwggT8oAMCAQICEQDGvhmWZ0DEAx0oURL6O6l+MA0GCSqGSIb3
DQEBCwUAMIGWMQswCQYDVQQGEwJHQjEbMBkGA1UECBMSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYD
VQQHEwdTYWxmb3JkMRgwFgYDVQQKEw9TZWN0aWdvIExpbWl0ZWQxPjA8BgNVBAMTNVNlY3RpZ28g
UlNBIENsaWVudCBBdXRoZW50aWNhdGlvbiBhbmQgU2VjdXJlIEVtYWlsIENBMB4XDTIyMDEwNzAw
MDAwMFoXDTI1MDEwNjIzNTk1OVowJDEiMCAGCSqGSIb3DQEJARYTZHdtdzJAaW5mcmFkZWFkLm9y
ZzCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBALQ3GpC2bomUqk+91wLYBzDMcCj5C9m6
oZaHwvmIdXftOgTbCJXADo6G9T7BBAebw2JV38EINgKpy/ZHh7htyAkWYVoFsFPrwHounto8xTsy
SSePMiPlmIdQ10BcVSXMUJ3Juu16GlWOnAMJY2oYfEzmE7uT9YgcBqKCo65pTFmOnR/VVbjJk4K2
xE34GC2nAdUQkPFuyaFisicc6HRMOYXPuF0DuwITEKnjxgNjP+qDrh0db7PAjO1D4d5ftfrsf+kd
RR4gKVGSk8Tz2WwvtLAroJM4nXjNPIBJNT4w/FWWc/5qPHJy2U+eITZ5LLE5s45mX2oPFknWqxBo
bQZ8a9dsZ3dSPZBvE9ZrmtFLrVrN4eo1jsXgAp1+p7bkfqd3BgBEmfsYWlBXO8rVXfvPgLs32VdV
NZxb/CDWPqBsiYv0Hv3HPsz07j5b+/cVoWqyHDKzkaVbxfq/7auNVRmPB3v5SWEsH8xi4Bez2V9U
KxfYCnqsjp8RaC2/khxKt0A552Eaxnz/4ly/2C7wkwTQnBmdlFYhAflWKQ03Ufiu8t3iBE3VJbc2
5oMrglj7TRZrmKq3CkbFnX0fyulB+kHimrt6PIWn7kgyl9aelIl6vtbhMA+l0nfrsORMa4kobqQ5
C5rveVgmcIad67EDa+UqEKy/GltUwlSh6xy+TrK1tzDvAgMBAAGjggHMMIIByDAfBgNVHSMEGDAW
gBQJwPL8C9qU21/+K9+omULPyeCtADAdBgNVHQ4EFgQUzMeDMcimo0oz8o1R1Nver3ZVpSkwDgYD
VR0PAQH/BAQDAgWgMAwGA1UdEwEB/wQCMAAwHQYDVR0lBBYwFAYIKwYBBQUHAwQGCCsGAQUFBwMC
MEAGA1UdIAQ5MDcwNQYMKwYBBAGyMQECAQEBMCUwIwYIKwYBBQUHAgEWF2h0dHBzOi8vc2VjdGln
by5jb20vQ1BTMFoGA1UdHwRTMFEwT6BNoEuGSWh0dHA6Ly9jcmwuc2VjdGlnby5jb20vU2VjdGln
b1JTQUNsaWVudEF1dGhlbnRpY2F0aW9uYW5kU2VjdXJlRW1haWxDQS5jcmwwgYoGCCsGAQUFBwEB
BH4wfDBVBggrBgEFBQcwAoZJaHR0cDovL2NydC5zZWN0aWdvLmNvbS9TZWN0aWdvUlNBQ2xpZW50
QXV0aGVudGljYXRpb25hbmRTZWN1cmVFbWFpbENBLmNydDAjBggrBgEFBQcwAYYXaHR0cDovL29j
c3Auc2VjdGlnby5jb20wHgYDVR0RBBcwFYETZHdtdzJAaW5mcmFkZWFkLm9yZzANBgkqhkiG9w0B
AQsFAAOCAQEAyW6MUir5dm495teKqAQjDJwuFCi35h4xgnQvQ/fzPXmtR9t54rpmI2TfyvcKgOXp
qa7BGXNFfh1JsqexVkIqZP9uWB2J+uVMD+XZEs/KYNNX2PvIlSPrzIB4Z2wyIGQpaPLlYflrrVFK
v9CjT2zdqvy2maK7HKOQRt3BiJbVG5lRiwbbygldcALEV9ChWFfgSXvrWDZspnU3Gjw/rMHrGnql
Htlyebp3pf3fSS9kzQ1FVtVIDrL6eqhTwJxe+pXSMMqFiN0whpBtXdyDjzBtQTaZJ7zTT/vlehc/
tDuqZwGHm/YJy883Ll+GP3NvOkgaRGWEuYWJJ6hFCkXYjyR9IzCCBhQwggT8oAMCAQICEQDGvhmW
Z0DEAx0oURL6O6l+MA0GCSqGSIb3DQEBCwUAMIGWMQswCQYDVQQGEwJHQjEbMBkGA1UECBMSR3Jl
YXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHEwdTYWxmb3JkMRgwFgYDVQQKEw9TZWN0aWdvIExpbWl0
ZWQxPjA8BgNVBAMTNVNlY3RpZ28gUlNBIENsaWVudCBBdXRoZW50aWNhdGlvbiBhbmQgU2VjdXJl
IEVtYWlsIENBMB4XDTIyMDEwNzAwMDAwMFoXDTI1MDEwNjIzNTk1OVowJDEiMCAGCSqGSIb3DQEJ
ARYTZHdtdzJAaW5mcmFkZWFkLm9yZzCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBALQ3
GpC2bomUqk+91wLYBzDMcCj5C9m6oZaHwvmIdXftOgTbCJXADo6G9T7BBAebw2JV38EINgKpy/ZH
h7htyAkWYVoFsFPrwHounto8xTsySSePMiPlmIdQ10BcVSXMUJ3Juu16GlWOnAMJY2oYfEzmE7uT
9YgcBqKCo65pTFmOnR/VVbjJk4K2xE34GC2nAdUQkPFuyaFisicc6HRMOYXPuF0DuwITEKnjxgNj
P+qDrh0db7PAjO1D4d5ftfrsf+kdRR4gKVGSk8Tz2WwvtLAroJM4nXjNPIBJNT4w/FWWc/5qPHJy
2U+eITZ5LLE5s45mX2oPFknWqxBobQZ8a9dsZ3dSPZBvE9ZrmtFLrVrN4eo1jsXgAp1+p7bkfqd3
BgBEmfsYWlBXO8rVXfvPgLs32VdVNZxb/CDWPqBsiYv0Hv3HPsz07j5b+/cVoWqyHDKzkaVbxfq/
7auNVRmPB3v5SWEsH8xi4Bez2V9UKxfYCnqsjp8RaC2/khxKt0A552Eaxnz/4ly/2C7wkwTQnBmd
lFYhAflWKQ03Ufiu8t3iBE3VJbc25oMrglj7TRZrmKq3CkbFnX0fyulB+kHimrt6PIWn7kgyl9ae
lIl6vtbhMA+l0nfrsORMa4kobqQ5C5rveVgmcIad67EDa+UqEKy/GltUwlSh6xy+TrK1tzDvAgMB
AAGjggHMMIIByDAfBgNVHSMEGDAWgBQJwPL8C9qU21/+K9+omULPyeCtADAdBgNVHQ4EFgQUzMeD
Mcimo0oz8o1R1Nver3ZVpSkwDgYDVR0PAQH/BAQDAgWgMAwGA1UdEwEB/wQCMAAwHQYDVR0lBBYw
FAYIKwYBBQUHAwQGCCsGAQUFBwMCMEAGA1UdIAQ5MDcwNQYMKwYBBAGyMQECAQEBMCUwIwYIKwYB
BQUHAgEWF2h0dHBzOi8vc2VjdGlnby5jb20vQ1BTMFoGA1UdHwRTMFEwT6BNoEuGSWh0dHA6Ly9j
cmwuc2VjdGlnby5jb20vU2VjdGlnb1JTQUNsaWVudEF1dGhlbnRpY2F0aW9uYW5kU2VjdXJlRW1h
aWxDQS5jcmwwgYoGCCsGAQUFBwEBBH4wfDBVBggrBgEFBQcwAoZJaHR0cDovL2NydC5zZWN0aWdv
LmNvbS9TZWN0aWdvUlNBQ2xpZW50QXV0aGVudGljYXRpb25hbmRTZWN1cmVFbWFpbENBLmNydDAj
BggrBgEFBQcwAYYXaHR0cDovL29jc3Auc2VjdGlnby5jb20wHgYDVR0RBBcwFYETZHdtdzJAaW5m
cmFkZWFkLm9yZzANBgkqhkiG9w0BAQsFAAOCAQEAyW6MUir5dm495teKqAQjDJwuFCi35h4xgnQv
Q/fzPXmtR9t54rpmI2TfyvcKgOXpqa7BGXNFfh1JsqexVkIqZP9uWB2J+uVMD+XZEs/KYNNX2PvI
lSPrzIB4Z2wyIGQpaPLlYflrrVFKv9CjT2zdqvy2maK7HKOQRt3BiJbVG5lRiwbbygldcALEV9Ch
WFfgSXvrWDZspnU3Gjw/rMHrGnqlHtlyebp3pf3fSS9kzQ1FVtVIDrL6eqhTwJxe+pXSMMqFiN0w
hpBtXdyDjzBtQTaZJ7zTT/vlehc/tDuqZwGHm/YJy883Ll+GP3NvOkgaRGWEuYWJJ6hFCkXYjyR9
IzGCBMcwggTDAgEBMIGsMIGWMQswCQYDVQQGEwJHQjEbMBkGA1UECBMSR3JlYXRlciBNYW5jaGVz
dGVyMRAwDgYDVQQHEwdTYWxmb3JkMRgwFgYDVQQKEw9TZWN0aWdvIExpbWl0ZWQxPjA8BgNVBAMT
NVNlY3RpZ28gUlNBIENsaWVudCBBdXRoZW50aWNhdGlvbiBhbmQgU2VjdXJlIEVtYWlsIENBAhEA
xr4ZlmdAxAMdKFES+jupfjANBglghkgBZQMEAgEFAKCCAeswGAYJKoZIhvcNAQkDMQsGCSqGSIb3
DQEHATAcBgkqhkiG9w0BCQUxDxcNMjQwMTI2MTU0MzE1WjAvBgkqhkiG9w0BCQQxIgQgSDIxD5gE
D+5SDr0LDxZ9BEbL0lXHpFOZ9yA+sS6n/QQwgb0GCSsGAQQBgjcQBDGBrzCBrDCBljELMAkGA1UE
BhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEYMBYG
A1UEChMPU2VjdGlnbyBMaW1pdGVkMT4wPAYDVQQDEzVTZWN0aWdvIFJTQSBDbGllbnQgQXV0aGVu
dGljYXRpb24gYW5kIFNlY3VyZSBFbWFpbCBDQQIRAMa+GZZnQMQDHShREvo7qX4wgb8GCyqGSIb3
DQEJEAILMYGvoIGsMIGWMQswCQYDVQQGEwJHQjEbMBkGA1UECBMSR3JlYXRlciBNYW5jaGVzdGVy
MRAwDgYDVQQHEwdTYWxmb3JkMRgwFgYDVQQKEw9TZWN0aWdvIExpbWl0ZWQxPjA8BgNVBAMTNVNl
Y3RpZ28gUlNBIENsaWVudCBBdXRoZW50aWNhdGlvbiBhbmQgU2VjdXJlIEVtYWlsIENBAhEAxr4Z
lmdAxAMdKFES+jupfjANBgkqhkiG9w0BAQEFAASCAgCwMsmI2mLopjEfvfRUGfMrf3Um3JeWqXyV
bpj+b4tI9uCBCz3JxzWjNBaCkwq6zU3V6f3cCe7bnSBNUP1DZqtIXrT24CgFTkgMhhKbG+SL8j7X
5c5CBm/PCysA4Yc3Yr1ACKhb0LrEaqLpWZNJcnyLoYEHnXgJvcHeSkVrHBbW9U0zh1OmW2sIJUEQ
2yVI0vmNoxGbhpl/gm+nNae4C/SCMmLeg6P/O5L6BQy++BNy6bjo4wD4s0XmuMkVYjHgXzI7NbZx
8yb+3Hc0l51dIcc/8DQe+s5N7LjikYzXgzxoN6d5rBZd0IH/oPHD2mom2yHjy+ovBfnXgyihvX1S
Hfq49zj7LdtWIRgzLtXZTUFNC11fHlH2h5bagz6EI7Bl8p+l5Fd6nLyYwf65mUOcF9lp1108VbIW
NRo2smND4W6M5EKFdJWrUemGwDXMq9OSoGph7CYyqpw3ZZk7J+s4aXFRAGDTAKY6lSjCDC5KCaBa
9vTxhv3ZiML8/B9xN3J1K3d53WnU2HSORd7qqKHCe0MT7DSeeK3jUGhTaqDJPZAviQ8KNB/h2kbM
Q8kHTvCx1kW4gql4DrdSZ/AcG6ot0zH/cuRs8PkDdOQV3+YnQNatgTeYvE9xZtIavQoq7RxCebk3
uXQ/nKqWIZ9I5xkOHWqqDZITbHf5yk6cwrkVLNZ19QAAAAAAAA==


--=-O+xHr9kPrliOkD3fAySJ--


From xen-devel-bounces@lists.xenproject.org Fri Jan 26 15:52:04 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 26 Jan 2024 15:52:04 +0000
Received: from list by lists.xenproject.org with outflank-mailman.672126.1045843 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTOUo-0001Xo-S5; Fri, 26 Jan 2024 15:51:58 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 672126.1045843; Fri, 26 Jan 2024 15:51:58 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTOUo-0001Xh-OW; Fri, 26 Jan 2024 15:51:58 +0000
Received: by outflank-mailman (input) for mailman id 672126;
 Fri, 26 Jan 2024 15:51:57 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=UtOA=JE=redhat.com=thuth@srs-se1.protection.inumbo.net>)
 id 1rTOUn-0001WN-Jp
 for xen-devel@lists.xenproject.org; Fri, 26 Jan 2024 15:51:57 +0000
Received: from us-smtp-delivery-124.mimecast.com
 (us-smtp-delivery-124.mimecast.com [170.10.129.124])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id d427a763-bc62-11ee-98f5-efadbce2ee36;
 Fri, 26 Jan 2024 16:51:55 +0100 (CET)
Received: from mail-qk1-f200.google.com (mail-qk1-f200.google.com
 [209.85.222.200]) by relay.mimecast.com with ESMTP with STARTTLS
 (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id
 us-mta-617-mMxpJthxMyeqSLfeljI6Xg-1; Fri, 26 Jan 2024 10:51:53 -0500
Received: by mail-qk1-f200.google.com with SMTP id
 af79cd13be357-783163c7c38so63211385a.2
 for <xen-devel@lists.xenproject.org>; Fri, 26 Jan 2024 07:51:52 -0800 (PST)
Received: from [192.168.0.9] (ip-109-43-176-119.web.vodafone.de.
 [109.43.176.119]) by smtp.gmail.com with ESMTPSA id
 i28-20020a05620a145c00b0078199077d0asm666795qkl.125.2024.01.26.07.51.40
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Fri, 26 Jan 2024 07:51:51 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: d427a763-bc62-11ee-98f5-efadbce2ee36
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
	s=mimecast20190719; t=1706284314;
	h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
	 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references:autocrypt:autocrypt;
	bh=GVRU4JY42t0XtQar0MLRcTymoBOobeZe42nuYzL2Zis=;
	b=KfUJ35dD1fEjw5e1fM4PZ6FcCMxyGKL8L2cI9HO3Wee9MKwlKYZ6o3KprIsvJlI/LkRgLN
	eL0IfQgsD3Z0bR8aHkcgWht2XHG5cnN9sLkRaO/FTaGEtd+4NoTzV757nkQlhtvcETfXjH
	/n8B5A2VJksWWxGt8pHKTDmgW/QRht0=
X-MC-Unique: mMxpJthxMyeqSLfeljI6Xg-1
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706284312; x=1706889112;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=GVRU4JY42t0XtQar0MLRcTymoBOobeZe42nuYzL2Zis=;
        b=brae2XO68jBZEynd0KthBWkqhITedQgXxg0BbygoquwkQsNfb4JvypBu3CArLlVSem
         QvJL5uHMKhwVAvNgp2krsICeBfiTQigQYgORcDKOEf114fTdT+ekwDqY8XeANnH9TXTl
         z8VW2qHtJEEiMFO/572qRLztBFuDMZujZIIs5VSyRBnBTvS2tmccyqnuT2GCZ/wkwD+q
         3aAWjytqoucfcn6d0AxXuSaM5LBVeH1snkcK2SLkbWwD3qXvO47S2m6pvLYjiKfwGJ0X
         9vl/Fm03iQeWDStQ5iJvPnTvPH9KxRDuE7Wy1XRC0nFPtmoDGcQqpqU36IWY8kFDJJE4
         KjZw==
X-Gm-Message-State: AOJu0YzF2DOaHYy1gO9h7vEyEy174+F5VfJKxs4unPE4SGX48pr2dxnF
	UvcaS8r+a78sdCcniDxZDxS4SG/lDs/0cLfGGdOuyzPEku5rEIi7LVuu4RhgXy9BRdjAECMXh9l
	4T5Dpb/62N4G24zaWp9QYGiquAc7slIfZ/cb4RLNETc0uKaJiKg6SxpRYhXkJc4WO
X-Received: by 2002:a37:e317:0:b0:783:b889:30d3 with SMTP id y23-20020a37e317000000b00783b88930d3mr1427761qki.15.1706284312511;
        Fri, 26 Jan 2024 07:51:52 -0800 (PST)
X-Google-Smtp-Source: AGHT+IGCsD6roCqcIcM6eBMaPvRVq81pvEKw0TvX8mdk6PnZ9OIl3kTz+cpFaslSLmUatyOLyZVWLw==
X-Received: by 2002:a37:e317:0:b0:783:b889:30d3 with SMTP id y23-20020a37e317000000b00783b88930d3mr1427741qki.15.1706284312247;
        Fri, 26 Jan 2024 07:51:52 -0800 (PST)
Message-ID: <c39be436-2790-42ff-8886-59925330b7d5@redhat.com>
Date: Fri, 26 Jan 2024 16:51:39 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 32/46] hw/m68k/mcf5208: use qemu_create_nic_device()
To: David Woodhouse <dwmw2@infradead.org>, qemu-devel@nongnu.org
Cc: Richard Henderson <richard.henderson@linaro.org>,
 Beniamino Galvani <b.galvani@gmail.com>,
 Peter Maydell <peter.maydell@linaro.org>,
 Strahinja Jankovic <strahinja.p.jankovic@gmail.com>,
 Niek Linnenbank <nieklinnenbank@gmail.com>, =?UTF-8?Q?C=C3=A9dric_Le_Goater?=
 <clg@kaod.org>, Andrew Jeffery <andrew@codeconstruct.com.au>,
 Joel Stanley <joel@jms.id.au>, Igor Mitsyanko <i.mitsyanko@gmail.com>,
 Jean-Christophe Dubois <jcd@tribudubois.net>,
 Andrey Smirnov <andrew.smirnov@gmail.com>,
 =?UTF-8?Q?Philippe_Mathieu-Daud=C3=A9?= <philmd@linaro.org>,
 Rob Herring <robh@kernel.org>, Subbaraya Sundeep <sundeep.lkml@gmail.com>,
 Jan Kiszka <jan.kiszka@web.de>, Tyrone Ting <kfting@nuvoton.com>,
 Hao Wu <wuhaotsh@google.com>, Radoslaw Biernacki <rad@semihalf.com>,
 Leif Lindholm <quic_llindhol@quicinc.com>,
 Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org>,
 "Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
 Alistair Francis <alistair@alistair23.me>, Helge Deller <deller@gmx.de>,
 Paolo Bonzini <pbonzini@redhat.com>, Eduardo Habkost <eduardo@habkost.net>,
 "Michael S. Tsirkin" <mst@redhat.com>,
 Marcel Apfelbaum <marcel.apfelbaum@gmail.com>, Song Gao
 <gaosong@loongson.cn>, Thomas Huth <huth@tuxfamily.org>,
 Laurent Vivier <laurent@vivier.eu>, Huacai Chen <chenhuacai@kernel.org>,
 Jiaxun Yang <jiaxun.yang@flygoat.com>,
 =?UTF-8?Q?Herv=C3=A9_Poussineau?= <hpoussin@reactos.org>,
 Aleksandar Rikalo <aleksandar.rikalo@syrmia.com>,
 Aurelien Jarno <aurelien@aurel32.net>, Jason Wang <jasowang@redhat.com>,
 Jia Liu <proljc@gmail.com>, Stafford Horne <shorne@gmail.com>,
 Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>,
 Nicholas Piggin <npiggin@gmail.com>,
 Daniel Henrique Barboza <danielhb413@gmail.com>,
 David Gibson <david@gibson.dropbear.id.au>,
 Harsh Prateek Bora <harshpb@linux.ibm.com>, Bin Meng
 <bin.meng@windriver.com>, Palmer Dabbelt <palmer@dabbelt.com>,
 Weiwei Li <liwei1518@gmail.com>, Liu Zhiwei <zhiwei_liu@linux.alibaba.com>,
 Halil Pasic <pasic@linux.ibm.com>,
 Christian Borntraeger <borntraeger@linux.ibm.com>,
 Eric Farman <farman@linux.ibm.com>, David Hildenbrand <david@redhat.com>,
 Ilya Leoshkevich <iii@linux.ibm.com>,
 Yoshinori Sato <ysato@users.sourceforge.jp>,
 Magnus Damm <magnus.damm@gmail.com>, Artyom Tarasenko <atar4qemu@gmail.com>,
 Stefano Stabellini <sstabellini@kernel.org>,
 Anthony Perard <anthony.perard@citrix.com>, Paul Durrant <paul@xen.org>,
 Max Filippov <jcmvbkbc@gmail.com>, qemu-arm@nongnu.org, qemu-ppc@nongnu.org,
 qemu-riscv@nongnu.org, qemu-s390x@nongnu.org,
 xen-devel@lists.xenproject.org, David Woodhouse <dwmw@amazon.co.uk>
References: <20240108204909.564514-1-dwmw2@infradead.org>
 <20240108204909.564514-33-dwmw2@infradead.org>
From: Thomas Huth <thuth@redhat.com>
Autocrypt: addr=thuth@redhat.com; keydata=
 xsFNBFH7eUwBEACzyOXKU+5Pcs6wNpKzrlJwzRl3VGZt95VCdb+FgoU9g11m7FWcOafrVRwU
 yYkTm9+7zBUc0sW5AuPGR/dp3pSLX/yFWsA/UB4nJsHqgDvDU7BImSeiTrnpMOTXb7Arw2a2
 4CflIyFqjCpfDM4MuTmzTjXq4Uov1giGE9X6viNo1pxyEpd7PanlKNnf4PqEQp06X4IgUacW
 tSGj6Gcns1bCuHV8OPWLkf4hkRnu8hdL6i60Yxz4E6TqlrpxsfYwLXgEeswPHOA6Mn4Cso9O
 0lewVYfFfsmokfAVMKWzOl1Sr0KGI5T9CpmRfAiSHpthhHWnECcJFwl72NTi6kUcUzG4se81
 O6n9d/kTj7pzTmBdfwuOZ0YUSqcqs0W+l1NcASSYZQaDoD3/SLk+nqVeCBB4OnYOGhgmIHNW
 0CwMRO/GK+20alxzk//V9GmIM2ACElbfF8+Uug3pqiHkVnKqM7W9/S1NH2qmxB6zMiJUHlTH
 gnVeZX0dgH27mzstcF786uPcdEqS0KJuxh2kk5IvUSL3Qn3ZgmgdxBMyCPciD/1cb7/Ahazr
 3ThHQXSHXkH/aDXdfLsKVuwDzHLVSkdSnZdt5HHh75/NFHxwaTlydgfHmFFwodK8y/TjyiGZ
 zg2Kje38xnz8zKn9iesFBCcONXS7txENTzX0z80WKBhK+XSFJwARAQABzR5UaG9tYXMgSHV0
 aCA8dGh1dGhAcmVkaGF0LmNvbT7CwXgEEwECACIFAlVgX6oCGwMGCwkIBwMCBhUIAgkKCwQW
 AgMBAh4BAheAAAoJEC7Z13T+cC21EbIP/ii9cvT2HHGbFRl8HqGT6+7Wkb+XLMqJBMAIGiQK
 QIP3xk1HPTsLfVG0ao4hy/oYkGNOP8+ubLnZen6Yq3zAFiMhQ44lvgigDYJo3Ve59gfe99KX
 EbtB+X95ODARkq0McR6OAsPNJ7gpEUzfkQUUJTXRDQXfG/FX303Gvk+YU0spm2tsIKPl6AmV
 1CegDljzjycyfJbk418MQmMu2T82kjrkEofUO2a24ed3VGC0/Uz//XCR2ZTo+vBoBUQl41BD
 eFFtoCSrzo3yPFS+w5fkH9NT8ChdpSlbNS32NhYQhJtr9zjWyFRf0Zk+T/1P7ECn6gTEkp5k
 ofFIA4MFBc/fXbaDRtBmPB0N9pqTFApIUI4vuFPPO0JDrII9dLwZ6lO9EKiwuVlvr1wwzsgq
 zJTPBU3qHaUO4d/8G+gD7AL/6T4zi8Jo/GmjBsnYaTzbm94lf0CjXjsOX3seMhaE6WAZOQQG
 tZHAO1kAPWpaxne+wtgMKthyPLNwelLf+xzGvrIKvLX6QuLoWMnWldu22z2ICVnLQChlR9d6
 WW8QFEpo/FK7omuS8KvvopFcOOdlbFMM8Y/8vBgVMSsK6fsYUhruny/PahprPbYGiNIhKqz7
 UvgyZVl4pBFjTaz/SbimTk210vIlkDyy1WuS8Zsn0htv4+jQPgo9rqFE4mipJjy/iboDzsFN
 BFH7eUwBEAC2nzfUeeI8dv0C4qrfCPze6NkryUflEut9WwHhfXCLjtvCjnoGqFelH/PE9NF4
 4VPSCdvD1SSmFVzu6T9qWdcwMSaC+e7G/z0/AhBfqTeosAF5XvKQlAb9ZPkdDr7YN0a1XDfa
 +NgA+JZB4ROyBZFFAwNHT+HCnyzy0v9Sh3BgJJwfpXHH2l3LfncvV8rgFv0bvdr70U+On2XH
 5bApOyW1WpIG5KPJlDdzcQTyptOJ1dnEHfwnABEfzI3dNf63rlxsGouX/NFRRRNqkdClQR3K
 gCwciaXfZ7ir7fF0u1N2UuLsWA8Ei1JrNypk+MRxhbvdQC4tyZCZ8mVDk+QOK6pyK2f4rMf/
 WmqxNTtAVmNuZIwnJdjRMMSs4W4w6N/bRvpqtykSqx7VXcgqtv6eqoDZrNuhGbekQA0sAnCJ
 VPArerAZGArm63o39me/bRUQeQVSxEBmg66yshF9HkcUPGVeC4B0TPwz+HFcVhheo6hoJjLq
 knFOPLRj+0h+ZL+D0GenyqD3CyuyeTT5dGcNU9qT74bdSr20k/CklvI7S9yoQje8BeQAHtdV
 cvO8XCLrpGuw9SgOS7OP5oI26a0548M4KldAY+kqX6XVphEw3/6U1KTf7WxW5zYLTtadjISB
 X9xsRWSU+Yqs3C7oN5TIPSoj9tXMoxZkCIHWvnqGwZ7JhwARAQABwsFfBBgBAgAJBQJR+3lM
 AhsMAAoJEC7Z13T+cC21hPAQAIsBL9MdGpdEpvXs9CYrBkd6tS9mbaSWj6XBDfA1AEdQkBOn
 ZH1Qt7HJesk+qNSnLv6+jP4VwqK5AFMrKJ6IjE7jqgzGxtcZnvSjeDGPF1h2CKZQPpTw890k
 fy18AvgFHkVk2Oylyexw3aOBsXg6ukN44vIFqPoc+YSU0+0QIdYJp/XFsgWxnFIMYwDpxSHS
 5fdDxUjsk3UBHZx+IhFjs2siVZi5wnHIqM7eK9abr2cK2weInTBwXwqVWjsXZ4tq5+jQrwDK
 cvxIcwXdUTLGxc4/Z/VRH1PZSvfQxdxMGmNTGaXVNfdFZjm4fz0mz+OUi6AHC4CZpwnsliGV
 ODqwX8Y1zic9viSTbKS01ZNp175POyWViUk9qisPZB7ypfSIVSEULrL347qY/hm9ahhqmn17
 Ng255syASv3ehvX7iwWDfzXbA0/TVaqwa1YIkec+/8miicV0zMP9siRcYQkyTqSzaTFBBmqD
 oiT+z+/E59qj/EKfyce3sbC9XLjXv3mHMrq1tKX4G7IJGnS989E/fg6crv6NHae9Ckm7+lSs
 IQu4bBP2GxiRQ+NV3iV/KU3ebMRzqIC//DCOxzQNFNJAKldPe/bKZMCxEqtVoRkuJtNdp/5a
 yXFZ6TfE1hGKrDBYAm4vrnZ4CXFSBDllL59cFFOJCkn4Xboj/aVxxJxF30bn
In-Reply-To: <20240108204909.564514-33-dwmw2@infradead.org>
X-Mimecast-Spam-Score: 0
X-Mimecast-Originator: redhat.com
Content-Language: en-US
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

On 08/01/2024 21.27, David Woodhouse wrote:
> From: David Woodhouse <dwmw@amazon.co.uk>
> 
> Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
> ---
>   hw/m68k/mcf5208.c | 19 ++++++-------------
>   1 file changed, 6 insertions(+), 13 deletions(-)
> 
> diff --git a/hw/m68k/mcf5208.c b/hw/m68k/mcf5208.c
> index d22d8536db..0cfb806c20 100644
> --- a/hw/m68k/mcf5208.c
> +++ b/hw/m68k/mcf5208.c
> @@ -206,16 +206,16 @@ static void mcf5208_sys_init(MemoryRegion *address_space, qemu_irq *pic)
>       }
>   }
>   
> -static void mcf_fec_init(MemoryRegion *sysmem, NICInfo *nd, hwaddr base,
> -                         qemu_irq *irqs)
> +static void mcf_fec_init(MemoryRegion *sysmem, hwaddr base, qemu_irq *irqs)
>   {
>       DeviceState *dev;
>       SysBusDevice *s;
>       int i;
>   
> -    qemu_check_nic_model(nd, TYPE_MCF_FEC_NET);
> -    dev = qdev_new(TYPE_MCF_FEC_NET);
> -    qdev_set_nic_properties(dev, nd);
> +    dev = qemu_create_nic_device(TYPE_MCF_FEC_NET, true, NULL);
> +    if (!dev) {
> +        return;
> +    }
>   
>       s = SYS_BUS_DEVICE(dev);
>       sysbus_realize_and_unref(s, &error_fatal);
> @@ -267,14 +267,7 @@ static void mcf5208evb_init(MachineState *machine)
>   
>       mcf5208_sys_init(address_space_mem, pic);
>   
> -    if (nb_nics > 1) {
> -        error_report("Too many NICs");
> -        exit(1);
> -    }

I wonder whether we'd need a different mechanism to specify the maximum 
amount of on-board NICs now... Anyway, we can also think of that later, so:

Reviewed-by: Thomas Huth <thuth@redhat.com>




From xen-devel-bounces@lists.xenproject.org Fri Jan 26 15:57:56 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 26 Jan 2024 15:57:56 +0000
Received: from list by lists.xenproject.org with outflank-mailman.672137.1045853 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTOaV-0003Ru-HS; Fri, 26 Jan 2024 15:57:51 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 672137.1045853; Fri, 26 Jan 2024 15:57:51 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTOaV-0003Rn-Cy; Fri, 26 Jan 2024 15:57:51 +0000
Received: by outflank-mailman (input) for mailman id 672137;
 Fri, 26 Jan 2024 15:57:49 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=UtOA=JE=redhat.com=thuth@srs-se1.protection.inumbo.net>)
 id 1rTOaT-0003Rh-Qs
 for xen-devel@lists.xenproject.org; Fri, 26 Jan 2024 15:57:49 +0000
Received: from us-smtp-delivery-124.mimecast.com
 (us-smtp-delivery-124.mimecast.com [170.10.129.124])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id a61c2919-bc63-11ee-98f5-efadbce2ee36;
 Fri, 26 Jan 2024 16:57:47 +0100 (CET)
Received: from mail-pf1-f199.google.com (mail-pf1-f199.google.com
 [209.85.210.199]) by relay.mimecast.com with ESMTP with STARTTLS
 (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id
 us-mta-473-7CAX5ugFOkiCeTWpQeSU0g-1; Fri, 26 Jan 2024 10:57:44 -0500
Received: by mail-pf1-f199.google.com with SMTP id
 d2e1a72fcca58-6dde06c6ab0so714233b3a.1
 for <xen-devel@lists.xenproject.org>; Fri, 26 Jan 2024 07:57:44 -0800 (PST)
Received: from [192.168.0.9] (ip-109-43-176-119.web.vodafone.de.
 [109.43.176.119]) by smtp.gmail.com with ESMTPSA id
 s191-20020a6377c8000000b005c67a388836sm1253488pgc.62.2024.01.26.07.57.28
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Fri, 26 Jan 2024 07:57:42 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: a61c2919-bc63-11ee-98f5-efadbce2ee36
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
	s=mimecast20190719; t=1706284666;
	h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
	 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references:autocrypt:autocrypt;
	bh=uICF0HlUwroZLnpf75Ri8CLLs3QRzc6G/+R5nSoBH4g=;
	b=SXffkU3cWtBB7t7Mz0fwNiMum8qXtLgVNAaq6iMOwJRvXdRWL8GNPnxCaQrx9UuySSm12c
	X7crrkWGj3+xmuDau5SYTChga9vzvWwhqn7IpN99t+B591TsPLfthbQY/xUSmXH002MdWL
	xSDIItQHdw6Uc+QJyDEydDVE7Lt9cQY=
X-MC-Unique: 7CAX5ugFOkiCeTWpQeSU0g-1
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706284663; x=1706889463;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=uICF0HlUwroZLnpf75Ri8CLLs3QRzc6G/+R5nSoBH4g=;
        b=YcZUk4X9gBKwRFwo7nORUs6fTt0Qv9enu7WPTju7TjTdoYGbjwiWMqLU01nZ/I+1vH
         lRgzVsRIKZrmadrJEtQ3aWG6KMfBJhqsuAuBpn8toVfTiolbfw86Z8stLa/AyT29w+6g
         813CFL4sMIiE2JDQ4o5RFZ/07WTbeZACwOC+8rmRL1YM9BT9vsku350uHDGSfMUI2Sxg
         PimK0f+pEnvHiHHJ899avbZx3O3qBbvtBAFEFdwqswln+iuMBhCD5n+l1LdvY1ui5wRi
         8fc+WUdRM+9DcpP0azS9UtOS5TGa2LQgV+loNnA7oglQXmAOs74lxLqYdQvpK6L96zLF
         6PZw==
X-Gm-Message-State: AOJu0Yz6+JWx9tPs8pGTzvMNOLnOFVNYv50WEfpa3/XHCIwUjZTKNjVl
	0ee7w/jQdcv88lhJUwzahLMVu0qecggyHSGrJ1OG7fL3U+lclVYmt/pLsNOGKseiKYa9gqttCRt
	1q9A5KBoC7KdW3ACpWrzabuq2VvylbtK6e4MJslq1Cha4P6U4cXwYvvnqa9M+uWWI
X-Received: by 2002:a05:6a20:be20:b0:19c:32cf:8ff2 with SMTP id ge32-20020a056a20be2000b0019c32cf8ff2mr1179219pzb.79.1706284663560;
        Fri, 26 Jan 2024 07:57:43 -0800 (PST)
X-Google-Smtp-Source: AGHT+IFZQOm5h/jLj/QMB8vNdMhQkOVX5I6vLQ693UCCVc/aQRp6NS+s3KWbdrdEUQBgK1ncGlBFCA==
X-Received: by 2002:a05:6a20:be20:b0:19c:32cf:8ff2 with SMTP id ge32-20020a056a20be2000b0019c32cf8ff2mr1179183pzb.79.1706284663142;
        Fri, 26 Jan 2024 07:57:43 -0800 (PST)
Message-ID: <0702e0c9-599f-4809-b0b2-3b2a85b32971@redhat.com>
Date: Fri, 26 Jan 2024 16:57:26 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 34/46] hw/microblaze: use qemu_configure_nic_device()
To: David Woodhouse <dwmw2@infradead.org>, qemu-devel@nongnu.org
Cc: Richard Henderson <richard.henderson@linaro.org>,
 Beniamino Galvani <b.galvani@gmail.com>,
 Peter Maydell <peter.maydell@linaro.org>,
 Strahinja Jankovic <strahinja.p.jankovic@gmail.com>,
 Niek Linnenbank <nieklinnenbank@gmail.com>, =?UTF-8?Q?C=C3=A9dric_Le_Goater?=
 <clg@kaod.org>, Andrew Jeffery <andrew@codeconstruct.com.au>,
 Joel Stanley <joel@jms.id.au>, Igor Mitsyanko <i.mitsyanko@gmail.com>,
 Jean-Christophe Dubois <jcd@tribudubois.net>,
 Andrey Smirnov <andrew.smirnov@gmail.com>,
 =?UTF-8?Q?Philippe_Mathieu-Daud=C3=A9?= <philmd@linaro.org>,
 Rob Herring <robh@kernel.org>, Subbaraya Sundeep <sundeep.lkml@gmail.com>,
 Jan Kiszka <jan.kiszka@web.de>, Tyrone Ting <kfting@nuvoton.com>,
 Hao Wu <wuhaotsh@google.com>, Radoslaw Biernacki <rad@semihalf.com>,
 Leif Lindholm <quic_llindhol@quicinc.com>,
 Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org>,
 "Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
 Alistair Francis <alistair@alistair23.me>, Helge Deller <deller@gmx.de>,
 Paolo Bonzini <pbonzini@redhat.com>, Eduardo Habkost <eduardo@habkost.net>,
 "Michael S. Tsirkin" <mst@redhat.com>,
 Marcel Apfelbaum <marcel.apfelbaum@gmail.com>, Song Gao
 <gaosong@loongson.cn>, Thomas Huth <huth@tuxfamily.org>,
 Laurent Vivier <laurent@vivier.eu>, Huacai Chen <chenhuacai@kernel.org>,
 Jiaxun Yang <jiaxun.yang@flygoat.com>,
 =?UTF-8?Q?Herv=C3=A9_Poussineau?= <hpoussin@reactos.org>,
 Aleksandar Rikalo <aleksandar.rikalo@syrmia.com>,
 Aurelien Jarno <aurelien@aurel32.net>, Jason Wang <jasowang@redhat.com>,
 Jia Liu <proljc@gmail.com>, Stafford Horne <shorne@gmail.com>,
 Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>,
 Nicholas Piggin <npiggin@gmail.com>,
 Daniel Henrique Barboza <danielhb413@gmail.com>,
 David Gibson <david@gibson.dropbear.id.au>,
 Harsh Prateek Bora <harshpb@linux.ibm.com>, Bin Meng
 <bin.meng@windriver.com>, Palmer Dabbelt <palmer@dabbelt.com>,
 Weiwei Li <liwei1518@gmail.com>, Liu Zhiwei <zhiwei_liu@linux.alibaba.com>,
 Halil Pasic <pasic@linux.ibm.com>,
 Christian Borntraeger <borntraeger@linux.ibm.com>,
 Eric Farman <farman@linux.ibm.com>, David Hildenbrand <david@redhat.com>,
 Ilya Leoshkevich <iii@linux.ibm.com>,
 Yoshinori Sato <ysato@users.sourceforge.jp>,
 Magnus Damm <magnus.damm@gmail.com>, Artyom Tarasenko <atar4qemu@gmail.com>,
 Stefano Stabellini <sstabellini@kernel.org>,
 Anthony Perard <anthony.perard@citrix.com>, Paul Durrant <paul@xen.org>,
 Max Filippov <jcmvbkbc@gmail.com>, qemu-arm@nongnu.org, qemu-ppc@nongnu.org,
 qemu-riscv@nongnu.org, qemu-s390x@nongnu.org,
 xen-devel@lists.xenproject.org, David Woodhouse <dwmw@amazon.co.uk>
References: <20240108204909.564514-1-dwmw2@infradead.org>
 <20240108204909.564514-35-dwmw2@infradead.org>
From: Thomas Huth <thuth@redhat.com>
Autocrypt: addr=thuth@redhat.com; keydata=
 xsFNBFH7eUwBEACzyOXKU+5Pcs6wNpKzrlJwzRl3VGZt95VCdb+FgoU9g11m7FWcOafrVRwU
 yYkTm9+7zBUc0sW5AuPGR/dp3pSLX/yFWsA/UB4nJsHqgDvDU7BImSeiTrnpMOTXb7Arw2a2
 4CflIyFqjCpfDM4MuTmzTjXq4Uov1giGE9X6viNo1pxyEpd7PanlKNnf4PqEQp06X4IgUacW
 tSGj6Gcns1bCuHV8OPWLkf4hkRnu8hdL6i60Yxz4E6TqlrpxsfYwLXgEeswPHOA6Mn4Cso9O
 0lewVYfFfsmokfAVMKWzOl1Sr0KGI5T9CpmRfAiSHpthhHWnECcJFwl72NTi6kUcUzG4se81
 O6n9d/kTj7pzTmBdfwuOZ0YUSqcqs0W+l1NcASSYZQaDoD3/SLk+nqVeCBB4OnYOGhgmIHNW
 0CwMRO/GK+20alxzk//V9GmIM2ACElbfF8+Uug3pqiHkVnKqM7W9/S1NH2qmxB6zMiJUHlTH
 gnVeZX0dgH27mzstcF786uPcdEqS0KJuxh2kk5IvUSL3Qn3ZgmgdxBMyCPciD/1cb7/Ahazr
 3ThHQXSHXkH/aDXdfLsKVuwDzHLVSkdSnZdt5HHh75/NFHxwaTlydgfHmFFwodK8y/TjyiGZ
 zg2Kje38xnz8zKn9iesFBCcONXS7txENTzX0z80WKBhK+XSFJwARAQABzR5UaG9tYXMgSHV0
 aCA8dGh1dGhAcmVkaGF0LmNvbT7CwXgEEwECACIFAlVgX6oCGwMGCwkIBwMCBhUIAgkKCwQW
 AgMBAh4BAheAAAoJEC7Z13T+cC21EbIP/ii9cvT2HHGbFRl8HqGT6+7Wkb+XLMqJBMAIGiQK
 QIP3xk1HPTsLfVG0ao4hy/oYkGNOP8+ubLnZen6Yq3zAFiMhQ44lvgigDYJo3Ve59gfe99KX
 EbtB+X95ODARkq0McR6OAsPNJ7gpEUzfkQUUJTXRDQXfG/FX303Gvk+YU0spm2tsIKPl6AmV
 1CegDljzjycyfJbk418MQmMu2T82kjrkEofUO2a24ed3VGC0/Uz//XCR2ZTo+vBoBUQl41BD
 eFFtoCSrzo3yPFS+w5fkH9NT8ChdpSlbNS32NhYQhJtr9zjWyFRf0Zk+T/1P7ECn6gTEkp5k
 ofFIA4MFBc/fXbaDRtBmPB0N9pqTFApIUI4vuFPPO0JDrII9dLwZ6lO9EKiwuVlvr1wwzsgq
 zJTPBU3qHaUO4d/8G+gD7AL/6T4zi8Jo/GmjBsnYaTzbm94lf0CjXjsOX3seMhaE6WAZOQQG
 tZHAO1kAPWpaxne+wtgMKthyPLNwelLf+xzGvrIKvLX6QuLoWMnWldu22z2ICVnLQChlR9d6
 WW8QFEpo/FK7omuS8KvvopFcOOdlbFMM8Y/8vBgVMSsK6fsYUhruny/PahprPbYGiNIhKqz7
 UvgyZVl4pBFjTaz/SbimTk210vIlkDyy1WuS8Zsn0htv4+jQPgo9rqFE4mipJjy/iboDzsFN
 BFH7eUwBEAC2nzfUeeI8dv0C4qrfCPze6NkryUflEut9WwHhfXCLjtvCjnoGqFelH/PE9NF4
 4VPSCdvD1SSmFVzu6T9qWdcwMSaC+e7G/z0/AhBfqTeosAF5XvKQlAb9ZPkdDr7YN0a1XDfa
 +NgA+JZB4ROyBZFFAwNHT+HCnyzy0v9Sh3BgJJwfpXHH2l3LfncvV8rgFv0bvdr70U+On2XH
 5bApOyW1WpIG5KPJlDdzcQTyptOJ1dnEHfwnABEfzI3dNf63rlxsGouX/NFRRRNqkdClQR3K
 gCwciaXfZ7ir7fF0u1N2UuLsWA8Ei1JrNypk+MRxhbvdQC4tyZCZ8mVDk+QOK6pyK2f4rMf/
 WmqxNTtAVmNuZIwnJdjRMMSs4W4w6N/bRvpqtykSqx7VXcgqtv6eqoDZrNuhGbekQA0sAnCJ
 VPArerAZGArm63o39me/bRUQeQVSxEBmg66yshF9HkcUPGVeC4B0TPwz+HFcVhheo6hoJjLq
 knFOPLRj+0h+ZL+D0GenyqD3CyuyeTT5dGcNU9qT74bdSr20k/CklvI7S9yoQje8BeQAHtdV
 cvO8XCLrpGuw9SgOS7OP5oI26a0548M4KldAY+kqX6XVphEw3/6U1KTf7WxW5zYLTtadjISB
 X9xsRWSU+Yqs3C7oN5TIPSoj9tXMoxZkCIHWvnqGwZ7JhwARAQABwsFfBBgBAgAJBQJR+3lM
 AhsMAAoJEC7Z13T+cC21hPAQAIsBL9MdGpdEpvXs9CYrBkd6tS9mbaSWj6XBDfA1AEdQkBOn
 ZH1Qt7HJesk+qNSnLv6+jP4VwqK5AFMrKJ6IjE7jqgzGxtcZnvSjeDGPF1h2CKZQPpTw890k
 fy18AvgFHkVk2Oylyexw3aOBsXg6ukN44vIFqPoc+YSU0+0QIdYJp/XFsgWxnFIMYwDpxSHS
 5fdDxUjsk3UBHZx+IhFjs2siVZi5wnHIqM7eK9abr2cK2weInTBwXwqVWjsXZ4tq5+jQrwDK
 cvxIcwXdUTLGxc4/Z/VRH1PZSvfQxdxMGmNTGaXVNfdFZjm4fz0mz+OUi6AHC4CZpwnsliGV
 ODqwX8Y1zic9viSTbKS01ZNp175POyWViUk9qisPZB7ypfSIVSEULrL347qY/hm9ahhqmn17
 Ng255syASv3ehvX7iwWDfzXbA0/TVaqwa1YIkec+/8miicV0zMP9siRcYQkyTqSzaTFBBmqD
 oiT+z+/E59qj/EKfyce3sbC9XLjXv3mHMrq1tKX4G7IJGnS989E/fg6crv6NHae9Ckm7+lSs
 IQu4bBP2GxiRQ+NV3iV/KU3ebMRzqIC//DCOxzQNFNJAKldPe/bKZMCxEqtVoRkuJtNdp/5a
 yXFZ6TfE1hGKrDBYAm4vrnZ4CXFSBDllL59cFFOJCkn4Xboj/aVxxJxF30bn
In-Reply-To: <20240108204909.564514-35-dwmw2@infradead.org>
X-Mimecast-Spam-Score: 0
X-Mimecast-Originator: redhat.com
Content-Language: en-US
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

On 08/01/2024 21.27, David Woodhouse wrote:
> From: David Woodhouse <dwmw@amazon.co.uk>
> 
> Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
> ---
>   hw/microblaze/petalogix_ml605_mmu.c      | 3 +--
>   hw/microblaze/petalogix_s3adsp1800_mmu.c | 3 +--
>   2 files changed, 2 insertions(+), 4 deletions(-)
> 
> diff --git a/hw/microblaze/petalogix_ml605_mmu.c b/hw/microblaze/petalogix_ml605_mmu.c
> index fb7889cf67..0f5fabc32e 100644
> --- a/hw/microblaze/petalogix_ml605_mmu.c
> +++ b/hw/microblaze/petalogix_ml605_mmu.c
> @@ -133,7 +133,6 @@ petalogix_ml605_init(MachineState *machine)
>       sysbus_connect_irq(SYS_BUS_DEVICE(dev), 0, irq[TIMER_IRQ]);
>   
>       /* axi ethernet and dma initialization. */
> -    qemu_check_nic_model(&nd_table[0], "xlnx.axi-ethernet");
>       eth0 = qdev_new("xlnx.axi-ethernet");
>       dma = qdev_new("xlnx.axi-dma");
>   
> @@ -145,7 +144,7 @@ petalogix_ml605_init(MachineState *machine)
>                                     "axistream-connected-target", NULL);
>       cs = object_property_get_link(OBJECT(dma),
>                                     "axistream-control-connected-target", NULL);
> -    qdev_set_nic_properties(eth0, &nd_table[0]);
> +    qemu_configure_nic_device(eth0, true, NULL);
>       qdev_prop_set_uint32(eth0, "rxmem", 0x1000);
>       qdev_prop_set_uint32(eth0, "txmem", 0x1000);
>       object_property_set_link(OBJECT(eth0), "axistream-connected", ds,
> diff --git a/hw/microblaze/petalogix_s3adsp1800_mmu.c b/hw/microblaze/petalogix_s3adsp1800_mmu.c
> index 505639c298..dad46bd7f9 100644
> --- a/hw/microblaze/petalogix_s3adsp1800_mmu.c
> +++ b/hw/microblaze/petalogix_s3adsp1800_mmu.c
> @@ -114,9 +114,8 @@ petalogix_s3adsp1800_init(MachineState *machine)
>       sysbus_mmio_map(SYS_BUS_DEVICE(dev), 0, TIMER_BASEADDR);
>       sysbus_connect_irq(SYS_BUS_DEVICE(dev), 0, irq[TIMER_IRQ]);
>   
> -    qemu_check_nic_model(&nd_table[0], "xlnx.xps-ethernetlite");
>       dev = qdev_new("xlnx.xps-ethernetlite");
> -    qdev_set_nic_properties(dev, &nd_table[0]);
> +    qemu_configure_nic_device(dev, true, NULL);
>       qdev_prop_set_uint32(dev, "tx-ping-pong", 0);
>       qdev_prop_set_uint32(dev, "rx-ping-pong", 0);
>       sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal);

Reviewed-by: Thomas Huth <thuth@redhat.com>



From xen-devel-bounces@lists.xenproject.org Fri Jan 26 15:58:55 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 26 Jan 2024 15:58:55 +0000
Received: from list by lists.xenproject.org with outflank-mailman.672140.1045862 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTObW-0004RR-Ow; Fri, 26 Jan 2024 15:58:54 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 672140.1045862; Fri, 26 Jan 2024 15:58:54 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTObW-0004RK-MG; Fri, 26 Jan 2024 15:58:54 +0000
Received: by outflank-mailman (input) for mailman id 672140;
 Fri, 26 Jan 2024 15:58:53 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=DqdW=JE=gmail.com=oleksii.kurochko@srs-se1.protection.inumbo.net>)
 id 1rTObV-0004M7-5X
 for xen-devel@lists.xenproject.org; Fri, 26 Jan 2024 15:58:53 +0000
Received: from mail-lf1-x134.google.com (mail-lf1-x134.google.com
 [2a00:1450:4864:20::134])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id cc4ac08c-bc63-11ee-98f5-efadbce2ee36;
 Fri, 26 Jan 2024 16:58:51 +0100 (CET)
Received: by mail-lf1-x134.google.com with SMTP id
 2adb3069b0e04-510218c4a0eso1372180e87.1
 for <xen-devel@lists.xenproject.org>; Fri, 26 Jan 2024 07:58:51 -0800 (PST)
Received: from [192.168.206.239] ([94.75.70.14])
 by smtp.gmail.com with ESMTPSA id
 x23-20020a19e017000000b0051011f26471sm216939lfg.9.2024.01.26.07.58.49
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Fri, 26 Jan 2024 07:58:50 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: cc4ac08c-bc63-11ee-98f5-efadbce2ee36
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1706284730; x=1706889530; darn=lists.xenproject.org;
        h=mime-version:user-agent:content-transfer-encoding:references
         :in-reply-to:date:cc:to:from:subject:message-id:from:to:cc:subject
         :date:message-id:reply-to;
        bh=uZOvO3x3u/ipc+lklxD98+c44oiJeF1Z7ag6u/VJbSo=;
        b=GI5A6Z+8Vsji4GTUAT6C4wzwZDD5/qojkzarw3VrjKemaF5pN30Dh2pCYVim+V3Rp6
         7RifXWuJWgk/JoeVsUsp8bqyFzdVHGJZjtCHtjHtMKbaEPhROpl8+KBlbhax6SzgAJdp
         Rvpzh8y2l7Cl6RAM1lkW5fTMaZT9cSvMPGEydlFnge5nLGfHWh1IPsNOKbkf3GzmjlBe
         w4lZZHgMDxuS2lwsm1DWBJs4MeY/PqPuAJXOlVDNp13uoHzLvp1d1XbODSX8rqZjTXlB
         87jQoeE7hisJsi9Ncf3aWVxVFayMEWt6OzH3V6Z1c5t0ku4MWv7lZZOGzRyN6o3STh7C
         q5mQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706284730; x=1706889530;
        h=mime-version:user-agent:content-transfer-encoding:references
         :in-reply-to:date:cc:to:from:subject:message-id:x-gm-message-state
         :from:to:cc:subject:date:message-id:reply-to;
        bh=uZOvO3x3u/ipc+lklxD98+c44oiJeF1Z7ag6u/VJbSo=;
        b=OaoNFVJsxCCoz7mqxAkR8HE7ViRvvjkN6H94VURI/r7MkCi+Bwg5gV4swwy9+O41cg
         50xkh2QmvRcpy1hH4n51v0RsvoXNrEoWzXOLMtm/01nr9AfSfSkJv2CLZhv7dZm8FPAg
         2f83495U7HuYoDDNDLs+UoTLviVeSRI/AmPxQW1nRWODupFp54Zl4V2SeV2nl5qKWF3E
         /I/bdhNgis81lYbmeaoa5jj+S1C6uemN0GusNf6f5dI+7R2xRVZ6WhnsJoAKpGKs0P+g
         oUgaMXuogc9uLGuAw1feUg8v0yZb1PnrawfE/pGhXqMZyAjdPJSNgWeUYcgTk0lpaetD
         x5vA==
X-Gm-Message-State: AOJu0YzKSdUTSjAPu38Z7jYS0DSYUVLwj+VejAGmAghaZ2ZkmUTm9DJv
	RWU8tv59fMzQG6kCJ6+GkDWGgUJIkv7ujBCntW9hDNyFO4TI622y
X-Google-Smtp-Source: AGHT+IHbcaw2IH/NOChKzYd17B5h164pugdcPI/pFNtlp7GlPJqAddQjNgnDGmBc2jgymQgFLhaWSQ==
X-Received: by 2002:a19:ac48:0:b0:510:1706:2c3f with SMTP id r8-20020a19ac48000000b0051017062c3fmr29893lfc.22.1706284730286;
        Fri, 26 Jan 2024 07:58:50 -0800 (PST)
Message-ID: <1104df46d7780ef1bbcb6c745685b10fe6d2aa5d.camel@gmail.com>
Subject: Re: [PATCH] xen/lib: introduce generic find next bit operations
From: Oleksii <oleksii.kurochko@gmail.com>
To: Julien Grall <julien@xen.org>, xen-devel@lists.xenproject.org
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, George Dunlap
 <george.dunlap@citrix.com>, Jan Beulich <jbeulich@suse.com>, Stefano
 Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>, Bertrand Marquis
 <bertrand.marquis@arm.com>, Michal Orzel <michal.orzel@amd.com>, Volodymyr
 Babchuk <Volodymyr_Babchuk@epam.com>, Shawn Anastasio
 <sanastasio@raptorengineering.com>
Date: Fri, 26 Jan 2024 17:58:49 +0200
In-Reply-To: <f8602dc5-e603-42fc-b3a2-dc71c55db341@xen.org>
References: 
	<52730e6314210ba4164a9934a720c4fda201447b.1706266854.git.oleksii.kurochko@gmail.com>
	 <f8602dc5-e603-42fc-b3a2-dc71c55db341@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
User-Agent: Evolution 3.50.2 (3.50.2-1.fc39) 
MIME-Version: 1.0

On Fri, 2024-01-26 at 13:20 +0000, Julien Grall wrote:
> Hi,
Hi Julien,

>=20
> On 26/01/2024 12:20, Oleksii Kurochko wrote:
> > find-next-bit.c is common for Arm64, PPC and RISCV64,
> > so it is moved to xen/lib.
> >=20
> > Suggested-by: Jan Beulich <jbeulich@suse.com>
> > Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>
> > ---
> > =C2=A0 docs/misra/exclude-list.json=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 |=C2=A0=
=C2=A0 4 -
> > =C2=A0 xen/arch/arm/arm64/lib/Makefile=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 |=C2=A0=C2=A0 2 +-
> > =C2=A0 xen/arch/arm/include/asm/arm64/bitops.h=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0 |=C2=A0 48 --------
> > =C2=A0 xen/arch/ppc/include/asm/bitops.h=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 | 115 -------------
> > -----
> > =C2=A0 xen/include/xen/bitops.h=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0 |=C2=A0 48 ++++++++
> > =C2=A0 xen/lib/Makefile=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 |=C2=A0=C2=A0 1 +
> > =C2=A0 .../find_next_bit.c =3D> lib/find-next-bit.c}=C2=A0=C2=A0 |=C2=
=A0=C2=A0 0
> > =C2=A0 7 files changed, 50 insertions(+), 168 deletions(-)
> > =C2=A0 rename xen/{arch/arm/arm64/lib/find_next_bit.c =3D> lib/find-nex=
t-
> > bit.c} (100%)
> >=20
> > diff --git a/docs/misra/exclude-list.json b/docs/misra/exclude-
> > list.json
> > index 7971d0e70f..7fe02b059d 100644
> > --- a/docs/misra/exclude-list.json
> > +++ b/docs/misra/exclude-list.json
> > @@ -13,10 +13,6 @@
> > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0 "rel_path": "arch/arm/arm64/insn.c",
> > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0 "comment": "Imported on Linux, ignore for now"
> > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 },
> > -=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 {
> > -=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "re=
l_path": "arch/arm/arm64/lib/find_next_bit.c",
>=20
> Rather than removing the section, I was expecting the rel_path to be=20
> updated. Can you explain why you think the exclusion is not
> necessary?
I considered simply updating the path to xen/lib/find-next-bit.c, but
ultimately opted to remove it. This decision was based on the fact that
the line in question checks for a file that no longer exists. If it's
preferable to update the rel_path with xen/lib/find-next-bit.c, I'm
more than willing to make that adjustment.

>=20
> > -=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "co=
mment": "Imported from Linux, ignore for now"
> > -=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 },
> > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 {
> > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0 "rel_path": "arch/x86/acpi/boot.c",
> > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0 "comment": "Imported from Linux, ignore for now"
> > diff --git a/xen/arch/arm/arm64/lib/Makefile
> > b/xen/arch/arm/arm64/lib/Makefile
> > index 1b9c7a95e6..66cfac435a 100644
> > --- a/xen/arch/arm/arm64/lib/Makefile
> > +++ b/xen/arch/arm/arm64/lib/Makefile
> > @@ -1,4 +1,4 @@
> > =C2=A0 obj-y +=3D memcpy.o memcmp.o memmove.o memset.o memchr.o
> > =C2=A0 obj-y +=3D clear_page.o
> > -obj-y +=3D bitops.o find_next_bit.o
> > +obj-y +=3D bitops.o
> > =C2=A0 obj-y +=3D strchr.o strcmp.o strlen.o strncmp.o strnlen.o strrch=
r.o
> > diff --git a/xen/arch/arm/include/asm/arm64/bitops.h
> > b/xen/arch/arm/include/asm/arm64/bitops.h
> > index d85a49bca4..f9dd066237 100644
> > --- a/xen/arch/arm/include/asm/arm64/bitops.h
> > +++ b/xen/arch/arm/include/asm/arm64/bitops.h
> > @@ -36,57 +36,9 @@ static inline int flsl(unsigned long x)
> > =C2=A0=20
> > =C2=A0 /* Based on linux/include/asm-generic/bitops/find.h */
> > =C2=A0=20
> > -#ifndef find_next_bit
> > -/**
> > - * find_next_bit - find the next set bit in a memory region
> > - * @addr: The address to base the search on
> > - * @offset: The bitnumber to start searching at
> > - * @size: The bitmap size in bits
> > - */
> > -extern unsigned long find_next_bit(const unsigned long *addr,
> > unsigned long
> > -		size, unsigned long offset);
> > -#endif
> > -
> > -#ifndef find_next_zero_bit
> > -/**
> > - * find_next_zero_bit - find the next cleared bit in a memory
> > region
> > - * @addr: The address to base the search on
> > - * @offset: The bitnumber to start searching at
> > - * @size: The bitmap size in bits
> > - */
> > -extern unsigned long find_next_zero_bit(const unsigned long *addr,
> > unsigned
> > -		long size, unsigned long offset);
> > -#endif
> > -
> > -#ifdef CONFIG_GENERIC_FIND_FIRST_BIT
> > -
> > -/**
> > - * find_first_bit - find the first set bit in a memory region
> > - * @addr: The address to start the search at
> > - * @size: The maximum size to search
> > - *
> > - * Returns the bit number of the first set bit.
> > - */
> > -extern unsigned long find_first_bit(const unsigned long *addr,
> > -				=C2=A0=C2=A0=C2=A0 unsigned long size);
> > -
> > -/**
> > - * find_first_zero_bit - find the first cleared bit in a memory
> > region
> > - * @addr: The address to start the search at
> > - * @size: The maximum size to search
> > - *
> > - * Returns the bit number of the first cleared bit.
> > - */
> > -extern unsigned long find_first_zero_bit(const unsigned long
> > *addr,
> > -					 unsigned long size);
> > -#else /* CONFIG_GENERIC_FIND_FIRST_BIT */
> > -
> > =C2=A0 #define find_first_bit(addr, size) find_next_bit((addr), (size),
> > 0)
> > =C2=A0 #define find_first_zero_bit(addr, size)
> > find_next_zero_bit((addr), (size), 0)
> > =C2=A0=20
> > -#endif /* CONFIG_GENERIC_FIND_FIRST_BIT */
>=20
> AFAICT, you are changing the behavior for Arm64 without explaining
> why.=20
> Before, it was possible to set CONFIG_GENERIC_FIND_FIRST_BIT so the=20
> generic version of find_first_*_bit are used. This is not possible=20
> anymore with your change.
>=20
> Looking at Linux, I see that arm64 is now selecting=20
> GENERIC_FIND_FIRST_BIT (see [1]). So I would argue, we should not
> define=20
> find_first_bit(). That said, that's probably a separate patch.
>=20
> For now, you want to explain why GENERIC_FIND_FIRST_BIT is dropped.
I chose to remove it because I couldn't find any usage or configuration
setting for this in Xen (Arm).

I can add "#ifdef GENERIC_FIND_FIRST_BIT" around find_first_zero_bit()
and find_first_bit() in xen/bitops.h, and according to the link [1], it
should be wrapped with ifdef. Perhaps it would be better to use "#if
defined(GENERIC_FIND_FIRST_BIT) && defined(CONFIG_ARM_64)".

My only concern is that it might seem somewhat inconsistent with the
other find_*_bit() functions added in this patch. Should we be care
about that? I mean that do we need similar config or it would be enough
to add a comment why it is necessary to have ifdef
GENERIC_FIND_FIRST_BIT.

~ Oleksii
>=20
> [1]=20
> https://lore.kernel.org/linux-arch/20210225135700.1381396-1-yury.norov@gm=
ail.com/
>=20



From xen-devel-bounces@lists.xenproject.org Fri Jan 26 16:02:16 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 26 Jan 2024 16:02:16 +0000
Received: from list by lists.xenproject.org with outflank-mailman.672148.1045873 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTOek-0006xD-Bz; Fri, 26 Jan 2024 16:02:14 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 672148.1045873; Fri, 26 Jan 2024 16:02:14 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTOek-0006x6-8i; Fri, 26 Jan 2024 16:02:14 +0000
Received: by outflank-mailman (input) for mailman id 672148;
 Fri, 26 Jan 2024 16:02:12 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=UtOA=JE=redhat.com=thuth@srs-se1.protection.inumbo.net>)
 id 1rTOei-0006wq-QW
 for xen-devel@lists.xenproject.org; Fri, 26 Jan 2024 16:02:12 +0000
Received: from us-smtp-delivery-124.mimecast.com
 (us-smtp-delivery-124.mimecast.com [170.10.129.124])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 439be5e4-bc64-11ee-8a43-1f161083a0e0;
 Fri, 26 Jan 2024 17:02:12 +0100 (CET)
Received: from mail-qt1-f199.google.com (mail-qt1-f199.google.com
 [209.85.160.199]) by relay.mimecast.com with ESMTP with STARTTLS
 (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id
 us-mta-351-5Y4Ehc4wOEiIj7ezvT7o_A-1; Fri, 26 Jan 2024 11:02:08 -0500
Received: by mail-qt1-f199.google.com with SMTP id
 d75a77b69052e-42987be5d14so6379891cf.1
 for <xen-devel@lists.xenproject.org>; Fri, 26 Jan 2024 08:02:08 -0800 (PST)
Received: from [192.168.0.9] (ip-109-43-176-119.web.vodafone.de.
 [109.43.176.119]) by smtp.gmail.com with ESMTPSA id
 ie7-20020a05622a698700b00427fabefe3bsm616431qtb.52.2024.01.26.08.01.52
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Fri, 26 Jan 2024 08:02:05 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 439be5e4-bc64-11ee-8a43-1f161083a0e0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
	s=mimecast20190719; t=1706284931;
	h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
	 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references:autocrypt:autocrypt;
	bh=K0i04O7174d0OKv11gEirJYlyXb4UP+O2CnLeSTT3do=;
	b=P/KZN9ngU5yssRLaL7dQDxs3a8sa24u1MXd1K4j74T9hl38XESBkZWVmcT8JWBkQUVnewj
	8eznbrVFyAC3NgSwVhFz7r8unMTFlgLC/JHu7yKax2RjpBkDUTNoWtdGThXtNFAWhSNB/5
	g3MwLjFhnxaAY1vi8dy0IZGXQ1d/mTg=
X-MC-Unique: 5Y4Ehc4wOEiIj7ezvT7o_A-1
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706284928; x=1706889728;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=K0i04O7174d0OKv11gEirJYlyXb4UP+O2CnLeSTT3do=;
        b=TgQ377eUWAz9Y9Yd/NmHawKfMuSHtY0FUcShsVw8Ydqe1XxJGF4IQ7gyDcNAxKEc6d
         RNWHsIF/aQnf+/HJgu74a9+sLAyFy793VkvEVrFS1iMm9/D20AiMPusZofgmrdGGBwRp
         TP/U4yNUfzNGD7jiiXVuWGUju9+e08MIHlbz4CPolT9gAJnt10gUXhLI2QUCW0sWWn4x
         5EB+r8r17gYDPmW+NNXLqo8hv3NMO3Ec6Cv95oFQKY0Uc9M6XzHfHl4DX768ftEvc1F1
         fdBRFFeTwaCvE9aXx3kyIcwdm8EhzehI+kK1J6erodTIU4N3dTgKK0gnntpfldW5jGGP
         E33Q==
X-Gm-Message-State: AOJu0YyI4tWfW02b8bHPqKSfWANxFb6Pgi7SiNGIykgF+kbAfs8aJOKf
	Ax785NaDqV22KOsSDvhonAH3PNsCt9R5h+T6IwWvUeOoDAp8ctRzXJXA+sfZDPSEbzoCQMRc4NI
	OQF1d55pjmGqTsk5KK2yHpagdn+MWKG29H94+bRP3BSR4T7GfJMRhYSqYU+imEp2f
X-Received: by 2002:a05:622a:2485:b0:42a:3bcd:d1ba with SMTP id cn5-20020a05622a248500b0042a3bcdd1bamr86516qtb.33.1706284927983;
        Fri, 26 Jan 2024 08:02:07 -0800 (PST)
X-Google-Smtp-Source: AGHT+IEUI4/Z/eOfg4yDo1GeeqGPkAlWYAog6diD37K8WillbyWHP4eC/1xzEmLGiQxLpoMJJ8MX5Q==
X-Received: by 2002:a05:622a:2485:b0:42a:3bcd:d1ba with SMTP id cn5-20020a05622a248500b0042a3bcdd1bamr86371qtb.33.1706284926215;
        Fri, 26 Jan 2024 08:02:06 -0800 (PST)
Message-ID: <befd1aaf-91af-465e-888f-1ed8db6282dc@redhat.com>
Date: Fri, 26 Jan 2024 17:01:50 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 43/46] net: remove qemu_check_nic_model()
To: David Woodhouse <dwmw2@infradead.org>, qemu-devel@nongnu.org
Cc: Richard Henderson <richard.henderson@linaro.org>,
 Beniamino Galvani <b.galvani@gmail.com>,
 Peter Maydell <peter.maydell@linaro.org>,
 Strahinja Jankovic <strahinja.p.jankovic@gmail.com>,
 Niek Linnenbank <nieklinnenbank@gmail.com>, =?UTF-8?Q?C=C3=A9dric_Le_Goater?=
 <clg@kaod.org>, Andrew Jeffery <andrew@codeconstruct.com.au>,
 Joel Stanley <joel@jms.id.au>, Igor Mitsyanko <i.mitsyanko@gmail.com>,
 Jean-Christophe Dubois <jcd@tribudubois.net>,
 Andrey Smirnov <andrew.smirnov@gmail.com>,
 =?UTF-8?Q?Philippe_Mathieu-Daud=C3=A9?= <philmd@linaro.org>,
 Rob Herring <robh@kernel.org>, Subbaraya Sundeep <sundeep.lkml@gmail.com>,
 Jan Kiszka <jan.kiszka@web.de>, Tyrone Ting <kfting@nuvoton.com>,
 Hao Wu <wuhaotsh@google.com>, Radoslaw Biernacki <rad@semihalf.com>,
 Leif Lindholm <quic_llindhol@quicinc.com>,
 Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org>,
 "Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
 Alistair Francis <alistair@alistair23.me>, Helge Deller <deller@gmx.de>,
 Paolo Bonzini <pbonzini@redhat.com>, Eduardo Habkost <eduardo@habkost.net>,
 "Michael S. Tsirkin" <mst@redhat.com>,
 Marcel Apfelbaum <marcel.apfelbaum@gmail.com>, Song Gao
 <gaosong@loongson.cn>, Thomas Huth <huth@tuxfamily.org>,
 Laurent Vivier <laurent@vivier.eu>, Huacai Chen <chenhuacai@kernel.org>,
 Jiaxun Yang <jiaxun.yang@flygoat.com>,
 =?UTF-8?Q?Herv=C3=A9_Poussineau?= <hpoussin@reactos.org>,
 Aleksandar Rikalo <aleksandar.rikalo@syrmia.com>,
 Aurelien Jarno <aurelien@aurel32.net>, Jason Wang <jasowang@redhat.com>,
 Jia Liu <proljc@gmail.com>, Stafford Horne <shorne@gmail.com>,
 Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>,
 Nicholas Piggin <npiggin@gmail.com>,
 Daniel Henrique Barboza <danielhb413@gmail.com>,
 David Gibson <david@gibson.dropbear.id.au>,
 Harsh Prateek Bora <harshpb@linux.ibm.com>, Bin Meng
 <bin.meng@windriver.com>, Palmer Dabbelt <palmer@dabbelt.com>,
 Weiwei Li <liwei1518@gmail.com>, Liu Zhiwei <zhiwei_liu@linux.alibaba.com>,
 Halil Pasic <pasic@linux.ibm.com>,
 Christian Borntraeger <borntraeger@linux.ibm.com>,
 Eric Farman <farman@linux.ibm.com>, David Hildenbrand <david@redhat.com>,
 Ilya Leoshkevich <iii@linux.ibm.com>,
 Yoshinori Sato <ysato@users.sourceforge.jp>,
 Magnus Damm <magnus.damm@gmail.com>, Artyom Tarasenko <atar4qemu@gmail.com>,
 Stefano Stabellini <sstabellini@kernel.org>,
 Anthony Perard <anthony.perard@citrix.com>, Paul Durrant <paul@xen.org>,
 Max Filippov <jcmvbkbc@gmail.com>, qemu-arm@nongnu.org, qemu-ppc@nongnu.org,
 qemu-riscv@nongnu.org, qemu-s390x@nongnu.org,
 xen-devel@lists.xenproject.org, David Woodhouse <dwmw@amazon.co.uk>
References: <20240108204909.564514-1-dwmw2@infradead.org>
 <20240108204909.564514-44-dwmw2@infradead.org>
From: Thomas Huth <thuth@redhat.com>
Autocrypt: addr=thuth@redhat.com; keydata=
 xsFNBFH7eUwBEACzyOXKU+5Pcs6wNpKzrlJwzRl3VGZt95VCdb+FgoU9g11m7FWcOafrVRwU
 yYkTm9+7zBUc0sW5AuPGR/dp3pSLX/yFWsA/UB4nJsHqgDvDU7BImSeiTrnpMOTXb7Arw2a2
 4CflIyFqjCpfDM4MuTmzTjXq4Uov1giGE9X6viNo1pxyEpd7PanlKNnf4PqEQp06X4IgUacW
 tSGj6Gcns1bCuHV8OPWLkf4hkRnu8hdL6i60Yxz4E6TqlrpxsfYwLXgEeswPHOA6Mn4Cso9O
 0lewVYfFfsmokfAVMKWzOl1Sr0KGI5T9CpmRfAiSHpthhHWnECcJFwl72NTi6kUcUzG4se81
 O6n9d/kTj7pzTmBdfwuOZ0YUSqcqs0W+l1NcASSYZQaDoD3/SLk+nqVeCBB4OnYOGhgmIHNW
 0CwMRO/GK+20alxzk//V9GmIM2ACElbfF8+Uug3pqiHkVnKqM7W9/S1NH2qmxB6zMiJUHlTH
 gnVeZX0dgH27mzstcF786uPcdEqS0KJuxh2kk5IvUSL3Qn3ZgmgdxBMyCPciD/1cb7/Ahazr
 3ThHQXSHXkH/aDXdfLsKVuwDzHLVSkdSnZdt5HHh75/NFHxwaTlydgfHmFFwodK8y/TjyiGZ
 zg2Kje38xnz8zKn9iesFBCcONXS7txENTzX0z80WKBhK+XSFJwARAQABzR5UaG9tYXMgSHV0
 aCA8dGh1dGhAcmVkaGF0LmNvbT7CwXgEEwECACIFAlVgX6oCGwMGCwkIBwMCBhUIAgkKCwQW
 AgMBAh4BAheAAAoJEC7Z13T+cC21EbIP/ii9cvT2HHGbFRl8HqGT6+7Wkb+XLMqJBMAIGiQK
 QIP3xk1HPTsLfVG0ao4hy/oYkGNOP8+ubLnZen6Yq3zAFiMhQ44lvgigDYJo3Ve59gfe99KX
 EbtB+X95ODARkq0McR6OAsPNJ7gpEUzfkQUUJTXRDQXfG/FX303Gvk+YU0spm2tsIKPl6AmV
 1CegDljzjycyfJbk418MQmMu2T82kjrkEofUO2a24ed3VGC0/Uz//XCR2ZTo+vBoBUQl41BD
 eFFtoCSrzo3yPFS+w5fkH9NT8ChdpSlbNS32NhYQhJtr9zjWyFRf0Zk+T/1P7ECn6gTEkp5k
 ofFIA4MFBc/fXbaDRtBmPB0N9pqTFApIUI4vuFPPO0JDrII9dLwZ6lO9EKiwuVlvr1wwzsgq
 zJTPBU3qHaUO4d/8G+gD7AL/6T4zi8Jo/GmjBsnYaTzbm94lf0CjXjsOX3seMhaE6WAZOQQG
 tZHAO1kAPWpaxne+wtgMKthyPLNwelLf+xzGvrIKvLX6QuLoWMnWldu22z2ICVnLQChlR9d6
 WW8QFEpo/FK7omuS8KvvopFcOOdlbFMM8Y/8vBgVMSsK6fsYUhruny/PahprPbYGiNIhKqz7
 UvgyZVl4pBFjTaz/SbimTk210vIlkDyy1WuS8Zsn0htv4+jQPgo9rqFE4mipJjy/iboDzsFN
 BFH7eUwBEAC2nzfUeeI8dv0C4qrfCPze6NkryUflEut9WwHhfXCLjtvCjnoGqFelH/PE9NF4
 4VPSCdvD1SSmFVzu6T9qWdcwMSaC+e7G/z0/AhBfqTeosAF5XvKQlAb9ZPkdDr7YN0a1XDfa
 +NgA+JZB4ROyBZFFAwNHT+HCnyzy0v9Sh3BgJJwfpXHH2l3LfncvV8rgFv0bvdr70U+On2XH
 5bApOyW1WpIG5KPJlDdzcQTyptOJ1dnEHfwnABEfzI3dNf63rlxsGouX/NFRRRNqkdClQR3K
 gCwciaXfZ7ir7fF0u1N2UuLsWA8Ei1JrNypk+MRxhbvdQC4tyZCZ8mVDk+QOK6pyK2f4rMf/
 WmqxNTtAVmNuZIwnJdjRMMSs4W4w6N/bRvpqtykSqx7VXcgqtv6eqoDZrNuhGbekQA0sAnCJ
 VPArerAZGArm63o39me/bRUQeQVSxEBmg66yshF9HkcUPGVeC4B0TPwz+HFcVhheo6hoJjLq
 knFOPLRj+0h+ZL+D0GenyqD3CyuyeTT5dGcNU9qT74bdSr20k/CklvI7S9yoQje8BeQAHtdV
 cvO8XCLrpGuw9SgOS7OP5oI26a0548M4KldAY+kqX6XVphEw3/6U1KTf7WxW5zYLTtadjISB
 X9xsRWSU+Yqs3C7oN5TIPSoj9tXMoxZkCIHWvnqGwZ7JhwARAQABwsFfBBgBAgAJBQJR+3lM
 AhsMAAoJEC7Z13T+cC21hPAQAIsBL9MdGpdEpvXs9CYrBkd6tS9mbaSWj6XBDfA1AEdQkBOn
 ZH1Qt7HJesk+qNSnLv6+jP4VwqK5AFMrKJ6IjE7jqgzGxtcZnvSjeDGPF1h2CKZQPpTw890k
 fy18AvgFHkVk2Oylyexw3aOBsXg6ukN44vIFqPoc+YSU0+0QIdYJp/XFsgWxnFIMYwDpxSHS
 5fdDxUjsk3UBHZx+IhFjs2siVZi5wnHIqM7eK9abr2cK2weInTBwXwqVWjsXZ4tq5+jQrwDK
 cvxIcwXdUTLGxc4/Z/VRH1PZSvfQxdxMGmNTGaXVNfdFZjm4fz0mz+OUi6AHC4CZpwnsliGV
 ODqwX8Y1zic9viSTbKS01ZNp175POyWViUk9qisPZB7ypfSIVSEULrL347qY/hm9ahhqmn17
 Ng255syASv3ehvX7iwWDfzXbA0/TVaqwa1YIkec+/8miicV0zMP9siRcYQkyTqSzaTFBBmqD
 oiT+z+/E59qj/EKfyce3sbC9XLjXv3mHMrq1tKX4G7IJGnS989E/fg6crv6NHae9Ckm7+lSs
 IQu4bBP2GxiRQ+NV3iV/KU3ebMRzqIC//DCOxzQNFNJAKldPe/bKZMCxEqtVoRkuJtNdp/5a
 yXFZ6TfE1hGKrDBYAm4vrnZ4CXFSBDllL59cFFOJCkn4Xboj/aVxxJxF30bn
In-Reply-To: <20240108204909.564514-44-dwmw2@infradead.org>
X-Mimecast-Spam-Score: 0
X-Mimecast-Originator: redhat.com
Content-Language: en-US
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit

On 08/01/2024 21.27, David Woodhouse wrote:
> From: David Woodhouse <dwmw@amazon.co.uk>

Please add a short patch description à la "All callers have been converted 
in the previous patches, so this is not required anymore".

With that:
Reviewed-by: Thomas Huth <thuth@redhat.com>


> Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
> ---
>   include/net/net.h |  1 -
>   net/net.c         | 13 -------------
>   2 files changed, 14 deletions(-)
> 
> diff --git a/include/net/net.h b/include/net/net.h
> index 31e63d1f0d..1be8b40074 100644
> --- a/include/net/net.h
> +++ b/include/net/net.h
> @@ -204,7 +204,6 @@ int qemu_set_vnet_le(NetClientState *nc, bool is_le);
>   int qemu_set_vnet_be(NetClientState *nc, bool is_be);
>   void qemu_macaddr_default_if_unset(MACAddr *macaddr);
>   int qemu_show_nic_models(const char *arg, const char *const *models);
> -void qemu_check_nic_model(NICInfo *nd, const char *model);
>   int qemu_find_nic_model(NICInfo *nd, const char * const *models,
>                           const char *default_model);
>   NICInfo *qemu_find_nic_info(const char *typename, bool match_default,
> diff --git a/net/net.c b/net/net.c
> index 4651b3f443..ffd4b42d5a 100644
> --- a/net/net.c
> +++ b/net/net.c
> @@ -992,19 +992,6 @@ int qemu_show_nic_models(const char *arg, const char *const *models)
>       return 1;
>   }
>   
> -void qemu_check_nic_model(NICInfo *nd, const char *model)
> -{
> -    const char *models[2];
> -
> -    models[0] = model;
> -    models[1] = NULL;
> -
> -    if (qemu_show_nic_models(nd->model, models))
> -        exit(0);
> -    if (qemu_find_nic_model(nd, models, model) < 0)
> -        exit(1);
> -}
> -
>   int qemu_find_nic_model(NICInfo *nd, const char * const *models,
>                           const char *default_model)
>   {



From xen-devel-bounces@lists.xenproject.org Fri Jan 26 16:03:30 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 26 Jan 2024 16:03:30 +0000
Received: from list by lists.xenproject.org with outflank-mailman.672152.1045882 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTOft-0007a3-Ko; Fri, 26 Jan 2024 16:03:25 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 672152.1045882; Fri, 26 Jan 2024 16:03:25 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTOft-0007Zw-IL; Fri, 26 Jan 2024 16:03:25 +0000
Received: by outflank-mailman (input) for mailman id 672152;
 Fri, 26 Jan 2024 16:03:25 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=UtOA=JE=redhat.com=thuth@srs-se1.protection.inumbo.net>)
 id 1rTOfs-0007Zo-V2
 for xen-devel@lists.xenproject.org; Fri, 26 Jan 2024 16:03:24 +0000
Received: from us-smtp-delivery-124.mimecast.com
 (us-smtp-delivery-124.mimecast.com [170.10.129.124])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 6e4c7087-bc64-11ee-8a43-1f161083a0e0;
 Fri, 26 Jan 2024 17:03:24 +0100 (CET)
Received: from mail-qk1-f199.google.com (mail-qk1-f199.google.com
 [209.85.222.199]) by relay.mimecast.com with ESMTP with STARTTLS
 (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id
 us-mta-333-AOn9javuMYelpM3ScCrSmA-1; Fri, 26 Jan 2024 11:03:21 -0500
Received: by mail-qk1-f199.google.com with SMTP id
 af79cd13be357-7816bea8d28so380541885a.0
 for <xen-devel@lists.xenproject.org>; Fri, 26 Jan 2024 08:03:21 -0800 (PST)
Received: from [192.168.0.9] (ip-109-43-176-119.web.vodafone.de.
 [109.43.176.119]) by smtp.gmail.com with ESMTPSA id
 ie7-20020a05622a698700b00427fabefe3bsm616431qtb.52.2024.01.26.08.03.07
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Fri, 26 Jan 2024 08:03:20 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 6e4c7087-bc64-11ee-8a43-1f161083a0e0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
	s=mimecast20190719; t=1706285002;
	h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
	 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references:autocrypt:autocrypt;
	bh=zk0sP6rmajljurs2ccAeklwdmUeyPgag7oJCXCmQkmU=;
	b=eL1ay5zdHc4j9foH6RXaJBiReALB+FQnK+yYLMcgZDqAD0nCZ6Iy0tRku7QJrnxnos6gYl
	KtvqbVVYJT45LcPTU7OgHZ/FNEixiXv5EqO6i+X7ORQOVzJmRNFqr4Xp9js0nEmwy7L80v
	gIlTDgbtsQsVNF2MeK7PTTUpznfaAQc=
X-MC-Unique: AOn9javuMYelpM3ScCrSmA-1
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706285000; x=1706889800;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=zk0sP6rmajljurs2ccAeklwdmUeyPgag7oJCXCmQkmU=;
        b=SnV4pHIbNIVOqbMxUGYqv10SADZqVmlrVWk0Lf2IpveD+x9r8A5mJCIj8wuPwNBDcf
         lFMk4+rG34SX4rQ/39K72Af8stZzJLFeNX/DRySpSNgICmKzSybkU45JlwhJkk7VW8D7
         R1GJk/mwK0KkvAphFadvTbfp6kUwoU+uey1iIEIgxdP470lI36jn7HJXUksn4THuS83G
         1FvfVepLcDZ8Toysf240owYXBy2Peify8m85revEjoXJ2aPprdJ8n6XbPsjz6mZVn2U5
         KVKCHJ5nP9BiQPmkyvdQr4nku+gZ27euYn4mUGgZSdgT+dNkas/oUncCbUAi9aKVwpiv
         SK4w==
X-Gm-Message-State: AOJu0YwQW/nawjMzVtPHM0deHt/JfElbcl58Pga08wgiLznZaofuWgkS
	KVz+SJ/bASNX0f8Ys3aC8ZtJ3A5rjAFE9wCd0JcMWt03BHfR0/9vC0p9Rzz1B+jew3x4PBzjjGT
	f4c7wWgSGmdZieh/yr+18tn7DSjLPKXSr9dgf663Oy3pRYNIXhnhIAAh/6stGMkE0
X-Received: by 2002:a05:620a:4884:b0:783:bcd8:530 with SMTP id ea4-20020a05620a488400b00783bcd80530mr1829465qkb.58.1706285000723;
        Fri, 26 Jan 2024 08:03:20 -0800 (PST)
X-Google-Smtp-Source: AGHT+IHzG4dq/yA2/5IjCag5itQIZbihh2uTZDcnCR6YuwaGJ56qztK0VqIp67o7TdRBNRGKOq3f9g==
X-Received: by 2002:a05:620a:4884:b0:783:bcd8:530 with SMTP id ea4-20020a05620a488400b00783bcd80530mr1829411qkb.58.1706285000435;
        Fri, 26 Jan 2024 08:03:20 -0800 (PST)
Message-ID: <14b546bf-2644-4e63-82d2-77d7ea43c732@redhat.com>
Date: Fri, 26 Jan 2024 17:03:07 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 44/46] hw/pci: remove pci_nic_init_nofail()
To: David Woodhouse <dwmw2@infradead.org>, qemu-devel@nongnu.org
Cc: Richard Henderson <richard.henderson@linaro.org>,
 Beniamino Galvani <b.galvani@gmail.com>,
 Peter Maydell <peter.maydell@linaro.org>,
 Strahinja Jankovic <strahinja.p.jankovic@gmail.com>,
 Niek Linnenbank <nieklinnenbank@gmail.com>, =?UTF-8?Q?C=C3=A9dric_Le_Goater?=
 <clg@kaod.org>, Andrew Jeffery <andrew@codeconstruct.com.au>,
 Joel Stanley <joel@jms.id.au>, Igor Mitsyanko <i.mitsyanko@gmail.com>,
 Jean-Christophe Dubois <jcd@tribudubois.net>,
 Andrey Smirnov <andrew.smirnov@gmail.com>,
 =?UTF-8?Q?Philippe_Mathieu-Daud=C3=A9?= <philmd@linaro.org>,
 Rob Herring <robh@kernel.org>, Subbaraya Sundeep <sundeep.lkml@gmail.com>,
 Jan Kiszka <jan.kiszka@web.de>, Tyrone Ting <kfting@nuvoton.com>,
 Hao Wu <wuhaotsh@google.com>, Radoslaw Biernacki <rad@semihalf.com>,
 Leif Lindholm <quic_llindhol@quicinc.com>,
 Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org>,
 "Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
 Alistair Francis <alistair@alistair23.me>, Helge Deller <deller@gmx.de>,
 Paolo Bonzini <pbonzini@redhat.com>, Eduardo Habkost <eduardo@habkost.net>,
 "Michael S. Tsirkin" <mst@redhat.com>,
 Marcel Apfelbaum <marcel.apfelbaum@gmail.com>, Song Gao
 <gaosong@loongson.cn>, Thomas Huth <huth@tuxfamily.org>,
 Laurent Vivier <laurent@vivier.eu>, Huacai Chen <chenhuacai@kernel.org>,
 Jiaxun Yang <jiaxun.yang@flygoat.com>,
 =?UTF-8?Q?Herv=C3=A9_Poussineau?= <hpoussin@reactos.org>,
 Aleksandar Rikalo <aleksandar.rikalo@syrmia.com>,
 Aurelien Jarno <aurelien@aurel32.net>, Jason Wang <jasowang@redhat.com>,
 Jia Liu <proljc@gmail.com>, Stafford Horne <shorne@gmail.com>,
 Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>,
 Nicholas Piggin <npiggin@gmail.com>,
 Daniel Henrique Barboza <danielhb413@gmail.com>,
 David Gibson <david@gibson.dropbear.id.au>,
 Harsh Prateek Bora <harshpb@linux.ibm.com>, Bin Meng
 <bin.meng@windriver.com>, Palmer Dabbelt <palmer@dabbelt.com>,
 Weiwei Li <liwei1518@gmail.com>, Liu Zhiwei <zhiwei_liu@linux.alibaba.com>,
 Halil Pasic <pasic@linux.ibm.com>,
 Christian Borntraeger <borntraeger@linux.ibm.com>,
 Eric Farman <farman@linux.ibm.com>, David Hildenbrand <david@redhat.com>,
 Ilya Leoshkevich <iii@linux.ibm.com>,
 Yoshinori Sato <ysato@users.sourceforge.jp>,
 Magnus Damm <magnus.damm@gmail.com>, Artyom Tarasenko <atar4qemu@gmail.com>,
 Stefano Stabellini <sstabellini@kernel.org>,
 Anthony Perard <anthony.perard@citrix.com>, Paul Durrant <paul@xen.org>,
 Max Filippov <jcmvbkbc@gmail.com>, qemu-arm@nongnu.org, qemu-ppc@nongnu.org,
 qemu-riscv@nongnu.org, qemu-s390x@nongnu.org,
 xen-devel@lists.xenproject.org, David Woodhouse <dwmw@amazon.co.uk>
References: <20240108204909.564514-1-dwmw2@infradead.org>
 <20240108204909.564514-45-dwmw2@infradead.org>
From: Thomas Huth <thuth@redhat.com>
Autocrypt: addr=thuth@redhat.com; keydata=
 xsFNBFH7eUwBEACzyOXKU+5Pcs6wNpKzrlJwzRl3VGZt95VCdb+FgoU9g11m7FWcOafrVRwU
 yYkTm9+7zBUc0sW5AuPGR/dp3pSLX/yFWsA/UB4nJsHqgDvDU7BImSeiTrnpMOTXb7Arw2a2
 4CflIyFqjCpfDM4MuTmzTjXq4Uov1giGE9X6viNo1pxyEpd7PanlKNnf4PqEQp06X4IgUacW
 tSGj6Gcns1bCuHV8OPWLkf4hkRnu8hdL6i60Yxz4E6TqlrpxsfYwLXgEeswPHOA6Mn4Cso9O
 0lewVYfFfsmokfAVMKWzOl1Sr0KGI5T9CpmRfAiSHpthhHWnECcJFwl72NTi6kUcUzG4se81
 O6n9d/kTj7pzTmBdfwuOZ0YUSqcqs0W+l1NcASSYZQaDoD3/SLk+nqVeCBB4OnYOGhgmIHNW
 0CwMRO/GK+20alxzk//V9GmIM2ACElbfF8+Uug3pqiHkVnKqM7W9/S1NH2qmxB6zMiJUHlTH
 gnVeZX0dgH27mzstcF786uPcdEqS0KJuxh2kk5IvUSL3Qn3ZgmgdxBMyCPciD/1cb7/Ahazr
 3ThHQXSHXkH/aDXdfLsKVuwDzHLVSkdSnZdt5HHh75/NFHxwaTlydgfHmFFwodK8y/TjyiGZ
 zg2Kje38xnz8zKn9iesFBCcONXS7txENTzX0z80WKBhK+XSFJwARAQABzR5UaG9tYXMgSHV0
 aCA8dGh1dGhAcmVkaGF0LmNvbT7CwXgEEwECACIFAlVgX6oCGwMGCwkIBwMCBhUIAgkKCwQW
 AgMBAh4BAheAAAoJEC7Z13T+cC21EbIP/ii9cvT2HHGbFRl8HqGT6+7Wkb+XLMqJBMAIGiQK
 QIP3xk1HPTsLfVG0ao4hy/oYkGNOP8+ubLnZen6Yq3zAFiMhQ44lvgigDYJo3Ve59gfe99KX
 EbtB+X95ODARkq0McR6OAsPNJ7gpEUzfkQUUJTXRDQXfG/FX303Gvk+YU0spm2tsIKPl6AmV
 1CegDljzjycyfJbk418MQmMu2T82kjrkEofUO2a24ed3VGC0/Uz//XCR2ZTo+vBoBUQl41BD
 eFFtoCSrzo3yPFS+w5fkH9NT8ChdpSlbNS32NhYQhJtr9zjWyFRf0Zk+T/1P7ECn6gTEkp5k
 ofFIA4MFBc/fXbaDRtBmPB0N9pqTFApIUI4vuFPPO0JDrII9dLwZ6lO9EKiwuVlvr1wwzsgq
 zJTPBU3qHaUO4d/8G+gD7AL/6T4zi8Jo/GmjBsnYaTzbm94lf0CjXjsOX3seMhaE6WAZOQQG
 tZHAO1kAPWpaxne+wtgMKthyPLNwelLf+xzGvrIKvLX6QuLoWMnWldu22z2ICVnLQChlR9d6
 WW8QFEpo/FK7omuS8KvvopFcOOdlbFMM8Y/8vBgVMSsK6fsYUhruny/PahprPbYGiNIhKqz7
 UvgyZVl4pBFjTaz/SbimTk210vIlkDyy1WuS8Zsn0htv4+jQPgo9rqFE4mipJjy/iboDzsFN
 BFH7eUwBEAC2nzfUeeI8dv0C4qrfCPze6NkryUflEut9WwHhfXCLjtvCjnoGqFelH/PE9NF4
 4VPSCdvD1SSmFVzu6T9qWdcwMSaC+e7G/z0/AhBfqTeosAF5XvKQlAb9ZPkdDr7YN0a1XDfa
 +NgA+JZB4ROyBZFFAwNHT+HCnyzy0v9Sh3BgJJwfpXHH2l3LfncvV8rgFv0bvdr70U+On2XH
 5bApOyW1WpIG5KPJlDdzcQTyptOJ1dnEHfwnABEfzI3dNf63rlxsGouX/NFRRRNqkdClQR3K
 gCwciaXfZ7ir7fF0u1N2UuLsWA8Ei1JrNypk+MRxhbvdQC4tyZCZ8mVDk+QOK6pyK2f4rMf/
 WmqxNTtAVmNuZIwnJdjRMMSs4W4w6N/bRvpqtykSqx7VXcgqtv6eqoDZrNuhGbekQA0sAnCJ
 VPArerAZGArm63o39me/bRUQeQVSxEBmg66yshF9HkcUPGVeC4B0TPwz+HFcVhheo6hoJjLq
 knFOPLRj+0h+ZL+D0GenyqD3CyuyeTT5dGcNU9qT74bdSr20k/CklvI7S9yoQje8BeQAHtdV
 cvO8XCLrpGuw9SgOS7OP5oI26a0548M4KldAY+kqX6XVphEw3/6U1KTf7WxW5zYLTtadjISB
 X9xsRWSU+Yqs3C7oN5TIPSoj9tXMoxZkCIHWvnqGwZ7JhwARAQABwsFfBBgBAgAJBQJR+3lM
 AhsMAAoJEC7Z13T+cC21hPAQAIsBL9MdGpdEpvXs9CYrBkd6tS9mbaSWj6XBDfA1AEdQkBOn
 ZH1Qt7HJesk+qNSnLv6+jP4VwqK5AFMrKJ6IjE7jqgzGxtcZnvSjeDGPF1h2CKZQPpTw890k
 fy18AvgFHkVk2Oylyexw3aOBsXg6ukN44vIFqPoc+YSU0+0QIdYJp/XFsgWxnFIMYwDpxSHS
 5fdDxUjsk3UBHZx+IhFjs2siVZi5wnHIqM7eK9abr2cK2weInTBwXwqVWjsXZ4tq5+jQrwDK
 cvxIcwXdUTLGxc4/Z/VRH1PZSvfQxdxMGmNTGaXVNfdFZjm4fz0mz+OUi6AHC4CZpwnsliGV
 ODqwX8Y1zic9viSTbKS01ZNp175POyWViUk9qisPZB7ypfSIVSEULrL347qY/hm9ahhqmn17
 Ng255syASv3ehvX7iwWDfzXbA0/TVaqwa1YIkec+/8miicV0zMP9siRcYQkyTqSzaTFBBmqD
 oiT+z+/E59qj/EKfyce3sbC9XLjXv3mHMrq1tKX4G7IJGnS989E/fg6crv6NHae9Ckm7+lSs
 IQu4bBP2GxiRQ+NV3iV/KU3ebMRzqIC//DCOxzQNFNJAKldPe/bKZMCxEqtVoRkuJtNdp/5a
 yXFZ6TfE1hGKrDBYAm4vrnZ4CXFSBDllL59cFFOJCkn4Xboj/aVxxJxF30bn
In-Reply-To: <20240108204909.564514-45-dwmw2@infradead.org>
X-Mimecast-Spam-Score: 0
X-Mimecast-Originator: redhat.com
Content-Language: en-US
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

On 08/01/2024 21.27, David Woodhouse wrote:
> From: David Woodhouse <dwmw@amazon.co.uk>
> 
> This function is no longer used.
> 
> Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
> ---
>   hw/pci/pci.c         | 72 --------------------------------------------
>   include/hw/pci/pci.h |  3 --
>   2 files changed, 75 deletions(-)

Reviewed-by: Thomas Huth <thuth@redhat.com>




From xen-devel-bounces@lists.xenproject.org Fri Jan 26 16:08:26 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 26 Jan 2024 16:08:26 +0000
Received: from list by lists.xenproject.org with outflank-mailman.672155.1045893 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTOki-0000O3-7B; Fri, 26 Jan 2024 16:08:24 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 672155.1045893; Fri, 26 Jan 2024 16:08:24 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTOki-0000Nw-3h; Fri, 26 Jan 2024 16:08:24 +0000
Received: by outflank-mailman (input) for mailman id 672155;
 Fri, 26 Jan 2024 16:08:23 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=UtOA=JE=redhat.com=thuth@srs-se1.protection.inumbo.net>)
 id 1rTOkh-0000Nq-Ik
 for xen-devel@lists.xenproject.org; Fri, 26 Jan 2024 16:08:23 +0000
Received: from us-smtp-delivery-124.mimecast.com
 (us-smtp-delivery-124.mimecast.com [170.10.133.124])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 2052c3b8-bc65-11ee-8a43-1f161083a0e0;
 Fri, 26 Jan 2024 17:08:22 +0100 (CET)
Received: from mail-qv1-f72.google.com (mail-qv1-f72.google.com
 [209.85.219.72]) by relay.mimecast.com with ESMTP with STARTTLS
 (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id
 us-mta-114-lP5dx9tpPCGbP1DGUJEPZA-1; Fri, 26 Jan 2024 11:08:20 -0500
Received: by mail-qv1-f72.google.com with SMTP id
 6a1803df08f44-68058b0112cso13529946d6.1
 for <xen-devel@lists.xenproject.org>; Fri, 26 Jan 2024 08:08:19 -0800 (PST)
Received: from [192.168.0.9] (ip-109-43-176-119.web.vodafone.de.
 [109.43.176.119]) by smtp.gmail.com with ESMTPSA id
 kf4-20020a056214524400b006837a012417sm621834qvb.51.2024.01.26.08.08.06
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Fri, 26 Jan 2024 08:08:18 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 2052c3b8-bc65-11ee-8a43-1f161083a0e0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
	s=mimecast20190719; t=1706285301;
	h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
	 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references:autocrypt:autocrypt;
	bh=D9F2bbUWw9sCxIexKZ1mkLwkfc28SE4GywK/1ph1ddI=;
	b=C+biXBt/nvxkaLMjj04oVjlyDz76YEmv++s7sBRgN76Ux7S11fR9Bn7cYejNMqvstBvlgM
	4JIzNle410ggtHpN+59955IKbKN1iqZmoCd9Ui1kLAe4Y32vFYxP3SToul9HkyCf2n8z9k
	ZZdIILt7wfVxzvO/4Ul8uVSiT5+AOL4=
X-MC-Unique: lP5dx9tpPCGbP1DGUJEPZA-1
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706285299; x=1706890099;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=D9F2bbUWw9sCxIexKZ1mkLwkfc28SE4GywK/1ph1ddI=;
        b=uQClXU3g+FOdqdLx0SN+NXvu1M38+rNBe6YASNf1okAgdw09wmrfo1Uz7sEeY3wi8n
         CbppKLDf+OpK3ZLCufqv/ruPjwhlnIJzSawPqw947dYV6ViHP4dCuZT6vYqTW4gdvFHg
         hAUFVp97tVZwuqKIx9Fbu6+pZxYk4tsaM+UwpNkhhws4gfMU9CLBi/kCoF8W3dTuqThx
         NUsL2PmEgCLCdCPknulyVGWjL8hnfKY9g/JqKR4F4gqS2P2wXwuO2AGQwZt4hMcyWAvb
         lPSHGmOYoKTX6IeqZz8m3FqWKHF3JXjqxF6jtGR3kgwUw+6lGJFkD+Xe0N9hAUZzlk3i
         3LHg==
X-Gm-Message-State: AOJu0Yz+vOrdeuTojzdXVMYlDHg7u1NcPqJgyKtT8uQTeFLxwiwJDaLb
	E8P4oO9GJ7x4cZq42yH05N2MkrnEfgRuZU5jJHXD/SwZ5Cu4UqPdeNB1jR+kIHW8cQ/QwtzBiR6
	LHqcOZWlw5uMsi+O9xE1/dHbUewzSgXK6EDcOlkGGzxN5h/OwyGl/qfO/1ZwRqFrk
X-Received: by 2002:a05:6214:2687:b0:686:aa78:d51b with SMTP id gm7-20020a056214268700b00686aa78d51bmr82365qvb.57.1706285299288;
        Fri, 26 Jan 2024 08:08:19 -0800 (PST)
X-Google-Smtp-Source: AGHT+IHNArWGZ+tje0Xl0Uzc0q///s3mwURQqzEKUHVLL7xKYxKz6pPU0pTaaLASTTrq+c0dCUpAoQ==
X-Received: by 2002:a05:6214:2687:b0:686:aa78:d51b with SMTP id gm7-20020a056214268700b00686aa78d51bmr82301qvb.57.1706285298903;
        Fri, 26 Jan 2024 08:08:18 -0800 (PST)
Message-ID: <532e0d7c-ddf0-4db4-a6eb-6660469fc72f@redhat.com>
Date: Fri, 26 Jan 2024 17:08:04 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 46/46] net: make nb_nics and nd_table[] static in
 net/net.c
To: David Woodhouse <dwmw2@infradead.org>, qemu-devel@nongnu.org
Cc: Richard Henderson <richard.henderson@linaro.org>,
 Beniamino Galvani <b.galvani@gmail.com>,
 Peter Maydell <peter.maydell@linaro.org>,
 Strahinja Jankovic <strahinja.p.jankovic@gmail.com>,
 Niek Linnenbank <nieklinnenbank@gmail.com>, =?UTF-8?Q?C=C3=A9dric_Le_Goater?=
 <clg@kaod.org>, Andrew Jeffery <andrew@codeconstruct.com.au>,
 Joel Stanley <joel@jms.id.au>, Igor Mitsyanko <i.mitsyanko@gmail.com>,
 Jean-Christophe Dubois <jcd@tribudubois.net>,
 Andrey Smirnov <andrew.smirnov@gmail.com>,
 =?UTF-8?Q?Philippe_Mathieu-Daud=C3=A9?= <philmd@linaro.org>,
 Rob Herring <robh@kernel.org>, Subbaraya Sundeep <sundeep.lkml@gmail.com>,
 Jan Kiszka <jan.kiszka@web.de>, Tyrone Ting <kfting@nuvoton.com>,
 Hao Wu <wuhaotsh@google.com>, Radoslaw Biernacki <rad@semihalf.com>,
 Leif Lindholm <quic_llindhol@quicinc.com>,
 Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org>,
 "Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
 Alistair Francis <alistair@alistair23.me>, Helge Deller <deller@gmx.de>,
 Paolo Bonzini <pbonzini@redhat.com>, Eduardo Habkost <eduardo@habkost.net>,
 "Michael S. Tsirkin" <mst@redhat.com>,
 Marcel Apfelbaum <marcel.apfelbaum@gmail.com>, Song Gao
 <gaosong@loongson.cn>, Thomas Huth <huth@tuxfamily.org>,
 Laurent Vivier <laurent@vivier.eu>, Huacai Chen <chenhuacai@kernel.org>,
 Jiaxun Yang <jiaxun.yang@flygoat.com>,
 =?UTF-8?Q?Herv=C3=A9_Poussineau?= <hpoussin@reactos.org>,
 Aleksandar Rikalo <aleksandar.rikalo@syrmia.com>,
 Aurelien Jarno <aurelien@aurel32.net>, Jason Wang <jasowang@redhat.com>,
 Jia Liu <proljc@gmail.com>, Stafford Horne <shorne@gmail.com>,
 Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>,
 Nicholas Piggin <npiggin@gmail.com>,
 Daniel Henrique Barboza <danielhb413@gmail.com>,
 David Gibson <david@gibson.dropbear.id.au>,
 Harsh Prateek Bora <harshpb@linux.ibm.com>, Bin Meng
 <bin.meng@windriver.com>, Palmer Dabbelt <palmer@dabbelt.com>,
 Weiwei Li <liwei1518@gmail.com>, Liu Zhiwei <zhiwei_liu@linux.alibaba.com>,
 Halil Pasic <pasic@linux.ibm.com>,
 Christian Borntraeger <borntraeger@linux.ibm.com>,
 Eric Farman <farman@linux.ibm.com>, David Hildenbrand <david@redhat.com>,
 Ilya Leoshkevich <iii@linux.ibm.com>,
 Yoshinori Sato <ysato@users.sourceforge.jp>,
 Magnus Damm <magnus.damm@gmail.com>, Artyom Tarasenko <atar4qemu@gmail.com>,
 Stefano Stabellini <sstabellini@kernel.org>,
 Anthony Perard <anthony.perard@citrix.com>, Paul Durrant <paul@xen.org>,
 Max Filippov <jcmvbkbc@gmail.com>, qemu-arm@nongnu.org, qemu-ppc@nongnu.org,
 qemu-riscv@nongnu.org, qemu-s390x@nongnu.org,
 xen-devel@lists.xenproject.org, David Woodhouse <dwmw@amazon.co.uk>
References: <20240108204909.564514-1-dwmw2@infradead.org>
 <20240108204909.564514-47-dwmw2@infradead.org>
From: Thomas Huth <thuth@redhat.com>
Autocrypt: addr=thuth@redhat.com; keydata=
 xsFNBFH7eUwBEACzyOXKU+5Pcs6wNpKzrlJwzRl3VGZt95VCdb+FgoU9g11m7FWcOafrVRwU
 yYkTm9+7zBUc0sW5AuPGR/dp3pSLX/yFWsA/UB4nJsHqgDvDU7BImSeiTrnpMOTXb7Arw2a2
 4CflIyFqjCpfDM4MuTmzTjXq4Uov1giGE9X6viNo1pxyEpd7PanlKNnf4PqEQp06X4IgUacW
 tSGj6Gcns1bCuHV8OPWLkf4hkRnu8hdL6i60Yxz4E6TqlrpxsfYwLXgEeswPHOA6Mn4Cso9O
 0lewVYfFfsmokfAVMKWzOl1Sr0KGI5T9CpmRfAiSHpthhHWnECcJFwl72NTi6kUcUzG4se81
 O6n9d/kTj7pzTmBdfwuOZ0YUSqcqs0W+l1NcASSYZQaDoD3/SLk+nqVeCBB4OnYOGhgmIHNW
 0CwMRO/GK+20alxzk//V9GmIM2ACElbfF8+Uug3pqiHkVnKqM7W9/S1NH2qmxB6zMiJUHlTH
 gnVeZX0dgH27mzstcF786uPcdEqS0KJuxh2kk5IvUSL3Qn3ZgmgdxBMyCPciD/1cb7/Ahazr
 3ThHQXSHXkH/aDXdfLsKVuwDzHLVSkdSnZdt5HHh75/NFHxwaTlydgfHmFFwodK8y/TjyiGZ
 zg2Kje38xnz8zKn9iesFBCcONXS7txENTzX0z80WKBhK+XSFJwARAQABzR5UaG9tYXMgSHV0
 aCA8dGh1dGhAcmVkaGF0LmNvbT7CwXgEEwECACIFAlVgX6oCGwMGCwkIBwMCBhUIAgkKCwQW
 AgMBAh4BAheAAAoJEC7Z13T+cC21EbIP/ii9cvT2HHGbFRl8HqGT6+7Wkb+XLMqJBMAIGiQK
 QIP3xk1HPTsLfVG0ao4hy/oYkGNOP8+ubLnZen6Yq3zAFiMhQ44lvgigDYJo3Ve59gfe99KX
 EbtB+X95ODARkq0McR6OAsPNJ7gpEUzfkQUUJTXRDQXfG/FX303Gvk+YU0spm2tsIKPl6AmV
 1CegDljzjycyfJbk418MQmMu2T82kjrkEofUO2a24ed3VGC0/Uz//XCR2ZTo+vBoBUQl41BD
 eFFtoCSrzo3yPFS+w5fkH9NT8ChdpSlbNS32NhYQhJtr9zjWyFRf0Zk+T/1P7ECn6gTEkp5k
 ofFIA4MFBc/fXbaDRtBmPB0N9pqTFApIUI4vuFPPO0JDrII9dLwZ6lO9EKiwuVlvr1wwzsgq
 zJTPBU3qHaUO4d/8G+gD7AL/6T4zi8Jo/GmjBsnYaTzbm94lf0CjXjsOX3seMhaE6WAZOQQG
 tZHAO1kAPWpaxne+wtgMKthyPLNwelLf+xzGvrIKvLX6QuLoWMnWldu22z2ICVnLQChlR9d6
 WW8QFEpo/FK7omuS8KvvopFcOOdlbFMM8Y/8vBgVMSsK6fsYUhruny/PahprPbYGiNIhKqz7
 UvgyZVl4pBFjTaz/SbimTk210vIlkDyy1WuS8Zsn0htv4+jQPgo9rqFE4mipJjy/iboDzsFN
 BFH7eUwBEAC2nzfUeeI8dv0C4qrfCPze6NkryUflEut9WwHhfXCLjtvCjnoGqFelH/PE9NF4
 4VPSCdvD1SSmFVzu6T9qWdcwMSaC+e7G/z0/AhBfqTeosAF5XvKQlAb9ZPkdDr7YN0a1XDfa
 +NgA+JZB4ROyBZFFAwNHT+HCnyzy0v9Sh3BgJJwfpXHH2l3LfncvV8rgFv0bvdr70U+On2XH
 5bApOyW1WpIG5KPJlDdzcQTyptOJ1dnEHfwnABEfzI3dNf63rlxsGouX/NFRRRNqkdClQR3K
 gCwciaXfZ7ir7fF0u1N2UuLsWA8Ei1JrNypk+MRxhbvdQC4tyZCZ8mVDk+QOK6pyK2f4rMf/
 WmqxNTtAVmNuZIwnJdjRMMSs4W4w6N/bRvpqtykSqx7VXcgqtv6eqoDZrNuhGbekQA0sAnCJ
 VPArerAZGArm63o39me/bRUQeQVSxEBmg66yshF9HkcUPGVeC4B0TPwz+HFcVhheo6hoJjLq
 knFOPLRj+0h+ZL+D0GenyqD3CyuyeTT5dGcNU9qT74bdSr20k/CklvI7S9yoQje8BeQAHtdV
 cvO8XCLrpGuw9SgOS7OP5oI26a0548M4KldAY+kqX6XVphEw3/6U1KTf7WxW5zYLTtadjISB
 X9xsRWSU+Yqs3C7oN5TIPSoj9tXMoxZkCIHWvnqGwZ7JhwARAQABwsFfBBgBAgAJBQJR+3lM
 AhsMAAoJEC7Z13T+cC21hPAQAIsBL9MdGpdEpvXs9CYrBkd6tS9mbaSWj6XBDfA1AEdQkBOn
 ZH1Qt7HJesk+qNSnLv6+jP4VwqK5AFMrKJ6IjE7jqgzGxtcZnvSjeDGPF1h2CKZQPpTw890k
 fy18AvgFHkVk2Oylyexw3aOBsXg6ukN44vIFqPoc+YSU0+0QIdYJp/XFsgWxnFIMYwDpxSHS
 5fdDxUjsk3UBHZx+IhFjs2siVZi5wnHIqM7eK9abr2cK2weInTBwXwqVWjsXZ4tq5+jQrwDK
 cvxIcwXdUTLGxc4/Z/VRH1PZSvfQxdxMGmNTGaXVNfdFZjm4fz0mz+OUi6AHC4CZpwnsliGV
 ODqwX8Y1zic9viSTbKS01ZNp175POyWViUk9qisPZB7ypfSIVSEULrL347qY/hm9ahhqmn17
 Ng255syASv3ehvX7iwWDfzXbA0/TVaqwa1YIkec+/8miicV0zMP9siRcYQkyTqSzaTFBBmqD
 oiT+z+/E59qj/EKfyce3sbC9XLjXv3mHMrq1tKX4G7IJGnS989E/fg6crv6NHae9Ckm7+lSs
 IQu4bBP2GxiRQ+NV3iV/KU3ebMRzqIC//DCOxzQNFNJAKldPe/bKZMCxEqtVoRkuJtNdp/5a
 yXFZ6TfE1hGKrDBYAm4vrnZ4CXFSBDllL59cFFOJCkn4Xboj/aVxxJxF30bn
In-Reply-To: <20240108204909.564514-47-dwmw2@infradead.org>
X-Mimecast-Spam-Score: 0
X-Mimecast-Originator: redhat.com
Content-Language: en-US
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

On 08/01/2024 21.27, David Woodhouse wrote:
> From: David Woodhouse <dwmw@amazon.co.uk>

Please add: "Also remove the leftover definition of host_net_devices which 
has been forgotten to be removed in commit 7cc28cb061040cb089." (or so)

With that:
Reviewed-by: Thomas Huth <thuth@redhat.com>



> Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
> ---
>   include/net/net.h | 4 ----
>   net/net.c         | 3 +++
>   system/globals.c  | 2 --
>   3 files changed, 3 insertions(+), 6 deletions(-)
> 
> diff --git a/include/net/net.h b/include/net/net.h
> index 19fb82833c..766201c62c 100644
> --- a/include/net/net.h
> +++ b/include/net/net.h
> @@ -247,10 +247,6 @@ struct NICInfo {
>       int nvectors;
>   };
>   
> -extern int nb_nics;
> -extern NICInfo nd_table[MAX_NICS];
> -extern const char *host_net_devices[];
> -
>   /* from net.c */
>   extern NetClientStateList net_clients;
>   bool netdev_is_modern(const char *optstr);
> diff --git a/net/net.c b/net/net.c
> index 09ab0889f5..71cccb19da 100644
> --- a/net/net.c
> +++ b/net/net.c
> @@ -77,6 +77,9 @@ static NetdevQueue nd_queue = QSIMPLEQ_HEAD_INITIALIZER(nd_queue);
>   
>   static GHashTable *nic_model_help;
>   
> +static int nb_nics;
> +static NICInfo nd_table[MAX_NICS];
> +
>   /***********************************************************/
>   /* network device redirectors */
>   
> diff --git a/system/globals.c b/system/globals.c
> index e83b5428d1..b6d4e72530 100644
> --- a/system/globals.c
> +++ b/system/globals.c
> @@ -36,8 +36,6 @@ int display_opengl;
>   const char* keyboard_layout;
>   bool enable_mlock;
>   bool enable_cpu_pm;
> -int nb_nics;
> -NICInfo nd_table[MAX_NICS];
>   int autostart = 1;
>   int vga_interface_type = VGA_NONE;
>   bool vga_interface_created;



From xen-devel-bounces@lists.xenproject.org Fri Jan 26 16:08:32 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 26 Jan 2024 16:08:32 +0000
Received: from list by lists.xenproject.org with outflank-mailman.672156.1045903 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTOkn-0000hH-Gj; Fri, 26 Jan 2024 16:08:29 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 672156.1045903; Fri, 26 Jan 2024 16:08:29 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTOkn-0000h8-E0; Fri, 26 Jan 2024 16:08:29 +0000
Received: by outflank-mailman (input) for mailman id 672156;
 Fri, 26 Jan 2024 16:08:27 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>) id 1rTOkl-0000gP-UH
 for xen-devel@lists.xenproject.org; Fri, 26 Jan 2024 16:08:27 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rTOkk-0007tG-Kv; Fri, 26 Jan 2024 16:08:26 +0000
Received: from 54-240-197-231.amazon.com ([54.240.197.231]
 helo=[10.95.150.130]) by xenbits.xenproject.org with esmtpsa
 (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rTOkk-0002s4-DT; Fri, 26 Jan 2024 16:08:26 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
	s=20200302mail; h=Content-Transfer-Encoding:Content-Type:In-Reply-To:From:
	References:Cc:To:Subject:MIME-Version:Date:Message-ID;
	bh=d76OtKf+FdQbQpIKUP5AAgKY86/TJ77hK0FFOCq9J5s=; b=ogAlqLiT0wWdEtycPEm0pnmU7y
	R29QxOHMEZxsd27b/4Z+4q+Wuvd/clqS2mgdwh9L0oJqOmoAe4/KwviPAb2AvseNdhf2EDreR0v50
	IcWZ/l3geH1OLR6us+k6LY4200LIYBz+8LqemsRolH1zNNU9h0MvRrlIiVNZbrXFAp4k=;
Message-ID: <a5a553cf-fe8c-4934-ac97-bdc59aeaed1c@xen.org>
Date: Fri, 26 Jan 2024 16:08:23 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] xen/lib: introduce generic find next bit operations
Content-Language: en-GB
To: Oleksii <oleksii.kurochko@gmail.com>, xen-devel@lists.xenproject.org
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 George Dunlap <george.dunlap@citrix.com>, Jan Beulich <jbeulich@suse.com>,
 Stefano Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>,
 Bertrand Marquis <bertrand.marquis@arm.com>,
 Michal Orzel <michal.orzel@amd.com>,
 Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
 Shawn Anastasio <sanastasio@raptorengineering.com>
References: <52730e6314210ba4164a9934a720c4fda201447b.1706266854.git.oleksii.kurochko@gmail.com>
 <f8602dc5-e603-42fc-b3a2-dc71c55db341@xen.org>
 <1104df46d7780ef1bbcb6c745685b10fe6d2aa5d.camel@gmail.com>
From: Julien Grall <julien@xen.org>
In-Reply-To: <1104df46d7780ef1bbcb6c745685b10fe6d2aa5d.camel@gmail.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit

Hi Oleksii,

On 26/01/2024 15:58, Oleksii wrote:
> On Fri, 2024-01-26 at 13:20 +0000, Julien Grall wrote:
>> Hi,
> Hi Julien,
> 
>>
>> On 26/01/2024 12:20, Oleksii Kurochko wrote:
>>> find-next-bit.c is common for Arm64, PPC and RISCV64,
>>> so it is moved to xen/lib.
>>>
>>> Suggested-by: Jan Beulich <jbeulich@suse.com>
>>> Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>
>>> ---
>>>    docs/misra/exclude-list.json                  |   4 -
>>>    xen/arch/arm/arm64/lib/Makefile               |   2 +-
>>>    xen/arch/arm/include/asm/arm64/bitops.h       |  48 --------
>>>    xen/arch/ppc/include/asm/bitops.h             | 115 -------------
>>> -----
>>>    xen/include/xen/bitops.h                      |  48 ++++++++
>>>    xen/lib/Makefile                              |   1 +
>>>    .../find_next_bit.c => lib/find-next-bit.c}   |   0
>>>    7 files changed, 50 insertions(+), 168 deletions(-)
>>>    rename xen/{arch/arm/arm64/lib/find_next_bit.c => lib/find-next-
>>> bit.c} (100%)
>>>
>>> diff --git a/docs/misra/exclude-list.json b/docs/misra/exclude-
>>> list.json
>>> index 7971d0e70f..7fe02b059d 100644
>>> --- a/docs/misra/exclude-list.json
>>> +++ b/docs/misra/exclude-list.json
>>> @@ -13,10 +13,6 @@
>>>                "rel_path": "arch/arm/arm64/insn.c",
>>>                "comment": "Imported on Linux, ignore for now"
>>>            },
>>> -        {
>>> -            "rel_path": "arch/arm/arm64/lib/find_next_bit.c",
>>
>> Rather than removing the section, I was expecting the rel_path to be
>> updated. Can you explain why you think the exclusion is not
>> necessary?
> I considered simply updating the path to xen/lib/find-next-bit.c, but
> ultimately opted to remove it. This decision was based on the fact that
> the line in question checks for a file that no longer exists. 

That's not quite correct. The file still exists but with a different name.

> If it's
> preferable to update the rel_path with xen/lib/find-next-bit.c, I'm
> more than willing to make that adjustment.

The problem is by removing the file, you effectively tell Eclair to 
report any MISRA error. I don't believe this is what we want here.

But if the other agrees with you, then this change ought to be explained 
in the commit message.

To me the key is the commit message should contain enough information 
for the reviewer to understand what/why you are doing. All the changes I 
pointed out are definitely not just a normal code movement.
> 
>>
>>> -            "comment": "Imported from Linux, ignore for now"
>>> -        },
>>>            {
>>>                "rel_path": "arch/x86/acpi/boot.c",
>>>                "comment": "Imported from Linux, ignore for now"
>>> diff --git a/xen/arch/arm/arm64/lib/Makefile
>>> b/xen/arch/arm/arm64/lib/Makefile
>>> index 1b9c7a95e6..66cfac435a 100644
>>> --- a/xen/arch/arm/arm64/lib/Makefile
>>> +++ b/xen/arch/arm/arm64/lib/Makefile
>>> @@ -1,4 +1,4 @@
>>>    obj-y += memcpy.o memcmp.o memmove.o memset.o memchr.o
>>>    obj-y += clear_page.o
>>> -obj-y += bitops.o find_next_bit.o
>>> +obj-y += bitops.o
>>>    obj-y += strchr.o strcmp.o strlen.o strncmp.o strnlen.o strrchr.o
>>> diff --git a/xen/arch/arm/include/asm/arm64/bitops.h
>>> b/xen/arch/arm/include/asm/arm64/bitops.h
>>> index d85a49bca4..f9dd066237 100644
>>> --- a/xen/arch/arm/include/asm/arm64/bitops.h
>>> +++ b/xen/arch/arm/include/asm/arm64/bitops.h
>>> @@ -36,57 +36,9 @@ static inline int flsl(unsigned long x)
>>>    
>>>    /* Based on linux/include/asm-generic/bitops/find.h */
>>>    
>>> -#ifndef find_next_bit
>>> -/**
>>> - * find_next_bit - find the next set bit in a memory region
>>> - * @addr: The address to base the search on
>>> - * @offset: The bitnumber to start searching at
>>> - * @size: The bitmap size in bits
>>> - */
>>> -extern unsigned long find_next_bit(const unsigned long *addr,
>>> unsigned long
>>> -		size, unsigned long offset);
>>> -#endif
>>> -
>>> -#ifndef find_next_zero_bit
>>> -/**
>>> - * find_next_zero_bit - find the next cleared bit in a memory
>>> region
>>> - * @addr: The address to base the search on
>>> - * @offset: The bitnumber to start searching at
>>> - * @size: The bitmap size in bits
>>> - */
>>> -extern unsigned long find_next_zero_bit(const unsigned long *addr,
>>> unsigned
>>> -		long size, unsigned long offset);
>>> -#endif
>>> -
>>> -#ifdef CONFIG_GENERIC_FIND_FIRST_BIT
>>> -
>>> -/**
>>> - * find_first_bit - find the first set bit in a memory region
>>> - * @addr: The address to start the search at
>>> - * @size: The maximum size to search
>>> - *
>>> - * Returns the bit number of the first set bit.
>>> - */
>>> -extern unsigned long find_first_bit(const unsigned long *addr,
>>> -				    unsigned long size);
>>> -
>>> -/**
>>> - * find_first_zero_bit - find the first cleared bit in a memory
>>> region
>>> - * @addr: The address to start the search at
>>> - * @size: The maximum size to search
>>> - *
>>> - * Returns the bit number of the first cleared bit.
>>> - */
>>> -extern unsigned long find_first_zero_bit(const unsigned long
>>> *addr,
>>> -					 unsigned long size);
>>> -#else /* CONFIG_GENERIC_FIND_FIRST_BIT */
>>> -
>>>    #define find_first_bit(addr, size) find_next_bit((addr), (size),
>>> 0)
>>>    #define find_first_zero_bit(addr, size)
>>> find_next_zero_bit((addr), (size), 0)
>>>    
>>> -#endif /* CONFIG_GENERIC_FIND_FIRST_BIT */
>>
>> AFAICT, you are changing the behavior for Arm64 without explaining
>> why.
>> Before, it was possible to set CONFIG_GENERIC_FIND_FIRST_BIT so the
>> generic version of find_first_*_bit are used. This is not possible
>> anymore with your change.
>>
>> Looking at Linux, I see that arm64 is now selecting
>> GENERIC_FIND_FIRST_BIT (see [1]). So I would argue, we should not
>> define
>> find_first_bit(). That said, that's probably a separate patch.
>>
>> For now, you want to explain why GENERIC_FIND_FIRST_BIT is dropped.
> I chose to remove it because I couldn't find any usage or configuration
> setting for this in Xen (Arm).

Right. My point is the commit message can lead to think this is a simple 
code movement and there are no change of behavior.

It wasn't clear to me whether this was done on purpose or not. It looks 
like it was and therefore should really be explained in the commit message.

> 
> I can add "#ifdef GENERIC_FIND_FIRST_BIT" around find_first_zero_bit()
> and find_first_bit() in xen/bitops.h, and according to the link [1], it
> should be wrapped with ifdef. Perhaps it would be better to use "#if
> defined(GENERIC_FIND_FIRST_BIT) && defined(CONFIG_ARM_64)".
> 
> My only concern is that it might seem somewhat inconsistent with the
> other find_*_bit() functions added in this patch. Should we be care
> about that? I mean that do we need similar config or it would be enough
> to add a comment why it is necessary to have ifdef
> GENERIC_FIND_FIRST_BIT.

Note that I didn't ask to keep GENERIC_FIND_FIRST_BIT. I actually 
pointed out that it can be removed but it should be explained in the 
commit message.

Cheers,

-- 
Julien Grall


From xen-devel-bounces@lists.xenproject.org Fri Jan 26 16:20:30 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 26 Jan 2024 16:20:30 +0000
Received: from list by lists.xenproject.org with outflank-mailman.672196.1045928 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTOwJ-0007MR-Td; Fri, 26 Jan 2024 16:20:23 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 672196.1045928; Fri, 26 Jan 2024 16:20:23 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTOwJ-0007MK-Qc; Fri, 26 Jan 2024 16:20:23 +0000
Received: by outflank-mailman (input) for mailman id 672196;
 Fri, 26 Jan 2024 16:20:23 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=UtOA=JE=redhat.com=thuth@srs-se1.protection.inumbo.net>)
 id 1rTOwJ-0007ME-6e
 for xen-devel@lists.xenproject.org; Fri, 26 Jan 2024 16:20:23 +0000
Received: from us-smtp-delivery-124.mimecast.com
 (us-smtp-delivery-124.mimecast.com [170.10.129.124])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id ccb4de41-bc66-11ee-98f5-efadbce2ee36;
 Fri, 26 Jan 2024 17:20:21 +0100 (CET)
Received: from mail-qv1-f70.google.com (mail-qv1-f70.google.com
 [209.85.219.70]) by relay.mimecast.com with ESMTP with STARTTLS
 (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id
 us-mta-465-dChQJkVLN52tzpSyOfPoLQ-1; Fri, 26 Jan 2024 11:20:18 -0500
Received: by mail-qv1-f70.google.com with SMTP id
 6a1803df08f44-685ca415547so6763066d6.2
 for <xen-devel@lists.xenproject.org>; Fri, 26 Jan 2024 08:20:18 -0800 (PST)
Received: from [192.168.0.9] (ip-109-43-176-119.web.vodafone.de.
 [109.43.176.119]) by smtp.gmail.com with ESMTPSA id
 om12-20020a0562143d8c00b006869bae3b11sm632416qvb.35.2024.01.26.08.20.02
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Fri, 26 Jan 2024 08:20:17 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: ccb4de41-bc66-11ee-98f5-efadbce2ee36
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
	s=mimecast20190719; t=1706286020;
	h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
	 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references:autocrypt:autocrypt;
	bh=MRIjfaHeC/HCDOxGifaONkhJ6qMUTCsidTOpeocpbFI=;
	b=J98nAPV3tMYevFgzWTmuIuRhT1zrfXHWEnErWgLr8ZP5Cy/wg1MVACbzvY5g/sfJNcAs3q
	1KVKaCakmjbr5PKmsmv6YdAD2tPbSB7FLuM2bWJ0N1sjXgRdNNaKb6WnnAr7KqdMzx4spK
	aWPru/BH4W6Z5ouMzARPFzj5OwwkWq4=
X-MC-Unique: dChQJkVLN52tzpSyOfPoLQ-1
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706286018; x=1706890818;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=MRIjfaHeC/HCDOxGifaONkhJ6qMUTCsidTOpeocpbFI=;
        b=MK3ncNtHTv+eBSJC0R2vTiEpqVkZj+jD4qeoUD/zLovIB10HElFgGSwo0m6ojMaoOI
         SbFOUNnqlqUZOUV9HK2wTnlzIRDAZc1unrAYWvuxN7HYocs2tmDgGT/X+rnHGaYDDifb
         qrFN27Fy5cfA5dd2LXFY/Q6mkFlOuUHHYt4ef+kBfObvWS4XpAGws918NSpmFStOZAW5
         GSx4QciJ/TcAxNq8tauzc3o7sYRWDfja5NkDqbZBd87rpxq7vAC5RGxkQr8mDQiJdVi2
         PN1JaWIM9B4sBAqwnpYB7j0O4oNUIX3kv46DdwJQFaNxFOlzirUMT8BtUbGjZ79NVXFT
         CSpw==
X-Gm-Message-State: AOJu0YxSEvcUR+E3FjXG+xO4PniQ93FXHwO29DHGZXfsZHGmSY4h5vQE
	YZeIAq3JvJv4h071qYURk8VeBfJw4yoHU2Axz2bM24vi2SubiY+V06b1eh62SxNWhwmm/mTDm1t
	w6RXF4jBHaOBB8uFZjBavIBGTe4GXIJ4sDX0JckN8WwzHylUkugka5D6KUMV0BjFo
X-Received: by 2002:a05:6214:2481:b0:686:aa83:4cc with SMTP id gi1-20020a056214248100b00686aa8304ccmr116100qvb.16.1706286018004;
        Fri, 26 Jan 2024 08:20:18 -0800 (PST)
X-Google-Smtp-Source: AGHT+IHswNQ/uBjF8/Et4Ed+zf4w9PiVErcfgVM/nEdyBOIwzjWjPL1NLQrRxdQyyvj3MNG/c4OfnQ==
X-Received: by 2002:a05:6214:2481:b0:686:aa83:4cc with SMTP id gi1-20020a056214248100b00686aa8304ccmr116030qvb.16.1706286017691;
        Fri, 26 Jan 2024 08:20:17 -0800 (PST)
Message-ID: <80fe8746-3b93-41c7-bd53-13bd8dac9471@redhat.com>
Date: Fri, 26 Jan 2024 17:20:00 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 35/46] hw/mips/mipssim: use qemu_create_nic_device()
To: David Woodhouse <dwmw2@infradead.org>, qemu-devel@nongnu.org,
 =?UTF-8?Q?Philippe_Mathieu-Daud=C3=A9?= <philmd@linaro.org>
Cc: Richard Henderson <richard.henderson@linaro.org>,
 Beniamino Galvani <b.galvani@gmail.com>,
 Peter Maydell <peter.maydell@linaro.org>,
 Strahinja Jankovic <strahinja.p.jankovic@gmail.com>,
 Niek Linnenbank <nieklinnenbank@gmail.com>, =?UTF-8?Q?C=C3=A9dric_Le_Goater?=
 <clg@kaod.org>, Andrew Jeffery <andrew@codeconstruct.com.au>,
 Joel Stanley <joel@jms.id.au>, Igor Mitsyanko <i.mitsyanko@gmail.com>,
 Jean-Christophe Dubois <jcd@tribudubois.net>,
 Andrey Smirnov <andrew.smirnov@gmail.com>, Rob Herring <robh@kernel.org>,
 Subbaraya Sundeep <sundeep.lkml@gmail.com>, Jan Kiszka <jan.kiszka@web.de>,
 Tyrone Ting <kfting@nuvoton.com>, Hao Wu <wuhaotsh@google.com>,
 Radoslaw Biernacki <rad@semihalf.com>,
 Leif Lindholm <quic_llindhol@quicinc.com>,
 Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org>,
 "Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
 Alistair Francis <alistair@alistair23.me>, Helge Deller <deller@gmx.de>,
 Paolo Bonzini <pbonzini@redhat.com>, Eduardo Habkost <eduardo@habkost.net>,
 "Michael S. Tsirkin" <mst@redhat.com>,
 Marcel Apfelbaum <marcel.apfelbaum@gmail.com>, Song Gao
 <gaosong@loongson.cn>, Thomas Huth <huth@tuxfamily.org>,
 Laurent Vivier <laurent@vivier.eu>, Huacai Chen <chenhuacai@kernel.org>,
 Jiaxun Yang <jiaxun.yang@flygoat.com>,
 =?UTF-8?Q?Herv=C3=A9_Poussineau?= <hpoussin@reactos.org>,
 Aleksandar Rikalo <aleksandar.rikalo@syrmia.com>,
 Aurelien Jarno <aurelien@aurel32.net>, Jason Wang <jasowang@redhat.com>,
 Jia Liu <proljc@gmail.com>, Stafford Horne <shorne@gmail.com>,
 Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>,
 Nicholas Piggin <npiggin@gmail.com>,
 Daniel Henrique Barboza <danielhb413@gmail.com>,
 David Gibson <david@gibson.dropbear.id.au>,
 Harsh Prateek Bora <harshpb@linux.ibm.com>, Bin Meng
 <bin.meng@windriver.com>, Palmer Dabbelt <palmer@dabbelt.com>,
 Weiwei Li <liwei1518@gmail.com>, Liu Zhiwei <zhiwei_liu@linux.alibaba.com>,
 Halil Pasic <pasic@linux.ibm.com>,
 Christian Borntraeger <borntraeger@linux.ibm.com>,
 Eric Farman <farman@linux.ibm.com>, David Hildenbrand <david@redhat.com>,
 Ilya Leoshkevich <iii@linux.ibm.com>,
 Yoshinori Sato <ysato@users.sourceforge.jp>,
 Magnus Damm <magnus.damm@gmail.com>, Artyom Tarasenko <atar4qemu@gmail.com>,
 Stefano Stabellini <sstabellini@kernel.org>,
 Anthony Perard <anthony.perard@citrix.com>, Paul Durrant <paul@xen.org>,
 Max Filippov <jcmvbkbc@gmail.com>, qemu-arm@nongnu.org, qemu-ppc@nongnu.org,
 qemu-riscv@nongnu.org, qemu-s390x@nongnu.org,
 xen-devel@lists.xenproject.org, David Woodhouse <dwmw@amazon.co.uk>
References: <20240108204909.564514-1-dwmw2@infradead.org>
 <20240108204909.564514-36-dwmw2@infradead.org>
From: Thomas Huth <thuth@redhat.com>
Autocrypt: addr=thuth@redhat.com; keydata=
 xsFNBFH7eUwBEACzyOXKU+5Pcs6wNpKzrlJwzRl3VGZt95VCdb+FgoU9g11m7FWcOafrVRwU
 yYkTm9+7zBUc0sW5AuPGR/dp3pSLX/yFWsA/UB4nJsHqgDvDU7BImSeiTrnpMOTXb7Arw2a2
 4CflIyFqjCpfDM4MuTmzTjXq4Uov1giGE9X6viNo1pxyEpd7PanlKNnf4PqEQp06X4IgUacW
 tSGj6Gcns1bCuHV8OPWLkf4hkRnu8hdL6i60Yxz4E6TqlrpxsfYwLXgEeswPHOA6Mn4Cso9O
 0lewVYfFfsmokfAVMKWzOl1Sr0KGI5T9CpmRfAiSHpthhHWnECcJFwl72NTi6kUcUzG4se81
 O6n9d/kTj7pzTmBdfwuOZ0YUSqcqs0W+l1NcASSYZQaDoD3/SLk+nqVeCBB4OnYOGhgmIHNW
 0CwMRO/GK+20alxzk//V9GmIM2ACElbfF8+Uug3pqiHkVnKqM7W9/S1NH2qmxB6zMiJUHlTH
 gnVeZX0dgH27mzstcF786uPcdEqS0KJuxh2kk5IvUSL3Qn3ZgmgdxBMyCPciD/1cb7/Ahazr
 3ThHQXSHXkH/aDXdfLsKVuwDzHLVSkdSnZdt5HHh75/NFHxwaTlydgfHmFFwodK8y/TjyiGZ
 zg2Kje38xnz8zKn9iesFBCcONXS7txENTzX0z80WKBhK+XSFJwARAQABzR5UaG9tYXMgSHV0
 aCA8dGh1dGhAcmVkaGF0LmNvbT7CwXgEEwECACIFAlVgX6oCGwMGCwkIBwMCBhUIAgkKCwQW
 AgMBAh4BAheAAAoJEC7Z13T+cC21EbIP/ii9cvT2HHGbFRl8HqGT6+7Wkb+XLMqJBMAIGiQK
 QIP3xk1HPTsLfVG0ao4hy/oYkGNOP8+ubLnZen6Yq3zAFiMhQ44lvgigDYJo3Ve59gfe99KX
 EbtB+X95ODARkq0McR6OAsPNJ7gpEUzfkQUUJTXRDQXfG/FX303Gvk+YU0spm2tsIKPl6AmV
 1CegDljzjycyfJbk418MQmMu2T82kjrkEofUO2a24ed3VGC0/Uz//XCR2ZTo+vBoBUQl41BD
 eFFtoCSrzo3yPFS+w5fkH9NT8ChdpSlbNS32NhYQhJtr9zjWyFRf0Zk+T/1P7ECn6gTEkp5k
 ofFIA4MFBc/fXbaDRtBmPB0N9pqTFApIUI4vuFPPO0JDrII9dLwZ6lO9EKiwuVlvr1wwzsgq
 zJTPBU3qHaUO4d/8G+gD7AL/6T4zi8Jo/GmjBsnYaTzbm94lf0CjXjsOX3seMhaE6WAZOQQG
 tZHAO1kAPWpaxne+wtgMKthyPLNwelLf+xzGvrIKvLX6QuLoWMnWldu22z2ICVnLQChlR9d6
 WW8QFEpo/FK7omuS8KvvopFcOOdlbFMM8Y/8vBgVMSsK6fsYUhruny/PahprPbYGiNIhKqz7
 UvgyZVl4pBFjTaz/SbimTk210vIlkDyy1WuS8Zsn0htv4+jQPgo9rqFE4mipJjy/iboDzsFN
 BFH7eUwBEAC2nzfUeeI8dv0C4qrfCPze6NkryUflEut9WwHhfXCLjtvCjnoGqFelH/PE9NF4
 4VPSCdvD1SSmFVzu6T9qWdcwMSaC+e7G/z0/AhBfqTeosAF5XvKQlAb9ZPkdDr7YN0a1XDfa
 +NgA+JZB4ROyBZFFAwNHT+HCnyzy0v9Sh3BgJJwfpXHH2l3LfncvV8rgFv0bvdr70U+On2XH
 5bApOyW1WpIG5KPJlDdzcQTyptOJ1dnEHfwnABEfzI3dNf63rlxsGouX/NFRRRNqkdClQR3K
 gCwciaXfZ7ir7fF0u1N2UuLsWA8Ei1JrNypk+MRxhbvdQC4tyZCZ8mVDk+QOK6pyK2f4rMf/
 WmqxNTtAVmNuZIwnJdjRMMSs4W4w6N/bRvpqtykSqx7VXcgqtv6eqoDZrNuhGbekQA0sAnCJ
 VPArerAZGArm63o39me/bRUQeQVSxEBmg66yshF9HkcUPGVeC4B0TPwz+HFcVhheo6hoJjLq
 knFOPLRj+0h+ZL+D0GenyqD3CyuyeTT5dGcNU9qT74bdSr20k/CklvI7S9yoQje8BeQAHtdV
 cvO8XCLrpGuw9SgOS7OP5oI26a0548M4KldAY+kqX6XVphEw3/6U1KTf7WxW5zYLTtadjISB
 X9xsRWSU+Yqs3C7oN5TIPSoj9tXMoxZkCIHWvnqGwZ7JhwARAQABwsFfBBgBAgAJBQJR+3lM
 AhsMAAoJEC7Z13T+cC21hPAQAIsBL9MdGpdEpvXs9CYrBkd6tS9mbaSWj6XBDfA1AEdQkBOn
 ZH1Qt7HJesk+qNSnLv6+jP4VwqK5AFMrKJ6IjE7jqgzGxtcZnvSjeDGPF1h2CKZQPpTw890k
 fy18AvgFHkVk2Oylyexw3aOBsXg6ukN44vIFqPoc+YSU0+0QIdYJp/XFsgWxnFIMYwDpxSHS
 5fdDxUjsk3UBHZx+IhFjs2siVZi5wnHIqM7eK9abr2cK2weInTBwXwqVWjsXZ4tq5+jQrwDK
 cvxIcwXdUTLGxc4/Z/VRH1PZSvfQxdxMGmNTGaXVNfdFZjm4fz0mz+OUi6AHC4CZpwnsliGV
 ODqwX8Y1zic9viSTbKS01ZNp175POyWViUk9qisPZB7ypfSIVSEULrL347qY/hm9ahhqmn17
 Ng255syASv3ehvX7iwWDfzXbA0/TVaqwa1YIkec+/8miicV0zMP9siRcYQkyTqSzaTFBBmqD
 oiT+z+/E59qj/EKfyce3sbC9XLjXv3mHMrq1tKX4G7IJGnS989E/fg6crv6NHae9Ckm7+lSs
 IQu4bBP2GxiRQ+NV3iV/KU3ebMRzqIC//DCOxzQNFNJAKldPe/bKZMCxEqtVoRkuJtNdp/5a
 yXFZ6TfE1hGKrDBYAm4vrnZ4CXFSBDllL59cFFOJCkn4Xboj/aVxxJxF30bn
In-Reply-To: <20240108204909.564514-36-dwmw2@infradead.org>
X-Mimecast-Spam-Score: 0
X-Mimecast-Originator: redhat.com
Content-Language: en-US
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

On 08/01/2024 21.27, David Woodhouse wrote:
> From: David Woodhouse <dwmw@amazon.co.uk>
> 
> The MIPS SIM platform instantiates its NIC only if a corresponding
> configuration exists for it. Use qemu_create_nic_device() function for
> that.
> 
> Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
> ---
>   hw/mips/mipssim.c | 13 +++++++------
>   1 file changed, 7 insertions(+), 6 deletions(-)
> 
> diff --git a/hw/mips/mipssim.c b/hw/mips/mipssim.c
> index 01e323904d..16af31648e 100644
> --- a/hw/mips/mipssim.c
> +++ b/hw/mips/mipssim.c
> @@ -118,13 +118,15 @@ static void main_cpu_reset(void *opaque)
>       }
>   }
>   
> -static void mipsnet_init(int base, qemu_irq irq, NICInfo *nd)
> +static void mipsnet_init(int base, qemu_irq irq)
>   {
>       DeviceState *dev;
>       SysBusDevice *s;
>   
> -    dev = qdev_new("mipsnet");
> -    qdev_set_nic_properties(dev, nd);
> +    dev = qemu_create_nic_device("mipsnet", true, NULL);
> +    if (!dev) {
> +        return;
> +    }
>   
>       s = SYS_BUS_DEVICE(dev);
>       sysbus_realize_and_unref(s, &error_fatal);
> @@ -225,9 +227,8 @@ mips_mipssim_init(MachineState *machine)
>                         sysbus_mmio_get_region(SYS_BUS_DEVICE(dev), 0));
>       }
>   
> -    if (nd_table[0].used)
> -        /* MIPSnet uses the MIPS CPU INT0, which is interrupt 2. */
> -        mipsnet_init(0x4200, env->irq[2], &nd_table[0]);
> +    /* MIPSnet uses the MIPS CPU INT0, which is interrupt 2. */
> +    mipsnet_init(0x4200, env->irq[2]);
>   }
>   
>   static void mips_mipssim_machine_init(MachineClass *mc)

Reviewed-by: Thomas Huth <thuth@redhat.com>



From xen-devel-bounces@lists.xenproject.org Fri Jan 26 16:22:10 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 26 Jan 2024 16:22:10 +0000
Received: from list by lists.xenproject.org with outflank-mailman.672201.1045940 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTOy1-00081t-8q; Fri, 26 Jan 2024 16:22:09 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 672201.1045940; Fri, 26 Jan 2024 16:22:09 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTOy1-00081m-4T; Fri, 26 Jan 2024 16:22:09 +0000
Received: by outflank-mailman (input) for mailman id 672201;
 Fri, 26 Jan 2024 16:22:08 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>) id 1rTOy0-00081g-Do
 for xen-devel@lists.xenproject.org; Fri, 26 Jan 2024 16:22:08 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rTOxz-00086y-Fi; Fri, 26 Jan 2024 16:22:07 +0000
Received: from 54-240-197-231.amazon.com ([54.240.197.231]
 helo=[10.95.150.130]) by xenbits.xenproject.org with esmtpsa
 (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rTOxz-0003Xf-9v; Fri, 26 Jan 2024 16:22:07 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
	s=20200302mail; h=Content-Transfer-Encoding:Content-Type:In-Reply-To:From:
	References:Cc:To:Subject:MIME-Version:Date:Message-ID;
	bh=u9gR7F3Vu45IR5vCrdrsLzYvvPY9oQz0P1LrZVE5MaQ=; b=Jwps6whHIsKAFj/lpAqqIHoekh
	ErXALaAYEOPfuYYbXjb9vWc7why2PrRDaM/7Bj3hqCtoHHibQswiH/jtemFy8SnZyaLk/o0ybiL9z
	BLKc45wqFp0TB3FTUPifNFfjSQB/idaacetHZPJNNSiongQs8JY+jL4re2PvYc1inmU0=;
Message-ID: <dcc477bd-b7cf-40e8-85be-3cde5b9cfd61@xen.org>
Date: Fri, 26 Jan 2024 16:22:05 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 25/33] tools/xenstored: move all socket handling into
 posix.c
Content-Language: en-GB
To: Juergen Gross <jgross@suse.com>, xen-devel@lists.xenproject.org
Cc: Wei Liu <wl@xen.org>, Anthony PERARD <anthony.perard@citrix.com>
References: <20240104090055.27323-1-jgross@suse.com>
 <20240104090055.27323-26-jgross@suse.com>
From: Julien Grall <julien@xen.org>
In-Reply-To: <20240104090055.27323-26-jgross@suse.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

Hi Juergen,

On 04/01/2024 09:00, Juergen Gross wrote:
> All of the socket handling is needed only when running as daemon.
> 
> Move it into posix.c, allowing to remove the NO_SOCKETS macro.
> 
> Signed-off-by: Juergen Gross <jgross@suse.com>
> ---
> V3:
> - new patch
> ---
>   tools/xenstored/Makefile.common |   4 -
>   tools/xenstored/core.c          | 156 +-------------------------------
>   tools/xenstored/core.h          |   8 +-
>   tools/xenstored/domain.c        |   9 +-
>   tools/xenstored/minios.c        |   6 ++
>   tools/xenstored/posix.c         | 153 +++++++++++++++++++++++++++++++
>   6 files changed, 167 insertions(+), 169 deletions(-)
> 
> diff --git a/tools/xenstored/Makefile.common b/tools/xenstored/Makefile.common
> index 189ab81b8d..ef63ef650c 100644
> --- a/tools/xenstored/Makefile.common
> +++ b/tools/xenstored/Makefile.common
> @@ -16,10 +16,6 @@ CFLAGS += $(CFLAGS_libxenctrl)
>   CFLAGS += $(CFLAGS_libxenguest)
>   CFLAGS += $(CFLAGS_libxentoolcore)
>   
> -ifdef CONFIG_STUBDOM
> -CFLAGS += -DNO_SOCKETS=1
> -endif
> -
>   $(XENSTORED_OBJS-y): CFLAGS += $(CFLAGS_libxengnttab)
>   
>   xenstored.a: $(XENSTORED_OBJS-y)
> diff --git a/tools/xenstored/core.c b/tools/xenstored/core.c
> index 650c1d1574..8ff1faccef 100644
> --- a/tools/xenstored/core.c
> +++ b/tools/xenstored/core.c
> @@ -20,10 +20,6 @@
>   #include <sys/types.h>
>   #include <sys/stat.h>
>   #include <poll.h>
> -#ifndef NO_SOCKETS
> -#include <sys/socket.h>
> -#include <sys/un.h>
> -#endif
>   #include <sys/time.h>
>   #include <time.h>
>   #include <unistd.h>
> @@ -61,7 +57,7 @@ static unsigned int current_array_size;
>   static unsigned int nr_fds;
>   static unsigned int delayed_requests;
>   
> -static int sock = -1;
> +int sock = -1;

Similar comment to 'fds' on the previous patch. This name is quite 
generic. Can we either pass it as an argument (or return) or rename it?

Cheers,

-- 
Julien Grall


From xen-devel-bounces@lists.xenproject.org Fri Jan 26 16:23:12 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 26 Jan 2024 16:23:12 +0000
Received: from list by lists.xenproject.org with outflank-mailman.672204.1045948 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTOz0-0000O9-GH; Fri, 26 Jan 2024 16:23:10 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 672204.1045948; Fri, 26 Jan 2024 16:23:10 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTOz0-0000O2-Dc; Fri, 26 Jan 2024 16:23:10 +0000
Received: by outflank-mailman (input) for mailman id 672204;
 Fri, 26 Jan 2024 16:23:09 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>) id 1rTOyz-0000Nw-ND
 for xen-devel@lists.xenproject.org; Fri, 26 Jan 2024 16:23:09 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rTOyz-00089W-68; Fri, 26 Jan 2024 16:23:09 +0000
Received: from 54-240-197-231.amazon.com ([54.240.197.231]
 helo=[10.95.150.130]) by xenbits.xenproject.org with esmtpsa
 (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rTOyy-0003Xf-W1; Fri, 26 Jan 2024 16:23:09 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
	s=20200302mail; h=Content-Transfer-Encoding:Content-Type:In-Reply-To:From:
	References:Cc:To:Subject:MIME-Version:Date:Message-ID;
	bh=L2JTTxQKuUGqCdtzpTgbu/k8Mkrvkvt/spjSptdn2iU=; b=inGI81AjubALGvd0w7E52qYTQP
	iSuBrNQkUbkFvXYQKHL94OCoRm0G8AxiSwu3hrBVkP+aNGGkhrvRu28YUtTjc5dU6N1ZO1nY4NKCQ
	vkBs81o4aDbNjneUJvVZ8P6d1FUfL9kvgb7KkT+TQ52uGQXfsSfSjVjKpVxPkO704eik=;
Message-ID: <d488a1cc-6bdb-43e0-8c2c-ceeff485a020@xen.org>
Date: Fri, 26 Jan 2024 16:23:08 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 26/33] tools/xenstored: get own domid in stubdom case
Content-Language: en-GB
To: Juergen Gross <jgross@suse.com>, xen-devel@lists.xenproject.org
Cc: Wei Liu <wl@xen.org>, Anthony PERARD <anthony.perard@citrix.com>
References: <20240104090055.27323-1-jgross@suse.com>
 <20240104090055.27323-27-jgross@suse.com>
From: Julien Grall <julien@xen.org>
In-Reply-To: <20240104090055.27323-27-jgross@suse.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

Hi Juergen,

On 04/01/2024 09:00, Juergen Gross wrote:
> Obtain the own domid when running as stubdom.
> 
> Signed-off-by: Juergen Gross <jgross@suse.com>

Reviewed-by: Julien Grall <jgrall@amazon.com>

Cheers,

-- 
Julien Grall


From xen-devel-bounces@lists.xenproject.org Fri Jan 26 16:25:51 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 26 Jan 2024 16:25:51 +0000
Received: from list by lists.xenproject.org with outflank-mailman.672209.1045960 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTP1X-0001YT-UX; Fri, 26 Jan 2024 16:25:47 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 672209.1045960; Fri, 26 Jan 2024 16:25:47 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTP1X-0001YM-Pq; Fri, 26 Jan 2024 16:25:47 +0000
Received: by outflank-mailman (input) for mailman id 672209;
 Fri, 26 Jan 2024 16:25:46 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>) id 1rTP1W-0001YG-G3
 for xen-devel@lists.xenproject.org; Fri, 26 Jan 2024 16:25:46 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rTP1V-0008BC-MS; Fri, 26 Jan 2024 16:25:45 +0000
Received: from 54-240-197-231.amazon.com ([54.240.197.231]
 helo=[10.95.150.130]) by xenbits.xenproject.org with esmtpsa
 (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rTP1V-0003dP-HB; Fri, 26 Jan 2024 16:25:45 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
	s=20200302mail; h=Content-Transfer-Encoding:Content-Type:In-Reply-To:From:
	References:Cc:To:Subject:MIME-Version:Date:Message-ID;
	bh=cauZwwELulWy2Y9mGSzTSjJO8JjS63NT8NhM5i3xACQ=; b=e7ylTZU9l8aphIwAhsEmpBGiJ8
	UXlct+dg3G1X3S4znmibIygmw65gH53ohxHE8ThKoX9RmG3wghrxFdVf8acvIm4ZAlPx1DDaMjsLv
	jXHyjA9AdK8oQpBwjH3HUovpYgvUzrfOp2IMKGkClhxrnl3Hyha+VunnoVN7L2L0NYtQ=;
Message-ID: <ef91f9c3-7323-4685-9905-71e8f202a921@xen.org>
Date: Fri, 26 Jan 2024 16:25:44 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 28/33] tools/xenstored: split domain_init()
Content-Language: en-GB
To: Juergen Gross <jgross@suse.com>, xen-devel@lists.xenproject.org
Cc: Wei Liu <wl@xen.org>, Anthony PERARD <anthony.perard@citrix.com>
References: <20240104090055.27323-1-jgross@suse.com>
 <20240104090055.27323-29-jgross@suse.com>
From: Julien Grall <julien@xen.org>
In-Reply-To: <20240104090055.27323-29-jgross@suse.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

Hi Juergen,

On 04/01/2024 09:00, Juergen Gross wrote:
> Today domain_init() is called either just before calling dom0_init()
> in case no live update is being performed, or it is called after
> reading the global state from read_state_global(), as the event
> channel fd is needed.
> 
> Split up domain_init() into a preparation part which can be called
> unconditionally, and in a part setting up the event channel handle.
> 
> Note that there is no chance that chk_domain_generation() can be
> called now before xc_handle has been setup, so there is no need for
> the related special case anymore.
> 
> Signed-off-by: Juergen Gross <jgross@suse.com>

Reviewed-by: Julien Grall <jgrall@amazon.com>

Cheers,

-- 
Julien Grall


From xen-devel-bounces@lists.xenproject.org Fri Jan 26 16:29:36 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 26 Jan 2024 16:29:36 +0000
Received: from list by lists.xenproject.org with outflank-mailman.672217.1045970 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTP5C-0003Ts-G3; Fri, 26 Jan 2024 16:29:34 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 672217.1045970; Fri, 26 Jan 2024 16:29:34 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTP5C-0003Tl-By; Fri, 26 Jan 2024 16:29:34 +0000
Received: by outflank-mailman (input) for mailman id 672217;
 Fri, 26 Jan 2024 16:29:33 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>) id 1rTP5B-0003SS-4o
 for xen-devel@lists.xenproject.org; Fri, 26 Jan 2024 16:29:33 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rTP5A-0008Fh-Bp; Fri, 26 Jan 2024 16:29:32 +0000
Received: from 54-240-197-231.amazon.com ([54.240.197.231]
 helo=[10.95.150.130]) by xenbits.xenproject.org with esmtpsa
 (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rTP5A-0003iY-4z; Fri, 26 Jan 2024 16:29:32 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
	s=20200302mail; h=Content-Transfer-Encoding:Content-Type:In-Reply-To:From:
	References:Cc:To:Subject:MIME-Version:Date:Message-ID;
	bh=l7UxzzyRUDz2i/UTflD3SOAWZcn8xaa3PyWbeUz77J4=; b=FahF3L9Ff+ir3zgIxZC1q6tvK8
	dvIrmhooyZsd5mrQo8FHHHrktGMrKcKTvj5ZaanNfGLKh4BIeWdX+Cu+1Vu+kZpJt7cvlQ5Co9K9c
	a0n19FuvtqpbSROOZpSHc83dXc+Y0zZskdvPGQfsZ6pIruDDZ6dCxr15Q+B3RYa2BaoA=;
Message-ID: <7ab48395-e229-46dd-9603-4ba8a404a80d@xen.org>
Date: Fri, 26 Jan 2024 16:29:30 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 29/33] tools/xenstored: map stubdom interface
Content-Language: en-GB
To: Juergen Gross <jgross@suse.com>, xen-devel@lists.xenproject.org
Cc: Wei Liu <wl@xen.org>, Anthony PERARD <anthony.perard@citrix.com>
References: <20240104090055.27323-1-jgross@suse.com>
 <20240104090055.27323-30-jgross@suse.com>
From: Julien Grall <julien@xen.org>
In-Reply-To: <20240104090055.27323-30-jgross@suse.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

Hi Juergen,

On 04/01/2024 09:00, Juergen Gross wrote:
> When running as stubdom, map the stubdom's Xenstore ring page in order
> to support using the 9pfs frontend.
> 
> Use the same pattern as in dom0_init() when running as daemon in dom0
> (introduce the own domain, then send an event to the client side to
> signal Xenstore is ready to communicate).
> 
> Signed-off-by: Juergen Gross <jgross@suse.com>

Reviewed-by: Julien Grall <jgrall@amazon.com>

Cheers,

-- 
Julien Grall


From xen-devel-bounces@lists.xenproject.org Fri Jan 26 16:50:19 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 26 Jan 2024 16:50:19 +0000
Received: from list by lists.xenproject.org with outflank-mailman.672222.1045979 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTPP3-0003Rx-5o; Fri, 26 Jan 2024 16:50:05 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 672222.1045979; Fri, 26 Jan 2024 16:50:05 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTPP3-0003RU-1V; Fri, 26 Jan 2024 16:50:05 +0000
Received: by outflank-mailman (input) for mailman id 672222;
 Fri, 26 Jan 2024 16:50:03 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=UtOA=JE=redhat.com=thuth@srs-se1.protection.inumbo.net>)
 id 1rTPP1-00036E-Pe
 for xen-devel@lists.xenproject.org; Fri, 26 Jan 2024 16:50:03 +0000
Received: from us-smtp-delivery-124.mimecast.com
 (us-smtp-delivery-124.mimecast.com [170.10.133.124])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id f27cdc61-bc6a-11ee-8a43-1f161083a0e0;
 Fri, 26 Jan 2024 17:50:02 +0100 (CET)
Received: from mail-qk1-f199.google.com (mail-qk1-f199.google.com
 [209.85.222.199]) by relay.mimecast.com with ESMTP with STARTTLS
 (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id
 us-mta-562-cDHrV5eLMVO7WMddoUGGLA-1; Fri, 26 Jan 2024 11:50:00 -0500
Received: by mail-qk1-f199.google.com with SMTP id
 af79cd13be357-7832c437dceso70879185a.1
 for <xen-devel@lists.xenproject.org>; Fri, 26 Jan 2024 08:49:59 -0800 (PST)
Received: from [192.168.0.9] (ip-109-43-176-119.web.vodafone.de.
 [109.43.176.119]) by smtp.gmail.com with ESMTPSA id
 w1-20020a05620a148100b0078322b61e88sm712978qkj.78.2024.01.26.08.49.44
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Fri, 26 Jan 2024 08:49:58 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: f27cdc61-bc6a-11ee-8a43-1f161083a0e0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
	s=mimecast20190719; t=1706287801;
	h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
	 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references:autocrypt:autocrypt;
	bh=0KfPDhHPOVpc4yilmMGil/qgHhNOxNfCayRNOJMvDwY=;
	b=JK2xBvr9xggmR5S5g9hcqzzFgAbuhAFhg6RAWJRXY/Af4KkP0MoiFozXVWFtvMuNEsbzs7
	aXe8YMSfH5EO4EZY8foLnD2p0KTrWL08QOXf74UcP3+6JCg5Gn16j5GH3vLYNjuFQvTdAH
	GgASyl9Tbj0C56h/KrIwxuC84D9Fs+I=
X-MC-Unique: cDHrV5eLMVO7WMddoUGGLA-1
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706287799; x=1706892599;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=0KfPDhHPOVpc4yilmMGil/qgHhNOxNfCayRNOJMvDwY=;
        b=Ihqo+1xO+c1p09j+C8kJSin/0NElXAwMpzRPrezkluXRgTa2/yoAdKTf1ApXxLIvKZ
         XayViDSMYDpZIKPC8xWs9kDGvceADU98ybGpKr+fPXgj2mZ4X1mtZKfVEgmPx2qrLcY4
         OxljIi2w/qCdAcjIAZM0GfrtV8UqLDVQ6vKY5VE/FdIq0FHNWEgrF0doE8/j2ZQzMcj9
         X5K+ntTsXK450DBaU9kl1MAIYpZwhaNPEbQD2O9Rub5mppPHCU4dxmLCpuXSLc41UDRN
         XmRlJrsU8SOixUAh5DWyZqHTfl+KAhQNkjrxuRZmd/t8UdZGm0UnLV9ivPh0FeeOcui3
         q88Q==
X-Gm-Message-State: AOJu0YywMwJSrCvC2hqMFrKotpJDc76u1wMNzHKoyb0rmY0F76nkydWF
	BIGccC0m0EJ/21/2f3Nj854COqwDfQnlFMHfEZwrzD492WnykZSmgfHjsy6ulxhVOcPO1HnAaX8
	726RuP6/qftSZXhb528AKJ6d+K6e8RgzP/f4EU+1bnAA6S2GYO8UOyqvLjXfcWheZ
X-Received: by 2002:a05:620a:5319:b0:783:3457:a7e5 with SMTP id oo25-20020a05620a531900b007833457a7e5mr14935qkn.53.1706287799504;
        Fri, 26 Jan 2024 08:49:59 -0800 (PST)
X-Google-Smtp-Source: AGHT+IGphXDzpKcGUhfOPCNP0TPTVgL1hvzGVl/NturbUf/gHks7ulSbCd9UwbjzXETYsqnWuMLKTg==
X-Received: by 2002:a05:620a:5319:b0:783:3457:a7e5 with SMTP id oo25-20020a05620a531900b007833457a7e5mr14862qkn.53.1706287799171;
        Fri, 26 Jan 2024 08:49:59 -0800 (PST)
Message-ID: <580501eb-e6e2-49d7-8b12-667f4a24d260@redhat.com>
Date: Fri, 26 Jan 2024 17:49:43 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 45/46] net: remove qemu_show_nic_models(),
 qemu_find_nic_model()
To: David Woodhouse <dwmw2@infradead.org>, qemu-devel@nongnu.org
Cc: Richard Henderson <richard.henderson@linaro.org>,
 Beniamino Galvani <b.galvani@gmail.com>,
 Peter Maydell <peter.maydell@linaro.org>,
 Strahinja Jankovic <strahinja.p.jankovic@gmail.com>,
 Niek Linnenbank <nieklinnenbank@gmail.com>, =?UTF-8?Q?C=C3=A9dric_Le_Goater?=
 <clg@kaod.org>, Andrew Jeffery <andrew@codeconstruct.com.au>,
 Joel Stanley <joel@jms.id.au>, Igor Mitsyanko <i.mitsyanko@gmail.com>,
 Jean-Christophe Dubois <jcd@tribudubois.net>,
 Andrey Smirnov <andrew.smirnov@gmail.com>,
 =?UTF-8?Q?Philippe_Mathieu-Daud=C3=A9?= <philmd@linaro.org>,
 Rob Herring <robh@kernel.org>, Subbaraya Sundeep <sundeep.lkml@gmail.com>,
 Jan Kiszka <jan.kiszka@web.de>, Tyrone Ting <kfting@nuvoton.com>,
 Hao Wu <wuhaotsh@google.com>, Radoslaw Biernacki <rad@semihalf.com>,
 Leif Lindholm <quic_llindhol@quicinc.com>,
 Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org>,
 "Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
 Alistair Francis <alistair@alistair23.me>, Helge Deller <deller@gmx.de>,
 Paolo Bonzini <pbonzini@redhat.com>, Eduardo Habkost <eduardo@habkost.net>,
 "Michael S. Tsirkin" <mst@redhat.com>,
 Marcel Apfelbaum <marcel.apfelbaum@gmail.com>, Song Gao
 <gaosong@loongson.cn>, Thomas Huth <huth@tuxfamily.org>,
 Laurent Vivier <laurent@vivier.eu>, Huacai Chen <chenhuacai@kernel.org>,
 Jiaxun Yang <jiaxun.yang@flygoat.com>,
 =?UTF-8?Q?Herv=C3=A9_Poussineau?= <hpoussin@reactos.org>,
 Aleksandar Rikalo <aleksandar.rikalo@syrmia.com>,
 Aurelien Jarno <aurelien@aurel32.net>, Jason Wang <jasowang@redhat.com>,
 Jia Liu <proljc@gmail.com>, Stafford Horne <shorne@gmail.com>,
 Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>,
 Nicholas Piggin <npiggin@gmail.com>,
 Daniel Henrique Barboza <danielhb413@gmail.com>,
 David Gibson <david@gibson.dropbear.id.au>,
 Harsh Prateek Bora <harshpb@linux.ibm.com>, Bin Meng
 <bin.meng@windriver.com>, Palmer Dabbelt <palmer@dabbelt.com>,
 Weiwei Li <liwei1518@gmail.com>, Liu Zhiwei <zhiwei_liu@linux.alibaba.com>,
 Halil Pasic <pasic@linux.ibm.com>,
 Christian Borntraeger <borntraeger@linux.ibm.com>,
 Eric Farman <farman@linux.ibm.com>, David Hildenbrand <david@redhat.com>,
 Ilya Leoshkevich <iii@linux.ibm.com>,
 Yoshinori Sato <ysato@users.sourceforge.jp>,
 Magnus Damm <magnus.damm@gmail.com>, Artyom Tarasenko <atar4qemu@gmail.com>,
 Stefano Stabellini <sstabellini@kernel.org>,
 Anthony Perard <anthony.perard@citrix.com>, Paul Durrant <paul@xen.org>,
 Max Filippov <jcmvbkbc@gmail.com>, qemu-arm@nongnu.org, qemu-ppc@nongnu.org,
 qemu-riscv@nongnu.org, qemu-s390x@nongnu.org,
 xen-devel@lists.xenproject.org, David Woodhouse <dwmw@amazon.co.uk>
References: <20240108204909.564514-1-dwmw2@infradead.org>
 <20240108204909.564514-46-dwmw2@infradead.org>
From: Thomas Huth <thuth@redhat.com>
Autocrypt: addr=thuth@redhat.com; keydata=
 xsFNBFH7eUwBEACzyOXKU+5Pcs6wNpKzrlJwzRl3VGZt95VCdb+FgoU9g11m7FWcOafrVRwU
 yYkTm9+7zBUc0sW5AuPGR/dp3pSLX/yFWsA/UB4nJsHqgDvDU7BImSeiTrnpMOTXb7Arw2a2
 4CflIyFqjCpfDM4MuTmzTjXq4Uov1giGE9X6viNo1pxyEpd7PanlKNnf4PqEQp06X4IgUacW
 tSGj6Gcns1bCuHV8OPWLkf4hkRnu8hdL6i60Yxz4E6TqlrpxsfYwLXgEeswPHOA6Mn4Cso9O
 0lewVYfFfsmokfAVMKWzOl1Sr0KGI5T9CpmRfAiSHpthhHWnECcJFwl72NTi6kUcUzG4se81
 O6n9d/kTj7pzTmBdfwuOZ0YUSqcqs0W+l1NcASSYZQaDoD3/SLk+nqVeCBB4OnYOGhgmIHNW
 0CwMRO/GK+20alxzk//V9GmIM2ACElbfF8+Uug3pqiHkVnKqM7W9/S1NH2qmxB6zMiJUHlTH
 gnVeZX0dgH27mzstcF786uPcdEqS0KJuxh2kk5IvUSL3Qn3ZgmgdxBMyCPciD/1cb7/Ahazr
 3ThHQXSHXkH/aDXdfLsKVuwDzHLVSkdSnZdt5HHh75/NFHxwaTlydgfHmFFwodK8y/TjyiGZ
 zg2Kje38xnz8zKn9iesFBCcONXS7txENTzX0z80WKBhK+XSFJwARAQABzR5UaG9tYXMgSHV0
 aCA8dGh1dGhAcmVkaGF0LmNvbT7CwXgEEwECACIFAlVgX6oCGwMGCwkIBwMCBhUIAgkKCwQW
 AgMBAh4BAheAAAoJEC7Z13T+cC21EbIP/ii9cvT2HHGbFRl8HqGT6+7Wkb+XLMqJBMAIGiQK
 QIP3xk1HPTsLfVG0ao4hy/oYkGNOP8+ubLnZen6Yq3zAFiMhQ44lvgigDYJo3Ve59gfe99KX
 EbtB+X95ODARkq0McR6OAsPNJ7gpEUzfkQUUJTXRDQXfG/FX303Gvk+YU0spm2tsIKPl6AmV
 1CegDljzjycyfJbk418MQmMu2T82kjrkEofUO2a24ed3VGC0/Uz//XCR2ZTo+vBoBUQl41BD
 eFFtoCSrzo3yPFS+w5fkH9NT8ChdpSlbNS32NhYQhJtr9zjWyFRf0Zk+T/1P7ECn6gTEkp5k
 ofFIA4MFBc/fXbaDRtBmPB0N9pqTFApIUI4vuFPPO0JDrII9dLwZ6lO9EKiwuVlvr1wwzsgq
 zJTPBU3qHaUO4d/8G+gD7AL/6T4zi8Jo/GmjBsnYaTzbm94lf0CjXjsOX3seMhaE6WAZOQQG
 tZHAO1kAPWpaxne+wtgMKthyPLNwelLf+xzGvrIKvLX6QuLoWMnWldu22z2ICVnLQChlR9d6
 WW8QFEpo/FK7omuS8KvvopFcOOdlbFMM8Y/8vBgVMSsK6fsYUhruny/PahprPbYGiNIhKqz7
 UvgyZVl4pBFjTaz/SbimTk210vIlkDyy1WuS8Zsn0htv4+jQPgo9rqFE4mipJjy/iboDzsFN
 BFH7eUwBEAC2nzfUeeI8dv0C4qrfCPze6NkryUflEut9WwHhfXCLjtvCjnoGqFelH/PE9NF4
 4VPSCdvD1SSmFVzu6T9qWdcwMSaC+e7G/z0/AhBfqTeosAF5XvKQlAb9ZPkdDr7YN0a1XDfa
 +NgA+JZB4ROyBZFFAwNHT+HCnyzy0v9Sh3BgJJwfpXHH2l3LfncvV8rgFv0bvdr70U+On2XH
 5bApOyW1WpIG5KPJlDdzcQTyptOJ1dnEHfwnABEfzI3dNf63rlxsGouX/NFRRRNqkdClQR3K
 gCwciaXfZ7ir7fF0u1N2UuLsWA8Ei1JrNypk+MRxhbvdQC4tyZCZ8mVDk+QOK6pyK2f4rMf/
 WmqxNTtAVmNuZIwnJdjRMMSs4W4w6N/bRvpqtykSqx7VXcgqtv6eqoDZrNuhGbekQA0sAnCJ
 VPArerAZGArm63o39me/bRUQeQVSxEBmg66yshF9HkcUPGVeC4B0TPwz+HFcVhheo6hoJjLq
 knFOPLRj+0h+ZL+D0GenyqD3CyuyeTT5dGcNU9qT74bdSr20k/CklvI7S9yoQje8BeQAHtdV
 cvO8XCLrpGuw9SgOS7OP5oI26a0548M4KldAY+kqX6XVphEw3/6U1KTf7WxW5zYLTtadjISB
 X9xsRWSU+Yqs3C7oN5TIPSoj9tXMoxZkCIHWvnqGwZ7JhwARAQABwsFfBBgBAgAJBQJR+3lM
 AhsMAAoJEC7Z13T+cC21hPAQAIsBL9MdGpdEpvXs9CYrBkd6tS9mbaSWj6XBDfA1AEdQkBOn
 ZH1Qt7HJesk+qNSnLv6+jP4VwqK5AFMrKJ6IjE7jqgzGxtcZnvSjeDGPF1h2CKZQPpTw890k
 fy18AvgFHkVk2Oylyexw3aOBsXg6ukN44vIFqPoc+YSU0+0QIdYJp/XFsgWxnFIMYwDpxSHS
 5fdDxUjsk3UBHZx+IhFjs2siVZi5wnHIqM7eK9abr2cK2weInTBwXwqVWjsXZ4tq5+jQrwDK
 cvxIcwXdUTLGxc4/Z/VRH1PZSvfQxdxMGmNTGaXVNfdFZjm4fz0mz+OUi6AHC4CZpwnsliGV
 ODqwX8Y1zic9viSTbKS01ZNp175POyWViUk9qisPZB7ypfSIVSEULrL347qY/hm9ahhqmn17
 Ng255syASv3ehvX7iwWDfzXbA0/TVaqwa1YIkec+/8miicV0zMP9siRcYQkyTqSzaTFBBmqD
 oiT+z+/E59qj/EKfyce3sbC9XLjXv3mHMrq1tKX4G7IJGnS989E/fg6crv6NHae9Ckm7+lSs
 IQu4bBP2GxiRQ+NV3iV/KU3ebMRzqIC//DCOxzQNFNJAKldPe/bKZMCxEqtVoRkuJtNdp/5a
 yXFZ6TfE1hGKrDBYAm4vrnZ4CXFSBDllL59cFFOJCkn4Xboj/aVxxJxF30bn
In-Reply-To: <20240108204909.564514-46-dwmw2@infradead.org>
X-Mimecast-Spam-Score: 0
X-Mimecast-Originator: redhat.com
Content-Language: en-US
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

On 08/01/2024 21.27, David Woodhouse wrote:
> From: David Woodhouse <dwmw@amazon.co.uk>
> 
> These old functions can be removed now too. Let net_param_nic() print
> the full set of network devices directly, and also make it note that a
> list more specific to this platform/config will be available by using
> '-nic model=help' instead.
> 
> Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
> ---
>   include/net/net.h |  3 ---
>   net/net.c         | 39 ++++++---------------------------------
>   2 files changed, 6 insertions(+), 36 deletions(-)
> 
> diff --git a/include/net/net.h b/include/net/net.h
> index 1be8b40074..19fb82833c 100644
> --- a/include/net/net.h
> +++ b/include/net/net.h
> @@ -203,9 +203,6 @@ void qemu_set_vnet_hdr_len(NetClientState *nc, int len);
>   int qemu_set_vnet_le(NetClientState *nc, bool is_le);
>   int qemu_set_vnet_be(NetClientState *nc, bool is_be);
>   void qemu_macaddr_default_if_unset(MACAddr *macaddr);
> -int qemu_show_nic_models(const char *arg, const char *const *models);
> -int qemu_find_nic_model(NICInfo *nd, const char * const *models,
> -                        const char *default_model);
>   NICInfo *qemu_find_nic_info(const char *typename, bool match_default,
>                               const char *alias);
>   bool qemu_configure_nic_device(DeviceState *dev, bool match_default,
> diff --git a/net/net.c b/net/net.c
> index ffd4b42d5a..09ab0889f5 100644
> --- a/net/net.c
> +++ b/net/net.c
> @@ -977,38 +977,6 @@ GPtrArray *qemu_get_nic_models(const char *device_type)
>       return nic_models;
>   }
>   
> -int qemu_show_nic_models(const char *arg, const char *const *models)
> -{
> -    int i;
> -
> -    if (!arg || !is_help_option(arg)) {
> -        return 0;
> -    }
> -
> -    printf("Available NIC models:\n");
> -    for (i = 0 ; models[i]; i++) {
> -        printf("%s\n", models[i]);
> -    }
> -    return 1;
> -}
> -
> -int qemu_find_nic_model(NICInfo *nd, const char * const *models,
> -                        const char *default_model)
> -{
> -    int i;
> -
> -    if (!nd->model)
> -        nd->model = g_strdup(default_model);
> -
> -    for (i = 0 ; models[i]; i++) {
> -        if (strcmp(nd->model, models[i]) == 0)
> -            return i;
> -    }
> -
> -    error_report("Unsupported NIC model: %s", nd->model);
> -    return -1;
> -}
> -
>   static int net_init_nic(const Netdev *netdev, const char *name,
>                           NetClientState *peer, Error **errp)
>   {
> @@ -1791,9 +1759,14 @@ static int net_param_nic(void *dummy, QemuOpts *opts, Error **errp)
>           }
>           if (is_help_option(type)) {
>               GPtrArray *nic_models = qemu_get_nic_models(TYPE_DEVICE);
> +            int i;
>               show_netdevs();
>               printf("\n");
> -            qemu_show_nic_models(type, (const char **)nic_models->pdata);
> +            printf("Supported NIC models "

Can we please keep "Available" instead of "Supported" ? ... since not each 
NIC is supported on each machine type...

  Thomas


> +                   "(use -nic model=help for a filtered list):\n");
> +            for (i = 0 ; nic_models->pdata[i]; i++) {
> +                printf("%s\n", (char *)nic_models->pdata[i]);
> +            }
>               g_ptr_array_free(nic_models, true);
>               exit(0);
>           }



From xen-devel-bounces@lists.xenproject.org Fri Jan 26 16:54:38 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 26 Jan 2024 16:54:38 +0000
Received: from list by lists.xenproject.org with outflank-mailman.672225.1045988 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTPTR-0005WQ-LU; Fri, 26 Jan 2024 16:54:37 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 672225.1045988; Fri, 26 Jan 2024 16:54:37 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTPTR-0005WJ-IM; Fri, 26 Jan 2024 16:54:37 +0000
Received: by outflank-mailman (input) for mailman id 672225;
 Fri, 26 Jan 2024 16:54:36 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=bPDA=JE=casper.srs.infradead.org=BATV+7caeb094913322f6f00d+7460+infradead.org+dwmw2@srs-se1.protection.inumbo.net>)
 id 1rTPTP-0005Uu-KM
 for xen-devel@lists.xenproject.org; Fri, 26 Jan 2024 16:54:36 +0000
Received: from casper.infradead.org (casper.infradead.org
 [2001:8b0:10b:1236::1])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 95074909-bc6b-11ee-8a43-1f161083a0e0;
 Fri, 26 Jan 2024 17:54:34 +0100 (CET)
Received: from [2001:8b0:10b:5:d160:e4ac:a057:38f5]
 (helo=u3832b3a9db3152.ant.amazon.com)
 by casper.infradead.org with esmtpsa (Exim 4.97.1 #2 (Red Hat Linux))
 id 1rTPSt-0000000EEFQ-3eYg; Fri, 26 Jan 2024 16:54:05 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 95074909-bc6b-11ee-8a43-1f161083a0e0
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=infradead.org; s=casper.20170209; h=MIME-Version:Content-Type:References:
	In-Reply-To:Date:Cc:To:From:Subject:Message-ID:Sender:Reply-To:
	Content-Transfer-Encoding:Content-ID:Content-Description;
	bh=uc8Gmxh5FOS0B7b3RsNCXonfy5GGwiwcPgs7QKuG0CY=; b=sU3114pSiFVf2FNVaXbet+X0eb
	15wlZ7r7dn+U74lumJjabBUqi1zTs1qFFexwySiNDM0KCdohr7VT6A4bp759+FQ9+i4UeVfF4agmv
	6SU9IpOcOYh9iGicK0wcUyX6CatI4DOurnevtLvjqQXHpyW1GfE0HGodVhvl/fyT5ju0P2ObOdLVP
	B3wDv7BTITT2WwcIoTv7LFYN2mvG5+17MpmubFwx3jTLbgbAN+LKs74lnNbdx44aXZD4CjClhzcdF
	Tkfr9lV0sfGyPUX/9znaNwdL6q3YW2olUzGQ07DJFfzS40YxBsyb+e2lq/kgNo5HUJqZDV83znn+J
	5/6rApZQ==;
Message-ID: <eb29535d58e472b1db0a5613988fcb7dba7df18f.camel@infradead.org>
Subject: Re: [PATCH v3 45/46] net: remove qemu_show_nic_models(),
 qemu_find_nic_model()
From: David Woodhouse <dwmw2@infradead.org>
To: Thomas Huth <thuth@redhat.com>, qemu-devel@nongnu.org
Cc: Richard Henderson <richard.henderson@linaro.org>, Beniamino Galvani
 <b.galvani@gmail.com>, Peter Maydell <peter.maydell@linaro.org>, Strahinja
 Jankovic <strahinja.p.jankovic@gmail.com>, Niek Linnenbank
 <nieklinnenbank@gmail.com>,  =?ISO-8859-1?Q?C=E9dric?= Le Goater
 <clg@kaod.org>, Andrew Jeffery <andrew@codeconstruct.com.au>, Joel Stanley
 <joel@jms.id.au>, Igor Mitsyanko <i.mitsyanko@gmail.com>, Jean-Christophe
 Dubois <jcd@tribudubois.net>, Andrey Smirnov <andrew.smirnov@gmail.com>,
 Philippe =?ISO-8859-1?Q?Mathieu-Daud=E9?= <philmd@linaro.org>, Rob Herring
 <robh@kernel.org>, Subbaraya Sundeep <sundeep.lkml@gmail.com>, Jan Kiszka
 <jan.kiszka@web.de>, Tyrone Ting <kfting@nuvoton.com>, Hao Wu
 <wuhaotsh@google.com>, Radoslaw Biernacki <rad@semihalf.com>, Leif Lindholm
 <quic_llindhol@quicinc.com>, Marcin Juszkiewicz
 <marcin.juszkiewicz@linaro.org>, "Edgar E. Iglesias"
 <edgar.iglesias@gmail.com>, Alistair Francis <alistair@alistair23.me>,
 Helge Deller <deller@gmx.de>, Paolo Bonzini <pbonzini@redhat.com>,  Eduardo
 Habkost <eduardo@habkost.net>, "Michael S. Tsirkin" <mst@redhat.com>,
 Marcel Apfelbaum <marcel.apfelbaum@gmail.com>, Song Gao
 <gaosong@loongson.cn>, Thomas Huth <huth@tuxfamily.org>, Laurent Vivier
 <laurent@vivier.eu>, Huacai Chen <chenhuacai@kernel.org>, Jiaxun Yang
 <jiaxun.yang@flygoat.com>,  =?ISO-8859-1?Q?Herv=E9?= Poussineau
 <hpoussin@reactos.org>, Aleksandar Rikalo <aleksandar.rikalo@syrmia.com>, 
 Aurelien Jarno <aurelien@aurel32.net>, Jason Wang <jasowang@redhat.com>,
 Jia Liu <proljc@gmail.com>, Stafford Horne <shorne@gmail.com>, Mark
 Cave-Ayland <mark.cave-ayland@ilande.co.uk>, Nicholas Piggin
 <npiggin@gmail.com>, Daniel Henrique Barboza <danielhb413@gmail.com>, David
 Gibson <david@gibson.dropbear.id.au>, Harsh Prateek Bora
 <harshpb@linux.ibm.com>, Bin Meng <bin.meng@windriver.com>, Palmer Dabbelt
 <palmer@dabbelt.com>, Weiwei Li <liwei1518@gmail.com>, Liu Zhiwei
 <zhiwei_liu@linux.alibaba.com>, Halil Pasic <pasic@linux.ibm.com>,
 Christian Borntraeger <borntraeger@linux.ibm.com>,  Eric Farman
 <farman@linux.ibm.com>, David Hildenbrand <david@redhat.com>, Ilya
 Leoshkevich <iii@linux.ibm.com>, Yoshinori Sato
 <ysato@users.sourceforge.jp>, Magnus Damm <magnus.damm@gmail.com>, Artyom
 Tarasenko <atar4qemu@gmail.com>, Stefano Stabellini
 <sstabellini@kernel.org>, Anthony Perard <anthony.perard@citrix.com>, Paul
 Durrant <paul@xen.org>, Max Filippov <jcmvbkbc@gmail.com>,
 qemu-arm@nongnu.org,  qemu-ppc@nongnu.org, qemu-riscv@nongnu.org,
 qemu-s390x@nongnu.org,  xen-devel@lists.xenproject.org
Date: Fri, 26 Jan 2024 16:54:03 +0000
In-Reply-To: <580501eb-e6e2-49d7-8b12-667f4a24d260@redhat.com>
References: <20240108204909.564514-1-dwmw2@infradead.org>
	 <20240108204909.564514-46-dwmw2@infradead.org>
	 <580501eb-e6e2-49d7-8b12-667f4a24d260@redhat.com>
Content-Type: multipart/signed; micalg="sha-256"; protocol="application/pkcs7-signature";
	boundary="=-Y7ucqkC3fnTLva0AFQnx"
User-Agent: Evolution 3.44.4-0ubuntu2 
MIME-Version: 1.0
X-SRS-Rewrite: SMTP reverse-path rewritten from <dwmw2@infradead.org> by casper.infradead.org. See http://www.infradead.org/rpr.html


--=-Y7ucqkC3fnTLva0AFQnx
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

On Fri, 2024-01-26 at 17:49 +0100, Thomas Huth wrote:
>=20
> Can we please keep "Available" instead of "Supported" ? ... since not eac=
h=20
> NIC is supported on each machine type...

Done, thanks.

--=-Y7ucqkC3fnTLva0AFQnx
Content-Type: application/pkcs7-signature; name="smime.p7s"
Content-Disposition: attachment; filename="smime.p7s"
Content-Transfer-Encoding: base64

MIAGCSqGSIb3DQEHAqCAMIACAQExDzANBglghkgBZQMEAgEFADCABgkqhkiG9w0BBwEAAKCCEkQw
ggYQMIID+KADAgECAhBNlCwQ1DvglAnFgS06KwZPMA0GCSqGSIb3DQEBDAUAMIGIMQswCQYDVQQG
EwJVUzETMBEGA1UECBMKTmV3IEplcnNleTEUMBIGA1UEBxMLSmVyc2V5IENpdHkxHjAcBgNVBAoT
FVRoZSBVU0VSVFJVU1QgTmV0d29yazEuMCwGA1UEAxMlVVNFUlRydXN0IFJTQSBDZXJ0aWZpY2F0
aW9uIEF1dGhvcml0eTAeFw0xODExMDIwMDAwMDBaFw0zMDEyMzEyMzU5NTlaMIGWMQswCQYDVQQG
EwJHQjEbMBkGA1UECBMSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHEwdTYWxmb3JkMRgwFgYD
VQQKEw9TZWN0aWdvIExpbWl0ZWQxPjA8BgNVBAMTNVNlY3RpZ28gUlNBIENsaWVudCBBdXRoZW50
aWNhdGlvbiBhbmQgU2VjdXJlIEVtYWlsIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
AQEAyjztlApB/975Rrno1jvm2pK/KxBOqhq8gr2+JhwpKirSzZxQgT9tlC7zl6hn1fXjSo5MqXUf
ItMltrMaXqcESJuK8dtK56NCSrq4iDKaKq9NxOXFmqXX2zN8HHGjQ2b2Xv0v1L5Nk1MQPKA19xeW
QcpGEGFUUd0kN+oHox+L9aV1rjfNiCj3bJk6kJaOPabPi2503nn/ITX5e8WfPnGw4VuZ79Khj1YB
rf24k5Ee1sLTHsLtpiK9OjG4iQRBdq6Z/TlVx/hGAez5h36bBJMxqdHLpdwIUkTqT8se3ed0PewD
ch/8kHPo5fZl5u1B0ecpq/sDN/5sCG52Ds+QU5O5EwIDAQABo4IBZDCCAWAwHwYDVR0jBBgwFoAU
U3m/WqorSs9UgOHYm8Cd8rIDZsswHQYDVR0OBBYEFAnA8vwL2pTbX/4r36iZQs/J4K0AMA4GA1Ud
DwEB/wQEAwIBhjASBgNVHRMBAf8ECDAGAQH/AgEAMB0GA1UdJQQWMBQGCCsGAQUFBwMCBggrBgEF
BQcDBDARBgNVHSAECjAIMAYGBFUdIAAwUAYDVR0fBEkwRzBFoEOgQYY/aHR0cDovL2NybC51c2Vy
dHJ1c3QuY29tL1VTRVJUcnVzdFJTQUNlcnRpZmljYXRpb25BdXRob3JpdHkuY3JsMHYGCCsGAQUF
BwEBBGowaDA/BggrBgEFBQcwAoYzaHR0cDovL2NydC51c2VydHJ1c3QuY29tL1VTRVJUcnVzdFJT
QUFkZFRydXN0Q0EuY3J0MCUGCCsGAQUFBzABhhlodHRwOi8vb2NzcC51c2VydHJ1c3QuY29tMA0G
CSqGSIb3DQEBDAUAA4ICAQBBRHUAqznCFfXejpVtMnFojADdF9d6HBA4kMjjsb0XMZHztuOCtKF+
xswhh2GqkW5JQrM8zVlU+A2VP72Ky2nlRA1GwmIPgou74TZ/XTarHG8zdMSgaDrkVYzz1g3nIVO9
IHk96VwsacIvBF8JfqIs+8aWH2PfSUrNxP6Ys7U0sZYx4rXD6+cqFq/ZW5BUfClN/rhk2ddQXyn7
kkmka2RQb9d90nmNHdgKrwfQ49mQ2hWQNDkJJIXwKjYA6VUR/fZUFeCUisdDe/0ABLTI+jheXUV1
eoYV7lNwNBKpeHdNuO6Aacb533JlfeUHxvBz9OfYWUiXu09sMAviM11Q0DuMZ5760CdO2VnpsXP4
KxaYIhvqPqUMWqRdWyn7crItNkZeroXaecG03i3mM7dkiPaCkgocBg0EBYsbZDZ8bsG3a08LwEsL
1Ygz3SBsyECa0waq4hOf/Z85F2w2ZpXfP+w8q4ifwO90SGZZV+HR/Jh6rEaVPDRF/CEGVqR1hiuQ
OZ1YL5ezMTX0ZSLwrymUE0pwi/KDaiYB15uswgeIAcA6JzPFf9pLkAFFWs1QNyN++niFhsM47qod
x/PL+5jR87myx5uYdBEQkkDc+lKB1Wct6ucXqm2EmsaQ0M95QjTmy+rDWjkDYdw3Ms6mSWE3Bn7i
5ZgtwCLXgAIe5W8mybM2JzCCBhQwggT8oAMCAQICEQDGvhmWZ0DEAx0oURL6O6l+MA0GCSqGSIb3
DQEBCwUAMIGWMQswCQYDVQQGEwJHQjEbMBkGA1UECBMSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYD
VQQHEwdTYWxmb3JkMRgwFgYDVQQKEw9TZWN0aWdvIExpbWl0ZWQxPjA8BgNVBAMTNVNlY3RpZ28g
UlNBIENsaWVudCBBdXRoZW50aWNhdGlvbiBhbmQgU2VjdXJlIEVtYWlsIENBMB4XDTIyMDEwNzAw
MDAwMFoXDTI1MDEwNjIzNTk1OVowJDEiMCAGCSqGSIb3DQEJARYTZHdtdzJAaW5mcmFkZWFkLm9y
ZzCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBALQ3GpC2bomUqk+91wLYBzDMcCj5C9m6
oZaHwvmIdXftOgTbCJXADo6G9T7BBAebw2JV38EINgKpy/ZHh7htyAkWYVoFsFPrwHounto8xTsy
SSePMiPlmIdQ10BcVSXMUJ3Juu16GlWOnAMJY2oYfEzmE7uT9YgcBqKCo65pTFmOnR/VVbjJk4K2
xE34GC2nAdUQkPFuyaFisicc6HRMOYXPuF0DuwITEKnjxgNjP+qDrh0db7PAjO1D4d5ftfrsf+kd
RR4gKVGSk8Tz2WwvtLAroJM4nXjNPIBJNT4w/FWWc/5qPHJy2U+eITZ5LLE5s45mX2oPFknWqxBo
bQZ8a9dsZ3dSPZBvE9ZrmtFLrVrN4eo1jsXgAp1+p7bkfqd3BgBEmfsYWlBXO8rVXfvPgLs32VdV
NZxb/CDWPqBsiYv0Hv3HPsz07j5b+/cVoWqyHDKzkaVbxfq/7auNVRmPB3v5SWEsH8xi4Bez2V9U
KxfYCnqsjp8RaC2/khxKt0A552Eaxnz/4ly/2C7wkwTQnBmdlFYhAflWKQ03Ufiu8t3iBE3VJbc2
5oMrglj7TRZrmKq3CkbFnX0fyulB+kHimrt6PIWn7kgyl9aelIl6vtbhMA+l0nfrsORMa4kobqQ5
C5rveVgmcIad67EDa+UqEKy/GltUwlSh6xy+TrK1tzDvAgMBAAGjggHMMIIByDAfBgNVHSMEGDAW
gBQJwPL8C9qU21/+K9+omULPyeCtADAdBgNVHQ4EFgQUzMeDMcimo0oz8o1R1Nver3ZVpSkwDgYD
VR0PAQH/BAQDAgWgMAwGA1UdEwEB/wQCMAAwHQYDVR0lBBYwFAYIKwYBBQUHAwQGCCsGAQUFBwMC
MEAGA1UdIAQ5MDcwNQYMKwYBBAGyMQECAQEBMCUwIwYIKwYBBQUHAgEWF2h0dHBzOi8vc2VjdGln
by5jb20vQ1BTMFoGA1UdHwRTMFEwT6BNoEuGSWh0dHA6Ly9jcmwuc2VjdGlnby5jb20vU2VjdGln
b1JTQUNsaWVudEF1dGhlbnRpY2F0aW9uYW5kU2VjdXJlRW1haWxDQS5jcmwwgYoGCCsGAQUFBwEB
BH4wfDBVBggrBgEFBQcwAoZJaHR0cDovL2NydC5zZWN0aWdvLmNvbS9TZWN0aWdvUlNBQ2xpZW50
QXV0aGVudGljYXRpb25hbmRTZWN1cmVFbWFpbENBLmNydDAjBggrBgEFBQcwAYYXaHR0cDovL29j
c3Auc2VjdGlnby5jb20wHgYDVR0RBBcwFYETZHdtdzJAaW5mcmFkZWFkLm9yZzANBgkqhkiG9w0B
AQsFAAOCAQEAyW6MUir5dm495teKqAQjDJwuFCi35h4xgnQvQ/fzPXmtR9t54rpmI2TfyvcKgOXp
qa7BGXNFfh1JsqexVkIqZP9uWB2J+uVMD+XZEs/KYNNX2PvIlSPrzIB4Z2wyIGQpaPLlYflrrVFK
v9CjT2zdqvy2maK7HKOQRt3BiJbVG5lRiwbbygldcALEV9ChWFfgSXvrWDZspnU3Gjw/rMHrGnql
Htlyebp3pf3fSS9kzQ1FVtVIDrL6eqhTwJxe+pXSMMqFiN0whpBtXdyDjzBtQTaZJ7zTT/vlehc/
tDuqZwGHm/YJy883Ll+GP3NvOkgaRGWEuYWJJ6hFCkXYjyR9IzCCBhQwggT8oAMCAQICEQDGvhmW
Z0DEAx0oURL6O6l+MA0GCSqGSIb3DQEBCwUAMIGWMQswCQYDVQQGEwJHQjEbMBkGA1UECBMSR3Jl
YXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHEwdTYWxmb3JkMRgwFgYDVQQKEw9TZWN0aWdvIExpbWl0
ZWQxPjA8BgNVBAMTNVNlY3RpZ28gUlNBIENsaWVudCBBdXRoZW50aWNhdGlvbiBhbmQgU2VjdXJl
IEVtYWlsIENBMB4XDTIyMDEwNzAwMDAwMFoXDTI1MDEwNjIzNTk1OVowJDEiMCAGCSqGSIb3DQEJ
ARYTZHdtdzJAaW5mcmFkZWFkLm9yZzCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBALQ3
GpC2bomUqk+91wLYBzDMcCj5C9m6oZaHwvmIdXftOgTbCJXADo6G9T7BBAebw2JV38EINgKpy/ZH
h7htyAkWYVoFsFPrwHounto8xTsySSePMiPlmIdQ10BcVSXMUJ3Juu16GlWOnAMJY2oYfEzmE7uT
9YgcBqKCo65pTFmOnR/VVbjJk4K2xE34GC2nAdUQkPFuyaFisicc6HRMOYXPuF0DuwITEKnjxgNj
P+qDrh0db7PAjO1D4d5ftfrsf+kdRR4gKVGSk8Tz2WwvtLAroJM4nXjNPIBJNT4w/FWWc/5qPHJy
2U+eITZ5LLE5s45mX2oPFknWqxBobQZ8a9dsZ3dSPZBvE9ZrmtFLrVrN4eo1jsXgAp1+p7bkfqd3
BgBEmfsYWlBXO8rVXfvPgLs32VdVNZxb/CDWPqBsiYv0Hv3HPsz07j5b+/cVoWqyHDKzkaVbxfq/
7auNVRmPB3v5SWEsH8xi4Bez2V9UKxfYCnqsjp8RaC2/khxKt0A552Eaxnz/4ly/2C7wkwTQnBmd
lFYhAflWKQ03Ufiu8t3iBE3VJbc25oMrglj7TRZrmKq3CkbFnX0fyulB+kHimrt6PIWn7kgyl9ae
lIl6vtbhMA+l0nfrsORMa4kobqQ5C5rveVgmcIad67EDa+UqEKy/GltUwlSh6xy+TrK1tzDvAgMB
AAGjggHMMIIByDAfBgNVHSMEGDAWgBQJwPL8C9qU21/+K9+omULPyeCtADAdBgNVHQ4EFgQUzMeD
Mcimo0oz8o1R1Nver3ZVpSkwDgYDVR0PAQH/BAQDAgWgMAwGA1UdEwEB/wQCMAAwHQYDVR0lBBYw
FAYIKwYBBQUHAwQGCCsGAQUFBwMCMEAGA1UdIAQ5MDcwNQYMKwYBBAGyMQECAQEBMCUwIwYIKwYB
BQUHAgEWF2h0dHBzOi8vc2VjdGlnby5jb20vQ1BTMFoGA1UdHwRTMFEwT6BNoEuGSWh0dHA6Ly9j
cmwuc2VjdGlnby5jb20vU2VjdGlnb1JTQUNsaWVudEF1dGhlbnRpY2F0aW9uYW5kU2VjdXJlRW1h
aWxDQS5jcmwwgYoGCCsGAQUFBwEBBH4wfDBVBggrBgEFBQcwAoZJaHR0cDovL2NydC5zZWN0aWdv
LmNvbS9TZWN0aWdvUlNBQ2xpZW50QXV0aGVudGljYXRpb25hbmRTZWN1cmVFbWFpbENBLmNydDAj
BggrBgEFBQcwAYYXaHR0cDovL29jc3Auc2VjdGlnby5jb20wHgYDVR0RBBcwFYETZHdtdzJAaW5m
cmFkZWFkLm9yZzANBgkqhkiG9w0BAQsFAAOCAQEAyW6MUir5dm495teKqAQjDJwuFCi35h4xgnQv
Q/fzPXmtR9t54rpmI2TfyvcKgOXpqa7BGXNFfh1JsqexVkIqZP9uWB2J+uVMD+XZEs/KYNNX2PvI
lSPrzIB4Z2wyIGQpaPLlYflrrVFKv9CjT2zdqvy2maK7HKOQRt3BiJbVG5lRiwbbygldcALEV9Ch
WFfgSXvrWDZspnU3Gjw/rMHrGnqlHtlyebp3pf3fSS9kzQ1FVtVIDrL6eqhTwJxe+pXSMMqFiN0w
hpBtXdyDjzBtQTaZJ7zTT/vlehc/tDuqZwGHm/YJy883Ll+GP3NvOkgaRGWEuYWJJ6hFCkXYjyR9
IzGCBMcwggTDAgEBMIGsMIGWMQswCQYDVQQGEwJHQjEbMBkGA1UECBMSR3JlYXRlciBNYW5jaGVz
dGVyMRAwDgYDVQQHEwdTYWxmb3JkMRgwFgYDVQQKEw9TZWN0aWdvIExpbWl0ZWQxPjA8BgNVBAMT
NVNlY3RpZ28gUlNBIENsaWVudCBBdXRoZW50aWNhdGlvbiBhbmQgU2VjdXJlIEVtYWlsIENBAhEA
xr4ZlmdAxAMdKFES+jupfjANBglghkgBZQMEAgEFAKCCAeswGAYJKoZIhvcNAQkDMQsGCSqGSIb3
DQEHATAcBgkqhkiG9w0BCQUxDxcNMjQwMTI2MTY1NDAzWjAvBgkqhkiG9w0BCQQxIgQgEayQTRex
VabF1UztYyGLDbZKYsRpLDsDWb24RVDf6LEwgb0GCSsGAQQBgjcQBDGBrzCBrDCBljELMAkGA1UE
BhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEYMBYG
A1UEChMPU2VjdGlnbyBMaW1pdGVkMT4wPAYDVQQDEzVTZWN0aWdvIFJTQSBDbGllbnQgQXV0aGVu
dGljYXRpb24gYW5kIFNlY3VyZSBFbWFpbCBDQQIRAMa+GZZnQMQDHShREvo7qX4wgb8GCyqGSIb3
DQEJEAILMYGvoIGsMIGWMQswCQYDVQQGEwJHQjEbMBkGA1UECBMSR3JlYXRlciBNYW5jaGVzdGVy
MRAwDgYDVQQHEwdTYWxmb3JkMRgwFgYDVQQKEw9TZWN0aWdvIExpbWl0ZWQxPjA8BgNVBAMTNVNl
Y3RpZ28gUlNBIENsaWVudCBBdXRoZW50aWNhdGlvbiBhbmQgU2VjdXJlIEVtYWlsIENBAhEAxr4Z
lmdAxAMdKFES+jupfjANBgkqhkiG9w0BAQEFAASCAgBZlNn0fBGDKWwpo570NIRFpZ2qwDTIZ/de
BE8H+BEFgpGlXazF1Rgff1LJsP2M/JvAoon/NrleZ8nQcLwwKiSVfLi9b5sQwjATRpN0Lp3vLepu
Si25m28fwwW++fXFec+/x7egRvHKCra21ZujSQi9XHtIktvFqX8VFgBrTIl+0kHba5t/BVL89VzF
uz6nhU+muo82iQKptw3Y+o5ftjgYijvOSu8xOUoiVsLq3dR+R7JM28jRdmWpjUljsdL22U9w6Ivb
h6RkfVhZ8jAxhJ0J1ypafu+wmOA4WZfZeErGGfte6B5Jg9MkMqb/PtSLuRQyOeSFlIIxyI3F911t
GhO40dF75eikYLDaxR/+JJ6Fy5C/LVy2f+buK6EdM126QGJUx2AT7M/6Z9gtRN8hz1V0uTxUjmbH
wZhay4ZEmyJAT6pFXsHJlwJEsNkLEHJHCx0PXFHWEnTyRQo4tgdsxHnNN9BTVhsfCmbVQStMS9Jl
1uURH5BBhVa/iK4ou0HeeJs93pKLHsSOWkW7mfUmoXBNoH6ikAhPXrS4jaNDEZkr0nErVO0iIV3T
oujz/cSsPaU+Mbb2BrQaqGCWFlOkGxEyTQJOh1WsrSg7lCrM0FhdZKFoxUDZr9gAzs83IqdJPosX
AknexyM1RtRAxYble3pec5iGf7FNCE+K0msLY+2DCgAAAAAAAA==


--=-Y7ucqkC3fnTLva0AFQnx--


From xen-devel-bounces@lists.xenproject.org Fri Jan 26 17:09:40 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 26 Jan 2024 17:09:40 +0000
Received: from list by lists.xenproject.org with outflank-mailman.672235.1045999 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTPhp-00025E-VL; Fri, 26 Jan 2024 17:09:29 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 672235.1045999; Fri, 26 Jan 2024 17:09:29 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTPhp-000257-SH; Fri, 26 Jan 2024 17:09:29 +0000
Received: by outflank-mailman (input) for mailman id 672235;
 Fri, 26 Jan 2024 17:09:28 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=UtOA=JE=redhat.com=thuth@srs-se1.protection.inumbo.net>)
 id 1rTPho-000251-Gm
 for xen-devel@lists.xenproject.org; Fri, 26 Jan 2024 17:09:28 +0000
Received: from us-smtp-delivery-124.mimecast.com
 (us-smtp-delivery-124.mimecast.com [170.10.133.124])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id a7f5c016-bc6d-11ee-98f5-efadbce2ee36;
 Fri, 26 Jan 2024 18:09:26 +0100 (CET)
Received: from mail-qt1-f200.google.com (mail-qt1-f200.google.com
 [209.85.160.200]) by relay.mimecast.com with ESMTP with STARTTLS
 (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id
 us-mta-232-XJ8rYxVPNSy0EBqLlVRQIw-1; Fri, 26 Jan 2024 12:09:23 -0500
Received: by mail-qt1-f200.google.com with SMTP id
 d75a77b69052e-429f3c43c66so7781251cf.1
 for <xen-devel@lists.xenproject.org>; Fri, 26 Jan 2024 09:09:23 -0800 (PST)
Received: from [192.168.0.9] (ip-109-43-176-119.web.vodafone.de.
 [109.43.176.119]) by smtp.gmail.com with ESMTPSA id
 ex7-20020a05622a518700b0042994b3c20dsm677135qtb.29.2024.01.26.09.09.11
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Fri, 26 Jan 2024 09:09:22 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: a7f5c016-bc6d-11ee-98f5-efadbce2ee36
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
	s=mimecast20190719; t=1706288964;
	h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
	 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references:autocrypt:autocrypt;
	bh=C0SzL+zRQ0KIywrJY/fgdSQ4/8H3RGQGGgFdpnwjnFM=;
	b=a49CkUQgFmA7S9KYccp6eE038OLod1ouHr8uAIA27thEV7OwIV82gYiun+YsqDNANH3mMH
	773WsDYnPu0NvfwmBvhWVDzvQPQ6qNZZKVw4nR0Y89C3tRPZPGPh5YnkAc2yzp1mrTB0op
	55+knEPKqbvxGXi+jt80v+NIkQfoExg=
X-MC-Unique: XJ8rYxVPNSy0EBqLlVRQIw-1
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706288963; x=1706893763;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=C0SzL+zRQ0KIywrJY/fgdSQ4/8H3RGQGGgFdpnwjnFM=;
        b=xJumFsFPSBqHI6P7gXHy9mZxcLyaftq95Un7qrv8AEJZzpM6OCyCHVYSB6CarIYGP8
         FmTAx4nB0Bf+25woiweeT2vx0mWso8jOm0whWKH5aMfsr+q7k0sNTO4aEJQoc9+DMmCi
         dfXvpGyU3xlmDoVEFGpTiEr7fzqG2egM5sWQdOlrIKVUN93nf0Mdpy5o84Dx/3/LcBOe
         TdVnXHMFQe1hb8dqdLGBIZdT+uWDUTfgd+/f4Goyg+v4SukY6JKkZSJY+HLkdPbuTEqX
         /gih//DfxhFTCeCgCql57Ztll0nmDZfWbdZj2xcoqD7p/rDKGUI2mIML+5cycYoTLhpU
         290w==
X-Gm-Message-State: AOJu0Yz/ineNHS/zIaq+c+3cAkobNFOG6fM7gN5bVrTcjIoxOxPlxQAF
	2L1WkQ6UC2WVJm/JFowD0WzWT4RL6ek5RXoACi8rPfeesQF27VJll4LPXQX9KPHwIoqpXAEroTm
	/eP+3CpttTg6CjsXZliIKHTyqILg+dUhThnUR0omnfHP8M5Yy1obcOHl3jDFu1X3A
X-Received: by 2002:ac8:5791:0:b0:42a:68be:493b with SMTP id v17-20020ac85791000000b0042a68be493bmr151998qta.51.1706288963005;
        Fri, 26 Jan 2024 09:09:23 -0800 (PST)
X-Google-Smtp-Source: AGHT+IEMEn5J69PlD8XDoh2aJKf7NGXp79yfni+xfngZy/is5njHnWBvpbsZ6vZtEWSXFh2+HXFY0w==
X-Received: by 2002:ac8:5791:0:b0:42a:68be:493b with SMTP id v17-20020ac85791000000b0042a68be493bmr151967qta.51.1706288962670;
        Fri, 26 Jan 2024 09:09:22 -0800 (PST)
Message-ID: <135941df-2f8b-4fd5-91c7-40b413e6eae3@redhat.com>
Date: Fri, 26 Jan 2024 18:09:08 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 2/2] bulk: Prefer fast cpu_env() over slower CPU QOM cast
 macro
To: =?UTF-8?Q?Philippe_Mathieu-Daud=C3=A9?= <philmd@linaro.org>,
 qemu-devel@nongnu.org
Cc: Peter Maydell <peter.maydell@linaro.org>,
 Paolo Bonzini <pbonzini@redhat.com>, Eduardo Habkost <eduardo@habkost.net>,
 Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>,
 Richard Henderson <richard.henderson@linaro.org>, qemu-s390x@nongnu.org,
 qemu-ppc@nongnu.org, qemu-riscv@nongnu.org, qemu-arm@nongnu.org,
 "Michael S. Tsirkin" <mst@redhat.com>,
 Marcel Apfelbaum <marcel.apfelbaum@gmail.com>,
 Stefano Stabellini <sstabellini@kernel.org>,
 Anthony Perard <anthony.perard@citrix.com>, Paul Durrant <paul@xen.org>,
 =?UTF-8?Q?C=C3=A9dric_Le_Goater?= <clg@kaod.org>,
 Nicholas Piggin <npiggin@gmail.com>, =?UTF-8?B?RnLDqWTDqXJpYyBCYXJyYXQ=?=
 <fbarrat@linux.ibm.com>, Daniel Henrique Barboza <danielhb413@gmail.com>,
 David Gibson <david@gibson.dropbear.id.au>,
 Harsh Prateek Bora <harshpb@linux.ibm.com>, Alexander Graf
 <agraf@csgraf.de>, Michael Rolnik <mrolnik@gmail.com>,
 "Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
 Cameron Esfahani <dirty@apple.com>, Roman Bolshakov <rbolshakov@ddn.com>,
 Marcelo Tosatti <mtosatti@redhat.com>, David Woodhouse
 <dwmw2@infradead.org>, Laurent Vivier <laurent@vivier.eu>,
 Aurelien Jarno <aurelien@aurel32.net>, Jiaxun Yang
 <jiaxun.yang@flygoat.com>, Aleksandar Rikalo <aleksandar.rikalo@syrmia.com>,
 Huacai Chen <chenhuacai@kernel.org>, Chris Wulff <crwulff@gmail.com>,
 Marek Vasut <marex@denx.de>, Stafford Horne <shorne@gmail.com>,
 Palmer Dabbelt <palmer@dabbelt.com>,
 Alistair Francis <alistair.francis@wdc.com>,
 Bin Meng <bin.meng@windriver.com>, Weiwei Li <liwei1518@gmail.com>,
 Liu Zhiwei <zhiwei_liu@linux.alibaba.com>,
 Yoshinori Sato <ysato@users.sourceforge.jp>,
 David Hildenbrand <david@redhat.com>, Ilya Leoshkevich <iii@linux.ibm.com>,
 Halil Pasic <pasic@linux.ibm.com>,
 Christian Borntraeger <borntraeger@linux.ibm.com>,
 Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>,
 Artyom Tarasenko <atar4qemu@gmail.com>,
 Bastian Koppelmann <kbastian@mail.uni-paderborn.de>,
 Max Filippov <jcmvbkbc@gmail.com>, xen-devel@lists.xenproject.org,
 kvm@vger.kernel.org
References: <20240125165648.49898-1-philmd@linaro.org>
 <20240125165648.49898-3-philmd@linaro.org>
From: Thomas Huth <thuth@redhat.com>
Autocrypt: addr=thuth@redhat.com; keydata=
 xsFNBFH7eUwBEACzyOXKU+5Pcs6wNpKzrlJwzRl3VGZt95VCdb+FgoU9g11m7FWcOafrVRwU
 yYkTm9+7zBUc0sW5AuPGR/dp3pSLX/yFWsA/UB4nJsHqgDvDU7BImSeiTrnpMOTXb7Arw2a2
 4CflIyFqjCpfDM4MuTmzTjXq4Uov1giGE9X6viNo1pxyEpd7PanlKNnf4PqEQp06X4IgUacW
 tSGj6Gcns1bCuHV8OPWLkf4hkRnu8hdL6i60Yxz4E6TqlrpxsfYwLXgEeswPHOA6Mn4Cso9O
 0lewVYfFfsmokfAVMKWzOl1Sr0KGI5T9CpmRfAiSHpthhHWnECcJFwl72NTi6kUcUzG4se81
 O6n9d/kTj7pzTmBdfwuOZ0YUSqcqs0W+l1NcASSYZQaDoD3/SLk+nqVeCBB4OnYOGhgmIHNW
 0CwMRO/GK+20alxzk//V9GmIM2ACElbfF8+Uug3pqiHkVnKqM7W9/S1NH2qmxB6zMiJUHlTH
 gnVeZX0dgH27mzstcF786uPcdEqS0KJuxh2kk5IvUSL3Qn3ZgmgdxBMyCPciD/1cb7/Ahazr
 3ThHQXSHXkH/aDXdfLsKVuwDzHLVSkdSnZdt5HHh75/NFHxwaTlydgfHmFFwodK8y/TjyiGZ
 zg2Kje38xnz8zKn9iesFBCcONXS7txENTzX0z80WKBhK+XSFJwARAQABzR5UaG9tYXMgSHV0
 aCA8dGh1dGhAcmVkaGF0LmNvbT7CwXgEEwECACIFAlVgX6oCGwMGCwkIBwMCBhUIAgkKCwQW
 AgMBAh4BAheAAAoJEC7Z13T+cC21EbIP/ii9cvT2HHGbFRl8HqGT6+7Wkb+XLMqJBMAIGiQK
 QIP3xk1HPTsLfVG0ao4hy/oYkGNOP8+ubLnZen6Yq3zAFiMhQ44lvgigDYJo3Ve59gfe99KX
 EbtB+X95ODARkq0McR6OAsPNJ7gpEUzfkQUUJTXRDQXfG/FX303Gvk+YU0spm2tsIKPl6AmV
 1CegDljzjycyfJbk418MQmMu2T82kjrkEofUO2a24ed3VGC0/Uz//XCR2ZTo+vBoBUQl41BD
 eFFtoCSrzo3yPFS+w5fkH9NT8ChdpSlbNS32NhYQhJtr9zjWyFRf0Zk+T/1P7ECn6gTEkp5k
 ofFIA4MFBc/fXbaDRtBmPB0N9pqTFApIUI4vuFPPO0JDrII9dLwZ6lO9EKiwuVlvr1wwzsgq
 zJTPBU3qHaUO4d/8G+gD7AL/6T4zi8Jo/GmjBsnYaTzbm94lf0CjXjsOX3seMhaE6WAZOQQG
 tZHAO1kAPWpaxne+wtgMKthyPLNwelLf+xzGvrIKvLX6QuLoWMnWldu22z2ICVnLQChlR9d6
 WW8QFEpo/FK7omuS8KvvopFcOOdlbFMM8Y/8vBgVMSsK6fsYUhruny/PahprPbYGiNIhKqz7
 UvgyZVl4pBFjTaz/SbimTk210vIlkDyy1WuS8Zsn0htv4+jQPgo9rqFE4mipJjy/iboDzsFN
 BFH7eUwBEAC2nzfUeeI8dv0C4qrfCPze6NkryUflEut9WwHhfXCLjtvCjnoGqFelH/PE9NF4
 4VPSCdvD1SSmFVzu6T9qWdcwMSaC+e7G/z0/AhBfqTeosAF5XvKQlAb9ZPkdDr7YN0a1XDfa
 +NgA+JZB4ROyBZFFAwNHT+HCnyzy0v9Sh3BgJJwfpXHH2l3LfncvV8rgFv0bvdr70U+On2XH
 5bApOyW1WpIG5KPJlDdzcQTyptOJ1dnEHfwnABEfzI3dNf63rlxsGouX/NFRRRNqkdClQR3K
 gCwciaXfZ7ir7fF0u1N2UuLsWA8Ei1JrNypk+MRxhbvdQC4tyZCZ8mVDk+QOK6pyK2f4rMf/
 WmqxNTtAVmNuZIwnJdjRMMSs4W4w6N/bRvpqtykSqx7VXcgqtv6eqoDZrNuhGbekQA0sAnCJ
 VPArerAZGArm63o39me/bRUQeQVSxEBmg66yshF9HkcUPGVeC4B0TPwz+HFcVhheo6hoJjLq
 knFOPLRj+0h+ZL+D0GenyqD3CyuyeTT5dGcNU9qT74bdSr20k/CklvI7S9yoQje8BeQAHtdV
 cvO8XCLrpGuw9SgOS7OP5oI26a0548M4KldAY+kqX6XVphEw3/6U1KTf7WxW5zYLTtadjISB
 X9xsRWSU+Yqs3C7oN5TIPSoj9tXMoxZkCIHWvnqGwZ7JhwARAQABwsFfBBgBAgAJBQJR+3lM
 AhsMAAoJEC7Z13T+cC21hPAQAIsBL9MdGpdEpvXs9CYrBkd6tS9mbaSWj6XBDfA1AEdQkBOn
 ZH1Qt7HJesk+qNSnLv6+jP4VwqK5AFMrKJ6IjE7jqgzGxtcZnvSjeDGPF1h2CKZQPpTw890k
 fy18AvgFHkVk2Oylyexw3aOBsXg6ukN44vIFqPoc+YSU0+0QIdYJp/XFsgWxnFIMYwDpxSHS
 5fdDxUjsk3UBHZx+IhFjs2siVZi5wnHIqM7eK9abr2cK2weInTBwXwqVWjsXZ4tq5+jQrwDK
 cvxIcwXdUTLGxc4/Z/VRH1PZSvfQxdxMGmNTGaXVNfdFZjm4fz0mz+OUi6AHC4CZpwnsliGV
 ODqwX8Y1zic9viSTbKS01ZNp175POyWViUk9qisPZB7ypfSIVSEULrL347qY/hm9ahhqmn17
 Ng255syASv3ehvX7iwWDfzXbA0/TVaqwa1YIkec+/8miicV0zMP9siRcYQkyTqSzaTFBBmqD
 oiT+z+/E59qj/EKfyce3sbC9XLjXv3mHMrq1tKX4G7IJGnS989E/fg6crv6NHae9Ckm7+lSs
 IQu4bBP2GxiRQ+NV3iV/KU3ebMRzqIC//DCOxzQNFNJAKldPe/bKZMCxEqtVoRkuJtNdp/5a
 yXFZ6TfE1hGKrDBYAm4vrnZ4CXFSBDllL59cFFOJCkn4Xboj/aVxxJxF30bn
In-Reply-To: <20240125165648.49898-3-philmd@linaro.org>
X-Mimecast-Spam-Score: 0
X-Mimecast-Originator: redhat.com
Content-Language: en-US
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit

On 25/01/2024 17.56, Philippe Mathieu-Daudé wrote:
> Mechanical patch produced running the command documented
> in scripts/coccinelle/cpu_env.cocci_template header.
> 
> Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
> ---
>   target/i386/hvf/vmx.h                   |  9 +++----
>   hw/i386/vmmouse.c                       |  6 ++---
>   hw/i386/xen/xen-hvm.c                   |  3 +--
>   hw/intc/arm_gicv3_cpuif_common.c        |  3 +--
>   hw/ppc/mpc8544_guts.c                   |  3 +--
>   hw/ppc/pnv.c                            |  3 +--
>   hw/ppc/pnv_xscom.c                      |  3 +--
>   hw/ppc/ppce500_spin.c                   |  3 +--
>   hw/ppc/spapr.c                          |  3 +--
>   hw/ppc/spapr_caps.c                     |  6 ++---
>   target/alpha/cpu.c                      | 21 +++++----------
>   target/alpha/gdbstub.c                  |  6 ++---
>   target/alpha/helper.c                   | 12 +++------
>   target/alpha/mem_helper.c               |  9 +++----
>   target/arm/cpu.c                        | 15 ++++-------
>   target/arm/debug_helper.c               |  6 ++---
>   target/arm/gdbstub.c                    |  6 ++---
>   target/arm/gdbstub64.c                  |  6 ++---
>   target/arm/helper.c                     |  9 +++----
>   target/arm/hvf/hvf.c                    | 12 +++------
>   target/arm/kvm.c                        |  3 +--
>   target/arm/ptw.c                        |  3 +--
>   target/arm/tcg/cpu32.c                  |  3 +--
>   target/avr/cpu.c                        | 21 +++++----------
>   target/avr/gdbstub.c                    |  6 ++---
>   target/avr/helper.c                     |  9 +++----
>   target/cris/cpu.c                       |  3 +--
>   target/cris/gdbstub.c                   |  9 +++----
>   target/cris/helper.c                    | 12 +++------
>   target/cris/translate.c                 |  3 +--
>   target/hppa/cpu.c                       |  6 ++---
>   target/hppa/int_helper.c                |  6 ++---
>   target/hppa/mem_helper.c                |  3 +--
>   target/i386/arch_memory_mapping.c       |  3 +--
>   target/i386/cpu-dump.c                  |  3 +--
>   target/i386/cpu.c                       | 36 +++++++++----------------
>   target/i386/helper.c                    | 30 +++++++--------------
>   target/i386/hvf/hvf.c                   |  6 ++---
>   target/i386/hvf/x86.c                   |  3 +--
>   target/i386/hvf/x86_emu.c               |  6 ++---
>   target/i386/hvf/x86_task.c              | 10 +++----
>   target/i386/hvf/x86hvf.c                |  6 ++---
>   target/i386/kvm/kvm.c                   |  6 ++---
>   target/i386/kvm/xen-emu.c               | 30 +++++++--------------
>   target/i386/tcg/sysemu/bpt_helper.c     |  3 +--
>   target/i386/tcg/tcg-cpu.c               | 12 +++------
>   target/i386/tcg/user/excp_helper.c      |  3 +--
>   target/i386/tcg/user/seg_helper.c       |  3 +--
>   target/m68k/cpu.c                       | 30 +++++++--------------
>   target/m68k/gdbstub.c                   |  6 ++---
>   target/m68k/helper.c                    |  3 +--
>   target/m68k/m68k-semi.c                 |  6 ++---
>   target/m68k/op_helper.c                 |  9 +++----
>   target/m68k/translate.c                 |  3 +--
>   target/microblaze/helper.c              |  3 +--
>   target/microblaze/translate.c           |  3 +--
>   target/mips/cpu.c                       |  9 +++----
>   target/mips/gdbstub.c                   |  6 ++---
>   target/mips/kvm.c                       | 27 +++++++------------
>   target/mips/sysemu/physaddr.c           |  3 +--
>   target/mips/tcg/exception.c             |  3 +--
>   target/mips/tcg/op_helper.c             |  3 +--
>   target/mips/tcg/sysemu/special_helper.c |  3 +--
>   target/mips/tcg/sysemu/tlb_helper.c     |  6 ++---
>   target/mips/tcg/translate.c             |  3 +--
>   target/nios2/cpu.c                      |  9 +++----
>   target/nios2/helper.c                   |  3 +--
>   target/nios2/nios2-semi.c               |  6 ++---
>   target/openrisc/gdbstub.c               |  3 +--
>   target/openrisc/interrupt.c             |  6 ++---
>   target/openrisc/translate.c             |  3 +--
>   target/ppc/cpu_init.c                   |  9 +++----
>   target/ppc/excp_helper.c                |  3 +--
>   target/ppc/gdbstub.c                    | 12 +++------
>   target/ppc/kvm.c                        |  6 ++---
>   target/ppc/ppc-qmp-cmds.c               |  3 +--
>   target/ppc/user_only_helper.c           |  3 +--
>   target/riscv/arch_dump.c                |  6 ++---
>   target/riscv/cpu.c                      | 15 ++++-------
>   target/riscv/cpu_helper.c               | 13 +++------
>   target/riscv/debug.c                    |  9 +++----
>   target/riscv/gdbstub.c                  |  6 ++---
>   target/riscv/kvm/kvm-cpu.c              |  6 ++---
>   target/riscv/tcg/tcg-cpu.c              |  9 +++----
>   target/riscv/translate.c                |  3 +--
>   target/rx/gdbstub.c                     |  6 ++---
>   target/rx/helper.c                      |  6 ++---
>   target/rx/translate.c                   |  3 +--
>   target/s390x/cpu-dump.c                 |  3 +--
>   target/s390x/gdbstub.c                  |  6 ++---
>   target/s390x/helper.c                   |  3 +--
>   target/s390x/kvm/kvm.c                  |  6 ++---
>   target/s390x/tcg/excp_helper.c          |  9 +++----
>   target/s390x/tcg/translate.c            |  3 +--
>   target/sh4/cpu.c                        | 15 ++++-------
>   target/sh4/gdbstub.c                    |  6 ++---
>   target/sh4/helper.c                     |  9 +++----
>   target/sh4/translate.c                  |  3 +--
>   target/sparc/cpu.c                      | 12 +++------
>   target/sparc/gdbstub.c                  |  3 +--
>   target/sparc/int32_helper.c             |  3 +--
>   target/sparc/int64_helper.c             |  3 +--
>   target/sparc/ldst_helper.c              |  6 ++---
>   target/sparc/mmu_helper.c               | 15 ++++-------
>   target/sparc/translate.c                |  3 +--
>   target/tricore/cpu.c                    | 12 +++------
>   target/tricore/gdbstub.c                |  6 ++---
>   target/tricore/helper.c                 |  3 +--
>   target/tricore/translate.c              |  3 +--
>   target/xtensa/dbg_helper.c              |  3 +--
>   target/xtensa/exc_helper.c              |  3 +--
>   target/xtensa/gdbstub.c                 |  6 ++---
>   target/xtensa/helper.c                  |  9 +++----
>   target/xtensa/translate.c               |  3 +--
>   114 files changed, 273 insertions(+), 548 deletions(-)

A huge patch ... I wonder whether it would make sense to split it up by 
target architecture to ease the review?

...
> diff --git a/hw/i386/vmmouse.c b/hw/i386/vmmouse.c
> index a8d014d09a..eb0613bfbe 100644
> --- a/hw/i386/vmmouse.c
> +++ b/hw/i386/vmmouse.c
> @@ -74,8 +74,7 @@ struct VMMouseState {
>   
>   static void vmmouse_get_data(uint32_t *data)
>   {
> -    X86CPU *cpu = X86_CPU(current_cpu);
> -    CPUX86State *env = &cpu->env;
> +    CPUX86State *env = cpu_env(CPU(current_cpu));

No need for the CPU() cast here, current_cpu is already
of type "CPUState *".

>   
>       data[0] = env->regs[R_EAX]; data[1] = env->regs[R_EBX];
>       data[2] = env->regs[R_ECX]; data[3] = env->regs[R_EDX];
> @@ -84,8 +83,7 @@ static void vmmouse_get_data(uint32_t *data)
>   
>   static void vmmouse_set_data(const uint32_t *data)
>   {
> -    X86CPU *cpu = X86_CPU(current_cpu);
> -    CPUX86State *env = &cpu->env;
> +    CPUX86State *env = cpu_env(CPU(current_cpu));

dito.

>       env->regs[R_EAX] = data[0]; env->regs[R_EBX] = data[1];
>       env->regs[R_ECX] = data[2]; env->regs[R_EDX] = data[3];
> diff --git a/hw/i386/xen/xen-hvm.c b/hw/i386/xen/xen-hvm.c
> index f42621e674..3d3ae49be5 100644
> --- a/hw/i386/xen/xen-hvm.c
> +++ b/hw/i386/xen/xen-hvm.c
> @@ -487,8 +487,7 @@ static void regs_to_cpu(vmware_regs_t *vmport_regs, ioreq_t *req)
>   
>   static void regs_from_cpu(vmware_regs_t *vmport_regs)
>   {
> -    X86CPU *cpu = X86_CPU(current_cpu);
> -    CPUX86State *env = &cpu->env;
> +    CPUX86State *env = cpu_env(CPU(current_cpu));

dito.

>       vmport_regs->ebx = env->regs[R_EBX];
>       vmport_regs->ecx = env->regs[R_ECX];
...
> diff --git a/hw/ppc/mpc8544_guts.c b/hw/ppc/mpc8544_guts.c
> index a26e83d048..3c6a852ad4 100644
> --- a/hw/ppc/mpc8544_guts.c
> +++ b/hw/ppc/mpc8544_guts.c
> @@ -71,8 +71,7 @@ static uint64_t mpc8544_guts_read(void *opaque, hwaddr addr,
>                                     unsigned size)
>   {
>       uint32_t value = 0;
> -    PowerPCCPU *cpu = POWERPC_CPU(current_cpu);
> -    CPUPPCState *env = &cpu->env;
> +    CPUPPCState *env = cpu_env(CPU(current_cpu));

dito ...

I'll stop here, please respin with the cpu_env(CPU(current_cpu)) fixed to
cpu_env(current_cpu), and please split the patch by target CPU types.

  Thanks,
   Thomas



From xen-devel-bounces@lists.xenproject.org Fri Jan 26 17:25:41 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 26 Jan 2024 17:25:41 +0000
Received: from list by lists.xenproject.org with outflank-mailman.672239.1046009 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTPxM-0000i3-9t; Fri, 26 Jan 2024 17:25:32 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 672239.1046009; Fri, 26 Jan 2024 17:25:32 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTPxM-0000hw-6v; Fri, 26 Jan 2024 17:25:32 +0000
Received: by outflank-mailman (input) for mailman id 672239;
 Fri, 26 Jan 2024 17:25:30 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>) id 1rTPxK-0000hq-Cw
 for xen-devel@lists.xenproject.org; Fri, 26 Jan 2024 17:25:30 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rTPxJ-0000mr-J4; Fri, 26 Jan 2024 17:25:29 +0000
Received: from 54-240-197-231.amazon.com ([54.240.197.231]
 helo=[10.95.150.130]) by xenbits.xenproject.org with esmtpsa
 (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rTPxJ-0003Zy-C5; Fri, 26 Jan 2024 17:25:29 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
	s=20200302mail; h=Content-Transfer-Encoding:Content-Type:In-Reply-To:From:
	References:Cc:To:Subject:MIME-Version:Date:Message-ID;
	bh=kn9gTOEZFEUPElRcDF6QoHTZopizwRmVIH/ipGxRbgE=; b=X2GuFJFSWxYdXagzMxtrzdKeg2
	gbSjFc9cjqN6tPqq+CiD5okLdNPOmDEFXCKFToDK8aqZ38S8E8cfe/hDSaqGopihzjZS6q5jNIxVl
	KkVLWVsY/3oCFE/r6gwf5IP1HljsHSXLzb6uS9++cxPCnc87wbt5AR7xluJU1v9Y54T8=;
Message-ID: <7a7b61ef-a101-4ecc-8e10-01d02ac4f03f@xen.org>
Date: Fri, 26 Jan 2024 17:25:27 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 30/33] tools/xenstored: mount 9pfs device in stubdom
Content-Language: en-GB
To: Juergen Gross <jgross@suse.com>, xen-devel@lists.xenproject.org
Cc: Wei Liu <wl@xen.org>, Anthony PERARD <anthony.perard@citrix.com>,
 Jason Andryuk <jandryuk@gmail.com>
References: <20240104090055.27323-1-jgross@suse.com>
 <20240104090055.27323-31-jgross@suse.com>
From: Julien Grall <julien@xen.org>
In-Reply-To: <20240104090055.27323-31-jgross@suse.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

Hi Juergen,

On 04/01/2024 09:00, Juergen Gross wrote:
> Mount the 9pfs device in stubdom enabling it to use files.
> 
> This has to happen in a worker thread in order to allow the main thread
> handling the required Xenstore accesses in parallel.
> 
> Signed-off-by: Juergen Gross <jgross@suse.com>
> Reviewed-by: Jason Andryuk <jandryuk@gmail.com>

Reviewed-by: Julien Grall <jgrall@amazon.com>

Cheers,

-- 
Julien Grall


From xen-devel-bounces@lists.xenproject.org Fri Jan 26 17:27:37 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 26 Jan 2024 17:27:37 +0000
Received: from list by lists.xenproject.org with outflank-mailman.672242.1046019 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTPzM-0001WV-LG; Fri, 26 Jan 2024 17:27:36 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 672242.1046019; Fri, 26 Jan 2024 17:27:36 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTPzM-0001WO-I9; Fri, 26 Jan 2024 17:27:36 +0000
Received: by outflank-mailman (input) for mailman id 672242;
 Fri, 26 Jan 2024 17:27:35 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>) id 1rTPzL-0001WI-6G
 for xen-devel@lists.xenproject.org; Fri, 26 Jan 2024 17:27:35 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rTPzK-0000oX-I6; Fri, 26 Jan 2024 17:27:34 +0000
Received: from 54-240-197-231.amazon.com ([54.240.197.231]
 helo=[10.95.150.130]) by xenbits.xenproject.org with esmtpsa
 (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rTPzK-0003ce-CD; Fri, 26 Jan 2024 17:27:34 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
	s=20200302mail; h=Content-Transfer-Encoding:Content-Type:In-Reply-To:From:
	References:Cc:To:Subject:MIME-Version:Date:Message-ID;
	bh=OwN7RGnr8OsxBw4CkZCx/y4DmP7rdEVvaWHQ46G8HRM=; b=uC9omOaTilTylGGRS/TKiklzXW
	LfmfqlgXJ7xSdKnNY8ZGo3KqoTkwc/WIG+kxFYj1B67GpOOy5OZ5TnXYNMT/MO3SrBNrPrYTfiGWs
	gRcVpbpjQz3YnOMkrcIv2DDcSKRgrg3c+OZ1EPAtUpkomXLRaMHdWwkJVR4NneRtr/vo=;
Message-ID: <d5dcc4a1-580f-4d14-8ad0-4b0ce07822c6@xen.org>
Date: Fri, 26 Jan 2024 17:27:32 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 31/33] tools/xenstored: add helpers for filename
 handling
Content-Language: en-GB
To: Juergen Gross <jgross@suse.com>, xen-devel@lists.xenproject.org
Cc: Wei Liu <wl@xen.org>, Anthony PERARD <anthony.perard@citrix.com>,
 Jason Andryuk <jandryuk@gmail.com>
References: <20240104090055.27323-1-jgross@suse.com>
 <20240104090055.27323-32-jgross@suse.com>
From: Julien Grall <julien@xen.org>
In-Reply-To: <20240104090055.27323-32-jgross@suse.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

Hi Juergen,

On 04/01/2024 09:00, Juergen Gross wrote:
> Add some helpers for handling filenames which might need different
> implementations between stubdom and daemon environments:
> 
> - expansion of relative filenames (those are not really defined today,
>    just expand them to be relative to /var/lib/xen/xenstore)
> - expansion of xenstore_daemon_rundir() (used e.g. for saving the state
>    file in case of live update - needs to be unchanged in the daemon
>    case, but should result in /var/lib/xen/xenstore for stubdom)
> 
> Signed-off-by: Juergen Gross <jgross@suse.com>
> Reviewed-by: Jason Andryuk <jandryuk@gmail.com>

Reviewed-by: Julien Grall <jgrall@amazon.com>

Cheers,

-- 
Julien Grall


From xen-devel-bounces@lists.xenproject.org Fri Jan 26 17:29:58 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 26 Jan 2024 17:29:58 +0000
Received: from list by lists.xenproject.org with outflank-mailman.672247.1046029 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTQ1d-0002gL-1b; Fri, 26 Jan 2024 17:29:57 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 672247.1046029; Fri, 26 Jan 2024 17:29:57 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTQ1c-0002gE-VA; Fri, 26 Jan 2024 17:29:56 +0000
Received: by outflank-mailman (input) for mailman id 672247;
 Fri, 26 Jan 2024 17:29:55 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>) id 1rTQ1b-0002g8-Lv
 for xen-devel@lists.xenproject.org; Fri, 26 Jan 2024 17:29:55 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rTQ1b-0000rq-03; Fri, 26 Jan 2024 17:29:55 +0000
Received: from 54-240-197-231.amazon.com ([54.240.197.231]
 helo=[10.95.150.130]) by xenbits.xenproject.org with esmtpsa
 (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rTQ1a-0003gz-Pl; Fri, 26 Jan 2024 17:29:54 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
	s=20200302mail; h=Content-Transfer-Encoding:Content-Type:In-Reply-To:From:
	References:Cc:To:Subject:MIME-Version:Date:Message-ID;
	bh=7ahY18Cv5X6/zZ1W7ig86GXDq0rpE+eb6HGeSbGoLPE=; b=zBzZKtADbbSxTpyENJ192nyWeJ
	4qM/RYkKtY426RQAQFY70/JzKImbJfJnrmMhks3Zk6r7jwUUxxX5uqM2kN4ysz51NLjIrWOtLYzHY
	deh8q4zTu8kEz4LOLBGY7pxOTwgXWZe1R1Us1WjQE3MazEFIOwI7eeuAxH6TqDsriC0c=;
Message-ID: <f8f46abc-6299-42ab-86a3-b5dd1f63cb98@xen.org>
Date: Fri, 26 Jan 2024 17:29:53 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 32/33] tools/xenstored: support complete log
 capabilities in stubdom
Content-Language: en-GB
To: Juergen Gross <jgross@suse.com>, xen-devel@lists.xenproject.org
Cc: Wei Liu <wl@xen.org>, Anthony PERARD <anthony.perard@citrix.com>,
 Jason Andryuk <jandryuk@gmail.com>
References: <20240104090055.27323-1-jgross@suse.com>
 <20240104090055.27323-33-jgross@suse.com>
From: Julien Grall <julien@xen.org>
In-Reply-To: <20240104090055.27323-33-jgross@suse.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

Hi Juergen,

On 04/01/2024 09:00, Juergen Gross wrote:
> With 9pfs being fully available in Xenstore-stubdom now, there is no
> reason to not fully support all logging capabilities in stubdom.
> 
> Open the logfile on stubdom only after the 9pfs file system has been
> mounted.
> 
> Signed-off-by: Juergen Gross <jgross@suse.com>
> Reviewed-by: Jason Andryuk <jandryuk@gmail.com>

Reviewed-by: Julien Grall <jgrall@amazon.com>

Cheers,

-- 
Julien Grall


From xen-devel-bounces@lists.xenproject.org Fri Jan 26 17:33:08 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 26 Jan 2024 17:33:08 +0000
Received: from list by lists.xenproject.org with outflank-mailman.672254.1046059 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTQ4i-000542-0L; Fri, 26 Jan 2024 17:33:08 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 672254.1046059; Fri, 26 Jan 2024 17:33:07 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTQ4h-00053u-Tf; Fri, 26 Jan 2024 17:33:07 +0000
Received: by outflank-mailman (input) for mailman id 672254;
 Fri, 26 Jan 2024 17:33:06 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=bPDA=JE=casper.srs.infradead.org=BATV+7caeb094913322f6f00d+7460+infradead.org+dwmw2@srs-se1.protection.inumbo.net>)
 id 1rTQ4g-0004Zo-6K
 for xen-devel@lists.xenproject.org; Fri, 26 Jan 2024 17:33:06 +0000
Received: from casper.infradead.org (casper.infradead.org
 [2001:8b0:10b:1236::1])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id f64682d6-bc70-11ee-8a43-1f161083a0e0;
 Fri, 26 Jan 2024 18:33:05 +0100 (CET)
Received: from [2001:8b0:10b:1::ebe] (helo=i7.infradead.org)
 by casper.infradead.org with esmtpsa (Exim 4.97.1 #2 (Red Hat Linux))
 id 1rTQ48-0000000EKUC-0QWa; Fri, 26 Jan 2024 17:32:33 +0000
Received: from dwoodhou by i7.infradead.org with local (Exim 4.97.1 #2 (Red
 Hat Linux)) id 1rTQ47-00000001elb-2OMJ;
 Fri, 26 Jan 2024 17:32:31 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
X-Inumbo-ID: f64682d6-bc70-11ee-8a43-1f161083a0e0
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=infradead.org; s=casper.20170209; h=Sender:Content-Transfer-Encoding:
	MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:
	Reply-To:Content-Type:Content-ID:Content-Description;
	bh=5BpuEatMH64+x8iYMdtmIQQn3xPZYMd0ArcuhcqDaQM=; b=eJe5WnmIIMUOpWsP/6d9hpXa4O
	Q/uRJsAEUmgzhgYtB1/5l3fodUbNhGiNbWtoQsmh623i55vvF5FajWiOcnZ68m2cQKMBXSiGRQJ0N
	zVT1SC5MpG+qKH0lF2DtL45ZXxE/IwX2mSdEDNOvv2ruzwl4EXYg/fNR3vJb0lYnnLX55EIdd5N4r
	ZpkoI/pP5SR837kc6No6o26StrIo/o0OWd7ba9M+Q3OK3Yo1cEPSaOVhrDMHaBYLpRW+AblRCwN5K
	YGcc37rVS82Xv7fg4G5r0HGDrB6r8jdVc/eQmTK8sNdtTBVz7GOpxksErywzTNYYPflQlj+845k7l
	Jb0qPrCw==;
From: David Woodhouse <dwmw2@infradead.org>
To: qemu-devel@nongnu.org
Cc: Richard Henderson <richard.henderson@linaro.org>,
	Beniamino Galvani <b.galvani@gmail.com>,
	Peter Maydell <peter.maydell@linaro.org>,
	Strahinja Jankovic <strahinja.p.jankovic@gmail.com>,
	Niek Linnenbank <nieklinnenbank@gmail.com>,
	=?UTF-8?q?C=C3=A9dric=20Le=20Goater?= <clg@kaod.org>,
	Andrew Jeffery <andrew@codeconstruct.com.au>,
	Joel Stanley <joel@jms.id.au>,
	Igor Mitsyanko <i.mitsyanko@gmail.com>,
	Jean-Christophe Dubois <jcd@tribudubois.net>,
	Andrey Smirnov <andrew.smirnov@gmail.com>,
	=?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= <philmd@linaro.org>,
	Rob Herring <robh@kernel.org>,
	Subbaraya Sundeep <sundeep.lkml@gmail.com>,
	Jan Kiszka <jan.kiszka@web.de>,
	Tyrone Ting <kfting@nuvoton.com>,
	Hao Wu <wuhaotsh@google.com>,
	Radoslaw Biernacki <rad@semihalf.com>,
	Leif Lindholm <quic_llindhol@quicinc.com>,
	Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org>,
	"Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
	Alistair Francis <alistair@alistair23.me>,
	Helge Deller <deller@gmx.de>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Eduardo Habkost <eduardo@habkost.net>,
	"Michael S. Tsirkin" <mst@redhat.com>,
	Marcel Apfelbaum <marcel.apfelbaum@gmail.com>,
	Song Gao <gaosong@loongson.cn>,
	Thomas Huth <huth@tuxfamily.org>,
	Laurent Vivier <laurent@vivier.eu>,
	Huacai Chen <chenhuacai@kernel.org>,
	Jiaxun Yang <jiaxun.yang@flygoat.com>,
	=?UTF-8?q?Herv=C3=A9=20Poussineau?= <hpoussin@reactos.org>,
	Aleksandar Rikalo <aleksandar.rikalo@syrmia.com>,
	Aurelien Jarno <aurelien@aurel32.net>,
	Jason Wang <jasowang@redhat.com>,
	Jia Liu <proljc@gmail.com>,
	Stafford Horne <shorne@gmail.com>,
	Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>,
	Nicholas Piggin <npiggin@gmail.com>,
	Daniel Henrique Barboza <danielhb413@gmail.com>,
	David Gibson <david@gibson.dropbear.id.au>,
	Harsh Prateek Bora <harshpb@linux.ibm.com>,
	Bin Meng <bin.meng@windriver.com>,
	Palmer Dabbelt <palmer@dabbelt.com>,
	Weiwei Li <liwei1518@gmail.com>,
	Liu Zhiwei <zhiwei_liu@linux.alibaba.com>,
	Halil Pasic <pasic@linux.ibm.com>,
	Christian Borntraeger <borntraeger@linux.ibm.com>,
	Eric Farman <farman@linux.ibm.com>,
	David Hildenbrand <david@redhat.com>,
	Ilya Leoshkevich <iii@linux.ibm.com>,
	Yoshinori Sato <ysato@users.sourceforge.jp>,
	Magnus Damm <magnus.damm@gmail.com>,
	Artyom Tarasenko <atar4qemu@gmail.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Anthony Perard <anthony.perard@citrix.com>,
	Paul Durrant <paul@xen.org>,
	Max Filippov <jcmvbkbc@gmail.com>,
	qemu-arm@nongnu.org,
	qemu-ppc@nongnu.org,
	qemu-riscv@nongnu.org,
	qemu-s390x@nongnu.org,
	xen-devel@lists.xenproject.org,
	David Woodhouse <dwmw@amazon.co.uk>
Subject: [PATCH v4 08/47] hw/arm/sbsa-ref: use pci_init_nic_devices()
Date: Fri, 26 Jan 2024 17:24:45 +0000
Message-ID: <20240126173228.394202-9-dwmw2@infradead.org>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20240126173228.394202-1-dwmw2@infradead.org>
References: <20240126173228.394202-1-dwmw2@infradead.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Sender: David Woodhouse <dwmw2@infradead.org>
X-SRS-Rewrite: SMTP reverse-path rewritten from <dwmw2@infradead.org> by casper.infradead.org. See http://www.infradead.org/rpr.html

From: David Woodhouse <dwmw@amazon.co.uk>

Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
Reviewed-by: Leif Lindholm <quic_llindhol@quicinc.com>
---
 hw/arm/sbsa-ref.c | 4 +---
 1 file changed, 1 insertion(+), 3 deletions(-)

diff --git a/hw/arm/sbsa-ref.c b/hw/arm/sbsa-ref.c
index 477dca0637..f0171176ea 100644
--- a/hw/arm/sbsa-ref.c
+++ b/hw/arm/sbsa-ref.c
@@ -671,9 +671,7 @@ static void create_pcie(SBSAMachineState *sms)
 
     pci = PCI_HOST_BRIDGE(dev);
     if (pci->bus) {
-        for (i = 0; i < nb_nics; i++) {
-            pci_nic_init_nofail(&nd_table[i], pci->bus, mc->default_nic, NULL);
-        }
+        pci_init_nic_devices(pci->bus, mc->default_nic);
     }
 
     pci_create_simple(pci->bus, -1, "bochs-display");
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Fri Jan 26 17:33:09 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 26 Jan 2024 17:33:09 +0000
Received: from list by lists.xenproject.org with outflank-mailman.672252.1046038 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTQ4f-0004a1-Ep; Fri, 26 Jan 2024 17:33:05 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 672252.1046038; Fri, 26 Jan 2024 17:33:05 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTQ4f-0004Zu-Bw; Fri, 26 Jan 2024 17:33:05 +0000
Received: by outflank-mailman (input) for mailman id 672252;
 Fri, 26 Jan 2024 17:33:04 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=bPDA=JE=casper.srs.infradead.org=BATV+7caeb094913322f6f00d+7460+infradead.org+dwmw2@srs-se1.protection.inumbo.net>)
 id 1rTQ4e-0004Zo-Hg
 for xen-devel@lists.xenproject.org; Fri, 26 Jan 2024 17:33:04 +0000
Received: from casper.infradead.org (casper.infradead.org
 [2001:8b0:10b:1236::1])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id f54d430b-bc70-11ee-8a43-1f161083a0e0;
 Fri, 26 Jan 2024 18:33:03 +0100 (CET)
Received: from [2001:8b0:10b:1::ebe] (helo=i7.infradead.org)
 by casper.infradead.org with esmtpsa (Exim 4.97.1 #2 (Red Hat Linux))
 id 1rTQ49-0000000EKUd-01Tz; Fri, 26 Jan 2024 17:32:34 +0000
Received: from dwoodhou by i7.infradead.org with local (Exim 4.97.1 #2 (Red
 Hat Linux)) id 1rTQ49-00000001enQ-3kks;
 Fri, 26 Jan 2024 17:32:33 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
X-Inumbo-ID: f54d430b-bc70-11ee-8a43-1f161083a0e0
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=infradead.org; s=casper.20170209; h=Sender:Content-Transfer-Encoding:
	MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:
	Reply-To:Content-Type:Content-ID:Content-Description;
	bh=+e8WGyk26Nx6F3/v612EfiHjqzKx8nYkFPtvGlnGd3w=; b=Wj7wVHpMtDarRXMBToq7G9m/GR
	JIyL+umLSadU7YtXppHGohydct6iE2OaSPxQt+ONIgMnY6+6w/sul+wfD5BEOHoSRAba6pl7/iFG6
	pzB+Qmg/XzA5Bcgpdv0Sv3H7Ypa3FuqdDSzmGBfk4nF9gM9Jr73sQXltSASv7KghBB2lEuqrBhs5K
	tg/ZVNvLN3exxn+r1l2s9SkJ98IzX5zeIrUo6rK0r0NtzTeEHwyBi4wY4iPvf5Cgr3+0FepwwsCLR
	CPE023t4WgOJN/AJAjtsl5ltjaMkSVfKE29fdVhX+Ab6pRk+sFWxlHtSnjChWv61xjwzhtviZaPoF
	wt8AgzYA==;
From: David Woodhouse <dwmw2@infradead.org>
To: qemu-devel@nongnu.org
Cc: Richard Henderson <richard.henderson@linaro.org>,
	Beniamino Galvani <b.galvani@gmail.com>,
	Peter Maydell <peter.maydell@linaro.org>,
	Strahinja Jankovic <strahinja.p.jankovic@gmail.com>,
	Niek Linnenbank <nieklinnenbank@gmail.com>,
	=?UTF-8?q?C=C3=A9dric=20Le=20Goater?= <clg@kaod.org>,
	Andrew Jeffery <andrew@codeconstruct.com.au>,
	Joel Stanley <joel@jms.id.au>,
	Igor Mitsyanko <i.mitsyanko@gmail.com>,
	Jean-Christophe Dubois <jcd@tribudubois.net>,
	Andrey Smirnov <andrew.smirnov@gmail.com>,
	=?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= <philmd@linaro.org>,
	Rob Herring <robh@kernel.org>,
	Subbaraya Sundeep <sundeep.lkml@gmail.com>,
	Jan Kiszka <jan.kiszka@web.de>,
	Tyrone Ting <kfting@nuvoton.com>,
	Hao Wu <wuhaotsh@google.com>,
	Radoslaw Biernacki <rad@semihalf.com>,
	Leif Lindholm <quic_llindhol@quicinc.com>,
	Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org>,
	"Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
	Alistair Francis <alistair@alistair23.me>,
	Helge Deller <deller@gmx.de>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Eduardo Habkost <eduardo@habkost.net>,
	"Michael S. Tsirkin" <mst@redhat.com>,
	Marcel Apfelbaum <marcel.apfelbaum@gmail.com>,
	Song Gao <gaosong@loongson.cn>,
	Thomas Huth <huth@tuxfamily.org>,
	Laurent Vivier <laurent@vivier.eu>,
	Huacai Chen <chenhuacai@kernel.org>,
	Jiaxun Yang <jiaxun.yang@flygoat.com>,
	=?UTF-8?q?Herv=C3=A9=20Poussineau?= <hpoussin@reactos.org>,
	Aleksandar Rikalo <aleksandar.rikalo@syrmia.com>,
	Aurelien Jarno <aurelien@aurel32.net>,
	Jason Wang <jasowang@redhat.com>,
	Jia Liu <proljc@gmail.com>,
	Stafford Horne <shorne@gmail.com>,
	Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>,
	Nicholas Piggin <npiggin@gmail.com>,
	Daniel Henrique Barboza <danielhb413@gmail.com>,
	David Gibson <david@gibson.dropbear.id.au>,
	Harsh Prateek Bora <harshpb@linux.ibm.com>,
	Bin Meng <bin.meng@windriver.com>,
	Palmer Dabbelt <palmer@dabbelt.com>,
	Weiwei Li <liwei1518@gmail.com>,
	Liu Zhiwei <zhiwei_liu@linux.alibaba.com>,
	Halil Pasic <pasic@linux.ibm.com>,
	Christian Borntraeger <borntraeger@linux.ibm.com>,
	Eric Farman <farman@linux.ibm.com>,
	David Hildenbrand <david@redhat.com>,
	Ilya Leoshkevich <iii@linux.ibm.com>,
	Yoshinori Sato <ysato@users.sourceforge.jp>,
	Magnus Damm <magnus.damm@gmail.com>,
	Artyom Tarasenko <atar4qemu@gmail.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Anthony Perard <anthony.perard@citrix.com>,
	Paul Durrant <paul@xen.org>,
	Max Filippov <jcmvbkbc@gmail.com>,
	qemu-arm@nongnu.org,
	qemu-ppc@nongnu.org,
	qemu-riscv@nongnu.org,
	qemu-s390x@nongnu.org,
	xen-devel@lists.xenproject.org,
	David Woodhouse <dwmw@amazon.co.uk>
Subject: [PATCH v4 33/47] hw/m68k/q800: use qemu_find_nic_info()
Date: Fri, 26 Jan 2024 17:25:10 +0000
Message-ID: <20240126173228.394202-34-dwmw2@infradead.org>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20240126173228.394202-1-dwmw2@infradead.org>
References: <20240126173228.394202-1-dwmw2@infradead.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Sender: David Woodhouse <dwmw2@infradead.org>
X-SRS-Rewrite: SMTP reverse-path rewritten from <dwmw2@infradead.org> by casper.infradead.org. See http://www.infradead.org/rpr.html

From: David Woodhouse <dwmw@amazon.co.uk>

If a corresponding NIC configuration was found, it will have a MAC address
already assigned, so use that. Else, generate and assign a default one.

Using qemu_find_nic_info() is simpler than the alternative of using
qemu_configure_nic_device() and then having to fetch the "mac" property
as a string and convert it.

Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
---
 hw/m68k/q800.c | 29 ++++++++++++++++-------------
 1 file changed, 16 insertions(+), 13 deletions(-)

diff --git a/hw/m68k/q800.c b/hw/m68k/q800.c
index b80a3b6d5f..fa7683bf76 100644
--- a/hw/m68k/q800.c
+++ b/hw/m68k/q800.c
@@ -48,6 +48,7 @@
 #include "hw/display/macfb.h"
 #include "hw/block/swim.h"
 #include "net/net.h"
+#include "net/util.h"
 #include "qapi/error.h"
 #include "qemu/error-report.h"
 #include "sysemu/qtest.h"
@@ -270,6 +271,8 @@ static void q800_machine_init(MachineState *machine)
     BusState *adb_bus;
     NubusBus *nubus;
     DriveInfo *dinfo;
+    NICInfo *nd;
+    MACAddr mac;
     uint8_t rng_seed[32];
 
     linux_boot = (kernel_filename != NULL);
@@ -370,13 +373,6 @@ static void q800_machine_init(MachineState *machine)
 
     /* MACSONIC */
 
-    if (nb_nics > 1) {
-        error_report("q800 can only have one ethernet interface");
-        exit(1);
-    }
-
-    qemu_check_nic_model(&nd_table[0], "dp83932");
-
     /*
      * MacSonic driver needs an Apple MAC address
      * Valid prefix are:
@@ -386,14 +382,21 @@ static void q800_machine_init(MachineState *machine)
      * 08:00:07 Apple
      * (Q800 use the last one)
      */
-    nd_table[0].macaddr.a[0] = 0x08;
-    nd_table[0].macaddr.a[1] = 0x00;
-    nd_table[0].macaddr.a[2] = 0x07;
-
     object_initialize_child(OBJECT(machine), "dp8393x", &m->dp8393x,
                             TYPE_DP8393X);
     dev = DEVICE(&m->dp8393x);
-    qdev_set_nic_properties(dev, &nd_table[0]);
+    nd = qemu_find_nic_info(TYPE_DP8393X, true, "dp83932");
+    if (nd) {
+        qdev_set_nic_properties(dev, nd);
+        memcpy(mac.a, nd->macaddr.a, sizeof(mac.a));
+    } else {
+        qemu_macaddr_default_if_unset(&mac);
+    }
+    mac.a[0] = 0x08;
+    mac.a[1] = 0x00;
+    mac.a[2] = 0x07;
+    qdev_prop_set_macaddr(dev, "mac", mac.a);
+
     qdev_prop_set_uint8(dev, "it_shift", 2);
     qdev_prop_set_bit(dev, "big_endian", true);
     object_property_set_link(OBJECT(dev), "dma_mr",
@@ -414,7 +417,7 @@ static void q800_machine_init(MachineState *machine)
     prom = memory_region_get_ram_ptr(&m->dp8393x_prom);
     checksum = 0;
     for (i = 0; i < 6; i++) {
-        prom[i] = revbit8(nd_table[0].macaddr.a[i]);
+        prom[i] = revbit8(mac.a[i]);
         checksum ^= prom[i];
     }
     prom[7] = 0xff - checksum;
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Fri Jan 26 17:33:09 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 26 Jan 2024 17:33:09 +0000
Received: from list by lists.xenproject.org with outflank-mailman.672253.1046049 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTQ4g-0004ot-Pn; Fri, 26 Jan 2024 17:33:06 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 672253.1046049; Fri, 26 Jan 2024 17:33:06 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTQ4g-0004om-Mk; Fri, 26 Jan 2024 17:33:06 +0000
Received: by outflank-mailman (input) for mailman id 672253;
 Fri, 26 Jan 2024 17:33:05 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=bPDA=JE=casper.srs.infradead.org=BATV+7caeb094913322f6f00d+7460+infradead.org+dwmw2@srs-se1.protection.inumbo.net>)
 id 1rTQ4f-0004Zo-DP
 for xen-devel@lists.xenproject.org; Fri, 26 Jan 2024 17:33:05 +0000
Received: from casper.infradead.org (casper.infradead.org
 [2001:8b0:10b:1236::1])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id f62c9830-bc70-11ee-8a43-1f161083a0e0;
 Fri, 26 Jan 2024 18:33:05 +0100 (CET)
Received: from [2001:8b0:10b:1::ebe] (helo=i7.infradead.org)
 by casper.infradead.org with esmtpsa (Exim 4.97.1 #2 (Red Hat Linux))
 id 1rTQ48-0000000EKUO-1Dvu; Fri, 26 Jan 2024 17:32:33 +0000
Received: from dwoodhou by i7.infradead.org with local (Exim 4.97.1 #2 (Red
 Hat Linux)) id 1rTQ48-00000001emH-43JH;
 Fri, 26 Jan 2024 17:32:32 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
X-Inumbo-ID: f62c9830-bc70-11ee-8a43-1f161083a0e0
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=infradead.org; s=casper.20170209; h=Sender:Content-Transfer-Encoding:
	Content-Type:MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:
	To:From:Reply-To:Content-ID:Content-Description;
	bh=pMTNl31Z4wpC7RcyuXgVYoTxdcUq3RoTFZ8/v9Gj+ug=; b=ODknmQx9pYHZ2OKzuPTEoZWS1B
	QfPM2lEpj+28gcu3a/nGfEJDtNOhbYE5phTZvy+Q95iPyF7opdo6PhO4rKABtsv1fVlLZ8/pUr+Ps
	snEPHO+f2tc4eKwrTOt4PRfShqjQC8kKFEpjsViqXHkLjp+mcTXkA0bqpHVgIykBy/YyJb5emsmXy
	PAqprcm+ymy0h/xEza6ae9QafFApdKKvSK+Gfgyvnp7DFT99VAYGuoBSMPd5FWS2dUQmSWMyHM9mt
	8RukyYs2i5ya21RAr7O3+4ZQ1nhuYilKDm9rnb2d1dJmC3axTOwTubfqZrvhFzMpUh0qimjhcAqMC
	lUUf6c0A==;
From: David Woodhouse <dwmw2@infradead.org>
To: qemu-devel@nongnu.org
Cc: Richard Henderson <richard.henderson@linaro.org>,
	Beniamino Galvani <b.galvani@gmail.com>,
	Peter Maydell <peter.maydell@linaro.org>,
	Strahinja Jankovic <strahinja.p.jankovic@gmail.com>,
	Niek Linnenbank <nieklinnenbank@gmail.com>,
	=?UTF-8?q?C=C3=A9dric=20Le=20Goater?= <clg@kaod.org>,
	Andrew Jeffery <andrew@codeconstruct.com.au>,
	Joel Stanley <joel@jms.id.au>,
	Igor Mitsyanko <i.mitsyanko@gmail.com>,
	Jean-Christophe Dubois <jcd@tribudubois.net>,
	Andrey Smirnov <andrew.smirnov@gmail.com>,
	=?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= <philmd@linaro.org>,
	Rob Herring <robh@kernel.org>,
	Subbaraya Sundeep <sundeep.lkml@gmail.com>,
	Jan Kiszka <jan.kiszka@web.de>,
	Tyrone Ting <kfting@nuvoton.com>,
	Hao Wu <wuhaotsh@google.com>,
	Radoslaw Biernacki <rad@semihalf.com>,
	Leif Lindholm <quic_llindhol@quicinc.com>,
	Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org>,
	"Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
	Alistair Francis <alistair@alistair23.me>,
	Helge Deller <deller@gmx.de>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Eduardo Habkost <eduardo@habkost.net>,
	"Michael S. Tsirkin" <mst@redhat.com>,
	Marcel Apfelbaum <marcel.apfelbaum@gmail.com>,
	Song Gao <gaosong@loongson.cn>,
	Thomas Huth <huth@tuxfamily.org>,
	Laurent Vivier <laurent@vivier.eu>,
	Huacai Chen <chenhuacai@kernel.org>,
	Jiaxun Yang <jiaxun.yang@flygoat.com>,
	=?UTF-8?q?Herv=C3=A9=20Poussineau?= <hpoussin@reactos.org>,
	Aleksandar Rikalo <aleksandar.rikalo@syrmia.com>,
	Aurelien Jarno <aurelien@aurel32.net>,
	Jason Wang <jasowang@redhat.com>,
	Jia Liu <proljc@gmail.com>,
	Stafford Horne <shorne@gmail.com>,
	Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>,
	Nicholas Piggin <npiggin@gmail.com>,
	Daniel Henrique Barboza <danielhb413@gmail.com>,
	David Gibson <david@gibson.dropbear.id.au>,
	Harsh Prateek Bora <harshpb@linux.ibm.com>,
	Bin Meng <bin.meng@windriver.com>,
	Palmer Dabbelt <palmer@dabbelt.com>,
	Weiwei Li <liwei1518@gmail.com>,
	Liu Zhiwei <zhiwei_liu@linux.alibaba.com>,
	Halil Pasic <pasic@linux.ibm.com>,
	Christian Borntraeger <borntraeger@linux.ibm.com>,
	Eric Farman <farman@linux.ibm.com>,
	David Hildenbrand <david@redhat.com>,
	Ilya Leoshkevich <iii@linux.ibm.com>,
	Yoshinori Sato <ysato@users.sourceforge.jp>,
	Magnus Damm <magnus.damm@gmail.com>,
	Artyom Tarasenko <atar4qemu@gmail.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Anthony Perard <anthony.perard@citrix.com>,
	Paul Durrant <paul@xen.org>,
	Max Filippov <jcmvbkbc@gmail.com>,
	qemu-arm@nongnu.org,
	qemu-ppc@nongnu.org,
	qemu-riscv@nongnu.org,
	qemu-s390x@nongnu.org,
	xen-devel@lists.xenproject.org,
	David Woodhouse <dwmw@amazon.co.uk>
Subject: [PATCH v4 22/47] hw/arm/aspeed: use qemu_configure_nic_device()
Date: Fri, 26 Jan 2024 17:24:59 +0000
Message-ID: <20240126173228.394202-23-dwmw2@infradead.org>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20240126173228.394202-1-dwmw2@infradead.org>
References: <20240126173228.394202-1-dwmw2@infradead.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Sender: David Woodhouse <dwmw2@infradead.org>
X-SRS-Rewrite: SMTP reverse-path rewritten from <dwmw2@infradead.org> by casper.infradead.org. See http://www.infradead.org/rpr.html

From: David Woodhouse <dwmw@amazon.co.uk>

Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
Acked-by: Cédric Le Goater <clg@kaod.org>
---
 hw/arm/aspeed.c | 9 ++++-----
 1 file changed, 4 insertions(+), 5 deletions(-)

diff --git a/hw/arm/aspeed.c b/hw/arm/aspeed.c
index cc59176563..bed5e4f40b 100644
--- a/hw/arm/aspeed.c
+++ b/hw/arm/aspeed.c
@@ -356,7 +356,6 @@ static void aspeed_machine_init(MachineState *machine)
     AspeedMachineClass *amc = ASPEED_MACHINE_GET_CLASS(machine);
     AspeedSoCClass *sc;
     int i;
-    NICInfo *nd = &nd_table[0];
 
     bmc->soc = ASPEED_SOC(object_new(amc->soc_name));
     object_property_add_child(OBJECT(machine), "soc", OBJECT(bmc->soc));
@@ -371,10 +370,10 @@ static void aspeed_machine_init(MachineState *machine)
                              &error_fatal);
 
     for (i = 0; i < sc->macs_num; i++) {
-        if ((amc->macs_mask & (1 << i)) && nd->used) {
-            qemu_check_nic_model(nd, TYPE_FTGMAC100);
-            qdev_set_nic_properties(DEVICE(&bmc->soc->ftgmac100[i]), nd);
-            nd++;
+        if ((amc->macs_mask & (1 << i)) &&
+            !qemu_configure_nic_device(DEVICE(&bmc->soc->ftgmac100[i]),
+                                       true, NULL)) {
+            break; /* No configs left; stop asking */
         }
     }
 
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Fri Jan 26 17:33:09 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 26 Jan 2024 17:33:09 +0000
Received: from list by lists.xenproject.org with outflank-mailman.672256.1046069 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTQ4i-0005AM-MI; Fri, 26 Jan 2024 17:33:08 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 672256.1046069; Fri, 26 Jan 2024 17:33:08 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTQ4i-00058K-Dy; Fri, 26 Jan 2024 17:33:08 +0000
Received: by outflank-mailman (input) for mailman id 672256;
 Fri, 26 Jan 2024 17:33:07 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=bPDA=JE=casper.srs.infradead.org=BATV+7caeb094913322f6f00d+7460+infradead.org+dwmw2@srs-se1.protection.inumbo.net>)
 id 1rTQ4h-0004m7-5w
 for xen-devel@lists.xenproject.org; Fri, 26 Jan 2024 17:33:07 +0000
Received: from casper.infradead.org (casper.infradead.org
 [2001:8b0:10b:1236::1])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id f588b39c-bc70-11ee-98f5-efadbce2ee36;
 Fri, 26 Jan 2024 18:33:03 +0100 (CET)
Received: from [2001:8b0:10b:1::ebe] (helo=i7.infradead.org)
 by casper.infradead.org with esmtpsa (Exim 4.97.1 #2 (Red Hat Linux))
 id 1rTQ48-0000000EKUH-0gwd; Fri, 26 Jan 2024 17:32:33 +0000
Received: from dwoodhou by i7.infradead.org with local (Exim 4.97.1 #2 (Red
 Hat Linux)) id 1rTQ47-00000001elh-3JDA;
 Fri, 26 Jan 2024 17:32:31 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
X-Inumbo-ID: f588b39c-bc70-11ee-98f5-efadbce2ee36
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=infradead.org; s=casper.20170209; h=Sender:Content-Transfer-Encoding:
	MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:
	Reply-To:Content-Type:Content-ID:Content-Description;
	bh=mlzjYpSZjZYD2hYts+UpgvgXir7egBvmFzjPnPYKEbw=; b=qlhRo9i8k117Zm8HSNvaw8uaTn
	njG4DzpUgoeqvAPkmQsWrCknlgqB0K0WLuGwpGTb5DCch+LgSX6v3EAcD0XQrb0ZFEJ5O64RqPuUP
	6Bfvec+jIbg6FRkcQuxva8bWqFUF7mww9Dusx8/GItRfSPekwDpuvguN2DoAToQqtF5qMsb87IOyK
	QJhDHMeIVGdDlZIVY9Zc7MPN7kEQiZGSbX2Aqs53XK/HIqzhkx3hkNgBe01lrKiIguTJ2c6XoQuif
	XQ4e4jmdF1/lrt4jB1YhMGLVEDKcdwMEK13TxAC1R9GDHcaek9yYobNbxtBK0vdSZxV8/3enPv1JC
	MP5+wlIg==;
From: David Woodhouse <dwmw2@infradead.org>
To: qemu-devel@nongnu.org
Cc: Richard Henderson <richard.henderson@linaro.org>,
	Beniamino Galvani <b.galvani@gmail.com>,
	Peter Maydell <peter.maydell@linaro.org>,
	Strahinja Jankovic <strahinja.p.jankovic@gmail.com>,
	Niek Linnenbank <nieklinnenbank@gmail.com>,
	=?UTF-8?q?C=C3=A9dric=20Le=20Goater?= <clg@kaod.org>,
	Andrew Jeffery <andrew@codeconstruct.com.au>,
	Joel Stanley <joel@jms.id.au>,
	Igor Mitsyanko <i.mitsyanko@gmail.com>,
	Jean-Christophe Dubois <jcd@tribudubois.net>,
	Andrey Smirnov <andrew.smirnov@gmail.com>,
	=?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= <philmd@linaro.org>,
	Rob Herring <robh@kernel.org>,
	Subbaraya Sundeep <sundeep.lkml@gmail.com>,
	Jan Kiszka <jan.kiszka@web.de>,
	Tyrone Ting <kfting@nuvoton.com>,
	Hao Wu <wuhaotsh@google.com>,
	Radoslaw Biernacki <rad@semihalf.com>,
	Leif Lindholm <quic_llindhol@quicinc.com>,
	Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org>,
	"Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
	Alistair Francis <alistair@alistair23.me>,
	Helge Deller <deller@gmx.de>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Eduardo Habkost <eduardo@habkost.net>,
	"Michael S. Tsirkin" <mst@redhat.com>,
	Marcel Apfelbaum <marcel.apfelbaum@gmail.com>,
	Song Gao <gaosong@loongson.cn>,
	Thomas Huth <huth@tuxfamily.org>,
	Laurent Vivier <laurent@vivier.eu>,
	Huacai Chen <chenhuacai@kernel.org>,
	Jiaxun Yang <jiaxun.yang@flygoat.com>,
	=?UTF-8?q?Herv=C3=A9=20Poussineau?= <hpoussin@reactos.org>,
	Aleksandar Rikalo <aleksandar.rikalo@syrmia.com>,
	Aurelien Jarno <aurelien@aurel32.net>,
	Jason Wang <jasowang@redhat.com>,
	Jia Liu <proljc@gmail.com>,
	Stafford Horne <shorne@gmail.com>,
	Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>,
	Nicholas Piggin <npiggin@gmail.com>,
	Daniel Henrique Barboza <danielhb413@gmail.com>,
	David Gibson <david@gibson.dropbear.id.au>,
	Harsh Prateek Bora <harshpb@linux.ibm.com>,
	Bin Meng <bin.meng@windriver.com>,
	Palmer Dabbelt <palmer@dabbelt.com>,
	Weiwei Li <liwei1518@gmail.com>,
	Liu Zhiwei <zhiwei_liu@linux.alibaba.com>,
	Halil Pasic <pasic@linux.ibm.com>,
	Christian Borntraeger <borntraeger@linux.ibm.com>,
	Eric Farman <farman@linux.ibm.com>,
	David Hildenbrand <david@redhat.com>,
	Ilya Leoshkevich <iii@linux.ibm.com>,
	Yoshinori Sato <ysato@users.sourceforge.jp>,
	Magnus Damm <magnus.damm@gmail.com>,
	Artyom Tarasenko <atar4qemu@gmail.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Anthony Perard <anthony.perard@citrix.com>,
	Paul Durrant <paul@xen.org>,
	Max Filippov <jcmvbkbc@gmail.com>,
	qemu-arm@nongnu.org,
	qemu-ppc@nongnu.org,
	qemu-riscv@nongnu.org,
	qemu-s390x@nongnu.org,
	xen-devel@lists.xenproject.org,
	David Woodhouse <dwmw@amazon.co.uk>,
	Thomas Huth <thuth@redhat.com>
Subject: [PATCH v4 10/47] hw/hppa: use pci_init_nic_devices()
Date: Fri, 26 Jan 2024 17:24:47 +0000
Message-ID: <20240126173228.394202-11-dwmw2@infradead.org>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20240126173228.394202-1-dwmw2@infradead.org>
References: <20240126173228.394202-1-dwmw2@infradead.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Sender: David Woodhouse <dwmw2@infradead.org>
X-SRS-Rewrite: SMTP reverse-path rewritten from <dwmw2@infradead.org> by casper.infradead.org. See http://www.infradead.org/rpr.html

From: David Woodhouse <dwmw@amazon.co.uk>

Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
Reviewed-by: Thomas Huth <thuth@redhat.com>
---
 hw/hppa/machine.c | 7 ++-----
 1 file changed, 2 insertions(+), 5 deletions(-)

diff --git a/hw/hppa/machine.c b/hw/hppa/machine.c
index 9e611620cc..a1045b48cc 100644
--- a/hw/hppa/machine.c
+++ b/hw/hppa/machine.c
@@ -342,7 +342,6 @@ static void machine_HP_common_init_tail(MachineState *machine, PCIBus *pci_bus,
     uint64_t kernel_entry = 0, kernel_low, kernel_high;
     MemoryRegion *addr_space = get_system_memory();
     MemoryRegion *rom_region;
-    long i;
     unsigned int smp_cpus = machine->smp.cpus;
     SysBusDevice *s;
 
@@ -368,10 +367,8 @@ static void machine_HP_common_init_tail(MachineState *machine, PCIBus *pci_bus,
                         qdev_get_gpio_in(lasi_dev, LASI_IRQ_LAN_HPA));
     }
 
-    for (i = 0; i < nb_nics; i++) {
-        if (!enable_lasi_lan()) {
-            pci_nic_init_nofail(&nd_table[i], pci_bus, mc->default_nic, NULL);
-        }
+    if (!enable_lasi_lan()) {
+        pci_init_nic_devices(pci_bus, mc->default_nic);
     }
 
     /* BMC board: HP Powerbar SP2 Diva (with console only) */
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Fri Jan 26 17:33:09 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 26 Jan 2024 17:33:09 +0000
Received: from list by lists.xenproject.org with outflank-mailman.672255.1046062 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTQ4i-000570-9l; Fri, 26 Jan 2024 17:33:08 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 672255.1046062; Fri, 26 Jan 2024 17:33:08 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTQ4i-000565-4N; Fri, 26 Jan 2024 17:33:08 +0000
Received: by outflank-mailman (input) for mailman id 672255;
 Fri, 26 Jan 2024 17:33:06 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=bPDA=JE=casper.srs.infradead.org=BATV+7caeb094913322f6f00d+7460+infradead.org+dwmw2@srs-se1.protection.inumbo.net>)
 id 1rTQ4g-0004m7-Gj
 for xen-devel@lists.xenproject.org; Fri, 26 Jan 2024 17:33:06 +0000
Received: from casper.infradead.org (casper.infradead.org
 [2001:8b0:10b:1236::1])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id f54dc813-bc70-11ee-98f5-efadbce2ee36;
 Fri, 26 Jan 2024 18:33:03 +0100 (CET)
Received: from [2001:8b0:10b:1::ebe] (helo=i7.infradead.org)
 by casper.infradead.org with esmtpsa (Exim 4.97.1 #2 (Red Hat Linux))
 id 1rTQ48-0000000EKUK-0jkb; Fri, 26 Jan 2024 17:32:33 +0000
Received: from dwoodhou by i7.infradead.org with local (Exim 4.97.1 #2 (Red
 Hat Linux)) id 1rTQ48-00000001elz-1dme;
 Fri, 26 Jan 2024 17:32:32 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
X-Inumbo-ID: f54dc813-bc70-11ee-98f5-efadbce2ee36
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=infradead.org; s=casper.20170209; h=Sender:Content-Transfer-Encoding:
	MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:
	Reply-To:Content-Type:Content-ID:Content-Description;
	bh=IsEBwT+a/9aBHnvV7Yr1FI82jfvo4oBFxfzxJeL3Zis=; b=o5uphZnnzk66xr9FQuoGoHaWIH
	PD2KSJ0bQgU+wewzGTv6tW1nP7TEDC+E82NfYVZOc0ivOVbXRaWBji21VgdgmcaPk9xvQHH3sxJlL
	W5wBmOCo9yGT9zGskThjhwDeXxPVaZOGfgFkJr/Un2HV5HrdgIyvjt5d2luhddn04WvUuGUPVHH1F
	vgrOcbchZYTSfxytYsLDI2IRBdKtuEUB6IWNVLStJPL2SNKo11VF4z5PXceDtjJZXfL1Zrp+dIdtT
	0ff5H/8bgPl8RpeD4OefovH/Vdckf2q7lj3BcNiyq79D5dH9O/Ey/uC4NhTumGesDLoMCQmZb15rV
	EMIIlqZQ==;
From: David Woodhouse <dwmw2@infradead.org>
To: qemu-devel@nongnu.org
Cc: Richard Henderson <richard.henderson@linaro.org>,
	Beniamino Galvani <b.galvani@gmail.com>,
	Peter Maydell <peter.maydell@linaro.org>,
	Strahinja Jankovic <strahinja.p.jankovic@gmail.com>,
	Niek Linnenbank <nieklinnenbank@gmail.com>,
	=?UTF-8?q?C=C3=A9dric=20Le=20Goater?= <clg@kaod.org>,
	Andrew Jeffery <andrew@codeconstruct.com.au>,
	Joel Stanley <joel@jms.id.au>,
	Igor Mitsyanko <i.mitsyanko@gmail.com>,
	Jean-Christophe Dubois <jcd@tribudubois.net>,
	Andrey Smirnov <andrew.smirnov@gmail.com>,
	=?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= <philmd@linaro.org>,
	Rob Herring <robh@kernel.org>,
	Subbaraya Sundeep <sundeep.lkml@gmail.com>,
	Jan Kiszka <jan.kiszka@web.de>,
	Tyrone Ting <kfting@nuvoton.com>,
	Hao Wu <wuhaotsh@google.com>,
	Radoslaw Biernacki <rad@semihalf.com>,
	Leif Lindholm <quic_llindhol@quicinc.com>,
	Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org>,
	"Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
	Alistair Francis <alistair@alistair23.me>,
	Helge Deller <deller@gmx.de>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Eduardo Habkost <eduardo@habkost.net>,
	"Michael S. Tsirkin" <mst@redhat.com>,
	Marcel Apfelbaum <marcel.apfelbaum@gmail.com>,
	Song Gao <gaosong@loongson.cn>,
	Thomas Huth <huth@tuxfamily.org>,
	Laurent Vivier <laurent@vivier.eu>,
	Huacai Chen <chenhuacai@kernel.org>,
	Jiaxun Yang <jiaxun.yang@flygoat.com>,
	=?UTF-8?q?Herv=C3=A9=20Poussineau?= <hpoussin@reactos.org>,
	Aleksandar Rikalo <aleksandar.rikalo@syrmia.com>,
	Aurelien Jarno <aurelien@aurel32.net>,
	Jason Wang <jasowang@redhat.com>,
	Jia Liu <proljc@gmail.com>,
	Stafford Horne <shorne@gmail.com>,
	Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>,
	Nicholas Piggin <npiggin@gmail.com>,
	Daniel Henrique Barboza <danielhb413@gmail.com>,
	David Gibson <david@gibson.dropbear.id.au>,
	Harsh Prateek Bora <harshpb@linux.ibm.com>,
	Bin Meng <bin.meng@windriver.com>,
	Palmer Dabbelt <palmer@dabbelt.com>,
	Weiwei Li <liwei1518@gmail.com>,
	Liu Zhiwei <zhiwei_liu@linux.alibaba.com>,
	Halil Pasic <pasic@linux.ibm.com>,
	Christian Borntraeger <borntraeger@linux.ibm.com>,
	Eric Farman <farman@linux.ibm.com>,
	David Hildenbrand <david@redhat.com>,
	Ilya Leoshkevich <iii@linux.ibm.com>,
	Yoshinori Sato <ysato@users.sourceforge.jp>,
	Magnus Damm <magnus.damm@gmail.com>,
	Artyom Tarasenko <atar4qemu@gmail.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Anthony Perard <anthony.perard@citrix.com>,
	Paul Durrant <paul@xen.org>,
	Max Filippov <jcmvbkbc@gmail.com>,
	qemu-arm@nongnu.org,
	qemu-ppc@nongnu.org,
	qemu-riscv@nongnu.org,
	qemu-s390x@nongnu.org,
	xen-devel@lists.xenproject.org,
	David Woodhouse <dwmw@amazon.co.uk>,
	Thomas Huth <thuth@redhat.com>
Subject: [PATCH v4 16/47] hw/ppc/spapr: use qemu_get_nic_info() and pci_init_nic_devices()
Date: Fri, 26 Jan 2024 17:24:53 +0000
Message-ID: <20240126173228.394202-17-dwmw2@infradead.org>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20240126173228.394202-1-dwmw2@infradead.org>
References: <20240126173228.394202-1-dwmw2@infradead.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Sender: David Woodhouse <dwmw2@infradead.org>
X-SRS-Rewrite: SMTP reverse-path rewritten from <dwmw2@infradead.org> by casper.infradead.org. See http://www.infradead.org/rpr.html

From: David Woodhouse <dwmw@amazon.co.uk>

Avoid directly referencing nd_table[] by first instantiating any
spapr-vlan devices using a qemu_get_nic_info() loop, then calling
pci_init_nic_devices() to do the rest.

No functional change intended.

Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
Reviewed-by: Thomas Huth <thuth@redhat.com>
---
 hw/ppc/spapr.c | 18 +++++-------------
 1 file changed, 5 insertions(+), 13 deletions(-)

diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c
index e8dabc8614..0d72d286d8 100644
--- a/hw/ppc/spapr.c
+++ b/hw/ppc/spapr.c
@@ -2796,6 +2796,7 @@ static void spapr_machine_init(MachineState *machine)
     MemoryRegion *sysmem = get_system_memory();
     long load_limit, fw_size;
     Error *resize_hpt_err = NULL;
+    NICInfo *nd;
 
     if (!filename) {
         error_report("Could not find LPAR firmware '%s'", bios_name);
@@ -2996,21 +2997,12 @@ static void spapr_machine_init(MachineState *machine)
 
     phb = spapr_create_default_phb();
 
-    for (i = 0; i < nb_nics; i++) {
-        NICInfo *nd = &nd_table[i];
-
-        if (!nd->model) {
-            nd->model = g_strdup("spapr-vlan");
-        }
-
-        if (g_str_equal(nd->model, "spapr-vlan") ||
-            g_str_equal(nd->model, "ibmveth")) {
-            spapr_vlan_create(spapr->vio_bus, nd);
-        } else {
-            pci_nic_init_nofail(&nd_table[i], phb->bus, nd->model, NULL);
-        }
+    while ((nd = qemu_find_nic_info("spapr-vlan", true, "ibmveth"))) {
+        spapr_vlan_create(spapr->vio_bus, nd);
     }
 
+    pci_init_nic_devices(phb->bus, NULL);
+
     for (i = 0; i <= drive_get_max_bus(IF_SCSI); i++) {
         spapr_vscsi_create(spapr->vio_bus);
     }
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Fri Jan 26 17:33:09 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 26 Jan 2024 17:33:09 +0000
Received: from list by lists.xenproject.org with outflank-mailman.672257.1046075 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTQ4j-0005Eg-1Z; Fri, 26 Jan 2024 17:33:09 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 672257.1046075; Fri, 26 Jan 2024 17:33:08 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTQ4i-0005CN-OI; Fri, 26 Jan 2024 17:33:08 +0000
Received: by outflank-mailman (input) for mailman id 672257;
 Fri, 26 Jan 2024 17:33:07 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=bPDA=JE=casper.srs.infradead.org=BATV+7caeb094913322f6f00d+7460+infradead.org+dwmw2@srs-se1.protection.inumbo.net>)
 id 1rTQ4h-0004Zo-6K
 for xen-devel@lists.xenproject.org; Fri, 26 Jan 2024 17:33:07 +0000
Received: from casper.infradead.org (casper.infradead.org
 [2001:8b0:10b:1236::1])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id f6d80c20-bc70-11ee-8a43-1f161083a0e0;
 Fri, 26 Jan 2024 18:33:06 +0100 (CET)
Received: from [2001:8b0:10b:1::ebe] (helo=i7.infradead.org)
 by casper.infradead.org with esmtpsa (Exim 4.97.1 #2 (Red Hat Linux))
 id 1rTQ48-0000000EKUI-0c8R; Fri, 26 Jan 2024 17:32:33 +0000
Received: from dwoodhou by i7.infradead.org with local (Exim 4.97.1 #2 (Red
 Hat Linux)) id 1rTQ47-00000001elY-26Lp;
 Fri, 26 Jan 2024 17:32:31 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
X-Inumbo-ID: f6d80c20-bc70-11ee-8a43-1f161083a0e0
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=infradead.org; s=casper.20170209; h=Sender:Content-Transfer-Encoding:
	MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:
	Reply-To:Content-Type:Content-ID:Content-Description;
	bh=C7nZq/xI+tHeWx5EE1R48ZvurCMfWCSLsOC+/dyJjdk=; b=Rv2CQRFKPPyrLZD67SGNqYuyb4
	GvyhT2YW0gHDow6GwIwtyMr2T8XDpGhiLDkpIl+LXPq+vSjs0xaTXC+C74GqqFjOdKKzCFWOAiahT
	sB76ExMjIfNhDo8gW1z6wgV68rgmcMG4plTG+aLERSxf4tHclfLIDHVltLbw+RQlVWpSbibrqC2GF
	3uQFm4GMwabqQE8hart4kFuZ7fOEhqfwFwZSBirP2coHxK0N9D+He1wdqV4EOu/exOaJ0CeuSiv8d
	0QWonbluFTzgv8d7fMKsnELacrNO1B0NTYqWGfdq2WJbIyHawk7Lua4tuq9/zG54YfsC3sHvnIYsa
	u3kXcdGQ==;
From: David Woodhouse <dwmw2@infradead.org>
To: qemu-devel@nongnu.org
Cc: Richard Henderson <richard.henderson@linaro.org>,
	Beniamino Galvani <b.galvani@gmail.com>,
	Peter Maydell <peter.maydell@linaro.org>,
	Strahinja Jankovic <strahinja.p.jankovic@gmail.com>,
	Niek Linnenbank <nieklinnenbank@gmail.com>,
	=?UTF-8?q?C=C3=A9dric=20Le=20Goater?= <clg@kaod.org>,
	Andrew Jeffery <andrew@codeconstruct.com.au>,
	Joel Stanley <joel@jms.id.au>,
	Igor Mitsyanko <i.mitsyanko@gmail.com>,
	Jean-Christophe Dubois <jcd@tribudubois.net>,
	Andrey Smirnov <andrew.smirnov@gmail.com>,
	=?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= <philmd@linaro.org>,
	Rob Herring <robh@kernel.org>,
	Subbaraya Sundeep <sundeep.lkml@gmail.com>,
	Jan Kiszka <jan.kiszka@web.de>,
	Tyrone Ting <kfting@nuvoton.com>,
	Hao Wu <wuhaotsh@google.com>,
	Radoslaw Biernacki <rad@semihalf.com>,
	Leif Lindholm <quic_llindhol@quicinc.com>,
	Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org>,
	"Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
	Alistair Francis <alistair@alistair23.me>,
	Helge Deller <deller@gmx.de>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Eduardo Habkost <eduardo@habkost.net>,
	"Michael S. Tsirkin" <mst@redhat.com>,
	Marcel Apfelbaum <marcel.apfelbaum@gmail.com>,
	Song Gao <gaosong@loongson.cn>,
	Thomas Huth <huth@tuxfamily.org>,
	Laurent Vivier <laurent@vivier.eu>,
	Huacai Chen <chenhuacai@kernel.org>,
	Jiaxun Yang <jiaxun.yang@flygoat.com>,
	=?UTF-8?q?Herv=C3=A9=20Poussineau?= <hpoussin@reactos.org>,
	Aleksandar Rikalo <aleksandar.rikalo@syrmia.com>,
	Aurelien Jarno <aurelien@aurel32.net>,
	Jason Wang <jasowang@redhat.com>,
	Jia Liu <proljc@gmail.com>,
	Stafford Horne <shorne@gmail.com>,
	Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>,
	Nicholas Piggin <npiggin@gmail.com>,
	Daniel Henrique Barboza <danielhb413@gmail.com>,
	David Gibson <david@gibson.dropbear.id.au>,
	Harsh Prateek Bora <harshpb@linux.ibm.com>,
	Bin Meng <bin.meng@windriver.com>,
	Palmer Dabbelt <palmer@dabbelt.com>,
	Weiwei Li <liwei1518@gmail.com>,
	Liu Zhiwei <zhiwei_liu@linux.alibaba.com>,
	Halil Pasic <pasic@linux.ibm.com>,
	Christian Borntraeger <borntraeger@linux.ibm.com>,
	Eric Farman <farman@linux.ibm.com>,
	David Hildenbrand <david@redhat.com>,
	Ilya Leoshkevich <iii@linux.ibm.com>,
	Yoshinori Sato <ysato@users.sourceforge.jp>,
	Magnus Damm <magnus.damm@gmail.com>,
	Artyom Tarasenko <atar4qemu@gmail.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Anthony Perard <anthony.perard@citrix.com>,
	Paul Durrant <paul@xen.org>,
	Max Filippov <jcmvbkbc@gmail.com>,
	qemu-arm@nongnu.org,
	qemu-ppc@nongnu.org,
	qemu-riscv@nongnu.org,
	qemu-s390x@nongnu.org,
	xen-devel@lists.xenproject.org,
	David Woodhouse <dwmw@amazon.co.uk>,
	Thomas Huth <thuth@redhat.com>
Subject: [PATCH v4 07/47] hw/alpha/dp264: use pci_init_nic_devices()
Date: Fri, 26 Jan 2024 17:24:44 +0000
Message-ID: <20240126173228.394202-8-dwmw2@infradead.org>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20240126173228.394202-1-dwmw2@infradead.org>
References: <20240126173228.394202-1-dwmw2@infradead.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Sender: David Woodhouse <dwmw2@infradead.org>
X-SRS-Rewrite: SMTP reverse-path rewritten from <dwmw2@infradead.org> by casper.infradead.org. See http://www.infradead.org/rpr.html

From: David Woodhouse <dwmw@amazon.co.uk>

Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
Reviewed-by: Thomas Huth <thuth@redhat.com>
---
 hw/alpha/dp264.c | 4 +---
 1 file changed, 1 insertion(+), 3 deletions(-)

diff --git a/hw/alpha/dp264.c b/hw/alpha/dp264.c
index 03495e1e60..52a1fa310b 100644
--- a/hw/alpha/dp264.c
+++ b/hw/alpha/dp264.c
@@ -124,9 +124,7 @@ static void clipper_init(MachineState *machine)
     pci_vga_init(pci_bus);
 
     /* Network setup.  e1000 is good enough, failing Tulip support.  */
-    for (i = 0; i < nb_nics; i++) {
-        pci_nic_init_nofail(&nd_table[i], pci_bus, mc->default_nic, NULL);
-    }
+    pci_init_nic_devices(pci_bus, mc->default_nic);
 
     /* Super I/O */
     isa_create_simple(isa_bus, TYPE_SMC37C669_SUPERIO);
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Fri Jan 26 17:33:11 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 26 Jan 2024 17:33:11 +0000
Received: from list by lists.xenproject.org with outflank-mailman.672258.1046099 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTQ4l-00065w-C5; Fri, 26 Jan 2024 17:33:11 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 672258.1046099; Fri, 26 Jan 2024 17:33:11 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTQ4l-00065I-70; Fri, 26 Jan 2024 17:33:11 +0000
Received: by outflank-mailman (input) for mailman id 672258;
 Fri, 26 Jan 2024 17:33:08 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=bPDA=JE=casper.srs.infradead.org=BATV+7caeb094913322f6f00d+7460+infradead.org+dwmw2@srs-se1.protection.inumbo.net>)
 id 1rTQ4i-0004m7-5z
 for xen-devel@lists.xenproject.org; Fri, 26 Jan 2024 17:33:08 +0000
Received: from casper.infradead.org (casper.infradead.org
 [2001:8b0:10b:1236::1])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id f6909de3-bc70-11ee-98f5-efadbce2ee36;
 Fri, 26 Jan 2024 18:33:05 +0100 (CET)
Received: from [2001:8b0:10b:1::ebe] (helo=i7.infradead.org)
 by casper.infradead.org with esmtpsa (Exim 4.97.1 #2 (Red Hat Linux))
 id 1rTQ4A-0000000EKVE-1KWX; Fri, 26 Jan 2024 17:32:35 +0000
Received: from dwoodhou by i7.infradead.org with local (Exim 4.97.1 #2 (Red
 Hat Linux)) id 1rTQ4B-00000001eoc-0Zcj;
 Fri, 26 Jan 2024 17:32:35 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
X-Inumbo-ID: f6909de3-bc70-11ee-98f5-efadbce2ee36
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=infradead.org; s=casper.20170209; h=Sender:Content-Transfer-Encoding:
	MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:
	Reply-To:Content-Type:Content-ID:Content-Description;
	bh=mMqmzYHdP9y/z29knSdyyl/j1smIAiKPsHboaiDoM8A=; b=IVHbkUTVu9QS37/ZYsTzfIizrG
	LPu/yqj/9DjNLjK5MqQJcDbaTTqxAzfRFUEkMm4afH9tPBzreb9YiJxUjaXrKpupvuupxwI0lVPkN
	au0VGXkd5EMo6iuMUoLPFu4ZysSeYj85Cv6MjA8l3VInOlHCJOupJpehhmxdcdzfR7Qu12dwsiaDB
	SwG+ZiJW3i5w1rLjjO/Er74woIQaiBQeJEMYx2XB+9mBVzYV+Q3RAnbYGraFAVlmSnA+NPgXLWxER
	0D1IBqmMMJjRwNalpz7QFwfhmoe/1hcEubjkQv2F5IzQDKtcYcoD3dgGB4HWxfKj248xTcE7A0nu5
	HRskgV4g==;
From: David Woodhouse <dwmw2@infradead.org>
To: qemu-devel@nongnu.org
Cc: Richard Henderson <richard.henderson@linaro.org>,
	Beniamino Galvani <b.galvani@gmail.com>,
	Peter Maydell <peter.maydell@linaro.org>,
	Strahinja Jankovic <strahinja.p.jankovic@gmail.com>,
	Niek Linnenbank <nieklinnenbank@gmail.com>,
	=?UTF-8?q?C=C3=A9dric=20Le=20Goater?= <clg@kaod.org>,
	Andrew Jeffery <andrew@codeconstruct.com.au>,
	Joel Stanley <joel@jms.id.au>,
	Igor Mitsyanko <i.mitsyanko@gmail.com>,
	Jean-Christophe Dubois <jcd@tribudubois.net>,
	Andrey Smirnov <andrew.smirnov@gmail.com>,
	=?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= <philmd@linaro.org>,
	Rob Herring <robh@kernel.org>,
	Subbaraya Sundeep <sundeep.lkml@gmail.com>,
	Jan Kiszka <jan.kiszka@web.de>,
	Tyrone Ting <kfting@nuvoton.com>,
	Hao Wu <wuhaotsh@google.com>,
	Radoslaw Biernacki <rad@semihalf.com>,
	Leif Lindholm <quic_llindhol@quicinc.com>,
	Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org>,
	"Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
	Alistair Francis <alistair@alistair23.me>,
	Helge Deller <deller@gmx.de>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Eduardo Habkost <eduardo@habkost.net>,
	"Michael S. Tsirkin" <mst@redhat.com>,
	Marcel Apfelbaum <marcel.apfelbaum@gmail.com>,
	Song Gao <gaosong@loongson.cn>,
	Thomas Huth <huth@tuxfamily.org>,
	Laurent Vivier <laurent@vivier.eu>,
	Huacai Chen <chenhuacai@kernel.org>,
	Jiaxun Yang <jiaxun.yang@flygoat.com>,
	=?UTF-8?q?Herv=C3=A9=20Poussineau?= <hpoussin@reactos.org>,
	Aleksandar Rikalo <aleksandar.rikalo@syrmia.com>,
	Aurelien Jarno <aurelien@aurel32.net>,
	Jason Wang <jasowang@redhat.com>,
	Jia Liu <proljc@gmail.com>,
	Stafford Horne <shorne@gmail.com>,
	Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>,
	Nicholas Piggin <npiggin@gmail.com>,
	Daniel Henrique Barboza <danielhb413@gmail.com>,
	David Gibson <david@gibson.dropbear.id.au>,
	Harsh Prateek Bora <harshpb@linux.ibm.com>,
	Bin Meng <bin.meng@windriver.com>,
	Palmer Dabbelt <palmer@dabbelt.com>,
	Weiwei Li <liwei1518@gmail.com>,
	Liu Zhiwei <zhiwei_liu@linux.alibaba.com>,
	Halil Pasic <pasic@linux.ibm.com>,
	Christian Borntraeger <borntraeger@linux.ibm.com>,
	Eric Farman <farman@linux.ibm.com>,
	David Hildenbrand <david@redhat.com>,
	Ilya Leoshkevich <iii@linux.ibm.com>,
	Yoshinori Sato <ysato@users.sourceforge.jp>,
	Magnus Damm <magnus.damm@gmail.com>,
	Artyom Tarasenko <atar4qemu@gmail.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Anthony Perard <anthony.perard@citrix.com>,
	Paul Durrant <paul@xen.org>,
	Max Filippov <jcmvbkbc@gmail.com>,
	qemu-arm@nongnu.org,
	qemu-ppc@nongnu.org,
	qemu-riscv@nongnu.org,
	qemu-s390x@nongnu.org,
	xen-devel@lists.xenproject.org,
	David Woodhouse <dwmw@amazon.co.uk>,
	Thomas Huth <thuth@redhat.com>
Subject: [PATCH v4 47/47] net: make nb_nics and nd_table[] static in net/net.c
Date: Fri, 26 Jan 2024 17:25:24 +0000
Message-ID: <20240126173228.394202-48-dwmw2@infradead.org>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20240126173228.394202-1-dwmw2@infradead.org>
References: <20240126173228.394202-1-dwmw2@infradead.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Sender: David Woodhouse <dwmw2@infradead.org>
X-SRS-Rewrite: SMTP reverse-path rewritten from <dwmw2@infradead.org> by casper.infradead.org. See http://www.infradead.org/rpr.html

From: David Woodhouse <dwmw@amazon.co.uk>

Also remove the stale declaration of host_net_devices; the actual
definition was removed long ago in commit 7cc28cb06104 ("net: Remove
the deprecated 'host_net_add' and 'host_net_remove' HMP commands")

Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
Reviewed-by: Thomas Huth <thuth@redhat.com>
---
 include/net/net.h | 4 ----
 net/net.c         | 3 +++
 system/globals.c  | 2 --
 3 files changed, 3 insertions(+), 6 deletions(-)

diff --git a/include/net/net.h b/include/net/net.h
index 588ee55f28..b1f9b35fcc 100644
--- a/include/net/net.h
+++ b/include/net/net.h
@@ -301,10 +301,6 @@ struct NICInfo {
     int nvectors;
 };
 
-extern int nb_nics;
-extern NICInfo nd_table[MAX_NICS];
-extern const char *host_net_devices[];
-
 /* from net.c */
 extern NetClientStateList net_clients;
 bool netdev_is_modern(const char *optstr);
diff --git a/net/net.c b/net/net.c
index d705e9b0fd..a2f0c828bb 100644
--- a/net/net.c
+++ b/net/net.c
@@ -77,6 +77,9 @@ static NetdevQueue nd_queue = QSIMPLEQ_HEAD_INITIALIZER(nd_queue);
 
 static GHashTable *nic_model_help;
 
+static int nb_nics;
+static NICInfo nd_table[MAX_NICS];
+
 /***********************************************************/
 /* network device redirectors */
 
diff --git a/system/globals.c b/system/globals.c
index e83b5428d1..b6d4e72530 100644
--- a/system/globals.c
+++ b/system/globals.c
@@ -36,8 +36,6 @@ int display_opengl;
 const char* keyboard_layout;
 bool enable_mlock;
 bool enable_cpu_pm;
-int nb_nics;
-NICInfo nd_table[MAX_NICS];
 int autostart = 1;
 int vga_interface_type = VGA_NONE;
 bool vga_interface_created;
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Fri Jan 26 17:33:11 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 26 Jan 2024 17:33:11 +0000
Received: from list by lists.xenproject.org with outflank-mailman.672259.1046101 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTQ4l-00069V-MB; Fri, 26 Jan 2024 17:33:11 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 672259.1046101; Fri, 26 Jan 2024 17:33:11 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTQ4l-00067l-HB; Fri, 26 Jan 2024 17:33:11 +0000
Received: by outflank-mailman (input) for mailman id 672259;
 Fri, 26 Jan 2024 17:33:09 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=bPDA=JE=casper.srs.infradead.org=BATV+7caeb094913322f6f00d+7460+infradead.org+dwmw2@srs-se1.protection.inumbo.net>)
 id 1rTQ4j-0004m7-62
 for xen-devel@lists.xenproject.org; Fri, 26 Jan 2024 17:33:09 +0000
Received: from casper.infradead.org (casper.infradead.org
 [2001:8b0:10b:1236::1])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id f6ec2bc1-bc70-11ee-98f5-efadbce2ee36;
 Fri, 26 Jan 2024 18:33:06 +0100 (CET)
Received: from [2001:8b0:10b:1::ebe] (helo=i7.infradead.org)
 by casper.infradead.org with esmtpsa (Exim 4.97.1 #2 (Red Hat Linux))
 id 1rTQ4A-0000000EKVC-0etO; Fri, 26 Jan 2024 17:32:35 +0000
Received: from dwoodhou by i7.infradead.org with local (Exim 4.97.1 #2 (Red
 Hat Linux)) id 1rTQ4A-00000001eoT-3xMI;
 Fri, 26 Jan 2024 17:32:34 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
X-Inumbo-ID: f6ec2bc1-bc70-11ee-98f5-efadbce2ee36
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=infradead.org; s=casper.20170209; h=Sender:Content-Transfer-Encoding:
	MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:
	Reply-To:Content-Type:Content-ID:Content-Description;
	bh=q/lRu96lP+9hig2DfITdw70Fa08pfxR/d1NeEVgyLNY=; b=vj3nhF9bU1XNbBMdoBXROJ/CKp
	z6OGkwU/f2qLQkr5Kvl6koyxRd9PsNFD7P4tvwbtBVduPJTn29ufLl2gUvRSOcwEj5M1PAwCGRop5
	TAWRbg1sb3eiBIKaWuv58DTiU5r64U+Pds1iLl+EEVlFa2HJM9Eato3sSBtkNtsNYU3wwmeim7LTb
	WcS5icwJl23aWJhXOzaJkjYZ5RidPs4FC4bKxLeij+a5tSXiGiJllO04RiIy9N0rlm5r5R5K5PO6m
	X9VWrPGjT/2HbFyzDdU4+Uny7bmEQTUVmH/xr8IH3sBmNjyi8Cw9hpmFUYVd6R/HAUvdgzFPb3SRV
	4c0egt9A==;
From: David Woodhouse <dwmw2@infradead.org>
To: qemu-devel@nongnu.org
Cc: Richard Henderson <richard.henderson@linaro.org>,
	Beniamino Galvani <b.galvani@gmail.com>,
	Peter Maydell <peter.maydell@linaro.org>,
	Strahinja Jankovic <strahinja.p.jankovic@gmail.com>,
	Niek Linnenbank <nieklinnenbank@gmail.com>,
	=?UTF-8?q?C=C3=A9dric=20Le=20Goater?= <clg@kaod.org>,
	Andrew Jeffery <andrew@codeconstruct.com.au>,
	Joel Stanley <joel@jms.id.au>,
	Igor Mitsyanko <i.mitsyanko@gmail.com>,
	Jean-Christophe Dubois <jcd@tribudubois.net>,
	Andrey Smirnov <andrew.smirnov@gmail.com>,
	=?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= <philmd@linaro.org>,
	Rob Herring <robh@kernel.org>,
	Subbaraya Sundeep <sundeep.lkml@gmail.com>,
	Jan Kiszka <jan.kiszka@web.de>,
	Tyrone Ting <kfting@nuvoton.com>,
	Hao Wu <wuhaotsh@google.com>,
	Radoslaw Biernacki <rad@semihalf.com>,
	Leif Lindholm <quic_llindhol@quicinc.com>,
	Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org>,
	"Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
	Alistair Francis <alistair@alistair23.me>,
	Helge Deller <deller@gmx.de>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Eduardo Habkost <eduardo@habkost.net>,
	"Michael S. Tsirkin" <mst@redhat.com>,
	Marcel Apfelbaum <marcel.apfelbaum@gmail.com>,
	Song Gao <gaosong@loongson.cn>,
	Thomas Huth <huth@tuxfamily.org>,
	Laurent Vivier <laurent@vivier.eu>,
	Huacai Chen <chenhuacai@kernel.org>,
	Jiaxun Yang <jiaxun.yang@flygoat.com>,
	=?UTF-8?q?Herv=C3=A9=20Poussineau?= <hpoussin@reactos.org>,
	Aleksandar Rikalo <aleksandar.rikalo@syrmia.com>,
	Aurelien Jarno <aurelien@aurel32.net>,
	Jason Wang <jasowang@redhat.com>,
	Jia Liu <proljc@gmail.com>,
	Stafford Horne <shorne@gmail.com>,
	Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>,
	Nicholas Piggin <npiggin@gmail.com>,
	Daniel Henrique Barboza <danielhb413@gmail.com>,
	David Gibson <david@gibson.dropbear.id.au>,
	Harsh Prateek Bora <harshpb@linux.ibm.com>,
	Bin Meng <bin.meng@windriver.com>,
	Palmer Dabbelt <palmer@dabbelt.com>,
	Weiwei Li <liwei1518@gmail.com>,
	Liu Zhiwei <zhiwei_liu@linux.alibaba.com>,
	Halil Pasic <pasic@linux.ibm.com>,
	Christian Borntraeger <borntraeger@linux.ibm.com>,
	Eric Farman <farman@linux.ibm.com>,
	David Hildenbrand <david@redhat.com>,
	Ilya Leoshkevich <iii@linux.ibm.com>,
	Yoshinori Sato <ysato@users.sourceforge.jp>,
	Magnus Damm <magnus.damm@gmail.com>,
	Artyom Tarasenko <atar4qemu@gmail.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Anthony Perard <anthony.perard@citrix.com>,
	Paul Durrant <paul@xen.org>,
	Max Filippov <jcmvbkbc@gmail.com>,
	qemu-arm@nongnu.org,
	qemu-ppc@nongnu.org,
	qemu-riscv@nongnu.org,
	qemu-s390x@nongnu.org,
	xen-devel@lists.xenproject.org,
	David Woodhouse <dwmw@amazon.co.uk>,
	Thomas Huth <thuth@redhat.com>
Subject: [PATCH v4 45/47] hw/pci: remove pci_nic_init_nofail()
Date: Fri, 26 Jan 2024 17:25:22 +0000
Message-ID: <20240126173228.394202-46-dwmw2@infradead.org>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20240126173228.394202-1-dwmw2@infradead.org>
References: <20240126173228.394202-1-dwmw2@infradead.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Sender: David Woodhouse <dwmw2@infradead.org>
X-SRS-Rewrite: SMTP reverse-path rewritten from <dwmw2@infradead.org> by casper.infradead.org. See http://www.infradead.org/rpr.html

From: David Woodhouse <dwmw@amazon.co.uk>

This function is no longer used, as all its callers have been converted
to use pci_init_nic_devices() instead.

Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
Reviewed-by: Thomas Huth <thuth@redhat.com>
---
 hw/pci/pci.c         | 72 --------------------------------------------
 include/hw/pci/pci.h |  3 --
 2 files changed, 75 deletions(-)

diff --git a/hw/pci/pci.c b/hw/pci/pci.c
index 5849606f66..449abfb182 100644
--- a/hw/pci/pci.c
+++ b/hw/pci/pci.c
@@ -1853,78 +1853,6 @@ const pci_class_desc *get_class_desc(int class)
     return desc;
 }
 
-/* Initialize a PCI NIC.  */
-PCIDevice *pci_nic_init_nofail(NICInfo *nd, PCIBus *rootbus,
-                               const char *default_model,
-                               const char *default_devaddr)
-{
-    const char *devaddr = nd->devaddr ? nd->devaddr : default_devaddr;
-    GPtrArray *pci_nic_models;
-    PCIBus *bus;
-    PCIDevice *pci_dev;
-    DeviceState *dev;
-    int devfn;
-    int i;
-    int dom, busnr;
-    unsigned slot;
-
-    if (nd->model && !strcmp(nd->model, "virtio")) {
-        g_free(nd->model);
-        nd->model = g_strdup("virtio-net-pci");
-    }
-
-    pci_nic_models = qemu_get_nic_models(TYPE_PCI_DEVICE);
-
-    if (qemu_show_nic_models(nd->model, (const char **)pci_nic_models->pdata)) {
-        exit(0);
-    }
-
-    i = qemu_find_nic_model(nd, (const char **)pci_nic_models->pdata,
-                            default_model);
-    if (i < 0) {
-        exit(1);
-    }
-
-    if (!rootbus) {
-        error_report("No primary PCI bus");
-        exit(1);
-    }
-
-    assert(!rootbus->parent_dev);
-
-    if (!devaddr) {
-        devfn = -1;
-        busnr = 0;
-    } else {
-        if (pci_parse_devaddr(devaddr, &dom, &busnr, &slot, NULL) < 0) {
-            error_report("Invalid PCI device address %s for device %s",
-                         devaddr, nd->model);
-            exit(1);
-        }
-
-        if (dom != 0) {
-            error_report("No support for non-zero PCI domains");
-            exit(1);
-        }
-
-        devfn = PCI_DEVFN(slot, 0);
-    }
-
-    bus = pci_find_bus_nr(rootbus, busnr);
-    if (!bus) {
-        error_report("Invalid PCI device address %s for device %s",
-                     devaddr, nd->model);
-        exit(1);
-    }
-
-    pci_dev = pci_new(devfn, nd->model);
-    dev = &pci_dev->qdev;
-    qdev_set_nic_properties(dev, nd);
-    pci_realize_and_unref(pci_dev, bus, &error_fatal);
-    g_ptr_array_free(pci_nic_models, true);
-    return pci_dev;
-}
-
 void pci_init_nic_devices(PCIBus *bus, const char *default_model)
 {
     qemu_create_nic_bus_devices(&bus->qbus, TYPE_PCI_DEVICE, default_model,
diff --git a/include/hw/pci/pci.h b/include/hw/pci/pci.h
index 6ff0b95a02..eaa3fc99d8 100644
--- a/include/hw/pci/pci.h
+++ b/include/hw/pci/pci.h
@@ -314,9 +314,6 @@ void pci_device_set_intx_routing_notifier(PCIDevice *dev,
                                           PCIINTxRoutingNotifier notifier);
 void pci_device_reset(PCIDevice *dev);
 
-PCIDevice *pci_nic_init_nofail(NICInfo *nd, PCIBus *rootbus,
-                               const char *default_model,
-                               const char *default_devaddr);
 void pci_init_nic_devices(PCIBus *bus, const char *default_model);
 bool pci_init_nic_in_slot(PCIBus *rootbus, const char *default_model,
                           const char *alias, const char *devaddr);
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Fri Jan 26 17:33:14 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 26 Jan 2024 17:33:14 +0000
Received: from list by lists.xenproject.org with outflank-mailman.672260.1046118 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTQ4o-0006h8-5J; Fri, 26 Jan 2024 17:33:14 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 672260.1046118; Fri, 26 Jan 2024 17:33:14 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTQ4o-0006gs-0A; Fri, 26 Jan 2024 17:33:14 +0000
Received: by outflank-mailman (input) for mailman id 672260;
 Fri, 26 Jan 2024 17:33:12 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=bPDA=JE=casper.srs.infradead.org=BATV+7caeb094913322f6f00d+7460+infradead.org+dwmw2@srs-se1.protection.inumbo.net>)
 id 1rTQ4m-0004Zo-OI
 for xen-devel@lists.xenproject.org; Fri, 26 Jan 2024 17:33:12 +0000
Received: from casper.infradead.org (casper.infradead.org
 [2001:8b0:10b:1236::1])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id fa7483f1-bc70-11ee-8a43-1f161083a0e0;
 Fri, 26 Jan 2024 18:33:12 +0100 (CET)
Received: from [2001:8b0:10b:1::ebe] (helo=i7.infradead.org)
 by casper.infradead.org with esmtpsa (Exim 4.97.1 #2 (Red Hat Linux))
 id 1rTQ49-0000000EKV3-1wai; Fri, 26 Jan 2024 17:32:35 +0000
Received: from dwoodhou by i7.infradead.org with local (Exim 4.97.1 #2 (Red
 Hat Linux)) id 1rTQ4A-00000001env-1PSB;
 Fri, 26 Jan 2024 17:32:34 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
X-Inumbo-ID: fa7483f1-bc70-11ee-8a43-1f161083a0e0
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=infradead.org; s=casper.20170209; h=Sender:Content-Transfer-Encoding:
	MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:
	Reply-To:Content-Type:Content-ID:Content-Description;
	bh=/MTEStVe8JsIJfw31uF1pPqlJs68QbDUjigCzt5wrRY=; b=aDzp80vU5CN2Sm/Q2GM88ExicE
	ccJGYACucBtKe16CrPuXI8x6MQzxzt6fV0r84XESGseZvld5CXCQC9QzZzcFPJnI64cgHCod7ddPH
	RewZmZQw7QQO2bMuxR/34YPRdIs5t2+mEggs7lr6xme1yiAytBNa/dIBwShHfjpuqxZIMinnpRN5R
	0dR7BxscgGzjNLkpTt0TkHuA0WY+1biD2fXhnufi8RwbXxrBzTgy+iapTPigX5QHv2cam5VVRY345
	xORHuQhgWGfuhy5q/rHr7UPvtk0ZKFK3DTasYt9itfNJnx5onSt6L5htjQErOc2Vj9QlNnrKKRiuW
	RKbK9Axw==;
From: David Woodhouse <dwmw2@infradead.org>
To: qemu-devel@nongnu.org
Cc: Richard Henderson <richard.henderson@linaro.org>,
	Beniamino Galvani <b.galvani@gmail.com>,
	Peter Maydell <peter.maydell@linaro.org>,
	Strahinja Jankovic <strahinja.p.jankovic@gmail.com>,
	Niek Linnenbank <nieklinnenbank@gmail.com>,
	=?UTF-8?q?C=C3=A9dric=20Le=20Goater?= <clg@kaod.org>,
	Andrew Jeffery <andrew@codeconstruct.com.au>,
	Joel Stanley <joel@jms.id.au>,
	Igor Mitsyanko <i.mitsyanko@gmail.com>,
	Jean-Christophe Dubois <jcd@tribudubois.net>,
	Andrey Smirnov <andrew.smirnov@gmail.com>,
	=?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= <philmd@linaro.org>,
	Rob Herring <robh@kernel.org>,
	Subbaraya Sundeep <sundeep.lkml@gmail.com>,
	Jan Kiszka <jan.kiszka@web.de>,
	Tyrone Ting <kfting@nuvoton.com>,
	Hao Wu <wuhaotsh@google.com>,
	Radoslaw Biernacki <rad@semihalf.com>,
	Leif Lindholm <quic_llindhol@quicinc.com>,
	Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org>,
	"Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
	Alistair Francis <alistair@alistair23.me>,
	Helge Deller <deller@gmx.de>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Eduardo Habkost <eduardo@habkost.net>,
	"Michael S. Tsirkin" <mst@redhat.com>,
	Marcel Apfelbaum <marcel.apfelbaum@gmail.com>,
	Song Gao <gaosong@loongson.cn>,
	Thomas Huth <huth@tuxfamily.org>,
	Laurent Vivier <laurent@vivier.eu>,
	Huacai Chen <chenhuacai@kernel.org>,
	Jiaxun Yang <jiaxun.yang@flygoat.com>,
	=?UTF-8?q?Herv=C3=A9=20Poussineau?= <hpoussin@reactos.org>,
	Aleksandar Rikalo <aleksandar.rikalo@syrmia.com>,
	Aurelien Jarno <aurelien@aurel32.net>,
	Jason Wang <jasowang@redhat.com>,
	Jia Liu <proljc@gmail.com>,
	Stafford Horne <shorne@gmail.com>,
	Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>,
	Nicholas Piggin <npiggin@gmail.com>,
	Daniel Henrique Barboza <danielhb413@gmail.com>,
	David Gibson <david@gibson.dropbear.id.au>,
	Harsh Prateek Bora <harshpb@linux.ibm.com>,
	Bin Meng <bin.meng@windriver.com>,
	Palmer Dabbelt <palmer@dabbelt.com>,
	Weiwei Li <liwei1518@gmail.com>,
	Liu Zhiwei <zhiwei_liu@linux.alibaba.com>,
	Halil Pasic <pasic@linux.ibm.com>,
	Christian Borntraeger <borntraeger@linux.ibm.com>,
	Eric Farman <farman@linux.ibm.com>,
	David Hildenbrand <david@redhat.com>,
	Ilya Leoshkevich <iii@linux.ibm.com>,
	Yoshinori Sato <ysato@users.sourceforge.jp>,
	Magnus Damm <magnus.damm@gmail.com>,
	Artyom Tarasenko <atar4qemu@gmail.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Anthony Perard <anthony.perard@citrix.com>,
	Paul Durrant <paul@xen.org>,
	Max Filippov <jcmvbkbc@gmail.com>,
	qemu-arm@nongnu.org,
	qemu-ppc@nongnu.org,
	qemu-riscv@nongnu.org,
	qemu-s390x@nongnu.org,
	xen-devel@lists.xenproject.org,
	David Woodhouse <dwmw@amazon.co.uk>,
	Thomas Huth <thuth@redhat.com>
Subject: [PATCH v4 38/47] hw/net/lasi_i82596: use qemu_create_nic_device()
Date: Fri, 26 Jan 2024 17:25:15 +0000
Message-ID: <20240126173228.394202-39-dwmw2@infradead.org>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20240126173228.394202-1-dwmw2@infradead.org>
References: <20240126173228.394202-1-dwmw2@infradead.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Sender: David Woodhouse <dwmw2@infradead.org>
X-SRS-Rewrite: SMTP reverse-path rewritten from <dwmw2@infradead.org> by casper.infradead.org. See http://www.infradead.org/rpr.html

From: David Woodhouse <dwmw@amazon.co.uk>

Create the device only if there is a corresponding NIC config for it.
Remove the explicit check on nd_table[0].used from hw/hppa/machine.c
which (since commit d8a3220005d7) tries to do the same thing.

The lasi_82596 support has been disabled since it was first introduced,
since enable_lasi_lan() has always been zero. This allows the user to
enable it by explicitly requesting a NIC model 'lasi_82596' or just
using the alias 'lasi'. Otherwise, it defaults to a PCI NIC as before.

Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
Reviewed-by: Thomas Huth <thuth@redhat.com>
---
 hw/hppa/machine.c           | 11 ++++-------
 hw/net/lasi_i82596.c        | 12 +++++++-----
 include/hw/net/lasi_82596.h |  4 ++--
 3 files changed, 13 insertions(+), 14 deletions(-)

diff --git a/hw/hppa/machine.c b/hw/hppa/machine.c
index a1045b48cc..5ae4f176f6 100644
--- a/hw/hppa/machine.c
+++ b/hw/hppa/machine.c
@@ -362,14 +362,11 @@ static void machine_HP_common_init_tail(MachineState *machine, PCIBus *pci_bus,
     }
 
     /* Network setup. */
-    if (nd_table[0].used && enable_lasi_lan()) {
-        lasi_82596_init(addr_space, translate(NULL, LASI_LAN_HPA),
-                        qdev_get_gpio_in(lasi_dev, LASI_IRQ_LAN_HPA));
-    }
+    lasi_82596_init(addr_space, translate(NULL, LASI_LAN_HPA),
+                    qdev_get_gpio_in(lasi_dev, LASI_IRQ_LAN_HPA),
+                    enable_lasi_lan());
 
-    if (!enable_lasi_lan()) {
-        pci_init_nic_devices(pci_bus, mc->default_nic);
-    }
+    pci_init_nic_devices(pci_bus, mc->default_nic);
 
     /* BMC board: HP Powerbar SP2 Diva (with console only) */
     pci_dev = pci_new(-1, "pci-serial");
diff --git a/hw/net/lasi_i82596.c b/hw/net/lasi_i82596.c
index 09e830ba5f..fcf7fae941 100644
--- a/hw/net/lasi_i82596.c
+++ b/hw/net/lasi_i82596.c
@@ -118,19 +118,21 @@ static void lasi_82596_realize(DeviceState *dev, Error **errp)
     i82596_common_init(dev, s, &net_lasi_82596_info);
 }
 
-SysBusI82596State *lasi_82596_init(MemoryRegion *addr_space,
-                  hwaddr hpa, qemu_irq lan_irq)
+SysBusI82596State *lasi_82596_init(MemoryRegion *addr_space, hwaddr hpa,
+                                   qemu_irq lan_irq, gboolean match_default)
 {
     DeviceState *dev;
     SysBusI82596State *s;
     static const MACAddr HP_MAC = {
         .a = { 0x08, 0x00, 0x09, 0xef, 0x34, 0xf6 } };
 
-    qemu_check_nic_model(&nd_table[0], TYPE_LASI_82596);
-    dev = qdev_new(TYPE_LASI_82596);
+    dev = qemu_create_nic_device(TYPE_LASI_82596, match_default, "lasi");
+    if (!dev) {
+        return NULL;
+    }
+
     s = SYSBUS_I82596(dev);
     s->state.irq = lan_irq;
-    qdev_set_nic_properties(dev, &nd_table[0]);
     sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal);
     s->state.conf.macaddr = HP_MAC; /* set HP MAC prefix */
 
diff --git a/include/hw/net/lasi_82596.h b/include/hw/net/lasi_82596.h
index 3ef2f47ba2..439356ec19 100644
--- a/include/hw/net/lasi_82596.h
+++ b/include/hw/net/lasi_82596.h
@@ -25,7 +25,7 @@ struct SysBusI82596State {
     int val_index:1;
 };
 
-SysBusI82596State *lasi_82596_init(MemoryRegion *addr_space,
-                                    hwaddr hpa, qemu_irq irq);
+SysBusI82596State *lasi_82596_init(MemoryRegion *addr_space, hwaddr hpa,
+                                   qemu_irq irq, gboolean match_default);
 
 #endif
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Fri Jan 26 17:33:14 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 26 Jan 2024 17:33:14 +0000
Received: from list by lists.xenproject.org with outflank-mailman.672261.1046124 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTQ4o-0006kq-Nh; Fri, 26 Jan 2024 17:33:14 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 672261.1046124; Fri, 26 Jan 2024 17:33:14 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTQ4o-0006jw-Do; Fri, 26 Jan 2024 17:33:14 +0000
Received: by outflank-mailman (input) for mailman id 672261;
 Fri, 26 Jan 2024 17:33:12 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=bPDA=JE=casper.srs.infradead.org=BATV+7caeb094913322f6f00d+7460+infradead.org+dwmw2@srs-se1.protection.inumbo.net>)
 id 1rTQ4m-0004m7-Ns
 for xen-devel@lists.xenproject.org; Fri, 26 Jan 2024 17:33:12 +0000
Received: from casper.infradead.org (casper.infradead.org
 [2001:8b0:10b:1236::1])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id f94b1646-bc70-11ee-98f5-efadbce2ee36;
 Fri, 26 Jan 2024 18:33:10 +0100 (CET)
Received: from [2001:8b0:10b:1::ebe] (helo=i7.infradead.org)
 by casper.infradead.org with esmtpsa (Exim 4.97.1 #2 (Red Hat Linux))
 id 1rTQ49-0000000EKV8-44sQ; Fri, 26 Jan 2024 17:32:35 +0000
Received: from dwoodhou by i7.infradead.org with local (Exim 4.97.1 #2 (Red
 Hat Linux)) id 1rTQ4A-00000001eoO-3aiC;
 Fri, 26 Jan 2024 17:32:34 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
X-Inumbo-ID: f94b1646-bc70-11ee-98f5-efadbce2ee36
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=infradead.org; s=casper.20170209; h=Sender:Content-Transfer-Encoding:
	MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:
	Reply-To:Content-Type:Content-ID:Content-Description;
	bh=bWvWof/1cmcc1j4iR+WvmK21dtpKtWiHn2Gmk5c5D+g=; b=WzzpstEkNJiPLuy92upSXanqTF
	La6Ww0ZzuK27VHK1Qpd+lUrAaC/DeDA7Jd1G5BVyfJ2c1X5gfD+t3LDddgefqLi1Ocr+5U5QHPRX+
	LAXaw8dcwwQANy1glCZKAbKQoDasbC7Ca8YhP8UJ1cVHKavuftIwXkLhPk9GCjXDgxq7jm/7qhyCY
	i42yg2iZe8Yb8j/kSHcuTU5/ikvOMtl6u++VwXZR1CAJ1td+pAHwe6jqsKOsuIczoy6r0diWC+HUG
	svVAtxAwVNFAHcwJZjSF/HBe39q6T52eEzgHswXTWsEacxcIcIJHSqgKLOd8SoXXa5aiCrYiZA6iP
	dHar8YlQ==;
From: David Woodhouse <dwmw2@infradead.org>
To: qemu-devel@nongnu.org
Cc: Richard Henderson <richard.henderson@linaro.org>,
	Beniamino Galvani <b.galvani@gmail.com>,
	Peter Maydell <peter.maydell@linaro.org>,
	Strahinja Jankovic <strahinja.p.jankovic@gmail.com>,
	Niek Linnenbank <nieklinnenbank@gmail.com>,
	=?UTF-8?q?C=C3=A9dric=20Le=20Goater?= <clg@kaod.org>,
	Andrew Jeffery <andrew@codeconstruct.com.au>,
	Joel Stanley <joel@jms.id.au>,
	Igor Mitsyanko <i.mitsyanko@gmail.com>,
	Jean-Christophe Dubois <jcd@tribudubois.net>,
	Andrey Smirnov <andrew.smirnov@gmail.com>,
	=?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= <philmd@linaro.org>,
	Rob Herring <robh@kernel.org>,
	Subbaraya Sundeep <sundeep.lkml@gmail.com>,
	Jan Kiszka <jan.kiszka@web.de>,
	Tyrone Ting <kfting@nuvoton.com>,
	Hao Wu <wuhaotsh@google.com>,
	Radoslaw Biernacki <rad@semihalf.com>,
	Leif Lindholm <quic_llindhol@quicinc.com>,
	Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org>,
	"Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
	Alistair Francis <alistair@alistair23.me>,
	Helge Deller <deller@gmx.de>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Eduardo Habkost <eduardo@habkost.net>,
	"Michael S. Tsirkin" <mst@redhat.com>,
	Marcel Apfelbaum <marcel.apfelbaum@gmail.com>,
	Song Gao <gaosong@loongson.cn>,
	Thomas Huth <huth@tuxfamily.org>,
	Laurent Vivier <laurent@vivier.eu>,
	Huacai Chen <chenhuacai@kernel.org>,
	Jiaxun Yang <jiaxun.yang@flygoat.com>,
	=?UTF-8?q?Herv=C3=A9=20Poussineau?= <hpoussin@reactos.org>,
	Aleksandar Rikalo <aleksandar.rikalo@syrmia.com>,
	Aurelien Jarno <aurelien@aurel32.net>,
	Jason Wang <jasowang@redhat.com>,
	Jia Liu <proljc@gmail.com>,
	Stafford Horne <shorne@gmail.com>,
	Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>,
	Nicholas Piggin <npiggin@gmail.com>,
	Daniel Henrique Barboza <danielhb413@gmail.com>,
	David Gibson <david@gibson.dropbear.id.au>,
	Harsh Prateek Bora <harshpb@linux.ibm.com>,
	Bin Meng <bin.meng@windriver.com>,
	Palmer Dabbelt <palmer@dabbelt.com>,
	Weiwei Li <liwei1518@gmail.com>,
	Liu Zhiwei <zhiwei_liu@linux.alibaba.com>,
	Halil Pasic <pasic@linux.ibm.com>,
	Christian Borntraeger <borntraeger@linux.ibm.com>,
	Eric Farman <farman@linux.ibm.com>,
	David Hildenbrand <david@redhat.com>,
	Ilya Leoshkevich <iii@linux.ibm.com>,
	Yoshinori Sato <ysato@users.sourceforge.jp>,
	Magnus Damm <magnus.damm@gmail.com>,
	Artyom Tarasenko <atar4qemu@gmail.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Anthony Perard <anthony.perard@citrix.com>,
	Paul Durrant <paul@xen.org>,
	Max Filippov <jcmvbkbc@gmail.com>,
	qemu-arm@nongnu.org,
	qemu-ppc@nongnu.org,
	qemu-riscv@nongnu.org,
	qemu-s390x@nongnu.org,
	xen-devel@lists.xenproject.org,
	David Woodhouse <dwmw@amazon.co.uk>,
	Thomas Huth <thuth@redhat.com>
Subject: [PATCH v4 44/47] net: remove qemu_check_nic_model()
Date: Fri, 26 Jan 2024 17:25:21 +0000
Message-ID: <20240126173228.394202-45-dwmw2@infradead.org>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20240126173228.394202-1-dwmw2@infradead.org>
References: <20240126173228.394202-1-dwmw2@infradead.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Sender: David Woodhouse <dwmw2@infradead.org>
X-SRS-Rewrite: SMTP reverse-path rewritten from <dwmw2@infradead.org> by casper.infradead.org. See http://www.infradead.org/rpr.html

From: David Woodhouse <dwmw@amazon.co.uk>

There are no callers of this function any more, as they have all been
converted to qemu_{create,configure}_nic_device().

Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
Reviewed-by: Thomas Huth <thuth@redhat.com>
---
 include/net/net.h |  1 -
 net/net.c         | 13 -------------
 2 files changed, 14 deletions(-)

diff --git a/include/net/net.h b/include/net/net.h
index 728ca965af..00ee1af7ab 100644
--- a/include/net/net.h
+++ b/include/net/net.h
@@ -204,7 +204,6 @@ int qemu_set_vnet_le(NetClientState *nc, bool is_le);
 int qemu_set_vnet_be(NetClientState *nc, bool is_be);
 void qemu_macaddr_default_if_unset(MACAddr *macaddr);
 int qemu_show_nic_models(const char *arg, const char *const *models);
-void qemu_check_nic_model(NICInfo *nd, const char *model);
 int qemu_find_nic_model(NICInfo *nd, const char * const *models,
                         const char *default_model);
 /**
diff --git a/net/net.c b/net/net.c
index 4651b3f443..ffd4b42d5a 100644
--- a/net/net.c
+++ b/net/net.c
@@ -992,19 +992,6 @@ int qemu_show_nic_models(const char *arg, const char *const *models)
     return 1;
 }
 
-void qemu_check_nic_model(NICInfo *nd, const char *model)
-{
-    const char *models[2];
-
-    models[0] = model;
-    models[1] = NULL;
-
-    if (qemu_show_nic_models(nd->model, models))
-        exit(0);
-    if (qemu_find_nic_model(nd, models, model) < 0)
-        exit(1);
-}
-
 int qemu_find_nic_model(NICInfo *nd, const char * const *models,
                         const char *default_model)
 {
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Fri Jan 26 17:33:15 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 26 Jan 2024 17:33:15 +0000
Received: from list by lists.xenproject.org with outflank-mailman.672263.1046130 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTQ4p-0006rF-E4; Fri, 26 Jan 2024 17:33:15 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 672263.1046130; Fri, 26 Jan 2024 17:33:15 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTQ4o-0006p6-Uv; Fri, 26 Jan 2024 17:33:14 +0000
Received: by outflank-mailman (input) for mailman id 672263;
 Fri, 26 Jan 2024 17:33:13 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=bPDA=JE=casper.srs.infradead.org=BATV+7caeb094913322f6f00d+7460+infradead.org+dwmw2@srs-se1.protection.inumbo.net>)
 id 1rTQ4n-0004Zo-OZ
 for xen-devel@lists.xenproject.org; Fri, 26 Jan 2024 17:33:13 +0000
Received: from casper.infradead.org (casper.infradead.org
 [2001:8b0:10b:1236::1])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id fad9be61-bc70-11ee-8a43-1f161083a0e0;
 Fri, 26 Jan 2024 18:33:12 +0100 (CET)
Received: from [2001:8b0:10b:1::ebe] (helo=i7.infradead.org)
 by casper.infradead.org with esmtpsa (Exim 4.97.1 #2 (Red Hat Linux))
 id 1rTQ48-0000000EKUN-0LUU; Fri, 26 Jan 2024 17:32:33 +0000
Received: from dwoodhou by i7.infradead.org with local (Exim 4.97.1 #2 (Red
 Hat Linux)) id 1rTQ48-00000001emE-3Z4R;
 Fri, 26 Jan 2024 17:32:32 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
X-Inumbo-ID: fad9be61-bc70-11ee-8a43-1f161083a0e0
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=infradead.org; s=casper.20170209; h=Sender:Content-Transfer-Encoding:
	MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:
	Reply-To:Content-Type:Content-ID:Content-Description;
	bh=968FfiIx6xTKDJXJoXrAu14UZ4c3HMbAlGKHEl9nV4w=; b=bNQnqA3ia7NcIR0I5BM/faxrjJ
	RQqKOP7UTwn5CM9MqTVYRdLSglntBNT1+Z68wtYVQ7M8VFbMOFa1J93IPv9G68D/pDzlNGz94M7PL
	SzvEchfk5/xjMAVTF7DHS0PLexbY4t+WWLG9PZtrybRwqGKrSoBh/Lul/vXiRihNOHQHlNlohKXQ9
	T/fhztZnc7WkSOt5GX74uYVaN8OuIcY0Sb27IROMoMObE+SpKfgEGnquCB/z5KPmf4hH0nQXFrd4X
	tr/O6dIBs7YD3ciKL3bKUq1lFsPuHBoSByMvikAkKk1UhcbGGUyw34CnpG+P6SAUG2ByunA3YlEu7
	1F1CeXwQ==;
From: David Woodhouse <dwmw2@infradead.org>
To: qemu-devel@nongnu.org
Cc: Richard Henderson <richard.henderson@linaro.org>,
	Beniamino Galvani <b.galvani@gmail.com>,
	Peter Maydell <peter.maydell@linaro.org>,
	Strahinja Jankovic <strahinja.p.jankovic@gmail.com>,
	Niek Linnenbank <nieklinnenbank@gmail.com>,
	=?UTF-8?q?C=C3=A9dric=20Le=20Goater?= <clg@kaod.org>,
	Andrew Jeffery <andrew@codeconstruct.com.au>,
	Joel Stanley <joel@jms.id.au>,
	Igor Mitsyanko <i.mitsyanko@gmail.com>,
	Jean-Christophe Dubois <jcd@tribudubois.net>,
	Andrey Smirnov <andrew.smirnov@gmail.com>,
	=?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= <philmd@linaro.org>,
	Rob Herring <robh@kernel.org>,
	Subbaraya Sundeep <sundeep.lkml@gmail.com>,
	Jan Kiszka <jan.kiszka@web.de>,
	Tyrone Ting <kfting@nuvoton.com>,
	Hao Wu <wuhaotsh@google.com>,
	Radoslaw Biernacki <rad@semihalf.com>,
	Leif Lindholm <quic_llindhol@quicinc.com>,
	Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org>,
	"Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
	Alistair Francis <alistair@alistair23.me>,
	Helge Deller <deller@gmx.de>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Eduardo Habkost <eduardo@habkost.net>,
	"Michael S. Tsirkin" <mst@redhat.com>,
	Marcel Apfelbaum <marcel.apfelbaum@gmail.com>,
	Song Gao <gaosong@loongson.cn>,
	Thomas Huth <huth@tuxfamily.org>,
	Laurent Vivier <laurent@vivier.eu>,
	Huacai Chen <chenhuacai@kernel.org>,
	Jiaxun Yang <jiaxun.yang@flygoat.com>,
	=?UTF-8?q?Herv=C3=A9=20Poussineau?= <hpoussin@reactos.org>,
	Aleksandar Rikalo <aleksandar.rikalo@syrmia.com>,
	Aurelien Jarno <aurelien@aurel32.net>,
	Jason Wang <jasowang@redhat.com>,
	Jia Liu <proljc@gmail.com>,
	Stafford Horne <shorne@gmail.com>,
	Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>,
	Nicholas Piggin <npiggin@gmail.com>,
	Daniel Henrique Barboza <danielhb413@gmail.com>,
	David Gibson <david@gibson.dropbear.id.au>,
	Harsh Prateek Bora <harshpb@linux.ibm.com>,
	Bin Meng <bin.meng@windriver.com>,
	Palmer Dabbelt <palmer@dabbelt.com>,
	Weiwei Li <liwei1518@gmail.com>,
	Liu Zhiwei <zhiwei_liu@linux.alibaba.com>,
	Halil Pasic <pasic@linux.ibm.com>,
	Christian Borntraeger <borntraeger@linux.ibm.com>,
	Eric Farman <farman@linux.ibm.com>,
	David Hildenbrand <david@redhat.com>,
	Ilya Leoshkevich <iii@linux.ibm.com>,
	Yoshinori Sato <ysato@users.sourceforge.jp>,
	Magnus Damm <magnus.damm@gmail.com>,
	Artyom Tarasenko <atar4qemu@gmail.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Anthony Perard <anthony.perard@citrix.com>,
	Paul Durrant <paul@xen.org>,
	Max Filippov <jcmvbkbc@gmail.com>,
	qemu-arm@nongnu.org,
	qemu-ppc@nongnu.org,
	qemu-riscv@nongnu.org,
	qemu-s390x@nongnu.org,
	xen-devel@lists.xenproject.org,
	David Woodhouse <dwmw@amazon.co.uk>,
	Thomas Huth <thuth@redhat.com>
Subject: [PATCH v4 21/47] hw/arm/allwinner: use qemu_configure_nic_device()
Date: Fri, 26 Jan 2024 17:24:58 +0000
Message-ID: <20240126173228.394202-22-dwmw2@infradead.org>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20240126173228.394202-1-dwmw2@infradead.org>
References: <20240126173228.394202-1-dwmw2@infradead.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Sender: David Woodhouse <dwmw2@infradead.org>
X-SRS-Rewrite: SMTP reverse-path rewritten from <dwmw2@infradead.org> by casper.infradead.org. See http://www.infradead.org/rpr.html

From: David Woodhouse <dwmw@amazon.co.uk>

Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
Reviewed-by: Thomas Huth <thuth@redhat.com>
---
 hw/arm/allwinner-a10.c |  6 +-----
 hw/arm/allwinner-h3.c  |  6 +-----
 hw/arm/allwinner-r40.c | 27 ++-------------------------
 3 files changed, 4 insertions(+), 35 deletions(-)

diff --git a/hw/arm/allwinner-a10.c b/hw/arm/allwinner-a10.c
index b0ea3f7f66..57f52871ec 100644
--- a/hw/arm/allwinner-a10.c
+++ b/hw/arm/allwinner-a10.c
@@ -142,11 +142,7 @@ static void aw_a10_realize(DeviceState *dev, Error **errp)
     sysbus_realize(SYS_BUS_DEVICE(&s->dramc), &error_fatal);
     sysbus_mmio_map(SYS_BUS_DEVICE(&s->dramc), 0, AW_A10_DRAMC_BASE);
 
-    /* FIXME use qdev NIC properties instead of nd_table[] */
-    if (nd_table[0].used) {
-        qemu_check_nic_model(&nd_table[0], TYPE_AW_EMAC);
-        qdev_set_nic_properties(DEVICE(&s->emac), &nd_table[0]);
-    }
+    qemu_configure_nic_device(DEVICE(&s->emac), true, NULL);
     if (!sysbus_realize(SYS_BUS_DEVICE(&s->emac), errp)) {
         return;
     }
diff --git a/hw/arm/allwinner-h3.c b/hw/arm/allwinner-h3.c
index f05afddf7e..4f102ad082 100644
--- a/hw/arm/allwinner-h3.c
+++ b/hw/arm/allwinner-h3.c
@@ -369,11 +369,7 @@ static void allwinner_h3_realize(DeviceState *dev, Error **errp)
                               "sd-bus");
 
     /* EMAC */
-    /* FIXME use qdev NIC properties instead of nd_table[] */
-    if (nd_table[0].used) {
-        qemu_check_nic_model(&nd_table[0], TYPE_AW_SUN8I_EMAC);
-        qdev_set_nic_properties(DEVICE(&s->emac), &nd_table[0]);
-    }
+    qemu_configure_nic_device(DEVICE(&s->emac), true, NULL);
     object_property_set_link(OBJECT(&s->emac), "dma-memory",
                              OBJECT(get_system_memory()), &error_fatal);
     sysbus_realize(SYS_BUS_DEVICE(&s->emac), &error_fatal);
diff --git a/hw/arm/allwinner-r40.c b/hw/arm/allwinner-r40.c
index a0d367c60d..4d5661b014 100644
--- a/hw/arm/allwinner-r40.c
+++ b/hw/arm/allwinner-r40.c
@@ -294,7 +294,6 @@ static void allwinner_r40_init(Object *obj)
 
 static void allwinner_r40_realize(DeviceState *dev, Error **errp)
 {
-    const char *r40_nic_models[] = { "gmac", "emac", NULL };
     AwR40State *s = AW_R40(dev);
 
     /* CPUs */
@@ -454,31 +453,8 @@ static void allwinner_r40_realize(DeviceState *dev, Error **errp)
     sysbus_mmio_map(SYS_BUS_DEVICE(&s->dramc), 2,
                     s->memmap[AW_R40_DEV_DRAMPHY]);
 
-    /* nic support gmac and emac */
-    for (int i = 0; i < ARRAY_SIZE(r40_nic_models) - 1; i++) {
-        NICInfo *nic = &nd_table[i];
-
-        if (!nic->used) {
-            continue;
-        }
-        if (qemu_show_nic_models(nic->model, r40_nic_models)) {
-            exit(0);
-        }
-
-        switch (qemu_find_nic_model(nic, r40_nic_models, r40_nic_models[0])) {
-        case 0: /* gmac */
-            qdev_set_nic_properties(DEVICE(&s->gmac), nic);
-            break;
-        case 1: /* emac */
-            qdev_set_nic_properties(DEVICE(&s->emac), nic);
-            break;
-        default:
-            exit(1);
-            break;
-        }
-    }
-
     /* GMAC */
+    qemu_configure_nic_device(DEVICE(&s->gmac), true, "gmac");
     object_property_set_link(OBJECT(&s->gmac), "dma-memory",
                                      OBJECT(get_system_memory()), &error_fatal);
     sysbus_realize(SYS_BUS_DEVICE(&s->gmac), &error_fatal);
@@ -487,6 +463,7 @@ static void allwinner_r40_realize(DeviceState *dev, Error **errp)
                        qdev_get_gpio_in(DEVICE(&s->gic), AW_R40_GIC_SPI_GMAC));
 
     /* EMAC */
+    qemu_configure_nic_device(DEVICE(&s->emac), true, "emac");
     sysbus_realize(SYS_BUS_DEVICE(&s->emac), &error_fatal);
     sysbus_mmio_map(SYS_BUS_DEVICE(&s->emac), 0, s->memmap[AW_R40_DEV_EMAC]);
     sysbus_connect_irq(SYS_BUS_DEVICE(&s->emac), 0,
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Fri Jan 26 17:33:16 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 26 Jan 2024 17:33:16 +0000
Received: from list by lists.xenproject.org with outflank-mailman.672262.1046133 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTQ4q-0006zO-6i; Fri, 26 Jan 2024 17:33:16 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 672262.1046133; Fri, 26 Jan 2024 17:33:16 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTQ4p-0006vy-Kc; Fri, 26 Jan 2024 17:33:15 +0000
Received: by outflank-mailman (input) for mailman id 672262;
 Fri, 26 Jan 2024 17:33:13 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=bPDA=JE=casper.srs.infradead.org=BATV+7caeb094913322f6f00d+7460+infradead.org+dwmw2@srs-se1.protection.inumbo.net>)
 id 1rTQ4n-0004m7-O4
 for xen-devel@lists.xenproject.org; Fri, 26 Jan 2024 17:33:13 +0000
Received: from casper.infradead.org (casper.infradead.org
 [2001:8b0:10b:1236::1])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id f9d0fc83-bc70-11ee-98f5-efadbce2ee36;
 Fri, 26 Jan 2024 18:33:11 +0100 (CET)
Received: from [2001:8b0:10b:1::ebe] (helo=i7.infradead.org)
 by casper.infradead.org with esmtpsa (Exim 4.97.1 #2 (Red Hat Linux))
 id 1rTQ48-0000000EKUb-3N6A; Fri, 26 Jan 2024 17:32:34 +0000
Received: from dwoodhou by i7.infradead.org with local (Exim 4.97.1 #2 (Red
 Hat Linux)) id 1rTQ49-00000001enH-2xlx;
 Fri, 26 Jan 2024 17:32:33 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
X-Inumbo-ID: f9d0fc83-bc70-11ee-98f5-efadbce2ee36
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=infradead.org; s=casper.20170209; h=Sender:Content-Transfer-Encoding:
	MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:
	Reply-To:Content-Type:Content-ID:Content-Description;
	bh=qZJ5znInl8VUzkg42vOEqkv8s7zoSUtbb4o7syIWshQ=; b=T/KFiNP0VoNy+dRDdUz85cVgqC
	d/xsD7bmL6yqgL5czKhzPlpCBdR4zMQ2tljn2inOKua253TIuXA5aleREh4omvZTb3lt5AE6FlLt4
	FD5YLv2vx2lzct3UExbehtseqGJJrJBDqR6snT8lfXZhph3EQ38ZvTVzWpVFSvIXAjBrno+N4mQCE
	6R/ethD97GGg1zQZEHFRl8VgWn0E79TwsyXQQe/4MlkzaLtMe8t2jP8icT93CfLgznQuh9IE9U1bp
	NolX4B5CEASRxWu1Ajg1aLzK3NEbQVSQQe61d6hOrsipftq5dBATnnjcGmpap6RNwzZrUayjzYQhh
	Y1TBCnVw==;
From: David Woodhouse <dwmw2@infradead.org>
To: qemu-devel@nongnu.org
Cc: Richard Henderson <richard.henderson@linaro.org>,
	Beniamino Galvani <b.galvani@gmail.com>,
	Peter Maydell <peter.maydell@linaro.org>,
	Strahinja Jankovic <strahinja.p.jankovic@gmail.com>,
	Niek Linnenbank <nieklinnenbank@gmail.com>,
	=?UTF-8?q?C=C3=A9dric=20Le=20Goater?= <clg@kaod.org>,
	Andrew Jeffery <andrew@codeconstruct.com.au>,
	Joel Stanley <joel@jms.id.au>,
	Igor Mitsyanko <i.mitsyanko@gmail.com>,
	Jean-Christophe Dubois <jcd@tribudubois.net>,
	Andrey Smirnov <andrew.smirnov@gmail.com>,
	=?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= <philmd@linaro.org>,
	Rob Herring <robh@kernel.org>,
	Subbaraya Sundeep <sundeep.lkml@gmail.com>,
	Jan Kiszka <jan.kiszka@web.de>,
	Tyrone Ting <kfting@nuvoton.com>,
	Hao Wu <wuhaotsh@google.com>,
	Radoslaw Biernacki <rad@semihalf.com>,
	Leif Lindholm <quic_llindhol@quicinc.com>,
	Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org>,
	"Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
	Alistair Francis <alistair@alistair23.me>,
	Helge Deller <deller@gmx.de>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Eduardo Habkost <eduardo@habkost.net>,
	"Michael S. Tsirkin" <mst@redhat.com>,
	Marcel Apfelbaum <marcel.apfelbaum@gmail.com>,
	Song Gao <gaosong@loongson.cn>,
	Thomas Huth <huth@tuxfamily.org>,
	Laurent Vivier <laurent@vivier.eu>,
	Huacai Chen <chenhuacai@kernel.org>,
	Jiaxun Yang <jiaxun.yang@flygoat.com>,
	=?UTF-8?q?Herv=C3=A9=20Poussineau?= <hpoussin@reactos.org>,
	Aleksandar Rikalo <aleksandar.rikalo@syrmia.com>,
	Aurelien Jarno <aurelien@aurel32.net>,
	Jason Wang <jasowang@redhat.com>,
	Jia Liu <proljc@gmail.com>,
	Stafford Horne <shorne@gmail.com>,
	Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>,
	Nicholas Piggin <npiggin@gmail.com>,
	Daniel Henrique Barboza <danielhb413@gmail.com>,
	David Gibson <david@gibson.dropbear.id.au>,
	Harsh Prateek Bora <harshpb@linux.ibm.com>,
	Bin Meng <bin.meng@windriver.com>,
	Palmer Dabbelt <palmer@dabbelt.com>,
	Weiwei Li <liwei1518@gmail.com>,
	Liu Zhiwei <zhiwei_liu@linux.alibaba.com>,
	Halil Pasic <pasic@linux.ibm.com>,
	Christian Borntraeger <borntraeger@linux.ibm.com>,
	Eric Farman <farman@linux.ibm.com>,
	David Hildenbrand <david@redhat.com>,
	Ilya Leoshkevich <iii@linux.ibm.com>,
	Yoshinori Sato <ysato@users.sourceforge.jp>,
	Magnus Damm <magnus.damm@gmail.com>,
	Artyom Tarasenko <atar4qemu@gmail.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Anthony Perard <anthony.perard@citrix.com>,
	Paul Durrant <paul@xen.org>,
	Max Filippov <jcmvbkbc@gmail.com>,
	qemu-arm@nongnu.org,
	qemu-ppc@nongnu.org,
	qemu-riscv@nongnu.org,
	qemu-s390x@nongnu.org,
	xen-devel@lists.xenproject.org,
	David Woodhouse <dwmw@amazon.co.uk>,
	Thomas Huth <thuth@redhat.com>
Subject: [PATCH v4 31/47] hw/net/etraxfs-eth: use qemu_configure_nic_device()
Date: Fri, 26 Jan 2024 17:25:08 +0000
Message-ID: <20240126173228.394202-32-dwmw2@infradead.org>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20240126173228.394202-1-dwmw2@infradead.org>
References: <20240126173228.394202-1-dwmw2@infradead.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Sender: David Woodhouse <dwmw2@infradead.org>
X-SRS-Rewrite: SMTP reverse-path rewritten from <dwmw2@infradead.org> by casper.infradead.org. See http://www.infradead.org/rpr.html

From: David Woodhouse <dwmw@amazon.co.uk>

Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
Reviewed-by: Thomas Huth <thuth@redhat.com>
---
 hw/cris/axis_dev88.c      | 9 ++++-----
 hw/net/etraxfs_eth.c      | 5 ++---
 include/hw/cris/etraxfs.h | 2 +-
 3 files changed, 7 insertions(+), 9 deletions(-)

diff --git a/hw/cris/axis_dev88.c b/hw/cris/axis_dev88.c
index d82050d927..5556634921 100644
--- a/hw/cris/axis_dev88.c
+++ b/hw/cris/axis_dev88.c
@@ -308,15 +308,14 @@ void axisdev88_init(MachineState *machine)
 
     /* Add the two ethernet blocks.  */
     dma_eth = g_malloc0(sizeof dma_eth[0] * 4); /* Allocate 4 channels.  */
-    etraxfs_eth_init(&nd_table[0], 0x30034000, 1, &dma_eth[0], &dma_eth[1]);
-    if (nb_nics > 1) {
-        etraxfs_eth_init(&nd_table[1], 0x30036000, 2, &dma_eth[2], &dma_eth[3]);
-    }
 
+    etraxfs_eth_init(0x30034000, 1, &dma_eth[0], &dma_eth[1]);
     /* The DMA Connector block is missing, hardwire things for now.  */
     etraxfs_dmac_connect_client(etraxfs_dmac, 0, &dma_eth[0]);
     etraxfs_dmac_connect_client(etraxfs_dmac, 1, &dma_eth[1]);
-    if (nb_nics > 1) {
+
+    if (qemu_find_nic_info("etraxfs-eth", true, "fseth")) {
+        etraxfs_eth_init(0x30036000, 2, &dma_eth[2], &dma_eth[3]);
         etraxfs_dmac_connect_client(etraxfs_dmac, 6, &dma_eth[2]);
         etraxfs_dmac_connect_client(etraxfs_dmac, 7, &dma_eth[3]);
     }
diff --git a/hw/net/etraxfs_eth.c b/hw/net/etraxfs_eth.c
index ba57a978d1..5faf20c782 100644
--- a/hw/net/etraxfs_eth.c
+++ b/hw/net/etraxfs_eth.c
@@ -647,15 +647,14 @@ static void etraxfs_eth_class_init(ObjectClass *klass, void *data)
 
 /* Instantiate an ETRAXFS Ethernet MAC.  */
 DeviceState *
-etraxfs_eth_init(NICInfo *nd, hwaddr base, int phyaddr,
+etraxfs_eth_init(hwaddr base, int phyaddr,
                  struct etraxfs_dma_client *dma_out,
                  struct etraxfs_dma_client *dma_in)
 {
     DeviceState *dev;
-    qemu_check_nic_model(nd, "fseth");
 
     dev = qdev_new("etraxfs-eth");
-    qdev_set_nic_properties(dev, nd);
+    qemu_configure_nic_device(dev, true, "fseth");
     qdev_prop_set_uint32(dev, "phyaddr", phyaddr);
 
     /*
diff --git a/include/hw/cris/etraxfs.h b/include/hw/cris/etraxfs.h
index 467b529dc0..012c4e9974 100644
--- a/include/hw/cris/etraxfs.h
+++ b/include/hw/cris/etraxfs.h
@@ -31,7 +31,7 @@
 #include "hw/sysbus.h"
 #include "qapi/error.h"
 
-DeviceState *etraxfs_eth_init(NICInfo *nd, hwaddr base, int phyaddr,
+DeviceState *etraxfs_eth_init(hwaddr base, int phyaddr,
                               struct etraxfs_dma_client *dma_out,
                               struct etraxfs_dma_client *dma_in);
 
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Fri Jan 26 17:33:17 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 26 Jan 2024 17:33:17 +0000
Received: from list by lists.xenproject.org with outflank-mailman.672264.1046141 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTQ4r-0007EJ-DL; Fri, 26 Jan 2024 17:33:17 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 672264.1046141; Fri, 26 Jan 2024 17:33:17 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTQ4q-0007Af-Tz; Fri, 26 Jan 2024 17:33:16 +0000
Received: by outflank-mailman (input) for mailman id 672264;
 Fri, 26 Jan 2024 17:33:14 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=bPDA=JE=casper.srs.infradead.org=BATV+7caeb094913322f6f00d+7460+infradead.org+dwmw2@srs-se1.protection.inumbo.net>)
 id 1rTQ4o-0004m7-OA
 for xen-devel@lists.xenproject.org; Fri, 26 Jan 2024 17:33:14 +0000
Received: from casper.infradead.org (casper.infradead.org
 [2001:8b0:10b:1236::1])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id f9d107ad-bc70-11ee-98f5-efadbce2ee36;
 Fri, 26 Jan 2024 18:33:11 +0100 (CET)
Received: from [2001:8b0:10b:1::ebe] (helo=i7.infradead.org)
 by casper.infradead.org with esmtpsa (Exim 4.97.1 #2 (Red Hat Linux))
 id 1rTQ48-0000000EKUJ-0gas; Fri, 26 Jan 2024 17:32:33 +0000
Received: from dwoodhou by i7.infradead.org with local (Exim 4.97.1 #2 (Red
 Hat Linux)) id 1rTQ47-00000001elM-0UcP;
 Fri, 26 Jan 2024 17:32:31 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
X-Inumbo-ID: f9d107ad-bc70-11ee-98f5-efadbce2ee36
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=infradead.org; s=casper.20170209; h=Sender:Content-Transfer-Encoding:
	Content-Type:MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:
	To:From:Reply-To:Content-ID:Content-Description;
	bh=OdxzKrubfC0ZaYycLGHWamGW/MHu3AZpCkbdAJlgMyI=; b=oLyNvxBjpIrjGRRU3R48knb+RJ
	HGX4tMfXsp1iRB4pIZ7NBDTIhTAKm3Wo8Qzxg8b3FXNy6G7bp4/3Q1XhZA1UniQnrDX5a+wRDU7oO
	i2hMEaCbTfbVfs5a2hotsQ/cQ3lhYHtDc8VutRmH0woi0XpvA5OZXZcwfAOsQZS36JeB/nPaSRk8R
	p/dMQqB8K5HxG0sI12RIlxWxy7Dvn6HPOeeAFRlVTUSbyMlAYrtkETpxYLgzemRWOvBEah7v4QXLu
	6tvEyocuOhm7RAexy7qTfKmD0eZBrGjSXZI1q9ZWcVufyRe+Fx7dTOpo5V87/ZEgk/ajitS8bQXGL
	mh3Xldiw==;
From: David Woodhouse <dwmw2@infradead.org>
To: qemu-devel@nongnu.org
Cc: Richard Henderson <richard.henderson@linaro.org>,
	Beniamino Galvani <b.galvani@gmail.com>,
	Peter Maydell <peter.maydell@linaro.org>,
	Strahinja Jankovic <strahinja.p.jankovic@gmail.com>,
	Niek Linnenbank <nieklinnenbank@gmail.com>,
	=?UTF-8?q?C=C3=A9dric=20Le=20Goater?= <clg@kaod.org>,
	Andrew Jeffery <andrew@codeconstruct.com.au>,
	Joel Stanley <joel@jms.id.au>,
	Igor Mitsyanko <i.mitsyanko@gmail.com>,
	Jean-Christophe Dubois <jcd@tribudubois.net>,
	Andrey Smirnov <andrew.smirnov@gmail.com>,
	=?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= <philmd@linaro.org>,
	Rob Herring <robh@kernel.org>,
	Subbaraya Sundeep <sundeep.lkml@gmail.com>,
	Jan Kiszka <jan.kiszka@web.de>,
	Tyrone Ting <kfting@nuvoton.com>,
	Hao Wu <wuhaotsh@google.com>,
	Radoslaw Biernacki <rad@semihalf.com>,
	Leif Lindholm <quic_llindhol@quicinc.com>,
	Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org>,
	"Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
	Alistair Francis <alistair@alistair23.me>,
	Helge Deller <deller@gmx.de>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Eduardo Habkost <eduardo@habkost.net>,
	"Michael S. Tsirkin" <mst@redhat.com>,
	Marcel Apfelbaum <marcel.apfelbaum@gmail.com>,
	Song Gao <gaosong@loongson.cn>,
	Thomas Huth <huth@tuxfamily.org>,
	Laurent Vivier <laurent@vivier.eu>,
	Huacai Chen <chenhuacai@kernel.org>,
	Jiaxun Yang <jiaxun.yang@flygoat.com>,
	=?UTF-8?q?Herv=C3=A9=20Poussineau?= <hpoussin@reactos.org>,
	Aleksandar Rikalo <aleksandar.rikalo@syrmia.com>,
	Aurelien Jarno <aurelien@aurel32.net>,
	Jason Wang <jasowang@redhat.com>,
	Jia Liu <proljc@gmail.com>,
	Stafford Horne <shorne@gmail.com>,
	Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>,
	Nicholas Piggin <npiggin@gmail.com>,
	Daniel Henrique Barboza <danielhb413@gmail.com>,
	David Gibson <david@gibson.dropbear.id.au>,
	Harsh Prateek Bora <harshpb@linux.ibm.com>,
	Bin Meng <bin.meng@windriver.com>,
	Palmer Dabbelt <palmer@dabbelt.com>,
	Weiwei Li <liwei1518@gmail.com>,
	Liu Zhiwei <zhiwei_liu@linux.alibaba.com>,
	Halil Pasic <pasic@linux.ibm.com>,
	Christian Borntraeger <borntraeger@linux.ibm.com>,
	Eric Farman <farman@linux.ibm.com>,
	David Hildenbrand <david@redhat.com>,
	Ilya Leoshkevich <iii@linux.ibm.com>,
	Yoshinori Sato <ysato@users.sourceforge.jp>,
	Magnus Damm <magnus.damm@gmail.com>,
	Artyom Tarasenko <atar4qemu@gmail.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Anthony Perard <anthony.perard@citrix.com>,
	Paul Durrant <paul@xen.org>,
	Max Filippov <jcmvbkbc@gmail.com>,
	qemu-arm@nongnu.org,
	qemu-ppc@nongnu.org,
	qemu-riscv@nongnu.org,
	qemu-s390x@nongnu.org,
	xen-devel@lists.xenproject.org,
	David Woodhouse <dwmw@amazon.co.uk>,
	Thomas Huth <thuth@redhat.com>
Subject: [PATCH v4 03/47] net: add qemu_create_nic_bus_devices()
Date: Fri, 26 Jan 2024 17:24:40 +0000
Message-ID: <20240126173228.394202-4-dwmw2@infradead.org>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20240126173228.394202-1-dwmw2@infradead.org>
References: <20240126173228.394202-1-dwmw2@infradead.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Sender: David Woodhouse <dwmw2@infradead.org>
X-SRS-Rewrite: SMTP reverse-path rewritten from <dwmw2@infradead.org> by casper.infradead.org. See http://www.infradead.org/rpr.html

From: David Woodhouse <dwmw@amazon.co.uk>

This will instantiate any NICs which live on a given bus type. Each bus
is allowed *one* substitution (for PCI it's virtio → virtio-net-pci, for
Xen it's xen → xen-net-device; no point in overengineering it unless we
actually want more).

Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
Reviewed-by: Paul Durrant <paul@xen.org>
Reviewed-by: Thomas Huth <thuth@redhat.com>
---
 include/net/net.h | 22 ++++++++++++++++++++
 net/net.c         | 53 +++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 75 insertions(+)

diff --git a/include/net/net.h b/include/net/net.h
index dff1872b4d..728ca965af 100644
--- a/include/net/net.h
+++ b/include/net/net.h
@@ -248,6 +248,28 @@ bool qemu_configure_nic_device(DeviceState *dev, bool match_default,
  */
 DeviceState *qemu_create_nic_device(const char *typename, bool match_default,
                                     const char *alias);
+
+/*
+ * qemu_create_nic_bus_devices: Create configured NIC devices for a given bus
+ * @bus: Bus on which to create devices
+ * @parent_type: Object type for devices to be created (e.g. TYPE_PCI_DEVICE)
+ * @default_model: Object type name for default NIC model (or %NULL)
+ * @alias: Additional model string to replace, for user convenience
+ * @alias_target: Actual object type name to be used in place of @alias
+ *
+ * Instantiate dynamic NICs on a given bus, typically a PCI bus. This scans
+ * for available NIC configurations which either specify a model which is
+ * a child type of @parent_type, or which do not specify a model when
+ * @default_model is non-NULL. Each device is instantiated on the given @bus.
+ *
+ * A single substitution is supported, e.g. "xen" → "xen-net-device" for the
+ * Xen bus, or "virtio" → "virtio-net-pci" for PCI. This allows the user to
+ * specify a more understandable "model=" parameter on the command line, not
+ * only the real object typename.
+ */
+void qemu_create_nic_bus_devices(BusState *bus, const char *parent_type,
+                                 const char *default_model,
+                                 const char *alias, const char *alias_target);
 void print_net_client(Monitor *mon, NetClientState *nc);
 void net_socket_rs_init(SocketReadState *rs,
                         SocketReadStateFinalize *finalize,
diff --git a/net/net.c b/net/net.c
index 962904eaef..4651b3f443 100644
--- a/net/net.c
+++ b/net/net.c
@@ -1223,6 +1223,59 @@ DeviceState *qemu_create_nic_device(const char *typename, bool match_default,
     return dev;
 }
 
+void qemu_create_nic_bus_devices(BusState *bus, const char *parent_type,
+                                 const char *default_model,
+                                 const char *alias, const char *alias_target)
+{
+    GPtrArray *nic_models = qemu_get_nic_models(parent_type);
+    const char *model;
+    DeviceState *dev;
+    NICInfo *nd;
+    int i;
+
+    if (nic_model_help) {
+        if (alias_target) {
+            add_nic_model_help(alias_target, alias);
+        }
+        for (i = 0; i < nic_models->len - 1; i++) {
+            add_nic_model_help(nic_models->pdata[i], NULL);
+        }
+    }
+
+    /* Drop the NULL terminator which would make g_str_equal() unhappy */
+    nic_models->len--;
+
+    for (i = 0; i < nb_nics; i++) {
+        nd = &nd_table[i];
+
+        if (!nd->used || nd->instantiated) {
+            continue;
+        }
+
+        model = nd->model ? nd->model : default_model;
+        if (!model) {
+            continue;
+        }
+
+        /* Each bus type is allowed *one* substitution */
+        if (g_str_equal(model, alias)) {
+            model = alias_target;
+        }
+
+        if (!g_ptr_array_find_with_equal_func(nic_models, model,
+                                              g_str_equal, NULL)) {
+            /* This NIC does not live on this bus. */
+            continue;
+        }
+
+        dev = qdev_new(model);
+        qdev_set_nic_properties(dev, nd);
+        qdev_realize_and_unref(dev, bus, &error_fatal);
+    }
+
+    g_ptr_array_free(nic_models, true);
+}
+
 static int (* const net_client_init_fun[NET_CLIENT_DRIVER__MAX])(
     const Netdev *netdev,
     const char *name,
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Fri Jan 26 17:33:19 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 26 Jan 2024 17:33:19 +0000
Received: from list by lists.xenproject.org with outflank-mailman.672266.1046152 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTQ4t-0007Xd-Cb; Fri, 26 Jan 2024 17:33:19 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 672266.1046152; Fri, 26 Jan 2024 17:33:19 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTQ4s-0007VB-De; Fri, 26 Jan 2024 17:33:18 +0000
Received: by outflank-mailman (input) for mailman id 672266;
 Fri, 26 Jan 2024 17:33:16 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=bPDA=JE=casper.srs.infradead.org=BATV+7caeb094913322f6f00d+7460+infradead.org+dwmw2@srs-se1.protection.inumbo.net>)
 id 1rTQ4p-0004Zo-Og
 for xen-devel@lists.xenproject.org; Fri, 26 Jan 2024 17:33:15 +0000
Received: from casper.infradead.org (casper.infradead.org
 [2001:8b0:10b:1236::1])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id fbd50071-bc70-11ee-8a43-1f161083a0e0;
 Fri, 26 Jan 2024 18:33:14 +0100 (CET)
Received: from [2001:8b0:10b:1::ebe] (helo=i7.infradead.org)
 by casper.infradead.org with esmtpsa (Exim 4.97.1 #2 (Red Hat Linux))
 id 1rTQ48-0000000EKUM-0cz8; Fri, 26 Jan 2024 17:32:33 +0000
Received: from dwoodhou by i7.infradead.org with local (Exim 4.97.1 #2 (Red
 Hat Linux)) id 1rTQ48-00000001em8-2k7B;
 Fri, 26 Jan 2024 17:32:32 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
X-Inumbo-ID: fbd50071-bc70-11ee-8a43-1f161083a0e0
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=infradead.org; s=casper.20170209; h=Sender:Content-Transfer-Encoding:
	MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:
	Reply-To:Content-Type:Content-ID:Content-Description;
	bh=OKm118/V6gxksMAtfnJ8Ufap3iGAGMSmq6JcPfpdm/s=; b=KmE2/C36b2yD/mi6cnVRZu3qWq
	Z9xfuHuEdCxG75ekpPyLnVv/AlHYqa969PePpng1ceqCLcMC8mgXmzOrtlrKXJm1KswPmlJI5eifu
	oipdb0z1La5GuH8+oHn9mjdomJ5IUBu60G8KM01RZt/B0sIfTloIyYVpC3tjXgTCIAoX1Pchpmxka
	rOLsWIqM9B/ix0CPnKtCsTUV7Z0EK+MUFpl1jLMkD3kvc8VlpDOLWGaB6cHmhzCDOJuxHrO1khvR2
	SLamE78r6mAXsis1twc0Wv36LXwO15tXzS4FXPZJRsnPiSf97GDvzE+N6gNLcHFJkw3VhzKt6Px3/
	Rt5/rmYQ==;
From: David Woodhouse <dwmw2@infradead.org>
To: qemu-devel@nongnu.org
Cc: Richard Henderson <richard.henderson@linaro.org>,
	Beniamino Galvani <b.galvani@gmail.com>,
	Peter Maydell <peter.maydell@linaro.org>,
	Strahinja Jankovic <strahinja.p.jankovic@gmail.com>,
	Niek Linnenbank <nieklinnenbank@gmail.com>,
	=?UTF-8?q?C=C3=A9dric=20Le=20Goater?= <clg@kaod.org>,
	Andrew Jeffery <andrew@codeconstruct.com.au>,
	Joel Stanley <joel@jms.id.au>,
	Igor Mitsyanko <i.mitsyanko@gmail.com>,
	Jean-Christophe Dubois <jcd@tribudubois.net>,
	Andrey Smirnov <andrew.smirnov@gmail.com>,
	=?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= <philmd@linaro.org>,
	Rob Herring <robh@kernel.org>,
	Subbaraya Sundeep <sundeep.lkml@gmail.com>,
	Jan Kiszka <jan.kiszka@web.de>,
	Tyrone Ting <kfting@nuvoton.com>,
	Hao Wu <wuhaotsh@google.com>,
	Radoslaw Biernacki <rad@semihalf.com>,
	Leif Lindholm <quic_llindhol@quicinc.com>,
	Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org>,
	"Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
	Alistair Francis <alistair@alistair23.me>,
	Helge Deller <deller@gmx.de>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Eduardo Habkost <eduardo@habkost.net>,
	"Michael S. Tsirkin" <mst@redhat.com>,
	Marcel Apfelbaum <marcel.apfelbaum@gmail.com>,
	Song Gao <gaosong@loongson.cn>,
	Thomas Huth <huth@tuxfamily.org>,
	Laurent Vivier <laurent@vivier.eu>,
	Huacai Chen <chenhuacai@kernel.org>,
	Jiaxun Yang <jiaxun.yang@flygoat.com>,
	=?UTF-8?q?Herv=C3=A9=20Poussineau?= <hpoussin@reactos.org>,
	Aleksandar Rikalo <aleksandar.rikalo@syrmia.com>,
	Aurelien Jarno <aurelien@aurel32.net>,
	Jason Wang <jasowang@redhat.com>,
	Jia Liu <proljc@gmail.com>,
	Stafford Horne <shorne@gmail.com>,
	Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>,
	Nicholas Piggin <npiggin@gmail.com>,
	Daniel Henrique Barboza <danielhb413@gmail.com>,
	David Gibson <david@gibson.dropbear.id.au>,
	Harsh Prateek Bora <harshpb@linux.ibm.com>,
	Bin Meng <bin.meng@windriver.com>,
	Palmer Dabbelt <palmer@dabbelt.com>,
	Weiwei Li <liwei1518@gmail.com>,
	Liu Zhiwei <zhiwei_liu@linux.alibaba.com>,
	Halil Pasic <pasic@linux.ibm.com>,
	Christian Borntraeger <borntraeger@linux.ibm.com>,
	Eric Farman <farman@linux.ibm.com>,
	David Hildenbrand <david@redhat.com>,
	Ilya Leoshkevich <iii@linux.ibm.com>,
	Yoshinori Sato <ysato@users.sourceforge.jp>,
	Magnus Damm <magnus.damm@gmail.com>,
	Artyom Tarasenko <atar4qemu@gmail.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Anthony Perard <anthony.perard@citrix.com>,
	Paul Durrant <paul@xen.org>,
	Max Filippov <jcmvbkbc@gmail.com>,
	qemu-arm@nongnu.org,
	qemu-ppc@nongnu.org,
	qemu-riscv@nongnu.org,
	qemu-s390x@nongnu.org,
	xen-devel@lists.xenproject.org,
	David Woodhouse <dwmw@amazon.co.uk>,
	Thomas Huth <thuth@redhat.com>
Subject: [PATCH v4 19/47] hw/sparc64/sun4u: use pci_init_nic_devices()
Date: Fri, 26 Jan 2024 17:24:56 +0000
Message-ID: <20240126173228.394202-20-dwmw2@infradead.org>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20240126173228.394202-1-dwmw2@infradead.org>
References: <20240126173228.394202-1-dwmw2@infradead.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Sender: David Woodhouse <dwmw2@infradead.org>
X-SRS-Rewrite: SMTP reverse-path rewritten from <dwmw2@infradead.org> by casper.infradead.org. See http://www.infradead.org/rpr.html

From: David Woodhouse <dwmw@amazon.co.uk>

The first sunhme NIC gets placed a function 1 on slot 1 of PCI bus A,
and the rest are dynamically assigned on PCI bus B.

Previously, any PCI NIC would get the special treatment purely by
virtue of being first in the list.

Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
Reviewed-by: Thomas Huth <thuth@redhat.com>
---
 hw/sparc64/sun4u.c | 27 ++++++++-------------------
 1 file changed, 8 insertions(+), 19 deletions(-)

diff --git a/hw/sparc64/sun4u.c b/hw/sparc64/sun4u.c
index 24d53bf5fd..eda9b58a21 100644
--- a/hw/sparc64/sun4u.c
+++ b/hw/sparc64/sun4u.c
@@ -639,29 +639,18 @@ static void sun4uv_init(MemoryRegion *address_space_mem,
 
     memset(&macaddr, 0, sizeof(MACAddr));
     onboard_nic = false;
-    for (i = 0; i < nb_nics; i++) {
-        PCIBus *bus;
-        nd = &nd_table[i];
-
-        if (!nd->model || strcmp(nd->model, mc->default_nic) == 0) {
-            if (!onboard_nic) {
-                pci_dev = pci_new_multifunction(PCI_DEVFN(1, 1), mc->default_nic);
-                bus = pci_busA;
-                memcpy(&macaddr, &nd->macaddr.a, sizeof(MACAddr));
-                onboard_nic = true;
-            } else {
-                pci_dev = pci_new(-1, mc->default_nic);
-                bus = pci_busB;
-            }
-        } else {
-            pci_dev = pci_new(-1, nd->model);
-            bus = pci_busB;
-        }
 
+    nd = qemu_find_nic_info(mc->default_nic, true, NULL);
+    if (nd) {
+        pci_dev = pci_new_multifunction(PCI_DEVFN(1, 1), mc->default_nic);
         dev = &pci_dev->qdev;
         qdev_set_nic_properties(dev, nd);
-        pci_realize_and_unref(pci_dev, bus, &error_fatal);
+        pci_realize_and_unref(pci_dev, pci_busA, &error_fatal);
+
+        memcpy(&macaddr, &nd->macaddr.a, sizeof(MACAddr));
+        onboard_nic = true;
     }
+    pci_init_nic_devices(pci_busB, mc->default_nic);
 
     /* If we don't have an onboard NIC, grab a default MAC address so that
      * we have a valid machine id */
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Fri Jan 26 17:33:21 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 26 Jan 2024 17:33:21 +0000
Received: from list by lists.xenproject.org with outflank-mailman.672268.1046166 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTQ4v-00085k-Ij; Fri, 26 Jan 2024 17:33:21 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 672268.1046166; Fri, 26 Jan 2024 17:33:21 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTQ4u-00084e-Ry; Fri, 26 Jan 2024 17:33:20 +0000
Received: by outflank-mailman (input) for mailman id 672268;
 Fri, 26 Jan 2024 17:33:17 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=bPDA=JE=casper.srs.infradead.org=BATV+7caeb094913322f6f00d+7460+infradead.org+dwmw2@srs-se1.protection.inumbo.net>)
 id 1rTQ4q-0004m7-Pe
 for xen-devel@lists.xenproject.org; Fri, 26 Jan 2024 17:33:16 +0000
Received: from casper.infradead.org (casper.infradead.org
 [2001:8b0:10b:1236::1])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id fac52c5b-bc70-11ee-98f5-efadbce2ee36;
 Fri, 26 Jan 2024 18:33:12 +0100 (CET)
Received: from [2001:8b0:10b:1::ebe] (helo=i7.infradead.org)
 by casper.infradead.org with esmtpsa (Exim 4.97.1 #2 (Red Hat Linux))
 id 1rTQ48-0000000EKUD-0Nui; Fri, 26 Jan 2024 17:32:33 +0000
Received: from dwoodhou by i7.infradead.org with local (Exim 4.97.1 #2 (Red
 Hat Linux)) id 1rTQ47-00000001elP-0s6u;
 Fri, 26 Jan 2024 17:32:31 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
X-Inumbo-ID: fac52c5b-bc70-11ee-98f5-efadbce2ee36
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=infradead.org; s=casper.20170209; h=Sender:Content-Transfer-Encoding:
	MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:
	Reply-To:Content-Type:Content-ID:Content-Description;
	bh=dpw3DRxnhjEAefg4lwR8FOrDMECu9upnm/FS6/8ckXY=; b=fcayOa0iWbqDEHNxZlGuRUJL2w
	0JKCO+FJTsWwbo/cfqijlQ+xNgj/5/AoUMJOU1tlkhX6bGXyazCIMz3S4LnH6a1LuevndBu04RYQN
	ZSkdaWwblbzRAd7koYHK2BqsY433GBbtt9lW2HyT4+sv9mrxklTvkmPHTzxDjEq3IVrUhEW8aEBge
	u6IifDVEAY+gySCYT7JD5aKX3b5xIALCk0v5zMBJ0q76ZBXld+g2ijBxEBIFdGNQK/9jdT65oGl2h
	toLcreIdanS2TGeX1tGH+oHCBKal+7xokz5KxgxrGZSfCCSkOfjeMlGLwUQEmlTFRqePxTrwY1Agx
	6mowQODg==;
From: David Woodhouse <dwmw2@infradead.org>
To: qemu-devel@nongnu.org
Cc: Richard Henderson <richard.henderson@linaro.org>,
	Beniamino Galvani <b.galvani@gmail.com>,
	Peter Maydell <peter.maydell@linaro.org>,
	Strahinja Jankovic <strahinja.p.jankovic@gmail.com>,
	Niek Linnenbank <nieklinnenbank@gmail.com>,
	=?UTF-8?q?C=C3=A9dric=20Le=20Goater?= <clg@kaod.org>,
	Andrew Jeffery <andrew@codeconstruct.com.au>,
	Joel Stanley <joel@jms.id.au>,
	Igor Mitsyanko <i.mitsyanko@gmail.com>,
	Jean-Christophe Dubois <jcd@tribudubois.net>,
	Andrey Smirnov <andrew.smirnov@gmail.com>,
	=?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= <philmd@linaro.org>,
	Rob Herring <robh@kernel.org>,
	Subbaraya Sundeep <sundeep.lkml@gmail.com>,
	Jan Kiszka <jan.kiszka@web.de>,
	Tyrone Ting <kfting@nuvoton.com>,
	Hao Wu <wuhaotsh@google.com>,
	Radoslaw Biernacki <rad@semihalf.com>,
	Leif Lindholm <quic_llindhol@quicinc.com>,
	Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org>,
	"Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
	Alistair Francis <alistair@alistair23.me>,
	Helge Deller <deller@gmx.de>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Eduardo Habkost <eduardo@habkost.net>,
	"Michael S. Tsirkin" <mst@redhat.com>,
	Marcel Apfelbaum <marcel.apfelbaum@gmail.com>,
	Song Gao <gaosong@loongson.cn>,
	Thomas Huth <huth@tuxfamily.org>,
	Laurent Vivier <laurent@vivier.eu>,
	Huacai Chen <chenhuacai@kernel.org>,
	Jiaxun Yang <jiaxun.yang@flygoat.com>,
	=?UTF-8?q?Herv=C3=A9=20Poussineau?= <hpoussin@reactos.org>,
	Aleksandar Rikalo <aleksandar.rikalo@syrmia.com>,
	Aurelien Jarno <aurelien@aurel32.net>,
	Jason Wang <jasowang@redhat.com>,
	Jia Liu <proljc@gmail.com>,
	Stafford Horne <shorne@gmail.com>,
	Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>,
	Nicholas Piggin <npiggin@gmail.com>,
	Daniel Henrique Barboza <danielhb413@gmail.com>,
	David Gibson <david@gibson.dropbear.id.au>,
	Harsh Prateek Bora <harshpb@linux.ibm.com>,
	Bin Meng <bin.meng@windriver.com>,
	Palmer Dabbelt <palmer@dabbelt.com>,
	Weiwei Li <liwei1518@gmail.com>,
	Liu Zhiwei <zhiwei_liu@linux.alibaba.com>,
	Halil Pasic <pasic@linux.ibm.com>,
	Christian Borntraeger <borntraeger@linux.ibm.com>,
	Eric Farman <farman@linux.ibm.com>,
	David Hildenbrand <david@redhat.com>,
	Ilya Leoshkevich <iii@linux.ibm.com>,
	Yoshinori Sato <ysato@users.sourceforge.jp>,
	Magnus Damm <magnus.damm@gmail.com>,
	Artyom Tarasenko <atar4qemu@gmail.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Anthony Perard <anthony.perard@citrix.com>,
	Paul Durrant <paul@xen.org>,
	Max Filippov <jcmvbkbc@gmail.com>,
	qemu-arm@nongnu.org,
	qemu-ppc@nongnu.org,
	qemu-riscv@nongnu.org,
	qemu-s390x@nongnu.org,
	xen-devel@lists.xenproject.org,
	David Woodhouse <dwmw@amazon.co.uk>
Subject: [PATCH v4 04/47] hw/pci: add pci_init_nic_devices(), pci_init_nic_in_slot()
Date: Fri, 26 Jan 2024 17:24:41 +0000
Message-ID: <20240126173228.394202-5-dwmw2@infradead.org>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20240126173228.394202-1-dwmw2@infradead.org>
References: <20240126173228.394202-1-dwmw2@infradead.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Sender: David Woodhouse <dwmw2@infradead.org>
X-SRS-Rewrite: SMTP reverse-path rewritten from <dwmw2@infradead.org> by casper.infradead.org. See http://www.infradead.org/rpr.html

From: David Woodhouse <dwmw@amazon.co.uk>

The loop over nd_table[] to add PCI NICs is repeated in quite a few
places. Add a helper function to do it.

Some platforms also try to instantiate a specific model in a specific
slot, to match the real hardware. Add pci_init_nic_in_slot() for that
purpose.

Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
Reviewed-by: Paul Durrant <paul@xen.org>
---
 hw/pci/pci.c         | 45 ++++++++++++++++++++++++++++++++++++++++++++
 include/hw/pci/pci.h |  4 +++-
 2 files changed, 48 insertions(+), 1 deletion(-)

diff --git a/hw/pci/pci.c b/hw/pci/pci.c
index 76080af580..5849606f66 100644
--- a/hw/pci/pci.c
+++ b/hw/pci/pci.c
@@ -1925,6 +1925,51 @@ PCIDevice *pci_nic_init_nofail(NICInfo *nd, PCIBus *rootbus,
     return pci_dev;
 }
 
+void pci_init_nic_devices(PCIBus *bus, const char *default_model)
+{
+    qemu_create_nic_bus_devices(&bus->qbus, TYPE_PCI_DEVICE, default_model,
+                                "virtio", "virtio-net-pci");
+}
+
+bool pci_init_nic_in_slot(PCIBus *rootbus, const char *model,
+                          const char *alias, const char *devaddr)
+{
+    NICInfo *nd = qemu_find_nic_info(model, true, alias);
+    int dom, busnr, devfn;
+    PCIDevice *pci_dev;
+    unsigned slot;
+    PCIBus *bus;
+
+    if (!nd) {
+        return false;
+    }
+
+    if (!devaddr || pci_parse_devaddr(devaddr, &dom, &busnr, &slot, NULL) < 0) {
+        error_report("Invalid PCI device address %s for device %s",
+                     devaddr, model);
+        exit(1);
+    }
+
+    if (dom != 0) {
+        error_report("No support for non-zero PCI domains");
+        exit(1);
+    }
+
+    devfn = PCI_DEVFN(slot, 0);
+
+    bus = pci_find_bus_nr(rootbus, busnr);
+    if (!bus) {
+        error_report("Invalid PCI device address %s for device %s",
+                     devaddr, model);
+        exit(1);
+    }
+
+    pci_dev = pci_new(devfn, model);
+    qdev_set_nic_properties(&pci_dev->qdev, nd);
+    pci_realize_and_unref(pci_dev, bus, &error_fatal);
+    return true;
+}
+
 PCIDevice *pci_vga_init(PCIBus *bus)
 {
     vga_interface_created = true;
diff --git a/include/hw/pci/pci.h b/include/hw/pci/pci.h
index fa6313aabc..6ff0b95a02 100644
--- a/include/hw/pci/pci.h
+++ b/include/hw/pci/pci.h
@@ -317,7 +317,9 @@ void pci_device_reset(PCIDevice *dev);
 PCIDevice *pci_nic_init_nofail(NICInfo *nd, PCIBus *rootbus,
                                const char *default_model,
                                const char *default_devaddr);
-
+void pci_init_nic_devices(PCIBus *bus, const char *default_model);
+bool pci_init_nic_in_slot(PCIBus *rootbus, const char *default_model,
+                          const char *alias, const char *devaddr);
 PCIDevice *pci_vga_init(PCIBus *bus);
 
 static inline PCIBus *pci_get_bus(const PCIDevice *dev)
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Fri Jan 26 17:33:23 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 26 Jan 2024 17:33:23 +0000
Received: from list by lists.xenproject.org with outflank-mailman.672269.1046174 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTQ4w-0008IA-Kv; Fri, 26 Jan 2024 17:33:22 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 672269.1046174; Fri, 26 Jan 2024 17:33:22 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTQ4v-0008Bg-JE; Fri, 26 Jan 2024 17:33:21 +0000
Received: by outflank-mailman (input) for mailman id 672269;
 Fri, 26 Jan 2024 17:33:17 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=bPDA=JE=casper.srs.infradead.org=BATV+7caeb094913322f6f00d+7460+infradead.org+dwmw2@srs-se1.protection.inumbo.net>)
 id 1rTQ4q-0004Zo-Ol
 for xen-devel@lists.xenproject.org; Fri, 26 Jan 2024 17:33:16 +0000
Received: from casper.infradead.org (casper.infradead.org
 [2001:8b0:10b:1236::1])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id fc765063-bc70-11ee-8a43-1f161083a0e0;
 Fri, 26 Jan 2024 18:33:15 +0100 (CET)
Received: from [2001:8b0:10b:1::ebe] (helo=i7.infradead.org)
 by casper.infradead.org with esmtpsa (Exim 4.97.1 #2 (Red Hat Linux))
 id 1rTQ48-0000000EKUF-0ioQ; Fri, 26 Jan 2024 17:32:33 +0000
Received: from dwoodhou by i7.infradead.org with local (Exim 4.97.1 #2 (Red
 Hat Linux)) id 1rTQ47-00000001elk-3gRW;
 Fri, 26 Jan 2024 17:32:31 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
X-Inumbo-ID: fc765063-bc70-11ee-8a43-1f161083a0e0
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=infradead.org; s=casper.20170209; h=Sender:Content-Transfer-Encoding:
	MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:
	Reply-To:Content-Type:Content-ID:Content-Description;
	bh=afu5SeBMsL4uhfrFSeYnQUM9L+/AYnp0sc/n0TEsd5I=; b=JPPoM4+wmZbFx4D6QsefgVWDEE
	iX1pYleRxR+m/h7DfP2kkR4qT+di7aQ3livFRQOSqXrKtpvIxfjsKEje4W73LpCXtmX01BzTpK2sU
	/GeWdwBH3OFFv6Z7QnjEzUuHeYqS8xZHORx0bb9LeoMRG7Wd/COOm+4cg6+6+/LEQt/SKV55dvyz+
	XqY9UNEjm/QuL5olYH/9USfl6oyIP/bt/G0k0r8vzYMlTG2IBqZxPQeWX8Jsh/hwQDlvJyHSKL9gK
	fOmRa2pOigXXOYjNJmt8NQudyjEbnVY2sjw3ebx79HiJfaMN9BJfy0pB2Z5vqvF6zx/9/XOVw2271
	kvrJRxQQ==;
From: David Woodhouse <dwmw2@infradead.org>
To: qemu-devel@nongnu.org
Cc: Richard Henderson <richard.henderson@linaro.org>,
	Beniamino Galvani <b.galvani@gmail.com>,
	Peter Maydell <peter.maydell@linaro.org>,
	Strahinja Jankovic <strahinja.p.jankovic@gmail.com>,
	Niek Linnenbank <nieklinnenbank@gmail.com>,
	=?UTF-8?q?C=C3=A9dric=20Le=20Goater?= <clg@kaod.org>,
	Andrew Jeffery <andrew@codeconstruct.com.au>,
	Joel Stanley <joel@jms.id.au>,
	Igor Mitsyanko <i.mitsyanko@gmail.com>,
	Jean-Christophe Dubois <jcd@tribudubois.net>,
	Andrey Smirnov <andrew.smirnov@gmail.com>,
	=?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= <philmd@linaro.org>,
	Rob Herring <robh@kernel.org>,
	Subbaraya Sundeep <sundeep.lkml@gmail.com>,
	Jan Kiszka <jan.kiszka@web.de>,
	Tyrone Ting <kfting@nuvoton.com>,
	Hao Wu <wuhaotsh@google.com>,
	Radoslaw Biernacki <rad@semihalf.com>,
	Leif Lindholm <quic_llindhol@quicinc.com>,
	Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org>,
	"Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
	Alistair Francis <alistair@alistair23.me>,
	Helge Deller <deller@gmx.de>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Eduardo Habkost <eduardo@habkost.net>,
	"Michael S. Tsirkin" <mst@redhat.com>,
	Marcel Apfelbaum <marcel.apfelbaum@gmail.com>,
	Song Gao <gaosong@loongson.cn>,
	Thomas Huth <huth@tuxfamily.org>,
	Laurent Vivier <laurent@vivier.eu>,
	Huacai Chen <chenhuacai@kernel.org>,
	Jiaxun Yang <jiaxun.yang@flygoat.com>,
	=?UTF-8?q?Herv=C3=A9=20Poussineau?= <hpoussin@reactos.org>,
	Aleksandar Rikalo <aleksandar.rikalo@syrmia.com>,
	Aurelien Jarno <aurelien@aurel32.net>,
	Jason Wang <jasowang@redhat.com>,
	Jia Liu <proljc@gmail.com>,
	Stafford Horne <shorne@gmail.com>,
	Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>,
	Nicholas Piggin <npiggin@gmail.com>,
	Daniel Henrique Barboza <danielhb413@gmail.com>,
	David Gibson <david@gibson.dropbear.id.au>,
	Harsh Prateek Bora <harshpb@linux.ibm.com>,
	Bin Meng <bin.meng@windriver.com>,
	Palmer Dabbelt <palmer@dabbelt.com>,
	Weiwei Li <liwei1518@gmail.com>,
	Liu Zhiwei <zhiwei_liu@linux.alibaba.com>,
	Halil Pasic <pasic@linux.ibm.com>,
	Christian Borntraeger <borntraeger@linux.ibm.com>,
	Eric Farman <farman@linux.ibm.com>,
	David Hildenbrand <david@redhat.com>,
	Ilya Leoshkevich <iii@linux.ibm.com>,
	Yoshinori Sato <ysato@users.sourceforge.jp>,
	Magnus Damm <magnus.damm@gmail.com>,
	Artyom Tarasenko <atar4qemu@gmail.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Anthony Perard <anthony.perard@citrix.com>,
	Paul Durrant <paul@xen.org>,
	Max Filippov <jcmvbkbc@gmail.com>,
	qemu-arm@nongnu.org,
	qemu-ppc@nongnu.org,
	qemu-riscv@nongnu.org,
	qemu-s390x@nongnu.org,
	xen-devel@lists.xenproject.org,
	David Woodhouse <dwmw@amazon.co.uk>
Subject: [PATCH v4 11/47] hw/loongarch: use pci_init_nic_devices()
Date: Fri, 26 Jan 2024 17:24:48 +0000
Message-ID: <20240126173228.394202-12-dwmw2@infradead.org>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20240126173228.394202-1-dwmw2@infradead.org>
References: <20240126173228.394202-1-dwmw2@infradead.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Sender: David Woodhouse <dwmw2@infradead.org>
X-SRS-Rewrite: SMTP reverse-path rewritten from <dwmw2@infradead.org> by casper.infradead.org. See http://www.infradead.org/rpr.html

From: David Woodhouse <dwmw@amazon.co.uk>

Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
Reviewed-by: Song Gao <gaosong@loongson.cn>
---
 hw/loongarch/virt.c | 4 +---
 1 file changed, 1 insertion(+), 3 deletions(-)

diff --git a/hw/loongarch/virt.c b/hw/loongarch/virt.c
index c9a680e61a..0ad7d8c887 100644
--- a/hw/loongarch/virt.c
+++ b/hw/loongarch/virt.c
@@ -504,9 +504,7 @@ static void loongarch_devices_init(DeviceState *pch_pic, LoongArchMachineState *
     fdt_add_uart_node(lams);
 
     /* Network init */
-    for (i = 0; i < nb_nics; i++) {
-        pci_nic_init_nofail(&nd_table[i], pci_bus, mc->default_nic, NULL);
-    }
+    pci_init_nic_devices(pci_bus, mc->default_nic);
 
     /*
      * There are some invalid guest memory access.
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Fri Jan 26 17:33:24 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 26 Jan 2024 17:33:24 +0000
Received: from list by lists.xenproject.org with outflank-mailman.672271.1046180 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTQ4x-00006Q-Nu; Fri, 26 Jan 2024 17:33:23 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 672271.1046180; Fri, 26 Jan 2024 17:33:23 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTQ4w-0008TD-UT; Fri, 26 Jan 2024 17:33:22 +0000
Received: by outflank-mailman (input) for mailman id 672271;
 Fri, 26 Jan 2024 17:33:18 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=bPDA=JE=casper.srs.infradead.org=BATV+7caeb094913322f6f00d+7460+infradead.org+dwmw2@srs-se1.protection.inumbo.net>)
 id 1rTQ4r-0004Zo-P2
 for xen-devel@lists.xenproject.org; Fri, 26 Jan 2024 17:33:17 +0000
Received: from casper.infradead.org (casper.infradead.org
 [2001:8b0:10b:1236::1])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id fd31a7b1-bc70-11ee-8a43-1f161083a0e0;
 Fri, 26 Jan 2024 18:33:16 +0100 (CET)
Received: from [2001:8b0:10b:1::ebe] (helo=i7.infradead.org)
 by casper.infradead.org with esmtpsa (Exim 4.97.1 #2 (Red Hat Linux))
 id 1rTQ49-0000000EKV4-2g9X; Fri, 26 Jan 2024 17:32:35 +0000
Received: from dwoodhou by i7.infradead.org with local (Exim 4.97.1 #2 (Red
 Hat Linux)) id 1rTQ4A-00000001eo0-1h7n;
 Fri, 26 Jan 2024 17:32:34 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
X-Inumbo-ID: fd31a7b1-bc70-11ee-8a43-1f161083a0e0
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=infradead.org; s=casper.20170209; h=Sender:Content-Transfer-Encoding:
	MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:
	Reply-To:Content-Type:Content-ID:Content-Description;
	bh=WRBuYa2rIuMOyCdfUaeq0aJt9tQyMaQzZk9uum9u4Yo=; b=pbgctkJkh9eaXYKWWUsW2nOnb5
	l3/8L/atRueV3pL+D+HzG7RHpQ+feZYCUdhPXZkdz2PfjHkDUCs9WxKoRw9ZI0wWNtnrluWAMaMoD
	OJ+N457sv2U7r8YHNyD0xMQ10uyPuk8lzBA04v7nt8pOF9VZIx6qjrTXKgkMpb0OedmfZ94Jd5O7h
	LYLz0sU8o9SGAzI6dm1AVi6h3b60IiNuLpJcHAGvvR8fOturCflELq4U38XAW3XovsNMiuh9jZ8L8
	b/pu5DMAf4ZGcH95ztIBGI2cN+TD9Q+Jm6vW0/1944EDl9T/wUt4fPE1kFkxTLnSyda/hvWlXeU0p
	z8rNRsyA==;
From: David Woodhouse <dwmw2@infradead.org>
To: qemu-devel@nongnu.org
Cc: Richard Henderson <richard.henderson@linaro.org>,
	Beniamino Galvani <b.galvani@gmail.com>,
	Peter Maydell <peter.maydell@linaro.org>,
	Strahinja Jankovic <strahinja.p.jankovic@gmail.com>,
	Niek Linnenbank <nieklinnenbank@gmail.com>,
	=?UTF-8?q?C=C3=A9dric=20Le=20Goater?= <clg@kaod.org>,
	Andrew Jeffery <andrew@codeconstruct.com.au>,
	Joel Stanley <joel@jms.id.au>,
	Igor Mitsyanko <i.mitsyanko@gmail.com>,
	Jean-Christophe Dubois <jcd@tribudubois.net>,
	Andrey Smirnov <andrew.smirnov@gmail.com>,
	=?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= <philmd@linaro.org>,
	Rob Herring <robh@kernel.org>,
	Subbaraya Sundeep <sundeep.lkml@gmail.com>,
	Jan Kiszka <jan.kiszka@web.de>,
	Tyrone Ting <kfting@nuvoton.com>,
	Hao Wu <wuhaotsh@google.com>,
	Radoslaw Biernacki <rad@semihalf.com>,
	Leif Lindholm <quic_llindhol@quicinc.com>,
	Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org>,
	"Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
	Alistair Francis <alistair@alistair23.me>,
	Helge Deller <deller@gmx.de>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Eduardo Habkost <eduardo@habkost.net>,
	"Michael S. Tsirkin" <mst@redhat.com>,
	Marcel Apfelbaum <marcel.apfelbaum@gmail.com>,
	Song Gao <gaosong@loongson.cn>,
	Thomas Huth <huth@tuxfamily.org>,
	Laurent Vivier <laurent@vivier.eu>,
	Huacai Chen <chenhuacai@kernel.org>,
	Jiaxun Yang <jiaxun.yang@flygoat.com>,
	=?UTF-8?q?Herv=C3=A9=20Poussineau?= <hpoussin@reactos.org>,
	Aleksandar Rikalo <aleksandar.rikalo@syrmia.com>,
	Aurelien Jarno <aurelien@aurel32.net>,
	Jason Wang <jasowang@redhat.com>,
	Jia Liu <proljc@gmail.com>,
	Stafford Horne <shorne@gmail.com>,
	Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>,
	Nicholas Piggin <npiggin@gmail.com>,
	Daniel Henrique Barboza <danielhb413@gmail.com>,
	David Gibson <david@gibson.dropbear.id.au>,
	Harsh Prateek Bora <harshpb@linux.ibm.com>,
	Bin Meng <bin.meng@windriver.com>,
	Palmer Dabbelt <palmer@dabbelt.com>,
	Weiwei Li <liwei1518@gmail.com>,
	Liu Zhiwei <zhiwei_liu@linux.alibaba.com>,
	Halil Pasic <pasic@linux.ibm.com>,
	Christian Borntraeger <borntraeger@linux.ibm.com>,
	Eric Farman <farman@linux.ibm.com>,
	David Hildenbrand <david@redhat.com>,
	Ilya Leoshkevich <iii@linux.ibm.com>,
	Yoshinori Sato <ysato@users.sourceforge.jp>,
	Magnus Damm <magnus.damm@gmail.com>,
	Artyom Tarasenko <atar4qemu@gmail.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Anthony Perard <anthony.perard@citrix.com>,
	Paul Durrant <paul@xen.org>,
	Max Filippov <jcmvbkbc@gmail.com>,
	qemu-arm@nongnu.org,
	qemu-ppc@nongnu.org,
	qemu-riscv@nongnu.org,
	qemu-s390x@nongnu.org,
	xen-devel@lists.xenproject.org,
	David Woodhouse <dwmw@amazon.co.uk>
Subject: [PATCH v4 39/47] hw/openrisc/openrisc_sim: use qemu_create_nic_device()
Date: Fri, 26 Jan 2024 17:25:16 +0000
Message-ID: <20240126173228.394202-40-dwmw2@infradead.org>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20240126173228.394202-1-dwmw2@infradead.org>
References: <20240126173228.394202-1-dwmw2@infradead.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Sender: David Woodhouse <dwmw2@infradead.org>
X-SRS-Rewrite: SMTP reverse-path rewritten from <dwmw2@infradead.org> by casper.infradead.org. See http://www.infradead.org/rpr.html

From: David Woodhouse <dwmw@amazon.co.uk>

Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
---
 hw/openrisc/openrisc_sim.c | 18 +++++++++---------
 1 file changed, 9 insertions(+), 9 deletions(-)

diff --git a/hw/openrisc/openrisc_sim.c b/hw/openrisc/openrisc_sim.c
index 35da123aef..bffd6f721f 100644
--- a/hw/openrisc/openrisc_sim.c
+++ b/hw/openrisc/openrisc_sim.c
@@ -170,7 +170,7 @@ static void openrisc_create_fdt(Or1ksimState *state,
 
 static void openrisc_sim_net_init(Or1ksimState *state, hwaddr base, hwaddr size,
                                   int num_cpus, OpenRISCCPU *cpus[],
-                                  int irq_pin, NICInfo *nd)
+                                  int irq_pin)
 {
     void *fdt = state->fdt;
     DeviceState *dev;
@@ -178,8 +178,10 @@ static void openrisc_sim_net_init(Or1ksimState *state, hwaddr base, hwaddr size,
     char *nodename;
     int i;
 
-    dev = qdev_new("open_eth");
-    qdev_set_nic_properties(dev, nd);
+    dev = qemu_create_nic_device("open_eth", true, NULL);
+    if (!dev) {
+        return;
+    }
 
     s = SYS_BUS_DEVICE(dev);
     sysbus_realize_and_unref(s, &error_fatal);
@@ -313,12 +315,10 @@ static void openrisc_sim_init(MachineState *machine)
     openrisc_create_fdt(state, or1ksim_memmap, smp_cpus, machine->ram_size,
                         machine->kernel_cmdline);
 
-    if (nd_table[0].used) {
-        openrisc_sim_net_init(state, or1ksim_memmap[OR1KSIM_ETHOC].base,
-                              or1ksim_memmap[OR1KSIM_ETHOC].size,
-                              smp_cpus, cpus,
-                              OR1KSIM_ETHOC_IRQ, nd_table);
-    }
+    openrisc_sim_net_init(state, or1ksim_memmap[OR1KSIM_ETHOC].base,
+                          or1ksim_memmap[OR1KSIM_ETHOC].size,
+                          smp_cpus, cpus,
+                          OR1KSIM_ETHOC_IRQ);
 
     if (smp_cpus > 1) {
         openrisc_sim_ompic_init(state, or1ksim_memmap[OR1KSIM_OMPIC].base,
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Fri Jan 26 17:37:28 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 26 Jan 2024 17:37:28 +0000
Received: from list by lists.xenproject.org with outflank-mailman.672288.1046209 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTQ8s-00060I-BZ; Fri, 26 Jan 2024 17:37:26 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 672288.1046209; Fri, 26 Jan 2024 17:37:26 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTQ8s-00060B-8h; Fri, 26 Jan 2024 17:37:26 +0000
Received: by outflank-mailman (input) for mailman id 672288;
 Fri, 26 Jan 2024 17:37:25 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=46+y=JE=desiato.srs.infradead.org=BATV+5cc348fc898a3f56ac6c+7460+infradead.org+dwmw2@srs-se1.protection.inumbo.net>)
 id 1rTQ57-0004m7-RZ
 for xen-devel@lists.xenproject.org; Fri, 26 Jan 2024 17:33:33 +0000
Received: from desiato.infradead.org (desiato.infradead.org
 [2001:8b0:10b:1:d65d:64ff:fe57:4e05])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 02c9f821-bc71-11ee-98f5-efadbce2ee36;
 Fri, 26 Jan 2024 18:33:26 +0100 (CET)
Received: from [2001:8b0:10b:1::ebe] (helo=i7.infradead.org)
 by desiato.infradead.org with esmtpsa (Exim 4.97.1 #2 (Red Hat Linux))
 id 1rTQ4A-000000069Uq-1wWa; Fri, 26 Jan 2024 17:32:35 +0000
Received: from dwoodhou by i7.infradead.org with local (Exim 4.97.1 #2 (Red
 Hat Linux)) id 1rTQ49-00000001en7-2QRW;
 Fri, 26 Jan 2024 17:32:33 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
X-Inumbo-ID: 02c9f821-bc71-11ee-98f5-efadbce2ee36
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=infradead.org; s=desiato.20200630; h=Sender:Content-Transfer-Encoding:
	MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:
	Reply-To:Content-Type:Content-ID:Content-Description;
	bh=2ubrN4oKcp3fWb93Q0tjoR8b5IYsXS/VmIXPL3JTbJk=; b=LrceqBBJSdW/kK/qN2+T1UJNGV
	4eZmzXeUHz6Kps4XzYzbrBC0LgblYD6SGxfeMGn58XRmCgYkVf3tccHfaeokAEgtUMrqb6it+Loct
	IDk/xgzOoJigKtO63j2PTv7SRnb62odAgexzeluCbu2ug/9XC5+ZMkkJ7rUoN2iD2WssBa0Lhab7h
	O3aLibpVcUl2Owr8afgU7qs8BpHHyz4P9qAwTRzDqpyQ+a4ZqX68MTH49ItWG2xHklmttlWhipwGL
	N/P6vzPo67Xu6rGBer+iYv8GvwxrwsSsXb3AtbPaz3T3lM2kmrh2AKLfFm/9IiZo8iQUGEkBJMJQC
	NXJhGxxw==;
From: David Woodhouse <dwmw2@infradead.org>
To: qemu-devel@nongnu.org
Cc: Richard Henderson <richard.henderson@linaro.org>,
	Beniamino Galvani <b.galvani@gmail.com>,
	Peter Maydell <peter.maydell@linaro.org>,
	Strahinja Jankovic <strahinja.p.jankovic@gmail.com>,
	Niek Linnenbank <nieklinnenbank@gmail.com>,
	=?UTF-8?q?C=C3=A9dric=20Le=20Goater?= <clg@kaod.org>,
	Andrew Jeffery <andrew@codeconstruct.com.au>,
	Joel Stanley <joel@jms.id.au>,
	Igor Mitsyanko <i.mitsyanko@gmail.com>,
	Jean-Christophe Dubois <jcd@tribudubois.net>,
	Andrey Smirnov <andrew.smirnov@gmail.com>,
	=?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= <philmd@linaro.org>,
	Rob Herring <robh@kernel.org>,
	Subbaraya Sundeep <sundeep.lkml@gmail.com>,
	Jan Kiszka <jan.kiszka@web.de>,
	Tyrone Ting <kfting@nuvoton.com>,
	Hao Wu <wuhaotsh@google.com>,
	Radoslaw Biernacki <rad@semihalf.com>,
	Leif Lindholm <quic_llindhol@quicinc.com>,
	Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org>,
	"Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
	Alistair Francis <alistair@alistair23.me>,
	Helge Deller <deller@gmx.de>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Eduardo Habkost <eduardo@habkost.net>,
	"Michael S. Tsirkin" <mst@redhat.com>,
	Marcel Apfelbaum <marcel.apfelbaum@gmail.com>,
	Song Gao <gaosong@loongson.cn>,
	Thomas Huth <huth@tuxfamily.org>,
	Laurent Vivier <laurent@vivier.eu>,
	Huacai Chen <chenhuacai@kernel.org>,
	Jiaxun Yang <jiaxun.yang@flygoat.com>,
	=?UTF-8?q?Herv=C3=A9=20Poussineau?= <hpoussin@reactos.org>,
	Aleksandar Rikalo <aleksandar.rikalo@syrmia.com>,
	Aurelien Jarno <aurelien@aurel32.net>,
	Jason Wang <jasowang@redhat.com>,
	Jia Liu <proljc@gmail.com>,
	Stafford Horne <shorne@gmail.com>,
	Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>,
	Nicholas Piggin <npiggin@gmail.com>,
	Daniel Henrique Barboza <danielhb413@gmail.com>,
	David Gibson <david@gibson.dropbear.id.au>,
	Harsh Prateek Bora <harshpb@linux.ibm.com>,
	Bin Meng <bin.meng@windriver.com>,
	Palmer Dabbelt <palmer@dabbelt.com>,
	Weiwei Li <liwei1518@gmail.com>,
	Liu Zhiwei <zhiwei_liu@linux.alibaba.com>,
	Halil Pasic <pasic@linux.ibm.com>,
	Christian Borntraeger <borntraeger@linux.ibm.com>,
	Eric Farman <farman@linux.ibm.com>,
	David Hildenbrand <david@redhat.com>,
	Ilya Leoshkevich <iii@linux.ibm.com>,
	Yoshinori Sato <ysato@users.sourceforge.jp>,
	Magnus Damm <magnus.damm@gmail.com>,
	Artyom Tarasenko <atar4qemu@gmail.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Anthony Perard <anthony.perard@citrix.com>,
	Paul Durrant <paul@xen.org>,
	Max Filippov <jcmvbkbc@gmail.com>,
	qemu-arm@nongnu.org,
	qemu-ppc@nongnu.org,
	qemu-riscv@nongnu.org,
	qemu-s390x@nongnu.org,
	xen-devel@lists.xenproject.org,
	David Woodhouse <dwmw@amazon.co.uk>
Subject: [PATCH v4 29/47] hw/arm/stellaris: use qemu_find_nic_info()
Date: Fri, 26 Jan 2024 17:25:06 +0000
Message-ID: <20240126173228.394202-30-dwmw2@infradead.org>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20240126173228.394202-1-dwmw2@infradead.org>
References: <20240126173228.394202-1-dwmw2@infradead.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Sender: David Woodhouse <dwmw2@infradead.org>
X-SRS-Rewrite: SMTP reverse-path rewritten from <dwmw2@infradead.org> by desiato.infradead.org. See http://www.infradead.org/rpr.html

From: David Woodhouse <dwmw@amazon.co.uk>

Rather than just using qemu_configure_nic_device(), populate the MAC
address in the system-registers device by peeking at the NICInfo before
it's assigned to the device.

Generate the MAC address early, if there is no matching -nic option.
Otherwise the MAC address wouldn't be generated until net_client_init1()
runs.

Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
---
 hw/arm/stellaris.c | 30 ++++++++++++++++++++++--------
 1 file changed, 22 insertions(+), 8 deletions(-)

diff --git a/hw/arm/stellaris.c b/hw/arm/stellaris.c
index d18b1144af..34c5a86ac2 100644
--- a/hw/arm/stellaris.c
+++ b/hw/arm/stellaris.c
@@ -1028,7 +1028,8 @@ static void stellaris_init(MachineState *ms, stellaris_board_info *board)
     DeviceState *ssys_dev;
     int i;
     int j;
-    const uint8_t *macaddr;
+    NICInfo *nd;
+    MACAddr mac;
 
     MemoryRegion *sram = g_new(MemoryRegion, 1);
     MemoryRegion *flash = g_new(MemoryRegion, 1);
@@ -1051,12 +1052,22 @@ static void stellaris_init(MachineState *ms, stellaris_board_info *board)
      * need its sysclk output.
      */
     ssys_dev = qdev_new(TYPE_STELLARIS_SYS);
-    /* Most devices come preprogrammed with a MAC address in the user data. */
-    macaddr = nd_table[0].macaddr.a;
+
+    /*
+     * Most devices come preprogrammed with a MAC address in the user data.
+     * Generate a MAC address now, if there isn't a matching -nic for it.
+     */
+    nd = qemu_find_nic_info("stellaris_enet", true, "stellaris");
+    if (nd) {
+        memcpy(mac.a, nd->macaddr.a, sizeof(mac.a));
+    } else {
+        qemu_macaddr_default_if_unset(&mac);
+    }
+
     qdev_prop_set_uint32(ssys_dev, "user0",
-                         macaddr[0] | (macaddr[1] << 8) | (macaddr[2] << 16));
+                         mac.a[0] | (mac.a[1] << 8) | (mac.a[2] << 16));
     qdev_prop_set_uint32(ssys_dev, "user1",
-                         macaddr[3] | (macaddr[4] << 8) | (macaddr[5] << 16));
+                         mac.a[3] | (mac.a[4] << 8) | (mac.a[5] << 16));
     qdev_prop_set_uint32(ssys_dev, "did0", board->did0);
     qdev_prop_set_uint32(ssys_dev, "did1", board->did1);
     qdev_prop_set_uint32(ssys_dev, "dc0", board->dc0);
@@ -1269,10 +1280,13 @@ static void stellaris_init(MachineState *ms, stellaris_board_info *board)
     if (board->dc4 & (1 << 28)) {
         DeviceState *enet;
 
-        qemu_check_nic_model(&nd_table[0], "stellaris");
-
         enet = qdev_new("stellaris_enet");
-        qdev_set_nic_properties(enet, &nd_table[0]);
+        if (nd) {
+            qdev_set_nic_properties(enet, nd);
+        } else {
+            qdev_prop_set_macaddr(enet, "mac", mac.a);
+        }
+
         sysbus_realize_and_unref(SYS_BUS_DEVICE(enet), &error_fatal);
         sysbus_mmio_map(SYS_BUS_DEVICE(enet), 0, 0x40048000);
         sysbus_connect_irq(SYS_BUS_DEVICE(enet), 0, qdev_get_gpio_in(nvic, 42));
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Fri Jan 26 17:37:52 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 26 Jan 2024 17:37:52 +0000
Received: from list by lists.xenproject.org with outflank-mailman.672291.1046218 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTQ9I-0006jL-M3; Fri, 26 Jan 2024 17:37:52 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 672291.1046218; Fri, 26 Jan 2024 17:37:52 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTQ9I-0006jE-JM; Fri, 26 Jan 2024 17:37:52 +0000
Received: by outflank-mailman (input) for mailman id 672291;
 Fri, 26 Jan 2024 17:37:51 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=46+y=JE=desiato.srs.infradead.org=BATV+5cc348fc898a3f56ac6c+7460+infradead.org+dwmw2@srs-se1.protection.inumbo.net>)
 id 1rTQ57-0004Zo-FP
 for xen-devel@lists.xenproject.org; Fri, 26 Jan 2024 17:33:33 +0000
Received: from desiato.infradead.org (desiato.infradead.org
 [2001:8b0:10b:1:d65d:64ff:fe57:4e05])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 0545496b-bc71-11ee-8a43-1f161083a0e0;
 Fri, 26 Jan 2024 18:33:30 +0100 (CET)
Received: from [2001:8b0:10b:1::ebe] (helo=i7.infradead.org)
 by desiato.infradead.org with esmtpsa (Exim 4.97.1 #2 (Red Hat Linux))
 id 1rTQ4A-000000069Uk-1tKu; Fri, 26 Jan 2024 17:32:34 +0000
Received: from dwoodhou by i7.infradead.org with local (Exim 4.97.1 #2 (Red
 Hat Linux)) id 1rTQ47-00000001ele-2qm0;
 Fri, 26 Jan 2024 17:32:31 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
X-Inumbo-ID: 0545496b-bc71-11ee-8a43-1f161083a0e0
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=infradead.org; s=desiato.20200630; h=Sender:Content-Transfer-Encoding:
	MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:
	Reply-To:Content-Type:Content-ID:Content-Description;
	bh=f4zhtWJwTDv/GTqQefyNMB0pZHdx/v1BNCZKPZQKYkE=; b=nSwxOvPfmxriQ/utFCd6E5uTgk
	zLRl3W9ZzxOKqxVeKHfIePMrsRsDgzhQob0ieitsWWAtWHoxaW/ddWelyJgrB6j43fCgZx4CfWKWo
	Jtz18hNYhD1A3V7taJd3cmQeJpm+sgEx4s7SJ+A7w3RGfK1faQT8DK58V5Zl3rCgJsNTSup6ChZRl
	5zbnuTqtlRDWshBloZzpeVj6jD4ScFBWVJ6Q8sJX08c7z2Es93nvEn+66ltrPI8hM8b5C/++EVrqU
	9XwrgCAONDTRJDXixzJBtRo6ZCM49mnTc0R0ZIYs2m6pjhjVoj7eKiK+d6DVc0muGuqz6H90aRRuc
	Z9ZupxNA==;
From: David Woodhouse <dwmw2@infradead.org>
To: qemu-devel@nongnu.org
Cc: Richard Henderson <richard.henderson@linaro.org>,
	Beniamino Galvani <b.galvani@gmail.com>,
	Peter Maydell <peter.maydell@linaro.org>,
	Strahinja Jankovic <strahinja.p.jankovic@gmail.com>,
	Niek Linnenbank <nieklinnenbank@gmail.com>,
	=?UTF-8?q?C=C3=A9dric=20Le=20Goater?= <clg@kaod.org>,
	Andrew Jeffery <andrew@codeconstruct.com.au>,
	Joel Stanley <joel@jms.id.au>,
	Igor Mitsyanko <i.mitsyanko@gmail.com>,
	Jean-Christophe Dubois <jcd@tribudubois.net>,
	Andrey Smirnov <andrew.smirnov@gmail.com>,
	=?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= <philmd@linaro.org>,
	Rob Herring <robh@kernel.org>,
	Subbaraya Sundeep <sundeep.lkml@gmail.com>,
	Jan Kiszka <jan.kiszka@web.de>,
	Tyrone Ting <kfting@nuvoton.com>,
	Hao Wu <wuhaotsh@google.com>,
	Radoslaw Biernacki <rad@semihalf.com>,
	Leif Lindholm <quic_llindhol@quicinc.com>,
	Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org>,
	"Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
	Alistair Francis <alistair@alistair23.me>,
	Helge Deller <deller@gmx.de>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Eduardo Habkost <eduardo@habkost.net>,
	"Michael S. Tsirkin" <mst@redhat.com>,
	Marcel Apfelbaum <marcel.apfelbaum@gmail.com>,
	Song Gao <gaosong@loongson.cn>,
	Thomas Huth <huth@tuxfamily.org>,
	Laurent Vivier <laurent@vivier.eu>,
	Huacai Chen <chenhuacai@kernel.org>,
	Jiaxun Yang <jiaxun.yang@flygoat.com>,
	=?UTF-8?q?Herv=C3=A9=20Poussineau?= <hpoussin@reactos.org>,
	Aleksandar Rikalo <aleksandar.rikalo@syrmia.com>,
	Aurelien Jarno <aurelien@aurel32.net>,
	Jason Wang <jasowang@redhat.com>,
	Jia Liu <proljc@gmail.com>,
	Stafford Horne <shorne@gmail.com>,
	Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>,
	Nicholas Piggin <npiggin@gmail.com>,
	Daniel Henrique Barboza <danielhb413@gmail.com>,
	David Gibson <david@gibson.dropbear.id.au>,
	Harsh Prateek Bora <harshpb@linux.ibm.com>,
	Bin Meng <bin.meng@windriver.com>,
	Palmer Dabbelt <palmer@dabbelt.com>,
	Weiwei Li <liwei1518@gmail.com>,
	Liu Zhiwei <zhiwei_liu@linux.alibaba.com>,
	Halil Pasic <pasic@linux.ibm.com>,
	Christian Borntraeger <borntraeger@linux.ibm.com>,
	Eric Farman <farman@linux.ibm.com>,
	David Hildenbrand <david@redhat.com>,
	Ilya Leoshkevich <iii@linux.ibm.com>,
	Yoshinori Sato <ysato@users.sourceforge.jp>,
	Magnus Damm <magnus.damm@gmail.com>,
	Artyom Tarasenko <atar4qemu@gmail.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Anthony Perard <anthony.perard@citrix.com>,
	Paul Durrant <paul@xen.org>,
	Max Filippov <jcmvbkbc@gmail.com>,
	qemu-arm@nongnu.org,
	qemu-ppc@nongnu.org,
	qemu-riscv@nongnu.org,
	qemu-s390x@nongnu.org,
	xen-devel@lists.xenproject.org,
	David Woodhouse <dwmw@amazon.co.uk>,
	Thomas Huth <thuth@redhat.com>
Subject: [PATCH v4 09/47] hw/arm/virt: use pci_init_nic_devices()
Date: Fri, 26 Jan 2024 17:24:46 +0000
Message-ID: <20240126173228.394202-10-dwmw2@infradead.org>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20240126173228.394202-1-dwmw2@infradead.org>
References: <20240126173228.394202-1-dwmw2@infradead.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Sender: David Woodhouse <dwmw2@infradead.org>
X-SRS-Rewrite: SMTP reverse-path rewritten from <dwmw2@infradead.org> by desiato.infradead.org. See http://www.infradead.org/rpr.html

From: David Woodhouse <dwmw@amazon.co.uk>

Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
Reviewed-by: Thomas Huth <thuth@redhat.com>
---
 hw/arm/virt.c | 4 +---
 1 file changed, 1 insertion(+), 3 deletions(-)

diff --git a/hw/arm/virt.c b/hw/arm/virt.c
index 5cbc69dff8..ad8e7edb8c 100644
--- a/hw/arm/virt.c
+++ b/hw/arm/virt.c
@@ -1454,9 +1454,7 @@ static void create_pcie(VirtMachineState *vms)
     pci->bypass_iommu = vms->default_bus_bypass_iommu;
     vms->bus = pci->bus;
     if (vms->bus) {
-        for (i = 0; i < nb_nics; i++) {
-            pci_nic_init_nofail(&nd_table[i], pci->bus, mc->default_nic, NULL);
-        }
+        pci_init_nic_devices(pci->bus, mc->default_nic);
     }
 
     nodename = vms->pciehb_nodename = g_strdup_printf("/pcie@%" PRIx64, base);
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Fri Jan 26 17:37:53 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 26 Jan 2024 17:37:53 +0000
Received: from list by lists.xenproject.org with outflank-mailman.672292.1046223 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTQ9I-0006mX-VU; Fri, 26 Jan 2024 17:37:52 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 672292.1046223; Fri, 26 Jan 2024 17:37:52 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTQ9I-0006lL-QQ; Fri, 26 Jan 2024 17:37:52 +0000
Received: by outflank-mailman (input) for mailman id 672292;
 Fri, 26 Jan 2024 17:37:51 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=46+y=JE=desiato.srs.infradead.org=BATV+5cc348fc898a3f56ac6c+7460+infradead.org+dwmw2@srs-se1.protection.inumbo.net>)
 id 1rTQ5E-0004m7-Sv
 for xen-devel@lists.xenproject.org; Fri, 26 Jan 2024 17:33:40 +0000
Received: from desiato.infradead.org (desiato.infradead.org
 [2001:8b0:10b:1:d65d:64ff:fe57:4e05])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 05876c47-bc71-11ee-98f5-efadbce2ee36;
 Fri, 26 Jan 2024 18:33:30 +0100 (CET)
Received: from [2001:8b0:10b:1::ebe] (helo=i7.infradead.org)
 by desiato.infradead.org with esmtpsa (Exim 4.97.1 #2 (Red Hat Linux))
 id 1rTQ4A-000000069Uf-1sy3; Fri, 26 Jan 2024 17:32:35 +0000
Received: from dwoodhou by i7.infradead.org with local (Exim 4.97.1 #2 (Red
 Hat Linux)) id 1rTQ48-00000001em2-21yn;
 Fri, 26 Jan 2024 17:32:32 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
X-Inumbo-ID: 05876c47-bc71-11ee-98f5-efadbce2ee36
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=infradead.org; s=desiato.20200630; h=Sender:Content-Transfer-Encoding:
	MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:
	Reply-To:Content-Type:Content-ID:Content-Description;
	bh=11Xexm/zfEQsP0C5lVH66y3jNuSB03J3oevWpWV4QDE=; b=J5wO8JEkkhyeDWgg6bi+L0kaFG
	z8WmsTAHijYoKW/KHa0AJ/dFQToJ5llh906NAjxJNlaQVVgtZ1AK+w9xp88vwX0PxRMrMjrILPzw9
	9qwrRq5v290fYBfp4WN/7Q/QNb3QaUIUPjrllJMAOTKqZ8nUoutZY9sy8af8wFqQLksb2ItJVeukD
	CmORWp0+U239cZgQ/WmA/Xc9qFByy+rMUjh7Pqbm5ECAnoId3nu6h2gW9Cbjx4Q3ZrATtmzlEd6F8
	tQzKRGeo+AeN++aiiuZfA8GNazNFeAwNU4W7CGU+m4asCHHYTdtNYcYPSt/iV31elDlWT+BQ9KJJc
	Jyb0FrFg==;
From: David Woodhouse <dwmw2@infradead.org>
To: qemu-devel@nongnu.org
Cc: Richard Henderson <richard.henderson@linaro.org>,
	Beniamino Galvani <b.galvani@gmail.com>,
	Peter Maydell <peter.maydell@linaro.org>,
	Strahinja Jankovic <strahinja.p.jankovic@gmail.com>,
	Niek Linnenbank <nieklinnenbank@gmail.com>,
	=?UTF-8?q?C=C3=A9dric=20Le=20Goater?= <clg@kaod.org>,
	Andrew Jeffery <andrew@codeconstruct.com.au>,
	Joel Stanley <joel@jms.id.au>,
	Igor Mitsyanko <i.mitsyanko@gmail.com>,
	Jean-Christophe Dubois <jcd@tribudubois.net>,
	Andrey Smirnov <andrew.smirnov@gmail.com>,
	=?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= <philmd@linaro.org>,
	Rob Herring <robh@kernel.org>,
	Subbaraya Sundeep <sundeep.lkml@gmail.com>,
	Jan Kiszka <jan.kiszka@web.de>,
	Tyrone Ting <kfting@nuvoton.com>,
	Hao Wu <wuhaotsh@google.com>,
	Radoslaw Biernacki <rad@semihalf.com>,
	Leif Lindholm <quic_llindhol@quicinc.com>,
	Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org>,
	"Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
	Alistair Francis <alistair@alistair23.me>,
	Helge Deller <deller@gmx.de>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Eduardo Habkost <eduardo@habkost.net>,
	"Michael S. Tsirkin" <mst@redhat.com>,
	Marcel Apfelbaum <marcel.apfelbaum@gmail.com>,
	Song Gao <gaosong@loongson.cn>,
	Thomas Huth <huth@tuxfamily.org>,
	Laurent Vivier <laurent@vivier.eu>,
	Huacai Chen <chenhuacai@kernel.org>,
	Jiaxun Yang <jiaxun.yang@flygoat.com>,
	=?UTF-8?q?Herv=C3=A9=20Poussineau?= <hpoussin@reactos.org>,
	Aleksandar Rikalo <aleksandar.rikalo@syrmia.com>,
	Aurelien Jarno <aurelien@aurel32.net>,
	Jason Wang <jasowang@redhat.com>,
	Jia Liu <proljc@gmail.com>,
	Stafford Horne <shorne@gmail.com>,
	Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>,
	Nicholas Piggin <npiggin@gmail.com>,
	Daniel Henrique Barboza <danielhb413@gmail.com>,
	David Gibson <david@gibson.dropbear.id.au>,
	Harsh Prateek Bora <harshpb@linux.ibm.com>,
	Bin Meng <bin.meng@windriver.com>,
	Palmer Dabbelt <palmer@dabbelt.com>,
	Weiwei Li <liwei1518@gmail.com>,
	Liu Zhiwei <zhiwei_liu@linux.alibaba.com>,
	Halil Pasic <pasic@linux.ibm.com>,
	Christian Borntraeger <borntraeger@linux.ibm.com>,
	Eric Farman <farman@linux.ibm.com>,
	David Hildenbrand <david@redhat.com>,
	Ilya Leoshkevich <iii@linux.ibm.com>,
	Yoshinori Sato <ysato@users.sourceforge.jp>,
	Magnus Damm <magnus.damm@gmail.com>,
	Artyom Tarasenko <atar4qemu@gmail.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Anthony Perard <anthony.perard@citrix.com>,
	Paul Durrant <paul@xen.org>,
	Max Filippov <jcmvbkbc@gmail.com>,
	qemu-arm@nongnu.org,
	qemu-ppc@nongnu.org,
	qemu-riscv@nongnu.org,
	qemu-s390x@nongnu.org,
	xen-devel@lists.xenproject.org,
	David Woodhouse <dwmw@amazon.co.uk>,
	Thomas Huth <thuth@redhat.com>
Subject: [PATCH v4 17/47] hw/ppc: use pci_init_nic_devices()
Date: Fri, 26 Jan 2024 17:24:54 +0000
Message-ID: <20240126173228.394202-18-dwmw2@infradead.org>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20240126173228.394202-1-dwmw2@infradead.org>
References: <20240126173228.394202-1-dwmw2@infradead.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Sender: David Woodhouse <dwmw2@infradead.org>
X-SRS-Rewrite: SMTP reverse-path rewritten from <dwmw2@infradead.org> by desiato.infradead.org. See http://www.infradead.org/rpr.html

From: David Woodhouse <dwmw@amazon.co.uk>

Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
Reviewed-by: Thomas Huth <thuth@redhat.com>
---
 hw/ppc/e500.c          |  4 +---
 hw/ppc/mac_newworld.c  |  4 +---
 hw/ppc/mac_oldworld.c  |  4 +---
 hw/ppc/ppc440_bamboo.c | 14 +++++---------
 4 files changed, 8 insertions(+), 18 deletions(-)

diff --git a/hw/ppc/e500.c b/hw/ppc/e500.c
index 566f1200dd..3bd12b54ab 100644
--- a/hw/ppc/e500.c
+++ b/hw/ppc/e500.c
@@ -1079,9 +1079,7 @@ void ppce500_init(MachineState *machine)
 
     if (pci_bus) {
         /* Register network interfaces. */
-        for (i = 0; i < nb_nics; i++) {
-            pci_nic_init_nofail(&nd_table[i], pci_bus, mc->default_nic, NULL);
-        }
+        pci_init_nic_devices(pci_bus, mc->default_nic);
     }
 
     /* Register spinning region */
diff --git a/hw/ppc/mac_newworld.c b/hw/ppc/mac_newworld.c
index 535710314a..b36dbaf2b6 100644
--- a/hw/ppc/mac_newworld.c
+++ b/hw/ppc/mac_newworld.c
@@ -444,9 +444,7 @@ static void ppc_core99_init(MachineState *machine)
         graphic_depth = 15;
     }
 
-    for (i = 0; i < nb_nics; i++) {
-        pci_nic_init_nofail(&nd_table[i], pci_bus, mc->default_nic, NULL);
-    }
+    pci_init_nic_devices(pci_bus, mc->default_nic);
 
     /* The NewWorld NVRAM is not located in the MacIO device */
     if (kvm_enabled() && qemu_real_host_page_size() > 4096) {
diff --git a/hw/ppc/mac_oldworld.c b/hw/ppc/mac_oldworld.c
index 9acc7adfc9..1981d3d8f6 100644
--- a/hw/ppc/mac_oldworld.c
+++ b/hw/ppc/mac_oldworld.c
@@ -277,9 +277,7 @@ static void ppc_heathrow_init(MachineState *machine)
 
     pci_vga_init(pci_bus);
 
-    for (i = 0; i < nb_nics; i++) {
-        pci_nic_init_nofail(&nd_table[i], pci_bus, mc->default_nic, NULL);
-    }
+    pci_init_nic_devices(pci_bus, mc->default_nic);
 
     /* MacIO IDE */
     ide_drive_get(hd, ARRAY_SIZE(hd));
diff --git a/hw/ppc/ppc440_bamboo.c b/hw/ppc/ppc440_bamboo.c
index a189942de4..c75c3083e6 100644
--- a/hw/ppc/ppc440_bamboo.c
+++ b/hw/ppc/ppc440_bamboo.c
@@ -161,7 +161,6 @@ static void bamboo_init(MachineState *machine)
     DeviceState *uicdev;
     SysBusDevice *uicsbd;
     int success;
-    int i;
 
     if (kvm_enabled()) {
         error_report("machine %s does not support the KVM accelerator",
@@ -234,14 +233,11 @@ static void bamboo_init(MachineState *machine)
     }
 
     if (pcibus) {
-        /* Register network interfaces. */
-        for (i = 0; i < nb_nics; i++) {
-            /*
-             * There are no PCI NICs on the Bamboo board, but there are
-             * PCI slots, so we can pick whatever default model we want.
-             */
-            pci_nic_init_nofail(&nd_table[i], pcibus, mc->default_nic, NULL);
-        }
+        /*
+         * There are no PCI NICs on the Bamboo board, but there are
+         * PCI slots, so we can pick whatever default model we want.
+         */
+        pci_init_nic_devices(pcibus, mc->default_nic);
     }
 
     /* Load kernel. */
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Fri Jan 26 17:37:59 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 26 Jan 2024 17:37:59 +0000
Received: from list by lists.xenproject.org with outflank-mailman.672294.1046239 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTQ9P-0007PH-5o; Fri, 26 Jan 2024 17:37:59 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 672294.1046239; Fri, 26 Jan 2024 17:37:59 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTQ9P-0007P2-1u; Fri, 26 Jan 2024 17:37:59 +0000
Received: by outflank-mailman (input) for mailman id 672294;
 Fri, 26 Jan 2024 17:37:57 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=46+y=JE=desiato.srs.infradead.org=BATV+5cc348fc898a3f56ac6c+7460+infradead.org+dwmw2@srs-se1.protection.inumbo.net>)
 id 1rTQ5M-0004m7-TY
 for xen-devel@lists.xenproject.org; Fri, 26 Jan 2024 17:33:48 +0000
Received: from desiato.infradead.org (desiato.infradead.org
 [2001:8b0:10b:1:d65d:64ff:fe57:4e05])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 094c0699-bc71-11ee-98f5-efadbce2ee36;
 Fri, 26 Jan 2024 18:33:37 +0100 (CET)
Received: from [2001:8b0:10b:1::ebe] (helo=i7.infradead.org)
 by desiato.infradead.org with esmtpsa (Exim 4.97.1 #2 (Red Hat Linux))
 id 1rTQ4A-000000069Un-1mvK; Fri, 26 Jan 2024 17:32:35 +0000
Received: from dwoodhou by i7.infradead.org with local (Exim 4.97.1 #2 (Red
 Hat Linux)) id 1rTQ49-00000001emi-0XuV;
 Fri, 26 Jan 2024 17:32:33 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
X-Inumbo-ID: 094c0699-bc71-11ee-98f5-efadbce2ee36
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=infradead.org; s=desiato.20200630; h=Sender:Content-Transfer-Encoding:
	MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:
	Reply-To:Content-Type:Content-ID:Content-Description;
	bh=KOJpufq4zmSAW4K5QRQS7wrF9AysmCJpGSwOq9y3MvE=; b=Kkc6w4XBr8jGCKymZ8GonYtRQf
	3nKIA1F+AOT0Y0gp30CLxWOk0LHUYyXz6gt/8Cin6mmr3eAbf8dzVvSbbBSk9KelfbaAnW5/yJe5U
	nExgrTMI7VIqwGLenUCm2tKd4kN7NVsljwGTI1S2gcurVCy29EA/XOYrAGr4SHtmhme8En06YvlVr
	QQ7FZZSbOFHL7aJJVndJra1TxvjTN0ZuzpRZjXwrL/D8VH3MWjr1xAvkOZuixFv0WeSruJKJnjXhB
	SsoUQflZFtcaIEQI2SjAQqIKU7bcTVOWPzAHCGgDGAHCbADyxPEJ1yXdQfbzyi0lulvFZ/ELgPpvK
	4BgnFm1Q==;
From: David Woodhouse <dwmw2@infradead.org>
To: qemu-devel@nongnu.org
Cc: Richard Henderson <richard.henderson@linaro.org>,
	Beniamino Galvani <b.galvani@gmail.com>,
	Peter Maydell <peter.maydell@linaro.org>,
	Strahinja Jankovic <strahinja.p.jankovic@gmail.com>,
	Niek Linnenbank <nieklinnenbank@gmail.com>,
	=?UTF-8?q?C=C3=A9dric=20Le=20Goater?= <clg@kaod.org>,
	Andrew Jeffery <andrew@codeconstruct.com.au>,
	Joel Stanley <joel@jms.id.au>,
	Igor Mitsyanko <i.mitsyanko@gmail.com>,
	Jean-Christophe Dubois <jcd@tribudubois.net>,
	Andrey Smirnov <andrew.smirnov@gmail.com>,
	=?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= <philmd@linaro.org>,
	Rob Herring <robh@kernel.org>,
	Subbaraya Sundeep <sundeep.lkml@gmail.com>,
	Jan Kiszka <jan.kiszka@web.de>,
	Tyrone Ting <kfting@nuvoton.com>,
	Hao Wu <wuhaotsh@google.com>,
	Radoslaw Biernacki <rad@semihalf.com>,
	Leif Lindholm <quic_llindhol@quicinc.com>,
	Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org>,
	"Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
	Alistair Francis <alistair@alistair23.me>,
	Helge Deller <deller@gmx.de>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Eduardo Habkost <eduardo@habkost.net>,
	"Michael S. Tsirkin" <mst@redhat.com>,
	Marcel Apfelbaum <marcel.apfelbaum@gmail.com>,
	Song Gao <gaosong@loongson.cn>,
	Thomas Huth <huth@tuxfamily.org>,
	Laurent Vivier <laurent@vivier.eu>,
	Huacai Chen <chenhuacai@kernel.org>,
	Jiaxun Yang <jiaxun.yang@flygoat.com>,
	=?UTF-8?q?Herv=C3=A9=20Poussineau?= <hpoussin@reactos.org>,
	Aleksandar Rikalo <aleksandar.rikalo@syrmia.com>,
	Aurelien Jarno <aurelien@aurel32.net>,
	Jason Wang <jasowang@redhat.com>,
	Jia Liu <proljc@gmail.com>,
	Stafford Horne <shorne@gmail.com>,
	Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>,
	Nicholas Piggin <npiggin@gmail.com>,
	Daniel Henrique Barboza <danielhb413@gmail.com>,
	David Gibson <david@gibson.dropbear.id.au>,
	Harsh Prateek Bora <harshpb@linux.ibm.com>,
	Bin Meng <bin.meng@windriver.com>,
	Palmer Dabbelt <palmer@dabbelt.com>,
	Weiwei Li <liwei1518@gmail.com>,
	Liu Zhiwei <zhiwei_liu@linux.alibaba.com>,
	Halil Pasic <pasic@linux.ibm.com>,
	Christian Borntraeger <borntraeger@linux.ibm.com>,
	Eric Farman <farman@linux.ibm.com>,
	David Hildenbrand <david@redhat.com>,
	Ilya Leoshkevich <iii@linux.ibm.com>,
	Yoshinori Sato <ysato@users.sourceforge.jp>,
	Magnus Damm <magnus.damm@gmail.com>,
	Artyom Tarasenko <atar4qemu@gmail.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Anthony Perard <anthony.perard@citrix.com>,
	Paul Durrant <paul@xen.org>,
	Max Filippov <jcmvbkbc@gmail.com>,
	qemu-arm@nongnu.org,
	qemu-ppc@nongnu.org,
	qemu-riscv@nongnu.org,
	qemu-s390x@nongnu.org,
	xen-devel@lists.xenproject.org,
	David Woodhouse <dwmw@amazon.co.uk>,
	Thomas Huth <thuth@redhat.com>
Subject: [PATCH v4 24/47] hw/arm/fsl: use qemu_configure_nic_device()
Date: Fri, 26 Jan 2024 17:25:01 +0000
Message-ID: <20240126173228.394202-25-dwmw2@infradead.org>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20240126173228.394202-1-dwmw2@infradead.org>
References: <20240126173228.394202-1-dwmw2@infradead.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Sender: David Woodhouse <dwmw2@infradead.org>
X-SRS-Rewrite: SMTP reverse-path rewritten from <dwmw2@infradead.org> by desiato.infradead.org. See http://www.infradead.org/rpr.html

From: David Woodhouse <dwmw@amazon.co.uk>

Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
Reviewed-by: Thomas Huth <thuth@redhat.com>
---
 hw/arm/fsl-imx25.c  | 2 +-
 hw/arm/fsl-imx6.c   | 2 +-
 hw/arm/fsl-imx6ul.c | 2 +-
 hw/arm/fsl-imx7.c   | 2 +-
 4 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/hw/arm/fsl-imx25.c b/hw/arm/fsl-imx25.c
index 9d2fb75a68..a24fa7b443 100644
--- a/hw/arm/fsl-imx25.c
+++ b/hw/arm/fsl-imx25.c
@@ -170,7 +170,7 @@ static void fsl_imx25_realize(DeviceState *dev, Error **errp)
 
     object_property_set_uint(OBJECT(&s->fec), "phy-num", s->phy_num,
                              &error_abort);
-    qdev_set_nic_properties(DEVICE(&s->fec), &nd_table[0]);
+    qemu_configure_nic_device(DEVICE(&s->fec), true, NULL);
 
     if (!sysbus_realize(SYS_BUS_DEVICE(&s->fec), errp)) {
         return;
diff --git a/hw/arm/fsl-imx6.c b/hw/arm/fsl-imx6.c
index af2e982b05..afe9a59a81 100644
--- a/hw/arm/fsl-imx6.c
+++ b/hw/arm/fsl-imx6.c
@@ -383,7 +383,7 @@ static void fsl_imx6_realize(DeviceState *dev, Error **errp)
 
     object_property_set_uint(OBJECT(&s->eth), "phy-num", s->phy_num,
                              &error_abort);
-    qdev_set_nic_properties(DEVICE(&s->eth), &nd_table[0]);
+    qemu_configure_nic_device(DEVICE(&s->eth), true, NULL);
     if (!sysbus_realize(SYS_BUS_DEVICE(&s->eth), errp)) {
         return;
     }
diff --git a/hw/arm/fsl-imx6ul.c b/hw/arm/fsl-imx6ul.c
index e37b69a5e1..ca3dd439ec 100644
--- a/hw/arm/fsl-imx6ul.c
+++ b/hw/arm/fsl-imx6ul.c
@@ -442,7 +442,7 @@ static void fsl_imx6ul_realize(DeviceState *dev, Error **errp)
                                  s->phy_num[i], &error_abort);
         object_property_set_uint(OBJECT(&s->eth[i]), "tx-ring-num",
                                  FSL_IMX6UL_ETH_NUM_TX_RINGS, &error_abort);
-        qdev_set_nic_properties(DEVICE(&s->eth[i]), &nd_table[i]);
+        qemu_configure_nic_device(DEVICE(&s->eth[i]), true, NULL);
         sysbus_realize(SYS_BUS_DEVICE(&s->eth[i]), &error_abort);
 
         sysbus_mmio_map(SYS_BUS_DEVICE(&s->eth[i]), 0,
diff --git a/hw/arm/fsl-imx7.c b/hw/arm/fsl-imx7.c
index 474cfdc87c..1acbe065db 100644
--- a/hw/arm/fsl-imx7.c
+++ b/hw/arm/fsl-imx7.c
@@ -446,7 +446,7 @@ static void fsl_imx7_realize(DeviceState *dev, Error **errp)
                                  s->phy_num[i], &error_abort);
         object_property_set_uint(OBJECT(&s->eth[i]), "tx-ring-num",
                                  FSL_IMX7_ETH_NUM_TX_RINGS, &error_abort);
-        qdev_set_nic_properties(DEVICE(&s->eth[i]), &nd_table[i]);
+        qemu_configure_nic_device(DEVICE(&s->eth[i]), true, NULL);
         sysbus_realize(SYS_BUS_DEVICE(&s->eth[i]), &error_abort);
 
         sysbus_mmio_map(SYS_BUS_DEVICE(&s->eth[i]), 0, FSL_IMX7_ENETn_ADDR[i]);
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Fri Jan 26 17:38:04 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 26 Jan 2024 17:38:04 +0000
Received: from list by lists.xenproject.org with outflank-mailman.672295.1046249 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTQ9U-0007md-DD; Fri, 26 Jan 2024 17:38:04 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 672295.1046249; Fri, 26 Jan 2024 17:38:04 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTQ9U-0007mW-9L; Fri, 26 Jan 2024 17:38:04 +0000
Received: by outflank-mailman (input) for mailman id 672295;
 Fri, 26 Jan 2024 17:38:02 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=46+y=JE=desiato.srs.infradead.org=BATV+5cc348fc898a3f56ac6c+7460+infradead.org+dwmw2@srs-se1.protection.inumbo.net>)
 id 1rTQ5C-0004Zo-Gh
 for xen-devel@lists.xenproject.org; Fri, 26 Jan 2024 17:33:38 +0000
Received: from desiato.infradead.org (desiato.infradead.org
 [2001:8b0:10b:1:d65d:64ff:fe57:4e05])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 08e7a0a9-bc71-11ee-8a43-1f161083a0e0;
 Fri, 26 Jan 2024 18:33:36 +0100 (CET)
Received: from [2001:8b0:10b:1::ebe] (helo=i7.infradead.org)
 by desiato.infradead.org with esmtpsa (Exim 4.97.1 #2 (Red Hat Linux))
 id 1rTQ4A-000000069Ul-1eWe; Fri, 26 Jan 2024 17:32:35 +0000
Received: from dwoodhou by i7.infradead.org with local (Exim 4.97.1 #2 (Red
 Hat Linux)) id 1rTQ48-00000001emB-3EtP;
 Fri, 26 Jan 2024 17:32:32 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
X-Inumbo-ID: 08e7a0a9-bc71-11ee-8a43-1f161083a0e0
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=infradead.org; s=desiato.20200630; h=Sender:Content-Transfer-Encoding:
	MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:
	Reply-To:Content-Type:Content-ID:Content-Description;
	bh=35K3x9bzhCjbbLdjF5dN7+yX0Fl3u32uZ8IZYdqJ3uI=; b=SjwcI8/ZrGiWVLtebxiNKU3HJn
	F9DTWPcWeEU56094MWLaRaa5riRksyguKuY8LjPhRBfeWZcSMoS8brp+m4iYWK/ziHgts8Q+XFryo
	Cna3lZrNMiZYDdEiJiRx8BFXycJtdSF7jNSenQgX0Nyv512kZ6mzzQfXm8w+m47m+eKlSVxUnHMjj
	3AVmX2Vi4En0Bzk21re4nbWKicTRsqcVdilxS7tHAYLW2c3CBfJTgSyrrWMut4qFjEYO6hgKVf+h+
	o2xt8ao62i756IKOYu7aS/z2HKwtFIkjYDiGGRbuy33CuwlqHkTj3hoM4jzPH7Nxd8Ec4DqbrJL1u
	KmW3Irjw==;
From: David Woodhouse <dwmw2@infradead.org>
To: qemu-devel@nongnu.org
Cc: Richard Henderson <richard.henderson@linaro.org>,
	Beniamino Galvani <b.galvani@gmail.com>,
	Peter Maydell <peter.maydell@linaro.org>,
	Strahinja Jankovic <strahinja.p.jankovic@gmail.com>,
	Niek Linnenbank <nieklinnenbank@gmail.com>,
	=?UTF-8?q?C=C3=A9dric=20Le=20Goater?= <clg@kaod.org>,
	Andrew Jeffery <andrew@codeconstruct.com.au>,
	Joel Stanley <joel@jms.id.au>,
	Igor Mitsyanko <i.mitsyanko@gmail.com>,
	Jean-Christophe Dubois <jcd@tribudubois.net>,
	Andrey Smirnov <andrew.smirnov@gmail.com>,
	=?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= <philmd@linaro.org>,
	Rob Herring <robh@kernel.org>,
	Subbaraya Sundeep <sundeep.lkml@gmail.com>,
	Jan Kiszka <jan.kiszka@web.de>,
	Tyrone Ting <kfting@nuvoton.com>,
	Hao Wu <wuhaotsh@google.com>,
	Radoslaw Biernacki <rad@semihalf.com>,
	Leif Lindholm <quic_llindhol@quicinc.com>,
	Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org>,
	"Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
	Alistair Francis <alistair@alistair23.me>,
	Helge Deller <deller@gmx.de>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Eduardo Habkost <eduardo@habkost.net>,
	"Michael S. Tsirkin" <mst@redhat.com>,
	Marcel Apfelbaum <marcel.apfelbaum@gmail.com>,
	Song Gao <gaosong@loongson.cn>,
	Thomas Huth <huth@tuxfamily.org>,
	Laurent Vivier <laurent@vivier.eu>,
	Huacai Chen <chenhuacai@kernel.org>,
	Jiaxun Yang <jiaxun.yang@flygoat.com>,
	=?UTF-8?q?Herv=C3=A9=20Poussineau?= <hpoussin@reactos.org>,
	Aleksandar Rikalo <aleksandar.rikalo@syrmia.com>,
	Aurelien Jarno <aurelien@aurel32.net>,
	Jason Wang <jasowang@redhat.com>,
	Jia Liu <proljc@gmail.com>,
	Stafford Horne <shorne@gmail.com>,
	Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>,
	Nicholas Piggin <npiggin@gmail.com>,
	Daniel Henrique Barboza <danielhb413@gmail.com>,
	David Gibson <david@gibson.dropbear.id.au>,
	Harsh Prateek Bora <harshpb@linux.ibm.com>,
	Bin Meng <bin.meng@windriver.com>,
	Palmer Dabbelt <palmer@dabbelt.com>,
	Weiwei Li <liwei1518@gmail.com>,
	Liu Zhiwei <zhiwei_liu@linux.alibaba.com>,
	Halil Pasic <pasic@linux.ibm.com>,
	Christian Borntraeger <borntraeger@linux.ibm.com>,
	Eric Farman <farman@linux.ibm.com>,
	David Hildenbrand <david@redhat.com>,
	Ilya Leoshkevich <iii@linux.ibm.com>,
	Yoshinori Sato <ysato@users.sourceforge.jp>,
	Magnus Damm <magnus.damm@gmail.com>,
	Artyom Tarasenko <atar4qemu@gmail.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Anthony Perard <anthony.perard@citrix.com>,
	Paul Durrant <paul@xen.org>,
	Max Filippov <jcmvbkbc@gmail.com>,
	qemu-arm@nongnu.org,
	qemu-ppc@nongnu.org,
	qemu-riscv@nongnu.org,
	qemu-s390x@nongnu.org,
	xen-devel@lists.xenproject.org,
	David Woodhouse <dwmw@amazon.co.uk>,
	Thomas Huth <thuth@redhat.com>
Subject: [PATCH v4 20/47] hw/xtensa/virt: use pci_init_nic_devices()
Date: Fri, 26 Jan 2024 17:24:57 +0000
Message-ID: <20240126173228.394202-21-dwmw2@infradead.org>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20240126173228.394202-1-dwmw2@infradead.org>
References: <20240126173228.394202-1-dwmw2@infradead.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Sender: David Woodhouse <dwmw2@infradead.org>
X-SRS-Rewrite: SMTP reverse-path rewritten from <dwmw2@infradead.org> by desiato.infradead.org. See http://www.infradead.org/rpr.html

From: David Woodhouse <dwmw@amazon.co.uk>

Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
Reviewed-by: Thomas Huth <thuth@redhat.com>
---
 hw/xtensa/virt.c | 4 +---
 1 file changed, 1 insertion(+), 3 deletions(-)

diff --git a/hw/xtensa/virt.c b/hw/xtensa/virt.c
index a6cf646e99..5310a88861 100644
--- a/hw/xtensa/virt.c
+++ b/hw/xtensa/virt.c
@@ -102,9 +102,7 @@ static void create_pcie(MachineState *ms, CPUXtensaState *env, int irq_base,
 
     pci = PCI_HOST_BRIDGE(dev);
     if (pci->bus) {
-        for (i = 0; i < nb_nics; i++) {
-            pci_nic_init_nofail(&nd_table[i], pci->bus, mc->default_nic, NULL);
-        }
+        pci_init_nic_devices(pci->bus, mc->default_nic);
     }
 }
 
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Fri Jan 26 17:38:04 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 26 Jan 2024 17:38:04 +0000
Received: from list by lists.xenproject.org with outflank-mailman.672296.1046254 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTQ9U-0007q9-Pt; Fri, 26 Jan 2024 17:38:04 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 672296.1046254; Fri, 26 Jan 2024 17:38:04 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTQ9U-0007pc-Hn; Fri, 26 Jan 2024 17:38:04 +0000
Received: by outflank-mailman (input) for mailman id 672296;
 Fri, 26 Jan 2024 17:38:02 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=46+y=JE=desiato.srs.infradead.org=BATV+5cc348fc898a3f56ac6c+7460+infradead.org+dwmw2@srs-se1.protection.inumbo.net>)
 id 1rTQ52-0004Zo-Eo
 for xen-devel@lists.xenproject.org; Fri, 26 Jan 2024 17:33:28 +0000
Received: from desiato.infradead.org (desiato.infradead.org
 [2001:8b0:10b:1:d65d:64ff:fe57:4e05])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 03557880-bc71-11ee-8a43-1f161083a0e0;
 Fri, 26 Jan 2024 18:33:27 +0100 (CET)
Received: from [2001:8b0:10b:1::ebe] (helo=i7.infradead.org)
 by desiato.infradead.org with esmtpsa (Exim 4.97.1 #2 (Red Hat Linux))
 id 1rTQ4A-000000069Um-1qlU; Fri, 26 Jan 2024 17:32:35 +0000
Received: from dwoodhou by i7.infradead.org with local (Exim 4.97.1 #2 (Red
 Hat Linux)) id 1rTQ49-00000001emM-0Fux;
 Fri, 26 Jan 2024 17:32:33 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
X-Inumbo-ID: 03557880-bc71-11ee-8a43-1f161083a0e0
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=infradead.org; s=desiato.20200630; h=Sender:Content-Transfer-Encoding:
	MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:
	Reply-To:Content-Type:Content-ID:Content-Description;
	bh=dzXOsNH9wRjvHj3st0gxTJIXdksb3OkDh+zWazNsC/A=; b=LNsJG7YJqs5GTjqRgQhdiPF1SQ
	zmcMo2Vh8Ifp/kCuxMIuGCm7/dMuLhFuR2apigsHN4jJZPSF+HPHrJr2ZqP6z7RMV61bzkBXLvYH6
	2rNAT90JcnCxqBzFUCz3zaf5GflvSPEwpRxUpA9qPkd6zr2/YaneIHitgqo9TD11/Pfxu0a027c46
	sFzjX169LBmyzhCtfCyOuWh+oGavb0R+k9ySNDACEo11Aw2ltP8fwUCM2Lcg2apWBUwxqmuXqjiQr
	CaGfRP8cy6pxHou+q1f55jHgUa1whNeFNAKMPOzCuuMcioZphqihCfaGFb0VA/CIF34gF8So7jY5G
	MU4bRqoQ==;
From: David Woodhouse <dwmw2@infradead.org>
To: qemu-devel@nongnu.org
Cc: Richard Henderson <richard.henderson@linaro.org>,
	Beniamino Galvani <b.galvani@gmail.com>,
	Peter Maydell <peter.maydell@linaro.org>,
	Strahinja Jankovic <strahinja.p.jankovic@gmail.com>,
	Niek Linnenbank <nieklinnenbank@gmail.com>,
	=?UTF-8?q?C=C3=A9dric=20Le=20Goater?= <clg@kaod.org>,
	Andrew Jeffery <andrew@codeconstruct.com.au>,
	Joel Stanley <joel@jms.id.au>,
	Igor Mitsyanko <i.mitsyanko@gmail.com>,
	Jean-Christophe Dubois <jcd@tribudubois.net>,
	Andrey Smirnov <andrew.smirnov@gmail.com>,
	=?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= <philmd@linaro.org>,
	Rob Herring <robh@kernel.org>,
	Subbaraya Sundeep <sundeep.lkml@gmail.com>,
	Jan Kiszka <jan.kiszka@web.de>,
	Tyrone Ting <kfting@nuvoton.com>,
	Hao Wu <wuhaotsh@google.com>,
	Radoslaw Biernacki <rad@semihalf.com>,
	Leif Lindholm <quic_llindhol@quicinc.com>,
	Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org>,
	"Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
	Alistair Francis <alistair@alistair23.me>,
	Helge Deller <deller@gmx.de>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Eduardo Habkost <eduardo@habkost.net>,
	"Michael S. Tsirkin" <mst@redhat.com>,
	Marcel Apfelbaum <marcel.apfelbaum@gmail.com>,
	Song Gao <gaosong@loongson.cn>,
	Thomas Huth <huth@tuxfamily.org>,
	Laurent Vivier <laurent@vivier.eu>,
	Huacai Chen <chenhuacai@kernel.org>,
	Jiaxun Yang <jiaxun.yang@flygoat.com>,
	=?UTF-8?q?Herv=C3=A9=20Poussineau?= <hpoussin@reactos.org>,
	Aleksandar Rikalo <aleksandar.rikalo@syrmia.com>,
	Aurelien Jarno <aurelien@aurel32.net>,
	Jason Wang <jasowang@redhat.com>,
	Jia Liu <proljc@gmail.com>,
	Stafford Horne <shorne@gmail.com>,
	Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>,
	Nicholas Piggin <npiggin@gmail.com>,
	Daniel Henrique Barboza <danielhb413@gmail.com>,
	David Gibson <david@gibson.dropbear.id.au>,
	Harsh Prateek Bora <harshpb@linux.ibm.com>,
	Bin Meng <bin.meng@windriver.com>,
	Palmer Dabbelt <palmer@dabbelt.com>,
	Weiwei Li <liwei1518@gmail.com>,
	Liu Zhiwei <zhiwei_liu@linux.alibaba.com>,
	Halil Pasic <pasic@linux.ibm.com>,
	Christian Borntraeger <borntraeger@linux.ibm.com>,
	Eric Farman <farman@linux.ibm.com>,
	David Hildenbrand <david@redhat.com>,
	Ilya Leoshkevich <iii@linux.ibm.com>,
	Yoshinori Sato <ysato@users.sourceforge.jp>,
	Magnus Damm <magnus.damm@gmail.com>,
	Artyom Tarasenko <atar4qemu@gmail.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Anthony Perard <anthony.perard@citrix.com>,
	Paul Durrant <paul@xen.org>,
	Max Filippov <jcmvbkbc@gmail.com>,
	qemu-arm@nongnu.org,
	qemu-ppc@nongnu.org,
	qemu-riscv@nongnu.org,
	qemu-s390x@nongnu.org,
	xen-devel@lists.xenproject.org,
	David Woodhouse <dwmw@amazon.co.uk>,
	Thomas Huth <thuth@redhat.com>
Subject: [PATCH v4 23/47] hw/arm/exynos4: use qemu_create_nic_device()
Date: Fri, 26 Jan 2024 17:25:00 +0000
Message-ID: <20240126173228.394202-24-dwmw2@infradead.org>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20240126173228.394202-1-dwmw2@infradead.org>
References: <20240126173228.394202-1-dwmw2@infradead.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Sender: David Woodhouse <dwmw2@infradead.org>
X-SRS-Rewrite: SMTP reverse-path rewritten from <dwmw2@infradead.org> by desiato.infradead.org. See http://www.infradead.org/rpr.html

From: David Woodhouse <dwmw@amazon.co.uk>

Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
Reviewed-by: Thomas Huth <thuth@redhat.com>
---
 hw/arm/exynos4_boards.c | 6 ++----
 1 file changed, 2 insertions(+), 4 deletions(-)

diff --git a/hw/arm/exynos4_boards.c b/hw/arm/exynos4_boards.c
index b0e13eb4f0..003992189b 100644
--- a/hw/arm/exynos4_boards.c
+++ b/hw/arm/exynos4_boards.c
@@ -76,10 +76,8 @@ static void lan9215_init(uint32_t base, qemu_irq irq)
     SysBusDevice *s;
 
     /* This should be a 9215 but the 9118 is close enough */
-    if (nd_table[0].used) {
-        qemu_check_nic_model(&nd_table[0], "lan9118");
-        dev = qdev_new(TYPE_LAN9118);
-        qdev_set_nic_properties(dev, &nd_table[0]);
+    dev = qemu_create_nic_device(TYPE_LAN9118, true, NULL);
+    if (dev) {
         qdev_prop_set_uint32(dev, "mode_16bit", 1);
         s = SYS_BUS_DEVICE(dev);
         sysbus_realize_and_unref(s, &error_fatal);
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Fri Jan 26 17:38:16 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 26 Jan 2024 17:38:16 +0000
Received: from list by lists.xenproject.org with outflank-mailman.672300.1046269 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTQ9c-0000GS-7X; Fri, 26 Jan 2024 17:38:12 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 672300.1046269; Fri, 26 Jan 2024 17:38:12 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTQ9c-0000GA-3l; Fri, 26 Jan 2024 17:38:12 +0000
Received: by outflank-mailman (input) for mailman id 672300;
 Fri, 26 Jan 2024 17:38:10 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=46+y=JE=desiato.srs.infradead.org=BATV+5cc348fc898a3f56ac6c+7460+infradead.org+dwmw2@srs-se1.protection.inumbo.net>)
 id 1rTQ5F-0004Zo-H9
 for xen-devel@lists.xenproject.org; Fri, 26 Jan 2024 17:33:41 +0000
Received: from desiato.infradead.org (desiato.infradead.org
 [2001:8b0:10b:1:d65d:64ff:fe57:4e05])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 09d5377a-bc71-11ee-8a43-1f161083a0e0;
 Fri, 26 Jan 2024 18:33:37 +0100 (CET)
Received: from [2001:8b0:10b:1::ebe] (helo=i7.infradead.org)
 by desiato.infradead.org with esmtpsa (Exim 4.97.1 #2 (Red Hat Linux))
 id 1rTQ4A-000000069Ur-1kMQ; Fri, 26 Jan 2024 17:32:35 +0000
Received: from dwoodhou by i7.infradead.org with local (Exim 4.97.1 #2 (Red
 Hat Linux)) id 1rTQ49-00000001enD-2h7N;
 Fri, 26 Jan 2024 17:32:33 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
X-Inumbo-ID: 09d5377a-bc71-11ee-8a43-1f161083a0e0
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=infradead.org; s=desiato.20200630; h=Sender:Content-Transfer-Encoding:
	MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:
	Reply-To:Content-Type:Content-ID:Content-Description;
	bh=9AgdaOipdb6TGOSEWyyxp0UQ70Ve7tuTnzaE+SJ5a7E=; b=RlSA+UTC7q9ijwbfNI7o2GxGTF
	ocvo504Xgs4S2Tq0KHotB1jIDV5dmolR2QzaSmqS3e5rpERnX+ZMvN4EzOjcldhT6VgL4oGjne8cv
	Spzg/M2YUy89r04o6P2VaDUd1J2hjtG4kJAhaide9arKLAsN+fXCndAj2U8Ot/6jtbzOpkQWNFx7a
	55V4Ewas7pbb76OVI4/T3uf3AE7Q5IeDPOtiCP3C8JAcEY6mN/UfIZrzXpDoX3Idkk3eboixD368U
	+5Ywg/7bzEhjlmVFzQsgeDsWCsJfAt8EiBTcE9HDKmdToVy/Nn+0sv9dd0NijVU4mkDsJhJwwr8DF
	3pG2chQA==;
From: David Woodhouse <dwmw2@infradead.org>
To: qemu-devel@nongnu.org
Cc: Richard Henderson <richard.henderson@linaro.org>,
	Beniamino Galvani <b.galvani@gmail.com>,
	Peter Maydell <peter.maydell@linaro.org>,
	Strahinja Jankovic <strahinja.p.jankovic@gmail.com>,
	Niek Linnenbank <nieklinnenbank@gmail.com>,
	=?UTF-8?q?C=C3=A9dric=20Le=20Goater?= <clg@kaod.org>,
	Andrew Jeffery <andrew@codeconstruct.com.au>,
	Joel Stanley <joel@jms.id.au>,
	Igor Mitsyanko <i.mitsyanko@gmail.com>,
	Jean-Christophe Dubois <jcd@tribudubois.net>,
	Andrey Smirnov <andrew.smirnov@gmail.com>,
	=?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= <philmd@linaro.org>,
	Rob Herring <robh@kernel.org>,
	Subbaraya Sundeep <sundeep.lkml@gmail.com>,
	Jan Kiszka <jan.kiszka@web.de>,
	Tyrone Ting <kfting@nuvoton.com>,
	Hao Wu <wuhaotsh@google.com>,
	Radoslaw Biernacki <rad@semihalf.com>,
	Leif Lindholm <quic_llindhol@quicinc.com>,
	Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org>,
	"Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
	Alistair Francis <alistair@alistair23.me>,
	Helge Deller <deller@gmx.de>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Eduardo Habkost <eduardo@habkost.net>,
	"Michael S. Tsirkin" <mst@redhat.com>,
	Marcel Apfelbaum <marcel.apfelbaum@gmail.com>,
	Song Gao <gaosong@loongson.cn>,
	Thomas Huth <huth@tuxfamily.org>,
	Laurent Vivier <laurent@vivier.eu>,
	Huacai Chen <chenhuacai@kernel.org>,
	Jiaxun Yang <jiaxun.yang@flygoat.com>,
	=?UTF-8?q?Herv=C3=A9=20Poussineau?= <hpoussin@reactos.org>,
	Aleksandar Rikalo <aleksandar.rikalo@syrmia.com>,
	Aurelien Jarno <aurelien@aurel32.net>,
	Jason Wang <jasowang@redhat.com>,
	Jia Liu <proljc@gmail.com>,
	Stafford Horne <shorne@gmail.com>,
	Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>,
	Nicholas Piggin <npiggin@gmail.com>,
	Daniel Henrique Barboza <danielhb413@gmail.com>,
	David Gibson <david@gibson.dropbear.id.au>,
	Harsh Prateek Bora <harshpb@linux.ibm.com>,
	Bin Meng <bin.meng@windriver.com>,
	Palmer Dabbelt <palmer@dabbelt.com>,
	Weiwei Li <liwei1518@gmail.com>,
	Liu Zhiwei <zhiwei_liu@linux.alibaba.com>,
	Halil Pasic <pasic@linux.ibm.com>,
	Christian Borntraeger <borntraeger@linux.ibm.com>,
	Eric Farman <farman@linux.ibm.com>,
	David Hildenbrand <david@redhat.com>,
	Ilya Leoshkevich <iii@linux.ibm.com>,
	Yoshinori Sato <ysato@users.sourceforge.jp>,
	Magnus Damm <magnus.damm@gmail.com>,
	Artyom Tarasenko <atar4qemu@gmail.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Anthony Perard <anthony.perard@citrix.com>,
	Paul Durrant <paul@xen.org>,
	Max Filippov <jcmvbkbc@gmail.com>,
	qemu-arm@nongnu.org,
	qemu-ppc@nongnu.org,
	qemu-riscv@nongnu.org,
	qemu-s390x@nongnu.org,
	xen-devel@lists.xenproject.org,
	David Woodhouse <dwmw@amazon.co.uk>
Subject: [PATCH v4 30/47] hw/arm: use qemu_configure_nic_device()
Date: Fri, 26 Jan 2024 17:25:07 +0000
Message-ID: <20240126173228.394202-31-dwmw2@infradead.org>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20240126173228.394202-1-dwmw2@infradead.org>
References: <20240126173228.394202-1-dwmw2@infradead.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Sender: David Woodhouse <dwmw2@infradead.org>
X-SRS-Rewrite: SMTP reverse-path rewritten from <dwmw2@infradead.org> by desiato.infradead.org. See http://www.infradead.org/rpr.html

From: David Woodhouse <dwmw@amazon.co.uk>

Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
---
 hw/arm/mps2-tz.c     |  8 ++------
 hw/arm/msf2-soc.c    |  6 +-----
 hw/arm/musicpal.c    |  3 +--
 hw/arm/xilinx_zynq.c | 11 ++++-------
 hw/arm/xlnx-versal.c |  7 +------
 hw/arm/xlnx-zynqmp.c |  8 +-------
 6 files changed, 10 insertions(+), 33 deletions(-)

diff --git a/hw/arm/mps2-tz.c b/hw/arm/mps2-tz.c
index 5d8cdc1a4c..a2d18afd79 100644
--- a/hw/arm/mps2-tz.c
+++ b/hw/arm/mps2-tz.c
@@ -503,14 +503,12 @@ static MemoryRegion *make_eth_dev(MPS2TZMachineState *mms, void *opaque,
                                   const PPCExtraData *extradata)
 {
     SysBusDevice *s;
-    NICInfo *nd = &nd_table[0];
 
     /* In hardware this is a LAN9220; the LAN9118 is software compatible
      * except that it doesn't support the checksum-offload feature.
      */
-    qemu_check_nic_model(nd, "lan9118");
     mms->lan9118 = qdev_new(TYPE_LAN9118);
-    qdev_set_nic_properties(mms->lan9118, nd);
+    qemu_configure_nic_device(mms->lan9118, true, NULL);
 
     s = SYS_BUS_DEVICE(mms->lan9118);
     sysbus_realize_and_unref(s, &error_fatal);
@@ -528,7 +526,6 @@ static MemoryRegion *make_eth_usb(MPS2TZMachineState *mms, void *opaque,
      * irqs[] is the ethernet IRQ.
      */
     SysBusDevice *s;
-    NICInfo *nd = &nd_table[0];
 
     memory_region_init(&mms->eth_usb_container, OBJECT(mms),
                        "mps2-tz-eth-usb-container", 0x200000);
@@ -537,9 +534,8 @@ static MemoryRegion *make_eth_usb(MPS2TZMachineState *mms, void *opaque,
      * In hardware this is a LAN9220; the LAN9118 is software compatible
      * except that it doesn't support the checksum-offload feature.
      */
-    qemu_check_nic_model(nd, "lan9118");
     mms->lan9118 = qdev_new(TYPE_LAN9118);
-    qdev_set_nic_properties(mms->lan9118, nd);
+    qemu_configure_nic_device(mms->lan9118, true, NULL);
 
     s = SYS_BUS_DEVICE(mms->lan9118);
     sysbus_realize_and_unref(s, &error_fatal);
diff --git a/hw/arm/msf2-soc.c b/hw/arm/msf2-soc.c
index b5fe9f364d..35bf1d64e1 100644
--- a/hw/arm/msf2-soc.c
+++ b/hw/arm/msf2-soc.c
@@ -197,12 +197,8 @@ static void m2sxxx_soc_realize(DeviceState *dev_soc, Error **errp)
         g_free(bus_name);
     }
 
-    /* FIXME use qdev NIC properties instead of nd_table[] */
-    if (nd_table[0].used) {
-        qemu_check_nic_model(&nd_table[0], TYPE_MSS_EMAC);
-        qdev_set_nic_properties(DEVICE(&s->emac), &nd_table[0]);
-    }
     dev = DEVICE(&s->emac);
+    qemu_configure_nic_device(dev, true, NULL);
     object_property_set_link(OBJECT(&s->emac), "ahb-bus",
                              OBJECT(get_system_memory()), &error_abort);
     if (!sysbus_realize(SYS_BUS_DEVICE(&s->emac), errp)) {
diff --git a/hw/arm/musicpal.c b/hw/arm/musicpal.c
index 3200c9f68a..8781e99d27 100644
--- a/hw/arm/musicpal.c
+++ b/hw/arm/musicpal.c
@@ -1286,9 +1286,8 @@ static void musicpal_init(MachineState *machine)
     }
     sysbus_create_simple(TYPE_MV88W8618_FLASHCFG, MP_FLASHCFG_BASE, NULL);
 
-    qemu_check_nic_model(&nd_table[0], "mv88w8618");
     dev = qdev_new(TYPE_MV88W8618_ETH);
-    qdev_set_nic_properties(dev, &nd_table[0]);
+    qemu_configure_nic_device(dev, true, "mv88w8618");
     object_property_set_link(OBJECT(dev), "dma-memory",
                              OBJECT(get_system_memory()), &error_fatal);
     sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal);
diff --git a/hw/arm/xilinx_zynq.c b/hw/arm/xilinx_zynq.c
index dbb9793aa1..73a6472b91 100644
--- a/hw/arm/xilinx_zynq.c
+++ b/hw/arm/xilinx_zynq.c
@@ -108,16 +108,13 @@ static void zynq_write_board_setup(ARMCPU *cpu,
 
 static struct arm_boot_info zynq_binfo = {};
 
-static void gem_init(NICInfo *nd, uint32_t base, qemu_irq irq)
+static void gem_init(uint32_t base, qemu_irq irq)
 {
     DeviceState *dev;
     SysBusDevice *s;
 
     dev = qdev_new(TYPE_CADENCE_GEM);
-    if (nd->used) {
-        qemu_check_nic_model(nd, TYPE_CADENCE_GEM);
-        qdev_set_nic_properties(dev, nd);
-    }
+    qemu_configure_nic_device(dev, true, NULL);
     object_property_set_int(OBJECT(dev), "phy-addr", 7, &error_abort);
     s = SYS_BUS_DEVICE(dev);
     sysbus_realize_and_unref(s, &error_fatal);
@@ -279,8 +276,8 @@ static void zynq_init(MachineState *machine)
     sysbus_create_varargs("cadence_ttc", 0xF8002000,
             pic[69-IRQ_OFFSET], pic[70-IRQ_OFFSET], pic[71-IRQ_OFFSET], NULL);
 
-    gem_init(&nd_table[0], 0xE000B000, pic[54-IRQ_OFFSET]);
-    gem_init(&nd_table[1], 0xE000C000, pic[77-IRQ_OFFSET]);
+    gem_init(0xE000B000, pic[54 - IRQ_OFFSET]);
+    gem_init(0xE000C000, pic[77 - IRQ_OFFSET]);
 
     for (n = 0; n < 2; n++) {
         int hci_irq = n ? 79 : 56;
diff --git a/hw/arm/xlnx-versal.c b/hw/arm/xlnx-versal.c
index 9600551c44..01965ddf99 100644
--- a/hw/arm/xlnx-versal.c
+++ b/hw/arm/xlnx-versal.c
@@ -254,18 +254,13 @@ static void versal_create_gems(Versal *s, qemu_irq *pic)
         static const int irqs[] = { VERSAL_GEM0_IRQ_0, VERSAL_GEM1_IRQ_0};
         static const uint64_t addrs[] = { MM_GEM0, MM_GEM1 };
         char *name = g_strdup_printf("gem%d", i);
-        NICInfo *nd = &nd_table[i];
         DeviceState *dev;
         MemoryRegion *mr;
 
         object_initialize_child(OBJECT(s), name, &s->lpd.iou.gem[i],
                                 TYPE_CADENCE_GEM);
         dev = DEVICE(&s->lpd.iou.gem[i]);
-        /* FIXME use qdev NIC properties instead of nd_table[] */
-        if (nd->used) {
-            qemu_check_nic_model(nd, "cadence_gem");
-            qdev_set_nic_properties(dev, nd);
-        }
+        qemu_configure_nic_device(dev, true, NULL);
         object_property_set_int(OBJECT(dev), "phy-addr", 23, &error_abort);
         object_property_set_int(OBJECT(dev), "num-priority-queues", 2,
                                 &error_abort);
diff --git a/hw/arm/xlnx-zynqmp.c b/hw/arm/xlnx-zynqmp.c
index 5905a33015..4f1714e4a1 100644
--- a/hw/arm/xlnx-zynqmp.c
+++ b/hw/arm/xlnx-zynqmp.c
@@ -616,13 +616,7 @@ static void xlnx_zynqmp_realize(DeviceState *dev, Error **errp)
     }
 
     for (i = 0; i < XLNX_ZYNQMP_NUM_GEMS; i++) {
-        NICInfo *nd = &nd_table[i];
-
-        /* FIXME use qdev NIC properties instead of nd_table[] */
-        if (nd->used) {
-            qemu_check_nic_model(nd, TYPE_CADENCE_GEM);
-            qdev_set_nic_properties(DEVICE(&s->gem[i]), nd);
-        }
+        qemu_configure_nic_device(DEVICE(&s->gem[i]), true, NULL);
         object_property_set_int(OBJECT(&s->gem[i]), "revision", GEM_REVISION,
                                 &error_abort);
         object_property_set_int(OBJECT(&s->gem[i]), "phy-addr", 23,
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Fri Jan 26 17:38:21 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 26 Jan 2024 17:38:21 +0000
Received: from list by lists.xenproject.org with outflank-mailman.672305.1046279 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTQ9l-00013q-Gw; Fri, 26 Jan 2024 17:38:21 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 672305.1046279; Fri, 26 Jan 2024 17:38:21 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTQ9l-00013h-De; Fri, 26 Jan 2024 17:38:21 +0000
Received: by outflank-mailman (input) for mailman id 672305;
 Fri, 26 Jan 2024 17:38:19 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=46+y=JE=desiato.srs.infradead.org=BATV+5cc348fc898a3f56ac6c+7460+infradead.org+dwmw2@srs-se1.protection.inumbo.net>)
 id 1rTQ55-0004m7-RD
 for xen-devel@lists.xenproject.org; Fri, 26 Jan 2024 17:33:31 +0000
Received: from desiato.infradead.org (desiato.infradead.org
 [2001:8b0:10b:1:d65d:64ff:fe57:4e05])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 01e77551-bc71-11ee-98f5-efadbce2ee36;
 Fri, 26 Jan 2024 18:33:24 +0100 (CET)
Received: from [2001:8b0:10b:1::ebe] (helo=i7.infradead.org)
 by desiato.infradead.org with esmtpsa (Exim 4.97.1 #2 (Red Hat Linux))
 id 1rTQ4A-000000069Up-1vM6; Fri, 26 Jan 2024 17:32:35 +0000
Received: from dwoodhou by i7.infradead.org with local (Exim 4.97.1 #2 (Red
 Hat Linux)) id 1rTQ49-00000001en3-1zqq;
 Fri, 26 Jan 2024 17:32:33 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
X-Inumbo-ID: 01e77551-bc71-11ee-98f5-efadbce2ee36
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=infradead.org; s=desiato.20200630; h=Sender:Content-Transfer-Encoding:
	MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:
	Reply-To:Content-Type:Content-ID:Content-Description;
	bh=X6ke30CwveEkz5smymx38sGBgkKUHVYamBl46p3i/0I=; b=G494fFd2mP0Dj7LuDOipJm7Owz
	lg4FxCPBqEekH32mKUFiRpjvM4gbvJl8IyqV24tQnkqtoD3kIoU0//E55ptwp/KNLJLObDFWl84xA
	LyyEbvysIGcuVn6jGjouhI95tXxUJ5Wd2Y1sxDNUbYJzAg1ojC1/ejwquyKqaxjA5h1ljcaxMG72Y
	kKR324Lr/AGkF8i4Pg3J0gV8ytJQjyDewTTJR3xZfCcDxwRcsAqAf2QEZIPUmTm49PSKqH9r6ZzZo
	qoBceM7r7v7IC4Pnmllgo8gsJCI7tdgMmdddhMb++f9cefXfZaemmAftT3NzjS7qS0dXTKscg1YGC
	Zf2G4uPw==;
From: David Woodhouse <dwmw2@infradead.org>
To: qemu-devel@nongnu.org
Cc: Richard Henderson <richard.henderson@linaro.org>,
	Beniamino Galvani <b.galvani@gmail.com>,
	Peter Maydell <peter.maydell@linaro.org>,
	Strahinja Jankovic <strahinja.p.jankovic@gmail.com>,
	Niek Linnenbank <nieklinnenbank@gmail.com>,
	=?UTF-8?q?C=C3=A9dric=20Le=20Goater?= <clg@kaod.org>,
	Andrew Jeffery <andrew@codeconstruct.com.au>,
	Joel Stanley <joel@jms.id.au>,
	Igor Mitsyanko <i.mitsyanko@gmail.com>,
	Jean-Christophe Dubois <jcd@tribudubois.net>,
	Andrey Smirnov <andrew.smirnov@gmail.com>,
	=?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= <philmd@linaro.org>,
	Rob Herring <robh@kernel.org>,
	Subbaraya Sundeep <sundeep.lkml@gmail.com>,
	Jan Kiszka <jan.kiszka@web.de>,
	Tyrone Ting <kfting@nuvoton.com>,
	Hao Wu <wuhaotsh@google.com>,
	Radoslaw Biernacki <rad@semihalf.com>,
	Leif Lindholm <quic_llindhol@quicinc.com>,
	Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org>,
	"Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
	Alistair Francis <alistair@alistair23.me>,
	Helge Deller <deller@gmx.de>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Eduardo Habkost <eduardo@habkost.net>,
	"Michael S. Tsirkin" <mst@redhat.com>,
	Marcel Apfelbaum <marcel.apfelbaum@gmail.com>,
	Song Gao <gaosong@loongson.cn>,
	Thomas Huth <huth@tuxfamily.org>,
	Laurent Vivier <laurent@vivier.eu>,
	Huacai Chen <chenhuacai@kernel.org>,
	Jiaxun Yang <jiaxun.yang@flygoat.com>,
	=?UTF-8?q?Herv=C3=A9=20Poussineau?= <hpoussin@reactos.org>,
	Aleksandar Rikalo <aleksandar.rikalo@syrmia.com>,
	Aurelien Jarno <aurelien@aurel32.net>,
	Jason Wang <jasowang@redhat.com>,
	Jia Liu <proljc@gmail.com>,
	Stafford Horne <shorne@gmail.com>,
	Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>,
	Nicholas Piggin <npiggin@gmail.com>,
	Daniel Henrique Barboza <danielhb413@gmail.com>,
	David Gibson <david@gibson.dropbear.id.au>,
	Harsh Prateek Bora <harshpb@linux.ibm.com>,
	Bin Meng <bin.meng@windriver.com>,
	Palmer Dabbelt <palmer@dabbelt.com>,
	Weiwei Li <liwei1518@gmail.com>,
	Liu Zhiwei <zhiwei_liu@linux.alibaba.com>,
	Halil Pasic <pasic@linux.ibm.com>,
	Christian Borntraeger <borntraeger@linux.ibm.com>,
	Eric Farman <farman@linux.ibm.com>,
	David Hildenbrand <david@redhat.com>,
	Ilya Leoshkevich <iii@linux.ibm.com>,
	Yoshinori Sato <ysato@users.sourceforge.jp>,
	Magnus Damm <magnus.damm@gmail.com>,
	Artyom Tarasenko <atar4qemu@gmail.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Anthony Perard <anthony.perard@citrix.com>,
	Paul Durrant <paul@xen.org>,
	Max Filippov <jcmvbkbc@gmail.com>,
	qemu-arm@nongnu.org,
	qemu-ppc@nongnu.org,
	qemu-riscv@nongnu.org,
	qemu-s390x@nongnu.org,
	xen-devel@lists.xenproject.org,
	David Woodhouse <dwmw@amazon.co.uk>
Subject: [PATCH v4 28/47] hw/arm/npcm7xx: use qemu_configure_nic_device, allow emc0/emc1 as aliases
Date: Fri, 26 Jan 2024 17:25:05 +0000
Message-ID: <20240126173228.394202-29-dwmw2@infradead.org>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20240126173228.394202-1-dwmw2@infradead.org>
References: <20240126173228.394202-1-dwmw2@infradead.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Sender: David Woodhouse <dwmw2@infradead.org>
X-SRS-Rewrite: SMTP reverse-path rewritten from <dwmw2@infradead.org> by desiato.infradead.org. See http://www.infradead.org/rpr.html

From: David Woodhouse <dwmw@amazon.co.uk>

Also update the test to specify which device to attach the test socket
to, and remove the comment lamenting the fact that we can't do so.

Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
---
 hw/arm/npcm7xx.c               | 16 +++++++++-------
 tests/qtest/npcm7xx_emc-test.c | 18 ++++--------------
 2 files changed, 13 insertions(+), 21 deletions(-)

diff --git a/hw/arm/npcm7xx.c b/hw/arm/npcm7xx.c
index 15ff21d047..ee395864e4 100644
--- a/hw/arm/npcm7xx.c
+++ b/hw/arm/npcm7xx.c
@@ -655,8 +655,9 @@ static void npcm7xx_realize(DeviceState *dev, Error **errp)
 
     /*
      * EMC Modules. Cannot fail.
-     * The mapping of the device to its netdev backend works as follows:
-     * emc[i] = nd_table[i]
+     * Use the available NIC configurations in order, allowing 'emc0' and
+     * 'emc1' to by used as aliases for the model= parameter to override.
+     *
      * This works around the inability to specify the netdev property for the
      * emc device: it's not pluggable and thus the -device option can't be
      * used.
@@ -664,12 +665,13 @@ static void npcm7xx_realize(DeviceState *dev, Error **errp)
     QEMU_BUILD_BUG_ON(ARRAY_SIZE(npcm7xx_emc_addr) != ARRAY_SIZE(s->emc));
     QEMU_BUILD_BUG_ON(ARRAY_SIZE(s->emc) != 2);
     for (i = 0; i < ARRAY_SIZE(s->emc); i++) {
-        s->emc[i].emc_num = i;
         SysBusDevice *sbd = SYS_BUS_DEVICE(&s->emc[i]);
-        if (nd_table[i].used) {
-            qemu_check_nic_model(&nd_table[i], TYPE_NPCM7XX_EMC);
-            qdev_set_nic_properties(DEVICE(sbd), &nd_table[i]);
-        }
+        char alias[6];
+
+        s->emc[i].emc_num = i;
+        snprintf(alias, sizeof(alias), "emc%u", i);
+        qemu_configure_nic_device(DEVICE(sbd), true, alias);
+
         /*
          * The device exists regardless of whether it's connected to a QEMU
          * netdev backend. So always instantiate it even if there is no
diff --git a/tests/qtest/npcm7xx_emc-test.c b/tests/qtest/npcm7xx_emc-test.c
index b046f1d76a..f7646fae2c 100644
--- a/tests/qtest/npcm7xx_emc-test.c
+++ b/tests/qtest/npcm7xx_emc-test.c
@@ -225,21 +225,11 @@ static int *packet_test_init(int module_num, GString *cmd_line)
     g_assert_cmpint(ret, != , -1);
 
     /*
-     * KISS and use -nic. We specify two nics (both emc{0,1}) because there's
-     * currently no way to specify only emc1: The driver implicitly relies on
-     * emc[i] == nd_table[i].
+     * KISS and use -nic. The driver accepts 'emc0' and 'emc1' as aliases
+     * in the 'model' field to specify the device to match.
      */
-    if (module_num == 0) {
-        g_string_append_printf(cmd_line,
-                               " -nic socket,fd=%d,model=" TYPE_NPCM7XX_EMC " "
-                               " -nic user,model=" TYPE_NPCM7XX_EMC " ",
-                               test_sockets[1]);
-    } else {
-        g_string_append_printf(cmd_line,
-                               " -nic user,model=" TYPE_NPCM7XX_EMC " "
-                               " -nic socket,fd=%d,model=" TYPE_NPCM7XX_EMC " ",
-                               test_sockets[1]);
-    }
+    g_string_append_printf(cmd_line, " -nic socket,fd=%d,model=emc%d ",
+                           test_sockets[1], module_num);
 
     g_test_queue_destroy(packet_test_clear, test_sockets);
     return test_sockets;
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Fri Jan 26 17:40:09 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 26 Jan 2024 17:40:09 +0000
Received: from list by lists.xenproject.org with outflank-mailman.672321.1046288 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTQBT-0003cr-Rt; Fri, 26 Jan 2024 17:40:07 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 672321.1046288; Fri, 26 Jan 2024 17:40:07 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTQBT-0003ck-Om; Fri, 26 Jan 2024 17:40:07 +0000
Received: by outflank-mailman (input) for mailman id 672321;
 Fri, 26 Jan 2024 17:40:07 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=46+y=JE=desiato.srs.infradead.org=BATV+5cc348fc898a3f56ac6c+7460+infradead.org+dwmw2@srs-se1.protection.inumbo.net>)
 id 1rTQ5D-0004m7-Sw
 for xen-devel@lists.xenproject.org; Fri, 26 Jan 2024 17:33:39 +0000
Received: from desiato.infradead.org (desiato.infradead.org
 [2001:8b0:10b:1:d65d:64ff:fe57:4e05])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 04945a1a-bc71-11ee-98f5-efadbce2ee36;
 Fri, 26 Jan 2024 18:33:29 +0100 (CET)
Received: from [2001:8b0:10b:1::ebe] (helo=i7.infradead.org)
 by desiato.infradead.org with esmtpsa (Exim 4.97.1 #2 (Red Hat Linux))
 id 1rTQ4A-000000069Ue-1wwP; Fri, 26 Jan 2024 17:32:35 +0000
Received: from dwoodhou by i7.infradead.org with local (Exim 4.97.1 #2 (Red
 Hat Linux)) id 1rTQ47-00000001elJ-0BRo;
 Fri, 26 Jan 2024 17:32:31 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
X-Inumbo-ID: 04945a1a-bc71-11ee-98f5-efadbce2ee36
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=infradead.org; s=desiato.20200630; h=Sender:Content-Transfer-Encoding:
	MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:
	Reply-To:Content-Type:Content-ID:Content-Description;
	bh=XmoH6A+nBWef4HqrfR783ZSUxaA8W49f9I7azkQqtOs=; b=FuCrBmZY5nYwKyYrErP59AA1dZ
	SWxwci4hTyJC9UXZZOp+usyr/gAyVYXGz3L7EOj4aNSPOwRWapSpc6hm68VAQYPzat9DngTZUbHja
	Mlfdfsdy3v4OkHDI5iF62kvEKkcuYBi6FgB2BGtFH/H0TeceQq6XCcMdDCY5u5oaqAZCcb/6whd47
	oJqFbYi8pQw34UzYm1n8cviAzuWn2HqbHfrAZxOD5dU13hEBwcw7cEkuyK55M1YGiMQFVTlHEBe4W
	F2JcfiF9+y/mPN/BMca2IiouKaopiqwSC4tirvd6UqGXo+J+oKwdLuAqU+v/shwadwUZg9lwKiqzP
	ulDsuIdQ==;
From: David Woodhouse <dwmw2@infradead.org>
To: qemu-devel@nongnu.org
Cc: Richard Henderson <richard.henderson@linaro.org>,
	Beniamino Galvani <b.galvani@gmail.com>,
	Peter Maydell <peter.maydell@linaro.org>,
	Strahinja Jankovic <strahinja.p.jankovic@gmail.com>,
	Niek Linnenbank <nieklinnenbank@gmail.com>,
	=?UTF-8?q?C=C3=A9dric=20Le=20Goater?= <clg@kaod.org>,
	Andrew Jeffery <andrew@codeconstruct.com.au>,
	Joel Stanley <joel@jms.id.au>,
	Igor Mitsyanko <i.mitsyanko@gmail.com>,
	Jean-Christophe Dubois <jcd@tribudubois.net>,
	Andrey Smirnov <andrew.smirnov@gmail.com>,
	=?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= <philmd@linaro.org>,
	Rob Herring <robh@kernel.org>,
	Subbaraya Sundeep <sundeep.lkml@gmail.com>,
	Jan Kiszka <jan.kiszka@web.de>,
	Tyrone Ting <kfting@nuvoton.com>,
	Hao Wu <wuhaotsh@google.com>,
	Radoslaw Biernacki <rad@semihalf.com>,
	Leif Lindholm <quic_llindhol@quicinc.com>,
	Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org>,
	"Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
	Alistair Francis <alistair@alistair23.me>,
	Helge Deller <deller@gmx.de>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Eduardo Habkost <eduardo@habkost.net>,
	"Michael S. Tsirkin" <mst@redhat.com>,
	Marcel Apfelbaum <marcel.apfelbaum@gmail.com>,
	Song Gao <gaosong@loongson.cn>,
	Thomas Huth <huth@tuxfamily.org>,
	Laurent Vivier <laurent@vivier.eu>,
	Huacai Chen <chenhuacai@kernel.org>,
	Jiaxun Yang <jiaxun.yang@flygoat.com>,
	=?UTF-8?q?Herv=C3=A9=20Poussineau?= <hpoussin@reactos.org>,
	Aleksandar Rikalo <aleksandar.rikalo@syrmia.com>,
	Aurelien Jarno <aurelien@aurel32.net>,
	Jason Wang <jasowang@redhat.com>,
	Jia Liu <proljc@gmail.com>,
	Stafford Horne <shorne@gmail.com>,
	Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>,
	Nicholas Piggin <npiggin@gmail.com>,
	Daniel Henrique Barboza <danielhb413@gmail.com>,
	David Gibson <david@gibson.dropbear.id.au>,
	Harsh Prateek Bora <harshpb@linux.ibm.com>,
	Bin Meng <bin.meng@windriver.com>,
	Palmer Dabbelt <palmer@dabbelt.com>,
	Weiwei Li <liwei1518@gmail.com>,
	Liu Zhiwei <zhiwei_liu@linux.alibaba.com>,
	Halil Pasic <pasic@linux.ibm.com>,
	Christian Borntraeger <borntraeger@linux.ibm.com>,
	Eric Farman <farman@linux.ibm.com>,
	David Hildenbrand <david@redhat.com>,
	Ilya Leoshkevich <iii@linux.ibm.com>,
	Yoshinori Sato <ysato@users.sourceforge.jp>,
	Magnus Damm <magnus.damm@gmail.com>,
	Artyom Tarasenko <atar4qemu@gmail.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Anthony Perard <anthony.perard@citrix.com>,
	Paul Durrant <paul@xen.org>,
	Max Filippov <jcmvbkbc@gmail.com>,
	qemu-arm@nongnu.org,
	qemu-ppc@nongnu.org,
	qemu-riscv@nongnu.org,
	qemu-s390x@nongnu.org,
	xen-devel@lists.xenproject.org,
	David Woodhouse <dwmw@amazon.co.uk>
Subject: [PATCH v4 02/47] net: report list of available models according to platform
Date: Fri, 26 Jan 2024 17:24:39 +0000
Message-ID: <20240126173228.394202-3-dwmw2@infradead.org>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20240126173228.394202-1-dwmw2@infradead.org>
References: <20240126173228.394202-1-dwmw2@infradead.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Sender: David Woodhouse <dwmw2@infradead.org>
X-SRS-Rewrite: SMTP reverse-path rewritten from <dwmw2@infradead.org> by desiato.infradead.org. See http://www.infradead.org/rpr.html

From: David Woodhouse <dwmw@amazon.co.uk>

By noting the models for which a configuration was requested, we can give
the user an accurate list of which NIC models were actually available on
the platform/configuration that was otherwise chosen.

Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
Reviewed-by: Paul Durrant <paul@xen.org>
---
 net/net.c | 94 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 94 insertions(+)

diff --git a/net/net.c b/net/net.c
index aeb7f573fc..962904eaef 100644
--- a/net/net.c
+++ b/net/net.c
@@ -75,6 +75,8 @@ typedef QSIMPLEQ_HEAD(, NetdevQueueEntry) NetdevQueue;
 
 static NetdevQueue nd_queue = QSIMPLEQ_HEAD_INITIALIZER(nd_queue);
 
+static GHashTable *nic_model_help;
+
 /***********************************************************/
 /* network device redirectors */
 
@@ -1087,12 +1089,94 @@ static int net_init_nic(const Netdev *netdev, const char *name,
     return idx;
 }
 
+static gboolean add_nic_result(gpointer key, gpointer value, gpointer user_data)
+{
+    GPtrArray *results = user_data;
+    GPtrArray *alias_list = value;
+    const char *model = key;
+    char *result;
+
+    if (!alias_list) {
+        result = g_strdup(model);
+    } else {
+        GString *result_str = g_string_new(model);
+        int i;
+
+        g_string_append(result_str, " (aka ");
+        for (i = 0; i < alias_list->len; i++) {
+            if (i) {
+                g_string_append(result_str, ", ");
+            }
+            g_string_append(result_str, alias_list->pdata[i]);
+        }
+        g_string_append(result_str, ")");
+        result = result_str->str;
+        g_string_free(result_str, false);
+        g_ptr_array_unref(alias_list);
+    }
+    g_ptr_array_add(results, result);
+    return true;
+}
+
+static int model_cmp(char **a, char **b)
+{
+    return strcmp(*a, *b);
+}
+
+static void show_nic_models(void)
+{
+    GPtrArray *results = g_ptr_array_new();
+    int i;
+
+    g_hash_table_foreach_remove(nic_model_help, add_nic_result, results);
+    g_ptr_array_sort(results, (GCompareFunc)model_cmp);
+
+    printf("Available NIC models for this configuration:\n");
+    for (i = 0 ; i < results->len; i++) {
+        printf("%s\n", (char *)results->pdata[i]);
+    }
+    g_hash_table_unref(nic_model_help);
+    nic_model_help = NULL;
+}
+
+static void add_nic_model_help(const char *model, const char *alias)
+{
+    GPtrArray *alias_list = NULL;
+
+    if (g_hash_table_lookup_extended(nic_model_help, model, NULL,
+                                     (gpointer *)&alias_list)) {
+        /* Already exists, no alias to add: return */
+        if (!alias) {
+            return;
+        }
+        if (alias_list) {
+            /* Check if this alias is already in the list. Add if not. */
+            if (!g_ptr_array_find_with_equal_func(alias_list, alias,
+                                                  g_str_equal, NULL)) {
+                g_ptr_array_add(alias_list, g_strdup(alias));
+            }
+            return;
+        }
+    }
+    /* Either this model wasn't in the list already, or a first alias added */
+    if (alias) {
+        alias_list = g_ptr_array_new();
+        g_ptr_array_set_free_func(alias_list, g_free);
+        g_ptr_array_add(alias_list, g_strdup(alias));
+    }
+    g_hash_table_replace(nic_model_help, g_strdup(model), alias_list);
+}
+
 NICInfo *qemu_find_nic_info(const char *typename, bool match_default,
                             const char *alias)
 {
     NICInfo *nd;
     int i;
 
+    if (nic_model_help) {
+        add_nic_model_help(typename, alias);
+    }
+
     for (i = 0; i < nb_nics; i++) {
         nd = &nd_table[i];
 
@@ -1606,6 +1690,10 @@ void net_check_clients(void)
     NetClientState *nc;
     int i;
 
+    if (nic_model_help) {
+        show_nic_models();
+        exit(0);
+    }
     net_hub_check_clients();
 
     QTAILQ_FOREACH(nc, &net_clients, next) {
@@ -1685,6 +1773,12 @@ static int net_param_nic(void *dummy, QemuOpts *opts, Error **errp)
     memset(ni, 0, sizeof(*ni));
     ni->model = qemu_opt_get_del(opts, "model");
 
+    if (!nic_model_help && !g_strcmp0(ni->model, "help")) {
+        nic_model_help = g_hash_table_new_full(g_str_hash, g_str_equal,
+                                               g_free, NULL);
+        return 0;
+    }
+
     /* Create an ID if the user did not specify one */
     nd_id = g_strdup(qemu_opts_id(opts));
     if (!nd_id) {
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Fri Jan 26 17:40:21 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 26 Jan 2024 17:40:21 +0000
Received: from list by lists.xenproject.org with outflank-mailman.672322.1046299 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTQBh-00041F-74; Fri, 26 Jan 2024 17:40:21 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 672322.1046299; Fri, 26 Jan 2024 17:40:21 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTQBh-000414-44; Fri, 26 Jan 2024 17:40:21 +0000
Received: by outflank-mailman (input) for mailman id 672322;
 Fri, 26 Jan 2024 17:40:19 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=bPDA=JE=casper.srs.infradead.org=BATV+7caeb094913322f6f00d+7460+infradead.org+dwmw2@srs-se1.protection.inumbo.net>)
 id 1rTQ4t-0004Zo-Pq
 for xen-devel@lists.xenproject.org; Fri, 26 Jan 2024 17:33:19 +0000
Received: from casper.infradead.org (casper.infradead.org
 [2001:8b0:10b:1236::1])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id fe4e181a-bc70-11ee-8a43-1f161083a0e0;
 Fri, 26 Jan 2024 18:33:18 +0100 (CET)
Received: from [2001:8b0:10b:1::ebe] (helo=i7.infradead.org)
 by casper.infradead.org with esmtpsa (Exim 4.97.1 #2 (Red Hat Linux))
 id 1rTQ48-0000000EKUL-0gC3; Fri, 26 Jan 2024 17:32:33 +0000
Received: from dwoodhou by i7.infradead.org with local (Exim 4.97.1 #2 (Red
 Hat Linux)) id 1rTQ48-00000001em5-2PYf;
 Fri, 26 Jan 2024 17:32:32 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
X-Inumbo-ID: fe4e181a-bc70-11ee-8a43-1f161083a0e0
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=infradead.org; s=casper.20170209; h=Sender:Content-Transfer-Encoding:
	MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:
	Reply-To:Content-Type:Content-ID:Content-Description;
	bh=XNIjAmOhj+SZtS07BQBFCx/gbJe5yDDVggy1z+Bpirk=; b=qRXBwy8wUZBA7uZmqg9qysYyBX
	Y6Ht7Uox+6oAhC7gW4UQMkRldIgtf5lI/GgLn4EtGwZu0/+8aZ3UQ/6sw5Nm3YMXsI9ZplbcbqVRU
	GiScBh5rU2/rvAZI+rbdLSXVYqwSpx2Xj+MikdK1RdUBZva0Xcpdckrj/KRFo1FxaE10njMG3SWRb
	LkADFbDwwlhMqaRJtmytj91Ya617+xnZWYXRs2Ed1Z3ursa9//nPX6CeTgziudkhqDHG/KmFDVYxw
	09AEiwPniBXkf+XV7YRKFK7GNdiekuVJFoJ6xULYvfLkXQR20xacHe13v/fDVjSrdNymWeMDedHXz
	Oo1BD/eA==;
From: David Woodhouse <dwmw2@infradead.org>
To: qemu-devel@nongnu.org
Cc: Richard Henderson <richard.henderson@linaro.org>,
	Beniamino Galvani <b.galvani@gmail.com>,
	Peter Maydell <peter.maydell@linaro.org>,
	Strahinja Jankovic <strahinja.p.jankovic@gmail.com>,
	Niek Linnenbank <nieklinnenbank@gmail.com>,
	=?UTF-8?q?C=C3=A9dric=20Le=20Goater?= <clg@kaod.org>,
	Andrew Jeffery <andrew@codeconstruct.com.au>,
	Joel Stanley <joel@jms.id.au>,
	Igor Mitsyanko <i.mitsyanko@gmail.com>,
	Jean-Christophe Dubois <jcd@tribudubois.net>,
	Andrey Smirnov <andrew.smirnov@gmail.com>,
	=?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= <philmd@linaro.org>,
	Rob Herring <robh@kernel.org>,
	Subbaraya Sundeep <sundeep.lkml@gmail.com>,
	Jan Kiszka <jan.kiszka@web.de>,
	Tyrone Ting <kfting@nuvoton.com>,
	Hao Wu <wuhaotsh@google.com>,
	Radoslaw Biernacki <rad@semihalf.com>,
	Leif Lindholm <quic_llindhol@quicinc.com>,
	Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org>,
	"Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
	Alistair Francis <alistair@alistair23.me>,
	Helge Deller <deller@gmx.de>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Eduardo Habkost <eduardo@habkost.net>,
	"Michael S. Tsirkin" <mst@redhat.com>,
	Marcel Apfelbaum <marcel.apfelbaum@gmail.com>,
	Song Gao <gaosong@loongson.cn>,
	Thomas Huth <huth@tuxfamily.org>,
	Laurent Vivier <laurent@vivier.eu>,
	Huacai Chen <chenhuacai@kernel.org>,
	Jiaxun Yang <jiaxun.yang@flygoat.com>,
	=?UTF-8?q?Herv=C3=A9=20Poussineau?= <hpoussin@reactos.org>,
	Aleksandar Rikalo <aleksandar.rikalo@syrmia.com>,
	Aurelien Jarno <aurelien@aurel32.net>,
	Jason Wang <jasowang@redhat.com>,
	Jia Liu <proljc@gmail.com>,
	Stafford Horne <shorne@gmail.com>,
	Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>,
	Nicholas Piggin <npiggin@gmail.com>,
	Daniel Henrique Barboza <danielhb413@gmail.com>,
	David Gibson <david@gibson.dropbear.id.au>,
	Harsh Prateek Bora <harshpb@linux.ibm.com>,
	Bin Meng <bin.meng@windriver.com>,
	Palmer Dabbelt <palmer@dabbelt.com>,
	Weiwei Li <liwei1518@gmail.com>,
	Liu Zhiwei <zhiwei_liu@linux.alibaba.com>,
	Halil Pasic <pasic@linux.ibm.com>,
	Christian Borntraeger <borntraeger@linux.ibm.com>,
	Eric Farman <farman@linux.ibm.com>,
	David Hildenbrand <david@redhat.com>,
	Ilya Leoshkevich <iii@linux.ibm.com>,
	Yoshinori Sato <ysato@users.sourceforge.jp>,
	Magnus Damm <magnus.damm@gmail.com>,
	Artyom Tarasenko <atar4qemu@gmail.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Anthony Perard <anthony.perard@citrix.com>,
	Paul Durrant <paul@xen.org>,
	Max Filippov <jcmvbkbc@gmail.com>,
	qemu-arm@nongnu.org,
	qemu-ppc@nongnu.org,
	qemu-riscv@nongnu.org,
	qemu-s390x@nongnu.org,
	xen-devel@lists.xenproject.org,
	David Woodhouse <dwmw@amazon.co.uk>
Subject: [PATCH v4 18/47] hw/sh4/r2d: use pci_init_nic_devices()
Date: Fri, 26 Jan 2024 17:24:55 +0000
Message-ID: <20240126173228.394202-19-dwmw2@infradead.org>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20240126173228.394202-1-dwmw2@infradead.org>
References: <20240126173228.394202-1-dwmw2@infradead.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Sender: David Woodhouse <dwmw2@infradead.org>
X-SRS-Rewrite: SMTP reverse-path rewritten from <dwmw2@infradead.org> by casper.infradead.org. See http://www.infradead.org/rpr.html

From: David Woodhouse <dwmw@amazon.co.uk>

Previously, the first PCI NIC would be assigned to slot 2 even if the
user override the model and made it something other than an rtl8139
which is the default. Everything else would be dynamically assigned.

Now, the first rtl8139 gets slot 2 and everything else is dynamic.

Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
Reviewed-by: Yoshinori Sato <ysato@users.sourceforge.jp>
---
 hw/sh4/r2d.c | 6 ++----
 1 file changed, 2 insertions(+), 4 deletions(-)

diff --git a/hw/sh4/r2d.c b/hw/sh4/r2d.c
index 4944994e9c..e9f316a6ce 100644
--- a/hw/sh4/r2d.c
+++ b/hw/sh4/r2d.c
@@ -240,7 +240,6 @@ static void r2d_init(MachineState *machine)
     MemoryRegion *sdram = g_new(MemoryRegion, 1);
     qemu_irq *irq;
     DriveInfo *dinfo;
-    int i;
     DeviceState *dev;
     SysBusDevice *busdev;
     MemoryRegion *address_space_mem = get_system_memory();
@@ -309,9 +308,8 @@ static void r2d_init(MachineState *machine)
                           0x555, 0x2aa, 0);
 
     /* NIC: rtl8139 on-board, and 2 slots. */
-    for (i = 0; i < nb_nics; i++)
-        pci_nic_init_nofail(&nd_table[i], pci_bus,
-                            mc->default_nic, i == 0 ? "2" : NULL);
+    pci_init_nic_in_slot(pci_bus, mc->default_nic, NULL, "2");
+    pci_init_nic_devices(pci_bus, mc->default_nic);
 
     /* USB keyboard */
     usb_create_simple(usb_bus_find(-1), "usb-kbd");
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Fri Jan 26 17:41:45 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 26 Jan 2024 17:41:45 +0000
Received: from list by lists.xenproject.org with outflank-mailman.672341.1046312 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTQD1-0005EC-Hs; Fri, 26 Jan 2024 17:41:43 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 672341.1046312; Fri, 26 Jan 2024 17:41:43 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTQD1-0005E5-E4; Fri, 26 Jan 2024 17:41:43 +0000
Received: by outflank-mailman (input) for mailman id 672341;
 Fri, 26 Jan 2024 17:41:42 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=bPDA=JE=casper.srs.infradead.org=BATV+7caeb094913322f6f00d+7460+infradead.org+dwmw2@srs-se1.protection.inumbo.net>)
 id 1rTQ4t-0004m7-Oj
 for xen-devel@lists.xenproject.org; Fri, 26 Jan 2024 17:33:19 +0000
Received: from casper.infradead.org (casper.infradead.org
 [2001:8b0:10b:1236::1])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id fc5e8e90-bc70-11ee-98f5-efadbce2ee36;
 Fri, 26 Jan 2024 18:33:15 +0100 (CET)
Received: from [2001:8b0:10b:1::ebe] (helo=i7.infradead.org)
 by casper.infradead.org with esmtpsa (Exim 4.97.1 #2 (Red Hat Linux))
 id 1rTQ49-0000000EKUx-1uSO; Fri, 26 Jan 2024 17:32:35 +0000
Received: from dwoodhou by i7.infradead.org with local (Exim 4.97.1 #2 (Red
 Hat Linux)) id 1rTQ4A-00000001eng-14GT;
 Fri, 26 Jan 2024 17:32:34 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
X-Inumbo-ID: fc5e8e90-bc70-11ee-98f5-efadbce2ee36
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=infradead.org; s=casper.20170209; h=Sender:Content-Transfer-Encoding:
	MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:
	Reply-To:Content-Type:Content-ID:Content-Description;
	bh=DVny/j77ulUUleAP4xxt8G+Z0haYgB9hlZ/h/9Yyrxg=; b=DlRBjExjlAWl+S+PBC+lla3Kef
	FuduYJJNw+3RIesEwWQ06DsltvkZ60y4rdBDynv1/T8B8x6xYBKa7PlEA43FRHSnvrqK/kcNkt6f4
	AKgmjbjlKqGsJ84ajqCs6o7Jt1R1IOYfpeRTOLvC0msw3643izcxMzr+Odu1lE9tB9En31J5J+Ypk
	d0u8RGMG34ZZ8sOqjEKpjBpG7mOPpvBL29eQY1NJhRu6nd9spHxshDeDiPi+PK0c6r0n7KVyMUZnL
	LLM1YbMTN37dL7+Qf2lYlh93U3q+exZBv4S3jTbCbNeVVNWqcCGAsr5gT2azI7+Gwixra42hQAhbq
	dj4A4AkQ==;
From: David Woodhouse <dwmw2@infradead.org>
To: qemu-devel@nongnu.org
Cc: Richard Henderson <richard.henderson@linaro.org>,
	Beniamino Galvani <b.galvani@gmail.com>,
	Peter Maydell <peter.maydell@linaro.org>,
	Strahinja Jankovic <strahinja.p.jankovic@gmail.com>,
	Niek Linnenbank <nieklinnenbank@gmail.com>,
	=?UTF-8?q?C=C3=A9dric=20Le=20Goater?= <clg@kaod.org>,
	Andrew Jeffery <andrew@codeconstruct.com.au>,
	Joel Stanley <joel@jms.id.au>,
	Igor Mitsyanko <i.mitsyanko@gmail.com>,
	Jean-Christophe Dubois <jcd@tribudubois.net>,
	Andrey Smirnov <andrew.smirnov@gmail.com>,
	=?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= <philmd@linaro.org>,
	Rob Herring <robh@kernel.org>,
	Subbaraya Sundeep <sundeep.lkml@gmail.com>,
	Jan Kiszka <jan.kiszka@web.de>,
	Tyrone Ting <kfting@nuvoton.com>,
	Hao Wu <wuhaotsh@google.com>,
	Radoslaw Biernacki <rad@semihalf.com>,
	Leif Lindholm <quic_llindhol@quicinc.com>,
	Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org>,
	"Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
	Alistair Francis <alistair@alistair23.me>,
	Helge Deller <deller@gmx.de>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Eduardo Habkost <eduardo@habkost.net>,
	"Michael S. Tsirkin" <mst@redhat.com>,
	Marcel Apfelbaum <marcel.apfelbaum@gmail.com>,
	Song Gao <gaosong@loongson.cn>,
	Thomas Huth <huth@tuxfamily.org>,
	Laurent Vivier <laurent@vivier.eu>,
	Huacai Chen <chenhuacai@kernel.org>,
	Jiaxun Yang <jiaxun.yang@flygoat.com>,
	=?UTF-8?q?Herv=C3=A9=20Poussineau?= <hpoussin@reactos.org>,
	Aleksandar Rikalo <aleksandar.rikalo@syrmia.com>,
	Aurelien Jarno <aurelien@aurel32.net>,
	Jason Wang <jasowang@redhat.com>,
	Jia Liu <proljc@gmail.com>,
	Stafford Horne <shorne@gmail.com>,
	Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>,
	Nicholas Piggin <npiggin@gmail.com>,
	Daniel Henrique Barboza <danielhb413@gmail.com>,
	David Gibson <david@gibson.dropbear.id.au>,
	Harsh Prateek Bora <harshpb@linux.ibm.com>,
	Bin Meng <bin.meng@windriver.com>,
	Palmer Dabbelt <palmer@dabbelt.com>,
	Weiwei Li <liwei1518@gmail.com>,
	Liu Zhiwei <zhiwei_liu@linux.alibaba.com>,
	Halil Pasic <pasic@linux.ibm.com>,
	Christian Borntraeger <borntraeger@linux.ibm.com>,
	Eric Farman <farman@linux.ibm.com>,
	David Hildenbrand <david@redhat.com>,
	Ilya Leoshkevich <iii@linux.ibm.com>,
	Yoshinori Sato <ysato@users.sourceforge.jp>,
	Magnus Damm <magnus.damm@gmail.com>,
	Artyom Tarasenko <atar4qemu@gmail.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Anthony Perard <anthony.perard@citrix.com>,
	Paul Durrant <paul@xen.org>,
	Max Filippov <jcmvbkbc@gmail.com>,
	qemu-arm@nongnu.org,
	qemu-ppc@nongnu.org,
	qemu-riscv@nongnu.org,
	qemu-s390x@nongnu.org,
	xen-devel@lists.xenproject.org,
	David Woodhouse <dwmw@amazon.co.uk>
Subject: [PATCH v4 37/47] hw/net/lasi_i82596: Re-enable build
Date: Fri, 26 Jan 2024 17:25:14 +0000
Message-ID: <20240126173228.394202-38-dwmw2@infradead.org>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20240126173228.394202-1-dwmw2@infradead.org>
References: <20240126173228.394202-1-dwmw2@infradead.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Sender: David Woodhouse <dwmw2@infradead.org>
X-SRS-Rewrite: SMTP reverse-path rewritten from <dwmw2@infradead.org> by casper.infradead.org. See http://www.infradead.org/rpr.html

From: David Woodhouse <dwmw@amazon.co.uk>

When converting to the shiny build-system-du-jour, a typo prevented the
last_i82596 driver from being built. Correct the config option name to
re-enable the build. And include "sysemu/sysemu.h" so it actually builds.

Fixes: b1419fa66558 ("meson: convert hw/net")
Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
---
 hw/net/lasi_i82596.c | 1 +
 hw/net/meson.build   | 2 +-
 2 files changed, 2 insertions(+), 1 deletion(-)

diff --git a/hw/net/lasi_i82596.c b/hw/net/lasi_i82596.c
index 6a3147fe2d..09e830ba5f 100644
--- a/hw/net/lasi_i82596.c
+++ b/hw/net/lasi_i82596.c
@@ -14,6 +14,7 @@
 #include "qapi/error.h"
 #include "qemu/timer.h"
 #include "hw/sysbus.h"
+#include "sysemu/sysemu.h"
 #include "net/eth.h"
 #include "hw/net/lasi_82596.h"
 #include "hw/net/i82596.h"
diff --git a/hw/net/meson.build b/hw/net/meson.build
index 9afceb0619..2b426d3d5a 100644
--- a/hw/net/meson.build
+++ b/hw/net/meson.build
@@ -33,7 +33,7 @@ system_ss.add(when: 'CONFIG_MARVELL_88W8618', if_true: files('mv88w8618_eth.c'))
 system_ss.add(when: 'CONFIG_CADENCE', if_true: files('cadence_gem.c'))
 system_ss.add(when: 'CONFIG_STELLARIS_ENET', if_true: files('stellaris_enet.c'))
 system_ss.add(when: 'CONFIG_LANCE', if_true: files('lance.c'))
-system_ss.add(when: 'CONFIG_LASI_I82596', if_true: files('lasi_i82596.c'))
+system_ss.add(when: 'CONFIG_LASI_82596', if_true: files('lasi_i82596.c'))
 system_ss.add(when: 'CONFIG_I82596_COMMON', if_true: files('i82596.c'))
 system_ss.add(when: 'CONFIG_SUNHME', if_true: files('sunhme.c'))
 system_ss.add(when: 'CONFIG_FTGMAC100', if_true: files('ftgmac100.c'))
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Fri Jan 26 17:42:26 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 26 Jan 2024 17:42:26 +0000
Received: from list by lists.xenproject.org with outflank-mailman.672346.1046322 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTQDh-0005uk-PW; Fri, 26 Jan 2024 17:42:25 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 672346.1046322; Fri, 26 Jan 2024 17:42:25 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTQDh-0005ud-Mb; Fri, 26 Jan 2024 17:42:25 +0000
Received: by outflank-mailman (input) for mailman id 672346;
 Fri, 26 Jan 2024 17:42:24 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=46+y=JE=desiato.srs.infradead.org=BATV+5cc348fc898a3f56ac6c+7460+infradead.org+dwmw2@srs-se1.protection.inumbo.net>)
 id 1rTQ58-0004m7-Rv
 for xen-devel@lists.xenproject.org; Fri, 26 Jan 2024 17:33:34 +0000
Received: from desiato.infradead.org (desiato.infradead.org
 [2001:8b0:10b:1:d65d:64ff:fe57:4e05])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 02bacc31-bc71-11ee-98f5-efadbce2ee36;
 Fri, 26 Jan 2024 18:33:26 +0100 (CET)
Received: from [2001:8b0:10b:1::ebe] (helo=i7.infradead.org)
 by desiato.infradead.org with esmtpsa (Exim 4.97.1 #2 (Red Hat Linux))
 id 1rTQ4A-000000069Ui-1qun; Fri, 26 Jan 2024 17:32:34 +0000
Received: from dwoodhou by i7.infradead.org with local (Exim 4.97.1 #2 (Red
 Hat Linux)) id 1rTQ46-00000001elG-432t;
 Fri, 26 Jan 2024 17:32:30 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
X-Inumbo-ID: 02bacc31-bc71-11ee-98f5-efadbce2ee36
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=infradead.org; s=desiato.20200630; h=Sender:Content-Transfer-Encoding:
	MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:
	Reply-To:Content-Type:Content-ID:Content-Description;
	bh=l9x9HGNJH5fBiIeKzePXsIuGh5SQlI6/4CQcfviByuY=; b=IcyrOZNXHpSLCk6TAnka1I9R+t
	3vjdvrDxoj9S0mBl3ozeCJWq/HpqMLvBUMFAORv+1SBecbE0cDjMuO9aFvZON++rc1jPkHaC+ghgP
	5L8zN3gB8nHPOYYlPmvNpLlMSpTekahGSC4AOzs6+IIk9qK+fFFqtc84HLEgjDyCzQMwocC4VIUT/
	XGz64EbdU/7DMpdxI7atb/fpQg69VBiAOalydcEJ4bCCzYa2Cs/hf3UDE3MWX4+TH52Vy8uBkTNI0
	o2fSSTMwt5iZhujAmRuoamJkL+zcASmcD5odNtASTsals+MCB8T2mzCkE+4bw69w/+TPEehpiYgeY
	5a7gBiQg==;
From: David Woodhouse <dwmw2@infradead.org>
To: qemu-devel@nongnu.org
Cc: Richard Henderson <richard.henderson@linaro.org>,
	Beniamino Galvani <b.galvani@gmail.com>,
	Peter Maydell <peter.maydell@linaro.org>,
	Strahinja Jankovic <strahinja.p.jankovic@gmail.com>,
	Niek Linnenbank <nieklinnenbank@gmail.com>,
	=?UTF-8?q?C=C3=A9dric=20Le=20Goater?= <clg@kaod.org>,
	Andrew Jeffery <andrew@codeconstruct.com.au>,
	Joel Stanley <joel@jms.id.au>,
	Igor Mitsyanko <i.mitsyanko@gmail.com>,
	Jean-Christophe Dubois <jcd@tribudubois.net>,
	Andrey Smirnov <andrew.smirnov@gmail.com>,
	=?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= <philmd@linaro.org>,
	Rob Herring <robh@kernel.org>,
	Subbaraya Sundeep <sundeep.lkml@gmail.com>,
	Jan Kiszka <jan.kiszka@web.de>,
	Tyrone Ting <kfting@nuvoton.com>,
	Hao Wu <wuhaotsh@google.com>,
	Radoslaw Biernacki <rad@semihalf.com>,
	Leif Lindholm <quic_llindhol@quicinc.com>,
	Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org>,
	"Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
	Alistair Francis <alistair@alistair23.me>,
	Helge Deller <deller@gmx.de>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Eduardo Habkost <eduardo@habkost.net>,
	"Michael S. Tsirkin" <mst@redhat.com>,
	Marcel Apfelbaum <marcel.apfelbaum@gmail.com>,
	Song Gao <gaosong@loongson.cn>,
	Thomas Huth <huth@tuxfamily.org>,
	Laurent Vivier <laurent@vivier.eu>,
	Huacai Chen <chenhuacai@kernel.org>,
	Jiaxun Yang <jiaxun.yang@flygoat.com>,
	=?UTF-8?q?Herv=C3=A9=20Poussineau?= <hpoussin@reactos.org>,
	Aleksandar Rikalo <aleksandar.rikalo@syrmia.com>,
	Aurelien Jarno <aurelien@aurel32.net>,
	Jason Wang <jasowang@redhat.com>,
	Jia Liu <proljc@gmail.com>,
	Stafford Horne <shorne@gmail.com>,
	Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>,
	Nicholas Piggin <npiggin@gmail.com>,
	Daniel Henrique Barboza <danielhb413@gmail.com>,
	David Gibson <david@gibson.dropbear.id.au>,
	Harsh Prateek Bora <harshpb@linux.ibm.com>,
	Bin Meng <bin.meng@windriver.com>,
	Palmer Dabbelt <palmer@dabbelt.com>,
	Weiwei Li <liwei1518@gmail.com>,
	Liu Zhiwei <zhiwei_liu@linux.alibaba.com>,
	Halil Pasic <pasic@linux.ibm.com>,
	Christian Borntraeger <borntraeger@linux.ibm.com>,
	Eric Farman <farman@linux.ibm.com>,
	David Hildenbrand <david@redhat.com>,
	Ilya Leoshkevich <iii@linux.ibm.com>,
	Yoshinori Sato <ysato@users.sourceforge.jp>,
	Magnus Damm <magnus.damm@gmail.com>,
	Artyom Tarasenko <atar4qemu@gmail.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Anthony Perard <anthony.perard@citrix.com>,
	Paul Durrant <paul@xen.org>,
	Max Filippov <jcmvbkbc@gmail.com>,
	qemu-arm@nongnu.org,
	qemu-ppc@nongnu.org,
	qemu-riscv@nongnu.org,
	qemu-s390x@nongnu.org,
	xen-devel@lists.xenproject.org,
	David Woodhouse <dwmw@amazon.co.uk>,
	Thomas Huth <thuth@redhat.com>
Subject: [PATCH v4 01/47] net: add qemu_{configure,create}_nic_device(), qemu_find_nic_info()
Date: Fri, 26 Jan 2024 17:24:38 +0000
Message-ID: <20240126173228.394202-2-dwmw2@infradead.org>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20240126173228.394202-1-dwmw2@infradead.org>
References: <20240126173228.394202-1-dwmw2@infradead.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Sender: David Woodhouse <dwmw2@infradead.org>
X-SRS-Rewrite: SMTP reverse-path rewritten from <dwmw2@infradead.org> by desiato.infradead.org. See http://www.infradead.org/rpr.html

From: David Woodhouse <dwmw@amazon.co.uk>

Most code which directly accesses nd_table[] and nb_nics uses them for
one of two things. Either "I have created a NIC device and I'd like a
configuration for it", or "I will create a NIC device *if* there is a
configuration for it".  With some variants on the theme around whether
they actually *check* if the model specified in the configuration is
the right one.

Provide functions which perform both of those, allowing platforms to
be a little more consistent and as a step towards making nd_table[]
and nb_nics private to the net code.

One might argue that platforms ought to be consistent about whether
they create the unconfigured devices or not, but making significant
user-visible changes is explicitly *not* the intent right now.

The new functions leave the 'model' field of the NICInfo as NULL after
using it for the default NIC model, unlike the qemu_check_nic_model()
function which does set nd->model to match default_model explicitly.
This is acceptable because there is no code which consumes nd->model
except this NIC-matching code in net/net.c, and no reasonable excuse
for any code wanting to use nd->model in future.

Also export the qemu_find_nic_info() helper, as some platforms have
special cases they need to handle.

Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
Reviewed-by: Paul Durrant <paul@xen.org>
Reviewed-by: Thomas Huth <thuth@redhat.com>
---
 include/net/net.h | 40 +++++++++++++++++++++++++++++++++++++
 net/net.c         | 51 +++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 91 insertions(+)

diff --git a/include/net/net.h b/include/net/net.h
index ffbd2c8d56..dff1872b4d 100644
--- a/include/net/net.h
+++ b/include/net/net.h
@@ -207,7 +207,47 @@ int qemu_show_nic_models(const char *arg, const char *const *models);
 void qemu_check_nic_model(NICInfo *nd, const char *model);
 int qemu_find_nic_model(NICInfo *nd, const char * const *models,
                         const char *default_model);
+/**
+ * qemu_find_nic_info: Obtain NIC configuration information
+ * @typename: Name of device object type
+ * @match_default: Match NIC configurations with no model specified
+ * @alias: Additional model string to match (for user convenience and
+ *         backward compatibility).
+ *
+ * Search for a NIC configuration matching the NIC model constraints.
+ */
+NICInfo *qemu_find_nic_info(const char *typename, bool match_default,
+                            const char *alias);
+/**
+ * qemu_configure_nic_device: Apply NIC configuration to a given device
+ * @dev: Network device to be configured
+ * @match_default: Match NIC configurations with no model specified
+ * @alias: Additional model string to match
+ *
+ * Search for a NIC configuration for the provided device, using the
+ * additionally specified matching constraints. If found, apply the
+ * configuration using qdev_set_nic_properties() and return %true.
+ *
+ * This is used by platform code which creates the device anyway,
+ * regardless of whether there is a configuration for it. This tends
+ * to be platforms which ignore `--nodefaults` and create net devices
+ * anyway, for example because the Ethernet device on that board is
+ * always physically present.
+ */
+bool qemu_configure_nic_device(DeviceState *dev, bool match_default,
+                               const char *alias);
 
+/**
+ * qemu_create_nic_device: Create a NIC device if a configuration exists for it
+ * @typename: Object typename of network device
+ * @match_default: Match NIC configurations with no model specified
+ * @alias: Additional model string to match
+ *
+ * Search for a NIC configuration for the provided device type. If found,
+ * create an object of the corresponding type and return it.
+ */
+DeviceState *qemu_create_nic_device(const char *typename, bool match_default,
+                                    const char *alias);
 void print_net_client(Monitor *mon, NetClientState *nc);
 void net_socket_rs_init(SocketReadState *rs,
                         SocketReadStateFinalize *finalize,
diff --git a/net/net.c b/net/net.c
index 0520bc1681..aeb7f573fc 100644
--- a/net/net.c
+++ b/net/net.c
@@ -1087,6 +1087,57 @@ static int net_init_nic(const Netdev *netdev, const char *name,
     return idx;
 }
 
+NICInfo *qemu_find_nic_info(const char *typename, bool match_default,
+                            const char *alias)
+{
+    NICInfo *nd;
+    int i;
+
+    for (i = 0; i < nb_nics; i++) {
+        nd = &nd_table[i];
+
+        if (!nd->used || nd->instantiated) {
+            continue;
+        }
+
+        if ((match_default && !nd->model) || !g_strcmp0(nd->model, typename)
+            || (alias && !g_strcmp0(nd->model, alias))) {
+            return nd;
+        }
+    }
+    return NULL;
+}
+
+
+/* "I have created a device. Please configure it if you can" */
+bool qemu_configure_nic_device(DeviceState *dev, bool match_default,
+                               const char *alias)
+{
+    NICInfo *nd = qemu_find_nic_info(object_get_typename(OBJECT(dev)),
+                                     match_default, alias);
+
+    if (nd) {
+        qdev_set_nic_properties(dev, nd);
+        return true;
+    }
+    return false;
+}
+
+/* "Please create a device, if you have a configuration for it" */
+DeviceState *qemu_create_nic_device(const char *typename, bool match_default,
+                                    const char *alias)
+{
+    NICInfo *nd = qemu_find_nic_info(typename, match_default, alias);
+    DeviceState *dev;
+
+    if (!nd) {
+        return NULL;
+    }
+
+    dev = qdev_new(typename);
+    qdev_set_nic_properties(dev, nd);
+    return dev;
+}
 
 static int (* const net_client_init_fun[NET_CLIENT_DRIVER__MAX])(
     const Netdev *netdev,
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Fri Jan 26 17:42:41 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 26 Jan 2024 17:42:41 +0000
Received: from list by lists.xenproject.org with outflank-mailman.672353.1046331 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTQDw-0006KX-Vq; Fri, 26 Jan 2024 17:42:40 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 672353.1046331; Fri, 26 Jan 2024 17:42:40 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTQDw-0006KQ-TH; Fri, 26 Jan 2024 17:42:40 +0000
Received: by outflank-mailman (input) for mailman id 672353;
 Fri, 26 Jan 2024 17:42:39 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=46+y=JE=desiato.srs.infradead.org=BATV+5cc348fc898a3f56ac6c+7460+infradead.org+dwmw2@srs-se1.protection.inumbo.net>)
 id 1rTQ5K-0004m7-TS
 for xen-devel@lists.xenproject.org; Fri, 26 Jan 2024 17:33:46 +0000
Received: from desiato.infradead.org (desiato.infradead.org
 [2001:8b0:10b:1:d65d:64ff:fe57:4e05])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 07d62993-bc71-11ee-98f5-efadbce2ee36;
 Fri, 26 Jan 2024 18:33:34 +0100 (CET)
Received: from [2001:8b0:10b:1::ebe] (helo=i7.infradead.org)
 by desiato.infradead.org with esmtpsa (Exim 4.97.1 #2 (Red Hat Linux))
 id 1rTQ4A-000000069Uo-1wNQ; Fri, 26 Jan 2024 17:32:35 +0000
Received: from dwoodhou by i7.infradead.org with local (Exim 4.97.1 #2 (Red
 Hat Linux)) id 1rTQ49-00000001emu-1BWn;
 Fri, 26 Jan 2024 17:32:33 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
X-Inumbo-ID: 07d62993-bc71-11ee-98f5-efadbce2ee36
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=infradead.org; s=desiato.20200630; h=Sender:Content-Transfer-Encoding:
	MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:
	Reply-To:Content-Type:Content-ID:Content-Description;
	bh=XxeZylvTDcaTa4u01FHqxu7ZZ2gT6dnZZU6JU8VOb4A=; b=jl+BB+Hf/RPEXoObcS5J1tHM7N
	KA5dLm2rkV0PD+4PcWbFue9D0OsBIxsTlMB4PA7J02YJNwuJlMaw6pHOsM+CVrRIG8Xqx2Df4AuMt
	H9soHKIaV/NUpJdrDvsBquAyZQ4Z8hIgI3oKwRG7puLS9LgfS9SHkXmFIv7cdAnY4NbxlqR7piaz5
	6Y2EIWO/akbzRSBXFX49VJcv5V4eA4xK5f85LLf2yQfMYIc8g/fpl5hvcCwIkZ+/+28ujB/hAjiIs
	Koz4p39k4rrcla0Lg777d/+5nxhGcqIT5xK7CNgkvzwXxNpf5H9GaQwg18tFi7Lw7rDhhC+DV0ljV
	UTGVcioQ==;
From: David Woodhouse <dwmw2@infradead.org>
To: qemu-devel@nongnu.org
Cc: Richard Henderson <richard.henderson@linaro.org>,
	Beniamino Galvani <b.galvani@gmail.com>,
	Peter Maydell <peter.maydell@linaro.org>,
	Strahinja Jankovic <strahinja.p.jankovic@gmail.com>,
	Niek Linnenbank <nieklinnenbank@gmail.com>,
	=?UTF-8?q?C=C3=A9dric=20Le=20Goater?= <clg@kaod.org>,
	Andrew Jeffery <andrew@codeconstruct.com.au>,
	Joel Stanley <joel@jms.id.au>,
	Igor Mitsyanko <i.mitsyanko@gmail.com>,
	Jean-Christophe Dubois <jcd@tribudubois.net>,
	Andrey Smirnov <andrew.smirnov@gmail.com>,
	=?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= <philmd@linaro.org>,
	Rob Herring <robh@kernel.org>,
	Subbaraya Sundeep <sundeep.lkml@gmail.com>,
	Jan Kiszka <jan.kiszka@web.de>,
	Tyrone Ting <kfting@nuvoton.com>,
	Hao Wu <wuhaotsh@google.com>,
	Radoslaw Biernacki <rad@semihalf.com>,
	Leif Lindholm <quic_llindhol@quicinc.com>,
	Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org>,
	"Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
	Alistair Francis <alistair@alistair23.me>,
	Helge Deller <deller@gmx.de>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Eduardo Habkost <eduardo@habkost.net>,
	"Michael S. Tsirkin" <mst@redhat.com>,
	Marcel Apfelbaum <marcel.apfelbaum@gmail.com>,
	Song Gao <gaosong@loongson.cn>,
	Thomas Huth <huth@tuxfamily.org>,
	Laurent Vivier <laurent@vivier.eu>,
	Huacai Chen <chenhuacai@kernel.org>,
	Jiaxun Yang <jiaxun.yang@flygoat.com>,
	=?UTF-8?q?Herv=C3=A9=20Poussineau?= <hpoussin@reactos.org>,
	Aleksandar Rikalo <aleksandar.rikalo@syrmia.com>,
	Aurelien Jarno <aurelien@aurel32.net>,
	Jason Wang <jasowang@redhat.com>,
	Jia Liu <proljc@gmail.com>,
	Stafford Horne <shorne@gmail.com>,
	Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>,
	Nicholas Piggin <npiggin@gmail.com>,
	Daniel Henrique Barboza <danielhb413@gmail.com>,
	David Gibson <david@gibson.dropbear.id.au>,
	Harsh Prateek Bora <harshpb@linux.ibm.com>,
	Bin Meng <bin.meng@windriver.com>,
	Palmer Dabbelt <palmer@dabbelt.com>,
	Weiwei Li <liwei1518@gmail.com>,
	Liu Zhiwei <zhiwei_liu@linux.alibaba.com>,
	Halil Pasic <pasic@linux.ibm.com>,
	Christian Borntraeger <borntraeger@linux.ibm.com>,
	Eric Farman <farman@linux.ibm.com>,
	David Hildenbrand <david@redhat.com>,
	Ilya Leoshkevich <iii@linux.ibm.com>,
	Yoshinori Sato <ysato@users.sourceforge.jp>,
	Magnus Damm <magnus.damm@gmail.com>,
	Artyom Tarasenko <atar4qemu@gmail.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Anthony Perard <anthony.perard@citrix.com>,
	Paul Durrant <paul@xen.org>,
	Max Filippov <jcmvbkbc@gmail.com>,
	qemu-arm@nongnu.org,
	qemu-ppc@nongnu.org,
	qemu-riscv@nongnu.org,
	qemu-s390x@nongnu.org,
	xen-devel@lists.xenproject.org,
	David Woodhouse <dwmw@amazon.co.uk>
Subject: [PATCH v4 26/47] hw/net/lan9118: use qemu_configure_nic_device()
Date: Fri, 26 Jan 2024 17:25:03 +0000
Message-ID: <20240126173228.394202-27-dwmw2@infradead.org>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20240126173228.394202-1-dwmw2@infradead.org>
References: <20240126173228.394202-1-dwmw2@infradead.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Sender: David Woodhouse <dwmw2@infradead.org>
X-SRS-Rewrite: SMTP reverse-path rewritten from <dwmw2@infradead.org> by desiato.infradead.org. See http://www.infradead.org/rpr.html

From: David Woodhouse <dwmw@amazon.co.uk>

Some callers instantiate the device unconditionally, others will do so only
if there is a NICInfo to go with it. This appears to be fairly random, but
preseve the existing behaviour for now.

Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
---
 hw/arm/kzm.c             | 4 ++--
 hw/arm/mps2.c            | 2 +-
 hw/arm/realview.c        | 6 ++----
 hw/arm/vexpress.c        | 4 ++--
 hw/net/lan9118.c         | 5 ++---
 include/hw/net/lan9118.h | 2 +-
 6 files changed, 10 insertions(+), 13 deletions(-)

diff --git a/hw/arm/kzm.c b/hw/arm/kzm.c
index 9be91ebeaa..2ccd6f8a76 100644
--- a/hw/arm/kzm.c
+++ b/hw/arm/kzm.c
@@ -113,8 +113,8 @@ static void kzm_init(MachineState *machine)
         alias_offset += ram[i].size;
     }
 
-    if (nd_table[0].used) {
-        lan9118_init(&nd_table[0], KZM_LAN9118_ADDR,
+    if (qemu_find_nic_info("lan9118", true, NULL)) {
+        lan9118_init(KZM_LAN9118_ADDR,
                      qdev_get_gpio_in(DEVICE(&s->soc.avic), 52));
     }
 
diff --git a/hw/arm/mps2.c b/hw/arm/mps2.c
index bd873cc5de..50919ee46d 100644
--- a/hw/arm/mps2.c
+++ b/hw/arm/mps2.c
@@ -456,7 +456,7 @@ static void mps2_common_init(MachineState *machine)
     /* In hardware this is a LAN9220; the LAN9118 is software compatible
      * except that it doesn't support the checksum-offload feature.
      */
-    lan9118_init(&nd_table[0], mmc->ethernet_base,
+    lan9118_init(mmc->ethernet_base,
                  qdev_get_gpio_in(armv7m,
                                   mmc->fpga_type == FPGA_AN511 ? 47 : 13));
 
diff --git a/hw/arm/realview.c b/hw/arm/realview.c
index 6e7529d98f..1f88da3702 100644
--- a/hw/arm/realview.c
+++ b/hw/arm/realview.c
@@ -84,7 +84,6 @@ static void realview_init(MachineState *machine,
     SysBusDevice *busdev;
     qemu_irq pic[64];
     PCIBus *pci_bus = NULL;
-    NICInfo *nd;
     DriveInfo *dinfo;
     I2CBus *i2c;
     int n;
@@ -295,10 +294,9 @@ static void realview_init(MachineState *machine,
         }
     }
 
-    nd = qemu_find_nic_info(is_pb ? "lan9118" : "smc91c111", true, NULL);
-    if (nd) {
+    if (qemu_find_nic_info(is_pb ? "lan9118" : "smc91c111", true, NULL)) {
         if (is_pb) {
-            lan9118_init(nd, 0x4e000000, pic[28]);
+            lan9118_init(0x4e000000, pic[28]);
         } else {
             smc91c111_init(0x4e000000, pic[28]);
         }
diff --git a/hw/arm/vexpress.c b/hw/arm/vexpress.c
index fd981f4c33..1e02e0965f 100644
--- a/hw/arm/vexpress.c
+++ b/hw/arm/vexpress.c
@@ -679,8 +679,8 @@ static void vexpress_common_init(MachineState *machine)
     memory_region_add_subregion(sysmem, map[VE_VIDEORAM], &vms->vram);
 
     /* 0x4e000000 LAN9118 Ethernet */
-    if (nd_table[0].used) {
-        lan9118_init(&nd_table[0], map[VE_ETHERNET], pic[15]);
+    if (qemu_find_nic_info("lan9118", true, NULL)) {
+        lan9118_init(map[VE_ETHERNET], pic[15]);
     }
 
     /* VE_USB: not modelled */
diff --git a/hw/net/lan9118.c b/hw/net/lan9118.c
index 598dd79e17..47ff25b441 100644
--- a/hw/net/lan9118.c
+++ b/hw/net/lan9118.c
@@ -1408,14 +1408,13 @@ static void lan9118_register_types(void)
 
 /* Legacy helper function.  Should go away when machine config files are
    implemented.  */
-void lan9118_init(NICInfo *nd, uint32_t base, qemu_irq irq)
+void lan9118_init(uint32_t base, qemu_irq irq)
 {
     DeviceState *dev;
     SysBusDevice *s;
 
-    qemu_check_nic_model(nd, "lan9118");
     dev = qdev_new(TYPE_LAN9118);
-    qdev_set_nic_properties(dev, nd);
+    qemu_configure_nic_device(dev, true, NULL);
     s = SYS_BUS_DEVICE(dev);
     sysbus_realize_and_unref(s, &error_fatal);
     sysbus_mmio_map(s, 0, base);
diff --git a/include/hw/net/lan9118.h b/include/hw/net/lan9118.h
index 3d0c67f339..4bf9da7a63 100644
--- a/include/hw/net/lan9118.h
+++ b/include/hw/net/lan9118.h
@@ -15,6 +15,6 @@
 
 #define TYPE_LAN9118 "lan9118"
 
-void lan9118_init(NICInfo *, uint32_t, qemu_irq);
+void lan9118_init(uint32_t, qemu_irq);
 
 #endif
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Fri Jan 26 17:42:55 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 26 Jan 2024 17:42:55 +0000
Received: from list by lists.xenproject.org with outflank-mailman.672356.1046342 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTQEA-0006ti-CN; Fri, 26 Jan 2024 17:42:54 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 672356.1046342; Fri, 26 Jan 2024 17:42:54 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTQEA-0006tb-9O; Fri, 26 Jan 2024 17:42:54 +0000
Received: by outflank-mailman (input) for mailman id 672356;
 Fri, 26 Jan 2024 17:42:53 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=46+y=JE=desiato.srs.infradead.org=BATV+5cc348fc898a3f56ac6c+7460+infradead.org+dwmw2@srs-se1.protection.inumbo.net>)
 id 1rTQ5N-0004m7-Tp
 for xen-devel@lists.xenproject.org; Fri, 26 Jan 2024 17:33:49 +0000
Received: from desiato.infradead.org (desiato.infradead.org
 [2001:8b0:10b:1:d65d:64ff:fe57:4e05])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 0a056c2a-bc71-11ee-98f5-efadbce2ee36;
 Fri, 26 Jan 2024 18:33:38 +0100 (CET)
Received: from [2001:8b0:10b:1::ebe] (helo=i7.infradead.org)
 by desiato.infradead.org with esmtpsa (Exim 4.97.1 #2 (Red Hat Linux))
 id 1rTQ4A-000000069Uj-1wtg; Fri, 26 Jan 2024 17:32:47 +0000
Received: from dwoodhou by i7.infradead.org with local (Exim 4.97.1 #2 (Red
 Hat Linux)) id 1rTQ47-00000001eln-3y12;
 Fri, 26 Jan 2024 17:32:31 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
X-Inumbo-ID: 0a056c2a-bc71-11ee-98f5-efadbce2ee36
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=infradead.org; s=desiato.20200630; h=Sender:Content-Transfer-Encoding:
	MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:
	Reply-To:Content-Type:Content-ID:Content-Description;
	bh=4LcthZeMhomcS7qQ4JhYfqujNilKqWbfcJYcyaxs+fc=; b=eb0XJkJuWocD3iK6u87tYR06n9
	ax3ot0dKSypGvUXc+P6A+yUMIk1i3PNIdSvyYe4WgJRtHGvbbkeuIkt53Nquif8nh/2x5gu93xpo2
	PAZtMoQ8ww9Ismo7iFZPEGRrB6Bocjn7I0FyBo8WJE7Tyt4Y2ikEEFx3btIW7Kz66bESjqgqSdGb1
	OfAgVgvvJ7SreyzHXMXFelEIW/XSl4VbQWXuLzxLPx9uI0lhd0g1p0u//FZIX+5tP7Nw1tmD3MCrf
	3wxV1hb3hqyP9hZNmVI2v8KGSj7ZVbhJFr8wM6ZcD0WTczEHy7RVXtbvJfHdKKPYcGzjqDMjN9uoi
	Vu8mG43A==;
From: David Woodhouse <dwmw2@infradead.org>
To: qemu-devel@nongnu.org
Cc: Richard Henderson <richard.henderson@linaro.org>,
	Beniamino Galvani <b.galvani@gmail.com>,
	Peter Maydell <peter.maydell@linaro.org>,
	Strahinja Jankovic <strahinja.p.jankovic@gmail.com>,
	Niek Linnenbank <nieklinnenbank@gmail.com>,
	=?UTF-8?q?C=C3=A9dric=20Le=20Goater?= <clg@kaod.org>,
	Andrew Jeffery <andrew@codeconstruct.com.au>,
	Joel Stanley <joel@jms.id.au>,
	Igor Mitsyanko <i.mitsyanko@gmail.com>,
	Jean-Christophe Dubois <jcd@tribudubois.net>,
	Andrey Smirnov <andrew.smirnov@gmail.com>,
	=?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= <philmd@linaro.org>,
	Rob Herring <robh@kernel.org>,
	Subbaraya Sundeep <sundeep.lkml@gmail.com>,
	Jan Kiszka <jan.kiszka@web.de>,
	Tyrone Ting <kfting@nuvoton.com>,
	Hao Wu <wuhaotsh@google.com>,
	Radoslaw Biernacki <rad@semihalf.com>,
	Leif Lindholm <quic_llindhol@quicinc.com>,
	Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org>,
	"Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
	Alistair Francis <alistair@alistair23.me>,
	Helge Deller <deller@gmx.de>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Eduardo Habkost <eduardo@habkost.net>,
	"Michael S. Tsirkin" <mst@redhat.com>,
	Marcel Apfelbaum <marcel.apfelbaum@gmail.com>,
	Song Gao <gaosong@loongson.cn>,
	Thomas Huth <huth@tuxfamily.org>,
	Laurent Vivier <laurent@vivier.eu>,
	Huacai Chen <chenhuacai@kernel.org>,
	Jiaxun Yang <jiaxun.yang@flygoat.com>,
	=?UTF-8?q?Herv=C3=A9=20Poussineau?= <hpoussin@reactos.org>,
	Aleksandar Rikalo <aleksandar.rikalo@syrmia.com>,
	Aurelien Jarno <aurelien@aurel32.net>,
	Jason Wang <jasowang@redhat.com>,
	Jia Liu <proljc@gmail.com>,
	Stafford Horne <shorne@gmail.com>,
	Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>,
	Nicholas Piggin <npiggin@gmail.com>,
	Daniel Henrique Barboza <danielhb413@gmail.com>,
	David Gibson <david@gibson.dropbear.id.au>,
	Harsh Prateek Bora <harshpb@linux.ibm.com>,
	Bin Meng <bin.meng@windriver.com>,
	Palmer Dabbelt <palmer@dabbelt.com>,
	Weiwei Li <liwei1518@gmail.com>,
	Liu Zhiwei <zhiwei_liu@linux.alibaba.com>,
	Halil Pasic <pasic@linux.ibm.com>,
	Christian Borntraeger <borntraeger@linux.ibm.com>,
	Eric Farman <farman@linux.ibm.com>,
	David Hildenbrand <david@redhat.com>,
	Ilya Leoshkevich <iii@linux.ibm.com>,
	Yoshinori Sato <ysato@users.sourceforge.jp>,
	Magnus Damm <magnus.damm@gmail.com>,
	Artyom Tarasenko <atar4qemu@gmail.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Anthony Perard <anthony.perard@citrix.com>,
	Paul Durrant <paul@xen.org>,
	Max Filippov <jcmvbkbc@gmail.com>,
	qemu-arm@nongnu.org,
	qemu-ppc@nongnu.org,
	qemu-riscv@nongnu.org,
	qemu-s390x@nongnu.org,
	xen-devel@lists.xenproject.org,
	David Woodhouse <dwmw@amazon.co.uk>,
	Thomas Huth <thuth@redhat.com>
Subject: [PATCH v4 12/47] hw/mips/fuloong2e: use pci_init_nic_devices()
Date: Fri, 26 Jan 2024 17:24:49 +0000
Message-ID: <20240126173228.394202-13-dwmw2@infradead.org>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20240126173228.394202-1-dwmw2@infradead.org>
References: <20240126173228.394202-1-dwmw2@infradead.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Sender: David Woodhouse <dwmw2@infradead.org>
X-SRS-Rewrite: SMTP reverse-path rewritten from <dwmw2@infradead.org> by desiato.infradead.org. See http://www.infradead.org/rpr.html

From: David Woodhouse <dwmw@amazon.co.uk>

The previous behaviour was: *if* the first NIC specified on the command
line was an RTL8139 (or unspecified model) then it gets assigned to PCI
slot 7, which is where the Fuloong board had an RTL8139. All other
devices (including the first, if it was specified as anything other than
an rtl8319) get dynamically assigned on the bus.

The new behaviour is subtly different: If the first NIC was given a
specific model *other* than rtl8139, and a subsequent NIC was not,
then the rtl8139 (or unspecified) NIC will go to slot 7 and the rest
will be dynamically assigned.

Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
Reviewed-by: Thomas Huth <thuth@redhat.com>
---
 hw/mips/fuloong2e.c | 16 +++-------------
 1 file changed, 3 insertions(+), 13 deletions(-)

diff --git a/hw/mips/fuloong2e.c b/hw/mips/fuloong2e.c
index 97b2c8ed8e..a45aac368c 100644
--- a/hw/mips/fuloong2e.c
+++ b/hw/mips/fuloong2e.c
@@ -201,19 +201,9 @@ static void main_cpu_reset(void *opaque)
 /* Network support */
 static void network_init(PCIBus *pci_bus)
 {
-    int i;
-
-    for (i = 0; i < nb_nics; i++) {
-        NICInfo *nd = &nd_table[i];
-        const char *default_devaddr = NULL;
-
-        if (i == 0 && (!nd->model || strcmp(nd->model, "rtl8139") == 0)) {
-            /* The Fuloong board has a RTL8139 card using PCI SLOT 7 */
-            default_devaddr = "07";
-        }
-
-        pci_nic_init_nofail(nd, pci_bus, "rtl8139", default_devaddr);
-    }
+    /* The Fuloong board has a RTL8139 card using PCI SLOT 7 */
+    pci_init_nic_in_slot(pci_bus, "rtl8139", NULL, "07");
+    pci_init_nic_devices(pci_bus, "rtl8139");
 }
 
 static void mips_fuloong2e_init(MachineState *machine)
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Fri Jan 26 17:43:33 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 26 Jan 2024 17:43:33 +0000
Received: from list by lists.xenproject.org with outflank-mailman.672364.1046352 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTQEk-0007u9-Kq; Fri, 26 Jan 2024 17:43:30 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 672364.1046352; Fri, 26 Jan 2024 17:43:30 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTQEk-0007u2-I4; Fri, 26 Jan 2024 17:43:30 +0000
Received: by outflank-mailman (input) for mailman id 672364;
 Fri, 26 Jan 2024 17:43:29 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=bPDA=JE=casper.srs.infradead.org=BATV+7caeb094913322f6f00d+7460+infradead.org+dwmw2@srs-se1.protection.inumbo.net>)
 id 1rTQ4x-0004m7-Pc
 for xen-devel@lists.xenproject.org; Fri, 26 Jan 2024 17:33:23 +0000
Received: from casper.infradead.org (casper.infradead.org
 [2001:8b0:10b:1236::1])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id ff2a3b3e-bc70-11ee-98f5-efadbce2ee36;
 Fri, 26 Jan 2024 18:33:20 +0100 (CET)
Received: from [2001:8b0:10b:1::ebe] (helo=i7.infradead.org)
 by casper.infradead.org with esmtpsa (Exim 4.97.1 #2 (Red Hat Linux))
 id 1rTQ48-0000000EKUG-0XHH; Fri, 26 Jan 2024 17:32:33 +0000
Received: from dwoodhou by i7.infradead.org with local (Exim 4.97.1 #2 (Red
 Hat Linux)) id 1rTQ48-00000001elt-0h3b;
 Fri, 26 Jan 2024 17:32:32 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
X-Inumbo-ID: ff2a3b3e-bc70-11ee-98f5-efadbce2ee36
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=infradead.org; s=casper.20170209; h=Sender:Content-Transfer-Encoding:
	MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:
	Reply-To:Content-Type:Content-ID:Content-Description;
	bh=7Uppd3XmmgMw4XasqXjrqhb0RWV0UlzHWXb7dMHxQkk=; b=Y5xjzzCyYHVwBdSMOVhNKGeW0i
	4vvcFhkcRtx0NfvDdc6Eo+Rajz/qrT7LuRHMzDNblleNw/eHjlNZ+14lo0BYTIMel5RVut4KakDcm
	pcEaYTD5+Hu0ylfmx64cEgXxj8jmLsrfwaBepCcayzt242CE3re6zAs7gU5tZvAtsTRcZw+R1hYDn
	FOKySQ4UWj+5Jv5MQFc+l4U4VHZob8iOy6Y9sS9vXKu5WMLD0IDz2QcB2wGI+Glx6W0K45sUvDE8M
	WOiS8RLg2iLZEy1jHmvYyBSND2F1F1H6LydXISsLobmrKgTkhR9byITplob0iPkEty4l/ttty6CzN
	rfP4m9+g==;
From: David Woodhouse <dwmw2@infradead.org>
To: qemu-devel@nongnu.org
Cc: Richard Henderson <richard.henderson@linaro.org>,
	Beniamino Galvani <b.galvani@gmail.com>,
	Peter Maydell <peter.maydell@linaro.org>,
	Strahinja Jankovic <strahinja.p.jankovic@gmail.com>,
	Niek Linnenbank <nieklinnenbank@gmail.com>,
	=?UTF-8?q?C=C3=A9dric=20Le=20Goater?= <clg@kaod.org>,
	Andrew Jeffery <andrew@codeconstruct.com.au>,
	Joel Stanley <joel@jms.id.au>,
	Igor Mitsyanko <i.mitsyanko@gmail.com>,
	Jean-Christophe Dubois <jcd@tribudubois.net>,
	Andrey Smirnov <andrew.smirnov@gmail.com>,
	=?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= <philmd@linaro.org>,
	Rob Herring <robh@kernel.org>,
	Subbaraya Sundeep <sundeep.lkml@gmail.com>,
	Jan Kiszka <jan.kiszka@web.de>,
	Tyrone Ting <kfting@nuvoton.com>,
	Hao Wu <wuhaotsh@google.com>,
	Radoslaw Biernacki <rad@semihalf.com>,
	Leif Lindholm <quic_llindhol@quicinc.com>,
	Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org>,
	"Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
	Alistair Francis <alistair@alistair23.me>,
	Helge Deller <deller@gmx.de>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Eduardo Habkost <eduardo@habkost.net>,
	"Michael S. Tsirkin" <mst@redhat.com>,
	Marcel Apfelbaum <marcel.apfelbaum@gmail.com>,
	Song Gao <gaosong@loongson.cn>,
	Thomas Huth <huth@tuxfamily.org>,
	Laurent Vivier <laurent@vivier.eu>,
	Huacai Chen <chenhuacai@kernel.org>,
	Jiaxun Yang <jiaxun.yang@flygoat.com>,
	=?UTF-8?q?Herv=C3=A9=20Poussineau?= <hpoussin@reactos.org>,
	Aleksandar Rikalo <aleksandar.rikalo@syrmia.com>,
	Aurelien Jarno <aurelien@aurel32.net>,
	Jason Wang <jasowang@redhat.com>,
	Jia Liu <proljc@gmail.com>,
	Stafford Horne <shorne@gmail.com>,
	Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>,
	Nicholas Piggin <npiggin@gmail.com>,
	Daniel Henrique Barboza <danielhb413@gmail.com>,
	David Gibson <david@gibson.dropbear.id.au>,
	Harsh Prateek Bora <harshpb@linux.ibm.com>,
	Bin Meng <bin.meng@windriver.com>,
	Palmer Dabbelt <palmer@dabbelt.com>,
	Weiwei Li <liwei1518@gmail.com>,
	Liu Zhiwei <zhiwei_liu@linux.alibaba.com>,
	Halil Pasic <pasic@linux.ibm.com>,
	Christian Borntraeger <borntraeger@linux.ibm.com>,
	Eric Farman <farman@linux.ibm.com>,
	David Hildenbrand <david@redhat.com>,
	Ilya Leoshkevich <iii@linux.ibm.com>,
	Yoshinori Sato <ysato@users.sourceforge.jp>,
	Magnus Damm <magnus.damm@gmail.com>,
	Artyom Tarasenko <atar4qemu@gmail.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Anthony Perard <anthony.perard@citrix.com>,
	Paul Durrant <paul@xen.org>,
	Max Filippov <jcmvbkbc@gmail.com>,
	qemu-arm@nongnu.org,
	qemu-ppc@nongnu.org,
	qemu-riscv@nongnu.org,
	qemu-s390x@nongnu.org,
	xen-devel@lists.xenproject.org,
	David Woodhouse <dwmw@amazon.co.uk>,
	Thomas Huth <thuth@redhat.com>
Subject: [PATCH v4 14/47] hw/mips/loongson3_virt: use pci_init_nic_devices()
Date: Fri, 26 Jan 2024 17:24:51 +0000
Message-ID: <20240126173228.394202-15-dwmw2@infradead.org>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20240126173228.394202-1-dwmw2@infradead.org>
References: <20240126173228.394202-1-dwmw2@infradead.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Sender: David Woodhouse <dwmw2@infradead.org>
X-SRS-Rewrite: SMTP reverse-path rewritten from <dwmw2@infradead.org> by casper.infradead.org. See http://www.infradead.org/rpr.html

From: David Woodhouse <dwmw@amazon.co.uk>

Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
Reviewed-by: Thomas Huth <thuth@redhat.com>
---
 hw/mips/loongson3_virt.c | 4 +---
 1 file changed, 1 insertion(+), 3 deletions(-)

diff --git a/hw/mips/loongson3_virt.c b/hw/mips/loongson3_virt.c
index 33eae01eca..caedde2df0 100644
--- a/hw/mips/loongson3_virt.c
+++ b/hw/mips/loongson3_virt.c
@@ -451,9 +451,7 @@ static inline void loongson3_virt_devices_init(MachineState *machine,
         usb_create_simple(usb_bus_find(-1), "usb-tablet");
     }
 
-    for (i = 0; i < nb_nics; i++) {
-        pci_nic_init_nofail(&nd_table[i], pci_bus, mc->default_nic, NULL);
-    }
+    pci_init_nic_devices(pci_bus, mc->default_nic);
 }
 
 static void mips_loongson3_virt_init(MachineState *machine)
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Fri Jan 26 17:43:33 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 26 Jan 2024 17:43:33 +0000
Received: from list by lists.xenproject.org with outflank-mailman.672366.1046355 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTQEk-0007wP-SM; Fri, 26 Jan 2024 17:43:30 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 672366.1046355; Fri, 26 Jan 2024 17:43:30 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTQEk-0007vi-O2; Fri, 26 Jan 2024 17:43:30 +0000
Received: by outflank-mailman (input) for mailman id 672366;
 Fri, 26 Jan 2024 17:43:29 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=bPDA=JE=casper.srs.infradead.org=BATV+7caeb094913322f6f00d+7460+infradead.org+dwmw2@srs-se1.protection.inumbo.net>)
 id 1rTQ4s-0004Zo-PM
 for xen-devel@lists.xenproject.org; Fri, 26 Jan 2024 17:33:18 +0000
Received: from casper.infradead.org (casper.infradead.org
 [2001:8b0:10b:1236::1])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id fd88dcc9-bc70-11ee-8a43-1f161083a0e0;
 Fri, 26 Jan 2024 18:33:17 +0100 (CET)
Received: from [2001:8b0:10b:1::ebe] (helo=i7.infradead.org)
 by casper.infradead.org with esmtpsa (Exim 4.97.1 #2 (Red Hat Linux))
 id 1rTQ48-0000000EKUE-0fRh; Fri, 26 Jan 2024 17:32:33 +0000
Received: from dwoodhou by i7.infradead.org with local (Exim 4.97.1 #2 (Red
 Hat Linux)) id 1rTQ47-00000001elS-1KpR;
 Fri, 26 Jan 2024 17:32:31 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
X-Inumbo-ID: fd88dcc9-bc70-11ee-8a43-1f161083a0e0
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=infradead.org; s=casper.20170209; h=Sender:Content-Transfer-Encoding:
	MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:
	Reply-To:Content-Type:Content-ID:Content-Description;
	bh=aYJS/1ZmHvWqcX4ZFiiuaV9MoKjFfmvD/b97zwR6RTs=; b=D64f2o9ExjTpXRh6lNheHhod11
	XLpJhKTr1/lZ/clcWVHv+r0qH+hO9IuX+5OCKW5QJDKRgIlMeO3iBkxLep82231pjtiQUg/SOyZ+3
	kjhYLEKlDpIMgbFMrc8eYUxT4T8BGApCoyxV8aAB2/qvZUVpaASy7tZZMOxv7/BwJeSYZ/WieflzD
	/vCQ5+IuDJHnHL+ksoy+2BpeR5ZcOp5mCPGHs8j+26cZsHFYatY5+TeRVWxRD3Ho5bnXnogPiHuc8
	WSVGXMZp17QLskVWHPyiskERlqsA36ZvCQf/XY5SJw5rEWhvHK2BKKZ4JwepyYFw8DtXSoYj/1ob7
	vYN8tDSQ==;
From: David Woodhouse <dwmw2@infradead.org>
To: qemu-devel@nongnu.org
Cc: Richard Henderson <richard.henderson@linaro.org>,
	Beniamino Galvani <b.galvani@gmail.com>,
	Peter Maydell <peter.maydell@linaro.org>,
	Strahinja Jankovic <strahinja.p.jankovic@gmail.com>,
	Niek Linnenbank <nieklinnenbank@gmail.com>,
	=?UTF-8?q?C=C3=A9dric=20Le=20Goater?= <clg@kaod.org>,
	Andrew Jeffery <andrew@codeconstruct.com.au>,
	Joel Stanley <joel@jms.id.au>,
	Igor Mitsyanko <i.mitsyanko@gmail.com>,
	Jean-Christophe Dubois <jcd@tribudubois.net>,
	Andrey Smirnov <andrew.smirnov@gmail.com>,
	=?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= <philmd@linaro.org>,
	Rob Herring <robh@kernel.org>,
	Subbaraya Sundeep <sundeep.lkml@gmail.com>,
	Jan Kiszka <jan.kiszka@web.de>,
	Tyrone Ting <kfting@nuvoton.com>,
	Hao Wu <wuhaotsh@google.com>,
	Radoslaw Biernacki <rad@semihalf.com>,
	Leif Lindholm <quic_llindhol@quicinc.com>,
	Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org>,
	"Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
	Alistair Francis <alistair@alistair23.me>,
	Helge Deller <deller@gmx.de>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Eduardo Habkost <eduardo@habkost.net>,
	"Michael S. Tsirkin" <mst@redhat.com>,
	Marcel Apfelbaum <marcel.apfelbaum@gmail.com>,
	Song Gao <gaosong@loongson.cn>,
	Thomas Huth <huth@tuxfamily.org>,
	Laurent Vivier <laurent@vivier.eu>,
	Huacai Chen <chenhuacai@kernel.org>,
	Jiaxun Yang <jiaxun.yang@flygoat.com>,
	=?UTF-8?q?Herv=C3=A9=20Poussineau?= <hpoussin@reactos.org>,
	Aleksandar Rikalo <aleksandar.rikalo@syrmia.com>,
	Aurelien Jarno <aurelien@aurel32.net>,
	Jason Wang <jasowang@redhat.com>,
	Jia Liu <proljc@gmail.com>,
	Stafford Horne <shorne@gmail.com>,
	Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>,
	Nicholas Piggin <npiggin@gmail.com>,
	Daniel Henrique Barboza <danielhb413@gmail.com>,
	David Gibson <david@gibson.dropbear.id.au>,
	Harsh Prateek Bora <harshpb@linux.ibm.com>,
	Bin Meng <bin.meng@windriver.com>,
	Palmer Dabbelt <palmer@dabbelt.com>,
	Weiwei Li <liwei1518@gmail.com>,
	Liu Zhiwei <zhiwei_liu@linux.alibaba.com>,
	Halil Pasic <pasic@linux.ibm.com>,
	Christian Borntraeger <borntraeger@linux.ibm.com>,
	Eric Farman <farman@linux.ibm.com>,
	David Hildenbrand <david@redhat.com>,
	Ilya Leoshkevich <iii@linux.ibm.com>,
	Yoshinori Sato <ysato@users.sourceforge.jp>,
	Magnus Damm <magnus.damm@gmail.com>,
	Artyom Tarasenko <atar4qemu@gmail.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Anthony Perard <anthony.perard@citrix.com>,
	Paul Durrant <paul@xen.org>,
	Max Filippov <jcmvbkbc@gmail.com>,
	qemu-arm@nongnu.org,
	qemu-ppc@nongnu.org,
	qemu-riscv@nongnu.org,
	qemu-s390x@nongnu.org,
	xen-devel@lists.xenproject.org,
	David Woodhouse <dwmw@amazon.co.uk>
Subject: [PATCH v4 05/47] hw/i386/pc: use qemu_get_nic_info() and pci_init_nic_devices()
Date: Fri, 26 Jan 2024 17:24:42 +0000
Message-ID: <20240126173228.394202-6-dwmw2@infradead.org>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20240126173228.394202-1-dwmw2@infradead.org>
References: <20240126173228.394202-1-dwmw2@infradead.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Sender: David Woodhouse <dwmw2@infradead.org>
X-SRS-Rewrite: SMTP reverse-path rewritten from <dwmw2@infradead.org> by casper.infradead.org. See http://www.infradead.org/rpr.html

From: David Woodhouse <dwmw@amazon.co.uk>

Eliminate direct access to nd_table[] and nb_nics by processing the the
Xen and ISA NICs first and then calling pci_init_nic_devices() for the
rest.

Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
Reviewed-by: Paul Durrant <paul@xen.org>
---
 hw/i386/pc.c                | 31 +++++++++++++++++++------------
 include/hw/net/ne2000-isa.h |  2 --
 2 files changed, 19 insertions(+), 14 deletions(-)

diff --git a/hw/i386/pc.c b/hw/i386/pc.c
index 803244e5cc..ebb0b1c667 100644
--- a/hw/i386/pc.c
+++ b/hw/i386/pc.c
@@ -654,15 +654,19 @@ static const int ne2000_io[NE2000_NB_MAX] = { 0x300, 0x320, 0x340, 0x360,
                                               0x280, 0x380 };
 static const int ne2000_irq[NE2000_NB_MAX] = { 9, 10, 11, 3, 4, 5 };
 
-static void pc_init_ne2k_isa(ISABus *bus, NICInfo *nd)
+static gboolean pc_init_ne2k_isa(ISABus *bus, NICInfo *nd, Error **errp)
 {
     static int nb_ne2k = 0;
 
-    if (nb_ne2k == NE2000_NB_MAX)
-        return;
+    if (nb_ne2k == NE2000_NB_MAX) {
+        error_setg(errp,
+                   "maximum number of ISA NE2000 devices exceeded");
+        return false;
+    }
     isa_ne2000_init(bus, ne2000_io[nb_ne2k],
                     ne2000_irq[nb_ne2k], nd);
     nb_ne2k++;
+    return true;
 }
 
 void pc_acpi_smi_interrupt(void *opaque, int irq, int level)
@@ -1297,23 +1301,26 @@ void pc_nic_init(PCMachineClass *pcmc, ISABus *isa_bus, PCIBus *pci_bus,
                  BusState *xen_bus)
 {
     MachineClass *mc = MACHINE_CLASS(pcmc);
-    int i;
+    bool default_is_ne2k = g_str_equal(mc->default_nic, TYPE_ISA_NE2000);
+    NICInfo *nd;
 
     rom_set_order_override(FW_CFG_ORDER_OVERRIDE_NIC);
-    for (i = 0; i < nb_nics; i++) {
-        NICInfo *nd = &nd_table[i];
-        const char *model = nd->model ? nd->model : mc->default_nic;
 
-        if (xen_bus && (!nd->model || g_str_equal(model, "xen-net-device"))) {
+    if (xen_bus) {
+        while ((nd = qemu_find_nic_info("xen-net-device", true, NULL))) {
             DeviceState *dev = qdev_new("xen-net-device");
             qdev_set_nic_properties(dev, nd);
             qdev_realize_and_unref(dev, xen_bus, &error_fatal);
-        } else if (g_str_equal(model, "ne2k_isa")) {
-            pc_init_ne2k_isa(isa_bus, nd);
-        } else {
-            pci_nic_init_nofail(nd, pci_bus, model, NULL);
         }
     }
+
+    while ((nd = qemu_find_nic_info(TYPE_ISA_NE2000, default_is_ne2k, NULL))) {
+        pc_init_ne2k_isa(isa_bus, nd, &error_fatal);
+    }
+
+    /* Anything remaining should be a PCI NIC */
+    pci_init_nic_devices(pci_bus, mc->default_nic);
+
     rom_reset_order_override();
 }
 
diff --git a/include/hw/net/ne2000-isa.h b/include/hw/net/ne2000-isa.h
index af59ee0b02..73bae10ad1 100644
--- a/include/hw/net/ne2000-isa.h
+++ b/include/hw/net/ne2000-isa.h
@@ -22,8 +22,6 @@ static inline ISADevice *isa_ne2000_init(ISABus *bus, int base, int irq,
 {
     ISADevice *d;
 
-    qemu_check_nic_model(nd, "ne2k_isa");
-
     d = isa_try_new(TYPE_ISA_NE2000);
     if (d) {
         DeviceState *dev = DEVICE(d);
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Fri Jan 26 17:43:35 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 26 Jan 2024 17:43:35 +0000
Received: from list by lists.xenproject.org with outflank-mailman.672367.1046371 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTQEp-0008SK-3A; Fri, 26 Jan 2024 17:43:35 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 672367.1046371; Fri, 26 Jan 2024 17:43:35 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTQEp-0008SD-0Q; Fri, 26 Jan 2024 17:43:35 +0000
Received: by outflank-mailman (input) for mailman id 672367;
 Fri, 26 Jan 2024 17:43:33 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=46+y=JE=desiato.srs.infradead.org=BATV+5cc348fc898a3f56ac6c+7460+infradead.org+dwmw2@srs-se1.protection.inumbo.net>)
 id 1rTQ54-0004m7-Qy
 for xen-devel@lists.xenproject.org; Fri, 26 Jan 2024 17:33:30 +0000
Received: from desiato.infradead.org (desiato.infradead.org
 [2001:8b0:10b:1:d65d:64ff:fe57:4e05])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 017f83e2-bc71-11ee-98f5-efadbce2ee36;
 Fri, 26 Jan 2024 18:33:24 +0100 (CET)
Received: from [2001:8b0:10b:1::ebe] (helo=i7.infradead.org)
 by desiato.infradead.org with esmtpsa (Exim 4.97.1 #2 (Red Hat Linux))
 id 1rTQ4A-000000069Ug-1sBY; Fri, 26 Jan 2024 17:32:35 +0000
Received: from dwoodhou by i7.infradead.org with local (Exim 4.97.1 #2 (Red
 Hat Linux)) id 1rTQ48-00000001elw-1AKN;
 Fri, 26 Jan 2024 17:32:32 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
X-Inumbo-ID: 017f83e2-bc71-11ee-98f5-efadbce2ee36
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=infradead.org; s=desiato.20200630; h=Sender:Content-Transfer-Encoding:
	MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:
	Reply-To:Content-Type:Content-ID:Content-Description;
	bh=g6ItrTH6xUERJPwo+cm9fCEJutLCoak9PKJqL8zqcI4=; b=ba+p04F7gmVS2ZYXXnb5q5thmB
	4WEY19RcmaOTcF1pOxT5ghJU0grzeoy1NkBTpXYYqeiSbsF6hKrVjnK1LchOXlR9IfvMejCnrvyWH
	RP6vDhuK6CM9HU+pNIKpZaF5nMW+7XzAwI1h3sdiNzZQofCBU4QAN/y2YkpSzBE8sGvI+3XmG64NS
	7tG5UqPZlt4IDE7orurvgQJom0s12YDL6mVL+sTNBfpQ/yyIxyCzOWMWX6NM0JhMqnOtIenEBgOrj
	uGP1mQcA0gpj5ssU82hi6/xV1Gr+wVWWL3Yilz7PXJ/avJI3QscQOsOp4HeoPXryJ51F38+l4y5z/
	++94306Q==;
From: David Woodhouse <dwmw2@infradead.org>
To: qemu-devel@nongnu.org
Cc: Richard Henderson <richard.henderson@linaro.org>,
	Beniamino Galvani <b.galvani@gmail.com>,
	Peter Maydell <peter.maydell@linaro.org>,
	Strahinja Jankovic <strahinja.p.jankovic@gmail.com>,
	Niek Linnenbank <nieklinnenbank@gmail.com>,
	=?UTF-8?q?C=C3=A9dric=20Le=20Goater?= <clg@kaod.org>,
	Andrew Jeffery <andrew@codeconstruct.com.au>,
	Joel Stanley <joel@jms.id.au>,
	Igor Mitsyanko <i.mitsyanko@gmail.com>,
	Jean-Christophe Dubois <jcd@tribudubois.net>,
	Andrey Smirnov <andrew.smirnov@gmail.com>,
	=?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= <philmd@linaro.org>,
	Rob Herring <robh@kernel.org>,
	Subbaraya Sundeep <sundeep.lkml@gmail.com>,
	Jan Kiszka <jan.kiszka@web.de>,
	Tyrone Ting <kfting@nuvoton.com>,
	Hao Wu <wuhaotsh@google.com>,
	Radoslaw Biernacki <rad@semihalf.com>,
	Leif Lindholm <quic_llindhol@quicinc.com>,
	Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org>,
	"Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
	Alistair Francis <alistair@alistair23.me>,
	Helge Deller <deller@gmx.de>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Eduardo Habkost <eduardo@habkost.net>,
	"Michael S. Tsirkin" <mst@redhat.com>,
	Marcel Apfelbaum <marcel.apfelbaum@gmail.com>,
	Song Gao <gaosong@loongson.cn>,
	Thomas Huth <huth@tuxfamily.org>,
	Laurent Vivier <laurent@vivier.eu>,
	Huacai Chen <chenhuacai@kernel.org>,
	Jiaxun Yang <jiaxun.yang@flygoat.com>,
	=?UTF-8?q?Herv=C3=A9=20Poussineau?= <hpoussin@reactos.org>,
	Aleksandar Rikalo <aleksandar.rikalo@syrmia.com>,
	Aurelien Jarno <aurelien@aurel32.net>,
	Jason Wang <jasowang@redhat.com>,
	Jia Liu <proljc@gmail.com>,
	Stafford Horne <shorne@gmail.com>,
	Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>,
	Nicholas Piggin <npiggin@gmail.com>,
	Daniel Henrique Barboza <danielhb413@gmail.com>,
	David Gibson <david@gibson.dropbear.id.au>,
	Harsh Prateek Bora <harshpb@linux.ibm.com>,
	Bin Meng <bin.meng@windriver.com>,
	Palmer Dabbelt <palmer@dabbelt.com>,
	Weiwei Li <liwei1518@gmail.com>,
	Liu Zhiwei <zhiwei_liu@linux.alibaba.com>,
	Halil Pasic <pasic@linux.ibm.com>,
	Christian Borntraeger <borntraeger@linux.ibm.com>,
	Eric Farman <farman@linux.ibm.com>,
	David Hildenbrand <david@redhat.com>,
	Ilya Leoshkevich <iii@linux.ibm.com>,
	Yoshinori Sato <ysato@users.sourceforge.jp>,
	Magnus Damm <magnus.damm@gmail.com>,
	Artyom Tarasenko <atar4qemu@gmail.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Anthony Perard <anthony.perard@citrix.com>,
	Paul Durrant <paul@xen.org>,
	Max Filippov <jcmvbkbc@gmail.com>,
	qemu-arm@nongnu.org,
	qemu-ppc@nongnu.org,
	qemu-riscv@nongnu.org,
	qemu-s390x@nongnu.org,
	xen-devel@lists.xenproject.org,
	David Woodhouse <dwmw@amazon.co.uk>,
	Thomas Huth <thuth@redhat.com>
Subject: [PATCH v4 15/47] hw/ppc/prep: use pci_init_nic_devices()
Date: Fri, 26 Jan 2024 17:24:52 +0000
Message-ID: <20240126173228.394202-16-dwmw2@infradead.org>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20240126173228.394202-1-dwmw2@infradead.org>
References: <20240126173228.394202-1-dwmw2@infradead.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Sender: David Woodhouse <dwmw2@infradead.org>
X-SRS-Rewrite: SMTP reverse-path rewritten from <dwmw2@infradead.org> by desiato.infradead.org. See http://www.infradead.org/rpr.html

From: David Woodhouse <dwmw@amazon.co.uk>

Previously, the first PCI NIC would be placed in PCI slot 3 and the rest
would be dynamically assigned. Even if the user overrode the default NIC
type and made it something other than PCNet.

Now, the first PCNet NIC (that is, anything not explicitly specified
to be anything different) will go to slot 3 even if it isn't the first
NIC specified on the command line. And anything else will be dynamically
assigned.

Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
Reviewed-by: Thomas Huth <thuth@redhat.com>
---
 hw/ppc/prep.c | 8 +++-----
 1 file changed, 3 insertions(+), 5 deletions(-)

diff --git a/hw/ppc/prep.c b/hw/ppc/prep.c
index 137276bcb9..1a6cd05c61 100644
--- a/hw/ppc/prep.c
+++ b/hw/ppc/prep.c
@@ -241,7 +241,6 @@ static void ibm_40p_init(MachineState *machine)
     ISADevice *isa_dev;
     ISABus *isa_bus;
     void *fw_cfg;
-    int i;
     uint32_t kernel_base = 0, initrd_base = 0;
     long kernel_size = 0, initrd_size = 0;
     char boot_device;
@@ -336,10 +335,9 @@ static void ibm_40p_init(MachineState *machine)
         /* XXX: s3-trio at PCI_DEVFN(2, 0) */
         pci_vga_init(pci_bus);
 
-        for (i = 0; i < nb_nics; i++) {
-            pci_nic_init_nofail(&nd_table[i], pci_bus, mc->default_nic,
-                                i == 0 ? "3" : NULL);
-        }
+        /* First PCNET device at PCI_DEVFN(3, 0) */
+        pci_init_nic_in_slot(pci_bus, mc->default_nic, NULL, "3");
+        pci_init_nic_devices(pci_bus, mc->default_nic);
     }
 
     /* Prepare firmware configuration for OpenBIOS */
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Fri Jan 26 17:43:35 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 26 Jan 2024 17:43:35 +0000
Received: from list by lists.xenproject.org with outflank-mailman.672368.1046377 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTQEp-0008VW-Ep; Fri, 26 Jan 2024 17:43:35 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 672368.1046377; Fri, 26 Jan 2024 17:43:35 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTQEp-0008U9-8r; Fri, 26 Jan 2024 17:43:35 +0000
Received: by outflank-mailman (input) for mailman id 672368;
 Fri, 26 Jan 2024 17:43:33 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=46+y=JE=desiato.srs.infradead.org=BATV+5cc348fc898a3f56ac6c+7460+infradead.org+dwmw2@srs-se1.protection.inumbo.net>)
 id 1rTQ5B-0004Zo-GS
 for xen-devel@lists.xenproject.org; Fri, 26 Jan 2024 17:33:37 +0000
Received: from desiato.infradead.org (desiato.infradead.org
 [2001:8b0:10b:1:d65d:64ff:fe57:4e05])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 0829b6e9-bc71-11ee-8a43-1f161083a0e0;
 Fri, 26 Jan 2024 18:33:35 +0100 (CET)
Received: from [2001:8b0:10b:1::ebe] (helo=i7.infradead.org)
 by desiato.infradead.org with esmtpsa (Exim 4.97.1 #2 (Red Hat Linux))
 id 1rTQ4B-000000069Uy-2xei; Fri, 26 Jan 2024 17:32:36 +0000
Received: from dwoodhou by i7.infradead.org with local (Exim 4.97.1 #2 (Red
 Hat Linux)) id 1rTQ4A-00000001eoF-2md2;
 Fri, 26 Jan 2024 17:32:34 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
X-Inumbo-ID: 0829b6e9-bc71-11ee-8a43-1f161083a0e0
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=infradead.org; s=desiato.20200630; h=Sender:Content-Transfer-Encoding:
	MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:
	Reply-To:Content-Type:Content-ID:Content-Description;
	bh=84SjqVRU3phUY6XFnzqwJCBs+MK5duPh9P72Y2DAnRw=; b=YLRHM0QJuZvioEMu4cTtQ8XMuH
	DVoVTEiaE3jTfvMomCo1nLl8WENf0AkMzj8FCw9W+7oiwcKi2HBu4BfDOoQVkyRU9MsxkrQ1e7Xoo
	A3MhXXnSEOIzy17tHel7ZFnScnbb+71N0lUKLS/zL6uRTqCA3xT9Z7TnteXeHUI3M3jnXdfElquLe
	DFrF7Ha30BtG/n/jc3x/HMOoIMGwInJvf3fq4+spwa79+6kWiWPn3Ljos1oDjoWwt2f8xjw9JGNut
	PoVOqnueY4A0hkcHW0bulErS47xyEAhtQFp/1VXRa7LDgHUgjJYtMtyHVIHys3oHO7S6dS2crmmcb
	QBtUxEmw==;
From: David Woodhouse <dwmw2@infradead.org>
To: qemu-devel@nongnu.org
Cc: Richard Henderson <richard.henderson@linaro.org>,
	Beniamino Galvani <b.galvani@gmail.com>,
	Peter Maydell <peter.maydell@linaro.org>,
	Strahinja Jankovic <strahinja.p.jankovic@gmail.com>,
	Niek Linnenbank <nieklinnenbank@gmail.com>,
	=?UTF-8?q?C=C3=A9dric=20Le=20Goater?= <clg@kaod.org>,
	Andrew Jeffery <andrew@codeconstruct.com.au>,
	Joel Stanley <joel@jms.id.au>,
	Igor Mitsyanko <i.mitsyanko@gmail.com>,
	Jean-Christophe Dubois <jcd@tribudubois.net>,
	Andrey Smirnov <andrew.smirnov@gmail.com>,
	=?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= <philmd@linaro.org>,
	Rob Herring <robh@kernel.org>,
	Subbaraya Sundeep <sundeep.lkml@gmail.com>,
	Jan Kiszka <jan.kiszka@web.de>,
	Tyrone Ting <kfting@nuvoton.com>,
	Hao Wu <wuhaotsh@google.com>,
	Radoslaw Biernacki <rad@semihalf.com>,
	Leif Lindholm <quic_llindhol@quicinc.com>,
	Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org>,
	"Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
	Alistair Francis <alistair@alistair23.me>,
	Helge Deller <deller@gmx.de>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Eduardo Habkost <eduardo@habkost.net>,
	"Michael S. Tsirkin" <mst@redhat.com>,
	Marcel Apfelbaum <marcel.apfelbaum@gmail.com>,
	Song Gao <gaosong@loongson.cn>,
	Thomas Huth <huth@tuxfamily.org>,
	Laurent Vivier <laurent@vivier.eu>,
	Huacai Chen <chenhuacai@kernel.org>,
	Jiaxun Yang <jiaxun.yang@flygoat.com>,
	=?UTF-8?q?Herv=C3=A9=20Poussineau?= <hpoussin@reactos.org>,
	Aleksandar Rikalo <aleksandar.rikalo@syrmia.com>,
	Aurelien Jarno <aurelien@aurel32.net>,
	Jason Wang <jasowang@redhat.com>,
	Jia Liu <proljc@gmail.com>,
	Stafford Horne <shorne@gmail.com>,
	Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>,
	Nicholas Piggin <npiggin@gmail.com>,
	Daniel Henrique Barboza <danielhb413@gmail.com>,
	David Gibson <david@gibson.dropbear.id.au>,
	Harsh Prateek Bora <harshpb@linux.ibm.com>,
	Bin Meng <bin.meng@windriver.com>,
	Palmer Dabbelt <palmer@dabbelt.com>,
	Weiwei Li <liwei1518@gmail.com>,
	Liu Zhiwei <zhiwei_liu@linux.alibaba.com>,
	Halil Pasic <pasic@linux.ibm.com>,
	Christian Borntraeger <borntraeger@linux.ibm.com>,
	Eric Farman <farman@linux.ibm.com>,
	David Hildenbrand <david@redhat.com>,
	Ilya Leoshkevich <iii@linux.ibm.com>,
	Yoshinori Sato <ysato@users.sourceforge.jp>,
	Magnus Damm <magnus.damm@gmail.com>,
	Artyom Tarasenko <atar4qemu@gmail.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Anthony Perard <anthony.perard@citrix.com>,
	Paul Durrant <paul@xen.org>,
	Max Filippov <jcmvbkbc@gmail.com>,
	qemu-arm@nongnu.org,
	qemu-ppc@nongnu.org,
	qemu-riscv@nongnu.org,
	qemu-s390x@nongnu.org,
	xen-devel@lists.xenproject.org,
	David Woodhouse <dwmw@amazon.co.uk>
Subject: [PATCH v4 42/47] hw/sparc/sun4m: use qemu_find_nic_info()
Date: Fri, 26 Jan 2024 17:25:19 +0000
Message-ID: <20240126173228.394202-43-dwmw2@infradead.org>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20240126173228.394202-1-dwmw2@infradead.org>
References: <20240126173228.394202-1-dwmw2@infradead.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Sender: David Woodhouse <dwmw2@infradead.org>
X-SRS-Rewrite: SMTP reverse-path rewritten from <dwmw2@infradead.org> by desiato.infradead.org. See http://www.infradead.org/rpr.html

From: David Woodhouse <dwmw@amazon.co.uk>

Obtain the MAC address from the NIC configuration if there is one, or
generate one explicitly so that it can be placed in the PROM.

Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
---
 hw/sparc/sun4m.c | 20 ++++++++++++++------
 1 file changed, 14 insertions(+), 6 deletions(-)

diff --git a/hw/sparc/sun4m.c b/hw/sparc/sun4m.c
index 550af01690..e782c8ec7a 100644
--- a/hw/sparc/sun4m.c
+++ b/hw/sparc/sun4m.c
@@ -299,13 +299,15 @@ static void *iommu_init(hwaddr addr, uint32_t version, qemu_irq irq)
 
 static void *sparc32_dma_init(hwaddr dma_base,
                               hwaddr esp_base, qemu_irq espdma_irq,
-                              hwaddr le_base, qemu_irq ledma_irq, NICInfo *nd)
+                              hwaddr le_base, qemu_irq ledma_irq,
+                              MACAddr *mac)
 {
     DeviceState *dma;
     ESPDMADeviceState *espdma;
     LEDMADeviceState *ledma;
     SysBusESPState *esp;
     SysBusPCNetState *lance;
+    NICInfo *nd = qemu_find_nic_info("lance", true, NULL);
 
     dma = qdev_new(TYPE_SPARC32_DMA);
     espdma = SPARC32_ESPDMA_DEVICE(object_resolve_path_component(
@@ -320,7 +322,14 @@ static void *sparc32_dma_init(hwaddr dma_base,
 
     lance = SYSBUS_PCNET(object_resolve_path_component(
                          OBJECT(ledma), "lance"));
-    qdev_set_nic_properties(DEVICE(lance), nd);
+
+    if (nd) {
+        qdev_set_nic_properties(DEVICE(lance), nd);
+        memcpy(mac->a, nd->macaddr.a, sizeof(mac->a));
+    } else {
+        qemu_macaddr_default_if_unset(mac);
+        qdev_prop_set_macaddr(DEVICE(lance), "mac", mac->a);
+    }
 
     sysbus_realize_and_unref(SYS_BUS_DEVICE(dma), &error_fatal);
     sysbus_mmio_map(SYS_BUS_DEVICE(dma), 0, dma_base);
@@ -823,7 +832,7 @@ static void sun4m_hw_init(MachineState *machine)
     unsigned int smp_cpus = machine->smp.cpus;
     unsigned int max_cpus = machine->smp.max_cpus;
     HostMemoryBackend *ram_memdev = machine->memdev;
-    NICInfo *nd = &nd_table[0];
+    MACAddr hostid;
 
     if (machine->ram_size > hwdef->max_mem) {
         error_report("Too much memory for this machine: %" PRId64 ","
@@ -884,10 +893,9 @@ static void sun4m_hw_init(MachineState *machine)
                         hwdef->iommu_pad_base, hwdef->iommu_pad_len);
     }
 
-    qemu_check_nic_model(nd, TYPE_LANCE);
     sparc32_dma_init(hwdef->dma_base,
                      hwdef->esp_base, slavio_irq[18],
-                     hwdef->le_base, slavio_irq[16], nd);
+                     hwdef->le_base, slavio_irq[16], &hostid);
 
     if (graphic_depth != 8 && graphic_depth != 24) {
         error_report("Unsupported depth: %d", graphic_depth);
@@ -1039,7 +1047,7 @@ static void sun4m_hw_init(MachineState *machine)
                                     machine->initrd_filename,
                                     machine->ram_size, &initrd_size);
 
-    nvram_init(nvram, (uint8_t *)&nd->macaddr, machine->kernel_cmdline,
+    nvram_init(nvram, hostid.a, machine->kernel_cmdline,
                machine->boot_config.order, machine->ram_size, kernel_size,
                graphic_width, graphic_height, graphic_depth,
                hwdef->nvram_machine_id, "Sun4m");
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Fri Jan 26 17:43:43 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 26 Jan 2024 17:43:43 +0000
Received: from list by lists.xenproject.org with outflank-mailman.672370.1046392 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTQEw-0000lP-Qh; Fri, 26 Jan 2024 17:43:42 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 672370.1046392; Fri, 26 Jan 2024 17:43:42 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTQEw-0000lE-MP; Fri, 26 Jan 2024 17:43:42 +0000
Received: by outflank-mailman (input) for mailman id 672370;
 Fri, 26 Jan 2024 17:43:42 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=46+y=JE=desiato.srs.infradead.org=BATV+5cc348fc898a3f56ac6c+7460+infradead.org+dwmw2@srs-se1.protection.inumbo.net>)
 id 1rTQ56-0004m7-RE
 for xen-devel@lists.xenproject.org; Fri, 26 Jan 2024 17:33:32 +0000
Received: from desiato.infradead.org (desiato.infradead.org
 [2001:8b0:10b:1:d65d:64ff:fe57:4e05])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 0261d062-bc71-11ee-98f5-efadbce2ee36;
 Fri, 26 Jan 2024 18:33:25 +0100 (CET)
Received: from [2001:8b0:10b:1::ebe] (helo=i7.infradead.org)
 by desiato.infradead.org with esmtpsa (Exim 4.97.1 #2 (Red Hat Linux))
 id 1rTQ4B-000000069V7-2w5m; Fri, 26 Jan 2024 17:32:36 +0000
Received: from dwoodhou by i7.infradead.org with local (Exim 4.97.1 #2 (Red
 Hat Linux)) id 1rTQ4A-00000001eoK-38TD;
 Fri, 26 Jan 2024 17:32:34 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
X-Inumbo-ID: 0261d062-bc71-11ee-98f5-efadbce2ee36
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=infradead.org; s=desiato.20200630; h=Sender:Content-Transfer-Encoding:
	MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:
	Reply-To:Content-Type:Content-ID:Content-Description;
	bh=mX/hl3L+uzP16qDkLnKIjlw9AZT6Th7nY6ik791ai64=; b=FEyZ2pdM526tfsTPguJ6nEMtvW
	HI13ThH4aGimnLaYdXWR6rBmwT7yOvUeWUsDqp3/RxjGthObBG+wR589pvEUzemdixC/bMU5Mps6Q
	GZLdNd4A1WuN6jfAJYdVVLx+zy2Ml0Ze7DAOdwAqJ5nLHoP2Bs2Sbzt3l/TgAi4oGa9stRTBVFars
	yi0kyONAoU/zrWfE2ZIGQxr7frBsw8wisVh/52fZ/UB5N02IFNCAuA7amOO/tPAVNricYVxymrzLH
	jlhrncipjhaI27Tw0EnVvqCioV/tFZBrjwYrghPt9PJLAFi1ybpFOoL4q36iR7L/gm+12+BCgRnKM
	+RY5auxQ==;
From: David Woodhouse <dwmw2@infradead.org>
To: qemu-devel@nongnu.org
Cc: Richard Henderson <richard.henderson@linaro.org>,
	Beniamino Galvani <b.galvani@gmail.com>,
	Peter Maydell <peter.maydell@linaro.org>,
	Strahinja Jankovic <strahinja.p.jankovic@gmail.com>,
	Niek Linnenbank <nieklinnenbank@gmail.com>,
	=?UTF-8?q?C=C3=A9dric=20Le=20Goater?= <clg@kaod.org>,
	Andrew Jeffery <andrew@codeconstruct.com.au>,
	Joel Stanley <joel@jms.id.au>,
	Igor Mitsyanko <i.mitsyanko@gmail.com>,
	Jean-Christophe Dubois <jcd@tribudubois.net>,
	Andrey Smirnov <andrew.smirnov@gmail.com>,
	=?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= <philmd@linaro.org>,
	Rob Herring <robh@kernel.org>,
	Subbaraya Sundeep <sundeep.lkml@gmail.com>,
	Jan Kiszka <jan.kiszka@web.de>,
	Tyrone Ting <kfting@nuvoton.com>,
	Hao Wu <wuhaotsh@google.com>,
	Radoslaw Biernacki <rad@semihalf.com>,
	Leif Lindholm <quic_llindhol@quicinc.com>,
	Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org>,
	"Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
	Alistair Francis <alistair@alistair23.me>,
	Helge Deller <deller@gmx.de>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Eduardo Habkost <eduardo@habkost.net>,
	"Michael S. Tsirkin" <mst@redhat.com>,
	Marcel Apfelbaum <marcel.apfelbaum@gmail.com>,
	Song Gao <gaosong@loongson.cn>,
	Thomas Huth <huth@tuxfamily.org>,
	Laurent Vivier <laurent@vivier.eu>,
	Huacai Chen <chenhuacai@kernel.org>,
	Jiaxun Yang <jiaxun.yang@flygoat.com>,
	=?UTF-8?q?Herv=C3=A9=20Poussineau?= <hpoussin@reactos.org>,
	Aleksandar Rikalo <aleksandar.rikalo@syrmia.com>,
	Aurelien Jarno <aurelien@aurel32.net>,
	Jason Wang <jasowang@redhat.com>,
	Jia Liu <proljc@gmail.com>,
	Stafford Horne <shorne@gmail.com>,
	Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>,
	Nicholas Piggin <npiggin@gmail.com>,
	Daniel Henrique Barboza <danielhb413@gmail.com>,
	David Gibson <david@gibson.dropbear.id.au>,
	Harsh Prateek Bora <harshpb@linux.ibm.com>,
	Bin Meng <bin.meng@windriver.com>,
	Palmer Dabbelt <palmer@dabbelt.com>,
	Weiwei Li <liwei1518@gmail.com>,
	Liu Zhiwei <zhiwei_liu@linux.alibaba.com>,
	Halil Pasic <pasic@linux.ibm.com>,
	Christian Borntraeger <borntraeger@linux.ibm.com>,
	Eric Farman <farman@linux.ibm.com>,
	David Hildenbrand <david@redhat.com>,
	Ilya Leoshkevich <iii@linux.ibm.com>,
	Yoshinori Sato <ysato@users.sourceforge.jp>,
	Magnus Damm <magnus.damm@gmail.com>,
	Artyom Tarasenko <atar4qemu@gmail.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Anthony Perard <anthony.perard@citrix.com>,
	Paul Durrant <paul@xen.org>,
	Max Filippov <jcmvbkbc@gmail.com>,
	qemu-arm@nongnu.org,
	qemu-ppc@nongnu.org,
	qemu-riscv@nongnu.org,
	qemu-s390x@nongnu.org,
	xen-devel@lists.xenproject.org,
	David Woodhouse <dwmw@amazon.co.uk>,
	Thomas Huth <thuth@redhat.com>
Subject: [PATCH v4 43/47] hw/xtensa/xtfpga: use qemu_create_nic_device()
Date: Fri, 26 Jan 2024 17:25:20 +0000
Message-ID: <20240126173228.394202-44-dwmw2@infradead.org>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20240126173228.394202-1-dwmw2@infradead.org>
References: <20240126173228.394202-1-dwmw2@infradead.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Sender: David Woodhouse <dwmw2@infradead.org>
X-SRS-Rewrite: SMTP reverse-path rewritten from <dwmw2@infradead.org> by desiato.infradead.org. See http://www.infradead.org/rpr.html

From: David Woodhouse <dwmw@amazon.co.uk>

Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
Reviewed-by: Thomas Huth <thuth@redhat.com>
---
 hw/xtensa/xtfpga.c | 13 ++++++-------
 1 file changed, 6 insertions(+), 7 deletions(-)

diff --git a/hw/xtensa/xtfpga.c b/hw/xtensa/xtfpga.c
index fbad1c83a3..f49e6591dc 100644
--- a/hw/xtensa/xtfpga.c
+++ b/hw/xtensa/xtfpga.c
@@ -141,14 +141,16 @@ static void xtfpga_net_init(MemoryRegion *address_space,
         hwaddr base,
         hwaddr descriptors,
         hwaddr buffers,
-        qemu_irq irq, NICInfo *nd)
+        qemu_irq irq)
 {
     DeviceState *dev;
     SysBusDevice *s;
     MemoryRegion *ram;
 
-    dev = qdev_new("open_eth");
-    qdev_set_nic_properties(dev, nd);
+    dev = qemu_create_nic_device("open_eth", true, NULL);
+    if (!dev) {
+        return;
+    }
 
     s = SYS_BUS_DEVICE(dev);
     sysbus_realize_and_unref(s, &error_fatal);
@@ -301,10 +303,7 @@ static void xtfpga_init(const XtfpgaBoardDesc *board, MachineState *machine)
         memory_region_add_subregion(system_memory, board->io[1], io);
     }
     xtfpga_fpga_init(system_io, 0x0d020000, freq);
-    if (nd_table[0].used) {
-        xtfpga_net_init(system_io, 0x0d030000, 0x0d030400, 0x0d800000,
-                        extints[1], nd_table);
-    }
+    xtfpga_net_init(system_io, 0x0d030000, 0x0d030400, 0x0d800000, extints[1]);
 
     serial_mm_init(system_io, 0x0d050020, 2, extints[0],
                    115200, serial_hd(0), DEVICE_NATIVE_ENDIAN);
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Fri Jan 26 17:43:55 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 26 Jan 2024 17:43:55 +0000
Received: from list by lists.xenproject.org with outflank-mailman.672374.1046401 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTQF9-0001j8-2T; Fri, 26 Jan 2024 17:43:55 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 672374.1046401; Fri, 26 Jan 2024 17:43:55 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTQF8-0001is-Vv; Fri, 26 Jan 2024 17:43:54 +0000
Received: by outflank-mailman (input) for mailman id 672374;
 Fri, 26 Jan 2024 17:43:54 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=46+y=JE=desiato.srs.infradead.org=BATV+5cc348fc898a3f56ac6c+7460+infradead.org+dwmw2@srs-se1.protection.inumbo.net>)
 id 1rTQ5A-0004Zo-GI
 for xen-devel@lists.xenproject.org; Fri, 26 Jan 2024 17:33:36 +0000
Received: from desiato.infradead.org (desiato.infradead.org
 [2001:8b0:10b:1:d65d:64ff:fe57:4e05])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 081a8a72-bc71-11ee-8a43-1f161083a0e0;
 Fri, 26 Jan 2024 18:33:35 +0100 (CET)
Received: from [2001:8b0:10b:1::ebe] (helo=i7.infradead.org)
 by desiato.infradead.org with esmtpsa (Exim 4.97.1 #2 (Red Hat Linux))
 id 1rTQ4B-000000069Uu-2vfo; Fri, 26 Jan 2024 17:32:36 +0000
Received: from dwoodhou by i7.infradead.org with local (Exim 4.97.1 #2 (Red
 Hat Linux)) id 1rTQ4A-00000001eo6-21Fg;
 Fri, 26 Jan 2024 17:32:34 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
X-Inumbo-ID: 081a8a72-bc71-11ee-8a43-1f161083a0e0
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=infradead.org; s=desiato.20200630; h=Sender:Content-Transfer-Encoding:
	MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:
	Reply-To:Content-Type:Content-ID:Content-Description;
	bh=IXEZX2HEBbMBwUhayue76+vBPs8XLNbiy1LneqBnSSQ=; b=L1IC8mi7FZhd2xkOxGFrYFeg8p
	WcUxvd8Yz3sWSBxucd5MC2EQ3FIO6fL8OU/9NSnVMEybFgTeaMFjqd8sqZoiZEGmoPjSZLOMfQu0V
	SHcceRwOGTSZ7pUIcP2LQjJjMWiO6ToDAIvqKQEOJRDXQJc8tZq9+uPDOElIVaxqs06OmiCZGdtHW
	q6co0x6x6QDAE8FZea34ld2K+eJZgcBAjVzZeBbPtdbecn01YrcGpX9/0TlQs5n5PPEBTd4BMc6MZ
	TFmR2CVGn1qarOl/+7+Az7QSTEFPqkBjq+Z0UZh35NzvyMyiToZBvfTyPreHo1CkH0CSQjWybDBmq
	48mFntgQ==;
From: David Woodhouse <dwmw2@infradead.org>
To: qemu-devel@nongnu.org
Cc: Richard Henderson <richard.henderson@linaro.org>,
	Beniamino Galvani <b.galvani@gmail.com>,
	Peter Maydell <peter.maydell@linaro.org>,
	Strahinja Jankovic <strahinja.p.jankovic@gmail.com>,
	Niek Linnenbank <nieklinnenbank@gmail.com>,
	=?UTF-8?q?C=C3=A9dric=20Le=20Goater?= <clg@kaod.org>,
	Andrew Jeffery <andrew@codeconstruct.com.au>,
	Joel Stanley <joel@jms.id.au>,
	Igor Mitsyanko <i.mitsyanko@gmail.com>,
	Jean-Christophe Dubois <jcd@tribudubois.net>,
	Andrey Smirnov <andrew.smirnov@gmail.com>,
	=?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= <philmd@linaro.org>,
	Rob Herring <robh@kernel.org>,
	Subbaraya Sundeep <sundeep.lkml@gmail.com>,
	Jan Kiszka <jan.kiszka@web.de>,
	Tyrone Ting <kfting@nuvoton.com>,
	Hao Wu <wuhaotsh@google.com>,
	Radoslaw Biernacki <rad@semihalf.com>,
	Leif Lindholm <quic_llindhol@quicinc.com>,
	Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org>,
	"Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
	Alistair Francis <alistair@alistair23.me>,
	Helge Deller <deller@gmx.de>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Eduardo Habkost <eduardo@habkost.net>,
	"Michael S. Tsirkin" <mst@redhat.com>,
	Marcel Apfelbaum <marcel.apfelbaum@gmail.com>,
	Song Gao <gaosong@loongson.cn>,
	Thomas Huth <huth@tuxfamily.org>,
	Laurent Vivier <laurent@vivier.eu>,
	Huacai Chen <chenhuacai@kernel.org>,
	Jiaxun Yang <jiaxun.yang@flygoat.com>,
	=?UTF-8?q?Herv=C3=A9=20Poussineau?= <hpoussin@reactos.org>,
	Aleksandar Rikalo <aleksandar.rikalo@syrmia.com>,
	Aurelien Jarno <aurelien@aurel32.net>,
	Jason Wang <jasowang@redhat.com>,
	Jia Liu <proljc@gmail.com>,
	Stafford Horne <shorne@gmail.com>,
	Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>,
	Nicholas Piggin <npiggin@gmail.com>,
	Daniel Henrique Barboza <danielhb413@gmail.com>,
	David Gibson <david@gibson.dropbear.id.au>,
	Harsh Prateek Bora <harshpb@linux.ibm.com>,
	Bin Meng <bin.meng@windriver.com>,
	Palmer Dabbelt <palmer@dabbelt.com>,
	Weiwei Li <liwei1518@gmail.com>,
	Liu Zhiwei <zhiwei_liu@linux.alibaba.com>,
	Halil Pasic <pasic@linux.ibm.com>,
	Christian Borntraeger <borntraeger@linux.ibm.com>,
	Eric Farman <farman@linux.ibm.com>,
	David Hildenbrand <david@redhat.com>,
	Ilya Leoshkevich <iii@linux.ibm.com>,
	Yoshinori Sato <ysato@users.sourceforge.jp>,
	Magnus Damm <magnus.damm@gmail.com>,
	Artyom Tarasenko <atar4qemu@gmail.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Anthony Perard <anthony.perard@citrix.com>,
	Paul Durrant <paul@xen.org>,
	Max Filippov <jcmvbkbc@gmail.com>,
	qemu-arm@nongnu.org,
	qemu-ppc@nongnu.org,
	qemu-riscv@nongnu.org,
	qemu-s390x@nongnu.org,
	xen-devel@lists.xenproject.org,
	David Woodhouse <dwmw@amazon.co.uk>,
	Thomas Huth <thuth@redhat.com>
Subject: [PATCH v4 40/47] hw/riscv: use qemu_configure_nic_device()
Date: Fri, 26 Jan 2024 17:25:17 +0000
Message-ID: <20240126173228.394202-41-dwmw2@infradead.org>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20240126173228.394202-1-dwmw2@infradead.org>
References: <20240126173228.394202-1-dwmw2@infradead.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Sender: David Woodhouse <dwmw2@infradead.org>
X-SRS-Rewrite: SMTP reverse-path rewritten from <dwmw2@infradead.org> by desiato.infradead.org. See http://www.infradead.org/rpr.html

From: David Woodhouse <dwmw@amazon.co.uk>

Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
Reviewed-by: Thomas Huth <thuth@redhat.com>
---
 hw/riscv/microchip_pfsoc.c | 14 ++------------
 hw/riscv/sifive_u.c        |  7 +------
 2 files changed, 3 insertions(+), 18 deletions(-)

diff --git a/hw/riscv/microchip_pfsoc.c b/hw/riscv/microchip_pfsoc.c
index b775aa8946..7725dfbde5 100644
--- a/hw/riscv/microchip_pfsoc.c
+++ b/hw/riscv/microchip_pfsoc.c
@@ -202,7 +202,6 @@ static void microchip_pfsoc_soc_realize(DeviceState *dev, Error **errp)
     MemoryRegion *envm_data = g_new(MemoryRegion, 1);
     MemoryRegion *qspi_xip_mem = g_new(MemoryRegion, 1);
     char *plic_hart_config;
-    NICInfo *nd;
     int i;
 
     sysbus_realize(SYS_BUS_DEVICE(&s->e_cpus), &error_abort);
@@ -411,17 +410,8 @@ static void microchip_pfsoc_soc_realize(DeviceState *dev, Error **errp)
         memmap[MICROCHIP_PFSOC_USB].size);
 
     /* GEMs */
-
-    nd = &nd_table[0];
-    if (nd->used) {
-        qemu_check_nic_model(nd, TYPE_CADENCE_GEM);
-        qdev_set_nic_properties(DEVICE(&s->gem0), nd);
-    }
-    nd = &nd_table[1];
-    if (nd->used) {
-        qemu_check_nic_model(nd, TYPE_CADENCE_GEM);
-        qdev_set_nic_properties(DEVICE(&s->gem1), nd);
-    }
+    qemu_configure_nic_device(DEVICE(&s->gem0), true, NULL);
+    qemu_configure_nic_device(DEVICE(&s->gem1), true, NULL);
 
     object_property_set_int(OBJECT(&s->gem0), "revision", GEM_REVISION, errp);
     object_property_set_int(OBJECT(&s->gem0), "phy-addr", 8, errp);
diff --git a/hw/riscv/sifive_u.c b/hw/riscv/sifive_u.c
index ec76dce6c9..5207ec1fa5 100644
--- a/hw/riscv/sifive_u.c
+++ b/hw/riscv/sifive_u.c
@@ -789,7 +789,6 @@ static void sifive_u_soc_realize(DeviceState *dev, Error **errp)
     MemoryRegion *l2lim_mem = g_new(MemoryRegion, 1);
     char *plic_hart_config;
     int i, j;
-    NICInfo *nd = &nd_table[0];
 
     qdev_prop_set_uint32(DEVICE(&s->u_cpus), "num-harts", ms->smp.cpus - 1);
     qdev_prop_set_uint32(DEVICE(&s->u_cpus), "hartid-base", 1);
@@ -893,11 +892,7 @@ static void sifive_u_soc_realize(DeviceState *dev, Error **errp)
     }
     sysbus_mmio_map(SYS_BUS_DEVICE(&s->otp), 0, memmap[SIFIVE_U_DEV_OTP].base);
 
-    /* FIXME use qdev NIC properties instead of nd_table[] */
-    if (nd->used) {
-        qemu_check_nic_model(nd, TYPE_CADENCE_GEM);
-        qdev_set_nic_properties(DEVICE(&s->gem), nd);
-    }
+    qemu_configure_nic_device(DEVICE(&s->gem), true, NULL);
     object_property_set_int(OBJECT(&s->gem), "revision", GEM_REVISION,
                             &error_abort);
     if (!sysbus_realize(SYS_BUS_DEVICE(&s->gem), errp)) {
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Fri Jan 26 17:43:56 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 26 Jan 2024 17:43:56 +0000
Received: from list by lists.xenproject.org with outflank-mailman.672376.1046412 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTQFA-00020N-C6; Fri, 26 Jan 2024 17:43:56 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 672376.1046412; Fri, 26 Jan 2024 17:43:56 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTQFA-000209-77; Fri, 26 Jan 2024 17:43:56 +0000
Received: by outflank-mailman (input) for mailman id 672376;
 Fri, 26 Jan 2024 17:43:54 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=46+y=JE=desiato.srs.infradead.org=BATV+5cc348fc898a3f56ac6c+7460+infradead.org+dwmw2@srs-se1.protection.inumbo.net>)
 id 1rTQ5O-0004m7-Ts
 for xen-devel@lists.xenproject.org; Fri, 26 Jan 2024 17:33:50 +0000
Received: from desiato.infradead.org (desiato.infradead.org
 [2001:8b0:10b:1:d65d:64ff:fe57:4e05])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 0a23f495-bc71-11ee-98f5-efadbce2ee36;
 Fri, 26 Jan 2024 18:33:38 +0100 (CET)
Received: from [2001:8b0:10b:1::ebe] (helo=i7.infradead.org)
 by desiato.infradead.org with esmtpsa (Exim 4.97.1 #2 (Red Hat Linux))
 id 1rTQ4A-000000069Uh-1rdy; Fri, 26 Jan 2024 17:32:34 +0000
Received: from dwoodhou by i7.infradead.org with local (Exim 4.97.1 #2 (Red
 Hat Linux)) id 1rTQ48-00000001elq-0EMr;
 Fri, 26 Jan 2024 17:32:32 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
X-Inumbo-ID: 0a23f495-bc71-11ee-98f5-efadbce2ee36
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=infradead.org; s=desiato.20200630; h=Sender:Content-Transfer-Encoding:
	MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:
	Reply-To:Content-Type:Content-ID:Content-Description;
	bh=1By8MLkJQQ5aDNY2GpLO8Lg7eMBepYz9kIQOUj3RWg4=; b=Lu42CPJkj0fpF55INNF9dFE3Jb
	36moigKQb4zpZw+xI/DratrTzBmjGRdyT25PQKyglZ74refrkiMyun8BzZSzSHEJM+92iI9HenrW6
	meVmjVhZdnroFEGp4i3jIHB5B8t+nh2Jact19MP0cKrJ6KjxVjd4w6lDHuYT9vILTen85kESCpoyf
	1GIEUuuVMXBnJEC97Vd9RxAMa7BSErwen5aaBIVeSoBaLU1C6Kyaix6HEoW+2GZcYsz447SCP6Oa7
	VOEez5Ox5CXR3k9U+T1cFCtXv2IqJHwEagBkJc1Fk3ADvav1IGvajAx3hyQ0Co8W1aAPD/XV5AGfR
	vRRhxKww==;
From: David Woodhouse <dwmw2@infradead.org>
To: qemu-devel@nongnu.org
Cc: Richard Henderson <richard.henderson@linaro.org>,
	Beniamino Galvani <b.galvani@gmail.com>,
	Peter Maydell <peter.maydell@linaro.org>,
	Strahinja Jankovic <strahinja.p.jankovic@gmail.com>,
	Niek Linnenbank <nieklinnenbank@gmail.com>,
	=?UTF-8?q?C=C3=A9dric=20Le=20Goater?= <clg@kaod.org>,
	Andrew Jeffery <andrew@codeconstruct.com.au>,
	Joel Stanley <joel@jms.id.au>,
	Igor Mitsyanko <i.mitsyanko@gmail.com>,
	Jean-Christophe Dubois <jcd@tribudubois.net>,
	Andrey Smirnov <andrew.smirnov@gmail.com>,
	=?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= <philmd@linaro.org>,
	Rob Herring <robh@kernel.org>,
	Subbaraya Sundeep <sundeep.lkml@gmail.com>,
	Jan Kiszka <jan.kiszka@web.de>,
	Tyrone Ting <kfting@nuvoton.com>,
	Hao Wu <wuhaotsh@google.com>,
	Radoslaw Biernacki <rad@semihalf.com>,
	Leif Lindholm <quic_llindhol@quicinc.com>,
	Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org>,
	"Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
	Alistair Francis <alistair@alistair23.me>,
	Helge Deller <deller@gmx.de>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Eduardo Habkost <eduardo@habkost.net>,
	"Michael S. Tsirkin" <mst@redhat.com>,
	Marcel Apfelbaum <marcel.apfelbaum@gmail.com>,
	Song Gao <gaosong@loongson.cn>,
	Thomas Huth <huth@tuxfamily.org>,
	Laurent Vivier <laurent@vivier.eu>,
	Huacai Chen <chenhuacai@kernel.org>,
	Jiaxun Yang <jiaxun.yang@flygoat.com>,
	=?UTF-8?q?Herv=C3=A9=20Poussineau?= <hpoussin@reactos.org>,
	Aleksandar Rikalo <aleksandar.rikalo@syrmia.com>,
	Aurelien Jarno <aurelien@aurel32.net>,
	Jason Wang <jasowang@redhat.com>,
	Jia Liu <proljc@gmail.com>,
	Stafford Horne <shorne@gmail.com>,
	Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>,
	Nicholas Piggin <npiggin@gmail.com>,
	Daniel Henrique Barboza <danielhb413@gmail.com>,
	David Gibson <david@gibson.dropbear.id.au>,
	Harsh Prateek Bora <harshpb@linux.ibm.com>,
	Bin Meng <bin.meng@windriver.com>,
	Palmer Dabbelt <palmer@dabbelt.com>,
	Weiwei Li <liwei1518@gmail.com>,
	Liu Zhiwei <zhiwei_liu@linux.alibaba.com>,
	Halil Pasic <pasic@linux.ibm.com>,
	Christian Borntraeger <borntraeger@linux.ibm.com>,
	Eric Farman <farman@linux.ibm.com>,
	David Hildenbrand <david@redhat.com>,
	Ilya Leoshkevich <iii@linux.ibm.com>,
	Yoshinori Sato <ysato@users.sourceforge.jp>,
	Magnus Damm <magnus.damm@gmail.com>,
	Artyom Tarasenko <atar4qemu@gmail.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Anthony Perard <anthony.perard@citrix.com>,
	Paul Durrant <paul@xen.org>,
	Max Filippov <jcmvbkbc@gmail.com>,
	qemu-arm@nongnu.org,
	qemu-ppc@nongnu.org,
	qemu-riscv@nongnu.org,
	qemu-s390x@nongnu.org,
	xen-devel@lists.xenproject.org,
	David Woodhouse <dwmw@amazon.co.uk>,
	Thomas Huth <thuth@redhat.com>
Subject: [PATCH v4 13/47] hw/mips/malta: use pci_init_nic_devices()
Date: Fri, 26 Jan 2024 17:24:50 +0000
Message-ID: <20240126173228.394202-14-dwmw2@infradead.org>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20240126173228.394202-1-dwmw2@infradead.org>
References: <20240126173228.394202-1-dwmw2@infradead.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Sender: David Woodhouse <dwmw2@infradead.org>
X-SRS-Rewrite: SMTP reverse-path rewritten from <dwmw2@infradead.org> by desiato.infradead.org. See http://www.infradead.org/rpr.html

From: David Woodhouse <dwmw@amazon.co.uk>

The Malta board setup code would previously place the first NIC into PCI
slot 11 if was a PCNet card, and the rest (including the first if it was
anything other than a PCNet card) would be dynamically assigned.

Now it will place any PCNet NIC into slot 11, and then anything else will
be dynamically assigned.

Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
Reviewed-by: Thomas Huth <thuth@redhat.com>
---
 hw/mips/malta.c | 15 +++------------
 1 file changed, 3 insertions(+), 12 deletions(-)

diff --git a/hw/mips/malta.c b/hw/mips/malta.c
index d22bb1edef..af74008c82 100644
--- a/hw/mips/malta.c
+++ b/hw/mips/malta.c
@@ -612,18 +612,9 @@ static MaltaFPGAState *malta_fpga_init(MemoryRegion *address_space,
 /* Network support */
 static void network_init(PCIBus *pci_bus)
 {
-    int i;
-
-    for (i = 0; i < nb_nics; i++) {
-        NICInfo *nd = &nd_table[i];
-        const char *default_devaddr = NULL;
-
-        if (i == 0 && (!nd->model || strcmp(nd->model, "pcnet") == 0))
-            /* The malta board has a PCNet card using PCI SLOT 11 */
-            default_devaddr = "0b";
-
-        pci_nic_init_nofail(nd, pci_bus, "pcnet", default_devaddr);
-    }
+    /* The malta board has a PCNet card using PCI SLOT 11 */
+    pci_init_nic_in_slot(pci_bus, "pcnet", NULL, "0b");
+    pci_init_nic_devices(pci_bus, "pcnet");
 }
 
 static void bl_setup_gt64120_jump_kernel(void **p, uint64_t run_addr,
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Fri Jan 26 17:46:15 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 26 Jan 2024 17:46:15 +0000
Received: from list by lists.xenproject.org with outflank-mailman.672388.1046422 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTQHN-0003yE-Pl; Fri, 26 Jan 2024 17:46:13 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 672388.1046422; Fri, 26 Jan 2024 17:46:13 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTQHN-0003y7-LP; Fri, 26 Jan 2024 17:46:13 +0000
Received: by outflank-mailman (input) for mailman id 672388;
 Fri, 26 Jan 2024 17:46:12 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=46+y=JE=desiato.srs.infradead.org=BATV+5cc348fc898a3f56ac6c+7460+infradead.org+dwmw2@srs-se1.protection.inumbo.net>)
 id 1rTQ5A-0004m7-SI
 for xen-devel@lists.xenproject.org; Fri, 26 Jan 2024 17:33:36 +0000
Received: from desiato.infradead.org (desiato.infradead.org
 [2001:8b0:10b:1:d65d:64ff:fe57:4e05])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 0364319f-bc71-11ee-98f5-efadbce2ee36;
 Fri, 26 Jan 2024 18:33:27 +0100 (CET)
Received: from [2001:8b0:10b:1::ebe] (helo=i7.infradead.org)
 by desiato.infradead.org with esmtpsa (Exim 4.97.1 #2 (Red Hat Linux))
 id 1rTQ4A-000000069Ud-1vK6; Fri, 26 Jan 2024 17:32:35 +0000
Received: from dwoodhou by i7.infradead.org with local (Exim 4.97.1 #2 (Red
 Hat Linux)) id 1rTQ47-00000001elV-1oDM;
 Fri, 26 Jan 2024 17:32:31 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
X-Inumbo-ID: 0364319f-bc71-11ee-98f5-efadbce2ee36
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=infradead.org; s=desiato.20200630; h=Sender:Content-Transfer-Encoding:
	MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:
	Reply-To:Content-Type:Content-ID:Content-Description;
	bh=tD5qNwo6WTjFe97d4nPQafto5xogGJwduqrsT8Y/lfs=; b=oXQ9aw59LFOUBm9GLP08iwZ/lD
	IDXUsvTJ0c8770LyPcdRJmmjCWucq2r4ecMMUsjtGeSpnEzURZmVY/p3QKDyhO0Q6CTN5v6uVQkms
	tJOdPHdBG32avFzaAaXLXWN8AYL/37U5yFEl72jOxekABWLeePkLtQf04GHf9KgLBOUhqQOb+QPJR
	sNQieY5AKaIdICMDlCwEIBSMFtHVNV5it0+ibX3MDgqqpJFhGfxSDFht4aqu6UZSDK+d05IPVAjjt
	uiErvASbFO6+dzBTbvMzgMFQRFUiX/23PuGTOH61o4xzTq1qKSpQbF4Iw9DVzOEDak55udl1H4mI7
	97YVBQcw==;
From: David Woodhouse <dwmw2@infradead.org>
To: qemu-devel@nongnu.org
Cc: Richard Henderson <richard.henderson@linaro.org>,
	Beniamino Galvani <b.galvani@gmail.com>,
	Peter Maydell <peter.maydell@linaro.org>,
	Strahinja Jankovic <strahinja.p.jankovic@gmail.com>,
	Niek Linnenbank <nieklinnenbank@gmail.com>,
	=?UTF-8?q?C=C3=A9dric=20Le=20Goater?= <clg@kaod.org>,
	Andrew Jeffery <andrew@codeconstruct.com.au>,
	Joel Stanley <joel@jms.id.au>,
	Igor Mitsyanko <i.mitsyanko@gmail.com>,
	Jean-Christophe Dubois <jcd@tribudubois.net>,
	Andrey Smirnov <andrew.smirnov@gmail.com>,
	=?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= <philmd@linaro.org>,
	Rob Herring <robh@kernel.org>,
	Subbaraya Sundeep <sundeep.lkml@gmail.com>,
	Jan Kiszka <jan.kiszka@web.de>,
	Tyrone Ting <kfting@nuvoton.com>,
	Hao Wu <wuhaotsh@google.com>,
	Radoslaw Biernacki <rad@semihalf.com>,
	Leif Lindholm <quic_llindhol@quicinc.com>,
	Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org>,
	"Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
	Alistair Francis <alistair@alistair23.me>,
	Helge Deller <deller@gmx.de>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Eduardo Habkost <eduardo@habkost.net>,
	"Michael S. Tsirkin" <mst@redhat.com>,
	Marcel Apfelbaum <marcel.apfelbaum@gmail.com>,
	Song Gao <gaosong@loongson.cn>,
	Thomas Huth <huth@tuxfamily.org>,
	Laurent Vivier <laurent@vivier.eu>,
	Huacai Chen <chenhuacai@kernel.org>,
	Jiaxun Yang <jiaxun.yang@flygoat.com>,
	=?UTF-8?q?Herv=C3=A9=20Poussineau?= <hpoussin@reactos.org>,
	Aleksandar Rikalo <aleksandar.rikalo@syrmia.com>,
	Aurelien Jarno <aurelien@aurel32.net>,
	Jason Wang <jasowang@redhat.com>,
	Jia Liu <proljc@gmail.com>,
	Stafford Horne <shorne@gmail.com>,
	Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>,
	Nicholas Piggin <npiggin@gmail.com>,
	Daniel Henrique Barboza <danielhb413@gmail.com>,
	David Gibson <david@gibson.dropbear.id.au>,
	Harsh Prateek Bora <harshpb@linux.ibm.com>,
	Bin Meng <bin.meng@windriver.com>,
	Palmer Dabbelt <palmer@dabbelt.com>,
	Weiwei Li <liwei1518@gmail.com>,
	Liu Zhiwei <zhiwei_liu@linux.alibaba.com>,
	Halil Pasic <pasic@linux.ibm.com>,
	Christian Borntraeger <borntraeger@linux.ibm.com>,
	Eric Farman <farman@linux.ibm.com>,
	David Hildenbrand <david@redhat.com>,
	Ilya Leoshkevich <iii@linux.ibm.com>,
	Yoshinori Sato <ysato@users.sourceforge.jp>,
	Magnus Damm <magnus.damm@gmail.com>,
	Artyom Tarasenko <atar4qemu@gmail.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Anthony Perard <anthony.perard@citrix.com>,
	Paul Durrant <paul@xen.org>,
	Max Filippov <jcmvbkbc@gmail.com>,
	qemu-arm@nongnu.org,
	qemu-ppc@nongnu.org,
	qemu-riscv@nongnu.org,
	qemu-s390x@nongnu.org,
	xen-devel@lists.xenproject.org,
	David Woodhouse <dwmw@amazon.co.uk>
Subject: [PATCH v4 06/47] hw/xen: use qemu_create_nic_bus_devices() to instantiate Xen NICs
Date: Fri, 26 Jan 2024 17:24:43 +0000
Message-ID: <20240126173228.394202-7-dwmw2@infradead.org>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20240126173228.394202-1-dwmw2@infradead.org>
References: <20240126173228.394202-1-dwmw2@infradead.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Sender: David Woodhouse <dwmw2@infradead.org>
X-SRS-Rewrite: SMTP reverse-path rewritten from <dwmw2@infradead.org> by desiato.infradead.org. See http://www.infradead.org/rpr.html

From: David Woodhouse <dwmw@amazon.co.uk>

When instantiating XenBus itself, for each NIC which is configured with
either the model unspecified, or set to to "xen" or "xen-net-device",
create a corresponding xen-net-device for it.

Now we can revert the previous more hackish version which relied on the
platform code explicitly registering the NICs on its own XenBus, having
returned the BusState* from xen_bus_init() itself.

This also fixes the setup for Xen PV guests, which was previously broken
in various ways and never actually managed to peer with the netdev.

Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
Reviewed-by: Paul Durrant <paul@xen.org>
---
 hw/i386/pc.c                        | 13 ++-----------
 hw/i386/pc_piix.c                   |  2 +-
 hw/i386/pc_q35.c                    |  2 +-
 hw/xen/xen-bus.c                    |  6 ++++--
 hw/xen/xen_devconfig.c              | 25 -------------------------
 hw/xenpv/xen_machine_pv.c           |  9 ---------
 include/hw/i386/pc.h                |  4 +---
 include/hw/xen/xen-bus.h            |  2 +-
 include/hw/xen/xen-legacy-backend.h |  1 -
 9 files changed, 10 insertions(+), 54 deletions(-)

diff --git a/hw/i386/pc.c b/hw/i386/pc.c
index ebb0b1c667..196827531a 100644
--- a/hw/i386/pc.c
+++ b/hw/i386/pc.c
@@ -1269,7 +1269,7 @@ void pc_basic_device_init(struct PCMachineState *pcms,
         if (pcms->bus) {
             pci_create_simple(pcms->bus, -1, "xen-platform");
         }
-        pcms->xenbus = xen_bus_init();
+        xen_bus_init();
         xen_be_init();
     }
 #endif
@@ -1297,8 +1297,7 @@ void pc_basic_device_init(struct PCMachineState *pcms,
                     pcms->vmport != ON_OFF_AUTO_ON);
 }
 
-void pc_nic_init(PCMachineClass *pcmc, ISABus *isa_bus, PCIBus *pci_bus,
-                 BusState *xen_bus)
+void pc_nic_init(PCMachineClass *pcmc, ISABus *isa_bus, PCIBus *pci_bus)
 {
     MachineClass *mc = MACHINE_CLASS(pcmc);
     bool default_is_ne2k = g_str_equal(mc->default_nic, TYPE_ISA_NE2000);
@@ -1306,14 +1305,6 @@ void pc_nic_init(PCMachineClass *pcmc, ISABus *isa_bus, PCIBus *pci_bus,
 
     rom_set_order_override(FW_CFG_ORDER_OVERRIDE_NIC);
 
-    if (xen_bus) {
-        while ((nd = qemu_find_nic_info("xen-net-device", true, NULL))) {
-            DeviceState *dev = qdev_new("xen-net-device");
-            qdev_set_nic_properties(dev, nd);
-            qdev_realize_and_unref(dev, xen_bus, &error_fatal);
-        }
-    }
-
     while ((nd = qemu_find_nic_info(TYPE_ISA_NE2000, default_is_ne2k, NULL))) {
         pc_init_ne2k_isa(isa_bus, nd, &error_fatal);
     }
diff --git a/hw/i386/pc_piix.c b/hw/i386/pc_piix.c
index abfcfe4d2b..70d12bb1b5 100644
--- a/hw/i386/pc_piix.c
+++ b/hw/i386/pc_piix.c
@@ -339,7 +339,7 @@ static void pc_init1(MachineState *machine,
     pc_basic_device_init(pcms, isa_bus, x86ms->gsi, rtc_state, true,
                          0x4);
 
-    pc_nic_init(pcmc, isa_bus, pci_bus, pcms->xenbus);
+    pc_nic_init(pcmc, isa_bus, pci_bus);
 
     if (pcmc->pci_enabled) {
         pc_cmos_init(pcms, idebus[0], idebus[1], rtc_state);
diff --git a/hw/i386/pc_q35.c b/hw/i386/pc_q35.c
index f43d5142b8..7ca3f465e0 100644
--- a/hw/i386/pc_q35.c
+++ b/hw/i386/pc_q35.c
@@ -340,7 +340,7 @@ static void pc_q35_init(MachineState *machine)
 
     /* the rest devices to which pci devfn is automatically assigned */
     pc_vga_init(isa_bus, host_bus);
-    pc_nic_init(pcmc, isa_bus, host_bus, pcms->xenbus);
+    pc_nic_init(pcmc, isa_bus, host_bus);
 
     if (machine->nvdimms_state->is_enabled) {
         nvdimm_init_acpi_state(machine->nvdimms_state, system_io,
diff --git a/hw/xen/xen-bus.c b/hw/xen/xen-bus.c
index 4973e7d9c9..fb82cc33e4 100644
--- a/hw/xen/xen-bus.c
+++ b/hw/xen/xen-bus.c
@@ -19,6 +19,7 @@
 #include "qapi/error.h"
 #include "qapi/qmp/qdict.h"
 #include "sysemu/sysemu.h"
+#include "net/net.h"
 #include "trace.h"
 
 static char *xen_device_get_backend_path(XenDevice *xendev)
@@ -1133,7 +1134,7 @@ static void xen_register_types(void)
 
 type_init(xen_register_types)
 
-BusState *xen_bus_init(void)
+void xen_bus_init(void)
 {
     DeviceState *dev = qdev_new(TYPE_XEN_BRIDGE);
     BusState *bus = qbus_new(TYPE_XEN_BUS, dev, NULL);
@@ -1141,5 +1142,6 @@ BusState *xen_bus_init(void)
     sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal);
     qbus_set_bus_hotplug_handler(bus);
 
-    return bus;
+    qemu_create_nic_bus_devices(bus, TYPE_XEN_DEVICE, "xen-net-device",
+                                "xen", "xen-net-device");
 }
diff --git a/hw/xen/xen_devconfig.c b/hw/xen/xen_devconfig.c
index 3f77c675c6..2150869f60 100644
--- a/hw/xen/xen_devconfig.c
+++ b/hw/xen/xen_devconfig.c
@@ -46,31 +46,6 @@ static int xen_config_dev_all(char *fe, char *be)
 
 /* ------------------------------------------------------------- */
 
-int xen_config_dev_nic(NICInfo *nic)
-{
-    char fe[256], be[256];
-    char mac[20];
-    int vlan_id = -1;
-
-    net_hub_id_for_client(nic->netdev, &vlan_id);
-    snprintf(mac, sizeof(mac), "%02x:%02x:%02x:%02x:%02x:%02x",
-             nic->macaddr.a[0], nic->macaddr.a[1], nic->macaddr.a[2],
-             nic->macaddr.a[3], nic->macaddr.a[4], nic->macaddr.a[5]);
-    xen_pv_printf(NULL, 1, "config nic %d: mac=\"%s\"\n", vlan_id, mac);
-    xen_config_dev_dirs("vif", "qnic", vlan_id, fe, be, sizeof(fe));
-
-    /* frontend */
-    xenstore_write_int(fe, "handle",     vlan_id);
-    xenstore_write_str(fe, "mac",        mac);
-
-    /* backend */
-    xenstore_write_int(be, "handle",     vlan_id);
-    xenstore_write_str(be, "mac",        mac);
-
-    /* common stuff */
-    return xen_config_dev_all(fe, be);
-}
-
 int xen_config_dev_vfb(int vdev, const char *type)
 {
     char fe[256], be[256];
diff --git a/hw/xenpv/xen_machine_pv.c b/hw/xenpv/xen_machine_pv.c
index 9f9f137f99..1130d1a147 100644
--- a/hw/xenpv/xen_machine_pv.c
+++ b/hw/xenpv/xen_machine_pv.c
@@ -32,8 +32,6 @@
 
 static void xen_init_pv(MachineState *machine)
 {
-    int i;
-
     setup_xen_backend_ops();
 
     /* Initialize backend core & drivers */
@@ -62,13 +60,6 @@ static void xen_init_pv(MachineState *machine)
         vga_interface_created = true;
     }
 
-    /* configure nics */
-    for (i = 0; i < nb_nics; i++) {
-        if (!nd_table[i].model || 0 != strcmp(nd_table[i].model, "xen"))
-            continue;
-        xen_config_dev_nic(nd_table + i);
-    }
-
     xen_bus_init();
 
     /* config cleanup hook */
diff --git a/include/hw/i386/pc.h b/include/hw/i386/pc.h
index 916af29f7c..ec0e5efcb2 100644
--- a/include/hw/i386/pc.h
+++ b/include/hw/i386/pc.h
@@ -33,7 +33,6 @@ typedef struct PCMachineState {
 
     /* Pointers to devices and objects: */
     PCIBus *bus;
-    BusState *xenbus;
     I2CBus *smbus;
     PFlashCFI01 *flash[2];
     ISADevice *pcspk;
@@ -185,8 +184,7 @@ void pc_basic_device_init(struct PCMachineState *pcms,
 void pc_cmos_init(PCMachineState *pcms,
                   BusState *ide0, BusState *ide1,
                   ISADevice *s);
-void pc_nic_init(PCMachineClass *pcmc, ISABus *isa_bus, PCIBus *pci_bus,
-                 BusState *xen_bus);
+void pc_nic_init(PCMachineClass *pcmc, ISABus *isa_bus, PCIBus *pci_bus);
 
 void pc_i8259_create(ISABus *isa_bus, qemu_irq *i8259_irqs);
 
diff --git a/include/hw/xen/xen-bus.h b/include/hw/xen/xen-bus.h
index 334ddd1ff6..38d40afa37 100644
--- a/include/hw/xen/xen-bus.h
+++ b/include/hw/xen/xen-bus.h
@@ -75,7 +75,7 @@ struct XenBusClass {
 OBJECT_DECLARE_TYPE(XenBus, XenBusClass,
                     XEN_BUS)
 
-BusState *xen_bus_init(void);
+void xen_bus_init(void);
 
 void xen_device_backend_set_state(XenDevice *xendev,
                                   enum xenbus_state state);
diff --git a/include/hw/xen/xen-legacy-backend.h b/include/hw/xen/xen-legacy-backend.h
index fc42146bc2..2cca174778 100644
--- a/include/hw/xen/xen-legacy-backend.h
+++ b/include/hw/xen/xen-legacy-backend.h
@@ -81,7 +81,6 @@ extern struct XenDevOps xen_usb_ops;          /* xen-usb.c         */
 
 /* configuration (aka xenbus setup) */
 void xen_config_cleanup(void);
-int xen_config_dev_nic(NICInfo *nic);
 int xen_config_dev_vfb(int vdev, const char *type);
 int xen_config_dev_vkbd(int vdev);
 int xen_config_dev_console(int vdev);
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Fri Jan 26 17:47:18 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 26 Jan 2024 17:47:18 +0000
Received: from list by lists.xenproject.org with outflank-mailman.672392.1046432 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTQIO-0004lI-5Z; Fri, 26 Jan 2024 17:47:16 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 672392.1046432; Fri, 26 Jan 2024 17:47:16 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTQIO-0004lB-2M; Fri, 26 Jan 2024 17:47:16 +0000
Received: by outflank-mailman (input) for mailman id 672392;
 Fri, 26 Jan 2024 17:47:15 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=bPDA=JE=casper.srs.infradead.org=BATV+7caeb094913322f6f00d+7460+infradead.org+dwmw2@srs-se1.protection.inumbo.net>)
 id 1rTQ4u-0004m7-Oi
 for xen-devel@lists.xenproject.org; Fri, 26 Jan 2024 17:33:20 +0000
Received: from casper.infradead.org (casper.infradead.org
 [2001:8b0:10b:1236::1])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id fd4f7e06-bc70-11ee-98f5-efadbce2ee36;
 Fri, 26 Jan 2024 18:33:16 +0100 (CET)
Received: from [2001:8b0:10b:1::ebe] (helo=i7.infradead.org)
 by casper.infradead.org with esmtpsa (Exim 4.97.1 #2 (Red Hat Linux))
 id 1rTQ48-0000000EKUR-2WVo; Fri, 26 Jan 2024 17:32:34 +0000
Received: from dwoodhou by i7.infradead.org with local (Exim 4.97.1 #2 (Red
 Hat Linux)) id 1rTQ49-00000001emz-1aGM;
 Fri, 26 Jan 2024 17:32:33 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
X-Inumbo-ID: fd4f7e06-bc70-11ee-98f5-efadbce2ee36
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=infradead.org; s=casper.20170209; h=Sender:Content-Transfer-Encoding:
	MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:
	Reply-To:Content-Type:Content-ID:Content-Description;
	bh=naEYB+jSEP7+OXxDQs3WhFqyYITtE2y0vubPL3hIMXY=; b=LXa7z8onC4XELkebk7mstMSFNz
	E89f6kjIfZ9IGzPF/oa7YGF+kwE7zTt2D/EQQwe+sHNG02KPSo1BZeUUSTMsaCMCDoIEmh6ymJDPI
	DdsHwfajWEQbadMy8M6KScyk18HIJjiA/lIsaOvbAJrjul7CVduVWjwqE3lMaowPTk7UukG5TAUmS
	/W/Yr9imQpqSah+onhT4MZ2egm+d3/kIx6DLCy8ZWacG89c9LF8G80s4zmEHs+q1gQEajYWK+rzEu
	gNiR6+5hlTaRGDTuDN74aqTy4BmRs0/0pjpquju6zylRF49bR/RK9fMf3XzUlOVz2SLzt88GfGTB6
	RxFJaYjQ==;
From: David Woodhouse <dwmw2@infradead.org>
To: qemu-devel@nongnu.org
Cc: Richard Henderson <richard.henderson@linaro.org>,
	Beniamino Galvani <b.galvani@gmail.com>,
	Peter Maydell <peter.maydell@linaro.org>,
	Strahinja Jankovic <strahinja.p.jankovic@gmail.com>,
	Niek Linnenbank <nieklinnenbank@gmail.com>,
	=?UTF-8?q?C=C3=A9dric=20Le=20Goater?= <clg@kaod.org>,
	Andrew Jeffery <andrew@codeconstruct.com.au>,
	Joel Stanley <joel@jms.id.au>,
	Igor Mitsyanko <i.mitsyanko@gmail.com>,
	Jean-Christophe Dubois <jcd@tribudubois.net>,
	Andrey Smirnov <andrew.smirnov@gmail.com>,
	=?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= <philmd@linaro.org>,
	Rob Herring <robh@kernel.org>,
	Subbaraya Sundeep <sundeep.lkml@gmail.com>,
	Jan Kiszka <jan.kiszka@web.de>,
	Tyrone Ting <kfting@nuvoton.com>,
	Hao Wu <wuhaotsh@google.com>,
	Radoslaw Biernacki <rad@semihalf.com>,
	Leif Lindholm <quic_llindhol@quicinc.com>,
	Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org>,
	"Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
	Alistair Francis <alistair@alistair23.me>,
	Helge Deller <deller@gmx.de>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Eduardo Habkost <eduardo@habkost.net>,
	"Michael S. Tsirkin" <mst@redhat.com>,
	Marcel Apfelbaum <marcel.apfelbaum@gmail.com>,
	Song Gao <gaosong@loongson.cn>,
	Thomas Huth <huth@tuxfamily.org>,
	Laurent Vivier <laurent@vivier.eu>,
	Huacai Chen <chenhuacai@kernel.org>,
	Jiaxun Yang <jiaxun.yang@flygoat.com>,
	=?UTF-8?q?Herv=C3=A9=20Poussineau?= <hpoussin@reactos.org>,
	Aleksandar Rikalo <aleksandar.rikalo@syrmia.com>,
	Aurelien Jarno <aurelien@aurel32.net>,
	Jason Wang <jasowang@redhat.com>,
	Jia Liu <proljc@gmail.com>,
	Stafford Horne <shorne@gmail.com>,
	Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>,
	Nicholas Piggin <npiggin@gmail.com>,
	Daniel Henrique Barboza <danielhb413@gmail.com>,
	David Gibson <david@gibson.dropbear.id.au>,
	Harsh Prateek Bora <harshpb@linux.ibm.com>,
	Bin Meng <bin.meng@windriver.com>,
	Palmer Dabbelt <palmer@dabbelt.com>,
	Weiwei Li <liwei1518@gmail.com>,
	Liu Zhiwei <zhiwei_liu@linux.alibaba.com>,
	Halil Pasic <pasic@linux.ibm.com>,
	Christian Borntraeger <borntraeger@linux.ibm.com>,
	Eric Farman <farman@linux.ibm.com>,
	David Hildenbrand <david@redhat.com>,
	Ilya Leoshkevich <iii@linux.ibm.com>,
	Yoshinori Sato <ysato@users.sourceforge.jp>,
	Magnus Damm <magnus.damm@gmail.com>,
	Artyom Tarasenko <atar4qemu@gmail.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Anthony Perard <anthony.perard@citrix.com>,
	Paul Durrant <paul@xen.org>,
	Max Filippov <jcmvbkbc@gmail.com>,
	qemu-arm@nongnu.org,
	qemu-ppc@nongnu.org,
	qemu-riscv@nongnu.org,
	qemu-s390x@nongnu.org,
	xen-devel@lists.xenproject.org,
	David Woodhouse <dwmw@amazon.co.uk>,
	Thomas Huth <thuth@redhat.com>
Subject: [PATCH v4 27/47] hw/arm/highbank: use qemu_create_nic_device()
Date: Fri, 26 Jan 2024 17:25:04 +0000
Message-ID: <20240126173228.394202-28-dwmw2@infradead.org>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20240126173228.394202-1-dwmw2@infradead.org>
References: <20240126173228.394202-1-dwmw2@infradead.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Sender: David Woodhouse <dwmw2@infradead.org>
X-SRS-Rewrite: SMTP reverse-path rewritten from <dwmw2@infradead.org> by casper.infradead.org. See http://www.infradead.org/rpr.html

From: David Woodhouse <dwmw@amazon.co.uk>

Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
Reviewed-by: Thomas Huth <thuth@redhat.com>
---
 hw/arm/highbank.c | 12 +++++-------
 1 file changed, 5 insertions(+), 7 deletions(-)

diff --git a/hw/arm/highbank.c b/hw/arm/highbank.c
index c21e18d08f..6a0e20e58d 100644
--- a/hw/arm/highbank.c
+++ b/hw/arm/highbank.c
@@ -296,19 +296,17 @@ static void calxeda_init(MachineState *machine, enum cxmachines machine_id)
 
     sysbus_create_simple(TYPE_SYSBUS_AHCI, 0xffe08000, pic[83]);
 
-    if (nd_table[0].used) {
-        qemu_check_nic_model(&nd_table[0], "xgmac");
-        dev = qdev_new("xgmac");
-        qdev_set_nic_properties(dev, &nd_table[0]);
+    dev = qemu_create_nic_device("xgmac", true, NULL);
+    if (dev) {
         sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal);
         sysbus_mmio_map(SYS_BUS_DEVICE(dev), 0, 0xfff50000);
         sysbus_connect_irq(SYS_BUS_DEVICE(dev), 0, pic[77]);
         sysbus_connect_irq(SYS_BUS_DEVICE(dev), 1, pic[78]);
         sysbus_connect_irq(SYS_BUS_DEVICE(dev), 2, pic[79]);
+    }
 
-        qemu_check_nic_model(&nd_table[1], "xgmac");
-        dev = qdev_new("xgmac");
-        qdev_set_nic_properties(dev, &nd_table[1]);
+    dev = qemu_create_nic_device("xgmac", true, NULL);
+    if (dev) {
         sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal);
         sysbus_mmio_map(SYS_BUS_DEVICE(dev), 0, 0xfff51000);
         sysbus_connect_irq(SYS_BUS_DEVICE(dev), 0, pic[80]);
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Fri Jan 26 17:47:44 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 26 Jan 2024 17:47:44 +0000
Received: from list by lists.xenproject.org with outflank-mailman.672397.1046442 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTQIp-0005SK-EK; Fri, 26 Jan 2024 17:47:43 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 672397.1046442; Fri, 26 Jan 2024 17:47:43 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTQIp-0005SD-BR; Fri, 26 Jan 2024 17:47:43 +0000
Received: by outflank-mailman (input) for mailman id 672397;
 Fri, 26 Jan 2024 17:47:42 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=bPDA=JE=casper.srs.infradead.org=BATV+7caeb094913322f6f00d+7460+infradead.org+dwmw2@srs-se1.protection.inumbo.net>)
 id 1rTQ4s-0004m7-On
 for xen-devel@lists.xenproject.org; Fri, 26 Jan 2024 17:33:18 +0000
Received: from casper.infradead.org (casper.infradead.org
 [2001:8b0:10b:1236::1])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id fb549e82-bc70-11ee-98f5-efadbce2ee36;
 Fri, 26 Jan 2024 18:33:13 +0100 (CET)
Received: from [2001:8b0:10b:1::ebe] (helo=i7.infradead.org)
 by casper.infradead.org with esmtpsa (Exim 4.97.1 #2 (Red Hat Linux))
 id 1rTQ49-0000000EKUi-0YRl; Fri, 26 Jan 2024 17:32:34 +0000
Received: from dwoodhou by i7.infradead.org with local (Exim 4.97.1 #2 (Red
 Hat Linux)) id 1rTQ4A-00000001enU-00UM;
 Fri, 26 Jan 2024 17:32:34 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
X-Inumbo-ID: fb549e82-bc70-11ee-98f5-efadbce2ee36
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=infradead.org; s=casper.20170209; h=Sender:Content-Transfer-Encoding:
	MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:
	Reply-To:Content-Type:Content-ID:Content-Description;
	bh=RalmZg2g2HcWNPspE1WbCMjLC5xu8xXxgPEaYu8kgcA=; b=E5mQKWR4z4aHkGBp7qVHFzw67C
	v5wpWOcAtFcL6EkJiTQAISbFdVRSj2uOXmFt3yxiz2bdgjWcIy8+LJVGopK1l7o+Rbnwd+2nWkMYG
	oIlroP1+I+949w2ebYVnJMwaCjTNv8hFsvAmC/MQ1tQjJJ1u/CGn5MWPPB7AOz+02tR7o0Ze+U7C4
	JnUu2L1rG9U5mLFmVmv+Dvy5uXqsOlGL1qUQ32dy1gg508bL9gVJu8cL6oKbqdxodIXzXojp9Fq25
	VnC9u6fY29dh8CbDgYiBQNL4vetAuKC9EhtiJZDBjVdfo9mOKEoWtD6k03kl1X0hLFRbwVi8eMjVx
	tG0btbuA==;
From: David Woodhouse <dwmw2@infradead.org>
To: qemu-devel@nongnu.org
Cc: Richard Henderson <richard.henderson@linaro.org>,
	Beniamino Galvani <b.galvani@gmail.com>,
	Peter Maydell <peter.maydell@linaro.org>,
	Strahinja Jankovic <strahinja.p.jankovic@gmail.com>,
	Niek Linnenbank <nieklinnenbank@gmail.com>,
	=?UTF-8?q?C=C3=A9dric=20Le=20Goater?= <clg@kaod.org>,
	Andrew Jeffery <andrew@codeconstruct.com.au>,
	Joel Stanley <joel@jms.id.au>,
	Igor Mitsyanko <i.mitsyanko@gmail.com>,
	Jean-Christophe Dubois <jcd@tribudubois.net>,
	Andrey Smirnov <andrew.smirnov@gmail.com>,
	=?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= <philmd@linaro.org>,
	Rob Herring <robh@kernel.org>,
	Subbaraya Sundeep <sundeep.lkml@gmail.com>,
	Jan Kiszka <jan.kiszka@web.de>,
	Tyrone Ting <kfting@nuvoton.com>,
	Hao Wu <wuhaotsh@google.com>,
	Radoslaw Biernacki <rad@semihalf.com>,
	Leif Lindholm <quic_llindhol@quicinc.com>,
	Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org>,
	"Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
	Alistair Francis <alistair@alistair23.me>,
	Helge Deller <deller@gmx.de>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Eduardo Habkost <eduardo@habkost.net>,
	"Michael S. Tsirkin" <mst@redhat.com>,
	Marcel Apfelbaum <marcel.apfelbaum@gmail.com>,
	Song Gao <gaosong@loongson.cn>,
	Thomas Huth <huth@tuxfamily.org>,
	Laurent Vivier <laurent@vivier.eu>,
	Huacai Chen <chenhuacai@kernel.org>,
	Jiaxun Yang <jiaxun.yang@flygoat.com>,
	=?UTF-8?q?Herv=C3=A9=20Poussineau?= <hpoussin@reactos.org>,
	Aleksandar Rikalo <aleksandar.rikalo@syrmia.com>,
	Aurelien Jarno <aurelien@aurel32.net>,
	Jason Wang <jasowang@redhat.com>,
	Jia Liu <proljc@gmail.com>,
	Stafford Horne <shorne@gmail.com>,
	Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>,
	Nicholas Piggin <npiggin@gmail.com>,
	Daniel Henrique Barboza <danielhb413@gmail.com>,
	David Gibson <david@gibson.dropbear.id.au>,
	Harsh Prateek Bora <harshpb@linux.ibm.com>,
	Bin Meng <bin.meng@windriver.com>,
	Palmer Dabbelt <palmer@dabbelt.com>,
	Weiwei Li <liwei1518@gmail.com>,
	Liu Zhiwei <zhiwei_liu@linux.alibaba.com>,
	Halil Pasic <pasic@linux.ibm.com>,
	Christian Borntraeger <borntraeger@linux.ibm.com>,
	Eric Farman <farman@linux.ibm.com>,
	David Hildenbrand <david@redhat.com>,
	Ilya Leoshkevich <iii@linux.ibm.com>,
	Yoshinori Sato <ysato@users.sourceforge.jp>,
	Magnus Damm <magnus.damm@gmail.com>,
	Artyom Tarasenko <atar4qemu@gmail.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Anthony Perard <anthony.perard@citrix.com>,
	Paul Durrant <paul@xen.org>,
	Max Filippov <jcmvbkbc@gmail.com>,
	qemu-arm@nongnu.org,
	qemu-ppc@nongnu.org,
	qemu-riscv@nongnu.org,
	qemu-s390x@nongnu.org,
	xen-devel@lists.xenproject.org,
	David Woodhouse <dwmw@amazon.co.uk>,
	Thomas Huth <thuth@redhat.com>
Subject: [PATCH v4 34/47] hw/microblaze: use qemu_configure_nic_device()
Date: Fri, 26 Jan 2024 17:25:11 +0000
Message-ID: <20240126173228.394202-35-dwmw2@infradead.org>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20240126173228.394202-1-dwmw2@infradead.org>
References: <20240126173228.394202-1-dwmw2@infradead.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Sender: David Woodhouse <dwmw2@infradead.org>
X-SRS-Rewrite: SMTP reverse-path rewritten from <dwmw2@infradead.org> by casper.infradead.org. See http://www.infradead.org/rpr.html

From: David Woodhouse <dwmw@amazon.co.uk>

Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
Reviewed-by: Thomas Huth <thuth@redhat.com>
---
 hw/microblaze/petalogix_ml605_mmu.c      | 3 +--
 hw/microblaze/petalogix_s3adsp1800_mmu.c | 3 +--
 2 files changed, 2 insertions(+), 4 deletions(-)

diff --git a/hw/microblaze/petalogix_ml605_mmu.c b/hw/microblaze/petalogix_ml605_mmu.c
index fb7889cf67..0f5fabc32e 100644
--- a/hw/microblaze/petalogix_ml605_mmu.c
+++ b/hw/microblaze/petalogix_ml605_mmu.c
@@ -133,7 +133,6 @@ petalogix_ml605_init(MachineState *machine)
     sysbus_connect_irq(SYS_BUS_DEVICE(dev), 0, irq[TIMER_IRQ]);
 
     /* axi ethernet and dma initialization. */
-    qemu_check_nic_model(&nd_table[0], "xlnx.axi-ethernet");
     eth0 = qdev_new("xlnx.axi-ethernet");
     dma = qdev_new("xlnx.axi-dma");
 
@@ -145,7 +144,7 @@ petalogix_ml605_init(MachineState *machine)
                                   "axistream-connected-target", NULL);
     cs = object_property_get_link(OBJECT(dma),
                                   "axistream-control-connected-target", NULL);
-    qdev_set_nic_properties(eth0, &nd_table[0]);
+    qemu_configure_nic_device(eth0, true, NULL);
     qdev_prop_set_uint32(eth0, "rxmem", 0x1000);
     qdev_prop_set_uint32(eth0, "txmem", 0x1000);
     object_property_set_link(OBJECT(eth0), "axistream-connected", ds,
diff --git a/hw/microblaze/petalogix_s3adsp1800_mmu.c b/hw/microblaze/petalogix_s3adsp1800_mmu.c
index 505639c298..dad46bd7f9 100644
--- a/hw/microblaze/petalogix_s3adsp1800_mmu.c
+++ b/hw/microblaze/petalogix_s3adsp1800_mmu.c
@@ -114,9 +114,8 @@ petalogix_s3adsp1800_init(MachineState *machine)
     sysbus_mmio_map(SYS_BUS_DEVICE(dev), 0, TIMER_BASEADDR);
     sysbus_connect_irq(SYS_BUS_DEVICE(dev), 0, irq[TIMER_IRQ]);
 
-    qemu_check_nic_model(&nd_table[0], "xlnx.xps-ethernetlite");
     dev = qdev_new("xlnx.xps-ethernetlite");
-    qdev_set_nic_properties(dev, &nd_table[0]);
+    qemu_configure_nic_device(dev, true, NULL);
     qdev_prop_set_uint32(dev, "tx-ping-pong", 0);
     qdev_prop_set_uint32(dev, "rx-ping-pong", 0);
     sysbus_realize_and_unref(SYS_BUS_DEVICE(dev), &error_fatal);
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Fri Jan 26 17:47:47 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 26 Jan 2024 17:47:47 +0000
Received: from list by lists.xenproject.org with outflank-mailman.672399.1046452 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTQIt-0005nB-Mc; Fri, 26 Jan 2024 17:47:47 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 672399.1046452; Fri, 26 Jan 2024 17:47:47 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTQIt-0005n3-Jl; Fri, 26 Jan 2024 17:47:47 +0000
Received: by outflank-mailman (input) for mailman id 672399;
 Fri, 26 Jan 2024 17:47:45 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=46+y=JE=desiato.srs.infradead.org=BATV+5cc348fc898a3f56ac6c+7460+infradead.org+dwmw2@srs-se1.protection.inumbo.net>)
 id 1rTQ56-0004Zo-FQ
 for xen-devel@lists.xenproject.org; Fri, 26 Jan 2024 17:33:32 +0000
Received: from desiato.infradead.org (desiato.infradead.org
 [2001:8b0:10b:1:d65d:64ff:fe57:4e05])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 053afa19-bc71-11ee-8a43-1f161083a0e0;
 Fri, 26 Jan 2024 18:33:30 +0100 (CET)
Received: from [2001:8b0:10b:1::ebe] (helo=i7.infradead.org)
 by desiato.infradead.org with esmtpsa (Exim 4.97.1 #2 (Red Hat Linux))
 id 1rTQ4B-000000069Uv-2wwE; Fri, 26 Jan 2024 17:32:36 +0000
Received: from dwoodhou by i7.infradead.org with local (Exim 4.97.1 #2 (Red
 Hat Linux)) id 1rTQ4A-00000001eoB-2IMj;
 Fri, 26 Jan 2024 17:32:34 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
X-Inumbo-ID: 053afa19-bc71-11ee-8a43-1f161083a0e0
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=infradead.org; s=desiato.20200630; h=Sender:Content-Transfer-Encoding:
	MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:
	Reply-To:Content-Type:Content-ID:Content-Description;
	bh=OcUPxqWmRn2W/vBLc1vAUxfRYXil4peX6g1xYhANngU=; b=TfGUoteNypHinLpnC54cAlZs44
	OX64oxlzkqBS+2+W6mF+76l9AOE+aFd0MOTd7JYOCqhTz6lgTYBEfS6c8Wq8ACwdgaB5BAfLi2vl5
	MzPO1rNXkxiINiFRVS807lK5988jrYw+TP64dtWej5D0TVT5XxC06/K9OGkd3pa4VwNyGz70vsqct
	KM7OvQJfK5TDUH3XQq3zjCOXDr/5T891JMPQdf7RFPSkscDNkorV2V6TLvUk3gVndHBVYku56BWaq
	Z5y0GMvGdrevv20WCscCTzB87FJixhTC4ym3Ce53CeRIAUB6+mPj2urOFzUj9Fx1LNYudl9zWMkta
	jmmSeFsg==;
From: David Woodhouse <dwmw2@infradead.org>
To: qemu-devel@nongnu.org
Cc: Richard Henderson <richard.henderson@linaro.org>,
	Beniamino Galvani <b.galvani@gmail.com>,
	Peter Maydell <peter.maydell@linaro.org>,
	Strahinja Jankovic <strahinja.p.jankovic@gmail.com>,
	Niek Linnenbank <nieklinnenbank@gmail.com>,
	=?UTF-8?q?C=C3=A9dric=20Le=20Goater?= <clg@kaod.org>,
	Andrew Jeffery <andrew@codeconstruct.com.au>,
	Joel Stanley <joel@jms.id.au>,
	Igor Mitsyanko <i.mitsyanko@gmail.com>,
	Jean-Christophe Dubois <jcd@tribudubois.net>,
	Andrey Smirnov <andrew.smirnov@gmail.com>,
	=?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= <philmd@linaro.org>,
	Rob Herring <robh@kernel.org>,
	Subbaraya Sundeep <sundeep.lkml@gmail.com>,
	Jan Kiszka <jan.kiszka@web.de>,
	Tyrone Ting <kfting@nuvoton.com>,
	Hao Wu <wuhaotsh@google.com>,
	Radoslaw Biernacki <rad@semihalf.com>,
	Leif Lindholm <quic_llindhol@quicinc.com>,
	Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org>,
	"Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
	Alistair Francis <alistair@alistair23.me>,
	Helge Deller <deller@gmx.de>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Eduardo Habkost <eduardo@habkost.net>,
	"Michael S. Tsirkin" <mst@redhat.com>,
	Marcel Apfelbaum <marcel.apfelbaum@gmail.com>,
	Song Gao <gaosong@loongson.cn>,
	Thomas Huth <huth@tuxfamily.org>,
	Laurent Vivier <laurent@vivier.eu>,
	Huacai Chen <chenhuacai@kernel.org>,
	Jiaxun Yang <jiaxun.yang@flygoat.com>,
	=?UTF-8?q?Herv=C3=A9=20Poussineau?= <hpoussin@reactos.org>,
	Aleksandar Rikalo <aleksandar.rikalo@syrmia.com>,
	Aurelien Jarno <aurelien@aurel32.net>,
	Jason Wang <jasowang@redhat.com>,
	Jia Liu <proljc@gmail.com>,
	Stafford Horne <shorne@gmail.com>,
	Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>,
	Nicholas Piggin <npiggin@gmail.com>,
	Daniel Henrique Barboza <danielhb413@gmail.com>,
	David Gibson <david@gibson.dropbear.id.au>,
	Harsh Prateek Bora <harshpb@linux.ibm.com>,
	Bin Meng <bin.meng@windriver.com>,
	Palmer Dabbelt <palmer@dabbelt.com>,
	Weiwei Li <liwei1518@gmail.com>,
	Liu Zhiwei <zhiwei_liu@linux.alibaba.com>,
	Halil Pasic <pasic@linux.ibm.com>,
	Christian Borntraeger <borntraeger@linux.ibm.com>,
	Eric Farman <farman@linux.ibm.com>,
	David Hildenbrand <david@redhat.com>,
	Ilya Leoshkevich <iii@linux.ibm.com>,
	Yoshinori Sato <ysato@users.sourceforge.jp>,
	Magnus Damm <magnus.damm@gmail.com>,
	Artyom Tarasenko <atar4qemu@gmail.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Anthony Perard <anthony.perard@citrix.com>,
	Paul Durrant <paul@xen.org>,
	Max Filippov <jcmvbkbc@gmail.com>,
	qemu-arm@nongnu.org,
	qemu-ppc@nongnu.org,
	qemu-riscv@nongnu.org,
	qemu-s390x@nongnu.org,
	xen-devel@lists.xenproject.org,
	David Woodhouse <dwmw@amazon.co.uk>,
	Thomas Huth <thuth@redhat.com>
Subject: [PATCH v4 41/47] hw/s390x/s390-virtio-ccw: use qemu_create_nic_device()
Date: Fri, 26 Jan 2024 17:25:18 +0000
Message-ID: <20240126173228.394202-42-dwmw2@infradead.org>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20240126173228.394202-1-dwmw2@infradead.org>
References: <20240126173228.394202-1-dwmw2@infradead.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Sender: David Woodhouse <dwmw2@infradead.org>
X-SRS-Rewrite: SMTP reverse-path rewritten from <dwmw2@infradead.org> by desiato.infradead.org. See http://www.infradead.org/rpr.html

From: David Woodhouse <dwmw@amazon.co.uk>

Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
Acked-by: Thomas Huth <thuth@redhat.com>
---
 hw/s390x/s390-virtio-ccw.c | 11 ++---------
 1 file changed, 2 insertions(+), 9 deletions(-)

diff --git a/hw/s390x/s390-virtio-ccw.c b/hw/s390x/s390-virtio-ccw.c
index c99682b07d..62804cc228 100644
--- a/hw/s390x/s390-virtio-ccw.c
+++ b/hw/s390x/s390-virtio-ccw.c
@@ -229,16 +229,9 @@ static void s390_init_ipl_dev(const char *kernel_filename,
 
 static void s390_create_virtio_net(BusState *bus, const char *name)
 {
-    int i;
-
-    for (i = 0; i < nb_nics; i++) {
-        NICInfo *nd = &nd_table[i];
-        DeviceState *dev;
-
-        qemu_check_nic_model(nd, "virtio");
+    DeviceState *dev;
 
-        dev = qdev_new(name);
-        qdev_set_nic_properties(dev, nd);
+    while ((dev = qemu_create_nic_device(name, true, "virtio"))) {
         qdev_realize_and_unref(dev, bus, &error_fatal);
     }
 }
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Fri Jan 26 17:47:57 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 26 Jan 2024 17:47:57 +0000
Received: from list by lists.xenproject.org with outflank-mailman.672401.1046462 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTQJ3-0006Ge-09; Fri, 26 Jan 2024 17:47:57 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 672401.1046462; Fri, 26 Jan 2024 17:47:56 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTQJ2-0006GV-T7; Fri, 26 Jan 2024 17:47:56 +0000
Received: by outflank-mailman (input) for mailman id 672401;
 Fri, 26 Jan 2024 17:47:55 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=bPDA=JE=casper.srs.infradead.org=BATV+7caeb094913322f6f00d+7460+infradead.org+dwmw2@srs-se1.protection.inumbo.net>)
 id 1rTQ4v-0004Zo-QQ
 for xen-devel@lists.xenproject.org; Fri, 26 Jan 2024 17:33:21 +0000
Received: from casper.infradead.org (casper.infradead.org
 [2001:8b0:10b:1236::1])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id ffa715cc-bc70-11ee-8a43-1f161083a0e0;
 Fri, 26 Jan 2024 18:33:20 +0100 (CET)
Received: from [2001:8b0:10b:1::ebe] (helo=i7.infradead.org)
 by casper.infradead.org with esmtpsa (Exim 4.97.1 #2 (Red Hat Linux))
 id 1rTQ48-0000000EKUP-1sEW; Fri, 26 Jan 2024 17:32:34 +0000
Received: from dwoodhou by i7.infradead.org with local (Exim 4.97.1 #2 (Red
 Hat Linux)) id 1rTQ49-00000001emq-0m1s;
 Fri, 26 Jan 2024 17:32:33 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
X-Inumbo-ID: ffa715cc-bc70-11ee-8a43-1f161083a0e0
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=infradead.org; s=casper.20170209; h=Sender:Content-Transfer-Encoding:
	MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:
	Reply-To:Content-Type:Content-ID:Content-Description;
	bh=k2kYsmgMhajjSuEa4VCCXU0OROgFwkGT6hP11SgoYvY=; b=kDq5d3YqTN4tC07g2pHXvguUv5
	v6oWsfl3CFqA7z32uuQccQ6HLabqS1gK18O6dq84gLsVhpMW61+Ws8kinZvCqDemrVvKibSMk1WVv
	nbr9TbCVcfy8lJx55lBBOa2jQ70GFFd1G2NqfliFJovMQ44gk70WsYN2H2a5m2cS1JTowZPhBlD2D
	rSVgY1KHTycuYrWyU/1xOSjelOfeuF6OnuX8QJMJGJ3x9+lt7isSHSQpWtucSdjiMKzHEuv8Ufoso
	JXsF8jW29b34JerRCkSctrr7aAhtJnK/Ox+oJB6XR1Zpnsin7uF8xv4VIURXv9IFaVKW4iC21h+t+
	vAuxgnuQ==;
From: David Woodhouse <dwmw2@infradead.org>
To: qemu-devel@nongnu.org
Cc: Richard Henderson <richard.henderson@linaro.org>,
	Beniamino Galvani <b.galvani@gmail.com>,
	Peter Maydell <peter.maydell@linaro.org>,
	Strahinja Jankovic <strahinja.p.jankovic@gmail.com>,
	Niek Linnenbank <nieklinnenbank@gmail.com>,
	=?UTF-8?q?C=C3=A9dric=20Le=20Goater?= <clg@kaod.org>,
	Andrew Jeffery <andrew@codeconstruct.com.au>,
	Joel Stanley <joel@jms.id.au>,
	Igor Mitsyanko <i.mitsyanko@gmail.com>,
	Jean-Christophe Dubois <jcd@tribudubois.net>,
	Andrey Smirnov <andrew.smirnov@gmail.com>,
	=?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= <philmd@linaro.org>,
	Rob Herring <robh@kernel.org>,
	Subbaraya Sundeep <sundeep.lkml@gmail.com>,
	Jan Kiszka <jan.kiszka@web.de>,
	Tyrone Ting <kfting@nuvoton.com>,
	Hao Wu <wuhaotsh@google.com>,
	Radoslaw Biernacki <rad@semihalf.com>,
	Leif Lindholm <quic_llindhol@quicinc.com>,
	Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org>,
	"Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
	Alistair Francis <alistair@alistair23.me>,
	Helge Deller <deller@gmx.de>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Eduardo Habkost <eduardo@habkost.net>,
	"Michael S. Tsirkin" <mst@redhat.com>,
	Marcel Apfelbaum <marcel.apfelbaum@gmail.com>,
	Song Gao <gaosong@loongson.cn>,
	Thomas Huth <huth@tuxfamily.org>,
	Laurent Vivier <laurent@vivier.eu>,
	Huacai Chen <chenhuacai@kernel.org>,
	Jiaxun Yang <jiaxun.yang@flygoat.com>,
	=?UTF-8?q?Herv=C3=A9=20Poussineau?= <hpoussin@reactos.org>,
	Aleksandar Rikalo <aleksandar.rikalo@syrmia.com>,
	Aurelien Jarno <aurelien@aurel32.net>,
	Jason Wang <jasowang@redhat.com>,
	Jia Liu <proljc@gmail.com>,
	Stafford Horne <shorne@gmail.com>,
	Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>,
	Nicholas Piggin <npiggin@gmail.com>,
	Daniel Henrique Barboza <danielhb413@gmail.com>,
	David Gibson <david@gibson.dropbear.id.au>,
	Harsh Prateek Bora <harshpb@linux.ibm.com>,
	Bin Meng <bin.meng@windriver.com>,
	Palmer Dabbelt <palmer@dabbelt.com>,
	Weiwei Li <liwei1518@gmail.com>,
	Liu Zhiwei <zhiwei_liu@linux.alibaba.com>,
	Halil Pasic <pasic@linux.ibm.com>,
	Christian Borntraeger <borntraeger@linux.ibm.com>,
	Eric Farman <farman@linux.ibm.com>,
	David Hildenbrand <david@redhat.com>,
	Ilya Leoshkevich <iii@linux.ibm.com>,
	Yoshinori Sato <ysato@users.sourceforge.jp>,
	Magnus Damm <magnus.damm@gmail.com>,
	Artyom Tarasenko <atar4qemu@gmail.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Anthony Perard <anthony.perard@citrix.com>,
	Paul Durrant <paul@xen.org>,
	Max Filippov <jcmvbkbc@gmail.com>,
	qemu-arm@nongnu.org,
	qemu-ppc@nongnu.org,
	qemu-riscv@nongnu.org,
	qemu-s390x@nongnu.org,
	xen-devel@lists.xenproject.org,
	David Woodhouse <dwmw@amazon.co.uk>,
	Thomas Huth <thuth@redhat.com>
Subject: [PATCH v4 25/47] hw/net/smc91c111: use qemu_configure_nic_device()
Date: Fri, 26 Jan 2024 17:25:02 +0000
Message-ID: <20240126173228.394202-26-dwmw2@infradead.org>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20240126173228.394202-1-dwmw2@infradead.org>
References: <20240126173228.394202-1-dwmw2@infradead.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Sender: David Woodhouse <dwmw2@infradead.org>
X-SRS-Rewrite: SMTP reverse-path rewritten from <dwmw2@infradead.org> by casper.infradead.org. See http://www.infradead.org/rpr.html

From: David Woodhouse <dwmw@amazon.co.uk>

Some callers instantiate the device unconditionally, others will do so only
if there is a NICInfo to go with it. This appears to be fairly random, but
preserve the existing behaviour of each caller for now.

Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
Reviewed-by: Thomas Huth <thuth@redhat.com>
---
 hw/arm/gumstix.c           |  6 ++----
 hw/arm/integratorcp.c      |  5 +++--
 hw/arm/mainstone.c         |  3 +--
 hw/arm/realview.c          | 25 ++++++++++---------------
 hw/arm/versatilepb.c       | 15 ++++-----------
 hw/net/smc91c111.c         |  5 ++---
 include/hw/net/smc91c111.h |  2 +-
 7 files changed, 23 insertions(+), 38 deletions(-)

diff --git a/hw/arm/gumstix.c b/hw/arm/gumstix.c
index 2ca4140c9f..f58c4da7f9 100644
--- a/hw/arm/gumstix.c
+++ b/hw/arm/gumstix.c
@@ -74,8 +74,7 @@ static void connex_init(MachineState *machine)
                           FLASH_SECTOR_SIZE, 2, 0, 0, 0, 0, 0);
 
     /* Interrupt line of NIC is connected to GPIO line 36 */
-    smc91c111_init(&nd_table[0], 0x04000300,
-                    qdev_get_gpio_in(cpu->gpio, 36));
+    smc91c111_init(0x04000300, qdev_get_gpio_in(cpu->gpio, 36));
 }
 
 static void verdex_init(MachineState *machine)
@@ -98,8 +97,7 @@ static void verdex_init(MachineState *machine)
                           FLASH_SECTOR_SIZE, 2, 0, 0, 0, 0, 0);
 
     /* Interrupt line of NIC is connected to GPIO line 99 */
-    smc91c111_init(&nd_table[0], 0x04000300,
-                    qdev_get_gpio_in(cpu->gpio, 99));
+    smc91c111_init(0x04000300, qdev_get_gpio_in(cpu->gpio, 99));
 }
 
 static void connex_class_init(ObjectClass *oc, void *data)
diff --git a/hw/arm/integratorcp.c b/hw/arm/integratorcp.c
index 1830e1d785..c56a2c1353 100644
--- a/hw/arm/integratorcp.c
+++ b/hw/arm/integratorcp.c
@@ -666,8 +666,9 @@ static void integratorcp_init(MachineState *machine)
     sysbus_mmio_map(SYS_BUS_DEVICE(dev), 0, 0x1d000000);
     sysbus_connect_irq(SYS_BUS_DEVICE(dev), 0, pic[25]);
 
-    if (nd_table[0].used)
-        smc91c111_init(&nd_table[0], 0xc8000000, pic[27]);
+    if (qemu_find_nic_info("smc91c111", true, NULL)) {
+        smc91c111_init(0xc8000000, pic[27]);
+    }
 
     sysbus_create_simple("pl110", 0xc0000000, pic[22]);
 
diff --git a/hw/arm/mainstone.c b/hw/arm/mainstone.c
index 68329c4617..84dbb6e525 100644
--- a/hw/arm/mainstone.c
+++ b/hw/arm/mainstone.c
@@ -153,8 +153,7 @@ static void mainstone_common_init(MachineState *machine,
             qdev_get_gpio_in(mst_irq, S1_IRQ),
             qdev_get_gpio_in(mst_irq, S1_CD_IRQ));
 
-    smc91c111_init(&nd_table[0], MST_ETH_PHYS,
-                    qdev_get_gpio_in(mst_irq, ETHERNET_IRQ));
+    smc91c111_init(MST_ETH_PHYS, qdev_get_gpio_in(mst_irq, ETHERNET_IRQ));
 
     mainstone_binfo.board_id = arm_id;
     arm_load_kernel(mpu->cpu, machine, &mainstone_binfo);
diff --git a/hw/arm/realview.c b/hw/arm/realview.c
index 132217b2ed..6e7529d98f 100644
--- a/hw/arm/realview.c
+++ b/hw/arm/realview.c
@@ -89,7 +89,6 @@ static void realview_init(MachineState *machine,
     I2CBus *i2c;
     int n;
     unsigned int smp_cpus = machine->smp.cpus;
-    int done_nic = 0;
     qemu_irq cpu_irq[4];
     int is_mpcore = 0;
     int is_pb = 0;
@@ -295,24 +294,20 @@ static void realview_init(MachineState *machine,
             n--;
         }
     }
-    for(n = 0; n < nb_nics; n++) {
-        nd = &nd_table[n];
-
-        if (!done_nic && (!nd->model ||
-                    strcmp(nd->model, is_pb ? "lan9118" : "smc91c111") == 0)) {
-            if (is_pb) {
-                lan9118_init(nd, 0x4e000000, pic[28]);
-            } else {
-                smc91c111_init(nd, 0x4e000000, pic[28]);
-            }
-            done_nic = 1;
+
+    nd = qemu_find_nic_info(is_pb ? "lan9118" : "smc91c111", true, NULL);
+    if (nd) {
+        if (is_pb) {
+            lan9118_init(nd, 0x4e000000, pic[28]);
         } else {
-            if (pci_bus) {
-                pci_nic_init_nofail(nd, pci_bus, "rtl8139", NULL);
-            }
+            smc91c111_init(0x4e000000, pic[28]);
         }
     }
 
+    if (pci_bus) {
+        pci_init_nic_devices(pci_bus, "rtl8139");
+    }
+
     dev = sysbus_create_simple(TYPE_ARM_SBCON_I2C, 0x10002000, NULL);
     i2c = (I2CBus *)qdev_get_child_bus(dev, "i2c");
     i2c_slave_create_simple(i2c, "ds1338", 0x68);
diff --git a/hw/arm/versatilepb.c b/hw/arm/versatilepb.c
index 4b2257787b..0517a65601 100644
--- a/hw/arm/versatilepb.c
+++ b/hw/arm/versatilepb.c
@@ -192,10 +192,8 @@ static void versatile_init(MachineState *machine, int board_id)
     SysBusDevice *busdev;
     DeviceState *pl041;
     PCIBus *pci_bus;
-    NICInfo *nd;
     I2CBus *i2c;
     int n;
-    int done_smc = 0;
     DriveInfo *dinfo;
 
     if (machine->ram_size > 0x10000000) {
@@ -263,16 +261,11 @@ static void versatile_init(MachineState *machine, int board_id)
     sysbus_connect_irq(busdev, 3, sic[30]);
     pci_bus = (PCIBus *)qdev_get_child_bus(dev, "pci");
 
-    for(n = 0; n < nb_nics; n++) {
-        nd = &nd_table[n];
-
-        if (!done_smc && (!nd->model || strcmp(nd->model, "smc91c111") == 0)) {
-            smc91c111_init(nd, 0x10010000, sic[25]);
-            done_smc = 1;
-        } else {
-            pci_nic_init_nofail(nd, pci_bus, "rtl8139", NULL);
-        }
+    if (qemu_find_nic_info("smc91c111", true, NULL)) {
+        smc91c111_init(0x10010000, sic[25]);
     }
+    pci_init_nic_devices(pci_bus, "rtl8139");
+
     if (machine_usb(machine)) {
         pci_create_simple(pci_bus, -1, "pci-ohci");
     }
diff --git a/hw/net/smc91c111.c b/hw/net/smc91c111.c
index 49b7c26102..702d0e8e83 100644
--- a/hw/net/smc91c111.c
+++ b/hw/net/smc91c111.c
@@ -818,14 +818,13 @@ static void smc91c111_register_types(void)
 
 /* Legacy helper function.  Should go away when machine config files are
    implemented.  */
-void smc91c111_init(NICInfo *nd, uint32_t base, qemu_irq irq)
+void smc91c111_init(uint32_t base, qemu_irq irq)
 {
     DeviceState *dev;
     SysBusDevice *s;
 
-    qemu_check_nic_model(nd, "smc91c111");
     dev = qdev_new(TYPE_SMC91C111);
-    qdev_set_nic_properties(dev, nd);
+    qemu_configure_nic_device(dev, true, NULL);
     s = SYS_BUS_DEVICE(dev);
     sysbus_realize_and_unref(s, &error_fatal);
     sysbus_mmio_map(s, 0, base);
diff --git a/include/hw/net/smc91c111.h b/include/hw/net/smc91c111.h
index df5b11dcef..dba32a233f 100644
--- a/include/hw/net/smc91c111.h
+++ b/include/hw/net/smc91c111.h
@@ -13,6 +13,6 @@
 
 #include "net/net.h"
 
-void smc91c111_init(NICInfo *, uint32_t, qemu_irq);
+void smc91c111_init(uint32_t, qemu_irq);
 
 #endif
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Fri Jan 26 17:48:11 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 26 Jan 2024 17:48:11 +0000
Received: from list by lists.xenproject.org with outflank-mailman.672409.1046472 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTQJH-000719-CB; Fri, 26 Jan 2024 17:48:11 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 672409.1046472; Fri, 26 Jan 2024 17:48:11 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTQJH-000712-9R; Fri, 26 Jan 2024 17:48:11 +0000
Received: by outflank-mailman (input) for mailman id 672409;
 Fri, 26 Jan 2024 17:48:10 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=46+y=JE=desiato.srs.infradead.org=BATV+5cc348fc898a3f56ac6c+7460+infradead.org+dwmw2@srs-se1.protection.inumbo.net>)
 id 1rTQ54-0004Zo-G9
 for xen-devel@lists.xenproject.org; Fri, 26 Jan 2024 17:33:30 +0000
Received: from desiato.infradead.org (desiato.infradead.org
 [2001:8b0:10b:1:d65d:64ff:fe57:4e05])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 04989073-bc71-11ee-8a43-1f161083a0e0;
 Fri, 26 Jan 2024 18:33:29 +0100 (CET)
Received: from [2001:8b0:10b:1::ebe] (helo=i7.infradead.org)
 by desiato.infradead.org with esmtpsa (Exim 4.97.1 #2 (Red Hat Linux))
 id 1rTQ4B-000000069V8-2yGf; Fri, 26 Jan 2024 17:32:36 +0000
Received: from dwoodhou by i7.infradead.org with local (Exim 4.97.1 #2 (Red
 Hat Linux)) id 1rTQ4B-00000001eoX-07cN;
 Fri, 26 Jan 2024 17:32:35 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
X-Inumbo-ID: 04989073-bc71-11ee-8a43-1f161083a0e0
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=infradead.org; s=desiato.20200630; h=Sender:Content-Transfer-Encoding:
	MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:
	Reply-To:Content-Type:Content-ID:Content-Description;
	bh=4MfAr1yLI5YhElasbf+xYz8slg97fPxYAJHsYCE6HR0=; b=QCcaZ/6C5Iz4cXurFdCGdwPkbs
	Tx+OFOX65z8WZLMrj3r1M1OMa1uCBfhIBkcTalLwyCSVgdp6MRC0yngtPLUk5QQopCNkJxAPjr8jV
	gHBfM+h8Ivnb1jSyeRCUQN44kMg1saXw8rCMBiZrSz0X4jfd6xIpolJgUrAOJCJSl5DCO184V81xQ
	YRJVYKJmmArP7BgFHFDffL11xggxzqvuYlMBM/FYtZ++qK5KeLTkvIsQV7g7OmUG8MlMaO9v2/PFx
	5M7WoyLiczrNts5+qs1F+3zrEq194HhwpwIokm0ghvWCjhXCW0mVX+pXANYl+JThRACU+DCvFtyGJ
	gN/pe2eA==;
From: David Woodhouse <dwmw2@infradead.org>
To: qemu-devel@nongnu.org
Cc: Richard Henderson <richard.henderson@linaro.org>,
	Beniamino Galvani <b.galvani@gmail.com>,
	Peter Maydell <peter.maydell@linaro.org>,
	Strahinja Jankovic <strahinja.p.jankovic@gmail.com>,
	Niek Linnenbank <nieklinnenbank@gmail.com>,
	=?UTF-8?q?C=C3=A9dric=20Le=20Goater?= <clg@kaod.org>,
	Andrew Jeffery <andrew@codeconstruct.com.au>,
	Joel Stanley <joel@jms.id.au>,
	Igor Mitsyanko <i.mitsyanko@gmail.com>,
	Jean-Christophe Dubois <jcd@tribudubois.net>,
	Andrey Smirnov <andrew.smirnov@gmail.com>,
	=?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= <philmd@linaro.org>,
	Rob Herring <robh@kernel.org>,
	Subbaraya Sundeep <sundeep.lkml@gmail.com>,
	Jan Kiszka <jan.kiszka@web.de>,
	Tyrone Ting <kfting@nuvoton.com>,
	Hao Wu <wuhaotsh@google.com>,
	Radoslaw Biernacki <rad@semihalf.com>,
	Leif Lindholm <quic_llindhol@quicinc.com>,
	Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org>,
	"Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
	Alistair Francis <alistair@alistair23.me>,
	Helge Deller <deller@gmx.de>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Eduardo Habkost <eduardo@habkost.net>,
	"Michael S. Tsirkin" <mst@redhat.com>,
	Marcel Apfelbaum <marcel.apfelbaum@gmail.com>,
	Song Gao <gaosong@loongson.cn>,
	Thomas Huth <huth@tuxfamily.org>,
	Laurent Vivier <laurent@vivier.eu>,
	Huacai Chen <chenhuacai@kernel.org>,
	Jiaxun Yang <jiaxun.yang@flygoat.com>,
	=?UTF-8?q?Herv=C3=A9=20Poussineau?= <hpoussin@reactos.org>,
	Aleksandar Rikalo <aleksandar.rikalo@syrmia.com>,
	Aurelien Jarno <aurelien@aurel32.net>,
	Jason Wang <jasowang@redhat.com>,
	Jia Liu <proljc@gmail.com>,
	Stafford Horne <shorne@gmail.com>,
	Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>,
	Nicholas Piggin <npiggin@gmail.com>,
	Daniel Henrique Barboza <danielhb413@gmail.com>,
	David Gibson <david@gibson.dropbear.id.au>,
	Harsh Prateek Bora <harshpb@linux.ibm.com>,
	Bin Meng <bin.meng@windriver.com>,
	Palmer Dabbelt <palmer@dabbelt.com>,
	Weiwei Li <liwei1518@gmail.com>,
	Liu Zhiwei <zhiwei_liu@linux.alibaba.com>,
	Halil Pasic <pasic@linux.ibm.com>,
	Christian Borntraeger <borntraeger@linux.ibm.com>,
	Eric Farman <farman@linux.ibm.com>,
	David Hildenbrand <david@redhat.com>,
	Ilya Leoshkevich <iii@linux.ibm.com>,
	Yoshinori Sato <ysato@users.sourceforge.jp>,
	Magnus Damm <magnus.damm@gmail.com>,
	Artyom Tarasenko <atar4qemu@gmail.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Anthony Perard <anthony.perard@citrix.com>,
	Paul Durrant <paul@xen.org>,
	Max Filippov <jcmvbkbc@gmail.com>,
	qemu-arm@nongnu.org,
	qemu-ppc@nongnu.org,
	qemu-riscv@nongnu.org,
	qemu-s390x@nongnu.org,
	xen-devel@lists.xenproject.org,
	David Woodhouse <dwmw@amazon.co.uk>
Subject: [PATCH v4 46/47] net: remove qemu_show_nic_models(), qemu_find_nic_model()
Date: Fri, 26 Jan 2024 17:25:23 +0000
Message-ID: <20240126173228.394202-47-dwmw2@infradead.org>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20240126173228.394202-1-dwmw2@infradead.org>
References: <20240126173228.394202-1-dwmw2@infradead.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Sender: David Woodhouse <dwmw2@infradead.org>
X-SRS-Rewrite: SMTP reverse-path rewritten from <dwmw2@infradead.org> by desiato.infradead.org. See http://www.infradead.org/rpr.html

From: David Woodhouse <dwmw@amazon.co.uk>

These old functions can be removed now too. Let net_param_nic() print
the full set of network devices directly, and also make it note that a
list more specific to this platform/config will be available by using
'-nic model=help' instead.

Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
---
 include/net/net.h |  3 ---
 net/net.c         | 39 ++++++---------------------------------
 2 files changed, 6 insertions(+), 36 deletions(-)

diff --git a/include/net/net.h b/include/net/net.h
index 00ee1af7ab..588ee55f28 100644
--- a/include/net/net.h
+++ b/include/net/net.h
@@ -203,9 +203,6 @@ void qemu_set_vnet_hdr_len(NetClientState *nc, int len);
 int qemu_set_vnet_le(NetClientState *nc, bool is_le);
 int qemu_set_vnet_be(NetClientState *nc, bool is_be);
 void qemu_macaddr_default_if_unset(MACAddr *macaddr);
-int qemu_show_nic_models(const char *arg, const char *const *models);
-int qemu_find_nic_model(NICInfo *nd, const char * const *models,
-                        const char *default_model);
 /**
  * qemu_find_nic_info: Obtain NIC configuration information
  * @typename: Name of device object type
diff --git a/net/net.c b/net/net.c
index ffd4b42d5a..d705e9b0fd 100644
--- a/net/net.c
+++ b/net/net.c
@@ -977,38 +977,6 @@ GPtrArray *qemu_get_nic_models(const char *device_type)
     return nic_models;
 }
 
-int qemu_show_nic_models(const char *arg, const char *const *models)
-{
-    int i;
-
-    if (!arg || !is_help_option(arg)) {
-        return 0;
-    }
-
-    printf("Available NIC models:\n");
-    for (i = 0 ; models[i]; i++) {
-        printf("%s\n", models[i]);
-    }
-    return 1;
-}
-
-int qemu_find_nic_model(NICInfo *nd, const char * const *models,
-                        const char *default_model)
-{
-    int i;
-
-    if (!nd->model)
-        nd->model = g_strdup(default_model);
-
-    for (i = 0 ; models[i]; i++) {
-        if (strcmp(nd->model, models[i]) == 0)
-            return i;
-    }
-
-    error_report("Unsupported NIC model: %s", nd->model);
-    return -1;
-}
-
 static int net_init_nic(const Netdev *netdev, const char *name,
                         NetClientState *peer, Error **errp)
 {
@@ -1791,9 +1759,14 @@ static int net_param_nic(void *dummy, QemuOpts *opts, Error **errp)
         }
         if (is_help_option(type)) {
             GPtrArray *nic_models = qemu_get_nic_models(TYPE_DEVICE);
+            int i;
             show_netdevs();
             printf("\n");
-            qemu_show_nic_models(type, (const char **)nic_models->pdata);
+            printf("Available NIC models "
+                   "(use -nic model=help for a filtered list):\n");
+            for (i = 0 ; nic_models->pdata[i]; i++) {
+                printf("%s\n", (char *)nic_models->pdata[i]);
+            }
             g_ptr_array_free(nic_models, true);
             exit(0);
         }
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Fri Jan 26 17:48:55 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 26 Jan 2024 17:48:55 +0000
Received: from list by lists.xenproject.org with outflank-mailman.672421.1046485 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTQJu-0008Hb-Lo; Fri, 26 Jan 2024 17:48:50 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 672421.1046485; Fri, 26 Jan 2024 17:48:50 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTQJu-0008HU-IK; Fri, 26 Jan 2024 17:48:50 +0000
Received: by outflank-mailman (input) for mailman id 672421;
 Fri, 26 Jan 2024 17:48:49 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=46+y=JE=desiato.srs.infradead.org=BATV+5cc348fc898a3f56ac6c+7460+infradead.org+dwmw2@srs-se1.protection.inumbo.net>)
 id 1rTQ5F-0004m7-Sw
 for xen-devel@lists.xenproject.org; Fri, 26 Jan 2024 17:33:41 +0000
Received: from desiato.infradead.org (desiato.infradead.org
 [2001:8b0:10b:1:d65d:64ff:fe57:4e05])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 05b71a64-bc71-11ee-98f5-efadbce2ee36;
 Fri, 26 Jan 2024 18:33:31 +0100 (CET)
Received: from [2001:8b0:10b:1::ebe] (helo=i7.infradead.org)
 by desiato.infradead.org with esmtpsa (Exim 4.97.1 #2 (Red Hat Linux))
 id 1rTQ4B-000000069Ut-2zDu; Fri, 26 Jan 2024 17:32:36 +0000
Received: from dwoodhou by i7.infradead.org with local (Exim 4.97.1 #2 (Red
 Hat Linux)) id 1rTQ4A-00000001enc-0lfJ;
 Fri, 26 Jan 2024 17:32:34 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
X-Inumbo-ID: 05b71a64-bc71-11ee-98f5-efadbce2ee36
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=infradead.org; s=desiato.20200630; h=Sender:Content-Transfer-Encoding:
	MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:
	Reply-To:Content-Type:Content-ID:Content-Description;
	bh=EN2ajdy4otemmrb2xvygJan0iJiZe9osoit8g3Fryzw=; b=aw7QMl2FOdGpX2URBLKLY9O25Z
	3fyDarOFSCu7FdfGeuUOAHBmAb2tnUjAu1bvZwlYPeOiuB9dCADtk/Zr+m27jqS6HL6OjZw8gQQZP
	r4sjI/LTm1A/7fFc9NzofOb06hUw+QpB1t8YvG5GoXnMSYESbIXvf/ywjcywXVL7vGlmeUw1ihIWl
	uwq8gSP2SBn/pRnZhgiUyWWtV4e7Zee5sN55JOIfrWIqmxXqxOhO8zKI1DQT0mvjWte9Wp3eRFViS
	E0/CngId3tP/sMw1tS4vVxhL56woaV745KBmd5NWmYRxdEL3aPBZ+NX3Nz2IxGGsComhCp/wkH14P
	6cZc8A+w==;
From: David Woodhouse <dwmw2@infradead.org>
To: qemu-devel@nongnu.org
Cc: Richard Henderson <richard.henderson@linaro.org>,
	Beniamino Galvani <b.galvani@gmail.com>,
	Peter Maydell <peter.maydell@linaro.org>,
	Strahinja Jankovic <strahinja.p.jankovic@gmail.com>,
	Niek Linnenbank <nieklinnenbank@gmail.com>,
	=?UTF-8?q?C=C3=A9dric=20Le=20Goater?= <clg@kaod.org>,
	Andrew Jeffery <andrew@codeconstruct.com.au>,
	Joel Stanley <joel@jms.id.au>,
	Igor Mitsyanko <i.mitsyanko@gmail.com>,
	Jean-Christophe Dubois <jcd@tribudubois.net>,
	Andrey Smirnov <andrew.smirnov@gmail.com>,
	=?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= <philmd@linaro.org>,
	Rob Herring <robh@kernel.org>,
	Subbaraya Sundeep <sundeep.lkml@gmail.com>,
	Jan Kiszka <jan.kiszka@web.de>,
	Tyrone Ting <kfting@nuvoton.com>,
	Hao Wu <wuhaotsh@google.com>,
	Radoslaw Biernacki <rad@semihalf.com>,
	Leif Lindholm <quic_llindhol@quicinc.com>,
	Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org>,
	"Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
	Alistair Francis <alistair@alistair23.me>,
	Helge Deller <deller@gmx.de>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Eduardo Habkost <eduardo@habkost.net>,
	"Michael S. Tsirkin" <mst@redhat.com>,
	Marcel Apfelbaum <marcel.apfelbaum@gmail.com>,
	Song Gao <gaosong@loongson.cn>,
	Thomas Huth <huth@tuxfamily.org>,
	Laurent Vivier <laurent@vivier.eu>,
	Huacai Chen <chenhuacai@kernel.org>,
	Jiaxun Yang <jiaxun.yang@flygoat.com>,
	=?UTF-8?q?Herv=C3=A9=20Poussineau?= <hpoussin@reactos.org>,
	Aleksandar Rikalo <aleksandar.rikalo@syrmia.com>,
	Aurelien Jarno <aurelien@aurel32.net>,
	Jason Wang <jasowang@redhat.com>,
	Jia Liu <proljc@gmail.com>,
	Stafford Horne <shorne@gmail.com>,
	Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>,
	Nicholas Piggin <npiggin@gmail.com>,
	Daniel Henrique Barboza <danielhb413@gmail.com>,
	David Gibson <david@gibson.dropbear.id.au>,
	Harsh Prateek Bora <harshpb@linux.ibm.com>,
	Bin Meng <bin.meng@windriver.com>,
	Palmer Dabbelt <palmer@dabbelt.com>,
	Weiwei Li <liwei1518@gmail.com>,
	Liu Zhiwei <zhiwei_liu@linux.alibaba.com>,
	Halil Pasic <pasic@linux.ibm.com>,
	Christian Borntraeger <borntraeger@linux.ibm.com>,
	Eric Farman <farman@linux.ibm.com>,
	David Hildenbrand <david@redhat.com>,
	Ilya Leoshkevich <iii@linux.ibm.com>,
	Yoshinori Sato <ysato@users.sourceforge.jp>,
	Magnus Damm <magnus.damm@gmail.com>,
	Artyom Tarasenko <atar4qemu@gmail.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Anthony Perard <anthony.perard@citrix.com>,
	Paul Durrant <paul@xen.org>,
	Max Filippov <jcmvbkbc@gmail.com>,
	qemu-arm@nongnu.org,
	qemu-ppc@nongnu.org,
	qemu-riscv@nongnu.org,
	qemu-s390x@nongnu.org,
	xen-devel@lists.xenproject.org,
	David Woodhouse <dwmw@amazon.co.uk>
Subject: [PATCH v4 36/47] hw/mips/jazz: use qemu_find_nic_info()
Date: Fri, 26 Jan 2024 17:25:13 +0000
Message-ID: <20240126173228.394202-37-dwmw2@infradead.org>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20240126173228.394202-1-dwmw2@infradead.org>
References: <20240126173228.394202-1-dwmw2@infradead.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Sender: David Woodhouse <dwmw2@infradead.org>
X-SRS-Rewrite: SMTP reverse-path rewritten from <dwmw2@infradead.org> by desiato.infradead.org. See http://www.infradead.org/rpr.html

From: David Woodhouse <dwmw@amazon.co.uk>

Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
---
 hw/mips/jazz.c | 15 +++++++--------
 1 file changed, 7 insertions(+), 8 deletions(-)

diff --git a/hw/mips/jazz.c b/hw/mips/jazz.c
index 0d2348aa5a..5bf3e328db 100644
--- a/hw/mips/jazz.c
+++ b/hw/mips/jazz.c
@@ -119,15 +119,19 @@ static const MemoryRegionOps dma_dummy_ops = {
     .endianness = DEVICE_NATIVE_ENDIAN,
 };
 
-static void mips_jazz_init_net(NICInfo *nd, IOMMUMemoryRegion *rc4030_dma_mr,
+static void mips_jazz_init_net(IOMMUMemoryRegion *rc4030_dma_mr,
                                DeviceState *rc4030, MemoryRegion *dp8393x_prom)
 {
     DeviceState *dev;
     SysBusDevice *sysbus;
     int checksum, i;
     uint8_t *prom;
+    NICInfo *nd;
 
-    qemu_check_nic_model(nd, "dp83932");
+    nd = qemu_find_nic_info("dp8393x", true, "dp82932");
+    if (!nd) {
+        return;
+    }
 
     dev = qdev_new("dp8393x");
     qdev_set_nic_properties(dev, nd);
@@ -324,12 +328,7 @@ static void mips_jazz_init(MachineState *machine,
     }
 
     /* Network controller */
-    if (nb_nics == 1) {
-        mips_jazz_init_net(&nd_table[0], rc4030_dma_mr, rc4030, dp8393x_prom);
-    } else if (nb_nics > 1) {
-        error_report("This machine only supports one NIC");
-        exit(1);
-    }
+    mips_jazz_init_net(rc4030_dma_mr, rc4030, dp8393x_prom);
 
     /* SCSI adapter */
     dev = qdev_new(TYPE_SYSBUS_ESP);
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Fri Jan 26 17:52:21 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 26 Jan 2024 17:52:21 +0000
Received: from list by lists.xenproject.org with outflank-mailman.672430.1046495 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTQND-000207-4B; Fri, 26 Jan 2024 17:52:15 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 672430.1046495; Fri, 26 Jan 2024 17:52:15 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTQND-000200-1P; Fri, 26 Jan 2024 17:52:15 +0000
Received: by outflank-mailman (input) for mailman id 672430;
 Fri, 26 Jan 2024 17:52:13 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=bPDA=JE=casper.srs.infradead.org=BATV+7caeb094913322f6f00d+7460+infradead.org+dwmw2@srs-se1.protection.inumbo.net>)
 id 1rTQ4z-0004m7-PX
 for xen-devel@lists.xenproject.org; Fri, 26 Jan 2024 17:33:25 +0000
Received: from casper.infradead.org (casper.infradead.org
 [2001:8b0:10b:1236::1])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id ffb7e35e-bc70-11ee-98f5-efadbce2ee36;
 Fri, 26 Jan 2024 18:33:21 +0100 (CET)
Received: from [2001:8b0:10b:1::ebe] (helo=i7.infradead.org)
 by casper.infradead.org with esmtpsa (Exim 4.97.1 #2 (Red Hat Linux))
 id 1rTQ48-0000000EKUB-0emG; Fri, 26 Jan 2024 17:32:33 +0000
Received: from dwoodhou by i7.infradead.org with local (Exim 4.97.1 #2 (Red
 Hat Linux)) id 1rTQ46-00000001elD-3aD3;
 Fri, 26 Jan 2024 17:32:30 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
X-Inumbo-ID: ffb7e35e-bc70-11ee-98f5-efadbce2ee36
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=infradead.org; s=casper.20170209; h=Sender:Content-Transfer-Encoding:
	Content-Type:MIME-Version:Message-ID:Date:Subject:Cc:To:From:Reply-To:
	Content-ID:Content-Description:In-Reply-To:References;
	bh=uxZ4mGKFLew5MTQuKKAqXya97kMNkAzbjIcyINbmJGE=; b=L789Dzt6MRyCiK291RHRqqMe+V
	Srde9pmzJin4uUey0pMnEejE6xMp/9M6g9l8tUpziOzuA1LQmG6rsV3bmoeH8/PT+8JfpGSUEFn5l
	KxevtOxzueFYY2OObJ6DIyZ+82yb9ytGPa+mQTtz19N3nWl+4/q/3wIcad7/RyYkvIeZscD1AYX1D
	ZDDDvEFxB4zmkvOJJ44emRqdLNkEefIa4QpkmBquuL1m0pNRPsbTylK21NAJ3DbQoxa93w8Wxy/WM
	UDxk8pkVmj4SueJNAqldB8zJeNLBWFacCReO65PwoSiWKbu+ybgxJaJ4uYzWsw0+hY35mfFeiGZNr
	UTejY6hA==;
From: David Woodhouse <dwmw2@infradead.org>
To: qemu-devel@nongnu.org
Cc: Richard Henderson <richard.henderson@linaro.org>,
	Beniamino Galvani <b.galvani@gmail.com>,
	Peter Maydell <peter.maydell@linaro.org>,
	Strahinja Jankovic <strahinja.p.jankovic@gmail.com>,
	Niek Linnenbank <nieklinnenbank@gmail.com>,
	=?UTF-8?q?C=C3=A9dric=20Le=20Goater?= <clg@kaod.org>,
	Andrew Jeffery <andrew@codeconstruct.com.au>,
	Joel Stanley <joel@jms.id.au>,
	Igor Mitsyanko <i.mitsyanko@gmail.com>,
	Jean-Christophe Dubois <jcd@tribudubois.net>,
	Andrey Smirnov <andrew.smirnov@gmail.com>,
	=?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= <philmd@linaro.org>,
	Rob Herring <robh@kernel.org>,
	Subbaraya Sundeep <sundeep.lkml@gmail.com>,
	Jan Kiszka <jan.kiszka@web.de>,
	Tyrone Ting <kfting@nuvoton.com>,
	Hao Wu <wuhaotsh@google.com>,
	Radoslaw Biernacki <rad@semihalf.com>,
	Leif Lindholm <quic_llindhol@quicinc.com>,
	Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org>,
	"Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
	Alistair Francis <alistair@alistair23.me>,
	Helge Deller <deller@gmx.de>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Eduardo Habkost <eduardo@habkost.net>,
	"Michael S. Tsirkin" <mst@redhat.com>,
	Marcel Apfelbaum <marcel.apfelbaum@gmail.com>,
	Song Gao <gaosong@loongson.cn>,
	Thomas Huth <huth@tuxfamily.org>,
	Laurent Vivier <laurent@vivier.eu>,
	Huacai Chen <chenhuacai@kernel.org>,
	Jiaxun Yang <jiaxun.yang@flygoat.com>,
	=?UTF-8?q?Herv=C3=A9=20Poussineau?= <hpoussin@reactos.org>,
	Aleksandar Rikalo <aleksandar.rikalo@syrmia.com>,
	Aurelien Jarno <aurelien@aurel32.net>,
	Jason Wang <jasowang@redhat.com>,
	Jia Liu <proljc@gmail.com>,
	Stafford Horne <shorne@gmail.com>,
	Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>,
	Nicholas Piggin <npiggin@gmail.com>,
	Daniel Henrique Barboza <danielhb413@gmail.com>,
	David Gibson <david@gibson.dropbear.id.au>,
	Harsh Prateek Bora <harshpb@linux.ibm.com>,
	Bin Meng <bin.meng@windriver.com>,
	Palmer Dabbelt <palmer@dabbelt.com>,
	Weiwei Li <liwei1518@gmail.com>,
	Liu Zhiwei <zhiwei_liu@linux.alibaba.com>,
	Halil Pasic <pasic@linux.ibm.com>,
	Christian Borntraeger <borntraeger@linux.ibm.com>,
	Eric Farman <farman@linux.ibm.com>,
	David Hildenbrand <david@redhat.com>,
	Ilya Leoshkevich <iii@linux.ibm.com>,
	Yoshinori Sato <ysato@users.sourceforge.jp>,
	Magnus Damm <magnus.damm@gmail.com>,
	Artyom Tarasenko <atar4qemu@gmail.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Anthony Perard <anthony.perard@citrix.com>,
	Paul Durrant <paul@xen.org>,
	Max Filippov <jcmvbkbc@gmail.com>,
	qemu-arm@nongnu.org,
	qemu-ppc@nongnu.org,
	qemu-riscv@nongnu.org,
	qemu-s390x@nongnu.org,
	xen-devel@lists.xenproject.org
Subject: [PATCH v4 00/47] Rework matching of network devices to -nic options
Date: Fri, 26 Jan 2024 17:24:37 +0000
Message-ID: <20240126173228.394202-1-dwmw2@infradead.org>
X-Mailer: git-send-email 2.43.0
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Sender: David Woodhouse <dwmw2@infradead.org>
X-SRS-Rewrite: SMTP reverse-path rewritten from <dwmw2@infradead.org> by casper.infradead.org. See http://www.infradead.org/rpr.html


Most platforms iterating directly over the nd_table[] are doing one of 
two things. Either they are creating the NIC for their platform and want
to find a matching -nic configuration for it, if such exists. Or they
are only going to create that platform NIC if a matching config *does*
exist.

All of those can be converted to the new qemu_configure_nic_device()
and qemu_create_nic_device() functions. The latter of which will call
qdev_new() to create the device (and apply the config) if a matching
NIC config does exist for it. The existing behaviour of each platform
has been preserved for now, despite it being apparently fairly random.

PCI and indeed XenBus can use a qemu_create_nic_bus_devices() which will 
create all NICs that live on a given bus type. That covers most 
platforms, but some PCI platforms do something special with the first 
NIC of a given type, placing it in the slot where it would have been on 
the real hardware. There were various inconsistencies in the way the 
platforms did so, and whether they cared what model the NIC was. Those 
subtle behavioural changes I *have* allowed to change, and now the 
pci_init_nic_slot() function will pick the first NIC that the user 
specified which isn't explicitly *not* the default type, and put that
in the specified slot.

The tests for npcm7xx used to lament that they had to instantiate both
NICs even when they wanted to test only the second, because there was
no way to specify which hardware devices gets which configuration. I
made that untrue, by allowing 'emc0' and 'emc1' aliases, and fixed up
the test accordingly.

There are one or two special cases which want to do special things with
the MAC address of the primary NIC, to set up a system identification
(or force it to use an Apple OUI, in the case of m68k/q400). All those
work out relatively cleanly too.

And I can clean up the ugly patch which fixed up the Xen network device 
handling, and replace it with a simple call to the new 
qemu_create_nic_bus_devices() function.

I suspect that we can remove the pci_init_nic_devices() from platform
code and just do it later, except for platforms which *care* which
PCI bus the dynamic devices go on (is that just sun4u which puts its
primary NIC onto a different bus?).

Finally, while we're at it, clean up -nic model=help to only print
the device models which are actually usable on the given platform
rather than just listing them *all*.

And now we can make nd_table[] and nb_nics static in net/net.c because
nothing else has any business poking at them directly.

 v4: Fix LASI_82596 build and rework HPPA machine support for it.
     Slight improvement to ISA NE2000 error handling in hw/i386/pc.c.
     Document new functions better in include/net/net.h.
          
 v3: Rebase to 8.2

 v2: Some build fixes after better coverage testing, revert the Xen fix
     in this series because I'm putting the less invasive hack into 8.2
     (hopefully).


David Woodhouse (47):
      net: add qemu_{configure,create}_nic_device(), qemu_find_nic_info()
      net: report list of available models according to platform
      net: add qemu_create_nic_bus_devices()
      hw/pci: add pci_init_nic_devices(), pci_init_nic_in_slot()
      hw/i386/pc: use qemu_get_nic_info() and pci_init_nic_devices()
      hw/xen: use qemu_create_nic_bus_devices() to instantiate Xen NICs
      hw/alpha/dp264: use pci_init_nic_devices()
      hw/arm/sbsa-ref: use pci_init_nic_devices()
      hw/arm/virt: use pci_init_nic_devices()
      hw/hppa: use pci_init_nic_devices()
      hw/loongarch: use pci_init_nic_devices()
      hw/mips/fuloong2e: use pci_init_nic_devices()
      hw/mips/malta: use pci_init_nic_devices()
      hw/mips/loongson3_virt: use pci_init_nic_devices()
      hw/ppc/prep: use pci_init_nic_devices()
      hw/ppc/spapr: use qemu_get_nic_info() and pci_init_nic_devices()
      hw/ppc: use pci_init_nic_devices()
      hw/sh4/r2d: use pci_init_nic_devices()
      hw/sparc64/sun4u: use pci_init_nic_devices()
      hw/xtensa/virt: use pci_init_nic_devices()
      hw/arm/allwinner: use qemu_configure_nic_device()
      hw/arm/aspeed: use qemu_configure_nic_device()
      hw/arm/exynos4: use qemu_create_nic_device()
      hw/arm/fsl: use qemu_configure_nic_device()
      hw/net/smc91c111: use qemu_configure_nic_device()
      hw/net/lan9118: use qemu_configure_nic_device()
      hw/arm/highbank: use qemu_create_nic_device()
      hw/arm/npcm7xx: use qemu_configure_nic_device, allow emc0/emc1 as aliases
      hw/arm/stellaris: use qemu_find_nic_info()
      hw/arm: use qemu_configure_nic_device()
      hw/net/etraxfs-eth: use qemu_configure_nic_device()
      hw/m68k/mcf5208: use qemu_create_nic_device()
      hw/m68k/q800: use qemu_find_nic_info()
      hw/microblaze: use qemu_configure_nic_device()
      hw/mips/mipssim: use qemu_create_nic_device()
      hw/mips/jazz: use qemu_find_nic_info()
      hw/net/lasi_i82596: Re-enable build
      hw/net/lasi_i82596: use qemu_create_nic_device()
      hw/openrisc/openrisc_sim: use qemu_create_nic_device()
      hw/riscv: use qemu_configure_nic_device()
      hw/s390x/s390-virtio-ccw: use qemu_create_nic_device()
      hw/sparc/sun4m: use qemu_find_nic_info()
      hw/xtensa/xtfpga: use qemu_create_nic_device()
      net: remove qemu_check_nic_model()
      hw/pci: remove pci_nic_init_nofail()
      net: remove qemu_show_nic_models(), qemu_find_nic_model()
      net: make nb_nics and nd_table[] static in net/net.c

 hw/alpha/dp264.c                         |   4 +-
 hw/arm/allwinner-a10.c                   |   6 +-
 hw/arm/allwinner-h3.c                    |   6 +-
 hw/arm/allwinner-r40.c                   |  27 +---
 hw/arm/aspeed.c                          |   9 +-
 hw/arm/exynos4_boards.c                  |   6 +-
 hw/arm/fsl-imx25.c                       |   2 +-
 hw/arm/fsl-imx6.c                        |   2 +-
 hw/arm/fsl-imx6ul.c                      |   2 +-
 hw/arm/fsl-imx7.c                        |   2 +-
 hw/arm/gumstix.c                         |   6 +-
 hw/arm/highbank.c                        |  12 +-
 hw/arm/integratorcp.c                    |   5 +-
 hw/arm/kzm.c                             |   4 +-
 hw/arm/mainstone.c                       |   3 +-
 hw/arm/mps2-tz.c                         |   8 +-
 hw/arm/mps2.c                            |   2 +-
 hw/arm/msf2-soc.c                        |   6 +-
 hw/arm/musicpal.c                        |   3 +-
 hw/arm/npcm7xx.c                         |  16 +-
 hw/arm/realview.c                        |  25 ++-
 hw/arm/sbsa-ref.c                        |   4 +-
 hw/arm/stellaris.c                       |  30 +++-
 hw/arm/versatilepb.c                     |  15 +-
 hw/arm/vexpress.c                        |   4 +-
 hw/arm/virt.c                            |   4 +-
 hw/arm/xilinx_zynq.c                     |  11 +-
 hw/arm/xlnx-versal.c                     |   7 +-
 hw/arm/xlnx-zynqmp.c                     |   8 +-
 hw/cris/axis_dev88.c                     |   9 +-
 hw/hppa/machine.c                        |  14 +-
 hw/i386/pc.c                             |  38 +++--
 hw/i386/pc_piix.c                        |   2 +-
 hw/i386/pc_q35.c                         |   2 +-
 hw/loongarch/virt.c                      |   4 +-
 hw/m68k/mcf5208.c                        |  19 +--
 hw/m68k/q800.c                           |  29 ++--
 hw/microblaze/petalogix_ml605_mmu.c      |   3 +-
 hw/microblaze/petalogix_s3adsp1800_mmu.c |   3 +-
 hw/mips/fuloong2e.c                      |  16 +-
 hw/mips/jazz.c                           |  15 +-
 hw/mips/loongson3_virt.c                 |   4 +-
 hw/mips/malta.c                          |  15 +-
 hw/mips/mipssim.c                        |  13 +-
 hw/net/etraxfs_eth.c                     |   5 +-
 hw/net/lan9118.c                         |   5 +-
 hw/net/lasi_i82596.c                     |  13 +-
 hw/net/meson.build                       |   2 +-
 hw/net/smc91c111.c                       |   5 +-
 hw/openrisc/openrisc_sim.c               |  18 +--
 hw/pci/pci.c                             |  73 +++------
 hw/ppc/e500.c                            |   4 +-
 hw/ppc/mac_newworld.c                    |   4 +-
 hw/ppc/mac_oldworld.c                    |   4 +-
 hw/ppc/ppc440_bamboo.c                   |  14 +-
 hw/ppc/prep.c                            |   8 +-
 hw/ppc/spapr.c                           |  18 +--
 hw/riscv/microchip_pfsoc.c               |  14 +-
 hw/riscv/sifive_u.c                      |   7 +-
 hw/s390x/s390-virtio-ccw.c               |  11 +-
 hw/sh4/r2d.c                             |   6 +-
 hw/sparc/sun4m.c                         |  20 ++-
 hw/sparc64/sun4u.c                       |  27 +---
 hw/xen/xen-bus.c                         |   6 +-
 hw/xen/xen_devconfig.c                   |  25 ---
 hw/xenpv/xen_machine_pv.c                |   9 --
 hw/xtensa/virt.c                         |   4 +-
 hw/xtensa/xtfpga.c                       |  13 +-
 include/hw/cris/etraxfs.h                |   2 +-
 include/hw/i386/pc.h                     |   4 +-
 include/hw/net/lan9118.h                 |   2 +-
 include/hw/net/lasi_82596.h              |   4 +-
 include/hw/net/ne2000-isa.h              |   2 -
 include/hw/net/smc91c111.h               |   2 +-
 include/hw/pci/pci.h                     |   7 +-
 include/hw/xen/xen-bus.h                 |   2 +-
 include/hw/xen/xen-legacy-backend.h      |   1 -
 include/net/net.h                        |  70 ++++++++-
 net/net.c                                | 253 +++++++++++++++++++++++++------
 system/globals.c                         |   2 -
 tests/qtest/npcm7xx_emc-test.c           |  18 +--
 81 files changed, 547 insertions(+), 562 deletions(-)



From xen-devel-bounces@lists.xenproject.org Fri Jan 26 17:52:21 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 26 Jan 2024 17:52:21 +0000
Received: from list by lists.xenproject.org with outflank-mailman.672431.1046500 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTQND-00023P-DU; Fri, 26 Jan 2024 17:52:15 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 672431.1046500; Fri, 26 Jan 2024 17:52:15 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTQND-00022u-8l; Fri, 26 Jan 2024 17:52:15 +0000
Received: by outflank-mailman (input) for mailman id 672431;
 Fri, 26 Jan 2024 17:52:13 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=bPDA=JE=casper.srs.infradead.org=BATV+7caeb094913322f6f00d+7460+infradead.org+dwmw2@srs-se1.protection.inumbo.net>)
 id 1rTQ4v-0004m7-P2
 for xen-devel@lists.xenproject.org; Fri, 26 Jan 2024 17:33:21 +0000
Received: from casper.infradead.org (casper.infradead.org
 [2001:8b0:10b:1236::1])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id fe38b1fb-bc70-11ee-98f5-efadbce2ee36;
 Fri, 26 Jan 2024 18:33:18 +0100 (CET)
Received: from [2001:8b0:10b:1::ebe] (helo=i7.infradead.org)
 by casper.infradead.org with esmtpsa (Exim 4.97.1 #2 (Red Hat Linux))
 id 1rTQ49-0000000EKUu-0WUm; Fri, 26 Jan 2024 17:32:34 +0000
Received: from dwoodhou by i7.infradead.org with local (Exim 4.97.1 #2 (Red
 Hat Linux)) id 1rTQ4A-00000001enY-0TPb;
 Fri, 26 Jan 2024 17:32:34 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
X-Inumbo-ID: fe38b1fb-bc70-11ee-98f5-efadbce2ee36
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=infradead.org; s=casper.20170209; h=Sender:Content-Transfer-Encoding:
	MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:
	Reply-To:Content-Type:Content-ID:Content-Description;
	bh=ZK2tD63GvqUrApaaWgfzsdauGq2sH6JIvuMsNwpoITs=; b=qkfPZXh49dYOhIJMauMCMT4Wur
	huWzyz4Rsevt17NsZbNL4jjADOXXnZLkQ7VnzTp0d2odG3zXYBgdF4F1KtXW4/2kUjeD7HZfRyy3Z
	w48gBqearXCoIdsu0/Qr+d0rq6lwQF2LGSJN7r1ay+GTYZP0X03kpilU9pq5H6Zb9OdzC5afjHwTq
	SurL2JzCakVBVU5hx59YXCkgokAJr4Vf2SHPkccuA4H2S6gBVyMu7ddzFL3hH62/rkheekIN7jfU4
	mopxJLybNEjfV2HZyF3T5/z+qI1fciXVXGmT6EVxKFXmD+LXEEajOO/8eYmnZ5/hHmxCzMYm7PcmU
	iFeYg3aQ==;
From: David Woodhouse <dwmw2@infradead.org>
To: qemu-devel@nongnu.org
Cc: Richard Henderson <richard.henderson@linaro.org>,
	Beniamino Galvani <b.galvani@gmail.com>,
	Peter Maydell <peter.maydell@linaro.org>,
	Strahinja Jankovic <strahinja.p.jankovic@gmail.com>,
	Niek Linnenbank <nieklinnenbank@gmail.com>,
	=?UTF-8?q?C=C3=A9dric=20Le=20Goater?= <clg@kaod.org>,
	Andrew Jeffery <andrew@codeconstruct.com.au>,
	Joel Stanley <joel@jms.id.au>,
	Igor Mitsyanko <i.mitsyanko@gmail.com>,
	Jean-Christophe Dubois <jcd@tribudubois.net>,
	Andrey Smirnov <andrew.smirnov@gmail.com>,
	=?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= <philmd@linaro.org>,
	Rob Herring <robh@kernel.org>,
	Subbaraya Sundeep <sundeep.lkml@gmail.com>,
	Jan Kiszka <jan.kiszka@web.de>,
	Tyrone Ting <kfting@nuvoton.com>,
	Hao Wu <wuhaotsh@google.com>,
	Radoslaw Biernacki <rad@semihalf.com>,
	Leif Lindholm <quic_llindhol@quicinc.com>,
	Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org>,
	"Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
	Alistair Francis <alistair@alistair23.me>,
	Helge Deller <deller@gmx.de>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Eduardo Habkost <eduardo@habkost.net>,
	"Michael S. Tsirkin" <mst@redhat.com>,
	Marcel Apfelbaum <marcel.apfelbaum@gmail.com>,
	Song Gao <gaosong@loongson.cn>,
	Thomas Huth <huth@tuxfamily.org>,
	Laurent Vivier <laurent@vivier.eu>,
	Huacai Chen <chenhuacai@kernel.org>,
	Jiaxun Yang <jiaxun.yang@flygoat.com>,
	=?UTF-8?q?Herv=C3=A9=20Poussineau?= <hpoussin@reactos.org>,
	Aleksandar Rikalo <aleksandar.rikalo@syrmia.com>,
	Aurelien Jarno <aurelien@aurel32.net>,
	Jason Wang <jasowang@redhat.com>,
	Jia Liu <proljc@gmail.com>,
	Stafford Horne <shorne@gmail.com>,
	Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>,
	Nicholas Piggin <npiggin@gmail.com>,
	Daniel Henrique Barboza <danielhb413@gmail.com>,
	David Gibson <david@gibson.dropbear.id.au>,
	Harsh Prateek Bora <harshpb@linux.ibm.com>,
	Bin Meng <bin.meng@windriver.com>,
	Palmer Dabbelt <palmer@dabbelt.com>,
	Weiwei Li <liwei1518@gmail.com>,
	Liu Zhiwei <zhiwei_liu@linux.alibaba.com>,
	Halil Pasic <pasic@linux.ibm.com>,
	Christian Borntraeger <borntraeger@linux.ibm.com>,
	Eric Farman <farman@linux.ibm.com>,
	David Hildenbrand <david@redhat.com>,
	Ilya Leoshkevich <iii@linux.ibm.com>,
	Yoshinori Sato <ysato@users.sourceforge.jp>,
	Magnus Damm <magnus.damm@gmail.com>,
	Artyom Tarasenko <atar4qemu@gmail.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Anthony Perard <anthony.perard@citrix.com>,
	Paul Durrant <paul@xen.org>,
	Max Filippov <jcmvbkbc@gmail.com>,
	qemu-arm@nongnu.org,
	qemu-ppc@nongnu.org,
	qemu-riscv@nongnu.org,
	qemu-s390x@nongnu.org,
	xen-devel@lists.xenproject.org,
	David Woodhouse <dwmw@amazon.co.uk>
Subject: [PATCH v4 35/47] hw/mips/mipssim: use qemu_create_nic_device()
Date: Fri, 26 Jan 2024 17:25:12 +0000
Message-ID: <20240126173228.394202-36-dwmw2@infradead.org>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20240126173228.394202-1-dwmw2@infradead.org>
References: <20240126173228.394202-1-dwmw2@infradead.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Sender: David Woodhouse <dwmw2@infradead.org>
X-SRS-Rewrite: SMTP reverse-path rewritten from <dwmw2@infradead.org> by casper.infradead.org. See http://www.infradead.org/rpr.html

From: David Woodhouse <dwmw@amazon.co.uk>

The MIPS SIM platform instantiates its NIC only if a corresponding
configuration exists for it. Use qemu_create_nic_device() function for
that.

Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
---
 hw/mips/mipssim.c | 13 +++++++------
 1 file changed, 7 insertions(+), 6 deletions(-)

diff --git a/hw/mips/mipssim.c b/hw/mips/mipssim.c
index 01e323904d..16af31648e 100644
--- a/hw/mips/mipssim.c
+++ b/hw/mips/mipssim.c
@@ -118,13 +118,15 @@ static void main_cpu_reset(void *opaque)
     }
 }
 
-static void mipsnet_init(int base, qemu_irq irq, NICInfo *nd)
+static void mipsnet_init(int base, qemu_irq irq)
 {
     DeviceState *dev;
     SysBusDevice *s;
 
-    dev = qdev_new("mipsnet");
-    qdev_set_nic_properties(dev, nd);
+    dev = qemu_create_nic_device("mipsnet", true, NULL);
+    if (!dev) {
+        return;
+    }
 
     s = SYS_BUS_DEVICE(dev);
     sysbus_realize_and_unref(s, &error_fatal);
@@ -225,9 +227,8 @@ mips_mipssim_init(MachineState *machine)
                       sysbus_mmio_get_region(SYS_BUS_DEVICE(dev), 0));
     }
 
-    if (nd_table[0].used)
-        /* MIPSnet uses the MIPS CPU INT0, which is interrupt 2. */
-        mipsnet_init(0x4200, env->irq[2], &nd_table[0]);
+    /* MIPSnet uses the MIPS CPU INT0, which is interrupt 2. */
+    mipsnet_init(0x4200, env->irq[2]);
 }
 
 static void mips_mipssim_machine_init(MachineClass *mc)
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Fri Jan 26 17:54:26 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 26 Jan 2024 17:54:26 +0000
Received: from list by lists.xenproject.org with outflank-mailman.672440.1046515 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTQPG-000449-Uh; Fri, 26 Jan 2024 17:54:22 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 672440.1046515; Fri, 26 Jan 2024 17:54:22 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTQPG-000442-Rl; Fri, 26 Jan 2024 17:54:22 +0000
Received: by outflank-mailman (input) for mailman id 672440;
 Fri, 26 Jan 2024 17:54:21 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=46+y=JE=desiato.srs.infradead.org=BATV+5cc348fc898a3f56ac6c+7460+infradead.org+dwmw2@srs-se1.protection.inumbo.net>)
 id 1rTQ5B-0004m7-SG
 for xen-devel@lists.xenproject.org; Fri, 26 Jan 2024 17:33:37 +0000
Received: from desiato.infradead.org (desiato.infradead.org
 [2001:8b0:10b:1:d65d:64ff:fe57:4e05])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 03a5be44-bc71-11ee-98f5-efadbce2ee36;
 Fri, 26 Jan 2024 18:33:27 +0100 (CET)
Received: from [2001:8b0:10b:1::ebe] (helo=i7.infradead.org)
 by desiato.infradead.org with esmtpsa (Exim 4.97.1 #2 (Red Hat Linux))
 id 1rTQ4A-000000069Us-1wZd; Fri, 26 Jan 2024 17:32:47 +0000
Received: from dwoodhou by i7.infradead.org with local (Exim 4.97.1 #2 (Red
 Hat Linux)) id 1rTQ49-00000001enM-3JsS;
 Fri, 26 Jan 2024 17:32:33 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
X-Inumbo-ID: 03a5be44-bc71-11ee-98f5-efadbce2ee36
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=infradead.org; s=desiato.20200630; h=Sender:Content-Transfer-Encoding:
	MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:
	Reply-To:Content-Type:Content-ID:Content-Description;
	bh=GkywRXV+y0p7Nt5wgFGuell3roGE2NQ8qPpvNbU7STs=; b=V4bapDZigG0KqzrpWHLQWnoMdI
	cCsUhnQ2jJfRVYxm5QPNAx9aG3sYfWfCXybauSoZQ/SxssH+cElsrF0p4HVv4Ue3bzhEPIXPXj+LT
	htNZt681XmQRX7j36VsmHoNxcTw2TkxrDHu0PGz2CPOboVyIiLeEKvnm3Z1F+VQnC+8GMNUQmuxxM
	+2J/GblKKNXD4shz499zroeB9kWSx1H7G952MNGnFYL1Vg63gJXtukuip89zNkKRpTqfWlgwgBxUO
	ER7hClAADuP/6NX4cZiaSNs9/dBeSbU2NeqAF1s/sLQdKRkQIYCWVU7TNNo7A8QWIkXDIJGf8sHEP
	pYxaDeow==;
From: David Woodhouse <dwmw2@infradead.org>
To: qemu-devel@nongnu.org
Cc: Richard Henderson <richard.henderson@linaro.org>,
	Beniamino Galvani <b.galvani@gmail.com>,
	Peter Maydell <peter.maydell@linaro.org>,
	Strahinja Jankovic <strahinja.p.jankovic@gmail.com>,
	Niek Linnenbank <nieklinnenbank@gmail.com>,
	=?UTF-8?q?C=C3=A9dric=20Le=20Goater?= <clg@kaod.org>,
	Andrew Jeffery <andrew@codeconstruct.com.au>,
	Joel Stanley <joel@jms.id.au>,
	Igor Mitsyanko <i.mitsyanko@gmail.com>,
	Jean-Christophe Dubois <jcd@tribudubois.net>,
	Andrey Smirnov <andrew.smirnov@gmail.com>,
	=?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= <philmd@linaro.org>,
	Rob Herring <robh@kernel.org>,
	Subbaraya Sundeep <sundeep.lkml@gmail.com>,
	Jan Kiszka <jan.kiszka@web.de>,
	Tyrone Ting <kfting@nuvoton.com>,
	Hao Wu <wuhaotsh@google.com>,
	Radoslaw Biernacki <rad@semihalf.com>,
	Leif Lindholm <quic_llindhol@quicinc.com>,
	Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org>,
	"Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
	Alistair Francis <alistair@alistair23.me>,
	Helge Deller <deller@gmx.de>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Eduardo Habkost <eduardo@habkost.net>,
	"Michael S. Tsirkin" <mst@redhat.com>,
	Marcel Apfelbaum <marcel.apfelbaum@gmail.com>,
	Song Gao <gaosong@loongson.cn>,
	Thomas Huth <huth@tuxfamily.org>,
	Laurent Vivier <laurent@vivier.eu>,
	Huacai Chen <chenhuacai@kernel.org>,
	Jiaxun Yang <jiaxun.yang@flygoat.com>,
	=?UTF-8?q?Herv=C3=A9=20Poussineau?= <hpoussin@reactos.org>,
	Aleksandar Rikalo <aleksandar.rikalo@syrmia.com>,
	Aurelien Jarno <aurelien@aurel32.net>,
	Jason Wang <jasowang@redhat.com>,
	Jia Liu <proljc@gmail.com>,
	Stafford Horne <shorne@gmail.com>,
	Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>,
	Nicholas Piggin <npiggin@gmail.com>,
	Daniel Henrique Barboza <danielhb413@gmail.com>,
	David Gibson <david@gibson.dropbear.id.au>,
	Harsh Prateek Bora <harshpb@linux.ibm.com>,
	Bin Meng <bin.meng@windriver.com>,
	Palmer Dabbelt <palmer@dabbelt.com>,
	Weiwei Li <liwei1518@gmail.com>,
	Liu Zhiwei <zhiwei_liu@linux.alibaba.com>,
	Halil Pasic <pasic@linux.ibm.com>,
	Christian Borntraeger <borntraeger@linux.ibm.com>,
	Eric Farman <farman@linux.ibm.com>,
	David Hildenbrand <david@redhat.com>,
	Ilya Leoshkevich <iii@linux.ibm.com>,
	Yoshinori Sato <ysato@users.sourceforge.jp>,
	Magnus Damm <magnus.damm@gmail.com>,
	Artyom Tarasenko <atar4qemu@gmail.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Anthony Perard <anthony.perard@citrix.com>,
	Paul Durrant <paul@xen.org>,
	Max Filippov <jcmvbkbc@gmail.com>,
	qemu-arm@nongnu.org,
	qemu-ppc@nongnu.org,
	qemu-riscv@nongnu.org,
	qemu-s390x@nongnu.org,
	xen-devel@lists.xenproject.org,
	David Woodhouse <dwmw@amazon.co.uk>,
	Thomas Huth <thuth@redhat.com>
Subject: [PATCH v4 32/47] hw/m68k/mcf5208: use qemu_create_nic_device()
Date: Fri, 26 Jan 2024 17:25:09 +0000
Message-ID: <20240126173228.394202-33-dwmw2@infradead.org>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20240126173228.394202-1-dwmw2@infradead.org>
References: <20240126173228.394202-1-dwmw2@infradead.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Sender: David Woodhouse <dwmw2@infradead.org>
X-SRS-Rewrite: SMTP reverse-path rewritten from <dwmw2@infradead.org> by desiato.infradead.org. See http://www.infradead.org/rpr.html

From: David Woodhouse <dwmw@amazon.co.uk>

Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
Reviewed-by: Thomas Huth <thuth@redhat.com>
---
 hw/m68k/mcf5208.c | 19 ++++++-------------
 1 file changed, 6 insertions(+), 13 deletions(-)

diff --git a/hw/m68k/mcf5208.c b/hw/m68k/mcf5208.c
index d22d8536db..0cfb806c20 100644
--- a/hw/m68k/mcf5208.c
+++ b/hw/m68k/mcf5208.c
@@ -206,16 +206,16 @@ static void mcf5208_sys_init(MemoryRegion *address_space, qemu_irq *pic)
     }
 }
 
-static void mcf_fec_init(MemoryRegion *sysmem, NICInfo *nd, hwaddr base,
-                         qemu_irq *irqs)
+static void mcf_fec_init(MemoryRegion *sysmem, hwaddr base, qemu_irq *irqs)
 {
     DeviceState *dev;
     SysBusDevice *s;
     int i;
 
-    qemu_check_nic_model(nd, TYPE_MCF_FEC_NET);
-    dev = qdev_new(TYPE_MCF_FEC_NET);
-    qdev_set_nic_properties(dev, nd);
+    dev = qemu_create_nic_device(TYPE_MCF_FEC_NET, true, NULL);
+    if (!dev) {
+        return;
+    }
 
     s = SYS_BUS_DEVICE(dev);
     sysbus_realize_and_unref(s, &error_fatal);
@@ -267,14 +267,7 @@ static void mcf5208evb_init(MachineState *machine)
 
     mcf5208_sys_init(address_space_mem, pic);
 
-    if (nb_nics > 1) {
-        error_report("Too many NICs");
-        exit(1);
-    }
-    if (nd_table[0].used) {
-        mcf_fec_init(address_space_mem, &nd_table[0],
-                     0xfc030000, pic + 36);
-    }
+    mcf_fec_init(address_space_mem, 0xfc030000, pic + 36);
 
     g_free(pic);
 
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Fri Jan 26 18:30:31 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 26 Jan 2024 18:30:31 +0000
Received: from list by lists.xenproject.org with outflank-mailman.672468.1046525 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTQy9-0003qD-Lk; Fri, 26 Jan 2024 18:30:25 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 672468.1046525; Fri, 26 Jan 2024 18:30:25 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTQy9-0003q6-Hl; Fri, 26 Jan 2024 18:30:25 +0000
Received: by outflank-mailman (input) for mailman id 672468;
 Fri, 26 Jan 2024 18:30:23 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>) id 1rTQy7-0003q0-Ro
 for xen-devel@lists.xenproject.org; Fri, 26 Jan 2024 18:30:23 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rTQy6-0002G5-7F; Fri, 26 Jan 2024 18:30:22 +0000
Received: from 54-240-197-231.amazon.com ([54.240.197.231]
 helo=[10.95.150.130]) by xenbits.xenproject.org with esmtpsa
 (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rTQy5-0006Sv-VX; Fri, 26 Jan 2024 18:30:22 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
	s=20200302mail; h=Content-Transfer-Encoding:Content-Type:In-Reply-To:From:
	References:Cc:To:Subject:MIME-Version:Date:Message-ID;
	bh=DMqJcEQQc8vNOCxLJjY+I9w5i6sv3ny7DBsDu2y+UDg=; b=ykTjer/dA5N+SwVDVqg5cLmzuG
	mXe7qgAhBvUehlQkfcSuEgoBMDSjE//jaREQgonM6VGjumdLl69MkAom2XjoHQKrI3Qnud3HmZjJB
	qZ8pOHQPVDS8vQ+Fv4s2I8ePXMQ7AeIvYSolYvRAQMMm0SSceGvYFtPXc3uhuMuqfLC0=;
Message-ID: <07660850-5b7a-4811-997e-8237e575f429@xen.org>
Date: Fri, 26 Jan 2024 18:30:20 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [XEN PATCH 1/9] x86/boot: choose AP stack based on APIC ID
Content-Language: en-GB
To: Krystian Hebel <krystian.hebel@3mdeb.com>, xen-devel@lists.xenproject.org
Cc: Jan Beulich <jbeulich@suse.com>, Andrew Cooper
 <andrew.cooper3@citrix.com>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger.pau@citrix.com>, Wei Liu <wl@xen.org>
References: <cover.1699982111.git.krystian.hebel@3mdeb.com>
 <0e7dd957b6f26fa7b752bdce1ef6ebe97c825903.1699982111.git.krystian.hebel@3mdeb.com>
From: Julien Grall <julien@xen.org>
In-Reply-To: <0e7dd957b6f26fa7b752bdce1ef6ebe97c825903.1699982111.git.krystian.hebel@3mdeb.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

Hi,

I am not too familiary with the x86 boot code. But I will give a try to 
review :).

On 14/11/2023 17:49, Krystian Hebel wrote:
> This is made as first step of making parallel AP bring-up possible. It
> should be enough for pre-C code.
> 
> Signed-off-by: Krystian Hebel <krystian.hebel@3mdeb.com>
> ---
>   xen/arch/x86/boot/trampoline.S | 20 ++++++++++++++++++++
>   xen/arch/x86/boot/x86_64.S     | 28 +++++++++++++++++++++++++++-
>   xen/arch/x86/setup.c           |  7 +++++++
>   3 files changed, 54 insertions(+), 1 deletion(-)
> 
> diff --git a/xen/arch/x86/boot/trampoline.S b/xen/arch/x86/boot/trampoline.S
> index b8ab0ffdcbb0..ec254125016d 100644
> --- a/xen/arch/x86/boot/trampoline.S
> +++ b/xen/arch/x86/boot/trampoline.S
> @@ -72,6 +72,26 @@ trampoline_protmode_entry:
>           mov     $X86_CR4_PAE,%ecx
>           mov     %ecx,%cr4
>   
> +        /*
> +         * Get APIC ID while we're in non-paged mode. Start by checking if
> +         * x2APIC is enabled.
> +         */
> +        mov     $MSR_APIC_BASE, %ecx
> +        rdmsr
> +        and     $APIC_BASE_EXTD, %eax
> +        jnz     .Lx2apic
> +
> +        /* Not x2APIC, read from MMIO */
> +        mov     0xfee00020, %esp
> +        shr     $24, %esp
> +        jmp     1f
> +
> +.Lx2apic:
> +        mov     $(MSR_X2APIC_FIRST + (0x20 >> 4)), %ecx
> +        rdmsr
> +        mov     %eax, %esp
> +1:
> +
>           /* Load pagetable base register. */
>           mov     $sym_offs(idle_pg_table),%eax
>           add     bootsym_rel(trampoline_xen_phys_start,4,%eax)
> diff --git a/xen/arch/x86/boot/x86_64.S b/xen/arch/x86/boot/x86_64.S
> index 04bb62ae8680..b85b47b5c1a0 100644
> --- a/xen/arch/x86/boot/x86_64.S
> +++ b/xen/arch/x86/boot/x86_64.S
> @@ -15,7 +15,33 @@ ENTRY(__high_start)
>           mov     $XEN_MINIMAL_CR4,%rcx
>           mov     %rcx,%cr4
>   
> -        mov     stack_start(%rip),%rsp
> +        test    %ebx,%ebx
> +        cmovz   stack_start(%rip), %rsp
> +        jz      .L_stack_set
> +
> +        /* APs only: get stack base from APIC ID saved in %esp. */
> +        mov     $-1, %rax
> +        lea     x86_cpu_to_apicid(%rip), %rcx
I would consider to move this patch after #2 and #3, so the logic is not 
modified again. This would help the review.

> +1:
> +        add     $1, %rax
> +        cmp     $NR_CPUS, %eax
> +        jb      2f
I think we can get rid of this jump by reworking the loop so %eax is 
tested as the end of the loop. But this is boot code, so it is possibly 
not worth it. I will leave the x86 maintainers commenting.

> +        hlt
> +2:
> +        cmp     %esp, (%rcx, %rax, 4)
> +        jne     1b
> +
> +        /* %eax is now Xen CPU index. */
> +        lea     stack_base(%rip), %rcx
> +        mov     (%rcx, %rax, 8), %rsp
> +
> +        test    %rsp,%rsp
> +        jnz     1f
> +        hlt
> +1:
NIT: Can you use 3? This makes the code easier to read and less prone to 
error (you have two very close 1).

> +        add     $(STACK_SIZE - CPUINFO_sizeof), %rsp
> +
> +.L_stack_set:
>   
>           /* Reset EFLAGS (subsumes CLI and CLD). */
>           pushq   $0
> diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
> index a3d3f797bb1e..1285969901e0 100644
> --- a/xen/arch/x86/setup.c
> +++ b/xen/arch/x86/setup.c
> @@ -1951,6 +1951,7 @@ void __init noreturn __start_xen(unsigned long mbi_p)
>        */
>       if ( !pv_shim )
>       {
> +        /* Separate loop to make parallel AP bringup possible. */

The loop split seems to be unrelated to this patch. Actually, I was 
expecting that only the assembly code would be modified.

>           for_each_present_cpu ( i )
>           {
>               /* Set up cpu_to_node[]. */
> @@ -1958,6 +1959,12 @@ void __init noreturn __start_xen(unsigned long mbi_p)
>               /* Set up node_to_cpumask based on cpu_to_node[]. */
>               numa_add_cpu(i);
>   
> +            if ( stack_base[i] == NULL )
> +                stack_base[i] = cpu_alloc_stack(i);

I don't quite understand this change at least in the context of this 
patch. AFAICT the stack will be currently allocated in 
cpu_smpboot_callback() which is called while the CPU is prepared. So you 
should not need this allocation right now.

Looking at the rest of the series, it seems you allocate the stack 
earlier so you start the CPU bring-up earlier. But they will still be 
held in assembly code until cpu_up() is called.

So effectively, part of the C part of the CPUs bring-up is still 
serialized. Did I understand the logic correctly?

If so, I would suggest to clarify it in the series because this wasn't 
obvious to me (I was expecting start_secondary() would also run in 
parallell).

Regarding the change in setup.c, I think it would make more sense in 
patch #9.

Cheers,

-- 
Julien Grall


From xen-devel-bounces@lists.xenproject.org Fri Jan 26 18:38:51 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 26 Jan 2024 18:38:51 +0000
Received: from list by lists.xenproject.org with outflank-mailman.672472.1046536 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTR6F-0006Ox-Eu; Fri, 26 Jan 2024 18:38:47 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 672472.1046536; Fri, 26 Jan 2024 18:38:47 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTR6F-0006Oq-Ap; Fri, 26 Jan 2024 18:38:47 +0000
Received: by outflank-mailman (input) for mailman id 672472;
 Fri, 26 Jan 2024 18:38:45 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>) id 1rTR6D-0006NS-Rg
 for xen-devel@lists.xenproject.org; Fri, 26 Jan 2024 18:38:45 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rTR6C-0002Qn-29; Fri, 26 Jan 2024 18:38:44 +0000
Received: from 54-240-197-231.amazon.com ([54.240.197.231]
 helo=[10.95.150.130]) by xenbits.xenproject.org with esmtpsa
 (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rTR6B-0006uM-Ri; Fri, 26 Jan 2024 18:38:43 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
	s=20200302mail; h=Content-Transfer-Encoding:Content-Type:In-Reply-To:From:
	References:Cc:To:Subject:MIME-Version:Date:Message-ID;
	bh=U8thbuNb7KsmRxvGNAnaDv6oaKsASpnP4kKPkdzg+qc=; b=Scs0/7OMbRuQIb1Aa2zOLPHrrR
	CTKvXk98/Ui9NUQGR0UNqscNhhCI/nOoLXA7jRpG66hXEeZXni/+pygqRfkOZV43+hiIDtCsD4zHD
	tEjYW1C/aqbR2C3AB6OiIRATXE6OwK4eCebgNDLJHGXNCPtmyBOc+7Gq2l1k/Ues7jLA=;
Message-ID: <b1138aaa-5bfc-4448-a89a-89ed5be686c7@xen.org>
Date: Fri, 26 Jan 2024 18:38:41 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [XEN PATCH 2/9] x86: don't access x86_cpu_to_apicid[] directly,
 use cpu_physical_id(cpu)
Content-Language: en-GB
To: Krystian Hebel <krystian.hebel@3mdeb.com>, xen-devel@lists.xenproject.org
Cc: Jan Beulich <jbeulich@suse.com>, Andrew Cooper
 <andrew.cooper3@citrix.com>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger.pau@citrix.com>, Wei Liu <wl@xen.org>
References: <cover.1699982111.git.krystian.hebel@3mdeb.com>
 <705574ddb7f18bae9ed3f60ddf2e4bda02c70388.1699982111.git.krystian.hebel@3mdeb.com>
From: Julien Grall <julien@xen.org>
In-Reply-To: <705574ddb7f18bae9ed3f60ddf2e4bda02c70388.1699982111.git.krystian.hebel@3mdeb.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

Hi,

On 14/11/2023 17:49, Krystian Hebel wrote:
> This is done in preparation to move data from x86_cpu_to_apicid[]
> elsewhere.
NIT: I would add "No functional changes intended".

> Signed-off-by: Krystian Hebel <krystian.hebel@3mdeb.com>

Reviewed-by: Julien Grall <jgrall@amazon.com>

Cheers,

-- 
Julien Grall


From xen-devel-bounces@lists.xenproject.org Fri Jan 26 19:07:21 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 26 Jan 2024 19:07:21 +0000
Received: from list by lists.xenproject.org with outflank-mailman.672481.1046545 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTRXf-0007dj-H9; Fri, 26 Jan 2024 19:07:07 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 672481.1046545; Fri, 26 Jan 2024 19:07:07 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTRXf-0007dc-EY; Fri, 26 Jan 2024 19:07:07 +0000
Received: by outflank-mailman (input) for mailman id 672481;
 Fri, 26 Jan 2024 19:07:05 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=IWqf=JE=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1rTRXd-0007dW-PJ
 for xen-devel@lists.xenproject.org; Fri, 26 Jan 2024 19:07:05 +0000
Received: from mail-wm1-x330.google.com (mail-wm1-x330.google.com
 [2a00:1450:4864:20::330])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 17c1a697-bc7e-11ee-8a43-1f161083a0e0;
 Fri, 26 Jan 2024 20:07:04 +0100 (CET)
Received: by mail-wm1-x330.google.com with SMTP id
 5b1f17b1804b1-40e8d3b29f2so14471515e9.1
 for <xen-devel@lists.xenproject.org>; Fri, 26 Jan 2024 11:07:04 -0800 (PST)
Received: from [10.80.67.30] (default-46-102-197-194.interdsl.co.uk.
 [46.102.197.194]) by smtp.gmail.com with ESMTPSA id
 d3-20020a05600c3ac300b0040ed217f051sm2611187wms.48.2024.01.26.11.07.03
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Fri, 26 Jan 2024 11:07:03 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 17c1a697-bc7e-11ee-8a43-1f161083a0e0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1706296024; x=1706900824; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=KkKJpXV46jkGEwBLeLhrxXMchGl/uIv7vkZnzexSi8k=;
        b=R0vVqpV620pCp+GnJEuxk3S/4VSLKHdGDU+n913VlRSdfmwFMz7L0KfXTZwNd7r2fV
         CY8zuk8KrD+iAscsNPERspBcWhwxPo+UP+C/nInM+zrpWdh+YpbMrzp/w/G5+DQni9p7
         fPTwkGImbsvGqiOtDp2mLKF8Ea2u/bxbUhk2c=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706296024; x=1706900824;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=KkKJpXV46jkGEwBLeLhrxXMchGl/uIv7vkZnzexSi8k=;
        b=NDo+WTvQL1AXe0aL2kqZLENUHdJShBznQojTBRloOtfjML9XSKgW9932+iy1FIgV62
         q48IXh74Sll7WrThpbIQN8mJm8ubY30Gq9xet5hQZJRaTRWo6vgvUavZgqouDw5VEgtQ
         8GmAR2+bhM/zJsSM51Vw9s43sqmsiV1OgBzKi84OTvqaqR51QPVH3lLLmKDubqnPwWY8
         VNUxfxGB/0qWSpJRkUxcfswiNCIeLeIiuxBrd8Dd3zsnt5/5qvopufJwD5oYog1NFh/3
         a+45uzzesnR+olUWwKzE7cmGJUtDpTu+CW8MZaDfksmsDfnBPu/dBpn8/7pBF+9t3yny
         aUcA==
X-Gm-Message-State: AOJu0YzhSAAkGNQnOsitVL90yOtMTR/D9LDHDTw/xKvjF3MpEp3WV9WW
	Yw9RoLJfvo9+56dAO8cCMwtRF6CfPEuW0lL1NwnNfZe5CYt6DB3m3iT8oPABDxI=
X-Google-Smtp-Source: AGHT+IFR2TYRKz4a4VS7DbS9Kqb/6lnuenBMD7Ey7XnbHXc9OTkVWLHiPLTC+e9BMJiklBNQ1avPHQ==
X-Received: by 2002:a05:600c:2146:b0:40e:624a:87cd with SMTP id v6-20020a05600c214600b0040e624a87cdmr125300wml.206.1706296024184;
        Fri, 26 Jan 2024 11:07:04 -0800 (PST)
Message-ID: <a0e728d7-66dd-44d3-95d3-510a0acaee42@citrix.com>
Date: Fri, 26 Jan 2024 19:07:03 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] x86/entry: fix jump into restore_all_guest without %rbx
 correctly set
Content-Language: en-GB
To: Roger Pau Monne <roger.pau@citrix.com>, xen-devel@lists.xenproject.org
Cc: Jan Beulich <jbeulich@suse.com>, Wei Liu <wl@xen.org>,
 Edwin Torok <edwin.torok@cloud.com>
References: <20240126145418.39520-1-roger.pau@citrix.com>
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 xsFNBFLhNn8BEADVhE+Hb8i0GV6mihnnr/uiQQdPF8kUoFzCOPXkf7jQ5sLYeJa0cQi6Penp
 VtiFYznTairnVsN5J+ujSTIb+OlMSJUWV4opS7WVNnxHbFTPYZVQ3erv7NKc2iVizCRZ2Kxn
 srM1oPXWRic8BIAdYOKOloF2300SL/bIpeD+x7h3w9B/qez7nOin5NzkxgFoaUeIal12pXSR
 Q354FKFoy6Vh96gc4VRqte3jw8mPuJQpfws+Pb+swvSf/i1q1+1I4jsRQQh2m6OTADHIqg2E
 ofTYAEh7R5HfPx0EXoEDMdRjOeKn8+vvkAwhviWXTHlG3R1QkbE5M/oywnZ83udJmi+lxjJ5
 YhQ5IzomvJ16H0Bq+TLyVLO/VRksp1VR9HxCzItLNCS8PdpYYz5TC204ViycobYU65WMpzWe
 LFAGn8jSS25XIpqv0Y9k87dLbctKKA14Ifw2kq5OIVu2FuX+3i446JOa2vpCI9GcjCzi3oHV
 e00bzYiHMIl0FICrNJU0Kjho8pdo0m2uxkn6SYEpogAy9pnatUlO+erL4LqFUO7GXSdBRbw5
 gNt25XTLdSFuZtMxkY3tq8MFss5QnjhehCVPEpE6y9ZjI4XB8ad1G4oBHVGK5LMsvg22PfMJ
 ISWFSHoF/B5+lHkCKWkFxZ0gZn33ju5n6/FOdEx4B8cMJt+cWwARAQABzSlBbmRyZXcgQ29v
 cGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPsLBegQTAQgAJAIbAwULCQgHAwUVCgkI
 CwUWAgMBAAIeAQIXgAUCWKD95wIZAQAKCRBlw/kGpdefoHbdD/9AIoR3k6fKl+RFiFpyAhvO
 59ttDFI7nIAnlYngev2XUR3acFElJATHSDO0ju+hqWqAb8kVijXLops0gOfqt3VPZq9cuHlh
 IMDquatGLzAadfFx2eQYIYT+FYuMoPZy/aTUazmJIDVxP7L383grjIkn+7tAv+qeDfE+txL4
 SAm1UHNvmdfgL2/lcmL3xRh7sub3nJilM93RWX1Pe5LBSDXO45uzCGEdst6uSlzYR/MEr+5Z
 JQQ32JV64zwvf/aKaagSQSQMYNX9JFgfZ3TKWC1KJQbX5ssoX/5hNLqxMcZV3TN7kU8I3kjK
 mPec9+1nECOjjJSO/h4P0sBZyIUGfguwzhEeGf4sMCuSEM4xjCnwiBwftR17sr0spYcOpqET
 ZGcAmyYcNjy6CYadNCnfR40vhhWuCfNCBzWnUW0lFoo12wb0YnzoOLjvfD6OL3JjIUJNOmJy
 RCsJ5IA/Iz33RhSVRmROu+TztwuThClw63g7+hoyewv7BemKyuU6FTVhjjW+XUWmS/FzknSi
 dAG+insr0746cTPpSkGl3KAXeWDGJzve7/SBBfyznWCMGaf8E2P1oOdIZRxHgWj0zNr1+ooF
 /PzgLPiCI4OMUttTlEKChgbUTQ+5o0P080JojqfXwbPAyumbaYcQNiH1/xYbJdOFSiBv9rpt
 TQTBLzDKXok86M7BTQRS4TZ/ARAAkgqudHsp+hd82UVkvgnlqZjzz2vyrYfz7bkPtXaGb9H4
 Rfo7mQsEQavEBdWWjbga6eMnDqtu+FC+qeTGYebToxEyp2lKDSoAsvt8w82tIlP/EbmRbDVn
 7bhjBlfRcFjVYw8uVDPptT0TV47vpoCVkTwcyb6OltJrvg/QzV9f07DJswuda1JH3/qvYu0p
 vjPnYvCq4NsqY2XSdAJ02HrdYPFtNyPEntu1n1KK+gJrstjtw7KsZ4ygXYrsm/oCBiVW/OgU
 g/XIlGErkrxe4vQvJyVwg6YH653YTX5hLLUEL1NS4TCo47RP+wi6y+TnuAL36UtK/uFyEuPy
 wwrDVcC4cIFhYSfsO0BumEI65yu7a8aHbGfq2lW251UcoU48Z27ZUUZd2Dr6O/n8poQHbaTd
 6bJJSjzGGHZVbRP9UQ3lkmkmc0+XCHmj5WhwNNYjgbbmML7y0fsJT5RgvefAIFfHBg7fTY/i
 kBEimoUsTEQz+N4hbKwo1hULfVxDJStE4sbPhjbsPCrlXf6W9CxSyQ0qmZ2bXsLQYRj2xqd1
 bpA+1o1j2N4/au1R/uSiUFjewJdT/LX1EklKDcQwpk06Af/N7VZtSfEJeRV04unbsKVXWZAk
 uAJyDDKN99ziC0Wz5kcPyVD1HNf8bgaqGDzrv3TfYjwqayRFcMf7xJaL9xXedMcAEQEAAcLB
 XwQYAQgACQUCUuE2fwIbDAAKCRBlw/kGpdefoG4XEACD1Qf/er8EA7g23HMxYWd3FXHThrVQ
 HgiGdk5Yh632vjOm9L4sd/GCEACVQKjsu98e8o3ysitFlznEns5EAAXEbITrgKWXDDUWGYxd
 pnjj2u+GkVdsOAGk0kxczX6s+VRBhpbBI2PWnOsRJgU2n10PZ3mZD4Xu9kU2IXYmuW+e5KCA
 vTArRUdCrAtIa1k01sPipPPw6dfxx2e5asy21YOytzxuWFfJTGnVxZZSCyLUO83sh6OZhJkk
 b9rxL9wPmpN/t2IPaEKoAc0FTQZS36wAMOXkBh24PQ9gaLJvfPKpNzGD8XWR5HHF0NLIJhgg
 4ZlEXQ2fVp3XrtocHqhu4UZR4koCijgB8sB7Tb0GCpwK+C4UePdFLfhKyRdSXuvY3AHJd4CP
 4JzW0Bzq/WXY3XMOzUTYApGQpnUpdOmuQSfpV9MQO+/jo7r6yPbxT7CwRS5dcQPzUiuHLK9i
 nvjREdh84qycnx0/6dDroYhp0DFv4udxuAvt1h4wGwTPRQZerSm4xaYegEFusyhbZrI0U9tJ
 B8WrhBLXDiYlyJT6zOV2yZFuW47VrLsjYnHwn27hmxTC/7tvG3euCklmkn9Sl9IAKFu29RSo
 d5bD8kMSCYsTqtTfT6W4A3qHGvIDta3ptLYpIAOD2sY3GYq2nf3Bbzx81wZK14JdDDHUX2Rs
 6+ahAA==
In-Reply-To: <20240126145418.39520-1-roger.pau@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 26/01/2024 2:54 pm, Roger Pau Monne wrote:
> e047b8d0fa05 went too far when limiting obtaining the vCPU pointer.  While the
> code in ist_dispatch_done does indeed only need the vCPU pointer when PV32 is
> enabled, the !PV32 path will end up jumping into restore_all_guest which does
> require rbx == vCPU pointer.
>
> Fix by moving the fetching of the vCPU pointer to be done outside of the PV32
> code block.
>
> Reported-by: Edwin Torok <edwin.torok@cloud.com>
> Fixes: e047b8d0fa05 ('x86/entry: replace two GET_CURRENT() uses')
> Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>

Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>

Thanks for getting to the bottom of this.

This asm code is an unwieldy mess.  We need to figure out a way to
simplify it.


From xen-devel-bounces@lists.xenproject.org Fri Jan 26 19:34:46 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 26 Jan 2024 19:34:46 +0000
Received: from list by lists.xenproject.org with outflank-mailman.672486.1046555 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTRyK-0001OU-Q8; Fri, 26 Jan 2024 19:34:40 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 672486.1046555; Fri, 26 Jan 2024 19:34:40 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTRyK-0001ON-ME; Fri, 26 Jan 2024 19:34:40 +0000
Received: by outflank-mailman (input) for mailman id 672486;
 Fri, 26 Jan 2024 19:34:39 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rTRyJ-0001LY-FG; Fri, 26 Jan 2024 19:34:39 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rTRyI-0003Ow-Vu; Fri, 26 Jan 2024 19:34:39 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rTRyI-00016N-JM; Fri, 26 Jan 2024 19:34:38 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rTRyI-0006dh-Iw; Fri, 26 Jan 2024 19:34:38 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=ux5VVifUrNoD5vVoR7UcvSFe2hRDQ9LG0bcIikTBr/g=; b=2854/jdYS5riRNNd2ovmaQvrJv
	WLhx6mknrxpuUQ4rDC2lE+cXr+qF9/NDWN1eNcAPQjcJfrpwgdh23ZtBzG2N6rifJLcg5Kxh5ZIcN
	STY4DeOsCnwI+9JJvpPJQt3YQVekaB2NCv4Kj1TPd86UJ2uUTmwKjOqy6yVeClJJK0Mw=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184472-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [libvirt test] 184472: tolerable all pass - PUSHED
X-Osstest-Failures:
    libvirt:test-armhf-armhf-libvirt:saverestore-support-check:fail:nonblocking
    libvirt:test-armhf-armhf-libvirt-qcow2:saverestore-support-check:fail:nonblocking
    libvirt:test-armhf-armhf-libvirt-raw:saverestore-support-check:fail:nonblocking
    libvirt:test-amd64-amd64-libvirt-xsm:migrate-support-check:fail:nonblocking
    libvirt:test-amd64-i386-libvirt-xsm:migrate-support-check:fail:nonblocking
    libvirt:test-amd64-i386-libvirt:migrate-support-check:fail:nonblocking
    libvirt:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    libvirt:test-arm64-arm64-libvirt:migrate-support-check:fail:nonblocking
    libvirt:test-arm64-arm64-libvirt:saverestore-support-check:fail:nonblocking
    libvirt:test-arm64-arm64-libvirt-xsm:migrate-support-check:fail:nonblocking
    libvirt:test-arm64-arm64-libvirt-xsm:saverestore-support-check:fail:nonblocking
    libvirt:test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    libvirt:test-armhf-armhf-libvirt:migrate-support-check:fail:nonblocking
    libvirt:test-arm64-arm64-libvirt-qcow2:migrate-support-check:fail:nonblocking
    libvirt:test-arm64-arm64-libvirt-qcow2:saverestore-support-check:fail:nonblocking
    libvirt:test-amd64-amd64-libvirt-vhd:migrate-support-check:fail:nonblocking
    libvirt:test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    libvirt:test-amd64-i386-libvirt-raw:migrate-support-check:fail:nonblocking
    libvirt:test-arm64-arm64-libvirt-raw:migrate-support-check:fail:nonblocking
    libvirt:test-arm64-arm64-libvirt-raw:saverestore-support-check:fail:nonblocking
    libvirt:test-armhf-armhf-libvirt-qcow2:migrate-support-check:fail:nonblocking
    libvirt:test-armhf-armhf-libvirt-raw:migrate-support-check:fail:nonblocking
X-Osstest-Versions-This:
    libvirt=ccfc5c1e1637d20e479fafde7aa3ea4c6fb29e21
X-Osstest-Versions-That:
    libvirt=a27982ed54c430e2f5caf9c5e01eae49d7c4cd1e
From: osstest service owner <osstest-admin@xenproject.org>
Date: Fri, 26 Jan 2024 19:34:38 +0000

flight 184472 libvirt real [real]
http://logs.test-lab.xenproject.org/osstest/logs/184472/

Failures :-/ but no regressions.

Tests which did not succeed, but are not blocking:
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 184458
 test-armhf-armhf-libvirt-qcow2 15 saverestore-support-check   fail like 184458
 test-armhf-armhf-libvirt-raw 15 saverestore-support-check    fail  like 184458
 test-amd64-amd64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-amd64-i386-libvirt-xsm  15 migrate-support-check        fail   never pass
 test-amd64-i386-libvirt      15 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt     15 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt     15 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt     16 saverestore-support-check    fail   never pass
 test-arm64-arm64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-xsm 16 saverestore-support-check    fail   never pass
 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-armhf-armhf-libvirt     15 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-qcow2 14 migrate-support-check        fail never pass
 test-arm64-arm64-libvirt-qcow2 15 saverestore-support-check    fail never pass
 test-amd64-amd64-libvirt-vhd 14 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-amd64-i386-libvirt-raw  14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 15 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-qcow2 14 migrate-support-check        fail never pass
 test-armhf-armhf-libvirt-raw 14 migrate-support-check        fail   never pass

version targeted for testing:
 libvirt              ccfc5c1e1637d20e479fafde7aa3ea4c6fb29e21
baseline version:
 libvirt              a27982ed54c430e2f5caf9c5e01eae49d7c4cd1e

Last test of basis   184458  2024-01-25 04:20:28 Z    1 days
Testing same since   184472  2024-01-26 04:18:56 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Jiri Denemark <jdenemar@redhat.com>
  Michal Privoznik <mprivozn@redhat.com>
  Yalan Zhang <yalzhang@redhat.com>

jobs:
 build-amd64-xsm                                              pass    
 build-arm64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64                                                  pass    
 build-arm64                                                  pass    
 build-armhf                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-arm64-libvirt                                          pass    
 build-armhf-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-pvops                                            pass    
 build-arm64-pvops                                            pass    
 build-armhf-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm           pass    
 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm            pass    
 test-amd64-amd64-libvirt-xsm                                 pass    
 test-arm64-arm64-libvirt-xsm                                 pass    
 test-amd64-i386-libvirt-xsm                                  pass    
 test-amd64-amd64-libvirt                                     pass    
 test-arm64-arm64-libvirt                                     pass    
 test-armhf-armhf-libvirt                                     pass    
 test-amd64-i386-libvirt                                      pass    
 test-amd64-amd64-libvirt-pair                                pass    
 test-amd64-i386-libvirt-pair                                 pass    
 test-arm64-arm64-libvirt-qcow2                               pass    
 test-armhf-armhf-libvirt-qcow2                               pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-armhf-armhf-libvirt-raw                                 pass    
 test-amd64-i386-libvirt-raw                                  pass    
 test-amd64-amd64-libvirt-vhd                                 pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Pushing revision :

To xenbits.xen.org:/home/xen/git/libvirt.git
   a27982ed54..ccfc5c1e16  ccfc5c1e1637d20e479fafde7aa3ea4c6fb29e21 -> xen-tested-master


From xen-devel-bounces@lists.xenproject.org Fri Jan 26 20:05:44 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 26 Jan 2024 20:05:44 +0000
Received: from list by lists.xenproject.org with outflank-mailman.672492.1046566 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTSSG-00065k-4O; Fri, 26 Jan 2024 20:05:36 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 672492.1046566; Fri, 26 Jan 2024 20:05:36 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTSSF-00065d-VX; Fri, 26 Jan 2024 20:05:35 +0000
Received: by outflank-mailman (input) for mailman id 672492;
 Fri, 26 Jan 2024 20:05:34 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rTSSE-00065T-Pg; Fri, 26 Jan 2024 20:05:34 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rTSSE-000400-Je; Fri, 26 Jan 2024 20:05:34 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rTSSE-0002Bd-2W; Fri, 26 Jan 2024 20:05:34 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rTSSE-0008Pt-22; Fri, 26 Jan 2024 20:05:34 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=qrbfg8U8ncqsirodfaiAvkuCqucvSlhK6CGw1ScTt1E=; b=bTHPvwKAjyPEmTHX8WQEDom/Tq
	O5oaWpAbldQc8BiMYtpGZvNsfsdoPIUrTVqE1EqxMA/FPMb0g8S1ErgSiQQQANU/KzRAqC4NCO8j1
	Q7hUGzth2Ob6WNr1GEWp+YmESlhM1V51BK2E7L1mqR81UHQ6SpG0IWZpvAEAyLfQBfqA=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184478-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [seabios test] 184478: tolerable FAIL - PUSHED
X-Osstest-Failures:
    seabios:test-amd64-amd64-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    seabios:test-amd64-i386-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    seabios:test-amd64-amd64-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    seabios:test-amd64-amd64-qemuu-nested-amd:debian-hvm-install/l1/l2:fail:nonblocking
    seabios:test-amd64-i386-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    seabios:test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    seabios:test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
X-Osstest-Versions-This:
    seabios=82faf1d5c8b25375b9029f2d6668135e62455a8c
X-Osstest-Versions-That:
    seabios=3f082f38bf0050270dc65abf256f7014f6c0c4a8
From: osstest service owner <osstest-admin@xenproject.org>
Date: Fri, 26 Jan 2024 20:05:34 +0000

flight 184478 seabios real [real]
http://logs.test-lab.xenproject.org/osstest/logs/184478/

Failures :-/ but no regressions.

Tests which did not succeed, but are not blocking:
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 184467
 test-amd64-i386-xl-qemuu-win7-amd64 19 guest-stop             fail like 184467
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 184467
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 184467
 test-amd64-i386-xl-qemuu-ws16-amd64 19 guest-stop             fail like 184467
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass

version targeted for testing:
 seabios              82faf1d5c8b25375b9029f2d6668135e62455a8c
baseline version:
 seabios              3f082f38bf0050270dc65abf256f7014f6c0c4a8

Last test of basis   184467  2024-01-25 16:41:04 Z    1 days
Testing same since   184478  2024-01-26 16:12:35 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Gerd Hoffmann <kraxel@redhat.com>
  Max Tottenham <mtottenh@akamai.com>

jobs:
 build-amd64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm           pass    
 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm            pass    
 test-amd64-amd64-xl-qemuu-debianhvm-i386-xsm                 pass    
 test-amd64-i386-xl-qemuu-debianhvm-i386-xsm                  pass    
 test-amd64-amd64-qemuu-nested-amd                            fail    
 test-amd64-i386-qemuu-rhel6hvm-amd                           pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64                    pass    
 test-amd64-i386-xl-qemuu-debianhvm-amd64                     pass    
 test-amd64-amd64-qemuu-freebsd11-amd64                       pass    
 test-amd64-amd64-qemuu-freebsd12-amd64                       pass    
 test-amd64-amd64-xl-qemuu-win7-amd64                         fail    
 test-amd64-i386-xl-qemuu-win7-amd64                          fail    
 test-amd64-amd64-xl-qemuu-ws16-amd64                         fail    
 test-amd64-i386-xl-qemuu-ws16-amd64                          fail    
 test-amd64-amd64-xl-qemuu-dmrestrict-amd64-dmrestrict        pass    
 test-amd64-i386-xl-qemuu-dmrestrict-amd64-dmrestrict         pass    
 test-amd64-amd64-qemuu-nested-intel                          pass    
 test-amd64-i386-qemuu-rhel6hvm-intel                         pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64-shadow             pass    
 test-amd64-i386-xl-qemuu-debianhvm-amd64-shadow              pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Pushing revision :

To xenbits.xen.org:/home/xen/git/osstest/seabios.git
   3f082f3..82faf1d  82faf1d5c8b25375b9029f2d6668135e62455a8c -> xen-tested-master


From xen-devel-bounces@lists.xenproject.org Fri Jan 26 20:54:44 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 26 Jan 2024 20:54:44 +0000
Received: from list by lists.xenproject.org with outflank-mailman.672500.1046574 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTTDZ-0008VI-Ki; Fri, 26 Jan 2024 20:54:29 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 672500.1046574; Fri, 26 Jan 2024 20:54:29 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTTDZ-0008VB-IB; Fri, 26 Jan 2024 20:54:29 +0000
Received: by outflank-mailman (input) for mailman id 672500;
 Fri, 26 Jan 2024 20:54:28 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=gD8/=JE=citrix.com=prvs=748d50c66=Andrew.Cooper3@srs-se1.protection.inumbo.net>)
 id 1rTTDY-0008V3-Hg
 for xen-devel@lists.xenproject.org; Fri, 26 Jan 2024 20:54:28 +0000
Received: from esa2.hc3370-68.iphmx.com (esa2.hc3370-68.iphmx.com
 [216.71.145.153]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 15c3fd42-bc8d-11ee-8a43-1f161083a0e0;
 Fri, 26 Jan 2024 21:54:26 +0100 (CET)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 15c3fd42-bc8d-11ee-8a43-1f161083a0e0
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple;
  d=citrix.com; s=securemail; t=1706302466;
  h=from:to:cc:subject:date:message-id:mime-version:
   content-transfer-encoding;
  bh=ckrgDC1JMqE9xCULVqlUWj0fpaZrxXJpO4Wm4a1uaUU=;
  b=MzMpj+lklLmXYpVmCapqyD9xOymGXgTcrBpZs2LHa2/P+f/mTPlwaurj
   fiMPJ+iE7ocf5WdwfrFPm5h2gyxNRh1DQL+8X5D9fYokJmqRS8frsEAwq
   Bk3fyTkDkDKePe6PJ6Az1UtUxW7BHcKsA/g5mhgFq+aUkjbp9C0h+vfGU
   k=;
X-CSE-ConnectionGUID: ONDQj5y/SSWOLL5b10Lv7Q==
X-CSE-MsgGUID: 5rGmxJ68SWyVvvEVRTgaDw==
Authentication-Results: esa2.hc3370-68.iphmx.com; dkim=none (message not signed) header.i=none
X-SBRS: 4.0
X-MesageID: 129573544
X-Ironport-Server: esa2.hc3370-68.iphmx.com
X-Remote-IP: 162.221.159.70
X-Policy: $RELAYED
X-ThreatScanner-Verdict: Negative
IronPort-Data: A9a23:RQ+y+KlQMcChSvC5kwWN0zno5gzYJkRdPkR7XQ2eYbSJt1+Wr1Gzt
 xIbUG+GOquMYzCnKtB2Ot+z8B9SsJPTyt5lSwtt/y5nESMWpZLJC+rCIxarNUt+DCFhoGFPt
 JxCN4aafKjYaleG+39B55C49SEUOZmgH+e6UKicfHkpGWeIcQ954Tp7gek1n4V0ttawBgKJq
 LvartbWfVSowFaYCEpNg064gE0p5KmaVA8w5ARkOagS5gOGzhH5MbpETU2PByqgKmVrNrbSq
 9brlNmR4m7f9hExPdKp+p6TnpoiG+O60aCm0xK6aoD66vRwjnVaPpUTbZLwXXx/mTSR9+2d/
 f0W3XCGpaXFCYWX8AgVe0Ew/yiTpsSq8pefSZS0mZT7I0Er7xIAahihZa07FdRwxwp5PY1B3
 ds+BAkPMwHEvNmJ55afF+M13uA9c/C+aevzulk4pd3YJfMvQJSFSKTW/95Imjw3g6iiH96HO
 ZBfM2A2Kk2dMlsQYj/7C7pn9AusrlD5fydVtxS+oq0v7nKI5AdwzKLsIJzefdniqcB9xxzJ+
 z2dojilav0cHIGF5j+V0Cz8vdDeoz3ldbwoKLKx2uE/1TV/wURMUUZLBDNXu8KRmkO4Ht5SN
 UEQ0i4vtrQpslymSMHnWB+1q2LCuQQTM/JyOeAn7ACGyoLP/h2UQGMDS1Zpd9gOpMIwAzsw2
 TehmNfkBidusfuWVGia/beXqhu9PCEUKSkJYipscOcey4C9+sdp1EuJF4syVvHt5jHoJd3u6
 xesgBE82qRUtvU08IGfoFqe2xay+aGcG2bZ+T7rsnKZAhJRPdH9OtH4sgCAsp59wJClok5tV
 UXoevRyD8hUVPlhbATXHI0w8EiBvp5pygH0j191BIUG/D+w4XOldo04yGghfBkzY5pYIG6yM
 RC7VeZtCHh7ZSXCUEOKS9jpV5RCIVbIS7wJqcw4nvIRO8MsJWdrDQllZFKK3nCFrXXAZZoXY
 M/BGe71VCZyNEiS5GbuLwvr+eNxl39WKKK6bcyT8ilLJpLHPi/KEO1baQbmgyJQxPrsnTg5O
 u13b6OioyizmsWnCsUL2eb/9Ww3EEU=
IronPort-HdrOrdr: A9a23:4wYgSapNI8h0B+gIKHYUb1IaV5oneYIsimQD101hICG8cqSj+f
 xG+85rsiMc6QxhPE3I9urhBEDtex/hHP1OkOws1NWZLWrbUQKTRekIh+bfKlXbakvDH4VmtJ
 uIHZIQNDSJNykZsfrH
X-Talos-CUID: 9a23:ahZeSWDIxBfr9Y76Ew5B2HcWR9FiSUbi61P0fkXhUUJ3F4TAHA==
X-Talos-MUID: 9a23:tO1G6QQuEBvqrULMRXSxnh5nJOU2s5+RGX4Tj7g4gfWLPABvbmI=
X-IronPort-AV: E=Sophos;i="6.05,216,1701147600"; 
   d="scan'208";a="129573544"
From: Andrew Cooper <andrew.cooper3@citrix.com>
To: Xen-devel <xen-devel@lists.xenproject.org>
CC: Andrew Cooper <andrew.cooper3@citrix.com>, Jan Beulich
	<JBeulich@suse.com>, =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?=
	<roger.pau@citrix.com>, Wei Liu <wl@xen.org>, Oleksii Kurochko
	<oleksii.kurochko@gmail.com>
Subject: [PATCH 0/2] Remove gdbstub and debugger infrastructure
Date: Fri, 26 Jan 2024 20:54:16 +0000
Message-ID: <20240126205418.3587177-1-andrew.cooper3@citrix.com>
X-Mailer: git-send-email 2.30.2
MIME-Version: 1.0
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit

See patches for details.  This is to help the efforts to clean up the IRQ
infrastructure.

Andrew Cooper (2):
  x86: Remove gdbstub
  xen: Remove debugger.h

 CHANGELOG.md                        |   1 +
 docs/misc/xen-command-line.pandoc   |   7 -
 xen/Kconfig.debug                   |   7 -
 xen/arch/x86/Makefile               |   1 -
 xen/arch/x86/gdbstub.c              |  91 ----
 xen/arch/x86/include/asm/bug.h      |  20 -
 xen/arch/x86/include/asm/debugger.h |  30 --
 xen/arch/x86/traps.c                |  30 +-
 xen/arch/x86/x86_64/Makefile        |   2 -
 xen/arch/x86/x86_64/gdbstub.c       | 150 ------
 xen/common/Makefile                 |   1 -
 xen/common/bug.c                    |  27 -
 xen/common/gdbstub.c                | 748 ----------------------------
 xen/common/keyhandler.c             |  22 +-
 xen/common/shutdown.c               |   2 -
 xen/drivers/char/console.c          |   3 -
 xen/include/xen/bug.h               |   4 -
 xen/include/xen/debugger.h          |  44 --
 xen/include/xen/gdbstub.h           | 103 ----
 19 files changed, 6 insertions(+), 1287 deletions(-)
 delete mode 100644 xen/arch/x86/gdbstub.c
 delete mode 100644 xen/arch/x86/include/asm/debugger.h
 delete mode 100644 xen/arch/x86/x86_64/gdbstub.c
 delete mode 100644 xen/common/gdbstub.c
 delete mode 100644 xen/include/xen/debugger.h
 delete mode 100644 xen/include/xen/gdbstub.h


base-commit: c378ff8983cd69786c35117e49640f027e581bca
-- 
2.30.2



From xen-devel-bounces@lists.xenproject.org Fri Jan 26 20:54:44 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 26 Jan 2024 20:54:44 +0000
Received: from list by lists.xenproject.org with outflank-mailman.672501.1046586 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTTDj-0000NU-VX; Fri, 26 Jan 2024 20:54:39 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 672501.1046586; Fri, 26 Jan 2024 20:54:39 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTTDj-0000NN-QY; Fri, 26 Jan 2024 20:54:39 +0000
Received: by outflank-mailman (input) for mailman id 672501;
 Fri, 26 Jan 2024 20:54:39 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=gD8/=JE=citrix.com=prvs=748d50c66=Andrew.Cooper3@srs-se1.protection.inumbo.net>)
 id 1rTTDi-0000Mm-T7
 for xen-devel@lists.xenproject.org; Fri, 26 Jan 2024 20:54:39 +0000
Received: from esa5.hc3370-68.iphmx.com (esa5.hc3370-68.iphmx.com
 [216.71.155.168]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 1c50c1eb-bc8d-11ee-98f5-efadbce2ee36;
 Fri, 26 Jan 2024 21:54:35 +0100 (CET)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 1c50c1eb-bc8d-11ee-98f5-efadbce2ee36
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple;
  d=citrix.com; s=securemail; t=1706302475;
  h=from:to:cc:subject:date:message-id:in-reply-to:
   references:mime-version:content-transfer-encoding;
  bh=YgJTxoPk/8SnLTcVM5dSngcyjid+DLHSFQzqgZ/acuc=;
  b=M1OLByhyJ+OAWYuN+FgNuhPS1iqUUZyPNGIku5FLvJoLbm3s5axKFBK9
   KWsVJWOnrGejk+3Qrw0MO+LVKYuM8pbvNTUAGwkxQSuTpQx+YPcUVVGTZ
   r4Yby63F3Rs03lCG6cZdkYYvvon0Pze3aUEOZh/d2VZMzVxBOu/h0NWFB
   4=;
X-CSE-ConnectionGUID: iFRVMXhCS7e2sdKvpcNc6g==
X-CSE-MsgGUID: BBW5m3kyTGqOBu2HYP744w==
Authentication-Results: esa5.hc3370-68.iphmx.com; dkim=none (message not signed) header.i=none
X-SBRS: 4.0
X-MesageID: 128269106
X-Ironport-Server: esa5.hc3370-68.iphmx.com
X-Remote-IP: 162.221.159.70
X-Policy: $RELAYED
X-ThreatScanner-Verdict: Negative
IronPort-Data: A9a23:OaGffq6fsO8/UIEBtzmArQxRtGHHchMFZxGqfqrLsTDasY5as4F+v
 jBKWW6FMqqDamqme413Ot7jpkoE6JDSzd5rTVRoqSs1Hi5G8cbLO4+Ufxz6V8+wwm8vb2o8t
 plDNYOQRCwQZiWBzvt4GuG59RGQ7YnRG/ykTraCY3gtLeNdYH9JoQp5nOIkiZJfj9G8Agec0
 fv/uMSaM1K+s9JOGjt8B5mr9lU34ZwehBtC5gZiPakR4AeH/5UoJMl3yZ+ZfiOQrrZ8RoZWd
 86bpJml82XQ+QsaC9/Nut4XpWVTH9Y+lSDX4pZnc/DKbipq/0Te4Y5iXBYoUm9Fii3hojxE4
 I4lWapc6+seFvakdOw1C3G0GszlVEFM0OevzXOX6aR/w6BaGpdFLjoH4EweZOUlFuhL7W5m9
 NIiFhU9bju42O/s276YVPFnoM99I5y+VG8fkikIITDxCP8nRdbIQrnQ5M8e1zA17ixMNa+AP
 YxDM2MpNUmRJUIXUrsUIMtWcOOAr3/zaTBH7nmSorI6+TP7xw1tyrn9dtHSf7RmQO0MxBbC+
 DOfpzqR7hcyHvaglD/e8WOQqfbotz6heLMqS+Hk6as/6LGU7jNKU0BHPbehmtGph0j7V99BJ
 kg8/is1sbN05EGtVsP6XRCzvDiDpBF0c/h6HvA+6QqN4rHJ+AvfDW8BJhZebPQ2uclwQiYlv
 neOm97qHj1u9r6IU3WW9rSThTy3MCkRa2QFYEc5oRAtuoe55ttp11SWE4clT/bdYsDJ9S/Yw
 h6wkg0Oh54o0sNRzKmY40jMpTnyqc2cJuIq3Tk7Tl5J/ysgO9b7PdP0sgGGhcusOrp1WbVog
 ZTlpyR9xLpXZX11vHbRKNjh5Znwjxp/DBXSgER0A74q/Cm39niocOh4uW4meh04bppdKGS4P
 yc/XD+9A7cKYhOXgVJfOdrtW6zGM4C+fTgaahwkRoUXOcUgHON21CpveVSRzwjQraTYqolmY
 c3zWZ/1XR4n5VFPkGLeqxE1jeV6mUjTBAr7GfjG8vhQ+ePENSHME+lcbTNjrIkRtcu5nekcy
 P4HX+Pi9vmVeLSWjvX/mWLLEW03EA==
IronPort-HdrOrdr: A9a23:D3pPOqiL5ndSpDRg4iB2BGsVJnBQXuIji2hC6mlwRA09TySZ//
 rBoB19726MtN9xYgBHpTnuAsm9qB/nmaKdpLNhWItKPzOW31dATrsSjrcKqgeIc0aVm9K1l5
 0QF5SWYOeAdWSS5vya3ODXKbkdKaG8gcKVuds=
X-Talos-CUID: =?us-ascii?q?9a23=3AnBvRvGu96BV6utO4GRyIXm/E6IskXEfj6UfQCHT?=
 =?us-ascii?q?nBDxyRJ6LUVS28/1rxp8=3D?=
X-Talos-MUID: 9a23:ngWxVATZtX0f+BSGRXTGrg4/MZxr8piBEWcnjM8mivHbaXBvbmI=
X-IronPort-AV: E=Sophos;i="6.05,216,1701147600"; 
   d="scan'208";a="128269106"
From: Andrew Cooper <andrew.cooper3@citrix.com>
To: Xen-devel <xen-devel@lists.xenproject.org>
CC: Andrew Cooper <andrew.cooper3@citrix.com>, Jan Beulich
	<JBeulich@suse.com>, =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?=
	<roger.pau@citrix.com>, Wei Liu <wl@xen.org>, Oleksii Kurochko
	<oleksii.kurochko@gmail.com>
Subject: [PATCH 1/2] x86: Remove gdbstub
Date: Fri, 26 Jan 2024 20:54:17 +0000
Message-ID: <20240126205418.3587177-2-andrew.cooper3@citrix.com>
X-Mailer: git-send-email 2.30.2
In-Reply-To: <20240126205418.3587177-1-andrew.cooper3@citrix.com>
References: <20240126205418.3587177-1-andrew.cooper3@citrix.com>
MIME-Version: 1.0
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit

In 13y of working on Xen, I've never seen seen it used.  The implementation
was introduced (commit b69f92f3012e, Jul 28 2004) with known issues such as:

  /* Resuming after we've stopped used to work, but more through luck
     than any actual intention.  It doesn't at the moment. */

which appear to have gone unfixed for the 20 years since.

Nowadays there are more robust ways of inspecting crashed state, such as a
kexec crash kernel, or running Xen in a VM.

This will allow us to clean up some hooks around the codebase which are
proving awkward for other tasks.

Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
---
CC: Jan Beulich <JBeulich@suse.com>
CC: Roger Pau Monné <roger.pau@citrix.com>
CC: Wei Liu <wl@xen.org>
CC: Oleksii Kurochko <oleksii.kurochko@gmail.com>

Bloat-o-meter really likes this change.

add/remove: 1/31 grow/shrink: 2/15 up/down: 113/-17033 (-16920)
Function                                     old     new   delta
hwdom_shutdown                               101     176     +75
do_int3.cold                                   -      27     +27
do_bug_frame                                 566     577     +11
panic.cold                                    98      97      -1
gdb_arch_print_state                           1       -      -1
gdb_arch_exit                                  1       -      -1
gdb_arch_enter                                 1       -      -1
do_page_fault.cold                            55      53      -2
gdb_smp_paused_count                           4       -      -4
__setup_str_opt_gdb                            4       -      -4
gdb_arch_copy_to_user                          5       -      -5
gdb_arch_copy_from_user                        5       -      -5
gdb_arch_signal_num                            6       -      -6
xen_config_data                             1280    1273      -7
__initcall_initialise_gdb                      8       -      -8
do_debugger_trap_fatal                        15       5     -10
do_debug_key                                  48      35     -13
gdb_arch_write_reg_array                      15       -     -15
gdb_send_packet.cold                          16       -     -16
do_debug                                     457     441     -16
do_trap                                      213     194     -19
do_int3                                      251     230     -21
do_invalid_op                                331     307     -24
__setup_opt_gdb                               24       -     -24
opt_gdb                                       30       -     -30
do_unhandled_trap                             38       7     -31
cpumask_first.constprop                      138     104     -34
cpumask_next.constprop                       174     129     -45
gdb_arch_resume                               52       -     -52
char2hex                                      58       -     -58
do_page_fault                               1820    1752     -68
gdb_write_to_packet                           69       -     -69
do_general_protection                        542     471     -71
initialise_gdb                                81       -     -81
gdb_write_to_packet_str                       86       -     -86
do_bug_frame.cold                            131      39     -92
gdb_send_reply                               110       -    -110
hwdom_shutdown.cold                          140       -    -140
gdb_pause_this_cpu                           159       -    -159
gdb_write_to_packet_hex                      200       -    -200
gdb_send_packet                              216       -    -216
gdbstub_console_puts                         220       -    -220
__trap_to_gdb.cold                           313       -    -313
gdb_arch_read_reg_array                      451       -    -451
gdb_arch_write_reg                           585       -    -585
gdb_arch_read_reg                            883       -    -883
gdb_cpu                                     2048       -   -2048
__trap_to_gdb                               2540       -   -2540
__gdb_ctx                                   8248       -   -8248
Total: Before=4081568, After=4064648, chg -0.41%
---
 CHANGELOG.md                      |   1 +
 docs/misc/xen-command-line.pandoc |   7 -
 xen/Kconfig.debug                 |   7 -
 xen/arch/x86/Makefile             |   1 -
 xen/arch/x86/gdbstub.c            |  91 ----
 xen/arch/x86/x86_64/Makefile      |   2 -
 xen/arch/x86/x86_64/gdbstub.c     | 150 ------
 xen/common/Makefile               |   1 -
 xen/common/gdbstub.c              | 748 ------------------------------
 xen/include/xen/gdbstub.h         | 103 ----
 10 files changed, 1 insertion(+), 1110 deletions(-)
 delete mode 100644 xen/arch/x86/gdbstub.c
 delete mode 100644 xen/arch/x86/x86_64/gdbstub.c
 delete mode 100644 xen/common/gdbstub.c
 delete mode 100644 xen/include/xen/gdbstub.h

diff --git a/CHANGELOG.md b/CHANGELOG.md
index ddb3ab8db4e7..e357b64546d8 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -23,6 +23,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/)
 - /usr/bin/pygrub symlink.  This was deprecated in Xen 4.2 (2012) but left for
   compatibility reasons.  VMs configured with bootloader="/usr/bin/pygrub"
   should be updated to just bootloader="pygrub".
+- The Xen gdbstub on x86.
 
 ## [4.18.0](https://xenbits.xenproject.org/gitweb/?p=xen.git;a=shortlog;h=RELEASE-4.18.0) - 2023-11-16
 
diff --git a/docs/misc/xen-command-line.pandoc b/docs/misc/xen-command-line.pandoc
index 8e65f8bd18bf..be76be8d5365 100644
--- a/docs/misc/xen-command-line.pandoc
+++ b/docs/misc/xen-command-line.pandoc
@@ -1242,13 +1242,6 @@ requirement can be relaxed.  This option is particularly useful for nested
 virtualization, to allow the L1 hypervisor to use EPT even if the L0 hypervisor
 does not provide `VM_ENTRY_LOAD_GUEST_PAT`.
 
-### gdb
-> `= com1[H,L] | com2[H,L] | dbgp`
-
-> Default: ``
-
-Specify which console gdbstub should use. See **console**.
-
 ### gnttab
 > `= List of [ max-ver:<integer>, transitive=<bool>, transfer=<bool> ]`
 
diff --git a/xen/Kconfig.debug b/xen/Kconfig.debug
index e19e9d48817c..fa81853e9385 100644
--- a/xen/Kconfig.debug
+++ b/xen/Kconfig.debug
@@ -13,13 +13,6 @@ config DEBUG
 
 if DEBUG || EXPERT
 
-config CRASH_DEBUG
-	bool "Crash Debugging Support"
-	depends on X86
-	---help---
-	  If you want to attach gdb to Xen to debug Xen if it crashes
-	  then say Y.
-
 config GDBSX
 	bool "Guest debugging with gdbsx"
 	depends on X86
diff --git a/xen/arch/x86/Makefile b/xen/arch/x86/Makefile
index 9f326b9e32e3..26d87405297b 100644
--- a/xen/arch/x86/Makefile
+++ b/xen/arch/x86/Makefile
@@ -35,7 +35,6 @@ obj-y += e820.o
 obj-y += emul-i8254.o
 obj-y += extable.o
 obj-y += flushtlb.o
-obj-$(CONFIG_CRASH_DEBUG) += gdbstub.o
 obj-$(CONFIG_GDBSX) += gdbsx.o
 obj-y += hypercall.o
 obj-y += i387.o
diff --git a/xen/arch/x86/gdbstub.c b/xen/arch/x86/gdbstub.c
deleted file mode 100644
index 961cae0be74f..000000000000
--- a/xen/arch/x86/gdbstub.c
+++ /dev/null
@@ -1,91 +0,0 @@
-/*
- * x86-specific gdb stub routines
- * based on x86 cdb(xen/arch/x86/cdb.c), but Extensively modified.
- * 
- * Copyright (C) 2006 Isaku Yamahata <yamahata at valinux co jp>
- *                    VA Linux Systems Japan. K.K.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- * 
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- * 
- * You should have received a copy of the GNU General Public License
- * along with this program; If not, see <http://www.gnu.org/licenses/>.
- */
-#include <asm/uaccess.h>
-#include <asm/x86-defns.h>
-
-#include <xen/gdbstub.h>
-
-u16
-gdb_arch_signal_num(struct cpu_user_regs *regs, unsigned long cookie)
-{
-    return 5;   /* TRAP signal.  see include/gdb/signals.h */
-}
-
-/*
- * Use __copy_*_user to make us page-fault safe, but not otherwise restrict
- * our access to the full virtual address space.
- */
-unsigned int
-gdb_arch_copy_from_user(void *dest, const void *src, unsigned len)
-{
-    return copy_from_unsafe(dest, src, len);
-}
-
-unsigned int 
-gdb_arch_copy_to_user(void *dest, const void *src, unsigned len)
-{
-    return copy_to_unsafe(dest, src, len);
-}
-
-void
-gdb_arch_print_state(struct cpu_user_regs *regs)
-{
-    /* XXX */
-}
-
-void
-gdb_arch_enter(struct cpu_user_regs *regs)
-{
-    /* nothing */
-}
-
-void
-gdb_arch_exit(struct cpu_user_regs *regs)
-{
-    /* nothing */
-}
-
-void 
-gdb_arch_resume(struct cpu_user_regs *regs,
-                unsigned long addr, unsigned long type,
-                struct gdb_context *ctx)
-{
-    if ( addr != -1UL )
-        regs->rip = addr;
-
-    regs->eflags &= ~X86_EFLAGS_TF;
-
-    /* Set eflags.RF to ensure we do not re-enter. */
-    regs->eflags |= X86_EFLAGS_RF;
-
-    /* Set the trap flag if we are single stepping. */
-    if ( type == GDB_STEP )
-        regs->eflags |= X86_EFLAGS_TF;
-}
-
-/*
- * Local variables:
- * mode: C
- * c-file-style: "BSD"
- * c-basic-offset: 4
- * tab-width: 4
- * End:
- */
diff --git a/xen/arch/x86/x86_64/Makefile b/xen/arch/x86/x86_64/Makefile
index 213b789c4247..472b2bab523d 100644
--- a/xen/arch/x86/x86_64/Makefile
+++ b/xen/arch/x86/x86_64/Makefile
@@ -12,5 +12,3 @@ obj-$(CONFIG_COMPAT) += domain.o
 obj-$(CONFIG_COMPAT) += cpu_idle.o
 obj-$(CONFIG_COMPAT) += cpufreq.o
 obj-bin-$(CONFIG_KEXEC) += kexec_reloc.o
-
-obj-$(CONFIG_CRASH_DEBUG)   += gdbstub.o
diff --git a/xen/arch/x86/x86_64/gdbstub.c b/xen/arch/x86/x86_64/gdbstub.c
deleted file mode 100644
index 8287124dfb1d..000000000000
--- a/xen/arch/x86/x86_64/gdbstub.c
+++ /dev/null
@@ -1,150 +0,0 @@
-/*
- * x86_64 -specific gdb stub routines
- * 
- * Copyright (C) 2007 Dan Doucette   ddoucette@teradici.com
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- * 
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- * 
- * You should have received a copy of the GNU General Public License
- * along with this program; If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include <xen/gdbstub.h>
-
-#define GDB_REG64(r) gdb_write_to_packet_hex(r, sizeof(u64), ctx)
-#define GDB_REG32(r)  gdb_write_to_packet_hex(r, sizeof(u32), ctx)
-
-void 
-gdb_arch_read_reg_array(struct cpu_user_regs *regs, struct gdb_context *ctx)
-{
-    GDB_REG64(regs->rax);
-    GDB_REG64(regs->rbx);
-    GDB_REG64(regs->rcx);
-    GDB_REG64(regs->rdx);
-    GDB_REG64(regs->rsi);
-    GDB_REG64(regs->rdi);
-    GDB_REG64(regs->rbp);
-    GDB_REG64(regs->rsp);
-
-    GDB_REG64(regs->r8);
-    GDB_REG64(regs->r9);
-    GDB_REG64(regs->r10);
-    GDB_REG64(regs->r11);
-    GDB_REG64(regs->r12);
-    GDB_REG64(regs->r13);
-    GDB_REG64(regs->r14);
-    GDB_REG64(regs->r15);
-
-    GDB_REG64(regs->rip);
-    GDB_REG32(regs->eflags);
-
-    GDB_REG32(regs->cs);
-    GDB_REG32(regs->ss);
-    GDB_REG32(regs->ds);
-    GDB_REG32(regs->es);
-    GDB_REG32(regs->fs);
-    GDB_REG32(regs->gs);
-
-    gdb_send_packet(ctx);
-}
-
-void 
-gdb_arch_write_reg_array(struct cpu_user_regs *regs, const char* buf,
-                         struct gdb_context *ctx)
-{
-    gdb_send_reply("", ctx);
-}
-
-void 
-gdb_arch_read_reg(unsigned long regnum, struct cpu_user_regs *regs,
-                  struct gdb_context *ctx)
-{
-    switch (regnum)
-    {
-        case 0: GDB_REG64(regs->rax); break;
-        case 1: GDB_REG64(regs->rbx); break;
-        case 2: GDB_REG64(regs->rcx); break;
-        case 3: GDB_REG64(regs->rdx); break;
-        case 4: GDB_REG64(regs->rsi); break;
-        case 5: GDB_REG64(regs->rdi); break;
-        case 6: GDB_REG64(regs->rbp); break;
-        case 7: GDB_REG64(regs->rsp); break;
-
-        case 8: GDB_REG64(regs->r8); break;
-        case 9: GDB_REG64(regs->r9); break;
-        case 10: GDB_REG64(regs->r10); break;
-        case 11: GDB_REG64(regs->r11); break;
-        case 12: GDB_REG64(regs->r12); break;
-        case 13: GDB_REG64(regs->r13); break;
-        case 14: GDB_REG64(regs->r14); break;
-        case 15: GDB_REG64(regs->r15); break;
-
-        case 16: GDB_REG64(regs->rip); break;
-        case 17: GDB_REG32(regs->rflags); break;
-        case 18: GDB_REG32(regs->cs); break;
-        case 19: GDB_REG32(regs->ss); break;
-        case 20: GDB_REG32(regs->ds); break;
-        case 21: GDB_REG32(regs->es); break;
-        case 22: GDB_REG32(regs->fs); break;
-        case 23: GDB_REG32(regs->gs); break;
-        default:
-            GDB_REG64(0xbaadf00ddeadbeef);
-            break;
-    }
-    gdb_send_packet(ctx);
-}
-
-void 
-gdb_arch_write_reg(unsigned long regnum, unsigned long val, 
-                    struct cpu_user_regs *regs, struct gdb_context *ctx)
-{
-    switch (regnum)
-    {
-        case 0: regs->rax = val; break;
-        case 1: regs->rbx = val; break;
-        case 2: regs->rcx = val; break;
-        case 3: regs->rdx = val; break;
-        case 4: regs->rsi = val; break;
-        case 5: regs->rdi = val; break;
-        case 6: regs->rbp = val; break;
-        case 7: regs->rsp = val; break;
-
-        case 8: regs->r8 = val; break;
-        case 9: regs->r9 = val; break;
-        case 10: regs->r10 = val; break;
-        case 11: regs->r11 = val; break;
-        case 12: regs->r12 = val; break;
-        case 13: regs->r13 = val; break;
-        case 14: regs->r14 = val; break;
-        case 15: regs->r15 = val; break;
-
-        case 16: regs->rip = val; break;
-        case 17: regs->rflags = (u32)val; break;
-        case 18: regs->cs = (u16)val; break;
-        case 19: regs->ss = (u16)val; break;
-        case 20: regs->ds = (u16)val; break;
-        case 21: regs->es = (u16)val; break;
-        case 22: regs->fs = (u16)val; break;
-        case 23: regs->gs = (u16)val; break;
-        default:
-            break;
-    }
-    gdb_send_reply("OK", ctx);
-}
-
-/*
- * Local variables:
- * mode: C
- * c-file-style: "BSD"
- * c-basic-offset: 4
- * tab-width: 4
- * End:
- */
diff --git a/xen/common/Makefile b/xen/common/Makefile
index 69d6aa626c7f..e5eee19a8537 100644
--- a/xen/common/Makefile
+++ b/xen/common/Makefile
@@ -12,7 +12,6 @@ obj-$(CONFIG_OVERLAY_DTB) += dt-overlay.o
 obj-y += event_2l.o
 obj-y += event_channel.o
 obj-y += event_fifo.o
-obj-$(CONFIG_CRASH_DEBUG) += gdbstub.o
 obj-$(CONFIG_GRANT_TABLE) += grant_table.o
 obj-y += guestcopy.o
 obj-bin-y += gunzip.init.o
diff --git a/xen/common/gdbstub.c b/xen/common/gdbstub.c
deleted file mode 100644
index df8d122bce8d..000000000000
--- a/xen/common/gdbstub.c
+++ /dev/null
@@ -1,748 +0,0 @@
-/*
- * Copyright (C) 2005 Jimi Xenidis <jimix@watson.ibm.com>, IBM Corporation
- * Copyright (C) 2006 Isaku Yamahata <yamahata at valinux co jp>
- *                    VA Linux Systems Japan. K.K.
- * 
- * gdbstub arch neutral part
- * Based on x86 cdb (xen/arch/x86/cdb.c) and ppc gdbstub(xen/common/gdbstub.c)
- * But extensively modified.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- * 
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- * 
- * You should have received a copy of the GNU General Public License
- * along with this program; If not, see <http://www.gnu.org/licenses/>.
- */
-
-/*
- * gdbstub: implements the architecture independant parts of the
- * gdb remote protocol.
- */
-
-/* We try to avoid assuming much about what the rest of the system is
-   doing.  In particular, dynamic memory allocation is out of the
-   question. */
-
-/* Resuming after we've stopped used to work, but more through luck
-   than any actual intention.  It doesn't at the moment. */
-
-#include <xen/lib.h>
-#include <xen/spinlock.h>
-#include <xen/serial.h>
-#include <xen/irq.h>
-#include <xen/watchdog.h>
-#include <xen/init.h>
-#include <xen/param.h>
-#include <xen/smp.h>
-#include <xen/console.h>
-#include <xen/errno.h>
-#include <xen/delay.h>
-#include <xen/gdbstub.h>
-
-#include <asm/byteorder.h>
-
-/* Printk isn't particularly safe just after we've trapped to the
-   debugger. so avoid it. */
-#define dbg_printk(...)
-/*#define dbg_printk(...)   printk(__VA_ARGS__)*/
-
-#define GDB_RETRY_MAX   10
-
-struct gdb_cpu_info
-{
-    atomic_t paused;
-    atomic_t ack;
-};
-
-static struct gdb_cpu_info gdb_cpu[NR_CPUS];
-static atomic_t gdb_smp_paused_count;
-
-static void gdb_smp_pause(void);
-static void gdb_smp_resume(void);
-
-static char __initdata opt_gdb[30];
-string_param("gdb", opt_gdb);
-
-static void cf_check gdbstub_console_puts(const char *str, size_t nr);
-
-/* value <-> char (de)serialzers */
-static char
-hex2char(unsigned long x)
-{
-    const char array[] = "0123456789abcdef";
-    return array[x & 15];
-}
-
-static unsigned int
-char2hex(unsigned char c)
-{
-    if ( (c >= '0') && (c <= '9') )
-        return c - '0';
-    else if ( (c >= 'a') && (c <= 'f') )
-        return c - 'a' + 10;
-    else if ( (c >= 'A') && (c <= 'F') )
-        return c - 'A' + 10;
-    else
-        BUG();
-    return -1;
-}
-
-static unsigned char
-str2hex(const char *str)
-{
-    return (char2hex(str[0]) << 4) | char2hex(str[1]);
-}
-
-static unsigned long
-str2ulong(const char *str, unsigned long bytes)
-{
-    unsigned long x = 0;
-    unsigned long i = 0;
-
-    while ( *str && (i < (bytes * 2)) )
-    {
-        x <<= 4;
-        x += char2hex(*str);
-        ++str;
-        ++i;
-    }
-
-    return x;
-}
-
-static unsigned long
-str_to_native_ulong(const char *str)
-{
-    unsigned long x = 0, i = 0;
-
-    while ( *str && (i < BYTES_PER_LONG) )
-    {
-#ifdef __BIG_ENDIAN
-        x <<= 8;
-        x += str2hex(str);
-#elif defined(__LITTLE_ENDIAN)
-        x += (unsigned long)str2hex(str) << (i*8);
-#else
-# error unknown endian
-#endif
-        str += 2;
-        i++;
-    }
-
-    return x;
-}
-
-/* gdb io wrappers */
-static signed long
-gdb_io_write(const char *buf, unsigned long len, struct gdb_context *ctx)
-{
-    int i;
-    for ( i = 0; i < len; i++ )
-        serial_putc(ctx->serhnd, buf[i]);
-    return i;
-}
-
-static int
-gdb_io_write_char(u8 data, struct gdb_context *ctx)
-{
-    return gdb_io_write((char*)&data, 1, ctx);
-}
-
-static unsigned char
-gdb_io_read(struct gdb_context *ctx)
-{
-    return serial_getc(ctx->serhnd);
-}
-
-/* Receive a command.  Returns -1 on csum error, 0 otherwise. */
-/* Does not acknowledge. */
-static int 
-attempt_receive_packet(struct gdb_context *ctx)
-{
-    u8 csum;
-    u8 received_csum;
-    u8 ch;
-
-    /* Skip over everything up to the first '$' */
-    while ( (ch = gdb_io_read(ctx)) != '$' )
-        continue;
-
-    csum = 0;
-    for ( ctx->in_bytes = 0;
-          ctx->in_bytes < sizeof(ctx->in_buf);
-          ctx->in_bytes++ )
-    {
-        ch = gdb_io_read(ctx);
-        if ( ch == '#' )
-            break;
-        ctx->in_buf[ctx->in_bytes] = ch;
-        csum += ch;
-    }
-
-    if ( ctx->in_bytes == sizeof(ctx->in_buf) )
-    {
-        dbg_printk("WARNING: GDB sent a stupidly big packet.\n");
-        return -1;
-    }
-
-    ctx->in_buf[ctx->in_bytes] = '\0';
-    received_csum = char2hex(gdb_io_read(ctx)) * 16 +
-        char2hex(gdb_io_read(ctx));
-
-    return (received_csum == csum) ? 0 : -1;
-}
-
-/* Receive a command, discarding up to ten packets with csum
- * errors.  Acknowledges all received packets. */
-static int 
-receive_command(struct gdb_context *ctx)
-{
-    int r, count = 0;
-
-    count = 0;
-    do {
-        r = attempt_receive_packet(ctx);
-        gdb_io_write_char((r < 0) ? '-' : '+', ctx);
-        count++;
-    } while ( (r < 0) && (count < GDB_RETRY_MAX) );
-
-    return r;
-}
-
-/* routines to send reply packets */
-
-static void 
-gdb_start_packet(struct gdb_context *ctx)
-{
-    ctx->out_buf[0] = '$';
-    ctx->out_offset = 1;
-    ctx->out_csum = 0;
-}
-
-static void 
-gdb_write_to_packet_char(u8 data, struct gdb_context *ctx)
-{
-    ctx->out_csum += data;
-    ctx->out_buf[ctx->out_offset] = data;
-    ctx->out_offset++;
-}
-
-void 
-gdb_write_to_packet(const char *buf, int count, struct gdb_context *ctx)
-{
-    int x;
-    for ( x = 0; x < count; x++ )
-        gdb_write_to_packet_char(buf[x], ctx);
-}
-
-void 
-gdb_write_to_packet_str(const char *buf, struct gdb_context *ctx)
-{
-    gdb_write_to_packet(buf, strlen(buf), ctx);
-}
-
-void
-gdb_write_to_packet_hex(unsigned long x, int int_size, struct gdb_context *ctx)
-{
-    char buf[sizeof(unsigned long) * 2 + 1];
-    int i, width = int_size * 2;
-
-    buf[sizeof(unsigned long) * 2] = 0;
-
-    switch ( int_size )
-    {
-    case sizeof(u8):
-    case sizeof(u16):
-    case sizeof(u32):
-    case sizeof(u64):
-        break;
-    default:
-        dbg_printk("WARNING: %s x: %#lx int_size: %d\n",
-                   __func__, x, int_size);
-        break;
-    }
-
-#ifdef __BIG_ENDIAN
-    i = sizeof(unsigned long) * 2
-    do {
-        buf[--i] = hex2char(x & 15);
-        x >>= 4;
-    } while ( x );
-
-    while ( (i + width) > (sizeof(unsigned long) * 2) )
-        buf[--i] = '0';
-
-    gdb_write_to_packet(&buf[i], width, ctx);
-#elif defined(__LITTLE_ENDIAN)
-    i = 0;
-    while ( i < width )
-    {
-        buf[i++] = hex2char(x>>4);
-        buf[i++] = hex2char(x);
-        x >>= 8;
-    }
-    gdb_write_to_packet(buf, width, ctx);
-#else
-# error unknown endian
-#endif
-}
-
-static int
-gdb_check_ack(struct gdb_context *ctx)
-{
-    u8 c = gdb_io_read(ctx);
-
-    switch ( c )
-    {
-    case '+':
-        return 1;
-    case '-':
-        return 0;
-    default:
-        printk("Bad ack: %c\n", c);
-        return 0;
-    }
-}
-
-/* Return 0 if the reply was successfully received, !0 otherwise. */
-void 
-gdb_send_packet(struct gdb_context *ctx)
-{
-    char buf[3];
-    int count;
-
-    snprintf(buf, sizeof(buf), "%.02x\n", ctx->out_csum);
-
-    gdb_write_to_packet_char('#', ctx);
-    gdb_write_to_packet(buf, 2, ctx);
-
-    count = 0;
-    do {
-        gdb_io_write(ctx->out_buf, ctx->out_offset, ctx);
-    } while ( !gdb_check_ack(ctx) && (count++ < GDB_RETRY_MAX) );
-
-    if ( count == GDB_RETRY_MAX )
-        dbg_printk("WARNING: %s reached max retry %d\n",
-                   __func__, GDB_RETRY_MAX);
-}
-
-void 
-gdb_send_reply(const char *buf, struct gdb_context *ctx)
-{
-    gdb_start_packet(ctx);
-    gdb_write_to_packet_str(buf, ctx);
-    gdb_send_packet(ctx);
-}
-
-/* arch neutral command handlers */
-
-static void 
-gdb_cmd_signum(struct gdb_context *ctx)
-{
-    gdb_write_to_packet_char('S', ctx);
-    gdb_write_to_packet_hex(ctx->signum, sizeof(ctx->signum), ctx);
-    gdb_send_packet(ctx);
-}
-
-static void 
-gdb_cmd_read_mem(unsigned long addr, unsigned long length,
-                 struct gdb_context *ctx)
-{
-    int x, r;
-    unsigned char val;
-
-    dbg_printk("Memory read starting at %lx, length %lx.\n", addr,
-               length);
-
-    for ( x = 0; x < length; x++ )
-    {
-        r = gdb_arch_copy_from_user(&val, (void *)(addr + x), 1);
-        if ( r != 0 )
-        {
-            dbg_printk("Error reading from %lx.\n", addr + x);
-            break;
-        }
-        gdb_write_to_packet_hex(val, sizeof(val), ctx);
-    }
-
-    if ( x == 0 )
-        gdb_write_to_packet_str("E05", ctx);
-
-    dbg_printk("Read done.\n");
-
-    gdb_send_packet(ctx);
-}
-
-static void 
-gdb_cmd_write_mem(unsigned long addr, unsigned long length,
-                  const char *buf, struct gdb_context *ctx)
-{
-    int x, r;
-    unsigned char val;
-
-    dbg_printk("Memory write starting at %lx, length %lx.\n", addr, length);
-
-    for ( x = 0; x < length; x++, addr++, buf += 2 )
-    {
-        val = str2ulong(buf, sizeof(val));
-        r = gdb_arch_copy_to_user((void*)addr, (void*)&val, 1);
-        if ( r != 0 )
-        {
-            dbg_printk("Error writing to %lx.\n", addr);
-            break;
-        }
-    }
-
-    if (x == length)
-        gdb_write_to_packet_str("OK", ctx);
-    else
-        gdb_write_to_packet_str("E11", ctx);
-
-    dbg_printk("Write done.\n");
-
-    gdb_send_packet(ctx);
-}
-
-static void
-gdbstub_attach(struct gdb_context *ctx)
-{
-    if ( ctx->currently_attached )
-        return;    
-    ctx->currently_attached = 1;
-    ctx->console_steal_id = console_steal(ctx->serhnd, gdbstub_console_puts);
-}
-
-static void
-gdbstub_detach(struct gdb_context *ctx)
-{
-    if ( !ctx->currently_attached )
-        return;
-    ctx->currently_attached = 0;
-    console_giveback(ctx->console_steal_id);
-}
-
-/* command dispatcher */
-static int 
-process_command(struct cpu_user_regs *regs, struct gdb_context *ctx)
-{
-    const char *ptr;
-    unsigned long addr, length, val;
-    int resume = 0;
-    unsigned long type = GDB_CONTINUE;
-
-    /* XXX check ctx->in_bytes >= 2 or similar. */
-
-    gdb_start_packet(ctx);
-    switch ( ctx->in_buf[0] )
-    {
-    case '?':    /* query signal number */
-        gdb_cmd_signum(ctx);
-        break;
-    case 'H':    /* thread operations */
-        gdb_send_reply("OK", ctx);
-        break;
-    case 'g': /* Read registers */
-        gdb_arch_read_reg_array(regs, ctx);
-        break;
-    case 'G': /* Write registers */
-        gdb_arch_write_reg_array(regs, ctx->in_buf + 1, ctx);
-        break;
-    case 'm': /* Read memory */
-        addr = simple_strtoul(ctx->in_buf + 1, &ptr, 16);
-        if ( (ptr == (ctx->in_buf + 1)) || (ptr[0] != ',') )
-        {
-            gdb_send_reply("E03", ctx);
-            return 0;
-        }
-        length = simple_strtoul(ptr + 1, &ptr, 16);
-        if ( ptr[0] != 0 )
-        {
-            gdb_send_reply("E04", ctx);
-            return 0;
-        }
-        gdb_cmd_read_mem(addr, length, ctx);
-        break;
-    case 'M': /* Write memory */
-        addr = simple_strtoul(ctx->in_buf + 1, &ptr, 16);
-        if ( (ptr == (ctx->in_buf + 1)) || (ptr[0] != ',') )
-        {
-            gdb_send_reply("E03", ctx);
-            return 0;
-        }
-        length = simple_strtoul(ptr + 1, &ptr, 16);
-        if ( ptr[0] != ':')
-        {
-            gdb_send_reply("E04", ctx);
-            return 0;
-        }
-        gdb_cmd_write_mem(addr, length, ptr + 1, ctx);
-        break;
-    case 'p': /* read register */
-        addr = simple_strtoul(ctx->in_buf + 1, &ptr, 16);
-        if ( ptr == (ctx->in_buf + 1) )
-        {
-            gdb_send_reply("E03", ctx);
-            return 0;
-        }
-        if ( ptr[0] != 0 )
-        {
-            gdb_send_reply("E04", ctx);
-            return 0;
-        }
-        gdb_arch_read_reg(addr, regs, ctx);
-        break;
-    case 'P': /* write register */
-        addr = simple_strtoul(ctx->in_buf + 1, &ptr, 16);
-        if ( ptr == (ctx->in_buf + 1) )
-        {
-            gdb_send_reply("E03", ctx);
-            return 0;
-        }
-        if ( ptr[0] != '=' )
-        {
-            gdb_send_reply("E04", ctx);
-            return 0;
-        }
-        ptr++;
-        val = str_to_native_ulong(ptr);
-        gdb_arch_write_reg(addr, val, regs, ctx);
-        break;
-    case 'D':
-    case 'k':
-        gdbstub_detach(ctx);
-        gdb_send_reply("OK", ctx);
-        ctx->connected = 0;
-        resume = 1;
-        break;
-    case 's': /* Single step */
-        type = GDB_STEP;
-    case 'c': /* Resume at current address */
-        addr = ~((unsigned long)0);
-
-        if ( ctx->in_buf[1] )
-            addr = str2ulong(&ctx->in_buf[1], sizeof(unsigned long));
-        gdbstub_attach(ctx);
-        resume = 1;
-        gdb_arch_resume(regs, addr, type, ctx);
-        break;
-    default:
-        gdb_send_reply("", ctx);
-        break;
-    }
-    return resume;
-}
-
-static struct gdb_context
-__gdb_ctx = {
-    .serhnd  = -1,
-    .running = ATOMIC_INIT(1),
-    .signum  = 1
-};
-static struct gdb_context *gdb_ctx = &__gdb_ctx;
-
-static void cf_check gdbstub_console_puts(const char *str, size_t nr)
-{
-    const char *p;
-
-    gdb_start_packet(gdb_ctx);
-    gdb_write_to_packet_char('O', gdb_ctx);
-
-    for ( p = str; nr > 0; p++, nr-- )
-    {
-        gdb_write_to_packet_char(hex2char((*p>>4) & 0x0f), gdb_ctx );
-        gdb_write_to_packet_char(hex2char((*p) & 0x0f), gdb_ctx );
-    }
-
-    gdb_send_packet(gdb_ctx);
-}
-
-/* trap handler: main entry point */
-int 
-__trap_to_gdb(struct cpu_user_regs *regs, unsigned long cookie)
-{
-    int rc = 0;
-    unsigned long flags;
-
-    if ( gdb_ctx->serhnd < 0 )
-    {
-        printk("Debugging connection not set up.\n");
-        return -EBUSY;
-    }
-
-    /* We rely on our caller to ensure we're only on one processor
-     * at a time... We should probably panic here, but given that
-     * we're a debugger we should probably be a little tolerant of
-     * things going wrong. */
-    /* We don't want to use a spin lock here, because we're doing
-       two distinct things:
-
-       1 -- we don't want to run on more than one processor at a time,
-            and
-       2 -- we want to do something sensible if we re-enter ourselves.
-
-       Spin locks are good for 1, but useless for 2. */
-    if ( !atomic_dec_and_test(&gdb_ctx->running) )
-    {
-        printk("WARNING WARNING WARNING: Avoiding recursive gdb.\n");
-        atomic_inc(&gdb_ctx->running);
-        return -EBUSY;
-    }
-
-    if ( !gdb_ctx->connected )
-    {
-        printk("GDB connection activated.\n");
-        gdb_arch_print_state(regs);
-        gdb_ctx->connected = 1;
-    }
-
-    gdb_smp_pause();
-
-    local_irq_save(flags);
-
-    watchdog_disable();
-    console_start_sync();
-
-    gdb_arch_enter(regs);
-    gdb_ctx->signum = gdb_arch_signal_num(regs, cookie);
-
-    /* If gdb is already attached, tell it we've stopped again. */
-    if ( gdb_ctx->currently_attached )
-    {
-        gdb_start_packet(gdb_ctx);
-        gdb_cmd_signum(gdb_ctx);
-    }
-
-    do {
-        if ( receive_command(gdb_ctx) < 0 )
-        {
-            dbg_printk("Error in GDB session...\n");
-            rc = -EIO;
-            break;
-        }
-    } while ( process_command(regs, gdb_ctx) == 0 );
-
-    gdb_smp_resume();
-
-    gdb_arch_exit(regs);
-    console_end_sync();
-    watchdog_enable();
-    atomic_inc(&gdb_ctx->running);
-
-    local_irq_restore(flags);
-
-    return rc;
-}
-
-static int __init cf_check initialise_gdb(void)
-{
-    if ( *opt_gdb == '\0' )
-        return 0;
-
-    gdb_ctx->serhnd = serial_parse_handle(opt_gdb);
-    if ( gdb_ctx->serhnd == -1 )
-    {
-        printk("Bad gdb= option '%s'\n", opt_gdb);
-        return 0;
-    }
-
-    serial_start_sync(gdb_ctx->serhnd);
-
-    printk("GDB stub initialised.\n");
-
-    return 0;
-}
-presmp_initcall(initialise_gdb);
-
-static void cf_check gdb_pause_this_cpu(void *unused)
-{
-    unsigned long flags;
-
-    local_irq_save(flags);
-
-    atomic_set(&gdb_cpu[smp_processor_id()].ack, 1);
-    atomic_inc(&gdb_smp_paused_count);
-
-    while ( atomic_read(&gdb_cpu[smp_processor_id()].paused) )
-        mdelay(1);
-
-    atomic_dec(&gdb_smp_paused_count);
-    atomic_set(&gdb_cpu[smp_processor_id()].ack, 0);
-
-    /* Restore interrupts */
-    local_irq_restore(flags);
-}
-
-static void gdb_smp_pause(void)
-{
-    int timeout = 100;
-    int cpu;
-
-    for_each_online_cpu(cpu)
-    {
-        atomic_set(&gdb_cpu[cpu].ack, 0);
-        atomic_set(&gdb_cpu[cpu].paused, 1);
-    }
-
-    atomic_set(&gdb_smp_paused_count, 0);
-
-    smp_call_function(gdb_pause_this_cpu, NULL, /* dont wait! */0);
-
-    /* Wait 100ms for all other CPUs to enter pause loop */
-    while ( (atomic_read(&gdb_smp_paused_count) < (num_online_cpus() - 1)) 
-            && (timeout-- > 0) )
-        mdelay(1);
-
-    if ( atomic_read(&gdb_smp_paused_count) < (num_online_cpus() - 1) )
-    {
-        printk("GDB: Not all CPUs have paused, missing CPUs ");
-        for_each_online_cpu(cpu)
-        {
-            if ( (cpu != smp_processor_id()) &&
-                 !atomic_read(&gdb_cpu[cpu].ack) )
-                printk("%d ", cpu);
-        }
-        printk("\n");
-    }
-}
-
-static void gdb_smp_resume(void)
-{
-    int cpu;
-    int timeout = 100;
-
-    for_each_online_cpu(cpu)
-        atomic_set(&gdb_cpu[cpu].paused, 0);
-
-    /* Make sure all CPUs resume */
-    while ( (atomic_read(&gdb_smp_paused_count) > 0)
-            && (timeout-- > 0) )
-        mdelay(1);
-
-    if ( atomic_read(&gdb_smp_paused_count) > 0 )
-    {
-        printk("GDB: Not all CPUs have resumed execution, missing CPUs ");
-        for_each_online_cpu(cpu)
-        {
-            if ( (cpu != smp_processor_id()) &&
-                 atomic_read(&gdb_cpu[cpu].ack) )
-                printk("%d ", cpu);
-        }
-        printk("\n");
-    }
-}
-
-/*
- * Local variables:
- * mode: C
- * c-file-style: "BSD"
- * c-basic-offset: 4
- * tab-width: 4
- * End:
- */
diff --git a/xen/include/xen/gdbstub.h b/xen/include/xen/gdbstub.h
deleted file mode 100644
index d2efeb0e3ae1..000000000000
--- a/xen/include/xen/gdbstub.h
+++ /dev/null
@@ -1,103 +0,0 @@
-/*
- * Copyright (C) 2005 Hollis Blanchard <hollisb@us.ibm.com>, IBM Corporation
- * Copyright (C) 2006 Isaku Yamahata <yamahata at valinux co jp>
- *                    VA Linux Systems Japan. K.K.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- * 
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- * 
- * You should have received a copy of the GNU General Public License
- * along with this program; If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef __XEN_GDBSTUB_H__
-#define __XEN_GDBSTUB_H__
-
-#include <xen/page-size.h>
-#include <asm/atomic.h>
-
-#ifdef CONFIG_CRASH_DEBUG
-
-struct cpu_user_regs;
-
-struct gdb_context {
-    int                 serhnd;           /* handle on our serial line */
-    int                 console_steal_id; /* handle on stolen console */
-    bool                currently_attached;
-    atomic_t            running;
-    unsigned long       connected;
-    u8                  signum;
-
-    char                in_buf[PAGE_SIZE];
-    unsigned long       in_bytes;
-
-    char                out_buf[PAGE_SIZE];
-    unsigned long       out_offset;
-    u8                  out_csum;
-};
-
-/* interface to arch specific routines */
-void gdb_write_to_packet(
-    const char *buf, int count, struct gdb_context *ctx);
-void gdb_write_to_packet_hex(
-    unsigned long x, int int_size, struct gdb_context *ctx);
-    /* ... writes in target native byte order as required by gdb spec. */
-void gdb_send_packet(struct gdb_context *ctx);
-void gdb_send_reply(const char *buf, struct gdb_context *ctx);
-
-/* gdb stub trap handler: entry point */
-int __trap_to_gdb(struct cpu_user_regs *regs, unsigned long cookie);
-
-/* arch specific routines */
-u16 gdb_arch_signal_num(
-    struct cpu_user_regs *regs, unsigned long cookie);
-void gdb_arch_read_reg_array(
-    struct cpu_user_regs *regs, struct gdb_context *ctx);
-void gdb_arch_write_reg_array(
-    struct cpu_user_regs *regs, const char* buf, struct gdb_context *ctx);
-void gdb_arch_read_reg(
-    unsigned long regnum, struct cpu_user_regs *regs, struct gdb_context *ctx);
-void gdb_arch_write_reg(
-    unsigned long regnum, unsigned long val, struct cpu_user_regs *regs, 
-    struct gdb_context *ctx);
-unsigned int gdb_arch_copy_from_user(
-    void *dest, const void *src, unsigned len);
-unsigned int gdb_arch_copy_to_user(
-    void *dest, const void *src, unsigned len);
-void gdb_arch_resume(
-    struct cpu_user_regs *regs, unsigned long addr,
-    unsigned long type, struct gdb_context *ctx);
-void gdb_arch_print_state(struct cpu_user_regs *regs);
-void gdb_arch_enter(struct cpu_user_regs *regs);
-void gdb_arch_exit(struct cpu_user_regs *regs);
-
-#define GDB_CONTINUE     0
-#define GDB_STEP         1
-
-#define SIGILL           4
-#define SIGTRAP          5
-#define SIGBUS           7
-#define SIGFPE           8
-#define SIGSEGV         11
-#define SIGALRM         14
-#define SIGTERM         15
-
-#endif
-
-#endif /* __XEN_GDBSTUB_H__ */
-
-/*
- * Local variables:
- * mode: C
- * c-file-style: "BSD"
- * c-basic-offset: 4
- * tab-width: 4
- * End:
- */

base-commit: c378ff8983cd69786c35117e49640f027e581bca
-- 
2.30.2



From xen-devel-bounces@lists.xenproject.org Fri Jan 26 20:54:48 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 26 Jan 2024 20:54:48 +0000
Received: from list by lists.xenproject.org with outflank-mailman.672502.1046595 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTTDs-0000ki-9j; Fri, 26 Jan 2024 20:54:48 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 672502.1046595; Fri, 26 Jan 2024 20:54:48 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTTDs-0000ka-5Q; Fri, 26 Jan 2024 20:54:48 +0000
Received: by outflank-mailman (input) for mailman id 672502;
 Fri, 26 Jan 2024 20:54:47 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=gD8/=JE=citrix.com=prvs=748d50c66=Andrew.Cooper3@srs-se1.protection.inumbo.net>)
 id 1rTTDr-0000Mm-2d
 for xen-devel@lists.xenproject.org; Fri, 26 Jan 2024 20:54:47 +0000
Received: from esa3.hc3370-68.iphmx.com (esa3.hc3370-68.iphmx.com
 [216.71.145.155]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 21b4d2bb-bc8d-11ee-98f5-efadbce2ee36;
 Fri, 26 Jan 2024 21:54:45 +0100 (CET)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 21b4d2bb-bc8d-11ee-98f5-efadbce2ee36
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple;
  d=citrix.com; s=securemail; t=1706302485;
  h=from:to:cc:subject:date:message-id:in-reply-to:
   references:mime-version:content-transfer-encoding;
  bh=L6iDmwrCytRZMmO9gLj9faDKUhnDEiJ7sSlzL0gPy38=;
  b=B8BBHsKTiBu3pDNpsmHqKBRimhlVh1Ty78UwZbjB+k+odWfsvKKJqVae
   oisfFt9Eb+fC50fooE/L1S57fy+Kixju3A3GDRL3ECrFzwd4BjDaoL7Qo
   QT+CWx/v10jAgDglbQOlXpcuGRG32scA4KKzzcNWCpTnPcL6a+dStWYJi
   U=;
X-CSE-ConnectionGUID: RXoPqrN0Rnyls1Kns2nLxQ==
X-CSE-MsgGUID: KlNhI18TRIerFVPe4o+tdg==
Authentication-Results: esa3.hc3370-68.iphmx.com; dkim=none (message not signed) header.i=none
X-SBRS: 4.0
X-MesageID: 129693491
X-Ironport-Server: esa3.hc3370-68.iphmx.com
X-Remote-IP: 162.221.159.70
X-Policy: $RELAYED
X-ThreatScanner-Verdict: Negative
IronPort-Data: A9a23:zuwfCK6u2E5V3Xfx163TPgxRtGHHchMFZxGqfqrLsTDasY5as4F+v
 mIfDTyGOvjcamujKY8kO9vgoR9Q75OHyNBrTAZoqCk8Hi5G8cbLO4+Ufxz6V8+wwm8vb2o8t
 plDNYOQRCwQZiWBzvt4GuG59RGQ7YnRG/ykTraCY3gtLeNdYH9JoQp5nOIkiZJfj9G8Agec0
 fv/uMSaM1K+s9JOGjt8B5mr9lU34ZwehBtC5gZiPakR4AeH/5UoJMl3yZ+ZfiOQrrZ8RoZWd
 86bpJml82XQ+QsaC9/Nut4XpWVTH9Y+lSDX4pZnc/DKbipq/0Te4Y5iXBYoUm9Fii3hojxE4
 I4lWapc6+seFvakdOw1C3G0GszlVEFM0OevzXOX6aR/w6BaGpdFLjoH4EweZOUlFuhL7W5mz
 8wfECkXSEi5gfOy2+uYTPI2gOAzFZy+VG8fkikIITDxCP8nRdbIQrnQ5M8e1zA17ixMNa+AP
 YxDM2MpNUmRJUIXUrsUIMtWcOOAr3/zaTBH7nmSorI6+TP7xw1tyrn9dtHSf7RmQO0MxBfG9
 zmarj2R7hcyF9i5yRvcok6Wp+LVsx3DVd4VV6G0+as/6LGU7jNKU0BHPbehmtGph0j7V99BJ
 kg8/is1sbN05EGtVsP6XRCzvDiDpBF0c/h6HvA+6QqN4rHJ+AvfDW8BJhZebPQ2uclwQiYlv
 neOm97qHj1u9r6IU3WW9rSThTy3MCkRa2QFYEc5oRAtuoe55ttp11SWE4clT/bdYsDJ9S/Y+
 QCNlDEkoe0pi98PzPyY+0udhRa8n82cJuIq3Tk7Tl5J/ysgO9b7PdP0sgGGhcusOrp1WbVog
 ZTlpyR9xLpXZX11vHbRKNjh5Znwjxp/DBXSgER0A74q/Cm39niocOh4uW4meh04bppdKGS4P
 yc/XD+9A7cKYhOXgVJfOdrtW6zGM4C+fTgaahwkRoUXOcUgHON21CpveVSRzwjQraTYqolmY
 c3zWZ/1XR4n5VFPkGLeqxE1jeV6mUjTBAr7GfjG8vhQ+ePENSHME+lcbTNjrIkRtcu5nekcy
 P4HX+Pi9vmVeLyWjvX/mWLLEW03EA==
IronPort-HdrOrdr: A9a23:2Cg2IKHYmdhFhaXfpLqE0MeALOsnbusQ8zAXP0AYc3Jom6uj5r
 mTdZUgpHnJYVkqOE3I9ertBEDEewK4yXcX2/h3AV7BZniEhILAFugLhuGO/9SjIVybygc079
 YZT0EUMrzN5DZB4voSmDPIceod/A==
X-Talos-CUID: 9a23:aVdMXW3YtJ2rxIyzYH55T7xfIPAiSmTH6i/qJV68Ej9KTqbPT3uAwfYx
X-Talos-MUID: 9a23:+qkbLQRxexdCg3X0RXTPgBdiFZ44356PBVojr60L587HKSB/bmI=
X-IronPort-AV: E=Sophos;i="6.05,216,1701147600"; 
   d="scan'208";a="129693491"
From: Andrew Cooper <andrew.cooper3@citrix.com>
To: Xen-devel <xen-devel@lists.xenproject.org>
CC: Andrew Cooper <andrew.cooper3@citrix.com>, Jan Beulich
	<JBeulich@suse.com>, =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?=
	<roger.pau@citrix.com>, Wei Liu <wl@xen.org>, Oleksii Kurochko
	<oleksii.kurochko@gmail.com>
Subject: [PATCH 2/2] xen: Remove debugger.h
Date: Fri, 26 Jan 2024 20:54:18 +0000
Message-ID: <20240126205418.3587177-3-andrew.cooper3@citrix.com>
X-Mailer: git-send-email 2.30.2
In-Reply-To: <20240126205418.3587177-1-andrew.cooper3@citrix.com>
References: <20240126205418.3587177-1-andrew.cooper3@citrix.com>
MIME-Version: 1.0
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit

With x86 having dropped gdbstub, Xen's only debugger has gone.

Drop xen/debugger.h and remove the hooks spread around the codebase.

Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
---
CC: Jan Beulich <JBeulich@suse.com>
CC: Roger Pau Monné <roger.pau@citrix.com>
CC: Wei Liu <wl@xen.org>
CC: Oleksii Kurochko <oleksii.kurochko@gmail.com>

I debated splitting this up, but decided it wasn't worth the effort. There's a
lot of further cleanup that can be done, including an include tangle it seems?
---
 xen/arch/x86/include/asm/bug.h      | 20 -------------
 xen/arch/x86/include/asm/debugger.h | 30 --------------------
 xen/arch/x86/traps.c                | 30 +++-----------------
 xen/common/bug.c                    | 27 ------------------
 xen/common/keyhandler.c             | 22 +--------------
 xen/common/shutdown.c               |  2 --
 xen/drivers/char/console.c          |  3 --
 xen/include/xen/bug.h               |  4 ---
 xen/include/xen/debugger.h          | 44 -----------------------------
 9 files changed, 5 insertions(+), 177 deletions(-)
 delete mode 100644 xen/arch/x86/include/asm/debugger.h
 delete mode 100644 xen/include/xen/debugger.h

diff --git a/xen/arch/x86/include/asm/bug.h b/xen/arch/x86/include/asm/bug.h
index 7fe879a8ccb9..a9e99786a7bb 100644
--- a/xen/arch/x86/include/asm/bug.h
+++ b/xen/arch/x86/include/asm/bug.h
@@ -1,28 +1,8 @@
 #ifndef __X86_BUG_H__
 #define __X86_BUG_H__
 
-/*
- * Please do not include in the header any header that might
- * use BUG/ASSERT/etc maros asthey will be defined later after
- * the return to <xen/bug.h> from the current header:
- * 
- * <xen/bug.h>:
- *  ...
- *   <asm/bug.h>:
- *     ...
- *     <any_header_which_uses_BUG/ASSERT/etc macros.h>
- *     ...
- *  ...
- *  #define BUG() ...
- *  ...
- *  #define ASSERT() ...
- *  ...
- */
-
 #ifndef __ASSEMBLY__
 
-#define BUG_DEBUGGER_TRAP_FATAL(regs) debugger_trap_fatal(X86_EXC_GP,regs)
-
 #define BUG_INSTR       "ud2"
 #define BUG_ASM_CONST   "c"
 
diff --git a/xen/arch/x86/include/asm/debugger.h b/xen/arch/x86/include/asm/debugger.h
deleted file mode 100644
index a5c299c6c34d..000000000000
--- a/xen/arch/x86/include/asm/debugger.h
+++ /dev/null
@@ -1,30 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/******************************************************************************
- * xen/arch/x86/include/asm/debugger.h
- *
- * x86-specific debugger hooks.
- */
-#ifndef __X86_DEBUGGER_H__
-#define __X86_DEBUGGER_H__
-
-#include <xen/gdbstub.h>
-#include <xen/stdbool.h>
-
-#include <asm/x86-defns.h>
-
-/* Returns true if GDB handled the trap, or it is surviveable. */
-static inline bool debugger_trap_fatal(
-    unsigned int vector, struct cpu_user_regs *regs)
-{
-    int rc = __trap_to_gdb(regs, vector);
-
-    if ( rc == 0 )
-        return true;
-
-    return vector == X86_EXC_BP;
-}
-
-/* Int3 is a trivial way to gather cpu_user_regs context. */
-#define debugger_trap_immediate() __asm__ __volatile__ ( "int3" )
-
-#endif /* __X86_DEBUGGER_H__ */
diff --git a/xen/arch/x86/traps.c b/xen/arch/x86/traps.c
index 7724306116e9..5f4bcc0537f7 100644
--- a/xen/arch/x86/traps.c
+++ b/xen/arch/x86/traps.c
@@ -25,7 +25,6 @@
 #include <xen/shutdown.h>
 #include <xen/guest_access.h>
 #include <asm/regs.h>
-#include <xen/debugger.h>
 #include <xen/delay.h>
 #include <xen/event.h>
 #include <xen/spinlock.h>
@@ -835,11 +834,6 @@ void fatal_trap(const struct cpu_user_regs *regs, bool show_remote)
 
 void asmlinkage do_unhandled_trap(struct cpu_user_regs *regs)
 {
-    unsigned int trapnr = regs->entry_vector;
-
-    if ( debugger_trap_fatal(trapnr, regs) )
-        return;
-
     fatal_trap(regs, false);
 }
 
@@ -941,9 +935,6 @@ void asmlinkage do_trap(struct cpu_user_regs *regs)
         return;
 
  hardware_trap:
-    if ( debugger_trap_fatal(trapnr, regs) )
-        return;
-
     fatal_trap(regs, false);
 }
 
@@ -1190,9 +1181,6 @@ void asmlinkage do_invalid_op(struct cpu_user_regs *regs)
     if ( likely(extable_fixup(regs, true)) )
         return;
 
-    if ( debugger_trap_fatal(X86_EXC_UD, regs) )
-        return;
-
     show_execution_state(regs);
     panic("FATAL TRAP: vector = %d (invalid opcode)\n", X86_EXC_UD);
 }
@@ -1206,9 +1194,8 @@ void asmlinkage do_int3(struct cpu_user_regs *regs)
         if ( likely(extable_fixup(regs, true)) )
             return;
 
-        if ( !debugger_trap_fatal(X86_EXC_BP, regs) )
-            printk(XENLOG_DEBUG "Hit embedded breakpoint at %p [%ps]\n",
-                   _p(regs->rip), _p(regs->rip));
+        printk(XENLOG_DEBUG "Hit embedded breakpoint at %p [%ps]\n",
+               _p(regs->rip), _p(regs->rip));
 
         return;
     }
@@ -1294,9 +1281,6 @@ void do_general_protection(struct cpu_user_regs *regs)
         return;
 
  hardware_gp:
-    if ( debugger_trap_fatal(X86_EXC_GP, regs) )
-        return;
-
     show_execution_state(regs);
     panic("GENERAL PROTECTION FAULT\n[error_code=%04x]\n", regs->error_code);
 }
@@ -1620,9 +1604,6 @@ void asmlinkage do_page_fault(struct cpu_user_regs *regs)
         }
 
     fatal:
-        if ( debugger_trap_fatal(X86_EXC_PF, regs) )
-            return;
-
         show_execution_state(regs);
         show_page_walk(addr);
         panic("FATAL PAGE FAULT\n"
@@ -1933,11 +1914,8 @@ void asmlinkage do_debug(struct cpu_user_regs *regs)
                 return;
             }
 #endif
-            if ( !debugger_trap_fatal(X86_EXC_DB, regs) )
-            {
-                WARN();
-                regs->eflags &= ~X86_EFLAGS_TF;
-            }
+            WARN();
+            regs->eflags &= ~X86_EFLAGS_TF;
         }
 
         /*
diff --git a/xen/common/bug.c b/xen/common/bug.c
index ca166e102b4b..5fbe703a81b3 100644
--- a/xen/common/bug.c
+++ b/xen/common/bug.c
@@ -1,23 +1,4 @@
 #include <xen/bug.h>
-/*
- * Ideally <xen/debugger.h> should be included in <asm/bug.h>
- * but an issue with compilation can occur as <xen/debugger.h> uses
- * BUG/ASSERT/etc macros inside but they will be defined later in
- * <xen/bug.h> after return from inclusion of <asm/bug.h>:
- * 
- * <xen/bug.h>:
- *  ...
- *   <asm/bug.h>:
- *     ...
- *     <xen/debugger.h> -> some of included header in it uses BUG/ASSERT/etc
- *     ...
- *  ...
- *  #define BUG() ...
- *  ...
- *  #define ASSERT() ...
- *  ...
- */
-#include <xen/debugger.h>
 #include <xen/errno.h>
 #include <xen/kernel.h>
 #include <xen/livepatch.h>
@@ -96,10 +77,6 @@ int do_bug_frame(struct cpu_user_regs *regs, unsigned long pc)
 
     case BUGFRAME_bug:
         printk("Xen BUG at %s%s:%d\n", prefix, filename, lineno);
-
-        if ( BUG_DEBUGGER_TRAP_FATAL(regs) )
-            break;
-
         show_execution_state(regs);
         panic("Xen BUG at %s%s:%d\n", prefix, filename, lineno);
 
@@ -111,10 +88,6 @@ int do_bug_frame(struct cpu_user_regs *regs, unsigned long pc)
 
         printk("Assertion '%s' failed at %s%s:%d\n",
                predicate, prefix, filename, lineno);
-
-        if ( BUG_DEBUGGER_TRAP_FATAL(regs) )
-            break;
-
         show_execution_state(regs);
         panic("Assertion '%s' failed at %s%s:%d\n",
               predicate, prefix, filename, lineno);
diff --git a/xen/common/keyhandler.c b/xen/common/keyhandler.c
index 99a2d72a0202..f131034d33ee 100644
--- a/xen/common/keyhandler.c
+++ b/xen/common/keyhandler.c
@@ -3,7 +3,6 @@
  */
 
 #include <asm/regs.h>
-#include <xen/debugger.h>
 #include <xen/delay.h>
 #include <xen/keyhandler.h>
 #include <xen/param.h>
@@ -29,8 +28,7 @@ static bool alt_key_handling;
 static keyhandler_fn_t cf_check show_handlers, cf_check dump_hwdom_registers,
     cf_check dump_domains, cf_check read_clocks;
 static irq_keyhandler_fn_t cf_check do_toggle_alt_key, cf_check dump_registers,
-    cf_check reboot_machine, cf_check run_all_keyhandlers,
-    cf_check do_debug_key;
+    cf_check reboot_machine, cf_check run_all_keyhandlers;
 
 static struct keyhandler {
     union {
@@ -57,7 +55,6 @@ static struct keyhandler {
     IRQ_KEYHANDLER('R', reboot_machine, "reboot machine", 0),
         KEYHANDLER('t', read_clocks, "display multi-cpu clock info", 1),
         KEYHANDLER('0', dump_hwdom_registers, "dump Dom0 registers", 1),
-    IRQ_KEYHANDLER('%', do_debug_key, "trap to xendbg", 0),
     IRQ_KEYHANDLER('*', run_all_keyhandlers, "print all diagnostics", 0),
 
 #ifdef CONFIG_PERF_COUNTERS
@@ -503,23 +500,6 @@ static void cf_check run_all_keyhandlers(
     tasklet_schedule(&run_all_keyhandlers_tasklet);
 }
 
-static void cf_check do_debugger_trap_fatal(struct cpu_user_regs *regs)
-{
-    (void)debugger_trap_fatal(0xf001, regs);
-
-    /* Prevent tail call optimisation, which confuses xendbg. */
-    barrier();
-}
-
-static void cf_check do_debug_key(unsigned char key, struct cpu_user_regs *regs)
-{
-    printk("'%c' pressed -> trapping into debugger\n", key);
-    if ( regs )
-        do_debugger_trap_fatal(regs);
-    else
-        run_in_exception_handler(do_debugger_trap_fatal);
-}
-
 static void cf_check do_toggle_alt_key(
     unsigned char key, struct cpu_user_regs *regs)
 {
diff --git a/xen/common/shutdown.c b/xen/common/shutdown.c
index dfd5e41097e9..5f8141edc6b2 100644
--- a/xen/common/shutdown.c
+++ b/xen/common/shutdown.c
@@ -2,7 +2,6 @@
 #include <xen/lib.h>
 #include <xen/param.h>
 #include <xen/sched.h>
-#include <xen/debugger.h>
 #include <xen/domain.h>
 #include <xen/delay.h>
 #include <xen/watchdog.h>
@@ -40,7 +39,6 @@ void hwdom_shutdown(u8 reason)
         machine_halt();
 
     case SHUTDOWN_crash:
-        debugger_trap_immediate();
         printk("Hardware Dom%u crashed: ", hardware_domain->domain_id);
         kexec_crash(CRASHREASON_HWDOM);
         reboot_or_halt();
diff --git a/xen/drivers/char/console.c b/xen/drivers/char/console.c
index 0666564ec92e..dce0226e8711 100644
--- a/xen/drivers/char/console.c
+++ b/xen/drivers/char/console.c
@@ -15,7 +15,6 @@
 #include <xen/init.h>
 #include <xen/event.h>
 #include <xen/console.h>
-#include <xen/debugger.h>
 #include <xen/param.h>
 #include <xen/serial.h>
 #include <xen/softirq.h>
@@ -1297,8 +1296,6 @@ void panic(const char *fmt, ...)
 
     spin_unlock_irqrestore(&lock, flags);
 
-    debugger_trap_immediate();
-
     kexec_crash(CRASHREASON_PANIC);
 
     if ( opt_noreboot )
diff --git a/xen/include/xen/bug.h b/xen/include/xen/bug.h
index 8cca4486a477..4bd0be508825 100644
--- a/xen/include/xen/bug.h
+++ b/xen/include/xen/bug.h
@@ -16,10 +16,6 @@
 
 #ifndef __ASSEMBLY__
 
-#ifndef BUG_DEBUGGER_TRAP_FATAL
-#define BUG_DEBUGGER_TRAP_FATAL(regs) 0
-#endif
-
 #include <xen/macros.h>
 #include <xen/types.h>
 
diff --git a/xen/include/xen/debugger.h b/xen/include/xen/debugger.h
deleted file mode 100644
index 72684268aff7..000000000000
--- a/xen/include/xen/debugger.h
+++ /dev/null
@@ -1,44 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/******************************************************************************
- * Arch specific debuggers should implement:
- *
- * debugger_trap_fatal():
- *  Called when Xen is about to give up and crash. Typically you will use this
- *  hook to drop into a debug session. It can also be used to hook off
- *  deliberately caused traps (which you then handle and return non-zero).
- *
- * debugger_trap_immediate():
- *  Called if we want to drop into a debugger now.  This is essentially the
- *  same as debugger_trap_fatal, except that we use the current register state
- *  rather than the state which was in effect when we took the trap.
- *  For example: if we're dying because of an unhandled exception, we call
- *  debugger_trap_fatal; if we're dying because of a panic() we call
- *  debugger_trap_immediate().
- */
-
-#ifndef __XEN_DEBUGGER_H__
-#define __XEN_DEBUGGER_H__
-
-#ifdef CONFIG_CRASH_DEBUG
-
-#include <asm/debugger.h>
-
-#else
-
-#include <xen/stdbool.h>
-
-struct cpu_user_regs;
-
-static inline bool debugger_trap_fatal(
-    unsigned int vector, const struct cpu_user_regs *regs)
-{
-    return false;
-}
-
-static inline void debugger_trap_immediate(void)
-{
-}
-
-#endif /* CONFIG_CRASH_DEBUG */
-
-#endif /* __XEN_DEBUGGER_H__ */
-- 
2.30.2



From xen-devel-bounces@lists.xenproject.org Fri Jan 26 21:11:27 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 26 Jan 2024 21:11:27 +0000
Received: from list by lists.xenproject.org with outflank-mailman.672513.1046605 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTTTr-0007jK-Kz; Fri, 26 Jan 2024 21:11:19 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 672513.1046605; Fri, 26 Jan 2024 21:11:19 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTTTr-0007jD-H6; Fri, 26 Jan 2024 21:11:19 +0000
Received: by outflank-mailman (input) for mailman id 672513;
 Fri, 26 Jan 2024 21:11:18 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=HlWE=JE=linaro.org=philmd@srs-se1.protection.inumbo.net>)
 id 1rTTTq-0007hw-Cl
 for xen-devel@lists.xenproject.org; Fri, 26 Jan 2024 21:11:18 +0000
Received: from mail-wm1-x32e.google.com (mail-wm1-x32e.google.com
 [2a00:1450:4864:20::32e])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 7123a7ef-bc8f-11ee-98f5-efadbce2ee36;
 Fri, 26 Jan 2024 22:11:16 +0100 (CET)
Received: by mail-wm1-x32e.google.com with SMTP id
 5b1f17b1804b1-40ee705e9bfso10502855e9.0
 for <xen-devel@lists.xenproject.org>; Fri, 26 Jan 2024 13:11:16 -0800 (PST)
Received: from [192.168.69.100] ([176.176.142.39])
 by smtp.gmail.com with ESMTPSA id
 a5-20020a05600c348500b0040e48abec33sm6615547wmq.45.2024.01.26.13.11.10
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Fri, 26 Jan 2024 13:11:15 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 7123a7ef-bc8f-11ee-98f5-efadbce2ee36
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=linaro.org; s=google; t=1706303475; x=1706908275; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:from:references:cc:to
         :content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=vxYwthXZn31ySjM2DeVKX29v0Ws6VePUGUeM9gtZWoA=;
        b=GSoUSj8T1aBRiF9e2CvAatPw2WojACTqmouvFFg1M002NzHUzJEIQ6Is4oAAdNsw2z
         VbaJyEbFvH3Gx2/wuifgdpklCDjzd2Q4SH0yc4tpRl/nr92htveNsogtambrSxcc1cXf
         eWfT15bUni27mBKppgm2ftx8w24lujOzrgA1R2cLXYG6EqEekdP6Uag+Ow8oycawg487
         cRZL/ADXbTBVGq/S7ZIdLHnIteUHrNWy9nU8jcuQcnqqnvVSW/Kn1oZPcYP3fhno2hNZ
         lnnMNiD1Y5EfCC6as9E5QPFVaTgOsx6RUGaG2FamdQRA0YBh/xLMzWMLQpepNS+hwtrp
         YP9Q==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706303475; x=1706908275;
        h=content-transfer-encoding:in-reply-to:from:references:cc:to
         :content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=vxYwthXZn31ySjM2DeVKX29v0Ws6VePUGUeM9gtZWoA=;
        b=L6Pqkk+YnIueVhL1yGiXCoGTGA/23BVrIlSZrOTeuGKVpClF7qnb+zn4GhPyOtvmUD
         VPwTfFeDXkvs2yiRiGDrmrcDBzgHhok92kD9hAYB3UFOg/0IgdcUalfXQES7Fao6gZTt
         Y4nyXJvopqqoEFha6fZx7iALBoKhjVSPcTZrvRaOCq2S2MrVhuwiuJXA82OtLJZlONtX
         AU3BpL7a1L7jzEa+mm+VBjqxrBG2I7n0RTTaZXq1dvxADwacJy/VEyHMS1VlomlOmGTa
         I2s9IIGqNGKhkVj3NWKnX+OTJF4Ekno21GXKnRNqV3TMsgsn5bWyx3gT/DYxQXkhN8kc
         54Fw==
X-Gm-Message-State: AOJu0YyY7s/ylXGFJ3kQ3zOcgx6PWwQfNR6590m6wI2Y0eDGnpF4CAvt
	Y69WxKN/UYoFSTi6lM+094N7uf4ETwr2hjrpcpzLb582kW1vWWIYZNdOVYFgnJY=
X-Google-Smtp-Source: AGHT+IHPfVDNkHfFEZ920e1AvtHAgCTjycghkqkwfmMNm/uoHYkWmbEXdBjZ/pk1I5xFKz0+SjDwuw==
X-Received: by 2002:a05:600c:4ca7:b0:40e:5534:728c with SMTP id g39-20020a05600c4ca700b0040e5534728cmr286415wmp.136.1706303475465;
        Fri, 26 Jan 2024 13:11:15 -0800 (PST)
Message-ID: <c4c07c69-11c6-4883-8ff8-1e5ec627d9bc@linaro.org>
Date: Fri, 26 Jan 2024 22:11:08 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 2/2] bulk: Prefer fast cpu_env() over slower CPU QOM cast
 macro
Content-Language: en-US
To: Thomas Huth <thuth@redhat.com>, qemu-devel@nongnu.org
Cc: Peter Maydell <peter.maydell@linaro.org>,
 Paolo Bonzini <pbonzini@redhat.com>, Eduardo Habkost <eduardo@habkost.net>,
 Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>,
 Richard Henderson <richard.henderson@linaro.org>, qemu-s390x@nongnu.org,
 qemu-ppc@nongnu.org, qemu-riscv@nongnu.org, qemu-arm@nongnu.org,
 "Michael S. Tsirkin" <mst@redhat.com>,
 Marcel Apfelbaum <marcel.apfelbaum@gmail.com>,
 Stefano Stabellini <sstabellini@kernel.org>,
 Anthony Perard <anthony.perard@citrix.com>, Paul Durrant <paul@xen.org>,
 =?UTF-8?Q?C=C3=A9dric_Le_Goater?= <clg@kaod.org>,
 Nicholas Piggin <npiggin@gmail.com>, =?UTF-8?B?RnLDqWTDqXJpYyBCYXJyYXQ=?=
 <fbarrat@linux.ibm.com>, Daniel Henrique Barboza <danielhb413@gmail.com>,
 David Gibson <david@gibson.dropbear.id.au>,
 Harsh Prateek Bora <harshpb@linux.ibm.com>, Alexander Graf
 <agraf@csgraf.de>, Michael Rolnik <mrolnik@gmail.com>,
 "Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
 Cameron Esfahani <dirty@apple.com>, Roman Bolshakov <rbolshakov@ddn.com>,
 Marcelo Tosatti <mtosatti@redhat.com>, David Woodhouse
 <dwmw2@infradead.org>, Laurent Vivier <laurent@vivier.eu>,
 Aurelien Jarno <aurelien@aurel32.net>, Jiaxun Yang
 <jiaxun.yang@flygoat.com>, Aleksandar Rikalo <aleksandar.rikalo@syrmia.com>,
 Huacai Chen <chenhuacai@kernel.org>, Chris Wulff <crwulff@gmail.com>,
 Marek Vasut <marex@denx.de>, Stafford Horne <shorne@gmail.com>,
 Palmer Dabbelt <palmer@dabbelt.com>,
 Alistair Francis <alistair.francis@wdc.com>,
 Bin Meng <bin.meng@windriver.com>, Weiwei Li <liwei1518@gmail.com>,
 Liu Zhiwei <zhiwei_liu@linux.alibaba.com>,
 Yoshinori Sato <ysato@users.sourceforge.jp>,
 David Hildenbrand <david@redhat.com>, Ilya Leoshkevich <iii@linux.ibm.com>,
 Halil Pasic <pasic@linux.ibm.com>,
 Christian Borntraeger <borntraeger@linux.ibm.com>,
 Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>,
 Artyom Tarasenko <atar4qemu@gmail.com>,
 Bastian Koppelmann <kbastian@mail.uni-paderborn.de>,
 Max Filippov <jcmvbkbc@gmail.com>, xen-devel@lists.xenproject.org,
 kvm@vger.kernel.org
References: <20240125165648.49898-1-philmd@linaro.org>
 <20240125165648.49898-3-philmd@linaro.org>
 <135941df-2f8b-4fd5-91c7-40b413e6eae3@redhat.com>
From: =?UTF-8?Q?Philippe_Mathieu-Daud=C3=A9?= <philmd@linaro.org>
In-Reply-To: <135941df-2f8b-4fd5-91c7-40b413e6eae3@redhat.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit

On 26/1/24 18:09, Thomas Huth wrote:
> On 25/01/2024 17.56, Philippe Mathieu-Daudé wrote:
>> Mechanical patch produced running the command documented
>> in scripts/coccinelle/cpu_env.cocci_template header.
>>
>> Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
>> ---

>>   114 files changed, 273 insertions(+), 548 deletions(-)
> 
> A huge patch ... I wonder whether it would make sense to split it up by 
> target architecture to ease the review?
> 
> ...
>> diff --git a/hw/i386/vmmouse.c b/hw/i386/vmmouse.c
>> index a8d014d09a..eb0613bfbe 100644
>> --- a/hw/i386/vmmouse.c
>> +++ b/hw/i386/vmmouse.c
>> @@ -74,8 +74,7 @@ struct VMMouseState {
>>   static void vmmouse_get_data(uint32_t *data)
>>   {
>> -    X86CPU *cpu = X86_CPU(current_cpu);
>> -    CPUX86State *env = &cpu->env;
>> +    CPUX86State *env = cpu_env(CPU(current_cpu));
> 
> No need for the CPU() cast here, current_cpu is already
> of type "CPUState *".

Yes, Paolo noticed and I fixed for v2.

> I'll stop here, please respin with the cpu_env(CPU(current_cpu)) fixed to
> cpu_env(current_cpu), and please split the patch by target CPU types.

Well I don't know, this is an reproducible mechanical patch..
But indeed as Paolo you found an optimization so worth not making
human review a pain.

I was about to post v2 but I'll see how to split.

Thanks for the review!

Phil.


From xen-devel-bounces@lists.xenproject.org Fri Jan 26 21:38:23 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 26 Jan 2024 21:38:23 +0000
Received: from list by lists.xenproject.org with outflank-mailman.672531.1046665 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTTtx-0007t1-52; Fri, 26 Jan 2024 21:38:17 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 672531.1046665; Fri, 26 Jan 2024 21:38:17 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTTtx-0007su-2K; Fri, 26 Jan 2024 21:38:17 +0000
Received: by outflank-mailman (input) for mailman id 672531;
 Fri, 26 Jan 2024 21:38:16 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rTTtw-0007mM-4p; Fri, 26 Jan 2024 21:38:16 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rTTtv-0005aa-Nd; Fri, 26 Jan 2024 21:38:15 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rTTtv-00054s-Fd; Fri, 26 Jan 2024 21:38:15 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rTTtv-0006ng-F5; Fri, 26 Jan 2024 21:38:15 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=k3KeWuj342+WbGOPJdF81jtiqK4b1h1zdHwfMYRvqRk=; b=sk5UvpgqOeEHhNzYzFADg4bEN3
	0YsQUnpkPwHZJr5+7JxEs8dK599fOyH+u/t3MX0XfUaguMrNwQ7WfSAIfDvXeFPXVY2YvfHBa8o0N
	mhz2xcdQncA/tFws4cgyX+usqg7dtjD9T4T1FE+qy9I0s+GZO6DAA8xFYNXKjPrOEu38=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184470-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [xen-unstable test] 184470: tolerable FAIL - PUSHED
X-Osstest-Failures:
    xen-unstable:test-amd64-i386-xl-qemuu-ws16-amd64:xen-boot:fail:heisenbug
    xen-unstable:test-amd64-i386-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-amd64-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-amd64-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-raw:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-qcow2:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-amd64-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-amd64-qemuu-nested-amd:debian-hvm-install/l1/l2:fail:nonblocking
    xen-unstable:test-amd64-i386-libvirt-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-libvirt:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-pvshim:guest-start:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-credit2:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-credit2:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-credit1:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-credit1:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-thunderx:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-thunderx:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-libvirt-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-libvirt-xsm:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-xsm:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-multivcpu:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-multivcpu:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-libvirt-raw:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-libvirt-raw:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-libvirt-raw:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt-vhd:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-vhd:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-vhd:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-raw:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-qcow2:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-vhd:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-vhd:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-rtds:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-rtds:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit1:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit1:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit2:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit2:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-arndale:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-arndale:saverestore-support-check:fail:nonblocking
X-Osstest-Versions-This:
    xen=dbdd7e8df75030d0b1097eb5a1b3c3cb378a657b
X-Osstest-Versions-That:
    xen=98ae35cab0e40e59963f9f58345bf378b9522d74
From: osstest service owner <osstest-admin@xenproject.org>
Date: Fri, 26 Jan 2024 21:38:15 +0000

flight 184470 xen-unstable real [real]
flight 184479 xen-unstable real-retest [real]
http://logs.test-lab.xenproject.org/osstest/logs/184470/
http://logs.test-lab.xenproject.org/osstest/logs/184479/

Failures :-/ but no regressions.

Tests which are failing intermittently (not blocking):
 test-amd64-i386-xl-qemuu-ws16-amd64  8 xen-boot     fail pass in 184479-retest

Tests which did not succeed, but are not blocking:
 test-amd64-i386-xl-qemuu-ws16-amd64 19 guest-stop   fail in 184479 like 184459
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 184449
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 184459
 test-amd64-amd64-xl-qemut-win7-amd64 19 guest-stop            fail like 184459
 test-amd64-i386-xl-qemuu-win7-amd64 19 guest-stop             fail like 184459
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 184459
 test-amd64-i386-xl-qemut-ws16-amd64 19 guest-stop             fail like 184459
 test-armhf-armhf-libvirt-raw 15 saverestore-support-check    fail  like 184459
 test-armhf-armhf-libvirt-qcow2 15 saverestore-support-check   fail like 184459
 test-amd64-i386-xl-qemut-win7-amd64 19 guest-stop             fail like 184459
 test-amd64-amd64-xl-qemut-ws16-amd64 19 guest-stop            fail like 184459
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 184459
 test-amd64-i386-libvirt-xsm  15 migrate-support-check        fail   never pass
 test-amd64-i386-libvirt      15 migrate-support-check        fail   never pass
 test-amd64-i386-xl-pvshim    14 guest-start                  fail   never pass
 test-amd64-amd64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit2  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit2  16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl          15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl          16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-credit1  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit1  16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-thunderx 15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-thunderx 16 saverestore-support-check    fail   never pass
 test-arm64-arm64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-xsm 16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-xsm      15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-xsm      16 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-amd64-amd64-libvirt     15 migrate-support-check        fail   never pass
 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-armhf-armhf-libvirt     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-multivcpu 15 migrate-support-check        fail  never pass
 test-armhf-armhf-xl-multivcpu 16 saverestore-support-check    fail  never pass
 test-amd64-i386-libvirt-raw  14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 15 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-vhd 14 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-vhd      14 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-vhd      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-raw 14 migrate-support-check        fail   never pass
 test-armhf-armhf-libvirt-qcow2 14 migrate-support-check        fail never pass
 test-armhf-armhf-xl-vhd      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-rtds     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-rtds     16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl          15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-credit1  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit1  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-credit2  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit2  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-arndale  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-arndale  16 saverestore-support-check    fail   never pass

version targeted for testing:
 xen                  dbdd7e8df75030d0b1097eb5a1b3c3cb378a657b
baseline version:
 xen                  98ae35cab0e40e59963f9f58345bf378b9522d74

Last test of basis   184459  2024-01-25 06:45:32 Z    1 days
Testing same since   184470  2024-01-26 02:32:21 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Andrew Cooper <andrew.cooper3@citrix.com>
  Jan Beulich <jbeulich@suse.com>
  Jason Andryuk <jandryuk@gmail.com>
  Julien Grall <jgrall@amazon.com>
  Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
  Roger Pau Monne <roger.pau@citrix.com>
  Roger Pau Monné <roger.pau@citrix.com>

jobs:
 build-amd64-xsm                                              pass    
 build-arm64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64-xtf                                              pass    
 build-amd64                                                  pass    
 build-arm64                                                  pass    
 build-armhf                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-arm64-libvirt                                          pass    
 build-armhf-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-prev                                             pass    
 build-i386-prev                                              pass    
 build-amd64-pvops                                            pass    
 build-arm64-pvops                                            pass    
 build-armhf-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-xtf-amd64-amd64-1                                       pass    
 test-xtf-amd64-amd64-2                                       pass    
 test-xtf-amd64-amd64-3                                       pass    
 test-xtf-amd64-amd64-4                                       pass    
 test-xtf-amd64-amd64-5                                       pass    
 test-amd64-amd64-xl                                          pass    
 test-amd64-coresched-amd64-xl                                pass    
 test-arm64-arm64-xl                                          pass    
 test-armhf-armhf-xl                                          pass    
 test-amd64-i386-xl                                           pass    
 test-amd64-coresched-i386-xl                                 pass    
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm           pass    
 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm            pass    
 test-amd64-amd64-xl-qemut-stubdom-debianhvm-amd64-xsm        pass    
 test-amd64-i386-xl-qemut-stubdom-debianhvm-amd64-xsm         pass    
 test-amd64-amd64-xl-qemut-debianhvm-i386-xsm                 pass    
 test-amd64-i386-xl-qemut-debianhvm-i386-xsm                  pass    
 test-amd64-amd64-xl-qemuu-debianhvm-i386-xsm                 pass    
 test-amd64-i386-xl-qemuu-debianhvm-i386-xsm                  pass    
 test-amd64-amd64-libvirt-xsm                                 pass    
 test-arm64-arm64-libvirt-xsm                                 pass    
 test-amd64-i386-libvirt-xsm                                  pass    
 test-amd64-amd64-xl-xsm                                      pass    
 test-arm64-arm64-xl-xsm                                      pass    
 test-amd64-i386-xl-xsm                                       pass    
 test-amd64-amd64-qemuu-nested-amd                            fail    
 test-amd64-amd64-xl-pvhv2-amd                                pass    
 test-amd64-i386-qemut-rhel6hvm-amd                           pass    
 test-amd64-i386-qemuu-rhel6hvm-amd                           pass    
 test-amd64-amd64-dom0pvh-xl-amd                              pass    
 test-amd64-amd64-xl-qemut-debianhvm-amd64                    pass    
 test-amd64-i386-xl-qemut-debianhvm-amd64                     pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64                    pass    
 test-amd64-i386-xl-qemuu-debianhvm-amd64                     pass    
 test-amd64-i386-freebsd10-amd64                              pass    
 test-amd64-amd64-qemuu-freebsd11-amd64                       pass    
 test-amd64-amd64-qemuu-freebsd12-amd64                       pass    
 test-amd64-amd64-xl-qemuu-ovmf-amd64                         pass    
 test-amd64-i386-xl-qemuu-ovmf-amd64                          pass    
 test-amd64-amd64-xl-qemut-win7-amd64                         fail    
 test-amd64-i386-xl-qemut-win7-amd64                          fail    
 test-amd64-amd64-xl-qemuu-win7-amd64                         fail    
 test-amd64-i386-xl-qemuu-win7-amd64                          fail    
 test-amd64-amd64-xl-qemut-ws16-amd64                         fail    
 test-amd64-i386-xl-qemut-ws16-amd64                          fail    
 test-amd64-amd64-xl-qemuu-ws16-amd64                         fail    
 test-amd64-i386-xl-qemuu-ws16-amd64                          fail    
 test-armhf-armhf-xl-arndale                                  pass    
 test-amd64-amd64-examine-bios                                pass    
 test-amd64-i386-examine-bios                                 pass    
 test-amd64-amd64-xl-credit1                                  pass    
 test-arm64-arm64-xl-credit1                                  pass    
 test-armhf-armhf-xl-credit1                                  pass    
 test-amd64-amd64-xl-credit2                                  pass    
 test-arm64-arm64-xl-credit2                                  pass    
 test-armhf-armhf-xl-credit2                                  pass    
 test-amd64-amd64-xl-qemuu-dmrestrict-amd64-dmrestrict        pass    
 test-amd64-i386-xl-qemuu-dmrestrict-amd64-dmrestrict         pass    
 test-amd64-amd64-examine                                     pass    
 test-arm64-arm64-examine                                     pass    
 test-armhf-armhf-examine                                     pass    
 test-amd64-i386-examine                                      pass    
 test-amd64-i386-freebsd10-i386                               pass    
 test-amd64-amd64-qemuu-nested-intel                          pass    
 test-amd64-amd64-xl-pvhv2-intel                              pass    
 test-amd64-i386-qemut-rhel6hvm-intel                         pass    
 test-amd64-i386-qemuu-rhel6hvm-intel                         pass    
 test-amd64-amd64-dom0pvh-xl-intel                            pass    
 test-amd64-amd64-libvirt                                     pass    
 test-armhf-armhf-libvirt                                     pass    
 test-amd64-i386-libvirt                                      pass    
 test-amd64-amd64-livepatch                                   pass    
 test-amd64-i386-livepatch                                    pass    
 test-amd64-amd64-migrupgrade                                 pass    
 test-amd64-i386-migrupgrade                                  pass    
 test-amd64-amd64-xl-multivcpu                                pass    
 test-armhf-armhf-xl-multivcpu                                pass    
 test-amd64-amd64-pair                                        pass    
 test-amd64-i386-pair                                         pass    
 test-amd64-amd64-libvirt-pair                                pass    
 test-amd64-i386-libvirt-pair                                 pass    
 test-amd64-amd64-xl-pvshim                                   pass    
 test-amd64-i386-xl-pvshim                                    fail    
 test-amd64-amd64-pygrub                                      pass    
 test-armhf-armhf-libvirt-qcow2                               pass    
 test-amd64-amd64-xl-qcow2                                    pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-armhf-armhf-libvirt-raw                                 pass    
 test-amd64-i386-libvirt-raw                                  pass    
 test-amd64-amd64-xl-rtds                                     pass    
 test-armhf-armhf-xl-rtds                                     pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64-shadow             pass    
 test-amd64-i386-xl-qemuu-debianhvm-amd64-shadow              pass    
 test-amd64-amd64-xl-shadow                                   pass    
 test-amd64-i386-xl-shadow                                    pass    
 test-arm64-arm64-xl-thunderx                                 pass    
 test-amd64-amd64-examine-uefi                                pass    
 test-amd64-i386-examine-uefi                                 pass    
 test-amd64-amd64-libvirt-vhd                                 pass    
 test-arm64-arm64-xl-vhd                                      pass    
 test-armhf-armhf-xl-vhd                                      pass    
 test-amd64-i386-xl-vhd                                       pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Pushing revision :

To xenbits.xen.org:/home/xen/git/xen.git
   98ae35cab0..dbdd7e8df7  dbdd7e8df75030d0b1097eb5a1b3c3cb378a657b -> master


From xen-devel-bounces@lists.xenproject.org Fri Jan 26 21:47:46 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 26 Jan 2024 21:47:46 +0000
Received: from list by lists.xenproject.org with outflank-mailman.672538.1046674 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTU34-00053b-4t; Fri, 26 Jan 2024 21:47:42 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 672538.1046674; Fri, 26 Jan 2024 21:47:42 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTU34-00053U-2K; Fri, 26 Jan 2024 21:47:42 +0000
Received: by outflank-mailman (input) for mailman id 672538;
 Fri, 26 Jan 2024 21:47:41 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=1+W5=JE=tklengyel.com=tamas@srs-se1.protection.inumbo.net>)
 id 1rTU33-00053O-1B
 for xen-devel@lists.xenproject.org; Fri, 26 Jan 2024 21:47:41 +0000
Received: from sender4-op-o12.zoho.com (sender4-op-o12.zoho.com
 [136.143.188.12]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 8545b31e-bc94-11ee-8a43-1f161083a0e0;
 Fri, 26 Jan 2024 22:47:38 +0100 (CET)
Received: from mail-yw1-f169.google.com (mail-yw1-f169.google.com
 [209.85.128.169]) by mx.zohomail.com
 with SMTPS id 1706305654228327.1509538128357;
 Fri, 26 Jan 2024 13:47:34 -0800 (PST)
Received: by mail-yw1-f169.google.com with SMTP id
 00721157ae682-6002a655d77so7844387b3.2
 for <xen-devel@lists.xenproject.org>; Fri, 26 Jan 2024 13:47:33 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 8545b31e-bc94-11ee-8a43-1f161083a0e0
ARC-Seal: i=1; a=rsa-sha256; t=1706305655; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=WhqyLomWD+CjfcR9uOpGCyO2ljAVP30t70ToQRR6AKV6OIxOwL1bzNaM8bxFkcFaam30F6V6tiSRchLRNdjifbHZ1H5KmO7jzjUOzhSvLhLK5F07G2kC1/miRsXKt5XE71os/4eq1NmYUvzAF8/7pCZKmDG+8VBNDxak7KK7pHk=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1706305655; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:MIME-Version:Message-ID:References:Subject:Subject:To:To:Message-Id:Reply-To; 
	bh=YGiGIDFjG4PrNXFSFDL+6Bvoflhj/fuR+Xx+JJqg9bs=; 
	b=GCo8fLLc3RferaIA/QW7b5A2YFA6cOOFTkt3XKJrvS5TEvtB79DxiV32O6GZ/sP+CvRVJUKMdgCNkc5R7KVshXcJ09FUz1hlQTNYdzfyjLP1ZMwapjGd5sfnZqzMihkb/W0rfxOw7qh6lz3wBd1A3gehV/l9ddpSQpTY2yKt7Yg=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=tklengyel.com;
	spf=pass  smtp.mailfrom=tamas@tklengyel.com;
	dmarc=pass header.from=<tamas@tklengyel.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1706305655;
	s=zmail; d=tklengyel.com; i=tamas@tklengyel.com;
	h=MIME-Version:References:In-Reply-To:From:From:Date:Date:Message-ID:Subject:Subject:To:To:Cc:Cc:Content-Type:Content-Transfer-Encoding:Message-Id:Reply-To;
	bh=YGiGIDFjG4PrNXFSFDL+6Bvoflhj/fuR+Xx+JJqg9bs=;
	b=FzSNdFmKFe36VlCqZVEXKvETtT6W58mCBUrBZfxcdBNEigpCetmjPrEEvTg2Ijvh
	xf3B/dWGzH4kMuWHLioUPLp28ihNelt9aTr9lYEKRu+L6tLyvbkaSQzCiKW+CLQfPkp
	Hd/dWHsijWwXWoQbCau3QbfvMaW+552wfzZWlpUQ=
X-Gm-Message-State: AOJu0Ywe0Tedvrorrs5WucskzfjR7hwtRvBRANQ86qVcZk+fJG2YdNBX
	/136o4u58EP9I6qsj3b0HQAbvArXo357xbNaGsIepLC73Rv2+nCc3E++/3iVaIL9AkD5Iuq7zeY
	PMrIqS1I2v5bCsVCmHckhvMsh4B4=
X-Google-Smtp-Source: AGHT+IGDcWTA06F/oJpZn3610o/9dxSjUn6VkONGmlSEOZOmzvdt5WcNpmq+4dOWdgK8vgeYzyFeI5swb6RMBmllWeM=
X-Received: by 2002:a81:ae65:0:b0:602:c6ac:890a with SMTP id
 g37-20020a81ae65000000b00602c6ac890amr449057ywk.51.1706305653196; Fri, 26 Jan
 2024 13:47:33 -0800 (PST)
MIME-Version: 1.0
References: <cover.1706281994.git.oleksii.kurochko@gmail.com> <da7d16d1ab857e103c1b729d5ee3c9d588e1d3e0.1706281994.git.oleksii.kurochko@gmail.com>
In-Reply-To: <da7d16d1ab857e103c1b729d5ee3c9d588e1d3e0.1706281994.git.oleksii.kurochko@gmail.com>
From: Tamas K Lengyel <tamas@tklengyel.com>
Date: Fri, 26 Jan 2024 16:46:56 -0500
X-Gmail-Original-Message-ID: <CABfawhmfJ14FE+GcP-s=Hb5aAw7n5QvYUwZMLTeUgPek47Z2yg@mail.gmail.com>
Message-ID: <CABfawhmfJ14FE+GcP-s=Hb5aAw7n5QvYUwZMLTeUgPek47Z2yg@mail.gmail.com>
Subject: Re: [PATCH v7 3/7] xen/asm-generic: introduce stub header monitor.h
To: Oleksii Kurochko <oleksii.kurochko@gmail.com>
Cc: xen-devel@lists.xenproject.org, Alexandru Isaila <aisaila@bitdefender.com>, 
	Petre Pircalabu <ppircalabu@bitdefender.com>, Stefano Stabellini <sstabellini@kernel.org>, 
	Julien Grall <julien@xen.org>, Bertrand Marquis <bertrand.marquis@arm.com>, 
	Michal Orzel <michal.orzel@amd.com>, Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>, 
	Shawn Anastasio <sanastasio@raptorengineering.com>, Jan Beulich <jbeulich@suse.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

On Fri, Jan 26, 2024 at 10:42=E2=80=AFAM Oleksii Kurochko
<oleksii.kurochko@gmail.com> wrote:
>
> The header is shared between several archs so it is
> moved to asm-generic.
>
> Switch partly Arm and PPC to asm-generic/monitor.h and only
> arch_monitor_get_capabilities() left in arch-specific/monitor.h.
>
> Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>
> Acked-by: Jan Beulich <jbeulich@suse.com>

Acked-by: Tamas K Lengyel <tamas@tklengyel.com>


From xen-devel-bounces@lists.xenproject.org Fri Jan 26 21:49:47 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 26 Jan 2024 21:49:47 +0000
Received: from list by lists.xenproject.org with outflank-mailman.672545.1046684 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTU52-0006PN-Fx; Fri, 26 Jan 2024 21:49:44 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 672545.1046684; Fri, 26 Jan 2024 21:49:44 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTU52-0006PG-Cm; Fri, 26 Jan 2024 21:49:44 +0000
Received: by outflank-mailman (input) for mailman id 672545;
 Fri, 26 Jan 2024 21:49:42 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=1+W5=JE=tklengyel.com=tamas@srs-se1.protection.inumbo.net>)
 id 1rTU50-0006PA-Ox
 for xen-devel@lists.xenproject.org; Fri, 26 Jan 2024 21:49:42 +0000
Received: from sender4-op-o12.zoho.com (sender4-op-o12.zoho.com
 [136.143.188.12]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id ce15353b-bc94-11ee-98f5-efadbce2ee36;
 Fri, 26 Jan 2024 22:49:40 +0100 (CET)
Received: from mail-yw1-f182.google.com (mail-yw1-f182.google.com
 [209.85.128.182]) by mx.zohomail.com
 with SMTPS id 1706305775574428.08918493061356;
 Fri, 26 Jan 2024 13:49:35 -0800 (PST)
Received: by mail-yw1-f182.google.com with SMTP id
 00721157ae682-602cf45bfe9so8506767b3.1
 for <xen-devel@lists.xenproject.org>; Fri, 26 Jan 2024 13:49:35 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: ce15353b-bc94-11ee-98f5-efadbce2ee36
ARC-Seal: i=1; a=rsa-sha256; t=1706305777; cv=none; 
	d=zohomail.com; s=zohoarc; 
	b=UuW5D2AUY/6Gm7REZ9N8PQJ/E2CvEx5HhtjSZ9KYJb1uRRllrSvz8ltKJrKpSzsfxUUS8licVYPO91xv5H136gNy3yvvaodcRnjJnvWJ/38rpTVJCLlN5PGs6cfdxed/jsowyMXyaP4V7CRtOeqmY8GJSHWmKdzWnclp+G1qrhQ=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; 
	t=1706305777; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:MIME-Version:Message-ID:References:Subject:Subject:To:To:Message-Id:Reply-To; 
	bh=byCJeq9qylYIhTpENFoknC1RQg2HB1JYDz1FifW7c2k=; 
	b=EthEuQ2pm+xGrWo59C53/Eonj6T26RabHX/XFOa1RO9Uel52OdeFLUXrCytnUyUKIxb91l3EkRqrXMHxjdVbPVWKfnb9tsPgo7cERDSRK/bPaXOCWgEYrzIetjPJPG+JDGD66BikBtalq6MTlt55AqBv72tMP4IE666WimsSpVo=
ARC-Authentication-Results: i=1; mx.zohomail.com;
	dkim=pass  header.i=tklengyel.com;
	spf=pass  smtp.mailfrom=tamas@tklengyel.com;
	dmarc=pass header.from=<tamas@tklengyel.com>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1706305777;
	s=zmail; d=tklengyel.com; i=tamas@tklengyel.com;
	h=MIME-Version:References:In-Reply-To:From:From:Date:Date:Message-ID:Subject:Subject:To:To:Cc:Cc:Content-Type:Content-Transfer-Encoding:Message-Id:Reply-To;
	bh=byCJeq9qylYIhTpENFoknC1RQg2HB1JYDz1FifW7c2k=;
	b=OfeJnFdusyzgG0J1xSn/ZgtdvDiw6xoDhY4Nb+lwhqrIKI9183vnA38EYzwCl8vA
	3pyGklCet00HoifE6xn9oXi/QFZIXlgnBS8TaLafdmWPhwaAtev/0BHV9Jbuj9h+1e2
	KFDMb23RiscyHobyGghZ1c2dCv+pqG962PQsLkhY=
X-Gm-Message-State: AOJu0YzuYHEPSLFhWxYNvW0o+s37VY6Jv7ndiQtSF7zS8Y8mrtyus39n
	SYIJ4yA+jLKwirmi6K5cjM3+xJdyXresdQS5ORNAKe/+gVUMA+ihMbAa7x+qWUB4MlmY17BgDTG
	PX3xJgMGmAJjmAVU2qbeuoC3hH80=
X-Google-Smtp-Source: AGHT+IFO1YXT2VdMmSiByLYaYaBq7NtT1CE6O+Qf/sduWnYfRtiwxaH9VRNumR1gjhT1j0ZHZ4E8GpIBTe4GaexzT5E=
X-Received: by 2002:a81:4520:0:b0:5ff:5e9d:8374 with SMTP id
 s32-20020a814520000000b005ff5e9d8374mr495183ywa.41.1706305774631; Fri, 26 Jan
 2024 13:49:34 -0800 (PST)
MIME-Version: 1.0
References: <cover.1706281994.git.oleksii.kurochko@gmail.com> <30c450ef4141656724b03adcc292fd1ac4b635b6.1706281994.git.oleksii.kurochko@gmail.com>
In-Reply-To: <30c450ef4141656724b03adcc292fd1ac4b635b6.1706281994.git.oleksii.kurochko@gmail.com>
From: Tamas K Lengyel <tamas@tklengyel.com>
Date: Fri, 26 Jan 2024 16:48:58 -0500
X-Gmail-Original-Message-ID: <CABfawhnvc6q3vtP-BHaC9zQVr4MbkrtckTyT2e5_yzeouKOuyQ@mail.gmail.com>
Message-ID: <CABfawhnvc6q3vtP-BHaC9zQVr4MbkrtckTyT2e5_yzeouKOuyQ@mail.gmail.com>
Subject: Re: [PATCH v7 4/7] xen/asm-generic: ifdef inclusion of <asm/mem_access.h>
To: Oleksii Kurochko <oleksii.kurochko@gmail.com>
Cc: xen-devel@lists.xenproject.org, 
	Stefano Stabellini <sstabellini@kernel.org>, Julien Grall <julien@xen.org>, 
	Bertrand Marquis <bertrand.marquis@arm.com>, Michal Orzel <michal.orzel@amd.com>, 
	Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>, 
	Shawn Anastasio <sanastasio@raptorengineering.com>, 
	Alexandru Isaila <aisaila@bitdefender.com>, Petre Pircalabu <ppircalabu@bitdefender.com>, 
	Alistair Francis <alistair.francis@wdc.com>, Bob Eshleman <bobbyeshleman@gmail.com>, 
	Connor Davis <connojdavis@gmail.com>, Jan Beulich <jbeulich@suse.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

On Fri, Jan 26, 2024 at 10:42=E2=80=AFAM Oleksii Kurochko
<oleksii.kurochko@gmail.com> wrote:
>
> ifdefing inclusion of <asm/mem_access.h> in <xen/mem_access.h>
> allows to avoid generation of empty <asm/mem_access.h> header
> for the case when !CONFIG_MEM_ACCESS.
>
> For Arm it was explicitly added inclusion of <asm/mem_access.h> for p2m.c
> and traps.c because they require some functions from <asm/mem_access.h> w=
hich
> aren't available in case of !CONFIG_MEM_ACCESS.
>
> Suggested-by: Jan Beulich <jbeulich@suse.com>
> Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>

Acked-by: Tamas K Lengyel <tamas@tklengyel.com>


From xen-devel-bounces@lists.xenproject.org Fri Jan 26 22:05:28 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 26 Jan 2024 22:05:28 +0000
Received: from list by lists.xenproject.org with outflank-mailman.672552.1046695 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTUK3-0000k1-OA; Fri, 26 Jan 2024 22:05:15 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 672552.1046695; Fri, 26 Jan 2024 22:05:15 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTUK3-0000ju-LF; Fri, 26 Jan 2024 22:05:15 +0000
Received: by outflank-mailman (input) for mailman id 672552;
 Fri, 26 Jan 2024 22:05:14 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=HlWE=JE=linaro.org=philmd@srs-se1.protection.inumbo.net>)
 id 1rTUK2-0000jl-8k
 for xen-devel@lists.xenproject.org; Fri, 26 Jan 2024 22:05:14 +0000
Received: from mail-wm1-x32a.google.com (mail-wm1-x32a.google.com
 [2a00:1450:4864:20::32a])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id f9d30e6a-bc96-11ee-98f5-efadbce2ee36;
 Fri, 26 Jan 2024 23:05:11 +0100 (CET)
Received: by mail-wm1-x32a.google.com with SMTP id
 5b1f17b1804b1-40ee418e7edso13000765e9.2
 for <xen-devel@lists.xenproject.org>; Fri, 26 Jan 2024 14:05:11 -0800 (PST)
Received: from m1x-phil.lan ([176.176.142.39])
 by smtp.gmail.com with ESMTPSA id
 cw18-20020a170906c79200b00a31636793dfsm1038645ejb.201.2024.01.26.14.05.09
 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256);
 Fri, 26 Jan 2024 14:05:10 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: f9d30e6a-bc96-11ee-98f5-efadbce2ee36
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=linaro.org; s=google; t=1706306711; x=1706911511; darn=lists.xenproject.org;
        h=content-transfer-encoding:mime-version:references:in-reply-to
         :message-id:date:subject:cc:to:from:from:to:cc:subject:date
         :message-id:reply-to;
        bh=O/oRcO4tifb6RNqppQVorvK9C+RbZOPQjJLz1T1FbLY=;
        b=zqGJnKLwwI1zd5UrzuFLoB0mDJZyZLfDtDTxEZy6OHtwUf7V+9We2RfrIybaVpudYP
         LAmpV8L1nAyGO5AFkinjQt0GRxfvTOQJd/SkT7MCJtGM1+rLehoABYhTqT6eeAsVkOjD
         rhh/t/LF4IcXJxE9jWAjS/kn8FCyiEvmirPQKtF4T6YsS+XN9fEVFb/nxTCwCcXxkBgb
         QFOHy6C5fg+Z3VPzbgc+ntO6yG5+IoFc46FYfgUTOtWIcjbJjTMOHJ6MYqfT+hc2Qp8Y
         7ic80IFCjOW0Lo2qju1jNGiCDQJZ7FqLwxgzFq3+JeHGNjf0woelZ1pmOoz4jr4CYmjZ
         zpaQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706306711; x=1706911511;
        h=content-transfer-encoding:mime-version:references:in-reply-to
         :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to;
        bh=O/oRcO4tifb6RNqppQVorvK9C+RbZOPQjJLz1T1FbLY=;
        b=itR/8veGw8PaXl54vhCmNSa9H6geQWeb5IVs2lJRuWk96HykGsCRtrKKP4YxqudXbC
         2sUb9K9wgnEEzTNmOPASqn0HwmzBA4EJbxflesJSpbCiSfGe6oKxZ3LjUGN4/lfwfv2N
         cqfTG6oh1ty9JxOqZlayIJRGlyJB3iysxcCaKzIfAqjBrL+uDwNVkbEnuXIILUby1Xvm
         n22xnyBxAYj8RuYhGAYuE1Fngavsl1c1OY5yQLwtgOfFVtISYH8ghPSS75Bc4nPDAMVr
         ZwHu22M0rylSgHweHnaSTRmXzZ1mzX3x2EH3VgjeUk+6EvlZxXIKANWsfgTOwgAYg+Ud
         T3Rw==
X-Gm-Message-State: AOJu0YwTuenIi3lUYs8OKVIaVtl8V5BaL95CdvywzW9ffMhgW/wmXBvQ
	lEb3GEdjHjMQNhJALKXAcmuVhdveN7pub+LbRwIAAJ9feQBmEAZXokC8p5Faa5A=
X-Google-Smtp-Source: AGHT+IFqlZ6gejaHz+iVyCgYbo6dNxfkBfnjFlmKrgI+NEH34xUembPlE5gAMbO4+w2GB13SlMXmPA==
X-Received: by 2002:a05:600c:2d03:b0:40e:4ab2:cd75 with SMTP id x3-20020a05600c2d0300b0040e4ab2cd75mr349220wmf.74.1706306711223;
        Fri, 26 Jan 2024 14:05:11 -0800 (PST)
From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= <philmd@linaro.org>
To: qemu-devel@nongnu.org
Cc: qemu-arm@nongnu.org,
	Thomas Huth <thuth@redhat.com>,
	qemu-s390x@nongnu.org,
	qemu-riscv@nongnu.org,
	Eduardo Habkost <eduardo@habkost.net>,
	kvm@vger.kernel.org,
	qemu-ppc@nongnu.org,
	Richard Henderson <richard.henderson@linaro.org>,
	Vladimir Sementsov-Ogievskiy <vsementsov@yandex-team.ru>,
	Paolo Bonzini <pbonzini@redhat.com>,
	=?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= <philmd@linaro.org>,
	"Michael S. Tsirkin" <mst@redhat.com>,
	Marcel Apfelbaum <marcel.apfelbaum@gmail.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Anthony Perard <anthony.perard@citrix.com>,
	Paul Durrant <paul@xen.org>,
	Cameron Esfahani <dirty@apple.com>,
	Roman Bolshakov <rbolshakov@ddn.com>,
	Marcelo Tosatti <mtosatti@redhat.com>,
	David Woodhouse <dwmw2@infradead.org>,
	xen-devel@lists.xenproject.org
Subject: [PATCH v2 10/23] target/i386: Prefer fast cpu_env() over slower CPU QOM cast macro
Date: Fri, 26 Jan 2024 23:03:52 +0100
Message-ID: <20240126220407.95022-11-philmd@linaro.org>
X-Mailer: git-send-email 2.41.0
In-Reply-To: <20240126220407.95022-1-philmd@linaro.org>
References: <20240126220407.95022-1-philmd@linaro.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Mechanical patch produced running the command documented
in scripts/coccinelle/cpu_env.cocci_template header.

Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
---
 target/i386/hvf/vmx.h               | 13 +++-------
 hw/i386/vmmouse.c                   |  6 ++---
 hw/i386/xen/xen-hvm.c               |  3 +--
 target/i386/arch_memory_mapping.c   |  3 +--
 target/i386/cpu-dump.c              |  3 +--
 target/i386/cpu.c                   | 37 +++++++++------------------
 target/i386/helper.c                | 39 ++++++++---------------------
 target/i386/hvf/hvf.c               |  8 ++----
 target/i386/hvf/x86.c               |  4 +--
 target/i386/hvf/x86_emu.c           |  6 ++---
 target/i386/hvf/x86_task.c          | 10 +++-----
 target/i386/hvf/x86hvf.c            |  6 ++---
 target/i386/kvm/kvm.c               |  6 ++---
 target/i386/kvm/xen-emu.c           | 32 ++++++++---------------
 target/i386/tcg/sysemu/bpt_helper.c |  3 +--
 target/i386/tcg/tcg-cpu.c           | 14 +++--------
 target/i386/tcg/user/excp_helper.c  |  3 +--
 target/i386/tcg/user/seg_helper.c   |  3 +--
 18 files changed, 59 insertions(+), 140 deletions(-)

diff --git a/target/i386/hvf/vmx.h b/target/i386/hvf/vmx.h
index 0fffcfa46c..1ad042269b 100644
--- a/target/i386/hvf/vmx.h
+++ b/target/i386/hvf/vmx.h
@@ -175,8 +175,7 @@ static inline void macvm_set_cr4(hv_vcpuid_t vcpu, uint64_t cr4)
 
 static inline void macvm_set_rip(CPUState *cpu, uint64_t rip)
 {
-    X86CPU *x86_cpu = X86_CPU(cpu);
-    CPUX86State *env = &x86_cpu->env;
+    CPUX86State *env = cpu_env(cpu);
     uint64_t val;
 
     /* BUG, should take considering overlap.. */
@@ -196,10 +195,7 @@ static inline void macvm_set_rip(CPUState *cpu, uint64_t rip)
 
 static inline void vmx_clear_nmi_blocking(CPUState *cpu)
 {
-    X86CPU *x86_cpu = X86_CPU(cpu);
-    CPUX86State *env = &x86_cpu->env;
-
-    env->hflags2 &= ~HF2_NMI_MASK;
+    cpu_env(cpu)->hflags2 &= ~HF2_NMI_MASK;
     uint32_t gi = (uint32_t) rvmcs(cpu->accel->fd, VMCS_GUEST_INTERRUPTIBILITY);
     gi &= ~VMCS_INTERRUPTIBILITY_NMI_BLOCKING;
     wvmcs(cpu->accel->fd, VMCS_GUEST_INTERRUPTIBILITY, gi);
@@ -207,10 +203,7 @@ static inline void vmx_clear_nmi_blocking(CPUState *cpu)
 
 static inline void vmx_set_nmi_blocking(CPUState *cpu)
 {
-    X86CPU *x86_cpu = X86_CPU(cpu);
-    CPUX86State *env = &x86_cpu->env;
-
-    env->hflags2 |= HF2_NMI_MASK;
+    cpu_env(cpu)->hflags2 |= HF2_NMI_MASK;
     uint32_t gi = (uint32_t)rvmcs(cpu->accel->fd, VMCS_GUEST_INTERRUPTIBILITY);
     gi |= VMCS_INTERRUPTIBILITY_NMI_BLOCKING;
     wvmcs(cpu->accel->fd, VMCS_GUEST_INTERRUPTIBILITY, gi);
diff --git a/hw/i386/vmmouse.c b/hw/i386/vmmouse.c
index a8d014d09a..f292a14a15 100644
--- a/hw/i386/vmmouse.c
+++ b/hw/i386/vmmouse.c
@@ -74,8 +74,7 @@ struct VMMouseState {
 
 static void vmmouse_get_data(uint32_t *data)
 {
-    X86CPU *cpu = X86_CPU(current_cpu);
-    CPUX86State *env = &cpu->env;
+    CPUX86State *env = cpu_env(current_cpu);
 
     data[0] = env->regs[R_EAX]; data[1] = env->regs[R_EBX];
     data[2] = env->regs[R_ECX]; data[3] = env->regs[R_EDX];
@@ -84,8 +83,7 @@ static void vmmouse_get_data(uint32_t *data)
 
 static void vmmouse_set_data(const uint32_t *data)
 {
-    X86CPU *cpu = X86_CPU(current_cpu);
-    CPUX86State *env = &cpu->env;
+    CPUX86State *env = cpu_env(current_cpu);
 
     env->regs[R_EAX] = data[0]; env->regs[R_EBX] = data[1];
     env->regs[R_ECX] = data[2]; env->regs[R_EDX] = data[3];
diff --git a/hw/i386/xen/xen-hvm.c b/hw/i386/xen/xen-hvm.c
index f42621e674..61e5060117 100644
--- a/hw/i386/xen/xen-hvm.c
+++ b/hw/i386/xen/xen-hvm.c
@@ -487,8 +487,7 @@ static void regs_to_cpu(vmware_regs_t *vmport_regs, ioreq_t *req)
 
 static void regs_from_cpu(vmware_regs_t *vmport_regs)
 {
-    X86CPU *cpu = X86_CPU(current_cpu);
-    CPUX86State *env = &cpu->env;
+    CPUX86State *env = cpu_env(current_cpu);
 
     vmport_regs->ebx = env->regs[R_EBX];
     vmport_regs->ecx = env->regs[R_ECX];
diff --git a/target/i386/arch_memory_mapping.c b/target/i386/arch_memory_mapping.c
index d1ff659128..c0604d5956 100644
--- a/target/i386/arch_memory_mapping.c
+++ b/target/i386/arch_memory_mapping.c
@@ -269,8 +269,7 @@ static void walk_pml5e(MemoryMappingList *list, AddressSpace *as,
 bool x86_cpu_get_memory_mapping(CPUState *cs, MemoryMappingList *list,
                                 Error **errp)
 {
-    X86CPU *cpu = X86_CPU(cs);
-    CPUX86State *env = &cpu->env;
+    CPUX86State *env = cpu_env(cs);
     int32_t a20_mask;
 
     if (!cpu_paging_enabled(cs)) {
diff --git a/target/i386/cpu-dump.c b/target/i386/cpu-dump.c
index 40697064d9..5459d84abd 100644
--- a/target/i386/cpu-dump.c
+++ b/target/i386/cpu-dump.c
@@ -343,8 +343,7 @@ void x86_cpu_dump_local_apic_state(CPUState *cs, int flags)
 
 void x86_cpu_dump_state(CPUState *cs, FILE *f, int flags)
 {
-    X86CPU *cpu = X86_CPU(cs);
-    CPUX86State *env = &cpu->env;
+    CPUX86State *env = cpu_env(cs);
     int eflags, i, nb;
     char cc_op_name[32];
     static const char *seg_name[6] = { "ES", "CS", "SS", "DS", "FS", "GS" };
diff --git a/target/i386/cpu.c b/target/i386/cpu.c
index 03822d9ba8..4702bff071 100644
--- a/target/i386/cpu.c
+++ b/target/i386/cpu.c
@@ -5062,8 +5062,7 @@ static void x86_cpuid_version_get_family(Object *obj, Visitor *v,
                                          const char *name, void *opaque,
                                          Error **errp)
 {
-    X86CPU *cpu = X86_CPU(obj);
-    CPUX86State *env = &cpu->env;
+    CPUX86State *env = cpu_env(CPU(obj));
     int64_t value;
 
     value = (env->cpuid_version >> 8) & 0xf;
@@ -5077,8 +5076,7 @@ static void x86_cpuid_version_set_family(Object *obj, Visitor *v,
                                          const char *name, void *opaque,
                                          Error **errp)
 {
-    X86CPU *cpu = X86_CPU(obj);
-    CPUX86State *env = &cpu->env;
+    CPUX86State *env = cpu_env(CPU(obj));
     const int64_t min = 0;
     const int64_t max = 0xff + 0xf;
     int64_t value;
@@ -5104,8 +5102,7 @@ static void x86_cpuid_version_get_model(Object *obj, Visitor *v,
                                         const char *name, void *opaque,
                                         Error **errp)
 {
-    X86CPU *cpu = X86_CPU(obj);
-    CPUX86State *env = &cpu->env;
+    CPUX86State *env = cpu_env(CPU(obj));
     int64_t value;
 
     value = (env->cpuid_version >> 4) & 0xf;
@@ -5117,8 +5114,7 @@ static void x86_cpuid_version_set_model(Object *obj, Visitor *v,
                                         const char *name, void *opaque,
                                         Error **errp)
 {
-    X86CPU *cpu = X86_CPU(obj);
-    CPUX86State *env = &cpu->env;
+    CPUX86State *env = cpu_env(CPU(obj));
     const int64_t min = 0;
     const int64_t max = 0xff;
     int64_t value;
@@ -5140,11 +5136,9 @@ static void x86_cpuid_version_get_stepping(Object *obj, Visitor *v,
                                            const char *name, void *opaque,
                                            Error **errp)
 {
-    X86CPU *cpu = X86_CPU(obj);
-    CPUX86State *env = &cpu->env;
     int64_t value;
 
-    value = env->cpuid_version & 0xf;
+    value = cpu_env(CPU(obj))->cpuid_version & 0xf;
     visit_type_int(v, name, &value, errp);
 }
 
@@ -5152,8 +5146,7 @@ static void x86_cpuid_version_set_stepping(Object *obj, Visitor *v,
                                            const char *name, void *opaque,
                                            Error **errp)
 {
-    X86CPU *cpu = X86_CPU(obj);
-    CPUX86State *env = &cpu->env;
+    CPUX86State *env = cpu_env(CPU(obj));
     const int64_t min = 0;
     const int64_t max = 0xf;
     int64_t value;
@@ -5173,8 +5166,7 @@ static void x86_cpuid_version_set_stepping(Object *obj, Visitor *v,
 
 static char *x86_cpuid_get_vendor(Object *obj, Error **errp)
 {
-    X86CPU *cpu = X86_CPU(obj);
-    CPUX86State *env = &cpu->env;
+    CPUX86State *env = cpu_env(CPU(obj));
     char *value;
 
     value = g_malloc(CPUID_VENDOR_SZ + 1);
@@ -5186,8 +5178,7 @@ static char *x86_cpuid_get_vendor(Object *obj, Error **errp)
 static void x86_cpuid_set_vendor(Object *obj, const char *value,
                                  Error **errp)
 {
-    X86CPU *cpu = X86_CPU(obj);
-    CPUX86State *env = &cpu->env;
+    CPUX86State *env = cpu_env(CPU(obj));
     int i;
 
     if (strlen(value) != CPUID_VENDOR_SZ) {
@@ -5208,8 +5199,7 @@ static void x86_cpuid_set_vendor(Object *obj, const char *value,
 
 static char *x86_cpuid_get_model_id(Object *obj, Error **errp)
 {
-    X86CPU *cpu = X86_CPU(obj);
-    CPUX86State *env = &cpu->env;
+    CPUX86State *env = cpu_env(CPU(obj));
     char *value;
     int i;
 
@@ -5224,8 +5214,7 @@ static char *x86_cpuid_get_model_id(Object *obj, Error **errp)
 static void x86_cpuid_set_model_id(Object *obj, const char *model_id,
                                    Error **errp)
 {
-    X86CPU *cpu = X86_CPU(obj);
-    CPUX86State *env = &cpu->env;
+    CPUX86State *env = cpu_env(CPU(obj));
     int c, len, i;
 
     if (model_id == NULL) {
@@ -7673,8 +7662,7 @@ static vaddr x86_cpu_get_pc(CPUState *cs)
 
 int x86_cpu_pending_interrupt(CPUState *cs, int interrupt_request)
 {
-    X86CPU *cpu = X86_CPU(cs);
-    CPUX86State *env = &cpu->env;
+    CPUX86State *env = cpu_env(cs);
 
 #if !defined(CONFIG_USER_ONLY)
     if (interrupt_request & CPU_INTERRUPT_POLL) {
@@ -7722,8 +7710,7 @@ static bool x86_cpu_has_work(CPUState *cs)
 
 static void x86_disas_set_info(CPUState *cs, disassemble_info *info)
 {
-    X86CPU *cpu = X86_CPU(cs);
-    CPUX86State *env = &cpu->env;
+    CPUX86State *env = cpu_env(cs);
 
     info->mach = (env->hflags & HF_CS64_MASK ? bfd_mach_x86_64
                   : env->hflags & HF_CS32_MASK ? bfd_mach_i386_i386
diff --git a/target/i386/helper.c b/target/i386/helper.c
index 2070dd0dda..1e519c8b13 100644
--- a/target/i386/helper.c
+++ b/target/i386/helper.c
@@ -230,8 +230,7 @@ void cpu_x86_update_cr4(CPUX86State *env, uint32_t new_cr4)
 hwaddr x86_cpu_get_phys_page_attrs_debug(CPUState *cs, vaddr addr,
                                          MemTxAttrs *attrs)
 {
-    X86CPU *cpu = X86_CPU(cs);
-    CPUX86State *env = &cpu->env;
+    CPUX86State *env = cpu_env(cs);
     target_ulong pde_addr, pte_addr;
     uint64_t pte;
     int32_t a20_mask;
@@ -625,9 +624,7 @@ void cpu_load_efer(CPUX86State *env, uint64_t val)
 
 uint8_t x86_ldub_phys(CPUState *cs, hwaddr addr)
 {
-    X86CPU *cpu = X86_CPU(cs);
-    CPUX86State *env = &cpu->env;
-    MemTxAttrs attrs = cpu_get_mem_attrs(env);
+    MemTxAttrs attrs = cpu_get_mem_attrs(cpu_env(cs));
     AddressSpace *as = cpu_addressspace(cs, attrs);
 
     return address_space_ldub(as, addr, attrs, NULL);
@@ -635,9 +632,7 @@ uint8_t x86_ldub_phys(CPUState *cs, hwaddr addr)
 
 uint32_t x86_lduw_phys(CPUState *cs, hwaddr addr)
 {
-    X86CPU *cpu = X86_CPU(cs);
-    CPUX86State *env = &cpu->env;
-    MemTxAttrs attrs = cpu_get_mem_attrs(env);
+    MemTxAttrs attrs = cpu_get_mem_attrs(cpu_env(cs));
     AddressSpace *as = cpu_addressspace(cs, attrs);
 
     return address_space_lduw(as, addr, attrs, NULL);
@@ -645,9 +640,7 @@ uint32_t x86_lduw_phys(CPUState *cs, hwaddr addr)
 
 uint32_t x86_ldl_phys(CPUState *cs, hwaddr addr)
 {
-    X86CPU *cpu = X86_CPU(cs);
-    CPUX86State *env = &cpu->env;
-    MemTxAttrs attrs = cpu_get_mem_attrs(env);
+    MemTxAttrs attrs = cpu_get_mem_attrs(cpu_env(cs));
     AddressSpace *as = cpu_addressspace(cs, attrs);
 
     return address_space_ldl(as, addr, attrs, NULL);
@@ -655,9 +648,7 @@ uint32_t x86_ldl_phys(CPUState *cs, hwaddr addr)
 
 uint64_t x86_ldq_phys(CPUState *cs, hwaddr addr)
 {
-    X86CPU *cpu = X86_CPU(cs);
-    CPUX86State *env = &cpu->env;
-    MemTxAttrs attrs = cpu_get_mem_attrs(env);
+    MemTxAttrs attrs = cpu_get_mem_attrs(cpu_env(cs));
     AddressSpace *as = cpu_addressspace(cs, attrs);
 
     return address_space_ldq(as, addr, attrs, NULL);
@@ -665,9 +656,7 @@ uint64_t x86_ldq_phys(CPUState *cs, hwaddr addr)
 
 void x86_stb_phys(CPUState *cs, hwaddr addr, uint8_t val)
 {
-    X86CPU *cpu = X86_CPU(cs);
-    CPUX86State *env = &cpu->env;
-    MemTxAttrs attrs = cpu_get_mem_attrs(env);
+    MemTxAttrs attrs = cpu_get_mem_attrs(cpu_env(cs));
     AddressSpace *as = cpu_addressspace(cs, attrs);
 
     address_space_stb(as, addr, val, attrs, NULL);
@@ -675,9 +664,7 @@ void x86_stb_phys(CPUState *cs, hwaddr addr, uint8_t val)
 
 void x86_stl_phys_notdirty(CPUState *cs, hwaddr addr, uint32_t val)
 {
-    X86CPU *cpu = X86_CPU(cs);
-    CPUX86State *env = &cpu->env;
-    MemTxAttrs attrs = cpu_get_mem_attrs(env);
+    MemTxAttrs attrs = cpu_get_mem_attrs(cpu_env(cs));
     AddressSpace *as = cpu_addressspace(cs, attrs);
 
     address_space_stl_notdirty(as, addr, val, attrs, NULL);
@@ -685,9 +672,7 @@ void x86_stl_phys_notdirty(CPUState *cs, hwaddr addr, uint32_t val)
 
 void x86_stw_phys(CPUState *cs, hwaddr addr, uint32_t val)
 {
-    X86CPU *cpu = X86_CPU(cs);
-    CPUX86State *env = &cpu->env;
-    MemTxAttrs attrs = cpu_get_mem_attrs(env);
+    MemTxAttrs attrs = cpu_get_mem_attrs(cpu_env(cs));
     AddressSpace *as = cpu_addressspace(cs, attrs);
 
     address_space_stw(as, addr, val, attrs, NULL);
@@ -695,9 +680,7 @@ void x86_stw_phys(CPUState *cs, hwaddr addr, uint32_t val)
 
 void x86_stl_phys(CPUState *cs, hwaddr addr, uint32_t val)
 {
-    X86CPU *cpu = X86_CPU(cs);
-    CPUX86State *env = &cpu->env;
-    MemTxAttrs attrs = cpu_get_mem_attrs(env);
+    MemTxAttrs attrs = cpu_get_mem_attrs(cpu_env(cs));
     AddressSpace *as = cpu_addressspace(cs, attrs);
 
     address_space_stl(as, addr, val, attrs, NULL);
@@ -705,9 +688,7 @@ void x86_stl_phys(CPUState *cs, hwaddr addr, uint32_t val)
 
 void x86_stq_phys(CPUState *cs, hwaddr addr, uint64_t val)
 {
-    X86CPU *cpu = X86_CPU(cs);
-    CPUX86State *env = &cpu->env;
-    MemTxAttrs attrs = cpu_get_mem_attrs(env);
+    MemTxAttrs attrs = cpu_get_mem_attrs(cpu_env(cs));
     AddressSpace *as = cpu_addressspace(cs, attrs);
 
     address_space_stq(as, addr, val, attrs, NULL);
diff --git a/target/i386/hvf/hvf.c b/target/i386/hvf/hvf.c
index 11ffdd4c69..772578e3f4 100644
--- a/target/i386/hvf/hvf.c
+++ b/target/i386/hvf/hvf.c
@@ -159,10 +159,7 @@ static bool ept_emulation_fault(hvf_slot *slot, uint64_t gpa, uint64_t ept_qual)
 
 void hvf_arch_vcpu_destroy(CPUState *cpu)
 {
-    X86CPU *x86_cpu = X86_CPU(cpu);
-    CPUX86State *env = &x86_cpu->env;
-
-    g_free(env->hvf_mmio_buf);
+    g_free(cpu_env(cpu)->hvf_mmio_buf);
 }
 
 static void init_tsc_freq(CPUX86State *env)
@@ -313,8 +310,7 @@ int hvf_arch_init_vcpu(CPUState *cpu)
 
 static void hvf_store_events(CPUState *cpu, uint32_t ins_len, uint64_t idtvec_info)
 {
-    X86CPU *x86_cpu = X86_CPU(cpu);
-    CPUX86State *env = &x86_cpu->env;
+    CPUX86State *env = cpu_env(cpu);
 
     env->exception_nr = -1;
     env->exception_pending = 0;
diff --git a/target/i386/hvf/x86.c b/target/i386/hvf/x86.c
index 80e36136d0..932635232b 100644
--- a/target/i386/hvf/x86.c
+++ b/target/i386/hvf/x86.c
@@ -128,9 +128,7 @@ bool x86_is_real(CPUState *cpu)
 
 bool x86_is_v8086(CPUState *cpu)
 {
-    X86CPU *x86_cpu = X86_CPU(cpu);
-    CPUX86State *env = &x86_cpu->env;
-    return x86_is_protected(cpu) && (env->eflags & VM_MASK);
+    return x86_is_protected(cpu) && (cpu_env(cpu)->eflags & VM_MASK);
 }
 
 bool x86_is_long_mode(CPUState *cpu)
diff --git a/target/i386/hvf/x86_emu.c b/target/i386/hvf/x86_emu.c
index 3a3f0a50d0..0d13b32f91 100644
--- a/target/i386/hvf/x86_emu.c
+++ b/target/i386/hvf/x86_emu.c
@@ -1419,8 +1419,7 @@ static void init_cmd_handler()
 
 void load_regs(CPUState *cs)
 {
-    X86CPU *cpu = X86_CPU(cs);
-    CPUX86State *env = &cpu->env;
+    CPUX86State *env = cpu_env(cs);
 
     int i = 0;
     RRX(env, R_EAX) = rreg(cs->accel->fd, HV_X86_RAX);
@@ -1442,8 +1441,7 @@ void load_regs(CPUState *cs)
 
 void store_regs(CPUState *cs)
 {
-    X86CPU *cpu = X86_CPU(cs);
-    CPUX86State *env = &cpu->env;
+    CPUX86State *env = cpu_env(cs);
 
     int i = 0;
     wreg(cs->accel->fd, HV_X86_RAX, RAX(env));
diff --git a/target/i386/hvf/x86_task.c b/target/i386/hvf/x86_task.c
index f09bfbdda5..c173e9d883 100644
--- a/target/i386/hvf/x86_task.c
+++ b/target/i386/hvf/x86_task.c
@@ -33,8 +33,7 @@
 // TODO: taskswitch handling
 static void save_state_to_tss32(CPUState *cpu, struct x86_tss_segment32 *tss)
 {
-    X86CPU *x86_cpu = X86_CPU(cpu);
-    CPUX86State *env = &x86_cpu->env;
+    CPUX86State *env = cpu_env(cpu);
 
     /* CR3 and ldt selector are not saved intentionally */
     tss->eip = (uint32_t)env->eip;
@@ -58,8 +57,7 @@ static void save_state_to_tss32(CPUState *cpu, struct x86_tss_segment32 *tss)
 
 static void load_state_from_tss32(CPUState *cpu, struct x86_tss_segment32 *tss)
 {
-    X86CPU *x86_cpu = X86_CPU(cpu);
-    CPUX86State *env = &x86_cpu->env;
+    CPUX86State *env = cpu_env(cpu);
 
     wvmcs(cpu->accel->fd, VMCS_GUEST_CR3, tss->cr3);
 
@@ -128,9 +126,7 @@ void vmx_handle_task_switch(CPUState *cpu, x68_segment_selector tss_sel, int rea
     uint32_t desc_limit;
     struct x86_call_gate task_gate_desc;
     struct vmx_segment vmx_seg;
-
-    X86CPU *x86_cpu = X86_CPU(cpu);
-    CPUX86State *env = &x86_cpu->env;
+    CPUX86State *env = cpu_env(cpu);
 
     x86_read_segment_descriptor(cpu, &next_tss_desc, tss_sel);
     x86_read_segment_descriptor(cpu, &curr_tss_desc, old_tss_sel);
diff --git a/target/i386/hvf/x86hvf.c b/target/i386/hvf/x86hvf.c
index 3b1ef5f49a..1e7fd587fe 100644
--- a/target/i386/hvf/x86hvf.c
+++ b/target/i386/hvf/x86hvf.c
@@ -238,8 +238,7 @@ void hvf_get_msrs(CPUState *cs)
 
 int hvf_put_registers(CPUState *cs)
 {
-    X86CPU *x86cpu = X86_CPU(cs);
-    CPUX86State *env = &x86cpu->env;
+    CPUX86State *env = cpu_env(cs);
 
     wreg(cs->accel->fd, HV_X86_RAX, env->regs[R_EAX]);
     wreg(cs->accel->fd, HV_X86_RBX, env->regs[R_EBX]);
@@ -282,8 +281,7 @@ int hvf_put_registers(CPUState *cs)
 
 int hvf_get_registers(CPUState *cs)
 {
-    X86CPU *x86cpu = X86_CPU(cs);
-    CPUX86State *env = &x86cpu->env;
+    CPUX86State *env = cpu_env(cs);
 
     env->regs[R_EAX] = rreg(cs->accel->fd, HV_X86_RAX);
     env->regs[R_EBX] = rreg(cs->accel->fd, HV_X86_RBX);
diff --git a/target/i386/kvm/kvm.c b/target/i386/kvm/kvm.c
index 76a66246eb..e4f1c62888 100644
--- a/target/i386/kvm/kvm.c
+++ b/target/i386/kvm/kvm.c
@@ -754,8 +754,7 @@ static inline bool freq_within_bounds(int freq, int target_freq)
 
 static int kvm_arch_set_tsc_khz(CPUState *cs)
 {
-    X86CPU *cpu = X86_CPU(cs);
-    CPUX86State *env = &cpu->env;
+    CPUX86State *env = cpu_env(cs);
     int r, cur_freq;
     bool set_ioctl = false;
 
@@ -5369,8 +5368,7 @@ int kvm_arch_handle_exit(CPUState *cs, struct kvm_run *run)
 
 bool kvm_arch_stop_on_emulation_error(CPUState *cs)
 {
-    X86CPU *cpu = X86_CPU(cs);
-    CPUX86State *env = &cpu->env;
+    CPUX86State *env = cpu_env(cs);
 
     kvm_cpu_synchronize_state(cs);
     return !(env->cr[0] & CR0_PE_MASK) ||
diff --git a/target/i386/kvm/xen-emu.c b/target/i386/kvm/xen-emu.c
index fc2c2321ac..10350a22d1 100644
--- a/target/i386/kvm/xen-emu.c
+++ b/target/i386/kvm/xen-emu.c
@@ -313,10 +313,7 @@ static int kvm_xen_set_vcpu_callback_vector(CPUState *cs)
 
 static void do_set_vcpu_callback_vector(CPUState *cs, run_on_cpu_data data)
 {
-    X86CPU *cpu = X86_CPU(cs);
-    CPUX86State *env = &cpu->env;
-
-    env->xen_vcpu_callback_vector = data.host_int;
+    cpu_env(cs)->xen_vcpu_callback_vector = data.host_int;
 
     if (kvm_xen_has_cap(EVTCHN_SEND)) {
         kvm_xen_set_vcpu_callback_vector(cs);
@@ -325,8 +322,7 @@ static void do_set_vcpu_callback_vector(CPUState *cs, run_on_cpu_data data)
 
 static int set_vcpu_info(CPUState *cs, uint64_t gpa)
 {
-    X86CPU *cpu = X86_CPU(cs);
-    CPUX86State *env = &cpu->env;
+    CPUX86State *env = cpu_env(cs);
     MemoryRegionSection mrs = { .mr = NULL };
     void *vcpu_info_hva = NULL;
     int ret;
@@ -362,8 +358,7 @@ static int set_vcpu_info(CPUState *cs, uint64_t gpa)
 
 static void do_set_vcpu_info_default_gpa(CPUState *cs, run_on_cpu_data data)
 {
-    X86CPU *cpu = X86_CPU(cs);
-    CPUX86State *env = &cpu->env;
+    CPUX86State *env = cpu_env(cs);
 
     env->xen_vcpu_info_default_gpa = data.host_ulong;
 
@@ -375,8 +370,7 @@ static void do_set_vcpu_info_default_gpa(CPUState *cs, run_on_cpu_data data)
 
 static void do_set_vcpu_info_gpa(CPUState *cs, run_on_cpu_data data)
 {
-    X86CPU *cpu = X86_CPU(cs);
-    CPUX86State *env = &cpu->env;
+    CPUX86State *env = cpu_env(cs);
 
     env->xen_vcpu_info_gpa = data.host_ulong;
 
@@ -479,8 +473,7 @@ void kvm_xen_inject_vcpu_callback_vector(uint32_t vcpu_id, int type)
 /* Must always be called with xen_timers_lock held */
 static int kvm_xen_set_vcpu_timer(CPUState *cs)
 {
-    X86CPU *cpu = X86_CPU(cs);
-    CPUX86State *env = &cpu->env;
+    CPUX86State *env = cpu_env(cs);
 
     struct kvm_xen_vcpu_attr va = {
         .type = KVM_XEN_VCPU_ATTR_TYPE_TIMER,
@@ -527,8 +520,7 @@ int kvm_xen_set_vcpu_virq(uint32_t vcpu_id, uint16_t virq, uint16_t port)
 
 static void do_set_vcpu_time_info_gpa(CPUState *cs, run_on_cpu_data data)
 {
-    X86CPU *cpu = X86_CPU(cs);
-    CPUX86State *env = &cpu->env;
+    CPUX86State *env = cpu_env(cs);
 
     env->xen_vcpu_time_info_gpa = data.host_ulong;
 
@@ -538,8 +530,7 @@ static void do_set_vcpu_time_info_gpa(CPUState *cs, run_on_cpu_data data)
 
 static void do_set_vcpu_runstate_gpa(CPUState *cs, run_on_cpu_data data)
 {
-    X86CPU *cpu = X86_CPU(cs);
-    CPUX86State *env = &cpu->env;
+    CPUX86State *env = cpu_env(cs);
 
     env->xen_vcpu_runstate_gpa = data.host_ulong;
 
@@ -549,8 +540,7 @@ static void do_set_vcpu_runstate_gpa(CPUState *cs, run_on_cpu_data data)
 
 static void do_vcpu_soft_reset(CPUState *cs, run_on_cpu_data data)
 {
-    X86CPU *cpu = X86_CPU(cs);
-    CPUX86State *env = &cpu->env;
+    CPUX86State *env = cpu_env(cs);
 
     env->xen_vcpu_info_gpa = INVALID_GPA;
     env->xen_vcpu_info_default_gpa = INVALID_GPA;
@@ -1813,8 +1803,7 @@ uint16_t kvm_xen_get_evtchn_max_pirq(void)
 
 int kvm_put_xen_state(CPUState *cs)
 {
-    X86CPU *cpu = X86_CPU(cs);
-    CPUX86State *env = &cpu->env;
+    CPUX86State *env = cpu_env(cs);
     uint64_t gpa;
     int ret;
 
@@ -1887,8 +1876,7 @@ int kvm_put_xen_state(CPUState *cs)
 
 int kvm_get_xen_state(CPUState *cs)
 {
-    X86CPU *cpu = X86_CPU(cs);
-    CPUX86State *env = &cpu->env;
+    CPUX86State *env = cpu_env(cs);
     uint64_t gpa;
     int ret;
 
diff --git a/target/i386/tcg/sysemu/bpt_helper.c b/target/i386/tcg/sysemu/bpt_helper.c
index 4d96a48a3c..90d6117497 100644
--- a/target/i386/tcg/sysemu/bpt_helper.c
+++ b/target/i386/tcg/sysemu/bpt_helper.c
@@ -208,8 +208,7 @@ bool check_hw_breakpoints(CPUX86State *env, bool force_dr6_update)
 
 void breakpoint_handler(CPUState *cs)
 {
-    X86CPU *cpu = X86_CPU(cs);
-    CPUX86State *env = &cpu->env;
+    CPUX86State *env = cpu_env(cs);
 
     if (cs->watchpoint_hit) {
         if (cs->watchpoint_hit->flags & BP_CPU) {
diff --git a/target/i386/tcg/tcg-cpu.c b/target/i386/tcg/tcg-cpu.c
index e1405b7be9..8f8fd6529d 100644
--- a/target/i386/tcg/tcg-cpu.c
+++ b/target/i386/tcg/tcg-cpu.c
@@ -29,8 +29,7 @@
 
 static void x86_cpu_exec_enter(CPUState *cs)
 {
-    X86CPU *cpu = X86_CPU(cs);
-    CPUX86State *env = &cpu->env;
+    CPUX86State *env = cpu_env(cs);
 
     CC_SRC = env->eflags & (CC_O | CC_S | CC_Z | CC_A | CC_P | CC_C);
     env->df = 1 - (2 * ((env->eflags >> 10) & 1));
@@ -40,8 +39,7 @@ static void x86_cpu_exec_enter(CPUState *cs)
 
 static void x86_cpu_exec_exit(CPUState *cs)
 {
-    X86CPU *cpu = X86_CPU(cs);
-    CPUX86State *env = &cpu->env;
+    CPUX86State *env = cpu_env(cs);
 
     env->eflags = cpu_compute_eflags(env);
 }
@@ -65,8 +63,7 @@ static void x86_restore_state_to_opc(CPUState *cs,
                                      const TranslationBlock *tb,
                                      const uint64_t *data)
 {
-    X86CPU *cpu = X86_CPU(cs);
-    CPUX86State *env = &cpu->env;
+    CPUX86State *env = cpu_env(cs);
     int cc_op = data[1];
     uint64_t new_pc;
 
@@ -96,11 +93,8 @@ static void x86_restore_state_to_opc(CPUState *cs,
 #ifndef CONFIG_USER_ONLY
 static bool x86_debug_check_breakpoint(CPUState *cs)
 {
-    X86CPU *cpu = X86_CPU(cs);
-    CPUX86State *env = &cpu->env;
-
     /* RF disables all architectural breakpoints. */
-    return !(env->eflags & RF_MASK);
+    return !(cpu_env(cs)->eflags & RF_MASK);
 }
 #endif
 
diff --git a/target/i386/tcg/user/excp_helper.c b/target/i386/tcg/user/excp_helper.c
index b3bdb7831a..bfcae9f39e 100644
--- a/target/i386/tcg/user/excp_helper.c
+++ b/target/i386/tcg/user/excp_helper.c
@@ -26,8 +26,7 @@ void x86_cpu_record_sigsegv(CPUState *cs, vaddr addr,
                             MMUAccessType access_type,
                             bool maperr, uintptr_t ra)
 {
-    X86CPU *cpu = X86_CPU(cs);
-    CPUX86State *env = &cpu->env;
+    CPUX86State *env = cpu_env(cs);
 
     /*
      * The error_code that hw reports as part of the exception frame
diff --git a/target/i386/tcg/user/seg_helper.c b/target/i386/tcg/user/seg_helper.c
index c45f2ac2ba..2f89dbb51e 100644
--- a/target/i386/tcg/user/seg_helper.c
+++ b/target/i386/tcg/user/seg_helper.c
@@ -78,8 +78,7 @@ static void do_interrupt_user(CPUX86State *env, int intno, int is_int,
 
 void x86_cpu_do_interrupt(CPUState *cs)
 {
-    X86CPU *cpu = X86_CPU(cs);
-    CPUX86State *env = &cpu->env;
+    CPUX86State *env = cpu_env(cs);
 
     /* if user mode only, we simulate a fake exception
        which will be handled outside the cpu execution
-- 
2.41.0



From xen-devel-bounces@lists.xenproject.org Fri Jan 26 22:30:22 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 26 Jan 2024 22:30:22 +0000
Received: from list by lists.xenproject.org with outflank-mailman.672559.1046711 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTUiH-0006Il-QD; Fri, 26 Jan 2024 22:30:17 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 672559.1046711; Fri, 26 Jan 2024 22:30:17 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTUiH-0006Ie-M1; Fri, 26 Jan 2024 22:30:17 +0000
Received: by outflank-mailman (input) for mailman id 672559;
 Fri, 26 Jan 2024 22:30:16 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rTUiG-0006IU-IN; Fri, 26 Jan 2024 22:30:16 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rTUiG-0006Tg-HR; Fri, 26 Jan 2024 22:30:16 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rTUiG-0006LT-9T; Fri, 26 Jan 2024 22:30:16 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rTUiG-0000Y2-90; Fri, 26 Jan 2024 22:30:16 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=TMiaYREdUFweDGuIe/th7mRuCttIS/b04muAahKnJ4g=; b=NAQemN5DRAFNFQq0I5PZ84pRao
	pQ739al3FbvS+V4JNoBZRJ1yckJt5FTGtPkExi1XEgFjDrqllMY8CsMwnK9c8u/zr3CqxXrafnVca
	XEceIlwsSjntx9aT0UXvPlqkrLpKv7VR339FvoCclcfuOoyS+q3WLGGKcyNVzwLqsPk4=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184481-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [xen-unstable-smoke test] 184481: tolerable all pass - PUSHED
X-Osstest-Failures:
    xen-unstable-smoke:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    xen-unstable-smoke:test-arm64-arm64-xl-xsm:migrate-support-check:fail:nonblocking
    xen-unstable-smoke:test-arm64-arm64-xl-xsm:saverestore-support-check:fail:nonblocking
    xen-unstable-smoke:test-armhf-armhf-xl:migrate-support-check:fail:nonblocking
    xen-unstable-smoke:test-armhf-armhf-xl:saverestore-support-check:fail:nonblocking
X-Osstest-Versions-This:
    xen=c378ff8983cd69786c35117e49640f027e581bca
X-Osstest-Versions-That:
    xen=dbdd7e8df75030d0b1097eb5a1b3c3cb378a657b
From: osstest service owner <osstest-admin@xenproject.org>
Date: Fri, 26 Jan 2024 22:30:16 +0000

flight 184481 xen-unstable-smoke real [real]
http://logs.test-lab.xenproject.org/osstest/logs/184481/

Failures :-/ but no regressions.

Tests which did not succeed, but are not blocking:
 test-amd64-amd64-libvirt     15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-xsm      15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-xsm      16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl          15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          16 saverestore-support-check    fail   never pass

version targeted for testing:
 xen                  c378ff8983cd69786c35117e49640f027e581bca
baseline version:
 xen                  dbdd7e8df75030d0b1097eb5a1b3c3cb378a657b

Last test of basis   184468  2024-01-25 20:03:47 Z    1 days
Testing same since   184481  2024-01-26 20:02:04 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Roger Pau Monné <roger.pau@citrix.com>

jobs:
 build-arm64-xsm                                              pass    
 build-amd64                                                  pass    
 build-armhf                                                  pass    
 build-amd64-libvirt                                          pass    
 test-armhf-armhf-xl                                          pass    
 test-arm64-arm64-xl-xsm                                      pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64                    pass    
 test-amd64-amd64-libvirt                                     pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Pushing revision :

To xenbits.xen.org:/home/xen/git/xen.git
   dbdd7e8df7..c378ff8983  c378ff8983cd69786c35117e49640f027e581bca -> smoke


From xen-devel-bounces@lists.xenproject.org Fri Jan 26 23:02:36 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Fri, 26 Jan 2024 23:02:36 +0000
Received: from list by lists.xenproject.org with outflank-mailman.672569.1046720 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTVDT-0005zX-5W; Fri, 26 Jan 2024 23:02:31 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 672569.1046720; Fri, 26 Jan 2024 23:02:31 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTVDT-0005zQ-2y; Fri, 26 Jan 2024 23:02:31 +0000
Received: by outflank-mailman (input) for mailman id 672569;
 Fri, 26 Jan 2024 23:02:29 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=gfIe=JE=kernel.org=sstabellini@srs-se1.protection.inumbo.net>)
 id 1rTVDR-0005y0-9g
 for xen-devel@lists.xenproject.org; Fri, 26 Jan 2024 23:02:29 +0000
Received: from sin.source.kernel.org (sin.source.kernel.org
 [2604:1380:40e1:4800::1])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id f91209c2-bc9e-11ee-8a43-1f161083a0e0;
 Sat, 27 Jan 2024 00:02:27 +0100 (CET)
Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58])
 by sin.source.kernel.org (Postfix) with ESMTP id 36D12CE356A;
 Fri, 26 Jan 2024 23:02:21 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id EF635C433C7;
 Fri, 26 Jan 2024 23:02:19 +0000 (UTC)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: f91209c2-bc9e-11ee-8a43-1f161083a0e0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
	s=k20201202; t=1706310140;
	bh=6Mio2bziPDdidLdEUvhKi4o66hEgDnPmfi0vu1c5Fek=;
	h=Date:From:To:cc:Subject:In-Reply-To:References:From;
	b=SRtl070rO2bayNtBI8/XI+la7zvDfZbXO6cGEFq4mqy96NLlrcNVIKvcs6YMb2j9d
	 pJMLywr8BbRiV6FNMXOTar9t2nyDKbBirEm+CXO5ZOgy67p5G44mWuozYTFeyjcrSV
	 Hh9sVMFpRV6HdD53rEO8BwEREOI7W8BS/h7hVsDw/Ocq5Ra1aA+Hr20cUEAaqdBC2I
	 z8p7oFizIdtpvVX07GuS47lirSMVbw2rjadCGNRy1QOYOrlFDESIbDgfim69KCLYMe
	 q43vefVCZd3TDG0hOWTYq/w8I+q4Z/d3/6rJXte566CgqfAnMtdy1eZ3Sl7PDRq6Ic
	 S5uW6IidXiaDw==
Date: Fri, 26 Jan 2024 15:02:18 -0800 (PST)
From: Stefano Stabellini <sstabellini@kernel.org>
X-X-Sender: sstabellini@ubuntu-linux-20-04-desktop
To: Michal Orzel <michal.orzel@amd.com>
cc: xen-devel@lists.xenproject.org, sstabellini@kernel.org
Subject: Re: [ImageBuilder][PATCH] Fix Xen boot-time cpupools handling
In-Reply-To: <20240126125128.18275-1-michal.orzel@amd.com>
Message-ID: <alpine.DEB.2.22.394.2401261502100.292110@ubuntu-linux-20-04-desktop>
References: <20240126125128.18275-1-michal.orzel@amd.com>
User-Agent: Alpine 2.22 (DEB 394 2020-01-19)
MIME-Version: 1.0
Content-Type: text/plain; charset=US-ASCII

On Fri, 25 Jan 2024, Michal Orzel wrote:
> When retrieving a phandle for a CPU node using "fdtget -t x", the
> resulting hex number (in case the phandle exists) lacks the '0x' prefix.
> This value is subsequently used to construct the cpupool-cpus property.
> This results in an incorrect property generation that leads to Xen
> failure (example: cpupool-cpus < a> instead of < 0xa>). Address the
> issue by adding 0x prefix to the result from fdtget.
> 
> Additionally, avoid unnecessary regeneration of the phandle if it already
> exists.
> 
> Fixes: b687773b5046 ("Add support for Xen boot-time cpupools")
> Signed-off-by: Michal Orzel <michal.orzel@amd.com>

Reviewed-by: Stefano Stabellini <sstabellini@kernel.org>


> ---
> This only worked if phandle did not exist or if its value did not contain a-f
> and was regenerated anyway.
> ---
>  scripts/uboot-script-gen | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/scripts/uboot-script-gen b/scripts/uboot-script-gen
> index 078a667c61ab..3cc6b47c7c62 100755
> --- a/scripts/uboot-script-gen
> +++ b/scripts/uboot-script-gen
> @@ -262,12 +262,12 @@ function add_device_tree_cpupools()
>              fi
>  
>              # set phandle for a cpu if there is none
> -            if ! phandle=$(fdtget -t x "${DEVICE_TREE}" "$cpu" "phandle" 2> /dev/null)
> +            if ! phandle="0x$(fdtget -t x "${DEVICE_TREE}" "$cpu" "phandle" 2> /dev/null)"
>              then
>                  get_next_phandle phandle
> +                dt_set "$cpu" "phandle" "hex" "$phandle"
>              fi
>  
> -            dt_set "$cpu" "phandle" "hex" "$phandle"
>              cpu_phandles="$cpu_phandles $phandle"
>              cpu_list="$cpu_list $cpu"
>          done
> -- 
> 2.25.1
> 


From xen-devel-bounces@lists.xenproject.org Sat Jan 27 02:09:38 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 27 Jan 2024 02:09:38 +0000
Received: from list by lists.xenproject.org with outflank-mailman.672582.1046737 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTY8K-0004rK-JK; Sat, 27 Jan 2024 02:09:24 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 672582.1046737; Sat, 27 Jan 2024 02:09:24 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTY8K-0004q1-G1; Sat, 27 Jan 2024 02:09:24 +0000
Received: by outflank-mailman (input) for mailman id 672582;
 Sat, 27 Jan 2024 02:09:23 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rTY8J-0004pr-9A; Sat, 27 Jan 2024 02:09:23 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rTY8J-0005Hp-2n; Sat, 27 Jan 2024 02:09:23 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rTY8I-0007rS-JF; Sat, 27 Jan 2024 02:09:22 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rTY8I-0006RT-IO; Sat, 27 Jan 2024 02:09:22 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=iAZnFQ/fSnD9fX/1Ve7SUplyMNM6FwrfBKx9zhN5Ong=; b=5bTl+1ANDFviX0IZ0CMhwJOhDm
	/lbX758YqS3X4IN6BFiuE8ozhH7ETuzoLrvu3O9k2igtig121R7DMPAmlVwxMxhcBR5QlK0bPbyOW
	DZJ2SsTjNrjVTGc6/uQ12Zf5JGYlnXUyfmVZc5SKWyCHFVHfzGVIOGixFegQROKtF7z8=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184474-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [linux-linus test] 184474: tolerable FAIL - PUSHED
X-Osstest-Failures:
    linux-linus:test-amd64-amd64-dom0pvh-xl-amd:guest-start:fail:heisenbug
    linux-linus:test-amd64-amd64-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    linux-linus:test-amd64-amd64-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    linux-linus:test-amd64-amd64-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-qcow2:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-raw:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    linux-linus:test-amd64-amd64-qemuu-nested-amd:debian-hvm-install/l1/l2:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-xsm:migrate-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-thunderx:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-thunderx:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-credit2:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-credit2:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-libvirt-xsm:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-libvirt-xsm:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-credit1:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-xsm:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-credit1:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-xsm:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-arndale:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-arndale:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-rtds:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-rtds:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-multivcpu:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-multivcpu:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-libvirt-raw:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-vhd:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-vhd:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-qcow2:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-qcow2:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-vhd:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-vhd:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit1:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit1:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit2:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit2:saverestore-support-check:fail:nonblocking
X-Osstest-Versions-This:
    linux=ecb1b8288dc7ccbdcb3b9df005fa1c0e0c0388a7
X-Osstest-Versions-That:
    linux=6098d87eaf31f48153c984e2adadf14762520a87
From: osstest service owner <osstest-admin@xenproject.org>
Date: Sat, 27 Jan 2024 02:09:22 +0000

flight 184474 linux-linus real [real]
flight 184485 linux-linus real-retest [real]
http://logs.test-lab.xenproject.org/osstest/logs/184474/
http://logs.test-lab.xenproject.org/osstest/logs/184485/

Failures :-/ but no regressions.

Tests which are failing intermittently (not blocking):
 test-amd64-amd64-dom0pvh-xl-amd 14 guest-start      fail pass in 184485-retest

Tests which did not succeed, but are not blocking:
 test-amd64-amd64-xl-qemut-win7-amd64 19 guest-stop            fail like 184465
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 184465
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 184465
 test-armhf-armhf-libvirt-qcow2 15 saverestore-support-check   fail like 184465
 test-armhf-armhf-libvirt-raw 15 saverestore-support-check    fail  like 184465
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 184465
 test-amd64-amd64-xl-qemut-ws16-amd64 19 guest-stop            fail like 184465
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 184465
 test-amd64-amd64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt     15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl          15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl          16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-thunderx 15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-thunderx 16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-credit2  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit2  16 saverestore-support-check    fail   never pass
 test-arm64-arm64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-xsm 16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-credit1  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-xsm      15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit1  16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-xsm      16 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-armhf-armhf-xl-arndale  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-arndale  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-rtds     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-rtds     16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-multivcpu 15 migrate-support-check        fail  never pass
 test-armhf-armhf-xl-multivcpu 16 saverestore-support-check    fail  never pass
 test-arm64-arm64-libvirt-raw 14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 15 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-raw 14 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-vhd      14 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-vhd      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-qcow2 14 migrate-support-check        fail never pass
 test-armhf-armhf-libvirt-raw 14 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt-qcow2 14 migrate-support-check        fail never pass
 test-armhf-armhf-xl-vhd      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl          15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          16 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit1  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit1  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-credit2  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit2  16 saverestore-support-check    fail   never pass

version targeted for testing:
 linux                ecb1b8288dc7ccbdcb3b9df005fa1c0e0c0388a7
baseline version:
 linux                6098d87eaf31f48153c984e2adadf14762520a87

Last test of basis   184465  2024-01-25 14:37:22 Z    1 days
Testing same since   184474  2024-01-26 07:24:13 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Alexander Larsson <alexl@redhat.com>
  Alexei Starovoitov <ast@kernel.org>
  Amir Goldstein <amir73il@gmail.com>
  Arkadiusz Kubalewski <arkadiusz.kubalewski@intel.com>
  Aya Levin <ayal@nvidia.com>
  Benjamin Berg <benjamin.berg@intel.com>
  Benjamin Poirier <bpoirier@nvidia.com>
  Bernd Edlinger <bernd.edlinger@hotmail.de>
  Björn Töpel <bjorn@kernel.org>
  Björn Töpel <bjorn@rivosinc.com>
  Breno Leitao <leitao@debian.org>
  Christian Brauner <brauner@kernel.org>
  Christian Lamparter <chunkeey@gmail.com> # Tested with Dell 1450 USB
  Chuck Lever <chuck.lever@oracle.com>
  Dan Carpenter <dan.carpenter@linaro.org>
  Daniel Borkmann <daniel@iogearbox.net>
  David Howells <dhowells@redhat.com>
  David S. Miller <davem@davemloft.net>
  Dinghao Liu <dinghao.liu@zju.edu.cn>
  Emmanuel Grumbach <emmanuel.grumbach@intel.com>
  Eric Dumazet <edumazet@google.com>
  Felix Fietkau <nbd@nbd.name>
  Florian Fainelli <florian.fainelli@broadcom.com>
  Florian Westphal <fw@strlen.de>
  Frederic Weisbecker <frederic@kernel.org>
  Gabriel Somlo <gsomlo@gmail.com>
  George Guo <guodongtai@kylinos.cn>
  Gerhard Engleder <gerhard@engleder-embedded.com>
  Hangbin Liu <liuhangbin@gmail.com>
  Horatiu Vultur <horatiu.vultur@microchip.com>
  Ido Schimmel <idosch@nvidia.com>
  Jakub Kicinski <kuba@kernel.org>
  Jason Wang <jasowang@redhat.com>
  Jay Vosburgh <jay.vosburgh@canonical.com>
  Jeff Johnson <quic_jjohnson@quicinc.com>
  Jeff Layton <jlayton@kernel.org>
  Jenishkumar Maheshbhai Patel <jpatel2@marvell.com>
  Johannes Berg <johannes.berg@intel.com>
  Kalle Valo <kvalo@kernel.org>
  Kuniyuki Iwashima <kuniyu@amazon.com>
  Leon Romanovsky <leonro@nvidia.com>
  Lin Ma <linma@zju.edu.cn>
  Linus Torvalds <torvalds@linux-foundation.org>
  Lucas Stach <l.stach@pengutronix.de>
  Lukas Bulwahn <lukas.bulwahn@gmail.com>
  Maciej Fijalkowski <maciej.fijalkowski@intel.com>
  Magnus Karlsson <magnus.karlsson@intel.com>
  Magnus Karlsson <magnus.karlsson@intel.com> # For the xsk header part
  Michael Chan <michael.chan@broadcom.com>
  Michael Kelley <mhklinux@outlook.com>
  Michal Kazior <michal@plume.com>
  Michal Schmidt <mschmidt@redhat.com>
  Miri Korenblit <miriam.rachel.korenblit@intel.com>
  Moshe Shemesh <moshe@nvidia.com>
  Neeraj Upadhyay (AMD) <neeraj.iitr10@gmail.com>
  NeilBrown <neilb@suse.de>
  Pablo Neira Ayuso <pablo@netfilter.org>
  Paolo Abeni <pabeni@redhat.com>
  Paul E. McKenney <paulmck@kernel.org>
  Pu Lehui <pulehui@huawei.com>
  Rahul Rameshbabu <rrameshbabu@nvidia.com>
  Saeed Mahameed <saeedm@nvidia.com>
  Salvatore Dipietro <dipiets@amazon.com>
  Sharath Srinivasan <sharath.srinivasan@oracle.com>
  Shenwei Wang <shenwei.wang@nxp.com>
  Tariq Toukan <tariqt@nvidia.com>
  Tirthendu Sarkar <tirthendu.sarkar@intel.com>
  Vadim Fedorenko <vadim.fedorenko@linux.dev>
  Vlad Buslov <vladbu@nvidia.com>
  Wen Gu <guwen@linux.alibaba.com>
  Yevgeny Kliteynik <kliteyn@nvidia.com>
  Yishai Hadas <yishaih@nvidia.com>
  Yunjian Wang <wangyunjian@huawei.com>
  Zhengchao Shao <shaozhengchao@huawei.com>
  Zhipeng Lu <alexious@zju.edu.cn>

jobs:
 build-amd64-xsm                                              pass    
 build-arm64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64                                                  pass    
 build-arm64                                                  pass    
 build-armhf                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-arm64-libvirt                                          pass    
 build-armhf-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-pvops                                            pass    
 build-arm64-pvops                                            pass    
 build-armhf-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-amd64-amd64-xl                                          pass    
 test-amd64-coresched-amd64-xl                                pass    
 test-arm64-arm64-xl                                          pass    
 test-armhf-armhf-xl                                          pass    
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm           pass    
 test-amd64-amd64-xl-qemut-stubdom-debianhvm-amd64-xsm        pass    
 test-amd64-amd64-xl-qemut-debianhvm-i386-xsm                 pass    
 test-amd64-amd64-xl-qemuu-debianhvm-i386-xsm                 pass    
 test-amd64-amd64-libvirt-xsm                                 pass    
 test-arm64-arm64-libvirt-xsm                                 pass    
 test-amd64-amd64-xl-xsm                                      pass    
 test-arm64-arm64-xl-xsm                                      pass    
 test-amd64-amd64-qemuu-nested-amd                            fail    
 test-amd64-amd64-xl-pvhv2-amd                                pass    
 test-amd64-amd64-dom0pvh-xl-amd                              fail    
 test-amd64-amd64-xl-qemut-debianhvm-amd64                    pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64                    pass    
 test-amd64-amd64-freebsd11-amd64                             pass    
 test-amd64-amd64-freebsd12-amd64                             pass    
 test-amd64-amd64-xl-qemuu-ovmf-amd64                         pass    
 test-amd64-amd64-xl-qemut-win7-amd64                         fail    
 test-amd64-amd64-xl-qemuu-win7-amd64                         fail    
 test-amd64-amd64-xl-qemut-ws16-amd64                         fail    
 test-amd64-amd64-xl-qemuu-ws16-amd64                         fail    
 test-armhf-armhf-xl-arndale                                  pass    
 test-amd64-amd64-examine-bios                                pass    
 test-amd64-amd64-xl-credit1                                  pass    
 test-arm64-arm64-xl-credit1                                  pass    
 test-armhf-armhf-xl-credit1                                  pass    
 test-amd64-amd64-xl-credit2                                  pass    
 test-arm64-arm64-xl-credit2                                  pass    
 test-armhf-armhf-xl-credit2                                  pass    
 test-amd64-amd64-xl-qemuu-dmrestrict-amd64-dmrestrict        pass    
 test-amd64-amd64-examine                                     pass    
 test-arm64-arm64-examine                                     pass    
 test-armhf-armhf-examine                                     pass    
 test-amd64-amd64-qemuu-nested-intel                          pass    
 test-amd64-amd64-xl-pvhv2-intel                              pass    
 test-amd64-amd64-dom0pvh-xl-intel                            pass    
 test-amd64-amd64-libvirt                                     pass    
 test-armhf-armhf-libvirt                                     pass    
 test-amd64-amd64-xl-multivcpu                                pass    
 test-armhf-armhf-xl-multivcpu                                pass    
 test-amd64-amd64-pair                                        pass    
 test-amd64-amd64-libvirt-pair                                pass    
 test-amd64-amd64-xl-pvshim                                   pass    
 test-amd64-amd64-pygrub                                      pass    
 test-amd64-amd64-libvirt-qcow2                               pass    
 test-armhf-armhf-libvirt-qcow2                               pass    
 test-amd64-amd64-libvirt-raw                                 pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-armhf-armhf-libvirt-raw                                 pass    
 test-amd64-amd64-xl-rtds                                     pass    
 test-armhf-armhf-xl-rtds                                     pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64-shadow             pass    
 test-amd64-amd64-xl-shadow                                   pass    
 test-arm64-arm64-xl-thunderx                                 pass    
 test-amd64-amd64-examine-uefi                                pass    
 test-amd64-amd64-xl-vhd                                      pass    
 test-arm64-arm64-xl-vhd                                      pass    
 test-armhf-armhf-xl-vhd                                      pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Pushing revision :

hint: The 'hooks/update' hook was ignored because it's not set as executable.
hint: You can disable this warning with `git config advice.ignoredHook false`.
hint: The 'hooks/post-receive' hook was ignored because it's not set as executable.
hint: You can disable this warning with `git config advice.ignoredHook false`.
hint: The 'hooks/post-update' hook was ignored because it's not set as executable.
hint: You can disable this warning with `git config advice.ignoredHook false`.
To xenbits.xen.org:/home/xen/git/linux-pvops.git
   6098d87eaf31..ecb1b8288dc7  ecb1b8288dc7ccbdcb3b9df005fa1c0e0c0388a7 -> tested/linux-linus


From xen-devel-bounces@lists.xenproject.org Sat Jan 27 06:32:16 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 27 Jan 2024 06:32:16 +0000
Received: from list by lists.xenproject.org with outflank-mailman.672592.1046753 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTcEL-0004Gv-ER; Sat, 27 Jan 2024 06:31:53 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 672592.1046753; Sat, 27 Jan 2024 06:31:53 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTcEL-0004Go-BJ; Sat, 27 Jan 2024 06:31:53 +0000
Received: by outflank-mailman (input) for mailman id 672592;
 Sat, 27 Jan 2024 06:31:52 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rTcEK-0004Ge-Pt; Sat, 27 Jan 2024 06:31:52 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rTcEK-0006dv-G6; Sat, 27 Jan 2024 06:31:52 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rTcEK-0003kq-46; Sat, 27 Jan 2024 06:31:52 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rTcEK-0006uO-3Y; Sat, 27 Jan 2024 06:31:52 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=vVHm8lNcE9p6OpWHA4Jx2uWnh6oMbcM0mrQSBRISzL4=; b=5JoGpGkFcd4yRrsbcjnxwZ1Hzg
	SA8iLMWlES1ygCdxEYrR5eT4+5frHtWCayq9buqy9V2Bs0BIuhZqB0aSPIOxbPXilM+4BoQjCk2b3
	xUzZXuxYvc1LEaBpfvWCKuMHcROw1AzdwBfLCxcQRLP0eeupFXEFpl0M1dpexImhyEH0=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184476-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [linux-5.4 test] 184476: regressions - FAIL
X-Osstest-Failures:
    linux-5.4:test-armhf-armhf-xl-credit1:guest-start/debian.repeat:fail:regression
    linux-5.4:test-armhf-armhf-xl-rtds:guest-start:fail:heisenbug
    linux-5.4:test-armhf-armhf-libvirt-qcow2:guest-start/debian.repeat:fail:heisenbug
    linux-5.4:test-amd64-amd64-xl-qcow2:guest-localmigrate:fail:heisenbug
    linux-5.4:test-arm64-arm64-libvirt-raw:guest-start/debian.repeat:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-vhd:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-vhd:saverestore-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-rtds:guest-start/debian.repeat:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-arndale:guest-start/debian.repeat:fail:nonblocking
    linux-5.4:test-armhf-armhf-libvirt:saverestore-support-check:fail:nonblocking
    linux-5.4:test-amd64-amd64-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    linux-5.4:test-amd64-i386-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    linux-5.4:test-amd64-i386-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    linux-5.4:test-amd64-amd64-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-multivcpu:guest-start/debian.repeat:fail:nonblocking
    linux-5.4:test-amd64-amd64-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    linux-5.4:test-amd64-amd64-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    linux-5.4:test-amd64-i386-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-vhd:guest-start:fail:nonblocking
    linux-5.4:test-armhf-armhf-libvirt-qcow2:saverestore-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-credit2:guest-start/debian.repeat:fail:nonblocking
    linux-5.4:test-armhf-armhf-libvirt-raw:saverestore-support-check:fail:nonblocking
    linux-5.4:test-amd64-i386-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    linux-5.4:test-amd64-amd64-qemuu-nested-amd:debian-hvm-install/l1/l2:fail:nonblocking
    linux-5.4:test-amd64-i386-xl-pvshim:guest-start:fail:nonblocking
    linux-5.4:test-amd64-i386-libvirt-xsm:migrate-support-check:fail:nonblocking
    linux-5.4:test-amd64-amd64-libvirt-xsm:migrate-support-check:fail:nonblocking
    linux-5.4:test-amd64-i386-libvirt:migrate-support-check:fail:nonblocking
    linux-5.4:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    linux-5.4:test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    linux-5.4:test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-xsm:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-xsm:saverestore-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl:saverestore-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-credit2:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-libvirt-xsm:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-thunderx:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-libvirt-xsm:saverestore-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-credit2:saverestore-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-thunderx:saverestore-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-credit1:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-credit1:saverestore-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-multivcpu:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-multivcpu:saverestore-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-rtds:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-rtds:saverestore-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-arndale:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-arndale:saverestore-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-credit1:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl:saverestore-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-credit1:saverestore-support-check:fail:nonblocking
    linux-5.4:test-amd64-amd64-libvirt-vhd:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-libvirt:migrate-support-check:fail:nonblocking
    linux-5.4:test-amd64-i386-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-libvirt-raw:saverestore-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-vhd:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-vhd:saverestore-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-libvirt-qcow2:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-credit2:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-credit2:saverestore-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-libvirt-raw:migrate-support-check:fail:nonblocking
X-Osstest-Versions-This:
    linux=f0602893f43a54097fcf22bd8c2f7b8e75ca643e
X-Osstest-Versions-That:
    linux=9153fc9664959aa6bb35915b2bbd8fbc4c762962
From: osstest service owner <osstest-admin@xenproject.org>
Date: Sat, 27 Jan 2024 06:31:52 +0000

flight 184476 linux-5.4 real [real]
http://logs.test-lab.xenproject.org/osstest/logs/184476/

Regressions :-(

Tests which did not succeed and are blocking,
including tests which could not be run:
 test-armhf-armhf-xl-credit1 18 guest-start/debian.repeat fail REGR. vs. 184381

Tests which are failing intermittently (not blocking):
 test-armhf-armhf-xl-rtds     14 guest-start      fail in 184469 pass in 184476
 test-armhf-armhf-libvirt-qcow2 17 guest-start/debian.repeat fail in 184469 pass in 184476
 test-amd64-amd64-xl-qcow2    17 guest-localmigrate         fail pass in 184469

Tests which did not succeed, but are not blocking:
 test-arm64-arm64-libvirt-raw 17 guest-start/debian.repeat fail in 184469 like 184381
 test-armhf-armhf-xl-vhd     14 migrate-support-check fail in 184469 never pass
 test-armhf-armhf-xl-vhd 15 saverestore-support-check fail in 184469 never pass
 test-armhf-armhf-xl-rtds     18 guest-start/debian.repeat    fail  like 184362
 test-armhf-armhf-xl-arndale  18 guest-start/debian.repeat    fail  like 184362
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 184381
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 184381
 test-amd64-i386-xl-qemut-win7-amd64 19 guest-stop             fail like 184381
 test-amd64-i386-xl-qemuu-win7-amd64 19 guest-stop             fail like 184381
 test-amd64-amd64-xl-qemut-win7-amd64 19 guest-stop            fail like 184381
 test-armhf-armhf-xl-multivcpu 18 guest-start/debian.repeat    fail like 184381
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 184381
 test-amd64-amd64-xl-qemut-ws16-amd64 19 guest-stop            fail like 184381
 test-amd64-i386-xl-qemut-ws16-amd64 19 guest-stop             fail like 184381
 test-armhf-armhf-xl-vhd      13 guest-start                  fail  like 184381
 test-armhf-armhf-libvirt-qcow2 15 saverestore-support-check   fail like 184381
 test-armhf-armhf-xl-credit2  18 guest-start/debian.repeat    fail  like 184381
 test-armhf-armhf-libvirt-raw 15 saverestore-support-check    fail  like 184381
 test-amd64-i386-xl-qemuu-ws16-amd64 19 guest-stop             fail like 184381
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 184381
 test-amd64-i386-xl-pvshim    14 guest-start                  fail   never pass
 test-amd64-i386-libvirt-xsm  15 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-amd64-i386-libvirt      15 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt     15 migrate-support-check        fail   never pass
 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-arm64-arm64-xl-xsm      15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-xsm      16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl          15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl          16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-credit2  15 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-thunderx 15 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-xsm 16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-credit2  16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-thunderx 16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-credit1  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit1  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-multivcpu 15 migrate-support-check        fail  never pass
 test-armhf-armhf-xl-multivcpu 16 saverestore-support-check    fail  never pass
 test-armhf-armhf-xl-rtds     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-rtds     16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-arndale  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-arndale  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl          15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit1  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-credit1  16 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-vhd 14 migrate-support-check        fail   never pass
 test-armhf-armhf-libvirt     15 migrate-support-check        fail   never pass
 test-amd64-i386-libvirt-raw  14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 15 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-vhd      14 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-vhd      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-qcow2 14 migrate-support-check        fail never pass
 test-armhf-armhf-xl-credit2  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit2  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-raw 14 migrate-support-check        fail   never pass

version targeted for testing:
 linux                f0602893f43a54097fcf22bd8c2f7b8e75ca643e
baseline version:
 linux                9153fc9664959aa6bb35915b2bbd8fbc4c762962

Last test of basis   184381  2024-01-17 06:00:18 Z   10 days
Testing same since   184469  2024-01-25 22:43:10 Z    1 days    2 attempts

------------------------------------------------------------
People who touched revisions under test:
  "Christian A. Ehrhardt" <lk@c--e.de>
  Alex Deucher <alexander.deucher@amd.com>
  Alexander Gordeev <agordeev@linux.ibm.com>
  Alexei Starovoitov <ast@kernel.org>
  Amit Cohen <amcohen@nvidia.com>
  Andreas Gruenbacher <agruenba@redhat.com>
  Andrew Lunn <andrew@lunn.ch>
  Andrii Nakryiko <andrii@kernel.org>
  Anna Schumaker <Anna.Schumaker@Netapp.com>
  Arnaldo Carvalho de Melo <acme@redhat.com>
  Arnd Bergmann <arnd@arndb.de>
  Arseniy Krasnov <avkrasnov@salutedevices.com>
  Artem Chernyshev <artem.chernyshev@red-soft.ru>
  Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
  Benjamin Coddington <bcodding@redhat.com>
  Bhaskar Chowdhury <unixbhaskar@gmail.com>
  Bjorn Andersson <andersson@kernel.org>
  Borislav Petkov (AMD) <bp@alien8.de>
  Brian Norris <briannorris@chromium.org>
  Cameron Williams <cang1@live.co.uk>
  Carlos Llamas <cmllamas@google.com>
  Chao Yu <chao@kernel.org>
  Charles Keepax <ckeepax@opensource.cirrus.com>
  Chengming Zhou <zhouchengming@bytedance.com>
  Chih-Kang Chang <gary.chang@realtek.com>
  Christian A. Ehrhardt <lk@c--e.de>
  Christoph Hellwig <hch@lst.de>
  Christoph Niedermaier <cniedermaier@dh-electronics.com>
  Christophe JAILLET <christophe.jaillet@wanadoo.fr>
  Claudiu Beznea <claudiu.beznea.uj@bp.renesas.com>
  Colin Ian King <colin.i.king@gmail.com>
  Colin Ian King <colin.king@canonical.com>
  Curtis Klein <curtis.klein@hpe.com>
  Dan Carpenter <dan.carpenter@linaro.org>
  Daniel Thompson <daniel.thompson@linaro.org>
  Danilo Krummrich <dakr@redhat.com>
  Dario Binacchi <dario.binacchi@amarulasolutions.com>
  Dave Airlie <airlied@redhat.com>
  Dave Hansen <dave.hansen@linux.intel.com>
  David Lin <CTLIN0@nuvoton.com>
  David Lin <yu-hao.lin@nxp.com>
  David Rau <David.Rau.opensource@dm.renesas.com>
  David S. Miller <davem@davemloft.net>
  Dinghao Liu <dinghao.liu@zju.edu.cn>
  Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
  Dmitry Torokhov <dmitry.torokhov@gmail.com>
  Eric Biggers <ebiggers@google.com>
  Eric Dumazet <edumazet@google.com>
  Esther Shimanovich <eshimanovich@chromium.org>
  Fedor Pchelkin <pchelkin@ispras.ru>
  Florian Fainelli <florian.fainelli@broadcom.com>
  Florian Lehner <dev@der-flo.net>
  Florian Westphal <fw@strlen.de>
  Francesco Dolcini <francesco.dolcini@toradex.com>
  Gavrilov Ilia <Ilia.Gavrilov@infotecs.ru>
  Geert Uytterhoeven <geert+renesas@glider.be>
  Gonglei (Arei) <arei.gonglei@huawei.com>
  Gonglei <arei.gonglei@huawei.com>
  Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  Gregory CLEMENT <gregory.clement@bootlin.com>
  Guanghui Feng <guanghuifeng@linux.alibaba.com>
  Guenter Roeck <linux@roeck-us.net>
  Gui-Dong Han <2045gemini@gmail.com>
  Hangbin Liu <liuhangbin@gmail.com>
  Hans de Goede <hdegoede@redhat.com>
  Hans Verkuil <hverkuil-cisco@xs4all.nl>
  Harshit Mogalapalli <harshit.m.mogalapalli@oracle.com>
  Heikki Krogerus <heikki.krogerus@linux.intel.com>
  Heiko Carstens <hca@linux.ibm.com>
  Heiko Stuebner <heiko@sntech.de>
  Helge Deller <deller@gmx.de>
  Herbert Xu <herbert@gondor.apana.org.au>
  Ian Rogers <irogers@google.com>
  Ido Schimmel <idosch@nvidia.com>
  Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
  Inki Dae <inki.dae@samsung.com>
  Jaegeuk Kim <jaegeuk@kernel.org>
  Jakub Kicinski <kuba@kernel.org>
  James Clark <james.clark@arm.com>
  Jan Beulich <jbeulich@suse.com>
  Jani Nikula <jani.nikula@intel.com>
  Jason Gerecke <jason.gerecke@wacom.com>
  Jay Buddhabhatti <jay.buddhabhatti@amd.com>
  Jerry Hoemann <jerry.hoemann@hpe.com>
  Jiri Kosina <jkosina@suse.com>
  Jiri Olsa <jolsa@kernel.org>
  Jiri Olsa <jolsa@redhat.com>
  Joakim Zhang <joakim.zhang@cixtech.com>
  Joe Perches <joe@perches.com>
  John Johansen <john.johansen@canonical.com>
  Jon Hunter <jonathanh@nvidia.com>
  Judy Hsiao <judyhsiao@chromium.org>
  Julian Anastasov <ja@ssi.bg>
  Kalle Valo <kvalo@codeaurora.org>
  Kalle Valo <kvalo@kernel.org>
  Kamil Duljas <kamil.duljas@gmail.com>
  Kees Cook <keescook@chromium.org>
  Keith Busch <kbusch@kernel.org>
  kernelci.org bot <bot@kernelci.org>
  Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
  Konrad Dybcio <konrad.dybcio@linaro.org>
  Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
  Krzysztof Wilczyński <kwilczynski@kernel.org>
  Kunwu Chan <chentao@kylinos.cn>
  Laurent Dufour <ldufour@linux.ibm.com>
  Leon Romanovsky <leonro@nvidia.com>
  Li Jun <jun.li@nxp.com>
  Lin Ma <linma@zju.edu.cn>
  Linus Torvalds <torvalds@linux-foundation.org>
  Linus Walleij <linus.walleij@linaro.org>
  Linux Kernel Functional Testing <lkft@linaro.org>
  Luca Weiss <luca@z3ntu.xyz>
  Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
  Maciej Strozek <mstrozek@opensource.cirrus.com>
  Marek Szyprowski <m.szyprowski@samsung.com>
  Mark Brown <broonie@kernel.org>
  Martin K. Petersen <martin.petersen@oracle.com>
  Masahiro Yamada <masahiroy@kernel.org>
  Matthew Wilcox (Oracle) <willy@infradead.org>
  Maurizio Lombardi <mlombard@redhat.com>
  Mauro Carvalho Chehab <mchehab@kernel.org>
  Maxime Ripard <mripard@kernel.org>
  Michael Ellerman <mpe@ellerman.id.au>
  Michael S. Tsirkin <mst@redhat.com>
  Mickaël Salaün <mic@digikod.net>
  Mike Isely <isely@pobox.com>
  Mike Looijmans <mike.looijmans@topic.nl>
  Miquel Raynal <miquel.raynal@bootlin.com>
  Muhammad Usama Anjum <usama.anjum@collabora.com>
  Nam Cao <namcao@linutronix.de>
  Namhyung Kim <namhyung@kernel.org>
  Nathan Lynch <nathanl@linux.ibm.com>
  Nikita Kiryushin <kiryushin@ancud.ru>
  Nikita Yushchenko <nikita.yoush@cogentembedded.com>
  Nikita Zhandarovich <n.zhandarovich@fintech.ru>
  Niklas Schnelle <schnelle@linux.ibm.com>
  Nishanth Menon <nm@ti.com>
  Osama Muhammad <osmtendev@gmail.com>
  Ovidiu Panait <ovidiu.panait@windriver.com>
  Pablo Neira Ayuso <pablo@netfilter.org>
  Paolo Abeni <pabeni@redhat.com>
  Paolo Bonzini <pbonzini@redhat.com>
  Paul Moore <paul@paul-moore.com>
  Peter Chen <peter.chen@kernel.org>
  Peter Delevoryas <peter@pjd.dev>
  Peter Robinson <pbrobinson@gmail.com>
  Petr Machata <petrm@nvidia.com>
  Philipp Zabel <p.zabel@pengutronix.de>
  Ping Cheng <ping.cheng@wacom.com>
  Ping-Ke Shih <pkshih@realtek.com>
  Rafael Beims <rafael.beims@toradex.com> # Verdin iMX8MP/SD8997 SD
  Rafael J. Wysocki <rafael.j.wysocki@intel.com>
  Ram Muthiah <rammuthiah@google.com>
  Randy Dunlap <rdunlap@infradead.org>
  Ravi Gunasekaran <r-gunasekaran@ti.com>
  RD Babiera <rdbabiera@google.com>
  Ricardo B. Marliere <ricardo@marliere.net>
  Richard Weinberger <richard@nod.at>
  Rob Herring <robh@kernel.org>
  Rob Landley <rob@landley.net>
  Robert Foss <rfoss@kernel.org>
  Ronald Monthero <debug.penguin32@gmail.com>
  Sakari Ailus <sakari.ailus@linux.intel.com>
  Sasha Levin <sashal@kernel.org>
  Serge Semin <fancer.lancer@gmail.com>
  Sergey Shtylyov <s.shtylyov@omp.ru>
  Shuming Fan <shumingf@realtek.com>
  Siddharth Vadapalli <s-vadapalli@ti.com>
  Simon Horman <horms@kernel.org>
  Sjoerd Simons <sjoerd@collabora.com>
  Song Liu <song@kernel.org>
  Stefan Berger <stefanb@linux.ibm.com>
  Stefan Wahren <wahrenst@gmx.net>
  Stephen Boyd <sboyd@kernel.org>
  Steven Rostedt (Google) <rostedt@goodmis.org>
  Su Hui <suhui@nfschina.com>
  Sudip Mukherjee <sudipm.mukherjee@gmail.com>
  Suzuki K Poulose <suzuki.poulose@arm.com>
  Takashi Iwai <tiwai@suse.de>
  Tatsunosuke Tobita <tatsunosuke.tobita@wacom.com>
  Theodore Ts'o <tytso@mit.edu>
  Thinh Nguyen <Thinh.Nguyen@synopsys.com>
  Thinh Tran <thinhtr@linux.vnet.ibm.com>
  Thomas Bogendoerfer <tsbogend@alpha.franken.de>
  Thomas Gleixner <tglx@linutronix.de>
  Tiezhu Yang <yangtiezhu@loongson.cn>
  Tom Lendacky <thomas.lendacky@amd.com>
  Tomi Valkeinen <tomi.valkeinen@ideasonboard.com>
  Trond Myklebust <trond.myklebust@hammerspace.com>
  Ulf Hansson <ulf.hansson@linaro.org>
  Uttkarsh Aggarwal <quic_uaggarwa@quicinc.com>
  Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
  Vasiliy Kovalev <kovalev@altlinux.org>
  Venkata Sai Duggi <venkata.sai.duggi@ibm.com>
  Vineet Gupta <vgupta@kernel.org>
  Vineeth Vijayan <vneethv@linux.ibm.com>
  wangyangxin <wangyangxin1@huawei.com>
  Weihao Li <cn.liweihao@gmail.com>
  Wim Van Sebroeck <wim@linux-watchdog.org>
  Wolfram Sang <wsa+renesas@sang-engineering.com>
  Wolfram Sang <wsa@kernel.org>
  Xiang Chen <chenxiang66@hisilicon.com>
  Xiang Yang <xiangyang3@huawei.com>
  Xu Yang <xu.yang_2@nxp.com>
  Yang Yingliang <yangyingliang@huawei.com>
  Yihang Li <liyihang9@huawei.com>
  Zhang Yi <yi.zhang@huawei.com>
  ZhaoLong Wang <wangzhaolong1@huawei.com>
  Zheng Yejian <zhengyejian1@huawei.com>
  zhenwei pi <pizhenwei@bytedance.com>
  Zhipeng Lu <alexious@zju.edu.cn>
  Ziqi Zhao <astrajoan@yahoo.com>

jobs:
 build-amd64-xsm                                              pass    
 build-arm64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64                                                  pass    
 build-arm64                                                  pass    
 build-armhf                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-arm64-libvirt                                          pass    
 build-armhf-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-pvops                                            pass    
 build-arm64-pvops                                            pass    
 build-armhf-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-amd64-amd64-xl                                          pass    
 test-amd64-coresched-amd64-xl                                pass    
 test-arm64-arm64-xl                                          pass    
 test-armhf-armhf-xl                                          pass    
 test-amd64-i386-xl                                           pass    
 test-amd64-coresched-i386-xl                                 pass    
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm           pass    
 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm            pass    
 test-amd64-amd64-xl-qemut-stubdom-debianhvm-amd64-xsm        pass    
 test-amd64-i386-xl-qemut-stubdom-debianhvm-amd64-xsm         pass    
 test-amd64-amd64-xl-qemut-debianhvm-i386-xsm                 pass    
 test-amd64-i386-xl-qemut-debianhvm-i386-xsm                  pass    
 test-amd64-amd64-xl-qemuu-debianhvm-i386-xsm                 pass    
 test-amd64-i386-xl-qemuu-debianhvm-i386-xsm                  pass    
 test-amd64-amd64-libvirt-xsm                                 pass    
 test-arm64-arm64-libvirt-xsm                                 pass    
 test-amd64-i386-libvirt-xsm                                  pass    
 test-amd64-amd64-xl-xsm                                      pass    
 test-arm64-arm64-xl-xsm                                      pass    
 test-amd64-i386-xl-xsm                                       pass    
 test-amd64-amd64-qemuu-nested-amd                            fail    
 test-amd64-amd64-xl-pvhv2-amd                                pass    
 test-amd64-i386-qemut-rhel6hvm-amd                           pass    
 test-amd64-i386-qemuu-rhel6hvm-amd                           pass    
 test-amd64-amd64-dom0pvh-xl-amd                              pass    
 test-amd64-amd64-xl-qemut-debianhvm-amd64                    pass    
 test-amd64-i386-xl-qemut-debianhvm-amd64                     pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64                    pass    
 test-amd64-i386-xl-qemuu-debianhvm-amd64                     pass    
 test-amd64-i386-freebsd10-amd64                              pass    
 test-amd64-amd64-qemuu-freebsd11-amd64                       pass    
 test-amd64-amd64-qemuu-freebsd12-amd64                       pass    
 test-amd64-amd64-xl-qemuu-ovmf-amd64                         pass    
 test-amd64-i386-xl-qemuu-ovmf-amd64                          pass    
 test-amd64-amd64-xl-qemut-win7-amd64                         fail    
 test-amd64-i386-xl-qemut-win7-amd64                          fail    
 test-amd64-amd64-xl-qemuu-win7-amd64                         fail    
 test-amd64-i386-xl-qemuu-win7-amd64                          fail    
 test-amd64-amd64-xl-qemut-ws16-amd64                         fail    
 test-amd64-i386-xl-qemut-ws16-amd64                          fail    
 test-amd64-amd64-xl-qemuu-ws16-amd64                         fail    
 test-amd64-i386-xl-qemuu-ws16-amd64                          fail    
 test-armhf-armhf-xl-arndale                                  fail    
 test-amd64-amd64-examine-bios                                pass    
 test-amd64-i386-examine-bios                                 pass    
 test-amd64-amd64-xl-credit1                                  pass    
 test-arm64-arm64-xl-credit1                                  pass    
 test-armhf-armhf-xl-credit1                                  fail    
 test-amd64-amd64-xl-credit2                                  pass    
 test-arm64-arm64-xl-credit2                                  pass    
 test-armhf-armhf-xl-credit2                                  fail    
 test-amd64-amd64-xl-qemuu-dmrestrict-amd64-dmrestrict        pass    
 test-amd64-i386-xl-qemuu-dmrestrict-amd64-dmrestrict         pass    
 test-amd64-amd64-examine                                     pass    
 test-arm64-arm64-examine                                     pass    
 test-armhf-armhf-examine                                     pass    
 test-amd64-i386-examine                                      pass    
 test-amd64-i386-freebsd10-i386                               pass    
 test-amd64-amd64-qemuu-nested-intel                          pass    
 test-amd64-amd64-xl-pvhv2-intel                              pass    
 test-amd64-i386-qemut-rhel6hvm-intel                         pass    
 test-amd64-i386-qemuu-rhel6hvm-intel                         pass    
 test-amd64-amd64-dom0pvh-xl-intel                            pass    
 test-amd64-amd64-libvirt                                     pass    
 test-armhf-armhf-libvirt                                     pass    
 test-amd64-i386-libvirt                                      pass    
 test-amd64-amd64-xl-multivcpu                                pass    
 test-armhf-armhf-xl-multivcpu                                fail    
 test-amd64-amd64-pair                                        pass    
 test-amd64-i386-pair                                         pass    
 test-amd64-amd64-libvirt-pair                                pass    
 test-amd64-i386-libvirt-pair                                 pass    
 test-amd64-amd64-xl-pvshim                                   pass    
 test-amd64-i386-xl-pvshim                                    fail    
 test-amd64-amd64-pygrub                                      pass    
 test-armhf-armhf-libvirt-qcow2                               pass    
 test-amd64-amd64-xl-qcow2                                    fail    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-armhf-armhf-libvirt-raw                                 pass    
 test-amd64-i386-libvirt-raw                                  pass    
 test-amd64-amd64-xl-rtds                                     pass    
 test-armhf-armhf-xl-rtds                                     fail    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64-shadow             pass    
 test-amd64-i386-xl-qemuu-debianhvm-amd64-shadow              pass    
 test-amd64-amd64-xl-shadow                                   pass    
 test-amd64-i386-xl-shadow                                    pass    
 test-arm64-arm64-xl-thunderx                                 pass    
 test-amd64-amd64-examine-uefi                                pass    
 test-amd64-i386-examine-uefi                                 pass    
 test-amd64-amd64-libvirt-vhd                                 pass    
 test-arm64-arm64-xl-vhd                                      pass    
 test-armhf-armhf-xl-vhd                                      fail    
 test-amd64-i386-xl-vhd                                       pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Not pushing.

(No revision log; it would be 5292 lines long.)


From xen-devel-bounces@lists.xenproject.org Sat Jan 27 09:54:47 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 27 Jan 2024 09:54:47 +0000
Received: from list by lists.xenproject.org with outflank-mailman.672617.1046768 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTfOH-0003ig-HZ; Sat, 27 Jan 2024 09:54:21 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 672617.1046768; Sat, 27 Jan 2024 09:54:21 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTfOH-0003iZ-Ea; Sat, 27 Jan 2024 09:54:21 +0000
Received: by outflank-mailman (input) for mailman id 672617;
 Sat, 27 Jan 2024 09:54:20 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rTfOG-0003iP-1p; Sat, 27 Jan 2024 09:54:20 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rTfOF-00026T-NC; Sat, 27 Jan 2024 09:54:19 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rTfOF-0005hZ-C4; Sat, 27 Jan 2024 09:54:19 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rTfOF-00057q-Bb; Sat, 27 Jan 2024 09:54:19 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=NEZQE8DMb2Kzisqu+uUv0Bh/HXJNux64Stnp95uaMPI=; b=X2WhI6zjPaMlIN/t19GxbE78bp
	0v1JvHkl3SjsZ8j/uYB95QEZqT80ufLcGHsLOfkFeEDxz/AGUQX3mQkJi74R33n8ZNsNfZOrL+4MA
	VBj0DCD99DGFUuvXQldFq8kRunBQw9F7KQNbjjcNVVutaffaq6AI1N0az8mm2r6XW7Fs=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184484-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [xen-unstable test] 184484: tolerable FAIL - PUSHED
X-Osstest-Failures:
    xen-unstable:test-armhf-armhf-xl-rtds:guest-start/debian.repeat:fail:allowable
    xen-unstable:test-amd64-i386-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-amd64-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-qcow2:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-raw:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-amd64-qemuu-nested-amd:debian-hvm-install/l1/l2:fail:nonblocking
    xen-unstable:test-amd64-amd64-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-i386-libvirt-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-libvirt:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-pvshim:guest-start:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-credit2:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-credit2:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-credit1:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-credit1:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-thunderx:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-thunderx:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-libvirt-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-libvirt-xsm:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-xsm:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-multivcpu:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-multivcpu:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-libvirt-raw:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-libvirt-raw:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-libvirt-raw:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt-vhd:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-vhd:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-vhd:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-qcow2:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-raw:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-vhd:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-vhd:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-rtds:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-rtds:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit1:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit1:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit2:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit2:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-arndale:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-arndale:saverestore-support-check:fail:nonblocking
X-Osstest-Versions-This:
    xen=c378ff8983cd69786c35117e49640f027e581bca
X-Osstest-Versions-That:
    xen=dbdd7e8df75030d0b1097eb5a1b3c3cb378a657b
From: osstest service owner <osstest-admin@xenproject.org>
Date: Sat, 27 Jan 2024 09:54:19 +0000

flight 184484 xen-unstable real [real]
http://logs.test-lab.xenproject.org/osstest/logs/184484/

Failures :-/ but no regressions.

Regressions which are regarded as allowable (not blocking):
 test-armhf-armhf-xl-rtds    18 guest-start/debian.repeat fail REGR. vs. 184470

Tests which did not succeed, but are not blocking:
 test-amd64-i386-xl-qemuu-ws16-amd64 19 guest-stop       fail blocked in 184470
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 184470
 test-amd64-amd64-xl-qemut-win7-amd64 19 guest-stop            fail like 184470
 test-amd64-i386-xl-qemuu-win7-amd64 19 guest-stop             fail like 184470
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 184470
 test-amd64-i386-xl-qemut-ws16-amd64 19 guest-stop             fail like 184470
 test-armhf-armhf-libvirt-qcow2 15 saverestore-support-check   fail like 184470
 test-amd64-i386-xl-qemut-win7-amd64 19 guest-stop             fail like 184470
 test-armhf-armhf-libvirt-raw 15 saverestore-support-check    fail  like 184470
 test-amd64-amd64-xl-qemut-ws16-amd64 19 guest-stop            fail like 184470
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 184470
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 184470
 test-amd64-i386-libvirt-xsm  15 migrate-support-check        fail   never pass
 test-amd64-i386-libvirt      15 migrate-support-check        fail   never pass
 test-amd64-i386-xl-pvshim    14 guest-start                  fail   never pass
 test-amd64-amd64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit2  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit2  16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl          15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl          16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-credit1  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit1  16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-thunderx 15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-thunderx 16 saverestore-support-check    fail   never pass
 test-arm64-arm64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-xsm 16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-xsm      15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-xsm      16 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt     15 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-armhf-armhf-libvirt     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-multivcpu 15 migrate-support-check        fail  never pass
 test-armhf-armhf-xl-multivcpu 16 saverestore-support-check    fail  never pass
 test-amd64-i386-libvirt-raw  14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 15 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-vhd 14 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-vhd      14 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-vhd      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-qcow2 14 migrate-support-check        fail never pass
 test-armhf-armhf-libvirt-raw 14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-rtds     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-rtds     16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl          15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-credit1  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit1  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-credit2  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit2  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-arndale  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-arndale  16 saverestore-support-check    fail   never pass

version targeted for testing:
 xen                  c378ff8983cd69786c35117e49640f027e581bca
baseline version:
 xen                  dbdd7e8df75030d0b1097eb5a1b3c3cb378a657b

Last test of basis   184470  2024-01-26 02:32:21 Z    1 days
Testing same since   184484  2024-01-26 22:37:16 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Roger Pau Monné <roger.pau@citrix.com>

jobs:
 build-amd64-xsm                                              pass    
 build-arm64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64-xtf                                              pass    
 build-amd64                                                  pass    
 build-arm64                                                  pass    
 build-armhf                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-arm64-libvirt                                          pass    
 build-armhf-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-prev                                             pass    
 build-i386-prev                                              pass    
 build-amd64-pvops                                            pass    
 build-arm64-pvops                                            pass    
 build-armhf-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-xtf-amd64-amd64-1                                       pass    
 test-xtf-amd64-amd64-2                                       pass    
 test-xtf-amd64-amd64-3                                       pass    
 test-xtf-amd64-amd64-4                                       pass    
 test-xtf-amd64-amd64-5                                       pass    
 test-amd64-amd64-xl                                          pass    
 test-amd64-coresched-amd64-xl                                pass    
 test-arm64-arm64-xl                                          pass    
 test-armhf-armhf-xl                                          pass    
 test-amd64-i386-xl                                           pass    
 test-amd64-coresched-i386-xl                                 pass    
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm           pass    
 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm            pass    
 test-amd64-amd64-xl-qemut-stubdom-debianhvm-amd64-xsm        pass    
 test-amd64-i386-xl-qemut-stubdom-debianhvm-amd64-xsm         pass    
 test-amd64-amd64-xl-qemut-debianhvm-i386-xsm                 pass    
 test-amd64-i386-xl-qemut-debianhvm-i386-xsm                  pass    
 test-amd64-amd64-xl-qemuu-debianhvm-i386-xsm                 pass    
 test-amd64-i386-xl-qemuu-debianhvm-i386-xsm                  pass    
 test-amd64-amd64-libvirt-xsm                                 pass    
 test-arm64-arm64-libvirt-xsm                                 pass    
 test-amd64-i386-libvirt-xsm                                  pass    
 test-amd64-amd64-xl-xsm                                      pass    
 test-arm64-arm64-xl-xsm                                      pass    
 test-amd64-i386-xl-xsm                                       pass    
 test-amd64-amd64-qemuu-nested-amd                            fail    
 test-amd64-amd64-xl-pvhv2-amd                                pass    
 test-amd64-i386-qemut-rhel6hvm-amd                           pass    
 test-amd64-i386-qemuu-rhel6hvm-amd                           pass    
 test-amd64-amd64-dom0pvh-xl-amd                              pass    
 test-amd64-amd64-xl-qemut-debianhvm-amd64                    pass    
 test-amd64-i386-xl-qemut-debianhvm-amd64                     pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64                    pass    
 test-amd64-i386-xl-qemuu-debianhvm-amd64                     pass    
 test-amd64-i386-freebsd10-amd64                              pass    
 test-amd64-amd64-qemuu-freebsd11-amd64                       pass    
 test-amd64-amd64-qemuu-freebsd12-amd64                       pass    
 test-amd64-amd64-xl-qemuu-ovmf-amd64                         pass    
 test-amd64-i386-xl-qemuu-ovmf-amd64                          pass    
 test-amd64-amd64-xl-qemut-win7-amd64                         fail    
 test-amd64-i386-xl-qemut-win7-amd64                          fail    
 test-amd64-amd64-xl-qemuu-win7-amd64                         fail    
 test-amd64-i386-xl-qemuu-win7-amd64                          fail    
 test-amd64-amd64-xl-qemut-ws16-amd64                         fail    
 test-amd64-i386-xl-qemut-ws16-amd64                          fail    
 test-amd64-amd64-xl-qemuu-ws16-amd64                         fail    
 test-amd64-i386-xl-qemuu-ws16-amd64                          fail    
 test-armhf-armhf-xl-arndale                                  pass    
 test-amd64-amd64-examine-bios                                pass    
 test-amd64-i386-examine-bios                                 pass    
 test-amd64-amd64-xl-credit1                                  pass    
 test-arm64-arm64-xl-credit1                                  pass    
 test-armhf-armhf-xl-credit1                                  pass    
 test-amd64-amd64-xl-credit2                                  pass    
 test-arm64-arm64-xl-credit2                                  pass    
 test-armhf-armhf-xl-credit2                                  pass    
 test-amd64-amd64-xl-qemuu-dmrestrict-amd64-dmrestrict        pass    
 test-amd64-i386-xl-qemuu-dmrestrict-amd64-dmrestrict         pass    
 test-amd64-amd64-examine                                     pass    
 test-arm64-arm64-examine                                     pass    
 test-armhf-armhf-examine                                     pass    
 test-amd64-i386-examine                                      pass    
 test-amd64-i386-freebsd10-i386                               pass    
 test-amd64-amd64-qemuu-nested-intel                          pass    
 test-amd64-amd64-xl-pvhv2-intel                              pass    
 test-amd64-i386-qemut-rhel6hvm-intel                         pass    
 test-amd64-i386-qemuu-rhel6hvm-intel                         pass    
 test-amd64-amd64-dom0pvh-xl-intel                            pass    
 test-amd64-amd64-libvirt                                     pass    
 test-armhf-armhf-libvirt                                     pass    
 test-amd64-i386-libvirt                                      pass    
 test-amd64-amd64-livepatch                                   pass    
 test-amd64-i386-livepatch                                    pass    
 test-amd64-amd64-migrupgrade                                 pass    
 test-amd64-i386-migrupgrade                                  pass    
 test-amd64-amd64-xl-multivcpu                                pass    
 test-armhf-armhf-xl-multivcpu                                pass    
 test-amd64-amd64-pair                                        pass    
 test-amd64-i386-pair                                         pass    
 test-amd64-amd64-libvirt-pair                                pass    
 test-amd64-i386-libvirt-pair                                 pass    
 test-amd64-amd64-xl-pvshim                                   pass    
 test-amd64-i386-xl-pvshim                                    fail    
 test-amd64-amd64-pygrub                                      pass    
 test-armhf-armhf-libvirt-qcow2                               pass    
 test-amd64-amd64-xl-qcow2                                    pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-armhf-armhf-libvirt-raw                                 pass    
 test-amd64-i386-libvirt-raw                                  pass    
 test-amd64-amd64-xl-rtds                                     pass    
 test-armhf-armhf-xl-rtds                                     fail    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64-shadow             pass    
 test-amd64-i386-xl-qemuu-debianhvm-amd64-shadow              pass    
 test-amd64-amd64-xl-shadow                                   pass    
 test-amd64-i386-xl-shadow                                    pass    
 test-arm64-arm64-xl-thunderx                                 pass    
 test-amd64-amd64-examine-uefi                                pass    
 test-amd64-i386-examine-uefi                                 pass    
 test-amd64-amd64-libvirt-vhd                                 pass    
 test-arm64-arm64-xl-vhd                                      pass    
 test-armhf-armhf-xl-vhd                                      pass    
 test-amd64-i386-xl-vhd                                       pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Pushing revision :

To xenbits.xen.org:/home/xen/git/xen.git
   dbdd7e8df7..c378ff8983  c378ff8983cd69786c35117e49640f027e581bca -> master


From xen-devel-bounces@lists.xenproject.org Sat Jan 27 10:08:03 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 27 Jan 2024 10:08:03 +0000
Received: from list by lists.xenproject.org with outflank-mailman.672625.1046782 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTfbT-0005mJ-Oe; Sat, 27 Jan 2024 10:07:59 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 672625.1046782; Sat, 27 Jan 2024 10:07:59 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTfbT-0005mC-Ld; Sat, 27 Jan 2024 10:07:59 +0000
Received: by outflank-mailman (input) for mailman id 672625;
 Sat, 27 Jan 2024 10:07:58 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=eyoq=JF=casper.srs.infradead.org=BATV+2d71f3dbc0876e822724+7461+infradead.org+dwmw2@srs-se1.protection.inumbo.net>)
 id 1rTfbR-0005m6-KI
 for xen-devel@lists.xenproject.org; Sat, 27 Jan 2024 10:07:58 +0000
Received: from casper.infradead.org (casper.infradead.org
 [2001:8b0:10b:1236::1])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id f11d7c81-bcfb-11ee-8a43-1f161083a0e0;
 Sat, 27 Jan 2024 11:07:56 +0100 (CET)
Received: from [2001:8b0:10b:5:d160:e4ac:a057:38f5]
 (helo=u3832b3a9db3152.ant.amazon.com)
 by casper.infradead.org with esmtpsa (Exim 4.97.1 #2 (Red Hat Linux))
 id 1rTfbC-0000000GZvS-3mTU; Sat, 27 Jan 2024 10:07:44 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: f11d7c81-bcfb-11ee-8a43-1f161083a0e0
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=infradead.org; s=casper.20170209; h=MIME-Version:Content-Type:References:
	In-Reply-To:Date:Cc:To:From:Subject:Message-ID:Sender:Reply-To:
	Content-Transfer-Encoding:Content-ID:Content-Description;
	bh=JEpN3uQzU1ikQM+mdHfG75NrIjNZkwzaEwcwOwUVCw0=; b=Z2AjJjv9tQHJ5QiDkHoprkayyT
	X2TTPoyXdSAPj4qKSGscok4weh64gANVuLT4OK/LE5gf0obZBGQsQ9kjwIaeXgcZRdaaETY+ieMoq
	uTM+upywGvMHma65mZ2osdbj6Cyo4YwXlVT9pOq8TWjdL/cZm54Ii0XCdwbQ55zt6L6iSmAx48i6H
	8tzZ2B+7unOd3XP6DhTxn/P+pPcggOIZQsGaOwKa+6um+PR8ZsE3AS99tWEstDG0tmv2fHJjdkSQy
	y/92olQpAGKinMb7Jw/GlKiJsDAX0jBBxwLMrrMs+rh2sKyKSB9rWTXOL3OlGrKxFl8GYTNo1zYis
	TNE2Sjpw==;
Message-ID: <cd2f185c1c85add9ea863d61a633089d0aaf535a.camel@infradead.org>
Subject: Re: [PATCH v2 10/23] target/i386: Prefer fast cpu_env() over slower
 CPU QOM cast macro
From: David Woodhouse <dwmw2@infradead.org>
To: Philippe =?ISO-8859-1?Q?Mathieu-Daud=E9?= <philmd@linaro.org>, 
	qemu-devel@nongnu.org
Cc: qemu-arm@nongnu.org, Thomas Huth <thuth@redhat.com>,
 qemu-s390x@nongnu.org,  qemu-riscv@nongnu.org, Eduardo Habkost
 <eduardo@habkost.net>,  kvm@vger.kernel.org, qemu-ppc@nongnu.org, Richard
 Henderson <richard.henderson@linaro.org>, Vladimir Sementsov-Ogievskiy
 <vsementsov@yandex-team.ru>, Paolo Bonzini <pbonzini@redhat.com>, "Michael
 S. Tsirkin" <mst@redhat.com>, Marcel Apfelbaum
 <marcel.apfelbaum@gmail.com>, Stefano Stabellini <sstabellini@kernel.org>,
 Anthony Perard <anthony.perard@citrix.com>, Paul Durrant <paul@xen.org>,
 Cameron Esfahani <dirty@apple.com>, Roman Bolshakov <rbolshakov@ddn.com>, 
 Marcelo Tosatti <mtosatti@redhat.com>, xen-devel@lists.xenproject.org
Date: Sat, 27 Jan 2024 10:07:43 +0000
In-Reply-To: <20240126220407.95022-11-philmd@linaro.org>
References: <20240126220407.95022-1-philmd@linaro.org>
	 <20240126220407.95022-11-philmd@linaro.org>
Content-Type: multipart/signed; micalg="sha-256"; protocol="application/pkcs7-signature";
	boundary="=-JBCXb+YcypR1cFdo69BE"
User-Agent: Evolution 3.44.4-0ubuntu2 
MIME-Version: 1.0
X-SRS-Rewrite: SMTP reverse-path rewritten from <dwmw2@infradead.org> by casper.infradead.org. See http://www.infradead.org/rpr.html


--=-JBCXb+YcypR1cFdo69BE
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

On Fri, 2024-01-26 at 23:03 +0100, Philippe Mathieu-Daud=C3=A9 wrote:
> Mechanical patch produced running the command documented
> in scripts/coccinelle/cpu_env.cocci_template header.
>=20
> Signed-off-by: Philippe Mathieu-Daud=C3=A9 <philmd@linaro.org>
> ---

For the KVM/Xen parts

Acked-by: David Woodhouse <dwmw@amazon.co.uk>

--=-JBCXb+YcypR1cFdo69BE
Content-Type: application/pkcs7-signature; name="smime.p7s"
Content-Disposition: attachment; filename="smime.p7s"
Content-Transfer-Encoding: base64

MIAGCSqGSIb3DQEHAqCAMIACAQExDzANBglghkgBZQMEAgEFADCABgkqhkiG9w0BBwEAAKCCEkQw
ggYQMIID+KADAgECAhBNlCwQ1DvglAnFgS06KwZPMA0GCSqGSIb3DQEBDAUAMIGIMQswCQYDVQQG
EwJVUzETMBEGA1UECBMKTmV3IEplcnNleTEUMBIGA1UEBxMLSmVyc2V5IENpdHkxHjAcBgNVBAoT
FVRoZSBVU0VSVFJVU1QgTmV0d29yazEuMCwGA1UEAxMlVVNFUlRydXN0IFJTQSBDZXJ0aWZpY2F0
aW9uIEF1dGhvcml0eTAeFw0xODExMDIwMDAwMDBaFw0zMDEyMzEyMzU5NTlaMIGWMQswCQYDVQQG
EwJHQjEbMBkGA1UECBMSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHEwdTYWxmb3JkMRgwFgYD
VQQKEw9TZWN0aWdvIExpbWl0ZWQxPjA8BgNVBAMTNVNlY3RpZ28gUlNBIENsaWVudCBBdXRoZW50
aWNhdGlvbiBhbmQgU2VjdXJlIEVtYWlsIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
AQEAyjztlApB/975Rrno1jvm2pK/KxBOqhq8gr2+JhwpKirSzZxQgT9tlC7zl6hn1fXjSo5MqXUf
ItMltrMaXqcESJuK8dtK56NCSrq4iDKaKq9NxOXFmqXX2zN8HHGjQ2b2Xv0v1L5Nk1MQPKA19xeW
QcpGEGFUUd0kN+oHox+L9aV1rjfNiCj3bJk6kJaOPabPi2503nn/ITX5e8WfPnGw4VuZ79Khj1YB
rf24k5Ee1sLTHsLtpiK9OjG4iQRBdq6Z/TlVx/hGAez5h36bBJMxqdHLpdwIUkTqT8se3ed0PewD
ch/8kHPo5fZl5u1B0ecpq/sDN/5sCG52Ds+QU5O5EwIDAQABo4IBZDCCAWAwHwYDVR0jBBgwFoAU
U3m/WqorSs9UgOHYm8Cd8rIDZsswHQYDVR0OBBYEFAnA8vwL2pTbX/4r36iZQs/J4K0AMA4GA1Ud
DwEB/wQEAwIBhjASBgNVHRMBAf8ECDAGAQH/AgEAMB0GA1UdJQQWMBQGCCsGAQUFBwMCBggrBgEF
BQcDBDARBgNVHSAECjAIMAYGBFUdIAAwUAYDVR0fBEkwRzBFoEOgQYY/aHR0cDovL2NybC51c2Vy
dHJ1c3QuY29tL1VTRVJUcnVzdFJTQUNlcnRpZmljYXRpb25BdXRob3JpdHkuY3JsMHYGCCsGAQUF
BwEBBGowaDA/BggrBgEFBQcwAoYzaHR0cDovL2NydC51c2VydHJ1c3QuY29tL1VTRVJUcnVzdFJT
QUFkZFRydXN0Q0EuY3J0MCUGCCsGAQUFBzABhhlodHRwOi8vb2NzcC51c2VydHJ1c3QuY29tMA0G
CSqGSIb3DQEBDAUAA4ICAQBBRHUAqznCFfXejpVtMnFojADdF9d6HBA4kMjjsb0XMZHztuOCtKF+
xswhh2GqkW5JQrM8zVlU+A2VP72Ky2nlRA1GwmIPgou74TZ/XTarHG8zdMSgaDrkVYzz1g3nIVO9
IHk96VwsacIvBF8JfqIs+8aWH2PfSUrNxP6Ys7U0sZYx4rXD6+cqFq/ZW5BUfClN/rhk2ddQXyn7
kkmka2RQb9d90nmNHdgKrwfQ49mQ2hWQNDkJJIXwKjYA6VUR/fZUFeCUisdDe/0ABLTI+jheXUV1
eoYV7lNwNBKpeHdNuO6Aacb533JlfeUHxvBz9OfYWUiXu09sMAviM11Q0DuMZ5760CdO2VnpsXP4
KxaYIhvqPqUMWqRdWyn7crItNkZeroXaecG03i3mM7dkiPaCkgocBg0EBYsbZDZ8bsG3a08LwEsL
1Ygz3SBsyECa0waq4hOf/Z85F2w2ZpXfP+w8q4ifwO90SGZZV+HR/Jh6rEaVPDRF/CEGVqR1hiuQ
OZ1YL5ezMTX0ZSLwrymUE0pwi/KDaiYB15uswgeIAcA6JzPFf9pLkAFFWs1QNyN++niFhsM47qod
x/PL+5jR87myx5uYdBEQkkDc+lKB1Wct6ucXqm2EmsaQ0M95QjTmy+rDWjkDYdw3Ms6mSWE3Bn7i
5ZgtwCLXgAIe5W8mybM2JzCCBhQwggT8oAMCAQICEQDGvhmWZ0DEAx0oURL6O6l+MA0GCSqGSIb3
DQEBCwUAMIGWMQswCQYDVQQGEwJHQjEbMBkGA1UECBMSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYD
VQQHEwdTYWxmb3JkMRgwFgYDVQQKEw9TZWN0aWdvIExpbWl0ZWQxPjA8BgNVBAMTNVNlY3RpZ28g
UlNBIENsaWVudCBBdXRoZW50aWNhdGlvbiBhbmQgU2VjdXJlIEVtYWlsIENBMB4XDTIyMDEwNzAw
MDAwMFoXDTI1MDEwNjIzNTk1OVowJDEiMCAGCSqGSIb3DQEJARYTZHdtdzJAaW5mcmFkZWFkLm9y
ZzCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBALQ3GpC2bomUqk+91wLYBzDMcCj5C9m6
oZaHwvmIdXftOgTbCJXADo6G9T7BBAebw2JV38EINgKpy/ZHh7htyAkWYVoFsFPrwHounto8xTsy
SSePMiPlmIdQ10BcVSXMUJ3Juu16GlWOnAMJY2oYfEzmE7uT9YgcBqKCo65pTFmOnR/VVbjJk4K2
xE34GC2nAdUQkPFuyaFisicc6HRMOYXPuF0DuwITEKnjxgNjP+qDrh0db7PAjO1D4d5ftfrsf+kd
RR4gKVGSk8Tz2WwvtLAroJM4nXjNPIBJNT4w/FWWc/5qPHJy2U+eITZ5LLE5s45mX2oPFknWqxBo
bQZ8a9dsZ3dSPZBvE9ZrmtFLrVrN4eo1jsXgAp1+p7bkfqd3BgBEmfsYWlBXO8rVXfvPgLs32VdV
NZxb/CDWPqBsiYv0Hv3HPsz07j5b+/cVoWqyHDKzkaVbxfq/7auNVRmPB3v5SWEsH8xi4Bez2V9U
KxfYCnqsjp8RaC2/khxKt0A552Eaxnz/4ly/2C7wkwTQnBmdlFYhAflWKQ03Ufiu8t3iBE3VJbc2
5oMrglj7TRZrmKq3CkbFnX0fyulB+kHimrt6PIWn7kgyl9aelIl6vtbhMA+l0nfrsORMa4kobqQ5
C5rveVgmcIad67EDa+UqEKy/GltUwlSh6xy+TrK1tzDvAgMBAAGjggHMMIIByDAfBgNVHSMEGDAW
gBQJwPL8C9qU21/+K9+omULPyeCtADAdBgNVHQ4EFgQUzMeDMcimo0oz8o1R1Nver3ZVpSkwDgYD
VR0PAQH/BAQDAgWgMAwGA1UdEwEB/wQCMAAwHQYDVR0lBBYwFAYIKwYBBQUHAwQGCCsGAQUFBwMC
MEAGA1UdIAQ5MDcwNQYMKwYBBAGyMQECAQEBMCUwIwYIKwYBBQUHAgEWF2h0dHBzOi8vc2VjdGln
by5jb20vQ1BTMFoGA1UdHwRTMFEwT6BNoEuGSWh0dHA6Ly9jcmwuc2VjdGlnby5jb20vU2VjdGln
b1JTQUNsaWVudEF1dGhlbnRpY2F0aW9uYW5kU2VjdXJlRW1haWxDQS5jcmwwgYoGCCsGAQUFBwEB
BH4wfDBVBggrBgEFBQcwAoZJaHR0cDovL2NydC5zZWN0aWdvLmNvbS9TZWN0aWdvUlNBQ2xpZW50
QXV0aGVudGljYXRpb25hbmRTZWN1cmVFbWFpbENBLmNydDAjBggrBgEFBQcwAYYXaHR0cDovL29j
c3Auc2VjdGlnby5jb20wHgYDVR0RBBcwFYETZHdtdzJAaW5mcmFkZWFkLm9yZzANBgkqhkiG9w0B
AQsFAAOCAQEAyW6MUir5dm495teKqAQjDJwuFCi35h4xgnQvQ/fzPXmtR9t54rpmI2TfyvcKgOXp
qa7BGXNFfh1JsqexVkIqZP9uWB2J+uVMD+XZEs/KYNNX2PvIlSPrzIB4Z2wyIGQpaPLlYflrrVFK
v9CjT2zdqvy2maK7HKOQRt3BiJbVG5lRiwbbygldcALEV9ChWFfgSXvrWDZspnU3Gjw/rMHrGnql
Htlyebp3pf3fSS9kzQ1FVtVIDrL6eqhTwJxe+pXSMMqFiN0whpBtXdyDjzBtQTaZJ7zTT/vlehc/
tDuqZwGHm/YJy883Ll+GP3NvOkgaRGWEuYWJJ6hFCkXYjyR9IzCCBhQwggT8oAMCAQICEQDGvhmW
Z0DEAx0oURL6O6l+MA0GCSqGSIb3DQEBCwUAMIGWMQswCQYDVQQGEwJHQjEbMBkGA1UECBMSR3Jl
YXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHEwdTYWxmb3JkMRgwFgYDVQQKEw9TZWN0aWdvIExpbWl0
ZWQxPjA8BgNVBAMTNVNlY3RpZ28gUlNBIENsaWVudCBBdXRoZW50aWNhdGlvbiBhbmQgU2VjdXJl
IEVtYWlsIENBMB4XDTIyMDEwNzAwMDAwMFoXDTI1MDEwNjIzNTk1OVowJDEiMCAGCSqGSIb3DQEJ
ARYTZHdtdzJAaW5mcmFkZWFkLm9yZzCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBALQ3
GpC2bomUqk+91wLYBzDMcCj5C9m6oZaHwvmIdXftOgTbCJXADo6G9T7BBAebw2JV38EINgKpy/ZH
h7htyAkWYVoFsFPrwHounto8xTsySSePMiPlmIdQ10BcVSXMUJ3Juu16GlWOnAMJY2oYfEzmE7uT
9YgcBqKCo65pTFmOnR/VVbjJk4K2xE34GC2nAdUQkPFuyaFisicc6HRMOYXPuF0DuwITEKnjxgNj
P+qDrh0db7PAjO1D4d5ftfrsf+kdRR4gKVGSk8Tz2WwvtLAroJM4nXjNPIBJNT4w/FWWc/5qPHJy
2U+eITZ5LLE5s45mX2oPFknWqxBobQZ8a9dsZ3dSPZBvE9ZrmtFLrVrN4eo1jsXgAp1+p7bkfqd3
BgBEmfsYWlBXO8rVXfvPgLs32VdVNZxb/CDWPqBsiYv0Hv3HPsz07j5b+/cVoWqyHDKzkaVbxfq/
7auNVRmPB3v5SWEsH8xi4Bez2V9UKxfYCnqsjp8RaC2/khxKt0A552Eaxnz/4ly/2C7wkwTQnBmd
lFYhAflWKQ03Ufiu8t3iBE3VJbc25oMrglj7TRZrmKq3CkbFnX0fyulB+kHimrt6PIWn7kgyl9ae
lIl6vtbhMA+l0nfrsORMa4kobqQ5C5rveVgmcIad67EDa+UqEKy/GltUwlSh6xy+TrK1tzDvAgMB
AAGjggHMMIIByDAfBgNVHSMEGDAWgBQJwPL8C9qU21/+K9+omULPyeCtADAdBgNVHQ4EFgQUzMeD
Mcimo0oz8o1R1Nver3ZVpSkwDgYDVR0PAQH/BAQDAgWgMAwGA1UdEwEB/wQCMAAwHQYDVR0lBBYw
FAYIKwYBBQUHAwQGCCsGAQUFBwMCMEAGA1UdIAQ5MDcwNQYMKwYBBAGyMQECAQEBMCUwIwYIKwYB
BQUHAgEWF2h0dHBzOi8vc2VjdGlnby5jb20vQ1BTMFoGA1UdHwRTMFEwT6BNoEuGSWh0dHA6Ly9j
cmwuc2VjdGlnby5jb20vU2VjdGlnb1JTQUNsaWVudEF1dGhlbnRpY2F0aW9uYW5kU2VjdXJlRW1h
aWxDQS5jcmwwgYoGCCsGAQUFBwEBBH4wfDBVBggrBgEFBQcwAoZJaHR0cDovL2NydC5zZWN0aWdv
LmNvbS9TZWN0aWdvUlNBQ2xpZW50QXV0aGVudGljYXRpb25hbmRTZWN1cmVFbWFpbENBLmNydDAj
BggrBgEFBQcwAYYXaHR0cDovL29jc3Auc2VjdGlnby5jb20wHgYDVR0RBBcwFYETZHdtdzJAaW5m
cmFkZWFkLm9yZzANBgkqhkiG9w0BAQsFAAOCAQEAyW6MUir5dm495teKqAQjDJwuFCi35h4xgnQv
Q/fzPXmtR9t54rpmI2TfyvcKgOXpqa7BGXNFfh1JsqexVkIqZP9uWB2J+uVMD+XZEs/KYNNX2PvI
lSPrzIB4Z2wyIGQpaPLlYflrrVFKv9CjT2zdqvy2maK7HKOQRt3BiJbVG5lRiwbbygldcALEV9Ch
WFfgSXvrWDZspnU3Gjw/rMHrGnqlHtlyebp3pf3fSS9kzQ1FVtVIDrL6eqhTwJxe+pXSMMqFiN0w
hpBtXdyDjzBtQTaZJ7zTT/vlehc/tDuqZwGHm/YJy883Ll+GP3NvOkgaRGWEuYWJJ6hFCkXYjyR9
IzGCBMcwggTDAgEBMIGsMIGWMQswCQYDVQQGEwJHQjEbMBkGA1UECBMSR3JlYXRlciBNYW5jaGVz
dGVyMRAwDgYDVQQHEwdTYWxmb3JkMRgwFgYDVQQKEw9TZWN0aWdvIExpbWl0ZWQxPjA8BgNVBAMT
NVNlY3RpZ28gUlNBIENsaWVudCBBdXRoZW50aWNhdGlvbiBhbmQgU2VjdXJlIEVtYWlsIENBAhEA
xr4ZlmdAxAMdKFES+jupfjANBglghkgBZQMEAgEFAKCCAeswGAYJKoZIhvcNAQkDMQsGCSqGSIb3
DQEHATAcBgkqhkiG9w0BCQUxDxcNMjQwMTI3MTAwNzQzWjAvBgkqhkiG9w0BCQQxIgQgDWoN0FKu
aSw1olN5qrsQHiNybO/ClXdPKPkZXaDUG2Ewgb0GCSsGAQQBgjcQBDGBrzCBrDCBljELMAkGA1UE
BhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEYMBYG
A1UEChMPU2VjdGlnbyBMaW1pdGVkMT4wPAYDVQQDEzVTZWN0aWdvIFJTQSBDbGllbnQgQXV0aGVu
dGljYXRpb24gYW5kIFNlY3VyZSBFbWFpbCBDQQIRAMa+GZZnQMQDHShREvo7qX4wgb8GCyqGSIb3
DQEJEAILMYGvoIGsMIGWMQswCQYDVQQGEwJHQjEbMBkGA1UECBMSR3JlYXRlciBNYW5jaGVzdGVy
MRAwDgYDVQQHEwdTYWxmb3JkMRgwFgYDVQQKEw9TZWN0aWdvIExpbWl0ZWQxPjA8BgNVBAMTNVNl
Y3RpZ28gUlNBIENsaWVudCBBdXRoZW50aWNhdGlvbiBhbmQgU2VjdXJlIEVtYWlsIENBAhEAxr4Z
lmdAxAMdKFES+jupfjANBgkqhkiG9w0BAQEFAASCAgAvNkutFTSZg/bsMBvnYTnQz4KQJG1r6SgP
paNP1p7Ua/g1J7GL4SHcsg0OM3lT/SACSMu71ZVxUqiITZH1sjVkoYlyGx9Tc29Hc/g8YWGUvg9V
us1yC0p9ntEdDiMEknAgGoczuEEvbFa6bvqFk3RsjpCJrfiaHIFwsIP+xnu5nVD0aCJLKFufoN7V
ZdlZlSAdZ5XjK7XkaspemXf7MfFyekl30LdhrJZSnVS/UMV7nnT/dKezTDeIgPCEqi8FgntBBcO4
i3FipbudAuf8ljhXqLSKt6jcEbIo84qx9bJcsCfVbiMWkLvnBviHgMrj/KmOMzLRmU7yqkCLs4yJ
mmY5kb/5448Rm/zJ2Fw0WDwVh8ImUel4xbgrFYA5AYDVroQ7NKmEAE0s3jau+VxnqOblxymJUbW5
udYztVYFlVUba8L2lJT6/oJJZ0tiEEVT8zxYGHcWosRtwjp2p5XvUQdF+9zSi/mq+XP1TNe9W5xg
/OY0OQdKdpGXk54FGGfc+wFvLHUAgZBD/DXc/M/aFVTenjUIZbUNX7Dv+zI18MiPUY5gx8zVrbQZ
lFlLoQ9lG2e+Czo/dGtYyqjS5bz0N7p9oO/y21b1bZiZf8F5gDgHfHRWwKHWUDALuVmh3G8c4DU0
aztej27nYxVMc7fgnbgwXBw2BmhXjz/Tr7KJjFj8ywAAAAAAAA==


--=-JBCXb+YcypR1cFdo69BE--


From xen-devel-bounces@lists.xenproject.org Sat Jan 27 12:09:52 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 27 Jan 2024 12:09:52 +0000
Received: from list by lists.xenproject.org with outflank-mailman.672646.1046799 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rThVB-0002lE-FU; Sat, 27 Jan 2024 12:09:37 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 672646.1046799; Sat, 27 Jan 2024 12:09:37 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rThVB-0002l7-Co; Sat, 27 Jan 2024 12:09:37 +0000
Received: by outflank-mailman (input) for mailman id 672646;
 Sat, 27 Jan 2024 12:08:34 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=Em+J=JF=intel.com=zhao1.liu@srs-se1.protection.inumbo.net>)
 id 1rThUA-0002k3-9l
 for xen-devel@lists.xenproject.org; Sat, 27 Jan 2024 12:08:34 +0000
Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.12])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id c89ce689-bd0c-11ee-8a43-1f161083a0e0;
 Sat, 27 Jan 2024 13:08:31 +0100 (CET)
Received: from fmviesa001.fm.intel.com ([10.60.135.141])
 by fmvoesa106.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;
 27 Jan 2024 04:08:29 -0800
Received: from liuzhao-optiplex-7080.sh.intel.com (HELO localhost)
 ([10.239.160.36])
 by fmviesa001.fm.intel.com with ESMTP; 27 Jan 2024 04:08:23 -0800
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: c89ce689-bd0c-11ee-8a43-1f161083a0e0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple;
  d=intel.com; i=@intel.com; q=dns/txt; s=Intel;
  t=1706357312; x=1737893312;
  h=date:from:to:cc:subject:message-id:references:
   mime-version:content-transfer-encoding:in-reply-to;
  bh=3x780jZTGqOv7hVPrMhBFyVFEFi8QjUCScTBKCbV9CE=;
  b=S8gPhn0hD/QzxvLTe60p4U4U/c2dJGrjSY4oMGnfIExNczRZiA8rNiOq
   475qfvROpmYoheM5tfauxqJagJkabIqVmAKjbk2I4kxnChz1LoABv5Hpw
   R7o9ImCCWyLjDv4y7GFH9mzg5K26W+kPOBA2EUluqsVnwbylBqUhz0Sc7
   JUTTrVjeIL3nDuYZmkQmF/eNhQXd5/lc1RoC+i7gNN5Eds+ihd/MwjlWC
   i0hRT9jmMTOPPVSFeoL2X1gWoxYdEhpFLPCTyjaQB26mwElQgttOGTYlE
   AKZDaBIN8IEjsMx/uKhS0L8euxR2ZLf1OGWLsr7iCbiXDoqoLXPZqUywN
   Q==;
X-IronPort-AV: E=McAfee;i="6600,9927,10964"; a="2506039"
X-IronPort-AV: E=Sophos;i="6.05,220,1701158400"; 
   d="scan'208";a="2506039"
X-ExtLoop1: 1
X-IronPort-AV: E=Sophos;i="6.05,220,1701158400"; 
   d="scan'208";a="29342189"
Date: Sat, 27 Jan 2024 20:21:27 +0800
From: Zhao Liu <zhao1.liu@intel.com>
To: Philippe =?iso-8859-1?Q?Mathieu-Daud=E9?= <philmd@linaro.org>
Cc: qemu-devel@nongnu.org, qemu-arm@nongnu.org,
	Thomas Huth <thuth@redhat.com>, qemu-s390x@nongnu.org,
	qemu-riscv@nongnu.org, Eduardo Habkost <eduardo@habkost.net>,
	kvm@vger.kernel.org, qemu-ppc@nongnu.org,
	Richard Henderson <richard.henderson@linaro.org>,
	Vladimir Sementsov-Ogievskiy <vsementsov@yandex-team.ru>,
	Paolo Bonzini <pbonzini@redhat.com>,
	"Michael S. Tsirkin" <mst@redhat.com>,
	Marcel Apfelbaum <marcel.apfelbaum@gmail.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Anthony Perard <anthony.perard@citrix.com>,
	Paul Durrant <paul@xen.org>, Cameron Esfahani <dirty@apple.com>,
	Roman Bolshakov <rbolshakov@ddn.com>,
	Marcelo Tosatti <mtosatti@redhat.com>,
	David Woodhouse <dwmw2@infradead.org>,
	xen-devel@lists.xenproject.org
Subject: Re: [PATCH v2 10/23] target/i386: Prefer fast cpu_env() over slower
 CPU QOM cast macro
Message-ID: <ZbT1R7impEw4whqP@intel.com>
References: <20240126220407.95022-1-philmd@linaro.org>
 <20240126220407.95022-11-philmd@linaro.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=iso-8859-1
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <20240126220407.95022-11-philmd@linaro.org>

Hi Philippe,

On Fri, Jan 26, 2024 at 11:03:52PM +0100, Philippe Mathieu-Daud wrote:
> Date: Fri, 26 Jan 2024 23:03:52 +0100
> From: Philippe Mathieu-Daud <philmd@linaro.org>
> Subject: [PATCH v2 10/23] target/i386: Prefer fast cpu_env() over slower
>  CPU QOM cast macro
> X-Mailer: git-send-email 2.41.0
> 
> Mechanical patch produced running the command documented
> in scripts/coccinelle/cpu_env.cocci_template header.
> 
> Signed-off-by: Philippe Mathieu-Daud <philmd@linaro.org>
> ---
>  target/i386/hvf/vmx.h               | 13 +++-------
>  hw/i386/vmmouse.c                   |  6 ++---
>  hw/i386/xen/xen-hvm.c               |  3 +--
>  target/i386/arch_memory_mapping.c   |  3 +--
>  target/i386/cpu-dump.c              |  3 +--
>  target/i386/cpu.c                   | 37 +++++++++------------------
>  target/i386/helper.c                | 39 ++++++++---------------------
>  target/i386/hvf/hvf.c               |  8 ++----
>  target/i386/hvf/x86.c               |  4 +--
>  target/i386/hvf/x86_emu.c           |  6 ++---
>  target/i386/hvf/x86_task.c          | 10 +++-----
>  target/i386/hvf/x86hvf.c            |  6 ++---
>  target/i386/kvm/kvm.c               |  6 ++---
>  target/i386/kvm/xen-emu.c           | 32 ++++++++---------------
>  target/i386/tcg/sysemu/bpt_helper.c |  3 +--
>  target/i386/tcg/tcg-cpu.c           | 14 +++--------
>  target/i386/tcg/user/excp_helper.c  |  3 +--
>  target/i386/tcg/user/seg_helper.c   |  3 +--
>  18 files changed, 59 insertions(+), 140 deletions(-)
> 

[snip]

> diff --git a/target/i386/hvf/x86hvf.c b/target/i386/hvf/x86hvf.c
> index 3b1ef5f49a..1e7fd587fe 100644
> --- a/target/i386/hvf/x86hvf.c
> +++ b/target/i386/hvf/x86hvf.c
> @@ -238,8 +238,7 @@ void hvf_get_msrs(CPUState *cs)
>  
>  int hvf_put_registers(CPUState *cs)
>  {
> -    X86CPU *x86cpu = X86_CPU(cs);
> -    CPUX86State *env = &x86cpu->env;
> +    CPUX86State *env = cpu_env(cs);
>  
>      wreg(cs->accel->fd, HV_X86_RAX, env->regs[R_EAX]);
>      wreg(cs->accel->fd, HV_X86_RBX, env->regs[R_EBX]);
> @@ -282,8 +281,7 @@ int hvf_put_registers(CPUState *cs)
>  
>  int hvf_get_registers(CPUState *cs)
>  {
> -    X86CPU *x86cpu = X86_CPU(cs);
> -    CPUX86State *env = &x86cpu->env;
> +    CPUX86State *env = cpu_env(cs);
>  
>      env->regs[R_EAX] = rreg(cs->accel->fd, HV_X86_RAX);
>      env->regs[R_EBX] = rreg(cs->accel->fd, HV_X86_RBX);

In this file, there's another corner case:

diff --git a/target/i386/hvf/x86hvf.c b/target/i386/hvf/x86hvf.c
index 3b1ef5f49a8a..9a145aa5aa4f 100644
--- a/target/i386/hvf/x86hvf.c
+++ b/target/i386/hvf/x86hvf.c
@@ -342,8 +342,7 @@ void vmx_clear_int_window_exiting(CPUState *cs)

 bool hvf_inject_interrupts(CPUState *cs)
 {
-    X86CPU *x86cpu = X86_CPU(cs);
-    CPUX86State *env = &x86cpu->env;
+    CPUX86State *env = cpu_env(cs);

     uint8_t vector;
     uint64_t intr_type;
@@ -408,7 +407,7 @@ bool hvf_inject_interrupts(CPUState *cs)
     if (!(env->hflags & HF_INHIBIT_IRQ_MASK) &&
         (cs->interrupt_request & CPU_INTERRUPT_HARD) &&
         (env->eflags & IF_MASK) && !(info & VMCS_INTR_VALID)) {
-        int line = cpu_get_pic_interrupt(&x86cpu->env);
+        int line = cpu_get_pic_interrupt(env);
         cs->interrupt_request &= ~CPU_INTERRUPT_HARD;
         if (line >= 0) {
             wvmcs(cs->accel->fd, VMCS_ENTRY_INTR_INFO, line |


For this special case, I'm not sure if the script can cover it as well,
otherwise maybe it's OK to be cleaned up manually ;-).

> diff --git a/target/i386/tcg/user/excp_helper.c b/target/i386/tcg/user/excp_helper.c
> index b3bdb7831a..bfcae9f39e 100644
> --- a/target/i386/tcg/user/excp_helper.c
> +++ b/target/i386/tcg/user/excp_helper.c
> @@ -26,8 +26,7 @@ void x86_cpu_record_sigsegv(CPUState *cs, vaddr addr,
>                              MMUAccessType access_type,
>                              bool maperr, uintptr_t ra)
>  {
> -    X86CPU *cpu = X86_CPU(cs);
> -    CPUX86State *env = &cpu->env;
> +    CPUX86State *env = cpu_env(cs);
>  
>      /*
>       * The error_code that hw reports as part of the exception frame

In this file, there's another case:

diff --git a/target/i386/tcg/user/excp_helper.c b/target/i386/tcg/user/excp_helper.c
index b3bdb7831a7a..02fcd64fc080 100644
--- a/target/i386/tcg/user/excp_helper.c
+++ b/target/i386/tcg/user/excp_helper.c
@@ -52,6 +52,5 @@ void x86_cpu_record_sigsegv(CPUState *cs, vaddr addr,
 void x86_cpu_record_sigbus(CPUState *cs, vaddr addr,
                            MMUAccessType access_type, uintptr_t ra)
 {
-    X86CPU *cpu = X86_CPU(cs);
-    handle_unaligned_access(&cpu->env, addr, access_type, ra);
+    handle_unaligned_access(cpu_env(cs), addr, access_type, ra);
 }

[snip]

LGTM.
Reviewed-by: Zhao Liu <zhao1.liu@intel.com>




From xen-devel-bounces@lists.xenproject.org Sat Jan 27 16:56:37 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 27 Jan 2024 16:56:37 +0000
Received: from list by lists.xenproject.org with outflank-mailman.672672.1046820 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTlyc-00020T-9N; Sat, 27 Jan 2024 16:56:18 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 672672.1046820; Sat, 27 Jan 2024 16:56:18 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTlyc-00020M-6d; Sat, 27 Jan 2024 16:56:18 +0000
Received: by outflank-mailman (input) for mailman id 672672;
 Sat, 27 Jan 2024 16:56:17 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rTlyb-00020C-Ki; Sat, 27 Jan 2024 16:56:17 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rTlyb-000278-GY; Sat, 27 Jan 2024 16:56:17 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rTlyb-00085h-4g; Sat, 27 Jan 2024 16:56:17 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rTlyb-0004gG-4F; Sat, 27 Jan 2024 16:56:17 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=sZ/+IHKwWCNTUV5ypDMAY9Lsn6DoimV3Z53j0ybixuY=; b=y5I7zVVSErg4Khw+A/ARRXlHDd
	sL5duZbjDL/X+RNZsK8N1edPOuTSVZuxEXQLuIg0MyeqLHlUZd5aQRndQD0n03TyiLCDnBAJYTCyD
	t4RguNY4Ft/L5nF9z6ropee/TdGsiXxjttS44qaUgKt60pJtGeYIujUExs2GtQ0GOza0=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184487-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [linux-linus test] 184487: tolerable FAIL - PUSHED
X-Osstest-Failures:
    linux-linus:test-amd64-amd64-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    linux-linus:test-amd64-amd64-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    linux-linus:test-amd64-amd64-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-raw:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-qcow2:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    linux-linus:test-amd64-amd64-qemuu-nested-amd:debian-hvm-install/l1/l2:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-xsm:migrate-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-thunderx:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-thunderx:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-credit2:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-credit2:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-libvirt-xsm:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-libvirt-xsm:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-credit1:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-xsm:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-credit1:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-xsm:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-arndale:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-arndale:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-rtds:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-rtds:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-multivcpu:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-multivcpu:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-libvirt-raw:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-vhd:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-vhd:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-qcow2:migrate-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-qcow2:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-vhd:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-vhd:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit1:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit1:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit2:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit2:saverestore-support-check:fail:nonblocking
X-Osstest-Versions-This:
    linux=3a5879d495b226d0404098e3564462d5f1daa33b
X-Osstest-Versions-That:
    linux=ecb1b8288dc7ccbdcb3b9df005fa1c0e0c0388a7
From: osstest service owner <osstest-admin@xenproject.org>
Date: Sat, 27 Jan 2024 16:56:17 +0000

flight 184487 linux-linus real [real]
http://logs.test-lab.xenproject.org/osstest/logs/184487/

Failures :-/ but no regressions.

Tests which did not succeed, but are not blocking:
 test-amd64-amd64-xl-qemut-win7-amd64 19 guest-stop            fail like 184474
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 184474
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 184474
 test-armhf-armhf-libvirt-raw 15 saverestore-support-check    fail  like 184474
 test-armhf-armhf-libvirt-qcow2 15 saverestore-support-check   fail like 184474
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 184474
 test-amd64-amd64-xl-qemut-ws16-amd64 19 guest-stop            fail like 184474
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 184474
 test-amd64-amd64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt     15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl          15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl          16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-thunderx 15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-thunderx 16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-credit2  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit2  16 saverestore-support-check    fail   never pass
 test-arm64-arm64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-xsm 16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-credit1  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-xsm      15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit1  16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-xsm      16 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-armhf-armhf-xl-arndale  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-arndale  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-rtds     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-rtds     16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-multivcpu 15 migrate-support-check        fail  never pass
 test-armhf-armhf-xl-multivcpu 16 saverestore-support-check    fail  never pass
 test-arm64-arm64-libvirt-raw 14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 15 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-raw 14 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-vhd      14 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-vhd      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-raw 14 migrate-support-check        fail   never pass
 test-armhf-armhf-libvirt-qcow2 14 migrate-support-check        fail never pass
 test-amd64-amd64-libvirt-qcow2 14 migrate-support-check        fail never pass
 test-armhf-armhf-xl-vhd      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl          15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          16 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit1  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit1  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-credit2  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit2  16 saverestore-support-check    fail   never pass

version targeted for testing:
 linux                3a5879d495b226d0404098e3564462d5f1daa33b
baseline version:
 linux                ecb1b8288dc7ccbdcb3b9df005fa1c0e0c0388a7

Last test of basis   184474  2024-01-26 07:24:13 Z    1 days
Testing same since   184487  2024-01-27 02:12:46 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Alex Deucher <alexander.deucher@amd.com>
  Alex Hung <alex.hung@amd.com>
  Alexander Stein <alexander.stein@ew.tq-group.com>
  Alvin Lee <alvin.lee2@amd.com>
  Amit Kumar Mahapatra <amit.kumar-mahapatra@amd.com>
  Andreas Larsson <andreas@gaisler.com>
  Arnd Bergmann <arnd@arndb.de>
  Artur Weber <aweber.kernel@gmail.com>
  Bagas Sanjaya <bagasdotme@gmail.com>
  Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
  Benjamin Gaignard <benjamin.gaignard@collabora.com>
  Brandon Brnich <b-brnich@ti.com>
  Charles Keepax <ckeepax@opensource.cirrus.com>
  Chen Wang <unicorn_wang@outlook.com>
  Christian A. Ehrhardt <lk@c--e.de>
  Christian König <christian.koenig@amd.com>
  ChunTao Tso <chuntao.tso@amd.com>
  Chunyan Zhang <zhang.lyra@gmail.com>
  Conrad Kostecki <conikost@gentoo.org>
  Cristian Marussi <cristian.marussi@arm.com>
  Daniel Wheeler <daniel.wheeler@amd.com>
  Dave Airlie <airlied@redhat.com>
  David Lechner <dlechner@baylibre.com>
  Devyn Liu <liudingyuan@huawei.com>
  Douglas Anderson <dianders@chromium.org>
  Fedor Pchelkin <pchelkin@ispras.ru>
  Florian Fainelli <florian.fainelli@broadcom.com>
  Gustavo Sousa <gustavo.sousa@intel.com>
  Hans Verkuil <hverkuil-cisco@xs4all.nl>
  Hawking Zhang <Hawking.Zhang@amd.com>
  Heiko Stuebner <heiko@sntech.de>
  Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
  Hsin-Yi Wang <hsinyi@chromium.org>
  Hu Haowen <2023002089@link.tyut.edu.cn>
  Inki Dae <inki.dae@samsung.com>
  Inochi Amaoto <inochiama@outlook.com>
  Jacek Lawrynowicz <jacek.lawrynowicz@linux.intel.com>
  Jani Nikula <jani.nikula@intel.com>
  Jens Axboe <axboe@kernel.dk>
  John Paul Adrian Glaubitz <glaubitz@physik.fu-berlin.de>
  Jonathan Corbet <corbet@lwn.net>
  Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
  Jose E. Marchesi <jose.marchesi@oracle.com>
  Kamal Dasu <kamal.dasu@broadcom.com>
  Kenneth Feng <kenneth.feng@amd.com>
  Khaled Almahallawy <khaled.almahallawy@intel.com>
  Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
  Lennert Buytenhek <kernel@wantstofly.org>
  Li Lingfeng <lilingfeng3@huawei.com>
  Lijo Lazar <lijo.lazar@amd.com>
  Linus Torvalds <torvalds@linux-foundation.org>
  Linus Walleij <linus.walleij@linaro.org>
  Lucas De Marchi <lucas.demarchi@intel.com>
  Lukas Bulwahn <lukas.bulwahn@gmail.com>
  Lukas Wunner <lukas@wunner.de>
  Ma Jun <Jun.Ma2@amd.com>
  Maksim Kiselev <bigunclemax@gmail.com>
  Mario Limonciello <mario.limonciello@amd.com>
  Mark Broadworth <mark.broadworth@amd.com>
  Mark Brown <broonie@kernel.org>
  Markus Niebel <Markus.Niebel@ew.tq-group.com>
  Matt Roper <matthew.d.roper@intel.com>
  Matthew Brost <matthew.brost@intel.com>
  Maxime Ripard <mripard@kernel.org>
  Maxime Ripard <mripard@redhat.com>
  Maíra Canal <mcanal@igalia.com>
  Michael Walle <mwalle@kernel.org>
  Michał Winiarski <michal.winiarski@intel.com>
  Mika Westerberg <mika.westerberg@linux.intel.com>
  Mikulas Patocka <mpatocka@redhat.com>
  Moti Haimovski <mhaimovski@habana.ai>
  Neil Armstrong <neil.armstrong@linaro.org>
  Nicholas Kazlauskas <nicholas.kazlauskas@amd.com>
  Niklas Cassel <cassel@kernel.org>
  Paul Moore <paul@paul-moore.com>
  Pin-yen Lin <treapking@chromium.org>
  Rafael J. Wysocki <rafael.j.wysocki@intel.com>
  Rob Herring <robh@kernel.org>
  Roman Li <roman.li@amd.com>
  Sam Ravnborg <sam@ravnborg.org>
  Shuah Khan <skhan@linuxfoundation.org>
  Song Liu <song@kernel.org>
  Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
  Srinivasan Shanmugam <srinivasan.shanmugam@amd.com>
  Stanislaw Gruszka <stanislaw.gruszka@linux.intel.com>
  Stanley Chan <schan@cloudflare.com>
  Sudeep Holla <sudeep.holla@arm.com>
  Tanzir Hasan <tanzirh@google.com>
  Thomas Hellstrom <thomas.hellstrom@linux.intel.com>
  Thomas Hellström <thomas.hellstrom@linux.intel.com>
  Thomas Zimmermann <tzimmermann@suse.de>
  Tom St Denis <tom.stdenis@amd.com>
  Tomasz Figa <tfiga@chromium.org>
  Tomi Valkeinen <tomi.valkeinen@ideasonboard.com>
  Tudor Ambarus <tudor.ambarus@linaro.org>
  Umesh Nerlige Ramappa <umesh.nerlige.ramappa@intel.com>
  Vegard Nossum <vegard.nossum@oracle.com>
  Ville Syrjälä <ville.syrjala@linux.intel.com>
  Vlastimil Babka <vbabka@suse.cz>
  Wachowski, Karol <karol.wachowski@intel.com>
  Wenhua Lin <Wenhua.Lin@unisoc.com>
  Xinglong Yang <xinglong.yang@cixtech.com>
  Xuxin Xiong <xuxinxiong@huaqin.corp-partner.google.com>
  Yang Wang <kevinyang.wang@amd.com>
  Yangyu Chen <cyy@cyyself.name>

jobs:
 build-amd64-xsm                                              pass    
 build-arm64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64                                                  pass    
 build-arm64                                                  pass    
 build-armhf                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-arm64-libvirt                                          pass    
 build-armhf-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-pvops                                            pass    
 build-arm64-pvops                                            pass    
 build-armhf-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-amd64-amd64-xl                                          pass    
 test-amd64-coresched-amd64-xl                                pass    
 test-arm64-arm64-xl                                          pass    
 test-armhf-armhf-xl                                          pass    
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm           pass    
 test-amd64-amd64-xl-qemut-stubdom-debianhvm-amd64-xsm        pass    
 test-amd64-amd64-xl-qemut-debianhvm-i386-xsm                 pass    
 test-amd64-amd64-xl-qemuu-debianhvm-i386-xsm                 pass    
 test-amd64-amd64-libvirt-xsm                                 pass    
 test-arm64-arm64-libvirt-xsm                                 pass    
 test-amd64-amd64-xl-xsm                                      pass    
 test-arm64-arm64-xl-xsm                                      pass    
 test-amd64-amd64-qemuu-nested-amd                            fail    
 test-amd64-amd64-xl-pvhv2-amd                                pass    
 test-amd64-amd64-dom0pvh-xl-amd                              pass    
 test-amd64-amd64-xl-qemut-debianhvm-amd64                    pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64                    pass    
 test-amd64-amd64-freebsd11-amd64                             pass    
 test-amd64-amd64-freebsd12-amd64                             pass    
 test-amd64-amd64-xl-qemuu-ovmf-amd64                         pass    
 test-amd64-amd64-xl-qemut-win7-amd64                         fail    
 test-amd64-amd64-xl-qemuu-win7-amd64                         fail    
 test-amd64-amd64-xl-qemut-ws16-amd64                         fail    
 test-amd64-amd64-xl-qemuu-ws16-amd64                         fail    
 test-armhf-armhf-xl-arndale                                  pass    
 test-amd64-amd64-examine-bios                                pass    
 test-amd64-amd64-xl-credit1                                  pass    
 test-arm64-arm64-xl-credit1                                  pass    
 test-armhf-armhf-xl-credit1                                  pass    
 test-amd64-amd64-xl-credit2                                  pass    
 test-arm64-arm64-xl-credit2                                  pass    
 test-armhf-armhf-xl-credit2                                  pass    
 test-amd64-amd64-xl-qemuu-dmrestrict-amd64-dmrestrict        pass    
 test-amd64-amd64-examine                                     pass    
 test-arm64-arm64-examine                                     pass    
 test-armhf-armhf-examine                                     pass    
 test-amd64-amd64-qemuu-nested-intel                          pass    
 test-amd64-amd64-xl-pvhv2-intel                              pass    
 test-amd64-amd64-dom0pvh-xl-intel                            pass    
 test-amd64-amd64-libvirt                                     pass    
 test-armhf-armhf-libvirt                                     pass    
 test-amd64-amd64-xl-multivcpu                                pass    
 test-armhf-armhf-xl-multivcpu                                pass    
 test-amd64-amd64-pair                                        pass    
 test-amd64-amd64-libvirt-pair                                pass    
 test-amd64-amd64-xl-pvshim                                   pass    
 test-amd64-amd64-pygrub                                      pass    
 test-amd64-amd64-libvirt-qcow2                               pass    
 test-armhf-armhf-libvirt-qcow2                               pass    
 test-amd64-amd64-libvirt-raw                                 pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-armhf-armhf-libvirt-raw                                 pass    
 test-amd64-amd64-xl-rtds                                     pass    
 test-armhf-armhf-xl-rtds                                     pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64-shadow             pass    
 test-amd64-amd64-xl-shadow                                   pass    
 test-arm64-arm64-xl-thunderx                                 pass    
 test-amd64-amd64-examine-uefi                                pass    
 test-amd64-amd64-xl-vhd                                      pass    
 test-arm64-arm64-xl-vhd                                      pass    
 test-armhf-armhf-xl-vhd                                      pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Pushing revision :

hint: The 'hooks/update' hook was ignored because it's not set as executable.
hint: You can disable this warning with `git config advice.ignoredHook false`.
hint: The 'hooks/post-receive' hook was ignored because it's not set as executable.
hint: You can disable this warning with `git config advice.ignoredHook false`.
hint: The 'hooks/post-update' hook was ignored because it's not set as executable.
hint: You can disable this warning with `git config advice.ignoredHook false`.
To xenbits.xen.org:/home/xen/git/linux-pvops.git
   ecb1b8288dc7..3a5879d495b2  3a5879d495b226d0404098e3564462d5f1daa33b -> tested/linux-linus


From xen-devel-bounces@lists.xenproject.org Sat Jan 27 18:33:46 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 27 Jan 2024 18:33:46 +0000
Received: from list by lists.xenproject.org with outflank-mailman.672695.1046831 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTnUf-0004Mr-TO; Sat, 27 Jan 2024 18:33:29 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 672695.1046831; Sat, 27 Jan 2024 18:33:29 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTnUf-0004Mk-Qo; Sat, 27 Jan 2024 18:33:29 +0000
Received: by outflank-mailman (input) for mailman id 672695;
 Sat, 27 Jan 2024 18:33:27 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rTnUd-0004Ma-UH; Sat, 27 Jan 2024 18:33:27 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rTnUd-00041B-Fq; Sat, 27 Jan 2024 18:33:27 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rTnUd-0002J9-13; Sat, 27 Jan 2024 18:33:27 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rTnUd-0001Tv-0c; Sat, 27 Jan 2024 18:33:27 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=XdsiV3VmipdZk/OuU1RDGn+UH/zNyHDPoVTMc9yNBNs=; b=hCQNFTZzFcI2TDr+0pVwaZUCDO
	cJNwFRLia8GM6xpmeDCWhuK9QAJRCIR/MlNX9ImQZo+XZSksJM+JEa2JpKsPrxhaqH9M0BtTndocB
	1uwwEHlPycPGKKRzp+4onM6DhJxtLA42Uvz5wa+1Q7B12ATTZGWUpXoNxJrA/u5eaX94=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184488-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [libvirt test] 184488: tolerable all pass - PUSHED
X-Osstest-Failures:
    libvirt:test-armhf-armhf-libvirt:saverestore-support-check:fail:nonblocking
    libvirt:test-armhf-armhf-libvirt-qcow2:saverestore-support-check:fail:nonblocking
    libvirt:test-armhf-armhf-libvirt-raw:saverestore-support-check:fail:nonblocking
    libvirt:test-amd64-amd64-libvirt-xsm:migrate-support-check:fail:nonblocking
    libvirt:test-amd64-i386-libvirt-xsm:migrate-support-check:fail:nonblocking
    libvirt:test-amd64-i386-libvirt:migrate-support-check:fail:nonblocking
    libvirt:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    libvirt:test-arm64-arm64-libvirt-xsm:migrate-support-check:fail:nonblocking
    libvirt:test-arm64-arm64-libvirt-xsm:saverestore-support-check:fail:nonblocking
    libvirt:test-arm64-arm64-libvirt:migrate-support-check:fail:nonblocking
    libvirt:test-arm64-arm64-libvirt:saverestore-support-check:fail:nonblocking
    libvirt:test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    libvirt:test-armhf-armhf-libvirt:migrate-support-check:fail:nonblocking
    libvirt:test-arm64-arm64-libvirt-qcow2:migrate-support-check:fail:nonblocking
    libvirt:test-arm64-arm64-libvirt-qcow2:saverestore-support-check:fail:nonblocking
    libvirt:test-amd64-amd64-libvirt-vhd:migrate-support-check:fail:nonblocking
    libvirt:test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    libvirt:test-amd64-i386-libvirt-raw:migrate-support-check:fail:nonblocking
    libvirt:test-arm64-arm64-libvirt-raw:migrate-support-check:fail:nonblocking
    libvirt:test-arm64-arm64-libvirt-raw:saverestore-support-check:fail:nonblocking
    libvirt:test-armhf-armhf-libvirt-qcow2:migrate-support-check:fail:nonblocking
    libvirt:test-armhf-armhf-libvirt-raw:migrate-support-check:fail:nonblocking
X-Osstest-Versions-This:
    libvirt=7d9fe3a637795ef23d6c7152b57cd64f9f2894c7
X-Osstest-Versions-That:
    libvirt=ccfc5c1e1637d20e479fafde7aa3ea4c6fb29e21
From: osstest service owner <osstest-admin@xenproject.org>
Date: Sat, 27 Jan 2024 18:33:27 +0000

flight 184488 libvirt real [real]
http://logs.test-lab.xenproject.org/osstest/logs/184488/

Failures :-/ but no regressions.

Tests which did not succeed, but are not blocking:
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 184472
 test-armhf-armhf-libvirt-qcow2 15 saverestore-support-check   fail like 184472
 test-armhf-armhf-libvirt-raw 15 saverestore-support-check    fail  like 184472
 test-amd64-amd64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-amd64-i386-libvirt-xsm  15 migrate-support-check        fail   never pass
 test-amd64-i386-libvirt      15 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt     15 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-xsm 16 saverestore-support-check    fail   never pass
 test-arm64-arm64-libvirt     15 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt     16 saverestore-support-check    fail   never pass
 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-armhf-armhf-libvirt     15 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-qcow2 14 migrate-support-check        fail never pass
 test-arm64-arm64-libvirt-qcow2 15 saverestore-support-check    fail never pass
 test-amd64-amd64-libvirt-vhd 14 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-amd64-i386-libvirt-raw  14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 15 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-qcow2 14 migrate-support-check        fail never pass
 test-armhf-armhf-libvirt-raw 14 migrate-support-check        fail   never pass

version targeted for testing:
 libvirt              7d9fe3a637795ef23d6c7152b57cd64f9f2894c7
baseline version:
 libvirt              ccfc5c1e1637d20e479fafde7aa3ea4c6fb29e21

Last test of basis   184472  2024-01-26 04:18:56 Z    1 days
Testing same since   184488  2024-01-27 04:20:30 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Andrea Bolognani <abologna@redhat.com>
  Or Ozeri <oro@il.ibm.com>
  Peter Krempa <pkrempa@redhat.com>

jobs:
 build-amd64-xsm                                              pass    
 build-arm64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64                                                  pass    
 build-arm64                                                  pass    
 build-armhf                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-arm64-libvirt                                          pass    
 build-armhf-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-pvops                                            pass    
 build-arm64-pvops                                            pass    
 build-armhf-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm           pass    
 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm            pass    
 test-amd64-amd64-libvirt-xsm                                 pass    
 test-arm64-arm64-libvirt-xsm                                 pass    
 test-amd64-i386-libvirt-xsm                                  pass    
 test-amd64-amd64-libvirt                                     pass    
 test-arm64-arm64-libvirt                                     pass    
 test-armhf-armhf-libvirt                                     pass    
 test-amd64-i386-libvirt                                      pass    
 test-amd64-amd64-libvirt-pair                                pass    
 test-amd64-i386-libvirt-pair                                 pass    
 test-arm64-arm64-libvirt-qcow2                               pass    
 test-armhf-armhf-libvirt-qcow2                               pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-armhf-armhf-libvirt-raw                                 pass    
 test-amd64-i386-libvirt-raw                                  pass    
 test-amd64-amd64-libvirt-vhd                                 pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Pushing revision :

To xenbits.xen.org:/home/xen/git/libvirt.git
   ccfc5c1e16..7d9fe3a637  7d9fe3a637795ef23d6c7152b57cd64f9f2894c7 -> xen-tested-master


From xen-devel-bounces@lists.xenproject.org Sat Jan 27 22:09:18 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 27 Jan 2024 22:09:18 +0000
Received: from list by lists.xenproject.org with outflank-mailman.672712.1046850 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTqrG-0000ln-06; Sat, 27 Jan 2024 22:09:02 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 672712.1046850; Sat, 27 Jan 2024 22:09:01 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTqrF-0000lg-Rr; Sat, 27 Jan 2024 22:09:01 +0000
Received: by outflank-mailman (input) for mailman id 672712;
 Sat, 27 Jan 2024 22:09:00 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rTqrE-0000lW-MY; Sat, 27 Jan 2024 22:09:00 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rTqrE-00083T-HN; Sat, 27 Jan 2024 22:09:00 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rTqrE-0002kA-1t; Sat, 27 Jan 2024 22:09:00 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rTqrE-0003G4-1R; Sat, 27 Jan 2024 22:09:00 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=sAOJhxxgoj36erMVNtiW19/WDL43vYTvHA1u6+REhR4=; b=l9s0M/Y3pV7kDX8avxxy2p2BXC
	DQi3Db/ieUEtnQ10+9snb3ANgpXiDHx0LySGXl9r5M8C8+OXensuyAAaU3gVsFrF53bASZO72+c/Q
	6FDGIRilBIfCCYlN9mW9CIi8aoO0gIP5Lft5iCRdTLRjfPOfPDSpMpERIXhMOJyOl7BU=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184498-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [ovmf test] 184498: all pass - PUSHED
X-Osstest-Versions-This:
    ovmf=4c43209a740d4b38094f9495ce85219421a938af
X-Osstest-Versions-That:
    ovmf=7d7decfa3dc817775322505ae770a27f185465cf
From: osstest service owner <osstest-admin@xenproject.org>
Date: Sat, 27 Jan 2024 22:09:00 +0000

flight 184498 ovmf real [real]
http://logs.test-lab.xenproject.org/osstest/logs/184498/

Perfect :-)
All tests in this flight passed as required
version targeted for testing:
 ovmf                 4c43209a740d4b38094f9495ce85219421a938af
baseline version:
 ovmf                 7d7decfa3dc817775322505ae770a27f185465cf

Last test of basis   184473  2024-01-26 07:14:25 Z    1 days
Testing same since   184498  2024-01-27 19:41:06 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Michael D Kinney <michael.d.kinney@intel.com>

jobs:
 build-amd64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-amd64-amd64-xl-qemuu-ovmf-amd64                         pass    
 test-amd64-i386-xl-qemuu-ovmf-amd64                          pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Pushing revision :

To xenbits.xen.org:/home/xen/git/osstest/ovmf.git
   7d7decfa3d..4c43209a74  4c43209a740d4b38094f9495ce85219421a938af -> xen-tested-master


From xen-devel-bounces@lists.xenproject.org Sat Jan 27 23:37:54 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sat, 27 Jan 2024 23:37:54 +0000
Received: from list by lists.xenproject.org with outflank-mailman.672724.1046863 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTsEy-00020Z-87; Sat, 27 Jan 2024 23:37:36 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 672724.1046863; Sat, 27 Jan 2024 23:37:36 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTsEy-00020S-5B; Sat, 27 Jan 2024 23:37:36 +0000
Received: by outflank-mailman (input) for mailman id 672724;
 Sat, 27 Jan 2024 23:37:34 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rTsEw-00020I-Il; Sat, 27 Jan 2024 23:37:34 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rTsEw-00018M-CU; Sat, 27 Jan 2024 23:37:34 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rTsEw-0004zX-1Y; Sat, 27 Jan 2024 23:37:34 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rTsEw-0005ba-0z; Sat, 27 Jan 2024 23:37:34 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=s6CKt7GZeQy6OPjTrjWDPqTyyylVtOIUDfCW1EvigC8=; b=RL0vySbCD8vg7pep6D164xIYy/
	Q6cvR1QNLdUNcB3LOxZcP8MpVoQE8kCx6LmE+QELEObszXR6SUSGu+heWvkvED271izTYal2h0myR
	mDorOt4AeFMCPvIFsAzcYFQRahbK7N0N5rgfn7B9XhXGSaypkiyCBq43qJZ7+HJvOgbk=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184490-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [linux-5.4 test] 184490: regressions - FAIL
X-Osstest-Failures:
    linux-5.4:test-armhf-armhf-xl-credit1:guest-start/debian.repeat:fail:regression
    linux-5.4:test-amd64-amd64-xl-qcow2:guest-localmigrate:fail:heisenbug
    linux-5.4:test-armhf-armhf-xl-rtds:guest-start:fail:heisenbug
    linux-5.4:test-amd64-amd64-xl-qemut-debianhvm-i386-xsm:debian-hvm-install:fail:heisenbug
    linux-5.4:test-armhf-armhf-xl-rtds:guest-start/debian.repeat:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-arndale:guest-start/debian.repeat:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-vhd:guest-start:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-rtds:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-rtds:saverestore-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-multivcpu:guest-start/debian.repeat:fail:nonblocking
    linux-5.4:test-armhf-armhf-libvirt:saverestore-support-check:fail:nonblocking
    linux-5.4:test-amd64-amd64-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    linux-5.4:test-amd64-i386-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    linux-5.4:test-amd64-i386-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    linux-5.4:test-amd64-amd64-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    linux-5.4:test-amd64-amd64-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    linux-5.4:test-amd64-amd64-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    linux-5.4:test-amd64-i386-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    linux-5.4:test-armhf-armhf-libvirt-qcow2:saverestore-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-credit2:guest-start/debian.repeat:fail:nonblocking
    linux-5.4:test-armhf-armhf-libvirt-raw:saverestore-support-check:fail:nonblocking
    linux-5.4:test-amd64-i386-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    linux-5.4:test-amd64-amd64-qemuu-nested-amd:debian-hvm-install/l1/l2:fail:nonblocking
    linux-5.4:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    linux-5.4:test-amd64-i386-xl-pvshim:guest-start:fail:nonblocking
    linux-5.4:test-amd64-i386-libvirt-xsm:migrate-support-check:fail:nonblocking
    linux-5.4:test-amd64-amd64-libvirt-xsm:migrate-support-check:fail:nonblocking
    linux-5.4:test-amd64-i386-libvirt:migrate-support-check:fail:nonblocking
    linux-5.4:test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    linux-5.4:test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-xsm:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-xsm:saverestore-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl:saverestore-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-credit2:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-libvirt-xsm:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-thunderx:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-libvirt-xsm:saverestore-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-credit2:saverestore-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-thunderx:saverestore-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-credit1:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-credit1:saverestore-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-multivcpu:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-multivcpu:saverestore-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-arndale:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-arndale:saverestore-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-credit1:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl:saverestore-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-credit1:saverestore-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-libvirt:migrate-support-check:fail:nonblocking
    linux-5.4:test-amd64-i386-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-libvirt-raw:saverestore-support-check:fail:nonblocking
    linux-5.4:test-amd64-amd64-libvirt-vhd:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-vhd:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-vhd:saverestore-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-vhd:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-vhd:saverestore-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-libvirt-qcow2:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-credit2:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-credit2:saverestore-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-libvirt-raw:migrate-support-check:fail:nonblocking
X-Osstest-Versions-This:
    linux=f0602893f43a54097fcf22bd8c2f7b8e75ca643e
X-Osstest-Versions-That:
    linux=9153fc9664959aa6bb35915b2bbd8fbc4c762962
From: osstest service owner <osstest-admin@xenproject.org>
Date: Sat, 27 Jan 2024 23:37:34 +0000

flight 184490 linux-5.4 real [real]
http://logs.test-lab.xenproject.org/osstest/logs/184490/

Regressions :-(

Tests which did not succeed and are blocking,
including tests which could not be run:
 test-armhf-armhf-xl-credit1 18 guest-start/debian.repeat fail REGR. vs. 184381

Tests which are failing intermittently (not blocking):
 test-amd64-amd64-xl-qcow2  17 guest-localmigrate fail in 184476 pass in 184490
 test-armhf-armhf-xl-rtds     14 guest-start                fail pass in 184476
 test-amd64-amd64-xl-qemut-debianhvm-i386-xsm 12 debian-hvm-install fail pass in 184476

Tests which did not succeed, but are not blocking:
 test-armhf-armhf-xl-rtds 18 guest-start/debian.repeat fail in 184476 like 184362
 test-armhf-armhf-xl-arndale 18 guest-start/debian.repeat fail in 184476 like 184362
 test-armhf-armhf-xl-vhd      13 guest-start         fail in 184476 like 184381
 test-armhf-armhf-xl-rtds    15 migrate-support-check fail in 184476 never pass
 test-armhf-armhf-xl-rtds 16 saverestore-support-check fail in 184476 never pass
 test-armhf-armhf-xl-multivcpu 18 guest-start/debian.repeat    fail like 184381
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 184381
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 184381
 test-amd64-i386-xl-qemut-win7-amd64 19 guest-stop             fail like 184381
 test-amd64-i386-xl-qemuu-win7-amd64 19 guest-stop             fail like 184381
 test-amd64-amd64-xl-qemut-win7-amd64 19 guest-stop            fail like 184381
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 184381
 test-amd64-amd64-xl-qemut-ws16-amd64 19 guest-stop            fail like 184381
 test-amd64-i386-xl-qemut-ws16-amd64 19 guest-stop             fail like 184381
 test-armhf-armhf-libvirt-qcow2 15 saverestore-support-check   fail like 184381
 test-armhf-armhf-xl-credit2  18 guest-start/debian.repeat    fail  like 184381
 test-armhf-armhf-libvirt-raw 15 saverestore-support-check    fail  like 184381
 test-amd64-i386-xl-qemuu-ws16-amd64 19 guest-stop             fail like 184381
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 184381
 test-amd64-amd64-libvirt     15 migrate-support-check        fail   never pass
 test-amd64-i386-xl-pvshim    14 guest-start                  fail   never pass
 test-amd64-i386-libvirt-xsm  15 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-amd64-i386-libvirt      15 migrate-support-check        fail   never pass
 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-arm64-arm64-xl-xsm      15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-xsm      16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl          15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl          16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-credit2  15 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-thunderx 15 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-xsm 16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-credit2  16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-thunderx 16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-credit1  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit1  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-multivcpu 15 migrate-support-check        fail  never pass
 test-armhf-armhf-xl-multivcpu 16 saverestore-support-check    fail  never pass
 test-armhf-armhf-xl-arndale  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-arndale  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl          15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit1  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-credit1  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt     15 migrate-support-check        fail   never pass
 test-amd64-i386-libvirt-raw  14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 15 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-vhd 14 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-vhd      14 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-vhd      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-vhd      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-qcow2 14 migrate-support-check        fail never pass
 test-armhf-armhf-xl-credit2  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit2  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-raw 14 migrate-support-check        fail   never pass

version targeted for testing:
 linux                f0602893f43a54097fcf22bd8c2f7b8e75ca643e
baseline version:
 linux                9153fc9664959aa6bb35915b2bbd8fbc4c762962

Last test of basis   184381  2024-01-17 06:00:18 Z   10 days
Testing same since   184469  2024-01-25 22:43:10 Z    2 days    3 attempts

------------------------------------------------------------
People who touched revisions under test:
  "Christian A. Ehrhardt" <lk@c--e.de>
  Alex Deucher <alexander.deucher@amd.com>
  Alexander Gordeev <agordeev@linux.ibm.com>
  Alexei Starovoitov <ast@kernel.org>
  Amit Cohen <amcohen@nvidia.com>
  Andreas Gruenbacher <agruenba@redhat.com>
  Andrew Lunn <andrew@lunn.ch>
  Andrii Nakryiko <andrii@kernel.org>
  Anna Schumaker <Anna.Schumaker@Netapp.com>
  Arnaldo Carvalho de Melo <acme@redhat.com>
  Arnd Bergmann <arnd@arndb.de>
  Arseniy Krasnov <avkrasnov@salutedevices.com>
  Artem Chernyshev <artem.chernyshev@red-soft.ru>
  Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
  Benjamin Coddington <bcodding@redhat.com>
  Bhaskar Chowdhury <unixbhaskar@gmail.com>
  Bjorn Andersson <andersson@kernel.org>
  Borislav Petkov (AMD) <bp@alien8.de>
  Brian Norris <briannorris@chromium.org>
  Cameron Williams <cang1@live.co.uk>
  Carlos Llamas <cmllamas@google.com>
  Chao Yu <chao@kernel.org>
  Charles Keepax <ckeepax@opensource.cirrus.com>
  Chengming Zhou <zhouchengming@bytedance.com>
  Chih-Kang Chang <gary.chang@realtek.com>
  Christian A. Ehrhardt <lk@c--e.de>
  Christoph Hellwig <hch@lst.de>
  Christoph Niedermaier <cniedermaier@dh-electronics.com>
  Christophe JAILLET <christophe.jaillet@wanadoo.fr>
  Claudiu Beznea <claudiu.beznea.uj@bp.renesas.com>
  Colin Ian King <colin.i.king@gmail.com>
  Colin Ian King <colin.king@canonical.com>
  Curtis Klein <curtis.klein@hpe.com>
  Dan Carpenter <dan.carpenter@linaro.org>
  Daniel Thompson <daniel.thompson@linaro.org>
  Danilo Krummrich <dakr@redhat.com>
  Dario Binacchi <dario.binacchi@amarulasolutions.com>
  Dave Airlie <airlied@redhat.com>
  Dave Hansen <dave.hansen@linux.intel.com>
  David Lin <CTLIN0@nuvoton.com>
  David Lin <yu-hao.lin@nxp.com>
  David Rau <David.Rau.opensource@dm.renesas.com>
  David S. Miller <davem@davemloft.net>
  Dinghao Liu <dinghao.liu@zju.edu.cn>
  Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
  Dmitry Torokhov <dmitry.torokhov@gmail.com>
  Eric Biggers <ebiggers@google.com>
  Eric Dumazet <edumazet@google.com>
  Esther Shimanovich <eshimanovich@chromium.org>
  Fedor Pchelkin <pchelkin@ispras.ru>
  Florian Fainelli <florian.fainelli@broadcom.com>
  Florian Lehner <dev@der-flo.net>
  Florian Westphal <fw@strlen.de>
  Francesco Dolcini <francesco.dolcini@toradex.com>
  Gavrilov Ilia <Ilia.Gavrilov@infotecs.ru>
  Geert Uytterhoeven <geert+renesas@glider.be>
  Gonglei (Arei) <arei.gonglei@huawei.com>
  Gonglei <arei.gonglei@huawei.com>
  Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  Gregory CLEMENT <gregory.clement@bootlin.com>
  Guanghui Feng <guanghuifeng@linux.alibaba.com>
  Guenter Roeck <linux@roeck-us.net>
  Gui-Dong Han <2045gemini@gmail.com>
  Hangbin Liu <liuhangbin@gmail.com>
  Hans de Goede <hdegoede@redhat.com>
  Hans Verkuil <hverkuil-cisco@xs4all.nl>
  Harshit Mogalapalli <harshit.m.mogalapalli@oracle.com>
  Heikki Krogerus <heikki.krogerus@linux.intel.com>
  Heiko Carstens <hca@linux.ibm.com>
  Heiko Stuebner <heiko@sntech.de>
  Helge Deller <deller@gmx.de>
  Herbert Xu <herbert@gondor.apana.org.au>
  Ian Rogers <irogers@google.com>
  Ido Schimmel <idosch@nvidia.com>
  Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
  Inki Dae <inki.dae@samsung.com>
  Jaegeuk Kim <jaegeuk@kernel.org>
  Jakub Kicinski <kuba@kernel.org>
  James Clark <james.clark@arm.com>
  Jan Beulich <jbeulich@suse.com>
  Jani Nikula <jani.nikula@intel.com>
  Jason Gerecke <jason.gerecke@wacom.com>
  Jay Buddhabhatti <jay.buddhabhatti@amd.com>
  Jerry Hoemann <jerry.hoemann@hpe.com>
  Jiri Kosina <jkosina@suse.com>
  Jiri Olsa <jolsa@kernel.org>
  Jiri Olsa <jolsa@redhat.com>
  Joakim Zhang <joakim.zhang@cixtech.com>
  Joe Perches <joe@perches.com>
  John Johansen <john.johansen@canonical.com>
  Jon Hunter <jonathanh@nvidia.com>
  Judy Hsiao <judyhsiao@chromium.org>
  Julian Anastasov <ja@ssi.bg>
  Kalle Valo <kvalo@codeaurora.org>
  Kalle Valo <kvalo@kernel.org>
  Kamil Duljas <kamil.duljas@gmail.com>
  Kees Cook <keescook@chromium.org>
  Keith Busch <kbusch@kernel.org>
  kernelci.org bot <bot@kernelci.org>
  Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
  Konrad Dybcio <konrad.dybcio@linaro.org>
  Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
  Krzysztof Wilczyński <kwilczynski@kernel.org>
  Kunwu Chan <chentao@kylinos.cn>
  Laurent Dufour <ldufour@linux.ibm.com>
  Leon Romanovsky <leonro@nvidia.com>
  Li Jun <jun.li@nxp.com>
  Lin Ma <linma@zju.edu.cn>
  Linus Torvalds <torvalds@linux-foundation.org>
  Linus Walleij <linus.walleij@linaro.org>
  Linux Kernel Functional Testing <lkft@linaro.org>
  Luca Weiss <luca@z3ntu.xyz>
  Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
  Maciej Strozek <mstrozek@opensource.cirrus.com>
  Marek Szyprowski <m.szyprowski@samsung.com>
  Mark Brown <broonie@kernel.org>
  Martin K. Petersen <martin.petersen@oracle.com>
  Masahiro Yamada <masahiroy@kernel.org>
  Matthew Wilcox (Oracle) <willy@infradead.org>
  Maurizio Lombardi <mlombard@redhat.com>
  Mauro Carvalho Chehab <mchehab@kernel.org>
  Maxime Ripard <mripard@kernel.org>
  Michael Ellerman <mpe@ellerman.id.au>
  Michael S. Tsirkin <mst@redhat.com>
  Mickaël Salaün <mic@digikod.net>
  Mike Isely <isely@pobox.com>
  Mike Looijmans <mike.looijmans@topic.nl>
  Miquel Raynal <miquel.raynal@bootlin.com>
  Muhammad Usama Anjum <usama.anjum@collabora.com>
  Nam Cao <namcao@linutronix.de>
  Namhyung Kim <namhyung@kernel.org>
  Nathan Lynch <nathanl@linux.ibm.com>
  Nikita Kiryushin <kiryushin@ancud.ru>
  Nikita Yushchenko <nikita.yoush@cogentembedded.com>
  Nikita Zhandarovich <n.zhandarovich@fintech.ru>
  Niklas Schnelle <schnelle@linux.ibm.com>
  Nishanth Menon <nm@ti.com>
  Osama Muhammad <osmtendev@gmail.com>
  Ovidiu Panait <ovidiu.panait@windriver.com>
  Pablo Neira Ayuso <pablo@netfilter.org>
  Paolo Abeni <pabeni@redhat.com>
  Paolo Bonzini <pbonzini@redhat.com>
  Paul Moore <paul@paul-moore.com>
  Peter Chen <peter.chen@kernel.org>
  Peter Delevoryas <peter@pjd.dev>
  Peter Robinson <pbrobinson@gmail.com>
  Petr Machata <petrm@nvidia.com>
  Philipp Zabel <p.zabel@pengutronix.de>
  Ping Cheng <ping.cheng@wacom.com>
  Ping-Ke Shih <pkshih@realtek.com>
  Rafael Beims <rafael.beims@toradex.com> # Verdin iMX8MP/SD8997 SD
  Rafael J. Wysocki <rafael.j.wysocki@intel.com>
  Ram Muthiah <rammuthiah@google.com>
  Randy Dunlap <rdunlap@infradead.org>
  Ravi Gunasekaran <r-gunasekaran@ti.com>
  RD Babiera <rdbabiera@google.com>
  Ricardo B. Marliere <ricardo@marliere.net>
  Richard Weinberger <richard@nod.at>
  Rob Herring <robh@kernel.org>
  Rob Landley <rob@landley.net>
  Robert Foss <rfoss@kernel.org>
  Ronald Monthero <debug.penguin32@gmail.com>
  Sakari Ailus <sakari.ailus@linux.intel.com>
  Sasha Levin <sashal@kernel.org>
  Serge Semin <fancer.lancer@gmail.com>
  Sergey Shtylyov <s.shtylyov@omp.ru>
  Shuming Fan <shumingf@realtek.com>
  Siddharth Vadapalli <s-vadapalli@ti.com>
  Simon Horman <horms@kernel.org>
  Sjoerd Simons <sjoerd@collabora.com>
  Song Liu <song@kernel.org>
  Stefan Berger <stefanb@linux.ibm.com>
  Stefan Wahren <wahrenst@gmx.net>
  Stephen Boyd <sboyd@kernel.org>
  Steven Rostedt (Google) <rostedt@goodmis.org>
  Su Hui <suhui@nfschina.com>
  Sudip Mukherjee <sudipm.mukherjee@gmail.com>
  Suzuki K Poulose <suzuki.poulose@arm.com>
  Takashi Iwai <tiwai@suse.de>
  Tatsunosuke Tobita <tatsunosuke.tobita@wacom.com>
  Theodore Ts'o <tytso@mit.edu>
  Thinh Nguyen <Thinh.Nguyen@synopsys.com>
  Thinh Tran <thinhtr@linux.vnet.ibm.com>
  Thomas Bogendoerfer <tsbogend@alpha.franken.de>
  Thomas Gleixner <tglx@linutronix.de>
  Tiezhu Yang <yangtiezhu@loongson.cn>
  Tom Lendacky <thomas.lendacky@amd.com>
  Tomi Valkeinen <tomi.valkeinen@ideasonboard.com>
  Trond Myklebust <trond.myklebust@hammerspace.com>
  Ulf Hansson <ulf.hansson@linaro.org>
  Uttkarsh Aggarwal <quic_uaggarwa@quicinc.com>
  Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
  Vasiliy Kovalev <kovalev@altlinux.org>
  Venkata Sai Duggi <venkata.sai.duggi@ibm.com>
  Vineet Gupta <vgupta@kernel.org>
  Vineeth Vijayan <vneethv@linux.ibm.com>
  wangyangxin <wangyangxin1@huawei.com>
  Weihao Li <cn.liweihao@gmail.com>
  Wim Van Sebroeck <wim@linux-watchdog.org>
  Wolfram Sang <wsa+renesas@sang-engineering.com>
  Wolfram Sang <wsa@kernel.org>
  Xiang Chen <chenxiang66@hisilicon.com>
  Xiang Yang <xiangyang3@huawei.com>
  Xu Yang <xu.yang_2@nxp.com>
  Yang Yingliang <yangyingliang@huawei.com>
  Yihang Li <liyihang9@huawei.com>
  Zhang Yi <yi.zhang@huawei.com>
  ZhaoLong Wang <wangzhaolong1@huawei.com>
  Zheng Yejian <zhengyejian1@huawei.com>
  zhenwei pi <pizhenwei@bytedance.com>
  Zhipeng Lu <alexious@zju.edu.cn>
  Ziqi Zhao <astrajoan@yahoo.com>

jobs:
 build-amd64-xsm                                              pass    
 build-arm64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64                                                  pass    
 build-arm64                                                  pass    
 build-armhf                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-arm64-libvirt                                          pass    
 build-armhf-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-pvops                                            pass    
 build-arm64-pvops                                            pass    
 build-armhf-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-amd64-amd64-xl                                          pass    
 test-amd64-coresched-amd64-xl                                pass    
 test-arm64-arm64-xl                                          pass    
 test-armhf-armhf-xl                                          pass    
 test-amd64-i386-xl                                           pass    
 test-amd64-coresched-i386-xl                                 pass    
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm           pass    
 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm            pass    
 test-amd64-amd64-xl-qemut-stubdom-debianhvm-amd64-xsm        pass    
 test-amd64-i386-xl-qemut-stubdom-debianhvm-amd64-xsm         pass    
 test-amd64-amd64-xl-qemut-debianhvm-i386-xsm                 fail    
 test-amd64-i386-xl-qemut-debianhvm-i386-xsm                  pass    
 test-amd64-amd64-xl-qemuu-debianhvm-i386-xsm                 pass    
 test-amd64-i386-xl-qemuu-debianhvm-i386-xsm                  pass    
 test-amd64-amd64-libvirt-xsm                                 pass    
 test-arm64-arm64-libvirt-xsm                                 pass    
 test-amd64-i386-libvirt-xsm                                  pass    
 test-amd64-amd64-xl-xsm                                      pass    
 test-arm64-arm64-xl-xsm                                      pass    
 test-amd64-i386-xl-xsm                                       pass    
 test-amd64-amd64-qemuu-nested-amd                            fail    
 test-amd64-amd64-xl-pvhv2-amd                                pass    
 test-amd64-i386-qemut-rhel6hvm-amd                           pass    
 test-amd64-i386-qemuu-rhel6hvm-amd                           pass    
 test-amd64-amd64-dom0pvh-xl-amd                              pass    
 test-amd64-amd64-xl-qemut-debianhvm-amd64                    pass    
 test-amd64-i386-xl-qemut-debianhvm-amd64                     pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64                    pass    
 test-amd64-i386-xl-qemuu-debianhvm-amd64                     pass    
 test-amd64-i386-freebsd10-amd64                              pass    
 test-amd64-amd64-qemuu-freebsd11-amd64                       pass    
 test-amd64-amd64-qemuu-freebsd12-amd64                       pass    
 test-amd64-amd64-xl-qemuu-ovmf-amd64                         pass    
 test-amd64-i386-xl-qemuu-ovmf-amd64                          pass    
 test-amd64-amd64-xl-qemut-win7-amd64                         fail    
 test-amd64-i386-xl-qemut-win7-amd64                          fail    
 test-amd64-amd64-xl-qemuu-win7-amd64                         fail    
 test-amd64-i386-xl-qemuu-win7-amd64                          fail    
 test-amd64-amd64-xl-qemut-ws16-amd64                         fail    
 test-amd64-i386-xl-qemut-ws16-amd64                          fail    
 test-amd64-amd64-xl-qemuu-ws16-amd64                         fail    
 test-amd64-i386-xl-qemuu-ws16-amd64                          fail    
 test-armhf-armhf-xl-arndale                                  pass    
 test-amd64-amd64-examine-bios                                pass    
 test-amd64-i386-examine-bios                                 pass    
 test-amd64-amd64-xl-credit1                                  pass    
 test-arm64-arm64-xl-credit1                                  pass    
 test-armhf-armhf-xl-credit1                                  fail    
 test-amd64-amd64-xl-credit2                                  pass    
 test-arm64-arm64-xl-credit2                                  pass    
 test-armhf-armhf-xl-credit2                                  fail    
 test-amd64-amd64-xl-qemuu-dmrestrict-amd64-dmrestrict        pass    
 test-amd64-i386-xl-qemuu-dmrestrict-amd64-dmrestrict         pass    
 test-amd64-amd64-examine                                     pass    
 test-arm64-arm64-examine                                     pass    
 test-armhf-armhf-examine                                     pass    
 test-amd64-i386-examine                                      pass    
 test-amd64-i386-freebsd10-i386                               pass    
 test-amd64-amd64-qemuu-nested-intel                          pass    
 test-amd64-amd64-xl-pvhv2-intel                              pass    
 test-amd64-i386-qemut-rhel6hvm-intel                         pass    
 test-amd64-i386-qemuu-rhel6hvm-intel                         pass    
 test-amd64-amd64-dom0pvh-xl-intel                            pass    
 test-amd64-amd64-libvirt                                     pass    
 test-armhf-armhf-libvirt                                     pass    
 test-amd64-i386-libvirt                                      pass    
 test-amd64-amd64-xl-multivcpu                                pass    
 test-armhf-armhf-xl-multivcpu                                fail    
 test-amd64-amd64-pair                                        pass    
 test-amd64-i386-pair                                         pass    
 test-amd64-amd64-libvirt-pair                                pass    
 test-amd64-i386-libvirt-pair                                 pass    
 test-amd64-amd64-xl-pvshim                                   pass    
 test-amd64-i386-xl-pvshim                                    fail    
 test-amd64-amd64-pygrub                                      pass    
 test-armhf-armhf-libvirt-qcow2                               pass    
 test-amd64-amd64-xl-qcow2                                    pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-armhf-armhf-libvirt-raw                                 pass    
 test-amd64-i386-libvirt-raw                                  pass    
 test-amd64-amd64-xl-rtds                                     pass    
 test-armhf-armhf-xl-rtds                                     fail    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64-shadow             pass    
 test-amd64-i386-xl-qemuu-debianhvm-amd64-shadow              pass    
 test-amd64-amd64-xl-shadow                                   pass    
 test-amd64-i386-xl-shadow                                    pass    
 test-arm64-arm64-xl-thunderx                                 pass    
 test-amd64-amd64-examine-uefi                                pass    
 test-amd64-i386-examine-uefi                                 pass    
 test-amd64-amd64-libvirt-vhd                                 pass    
 test-arm64-arm64-xl-vhd                                      pass    
 test-armhf-armhf-xl-vhd                                      pass    
 test-amd64-i386-xl-vhd                                       pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Not pushing.

(No revision log; it would be 5292 lines long.)


From xen-devel-bounces@lists.xenproject.org Sun Jan 28 02:39:58 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sun, 28 Jan 2024 02:39:58 +0000
Received: from list by lists.xenproject.org with outflank-mailman.672736.1046876 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTv5D-00006j-BQ; Sun, 28 Jan 2024 02:39:43 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 672736.1046876; Sun, 28 Jan 2024 02:39:43 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rTv5D-00006c-6e; Sun, 28 Jan 2024 02:39:43 +0000
Received: by outflank-mailman (input) for mailman id 672736;
 Sun, 28 Jan 2024 02:39:41 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rTv5B-00006S-UC; Sun, 28 Jan 2024 02:39:41 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rTv5B-0007V6-Lk; Sun, 28 Jan 2024 02:39:41 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rTv5B-0005HW-2f; Sun, 28 Jan 2024 02:39:41 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rTv5A-0003LV-Vz; Sun, 28 Jan 2024 02:39:41 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=oxVHNg4LmsTolQNo6DqtCgfVoVFG7ywCHEOj4o37l9c=; b=AhSo3LhxtNqciBVrGje1ywATl7
	NiBQ6JOv5cOZzz67StjiKbz2atzS/DT8cO1Lrgp65ujzsiWJ7mk2vicxTchOZKUTQ3ukgxYUCIo3A
	8QCYB3UmGgoHEK8nzhPi351nep2zmag4FOIWzDrD3RMgMNn/LDONKgZBjW9ewDz0vL+s=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184492-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [xen-unstable test] 184492: tolerable FAIL
X-Osstest-Failures:
    xen-unstable:test-armhf-armhf-xl-rtds:guest-start/debian.repeat:fail:heisenbug
    xen-unstable:test-amd64-amd64-xl-qemut-debianhvm-i386-xsm:debian-hvm-install:fail:heisenbug
    xen-unstable:test-amd64-amd64-xl-qemuu-win7-amd64:windows-install:fail:heisenbug
    xen-unstable:test-amd64-amd64-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-amd64-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-qcow2:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-raw:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-amd64-qemuu-nested-amd:debian-hvm-install/l1/l2:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-i386-libvirt-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-pvshim:guest-start:fail:nonblocking
    xen-unstable:test-amd64-i386-libvirt:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-credit2:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-credit2:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-credit1:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-credit1:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-thunderx:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-thunderx:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-libvirt-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-libvirt-xsm:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-xsm:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-arndale:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-arndale:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-multivcpu:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-multivcpu:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-libvirt-raw:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-libvirt-raw:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-libvirt-raw:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt-vhd:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-vhd:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-vhd:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-qcow2:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-raw:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-vhd:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-vhd:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-rtds:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-rtds:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit1:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit1:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit2:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit2:saverestore-support-check:fail:nonblocking
X-Osstest-Versions-This:
    xen=c378ff8983cd69786c35117e49640f027e581bca
X-Osstest-Versions-That:
    xen=c378ff8983cd69786c35117e49640f027e581bca
From: osstest service owner <osstest-admin@xenproject.org>
Date: Sun, 28 Jan 2024 02:39:40 +0000

flight 184492 xen-unstable real [real]
http://logs.test-lab.xenproject.org/osstest/logs/184492/

Failures :-/ but no regressions.

Tests which are failing intermittently (not blocking):
 test-armhf-armhf-xl-rtds 18 guest-start/debian.repeat fail in 184484 pass in 184492
 test-amd64-amd64-xl-qemut-debianhvm-i386-xsm 12 debian-hvm-install fail pass in 184484
 test-amd64-amd64-xl-qemuu-win7-amd64 12 windows-install    fail pass in 184484

Tests which did not succeed, but are not blocking:
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop fail in 184484 blocked in 184492
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 184484
 test-amd64-amd64-xl-qemut-win7-amd64 19 guest-stop            fail like 184484
 test-amd64-i386-xl-qemuu-win7-amd64 19 guest-stop             fail like 184484
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 184484
 test-amd64-i386-xl-qemut-ws16-amd64 19 guest-stop             fail like 184484
 test-armhf-armhf-libvirt-qcow2 15 saverestore-support-check   fail like 184484
 test-amd64-i386-xl-qemut-win7-amd64 19 guest-stop             fail like 184484
 test-armhf-armhf-libvirt-raw 15 saverestore-support-check    fail  like 184484
 test-amd64-amd64-xl-qemut-ws16-amd64 19 guest-stop            fail like 184484
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 184484
 test-amd64-i386-xl-qemuu-ws16-amd64 19 guest-stop             fail like 184484
 test-amd64-i386-libvirt-xsm  15 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt     15 migrate-support-check        fail   never pass
 test-amd64-i386-xl-pvshim    14 guest-start                  fail   never pass
 test-amd64-i386-libvirt      15 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit2  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit2  16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl          15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl          16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-credit1  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit1  16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-thunderx 15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-thunderx 16 saverestore-support-check    fail   never pass
 test-arm64-arm64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-xsm 16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-xsm      15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-xsm      16 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-armhf-armhf-xl-arndale  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-arndale  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-multivcpu 15 migrate-support-check        fail  never pass
 test-armhf-armhf-xl-multivcpu 16 saverestore-support-check    fail  never pass
 test-amd64-i386-libvirt-raw  14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 15 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-vhd 14 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-vhd      14 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-vhd      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-qcow2 14 migrate-support-check        fail never pass
 test-armhf-armhf-libvirt-raw 14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-rtds     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-rtds     16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl          15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-credit1  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit1  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-credit2  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit2  16 saverestore-support-check    fail   never pass

version targeted for testing:
 xen                  c378ff8983cd69786c35117e49640f027e581bca
baseline version:
 xen                  c378ff8983cd69786c35117e49640f027e581bca

Last test of basis   184492  2024-01-27 09:58:30 Z    0 days
Testing same since                          (not found)         0 attempts

jobs:
 build-amd64-xsm                                              pass    
 build-arm64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64-xtf                                              pass    
 build-amd64                                                  pass    
 build-arm64                                                  pass    
 build-armhf                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-arm64-libvirt                                          pass    
 build-armhf-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-prev                                             pass    
 build-i386-prev                                              pass    
 build-amd64-pvops                                            pass    
 build-arm64-pvops                                            pass    
 build-armhf-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-xtf-amd64-amd64-1                                       pass    
 test-xtf-amd64-amd64-2                                       pass    
 test-xtf-amd64-amd64-3                                       pass    
 test-xtf-amd64-amd64-4                                       pass    
 test-xtf-amd64-amd64-5                                       pass    
 test-amd64-amd64-xl                                          pass    
 test-amd64-coresched-amd64-xl                                pass    
 test-arm64-arm64-xl                                          pass    
 test-armhf-armhf-xl                                          pass    
 test-amd64-i386-xl                                           pass    
 test-amd64-coresched-i386-xl                                 pass    
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm           pass    
 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm            pass    
 test-amd64-amd64-xl-qemut-stubdom-debianhvm-amd64-xsm        pass    
 test-amd64-i386-xl-qemut-stubdom-debianhvm-amd64-xsm         pass    
 test-amd64-amd64-xl-qemut-debianhvm-i386-xsm                 fail    
 test-amd64-i386-xl-qemut-debianhvm-i386-xsm                  pass    
 test-amd64-amd64-xl-qemuu-debianhvm-i386-xsm                 pass    
 test-amd64-i386-xl-qemuu-debianhvm-i386-xsm                  pass    
 test-amd64-amd64-libvirt-xsm                                 pass    
 test-arm64-arm64-libvirt-xsm                                 pass    
 test-amd64-i386-libvirt-xsm                                  pass    
 test-amd64-amd64-xl-xsm                                      pass    
 test-arm64-arm64-xl-xsm                                      pass    
 test-amd64-i386-xl-xsm                                       pass    
 test-amd64-amd64-qemuu-nested-amd                            fail    
 test-amd64-amd64-xl-pvhv2-amd                                pass    
 test-amd64-i386-qemut-rhel6hvm-amd                           pass    
 test-amd64-i386-qemuu-rhel6hvm-amd                           pass    
 test-amd64-amd64-dom0pvh-xl-amd                              pass    
 test-amd64-amd64-xl-qemut-debianhvm-amd64                    pass    
 test-amd64-i386-xl-qemut-debianhvm-amd64                     pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64                    pass    
 test-amd64-i386-xl-qemuu-debianhvm-amd64                     pass    
 test-amd64-i386-freebsd10-amd64                              pass    
 test-amd64-amd64-qemuu-freebsd11-amd64                       pass    
 test-amd64-amd64-qemuu-freebsd12-amd64                       pass    
 test-amd64-amd64-xl-qemuu-ovmf-amd64                         pass    
 test-amd64-i386-xl-qemuu-ovmf-amd64                          pass    
 test-amd64-amd64-xl-qemut-win7-amd64                         fail    
 test-amd64-i386-xl-qemut-win7-amd64                          fail    
 test-amd64-amd64-xl-qemuu-win7-amd64                         fail    
 test-amd64-i386-xl-qemuu-win7-amd64                          fail    
 test-amd64-amd64-xl-qemut-ws16-amd64                         fail    
 test-amd64-i386-xl-qemut-ws16-amd64                          fail    
 test-amd64-amd64-xl-qemuu-ws16-amd64                         fail    
 test-amd64-i386-xl-qemuu-ws16-amd64                          fail    
 test-armhf-armhf-xl-arndale                                  pass    
 test-amd64-amd64-examine-bios                                pass    
 test-amd64-i386-examine-bios                                 pass    
 test-amd64-amd64-xl-credit1                                  pass    
 test-arm64-arm64-xl-credit1                                  pass    
 test-armhf-armhf-xl-credit1                                  pass    
 test-amd64-amd64-xl-credit2                                  pass    
 test-arm64-arm64-xl-credit2                                  pass    
 test-armhf-armhf-xl-credit2                                  pass    
 test-amd64-amd64-xl-qemuu-dmrestrict-amd64-dmrestrict        pass    
 test-amd64-i386-xl-qemuu-dmrestrict-amd64-dmrestrict         pass    
 test-amd64-amd64-examine                                     pass    
 test-arm64-arm64-examine                                     pass    
 test-armhf-armhf-examine                                     pass    
 test-amd64-i386-examine                                      pass    
 test-amd64-i386-freebsd10-i386                               pass    
 test-amd64-amd64-qemuu-nested-intel                          pass    
 test-amd64-amd64-xl-pvhv2-intel                              pass    
 test-amd64-i386-qemut-rhel6hvm-intel                         pass    
 test-amd64-i386-qemuu-rhel6hvm-intel                         pass    
 test-amd64-amd64-dom0pvh-xl-intel                            pass    
 test-amd64-amd64-libvirt                                     pass    
 test-armhf-armhf-libvirt                                     pass    
 test-amd64-i386-libvirt                                      pass    
 test-amd64-amd64-livepatch                                   pass    
 test-amd64-i386-livepatch                                    pass    
 test-amd64-amd64-migrupgrade                                 pass    
 test-amd64-i386-migrupgrade                                  pass    
 test-amd64-amd64-xl-multivcpu                                pass    
 test-armhf-armhf-xl-multivcpu                                pass    
 test-amd64-amd64-pair                                        pass    
 test-amd64-i386-pair                                         pass    
 test-amd64-amd64-libvirt-pair                                pass    
 test-amd64-i386-libvirt-pair                                 pass    
 test-amd64-amd64-xl-pvshim                                   pass    
 test-amd64-i386-xl-pvshim                                    fail    
 test-amd64-amd64-pygrub                                      pass    
 test-armhf-armhf-libvirt-qcow2                               pass    
 test-amd64-amd64-xl-qcow2                                    pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-armhf-armhf-libvirt-raw                                 pass    
 test-amd64-i386-libvirt-raw                                  pass    
 test-amd64-amd64-xl-rtds                                     pass    
 test-armhf-armhf-xl-rtds                                     pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64-shadow             pass    
 test-amd64-i386-xl-qemuu-debianhvm-amd64-shadow              pass    
 test-amd64-amd64-xl-shadow                                   pass    
 test-amd64-i386-xl-shadow                                    pass    
 test-arm64-arm64-xl-thunderx                                 pass    
 test-amd64-amd64-examine-uefi                                pass    
 test-amd64-i386-examine-uefi                                 pass    
 test-amd64-amd64-libvirt-vhd                                 pass    
 test-arm64-arm64-xl-vhd                                      pass    
 test-armhf-armhf-xl-vhd                                      pass    
 test-amd64-i386-xl-vhd                                       pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Published tested tree is already up to date.



From xen-devel-bounces@lists.xenproject.org Sun Jan 28 10:46:09 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sun, 28 Jan 2024 10:46:09 +0000
Received: from list by lists.xenproject.org with outflank-mailman.672757.1046886 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rU2fc-0000Ep-3B; Sun, 28 Jan 2024 10:45:48 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 672757.1046886; Sun, 28 Jan 2024 10:45:48 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rU2fc-0000Ei-0K; Sun, 28 Jan 2024 10:45:48 +0000
Received: by outflank-mailman (input) for mailman id 672757;
 Sun, 28 Jan 2024 10:45:47 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rU2fb-0000EY-20; Sun, 28 Jan 2024 10:45:47 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rU2fa-0000N2-PO; Sun, 28 Jan 2024 10:45:46 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rU2fa-0004Uh-Cv; Sun, 28 Jan 2024 10:45:46 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rU2fa-0000kb-CY; Sun, 28 Jan 2024 10:45:46 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=I14t8GaMj7BvdN+JnZ4lytgA/gwR+erTuf9UwuLw+nQ=; b=NoJS6gGb/r2Rxg/OIsJAkWBsLX
	y/+64/FcrcJ3PoDGW2GWvUs467rL6vtVaZt9q2ZwbvfcMfedBsVIsUZACD5PVgOWRI6p2qKaph0mp
	9dUKjMf/8iZYLMRZSu1LolJ469QQAL/a2gJE0novyrkTXy2WUIUGCucAD15wFzWK37W8=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184496-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [linux-linus test] 184496: tolerable FAIL - PUSHED
X-Osstest-Failures:
    linux-linus:test-amd64-amd64-libvirt-qcow2:guest-saverestore.2:fail:heisenbug
    linux-linus:test-armhf-armhf-xl-credit2:xen-boot:fail:heisenbug
    linux-linus:test-armhf-armhf-xl-credit2:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit2:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    linux-linus:test-amd64-amd64-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    linux-linus:test-amd64-amd64-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-raw:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-qcow2:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    linux-linus:test-amd64-amd64-qemuu-nested-amd:debian-hvm-install/l1/l2:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-xsm:migrate-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-thunderx:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-thunderx:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-credit2:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-credit2:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-libvirt-xsm:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-libvirt-xsm:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-credit1:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-xsm:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-credit1:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-xsm:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-rtds:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-rtds:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-arndale:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-arndale:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-multivcpu:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-multivcpu:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-qcow2:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-libvirt-raw:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-vhd:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-vhd:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-qcow2:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-vhd:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-vhd:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit1:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit1:saverestore-support-check:fail:nonblocking
X-Osstest-Versions-This:
    linux=cd2286fc577526f0a6798f68977a95eb85fe3d52
X-Osstest-Versions-That:
    linux=3a5879d495b226d0404098e3564462d5f1daa33b
From: osstest service owner <osstest-admin@xenproject.org>
Date: Sun, 28 Jan 2024 10:45:46 +0000

flight 184496 linux-linus real [real]
flight 184505 linux-linus real-retest [real]
http://logs.test-lab.xenproject.org/osstest/logs/184496/
http://logs.test-lab.xenproject.org/osstest/logs/184505/

Failures :-/ but no regressions.

Tests which are failing intermittently (not blocking):
 test-amd64-amd64-libvirt-qcow2 17 guest-saverestore.2 fail pass in 184505-retest
 test-armhf-armhf-xl-credit2   8 xen-boot            fail pass in 184505-retest

Tests which did not succeed, but are not blocking:
 test-armhf-armhf-xl-credit2 15 migrate-support-check fail in 184505 never pass
 test-armhf-armhf-xl-credit2 16 saverestore-support-check fail in 184505 never pass
 test-amd64-amd64-xl-qemut-win7-amd64 19 guest-stop            fail like 184487
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 184487
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 184487
 test-armhf-armhf-libvirt-raw 15 saverestore-support-check    fail  like 184487
 test-armhf-armhf-libvirt-qcow2 15 saverestore-support-check   fail like 184487
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 184487
 test-amd64-amd64-xl-qemut-ws16-amd64 19 guest-stop            fail like 184487
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 184487
 test-amd64-amd64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt     15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl          15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl          16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-thunderx 15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-thunderx 16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-credit2  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit2  16 saverestore-support-check    fail   never pass
 test-arm64-arm64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-xsm 16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-credit1  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-xsm      15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit1  16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-xsm      16 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-armhf-armhf-xl-rtds     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-rtds     16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-arndale  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-arndale  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-multivcpu 15 migrate-support-check        fail  never pass
 test-armhf-armhf-xl-multivcpu 16 saverestore-support-check    fail  never pass
 test-amd64-amd64-libvirt-qcow2 14 migrate-support-check        fail never pass
 test-arm64-arm64-libvirt-raw 14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 15 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-raw 14 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-vhd      14 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-vhd      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-raw 14 migrate-support-check        fail   never pass
 test-armhf-armhf-libvirt-qcow2 14 migrate-support-check        fail never pass
 test-armhf-armhf-xl-vhd      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl          15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          16 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit1  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit1  16 saverestore-support-check    fail   never pass

version targeted for testing:
 linux                cd2286fc577526f0a6798f68977a95eb85fe3d52
baseline version:
 linux                3a5879d495b226d0404098e3564462d5f1daa33b

Last test of basis   184487  2024-01-27 02:12:46 Z    1 days
Testing same since   184496  2024-01-27 17:42:04 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Alexey Dobriyan <adobriyan@gmail.com>
  Chandan Babu R <chandanbabu@kernel.org>
  Christoph Hellwig <hch@lst.de>
  Dave Chinner <dchinner@redhat.com>
  David Howells <dhowells@redhat.com>
  Kees Cook <keescook@chromium.org>
  Kent Overstreet <kent.overstreet@linux.dev>
  Lin Ma <linma@zju.edu.cn>
  Linus Torvalds <torvalds@linux-foundation.org>
  Namjae Jeon <linkinjeon@kernel.org>
  Shyam Prasad N <sprasad@microsoft.com>
  Steve French <stfrench@microsoft.com>
  Yang Li <yang.lee@linux.alibaba.com>

jobs:
 build-amd64-xsm                                              pass    
 build-arm64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64                                                  pass    
 build-arm64                                                  pass    
 build-armhf                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-arm64-libvirt                                          pass    
 build-armhf-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-pvops                                            pass    
 build-arm64-pvops                                            pass    
 build-armhf-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-amd64-amd64-xl                                          pass    
 test-amd64-coresched-amd64-xl                                pass    
 test-arm64-arm64-xl                                          pass    
 test-armhf-armhf-xl                                          pass    
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm           pass    
 test-amd64-amd64-xl-qemut-stubdom-debianhvm-amd64-xsm        pass    
 test-amd64-amd64-xl-qemut-debianhvm-i386-xsm                 pass    
 test-amd64-amd64-xl-qemuu-debianhvm-i386-xsm                 pass    
 test-amd64-amd64-libvirt-xsm                                 pass    
 test-arm64-arm64-libvirt-xsm                                 pass    
 test-amd64-amd64-xl-xsm                                      pass    
 test-arm64-arm64-xl-xsm                                      pass    
 test-amd64-amd64-qemuu-nested-amd                            fail    
 test-amd64-amd64-xl-pvhv2-amd                                pass    
 test-amd64-amd64-dom0pvh-xl-amd                              pass    
 test-amd64-amd64-xl-qemut-debianhvm-amd64                    pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64                    pass    
 test-amd64-amd64-freebsd11-amd64                             pass    
 test-amd64-amd64-freebsd12-amd64                             pass    
 test-amd64-amd64-xl-qemuu-ovmf-amd64                         pass    
 test-amd64-amd64-xl-qemut-win7-amd64                         fail    
 test-amd64-amd64-xl-qemuu-win7-amd64                         fail    
 test-amd64-amd64-xl-qemut-ws16-amd64                         fail    
 test-amd64-amd64-xl-qemuu-ws16-amd64                         fail    
 test-armhf-armhf-xl-arndale                                  pass    
 test-amd64-amd64-examine-bios                                pass    
 test-amd64-amd64-xl-credit1                                  pass    
 test-arm64-arm64-xl-credit1                                  pass    
 test-armhf-armhf-xl-credit1                                  pass    
 test-amd64-amd64-xl-credit2                                  pass    
 test-arm64-arm64-xl-credit2                                  pass    
 test-armhf-armhf-xl-credit2                                  fail    
 test-amd64-amd64-xl-qemuu-dmrestrict-amd64-dmrestrict        pass    
 test-amd64-amd64-examine                                     pass    
 test-arm64-arm64-examine                                     pass    
 test-armhf-armhf-examine                                     pass    
 test-amd64-amd64-qemuu-nested-intel                          pass    
 test-amd64-amd64-xl-pvhv2-intel                              pass    
 test-amd64-amd64-dom0pvh-xl-intel                            pass    
 test-amd64-amd64-libvirt                                     pass    
 test-armhf-armhf-libvirt                                     pass    
 test-amd64-amd64-xl-multivcpu                                pass    
 test-armhf-armhf-xl-multivcpu                                pass    
 test-amd64-amd64-pair                                        pass    
 test-amd64-amd64-libvirt-pair                                pass    
 test-amd64-amd64-xl-pvshim                                   pass    
 test-amd64-amd64-pygrub                                      pass    
 test-amd64-amd64-libvirt-qcow2                               fail    
 test-armhf-armhf-libvirt-qcow2                               pass    
 test-amd64-amd64-libvirt-raw                                 pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-armhf-armhf-libvirt-raw                                 pass    
 test-amd64-amd64-xl-rtds                                     pass    
 test-armhf-armhf-xl-rtds                                     pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64-shadow             pass    
 test-amd64-amd64-xl-shadow                                   pass    
 test-arm64-arm64-xl-thunderx                                 pass    
 test-amd64-amd64-examine-uefi                                pass    
 test-amd64-amd64-xl-vhd                                      pass    
 test-arm64-arm64-xl-vhd                                      pass    
 test-armhf-armhf-xl-vhd                                      pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Pushing revision :

hint: The 'hooks/update' hook was ignored because it's not set as executable.
hint: You can disable this warning with `git config advice.ignoredHook false`.
hint: The 'hooks/post-receive' hook was ignored because it's not set as executable.
hint: You can disable this warning with `git config advice.ignoredHook false`.
hint: The 'hooks/post-update' hook was ignored because it's not set as executable.
hint: You can disable this warning with `git config advice.ignoredHook false`.
To xenbits.xen.org:/home/xen/git/linux-pvops.git
   3a5879d495b2..cd2286fc5775  cd2286fc577526f0a6798f68977a95eb85fe3d52 -> tested/linux-linus


From xen-devel-bounces@lists.xenproject.org Sun Jan 28 12:55:33 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sun, 28 Jan 2024 12:55:33 +0000
Received: from list by lists.xenproject.org with outflank-mailman.672834.1046927 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rU4h0-0007Ko-Sx; Sun, 28 Jan 2024 12:55:22 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 672834.1046927; Sun, 28 Jan 2024 12:55:22 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rU4h0-0007Kh-Q7; Sun, 28 Jan 2024 12:55:22 +0000
Received: by outflank-mailman (input) for mailman id 672834;
 Sun, 28 Jan 2024 12:55:21 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rU4gz-0007KT-E3; Sun, 28 Jan 2024 12:55:21 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rU4gz-0002bO-2Z; Sun, 28 Jan 2024 12:55:21 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rU4gy-0002Ud-LC; Sun, 28 Jan 2024 12:55:20 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rU4gy-0003EM-Kg; Sun, 28 Jan 2024 12:55:20 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=RLL7bLpm/8W2giEcv7+RSngVXTVKw1L0Xzd3ipYB4h4=; b=VKYIICKWH+kGqtlVqC9MG+HVEQ
	B2njG2gjP0yxfWMGIZZ754amdQOL9n5UFnbJ1ce43hBQil9GiYtFhu83LTwcIpATiiSdMTFQDWNB5
	2JEP261i8xezBO/NV5u2G/VZmca/fZY4pQjcKD/j4FBgqw8FSywO9jX9wbsiSCttuAqk=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184500-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [linux-5.4 test] 184500: regressions - FAIL
X-Osstest-Failures:
    linux-5.4:test-armhf-armhf-xl-credit1:guest-start/debian.repeat:fail:regression
    linux-5.4:test-amd64-amd64-xl-qcow2:guest-localmigrate:fail:heisenbug
    linux-5.4:test-armhf-armhf-xl-rtds:guest-start:fail:heisenbug
    linux-5.4:test-armhf-armhf-xl-rtds:guest-start/debian.repeat:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-arndale:guest-start/debian.repeat:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-vhd:guest-start:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-rtds:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-rtds:saverestore-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-libvirt:saverestore-support-check:fail:nonblocking
    linux-5.4:test-amd64-amd64-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    linux-5.4:test-amd64-i386-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    linux-5.4:test-amd64-i386-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-multivcpu:guest-start/debian.repeat:fail:nonblocking
    linux-5.4:test-amd64-amd64-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    linux-5.4:test-amd64-amd64-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    linux-5.4:test-amd64-amd64-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    linux-5.4:test-amd64-i386-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    linux-5.4:test-armhf-armhf-libvirt-qcow2:saverestore-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-credit2:guest-start/debian.repeat:fail:nonblocking
    linux-5.4:test-armhf-armhf-libvirt-raw:saverestore-support-check:fail:nonblocking
    linux-5.4:test-amd64-i386-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    linux-5.4:test-amd64-amd64-qemuu-nested-amd:debian-hvm-install/l1/l2:fail:nonblocking
    linux-5.4:test-amd64-i386-xl-pvshim:guest-start:fail:nonblocking
    linux-5.4:test-amd64-amd64-libvirt-xsm:migrate-support-check:fail:nonblocking
    linux-5.4:test-amd64-i386-libvirt:migrate-support-check:fail:nonblocking
    linux-5.4:test-amd64-i386-libvirt-xsm:migrate-support-check:fail:nonblocking
    linux-5.4:test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    linux-5.4:test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-xsm:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-xsm:saverestore-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl:saverestore-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-credit2:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-libvirt-xsm:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-thunderx:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-libvirt-xsm:saverestore-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-credit2:saverestore-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-thunderx:saverestore-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-credit1:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-credit1:saverestore-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-multivcpu:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-multivcpu:saverestore-support-check:fail:nonblocking
    linux-5.4:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-credit1:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl:saverestore-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-credit1:saverestore-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-arndale:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-arndale:saverestore-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-libvirt:migrate-support-check:fail:nonblocking
    linux-5.4:test-amd64-i386-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-libvirt-raw:saverestore-support-check:fail:nonblocking
    linux-5.4:test-amd64-amd64-libvirt-vhd:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-vhd:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-vhd:saverestore-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-vhd:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-vhd:saverestore-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-libvirt-qcow2:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-credit2:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-credit2:saverestore-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-libvirt-raw:migrate-support-check:fail:nonblocking
X-Osstest-Versions-This:
    linux=f0602893f43a54097fcf22bd8c2f7b8e75ca643e
X-Osstest-Versions-That:
    linux=9153fc9664959aa6bb35915b2bbd8fbc4c762962
From: osstest service owner <osstest-admin@xenproject.org>
Date: Sun, 28 Jan 2024 12:55:20 +0000

flight 184500 linux-5.4 real [real]
http://logs.test-lab.xenproject.org/osstest/logs/184500/

Regressions :-(

Tests which did not succeed and are blocking,
including tests which could not be run:
 test-armhf-armhf-xl-credit1 18 guest-start/debian.repeat fail REGR. vs. 184381

Tests which are failing intermittently (not blocking):
 test-amd64-amd64-xl-qcow2  17 guest-localmigrate fail in 184476 pass in 184500
 test-armhf-armhf-xl-rtds     14 guest-start                fail pass in 184476

Tests which did not succeed, but are not blocking:
 test-armhf-armhf-xl-rtds 18 guest-start/debian.repeat fail in 184476 like 184362
 test-armhf-armhf-xl-arndale 18 guest-start/debian.repeat fail in 184476 like 184362
 test-armhf-armhf-xl-vhd      13 guest-start         fail in 184476 like 184381
 test-armhf-armhf-xl-rtds    15 migrate-support-check fail in 184476 never pass
 test-armhf-armhf-xl-rtds 16 saverestore-support-check fail in 184476 never pass
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 184381
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 184381
 test-amd64-i386-xl-qemut-win7-amd64 19 guest-stop             fail like 184381
 test-amd64-i386-xl-qemuu-win7-amd64 19 guest-stop             fail like 184381
 test-armhf-armhf-xl-multivcpu 18 guest-start/debian.repeat    fail like 184381
 test-amd64-amd64-xl-qemut-win7-amd64 19 guest-stop            fail like 184381
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 184381
 test-amd64-amd64-xl-qemut-ws16-amd64 19 guest-stop            fail like 184381
 test-amd64-i386-xl-qemut-ws16-amd64 19 guest-stop             fail like 184381
 test-armhf-armhf-libvirt-qcow2 15 saverestore-support-check   fail like 184381
 test-armhf-armhf-xl-credit2  18 guest-start/debian.repeat    fail  like 184381
 test-armhf-armhf-libvirt-raw 15 saverestore-support-check    fail  like 184381
 test-amd64-i386-xl-qemuu-ws16-amd64 19 guest-stop             fail like 184381
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 184381
 test-amd64-i386-xl-pvshim    14 guest-start                  fail   never pass
 test-amd64-amd64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-amd64-i386-libvirt      15 migrate-support-check        fail   never pass
 test-amd64-i386-libvirt-xsm  15 migrate-support-check        fail   never pass
 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-arm64-arm64-xl-xsm      15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-xsm      16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl          15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl          16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-credit2  15 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-thunderx 15 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-xsm 16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-credit2  16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-thunderx 16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-credit1  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit1  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-multivcpu 15 migrate-support-check        fail  never pass
 test-armhf-armhf-xl-multivcpu 16 saverestore-support-check    fail  never pass
 test-amd64-amd64-libvirt     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit1  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-credit1  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-arndale  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-arndale  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt     15 migrate-support-check        fail   never pass
 test-amd64-i386-libvirt-raw  14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 15 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-vhd 14 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-vhd      14 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-vhd      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-vhd      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-qcow2 14 migrate-support-check        fail never pass
 test-armhf-armhf-xl-credit2  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit2  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-raw 14 migrate-support-check        fail   never pass

version targeted for testing:
 linux                f0602893f43a54097fcf22bd8c2f7b8e75ca643e
baseline version:
 linux                9153fc9664959aa6bb35915b2bbd8fbc4c762962

Last test of basis   184381  2024-01-17 06:00:18 Z   11 days
Testing same since   184469  2024-01-25 22:43:10 Z    2 days    4 attempts

------------------------------------------------------------
People who touched revisions under test:
  "Christian A. Ehrhardt" <lk@c--e.de>
  Alex Deucher <alexander.deucher@amd.com>
  Alexander Gordeev <agordeev@linux.ibm.com>
  Alexei Starovoitov <ast@kernel.org>
  Amit Cohen <amcohen@nvidia.com>
  Andreas Gruenbacher <agruenba@redhat.com>
  Andrew Lunn <andrew@lunn.ch>
  Andrii Nakryiko <andrii@kernel.org>
  Anna Schumaker <Anna.Schumaker@Netapp.com>
  Arnaldo Carvalho de Melo <acme@redhat.com>
  Arnd Bergmann <arnd@arndb.de>
  Arseniy Krasnov <avkrasnov@salutedevices.com>
  Artem Chernyshev <artem.chernyshev@red-soft.ru>
  Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
  Benjamin Coddington <bcodding@redhat.com>
  Bhaskar Chowdhury <unixbhaskar@gmail.com>
  Bjorn Andersson <andersson@kernel.org>
  Borislav Petkov (AMD) <bp@alien8.de>
  Brian Norris <briannorris@chromium.org>
  Cameron Williams <cang1@live.co.uk>
  Carlos Llamas <cmllamas@google.com>
  Chao Yu <chao@kernel.org>
  Charles Keepax <ckeepax@opensource.cirrus.com>
  Chengming Zhou <zhouchengming@bytedance.com>
  Chih-Kang Chang <gary.chang@realtek.com>
  Christian A. Ehrhardt <lk@c--e.de>
  Christoph Hellwig <hch@lst.de>
  Christoph Niedermaier <cniedermaier@dh-electronics.com>
  Christophe JAILLET <christophe.jaillet@wanadoo.fr>
  Claudiu Beznea <claudiu.beznea.uj@bp.renesas.com>
  Colin Ian King <colin.i.king@gmail.com>
  Colin Ian King <colin.king@canonical.com>
  Curtis Klein <curtis.klein@hpe.com>
  Dan Carpenter <dan.carpenter@linaro.org>
  Daniel Thompson <daniel.thompson@linaro.org>
  Danilo Krummrich <dakr@redhat.com>
  Dario Binacchi <dario.binacchi@amarulasolutions.com>
  Dave Airlie <airlied@redhat.com>
  Dave Hansen <dave.hansen@linux.intel.com>
  David Lin <CTLIN0@nuvoton.com>
  David Lin <yu-hao.lin@nxp.com>
  David Rau <David.Rau.opensource@dm.renesas.com>
  David S. Miller <davem@davemloft.net>
  Dinghao Liu <dinghao.liu@zju.edu.cn>
  Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
  Dmitry Torokhov <dmitry.torokhov@gmail.com>
  Eric Biggers <ebiggers@google.com>
  Eric Dumazet <edumazet@google.com>
  Esther Shimanovich <eshimanovich@chromium.org>
  Fedor Pchelkin <pchelkin@ispras.ru>
  Florian Fainelli <florian.fainelli@broadcom.com>
  Florian Lehner <dev@der-flo.net>
  Florian Westphal <fw@strlen.de>
  Francesco Dolcini <francesco.dolcini@toradex.com>
  Gavrilov Ilia <Ilia.Gavrilov@infotecs.ru>
  Geert Uytterhoeven <geert+renesas@glider.be>
  Gonglei (Arei) <arei.gonglei@huawei.com>
  Gonglei <arei.gonglei@huawei.com>
  Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  Gregory CLEMENT <gregory.clement@bootlin.com>
  Guanghui Feng <guanghuifeng@linux.alibaba.com>
  Guenter Roeck <linux@roeck-us.net>
  Gui-Dong Han <2045gemini@gmail.com>
  Hangbin Liu <liuhangbin@gmail.com>
  Hans de Goede <hdegoede@redhat.com>
  Hans Verkuil <hverkuil-cisco@xs4all.nl>
  Harshit Mogalapalli <harshit.m.mogalapalli@oracle.com>
  Heikki Krogerus <heikki.krogerus@linux.intel.com>
  Heiko Carstens <hca@linux.ibm.com>
  Heiko Stuebner <heiko@sntech.de>
  Helge Deller <deller@gmx.de>
  Herbert Xu <herbert@gondor.apana.org.au>
  Ian Rogers <irogers@google.com>
  Ido Schimmel <idosch@nvidia.com>
  Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
  Inki Dae <inki.dae@samsung.com>
  Jaegeuk Kim <jaegeuk@kernel.org>
  Jakub Kicinski <kuba@kernel.org>
  James Clark <james.clark@arm.com>
  Jan Beulich <jbeulich@suse.com>
  Jani Nikula <jani.nikula@intel.com>
  Jason Gerecke <jason.gerecke@wacom.com>
  Jay Buddhabhatti <jay.buddhabhatti@amd.com>
  Jerry Hoemann <jerry.hoemann@hpe.com>
  Jiri Kosina <jkosina@suse.com>
  Jiri Olsa <jolsa@kernel.org>
  Jiri Olsa <jolsa@redhat.com>
  Joakim Zhang <joakim.zhang@cixtech.com>
  Joe Perches <joe@perches.com>
  John Johansen <john.johansen@canonical.com>
  Jon Hunter <jonathanh@nvidia.com>
  Judy Hsiao <judyhsiao@chromium.org>
  Julian Anastasov <ja@ssi.bg>
  Kalle Valo <kvalo@codeaurora.org>
  Kalle Valo <kvalo@kernel.org>
  Kamil Duljas <kamil.duljas@gmail.com>
  Kees Cook <keescook@chromium.org>
  Keith Busch <kbusch@kernel.org>
  kernelci.org bot <bot@kernelci.org>
  Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
  Konrad Dybcio <konrad.dybcio@linaro.org>
  Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
  Krzysztof Wilczyński <kwilczynski@kernel.org>
  Kunwu Chan <chentao@kylinos.cn>
  Laurent Dufour <ldufour@linux.ibm.com>
  Leon Romanovsky <leonro@nvidia.com>
  Li Jun <jun.li@nxp.com>
  Lin Ma <linma@zju.edu.cn>
  Linus Torvalds <torvalds@linux-foundation.org>
  Linus Walleij <linus.walleij@linaro.org>
  Linux Kernel Functional Testing <lkft@linaro.org>
  Luca Weiss <luca@z3ntu.xyz>
  Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
  Maciej Strozek <mstrozek@opensource.cirrus.com>
  Marek Szyprowski <m.szyprowski@samsung.com>
  Mark Brown <broonie@kernel.org>
  Martin K. Petersen <martin.petersen@oracle.com>
  Masahiro Yamada <masahiroy@kernel.org>
  Matthew Wilcox (Oracle) <willy@infradead.org>
  Maurizio Lombardi <mlombard@redhat.com>
  Mauro Carvalho Chehab <mchehab@kernel.org>
  Maxime Ripard <mripard@kernel.org>
  Michael Ellerman <mpe@ellerman.id.au>
  Michael S. Tsirkin <mst@redhat.com>
  Mickaël Salaün <mic@digikod.net>
  Mike Isely <isely@pobox.com>
  Mike Looijmans <mike.looijmans@topic.nl>
  Miquel Raynal <miquel.raynal@bootlin.com>
  Muhammad Usama Anjum <usama.anjum@collabora.com>
  Nam Cao <namcao@linutronix.de>
  Namhyung Kim <namhyung@kernel.org>
  Nathan Lynch <nathanl@linux.ibm.com>
  Nikita Kiryushin <kiryushin@ancud.ru>
  Nikita Yushchenko <nikita.yoush@cogentembedded.com>
  Nikita Zhandarovich <n.zhandarovich@fintech.ru>
  Niklas Schnelle <schnelle@linux.ibm.com>
  Nishanth Menon <nm@ti.com>
  Osama Muhammad <osmtendev@gmail.com>
  Ovidiu Panait <ovidiu.panait@windriver.com>
  Pablo Neira Ayuso <pablo@netfilter.org>
  Paolo Abeni <pabeni@redhat.com>
  Paolo Bonzini <pbonzini@redhat.com>
  Paul Moore <paul@paul-moore.com>
  Peter Chen <peter.chen@kernel.org>
  Peter Delevoryas <peter@pjd.dev>
  Peter Robinson <pbrobinson@gmail.com>
  Petr Machata <petrm@nvidia.com>
  Philipp Zabel <p.zabel@pengutronix.de>
  Ping Cheng <ping.cheng@wacom.com>
  Ping-Ke Shih <pkshih@realtek.com>
  Rafael Beims <rafael.beims@toradex.com> # Verdin iMX8MP/SD8997 SD
  Rafael J. Wysocki <rafael.j.wysocki@intel.com>
  Ram Muthiah <rammuthiah@google.com>
  Randy Dunlap <rdunlap@infradead.org>
  Ravi Gunasekaran <r-gunasekaran@ti.com>
  RD Babiera <rdbabiera@google.com>
  Ricardo B. Marliere <ricardo@marliere.net>
  Richard Weinberger <richard@nod.at>
  Rob Herring <robh@kernel.org>
  Rob Landley <rob@landley.net>
  Robert Foss <rfoss@kernel.org>
  Ronald Monthero <debug.penguin32@gmail.com>
  Sakari Ailus <sakari.ailus@linux.intel.com>
  Sasha Levin <sashal@kernel.org>
  Serge Semin <fancer.lancer@gmail.com>
  Sergey Shtylyov <s.shtylyov@omp.ru>
  Shuming Fan <shumingf@realtek.com>
  Siddharth Vadapalli <s-vadapalli@ti.com>
  Simon Horman <horms@kernel.org>
  Sjoerd Simons <sjoerd@collabora.com>
  Song Liu <song@kernel.org>
  Stefan Berger <stefanb@linux.ibm.com>
  Stefan Wahren <wahrenst@gmx.net>
  Stephen Boyd <sboyd@kernel.org>
  Steven Rostedt (Google) <rostedt@goodmis.org>
  Su Hui <suhui@nfschina.com>
  Sudip Mukherjee <sudipm.mukherjee@gmail.com>
  Suzuki K Poulose <suzuki.poulose@arm.com>
  Takashi Iwai <tiwai@suse.de>
  Tatsunosuke Tobita <tatsunosuke.tobita@wacom.com>
  Theodore Ts'o <tytso@mit.edu>
  Thinh Nguyen <Thinh.Nguyen@synopsys.com>
  Thinh Tran <thinhtr@linux.vnet.ibm.com>
  Thomas Bogendoerfer <tsbogend@alpha.franken.de>
  Thomas Gleixner <tglx@linutronix.de>
  Tiezhu Yang <yangtiezhu@loongson.cn>
  Tom Lendacky <thomas.lendacky@amd.com>
  Tomi Valkeinen <tomi.valkeinen@ideasonboard.com>
  Trond Myklebust <trond.myklebust@hammerspace.com>
  Ulf Hansson <ulf.hansson@linaro.org>
  Uttkarsh Aggarwal <quic_uaggarwa@quicinc.com>
  Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
  Vasiliy Kovalev <kovalev@altlinux.org>
  Venkata Sai Duggi <venkata.sai.duggi@ibm.com>
  Vineet Gupta <vgupta@kernel.org>
  Vineeth Vijayan <vneethv@linux.ibm.com>
  wangyangxin <wangyangxin1@huawei.com>
  Weihao Li <cn.liweihao@gmail.com>
  Wim Van Sebroeck <wim@linux-watchdog.org>
  Wolfram Sang <wsa+renesas@sang-engineering.com>
  Wolfram Sang <wsa@kernel.org>
  Xiang Chen <chenxiang66@hisilicon.com>
  Xiang Yang <xiangyang3@huawei.com>
  Xu Yang <xu.yang_2@nxp.com>
  Yang Yingliang <yangyingliang@huawei.com>
  Yihang Li <liyihang9@huawei.com>
  Zhang Yi <yi.zhang@huawei.com>
  ZhaoLong Wang <wangzhaolong1@huawei.com>
  Zheng Yejian <zhengyejian1@huawei.com>
  zhenwei pi <pizhenwei@bytedance.com>
  Zhipeng Lu <alexious@zju.edu.cn>
  Ziqi Zhao <astrajoan@yahoo.com>

jobs:
 build-amd64-xsm                                              pass    
 build-arm64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64                                                  pass    
 build-arm64                                                  pass    
 build-armhf                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-arm64-libvirt                                          pass    
 build-armhf-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-pvops                                            pass    
 build-arm64-pvops                                            pass    
 build-armhf-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-amd64-amd64-xl                                          pass    
 test-amd64-coresched-amd64-xl                                pass    
 test-arm64-arm64-xl                                          pass    
 test-armhf-armhf-xl                                          pass    
 test-amd64-i386-xl                                           pass    
 test-amd64-coresched-i386-xl                                 pass    
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm           pass    
 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm            pass    
 test-amd64-amd64-xl-qemut-stubdom-debianhvm-amd64-xsm        pass    
 test-amd64-i386-xl-qemut-stubdom-debianhvm-amd64-xsm         pass    
 test-amd64-amd64-xl-qemut-debianhvm-i386-xsm                 pass    
 test-amd64-i386-xl-qemut-debianhvm-i386-xsm                  pass    
 test-amd64-amd64-xl-qemuu-debianhvm-i386-xsm                 pass    
 test-amd64-i386-xl-qemuu-debianhvm-i386-xsm                  pass    
 test-amd64-amd64-libvirt-xsm                                 pass    
 test-arm64-arm64-libvirt-xsm                                 pass    
 test-amd64-i386-libvirt-xsm                                  pass    
 test-amd64-amd64-xl-xsm                                      pass    
 test-arm64-arm64-xl-xsm                                      pass    
 test-amd64-i386-xl-xsm                                       pass    
 test-amd64-amd64-qemuu-nested-amd                            fail    
 test-amd64-amd64-xl-pvhv2-amd                                pass    
 test-amd64-i386-qemut-rhel6hvm-amd                           pass    
 test-amd64-i386-qemuu-rhel6hvm-amd                           pass    
 test-amd64-amd64-dom0pvh-xl-amd                              pass    
 test-amd64-amd64-xl-qemut-debianhvm-amd64                    pass    
 test-amd64-i386-xl-qemut-debianhvm-amd64                     pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64                    pass    
 test-amd64-i386-xl-qemuu-debianhvm-amd64                     pass    
 test-amd64-i386-freebsd10-amd64                              pass    
 test-amd64-amd64-qemuu-freebsd11-amd64                       pass    
 test-amd64-amd64-qemuu-freebsd12-amd64                       pass    
 test-amd64-amd64-xl-qemuu-ovmf-amd64                         pass    
 test-amd64-i386-xl-qemuu-ovmf-amd64                          pass    
 test-amd64-amd64-xl-qemut-win7-amd64                         fail    
 test-amd64-i386-xl-qemut-win7-amd64                          fail    
 test-amd64-amd64-xl-qemuu-win7-amd64                         fail    
 test-amd64-i386-xl-qemuu-win7-amd64                          fail    
 test-amd64-amd64-xl-qemut-ws16-amd64                         fail    
 test-amd64-i386-xl-qemut-ws16-amd64                          fail    
 test-amd64-amd64-xl-qemuu-ws16-amd64                         fail    
 test-amd64-i386-xl-qemuu-ws16-amd64                          fail    
 test-armhf-armhf-xl-arndale                                  pass    
 test-amd64-amd64-examine-bios                                pass    
 test-amd64-i386-examine-bios                                 pass    
 test-amd64-amd64-xl-credit1                                  pass    
 test-arm64-arm64-xl-credit1                                  pass    
 test-armhf-armhf-xl-credit1                                  fail    
 test-amd64-amd64-xl-credit2                                  pass    
 test-arm64-arm64-xl-credit2                                  pass    
 test-armhf-armhf-xl-credit2                                  fail    
 test-amd64-amd64-xl-qemuu-dmrestrict-amd64-dmrestrict        pass    
 test-amd64-i386-xl-qemuu-dmrestrict-amd64-dmrestrict         pass    
 test-amd64-amd64-examine                                     pass    
 test-arm64-arm64-examine                                     pass    
 test-armhf-armhf-examine                                     pass    
 test-amd64-i386-examine                                      pass    
 test-amd64-i386-freebsd10-i386                               pass    
 test-amd64-amd64-qemuu-nested-intel                          pass    
 test-amd64-amd64-xl-pvhv2-intel                              pass    
 test-amd64-i386-qemut-rhel6hvm-intel                         pass    
 test-amd64-i386-qemuu-rhel6hvm-intel                         pass    
 test-amd64-amd64-dom0pvh-xl-intel                            pass    
 test-amd64-amd64-libvirt                                     pass    
 test-armhf-armhf-libvirt                                     pass    
 test-amd64-i386-libvirt                                      pass    
 test-amd64-amd64-xl-multivcpu                                pass    
 test-armhf-armhf-xl-multivcpu                                fail    
 test-amd64-amd64-pair                                        pass    
 test-amd64-i386-pair                                         pass    
 test-amd64-amd64-libvirt-pair                                pass    
 test-amd64-i386-libvirt-pair                                 pass    
 test-amd64-amd64-xl-pvshim                                   pass    
 test-amd64-i386-xl-pvshim                                    fail    
 test-amd64-amd64-pygrub                                      pass    
 test-armhf-armhf-libvirt-qcow2                               pass    
 test-amd64-amd64-xl-qcow2                                    pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-armhf-armhf-libvirt-raw                                 pass    
 test-amd64-i386-libvirt-raw                                  pass    
 test-amd64-amd64-xl-rtds                                     pass    
 test-armhf-armhf-xl-rtds                                     fail    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64-shadow             pass    
 test-amd64-i386-xl-qemuu-debianhvm-amd64-shadow              pass    
 test-amd64-amd64-xl-shadow                                   pass    
 test-amd64-i386-xl-shadow                                    pass    
 test-arm64-arm64-xl-thunderx                                 pass    
 test-amd64-amd64-examine-uefi                                pass    
 test-amd64-i386-examine-uefi                                 pass    
 test-amd64-amd64-libvirt-vhd                                 pass    
 test-arm64-arm64-xl-vhd                                      pass    
 test-armhf-armhf-xl-vhd                                      pass    
 test-amd64-i386-xl-vhd                                       pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Not pushing.

(No revision log; it would be 5292 lines long.)


From xen-devel-bounces@lists.xenproject.org Sun Jan 28 16:16:43 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sun, 28 Jan 2024 16:16:43 +0000
Received: from list by lists.xenproject.org with outflank-mailman.672845.1046937 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rU7pd-0003RR-SD; Sun, 28 Jan 2024 16:16:29 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 672845.1046937; Sun, 28 Jan 2024 16:16:29 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rU7pd-0003RK-Pa; Sun, 28 Jan 2024 16:16:29 +0000
Received: by outflank-mailman (input) for mailman id 672845;
 Sun, 28 Jan 2024 16:16:29 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=YmAu=JG=linaro.org=philmd@srs-se1.protection.inumbo.net>)
 id 1rU7pd-0003RE-6Y
 for xen-devel@lists.xenproject.org; Sun, 28 Jan 2024 16:16:29 +0000
Received: from mail-wr1-x42d.google.com (mail-wr1-x42d.google.com
 [2a00:1450:4864:20::42d])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 947f7bc9-bdf8-11ee-98f5-efadbce2ee36;
 Sun, 28 Jan 2024 17:16:26 +0100 (CET)
Received: by mail-wr1-x42d.google.com with SMTP id
 ffacd0b85a97d-33ae4eb360aso1010324f8f.0
 for <xen-devel@lists.xenproject.org>; Sun, 28 Jan 2024 08:16:23 -0800 (PST)
Received: from [192.168.69.100] (sev93-h02-176-184-17-196.dsl.sta.abo.bbox.fr.
 [176.184.17.196]) by smtp.gmail.com with ESMTPSA id
 ch19-20020a5d5d13000000b00337b47ae539sm5942414wrb.42.2024.01.28.08.16.20
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Sun, 28 Jan 2024 08:16:22 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 947f7bc9-bdf8-11ee-98f5-efadbce2ee36
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=linaro.org; s=google; t=1706458583; x=1707063383; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:from:content-language
         :references:cc:to:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=nNQ1mZG/MGqiJb02NhZJ31w2Qw5Q82nN33CYLr2cWWo=;
        b=peTGCsuuxDb1/2EDyfpHFza4zWWbTlhQQ+AJerBuQjarwlAJY8Fqyswg73PD0rGgYi
         LBD7adncJa800njXZovG1d2qBbsHVPCgF8p6K0cFJzw0LBy6789fR5c7WFdE+UzlTKd0
         BJ4kmwnL1sDk9CTsgXV3ojS/w3YZZIH1LsFBhcHSigYOTT1FulXWwoBLGRaIADLC+5MW
         gRkkurI9SkbYOIWgaWrpo6tSMXgQ/SlKBEsf3xmQkLDAabx46TcxHoiSEGSmdP7e3Omj
         GxYu7GUlW1D/kRT1LlD/7ztJiz4Hw0kZujx9XqVBp3T2x1KSe7bp3IPqlogJzB3w35VP
         mZ6g==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706458583; x=1707063383;
        h=content-transfer-encoding:in-reply-to:from:content-language
         :references:cc:to:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=nNQ1mZG/MGqiJb02NhZJ31w2Qw5Q82nN33CYLr2cWWo=;
        b=PmYllwbVYUycD/t5LMje2XbLrR3lHCqwitDHfTJy4hXe/608hTkJZIFuc7V8str+RS
         OLRQRorW9IuuEVCJpqjzxHjqMIMsvrFwmLB7OhSKNH4Y0X2a2BNLehiKJblGiJUaIsjq
         wAIeYWpbqCmHUprYWXOCmmqXb/+AKE2zivnPMP1MRVnJESqGbUiO2RqYo++wBST1bzz3
         h9uVE41c9iOwBmlNDvLojwZ/+IHDbWQLtPZnGjDvj2E7MRZ7+EnCaSSwvdBQSX1pIScC
         usDv/tzAioEdrMs97JunGEI2IO2XvrMD1IJotzTt4yiUZSO6Y2HwPe1rLY7YSId8UI1K
         wH3g==
X-Gm-Message-State: AOJu0Yw+Vx1jTyepnjuzuz1DJev3eZjo/dqxC8MBJn3wgO6+PEi+FXZ2
	EHkFm+pHzzfCuqCL7qP2zHSYGuHkVuLC0yNWpaoYnxbREp6l59k8FRqxn62wkRw=
X-Google-Smtp-Source: AGHT+IEZiXHH6VkkxIr4855VrA6mlwRi5ZK5DAlf4ThQoy+yRYfRVJ2hAzogGQOYO0OnwUHdVFeDqg==
X-Received: by 2002:a5d:604c:0:b0:33a:e5e5:163c with SMTP id j12-20020a5d604c000000b0033ae5e5163cmr1763182wrt.71.1706458583105;
        Sun, 28 Jan 2024 08:16:23 -0800 (PST)
Message-ID: <d7c11962-07c0-4c26-83e1-8b0a3d1e43d0@linaro.org>
Date: Sun, 28 Jan 2024 17:16:19 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2 10/23] target/i386: Prefer fast cpu_env() over slower
 CPU QOM cast macro
To: Zhao Liu <zhao1.liu@intel.com>
Cc: qemu-devel@nongnu.org, qemu-arm@nongnu.org, Thomas Huth
 <thuth@redhat.com>, qemu-s390x@nongnu.org, qemu-riscv@nongnu.org,
 Eduardo Habkost <eduardo@habkost.net>, kvm@vger.kernel.org,
 qemu-ppc@nongnu.org, Richard Henderson <richard.henderson@linaro.org>,
 Vladimir Sementsov-Ogievskiy <vsementsov@yandex-team.ru>,
 Paolo Bonzini <pbonzini@redhat.com>, "Michael S. Tsirkin" <mst@redhat.com>,
 Marcel Apfelbaum <marcel.apfelbaum@gmail.com>,
 Stefano Stabellini <sstabellini@kernel.org>,
 Anthony Perard <anthony.perard@citrix.com>, Paul Durrant <paul@xen.org>,
 Cameron Esfahani <dirty@apple.com>, Roman Bolshakov <rbolshakov@ddn.com>,
 Marcelo Tosatti <mtosatti@redhat.com>, David Woodhouse
 <dwmw2@infradead.org>, xen-devel@lists.xenproject.org
References: <20240126220407.95022-1-philmd@linaro.org>
 <20240126220407.95022-11-philmd@linaro.org> <ZbT1R7impEw4whqP@intel.com>
Content-Language: en-US
From: =?UTF-8?Q?Philippe_Mathieu-Daud=C3=A9?= <philmd@linaro.org>
In-Reply-To: <ZbT1R7impEw4whqP@intel.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit

On 27/1/24 13:21, Zhao Liu wrote:
> Hi Philippe,
> 
> On Fri, Jan 26, 2024 at 11:03:52PM +0100, Philippe Mathieu-Daudé wrote:
>> Date: Fri, 26 Jan 2024 23:03:52 +0100
>> From: Philippe Mathieu-Daudé <philmd@linaro.org>
>> Subject: [PATCH v2 10/23] target/i386: Prefer fast cpu_env() over slower
>>   CPU QOM cast macro
>> X-Mailer: git-send-email 2.41.0
>>
>> Mechanical patch produced running the command documented
>> in scripts/coccinelle/cpu_env.cocci_template header.
>>
>> Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
>> ---
>>   target/i386/hvf/vmx.h               | 13 +++-------
>>   hw/i386/vmmouse.c                   |  6 ++---
>>   hw/i386/xen/xen-hvm.c               |  3 +--
>>   target/i386/arch_memory_mapping.c   |  3 +--
>>   target/i386/cpu-dump.c              |  3 +--
>>   target/i386/cpu.c                   | 37 +++++++++------------------
>>   target/i386/helper.c                | 39 ++++++++---------------------
>>   target/i386/hvf/hvf.c               |  8 ++----
>>   target/i386/hvf/x86.c               |  4 +--
>>   target/i386/hvf/x86_emu.c           |  6 ++---
>>   target/i386/hvf/x86_task.c          | 10 +++-----
>>   target/i386/hvf/x86hvf.c            |  6 ++---
>>   target/i386/kvm/kvm.c               |  6 ++---
>>   target/i386/kvm/xen-emu.c           | 32 ++++++++---------------
>>   target/i386/tcg/sysemu/bpt_helper.c |  3 +--
>>   target/i386/tcg/tcg-cpu.c           | 14 +++--------
>>   target/i386/tcg/user/excp_helper.c  |  3 +--
>>   target/i386/tcg/user/seg_helper.c   |  3 +--
>>   18 files changed, 59 insertions(+), 140 deletions(-)
>>
> 
> [snip]
> 
>> diff --git a/target/i386/hvf/x86hvf.c b/target/i386/hvf/x86hvf.c
>> index 3b1ef5f49a..1e7fd587fe 100644
>> --- a/target/i386/hvf/x86hvf.c
>> +++ b/target/i386/hvf/x86hvf.c
>> @@ -238,8 +238,7 @@ void hvf_get_msrs(CPUState *cs)
>>   
>>   int hvf_put_registers(CPUState *cs)
>>   {
>> -    X86CPU *x86cpu = X86_CPU(cs);
>> -    CPUX86State *env = &x86cpu->env;
>> +    CPUX86State *env = cpu_env(cs);
>>   
>>       wreg(cs->accel->fd, HV_X86_RAX, env->regs[R_EAX]);
>>       wreg(cs->accel->fd, HV_X86_RBX, env->regs[R_EBX]);
>> @@ -282,8 +281,7 @@ int hvf_put_registers(CPUState *cs)
>>   
>>   int hvf_get_registers(CPUState *cs)
>>   {
>> -    X86CPU *x86cpu = X86_CPU(cs);
>> -    CPUX86State *env = &x86cpu->env;
>> +    CPUX86State *env = cpu_env(cs);
>>   
>>       env->regs[R_EAX] = rreg(cs->accel->fd, HV_X86_RAX);
>>       env->regs[R_EBX] = rreg(cs->accel->fd, HV_X86_RBX);
> 
> In this file, there's another corner case:
> 
> diff --git a/target/i386/hvf/x86hvf.c b/target/i386/hvf/x86hvf.c
> index 3b1ef5f49a8a..9a145aa5aa4f 100644
> --- a/target/i386/hvf/x86hvf.c
> +++ b/target/i386/hvf/x86hvf.c
> @@ -342,8 +342,7 @@ void vmx_clear_int_window_exiting(CPUState *cs)
> 
>   bool hvf_inject_interrupts(CPUState *cs)
>   {
> -    X86CPU *x86cpu = X86_CPU(cs);
> -    CPUX86State *env = &x86cpu->env;
> +    CPUX86State *env = cpu_env(cs);
> 
>       uint8_t vector;
>       uint64_t intr_type;
> @@ -408,7 +407,7 @@ bool hvf_inject_interrupts(CPUState *cs)
>       if (!(env->hflags & HF_INHIBIT_IRQ_MASK) &&
>           (cs->interrupt_request & CPU_INTERRUPT_HARD) &&
>           (env->eflags & IF_MASK) && !(info & VMCS_INTR_VALID)) {
> -        int line = cpu_get_pic_interrupt(&x86cpu->env);
> +        int line = cpu_get_pic_interrupt(env);
>           cs->interrupt_request &= ~CPU_INTERRUPT_HARD;
>           if (line >= 0) {
>               wvmcs(cs->accel->fd, VMCS_ENTRY_INTR_INFO, line |
> 
> 
> For this special case, I'm not sure if the script can cover it as well,
> otherwise maybe it's OK to be cleaned up manually ;-).

BTW I forgot to mention I had to skip target/i386/tcg/translate.c
(7100 LoC) because it is too complex for Coccinelle.


From xen-devel-bounces@lists.xenproject.org Sun Jan 28 16:52:49 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sun, 28 Jan 2024 16:52:49 +0000
Received: from list by lists.xenproject.org with outflank-mailman.672852.1046948 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rU8Og-0008G9-LK; Sun, 28 Jan 2024 16:52:42 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 672852.1046948; Sun, 28 Jan 2024 16:52:42 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rU8Og-0008G2-Hk; Sun, 28 Jan 2024 16:52:42 +0000
Received: by outflank-mailman (input) for mailman id 672852;
 Sun, 28 Jan 2024 16:52:41 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rU8Of-0008Fq-CH; Sun, 28 Jan 2024 16:52:41 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rU8Of-0007as-9c; Sun, 28 Jan 2024 16:52:41 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rU8Oe-0006d5-SZ; Sun, 28 Jan 2024 16:52:40 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rU8Oe-0000Ri-S4; Sun, 28 Jan 2024 16:52:40 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=bUOlhQK90Mz3d9zaz4nNCpNm9k2c/obCIrHOe/zoMrE=; b=fbzQnmNKVxOCRkdYlXtixhGHU1
	QBRCUt7/V8nz1Pz2hp9VT2WceVRuqlqOyTGGplX3z2im6urb8sv2ycSQlqFZTXM5IrGrejMYDk+xc
	eFIr1o093tkbU4GQT2rQL4COF59iIq+7HYH+pcgtxSPTP6DDfIx03op61EmMUPTuHUlM=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184501-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [xen-unstable test] 184501: tolerable FAIL
X-Osstest-Failures:
    xen-unstable:test-amd64-amd64-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-amd64-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-qcow2:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-raw:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-amd64-qemuu-nested-amd:debian-hvm-install/l1/l2:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-i386-libvirt-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-pvshim:guest-start:fail:nonblocking
    xen-unstable:test-amd64-i386-libvirt:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-credit2:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-credit2:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-credit1:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-credit1:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-thunderx:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-thunderx:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-libvirt-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-libvirt-xsm:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-xsm:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-arndale:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-arndale:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-rtds:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-rtds:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-multivcpu:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-multivcpu:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-libvirt-raw:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-libvirt-raw:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-libvirt-raw:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt-vhd:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-vhd:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-vhd:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-qcow2:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-raw:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-vhd:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-vhd:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit1:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit1:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit2:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit2:saverestore-support-check:fail:nonblocking
X-Osstest-Versions-This:
    xen=c378ff8983cd69786c35117e49640f027e581bca
X-Osstest-Versions-That:
    xen=c378ff8983cd69786c35117e49640f027e581bca
From: osstest service owner <osstest-admin@xenproject.org>
Date: Sun, 28 Jan 2024 16:52:40 +0000

flight 184501 xen-unstable real [real]
http://logs.test-lab.xenproject.org/osstest/logs/184501/

Failures :-/ but no regressions.

Tests which did not succeed, but are not blocking:
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 184484
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 184492
 test-amd64-amd64-xl-qemut-win7-amd64 19 guest-stop            fail like 184492
 test-amd64-i386-xl-qemuu-win7-amd64 19 guest-stop             fail like 184492
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 184492
 test-amd64-i386-xl-qemut-ws16-amd64 19 guest-stop             fail like 184492
 test-armhf-armhf-libvirt-qcow2 15 saverestore-support-check   fail like 184492
 test-amd64-i386-xl-qemut-win7-amd64 19 guest-stop             fail like 184492
 test-armhf-armhf-libvirt-raw 15 saverestore-support-check    fail  like 184492
 test-amd64-amd64-xl-qemut-ws16-amd64 19 guest-stop            fail like 184492
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 184492
 test-amd64-i386-xl-qemuu-ws16-amd64 19 guest-stop             fail like 184492
 test-amd64-i386-libvirt-xsm  15 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt     15 migrate-support-check        fail   never pass
 test-amd64-i386-xl-pvshim    14 guest-start                  fail   never pass
 test-amd64-i386-libvirt      15 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit2  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit2  16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl          15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl          16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-credit1  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit1  16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-thunderx 15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-thunderx 16 saverestore-support-check    fail   never pass
 test-arm64-arm64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-xsm 16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-xsm      15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-xsm      16 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-armhf-armhf-xl-arndale  15 migrate-support-check        fail   never pass
 test-armhf-armhf-libvirt     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-arndale  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-rtds     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-rtds     16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-multivcpu 15 migrate-support-check        fail  never pass
 test-armhf-armhf-xl-multivcpu 16 saverestore-support-check    fail  never pass
 test-amd64-i386-libvirt-raw  14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 15 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-vhd 14 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-vhd      14 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-vhd      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-qcow2 14 migrate-support-check        fail never pass
 test-armhf-armhf-libvirt-raw 14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl          15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-credit1  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit1  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-credit2  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit2  16 saverestore-support-check    fail   never pass

version targeted for testing:
 xen                  c378ff8983cd69786c35117e49640f027e581bca
baseline version:
 xen                  c378ff8983cd69786c35117e49640f027e581bca

Last test of basis   184501  2024-01-28 02:42:06 Z    0 days
Testing same since                          (not found)         0 attempts

jobs:
 build-amd64-xsm                                              pass    
 build-arm64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64-xtf                                              pass    
 build-amd64                                                  pass    
 build-arm64                                                  pass    
 build-armhf                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-arm64-libvirt                                          pass    
 build-armhf-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-prev                                             pass    
 build-i386-prev                                              pass    
 build-amd64-pvops                                            pass    
 build-arm64-pvops                                            pass    
 build-armhf-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-xtf-amd64-amd64-1                                       pass    
 test-xtf-amd64-amd64-2                                       pass    
 test-xtf-amd64-amd64-3                                       pass    
 test-xtf-amd64-amd64-4                                       pass    
 test-xtf-amd64-amd64-5                                       pass    
 test-amd64-amd64-xl                                          pass    
 test-amd64-coresched-amd64-xl                                pass    
 test-arm64-arm64-xl                                          pass    
 test-armhf-armhf-xl                                          pass    
 test-amd64-i386-xl                                           pass    
 test-amd64-coresched-i386-xl                                 pass    
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm           pass    
 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm            pass    
 test-amd64-amd64-xl-qemut-stubdom-debianhvm-amd64-xsm        pass    
 test-amd64-i386-xl-qemut-stubdom-debianhvm-amd64-xsm         pass    
 test-amd64-amd64-xl-qemut-debianhvm-i386-xsm                 pass    
 test-amd64-i386-xl-qemut-debianhvm-i386-xsm                  pass    
 test-amd64-amd64-xl-qemuu-debianhvm-i386-xsm                 pass    
 test-amd64-i386-xl-qemuu-debianhvm-i386-xsm                  pass    
 test-amd64-amd64-libvirt-xsm                                 pass    
 test-arm64-arm64-libvirt-xsm                                 pass    
 test-amd64-i386-libvirt-xsm                                  pass    
 test-amd64-amd64-xl-xsm                                      pass    
 test-arm64-arm64-xl-xsm                                      pass    
 test-amd64-i386-xl-xsm                                       pass    
 test-amd64-amd64-qemuu-nested-amd                            fail    
 test-amd64-amd64-xl-pvhv2-amd                                pass    
 test-amd64-i386-qemut-rhel6hvm-amd                           pass    
 test-amd64-i386-qemuu-rhel6hvm-amd                           pass    
 test-amd64-amd64-dom0pvh-xl-amd                              pass    
 test-amd64-amd64-xl-qemut-debianhvm-amd64                    pass    
 test-amd64-i386-xl-qemut-debianhvm-amd64                     pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64                    pass    
 test-amd64-i386-xl-qemuu-debianhvm-amd64                     pass    
 test-amd64-i386-freebsd10-amd64                              pass    
 test-amd64-amd64-qemuu-freebsd11-amd64                       pass    
 test-amd64-amd64-qemuu-freebsd12-amd64                       pass    
 test-amd64-amd64-xl-qemuu-ovmf-amd64                         pass    
 test-amd64-i386-xl-qemuu-ovmf-amd64                          pass    
 test-amd64-amd64-xl-qemut-win7-amd64                         fail    
 test-amd64-i386-xl-qemut-win7-amd64                          fail    
 test-amd64-amd64-xl-qemuu-win7-amd64                         fail    
 test-amd64-i386-xl-qemuu-win7-amd64                          fail    
 test-amd64-amd64-xl-qemut-ws16-amd64                         fail    
 test-amd64-i386-xl-qemut-ws16-amd64                          fail    
 test-amd64-amd64-xl-qemuu-ws16-amd64                         fail    
 test-amd64-i386-xl-qemuu-ws16-amd64                          fail    
 test-armhf-armhf-xl-arndale                                  pass    
 test-amd64-amd64-examine-bios                                pass    
 test-amd64-i386-examine-bios                                 pass    
 test-amd64-amd64-xl-credit1                                  pass    
 test-arm64-arm64-xl-credit1                                  pass    
 test-armhf-armhf-xl-credit1                                  pass    
 test-amd64-amd64-xl-credit2                                  pass    
 test-arm64-arm64-xl-credit2                                  pass    
 test-armhf-armhf-xl-credit2                                  pass    
 test-amd64-amd64-xl-qemuu-dmrestrict-amd64-dmrestrict        pass    
 test-amd64-i386-xl-qemuu-dmrestrict-amd64-dmrestrict         pass    
 test-amd64-amd64-examine                                     pass    
 test-arm64-arm64-examine                                     pass    
 test-armhf-armhf-examine                                     pass    
 test-amd64-i386-examine                                      pass    
 test-amd64-i386-freebsd10-i386                               pass    
 test-amd64-amd64-qemuu-nested-intel                          pass    
 test-amd64-amd64-xl-pvhv2-intel                              pass    
 test-amd64-i386-qemut-rhel6hvm-intel                         pass    
 test-amd64-i386-qemuu-rhel6hvm-intel                         pass    
 test-amd64-amd64-dom0pvh-xl-intel                            pass    
 test-amd64-amd64-libvirt                                     pass    
 test-armhf-armhf-libvirt                                     pass    
 test-amd64-i386-libvirt                                      pass    
 test-amd64-amd64-livepatch                                   pass    
 test-amd64-i386-livepatch                                    pass    
 test-amd64-amd64-migrupgrade                                 pass    
 test-amd64-i386-migrupgrade                                  pass    
 test-amd64-amd64-xl-multivcpu                                pass    
 test-armhf-armhf-xl-multivcpu                                pass    
 test-amd64-amd64-pair                                        pass    
 test-amd64-i386-pair                                         pass    
 test-amd64-amd64-libvirt-pair                                pass    
 test-amd64-i386-libvirt-pair                                 pass    
 test-amd64-amd64-xl-pvshim                                   pass    
 test-amd64-i386-xl-pvshim                                    fail    
 test-amd64-amd64-pygrub                                      pass    
 test-armhf-armhf-libvirt-qcow2                               pass    
 test-amd64-amd64-xl-qcow2                                    pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-armhf-armhf-libvirt-raw                                 pass    
 test-amd64-i386-libvirt-raw                                  pass    
 test-amd64-amd64-xl-rtds                                     pass    
 test-armhf-armhf-xl-rtds                                     pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64-shadow             pass    
 test-amd64-i386-xl-qemuu-debianhvm-amd64-shadow              pass    
 test-amd64-amd64-xl-shadow                                   pass    
 test-amd64-i386-xl-shadow                                    pass    
 test-arm64-arm64-xl-thunderx                                 pass    
 test-amd64-amd64-examine-uefi                                pass    
 test-amd64-i386-examine-uefi                                 pass    
 test-amd64-amd64-libvirt-vhd                                 pass    
 test-arm64-arm64-xl-vhd                                      pass    
 test-armhf-armhf-xl-vhd                                      pass    
 test-amd64-i386-xl-vhd                                       pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Published tested tree is already up to date.



From xen-devel-bounces@lists.xenproject.org Sun Jan 28 17:09:47 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Sun, 28 Jan 2024 17:09:47 +0000
Received: from list by lists.xenproject.org with outflank-mailman.672859.1046957 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rU8f5-0001ic-W3; Sun, 28 Jan 2024 17:09:39 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 672859.1046957; Sun, 28 Jan 2024 17:09:39 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rU8f5-0001iV-TR; Sun, 28 Jan 2024 17:09:39 +0000
Received: by outflank-mailman (input) for mailman id 672859;
 Sun, 28 Jan 2024 17:09:38 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=k35g=JG=web.de=Markus.Elfring@srs-se1.protection.inumbo.net>)
 id 1rU8f4-0001iN-DW
 for xen-devel@lists.xenproject.org; Sun, 28 Jan 2024 17:09:38 +0000
Received: from mout.web.de (mout.web.de [212.227.17.12])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 03ad6345-be00-11ee-8a43-1f161083a0e0;
 Sun, 28 Jan 2024 18:09:36 +0100 (CET)
Received: from [192.168.178.21] ([94.31.81.95]) by smtp.web.de (mrweb105
 [213.165.67.124]) with ESMTPSA (Nemesis) id 1MuFD5-1rDqKJ2XxF-00uach; Sun, 28
 Jan 2024 18:09:34 +0100
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 03ad6345-be00-11ee-8a43-1f161083a0e0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=web.de; s=s29768273;
	t=1706461774; x=1707066574; i=markus.elfring@web.de;
	bh=skl6m8d4+uXGtWa5IbVdYrFKC3oF+ITHrCIEfSyrSJw=;
	h=X-UI-Sender-Class:Date:To:Cc:From:Subject;
	b=JTzbCmuQAOJ1kPZq5j1qaYAsHcjBkpcnu2qhErvAN2LpefDUUeM8b2YxSueGD71B
	 j3eef9Aa7lTg7dMClGwevaaI/naVIePVANvgwvsxllGUm2u4KQBiBZpEHsN3Ge9ET
	 /olSkTUN96PGcHvaKkcFYx3KkJXJx/ggDHvxAy2e0PpH0dgdZ4koTAtljuvqJIqJD
	 I95lUgxOg94U1tQgmlZ0bc5OwJ57nktLwYazqriKFh6Ef/EBYKc2zFaKNOnos3iVR
	 K/J/lW4DLGoS6zIj6opNVr9FEH4OAba3LSfjiW4G6hk871iGmBZHEC0Kp5XTe6oqA
	 BY/3ZEr14c52yJwQug==
X-UI-Sender-Class: 814a7b36-bfc1-4dae-8640-3722d8ec6cd6
Message-ID: <41e333f7-1f3a-41b6-a121-a3c0ae54e36f@web.de>
Date: Sun, 28 Jan 2024 18:09:30 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
To: xen-devel@lists.xenproject.org, kernel-janitors@vger.kernel.org,
 =?UTF-8?B?SsO8cmdlbiBHcm/Dnw==?= <jgross@suse.com>,
 Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>,
 Stefano Stabellini <sstabellini@kernel.org>
Content-Language: en-GB
Cc: LKML <linux-kernel@vger.kernel.org>
From: Markus Elfring <Markus.Elfring@web.de>
Subject: [PATCH] xen/privcmd: Use memdup_array_user() in alloc_ioreq()
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
X-Provags-ID: V03:K1:7yhNhlRvw29pkPL2ElLfqurRFvlr5JJnJHUrCA7cARjU+fJm2cn
 3ujTOQNviQlobkUnrNwknyt+XzrmHGGoXkQ4NrRjmuViRPoSvBYWkVfI3o9bqxr9CK9PxHo
 DF+/WB0T4smezgtgZs2nDtVFzun5IFBJdLTaFJKZ7V3FEOVV6NN3keRdYqGfzR/fGr7aePR
 BEM+3ALcJia7TLbSBgNMA==
X-Spam-Flag: NO
UI-OutboundReport: notjunk:1;M01:P0:K4Ht/mjTrr0=;HvmWwv7eLngddWj6ev5tcIOfD/L
 fuWb7rfhHAnB5LpBTTNR4OiesAjJUwwhF3MgQbNIdh+LbcEt98tGW9hBMFrE4T9+ZOwwh7dNM
 Px5t7eSuh2tc0vc5ehXthTGamsAK27FgVmIET5sZ0xX53ynF5qk+KANhqwFS9J4KaytBdiyzg
 5MecokBmUjUMZRyto8m/3sEMeyJdiro2ayMQRmUPeig2dp1b9Lk1hleCypE54v/xYr06s5tT1
 fHhppLdShkYf+MkmlTvSThJgBKbvbVKNrVKlk3UG/G9hNvKOgc/uOs7YO8CVEzOxVAUdqO+8J
 aTvGFwWoReQVtnpBTCv8i/tTZ6IBMvROCP+P9Z8aa85abNLVwxN++gm2uIFa1mXSZlzTZz3R5
 TzlCcJJWnEwiKHLB9F32pv+12mWVOGknoyV8AFJgGkrnJZ1RHDMpzTC3Alkf2rTh7hjw24O2X
 xqopT23zNzYz0rm6dpeNS8RQC2XaGBv42mGl0eplnas0/1ULxR3knkays35S5ZDW4McERbseK
 RnA6KkFawxQnVWLubFpKwQXSI22Q+wu6Uin9GEX7xhQhvjYNEuz8VGuIWZcHAuSBhCVgyMlZv
 90XQm4cXaT1TkJQrX0sllUEyVXNlImxf9PyYOLXoXib/kmHFCzOh7hU8EwFul1A4Lk3ZeLFiF
 qtoGJcHiZaRJm/tdCNNYdEf3OYMmQPYAwZWDZ1o8QfgIKpOu3Ke8Mr1czn0PdHKFzTNcVGcON
 m3wEZkY3VCt8/7W5e/fNnNX2fng1WzGrkFxEo7ARFoInHcrawQWU2Pig5connBaeO2Eo4ekbb
 GMzlFi2hhJmlwBpDmvIlTtNDIk1owuaHJrM8VyKxNS3hd8JFvIL3wmurSeo5XBIEAM9HRfrUD
 ZpFSaYxoZAGCDIySsAXMoO0QCuC7WYH1v10S3OYTwozdNHejdJEHqWYrh3/b438sDAwKqfdv4
 3J8eOg==

From: Markus Elfring <elfring@users.sourceforge.net>
Date: Sun, 28 Jan 2024 17:50:43 +0100

* The function =E2=80=9Cmemdup_array_user=E2=80=9D was added with the
  commit 313ebe47d75558511aa1237b6e35c663b5c0ec6f ("string.h: add
  array-wrappers for (v)memdup_user()").
  Thus use it accordingly.

  This issue was detected by using the Coccinelle software.

* Delete a label which became unnecessary with this refactoring.

Signed-off-by: Markus Elfring <elfring@users.sourceforge.net>
=2D--
 drivers/xen/privcmd.c | 15 +++++----------
 1 file changed, 5 insertions(+), 10 deletions(-)

diff --git a/drivers/xen/privcmd.c b/drivers/xen/privcmd.c
index 35b6e306026a..2c8f6d047c11 100644
=2D-- a/drivers/xen/privcmd.c
+++ b/drivers/xen/privcmd.c
@@ -1223,18 +1223,13 @@ struct privcmd_kernel_ioreq *alloc_ioreq(struct pr=
ivcmd_ioeventfd *ioeventfd)
 	kioreq->ioreq =3D (struct ioreq *)(page_to_virt(pages[0]));
 	mmap_write_unlock(mm);

-	size =3D sizeof(*ports) * kioreq->vcpus;
-	ports =3D kzalloc(size, GFP_KERNEL);
-	if (!ports) {
-		ret =3D -ENOMEM;
+	ports =3D memdup_array_user(u64_to_user_ptr(ioeventfd->ports),
+				  kioreq->vcpus, sizeof(*ports));
+	if (IS_ERR(ports) {
+		ret =3D PTR_ERR(ports);
 		goto error_kfree;
 	}

-	if (copy_from_user(ports, u64_to_user_ptr(ioeventfd->ports), size)) {
-		ret =3D -EFAULT;
-		goto error_kfree_ports;
-	}
-
 	for (i =3D 0; i < kioreq->vcpus; i++) {
 		kioreq->ports[i].vcpu =3D i;
 		kioreq->ports[i].port =3D ports[i];
@@ -1256,7 +1251,7 @@ struct privcmd_kernel_ioreq *alloc_ioreq(struct priv=
cmd_ioeventfd *ioeventfd)
 error_unbind:
 	while (--i >=3D 0)
 		unbind_from_irqhandler(irq_from_evtchn(ports[i]), &kioreq->ports[i]);
-error_kfree_ports:
+
 	kfree(ports);
 error_kfree:
 	kfree(kioreq);
=2D-
2.43.0



From xen-devel-bounces@lists.xenproject.org Mon Jan 29 00:27:14 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 29 Jan 2024 00:27:14 +0000
Received: from list by lists.xenproject.org with outflank-mailman.672876.1046968 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUFUH-0006rR-Kf; Mon, 29 Jan 2024 00:26:57 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 672876.1046968; Mon, 29 Jan 2024 00:26:57 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUFUH-0006rK-Hd; Mon, 29 Jan 2024 00:26:57 +0000
Received: by outflank-mailman (input) for mailman id 672876;
 Mon, 29 Jan 2024 00:26:55 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rUFUF-0006r5-Mp; Mon, 29 Jan 2024 00:26:55 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rUFUF-0008UY-CY; Mon, 29 Jan 2024 00:26:55 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rUFUE-0001vl-RP; Mon, 29 Jan 2024 00:26:54 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rUFUE-0002iI-R2; Mon, 29 Jan 2024 00:26:54 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=6xL0Yw0s7jeWUqqVJjvqQiah6BBWdFDFVjqOIs03Z8A=; b=xePJ6jAXTvYaISMDsLyUDaPMCI
	hnahwJIjdp1fTw/DByo0TeDciF+6Bypv/ngB0Ij/PUBjXSVYA6Oqcb2mvWQwDY4OnMRyJn6D/FfmB
	kPyttLknImKk01TIdfODbiOI3s6w1s08Hf9uCNt7YJCE0NA6Q1o547REfhypRqYjZD2U=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184506-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [linux-linus test] 184506: tolerable FAIL - PUSHED
X-Osstest-Failures:
    linux-linus:test-amd64-amd64-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    linux-linus:test-amd64-amd64-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    linux-linus:test-amd64-amd64-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-qcow2:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-raw:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    linux-linus:test-amd64-amd64-qemuu-nested-amd:debian-hvm-install/l1/l2:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-xsm:migrate-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-thunderx:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-thunderx:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-credit2:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-credit2:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-libvirt-xsm:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-libvirt-xsm:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-credit1:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-xsm:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-credit1:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-xsm:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-arndale:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-arndale:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-rtds:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-rtds:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-multivcpu:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-multivcpu:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-qcow2:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-libvirt-raw:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-vhd:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-vhd:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-qcow2:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-vhd:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-vhd:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit1:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit1:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit2:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit2:saverestore-support-check:fail:nonblocking
X-Osstest-Versions-This:
    linux=8a696a29c6905594e4abf78eaafcb62165ac61f1
X-Osstest-Versions-That:
    linux=cd2286fc577526f0a6798f68977a95eb85fe3d52
From: osstest service owner <osstest-admin@xenproject.org>
Date: Mon, 29 Jan 2024 00:26:54 +0000

flight 184506 linux-linus real [real]
http://logs.test-lab.xenproject.org/osstest/logs/184506/

Failures :-/ but no regressions.

Tests which did not succeed, but are not blocking:
 test-amd64-amd64-xl-qemut-win7-amd64 19 guest-stop            fail like 184496
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 184496
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 184496
 test-armhf-armhf-libvirt-qcow2 15 saverestore-support-check   fail like 184496
 test-armhf-armhf-libvirt-raw 15 saverestore-support-check    fail  like 184496
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 184496
 test-amd64-amd64-xl-qemut-ws16-amd64 19 guest-stop            fail like 184496
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 184496
 test-amd64-amd64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt     15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl          15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl          16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-thunderx 15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-thunderx 16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-credit2  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit2  16 saverestore-support-check    fail   never pass
 test-arm64-arm64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-xsm 16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-credit1  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-xsm      15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit1  16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-xsm      16 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-armhf-armhf-xl-arndale  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-arndale  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-rtds     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-rtds     16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-multivcpu 15 migrate-support-check        fail  never pass
 test-armhf-armhf-xl-multivcpu 16 saverestore-support-check    fail  never pass
 test-amd64-amd64-libvirt-qcow2 14 migrate-support-check        fail never pass
 test-arm64-arm64-libvirt-raw 14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 15 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-raw 14 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-vhd      14 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-vhd      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-qcow2 14 migrate-support-check        fail never pass
 test-armhf-armhf-libvirt-raw 14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl          15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          16 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit1  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit1  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-credit2  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit2  16 saverestore-support-check    fail   never pass

version targeted for testing:
 linux                8a696a29c6905594e4abf78eaafcb62165ac61f1
baseline version:
 linux                cd2286fc577526f0a6798f68977a95eb85fe3d52

Last test of basis   184496  2024-01-27 17:42:04 Z    1 days
Testing same since   184506  2024-01-28 10:49:07 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Armin Wolf <W_Armin@gmx.de>
  Ashok Raj <ashok.raj@intel.com>
  Cong Liu <liucong2@kylinos.cn>
  Dan Carpenter <dan.carpenter@linaro.org>
  Hans de Goede <hdegoede@redhat.com>
  Heiner Kallweit <hkallweit1@gmail.com>
  Huacai Chen <chenhuacai@loongson.cn>
  Jithu Joseph <jithu.joseph@intel.com>
  Liming Sun <limings@nvidia.com>
  Linus Torvalds <torvalds@linux-foundation.org>
  Luke D. Jones <luke@ljones.dev>
  Nathan Chancellor <nathan@kernel.org>
  Pengfei Xu <pengfei.xu@intel.com>
  Phoenix Chen <asbeltogf@gmail.com>
  Randy Dunlap <rdunlap@infradead.org>
  Shin'ichiro Kawasaki <shinichiro.kawasaki@wdc.com>
  Shravan Kumar Ramani <shravankr@nvidia.com>
  Shyam Sundar S K <Shyam-sundar.S-k@amd.com>
  Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>

jobs:
 build-amd64-xsm                                              pass    
 build-arm64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64                                                  pass    
 build-arm64                                                  pass    
 build-armhf                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-arm64-libvirt                                          pass    
 build-armhf-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-pvops                                            pass    
 build-arm64-pvops                                            pass    
 build-armhf-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-amd64-amd64-xl                                          pass    
 test-amd64-coresched-amd64-xl                                pass    
 test-arm64-arm64-xl                                          pass    
 test-armhf-armhf-xl                                          pass    
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm           pass    
 test-amd64-amd64-xl-qemut-stubdom-debianhvm-amd64-xsm        pass    
 test-amd64-amd64-xl-qemut-debianhvm-i386-xsm                 pass    
 test-amd64-amd64-xl-qemuu-debianhvm-i386-xsm                 pass    
 test-amd64-amd64-libvirt-xsm                                 pass    
 test-arm64-arm64-libvirt-xsm                                 pass    
 test-amd64-amd64-xl-xsm                                      pass    
 test-arm64-arm64-xl-xsm                                      pass    
 test-amd64-amd64-qemuu-nested-amd                            fail    
 test-amd64-amd64-xl-pvhv2-amd                                pass    
 test-amd64-amd64-dom0pvh-xl-amd                              pass    
 test-amd64-amd64-xl-qemut-debianhvm-amd64                    pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64                    pass    
 test-amd64-amd64-freebsd11-amd64                             pass    
 test-amd64-amd64-freebsd12-amd64                             pass    
 test-amd64-amd64-xl-qemuu-ovmf-amd64                         pass    
 test-amd64-amd64-xl-qemut-win7-amd64                         fail    
 test-amd64-amd64-xl-qemuu-win7-amd64                         fail    
 test-amd64-amd64-xl-qemut-ws16-amd64                         fail    
 test-amd64-amd64-xl-qemuu-ws16-amd64                         fail    
 test-armhf-armhf-xl-arndale                                  pass    
 test-amd64-amd64-examine-bios                                pass    
 test-amd64-amd64-xl-credit1                                  pass    
 test-arm64-arm64-xl-credit1                                  pass    
 test-armhf-armhf-xl-credit1                                  pass    
 test-amd64-amd64-xl-credit2                                  pass    
 test-arm64-arm64-xl-credit2                                  pass    
 test-armhf-armhf-xl-credit2                                  pass    
 test-amd64-amd64-xl-qemuu-dmrestrict-amd64-dmrestrict        pass    
 test-amd64-amd64-examine                                     pass    
 test-arm64-arm64-examine                                     pass    
 test-armhf-armhf-examine                                     pass    
 test-amd64-amd64-qemuu-nested-intel                          pass    
 test-amd64-amd64-xl-pvhv2-intel                              pass    
 test-amd64-amd64-dom0pvh-xl-intel                            pass    
 test-amd64-amd64-libvirt                                     pass    
 test-armhf-armhf-libvirt                                     pass    
 test-amd64-amd64-xl-multivcpu                                pass    
 test-armhf-armhf-xl-multivcpu                                pass    
 test-amd64-amd64-pair                                        pass    
 test-amd64-amd64-libvirt-pair                                pass    
 test-amd64-amd64-xl-pvshim                                   pass    
 test-amd64-amd64-pygrub                                      pass    
 test-amd64-amd64-libvirt-qcow2                               pass    
 test-armhf-armhf-libvirt-qcow2                               pass    
 test-amd64-amd64-libvirt-raw                                 pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-armhf-armhf-libvirt-raw                                 pass    
 test-amd64-amd64-xl-rtds                                     pass    
 test-armhf-armhf-xl-rtds                                     pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64-shadow             pass    
 test-amd64-amd64-xl-shadow                                   pass    
 test-arm64-arm64-xl-thunderx                                 pass    
 test-amd64-amd64-examine-uefi                                pass    
 test-amd64-amd64-xl-vhd                                      pass    
 test-arm64-arm64-xl-vhd                                      pass    
 test-armhf-armhf-xl-vhd                                      pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Pushing revision :

hint: The 'hooks/update' hook was ignored because it's not set as executable.
hint: You can disable this warning with `git config advice.ignoredHook false`.
hint: The 'hooks/post-receive' hook was ignored because it's not set as executable.
hint: You can disable this warning with `git config advice.ignoredHook false`.
hint: The 'hooks/post-update' hook was ignored because it's not set as executable.
hint: You can disable this warning with `git config advice.ignoredHook false`.
To xenbits.xen.org:/home/xen/git/linux-pvops.git
   cd2286fc5775..8a696a29c690  8a696a29c6905594e4abf78eaafcb62165ac61f1 -> tested/linux-linus


From xen-devel-bounces@lists.xenproject.org Mon Jan 29 05:14:56 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 29 Jan 2024 05:14:56 +0000
Received: from list by lists.xenproject.org with outflank-mailman.672888.1046978 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUJyi-0006GS-RW; Mon, 29 Jan 2024 05:14:40 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 672888.1046978; Mon, 29 Jan 2024 05:14:40 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUJyi-0006GL-O8; Mon, 29 Jan 2024 05:14:40 +0000
Received: by outflank-mailman (input) for mailman id 672888;
 Mon, 29 Jan 2024 05:14:38 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rUJyg-0006GB-K5; Mon, 29 Jan 2024 05:14:38 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rUJyg-0000P0-AX; Mon, 29 Jan 2024 05:14:38 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rUJyf-0006EP-Hu; Mon, 29 Jan 2024 05:14:37 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rUJyf-0000lF-GR; Mon, 29 Jan 2024 05:14:37 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=lst5xdg3kn7PgeMWtG/lOKN1dG7PVrh9prfGjb/N02s=; b=6Om4T7PwauIodk5yPxiv84+3BC
	W3DBEc3U4zwAo5/8ONO5z2f5YCO2Ie9yqCpQWQKz0nPHVt1EtGZEF1t31ToCpBBOcOtqwrOo2ckzA
	P4/Bcs0FXBdzeIeVgcPM0AjfWSa+ll0vOFo+sQeC5JwtOhAmjNikMKz9zZbc2ua+Icy8=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184507-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [linux-5.4 test] 184507: regressions - FAIL
X-Osstest-Failures:
    linux-5.4:test-armhf-armhf-xl-credit1:guest-start/debian.repeat:fail:regression
    linux-5.4:test-armhf-armhf-xl-rtds:guest-start:fail:heisenbug
    linux-5.4:test-armhf-armhf-xl-credit1:xen-boot:fail:heisenbug
    linux-5.4:test-armhf-armhf-xl-credit1:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-credit1:saverestore-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-vhd:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-vhd:saverestore-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-rtds:guest-start/debian.repeat:fail:nonblocking
    linux-5.4:test-armhf-armhf-libvirt:saverestore-support-check:fail:nonblocking
    linux-5.4:test-amd64-amd64-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    linux-5.4:test-amd64-i386-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    linux-5.4:test-amd64-i386-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-multivcpu:guest-start/debian.repeat:fail:nonblocking
    linux-5.4:test-amd64-amd64-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    linux-5.4:test-amd64-amd64-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    linux-5.4:test-amd64-amd64-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    linux-5.4:test-amd64-i386-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-vhd:guest-start:fail:nonblocking
    linux-5.4:test-armhf-armhf-libvirt-qcow2:saverestore-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-credit2:guest-start/debian.repeat:fail:nonblocking
    linux-5.4:test-armhf-armhf-libvirt-raw:saverestore-support-check:fail:nonblocking
    linux-5.4:test-amd64-i386-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    linux-5.4:test-amd64-amd64-qemuu-nested-amd:debian-hvm-install/l1/l2:fail:nonblocking
    linux-5.4:test-amd64-i386-xl-pvshim:guest-start:fail:nonblocking
    linux-5.4:test-amd64-i386-libvirt:migrate-support-check:fail:nonblocking
    linux-5.4:test-amd64-amd64-libvirt-xsm:migrate-support-check:fail:nonblocking
    linux-5.4:test-amd64-i386-libvirt-xsm:migrate-support-check:fail:nonblocking
    linux-5.4:test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    linux-5.4:test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-xsm:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-xsm:saverestore-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl:saverestore-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-credit2:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-libvirt-xsm:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-thunderx:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-libvirt-xsm:saverestore-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-credit2:saverestore-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-thunderx:saverestore-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-credit1:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-credit1:saverestore-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-multivcpu:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-multivcpu:saverestore-support-check:fail:nonblocking
    linux-5.4:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl:saverestore-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-arndale:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-arndale:saverestore-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-rtds:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-rtds:saverestore-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-libvirt:migrate-support-check:fail:nonblocking
    linux-5.4:test-amd64-i386-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-libvirt-raw:saverestore-support-check:fail:nonblocking
    linux-5.4:test-amd64-amd64-libvirt-vhd:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-vhd:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-vhd:saverestore-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-libvirt-qcow2:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-credit2:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-credit2:saverestore-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-libvirt-raw:migrate-support-check:fail:nonblocking
X-Osstest-Versions-This:
    linux=f0602893f43a54097fcf22bd8c2f7b8e75ca643e
X-Osstest-Versions-That:
    linux=9153fc9664959aa6bb35915b2bbd8fbc4c762962
From: osstest service owner <osstest-admin@xenproject.org>
Date: Mon, 29 Jan 2024 05:14:37 +0000

flight 184507 linux-5.4 real [real]
flight 184510 linux-5.4 real-retest [real]
http://logs.test-lab.xenproject.org/osstest/logs/184507/
http://logs.test-lab.xenproject.org/osstest/logs/184510/

Regressions :-(

Tests which did not succeed and are blocking,
including tests which could not be run:
 test-armhf-armhf-xl-credit1 18 guest-start/debian.repeat fail in 184500 REGR. vs. 184381

Tests which are failing intermittently (not blocking):
 test-armhf-armhf-xl-rtds     14 guest-start      fail in 184500 pass in 184507
 test-armhf-armhf-xl-credit1   8 xen-boot                   fail pass in 184500

Tests which did not succeed, but are not blocking:
 test-armhf-armhf-xl-credit1 15 migrate-support-check fail in 184500 never pass
 test-armhf-armhf-xl-credit1 16 saverestore-support-check fail in 184500 never pass
 test-armhf-armhf-xl-vhd     14 migrate-support-check fail in 184500 never pass
 test-armhf-armhf-xl-vhd 15 saverestore-support-check fail in 184500 never pass
 test-armhf-armhf-xl-rtds     18 guest-start/debian.repeat    fail  like 184362
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 184381
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 184381
 test-amd64-i386-xl-qemut-win7-amd64 19 guest-stop             fail like 184381
 test-amd64-i386-xl-qemuu-win7-amd64 19 guest-stop             fail like 184381
 test-armhf-armhf-xl-multivcpu 18 guest-start/debian.repeat    fail like 184381
 test-amd64-amd64-xl-qemut-win7-amd64 19 guest-stop            fail like 184381
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 184381
 test-amd64-amd64-xl-qemut-ws16-amd64 19 guest-stop            fail like 184381
 test-amd64-i386-xl-qemut-ws16-amd64 19 guest-stop             fail like 184381
 test-armhf-armhf-xl-vhd      13 guest-start                  fail  like 184381
 test-armhf-armhf-libvirt-qcow2 15 saverestore-support-check   fail like 184381
 test-armhf-armhf-xl-credit2  18 guest-start/debian.repeat    fail  like 184381
 test-armhf-armhf-libvirt-raw 15 saverestore-support-check    fail  like 184381
 test-amd64-i386-xl-qemuu-ws16-amd64 19 guest-stop             fail like 184381
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 184381
 test-amd64-i386-xl-pvshim    14 guest-start                  fail   never pass
 test-amd64-i386-libvirt      15 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-amd64-i386-libvirt-xsm  15 migrate-support-check        fail   never pass
 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-arm64-arm64-xl-xsm      15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-xsm      16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl          15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl          16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-credit2  15 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-thunderx 15 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-xsm 16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-credit2  16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-thunderx 16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-credit1  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit1  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-multivcpu 15 migrate-support-check        fail  never pass
 test-armhf-armhf-xl-multivcpu 16 saverestore-support-check    fail  never pass
 test-amd64-amd64-libvirt     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-arndale  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-arndale  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-rtds     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-rtds     16 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt     15 migrate-support-check        fail   never pass
 test-amd64-i386-libvirt-raw  14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 15 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-vhd 14 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-vhd      14 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-vhd      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-qcow2 14 migrate-support-check        fail never pass
 test-armhf-armhf-xl-credit2  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit2  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-raw 14 migrate-support-check        fail   never pass

version targeted for testing:
 linux                f0602893f43a54097fcf22bd8c2f7b8e75ca643e
baseline version:
 linux                9153fc9664959aa6bb35915b2bbd8fbc4c762962

Last test of basis   184381  2024-01-17 06:00:18 Z   11 days
Testing same since   184469  2024-01-25 22:43:10 Z    3 days    5 attempts

------------------------------------------------------------
People who touched revisions under test:
  "Christian A. Ehrhardt" <lk@c--e.de>
  Alex Deucher <alexander.deucher@amd.com>
  Alexander Gordeev <agordeev@linux.ibm.com>
  Alexei Starovoitov <ast@kernel.org>
  Amit Cohen <amcohen@nvidia.com>
  Andreas Gruenbacher <agruenba@redhat.com>
  Andrew Lunn <andrew@lunn.ch>
  Andrii Nakryiko <andrii@kernel.org>
  Anna Schumaker <Anna.Schumaker@Netapp.com>
  Arnaldo Carvalho de Melo <acme@redhat.com>
  Arnd Bergmann <arnd@arndb.de>
  Arseniy Krasnov <avkrasnov@salutedevices.com>
  Artem Chernyshev <artem.chernyshev@red-soft.ru>
  Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
  Benjamin Coddington <bcodding@redhat.com>
  Bhaskar Chowdhury <unixbhaskar@gmail.com>
  Bjorn Andersson <andersson@kernel.org>
  Borislav Petkov (AMD) <bp@alien8.de>
  Brian Norris <briannorris@chromium.org>
  Cameron Williams <cang1@live.co.uk>
  Carlos Llamas <cmllamas@google.com>
  Chao Yu <chao@kernel.org>
  Charles Keepax <ckeepax@opensource.cirrus.com>
  Chengming Zhou <zhouchengming@bytedance.com>
  Chih-Kang Chang <gary.chang@realtek.com>
  Christian A. Ehrhardt <lk@c--e.de>
  Christoph Hellwig <hch@lst.de>
  Christoph Niedermaier <cniedermaier@dh-electronics.com>
  Christophe JAILLET <christophe.jaillet@wanadoo.fr>
  Claudiu Beznea <claudiu.beznea.uj@bp.renesas.com>
  Colin Ian King <colin.i.king@gmail.com>
  Colin Ian King <colin.king@canonical.com>
  Curtis Klein <curtis.klein@hpe.com>
  Dan Carpenter <dan.carpenter@linaro.org>
  Daniel Thompson <daniel.thompson@linaro.org>
  Danilo Krummrich <dakr@redhat.com>
  Dario Binacchi <dario.binacchi@amarulasolutions.com>
  Dave Airlie <airlied@redhat.com>
  Dave Hansen <dave.hansen@linux.intel.com>
  David Lin <CTLIN0@nuvoton.com>
  David Lin <yu-hao.lin@nxp.com>
  David Rau <David.Rau.opensource@dm.renesas.com>
  David S. Miller <davem@davemloft.net>
  Dinghao Liu <dinghao.liu@zju.edu.cn>
  Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
  Dmitry Torokhov <dmitry.torokhov@gmail.com>
  Eric Biggers <ebiggers@google.com>
  Eric Dumazet <edumazet@google.com>
  Esther Shimanovich <eshimanovich@chromium.org>
  Fedor Pchelkin <pchelkin@ispras.ru>
  Florian Fainelli <florian.fainelli@broadcom.com>
  Florian Lehner <dev@der-flo.net>
  Florian Westphal <fw@strlen.de>
  Francesco Dolcini <francesco.dolcini@toradex.com>
  Gavrilov Ilia <Ilia.Gavrilov@infotecs.ru>
  Geert Uytterhoeven <geert+renesas@glider.be>
  Gonglei (Arei) <arei.gonglei@huawei.com>
  Gonglei <arei.gonglei@huawei.com>
  Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  Gregory CLEMENT <gregory.clement@bootlin.com>
  Guanghui Feng <guanghuifeng@linux.alibaba.com>
  Guenter Roeck <linux@roeck-us.net>
  Gui-Dong Han <2045gemini@gmail.com>
  Hangbin Liu <liuhangbin@gmail.com>
  Hans de Goede <hdegoede@redhat.com>
  Hans Verkuil <hverkuil-cisco@xs4all.nl>
  Harshit Mogalapalli <harshit.m.mogalapalli@oracle.com>
  Heikki Krogerus <heikki.krogerus@linux.intel.com>
  Heiko Carstens <hca@linux.ibm.com>
  Heiko Stuebner <heiko@sntech.de>
  Helge Deller <deller@gmx.de>
  Herbert Xu <herbert@gondor.apana.org.au>
  Ian Rogers <irogers@google.com>
  Ido Schimmel <idosch@nvidia.com>
  Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
  Inki Dae <inki.dae@samsung.com>
  Jaegeuk Kim <jaegeuk@kernel.org>
  Jakub Kicinski <kuba@kernel.org>
  James Clark <james.clark@arm.com>
  Jan Beulich <jbeulich@suse.com>
  Jani Nikula <jani.nikula@intel.com>
  Jason Gerecke <jason.gerecke@wacom.com>
  Jay Buddhabhatti <jay.buddhabhatti@amd.com>
  Jerry Hoemann <jerry.hoemann@hpe.com>
  Jiri Kosina <jkosina@suse.com>
  Jiri Olsa <jolsa@kernel.org>
  Jiri Olsa <jolsa@redhat.com>
  Joakim Zhang <joakim.zhang@cixtech.com>
  Joe Perches <joe@perches.com>
  John Johansen <john.johansen@canonical.com>
  Jon Hunter <jonathanh@nvidia.com>
  Judy Hsiao <judyhsiao@chromium.org>
  Julian Anastasov <ja@ssi.bg>
  Kalle Valo <kvalo@codeaurora.org>
  Kalle Valo <kvalo@kernel.org>
  Kamil Duljas <kamil.duljas@gmail.com>
  Kees Cook <keescook@chromium.org>
  Keith Busch <kbusch@kernel.org>
  kernelci.org bot <bot@kernelci.org>
  Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
  Konrad Dybcio <konrad.dybcio@linaro.org>
  Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
  Krzysztof Wilczyński <kwilczynski@kernel.org>
  Kunwu Chan <chentao@kylinos.cn>
  Laurent Dufour <ldufour@linux.ibm.com>
  Leon Romanovsky <leonro@nvidia.com>
  Li Jun <jun.li@nxp.com>
  Lin Ma <linma@zju.edu.cn>
  Linus Torvalds <torvalds@linux-foundation.org>
  Linus Walleij <linus.walleij@linaro.org>
  Linux Kernel Functional Testing <lkft@linaro.org>
  Luca Weiss <luca@z3ntu.xyz>
  Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
  Maciej Strozek <mstrozek@opensource.cirrus.com>
  Marek Szyprowski <m.szyprowski@samsung.com>
  Mark Brown <broonie@kernel.org>
  Martin K. Petersen <martin.petersen@oracle.com>
  Masahiro Yamada <masahiroy@kernel.org>
  Matthew Wilcox (Oracle) <willy@infradead.org>
  Maurizio Lombardi <mlombard@redhat.com>
  Mauro Carvalho Chehab <mchehab@kernel.org>
  Maxime Ripard <mripard@kernel.org>
  Michael Ellerman <mpe@ellerman.id.au>
  Michael S. Tsirkin <mst@redhat.com>
  Mickaël Salaün <mic@digikod.net>
  Mike Isely <isely@pobox.com>
  Mike Looijmans <mike.looijmans@topic.nl>
  Miquel Raynal <miquel.raynal@bootlin.com>
  Muhammad Usama Anjum <usama.anjum@collabora.com>
  Nam Cao <namcao@linutronix.de>
  Namhyung Kim <namhyung@kernel.org>
  Nathan Lynch <nathanl@linux.ibm.com>
  Nikita Kiryushin <kiryushin@ancud.ru>
  Nikita Yushchenko <nikita.yoush@cogentembedded.com>
  Nikita Zhandarovich <n.zhandarovich@fintech.ru>
  Niklas Schnelle <schnelle@linux.ibm.com>
  Nishanth Menon <nm@ti.com>
  Osama Muhammad <osmtendev@gmail.com>
  Ovidiu Panait <ovidiu.panait@windriver.com>
  Pablo Neira Ayuso <pablo@netfilter.org>
  Paolo Abeni <pabeni@redhat.com>
  Paolo Bonzini <pbonzini@redhat.com>
  Paul Moore <paul@paul-moore.com>
  Peter Chen <peter.chen@kernel.org>
  Peter Delevoryas <peter@pjd.dev>
  Peter Robinson <pbrobinson@gmail.com>
  Petr Machata <petrm@nvidia.com>
  Philipp Zabel <p.zabel@pengutronix.de>
  Ping Cheng <ping.cheng@wacom.com>
  Ping-Ke Shih <pkshih@realtek.com>
  Rafael Beims <rafael.beims@toradex.com> # Verdin iMX8MP/SD8997 SD
  Rafael J. Wysocki <rafael.j.wysocki@intel.com>
  Ram Muthiah <rammuthiah@google.com>
  Randy Dunlap <rdunlap@infradead.org>
  Ravi Gunasekaran <r-gunasekaran@ti.com>
  RD Babiera <rdbabiera@google.com>
  Ricardo B. Marliere <ricardo@marliere.net>
  Richard Weinberger <richard@nod.at>
  Rob Herring <robh@kernel.org>
  Rob Landley <rob@landley.net>
  Robert Foss <rfoss@kernel.org>
  Ronald Monthero <debug.penguin32@gmail.com>
  Sakari Ailus <sakari.ailus@linux.intel.com>
  Sasha Levin <sashal@kernel.org>
  Serge Semin <fancer.lancer@gmail.com>
  Sergey Shtylyov <s.shtylyov@omp.ru>
  Shuming Fan <shumingf@realtek.com>
  Siddharth Vadapalli <s-vadapalli@ti.com>
  Simon Horman <horms@kernel.org>
  Sjoerd Simons <sjoerd@collabora.com>
  Song Liu <song@kernel.org>
  Stefan Berger <stefanb@linux.ibm.com>
  Stefan Wahren <wahrenst@gmx.net>
  Stephen Boyd <sboyd@kernel.org>
  Steven Rostedt (Google) <rostedt@goodmis.org>
  Su Hui <suhui@nfschina.com>
  Sudip Mukherjee <sudipm.mukherjee@gmail.com>
  Suzuki K Poulose <suzuki.poulose@arm.com>
  Takashi Iwai <tiwai@suse.de>
  Tatsunosuke Tobita <tatsunosuke.tobita@wacom.com>
  Theodore Ts'o <tytso@mit.edu>
  Thinh Nguyen <Thinh.Nguyen@synopsys.com>
  Thinh Tran <thinhtr@linux.vnet.ibm.com>
  Thomas Bogendoerfer <tsbogend@alpha.franken.de>
  Thomas Gleixner <tglx@linutronix.de>
  Tiezhu Yang <yangtiezhu@loongson.cn>
  Tom Lendacky <thomas.lendacky@amd.com>
  Tomi Valkeinen <tomi.valkeinen@ideasonboard.com>
  Trond Myklebust <trond.myklebust@hammerspace.com>
  Ulf Hansson <ulf.hansson@linaro.org>
  Uttkarsh Aggarwal <quic_uaggarwa@quicinc.com>
  Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
  Vasiliy Kovalev <kovalev@altlinux.org>
  Venkata Sai Duggi <venkata.sai.duggi@ibm.com>
  Vineet Gupta <vgupta@kernel.org>
  Vineeth Vijayan <vneethv@linux.ibm.com>
  wangyangxin <wangyangxin1@huawei.com>
  Weihao Li <cn.liweihao@gmail.com>
  Wim Van Sebroeck <wim@linux-watchdog.org>
  Wolfram Sang <wsa+renesas@sang-engineering.com>
  Wolfram Sang <wsa@kernel.org>
  Xiang Chen <chenxiang66@hisilicon.com>
  Xiang Yang <xiangyang3@huawei.com>
  Xu Yang <xu.yang_2@nxp.com>
  Yang Yingliang <yangyingliang@huawei.com>
  Yihang Li <liyihang9@huawei.com>
  Zhang Yi <yi.zhang@huawei.com>
  ZhaoLong Wang <wangzhaolong1@huawei.com>
  Zheng Yejian <zhengyejian1@huawei.com>
  zhenwei pi <pizhenwei@bytedance.com>
  Zhipeng Lu <alexious@zju.edu.cn>
  Ziqi Zhao <astrajoan@yahoo.com>

jobs:
 build-amd64-xsm                                              pass    
 build-arm64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64                                                  pass    
 build-arm64                                                  pass    
 build-armhf                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-arm64-libvirt                                          pass    
 build-armhf-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-pvops                                            pass    
 build-arm64-pvops                                            pass    
 build-armhf-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-amd64-amd64-xl                                          pass    
 test-amd64-coresched-amd64-xl                                pass    
 test-arm64-arm64-xl                                          pass    
 test-armhf-armhf-xl                                          pass    
 test-amd64-i386-xl                                           pass    
 test-amd64-coresched-i386-xl                                 pass    
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm           pass    
 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm            pass    
 test-amd64-amd64-xl-qemut-stubdom-debianhvm-amd64-xsm        pass    
 test-amd64-i386-xl-qemut-stubdom-debianhvm-amd64-xsm         pass    
 test-amd64-amd64-xl-qemut-debianhvm-i386-xsm                 pass    
 test-amd64-i386-xl-qemut-debianhvm-i386-xsm                  pass    
 test-amd64-amd64-xl-qemuu-debianhvm-i386-xsm                 pass    
 test-amd64-i386-xl-qemuu-debianhvm-i386-xsm                  pass    
 test-amd64-amd64-libvirt-xsm                                 pass    
 test-arm64-arm64-libvirt-xsm                                 pass    
 test-amd64-i386-libvirt-xsm                                  pass    
 test-amd64-amd64-xl-xsm                                      pass    
 test-arm64-arm64-xl-xsm                                      pass    
 test-amd64-i386-xl-xsm                                       pass    
 test-amd64-amd64-qemuu-nested-amd                            fail    
 test-amd64-amd64-xl-pvhv2-amd                                pass    
 test-amd64-i386-qemut-rhel6hvm-amd                           pass    
 test-amd64-i386-qemuu-rhel6hvm-amd                           pass    
 test-amd64-amd64-dom0pvh-xl-amd                              pass    
 test-amd64-amd64-xl-qemut-debianhvm-amd64                    pass    
 test-amd64-i386-xl-qemut-debianhvm-amd64                     pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64                    pass    
 test-amd64-i386-xl-qemuu-debianhvm-amd64                     pass    
 test-amd64-i386-freebsd10-amd64                              pass    
 test-amd64-amd64-qemuu-freebsd11-amd64                       pass    
 test-amd64-amd64-qemuu-freebsd12-amd64                       pass    
 test-amd64-amd64-xl-qemuu-ovmf-amd64                         pass    
 test-amd64-i386-xl-qemuu-ovmf-amd64                          pass    
 test-amd64-amd64-xl-qemut-win7-amd64                         fail    
 test-amd64-i386-xl-qemut-win7-amd64                          fail    
 test-amd64-amd64-xl-qemuu-win7-amd64                         fail    
 test-amd64-i386-xl-qemuu-win7-amd64                          fail    
 test-amd64-amd64-xl-qemut-ws16-amd64                         fail    
 test-amd64-i386-xl-qemut-ws16-amd64                          fail    
 test-amd64-amd64-xl-qemuu-ws16-amd64                         fail    
 test-amd64-i386-xl-qemuu-ws16-amd64                          fail    
 test-armhf-armhf-xl-arndale                                  pass    
 test-amd64-amd64-examine-bios                                pass    
 test-amd64-i386-examine-bios                                 pass    
 test-amd64-amd64-xl-credit1                                  pass    
 test-arm64-arm64-xl-credit1                                  pass    
 test-armhf-armhf-xl-credit1                                  fail    
 test-amd64-amd64-xl-credit2                                  pass    
 test-arm64-arm64-xl-credit2                                  pass    
 test-armhf-armhf-xl-credit2                                  fail    
 test-amd64-amd64-xl-qemuu-dmrestrict-amd64-dmrestrict        pass    
 test-amd64-i386-xl-qemuu-dmrestrict-amd64-dmrestrict         pass    
 test-amd64-amd64-examine                                     pass    
 test-arm64-arm64-examine                                     pass    
 test-armhf-armhf-examine                                     pass    
 test-amd64-i386-examine                                      pass    
 test-amd64-i386-freebsd10-i386                               pass    
 test-amd64-amd64-qemuu-nested-intel                          pass    
 test-amd64-amd64-xl-pvhv2-intel                              pass    
 test-amd64-i386-qemut-rhel6hvm-intel                         pass    
 test-amd64-i386-qemuu-rhel6hvm-intel                         pass    
 test-amd64-amd64-dom0pvh-xl-intel                            pass    
 test-amd64-amd64-libvirt                                     pass    
 test-armhf-armhf-libvirt                                     pass    
 test-amd64-i386-libvirt                                      pass    
 test-amd64-amd64-xl-multivcpu                                pass    
 test-armhf-armhf-xl-multivcpu                                fail    
 test-amd64-amd64-pair                                        pass    
 test-amd64-i386-pair                                         pass    
 test-amd64-amd64-libvirt-pair                                pass    
 test-amd64-i386-libvirt-pair                                 pass    
 test-amd64-amd64-xl-pvshim                                   pass    
 test-amd64-i386-xl-pvshim                                    fail    
 test-amd64-amd64-pygrub                                      pass    
 test-armhf-armhf-libvirt-qcow2                               pass    
 test-amd64-amd64-xl-qcow2                                    pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-armhf-armhf-libvirt-raw                                 pass    
 test-amd64-i386-libvirt-raw                                  pass    
 test-amd64-amd64-xl-rtds                                     pass    
 test-armhf-armhf-xl-rtds                                     fail    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64-shadow             pass    
 test-amd64-i386-xl-qemuu-debianhvm-amd64-shadow              pass    
 test-amd64-amd64-xl-shadow                                   pass    
 test-amd64-i386-xl-shadow                                    pass    
 test-arm64-arm64-xl-thunderx                                 pass    
 test-amd64-amd64-examine-uefi                                pass    
 test-amd64-i386-examine-uefi                                 pass    
 test-amd64-amd64-libvirt-vhd                                 pass    
 test-arm64-arm64-xl-vhd                                      pass    
 test-armhf-armhf-xl-vhd                                      fail    
 test-amd64-i386-xl-vhd                                       pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Not pushing.

(No revision log; it would be 5292 lines long.)


From xen-devel-bounces@lists.xenproject.org Mon Jan 29 07:48:44 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 29 Jan 2024 07:48:44 +0000
Received: from list by lists.xenproject.org with outflank-mailman.672895.1046988 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUMNY-0005DU-Nh; Mon, 29 Jan 2024 07:48:28 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 672895.1046988; Mon, 29 Jan 2024 07:48:28 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUMNY-0005DN-K0; Mon, 29 Jan 2024 07:48:28 +0000
Received: by outflank-mailman (input) for mailman id 672895;
 Mon, 29 Jan 2024 07:48:27 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=9RcU=JH=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rUMNX-0005D9-Rk
 for xen-devel@lists.xenproject.org; Mon, 29 Jan 2024 07:48:27 +0000
Received: from mail-lj1-x233.google.com (mail-lj1-x233.google.com
 [2a00:1450:4864:20::233])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id c87c70bb-be7a-11ee-8a43-1f161083a0e0;
 Mon, 29 Jan 2024 08:48:25 +0100 (CET)
Received: by mail-lj1-x233.google.com with SMTP id
 38308e7fff4ca-2cf206e4d56so23569571fa.3
 for <xen-devel@lists.xenproject.org>; Sun, 28 Jan 2024 23:48:25 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 z16-20020a02ceb0000000b0046ef8c433basm1650454jaq.145.2024.01.28.23.48.22
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Sun, 28 Jan 2024 23:48:24 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: c87c70bb-be7a-11ee-8a43-1f161083a0e0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1706514505; x=1707119305; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=AuvcTlncC49aQrYd5Uc7RJWrb/jFlRJ+praUpGlIfZI=;
        b=G7HzNiP0xu6bnTsXJ3sr3eKUmZKEkJEmtICkSb1QjMYw5o7+NHtVczgPEpI6mHMbUq
         QH61MwFrS/NFkjW/jufRjnrq8GsWQ+HNyiJHuMP06UIbwzf4vFWH9HZzDLV3kdW3nghL
         zU/8TKO7t3oWOiyG7XSzuMUSvvzBgkkDGREg+jmbIx0cYc9KkhB/eT6ENVCp6X+dwvqm
         EQjwLMfy+WtpzveM5o5Ix82Lr8GvXMFbwB8FVI/5nkFbtML3Si4V1KPUuWkSOYAyKEeC
         k4m0I5EzfbQfv0dji773rtgX4vpkVLR4t+GFAIgBLbhj3XsxY1npbuCr4XMvrxNX8gYN
         XrSw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706514505; x=1707119305;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=AuvcTlncC49aQrYd5Uc7RJWrb/jFlRJ+praUpGlIfZI=;
        b=A1rTSMymJC5x6eCebwijn8PIFqFQAK09GnUAUsBEjnR1AJBqnZgCcWd1h81qOHV1/+
         yK2uCGgv/DvsJAATMBvV0fR13Pnadina/VoLt9SrGH05HoEpGi4OT/zQoXFmSmoy8q9V
         jEpi4du/AHqAQPkZyMKf4iDWXP6dr1/HXmFM4Z3PRn9jdN0x+AzM87dD0/9xosCSkk3j
         eh+zWHW5sNQ3gorqMgkiywZgbNq+mGftaN5mVMHbwhMRmUEHzbDlUl3NceCoEK7d2FXV
         b7/KbaxNO1oIExngJtybisj5oAmhlx2ml9N5UxwwkSwFV+S0SEl76Og7WfRgmQ2xgNYI
         QW5g==
X-Gm-Message-State: AOJu0YxAsYinkqopbUHnoYi5oz+j1Pq+hLi5wigWIPMJrbPxLjphet3G
	Zrfo08LzxTc8NrIs3yHgr0bmhW8xjjoQ6xhK9NdlJe5kCbJA0vA8Bi6CZdkYRg==
X-Google-Smtp-Source: AGHT+IFIYRM3y0F/tWoYktjk94XHv7ZEmv6oEC7CZkD46ZuQWrqOrhrMiF9ZGEqjP1O1/Og/8u4Spw==
X-Received: by 2002:a2e:9e83:0:b0:2d0:50c4:cafe with SMTP id f3-20020a2e9e83000000b002d050c4cafemr405847ljk.37.1706514504946;
        Sun, 28 Jan 2024 23:48:24 -0800 (PST)
Message-ID: <d348c182-cce7-4f55-bbb5-830056322d65@suse.com>
Date: Mon, 29 Jan 2024 08:48:22 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] xen/lib: introduce generic find next bit operations
Content-Language: en-US
To: Julien Grall <julien@xen.org>, Oleksii <oleksii.kurochko@gmail.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 George Dunlap <george.dunlap@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>,
 Bertrand Marquis <bertrand.marquis@arm.com>,
 Michal Orzel <michal.orzel@amd.com>,
 Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
 Shawn Anastasio <sanastasio@raptorengineering.com>,
 xen-devel@lists.xenproject.org
References: <52730e6314210ba4164a9934a720c4fda201447b.1706266854.git.oleksii.kurochko@gmail.com>
 <f8602dc5-e603-42fc-b3a2-dc71c55db341@xen.org>
 <1104df46d7780ef1bbcb6c745685b10fe6d2aa5d.camel@gmail.com>
 <a5a553cf-fe8c-4934-ac97-bdc59aeaed1c@xen.org>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <a5a553cf-fe8c-4934-ac97-bdc59aeaed1c@xen.org>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 26.01.2024 17:08, Julien Grall wrote:
> On 26/01/2024 15:58, Oleksii wrote:
>> On Fri, 2024-01-26 at 13:20 +0000, Julien Grall wrote:
>>> On 26/01/2024 12:20, Oleksii Kurochko wrote:
>>>> find-next-bit.c is common for Arm64, PPC and RISCV64,
>>>> so it is moved to xen/lib.
>>>>
>>>> Suggested-by: Jan Beulich <jbeulich@suse.com>
>>>> Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>
>>>> ---
>>>>    docs/misra/exclude-list.json                  |   4 -
>>>>    xen/arch/arm/arm64/lib/Makefile               |   2 +-
>>>>    xen/arch/arm/include/asm/arm64/bitops.h       |  48 --------
>>>>    xen/arch/ppc/include/asm/bitops.h             | 115 -------------
>>>> -----
>>>>    xen/include/xen/bitops.h                      |  48 ++++++++
>>>>    xen/lib/Makefile                              |   1 +
>>>>    .../find_next_bit.c => lib/find-next-bit.c}   |   0
>>>>    7 files changed, 50 insertions(+), 168 deletions(-)
>>>>    rename xen/{arch/arm/arm64/lib/find_next_bit.c => lib/find-next-
>>>> bit.c} (100%)
>>>>
>>>> diff --git a/docs/misra/exclude-list.json b/docs/misra/exclude-
>>>> list.json
>>>> index 7971d0e70f..7fe02b059d 100644
>>>> --- a/docs/misra/exclude-list.json
>>>> +++ b/docs/misra/exclude-list.json
>>>> @@ -13,10 +13,6 @@
>>>>                "rel_path": "arch/arm/arm64/insn.c",
>>>>                "comment": "Imported on Linux, ignore for now"
>>>>            },
>>>> -        {
>>>> -            "rel_path": "arch/arm/arm64/lib/find_next_bit.c",
>>>
>>> Rather than removing the section, I was expecting the rel_path to be
>>> updated. Can you explain why you think the exclusion is not
>>> necessary?
>> I considered simply updating the path to xen/lib/find-next-bit.c, but
>> ultimately opted to remove it. This decision was based on the fact that
>> the line in question checks for a file that no longer exists. 
> 
> That's not quite correct. The file still exists but with a different name.
> 
>> If it's
>> preferable to update the rel_path with xen/lib/find-next-bit.c, I'm
>> more than willing to make that adjustment.
> 
> The problem is by removing the file, you effectively tell Eclair to 
> report any MISRA error. I don't believe this is what we want here.
> 
> But if the other agrees with you, then this change ought to be explained 
> in the commit message.

Imo it can only be removed (rather than updated) if the reason for adding
has meanwhile gone away. I don't think that's the case, though.

> To me the key is the commit message should contain enough information 
> for the reviewer to understand what/why you are doing. All the changes I 
> pointed out are definitely not just a normal code movement.
>>
>>>
>>>> -            "comment": "Imported from Linux, ignore for now"
>>>> -        },
>>>>            {
>>>>                "rel_path": "arch/x86/acpi/boot.c",
>>>>                "comment": "Imported from Linux, ignore for now"
>>>> diff --git a/xen/arch/arm/arm64/lib/Makefile
>>>> b/xen/arch/arm/arm64/lib/Makefile
>>>> index 1b9c7a95e6..66cfac435a 100644
>>>> --- a/xen/arch/arm/arm64/lib/Makefile
>>>> +++ b/xen/arch/arm/arm64/lib/Makefile
>>>> @@ -1,4 +1,4 @@
>>>>    obj-y += memcpy.o memcmp.o memmove.o memset.o memchr.o
>>>>    obj-y += clear_page.o
>>>> -obj-y += bitops.o find_next_bit.o
>>>> +obj-y += bitops.o
>>>>    obj-y += strchr.o strcmp.o strlen.o strncmp.o strnlen.o strrchr.o
>>>> diff --git a/xen/arch/arm/include/asm/arm64/bitops.h
>>>> b/xen/arch/arm/include/asm/arm64/bitops.h
>>>> index d85a49bca4..f9dd066237 100644
>>>> --- a/xen/arch/arm/include/asm/arm64/bitops.h
>>>> +++ b/xen/arch/arm/include/asm/arm64/bitops.h
>>>> @@ -36,57 +36,9 @@ static inline int flsl(unsigned long x)
>>>>    
>>>>    /* Based on linux/include/asm-generic/bitops/find.h */
>>>>    
>>>> -#ifndef find_next_bit
>>>> -/**
>>>> - * find_next_bit - find the next set bit in a memory region
>>>> - * @addr: The address to base the search on
>>>> - * @offset: The bitnumber to start searching at
>>>> - * @size: The bitmap size in bits
>>>> - */
>>>> -extern unsigned long find_next_bit(const unsigned long *addr,
>>>> unsigned long
>>>> -		size, unsigned long offset);
>>>> -#endif
>>>> -
>>>> -#ifndef find_next_zero_bit
>>>> -/**
>>>> - * find_next_zero_bit - find the next cleared bit in a memory
>>>> region
>>>> - * @addr: The address to base the search on
>>>> - * @offset: The bitnumber to start searching at
>>>> - * @size: The bitmap size in bits
>>>> - */
>>>> -extern unsigned long find_next_zero_bit(const unsigned long *addr,
>>>> unsigned
>>>> -		long size, unsigned long offset);
>>>> -#endif
>>>> -
>>>> -#ifdef CONFIG_GENERIC_FIND_FIRST_BIT
>>>> -
>>>> -/**
>>>> - * find_first_bit - find the first set bit in a memory region
>>>> - * @addr: The address to start the search at
>>>> - * @size: The maximum size to search
>>>> - *
>>>> - * Returns the bit number of the first set bit.
>>>> - */
>>>> -extern unsigned long find_first_bit(const unsigned long *addr,
>>>> -				    unsigned long size);
>>>> -
>>>> -/**
>>>> - * find_first_zero_bit - find the first cleared bit in a memory
>>>> region
>>>> - * @addr: The address to start the search at
>>>> - * @size: The maximum size to search
>>>> - *
>>>> - * Returns the bit number of the first cleared bit.
>>>> - */
>>>> -extern unsigned long find_first_zero_bit(const unsigned long
>>>> *addr,
>>>> -					 unsigned long size);
>>>> -#else /* CONFIG_GENERIC_FIND_FIRST_BIT */
>>>> -
>>>>    #define find_first_bit(addr, size) find_next_bit((addr), (size),
>>>> 0)
>>>>    #define find_first_zero_bit(addr, size)
>>>> find_next_zero_bit((addr), (size), 0)
>>>>    
>>>> -#endif /* CONFIG_GENERIC_FIND_FIRST_BIT */
>>>
>>> AFAICT, you are changing the behavior for Arm64 without explaining
>>> why.
>>> Before, it was possible to set CONFIG_GENERIC_FIND_FIRST_BIT so the
>>> generic version of find_first_*_bit are used. This is not possible
>>> anymore with your change.
>>>
>>> Looking at Linux, I see that arm64 is now selecting
>>> GENERIC_FIND_FIRST_BIT (see [1]). So I would argue, we should not
>>> define
>>> find_first_bit(). That said, that's probably a separate patch.
>>>
>>> For now, you want to explain why GENERIC_FIND_FIRST_BIT is dropped.
>> I chose to remove it because I couldn't find any usage or configuration
>> setting for this in Xen (Arm).
> 
> Right. My point is the commit message can lead to think this is a simple 
> code movement and there are no change of behavior.
> 
> It wasn't clear to me whether this was done on purpose or not. It looks 
> like it was and therefore should really be explained in the commit message.
> 
>>
>> I can add "#ifdef GENERIC_FIND_FIRST_BIT" around find_first_zero_bit()
>> and find_first_bit() in xen/bitops.h, and according to the link [1], it
>> should be wrapped with ifdef. Perhaps it would be better to use "#if
>> defined(GENERIC_FIND_FIRST_BIT) && defined(CONFIG_ARM_64)".
>>
>> My only concern is that it might seem somewhat inconsistent with the
>> other find_*_bit() functions added in this patch. Should we be care
>> about that? I mean that do we need similar config or it would be enough
>> to add a comment why it is necessary to have ifdef
>> GENERIC_FIND_FIRST_BIT.
> 
> Note that I didn't ask to keep GENERIC_FIND_FIRST_BIT. I actually 
> pointed out that it can be removed but it should be explained in the 
> commit message.

+1

And, Oleksii, this isn't the first time that it is being pointed out to
you that commit messages need to contain enough information to justify
changes made.

Jan


From xen-devel-bounces@lists.xenproject.org Mon Jan 29 08:28:41 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 29 Jan 2024 08:28:41 +0000
Received: from list by lists.xenproject.org with outflank-mailman.672905.1046998 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUN0M-0002Fy-7q; Mon, 29 Jan 2024 08:28:34 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 672905.1046998; Mon, 29 Jan 2024 08:28:34 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUN0M-0002Fr-59; Mon, 29 Jan 2024 08:28:34 +0000
Received: by outflank-mailman (input) for mailman id 672905;
 Mon, 29 Jan 2024 08:28:32 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=9RcU=JH=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rUN0K-0002Fl-L4
 for xen-devel@lists.xenproject.org; Mon, 29 Jan 2024 08:28:32 +0000
Received: from mail-lj1-x22d.google.com (mail-lj1-x22d.google.com
 [2a00:1450:4864:20::22d])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 6266bd93-be80-11ee-8a43-1f161083a0e0;
 Mon, 29 Jan 2024 09:28:31 +0100 (CET)
Received: by mail-lj1-x22d.google.com with SMTP id
 38308e7fff4ca-2cf4a845a76so30613271fa.3
 for <xen-devel@lists.xenproject.org>; Mon, 29 Jan 2024 00:28:31 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 p24-20020a6bce18000000b007bf78513320sm1962250iob.1.2024.01.29.00.28.27
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 29 Jan 2024 00:28:30 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 6266bd93-be80-11ee-8a43-1f161083a0e0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1706516910; x=1707121710; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=qaZ2tcGSaX7VCpnRnCnK1mvXI78HkGLzoJX4dQ4dMZA=;
        b=BcZcyhUBeDQO/GzIooFH/PxJx58tPYMoBu3IRGqShltUhv7qpqIuhDadhYCVKW6i2m
         xk6uKGlkGMoQkx/FnB29B8INegL3BPJHjLl8sCVdryKAYko9EgjdRNvFdQiDAcbKDsXY
         qViGUc3BrLoYX8s6Oz5A3+hBZuL62pQOZ52TNrKaP+OGCii+TUq3V1AoCUtUrNjBjhzH
         nrd2bX7FNTxi8w2TEIcX9mYOOUO35G34kDliyXDQskShPyxjPFStwbFPiFJGuetgpekP
         Z03uaode8smLXePmKK7b2g/zi1MilOk4sJMKRfcRVchaSJvg0TRGAT9wK+o1wLJPLMGQ
         K6MQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706516910; x=1707121710;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=qaZ2tcGSaX7VCpnRnCnK1mvXI78HkGLzoJX4dQ4dMZA=;
        b=Fl5WBIrJ1cEot0DkabxEZn48bypgaQXyd/TbFZ7kp01KvCXAP6hdrPCXOpQKX/M/xs
         HKhrmt2mtM43QMWN886nln1IMl0ROhxVfPxzhjNQHEOx68aVi6kUXhDaInPDepTpEya/
         ysJD2dKCxzKXu4PHAZTapM2pSRoy0vipv40piphEczQYuK8AebM3UaPQxekBgEpuO+fh
         ++epbZrpFA+myQm/IfaBk7MgL08wMdxRS+T0J7ikIjSyBhVVAvUL1eEoEAYJjM3SDQNN
         4nBGh+xzA4g3850lnVBiW3LEI14hkn9QUyOsbmoyXcchnuDxX1vdTvJ8HMl8/CvNDH4J
         1PQg==
X-Gm-Message-State: AOJu0Yyea+UkvVxMWJ2XY+Sk75Ex7k0SbNqKciukY9s9Vkc9O/hx9paU
	TBcd17yMTGI8dZ7LU95faUB9zyizSF87cfxGdYjsia8KT9J084570YfLJGphyg==
X-Google-Smtp-Source: AGHT+IHUDjym+ewyAmVN7LZNSqI8e+elbMQBD9dvDNgGPIz10SiCJB/Ma5H/yoG1V/bk5Y6JCzeNNg==
X-Received: by 2002:a2e:a405:0:b0:2cf:1535:9307 with SMTP id p5-20020a2ea405000000b002cf15359307mr3136807ljn.52.1706516910633;
        Mon, 29 Jan 2024 00:28:30 -0800 (PST)
Message-ID: <04d113bf-71ab-4eba-a95f-72318c888d1f@suse.com>
Date: Mon, 29 Jan 2024 09:28:27 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2 (resend) 00/27] Remove the directmap
Content-Language: en-US
To: Elias El Yandouzi <eliasely@amazon.com>
Cc: julien@xen.org, pdurrant@amazon.com, dwmw@amazon.com,
 Andrew Cooper <andrew.cooper3@citrix.com>,
 George Dunlap <george.dunlap@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>,
 Bertrand Marquis <bertrand.marquis@arm.com>,
 Michal Orzel <michal.orzel@amd.com>,
 Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Lukasz Hawrylko <lukasz@hawrylko.pl>,
 "Daniel P. Smith" <dpsmith@apertussolutions.com>,
 =?UTF-8?Q?Mateusz_M=C3=B3wka?= <mateusz.mowka@intel.com>,
 xen-devel@lists.xenproject.org
References: <20240116192611.41112-1-eliasely@amazon.com>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <20240116192611.41112-1-eliasely@amazon.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 16.01.2024 20:25, Elias El Yandouzi wrote:
> Elias El Yandouzi (3):
>   xen/x86: Add build assertion for fixmap entries
>   Rename mfn_to_virt() calls
>   Rename maddr_to_virt() calls
> 
> Hongyan Xia (13):
>   acpi: vmap pages in acpi_os_alloc_memory
>   xen/numa: vmap the pages for memnodemap
>   x86/srat: vmap the pages for acpi_slit
>   x86: Map/unmap pages in restore_all_guests
>   x86/pv: Rewrite how building PV dom0 handles domheap mappings
>   x86/pv: Map L4 page table for shim domain
>   x86/mapcache: Initialise the mapcache for the idle domain
>   x86: Add a boot option to enable and disable the direct map
>   x86/domain_page: Remove the fast paths when mfn is not in the
>     directmap
>   xen/page_alloc: Add a path for xenheap when there is no direct map
>   x86/setup: Leave early boot slightly earlier
>   x86/setup: vmap heap nodes when they are outside the direct map
>   x86/setup: Do not create valid mappings when directmap=no
> 
> Julien Grall (8):
>   xen/vmap: Check the page has been mapped in vm_init_type()
>   xen/vmap: Introduce vmap_size() and use it
>   xen/arm: fixmap: Rename the fixmap slots to follow the x86 convention

Btw, if there was clear indication that e.g. this patch (fully ack-ed
afaict) can go in ahead of earlier patches, I probably would have put
it in already. Considering it sits half way through the series, I don't
want to blindly chance it, though.

Jan

>   xen/x86: Add support for the PMAP
>   xen/arm32: mm: Rename 'first' to 'root' in init_secondary_pagetables()
>   xen/arm64: mm: Use per-pCPU page-tables
>   xen/arm64: Implement a mapcache for arm64
>   xen/arm64: Allow the admin to enable/disable the directmap
> 
> Wei Liu (3):
>   x86/setup: Move vm_init() before acpi calls
>   x86/pv: Domheap pages should be mapped while relocating initrd
>   x86: Lift mapcache variable to the arch level



From xen-devel-bounces@lists.xenproject.org Mon Jan 29 11:09:17 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 29 Jan 2024 11:09:17 +0000
Received: from list by lists.xenproject.org with outflank-mailman.672913.1047008 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUPVb-0003Z9-BB; Mon, 29 Jan 2024 11:08:59 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 672913.1047008; Mon, 29 Jan 2024 11:08:59 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUPVb-0003Z1-6c; Mon, 29 Jan 2024 11:08:59 +0000
Received: by outflank-mailman (input) for mailman id 672913;
 Mon, 29 Jan 2024 11:08:57 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=XNHd=JH=gmail.com=oleksii.kurochko@srs-se1.protection.inumbo.net>)
 id 1rUPVZ-0003Yv-8Y
 for xen-devel@lists.xenproject.org; Mon, 29 Jan 2024 11:08:57 +0000
Received: from mail-lf1-x131.google.com (mail-lf1-x131.google.com
 [2a00:1450:4864:20::131])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id a8aa45f8-be96-11ee-8a43-1f161083a0e0;
 Mon, 29 Jan 2024 12:07:58 +0100 (CET)
Received: by mail-lf1-x131.google.com with SMTP id
 2adb3069b0e04-5102e2ab56eso1696254e87.2
 for <xen-devel@lists.xenproject.org>; Mon, 29 Jan 2024 03:07:57 -0800 (PST)
Received: from [192.168.206.239] ([94.75.70.14])
 by smtp.gmail.com with ESMTPSA id
 g14-20020a19ee0e000000b005110e5a3724sm412328lfb.67.2024.01.29.03.07.55
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 29 Jan 2024 03:07:56 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: a8aa45f8-be96-11ee-8a43-1f161083a0e0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1706526477; x=1707131277; darn=lists.xenproject.org;
        h=mime-version:user-agent:content-transfer-encoding:references
         :in-reply-to:date:cc:to:from:subject:message-id:from:to:cc:subject
         :date:message-id:reply-to;
        bh=6K4wLsQGuNpI3+vcfAR8ge4acxppjZAmqAMS4zBTgH4=;
        b=c7yIOSgHiOdopiUwKnf0hK5Pcv9Xo5ycZzhqjw2fzb8d92iCgY4YeBXW9l3liCJKlG
         O/H+iBIvzVjRsF5lBSSWFQn3VzwrxhV4mlqokSGKuhECwoJPTqQZNXAkkTYUxbYjCwIY
         CQ1svn0QJvK6RA/ht97UY5/yXIG08Hd761Cv8OlKQJHGTIIjo9+6QzKi84u5u37oLzgM
         LB+e4lCvRsyADoew5L8TAvYtHuwJvV6zv7/R55j1sINw7PAyIbXkPvEd6U1rVMz94K4L
         Sk8A8t+mZEwmROTwxmMTGrPvMRyuy4p7nEfqNRI4LKWCBaU50Np0gBXemXlPVXQm1bsD
         T2vg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706526477; x=1707131277;
        h=mime-version:user-agent:content-transfer-encoding:references
         :in-reply-to:date:cc:to:from:subject:message-id:x-gm-message-state
         :from:to:cc:subject:date:message-id:reply-to;
        bh=6K4wLsQGuNpI3+vcfAR8ge4acxppjZAmqAMS4zBTgH4=;
        b=i9uZCU+DwBuwZFl8VOFggTtwL5g/P6vFsJYCOjB3oGEuL3RcXJI4wLtKrIcIMN5JOG
         duo6/U8ehec7PoqCK4EbCozdRQG6su1PVTFSsd+eBsPbeOMnYyAWL0fF6mXDKGLQUDde
         QAHn+ghQAu2unIaNp/+iHIi8NGTvX+alk3Jp+oiBzY6bSrtOwl9/lfrGdmk22r7naEpN
         YJb2WxmM+StR3WHpW2u8CyuBQfBHOr1LZ8JlmUufnTWpIPYQt3SCOqPdidtWwyf7wSXB
         Icj06Nuf3gMMUx6vKVkCHrQm2I0Hs2+wbotg6f4h/bQuXKj8yvNyGkeRJAD7ksYs2xbj
         RGXg==
X-Gm-Message-State: AOJu0YzTgT+bjHCK/UIhrLBEv/0I5HiYpEGz5IqkgeZxgeI0RdcLiJZ0
	HL4pawCSgocVZCmVG1C3W3bVBCJCBo65riECBGObfwonSRsqpPzU
X-Google-Smtp-Source: AGHT+IEnAc40IxuvuFJdue/TDryAQOBa0KkjXdCBsZ3bQYngZkFuA1F5dIZksQcsMsBZJi4PKFiG5Q==
X-Received: by 2002:ac2:5b03:0:b0:510:253f:32db with SMTP id v3-20020ac25b03000000b00510253f32dbmr3649546lfn.45.1706526477167;
        Mon, 29 Jan 2024 03:07:57 -0800 (PST)
Message-ID: <e165048a82b55ce0beb9ea171202bfc6167334bc.camel@gmail.com>
Subject: Re: [PATCH] xen/lib: introduce generic find next bit operations
From: Oleksii <oleksii.kurochko@gmail.com>
To: Julien Grall <julien@xen.org>, xen-devel@lists.xenproject.org
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, George Dunlap
 <george.dunlap@citrix.com>, Jan Beulich <jbeulich@suse.com>, Stefano
 Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>, Bertrand Marquis
 <bertrand.marquis@arm.com>, Michal Orzel <michal.orzel@amd.com>, Volodymyr
 Babchuk <Volodymyr_Babchuk@epam.com>, Shawn Anastasio
 <sanastasio@raptorengineering.com>
Date: Mon, 29 Jan 2024 13:07:54 +0200
In-Reply-To: <a5a553cf-fe8c-4934-ac97-bdc59aeaed1c@xen.org>
References: 
	<52730e6314210ba4164a9934a720c4fda201447b.1706266854.git.oleksii.kurochko@gmail.com>
	 <f8602dc5-e603-42fc-b3a2-dc71c55db341@xen.org>
	 <1104df46d7780ef1bbcb6c745685b10fe6d2aa5d.camel@gmail.com>
	 <a5a553cf-fe8c-4934-ac97-bdc59aeaed1c@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
User-Agent: Evolution 3.50.2 (3.50.2-1.fc39) 
MIME-Version: 1.0

Hi Julien,

> >=20
> > >=20
> > > On 26/01/2024 12:20, Oleksii Kurochko wrote:
> > > > find-next-bit.c is common for Arm64, PPC and RISCV64,
> > > > so it is moved to xen/lib.
> > > >=20
> > > > Suggested-by: Jan Beulich <jbeulich@suse.com>
> > > > Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>
> > > > ---
> > > > =C2=A0=C2=A0 docs/misra/exclude-list.json=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0 |=C2=A0=C2=A0 4 -
> > > > =C2=A0=C2=A0 xen/arch/arm/arm64/lib/Makefile=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 |=C2=A0=C2=
=A0 2 +-
> > > > =C2=A0=C2=A0 xen/arch/arm/include/asm/arm64/bitops.h=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0 |=C2=A0 48 --------
> > > > =C2=A0=C2=A0 xen/arch/ppc/include/asm/bitops.h=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 | 115 --------
> > > > -----
> > > > -----
> > > > =C2=A0=C2=A0 xen/include/xen/bitops.h=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0 |=C2=A0 48 ++++++++
> > > > =C2=A0=C2=A0 xen/lib/Makefile=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 |=C2=A0=C2=
=A0 1 +
> > > > =C2=A0=C2=A0 .../find_next_bit.c =3D> lib/find-next-bit.c}=C2=A0=C2=
=A0 |=C2=A0=C2=A0 0
> > > > =C2=A0=C2=A0 7 files changed, 50 insertions(+), 168 deletions(-)
> > > > =C2=A0=C2=A0 rename xen/{arch/arm/arm64/lib/find_next_bit.c =3D> li=
b/find-
> > > > next-
> > > > bit.c} (100%)
> > > >=20
> > > > diff --git a/docs/misra/exclude-list.json b/docs/misra/exclude-
> > > > list.json
> > > > index 7971d0e70f..7fe02b059d 100644
> > > > --- a/docs/misra/exclude-list.json
> > > > +++ b/docs/misra/exclude-list.json
> > > > @@ -13,10 +13,6 @@
> > > > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0 "rel_path": "arch/arm/arm64/insn.c",
> > > > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0 "comment": "Imported on Linux, ignore for now"
> > > > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 },
> > > > -=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 {
> > > > -=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
 "rel_path": "arch/arm/arm64/lib/find_next_bit.c",
> > >=20
> > > Rather than removing the section, I was expecting the rel_path to
> > > be
> > > updated. Can you explain why you think the exclusion is not
> > > necessary?
> > I considered simply updating the path to xen/lib/find-next-bit.c,
> > but
> > ultimately opted to remove it. This decision was based on the fact
> > that
> > the line in question checks for a file that no longer exists.=20
>=20
> That's not quite correct. The file still exists but with a different
> name.
>=20
> > If it's
> > preferable to update the rel_path with xen/lib/find-next-bit.c, I'm
> > more than willing to make that adjustment.
>=20
> The problem is by removing the file, you effectively tell Eclair to=20
> report any MISRA error. I don't believe this is what we want here.
I don't know how it should work, but when I ran CI's cppcheck and
Eclair jobs nothing were broken:
https://gitlab.com/xen-project/people/olkur/xen/-/pipelines/1153360853

>=20
> But if the other agrees with you, then this change ought to be
> explained=20
> in the commit message.
>=20
> To me the key is the commit message should contain enough information
> for the reviewer to understand what/why you are doing. All the
> changes I=20
> pointed out are definitely not just a normal code movement.
I understand your point, I'll do my best next time.=20

> >=20
> > >=20
> > > > -=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
 "comment": "Imported from Linux, ignore for now"
> > > > -=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 },
> > > > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 {
> > > > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0 "rel_path": "arch/x86/acpi/boot.c",
> > > > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
=C2=A0=C2=A0=C2=A0 "comment": "Imported from Linux, ignore for now"
> > > > diff --git a/xen/arch/arm/arm64/lib/Makefile
> > > > b/xen/arch/arm/arm64/lib/Makefile
> > > > index 1b9c7a95e6..66cfac435a 100644
> > > > --- a/xen/arch/arm/arm64/lib/Makefile
> > > > +++ b/xen/arch/arm/arm64/lib/Makefile
> > > > @@ -1,4 +1,4 @@
> > > > =C2=A0=C2=A0 obj-y +=3D memcpy.o memcmp.o memmove.o memset.o memchr=
.o
> > > > =C2=A0=C2=A0 obj-y +=3D clear_page.o
> > > > -obj-y +=3D bitops.o find_next_bit.o
> > > > +obj-y +=3D bitops.o
> > > > =C2=A0=C2=A0 obj-y +=3D strchr.o strcmp.o strlen.o strncmp.o strnle=
n.o
> > > > strrchr.o
> > > > diff --git a/xen/arch/arm/include/asm/arm64/bitops.h
> > > > b/xen/arch/arm/include/asm/arm64/bitops.h
> > > > index d85a49bca4..f9dd066237 100644
> > > > --- a/xen/arch/arm/include/asm/arm64/bitops.h
> > > > +++ b/xen/arch/arm/include/asm/arm64/bitops.h
> > > > @@ -36,57 +36,9 @@ static inline int flsl(unsigned long x)
> > > > =C2=A0=C2=A0=20
> > > > =C2=A0=C2=A0 /* Based on linux/include/asm-generic/bitops/find.h */
> > > > =C2=A0=C2=A0=20
> > > > -#ifndef find_next_bit
> > > > -/**
> > > > - * find_next_bit - find the next set bit in a memory region
> > > > - * @addr: The address to base the search on
> > > > - * @offset: The bitnumber to start searching at
> > > > - * @size: The bitmap size in bits
> > > > - */
> > > > -extern unsigned long find_next_bit(const unsigned long *addr,
> > > > unsigned long
> > > > -		size, unsigned long offset);
> > > > -#endif
> > > > -
> > > > -#ifndef find_next_zero_bit
> > > > -/**
> > > > - * find_next_zero_bit - find the next cleared bit in a memory
> > > > region
> > > > - * @addr: The address to base the search on
> > > > - * @offset: The bitnumber to start searching at
> > > > - * @size: The bitmap size in bits
> > > > - */
> > > > -extern unsigned long find_next_zero_bit(const unsigned long
> > > > *addr,
> > > > unsigned
> > > > -		long size, unsigned long offset);
> > > > -#endif
> > > > -
> > > > -#ifdef CONFIG_GENERIC_FIND_FIRST_BIT
> > > > -
> > > > -/**
> > > > - * find_first_bit - find the first set bit in a memory region
> > > > - * @addr: The address to start the search at
> > > > - * @size: The maximum size to search
> > > > - *
> > > > - * Returns the bit number of the first set bit.
> > > > - */
> > > > -extern unsigned long find_first_bit(const unsigned long *addr,
> > > > -				=C2=A0=C2=A0=C2=A0 unsigned long size);
> > > > -
> > > > -/**
> > > > - * find_first_zero_bit - find the first cleared bit in a
> > > > memory
> > > > region
> > > > - * @addr: The address to start the search at
> > > > - * @size: The maximum size to search
> > > > - *
> > > > - * Returns the bit number of the first cleared bit.
> > > > - */
> > > > -extern unsigned long find_first_zero_bit(const unsigned long
> > > > *addr,
> > > > -					 unsigned long size);
> > > > -#else /* CONFIG_GENERIC_FIND_FIRST_BIT */
> > > > -
> > > > =C2=A0=C2=A0 #define find_first_bit(addr, size) find_next_bit((addr=
),
> > > > (size),
> > > > 0)
> > > > =C2=A0=C2=A0 #define find_first_zero_bit(addr, size)
> > > > find_next_zero_bit((addr), (size), 0)
> > > > =C2=A0=C2=A0=20
> > > > -#endif /* CONFIG_GENERIC_FIND_FIRST_BIT */
> > >=20
> > > AFAICT, you are changing the behavior for Arm64 without
> > > explaining
> > > why.
> > > Before, it was possible to set CONFIG_GENERIC_FIND_FIRST_BIT so
> > > the
> > > generic version of find_first_*_bit are used. This is not
> > > possible
> > > anymore with your change.
> > >=20
> > > Looking at Linux, I see that arm64 is now selecting
> > > GENERIC_FIND_FIRST_BIT (see [1]). So I would argue, we should not
> > > define
> > > find_first_bit(). That said, that's probably a separate patch.
> > >=20
> > > For now, you want to explain why GENERIC_FIND_FIRST_BIT is
> > > dropped.
> > I chose to remove it because I couldn't find any usage or
> > configuration
> > setting for this in Xen (Arm).
>=20
> Right. My point is the commit message can lead to think this is a
> simple=20
> code movement and there are no change of behavior.
>=20
> It wasn't clear to me whether this was done on purpose or not. It
> looks=20
> like it was and therefore should really be explained in the commit
> message.
Next time I'll add the explanation to the commit message to make it
more clear.

>=20
> >=20
> > I can add "#ifdef GENERIC_FIND_FIRST_BIT" around
> > find_first_zero_bit()
> > and find_first_bit() in xen/bitops.h, and according to the link
> > [1], it
> > should be wrapped with ifdef. Perhaps it would be better to use
> > "#if
> > defined(GENERIC_FIND_FIRST_BIT) && defined(CONFIG_ARM_64)".
> >=20
> > My only concern is that it might seem somewhat inconsistent with
> > the
> > other find_*_bit() functions added in this patch. Should we be care
> > about that? I mean that do we need similar config or it would be
> > enough
> > to add a comment why it is necessary to have ifdef
> > GENERIC_FIND_FIRST_BIT.
>=20
> Note that I didn't ask to keep GENERIC_FIND_FIRST_BIT. I actually=20
> pointed out that it can be removed but it should be explained in the=20
> commit message.
GENERIC_FIND_FIRST_BIT config was removed in Linux kernel too as all
architectures were switched to use find_{first,last}_bit()
unconditionally:
https://lore.kernel.org/linux-arch/20211005054059.475634-5-yury.norov@gmail=
.com/

This is not the case of Xen, as some, at least, x86 has arch specific
implementation of find_{first,last}_bit(), but it can be another one
justification why this config can be removed in Xen.

~ Oleksii


From xen-devel-bounces@lists.xenproject.org Mon Jan 29 11:43:53 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 29 Jan 2024 11:43:53 +0000
Received: from list by lists.xenproject.org with outflank-mailman.672918.1047018 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUQ3G-0008Tv-To; Mon, 29 Jan 2024 11:43:46 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 672918.1047018; Mon, 29 Jan 2024 11:43:46 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUQ3G-0008To-PK; Mon, 29 Jan 2024 11:43:46 +0000
Received: by outflank-mailman (input) for mailman id 672918;
 Mon, 29 Jan 2024 11:43:46 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rUQ3F-0008Te-VV; Mon, 29 Jan 2024 11:43:45 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rUQ3F-0008ED-RI; Mon, 29 Jan 2024 11:43:45 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rUQ3F-0002Kz-CL; Mon, 29 Jan 2024 11:43:45 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rUQ3F-0003Xl-Bp; Mon, 29 Jan 2024 11:43:45 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=GRGK6MqWPV8GZP7/M7zYFlIGpm+R5WPa1mZtMNjTqWo=; b=pYV5QRmD0+WNdbFrRppS/k7hml
	kSXwY8iQNMzXNFJsqbQtGxaaOfPNdtLVprEFSDYOmclDoz7l1QBjpnv27NnPsi8iNTpTd6gC/phdT
	c1XZHzkgUMbD/EdjHIim6aBVMtSQgTtzEFaaL24qplNtSkcrut5Ayv/U593fZ68WPBAQ=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184512-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [xen-unstable-smoke test] 184512: tolerable all pass - PUSHED
X-Osstest-Failures:
    xen-unstable-smoke:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    xen-unstable-smoke:test-arm64-arm64-xl-xsm:migrate-support-check:fail:nonblocking
    xen-unstable-smoke:test-arm64-arm64-xl-xsm:saverestore-support-check:fail:nonblocking
    xen-unstable-smoke:test-armhf-armhf-xl:migrate-support-check:fail:nonblocking
    xen-unstable-smoke:test-armhf-armhf-xl:saverestore-support-check:fail:nonblocking
X-Osstest-Versions-This:
    xen=40a74677023a5eb20d7bbc09def37884f80919bd
X-Osstest-Versions-That:
    xen=c378ff8983cd69786c35117e49640f027e581bca
From: osstest service owner <osstest-admin@xenproject.org>
Date: Mon, 29 Jan 2024 11:43:45 +0000

flight 184512 xen-unstable-smoke real [real]
http://logs.test-lab.xenproject.org/osstest/logs/184512/

Failures :-/ but no regressions.

Tests which did not succeed, but are not blocking:
 test-amd64-amd64-libvirt     15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-xsm      15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-xsm      16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl          15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          16 saverestore-support-check    fail   never pass

version targeted for testing:
 xen                  40a74677023a5eb20d7bbc09def37884f80919bd
baseline version:
 xen                  c378ff8983cd69786c35117e49640f027e581bca

Last test of basis   184481  2024-01-26 20:02:04 Z    2 days
Testing same since   184512  2024-01-29 09:02:10 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Andrew Cooper <andrew.cooper3@citrix.com>
  Elias El Yandouzi <eliasely@amazon.com>
  Jan Beulich <jbeulich@suse.com>
  Julien Grall <jgrall@amazon.com>
  Oleksii Kurochko <oleksii.kurochko@gmail.com>
  Shawn Anastasio <sanastasio@raptorengineering.com>

jobs:
 build-arm64-xsm                                              pass    
 build-amd64                                                  pass    
 build-armhf                                                  pass    
 build-amd64-libvirt                                          pass    
 test-armhf-armhf-xl                                          pass    
 test-arm64-arm64-xl-xsm                                      pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64                    pass    
 test-amd64-amd64-libvirt                                     pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Pushing revision :

To xenbits.xen.org:/home/xen/git/xen.git
   c378ff8983..40a7467702  40a74677023a5eb20d7bbc09def37884f80919bd -> smoke


From xen-devel-bounces@lists.xenproject.org Mon Jan 29 12:51:16 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 29 Jan 2024 12:51:16 +0000
Received: from list by lists.xenproject.org with outflank-mailman.672934.1047027 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUR6K-0008EG-Vg; Mon, 29 Jan 2024 12:51:00 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 672934.1047027; Mon, 29 Jan 2024 12:51:00 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUR6K-0008E9-Sq; Mon, 29 Jan 2024 12:51:00 +0000
Received: by outflank-mailman (input) for mailman id 672934;
 Mon, 29 Jan 2024 12:50:59 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rUR6J-0008Dz-Rv; Mon, 29 Jan 2024 12:50:59 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rUR6J-00013e-Il; Mon, 29 Jan 2024 12:50:59 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rUR6J-00043U-3o; Mon, 29 Jan 2024 12:50:59 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rUR6J-0005xG-3G; Mon, 29 Jan 2024 12:50:59 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=/aASIRkPD7sNJsaSt+JjRkbmLbBv5Rh2jynhgWDd/TI=; b=s9rPS4AXKRVjFlucdlYy9a1dbe
	WQjkWwsFpOuZtUTEnHHGTBycbQhqay/wjbguuNU7rEoeE2yw44NqCspoNpq+Ytm8i+J6Rz1NySEJN
	kcaKIjD7LlIv0WCKTK0Rj60sFHu9Evt9YsPhEhQeX4hvvwOZhXVWHJvvbMjr7OJFI5JY=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184508-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [linux-linus test] 184508: tolerable FAIL - PUSHED
X-Osstest-Failures:
    linux-linus:test-armhf-armhf-xl-vhd:xen-boot:fail:heisenbug
    linux-linus:test-armhf-armhf-xl-vhd:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-vhd:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    linux-linus:test-amd64-amd64-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    linux-linus:test-amd64-amd64-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-qcow2:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-raw:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    linux-linus:test-amd64-amd64-qemuu-nested-amd:debian-hvm-install/l1/l2:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-xsm:migrate-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-thunderx:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-thunderx:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-credit2:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-credit2:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-libvirt-xsm:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-libvirt-xsm:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-credit1:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-xsm:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-credit1:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-xsm:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-arndale:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-arndale:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-rtds:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-rtds:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-multivcpu:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-multivcpu:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-qcow2:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-libvirt-raw:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-vhd:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-vhd:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-qcow2:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit1:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit1:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit2:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit2:saverestore-support-check:fail:nonblocking
X-Osstest-Versions-This:
    linux=3eb5ca857d38ae7a694de6e59a3de7990af87919
X-Osstest-Versions-That:
    linux=8a696a29c6905594e4abf78eaafcb62165ac61f1
From: osstest service owner <osstest-admin@xenproject.org>
Date: Mon, 29 Jan 2024 12:50:59 +0000

flight 184508 linux-linus real [real]
flight 184514 linux-linus real-retest [real]
http://logs.test-lab.xenproject.org/osstest/logs/184508/
http://logs.test-lab.xenproject.org/osstest/logs/184514/

Failures :-/ but no regressions.

Tests which are failing intermittently (not blocking):
 test-armhf-armhf-xl-vhd       8 xen-boot            fail pass in 184514-retest

Tests which did not succeed, but are not blocking:
 test-armhf-armhf-xl-vhd     14 migrate-support-check fail in 184514 never pass
 test-armhf-armhf-xl-vhd 15 saverestore-support-check fail in 184514 never pass
 test-amd64-amd64-xl-qemut-win7-amd64 19 guest-stop            fail like 184506
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 184506
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 184506
 test-armhf-armhf-libvirt-qcow2 15 saverestore-support-check   fail like 184506
 test-armhf-armhf-libvirt-raw 15 saverestore-support-check    fail  like 184506
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 184506
 test-amd64-amd64-xl-qemut-ws16-amd64 19 guest-stop            fail like 184506
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 184506
 test-amd64-amd64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt     15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl          15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl          16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-thunderx 15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-thunderx 16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-credit2  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit2  16 saverestore-support-check    fail   never pass
 test-arm64-arm64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-xsm 16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-credit1  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-xsm      15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit1  16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-xsm      16 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-armhf-armhf-xl-arndale  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-arndale  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-rtds     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-rtds     16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-multivcpu 15 migrate-support-check        fail  never pass
 test-armhf-armhf-xl-multivcpu 16 saverestore-support-check    fail  never pass
 test-amd64-amd64-libvirt-qcow2 14 migrate-support-check        fail never pass
 test-arm64-arm64-libvirt-raw 14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 15 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-raw 14 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-vhd      14 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-vhd      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-qcow2 14 migrate-support-check        fail never pass
 test-armhf-armhf-libvirt-raw 14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          16 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit1  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit1  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-credit2  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit2  16 saverestore-support-check    fail   never pass

version targeted for testing:
 linux                3eb5ca857d38ae7a694de6e59a3de7990af87919
baseline version:
 linux                8a696a29c6905594e4abf78eaafcb62165ac61f1

Last test of basis   184506  2024-01-28 10:49:07 Z    1 days
Testing same since   184508  2024-01-29 00:44:05 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Aleksander Jan Bajkowski <olek2@wp.pl>
  Borislav Petkov (AMD) <bp@alien8.de>
  Dan Williams <dan.j.williams@intel.com>
  Dawei Li <dawei.li@shingroup.cn>
  Florian Fainelli <f.fainelli@gmail.com>
  Huang Pei <huangpei@loongson.cn>
  Ira Weiny <ira.weiny@intel.com>
  Jiri Slaby <jirislaby@kernel.org>
  Jiri Wiesner <jwiesner@suse.de>
  Juergen Gross <jgross@suse.com>
  Linus Torvalds <torvalds@linux-foundation.org>
  Marc Zyngier <maz@kernel.org>
  Mario Limonciello <mario.limonciello@amd.com>
  Mike Rapoport (IBM) <rppt@kernel.org>
  Nikolay Borisov <nik.borisov@suse.com>
  Paul E. McKenney <paulmck@kernel.org>
  Quanquan Cao <caoqq@fujitsu.com>
  Richard Palethorpe <rpalethorpe@suse.com>
  Sebastian Andrzej Siewior <bigeasy@linutronix.de>
  Thomas Bogendoerfer <tsbogend@alpha.franken.de>
  Thomas Gleixner <tglx@linutronix.de>
  Tim Chen <tim.c.chen@linux.intel.com>
  Tony Luck <tony.luck@intel.com>
  Xi Ruoyao <xry111@xry111.site>
  Yajun Deng <yajun.deng@linux.dev>

jobs:
 build-amd64-xsm                                              pass    
 build-arm64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64                                                  pass    
 build-arm64                                                  pass    
 build-armhf                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-arm64-libvirt                                          pass    
 build-armhf-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-pvops                                            pass    
 build-arm64-pvops                                            pass    
 build-armhf-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-amd64-amd64-xl                                          pass    
 test-amd64-coresched-amd64-xl                                pass    
 test-arm64-arm64-xl                                          pass    
 test-armhf-armhf-xl                                          pass    
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm           pass    
 test-amd64-amd64-xl-qemut-stubdom-debianhvm-amd64-xsm        pass    
 test-amd64-amd64-xl-qemut-debianhvm-i386-xsm                 pass    
 test-amd64-amd64-xl-qemuu-debianhvm-i386-xsm                 pass    
 test-amd64-amd64-libvirt-xsm                                 pass    
 test-arm64-arm64-libvirt-xsm                                 pass    
 test-amd64-amd64-xl-xsm                                      pass    
 test-arm64-arm64-xl-xsm                                      pass    
 test-amd64-amd64-qemuu-nested-amd                            fail    
 test-amd64-amd64-xl-pvhv2-amd                                pass    
 test-amd64-amd64-dom0pvh-xl-amd                              pass    
 test-amd64-amd64-xl-qemut-debianhvm-amd64                    pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64                    pass    
 test-amd64-amd64-freebsd11-amd64                             pass    
 test-amd64-amd64-freebsd12-amd64                             pass    
 test-amd64-amd64-xl-qemuu-ovmf-amd64                         pass    
 test-amd64-amd64-xl-qemut-win7-amd64                         fail    
 test-amd64-amd64-xl-qemuu-win7-amd64                         fail    
 test-amd64-amd64-xl-qemut-ws16-amd64                         fail    
 test-amd64-amd64-xl-qemuu-ws16-amd64                         fail    
 test-armhf-armhf-xl-arndale                                  pass    
 test-amd64-amd64-examine-bios                                pass    
 test-amd64-amd64-xl-credit1                                  pass    
 test-arm64-arm64-xl-credit1                                  pass    
 test-armhf-armhf-xl-credit1                                  pass    
 test-amd64-amd64-xl-credit2                                  pass    
 test-arm64-arm64-xl-credit2                                  pass    
 test-armhf-armhf-xl-credit2                                  pass    
 test-amd64-amd64-xl-qemuu-dmrestrict-amd64-dmrestrict        pass    
 test-amd64-amd64-examine                                     pass    
 test-arm64-arm64-examine                                     pass    
 test-armhf-armhf-examine                                     pass    
 test-amd64-amd64-qemuu-nested-intel                          pass    
 test-amd64-amd64-xl-pvhv2-intel                              pass    
 test-amd64-amd64-dom0pvh-xl-intel                            pass    
 test-amd64-amd64-libvirt                                     pass    
 test-armhf-armhf-libvirt                                     pass    
 test-amd64-amd64-xl-multivcpu                                pass    
 test-armhf-armhf-xl-multivcpu                                pass    
 test-amd64-amd64-pair                                        pass    
 test-amd64-amd64-libvirt-pair                                pass    
 test-amd64-amd64-xl-pvshim                                   pass    
 test-amd64-amd64-pygrub                                      pass    
 test-amd64-amd64-libvirt-qcow2                               pass    
 test-armhf-armhf-libvirt-qcow2                               pass    
 test-amd64-amd64-libvirt-raw                                 pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-armhf-armhf-libvirt-raw                                 pass    
 test-amd64-amd64-xl-rtds                                     pass    
 test-armhf-armhf-xl-rtds                                     pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64-shadow             pass    
 test-amd64-amd64-xl-shadow                                   pass    
 test-arm64-arm64-xl-thunderx                                 pass    
 test-amd64-amd64-examine-uefi                                pass    
 test-amd64-amd64-xl-vhd                                      pass    
 test-arm64-arm64-xl-vhd                                      pass    
 test-armhf-armhf-xl-vhd                                      fail    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Pushing revision :

hint: The 'hooks/update' hook was ignored because it's not set as executable.
hint: You can disable this warning with `git config advice.ignoredHook false`.
hint: The 'hooks/post-receive' hook was ignored because it's not set as executable.
hint: You can disable this warning with `git config advice.ignoredHook false`.
hint: The 'hooks/post-update' hook was ignored because it's not set as executable.
hint: You can disable this warning with `git config advice.ignoredHook false`.
To xenbits.xen.org:/home/xen/git/linux-pvops.git
   8a696a29c690..3eb5ca857d38  3eb5ca857d38ae7a694de6e59a3de7990af87919 -> tested/linux-linus


From xen-devel-bounces@lists.xenproject.org Mon Jan 29 13:03:23 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 29 Jan 2024 13:03:23 +0000
Received: from list by lists.xenproject.org with outflank-mailman.672940.1047038 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rURID-0001NF-2d; Mon, 29 Jan 2024 13:03:17 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 672940.1047038; Mon, 29 Jan 2024 13:03:17 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rURID-0001N8-01; Mon, 29 Jan 2024 13:03:17 +0000
Received: by outflank-mailman (input) for mailman id 672940;
 Mon, 29 Jan 2024 13:03:16 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=9RcU=JH=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rURIC-0001N1-3m
 for xen-devel@lists.xenproject.org; Mon, 29 Jan 2024 13:03:16 +0000
Received: from mail-lj1-x231.google.com (mail-lj1-x231.google.com
 [2a00:1450:4864:20::231])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id c1a84c8f-bea6-11ee-98f5-efadbce2ee36;
 Mon, 29 Jan 2024 14:03:11 +0100 (CET)
Received: by mail-lj1-x231.google.com with SMTP id
 38308e7fff4ca-2cf1fd1cc5bso31918281fa.3
 for <xen-devel@lists.xenproject.org>; Mon, 29 Jan 2024 05:03:11 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 b11-20020a02a58b000000b00470b9ccdf99sm770944jam.163.2024.01.29.05.03.09
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 29 Jan 2024 05:03:10 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: c1a84c8f-bea6-11ee-98f5-efadbce2ee36
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1706533391; x=1707138191; darn=lists.xenproject.org;
        h=content-transfer-encoding:autocrypt:subject:from:cc:to
         :content-language:user-agent:mime-version:date:message-id:from:to:cc
         :subject:date:message-id:reply-to;
        bh=cHIEFIGhwN1rI8WFK4Xy23QAZj6uJyTSbj27NLSCFP0=;
        b=AKaazcwO8UioOY25UtT2bPznMf9Z2M56RPmKELIdN8F4u5lPvrDsGKOOsT6mntMfhR
         TXzfsj7aXas3iDTyCXFLNLkY0dHA97TJ7o50XLWksEf+qYkebT4xDYuVEhplvyzfl/ks
         pWNjhoKCYHZl5qQZG8Jg2QqVJlg4J8eptSoB+NU3zDwGjDgcf6VjSHdf3Y/xtikP8ERv
         ep5iFp21mlE2dveq76q6bwaPH6E5Oh1A/T1XWw6+Wnig/rz25ZBBmdFFJY/8EDHN4Iue
         y7IZig38EQDIKsIVNMezhyOpcWa2eqKT8yu6y3TrwPtDyzWwfoY1bC4yioNB1YUWUnFR
         s9VQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706533391; x=1707138191;
        h=content-transfer-encoding:autocrypt:subject:from:cc:to
         :content-language:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=cHIEFIGhwN1rI8WFK4Xy23QAZj6uJyTSbj27NLSCFP0=;
        b=wU139/qjZmzZXHMANTJOmrfw/nMlO70p8isKokP1NJHLOUAWZMs9Kp9DtTIff2zfAP
         3DoCBrXSXqgCCheEhSIjNuWlZ/mrVS2tcWwwcHmO4tJH4aRz8JLXtmnd/CFuD73l8/Eq
         H4IgVEv/J1yhn3fMKqSdelYH5HkyJBuz2hys9MqIVT6daOZJsEeMhKTDkWEiKhZ3OXrh
         Raxrea/NEKg11Q7z/yZgtoJkslbkFE/GZq/ZoaBqpUey0yiERWG9+lrCNQl1nlNzs6Xd
         odbfd/DhOzFVOZNyt6Aj44OklvSGpSUPdKnfT5RYQUd7tQPum0UPLOF2Q7mfjA7rwGWB
         GhvQ==
X-Gm-Message-State: AOJu0YxJ4fkkstaPxAnnCrIx8W78LcoGH7v+uGluSUHKjtSqeudsEqws
	SfuPZ/TzWGGHDcGTY6vbBkq8tgMepug56OIvn2i4cfxn872vd0jSmVFRne2+1laxHUrFpGHq9YM
	=
X-Google-Smtp-Source: AGHT+IGYPIqY7FXJoQZW+r6G/xWCsPNaz5p6AoN/yvvFk6bhqM/S0S7rwD88oYgpi4bW4sDngqYHlQ==
X-Received: by 2002:a2e:b0f6:0:b0:2cf:1f0b:5119 with SMTP id h22-20020a2eb0f6000000b002cf1f0b5119mr4313619ljl.17.1706533391207;
        Mon, 29 Jan 2024 05:03:11 -0800 (PST)
X-Forwarded-Encrypted: i=0; AJvYcCV72qncXuWBl3gcVE57EQABcPsNc/VOru7M6KW49bgmTjzn1+m4JEcNh1WqyHMokb1C2QgHwlOfEfjOqg1LBeQxewXGBsyaA2Wc5qjceDKhnueY0+OOMOrvkigO9A==
Message-ID: <980c6c3d-e10e-4459-8565-e8fbde122f00@suse.com>
Date: Mon, 29 Jan 2024 14:03:08 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Content-Language: en-US
To: "netdev@vger.kernel.org" <netdev@vger.kernel.org>
Cc: Wei Liu <wl@xen.org>, Paul Durrant <paul@xen.org>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
From: Jan Beulich <jbeulich@suse.com>
Subject: [PATCH net] xen-netback: properly sync TX responses
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

Invoking the make_tx_response() / push_tx_responses() pair with no lock
held would be acceptable only if all such invocations happened from the
same context (NAPI instance or dealloc thread). Since this isn't the
case, and since the interface "spec" also doesn't demand that multicast
operations may only be performed with no in-flight transmits,
MCAST_{ADD,DEL} processing also needs to acquire the response lock
around the invocations.

To prevent similar mistakes going forward, "downgrade" the present
functions to private helpers of just the two remaining ones using them
directly, with no forward declarations anymore. This involves renaming
what so far was make_tx_response(), for the new function of that name
to serve the new (wrapper) purpose.

While there,
- constify the txp parameters,
- correct xenvif_idx_release()'s status parameter's type,
- rename {,_}make_tx_response()'s status parameters for consistency with
  xenvif_idx_release()'s.

Fixes: 210c34dcd8d9 ("xen-netback: add support for multicast control")
Cc: stable@vger.kernel.org
Signed-off-by: Jan Beulich <jbeulich@suse.com>
---
Of course this could be split into two or even more separate changes,
but I think these transformations are best done all in one go.

It remains questionable whether push_tx_responses() really needs
invoking after every single _make_tx_response().

MCAST_{ADD,DEL} are odd also from another perspective: They're supposed
to come with "dummy requests", with the comment in the public header
leaving open what that means. Netback doesn't check dummy-ness (e.g.
size being zero). Furthermore the description in the public header
doesn't really make clear that there's a restriction of one such "extra"
per dummy request. Yet the way xenvif_get_extras() works precludes
multiple ADDs or multiple DELs in a single dummy request (only the last
one would be honored afaict). While the way xenvif_tx_build_gops() works
precludes an ADD and a DEL coming together in a single dummy request
(the DEL would be ignored).

--- a/drivers/net/xen-netback/netback.c
+++ b/drivers/net/xen-netback/netback.c
@@ -104,13 +104,12 @@ bool provides_xdp_headroom = true;
 module_param(provides_xdp_headroom, bool, 0644);
 
 static void xenvif_idx_release(struct xenvif_queue *queue, u16 pending_idx,
-			       u8 status);
+			       s8 status);
 
 static void make_tx_response(struct xenvif_queue *queue,
-			     struct xen_netif_tx_request *txp,
+			     const struct xen_netif_tx_request *txp,
 			     unsigned int extra_count,
-			     s8       st);
-static void push_tx_responses(struct xenvif_queue *queue);
+			     s8 status);
 
 static void xenvif_idx_unmap(struct xenvif_queue *queue, u16 pending_idx);
 
@@ -208,13 +207,9 @@ static void xenvif_tx_err(struct xenvif_
 			  unsigned int extra_count, RING_IDX end)
 {
 	RING_IDX cons = queue->tx.req_cons;
-	unsigned long flags;
 
 	do {
-		spin_lock_irqsave(&queue->response_lock, flags);
 		make_tx_response(queue, txp, extra_count, XEN_NETIF_RSP_ERROR);
-		push_tx_responses(queue);
-		spin_unlock_irqrestore(&queue->response_lock, flags);
 		if (cons == end)
 			break;
 		RING_COPY_REQUEST(&queue->tx, cons++, txp);
@@ -465,12 +460,7 @@ static void xenvif_get_requests(struct x
 	for (shinfo->nr_frags = 0; nr_slots > 0 && shinfo->nr_frags < MAX_SKB_FRAGS;
 	     nr_slots--) {
 		if (unlikely(!txp->size)) {
-			unsigned long flags;
-
-			spin_lock_irqsave(&queue->response_lock, flags);
 			make_tx_response(queue, txp, 0, XEN_NETIF_RSP_OKAY);
-			push_tx_responses(queue);
-			spin_unlock_irqrestore(&queue->response_lock, flags);
 			++txp;
 			continue;
 		}
@@ -496,14 +486,8 @@ static void xenvif_get_requests(struct x
 
 		for (shinfo->nr_frags = 0; shinfo->nr_frags < nr_slots; ++txp) {
 			if (unlikely(!txp->size)) {
-				unsigned long flags;
-
-				spin_lock_irqsave(&queue->response_lock, flags);
 				make_tx_response(queue, txp, 0,
 						 XEN_NETIF_RSP_OKAY);
-				push_tx_responses(queue);
-				spin_unlock_irqrestore(&queue->response_lock,
-						       flags);
 				continue;
 			}
 
@@ -995,7 +979,6 @@ static void xenvif_tx_build_gops(struct
 					 (ret == 0) ?
 					 XEN_NETIF_RSP_OKAY :
 					 XEN_NETIF_RSP_ERROR);
-			push_tx_responses(queue);
 			continue;
 		}
 
@@ -1007,7 +990,6 @@ static void xenvif_tx_build_gops(struct
 
 			make_tx_response(queue, &txreq, extra_count,
 					 XEN_NETIF_RSP_OKAY);
-			push_tx_responses(queue);
 			continue;
 		}
 
@@ -1433,8 +1415,35 @@ int xenvif_tx_action(struct xenvif_queue
 	return work_done;
 }
 
+static void _make_tx_response(struct xenvif_queue *queue,
+			     const struct xen_netif_tx_request *txp,
+			     unsigned int extra_count,
+			     s8 status)
+{
+	RING_IDX i = queue->tx.rsp_prod_pvt;
+	struct xen_netif_tx_response *resp;
+
+	resp = RING_GET_RESPONSE(&queue->tx, i);
+	resp->id     = txp->id;
+	resp->status = status;
+
+	while (extra_count-- != 0)
+		RING_GET_RESPONSE(&queue->tx, ++i)->status = XEN_NETIF_RSP_NULL;
+
+	queue->tx.rsp_prod_pvt = ++i;
+}
+
+static void push_tx_responses(struct xenvif_queue *queue)
+{
+	int notify;
+
+	RING_PUSH_RESPONSES_AND_CHECK_NOTIFY(&queue->tx, notify);
+	if (notify)
+		notify_remote_via_irq(queue->tx_irq);
+}
+
 static void xenvif_idx_release(struct xenvif_queue *queue, u16 pending_idx,
-			       u8 status)
+			       s8 status)
 {
 	struct pending_tx_info *pending_tx_info;
 	pending_ring_idx_t index;
@@ -1444,8 +1453,8 @@ static void xenvif_idx_release(struct xe
 
 	spin_lock_irqsave(&queue->response_lock, flags);
 
-	make_tx_response(queue, &pending_tx_info->req,
-			 pending_tx_info->extra_count, status);
+	_make_tx_response(queue, &pending_tx_info->req,
+			  pending_tx_info->extra_count, status);
 
 	/* Release the pending index before pusing the Tx response so
 	 * its available before a new Tx request is pushed by the
@@ -1459,32 +1468,19 @@ static void xenvif_idx_release(struct xe
 	spin_unlock_irqrestore(&queue->response_lock, flags);
 }
 
-
 static void make_tx_response(struct xenvif_queue *queue,
-			     struct xen_netif_tx_request *txp,
+			     const struct xen_netif_tx_request *txp,
 			     unsigned int extra_count,
-			     s8       st)
+			     s8 status)
 {
-	RING_IDX i = queue->tx.rsp_prod_pvt;
-	struct xen_netif_tx_response *resp;
-
-	resp = RING_GET_RESPONSE(&queue->tx, i);
-	resp->id     = txp->id;
-	resp->status = st;
-
-	while (extra_count-- != 0)
-		RING_GET_RESPONSE(&queue->tx, ++i)->status = XEN_NETIF_RSP_NULL;
+	unsigned long flags;
 
-	queue->tx.rsp_prod_pvt = ++i;
-}
+	spin_lock_irqsave(&queue->response_lock, flags);
 
-static void push_tx_responses(struct xenvif_queue *queue)
-{
-	int notify;
+	_make_tx_response(queue, txp, extra_count, status);
+	push_tx_responses(queue);
 
-	RING_PUSH_RESPONSES_AND_CHECK_NOTIFY(&queue->tx, notify);
-	if (notify)
-		notify_remote_via_irq(queue->tx_irq);
+	spin_unlock_irqrestore(&queue->response_lock, flags);
 }
 
 static void xenvif_idx_unmap(struct xenvif_queue *queue, u16 pending_idx)


From xen-devel-bounces@lists.xenproject.org Mon Jan 29 13:08:42 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 29 Jan 2024 13:08:42 +0000
Received: from list by lists.xenproject.org with outflank-mailman.672944.1047048 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rURNN-0002Ab-O9; Mon, 29 Jan 2024 13:08:37 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 672944.1047048; Mon, 29 Jan 2024 13:08:37 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rURNN-0002AU-LY; Mon, 29 Jan 2024 13:08:37 +0000
Received: by outflank-mailman (input) for mailman id 672944;
 Mon, 29 Jan 2024 13:08:36 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=Kvg3=JH=cloud.com=kelly.choi@srs-se1.protection.inumbo.net>)
 id 1rURNM-0002AD-HH
 for xen-devel@lists.xenproject.org; Mon, 29 Jan 2024 13:08:36 +0000
Received: from mail-ed1-x541.google.com (mail-ed1-x541.google.com
 [2a00:1450:4864:20::541])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 81f479f7-bea7-11ee-98f5-efadbce2ee36;
 Mon, 29 Jan 2024 14:08:34 +0100 (CET)
Received: by mail-ed1-x541.google.com with SMTP id
 4fb4d7f45d1cf-55eed368b0bso2044673a12.0
 for <xen-devel@lists.xenproject.org>; Mon, 29 Jan 2024 05:08:34 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 81f479f7-bea7-11ee-98f5-efadbce2ee36
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1706533714; x=1707138514; darn=lists.xenproject.org;
        h=to:subject:message-id:date:from:mime-version:from:to:cc:subject
         :date:message-id:reply-to;
        bh=Y3MCm4bTwBIid/dNRuePrKPkhjaSFd7D1VYEOokGxqY=;
        b=apjo20tqP12PtlixU4Gf38dyCrZen4UEvbMjHNY1e1xLtzNxG6xsQw/eZgkEUiL8M5
         /CiVNbCh2DMRwvERzGE/AGV6N5IkGCbJHUGZQe8P9wW8U7qtP5wbyiqJwYsjowOnE6EO
         gTzz9ifD/CR5JKiW4QHxtHQtnE7OGRsb6yH4Q=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706533714; x=1707138514;
        h=to:subject:message-id:date:from:mime-version:x-gm-message-state
         :from:to:cc:subject:date:message-id:reply-to;
        bh=Y3MCm4bTwBIid/dNRuePrKPkhjaSFd7D1VYEOokGxqY=;
        b=MhL/w+ZGV4HYC7rTTMddMsGGgOZLV+DeNp1igH0KyppkH1gEsjDdS/q9EC3VqDAtMo
         cQSo8XCDuwXEfrDJdfacjPn4iRl4dixaxtsVapQlXtAWu8hg+Q9qIVmdzAupUYi2IvU8
         bRK/ZHu21i3YnofIBODLNvCpouQQQNGZYbKfTylS36M/R5sQv00/68I60z3ANTLGAU65
         JW4EMb7yWzYYxcvRjIz74lP7ZO94anuVm/HSN/kgFeK2CsiwcWNWVi5/P8ojh2Pp7WU8
         AAsd1ZEClYiZRRAB3S388m09nu2uLVSHH3EPiOXqpWKraoqP9YKw1fAZVcouYwBBMHDe
         4l8w==
X-Gm-Message-State: AOJu0YzqVEUJc3hXj5pFp3mJQFYs5ux1DQCPeM6PEQpEuhQzARv1Hjzk
	9Kb1iVk0SyCIw8PZpV46d0oYGKEXMiTB1Ep+6MVnC8s30/M+3tkEUrAGJNOowADzzHVtDg52SEB
	0/0zCCY+dytDFsKR49PD8V4yGad/pgysZpIWyKaZvyY1iN0pU5nd+rswbRDM=
X-Google-Smtp-Source: AGHT+IFMGCTXE9G4WkC2QYRYPHLMBCgqFImsd26/rPuuvWpJlPYJ++A1dX9inRiNSBBabcgblgNK8Wyb+nnEPjWdVus=
X-Received: by 2002:a50:ec8d:0:b0:55f:1da7:62f6 with SMTP id
 e13-20020a50ec8d000000b0055f1da762f6mr908839edr.13.1706533713769; Mon, 29 Jan
 2024 05:08:33 -0800 (PST)
MIME-Version: 1.0
From: Kelly Choi <kelly.choi@cloud.com>
Date: Mon, 29 Jan 2024 13:07:57 +0000
Message-ID: <CAO-mL=xKRBje+Fg-pJ1A7ZLvjuORogCOxSrb_c-P8RF4nhkPXQ@mail.gmail.com>
Subject: Final reminder: Xen Project Annual Survey
To: xen-devel@lists.xenproject.org, xen-users@lists.xenproject.org, 
	xen-announce@lists.xenproject.org
Content-Type: multipart/alternative; boundary="000000000000ce8ceb061015573f"

--000000000000ce8ceb061015573f
Content-Type: text/plain; charset="UTF-8"

Hi all,

Final reminder to have your chance to say how the community is performing!

What are we doing well and what can we improve on?

Tell us here anonymously:
https://cryptpad.fr/form/#/2/form/view/uG22fJfe8UILyP9+jJ-YesXsINKMZRpuWh2c58bhBYI/

*Survey closes on 31st January 2024*

Many thanks,
Kelly Choi

Community Manager
Xen Project

--000000000000ce8ceb061015573f
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr">Hi all,<div><br></div><div>Final reminder to have your cha=
nce to say how the community is performing!=C2=A0</div><div><br></div><div>=
What are we doing well and what can we improve on?</div><div><br></div><div=
>Tell us here anonymously:=C2=A0</div><div><a href=3D"https://cryptpad.fr/f=
orm/#/2/form/view/uG22fJfe8UILyP9+jJ-YesXsINKMZRpuWh2c58bhBYI/">https://cry=
ptpad.fr/form/#/2/form/view/uG22fJfe8UILyP9+jJ-YesXsINKMZRpuWh2c58bhBYI/</a=
></div><div><br></div><div><i>Survey closes on 31st January 2024</i></div><=
div><br clear=3D"all"><div><div dir=3D"ltr" class=3D"gmail_signature" data-=
smartmail=3D"gmail_signature"><div dir=3D"ltr"><div>Many thanks,</div><div>=
Kelly Choi</div><div><br></div><div><div style=3D"color:rgb(136,136,136)">C=
ommunity Manager</div><div style=3D"color:rgb(136,136,136)">Xen Project=C2=
=A0<br></div></div></div></div></div></div></div>

--000000000000ce8ceb061015573f--


From xen-devel-bounces@lists.xenproject.org Mon Jan 29 14:50:41 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 29 Jan 2024 14:50:41 +0000
Received: from list by lists.xenproject.org with outflank-mailman.672987.1047077 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUSxw-0001BF-3J; Mon, 29 Jan 2024 14:50:28 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 672987.1047077; Mon, 29 Jan 2024 14:50:28 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUSxw-0001B8-00; Mon, 29 Jan 2024 14:50:28 +0000
Received: by outflank-mailman (input) for mailman id 672987;
 Mon, 29 Jan 2024 14:50:26 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rUSxu-0001Ay-5N; Mon, 29 Jan 2024 14:50:26 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rUSxt-0003Gs-QM; Mon, 29 Jan 2024 14:50:25 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rUSxt-0008AX-Cf; Mon, 29 Jan 2024 14:50:25 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rUSxt-0005wX-CA; Mon, 29 Jan 2024 14:50:25 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=/tBf191Bvcdm1xRqp6gCCF6gxFwoek5VJSNSVX2GBvc=; b=M2HTyBVXEAMSCRvGImPFEALlLl
	1ngi6C2Pdkk/aCu/RJ3l+Lbkt8z6WfX+bl6Y7PWTw+lJAmed8upXNewsmvFrU+SrUpLT4HvJgxCuh
	K/oBocSpgnrsjoL+m55CykRdpxGJMNyHXnwuRiHGvF8yu7Gv3Bvxz/Cw8vTg7/Ei0mZg=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184509-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [xen-unstable test] 184509: tolerable FAIL
X-Osstest-Failures:
    xen-unstable:test-amd64-amd64-xl-qemut-debianhvm-i386-xsm:debian-hvm-install:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-amd64-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-qcow2:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-raw:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-amd64-qemuu-nested-amd:debian-hvm-install/l1/l2:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-amd64-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-pvshim:guest-start:fail:nonblocking
    xen-unstable:test-amd64-i386-libvirt-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-libvirt:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-credit2:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-credit2:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-credit1:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-credit1:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-thunderx:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-thunderx:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-libvirt-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-libvirt-xsm:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-xsm:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-arndale:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-arndale:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-rtds:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-rtds:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-multivcpu:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-multivcpu:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-libvirt-raw:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt-vhd:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-libvirt-raw:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-libvirt-raw:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-vhd:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-vhd:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-qcow2:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-raw:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-vhd:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-vhd:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit1:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit1:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit2:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit2:saverestore-support-check:fail:nonblocking
X-Osstest-Versions-This:
    xen=c378ff8983cd69786c35117e49640f027e581bca
X-Osstest-Versions-That:
    xen=c378ff8983cd69786c35117e49640f027e581bca
From: osstest service owner <osstest-admin@xenproject.org>
Date: Mon, 29 Jan 2024 14:50:25 +0000

flight 184509 xen-unstable real [real]
http://logs.test-lab.xenproject.org/osstest/logs/184509/

Failures :-/ but no regressions.

Tests which did not succeed, but are not blocking:
 test-amd64-amd64-xl-qemut-debianhvm-i386-xsm 12 debian-hvm-install fail like 184492
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 184501
 test-amd64-amd64-xl-qemut-win7-amd64 19 guest-stop            fail like 184501
 test-amd64-i386-xl-qemuu-win7-amd64 19 guest-stop             fail like 184501
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 184501
 test-amd64-i386-xl-qemut-ws16-amd64 19 guest-stop             fail like 184501
 test-amd64-i386-xl-qemut-win7-amd64 19 guest-stop             fail like 184501
 test-armhf-armhf-libvirt-qcow2 15 saverestore-support-check   fail like 184501
 test-armhf-armhf-libvirt-raw 15 saverestore-support-check    fail  like 184501
 test-amd64-amd64-xl-qemut-ws16-amd64 19 guest-stop            fail like 184501
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 184501
 test-amd64-i386-xl-qemuu-ws16-amd64 19 guest-stop             fail like 184501
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 184501
 test-amd64-i386-xl-pvshim    14 guest-start                  fail   never pass
 test-amd64-i386-libvirt-xsm  15 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt     15 migrate-support-check        fail   never pass
 test-amd64-i386-libvirt      15 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit2  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit2  16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl          15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl          16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-credit1  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit1  16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-thunderx 15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-thunderx 16 saverestore-support-check    fail   never pass
 test-arm64-arm64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-xsm 16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-xsm      15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-xsm      16 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-armhf-armhf-xl-arndale  15 migrate-support-check        fail   never pass
 test-armhf-armhf-libvirt     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-arndale  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-rtds     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-rtds     16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-multivcpu 15 migrate-support-check        fail  never pass
 test-armhf-armhf-xl-multivcpu 16 saverestore-support-check    fail  never pass
 test-amd64-i386-libvirt-raw  14 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt-vhd 14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 15 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-vhd      14 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-vhd      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-qcow2 14 migrate-support-check        fail never pass
 test-armhf-armhf-libvirt-raw 14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl          15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-credit1  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit1  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-credit2  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit2  16 saverestore-support-check    fail   never pass

version targeted for testing:
 xen                  c378ff8983cd69786c35117e49640f027e581bca
baseline version:
 xen                  c378ff8983cd69786c35117e49640f027e581bca

Last test of basis   184509  2024-01-29 01:55:34 Z    0 days
Testing same since                          (not found)         0 attempts

jobs:
 build-amd64-xsm                                              pass    
 build-arm64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64-xtf                                              pass    
 build-amd64                                                  pass    
 build-arm64                                                  pass    
 build-armhf                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-arm64-libvirt                                          pass    
 build-armhf-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-prev                                             pass    
 build-i386-prev                                              pass    
 build-amd64-pvops                                            pass    
 build-arm64-pvops                                            pass    
 build-armhf-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-xtf-amd64-amd64-1                                       pass    
 test-xtf-amd64-amd64-2                                       pass    
 test-xtf-amd64-amd64-3                                       pass    
 test-xtf-amd64-amd64-4                                       pass    
 test-xtf-amd64-amd64-5                                       pass    
 test-amd64-amd64-xl                                          pass    
 test-amd64-coresched-amd64-xl                                pass    
 test-arm64-arm64-xl                                          pass    
 test-armhf-armhf-xl                                          pass    
 test-amd64-i386-xl                                           pass    
 test-amd64-coresched-i386-xl                                 pass    
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm           pass    
 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm            pass    
 test-amd64-amd64-xl-qemut-stubdom-debianhvm-amd64-xsm        pass    
 test-amd64-i386-xl-qemut-stubdom-debianhvm-amd64-xsm         pass    
 test-amd64-amd64-xl-qemut-debianhvm-i386-xsm                 fail    
 test-amd64-i386-xl-qemut-debianhvm-i386-xsm                  pass    
 test-amd64-amd64-xl-qemuu-debianhvm-i386-xsm                 pass    
 test-amd64-i386-xl-qemuu-debianhvm-i386-xsm                  pass    
 test-amd64-amd64-libvirt-xsm                                 pass    
 test-arm64-arm64-libvirt-xsm                                 pass    
 test-amd64-i386-libvirt-xsm                                  pass    
 test-amd64-amd64-xl-xsm                                      pass    
 test-arm64-arm64-xl-xsm                                      pass    
 test-amd64-i386-xl-xsm                                       pass    
 test-amd64-amd64-qemuu-nested-amd                            fail    
 test-amd64-amd64-xl-pvhv2-amd                                pass    
 test-amd64-i386-qemut-rhel6hvm-amd                           pass    
 test-amd64-i386-qemuu-rhel6hvm-amd                           pass    
 test-amd64-amd64-dom0pvh-xl-amd                              pass    
 test-amd64-amd64-xl-qemut-debianhvm-amd64                    pass    
 test-amd64-i386-xl-qemut-debianhvm-amd64                     pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64                    pass    
 test-amd64-i386-xl-qemuu-debianhvm-amd64                     pass    
 test-amd64-i386-freebsd10-amd64                              pass    
 test-amd64-amd64-qemuu-freebsd11-amd64                       pass    
 test-amd64-amd64-qemuu-freebsd12-amd64                       pass    
 test-amd64-amd64-xl-qemuu-ovmf-amd64                         pass    
 test-amd64-i386-xl-qemuu-ovmf-amd64                          pass    
 test-amd64-amd64-xl-qemut-win7-amd64                         fail    
 test-amd64-i386-xl-qemut-win7-amd64                          fail    
 test-amd64-amd64-xl-qemuu-win7-amd64                         fail    
 test-amd64-i386-xl-qemuu-win7-amd64                          fail    
 test-amd64-amd64-xl-qemut-ws16-amd64                         fail    
 test-amd64-i386-xl-qemut-ws16-amd64                          fail    
 test-amd64-amd64-xl-qemuu-ws16-amd64                         fail    
 test-amd64-i386-xl-qemuu-ws16-amd64                          fail    
 test-armhf-armhf-xl-arndale                                  pass    
 test-amd64-amd64-examine-bios                                pass    
 test-amd64-i386-examine-bios                                 pass    
 test-amd64-amd64-xl-credit1                                  pass    
 test-arm64-arm64-xl-credit1                                  pass    
 test-armhf-armhf-xl-credit1                                  pass    
 test-amd64-amd64-xl-credit2                                  pass    
 test-arm64-arm64-xl-credit2                                  pass    
 test-armhf-armhf-xl-credit2                                  pass    
 test-amd64-amd64-xl-qemuu-dmrestrict-amd64-dmrestrict        pass    
 test-amd64-i386-xl-qemuu-dmrestrict-amd64-dmrestrict         pass    
 test-amd64-amd64-examine                                     pass    
 test-arm64-arm64-examine                                     pass    
 test-armhf-armhf-examine                                     pass    
 test-amd64-i386-examine                                      pass    
 test-amd64-i386-freebsd10-i386                               pass    
 test-amd64-amd64-qemuu-nested-intel                          pass    
 test-amd64-amd64-xl-pvhv2-intel                              pass    
 test-amd64-i386-qemut-rhel6hvm-intel                         pass    
 test-amd64-i386-qemuu-rhel6hvm-intel                         pass    
 test-amd64-amd64-dom0pvh-xl-intel                            pass    
 test-amd64-amd64-libvirt                                     pass    
 test-armhf-armhf-libvirt                                     pass    
 test-amd64-i386-libvirt                                      pass    
 test-amd64-amd64-livepatch                                   pass    
 test-amd64-i386-livepatch                                    pass    
 test-amd64-amd64-migrupgrade                                 pass    
 test-amd64-i386-migrupgrade                                  pass    
 test-amd64-amd64-xl-multivcpu                                pass    
 test-armhf-armhf-xl-multivcpu                                pass    
 test-amd64-amd64-pair                                        pass    
 test-amd64-i386-pair                                         pass    
 test-amd64-amd64-libvirt-pair                                pass    
 test-amd64-i386-libvirt-pair                                 pass    
 test-amd64-amd64-xl-pvshim                                   pass    
 test-amd64-i386-xl-pvshim                                    fail    
 test-amd64-amd64-pygrub                                      pass    
 test-armhf-armhf-libvirt-qcow2                               pass    
 test-amd64-amd64-xl-qcow2                                    pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-armhf-armhf-libvirt-raw                                 pass    
 test-amd64-i386-libvirt-raw                                  pass    
 test-amd64-amd64-xl-rtds                                     pass    
 test-armhf-armhf-xl-rtds                                     pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64-shadow             pass    
 test-amd64-i386-xl-qemuu-debianhvm-amd64-shadow              pass    
 test-amd64-amd64-xl-shadow                                   pass    
 test-amd64-i386-xl-shadow                                    pass    
 test-arm64-arm64-xl-thunderx                                 pass    
 test-amd64-amd64-examine-uefi                                pass    
 test-amd64-i386-examine-uefi                                 pass    
 test-amd64-amd64-libvirt-vhd                                 pass    
 test-arm64-arm64-xl-vhd                                      pass    
 test-armhf-armhf-xl-vhd                                      pass    
 test-amd64-i386-xl-vhd                                       pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Published tested tree is already up to date.



From xen-devel-bounces@lists.xenproject.org Mon Jan 29 16:11:12 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 29 Jan 2024 16:11:12 +0000
Received: from list by lists.xenproject.org with outflank-mailman.673019.1047113 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUUE0-0004nR-Hq; Mon, 29 Jan 2024 16:11:08 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 673019.1047113; Mon, 29 Jan 2024 16:11:08 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUUE0-0004nK-ET; Mon, 29 Jan 2024 16:11:08 +0000
Received: by outflank-mailman (input) for mailman id 673019;
 Mon, 29 Jan 2024 16:11:07 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=VQ+3=JH=linaro.org=manos.pitsidianakis@srs-se1.protection.inumbo.net>)
 id 1rUUDz-0004XU-NA
 for xen-devel@lists.xenproject.org; Mon, 29 Jan 2024 16:11:07 +0000
Received: from mail-wr1-x42b.google.com (mail-wr1-x42b.google.com
 [2a00:1450:4864:20::42b])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 022c3eae-bec1-11ee-8a43-1f161083a0e0;
 Mon, 29 Jan 2024 17:11:07 +0100 (CET)
Received: by mail-wr1-x42b.google.com with SMTP id
 ffacd0b85a97d-33ae3cc8a70so1534938f8f.0
 for <xen-devel@lists.xenproject.org>; Mon, 29 Jan 2024 08:11:07 -0800 (PST)
Received: from localhost.localdomain (adsl-245.37.6.163.tellas.gr.
 [37.6.163.245]) by smtp.gmail.com with ESMTPSA id
 co6-20020a0560000a0600b0033af4df8e1esm1219957wrb.47.2024.01.29.08.11.05
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 29 Jan 2024 08:11:06 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 022c3eae-bec1-11ee-8a43-1f161083a0e0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=linaro.org; s=google; t=1706544666; x=1707149466; darn=lists.xenproject.org;
        h=content-transfer-encoding:mime-version:references:in-reply-to
         :message-id:date:subject:cc:to:from:from:to:cc:subject:date
         :message-id:reply-to;
        bh=q+5SvWKJw3Pcq7y4wFA0yrN1E0wDdYRB5LHPrLR2R5E=;
        b=nfO0Iltf/90uCly2EGNLegLUG4DuRnoyQZJtOcM0+9ZEjC5wAhxjG02PVOLiSOptIi
         P+F8IYItn2CfDoOY8roC+065XEgvD9+GHVCotkqAzukhhcQH1//puBGHwexFOQ2iMrkC
         lTaAfv3ZGTTkMB1CTwC92Nrx/W4Y8A+5lbHCHEG9cxaLpite60l3VZSsCvJ8fF3aXowk
         8V2clhOiUY1jXLiMPxoK5890wFT+wfOWHoFQu4fqhn5gXNju0TXqA/K3lYeM+Z+pOtVW
         Wf6/0pwH5i/oqANcyEMzHDnqv5g22BU72IbumiqRukeRXu5rNWCJFQxucfTbKThgfGou
         SRmw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706544666; x=1707149466;
        h=content-transfer-encoding:mime-version:references:in-reply-to
         :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to;
        bh=q+5SvWKJw3Pcq7y4wFA0yrN1E0wDdYRB5LHPrLR2R5E=;
        b=uuhtwSBCXvAeK4jI2P9SEiFQrn73Drjsse6folDDaKCWPyIFsFo1d10dpzf8wNN8ql
         TUbnDW4l663veXyOZvynGys+SURrrHn6bJb+tDkAdduwgvOR7W5ahVWrvjwIXaBy96pz
         6Phzwp1ZJVP5NIyCy5W3dI5E57QMfevq84Xa87GAUDpfaVC/dfd3Ic988k95aNVz2hQR
         eerWsVaRn1E48TxO69S7pI4aSULMyp4tZ756PiaXE8TOPDngBhYKzfPINQgrJRZBOrGN
         sRCgbENYKppyprjYii/MHuBiy8bJIp2bPlIeAIB/212J1N628n3pczJ9+xg+NK/EmnGQ
         9H0A==
X-Gm-Message-State: AOJu0YzwcFoQsbdaxdjpfoLmpeDu5TqDYzSvlm2WvVquXioMF7B/CfYR
	gyTblUdaUUwX9AH/SO8FmkEuyIhKr4S0IzHSCOXWYo0j6sQNsz0ZpAnXNi5i7aQ=
X-Google-Smtp-Source: AGHT+IGZtrvB+zkUJjsAVGqIveytOHVyHqI8Q/vjlorX6vfjVFxTfYDnogBdEEvF9xxE2lcmt0PKdw==
X-Received: by 2002:adf:cc91:0:b0:33a:f340:d09d with SMTP id p17-20020adfcc91000000b0033af340d09dmr1784015wrj.49.1706544666613;
        Mon, 29 Jan 2024 08:11:06 -0800 (PST)
From: Manos Pitsidianakis <manos.pitsidianakis@linaro.org>
To: qemu-devel@nongnu.org,
	qemu-arm@nongnu.org,
	qemu-block@nongnu.org
Cc: peter.maydell@linaro.org,
	=?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= <philmd@linaro.org>,
	=?UTF-8?q?Alex=20Benn=C3=A9e?= <alex.bennee@linaro.org>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Anthony Perard <anthony.perard@citrix.com>,
	Paul Durrant <paul@xen.org>,
	xen-devel@lists.xenproject.org
Subject: [PATCH v3 6/6] hw/xen: convert stderr prints to error/warn reports
Date: Mon, 29 Jan 2024 18:09:42 +0200
Message-Id: <42a8953553cf68e8bacada966f93af4fbce45919.1706544115.git.manos.pitsidianakis@linaro.org>
X-Mailer: git-send-email 2.39.2
In-Reply-To: <cover.1706544115.git.manos.pitsidianakis@linaro.org>
References: <cover.1706544115.git.manos.pitsidianakis@linaro.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

According to the QEMU Coding Style document:

> Do not use printf(), fprintf() or monitor_printf(). Instead, use
> error_report() or error_vreport() from error-report.h. This ensures the
> error is reported in the right place (current monitor or stderr), and in
> a uniform format.
> Use error_printf() & friends to print additional information.

This commit changes fprintfs that report warnings and errors to the
appropriate report functions.

Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Signed-off-by: Manos Pitsidianakis <manos.pitsidianakis@linaro.org>
---
 hw/xen/xen-hvm-common.c | 12 ++++++------
 hw/xen/xen-mapcache.c   |  5 ++---
 2 files changed, 8 insertions(+), 9 deletions(-)

diff --git a/hw/xen/xen-hvm-common.c b/hw/xen/xen-hvm-common.c
index 05a29c6f11..baa1adb9f2 100644
--- a/hw/xen/xen-hvm-common.c
+++ b/hw/xen/xen-hvm-common.c
@@ -20,8 +20,8 @@ void xen_ram_alloc(ram_addr_t ram_addr, ram_addr_t size, MemoryRegion *mr,
 
     if (runstate_check(RUN_STATE_INMIGRATE)) {
         /* RAM already populated in Xen */
-        fprintf(stderr, "%s: do not alloc "RAM_ADDR_FMT
-                " bytes of ram at "RAM_ADDR_FMT" when runstate is INMIGRATE\n",
+        warn_report("%s: do not alloc "RAM_ADDR_FMT
+                " bytes of ram at "RAM_ADDR_FMT" when runstate is INMIGRATE",
                 __func__, size, ram_addr);
         return;
     }
@@ -552,9 +552,9 @@ static void cpu_handle_ioreq(void *opaque)
         req->data = copy.data;
 
         if (req->state != STATE_IOREQ_INPROCESS) {
-            fprintf(stderr, "Badness in I/O request ... not in service?!: "
+            warn_report("Badness in I/O request ... not in service?!: "
                     "%x, ptr: %x, port: %"PRIx64", "
-                    "data: %"PRIx64", count: %u, size: %u, type: %u\n",
+                    "data: %"PRIx64", count: %u, size: %u, type: %u",
                     req->state, req->data_is_ptr, req->addr,
                     req->data, req->count, req->size, req->type);
             destroy_hvm_domain(false);
@@ -758,9 +758,9 @@ void xen_shutdown_fatal_error(const char *fmt, ...)
     va_list ap;
 
     va_start(ap, fmt);
-    vfprintf(stderr, fmt, ap);
+    error_vreport(fmt, ap);
     va_end(ap);
-    fprintf(stderr, "Will destroy the domain.\n");
+    error_report("Will destroy the domain.");
     /* destroy the domain */
     qemu_system_shutdown_request(SHUTDOWN_CAUSE_HOST_ERROR);
 }
diff --git a/hw/xen/xen-mapcache.c b/hw/xen/xen-mapcache.c
index 336c212376..4f956d048e 100644
--- a/hw/xen/xen-mapcache.c
+++ b/hw/xen/xen-mapcache.c
@@ -347,9 +347,8 @@ tryagain:
         MapCacheRev *reventry = g_new0(MapCacheRev, 1);
         entry->lock++;
         if (entry->lock == 0) {
-            fprintf(stderr,
-                    "mapcache entry lock overflow: "HWADDR_FMT_plx" -> %p\n",
-                    entry->paddr_index, entry->vaddr_base);
+            error_report("mapcache entry lock overflow: "HWADDR_FMT_plx" -> %p",
+                         entry->paddr_index, entry->vaddr_base);
             abort();
         }
         reventry->dma = dma;
-- 
γαῖα πυρί μιχθήτω



From xen-devel-bounces@lists.xenproject.org Mon Jan 29 16:11:12 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 29 Jan 2024 16:11:12 +0000
Received: from list by lists.xenproject.org with outflank-mailman.673020.1047123 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUUE1-00052Q-OW; Mon, 29 Jan 2024 16:11:09 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 673020.1047123; Mon, 29 Jan 2024 16:11:09 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUUE1-00052D-L4; Mon, 29 Jan 2024 16:11:09 +0000
Received: by outflank-mailman (input) for mailman id 673020;
 Mon, 29 Jan 2024 16:11:08 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=VQ+3=JH=linaro.org=manos.pitsidianakis@srs-se1.protection.inumbo.net>)
 id 1rUUE0-0004my-5q
 for xen-devel@lists.xenproject.org; Mon, 29 Jan 2024 16:11:08 +0000
Received: from mail-wr1-x42a.google.com (mail-wr1-x42a.google.com
 [2a00:1450:4864:20::42a])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id ff87d933-bec0-11ee-98f5-efadbce2ee36;
 Mon, 29 Jan 2024 17:11:02 +0100 (CET)
Received: by mail-wr1-x42a.google.com with SMTP id
 ffacd0b85a97d-3394ca0c874so2610049f8f.2
 for <xen-devel@lists.xenproject.org>; Mon, 29 Jan 2024 08:11:02 -0800 (PST)
Received: from localhost.localdomain (adsl-245.37.6.163.tellas.gr.
 [37.6.163.245]) by smtp.gmail.com with ESMTPSA id
 co6-20020a0560000a0600b0033af4df8e1esm1219957wrb.47.2024.01.29.08.11.00
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 29 Jan 2024 08:11:01 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: ff87d933-bec0-11ee-98f5-efadbce2ee36
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=linaro.org; s=google; t=1706544662; x=1707149462; darn=lists.xenproject.org;
        h=content-transfer-encoding:mime-version:references:in-reply-to
         :message-id:date:subject:cc:to:from:from:to:cc:subject:date
         :message-id:reply-to;
        bh=twCbSHojWsbr5gv/7yE94TkwwcJ8Z3GKHFCgEYch/Mg=;
        b=T8hZ5nGcFg/ZJYc3WUbvNz9rOV1b0jlWCaAzt1CCtgj6lkY7v/niuc9gGQCqO7/zJE
         vhzbEEIHa5D4mYGH1VKwa2KMdRyhp7bVKJV9kqwj0N2ruHIxjyhXk2i05Rd5YIjv4RjJ
         1pivg0mtu5LDAjqFsPgQxpvNO2yJErd+JtifgE4Wgx3iloGtGoYxwY+/ZZg0ayt4G1SM
         yG4kxfMTC6zE67XPJZcebOwuvNKqwuiDwJvM+gN4b4qDeQha2p/Y3CPXhU8Snuh6FoTJ
         V/+LI4Kc/PlkkJBYx3rR2zcshpjYXuvsmRL4wzmFG8Enn5M6fTXHL2E7D8itNgjcBjfr
         Qk4A==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706544662; x=1707149462;
        h=content-transfer-encoding:mime-version:references:in-reply-to
         :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to;
        bh=twCbSHojWsbr5gv/7yE94TkwwcJ8Z3GKHFCgEYch/Mg=;
        b=CpyBbFhSs5VQbyd+q6h9EcZuJuNgS7MbDdNhoB1p96VPI5R2hBFloUIB8MNQUGXhZ1
         WO7pF6cvv5cndF/OSWysCm/TinivpgDdWFMhGlSugDJ0+/hwrc+jMoOlcMLLQChu2/De
         L4oleJEmNZdFfsHVxPdL+K/+rNBF7yJZfkQ9MFQAj7fH3wVUTefzQCdJMOrrcu4L+JMx
         BNerlU25QqO1JP+3Jn62dRHBsHIgWHGo7e1pKBTR5DS5HN44QY0t7vjFUivEVEPmP1Hw
         +4OmpNuYg6bOcPyHoDrnw5U18FQMF8Sac8VPmTiDYUYxMshXD9WYgWBjr18NXh3ANR4L
         eY4A==
X-Gm-Message-State: AOJu0YxA+mBON/1JkpNBgd+/lOMAAvef/S9Yd/G6htVJaeFR8coRyf2k
	lp6QTLMM5CuFSgysqb0q6BWPfwVJ6ZyM6MHJlPoSDoRBC1v1zR3o4gJm5/s6zYY=
X-Google-Smtp-Source: AGHT+IFHfef60/eAVVHH0kuTs/lfrSLJKa6iuHY11S8YaJiIhT6WLh5nB2VDle+t9MxY8DzYa8+KtQ==
X-Received: by 2002:adf:e584:0:b0:337:c097:db9f with SMTP id l4-20020adfe584000000b00337c097db9fmr5003853wrm.17.1706544662220;
        Mon, 29 Jan 2024 08:11:02 -0800 (PST)
From: Manos Pitsidianakis <manos.pitsidianakis@linaro.org>
To: qemu-devel@nongnu.org,
	qemu-arm@nongnu.org,
	qemu-block@nongnu.org
Cc: peter.maydell@linaro.org,
	=?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= <philmd@linaro.org>,
	=?UTF-8?q?Alex=20Benn=C3=A9e?= <alex.bennee@linaro.org>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Anthony Perard <anthony.perard@citrix.com>,
	Paul Durrant <paul@xen.org>,
	xen-devel@lists.xenproject.org
Subject: [PATCH v3 5/6] hw/xen/xen-hvm-common.c: convert DPRINTF to tracepoints
Date: Mon, 29 Jan 2024 18:09:41 +0200
Message-Id: <b000ab73022dfeb7a7ab0ee8fd0f41fb208adaf0.1706544115.git.manos.pitsidianakis@linaro.org>
X-Mailer: git-send-email 2.39.2
In-Reply-To: <cover.1706544115.git.manos.pitsidianakis@linaro.org>
References: <cover.1706544115.git.manos.pitsidianakis@linaro.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF8
Content-Transfer-Encoding: 8bit

Tracing DPRINTFs to stderr might not be desired. A developer that relies
on tracepoints should be able to opt-in to each tracepoint and rely on
QEMU's log redirection, instead of stderr by default.

This commit converts DPRINTFs in this file that are used for tracing
into tracepoints.

Signed-off-by: Manos Pitsidianakis <manos.pitsidianakis@linaro.org>
---
 hw/xen/trace-events     | 10 +++++++++-
 hw/xen/xen-hvm-common.c | 35 ++++++++++++++++++-----------------
 2 files changed, 27 insertions(+), 18 deletions(-)

diff --git a/hw/xen/trace-events b/hw/xen/trace-events
index a65dc0e55f..d1b27f6c11 100644
--- a/hw/xen/trace-events
+++ b/hw/xen/trace-events
@@ -42,7 +42,7 @@ xs_node_vscanf(char *path, char *value) "%s %s"
 xs_node_watch(char *path) "%s"
 xs_node_unwatch(char *path) "%s"
 
-# xen-hvm.c
+# xen-hvm-common.c
 xen_ram_alloc(unsigned long ram_addr, unsigned long size) "requested: 0x%lx, size 0x%lx"
 xen_client_set_memory(uint64_t start_addr, unsigned long size, bool log_dirty) "0x%"PRIx64" size 0x%lx, log_dirty %i"
 handle_ioreq(void *req, uint32_t type, uint32_t dir, uint32_t df, uint32_t data_is_ptr, uint64_t addr, uint64_t data, uint32_t count, uint32_t size) "I/O=%p type=%d dir=%d df=%d ptr=%d port=0x%"PRIx64" data=0x%"PRIx64" count=%d size=%d"
@@ -55,6 +55,14 @@ cpu_ioreq_move(void *req, uint32_t dir, uint32_t df, uint32_t data_is_ptr, uint6
 xen_map_resource_ioreq(uint32_t id, void *addr) "id: %u addr: %p"
 cpu_ioreq_config_read(void *req, uint32_t sbdf, uint32_t reg, uint32_t size, uint32_t data) "I/O=%p sbdf=0x%x reg=%u size=%u data=0x%x"
 cpu_ioreq_config_write(void *req, uint32_t sbdf, uint32_t reg, uint32_t size, uint32_t data) "I/O=%p sbdf=0x%x reg=%u size=%u data=0x%x"
+cpu_get_ioreq_from_shared_memory_req_not_ready(int state, int data_is_ptr, uint64_t addr, uint64_t data, uint32_t count, uint32_t size) "I/O request not ready: 0x%x, ptr: 0x%x, port: 0x%"PRIx64", data: 0x%"PRIx64", count: %u, size: %u"
+xen_main_loop_prepare_init_cpu(int id, void *cpu) "cpu_by_vcpu_id[%d]=%p"
+xen_map_ioreq_server_shared_page(long unsigned int ioreq_pfn) "shared page at pfn 0x%lx"
+xen_map_ioreq_server_buffered_io_page(long unsigned int ioreq_pfn) "buffered io page at pfn 0x%lx"
+xen_map_ioreq_server_buffered_io_evtchn(int bufioreq_evtchn) "buffered io evtchn is 0x%x"
+destroy_hvm_domain_cannot_acquire_handle(void) "Cannot acquire xenctrl handle"
+destroy_hvm_domain_failed_action(const char *action, int sts, char *errno_s) "xc_domain_shutdown failed to issue %s, sts %d, %s"
+destroy_hvm_domain_action(int xen_domid, const char *action) "Issued domain %d %s"
 
 # xen-mapcache.c
 xen_map_cache(uint64_t phys_addr) "want 0x%"PRIx64
diff --git a/hw/xen/xen-hvm-common.c b/hw/xen/xen-hvm-common.c
index 47e6cb1db3..05a29c6f11 100644
--- a/hw/xen/xen-hvm-common.c
+++ b/hw/xen/xen-hvm-common.c
@@ -169,11 +169,12 @@ static ioreq_t *cpu_get_ioreq_from_shared_memory(XenIOState *state, int vcpu)
     ioreq_t *req = xen_vcpu_ioreq(state->shared_page, vcpu);
 
     if (req->state != STATE_IOREQ_READY) {
-        DPRINTF("I/O request not ready: "
-                "%x, ptr: %x, port: %"PRIx64", "
-                "data: %"PRIx64", count: %u, size: %u\n",
-                req->state, req->data_is_ptr, req->addr,
-                req->data, req->count, req->size);
+        trace_cpu_get_ioreq_from_shared_memory_req_not_ready(req->state,
+                                                             req->data_is_ptr,
+                                                             req->addr,
+                                                             req->data,
+                                                             req->count,
+                                                             req->size);
         return NULL;
     }
 
@@ -601,10 +602,9 @@ static void xen_main_loop_prepare(XenIOState *state)
     if (evtchn_fd != -1) {
         CPUState *cpu_state;
 
-        DPRINTF("%s: Init cpu_by_vcpu_id\n", __func__);
         CPU_FOREACH(cpu_state) {
-            DPRINTF("%s: cpu_by_vcpu_id[%d]=%p\n",
-                    __func__, cpu_state->cpu_index, cpu_state);
+            trace_xen_main_loop_prepare_init_cpu(cpu_state->cpu_index,
+                                                 cpu_state);
             state->cpu_by_vcpu_id[cpu_state->cpu_index] = cpu_state;
         }
         qemu_set_fd_handler(evtchn_fd, cpu_handle_ioreq, NULL, state);
@@ -681,7 +681,7 @@ static int xen_map_ioreq_server(XenIOState *state)
     }
 
     if (state->shared_page == NULL) {
-        DPRINTF("shared page at pfn %lx\n", ioreq_pfn);
+        trace_xen_map_ioreq_server_shared_page(ioreq_pfn);
 
         state->shared_page = xenforeignmemory_map(xen_fmem, xen_domid,
                                                   PROT_READ | PROT_WRITE,
@@ -693,7 +693,7 @@ static int xen_map_ioreq_server(XenIOState *state)
     }
 
     if (state->buffered_io_page == NULL) {
-        DPRINTF("buffered io page at pfn %lx\n", bufioreq_pfn);
+        trace_xen_map_ioreq_server_buffered_io_page(bufioreq_pfn);
 
         state->buffered_io_page = xenforeignmemory_map(xen_fmem, xen_domid,
                                                        PROT_READ | PROT_WRITE,
@@ -709,7 +709,7 @@ static int xen_map_ioreq_server(XenIOState *state)
         return -1;
     }
 
-    DPRINTF("buffered io evtchn is %x\n", bufioreq_evtchn);
+    trace_xen_map_ioreq_server_buffered_io_evtchn(bufioreq_evtchn);
 
     state->bufioreq_remote_port = bufioreq_evtchn;
 
@@ -737,16 +737,17 @@ void destroy_hvm_domain(bool reboot)
 
     xc_handle = xc_interface_open(0, 0, 0);
     if (xc_handle == NULL) {
-        fprintf(stderr, "Cannot acquire xenctrl handle\n");
+        trace_destroy_hvm_domain_cannot_acquire_handle();
     } else {
         sts = xc_domain_shutdown(xc_handle, xen_domid, reason);
         if (sts != 0) {
-            fprintf(stderr, "xc_domain_shutdown failed to issue %s, "
-                    "sts %d, %s\n", reboot ? "reboot" : "poweroff",
-                    sts, strerror(errno));
+            trace_destroy_hvm_domain_failed_action(
+                reboot ? "reboot" : "poweroff", sts, strerror(errno)
+            );
         } else {
-            fprintf(stderr, "Issued domain %d %s\n", xen_domid,
-                    reboot ? "reboot" : "poweroff");
+            trace_destroy_hvm_domain_action(
+                xen_domid, reboot ? "reboot" : "poweroff"
+            );
         }
         xc_interface_close(xc_handle);
     }
-- 
γαῖα πυρί μιχθήτω



From xen-devel-bounces@lists.xenproject.org Mon Jan 29 16:11:12 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 29 Jan 2024 16:11:12 +0000
Received: from list by lists.xenproject.org with outflank-mailman.673018.1047102 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUUDt-0004Xh-6g; Mon, 29 Jan 2024 16:11:01 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 673018.1047102; Mon, 29 Jan 2024 16:11:01 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUUDt-0004Xa-3v; Mon, 29 Jan 2024 16:11:01 +0000
Received: by outflank-mailman (input) for mailman id 673018;
 Mon, 29 Jan 2024 16:11:00 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=VQ+3=JH=linaro.org=manos.pitsidianakis@srs-se1.protection.inumbo.net>)
 id 1rUUDs-0004XU-FW
 for xen-devel@lists.xenproject.org; Mon, 29 Jan 2024 16:11:00 +0000
Received: from mail-wm1-x334.google.com (mail-wm1-x334.google.com
 [2a00:1450:4864:20::334])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id fd751abc-bec0-11ee-8a43-1f161083a0e0;
 Mon, 29 Jan 2024 17:10:59 +0100 (CET)
Received: by mail-wm1-x334.google.com with SMTP id
 5b1f17b1804b1-40e76109cdeso39735795e9.0
 for <xen-devel@lists.xenproject.org>; Mon, 29 Jan 2024 08:10:59 -0800 (PST)
Received: from localhost.localdomain (adsl-245.37.6.163.tellas.gr.
 [37.6.163.245]) by smtp.gmail.com with ESMTPSA id
 co6-20020a0560000a0600b0033af4df8e1esm1219957wrb.47.2024.01.29.08.10.56
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 29 Jan 2024 08:10:58 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: fd751abc-bec0-11ee-8a43-1f161083a0e0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=linaro.org; s=google; t=1706544658; x=1707149458; darn=lists.xenproject.org;
        h=content-transfer-encoding:mime-version:references:in-reply-to
         :message-id:date:subject:cc:to:from:from:to:cc:subject:date
         :message-id:reply-to;
        bh=zPokHMZSaf9YJuvbqyZkKKACp6RuNQ4cINXS/c1TsXk=;
        b=b2/pc+pvgeoKT7LHfR1RryzKWJ7ZTnQ49AMoS5FrnDgePSUOvO/kwvkUVNZFZkdwDC
         t0RNPmPVpC0TtDxDf/5zmu9DYXnahSTEWhKoPkoSbslaLQVJD0Rj1zcxPIFEoLWKI7j8
         h4gbLcJwO48yY3XKUXOXLdFGx/gL+eetOm6BXhiP6/nGW21eqx2u6BkDvP/b1ecgl2Lh
         AozLaXH/Y7DdMdaowcqgJ3+IZsR69s+VSIDPFDY+ePv+bJb06AmBODvS4mKydVCdG4VB
         ZvQddvD+VX3k/NzpMfT/FaZjw8xpUBD2yppQ5W6njVn0nODeSeQI4+tg2t7w0pCAOIVC
         NJBA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706544658; x=1707149458;
        h=content-transfer-encoding:mime-version:references:in-reply-to
         :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to;
        bh=zPokHMZSaf9YJuvbqyZkKKACp6RuNQ4cINXS/c1TsXk=;
        b=CLnB0v4rEuG19r2DEwq82WOaSkgHpG/QBhHAIyHJLyOE59WKaApAr7wNnmmX2OYHvq
         2G3CGtJ7XX+XNYWPE6YlJmluZyVnxdN8PLwhj0LA0FUCGSCBS58kXV+Rjfei8CSeQisJ
         W9CvzZtpjzsUe0XiSzrJHZ8ECvFiMa/T7Q8uDE5sKqEC7Ww6xsnuRytbQT5cHZcztnQb
         y7Y8iZXt5xz7TdLK58ZnDwDWBPkVLwzGHMUMnpf5SI28d3MjIAlvTlOBkB1wVIvQQoZ0
         KLtrWxiErd0gPbIDZdHjO3iM3NupnQHyWtMSbuna/TwE5Jy4Fc2yHlug9a35nymh3xwV
         7teA==
X-Gm-Message-State: AOJu0YwbhdB4Y/9k1ibCAMyLj9QyMdlHJVuR1lXgqZlz92qGz6yIkOXq
	slQRnW9FQc2bhbH+NMmp99g2XgW69yVCroX5/baaJbZTOCmdr+RGV0QkhKe5iS0=
X-Google-Smtp-Source: AGHT+IH2u+X0jHxP0JLWVS3FK/D/Os2n9uQ6Ne/3EkPY/YogM8wr2ifOFRbEXd/GLM5pC/sG/O6R+Q==
X-Received: by 2002:a05:600c:3547:b0:40e:f5d0:8517 with SMTP id i7-20020a05600c354700b0040ef5d08517mr3106234wmq.33.1706544658554;
        Mon, 29 Jan 2024 08:10:58 -0800 (PST)
From: Manos Pitsidianakis <manos.pitsidianakis@linaro.org>
To: qemu-devel@nongnu.org,
	qemu-arm@nongnu.org,
	qemu-block@nongnu.org
Cc: peter.maydell@linaro.org,
	=?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= <philmd@linaro.org>,
	=?UTF-8?q?Alex=20Benn=C3=A9e?= <alex.bennee@linaro.org>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Anthony Perard <anthony.perard@citrix.com>,
	Paul Durrant <paul@xen.org>,
	xen-devel@lists.xenproject.org
Subject: [PATCH v3 4/6] hw/xen/xen-mapcache.c: convert DPRINTF to tracepoints
Date: Mon, 29 Jan 2024 18:09:40 +0200
Message-Id: <2fbe1fbc59078e384761c932e97cfa4276a53d75.1706544115.git.manos.pitsidianakis@linaro.org>
X-Mailer: git-send-email 2.39.2
In-Reply-To: <cover.1706544115.git.manos.pitsidianakis@linaro.org>
References: <cover.1706544115.git.manos.pitsidianakis@linaro.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF8
Content-Transfer-Encoding: 8bit

Tracing DPRINTFs to stderr might not be desired. A developer that relies
on tracepoints should be able to opt-in to each tracepoint and rely on
QEMU's log redirection, instead of stderr by default.

This commit converts DPRINTFs in this file that are used for tracing
into tracepoints.

Signed-off-by: Manos Pitsidianakis <manos.pitsidianakis@linaro.org>
---
 hw/xen/trace-events   | 11 +++++++++
 hw/xen/xen-mapcache.c | 54 +++++++++++++++++++------------------------
 2 files changed, 35 insertions(+), 30 deletions(-)

diff --git a/hw/xen/trace-events b/hw/xen/trace-events
index 67a6c41926..a65dc0e55f 100644
--- a/hw/xen/trace-events
+++ b/hw/xen/trace-events
@@ -60,3 +60,14 @@ cpu_ioreq_config_write(void *req, uint32_t sbdf, uint32_t reg, uint32_t size, ui
 xen_map_cache(uint64_t phys_addr) "want 0x%"PRIx64
 xen_remap_bucket(uint64_t index) "index 0x%"PRIx64
 xen_map_cache_return(void* ptr) "%p"
+xen_map_cache_init(uint64_t nr_buckets, uint64_t size) "nr_buckets = 0x%"PRIx64" size 0x%"PRIx64
+xen_replace_cache_entry_dummy(uint64_t old_phys_addr, uint64_t new_phys_addr) "Replacing a dummy mapcache entry for 0x%"PRIx64" with 0x%"PRIx64
+xen_invalidate_map_cache_entry_unlocked_not_found(void *p) "could not find %p"
+xen_invalidate_map_cache_entry_unlocked_found(uint64_t addr, void *p) "   0x%"PRIx64" -> %p is present"
+xen_invalidate_map_cache_entry_unlocked_miss(void *buffer) "Trying to unmap address %p that is not in the mapcache"
+xen_replace_cache_entry_unlocked_could_not_update_entry(uint64_t old_phys_addr) "Unable to update a mapcache entry for 0x%"PRIx64
+xen_ram_addr_from_mapcache_not_found(void *p) "could not find %p"
+xen_ram_addr_from_mapcache_found(uint64_t addr, void *p) "   0x%"PRIx64" -> %p is present"
+xen_ram_addr_from_mapcache_not_in_cache(void *p) "Trying to find address %p that is not in the mapcache"
+xen_replace_cache_entry_unlocked(uint64_t old_phys_addr) "Trying to update an entry for 0x%"PRIx64" that is not in the mapcache"
+xen_invalidate_map_cache(uint64_t paddr_index, void *vaddr_req) "Locked DMA mapping while invalidating mapcache 0x%"PRIx64" -> %p is present"
diff --git a/hw/xen/xen-mapcache.c b/hw/xen/xen-mapcache.c
index f7d974677d..336c212376 100644
--- a/hw/xen/xen-mapcache.c
+++ b/hw/xen/xen-mapcache.c
@@ -22,16 +22,6 @@
 #include "trace.h"
 
 
-//#define MAPCACHE_DEBUG
-
-#ifdef MAPCACHE_DEBUG
-#  define DPRINTF(fmt, ...) do { \
-    fprintf(stderr, "xen_mapcache: " fmt, ## __VA_ARGS__); \
-} while (0)
-#else
-#  define DPRINTF(fmt, ...) do { } while (0)
-#endif
-
 #if HOST_LONG_BITS == 32
 #  define MCACHE_BUCKET_SHIFT 16
 #  define MCACHE_MAX_SIZE     (1UL<<31) /* 2GB Cap */
@@ -145,8 +135,7 @@ void xen_map_cache_init(phys_offset_to_gaddr_t f, void *opaque)
 
     size = mapcache->nr_buckets * sizeof (MapCacheEntry);
     size = (size + XC_PAGE_SIZE - 1) & ~(XC_PAGE_SIZE - 1);
-    DPRINTF("%s, nr_buckets = %lx size %lu\n", __func__,
-            mapcache->nr_buckets, size);
+    trace_xen_map_cache_init(mapcache->nr_buckets, size);
     mapcache->entry = g_malloc0(size);
 }
 
@@ -286,7 +275,9 @@ tryagain:
         test_bits(address_offset >> XC_PAGE_SHIFT,
                   test_bit_size >> XC_PAGE_SHIFT,
                   mapcache->last_entry->valid_mapping)) {
-        trace_xen_map_cache_return(mapcache->last_entry->vaddr_base + address_offset);
+        trace_xen_map_cache_return(
+            mapcache->last_entry->vaddr_base + address_offset
+        );
         return mapcache->last_entry->vaddr_base + address_offset;
     }
 
@@ -368,7 +359,9 @@ tryagain:
         QTAILQ_INSERT_HEAD(&mapcache->locked_entries, reventry, next);
     }
 
-    trace_xen_map_cache_return(mapcache->last_entry->vaddr_base + address_offset);
+    trace_xen_map_cache_return(
+        mapcache->last_entry->vaddr_base + address_offset
+    );
     return mapcache->last_entry->vaddr_base + address_offset;
 }
 
@@ -402,10 +395,10 @@ ram_addr_t xen_ram_addr_from_mapcache(void *ptr)
         }
     }
     if (!found) {
-        fprintf(stderr, "%s, could not find %p\n", __func__, ptr);
+        trace_xen_ram_addr_from_mapcache_not_found(ptr);
         QTAILQ_FOREACH(reventry, &mapcache->locked_entries, next) {
-            DPRINTF("   "HWADDR_FMT_plx" -> %p is present\n", reventry->paddr_index,
-                    reventry->vaddr_req);
+            trace_xen_ram_addr_from_mapcache_found(reventry->paddr_index,
+                                                   reventry->vaddr_req);
         }
         abort();
         return 0;
@@ -416,7 +409,7 @@ ram_addr_t xen_ram_addr_from_mapcache(void *ptr)
         entry = entry->next;
     }
     if (!entry) {
-        DPRINTF("Trying to find address %p that is not in the mapcache!\n", ptr);
+        trace_xen_ram_addr_from_mapcache_not_in_cache(ptr);
         raddr = 0;
     } else {
         raddr = (reventry->paddr_index << MCACHE_BUCKET_SHIFT) +
@@ -443,9 +436,12 @@ static void xen_invalidate_map_cache_entry_unlocked(uint8_t *buffer)
         }
     }
     if (!found) {
-        DPRINTF("%s, could not find %p\n", __func__, buffer);
+        trace_xen_invalidate_map_cache_entry_unlocked_not_found(buffer);
         QTAILQ_FOREACH(reventry, &mapcache->locked_entries, next) {
-            DPRINTF("   "HWADDR_FMT_plx" -> %p is present\n", reventry->paddr_index, reventry->vaddr_req);
+            trace_xen_invalidate_map_cache_entry_unlocked_found(
+                reventry->paddr_index,
+                reventry->vaddr_req
+            );
         }
         return;
     }
@@ -463,7 +459,7 @@ static void xen_invalidate_map_cache_entry_unlocked(uint8_t *buffer)
         entry = entry->next;
     }
     if (!entry) {
-        DPRINTF("Trying to unmap address %p that is not in the mapcache!\n", buffer);
+        trace_xen_invalidate_map_cache_entry_unlocked_miss(buffer);
         return;
     }
     entry->lock--;
@@ -502,9 +498,8 @@ void xen_invalidate_map_cache(void)
         if (!reventry->dma) {
             continue;
         }
-        fprintf(stderr, "Locked DMA mapping while invalidating mapcache!"
-                " "HWADDR_FMT_plx" -> %p is present\n",
-                reventry->paddr_index, reventry->vaddr_req);
+        trace_xen_invalidate_map_cache(reventry->paddr_index,
+                                       reventry->vaddr_req);
     }
 
     for (i = 0; i < mapcache->nr_buckets; i++) {
@@ -562,24 +557,23 @@ static uint8_t *xen_replace_cache_entry_unlocked(hwaddr old_phys_addr,
         entry = entry->next;
     }
     if (!entry) {
-        DPRINTF("Trying to update an entry for "HWADDR_FMT_plx \
-                "that is not in the mapcache!\n", old_phys_addr);
+        trace_xen_replace_cache_entry_unlocked(old_phys_addr);
         return NULL;
     }
 
     address_index  = new_phys_addr >> MCACHE_BUCKET_SHIFT;
     address_offset = new_phys_addr & (MCACHE_BUCKET_SIZE - 1);
 
-    fprintf(stderr, "Replacing a dummy mapcache entry for "HWADDR_FMT_plx \
-            " with "HWADDR_FMT_plx"\n", old_phys_addr, new_phys_addr);
+    trace_xen_replace_cache_entry_dummy(old_phys_addr, new_phys_addr);
 
     xen_remap_bucket(entry, entry->vaddr_base,
                      cache_size, address_index, false);
     if (!test_bits(address_offset >> XC_PAGE_SHIFT,
                 test_bit_size >> XC_PAGE_SHIFT,
                 entry->valid_mapping)) {
-        DPRINTF("Unable to update a mapcache entry for "HWADDR_FMT_plx"!\n",
-                old_phys_addr);
+        trace_xen_replace_cache_entry_unlocked_could_not_update_entry(
+            old_phys_addr
+        );
         return NULL;
     }
 
-- 
γαῖα πυρί μιχθήτω



From xen-devel-bounces@lists.xenproject.org Mon Jan 29 16:16:47 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 29 Jan 2024 16:16:47 +0000
Received: from list by lists.xenproject.org with outflank-mailman.673026.1047136 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUUJM-0006FZ-CY; Mon, 29 Jan 2024 16:16:40 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 673026.1047136; Mon, 29 Jan 2024 16:16:40 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUUJM-0006FS-9X; Mon, 29 Jan 2024 16:16:40 +0000
Received: by outflank-mailman (input) for mailman id 673026;
 Mon, 29 Jan 2024 16:16:38 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=Kvg3=JH=cloud.com=kelly.choi@srs-se1.protection.inumbo.net>)
 id 1rUUJK-0006EQ-Od
 for xen-devel@lists.xenproject.org; Mon, 29 Jan 2024 16:16:38 +0000
Received: from mail-ej1-x636.google.com (mail-ej1-x636.google.com
 [2a00:1450:4864:20::636])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id c6e9dba9-bec1-11ee-8a43-1f161083a0e0;
 Mon, 29 Jan 2024 17:16:37 +0100 (CET)
Received: by mail-ej1-x636.google.com with SMTP id
 a640c23a62f3a-a26f73732c5so328003266b.3
 for <xen-devel@lists.xenproject.org>; Mon, 29 Jan 2024 08:16:37 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: c6e9dba9-bec1-11ee-8a43-1f161083a0e0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1706544996; x=1707149796; darn=lists.xenproject.org;
        h=cc:to:subject:message-id:date:from:in-reply-to:references
         :mime-version:from:to:cc:subject:date:message-id:reply-to;
        bh=2NzyRxHlldbgBO3UmVYhU2RM410eQJ9s2pkp0wC/8J4=;
        b=T4b9wbKSB+3Pmrb6ppKtTEmatXTZL7q5YqIjmmpgJS7qVix5eOpaQvuXRN5xPAEILV
         EFvzsyJmHWujmxeO+wBTmF6W7+HNvXDZ0MWbf4mNqOLyIUd1NXZ+2Q1LrOA2hjtEGqtG
         KUhi0hokcePjKxfNhVyMh0mnIDy9+Segv6q8c=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706544996; x=1707149796;
        h=cc:to:subject:message-id:date:from:in-reply-to:references
         :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id
         :reply-to;
        bh=2NzyRxHlldbgBO3UmVYhU2RM410eQJ9s2pkp0wC/8J4=;
        b=AKQe/CW0gJiPjO/dmOjfDhXJJT0PGfHUZaQZoz47Pc1ICgS+JaYaMcQQU/nPcZAc6l
         AdqIACW9CtWb5KcZrHVYEWXHmkXtVYc+i4sFA63i093Gcza8rYiuaIkr+SQlJjMr8Y+J
         0BVfiAHXGAmKQofNFTWgSDMLpG1YxS6b0tr1qVUfK/AnHvyBq3fLrQFq43f1gMJ+L3Fv
         nrl4XxcJ2ergM3BSNaiw0o+hTIbuQ4Xz5kMZS0DEACxq+iQnhIh3GfMD57dLiciUpKyK
         OziIED3fJf39Wqw+F+Jncx8KluKL5DcD1n7bzc++s8vFIhwpiUTY1A69S8mYG6weTIVR
         qL0w==
X-Gm-Message-State: AOJu0YykqUtPK2KwMXyAvqe/VCjNnAIHvwZxtfPttf4n9mk/Up4FpqcY
	xsN2rgq0GCNdusSMzBUuGCgUkvEuL0zQRPhi+DoWlfRsjvhy2hY1XRqpNmav4x70Y4byJdqJUqM
	OhUQW7bqa9i2+yIQ/3PGjeteJsIJRZwOEKjrNPwyZjQ1NoPKMsoGQsQ==
X-Google-Smtp-Source: AGHT+IHAROMy/cB3HOu3w6A6JLbOWfYSJqmn6uKnFfZuqgvQOEtL5FV4rtpnJW172/FyHwehv25+add8CdgRSyI6T4w=
X-Received: by 2002:a17:906:1406:b0:a2f:b9bf:3955 with SMTP id
 p6-20020a170906140600b00a2fb9bf3955mr4586301ejc.21.1706544996610; Mon, 29 Jan
 2024 08:16:36 -0800 (PST)
MIME-Version: 1.0
References: <CAO-mL=yvVWjnOHSFSqcrknoXOqk-N3JY76qObQnzftrkmsq6xw@mail.gmail.com>
 <5309e7d3-7b3c-4522-99dc-bbd7734aeb34@suse.com> <alpine.DEB.2.22.394.2401221434440.2287888@ubuntu-linux-20-04-desktop>
 <ecddb385-fc87-412b-a956-0a08237cc120@suse.com> <9ef401a61cce3ceffb000697fe671339b4492e20.camel@infradead.org>
In-Reply-To: <9ef401a61cce3ceffb000697fe671339b4492e20.camel@infradead.org>
From: Kelly Choi <kelly.choi@cloud.com>
Date: Mon, 29 Jan 2024 16:16:00 +0000
Message-ID: <CAO-mL=yP5j_G3fvGLEgWwajy_Vdt=yDnLR8gw52mu3+4=BY+2A@mail.gmail.com>
Subject: Re: Community Process Group - Proposal
To: David Woodhouse <dwmw2@infradead.org>
Cc: Jan Beulich <jbeulich@suse.com>, Stefano Stabellini <sstabellini@kernel.org>, committers@xenproject.org, 
	advisory-board@lists.xenproject.org, xen-devel@lists.xenproject.org
Content-Type: multipart/alternative; boundary="000000000000510e2c061017f858"

--000000000000510e2c061017f858
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

Thank you everyone for your feedback so far.

I will be sending out a formal vote to committers this week on this
proposal.

Once I receive the results I will announce to xen-devel the next steps or
if any further changes are needed.

Many thanks,
Kelly Choi

Community Manager
Xen Project


On Wed, Jan 24, 2024 at 1:21=E2=80=AFPM David Woodhouse <dwmw2@infradead.or=
g> wrote:

> On Tue, 2024-01-23 at 08:34 +0100, Jan Beulich wrote:
> > On 22.01.2024 23:47, Stefano Stabellini wrote:
> > > On Mon, 22 Jan 2024, Jan Beulich wrote:
> > > > What definitely needs clarifying is what "review" is: Are R-b tags
> > > > counted, or is it the number of replies sent commenting on patches?
> > >
> > > Yes, I think this needs to be clarified. I would say Reviewed-by tags=
.
> >
> > Which may end up unfair. It's not uncommon for one person to do a lot
> > of review on a patch, and for someone else to then ack the final
> > version that goes in. In the end this is then no different from basing
> > the decision on simple numbers, without regard to actual (potentially
> > heavily differing) effort behind each individual instance.
>
>
> Perhaps that isn't such a bad thing. It would mean that a hypothetical
> reviewer who only ever nitpicks and is holding up progress of a patch
> which others find acceptable does not get 'credit' for reviewing that
> particular patch.
>

--000000000000510e2c061017f858
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr">Thank you everyone for your feedback so far.=C2=A0<div><br=
></div><div>I will be sending out a formal vote to committers this week on =
this proposal.=C2=A0</div><div><br></div><div>Once I receive the results I =
will announce to xen-devel the next steps or if any further changes are nee=
ded.=C2=A0</div><div><br clear=3D"all"><div><div dir=3D"ltr" class=3D"gmail=
_signature" data-smartmail=3D"gmail_signature"><div dir=3D"ltr"><div>Many t=
hanks,</div><div>Kelly Choi</div><div><br></div><div><div style=3D"color:rg=
b(136,136,136)">Community Manager</div><div style=3D"color:rgb(136,136,136)=
">Xen Project=C2=A0<br></div></div></div></div></div><br></div></div><br><d=
iv class=3D"gmail_quote"><div dir=3D"ltr" class=3D"gmail_attr">On Wed, Jan =
24, 2024 at 1:21=E2=80=AFPM David Woodhouse &lt;<a href=3D"mailto:dwmw2@inf=
radead.org" target=3D"_blank">dwmw2@infradead.org</a>&gt; wrote:<br></div><=
blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-l=
eft:1px solid rgb(204,204,204);padding-left:1ex">On Tue, 2024-01-23 at 08:3=
4 +0100, Jan Beulich wrote:<br>
&gt; On 22.01.2024 23:47, Stefano Stabellini wrote:<br>
&gt; &gt; On Mon, 22 Jan 2024, Jan Beulich wrote:<br>
&gt; &gt; &gt; What definitely needs clarifying is what &quot;review&quot; =
is: Are R-b tags<br>
&gt; &gt; &gt; counted, or is it the number of replies sent commenting on p=
atches?<br>
&gt; &gt; <br>
&gt; &gt; Yes, I think this needs to be clarified. I would say Reviewed-by =
tags.<br>
&gt; <br>
&gt; Which may end up unfair. It&#39;s not uncommon for one person to do a =
lot<br>
&gt; of review on a patch, and for someone else to then ack the final<br>
&gt; version that goes in. In the end this is then no different from basing=
<br>
&gt; the decision on simple numbers, without regard to actual (potentially<=
br>
&gt; heavily differing) effort behind each individual instance.<br>
<br>
<br>
Perhaps that isn&#39;t such a bad thing. It would mean that a hypothetical<=
br>
reviewer who only ever nitpicks and is holding up progress of a patch<br>
which others find acceptable does not get &#39;credit&#39; for reviewing th=
at<br>
particular patch.<br>
</blockquote></div>

--000000000000510e2c061017f858--


From xen-devel-bounces@lists.xenproject.org Mon Jan 29 16:23:39 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 29 Jan 2024 16:23:39 +0000
Received: from list by lists.xenproject.org with outflank-mailman.673032.1047146 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUUQ2-0008DE-2C; Mon, 29 Jan 2024 16:23:34 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 673032.1047146; Mon, 29 Jan 2024 16:23:34 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUUQ1-0008D7-Vc; Mon, 29 Jan 2024 16:23:33 +0000
Received: by outflank-mailman (input) for mailman id 673032;
 Mon, 29 Jan 2024 16:23:32 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=9VRI=JH=gmail.com=xadimgnik@srs-se1.protection.inumbo.net>)
 id 1rUUQ0-0008Cx-3X
 for xen-devel@lists.xenproject.org; Mon, 29 Jan 2024 16:23:32 +0000
Received: from mail-wm1-x32e.google.com (mail-wm1-x32e.google.com
 [2a00:1450:4864:20::32e])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id bdad6398-bec2-11ee-8a43-1f161083a0e0;
 Mon, 29 Jan 2024 17:23:31 +0100 (CET)
Received: by mail-wm1-x32e.google.com with SMTP id
 5b1f17b1804b1-40e80046246so16089925e9.1
 for <xen-devel@lists.xenproject.org>; Mon, 29 Jan 2024 08:23:31 -0800 (PST)
Received: from [192.168.13.31] (54-240-197-239.amazon.com. [54.240.197.239])
 by smtp.gmail.com with ESMTPSA id
 h4-20020a05600c350400b0040e50d82af5sm10632092wmq.32.2024.01.29.08.23.29
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 29 Jan 2024 08:23:29 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: bdad6398-bec2-11ee-8a43-1f161083a0e0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1706545410; x=1707150210; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:organization:references:cc:to
         :content-language:subject:reply-to:user-agent:mime-version:date
         :message-id:from:from:to:cc:subject:date:message-id:reply-to;
        bh=1U95h2OOTfszoqXa08Tm5UXIetJ+sJnMEkG7ANYgKQc=;
        b=Q8gYAVPu752f273GkD8cSgXW2UBGY350fdyF4G9wio8VNyrepqfr0iZX1pv1Ifny4O
         cWRkv4qCffpGPTI0WciZ3yJIXsSMhqP45cgYEGhlX3vZp8XSfUMYhjQ7uWXqDBBQnpLB
         r2elOujkV2kwb6DTsItI9NvC2781+s11vW8boH32ULZrUdmBCaqzN+SoaQ+0sU/AlqPv
         jID1+NwmUcm0+QkIFAUgsw0ZtPtUFLfY0IIl5gHeshP/832mp1MX4JvHK/69N6CJS6u6
         eLleSuC35wzoGukWHCk1qm4DjQlgC8QqnklFa1CYE2HOpmsPHYNVe63lb6IXnFYf/1xY
         OkBQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706545410; x=1707150210;
        h=content-transfer-encoding:in-reply-to:organization:references:cc:to
         :content-language:subject:reply-to:user-agent:mime-version:date
         :message-id:from:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to;
        bh=1U95h2OOTfszoqXa08Tm5UXIetJ+sJnMEkG7ANYgKQc=;
        b=KQRM+8SjTHBbr8cac0C+UJf+1bkplla8V5qI/6tG5h0aUiScH/10rt3+Pbne1YM4iw
         CLKoDl7ehjCJCsjNzUooZmP6xp7eaMS+1M0wOsGD8KOl+RmnNiqwRsyDD27LqCvVTok8
         fQzeoyOWOtU3rA+IR1sYtLf4X+iEKBbYuHNF3xVo02QsMY8tYU5F8pWkT+zUjahwAF/i
         t3DARFVcHC0Bx/9N6mwUXS71wktOjmGFKmCpCzh47ySSA+44/3lae4ZeyuFDQ+ceJDGG
         wfonjtDPiiW8jUF7eIGbJgouLnN2r/Oepv540ziqJmUQwkMTZPYA/7dOjQdnlbVkK7HT
         LVVQ==
X-Gm-Message-State: AOJu0YwHqZrHVfxoyRmB6Qm1zQqV7bf1u4kl2Qq3LefXNpvYI0pnL+J9
	OVS8wSn2eNkzGRp7IQJf6OUshGjPrZVy3HPxPC0HTTEG2LEqpLMy
X-Google-Smtp-Source: AGHT+IGphsrgeW4MVyxwqEJacHn5mOVmoT3HIXiBIdpFBH2moIz6QQlCDKSMQA9SNF6AOwLixGXG3w==
X-Received: by 2002:a05:600c:4691:b0:40e:4a5d:b2d1 with SMTP id p17-20020a05600c469100b0040e4a5db2d1mr4780598wmo.20.1706545410449;
        Mon, 29 Jan 2024 08:23:30 -0800 (PST)
From: Paul Durrant <xadimgnik@gmail.com>
X-Google-Original-From: Paul Durrant <paul@xen.org>
Message-ID: <14a78f14-c6c5-41d1-94b2-3148ee6048fb@xen.org>
Date: Mon, 29 Jan 2024 16:23:28 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Reply-To: paul@xen.org
Subject: Re: [PATCH v6 1/3] x86/iommu: remove regions not to be mapped
Content-Language: en-US
To: Roger Pau Monne <roger.pau@citrix.com>, xen-devel@lists.xenproject.org
Cc: Jan Beulich <jbeulich@suse.com>, Andrew Cooper
 <andrew.cooper3@citrix.com>, Wei Liu <wl@xen.org>
References: <20240124172953.29814-2-roger.pau@citrix.com>
 <20240125132626.34553-1-roger.pau@citrix.com>
Organization: Xen Project
In-Reply-To: <20240125132626.34553-1-roger.pau@citrix.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit

On 25/01/2024 13:26, Roger Pau Monne wrote:
> Introduce the code to remove regions not to be mapped from the rangeset
> that will be used to setup the IOMMU page tables for the hardware domain.
> 
> This change also introduces two new functions: remove_xen_ranges() and
> vpci_subtract_mmcfg() that copy the logic in xen_in_range() and
> vpci_is_mmcfg_address() respectively and remove the ranges that would otherwise
> be intercepted by the original functions.
> 
> Note that the rangeset is still not populated.
> 
> Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
> ---
> Changes since v6:
>   - Fix subtraction to be done against the address, not the mfn.
> 
> Changes since v4:
>   - Fix off-by-one when removing the Xen used ranges, as the rangesets are
>     inclusive.
> 
> Changes since v3:
>   - Remove unnecessary line wrapping.
> 
> Changes since v1:
>   - Split from bigger patch.
> ---
>   xen/arch/x86/hvm/io.c               | 16 ++++++++
>   xen/arch/x86/include/asm/hvm/io.h   |  3 ++
>   xen/arch/x86/include/asm/setup.h    |  1 +
>   xen/arch/x86/setup.c                | 48 +++++++++++++++++++++++
>   xen/drivers/passthrough/x86/iommu.c | 61 +++++++++++++++++++++++++++++
>   5 files changed, 129 insertions(+)
> 

Reviewed-by: Paul Durrant <paul@xen.org>



From xen-devel-bounces@lists.xenproject.org Mon Jan 29 16:29:06 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 29 Jan 2024 16:29:06 +0000
Received: from list by lists.xenproject.org with outflank-mailman.673036.1047156 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUUVJ-0000lj-O9; Mon, 29 Jan 2024 16:29:01 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 673036.1047156; Mon, 29 Jan 2024 16:29:01 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUUVJ-0000lc-LV; Mon, 29 Jan 2024 16:29:01 +0000
Received: by outflank-mailman (input) for mailman id 673036;
 Mon, 29 Jan 2024 16:29:00 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=9VRI=JH=gmail.com=xadimgnik@srs-se1.protection.inumbo.net>)
 id 1rUUVI-0000lV-SZ
 for xen-devel@lists.xenproject.org; Mon, 29 Jan 2024 16:29:00 +0000
Received: from mail-wm1-x32e.google.com (mail-wm1-x32e.google.com
 [2a00:1450:4864:20::32e])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 817c2f60-bec3-11ee-8a43-1f161083a0e0;
 Mon, 29 Jan 2024 17:28:59 +0100 (CET)
Received: by mail-wm1-x32e.google.com with SMTP id
 5b1f17b1804b1-40e76626170so35846395e9.2
 for <xen-devel@lists.xenproject.org>; Mon, 29 Jan 2024 08:28:59 -0800 (PST)
Received: from [192.168.13.31] (54-240-197-239.amazon.com. [54.240.197.239])
 by smtp.gmail.com with ESMTPSA id
 i5-20020a05600c354500b0040efb8f7158sm1368762wmq.15.2024.01.29.08.28.58
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 29 Jan 2024 08:28:58 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 817c2f60-bec3-11ee-8a43-1f161083a0e0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1706545739; x=1707150539; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:organization:references:cc:to
         :content-language:subject:reply-to:user-agent:mime-version:date
         :message-id:from:from:to:cc:subject:date:message-id:reply-to;
        bh=7l/dgTp2dpCjszrxBKlVP0qaxr76ydhBy5FlppTxtSo=;
        b=DQWsvAM1btXQ5CTRKAwOsE0Tg68WVcUpvyTp3WMcYlXOpIlp6xx0QcrKokuSRHTQDU
         qyRnJwZhiL8qLgg+86CfkC2I/pRljiE5+mBA/JWWS588K0IRhD8gfhihAyOc5JGkVeNF
         ta4LGvEvYaBIx7SZ+JGobH94cIrbjbUB6EtqV167aVBgYy15tyScrICCvqcHbC089txy
         gzS7jbfcebBaLF0g3BgGXgVGo7PRkDVHqVtZIN+yUlZWumNvV/a3b4Zi1xs5aHeDrRU3
         CPXO+WDYJwMsXeAL5lrtwhZCeLqy+5V78xeoGH2WdFZckhOebq6u4YqgzrarChN+ogoi
         BwVQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706545739; x=1707150539;
        h=content-transfer-encoding:in-reply-to:organization:references:cc:to
         :content-language:subject:reply-to:user-agent:mime-version:date
         :message-id:from:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to;
        bh=7l/dgTp2dpCjszrxBKlVP0qaxr76ydhBy5FlppTxtSo=;
        b=IMeBUWoB7phYkuGbmP3BY6jt+ysCVkyWLPoTbq3ZLwEbZmBMpYlp2writIBhszHNtk
         9y+93wu3smXYVwXthcA++vNxqDODgGGMBQ9FppebluSz3dpaeaiBzATZi+efUE+J5AkO
         AYDAgSJPdpm3gRJ+SGOpOcxQKU+DTY655wgKrY4bQrqel3MCrBQN9ViRncr9HGjeV7XT
         zrHjvApqNn1OpJXSc8AKbEMzMxepgTLFmGh36LSfOeMCaJJdeCGP7Od4H1YzMUf254wZ
         08hYdeP+mtFlds0IJl8llmY7Q3+Mv/mWJL7wWmeXarGiTkkyxRcS5WzywNiuN82KVz2v
         Pi4w==
X-Gm-Message-State: AOJu0Yyy59tgcx9IeCZM2L0P3J8HeVm0jobsbuKbiWWeA0wj7IPQexdb
	5JuV0Q6oE63FCqWPYtq6xY9gGFrV6drM1E7XbJH0Wig/WONFUh36
X-Google-Smtp-Source: AGHT+IG3GgXZB3egKDxLl+WFU1d25cmgYKED43k13u+hgWBh9Cpa5v4U2lxr9qvpcWpLjBFjGQ+2DA==
X-Received: by 2002:a05:600c:3787:b0:40e:6193:b1a5 with SMTP id o7-20020a05600c378700b0040e6193b1a5mr5566533wmr.39.1706545739079;
        Mon, 29 Jan 2024 08:28:59 -0800 (PST)
From: Paul Durrant <xadimgnik@gmail.com>
X-Google-Original-From: Paul Durrant <paul@xen.org>
Message-ID: <db8cc8b2-79d8-47eb-a7d8-5d0a928ce47b@xen.org>
Date: Mon, 29 Jan 2024 16:28:57 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Reply-To: paul@xen.org
Subject: Re: [PATCH v5 2/3] x86/iommu: switch hwdom IOMMU to use a rangeset
Content-Language: en-US
To: Roger Pau Monne <roger.pau@citrix.com>, xen-devel@lists.xenproject.org
Cc: Oleksii Kurochko <oleksii.kurochko@gmail.com>,
 Community Manager <community.manager@xenproject.org>,
 Jan Beulich <jbeulich@suse.com>
References: <20240124172953.29814-1-roger.pau@citrix.com>
 <20240124172953.29814-3-roger.pau@citrix.com>
Organization: Xen Project
In-Reply-To: <20240124172953.29814-3-roger.pau@citrix.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit

On 24/01/2024 17:29, Roger Pau Monne wrote:
> The current loop that iterates from 0 to the maximum RAM address in order to
> setup the IOMMU mappings is highly inefficient, and it will get worse as the
> amount of RAM increases.  It's also not accounting for any reserved regions
> past the last RAM address.
> 
> Instead of iterating over memory addresses, iterate over the memory map regions
> and use a rangeset in order to keep track of which ranges need to be identity
> mapped in the hardware domain physical address space.
> 
> On an AMD EPYC 7452 with 512GiB of RAM, the time to execute
> arch_iommu_hwdom_init() in nanoseconds is:
> 
> x old
> + new
>      N           Min           Max        Median           Avg        Stddev
> x   5 2.2364154e+10  2.338244e+10 2.2474685e+10 2.2622409e+10 4.2949869e+08
> +   5       1025012       1033036       1026188     1028276.2     3623.1194
> Difference at 95.0% confidence
>          -2.26214e+10 +/- 4.42931e+08
>          -99.9955% +/- 9.05152e-05%
>          (Student's t, pooled s = 3.03701e+08)
> 
> Execution time of arch_iommu_hwdom_init() goes down from ~22s to ~0.001s.
> 
> Note there's a change for HVM domains (ie: PVH dom0) that get switched to
> create the p2m mappings using map_mmio_regions() instead of
> p2m_add_identity_entry(), so that ranges can be mapped with a single function
> call if possible.  Note that the interface of map_mmio_regions() doesn't
> allow creating read-only mappings, but so far there are no such mappings
> created for PVH dom0 in arch_iommu_hwdom_init().
> 
> No change intended in the resulting mappings that a hardware domain gets.
> 
> Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
> ---
> Changes since v4:
>   - Add default case to handle ACPI and NVS regions (which are not mapped)
>     unless in the low 4GB and when inclusive mode is set.
>   - Add changelog entry.
>   - Dropped Jans RB.
> 
> Changes since v3:
>   - Remove unnecessary line wraps.
> 
> Changes since v2:
>   - Simplify a bit the logic related to inclusive option, at the cost of making
>     some no-op calls on some cases.
> 
> Changes since v1:
>   - Split from bigger patch.
>   - Remove unneeded default case.
> 
> x86/iommu: add CHANGELOG entry for hwdom setup time improvements
> 
> Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>

Reviewed-by: Paul Durrant <paul@xen.org>



From xen-devel-bounces@lists.xenproject.org Mon Jan 29 16:31:10 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 29 Jan 2024 16:31:10 +0000
Received: from list by lists.xenproject.org with outflank-mailman.673038.1047165 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUUXN-0002Ne-2X; Mon, 29 Jan 2024 16:31:09 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 673038.1047165; Mon, 29 Jan 2024 16:31:09 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUUXM-0002NX-WB; Mon, 29 Jan 2024 16:31:08 +0000
Received: by outflank-mailman (input) for mailman id 673038;
 Mon, 29 Jan 2024 16:31:08 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=9VRI=JH=gmail.com=xadimgnik@srs-se1.protection.inumbo.net>)
 id 1rUUXM-0002NR-6T
 for xen-devel@lists.xenproject.org; Mon, 29 Jan 2024 16:31:08 +0000
Received: from mail-wr1-x435.google.com (mail-wr1-x435.google.com
 [2a00:1450:4864:20::435])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id cc9e8702-bec3-11ee-98f5-efadbce2ee36;
 Mon, 29 Jan 2024 17:31:06 +0100 (CET)
Received: by mail-wr1-x435.google.com with SMTP id
 ffacd0b85a97d-33934567777so2496436f8f.1
 for <xen-devel@lists.xenproject.org>; Mon, 29 Jan 2024 08:31:05 -0800 (PST)
Received: from [192.168.13.31] (54-240-197-239.amazon.com. [54.240.197.239])
 by smtp.gmail.com with ESMTPSA id
 o7-20020a5d6847000000b00339272c885csm8443905wrw.87.2024.01.29.08.31.04
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 29 Jan 2024 08:31:04 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: cc9e8702-bec3-11ee-98f5-efadbce2ee36
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1706545865; x=1707150665; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:organization:references:cc:to
         :content-language:subject:reply-to:user-agent:mime-version:date
         :message-id:from:from:to:cc:subject:date:message-id:reply-to;
        bh=umw2ymJHrHcUjP6X+VJC+3S6WYmpXezSYY5XbqcgcY4=;
        b=hrBGroHVuqBy+81Meg0QttFSGpO5Oe/JM+ZKMKtRFuu7Q8JUAIPsKed284NSpgBZOk
         rw2p/pm+D8BFD4rT2BDTMzVw+xxWhWI9Rl4WLyS/9+6V0njDjbOpu47HQOBMrnIGjzZS
         P5GN3jQejQA7C2Df+PtDVyvWpbQ9TI+J0OMEC1pS1Q+5tvNH0r2ISfIXGfoRzuWxar7Y
         B+/FCZ0aAY0CPNQTzIgB3VRoQROU2rAJNFiKGMy8gWidspRHaw+O1p+xZMe05V/n3Gca
         0+jlmSklml8aj0E/SETgBfAvfFWYv5uYvFjJwuiUaJAJ98DP/10ksHORdrFIqJNcxNqI
         LFeQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706545865; x=1707150665;
        h=content-transfer-encoding:in-reply-to:organization:references:cc:to
         :content-language:subject:reply-to:user-agent:mime-version:date
         :message-id:from:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to;
        bh=umw2ymJHrHcUjP6X+VJC+3S6WYmpXezSYY5XbqcgcY4=;
        b=XbPQrjVuwOoJ/hk2NcdAnF7rr1d6OUbK98tlEYTZ0wzCUmXFHBChpiOeMedpmAa5RN
         gkQXVsf8idpcQ/1anh7PIKMWttAcmn0HBxEhWkF8QBUAyJDOARZyXW4BxBAauhiUz9sr
         BNmUJQu82fMGjXv79cCtoPHo0BqDsgQmKwOolDms7exWBLSFTI2MPFoPQFaO8o0aGVEP
         ExkqwgXoYZyoHqx39p2GxJt+/atHsS+O2K4XFZMkdSz6ydVaXI6S1KSYbm0z6Pfrlo/I
         X+MUxRs34kKVajuqG5nu/10LXz6UgSDjPgOtzGuCYQTOebPHwYGrarQebdQMnX4PcMmW
         Q9tQ==
X-Gm-Message-State: AOJu0YzImabXxJFkFhl5owCHGzIOEJAF+LNzbHjUPtNkO39ncuyOi/wL
	O0A/71uCrgNimBdtuK2tacRP7Se2hJsFnrnQw7MwjvfEFV7RURoY
X-Google-Smtp-Source: AGHT+IF2uMBb6gt0XwRmTaX3zVcU4ftQT/IU/b8gtNh1+d7EqcNEg1wJ7xgbou4/4AwF7r1Ca5zZyw==
X-Received: by 2002:adf:e786:0:b0:33a:e77f:977b with SMTP id n6-20020adfe786000000b0033ae77f977bmr4053603wrm.12.1706545865175;
        Mon, 29 Jan 2024 08:31:05 -0800 (PST)
From: Paul Durrant <xadimgnik@gmail.com>
X-Google-Original-From: Paul Durrant <paul@xen.org>
Message-ID: <e16f950d-2e8d-451f-bdd3-3ff9b66a070c@xen.org>
Date: Mon, 29 Jan 2024 16:31:03 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Reply-To: paul@xen.org
Subject: Re: [PATCH v5 3/3] x86/iommu: cleanup unused functions
Content-Language: en-US
To: Roger Pau Monne <roger.pau@citrix.com>, xen-devel@lists.xenproject.org
Cc: Jan Beulich <jbeulich@suse.com>, Andrew Cooper
 <andrew.cooper3@citrix.com>, Wei Liu <wl@xen.org>,
 Lukasz Hawrylko <lukasz@hawrylko.pl>,
 "Daniel P. Smith" <dpsmith@apertussolutions.com>,
 =?UTF-8?Q?Mateusz_M=C3=B3wka?= <mateusz.mowka@intel.com>
References: <20240124172953.29814-1-roger.pau@citrix.com>
 <20240124172953.29814-4-roger.pau@citrix.com>
Organization: Xen Project
In-Reply-To: <20240124172953.29814-4-roger.pau@citrix.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit

On 24/01/2024 17:29, Roger Pau Monne wrote:
> Remove xen_in_range() and vpci_is_mmcfg_address() now that hey are unused.
> 
> Adjust comments to point to the new functions that replace the existing ones.
> 
> No functional change.
> 
> Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
> Reviewed-by: Jan Beulich <jbeulich@suse.com>
> ---
> Changes since v2:
>   - Do remove vpci_is_mmcfg_address().
> ---
> Can be squashed with the previous patch if desired, split as a separate patch
> for clarity.
> ---
>   xen/arch/x86/hvm/io.c             |  5 ---
>   xen/arch/x86/include/asm/hvm/io.h |  3 --
>   xen/arch/x86/include/asm/setup.h  |  1 -
>   xen/arch/x86/setup.c              | 53 ++-----------------------------
>   xen/arch/x86/tboot.c              |  2 +-
>   5 files changed, 3 insertions(+), 61 deletions(-)
> 

Reviewed-by: Paul Durrant <paul@xen.org>



From xen-devel-bounces@lists.xenproject.org Mon Jan 29 16:45:35 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 29 Jan 2024 16:45:35 +0000
Received: from list by lists.xenproject.org with outflank-mailman.673042.1047176 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUUlF-0004xi-9n; Mon, 29 Jan 2024 16:45:29 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 673042.1047176; Mon, 29 Jan 2024 16:45:29 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUUlF-0004xb-5V; Mon, 29 Jan 2024 16:45:29 +0000
Received: by outflank-mailman (input) for mailman id 673042;
 Mon, 29 Jan 2024 16:45:27 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=RfnY=JH=linaro.org=philmd@srs-se1.protection.inumbo.net>)
 id 1rUUlD-0004xV-Nu
 for xen-devel@lists.xenproject.org; Mon, 29 Jan 2024 16:45:27 +0000
Received: from mail-wm1-x32a.google.com (mail-wm1-x32a.google.com
 [2a00:1450:4864:20::32a])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id cd5d7ae1-bec5-11ee-8a43-1f161083a0e0;
 Mon, 29 Jan 2024 17:45:26 +0100 (CET)
Received: by mail-wm1-x32a.google.com with SMTP id
 5b1f17b1804b1-40ee705e9bfso32595395e9.0
 for <xen-devel@lists.xenproject.org>; Mon, 29 Jan 2024 08:45:26 -0800 (PST)
Received: from m1x-phil.lan ([176.187.219.39])
 by smtp.gmail.com with ESMTPSA id
 m8-20020a05600c4f4800b0040efc268713sm854310wmq.26.2024.01.29.08.45.22
 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256);
 Mon, 29 Jan 2024 08:45:24 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: cd5d7ae1-bec5-11ee-8a43-1f161083a0e0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=linaro.org; s=google; t=1706546725; x=1707151525; darn=lists.xenproject.org;
        h=content-transfer-encoding:mime-version:references:in-reply-to
         :message-id:date:subject:cc:to:from:from:to:cc:subject:date
         :message-id:reply-to;
        bh=xBAuw8z0uG8eCaMVzH857DmMp0S8FwvlSIliw26a1Io=;
        b=U3oqbPl48lxPL58pfq34k/NpcVLQk+FUsGBcZFPQmsLAOuBiSdfoMwfBocJb9XVKSL
         89sMPBqMqvzGxVyLW2Tdua8/WbFE0sjYuLoltlg4BA5wvbsoJOcEVzaWEu0oVSCBj2J5
         ZNNI0SjZ3ES3XbgoZux5UmZj7b0Hoj44G+iKG2LXpG5Di9Kl8q3fAa9XeikXMq1SItOz
         pAmTteN3JcE+Msh76thC3V5euIKAPC4qTVPg+JcH4WUUcg3rQr1b1wA6O7QxOqyXgDbL
         N1tppQ4E102tWVxRBU/39tMa9Fet8+UZOr6o8uwAskAgWRUrIAJnYdecUL21PFTT9rXv
         v58Q==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706546725; x=1707151525;
        h=content-transfer-encoding:mime-version:references:in-reply-to
         :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to;
        bh=xBAuw8z0uG8eCaMVzH857DmMp0S8FwvlSIliw26a1Io=;
        b=V+ay8PoyD82iYJrEe1m+1X28sMLpIOlRNfHV/pWkylsZIIW9CsLQGZFeNZs8jYQT/0
         ciDJEXoYV6g5KlhHUrEOXvVQLovME6l2D0RbxFx1Ah1FbWIfK0s/5eKzAeEGuwaPDTjP
         aw1ceIjok8hPZ8MTIZg8pZXNCr+wPiQQV5vu2KdvhMgPiWKTDq/ZnDb9nn1NGWj+lEib
         6oW2JiC42pAbv0zPg3ah4q5RYLptG41EGYrObbxM97z5BBZ5ayu0bFhvh0l5Zjr69TD4
         xCsTtM6efIrVQ/Q5ZsSDM7nTc47w7gf9tp0pEN1z2ngC1Uyb+Phd4Zo+RtmmQ6mygXoz
         3sVA==
X-Gm-Message-State: AOJu0Yy4KUTKOz8gk2mo4fiXB0aNq3ed9I+KkHw4zSIsYUBF7T4vW2vs
	gu3AT5oEbmDPc7pOKAgIFMCXuPYf2mhiYvZfDsMWgO1Cd/CiWpdDMBxWAyewxzI=
X-Google-Smtp-Source: AGHT+IHdySqf8l0B9eRILTzofQq4FI067bCYaqQHaOlpomTXnMMg2eMjSm5D6MRXFRyoc/eMCrPXNw==
X-Received: by 2002:a05:600c:4d96:b0:40e:e7c6:ddd3 with SMTP id v22-20020a05600c4d9600b0040ee7c6ddd3mr5188843wmp.9.1706546725381;
        Mon, 29 Jan 2024 08:45:25 -0800 (PST)
From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= <philmd@linaro.org>
To: qemu-devel@nongnu.org
Cc: qemu-riscv@nongnu.org,
	qemu-s390x@nongnu.org,
	Paolo Bonzini <pbonzini@redhat.com>,
	kvm@vger.kernel.org,
	qemu-ppc@nongnu.org,
	qemu-arm@nongnu.org,
	Richard Henderson <richard.henderson@linaro.org>,
	=?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= <philmd@linaro.org>,
	Zhao Liu <zhao1.liu@intel.com>,
	Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>,
	"Michael S. Tsirkin" <mst@redhat.com>,
	Marcel Apfelbaum <marcel.apfelbaum@gmail.com>,
	=?UTF-8?q?C=C3=A9dric=20Le=20Goater?= <clg@kaod.org>,
	Nicholas Piggin <npiggin@gmail.com>,
	=?UTF-8?q?Fr=C3=A9d=C3=A9ric=20Barrat?= <fbarrat@linux.ibm.com>,
	=?UTF-8?q?Alex=20Benn=C3=A9e?= <alex.bennee@linaro.org>,
	Viresh Kumar <viresh.kumar@linaro.org>,
	mzamazal@redhat.com,
	Stefano Stabellini <sstabellini@kernel.org>,
	Anthony Perard <anthony.perard@citrix.com>,
	Paul Durrant <paul@xen.org>,
	Peter Xu <peterx@redhat.com>,
	Fabiano Rosas <farosas@suse.de>,
	Peter Maydell <peter.maydell@linaro.org>,
	Cameron Esfahani <dirty@apple.com>,
	Roman Bolshakov <rbolshakov@ddn.com>,
	Laurent Vivier <laurent@vivier.eu>,
	Daniel Henrique Barboza <danielhb413@gmail.com>,
	Palmer Dabbelt <palmer@dabbelt.com>,
	Alistair Francis <alistair.francis@wdc.com>,
	Bin Meng <bin.meng@windriver.com>,
	Weiwei Li <liwei1518@gmail.com>,
	Liu Zhiwei <zhiwei_liu@linux.alibaba.com>,
	xen-devel@lists.xenproject.org
Subject: [PATCH v3 01/29] bulk: Access existing variables initialized to &S->F when available
Date: Mon, 29 Jan 2024 17:44:43 +0100
Message-ID: <20240129164514.73104-2-philmd@linaro.org>
X-Mailer: git-send-email 2.41.0
In-Reply-To: <20240129164514.73104-1-philmd@linaro.org>
References: <20240129164514.73104-1-philmd@linaro.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

When a variable is initialized to &struct->field, use it
in place. Rationale: while this makes the code more concise,
this also helps static analyzers.

Mechanical change using the following Coccinelle spatch script:

 @@
 type S, F;
 identifier s, m, v;
 @@
      S *s;
      ...
      F *v = &s->m;
      <+...
 -    &s->m
 +    v
      ...+>

Inspired-by: Zhao Liu <zhao1.liu@intel.com>
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
---
 hw/display/ati.c              |  2 +-
 hw/misc/macio/pmu.c           |  2 +-
 hw/misc/pvpanic-pci.c         |  2 +-
 hw/pci-bridge/cxl_root_port.c |  2 +-
 hw/ppc/pnv.c                  | 20 ++++++++++----------
 hw/virtio/vhost-user-gpio.c   |  8 ++++----
 hw/virtio/vhost-user-scmi.c   |  6 +++---
 hw/virtio/virtio-pci.c        |  2 +-
 hw/xen/xen_pt.c               |  6 +++---
 migration/multifd-zlib.c      |  2 +-
 target/arm/cpu.c              |  4 ++--
 target/arm/kvm.c              |  2 +-
 target/arm/machine.c          |  6 +++---
 target/i386/hvf/x86hvf.c      |  2 +-
 target/m68k/helper.c          |  2 +-
 target/ppc/kvm.c              |  8 ++++----
 target/riscv/cpu_helper.c     |  2 +-
 17 files changed, 39 insertions(+), 39 deletions(-)

diff --git a/hw/display/ati.c b/hw/display/ati.c
index 569b8f6165..8d2501bd82 100644
--- a/hw/display/ati.c
+++ b/hw/display/ati.c
@@ -991,7 +991,7 @@ static void ati_vga_realize(PCIDevice *dev, Error **errp)
     }
     vga_init(vga, OBJECT(s), pci_address_space(dev),
              pci_address_space_io(dev), true);
-    vga->con = graphic_console_init(DEVICE(s), 0, s->vga.hw_ops, &s->vga);
+    vga->con = graphic_console_init(DEVICE(s), 0, s->vga.hw_ops, vga);
     if (s->cursor_guest_mode) {
         vga->cursor_invalidate = ati_cursor_invalidate;
         vga->cursor_draw_line = ati_cursor_draw_line;
diff --git a/hw/misc/macio/pmu.c b/hw/misc/macio/pmu.c
index e9a90da88f..7fe1c4e517 100644
--- a/hw/misc/macio/pmu.c
+++ b/hw/misc/macio/pmu.c
@@ -737,7 +737,7 @@ static void pmu_realize(DeviceState *dev, Error **errp)
     timer_mod(s->one_sec_timer, s->one_sec_target);
 
     if (s->has_adb) {
-        qbus_init(&s->adb_bus, sizeof(s->adb_bus), TYPE_ADB_BUS,
+        qbus_init(adb_bus, sizeof(s->adb_bus), TYPE_ADB_BUS,
                   dev, "adb.0");
         adb_register_autopoll_callback(adb_bus, pmu_adb_poll, s);
     }
diff --git a/hw/misc/pvpanic-pci.c b/hw/misc/pvpanic-pci.c
index c01e4ce864..83be95d0d2 100644
--- a/hw/misc/pvpanic-pci.c
+++ b/hw/misc/pvpanic-pci.c
@@ -48,7 +48,7 @@ static void pvpanic_pci_realizefn(PCIDevice *dev, Error **errp)
     PVPanicPCIState *s = PVPANIC_PCI_DEVICE(dev);
     PVPanicState *ps = &s->pvpanic;
 
-    pvpanic_setup_io(&s->pvpanic, DEVICE(s), 2);
+    pvpanic_setup_io(ps, DEVICE(s), 2);
 
     pci_register_bar(dev, 0, PCI_BASE_ADDRESS_SPACE_MEMORY, &ps->mr);
 }
diff --git a/hw/pci-bridge/cxl_root_port.c b/hw/pci-bridge/cxl_root_port.c
index 8f97697631..2cf2f7bf5f 100644
--- a/hw/pci-bridge/cxl_root_port.c
+++ b/hw/pci-bridge/cxl_root_port.c
@@ -175,7 +175,7 @@ static void cxl_rp_realize(DeviceState *dev, Error **errp)
 
     cxl_cstate->dvsec_offset = CXL_ROOT_PORT_DVSEC_OFFSET;
     cxl_cstate->pdev = pci_dev;
-    build_dvsecs(&crp->cxl_cstate);
+    build_dvsecs(cxl_cstate);
 
     cxl_component_register_block_init(OBJECT(pci_dev), cxl_cstate,
                                       TYPE_CXL_ROOT_PORT);
diff --git a/hw/ppc/pnv.c b/hw/ppc/pnv.c
index 0297871bdd..202a569e27 100644
--- a/hw/ppc/pnv.c
+++ b/hw/ppc/pnv.c
@@ -1257,11 +1257,11 @@ static void pnv_chip_power8_realize(DeviceState *dev, Error **errp)
     }
 
     /* Processor Service Interface (PSI) Host Bridge */
-    object_property_set_int(OBJECT(&chip8->psi), "bar", PNV_PSIHB_BASE(chip),
+    object_property_set_int(OBJECT(psi8), "bar", PNV_PSIHB_BASE(chip),
                             &error_fatal);
-    object_property_set_link(OBJECT(&chip8->psi), ICS_PROP_XICS,
+    object_property_set_link(OBJECT(psi8), ICS_PROP_XICS,
                              OBJECT(chip8->xics), &error_abort);
-    if (!qdev_realize(DEVICE(&chip8->psi), NULL, errp)) {
+    if (!qdev_realize(DEVICE(psi8), NULL, errp)) {
         return;
     }
     pnv_xscom_add_subregion(chip, PNV_XSCOM_PSIHB_BASE,
@@ -1292,7 +1292,7 @@ static void pnv_chip_power8_realize(DeviceState *dev, Error **errp)
     }
     pnv_xscom_add_subregion(chip, PNV_XSCOM_OCC_BASE, &chip8->occ.xscom_regs);
     qdev_connect_gpio_out(DEVICE(&chip8->occ), 0,
-                          qdev_get_gpio_in(DEVICE(&chip8->psi), PSIHB_IRQ_OCC));
+                          qdev_get_gpio_in(DEVICE(psi8), PSIHB_IRQ_OCC));
 
     /* OCC SRAM model */
     memory_region_add_subregion(get_system_memory(), PNV_OCC_SENSOR_BASE(chip),
@@ -1543,12 +1543,12 @@ static void pnv_chip_power9_realize(DeviceState *dev, Error **errp)
                             &chip9->xive.xscom_regs);
 
     /* Processor Service Interface (PSI) Host Bridge */
-    object_property_set_int(OBJECT(&chip9->psi), "bar", PNV9_PSIHB_BASE(chip),
+    object_property_set_int(OBJECT(psi9), "bar", PNV9_PSIHB_BASE(chip),
                             &error_fatal);
     /* This is the only device with 4k ESB pages */
-    object_property_set_int(OBJECT(&chip9->psi), "shift", XIVE_ESB_4K,
+    object_property_set_int(OBJECT(psi9), "shift", XIVE_ESB_4K,
                             &error_fatal);
-    if (!qdev_realize(DEVICE(&chip9->psi), NULL, errp)) {
+    if (!qdev_realize(DEVICE(psi9), NULL, errp)) {
         return;
     }
     pnv_xscom_add_subregion(chip, PNV9_XSCOM_PSIHB_BASE,
@@ -1571,7 +1571,7 @@ static void pnv_chip_power9_realize(DeviceState *dev, Error **errp)
     }
     pnv_xscom_add_subregion(chip, PNV9_XSCOM_OCC_BASE, &chip9->occ.xscom_regs);
     qdev_connect_gpio_out(DEVICE(&chip9->occ), 0, qdev_get_gpio_in(
-                              DEVICE(&chip9->psi), PSIHB9_IRQ_OCC));
+                              DEVICE(psi9), PSIHB9_IRQ_OCC));
 
     /* OCC SRAM model */
     memory_region_add_subregion(get_system_memory(), PNV9_OCC_SENSOR_BASE(chip),
@@ -1586,7 +1586,7 @@ static void pnv_chip_power9_realize(DeviceState *dev, Error **errp)
     pnv_xscom_add_subregion(chip, PNV9_XSCOM_SBE_MBOX_BASE,
                             &chip9->sbe.xscom_mbox_regs);
     qdev_connect_gpio_out(DEVICE(&chip9->sbe), 0, qdev_get_gpio_in(
-                              DEVICE(&chip9->psi), PSIHB9_IRQ_PSU));
+                              DEVICE(psi9), PSIHB9_IRQ_PSU));
 
     /* HOMER */
     object_property_set_link(OBJECT(&chip9->homer), "chip", OBJECT(chip),
@@ -1627,7 +1627,7 @@ static void pnv_chip_power9_realize(DeviceState *dev, Error **errp)
                                         PNV9_XSCOM_I2CM_SIZE,
                                 &chip9->i2c[i].xscom_regs);
         qdev_connect_gpio_out(DEVICE(&chip9->i2c[i]), 0,
-                              qdev_get_gpio_in(DEVICE(&chip9->psi),
+                              qdev_get_gpio_in(DEVICE(psi9),
                                                PSIHB9_IRQ_SBE_I2C));
     }
 }
diff --git a/hw/virtio/vhost-user-gpio.c b/hw/virtio/vhost-user-gpio.c
index a83437a5da..6d4e9200ff 100644
--- a/hw/virtio/vhost-user-gpio.c
+++ b/hw/virtio/vhost-user-gpio.c
@@ -79,9 +79,9 @@ static int vu_gpio_start(VirtIODevice *vdev)
      * set needed for the vhost configuration. The backend may also
      * apply backend_features when the feature set is sent.
      */
-    vhost_ack_features(&gpio->vhost_dev, feature_bits, vdev->guest_features);
+    vhost_ack_features(vhost_dev, feature_bits, vdev->guest_features);
 
-    ret = vhost_dev_start(&gpio->vhost_dev, vdev, false);
+    ret = vhost_dev_start(vhost_dev, vdev, false);
     if (ret < 0) {
         error_report("Error starting vhost-user-gpio: %d", ret);
         goto err_guest_notifiers;
@@ -94,7 +94,7 @@ static int vu_gpio_start(VirtIODevice *vdev)
      * enabling/disabling irqfd.
      */
     for (i = 0; i < gpio->vhost_dev.nvqs; i++) {
-        vhost_virtqueue_mask(&gpio->vhost_dev, vdev, i, false);
+        vhost_virtqueue_mask(vhost_dev, vdev, i, false);
     }
 
     /*
@@ -114,7 +114,7 @@ static int vu_gpio_start(VirtIODevice *vdev)
 err_guest_notifiers:
     k->set_guest_notifiers(qbus->parent, gpio->vhost_dev.nvqs, false);
 err_host_notifiers:
-    vhost_dev_disable_notifiers(&gpio->vhost_dev, vdev);
+    vhost_dev_disable_notifiers(vhost_dev, vdev);
 
     return ret;
 }
diff --git a/hw/virtio/vhost-user-scmi.c b/hw/virtio/vhost-user-scmi.c
index 918bb7dcf7..300847e672 100644
--- a/hw/virtio/vhost-user-scmi.c
+++ b/hw/virtio/vhost-user-scmi.c
@@ -56,9 +56,9 @@ static int vu_scmi_start(VirtIODevice *vdev)
         goto err_host_notifiers;
     }
 
-    vhost_ack_features(&scmi->vhost_dev, feature_bits, vdev->guest_features);
+    vhost_ack_features(vhost_dev, feature_bits, vdev->guest_features);
 
-    ret = vhost_dev_start(&scmi->vhost_dev, vdev, true);
+    ret = vhost_dev_start(vhost_dev, vdev, true);
     if (ret < 0) {
         error_report("Error starting vhost-user-scmi: %d", ret);
         goto err_guest_notifiers;
@@ -71,7 +71,7 @@ static int vu_scmi_start(VirtIODevice *vdev)
      * enabling/disabling irqfd.
      */
     for (i = 0; i < scmi->vhost_dev.nvqs; i++) {
-        vhost_virtqueue_mask(&scmi->vhost_dev, vdev, i, false);
+        vhost_virtqueue_mask(vhost_dev, vdev, i, false);
     }
     return 0;
 
diff --git a/hw/virtio/virtio-pci.c b/hw/virtio/virtio-pci.c
index 1a7039fb0c..cb6940fc0e 100644
--- a/hw/virtio/virtio-pci.c
+++ b/hw/virtio/virtio-pci.c
@@ -1929,7 +1929,7 @@ static void virtio_pci_device_plugged(DeviceState *d, Error **errp)
     bool modern_pio = proxy->flags & VIRTIO_PCI_FLAG_MODERN_PIO_NOTIFY;
     uint8_t *config;
     uint32_t size;
-    VirtIODevice *vdev = virtio_bus_get_device(&proxy->bus);
+    VirtIODevice *vdev = virtio_bus_get_device(bus);
 
     /*
      * Virtio capabilities present without
diff --git a/hw/xen/xen_pt.c b/hw/xen/xen_pt.c
index 36e6f93c37..10ddf6bc91 100644
--- a/hw/xen/xen_pt.c
+++ b/hw/xen/xen_pt.c
@@ -710,7 +710,7 @@ static void xen_pt_destroy(PCIDevice *d) {
     uint8_t intx;
     int rc;
 
-    if (machine_irq && !xen_host_pci_device_closed(&s->real_device)) {
+    if (machine_irq && !xen_host_pci_device_closed(host_dev)) {
         intx = xen_pt_pci_intx(s);
         rc = xc_domain_unbind_pt_irq(xen_xc, xen_domid, machine_irq,
                                      PT_IRQ_TYPE_PCI,
@@ -759,8 +759,8 @@ static void xen_pt_destroy(PCIDevice *d) {
         memory_listener_unregister(&s->io_listener);
         s->listener_set = false;
     }
-    if (!xen_host_pci_device_closed(&s->real_device)) {
-        xen_host_pci_device_put(&s->real_device);
+    if (!xen_host_pci_device_closed(host_dev)) {
+        xen_host_pci_device_put(host_dev);
     }
 }
 /* init */
diff --git a/migration/multifd-zlib.c b/migration/multifd-zlib.c
index 37ce48621e..237ee49928 100644
--- a/migration/multifd-zlib.c
+++ b/migration/multifd-zlib.c
@@ -75,7 +75,7 @@ static int zlib_send_setup(MultiFDSendParams *p, Error **errp)
 err_free_zbuff:
     g_free(z->zbuff);
 err_deflate_end:
-    deflateEnd(&z->zs);
+    deflateEnd(zs);
 err_free_z:
     g_free(z);
     error_setg(errp, "multifd %u: %s", p->id, err_msg);
diff --git a/target/arm/cpu.c b/target/arm/cpu.c
index b60e103046..60ab8f3242 100644
--- a/target/arm/cpu.c
+++ b/target/arm/cpu.c
@@ -2087,7 +2087,7 @@ static void arm_cpu_realizefn(DeviceState *dev, Error **errp)
      * We rely on no XScale CPU having VFP so we can use the same bits in the
      * TB flags field for VECSTRIDE and XSCALE_CPAR.
      */
-    assert(arm_feature(&cpu->env, ARM_FEATURE_AARCH64) ||
+    assert(arm_feature(env, ARM_FEATURE_AARCH64) ||
            !cpu_isar_feature(aa32_vfp_simd, cpu) ||
            !arm_feature(env, ARM_FEATURE_XSCALE));
 
@@ -2129,7 +2129,7 @@ static void arm_cpu_realizefn(DeviceState *dev, Error **errp)
     }
 
     if (cpu->cfgend) {
-        if (arm_feature(&cpu->env, ARM_FEATURE_V7)) {
+        if (arm_feature(env, ARM_FEATURE_V7)) {
             cpu->reset_sctlr |= SCTLR_EE;
         } else {
             cpu->reset_sctlr |= SCTLR_B;
diff --git a/target/arm/kvm.c b/target/arm/kvm.c
index 81813030a5..ab85d628a8 100644
--- a/target/arm/kvm.c
+++ b/target/arm/kvm.c
@@ -1888,7 +1888,7 @@ int kvm_arch_init_vcpu(CPUState *cs)
         cpu->psci_version = QEMU_PSCI_VERSION_0_2;
         cpu->kvm_init_features[0] |= 1 << KVM_ARM_VCPU_PSCI_0_2;
     }
-    if (!arm_feature(&cpu->env, ARM_FEATURE_AARCH64)) {
+    if (!arm_feature(env, ARM_FEATURE_AARCH64)) {
         cpu->kvm_init_features[0] |= 1 << KVM_ARM_VCPU_EL1_32BIT;
     }
     if (!kvm_check_extension(cs->kvm_state, KVM_CAP_ARM_PMU_V3)) {
diff --git a/target/arm/machine.c b/target/arm/machine.c
index 9d7dbaea54..b2b39b2475 100644
--- a/target/arm/machine.c
+++ b/target/arm/machine.c
@@ -773,7 +773,7 @@ static int cpu_pre_load(void *opaque)
     env->irq_line_state = UINT32_MAX;
 
     if (!kvm_enabled()) {
-        pmu_op_start(&cpu->env);
+        pmu_op_start(env);
     }
 
     return 0;
@@ -871,11 +871,11 @@ static int cpu_post_load(void *opaque, int version_id)
     }
 
     if (!kvm_enabled()) {
-        pmu_op_finish(&cpu->env);
+        pmu_op_finish(env);
     }
 
     if (tcg_enabled()) {
-        arm_rebuild_hflags(&cpu->env);
+        arm_rebuild_hflags(env);
     }
 
     return 0;
diff --git a/target/i386/hvf/x86hvf.c b/target/i386/hvf/x86hvf.c
index 3b1ef5f49a..be2c46246e 100644
--- a/target/i386/hvf/x86hvf.c
+++ b/target/i386/hvf/x86hvf.c
@@ -408,7 +408,7 @@ bool hvf_inject_interrupts(CPUState *cs)
     if (!(env->hflags & HF_INHIBIT_IRQ_MASK) &&
         (cs->interrupt_request & CPU_INTERRUPT_HARD) &&
         (env->eflags & IF_MASK) && !(info & VMCS_INTR_VALID)) {
-        int line = cpu_get_pic_interrupt(&x86cpu->env);
+        int line = cpu_get_pic_interrupt(env);
         cs->interrupt_request &= ~CPU_INTERRUPT_HARD;
         if (line >= 0) {
             wvmcs(cs->accel->fd, VMCS_ENTRY_INTR_INFO, line |
diff --git a/target/m68k/helper.c b/target/m68k/helper.c
index 14508dfa11..a812f328a1 100644
--- a/target/m68k/helper.c
+++ b/target/m68k/helper.c
@@ -972,7 +972,7 @@ bool m68k_cpu_tlb_fill(CPUState *cs, vaddr address, int size,
         access_type |= ACCESS_SUPER;
     }
 
-    ret = get_physical_address(&cpu->env, &physical, &prot,
+    ret = get_physical_address(env, &physical, &prot,
                                address, access_type, &page_size);
     if (likely(ret == 0)) {
         tlb_set_page(cs, address & TARGET_PAGE_MASK,
diff --git a/target/ppc/kvm.c b/target/ppc/kvm.c
index 26fa9d0575..b95a0b4928 100644
--- a/target/ppc/kvm.c
+++ b/target/ppc/kvm.c
@@ -635,8 +635,8 @@ static int kvm_put_fp(CPUState *cs)
 
         for (i = 0; i < 32; i++) {
             uint64_t vsr[2];
-            uint64_t *fpr = cpu_fpr_ptr(&cpu->env, i);
-            uint64_t *vsrl = cpu_vsrl_ptr(&cpu->env, i);
+            uint64_t *fpr = cpu_fpr_ptr(env, i);
+            uint64_t *vsrl = cpu_vsrl_ptr(env, i);
 
 #if HOST_BIG_ENDIAN
             vsr[0] = float64_val(*fpr);
@@ -704,8 +704,8 @@ static int kvm_get_fp(CPUState *cs)
 
         for (i = 0; i < 32; i++) {
             uint64_t vsr[2];
-            uint64_t *fpr = cpu_fpr_ptr(&cpu->env, i);
-            uint64_t *vsrl = cpu_vsrl_ptr(&cpu->env, i);
+            uint64_t *fpr = cpu_fpr_ptr(env, i);
+            uint64_t *vsrl = cpu_vsrl_ptr(env, i);
 
             reg.addr = (uintptr_t) &vsr;
             reg.id = vsx ? KVM_REG_PPC_VSR(i) : KVM_REG_PPC_FPR(i);
diff --git a/target/riscv/cpu_helper.c b/target/riscv/cpu_helper.c
index c7cc7eb423..791435d628 100644
--- a/target/riscv/cpu_helper.c
+++ b/target/riscv/cpu_helper.c
@@ -1200,7 +1200,7 @@ hwaddr riscv_cpu_get_phys_page_debug(CPUState *cs, vaddr addr)
     CPURISCVState *env = &cpu->env;
     hwaddr phys_addr;
     int prot;
-    int mmu_idx = cpu_mmu_index(&cpu->env, false);
+    int mmu_idx = cpu_mmu_index(env, false);
 
     if (get_physical_address(env, &phys_addr, &prot, addr, NULL, 0, mmu_idx,
                              true, env->virt_enabled, true)) {
-- 
2.41.0



From xen-devel-bounces@lists.xenproject.org Mon Jan 29 16:46:53 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 29 Jan 2024 16:46:53 +0000
Received: from list by lists.xenproject.org with outflank-mailman.673044.1047186 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUUmZ-0005XT-MN; Mon, 29 Jan 2024 16:46:51 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 673044.1047186; Mon, 29 Jan 2024 16:46:51 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUUmZ-0005XM-JD; Mon, 29 Jan 2024 16:46:51 +0000
Received: by outflank-mailman (input) for mailman id 673044;
 Mon, 29 Jan 2024 16:46:49 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=RfnY=JH=linaro.org=philmd@srs-se1.protection.inumbo.net>)
 id 1rUUmX-0005Wr-G7
 for xen-devel@lists.xenproject.org; Mon, 29 Jan 2024 16:46:49 +0000
Received: from mail-wr1-x42d.google.com (mail-wr1-x42d.google.com
 [2a00:1450:4864:20::42d])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id fd81ecd8-bec5-11ee-98f5-efadbce2ee36;
 Mon, 29 Jan 2024 17:46:46 +0100 (CET)
Received: by mail-wr1-x42d.google.com with SMTP id
 ffacd0b85a97d-33ae42033e2so1631367f8f.1
 for <xen-devel@lists.xenproject.org>; Mon, 29 Jan 2024 08:46:46 -0800 (PST)
Received: from m1x-phil.lan ([176.187.219.39])
 by smtp.gmail.com with ESMTPSA id
 t18-20020adfe112000000b0033ade19da41sm7770957wrz.76.2024.01.29.08.46.44
 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256);
 Mon, 29 Jan 2024 08:46:45 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: fd81ecd8-bec5-11ee-98f5-efadbce2ee36
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=linaro.org; s=google; t=1706546806; x=1707151606; darn=lists.xenproject.org;
        h=content-transfer-encoding:mime-version:references:in-reply-to
         :message-id:date:subject:cc:to:from:from:to:cc:subject:date
         :message-id:reply-to;
        bh=lpXGLN2/IW24ZmgFDsSJNzcKsXfzg0OW+1h+hViDXfI=;
        b=GsdjRYbJjbh5IsKODtVL9gBsJ9IWHe/edBFRjqGs6nIwlNz4Qae1KGoCQz20TphCal
         BWB9LHpwegu0YCnoYqU6OUOL8E51CmaDZL3PS/hKXS7MHH7f7BP2Bp8cMQ7V24jIoUCG
         zNKBfTDXVgHdqNsJCYfzrqyz9M3KKggtkA3XEnF5ZVOZ/7AYHRIPQyKj6YroK4cIjxD6
         wmtX1Vp1quC+ZaKh3iXJwdV2qIPl5qNaZYKuDBfBLjqrdUBUdnn4WdaQkMPF2/1TPEA/
         x1mvUJNMtZhkJSEVGjv5YXyoNGv3wioMRiDo5hw30ntji1DW6qT8iKQzu7J5UZ38t+2j
         lmuA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706546806; x=1707151606;
        h=content-transfer-encoding:mime-version:references:in-reply-to
         :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to;
        bh=lpXGLN2/IW24ZmgFDsSJNzcKsXfzg0OW+1h+hViDXfI=;
        b=TzNGnoWyuOJO7mepSaRhBuxGd/hDAdTsOQqEvvTQxw5bN1cdRPWUh5iG8+fOyZnpT1
         0lZQb1fORxt+VXZ3jUUMJAlg8uunMLGVCpddfemRnh6vFZihy8XijveQtrs4cBa/FCFi
         Jk7c4KWtS4tv6r6BSMmu62q5ZZl5Wn0dxub1KtOWgJ0zKJBs7HYWO4YKEBcG2NIgttpM
         KPz9oQlP0bxNpxt9tuNV8XabMz2aNIIYp7oTPUZq3BqOGEV2u+u2/mEIjtWxWFlXWlrO
         mq2o3ZYm8KuVEgcr3zk04Q5aCCYfWNRqzLYZIA4f9hSKGXBGWUfQqx56eLxq3li9625F
         MYWw==
X-Gm-Message-State: AOJu0YzxKvSiLkaRhiOtfk44fAGsWmhxVoI2uvyvjvYUVPPXvIajTvb9
	rS3yCGIAqoVg1e7HCQsplPjXARYL6w8ftjZB0UbBzTLzvQ4CQsQPeFiPZvrnwyU=
X-Google-Smtp-Source: AGHT+IHYP78wTun1efbdPT3m4ED9+tbNOVo7TfxCjm+JiqqtOKQrQXroDflnsjZz5SiBtFeBKbp9LA==
X-Received: by 2002:adf:fdd0:0:b0:33a:df56:1f02 with SMTP id i16-20020adffdd0000000b0033adf561f02mr4447265wrs.13.1706546806131;
        Mon, 29 Jan 2024 08:46:46 -0800 (PST)
From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= <philmd@linaro.org>
To: qemu-devel@nongnu.org
Cc: qemu-riscv@nongnu.org,
	qemu-s390x@nongnu.org,
	Paolo Bonzini <pbonzini@redhat.com>,
	kvm@vger.kernel.org,
	qemu-ppc@nongnu.org,
	qemu-arm@nongnu.org,
	Richard Henderson <richard.henderson@linaro.org>,
	=?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= <philmd@linaro.org>,
	"Michael S. Tsirkin" <mst@redhat.com>,
	Marcel Apfelbaum <marcel.apfelbaum@gmail.com>,
	Eduardo Habkost <eduardo@habkost.net>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Anthony Perard <anthony.perard@citrix.com>,
	Paul Durrant <paul@xen.org>,
	Cameron Esfahani <dirty@apple.com>,
	Roman Bolshakov <rbolshakov@ddn.com>,
	Marcelo Tosatti <mtosatti@redhat.com>,
	David Woodhouse <dwmw2@infradead.org>,
	xen-devel@lists.xenproject.org
Subject: [PATCH v3 14/29] target/i386: Prefer fast cpu_env() over slower CPU QOM cast macro
Date: Mon, 29 Jan 2024 17:44:56 +0100
Message-ID: <20240129164514.73104-15-philmd@linaro.org>
X-Mailer: git-send-email 2.41.0
In-Reply-To: <20240129164514.73104-1-philmd@linaro.org>
References: <20240129164514.73104-1-philmd@linaro.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Mechanical patch produced running the command documented
in scripts/coccinelle/cpu_env.cocci_template header.

Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
---
 target/i386/hvf/vmx.h                | 13 ++-------
 hw/i386/fw_cfg.c                     |  3 +-
 hw/i386/vmmouse.c                    |  6 ++--
 hw/i386/xen/xen-hvm.c                |  3 +-
 target/i386/arch_dump.c              | 11 ++------
 target/i386/arch_memory_mapping.c    |  3 +-
 target/i386/cpu-dump.c               |  3 +-
 target/i386/cpu.c                    | 37 ++++++++----------------
 target/i386/helper.c                 | 42 ++++++++--------------------
 target/i386/hvf/hvf.c                |  8 ++----
 target/i386/hvf/x86.c                |  4 +--
 target/i386/hvf/x86_emu.c            |  6 ++--
 target/i386/hvf/x86_task.c           | 10 ++-----
 target/i386/hvf/x86hvf.c             |  9 ++----
 target/i386/kvm/kvm.c                |  6 ++--
 target/i386/kvm/xen-emu.c            | 32 +++++++--------------
 target/i386/tcg/sysemu/bpt_helper.c  |  3 +-
 target/i386/tcg/sysemu/excp_helper.c |  3 +-
 target/i386/tcg/tcg-cpu.c            | 14 +++-------
 target/i386/tcg/user/excp_helper.c   |  6 ++--
 target/i386/tcg/user/seg_helper.c    |  3 +-
 21 files changed, 67 insertions(+), 158 deletions(-)

diff --git a/target/i386/hvf/vmx.h b/target/i386/hvf/vmx.h
index 0fffcfa46c..1ad042269b 100644
--- a/target/i386/hvf/vmx.h
+++ b/target/i386/hvf/vmx.h
@@ -175,8 +175,7 @@ static inline void macvm_set_cr4(hv_vcpuid_t vcpu, uint64_t cr4)
 
 static inline void macvm_set_rip(CPUState *cpu, uint64_t rip)
 {
-    X86CPU *x86_cpu = X86_CPU(cpu);
-    CPUX86State *env = &x86_cpu->env;
+    CPUX86State *env = cpu_env(cpu);
     uint64_t val;
 
     /* BUG, should take considering overlap.. */
@@ -196,10 +195,7 @@ static inline void macvm_set_rip(CPUState *cpu, uint64_t rip)
 
 static inline void vmx_clear_nmi_blocking(CPUState *cpu)
 {
-    X86CPU *x86_cpu = X86_CPU(cpu);
-    CPUX86State *env = &x86_cpu->env;
-
-    env->hflags2 &= ~HF2_NMI_MASK;
+    cpu_env(cpu)->hflags2 &= ~HF2_NMI_MASK;
     uint32_t gi = (uint32_t) rvmcs(cpu->accel->fd, VMCS_GUEST_INTERRUPTIBILITY);
     gi &= ~VMCS_INTERRUPTIBILITY_NMI_BLOCKING;
     wvmcs(cpu->accel->fd, VMCS_GUEST_INTERRUPTIBILITY, gi);
@@ -207,10 +203,7 @@ static inline void vmx_clear_nmi_blocking(CPUState *cpu)
 
 static inline void vmx_set_nmi_blocking(CPUState *cpu)
 {
-    X86CPU *x86_cpu = X86_CPU(cpu);
-    CPUX86State *env = &x86_cpu->env;
-
-    env->hflags2 |= HF2_NMI_MASK;
+    cpu_env(cpu)->hflags2 |= HF2_NMI_MASK;
     uint32_t gi = (uint32_t)rvmcs(cpu->accel->fd, VMCS_GUEST_INTERRUPTIBILITY);
     gi |= VMCS_INTERRUPTIBILITY_NMI_BLOCKING;
     wvmcs(cpu->accel->fd, VMCS_GUEST_INTERRUPTIBILITY, gi);
diff --git a/hw/i386/fw_cfg.c b/hw/i386/fw_cfg.c
index 7362daa45a..5239cd40fa 100644
--- a/hw/i386/fw_cfg.c
+++ b/hw/i386/fw_cfg.c
@@ -155,8 +155,7 @@ FWCfgState *fw_cfg_arch_create(MachineState *ms,
 
 void fw_cfg_build_feature_control(MachineState *ms, FWCfgState *fw_cfg)
 {
-    X86CPU *cpu = X86_CPU(ms->possible_cpus->cpus[0].cpu);
-    CPUX86State *env = &cpu->env;
+    CPUX86State *env = cpu_env(ms->possible_cpus->cpus[0].cpu);
     uint32_t unused, ebx, ecx, edx;
     uint64_t feature_control_bits = 0;
     uint64_t *val;
diff --git a/hw/i386/vmmouse.c b/hw/i386/vmmouse.c
index a8d014d09a..f292a14a15 100644
--- a/hw/i386/vmmouse.c
+++ b/hw/i386/vmmouse.c
@@ -74,8 +74,7 @@ struct VMMouseState {
 
 static void vmmouse_get_data(uint32_t *data)
 {
-    X86CPU *cpu = X86_CPU(current_cpu);
-    CPUX86State *env = &cpu->env;
+    CPUX86State *env = cpu_env(current_cpu);
 
     data[0] = env->regs[R_EAX]; data[1] = env->regs[R_EBX];
     data[2] = env->regs[R_ECX]; data[3] = env->regs[R_EDX];
@@ -84,8 +83,7 @@ static void vmmouse_get_data(uint32_t *data)
 
 static void vmmouse_set_data(const uint32_t *data)
 {
-    X86CPU *cpu = X86_CPU(current_cpu);
-    CPUX86State *env = &cpu->env;
+    CPUX86State *env = cpu_env(current_cpu);
 
     env->regs[R_EAX] = data[0]; env->regs[R_EBX] = data[1];
     env->regs[R_ECX] = data[2]; env->regs[R_EDX] = data[3];
diff --git a/hw/i386/xen/xen-hvm.c b/hw/i386/xen/xen-hvm.c
index f42621e674..61e5060117 100644
--- a/hw/i386/xen/xen-hvm.c
+++ b/hw/i386/xen/xen-hvm.c
@@ -487,8 +487,7 @@ static void regs_to_cpu(vmware_regs_t *vmport_regs, ioreq_t *req)
 
 static void regs_from_cpu(vmware_regs_t *vmport_regs)
 {
-    X86CPU *cpu = X86_CPU(current_cpu);
-    CPUX86State *env = &cpu->env;
+    CPUX86State *env = cpu_env(current_cpu);
 
     vmport_regs->ebx = env->regs[R_EBX];
     vmport_regs->ecx = env->regs[R_ECX];
diff --git a/target/i386/arch_dump.c b/target/i386/arch_dump.c
index c290910a04..8939ff9fa9 100644
--- a/target/i386/arch_dump.c
+++ b/target/i386/arch_dump.c
@@ -203,7 +203,6 @@ int x86_cpu_write_elf64_note(WriteCoreDumpFunction f, CPUState *cs,
 int x86_cpu_write_elf32_note(WriteCoreDumpFunction f, CPUState *cs,
                              int cpuid, DumpState *s)
 {
-    X86CPU *cpu = X86_CPU(cs);
     x86_elf_prstatus prstatus;
     Elf32_Nhdr *note;
     char *buf;
@@ -211,7 +210,7 @@ int x86_cpu_write_elf32_note(WriteCoreDumpFunction f, CPUState *cs,
     const char *name = "CORE";
     int ret;
 
-    x86_fill_elf_prstatus(&prstatus, &cpu->env, cpuid);
+    x86_fill_elf_prstatus(&prstatus, cpu_env(cs), cpuid);
     descsz = sizeof(x86_elf_prstatus);
     note_size = ELF_NOTE_SIZE(sizeof(Elf32_Nhdr), name_size, descsz);
     note = g_malloc0(note_size);
@@ -381,17 +380,13 @@ static inline int cpu_write_qemu_note(WriteCoreDumpFunction f,
 int x86_cpu_write_elf64_qemunote(WriteCoreDumpFunction f, CPUState *cs,
                                  DumpState *s)
 {
-    X86CPU *cpu = X86_CPU(cs);
-
-    return cpu_write_qemu_note(f, &cpu->env, s, 1);
+    return cpu_write_qemu_note(f, cpu_env(cs), s, 1);
 }
 
 int x86_cpu_write_elf32_qemunote(WriteCoreDumpFunction f, CPUState *cs,
                                  DumpState *s)
 {
-    X86CPU *cpu = X86_CPU(cs);
-
-    return cpu_write_qemu_note(f, &cpu->env, s, 0);
+    return cpu_write_qemu_note(f, cpu_env(cs), s, 0);
 }
 
 int cpu_get_dump_info(ArchDumpInfo *info,
diff --git a/target/i386/arch_memory_mapping.c b/target/i386/arch_memory_mapping.c
index d1ff659128..c0604d5956 100644
--- a/target/i386/arch_memory_mapping.c
+++ b/target/i386/arch_memory_mapping.c
@@ -269,8 +269,7 @@ static void walk_pml5e(MemoryMappingList *list, AddressSpace *as,
 bool x86_cpu_get_memory_mapping(CPUState *cs, MemoryMappingList *list,
                                 Error **errp)
 {
-    X86CPU *cpu = X86_CPU(cs);
-    CPUX86State *env = &cpu->env;
+    CPUX86State *env = cpu_env(cs);
     int32_t a20_mask;
 
     if (!cpu_paging_enabled(cs)) {
diff --git a/target/i386/cpu-dump.c b/target/i386/cpu-dump.c
index 40697064d9..5459d84abd 100644
--- a/target/i386/cpu-dump.c
+++ b/target/i386/cpu-dump.c
@@ -343,8 +343,7 @@ void x86_cpu_dump_local_apic_state(CPUState *cs, int flags)
 
 void x86_cpu_dump_state(CPUState *cs, FILE *f, int flags)
 {
-    X86CPU *cpu = X86_CPU(cs);
-    CPUX86State *env = &cpu->env;
+    CPUX86State *env = cpu_env(cs);
     int eflags, i, nb;
     char cc_op_name[32];
     static const char *seg_name[6] = { "ES", "CS", "SS", "DS", "FS", "GS" };
diff --git a/target/i386/cpu.c b/target/i386/cpu.c
index 66345c204a..5d7a266d27 100644
--- a/target/i386/cpu.c
+++ b/target/i386/cpu.c
@@ -5062,8 +5062,7 @@ static void x86_cpuid_version_get_family(Object *obj, Visitor *v,
                                          const char *name, void *opaque,
                                          Error **errp)
 {
-    X86CPU *cpu = X86_CPU(obj);
-    CPUX86State *env = &cpu->env;
+    CPUX86State *env = cpu_env(CPU(obj));
     int64_t value;
 
     value = (env->cpuid_version >> 8) & 0xf;
@@ -5077,8 +5076,7 @@ static void x86_cpuid_version_set_family(Object *obj, Visitor *v,
                                          const char *name, void *opaque,
                                          Error **errp)
 {
-    X86CPU *cpu = X86_CPU(obj);
-    CPUX86State *env = &cpu->env;
+    CPUX86State *env = cpu_env(CPU(obj));
     const int64_t min = 0;
     const int64_t max = 0xff + 0xf;
     int64_t value;
@@ -5104,8 +5102,7 @@ static void x86_cpuid_version_get_model(Object *obj, Visitor *v,
                                         const char *name, void *opaque,
                                         Error **errp)
 {
-    X86CPU *cpu = X86_CPU(obj);
-    CPUX86State *env = &cpu->env;
+    CPUX86State *env = cpu_env(CPU(obj));
     int64_t value;
 
     value = (env->cpuid_version >> 4) & 0xf;
@@ -5117,8 +5114,7 @@ static void x86_cpuid_version_set_model(Object *obj, Visitor *v,
                                         const char *name, void *opaque,
                                         Error **errp)
 {
-    X86CPU *cpu = X86_CPU(obj);
-    CPUX86State *env = &cpu->env;
+    CPUX86State *env = cpu_env(CPU(obj));
     const int64_t min = 0;
     const int64_t max = 0xff;
     int64_t value;
@@ -5140,11 +5136,9 @@ static void x86_cpuid_version_get_stepping(Object *obj, Visitor *v,
                                            const char *name, void *opaque,
                                            Error **errp)
 {
-    X86CPU *cpu = X86_CPU(obj);
-    CPUX86State *env = &cpu->env;
     int64_t value;
 
-    value = env->cpuid_version & 0xf;
+    value = cpu_env(CPU(obj))->cpuid_version & 0xf;
     visit_type_int(v, name, &value, errp);
 }
 
@@ -5152,8 +5146,7 @@ static void x86_cpuid_version_set_stepping(Object *obj, Visitor *v,
                                            const char *name, void *opaque,
                                            Error **errp)
 {
-    X86CPU *cpu = X86_CPU(obj);
-    CPUX86State *env = &cpu->env;
+    CPUX86State *env = cpu_env(CPU(obj));
     const int64_t min = 0;
     const int64_t max = 0xf;
     int64_t value;
@@ -5173,8 +5166,7 @@ static void x86_cpuid_version_set_stepping(Object *obj, Visitor *v,
 
 static char *x86_cpuid_get_vendor(Object *obj, Error **errp)
 {
-    X86CPU *cpu = X86_CPU(obj);
-    CPUX86State *env = &cpu->env;
+    CPUX86State *env = cpu_env(CPU(obj));
     char *value;
 
     value = g_malloc(CPUID_VENDOR_SZ + 1);
@@ -5186,8 +5178,7 @@ static char *x86_cpuid_get_vendor(Object *obj, Error **errp)
 static void x86_cpuid_set_vendor(Object *obj, const char *value,
                                  Error **errp)
 {
-    X86CPU *cpu = X86_CPU(obj);
-    CPUX86State *env = &cpu->env;
+    CPUX86State *env = cpu_env(CPU(obj));
     int i;
 
     if (strlen(value) != CPUID_VENDOR_SZ) {
@@ -5208,8 +5199,7 @@ static void x86_cpuid_set_vendor(Object *obj, const char *value,
 
 static char *x86_cpuid_get_model_id(Object *obj, Error **errp)
 {
-    X86CPU *cpu = X86_CPU(obj);
-    CPUX86State *env = &cpu->env;
+    CPUX86State *env = cpu_env(CPU(obj));
     char *value;
     int i;
 
@@ -5224,8 +5214,7 @@ static char *x86_cpuid_get_model_id(Object *obj, Error **errp)
 static void x86_cpuid_set_model_id(Object *obj, const char *model_id,
                                    Error **errp)
 {
-    X86CPU *cpu = X86_CPU(obj);
-    CPUX86State *env = &cpu->env;
+    CPUX86State *env = cpu_env(CPU(obj));
     int c, len, i;
 
     if (model_id == NULL) {
@@ -7673,8 +7662,7 @@ static vaddr x86_cpu_get_pc(CPUState *cs)
 
 int x86_cpu_pending_interrupt(CPUState *cs, int interrupt_request)
 {
-    X86CPU *cpu = X86_CPU(cs);
-    CPUX86State *env = &cpu->env;
+    CPUX86State *env = cpu_env(cs);
 
 #if !defined(CONFIG_USER_ONLY)
     if (interrupt_request & CPU_INTERRUPT_POLL) {
@@ -7722,8 +7710,7 @@ static bool x86_cpu_has_work(CPUState *cs)
 
 static void x86_disas_set_info(CPUState *cs, disassemble_info *info)
 {
-    X86CPU *cpu = X86_CPU(cs);
-    CPUX86State *env = &cpu->env;
+    CPUX86State *env = cpu_env(cs);
 
     info->mach = (env->hflags & HF_CS64_MASK ? bfd_mach_x86_64
                   : env->hflags & HF_CS32_MASK ? bfd_mach_i386_i386
diff --git a/target/i386/helper.c b/target/i386/helper.c
index 2070dd0dda..4c11ef70f0 100644
--- a/target/i386/helper.c
+++ b/target/i386/helper.c
@@ -230,8 +230,7 @@ void cpu_x86_update_cr4(CPUX86State *env, uint32_t new_cr4)
 hwaddr x86_cpu_get_phys_page_attrs_debug(CPUState *cs, vaddr addr,
                                          MemTxAttrs *attrs)
 {
-    X86CPU *cpu = X86_CPU(cs);
-    CPUX86State *env = &cpu->env;
+    CPUX86State *env = cpu_env(cs);
     target_ulong pde_addr, pte_addr;
     uint64_t pte;
     int32_t a20_mask;
@@ -373,8 +372,7 @@ static void emit_guest_memory_failure(MemoryFailureAction action, bool ar,
 static void do_inject_x86_mce(CPUState *cs, run_on_cpu_data data)
 {
     MCEInjectionParams *params = data.host_ptr;
-    X86CPU *cpu = X86_CPU(cs);
-    CPUX86State *cenv = &cpu->env;
+    CPUX86State *cenv = cpu_env(cs);
     uint64_t *banks = cenv->mce_banks + 4 * params->bank;
     g_autofree char *msg = NULL;
     bool need_reset = false;
@@ -625,9 +623,7 @@ void cpu_load_efer(CPUX86State *env, uint64_t val)
 
 uint8_t x86_ldub_phys(CPUState *cs, hwaddr addr)
 {
-    X86CPU *cpu = X86_CPU(cs);
-    CPUX86State *env = &cpu->env;
-    MemTxAttrs attrs = cpu_get_mem_attrs(env);
+    MemTxAttrs attrs = cpu_get_mem_attrs(cpu_env(cs));
     AddressSpace *as = cpu_addressspace(cs, attrs);
 
     return address_space_ldub(as, addr, attrs, NULL);
@@ -635,9 +631,7 @@ uint8_t x86_ldub_phys(CPUState *cs, hwaddr addr)
 
 uint32_t x86_lduw_phys(CPUState *cs, hwaddr addr)
 {
-    X86CPU *cpu = X86_CPU(cs);
-    CPUX86State *env = &cpu->env;
-    MemTxAttrs attrs = cpu_get_mem_attrs(env);
+    MemTxAttrs attrs = cpu_get_mem_attrs(cpu_env(cs));
     AddressSpace *as = cpu_addressspace(cs, attrs);
 
     return address_space_lduw(as, addr, attrs, NULL);
@@ -645,9 +639,7 @@ uint32_t x86_lduw_phys(CPUState *cs, hwaddr addr)
 
 uint32_t x86_ldl_phys(CPUState *cs, hwaddr addr)
 {
-    X86CPU *cpu = X86_CPU(cs);
-    CPUX86State *env = &cpu->env;
-    MemTxAttrs attrs = cpu_get_mem_attrs(env);
+    MemTxAttrs attrs = cpu_get_mem_attrs(cpu_env(cs));
     AddressSpace *as = cpu_addressspace(cs, attrs);
 
     return address_space_ldl(as, addr, attrs, NULL);
@@ -655,9 +647,7 @@ uint32_t x86_ldl_phys(CPUState *cs, hwaddr addr)
 
 uint64_t x86_ldq_phys(CPUState *cs, hwaddr addr)
 {
-    X86CPU *cpu = X86_CPU(cs);
-    CPUX86State *env = &cpu->env;
-    MemTxAttrs attrs = cpu_get_mem_attrs(env);
+    MemTxAttrs attrs = cpu_get_mem_attrs(cpu_env(cs));
     AddressSpace *as = cpu_addressspace(cs, attrs);
 
     return address_space_ldq(as, addr, attrs, NULL);
@@ -665,9 +655,7 @@ uint64_t x86_ldq_phys(CPUState *cs, hwaddr addr)
 
 void x86_stb_phys(CPUState *cs, hwaddr addr, uint8_t val)
 {
-    X86CPU *cpu = X86_CPU(cs);
-    CPUX86State *env = &cpu->env;
-    MemTxAttrs attrs = cpu_get_mem_attrs(env);
+    MemTxAttrs attrs = cpu_get_mem_attrs(cpu_env(cs));
     AddressSpace *as = cpu_addressspace(cs, attrs);
 
     address_space_stb(as, addr, val, attrs, NULL);
@@ -675,9 +663,7 @@ void x86_stb_phys(CPUState *cs, hwaddr addr, uint8_t val)
 
 void x86_stl_phys_notdirty(CPUState *cs, hwaddr addr, uint32_t val)
 {
-    X86CPU *cpu = X86_CPU(cs);
-    CPUX86State *env = &cpu->env;
-    MemTxAttrs attrs = cpu_get_mem_attrs(env);
+    MemTxAttrs attrs = cpu_get_mem_attrs(cpu_env(cs));
     AddressSpace *as = cpu_addressspace(cs, attrs);
 
     address_space_stl_notdirty(as, addr, val, attrs, NULL);
@@ -685,9 +671,7 @@ void x86_stl_phys_notdirty(CPUState *cs, hwaddr addr, uint32_t val)
 
 void x86_stw_phys(CPUState *cs, hwaddr addr, uint32_t val)
 {
-    X86CPU *cpu = X86_CPU(cs);
-    CPUX86State *env = &cpu->env;
-    MemTxAttrs attrs = cpu_get_mem_attrs(env);
+    MemTxAttrs attrs = cpu_get_mem_attrs(cpu_env(cs));
     AddressSpace *as = cpu_addressspace(cs, attrs);
 
     address_space_stw(as, addr, val, attrs, NULL);
@@ -695,9 +679,7 @@ void x86_stw_phys(CPUState *cs, hwaddr addr, uint32_t val)
 
 void x86_stl_phys(CPUState *cs, hwaddr addr, uint32_t val)
 {
-    X86CPU *cpu = X86_CPU(cs);
-    CPUX86State *env = &cpu->env;
-    MemTxAttrs attrs = cpu_get_mem_attrs(env);
+    MemTxAttrs attrs = cpu_get_mem_attrs(cpu_env(cs));
     AddressSpace *as = cpu_addressspace(cs, attrs);
 
     address_space_stl(as, addr, val, attrs, NULL);
@@ -705,9 +687,7 @@ void x86_stl_phys(CPUState *cs, hwaddr addr, uint32_t val)
 
 void x86_stq_phys(CPUState *cs, hwaddr addr, uint64_t val)
 {
-    X86CPU *cpu = X86_CPU(cs);
-    CPUX86State *env = &cpu->env;
-    MemTxAttrs attrs = cpu_get_mem_attrs(env);
+    MemTxAttrs attrs = cpu_get_mem_attrs(cpu_env(cs));
     AddressSpace *as = cpu_addressspace(cs, attrs);
 
     address_space_stq(as, addr, val, attrs, NULL);
diff --git a/target/i386/hvf/hvf.c b/target/i386/hvf/hvf.c
index 11ffdd4c69..772578e3f4 100644
--- a/target/i386/hvf/hvf.c
+++ b/target/i386/hvf/hvf.c
@@ -159,10 +159,7 @@ static bool ept_emulation_fault(hvf_slot *slot, uint64_t gpa, uint64_t ept_qual)
 
 void hvf_arch_vcpu_destroy(CPUState *cpu)
 {
-    X86CPU *x86_cpu = X86_CPU(cpu);
-    CPUX86State *env = &x86_cpu->env;
-
-    g_free(env->hvf_mmio_buf);
+    g_free(cpu_env(cpu)->hvf_mmio_buf);
 }
 
 static void init_tsc_freq(CPUX86State *env)
@@ -313,8 +310,7 @@ int hvf_arch_init_vcpu(CPUState *cpu)
 
 static void hvf_store_events(CPUState *cpu, uint32_t ins_len, uint64_t idtvec_info)
 {
-    X86CPU *x86_cpu = X86_CPU(cpu);
-    CPUX86State *env = &x86_cpu->env;
+    CPUX86State *env = cpu_env(cpu);
 
     env->exception_nr = -1;
     env->exception_pending = 0;
diff --git a/target/i386/hvf/x86.c b/target/i386/hvf/x86.c
index 80e36136d0..932635232b 100644
--- a/target/i386/hvf/x86.c
+++ b/target/i386/hvf/x86.c
@@ -128,9 +128,7 @@ bool x86_is_real(CPUState *cpu)
 
 bool x86_is_v8086(CPUState *cpu)
 {
-    X86CPU *x86_cpu = X86_CPU(cpu);
-    CPUX86State *env = &x86_cpu->env;
-    return x86_is_protected(cpu) && (env->eflags & VM_MASK);
+    return x86_is_protected(cpu) && (cpu_env(cpu)->eflags & VM_MASK);
 }
 
 bool x86_is_long_mode(CPUState *cpu)
diff --git a/target/i386/hvf/x86_emu.c b/target/i386/hvf/x86_emu.c
index 3a3f0a50d0..0d13b32f91 100644
--- a/target/i386/hvf/x86_emu.c
+++ b/target/i386/hvf/x86_emu.c
@@ -1419,8 +1419,7 @@ static void init_cmd_handler()
 
 void load_regs(CPUState *cs)
 {
-    X86CPU *cpu = X86_CPU(cs);
-    CPUX86State *env = &cpu->env;
+    CPUX86State *env = cpu_env(cs);
 
     int i = 0;
     RRX(env, R_EAX) = rreg(cs->accel->fd, HV_X86_RAX);
@@ -1442,8 +1441,7 @@ void load_regs(CPUState *cs)
 
 void store_regs(CPUState *cs)
 {
-    X86CPU *cpu = X86_CPU(cs);
-    CPUX86State *env = &cpu->env;
+    CPUX86State *env = cpu_env(cs);
 
     int i = 0;
     wreg(cs->accel->fd, HV_X86_RAX, RAX(env));
diff --git a/target/i386/hvf/x86_task.c b/target/i386/hvf/x86_task.c
index f09bfbdda5..c173e9d883 100644
--- a/target/i386/hvf/x86_task.c
+++ b/target/i386/hvf/x86_task.c
@@ -33,8 +33,7 @@
 // TODO: taskswitch handling
 static void save_state_to_tss32(CPUState *cpu, struct x86_tss_segment32 *tss)
 {
-    X86CPU *x86_cpu = X86_CPU(cpu);
-    CPUX86State *env = &x86_cpu->env;
+    CPUX86State *env = cpu_env(cpu);
 
     /* CR3 and ldt selector are not saved intentionally */
     tss->eip = (uint32_t)env->eip;
@@ -58,8 +57,7 @@ static void save_state_to_tss32(CPUState *cpu, struct x86_tss_segment32 *tss)
 
 static void load_state_from_tss32(CPUState *cpu, struct x86_tss_segment32 *tss)
 {
-    X86CPU *x86_cpu = X86_CPU(cpu);
-    CPUX86State *env = &x86_cpu->env;
+    CPUX86State *env = cpu_env(cpu);
 
     wvmcs(cpu->accel->fd, VMCS_GUEST_CR3, tss->cr3);
 
@@ -128,9 +126,7 @@ void vmx_handle_task_switch(CPUState *cpu, x68_segment_selector tss_sel, int rea
     uint32_t desc_limit;
     struct x86_call_gate task_gate_desc;
     struct vmx_segment vmx_seg;
-
-    X86CPU *x86_cpu = X86_CPU(cpu);
-    CPUX86State *env = &x86_cpu->env;
+    CPUX86State *env = cpu_env(cpu);
 
     x86_read_segment_descriptor(cpu, &next_tss_desc, tss_sel);
     x86_read_segment_descriptor(cpu, &curr_tss_desc, old_tss_sel);
diff --git a/target/i386/hvf/x86hvf.c b/target/i386/hvf/x86hvf.c
index be2c46246e..10f79849b3 100644
--- a/target/i386/hvf/x86hvf.c
+++ b/target/i386/hvf/x86hvf.c
@@ -238,8 +238,7 @@ void hvf_get_msrs(CPUState *cs)
 
 int hvf_put_registers(CPUState *cs)
 {
-    X86CPU *x86cpu = X86_CPU(cs);
-    CPUX86State *env = &x86cpu->env;
+    CPUX86State *env = cpu_env(cs);
 
     wreg(cs->accel->fd, HV_X86_RAX, env->regs[R_EAX]);
     wreg(cs->accel->fd, HV_X86_RBX, env->regs[R_EBX]);
@@ -282,8 +281,7 @@ int hvf_put_registers(CPUState *cs)
 
 int hvf_get_registers(CPUState *cs)
 {
-    X86CPU *x86cpu = X86_CPU(cs);
-    CPUX86State *env = &x86cpu->env;
+    CPUX86State *env = cpu_env(cs);
 
     env->regs[R_EAX] = rreg(cs->accel->fd, HV_X86_RAX);
     env->regs[R_EBX] = rreg(cs->accel->fd, HV_X86_RBX);
@@ -342,8 +340,7 @@ void vmx_clear_int_window_exiting(CPUState *cs)
 
 bool hvf_inject_interrupts(CPUState *cs)
 {
-    X86CPU *x86cpu = X86_CPU(cs);
-    CPUX86State *env = &x86cpu->env;
+    CPUX86State *env = cpu_env(cs);
 
     uint8_t vector;
     uint64_t intr_type;
diff --git a/target/i386/kvm/kvm.c b/target/i386/kvm/kvm.c
index 76a66246eb..e4f1c62888 100644
--- a/target/i386/kvm/kvm.c
+++ b/target/i386/kvm/kvm.c
@@ -754,8 +754,7 @@ static inline bool freq_within_bounds(int freq, int target_freq)
 
 static int kvm_arch_set_tsc_khz(CPUState *cs)
 {
-    X86CPU *cpu = X86_CPU(cs);
-    CPUX86State *env = &cpu->env;
+    CPUX86State *env = cpu_env(cs);
     int r, cur_freq;
     bool set_ioctl = false;
 
@@ -5369,8 +5368,7 @@ int kvm_arch_handle_exit(CPUState *cs, struct kvm_run *run)
 
 bool kvm_arch_stop_on_emulation_error(CPUState *cs)
 {
-    X86CPU *cpu = X86_CPU(cs);
-    CPUX86State *env = &cpu->env;
+    CPUX86State *env = cpu_env(cs);
 
     kvm_cpu_synchronize_state(cs);
     return !(env->cr[0] & CR0_PE_MASK) ||
diff --git a/target/i386/kvm/xen-emu.c b/target/i386/kvm/xen-emu.c
index fc2c2321ac..10350a22d1 100644
--- a/target/i386/kvm/xen-emu.c
+++ b/target/i386/kvm/xen-emu.c
@@ -313,10 +313,7 @@ static int kvm_xen_set_vcpu_callback_vector(CPUState *cs)
 
 static void do_set_vcpu_callback_vector(CPUState *cs, run_on_cpu_data data)
 {
-    X86CPU *cpu = X86_CPU(cs);
-    CPUX86State *env = &cpu->env;
-
-    env->xen_vcpu_callback_vector = data.host_int;
+    cpu_env(cs)->xen_vcpu_callback_vector = data.host_int;
 
     if (kvm_xen_has_cap(EVTCHN_SEND)) {
         kvm_xen_set_vcpu_callback_vector(cs);
@@ -325,8 +322,7 @@ static void do_set_vcpu_callback_vector(CPUState *cs, run_on_cpu_data data)
 
 static int set_vcpu_info(CPUState *cs, uint64_t gpa)
 {
-    X86CPU *cpu = X86_CPU(cs);
-    CPUX86State *env = &cpu->env;
+    CPUX86State *env = cpu_env(cs);
     MemoryRegionSection mrs = { .mr = NULL };
     void *vcpu_info_hva = NULL;
     int ret;
@@ -362,8 +358,7 @@ static int set_vcpu_info(CPUState *cs, uint64_t gpa)
 
 static void do_set_vcpu_info_default_gpa(CPUState *cs, run_on_cpu_data data)
 {
-    X86CPU *cpu = X86_CPU(cs);
-    CPUX86State *env = &cpu->env;
+    CPUX86State *env = cpu_env(cs);
 
     env->xen_vcpu_info_default_gpa = data.host_ulong;
 
@@ -375,8 +370,7 @@ static void do_set_vcpu_info_default_gpa(CPUState *cs, run_on_cpu_data data)
 
 static void do_set_vcpu_info_gpa(CPUState *cs, run_on_cpu_data data)
 {
-    X86CPU *cpu = X86_CPU(cs);
-    CPUX86State *env = &cpu->env;
+    CPUX86State *env = cpu_env(cs);
 
     env->xen_vcpu_info_gpa = data.host_ulong;
 
@@ -479,8 +473,7 @@ void kvm_xen_inject_vcpu_callback_vector(uint32_t vcpu_id, int type)
 /* Must always be called with xen_timers_lock held */
 static int kvm_xen_set_vcpu_timer(CPUState *cs)
 {
-    X86CPU *cpu = X86_CPU(cs);
-    CPUX86State *env = &cpu->env;
+    CPUX86State *env = cpu_env(cs);
 
     struct kvm_xen_vcpu_attr va = {
         .type = KVM_XEN_VCPU_ATTR_TYPE_TIMER,
@@ -527,8 +520,7 @@ int kvm_xen_set_vcpu_virq(uint32_t vcpu_id, uint16_t virq, uint16_t port)
 
 static void do_set_vcpu_time_info_gpa(CPUState *cs, run_on_cpu_data data)
 {
-    X86CPU *cpu = X86_CPU(cs);
-    CPUX86State *env = &cpu->env;
+    CPUX86State *env = cpu_env(cs);
 
     env->xen_vcpu_time_info_gpa = data.host_ulong;
 
@@ -538,8 +530,7 @@ static void do_set_vcpu_time_info_gpa(CPUState *cs, run_on_cpu_data data)
 
 static void do_set_vcpu_runstate_gpa(CPUState *cs, run_on_cpu_data data)
 {
-    X86CPU *cpu = X86_CPU(cs);
-    CPUX86State *env = &cpu->env;
+    CPUX86State *env = cpu_env(cs);
 
     env->xen_vcpu_runstate_gpa = data.host_ulong;
 
@@ -549,8 +540,7 @@ static void do_set_vcpu_runstate_gpa(CPUState *cs, run_on_cpu_data data)
 
 static void do_vcpu_soft_reset(CPUState *cs, run_on_cpu_data data)
 {
-    X86CPU *cpu = X86_CPU(cs);
-    CPUX86State *env = &cpu->env;
+    CPUX86State *env = cpu_env(cs);
 
     env->xen_vcpu_info_gpa = INVALID_GPA;
     env->xen_vcpu_info_default_gpa = INVALID_GPA;
@@ -1813,8 +1803,7 @@ uint16_t kvm_xen_get_evtchn_max_pirq(void)
 
 int kvm_put_xen_state(CPUState *cs)
 {
-    X86CPU *cpu = X86_CPU(cs);
-    CPUX86State *env = &cpu->env;
+    CPUX86State *env = cpu_env(cs);
     uint64_t gpa;
     int ret;
 
@@ -1887,8 +1876,7 @@ int kvm_put_xen_state(CPUState *cs)
 
 int kvm_get_xen_state(CPUState *cs)
 {
-    X86CPU *cpu = X86_CPU(cs);
-    CPUX86State *env = &cpu->env;
+    CPUX86State *env = cpu_env(cs);
     uint64_t gpa;
     int ret;
 
diff --git a/target/i386/tcg/sysemu/bpt_helper.c b/target/i386/tcg/sysemu/bpt_helper.c
index 4d96a48a3c..90d6117497 100644
--- a/target/i386/tcg/sysemu/bpt_helper.c
+++ b/target/i386/tcg/sysemu/bpt_helper.c
@@ -208,8 +208,7 @@ bool check_hw_breakpoints(CPUX86State *env, bool force_dr6_update)
 
 void breakpoint_handler(CPUState *cs)
 {
-    X86CPU *cpu = X86_CPU(cs);
-    CPUX86State *env = &cpu->env;
+    CPUX86State *env = cpu_env(cs);
 
     if (cs->watchpoint_hit) {
         if (cs->watchpoint_hit->flags & BP_CPU) {
diff --git a/target/i386/tcg/sysemu/excp_helper.c b/target/i386/tcg/sysemu/excp_helper.c
index 5b86f439ad..1afa177551 100644
--- a/target/i386/tcg/sysemu/excp_helper.c
+++ b/target/i386/tcg/sysemu/excp_helper.c
@@ -639,6 +639,5 @@ G_NORETURN void x86_cpu_do_unaligned_access(CPUState *cs, vaddr vaddr,
                                             MMUAccessType access_type,
                                             int mmu_idx, uintptr_t retaddr)
 {
-    X86CPU *cpu = X86_CPU(cs);
-    handle_unaligned_access(&cpu->env, vaddr, access_type, retaddr);
+    handle_unaligned_access(cpu_env(cs), vaddr, access_type, retaddr);
 }
diff --git a/target/i386/tcg/tcg-cpu.c b/target/i386/tcg/tcg-cpu.c
index e1405b7be9..8f8fd6529d 100644
--- a/target/i386/tcg/tcg-cpu.c
+++ b/target/i386/tcg/tcg-cpu.c
@@ -29,8 +29,7 @@
 
 static void x86_cpu_exec_enter(CPUState *cs)
 {
-    X86CPU *cpu = X86_CPU(cs);
-    CPUX86State *env = &cpu->env;
+    CPUX86State *env = cpu_env(cs);
 
     CC_SRC = env->eflags & (CC_O | CC_S | CC_Z | CC_A | CC_P | CC_C);
     env->df = 1 - (2 * ((env->eflags >> 10) & 1));
@@ -40,8 +39,7 @@ static void x86_cpu_exec_enter(CPUState *cs)
 
 static void x86_cpu_exec_exit(CPUState *cs)
 {
-    X86CPU *cpu = X86_CPU(cs);
-    CPUX86State *env = &cpu->env;
+    CPUX86State *env = cpu_env(cs);
 
     env->eflags = cpu_compute_eflags(env);
 }
@@ -65,8 +63,7 @@ static void x86_restore_state_to_opc(CPUState *cs,
                                      const TranslationBlock *tb,
                                      const uint64_t *data)
 {
-    X86CPU *cpu = X86_CPU(cs);
-    CPUX86State *env = &cpu->env;
+    CPUX86State *env = cpu_env(cs);
     int cc_op = data[1];
     uint64_t new_pc;
 
@@ -96,11 +93,8 @@ static void x86_restore_state_to_opc(CPUState *cs,
 #ifndef CONFIG_USER_ONLY
 static bool x86_debug_check_breakpoint(CPUState *cs)
 {
-    X86CPU *cpu = X86_CPU(cs);
-    CPUX86State *env = &cpu->env;
-
     /* RF disables all architectural breakpoints. */
-    return !(env->eflags & RF_MASK);
+    return !(cpu_env(cs)->eflags & RF_MASK);
 }
 #endif
 
diff --git a/target/i386/tcg/user/excp_helper.c b/target/i386/tcg/user/excp_helper.c
index b3bdb7831a..9ea5566149 100644
--- a/target/i386/tcg/user/excp_helper.c
+++ b/target/i386/tcg/user/excp_helper.c
@@ -26,8 +26,7 @@ void x86_cpu_record_sigsegv(CPUState *cs, vaddr addr,
                             MMUAccessType access_type,
                             bool maperr, uintptr_t ra)
 {
-    X86CPU *cpu = X86_CPU(cs);
-    CPUX86State *env = &cpu->env;
+    CPUX86State *env = cpu_env(cs);
 
     /*
      * The error_code that hw reports as part of the exception frame
@@ -52,6 +51,5 @@ void x86_cpu_record_sigsegv(CPUState *cs, vaddr addr,
 void x86_cpu_record_sigbus(CPUState *cs, vaddr addr,
                            MMUAccessType access_type, uintptr_t ra)
 {
-    X86CPU *cpu = X86_CPU(cs);
-    handle_unaligned_access(&cpu->env, addr, access_type, ra);
+    handle_unaligned_access(cpu_env(cs), addr, access_type, ra);
 }
diff --git a/target/i386/tcg/user/seg_helper.c b/target/i386/tcg/user/seg_helper.c
index c45f2ac2ba..2f89dbb51e 100644
--- a/target/i386/tcg/user/seg_helper.c
+++ b/target/i386/tcg/user/seg_helper.c
@@ -78,8 +78,7 @@ static void do_interrupt_user(CPUX86State *env, int intno, int is_int,
 
 void x86_cpu_do_interrupt(CPUState *cs)
 {
-    X86CPU *cpu = X86_CPU(cs);
-    CPUX86State *env = &cpu->env;
+    CPUX86State *env = cpu_env(cs);
 
     /* if user mode only, we simulate a fake exception
        which will be handled outside the cpu execution
-- 
2.41.0



From xen-devel-bounces@lists.xenproject.org Mon Jan 29 16:50:20 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 29 Jan 2024 16:50:20 +0000
Received: from list by lists.xenproject.org with outflank-mailman.673048.1047195 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUUpv-0007lQ-7t; Mon, 29 Jan 2024 16:50:19 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 673048.1047195; Mon, 29 Jan 2024 16:50:19 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUUpv-0007lJ-5E; Mon, 29 Jan 2024 16:50:19 +0000
Received: by outflank-mailman (input) for mailman id 673048;
 Mon, 29 Jan 2024 16:50:18 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=RfnY=JH=linaro.org=philmd@srs-se1.protection.inumbo.net>)
 id 1rUUpt-0007jp-Tu
 for xen-devel@lists.xenproject.org; Mon, 29 Jan 2024 16:50:18 +0000
Received: from mail-wm1-x32e.google.com (mail-wm1-x32e.google.com
 [2a00:1450:4864:20::32e])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 7af166d1-bec6-11ee-8a43-1f161083a0e0;
 Mon, 29 Jan 2024 17:50:17 +0100 (CET)
Received: by mail-wm1-x32e.google.com with SMTP id
 5b1f17b1804b1-40ef6454277so10572985e9.2
 for <xen-devel@lists.xenproject.org>; Mon, 29 Jan 2024 08:50:17 -0800 (PST)
Received: from [192.168.69.100] ([176.187.219.39])
 by smtp.gmail.com with ESMTPSA id
 iv16-20020a05600c549000b0040e3635ca65sm14633892wmb.2.2024.01.29.08.50.14
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Mon, 29 Jan 2024 08:50:16 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 7af166d1-bec6-11ee-8a43-1f161083a0e0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=linaro.org; s=google; t=1706547016; x=1707151816; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:from:references:cc:to
         :content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=omKaa0iHW1o+ye+O07qQ9YI+SPw/nbBCLeN2GURIQnI=;
        b=d+6VrbVfoaKfT+FR5O+HRHNW5Jq/ZzaKwIF3ZmCTAkItY57DZ/RmRAMaU+mqVD8nQC
         jmouOdiToVrIqv5mw/YoXyvjINR+zKAhRQHABZdRq9/WZjxUwClFNhY3LrrwMmnKW5gO
         0Vbp+sQQWqMekU6SPQ3Oioj05kOS6GSy9wzxNxRV5TgAzXHgf/YAUEwCXpCa0NzuyN9A
         dz8T1g5oVrQgn+mS7tQbrpTWUvphpvjZMI4UM0mE0hf8MExSo5iAk78Yq7eac0IW3API
         Bu/yATxhcAfBsWZn40/QCxYvDeHsqfLn8lCWfJ1u/Tzk5d6B2tyKOPp26FVMxzcR3vhp
         M0HQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706547017; x=1707151817;
        h=content-transfer-encoding:in-reply-to:from:references:cc:to
         :content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=omKaa0iHW1o+ye+O07qQ9YI+SPw/nbBCLeN2GURIQnI=;
        b=VCTL7ChTwxUfyxXJnUH6FcG3CWjTKnV3vDR4BYOMSvhvjmHPncPxH3vobmt37WB29Q
         aqx5WfRUMxHKgV2PqKcB/wQV+GZgg/ODL5qhEdpgHRQOhxcWmP/6XFEGyIbL6S4iAoe7
         uBPW/SaBfMk59KYuO8TJdtveYHk31NV+5fRT7nhDfzQw8Lmn2azkQLPyD8qukiJOtS3L
         eqKBnW3c9P1DUhUcrRR0gFB8i8EGXxK2+Wr7Wo+OPrjMmdFA2Yh3FEccRf9biZsiJtrO
         FhWxfDSD7WZOMAUXAjYvWPXro5QugJdKv6SfMVYknEeVxjN7LioIklNcTbnBU/L5LBeB
         QhWg==
X-Gm-Message-State: AOJu0YzRf36tFLVxTsEByydw1V0lau7mOwu+i305U13CjBxlN8wndvm0
	d6QjE5HAirzsS01710IM+BZXgeyMWQie/Z8Y3qD8wLEe9p17BladQnxNVDzkvj8=
X-Google-Smtp-Source: AGHT+IENRodsNqBb2ZsMapK29qw3M64BL/PIvqlcP6V/HUTtgCz0m1D+dNQrPnYAHAiX3P1S+64j7w==
X-Received: by 2002:a05:600c:4e88:b0:40e:5523:e6dd with SMTP id f8-20020a05600c4e8800b0040e5523e6ddmr5423979wmq.30.1706547016686;
        Mon, 29 Jan 2024 08:50:16 -0800 (PST)
Message-ID: <36852ecc-36da-4b8e-bb81-13938a100100@linaro.org>
Date: Mon, 29 Jan 2024 17:50:13 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 14/29] target/i386: Prefer fast cpu_env() over slower
 CPU QOM cast macro
Content-Language: en-US
To: qemu-devel@nongnu.org
Cc: qemu-riscv@nongnu.org, qemu-s390x@nongnu.org,
 Paolo Bonzini <pbonzini@redhat.com>, kvm@vger.kernel.org,
 qemu-ppc@nongnu.org, qemu-arm@nongnu.org,
 Richard Henderson <richard.henderson@linaro.org>,
 "Michael S. Tsirkin" <mst@redhat.com>,
 Marcel Apfelbaum <marcel.apfelbaum@gmail.com>,
 Eduardo Habkost <eduardo@habkost.net>,
 Stefano Stabellini <sstabellini@kernel.org>,
 Anthony Perard <anthony.perard@citrix.com>, Paul Durrant <paul@xen.org>,
 Cameron Esfahani <dirty@apple.com>, Roman Bolshakov <rbolshakov@ddn.com>,
 Marcelo Tosatti <mtosatti@redhat.com>, David Woodhouse
 <dwmw2@infradead.org>, xen-devel@lists.xenproject.org
References: <20240129164514.73104-1-philmd@linaro.org>
 <20240129164514.73104-15-philmd@linaro.org>
From: =?UTF-8?Q?Philippe_Mathieu-Daud=C3=A9?= <philmd@linaro.org>
In-Reply-To: <20240129164514.73104-15-philmd@linaro.org>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit

On 29/1/24 17:44, Philippe Mathieu-Daudé wrote:
> Mechanical patch produced running the command documented
> in scripts/coccinelle/cpu_env.cocci_template header.
> 
> Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
> ---
>   target/i386/hvf/vmx.h                | 13 ++-------
>   hw/i386/fw_cfg.c                     |  3 +-
>   hw/i386/vmmouse.c                    |  6 ++--
>   hw/i386/xen/xen-hvm.c                |  3 +-
>   target/i386/arch_dump.c              | 11 ++------
>   target/i386/arch_memory_mapping.c    |  3 +-
>   target/i386/cpu-dump.c               |  3 +-
>   target/i386/cpu.c                    | 37 ++++++++----------------
>   target/i386/helper.c                 | 42 ++++++++--------------------
>   target/i386/hvf/hvf.c                |  8 ++----
>   target/i386/hvf/x86.c                |  4 +--
>   target/i386/hvf/x86_emu.c            |  6 ++--
>   target/i386/hvf/x86_task.c           | 10 ++-----
>   target/i386/hvf/x86hvf.c             |  9 ++----
>   target/i386/kvm/kvm.c                |  6 ++--
>   target/i386/kvm/xen-emu.c            | 32 +++++++--------------
>   target/i386/tcg/sysemu/bpt_helper.c  |  3 +-
>   target/i386/tcg/sysemu/excp_helper.c |  3 +-
>   target/i386/tcg/tcg-cpu.c            | 14 +++-------
>   target/i386/tcg/user/excp_helper.c   |  6 ++--
>   target/i386/tcg/user/seg_helper.c    |  3 +-
>   21 files changed, 67 insertions(+), 158 deletions(-)

Actually this one had:

Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Acked-by: David Woodhouse <dwmw@amazon.co.uk>
Reviewed-by: Zhao Liu <zhao1.liu@intel.com>

But since I addressed Zhao's suggestion in patch 1
("bulk: Access existing variables initialized to &S->F when available")
which added more changes to this patch, I dropped the tags.


From xen-devel-bounces@lists.xenproject.org Mon Jan 29 16:53:04 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 29 Jan 2024 16:53:04 +0000
Received: from list by lists.xenproject.org with outflank-mailman.673050.1047206 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUUsW-0000Be-Ku; Mon, 29 Jan 2024 16:53:00 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 673050.1047206; Mon, 29 Jan 2024 16:53:00 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUUsW-0000BX-Hv; Mon, 29 Jan 2024 16:53:00 +0000
Received: by outflank-mailman (input) for mailman id 673050;
 Mon, 29 Jan 2024 16:52:59 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=Kvg3=JH=cloud.com=kelly.choi@srs-se1.protection.inumbo.net>)
 id 1rUUsV-0000BQ-7C
 for xen-devel@lists.xenproject.org; Mon, 29 Jan 2024 16:52:59 +0000
Received: from mail-ed1-x533.google.com (mail-ed1-x533.google.com
 [2a00:1450:4864:20::533])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id da2daf9c-bec6-11ee-98f5-efadbce2ee36;
 Mon, 29 Jan 2024 17:52:57 +0100 (CET)
Received: by mail-ed1-x533.google.com with SMTP id
 4fb4d7f45d1cf-55eedf5a284so1755249a12.1
 for <xen-devel@lists.xenproject.org>; Mon, 29 Jan 2024 08:52:57 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: da2daf9c-bec6-11ee-98f5-efadbce2ee36
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1706547176; x=1707151976; darn=lists.xenproject.org;
        h=cc:to:subject:message-id:date:from:in-reply-to:references
         :mime-version:from:to:cc:subject:date:message-id:reply-to;
        bh=Gbik/HL66GnscIv6B2QzSlYniR+FazWE9sptKql+PS8=;
        b=AkDxpOQe+qNCDaqPM9uLRq7/TgBdbVnun+j9UkV3UX5/zlIs4Q8Qy/ZAiN9lgNMSPX
         UbRtpPKrUSRJF/Pq5UZEv5WdTMsratrx3gwRtyMUDfLsP3wA0QQXPyGzA7X1v6XDJJsX
         hutfNWk5GvpJ9qA0uBPXBjxR4hKpqNigRlHsg=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706547176; x=1707151976;
        h=cc:to:subject:message-id:date:from:in-reply-to:references
         :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id
         :reply-to;
        bh=Gbik/HL66GnscIv6B2QzSlYniR+FazWE9sptKql+PS8=;
        b=fypmhLVwlMnq9zWCUjR8wllNdWyHGejcPyDHHfdbOw5wpCh+/whzySEwpl/PVSOetS
         9mE5MKd9zp7Q5h81jWTwEW/y1qsxVIErKtnIbL2PftwTWC/QNjtWFTKy+fC/845iI8BE
         NX1kYeEDHgiGqXaqmJq2AJTeGDY2envIG8Kco6j/U6+chinGkVD/RKVb4c4jeNAs9TZQ
         IS/5MWvGNnJ8StjX3B/qku4SL4Kf8aGCM9I4j1XWHW2x1PZwHX/juwGLmG/TchZe1x5b
         qHAGLkZOCVTURmmcBTcTggIoAYIGDOihNwwi2jvFsHWx6OrmzIyBkPjBp0h5EmJUTeGY
         3GUA==
X-Gm-Message-State: AOJu0YwofGDaCIE8haeTwP915DFH98qymJQfxtWd8R4g+Old0+PvZ0t1
	YUpSoyTtBCKvqEdWPmdiCmFKj67ZDTtwlzVspTo2gfN7bVWh6ZfLQcK/I15satRJFQtxI8lLqp1
	krRMqmsu5Z1V/vKxyUvbpfcI7Gdba+xzfzDMp+Q==
X-Google-Smtp-Source: AGHT+IHYSPQMkAwERjU/DTuQ5FWA5HwA4puRsPsGBxFt1prpqm1gu2vsuTvnk4KFMYZtV1Fav+LDYrmCFJFgOFfgUEk=
X-Received: by 2002:a05:6402:164c:b0:55f:20ef:ca1c with SMTP id
 s12-20020a056402164c00b0055f20efca1cmr846918edx.38.1706547176424; Mon, 29 Jan
 2024 08:52:56 -0800 (PST)
MIME-Version: 1.0
References: <cover.1703072575.git.oleksii.kurochko@gmail.com>
 <08bca9a4158a190a0a953e5bc071a512cfe5f0f8.1703072575.git.oleksii.kurochko@gmail.com>
 <341249d1-217f-4ad2-9455-b1aded4b9b56@xen.org> <03cf5145-2124-4150-9f20-904f08bcabda@suse.com>
 <9f8c4fe0a87742444b52a42aa5924cf046ee18b0.camel@gmail.com>
 <67bf2be7-53f4-40d0-a856-8ae631a054b0@suse.com> <955e9b02-20bd-4279-9f60-bb757cdf1a03@xen.org>
 <0f729b61-b839-48f6-89ae-b5570b1eae0b@xen.org> <26152790b0b8c3330d9cfc3c0462a1c072d6d598.camel@gmail.com>
 <87f4c67a-3902-499a-b4e3-c1429a0d9167@suse.com> <61bb0457701582f85f60f81cefb02953587deb06.camel@gmail.com>
 <cc704b38-0fd7-4155-8de9-308ab1a46740@suse.com>
In-Reply-To: <cc704b38-0fd7-4155-8de9-308ab1a46740@suse.com>
From: Kelly Choi <kelly.choi@cloud.com>
Date: Mon, 29 Jan 2024 16:52:20 +0000
Message-ID: <CAO-mL=x4d38RH+G=UUy0w8iha1JdsrQRuDG32OAjbGqk2rMSew@mail.gmail.com>
Subject: Re: Xen 4.19 release schedule proposal
To: Jan Beulich <jbeulich@suse.com>
Cc: Oleksii <oleksii.kurochko@gmail.com>, community.manager@xenproject.org, 
	julien@xen.org, sstabellini@kernel.org, Bertrand.Marquis@arm.com, 
	andrew.cooper3@citrix.com, roger.pau@citrix.com, anthony.perard@citrix.com, 
	george.dunlap@cloud.com, jgross@suse.com, Wei.Chen@arm.com, 
	xen-devel@lists.xenproject.org
Content-Type: multipart/alternative; boundary="0000000000003e5d800610187af0"

--0000000000003e5d800610187af0
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

Hi all,

I propose we raise this in the next community call (Thursday 1st Feb).
We can decide on the official cadence then and any further feedback.

Many thanks,
Kelly Choi

Community Manager
Xen Project


On Mon, Jan 8, 2024 at 2:58=E2=80=AFPM Jan Beulich <jbeulich@suse.com> wrot=
e:

> On 08.01.2024 15:37, Oleksii wrote:
> > On Thu, 2024-01-04 at 13:52 +0100, Jan Beulich wrote:
> >> On 02.01.2024 17:59, Oleksii wrote:
> >>> I'd like to propose the release schedule for Xen 4.19.
> >>>
> >>> Based on the previous release schedules [1] and [2], it seems the
> >>> next
> >>> release date should be on Wednesday, July 10, 2024:
> >>>
> >>> ** Proposed option: Wed Jul 10, 2024 **
> >>> (+9 months from Xen 4.18 release)
> >>
> >> Hmm, aren't we intending to be on a 8 month cadence?
> > Considering that in July, there will be the Xen Developer Summit, we
> > can aim for an 8-month cadence.
>
> July? Iirc I read June in the announcement.
>
> > However, in the Xen release document, there was mention of a discussion
> > [1] about cadence:
> > "With 18 months of full support and 36 months of security support, the
> > number of concurrent supported releases will be the same with either 8
> > or 9 months release cycles, so I have chosen an 8-month cycle for now."
> >
> > I interpreted this as either an 8 or 9-month cycle, and it's not
> > strict. If there's a strict requirement for a specific duration, I'll
> > resend the Release Schedule Proposal.
>
> I'm not sure about "strict". Yet ...
>
> > [1] https://lists.xen.org/archives/html/xen-devel/2018-07/msg02240.html
>
> ... this very mail worked out how overlap with larger holiday ranges
> could be minimized not only for a single release, but for any as long
> as the cadence is followed. Iirc this works out better with 8 months
> (as kind of to be expected, as then there are only 3 variants, whereas
> with 9 months it would be 4 of them).
>
> Just to clarify, personally I'm fine with 9 months or even longer, but
> it seemed to me that we had settled on 8.
>
> Jan
>

--0000000000003e5d800610187af0
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr">Hi all,<div><br></div><div>I propose we raise this in the =
next community call (Thursday 1st Feb).</div><div>We can decide on the offi=
cial cadence then and any further feedback.=C2=A0</div><div><br clear=3D"al=
l"><div><div dir=3D"ltr" class=3D"gmail_signature" data-smartmail=3D"gmail_=
signature"><div dir=3D"ltr"><div>Many thanks,</div><div>Kelly Choi</div><di=
v><br></div><div><div style=3D"color:rgb(136,136,136)">Community Manager</d=
iv><div style=3D"color:rgb(136,136,136)">Xen Project=C2=A0<br></div></div><=
/div></div></div><br></div></div><br><div class=3D"gmail_quote"><div dir=3D=
"ltr" class=3D"gmail_attr">On Mon, Jan 8, 2024 at 2:58=E2=80=AFPM Jan Beuli=
ch &lt;<a href=3D"mailto:jbeulich@suse.com">jbeulich@suse.com</a>&gt; wrote=
:<br></div><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.=
8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">On 08.01.2024 =
15:37, Oleksii wrote:<br>
&gt; On Thu, 2024-01-04 at 13:52 +0100, Jan Beulich wrote:<br>
&gt;&gt; On 02.01.2024 17:59, Oleksii wrote:<br>
&gt;&gt;&gt; I&#39;d like to propose the release schedule for Xen 4.19.<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; Based on the previous release schedules [1] and [2], it seems =
the<br>
&gt;&gt;&gt; next<br>
&gt;&gt;&gt; release date should be on Wednesday, July 10, 2024:<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; ** Proposed option: Wed Jul 10, 2024 **<br>
&gt;&gt;&gt; (+9 months from Xen 4.18 release)<br>
&gt;&gt;<br>
&gt;&gt; Hmm, aren&#39;t we intending to be on a 8 month cadence?<br>
&gt; Considering that in July, there will be the Xen Developer Summit, we<b=
r>
&gt; can aim for an 8-month cadence.<br>
<br>
July? Iirc I read June in the announcement.<br>
<br>
&gt; However, in the Xen release document, there was mention of a discussio=
n<br>
&gt; [1] about cadence:<br>
&gt; &quot;With 18 months of full support and 36 months of security support=
, the<br>
&gt; number of concurrent supported releases will be the same with either 8=
<br>
&gt; or 9 months release cycles, so I have chosen an 8-month cycle for now.=
&quot;<br>
&gt; <br>
&gt; I interpreted this as either an 8 or 9-month cycle, and it&#39;s not<b=
r>
&gt; strict. If there&#39;s a strict requirement for a specific duration, I=
&#39;ll<br>
&gt; resend the Release Schedule Proposal.<br>
<br>
I&#39;m not sure about &quot;strict&quot;. Yet ...<br>
<br>
&gt; [1] <a href=3D"https://lists.xen.org/archives/html/xen-devel/2018-07/m=
sg02240.html" rel=3D"noreferrer" target=3D"_blank">https://lists.xen.org/ar=
chives/html/xen-devel/2018-07/msg02240.html</a><br>
<br>
... this very mail worked out how overlap with larger holiday ranges<br>
could be minimized not only for a single release, but for any as long<br>
as the cadence is followed. Iirc this works out better with 8 months<br>
(as kind of to be expected, as then there are only 3 variants, whereas<br>
with 9 months it would be 4 of them).<br>
<br>
Just to clarify, personally I&#39;m fine with 9 months or even longer, but<=
br>
it seemed to me that we had settled on 8.<br>
<br>
Jan<br>
</blockquote></div>

--0000000000003e5d800610187af0--


From xen-devel-bounces@lists.xenproject.org Mon Jan 29 17:19:30 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 29 Jan 2024 17:19:30 +0000
Received: from list by lists.xenproject.org with outflank-mailman.673067.1047276 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUVI6-0007MK-OD; Mon, 29 Jan 2024 17:19:26 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 673067.1047276; Mon, 29 Jan 2024 17:19:26 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUVI6-0007KD-KS; Mon, 29 Jan 2024 17:19:26 +0000
Received: by outflank-mailman (input) for mailman id 673067;
 Mon, 29 Jan 2024 17:19:25 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=Vh+I=JH=minervasys.tech=carlo.nonato@srs-se1.protection.inumbo.net>)
 id 1rUVI5-0005vb-6O
 for xen-devel@lists.xenproject.org; Mon, 29 Jan 2024 17:19:25 +0000
Received: from mail-ed1-x529.google.com (mail-ed1-x529.google.com
 [2a00:1450:4864:20::529])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 8bb57a4a-beca-11ee-98f5-efadbce2ee36;
 Mon, 29 Jan 2024 18:19:23 +0100 (CET)
Received: by mail-ed1-x529.google.com with SMTP id
 4fb4d7f45d1cf-55c2c90c67dso3037151a12.1
 for <xen-devel@lists.xenproject.org>; Mon, 29 Jan 2024 09:19:23 -0800 (PST)
Received: from carlo-ubuntu.mo54.unimo.it (nonato.mo54.unimo.it.
 [155.185.85.8]) by smtp.gmail.com with ESMTPSA id
 eo15-20020a056402530f00b005598ec568dbsm3970494edb.59.2024.01.29.09.19.21
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 29 Jan 2024 09:19:21 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 8bb57a4a-beca-11ee-98f5-efadbce2ee36
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=minervasys-tech.20230601.gappssmtp.com; s=20230601; t=1706548762; x=1707153562; darn=lists.xenproject.org;
        h=content-transfer-encoding:mime-version:references:in-reply-to
         :message-id:date:subject:cc:to:from:from:to:cc:subject:date
         :message-id:reply-to;
        bh=FOxIWS7kq3ckWF1E4D6jcpkZDZGO+rTxDl+omr7l9nQ=;
        b=w4+REGsoTSRy3eqIElj7UnxWvk/SEELVa6pMS99MsgYijEL9qbLenAZ2elz+RlpFwm
         gaN3/SmqJoWdB9JVXGTRjYC7D3/pILWDJkmrPivHWvF9bo5kSh0twJdguX8yZQfImCHA
         50eyiTzjRd5Ci8xVU5myM/i+0C0arws9kdAC690DwRFnKZ0qHy2pxP0jtWLRqTtSu2Wj
         0EB4mHDFecZ7Rm7zHOwD/amBZyAR3nq0n7ETl5+VwBU8u0YAgtAuPaDJckKUYO1fBd4g
         4ysE+y71P5gh3xcxZtLbioLdeDDGmA+o+XaDZiZRaJnLB92blN+uYiHFKv2hf3AoDtR9
         1PqA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706548762; x=1707153562;
        h=content-transfer-encoding:mime-version:references:in-reply-to
         :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to;
        bh=FOxIWS7kq3ckWF1E4D6jcpkZDZGO+rTxDl+omr7l9nQ=;
        b=fYXEK8J2BR+FEjuzJItbBCjdT/P5tZowwp3pfgJ5d+pFq0nddHyD2ynyh9bgrjyDPT
         0YO0YT2hJXt7lgxRS58MTyIN8LRyWeSD3LukkqmMsGUL0rirIGY24PnJhTKNgZizW5MT
         emQ91fMRq+tUcl/2v0FajTAoQ1QWZ1XEVfqYvMaICDb3hi6lQHLptOYPF4yEo16HyJEW
         oEQLIy/CZn3jTlKX85FOTuWLTuXsmAhScjtfEiP8AckfQgP7xzG6/8CmMxHOvJUmslVj
         fruCT8D8pYnpXDRHL6b8UaTp/uTLs0jnZXw0c/DFN/i43KHvf6wvHFfF7HfqojGdSKkA
         pZOQ==
X-Gm-Message-State: AOJu0YyecsLyDKsyIjI8SpeqRag/9VGCmWyN55aSLWMztK9OlD3kb99f
	ta7XEec7jIvwPUa6vy5f6cGy3vp8KzBS9JwkAiph1yfs7XZySuM3rz29wbfmc4RRE6fu65IO9X+
	V2eI=
X-Google-Smtp-Source: AGHT+IHACTg7Xvkm2VBIy7YD6NVoSqLao3kbMq+slNZlMJjM07qCu0XOMUxs5m7WFXSUPQyUavqtzA==
X-Received: by 2002:a05:6402:358b:b0:55c:876c:b61c with SMTP id y11-20020a056402358b00b0055c876cb61cmr5477827edc.7.1706548762289;
        Mon, 29 Jan 2024 09:19:22 -0800 (PST)
From: Carlo Nonato <carlo.nonato@minervasys.tech>
To: xen-devel@lists.xenproject.org
Cc: andrea.bastoni@minervasys.tech,
	Carlo Nonato <carlo.nonato@minervasys.tech>,
	Wei Liu <wl@xen.org>,
	Anthony PERARD <anthony.perard@citrix.com>,
	Juergen Gross <jgross@suse.com>,
	Marco Solieri <marco.solieri@minervasys.tech>
Subject: [PATCH v6 06/15] tools: add support for cache coloring configuration
Date: Mon, 29 Jan 2024 18:18:02 +0100
Message-Id: <20240129171811.21382-7-carlo.nonato@minervasys.tech>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20240129171811.21382-1-carlo.nonato@minervasys.tech>
References: <20240129171811.21382-1-carlo.nonato@minervasys.tech>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Add a new "llc_colors" parameter that defines the LLC color assignment for
a domain. The user can specify one or more color ranges using the same
syntax used everywhere else for color config described in the
documentation.
The parameter is defined as a list of strings that represent the color
ranges.

Documentation is also added.

Based on original work from: Luca Miccio <lucmiccio@gmail.com>

Signed-off-by: Carlo Nonato <carlo.nonato@minervasys.tech>
Signed-off-by: Marco Solieri <marco.solieri@minervasys.tech>
---
v6:
- no edits
v5:
- added LIBXL_HAVE_BUILDINFO_LLC_COLORS
- moved color configuration in xc_domain_set_llc_colors() cause of the new
  hypercall
v4:
- removed overlapping color ranges checks during parsing
- moved hypercall buffer initialization in libxenctrl
---
 docs/man/xl.cfg.5.pod.in         | 10 +++++++++
 tools/include/libxl.h            |  5 +++++
 tools/include/xenctrl.h          |  9 ++++++++
 tools/libs/ctrl/xc_domain.c      | 34 ++++++++++++++++++++++++++++
 tools/libs/light/libxl_create.c  |  9 ++++++++
 tools/libs/light/libxl_types.idl |  1 +
 tools/xl/xl_parse.c              | 38 +++++++++++++++++++++++++++++++-
 7 files changed, 105 insertions(+), 1 deletion(-)

diff --git a/docs/man/xl.cfg.5.pod.in b/docs/man/xl.cfg.5.pod.in
index ea8d41727d..d1140976d4 100644
--- a/docs/man/xl.cfg.5.pod.in
+++ b/docs/man/xl.cfg.5.pod.in
@@ -3038,6 +3038,16 @@ raised.
 
 =back
 
+=over 4
+
+=item B<llc_colors=[ "RANGE", "RANGE", ...]>
+
+Specify the Last Level Cache (LLC) color configuration for the guest.
+B<RANGE> can be either a single color value or a hypen-separated closed
+interval of colors (such as "0-4").
+
+=back
+
 =head3 x86
 
 =over 4
diff --git a/tools/include/libxl.h b/tools/include/libxl.h
index f1652b1664..24aa2c1c2e 100644
--- a/tools/include/libxl.h
+++ b/tools/include/libxl.h
@@ -1347,6 +1347,11 @@ void libxl_mac_copy(libxl_ctx *ctx, libxl_mac *dst, const libxl_mac *src);
  */
 #define LIBXL_HAVE_BUILDINFO_HVM_SYSTEM_FIRMWARE
 
+/*
+ * The libxl_domain_build_info has the llc_colors array.
+ */
+#define LIBXL_HAVE_BUILDINFO_LLC_COLORS 1
+
 /*
  * ERROR_REMUS_XXX error code only exists from Xen 4.5, Xen 4.6 and it
  * is changed to ERROR_CHECKPOINT_XXX in Xen 4.7
diff --git a/tools/include/xenctrl.h b/tools/include/xenctrl.h
index 2ef8b4e054..4b541fffd2 100644
--- a/tools/include/xenctrl.h
+++ b/tools/include/xenctrl.h
@@ -2653,6 +2653,15 @@ int xc_livepatch_replace(xc_interface *xch, char *name, uint32_t timeout, uint32
 int xc_domain_cacheflush(xc_interface *xch, uint32_t domid,
                          xen_pfn_t start_pfn, xen_pfn_t nr_pfns);
 
+/*
+ * Set LLC colors for a domain.
+ * This is an internal hypercall. It can only be used directly after domain
+ * creation. An attempt to use it afterwards will result in an error.
+ */
+int xc_domain_set_llc_colors(xc_interface *xch, uint32_t domid,
+                             const unsigned int *llc_colors,
+                             unsigned int num_llc_colors);
+
 #if defined(__arm__) || defined(__aarch64__)
 int xc_dt_overlay(xc_interface *xch, void *overlay_fdt,
                   uint32_t overlay_fdt_size, uint8_t overlay_op);
diff --git a/tools/libs/ctrl/xc_domain.c b/tools/libs/ctrl/xc_domain.c
index f2d9d14b4d..ad02288659 100644
--- a/tools/libs/ctrl/xc_domain.c
+++ b/tools/libs/ctrl/xc_domain.c
@@ -2180,6 +2180,40 @@ int xc_domain_soft_reset(xc_interface *xch,
     domctl.domain = domid;
     return do_domctl(xch, &domctl);
 }
+
+int xc_domain_set_llc_colors(xc_interface *xch, uint32_t domid,
+                             const unsigned int *llc_colors,
+                             unsigned int num_llc_colors)
+{
+    struct xen_domctl domctl = {};
+    DECLARE_HYPERCALL_BUFFER(uint32_t, local);
+    int ret = -1;
+
+    if ( num_llc_colors )
+    {
+        size_t bytes = sizeof(uint32_t) * num_llc_colors;
+
+        local = xc_hypercall_buffer_alloc(xch, local, bytes);
+        if ( local == NULL )
+        {
+            PERROR("Could not allocate LLC colors for set_llc_colors");
+            return -ENOMEM;
+        }
+        memcpy(local, llc_colors, bytes);
+        set_xen_guest_handle(domctl.u.set_llc_colors.llc_colors, local);
+    }
+
+    domctl.cmd = XEN_DOMCTL_set_llc_colors;
+    domctl.domain = domid;
+    domctl.u.set_llc_colors.num_llc_colors = num_llc_colors;
+
+    ret = do_domctl(xch, &domctl);
+
+    if ( local )
+        xc_hypercall_buffer_free(xch, local);
+
+    return ret;
+}
 /*
  * Local variables:
  * mode: C
diff --git a/tools/libs/light/libxl_create.c b/tools/libs/light/libxl_create.c
index 0008fac607..4db9f574f6 100644
--- a/tools/libs/light/libxl_create.c
+++ b/tools/libs/light/libxl_create.c
@@ -726,6 +726,15 @@ int libxl__domain_make(libxl__gc *gc, libxl_domain_config *d_config,
             /* A new domain now exists */
             *domid = local_domid;
 
+            ret = xc_domain_set_llc_colors(ctx->xch, local_domid,
+                                           b_info->llc_colors,
+                                           b_info->num_llc_colors);
+            if (ret < 0) {
+                LOGED(ERROR, local_domid, "LLC colors allocation failed");
+                rc = ERROR_FAIL;
+                goto out;
+            }
+
             rc = libxl__is_domid_recent(gc, local_domid, &recent);
             if (rc)
                 goto out;
diff --git a/tools/libs/light/libxl_types.idl b/tools/libs/light/libxl_types.idl
index 899ad30969..0208283492 100644
--- a/tools/libs/light/libxl_types.idl
+++ b/tools/libs/light/libxl_types.idl
@@ -610,6 +610,7 @@ libxl_domain_build_info = Struct("domain_build_info",[
     ("ioports",          Array(libxl_ioport_range, "num_ioports")),
     ("irqs",             Array(uint32, "num_irqs")),
     ("iomem",            Array(libxl_iomem_range, "num_iomem")),
+    ("llc_colors",       Array(uint32, "num_llc_colors")),
     ("claim_mode",	     libxl_defbool),
     ("event_channels",   uint32),
     ("kernel",           string),
diff --git a/tools/xl/xl_parse.c b/tools/xl/xl_parse.c
index 9b358f11b8..0ad1e2109e 100644
--- a/tools/xl/xl_parse.c
+++ b/tools/xl/xl_parse.c
@@ -1294,7 +1294,7 @@ void parse_config_data(const char *config_source,
     XLU_ConfigList *cpus, *vbds, *nics, *pcis, *cvfbs, *cpuids, *vtpms,
                    *usbctrls, *usbdevs, *p9devs, *vdispls, *pvcallsifs_devs;
     XLU_ConfigList *channels, *ioports, *irqs, *iomem, *viridian, *dtdevs,
-                   *mca_caps, *smbios;
+                   *mca_caps, *smbios, *llc_colors;
     int num_ioports, num_irqs, num_iomem, num_cpus, num_viridian, num_mca_caps;
     int num_smbios;
     int pci_power_mgmt = 0;
@@ -1302,6 +1302,7 @@ void parse_config_data(const char *config_source,
     int pci_permissive = 0;
     int pci_seize = 0;
     int i, e;
+    int num_llc_colors;
     char *kernel_basename;
 
     libxl_domain_create_info *c_info = &d_config->c_info;
@@ -1445,6 +1446,41 @@ void parse_config_data(const char *config_source,
     if (!xlu_cfg_get_long (config, "maxmem", &l, 0))
         b_info->max_memkb = l * 1024;
 
+    if (!xlu_cfg_get_list(config, "llc_colors", &llc_colors, &num_llc_colors, 0)) {
+        int cur_index = 0;
+
+        b_info->num_llc_colors = 0;
+        for (i = 0; i < num_llc_colors; i++) {
+            uint32_t start = 0, end = 0, k;
+
+            buf = xlu_cfg_get_listitem(llc_colors, i);
+            if (!buf) {
+                fprintf(stderr,
+                        "xl: Can't get element %d in LLC color list\n", i);
+                exit(1);
+            }
+
+            if (sscanf(buf, "%" SCNu32 "-%" SCNu32, &start, &end) != 2) {
+                if (sscanf(buf, "%" SCNu32, &start) != 1) {
+                    fprintf(stderr, "xl: Invalid LLC color range: %s\n", buf);
+                    exit(1);
+                }
+                end = start;
+            } else if (start > end) {
+                fprintf(stderr,
+                        "xl: Start LLC color is greater than end: %s\n", buf);
+                exit(1);
+            }
+
+            b_info->num_llc_colors += (end - start) + 1;
+            b_info->llc_colors = (uint32_t *)realloc(b_info->llc_colors,
+                        sizeof(*b_info->llc_colors) * b_info->num_llc_colors);
+
+            for (k = start; k <= end; k++)
+                b_info->llc_colors[cur_index++] = k;
+        }
+    }
+
     if (!xlu_cfg_get_long (config, "vcpus", &l, 0)) {
         vcpus = l;
         if (libxl_cpu_bitmap_alloc(ctx, &b_info->avail_vcpus, l)) {
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Mon Jan 29 17:19:30 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 29 Jan 2024 17:19:30 +0000
Received: from list by lists.xenproject.org with outflank-mailman.673071.1047302 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUVI9-0007u4-Lf; Mon, 29 Jan 2024 17:19:29 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 673071.1047302; Mon, 29 Jan 2024 17:19:29 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUVI9-0007sW-C8; Mon, 29 Jan 2024 17:19:29 +0000
Received: by outflank-mailman (input) for mailman id 673071;
 Mon, 29 Jan 2024 17:19:28 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=Vh+I=JH=minervasys.tech=carlo.nonato@srs-se1.protection.inumbo.net>)
 id 1rUVI8-0005vY-5J
 for xen-devel@lists.xenproject.org; Mon, 29 Jan 2024 17:19:28 +0000
Received: from mail-ed1-x52a.google.com (mail-ed1-x52a.google.com
 [2a00:1450:4864:20::52a])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 8dded0bd-beca-11ee-8a43-1f161083a0e0;
 Mon, 29 Jan 2024 18:19:26 +0100 (CET)
Received: by mail-ed1-x52a.google.com with SMTP id
 4fb4d7f45d1cf-55c33773c0aso2932656a12.1
 for <xen-devel@lists.xenproject.org>; Mon, 29 Jan 2024 09:19:26 -0800 (PST)
Received: from carlo-ubuntu.mo54.unimo.it (nonato.mo54.unimo.it.
 [155.185.85.8]) by smtp.gmail.com with ESMTPSA id
 eo15-20020a056402530f00b005598ec568dbsm3970494edb.59.2024.01.29.09.19.25
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 29 Jan 2024 09:19:25 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 8dded0bd-beca-11ee-8a43-1f161083a0e0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=minervasys-tech.20230601.gappssmtp.com; s=20230601; t=1706548766; x=1707153566; darn=lists.xenproject.org;
        h=content-transfer-encoding:mime-version:references:in-reply-to
         :message-id:date:subject:cc:to:from:from:to:cc:subject:date
         :message-id:reply-to;
        bh=xs19vJNLniUVsdKVutvtLwP1VZTZPktS4ivl+2Fef/4=;
        b=IjIGYpjDlCncxLWFRF2+pHvMOZL5A89ZJKpFy5fa2zWwFDPZkdAnsBmVrHn0BgmflY
         piQ7k15dmALMOVpSuCNmWa4adVYVZQR+U1VVMvCw5JZttBaHOvGjuYZFjVdgRTQN2TdG
         Zn1anbmczluv8u/g2jnXWIcUw00h/uKL3TbNHOAX9vGO0CKKEExCv9cE8ZNfCE3h9+ML
         vYss4Rl/u0kKn2M2bXnrbZTLzxEAF8RMK05jQm0IvuBjw8+w0Q806cGLju6HfhGfBk7o
         WVuSoLCWkK48kzzIGZJJ0Gf+Plwlrkkfn6Lrmjq0EGLLMWuPDsVNb286sQX83SizSKqT
         worQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706548766; x=1707153566;
        h=content-transfer-encoding:mime-version:references:in-reply-to
         :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to;
        bh=xs19vJNLniUVsdKVutvtLwP1VZTZPktS4ivl+2Fef/4=;
        b=bWlqd/d5SlUrd62LujEnaKMD2h0Mvra3XGx3jJewYTgpoNn6jSWDeNKzCLfj0FPKJX
         +ktwk+ezWEYMHntFJfVBrLdOeT0mJQCs/qMUgGjXDbGXLnn6YbOuExmQDFvkRtX3qq0E
         JDdM6aY9VTXnvgQcgeY20Npz3W88xm3aEGia1GuZ+0+eMiwzuH1e4Fog1emm1Oe69dTk
         zSSe48+9qr5yHWethw/0/36AOMjPyandqUt8KF2V5Il+nsn9Vf5bNc5yFCP5T5h9SUqd
         lnV1rUXv4/YEfG5VScM/MxuhUil4zg9I37dAXtUNWGUcb6D4gSlARFHqhiGSxL922qzG
         qacw==
X-Gm-Message-State: AOJu0YzGio4Cot8cwRffRYrvk+mfqCUsifWXdNHcOrw/UEtTkuvePfPh
	MnH6irzWYS78WT0PmP7IttBvEiH5NnyssD6GnY6XS8eY1pvoH8JYpOqxGYpQ836JgVzB9aD4OCm
	zBGs=
X-Google-Smtp-Source: AGHT+IGdGT5cRny9mU8SBbkRLw3pKeULmlYnq2TZaaLSJz9byCvAP1JqTQcUJfCPT6IILFXDNjoRGA==
X-Received: by 2002:a05:6402:40c8:b0:55d:3d64:3ba6 with SMTP id z8-20020a05640240c800b0055d3d643ba6mr5232740edb.29.1706548765751;
        Mon, 29 Jan 2024 09:19:25 -0800 (PST)
From: Carlo Nonato <carlo.nonato@minervasys.tech>
To: xen-devel@lists.xenproject.org
Cc: andrea.bastoni@minervasys.tech,
	Carlo Nonato <carlo.nonato@minervasys.tech>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	George Dunlap <george.dunlap@citrix.com>,
	Jan Beulich <jbeulich@suse.com>,
	Julien Grall <julien@xen.org>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Wei Liu <wl@xen.org>,
	Bertrand Marquis <bertrand.marquis@arm.com>,
	Michal Orzel <michal.orzel@amd.com>,
	Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
	Marco Solieri <marco.solieri@minervasys.tech>
Subject: [PATCH v6 10/15] xen: add cache coloring allocator for domains
Date: Mon, 29 Jan 2024 18:18:06 +0100
Message-Id: <20240129171811.21382-11-carlo.nonato@minervasys.tech>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20240129171811.21382-1-carlo.nonato@minervasys.tech>
References: <20240129171811.21382-1-carlo.nonato@minervasys.tech>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Add a new memory page allocator that implements the cache coloring mechanism.
The allocation algorithm enforces equal frequency distribution of cache
partitions, following the coloring configuration of a domain. This allows
for an even utilization of cache sets for every domain.

Pages are stored in a color-indexed array of lists. Those lists are filled
by a simple init function which computes the color of each page.
When a domain requests a page, the allocator extract the page from the list
with the maximum number of free pages between those that the domain can
access, given its coloring configuration.

The allocator can only handle requests of order-0 pages. This allows for
easier implementation and since cache coloring targets only embedded systems,
it's assumed not to be a major problem.

The buddy allocator must coexist with the colored one because the Xen heap
isn't colored. For this reason a new Kconfig option and a command line
parameter are added to let the user set the amount of memory reserved for
the buddy allocator. Even when cache coloring is enabled, this memory
isn't managed by the colored allocator.

Colored heap information is dumped in the dump_heap() debug-key function.

Based on original work from: Luca Miccio <lucmiccio@gmail.com>

Signed-off-by: Marco Solieri <marco.solieri@minervasys.tech>
Signed-off-by: Carlo Nonato <carlo.nonato@minervasys.tech>
---
v6:
- colored allocator functions are now static
v5:
- Carlo Nonato as the new author
- the colored allocator balances color usage for each domain and it searches
  linearly only in the number of colors (FIXME removed)
- addedd scrub functionality
- removed stub functions (still requires some macro definition)
- addr_to_color turned to mfn_to_color for easier operations
- removed BUG_ON in init_color_heap_pages() in favor of panic()
- only non empty page lists are logged in dump_color_heap()
v4:
- moved colored allocator code after buddy allocator because it now has
  some dependencies on buddy functions
- buddy_alloc_size is now used only by the colored allocator
- fixed a bug that allowed the buddy to merge pages when they were colored
- free_color_heap_page() now calls mark_page_free()
- free_color_heap_page() uses of the frametable array for faster searches
- added FIXME comment for the linear search in free_color_heap_page()
- removed alloc_color_domheap_page() to let the colored allocator exploit
  some more buddy allocator code
- alloc_color_heap_page() now allocs min address pages first
- reduced the mess in end_boot_allocator(): use the first loop for
  init_color_heap_pages()
- fixed page_list_add_prev() (list.h) since it was doing the opposite of
  what it was supposed to do
- fixed page_list_add_prev() (non list.h) to check also for next existence
- removed unused page_list_add_next()
- moved p2m code in another patch
---
 docs/misc/cache-coloring.rst      |  37 ++++++
 docs/misc/xen-command-line.pandoc |  14 +++
 xen/arch/Kconfig                  |   8 ++
 xen/arch/arm/include/asm/mm.h     |   5 +
 xen/common/llc-coloring.c         |  13 ++
 xen/common/page_alloc.c           | 194 +++++++++++++++++++++++++++++-
 xen/include/xen/llc-coloring.h    |   4 +
 7 files changed, 270 insertions(+), 5 deletions(-)

diff --git a/docs/misc/cache-coloring.rst b/docs/misc/cache-coloring.rst
index bf055d7e7f..db1a719698 100644
--- a/docs/misc/cache-coloring.rst
+++ b/docs/misc/cache-coloring.rst
@@ -9,6 +9,9 @@ To compile LLC coloring support set ``CONFIG_LLC_COLORING=y``.
 If needed, change the maximum number of colors with
 ``CONFIG_NR_LLC_COLORS=<n>``.
 
+If needed, change the buddy allocator reserved size with
+``CONFIG_BUDDY_ALLOCATOR_SIZE=<n>``.
+
 Compile Xen and the toolstack and then configure it via
 `Command line parameters`_. For DomUs follow `DomUs configuration`_.
 
@@ -87,6 +90,8 @@ More specific documentation is available at `docs/misc/xen-command-line.pandoc`.
 +----------------------+-------------------------------+
 | ``dom0-llc-colors``  | Dom0 color configuration      |
 +----------------------+-------------------------------+
+| ``buddy-alloc-size`` | Buddy allocator reserved size |
++----------------------+-------------------------------+
 
 Colors selection format
 ***********************
@@ -161,6 +166,17 @@ DomUs colors can be set via Device Tree, also for Dom0less configurations
 **Note:** If no color configuration is provided for a domain, the default one,
 which corresponds to all available colors is used instead.
 
+Colored allocator and buddy allocator
+*************************************
+
+The colored allocator distributes pages based on color configurations of
+domains so that each domains only gets pages of its own colors.
+The colored allocator is meant as an alternative to the buddy allocator because
+its allocation policy is by definition incompatible with the generic one. Since
+the Xen heap is not colored yet, we need to support the coexistence of the two
+allocators and some memory must be left for the buddy one. Buddy memory
+reservation is configured via Kconfig or via command-line.
+
 Known issues and limitations
 ****************************
 
@@ -171,3 +187,24 @@ In the domain configuration, "xen,static-mem" allows memory to be statically
 allocated to the domain. This isn't possible when LLC coloring is enabled,
 because that memory can't be guaranteed to use only colors assigned to the
 domain.
+
+Cache coloring is intended only for embedded systems
+####################################################
+
+The current implementation aims to satisfy the need of predictability in
+embedded systems with small amount of memory to be managed in a colored way.
+Given that, some shortcuts are taken in the development. Expect worse
+performances on larger systems.
+
+Colored allocator can only make use of order-0 pages
+####################################################
+
+The cache coloring technique relies on memory mappings and on the smallest
+amount of memory that can be mapped to achieve the maximum number of colors
+(cache partitions) possible. This amount is what is normally called a page and,
+in Xen terminology, the order-0 page is the smallest one. The fairly simple
+colored allocator currently implemented, makes use only of such pages.
+It must be said that a more complex one could, in theory, adopt higher order
+pages if the colors selection contained adjacent colors. Two subsequent colors,
+for example, can be represented by an order-1 page, four colors correspond to
+an order-2 page, etc.
diff --git a/docs/misc/xen-command-line.pandoc b/docs/misc/xen-command-line.pandoc
index 25da997b5b..d52d38b97a 100644
--- a/docs/misc/xen-command-line.pandoc
+++ b/docs/misc/xen-command-line.pandoc
@@ -270,6 +270,20 @@ and not running softirqs. Reduce this if softirqs are not being run frequently
 enough. Setting this to a high value may cause boot failure, particularly if
 the NMI watchdog is also enabled.
 
+### buddy-alloc-size (arm64)
+> `= <size>`
+
+> Default: `64M`
+
+Amount of memory reserved for the buddy allocator when colored allocator is
+active. This options is parsed only when LLC coloring support is enabled.
+The colored allocator is meant as an alternative to the buddy allocator,
+because its allocation policy is by definition incompatible with the generic
+one. Since the Xen heap systems is not colored yet, we need to support the
+coexistence of the two allocators for now. This parameter, which is optional
+and for expert only, it's used to set the amount of memory reserved to the
+buddy allocator.
+
 ### cet
     = List of [ shstk=<bool>, ibt=<bool> ]
 
diff --git a/xen/arch/Kconfig b/xen/arch/Kconfig
index c1157bcbcb..b50082eb84 100644
--- a/xen/arch/Kconfig
+++ b/xen/arch/Kconfig
@@ -48,3 +48,11 @@ config NR_LLC_COLORS
 	  bound. The runtime value is autocomputed or manually set via cmdline.
 	  The default value corresponds to an 8 MiB 16-ways LLC, which should be
 	  more than what needed in the general case.
+
+config BUDDY_ALLOCATOR_SIZE
+	int "Buddy allocator reserved memory size (MiB)"
+	default "64"
+	depends on LLC_COLORING
+	help
+	  Amount of memory reserved for the buddy allocator to serve Xen heap,
+	  working alongside the colored one.
diff --git a/xen/arch/arm/include/asm/mm.h b/xen/arch/arm/include/asm/mm.h
index cbcf3bf147..1829c559d6 100644
--- a/xen/arch/arm/include/asm/mm.h
+++ b/xen/arch/arm/include/asm/mm.h
@@ -145,6 +145,11 @@ struct page_info
 #else
 #define PGC_static     0
 #endif
+#ifdef CONFIG_LLC_COLORING
+/* Page is cache colored */
+#define _PGC_colored      PG_shift(4)
+#define PGC_colored       PG_mask(1, 4)
+#endif
 /* ... */
 /* Page is broken? */
 #define _PGC_broken       PG_shift(7)
diff --git a/xen/common/llc-coloring.c b/xen/common/llc-coloring.c
index a932a61e0c..25e0861733 100644
--- a/xen/common/llc-coloring.c
+++ b/xen/common/llc-coloring.c
@@ -21,6 +21,9 @@ static unsigned int __ro_after_init max_nr_colors = CONFIG_NR_LLC_COLORS;
 static unsigned int __initdata dom0_colors[CONFIG_NR_LLC_COLORS];
 static unsigned int __initdata dom0_num_colors;
 
+#define mfn_color_mask              (max_nr_colors - 1)
+#define mfn_to_color(mfn)           (mfn_x(mfn) & mfn_color_mask)
+
 /*
  * Parse the coloring configuration given in the buf string, following the
  * syntax below.
@@ -277,6 +280,16 @@ int domain_set_llc_colors_from_str(struct domain *d, const char *str)
     return domain_check_colors(d);
 }
 
+unsigned int page_to_llc_color(const struct page_info *pg)
+{
+    return mfn_to_color(page_to_mfn(pg));
+}
+
+unsigned int get_max_nr_llc_colors(void)
+{
+    return max_nr_colors;
+}
+
 /*
  * Local variables:
  * mode: C
diff --git a/xen/common/page_alloc.c b/xen/common/page_alloc.c
index 7c135e0bb4..469d78869f 100644
--- a/xen/common/page_alloc.c
+++ b/xen/common/page_alloc.c
@@ -126,6 +126,7 @@
 #include <xen/irq.h>
 #include <xen/keyhandler.h>
 #include <xen/lib.h>
+#include <xen/llc-coloring.h>
 #include <xen/mm.h>
 #include <xen/nodemask.h>
 #include <xen/numa.h>
@@ -157,7 +158,11 @@
 #define PGC_static 0
 #endif
 
-#define PGC_preserved (PGC_extra | PGC_static)
+#ifndef PGC_colored
+#define PGC_colored 0
+#endif
+
+#define PGC_preserved (PGC_extra | PGC_static | PGC_colored)
 
 #ifndef PGT_TYPE_INFO_INITIALIZER
 #define PGT_TYPE_INFO_INITIALIZER 0
@@ -1504,6 +1509,7 @@ static void free_heap_pages(
             if ( !mfn_valid(page_to_mfn(predecessor)) ||
                  !page_state_is(predecessor, free) ||
                  (predecessor->count_info & PGC_static) ||
+                 (predecessor->count_info & PGC_colored) ||
                  (PFN_ORDER(predecessor) != order) ||
                  (page_to_nid(predecessor) != node) )
                 break;
@@ -1528,6 +1534,7 @@ static void free_heap_pages(
             if ( !mfn_valid(page_to_mfn(successor)) ||
                  !page_state_is(successor, free) ||
                  (successor->count_info & PGC_static) ||
+                 (successor->count_info & PGC_colored) ||
                  (PFN_ORDER(successor) != order) ||
                  (page_to_nid(successor) != node) )
                 break;
@@ -1943,6 +1950,161 @@ static unsigned long avail_heap_pages(
     return free_pages;
 }
 
+/*************************
+ * COLORED SIDE-ALLOCATOR
+ *
+ * Pages are grouped by LLC color in lists which are globally referred to as the
+ * color heap. Lists are populated in end_boot_allocator().
+ * After initialization there will be N lists where N is the number of
+ * available colors on the platform.
+ */
+static struct page_list_head *__ro_after_init _color_heap;
+static unsigned long *__ro_after_init free_colored_pages;
+
+/* Memory required for buddy allocator to work with colored one */
+#ifdef CONFIG_LLC_COLORING
+static unsigned long __initdata buddy_alloc_size =
+    MB(CONFIG_BUDDY_ALLOCATOR_SIZE);
+size_param("buddy-alloc-size", buddy_alloc_size);
+
+#define domain_num_llc_colors(d) (d)->num_llc_colors
+#define domain_llc_color(d, i)   (d)->llc_colors[(i)]
+#else
+static unsigned long __initdata buddy_alloc_size;
+
+#define domain_num_llc_colors(d) 0
+#define domain_llc_color(d, i)   0
+#endif
+
+#define color_heap(color) (&_color_heap[color])
+
+static void free_color_heap_page(struct page_info *pg, bool need_scrub)
+{
+    unsigned int color = page_to_llc_color(pg);
+    struct page_list_head *head = color_heap(color);
+
+    spin_lock(&heap_lock);
+
+    mark_page_free(pg, page_to_mfn(pg));
+
+    if ( need_scrub )
+    {
+        pg->count_info |= PGC_need_scrub;
+        poison_one_page(pg);
+    }
+
+    pg->count_info |= PGC_colored;
+    free_colored_pages[color]++;
+    page_list_add(pg, head);
+
+    spin_unlock(&heap_lock);
+}
+
+static struct page_info *alloc_color_heap_page(unsigned int memflags,
+                                               const struct domain *d)
+{
+    struct page_info *pg = NULL;
+    unsigned int i, color = 0;
+    unsigned long max = 0;
+    bool need_tlbflush = false;
+    uint32_t tlbflush_timestamp = 0;
+    bool scrub = !(memflags & MEMF_no_scrub);
+
+    spin_lock(&heap_lock);
+
+    for ( i = 0; i < domain_num_llc_colors(d); i++ )
+    {
+        unsigned long free = free_colored_pages[domain_llc_color(d, i)];
+
+        if ( free > max )
+        {
+            color = domain_llc_color(d, i);
+            pg = page_list_first(color_heap(color));
+            max = free;
+        }
+    }
+
+    if ( !pg )
+    {
+        spin_unlock(&heap_lock);
+        return NULL;
+    }
+
+    pg->count_info = PGC_state_inuse | PGC_colored |
+                     (pg->count_info & PGC_need_scrub);
+    free_colored_pages[color]--;
+    page_list_del(pg, color_heap(color));
+
+    if ( !(memflags & MEMF_no_tlbflush) )
+        accumulate_tlbflush(&need_tlbflush, pg, &tlbflush_timestamp);
+
+    init_free_page_fields(pg);
+
+    spin_unlock(&heap_lock);
+
+    if ( test_and_clear_bit(_PGC_need_scrub, &pg->count_info) && scrub )
+        scrub_one_page(pg);
+    else if ( scrub )
+        check_one_page(pg);
+
+    if ( need_tlbflush )
+        filtered_flush_tlb_mask(tlbflush_timestamp);
+
+    flush_page_to_ram(mfn_x(page_to_mfn(pg)),
+                      !(memflags & MEMF_no_icache_flush));
+
+    return pg;
+}
+
+static void __init init_color_heap_pages(struct page_info *pg,
+                                         unsigned long nr_pages)
+{
+    unsigned int i;
+    bool need_scrub = opt_bootscrub == BOOTSCRUB_IDLE;
+
+    if ( buddy_alloc_size )
+    {
+        unsigned long buddy_pages = min(PFN_DOWN(buddy_alloc_size), nr_pages);
+
+        init_heap_pages(pg, buddy_pages);
+        nr_pages -= buddy_pages;
+        buddy_alloc_size -= buddy_pages << PAGE_SHIFT;
+        pg += buddy_pages;
+    }
+
+    if ( !_color_heap )
+    {
+        unsigned int max_nr_colors = get_max_nr_llc_colors();
+
+        _color_heap = xmalloc_array(struct page_list_head, max_nr_colors);
+        free_colored_pages = xzalloc_array(unsigned long, max_nr_colors);
+        if ( !_color_heap || !free_colored_pages )
+            panic("Can't allocate colored heap. Buddy reserved size is too low");
+
+        for ( i = 0; i < max_nr_colors; i++ )
+            INIT_PAGE_LIST_HEAD(color_heap(i));
+    }
+
+    if ( nr_pages )
+        printk(XENLOG_DEBUG
+               "Init color heap with %lu pages, start MFN: %"PRI_mfn"\n",
+               nr_pages, mfn_x(page_to_mfn(pg)));
+
+    for ( i = 0; i < nr_pages; i++ )
+        free_color_heap_page(&pg[i], need_scrub);
+}
+
+static void dump_color_heap(void)
+{
+    unsigned int color;
+
+    printk("Dumping color heap info\n");
+    for ( color = 0; color < get_max_nr_llc_colors(); color++ )
+        if ( free_colored_pages[color] > 0 )
+            printk("Color heap[%u]: %lu pages\n",
+                   color, free_colored_pages[color]);
+}
+
 void __init end_boot_allocator(void)
 {
     unsigned int i;
@@ -1962,7 +2124,13 @@ void __init end_boot_allocator(void)
     for ( i = nr_bootmem_regions; i-- > 0; )
     {
         struct bootmem_region *r = &bootmem_region_list[i];
-        if ( r->s < r->e )
+
+        if ( r->s >= r->e )
+            continue;
+
+        if ( llc_coloring_enabled )
+            init_color_heap_pages(mfn_to_page(_mfn(r->s)), r->e - r->s);
+        else
             init_heap_pages(mfn_to_page(_mfn(r->s)), r->e - r->s);
     }
     nr_bootmem_regions = 0;
@@ -2458,7 +2626,14 @@ struct page_info *alloc_domheap_pages(
     if ( memflags & MEMF_no_owner )
         memflags |= MEMF_no_refcount;
 
-    if ( !dma_bitsize )
+    /* Only domains are supported for coloring */
+    if ( d && llc_coloring_enabled )
+    {
+        /* Colored allocation must be done on 0 order */
+        if ( order || (pg = alloc_color_heap_page(memflags, d)) == NULL )
+            return NULL;
+    }
+    else if ( !dma_bitsize )
         memflags &= ~MEMF_no_dma;
     else if ( (dma_zone = bits_to_zone(dma_bitsize)) < zone_hi )
         pg = alloc_heap_pages(dma_zone + 1, zone_hi, order, memflags, d);
@@ -2483,7 +2658,10 @@ struct page_info *alloc_domheap_pages(
         }
         if ( assign_page(pg, order, d, memflags) )
         {
-            free_heap_pages(pg, order, memflags & MEMF_no_scrub);
+            if ( pg->count_info & PGC_colored )
+                free_color_heap_page(pg, memflags & MEMF_no_scrub);
+            else
+                free_heap_pages(pg, order, memflags & MEMF_no_scrub);
             return NULL;
         }
     }
@@ -2566,7 +2744,10 @@ void free_domheap_pages(struct page_info *pg, unsigned int order)
             scrub = 1;
         }
 
-        free_heap_pages(pg, order, scrub);
+        if ( pg->count_info & PGC_colored )
+            free_color_heap_page(pg, scrub);
+        else
+            free_heap_pages(pg, order, scrub);
     }
 
     if ( drop_dom_ref )
@@ -2673,6 +2854,9 @@ static void cf_check dump_heap(unsigned char key)
             continue;
         printk("Node %d has %lu unscrubbed pages\n", i, node_need_scrub[i]);
     }
+
+    if ( llc_coloring_enabled )
+        dump_color_heap();
 }
 
 static __init int cf_check register_heap_trigger(void)
diff --git a/xen/include/xen/llc-coloring.h b/xen/include/xen/llc-coloring.h
index 63785c8319..b96a7134ed 100644
--- a/xen/include/xen/llc-coloring.h
+++ b/xen/include/xen/llc-coloring.h
@@ -31,6 +31,10 @@ int domain_set_llc_colors_from_str(struct domain *d, const char *str);
 int domain_set_llc_colors_domctl(struct domain *d,
                                  const struct xen_domctl_set_llc_colors *config);
 
+struct page_info;
+unsigned int page_to_llc_color(const struct page_info *pg);
+unsigned int get_max_nr_llc_colors(void);
+
 #endif /* __COLORING_H__ */
 
 /*
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Mon Jan 29 17:19:30 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 29 Jan 2024 17:19:30 +0000
Received: from list by lists.xenproject.org with outflank-mailman.673061.1047216 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUVI1-0005w0-M5; Mon, 29 Jan 2024 17:19:21 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 673061.1047216; Mon, 29 Jan 2024 17:19:21 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUVI1-0005vt-II; Mon, 29 Jan 2024 17:19:21 +0000
Received: by outflank-mailman (input) for mailman id 673061;
 Mon, 29 Jan 2024 17:19:20 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=Vh+I=JH=minervasys.tech=carlo.nonato@srs-se1.protection.inumbo.net>)
 id 1rUVI0-0005vY-EV
 for xen-devel@lists.xenproject.org; Mon, 29 Jan 2024 17:19:20 +0000
Received: from mail-ed1-x534.google.com (mail-ed1-x534.google.com
 [2a00:1450:4864:20::534])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 8903ff3e-beca-11ee-8a43-1f161083a0e0;
 Mon, 29 Jan 2024 18:19:18 +0100 (CET)
Received: by mail-ed1-x534.google.com with SMTP id
 4fb4d7f45d1cf-55eb1f9d1f0so3956913a12.0
 for <xen-devel@lists.xenproject.org>; Mon, 29 Jan 2024 09:19:18 -0800 (PST)
Received: from carlo-ubuntu.mo54.unimo.it (nonato.mo54.unimo.it.
 [155.185.85.8]) by smtp.gmail.com with ESMTPSA id
 eo15-20020a056402530f00b005598ec568dbsm3970494edb.59.2024.01.29.09.19.17
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 29 Jan 2024 09:19:17 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 8903ff3e-beca-11ee-8a43-1f161083a0e0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=minervasys-tech.20230601.gappssmtp.com; s=20230601; t=1706548758; x=1707153558; darn=lists.xenproject.org;
        h=content-transfer-encoding:mime-version:references:in-reply-to
         :message-id:date:subject:cc:to:from:from:to:cc:subject:date
         :message-id:reply-to;
        bh=+hv5wbDw5zgCt9ccmVowLGqtempCv7CEDV12eNerpQk=;
        b=d41rw/jC27kx6CDnGc4OsdN8fF1X8tt9xuRirbD289tr374hiZcZyUShOx9RQ/9DHC
         OPxxc8wLoiNBASPcT1rvJk7Vj5oH6Sxl/VEvdg6e2UMHblZwLDb6zbpDVXvWEc/0iRWT
         NuGB59aG70XcKn80elQqduhlCkgBfrNzGvLYvt+lA+XPxn2spOXXySeD36yo/hIooVUU
         rmTnysPv83OhgzzTphJODIuLFbMsWny2iKNo5hH2N2Luvgqe/1Hxlfhl1jmzZUaRQHYT
         7RNVUvlYZPbtzI3naqU1xqJXApTEhfm68G0lpXm6ybnsJyQn1c7SycgI4msbFqPrqzYY
         MAVQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706548758; x=1707153558;
        h=content-transfer-encoding:mime-version:references:in-reply-to
         :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to;
        bh=+hv5wbDw5zgCt9ccmVowLGqtempCv7CEDV12eNerpQk=;
        b=neKxYdVTELuQVs4bUczDT0HnyogZb4mjufOcWY0gKrCCFY7LzboP2X42k7eCyyrHN6
         XWotXNZtBAKwL6aH5HD6vJPi2En5rEO2pHEUQoGWU+7UjhgI2nvj9JL6qk3dEPBD18qb
         uEy2CgbVgwbJSHRbvzbXH8VYYfZq0GF5T/QzKJtmPNpbXkctEAgJD7L4lL5PTd8Envaz
         /wDCXdkrTDCfThTmFpkaXB6e91bIqiSpGz/0EJ4N0dtYPVXI8AQP3gN4Jam/PfO9pSxx
         vbr8JLe9ADvCws//ZcAlzMvrk6vSnNdP6/mPghtc0kzIx1M2BdqOP9fwNNEebfPMH4B1
         s0xQ==
X-Gm-Message-State: AOJu0YwLdIwbnoyHLtC3Du5adVnc56qy87QCWePxnTnthu9PpKnzGEFF
	Zeqz/MffIZgeZPO1VPMgv3XB8UZLNZxf6bnVNTpDODd3t07TdJr5t9u4YpOYVBwqvA/k+hhPCha
	UNXg=
X-Google-Smtp-Source: AGHT+IEXJpomaco9S1o1pO/0EpXOhqKzjixYigXXi2qXJK2rcOISoW4ZekLLP4YaXURpOECuZYCm4w==
X-Received: by 2002:aa7:c312:0:b0:55e:eb6e:ff51 with SMTP id l18-20020aa7c312000000b0055eeb6eff51mr3877944edq.12.1706548757791;
        Mon, 29 Jan 2024 09:19:17 -0800 (PST)
From: Carlo Nonato <carlo.nonato@minervasys.tech>
To: xen-devel@lists.xenproject.org
Cc: andrea.bastoni@minervasys.tech,
	Carlo Nonato <carlo.nonato@minervasys.tech>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	George Dunlap <george.dunlap@citrix.com>,
	Jan Beulich <jbeulich@suse.com>,
	Julien Grall <julien@xen.org>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Wei Liu <wl@xen.org>,
	Marco Solieri <marco.solieri@minervasys.tech>
Subject: [PATCH v6 01/15] xen/common: add cache coloring common code
Date: Mon, 29 Jan 2024 18:17:57 +0100
Message-Id: <20240129171811.21382-2-carlo.nonato@minervasys.tech>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20240129171811.21382-1-carlo.nonato@minervasys.tech>
References: <20240129171811.21382-1-carlo.nonato@minervasys.tech>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Last Level Cache (LLC) coloring allows to partition the cache in smaller
chunks called cache colors. Since not all architectures can actually
implement it, add a HAS_LLC_COLORING Kconfig and put other options under
xen/arch.

LLC colors are a property of the domain, so the domain struct has to be
extended.

Based on original work from: Luca Miccio <lucmiccio@gmail.com>

Signed-off-by: Carlo Nonato <carlo.nonato@minervasys.tech>
Signed-off-by: Marco Solieri <marco.solieri@minervasys.tech>
---
v6:
- moved almost all code in common
- moved documentation in this patch
- reintroduced range for CONFIG_NR_LLC_COLORS
- reintroduced some stub functions to reduce the number of checks on
  llc_coloring_enabled
- moved domain_llc_coloring_free() in same patch where allocation happens
- turned "d->llc_colors" to pointer-to-const
- llc_coloring_init() now returns void and panics if errors are found
v5:
- used - instead of _ for filenames
- removed domain_create_llc_colored()
- removed stub functions
- coloring domain fields are now #ifdef protected
v4:
- Kconfig options moved to xen/arch
- removed range for CONFIG_NR_LLC_COLORS
- added "llc_coloring_enabled" global to later implement the boot-time
  switch
- added domain_create_llc_colored() to be able to pass colors
- added is_domain_llc_colored() macro
---
 docs/misc/cache-coloring.rst      | 87 +++++++++++++++++++++++++++++++
 docs/misc/xen-command-line.pandoc | 27 ++++++++++
 xen/arch/Kconfig                  | 17 ++++++
 xen/common/Kconfig                |  3 ++
 xen/common/Makefile               |  1 +
 xen/common/keyhandler.c           |  3 ++
 xen/common/llc-coloring.c         | 87 +++++++++++++++++++++++++++++++
 xen/include/xen/llc-coloring.h    | 38 ++++++++++++++
 xen/include/xen/sched.h           |  5 ++
 9 files changed, 268 insertions(+)
 create mode 100644 docs/misc/cache-coloring.rst
 create mode 100644 xen/common/llc-coloring.c
 create mode 100644 xen/include/xen/llc-coloring.h

diff --git a/docs/misc/cache-coloring.rst b/docs/misc/cache-coloring.rst
new file mode 100644
index 0000000000..9fe01e99e1
--- /dev/null
+++ b/docs/misc/cache-coloring.rst
@@ -0,0 +1,87 @@
+Xen cache coloring user guide
+=============================
+
+The cache coloring support in Xen allows to reserve Last Level Cache (LLC)
+partitions for Dom0, DomUs and Xen itself. Currently only ARM64 is supported.
+
+To compile LLC coloring support set ``CONFIG_LLC_COLORING=y``.
+
+If needed, change the maximum number of colors with
+``CONFIG_NR_LLC_COLORS=<n>``.
+
+Compile Xen and the toolstack and then configure it via
+`Command line parameters`_.
+
+Background
+**********
+
+Cache hierarchy of a modern multi-core CPU typically has first levels dedicated
+to each core (hence using multiple cache units), while the last level is shared
+among all of them. Such configuration implies that memory operations on one
+core (e.g. running a DomU) are able to generate interference on another core
+(e.g .hosting another DomU). Cache coloring allows eliminating this
+mutual interference, and thus guaranteeing higher and more predictable
+performances for memory accesses.
+The key concept underlying cache coloring is a fragmentation of the memory
+space into a set of sub-spaces called colors that are mapped to disjoint cache
+partitions. Technically, the whole memory space is first divided into a number
+of subsequent regions. Then each region is in turn divided into a number of
+subsequent sub-colors. The generic i-th color is then obtained by all the
+i-th sub-colors in each region.
+
+::
+
+                            Region j            Region j+1
+                .....................   ............
+                .                     . .
+                .                       .
+            _ _ _______________ _ _____________________ _ _
+                |     |     |     |     |     |     |
+                | c_0 | c_1 |     | c_n | c_0 | c_1 |
+           _ _ _|_____|_____|_ _ _|_____|_____|_____|_ _ _
+                    :                       :
+                    :                       :...         ... .
+                    :                            color 0
+                    :...........................         ... .
+                                                :
+          . . ..................................:
+
+There are two pragmatic lesson to be learnt.
+
+1. If one wants to avoid cache interference between two domains, different
+   colors needs to be used for their memory.
+
+2. Color assignment must privilege contiguity in the partitioning. E.g.,
+   assigning colors (0,1) to domain I  and (2,3) to domain  J is better than
+   assigning colors (0,2) to I and (1,3) to J.
+
+How to compute the number of colors
+***********************************
+
+To compute the number of available colors for a specific platform, the size of
+an LLC way and the page size used by Xen must be known. The first parameter can
+be found in the processor manual or can be also computed dividing the total
+cache size by the number of its ways. The second parameter is the minimum
+amount of memory that can be mapped by the hypervisor, thus dividing the way
+size by the page size, the number of total cache partitions is found. So for
+example, an Arm Cortex-A53 with a 16-ways associative 1 MiB LLC, can isolate up
+to 16 colors when pages are 4 KiB in size.
+
+Cache layout is probed automatically by looking at the CLIDR_EL1 arm register.
+This means that other system caches that aren't visible there, are ignored.
+The possibility of manually setting the way size is left to the user to overcome
+failing situations or for debugging/testing purposes. See
+`Command line parameters`_ for more information on that.
+
+Command line parameters
+***********************
+
+More specific documentation is available at `docs/misc/xen-command-line.pandoc`.
+
++----------------------+-------------------------------+
+| **Parameter**        | **Description**               |
++----------------------+-------------------------------+
+| ``llc-coloring``     | enable coloring at runtime    |
++----------------------+-------------------------------+
+| ``llc-way-size``     | set the LLC way size          |
++----------------------+-------------------------------+
diff --git a/docs/misc/xen-command-line.pandoc b/docs/misc/xen-command-line.pandoc
index 8e65f8bd18..11f9f209d1 100644
--- a/docs/misc/xen-command-line.pandoc
+++ b/docs/misc/xen-command-line.pandoc
@@ -1713,6 +1713,33 @@ This option is intended for debugging purposes only.  Enable MSR_DEBUGCTL.LBR
 in hypervisor context to be able to dump the Last Interrupt/Exception To/From
 record with other registers.
 
+### llc-coloring
+> `= <boolean>`
+
+> Default: `false`
+
+Flag to enable or disable LLC coloring support at runtime. This options is
+available only when `CONFIG_LLC_COLORING` is enabled. See the general
+cache coloring documentation for more info.
+
+### llc-way-size
+> `= <size>`
+
+> Default: `Obtained from the hardware`
+
+Specify the way size of the Last Level Cache. This options is available only
+when `CONFIG_LLC_COLORING` is enabled. It is an optional, expert-only parameter
+and it is used to calculate the number of available LLC colors on the platform.
+It can be obtained by dividing the total LLC size by the number of its
+associative ways.
+By default, the value is automatically computed by probing the hardware, but in
+case of specific needs, it can be manually set. Those include failing probing
+and debugging/testing purposes so that it's possibile to emulate platforms with
+different number of supported colors.
+An important detail to highlight is that the current implementation of the
+cache coloring technique requires the number of colors to be a power of 2, and
+consequently, also the LLC way size must be so.
+
 ### lock-depth-size
 > `= <integer>`
 
diff --git a/xen/arch/Kconfig b/xen/arch/Kconfig
index 67ba38f32f..c1157bcbcb 100644
--- a/xen/arch/Kconfig
+++ b/xen/arch/Kconfig
@@ -31,3 +31,20 @@ config NR_NUMA_NODES
 	  associated with multiple-nodes management. It is the upper bound of
 	  the number of NUMA nodes that the scheduler, memory allocation and
 	  other NUMA-aware components can handle.
+
+config LLC_COLORING
+	bool "Last Level Cache (LLC) coloring" if EXPERT
+	depends on HAS_LLC_COLORING
+
+config NR_LLC_COLORS
+	int "Maximum number of LLC colors"
+	range 2 1024
+	default 128
+	depends on LLC_COLORING
+	help
+	  Controls the build-time size of various arrays associated with LLC
+	  coloring. Refer to cache coloring documentation for how to compute the
+	  number of colors supported by the platform. This is only an upper
+	  bound. The runtime value is autocomputed or manually set via cmdline.
+	  The default value corresponds to an 8 MiB 16-ways LLC, which should be
+	  more than what needed in the general case.
diff --git a/xen/common/Kconfig b/xen/common/Kconfig
index 310ad4229c..e383f09d97 100644
--- a/xen/common/Kconfig
+++ b/xen/common/Kconfig
@@ -71,6 +71,9 @@ config HAS_IOPORTS
 config HAS_KEXEC
 	bool
 
+config HAS_LLC_COLORING
+	bool
+
 config HAS_PMAP
 	bool
 
diff --git a/xen/common/Makefile b/xen/common/Makefile
index 69d6aa626c..409cc53e2a 100644
--- a/xen/common/Makefile
+++ b/xen/common/Makefile
@@ -24,6 +24,7 @@ obj-y += keyhandler.o
 obj-$(CONFIG_KEXEC) += kexec.o
 obj-$(CONFIG_KEXEC) += kimage.o
 obj-$(CONFIG_LIVEPATCH) += livepatch.o livepatch_elf.o
+obj-$(CONFIG_LLC_COLORING) += llc-coloring.o
 obj-$(CONFIG_MEM_ACCESS) += mem_access.o
 obj-y += memory.o
 obj-y += multicall.o
diff --git a/xen/common/keyhandler.c b/xen/common/keyhandler.c
index 99a2d72a02..8d90b613f7 100644
--- a/xen/common/keyhandler.c
+++ b/xen/common/keyhandler.c
@@ -6,6 +6,7 @@
 #include <xen/debugger.h>
 #include <xen/delay.h>
 #include <xen/keyhandler.h>
+#include <xen/llc-coloring.h>
 #include <xen/param.h>
 #include <xen/shutdown.h>
 #include <xen/event.h>
@@ -307,6 +308,8 @@ static void cf_check dump_domains(unsigned char key)
 
         arch_dump_domain_info(d);
 
+        domain_dump_llc_colors(d);
+
         rangeset_domain_printk(d);
 
         dump_pageframe_info(d);
diff --git a/xen/common/llc-coloring.c b/xen/common/llc-coloring.c
new file mode 100644
index 0000000000..10729e70c1
--- /dev/null
+++ b/xen/common/llc-coloring.c
@@ -0,0 +1,87 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+/*
+ * Last Level Cache (LLC) coloring common code
+ *
+ * Copyright (C) 2022 Xilinx Inc.
+ */
+#include <xen/keyhandler.h>
+#include <xen/llc-coloring.h>
+#include <xen/param.h>
+
+bool __ro_after_init llc_coloring_enabled;
+boolean_param("llc-coloring", llc_coloring_enabled);
+
+/* Size of an LLC way */
+static unsigned int __ro_after_init llc_way_size;
+size_param("llc-way-size", llc_way_size);
+/* Number of colors available in the LLC */
+static unsigned int __ro_after_init max_nr_colors = CONFIG_NR_LLC_COLORS;
+
+static void print_colors(const unsigned int *colors, unsigned int num_colors)
+{
+    unsigned int i;
+
+    printk("{ ");
+    for ( i = 0; i < num_colors; i++ ) {
+        unsigned int start = colors[i], end = colors[i];
+
+        printk("%u", start);
+
+        for ( ;
+              i < num_colors - 1 && colors[i] + 1 == colors[i + 1];
+              i++, end++ );
+
+        if ( start != end )
+            printk("-%u", end);
+
+        if ( i < num_colors - 1 )
+            printk(", ");
+    }
+    printk(" }\n");
+}
+
+static void dump_coloring_info(unsigned char key)
+{
+    printk("'%c' pressed -> dumping LLC coloring general info\n", key);
+    printk("LLC way size: %u KiB\n", llc_way_size >> 10);
+    printk("Number of LLC colors supported: %u\n", max_nr_colors);
+}
+
+void __init llc_coloring_init(void)
+{
+    if ( !llc_way_size && !(llc_way_size = get_llc_way_size()) )
+        panic("Probed LLC coloring way size is 0 and no custom value found\n");
+
+    /*
+     * The maximum number of colors must be a power of 2 in order to correctly
+     * map them to bits of an address, so also the LLC way size must be so.
+     */
+    if ( llc_way_size & (llc_way_size - 1) )
+        panic("LLC coloring way size (%u) isn't a power of 2\n", llc_way_size);
+
+    max_nr_colors = llc_way_size >> PAGE_SHIFT;
+
+    if ( max_nr_colors < 2 || max_nr_colors > CONFIG_NR_LLC_COLORS )
+        panic("Number of LLC colors (%u) not in range [2, %u]\n",
+              max_nr_colors, CONFIG_NR_LLC_COLORS);
+
+    register_keyhandler('K', dump_coloring_info, "dump LLC coloring info", 1);
+
+    arch_llc_coloring_init();
+}
+
+void domain_dump_llc_colors(const struct domain *d)
+{
+    printk("Domain %pd has %u LLC colors: ", d, d->num_llc_colors);
+    print_colors(d->llc_colors, d->num_llc_colors);
+}
+
+/*
+ * Local variables:
+ * mode: C
+ * c-file-style: "BSD"
+ * c-basic-offset: 4
+ * tab-width: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/xen/include/xen/llc-coloring.h b/xen/include/xen/llc-coloring.h
new file mode 100644
index 0000000000..5e12eb426f
--- /dev/null
+++ b/xen/include/xen/llc-coloring.h
@@ -0,0 +1,38 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+/*
+ * Last Level Cache (LLC) coloring common header
+ *
+ * Copyright (C) 2022 Xilinx Inc.
+ */
+#ifndef __COLORING_H__
+#define __COLORING_H__
+
+#include <xen/sched.h>
+#include <public/domctl.h>
+
+#ifdef CONFIG_LLC_COLORING
+extern bool llc_coloring_enabled;
+
+void llc_coloring_init(void);
+void domain_dump_llc_colors(const struct domain *d);
+#else
+#define llc_coloring_enabled false
+
+static inline void llc_coloring_init(void) {}
+static inline void domain_dump_llc_colors(const struct domain *d) {}
+#endif
+
+unsigned int get_llc_way_size(void);
+void arch_llc_coloring_init(void);
+
+#endif /* __COLORING_H__ */
+
+/*
+ * Local variables:
+ * mode: C
+ * c-file-style: "BSD"
+ * c-basic-offset: 4
+ * tab-width: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/xen/include/xen/sched.h b/xen/include/xen/sched.h
index 9da91e0e62..8df0f29335 100644
--- a/xen/include/xen/sched.h
+++ b/xen/include/xen/sched.h
@@ -626,6 +626,11 @@ struct domain
 
     /* Holding CDF_* constant. Internal flags for domain creation. */
     unsigned int cdf;
+
+#ifdef CONFIG_LLC_COLORING
+    unsigned const int *llc_colors;
+    unsigned int num_llc_colors;
+#endif
 };
 
 static inline struct page_list_head *page_to_list(
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Mon Jan 29 17:19:30 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 29 Jan 2024 17:19:30 +0000
Received: from list by lists.xenproject.org with outflank-mailman.673063.1047228 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUVI2-00068T-Cn; Mon, 29 Jan 2024 17:19:22 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 673063.1047228; Mon, 29 Jan 2024 17:19:22 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUVI2-00067g-9h; Mon, 29 Jan 2024 17:19:22 +0000
Received: by outflank-mailman (input) for mailman id 673063;
 Mon, 29 Jan 2024 17:19:21 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=Vh+I=JH=minervasys.tech=carlo.nonato@srs-se1.protection.inumbo.net>)
 id 1rUVI1-0005vY-2g
 for xen-devel@lists.xenproject.org; Mon, 29 Jan 2024 17:19:21 +0000
Received: from mail-lj1-x229.google.com (mail-lj1-x229.google.com
 [2a00:1450:4864:20::229])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 897d3212-beca-11ee-8a43-1f161083a0e0;
 Mon, 29 Jan 2024 18:19:19 +0100 (CET)
Received: by mail-lj1-x229.google.com with SMTP id
 38308e7fff4ca-2d04f3d9332so11475611fa.1
 for <xen-devel@lists.xenproject.org>; Mon, 29 Jan 2024 09:19:19 -0800 (PST)
Received: from carlo-ubuntu.mo54.unimo.it (nonato.mo54.unimo.it.
 [155.185.85.8]) by smtp.gmail.com with ESMTPSA id
 eo15-20020a056402530f00b005598ec568dbsm3970494edb.59.2024.01.29.09.19.17
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 29 Jan 2024 09:19:18 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 897d3212-beca-11ee-8a43-1f161083a0e0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=minervasys-tech.20230601.gappssmtp.com; s=20230601; t=1706548759; x=1707153559; darn=lists.xenproject.org;
        h=content-transfer-encoding:mime-version:references:in-reply-to
         :message-id:date:subject:cc:to:from:from:to:cc:subject:date
         :message-id:reply-to;
        bh=NWZWToXQ8ShJksi8sO6nrYFAeFvPtEgXsN4D6Ih4w4M=;
        b=N7h8ofh4vNcJvAuAl+GtpIGq/F0uLrwq4X0NlzMfyWrhzLxk8c4ci8hXN1XjTJeflE
         Lwbz7aaeCHkPqAkLZHzN//Zhqbj9Xd6yXjIaj9IB9RrKqWcFjqxyKdNvaczusK9bHpCY
         ZX6C4tFiSdMhIQd0mU7hg2TU4OxMxD0VzLqOIxgZua2jv2WoTW90ed/D6V+yDwJzUFtx
         LYz8OLznlSUaY7RR7h1VbaTv4zZDZm9SBffl30QJM9Mxf27cYm0CNjFXBHxJWR1DHTl7
         V6Hwup6rfMVY/ag3UotIOxxnnUFhC/DywdHq5b7xUcSoIa4UxW7aKvMVobHv+ujZ02qI
         iPJg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706548759; x=1707153559;
        h=content-transfer-encoding:mime-version:references:in-reply-to
         :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to;
        bh=NWZWToXQ8ShJksi8sO6nrYFAeFvPtEgXsN4D6Ih4w4M=;
        b=E8hC6j7NqWtOrTE/8FKpMczgFxbg1YRzZssUciYi09vu4Xm9zOs380RZtK30tjVKy1
         /TfMPs/GuOhn1OWzoiTekaZ+yj8IEUg+ReJN581PsdQCrIJmc+SDiOdumQAoUnXpPpbk
         blkkBm4VlB4DcPZkAXN8pjsb8fqEu69ccz6/hC1GxIRPofuk15OC2gCJmy1c1Gs4Wve7
         nTgno/bI+JSKvOyZwjNkmVFVx+DoYpFYLEbj+nhEkGWPQ+rE1JGozypU57PKiUV/VUQl
         FVJNCPpHFvPjw/h8vDGqIKJYBNfXmjb1IPOy30AAyleOsTeljQEAr3RrFl90ebQphV+3
         UASw==
X-Gm-Message-State: AOJu0Yw52lnhXeMM3RKqr/l4xM5IQ2i9cVMgfwfhofyX+xD7vGgS+Bfn
	2+3LNXeMPnLJFNfpZYPZD+yUBEgm4oEwIec6jlW3yWYhbCDIefx4qq1cqOIKfmVyrjyON7OJ0rQ
	em1Y=
X-Google-Smtp-Source: AGHT+IE3Mu8k13ywcg8aZZoB34Z++ujFBvsu5KpGB9UD0c/Rz5sLZvuBZ10GgtiPkDmZprzjT7rJ2Q==
X-Received: by 2002:a2e:b705:0:b0:2cf:1c39:86eb with SMTP id j5-20020a2eb705000000b002cf1c3986ebmr4381850ljo.31.1706548758593;
        Mon, 29 Jan 2024 09:19:18 -0800 (PST)
From: Carlo Nonato <carlo.nonato@minervasys.tech>
To: xen-devel@lists.xenproject.org
Cc: andrea.bastoni@minervasys.tech,
	Carlo Nonato <carlo.nonato@minervasys.tech>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	George Dunlap <george.dunlap@citrix.com>,
	Jan Beulich <jbeulich@suse.com>,
	Julien Grall <julien@xen.org>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Wei Liu <wl@xen.org>,
	Bertrand Marquis <bertrand.marquis@arm.com>,
	Michal Orzel <michal.orzel@amd.com>,
	Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
	Marco Solieri <marco.solieri@minervasys.tech>
Subject: [PATCH v6 02/15] xen/arm: add initial support for LLC coloring on arm64
Date: Mon, 29 Jan 2024 18:17:58 +0100
Message-Id: <20240129171811.21382-3-carlo.nonato@minervasys.tech>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20240129171811.21382-1-carlo.nonato@minervasys.tech>
References: <20240129171811.21382-1-carlo.nonato@minervasys.tech>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

LLC coloring needs to know the last level cache layout in order to make the
best use of it. This can be probed by inspecting the CLIDR_EL1 register,
so the Last Level is defined as the last level visible by this register.
Note that this excludes system caches in some platforms.

Static memory allocation and cache coloring are incompatible because static
memory can't be guaranteed to use only colors assigned to the domain.
Panic during DomUs creation when both are enabled.

Based on original work from: Luca Miccio <lucmiccio@gmail.com>

Signed-off-by: Carlo Nonato <carlo.nonato@minervasys.tech>
Signed-off-by: Marco Solieri <marco.solieri@minervasys.tech>
---
v6:
- get_llc_way_size() now checks for at least separate I/D caches
v5:
- used - instead of _ for filenames
- moved static-mem check in this patch
- moved dom0 colors parsing in next patch
- moved color allocation and configuration in next patch
- moved check_colors() in next patch
- colors are now printed in short form
v4:
- added "llc-coloring" cmdline option for the boot-time switch
- dom0 colors are now checked during domain init as for any other domain
- fixed processor.h masks bit width
- check for overflow in parse_color_config()
- check_colors() now checks also that colors are sorted and unique
---
 docs/misc/cache-coloring.rst         | 11 ++++
 xen/arch/arm/Kconfig                 |  1 +
 xen/arch/arm/Makefile                |  1 +
 xen/arch/arm/dom0less-build.c        |  6 +++
 xen/arch/arm/include/asm/processor.h | 16 ++++++
 xen/arch/arm/llc-coloring.c          | 75 ++++++++++++++++++++++++++++
 xen/arch/arm/setup.c                 |  3 ++
 7 files changed, 113 insertions(+)
 create mode 100644 xen/arch/arm/llc-coloring.c

diff --git a/docs/misc/cache-coloring.rst b/docs/misc/cache-coloring.rst
index 9fe01e99e1..0535b5c656 100644
--- a/docs/misc/cache-coloring.rst
+++ b/docs/misc/cache-coloring.rst
@@ -85,3 +85,14 @@ More specific documentation is available at `docs/misc/xen-command-line.pandoc`.
 +----------------------+-------------------------------+
 | ``llc-way-size``     | set the LLC way size          |
 +----------------------+-------------------------------+
+
+Known issues and limitations
+****************************
+
+"xen,static-mem" isn't supported when coloring is enabled
+#########################################################
+
+In the domain configuration, "xen,static-mem" allows memory to be statically
+allocated to the domain. This isn't possible when LLC coloring is enabled,
+because that memory can't be guaranteed to use only colors assigned to the
+domain.
diff --git a/xen/arch/arm/Kconfig b/xen/arch/arm/Kconfig
index 50e9bfae1a..55143f86a9 100644
--- a/xen/arch/arm/Kconfig
+++ b/xen/arch/arm/Kconfig
@@ -8,6 +8,7 @@ config ARM_64
 	depends on !ARM_32
 	select 64BIT
 	select HAS_FAST_MULTIPLY
+	select HAS_LLC_COLORING
 
 config ARM
 	def_bool y
diff --git a/xen/arch/arm/Makefile b/xen/arch/arm/Makefile
index 33c677672f..c9a1cd298d 100644
--- a/xen/arch/arm/Makefile
+++ b/xen/arch/arm/Makefile
@@ -37,6 +37,7 @@ obj-$(CONFIG_IOREQ_SERVER) += ioreq.o
 obj-y += irq.o
 obj-y += kernel.init.o
 obj-$(CONFIG_LIVEPATCH) += livepatch.o
+obj-$(CONFIG_LLC_COLORING) += llc-coloring.o
 obj-y += mem_access.o
 obj-y += mm.o
 obj-y += monitor.o
diff --git a/xen/arch/arm/dom0less-build.c b/xen/arch/arm/dom0less-build.c
index fb63ec6fd1..1142f7f74a 100644
--- a/xen/arch/arm/dom0less-build.c
+++ b/xen/arch/arm/dom0less-build.c
@@ -5,6 +5,7 @@
 #include <xen/grant_table.h>
 #include <xen/iocap.h>
 #include <xen/libfdt/libfdt.h>
+#include <xen/llc-coloring.h>
 #include <xen/sched.h>
 #include <xen/serial.h>
 #include <xen/sizes.h>
@@ -879,7 +880,12 @@ void __init create_domUs(void)
             panic("No more domain IDs available\n");
 
         if ( dt_find_property(node, "xen,static-mem", NULL) )
+        {
+            if ( llc_coloring_enabled )
+                panic("LLC coloring and static memory are incompatible\n");
+
             flags |= CDF_staticmem;
+        }
 
         if ( dt_property_read_bool(node, "direct-map") )
         {
diff --git a/xen/arch/arm/include/asm/processor.h b/xen/arch/arm/include/asm/processor.h
index 8e02410465..336933ee62 100644
--- a/xen/arch/arm/include/asm/processor.h
+++ b/xen/arch/arm/include/asm/processor.h
@@ -18,6 +18,22 @@
 #define CTR_IDC_SHIFT       28
 #define CTR_DIC_SHIFT       29
 
+/* CCSIDR Current Cache Size ID Register */
+#define CCSIDR_LINESIZE_MASK            _AC(0x7, ULL)
+#define CCSIDR_NUMSETS_SHIFT            13
+#define CCSIDR_NUMSETS_MASK             _AC(0x3fff, ULL)
+#define CCSIDR_NUMSETS_SHIFT_FEAT_CCIDX 32
+#define CCSIDR_NUMSETS_MASK_FEAT_CCIDX  _AC(0xffffff, ULL)
+
+/* CSSELR Cache Size Selection Register */
+#define CSSELR_LEVEL_MASK  _AC(0x7, UL)
+#define CSSELR_LEVEL_SHIFT 1
+
+/* CLIDR Cache Level ID Register */
+#define CLIDR_CTYPEn_SHIFT(n) (3 * (n - 1))
+#define CLIDR_CTYPEn_MASK     _AC(0x7, UL)
+#define CLIDR_CTYPEn_LEVELS   7
+
 #define ICACHE_POLICY_VPIPT  0
 #define ICACHE_POLICY_AIVIVT 1
 #define ICACHE_POLICY_VIPT   2
diff --git a/xen/arch/arm/llc-coloring.c b/xen/arch/arm/llc-coloring.c
new file mode 100644
index 0000000000..eee1e80e2d
--- /dev/null
+++ b/xen/arch/arm/llc-coloring.c
@@ -0,0 +1,75 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+/*
+ * Last Level Cache (LLC) coloring support for ARM
+ *
+ * Copyright (C) 2022 Xilinx Inc.
+ */
+#include <xen/llc-coloring.h>
+#include <xen/types.h>
+
+#include <asm/processor.h>
+#include <asm/sysregs.h>
+
+/* Return the LLC way size by probing the hardware */
+unsigned int __init get_llc_way_size(void)
+{
+    register_t ccsidr_el1;
+    register_t clidr_el1 = READ_SYSREG(CLIDR_EL1);
+    register_t csselr_el1 = READ_SYSREG(CSSELR_EL1);
+    register_t id_aa64mmfr2_el1 = READ_SYSREG(ID_AA64MMFR2_EL1);
+    uint32_t ccsidr_numsets_shift = CCSIDR_NUMSETS_SHIFT;
+    uint32_t ccsidr_numsets_mask = CCSIDR_NUMSETS_MASK;
+    unsigned int n, line_size, num_sets;
+
+    for ( n = CLIDR_CTYPEn_LEVELS; n != 0; n-- )
+    {
+        uint8_t ctype_n = (clidr_el1 >> CLIDR_CTYPEn_SHIFT(n)) &
+                          CLIDR_CTYPEn_MASK;
+
+        /* At least separate I/D caches (see Arm ARM DDI 0487H.a D13.2.27) */
+        if ( ctype_n > 0b011 )
+            break;
+    }
+
+    if ( n == 0 )
+        return 0;
+
+    WRITE_SYSREG((n - 1) << CSSELR_LEVEL_SHIFT, CSSELR_EL1);
+
+    isb();
+
+    ccsidr_el1 = READ_SYSREG(CCSIDR_EL1);
+
+    /* Arm ARM: (Log2(Number of bytes in cache line)) - 4 */
+    line_size = 1U << ((ccsidr_el1 & CCSIDR_LINESIZE_MASK) + 4);
+
+    /* If FEAT_CCIDX is enabled, CCSIDR_EL1 has a different bit layout */
+    if ( (id_aa64mmfr2_el1 >> ID_AA64MMFR2_CCIDX_SHIFT) & 0x7 )
+    {
+        ccsidr_numsets_shift = CCSIDR_NUMSETS_SHIFT_FEAT_CCIDX;
+        ccsidr_numsets_mask = CCSIDR_NUMSETS_MASK_FEAT_CCIDX;
+    }
+    /* Arm ARM: (Number of sets in cache) - 1 */
+    num_sets = ((ccsidr_el1 >> ccsidr_numsets_shift) & ccsidr_numsets_mask) + 1;
+
+    printk(XENLOG_INFO "LLC found: L%u (line size: %u bytes, sets num: %u)\n",
+           n, line_size, num_sets);
+
+    /* Restore value in CSSELR_EL1 */
+    WRITE_SYSREG(csselr_el1, CSSELR_EL1);
+    isb();
+
+    return line_size * num_sets;
+}
+
+void __init arch_llc_coloring_init(void) {}
+
+/*
+ * Local variables:
+ * mode: C
+ * c-file-style: "BSD"
+ * c-basic-offset: 4
+ * tab-width: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff --git a/xen/arch/arm/setup.c b/xen/arch/arm/setup.c
index 59dd9bb25a..14cb023783 100644
--- a/xen/arch/arm/setup.c
+++ b/xen/arch/arm/setup.c
@@ -12,6 +12,7 @@
 #include <xen/device_tree.h>
 #include <xen/domain_page.h>
 #include <xen/grant_table.h>
+#include <xen/llc-coloring.h>
 #include <xen/types.h>
 #include <xen/string.h>
 #include <xen/serial.h>
@@ -746,6 +747,8 @@ void asmlinkage __init start_xen(unsigned long boot_phys_offset,
     printk("Command line: %s\n", cmdline);
     cmdline_parse(cmdline);
 
+    llc_coloring_init();
+
     setup_mm();
 
     /* Parse the ACPI tables for possible boot-time configuration */
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Mon Jan 29 17:19:30 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 29 Jan 2024 17:19:30 +0000
Received: from list by lists.xenproject.org with outflank-mailman.673062.1047222 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUVI2-0005zH-0K; Mon, 29 Jan 2024 17:19:22 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 673062.1047222; Mon, 29 Jan 2024 17:19:21 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUVI1-0005ys-QH; Mon, 29 Jan 2024 17:19:21 +0000
Received: by outflank-mailman (input) for mailman id 673062;
 Mon, 29 Jan 2024 17:19:20 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=Vh+I=JH=minervasys.tech=carlo.nonato@srs-se1.protection.inumbo.net>)
 id 1rUVI0-0005vb-Ok
 for xen-devel@lists.xenproject.org; Mon, 29 Jan 2024 17:19:20 +0000
Received: from mail-ed1-x534.google.com (mail-ed1-x534.google.com
 [2a00:1450:4864:20::534])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 8873b31f-beca-11ee-98f5-efadbce2ee36;
 Mon, 29 Jan 2024 18:19:17 +0100 (CET)
Received: by mail-ed1-x534.google.com with SMTP id
 4fb4d7f45d1cf-55a9008c185so5169476a12.1
 for <xen-devel@lists.xenproject.org>; Mon, 29 Jan 2024 09:19:17 -0800 (PST)
Received: from carlo-ubuntu.mo54.unimo.it (nonato.mo54.unimo.it.
 [155.185.85.8]) by smtp.gmail.com with ESMTPSA id
 eo15-20020a056402530f00b005598ec568dbsm3970494edb.59.2024.01.29.09.19.16
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 29 Jan 2024 09:19:16 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 8873b31f-beca-11ee-98f5-efadbce2ee36
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=minervasys-tech.20230601.gappssmtp.com; s=20230601; t=1706548757; x=1707153557; darn=lists.xenproject.org;
        h=content-transfer-encoding:mime-version:message-id:date:subject:cc
         :to:from:from:to:cc:subject:date:message-id:reply-to;
        bh=VXTDORbontv1SP7UM3nFDVIk1NxjAuDsyT6O7qMNlys=;
        b=zHCVR0eMFb9MbgDCEmwvOr4ZUc3tbvvDyi0PU8lrm5lCr7FndnCvYke118USEdEGF/
         u+9yKRIp+y124yqENaux2RMryFZkdzH56Vy6uxH8mH8JiE0kM6f5yoPDeiNtQ8X1a15m
         xdwxXBW9EX7NNrvUl2iuUSJF5vB4OD0J/fHeV3sCs87Gori9dw0Q+Kj8BG01NBarq8Wt
         GGMr81VSAnNj4S7L91AmgELsa9z6vMXFJs0O1xEfrShDhlpSaFMsGZaKJK5x4gO8ctnp
         Yyy8lpfRrwqfXmujm1MPVJsFm1ImMeGkng+BSukMmiQCNc3iSjW7YEm1kAgDMIng2DV4
         KSIA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706548757; x=1707153557;
        h=content-transfer-encoding:mime-version:message-id:date:subject:cc
         :to:from:x-gm-message-state:from:to:cc:subject:date:message-id
         :reply-to;
        bh=VXTDORbontv1SP7UM3nFDVIk1NxjAuDsyT6O7qMNlys=;
        b=FNSdyMjLOaPIkFXq+XA1lXEHNHttekqAxrBBxNnZI19nbHwlSiJcy94OG6ZZy8ppBy
         BjBHkyCQguQknqBDpRYg+Pb8aaY+tWpvu9r6Itb3hOLvvesG3ikJdTNNpnEip5DHQidW
         YJj1jy4k9/ifG5HjWCqEUzt7JvOdgpOXSIl8rTOJBbUm3BzB25W1eYNZtvNzJ3OjCI02
         Gc2eNJPehrkobl68lYOOEaI8jjDWsIOTLJsm2idKjEojE7WCRlgd0Vh4MU7A4zuy5NET
         S+j1P0EDIXzkHcXXEglEhNEyLWPFpX/O4R78p7S73DEqOZer/a1unDPNLL2/hryK0WGc
         NKPw==
X-Gm-Message-State: AOJu0YzakNqOglIMZDDKGVK1R+eANwCw/S20N+z5tEtO3WmseUbc3xNp
	RkDJ+uaharUI6F/kpXMV+B8ndjgocvgAmfBzDThbTwjeOi6f54oBnZ0Fj/zgGcsQ6IzGNlX2L7R
	Dg2s=
X-Google-Smtp-Source: AGHT+IGpB5pG4dAwNcyg1K43OgmLop42tNjcfXBnbJpIBnCGCGInJRfqkxV4Ieo7Nx6RgopZY0Gwfg==
X-Received: by 2002:a05:6402:14ce:b0:55f:3343:7c04 with SMTP id f14-20020a05640214ce00b0055f33437c04mr30413edx.1.1706548757156;
        Mon, 29 Jan 2024 09:19:17 -0800 (PST)
From: Carlo Nonato <carlo.nonato@minervasys.tech>
To: xen-devel@lists.xenproject.org
Cc: andrea.bastoni@minervasys.tech,
	Carlo Nonato <carlo.nonato@minervasys.tech>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	George Dunlap <george.dunlap@citrix.com>,
	Jan Beulich <jbeulich@suse.com>,
	Julien Grall <julien@xen.org>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Wei Liu <wl@xen.org>,
	Bertrand Marquis <bertrand.marquis@arm.com>,
	Michal Orzel <michal.orzel@amd.com>,
	Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
	Anthony PERARD <anthony.perard@citrix.com>,
	Juergen Gross <jgross@suse.com>
Subject: [PATCH v6 00/15] Arm cache coloring
Date: Mon, 29 Jan 2024 18:17:56 +0100
Message-Id: <20240129171811.21382-1-carlo.nonato@minervasys.tech>
X-Mailer: git-send-email 2.34.1
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Shared caches in multi-core CPU architectures represent a problem for
predictability of memory access latency. This jeopardizes applicability
of many Arm platform in real-time critical and mixed-criticality
scenarios. We introduce support for cache partitioning with page
coloring, a transparent software technique that enables isolation
between domains and Xen, and thus avoids cache interference.

When creating a domain, a simple syntax (e.g. `0-3` or `4-11`) allows
the user to define assignments of cache partitions ids, called colors,
where assigning different colors guarantees no mutual eviction on cache
will ever happen. This instructs the Xen memory allocator to provide
the i-th color assignee only with pages that maps to color i, i.e. that
are indexed in the i-th cache partition.

The proposed implementation supports the dom0less feature.
The proposed implementation doesn't support the static-mem feature.
The solution has been tested in several scenarios, including Xilinx Zynq
MPSoCs.

Open points:
- Michal found some problem here
https://patchew.org/Xen/20230123154735.74832-1-carlo.nonato@minervasys.tech/20230123154735.74832-4-carlo.nonato@minervasys.tech/#a7a06a26-ae79-402c-96a4-a1ebfe8b5862@amd.com
  but I havent fully understood it. In the meantime I want to advance with v6,
  so I hope we can continue the discussion here.
- Default configuration. After a few tries with a domain default configuration
  that included all colors not already in use by Xen, I went back with having
  all available colors indiscriminately. The problem is that if Xen has all the
  colors then domains can't be created with the default configuration.
  In general we don't want to impose any rule on the user so, the original
  default is preferred since it allows users to try coloring without too much
  headache, even if this means that they are using a suboptimal configuration
  that includes shared colors.
- I don't know how to split #14 in smaller patches. I hope also not to have
  misunderstood any comment there.

Carlo Nonato (14):
  xen/common: add cache coloring common code
  xen/arm: add initial support for LLC coloring on arm64
  xen/arm: permit non direct-mapped Dom0 construction
  xen/arm: add Dom0 cache coloring support
  xen: extend domctl interface for cache coloring
  tools: add support for cache coloring configuration
  xen/arm: add support for cache coloring configuration via device-tree
  xen/page_alloc: introduce init_free_page_fields() helper
  xen/page_alloc: introduce preserved page flags macro
  xen: add cache coloring allocator for domains
  xen/arm: use domain memory to allocate p2m page tables
  xen/arm: make consider_modules() available for xen relocation
  xen/arm: add cache coloring support for Xen
  support: add cache coloring arm64 experimental feature

Luca Miccio (1):
  xen/arm: add Xen cache colors command line parameter

 SUPPORT.md                              |   7 +
 docs/man/xl.cfg.5.pod.in                |  10 +
 docs/misc/arm/device-tree/booting.txt   |   4 +
 docs/misc/cache-coloring.rst            | 210 ++++++++++++++
 docs/misc/xen-command-line.pandoc       |  60 ++++
 tools/include/libxl.h                   |   5 +
 tools/include/xenctrl.h                 |   9 +
 tools/libs/ctrl/xc_domain.c             |  34 +++
 tools/libs/light/libxl_create.c         |   9 +
 tools/libs/light/libxl_types.idl        |   1 +
 tools/xl/xl_parse.c                     |  38 ++-
 xen/arch/Kconfig                        |  25 ++
 xen/arch/arm/Kconfig                    |   1 +
 xen/arch/arm/Makefile                   |   1 +
 xen/arch/arm/alternative.c              |  30 +-
 xen/arch/arm/arm32/mmu/mm.c             |  93 +------
 xen/arch/arm/arm64/mmu/head.S           |  57 +++-
 xen/arch/arm/arm64/mmu/mm.c             |  28 +-
 xen/arch/arm/dom0less-build.c           |  60 ++--
 xen/arch/arm/domain_build.c             |  60 +++-
 xen/arch/arm/include/asm/domain_build.h |   1 +
 xen/arch/arm/include/asm/mm.h           |   5 +
 xen/arch/arm/include/asm/mmu/layout.h   |   3 +
 xen/arch/arm/include/asm/processor.h    |  16 ++
 xen/arch/arm/include/asm/setup.h        |   3 +
 xen/arch/arm/llc-coloring.c             | 134 +++++++++
 xen/arch/arm/mmu/p2m.c                  |   4 +-
 xen/arch/arm/mmu/setup.c                |  97 ++++++-
 xen/arch/arm/setup.c                    | 100 ++++++-
 xen/common/Kconfig                      |   3 +
 xen/common/Makefile                     |   1 +
 xen/common/domain.c                     |   3 +
 xen/common/domctl.c                     |  11 +
 xen/common/keyhandler.c                 |   3 +
 xen/common/llc-coloring.c               | 350 ++++++++++++++++++++++++
 xen/common/page_alloc.c                 | 214 ++++++++++++++-
 xen/include/public/domctl.h             |   9 +
 xen/include/xen/llc-coloring.h          |  62 +++++
 xen/include/xen/sched.h                 |   5 +
 39 files changed, 1593 insertions(+), 173 deletions(-)
 create mode 100644 docs/misc/cache-coloring.rst
 create mode 100644 xen/arch/arm/llc-coloring.c
 create mode 100644 xen/common/llc-coloring.c
 create mode 100644 xen/include/xen/llc-coloring.h

-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Mon Jan 29 17:19:30 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 29 Jan 2024 17:19:30 +0000
Received: from list by lists.xenproject.org with outflank-mailman.673065.1047256 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUVI5-0006sQ-2X; Mon, 29 Jan 2024 17:19:25 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 673065.1047256; Mon, 29 Jan 2024 17:19:25 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUVI4-0006sI-Tx; Mon, 29 Jan 2024 17:19:24 +0000
Received: by outflank-mailman (input) for mailman id 673065;
 Mon, 29 Jan 2024 17:19:23 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=Vh+I=JH=minervasys.tech=carlo.nonato@srs-se1.protection.inumbo.net>)
 id 1rUVI3-0005vY-2s
 for xen-devel@lists.xenproject.org; Mon, 29 Jan 2024 17:19:23 +0000
Received: from mail-ed1-x533.google.com (mail-ed1-x533.google.com
 [2a00:1450:4864:20::533])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 8a7c0322-beca-11ee-8a43-1f161083a0e0;
 Mon, 29 Jan 2024 18:19:21 +0100 (CET)
Received: by mail-ed1-x533.google.com with SMTP id
 4fb4d7f45d1cf-55ad2a47b7aso2867033a12.3
 for <xen-devel@lists.xenproject.org>; Mon, 29 Jan 2024 09:19:21 -0800 (PST)
Received: from carlo-ubuntu.mo54.unimo.it (nonato.mo54.unimo.it.
 [155.185.85.8]) by smtp.gmail.com with ESMTPSA id
 eo15-20020a056402530f00b005598ec568dbsm3970494edb.59.2024.01.29.09.19.19
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 29 Jan 2024 09:19:19 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 8a7c0322-beca-11ee-8a43-1f161083a0e0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=minervasys-tech.20230601.gappssmtp.com; s=20230601; t=1706548760; x=1707153560; darn=lists.xenproject.org;
        h=content-transfer-encoding:mime-version:references:in-reply-to
         :message-id:date:subject:cc:to:from:from:to:cc:subject:date
         :message-id:reply-to;
        bh=iIa5rMBLPGQ7jfnyxO46jyMXIeNANfVTdO7DqWxwb4c=;
        b=0bBIkWqyMluE7NrkadFknPdyeo/VGnswpdj9g9pUTVsz4CNCqpK3zDsdYzY1sQd7Zu
         6tRXuIfl2p/P49daegDEtiRvgQ5OrIIucLxSbd3pqOXJu7hcYMd5KVAhM9tA6i5foJih
         tNWYSbkfRHyxpSF7k4Xaon9UlhRrUr1Hm9PoIju7HaD5EUgWpasrfAZaaBpw17w4kWVe
         T8yDhn8WR0z/xCI7IZbpnyaoqFBOVnF8lV3mQy4XlLRr0aPig3wJF3aqJCf2VD153UoZ
         v6sMknWjaM9w/7rMPFraAw7sNO7wDT7ZHObPjhgMa7Bl1W3wjLg3jJvs4gmako/SlJfk
         fxLA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706548760; x=1707153560;
        h=content-transfer-encoding:mime-version:references:in-reply-to
         :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to;
        bh=iIa5rMBLPGQ7jfnyxO46jyMXIeNANfVTdO7DqWxwb4c=;
        b=McVZpwsA/ECJJkbpKeQKPAK9qNNxC0X9Y8nKum8K4sea2gl4wr7thgHIC2G9t4xXRb
         3uJP+cyD2syNENnTxo1rLQ2RL5FZIzW7AvxVOnqhAHEBygwsHDV5YHbsx6CXg5Beiv3O
         dszMv0M8ZbcELe/5G3s8DYKw8va5kuUnvhaaL58tvlsx+OY9psMefcxvAUuj7phhGSQ1
         Hj4DqRm9hYX2R/bFqnjkGQQv1U2ZnnIVHq6Yp5l/OsWmL20T2FXwLXmaExOg5u17ae5R
         sgmCx/0Az42UcaTr3B1nmmySbOL+ns9UnkBr4/ESbFejrEafsmlmDihqriA9NOShFWCj
         v0rQ==
X-Gm-Message-State: AOJu0YwNDVJpxVmSBoOuBESCa2pFd6bYOdRadjJ9xPe3/bltCYOhfowz
	LOaqVsFLj7t5C8b0UjbpJRjiUp0mDFuP9ozQBghe3wX2DVRjiI8IMLOC/fu4MOeNAQWCbIeweDC
	PXf4=
X-Google-Smtp-Source: AGHT+IHLLjWbB9yMguzQrhksnw/TcTzEZ1IjvtsAG0LjISoDSw4ezhsFSU0FMy/J2KXuxCp8BBSGiQ==
X-Received: by 2002:aa7:cb53:0:b0:55f:19c4:600c with SMTP id w19-20020aa7cb53000000b0055f19c4600cmr1301080edt.37.1706548760210;
        Mon, 29 Jan 2024 09:19:20 -0800 (PST)
From: Carlo Nonato <carlo.nonato@minervasys.tech>
To: xen-devel@lists.xenproject.org
Cc: andrea.bastoni@minervasys.tech,
	Carlo Nonato <carlo.nonato@minervasys.tech>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	George Dunlap <george.dunlap@citrix.com>,
	Jan Beulich <jbeulich@suse.com>,
	Julien Grall <julien@xen.org>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Wei Liu <wl@xen.org>,
	Bertrand Marquis <bertrand.marquis@arm.com>,
	Michal Orzel <michal.orzel@amd.com>,
	Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
	Marco Solieri <marco.solieri@minervasys.tech>
Subject: [PATCH v6 04/15] xen/arm: add Dom0 cache coloring support
Date: Mon, 29 Jan 2024 18:18:00 +0100
Message-Id: <20240129171811.21382-5-carlo.nonato@minervasys.tech>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20240129171811.21382-1-carlo.nonato@minervasys.tech>
References: <20240129171811.21382-1-carlo.nonato@minervasys.tech>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Add a command line parameter to allow the user to set the coloring
configuration for Dom0.
A common configuration syntax for cache colors is introduced and
documented.
Take the opportunity to also add:
 - default configuration notion.
 - function to check well-formed configurations.

Direct mapping Dom0 isn't possible when coloring is enabled, so
CDF_directmap flag is removed when creating it.

Based on original work from: Luca Miccio <lucmiccio@gmail.com>

Signed-off-by: Carlo Nonato <carlo.nonato@minervasys.tech>
Signed-off-by: Marco Solieri <marco.solieri@minervasys.tech>
---
v6:
- moved domain_llc_coloring_free() in this patch
- removed domain_alloc_colors() in favor of a more explicit allocation
- parse_color_config() now accepts the size of the array to be filled
- allocate_memory() moved in another patch
v5:
- Carlo Nonato as the new author
- moved dom0 colors parsing (parse_colors()) in this patch
- added dom0_set_llc_colors() to set dom0 colors after creation
- moved color allocation and checking in this patch
- error handling when allocating color arrays
- FIXME: copy pasted allocate_memory() cause it got moved
v4:
- dom0 colors are dynamically allocated as for any other domain
  (colors are duplicated in dom0_colors and in the new array, but logic
  is simpler)
---
 docs/misc/cache-coloring.rst      |  29 ++++++
 docs/misc/xen-command-line.pandoc |   9 ++
 xen/arch/arm/domain_build.c       |  10 +-
 xen/common/domain.c               |   3 +
 xen/common/llc-coloring.c         | 153 ++++++++++++++++++++++++++++++
 xen/include/xen/llc-coloring.h    |   3 +
 6 files changed, 206 insertions(+), 1 deletion(-)

diff --git a/docs/misc/cache-coloring.rst b/docs/misc/cache-coloring.rst
index 0535b5c656..c347725525 100644
--- a/docs/misc/cache-coloring.rst
+++ b/docs/misc/cache-coloring.rst
@@ -85,6 +85,35 @@ More specific documentation is available at `docs/misc/xen-command-line.pandoc`.
 +----------------------+-------------------------------+
 | ``llc-way-size``     | set the LLC way size          |
 +----------------------+-------------------------------+
+| ``dom0-llc-colors``  | Dom0 color configuration      |
++----------------------+-------------------------------+
+
+Colors selection format
+***********************
+
+Regardless of the memory pool that has to be colored (Xen, Dom0/DomUs),
+the color selection can be expressed using the same syntax. In particular a
+comma-separated list of colors or ranges of colors is used.
+Ranges are hyphen-separated intervals (such as `0-4`) and are inclusive on both
+sides.
+
+Note that:
+
+- no spaces are allowed between values.
+- no overlapping ranges or duplicated colors are allowed.
+- values must be written in ascending order.
+
+Examples:
+
++-------------------+-----------------------------+
+| **Configuration** | **Actual selection**        |
++-------------------+-----------------------------+
+| 1-2,5-8           | [1, 2, 5, 6, 7, 8]          |
++-------------------+-----------------------------+
+| 4-8,10,11,12      | [4, 5, 6, 7, 8, 10, 11, 12] |
++-------------------+-----------------------------+
+| 0                 | [0]                         |
++-------------------+-----------------------------+
 
 Known issues and limitations
 ****************************
diff --git a/docs/misc/xen-command-line.pandoc b/docs/misc/xen-command-line.pandoc
index 11f9f209d1..25da997b5b 100644
--- a/docs/misc/xen-command-line.pandoc
+++ b/docs/misc/xen-command-line.pandoc
@@ -963,6 +963,15 @@ Controls for the dom0 IOMMU setup.
 
 Specify a list of IO ports to be excluded from dom0 access.
 
+### dom0-llc-colors
+> `= List of [ <integer> | <integer>-<integer> ]`
+
+> Default: `All available LLC colors`
+
+Specify dom0 LLC color configuration. This options is available only when
+`CONFIG_LLC_COLORING` is enabled. If the parameter is not set, all available
+colors are used.
+
 ### dom0_max_vcpus
 
 Either:
diff --git a/xen/arch/arm/domain_build.c b/xen/arch/arm/domain_build.c
index a9e5310aff..e380d25dca 100644
--- a/xen/arch/arm/domain_build.c
+++ b/xen/arch/arm/domain_build.c
@@ -2,6 +2,7 @@
 #include <xen/init.h>
 #include <xen/compile.h>
 #include <xen/lib.h>
+#include <xen/llc-coloring.h>
 #include <xen/mm.h>
 #include <xen/param.h>
 #include <xen/domain_page.h>
@@ -2161,6 +2162,7 @@ void __init create_dom0(void)
         .max_maptrack_frames = -1,
         .grant_opts = XEN_DOMCTL_GRANT_version(opt_gnttab_max_version),
     };
+    unsigned int flags = CDF_privileged;
     int rc;
 
     /* The vGIC for DOM0 is exactly emulating the hardware GIC */
@@ -2188,10 +2190,16 @@ void __init create_dom0(void)
             panic("SVE vector length error\n");
     }
 
-    dom0 = domain_create(0, &dom0_cfg, CDF_privileged | CDF_directmap);
+    if ( !llc_coloring_enabled )
+        flags |= CDF_directmap;
+
+    dom0 = domain_create(0, &dom0_cfg, flags);
     if ( IS_ERR(dom0) )
         panic("Error creating domain 0 (rc = %ld)\n", PTR_ERR(dom0));
 
+    if ( llc_coloring_enabled && (rc = dom0_set_llc_colors(dom0)) )
+        panic("Error initializing LLC coloring for domain 0 (rc = %d)", rc);
+
     if ( alloc_dom0_vcpu0(dom0) == NULL )
         panic("Error creating domain 0 vcpu0\n");
 
diff --git a/xen/common/domain.c b/xen/common/domain.c
index f6f5574996..f144b54f4f 100644
--- a/xen/common/domain.c
+++ b/xen/common/domain.c
@@ -33,6 +33,7 @@
 #include <xen/xenoprof.h>
 #include <xen/irq.h>
 #include <xen/argo.h>
+#include <xen/llc-coloring.h>
 #include <asm/p2m.h>
 #include <asm/processor.h>
 #include <public/sched.h>
@@ -1208,6 +1209,8 @@ void domain_destroy(struct domain *d)
 
     BUG_ON(!d->is_dying);
 
+    domain_llc_coloring_free(d);
+
     /* May be already destroyed, or get_domain() can race us. */
     if ( atomic_cmpxchg(&d->refcnt, 0, DOMAIN_DESTROYED) != 0 )
         return;
diff --git a/xen/common/llc-coloring.c b/xen/common/llc-coloring.c
index 10729e70c1..983de44a47 100644
--- a/xen/common/llc-coloring.c
+++ b/xen/common/llc-coloring.c
@@ -17,6 +17,63 @@ size_param("llc-way-size", llc_way_size);
 /* Number of colors available in the LLC */
 static unsigned int __ro_after_init max_nr_colors = CONFIG_NR_LLC_COLORS;
 
+static unsigned int __initdata dom0_colors[CONFIG_NR_LLC_COLORS];
+static unsigned int __initdata dom0_num_colors;
+
+/*
+ * Parse the coloring configuration given in the buf string, following the
+ * syntax below.
+ *
+ * COLOR_CONFIGURATION ::= COLOR | RANGE,...,COLOR | RANGE
+ * RANGE               ::= COLOR-COLOR
+ *
+ * Example: "0,2-6,15-16" represents the set of colors: 0,2,3,4,5,6,15,16.
+ */
+static int parse_color_config(const char *buf, unsigned int *colors,
+                              unsigned int num_colors, unsigned int *num_parsed)
+{
+    const char *s = buf;
+
+    if ( !colors || !num_colors )
+        return -EINVAL;
+
+    *num_parsed = 0;
+
+    while ( *s != '\0' )
+    {
+        if ( *s != ',' )
+        {
+            unsigned int color, start, end;
+
+            start = simple_strtoul(s, &s, 0);
+
+            if ( *s == '-' )    /* Range */
+            {
+                s++;
+                end = simple_strtoul(s, &s, 0);
+            }
+            else                /* Single value */
+                end = start;
+
+            if ( start > end || (end - start) > (UINT_MAX - *num_parsed) ||
+                 (*num_parsed + (end - start)) >= num_colors )
+                return -EINVAL;
+            for ( color = start; color <= end; color++ )
+                colors[(*num_parsed)++] = color;
+        }
+        else
+            s++;
+    }
+
+    return *s ? -EINVAL : 0;
+}
+
+static int __init parse_dom0_colors(const char *s)
+{
+    return parse_color_config(s, dom0_colors, max_nr_colors, &dom0_num_colors);
+}
+custom_param("dom0-llc-colors", parse_dom0_colors);
+
 static void print_colors(const unsigned int *colors, unsigned int num_colors)
 {
     unsigned int i;
@@ -47,6 +104,29 @@ static void dump_coloring_info(unsigned char key)
     printk("Number of LLC colors supported: %u\n", max_nr_colors);
 }
 
+static bool check_colors(const unsigned int *colors, unsigned int num_colors)
+{
+    unsigned int i;
+
+    if ( num_colors > max_nr_colors )
+    {
+        printk(XENLOG_ERR "Number of LLC colors requested > %u\n",
+               max_nr_colors);
+        return false;
+    }
+
+    for ( i = 0; i < num_colors; i++ )
+    {
+        if ( colors[i] >= max_nr_colors )
+        {
+            printk(XENLOG_ERR "LLC color %u >= %u\n", colors[i], max_nr_colors);
+            return false;
+        }
+    }
+
+    return true;
+}
+
 void __init llc_coloring_init(void)
 {
     if ( !llc_way_size && !(llc_way_size = get_llc_way_size()) )
@@ -70,12 +150,85 @@ void __init llc_coloring_init(void)
     arch_llc_coloring_init();
 }
 
+void domain_llc_coloring_free(struct domain *d)
+{
+    xfree(__va(__pa(d->llc_colors)));
+}
+
 void domain_dump_llc_colors(const struct domain *d)
 {
     printk("Domain %pd has %u LLC colors: ", d, d->num_llc_colors);
     print_colors(d->llc_colors, d->num_llc_colors);
 }
 
+static unsigned int *alloc_colors(unsigned int num_colors)
+{
+    unsigned int *colors;
+
+    if ( num_colors > max_nr_colors )
+        return NULL;
+
+    colors = xmalloc_array(unsigned int, num_colors);
+    if ( !colors )
+        return NULL;
+
+    return colors;
+}
+
+static int domain_check_colors(const struct domain *d)
+{
+    if ( !d->num_llc_colors )
+    {
+        printk(XENLOG_ERR "No LLC color config found for %pd\n", d);
+        return -ENODATA;
+    }
+    else if ( !check_colors(d->llc_colors, d->num_llc_colors) )
+    {
+        printk(XENLOG_ERR "Bad LLC color config for %pd\n", d);
+        return -EINVAL;
+    }
+
+    return 0;
+}
+
+static int domain_set_default_colors(struct domain *d)
+{
+    unsigned int *colors = alloc_colors(max_nr_colors);
+    unsigned int i;
+
+    if ( !colors )
+        return -ENOMEM;
+
+    printk(XENLOG_WARNING
+           "LLC color config not found for %pd, using default\n", d);
+
+    for ( i = 0; i < max_nr_colors; i++ )
+        colors[i] = i;
+
+    d->llc_colors = colors;
+    d->num_llc_colors = max_nr_colors;
+
+    return 0;
+}
+
+int __init dom0_set_llc_colors(struct domain *d)
+{
+    unsigned int *colors;
+
+    if ( !dom0_num_colors )
+        return domain_set_default_colors(d);
+
+    colors = alloc_colors(dom0_num_colors);
+    if ( !colors )
+        return -ENOMEM;
+
+    memcpy(colors, dom0_colors, sizeof(unsigned int) * dom0_num_colors);
+    d->llc_colors = colors;
+    d->num_llc_colors = dom0_num_colors;
+
+    return domain_check_colors(d);
+}
+
 /*
  * Local variables:
  * mode: C
diff --git a/xen/include/xen/llc-coloring.h b/xen/include/xen/llc-coloring.h
index 5e12eb426f..1a73080c98 100644
--- a/xen/include/xen/llc-coloring.h
+++ b/xen/include/xen/llc-coloring.h
@@ -14,16 +14,19 @@
 extern bool llc_coloring_enabled;
 
 void llc_coloring_init(void);
+void domain_llc_coloring_free(struct domain *d);
 void domain_dump_llc_colors(const struct domain *d);
 #else
 #define llc_coloring_enabled false
 
 static inline void llc_coloring_init(void) {}
+static inline void domain_llc_coloring_free(struct domain *d) {}
 static inline void domain_dump_llc_colors(const struct domain *d) {}
 #endif
 
 unsigned int get_llc_way_size(void);
 void arch_llc_coloring_init(void);
+int dom0_set_llc_colors(struct domain *d);
 
 #endif /* __COLORING_H__ */
 
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Mon Jan 29 17:19:30 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 29 Jan 2024 17:19:30 +0000
Received: from list by lists.xenproject.org with outflank-mailman.673064.1047246 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUVI3-0006cs-Km; Mon, 29 Jan 2024 17:19:23 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 673064.1047246; Mon, 29 Jan 2024 17:19:23 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUVI3-0006cl-GZ; Mon, 29 Jan 2024 17:19:23 +0000
Received: by outflank-mailman (input) for mailman id 673064;
 Mon, 29 Jan 2024 17:19:22 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=Vh+I=JH=minervasys.tech=carlo.nonato@srs-se1.protection.inumbo.net>)
 id 1rUVI2-0005vY-2o
 for xen-devel@lists.xenproject.org; Mon, 29 Jan 2024 17:19:22 +0000
Received: from mail-ed1-x530.google.com (mail-ed1-x530.google.com
 [2a00:1450:4864:20::530])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 89dc4d19-beca-11ee-8a43-1f161083a0e0;
 Mon, 29 Jan 2024 18:19:20 +0100 (CET)
Received: by mail-ed1-x530.google.com with SMTP id
 4fb4d7f45d1cf-558f523c072so3313737a12.2
 for <xen-devel@lists.xenproject.org>; Mon, 29 Jan 2024 09:19:20 -0800 (PST)
Received: from carlo-ubuntu.mo54.unimo.it (nonato.mo54.unimo.it.
 [155.185.85.8]) by smtp.gmail.com with ESMTPSA id
 eo15-20020a056402530f00b005598ec568dbsm3970494edb.59.2024.01.29.09.19.18
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 29 Jan 2024 09:19:19 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 89dc4d19-beca-11ee-8a43-1f161083a0e0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=minervasys-tech.20230601.gappssmtp.com; s=20230601; t=1706548759; x=1707153559; darn=lists.xenproject.org;
        h=content-transfer-encoding:mime-version:references:in-reply-to
         :message-id:date:subject:cc:to:from:from:to:cc:subject:date
         :message-id:reply-to;
        bh=A7L8IWQ2YLMp5Yv8zv1GVRcHauldwszXKWY+GEdg7KM=;
        b=PCxKwyjTV68nj3qghZOdmF5l/6qONRcfNgGWOD8Kmpcpc7RsVMmAk9+CuIUYOjkWId
         ybaxL3MEP+Ku+BT2exaPAfIH3Me2TGvLT9ErmCbn2OUx2YprEjOFLEdp2yGb4W91AdoU
         QiOlPJ1X8dS3BppuTexoOlhLsySw5FZcjYs1R6Z/KqMy1PKl3K3S8KT2fDrF9VE/twll
         mqzCIQPlq76upMAfc+gsCYQWCRAqssMjff8sxOKAN6YPqrYc7Lxc9reNOAtDCWty0eTf
         HjQsp7+BnoN5HxBzkseih4Iidqdf/MiApKzRz9XhXylt4cKwGJx03BIZpQUNHO+EJON4
         SVSw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706548759; x=1707153559;
        h=content-transfer-encoding:mime-version:references:in-reply-to
         :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to;
        bh=A7L8IWQ2YLMp5Yv8zv1GVRcHauldwszXKWY+GEdg7KM=;
        b=IloEje06Pqv1PdLd4NPGmdI1HmToePoX6j3uha6APLJ1fw/lL1TOjc4/dBG483F0cu
         QsSM3YVd8OFDSVP0qwQyazWNGCGRnKRuw8TWGbDDhvn3tBB9ckH2/3PLhafnZa9jHws0
         0++53Ppa1u6+yqXs/pNjuP9V2aOKW0Pdm+F9x7i86Kz80AlP6kPidyopQ77+dQDVGEuN
         hpPOxQ/F7rRgwNtLzEjrFwxbhEwE0vyCsIC504AiQgrgGHL22UkPglAtGOD3jqWzkvHT
         Oz2Zp9l5Nx87iwX6STPy4mQfVp7yIlwzyXqn/ZzEZ0IK2BI78NERglabYy7dkxACyHiO
         hf8A==
X-Gm-Message-State: AOJu0YwkSWQMrQ+mIkll16pUQTAVEMCpczBgZpZFjluiZLaJJY4Mm6j0
	Y3RjkTok9fUNQC6nb8wQF61Bg4CNfzh/JYEDuTpirFayZ4CX9ZAP7GrZYskY5pmdi23U8oNUp0n
	jGVQ=
X-Google-Smtp-Source: AGHT+IHc6SGBI13PCY9sFTXFAMu8+NtauaSDaSehtuJBHrYcFAt8bSCual35VaQSkMR/T1CIofLTcw==
X-Received: by 2002:a05:6402:40d4:b0:55d:3b94:a1c6 with SMTP id z20-20020a05640240d400b0055d3b94a1c6mr4683564edb.0.1706548759204;
        Mon, 29 Jan 2024 09:19:19 -0800 (PST)
From: Carlo Nonato <carlo.nonato@minervasys.tech>
To: xen-devel@lists.xenproject.org
Cc: andrea.bastoni@minervasys.tech,
	Carlo Nonato <carlo.nonato@minervasys.tech>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Julien Grall <julien@xen.org>,
	Bertrand Marquis <bertrand.marquis@arm.com>,
	Michal Orzel <michal.orzel@amd.com>,
	Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>
Subject: [PATCH v6 03/15] xen/arm: permit non direct-mapped Dom0 construction
Date: Mon, 29 Jan 2024 18:17:59 +0100
Message-Id: <20240129171811.21382-4-carlo.nonato@minervasys.tech>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20240129171811.21382-1-carlo.nonato@minervasys.tech>
References: <20240129171811.21382-1-carlo.nonato@minervasys.tech>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Cache coloring requires Dom0 not to be direct-mapped because of its non
contiguous mapping nature, so allocate_memory() is needed in this case.
8d2c3ab18cc1 ("arm/dom0less: put dom0less feature code in a separate module")
moved allocate_memory() in dom0less_build.c. In order to use it
in Dom0 construction bring it back to domain_build.c and declare it in
domain_build.h.

Signed-off-by: Carlo Nonato <carlo.nonato@minervasys.tech>
---
v6:
- new patch
---
 xen/arch/arm/dom0less-build.c           | 43 ---------------------
 xen/arch/arm/domain_build.c             | 50 +++++++++++++++++++++++--
 xen/arch/arm/include/asm/domain_build.h |  1 +
 3 files changed, 48 insertions(+), 46 deletions(-)

diff --git a/xen/arch/arm/dom0less-build.c b/xen/arch/arm/dom0less-build.c
index 1142f7f74a..992080e61a 100644
--- a/xen/arch/arm/dom0less-build.c
+++ b/xen/arch/arm/dom0less-build.c
@@ -49,49 +49,6 @@ bool __init is_dom0less_mode(void)
     return ( !dom0found && domUfound );
 }
 
-static void __init allocate_memory(struct domain *d, struct kernel_info *kinfo)
-{
-    unsigned int i;
-    paddr_t bank_size;
-
-    printk(XENLOG_INFO "Allocating mappings totalling %ldMB for %pd:\n",
-           /* Don't want format this as PRIpaddr (16 digit hex) */
-           (unsigned long)(kinfo->unassigned_mem >> 20), d);
-
-    kinfo->mem.nr_banks = 0;
-    bank_size = MIN(GUEST_RAM0_SIZE, kinfo->unassigned_mem);
-    if ( !allocate_bank_memory(d, kinfo, gaddr_to_gfn(GUEST_RAM0_BASE),
-                               bank_size) )
-        goto fail;
-
-    bank_size = MIN(GUEST_RAM1_SIZE, kinfo->unassigned_mem);
-    if ( !allocate_bank_memory(d, kinfo, gaddr_to_gfn(GUEST_RAM1_BASE),
-                               bank_size) )
-        goto fail;
-
-    if ( kinfo->unassigned_mem )
-        goto fail;
-
-    for( i = 0; i < kinfo->mem.nr_banks; i++ )
-    {
-        printk(XENLOG_INFO "%pd BANK[%d] %#"PRIpaddr"-%#"PRIpaddr" (%ldMB)\n",
-               d,
-               i,
-               kinfo->mem.bank[i].start,
-               kinfo->mem.bank[i].start + kinfo->mem.bank[i].size,
-               /* Don't want format this as PRIpaddr (16 digit hex) */
-               (unsigned long)(kinfo->mem.bank[i].size >> 20));
-    }
-
-    return;
-
-fail:
-    panic("Failed to allocate requested domain memory."
-          /* Don't want format this as PRIpaddr (16 digit hex) */
-          " %ldKB unallocated. Fix the VMs configurations.\n",
-          (unsigned long)kinfo->unassigned_mem >> 10);
-}
-
 #ifdef CONFIG_VGICV2
 static int __init make_gicv2_domU_node(struct kernel_info *kinfo)
 {
diff --git a/xen/arch/arm/domain_build.c b/xen/arch/arm/domain_build.c
index 46161848dc..a9e5310aff 100644
--- a/xen/arch/arm/domain_build.c
+++ b/xen/arch/arm/domain_build.c
@@ -415,7 +415,6 @@ static void __init allocate_memory_11(struct domain *d,
     }
 }
 
-#ifdef CONFIG_DOM0LESS_BOOT
 bool __init allocate_bank_memory(struct domain *d, struct kernel_info *kinfo,
                                  gfn_t sgfn, paddr_t tot_size)
 {
@@ -477,7 +476,49 @@ bool __init allocate_bank_memory(struct domain *d, struct kernel_info *kinfo,
 
     return true;
 }
-#endif
+
+void __init allocate_memory(struct domain *d, struct kernel_info *kinfo)
+{
+    unsigned int i;
+    paddr_t bank_size;
+
+    printk(XENLOG_INFO "Allocating mappings totalling %ldMB for %pd:\n",
+           /* Don't want format this as PRIpaddr (16 digit hex) */
+           (unsigned long)(kinfo->unassigned_mem >> 20), d);
+
+    kinfo->mem.nr_banks = 0;
+    bank_size = MIN(GUEST_RAM0_SIZE, kinfo->unassigned_mem);
+    if ( !allocate_bank_memory(d, kinfo, gaddr_to_gfn(GUEST_RAM0_BASE),
+                               bank_size) )
+        goto fail;
+
+    bank_size = MIN(GUEST_RAM1_SIZE, kinfo->unassigned_mem);
+    if ( !allocate_bank_memory(d, kinfo, gaddr_to_gfn(GUEST_RAM1_BASE),
+                               bank_size) )
+        goto fail;
+
+    if ( kinfo->unassigned_mem )
+        goto fail;
+
+    for( i = 0; i < kinfo->mem.nr_banks; i++ )
+    {
+        printk(XENLOG_INFO "%pd BANK[%d] %#"PRIpaddr"-%#"PRIpaddr" (%ldMB)\n",
+               d,
+               i,
+               kinfo->mem.bank[i].start,
+               kinfo->mem.bank[i].start + kinfo->mem.bank[i].size,
+               /* Don't want format this as PRIpaddr (16 digit hex) */
+               (unsigned long)(kinfo->mem.bank[i].size >> 20));
+    }
+
+    return;
+
+fail:
+    panic("Failed to allocate requested domain memory."
+          /* Don't want format this as PRIpaddr (16 digit hex) */
+          " %ldKB unallocated. Fix the VMs configurations.\n",
+          (unsigned long)kinfo->unassigned_mem >> 10);
+}
 
 /*
  * When PCI passthrough is available we want to keep the
@@ -2073,7 +2114,10 @@ static int __init construct_dom0(struct domain *d)
     /* type must be set before allocate_memory */
     d->arch.type = kinfo.type;
 #endif
-    allocate_memory_11(d, &kinfo);
+    if ( is_domain_direct_mapped(d) )
+        allocate_memory_11(d, &kinfo);
+    else
+        allocate_memory(d, &kinfo);
     find_gnttab_region(d, &kinfo);
 
     rc = process_shm_chosen(d, &kinfo);
diff --git a/xen/arch/arm/include/asm/domain_build.h b/xen/arch/arm/include/asm/domain_build.h
index da9e6025f3..b8e171e5cc 100644
--- a/xen/arch/arm/include/asm/domain_build.h
+++ b/xen/arch/arm/include/asm/domain_build.h
@@ -8,6 +8,7 @@ typedef __be32 gic_interrupt_t[3];
 
 bool allocate_bank_memory(struct domain *d, struct kernel_info *kinfo,
                           gfn_t sgfn, paddr_t tot_size);
+void allocate_memory(struct domain *d, struct kernel_info *kinfo);
 int construct_domain(struct domain *d, struct kernel_info *kinfo);
 int domain_fdt_begin_node(void *fdt, const char *name, uint64_t unit);
 int make_chosen_node(const struct kernel_info *kinfo);
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Mon Jan 29 17:19:30 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 29 Jan 2024 17:19:30 +0000
Received: from list by lists.xenproject.org with outflank-mailman.673068.1047286 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUVI8-0007em-A3; Mon, 29 Jan 2024 17:19:28 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 673068.1047286; Mon, 29 Jan 2024 17:19:28 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUVI8-0007ed-5B; Mon, 29 Jan 2024 17:19:28 +0000
Received: by outflank-mailman (input) for mailman id 673068;
 Mon, 29 Jan 2024 17:19:26 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=Vh+I=JH=minervasys.tech=carlo.nonato@srs-se1.protection.inumbo.net>)
 id 1rUVI6-0005vb-6X
 for xen-devel@lists.xenproject.org; Mon, 29 Jan 2024 17:19:26 +0000
Received: from mail-ed1-x532.google.com (mail-ed1-x532.google.com
 [2a00:1450:4864:20::532])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 8c250c6d-beca-11ee-98f5-efadbce2ee36;
 Mon, 29 Jan 2024 18:19:24 +0100 (CET)
Received: by mail-ed1-x532.google.com with SMTP id
 4fb4d7f45d1cf-55eee4a042eso1826854a12.0
 for <xen-devel@lists.xenproject.org>; Mon, 29 Jan 2024 09:19:24 -0800 (PST)
Received: from carlo-ubuntu.mo54.unimo.it (nonato.mo54.unimo.it.
 [155.185.85.8]) by smtp.gmail.com with ESMTPSA id
 eo15-20020a056402530f00b005598ec568dbsm3970494edb.59.2024.01.29.09.19.22
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 29 Jan 2024 09:19:22 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 8c250c6d-beca-11ee-98f5-efadbce2ee36
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=minervasys-tech.20230601.gappssmtp.com; s=20230601; t=1706548763; x=1707153563; darn=lists.xenproject.org;
        h=content-transfer-encoding:mime-version:references:in-reply-to
         :message-id:date:subject:cc:to:from:from:to:cc:subject:date
         :message-id:reply-to;
        bh=kd9miIuow0BSRA/mBkMSExaPwqKXz3kDkiwlSiWY+B4=;
        b=YILSwGn9Sntoo7c2TagcwF/e8aZis6MwIaMDKjbOmgjpERiav2OBF7FoK+TuXvpOv3
         tTzPQJi7IoYi7AObCo2c5mr9BuGIfI5w3GHj/odO4nsT5EqoGRMyViHyhp1sB4VaLoUU
         zXxx5SUyKv3B0aymc3opCT74rVFpdvvcI+fXo6W6NuIKQKcskkl/cPhc429PLr2+ceHE
         lmf6rLYJgDlBsfKwbvEJpi8ITcnc3Eznwb4TN4OcMN3NQXm1wZ+GsW/GCC942RLO/cTI
         MxfRJmG6cQpgSOPnA7L3xpqy43YZyrFTkgNUa/2ebONliobmLsmuwfEmaSFdM51Wwfzk
         lCBA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706548763; x=1707153563;
        h=content-transfer-encoding:mime-version:references:in-reply-to
         :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to;
        bh=kd9miIuow0BSRA/mBkMSExaPwqKXz3kDkiwlSiWY+B4=;
        b=ndKVgIyUN5O+vydHXkJh0yB1FOmcVgZX6U1B/TzYRWouXIsnKSTNKWGMPQXK5g4iXL
         3dWJZWW6Xd1khnqUNo9rRrIWk2+5AjnEBzkWVywSAD3JNgHjImfANBp03NlYX4wdnpgw
         sOXIVV4dFYLfHnSMRVU64SarP7NLhkYgyaa8tB7htuqY/LZf1fisWcz7mK2Ey19miCtN
         c11EQRxew/2RDffElg/GfxavQZmX0hiawZPc55HYo4GPNJNtmRu2HVYlaV6zTjoBEYZ9
         8dWEkzlVXFOYdanlPONPLmVp9uyVIhmDbRVi81sVm9erdFPyLUU/Kvob9Sa+PYMRpZyu
         LDaw==
X-Gm-Message-State: AOJu0YyU0k6ea2tH7VpjCrbULgerEbmzKZP44bEPv/0lKDly8QoA4Xx3
	DbmRS8tAk9b//6DIbELtKVSDMEYM7cCRpWC7MNk1rNoWjyE6SVD24zFRXCjmN2pBetSUv5aysRL
	Bnvo=
X-Google-Smtp-Source: AGHT+IHA3GyKmzTknu0xDrqSyZtKBYr/88PUTlzm4Vz+aC0G/wQTLAnjXEd2qFQNtW5kr5XXujwQJA==
X-Received: by 2002:a05:6402:3509:b0:55e:c6e3:5e24 with SMTP id b9-20020a056402350900b0055ec6e35e24mr3633682edd.36.1706548763268;
        Mon, 29 Jan 2024 09:19:23 -0800 (PST)
From: Carlo Nonato <carlo.nonato@minervasys.tech>
To: xen-devel@lists.xenproject.org
Cc: andrea.bastoni@minervasys.tech,
	Carlo Nonato <carlo.nonato@minervasys.tech>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Julien Grall <julien@xen.org>,
	Bertrand Marquis <bertrand.marquis@arm.com>,
	Michal Orzel <michal.orzel@amd.com>,
	Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	George Dunlap <george.dunlap@citrix.com>,
	Jan Beulich <jbeulich@suse.com>,
	Wei Liu <wl@xen.org>,
	Marco Solieri <marco.solieri@minervasys.tech>
Subject: [PATCH v6 07/15] xen/arm: add support for cache coloring configuration via device-tree
Date: Mon, 29 Jan 2024 18:18:03 +0100
Message-Id: <20240129171811.21382-8-carlo.nonato@minervasys.tech>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20240129171811.21382-1-carlo.nonato@minervasys.tech>
References: <20240129171811.21382-1-carlo.nonato@minervasys.tech>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Add the "llc-colors" Device Tree attribute to express DomUs and Dom0less
color configurations.

Based on original work from: Luca Miccio <lucmiccio@gmail.com>

Signed-off-by: Carlo Nonato <carlo.nonato@minervasys.tech>
Signed-off-by: Marco Solieri <marco.solieri@minervasys.tech>
---
v6:
- rewrote domain_set_llc_colors_from_str() to be more explicit
v5:
- static-mem check has been moved in a previous patch
- added domain_set_llc_colors_from_str() to set colors after domain creation
---
 docs/misc/arm/device-tree/booting.txt |  4 +++
 docs/misc/cache-coloring.rst          | 48 ++++++++++++++++++++++++++-
 xen/arch/arm/dom0less-build.c         | 11 ++++++
 xen/common/llc-coloring.c             | 23 +++++++++++++
 xen/include/xen/llc-coloring.h        |  2 +-
 5 files changed, 86 insertions(+), 2 deletions(-)

diff --git a/docs/misc/arm/device-tree/booting.txt b/docs/misc/arm/device-tree/booting.txt
index bbd955e9c2..bbe49faadc 100644
--- a/docs/misc/arm/device-tree/booting.txt
+++ b/docs/misc/arm/device-tree/booting.txt
@@ -162,6 +162,10 @@ with the following properties:
 
     An integer specifying the number of vcpus to allocate to the guest.
 
+- llc-colors
+    A string specifying the LLC color configuration for the guest.
+    Refer to docs/misc/cache_coloring.rst for syntax.
+
 - vpl011
 
     An empty property to enable/disable a virtual pl011 for the guest to
diff --git a/docs/misc/cache-coloring.rst b/docs/misc/cache-coloring.rst
index c347725525..bf055d7e7f 100644
--- a/docs/misc/cache-coloring.rst
+++ b/docs/misc/cache-coloring.rst
@@ -10,7 +10,7 @@ If needed, change the maximum number of colors with
 ``CONFIG_NR_LLC_COLORS=<n>``.
 
 Compile Xen and the toolstack and then configure it via
-`Command line parameters`_.
+`Command line parameters`_. For DomUs follow `DomUs configuration`_.
 
 Background
 **********
@@ -115,6 +115,52 @@ Examples:
 | 0                 | [0]                         |
 +-------------------+-----------------------------+
 
+DomUs configuration
+*******************
+
+DomUs colors can be set via Device Tree, also for Dom0less configurations
+(documentation at `docs/misc/arm/device-tree/booting.txt`) using the
+``llc-colors`` option. For example:
+
+::
+
+    xen,xen-bootargs = "console=dtuart dtuart=serial0 dom0_mem=1G dom0_max_vcpus=1 sched=null llc-coloring=on llc-way-size=64K dom0-llc-colors=2-6";
+    xen,dom0-bootargs "console=hvc0 earlycon=xen earlyprintk=xen root=/dev/ram0"
+
+    dom0 {
+        compatible = "xen,linux-zimage" "xen,multiboot-module";
+        reg = <0x0 0x1000000 0x0 15858176>;
+    };
+
+    dom0-ramdisk {
+        compatible = "xen,linux-initrd" "xen,multiboot-module";
+        reg = <0x0 0x2000000 0x0 20638062>;
+    };
+
+    domU0 {
+        #address-cells = <0x1>;
+        #size-cells = <0x1>;
+        compatible = "xen,domain";
+        memory = <0x0 0x40000>;
+        llc-colors = "4-8,10,11,12";
+        cpus = <0x1>;
+        vpl011 = <0x1>;
+
+        module@2000000 {
+            compatible = "multiboot,kernel", "multiboot,module";
+            reg = <0x2000000 0xffffff>;
+            bootargs = "console=ttyAMA0";
+        };
+
+        module@30000000 {
+            compatible = "multiboot,ramdisk", "multiboot,module";
+            reg = <0x3000000 0xffffff>;
+        };
+    };
+
+**Note:** If no color configuration is provided for a domain, the default one,
+which corresponds to all available colors is used instead.
+
 Known issues and limitations
 ****************************
 
diff --git a/xen/arch/arm/dom0less-build.c b/xen/arch/arm/dom0less-build.c
index 992080e61a..efc1bbbc3e 100644
--- a/xen/arch/arm/dom0less-build.c
+++ b/xen/arch/arm/dom0less-build.c
@@ -807,6 +807,7 @@ void __init create_domUs(void)
     struct dt_device_node *node;
     const struct dt_device_node *cpupool_node,
                                 *chosen = dt_find_node_by_path("/chosen");
+    const char *llc_colors_str = NULL;
 
     BUG_ON(chosen == NULL);
     dt_for_each_child_node(chosen, node)
@@ -950,6 +951,11 @@ void __init create_domUs(void)
 #endif
         }
 
+        dt_property_read_string(node, "llc-colors", &llc_colors_str);
+        if ( !llc_coloring_enabled && llc_colors_str)
+            printk(XENLOG_WARNING
+                   "'llc-colors' found, but LLC coloring is disabled\n");
+
         /*
          * The variable max_init_domid is initialized with zero, so here it's
          * very important to use the pre-increment operator to call
@@ -960,6 +966,11 @@ void __init create_domUs(void)
             panic("Error creating domain %s (rc = %ld)\n",
                   dt_node_name(node), PTR_ERR(d));
 
+        if ( llc_coloring_enabled &&
+             (rc = domain_set_llc_colors_from_str(d, llc_colors_str)) )
+            panic("Error initializing LLC coloring for domain %s (rc = %d)\n",
+                  dt_node_name(node), rc);
+
         d->is_console = true;
         dt_device_set_used_by(node, d->domain_id);
 
diff --git a/xen/common/llc-coloring.c b/xen/common/llc-coloring.c
index aaf0606c00..a932a61e0c 100644
--- a/xen/common/llc-coloring.c
+++ b/xen/common/llc-coloring.c
@@ -254,6 +254,29 @@ int domain_set_llc_colors_domctl(struct domain *d,
     return domain_check_colors(d);
 }
 
+int domain_set_llc_colors_from_str(struct domain *d, const char *str)
+{
+    int err;
+    unsigned int *colors;
+
+    if ( !str )
+        return domain_set_default_colors(d);
+
+    colors = alloc_colors(max_nr_colors);
+    if ( !colors )
+        return -ENOMEM;
+
+    err = parse_color_config(str, colors, max_nr_colors, &d->num_llc_colors);
+    if ( err )
+    {
+        printk(XENLOG_ERR "Error parsing LLC color configuration.");
+        return err;
+    }
+    d->llc_colors = colors;
+
+    return domain_check_colors(d);
+}
+
 /*
  * Local variables:
  * mode: C
diff --git a/xen/include/xen/llc-coloring.h b/xen/include/xen/llc-coloring.h
index a82081367f..63785c8319 100644
--- a/xen/include/xen/llc-coloring.h
+++ b/xen/include/xen/llc-coloring.h
@@ -27,7 +27,7 @@ static inline void domain_dump_llc_colors(const struct domain *d) {}
 unsigned int get_llc_way_size(void);
 void arch_llc_coloring_init(void);
 int dom0_set_llc_colors(struct domain *d);
-
+int domain_set_llc_colors_from_str(struct domain *d, const char *str);
 int domain_set_llc_colors_domctl(struct domain *d,
                                  const struct xen_domctl_set_llc_colors *config);
 
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Mon Jan 29 17:19:30 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 29 Jan 2024 17:19:30 +0000
Received: from list by lists.xenproject.org with outflank-mailman.673066.1047261 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUVI5-0006wB-Fl; Mon, 29 Jan 2024 17:19:25 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 673066.1047261; Mon, 29 Jan 2024 17:19:25 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUVI5-0006vQ-8r; Mon, 29 Jan 2024 17:19:25 +0000
Received: by outflank-mailman (input) for mailman id 673066;
 Mon, 29 Jan 2024 17:19:24 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=Vh+I=JH=minervasys.tech=carlo.nonato@srs-se1.protection.inumbo.net>)
 id 1rUVI4-0005vY-30
 for xen-devel@lists.xenproject.org; Mon, 29 Jan 2024 17:19:24 +0000
Received: from mail-lj1-x22d.google.com (mail-lj1-x22d.google.com
 [2a00:1450:4864:20::22d])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 8b101d2e-beca-11ee-8a43-1f161083a0e0;
 Mon, 29 Jan 2024 18:19:22 +0100 (CET)
Received: by mail-lj1-x22d.google.com with SMTP id
 38308e7fff4ca-2cf1fd1cc5bso35531751fa.3
 for <xen-devel@lists.xenproject.org>; Mon, 29 Jan 2024 09:19:22 -0800 (PST)
Received: from carlo-ubuntu.mo54.unimo.it (nonato.mo54.unimo.it.
 [155.185.85.8]) by smtp.gmail.com with ESMTPSA id
 eo15-20020a056402530f00b005598ec568dbsm3970494edb.59.2024.01.29.09.19.20
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 29 Jan 2024 09:19:20 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 8b101d2e-beca-11ee-8a43-1f161083a0e0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=minervasys-tech.20230601.gappssmtp.com; s=20230601; t=1706548761; x=1707153561; darn=lists.xenproject.org;
        h=content-transfer-encoding:mime-version:references:in-reply-to
         :message-id:date:subject:cc:to:from:from:to:cc:subject:date
         :message-id:reply-to;
        bh=yQCxn/qSiO+Xlc2kHildMd99iJ3B4U7/tWBy/pimbzo=;
        b=l0ayDZ6B4oUSrK3TsvSHfF9bvVR6a2iQ2OSAKbpGy2zwMTIzG+l9qNqt1uq16x8UOL
         77T3knYMAZybK9YgGNVHvr3Fcu3zl5s86XfRnsvsoVfbpDXE5+xL5b61SRmoL50MTFNN
         zO+c9Py3/wk30PO1bJdmO7/YJoLuP+w+GTKfc9/pT2O5rppOl2YH8B6v+aEuFZhs3vrA
         pDrC4Pzhv1IBFkEE2rsV5MqbbhVb0zTZjIanhU25lBLMtoxrCukUHNvTMqVWR3N8Kzhe
         cYQGSfYntCnROZM33FYzQLIoj6oiX8q+FWjLBAyU+efiTuMXTMohq/Tj9xjcthwd3bQd
         gfMw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706548761; x=1707153561;
        h=content-transfer-encoding:mime-version:references:in-reply-to
         :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to;
        bh=yQCxn/qSiO+Xlc2kHildMd99iJ3B4U7/tWBy/pimbzo=;
        b=oeY6zNPcuiSIo0T917r/cO1jkYrt57NHBSgeyTbQ6sArpVYoR2IuUXap0Q5B9/nC7r
         lky38PCpP3jv2xjifKsIqTS6HsAwuRmigJOLqzRL7rXZSzNtla8qo/ydqhqNMcRBM6lP
         beQCsfQh2mfBCAoNTYToicAUdSQHmdz/mI0oepzy+MWQ7XwvcSGgwhmWWv3BKBgYlNry
         R0GjQzx1Kqxz15uz/Kx+kfcwIT5m23c7LVQ38E6UvJV3wCHb0vOYlX0djKTCZQQS/8xq
         QbarUbPYGXqJoE4jgpDjQKtk2SvBP+mX48pN6jP3z7qbV24Pj4sVAOoV64ga9QHPvXVJ
         I+iQ==
X-Gm-Message-State: AOJu0YxnthTL8U85hyoEaLeV1cnNuAD6wQ0VwPnJ45pVAIdXgd6hOhH/
	dpu+Q5Q+oIetMDZud4X0dYF0qtNd8OTA7rweowSfvEuN3SOhurZX8kIGJUcN/ohLJQXpGnUZ4Nz
	q4vg=
X-Google-Smtp-Source: AGHT+IGXbU38Oy5XxZbVKZaWzBhOGFgRSdo5hfBtuIrJ1TbygxIFo+z/zFGXI1MhvagzFR4/Nmytew==
X-Received: by 2002:a2e:86ca:0:b0:2cd:c811:6a24 with SMTP id n10-20020a2e86ca000000b002cdc8116a24mr5419271ljj.18.1706548761240;
        Mon, 29 Jan 2024 09:19:21 -0800 (PST)
From: Carlo Nonato <carlo.nonato@minervasys.tech>
To: xen-devel@lists.xenproject.org
Cc: andrea.bastoni@minervasys.tech,
	Carlo Nonato <carlo.nonato@minervasys.tech>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	George Dunlap <george.dunlap@citrix.com>,
	Jan Beulich <jbeulich@suse.com>,
	Julien Grall <julien@xen.org>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Wei Liu <wl@xen.org>,
	Marco Solieri <marco.solieri@minervasys.tech>
Subject: [PATCH v6 05/15] xen: extend domctl interface for cache coloring
Date: Mon, 29 Jan 2024 18:18:01 +0100
Message-Id: <20240129171811.21382-6-carlo.nonato@minervasys.tech>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20240129171811.21382-1-carlo.nonato@minervasys.tech>
References: <20240129171811.21382-1-carlo.nonato@minervasys.tech>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Update the domctl interface to allow the user to set coloring configurations
from the toolstack.

Implement also the functionality for arm64.

Based on original work from: Luca Miccio <lucmiccio@gmail.com>

Signed-off-by: Carlo Nonato <carlo.nonato@minervasys.tech>
Signed-off-by: Marco Solieri <marco.solieri@minervasys.tech>
---
v6:
- reverted the XEN_DOMCTL_INTERFACE_VERSION bump
- reverted to uint32 for the guest handle
- explicit padding added to the domctl struct
- rewrote domain_set_llc_colors_domctl() to be more explicit
v5:
- added a new hypercall to set colors
- uint for the guest handle
v4:
- updated XEN_DOMCTL_INTERFACE_VERSION
---
 xen/common/domctl.c            | 11 +++++++++++
 xen/common/llc-coloring.c      | 25 +++++++++++++++++++++++++
 xen/include/public/domctl.h    |  9 +++++++++
 xen/include/xen/llc-coloring.h |  3 +++
 4 files changed, 48 insertions(+)

diff --git a/xen/common/domctl.c b/xen/common/domctl.c
index f5a71ee5f7..b6867d0602 100644
--- a/xen/common/domctl.c
+++ b/xen/common/domctl.c
@@ -8,6 +8,7 @@
 
 #include <xen/types.h>
 #include <xen/lib.h>
+#include <xen/llc-coloring.h>
 #include <xen/err.h>
 #include <xen/mm.h>
 #include <xen/sched.h>
@@ -858,6 +859,16 @@ long do_domctl(XEN_GUEST_HANDLE_PARAM(xen_domctl_t) u_domctl)
                 __HYPERVISOR_domctl, "h", u_domctl);
         break;
 
+    case XEN_DOMCTL_set_llc_colors:
+        if ( !llc_coloring_enabled )
+            break;
+
+        ret = domain_set_llc_colors_domctl(d, &op->u.set_llc_colors);
+        if ( ret == -EEXIST )
+            printk(XENLOG_ERR
+                   "Can't set LLC colors on an already created domain\n");
+        break;
+
     default:
         ret = arch_do_domctl(op, d, u_domctl);
         break;
diff --git a/xen/common/llc-coloring.c b/xen/common/llc-coloring.c
index 983de44a47..aaf0606c00 100644
--- a/xen/common/llc-coloring.c
+++ b/xen/common/llc-coloring.c
@@ -4,6 +4,7 @@
  *
  * Copyright (C) 2022 Xilinx Inc.
  */
+#include <xen/guest_access.h>
 #include <xen/keyhandler.h>
 #include <xen/llc-coloring.h>
 #include <xen/param.h>
@@ -229,6 +230,30 @@ int __init dom0_set_llc_colors(struct domain *d)
     return domain_check_colors(d);
 }
 
+int domain_set_llc_colors_domctl(struct domain *d,
+                                 const struct xen_domctl_set_llc_colors *config)
+{
+    unsigned int *colors;
+
+    if ( d->num_llc_colors )
+        return -EEXIST;
+
+    if ( !config->num_llc_colors )
+        return domain_set_default_colors(d);
+
+    colors = alloc_colors(config->num_llc_colors);
+    if ( !colors )
+        return -ENOMEM;
+
+    if ( copy_from_guest(colors, config->llc_colors, config->num_llc_colors) )
+        return -EFAULT;
+
+    d->llc_colors = colors;
+    d->num_llc_colors = config->num_llc_colors;
+
+    return domain_check_colors(d);
+}
+
 /*
  * Local variables:
  * mode: C
diff --git a/xen/include/public/domctl.h b/xen/include/public/domctl.h
index a33f9ec32b..d090cdb2dd 100644
--- a/xen/include/public/domctl.h
+++ b/xen/include/public/domctl.h
@@ -1190,6 +1190,13 @@ struct xen_domctl_vmtrace_op {
 typedef struct xen_domctl_vmtrace_op xen_domctl_vmtrace_op_t;
 DEFINE_XEN_GUEST_HANDLE(xen_domctl_vmtrace_op_t);
 
+struct xen_domctl_set_llc_colors {
+    /* IN LLC coloring parameters */
+    uint32_t num_llc_colors;
+    uint32_t padding;
+    XEN_GUEST_HANDLE_64(uint32) llc_colors;
+};
+
 struct xen_domctl {
     uint32_t cmd;
 #define XEN_DOMCTL_createdomain                   1
@@ -1277,6 +1284,7 @@ struct xen_domctl {
 #define XEN_DOMCTL_vmtrace_op                    84
 #define XEN_DOMCTL_get_paging_mempool_size       85
 #define XEN_DOMCTL_set_paging_mempool_size       86
+#define XEN_DOMCTL_set_llc_colors                87
 #define XEN_DOMCTL_gdbsx_guestmemio            1000
 #define XEN_DOMCTL_gdbsx_pausevcpu             1001
 #define XEN_DOMCTL_gdbsx_unpausevcpu           1002
@@ -1339,6 +1347,7 @@ struct xen_domctl {
         struct xen_domctl_vuart_op          vuart_op;
         struct xen_domctl_vmtrace_op        vmtrace_op;
         struct xen_domctl_paging_mempool    paging_mempool;
+        struct xen_domctl_set_llc_colors    set_llc_colors;
         uint8_t                             pad[128];
     } u;
 };
diff --git a/xen/include/xen/llc-coloring.h b/xen/include/xen/llc-coloring.h
index 1a73080c98..a82081367f 100644
--- a/xen/include/xen/llc-coloring.h
+++ b/xen/include/xen/llc-coloring.h
@@ -28,6 +28,9 @@ unsigned int get_llc_way_size(void);
 void arch_llc_coloring_init(void);
 int dom0_set_llc_colors(struct domain *d);
 
+int domain_set_llc_colors_domctl(struct domain *d,
+                                 const struct xen_domctl_set_llc_colors *config);
+
 #endif /* __COLORING_H__ */
 
 /*
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Mon Jan 29 17:19:30 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 29 Jan 2024 17:19:30 +0000
Received: from list by lists.xenproject.org with outflank-mailman.673070.1047298 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUVI9-0007ns-8k; Mon, 29 Jan 2024 17:19:29 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 673070.1047298; Mon, 29 Jan 2024 17:19:29 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUVI8-0007lm-U6; Mon, 29 Jan 2024 17:19:28 +0000
Received: by outflank-mailman (input) for mailman id 673070;
 Mon, 29 Jan 2024 17:19:28 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=Vh+I=JH=minervasys.tech=carlo.nonato@srs-se1.protection.inumbo.net>)
 id 1rUVI8-0005vb-6o
 for xen-devel@lists.xenproject.org; Mon, 29 Jan 2024 17:19:28 +0000
Received: from mail-lj1-x22f.google.com (mail-lj1-x22f.google.com
 [2a00:1450:4864:20::22f])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 8d126f7d-beca-11ee-98f5-efadbce2ee36;
 Mon, 29 Jan 2024 18:19:25 +0100 (CET)
Received: by mail-lj1-x22f.google.com with SMTP id
 38308e7fff4ca-2cf59087d50so22202321fa.0
 for <xen-devel@lists.xenproject.org>; Mon, 29 Jan 2024 09:19:25 -0800 (PST)
Received: from carlo-ubuntu.mo54.unimo.it (nonato.mo54.unimo.it.
 [155.185.85.8]) by smtp.gmail.com with ESMTPSA id
 eo15-20020a056402530f00b005598ec568dbsm3970494edb.59.2024.01.29.09.19.24
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 29 Jan 2024 09:19:24 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 8d126f7d-beca-11ee-98f5-efadbce2ee36
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=minervasys-tech.20230601.gappssmtp.com; s=20230601; t=1706548765; x=1707153565; darn=lists.xenproject.org;
        h=content-transfer-encoding:mime-version:references:in-reply-to
         :message-id:date:subject:cc:to:from:from:to:cc:subject:date
         :message-id:reply-to;
        bh=qm43AlNShlPAFLpjGrbILKxF1nwMflaP0c3YFoLDGIo=;
        b=xyQiKwhTkRsgB/haFtAIKE3lX3+5834bFvV+uG98hOo75SvFykk3HMnpfgag9u/DRg
         aPFv/eWfgVp9QSvK83y+P8nl9/l5dT9ddPfK04MYNNoIxHWDriXcHGVolfmUclnGJd7d
         0/U0zfkGjj5ScR1b1srkq2OgMpnme8PN94gh91OCcLEn665aqOOuVdlkInaipThPwHGF
         xjRFlGh81DqcQiWnAvWgBDpZ2rYYfxt68lyuyrdd6bP0bNCcym92Yw6EwW7KqsHKRxBK
         jew2rcDUdVR/BOpziIFfer1a8nD6Y1pvS+pktOcXMtUaa/xJpsKKB/06O0VaitySnE4m
         5seQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706548765; x=1707153565;
        h=content-transfer-encoding:mime-version:references:in-reply-to
         :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to;
        bh=qm43AlNShlPAFLpjGrbILKxF1nwMflaP0c3YFoLDGIo=;
        b=pYZ9c1WadYQI67BdgGOHxD0tQ8R65pr9++QhlX6HYLQEo+ltDUESDzbrS9uxQAcBMY
         vW9tkgwnHov63IY+bd7Y8Pe9o4tULUSA4UjnopAmDdIXGxAimP+mccqeE1J701hnud6p
         eSr1/4NV8KI0fRP6bTs5mVIUML28q+tqXMi5iThIV4B5P/scyfGHtD1wMX8S0VPVWNa+
         S381PJ68KQ3kJCA4rRxmP6XcAZtQOy8TA77x+b+GTY4RiMt7chSfwhiqTi7iKiFnZEP8
         KBqg5grUlYQ6/uzjhfC2oc/byeMPKmCh4e/aVxfqjeIjHhBYVTVk3dlac14CyzhaU6bS
         HbOA==
X-Gm-Message-State: AOJu0YxA37RxjLU7QanWUVUJGMCXTG1OXPWx+ilblZFZytYosHOze03V
	Eryo/dURvxKOcxkQlO5MzbEW+OwvJYTEkb3wcFC1MEuxZHr2EMqYGlxGjSXhleJeZlBt0G1zMbT
	wgM4=
X-Google-Smtp-Source: AGHT+IEMIXCUAhRBg5kbZYAqHRLvcRRw5cqtcSd6LePNjKTjKwemJZQSD3Z1kz79Ll/ztDU8Z+kicw==
X-Received: by 2002:a2e:808b:0:b0:2cf:1c9c:a43b with SMTP id i11-20020a2e808b000000b002cf1c9ca43bmr3709564ljg.18.1706548764946;
        Mon, 29 Jan 2024 09:19:24 -0800 (PST)
From: Carlo Nonato <carlo.nonato@minervasys.tech>
To: xen-devel@lists.xenproject.org
Cc: andrea.bastoni@minervasys.tech,
	Carlo Nonato <carlo.nonato@minervasys.tech>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	George Dunlap <george.dunlap@citrix.com>,
	Jan Beulich <jbeulich@suse.com>,
	Julien Grall <julien@xen.org>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Wei Liu <wl@xen.org>
Subject: [PATCH v6 09/15] xen/page_alloc: introduce preserved page flags macro
Date: Mon, 29 Jan 2024 18:18:05 +0100
Message-Id: <20240129171811.21382-10-carlo.nonato@minervasys.tech>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20240129171811.21382-1-carlo.nonato@minervasys.tech>
References: <20240129171811.21382-1-carlo.nonato@minervasys.tech>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

PGC_static and PGC_extra are flags that needs to be preserved when assigning
a page. Define a new macro that groups those flags and use it instead of
or'ing every time.

Signed-off-by: Carlo Nonato <carlo.nonato@minervasys.tech>
---
v6:
- preserved_flags renamed to PGC_preserved
- PGC_preserved is used only in assign_pages()
v5:
- new patch
---
 xen/common/page_alloc.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/xen/common/page_alloc.c b/xen/common/page_alloc.c
index 2ec17df9b4..7c135e0bb4 100644
--- a/xen/common/page_alloc.c
+++ b/xen/common/page_alloc.c
@@ -157,6 +157,8 @@
 #define PGC_static 0
 #endif
 
+#define PGC_preserved (PGC_extra | PGC_static)
+
 #ifndef PGT_TYPE_INFO_INITIALIZER
 #define PGT_TYPE_INFO_INITIALIZER 0
 #endif
@@ -2362,7 +2364,7 @@ int assign_pages(
 
         for ( i = 0; i < nr; i++ )
         {
-            ASSERT(!(pg[i].count_info & ~(PGC_extra | PGC_static)));
+            ASSERT(!(pg[i].count_info & ~PGC_preserved));
             if ( pg[i].count_info & PGC_extra )
                 extra_pages++;
         }
@@ -2422,7 +2424,7 @@ int assign_pages(
         page_set_owner(&pg[i], d);
         smp_wmb(); /* Domain pointer must be visible before updating refcnt. */
         pg[i].count_info =
-            (pg[i].count_info & (PGC_extra | PGC_static)) | PGC_allocated | 1;
+            (pg[i].count_info & PGC_preserved) | PGC_allocated | 1;
 
         page_list_add_tail(&pg[i], page_to_list(d, &pg[i]));
     }
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Mon Jan 29 17:19:30 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 29 Jan 2024 17:19:30 +0000
Received: from list by lists.xenproject.org with outflank-mailman.673069.1047292 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUVI8-0007i9-U2; Mon, 29 Jan 2024 17:19:28 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 673069.1047292; Mon, 29 Jan 2024 17:19:28 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUVI8-0007gN-FU; Mon, 29 Jan 2024 17:19:28 +0000
Received: by outflank-mailman (input) for mailman id 673069;
 Mon, 29 Jan 2024 17:19:27 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=Vh+I=JH=minervasys.tech=carlo.nonato@srs-se1.protection.inumbo.net>)
 id 1rUVI7-0005vb-6Y
 for xen-devel@lists.xenproject.org; Mon, 29 Jan 2024 17:19:27 +0000
Received: from mail-ed1-x52d.google.com (mail-ed1-x52d.google.com
 [2a00:1450:4864:20::52d])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 8cb469f9-beca-11ee-98f5-efadbce2ee36;
 Mon, 29 Jan 2024 18:19:25 +0100 (CET)
Received: by mail-ed1-x52d.google.com with SMTP id
 4fb4d7f45d1cf-55a90a0a1a1so2547905a12.0
 for <xen-devel@lists.xenproject.org>; Mon, 29 Jan 2024 09:19:24 -0800 (PST)
Received: from carlo-ubuntu.mo54.unimo.it (nonato.mo54.unimo.it.
 [155.185.85.8]) by smtp.gmail.com with ESMTPSA id
 eo15-20020a056402530f00b005598ec568dbsm3970494edb.59.2024.01.29.09.19.23
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 29 Jan 2024 09:19:23 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 8cb469f9-beca-11ee-98f5-efadbce2ee36
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=minervasys-tech.20230601.gappssmtp.com; s=20230601; t=1706548764; x=1707153564; darn=lists.xenproject.org;
        h=content-transfer-encoding:mime-version:references:in-reply-to
         :message-id:date:subject:cc:to:from:from:to:cc:subject:date
         :message-id:reply-to;
        bh=J9RFmP+aBqqH4SIR3Jn1WqEGTeAcNYfa+alt6ENH+Bw=;
        b=p0CPUrxvQY5EiTPuTGURNV/dgMauzAM/e1OJKWjfBlKcDHI5bkn2b2QNus8BVPIc2m
         so0rtl8QgwDRMAda8Jm2hnx8GZXlpzXbg2U48OR40mlrEX1kFTIQH2HaE9ZHGkNcFMBh
         rQOG4X4SlXImG0g7DpN+OWyfhNxxqy5YDsRz/otA3vXD7wZ8P48+ElOOJfcTgXm8WxTw
         Cu/kmXUSg6F2jKOwPNFCJ2d3l5TDGYZfsBJNc9ilD1YUc81AxDexa7oUNrXg3N2XfcDc
         jIeprkldfJogYG4tKYcHBmjCGP/hZvHtS5D3ljzgVTtx/kJstFdDDfhfRD0uEltEa8BF
         MZww==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706548764; x=1707153564;
        h=content-transfer-encoding:mime-version:references:in-reply-to
         :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to;
        bh=J9RFmP+aBqqH4SIR3Jn1WqEGTeAcNYfa+alt6ENH+Bw=;
        b=V3YmO++8wF8RfeYX0N2R1xDNyinCFTGqf23A3CFSY3vw3DTfPA+DD6CCILqb/fx9R/
         RE8WadWQlzTg7L8WzEriTRxPXX9uYsJ9GD7DXls1SKZrzYeaiSFz3eJj+yHIm/WPCrD/
         ZE8+qU0hVzLHztffDHMPF9JquTkuE5zEU7PrO5BBUD8m8hBvI228YkZDUiCBzNesPAW2
         f2Cbn9We8kGeK+OiXOC+10HNMCEpj/V6dxTgihB6u1maAeB/COGPOfove+yrAIctbb9s
         fW3pFzy4s70mGuhWCIi0a9ui2eTneCz5TmLujPas1YF1Rj9RN+xPvOKq8fbqIq8V64Ts
         Yn0Q==
X-Gm-Message-State: AOJu0YzSBdELRzDBFzULawDhgMSR4swDtixoVs9u339OzWiCuD2S5NJ0
	ogH7tAQiSbK46I9X4n/gjvo+Epy0gCbD1x+hpEXF1GkCQ+1XIAz4TGrwCP+LVi9dIx8NE5ZMQNd
	QY1o=
X-Google-Smtp-Source: AGHT+IHKjEqoRTvmqUd5xzklE7o7VNS35XUcP7U5jcbyKHDOgRixQG2hSX8IN+N4vxxGKn3ZYTeWUQ==
X-Received: by 2002:a05:6402:1b10:b0:55d:1eae:1e9f with SMTP id by16-20020a0564021b1000b0055d1eae1e9fmr4327297edb.15.1706548763994;
        Mon, 29 Jan 2024 09:19:23 -0800 (PST)
From: Carlo Nonato <carlo.nonato@minervasys.tech>
To: xen-devel@lists.xenproject.org
Cc: andrea.bastoni@minervasys.tech,
	Carlo Nonato <carlo.nonato@minervasys.tech>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	George Dunlap <george.dunlap@citrix.com>,
	Jan Beulich <jbeulich@suse.com>,
	Julien Grall <julien@xen.org>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Wei Liu <wl@xen.org>
Subject: [PATCH v6 08/15] xen/page_alloc: introduce init_free_page_fields() helper
Date: Mon, 29 Jan 2024 18:18:04 +0100
Message-Id: <20240129171811.21382-9-carlo.nonato@minervasys.tech>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20240129171811.21382-1-carlo.nonato@minervasys.tech>
References: <20240129171811.21382-1-carlo.nonato@minervasys.tech>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Introduce a new helper to initialize fields that have different uses for
free pages.

Signed-off-by: Carlo Nonato <carlo.nonato@minervasys.tech>
---
v6:
- Carlo Nonato as the only signed-off-by
v5:
- new patch
---
 xen/common/page_alloc.c | 16 +++++++++-------
 1 file changed, 9 insertions(+), 7 deletions(-)

diff --git a/xen/common/page_alloc.c b/xen/common/page_alloc.c
index 2f4f2859c4..2ec17df9b4 100644
--- a/xen/common/page_alloc.c
+++ b/xen/common/page_alloc.c
@@ -925,6 +925,13 @@ static struct page_info *get_free_buddy(unsigned int zone_lo,
     }
 }
 
+/* Initialise fields which have other uses for free pages. */
+static void init_free_page_fields(struct page_info *pg)
+{
+    pg->u.inuse.type_info = PGT_TYPE_INFO_INITIALIZER;
+    page_set_owner(pg, NULL);
+}
+
 /* Allocate 2^@order contiguous pages. */
 static struct page_info *alloc_heap_pages(
     unsigned int zone_lo, unsigned int zone_hi,
@@ -1033,10 +1040,7 @@ static struct page_info *alloc_heap_pages(
             accumulate_tlbflush(&need_tlbflush, &pg[i],
                                 &tlbflush_timestamp);
 
-        /* Initialise fields which have other uses for free pages. */
-        pg[i].u.inuse.type_info = PGT_TYPE_INFO_INITIALIZER;
-        page_set_owner(&pg[i], NULL);
-
+        init_free_page_fields(&pg[i]);
     }
 
     spin_unlock(&heap_lock);
@@ -2799,9 +2803,7 @@ static bool prepare_staticmem_pages(struct page_info *pg, unsigned long nr_mfns,
          * to PGC_state_inuse.
          */
         pg[i].count_info = PGC_static | PGC_state_inuse;
-        /* Initialise fields which have other uses for free pages. */
-        pg[i].u.inuse.type_info = PGT_TYPE_INFO_INITIALIZER;
-        page_set_owner(&pg[i], NULL);
+        init_free_page_fields(&pg[i]);
     }
 
     spin_unlock(&heap_lock);
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Mon Jan 29 17:19:32 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 29 Jan 2024 17:19:32 +0000
Received: from list by lists.xenproject.org with outflank-mailman.673072.1047319 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUVIB-0008VC-Qg; Mon, 29 Jan 2024 17:19:31 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 673072.1047319; Mon, 29 Jan 2024 17:19:31 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUVIB-0008Rh-H4; Mon, 29 Jan 2024 17:19:31 +0000
Received: by outflank-mailman (input) for mailman id 673072;
 Mon, 29 Jan 2024 17:19:29 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=Vh+I=JH=minervasys.tech=carlo.nonato@srs-se1.protection.inumbo.net>)
 id 1rUVI9-0005vb-BV
 for xen-devel@lists.xenproject.org; Mon, 29 Jan 2024 17:19:29 +0000
Received: from mail-ed1-x52d.google.com (mail-ed1-x52d.google.com
 [2a00:1450:4864:20::52d])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 8e6fcc91-beca-11ee-98f5-efadbce2ee36;
 Mon, 29 Jan 2024 18:19:27 +0100 (CET)
Received: by mail-ed1-x52d.google.com with SMTP id
 4fb4d7f45d1cf-55eece07a75so1848389a12.2
 for <xen-devel@lists.xenproject.org>; Mon, 29 Jan 2024 09:19:27 -0800 (PST)
Received: from carlo-ubuntu.mo54.unimo.it (nonato.mo54.unimo.it.
 [155.185.85.8]) by smtp.gmail.com with ESMTPSA id
 eo15-20020a056402530f00b005598ec568dbsm3970494edb.59.2024.01.29.09.19.25
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 29 Jan 2024 09:19:26 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 8e6fcc91-beca-11ee-98f5-efadbce2ee36
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=minervasys-tech.20230601.gappssmtp.com; s=20230601; t=1706548767; x=1707153567; darn=lists.xenproject.org;
        h=content-transfer-encoding:mime-version:references:in-reply-to
         :message-id:date:subject:cc:to:from:from:to:cc:subject:date
         :message-id:reply-to;
        bh=7UdP4nrilFTONRQo3Q1Leq4bZtPWA15sZcG7JE/zaUg=;
        b=Z6P6erqAeozayEiMEQuSDBbZB4fcXfRASweNbgwO8xi7YHnrrD1radBwEybaMhcAql
         luWqdFll0VhN3+nUklb70vT9i8WpXzWzu29wJP9uYfFDh3B3CP1oy6P4BQZn9JumOqa4
         d33KjxrGc0vh/tdHlQBY4EcxfM7BsCjNkPr9qOENkZdxyP5SiqpfMmxXfOQev1wFOZcZ
         ERp2ueS+hF7qdZRNFHxvtdhu92xMPZNApsFq/12/o065w8Me2RfFbi5CW3HSkARll+Od
         GqwnSO6xtaQBXe/LzAx/b8HzgOmEJOLVDOj4Q4mC/E7QrBA8vPYSIbbepkBPhKCbFplz
         FHfw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706548767; x=1707153567;
        h=content-transfer-encoding:mime-version:references:in-reply-to
         :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to;
        bh=7UdP4nrilFTONRQo3Q1Leq4bZtPWA15sZcG7JE/zaUg=;
        b=gOuHNWemvAg+9wRjAZCMC3EHO9QV45kbiT1Mh8pzngd9/xssBdyIj294upHaohmE8o
         6UJDH1yGmETIz6Y8J/41ifd12omHMDN4wqlIl1PgEeksBYOh2yZ6LLHUhmkIsMqwIGu7
         pr/Y9A5msNg9BfLy5BnbbufvbBw4m531k+5DiGpCqyZIl4LXFaIlPzkbVyvoc4vsmJtw
         F2dNxIEirVFwgy09cB9ITOLdlXTKFVaozhT8QeLz9Q9jDH1FBsGz9Bp/BGgZRPPD7o9X
         0qTEcj+kpx4ozEy202AUp5cfEvJEbYqNOEhSz79nlOvSfZ7yS1lk0csQB+x68WAKOBkQ
         AWpQ==
X-Gm-Message-State: AOJu0Yzckt1gLBcFw/klIYdG3wWkbwgSBfAXRukc3jxLE9XejH0W2Oy0
	wb7y/hmT+Pb0dgpd8qI6NxtXAqfOOJNi9GK7gBvOfrpculrdjdYVzs4qhxmLmoNGDJtg/Rj+OQh
	szKw=
X-Google-Smtp-Source: AGHT+IGCV8RaY9mKxLFe87VSIFwQXw7gaXAqUqjMDarSQiLKN1CM0EMIwpP8Z/6WHnQWIpAd/I790Q==
X-Received: by 2002:a05:6402:524c:b0:55e:ee3a:723 with SMTP id t12-20020a056402524c00b0055eee3a0723mr2972287edd.12.1706548766905;
        Mon, 29 Jan 2024 09:19:26 -0800 (PST)
From: Carlo Nonato <carlo.nonato@minervasys.tech>
To: xen-devel@lists.xenproject.org
Cc: andrea.bastoni@minervasys.tech,
	Carlo Nonato <carlo.nonato@minervasys.tech>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Julien Grall <julien@xen.org>,
	Bertrand Marquis <bertrand.marquis@arm.com>,
	Michal Orzel <michal.orzel@amd.com>,
	Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>
Subject: [PATCH v6 11/15] xen/arm: use domain memory to allocate p2m page tables
Date: Mon, 29 Jan 2024 18:18:07 +0100
Message-Id: <20240129171811.21382-12-carlo.nonato@minervasys.tech>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20240129171811.21382-1-carlo.nonato@minervasys.tech>
References: <20240129171811.21382-1-carlo.nonato@minervasys.tech>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Cache colored domains can benefit from having p2m page tables allocated
with the same coloring schema so that isolation can be achieved also for
those kind of memory accesses.
In order to do that, the domain struct is passed to the allocator and the
MEMF_no_owner flag is used.

This will be useful also when NUMA will be supported on Arm.

Signed-off-by: Carlo Nonato <carlo.nonato@minervasys.tech>
Acked-by: Julien Grall <julien@xen.org>
---
v6:
- Carlo Nonato as the only signed-off-by
v5:
- new patch
---
 xen/arch/arm/mmu/p2m.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/xen/arch/arm/mmu/p2m.c b/xen/arch/arm/mmu/p2m.c
index 41fcca011c..d02a478cb8 100644
--- a/xen/arch/arm/mmu/p2m.c
+++ b/xen/arch/arm/mmu/p2m.c
@@ -32,7 +32,7 @@ static struct page_info *p2m_alloc_page(struct domain *d)
      */
     if ( is_hardware_domain(d) )
     {
-        pg = alloc_domheap_page(NULL, 0);
+        pg = alloc_domheap_page(d, MEMF_no_owner);
         if ( pg == NULL )
             printk(XENLOG_G_ERR "Failed to allocate P2M pages for hwdom.\n");
     }
@@ -81,7 +81,7 @@ int p2m_set_allocation(struct domain *d, unsigned long pages, bool *preempted)
         if ( d->arch.paging.p2m_total_pages < pages )
         {
             /* Need to allocate more memory from domheap */
-            pg = alloc_domheap_page(NULL, 0);
+            pg = alloc_domheap_page(d, MEMF_no_owner);
             if ( pg == NULL )
             {
                 printk(XENLOG_ERR "Failed to allocate P2M pages.\n");
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Mon Jan 29 17:19:33 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 29 Jan 2024 17:19:33 +0000
Received: from list by lists.xenproject.org with outflank-mailman.673073.1047326 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUVIC-0000Bk-Ll; Mon, 29 Jan 2024 17:19:32 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 673073.1047326; Mon, 29 Jan 2024 17:19:32 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUVIC-00009f-5b; Mon, 29 Jan 2024 17:19:32 +0000
Received: by outflank-mailman (input) for mailman id 673073;
 Mon, 29 Jan 2024 17:19:29 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=Vh+I=JH=minervasys.tech=carlo.nonato@srs-se1.protection.inumbo.net>)
 id 1rUVI9-0005vY-FN
 for xen-devel@lists.xenproject.org; Mon, 29 Jan 2024 17:19:29 +0000
Received: from mail-ed1-x52f.google.com (mail-ed1-x52f.google.com
 [2a00:1450:4864:20::52f])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 8effc653-beca-11ee-8a43-1f161083a0e0;
 Mon, 29 Jan 2024 18:19:28 +0100 (CET)
Received: by mail-ed1-x52f.google.com with SMTP id
 4fb4d7f45d1cf-55c2c90c67dso3037320a12.1
 for <xen-devel@lists.xenproject.org>; Mon, 29 Jan 2024 09:19:28 -0800 (PST)
Received: from carlo-ubuntu.mo54.unimo.it (nonato.mo54.unimo.it.
 [155.185.85.8]) by smtp.gmail.com with ESMTPSA id
 eo15-20020a056402530f00b005598ec568dbsm3970494edb.59.2024.01.29.09.19.26
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 29 Jan 2024 09:19:27 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 8effc653-beca-11ee-8a43-1f161083a0e0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=minervasys-tech.20230601.gappssmtp.com; s=20230601; t=1706548768; x=1707153568; darn=lists.xenproject.org;
        h=content-transfer-encoding:mime-version:references:in-reply-to
         :message-id:date:subject:cc:to:from:from:to:cc:subject:date
         :message-id:reply-to;
        bh=0+y6eeYNyMDcSQ1B2g6r23A3/4HXzjPsqAidl0fgzB0=;
        b=jCQJR1Y70S1Rwq78IJw45VxIymXcXBu3OEAkBsMrDaKD/lWcPUUKV73bCp6YdhoL2L
         vbV9RN59oi4VCwfJF4iForykkbvCQPQqJ6XhcXfWagkvjeKv30v0LbbT4N+26Q0APnsJ
         iBLUCDoK4CBGs6pwoRqP+Zoujd+0q13GZmjdHkY2toP1F76nktKMiACiG+FeEdrHNtTv
         ZkJAXGpa11tYXIHP7njziGPNKnZxLlwz4HTRu4OTl4F/OaHOt/ZPPRrXLB5rsWdLg8vc
         RWi6rMBgkEJ8cZRNk+7wcTTOrisrEu8om3csJ7CLaZudp5XRtm8CkNbJOKZcXOab4/FG
         7dfw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706548768; x=1707153568;
        h=content-transfer-encoding:mime-version:references:in-reply-to
         :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to;
        bh=0+y6eeYNyMDcSQ1B2g6r23A3/4HXzjPsqAidl0fgzB0=;
        b=Xg1T4KBgnfbOk6iihSa+UqB1W+KUp84ombp+eHygqMpX3pmTls5A1PX4XVgqzyFCve
         cY/NrtVJaMfusxRYuoIj8QvNnm0K5qnRtKk6zsCZRDUSvo844Ngk4q8kppY9wPH78rg4
         tk4MRjkY+rhFioA4b839ffbbqbb3xxrdM3C9DNYuJWlCZ6gkUhnYllslAiNqLIg2hMqv
         1PgqacOSkLsUFwsGS3zxxlikZOJ7pT5vpBZztormQ1Wj3fNECcnQOWwMjA1TRHj8Lk8h
         c8tAh6dhblKChytD5W7hc35ATD8VHUO8ND9a+vpfii2cS2WSMPVQ5GXyOAxemdusrgyH
         9x0w==
X-Gm-Message-State: AOJu0YxiYWzHMTYU3pvzqZrnMJsULZojNJgdgFcoLJTEj5p8deWPFzDV
	d3zlrUxzy4WQtmbwyFVLencXhdkgZ09+vZVHpWZPeC/tnaYeJLV0ej1DbjiC/3f1xW++qMnAjT1
	DZBs=
X-Google-Smtp-Source: AGHT+IEI0GWlrodDNe0XQ3RXAMWNHoRmW/litoKg62TwP7wpr4XGruDNLNLR5Mz7/13p7Z4pZQdQGA==
X-Received: by 2002:aa7:d30c:0:b0:55e:e9f3:4f63 with SMTP id p12-20020aa7d30c000000b0055ee9f34f63mr2758139edq.3.1706548767846;
        Mon, 29 Jan 2024 09:19:27 -0800 (PST)
From: Carlo Nonato <carlo.nonato@minervasys.tech>
To: xen-devel@lists.xenproject.org
Cc: andrea.bastoni@minervasys.tech,
	Luca Miccio <lucmiccio@gmail.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	George Dunlap <george.dunlap@citrix.com>,
	Jan Beulich <jbeulich@suse.com>,
	Julien Grall <julien@xen.org>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Wei Liu <wl@xen.org>,
	Marco Solieri <marco.solieri@minervasys.tech>,
	Carlo Nonato <carlo.nonato@minervasys.tech>
Subject: [PATCH v6 12/15] xen/arm: add Xen cache colors command line parameter
Date: Mon, 29 Jan 2024 18:18:08 +0100
Message-Id: <20240129171811.21382-13-carlo.nonato@minervasys.tech>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20240129171811.21382-1-carlo.nonato@minervasys.tech>
References: <20240129171811.21382-1-carlo.nonato@minervasys.tech>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

From: Luca Miccio <lucmiccio@gmail.com>

Add a new command line parameter to configure Xen cache colors.
These colors can be dumped with the cache coloring info debug-key.

By default, Xen uses the first color.
Benchmarking the VM interrupt response time provides an estimation of
LLC usage by Xen's most latency-critical runtime task. Results on Arm
Cortex-A53 on Xilinx Zynq UltraScale+ XCZU9EG show that one color, which
reserves 64 KiB of L2, is enough to attain best responsiveness:
- Xen 1 color latency:  3.1 us
- Xen 2 color latency:  3.1 us

More colors are instead very likely to be needed on processors whose L1
cache is physically-indexed and physically-tagged, such as Cortex-A57.
In such cases, coloring applies to L1 also, and there typically are two
distinct L1-colors. Therefore, reserving only one color for Xen would
senselessly partitions a cache memory that is already private, i.e.
underutilize it. The default amount of Xen colors is thus set to one.

Signed-off-by: Luca Miccio <lucmiccio@gmail.com>
Signed-off-by: Marco Solieri <marco.solieri@minervasys.tech>
Signed-off-by: Carlo Nonato <carlo.nonato@minervasys.tech>
---
 docs/misc/xen-command-line.pandoc | 10 ++++++++++
 xen/common/llc-coloring.c         | 26 ++++++++++++++++++++++++++
 2 files changed, 36 insertions(+)

diff --git a/docs/misc/xen-command-line.pandoc b/docs/misc/xen-command-line.pandoc
index d52d38b97a..8c2b799f1e 100644
--- a/docs/misc/xen-command-line.pandoc
+++ b/docs/misc/xen-command-line.pandoc
@@ -2876,6 +2876,16 @@ mode.
 **WARNING: `x2apic_phys` is deprecated and superseded by `x2apic-mode`.
 The latter takes precedence if both are set.**
 
+### xen-llc-colors (arm64)
+> `= List of [ <integer> | <integer>-<integer> ]`
+
+> Default: `0: the lowermost color`
+
+Specify Xen LLC color configuration. This options is available only when
+`CONFIG_LLC_COLORING` is enabled.
+Two colors are most likely needed on platforms where private caches are
+physically indexed, e.g. the L1 instruction cache of the Arm Cortex-A57.
+
 ### xenheap_megabytes (arm32)
 > `= <size>`
 
diff --git a/xen/common/llc-coloring.c b/xen/common/llc-coloring.c
index 25e0861733..dace881b55 100644
--- a/xen/common/llc-coloring.c
+++ b/xen/common/llc-coloring.c
@@ -9,6 +9,9 @@
 #include <xen/llc-coloring.h>
 #include <xen/param.h>
 
+#define XEN_DEFAULT_COLOR       0
+#define XEN_DEFAULT_NUM_COLORS  1
+
 bool __ro_after_init llc_coloring_enabled;
 boolean_param("llc-coloring", llc_coloring_enabled);
 
@@ -21,6 +24,9 @@ static unsigned int __ro_after_init max_nr_colors = CONFIG_NR_LLC_COLORS;
 static unsigned int __initdata dom0_colors[CONFIG_NR_LLC_COLORS];
 static unsigned int __initdata dom0_num_colors;
 
+static unsigned int __ro_after_init xen_colors[CONFIG_NR_LLC_COLORS];
+static unsigned int __ro_after_init xen_num_colors;
+
 #define mfn_color_mask              (max_nr_colors - 1)
 #define mfn_to_color(mfn)           (mfn_x(mfn) & mfn_color_mask)
 
@@ -78,6 +84,12 @@ static int __init parse_dom0_colors(const char *s)
 }
 custom_param("dom0-llc-colors", parse_dom0_colors);
 
+static int __init parse_xen_colors(const char *s)
+{
+    return parse_color_config(s, xen_colors, max_nr_colors, &xen_num_colors);
+}
+custom_param("xen-llc-colors", parse_xen_colors);
+
 static void print_colors(const unsigned int *colors, unsigned int num_colors)
 {
     unsigned int i;
@@ -106,6 +118,8 @@ static void dump_coloring_info(unsigned char key)
     printk("'%c' pressed -> dumping LLC coloring general info\n", key);
     printk("LLC way size: %u KiB\n", llc_way_size >> 10);
     printk("Number of LLC colors supported: %u\n", max_nr_colors);
+    printk("Xen has %u LLC colors: ", xen_num_colors);
+    print_colors(xen_colors, xen_num_colors);
 }
 
 static bool check_colors(const unsigned int *colors, unsigned int num_colors)
@@ -149,6 +163,18 @@ void __init llc_coloring_init(void)
         panic("Number of LLC colors (%u) not in range [2, %u]\n",
               max_nr_colors, CONFIG_NR_LLC_COLORS);
 
+    if ( !xen_num_colors )
+    {
+        printk(XENLOG_WARNING
+               "Xen LLC color config not found. Using default color: %u\n",
+               XEN_DEFAULT_COLOR);
+        xen_colors[0] = XEN_DEFAULT_COLOR;
+        xen_num_colors = XEN_DEFAULT_NUM_COLORS;
+    }
+
+    if ( !check_colors(xen_colors, xen_num_colors) )
+        panic("Bad LLC color config for Xen\n");
+
     register_keyhandler('K', dump_coloring_info, "dump LLC coloring info", 1);
 
     arch_llc_coloring_init();
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Mon Jan 29 17:19:34 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 29 Jan 2024 17:19:34 +0000
Received: from list by lists.xenproject.org with outflank-mailman.673074.1047333 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUVID-0000Oi-TN; Mon, 29 Jan 2024 17:19:33 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 673074.1047333; Mon, 29 Jan 2024 17:19:33 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUVID-0000Lh-6s; Mon, 29 Jan 2024 17:19:33 +0000
Received: by outflank-mailman (input) for mailman id 673074;
 Mon, 29 Jan 2024 17:19:31 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=Vh+I=JH=minervasys.tech=carlo.nonato@srs-se1.protection.inumbo.net>)
 id 1rUVIB-0005vb-Bh
 for xen-devel@lists.xenproject.org; Mon, 29 Jan 2024 17:19:31 +0000
Received: from mail-lj1-x22a.google.com (mail-lj1-x22a.google.com
 [2a00:1450:4864:20::22a])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 8f8c7d97-beca-11ee-98f5-efadbce2ee36;
 Mon, 29 Jan 2024 18:19:29 +0100 (CET)
Received: by mail-lj1-x22a.google.com with SMTP id
 38308e7fff4ca-2cc9fa5e8e1so32885801fa.3
 for <xen-devel@lists.xenproject.org>; Mon, 29 Jan 2024 09:19:29 -0800 (PST)
Received: from carlo-ubuntu.mo54.unimo.it (nonato.mo54.unimo.it.
 [155.185.85.8]) by smtp.gmail.com with ESMTPSA id
 eo15-20020a056402530f00b005598ec568dbsm3970494edb.59.2024.01.29.09.19.27
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 29 Jan 2024 09:19:28 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 8f8c7d97-beca-11ee-98f5-efadbce2ee36
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=minervasys-tech.20230601.gappssmtp.com; s=20230601; t=1706548769; x=1707153569; darn=lists.xenproject.org;
        h=content-transfer-encoding:mime-version:references:in-reply-to
         :message-id:date:subject:cc:to:from:from:to:cc:subject:date
         :message-id:reply-to;
        bh=bOEDeXZz+KvpHcMcDfWEFx1e9GAnCTEDaLyDCycF2TQ=;
        b=QNfB12m7vO4Nj6rT1oA8yx7qRTiEua4Mnk8pc1zyRObZFRpUj0MS7XZmuOmM5eIcEc
         Rstvt63cyP8I/yHiKIxLd/SP2ZFU5pRGN9y7bIxd9GKxL+zjZI7M3k6ZoA/eXC4PBtOM
         wNl04us+Ipm4p1tZyMaB6cRyb9eIcp9JbOaLAnsFYNHz7I0Oq9VvjOmJbcjMnRg6anRx
         hyccWtDUhvEbmJB/0mQgfQVR07xYGeHO+Ua56CbrB7Ddu4Sgnljw8bGAbsdk3tJc+36Z
         cN9RucFEQ9ZyQmDeN3dGzEjCmJ/HS+kK1Y9W2e9nSYqg06plnum3uZvJiQI0FBghXkdL
         kCgw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706548769; x=1707153569;
        h=content-transfer-encoding:mime-version:references:in-reply-to
         :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to;
        bh=bOEDeXZz+KvpHcMcDfWEFx1e9GAnCTEDaLyDCycF2TQ=;
        b=aW4AJXEgSsM+XvVPNWvkrv5ZMUi5sxdESNUxviLFUU1P5aEWmGZcATPJxzhfmoPUpx
         ioTiDuCD6dyBk39wrFOfFYEEDHRsYFFQwmzBnGn1P3Hwoj5aWFAnqeNLIPJ91z6qF9X4
         +cpL3cHszhaRsKEH1dsSRt8+Cf94SCCrElrKeUikf82MipJ9bRhNvyxSt58bYsoB8CnT
         rMeaqC62hjtBV+sDhHxDg+MGGNYMfYkILnOx/Wi5L0op7SDl9bGarav2Dfv10+CvFkAN
         96nRt6dLdIevvLPdaekbIcUgoHR5Hf2Ks3B93sWHIHiOkbjI6zVyK87WYLmP9X8r4/dk
         qc/A==
X-Gm-Message-State: AOJu0YxZ53/FCNDAPDBD+bumUiW6HaSzZzeENpA4GM2a9wgqb8wBWt67
	5KZyQjL78efwKnSoHO7hPETRa0vlNicQA/djXA1cwzATdIhthSw3ppoVr0FzOk5zhbfX8DinXV8
	QjD0=
X-Google-Smtp-Source: AGHT+IEHbmtrPBuSoOGAvYNewKRuZ2nMFc2QPdwPS0snVlLI1HqtmRWiBozo33nTOPw6ibBWT4OnRw==
X-Received: by 2002:a2e:bc86:0:b0:2cf:f748:1aba with SMTP id h6-20020a2ebc86000000b002cff7481abamr5146953ljf.20.1706548769042;
        Mon, 29 Jan 2024 09:19:29 -0800 (PST)
From: Carlo Nonato <carlo.nonato@minervasys.tech>
To: xen-devel@lists.xenproject.org
Cc: andrea.bastoni@minervasys.tech,
	Carlo Nonato <carlo.nonato@minervasys.tech>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Julien Grall <julien@xen.org>,
	Bertrand Marquis <bertrand.marquis@arm.com>,
	Michal Orzel <michal.orzel@amd.com>,
	Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>
Subject: [PATCH v6 13/15] xen/arm: make consider_modules() available for xen relocation
Date: Mon, 29 Jan 2024 18:18:09 +0100
Message-Id: <20240129171811.21382-14-carlo.nonato@minervasys.tech>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20240129171811.21382-1-carlo.nonato@minervasys.tech>
References: <20240129171811.21382-1-carlo.nonato@minervasys.tech>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Cache coloring must physically relocate Xen in order to color the hypervisor
and consider_modules() is a key function that is needed to find a new
available physical address.

672d67f339c0 ("xen/arm: Split MMU-specific setup_mm() and related code out")
moved consider_modules() under arm32. Move it back to setup.c and make it
non-static so that it can be used outside.

Signed-off-by: Carlo Nonato <carlo.nonato@minervasys.tech>
---
v6:
- new patch
---
 xen/arch/arm/arm32/mmu/mm.c      | 93 +-------------------------------
 xen/arch/arm/include/asm/setup.h |  3 ++
 xen/arch/arm/setup.c             | 92 +++++++++++++++++++++++++++++++
 3 files changed, 96 insertions(+), 92 deletions(-)

diff --git a/xen/arch/arm/arm32/mmu/mm.c b/xen/arch/arm/arm32/mmu/mm.c
index cb441ca87c..e9e1e48f9f 100644
--- a/xen/arch/arm/arm32/mmu/mm.c
+++ b/xen/arch/arm/arm32/mmu/mm.c
@@ -7,6 +7,7 @@
 #include <xen/pfn.h>
 #include <asm/fixmap.h>
 #include <asm/static-memory.h>
+#include <asm/setup.h>
 
 static unsigned long opt_xenheap_megabytes __initdata;
 integer_param("xenheap_megabytes", opt_xenheap_megabytes);
@@ -29,98 +30,6 @@ static void __init setup_directmap_mappings(unsigned long base_mfn,
     directmap_virt_end = XENHEAP_VIRT_START + nr_mfns * PAGE_SIZE;
 }
 
-/*
- * Returns the end address of the highest region in the range s..e
- * with required size and alignment that does not conflict with the
- * modules from first_mod to nr_modules.
- *
- * For non-recursive callers first_mod should normally be 0 (all
- * modules and Xen itself) or 1 (all modules but not Xen).
- */
-static paddr_t __init consider_modules(paddr_t s, paddr_t e,
-                                       uint32_t size, paddr_t align,
-                                       int first_mod)
-{
-    const struct bootmodules *mi = &bootinfo.modules;
-    int i;
-    int nr;
-
-    s = (s+align-1) & ~(align-1);
-    e = e & ~(align-1);
-
-    if ( s > e ||  e - s < size )
-        return 0;
-
-    /* First check the boot modules */
-    for ( i = first_mod; i < mi->nr_mods; i++ )
-    {
-        paddr_t mod_s = mi->module[i].start;
-        paddr_t mod_e = mod_s + mi->module[i].size;
-
-        if ( s < mod_e && mod_s < e )
-        {
-            mod_e = consider_modules(mod_e, e, size, align, i+1);
-            if ( mod_e )
-                return mod_e;
-
-            return consider_modules(s, mod_s, size, align, i+1);
-        }
-    }
-
-    /* Now check any fdt reserved areas. */
-
-    nr = fdt_num_mem_rsv(device_tree_flattened);
-
-    for ( ; i < mi->nr_mods + nr; i++ )
-    {
-        paddr_t mod_s, mod_e;
-
-        if ( fdt_get_mem_rsv_paddr(device_tree_flattened,
-                                   i - mi->nr_mods,
-                                   &mod_s, &mod_e ) < 0 )
-            /* If we can't read it, pretend it doesn't exist... */
-            continue;
-
-        /* fdt_get_mem_rsv_paddr returns length */
-        mod_e += mod_s;
-
-        if ( s < mod_e && mod_s < e )
-        {
-            mod_e = consider_modules(mod_e, e, size, align, i+1);
-            if ( mod_e )
-                return mod_e;
-
-            return consider_modules(s, mod_s, size, align, i+1);
-        }
-    }
-
-    /*
-     * i is the current bootmodule we are evaluating, across all
-     * possible kinds of bootmodules.
-     *
-     * When retrieving the corresponding reserved-memory addresses, we
-     * need to index the bootinfo.reserved_mem bank starting from 0, and
-     * only counting the reserved-memory modules. Hence, we need to use
-     * i - nr.
-     */
-    nr += mi->nr_mods;
-    for ( ; i - nr < bootinfo.reserved_mem.nr_banks; i++ )
-    {
-        paddr_t r_s = bootinfo.reserved_mem.bank[i - nr].start;
-        paddr_t r_e = r_s + bootinfo.reserved_mem.bank[i - nr].size;
-
-        if ( s < r_e && r_s < e )
-        {
-            r_e = consider_modules(r_e, e, size, align, i + 1);
-            if ( r_e )
-                return r_e;
-
-            return consider_modules(s, r_s, size, align, i + 1);
-        }
-    }
-    return e;
-}
-
 /*
  * Find a contiguous region that fits in the static heap region with
  * required size and alignment, and return the end address of the region
diff --git a/xen/arch/arm/include/asm/setup.h b/xen/arch/arm/include/asm/setup.h
index d15a88d2e0..37c0e345f0 100644
--- a/xen/arch/arm/include/asm/setup.h
+++ b/xen/arch/arm/include/asm/setup.h
@@ -207,6 +207,9 @@ struct init_info
     unsigned int cpuid;
 };
 
+paddr_t consider_modules(paddr_t s, paddr_t e, uint32_t size, paddr_t align,
+                         int first_mod);
+
 #endif
 /*
  * Local variables:
diff --git a/xen/arch/arm/setup.c b/xen/arch/arm/setup.c
index 14cb023783..28f4761705 100644
--- a/xen/arch/arm/setup.c
+++ b/xen/arch/arm/setup.c
@@ -545,6 +545,98 @@ static void * __init relocate_fdt(paddr_t dtb_paddr, size_t dtb_size)
     return fdt;
 }
 
+/*
+ * Returns the end address of the highest region in the range s..e
+ * with required size and alignment that does not conflict with the
+ * modules from first_mod to nr_modules.
+ *
+ * For non-recursive callers first_mod should normally be 0 (all
+ * modules and Xen itself) or 1 (all modules but not Xen).
+ */
+paddr_t __init consider_modules(paddr_t s, paddr_t e,
+                                uint32_t size, paddr_t align,
+                                int first_mod)
+{
+    const struct bootmodules *mi = &bootinfo.modules;
+    int i;
+    int nr;
+
+    s = (s+align-1) & ~(align-1);
+    e = e & ~(align-1);
+
+    if ( s > e ||  e - s < size )
+        return 0;
+
+    /* First check the boot modules */
+    for ( i = first_mod; i < mi->nr_mods; i++ )
+    {
+        paddr_t mod_s = mi->module[i].start;
+        paddr_t mod_e = mod_s + mi->module[i].size;
+
+        if ( s < mod_e && mod_s < e )
+        {
+            mod_e = consider_modules(mod_e, e, size, align, i+1);
+            if ( mod_e )
+                return mod_e;
+
+            return consider_modules(s, mod_s, size, align, i+1);
+        }
+    }
+
+    /* Now check any fdt reserved areas. */
+
+    nr = fdt_num_mem_rsv(device_tree_flattened);
+
+    for ( ; i < mi->nr_mods + nr; i++ )
+    {
+        paddr_t mod_s, mod_e;
+
+        if ( fdt_get_mem_rsv_paddr(device_tree_flattened,
+                                   i - mi->nr_mods,
+                                   &mod_s, &mod_e ) < 0 )
+            /* If we can't read it, pretend it doesn't exist... */
+            continue;
+
+        /* fdt_get_mem_rsv_paddr returns length */
+        mod_e += mod_s;
+
+        if ( s < mod_e && mod_s < e )
+        {
+            mod_e = consider_modules(mod_e, e, size, align, i+1);
+            if ( mod_e )
+                return mod_e;
+
+            return consider_modules(s, mod_s, size, align, i+1);
+        }
+    }
+
+    /*
+     * i is the current bootmodule we are evaluating, across all
+     * possible kinds of bootmodules.
+     *
+     * When retrieving the corresponding reserved-memory addresses, we
+     * need to index the bootinfo.reserved_mem bank starting from 0, and
+     * only counting the reserved-memory modules. Hence, we need to use
+     * i - nr.
+     */
+    nr += mi->nr_mods;
+    for ( ; i - nr < bootinfo.reserved_mem.nr_banks; i++ )
+    {
+        paddr_t r_s = bootinfo.reserved_mem.bank[i - nr].start;
+        paddr_t r_e = r_s + bootinfo.reserved_mem.bank[i - nr].size;
+
+        if ( s < r_e && r_s < e )
+        {
+            r_e = consider_modules(r_e, e, size, align, i + 1);
+            if ( r_e )
+                return r_e;
+
+            return consider_modules(s, r_s, size, align, i + 1);
+        }
+    }
+    return e;
+}
+
 /*
  * Return the end of the non-module region starting at s. In other
  * words return s the start of the next modules after s.
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Mon Jan 29 17:19:35 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 29 Jan 2024 17:19:35 +0000
Received: from list by lists.xenproject.org with outflank-mailman.673075.1047342 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUVIE-0000aY-Oz; Mon, 29 Jan 2024 17:19:34 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 673075.1047342; Mon, 29 Jan 2024 17:19:34 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUVIE-0000WX-41; Mon, 29 Jan 2024 17:19:34 +0000
Received: by outflank-mailman (input) for mailman id 673075;
 Mon, 29 Jan 2024 17:19:32 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=Vh+I=JH=minervasys.tech=carlo.nonato@srs-se1.protection.inumbo.net>)
 id 1rUVIB-0005vY-O9
 for xen-devel@lists.xenproject.org; Mon, 29 Jan 2024 17:19:31 +0000
Received: from mail-ed1-x52f.google.com (mail-ed1-x52f.google.com
 [2a00:1450:4864:20::52f])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 900c0e81-beca-11ee-8a43-1f161083a0e0;
 Mon, 29 Jan 2024 18:19:30 +0100 (CET)
Received: by mail-ed1-x52f.google.com with SMTP id
 4fb4d7f45d1cf-55a5e7fa471so2925527a12.1
 for <xen-devel@lists.xenproject.org>; Mon, 29 Jan 2024 09:19:30 -0800 (PST)
Received: from carlo-ubuntu.mo54.unimo.it (nonato.mo54.unimo.it.
 [155.185.85.8]) by smtp.gmail.com with ESMTPSA id
 eo15-20020a056402530f00b005598ec568dbsm3970494edb.59.2024.01.29.09.19.29
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 29 Jan 2024 09:19:29 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 900c0e81-beca-11ee-8a43-1f161083a0e0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=minervasys-tech.20230601.gappssmtp.com; s=20230601; t=1706548770; x=1707153570; darn=lists.xenproject.org;
        h=content-transfer-encoding:mime-version:references:in-reply-to
         :message-id:date:subject:cc:to:from:from:to:cc:subject:date
         :message-id:reply-to;
        bh=0I5n9NCJphRrFbEL84vyCPUVcS0YQhAxUDqpEr89QQ8=;
        b=v51o/lv52+2ctSV5+aCTYifHDAsB7S/QxwUfHkH6EVZfAG+oTNAhKB4xPX0pwJHxJB
         wqaywQk8Nosb1xBG8M76CcErI0LQV0qzKRYUAYGsd3q2TtZxGC+mMal29rb9pF+jQIAG
         I6Hkin7pk2XF0sV0DOnZWGRGXtULv1Z9uYd9C/z1DI2MJAlr6aqiYc77Abpm+hRYdaV6
         GZVglGgEEepz37Z7kVpeogs42eerai9X7XEynPpz5Fw9if82oC5JtsGyilLmwWCJ0yuP
         KgrDrF+0SCtnPjzAdGy745bIkRDCzIWDZXr6Y1/ngV2aQMZ/AOyxv/T3ppwy7OXKw4+j
         RlpQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706548770; x=1707153570;
        h=content-transfer-encoding:mime-version:references:in-reply-to
         :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to;
        bh=0I5n9NCJphRrFbEL84vyCPUVcS0YQhAxUDqpEr89QQ8=;
        b=u63owWfXTh14Yk9j36OAjdAqKnVds1TGUgX/9lGpJC+IBiu0VWZRyYd/6mp8KEF0ZU
         QI5yY/kvZGOUJLvfibir8VJrSDRiNwJVhdsQzku8EGeG5q7wjzgEueHAvOmZheQt9DmM
         w9Kh0XaT7IC/dDsJ6DrunmbHfkg/ic7Q00yan4rc8QS5IoTRoLYV0vgiAZZn559Lgmex
         LqAvHNO0pG710/Y24HMeIfpUKjjnfHcUHgsxUHFv9vZzS9GXSRZuE25dX9j50E4fEpRi
         NvNXgK/+uIB21jIebMJYvvvJif3UG9FItPe1CHgZymoEzH8ZEQeXMi1P9Dua2iKO9n7V
         /pHw==
X-Gm-Message-State: AOJu0YxylS5PbW2DI/27KgHouduSqMs9O7Ms+32vBj936hVUacfnGHcs
	ZlNpG68jqWqSqJXahgbFbxHJrrYuBGp1snJJuxeRGqIeVg4Zqn7++MeJVuRcQNhuuRHe5roKWI5
	SFyU=
X-Google-Smtp-Source: AGHT+IHlr451d+Zr7M9dKVnd80bpeZnjzImUXU9tmZOircuhovcZ785ez6CzE5coA4U5vM07nTHhmA==
X-Received: by 2002:a05:6402:2692:b0:55c:7aa7:53a9 with SMTP id w18-20020a056402269200b0055c7aa753a9mr5133927edd.5.1706548769838;
        Mon, 29 Jan 2024 09:19:29 -0800 (PST)
From: Carlo Nonato <carlo.nonato@minervasys.tech>
To: xen-devel@lists.xenproject.org
Cc: andrea.bastoni@minervasys.tech,
	Carlo Nonato <carlo.nonato@minervasys.tech>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Julien Grall <julien@xen.org>,
	Bertrand Marquis <bertrand.marquis@arm.com>,
	Michal Orzel <michal.orzel@amd.com>,
	Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	George Dunlap <george.dunlap@citrix.com>,
	Jan Beulich <jbeulich@suse.com>,
	Wei Liu <wl@xen.org>,
	Marco Solieri <marco.solieri@minervasys.tech>
Subject: [PATCH v6 14/15] xen/arm: add cache coloring support for Xen
Date: Mon, 29 Jan 2024 18:18:10 +0100
Message-Id: <20240129171811.21382-15-carlo.nonato@minervasys.tech>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20240129171811.21382-1-carlo.nonato@minervasys.tech>
References: <20240129171811.21382-1-carlo.nonato@minervasys.tech>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Add the cache coloring support for Xen physical space.

Since Xen must be relocated to a new physical space, some relocation
functionalities must be brought back:
- the virtual address of the new space is taken from 0c18fb76323b
  ("xen/arm: Remove unused BOOT_RELOC_VIRT_START").
- relocate_xen() and get_xen_paddr() are taken from f60658c6ae47
  ("xen/arm: Stop relocating Xen").

setup_pagetables() must be adapted for coloring and for relocation. Runtime
page tables are used to map the colored space, but they are also linked in
boot tables so that the new space is temporarily available for relocation.
This implies that Xen protection must happen after the copy.

Finally, since the alternative framework needs to remap the Xen text and
inittext sections, this operation must be done in a coloring-aware way.
The function xen_remap_colored() is introduced for that.

Signed-off-by: Carlo Nonato <carlo.nonato@minervasys.tech>
Signed-off-by: Marco Solieri <marco.solieri@minervasys.tech>
---
v6:
- squashed with BOOT_RELOC_VIRT_START patch
- consider_modules() moved in another patch
- removed psci and smpboot code because of new idmap work already handles that
- moved xen_remap_colored() in alternative.c since it's only used there
- removed xen_colored_temp[] in favor of xen_xenmap[] usage for mapping
- use of boot_module_find_by_kind() to remove the need of extra parameter in
  setup_pagetables()
- moved get_xen_paddr() in arm/llc-coloring.c since it's only used there
v5:
- FIXME: consider_modules copy pasted since it got moved
v4:
- removed set_value_for_secondary() because it was wrongly cleaning cache
- relocate_xen() now calls switch_ttbr_id()
---
 xen/arch/arm/alternative.c            | 30 ++++++++-
 xen/arch/arm/arm64/mmu/head.S         | 57 +++++++++++++++-
 xen/arch/arm/arm64/mmu/mm.c           | 28 ++++++--
 xen/arch/arm/include/asm/mmu/layout.h |  3 +
 xen/arch/arm/llc-coloring.c           | 61 ++++++++++++++++-
 xen/arch/arm/mmu/setup.c              | 97 ++++++++++++++++++++++++---
 xen/arch/arm/setup.c                  |  5 +-
 xen/common/llc-coloring.c             | 23 +++++++
 xen/include/xen/llc-coloring.h        | 14 ++++
 9 files changed, 299 insertions(+), 19 deletions(-)

diff --git a/xen/arch/arm/alternative.c b/xen/arch/arm/alternative.c
index 016e66978b..a6b0794d80 100644
--- a/xen/arch/arm/alternative.c
+++ b/xen/arch/arm/alternative.c
@@ -9,6 +9,7 @@
 #include <xen/init.h>
 #include <xen/types.h>
 #include <xen/kernel.h>
+#include <xen/llc-coloring.h>
 #include <xen/mm.h>
 #include <xen/vmap.h>
 #include <xen/smp.h>
@@ -191,6 +192,27 @@ static int __apply_alternatives_multi_stop(void *xenmap)
     return 0;
 }
 
+static void __init *xen_remap_colored(mfn_t xen_mfn, paddr_t xen_size)
+{
+    unsigned int i;
+    void *xenmap;
+    mfn_t *xen_colored_mfns;
+
+    xen_colored_mfns = xmalloc_array(mfn_t, xen_size >> PAGE_SHIFT);
+    if ( !xen_colored_mfns )
+        panic("Can't allocate LLC colored MFNs\n");
+
+    for_each_xen_colored_mfn( xen_mfn, i )
+    {
+        xen_colored_mfns[i] = xen_mfn;
+    }
+
+    xenmap = vmap(xen_colored_mfns, xen_size >> PAGE_SHIFT);
+    xfree(xen_colored_mfns);
+
+    return xenmap;
+}
+
 /*
  * This function should only be called during boot and before CPU0 jump
  * into the idle_loop.
@@ -209,8 +231,12 @@ void __init apply_alternatives_all(void)
      * The text and inittext section are read-only. So re-map Xen to
      * be able to patch the code.
      */
-    xenmap = __vmap(&xen_mfn, 1U << xen_order, 1, 1, PAGE_HYPERVISOR,
-                    VMAP_DEFAULT);
+    if ( llc_coloring_enabled )
+        xenmap = xen_remap_colored(xen_mfn, xen_size);
+    else
+        xenmap = __vmap(&xen_mfn, 1U << xen_order, 1, 1, PAGE_HYPERVISOR,
+                        VMAP_DEFAULT);
+
     /* Re-mapping Xen is not expected to fail during boot. */
     BUG_ON(!xenmap);
 
diff --git a/xen/arch/arm/arm64/mmu/head.S b/xen/arch/arm/arm64/mmu/head.S
index fa40b696dd..7926849ab1 100644
--- a/xen/arch/arm/arm64/mmu/head.S
+++ b/xen/arch/arm/arm64/mmu/head.S
@@ -427,6 +427,60 @@ fail:   PRINT("- Boot failed -\r\n")
         b     1b
 ENDPROC(fail)
 
+/*
+ * Copy Xen to new location and switch TTBR
+ * x0    ttbr
+ * x1    source address
+ * x2    destination address
+ * x3    length
+ *
+ * Source and destination must be word aligned, length is rounded up
+ * to a 16 byte boundary.
+ *
+ * MUST BE VERY CAREFUL when saving things to RAM over the copy
+ */
+ENTRY(relocate_xen)
+        /*
+         * Copy 16 bytes at a time using:
+         *   x9: counter
+         *   x10: data
+         *   x11: data
+         *   x12: source
+         *   x13: destination
+         */
+        mov     x9, x3
+        mov     x12, x1
+        mov     x13, x2
+
+1:      ldp     x10, x11, [x12], #16
+        stp     x10, x11, [x13], #16
+
+        subs    x9, x9, #16
+        bgt     1b
+
+        /*
+         * Flush destination from dcache using:
+         *   x9: counter
+         *   x10: step
+         *   x11: vaddr
+         *
+         * This is to ensure data is visible to the instruction cache
+         */
+        dsb   sy
+
+        mov   x9, x3
+        ldr   x10, =dcache_line_bytes /* x10 := step */
+        ldr   x10, [x10]
+        mov   x11, x2
+
+1:      dc    cvac, x11
+
+        add   x11, x11, x10
+        subs  x9, x9, x10
+        bgt   1b
+
+        b switch_ttbr_id
+
 /*
  * Switch TTBR
  *
@@ -452,7 +506,8 @@ ENTRY(switch_ttbr_id)
 
         /*
          * 5) Flush I-cache
-         * This should not be necessary but it is kept for safety.
+         * This should not be necessary in the general case, but it's needed
+         * for cache coloring because in that case code is relocated.
          */
         ic     iallu
         isb
diff --git a/xen/arch/arm/arm64/mmu/mm.c b/xen/arch/arm/arm64/mmu/mm.c
index d2651c9486..07cf8040a2 100644
--- a/xen/arch/arm/arm64/mmu/mm.c
+++ b/xen/arch/arm/arm64/mmu/mm.c
@@ -1,6 +1,7 @@
 /* SPDX-License-Identifier: GPL-2.0 */
 
 #include <xen/init.h>
+#include <xen/llc-coloring.h>
 #include <xen/mm.h>
 #include <xen/pfn.h>
 
@@ -125,27 +126,46 @@ void update_identity_mapping(bool enable)
 }
 
 extern void switch_ttbr_id(uint64_t ttbr);
+extern void relocate_xen(uint64_t ttbr, void *src, void *dst, size_t len);
 
 typedef void (switch_ttbr_fn)(uint64_t ttbr);
+typedef void (relocate_xen_fn)(uint64_t ttbr, void *src, void *dst, size_t len);
 
 void __init switch_ttbr(uint64_t ttbr)
 {
-    vaddr_t id_addr = virt_to_maddr(switch_ttbr_id);
-    switch_ttbr_fn *fn = (switch_ttbr_fn *)id_addr;
+    vaddr_t vaddr, id_addr;
     lpae_t pte;
 
+    if ( llc_coloring_enabled )
+        vaddr = (vaddr_t)relocate_xen;
+    else
+        vaddr = (vaddr_t)switch_ttbr_id;
+
+    id_addr = virt_to_maddr(vaddr);
+
     /* Enable the identity mapping in the boot page tables */
     update_identity_mapping(true);
 
     /* Enable the identity mapping in the runtime page tables */
-    pte = pte_of_xenaddr((vaddr_t)switch_ttbr_id);
+    pte = pte_of_xenaddr(vaddr);
     pte.pt.table = 1;
     pte.pt.xn = 0;
     pte.pt.ro = 1;
     write_pte(&xen_third_id[third_table_offset(id_addr)], pte);
 
     /* Switch TTBR */
-    fn(ttbr);
+    if ( llc_coloring_enabled )
+    {
+        relocate_xen_fn *fn = (relocate_xen_fn *)id_addr;
+
+        fn(ttbr, _start, (void *)BOOT_RELOC_VIRT_START, _end - _start);
+    }
+    else
+    {
+        switch_ttbr_fn *fn = (switch_ttbr_fn *)id_addr;
+
+        fn(ttbr);
+    }
 
     /*
      * Disable the identity mapping in the runtime page tables.
diff --git a/xen/arch/arm/include/asm/mmu/layout.h b/xen/arch/arm/include/asm/mmu/layout.h
index a3b546465b..7228c9fb82 100644
--- a/xen/arch/arm/include/asm/mmu/layout.h
+++ b/xen/arch/arm/include/asm/mmu/layout.h
@@ -30,6 +30,7 @@
  *  10M -  12M   Fixmap: special-purpose 4K mapping slots
  *  12M -  16M   Early boot mapping of FDT
  *  16M -  18M   Livepatch vmap (if compiled in)
+ *  16M -  22M   Cache-colored Xen text, data, bss (temporary, if compiled in)
  *
  *   1G -   2G   VMAP: ioremap and early_ioremap
  *
@@ -74,6 +75,8 @@
 #define BOOT_FDT_VIRT_START     (FIXMAP_VIRT_START + FIXMAP_VIRT_SIZE)
 #define BOOT_FDT_VIRT_SIZE      _AT(vaddr_t, MB(4))
 
+#define BOOT_RELOC_VIRT_START   (BOOT_FDT_VIRT_START + BOOT_FDT_VIRT_SIZE)
+
 #ifdef CONFIG_LIVEPATCH
 #define LIVEPATCH_VMAP_START    (BOOT_FDT_VIRT_START + BOOT_FDT_VIRT_SIZE)
 #define LIVEPATCH_VMAP_SIZE    _AT(vaddr_t, MB(2))
diff --git a/xen/arch/arm/llc-coloring.c b/xen/arch/arm/llc-coloring.c
index eee1e80e2d..bbb39214a8 100644
--- a/xen/arch/arm/llc-coloring.c
+++ b/xen/arch/arm/llc-coloring.c
@@ -9,6 +9,7 @@
 
 #include <asm/processor.h>
 #include <asm/sysregs.h>
+#include <asm/setup.h>
 
 /* Return the LLC way size by probing the hardware */
 unsigned int __init get_llc_way_size(void)
@@ -62,7 +63,65 @@ unsigned int __init get_llc_way_size(void)
     return line_size * num_sets;
 }
 
-void __init arch_llc_coloring_init(void) {}
+/**
+ * get_xen_paddr - get physical address to relocate Xen to
+ *
+ * Xen is relocated to as near to the top of RAM as possible and
+ * aligned to a XEN_PADDR_ALIGN boundary.
+ */
+static paddr_t __init get_xen_paddr(uint32_t xen_size)
+{
+    struct meminfo *mi = &bootinfo.mem;
+    paddr_t min_size;
+    paddr_t paddr = 0;
+    int i;
+
+    min_size = (xen_size + (XEN_PADDR_ALIGN-1)) & ~(XEN_PADDR_ALIGN-1);
+
+    /* Find the highest bank with enough space. */
+    for ( i = 0; i < mi->nr_banks; i++ )
+    {
+        const struct membank *bank = &mi->bank[i];
+        paddr_t s, e;
+
+        if ( bank->size >= min_size )
+        {
+            e = consider_modules(bank->start, bank->start + bank->size,
+                                 min_size, XEN_PADDR_ALIGN, 0);
+            if ( !e )
+                continue;
+
+#ifdef CONFIG_ARM_32
+            /* Xen must be under 4GB */
+            if ( e > 0x100000000ULL )
+                e = 0x100000000ULL;
+            if ( e < bank->start )
+                continue;
+#endif
+
+            s = e - min_size;
+
+            if ( s > paddr )
+                paddr = s;
+        }
+    }
+
+    if ( !paddr )
+        panic("Not enough memory to relocate Xen\n");
+
+    printk("Placing Xen at 0x%"PRIpaddr"-0x%"PRIpaddr"\n",
+           paddr, paddr + min_size);
+
+    return paddr;
+}
+
+void __init arch_llc_coloring_init(void)
+{
+    struct bootmodule *xen_bootmodule = boot_module_find_by_kind(BOOTMOD_XEN);
+
+    xen_bootmodule->size = xen_colored_map_size();
+    xen_bootmodule->start = get_xen_paddr(xen_bootmodule->size);
+}
 
 /*
  * Local variables:
diff --git a/xen/arch/arm/mmu/setup.c b/xen/arch/arm/mmu/setup.c
index 72725840b6..f3e4f6c304 100644
--- a/xen/arch/arm/mmu/setup.c
+++ b/xen/arch/arm/mmu/setup.c
@@ -7,6 +7,7 @@
 
 #include <xen/init.h>
 #include <xen/libfdt/libfdt.h>
+#include <xen/llc-coloring.h>
 #include <xen/sizes.h>
 #include <xen/vmap.h>
 
@@ -15,6 +16,11 @@
 /* Override macros from asm/page.h to make them work with mfn_t */
 #undef mfn_to_virt
 #define mfn_to_virt(mfn) __mfn_to_virt(mfn_x(mfn))
+#undef virt_to_mfn
+#define virt_to_mfn(va) _mfn(__virt_to_mfn(va))
+
+#define virt_to_reloc_virt(virt) \
+    (((vaddr_t)virt) - XEN_VIRT_START + BOOT_RELOC_VIRT_START)
 
 /* Main runtime page tables */
 
@@ -69,6 +75,7 @@ static void __init __maybe_unused build_assertions(void)
     /* 2MB aligned regions */
     BUILD_BUG_ON(XEN_VIRT_START & ~SECOND_MASK);
     BUILD_BUG_ON(FIXMAP_ADDR(0) & ~SECOND_MASK);
+    BUILD_BUG_ON(BOOT_RELOC_VIRT_START & ~SECOND_MASK);
     /* 1GB aligned regions */
 #ifdef CONFIG_ARM_32
     BUILD_BUG_ON(XENHEAP_VIRT_START & ~FIRST_MASK);
@@ -132,7 +139,12 @@ static void __init __maybe_unused build_assertions(void)
 
 lpae_t __init pte_of_xenaddr(vaddr_t va)
 {
-    paddr_t ma = va + phys_offset;
+    paddr_t ma;
+
+    if ( llc_coloring_enabled )
+        ma = virt_to_maddr(virt_to_reloc_virt(va));
+    else
+        ma = va + phys_offset;
 
     return mfn_to_xen_entry(maddr_to_mfn(ma), MT_NORMAL);
 }
@@ -218,9 +230,44 @@ static void xen_pt_enforce_wnx(void)
     flush_xen_tlb_local();
 }
 
+static void __init create_llc_coloring_mappings(void)
+{
+    lpae_t pte;
+    unsigned int i;
+    struct bootmodule *xen_bootmodule = boot_module_find_by_kind(BOOTMOD_XEN);
+    mfn_t mfn = maddr_to_mfn(xen_bootmodule->start);
+
+    for_each_xen_colored_mfn( mfn, i )
+    {
+        pte = mfn_to_xen_entry(mfn, MT_NORMAL);
+        pte.pt.table = 1; /* level 3 mappings always have this bit set */
+        xen_xenmap[i] = pte;
+    }
+
+    for ( i = 0; i < XEN_NR_ENTRIES(2); i++ )
+    {
+        vaddr_t va = BOOT_RELOC_VIRT_START + (i << XEN_PT_LEVEL_SHIFT(2));
+
+        pte = mfn_to_xen_entry(virt_to_mfn(xen_xenmap +
+                                           i * XEN_PT_LPAE_ENTRIES),
+                               MT_NORMAL);
+        pte.pt.table = 1;
+        write_pte(&boot_second[second_table_offset(va)], pte);
+    }
+}
+
 /*
- * Boot-time pagetable setup.
+ * Boot-time pagetable setup with coloring support
  * Changes here may need matching changes in head.S
+ *
+ * The cache coloring support consists of:
+ * - Create colored mapping that conforms to Xen color selection in xen_xenmap[]
+ * - Link the mapping in boot page tables using BOOT_RELOC_VIRT_START as vaddr
+ * - pte_of_xenaddr() takes care of translating addresses to the new space
+ *   during runtime page tables creation
+ * - Relocate xen and update TTBR with the new address in the colored space
+ *   (see switch_ttbr())
+ * - Protect the new space
  */
 void __init setup_pagetables(unsigned long boot_phys_offset)
 {
@@ -230,6 +277,9 @@ void __init setup_pagetables(unsigned long boot_phys_offset)
 
     phys_offset = boot_phys_offset;
 
+    if ( llc_coloring_enabled )
+        create_llc_coloring_mappings();
+
     arch_setup_page_tables();
 
 #ifdef CONFIG_ARM_64
@@ -257,13 +307,7 @@ void __init setup_pagetables(unsigned long boot_phys_offset)
             break;
         pte = pte_of_xenaddr(va);
         pte.pt.table = 1; /* third level mappings always have this bit set */
-        if ( is_kernel_text(va) || is_kernel_inittext(va) )
-        {
-            pte.pt.xn = 0;
-            pte.pt.ro = 1;
-        }
-        if ( is_kernel_rodata(va) )
-            pte.pt.ro = 1;
+        pte.pt.xn = 0; /* Permissions will be enforced later. Allow execution */
         xen_xenmap[i] = pte;
     }
 
@@ -289,8 +333,43 @@ void __init setup_pagetables(unsigned long boot_phys_offset)
     ttbr = (uintptr_t) cpu0_pgtable + phys_offset;
 #endif
 
+    if ( llc_coloring_enabled )
+        ttbr = virt_to_maddr(virt_to_reloc_virt(THIS_CPU_PGTABLE));
+
     switch_ttbr(ttbr);
 
+    /* Protect Xen */
+    for ( i = 0; i < XEN_NR_ENTRIES(3); i++ )
+    {
+        vaddr_t va = XEN_VIRT_START + (i << PAGE_SHIFT);
+        lpae_t *entry = xen_xenmap + i;
+
+        if ( !is_kernel(va) )
+            break;
+
+        pte = read_atomic(entry);
+
+        if ( is_kernel_text(va) || is_kernel_inittext(va) )
+        {
+            pte.pt.xn = 0;
+            pte.pt.ro = 1;
+        } else if ( is_kernel_rodata(va) ) {
+            pte.pt.ro = 1;
+            pte.pt.xn = 1;
+        } else {
+            pte.pt.xn = 1;
+            pte.pt.ro = 0;
+        }
+
+        write_pte(entry, pte);
+    }
+
+    /*
+     * We modified live page-tables. Ensure the TBLs are invalidated
+     * before setting enforcing the WnX permissions.
+     */
+    flush_xen_tlb_local();
+
     xen_pt_enforce_wnx();
 
 #ifdef CONFIG_ARM_32
diff --git a/xen/arch/arm/setup.c b/xen/arch/arm/setup.c
index 28f4761705..64a449f78d 100644
--- a/xen/arch/arm/setup.c
+++ b/xen/arch/arm/setup.c
@@ -816,8 +816,6 @@ void asmlinkage __init start_xen(unsigned long boot_phys_offset,
     /* Initialize traps early allow us to get backtrace when an error occurred */
     init_traps();
 
-    setup_pagetables(boot_phys_offset);
-
     smp_clear_cpu_maps();
 
     device_tree_flattened = early_fdt_map(fdt_paddr);
@@ -841,6 +839,9 @@ void asmlinkage __init start_xen(unsigned long boot_phys_offset,
 
     llc_coloring_init();
 
+    setup_pagetables(boot_phys_offset);
+    device_tree_flattened = early_fdt_map(fdt_paddr);
+
     setup_mm();
 
     /* Parse the ACPI tables for possible boot-time configuration */
diff --git a/xen/common/llc-coloring.c b/xen/common/llc-coloring.c
index dace881b55..c0c4ce47bf 100644
--- a/xen/common/llc-coloring.c
+++ b/xen/common/llc-coloring.c
@@ -29,6 +29,8 @@ static unsigned int __ro_after_init xen_num_colors;
 
 #define mfn_color_mask              (max_nr_colors - 1)
 #define mfn_to_color(mfn)           (mfn_x(mfn) & mfn_color_mask)
+#define mfn_set_color(mfn, color)   (_mfn((mfn_x(mfn) & ~mfn_color_mask) | \
+                                     (color)))
 
 /*
  * Parse the coloring configuration given in the buf string, following the
@@ -316,6 +318,27 @@ unsigned int get_max_nr_llc_colors(void)
     return max_nr_colors;
 }
 
+paddr_t __init xen_colored_map_size(void)
+{
+    return ROUNDUP((_end - _start) * max_nr_colors, XEN_PADDR_ALIGN);
+}
+
+mfn_t __init xen_colored_mfn(mfn_t mfn)
+{
+    unsigned int i, color = mfn_to_color(mfn);
+
+    for( i = 0; i < xen_num_colors; i++ )
+    {
+        if ( color == xen_colors[i] )
+            return mfn;
+        else if ( color < xen_colors[i] )
+            return mfn_set_color(mfn, xen_colors[i]);
+    }
+
+    /* Jump to next color space (max_nr_colors mfns) and use the first color */
+    return mfn_set_color(mfn_add(mfn, max_nr_colors), xen_colors[0]);
+}
+
 /*
  * Local variables:
  * mode: C
diff --git a/xen/include/xen/llc-coloring.h b/xen/include/xen/llc-coloring.h
index b96a7134ed..5cb560d75d 100644
--- a/xen/include/xen/llc-coloring.h
+++ b/xen/include/xen/llc-coloring.h
@@ -24,6 +24,17 @@ static inline void domain_llc_coloring_free(struct domain *d) {}
 static inline void domain_dump_llc_colors(const struct domain *d) {}
 #endif
 
+/**
+ * Iterate over each Xen mfn in the colored space.
+ * @mfn:    the current mfn. The first non colored mfn must be provided as the
+ *          starting point.
+ * @i:      loop index.
+ */
+#define for_each_xen_colored_mfn(mfn, i)        \
+    for ( i = 0, mfn = xen_colored_mfn(mfn);    \
+          i < (_end - _start) >> PAGE_SHIFT;    \
+          i++, mfn = xen_colored_mfn(mfn_add(mfn, 1)) )
+
 unsigned int get_llc_way_size(void);
 void arch_llc_coloring_init(void);
 int dom0_set_llc_colors(struct domain *d);
@@ -35,6 +46,9 @@ struct page_info;
 unsigned int page_to_llc_color(const struct page_info *pg);
 unsigned int get_max_nr_llc_colors(void);
 
+paddr_t xen_colored_map_size(void);
+mfn_t xen_colored_mfn(mfn_t mfn);
+
 #endif /* __COLORING_H__ */
 
 /*
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Mon Jan 29 17:19:36 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 29 Jan 2024 17:19:36 +0000
Received: from list by lists.xenproject.org with outflank-mailman.673076.1047350 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUVIF-0000qU-LB; Mon, 29 Jan 2024 17:19:35 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 673076.1047350; Mon, 29 Jan 2024 17:19:35 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUVIF-0000ni-1t; Mon, 29 Jan 2024 17:19:35 +0000
Received: by outflank-mailman (input) for mailman id 673076;
 Mon, 29 Jan 2024 17:19:32 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=Vh+I=JH=minervasys.tech=carlo.nonato@srs-se1.protection.inumbo.net>)
 id 1rUVIC-0005vY-2e
 for xen-devel@lists.xenproject.org; Mon, 29 Jan 2024 17:19:32 +0000
Received: from mail-ed1-x529.google.com (mail-ed1-x529.google.com
 [2a00:1450:4864:20::529])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 9072ee54-beca-11ee-8a43-1f161083a0e0;
 Mon, 29 Jan 2024 18:19:31 +0100 (CET)
Received: by mail-ed1-x529.google.com with SMTP id
 4fb4d7f45d1cf-55eed368b0bso2594684a12.0
 for <xen-devel@lists.xenproject.org>; Mon, 29 Jan 2024 09:19:31 -0800 (PST)
Received: from carlo-ubuntu.mo54.unimo.it (nonato.mo54.unimo.it.
 [155.185.85.8]) by smtp.gmail.com with ESMTPSA id
 eo15-20020a056402530f00b005598ec568dbsm3970494edb.59.2024.01.29.09.19.29
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 29 Jan 2024 09:19:30 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 9072ee54-beca-11ee-8a43-1f161083a0e0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=minervasys-tech.20230601.gappssmtp.com; s=20230601; t=1706548770; x=1707153570; darn=lists.xenproject.org;
        h=content-transfer-encoding:mime-version:references:in-reply-to
         :message-id:date:subject:cc:to:from:from:to:cc:subject:date
         :message-id:reply-to;
        bh=U/xUYJDHb6Zn3w9TBBig7WhAk/AOSiMp9RlKr6dgP2E=;
        b=WBY8nigApNSmOxzD+7scbd3868YkFxnn8b7pwhrODPFiLU07cxK5R0mkNXXZfMURlM
         ZD4IJ6yTlCx3yBf2gjCDq9oGUfbUVkSAni1hka/qVnz9kIGHGgOtkOixeolk5TvTwBHY
         h7raKAAVDR2rjvDrXxKndL5y32pZWd97YirxKo+V2r9dMdT2519P6BL6jyjIcmRZLDSb
         CGyXv80wZfSUBvw920ZGYDLkSDu/woAUvJKxywCkQ5fwB5BnFgsg/fseS8MIU7wwmog4
         qbix9sCs4VjwTkBrl3jkg6jvPJV7j9hNtUuRSDPrlCa1Jdk+8+2eZHChnw3a3wA9epIS
         lpQA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706548770; x=1707153570;
        h=content-transfer-encoding:mime-version:references:in-reply-to
         :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to;
        bh=U/xUYJDHb6Zn3w9TBBig7WhAk/AOSiMp9RlKr6dgP2E=;
        b=bOIs7Jz2UfenoToX3HFYiTacoeegj/05+eksfmChY6KKcaQ9xBzIwf2KLFAxREH23Z
         GVrdVHx06M/3uC/I1vvOoQO6LU5Yf+PsdGtepvmFU6L5NqB1WGrFUHGC9+7OGqpb668F
         TYXtg8e5eHTnM9ePCNRPI/Pp4b6dcjo6wJYgOEaXQB+VIob7QBlOJyV+A9JQCtReoB6N
         P9efU2LGhObA/KDG5jKsxNBCWFdnmwE1AqLEHkujXcgWdf6rj67pBExVqsaM/N3OqIAS
         TfnFnLCfWtqsxZlyqT851dNDby+zerEu68na53R9eJiW0osgNi0nqcTrJoMRsAIgQoHj
         qLjQ==
X-Gm-Message-State: AOJu0YzhtG3xDpP3w8P14eZOts26G7Gpr3h9SjvIXH0hYbKuHdO+doMT
	s0B8yCuKwEBRUMUQdqs0rma64EPnkilY7Kezn1AviV8yE6vUGHLdRKFHFRNdttc21G3XWgI6Oqp
	Cp6Y=
X-Google-Smtp-Source: AGHT+IFfyqAJQ8sAINSHdQQK6qqpoH3R0bcyfxPSeaYcI3S/L5NM69tIPus/nQPn5TvAizkT+NKrlg==
X-Received: by 2002:a50:ec8d:0:b0:55f:1da7:62f6 with SMTP id e13-20020a50ec8d000000b0055f1da762f6mr1602730edr.13.1706548770565;
        Mon, 29 Jan 2024 09:19:30 -0800 (PST)
From: Carlo Nonato <carlo.nonato@minervasys.tech>
To: xen-devel@lists.xenproject.org
Cc: andrea.bastoni@minervasys.tech,
	Carlo Nonato <carlo.nonato@minervasys.tech>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	George Dunlap <george.dunlap@citrix.com>,
	Jan Beulich <jbeulich@suse.com>,
	Julien Grall <julien@xen.org>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Wei Liu <wl@xen.org>
Subject: [PATCH v6 15/15] support: add cache coloring arm64 experimental feature
Date: Mon, 29 Jan 2024 18:18:11 +0100
Message-Id: <20240129171811.21382-16-carlo.nonato@minervasys.tech>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20240129171811.21382-1-carlo.nonato@minervasys.tech>
References: <20240129171811.21382-1-carlo.nonato@minervasys.tech>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Signed-off-by: Carlo Nonato <carlo.nonato@minervasys.tech>
---
v6:
- new patch
---
 SUPPORT.md | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/SUPPORT.md b/SUPPORT.md
index a90d1108c9..f94569c862 100644
--- a/SUPPORT.md
+++ b/SUPPORT.md
@@ -363,6 +363,13 @@ by maintaining multiple physical to machine (p2m) memory mappings.
     Status, x86 HVM: Tech Preview
     Status, ARM: Tech Preview
 
+### Cache coloring
+
+Allows to reserve Last Level Cache (LLC) partitions for Dom0, DomUs and Xen
+itself.
+
+    Status, Arm64: Experimental
+
 ## Resource Management
 
 ### CPU Pools
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Mon Jan 29 17:20:17 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 29 Jan 2024 17:20:17 +0000
Received: from list by lists.xenproject.org with outflank-mailman.673077.1047376 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUVIv-000667-A9; Mon, 29 Jan 2024 17:20:17 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 673077.1047376; Mon, 29 Jan 2024 17:20:17 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUVIv-00065x-7R; Mon, 29 Jan 2024 17:20:17 +0000
Received: by outflank-mailman (input) for mailman id 673077;
 Mon, 29 Jan 2024 17:20:15 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=rx5v=JH=suse.de=farosas@srs-se1.protection.inumbo.net>)
 id 1rUVIt-00060i-H6
 for xen-devel@lists.xenproject.org; Mon, 29 Jan 2024 17:20:15 +0000
Received: from smtp-out1.suse.de (smtp-out1.suse.de [195.135.223.130])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id a9ae3570-beca-11ee-8a43-1f161083a0e0;
 Mon, 29 Jan 2024 18:20:13 +0100 (CET)
Received: from imap1.dmz-prg2.suse.org (imap1.dmz-prg2.suse.org
 [IPv6:2a07:de40:b281:104:10:150:64:97])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
 (No client certificate requested)
 by smtp-out1.suse.de (Postfix) with ESMTPS id 806A721F92;
 Mon, 29 Jan 2024 17:20:12 +0000 (UTC)
Received: from imap1.dmz-prg2.suse.org (localhost [127.0.0.1])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
 (No client certificate requested)
 by imap1.dmz-prg2.suse.org (Postfix) with ESMTPS id BDA5313647;
 Mon, 29 Jan 2024 17:20:11 +0000 (UTC)
Received: from dovecot-director2.suse.de ([2a07:de40:b281:106:10:150:64:167])
 by imap1.dmz-prg2.suse.org with ESMTPSA id hRlBLkvet2VxYAAAD6G6ig
 (envelope-from <farosas@suse.de>); Mon, 29 Jan 2024 17:20:11 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: a9ae3570-beca-11ee-8a43-1f161083a0e0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa;
	t=1706548812; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:content-type:content-type:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=6hJMzhBEMCKpgRG4wxS8YBfobz37mSA/+BPbvKdU2Cs=;
	b=EzeWOlq9VkVrwwH9GXp4K8ejxz2nkDG+xFDKopp/2Z/HdEXm+JF+FMOFCZpltwlG2DPrK6
	QjSeMqdDJtqdRJfEWeR0YC2iVb8dP6eSHjrYiYg31MnxcnjV3j58FuQvKWDdWGLDiGx0w5
	NPrE7dM9E4wqNPscMMJdgkg5CtHYsFQ=
DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de;
	s=susede2_ed25519; t=1706548812;
	h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:content-type:content-type:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=6hJMzhBEMCKpgRG4wxS8YBfobz37mSA/+BPbvKdU2Cs=;
	b=HxUJGU4k19XN2tMk8ujL7WdjtgWi0jOESt8JFbQVTXJivzIUv7TyGvRNR6rG4/848s44FS
	HA/zBFkYs069aYBw==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa;
	t=1706548812; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:content-type:content-type:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=6hJMzhBEMCKpgRG4wxS8YBfobz37mSA/+BPbvKdU2Cs=;
	b=EzeWOlq9VkVrwwH9GXp4K8ejxz2nkDG+xFDKopp/2Z/HdEXm+JF+FMOFCZpltwlG2DPrK6
	QjSeMqdDJtqdRJfEWeR0YC2iVb8dP6eSHjrYiYg31MnxcnjV3j58FuQvKWDdWGLDiGx0w5
	NPrE7dM9E4wqNPscMMJdgkg5CtHYsFQ=
DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de;
	s=susede2_ed25519; t=1706548812;
	h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:content-type:content-type:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=6hJMzhBEMCKpgRG4wxS8YBfobz37mSA/+BPbvKdU2Cs=;
	b=HxUJGU4k19XN2tMk8ujL7WdjtgWi0jOESt8JFbQVTXJivzIUv7TyGvRNR6rG4/848s44FS
	HA/zBFkYs069aYBw==
From: Fabiano Rosas <farosas@suse.de>
To: Philippe =?utf-8?Q?Mathieu-Daud=C3=A9?= <philmd@linaro.org>,
 qemu-devel@nongnu.org
Cc: qemu-riscv@nongnu.org, qemu-s390x@nongnu.org, Paolo Bonzini
 <pbonzini@redhat.com>, kvm@vger.kernel.org, qemu-ppc@nongnu.org,
 qemu-arm@nongnu.org, Richard Henderson <richard.henderson@linaro.org>,
 Philippe =?utf-8?Q?Mathieu-Daud=C3=A9?= <philmd@linaro.org>, Zhao Liu
 <zhao1.liu@intel.com>, Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>,
 "Michael S. Tsirkin" <mst@redhat.com>, Marcel Apfelbaum
 <marcel.apfelbaum@gmail.com>, =?utf-8?Q?C=C3=A9dric?= Le Goater
 <clg@kaod.org>, Nicholas
 Piggin <npiggin@gmail.com>, =?utf-8?B?RnLDqWTDqXJpYw==?= Barrat
 <fbarrat@linux.ibm.com>, Alex
 =?utf-8?Q?Benn=C3=A9e?= <alex.bennee@linaro.org>, Viresh Kumar
 <viresh.kumar@linaro.org>,
 mzamazal@redhat.com, Stefano Stabellini <sstabellini@kernel.org>, Anthony
 Perard <anthony.perard@citrix.com>, Paul Durrant <paul@xen.org>, Peter Xu
 <peterx@redhat.com>, Peter Maydell <peter.maydell@linaro.org>, Cameron
 Esfahani <dirty@apple.com>, Roman Bolshakov <rbolshakov@ddn.com>, Laurent
 Vivier <laurent@vivier.eu>, Daniel Henrique Barboza
 <danielhb413@gmail.com>, Palmer Dabbelt <palmer@dabbelt.com>, Alistair
 Francis <alistair.francis@wdc.com>, Bin Meng <bin.meng@windriver.com>,
 Weiwei Li <liwei1518@gmail.com>, Liu Zhiwei
 <zhiwei_liu@linux.alibaba.com>, xen-devel@lists.xenproject.org
Subject: Re: [PATCH v3 01/29] bulk: Access existing variables initialized to
 &S->F when available
In-Reply-To: <20240129164514.73104-2-philmd@linaro.org>
References: <20240129164514.73104-1-philmd@linaro.org>
 <20240129164514.73104-2-philmd@linaro.org>
Date: Mon, 29 Jan 2024 14:20:09 -0300
Message-ID: <875xzcoy46.fsf@suse.de>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
X-Spam-Level: 
Authentication-Results: smtp-out1.suse.de;
	dkim=pass header.d=suse.de header.s=susede2_rsa header.b=EzeWOlq9;
	dkim=pass header.d=suse.de header.s=susede2_ed25519 header.b=HxUJGU4k
X-Rspamd-Server: rspamd2.dmz-prg2.suse.org
X-Spamd-Result: default: False [-3.01 / 50.00];
	 RCVD_VIA_SMTP_AUTH(0.00)[];
	 SPAMHAUS_XBL(0.00)[2a07:de40:b281:104:10:150:64:97:from];
	 TO_DN_SOME(0.00)[];
	 R_RATELIMIT(0.00)[to_ip_from(RLur6zqgge5zak3uenq87ipfaa)];
	 RCVD_COUNT_THREE(0.00)[3];
	 DKIM_TRACE(0.00)[suse.de:+];
	 MX_GOOD(-0.01)[];
	 NEURAL_HAM_SHORT(-0.20)[-1.000];
	 FROM_EQ_ENVFROM(0.00)[];
	 MIME_TRACE(0.00)[0:+];
	 MID_RHS_MATCH_FROM(0.00)[];
	 BAYES_HAM(-3.00)[100.00%];
	 ARC_NA(0.00)[];
	 R_DKIM_ALLOW(-0.20)[suse.de:s=susede2_rsa,suse.de:s=susede2_ed25519];
	 FROM_HAS_DN(0.00)[];
	 FREEMAIL_ENVRCPT(0.00)[gmail.com];
	 TO_MATCH_ENVRCPT_ALL(0.00)[];
	 TAGGED_RCPT(0.00)[];
	 MIME_GOOD(-0.10)[text/plain];
	 NEURAL_HAM_LONG(-1.00)[-1.000];
	 DKIM_SIGNED(0.00)[suse.de:s=susede2_rsa,suse.de:s=susede2_ed25519];
	 RCPT_COUNT_TWELVE(0.00)[35];
	 DBL_BLOCKED_OPENRESOLVER(0.00)[intel.com:email,linaro.org:email,suse.de:dkim,suse.de:email];
	 FUZZY_BLOCKED(0.00)[rspamd.com];
	 FREEMAIL_CC(0.00)[nongnu.org,redhat.com,vger.kernel.org,linaro.org,intel.com,ilande.co.uk,gmail.com,kaod.org,linux.ibm.com,kernel.org,citrix.com,xen.org,apple.com,ddn.com,vivier.eu,dabbelt.com,wdc.com,windriver.com,linux.alibaba.com,lists.xenproject.org];
	 RCVD_TLS_ALL(0.00)[];
	 SUSPICIOUS_RECIPS(1.50)[]
X-Spam-Score: -3.01
X-Rspamd-Queue-Id: 806A721F92
X-Spam-Flag: NO

Philippe Mathieu-Daud=C3=A9 <philmd@linaro.org> writes:

> When a variable is initialized to &struct->field, use it
> in place. Rationale: while this makes the code more concise,
> this also helps static analyzers.
>
> Mechanical change using the following Coccinelle spatch script:
>
>  @@
>  type S, F;
>  identifier s, m, v;
>  @@
>       S *s;
>       ...
>       F *v =3D &s->m;
>       <+...
>  -    &s->m
>  +    v
>       ...+>
>
> Inspired-by: Zhao Liu <zhao1.liu@intel.com>
> Signed-off-by: Philippe Mathieu-Daud=C3=A9 <philmd@linaro.org>

Acked-by: Fabiano Rosas <farosas@suse.de>

> ---
>  hw/display/ati.c              |  2 +-
>  hw/misc/macio/pmu.c           |  2 +-
>  hw/misc/pvpanic-pci.c         |  2 +-
>  hw/pci-bridge/cxl_root_port.c |  2 +-
>  hw/ppc/pnv.c                  | 20 ++++++++++----------
>  hw/virtio/vhost-user-gpio.c   |  8 ++++----
>  hw/virtio/vhost-user-scmi.c   |  6 +++---
>  hw/virtio/virtio-pci.c        |  2 +-
>  hw/xen/xen_pt.c               |  6 +++---
>  migration/multifd-zlib.c      |  2 +-
>  target/arm/cpu.c              |  4 ++--
>  target/arm/kvm.c              |  2 +-
>  target/arm/machine.c          |  6 +++---
>  target/i386/hvf/x86hvf.c      |  2 +-
>  target/m68k/helper.c          |  2 +-
>  target/ppc/kvm.c              |  8 ++++----
>  target/riscv/cpu_helper.c     |  2 +-
>  17 files changed, 39 insertions(+), 39 deletions(-)
>
> diff --git a/hw/display/ati.c b/hw/display/ati.c
> index 569b8f6165..8d2501bd82 100644
> --- a/hw/display/ati.c
> +++ b/hw/display/ati.c
> @@ -991,7 +991,7 @@ static void ati_vga_realize(PCIDevice *dev, Error **e=
rrp)
>      }
>      vga_init(vga, OBJECT(s), pci_address_space(dev),
>               pci_address_space_io(dev), true);
> -    vga->con =3D graphic_console_init(DEVICE(s), 0, s->vga.hw_ops, &s->v=
ga);
> +    vga->con =3D graphic_console_init(DEVICE(s), 0, s->vga.hw_ops, vga);
>      if (s->cursor_guest_mode) {
>          vga->cursor_invalidate =3D ati_cursor_invalidate;
>          vga->cursor_draw_line =3D ati_cursor_draw_line;
> diff --git a/hw/misc/macio/pmu.c b/hw/misc/macio/pmu.c
> index e9a90da88f..7fe1c4e517 100644
> --- a/hw/misc/macio/pmu.c
> +++ b/hw/misc/macio/pmu.c
> @@ -737,7 +737,7 @@ static void pmu_realize(DeviceState *dev, Error **err=
p)
>      timer_mod(s->one_sec_timer, s->one_sec_target);
>=20=20
>      if (s->has_adb) {
> -        qbus_init(&s->adb_bus, sizeof(s->adb_bus), TYPE_ADB_BUS,
> +        qbus_init(adb_bus, sizeof(s->adb_bus), TYPE_ADB_BUS,
>                    dev, "adb.0");
>          adb_register_autopoll_callback(adb_bus, pmu_adb_poll, s);
>      }
> diff --git a/hw/misc/pvpanic-pci.c b/hw/misc/pvpanic-pci.c
> index c01e4ce864..83be95d0d2 100644
> --- a/hw/misc/pvpanic-pci.c
> +++ b/hw/misc/pvpanic-pci.c
> @@ -48,7 +48,7 @@ static void pvpanic_pci_realizefn(PCIDevice *dev, Error=
 **errp)
>      PVPanicPCIState *s =3D PVPANIC_PCI_DEVICE(dev);
>      PVPanicState *ps =3D &s->pvpanic;
>=20=20
> -    pvpanic_setup_io(&s->pvpanic, DEVICE(s), 2);
> +    pvpanic_setup_io(ps, DEVICE(s), 2);
>=20=20
>      pci_register_bar(dev, 0, PCI_BASE_ADDRESS_SPACE_MEMORY, &ps->mr);
>  }
> diff --git a/hw/pci-bridge/cxl_root_port.c b/hw/pci-bridge/cxl_root_port.c
> index 8f97697631..2cf2f7bf5f 100644
> --- a/hw/pci-bridge/cxl_root_port.c
> +++ b/hw/pci-bridge/cxl_root_port.c
> @@ -175,7 +175,7 @@ static void cxl_rp_realize(DeviceState *dev, Error **=
errp)
>=20=20
>      cxl_cstate->dvsec_offset =3D CXL_ROOT_PORT_DVSEC_OFFSET;
>      cxl_cstate->pdev =3D pci_dev;
> -    build_dvsecs(&crp->cxl_cstate);
> +    build_dvsecs(cxl_cstate);
>=20=20
>      cxl_component_register_block_init(OBJECT(pci_dev), cxl_cstate,
>                                        TYPE_CXL_ROOT_PORT);
> diff --git a/hw/ppc/pnv.c b/hw/ppc/pnv.c
> index 0297871bdd..202a569e27 100644
> --- a/hw/ppc/pnv.c
> +++ b/hw/ppc/pnv.c
> @@ -1257,11 +1257,11 @@ static void pnv_chip_power8_realize(DeviceState *=
dev, Error **errp)
>      }
>=20=20
>      /* Processor Service Interface (PSI) Host Bridge */
> -    object_property_set_int(OBJECT(&chip8->psi), "bar", PNV_PSIHB_BASE(c=
hip),
> +    object_property_set_int(OBJECT(psi8), "bar", PNV_PSIHB_BASE(chip),
>                              &error_fatal);
> -    object_property_set_link(OBJECT(&chip8->psi), ICS_PROP_XICS,
> +    object_property_set_link(OBJECT(psi8), ICS_PROP_XICS,
>                               OBJECT(chip8->xics), &error_abort);
> -    if (!qdev_realize(DEVICE(&chip8->psi), NULL, errp)) {
> +    if (!qdev_realize(DEVICE(psi8), NULL, errp)) {
>          return;
>      }
>      pnv_xscom_add_subregion(chip, PNV_XSCOM_PSIHB_BASE,
> @@ -1292,7 +1292,7 @@ static void pnv_chip_power8_realize(DeviceState *de=
v, Error **errp)
>      }
>      pnv_xscom_add_subregion(chip, PNV_XSCOM_OCC_BASE, &chip8->occ.xscom_=
regs);
>      qdev_connect_gpio_out(DEVICE(&chip8->occ), 0,
> -                          qdev_get_gpio_in(DEVICE(&chip8->psi), PSIHB_IR=
Q_OCC));
> +                          qdev_get_gpio_in(DEVICE(psi8), PSIHB_IRQ_OCC));
>=20=20
>      /* OCC SRAM model */
>      memory_region_add_subregion(get_system_memory(), PNV_OCC_SENSOR_BASE=
(chip),
> @@ -1543,12 +1543,12 @@ static void pnv_chip_power9_realize(DeviceState *=
dev, Error **errp)
>                              &chip9->xive.xscom_regs);
>=20=20
>      /* Processor Service Interface (PSI) Host Bridge */
> -    object_property_set_int(OBJECT(&chip9->psi), "bar", PNV9_PSIHB_BASE(=
chip),
> +    object_property_set_int(OBJECT(psi9), "bar", PNV9_PSIHB_BASE(chip),
>                              &error_fatal);
>      /* This is the only device with 4k ESB pages */
> -    object_property_set_int(OBJECT(&chip9->psi), "shift", XIVE_ESB_4K,
> +    object_property_set_int(OBJECT(psi9), "shift", XIVE_ESB_4K,
>                              &error_fatal);
> -    if (!qdev_realize(DEVICE(&chip9->psi), NULL, errp)) {
> +    if (!qdev_realize(DEVICE(psi9), NULL, errp)) {
>          return;
>      }
>      pnv_xscom_add_subregion(chip, PNV9_XSCOM_PSIHB_BASE,
> @@ -1571,7 +1571,7 @@ static void pnv_chip_power9_realize(DeviceState *de=
v, Error **errp)
>      }
>      pnv_xscom_add_subregion(chip, PNV9_XSCOM_OCC_BASE, &chip9->occ.xscom=
_regs);
>      qdev_connect_gpio_out(DEVICE(&chip9->occ), 0, qdev_get_gpio_in(
> -                              DEVICE(&chip9->psi), PSIHB9_IRQ_OCC));
> +                              DEVICE(psi9), PSIHB9_IRQ_OCC));
>=20=20
>      /* OCC SRAM model */
>      memory_region_add_subregion(get_system_memory(), PNV9_OCC_SENSOR_BAS=
E(chip),
> @@ -1586,7 +1586,7 @@ static void pnv_chip_power9_realize(DeviceState *de=
v, Error **errp)
>      pnv_xscom_add_subregion(chip, PNV9_XSCOM_SBE_MBOX_BASE,
>                              &chip9->sbe.xscom_mbox_regs);
>      qdev_connect_gpio_out(DEVICE(&chip9->sbe), 0, qdev_get_gpio_in(
> -                              DEVICE(&chip9->psi), PSIHB9_IRQ_PSU));
> +                              DEVICE(psi9), PSIHB9_IRQ_PSU));
>=20=20
>      /* HOMER */
>      object_property_set_link(OBJECT(&chip9->homer), "chip", OBJECT(chip),
> @@ -1627,7 +1627,7 @@ static void pnv_chip_power9_realize(DeviceState *de=
v, Error **errp)
>                                          PNV9_XSCOM_I2CM_SIZE,
>                                  &chip9->i2c[i].xscom_regs);
>          qdev_connect_gpio_out(DEVICE(&chip9->i2c[i]), 0,
> -                              qdev_get_gpio_in(DEVICE(&chip9->psi),
> +                              qdev_get_gpio_in(DEVICE(psi9),
>                                                 PSIHB9_IRQ_SBE_I2C));
>      }
>  }
> diff --git a/hw/virtio/vhost-user-gpio.c b/hw/virtio/vhost-user-gpio.c
> index a83437a5da..6d4e9200ff 100644
> --- a/hw/virtio/vhost-user-gpio.c
> +++ b/hw/virtio/vhost-user-gpio.c
> @@ -79,9 +79,9 @@ static int vu_gpio_start(VirtIODevice *vdev)
>       * set needed for the vhost configuration. The backend may also
>       * apply backend_features when the feature set is sent.
>       */
> -    vhost_ack_features(&gpio->vhost_dev, feature_bits, vdev->guest_featu=
res);
> +    vhost_ack_features(vhost_dev, feature_bits, vdev->guest_features);
>=20=20
> -    ret =3D vhost_dev_start(&gpio->vhost_dev, vdev, false);
> +    ret =3D vhost_dev_start(vhost_dev, vdev, false);
>      if (ret < 0) {
>          error_report("Error starting vhost-user-gpio: %d", ret);
>          goto err_guest_notifiers;
> @@ -94,7 +94,7 @@ static int vu_gpio_start(VirtIODevice *vdev)
>       * enabling/disabling irqfd.
>       */
>      for (i =3D 0; i < gpio->vhost_dev.nvqs; i++) {
> -        vhost_virtqueue_mask(&gpio->vhost_dev, vdev, i, false);
> +        vhost_virtqueue_mask(vhost_dev, vdev, i, false);
>      }
>=20=20
>      /*
> @@ -114,7 +114,7 @@ static int vu_gpio_start(VirtIODevice *vdev)
>  err_guest_notifiers:
>      k->set_guest_notifiers(qbus->parent, gpio->vhost_dev.nvqs, false);
>  err_host_notifiers:
> -    vhost_dev_disable_notifiers(&gpio->vhost_dev, vdev);
> +    vhost_dev_disable_notifiers(vhost_dev, vdev);
>=20=20
>      return ret;
>  }
> diff --git a/hw/virtio/vhost-user-scmi.c b/hw/virtio/vhost-user-scmi.c
> index 918bb7dcf7..300847e672 100644
> --- a/hw/virtio/vhost-user-scmi.c
> +++ b/hw/virtio/vhost-user-scmi.c
> @@ -56,9 +56,9 @@ static int vu_scmi_start(VirtIODevice *vdev)
>          goto err_host_notifiers;
>      }
>=20=20
> -    vhost_ack_features(&scmi->vhost_dev, feature_bits, vdev->guest_featu=
res);
> +    vhost_ack_features(vhost_dev, feature_bits, vdev->guest_features);
>=20=20
> -    ret =3D vhost_dev_start(&scmi->vhost_dev, vdev, true);
> +    ret =3D vhost_dev_start(vhost_dev, vdev, true);
>      if (ret < 0) {
>          error_report("Error starting vhost-user-scmi: %d", ret);
>          goto err_guest_notifiers;
> @@ -71,7 +71,7 @@ static int vu_scmi_start(VirtIODevice *vdev)
>       * enabling/disabling irqfd.
>       */
>      for (i =3D 0; i < scmi->vhost_dev.nvqs; i++) {
> -        vhost_virtqueue_mask(&scmi->vhost_dev, vdev, i, false);
> +        vhost_virtqueue_mask(vhost_dev, vdev, i, false);
>      }
>      return 0;
>=20=20
> diff --git a/hw/virtio/virtio-pci.c b/hw/virtio/virtio-pci.c
> index 1a7039fb0c..cb6940fc0e 100644
> --- a/hw/virtio/virtio-pci.c
> +++ b/hw/virtio/virtio-pci.c
> @@ -1929,7 +1929,7 @@ static void virtio_pci_device_plugged(DeviceState *=
d, Error **errp)
>      bool modern_pio =3D proxy->flags & VIRTIO_PCI_FLAG_MODERN_PIO_NOTIFY;
>      uint8_t *config;
>      uint32_t size;
> -    VirtIODevice *vdev =3D virtio_bus_get_device(&proxy->bus);
> +    VirtIODevice *vdev =3D virtio_bus_get_device(bus);
>=20=20
>      /*
>       * Virtio capabilities present without
> diff --git a/hw/xen/xen_pt.c b/hw/xen/xen_pt.c
> index 36e6f93c37..10ddf6bc91 100644
> --- a/hw/xen/xen_pt.c
> +++ b/hw/xen/xen_pt.c
> @@ -710,7 +710,7 @@ static void xen_pt_destroy(PCIDevice *d) {
>      uint8_t intx;
>      int rc;
>=20=20
> -    if (machine_irq && !xen_host_pci_device_closed(&s->real_device)) {
> +    if (machine_irq && !xen_host_pci_device_closed(host_dev)) {
>          intx =3D xen_pt_pci_intx(s);
>          rc =3D xc_domain_unbind_pt_irq(xen_xc, xen_domid, machine_irq,
>                                       PT_IRQ_TYPE_PCI,
> @@ -759,8 +759,8 @@ static void xen_pt_destroy(PCIDevice *d) {
>          memory_listener_unregister(&s->io_listener);
>          s->listener_set =3D false;
>      }
> -    if (!xen_host_pci_device_closed(&s->real_device)) {
> -        xen_host_pci_device_put(&s->real_device);
> +    if (!xen_host_pci_device_closed(host_dev)) {
> +        xen_host_pci_device_put(host_dev);
>      }
>  }
>  /* init */
> diff --git a/migration/multifd-zlib.c b/migration/multifd-zlib.c
> index 37ce48621e..237ee49928 100644
> --- a/migration/multifd-zlib.c
> +++ b/migration/multifd-zlib.c
> @@ -75,7 +75,7 @@ static int zlib_send_setup(MultiFDSendParams *p, Error =
**errp)
>  err_free_zbuff:
>      g_free(z->zbuff);
>  err_deflate_end:
> -    deflateEnd(&z->zs);
> +    deflateEnd(zs);
>  err_free_z:
>      g_free(z);
>      error_setg(errp, "multifd %u: %s", p->id, err_msg);
> diff --git a/target/arm/cpu.c b/target/arm/cpu.c
> index b60e103046..60ab8f3242 100644
> --- a/target/arm/cpu.c
> +++ b/target/arm/cpu.c
> @@ -2087,7 +2087,7 @@ static void arm_cpu_realizefn(DeviceState *dev, Err=
or **errp)
>       * We rely on no XScale CPU having VFP so we can use the same bits i=
n the
>       * TB flags field for VECSTRIDE and XSCALE_CPAR.
>       */
> -    assert(arm_feature(&cpu->env, ARM_FEATURE_AARCH64) ||
> +    assert(arm_feature(env, ARM_FEATURE_AARCH64) ||
>             !cpu_isar_feature(aa32_vfp_simd, cpu) ||
>             !arm_feature(env, ARM_FEATURE_XSCALE));
>=20=20
> @@ -2129,7 +2129,7 @@ static void arm_cpu_realizefn(DeviceState *dev, Err=
or **errp)
>      }
>=20=20
>      if (cpu->cfgend) {
> -        if (arm_feature(&cpu->env, ARM_FEATURE_V7)) {
> +        if (arm_feature(env, ARM_FEATURE_V7)) {
>              cpu->reset_sctlr |=3D SCTLR_EE;
>          } else {
>              cpu->reset_sctlr |=3D SCTLR_B;
> diff --git a/target/arm/kvm.c b/target/arm/kvm.c
> index 81813030a5..ab85d628a8 100644
> --- a/target/arm/kvm.c
> +++ b/target/arm/kvm.c
> @@ -1888,7 +1888,7 @@ int kvm_arch_init_vcpu(CPUState *cs)
>          cpu->psci_version =3D QEMU_PSCI_VERSION_0_2;
>          cpu->kvm_init_features[0] |=3D 1 << KVM_ARM_VCPU_PSCI_0_2;
>      }
> -    if (!arm_feature(&cpu->env, ARM_FEATURE_AARCH64)) {
> +    if (!arm_feature(env, ARM_FEATURE_AARCH64)) {
>          cpu->kvm_init_features[0] |=3D 1 << KVM_ARM_VCPU_EL1_32BIT;
>      }
>      if (!kvm_check_extension(cs->kvm_state, KVM_CAP_ARM_PMU_V3)) {
> diff --git a/target/arm/machine.c b/target/arm/machine.c
> index 9d7dbaea54..b2b39b2475 100644
> --- a/target/arm/machine.c
> +++ b/target/arm/machine.c
> @@ -773,7 +773,7 @@ static int cpu_pre_load(void *opaque)
>      env->irq_line_state =3D UINT32_MAX;
>=20=20
>      if (!kvm_enabled()) {
> -        pmu_op_start(&cpu->env);
> +        pmu_op_start(env);
>      }
>=20=20
>      return 0;
> @@ -871,11 +871,11 @@ static int cpu_post_load(void *opaque, int version_=
id)
>      }
>=20=20
>      if (!kvm_enabled()) {
> -        pmu_op_finish(&cpu->env);
> +        pmu_op_finish(env);
>      }
>=20=20
>      if (tcg_enabled()) {
> -        arm_rebuild_hflags(&cpu->env);
> +        arm_rebuild_hflags(env);
>      }
>=20=20
>      return 0;
> diff --git a/target/i386/hvf/x86hvf.c b/target/i386/hvf/x86hvf.c
> index 3b1ef5f49a..be2c46246e 100644
> --- a/target/i386/hvf/x86hvf.c
> +++ b/target/i386/hvf/x86hvf.c
> @@ -408,7 +408,7 @@ bool hvf_inject_interrupts(CPUState *cs)
>      if (!(env->hflags & HF_INHIBIT_IRQ_MASK) &&
>          (cs->interrupt_request & CPU_INTERRUPT_HARD) &&
>          (env->eflags & IF_MASK) && !(info & VMCS_INTR_VALID)) {
> -        int line =3D cpu_get_pic_interrupt(&x86cpu->env);
> +        int line =3D cpu_get_pic_interrupt(env);
>          cs->interrupt_request &=3D ~CPU_INTERRUPT_HARD;
>          if (line >=3D 0) {
>              wvmcs(cs->accel->fd, VMCS_ENTRY_INTR_INFO, line |
> diff --git a/target/m68k/helper.c b/target/m68k/helper.c
> index 14508dfa11..a812f328a1 100644
> --- a/target/m68k/helper.c
> +++ b/target/m68k/helper.c
> @@ -972,7 +972,7 @@ bool m68k_cpu_tlb_fill(CPUState *cs, vaddr address, i=
nt size,
>          access_type |=3D ACCESS_SUPER;
>      }
>=20=20
> -    ret =3D get_physical_address(&cpu->env, &physical, &prot,
> +    ret =3D get_physical_address(env, &physical, &prot,
>                                 address, access_type, &page_size);
>      if (likely(ret =3D=3D 0)) {
>          tlb_set_page(cs, address & TARGET_PAGE_MASK,
> diff --git a/target/ppc/kvm.c b/target/ppc/kvm.c
> index 26fa9d0575..b95a0b4928 100644
> --- a/target/ppc/kvm.c
> +++ b/target/ppc/kvm.c
> @@ -635,8 +635,8 @@ static int kvm_put_fp(CPUState *cs)
>=20=20
>          for (i =3D 0; i < 32; i++) {
>              uint64_t vsr[2];
> -            uint64_t *fpr =3D cpu_fpr_ptr(&cpu->env, i);
> -            uint64_t *vsrl =3D cpu_vsrl_ptr(&cpu->env, i);
> +            uint64_t *fpr =3D cpu_fpr_ptr(env, i);
> +            uint64_t *vsrl =3D cpu_vsrl_ptr(env, i);
>=20=20
>  #if HOST_BIG_ENDIAN
>              vsr[0] =3D float64_val(*fpr);
> @@ -704,8 +704,8 @@ static int kvm_get_fp(CPUState *cs)
>=20=20
>          for (i =3D 0; i < 32; i++) {
>              uint64_t vsr[2];
> -            uint64_t *fpr =3D cpu_fpr_ptr(&cpu->env, i);
> -            uint64_t *vsrl =3D cpu_vsrl_ptr(&cpu->env, i);
> +            uint64_t *fpr =3D cpu_fpr_ptr(env, i);
> +            uint64_t *vsrl =3D cpu_vsrl_ptr(env, i);
>=20=20
>              reg.addr =3D (uintptr_t) &vsr;
>              reg.id =3D vsx ? KVM_REG_PPC_VSR(i) : KVM_REG_PPC_FPR(i);
> diff --git a/target/riscv/cpu_helper.c b/target/riscv/cpu_helper.c
> index c7cc7eb423..791435d628 100644
> --- a/target/riscv/cpu_helper.c
> +++ b/target/riscv/cpu_helper.c
> @@ -1200,7 +1200,7 @@ hwaddr riscv_cpu_get_phys_page_debug(CPUState *cs, =
vaddr addr)
>      CPURISCVState *env =3D &cpu->env;
>      hwaddr phys_addr;
>      int prot;
> -    int mmu_idx =3D cpu_mmu_index(&cpu->env, false);
> +    int mmu_idx =3D cpu_mmu_index(env, false);
>=20=20
>      if (get_physical_address(env, &phys_addr, &prot, addr, NULL, 0, mmu_=
idx,
>                               true, env->virt_enabled, true)) {


From xen-devel-bounces@lists.xenproject.org Mon Jan 29 19:47:04 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 29 Jan 2024 19:47:04 +0000
Received: from list by lists.xenproject.org with outflank-mailman.673159.1047386 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUXak-0002cO-OE; Mon, 29 Jan 2024 19:46:50 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 673159.1047386; Mon, 29 Jan 2024 19:46:50 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUXak-0002cH-LL; Mon, 29 Jan 2024 19:46:50 +0000
Received: by outflank-mailman (input) for mailman id 673159;
 Mon, 29 Jan 2024 19:46:48 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=D43g=JH=eik.bme.hu=balaton@srs-se1.protection.inumbo.net>)
 id 1rUXai-0002cB-Qe
 for xen-devel@lists.xenproject.org; Mon, 29 Jan 2024 19:46:48 +0000
Received: from zero.eik.bme.hu (zero.eik.bme.hu [152.66.115.2])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 217be44a-bedf-11ee-98f5-efadbce2ee36;
 Mon, 29 Jan 2024 20:46:45 +0100 (CET)
Received: from zero.eik.bme.hu (localhost [127.0.0.1])
 by zero.eik.bme.hu (Postfix) with ESMTP id 9FB514E6012;
 Mon, 29 Jan 2024 20:46:43 +0100 (CET)
Received: from zero.eik.bme.hu ([127.0.0.1])
 by zero.eik.bme.hu (zero.eik.bme.hu [127.0.0.1]) (amavisd-new, port 10028)
 with ESMTP id JX1PHC9kVR1W; Mon, 29 Jan 2024 20:46:41 +0100 (CET)
Received: by zero.eik.bme.hu (Postfix, from userid 432)
 id 99D024E6006; Mon, 29 Jan 2024 20:46:41 +0100 (CET)
Received: from localhost (localhost [127.0.0.1])
 by zero.eik.bme.hu (Postfix) with ESMTP id 966427456B4;
 Mon, 29 Jan 2024 20:46:41 +0100 (CET)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 217be44a-bedf-11ee-98f5-efadbce2ee36
X-Virus-Scanned: amavisd-new at eik.bme.hu
Date: Mon, 29 Jan 2024 20:46:41 +0100 (CET)
From: BALATON Zoltan <balaton@eik.bme.hu>
To: =?ISO-8859-15?Q?Philippe_Mathieu-Daud=E9?= <philmd@linaro.org>
cc: qemu-devel@nongnu.org, qemu-riscv@nongnu.org, qemu-s390x@nongnu.org, 
    Paolo Bonzini <pbonzini@redhat.com>, kvm@vger.kernel.org, 
    qemu-ppc@nongnu.org, qemu-arm@nongnu.org, 
    Richard Henderson <richard.henderson@linaro.org>, 
    Zhao Liu <zhao1.liu@intel.com>, 
    Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>, 
    "Michael S. Tsirkin" <mst@redhat.com>, 
    Marcel Apfelbaum <marcel.apfelbaum@gmail.com>, 
    =?ISO-8859-15?Q?C=E9dric_Le_Goater?= <clg@kaod.org>, 
    Nicholas Piggin <npiggin@gmail.com>, 
    =?ISO-8859-15?Q?Fr=E9d=E9ric_Barrat?= <fbarrat@linux.ibm.com>, 
    =?ISO-8859-15?Q?Alex_Benn=E9e?= <alex.bennee@linaro.org>, 
    Viresh Kumar <viresh.kumar@linaro.org>, mzamazal@redhat.com, 
    Stefano Stabellini <sstabellini@kernel.org>, 
    Anthony Perard <anthony.perard@citrix.com>, Paul Durrant <paul@xen.org>, 
    Peter Xu <peterx@redhat.com>, Fabiano Rosas <farosas@suse.de>, 
    Peter Maydell <peter.maydell@linaro.org>, 
    Cameron Esfahani <dirty@apple.com>, Roman Bolshakov <rbolshakov@ddn.com>, 
    Laurent Vivier <laurent@vivier.eu>, 
    Daniel Henrique Barboza <danielhb413@gmail.com>, 
    Palmer Dabbelt <palmer@dabbelt.com>, 
    Alistair Francis <alistair.francis@wdc.com>, 
    Bin Meng <bin.meng@windriver.com>, Weiwei Li <liwei1518@gmail.com>, 
    Liu Zhiwei <zhiwei_liu@linux.alibaba.com>, xen-devel@lists.xenproject.org
Subject: Re: [PATCH v3 01/29] bulk: Access existing variables initialized to
 &S->F when available
In-Reply-To: <20240129164514.73104-2-philmd@linaro.org>
Message-ID: <fd790685-a98f-9cd5-c117-dac96564a71b@eik.bme.hu>
References: <20240129164514.73104-1-philmd@linaro.org> <20240129164514.73104-2-philmd@linaro.org>
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="3866299591-1985250681-1706557601=:22604"

  This message is in MIME format.  The first part should be readable text,
  while the remaining parts are likely unreadable without MIME-aware tools.

--3866299591-1985250681-1706557601=:22604
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8BIT

On Mon, 29 Jan 2024, Philippe Mathieu-Daudé wrote:
> When a variable is initialized to &struct->field, use it
> in place. Rationale: while this makes the code more concise,
> this also helps static analyzers.
>
> Mechanical change using the following Coccinelle spatch script:
>
> @@
> type S, F;
> identifier s, m, v;
> @@
>      S *s;
>      ...
>      F *v = &s->m;
>      <+...
> -    &s->m
> +    v
>      ...+>
>
> Inspired-by: Zhao Liu <zhao1.liu@intel.com>
> Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
> ---
> hw/display/ati.c              |  2 +-
> hw/misc/macio/pmu.c           |  2 +-
> hw/misc/pvpanic-pci.c         |  2 +-
> hw/pci-bridge/cxl_root_port.c |  2 +-
> hw/ppc/pnv.c                  | 20 ++++++++++----------
> hw/virtio/vhost-user-gpio.c   |  8 ++++----
> hw/virtio/vhost-user-scmi.c   |  6 +++---
> hw/virtio/virtio-pci.c        |  2 +-
> hw/xen/xen_pt.c               |  6 +++---
> migration/multifd-zlib.c      |  2 +-
> target/arm/cpu.c              |  4 ++--
> target/arm/kvm.c              |  2 +-
> target/arm/machine.c          |  6 +++---
> target/i386/hvf/x86hvf.c      |  2 +-
> target/m68k/helper.c          |  2 +-
> target/ppc/kvm.c              |  8 ++++----
> target/riscv/cpu_helper.c     |  2 +-
> 17 files changed, 39 insertions(+), 39 deletions(-)
>
> diff --git a/hw/display/ati.c b/hw/display/ati.c
> index 569b8f6165..8d2501bd82 100644
> --- a/hw/display/ati.c
> +++ b/hw/display/ati.c
> @@ -991,7 +991,7 @@ static void ati_vga_realize(PCIDevice *dev, Error **errp)
>     }
>     vga_init(vga, OBJECT(s), pci_address_space(dev),
>              pci_address_space_io(dev), true);
> -    vga->con = graphic_console_init(DEVICE(s), 0, s->vga.hw_ops, &s->vga);
> +    vga->con = graphic_console_init(DEVICE(s), 0, s->vga.hw_ops, vga);
>     if (s->cursor_guest_mode) {
>         vga->cursor_invalidate = ati_cursor_invalidate;
>         vga->cursor_draw_line = ati_cursor_draw_line;
> diff --git a/hw/misc/macio/pmu.c b/hw/misc/macio/pmu.c
> index e9a90da88f..7fe1c4e517 100644
> --- a/hw/misc/macio/pmu.c
> +++ b/hw/misc/macio/pmu.c
> @@ -737,7 +737,7 @@ static void pmu_realize(DeviceState *dev, Error **errp)
>     timer_mod(s->one_sec_timer, s->one_sec_target);
>
>     if (s->has_adb) {
> -        qbus_init(&s->adb_bus, sizeof(s->adb_bus), TYPE_ADB_BUS,
> +        qbus_init(adb_bus, sizeof(s->adb_bus), TYPE_ADB_BUS,

Probably should change to use sizeof(*adb_bus) too. Although the next line 
is the only place the adb_bus local is used so maybe can drop the local 
and chnage next line to use &s->adb_bus instead.

Regards,
BALATON Zoltan

>                   dev, "adb.0");
>         adb_register_autopoll_callback(adb_bus, pmu_adb_poll, s);
>     }
--3866299591-1985250681-1706557601=:22604--


From xen-devel-bounces@lists.xenproject.org Mon Jan 29 20:34:01 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 29 Jan 2024 20:34:01 +0000
Received: from list by lists.xenproject.org with outflank-mailman.673166.1047396 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUYKJ-00045a-Fe; Mon, 29 Jan 2024 20:33:55 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 673166.1047396; Mon, 29 Jan 2024 20:33:55 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUYKJ-00045T-D9; Mon, 29 Jan 2024 20:33:55 +0000
Received: by outflank-mailman (input) for mailman id 673166;
 Mon, 29 Jan 2024 20:33:54 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rUYKI-00045J-Fy; Mon, 29 Jan 2024 20:33:54 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rUYKI-0001v9-91; Mon, 29 Jan 2024 20:33:54 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rUYKH-0008Te-RP; Mon, 29 Jan 2024 20:33:53 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rUYKH-0003c5-Qt; Mon, 29 Jan 2024 20:33:53 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=74O4fcRPMx8qHP0q6PQ8TjpWMuHARb//pqdRCy7z9ko=; b=qaUYc20VfnATC5tUBe/GOJhAD0
	nu+Grpk9TCN+Kpyjmw0hzqXZ4S2cPKKIaeNatI3+Xh5JD3LdzdSXvPoWNF3XohOlKXdzLeK5u5158
	tlxNiDeEbO9aUiRN0gAAXbd5Oe+4ynx+61rb4mS05gmCSYZ4bN2yjlGSB4SY89bQC0hg=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184520-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [xen-unstable-smoke test] 184520: tolerable all pass - PUSHED
X-Osstest-Failures:
    xen-unstable-smoke:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    xen-unstable-smoke:test-arm64-arm64-xl-xsm:migrate-support-check:fail:nonblocking
    xen-unstable-smoke:test-arm64-arm64-xl-xsm:saverestore-support-check:fail:nonblocking
    xen-unstable-smoke:test-armhf-armhf-xl:migrate-support-check:fail:nonblocking
    xen-unstable-smoke:test-armhf-armhf-xl:saverestore-support-check:fail:nonblocking
X-Osstest-Versions-This:
    xen=4a7e71aa085170f1a13976507c8e248f8715f116
X-Osstest-Versions-That:
    xen=40a74677023a5eb20d7bbc09def37884f80919bd
From: osstest service owner <osstest-admin@xenproject.org>
Date: Mon, 29 Jan 2024 20:33:53 +0000

flight 184520 xen-unstable-smoke real [real]
http://logs.test-lab.xenproject.org/osstest/logs/184520/

Failures :-/ but no regressions.

Tests which did not succeed, but are not blocking:
 test-amd64-amd64-libvirt     15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-xsm      15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-xsm      16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl          15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          16 saverestore-support-check    fail   never pass

version targeted for testing:
 xen                  4a7e71aa085170f1a13976507c8e248f8715f116
baseline version:
 xen                  40a74677023a5eb20d7bbc09def37884f80919bd

Last test of basis   184512  2024-01-29 09:02:10 Z    0 days
Testing same since   184520  2024-01-29 18:00:26 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Roger Pau Monne <roger.pau@citrix.com>
  Roger Pau Monné <roger.pau@citrix.com>

jobs:
 build-arm64-xsm                                              pass    
 build-amd64                                                  pass    
 build-armhf                                                  pass    
 build-amd64-libvirt                                          pass    
 test-armhf-armhf-xl                                          pass    
 test-arm64-arm64-xl-xsm                                      pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64                    pass    
 test-amd64-amd64-libvirt                                     pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Pushing revision :

To xenbits.xen.org:/home/xen/git/xen.git
   40a7467702..4a7e71aa08  4a7e71aa085170f1a13976507c8e248f8715f116 -> smoke


From xen-devel-bounces@lists.xenproject.org Mon Jan 29 21:49:17 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 29 Jan 2024 21:49:17 +0000
Received: from list by lists.xenproject.org with outflank-mailman.673177.1047406 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUZV0-0007q6-MX; Mon, 29 Jan 2024 21:49:02 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 673177.1047406; Mon, 29 Jan 2024 21:49:02 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUZV0-0007pz-IE; Mon, 29 Jan 2024 21:49:02 +0000
Received: by outflank-mailman (input) for mailman id 673177;
 Mon, 29 Jan 2024 21:49:01 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rUZUz-0007pp-C3; Mon, 29 Jan 2024 21:49:01 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rUZUz-0003B8-5H; Mon, 29 Jan 2024 21:49:01 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rUZUy-0002Rs-Or; Mon, 29 Jan 2024 21:49:00 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rUZUy-00027F-OP; Mon, 29 Jan 2024 21:49:00 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=u/nEFeTpm0IUcT36amPBj8IkrmRXFtycUCKmyTR7PQQ=; b=l/bM4KsGJp47dM3AQOxhWBzGVF
	K/YBuMSGLg0L4X05XP60PSDuyod/2cLUtVy67wBK/T/WTgR7cj5WBGNbBzn9bLFP8+adx9oZngLF/
	PzaQgh5B8I11NP0LZR2LLmYITwXkpdt6FN1OTk6NUWxXIJ1yf+i8gXOlTcPoWaYETuFk=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184519-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [ovmf test] 184519: all pass - PUSHED
X-Osstest-Versions-This:
    ovmf=dc3339470166884197e9be5a6b3e7afe13104f1f
X-Osstest-Versions-That:
    ovmf=4c43209a740d4b38094f9495ce85219421a938af
From: osstest service owner <osstest-admin@xenproject.org>
Date: Mon, 29 Jan 2024 21:49:00 +0000

flight 184519 ovmf real [real]
http://logs.test-lab.xenproject.org/osstest/logs/184519/

Perfect :-)
All tests in this flight passed as required
version targeted for testing:
 ovmf                 dc3339470166884197e9be5a6b3e7afe13104f1f
baseline version:
 ovmf                 4c43209a740d4b38094f9495ce85219421a938af

Last test of basis   184498  2024-01-27 19:41:06 Z    2 days
Testing same since   184519  2024-01-29 17:12:56 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Ard Biesheuvel <ardb@kernel.org>
  Leif Lindholm <quic_llindhol@quicinc.com>
  Pierre Gondois <pierre.gondois@arm.com>

jobs:
 build-amd64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-amd64-amd64-xl-qemuu-ovmf-amd64                         pass    
 test-amd64-i386-xl-qemuu-ovmf-amd64                          pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Pushing revision :

To xenbits.xen.org:/home/xen/git/osstest/ovmf.git
   4c43209a74..dc33394701  dc3339470166884197e9be5a6b3e7afe13104f1f -> xen-tested-master


From xen-devel-bounces@lists.xenproject.org Mon Jan 29 22:01:24 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 29 Jan 2024 22:01:24 +0000
Received: from list by lists.xenproject.org with outflank-mailman.673182.1047415 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUZgt-0002Ja-NF; Mon, 29 Jan 2024 22:01:19 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 673182.1047415; Mon, 29 Jan 2024 22:01:19 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUZgt-0002JT-Kk; Mon, 29 Jan 2024 22:01:19 +0000
Received: by outflank-mailman (input) for mailman id 673182;
 Mon, 29 Jan 2024 22:01:18 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=ZgPJ=JH=kernel.org=helgaas@srs-se1.protection.inumbo.net>)
 id 1rUZgs-0002JN-F2
 for xen-devel@lists.xenproject.org; Mon, 29 Jan 2024 22:01:18 +0000
Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id eca01cb5-bef1-11ee-8a43-1f161083a0e0;
 Mon, 29 Jan 2024 23:01:17 +0100 (CET)
Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58])
 by dfw.source.kernel.org (Postfix) with ESMTP id 3FEB76251A;
 Mon, 29 Jan 2024 22:01:15 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id A01A3C433C7;
 Mon, 29 Jan 2024 22:01:14 +0000 (UTC)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: eca01cb5-bef1-11ee-8a43-1f161083a0e0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
	s=k20201202; t=1706565674;
	bh=cV/c+lxwpIFnbqiq+B+v39dXErDc5uXplFaoJSoJCJ4=;
	h=Date:From:To:Cc:Subject:In-Reply-To:From;
	b=Vfdddmn/0f2BfvE7vHxcAViKU0mKrmZTpyQ5tRCfSEaQJjjHvh14JIjQoqlgOfP7v
	 T1TASQ17qXlrKzZ8Wlef66DxfbfK7vJpFSNfW3nWR+oijHfEW7WilBVpk0gbGbEw8T
	 E8Ee6swgvKZePW5j7bLr5wZW76qZ9MbLX4sBQvhvb3h8AjePrhzHlQVx55IJBgedgI
	 b4rhvnU5N18+JzLGJ5+NGjoV8yLnnn1Qr8X+kwNTnzPxwmi3R9iAXOFT694aPi/szP
	 HArljeBdBljSeaeVwKoIyr4l0zpPOJhI27c6tb2NmfaSNtrrZhST5N+oDk4rs1LPyF
	 F354Sd83H4xFg==
Date: Mon, 29 Jan 2024 16:01:13 -0600
From: Bjorn Helgaas <helgaas@kernel.org>
To: "Chen, Jiqian" <Jiqian.Chen@amd.com>
Cc: "Rafael J . Wysocki" <rafael@kernel.org>, Len Brown <lenb@kernel.org>,
	Juergen Gross <jgross@suse.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>,
	Boris Ostrovsky <boris.ostrovsky@oracle.com>,
	Bjorn Helgaas <bhelgaas@google.com>,
	Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>,
	"xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>,
	"linux-pci@vger.kernel.org" <linux-pci@vger.kernel.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"linux-acpi@vger.kernel.org" <linux-acpi@vger.kernel.org>,
	"Hildebrand, Stewart" <Stewart.Hildebrand@amd.com>,
	"Huang, Ray" <Ray.Huang@amd.com>,
	"Ragiadakou, Xenia" <Xenia.Ragiadakou@amd.com>
Subject: Re: [RFC KERNEL PATCH v4 3/3] PCI/sysfs: Add gsi sysfs for pci_dev
Message-ID: <20240129220113.GA475965@bhelgaas>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <BL1PR12MB5849B51FADC8226764078A98E77A2@BL1PR12MB5849.namprd12.prod.outlook.com>

On Thu, Jan 25, 2024 at 07:17:24AM +0000, Chen, Jiqian wrote:
> On 2024/1/24 00:02, Bjorn Helgaas wrote:
> > On Tue, Jan 23, 2024 at 10:13:52AM +0000, Chen, Jiqian wrote:
> >> On 2024/1/23 07:37, Bjorn Helgaas wrote:
> >>> On Fri, Jan 05, 2024 at 02:22:17PM +0800, Jiqian Chen wrote:
> >>>> There is a need for some scenarios to use gsi sysfs.
> >>>> For example, when xen passthrough a device to dumU, it will
> >>>> use gsi to map pirq, but currently userspace can't get gsi
> >>>> number.
> >>>> So, add gsi sysfs for that and for other potential scenarios.
> >> ...
> > 
> >>> I don't know enough about Xen to know why it needs the GSI in
> >>> userspace.  Is this passthrough brand new functionality that can't be
> >>> done today because we don't expose the GSI yet?

I assume this must be new functionality, i.e., this kind of
passthrough does not work today, right?

> >> has ACPI support and is responsible for detecting and controlling
> >> the hardware, also it performs privileged operations such as the
> >> creation of normal (unprivileged) domains DomUs. When we give to a
> >> DomU direct access to a device, we need also to route the physical
> >> interrupts to the DomU. In order to do so Xen needs to setup and map
> >> the interrupts appropriately.
> > 
> > What kernel interfaces are used for this setup and mapping?
>
> For passthrough devices, the setup and mapping of routing physical
> interrupts to DomU are done on Xen hypervisor side, hypervisor only
> need userspace to provide the GSI info, see Xen code:
> xc_physdev_map_pirq require GSI and then will call hypercall to pass
> GSI into hypervisor and then hypervisor will do the mapping and
> routing, kernel doesn't do the setup and mapping.

So we have to expose the GSI to userspace not because userspace itself
uses it, but so userspace can turn around and pass it back into the
kernel?

It seems like it would be better for userspace to pass an identifier
of the PCI device itself back into the hypervisor.  Then the interface
could be generic and potentially work even on non-ACPI systems where
the GSI concept doesn't apply.

> For devices on PVH Dom0, Dom0 setups interrupts for devices as the
> baremetal Linux kernel does, through using acpi_pci_irq_enable->
> acpi_register_gsi-> __acpi_register_gsi->acpi_register_gsi_ioapic.

This case sounds like it's all inside Linux, so I assume there's no
problem with this one?  If you can call acpi_pci_irq_enable(), you
have the pci_dev, so I assume there's no need to expose the GSI in
sysfs?

Bjorn


From xen-devel-bounces@lists.xenproject.org Mon Jan 29 22:27:29 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 29 Jan 2024 22:27:29 +0000
Received: from list by lists.xenproject.org with outflank-mailman.673187.1047426 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUa66-00061m-MB; Mon, 29 Jan 2024 22:27:22 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 673187.1047426; Mon, 29 Jan 2024 22:27:22 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUa66-00061f-JK; Mon, 29 Jan 2024 22:27:22 +0000
Received: by outflank-mailman (input) for mailman id 673187;
 Mon, 29 Jan 2024 22:27:21 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=CoM7=JH=invisiblethingslab.com=marmarek@srs-se1.protection.inumbo.net>)
 id 1rUa65-00061Z-AP
 for xen-devel@lists.xenproject.org; Mon, 29 Jan 2024 22:27:21 +0000
Received: from fhigh5-smtp.messagingengine.com
 (fhigh5-smtp.messagingengine.com [103.168.172.156])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 8ed029c2-bef5-11ee-98f5-efadbce2ee36;
 Mon, 29 Jan 2024 23:27:17 +0100 (CET)
Received: from compute1.internal (compute1.nyi.internal [10.202.2.41])
 by mailfhigh.nyi.internal (Postfix) with ESMTP id 4A82811400AB;
 Mon, 29 Jan 2024 17:27:16 -0500 (EST)
Received: from mailfrontend2 ([10.202.2.163])
 by compute1.internal (MEProxy); Mon, 29 Jan 2024 17:27:16 -0500
Received: by mail.messagingengine.com (Postfix) with ESMTPA; Mon,
 29 Jan 2024 17:27:15 -0500 (EST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 8ed029c2-bef5-11ee-98f5-efadbce2ee36
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=
	invisiblethingslab.com; h=cc:cc:content-type:content-type:date
	:date:from:from:in-reply-to:in-reply-to:message-id:mime-version
	:references:reply-to:subject:subject:to:to; s=fm3; t=1706567236;
	 x=1706653636; bh=w8UyFhHLZ2U+3iEngXOOMdob3zQdGvQ/3HGiaHRT0SI=; b=
	lJEML/GpOmm95viGqwfhiizyi7LT5tlXV4E0GKwyayoOaEeySqso2cphtBhRa00K
	XFbNP2Eq+l2ITejE9VX0ax1Agh3X3cVvxSwBo6jYmexZI5MbH3l1Gksc982+sdzD
	KEWhKotqD1I9G5Niq2Fb5JjSeCpDtZJ1tIQNazXlNIhzrVacLS7qm5WbI67xUAf6
	gY9fCuLqcZiExPv2mLf3d6cBwhQ1+O3zmRtEAzVdmiPG6BS4S7Gbq1hMTkPx45t/
	zFzTCBx7lt6wO64qOvI3MlxGr470rXK1lgfFlBBkxG/zPYaa83gYkBOCR7RsNjof
	1f0j6Sd4zYGPkQ95ojFsrw==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=
	messagingengine.com; h=cc:cc:content-type:content-type:date:date
	:feedback-id:feedback-id:from:from:in-reply-to:in-reply-to
	:message-id:mime-version:references:reply-to:subject:subject:to
	:to:x-me-proxy:x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s=
	fm3; t=1706567236; x=1706653636; bh=w8UyFhHLZ2U+3iEngXOOMdob3zQd
	GvQ/3HGiaHRT0SI=; b=Z1U+eMCfrpcgD/DcsggAu2f7rgqLNFagP2FtyyaRBDLD
	xENaqR2p38G8q/WdNbdTXJu0SyJoPJovwoM8DL3UBbxpkgoztPJI5DN+M5JfRhao
	yLsjw/W+IE4GuPGINDruPfT9o/QVcPAscBdl3utjsQ4xY+7PerNV/G52pbSuQwbJ
	1t0dc5oEmZEFv9sPw78Pp7fXsdonQ4XKk5rt6yVAntYRk3PUn+2vj2CsLFPQ8NfG
	5nVleD6Av/D7CKT5OMIK+icox24Y3GdhIwKufMt2nq0jgBhIXbY3UkChDvCG3s5o
	5W2hnM7wstsXMHoj1mp1G1/gqVrY33e4bljTJrEHGA==
X-ME-Sender: <xms:Qya4ZZ132_SyREX1Z_81pc24CZ-DlayCQInw_SScheFWTB5Hf9CQnA>
    <xme:Qya4ZQEYmyHlYoiRteA6Xemxye9fwdOJm4ugVOnrCEufn9C5aaKFdTv_Kg-_SkGmg
    b-3OBvcDnMWtw>
X-ME-Received: <xmr:Qya4ZZ525px9Zk3O2ucTwPx3abLJlYk-8VImkWKAMEufnDw5wcYOAxFzRdZD-FBdtU_6tP41OG9QIOwllX8msezSEY6_mnyq3g>
X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvkedrfedtgedgudehtdcutefuodetggdotefrod
    ftvfcurfhrohhfihhlvgemucfhrghsthforghilhdpqfgfvfdpuffrtefokffrpgfnqfgh
    necuuegrihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmd
    enucfjughrpeffhffvvefukfhfgggtuggjsehgtderredttdejnecuhfhrohhmpeforghr
    vghkucforghrtgiihihkohifshhkihdqifpkrhgvtghkihcuoehmrghrmhgrrhgvkhesih
    hnvhhishhisghlvghthhhinhhgshhlrggsrdgtohhmqeenucggtffrrghtthgvrhhnpefg
    udelteefvefhfeehieetleeihfejhfeludevteetkeevtedtvdegueetfeejudenucevlh
    hushhtvghrufhiiigvpedtnecurfgrrhgrmhepmhgrihhlfhhrohhmpehmrghrmhgrrhgv
    khesihhnvhhishhisghlvghthhhinhhgshhlrggsrdgtohhm
X-ME-Proxy: <xmx:Qya4ZW3hPX__2G5YLPP2-aLiFm7Tly_kWiLXfCBu0MGFgj0K5CL_QQ>
    <xmx:Qya4ZcGtoFhaYR8kU4SNQwBfhUVPiGS5NtIM15iW-zyCQ2zKo94hRg>
    <xmx:Qya4ZX_9VyVTrryaqQ3SIOAW14fXjHfZyOjjcWOIVK-sqdgqX8Q2Mg>
    <xmx:RCa4ZWPNFDmfyKRFiLI18rN9UJ7w3LtzJGTqSie6VmmOQCMpa2x_kA>
Feedback-ID: i1568416f:Fastmail
Date: Mon, 29 Jan 2024 23:27:12 +0100
From: Marek =?utf-8?Q?Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
To: Juergen Gross <jgross@suse.com>
Cc: xen-devel <xen-devel@lists.xenproject.org>
Subject: Re: Linux 6.7-rc1+: WARNING at drivers/xen/evtchn.c:167
 evtchn_interrupt
Message-ID: <ZbgmQaFTg1Vci9by@mail-itl>
References: <ZWf0sWey05VnpH7X@mail-itl>
 <258abfda-5f71-4e75-a3a5-abdad85a85f3@suse.com>
 <ZWulvo8Frbm2WNEk@mail-itl>
MIME-Version: 1.0
Content-Type: multipart/signed; micalg=pgp-sha256;
	protocol="application/pgp-signature"; boundary="q888yusyRgNCvsrd"
Content-Disposition: inline
In-Reply-To: <ZWulvo8Frbm2WNEk@mail-itl>


--q888yusyRgNCvsrd
Content-Type: text/plain; protected-headers=v1; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable
Date: Mon, 29 Jan 2024 23:27:12 +0100
From: Marek =?utf-8?Q?Marczykowski-G=C3=B3recki?= <marmarek@invisiblethingslab.com>
To: Juergen Gross <jgross@suse.com>
Cc: xen-devel <xen-devel@lists.xenproject.org>
Subject: Re: Linux 6.7-rc1+: WARNING at drivers/xen/evtchn.c:167
 evtchn_interrupt

On Sat, Dec 02, 2023 at 10:46:38PM +0100, Marek Marczykowski-G=C3=B3recki w=
rote:
> On Fri, Dec 01, 2023 at 09:29:30AM +0100, Juergen Gross wrote:
> > Hi Marek,
> >=20
> > On 30.11.23 03:34, Marek Marczykowski-G=C3=B3recki wrote:
> > > Hi,
> > >=20
> > > While testing 6.7-rc3 on Qubes OS I found several warning like in the
> > > subject in dom0 log. I see them when running 6.7-rc1 too. I'm not sure
> > > what exactly triggers the issue, but my guess would be unbinding an
> > > event channel from userspace (closing vchan connection).
> > >=20
> > > Specific message:
> > >=20
> > > [   83.973377] ------------[ cut here ]------------
> > > [   83.975523] Interrupt for port 77, but apparently not enabled; per=
-user 00000000a0e9f1d1
> >=20
> > Just a guess, but I think this might happen when the vchan connection
> > is closed while there is still some traffic. This could result in events
> > triggering in parallel to unbinding the event channel.
> >=20
> > Could you please test the attached patch (only compile tested)?
>=20
> Unfortunately that doesn't help, I get exactly the same traceback.

Hi, this is still an issue on 6.7.2, any other ideas?

--=20
Best Regards,
Marek Marczykowski-G=C3=B3recki
Invisible Things Lab

--q888yusyRgNCvsrd
Content-Type: application/pgp-signature; name="signature.asc"

-----BEGIN PGP SIGNATURE-----

iQEzBAEBCAAdFiEEhrpukzGPukRmQqkK24/THMrX1ywFAmW4JkEACgkQ24/THMrX
1yyhEAgAmJpL94AHf2PMFAR6AikClfeJBOOymbCV/XEifsurvOuriUOb6y66PSLZ
+DnM1wEOCEHW3bReVfd121sc4bvf3QsG3agfVDxIJ//uqekh0xRJuXFmd7HEbAu/
x4JkAByGgWgL338UjdxeWtYWbQAx0LI+88BOqTTr/UbeuTrPOjHeY4GTE/m/Tkba
ID5BxQWgE7lRrGbgAvRiw4Sk7PpgT1rCF1HOsrbUYcVYsZJvMB1ozjDVWiqcVjUt
We1nV53/NdOJjhzlZrMbdFYHiyPsp0tS8Kz8Zq3JEhf44LBm0NU7ksNpux23/WXq
13JZXPqw3yCJcfMGJUDo9yFowEZBuA==
=hx9k
-----END PGP SIGNATURE-----

--q888yusyRgNCvsrd--


From xen-devel-bounces@lists.xenproject.org Mon Jan 29 23:21:41 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Mon, 29 Jan 2024 23:21:41 +0000
Received: from list by lists.xenproject.org with outflank-mailman.673193.1047436 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUawP-00072L-II; Mon, 29 Jan 2024 23:21:25 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 673193.1047436; Mon, 29 Jan 2024 23:21:25 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUawP-00072E-Fb; Mon, 29 Jan 2024 23:21:25 +0000
Received: by outflank-mailman (input) for mailman id 673193;
 Mon, 29 Jan 2024 23:21:24 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rUawN-000724-Vy; Mon, 29 Jan 2024 23:21:24 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rUawN-000531-Ji; Mon, 29 Jan 2024 23:21:23 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rUawN-0004py-6i; Mon, 29 Jan 2024 23:21:23 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rUawN-0006H1-6E; Mon, 29 Jan 2024 23:21:23 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=EpHA5Y9q4B02p+5J7W36wHFeP+F6cpp5hYwROTi9seM=; b=EhT6kWkrloZi4jYyeW5hYJAatP
	KgxVg7ysMfiIZNX/RXKinlKQMI7+YN5BNLNFm/4jc+F4OTXBsnE6oT7Ig9O5RiD8bcNudVtRFKvM5
	UfTY31lycSIJZlTWMybF7frNdUmtL12uKnY6rN8Wpd/a54Hkw3D3KBGcVz3tw+tXR3kQ=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184511-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [linux-5.4 test] 184511: regressions - FAIL
X-Osstest-Failures:
    linux-5.4:test-armhf-armhf-xl-credit1:guest-start/debian.repeat:fail:regression
    linux-5.4:test-armhf-armhf-xl-credit1:xen-boot:fail:heisenbug
    linux-5.4:test-amd64-amd64-pair:debian-fixup/dst_host:fail:heisenbug
    linux-5.4:test-armhf-armhf-xl-multivcpu:guest-start:fail:heisenbug
    linux-5.4:test-armhf-armhf-xl-rtds:guest-start:fail:heisenbug
    linux-5.4:test-armhf-armhf-xl-credit2:guest-start:fail:heisenbug
    linux-5.4:test-armhf-armhf-xl-rtds:guest-start/debian.repeat:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-multivcpu:guest-start/debian.repeat:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-vhd:guest-start:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-credit2:guest-start/debian.repeat:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-multivcpu:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-multivcpu:saverestore-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-rtds:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-rtds:saverestore-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-credit2:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-credit2:saverestore-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-libvirt:saverestore-support-check:fail:nonblocking
    linux-5.4:test-amd64-amd64-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    linux-5.4:test-amd64-i386-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    linux-5.4:test-amd64-i386-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    linux-5.4:test-amd64-amd64-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    linux-5.4:test-amd64-amd64-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    linux-5.4:test-amd64-amd64-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    linux-5.4:test-amd64-i386-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    linux-5.4:test-armhf-armhf-libvirt-raw:saverestore-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-libvirt-qcow2:saverestore-support-check:fail:nonblocking
    linux-5.4:test-amd64-i386-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    linux-5.4:test-amd64-amd64-qemuu-nested-amd:debian-hvm-install/l1/l2:fail:nonblocking
    linux-5.4:test-amd64-i386-xl-pvshim:guest-start:fail:nonblocking
    linux-5.4:test-amd64-amd64-libvirt-xsm:migrate-support-check:fail:nonblocking
    linux-5.4:test-amd64-i386-libvirt:migrate-support-check:fail:nonblocking
    linux-5.4:test-amd64-i386-libvirt-xsm:migrate-support-check:fail:nonblocking
    linux-5.4:test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    linux-5.4:test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-thunderx:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-thunderx:saverestore-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-xsm:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-xsm:saverestore-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl:saverestore-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-credit2:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-libvirt-xsm:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-libvirt-xsm:saverestore-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-credit2:saverestore-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-credit1:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-credit1:saverestore-support-check:fail:nonblocking
    linux-5.4:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-credit1:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-credit1:saverestore-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-arndale:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-arndale:saverestore-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl:saverestore-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-libvirt:migrate-support-check:fail:nonblocking
    linux-5.4:test-amd64-i386-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-libvirt-raw:saverestore-support-check:fail:nonblocking
    linux-5.4:test-amd64-amd64-libvirt-vhd:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-vhd:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-vhd:saverestore-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-vhd:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-vhd:saverestore-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-libvirt-qcow2:migrate-support-check:fail:nonblocking
X-Osstest-Versions-This:
    linux=f0602893f43a54097fcf22bd8c2f7b8e75ca643e
X-Osstest-Versions-That:
    linux=9153fc9664959aa6bb35915b2bbd8fbc4c762962
From: osstest service owner <osstest-admin@xenproject.org>
Date: Mon, 29 Jan 2024 23:21:23 +0000

flight 184511 linux-5.4 real [real]
flight 184521 linux-5.4 real-retest [real]
http://logs.test-lab.xenproject.org/osstest/logs/184511/
http://logs.test-lab.xenproject.org/osstest/logs/184521/

Regressions :-(

Tests which did not succeed and are blocking,
including tests which could not be run:
 test-armhf-armhf-xl-credit1 18 guest-start/debian.repeat fail REGR. vs. 184381

Tests which are failing intermittently (not blocking):
 test-armhf-armhf-xl-credit1   8 xen-boot         fail in 184507 pass in 184511
 test-amd64-amd64-pair        21 debian-fixup/dst_host      fail pass in 184507
 test-armhf-armhf-xl-multivcpu 14 guest-start               fail pass in 184507
 test-armhf-armhf-xl-rtds     14 guest-start                fail pass in 184507
 test-armhf-armhf-xl-credit2  14 guest-start                fail pass in 184507

Tests which did not succeed, but are not blocking:
 test-armhf-armhf-xl-rtds 18 guest-start/debian.repeat fail in 184507 like 184362
 test-armhf-armhf-xl-multivcpu 18 guest-start/debian.repeat fail in 184507 like 184381
 test-armhf-armhf-xl-vhd      13 guest-start         fail in 184507 like 184381
 test-armhf-armhf-xl-credit2 18 guest-start/debian.repeat fail in 184507 like 184381
 test-armhf-armhf-xl-multivcpu 15 migrate-support-check fail in 184507 never pass
 test-armhf-armhf-xl-multivcpu 16 saverestore-support-check fail in 184507 never pass
 test-armhf-armhf-xl-rtds    15 migrate-support-check fail in 184507 never pass
 test-armhf-armhf-xl-rtds 16 saverestore-support-check fail in 184507 never pass
 test-armhf-armhf-xl-credit2 15 migrate-support-check fail in 184507 never pass
 test-armhf-armhf-xl-credit2 16 saverestore-support-check fail in 184507 never pass
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 184381
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 184381
 test-amd64-i386-xl-qemut-win7-amd64 19 guest-stop             fail like 184381
 test-amd64-i386-xl-qemuu-win7-amd64 19 guest-stop             fail like 184381
 test-amd64-amd64-xl-qemut-win7-amd64 19 guest-stop            fail like 184381
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 184381
 test-amd64-amd64-xl-qemut-ws16-amd64 19 guest-stop            fail like 184381
 test-amd64-i386-xl-qemut-ws16-amd64 19 guest-stop             fail like 184381
 test-armhf-armhf-libvirt-raw 15 saverestore-support-check    fail  like 184381
 test-armhf-armhf-libvirt-qcow2 15 saverestore-support-check   fail like 184381
 test-amd64-i386-xl-qemuu-ws16-amd64 19 guest-stop             fail like 184381
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 184381
 test-amd64-i386-xl-pvshim    14 guest-start                  fail   never pass
 test-amd64-amd64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-amd64-i386-libvirt      15 migrate-support-check        fail   never pass
 test-amd64-i386-libvirt-xsm  15 migrate-support-check        fail   never pass
 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-arm64-arm64-xl-thunderx 15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-thunderx 16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-xsm      15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-xsm      16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl          15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl          16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-credit2  15 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-xsm 16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-credit2  16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-credit1  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit1  16 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit1  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit1  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-arndale  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-arndale  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl          15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          16 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt     15 migrate-support-check        fail   never pass
 test-amd64-i386-libvirt-raw  14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 15 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-vhd 14 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-vhd      14 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-vhd      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-raw 14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-qcow2 14 migrate-support-check        fail never pass

version targeted for testing:
 linux                f0602893f43a54097fcf22bd8c2f7b8e75ca643e
baseline version:
 linux                9153fc9664959aa6bb35915b2bbd8fbc4c762962

Last test of basis   184381  2024-01-17 06:00:18 Z   12 days
Testing same since   184469  2024-01-25 22:43:10 Z    4 days    6 attempts

------------------------------------------------------------
People who touched revisions under test:
  "Christian A. Ehrhardt" <lk@c--e.de>
  Alex Deucher <alexander.deucher@amd.com>
  Alexander Gordeev <agordeev@linux.ibm.com>
  Alexei Starovoitov <ast@kernel.org>
  Amit Cohen <amcohen@nvidia.com>
  Andreas Gruenbacher <agruenba@redhat.com>
  Andrew Lunn <andrew@lunn.ch>
  Andrii Nakryiko <andrii@kernel.org>
  Anna Schumaker <Anna.Schumaker@Netapp.com>
  Arnaldo Carvalho de Melo <acme@redhat.com>
  Arnd Bergmann <arnd@arndb.de>
  Arseniy Krasnov <avkrasnov@salutedevices.com>
  Artem Chernyshev <artem.chernyshev@red-soft.ru>
  Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
  Benjamin Coddington <bcodding@redhat.com>
  Bhaskar Chowdhury <unixbhaskar@gmail.com>
  Bjorn Andersson <andersson@kernel.org>
  Borislav Petkov (AMD) <bp@alien8.de>
  Brian Norris <briannorris@chromium.org>
  Cameron Williams <cang1@live.co.uk>
  Carlos Llamas <cmllamas@google.com>
  Chao Yu <chao@kernel.org>
  Charles Keepax <ckeepax@opensource.cirrus.com>
  Chengming Zhou <zhouchengming@bytedance.com>
  Chih-Kang Chang <gary.chang@realtek.com>
  Christian A. Ehrhardt <lk@c--e.de>
  Christoph Hellwig <hch@lst.de>
  Christoph Niedermaier <cniedermaier@dh-electronics.com>
  Christophe JAILLET <christophe.jaillet@wanadoo.fr>
  Claudiu Beznea <claudiu.beznea.uj@bp.renesas.com>
  Colin Ian King <colin.i.king@gmail.com>
  Colin Ian King <colin.king@canonical.com>
  Curtis Klein <curtis.klein@hpe.com>
  Dan Carpenter <dan.carpenter@linaro.org>
  Daniel Thompson <daniel.thompson@linaro.org>
  Danilo Krummrich <dakr@redhat.com>
  Dario Binacchi <dario.binacchi@amarulasolutions.com>
  Dave Airlie <airlied@redhat.com>
  Dave Hansen <dave.hansen@linux.intel.com>
  David Lin <CTLIN0@nuvoton.com>
  David Lin <yu-hao.lin@nxp.com>
  David Rau <David.Rau.opensource@dm.renesas.com>
  David S. Miller <davem@davemloft.net>
  Dinghao Liu <dinghao.liu@zju.edu.cn>
  Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
  Dmitry Torokhov <dmitry.torokhov@gmail.com>
  Eric Biggers <ebiggers@google.com>
  Eric Dumazet <edumazet@google.com>
  Esther Shimanovich <eshimanovich@chromium.org>
  Fedor Pchelkin <pchelkin@ispras.ru>
  Florian Fainelli <florian.fainelli@broadcom.com>
  Florian Lehner <dev@der-flo.net>
  Florian Westphal <fw@strlen.de>
  Francesco Dolcini <francesco.dolcini@toradex.com>
  Gavrilov Ilia <Ilia.Gavrilov@infotecs.ru>
  Geert Uytterhoeven <geert+renesas@glider.be>
  Gonglei (Arei) <arei.gonglei@huawei.com>
  Gonglei <arei.gonglei@huawei.com>
  Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  Gregory CLEMENT <gregory.clement@bootlin.com>
  Guanghui Feng <guanghuifeng@linux.alibaba.com>
  Guenter Roeck <linux@roeck-us.net>
  Gui-Dong Han <2045gemini@gmail.com>
  Hangbin Liu <liuhangbin@gmail.com>
  Hans de Goede <hdegoede@redhat.com>
  Hans Verkuil <hverkuil-cisco@xs4all.nl>
  Harshit Mogalapalli <harshit.m.mogalapalli@oracle.com>
  Heikki Krogerus <heikki.krogerus@linux.intel.com>
  Heiko Carstens <hca@linux.ibm.com>
  Heiko Stuebner <heiko@sntech.de>
  Helge Deller <deller@gmx.de>
  Herbert Xu <herbert@gondor.apana.org.au>
  Ian Rogers <irogers@google.com>
  Ido Schimmel <idosch@nvidia.com>
  Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
  Inki Dae <inki.dae@samsung.com>
  Jaegeuk Kim <jaegeuk@kernel.org>
  Jakub Kicinski <kuba@kernel.org>
  James Clark <james.clark@arm.com>
  Jan Beulich <jbeulich@suse.com>
  Jani Nikula <jani.nikula@intel.com>
  Jason Gerecke <jason.gerecke@wacom.com>
  Jay Buddhabhatti <jay.buddhabhatti@amd.com>
  Jerry Hoemann <jerry.hoemann@hpe.com>
  Jiri Kosina <jkosina@suse.com>
  Jiri Olsa <jolsa@kernel.org>
  Jiri Olsa <jolsa@redhat.com>
  Joakim Zhang <joakim.zhang@cixtech.com>
  Joe Perches <joe@perches.com>
  John Johansen <john.johansen@canonical.com>
  Jon Hunter <jonathanh@nvidia.com>
  Judy Hsiao <judyhsiao@chromium.org>
  Julian Anastasov <ja@ssi.bg>
  Kalle Valo <kvalo@codeaurora.org>
  Kalle Valo <kvalo@kernel.org>
  Kamil Duljas <kamil.duljas@gmail.com>
  Kees Cook <keescook@chromium.org>
  Keith Busch <kbusch@kernel.org>
  kernelci.org bot <bot@kernelci.org>
  Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
  Konrad Dybcio <konrad.dybcio@linaro.org>
  Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
  Krzysztof Wilczyński <kwilczynski@kernel.org>
  Kunwu Chan <chentao@kylinos.cn>
  Laurent Dufour <ldufour@linux.ibm.com>
  Leon Romanovsky <leonro@nvidia.com>
  Li Jun <jun.li@nxp.com>
  Lin Ma <linma@zju.edu.cn>
  Linus Torvalds <torvalds@linux-foundation.org>
  Linus Walleij <linus.walleij@linaro.org>
  Linux Kernel Functional Testing <lkft@linaro.org>
  Luca Weiss <luca@z3ntu.xyz>
  Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
  Maciej Strozek <mstrozek@opensource.cirrus.com>
  Marek Szyprowski <m.szyprowski@samsung.com>
  Mark Brown <broonie@kernel.org>
  Martin K. Petersen <martin.petersen@oracle.com>
  Masahiro Yamada <masahiroy@kernel.org>
  Matthew Wilcox (Oracle) <willy@infradead.org>
  Maurizio Lombardi <mlombard@redhat.com>
  Mauro Carvalho Chehab <mchehab@kernel.org>
  Maxime Ripard <mripard@kernel.org>
  Michael Ellerman <mpe@ellerman.id.au>
  Michael S. Tsirkin <mst@redhat.com>
  Mickaël Salaün <mic@digikod.net>
  Mike Isely <isely@pobox.com>
  Mike Looijmans <mike.looijmans@topic.nl>
  Miquel Raynal <miquel.raynal@bootlin.com>
  Muhammad Usama Anjum <usama.anjum@collabora.com>
  Nam Cao <namcao@linutronix.de>
  Namhyung Kim <namhyung@kernel.org>
  Nathan Lynch <nathanl@linux.ibm.com>
  Nikita Kiryushin <kiryushin@ancud.ru>
  Nikita Yushchenko <nikita.yoush@cogentembedded.com>
  Nikita Zhandarovich <n.zhandarovich@fintech.ru>
  Niklas Schnelle <schnelle@linux.ibm.com>
  Nishanth Menon <nm@ti.com>
  Osama Muhammad <osmtendev@gmail.com>
  Ovidiu Panait <ovidiu.panait@windriver.com>
  Pablo Neira Ayuso <pablo@netfilter.org>
  Paolo Abeni <pabeni@redhat.com>
  Paolo Bonzini <pbonzini@redhat.com>
  Paul Moore <paul@paul-moore.com>
  Peter Chen <peter.chen@kernel.org>
  Peter Delevoryas <peter@pjd.dev>
  Peter Robinson <pbrobinson@gmail.com>
  Petr Machata <petrm@nvidia.com>
  Philipp Zabel <p.zabel@pengutronix.de>
  Ping Cheng <ping.cheng@wacom.com>
  Ping-Ke Shih <pkshih@realtek.com>
  Rafael Beims <rafael.beims@toradex.com> # Verdin iMX8MP/SD8997 SD
  Rafael J. Wysocki <rafael.j.wysocki@intel.com>
  Ram Muthiah <rammuthiah@google.com>
  Randy Dunlap <rdunlap@infradead.org>
  Ravi Gunasekaran <r-gunasekaran@ti.com>
  RD Babiera <rdbabiera@google.com>
  Ricardo B. Marliere <ricardo@marliere.net>
  Richard Weinberger <richard@nod.at>
  Rob Herring <robh@kernel.org>
  Rob Landley <rob@landley.net>
  Robert Foss <rfoss@kernel.org>
  Ronald Monthero <debug.penguin32@gmail.com>
  Sakari Ailus <sakari.ailus@linux.intel.com>
  Sasha Levin <sashal@kernel.org>
  Serge Semin <fancer.lancer@gmail.com>
  Sergey Shtylyov <s.shtylyov@omp.ru>
  Shuming Fan <shumingf@realtek.com>
  Siddharth Vadapalli <s-vadapalli@ti.com>
  Simon Horman <horms@kernel.org>
  Sjoerd Simons <sjoerd@collabora.com>
  Song Liu <song@kernel.org>
  Stefan Berger <stefanb@linux.ibm.com>
  Stefan Wahren <wahrenst@gmx.net>
  Stephen Boyd <sboyd@kernel.org>
  Steven Rostedt (Google) <rostedt@goodmis.org>
  Su Hui <suhui@nfschina.com>
  Sudip Mukherjee <sudipm.mukherjee@gmail.com>
  Suzuki K Poulose <suzuki.poulose@arm.com>
  Takashi Iwai <tiwai@suse.de>
  Tatsunosuke Tobita <tatsunosuke.tobita@wacom.com>
  Theodore Ts'o <tytso@mit.edu>
  Thinh Nguyen <Thinh.Nguyen@synopsys.com>
  Thinh Tran <thinhtr@linux.vnet.ibm.com>
  Thomas Bogendoerfer <tsbogend@alpha.franken.de>
  Thomas Gleixner <tglx@linutronix.de>
  Tiezhu Yang <yangtiezhu@loongson.cn>
  Tom Lendacky <thomas.lendacky@amd.com>
  Tomi Valkeinen <tomi.valkeinen@ideasonboard.com>
  Trond Myklebust <trond.myklebust@hammerspace.com>
  Ulf Hansson <ulf.hansson@linaro.org>
  Uttkarsh Aggarwal <quic_uaggarwa@quicinc.com>
  Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
  Vasiliy Kovalev <kovalev@altlinux.org>
  Venkata Sai Duggi <venkata.sai.duggi@ibm.com>
  Vineet Gupta <vgupta@kernel.org>
  Vineeth Vijayan <vneethv@linux.ibm.com>
  wangyangxin <wangyangxin1@huawei.com>
  Weihao Li <cn.liweihao@gmail.com>
  Wim Van Sebroeck <wim@linux-watchdog.org>
  Wolfram Sang <wsa+renesas@sang-engineering.com>
  Wolfram Sang <wsa@kernel.org>
  Xiang Chen <chenxiang66@hisilicon.com>
  Xiang Yang <xiangyang3@huawei.com>
  Xu Yang <xu.yang_2@nxp.com>
  Yang Yingliang <yangyingliang@huawei.com>
  Yihang Li <liyihang9@huawei.com>
  Zhang Yi <yi.zhang@huawei.com>
  ZhaoLong Wang <wangzhaolong1@huawei.com>
  Zheng Yejian <zhengyejian1@huawei.com>
  zhenwei pi <pizhenwei@bytedance.com>
  Zhipeng Lu <alexious@zju.edu.cn>
  Ziqi Zhao <astrajoan@yahoo.com>

jobs:
 build-amd64-xsm                                              pass    
 build-arm64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64                                                  pass    
 build-arm64                                                  pass    
 build-armhf                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-arm64-libvirt                                          pass    
 build-armhf-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-pvops                                            pass    
 build-arm64-pvops                                            pass    
 build-armhf-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-amd64-amd64-xl                                          pass    
 test-amd64-coresched-amd64-xl                                pass    
 test-arm64-arm64-xl                                          pass    
 test-armhf-armhf-xl                                          pass    
 test-amd64-i386-xl                                           pass    
 test-amd64-coresched-i386-xl                                 pass    
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm           pass    
 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm            pass    
 test-amd64-amd64-xl-qemut-stubdom-debianhvm-amd64-xsm        pass    
 test-amd64-i386-xl-qemut-stubdom-debianhvm-amd64-xsm         pass    
 test-amd64-amd64-xl-qemut-debianhvm-i386-xsm                 pass    
 test-amd64-i386-xl-qemut-debianhvm-i386-xsm                  pass    
 test-amd64-amd64-xl-qemuu-debianhvm-i386-xsm                 pass    
 test-amd64-i386-xl-qemuu-debianhvm-i386-xsm                  pass    
 test-amd64-amd64-libvirt-xsm                                 pass    
 test-arm64-arm64-libvirt-xsm                                 pass    
 test-amd64-i386-libvirt-xsm                                  pass    
 test-amd64-amd64-xl-xsm                                      pass    
 test-arm64-arm64-xl-xsm                                      pass    
 test-amd64-i386-xl-xsm                                       pass    
 test-amd64-amd64-qemuu-nested-amd                            fail    
 test-amd64-amd64-xl-pvhv2-amd                                pass    
 test-amd64-i386-qemut-rhel6hvm-amd                           pass    
 test-amd64-i386-qemuu-rhel6hvm-amd                           pass    
 test-amd64-amd64-dom0pvh-xl-amd                              pass    
 test-amd64-amd64-xl-qemut-debianhvm-amd64                    pass    
 test-amd64-i386-xl-qemut-debianhvm-amd64                     pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64                    pass    
 test-amd64-i386-xl-qemuu-debianhvm-amd64                     pass    
 test-amd64-i386-freebsd10-amd64                              pass    
 test-amd64-amd64-qemuu-freebsd11-amd64                       pass    
 test-amd64-amd64-qemuu-freebsd12-amd64                       pass    
 test-amd64-amd64-xl-qemuu-ovmf-amd64                         pass    
 test-amd64-i386-xl-qemuu-ovmf-amd64                          pass    
 test-amd64-amd64-xl-qemut-win7-amd64                         fail    
 test-amd64-i386-xl-qemut-win7-amd64                          fail    
 test-amd64-amd64-xl-qemuu-win7-amd64                         fail    
 test-amd64-i386-xl-qemuu-win7-amd64                          fail    
 test-amd64-amd64-xl-qemut-ws16-amd64                         fail    
 test-amd64-i386-xl-qemut-ws16-amd64                          fail    
 test-amd64-amd64-xl-qemuu-ws16-amd64                         fail    
 test-amd64-i386-xl-qemuu-ws16-amd64                          fail    
 test-armhf-armhf-xl-arndale                                  pass    
 test-amd64-amd64-examine-bios                                pass    
 test-amd64-i386-examine-bios                                 pass    
 test-amd64-amd64-xl-credit1                                  pass    
 test-arm64-arm64-xl-credit1                                  pass    
 test-armhf-armhf-xl-credit1                                  fail    
 test-amd64-amd64-xl-credit2                                  pass    
 test-arm64-arm64-xl-credit2                                  pass    
 test-armhf-armhf-xl-credit2                                  fail    
 test-amd64-amd64-xl-qemuu-dmrestrict-amd64-dmrestrict        pass    
 test-amd64-i386-xl-qemuu-dmrestrict-amd64-dmrestrict         pass    
 test-amd64-amd64-examine                                     pass    
 test-arm64-arm64-examine                                     pass    
 test-armhf-armhf-examine                                     pass    
 test-amd64-i386-examine                                      pass    
 test-amd64-i386-freebsd10-i386                               pass    
 test-amd64-amd64-qemuu-nested-intel                          pass    
 test-amd64-amd64-xl-pvhv2-intel                              pass    
 test-amd64-i386-qemut-rhel6hvm-intel                         pass    
 test-amd64-i386-qemuu-rhel6hvm-intel                         pass    
 test-amd64-amd64-dom0pvh-xl-intel                            pass    
 test-amd64-amd64-libvirt                                     pass    
 test-armhf-armhf-libvirt                                     pass    
 test-amd64-i386-libvirt                                      pass    
 test-amd64-amd64-xl-multivcpu                                pass    
 test-armhf-armhf-xl-multivcpu                                fail    
 test-amd64-amd64-pair                                        fail    
 test-amd64-i386-pair                                         pass    
 test-amd64-amd64-libvirt-pair                                pass    
 test-amd64-i386-libvirt-pair                                 pass    
 test-amd64-amd64-xl-pvshim                                   pass    
 test-amd64-i386-xl-pvshim                                    fail    
 test-amd64-amd64-pygrub                                      pass    
 test-armhf-armhf-libvirt-qcow2                               pass    
 test-amd64-amd64-xl-qcow2                                    pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-armhf-armhf-libvirt-raw                                 pass    
 test-amd64-i386-libvirt-raw                                  pass    
 test-amd64-amd64-xl-rtds                                     pass    
 test-armhf-armhf-xl-rtds                                     fail    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64-shadow             pass    
 test-amd64-i386-xl-qemuu-debianhvm-amd64-shadow              pass    
 test-amd64-amd64-xl-shadow                                   pass    
 test-amd64-i386-xl-shadow                                    pass    
 test-arm64-arm64-xl-thunderx                                 pass    
 test-amd64-amd64-examine-uefi                                pass    
 test-amd64-i386-examine-uefi                                 pass    
 test-amd64-amd64-libvirt-vhd                                 pass    
 test-arm64-arm64-xl-vhd                                      pass    
 test-armhf-armhf-xl-vhd                                      pass    
 test-amd64-i386-xl-vhd                                       pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Not pushing.

(No revision log; it would be 5292 lines long.)


From xen-devel-bounces@lists.xenproject.org Tue Jan 30 00:03:28 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 30 Jan 2024 00:03:28 +0000
Received: from list by lists.xenproject.org with outflank-mailman.673200.1047446 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUbay-0005Gh-I9; Tue, 30 Jan 2024 00:03:20 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 673200.1047446; Tue, 30 Jan 2024 00:03:20 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUbay-0005Ga-EN; Tue, 30 Jan 2024 00:03:20 +0000
Received: by outflank-mailman (input) for mailman id 673200;
 Tue, 30 Jan 2024 00:03:19 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rUbax-0005GQ-02; Tue, 30 Jan 2024 00:03:19 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rUbaw-0006Pv-Qc; Tue, 30 Jan 2024 00:03:18 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rUbaw-00064p-DW; Tue, 30 Jan 2024 00:03:18 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rUbaw-0004Y8-D2; Tue, 30 Jan 2024 00:03:18 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=qVXG6uZihfP4sjiUCvscbzycCsSnK4Og1XkqnM8eUhE=; b=yIjde8Uj7zEzwO8+FowTzqdOe5
	SqVrGq4hqv+do4ZZG15JZHzgIOfz89jlcfZdpRvWzeh3T7PxQn22a/eA6q8Q307PUXCjFWBPaR02u
	yNY7fJGU3dX4LJd9zD9qUN2UXq8CfVe/1NnMU1FrOj+fIipfRSnkUJV15sL93OuZNIR8=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184522-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [ovmf test] 184522: all pass - PUSHED
X-Osstest-Versions-This:
    ovmf=98c7cb3be73d0f15151133abe91bc880a4400794
X-Osstest-Versions-That:
    ovmf=dc3339470166884197e9be5a6b3e7afe13104f1f
From: osstest service owner <osstest-admin@xenproject.org>
Date: Tue, 30 Jan 2024 00:03:18 +0000

flight 184522 ovmf real [real]
http://logs.test-lab.xenproject.org/osstest/logs/184522/

Perfect :-)
All tests in this flight passed as required
version targeted for testing:
 ovmf                 98c7cb3be73d0f15151133abe91bc880a4400794
baseline version:
 ovmf                 dc3339470166884197e9be5a6b3e7afe13104f1f

Last test of basis   184519  2024-01-29 17:12:56 Z    0 days
Testing same since   184522  2024-01-29 22:12:44 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Erdem Aktas <erdemaktas@google.com>
  Gerd Hoffmann <kraxel@redhat.com>
  Michael D Kinney <michael.d.kinney@intel.com>
  Tom Lendacky <thomas.lendacky@amd.com>

jobs:
 build-amd64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-amd64-amd64-xl-qemuu-ovmf-amd64                         pass    
 test-amd64-i386-xl-qemuu-ovmf-amd64                          pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Pushing revision :

To xenbits.xen.org:/home/xen/git/osstest/ovmf.git
   dc33394701..98c7cb3be7  98c7cb3be73d0f15151133abe91bc880a4400794 -> xen-tested-master


From xen-devel-bounces@lists.xenproject.org Tue Jan 30 04:09:04 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 30 Jan 2024 04:09:04 +0000
Received: from list by lists.xenproject.org with outflank-mailman.673211.1047457 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUfQU-00027o-Bk; Tue, 30 Jan 2024 04:08:46 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 673211.1047457; Tue, 30 Jan 2024 04:08:46 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUfQU-00027h-6f; Tue, 30 Jan 2024 04:08:46 +0000
Received: by outflank-mailman (input) for mailman id 673211;
 Tue, 30 Jan 2024 04:08:45 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rUfQT-00027S-6x; Tue, 30 Jan 2024 04:08:45 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rUfQS-0004zC-67; Tue, 30 Jan 2024 04:08:44 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rUfQR-0001OE-Lh; Tue, 30 Jan 2024 04:08:43 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rUfQR-0001sk-KW; Tue, 30 Jan 2024 04:08:43 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=z5YuBmjNIO004+XYuZQxKXzWfrxO9dzJ2e3B/Fehun4=; b=bDZKUjJlhQzYJcGs0JW6lklGbX
	6pPn0GJSxsyVky5pZ6x1r9z1eO51tvd64PVrRgrvjmIlyA0OfUcY3G4A5/TC5M/Z3AwF5w+dU44u1
	jG3k+nlNn5/T4QRE6YWfLn/o5cAf1hHMOO4ApQxZjhoM3qJUHuL/+DqCUtEwZ3Yp1ZzA=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184517-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [linux-linus test] 184517: tolerable FAIL - PUSHED
X-Osstest-Failures:
    linux-linus:test-armhf-armhf-xl:host-ping-check-xen:fail:heisenbug
    linux-linus:test-armhf-armhf-xl:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    linux-linus:test-amd64-amd64-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    linux-linus:test-amd64-amd64-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-qcow2:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-raw:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    linux-linus:test-amd64-amd64-qemuu-nested-amd:debian-hvm-install/l1/l2:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-xsm:migrate-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-thunderx:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-thunderx:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-credit2:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-credit2:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-libvirt-xsm:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-libvirt-xsm:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-credit1:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-xsm:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-credit1:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-xsm:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-arndale:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-arndale:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-rtds:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-rtds:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-multivcpu:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-multivcpu:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-qcow2:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-libvirt-raw:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-vhd:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-vhd:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-qcow2:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-vhd:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-vhd:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit1:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit1:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit2:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit2:saverestore-support-check:fail:nonblocking
X-Osstest-Versions-This:
    linux=41bccc98fb7931d63d03f326a746ac4d429c1dd3
X-Osstest-Versions-That:
    linux=3eb5ca857d38ae7a694de6e59a3de7990af87919
From: osstest service owner <osstest-admin@xenproject.org>
Date: Tue, 30 Jan 2024 04:08:43 +0000

flight 184517 linux-linus real [real]
flight 184524 linux-linus real-retest [real]
http://logs.test-lab.xenproject.org/osstest/logs/184517/
http://logs.test-lab.xenproject.org/osstest/logs/184524/

Failures :-/ but no regressions.

Tests which are failing intermittently (not blocking):
 test-armhf-armhf-xl          10 host-ping-check-xen fail pass in 184524-retest

Tests which did not succeed, but are not blocking:
 test-armhf-armhf-xl         15 migrate-support-check fail in 184524 never pass
 test-armhf-armhf-xl     16 saverestore-support-check fail in 184524 never pass
 test-amd64-amd64-xl-qemut-win7-amd64 19 guest-stop            fail like 184508
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 184508
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 184508
 test-armhf-armhf-libvirt-qcow2 15 saverestore-support-check   fail like 184508
 test-armhf-armhf-libvirt-raw 15 saverestore-support-check    fail  like 184508
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 184508
 test-amd64-amd64-xl-qemut-ws16-amd64 19 guest-stop            fail like 184508
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 184508
 test-amd64-amd64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt     15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl          15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl          16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-thunderx 15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-thunderx 16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-credit2  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit2  16 saverestore-support-check    fail   never pass
 test-arm64-arm64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-xsm 16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-credit1  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-xsm      15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit1  16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-xsm      16 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-armhf-armhf-xl-arndale  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-arndale  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-rtds     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-rtds     16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-multivcpu 15 migrate-support-check        fail  never pass
 test-armhf-armhf-xl-multivcpu 16 saverestore-support-check    fail  never pass
 test-amd64-amd64-libvirt-qcow2 14 migrate-support-check        fail never pass
 test-arm64-arm64-libvirt-raw 14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 15 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-raw 14 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-vhd      14 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-vhd      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-qcow2 14 migrate-support-check        fail never pass
 test-armhf-armhf-libvirt-raw 14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit1  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit1  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-credit2  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit2  16 saverestore-support-check    fail   never pass

version targeted for testing:
 linux                41bccc98fb7931d63d03f326a746ac4d429c1dd3
baseline version:
 linux                3eb5ca857d38ae7a694de6e59a3de7990af87919

Last test of basis   184508  2024-01-29 00:44:05 Z    1 days
Testing same since   184517  2024-01-29 12:55:37 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Linus Torvalds <torvalds@linux-foundation.org>

jobs:
 build-amd64-xsm                                              pass    
 build-arm64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64                                                  pass    
 build-arm64                                                  pass    
 build-armhf                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-arm64-libvirt                                          pass    
 build-armhf-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-pvops                                            pass    
 build-arm64-pvops                                            pass    
 build-armhf-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-amd64-amd64-xl                                          pass    
 test-amd64-coresched-amd64-xl                                pass    
 test-arm64-arm64-xl                                          pass    
 test-armhf-armhf-xl                                          fail    
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm           pass    
 test-amd64-amd64-xl-qemut-stubdom-debianhvm-amd64-xsm        pass    
 test-amd64-amd64-xl-qemut-debianhvm-i386-xsm                 pass    
 test-amd64-amd64-xl-qemuu-debianhvm-i386-xsm                 pass    
 test-amd64-amd64-libvirt-xsm                                 pass    
 test-arm64-arm64-libvirt-xsm                                 pass    
 test-amd64-amd64-xl-xsm                                      pass    
 test-arm64-arm64-xl-xsm                                      pass    
 test-amd64-amd64-qemuu-nested-amd                            fail    
 test-amd64-amd64-xl-pvhv2-amd                                pass    
 test-amd64-amd64-dom0pvh-xl-amd                              pass    
 test-amd64-amd64-xl-qemut-debianhvm-amd64                    pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64                    pass    
 test-amd64-amd64-freebsd11-amd64                             pass    
 test-amd64-amd64-freebsd12-amd64                             pass    
 test-amd64-amd64-xl-qemuu-ovmf-amd64                         pass    
 test-amd64-amd64-xl-qemut-win7-amd64                         fail    
 test-amd64-amd64-xl-qemuu-win7-amd64                         fail    
 test-amd64-amd64-xl-qemut-ws16-amd64                         fail    
 test-amd64-amd64-xl-qemuu-ws16-amd64                         fail    
 test-armhf-armhf-xl-arndale                                  pass    
 test-amd64-amd64-examine-bios                                pass    
 test-amd64-amd64-xl-credit1                                  pass    
 test-arm64-arm64-xl-credit1                                  pass    
 test-armhf-armhf-xl-credit1                                  pass    
 test-amd64-amd64-xl-credit2                                  pass    
 test-arm64-arm64-xl-credit2                                  pass    
 test-armhf-armhf-xl-credit2                                  pass    
 test-amd64-amd64-xl-qemuu-dmrestrict-amd64-dmrestrict        pass    
 test-amd64-amd64-examine                                     pass    
 test-arm64-arm64-examine                                     pass    
 test-armhf-armhf-examine                                     pass    
 test-amd64-amd64-qemuu-nested-intel                          pass    
 test-amd64-amd64-xl-pvhv2-intel                              pass    
 test-amd64-amd64-dom0pvh-xl-intel                            pass    
 test-amd64-amd64-libvirt                                     pass    
 test-armhf-armhf-libvirt                                     pass    
 test-amd64-amd64-xl-multivcpu                                pass    
 test-armhf-armhf-xl-multivcpu                                pass    
 test-amd64-amd64-pair                                        pass    
 test-amd64-amd64-libvirt-pair                                pass    
 test-amd64-amd64-xl-pvshim                                   pass    
 test-amd64-amd64-pygrub                                      pass    
 test-amd64-amd64-libvirt-qcow2                               pass    
 test-armhf-armhf-libvirt-qcow2                               pass    
 test-amd64-amd64-libvirt-raw                                 pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-armhf-armhf-libvirt-raw                                 pass    
 test-amd64-amd64-xl-rtds                                     pass    
 test-armhf-armhf-xl-rtds                                     pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64-shadow             pass    
 test-amd64-amd64-xl-shadow                                   pass    
 test-arm64-arm64-xl-thunderx                                 pass    
 test-amd64-amd64-examine-uefi                                pass    
 test-amd64-amd64-xl-vhd                                      pass    
 test-arm64-arm64-xl-vhd                                      pass    
 test-armhf-armhf-xl-vhd                                      pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Pushing revision :

hint: The 'hooks/update' hook was ignored because it's not set as executable.
hint: You can disable this warning with `git config advice.ignoredHook false`.
hint: The 'hooks/post-receive' hook was ignored because it's not set as executable.
hint: You can disable this warning with `git config advice.ignoredHook false`.
hint: The 'hooks/post-update' hook was ignored because it's not set as executable.
hint: You can disable this warning with `git config advice.ignoredHook false`.
To xenbits.xen.org:/home/xen/git/linux-pvops.git
   3eb5ca857d38..41bccc98fb79  41bccc98fb7931d63d03f326a746ac4d429c1dd3 -> tested/linux-linus


From xen-devel-bounces@lists.xenproject.org Tue Jan 30 05:58:23 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 30 Jan 2024 05:58:23 +0000
Received: from list by lists.xenproject.org with outflank-mailman.673221.1047482 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUh8N-0006fs-R0; Tue, 30 Jan 2024 05:58:11 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 673221.1047482; Tue, 30 Jan 2024 05:58:11 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUh8N-0006fl-OF; Tue, 30 Jan 2024 05:58:11 +0000
Received: by outflank-mailman (input) for mailman id 673221;
 Tue, 30 Jan 2024 05:58:10 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rUh8L-0006fb-Um; Tue, 30 Jan 2024 05:58:10 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rUh8L-0007VU-SK; Tue, 30 Jan 2024 05:58:09 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rUh8L-0006bY-CV; Tue, 30 Jan 2024 05:58:09 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rUh8L-00025g-C2; Tue, 30 Jan 2024 05:58:09 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=b7Zo7U6gC72r9qlENgScIHr5Ei3KgsgjER52S3KsFAA=; b=Q8b/6IVzQWz1Y6RYXUOPnCYqtq
	uudpynu2gGBxfAUWj6Eik196onfTWtM8uGJ2tUZiYidqt4hs1eR7kLiMIlFM0G90D/UaokDXt4KvL
	ZliduznnWw99FCBP9exsHEyAOboUFPiI3vwqJd30bCH5pL9Zz9s8rUKtRl+0O3HK5jvY=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184518-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [xen-unstable test] 184518: tolerable FAIL - PUSHED
X-Osstest-Failures:
    xen-unstable:test-armhf-armhf-libvirt:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-amd64-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-amd64-xl-qemut-debianhvm-i386-xsm:debian-hvm-install:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-qcow2:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-raw:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-amd64-qemuu-nested-amd:debian-hvm-install/l1/l2:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-amd64-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-pvshim:guest-start:fail:nonblocking
    xen-unstable:test-amd64-i386-libvirt-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-libvirt:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-credit2:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-credit2:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-credit1:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-credit1:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-thunderx:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-thunderx:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-libvirt-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-libvirt-xsm:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-xsm:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-arndale:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-arndale:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-rtds:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-rtds:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-multivcpu:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-multivcpu:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-libvirt-raw:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt-vhd:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-libvirt-raw:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-libvirt-raw:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-vhd:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-vhd:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-qcow2:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-raw:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-vhd:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-vhd:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit1:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit1:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit2:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit2:saverestore-support-check:fail:nonblocking
X-Osstest-Versions-This:
    xen=40a74677023a5eb20d7bbc09def37884f80919bd
X-Osstest-Versions-That:
    xen=c378ff8983cd69786c35117e49640f027e581bca
From: osstest service owner <osstest-admin@xenproject.org>
Date: Tue, 30 Jan 2024 05:58:09 +0000

flight 184518 xen-unstable real [real]
http://logs.test-lab.xenproject.org/osstest/logs/184518/

Failures :-/ but no regressions.

Tests which did not succeed, but are not blocking:
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 184509
 test-amd64-amd64-xl-qemut-win7-amd64 19 guest-stop            fail like 184509
 test-amd64-i386-xl-qemuu-win7-amd64 19 guest-stop             fail like 184509
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 184509
 test-amd64-i386-xl-qemut-ws16-amd64 19 guest-stop             fail like 184509
 test-amd64-amd64-xl-qemut-debianhvm-i386-xsm 12 debian-hvm-install fail like 184509
 test-amd64-i386-xl-qemut-win7-amd64 19 guest-stop             fail like 184509
 test-armhf-armhf-libvirt-qcow2 15 saverestore-support-check   fail like 184509
 test-armhf-armhf-libvirt-raw 15 saverestore-support-check    fail  like 184509
 test-amd64-amd64-xl-qemut-ws16-amd64 19 guest-stop            fail like 184509
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 184509
 test-amd64-i386-xl-qemuu-ws16-amd64 19 guest-stop             fail like 184509
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 184509
 test-amd64-i386-xl-pvshim    14 guest-start                  fail   never pass
 test-amd64-i386-libvirt-xsm  15 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt     15 migrate-support-check        fail   never pass
 test-amd64-i386-libvirt      15 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit2  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit2  16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl          15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl          16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-credit1  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit1  16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-thunderx 15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-thunderx 16 saverestore-support-check    fail   never pass
 test-arm64-arm64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-xsm 16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-xsm      15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-xsm      16 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-armhf-armhf-xl-arndale  15 migrate-support-check        fail   never pass
 test-armhf-armhf-libvirt     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-arndale  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-rtds     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-rtds     16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-multivcpu 15 migrate-support-check        fail  never pass
 test-armhf-armhf-xl-multivcpu 16 saverestore-support-check    fail  never pass
 test-amd64-i386-libvirt-raw  14 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt-vhd 14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 15 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-vhd      14 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-vhd      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-qcow2 14 migrate-support-check        fail never pass
 test-armhf-armhf-libvirt-raw 14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-credit1  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit1  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl          15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-credit2  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit2  16 saverestore-support-check    fail   never pass

version targeted for testing:
 xen                  40a74677023a5eb20d7bbc09def37884f80919bd
baseline version:
 xen                  c378ff8983cd69786c35117e49640f027e581bca

Last test of basis   184509  2024-01-29 01:55:34 Z    1 days
Testing same since   184518  2024-01-29 15:11:13 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Andrew Cooper <andrew.cooper3@citrix.com>
  Elias El Yandouzi <eliasely@amazon.com>
  Jan Beulich <jbeulich@suse.com>
  Julien Grall <jgrall@amazon.com>
  Oleksii Kurochko <oleksii.kurochko@gmail.com>
  Shawn Anastasio <sanastasio@raptorengineering.com>

jobs:
 build-amd64-xsm                                              pass    
 build-arm64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64-xtf                                              pass    
 build-amd64                                                  pass    
 build-arm64                                                  pass    
 build-armhf                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-arm64-libvirt                                          pass    
 build-armhf-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-prev                                             pass    
 build-i386-prev                                              pass    
 build-amd64-pvops                                            pass    
 build-arm64-pvops                                            pass    
 build-armhf-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-xtf-amd64-amd64-1                                       pass    
 test-xtf-amd64-amd64-2                                       pass    
 test-xtf-amd64-amd64-3                                       pass    
 test-xtf-amd64-amd64-4                                       pass    
 test-xtf-amd64-amd64-5                                       pass    
 test-amd64-amd64-xl                                          pass    
 test-amd64-coresched-amd64-xl                                pass    
 test-arm64-arm64-xl                                          pass    
 test-armhf-armhf-xl                                          pass    
 test-amd64-i386-xl                                           pass    
 test-amd64-coresched-i386-xl                                 pass    
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm           pass    
 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm            pass    
 test-amd64-amd64-xl-qemut-stubdom-debianhvm-amd64-xsm        pass    
 test-amd64-i386-xl-qemut-stubdom-debianhvm-amd64-xsm         pass    
 test-amd64-amd64-xl-qemut-debianhvm-i386-xsm                 fail    
 test-amd64-i386-xl-qemut-debianhvm-i386-xsm                  pass    
 test-amd64-amd64-xl-qemuu-debianhvm-i386-xsm                 pass    
 test-amd64-i386-xl-qemuu-debianhvm-i386-xsm                  pass    
 test-amd64-amd64-libvirt-xsm                                 pass    
 test-arm64-arm64-libvirt-xsm                                 pass    
 test-amd64-i386-libvirt-xsm                                  pass    
 test-amd64-amd64-xl-xsm                                      pass    
 test-arm64-arm64-xl-xsm                                      pass    
 test-amd64-i386-xl-xsm                                       pass    
 test-amd64-amd64-qemuu-nested-amd                            fail    
 test-amd64-amd64-xl-pvhv2-amd                                pass    
 test-amd64-i386-qemut-rhel6hvm-amd                           pass    
 test-amd64-i386-qemuu-rhel6hvm-amd                           pass    
 test-amd64-amd64-dom0pvh-xl-amd                              pass    
 test-amd64-amd64-xl-qemut-debianhvm-amd64                    pass    
 test-amd64-i386-xl-qemut-debianhvm-amd64                     pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64                    pass    
 test-amd64-i386-xl-qemuu-debianhvm-amd64                     pass    
 test-amd64-i386-freebsd10-amd64                              pass    
 test-amd64-amd64-qemuu-freebsd11-amd64                       pass    
 test-amd64-amd64-qemuu-freebsd12-amd64                       pass    
 test-amd64-amd64-xl-qemuu-ovmf-amd64                         pass    
 test-amd64-i386-xl-qemuu-ovmf-amd64                          pass    
 test-amd64-amd64-xl-qemut-win7-amd64                         fail    
 test-amd64-i386-xl-qemut-win7-amd64                          fail    
 test-amd64-amd64-xl-qemuu-win7-amd64                         fail    
 test-amd64-i386-xl-qemuu-win7-amd64                          fail    
 test-amd64-amd64-xl-qemut-ws16-amd64                         fail    
 test-amd64-i386-xl-qemut-ws16-amd64                          fail    
 test-amd64-amd64-xl-qemuu-ws16-amd64                         fail    
 test-amd64-i386-xl-qemuu-ws16-amd64                          fail    
 test-armhf-armhf-xl-arndale                                  pass    
 test-amd64-amd64-examine-bios                                pass    
 test-amd64-i386-examine-bios                                 pass    
 test-amd64-amd64-xl-credit1                                  pass    
 test-arm64-arm64-xl-credit1                                  pass    
 test-armhf-armhf-xl-credit1                                  pass    
 test-amd64-amd64-xl-credit2                                  pass    
 test-arm64-arm64-xl-credit2                                  pass    
 test-armhf-armhf-xl-credit2                                  pass    
 test-amd64-amd64-xl-qemuu-dmrestrict-amd64-dmrestrict        pass    
 test-amd64-i386-xl-qemuu-dmrestrict-amd64-dmrestrict         pass    
 test-amd64-amd64-examine                                     pass    
 test-arm64-arm64-examine                                     pass    
 test-armhf-armhf-examine                                     pass    
 test-amd64-i386-examine                                      pass    
 test-amd64-i386-freebsd10-i386                               pass    
 test-amd64-amd64-qemuu-nested-intel                          pass    
 test-amd64-amd64-xl-pvhv2-intel                              pass    
 test-amd64-i386-qemut-rhel6hvm-intel                         pass    
 test-amd64-i386-qemuu-rhel6hvm-intel                         pass    
 test-amd64-amd64-dom0pvh-xl-intel                            pass    
 test-amd64-amd64-libvirt                                     pass    
 test-armhf-armhf-libvirt                                     pass    
 test-amd64-i386-libvirt                                      pass    
 test-amd64-amd64-livepatch                                   pass    
 test-amd64-i386-livepatch                                    pass    
 test-amd64-amd64-migrupgrade                                 pass    
 test-amd64-i386-migrupgrade                                  pass    
 test-amd64-amd64-xl-multivcpu                                pass    
 test-armhf-armhf-xl-multivcpu                                pass    
 test-amd64-amd64-pair                                        pass    
 test-amd64-i386-pair                                         pass    
 test-amd64-amd64-libvirt-pair                                pass    
 test-amd64-i386-libvirt-pair                                 pass    
 test-amd64-amd64-xl-pvshim                                   pass    
 test-amd64-i386-xl-pvshim                                    fail    
 test-amd64-amd64-pygrub                                      pass    
 test-armhf-armhf-libvirt-qcow2                               pass    
 test-amd64-amd64-xl-qcow2                                    pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-armhf-armhf-libvirt-raw                                 pass    
 test-amd64-i386-libvirt-raw                                  pass    
 test-amd64-amd64-xl-rtds                                     pass    
 test-armhf-armhf-xl-rtds                                     pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64-shadow             pass    
 test-amd64-i386-xl-qemuu-debianhvm-amd64-shadow              pass    
 test-amd64-amd64-xl-shadow                                   pass    
 test-amd64-i386-xl-shadow                                    pass    
 test-arm64-arm64-xl-thunderx                                 pass    
 test-amd64-amd64-examine-uefi                                pass    
 test-amd64-i386-examine-uefi                                 pass    
 test-amd64-amd64-libvirt-vhd                                 pass    
 test-arm64-arm64-xl-vhd                                      pass    
 test-armhf-armhf-xl-vhd                                      pass    
 test-amd64-i386-xl-vhd                                       pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Pushing revision :

To xenbits.xen.org:/home/xen/git/xen.git
   c378ff8983..40a7467702  40a74677023a5eb20d7bbc09def37884f80919bd -> master


From xen-devel-bounces@lists.xenproject.org Tue Jan 30 09:07:58 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 30 Jan 2024 09:07:58 +0000
Received: from list by lists.xenproject.org with outflank-mailman.673234.1047493 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUk5l-0002N5-Ip; Tue, 30 Jan 2024 09:07:41 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 673234.1047493; Tue, 30 Jan 2024 09:07:41 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUk5l-0002My-Es; Tue, 30 Jan 2024 09:07:41 +0000
Received: by outflank-mailman (input) for mailman id 673234;
 Tue, 30 Jan 2024 09:07:40 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=BUgQ=JI=cloud.com=roger.pau@srs-se1.protection.inumbo.net>)
 id 1rUk5k-0002Ms-CK
 for xen-devel@lists.xenproject.org; Tue, 30 Jan 2024 09:07:40 +0000
Received: from mail-wr1-x431.google.com (mail-wr1-x431.google.com
 [2a00:1450:4864:20::431])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 03d14534-bf4f-11ee-8a43-1f161083a0e0;
 Tue, 30 Jan 2024 10:07:38 +0100 (CET)
Received: by mail-wr1-x431.google.com with SMTP id
 ffacd0b85a97d-33af40493f4so901559f8f.3
 for <xen-devel@lists.xenproject.org>; Tue, 30 Jan 2024 01:07:38 -0800 (PST)
Received: from localhost ([213.195.118.74]) by smtp.gmail.com with ESMTPSA id
 ck14-20020a5d5e8e000000b0033afcf26e11sm586620wrb.29.2024.01.30.01.07.37
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 30 Jan 2024 01:07:37 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 03d14534-bf4f-11ee-8a43-1f161083a0e0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1706605658; x=1707210458; darn=lists.xenproject.org;
        h=in-reply-to:content-disposition:mime-version:references:message-id
         :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to;
        bh=FtHLxH7cs3c5SJogzL1Yq2dCgbgujdB2fUN48I8yxUw=;
        b=PXV7oZxFT6vkAkmW9xQ824O67L9dksRJOt3/6NaRk0Hqu8G2bagI/lKvLrzZdjiUol
         E82pBcGPoxF5gg6ao3vjiLDTwCRnon5ftscanNXCAMN1mV6/u4TfodNiG6tQvL++dA8y
         7SNXgXfn9NS+G92DzktcqwzB45B8PcRzexxQ8=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706605658; x=1707210458;
        h=in-reply-to:content-disposition:mime-version:references:message-id
         :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to;
        bh=FtHLxH7cs3c5SJogzL1Yq2dCgbgujdB2fUN48I8yxUw=;
        b=BjcW7HtS3OJrnuLNIaLMNCHQHZBLGnylM9QR5u96Lypd36VyVXnLX7uXBs3Q7GXBJ8
         k+S0uzyBDZRaF8jtylOVockVNVGW3Fv7qIkiCPolybkz6rpBt6qTb7UNOMo6WlKR8Qts
         sN8ln0QDlSxH8cn4ImwMnTUSEn2aArcWiugBmgshDAHiCZNdVnhEeqLnBjG5AZ6yuWIs
         B7KfUa3FIpHk1ru4Qei3CNHib3LHN6Mip8yFYwo14VnsF+oIwMpxfEdno1e35lBTv+Od
         DRTaGSO01rTBMe6LqAIVqUcFdfkwLESLJfBmwQsUb7fCmMpGKUF276eIo1Ijlw67fwKm
         2P9A==
X-Gm-Message-State: AOJu0YwRkCAT5Zu2LTmklkx19mb8sjm7ACZhlnnmy/dTkaIA/VJjl+y8
	nZetPYWo7j5Z1mLh85iIDoR2bz0AJSvIfoer815atsmu3ptsyB2G/DSC9xyREY0=
X-Google-Smtp-Source: AGHT+IFLxhDmdcX3IN6b2Fn+UG9CGRbGL/awFLcQCQToWkfjaxuNkbTHPqxTVGG3vpy19ocVt6A2Jw==
X-Received: by 2002:a5d:6da3:0:b0:33a:eda8:336a with SMTP id u3-20020a5d6da3000000b0033aeda8336amr4089276wrs.26.1706605657835;
        Tue, 30 Jan 2024 01:07:37 -0800 (PST)
Date: Tue, 30 Jan 2024 10:07:36 +0100
From: Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
To: Bjorn Helgaas <helgaas@kernel.org>
Cc: "Chen, Jiqian" <Jiqian.Chen@amd.com>,
	"Rafael J . Wysocki" <rafael@kernel.org>,
	Len Brown <lenb@kernel.org>, Juergen Gross <jgross@suse.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>,
	Boris Ostrovsky <boris.ostrovsky@oracle.com>,
	Bjorn Helgaas <bhelgaas@google.com>,
	"xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>,
	"linux-pci@vger.kernel.org" <linux-pci@vger.kernel.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"linux-acpi@vger.kernel.org" <linux-acpi@vger.kernel.org>,
	"Hildebrand, Stewart" <Stewart.Hildebrand@amd.com>,
	"Huang, Ray" <Ray.Huang@amd.com>,
	"Ragiadakou, Xenia" <Xenia.Ragiadakou@amd.com>
Subject: Re: [RFC KERNEL PATCH v4 3/3] PCI/sysfs: Add gsi sysfs for pci_dev
Message-ID: <Zbi8WJPEUSMgjuVY@macbook>
References: <BL1PR12MB5849B51FADC8226764078A98E77A2@BL1PR12MB5849.namprd12.prod.outlook.com>
 <20240129220113.GA475965@bhelgaas>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
In-Reply-To: <20240129220113.GA475965@bhelgaas>

On Mon, Jan 29, 2024 at 04:01:13PM -0600, Bjorn Helgaas wrote:
> On Thu, Jan 25, 2024 at 07:17:24AM +0000, Chen, Jiqian wrote:
> > On 2024/1/24 00:02, Bjorn Helgaas wrote:
> > > On Tue, Jan 23, 2024 at 10:13:52AM +0000, Chen, Jiqian wrote:
> > >> On 2024/1/23 07:37, Bjorn Helgaas wrote:
> > >>> On Fri, Jan 05, 2024 at 02:22:17PM +0800, Jiqian Chen wrote:
> > >>>> There is a need for some scenarios to use gsi sysfs.
> > >>>> For example, when xen passthrough a device to dumU, it will
> > >>>> use gsi to map pirq, but currently userspace can't get gsi
> > >>>> number.
> > >>>> So, add gsi sysfs for that and for other potential scenarios.
> > >> ...
> > > 
> > >>> I don't know enough about Xen to know why it needs the GSI in
> > >>> userspace.  Is this passthrough brand new functionality that can't be
> > >>> done today because we don't expose the GSI yet?
> 
> I assume this must be new functionality, i.e., this kind of
> passthrough does not work today, right?
> 
> > >> has ACPI support and is responsible for detecting and controlling
> > >> the hardware, also it performs privileged operations such as the
> > >> creation of normal (unprivileged) domains DomUs. When we give to a
> > >> DomU direct access to a device, we need also to route the physical
> > >> interrupts to the DomU. In order to do so Xen needs to setup and map
> > >> the interrupts appropriately.
> > > 
> > > What kernel interfaces are used for this setup and mapping?
> >
> > For passthrough devices, the setup and mapping of routing physical
> > interrupts to DomU are done on Xen hypervisor side, hypervisor only
> > need userspace to provide the GSI info, see Xen code:
> > xc_physdev_map_pirq require GSI and then will call hypercall to pass
> > GSI into hypervisor and then hypervisor will do the mapping and
> > routing, kernel doesn't do the setup and mapping.
> 
> So we have to expose the GSI to userspace not because userspace itself
> uses it, but so userspace can turn around and pass it back into the
> kernel?

No, the point is to pass it back to Xen, which doesn't know the
mapping between GSIs and PCI devices because it can't execute the ACPI
AML resource methods that provide such information.

The (Linux) kernel is just a proxy that forwards the hypercalls from
user-space tools into Xen.

> It seems like it would be better for userspace to pass an identifier
> of the PCI device itself back into the hypervisor.  Then the interface
> could be generic and potentially work even on non-ACPI systems where
> the GSI concept doesn't apply.

We would still need a way to pass the GSI to PCI device relation to
the hypervisor, and then cache such data in the hypervisor.

I don't think we have any preference of where such information should
be exposed, but given GSIs are an ACPI concept not specific to Xen
they should be exposed by a non-Xen specific interface.

Thanks, Roger.


From xen-devel-bounces@lists.xenproject.org Tue Jan 30 09:13:38 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 30 Jan 2024 09:13:38 +0000
Received: from list by lists.xenproject.org with outflank-mailman.673237.1047501 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUkBT-0003ro-6D; Tue, 30 Jan 2024 09:13:35 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 673237.1047501; Tue, 30 Jan 2024 09:13:35 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUkBT-0003rh-33; Tue, 30 Jan 2024 09:13:35 +0000
Received: by outflank-mailman (input) for mailman id 673237;
 Tue, 30 Jan 2024 09:13:33 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=XFHt=JI=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rUkBR-0003rb-Qu
 for xen-devel@lists.xenproject.org; Tue, 30 Jan 2024 09:13:33 +0000
Received: from mail-lj1-x22f.google.com (mail-lj1-x22f.google.com
 [2a00:1450:4864:20::22f])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id d6645c72-bf4f-11ee-98f5-efadbce2ee36;
 Tue, 30 Jan 2024 10:13:31 +0100 (CET)
Received: by mail-lj1-x22f.google.com with SMTP id
 38308e7fff4ca-2cdeb954640so51262201fa.3
 for <xen-devel@lists.xenproject.org>; Tue, 30 Jan 2024 01:13:31 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 z19-20020a6bc913000000b007bfd5ce5c4dsm2216828iof.13.2024.01.30.01.13.30
 for <xen-devel@lists.xenproject.org>
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 30 Jan 2024 01:13:30 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: d6645c72-bf4f-11ee-98f5-efadbce2ee36
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1706606011; x=1707210811; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:to
         :content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=FXCw4hi4qK0blLQWaK4fE3FyRpB/fTdMcH+pTmuJvMc=;
        b=cXDifJGUQ/T8HMgtoRfAONtmsmTKhTrJIsFv9WBkwrmTWUSg6tQGttNF5Dus1kLLQ2
         WLkuxnpTAXdqykjm+XS0VgekIkEZFV4OWqMLG5MEvV9PeNUlrXAQl+Ar5VBHhMwytRLM
         xJLV8xSZslwFnWWxyHJYLFQhXzhCGVb8xX1yC6WqBUNGo0EPmOtiafNHNJ23wb0tuQSm
         HNrp1xq8n/p0RhtLIL8Rdeuyl2AHSqf6f5qh+8Se5mPvFWEXcoAhiOJDDxf3Mp3ErFYO
         XngJ3mtmjyRMtXMoA8feV7ksDnx6lfUzQ7+s+r1wtoyU27GqK3BD8KPR6z1uWi5TbbYn
         dZOw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706606011; x=1707210811;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:to
         :content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=FXCw4hi4qK0blLQWaK4fE3FyRpB/fTdMcH+pTmuJvMc=;
        b=EVzLE6L55OpLOC1+cfnlOuwTSrE6Q4eTDwaKI0z9bdMeOzrYjuQSTHP/Anjio1/uEN
         +ZznKn1qJj/TB+xHp5w2TIBkToh8qWGLDMm8eKOaPST/RreSI09FQq9InCWVa4lN0q3i
         kG8SAkXQGmi+hhDbPFVgp21/CQi1hEEr9c8XM6yMfprlFBzRqWWukdchM5TqnFqsMvW2
         VFMG0HsDNPUneuvW2MexjEP+aWmP5bPJ7LPUBNN8ljuHY5scueyuLghqFO3Mh1rkAhJ7
         5H7SfFcszqjT/sm6QY/DLn98YNH8HsI5CPtD+eTjYhFzxp4CNckNxY68FPUR+rv6naFi
         lE0A==
X-Gm-Message-State: AOJu0Yzc3IVYxT91H6R0rN8U+IExgJDuSffZsxWiluXE5xdU+cMWdltH
	nreowCb0PuDdK2byB60NbV8aVt/F7/tjQ4/wGdhFp5OSnfXZA48gL6g5SLUnoBjci0xCKmTIV4g
	=
X-Google-Smtp-Source: AGHT+IHBRx74JCSPaZ5lUnjejWPKnrjRHdrSNYClPt867X/BEfMQMOkylFVsN/MjiJsn65FYyzM+bg==
X-Received: by 2002:a2e:a453:0:b0:2cf:4731:f171 with SMTP id v19-20020a2ea453000000b002cf4731f171mr5192691ljn.33.1706606011047;
        Tue, 30 Jan 2024 01:13:31 -0800 (PST)
Message-ID: <deb789fe-11a1-4104-a402-f70c925e5e76@suse.com>
Date: Tue, 30 Jan 2024 10:13:28 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: xen | Failed pipeline for staging | 40a74677
Content-Language: en-US
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
References: <65b8bae76d529_2c2ca3148223140@gitlab-sidekiq-catchall-v2-84f96d7767-49q8d.mail>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <65b8bae76d529_2c2ca3148223140@gitlab-sidekiq-catchall-v2-84f96d7767-49q8d.mail>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 30.01.2024 10:01, GitLab wrote:
> 
> 
> Pipeline #1155726092 has failed!
> 
> Project: xen ( https://gitlab.com/xen-project/xen )
> Branch: staging ( https://gitlab.com/xen-project/xen/-/commits/staging )
> 
> Commit: 40a74677 ( https://gitlab.com/xen-project/xen/-/commit/40a74677023a5eb20d7bbc09def37884f80919bd )
> Commit Message: x86: purge NMI_IO_APIC
> 
> Even going back to 3.2 ...
> Commit Author: Jan Beulich ( https://gitlab.com/jbeulich )
> 
> 
> Pipeline #1155726092 ( https://gitlab.com/xen-project/xen/-/pipelines/1155726092 ) triggered by Ganis ( https://gitlab.com/ganis )
> had 6 failed jobs.
> 
> Job #6040704964 ( https://gitlab.com/xen-project/xen/-/jobs/6040704964/raw )
> 
> Stage: test
> Name: zen3p-pci-hvm-x86-64-gcc-debug

While this one shows an odd DHCP failure in the guest (can't spot any reason
in the log), ...

> Job #6040704957 ( https://gitlab.com/xen-project/xen/-/jobs/6040704957/raw )
> 
> Stage: test
> Name: adl-pci-hvm-x86-64-gcc-debug
> Job #6040704949 ( https://gitlab.com/xen-project/xen/-/jobs/6040704949/raw )
> 
> Stage: test
> Name: adl-suspend-x86-64-gcc-debug
> Job #6040704943 ( https://gitlab.com/xen-project/xen/-/jobs/6040704943/raw )
> 
> Stage: test
> Name: adl-smoke-x86-64-gcc-debug
> Job #6040704945 ( https://gitlab.com/xen-project/xen/-/jobs/6040704945/raw )
> 
> Stage: test
> Name: adl-smoke-x86-64-dom0pvh-gcc-debug
> Job #6040704953 ( https://gitlab.com/xen-project/xen/-/jobs/6040704953/raw )
> 
> Stage: test
> Name: adl-pci-pv-x86-64-gcc-debug

... all of these look to have timed out. Will ping Marek ...

Jan


From xen-devel-bounces@lists.xenproject.org Tue Jan 30 09:13:51 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 30 Jan 2024 09:13:51 +0000
Received: from list by lists.xenproject.org with outflank-mailman.673238.1047513 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUkBj-0004Bx-EY; Tue, 30 Jan 2024 09:13:51 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 673238.1047513; Tue, 30 Jan 2024 09:13:51 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUkBj-0004Bq-AC; Tue, 30 Jan 2024 09:13:51 +0000
Received: by outflank-mailman (input) for mailman id 673238;
 Tue, 30 Jan 2024 09:13:49 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=Sght=JI=amd.com=Michal.Orzel@srs-se1.protection.inumbo.net>)
 id 1rUkBh-0003rb-7B
 for xen-devel@lists.xenproject.org; Tue, 30 Jan 2024 09:13:49 +0000
Received: from NAM10-BN7-obe.outbound.protection.outlook.com
 (mail-bn7nam10on20601.outbound.protection.outlook.com
 [2a01:111:f403:2009::601])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id def99500-bf4f-11ee-98f5-efadbce2ee36;
 Tue, 30 Jan 2024 10:13:46 +0100 (CET)
Received: from BN8PR12CA0027.namprd12.prod.outlook.com (2603:10b6:408:60::40)
 by BN9PR12MB5324.namprd12.prod.outlook.com (2603:10b6:408:105::15)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7228.34; Tue, 30 Jan
 2024 09:13:43 +0000
Received: from BN2PEPF000044AA.namprd04.prod.outlook.com
 (2603:10b6:408:60:cafe::7b) by BN8PR12CA0027.outlook.office365.com
 (2603:10b6:408:60::40) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7228.36 via Frontend
 Transport; Tue, 30 Jan 2024 09:13:43 +0000
Received: from SATLEXMB04.amd.com (165.204.84.17) by
 BN2PEPF000044AA.mail.protection.outlook.com (10.167.243.105) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.7249.19 via Frontend Transport; Tue, 30 Jan 2024 09:13:43 +0000
Received: from SATLEXMB03.amd.com (10.181.40.144) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.34; Tue, 30 Jan
 2024 03:13:40 -0600
Received: from [10.252.147.188] (10.180.168.240) by SATLEXMB03.amd.com
 (10.181.40.144) with Microsoft SMTP Server id 15.1.2507.34 via Frontend
 Transport; Tue, 30 Jan 2024 03:13:38 -0600
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: def99500-bf4f-11ee-98f5-efadbce2ee36
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=OPu0Ox+xxeHR8fB42yv4LSJ+qheJSjCK5CSMI5MAo82PkOZvYxoxID9t/xopjki7OL2vjVXJPkZVbqHVMH9twJeR+LA7LFtetP5qmx2/d8ssuZEr0WnmdH3b3zsAaPmGTMhdlFiWRBgKeZZk0I5AXUtRFZ+5LEhFWI39KSnUVE6HqvCgeKMHPCh/LI5RQt2oSj562J1vC1ybN3zbVyLHpqwkofNHxf2iFfx826PWcA8eSdf/GesUoELeFxuYK1iFAxbAUkp3X2vWKtNTEyGNfl3PoZHxmuEW2b58im/OGAipZ10rdM8F7HjGxd4hU6S1m1ooRkTLE+ngPFS0CVFErA==
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=M1tf0h5fDWJUu9J22LY4VQrraOHY8XbiKGDI1Z0h7fQ=;
 b=NI7OfFjrKNtqZR1Rq3Mhq1xLYEBOvFB2WwN6CBBxXGaCjIOU0KJnf61lzO5MjdQCtXemJsTfN5TOVql0+5CCaUimbNhA7f01TJ9U/iyQl5Z5EU6IS9YBlAnbFaXvBMqybbZzHKB9QatZEGO7jYkoOrnCwkbfE2xhdtIqmgjG3vAVbMMu3gQBPHfh5TGu4bBpn9HswnllPx/Wd3VmLuAL4bHTbrDy4hLfnMm4qbaAiyW3wqhSQEcBMXLXYo5VSc8s1olwQudroUp/056WL4ETkuidenJ4fHAoUxIeR6bLEcjsvkRqRY18j2b3oiDqLGyNmMwvtCYSM5E8me67UYm3GA==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=minervasys.tech 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)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=M1tf0h5fDWJUu9J22LY4VQrraOHY8XbiKGDI1Z0h7fQ=;
 b=2JhiDmkZOUmPTG1He4oy+ZhSFPjPDClRAGNn2fbJG1Rswzn+AK8y2WuFlUhF9BbFvaIasOQ/de8I2/p16b0+3OUn1trSekUyV321kZXnEvH6lq9Vw13klXNsegrw3lTe74CSfU0xduu84nEuA4UtFk7LzGUBTC7tzOCfRZ+16aE=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C
Message-ID: <64ca5e49-54a0-4fec-9a37-71a83e373cad@amd.com>
Date: Tue, 30 Jan 2024 10:13:32 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v6 00/15] Arm cache coloring
To: Carlo Nonato <carlo.nonato@minervasys.tech>,
	<xen-devel@lists.xenproject.org>
CC: <andrea.bastoni@minervasys.tech>, Andrew Cooper
	<andrew.cooper3@citrix.com>, George Dunlap <george.dunlap@citrix.com>, Jan
 Beulich <jbeulich@suse.com>, Julien Grall <julien@xen.org>, Stefano
 Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>, Bertrand Marquis
	<bertrand.marquis@arm.com>, Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
	Anthony PERARD <anthony.perard@citrix.com>, Juergen Gross <jgross@suse.com>
References: <20240129171811.21382-1-carlo.nonato@minervasys.tech>
Content-Language: en-US
From: Michal Orzel <michal.orzel@amd.com>
In-Reply-To: <20240129171811.21382-1-carlo.nonato@minervasys.tech>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 7bit
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: BN2PEPF000044AA:EE_|BN9PR12MB5324:EE_
X-MS-Office365-Filtering-Correlation-Id: d217ea9b-8c5f-4c54-ffcc-08dc2173c1d8
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam: BCL:0;
X-Microsoft-Antispam-Message-Info:
	dwy3KATbwLtNfSx7N+9yHA/ABDO81jrK+FetKRvCOUpgvG0zaVd0nRfuBHYXOIop1mxp4cowMo5duD9Zg3zq2Wz6zri77QfI5HZKImhk6C8ZnbKYuMQJnyOIA5HzdqUxDjC1OOsq9OilPmOgH3KPOxLQgEFJ5tNLp51sQ61uQDp/C2AA8/vDxLHWgb20lliw73xgz9DxDr3RtAfzzA791zYwDrOR46lnaj0VbNzLxfP3iuuL8V4VgWQ+nNSkhafFT8lGcKswvUqiQUpkuK8KJ7Zoju9g+5WAxmTHGDnHGd77HO3r7QwSqW6ndMoLnjH8pDZwmVxgz3xPWzP6jOgw7asgem/WaOphccMEvc+67rfoOD0HcX2k0IEiDTyHAuwNCHQAHSWsyVF1bqej6knOMZyOLf/NprMBRegsaAibI0dF5z+uraFQq3WA2s39Ft2AKxkQ5UfEPPOb3nTv6CTbMDH4j6mnP0iKdZW3qGu6XNEvuVJq8dliMlJKJwzb6as3VP2LkAnfFVvrefpB7b6QbMShYbg+c0CMLDh/ZaOgv3FJj+Ms+fwF7pWTkRzEcqwkGf6hs7g3Ce9RdCvBz6KW90e5idCINIWnZT4XT4tUjsdHUcWE3ExFHGYPHxVz86LPGN1EhoOZtBbrAvQ9A6Nq+4Lk3wWnPceh9oGKzBqlcFSDuLKu9yc/05CuL748hONRkZAMF5rhfzKB3J4+aCR8twXBGJp8VkklnJFw2cIdsQ3bQBxj9hZWJ6RIjMhfcRVxAfK1UcR8UI+pOg0QjoZ3XSpvLk5EjZF2OASL1SXD91c=
X-Forefront-Antispam-Report:
	CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230031)(4636009)(346002)(136003)(376002)(396003)(39860400002)(230922051799003)(64100799003)(451199024)(82310400011)(1800799012)(186009)(40470700004)(36840700001)(46966006)(2616005)(2906002)(36860700001)(47076005)(86362001)(8936002)(41300700001)(36756003)(83380400001)(478600001)(31696002)(81166007)(82740400003)(356005)(4326008)(426003)(110136005)(26005)(70586007)(316002)(54906003)(336012)(70206006)(966005)(16576012)(53546011)(5660300002)(7416002)(6666004)(8676002)(44832011)(40460700003)(40480700001)(31686004)(36900700001)(43740500002);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Jan 2024 09:13:43.6478
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: d217ea9b-8c5f-4c54-ffcc-08dc2173c1d8
X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com]
X-MS-Exchange-CrossTenant-AuthSource:
	BN2PEPF000044AA.namprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN9PR12MB5324

Hi Carlo,

On 29/01/2024 18:17, Carlo Nonato wrote:
> 
> 
> Shared caches in multi-core CPU architectures represent a problem for
> predictability of memory access latency. This jeopardizes applicability
> of many Arm platform in real-time critical and mixed-criticality
> scenarios. We introduce support for cache partitioning with page
> coloring, a transparent software technique that enables isolation
> between domains and Xen, and thus avoids cache interference.
> 
> When creating a domain, a simple syntax (e.g. `0-3` or `4-11`) allows
> the user to define assignments of cache partitions ids, called colors,
> where assigning different colors guarantees no mutual eviction on cache
> will ever happen. This instructs the Xen memory allocator to provide
> the i-th color assignee only with pages that maps to color i, i.e. that
> are indexed in the i-th cache partition.
> 
> The proposed implementation supports the dom0less feature.
> The proposed implementation doesn't support the static-mem feature.
> The solution has been tested in several scenarios, including Xilinx Zynq
> MPSoCs.
> 
> Open points:
> - Michal found some problem here
> https://patchew.org/Xen/20230123154735.74832-1-carlo.nonato@minervasys.tech/20230123154735.74832-4-carlo.nonato@minervasys.tech/#a7a06a26-ae79-402c-96a4-a1ebfe8b5862@amd.com
>   but I havent fully understood it. In the meantime I want to advance with v6,
>   so I hope we can continue the discussion here.
The problem is that when LLC coloring is enabled, you use allocate_memory() for hwdom, just like for any
other domain, so it will get assigned a VA range from a typical Xen guest memory map (i.e. GUEST_RAM{0,1}_{BASE,SIZE}).
This can result in memory conflicts given that the HW resources are mapped 1:1 to it (MMIO, reserved memory regions).
Instead, for hwdom we should use the host memory layout to prevent these conflicts. A good example is find_unallocated_memory().
You need to:
 - fetch available RAM,
 - remove reserved-memory regions,
 - report ranges (+aligning the base and skipping banks that are not reasonable big)
This will give you a list of memory regions you can then use to pass to allocate_bank_memory().
The problem, as always, is to determine the size of the first region so that is is sufficiently
large to keep kernel+dtb+initrd in relatively close proximity.

~Michal



From xen-devel-bounces@lists.xenproject.org Tue Jan 30 09:14:09 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 30 Jan 2024 09:14:09 +0000
Received: from list by lists.xenproject.org with outflank-mailman.673240.1047522 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUkC1-0004ix-LA; Tue, 30 Jan 2024 09:14:09 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 673240.1047522; Tue, 30 Jan 2024 09:14:09 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUkC1-0004iq-II; Tue, 30 Jan 2024 09:14:09 +0000
Received: by outflank-mailman (input) for mailman id 673240;
 Tue, 30 Jan 2024 09:14:09 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=BUgQ=JI=cloud.com=roger.pau@srs-se1.protection.inumbo.net>)
 id 1rUkC1-0003rb-1g
 for xen-devel@lists.xenproject.org; Tue, 30 Jan 2024 09:14:09 +0000
Received: from mail-wr1-x431.google.com (mail-wr1-x431.google.com
 [2a00:1450:4864:20::431])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id ebc5820d-bf4f-11ee-98f5-efadbce2ee36;
 Tue, 30 Jan 2024 10:14:07 +0100 (CET)
Received: by mail-wr1-x431.google.com with SMTP id
 ffacd0b85a97d-33ae6dfa923so1503781f8f.1
 for <xen-devel@lists.xenproject.org>; Tue, 30 Jan 2024 01:14:07 -0800 (PST)
Received: from localhost ([213.195.118.74]) by smtp.gmail.com with ESMTPSA id
 d15-20020adfa34f000000b0033ae9f1fb82sm5906697wrb.48.2024.01.30.01.14.05
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 30 Jan 2024 01:14:06 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: ebc5820d-bf4f-11ee-98f5-efadbce2ee36
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1706606046; x=1707210846; darn=lists.xenproject.org;
        h=content-transfer-encoding:mime-version:message-id:date:subject:cc
         :to:from:from:to:cc:subject:date:message-id:reply-to;
        bh=wtnI0ArNNGn8mHTAN4YpKUsNgliWeQS0TTFhgfGDasM=;
        b=acnxfckmt750nphCfdgPkmUygPEYvFVsyIV0tTq2xN50BhtXYLcChBT3Yl/JB0h8iA
         6J6BmMmgVVVM3TmmczhFuSVSAd4Wd4w0RKLr+jt+03jfJpB0O815d8uqI593gMzz/wI9
         wvQv8nm9rf7TvZGAqIprr6vPHGRj2sVYvkL8o=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706606046; x=1707210846;
        h=content-transfer-encoding:mime-version:message-id:date:subject:cc
         :to:from:x-gm-message-state:from:to:cc:subject:date:message-id
         :reply-to;
        bh=wtnI0ArNNGn8mHTAN4YpKUsNgliWeQS0TTFhgfGDasM=;
        b=Um9U1R1L6gVRDYI9sD1b/yyzhOcJbdMbDHZqbbEq1PZBBQxTMPE19yDmgpsO+bJpx6
         q5nBVCtFZIjAwZ4JUnIQJCsBd5Huc/SSUkzE1D34MX7iZJDb9ha0awN+39gT1R0wHL3U
         5B1zknlrMSgtDR+EhrVsxU5Pc6AgjQm845NfYZFJpNSnvF2Q0BDjAbN8okoMkw2JSkFm
         YRaUa9t7G2GVrTlFokG8vHlLYVKV7UBUErr5GZsngyMB9YxGhL8xq0Idhk0AfOp9GRyP
         4o3EEBRcnoN+TCYj4IyayXT60Roqa3iJvX/CNJTdwuLMLNSwU8VtW+Ya82y70m7c4F+d
         JYfw==
X-Gm-Message-State: AOJu0YwrAD6SH3wLP/a4PshcgcYlVheW7mhafIhG0oP3UNAiIM01DdG/
	txkXNdy6sHv5rJyrpxkD95HQTgKXa+QEAEbXsHFBKsq5qzaVYtTxiXsI4GkVa2QVFNTXiRFf0GR
	6
X-Google-Smtp-Source: AGHT+IHXz0XaYWdQ21zHsY5e1MK/7zapZHtYNFoAX8Y/98yxOBt2TekyhLpNMJX1RalpAd4wZy0ZsQ==
X-Received: by 2002:adf:eacd:0:b0:336:654a:bff2 with SMTP id o13-20020adfeacd000000b00336654abff2mr5193754wrn.10.1706606046350;
        Tue, 30 Jan 2024 01:14:06 -0800 (PST)
From: Roger Pau Monne <roger.pau@citrix.com>
To: xen-devel@lists.xenproject.org
Cc: Roger Pau Monne <roger.pau@citrix.com>,
	Jan Beulich <jbeulich@suse.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Wei Liu <wl@xen.org>
Subject: [PATCH 0/3] x86/intel: expose additional SPEC_CTRL MSR controls
Date: Tue, 30 Jan 2024 10:13:57 +0100
Message-ID: <20240130091400.50622-1-roger.pau@citrix.com>
X-Mailer: git-send-email 2.43.0
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Hello,

Introduce support for exposing {IPRED,RRSBA,BHI}_CTRL feature bits and
allow setting the corresponding SPEC_CTRL MSR fields.

The bits are documented in:

https://www.intel.com/content/www/us/en/developer/articles/technical/software-security-guidance/technical-documentation/branch-history-injection.html

Xen doesn't use the bits itself.

Thanks, Roger.

Roger Pau Monne (3):
  x86/intel: expose IPRED_CTRL to guests
  x86/intel: expose RRSBA_CTRL to guests
  x86/intel: expose BHI_CTRL to guests

 xen/arch/x86/msr.c                          | 7 +++++++
 xen/include/public/arch-x86/cpufeatureset.h | 6 +++---
 xen/tools/gen-cpuid.py                      | 3 ++-
 3 files changed, 12 insertions(+), 4 deletions(-)

-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Tue Jan 30 09:14:11 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 30 Jan 2024 09:14:11 +0000
Received: from list by lists.xenproject.org with outflank-mailman.673241.1047532 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUkC3-0004zI-SA; Tue, 30 Jan 2024 09:14:11 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 673241.1047532; Tue, 30 Jan 2024 09:14:11 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUkC3-0004zB-PI; Tue, 30 Jan 2024 09:14:11 +0000
Received: by outflank-mailman (input) for mailman id 673241;
 Tue, 30 Jan 2024 09:14:10 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=BUgQ=JI=cloud.com=roger.pau@srs-se1.protection.inumbo.net>)
 id 1rUkC2-0004AP-DC
 for xen-devel@lists.xenproject.org; Tue, 30 Jan 2024 09:14:10 +0000
Received: from mail-lf1-x12d.google.com (mail-lf1-x12d.google.com
 [2a00:1450:4864:20::12d])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id ed393177-bf4f-11ee-8a43-1f161083a0e0;
 Tue, 30 Jan 2024 10:14:09 +0100 (CET)
Received: by mail-lf1-x12d.google.com with SMTP id
 2adb3069b0e04-51117bfd452so1439764e87.3
 for <xen-devel@lists.xenproject.org>; Tue, 30 Jan 2024 01:14:09 -0800 (PST)
Received: from localhost ([213.195.118.74]) by smtp.gmail.com with ESMTPSA id
 j10-20020a05600c190a00b0040ed49605a0sm13822928wmq.47.2024.01.30.01.14.08
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 30 Jan 2024 01:14:08 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: ed393177-bf4f-11ee-8a43-1f161083a0e0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1706606049; x=1707210849; darn=lists.xenproject.org;
        h=content-transfer-encoding:mime-version:references:in-reply-to
         :message-id:date:subject:cc:to:from:from:to:cc:subject:date
         :message-id:reply-to;
        bh=wG3Bmb4l/y398tdhK+NXGZhsbCood6uPoYoVyQV7KmU=;
        b=sQNXVoVUGtuMFgUdsX1rfqdGOouSo7IJhgDcPWf1IpFlxEALUAKGKLNrj1DxO9SihA
         JLbk1LTL8AD2xo4unnBsztBDN/cd1IWM/4GqJ37bwPFtvj3bCE8w1AQAajAFJgZj04pC
         dnNIxaQ26tZYixUmZx711UOvIDQ6pevqRxYFA=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706606049; x=1707210849;
        h=content-transfer-encoding:mime-version:references:in-reply-to
         :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to;
        bh=wG3Bmb4l/y398tdhK+NXGZhsbCood6uPoYoVyQV7KmU=;
        b=eTfCxRUC5aZ5FRqzYhUt2ZLh2c8ggIkYjtMtgf/lXUtwVIWEpizoIGb772IQpMN4To
         scgr9VQOkK7S03aWik/gqdf883qDrZPq230yeyUNwzqB/t3LtLL/wGKH+kEMV6moih+Q
         yXnHh6x1zP1+H+UN14ReLh2DzfupYHjzpRwMoUdQWafNyC3S/kyyU7BhsukcVx6BzIs2
         ZVOJAqPUda71bCPk1zwbOg6EqfadLB8zaTkgUJuCFMVYKrpvgoqXx7gsbA8bQG9gqWZg
         WKMQfD7YsUqkpScbY5amUcTZSDV4cx0ALMyZJc4MBsNu9LGsimbVJUjpHIu8bYYuojhL
         hRxQ==
X-Gm-Message-State: AOJu0YxYZ8GmBO70jttkze/OEaHsBhNwo12+C+MKGDFaCHNR78GxdQiq
	y733mlMeo9N9bF2dQzHe65jv8Qhnf5eJom2GTWefD9sor4royrMNXtx582FqzV6Mho1gb1pXsAQ
	X
X-Google-Smtp-Source: AGHT+IE0RvLj4H3KdecPGe9tNdehKzRC7ywegDzvuo8DHBbLGPMneK9XqUf3omz51ctinIxdleV+sg==
X-Received: by 2002:a05:6512:1051:b0:510:146a:a122 with SMTP id c17-20020a056512105100b00510146aa122mr7378107lfb.46.1706606049284;
        Tue, 30 Jan 2024 01:14:09 -0800 (PST)
From: Roger Pau Monne <roger.pau@citrix.com>
To: xen-devel@lists.xenproject.org
Cc: Roger Pau Monne <roger.pau@citrix.com>,
	Jan Beulich <jbeulich@suse.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Wei Liu <wl@xen.org>
Subject: [PATCH 2/3] x86/intel: expose RRSBA_CTRL to guests
Date: Tue, 30 Jan 2024 10:13:59 +0100
Message-ID: <20240130091400.50622-3-roger.pau@citrix.com>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20240130091400.50622-1-roger.pau@citrix.com>
References: <20240130091400.50622-1-roger.pau@citrix.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

The CPUID feature bit signals the presence of the RRSBA_DIS_{U,S} controls in
SPEC_CTRL MSR.

Note that those controls are not used by the hypervisor.

Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
---
 xen/arch/x86/msr.c                          | 3 +++
 xen/include/public/arch-x86/cpufeatureset.h | 2 +-
 xen/tools/gen-cpuid.py                      | 2 +-
 3 files changed, 5 insertions(+), 2 deletions(-)

diff --git a/xen/arch/x86/msr.c b/xen/arch/x86/msr.c
index d500f87a5fd1..b3b4f75c021a 100644
--- a/xen/arch/x86/msr.c
+++ b/xen/arch/x86/msr.c
@@ -327,6 +327,9 @@ uint64_t msr_spec_ctrl_valid_bits(const struct cpu_policy *cp)
             (cp->feat.ipred_ctrl ? (SPEC_CTRL_IPRED_DIS_U |
                                     SPEC_CTRL_IPRED_DIS_S)
                                  : 0) |
+            (cp->feat.rrsba_ctrl ? (SPEC_CTRL_RRSBA_DIS_U |
+                                    SPEC_CTRL_RRSBA_DIS_S)
+                                 : 0) |
             0);
 }
 
diff --git a/xen/include/public/arch-x86/cpufeatureset.h b/xen/include/public/arch-x86/cpufeatureset.h
index e586e141c329..bade4edab30c 100644
--- a/xen/include/public/arch-x86/cpufeatureset.h
+++ b/xen/include/public/arch-x86/cpufeatureset.h
@@ -303,7 +303,7 @@ XEN_CPUFEATURE(INTEL_PPIN,         12*32+ 0) /*   Protected Processor Inventory
 /* Intel-defined CPU features, CPUID level 0x00000007:2.edx, word 13 */
 XEN_CPUFEATURE(INTEL_PSFD,         13*32+ 0) /*A  MSR_SPEC_CTRL.PSFD */
 XEN_CPUFEATURE(IPRED_CTRL,         13*32+ 1) /*A  MSR_SPEC_CTRL.IPRED_DIS_* */
-XEN_CPUFEATURE(RRSBA_CTRL,         13*32+ 2) /*   MSR_SPEC_CTRL.RRSBA_DIS_* */
+XEN_CPUFEATURE(RRSBA_CTRL,         13*32+ 2) /*A  MSR_SPEC_CTRL.RRSBA_DIS_* */
 XEN_CPUFEATURE(DDP_CTRL,           13*32+ 3) /*   MSR_SPEC_CTRL.DDP_DIS_U */
 XEN_CPUFEATURE(BHI_CTRL,           13*32+ 4) /*   MSR_SPEC_CTRL.BHI_DIS_S */
 XEN_CPUFEATURE(MCDT_NO,            13*32+ 5) /*A  MCDT_NO */
diff --git a/xen/tools/gen-cpuid.py b/xen/tools/gen-cpuid.py
index 45fab5e75d1c..1c6d76244177 100755
--- a/xen/tools/gen-cpuid.py
+++ b/xen/tools/gen-cpuid.py
@@ -320,7 +320,7 @@ def crunch_numbers(state):
         # as dependent features simplifies Xen's logic, and prevents the guest
         # from seeing implausible configurations.
         IBRSB: [STIBP, SSBD, INTEL_PSFD, EIBRS,
-                IPRED_CTRL],
+                IPRED_CTRL, RRSBA_CTRL],
         IBRS: [AMD_STIBP, AMD_SSBD, PSFD, AUTO_IBRS,
                IBRS_ALWAYS, IBRS_FAST, IBRS_SAME_MODE],
         IBPB: [IBPB_RET, SBPB, IBPB_BRTYPE],
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Tue Jan 30 09:14:12 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 30 Jan 2024 09:14:12 +0000
Received: from list by lists.xenproject.org with outflank-mailman.673242.1047538 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUkC4-000538-9d; Tue, 30 Jan 2024 09:14:12 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 673242.1047538; Tue, 30 Jan 2024 09:14:12 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUkC4-00052T-3c; Tue, 30 Jan 2024 09:14:12 +0000
Received: by outflank-mailman (input) for mailman id 673242;
 Tue, 30 Jan 2024 09:14:10 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=BUgQ=JI=cloud.com=roger.pau@srs-se1.protection.inumbo.net>)
 id 1rUkC2-0003rb-Hn
 for xen-devel@lists.xenproject.org; Tue, 30 Jan 2024 09:14:10 +0000
Received: from mail-wm1-x32c.google.com (mail-wm1-x32c.google.com
 [2a00:1450:4864:20::32c])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id ec992eb0-bf4f-11ee-98f5-efadbce2ee36;
 Tue, 30 Jan 2024 10:14:09 +0100 (CET)
Received: by mail-wm1-x32c.google.com with SMTP id
 5b1f17b1804b1-40eacb6067dso50835015e9.1
 for <xen-devel@lists.xenproject.org>; Tue, 30 Jan 2024 01:14:09 -0800 (PST)
Received: from localhost ([213.195.118.74]) by smtp.gmail.com with ESMTPSA id
 bn7-20020a056000060700b0033946c0f9e7sm10289572wrb.17.2024.01.30.01.14.06
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 30 Jan 2024 01:14:07 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: ec992eb0-bf4f-11ee-98f5-efadbce2ee36
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1706606048; x=1707210848; darn=lists.xenproject.org;
        h=content-transfer-encoding:mime-version:references:in-reply-to
         :message-id:date:subject:cc:to:from:from:to:cc:subject:date
         :message-id:reply-to;
        bh=R+oR8czXs/bOwfRvEg8m8bx8xQuQWdKcdIWuFikFvoM=;
        b=IeWBBMoHt0bjMe5C39T+PHCQC0pZBBBcqyilLAIj72/H1lYNHWqMl6Npeu551nbM49
         WYhoPQi16TevkAT1nfHbm/XCTSv7xrsIvz7wh3l+KXiPnRDh3iZwweHXJnYHQ03fDHRG
         8QSBTSYyLjdmwG926n087H9wDLEDcCpQtMO6U=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706606048; x=1707210848;
        h=content-transfer-encoding:mime-version:references:in-reply-to
         :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to;
        bh=R+oR8czXs/bOwfRvEg8m8bx8xQuQWdKcdIWuFikFvoM=;
        b=cTo2kwzeqgjxQsChDRGAjQd6kjhWauMdFRNPmab5GXk8Qr0NKPHlvPmLOdEIrkBcMo
         XPCjB0Km4ZKOkj2EmfrWWLKWnu26fkpO2+35z2yd9MiYSvCIK0lKrykvdopmBT2EJOOg
         ZBKmdh2YHCybvz+1y5LvBj0oW4DRa00h9RTww8EXU2gsC6fREclsB/JWO6GY0i5aoiVr
         Y8kiP4jWq1s+7JMIQEQAywwrCh6qcriz9o+8Z5EoU8bldxTNHsmqUeLd1NVuk02Ou8GT
         TuRLOYgBuClyQQ2vp2FsEqxVOI3Z/7oeqyOORunoNKabgVyiUraJ8G232j4zT0K8EYNg
         bE4w==
X-Gm-Message-State: AOJu0YwxDQ1giWT6g14TtdRhFWrdGJfstzeZrtRkUWC3jMjDWfJXe0vS
	hmcGQ1e047dEvO5o/vRypjRw4XRxQyWqwysyDv3N6vPwJ49o58cJLcJATbwOkjhcsdA/OUegfDo
	6
X-Google-Smtp-Source: AGHT+IGLO5rXBuj/zg3rp1lzBBGTk1Tt7ulOK5LYlgTh0tPl6x5P5UkASQ219JAQYPmkJ58gS5M7Gg==
X-Received: by 2002:a05:600c:1f83:b0:40e:b1f6:2ed7 with SMTP id je3-20020a05600c1f8300b0040eb1f62ed7mr7606054wmb.32.1706606047683;
        Tue, 30 Jan 2024 01:14:07 -0800 (PST)
From: Roger Pau Monne <roger.pau@citrix.com>
To: xen-devel@lists.xenproject.org
Cc: Roger Pau Monne <roger.pau@citrix.com>,
	Jan Beulich <jbeulich@suse.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Wei Liu <wl@xen.org>
Subject: [PATCH 1/3] x86/intel: expose IPRED_CTRL to guests
Date: Tue, 30 Jan 2024 10:13:58 +0100
Message-ID: <20240130091400.50622-2-roger.pau@citrix.com>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20240130091400.50622-1-roger.pau@citrix.com>
References: <20240130091400.50622-1-roger.pau@citrix.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

The CPUID feature bit signals the presence of the IPRED_DIS_{U,S} controls in
SPEC_CTRL MSR.

Note that those controls are not used by the hypervisor.

Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
---
 xen/arch/x86/msr.c                          | 3 +++
 xen/include/public/arch-x86/cpufeatureset.h | 2 +-
 xen/tools/gen-cpuid.py                      | 3 ++-
 3 files changed, 6 insertions(+), 2 deletions(-)

diff --git a/xen/arch/x86/msr.c b/xen/arch/x86/msr.c
index c33dc78cd8f6..d500f87a5fd1 100644
--- a/xen/arch/x86/msr.c
+++ b/xen/arch/x86/msr.c
@@ -324,6 +324,9 @@ uint64_t msr_spec_ctrl_valid_bits(const struct cpu_policy *cp)
     return (SPEC_CTRL_IBRS | SPEC_CTRL_STIBP |
             (ssbd       ? SPEC_CTRL_SSBD       : 0) |
             (psfd       ? SPEC_CTRL_PSFD       : 0) |
+            (cp->feat.ipred_ctrl ? (SPEC_CTRL_IPRED_DIS_U |
+                                    SPEC_CTRL_IPRED_DIS_S)
+                                 : 0) |
             0);
 }
 
diff --git a/xen/include/public/arch-x86/cpufeatureset.h b/xen/include/public/arch-x86/cpufeatureset.h
index c897c2040136..e586e141c329 100644
--- a/xen/include/public/arch-x86/cpufeatureset.h
+++ b/xen/include/public/arch-x86/cpufeatureset.h
@@ -302,7 +302,7 @@ XEN_CPUFEATURE(INTEL_PPIN,         12*32+ 0) /*   Protected Processor Inventory
 
 /* Intel-defined CPU features, CPUID level 0x00000007:2.edx, word 13 */
 XEN_CPUFEATURE(INTEL_PSFD,         13*32+ 0) /*A  MSR_SPEC_CTRL.PSFD */
-XEN_CPUFEATURE(IPRED_CTRL,         13*32+ 1) /*   MSR_SPEC_CTRL.IPRED_DIS_* */
+XEN_CPUFEATURE(IPRED_CTRL,         13*32+ 1) /*A  MSR_SPEC_CTRL.IPRED_DIS_* */
 XEN_CPUFEATURE(RRSBA_CTRL,         13*32+ 2) /*   MSR_SPEC_CTRL.RRSBA_DIS_* */
 XEN_CPUFEATURE(DDP_CTRL,           13*32+ 3) /*   MSR_SPEC_CTRL.DDP_DIS_U */
 XEN_CPUFEATURE(BHI_CTRL,           13*32+ 4) /*   MSR_SPEC_CTRL.BHI_DIS_S */
diff --git a/xen/tools/gen-cpuid.py b/xen/tools/gen-cpuid.py
index df5222a3cdd0..45fab5e75d1c 100755
--- a/xen/tools/gen-cpuid.py
+++ b/xen/tools/gen-cpuid.py
@@ -319,7 +319,8 @@ def crunch_numbers(state):
         # IBRSB/IBRS, and we pass this MSR directly to guests.  Treating them
         # as dependent features simplifies Xen's logic, and prevents the guest
         # from seeing implausible configurations.
-        IBRSB: [STIBP, SSBD, INTEL_PSFD, EIBRS],
+        IBRSB: [STIBP, SSBD, INTEL_PSFD, EIBRS,
+                IPRED_CTRL],
         IBRS: [AMD_STIBP, AMD_SSBD, PSFD, AUTO_IBRS,
                IBRS_ALWAYS, IBRS_FAST, IBRS_SAME_MODE],
         IBPB: [IBPB_RET, SBPB, IBPB_BRTYPE],
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Tue Jan 30 09:14:13 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 30 Jan 2024 09:14:13 +0000
Received: from list by lists.xenproject.org with outflank-mailman.673243.1047552 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUkC5-0005XF-Lu; Tue, 30 Jan 2024 09:14:13 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 673243.1047552; Tue, 30 Jan 2024 09:14:13 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUkC5-0005W9-Hh; Tue, 30 Jan 2024 09:14:13 +0000
Received: by outflank-mailman (input) for mailman id 673243;
 Tue, 30 Jan 2024 09:14:12 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=BUgQ=JI=cloud.com=roger.pau@srs-se1.protection.inumbo.net>)
 id 1rUkC4-0004AP-5S
 for xen-devel@lists.xenproject.org; Tue, 30 Jan 2024 09:14:12 +0000
Received: from mail-wr1-x42c.google.com (mail-wr1-x42c.google.com
 [2a00:1450:4864:20::42c])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id ee38650d-bf4f-11ee-8a43-1f161083a0e0;
 Tue, 30 Jan 2024 10:14:11 +0100 (CET)
Received: by mail-wr1-x42c.google.com with SMTP id
 ffacd0b85a97d-33ae74e5394so1190368f8f.3
 for <xen-devel@lists.xenproject.org>; Tue, 30 Jan 2024 01:14:11 -0800 (PST)
Received: from localhost ([213.195.118.74]) by smtp.gmail.com with ESMTPSA id
 ay12-20020a5d6f0c000000b0033ad47d7b86sm10256583wrb.27.2024.01.30.01.14.09
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 30 Jan 2024 01:14:10 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: ee38650d-bf4f-11ee-8a43-1f161083a0e0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1706606050; x=1707210850; darn=lists.xenproject.org;
        h=content-transfer-encoding:mime-version:references:in-reply-to
         :message-id:date:subject:cc:to:from:from:to:cc:subject:date
         :message-id:reply-to;
        bh=KzWDOBti4Ac7c4/U3wTwSVGQoEFDbLGV4XyQW2tHCJY=;
        b=s5g196EDsmWYTyun2KaVvb65UCW0yhhjAWM61aGtH35j5pEJX0J8p3rtSAak4o4sIR
         wsDCNSdIPNiSBZqKfn0/UxP0oAU7iWW/d95lxUnZjTiGS5KzQ7bU0G4NMXmfGzHayPCt
         k4kxKH7XKvc9eCT7+oi7h0gQofDw5z8nyBves=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706606050; x=1707210850;
        h=content-transfer-encoding:mime-version:references:in-reply-to
         :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to;
        bh=KzWDOBti4Ac7c4/U3wTwSVGQoEFDbLGV4XyQW2tHCJY=;
        b=aTw4VW3gCAMjpQZ7F2SAT3tMr7J3uo6vqIt4EOBCZXS23s42T057tZGvm5e8V9eLM8
         AY0TI8zrHJhEbOoHNg8BPn0MFPtGY1oFkVFGn4LVnrtgNkB88ei/5Uf/DMTFZs4At1X4
         CTOEchByQE7kFdRIlOn7EYKPuTerQmYJDx0t7mZra1OUp05OebFgxQvTezVlRr0loWXz
         Oh6rh0optZ5DQEBq6QiSmosPt3XUxBFhZGCNjWMcjzA+mpEkng475wyc7I6vNK+EGLMd
         hztyxGbG3PZkMNWk1xeGw1/BTkWBd69tRBywqD2DF8jcSKaBaiAAdkkS2UxLgGbxB4nP
         jwRQ==
X-Gm-Message-State: AOJu0YzqJ5w0IIB9RyNubUyk0VoyU+ZxRWGL0YOBsWeJrIuKB/G9Rl6F
	uofcN3yBsKr+gS2UizWsfuIqtywTYHvqOwFawTaLMSZLmWpHEN0ldIg0btFvYep2fyiLtE5DGL3
	y
X-Google-Smtp-Source: AGHT+IHqpPjbhO0DJaXjbOw4/qEYb5MD4uiG72JSNkJ9c0XXJa7NWreeS6rJiCDS9mZtjHVMKM3//w==
X-Received: by 2002:a05:6000:2c3:b0:33a:f5ea:bd7d with SMTP id o3-20020a05600002c300b0033af5eabd7dmr2416882wry.69.1706606050557;
        Tue, 30 Jan 2024 01:14:10 -0800 (PST)
From: Roger Pau Monne <roger.pau@citrix.com>
To: xen-devel@lists.xenproject.org
Cc: Roger Pau Monne <roger.pau@citrix.com>,
	Jan Beulich <jbeulich@suse.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Wei Liu <wl@xen.org>
Subject: [PATCH 3/3] x86/intel: expose BHI_CTRL to guests
Date: Tue, 30 Jan 2024 10:14:00 +0100
Message-ID: <20240130091400.50622-4-roger.pau@citrix.com>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20240130091400.50622-1-roger.pau@citrix.com>
References: <20240130091400.50622-1-roger.pau@citrix.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

The CPUID feature bit signals the presence of the BHI_DIS_S control in
SPEC_CTRL MSR.

Note that those controls are not used by the hypervisor.

Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
---
 xen/arch/x86/msr.c                          | 1 +
 xen/include/public/arch-x86/cpufeatureset.h | 2 +-
 xen/tools/gen-cpuid.py                      | 2 +-
 3 files changed, 3 insertions(+), 2 deletions(-)

diff --git a/xen/arch/x86/msr.c b/xen/arch/x86/msr.c
index b3b4f75c021a..e0d57bce40ec 100644
--- a/xen/arch/x86/msr.c
+++ b/xen/arch/x86/msr.c
@@ -330,6 +330,7 @@ uint64_t msr_spec_ctrl_valid_bits(const struct cpu_policy *cp)
             (cp->feat.rrsba_ctrl ? (SPEC_CTRL_RRSBA_DIS_U |
                                     SPEC_CTRL_RRSBA_DIS_S)
                                  : 0) |
+            (cp->feat.bhi_ctrl   ? SPEC_CTRL_BHI_DIS_S : 0) |
             0);
 }
 
diff --git a/xen/include/public/arch-x86/cpufeatureset.h b/xen/include/public/arch-x86/cpufeatureset.h
index bade4edab30c..be5c1b748e27 100644
--- a/xen/include/public/arch-x86/cpufeatureset.h
+++ b/xen/include/public/arch-x86/cpufeatureset.h
@@ -305,7 +305,7 @@ XEN_CPUFEATURE(INTEL_PSFD,         13*32+ 0) /*A  MSR_SPEC_CTRL.PSFD */
 XEN_CPUFEATURE(IPRED_CTRL,         13*32+ 1) /*A  MSR_SPEC_CTRL.IPRED_DIS_* */
 XEN_CPUFEATURE(RRSBA_CTRL,         13*32+ 2) /*A  MSR_SPEC_CTRL.RRSBA_DIS_* */
 XEN_CPUFEATURE(DDP_CTRL,           13*32+ 3) /*   MSR_SPEC_CTRL.DDP_DIS_U */
-XEN_CPUFEATURE(BHI_CTRL,           13*32+ 4) /*   MSR_SPEC_CTRL.BHI_DIS_S */
+XEN_CPUFEATURE(BHI_CTRL,           13*32+ 4) /*A  MSR_SPEC_CTRL.BHI_DIS_S */
 XEN_CPUFEATURE(MCDT_NO,            13*32+ 5) /*A  MCDT_NO */
 
 /* Intel-defined CPU features, CPUID level 0x00000007:1.ecx, word 14 */
diff --git a/xen/tools/gen-cpuid.py b/xen/tools/gen-cpuid.py
index 1c6d76244177..25d329ce486f 100755
--- a/xen/tools/gen-cpuid.py
+++ b/xen/tools/gen-cpuid.py
@@ -320,7 +320,7 @@ def crunch_numbers(state):
         # as dependent features simplifies Xen's logic, and prevents the guest
         # from seeing implausible configurations.
         IBRSB: [STIBP, SSBD, INTEL_PSFD, EIBRS,
-                IPRED_CTRL, RRSBA_CTRL],
+                IPRED_CTRL, RRSBA_CTRL, BHI_CTRL],
         IBRS: [AMD_STIBP, AMD_SSBD, PSFD, AUTO_IBRS,
                IBRS_ALWAYS, IBRS_FAST, IBRS_SAME_MODE],
         IBPB: [IBPB_RET, SBPB, IBPB_BRTYPE],
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Tue Jan 30 09:55:00 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 30 Jan 2024 09:55:00 +0000
Received: from list by lists.xenproject.org with outflank-mailman.673263.1047561 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUkpR-0005mt-Pe; Tue, 30 Jan 2024 09:54:53 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 673263.1047561; Tue, 30 Jan 2024 09:54:53 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUkpR-0005mm-Mq; Tue, 30 Jan 2024 09:54:53 +0000
Received: by outflank-mailman (input) for mailman id 673263;
 Tue, 30 Jan 2024 09:54:52 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=XFHt=JI=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rUkpQ-0005mg-9v
 for xen-devel@lists.xenproject.org; Tue, 30 Jan 2024 09:54:52 +0000
Received: from mail-ej1-x636.google.com (mail-ej1-x636.google.com
 [2a00:1450:4864:20::636])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 9c31b0ff-bf55-11ee-8a43-1f161083a0e0;
 Tue, 30 Jan 2024 10:54:51 +0100 (CET)
Received: by mail-ej1-x636.google.com with SMTP id
 a640c23a62f3a-a30e445602cso985473366b.0
 for <xen-devel@lists.xenproject.org>; Tue, 30 Jan 2024 01:54:51 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 v10-20020a92ab0a000000b00361b5daf4a7sm2735970ilh.49.2024.01.30.01.54.48
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 30 Jan 2024 01:54:49 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 9c31b0ff-bf55-11ee-8a43-1f161083a0e0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1706608490; x=1707213290; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:from:to:cc:subject:date:message-id:reply-to;
        bh=mXFE+qEytay4U0JCy4X1C0AONMYBSMXblZWeobt3Nh4=;
        b=RNLyIkp5klE9s/AwRveZEqrUK2v4CJ3/xZtnBspdbyYomuEVs5wpn7PrS9uB8Pw/FU
         5DxqScQDVvaTtLhD4CTYPObh3G15Jj5U2r6B/1TqJFhpkHeTeR7b3BqmBlT55D0zRqGf
         4LTXkGjeu/YftQGQPKFV0WAUk5z5AiK+kvHSxRcWMx9ckBjyipJXFOVA04AM0hnrTQHq
         yEF6k+LfaWKat/lh67nnoUB8rOO+QRXyJxc8L5Bru4NNoSjlSVbo+sYN6dZJinG3bPtv
         RileZZm3m0vF65Uj+H+WQpm3XG5tNEFVHy2kf1otTno9M2iAytHs07rzodQqLqa0McYz
         wwEg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706608490; x=1707213290;
        h=content-transfer-encoding:in-reply-to:autocrypt:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to;
        bh=mXFE+qEytay4U0JCy4X1C0AONMYBSMXblZWeobt3Nh4=;
        b=nR75twzoljZO7Xk2WDld4Czwlu36Cr8fxH1zo8IustAHbjZvBwZDU+feMFfiDpjIXc
         ysmc4Ig7Uhy+5+4E3srI7muQB3K4jHPgwvoHFpBVS/lYGW8iiDNPcOG8UvlJBmm1Ru0R
         st12Ph6ea+ugq9JI7fjaRGtzg+2Vu9IyozrHqVZ/Q7cQtOrnBaT2E4vEzHkRCxeylInc
         TDECDpvznbZz96ctcIaJtd4dDixrWixmBCvs7pOL+uCNoZ/Prx4LAurYqqn+tlH4VWw/
         oUDRPxLYiUtjo/fBPqsuwKdeKgHSXfsB02C7ETHhRFZpXaMGF03sABQ0neYGnYLWGXxI
         sSYA==
X-Gm-Message-State: AOJu0Yy2W3yBSopPe/SZW1J92V8ARVYEUsRkyd/CKyWcoo7xgsO+WCLN
	KvLbvk7EKLTBaYcgxLZLhwDZ/OA+r76hG0Pl75IVO4Yl1ta4bHDfrrUq33ANaw==
X-Google-Smtp-Source: AGHT+IGWG5NuAHSyLdHXpx7Z0QkUqH4kExTIaW/szOx3lUJMnDYkWy+VTs28JqBratz5NiHOA/N5fQ==
X-Received: by 2002:a17:906:ba84:b0:a35:a12f:e363 with SMTP id cu4-20020a170906ba8400b00a35a12fe363mr1337293ejd.10.1706608490454;
        Tue, 30 Jan 2024 01:54:50 -0800 (PST)
X-Forwarded-Encrypted: i=0; AJvYcCV2DqJqdkUvdF9jDY7tYggfNJGdZfLQeS0JZvdBS8bzNqj/tbLXS813NgGBKwmU6L6HpvDZEZa2jGJDPnkUrs+SaDz/+vPTC4FPWFTGy5JCNCwig31zZ0u8B2YdX7VFuA6urDeTmxP9g6CRiwlbB3PwS8iYgUON
Message-ID: <3f4df25b-9450-4c78-8ff5-08d6dffe2918@suse.com>
Date: Tue, 30 Jan 2024 10:54:46 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 2/2] xen: Remove debugger.h
To: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Wei Liu <wl@xen.org>, Oleksii Kurochko <oleksii.kurochko@gmail.com>,
 Xen-devel <xen-devel@lists.xenproject.org>
References: <20240126205418.3587177-1-andrew.cooper3@citrix.com>
 <20240126205418.3587177-3-andrew.cooper3@citrix.com>
Content-Language: en-US
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <20240126205418.3587177-3-andrew.cooper3@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 26.01.2024 21:54, Andrew Cooper wrote:
> --- a/xen/arch/x86/include/asm/bug.h
> +++ b/xen/arch/x86/include/asm/bug.h
> @@ -1,28 +1,8 @@
>  #ifndef __X86_BUG_H__
>  #define __X86_BUG_H__
>  
> -/*
> - * Please do not include in the header any header that might
> - * use BUG/ASSERT/etc maros asthey will be defined later after
> - * the return to <xen/bug.h> from the current header:
> - * 
> - * <xen/bug.h>:
> - *  ...
> - *   <asm/bug.h>:
> - *     ...
> - *     <any_header_which_uses_BUG/ASSERT/etc macros.h>
> - *     ...
> - *  ...
> - *  #define BUG() ...
> - *  ...
> - *  #define ASSERT() ...
> - *  ...
> - */
> -

Leaving aside the clumsiness of the initial text, other than in common/bug.c
I don't see why this comment is to go away (and, if at all, in this very
patch). With it retained or the removal suitably explained
Acked-by: Jan Beulich <jbeulich@suse.com>

Jan

>  #ifndef __ASSEMBLY__
>  
> -#define BUG_DEBUGGER_TRAP_FATAL(regs) debugger_trap_fatal(X86_EXC_GP,regs)
> -
>  #define BUG_INSTR       "ud2"
>  #define BUG_ASM_CONST   "c"
>  



From xen-devel-bounces@lists.xenproject.org Tue Jan 30 09:57:09 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 30 Jan 2024 09:57:09 +0000
Received: from list by lists.xenproject.org with outflank-mailman.673267.1047571 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUkrc-0006Kd-4D; Tue, 30 Jan 2024 09:57:08 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 673267.1047571; Tue, 30 Jan 2024 09:57:08 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUkrc-0006KW-1e; Tue, 30 Jan 2024 09:57:08 +0000
Received: by outflank-mailman (input) for mailman id 673267;
 Tue, 30 Jan 2024 09:57:06 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=XFHt=JI=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rUkra-0006KM-LV
 for xen-devel@lists.xenproject.org; Tue, 30 Jan 2024 09:57:06 +0000
Received: from mail-lj1-x231.google.com (mail-lj1-x231.google.com
 [2a00:1450:4864:20::231])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id ec7ba174-bf55-11ee-8a43-1f161083a0e0;
 Tue, 30 Jan 2024 10:57:05 +0100 (CET)
Received: by mail-lj1-x231.google.com with SMTP id
 38308e7fff4ca-2d051fb89fbso17618271fa.2
 for <xen-devel@lists.xenproject.org>; Tue, 30 Jan 2024 01:57:05 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 x13-20020a056638010d00b00470b336b56bsm1501494jao.106.2024.01.30.01.57.03
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 30 Jan 2024 01:57:04 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: ec7ba174-bf55-11ee-8a43-1f161083a0e0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1706608625; x=1707213425; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=IiTvkDEA12sWOdI1NNDDfA1B3SEp0Xr55KevseQSkoE=;
        b=Y6BSLwkhsCVMFqiwgSnkqvWLN3sxg3nGVrRNaUMS+fO8IrwFs/CTRuuk8H9pzFQI1h
         9v+KgFHo4hUmBuOE/1gh33WbyB09cwpj6iusfgkOJ+804OdMgl69Csz6HsfOAGBnK86f
         FPkq7YlEVqLQSHGRnQ6hA/oJMIulBj7+t9Yw4m+FoSbYzu/5yllrV+Vfd70IBsvnWFk4
         NFvmiuvOpEkYsVC34WdvFhJEkQKVoDMzORVSPJ5LC2+kCwJFu7K0MLo90Fo1J5mFImQb
         7GdCdk8ooCr8OO15HDBmWhuUqLA54wYtAAoiEIwor+0OILPRf0vj3TMwzdDKiy884Ve2
         DfIQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706608625; x=1707213425;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=IiTvkDEA12sWOdI1NNDDfA1B3SEp0Xr55KevseQSkoE=;
        b=rsL90WdekpSsrinADedta81w4q+cENR7WkPiAUSmQrm5Dd0c0eMOagvsUn8oo5RRvC
         enVdz0sWIF05VULhHc7lYQiZOCFWBTa9xlEwnniFTLvflHBuoTs3Ar/Y42sURfhBPDTu
         qmAmj/8TH1+jpgN39Cnepfeu8Vg2D9+tIOlBirfeS+b3P+sbp3nQImY5VnTXxQXbomCX
         1PPSFmnNvloZsa1g5Lp4tnNW6xqxkafpWnvp2jKrZ4D0wJDhRn8OoU6rtCoRX3mWyev6
         TvmRoj0Ht9TzUzoYW1mWz88ouWhkFGTIIXzMvAAZtN1wbabT1HkIJu2qLpMOstKvy9Vs
         QbdQ==
X-Gm-Message-State: AOJu0YzGZMhigQQWSLiaxlcEYMDEBicfPkzt9a8RyHh05V66glsYfoNN
	2bnTI4g75dpLm9E7O2T4Wg40nVNbzIoh2IzbfG7/LTQDXEqUPf5lK2reRG2ExA==
X-Google-Smtp-Source: AGHT+IFLjR+lWQjXicfSuC3gCG7/Ar0nWSfxFusyz/vgSjHYX8CFsIoplbpheWskJdSRqs0RPt9Sbw==
X-Received: by 2002:a2e:984d:0:b0:2cd:e963:b6c1 with SMTP id e13-20020a2e984d000000b002cde963b6c1mr5443925ljj.13.1706608625184;
        Tue, 30 Jan 2024 01:57:05 -0800 (PST)
X-Forwarded-Encrypted: i=0; AJvYcCWmOaFmfiuUBYckBTTjot70AfnAWSP8FR/jID3GK8c3qtfz2+C0GltPetd+FM+IMgbU+QVmwgKriehdBIe9ifMeCwQqhdg+poAFTx0yyjrIAYj0kY5klkhRYhGOjUxvxYXr+zKky6jnMjhGOElcACemYH3YAWnU
Message-ID: <9ccb27a5-7946-4c16-8307-f4b124a33021@suse.com>
Date: Tue, 30 Jan 2024 10:57:01 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 1/2] x86: Remove gdbstub
Content-Language: en-US
To: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Wei Liu <wl@xen.org>, Oleksii Kurochko <oleksii.kurochko@gmail.com>,
 Xen-devel <xen-devel@lists.xenproject.org>
References: <20240126205418.3587177-1-andrew.cooper3@citrix.com>
 <20240126205418.3587177-2-andrew.cooper3@citrix.com>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <20240126205418.3587177-2-andrew.cooper3@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 26.01.2024 21:54, Andrew Cooper wrote:
> In 13y of working on Xen, I've never seen seen it used.  The implementation
> was introduced (commit b69f92f3012e, Jul 28 2004) with known issues such as:
> 
>   /* Resuming after we've stopped used to work, but more through luck
>      than any actual intention.  It doesn't at the moment. */

As mentioned elsewhere, this alone might constitute a valid use of gdb.
Hence I'm a little hesitant here, but given no indication of even this
narrow use case having been employed by anyone at any time ...

> which appear to have gone unfixed for the 20 years since.
> 
> Nowadays there are more robust ways of inspecting crashed state, such as a
> kexec crash kernel, or running Xen in a VM.
> 
> This will allow us to clean up some hooks around the codebase which are
> proving awkward for other tasks.
> 
> Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>

Acked-by: Jan Beulich <jbeulich@suse.com>

Jan



From xen-devel-bounces@lists.xenproject.org Tue Jan 30 10:01:19 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 30 Jan 2024 10:01:19 +0000
Received: from list by lists.xenproject.org with outflank-mailman.673271.1047581 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUkvb-0000HO-KD; Tue, 30 Jan 2024 10:01:15 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 673271.1047581; Tue, 30 Jan 2024 10:01:15 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUkvb-0000HC-HR; Tue, 30 Jan 2024 10:01:15 +0000
Received: by outflank-mailman (input) for mailman id 673271;
 Tue, 30 Jan 2024 10:01:14 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=XFHt=JI=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rUkva-0000H6-0d
 for xen-devel@lists.xenproject.org; Tue, 30 Jan 2024 10:01:14 +0000
Received: from mail-lj1-x234.google.com (mail-lj1-x234.google.com
 [2a00:1450:4864:20::234])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 7fe5a0c8-bf56-11ee-8a43-1f161083a0e0;
 Tue, 30 Jan 2024 11:01:13 +0100 (CET)
Received: by mail-lj1-x234.google.com with SMTP id
 38308e7fff4ca-2cf33035d1dso39311961fa.2
 for <xen-devel@lists.xenproject.org>; Tue, 30 Jan 2024 02:01:13 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 b13-20020a0566380b8d00b00470c4e1553esm931416jad.131.2024.01.30.02.01.11
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 30 Jan 2024 02:01:12 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 7fe5a0c8-bf56-11ee-8a43-1f161083a0e0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1706608872; x=1707213672; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=CHLzcoPLDTEAE+BJGU+GYGcH0d8BgyqjRpsmsTEbPrI=;
        b=bp9sjlBoDLjnv6RRskxx/dh6vqSTvnxViOktCQeGS1aRjHiV/G//iOAI2We9/NWLfR
         /8tyEvJQ/1lQ0FAdVDL/KOoErHMkso6auqenTjX2rGHRhkqrXckcB06XeLNdpld1/yWi
         q1dG2SyMfv89NXD6tedhdst/M/jPuQ2uHdGXbQl5WM5p27TgOI4SmZ2COHuMe4A7TAnI
         WAQJrAYS4ZGRSwWMBrgYIrnmqQGBF+Qyp43A67sIIUqAT4aj3Lzdb7ELXizQ5f9xEJGE
         wVGz5Ukptr2XOxUfqCP+me6MhhNKEXIoVF8vuzsUPpW+XTU/Eep8KKnADTFrpIYVqBeX
         bYVw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706608872; x=1707213672;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=CHLzcoPLDTEAE+BJGU+GYGcH0d8BgyqjRpsmsTEbPrI=;
        b=q8vKRmSckDElMVqBXbFffemeqzDhGq5Kt3A1JJ4dW139ELhW1j/cJWKQ1ReXRuRxqq
         Mu+kMq7B9P+FIeIbVRQYsniPFQlJ2dRhFVN26u+KeNxm/RCR8rxUz38qYrO+JXJbhZUP
         1JeAZGx83wemZcFczRDyIV35tfYzlB8EZeOTc6BQtgs63OcTnn7c8Ll+e4sn+RjdW2fW
         lhExzQ9OFU+r96kjsJ+oMzh3jcee615YiXdDV7euLRxcyF46HcGsNlkpLGd+d6IgoF1H
         SKvswx81PZYQl5E8yBA4s4DdjfN/Jrn9UzVYrTnMEPc621fejSmU9VgVS77j70KAgHZJ
         b4Cw==
X-Gm-Message-State: AOJu0YxJyqlI0+u1mtXVWdOWAVjOffWmsGZM+FTAjBxQB59a3V5Lr3yw
	bg8y68MnGlznzIiZ7dBH1UCPSanM6XHa842N735RNvKPpiMxqolBDxWuEtNb3hJUOo8ZWqark1c
	=
X-Google-Smtp-Source: AGHT+IHb9lTreDXRlhxfEzUMcKAtpVCZ6N8LQ45bIIawcCi8SFtKub9YYqosEp4pkjmgXwKFJ1G7yQ==
X-Received: by 2002:a2e:b748:0:b0:2cd:a311:6ae9 with SMTP id k8-20020a2eb748000000b002cda3116ae9mr4746141ljo.5.1706608872504;
        Tue, 30 Jan 2024 02:01:12 -0800 (PST)
X-Forwarded-Encrypted: i=0; AJvYcCUFlyJuBxXriUEDFv+QQjMwNBZk2QCgJzZjCfweVAj7i4ZXweBrjXw6TLKdcGo7RkpRJY0FwLxkTFx1Hk43vH9SG+StpND8EHPKNkusmgd1inTh8W+RLUjtJLlfncLcdrqkiWfHfbPFOIw=
Message-ID: <95b9a3c1-d1d8-4a18-8eea-67d226478f28@suse.com>
Date: Tue, 30 Jan 2024 11:01:09 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 2/2] xenpm: Print message for disabled commands
Content-Language: en-US
To: Jason Andryuk <jandryuk@gmail.com>
Cc: Wei Liu <wl@xen.org>, Anthony PERARD <anthony.perard@citrix.com>,
 xen-devel@lists.xenproject.org
References: <20240125181454.50534-1-jandryuk@gmail.com>
 <20240125181454.50534-3-jandryuk@gmail.com>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <20240125181454.50534-3-jandryuk@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 25.01.2024 19:14, Jason Andryuk wrote:
> xenpm get-cpufreq-states currently just prints no output when cpufreq is
> disabled or HWP is running.  Have it print an appropriate message.  The
> cpufreq disabled one mirrors the cpuidle disabled one.
> 
> cpufreq disabled:
> $ xenpm get-cpufreq-states
> Either Xen cpufreq is disabled or no valid information is registered!
> 
> Under HWP:
> $ xenpm get-cpufreq-states
> P-State information not supported.  Try 'get-cpufreq-average' or 'start'.
> 
> Also allow xenpm to handle EOPNOTSUPP from the pmstat hypercalls.
> EOPNOTSUPP is returned when HWP is active in some cases and allows the
> differentiation from cpufreq being disabled.
> 
> Signed-off-by: Jason Andryuk <jandryuk@gmail.com>

Acked-by: Jan Beulich <jbeulich@suse.com>
on the assumption that really xenpm also ought to be listed in "X86
ARCHITECTURE" in ./MAINTAINERS (and be CONFIG_X86-only in the respective
Makefile).

Jan


From xen-devel-bounces@lists.xenproject.org Tue Jan 30 10:05:58 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 30 Jan 2024 10:05:58 +0000
Received: from list by lists.xenproject.org with outflank-mailman.673275.1047592 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUl08-0000xx-9g; Tue, 30 Jan 2024 10:05:56 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 673275.1047592; Tue, 30 Jan 2024 10:05:56 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUl08-0000xq-66; Tue, 30 Jan 2024 10:05:56 +0000
Received: by outflank-mailman (input) for mailman id 673275;
 Tue, 30 Jan 2024 10:05:54 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=2Zjb=JI=linaro.org=alex.bennee@srs-se1.protection.inumbo.net>)
 id 1rUl06-0000xk-C0
 for xen-devel@lists.xenproject.org; Tue, 30 Jan 2024 10:05:54 +0000
Received: from mail-wm1-x334.google.com (mail-wm1-x334.google.com
 [2a00:1450:4864:20::334])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 26633b6e-bf57-11ee-98f5-efadbce2ee36;
 Tue, 30 Jan 2024 11:05:52 +0100 (CET)
Received: by mail-wm1-x334.google.com with SMTP id
 5b1f17b1804b1-40ef3f351d2so11708405e9.1
 for <xen-devel@lists.xenproject.org>; Tue, 30 Jan 2024 02:05:52 -0800 (PST)
Received: from draig.lan ([85.9.250.243]) by smtp.gmail.com with ESMTPSA id
 ba1-20020a0560001c0100b0033ae593e830sm7766308wrb.23.2024.01.30.02.05.51
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 30 Jan 2024 02:05:51 -0800 (PST)
Received: from draig (localhost [IPv6:::1])
 by draig.lan (Postfix) with ESMTP id 3E0BF5F9D3;
 Tue, 30 Jan 2024 10:05:51 +0000 (GMT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 26633b6e-bf57-11ee-98f5-efadbce2ee36
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=linaro.org; s=google; t=1706609152; x=1707213952; darn=lists.xenproject.org;
        h=content-transfer-encoding:mime-version:message-id:date:user-agent
         :references:in-reply-to:subject:cc:to:from:from:to:cc:subject:date
         :message-id:reply-to;
        bh=PGjj4t6Tt0bfPXKL4DzHKstkGoaCWrviJvk5cF8v3JI=;
        b=j0wZ6kRg/WlrPtuK+SQYQNZqGB+clZBtu304hQN6Y+s2pyhxO8je8xij7At4szunYx
         qmKHlH7UvKAzAm29iGmany9E53IfHW6mgM4GkbNxqbcidwX3Y5l9i552JqdEv7vHKTm2
         gnfG5mmC+SRwtOgTSueY5e8N/ps5NK3ecLphKIlOq8SfZZDnuwsLW12Abrtp1m6Jq0kr
         KIyId/9hA3mDzBaQYLpg0ap8F51Nj0de5UmV4GEnyGp5YSQdKdgwcxS1LsSHaFgbmRn7
         fHs4ez3HXqji+kO8wbD/+ipCf+T1V40mILHbm0Zx7tvjDDrGiCXUYKqgZ6dY7QkJj/5K
         Rklw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706609152; x=1707213952;
        h=content-transfer-encoding:mime-version:message-id:date:user-agent
         :references:in-reply-to:subject:cc:to:from:x-gm-message-state:from
         :to:cc:subject:date:message-id:reply-to;
        bh=PGjj4t6Tt0bfPXKL4DzHKstkGoaCWrviJvk5cF8v3JI=;
        b=lZZRN8kaksCwdCKVH7q+s2Fup5F5tW3oZjyOTB/AoIUwO12OOZcGS5VdDRjrRqTFTg
         KEW71ikjHo/UpTTEoM3GEUA8oBL6tJLj0tLCutAAPJAq353UAxRI7FeCp1aw6zfQOkX0
         /aKh0QuxM0RPXhdHNpHQsrSa7ln7ZBEtgsiPPlNBrh+9IGnneaBLlr1fKKR5iJpVY8mf
         eT4H7sbhRrYuUXAhhWbIBZt8jo8p82TDaM8zBvjG0XguvRRDrNavMCZiNb6EK98HcOqM
         OSUbE2NpQH+9PfOGm+aOAwR79r1WlyM0+CJs+uPgd7+J8VLlHmUIG9YDJhhVi70+JboZ
         ghSg==
X-Gm-Message-State: AOJu0YzLx0xDO1vpZ32KjJ6ZdnveTH8YGba88vDf60hZkQ6MJ06iIXyH
	59t5RBQ3d1FLYNfIiJbb9HkXbMdv5gMEceYH8jVNZec+4wV3qYWxNg+FyObxLbU=
X-Google-Smtp-Source: AGHT+IEVpRJfzbaAlKNFmBWom/z95zvc/A0bG95rOio6RyuB2LN8r/AzevkFaZe0x0Gor0Wj8R+n5g==
X-Received: by 2002:a05:6000:1848:b0:337:bdd5:778b with SMTP id c8-20020a056000184800b00337bdd5778bmr1172982wri.29.1706609151803;
        Tue, 30 Jan 2024 02:05:51 -0800 (PST)
From: =?utf-8?Q?Alex_Benn=C3=A9e?= <alex.bennee@linaro.org>
To: Manos Pitsidianakis <manos.pitsidianakis@linaro.org>
Cc: qemu-devel@nongnu.org,  qemu-arm@nongnu.org,  qemu-block@nongnu.org,
  peter.maydell@linaro.org,  Philippe =?utf-8?Q?Mathieu-Daud=C3=A9?=
 <philmd@linaro.org>,
  Stefano Stabellini <sstabellini@kernel.org>,  Anthony Perard
 <anthony.perard@citrix.com>,  Paul Durrant <paul@xen.org>,
  xen-devel@lists.xenproject.org
Subject: Re: [PATCH v3 4/6] hw/xen/xen-mapcache.c: convert DPRINTF to
 tracepoints
In-Reply-To: <2fbe1fbc59078e384761c932e97cfa4276a53d75.1706544115.git.manos.pitsidianakis@linaro.org>
	(Manos Pitsidianakis's message of "Mon, 29 Jan 2024 18:09:40 +0200")
References: <cover.1706544115.git.manos.pitsidianakis@linaro.org>
	<2fbe1fbc59078e384761c932e97cfa4276a53d75.1706544115.git.manos.pitsidianakis@linaro.org>
User-Agent: mu4e 1.11.27; emacs 29.1
Date: Tue, 30 Jan 2024 10:05:51 +0000
Message-ID: <87bk93qgow.fsf@draig.linaro.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable

Manos Pitsidianakis <manos.pitsidianakis@linaro.org> writes:

> Tracing DPRINTFs to stderr might not be desired. A developer that relies
> on tracepoints should be able to opt-in to each tracepoint and rely on
> QEMU's log redirection, instead of stderr by default.
>
> This commit converts DPRINTFs in this file that are used for tracing
> into tracepoints.
>
> Signed-off-by: Manos Pitsidianakis <manos.pitsidianakis@linaro.org>

Reviewed-by: Alex Benn=C3=A9e <alex.bennee@linaro.org>

--=20
Alex Benn=C3=A9e
Virtualisation Tech Lead @ Linaro


From xen-devel-bounces@lists.xenproject.org Tue Jan 30 10:07:21 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 30 Jan 2024 10:07:21 +0000
Received: from list by lists.xenproject.org with outflank-mailman.673281.1047602 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUl1R-0001Uy-Jn; Tue, 30 Jan 2024 10:07:17 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 673281.1047602; Tue, 30 Jan 2024 10:07:17 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUl1R-0001Ur-GW; Tue, 30 Jan 2024 10:07:17 +0000
Received: by outflank-mailman (input) for mailman id 673281;
 Tue, 30 Jan 2024 10:07:17 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=2Zjb=JI=linaro.org=alex.bennee@srs-se1.protection.inumbo.net>)
 id 1rUl1R-0001SN-2f
 for xen-devel@lists.xenproject.org; Tue, 30 Jan 2024 10:07:17 +0000
Received: from mail-wm1-x332.google.com (mail-wm1-x332.google.com
 [2a00:1450:4864:20::332])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 57f26942-bf57-11ee-98f5-efadbce2ee36;
 Tue, 30 Jan 2024 11:07:15 +0100 (CET)
Received: by mail-wm1-x332.google.com with SMTP id
 5b1f17b1804b1-40e8fec0968so44760625e9.1
 for <xen-devel@lists.xenproject.org>; Tue, 30 Jan 2024 02:07:15 -0800 (PST)
Received: from draig.lan ([85.9.250.243]) by smtp.gmail.com with ESMTPSA id
 o4-20020a05600c510400b0040ef7186b7esm5407320wms.29.2024.01.30.02.07.14
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 30 Jan 2024 02:07:14 -0800 (PST)
Received: from draig (localhost [IPv6:::1])
 by draig.lan (Postfix) with ESMTP id 6D6A85F9D3;
 Tue, 30 Jan 2024 10:07:14 +0000 (GMT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 57f26942-bf57-11ee-98f5-efadbce2ee36
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=linaro.org; s=google; t=1706609235; x=1707214035; darn=lists.xenproject.org;
        h=content-transfer-encoding:mime-version:message-id:date:user-agent
         :references:in-reply-to:subject:cc:to:from:from:to:cc:subject:date
         :message-id:reply-to;
        bh=PGjj4t6Tt0bfPXKL4DzHKstkGoaCWrviJvk5cF8v3JI=;
        b=M3cnyafSGZwZJLf9egoxnK7/34fuOIn7n3fIOdSx/w+gLkdcTnrnSBbT5VRzVIJTCK
         KuTp6nens6g0j4RXNvicv4GvaYY7YsR4YCaShDB4CJt4Qx3wPu2SbuEfY+xcAAs0B8cG
         KTac1qcCF701kOeI9hmKD8b2k2GocuijJuF6HuismSrJJzizARbsXcX2o8l8hps2/dpn
         qwbKw4uLhqC0urXwWf8vChetH0tFbbCRJivoV4kh5KYN4rbgH77jeGSZGS5ntyNkAmuM
         OZbqP57D3ts03Wmv2SG2B1cSzd2K0ch0eDgrgHiuSDqMOV55/i5svhEVQ3BJOfnUxO16
         ecBQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706609235; x=1707214035;
        h=content-transfer-encoding:mime-version:message-id:date:user-agent
         :references:in-reply-to:subject:cc:to:from:x-gm-message-state:from
         :to:cc:subject:date:message-id:reply-to;
        bh=PGjj4t6Tt0bfPXKL4DzHKstkGoaCWrviJvk5cF8v3JI=;
        b=vJ8DkfqHCPN5hKxAyLUPQt2+4KkMLDOAY7KO27xGnzcY1UBxSUBu428z3OCpPs0V9e
         mWSVDptCRzM1wvN2xHnHgd151+pIEHjBVbaSDqkQ8IfaDbd7DlygTf1l6NZiDW8YYZ9Q
         5nahBKHlIb/zRAQaG+FwjVMfc2xY+aANHyEhWRJarvt6JFkwabKTJyEM1RnbkLj+aShg
         nPna23Uk3ASAgzX7gnR98zKP4EV9pd7fxwaRQyQeM3SG70FqewHxdAmqmOcAzFXGtuh4
         8116zntOCPWajBEWxrluzkCtJgvblpehd7+Fmf5DwDhEef8a+Y0+QNLDwVl+H70jsoQN
         Tyuw==
X-Gm-Message-State: AOJu0Yxofz+KnD1Yp2y8tR4Fm7k3V3GgAMNdN3cq6LI3zc6Kq9dvyMP8
	J+luM3122dIbKjpBpYT4/BS1USfDFbndow7KQ/8R1Cae8LgfTBCWb6vczVugkPg=
X-Google-Smtp-Source: AGHT+IE7QsQJ7kkSQIjk2V0TGDwvEWJaRk+GZiIrwssmHhuaqa3cvXIIzBIMhev6goWvmAyhrCETMg==
X-Received: by 2002:a05:600c:458d:b0:40e:fb90:207 with SMTP id r13-20020a05600c458d00b0040efb900207mr2695218wmo.25.1706609235041;
        Tue, 30 Jan 2024 02:07:15 -0800 (PST)
From: =?utf-8?Q?Alex_Benn=C3=A9e?= <alex.bennee@linaro.org>
To: Manos Pitsidianakis <manos.pitsidianakis@linaro.org>
Cc: qemu-devel@nongnu.org,  qemu-arm@nongnu.org,  qemu-block@nongnu.org,
  peter.maydell@linaro.org,  Philippe =?utf-8?Q?Mathieu-Daud=C3=A9?=
 <philmd@linaro.org>,
  Stefano Stabellini <sstabellini@kernel.org>,  Anthony Perard
 <anthony.perard@citrix.com>,  Paul Durrant <paul@xen.org>,
  xen-devel@lists.xenproject.org
Subject: Re: [PATCH v3 5/6] hw/xen/xen-hvm-common.c: convert DPRINTF to
 tracepoints
In-Reply-To: <b000ab73022dfeb7a7ab0ee8fd0f41fb208adaf0.1706544115.git.manos.pitsidianakis@linaro.org>
	(Manos Pitsidianakis's message of "Mon, 29 Jan 2024 18:09:41 +0200")
References: <cover.1706544115.git.manos.pitsidianakis@linaro.org>
	<b000ab73022dfeb7a7ab0ee8fd0f41fb208adaf0.1706544115.git.manos.pitsidianakis@linaro.org>
User-Agent: mu4e 1.11.27; emacs 29.1
Date: Tue, 30 Jan 2024 10:07:14 +0000
Message-ID: <875xzbqgml.fsf@draig.linaro.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable

Manos Pitsidianakis <manos.pitsidianakis@linaro.org> writes:

> Tracing DPRINTFs to stderr might not be desired. A developer that relies
> on tracepoints should be able to opt-in to each tracepoint and rely on
> QEMU's log redirection, instead of stderr by default.
>
> This commit converts DPRINTFs in this file that are used for tracing
> into tracepoints.
>
> Signed-off-by: Manos Pitsidianakis <manos.pitsidianakis@linaro.org>

Reviewed-by: Alex Benn=C3=A9e <alex.bennee@linaro.org>

--=20
Alex Benn=C3=A9e
Virtualisation Tech Lead @ Linaro


From xen-devel-bounces@lists.xenproject.org Tue Jan 30 10:07:41 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 30 Jan 2024 10:07:41 +0000
Received: from list by lists.xenproject.org with outflank-mailman.673283.1047612 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUl1p-00025x-RM; Tue, 30 Jan 2024 10:07:41 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 673283.1047612; Tue, 30 Jan 2024 10:07:41 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUl1p-00025q-OJ; Tue, 30 Jan 2024 10:07:41 +0000
Received: by outflank-mailman (input) for mailman id 673283;
 Tue, 30 Jan 2024 10:07:41 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=2Zjb=JI=linaro.org=alex.bennee@srs-se1.protection.inumbo.net>)
 id 1rUl1p-0001t3-5X
 for xen-devel@lists.xenproject.org; Tue, 30 Jan 2024 10:07:41 +0000
Received: from mail-wm1-x32a.google.com (mail-wm1-x32a.google.com
 [2a00:1450:4864:20::32a])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 66e9d310-bf57-11ee-8a43-1f161083a0e0;
 Tue, 30 Jan 2024 11:07:40 +0100 (CET)
Received: by mail-wm1-x32a.google.com with SMTP id
 5b1f17b1804b1-40efcb37373so7937845e9.2
 for <xen-devel@lists.xenproject.org>; Tue, 30 Jan 2024 02:07:40 -0800 (PST)
Received: from draig.lan ([85.9.250.243]) by smtp.gmail.com with ESMTPSA id
 je16-20020a05600c1f9000b0040ec66021a7sm12753644wmb.1.2024.01.30.02.07.39
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 30 Jan 2024 02:07:39 -0800 (PST)
Received: from draig (localhost [IPv6:::1])
 by draig.lan (Postfix) with ESMTP id 7BEC85F9D3;
 Tue, 30 Jan 2024 10:07:39 +0000 (GMT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 66e9d310-bf57-11ee-8a43-1f161083a0e0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=linaro.org; s=google; t=1706609260; x=1707214060; darn=lists.xenproject.org;
        h=content-transfer-encoding:mime-version:message-id:date:user-agent
         :references:in-reply-to:subject:cc:to:from:from:to:cc:subject:date
         :message-id:reply-to;
        bh=xrBGU+qDa/6KJNKxM+pthgM0a/T7J2ZKOG1Ii2mKor8=;
        b=n9tjdI54rP2bzCS7V9/b8u3TeBPx8pdjRpNlJrvLBFMLjixBF/SK3Balppjfe6lwSN
         kXoXwfq3Z1DNVbGW+YcbDjjis33RsFkfLZNRMX6G5MgIL7ku1TP+xBghAmFdkgeXq4hh
         Nyawh8TjqXpFe4o19Tk59Z0r3c67imC+77csL/iyXfavoRxQWJHQbs56UXCpIeVVw5wr
         sU/vFoprejP9C1rikU8G3zTWsYFgepJx2SVwhdL1SB7RARG8SqMSRhG6dZvQ+Mbackma
         uSDVIjfv6k1GCV07uOKD03f4cuus8zlL5he/76YbAbJDMols8Q1m6l+6OB+tf6alnUJZ
         Um9A==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706609260; x=1707214060;
        h=content-transfer-encoding:mime-version:message-id:date:user-agent
         :references:in-reply-to:subject:cc:to:from:x-gm-message-state:from
         :to:cc:subject:date:message-id:reply-to;
        bh=xrBGU+qDa/6KJNKxM+pthgM0a/T7J2ZKOG1Ii2mKor8=;
        b=So+TSA1LhqgJkHZCvA/UNWmElhFnAkWopIBhlLm4PO56EwM+VZdJuFUW1yrt/93sus
         F29mDv17+ZeW03Ry07WV0HgCI99LLSX2gnVU9/xC6RYz+ox8rl7G4Eo8kANEkKy+gIa2
         w7jrTBPgt+x7Gb5N426XdKzHxeEDjZthu7AJ7OxRHBD0KwuEJAdr3AVbjEw0zAZvoeTZ
         IfomRkKZVdaHMC22K3QBva+BIn6ydvpaPARvydVxAs/w3SvKAH6HBt0Q0XBoP2V1eTWX
         Qc0yAO3arN3S8VAqpK2dCAOHBikEZg1a12djx0S6Ea3mUSEH8G0HlH6RrVdqpiZSGQ0T
         AtIw==
X-Gm-Message-State: AOJu0YyJZIUKe73pBdqCPr8fFAWsz+YFTBTNstwUEHBH4YJFhIxY8Ike
	Q6jeXKvMA59vAIwL2YQLAUVa+PuWPHVOVuH5ygrf9O2mYlALZyr3gEFpAQmXN7g=
X-Google-Smtp-Source: AGHT+IES4a1D5D/9PcTpQY4/2BqtkiUs1Bf3okY6vJmhQUyyk2+tOC1WoIESqOxxrhdVtU+DIcQgzQ==
X-Received: by 2002:a05:600c:4f92:b0:40e:6650:b883 with SMTP id n18-20020a05600c4f9200b0040e6650b883mr6403716wmq.18.1706609260100;
        Tue, 30 Jan 2024 02:07:40 -0800 (PST)
From: =?utf-8?Q?Alex_Benn=C3=A9e?= <alex.bennee@linaro.org>
To: Manos Pitsidianakis <manos.pitsidianakis@linaro.org>
Cc: qemu-devel@nongnu.org,  qemu-arm@nongnu.org,  qemu-block@nongnu.org,
  peter.maydell@linaro.org,  Philippe =?utf-8?Q?Mathieu-Daud=C3=A9?=
 <philmd@linaro.org>,
  Stefano Stabellini <sstabellini@kernel.org>,  Anthony Perard
 <anthony.perard@citrix.com>,  Paul Durrant <paul@xen.org>,
  xen-devel@lists.xenproject.org
Subject: Re: [PATCH v3 6/6] hw/xen: convert stderr prints to error/warn reports
In-Reply-To: <42a8953553cf68e8bacada966f93af4fbce45919.1706544115.git.manos.pitsidianakis@linaro.org>
	(Manos Pitsidianakis's message of "Mon, 29 Jan 2024 18:09:42 +0200")
References: <cover.1706544115.git.manos.pitsidianakis@linaro.org>
	<42a8953553cf68e8bacada966f93af4fbce45919.1706544115.git.manos.pitsidianakis@linaro.org>
User-Agent: mu4e 1.11.27; emacs 29.1
Date: Tue, 30 Jan 2024 10:07:39 +0000
Message-ID: <87zfwnp21g.fsf@draig.linaro.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable

Manos Pitsidianakis <manos.pitsidianakis@linaro.org> writes:

> According to the QEMU Coding Style document:
>
>> Do not use printf(), fprintf() or monitor_printf(). Instead, use
>> error_report() or error_vreport() from error-report.h. This ensures the
>> error is reported in the right place (current monitor or stderr), and in
>> a uniform format.
>> Use error_printf() & friends to print additional information.
>
> This commit changes fprintfs that report warnings and errors to the
> appropriate report functions.
>
> Reviewed-by: Philippe Mathieu-Daud=C3=A9 <philmd@linaro.org>
> Signed-off-by: Manos Pitsidianakis <manos.pitsidianakis@linaro.org>

Reviewed-by: Alex Benn=C3=A9e <alex.bennee@linaro.org>

--=20
Alex Benn=C3=A9e
Virtualisation Tech Lead @ Linaro


From xen-devel-bounces@lists.xenproject.org Tue Jan 30 10:27:40 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 30 Jan 2024 10:27:40 +0000
Received: from list by lists.xenproject.org with outflank-mailman.673290.1047622 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUlKx-00078U-F4; Tue, 30 Jan 2024 10:27:27 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 673290.1047622; Tue, 30 Jan 2024 10:27:27 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUlKx-00078N-Bg; Tue, 30 Jan 2024 10:27:27 +0000
Received: by outflank-mailman (input) for mailman id 673290;
 Tue, 30 Jan 2024 10:27:26 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=BUgQ=JI=cloud.com=roger.pau@srs-se1.protection.inumbo.net>)
 id 1rUlKw-00075d-HD
 for xen-devel@lists.xenproject.org; Tue, 30 Jan 2024 10:27:26 +0000
Received: from mail-wm1-x32f.google.com (mail-wm1-x32f.google.com
 [2a00:1450:4864:20::32f])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 28d72c99-bf5a-11ee-8a43-1f161083a0e0;
 Tue, 30 Jan 2024 11:27:25 +0100 (CET)
Received: by mail-wm1-x32f.google.com with SMTP id
 5b1f17b1804b1-40e8fec0968so44914335e9.1
 for <xen-devel@lists.xenproject.org>; Tue, 30 Jan 2024 02:27:25 -0800 (PST)
Received: from localhost ([213.195.118.74]) by smtp.gmail.com with ESMTPSA id
 h9-20020a05600c350900b0040faf3df118sm494063wmq.32.2024.01.30.02.27.23
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 30 Jan 2024 02:27:23 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 28d72c99-bf5a-11ee-8a43-1f161083a0e0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1706610444; x=1707215244; darn=lists.xenproject.org;
        h=content-transfer-encoding:mime-version:references:in-reply-to
         :message-id:date:subject:cc:to:from:from:to:cc:subject:date
         :message-id:reply-to;
        bh=Ygxe54Oc/vFuzE6cnM13pQ0IrBJU0/x6Xb08+E2WI5A=;
        b=mxpQrlV3MdTW3Qoy4/u8I3AsH1lIocVaPt9IOX3cUnBVGpAA7sed7X2SFFZV4qQ5ML
         GFlXL9gEgCcB8kUXClh2mXCRQMB3lOxaT6EjT7aFgqKDesnIAVsvDH3ZE0ZfbnGJZT4+
         XG2ZZK1aMdtGvuaSr6jhMgCFl/wPIws/43X1A=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706610444; x=1707215244;
        h=content-transfer-encoding:mime-version:references:in-reply-to
         :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to;
        bh=Ygxe54Oc/vFuzE6cnM13pQ0IrBJU0/x6Xb08+E2WI5A=;
        b=H3u+jvrOUTfAR8l5jLKyF4J0VFf24HRKZx508hY8IbqvX9xF3iZ18e5fziEo/9Aab8
         Yr0ok0griKn0JE/cgwWYLghcWOB7anic5w3NzoU7T5/KS8jD7SOcfbB31l04DnBiYBU1
         OqztxZxDYR9+CC+2qcREWHLQSUhXDjelGD5K2gjY3zxZ0ojOsjwq7p1NLsVblBbt/0uD
         tqMzMxY/RcRJb4acf4guQk0C1ZP6XO8yvxhcp/sFafVLl61XbgshgCT4NRWGBz7/Kc+p
         j3Ox4fE5H/gUNGroM22YLCPvCi4RhIRuG78n0sA/JKEnLVUttigRGd/yKVzSiGE9Yj7t
         vNWA==
X-Gm-Message-State: AOJu0YwbADb3WVEyPP7TxrXwGeHjFUD4SxiGAwKibzEwR5K2m8w7EPud
	i+qOFSTJZgH6/teFwm+CGyt2uzngmc++4DeMpr/ePL0FJJ+Kzg6gqTHMcrMVT4+Xvsu5+CSLLEF
	6
X-Google-Smtp-Source: AGHT+IH/y21ecbbJBQGgnFww+l9ax8d5rBE56KK6xIIDCWEN5QIrQqzBH/oHfulTGwUB+HKYOtRIvA==
X-Received: by 2002:a05:600c:468d:b0:40f:4b78:7d4b with SMTP id p13-20020a05600c468d00b0040f4b787d4bmr600767wmo.41.1706610444127;
        Tue, 30 Jan 2024 02:27:24 -0800 (PST)
From: Roger Pau Monne <roger.pau@citrix.com>
To: xen-devel@lists.xenproject.org
Cc: Roger Pau Monne <roger.pau@citrix.com>
Subject: [PATCH] XTF: tests SPEC_CTRL added bits
Date: Tue, 30 Jan 2024 11:27:19 +0100
Message-ID: <20240130102719.51150-1-roger.pau@citrix.com>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20240130091400.50622-1-roger.pau@citrix.com>
References: <20240130091400.50622-1-roger.pau@citrix.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Dummy set/clear tests for additional spec_ctrl bits.
---
 docs/all-tests.dox  |   2 +
 tests/test/Makefile |   9 ++++
 tests/test/main.c   | 100 ++++++++++++++++++++++++++++++++++++++++++++
 3 files changed, 111 insertions(+)
 create mode 100644 tests/test/Makefile
 create mode 100644 tests/test/main.c

diff --git a/docs/all-tests.dox b/docs/all-tests.dox
index 892a9e474743..5a66ac252ea5 100644
--- a/docs/all-tests.dox
+++ b/docs/all-tests.dox
@@ -187,3 +187,5 @@ states.
 
 @subpage test-nested-vmx - Nested VT-x tests.
 */
+# Placeholder: Merge into the appropriate location above
+@subpage test-test - @todo title
diff --git a/tests/test/Makefile b/tests/test/Makefile
new file mode 100644
index 000000000000..19bc4b6a4639
--- /dev/null
+++ b/tests/test/Makefile
@@ -0,0 +1,9 @@
+include $(ROOT)/build/common.mk
+
+NAME      := test
+CATEGORY  := utility
+TEST-ENVS := hvm32 pv64
+
+obj-perenv += main.o
+
+include $(ROOT)/build/gen.mk
diff --git a/tests/test/main.c b/tests/test/main.c
new file mode 100644
index 000000000000..9a25e95d91b7
--- /dev/null
+++ b/tests/test/main.c
@@ -0,0 +1,100 @@
+/**
+ * @file tests/test/main.c
+ * @ref test-test
+ *
+ * @page test-test test
+ *
+ * @todo Docs for test-test
+ *
+ * @see tests/test/main.c
+ */
+#include <xtf.h>
+
+#define MSR_SPEC_CTRL                       0x00000048
+#define  SPEC_CTRL_IPRED_DIS_U              (_AC(1, ULL) <<  3)
+#define  SPEC_CTRL_IPRED_DIS_S              (_AC(1, ULL) <<  4)
+#define  SPEC_CTRL_RRSBA_DIS_U              (_AC(1, ULL) <<  5)
+#define  SPEC_CTRL_RRSBA_DIS_S              (_AC(1, ULL) <<  6)
+#define  SPEC_CTRL_DDP_DIS_U                (_AC(1, ULL) <<  8)
+#define  SPEC_CTRL_BHI_DIS_S                (_AC(1, ULL) << 10)
+
+const char test_title[] = "SPEC_CTRL";
+
+static void update_spec_ctrl(uint64_t mask, bool set)
+{
+    uint64_t spec_ctrl = rdmsr(MSR_SPEC_CTRL);
+
+    if ( set )
+        spec_ctrl |= mask;
+    else
+        spec_ctrl &= ~mask;
+
+    wrmsr(MSR_SPEC_CTRL, spec_ctrl);
+}
+
+static void assert_spec_ctrl(uint64_t mask, bool set)
+{
+    uint64_t spec_ctrl = rdmsr(MSR_SPEC_CTRL);
+
+    if ( (spec_ctrl & mask) != (set ? mask : 0) )
+    {
+        xtf_failure("SPEC_CTRL expected: %#" PRIx64 " got: %#" PRIx64 "\n",
+                    set ? (spec_ctrl | mask) : (spec_ctrl & ~mask),
+                    spec_ctrl);
+        xtf_exit();
+    }
+}
+
+static void test_loop(uint64_t mask)
+{
+    update_spec_ctrl(mask, true);
+    assert_spec_ctrl(mask, true);
+    /* Ensure context switch to Xen. */
+    hypercall_yield();
+    assert_spec_ctrl(mask, true);
+
+    update_spec_ctrl(mask, false);
+    assert_spec_ctrl(mask, false);
+    /* Ensure context switch to Xen. */
+    hypercall_yield();
+    assert_spec_ctrl(mask, false);
+}
+
+void test_main(void)
+{
+    static const struct {
+        const char *name;
+        unsigned int feat;
+        uint64_t mask;
+    } tests[] = {
+        { "IPRED CTRL", 1, SPEC_CTRL_IPRED_DIS_U | SPEC_CTRL_IPRED_DIS_S },
+        { "RRSBA CTRL", 2, SPEC_CTRL_RRSBA_DIS_U | SPEC_CTRL_RRSBA_DIS_S },
+        { "DDP DIS", 3, SPEC_CTRL_DDP_DIS_U },
+        { "BHI DIS", 4, SPEC_CTRL_BHI_DIS_S },
+    };
+    unsigned int i;
+    uint32_t regs[4];
+
+    cpuid_count(7, 2, &regs[0], &regs[1], &regs[2], &regs[3]);
+
+    for ( i = 0; i < ARRAY_SIZE(tests); i++ )
+    {
+        if ( !test_bit(tests[i].feat, &regs[3]) )
+            continue;
+
+        printk("Testing %s\n", tests[i].name);
+        test_loop(tests[i].mask);
+    }
+
+    xtf_success(NULL);
+}
+
+/*
+ * Local variables:
+ * mode: C
+ * c-file-style: "BSD"
+ * c-basic-offset: 4
+ * tab-width: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Tue Jan 30 10:42:55 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 30 Jan 2024 10:42:55 +0000
Received: from list by lists.xenproject.org with outflank-mailman.673294.1047631 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUlZp-0003DO-Nb; Tue, 30 Jan 2024 10:42:49 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 673294.1047631; Tue, 30 Jan 2024 10:42:49 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUlZp-0003DH-L8; Tue, 30 Jan 2024 10:42:49 +0000
Received: by outflank-mailman (input) for mailman id 673294;
 Tue, 30 Jan 2024 10:42:48 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=XFHt=JI=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rUlZo-0003DB-Bm
 for xen-devel@lists.xenproject.org; Tue, 30 Jan 2024 10:42:48 +0000
Received: from mail-lj1-x230.google.com (mail-lj1-x230.google.com
 [2a00:1450:4864:20::230])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 4e7b4cba-bf5c-11ee-8a43-1f161083a0e0;
 Tue, 30 Jan 2024 11:42:47 +0100 (CET)
Received: by mail-lj1-x230.google.com with SMTP id
 38308e7fff4ca-2cf595d5b4aso28959461fa.0
 for <xen-devel@lists.xenproject.org>; Tue, 30 Jan 2024 02:42:47 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 ck13-20020a056e02370d00b003627a7f95a7sm2812134ilb.0.2024.01.30.02.42.45
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 30 Jan 2024 02:42:46 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 4e7b4cba-bf5c-11ee-8a43-1f161083a0e0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1706611366; x=1707216166; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:cc:references
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=AwmBzMlzlzKXennwaXJ1mCJhDvUMB1pK8OT3erYgdB4=;
        b=bufze6a0kFH8GPeZsiL5wJXZ8oY6y+CPA6sZzd3v64XmnhvxebLiwhZe8BycrGIR+1
         oPsfhpD8h/P2B9ZxYETh6mItXQJFL5B+oINCBY+VmUZ5BYR/rKntC5RL2Xp7wiJA8M3j
         +dOZ4qEWZihvf1hl1jSgdFgUVsxUfXDoh4yIZiKCQAJy/TAX0KSlezWZ6waFd1QeDF+T
         eWOvcV623DKg0JGWc+pRRpxryZ2ZodAF2+4cPuA9QTc0MbgsmSDy1mInMpD0B2+AeH+l
         M9bmEfWp8cLYJ8abMP0CHsgUz9vdnXIXdaOTJ8+4Spme/IecVl7NgscyGsi4QkQmCQcc
         UOkA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706611366; x=1707216166;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:cc:references
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=AwmBzMlzlzKXennwaXJ1mCJhDvUMB1pK8OT3erYgdB4=;
        b=HF8tdCXtCw7XCLQRvWM63hXBucROe/K/vbjY7NuESfjPBmSP0/HFESU4iGs+5OY6C7
         AEW2p+o15eWyEuzZsg75v+6BKAODLNheOrXkpIlTv1XaPrW29MZr+d/uqsuvAO3Lb3vt
         Q/ohKvg+70MQdUFSevmrObSnHcxuRW4q/KQYHQhBiWh3nrFPDrdxCe22SdopXMlJDrxR
         RyI4Mt+ilKpPxsazVW71lZ9NaEZqiMin5+vKBgO0vyw4aLfeMqy5CoFVdNT8kIugLXCA
         5T5tjyooMF1GBhb9vIP7a1JpVlJtQGnb1LmhUHYkB8+MzWFdcdAH+z6ujAWG9oc3yFpQ
         B3lg==
X-Gm-Message-State: AOJu0Yx9NfRKM5UvFXoAT/Zh/LlvGkipFYFTlqU6pc93IqaPOrS8dFEW
	2GkHUxEZMnAHEwJVGVZ0Duq+2xQDs3lkh1A5Pb/dcG22cEWU8gBYLqw0aDlkSQ==
X-Google-Smtp-Source: AGHT+IFMhZswrmycdBaGGTBuOX/6RZnWklj9ylngnyDC3z1f5O4TAlTxD5lLEhmmuiF+mFZ/GhFFMQ==
X-Received: by 2002:a2e:8802:0:b0:2d0:417a:4a7b with SMTP id x2-20020a2e8802000000b002d0417a4a7bmr4444811ljh.21.1706611366549;
        Tue, 30 Jan 2024 02:42:46 -0800 (PST)
Message-ID: <7f514c59-dbf1-44ea-a589-dbc43f0b4ee4@suse.com>
Date: Tue, 30 Jan 2024 11:42:43 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] XTF: tests SPEC_CTRL added bits
Content-Language: en-US
To: Roger Pau Monne <roger.pau@citrix.com>
References: <20240130091400.50622-1-roger.pau@citrix.com>
 <20240130102719.51150-1-roger.pau@citrix.com>
Cc: xen-devel@lists.xenproject.org
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <20240130102719.51150-1-roger.pau@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 30.01.2024 11:27, Roger Pau Monne wrote:
> Dummy set/clear tests for additional spec_ctrl bits.
> ---
>  docs/all-tests.dox  |   2 +
>  tests/test/Makefile |   9 ++++
>  tests/test/main.c   | 100 ++++++++++++++++++++++++++++++++++++++++++++
>  3 files changed, 111 insertions(+)
>  create mode 100644 tests/test/Makefile
>  create mode 100644 tests/test/main.c

I'm puzzled: Why "test"? That doesn't describe in any way what this test
is about.

> --- /dev/null
> +++ b/tests/test/Makefile
> @@ -0,0 +1,9 @@
> +include $(ROOT)/build/common.mk
> +
> +NAME      := test
> +CATEGORY  := utility
> +TEST-ENVS := hvm32 pv64

Any reason for this limitation?

> --- /dev/null
> +++ b/tests/test/main.c
> @@ -0,0 +1,100 @@
> +/**
> + * @file tests/test/main.c
> + * @ref test-test
> + *
> + * @page test-test test
> + *
> + * @todo Docs for test-test
> + *
> + * @see tests/test/main.c
> + */
> +#include <xtf.h>
> +
> +#define MSR_SPEC_CTRL                       0x00000048
> +#define  SPEC_CTRL_IPRED_DIS_U              (_AC(1, ULL) <<  3)
> +#define  SPEC_CTRL_IPRED_DIS_S              (_AC(1, ULL) <<  4)
> +#define  SPEC_CTRL_RRSBA_DIS_U              (_AC(1, ULL) <<  5)
> +#define  SPEC_CTRL_RRSBA_DIS_S              (_AC(1, ULL) <<  6)
> +#define  SPEC_CTRL_DDP_DIS_U                (_AC(1, ULL) <<  8)
> +#define  SPEC_CTRL_BHI_DIS_S                (_AC(1, ULL) << 10)
> +
> +const char test_title[] = "SPEC_CTRL";
> +
> +static void update_spec_ctrl(uint64_t mask, bool set)
> +{
> +    uint64_t spec_ctrl = rdmsr(MSR_SPEC_CTRL);
> +
> +    if ( set )
> +        spec_ctrl |= mask;
> +    else
> +        spec_ctrl &= ~mask;
> +
> +    wrmsr(MSR_SPEC_CTRL, spec_ctrl);
> +}
> +
> +static void assert_spec_ctrl(uint64_t mask, bool set)
> +{
> +    uint64_t spec_ctrl = rdmsr(MSR_SPEC_CTRL);
> +
> +    if ( (spec_ctrl & mask) != (set ? mask : 0) )
> +    {
> +        xtf_failure("SPEC_CTRL expected: %#" PRIx64 " got: %#" PRIx64 "\n",
> +                    set ? (spec_ctrl | mask) : (spec_ctrl & ~mask),
> +                    spec_ctrl);
> +        xtf_exit();
> +    }
> +}
> +
> +static void test_loop(uint64_t mask)
> +{
> +    update_spec_ctrl(mask, true);
> +    assert_spec_ctrl(mask, true);
> +    /* Ensure context switch to Xen. */
> +    hypercall_yield();

I'm afraid yielding doesn't guarantee context switching in Xen, if the
system (or even just the one CPU) is otherwise idle. Hence at the very
least please don't say "ensure" in the comment. But perhaps more
reliable to e.g. use "poll" with a timeout. While I didn't post that
addition, I've used such for testing my vCPU-area-registration work:

        struct sched_poll poll = { .timeout = s + SECONDS(1) };
        rc = hypercall_sched_op(SCHEDOP_poll, &poll);
        if ( rc )
            xtf_error("Could not poll (%d)\n", rc);

(there also to ensure enough time passes for the time area to be
updated).

I actually found this to have another neat side effect: The guest then
can't go away so quickly that "xl console" doesn't manage to attach to
the guest (which otherwise I observe to work only about every other
time).

Jan


From xen-devel-bounces@lists.xenproject.org Tue Jan 30 10:57:27 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 30 Jan 2024 10:57:27 +0000
Received: from list by lists.xenproject.org with outflank-mailman.673299.1047642 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUlnv-00060A-45; Tue, 30 Jan 2024 10:57:23 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 673299.1047642; Tue, 30 Jan 2024 10:57:23 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUlnv-000603-0q; Tue, 30 Jan 2024 10:57:23 +0000
Received: by outflank-mailman (input) for mailman id 673299;
 Tue, 30 Jan 2024 10:57:21 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=XFHt=JI=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rUlnt-0005zx-RH
 for xen-devel@lists.xenproject.org; Tue, 30 Jan 2024 10:57:21 +0000
Received: from mail-lj1-x231.google.com (mail-lj1-x231.google.com
 [2a00:1450:4864:20::231])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 5739a727-bf5e-11ee-8a43-1f161083a0e0;
 Tue, 30 Jan 2024 11:57:20 +0100 (CET)
Received: by mail-lj1-x231.google.com with SMTP id
 38308e7fff4ca-2d043160cd1so25894671fa.1
 for <xen-devel@lists.xenproject.org>; Tue, 30 Jan 2024 02:57:20 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 u6-20020a02c046000000b0046e33e82782sm2201812jam.135.2024.01.30.02.57.18
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 30 Jan 2024 02:57:19 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 5739a727-bf5e-11ee-8a43-1f161083a0e0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1706612240; x=1707217040; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=8EILlXkC10ljAeFYKYbS2r2JFygvm/jGCzYzUxI6Xrg=;
        b=L8p7MWWEWnPh2aMos+wZ24nHBJaQ/FFp5RxELzuXu4ydUZvUQObOAeQPhPXcZzxOYl
         JTGqF14F3rv8IUucfRobD6zREqeIUeVA16vHtA8ktv6Ac8ChmoB+BKSrVowILuzEGksq
         i01eh8E8YL1kP/c7VcUOQeyMVTmxIda/4dkXNcDSdXBRyjvQnJnfG8kQ9knJ5wfkjQXT
         StPCCNF84oEBY+qnN5A1uMIiKh8NPF4fw8Wjal4/HhdqOH9qOePWC6YqRDmcCIh/MKGc
         lA+0q+8xOSW1ze/ONcwvdO3Zb4IBND0W4Of1q3hybi+nw0Gws9e80vR7HJWTgWOLLVAN
         1uVQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706612240; x=1707217040;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=8EILlXkC10ljAeFYKYbS2r2JFygvm/jGCzYzUxI6Xrg=;
        b=pxIdBF4+NZC797Aqm/INdXQEkDBpHeG7CwMNOO1PfGnIZeTPwV3NsBSeQA988yC4lW
         vFHMMGVa0Sr+hqrf7bfXxeMSAKCZqhd9pbzBoYb5NcfFQmVR/4Uge/67c0Eftm7T9Plt
         yvs5fQD/6ORTakLNV8U0pCeRjvzD+wxT85CVbvJ2IHdn94vILwr8OpHijW+avbFK2wOD
         oSNnbX1njeNAl9EONOsnur6bHuse+NzXVr22oK/l5ao8lkmj9OQ6k8HxzPm/5R3bUZop
         I5SCnF+ix5cjux2LnNUM2Q7LYwHWe6jnaIg2c3X+zFvpSZBH3t57seafYjXzH9V7N7zx
         6nUw==
X-Gm-Message-State: AOJu0YzsT7VWqbsZkutSAlbY6zcPaH/N4k7PiON749SX3LcqaTGrkgUJ
	sODbcqKc3cXa/JopRH9srfR7mr+Bwf5M3ju5dvpCa8wdaWO5Yeb10zE7q1Y8cw==
X-Google-Smtp-Source: AGHT+IEPQ0uoAZlSXnmQWXMCImA84RzUI3bY2xKCNB7/k0EsIuuNu+qHMU+/31kUMBEdltudRJHDJg==
X-Received: by 2002:a05:651c:d7:b0:2cd:1ca6:87bf with SMTP id 23-20020a05651c00d700b002cd1ca687bfmr4953787ljr.8.1706612240251;
        Tue, 30 Jan 2024 02:57:20 -0800 (PST)
X-Forwarded-Encrypted: i=0; AJvYcCWjsnjOLxK7nPICdwTXiYBJmNilmPs+lXWPqzcr0xfiqoRDRLHteAm7yu2mFQOJgVIpczYCUNswjNWQPMmlSvAcEKwHlc+rdg2+f2Ngd/tnY4m9DQTChMylheI=
Message-ID: <3959f556-6177-473e-a052-bec11b5a8a9b@suse.com>
Date: Tue, 30 Jan 2024 11:57:17 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 1/3] x86/intel: expose IPRED_CTRL to guests
Content-Language: en-US
To: Roger Pau Monne <roger.pau@citrix.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, Wei Liu <wl@xen.org>,
 xen-devel@lists.xenproject.org
References: <20240130091400.50622-1-roger.pau@citrix.com>
 <20240130091400.50622-2-roger.pau@citrix.com>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <20240130091400.50622-2-roger.pau@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 30.01.2024 10:13, Roger Pau Monne wrote:
> The CPUID feature bit signals the presence of the IPRED_DIS_{U,S} controls in
> SPEC_CTRL MSR.
> 
> Note that those controls are not used by the hypervisor.

Despite this, ...

> --- a/xen/arch/x86/msr.c
> +++ b/xen/arch/x86/msr.c
> @@ -324,6 +324,9 @@ uint64_t msr_spec_ctrl_valid_bits(const struct cpu_policy *cp)
>      return (SPEC_CTRL_IBRS | SPEC_CTRL_STIBP |
>              (ssbd       ? SPEC_CTRL_SSBD       : 0) |
>              (psfd       ? SPEC_CTRL_PSFD       : 0) |
> +            (cp->feat.ipred_ctrl ? (SPEC_CTRL_IPRED_DIS_U |
> +                                    SPEC_CTRL_IPRED_DIS_S)
> +                                 : 0) |
>              0);
>  }

... if I'm not mistaken exposing SPEC_CTRL bits to guests is independent
of whether we write SPEC_CTRL on entry to Xen. Therefore I think in the
description it wants clarifying why it is acceptable to run Xen with the
guest chosen settings for at least the DIS_S bit (assuming that it is
okay to do so). Likely (didn't look there yet) also applicable to the
further two patches.

Jan


From xen-devel-bounces@lists.xenproject.org Tue Jan 30 11:46:38 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 30 Jan 2024 11:46:38 +0000
Received: from list by lists.xenproject.org with outflank-mailman.673305.1047653 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUmZJ-0007kF-Nl; Tue, 30 Jan 2024 11:46:21 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 673305.1047653; Tue, 30 Jan 2024 11:46:21 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUmZJ-0007k8-Jf; Tue, 30 Jan 2024 11:46:21 +0000
Received: by outflank-mailman (input) for mailman id 673305;
 Tue, 30 Jan 2024 11:46:20 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=BUgQ=JI=cloud.com=roger.pau@srs-se1.protection.inumbo.net>)
 id 1rUmZI-0007k2-77
 for xen-devel@lists.xenproject.org; Tue, 30 Jan 2024 11:46:20 +0000
Received: from mail-wm1-x329.google.com (mail-wm1-x329.google.com
 [2a00:1450:4864:20::329])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 2e8afabe-bf65-11ee-8a43-1f161083a0e0;
 Tue, 30 Jan 2024 12:46:19 +0100 (CET)
Received: by mail-wm1-x329.google.com with SMTP id
 5b1f17b1804b1-40e7065b7bdso46116825e9.3
 for <xen-devel@lists.xenproject.org>; Tue, 30 Jan 2024 03:46:19 -0800 (PST)
Received: from localhost ([213.195.118.74]) by smtp.gmail.com with ESMTPSA id
 m21-20020a05600c3b1500b0040efa513540sm4481444wms.22.2024.01.30.03.46.17
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 30 Jan 2024 03:46:18 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 2e8afabe-bf65-11ee-8a43-1f161083a0e0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1706615178; x=1707219978; darn=lists.xenproject.org;
        h=in-reply-to:content-disposition:mime-version:references:message-id
         :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to;
        bh=Uqrzr9fh7Bx1/iMuOrLezyiLTHIY9EMlALhar2VsEP4=;
        b=Yy1wO49JFxIsnJyLZ+QcMUOwCRkTBcIIQaelLF+nENMYEqR9KtZy9gDkIoj5LhBURW
         JTOr8HU1est9DUPdKdUyTNUUYUWhk9AFyRFY3AdD5Cd7+vISXWL0KLefxfMFSbkXGQbP
         RVJDDj30Keh2izz8tEO+Vt2aCEXdf63Oo4z9g=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706615178; x=1707219978;
        h=in-reply-to:content-disposition:mime-version:references:message-id
         :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to;
        bh=Uqrzr9fh7Bx1/iMuOrLezyiLTHIY9EMlALhar2VsEP4=;
        b=J3r9VqF93ake6QTbV6CYTO6g5VFBIRoRMyjwEPvtL73f1BLaZ4Qq/EpqDTJXEpb4/4
         alqUcGUUVdi+U8zs1/+A/tbKEyWhQTb9aEcisvFabXFa4kGB5JE+WMuX2xiMAX9Nqn/b
         Z4TMY+NEq8069RvXEUXBRc6yLZNc5DImWO+oG6swkVFIvoMcZb3BTXVpjDii43mASl47
         p/O/LMgZBFgAYTPXZHwFA18uxrXx2qXM4p4kLuFTKilwazelyf8LjkyXQDfN4m4HaID/
         rWoTzaCLiwwLqNQGdxVYCl2WXmpRw4hrtZaimY2H49D/TV86fZjIiUdlACujrta6BKRe
         LDwQ==
X-Gm-Message-State: AOJu0YxTi4hKSQOJsqMtqnhykG2u78bs2/x0ve200Day4XA/i6J776m6
	30EDVSLGosbE8vWvCjNgWhdpWUtY4h+ODZDaCiWGJ+J+t3W5QxfKXP9O6VA9vtU=
X-Google-Smtp-Source: AGHT+IGx6IWWvlblzL+GyFVy2c8u3hoTYx51iSMgYOEohMJerXF+csE4+En1eqoxLx8N8amq++y+DA==
X-Received: by 2002:a05:600c:1e14:b0:40f:afb3:97d5 with SMTP id ay20-20020a05600c1e1400b0040fafb397d5mr381572wmb.38.1706615178468;
        Tue, 30 Jan 2024 03:46:18 -0800 (PST)
Date: Tue, 30 Jan 2024 12:46:17 +0100
From: Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
To: Jan Beulich <jbeulich@suse.com>
Cc: xen-devel@lists.xenproject.org
Subject: Re: [PATCH] XTF: tests SPEC_CTRL added bits
Message-ID: <Zbjhica05LIMB9zX@macbook>
References: <20240130091400.50622-1-roger.pau@citrix.com>
 <20240130102719.51150-1-roger.pau@citrix.com>
 <7f514c59-dbf1-44ea-a589-dbc43f0b4ee4@suse.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
In-Reply-To: <7f514c59-dbf1-44ea-a589-dbc43f0b4ee4@suse.com>

On Tue, Jan 30, 2024 at 11:42:43AM +0100, Jan Beulich wrote:
> On 30.01.2024 11:27, Roger Pau Monne wrote:
> > Dummy set/clear tests for additional spec_ctrl bits.
> > ---
> >  docs/all-tests.dox  |   2 +
> >  tests/test/Makefile |   9 ++++
> >  tests/test/main.c   | 100 ++++++++++++++++++++++++++++++++++++++++++++
> >  3 files changed, 111 insertions(+)
> >  create mode 100644 tests/test/Makefile
> >  create mode 100644 tests/test/main.c
> 
> I'm puzzled: Why "test"? That doesn't describe in any way what this test
> is about.

That's just my place holder for random XTF stuff.  I don't intend this
to be committed.

> > --- /dev/null
> > +++ b/tests/test/Makefile
> > @@ -0,0 +1,9 @@
> > +include $(ROOT)/build/common.mk
> > +
> > +NAME      := test
> > +CATEGORY  := utility
> > +TEST-ENVS := hvm32 pv64
> 
> Any reason for this limitation?

Just wanted a PV and an HVM context.

> > --- /dev/null
> > +++ b/tests/test/main.c
> > @@ -0,0 +1,100 @@
> > +/**
> > + * @file tests/test/main.c
> > + * @ref test-test
> > + *
> > + * @page test-test test
> > + *
> > + * @todo Docs for test-test
> > + *
> > + * @see tests/test/main.c
> > + */
> > +#include <xtf.h>
> > +
> > +#define MSR_SPEC_CTRL                       0x00000048
> > +#define  SPEC_CTRL_IPRED_DIS_U              (_AC(1, ULL) <<  3)
> > +#define  SPEC_CTRL_IPRED_DIS_S              (_AC(1, ULL) <<  4)
> > +#define  SPEC_CTRL_RRSBA_DIS_U              (_AC(1, ULL) <<  5)
> > +#define  SPEC_CTRL_RRSBA_DIS_S              (_AC(1, ULL) <<  6)
> > +#define  SPEC_CTRL_DDP_DIS_U                (_AC(1, ULL) <<  8)
> > +#define  SPEC_CTRL_BHI_DIS_S                (_AC(1, ULL) << 10)
> > +
> > +const char test_title[] = "SPEC_CTRL";
> > +
> > +static void update_spec_ctrl(uint64_t mask, bool set)
> > +{
> > +    uint64_t spec_ctrl = rdmsr(MSR_SPEC_CTRL);
> > +
> > +    if ( set )
> > +        spec_ctrl |= mask;
> > +    else
> > +        spec_ctrl &= ~mask;
> > +
> > +    wrmsr(MSR_SPEC_CTRL, spec_ctrl);
> > +}
> > +
> > +static void assert_spec_ctrl(uint64_t mask, bool set)
> > +{
> > +    uint64_t spec_ctrl = rdmsr(MSR_SPEC_CTRL);
> > +
> > +    if ( (spec_ctrl & mask) != (set ? mask : 0) )
> > +    {
> > +        xtf_failure("SPEC_CTRL expected: %#" PRIx64 " got: %#" PRIx64 "\n",
> > +                    set ? (spec_ctrl | mask) : (spec_ctrl & ~mask),
> > +                    spec_ctrl);
> > +        xtf_exit();
> > +    }
> > +}
> > +
> > +static void test_loop(uint64_t mask)
> > +{
> > +    update_spec_ctrl(mask, true);
> > +    assert_spec_ctrl(mask, true);
> > +    /* Ensure context switch to Xen. */
> > +    hypercall_yield();
> 
> I'm afraid yielding doesn't guarantee context switching in Xen,

It will ensure a vmexit/trap, which is what I was after here.  Maybe the
comment should be "Trap into Xen." or some such.  It wasn't about
ensuring VM context switching.

Thanks, Roger.


From xen-devel-bounces@lists.xenproject.org Tue Jan 30 12:06:51 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 30 Jan 2024 12:06:51 +0000
Received: from list by lists.xenproject.org with outflank-mailman.673323.1047661 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUmt4-0003bI-MQ; Tue, 30 Jan 2024 12:06:46 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 673323.1047661; Tue, 30 Jan 2024 12:06:46 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUmt4-0003bB-Jr; Tue, 30 Jan 2024 12:06:46 +0000
Received: by outflank-mailman (input) for mailman id 673323;
 Tue, 30 Jan 2024 12:06:44 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=BUgQ=JI=cloud.com=roger.pau@srs-se1.protection.inumbo.net>)
 id 1rUmt2-0003b5-TK
 for xen-devel@lists.xenproject.org; Tue, 30 Jan 2024 12:06:44 +0000
Received: from mail-wr1-x42b.google.com (mail-wr1-x42b.google.com
 [2a00:1450:4864:20::42b])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 08b6bd93-bf68-11ee-8a43-1f161083a0e0;
 Tue, 30 Jan 2024 13:06:44 +0100 (CET)
Received: by mail-wr1-x42b.google.com with SMTP id
 ffacd0b85a97d-33aed096cb3so1602010f8f.1
 for <xen-devel@lists.xenproject.org>; Tue, 30 Jan 2024 04:06:44 -0800 (PST)
Received: from localhost ([213.195.118.74]) by smtp.gmail.com with ESMTPSA id
 bo18-20020a056000069200b0033af3aec393sm3914520wrb.38.2024.01.30.04.06.42
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 30 Jan 2024 04:06:43 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 08b6bd93-bf68-11ee-8a43-1f161083a0e0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1706616403; x=1707221203; darn=lists.xenproject.org;
        h=in-reply-to:content-disposition:mime-version:references:message-id
         :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to;
        bh=7m85dVzbU8iANeNtEMmS+YgaRBXjdd5oQwbqmRL7bXc=;
        b=SFN4RnD24byr4l4jVHGV843FWQ9JXc4LnmvCqXozvbQgiFPPm3gX99itW68fCoS3Bh
         jPcl/M7NEMsCWA2kzNjRVBBQ3StWCBrt4g18Vd5hhZv7BtjeJIJJRwShX+vr2um1tyiU
         w80iedVfUaJgrh/2xoTpgViMWE0dgWDEaM0H8=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706616403; x=1707221203;
        h=in-reply-to:content-disposition:mime-version:references:message-id
         :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to;
        bh=7m85dVzbU8iANeNtEMmS+YgaRBXjdd5oQwbqmRL7bXc=;
        b=OGn8lCB3IYRgHxfMYccYQ0iT8cd0IuNpmuvMl94ernoNSgr8RuQI7w2U0CyBpRATXV
         mEc1dWjJjDrbZqHP+X54pFynpO0O0UssXZbGvm146svTN1q5L7BPtnmaJe9BO4LAXskM
         b98D86yEWeyMJWf9Fy+0hGLTCWNLEh5L1TwCu74FuTO5bmhuwTym4Iubla1CiRO95PuR
         5D17r7W4ShK769MRkMvl9EA+aRIvAaD99DEvPqYRZb6pgsLbdsneIhM2yZqpaNsDO9sC
         eadI4OHEV5Xlz4HmV1qL2E7D0f0+w5QRXSfnIQVjmOvATmF4KoOXjQ008EXI4KQWAjvz
         ZCKg==
X-Gm-Message-State: AOJu0YwAs1wBpTUU10GL2uCCo7KWU+e/CdsGeA9vhQ1ddQ7ohBpp9Buy
	7pekMba4oR0J2FzIGXpvEIds0xqyjQrOJKTW2dcXH+dI2IiBpgck0u29l0Lu5XU=
X-Google-Smtp-Source: AGHT+IGXcyvLZh0eeKA7sQJqXqfZL1s3iLlLlIjhMrmKTFSpcsCBoXY3FsnX9GjqYBedp8z+mlRZ1Q==
X-Received: by 2002:adf:e58b:0:b0:337:c5ef:3d2c with SMTP id l11-20020adfe58b000000b00337c5ef3d2cmr5820442wrm.61.1706616403439;
        Tue, 30 Jan 2024 04:06:43 -0800 (PST)
Date: Tue, 30 Jan 2024 13:06:35 +0100
From: Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
To: Jan Beulich <jbeulich@suse.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, Wei Liu <wl@xen.org>,
	xen-devel@lists.xenproject.org
Subject: Re: [PATCH 1/3] x86/intel: expose IPRED_CTRL to guests
Message-ID: <ZbjmS2oLAV7Fyqdn@macbook>
References: <20240130091400.50622-1-roger.pau@citrix.com>
 <20240130091400.50622-2-roger.pau@citrix.com>
 <3959f556-6177-473e-a052-bec11b5a8a9b@suse.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
In-Reply-To: <3959f556-6177-473e-a052-bec11b5a8a9b@suse.com>

On Tue, Jan 30, 2024 at 11:57:17AM +0100, Jan Beulich wrote:
> On 30.01.2024 10:13, Roger Pau Monne wrote:
> > The CPUID feature bit signals the presence of the IPRED_DIS_{U,S} controls in
> > SPEC_CTRL MSR.
> > 
> > Note that those controls are not used by the hypervisor.
> 
> Despite this, ...
> 
> > --- a/xen/arch/x86/msr.c
> > +++ b/xen/arch/x86/msr.c
> > @@ -324,6 +324,9 @@ uint64_t msr_spec_ctrl_valid_bits(const struct cpu_policy *cp)
> >      return (SPEC_CTRL_IBRS | SPEC_CTRL_STIBP |
> >              (ssbd       ? SPEC_CTRL_SSBD       : 0) |
> >              (psfd       ? SPEC_CTRL_PSFD       : 0) |
> > +            (cp->feat.ipred_ctrl ? (SPEC_CTRL_IPRED_DIS_U |
> > +                                    SPEC_CTRL_IPRED_DIS_S)
> > +                                 : 0) |
> >              0);
> >  }
> 
> ... if I'm not mistaken exposing SPEC_CTRL bits to guests is independent
> of whether we write SPEC_CTRL on entry to Xen. Therefore I think in the
> description it wants clarifying why it is acceptable to run Xen with the
> guest chosen settings for at least the DIS_S bit (assuming that it is
> okay to do so). Likely (didn't look there yet) also applicable to the
> further two patches.

"The added feature is made dependent on IBRSB, which ensures it will
only be exposed if X86_FEATURE_SC_MSR_{PV,HVM} is available, and that
ensures the value of SPEC_CTRL will get context switched on exit/entry
to guest."

Would adding the above to the commit message clarify the intended
implementation?

Thanks, Roger.


From xen-devel-bounces@lists.xenproject.org Tue Jan 30 12:56:15 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 30 Jan 2024 12:56:15 +0000
Received: from list by lists.xenproject.org with outflank-mailman.673329.1047671 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUnej-0003nN-Ah; Tue, 30 Jan 2024 12:56:01 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 673329.1047671; Tue, 30 Jan 2024 12:56:01 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUnej-0003nG-8C; Tue, 30 Jan 2024 12:56:01 +0000
Received: by outflank-mailman (input) for mailman id 673329;
 Tue, 30 Jan 2024 12:56:00 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=XFHt=JI=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rUnei-0003nA-5V
 for xen-devel@lists.xenproject.org; Tue, 30 Jan 2024 12:56:00 +0000
Received: from mail-lj1-x22e.google.com (mail-lj1-x22e.google.com
 [2a00:1450:4864:20::22e])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id e98427bf-bf6e-11ee-8a43-1f161083a0e0;
 Tue, 30 Jan 2024 13:55:58 +0100 (CET)
Received: by mail-lj1-x22e.google.com with SMTP id
 38308e7fff4ca-2cf2fdd518bso35596231fa.1
 for <xen-devel@lists.xenproject.org>; Tue, 30 Jan 2024 04:55:58 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 e13-20020a056638020d00b0046e48ce8605sm2193647jaq.130.2024.01.30.04.55.56
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 30 Jan 2024 04:55:57 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: e98427bf-bf6e-11ee-8a43-1f161083a0e0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1706619357; x=1707224157; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=88kOMxpRh5tAObRmPXyCk/QNnNc3+Rv4rm/m6cAfp0o=;
        b=HtMGoMSP1ts11Rv10ewcRFGch9dWXlOSXQB2Et7MFkxqckXAKnZRdbuuJRRWvGBjNW
         s3wsIB/FsLTZlpVChnCuYKPazzBczyTd/iD+f+VD4qm0o0x8cffCiuSU/uoLNYly5lWD
         G/VuGXVw2PeDr0pXHzLi1NtP71KxH/D0CxweDQFwzpTOxycLTLAh7Sh7C+jO4PzjQ3P9
         RabcDbvJkKJNATBUrCrLPcANacjDPfAWv50Ug62mXOr/0nHyjwdm12NksjEPTuJ6uZiK
         fgtD9693OHaOzR/AhZ6lZLz/TQ9H+MFovBLgeJjhzyItHGPl1Di/u3oeXytfKDrBMAB3
         9XSw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706619357; x=1707224157;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=88kOMxpRh5tAObRmPXyCk/QNnNc3+Rv4rm/m6cAfp0o=;
        b=BM/p7CXA5gg8VzzidmX6GtMRzC2yJMz7tv0mCcKW7ZVJ5K/nnUQaIQ32uf02QPb13W
         UBtKJ1xdzpP6wajjU/ynzvDEsljeae9VVlPNNt/8PFpZa8igg9LTaJVmnZUrb8A7LcSu
         tzYlgMPITH4DRhPHMHfMGe9hRa3m7Tdqj7N3RQ6vLcJ5i8q73GCCL1MpyAOJbK3MuzQM
         ynhVH1tu3NDsC2g6wmWbftOUbDwBXyE+bWSmA8p+oQNdHbijj9lfuId45JjbTevqthAg
         6SjmaVqRzz8adtbko7c1kObYTsL1x/7JpOinE+PIrR8mJndmcBUC6Lt1F4D4tVe4FAVx
         +3ag==
X-Gm-Message-State: AOJu0Yyf/t7mZsvtv9c7+zdEydLEoVhDwf9FYi5DHnGL97P/HIE8hLNi
	LiZTqysu8TMy1mbt+35k3LzadSRexHGtidxdjWLZ/YnBx8HnoouYeQtNHpZ7jg==
X-Google-Smtp-Source: AGHT+IGF9V5XLEZipbvW5/1HBV5SqmzX96/WKl7UpPsi5xotG9GxTuPORqIAvUWQxIY8UZrzW5RtKQ==
X-Received: by 2002:a05:651c:b29:b0:2d0:4c1c:4c10 with SMTP id b41-20020a05651c0b2900b002d04c1c4c10mr3987364ljr.53.1706619357643;
        Tue, 30 Jan 2024 04:55:57 -0800 (PST)
Message-ID: <2ded2ffa-70cb-4d91-8c52-d36bc2ee3705@suse.com>
Date: Tue, 30 Jan 2024 13:55:56 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] XTF: tests SPEC_CTRL added bits
Content-Language: en-US
To: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
Cc: xen-devel@lists.xenproject.org
References: <20240130091400.50622-1-roger.pau@citrix.com>
 <20240130102719.51150-1-roger.pau@citrix.com>
 <7f514c59-dbf1-44ea-a589-dbc43f0b4ee4@suse.com> <Zbjhica05LIMB9zX@macbook>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <Zbjhica05LIMB9zX@macbook>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 30.01.2024 12:46, Roger Pau Monné wrote:
> On Tue, Jan 30, 2024 at 11:42:43AM +0100, Jan Beulich wrote:
>> On 30.01.2024 11:27, Roger Pau Monne wrote:
>>> Dummy set/clear tests for additional spec_ctrl bits.
>>> ---
>>>  docs/all-tests.dox  |   2 +
>>>  tests/test/Makefile |   9 ++++
>>>  tests/test/main.c   | 100 ++++++++++++++++++++++++++++++++++++++++++++
>>>  3 files changed, 111 insertions(+)
>>>  create mode 100644 tests/test/Makefile
>>>  create mode 100644 tests/test/main.c
>>
>> I'm puzzled: Why "test"? That doesn't describe in any way what this test
>> is about.
> 
> That's just my place holder for random XTF stuff.  I don't intend this
> to be committed.

Could have been said then one way or another.

Jan


From xen-devel-bounces@lists.xenproject.org Tue Jan 30 12:57:09 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 30 Jan 2024 12:57:09 +0000
Received: from list by lists.xenproject.org with outflank-mailman.673331.1047682 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUnfp-0004Ha-LU; Tue, 30 Jan 2024 12:57:09 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 673331.1047682; Tue, 30 Jan 2024 12:57:09 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUnfp-0004HT-I0; Tue, 30 Jan 2024 12:57:09 +0000
Received: by outflank-mailman (input) for mailman id 673331;
 Tue, 30 Jan 2024 12:57:08 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rUnfo-0004HH-F7; Tue, 30 Jan 2024 12:57:08 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rUnfo-0007IR-9e; Tue, 30 Jan 2024 12:57:08 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rUnfn-0000HU-Qi; Tue, 30 Jan 2024 12:57:07 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rUnfn-0000Xz-Pg; Tue, 30 Jan 2024 12:57:07 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=jzTUoPogohWTxUUtgq2vLtbfrRXWKMMxJlUwHEh9pyY=; b=oKwZSlmzvFNeEVx3Xvxd4nY+fz
	9gTqdY8YQNgvpGwpXhT2EjOEIIS3OsOLHeFoqcpInbdwEIz19cM4c/NE4AtFfmaqHUdxUXZhTGJCr
	+bB5Gt3k3E8hY1zoV1IW6A/VmlEfCnz0yUgJPCUNptfjF5BXh4k8rE0wEfIfeoYbC7FM=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184523-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [linux-5.4 test] 184523: tolerable FAIL - PUSHED
X-Osstest-Failures:
    linux-5.4:test-armhf-armhf-xl-credit1:xen-boot:fail:heisenbug
    linux-5.4:test-armhf-armhf-xl-rtds:guest-start:fail:heisenbug
    linux-5.4:test-armhf-armhf-xl-credit2:guest-start:fail:heisenbug
    linux-5.4:test-armhf-armhf-xl-rtds:guest-start/debian.repeat:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-vhd:guest-start:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-credit2:guest-start/debian.repeat:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-rtds:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-rtds:saverestore-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-credit2:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-credit2:saverestore-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-credit1:guest-start:fail:nonblocking
    linux-5.4:test-armhf-armhf-libvirt:saverestore-support-check:fail:nonblocking
    linux-5.4:test-amd64-amd64-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    linux-5.4:test-amd64-i386-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    linux-5.4:test-amd64-i386-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-multivcpu:guest-start/debian.repeat:fail:nonblocking
    linux-5.4:test-amd64-amd64-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    linux-5.4:test-amd64-amd64-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    linux-5.4:test-amd64-amd64-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    linux-5.4:test-amd64-i386-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    linux-5.4:test-arm64-arm64-libvirt-raw:guest-start/debian.repeat:fail:nonblocking
    linux-5.4:test-armhf-armhf-libvirt-raw:saverestore-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-libvirt-qcow2:saverestore-support-check:fail:nonblocking
    linux-5.4:test-amd64-i386-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    linux-5.4:test-amd64-amd64-qemuu-nested-amd:debian-hvm-install/l1/l2:fail:nonblocking
    linux-5.4:test-amd64-i386-xl-pvshim:guest-start:fail:nonblocking
    linux-5.4:test-amd64-amd64-libvirt-xsm:migrate-support-check:fail:nonblocking
    linux-5.4:test-amd64-i386-libvirt:migrate-support-check:fail:nonblocking
    linux-5.4:test-amd64-i386-libvirt-xsm:migrate-support-check:fail:nonblocking
    linux-5.4:test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    linux-5.4:test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-thunderx:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-thunderx:saverestore-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-credit2:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-xsm:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-credit2:saverestore-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-xsm:saverestore-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl:saverestore-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-credit1:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-credit1:saverestore-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-libvirt-xsm:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-libvirt-xsm:saverestore-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-multivcpu:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-multivcpu:saverestore-support-check:fail:nonblocking
    linux-5.4:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl:saverestore-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-arndale:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-arndale:saverestore-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-libvirt:migrate-support-check:fail:nonblocking
    linux-5.4:test-amd64-i386-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-libvirt-raw:saverestore-support-check:fail:nonblocking
    linux-5.4:test-amd64-amd64-libvirt-vhd:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-vhd:migrate-support-check:fail:nonblocking
    linux-5.4:test-arm64-arm64-xl-vhd:saverestore-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-vhd:migrate-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-xl-vhd:saverestore-support-check:fail:nonblocking
    linux-5.4:test-armhf-armhf-libvirt-qcow2:migrate-support-check:fail:nonblocking
X-Osstest-Versions-This:
    linux=f0602893f43a54097fcf22bd8c2f7b8e75ca643e
X-Osstest-Versions-That:
    linux=9153fc9664959aa6bb35915b2bbd8fbc4c762962
From: osstest service owner <osstest-admin@xenproject.org>
Date: Tue, 30 Jan 2024 12:57:07 +0000

flight 184523 linux-5.4 real [real]
http://logs.test-lab.xenproject.org/osstest/logs/184523/

Failures :-/ but no regressions.

Tests which are failing intermittently (not blocking):
 test-armhf-armhf-xl-credit1   8 xen-boot         fail in 184507 pass in 184523
 test-armhf-armhf-xl-rtds     14 guest-start                fail pass in 184507
 test-armhf-armhf-xl-credit2  14 guest-start                fail pass in 184507

Tests which did not succeed, but are not blocking:
 test-armhf-armhf-xl-rtds 18 guest-start/debian.repeat fail in 184507 like 184362
 test-armhf-armhf-xl-vhd      13 guest-start         fail in 184507 like 184381
 test-armhf-armhf-xl-credit2 18 guest-start/debian.repeat fail in 184507 like 184381
 test-armhf-armhf-xl-rtds    15 migrate-support-check fail in 184507 never pass
 test-armhf-armhf-xl-rtds 16 saverestore-support-check fail in 184507 never pass
 test-armhf-armhf-xl-credit2 15 migrate-support-check fail in 184507 never pass
 test-armhf-armhf-xl-credit2 16 saverestore-support-check fail in 184507 never pass
 test-armhf-armhf-xl-credit1  14 guest-start                  fail  like 184370
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 184381
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 184381
 test-amd64-i386-xl-qemut-win7-amd64 19 guest-stop             fail like 184381
 test-amd64-i386-xl-qemuu-win7-amd64 19 guest-stop             fail like 184381
 test-armhf-armhf-xl-multivcpu 18 guest-start/debian.repeat    fail like 184381
 test-amd64-amd64-xl-qemut-win7-amd64 19 guest-stop            fail like 184381
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 184381
 test-amd64-amd64-xl-qemut-ws16-amd64 19 guest-stop            fail like 184381
 test-amd64-i386-xl-qemut-ws16-amd64 19 guest-stop             fail like 184381
 test-arm64-arm64-libvirt-raw 17 guest-start/debian.repeat    fail  like 184381
 test-armhf-armhf-libvirt-raw 15 saverestore-support-check    fail  like 184381
 test-armhf-armhf-libvirt-qcow2 15 saverestore-support-check   fail like 184381
 test-amd64-i386-xl-qemuu-ws16-amd64 19 guest-stop             fail like 184381
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 184381
 test-amd64-i386-xl-pvshim    14 guest-start                  fail   never pass
 test-amd64-amd64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-amd64-i386-libvirt      15 migrate-support-check        fail   never pass
 test-amd64-i386-libvirt-xsm  15 migrate-support-check        fail   never pass
 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-arm64-arm64-xl-thunderx 15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-thunderx 16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-credit2  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-xsm      15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit2  16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-xsm      16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl          15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl          16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-credit1  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit1  16 saverestore-support-check    fail   never pass
 test-arm64-arm64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-xsm 16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-multivcpu 15 migrate-support-check        fail  never pass
 test-armhf-armhf-xl-multivcpu 16 saverestore-support-check    fail  never pass
 test-amd64-amd64-libvirt     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-arndale  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-arndale  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt     15 migrate-support-check        fail   never pass
 test-amd64-i386-libvirt-raw  14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 15 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-vhd 14 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-vhd      14 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-vhd      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-raw 14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-qcow2 14 migrate-support-check        fail never pass

version targeted for testing:
 linux                f0602893f43a54097fcf22bd8c2f7b8e75ca643e
baseline version:
 linux                9153fc9664959aa6bb35915b2bbd8fbc4c762962

Last test of basis   184381  2024-01-17 06:00:18 Z   13 days
Testing same since   184469  2024-01-25 22:43:10 Z    4 days    7 attempts

------------------------------------------------------------
People who touched revisions under test:
  "Christian A. Ehrhardt" <lk@c--e.de>
  Alex Deucher <alexander.deucher@amd.com>
  Alexander Gordeev <agordeev@linux.ibm.com>
  Alexei Starovoitov <ast@kernel.org>
  Amit Cohen <amcohen@nvidia.com>
  Andreas Gruenbacher <agruenba@redhat.com>
  Andrew Lunn <andrew@lunn.ch>
  Andrii Nakryiko <andrii@kernel.org>
  Anna Schumaker <Anna.Schumaker@Netapp.com>
  Arnaldo Carvalho de Melo <acme@redhat.com>
  Arnd Bergmann <arnd@arndb.de>
  Arseniy Krasnov <avkrasnov@salutedevices.com>
  Artem Chernyshev <artem.chernyshev@red-soft.ru>
  Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
  Benjamin Coddington <bcodding@redhat.com>
  Bhaskar Chowdhury <unixbhaskar@gmail.com>
  Bjorn Andersson <andersson@kernel.org>
  Borislav Petkov (AMD) <bp@alien8.de>
  Brian Norris <briannorris@chromium.org>
  Cameron Williams <cang1@live.co.uk>
  Carlos Llamas <cmllamas@google.com>
  Chao Yu <chao@kernel.org>
  Charles Keepax <ckeepax@opensource.cirrus.com>
  Chengming Zhou <zhouchengming@bytedance.com>
  Chih-Kang Chang <gary.chang@realtek.com>
  Christian A. Ehrhardt <lk@c--e.de>
  Christoph Hellwig <hch@lst.de>
  Christoph Niedermaier <cniedermaier@dh-electronics.com>
  Christophe JAILLET <christophe.jaillet@wanadoo.fr>
  Claudiu Beznea <claudiu.beznea.uj@bp.renesas.com>
  Colin Ian King <colin.i.king@gmail.com>
  Colin Ian King <colin.king@canonical.com>
  Curtis Klein <curtis.klein@hpe.com>
  Dan Carpenter <dan.carpenter@linaro.org>
  Daniel Thompson <daniel.thompson@linaro.org>
  Danilo Krummrich <dakr@redhat.com>
  Dario Binacchi <dario.binacchi@amarulasolutions.com>
  Dave Airlie <airlied@redhat.com>
  Dave Hansen <dave.hansen@linux.intel.com>
  David Lin <CTLIN0@nuvoton.com>
  David Lin <yu-hao.lin@nxp.com>
  David Rau <David.Rau.opensource@dm.renesas.com>
  David S. Miller <davem@davemloft.net>
  Dinghao Liu <dinghao.liu@zju.edu.cn>
  Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
  Dmitry Torokhov <dmitry.torokhov@gmail.com>
  Eric Biggers <ebiggers@google.com>
  Eric Dumazet <edumazet@google.com>
  Esther Shimanovich <eshimanovich@chromium.org>
  Fedor Pchelkin <pchelkin@ispras.ru>
  Florian Fainelli <florian.fainelli@broadcom.com>
  Florian Lehner <dev@der-flo.net>
  Florian Westphal <fw@strlen.de>
  Francesco Dolcini <francesco.dolcini@toradex.com>
  Gavrilov Ilia <Ilia.Gavrilov@infotecs.ru>
  Geert Uytterhoeven <geert+renesas@glider.be>
  Gonglei (Arei) <arei.gonglei@huawei.com>
  Gonglei <arei.gonglei@huawei.com>
  Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  Gregory CLEMENT <gregory.clement@bootlin.com>
  Guanghui Feng <guanghuifeng@linux.alibaba.com>
  Guenter Roeck <linux@roeck-us.net>
  Gui-Dong Han <2045gemini@gmail.com>
  Hangbin Liu <liuhangbin@gmail.com>
  Hans de Goede <hdegoede@redhat.com>
  Hans Verkuil <hverkuil-cisco@xs4all.nl>
  Harshit Mogalapalli <harshit.m.mogalapalli@oracle.com>
  Heikki Krogerus <heikki.krogerus@linux.intel.com>
  Heiko Carstens <hca@linux.ibm.com>
  Heiko Stuebner <heiko@sntech.de>
  Helge Deller <deller@gmx.de>
  Herbert Xu <herbert@gondor.apana.org.au>
  Ian Rogers <irogers@google.com>
  Ido Schimmel <idosch@nvidia.com>
  Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
  Inki Dae <inki.dae@samsung.com>
  Jaegeuk Kim <jaegeuk@kernel.org>
  Jakub Kicinski <kuba@kernel.org>
  James Clark <james.clark@arm.com>
  Jan Beulich <jbeulich@suse.com>
  Jani Nikula <jani.nikula@intel.com>
  Jason Gerecke <jason.gerecke@wacom.com>
  Jay Buddhabhatti <jay.buddhabhatti@amd.com>
  Jerry Hoemann <jerry.hoemann@hpe.com>
  Jiri Kosina <jkosina@suse.com>
  Jiri Olsa <jolsa@kernel.org>
  Jiri Olsa <jolsa@redhat.com>
  Joakim Zhang <joakim.zhang@cixtech.com>
  Joe Perches <joe@perches.com>
  John Johansen <john.johansen@canonical.com>
  Jon Hunter <jonathanh@nvidia.com>
  Judy Hsiao <judyhsiao@chromium.org>
  Julian Anastasov <ja@ssi.bg>
  Kalle Valo <kvalo@codeaurora.org>
  Kalle Valo <kvalo@kernel.org>
  Kamil Duljas <kamil.duljas@gmail.com>
  Kees Cook <keescook@chromium.org>
  Keith Busch <kbusch@kernel.org>
  kernelci.org bot <bot@kernelci.org>
  Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
  Konrad Dybcio <konrad.dybcio@linaro.org>
  Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
  Krzysztof Wilczyński <kwilczynski@kernel.org>
  Kunwu Chan <chentao@kylinos.cn>
  Laurent Dufour <ldufour@linux.ibm.com>
  Leon Romanovsky <leonro@nvidia.com>
  Li Jun <jun.li@nxp.com>
  Lin Ma <linma@zju.edu.cn>
  Linus Torvalds <torvalds@linux-foundation.org>
  Linus Walleij <linus.walleij@linaro.org>
  Linux Kernel Functional Testing <lkft@linaro.org>
  Luca Weiss <luca@z3ntu.xyz>
  Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
  Maciej Strozek <mstrozek@opensource.cirrus.com>
  Marek Szyprowski <m.szyprowski@samsung.com>
  Mark Brown <broonie@kernel.org>
  Martin K. Petersen <martin.petersen@oracle.com>
  Masahiro Yamada <masahiroy@kernel.org>
  Matthew Wilcox (Oracle) <willy@infradead.org>
  Maurizio Lombardi <mlombard@redhat.com>
  Mauro Carvalho Chehab <mchehab@kernel.org>
  Maxime Ripard <mripard@kernel.org>
  Michael Ellerman <mpe@ellerman.id.au>
  Michael S. Tsirkin <mst@redhat.com>
  Mickaël Salaün <mic@digikod.net>
  Mike Isely <isely@pobox.com>
  Mike Looijmans <mike.looijmans@topic.nl>
  Miquel Raynal <miquel.raynal@bootlin.com>
  Muhammad Usama Anjum <usama.anjum@collabora.com>
  Nam Cao <namcao@linutronix.de>
  Namhyung Kim <namhyung@kernel.org>
  Nathan Lynch <nathanl@linux.ibm.com>
  Nikita Kiryushin <kiryushin@ancud.ru>
  Nikita Yushchenko <nikita.yoush@cogentembedded.com>
  Nikita Zhandarovich <n.zhandarovich@fintech.ru>
  Niklas Schnelle <schnelle@linux.ibm.com>
  Nishanth Menon <nm@ti.com>
  Osama Muhammad <osmtendev@gmail.com>
  Ovidiu Panait <ovidiu.panait@windriver.com>
  Pablo Neira Ayuso <pablo@netfilter.org>
  Paolo Abeni <pabeni@redhat.com>
  Paolo Bonzini <pbonzini@redhat.com>
  Paul Moore <paul@paul-moore.com>
  Peter Chen <peter.chen@kernel.org>
  Peter Delevoryas <peter@pjd.dev>
  Peter Robinson <pbrobinson@gmail.com>
  Petr Machata <petrm@nvidia.com>
  Philipp Zabel <p.zabel@pengutronix.de>
  Ping Cheng <ping.cheng@wacom.com>
  Ping-Ke Shih <pkshih@realtek.com>
  Rafael Beims <rafael.beims@toradex.com> # Verdin iMX8MP/SD8997 SD
  Rafael J. Wysocki <rafael.j.wysocki@intel.com>
  Ram Muthiah <rammuthiah@google.com>
  Randy Dunlap <rdunlap@infradead.org>
  Ravi Gunasekaran <r-gunasekaran@ti.com>
  RD Babiera <rdbabiera@google.com>
  Ricardo B. Marliere <ricardo@marliere.net>
  Richard Weinberger <richard@nod.at>
  Rob Herring <robh@kernel.org>
  Rob Landley <rob@landley.net>
  Robert Foss <rfoss@kernel.org>
  Ronald Monthero <debug.penguin32@gmail.com>
  Sakari Ailus <sakari.ailus@linux.intel.com>
  Sasha Levin <sashal@kernel.org>
  Serge Semin <fancer.lancer@gmail.com>
  Sergey Shtylyov <s.shtylyov@omp.ru>
  Shuming Fan <shumingf@realtek.com>
  Siddharth Vadapalli <s-vadapalli@ti.com>
  Simon Horman <horms@kernel.org>
  Sjoerd Simons <sjoerd@collabora.com>
  Song Liu <song@kernel.org>
  Stefan Berger <stefanb@linux.ibm.com>
  Stefan Wahren <wahrenst@gmx.net>
  Stephen Boyd <sboyd@kernel.org>
  Steven Rostedt (Google) <rostedt@goodmis.org>
  Su Hui <suhui@nfschina.com>
  Sudip Mukherjee <sudipm.mukherjee@gmail.com>
  Suzuki K Poulose <suzuki.poulose@arm.com>
  Takashi Iwai <tiwai@suse.de>
  Tatsunosuke Tobita <tatsunosuke.tobita@wacom.com>
  Theodore Ts'o <tytso@mit.edu>
  Thinh Nguyen <Thinh.Nguyen@synopsys.com>
  Thinh Tran <thinhtr@linux.vnet.ibm.com>
  Thomas Bogendoerfer <tsbogend@alpha.franken.de>
  Thomas Gleixner <tglx@linutronix.de>
  Tiezhu Yang <yangtiezhu@loongson.cn>
  Tom Lendacky <thomas.lendacky@amd.com>
  Tomi Valkeinen <tomi.valkeinen@ideasonboard.com>
  Trond Myklebust <trond.myklebust@hammerspace.com>
  Ulf Hansson <ulf.hansson@linaro.org>
  Uttkarsh Aggarwal <quic_uaggarwa@quicinc.com>
  Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
  Vasiliy Kovalev <kovalev@altlinux.org>
  Venkata Sai Duggi <venkata.sai.duggi@ibm.com>
  Vineet Gupta <vgupta@kernel.org>
  Vineeth Vijayan <vneethv@linux.ibm.com>
  wangyangxin <wangyangxin1@huawei.com>
  Weihao Li <cn.liweihao@gmail.com>
  Wim Van Sebroeck <wim@linux-watchdog.org>
  Wolfram Sang <wsa+renesas@sang-engineering.com>
  Wolfram Sang <wsa@kernel.org>
  Xiang Chen <chenxiang66@hisilicon.com>
  Xiang Yang <xiangyang3@huawei.com>
  Xu Yang <xu.yang_2@nxp.com>
  Yang Yingliang <yangyingliang@huawei.com>
  Yihang Li <liyihang9@huawei.com>
  Zhang Yi <yi.zhang@huawei.com>
  ZhaoLong Wang <wangzhaolong1@huawei.com>
  Zheng Yejian <zhengyejian1@huawei.com>
  zhenwei pi <pizhenwei@bytedance.com>
  Zhipeng Lu <alexious@zju.edu.cn>
  Ziqi Zhao <astrajoan@yahoo.com>

jobs:
 build-amd64-xsm                                              pass    
 build-arm64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64                                                  pass    
 build-arm64                                                  pass    
 build-armhf                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-arm64-libvirt                                          pass    
 build-armhf-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-pvops                                            pass    
 build-arm64-pvops                                            pass    
 build-armhf-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-amd64-amd64-xl                                          pass    
 test-amd64-coresched-amd64-xl                                pass    
 test-arm64-arm64-xl                                          pass    
 test-armhf-armhf-xl                                          pass    
 test-amd64-i386-xl                                           pass    
 test-amd64-coresched-i386-xl                                 pass    
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm           pass    
 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm            pass    
 test-amd64-amd64-xl-qemut-stubdom-debianhvm-amd64-xsm        pass    
 test-amd64-i386-xl-qemut-stubdom-debianhvm-amd64-xsm         pass    
 test-amd64-amd64-xl-qemut-debianhvm-i386-xsm                 pass    
 test-amd64-i386-xl-qemut-debianhvm-i386-xsm                  pass    
 test-amd64-amd64-xl-qemuu-debianhvm-i386-xsm                 pass    
 test-amd64-i386-xl-qemuu-debianhvm-i386-xsm                  pass    
 test-amd64-amd64-libvirt-xsm                                 pass    
 test-arm64-arm64-libvirt-xsm                                 pass    
 test-amd64-i386-libvirt-xsm                                  pass    
 test-amd64-amd64-xl-xsm                                      pass    
 test-arm64-arm64-xl-xsm                                      pass    
 test-amd64-i386-xl-xsm                                       pass    
 test-amd64-amd64-qemuu-nested-amd                            fail    
 test-amd64-amd64-xl-pvhv2-amd                                pass    
 test-amd64-i386-qemut-rhel6hvm-amd                           pass    
 test-amd64-i386-qemuu-rhel6hvm-amd                           pass    
 test-amd64-amd64-dom0pvh-xl-amd                              pass    
 test-amd64-amd64-xl-qemut-debianhvm-amd64                    pass    
 test-amd64-i386-xl-qemut-debianhvm-amd64                     pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64                    pass    
 test-amd64-i386-xl-qemuu-debianhvm-amd64                     pass    
 test-amd64-i386-freebsd10-amd64                              pass    
 test-amd64-amd64-qemuu-freebsd11-amd64                       pass    
 test-amd64-amd64-qemuu-freebsd12-amd64                       pass    
 test-amd64-amd64-xl-qemuu-ovmf-amd64                         pass    
 test-amd64-i386-xl-qemuu-ovmf-amd64                          pass    
 test-amd64-amd64-xl-qemut-win7-amd64                         fail    
 test-amd64-i386-xl-qemut-win7-amd64                          fail    
 test-amd64-amd64-xl-qemuu-win7-amd64                         fail    
 test-amd64-i386-xl-qemuu-win7-amd64                          fail    
 test-amd64-amd64-xl-qemut-ws16-amd64                         fail    
 test-amd64-i386-xl-qemut-ws16-amd64                          fail    
 test-amd64-amd64-xl-qemuu-ws16-amd64                         fail    
 test-amd64-i386-xl-qemuu-ws16-amd64                          fail    
 test-armhf-armhf-xl-arndale                                  pass    
 test-amd64-amd64-examine-bios                                pass    
 test-amd64-i386-examine-bios                                 pass    
 test-amd64-amd64-xl-credit1                                  pass    
 test-arm64-arm64-xl-credit1                                  pass    
 test-armhf-armhf-xl-credit1                                  fail    
 test-amd64-amd64-xl-credit2                                  pass    
 test-arm64-arm64-xl-credit2                                  pass    
 test-armhf-armhf-xl-credit2                                  fail    
 test-amd64-amd64-xl-qemuu-dmrestrict-amd64-dmrestrict        pass    
 test-amd64-i386-xl-qemuu-dmrestrict-amd64-dmrestrict         pass    
 test-amd64-amd64-examine                                     pass    
 test-arm64-arm64-examine                                     pass    
 test-armhf-armhf-examine                                     pass    
 test-amd64-i386-examine                                      pass    
 test-amd64-i386-freebsd10-i386                               pass    
 test-amd64-amd64-qemuu-nested-intel                          pass    
 test-amd64-amd64-xl-pvhv2-intel                              pass    
 test-amd64-i386-qemut-rhel6hvm-intel                         pass    
 test-amd64-i386-qemuu-rhel6hvm-intel                         pass    
 test-amd64-amd64-dom0pvh-xl-intel                            pass    
 test-amd64-amd64-libvirt                                     pass    
 test-armhf-armhf-libvirt                                     pass    
 test-amd64-i386-libvirt                                      pass    
 test-amd64-amd64-xl-multivcpu                                pass    
 test-armhf-armhf-xl-multivcpu                                fail    
 test-amd64-amd64-pair                                        pass    
 test-amd64-i386-pair                                         pass    
 test-amd64-amd64-libvirt-pair                                pass    
 test-amd64-i386-libvirt-pair                                 pass    
 test-amd64-amd64-xl-pvshim                                   pass    
 test-amd64-i386-xl-pvshim                                    fail    
 test-amd64-amd64-pygrub                                      pass    
 test-armhf-armhf-libvirt-qcow2                               pass    
 test-amd64-amd64-xl-qcow2                                    pass    
 test-arm64-arm64-libvirt-raw                                 fail    
 test-armhf-armhf-libvirt-raw                                 pass    
 test-amd64-i386-libvirt-raw                                  pass    
 test-amd64-amd64-xl-rtds                                     pass    
 test-armhf-armhf-xl-rtds                                     fail    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64-shadow             pass    
 test-amd64-i386-xl-qemuu-debianhvm-amd64-shadow              pass    
 test-amd64-amd64-xl-shadow                                   pass    
 test-amd64-i386-xl-shadow                                    pass    
 test-arm64-arm64-xl-thunderx                                 pass    
 test-amd64-amd64-examine-uefi                                pass    
 test-amd64-i386-examine-uefi                                 pass    
 test-amd64-amd64-libvirt-vhd                                 pass    
 test-arm64-arm64-xl-vhd                                      pass    
 test-armhf-armhf-xl-vhd                                      pass    
 test-amd64-i386-xl-vhd                                       pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Pushing revision :

hint: The 'hooks/update' hook was ignored because it's not set as executable.
hint: You can disable this warning with `git config advice.ignoredHook false`.
hint: The 'hooks/post-receive' hook was ignored because it's not set as executable.
hint: You can disable this warning with `git config advice.ignoredHook false`.
hint: The 'hooks/post-update' hook was ignored because it's not set as executable.
hint: You can disable this warning with `git config advice.ignoredHook false`.
To xenbits.xen.org:/home/xen/git/linux-pvops.git
   9153fc966495..f0602893f43a  f0602893f43a54097fcf22bd8c2f7b8e75ca643e -> tested/linux-5.4


From xen-devel-bounces@lists.xenproject.org Tue Jan 30 12:59:18 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 30 Jan 2024 12:59:18 +0000
Received: from list by lists.xenproject.org with outflank-mailman.673336.1047692 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUnht-0005UM-6y; Tue, 30 Jan 2024 12:59:17 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 673336.1047692; Tue, 30 Jan 2024 12:59:17 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUnht-0005UF-3i; Tue, 30 Jan 2024 12:59:17 +0000
Received: by outflank-mailman (input) for mailman id 673336;
 Tue, 30 Jan 2024 12:59:16 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=XFHt=JI=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rUnhs-0005TL-Dl
 for xen-devel@lists.xenproject.org; Tue, 30 Jan 2024 12:59:16 +0000
Received: from mail-wr1-x431.google.com (mail-wr1-x431.google.com
 [2a00:1450:4864:20::431])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 5f5157cf-bf6f-11ee-8a43-1f161083a0e0;
 Tue, 30 Jan 2024 13:59:15 +0100 (CET)
Received: by mail-wr1-x431.google.com with SMTP id
 ffacd0b85a97d-33ae6f4fd78so1799076f8f.1
 for <xen-devel@lists.xenproject.org>; Tue, 30 Jan 2024 04:59:15 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 bs14-20020a056000070e00b0033aeba36b7csm6059848wrb.57.2024.01.30.04.59.14
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 30 Jan 2024 04:59:15 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 5f5157cf-bf6f-11ee-8a43-1f161083a0e0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1706619555; x=1707224355; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=Y46pMYdg8Umezh48UzNmq8ws/1WAGzLS1jgcWOIDxLE=;
        b=Br9gAdIxtzijyrORRXSr8t7gFq+lmPmD1h4rvlauUiMbgiKrR03cltaHE3Z8nXU8z4
         DaDmm4Xak0aWlJDu6oPbaQsBjpyULbhvW+t2+Jm1nuWI/UZS7pNyQFLhdyptrOdSXe44
         WOG9dpipeD2zeQ23GYgGAJNMKCTKpsRBWVP33ELHFKQ01uNZhZ69D/VpgHDnc3NbpBTD
         u7dPnkWTQ7pw7br9/SpTu+M5TQuKgcslA1yBHxX6TS6gEspCnb/Bk8A/1PfwbW5ORJyC
         T0Q6nX1dHeQBCzXHasq+ACKlymq/uzaKfDJm6zqubCLZ5yxuLP8I1wR8i9X5Q9ircf6N
         Zlpg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706619555; x=1707224355;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=Y46pMYdg8Umezh48UzNmq8ws/1WAGzLS1jgcWOIDxLE=;
        b=txxz7NvAmpLCnL5Ym6iMhi67M7rlEUbKtT/i7Q6KmDu4RG6zcdUi0iOtziL+jET2YG
         83TfhRvGNJ+pc98t9+b2ZYgO6vxSN5qlagvvolZNrtIFUlOn686aT0FQ/uFv88bvIm70
         6BK805K21O99LXzssLolT23wUwBUjTYd9HjuDNK9WCWO5KhPvhR/N9nECNcFz/Mwmyjh
         bClBtQIX+di9jympK5ppyDArPl3Chw7Zg2CO6GMMggh17q3Fn2JRe6XJqYhJYtlO3f4J
         81VPxBdyrTEWxFONCdkPbZ7Y58WhBXLu1fy7uLgZfEcKA1sM6xep333DPUy+Pta5SBec
         ktXg==
X-Gm-Message-State: AOJu0Yy0EWacayQdMpMoHrZYFvpSXkMn29fudaheO95HFSnyzv+5g6d4
	RYwglCegIS477CmZxotv0tX8H04xg9O332gRQ5RwGJlCra138MIRI0oZDSHJRg==
X-Google-Smtp-Source: AGHT+IEWIv59LuVLr0sUo5ZLwLNSJVgtBDCZHyP6g5GkWFd0g4qCMhxFSDQAYCWBDHoKIu1y+EiB+Q==
X-Received: by 2002:adf:e584:0:b0:337:c097:db9f with SMTP id l4-20020adfe584000000b00337c097db9fmr6809777wrm.17.1706619555298;
        Tue, 30 Jan 2024 04:59:15 -0800 (PST)
X-Forwarded-Encrypted: i=0; AJvYcCVhAS+vmGLmA3x+xSWpyUIVaYWJHmHDBHCoaZ6A5UBdLg6erqBKGkuaoeOLsExmUZdadesbNkCO4MivXHsAHmv9XzS61f4GPJ5lBruDf0oM3Bs/h4AKWl8wItk=
Message-ID: <0ad880e8-0f2b-4519-971e-c98b3411fba5@suse.com>
Date: Tue, 30 Jan 2024 13:59:14 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 1/3] x86/intel: expose IPRED_CTRL to guests
Content-Language: en-US
To: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, Wei Liu <wl@xen.org>,
 xen-devel@lists.xenproject.org
References: <20240130091400.50622-1-roger.pau@citrix.com>
 <20240130091400.50622-2-roger.pau@citrix.com>
 <3959f556-6177-473e-a052-bec11b5a8a9b@suse.com> <ZbjmS2oLAV7Fyqdn@macbook>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <ZbjmS2oLAV7Fyqdn@macbook>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 30.01.2024 13:06, Roger Pau Monné wrote:
> On Tue, Jan 30, 2024 at 11:57:17AM +0100, Jan Beulich wrote:
>> On 30.01.2024 10:13, Roger Pau Monne wrote:
>>> The CPUID feature bit signals the presence of the IPRED_DIS_{U,S} controls in
>>> SPEC_CTRL MSR.
>>>
>>> Note that those controls are not used by the hypervisor.
>>
>> Despite this, ...
>>
>>> --- a/xen/arch/x86/msr.c
>>> +++ b/xen/arch/x86/msr.c
>>> @@ -324,6 +324,9 @@ uint64_t msr_spec_ctrl_valid_bits(const struct cpu_policy *cp)
>>>      return (SPEC_CTRL_IBRS | SPEC_CTRL_STIBP |
>>>              (ssbd       ? SPEC_CTRL_SSBD       : 0) |
>>>              (psfd       ? SPEC_CTRL_PSFD       : 0) |
>>> +            (cp->feat.ipred_ctrl ? (SPEC_CTRL_IPRED_DIS_U |
>>> +                                    SPEC_CTRL_IPRED_DIS_S)
>>> +                                 : 0) |
>>>              0);
>>>  }
>>
>> ... if I'm not mistaken exposing SPEC_CTRL bits to guests is independent
>> of whether we write SPEC_CTRL on entry to Xen. Therefore I think in the
>> description it wants clarifying why it is acceptable to run Xen with the
>> guest chosen settings for at least the DIS_S bit (assuming that it is
>> okay to do so). Likely (didn't look there yet) also applicable to the
>> further two patches.
> 
> "The added feature is made dependent on IBRSB, which ensures it will
> only be exposed if X86_FEATURE_SC_MSR_{PV,HVM} is available, and that
> ensures the value of SPEC_CTRL will get context switched on exit/entry
> to guest."
> 
> Would adding the above to the commit message clarify the intended
> implementation?

It would improve things, at least hinting towards there being a connection
between exposure and updating on entry to Xen. I'd like to ask though to
avoid "context switch" when talking about entry from guest context. While
in a way technically correct, our normal meaning of the term is the
process of switching vCPU-s out/in on a pCPU.

Jan


From xen-devel-bounces@lists.xenproject.org Tue Jan 30 13:01:33 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 30 Jan 2024 13:01:33 +0000
Received: from list by lists.xenproject.org with outflank-mailman.673340.1047701 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUnk1-0006ud-J7; Tue, 30 Jan 2024 13:01:29 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 673340.1047701; Tue, 30 Jan 2024 13:01:29 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUnk1-0006uW-GX; Tue, 30 Jan 2024 13:01:29 +0000
Received: by outflank-mailman (input) for mailman id 673340;
 Tue, 30 Jan 2024 13:01:28 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=VNcU=JI=redhat.com=imammedo@srs-se1.protection.inumbo.net>)
 id 1rUnjz-0006uQ-Op
 for xen-devel@lists.xenproject.org; Tue, 30 Jan 2024 13:01:27 +0000
Received: from us-smtp-delivery-124.mimecast.com
 (us-smtp-delivery-124.mimecast.com [170.10.133.124])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id abf94272-bf6f-11ee-8a43-1f161083a0e0;
 Tue, 30 Jan 2024 14:01:25 +0100 (CET)
Received: from mail-qt1-f197.google.com (mail-qt1-f197.google.com
 [209.85.160.197]) by relay.mimecast.com with ESMTP with STARTTLS
 (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id
 us-mta-650-BhDM7FeqMB233njGk3oRjA-1; Tue, 30 Jan 2024 08:01:22 -0500
Received: by mail-qt1-f197.google.com with SMTP id
 d75a77b69052e-429f3c43c66so72205211cf.1
 for <xen-devel@lists.xenproject.org>; Tue, 30 Jan 2024 05:01:22 -0800 (PST)
Received: from imammedo.users.ipa.redhat.com (nat-pool-brq-t.redhat.com.
 [213.175.37.10]) by smtp.gmail.com with ESMTPSA id
 o18-20020ac84292000000b0042be0933c1csm118654qtl.15.2024.01.30.05.01.17
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 30 Jan 2024 05:01:20 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: abf94272-bf6f-11ee-8a43-1f161083a0e0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
	s=mimecast20190719; t=1706619684;
	h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
	 to:to:cc:cc:mime-version:mime-version:content-type:content-type:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=apKZmorjsr2taGieD0PrruP9G2qbgz7znJkCA3WbxIA=;
	b=BYg52de2quR0ZDofIW/8xwlFbyP+NayvUy7dPZwx7ihJaSKLbn2U8u4IrMuRDo30JGT3LK
	r4j55bRB/IoPwgKsIxM1jwZ9CMl9C61F6pGmB0xveiwCoeVsmUMlZt7zdq68ABxVjSOaCm
	z+G7rhAITTGiEXEPqGGlHOhbJlB31oc=
X-MC-Unique: BhDM7FeqMB233njGk3oRjA-1
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706619682; x=1707224482;
        h=content-transfer-encoding:mime-version:references:in-reply-to
         :message-id:subject:cc:to:from:date:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to;
        bh=z7s1ZBCu3sJthQ2nrjXaXTr8b5tVJwTBl9SA6zwisWY=;
        b=kobnOcVexB6DFQLHtvEH3qtxVeP+lD34LT+kCsCdyPWPqy7JAz8RXP7zVJULQpO+BW
         klBldflv4NZvB3PWa1kPsrxxvYR+D6EIgffPOVu6yPqAnIDawNOZAm/qd7rTWEU3GpcA
         FECT5yBBdiv5AUWsXthSdAFWekZAgtwI+82k++hOx4YbZFKVgD3I+r5S70SR0P0KmX8q
         Lt95I6G/L+ek0yQaurnKyJrAE7FOzE46ucR0catpMb33fEvQpFxa7trmnjxsKaYF7LM+
         gAZCqb8k3zRSw+e/Ls5nKEDCRA3sHnltbTbQ7HoZ4mLgg94YoWXYWRVcEFNF4kpBY3Yo
         uWKQ==
X-Gm-Message-State: AOJu0Yzrm+j72m5HU4Hnxb6amjsxu11TFNtZYYCzP4Z+aMh1SacMTRME
	xEcXz4JzD9jsuTPq14F5/gJvpC/QXi6SRxIwwuIcVkG7JXqszes72/vBfKeIzM4HGwjZA1PxaY4
	L+OgjprlVTzFtIuI/u+KDr4/zF23d1bPz35hcsbwnga/oZd7XbFc0+77NpoH0EejR
X-Received: by 2002:ac8:4e4d:0:b0:42a:b44f:e31f with SMTP id e13-20020ac84e4d000000b0042ab44fe31fmr1853917qtw.85.1706619681600;
        Tue, 30 Jan 2024 05:01:21 -0800 (PST)
X-Google-Smtp-Source: AGHT+IHBvczkl02R/u+A9Lg2jzfHDRLiCiDJy/EgTJw2KKi9HJ65qma+vt6e9D/zFhBdgx1YZ5Cl+Q==
X-Received: by 2002:ac8:4e4d:0:b0:42a:b44f:e31f with SMTP id e13-20020ac84e4d000000b0042ab44fe31fmr1853867qtw.85.1706619680817;
        Tue, 30 Jan 2024 05:01:20 -0800 (PST)
Date: Tue, 30 Jan 2024 14:01:15 +0100
From: Igor Mammedov <imammedo@redhat.com>
To: Philippe =?UTF-8?B?TWF0aGlldS1EYXVkw6k=?= <philmd@linaro.org>
Cc: qemu-devel@nongnu.org, qemu-riscv@nongnu.org, qemu-s390x@nongnu.org,
 Paolo Bonzini <pbonzini@redhat.com>, kvm@vger.kernel.org,
 qemu-ppc@nongnu.org, qemu-arm@nongnu.org, Richard Henderson
 <richard.henderson@linaro.org>, "Michael S. Tsirkin" <mst@redhat.com>,
 Marcel Apfelbaum <marcel.apfelbaum@gmail.com>, Eduardo Habkost
 <eduardo@habkost.net>, Stefano Stabellini <sstabellini@kernel.org>, Anthony
 Perard <anthony.perard@citrix.com>, Paul Durrant <paul@xen.org>, Cameron
 Esfahani <dirty@apple.com>, Roman Bolshakov <rbolshakov@ddn.com>, Marcelo
 Tosatti <mtosatti@redhat.com>, David Woodhouse <dwmw2@infradead.org>,
 xen-devel@lists.xenproject.org
Subject: Re: [PATCH v3 14/29] target/i386: Prefer fast cpu_env() over slower
 CPU QOM cast macro
Message-ID: <20240130140115.135f533d@imammedo.users.ipa.redhat.com>
In-Reply-To: <20240129164514.73104-15-philmd@linaro.org>
References: <20240129164514.73104-1-philmd@linaro.org>
	<20240129164514.73104-15-philmd@linaro.org>
X-Mailer: Claws Mail 4.2.0 (GTK 3.24.40; x86_64-redhat-linux-gnu)
MIME-Version: 1.0
X-Mimecast-Spam-Score: 0
X-Mimecast-Originator: redhat.com
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

On Mon, 29 Jan 2024 17:44:56 +0100
Philippe Mathieu-Daud=C3=A9 <philmd@linaro.org> wrote:

> Mechanical patch produced running the command documented
> in scripts/coccinelle/cpu_env.cocci_template header.


commenting here since, I'm not expert on coccinelle scripts.

On negative side we are permanently loosing type checking in this area.
Is it worth it, what gains do we get with this series?

Side note,
QOM cast expenses you are replacing could be negated by disabling
CONFIG_QOM_CAST_DEBUG without killing type check code when it's enabled.
That way you will speed up not only cpuenv access but also all other casts
across the board.

> Signed-off-by: Philippe Mathieu-Daud=C3=A9 <philmd@linaro.org>
> ---
...
>  static inline void vmx_clear_nmi_blocking(CPUState *cpu)
>  {
> -    X86CPU *x86_cpu =3D X86_CPU(cpu);
> -    CPUX86State *env =3D &x86_cpu->env;
> -
> -    env->hflags2 &=3D ~HF2_NMI_MASK;

> +    cpu_env(cpu)->hflags2 &=3D ~HF2_NMI_MASK;

this style of de-referencing return value of macro/function
was discouraged in past and preferred way was 'Foo f =3D CAST(me); f->some_=
access

(it's just imprint speaking, I don't recall where it comes from)

>      uint32_t gi =3D (uint32_t) rvmcs(cpu->accel->fd, VMCS_GUEST_INTERRUP=
TIBILITY);
>      gi &=3D ~VMCS_INTERRUPTIBILITY_NMI_BLOCKING;
>      wvmcs(cpu->accel->fd, VMCS_GUEST_INTERRUPTIBILITY, gi);
> @@ -207,10 +203,7 @@ static inline void vmx_clear_nmi_blocking(CPUState *=
cpu)
> =20
>  static inline void vmx_set_nmi_blocking(CPUState *cpu)
>  {
> -    X86CPU *x86_cpu =3D X86_CPU(cpu);
> -    CPUX86State *env =3D &x86_cpu->env;
> -
> -    env->hflags2 |=3D HF2_NMI_MASK;
> +    cpu_env(cpu)->hflags2 |=3D HF2_NMI_MASK;
>      uint32_t gi =3D (uint32_t)rvmcs(cpu->accel->fd, VMCS_GUEST_INTERRUPT=
IBILITY);
>      gi |=3D VMCS_INTERRUPTIBILITY_NMI_BLOCKING;
>      wvmcs(cpu->accel->fd, VMCS_GUEST_INTERRUPTIBILITY, gi);
> diff --git a/hw/i386/fw_cfg.c b/hw/i386/fw_cfg.c
> index 7362daa45a..5239cd40fa 100644
> --- a/hw/i386/fw_cfg.c
> +++ b/hw/i386/fw_cfg.c
> @@ -155,8 +155,7 @@ FWCfgState *fw_cfg_arch_create(MachineState *ms,
> =20
>  void fw_cfg_build_feature_control(MachineState *ms, FWCfgState *fw_cfg)
>  {
> -    X86CPU *cpu =3D X86_CPU(ms->possible_cpus->cpus[0].cpu);
> -    CPUX86State *env =3D &cpu->env;
> +    CPUX86State *env =3D cpu_env(ms->possible_cpus->cpus[0].cpu);
>      uint32_t unused, ebx, ecx, edx;
>      uint64_t feature_control_bits =3D 0;
>      uint64_t *val;
> diff --git a/hw/i386/vmmouse.c b/hw/i386/vmmouse.c
> index a8d014d09a..f292a14a15 100644
> --- a/hw/i386/vmmouse.c
> +++ b/hw/i386/vmmouse.c
> @@ -74,8 +74,7 @@ struct VMMouseState {
> =20
>  static void vmmouse_get_data(uint32_t *data)
>  {
> -    X86CPU *cpu =3D X86_CPU(current_cpu);
> -    CPUX86State *env =3D &cpu->env;
> +    CPUX86State *env =3D cpu_env(current_cpu);
> =20
>      data[0] =3D env->regs[R_EAX]; data[1] =3D env->regs[R_EBX];
>      data[2] =3D env->regs[R_ECX]; data[3] =3D env->regs[R_EDX];
> @@ -84,8 +83,7 @@ static void vmmouse_get_data(uint32_t *data)
> =20
>  static void vmmouse_set_data(const uint32_t *data)
>  {
> -    X86CPU *cpu =3D X86_CPU(current_cpu);
> -    CPUX86State *env =3D &cpu->env;
> +    CPUX86State *env =3D cpu_env(current_cpu);
> =20
>      env->regs[R_EAX] =3D data[0]; env->regs[R_EBX] =3D data[1];
>      env->regs[R_ECX] =3D data[2]; env->regs[R_EDX] =3D data[3];
> diff --git a/hw/i386/xen/xen-hvm.c b/hw/i386/xen/xen-hvm.c
> index f42621e674..61e5060117 100644
> --- a/hw/i386/xen/xen-hvm.c
> +++ b/hw/i386/xen/xen-hvm.c
> @@ -487,8 +487,7 @@ static void regs_to_cpu(vmware_regs_t *vmport_regs, i=
oreq_t *req)
> =20
>  static void regs_from_cpu(vmware_regs_t *vmport_regs)
>  {
> -    X86CPU *cpu =3D X86_CPU(current_cpu);
> -    CPUX86State *env =3D &cpu->env;
> +    CPUX86State *env =3D cpu_env(current_cpu);
> =20
>      vmport_regs->ebx =3D env->regs[R_EBX];
>      vmport_regs->ecx =3D env->regs[R_ECX];
> diff --git a/target/i386/arch_dump.c b/target/i386/arch_dump.c
> index c290910a04..8939ff9fa9 100644
> --- a/target/i386/arch_dump.c
> +++ b/target/i386/arch_dump.c
> @@ -203,7 +203,6 @@ int x86_cpu_write_elf64_note(WriteCoreDumpFunction f,=
 CPUState *cs,
>  int x86_cpu_write_elf32_note(WriteCoreDumpFunction f, CPUState *cs,
>                               int cpuid, DumpState *s)
>  {
> -    X86CPU *cpu =3D X86_CPU(cs);
>      x86_elf_prstatus prstatus;
>      Elf32_Nhdr *note;
>      char *buf;
> @@ -211,7 +210,7 @@ int x86_cpu_write_elf32_note(WriteCoreDumpFunction f,=
 CPUState *cs,
>      const char *name =3D "CORE";
>      int ret;
> =20
> -    x86_fill_elf_prstatus(&prstatus, &cpu->env, cpuid);
> +    x86_fill_elf_prstatus(&prstatus, cpu_env(cs), cpuid);
>      descsz =3D sizeof(x86_elf_prstatus);
>      note_size =3D ELF_NOTE_SIZE(sizeof(Elf32_Nhdr), name_size, descsz);
>      note =3D g_malloc0(note_size);
> @@ -381,17 +380,13 @@ static inline int cpu_write_qemu_note(WriteCoreDump=
Function f,
>  int x86_cpu_write_elf64_qemunote(WriteCoreDumpFunction f, CPUState *cs,
>                                   DumpState *s)
>  {
> -    X86CPU *cpu =3D X86_CPU(cs);
> -
> -    return cpu_write_qemu_note(f, &cpu->env, s, 1);
> +    return cpu_write_qemu_note(f, cpu_env(cs), s, 1);
>  }
> =20
>  int x86_cpu_write_elf32_qemunote(WriteCoreDumpFunction f, CPUState *cs,
>                                   DumpState *s)
>  {
> -    X86CPU *cpu =3D X86_CPU(cs);
> -
> -    return cpu_write_qemu_note(f, &cpu->env, s, 0);
> +    return cpu_write_qemu_note(f, cpu_env(cs), s, 0);
>  }
> =20
>  int cpu_get_dump_info(ArchDumpInfo *info,
> diff --git a/target/i386/arch_memory_mapping.c b/target/i386/arch_memory_=
mapping.c
> index d1ff659128..c0604d5956 100644
> --- a/target/i386/arch_memory_mapping.c
> +++ b/target/i386/arch_memory_mapping.c
> @@ -269,8 +269,7 @@ static void walk_pml5e(MemoryMappingList *list, Addre=
ssSpace *as,
>  bool x86_cpu_get_memory_mapping(CPUState *cs, MemoryMappingList *list,
>                                  Error **errp)
>  {
> -    X86CPU *cpu =3D X86_CPU(cs);
> -    CPUX86State *env =3D &cpu->env;
> +    CPUX86State *env =3D cpu_env(cs);
>      int32_t a20_mask;
> =20
>      if (!cpu_paging_enabled(cs)) {
> diff --git a/target/i386/cpu-dump.c b/target/i386/cpu-dump.c
> index 40697064d9..5459d84abd 100644
> --- a/target/i386/cpu-dump.c
> +++ b/target/i386/cpu-dump.c
> @@ -343,8 +343,7 @@ void x86_cpu_dump_local_apic_state(CPUState *cs, int =
flags)
> =20
>  void x86_cpu_dump_state(CPUState *cs, FILE *f, int flags)
>  {
> -    X86CPU *cpu =3D X86_CPU(cs);
> -    CPUX86State *env =3D &cpu->env;
> +    CPUX86State *env =3D cpu_env(cs);
>      int eflags, i, nb;
>      char cc_op_name[32];
>      static const char *seg_name[6] =3D { "ES", "CS", "SS", "DS", "FS", "=
GS" };
> diff --git a/target/i386/cpu.c b/target/i386/cpu.c
> index 66345c204a..5d7a266d27 100644
> --- a/target/i386/cpu.c
> +++ b/target/i386/cpu.c
> @@ -5062,8 +5062,7 @@ static void x86_cpuid_version_get_family(Object *ob=
j, Visitor *v,
>                                           const char *name, void *opaque,
>                                           Error **errp)
>  {
> -    X86CPU *cpu =3D X86_CPU(obj);
> -    CPUX86State *env =3D &cpu->env;
> +    CPUX86State *env =3D cpu_env(CPU(obj));
>      int64_t value;
> =20
>      value =3D (env->cpuid_version >> 8) & 0xf;
> @@ -5077,8 +5076,7 @@ static void x86_cpuid_version_set_family(Object *ob=
j, Visitor *v,
>                                           const char *name, void *opaque,
>                                           Error **errp)
>  {
> -    X86CPU *cpu =3D X86_CPU(obj);
> -    CPUX86State *env =3D &cpu->env;
> +    CPUX86State *env =3D cpu_env(CPU(obj));
>      const int64_t min =3D 0;
>      const int64_t max =3D 0xff + 0xf;
>      int64_t value;
> @@ -5104,8 +5102,7 @@ static void x86_cpuid_version_get_model(Object *obj=
, Visitor *v,
>                                          const char *name, void *opaque,
>                                          Error **errp)
>  {
> -    X86CPU *cpu =3D X86_CPU(obj);
> -    CPUX86State *env =3D &cpu->env;
> +    CPUX86State *env =3D cpu_env(CPU(obj));
>      int64_t value;
> =20
>      value =3D (env->cpuid_version >> 4) & 0xf;
> @@ -5117,8 +5114,7 @@ static void x86_cpuid_version_set_model(Object *obj=
, Visitor *v,
>                                          const char *name, void *opaque,
>                                          Error **errp)
>  {
> -    X86CPU *cpu =3D X86_CPU(obj);
> -    CPUX86State *env =3D &cpu->env;
> +    CPUX86State *env =3D cpu_env(CPU(obj));
>      const int64_t min =3D 0;
>      const int64_t max =3D 0xff;
>      int64_t value;
> @@ -5140,11 +5136,9 @@ static void x86_cpuid_version_get_stepping(Object =
*obj, Visitor *v,
>                                             const char *name, void *opaqu=
e,
>                                             Error **errp)
>  {
> -    X86CPU *cpu =3D X86_CPU(obj);
> -    CPUX86State *env =3D &cpu->env;
>      int64_t value;
> =20
> -    value =3D env->cpuid_version & 0xf;
> +    value =3D cpu_env(CPU(obj))->cpuid_version & 0xf;
>      visit_type_int(v, name, &value, errp);
>  }
> =20
> @@ -5152,8 +5146,7 @@ static void x86_cpuid_version_set_stepping(Object *=
obj, Visitor *v,
>                                             const char *name, void *opaqu=
e,
>                                             Error **errp)
>  {
> -    X86CPU *cpu =3D X86_CPU(obj);
> -    CPUX86State *env =3D &cpu->env;
> +    CPUX86State *env =3D cpu_env(CPU(obj));
>      const int64_t min =3D 0;
>      const int64_t max =3D 0xf;
>      int64_t value;
> @@ -5173,8 +5166,7 @@ static void x86_cpuid_version_set_stepping(Object *=
obj, Visitor *v,
> =20
>  static char *x86_cpuid_get_vendor(Object *obj, Error **errp)
>  {
> -    X86CPU *cpu =3D X86_CPU(obj);
> -    CPUX86State *env =3D &cpu->env;
> +    CPUX86State *env =3D cpu_env(CPU(obj));
>      char *value;
> =20
>      value =3D g_malloc(CPUID_VENDOR_SZ + 1);
> @@ -5186,8 +5178,7 @@ static char *x86_cpuid_get_vendor(Object *obj, Erro=
r **errp)
>  static void x86_cpuid_set_vendor(Object *obj, const char *value,
>                                   Error **errp)
>  {
> -    X86CPU *cpu =3D X86_CPU(obj);
> -    CPUX86State *env =3D &cpu->env;
> +    CPUX86State *env =3D cpu_env(CPU(obj));
>      int i;
> =20
>      if (strlen(value) !=3D CPUID_VENDOR_SZ) {
> @@ -5208,8 +5199,7 @@ static void x86_cpuid_set_vendor(Object *obj, const=
 char *value,
> =20
>  static char *x86_cpuid_get_model_id(Object *obj, Error **errp)
>  {
> -    X86CPU *cpu =3D X86_CPU(obj);
> -    CPUX86State *env =3D &cpu->env;
> +    CPUX86State *env =3D cpu_env(CPU(obj));
>      char *value;
>      int i;
> =20
> @@ -5224,8 +5214,7 @@ static char *x86_cpuid_get_model_id(Object *obj, Er=
ror **errp)
>  static void x86_cpuid_set_model_id(Object *obj, const char *model_id,
>                                     Error **errp)
>  {
> -    X86CPU *cpu =3D X86_CPU(obj);
> -    CPUX86State *env =3D &cpu->env;
> +    CPUX86State *env =3D cpu_env(CPU(obj));
>      int c, len, i;
> =20
>      if (model_id =3D=3D NULL) {
> @@ -7673,8 +7662,7 @@ static vaddr x86_cpu_get_pc(CPUState *cs)
> =20
>  int x86_cpu_pending_interrupt(CPUState *cs, int interrupt_request)
>  {
> -    X86CPU *cpu =3D X86_CPU(cs);
> -    CPUX86State *env =3D &cpu->env;
> +    CPUX86State *env =3D cpu_env(cs);
> =20
>  #if !defined(CONFIG_USER_ONLY)
>      if (interrupt_request & CPU_INTERRUPT_POLL) {
> @@ -7722,8 +7710,7 @@ static bool x86_cpu_has_work(CPUState *cs)
> =20
>  static void x86_disas_set_info(CPUState *cs, disassemble_info *info)
>  {
> -    X86CPU *cpu =3D X86_CPU(cs);
> -    CPUX86State *env =3D &cpu->env;
> +    CPUX86State *env =3D cpu_env(cs);
> =20
>      info->mach =3D (env->hflags & HF_CS64_MASK ? bfd_mach_x86_64
>                    : env->hflags & HF_CS32_MASK ? bfd_mach_i386_i386
> diff --git a/target/i386/helper.c b/target/i386/helper.c
> index 2070dd0dda..4c11ef70f0 100644
> --- a/target/i386/helper.c
> +++ b/target/i386/helper.c
> @@ -230,8 +230,7 @@ void cpu_x86_update_cr4(CPUX86State *env, uint32_t ne=
w_cr4)
>  hwaddr x86_cpu_get_phys_page_attrs_debug(CPUState *cs, vaddr addr,
>                                           MemTxAttrs *attrs)
>  {
> -    X86CPU *cpu =3D X86_CPU(cs);
> -    CPUX86State *env =3D &cpu->env;
> +    CPUX86State *env =3D cpu_env(cs);
>      target_ulong pde_addr, pte_addr;
>      uint64_t pte;
>      int32_t a20_mask;
> @@ -373,8 +372,7 @@ static void emit_guest_memory_failure(MemoryFailureAc=
tion action, bool ar,
>  static void do_inject_x86_mce(CPUState *cs, run_on_cpu_data data)
>  {
>      MCEInjectionParams *params =3D data.host_ptr;
> -    X86CPU *cpu =3D X86_CPU(cs);
> -    CPUX86State *cenv =3D &cpu->env;
> +    CPUX86State *cenv =3D cpu_env(cs);
>      uint64_t *banks =3D cenv->mce_banks + 4 * params->bank;
>      g_autofree char *msg =3D NULL;
>      bool need_reset =3D false;
> @@ -625,9 +623,7 @@ void cpu_load_efer(CPUX86State *env, uint64_t val)
> =20
>  uint8_t x86_ldub_phys(CPUState *cs, hwaddr addr)
>  {
> -    X86CPU *cpu =3D X86_CPU(cs);
> -    CPUX86State *env =3D &cpu->env;
> -    MemTxAttrs attrs =3D cpu_get_mem_attrs(env);
> +    MemTxAttrs attrs =3D cpu_get_mem_attrs(cpu_env(cs));
>      AddressSpace *as =3D cpu_addressspace(cs, attrs);
> =20
>      return address_space_ldub(as, addr, attrs, NULL);
> @@ -635,9 +631,7 @@ uint8_t x86_ldub_phys(CPUState *cs, hwaddr addr)
> =20
>  uint32_t x86_lduw_phys(CPUState *cs, hwaddr addr)
>  {
> -    X86CPU *cpu =3D X86_CPU(cs);
> -    CPUX86State *env =3D &cpu->env;
> -    MemTxAttrs attrs =3D cpu_get_mem_attrs(env);
> +    MemTxAttrs attrs =3D cpu_get_mem_attrs(cpu_env(cs));
>      AddressSpace *as =3D cpu_addressspace(cs, attrs);
> =20
>      return address_space_lduw(as, addr, attrs, NULL);
> @@ -645,9 +639,7 @@ uint32_t x86_lduw_phys(CPUState *cs, hwaddr addr)
> =20
>  uint32_t x86_ldl_phys(CPUState *cs, hwaddr addr)
>  {
> -    X86CPU *cpu =3D X86_CPU(cs);
> -    CPUX86State *env =3D &cpu->env;
> -    MemTxAttrs attrs =3D cpu_get_mem_attrs(env);
> +    MemTxAttrs attrs =3D cpu_get_mem_attrs(cpu_env(cs));
>      AddressSpace *as =3D cpu_addressspace(cs, attrs);
> =20
>      return address_space_ldl(as, addr, attrs, NULL);
> @@ -655,9 +647,7 @@ uint32_t x86_ldl_phys(CPUState *cs, hwaddr addr)
> =20
>  uint64_t x86_ldq_phys(CPUState *cs, hwaddr addr)
>  {
> -    X86CPU *cpu =3D X86_CPU(cs);
> -    CPUX86State *env =3D &cpu->env;
> -    MemTxAttrs attrs =3D cpu_get_mem_attrs(env);
> +    MemTxAttrs attrs =3D cpu_get_mem_attrs(cpu_env(cs));
>      AddressSpace *as =3D cpu_addressspace(cs, attrs);
> =20
>      return address_space_ldq(as, addr, attrs, NULL);
> @@ -665,9 +655,7 @@ uint64_t x86_ldq_phys(CPUState *cs, hwaddr addr)
> =20
>  void x86_stb_phys(CPUState *cs, hwaddr addr, uint8_t val)
>  {
> -    X86CPU *cpu =3D X86_CPU(cs);
> -    CPUX86State *env =3D &cpu->env;
> -    MemTxAttrs attrs =3D cpu_get_mem_attrs(env);
> +    MemTxAttrs attrs =3D cpu_get_mem_attrs(cpu_env(cs));
>      AddressSpace *as =3D cpu_addressspace(cs, attrs);
> =20
>      address_space_stb(as, addr, val, attrs, NULL);
> @@ -675,9 +663,7 @@ void x86_stb_phys(CPUState *cs, hwaddr addr, uint8_t =
val)
> =20
>  void x86_stl_phys_notdirty(CPUState *cs, hwaddr addr, uint32_t val)
>  {
> -    X86CPU *cpu =3D X86_CPU(cs);
> -    CPUX86State *env =3D &cpu->env;
> -    MemTxAttrs attrs =3D cpu_get_mem_attrs(env);
> +    MemTxAttrs attrs =3D cpu_get_mem_attrs(cpu_env(cs));
>      AddressSpace *as =3D cpu_addressspace(cs, attrs);
> =20
>      address_space_stl_notdirty(as, addr, val, attrs, NULL);
> @@ -685,9 +671,7 @@ void x86_stl_phys_notdirty(CPUState *cs, hwaddr addr,=
 uint32_t val)
> =20
>  void x86_stw_phys(CPUState *cs, hwaddr addr, uint32_t val)
>  {
> -    X86CPU *cpu =3D X86_CPU(cs);
> -    CPUX86State *env =3D &cpu->env;
> -    MemTxAttrs attrs =3D cpu_get_mem_attrs(env);
> +    MemTxAttrs attrs =3D cpu_get_mem_attrs(cpu_env(cs));
>      AddressSpace *as =3D cpu_addressspace(cs, attrs);
> =20
>      address_space_stw(as, addr, val, attrs, NULL);
> @@ -695,9 +679,7 @@ void x86_stw_phys(CPUState *cs, hwaddr addr, uint32_t=
 val)
> =20
>  void x86_stl_phys(CPUState *cs, hwaddr addr, uint32_t val)
>  {
> -    X86CPU *cpu =3D X86_CPU(cs);
> -    CPUX86State *env =3D &cpu->env;
> -    MemTxAttrs attrs =3D cpu_get_mem_attrs(env);
> +    MemTxAttrs attrs =3D cpu_get_mem_attrs(cpu_env(cs));
>      AddressSpace *as =3D cpu_addressspace(cs, attrs);
> =20
>      address_space_stl(as, addr, val, attrs, NULL);
> @@ -705,9 +687,7 @@ void x86_stl_phys(CPUState *cs, hwaddr addr, uint32_t=
 val)
> =20
>  void x86_stq_phys(CPUState *cs, hwaddr addr, uint64_t val)
>  {
> -    X86CPU *cpu =3D X86_CPU(cs);
> -    CPUX86State *env =3D &cpu->env;
> -    MemTxAttrs attrs =3D cpu_get_mem_attrs(env);
> +    MemTxAttrs attrs =3D cpu_get_mem_attrs(cpu_env(cs));
>      AddressSpace *as =3D cpu_addressspace(cs, attrs);
> =20
>      address_space_stq(as, addr, val, attrs, NULL);
> diff --git a/target/i386/hvf/hvf.c b/target/i386/hvf/hvf.c
> index 11ffdd4c69..772578e3f4 100644
> --- a/target/i386/hvf/hvf.c
> +++ b/target/i386/hvf/hvf.c
> @@ -159,10 +159,7 @@ static bool ept_emulation_fault(hvf_slot *slot, uint=
64_t gpa, uint64_t ept_qual)
> =20
>  void hvf_arch_vcpu_destroy(CPUState *cpu)
>  {
> -    X86CPU *x86_cpu =3D X86_CPU(cpu);
> -    CPUX86State *env =3D &x86_cpu->env;
> -
> -    g_free(env->hvf_mmio_buf);
> +    g_free(cpu_env(cpu)->hvf_mmio_buf);
>  }
> =20
>  static void init_tsc_freq(CPUX86State *env)
> @@ -313,8 +310,7 @@ int hvf_arch_init_vcpu(CPUState *cpu)
> =20
>  static void hvf_store_events(CPUState *cpu, uint32_t ins_len, uint64_t i=
dtvec_info)
>  {
> -    X86CPU *x86_cpu =3D X86_CPU(cpu);
> -    CPUX86State *env =3D &x86_cpu->env;
> +    CPUX86State *env =3D cpu_env(cpu);
> =20
>      env->exception_nr =3D -1;
>      env->exception_pending =3D 0;
> diff --git a/target/i386/hvf/x86.c b/target/i386/hvf/x86.c
> index 80e36136d0..932635232b 100644
> --- a/target/i386/hvf/x86.c
> +++ b/target/i386/hvf/x86.c
> @@ -128,9 +128,7 @@ bool x86_is_real(CPUState *cpu)
> =20
>  bool x86_is_v8086(CPUState *cpu)
>  {
> -    X86CPU *x86_cpu =3D X86_CPU(cpu);
> -    CPUX86State *env =3D &x86_cpu->env;
> -    return x86_is_protected(cpu) && (env->eflags & VM_MASK);
> +    return x86_is_protected(cpu) && (cpu_env(cpu)->eflags & VM_MASK);
>  }
> =20
>  bool x86_is_long_mode(CPUState *cpu)
> diff --git a/target/i386/hvf/x86_emu.c b/target/i386/hvf/x86_emu.c
> index 3a3f0a50d0..0d13b32f91 100644
> --- a/target/i386/hvf/x86_emu.c
> +++ b/target/i386/hvf/x86_emu.c
> @@ -1419,8 +1419,7 @@ static void init_cmd_handler()
> =20
>  void load_regs(CPUState *cs)
>  {
> -    X86CPU *cpu =3D X86_CPU(cs);
> -    CPUX86State *env =3D &cpu->env;
> +    CPUX86State *env =3D cpu_env(cs);
> =20
>      int i =3D 0;
>      RRX(env, R_EAX) =3D rreg(cs->accel->fd, HV_X86_RAX);
> @@ -1442,8 +1441,7 @@ void load_regs(CPUState *cs)
> =20
>  void store_regs(CPUState *cs)
>  {
> -    X86CPU *cpu =3D X86_CPU(cs);
> -    CPUX86State *env =3D &cpu->env;
> +    CPUX86State *env =3D cpu_env(cs);
> =20
>      int i =3D 0;
>      wreg(cs->accel->fd, HV_X86_RAX, RAX(env));
> diff --git a/target/i386/hvf/x86_task.c b/target/i386/hvf/x86_task.c
> index f09bfbdda5..c173e9d883 100644
> --- a/target/i386/hvf/x86_task.c
> +++ b/target/i386/hvf/x86_task.c
> @@ -33,8 +33,7 @@
>  // TODO: taskswitch handling
>  static void save_state_to_tss32(CPUState *cpu, struct x86_tss_segment32 =
*tss)
>  {
> -    X86CPU *x86_cpu =3D X86_CPU(cpu);
> -    CPUX86State *env =3D &x86_cpu->env;
> +    CPUX86State *env =3D cpu_env(cpu);
> =20
>      /* CR3 and ldt selector are not saved intentionally */
>      tss->eip =3D (uint32_t)env->eip;
> @@ -58,8 +57,7 @@ static void save_state_to_tss32(CPUState *cpu, struct x=
86_tss_segment32 *tss)
> =20
>  static void load_state_from_tss32(CPUState *cpu, struct x86_tss_segment3=
2 *tss)
>  {
> -    X86CPU *x86_cpu =3D X86_CPU(cpu);
> -    CPUX86State *env =3D &x86_cpu->env;
> +    CPUX86State *env =3D cpu_env(cpu);
> =20
>      wvmcs(cpu->accel->fd, VMCS_GUEST_CR3, tss->cr3);
> =20
> @@ -128,9 +126,7 @@ void vmx_handle_task_switch(CPUState *cpu, x68_segmen=
t_selector tss_sel, int rea
>      uint32_t desc_limit;
>      struct x86_call_gate task_gate_desc;
>      struct vmx_segment vmx_seg;
> -
> -    X86CPU *x86_cpu =3D X86_CPU(cpu);
> -    CPUX86State *env =3D &x86_cpu->env;
> +    CPUX86State *env =3D cpu_env(cpu);
> =20
>      x86_read_segment_descriptor(cpu, &next_tss_desc, tss_sel);
>      x86_read_segment_descriptor(cpu, &curr_tss_desc, old_tss_sel);
> diff --git a/target/i386/hvf/x86hvf.c b/target/i386/hvf/x86hvf.c
> index be2c46246e..10f79849b3 100644
> --- a/target/i386/hvf/x86hvf.c
> +++ b/target/i386/hvf/x86hvf.c
> @@ -238,8 +238,7 @@ void hvf_get_msrs(CPUState *cs)
> =20
>  int hvf_put_registers(CPUState *cs)
>  {
> -    X86CPU *x86cpu =3D X86_CPU(cs);
> -    CPUX86State *env =3D &x86cpu->env;
> +    CPUX86State *env =3D cpu_env(cs);
> =20
>      wreg(cs->accel->fd, HV_X86_RAX, env->regs[R_EAX]);
>      wreg(cs->accel->fd, HV_X86_RBX, env->regs[R_EBX]);
> @@ -282,8 +281,7 @@ int hvf_put_registers(CPUState *cs)
> =20
>  int hvf_get_registers(CPUState *cs)
>  {
> -    X86CPU *x86cpu =3D X86_CPU(cs);
> -    CPUX86State *env =3D &x86cpu->env;
> +    CPUX86State *env =3D cpu_env(cs);
> =20
>      env->regs[R_EAX] =3D rreg(cs->accel->fd, HV_X86_RAX);
>      env->regs[R_EBX] =3D rreg(cs->accel->fd, HV_X86_RBX);
> @@ -342,8 +340,7 @@ void vmx_clear_int_window_exiting(CPUState *cs)
> =20
>  bool hvf_inject_interrupts(CPUState *cs)
>  {
> -    X86CPU *x86cpu =3D X86_CPU(cs);
> -    CPUX86State *env =3D &x86cpu->env;
> +    CPUX86State *env =3D cpu_env(cs);
> =20
>      uint8_t vector;
>      uint64_t intr_type;
> diff --git a/target/i386/kvm/kvm.c b/target/i386/kvm/kvm.c
> index 76a66246eb..e4f1c62888 100644
> --- a/target/i386/kvm/kvm.c
> +++ b/target/i386/kvm/kvm.c
> @@ -754,8 +754,7 @@ static inline bool freq_within_bounds(int freq, int t=
arget_freq)
> =20
>  static int kvm_arch_set_tsc_khz(CPUState *cs)
>  {
> -    X86CPU *cpu =3D X86_CPU(cs);
> -    CPUX86State *env =3D &cpu->env;
> +    CPUX86State *env =3D cpu_env(cs);
>      int r, cur_freq;
>      bool set_ioctl =3D false;
> =20
> @@ -5369,8 +5368,7 @@ int kvm_arch_handle_exit(CPUState *cs, struct kvm_r=
un *run)
> =20
>  bool kvm_arch_stop_on_emulation_error(CPUState *cs)
>  {
> -    X86CPU *cpu =3D X86_CPU(cs);
> -    CPUX86State *env =3D &cpu->env;
> +    CPUX86State *env =3D cpu_env(cs);
> =20
>      kvm_cpu_synchronize_state(cs);
>      return !(env->cr[0] & CR0_PE_MASK) ||
> diff --git a/target/i386/kvm/xen-emu.c b/target/i386/kvm/xen-emu.c
> index fc2c2321ac..10350a22d1 100644
> --- a/target/i386/kvm/xen-emu.c
> +++ b/target/i386/kvm/xen-emu.c
> @@ -313,10 +313,7 @@ static int kvm_xen_set_vcpu_callback_vector(CPUState=
 *cs)
> =20
>  static void do_set_vcpu_callback_vector(CPUState *cs, run_on_cpu_data da=
ta)
>  {
> -    X86CPU *cpu =3D X86_CPU(cs);
> -    CPUX86State *env =3D &cpu->env;
> -
> -    env->xen_vcpu_callback_vector =3D data.host_int;
> +    cpu_env(cs)->xen_vcpu_callback_vector =3D data.host_int;
> =20
>      if (kvm_xen_has_cap(EVTCHN_SEND)) {
>          kvm_xen_set_vcpu_callback_vector(cs);
> @@ -325,8 +322,7 @@ static void do_set_vcpu_callback_vector(CPUState *cs,=
 run_on_cpu_data data)
> =20
>  static int set_vcpu_info(CPUState *cs, uint64_t gpa)
>  {
> -    X86CPU *cpu =3D X86_CPU(cs);
> -    CPUX86State *env =3D &cpu->env;
> +    CPUX86State *env =3D cpu_env(cs);
>      MemoryRegionSection mrs =3D { .mr =3D NULL };
>      void *vcpu_info_hva =3D NULL;
>      int ret;
> @@ -362,8 +358,7 @@ static int set_vcpu_info(CPUState *cs, uint64_t gpa)
> =20
>  static void do_set_vcpu_info_default_gpa(CPUState *cs, run_on_cpu_data d=
ata)
>  {
> -    X86CPU *cpu =3D X86_CPU(cs);
> -    CPUX86State *env =3D &cpu->env;
> +    CPUX86State *env =3D cpu_env(cs);
> =20
>      env->xen_vcpu_info_default_gpa =3D data.host_ulong;
> =20
> @@ -375,8 +370,7 @@ static void do_set_vcpu_info_default_gpa(CPUState *cs=
, run_on_cpu_data data)
> =20
>  static void do_set_vcpu_info_gpa(CPUState *cs, run_on_cpu_data data)
>  {
> -    X86CPU *cpu =3D X86_CPU(cs);
> -    CPUX86State *env =3D &cpu->env;
> +    CPUX86State *env =3D cpu_env(cs);
> =20
>      env->xen_vcpu_info_gpa =3D data.host_ulong;
> =20
> @@ -479,8 +473,7 @@ void kvm_xen_inject_vcpu_callback_vector(uint32_t vcp=
u_id, int type)
>  /* Must always be called with xen_timers_lock held */
>  static int kvm_xen_set_vcpu_timer(CPUState *cs)
>  {
> -    X86CPU *cpu =3D X86_CPU(cs);
> -    CPUX86State *env =3D &cpu->env;
> +    CPUX86State *env =3D cpu_env(cs);
> =20
>      struct kvm_xen_vcpu_attr va =3D {
>          .type =3D KVM_XEN_VCPU_ATTR_TYPE_TIMER,
> @@ -527,8 +520,7 @@ int kvm_xen_set_vcpu_virq(uint32_t vcpu_id, uint16_t =
virq, uint16_t port)
> =20
>  static void do_set_vcpu_time_info_gpa(CPUState *cs, run_on_cpu_data data=
)
>  {
> -    X86CPU *cpu =3D X86_CPU(cs);
> -    CPUX86State *env =3D &cpu->env;
> +    CPUX86State *env =3D cpu_env(cs);
> =20
>      env->xen_vcpu_time_info_gpa =3D data.host_ulong;
> =20
> @@ -538,8 +530,7 @@ static void do_set_vcpu_time_info_gpa(CPUState *cs, r=
un_on_cpu_data data)
> =20
>  static void do_set_vcpu_runstate_gpa(CPUState *cs, run_on_cpu_data data)
>  {
> -    X86CPU *cpu =3D X86_CPU(cs);
> -    CPUX86State *env =3D &cpu->env;
> +    CPUX86State *env =3D cpu_env(cs);
> =20
>      env->xen_vcpu_runstate_gpa =3D data.host_ulong;
> =20
> @@ -549,8 +540,7 @@ static void do_set_vcpu_runstate_gpa(CPUState *cs, ru=
n_on_cpu_data data)
> =20
>  static void do_vcpu_soft_reset(CPUState *cs, run_on_cpu_data data)
>  {
> -    X86CPU *cpu =3D X86_CPU(cs);
> -    CPUX86State *env =3D &cpu->env;
> +    CPUX86State *env =3D cpu_env(cs);
> =20
>      env->xen_vcpu_info_gpa =3D INVALID_GPA;
>      env->xen_vcpu_info_default_gpa =3D INVALID_GPA;
> @@ -1813,8 +1803,7 @@ uint16_t kvm_xen_get_evtchn_max_pirq(void)
> =20
>  int kvm_put_xen_state(CPUState *cs)
>  {
> -    X86CPU *cpu =3D X86_CPU(cs);
> -    CPUX86State *env =3D &cpu->env;
> +    CPUX86State *env =3D cpu_env(cs);
>      uint64_t gpa;
>      int ret;
> =20
> @@ -1887,8 +1876,7 @@ int kvm_put_xen_state(CPUState *cs)
> =20
>  int kvm_get_xen_state(CPUState *cs)
>  {
> -    X86CPU *cpu =3D X86_CPU(cs);
> -    CPUX86State *env =3D &cpu->env;
> +    CPUX86State *env =3D cpu_env(cs);
>      uint64_t gpa;
>      int ret;
> =20
> diff --git a/target/i386/tcg/sysemu/bpt_helper.c b/target/i386/tcg/sysemu=
/bpt_helper.c
> index 4d96a48a3c..90d6117497 100644
> --- a/target/i386/tcg/sysemu/bpt_helper.c
> +++ b/target/i386/tcg/sysemu/bpt_helper.c
> @@ -208,8 +208,7 @@ bool check_hw_breakpoints(CPUX86State *env, bool forc=
e_dr6_update)
> =20
>  void breakpoint_handler(CPUState *cs)
>  {
> -    X86CPU *cpu =3D X86_CPU(cs);
> -    CPUX86State *env =3D &cpu->env;
> +    CPUX86State *env =3D cpu_env(cs);
> =20
>      if (cs->watchpoint_hit) {
>          if (cs->watchpoint_hit->flags & BP_CPU) {
> diff --git a/target/i386/tcg/sysemu/excp_helper.c b/target/i386/tcg/sysem=
u/excp_helper.c
> index 5b86f439ad..1afa177551 100644
> --- a/target/i386/tcg/sysemu/excp_helper.c
> +++ b/target/i386/tcg/sysemu/excp_helper.c
> @@ -639,6 +639,5 @@ G_NORETURN void x86_cpu_do_unaligned_access(CPUState =
*cs, vaddr vaddr,
>                                              MMUAccessType access_type,
>                                              int mmu_idx, uintptr_t retad=
dr)
>  {
> -    X86CPU *cpu =3D X86_CPU(cs);
> -    handle_unaligned_access(&cpu->env, vaddr, access_type, retaddr);
> +    handle_unaligned_access(cpu_env(cs), vaddr, access_type, retaddr);
>  }
> diff --git a/target/i386/tcg/tcg-cpu.c b/target/i386/tcg/tcg-cpu.c
> index e1405b7be9..8f8fd6529d 100644
> --- a/target/i386/tcg/tcg-cpu.c
> +++ b/target/i386/tcg/tcg-cpu.c
> @@ -29,8 +29,7 @@
> =20
>  static void x86_cpu_exec_enter(CPUState *cs)
>  {
> -    X86CPU *cpu =3D X86_CPU(cs);
> -    CPUX86State *env =3D &cpu->env;
> +    CPUX86State *env =3D cpu_env(cs);
> =20
>      CC_SRC =3D env->eflags & (CC_O | CC_S | CC_Z | CC_A | CC_P | CC_C);
>      env->df =3D 1 - (2 * ((env->eflags >> 10) & 1));
> @@ -40,8 +39,7 @@ static void x86_cpu_exec_enter(CPUState *cs)
> =20
>  static void x86_cpu_exec_exit(CPUState *cs)
>  {
> -    X86CPU *cpu =3D X86_CPU(cs);
> -    CPUX86State *env =3D &cpu->env;
> +    CPUX86State *env =3D cpu_env(cs);
> =20
>      env->eflags =3D cpu_compute_eflags(env);
>  }
> @@ -65,8 +63,7 @@ static void x86_restore_state_to_opc(CPUState *cs,
>                                       const TranslationBlock *tb,
>                                       const uint64_t *data)
>  {
> -    X86CPU *cpu =3D X86_CPU(cs);
> -    CPUX86State *env =3D &cpu->env;
> +    CPUX86State *env =3D cpu_env(cs);
>      int cc_op =3D data[1];
>      uint64_t new_pc;
> =20
> @@ -96,11 +93,8 @@ static void x86_restore_state_to_opc(CPUState *cs,
>  #ifndef CONFIG_USER_ONLY
>  static bool x86_debug_check_breakpoint(CPUState *cs)
>  {
> -    X86CPU *cpu =3D X86_CPU(cs);
> -    CPUX86State *env =3D &cpu->env;
> -
>      /* RF disables all architectural breakpoints. */
> -    return !(env->eflags & RF_MASK);
> +    return !(cpu_env(cs)->eflags & RF_MASK);
>  }
>  #endif
> =20
> diff --git a/target/i386/tcg/user/excp_helper.c b/target/i386/tcg/user/ex=
cp_helper.c
> index b3bdb7831a..9ea5566149 100644
> --- a/target/i386/tcg/user/excp_helper.c
> +++ b/target/i386/tcg/user/excp_helper.c
> @@ -26,8 +26,7 @@ void x86_cpu_record_sigsegv(CPUState *cs, vaddr addr,
>                              MMUAccessType access_type,
>                              bool maperr, uintptr_t ra)
>  {
> -    X86CPU *cpu =3D X86_CPU(cs);
> -    CPUX86State *env =3D &cpu->env;
> +    CPUX86State *env =3D cpu_env(cs);
> =20
>      /*
>       * The error_code that hw reports as part of the exception frame
> @@ -52,6 +51,5 @@ void x86_cpu_record_sigsegv(CPUState *cs, vaddr addr,
>  void x86_cpu_record_sigbus(CPUState *cs, vaddr addr,
>                             MMUAccessType access_type, uintptr_t ra)
>  {
> -    X86CPU *cpu =3D X86_CPU(cs);
> -    handle_unaligned_access(&cpu->env, addr, access_type, ra);
> +    handle_unaligned_access(cpu_env(cs), addr, access_type, ra);
>  }
> diff --git a/target/i386/tcg/user/seg_helper.c b/target/i386/tcg/user/seg=
_helper.c
> index c45f2ac2ba..2f89dbb51e 100644
> --- a/target/i386/tcg/user/seg_helper.c
> +++ b/target/i386/tcg/user/seg_helper.c
> @@ -78,8 +78,7 @@ static void do_interrupt_user(CPUX86State *env, int int=
no, int is_int,
> =20
>  void x86_cpu_do_interrupt(CPUState *cs)
>  {
> -    X86CPU *cpu =3D X86_CPU(cs);
> -    CPUX86State *env =3D &cpu->env;
> +    CPUX86State *env =3D cpu_env(cs);
> =20
>      /* if user mode only, we simulate a fake exception
>         which will be handled outside the cpu execution



From xen-devel-bounces@lists.xenproject.org Tue Jan 30 13:13:36 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 30 Jan 2024 13:13:36 +0000
Received: from list by lists.xenproject.org with outflank-mailman.673351.1047722 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUnvf-0000wL-8o; Tue, 30 Jan 2024 13:13:31 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 673351.1047722; Tue, 30 Jan 2024 13:13:31 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUnvf-0000vU-31; Tue, 30 Jan 2024 13:13:31 +0000
Received: by outflank-mailman (input) for mailman id 673351;
 Tue, 30 Jan 2024 13:13:30 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=/Uj/=JI=xenbits.xen.org=andrewcoop@srs-se1.protection.inumbo.net>)
 id 1rUnve-0000pk-3k
 for xen-devel@lists.xen.org; Tue, 30 Jan 2024 13:13:30 +0000
Received: from mail.xenproject.org (mail.xenproject.org [104.130.215.37])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 5a8e6048-bf71-11ee-8a43-1f161083a0e0;
 Tue, 30 Jan 2024 14:13:28 +0100 (CET)
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <andrewcoop@xenbits.xen.org>)
 id 1rUnvT-0007fl-FD; Tue, 30 Jan 2024 13:13:19 +0000
Received: from andrewcoop by xenbits.xenproject.org with local (Exim 4.92)
 (envelope-from <andrewcoop@xenbits.xen.org>)
 id 1rUnvT-00046x-CL; Tue, 30 Jan 2024 13:13:19 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 5a8e6048-bf71-11ee-8a43-1f161083a0e0
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
	s=20200302mail; h=Date:Message-Id:Subject:CC:From:To:MIME-Version:
	Content-Transfer-Encoding:Content-Type;
	bh=7/aLK6Od+sHmkaIiXf9KF2yeIUFRYRw8RdaAJCtP6vY=; b=vPhrlCJhSOvk1KlKVfLfaZ1RZ0
	v2S8sEzN3vf+eKWKej9Yhe8lTREFhy8jqaH5Wv9meqcXWxxUCpaKvSvrhXAQqio8hH0KcMrVcmPZ7
	xwOfrpp/E4cesArauTe+4U3gLAgoD/iDMSLNJ1dbMBgps0kxB2gHH92MTJDu0BoaQ+eE=;
Content-Type: multipart/mixed; boundary="=separator"; charset="utf-8"
Content-Transfer-Encoding: binary
MIME-Version: 1.0
X-Mailer: MIME-tools 5.509 (Entity 5.509)
To: xen-announce@lists.xen.org, xen-devel@lists.xen.org,
 xen-users@lists.xen.org, oss-security@lists.openwall.com
From: Xen.org security team <security@xen.org>
CC: Xen.org security team <security-team-members@xen.org>
Subject: Xen Security Advisory 449 v2 (CVE-2023-46839) - pci: phantom
 functions assigned to incorrect contexts
Message-Id: <E1rUnvT-00046x-CL@xenbits.xenproject.org>
Date: Tue, 30 Jan 2024 13:13:19 +0000

--=separator
Content-Type: text/plain; charset="utf-8"
Content-Disposition: inline
Content-Transfer-Encoding: 7bit

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256

            Xen Security Advisory CVE-2023-46839 / XSA-449
                               version 2

         pci: phantom functions assigned to incorrect contexts

UPDATES IN VERSION 2
====================

Public release.

ISSUE DESCRIPTION
=================

PCI devices can make use of a functionality called phantom functions,
that when enabled allows the device to generate requests using the IDs
of functions that are otherwise unpopulated.  This allows a device to
extend the number of outstanding requests.

Such phantom functions need an IOMMU context setup, but failure to
setup the context is not fatal when the device is assigned.  Not
failing device assignment when such failure happens can lead to the
primary device being assigned to a guest, while some of the phantom
functions are assigned to a different domain.

IMPACT
======

Under certain circumstances a malicious guest assigned a PCI device
with phantom functions may be able to access memory from a previous
owner of the device.

VULNERABLE SYSTEMS
==================

Systems running all version of Xen are affected.

Only x86 systems are vulnerable.  Arm systems are not vulnerable.

Only systems using PCI passthrough of devices with phantom functions
are affected.

MITIGATION
==========

There is no mitigation (other than not passing through PCI devices
with phantom functions to guests).

CREDITS
=======

This issue was discovered by Roger Pau Monné of XenServer.

RESOLUTION
==========

Applying the appropriate attached patch resolves this issue.

Note that patches for released versions are generally prepared to
apply to the stable branches, and may not apply cleanly to the most
recent release tarball.  Downstreams are encouraged to update to the
tip of the stable branch before applying these patches.

xsa449.patch           xen-unstable - Xen 4.17.x
xsa449-4.16.patch      Xen 4.16.x - Xen 4.15.x

$ sha256sum xsa449*
f77914aae8f917952f66d863d26314875ff96a0d8178f64c94b95825eabbc8a8  xsa449.patch
8f0302c24535ad4c7379469f33afcfdce08ba6db970e0ca1a1bfdd788af6fc6c  xsa449-4.16.patch
$

DEPLOYMENT DURING EMBARGO
=========================

Deployment of the patches described above (or others which are
substantially similar) is permitted during the embargo, even on
public-facing systems with untrusted guest users and administrators.

HOWEVER, deployment of the mitigation is NOT permitted (except where
all the affected systems and VMs are administered and used only by
organisations which are members of the Xen Project Security Issues
Predisclosure List).  Specifically, deployment on public cloud systems
is NOT permitted.

This is because removing/replacing of pass-through devices or their
replacement by emulated devices is a guest visible configuration
change, which may lead to re-discovery of the issue.

Deployment of this mitigation is permitted only AFTER the embargo ends.

AND: Distribution of updated software is prohibited (except to other
members of the predisclosure list).

Predisclosure list members who wish to deploy significantly different
patches and/or mitigations, please contact the Xen Project Security
Team.

(Note: this during-embargo deployment notice is retained in
post-embargo publicly released Xen Project advisories, even though it
is then no longer applicable.  This is to enable the community to have
oversight of the Xen Project Security Team's decisionmaking.)

For more information about permissible uses of embargoed information,
consult the Xen Project community's agreed Security Policy:
  http://www.xenproject.org/security-policy.html
-----BEGIN PGP SIGNATURE-----

iQFABAEBCAAqFiEEI+MiLBRfRHX6gGCng/4UyVfoK9kFAmW49O0MHHBncEB4ZW4u
b3JnAAoJEIP+FMlX6CvZqVQH/jvY8MptcxkihMhykNkRON6H5aBaY0UQKzbiCVBy
Q0g6FoE59mHIsoIYvPHFFw0BNbxgubWkJRgowRTtwxKay9HWUKo22eKaLpX9I+TX
LUo7KFE02/MRWus6mjGNdaTghC2SzGghqAcwhQcPzuaE1qS31S/iWXTe9u0hITHv
M/zswSWuZK0UaejBy55hd/+L554yZ976coSFGyjqqIuSHvkR6+NFCzTSLp3GHsue
5CI3ouW0fR2aQ/Gu3pXBPgG464rQ9rQptsFW11uZ1Ahw9T4ZYQis9cRNNsM5I+f8
paGiJO2+y9oYoMkKRrkHXVwkhmZJbFzvpq0e4VkgHwZxbIc=
=L484
-----END PGP SIGNATURE-----

--=separator
Content-Type: application/octet-stream; name="xsa449.patch"
Content-Disposition: attachment; filename="xsa449.patch"
Content-Transfer-Encoding: base64

RnJvbSBkOGI5MmIyMWIyMjQxMjY4NjA5NzhlNGM2MDQzMDJmM2MxZTNiZjc1
IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBSb2dlciBQYXUgTW9u
bmUgPHJvZ2VyLnBhdUBjaXRyaXguY29tPgpEYXRlOiBXZWQsIDEzIERlYyAy
MDIzIDE1OjUxOjU5ICswMTAwClN1YmplY3Q6IFtQQVRDSF0gcGNpOiBmYWls
IGRldmljZSBhc3NpZ25tZW50IGlmIHBoYW50b20gZnVuY3Rpb25zIGNhbm5v
dCBiZQogYXNzaWduZWQKTUlNRS1WZXJzaW9uOiAxLjAKQ29udGVudC1UeXBl
OiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04CkNvbnRlbnQtVHJhbnNmZXIt
RW5jb2Rpbmc6IDhiaXQKClRoZSBjdXJyZW50IGJlaGF2aW9yIGlzIHRoYXQg
bm8gZXJyb3IgaXMgcmVwb3J0ZWQgaWYgKHNvbWUpIHBoYW50b20gZnVuY3Rp
b25zCmZhaWwgdG8gYmUgYXNzaWduZWQgZHVyaW5nIGRldmljZSBhZGQgb3Ig
YXNzaWdubWVudCwgc28gdGhlIG9wZXJhdGlvbiBzdWNjZWVkcwpldmVuIGlm
IHNvbWUgcGhhbnRvbSBmdW5jdGlvbnMgYXJlIG5vdCBjb3JyZWN0bHkgc2V0
dXAuCgpUaGlzIGNhbiBsZWFkIHRvIGRldmljZXMgcG9zc2libHkgYmVpbmcg
c3VjY2Vzc2Z1bGx5IGFzc2lnbmVkIHRvIGEgZG9tVSB3aGlsZQpzb21lIG9m
IHRoZSBkZXZpY2UgcGhhbnRvbSBmdW5jdGlvbnMgYXJlIHN0aWxsIGFzc2ln
bmVkIHRvIGRvbTAuICBFdmVuIHdoZW4gdGhlCmRldmljZSBpcyBhc3NpZ25l
ZCBkb21JTyBiZWZvcmUgYmVpbmcgYXNzaWduZWQgdG8gYSBkb21VIHBoYW50
b20gZnVuY3Rpb25zCm1pZ2h0IGZhaWwgdG8gYmUgYXNzaWduZWQgdG8gZG9t
SU8sIGFuZCBhbHNvIGZhaWwgdG8gYmUgYXNzaWduZWQgdG8gdGhlIGRvbVUs
CmxlYXZpbmcgdGhlbSBhc3NpZ25lZCB0byBkb20wLgoKU2luY2UgdGhlIGRl
dmljZSBjYW4gZ2VuZXJhdGUgcmVxdWVzdHMgdXNpbmcgdGhlIElEcyBvZiB0
aG9zZSBwaGFudG9tCmZ1bmN0aW9ucywgZ2l2ZW4gdGhlIHNjZW5hcmlvIGFi
b3ZlIGEgZGV2aWNlIGluIHN1Y2ggc3RhdGUgd291bGQgYmUgaW4gY29udHJv
bApvZiBhIGRvbVUsIGJ1dCBzdGlsbCBjYXBhYmxlIG9mIGdlbmVyYXRpbmcg
dHJhbnNhY3Rpb25zIHRoYXQgdXNlIGEgY29udGV4dCBJRAp0YXJnZXRpbmcg
ZG9tMCBvd25lZCBtZW1vcnkuCgpNb2RpZnkgZGV2aWNlIGFzc2lnbiBpbiBv
cmRlciB0byBhdHRlbXB0IHRvIGRlYXNzaWduIHRoZSBkZXZpY2UgaWYgcGhh
bnRvbQpmdW5jdGlvbnMgZmFpbGVkIHRvIGJlIGFzc2lnbmVkLgoKTm90ZSB0
aGF0IGRldmljZSBhZGRpdGlvbiBpcyBub3QgbW9kaWZpZWQgaW4gdGhlIHNh
bWUgd2F5LCBhcyBpbiB0aGF0IGNhc2UgdGhlCmRldmljZSBpcyBhc3NpZ25l
ZCB0byBhIHRydXN0ZWQgZG9tYWluLCBhbmQgaGVuY2UgcGFydGlhbCBhc3Np
Z24gY2FuIGxlYWQgdG8KZGV2aWNlIG1hbGZ1bmN0aW9uIGJ1dCBub3QgYSBz
ZWN1cml0eSBpc3N1ZS4KClRoaXMgaXMgWFNBLTQ0OSAvIENWRS0yMDIzLTQ2
ODM5CgpGaXhlczogNGU5OTUwZGMxYmQyICgnSU9NTVU6IGFkZCBwaGFudG9t
IGZ1bmN0aW9uIHN1cHBvcnQnKQpTaWduZWQtb2ZmLWJ5OiBSb2dlciBQYXUg
TW9ubsOpIDxyb2dlci5wYXVAY2l0cml4LmNvbT4KUmV2aWV3ZWQtYnk6IEph
biBCZXVsaWNoIDxqYmV1bGljaEBzdXNlLmNvbT4KLS0tCiB4ZW4vZHJpdmVy
cy9wYXNzdGhyb3VnaC9wY2kuYyB8IDI3ICsrKysrKysrKysrKysrKysrKysr
Ky0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDIxIGluc2VydGlvbnMoKyksIDYg
ZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEveGVuL2RyaXZlcnMvcGFzc3Ro
cm91Z2gvcGNpLmMgYi94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9wY2kuYwpp
bmRleCAxNDM5ZDFlZjJiMjYuLjQ3YzBlZWU3YmRjYyAxMDA2NDQKLS0tIGEv
eGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvcGNpLmMKKysrIGIveGVuL2RyaXZl
cnMvcGFzc3Rocm91Z2gvcGNpLmMKQEAgLTE0ODgsMTEgKzE0ODgsMTAgQEAg
c3RhdGljIGludCBhc3NpZ25fZGV2aWNlKHN0cnVjdCBkb21haW4gKmQsIHUx
NiBzZWcsIHU4IGJ1cywgdTggZGV2Zm4sIHUzMiBmbGFnKQogCiAgICAgcGRl
di0+ZmF1bHQuY291bnQgPSAwOwogCi0gICAgaWYgKCAocmMgPSBpb21tdV9j
YWxsKGhkLT5wbGF0Zm9ybV9vcHMsIGFzc2lnbl9kZXZpY2UsIGQsIGRldmZu
LAotICAgICAgICAgICAgICAgICAgICAgICAgICBwY2lfdG9fZGV2KHBkZXYp
LCBmbGFnKSkgKQotICAgICAgICBnb3RvIGRvbmU7CisgICAgcmMgPSBpb21t
dV9jYWxsKGhkLT5wbGF0Zm9ybV9vcHMsIGFzc2lnbl9kZXZpY2UsIGQsIGRl
dmZuLCBwY2lfdG9fZGV2KHBkZXYpLAorICAgICAgICAgICAgICAgICAgICBm
bGFnKTsKIAotICAgIGZvciAoIDsgcGRldi0+cGhhbnRvbV9zdHJpZGU7IHJj
ID0gMCApCisgICAgd2hpbGUgKCBwZGV2LT5waGFudG9tX3N0cmlkZSAmJiAh
cmMgKQogICAgIHsKICAgICAgICAgZGV2Zm4gKz0gcGRldi0+cGhhbnRvbV9z
dHJpZGU7CiAgICAgICAgIGlmICggUENJX1NMT1QoZGV2Zm4pICE9IFBDSV9T
TE9UKHBkZXYtPmRldmZuKSApCkBAIC0xNTAzLDggKzE1MDIsMjQgQEAgc3Rh
dGljIGludCBhc3NpZ25fZGV2aWNlKHN0cnVjdCBkb21haW4gKmQsIHUxNiBz
ZWcsIHU4IGJ1cywgdTggZGV2Zm4sIHUzMiBmbGFnKQogCiAgZG9uZToKICAg
ICBpZiAoIHJjICkKLSAgICAgICAgcHJpbnRrKFhFTkxPR19HX1dBUk5JTkcg
IiVwZDogYXNzaWduICglcHApIGZhaWxlZCAoJWQpXG4iLAotICAgICAgICAg
ICAgICAgZCwgJlBDSV9TQkRGKHNlZywgYnVzLCBkZXZmbiksIHJjKTsKKyAg
ICB7CisgICAgICAgIHByaW50ayhYRU5MT0dfR19XQVJOSU5HICIlcGQ6IGFz
c2lnbiAlcyglcHApIGZhaWxlZCAoJWQpXG4iLAorICAgICAgICAgICAgICAg
ZCwgZGV2Zm4gIT0gcGRldi0+ZGV2Zm4gPyAicGhhbnRvbSBmdW5jdGlvbiAi
IDogIiIsCisgICAgICAgICAgICAgICAmUENJX1NCREYoc2VnLCBidXMsIGRl
dmZuKSwgcmMpOworCisgICAgICAgIGlmICggZGV2Zm4gIT0gcGRldi0+ZGV2
Zm4gJiYgZGVhc3NpZ25fZGV2aWNlKGQsIHNlZywgYnVzLCBwZGV2LT5kZXZm
bikgKQorICAgICAgICB7CisgICAgICAgICAgICAvKgorICAgICAgICAgICAg
ICogRGV2aWNlIHdpdGggcGhhbnRvbSBmdW5jdGlvbnMgdGhhdCBmYWlsZWQg
dG8gYm90aCBhc3NpZ24gYW5kCisgICAgICAgICAgICAgKiByb2xsYmFjay4g
IE1hcmsgdGhlIGRldmljZSBhcyBicm9rZW4gYW5kIGNyYXNoIHRoZSB0YXJn
ZXQgZG9tYWluLAorICAgICAgICAgICAgICogYXMgdGhlIHN0YXRlIG9mIHRo
ZSBmdW5jdGlvbnMgYXQgdGhpcyBwb2ludCBpcyB1bmtub3duIGFuZCBYZW4K
KyAgICAgICAgICAgICAqIGhhcyBubyB3YXkgdG8gYXNzZXJ0IGNvbnNpc3Rl
bnQgY29udGV4dCBhc3NpZ25tZW50IGFtb25nIHRoZW0uCisgICAgICAgICAg
ICAgKi8KKyAgICAgICAgICAgIHBkZXYtPmJyb2tlbiA9IHRydWU7CisgICAg
ICAgICAgICBpZiAoICFpc19oYXJkd2FyZV9kb21haW4oZCkgJiYgZCAhPSBk
b21faW8gKQorICAgICAgICAgICAgICAgIGRvbWFpbl9jcmFzaChkKTsKKyAg
ICAgICAgfQorICAgIH0KICAgICAvKiBUaGUgZGV2aWNlIGlzIGFzc2lnbmVk
IHRvIGRvbV9pbyBzbyBtYXJrIGl0IGFzIHF1YXJhbnRpbmVkICovCiAgICAg
ZWxzZSBpZiAoIGQgPT0gZG9tX2lvICkKICAgICAgICAgcGRldi0+cXVhcmFu
dGluZSA9IHRydWU7Ci0tIAoyLjQzLjAKCg==

--=separator
Content-Type: application/octet-stream; name="xsa449-4.16.patch"
Content-Disposition: attachment; filename="xsa449-4.16.patch"
Content-Transfer-Encoding: base64

RnJvbSBlYzVlOGMxNWUzMDM4NWE2MmI3OGYyN2I3NTJhMTljODc5YTkxZWUx
IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBSb2dlciBQYXUgTW9u
bmUgPHJvZ2VyLnBhdUBjaXRyaXguY29tPgpEYXRlOiBXZWQsIDEzIERlYyAy
MDIzIDE1OjUxOjU5ICswMTAwClN1YmplY3Q6IFtQQVRDSF0gcGNpOiBmYWls
IGRldmljZSBhc3NpZ25tZW50IGlmIHBoYW50b20gZnVuY3Rpb25zIGNhbm5v
dCBiZQogYXNzaWduZWQKTUlNRS1WZXJzaW9uOiAxLjAKQ29udGVudC1UeXBl
OiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04CkNvbnRlbnQtVHJhbnNmZXIt
RW5jb2Rpbmc6IDhiaXQKClRoZSBjdXJyZW50IGJlaGF2aW9yIGlzIHRoYXQg
bm8gZXJyb3IgaXMgcmVwb3J0ZWQgaWYgKHNvbWUpIHBoYW50b20gZnVuY3Rp
b25zCmZhaWwgdG8gYmUgYXNzaWduZWQgZHVyaW5nIGRldmljZSBhZGQgb3Ig
YXNzaWdubWVudCwgc28gdGhlIG9wZXJhdGlvbiBzdWNjZWVkcwpldmVuIGlm
IHNvbWUgcGhhbnRvbSBmdW5jdGlvbnMgYXJlIG5vdCBjb3JyZWN0bHkgc2V0
dXAuCgpUaGlzIGNhbiBsZWFkIHRvIGRldmljZXMgcG9zc2libHkgYmVpbmcg
c3VjY2Vzc2Z1bGx5IGFzc2lnbmVkIHRvIGEgZG9tVSB3aGlsZQpzb21lIG9m
IHRoZSBkZXZpY2UgcGhhbnRvbSBmdW5jdGlvbnMgYXJlIHN0aWxsIGFzc2ln
bmVkIHRvIGRvbTAuICBFdmVuIHdoZW4gdGhlCmRldmljZSBpcyBhc3NpZ25l
ZCBkb21JTyBiZWZvcmUgYmVpbmcgYXNzaWduZWQgdG8gYSBkb21VIHBoYW50
b20gZnVuY3Rpb25zCm1pZ2h0IGZhaWwgdG8gYmUgYXNzaWduZWQgdG8gZG9t
SU8sIGFuZCBhbHNvIGZhaWwgdG8gYmUgYXNzaWduZWQgdG8gdGhlIGRvbVUs
CmxlYXZpbmcgdGhlbSBhc3NpZ25lZCB0byBkb20wLgoKU2luY2UgdGhlIGRl
dmljZSBjYW4gZ2VuZXJhdGUgcmVxdWVzdHMgdXNpbmcgdGhlIElEcyBvZiB0
aG9zZSBwaGFudG9tCmZ1bmN0aW9ucywgZ2l2ZW4gdGhlIHNjZW5hcmlvIGFi
b3ZlIGEgZGV2aWNlIGluIHN1Y2ggc3RhdGUgd291bGQgYmUgaW4gY29udHJv
bApvZiBhIGRvbVUsIGJ1dCBzdGlsbCBjYXBhYmxlIG9mIGdlbmVyYXRpbmcg
dHJhbnNhY3Rpb25zIHRoYXQgdXNlIGEgY29udGV4dCBJRAp0YXJnZXRpbmcg
ZG9tMCBvd25lZCBtZW1vcnkuCgpNb2RpZnkgZGV2aWNlIGFzc2lnbiBpbiBv
cmRlciB0byBhdHRlbXB0IHRvIGRlYXNzaWduIHRoZSBkZXZpY2UgaWYgcGhh
bnRvbQpmdW5jdGlvbnMgZmFpbGVkIHRvIGJlIGFzc2lnbmVkLgoKTm90ZSB0
aGF0IGRldmljZSBhZGRpdGlvbiBpcyBub3QgbW9kaWZpZWQgaW4gdGhlIHNh
bWUgd2F5LCBhcyBpbiB0aGF0IGNhc2UgdGhlCmRldmljZSBpcyBhc3NpZ25l
ZCB0byBhIHRydXN0ZWQgZG9tYWluLCBhbmQgaGVuY2UgcGFydGlhbCBhc3Np
Z24gY2FuIGxlYWQgdG8KZGV2aWNlIG1hbGZ1bmN0aW9uIGJ1dCBub3QgYSBz
ZWN1cml0eSBpc3N1ZS4KClRoaXMgaXMgWFNBLTQ0OSAvIENWRS0yMDIzLTQ2
ODM5CgpGaXhlczogNGU5OTUwZGMxYmQyICgnSU9NTVU6IGFkZCBwaGFudG9t
IGZ1bmN0aW9uIHN1cHBvcnQnKQpTaWduZWQtb2ZmLWJ5OiBSb2dlciBQYXUg
TW9ubsOpIDxyb2dlci5wYXVAY2l0cml4LmNvbT4KUmV2aWV3ZWQtYnk6IEph
biBCZXVsaWNoIDxqYmV1bGljaEBzdXNlLmNvbT4KLS0tCiB4ZW4vZHJpdmVy
cy9wYXNzdGhyb3VnaC9wY2kuYyB8IDIzICsrKysrKysrKysrKysrKysrKy0t
LS0tCiAxIGZpbGUgY2hhbmdlZCwgMTggaW5zZXJ0aW9ucygrKSwgNSBkZWxl
dGlvbnMoLSkKCmRpZmYgLS1naXQgYS94ZW4vZHJpdmVycy9wYXNzdGhyb3Vn
aC9wY2kuYyBiL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL3BjaS5jCmluZGV4
IGE5ZGE3MzY3YzI5Yy4uNmZjMjdlN2VkZTQwIDEwMDY0NAotLS0gYS94ZW4v
ZHJpdmVycy9wYXNzdGhyb3VnaC9wY2kuYworKysgYi94ZW4vZHJpdmVycy9w
YXNzdGhyb3VnaC9wY2kuYwpAQCAtMTQ0OCwxMCArMTQ0OCw5IEBAIHN0YXRp
YyBpbnQgYXNzaWduX2RldmljZShzdHJ1Y3QgZG9tYWluICpkLCB1MTYgc2Vn
LCB1OCBidXMsIHU4IGRldmZuLCB1MzIgZmxhZykKIAogICAgIHBkZXYtPmZh
dWx0LmNvdW50ID0gMDsKIAotICAgIGlmICggKHJjID0gaGQtPnBsYXRmb3Jt
X29wcy0+YXNzaWduX2RldmljZShkLCBkZXZmbiwgcGNpX3RvX2RldihwZGV2
KSwgZmxhZykpICkKLSAgICAgICAgZ290byBkb25lOworICAgIHJjID0gaGQt
PnBsYXRmb3JtX29wcy0+YXNzaWduX2RldmljZShkLCBkZXZmbiwgcGNpX3Rv
X2RldihwZGV2KSwgZmxhZyk7CiAKLSAgICBmb3IgKCA7IHBkZXYtPnBoYW50
b21fc3RyaWRlOyByYyA9IDAgKQorICAgIHdoaWxlICggcGRldi0+cGhhbnRv
bV9zdHJpZGUgJiYgIXJjICkKICAgICB7CiAgICAgICAgIGRldmZuICs9IHBk
ZXYtPnBoYW50b21fc3RyaWRlOwogICAgICAgICBpZiAoIFBDSV9TTE9UKGRl
dmZuKSAhPSBQQ0lfU0xPVChwZGV2LT5kZXZmbikgKQpAQCAtMTQ2MSw4ICsx
NDYwLDIyIEBAIHN0YXRpYyBpbnQgYXNzaWduX2RldmljZShzdHJ1Y3QgZG9t
YWluICpkLCB1MTYgc2VnLCB1OCBidXMsIHU4IGRldmZuLCB1MzIgZmxhZykK
IAogIGRvbmU6CiAgICAgaWYgKCByYyApCi0gICAgICAgIHByaW50ayhYRU5M
T0dfR19XQVJOSU5HICIlcGQ6IGFzc2lnbiAoJXBwKSBmYWlsZWQgKCVkKVxu
IiwKLSAgICAgICAgICAgICAgIGQsICZQQ0lfU0JERjMoc2VnLCBidXMsIGRl
dmZuKSwgcmMpOworICAgIHsKKyAgICAgICAgcHJpbnRrKFhFTkxPR19HX1dB
Uk5JTkcgIiVwZDogYXNzaWduICVzKCVwcCkgZmFpbGVkICglZClcbiIsCisg
ICAgICAgICAgICAgICBkLCBkZXZmbiAhPSBwZGV2LT5kZXZmbiA/ICJwaGFu
dG9tIGZ1bmN0aW9uICIgOiAiIiwKKyAgICAgICAgICAgICAgICZQQ0lfU0JE
RjMoc2VnLCBidXMsIGRldmZuKSwgcmMpOworCisgICAgICAgIGlmICggZGV2
Zm4gIT0gcGRldi0+ZGV2Zm4gJiYKKyAgICAgICAgICAgICBkZWFzc2lnbl9k
ZXZpY2UoZCwgc2VnLCBidXMsIHBkZXYtPmRldmZuKSAmJgorICAgICAgICAg
ICAgICFpc19oYXJkd2FyZV9kb21haW4oZCkgJiYgZCAhPSBkb21faW8gKQor
ICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAqIERldmljZSB3aXRoIHBo
YW50b20gZnVuY3Rpb25zIHRoYXQgZmFpbGVkIHRvIGJvdGggYXNzaWduIGFu
ZAorICAgICAgICAgICAgICogcm9sbGJhY2suICBDcmFzaCB0aGUgdGFyZ2V0
IGRvbWFpbiwgYXMgdGhlIHN0YXRlIG9mIHRoZQorICAgICAgICAgICAgICog
ZnVuY3Rpb25zIGF0IHRoaXMgcG9pbnQgaXMgdW5rbm93biBhbmQgWGVuIGhh
cyBubyB3YXkgdG8gYXNzZXJ0CisgICAgICAgICAgICAgKiBjb25zaXN0ZW50
IGNvbnRleHQgYXNzaWdubWVudCBhbW9uZyB0aGVtLgorICAgICAgICAgICAg
ICovCisgICAgICAgICAgICBkb21haW5fY3Jhc2goZCk7CisgICAgfQogICAg
IC8qIFRoZSBkZXZpY2UgaXMgYXNzaWduZWQgdG8gZG9tX2lvIHNvIG1hcmsg
aXQgYXMgcXVhcmFudGluZWQgKi8KICAgICBlbHNlIGlmICggZCA9PSBkb21f
aW8gKQogICAgICAgICBwZGV2LT5xdWFyYW50aW5lID0gdHJ1ZTsKLS0gCjIu
NDMuMAoK

--=separator--


From xen-devel-bounces@lists.xenproject.org Tue Jan 30 13:13:36 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 30 Jan 2024 13:13:36 +0000
Received: from list by lists.xenproject.org with outflank-mailman.673354.1047766 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUnvi-000259-Si; Tue, 30 Jan 2024 13:13:34 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 673354.1047766; Tue, 30 Jan 2024 13:13:34 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUnvi-000252-Q1; Tue, 30 Jan 2024 13:13:34 +0000
Received: by outflank-mailman (input) for mailman id 673354;
 Tue, 30 Jan 2024 13:13:33 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=/Uj/=JI=xenbits.xen.org=andrewcoop@srs-se1.protection.inumbo.net>)
 id 1rUnvh-0000pk-47
 for xen-devel@lists.xen.org; Tue, 30 Jan 2024 13:13:33 +0000
Received: from mail.xenproject.org (mail.xenproject.org [104.130.215.37])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 5bf34ca0-bf71-11ee-8a43-1f161083a0e0;
 Tue, 30 Jan 2024 14:13:29 +0100 (CET)
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <andrewcoop@xenbits.xen.org>)
 id 1rUnvX-0007gF-K5; Tue, 30 Jan 2024 13:13:23 +0000
Received: from andrewcoop by xenbits.xenproject.org with local (Exim 4.92)
 (envelope-from <andrewcoop@xenbits.xen.org>)
 id 1rUnvX-000489-JF; Tue, 30 Jan 2024 13:13:23 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 5bf34ca0-bf71-11ee-8a43-1f161083a0e0
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
	s=20200302mail; h=Date:Message-Id:Subject:CC:From:To:MIME-Version:
	Content-Transfer-Encoding:Content-Type;
	bh=MXOcSlCBkJ9CQ70sgwho1Hwl0C2uGWGNgUiDqvNQmeA=; b=HtjqrOiEjLyYRzoqhEeDG5Pkb/
	/ZmSQ9Mf8Du/Vjo9oGqBBgoSZXC3WbGtjwdOPVlBCIAfJpvfnR2AwIe3jo361ZePUw7wHKonw9Rvb
	mrCKYskXWzu2WGQ/Kwrz3oko2vbd/Bz+YplSipxdwziZHcVQjqfjd6XofZyHupPupnhM=;
Content-Type: multipart/mixed; boundary="=separator"; charset="utf-8"
Content-Transfer-Encoding: binary
MIME-Version: 1.0
X-Mailer: MIME-tools 5.509 (Entity 5.509)
To: xen-announce@lists.xen.org, xen-devel@lists.xen.org,
 xen-users@lists.xen.org, oss-security@lists.openwall.com
From: Xen.org security team <security@xen.org>
CC: Xen.org security team <security-team-members@xen.org>
Subject: Xen Security Advisory 450 v2 (CVE-2023-46840) - VT-d: Failure to
 quarantine devices in !HVM builds
Message-Id: <E1rUnvX-000489-JF@xenbits.xenproject.org>
Date: Tue, 30 Jan 2024 13:13:23 +0000

--=separator
Content-Type: text/plain; charset="utf-8"
Content-Disposition: inline
Content-Transfer-Encoding: 7bit

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256

            Xen Security Advisory CVE-2023-46840 / XSA-450
                               version 2

           VT-d: Failure to quarantine devices in !HVM builds

UPDATES IN VERSION 2
====================

Public release.

ISSUE DESCRIPTION
=================

Incorrect placement of a preprocessor directive in source code results
in logic that doesn't operate as intended when support for HVM guests is
compiled out of Xen.

IMPACT
======

When a device is removed from a domain, it is not properly quarantined
and retains its access to the domain to which it was previously
assigned.

VULNERABLE SYSTEMS
==================

Xen 4.17 and onwards are vulnerable.  Xen 4.16 and older are not
vulnerable.

Only Xen running on x86 platforms with an Intel-compatible VT-d IOMMU is
vulnerable.  Platforms from other manufacturers, or platforms without a
VT-d IOMMU are not vulnerable.

Only systems where PCI devices are passed through to untrusted or
semi-trusted guests are vulnerable.  Systems which do not assign PCI
devices to untrusted guests are not vulnerable.

Xen is only vulnerable when CONFIG_HVM is disabled at build time.  Most
deployments of Xen are expected to have CONFIG_HVM enabled at build
time, and would therefore not be vulnerable.

MITIGATION
==========

There is no mitigation.

CREDITS
=======

This issue was discovered by Teddy Astie of Vates

RESOLUTION
==========

Applying the attached patch resolves this issue.

Note that patches for released versions are generally prepared to
apply to the stable branches, and may not apply cleanly to the most
recent release tarball.  Downstreams are encouraged to update to the
tip of the stable branch before applying these patches.

xsa450.patch           xen-unstable - Xen 4.17.x

$ sha256sum xsa450*
738c79b92ab5ea57f446df3daff6564727fea5feebf8fadeb32acd0cf06ff9fb  xsa450.patch
$

DEPLOYMENT DURING EMBARGO
=========================

Deployment of the patches and/or mitigations described above (or
others which are substantially similar) is permitted during the
embargo, even on public-facing systems with untrusted guest users and
administrators.

But: Distribution of updated software is prohibited (except to other
members of the predisclosure list).

Predisclosure list members who wish to deploy significantly different
patches and/or mitigations, please contact the Xen Project Security
Team.


(Note: this during-embargo deployment notice is retained in
post-embargo publicly released Xen Project advisories, even though it
is then no longer applicable.  This is to enable the community to have
oversight of the Xen Project Security Team's decisionmaking.)

For more information about permissible uses of embargoed information,
consult the Xen Project community's agreed Security Policy:
  http://www.xenproject.org/security-policy.html
-----BEGIN PGP SIGNATURE-----

iQFABAEBCAAqFiEEI+MiLBRfRHX6gGCng/4UyVfoK9kFAmW49MwMHHBncEB4ZW4u
b3JnAAoJEIP+FMlX6CvZnwcIALs07CQFYSuQmdgWRYeepkjehMSVhPhvJcYBCFWU
p+80oreGP2pC1LN+T9ndN0kDeUHAO8PeT+XqxHSNfT16Q5EOSeLpUQ8m+UfHUFLU
vtPMjR4sMpnvuZfx0OCMJctDDTM+/muw4AH0BO2zxFfDzGkM96zZ6vAokeer+5HQ
/P9usMm/6jphixVq919RBJ78fFZxKpKhil9tEwNuD6HJW3VNMWp1ypGNyFI3iRhw
XpYzWMB0eW6B6rSInohHJiTS7P6KE5zeXeBPZ5yVHy2J3e3c7nXyrQaaONSRCBdm
/Px2xcg1SpH+3UwoT56Z7tj1DhlgjcY4peb5B58oDK68hMU=
=Dp+G
-----END PGP SIGNATURE-----

--=separator
Content-Type: application/octet-stream; name="xsa450.patch"
Content-Disposition: attachment; filename="xsa450.patch"
Content-Transfer-Encoding: base64

RnJvbTogQW5kcmV3IENvb3BlciA8YW5kcmV3LmNvb3BlcjNAY2l0cml4LmNv
bT4KU3ViamVjdDogVlQtZDogRml4ICJlbHNlIiB2cyAiI2VuZGlmIiBtaXNw
bGFjZW1lbnQKCkluIGRvbWFpbl9wZ2RfbWFkZHIoKSB0aGUgIiNlbmRpZiIg
aXMgbWlzcGxhY2VkIHdpdGggcmVzcGVjdCB0byAiZWxzZSIuICBUaGlzCmdl
bmVyYXRlcyBpbmNvcnJlY3QgbG9naWMgd2hlbiBDT05GSUdfSFZNIGlzIGNv
bXBpbGVkIG91dCwgYXMgdGhlICJlbHNlIiBib2R5CmlzIGV4ZWN1dGVkIHVu
Y29uZGl0aW9uYWxseS4KClJld29yayB0aGUgbG9naWMgdG8gdXNlIElTX0VO
QUJMRUQoKSBpbnN0ZWFkIG9mIGV4cGxpY2l0ICNpZmRlZi1hcnksIGFzIGl0
J3MKY2xlYXJlciB0byBmb2xsb3cuICBUaGlzIGluIHR1cm4gaW52b2x2ZXMg
YWRqdXN0aW5nIHAybV9nZXRfcGFnZXRhYmxlKCkgdG8KY29tcGlsZSB3aGVu
IENPTkZJR19IVk0gaXMgZGlzYWJsZWQuCgpUaGlzIGlzIFhTQS00NTAgLyBD
VkUtMjAyMy00Njg0MC4KClJlcG9ydGVkLWJ5OiBSZXBvcnRlZC1ieTogVGVk
ZHkgQXN0aWUgPHRlZGR5LmFzdGllQHZhdGVzLnRlY2g+CkZpeGVzOiAwMzNm
ZjkwYWE5YzEgKCJ4ODYvUDJNOiBwMm1fe2FsbG9jLGZyZWV9X3B0cCgpIGFu
ZCBwMm1fYWxsb2NfdGFibGUoKSBhcmUgSFZNLW9ubHkiKQpTaWduZWQtb2Zm
LWJ5OiBBbmRyZXcgQ29vcGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29t
PgpSZXZpZXdlZC1ieTogSmFuIEJldWxpY2ggPGpiZXVsaWNoQHN1c2UuY29t
PgoKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9wMm0u
aCBiL3hlbi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9wMm0uaAppbmRleCAzMmYz
ZjM5NGIwNWEuLjZhZGE1ODVlYWFjMiAxMDA2NDQKLS0tIGEveGVuL2FyY2gv
eDg2L2luY2x1ZGUvYXNtL3AybS5oCisrKyBiL3hlbi9hcmNoL3g4Ni9pbmNs
dWRlL2FzbS9wMm0uaApAQCAtNDM1LDcgKzQzNSwxNCBAQCBzdGF0aWMgaW5s
aW5lIGJvb2wgcDJtX2lzX2FsdHAybShjb25zdCBzdHJ1Y3QgcDJtX2RvbWFp
biAqcDJtKQogICAgIHJldHVybiBwMm0tPnAybV9jbGFzcyA9PSBwMm1fYWx0
ZXJuYXRlOwogfQogCi0jZGVmaW5lIHAybV9nZXRfcGFnZXRhYmxlKHAybSkg
ICgocDJtKS0+cGh5c190YWJsZSkKKyNpZmRlZiBDT05GSUdfSFZNCitzdGF0
aWMgaW5saW5lIHBhZ2V0YWJsZV90IHAybV9nZXRfcGFnZXRhYmxlKGNvbnN0
IHN0cnVjdCBwMm1fZG9tYWluICpwMm0pCit7CisgICAgcmV0dXJuIHAybS0+
cGh5c190YWJsZTsKK30KKyNlbHNlCitwYWdldGFibGVfdCBwMm1fZ2V0X3Bh
Z2V0YWJsZShjb25zdCBzdHJ1Y3QgcDJtX2RvbWFpbiAqcDJtKTsKKyNlbmRp
ZgogCiAvKgogICogRW5zdXJlIGFueSBkZWZlcnJlZCBwMm0gVExCIGZsdXNo
IGhhcyBiZWVuIGNvbXBsZXRlZCBvbiBhbGwgVkNQVXMuCmRpZmYgLS1naXQg
YS94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC92dGQvaW9tbXUuYyBiL3hlbi9k
cml2ZXJzL3Bhc3N0aHJvdWdoL3Z0ZC9pb21tdS5jCmluZGV4IDk5YjY0MmYx
MmVmOS4uNDI0NDg1NTAzMmVlIDEwMDY0NAotLS0gYS94ZW4vZHJpdmVycy9w
YXNzdGhyb3VnaC92dGQvaW9tbXUuYworKysgYi94ZW4vZHJpdmVycy9wYXNz
dGhyb3VnaC92dGQvaW9tbXUuYwpAQCAtNDM4LDE1ICs0MzgsMTMgQEAgc3Rh
dGljIHBhZGRyX3QgZG9tYWluX3BnZF9tYWRkcihzdHJ1Y3QgZG9tYWluICpk
LCBwYWRkcl90IHBnZF9tYWRkciwKIAogICAgIGlmICggcGdkX21hZGRyICkK
ICAgICAgICAgLyogbm90aGluZyAqLzsKLSNpZmRlZiBDT05GSUdfSFZNCi0g
ICAgZWxzZSBpZiAoIGlvbW11X3VzZV9oYXBfcHQoZCkgKQorICAgIGVsc2Ug
aWYgKCBJU19FTkFCTEVEKENPTkZJR19IVk0pICYmIGlvbW11X3VzZV9oYXBf
cHQoZCkgKQogICAgIHsKICAgICAgICAgcGFnZXRhYmxlX3QgcGd0ID0gcDJt
X2dldF9wYWdldGFibGUocDJtX2dldF9ob3N0cDJtKGQpKTsKIAogICAgICAg
ICBwZ2RfbWFkZHIgPSBwYWdldGFibGVfZ2V0X3BhZGRyKHBndCk7CiAgICAg
fQogICAgIGVsc2UKLSNlbmRpZgogICAgIHsKICAgICAgICAgaWYgKCAhaGQt
PmFyY2gudnRkLnBnZF9tYWRkciApCiAgICAgICAgIHsK

--=separator--


From xen-devel-bounces@lists.xenproject.org Tue Jan 30 13:20:18 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 30 Jan 2024 13:20:18 +0000
Received: from list by lists.xenproject.org with outflank-mailman.673442.1047795 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUo27-0007DI-3W; Tue, 30 Jan 2024 13:20:11 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 673442.1047795; Tue, 30 Jan 2024 13:20:11 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUo27-0007DB-0X; Tue, 30 Jan 2024 13:20:11 +0000
Received: by outflank-mailman (input) for mailman id 673442;
 Tue, 30 Jan 2024 13:20:09 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=OeE3=JI=bounce.vates.tech=bounce-md_30504962.65b8f786.v1-82d51abd79a849f7b8ca6396fa85c3c3@srs-se1.protection.inumbo.net>)
 id 1rUo24-0006HE-Si
 for xen-devel@lists.xenproject.org; Tue, 30 Jan 2024 13:20:09 +0000
Received: from mail145-21.atl61.mandrillapp.com
 (mail145-21.atl61.mandrillapp.com [198.2.145.21])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 4901d59c-bf72-11ee-8a43-1f161083a0e0;
 Tue, 30 Jan 2024 14:20:07 +0100 (CET)
Received: from pmta06.mandrill.prod.atl01.rsglab.com (localhost [127.0.0.1])
 by mail145-21.atl61.mandrillapp.com (Mailchimp) with ESMTP id 4TPQkt0zpPzllq
 for <xen-devel@lists.xenproject.org>; Tue, 30 Jan 2024 13:20:06 +0000 (GMT)
Received: from [37.26.189.201] by mandrillapp.com id
 82d51abd79a849f7b8ca6396fa85c3c3; Tue, 30 Jan 2024 13:20:06 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 4901d59c-bf72-11ee-8a43-1f161083a0e0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mandrillapp.com;
	s=mte1; t=1706620806; x=1706881306;
	bh=U6pZSDC2gmwr6jxndtp0NHMbgoOtZz7hjE1xewrd0js=;
	h=From:Subject:Message-Id:To:Feedback-ID:Date:MIME-Version:
	 Content-Type:Content-Transfer-Encoding:CC:Date:Subject:From;
	b=RXyVTcWzVAII3P1hYEmtQ40oLdJ/hx76HvlhCNuX8OaBPqb96l0z9v+FPxrrxoDVS
	 IP86JUkwhZR3VZHNVtehpPm+B93+VnTTV56G0ax2tTylCIGjcgzj1GLdseGw+1yBrC
	 REAIOyvOf5/W4cjveZ5lrhil8KyyCIXd5eY0qlPTHZ63OhLy+dr7VM77J2yr7qdYWQ
	 +wMNdNy4UbH32MZzLTTx2DQMo91c57WqcMtpOJ37BaXNiZzDxW02Yj4L/+7xQjqQRK
	 yv8Zh9givSApE5fVWC8FpegFTrT/6uoOD61BS/bbjFSEtgO75nzAhWMbWxuF7ALQxL
	 F2Y7JAWrFVRng==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech; s=mte1;
	t=1706620806; x=1706881306; i=yann.dirson@vates.tech;
	bh=U6pZSDC2gmwr6jxndtp0NHMbgoOtZz7hjE1xewrd0js=;
	h=From:Subject:Message-Id:To:Feedback-ID:Date:MIME-Version:
	 Content-Type:Content-Transfer-Encoding:CC:Date:Subject:From;
	b=y+tpDHiMqMQdzX2f6Hst/Id6fIL8DFXZWrI51d8im6UxQ7keOj03iOyTr8boRIEqO
	 gDu5kkX1Z6mzqphHVBmZxM0ENJHj0ROgTapn9LVFy0md1Heysc5saZbwXJt0RZFy2P
	 yqV3qKsoGS/VvhjtXlp/dL8YAFmcnaT3GlIyc9EFJXoBI/lVsYeVMhAOBy2WbW4QIk
	 uzDENmJe11uwPhD89OhumZNI7eDi4sgmFrImSt9CTgpmVNkZFzLQc2mqHWvLs4j3Ta
	 n8fRpOTFd86Fbf+fP/KSR6blf70uLozc3DS9PNkltXtHoEphzIgQk9UYVzAIQmQMZJ
	 BYpvNOopxhGqQ==
From: Yann Dirson <yann.dirson@vates.tech>
Subject: =?utf-8?Q?Rust=20Xen=20Guest=20Agent=200.4.0?=
X-Bm-Disclaimer: Yes
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1706620805238
Message-Id: <c3083bfc-9777-451f-8527-29fd09beec8d@vates.tech>
To: xen-devel@lists.xenproject.org
X-Native-Encoded: 1
X-Report-Abuse: =?UTF-8?Q?Please=20forward=20a=20copy=20of=20this=20message,=20including=20all=20headers,=20to=20abuse@mandrill.com.=20You=20can=20also=20report=20abuse=20here:=20https://mandrillapp.com/contact/abuse=3Fid=3D30504962.82d51abd79a849f7b8ca6396fa85c3c3?=
X-Mandrill-User: md_30504962
Feedback-ID: 30504962:30504962.20240130:md
Date: Tue, 30 Jan 2024 13:20:06 +0000
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 7bit

A new pre-release of our guest agent prototype written in Rust is
available, numbered 0.3.0 [1].  Identified issues and work to be done
are tracked in Gitlab issue tracker [2].

As always, feedback will be greatly appreciated!

Highlights:

### new features

* can be linked statically with libxenstore to distribute a more
   standalone binary (`-F static`).  Used for official Linux binary.
   Notably useful for guests running a RHEL-derived Linux distro.

### bugfixes

* stale network information in xenstore is now removed on startup

### other noteworthy changes

* CI pipelines stopped producing binaries for EOL'd FreeBSD 12.4,
   switched to 13.2
* CI now produces an (unofficial) binary for FreeBSD with Netlink
   support


[1] https://gitlab.com/xen-project/xen-guest-agent/-/releases/0.4.0
[2] https://gitlab.com/xen-project/xen-guest-agent/-/issues


Yann Dirson | Vates Platform Developer

XCP-ng & Xen Orchestra - Vates solutions

web: https://vates.tech


From xen-devel-bounces@lists.xenproject.org Tue Jan 30 14:35:30 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 30 Jan 2024 14:35:30 +0000
Received: from list by lists.xenproject.org with outflank-mailman.673479.1047806 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUpCm-0008R3-3S; Tue, 30 Jan 2024 14:35:16 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 673479.1047806; Tue, 30 Jan 2024 14:35:16 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUpCm-0008Qw-0R; Tue, 30 Jan 2024 14:35:16 +0000
Received: by outflank-mailman (input) for mailman id 673479;
 Tue, 30 Jan 2024 14:35:14 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=BUgQ=JI=cloud.com=roger.pau@srs-se1.protection.inumbo.net>)
 id 1rUpCk-0008Qn-OE
 for xen-devel@lists.xenproject.org; Tue, 30 Jan 2024 14:35:14 +0000
Received: from mail-wm1-x32d.google.com (mail-wm1-x32d.google.com
 [2a00:1450:4864:20::32d])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id c6ee757f-bf7c-11ee-8a43-1f161083a0e0;
 Tue, 30 Jan 2024 15:35:13 +0100 (CET)
Received: by mail-wm1-x32d.google.com with SMTP id
 5b1f17b1804b1-40f02b8d150so5916605e9.2
 for <xen-devel@lists.xenproject.org>; Tue, 30 Jan 2024 06:35:13 -0800 (PST)
Received: from localhost ([213.195.118.74]) by smtp.gmail.com with ESMTPSA id
 v8-20020a5d59c8000000b0033af2a91b47sm4545906wry.70.2024.01.30.06.35.12
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 30 Jan 2024 06:35:12 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: c6ee757f-bf7c-11ee-8a43-1f161083a0e0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1706625312; x=1707230112; darn=lists.xenproject.org;
        h=in-reply-to:content-transfer-encoding:content-disposition
         :mime-version:references:message-id:subject:cc:to:from:date:from:to
         :cc:subject:date:message-id:reply-to;
        bh=atN8zjaGHB+ag524uwnqlvG3s4U1b2yNEoYL+AdcNcU=;
        b=E1fT9+KzFsox0BY4hj32hF3ng6TQ2T+wJ81SPDuuekPeJGVur0uDUZ46yrNXyl4+ln
         4hn5GqBmvFdds+YONCx/YYw7tiPVyy8/ZQyg8e6etO2CWwoJ/ceVrWBwbEs+l25mUOTT
         WZ1mO+IGEce+a2qiA9L+WWdpPjIBTEL8hFJn4=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706625312; x=1707230112;
        h=in-reply-to:content-transfer-encoding:content-disposition
         :mime-version:references:message-id:subject:cc:to:from:date
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=atN8zjaGHB+ag524uwnqlvG3s4U1b2yNEoYL+AdcNcU=;
        b=MQODHsKOLE5aAkpfDArb55p2UvD0nMiJhAkVKbj30/mfT5hHrY4xIY5S+Psuu/2xNW
         YeZPK3a3nop95bebKH4mkB8txQf53WSj308XscH4gdSnwh/SWgHkaPOwyy8M8mO/ClWU
         ynATmZ9FTZkTgri4uPGV7TCG3UnNDzHxVXSl5HX9XwpRA2nz8JvDdFLwQ1A2RjWIwwrz
         GUWeDxPnzjXUuWG59DnraA5w1ZuFwsoP/8rKJ9wukqbDzfsMZygMJU7JyTNrDolLj6+W
         U3Y5mHupnBoZ1rMyh39wVIFbS7PAEoiUdV2pHi0lg5ngHNSNuqycWdyhRFzO84SqDgG9
         /Bew==
X-Gm-Message-State: AOJu0YxwsWCMwEA8k52J9a/9n4JlKDAaBCFTbfo5347SFF1I7ZfWh5yP
	hLNpmFiGe5KdegzHcmnmJvY7asn0qPt8dFOh4f9Zlyije2Lpb9nqshfCNFouRMY=
X-Google-Smtp-Source: AGHT+IFLXUVI/hdlgXQJqI/GkIiyBdmDCTtt7nXrZGNOMxhOKCvvx+hrdguwaNfocAGcSA3l6TLLJA==
X-Received: by 2002:adf:ecc5:0:b0:33a:e4ba:16f5 with SMTP id s5-20020adfecc5000000b0033ae4ba16f5mr5687338wro.3.1706625312518;
        Tue, 30 Jan 2024 06:35:12 -0800 (PST)
Date: Tue, 30 Jan 2024 15:35:11 +0100
From: Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
To: Jan Beulich <jbeulich@suse.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, Wei Liu <wl@xen.org>,
	xen-devel@lists.xenproject.org
Subject: Re: [PATCH 1/3] x86/intel: expose IPRED_CTRL to guests
Message-ID: <ZbkJH6qhCa1GjTES@macbook>
References: <20240130091400.50622-1-roger.pau@citrix.com>
 <20240130091400.50622-2-roger.pau@citrix.com>
 <3959f556-6177-473e-a052-bec11b5a8a9b@suse.com>
 <ZbjmS2oLAV7Fyqdn@macbook>
 <0ad880e8-0f2b-4519-971e-c98b3411fba5@suse.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <0ad880e8-0f2b-4519-971e-c98b3411fba5@suse.com>

On Tue, Jan 30, 2024 at 01:59:14PM +0100, Jan Beulich wrote:
> On 30.01.2024 13:06, Roger Pau Monné wrote:
> > On Tue, Jan 30, 2024 at 11:57:17AM +0100, Jan Beulich wrote:
> >> On 30.01.2024 10:13, Roger Pau Monne wrote:
> >>> The CPUID feature bit signals the presence of the IPRED_DIS_{U,S} controls in
> >>> SPEC_CTRL MSR.
> >>>
> >>> Note that those controls are not used by the hypervisor.
> >>
> >> Despite this, ...
> >>
> >>> --- a/xen/arch/x86/msr.c
> >>> +++ b/xen/arch/x86/msr.c
> >>> @@ -324,6 +324,9 @@ uint64_t msr_spec_ctrl_valid_bits(const struct cpu_policy *cp)
> >>>      return (SPEC_CTRL_IBRS | SPEC_CTRL_STIBP |
> >>>              (ssbd       ? SPEC_CTRL_SSBD       : 0) |
> >>>              (psfd       ? SPEC_CTRL_PSFD       : 0) |
> >>> +            (cp->feat.ipred_ctrl ? (SPEC_CTRL_IPRED_DIS_U |
> >>> +                                    SPEC_CTRL_IPRED_DIS_S)
> >>> +                                 : 0) |
> >>>              0);
> >>>  }
> >>
> >> ... if I'm not mistaken exposing SPEC_CTRL bits to guests is independent
> >> of whether we write SPEC_CTRL on entry to Xen. Therefore I think in the
> >> description it wants clarifying why it is acceptable to run Xen with the
> >> guest chosen settings for at least the DIS_S bit (assuming that it is
> >> okay to do so). Likely (didn't look there yet) also applicable to the
> >> further two patches.
> > 
> > "The added feature is made dependent on IBRSB, which ensures it will
> > only be exposed if X86_FEATURE_SC_MSR_{PV,HVM} is available, and that
> > ensures the value of SPEC_CTRL will get context switched on exit/entry
> > to guest."
> > 
> > Would adding the above to the commit message clarify the intended
> > implementation?
> 
> It would improve things, at least hinting towards there being a connection
> between exposure and updating on entry to Xen. I'd like to ask though to
> avoid "context switch" when talking about entry from guest context. While
> in a way technically correct, our normal meaning of the term is the
> process of switching vCPU-s out/in on a pCPU.

"The added feature is made dependent on IBRSB, which ensures it will
only be exposed if X86_FEATURE_SC_MSR_{PV,HVM} is available, and that
ensures the value of SPEC_CTRL will get toggled between guest and Xen
values on exit/entry to guest."

But I wonder, we already allow guests the play with other SPEC_CTRL
bits, and Xen toggles the SPEC_CTRL values as required on entry/exit
to Xen, so I'm unsure why adding more bits needs so much
justification.

Thanks, Roger.


From xen-devel-bounces@lists.xenproject.org Tue Jan 30 14:47:50 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 30 Jan 2024 14:47:50 +0000
Received: from list by lists.xenproject.org with outflank-mailman.673483.1047815 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUpOq-0002qD-54; Tue, 30 Jan 2024 14:47:44 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 673483.1047815; Tue, 30 Jan 2024 14:47:44 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUpOq-0002q6-2C; Tue, 30 Jan 2024 14:47:44 +0000
Received: by outflank-mailman (input) for mailman id 673483;
 Tue, 30 Jan 2024 14:47:42 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=XFHt=JI=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rUpOo-0002q0-Rf
 for xen-devel@lists.xenproject.org; Tue, 30 Jan 2024 14:47:42 +0000
Received: from mail-wm1-x32b.google.com (mail-wm1-x32b.google.com
 [2a00:1450:4864:20::32b])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 84233444-bf7e-11ee-98f5-efadbce2ee36;
 Tue, 30 Jan 2024 15:47:40 +0100 (CET)
Received: by mail-wm1-x32b.google.com with SMTP id
 5b1f17b1804b1-40eacb4bfa0so43633265e9.1
 for <xen-devel@lists.xenproject.org>; Tue, 30 Jan 2024 06:47:40 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 by5-20020a056000098500b0033afef9bdfbsm165010wrb.8.2024.01.30.06.47.38
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 30 Jan 2024 06:47:39 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 84233444-bf7e-11ee-98f5-efadbce2ee36
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1706626059; x=1707230859; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:from:to:cc:subject:date:message-id:reply-to;
        bh=3qFZq1Kph9B36QRA8Hq7ImKlPVDa941bgkGY4EbEwdc=;
        b=KtJIQQC/F+1ly6UYuKszpmyR3Uuenzg2xycSEz8pENo2d8A99tHOCJc3lZgcflajMQ
         iGBRbnCrBWUv++2WDBQjEPEk+nufhd6sEG1mPgZWgnFxU4WVUCPxWxEbdiZ5r5X/S5kZ
         lZSlmzl7u4izFSgY/uJ2RU2tG56Jp1tE9zWs2+q7rjSkbTZxwAoZG+qixmN9zTc1xgWd
         XvDR1CPDVlO1mBo0rNfnPnSJpzQekMqlRxO4r/Z9HMlYmQhmSbftDV3IQg9+QdE94+y6
         p5r/Enq1+F/jzid+LNk6XIzqb9GW2CaoVEEyor5zVYza32AvGsuiquroIDqX64coulPf
         Mx+w==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706626059; x=1707230859;
        h=content-transfer-encoding:in-reply-to:autocrypt:from
         :content-language:references:cc:to:subject:user-agent:mime-version
         :date:message-id:x-gm-message-state:from:to:cc:subject:date
         :message-id:reply-to;
        bh=3qFZq1Kph9B36QRA8Hq7ImKlPVDa941bgkGY4EbEwdc=;
        b=hNV1BDRaRv/kEBx/5pTJdMD6zg1fr+yr9PGiWBYtF8jowHIlbTZslzIidDSe6mPye3
         kvZKWoSGRH0hoOB/s/BauK6tID09ETmEk30ktMVkWaMBrqRqG/F7tGWAfTXZszknLITX
         pUxSb+YlgLSWIBhdfRJ7kUS3MGlG326IXOtxhx4ADt9XGyHLgJyCKDLbA6Fh/345MWco
         OqZDMts21ZZF5nGG5Vqq04AXey36cVrLRyWEfUlXtipj1PHK7Xtf9b/ixgcFrWieC/nn
         jTathfBAN7Cwl3eGeUvyUGG4N+LbEFLfXYIl+mJAom2tI6SISNNrhd88FMDZssZ5Urq4
         6fmA==
X-Gm-Message-State: AOJu0YxFoHWBHILh6z2G3RuH0c+Y3PAZhlYHjjgtJWJoxEx4Y2an8J5F
	ElAuKohfnZCH1XeEFwlIGVEUNpeHafeP+BggZaUD77MWQ58xjn++XOXrgnvILg==
X-Google-Smtp-Source: AGHT+IES7Rh5NYSeJZcY66bz4W3Vx6dxaIb1JpR1D6pTWNlDpBLN7LHlzJzt9GwQ2hQ5hrp0Oph02A==
X-Received: by 2002:a5d:558b:0:b0:33a:edba:4e1d with SMTP id i11-20020a5d558b000000b0033aedba4e1dmr3507134wrv.31.1706626059480;
        Tue, 30 Jan 2024 06:47:39 -0800 (PST)
X-Forwarded-Encrypted: i=0; AJvYcCVPENBN87UySOlNDUNWhObLinO8MlJYtRtyGIB05LNs2oECLewvHQWv39i+EL5ZOFTD08JH9oYopsoH2BAFTDXtqlHU5rX57bq+qK0z6s3lSrCa75aHW2wuTIo=
Message-ID: <9f117de7-a729-46d8-ad09-30b1f2bb7580@suse.com>
Date: Tue, 30 Jan 2024 15:47:37 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 1/3] x86/intel: expose IPRED_CTRL to guests
To: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, Wei Liu <wl@xen.org>,
 xen-devel@lists.xenproject.org
References: <20240130091400.50622-1-roger.pau@citrix.com>
 <20240130091400.50622-2-roger.pau@citrix.com>
 <3959f556-6177-473e-a052-bec11b5a8a9b@suse.com> <ZbjmS2oLAV7Fyqdn@macbook>
 <0ad880e8-0f2b-4519-971e-c98b3411fba5@suse.com> <ZbkJH6qhCa1GjTES@macbook>
Content-Language: en-US
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <ZbkJH6qhCa1GjTES@macbook>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 30.01.2024 15:35, Roger Pau Monné wrote:
> On Tue, Jan 30, 2024 at 01:59:14PM +0100, Jan Beulich wrote:
>> On 30.01.2024 13:06, Roger Pau Monné wrote:
>>> On Tue, Jan 30, 2024 at 11:57:17AM +0100, Jan Beulich wrote:
>>>> On 30.01.2024 10:13, Roger Pau Monne wrote:
>>>>> The CPUID feature bit signals the presence of the IPRED_DIS_{U,S} controls in
>>>>> SPEC_CTRL MSR.
>>>>>
>>>>> Note that those controls are not used by the hypervisor.
>>>>
>>>> Despite this, ...
>>>>
>>>>> --- a/xen/arch/x86/msr.c
>>>>> +++ b/xen/arch/x86/msr.c
>>>>> @@ -324,6 +324,9 @@ uint64_t msr_spec_ctrl_valid_bits(const struct cpu_policy *cp)
>>>>>      return (SPEC_CTRL_IBRS | SPEC_CTRL_STIBP |
>>>>>              (ssbd       ? SPEC_CTRL_SSBD       : 0) |
>>>>>              (psfd       ? SPEC_CTRL_PSFD       : 0) |
>>>>> +            (cp->feat.ipred_ctrl ? (SPEC_CTRL_IPRED_DIS_U |
>>>>> +                                    SPEC_CTRL_IPRED_DIS_S)
>>>>> +                                 : 0) |
>>>>>              0);
>>>>>  }
>>>>
>>>> ... if I'm not mistaken exposing SPEC_CTRL bits to guests is independent
>>>> of whether we write SPEC_CTRL on entry to Xen. Therefore I think in the
>>>> description it wants clarifying why it is acceptable to run Xen with the
>>>> guest chosen settings for at least the DIS_S bit (assuming that it is
>>>> okay to do so). Likely (didn't look there yet) also applicable to the
>>>> further two patches.
>>>
>>> "The added feature is made dependent on IBRSB, which ensures it will
>>> only be exposed if X86_FEATURE_SC_MSR_{PV,HVM} is available, and that
>>> ensures the value of SPEC_CTRL will get context switched on exit/entry
>>> to guest."
>>>
>>> Would adding the above to the commit message clarify the intended
>>> implementation?
>>
>> It would improve things, at least hinting towards there being a connection
>> between exposure and updating on entry to Xen. I'd like to ask though to
>> avoid "context switch" when talking about entry from guest context. While
>> in a way technically correct, our normal meaning of the term is the
>> process of switching vCPU-s out/in on a pCPU.
> 
> "The added feature is made dependent on IBRSB, which ensures it will
> only be exposed if X86_FEATURE_SC_MSR_{PV,HVM} is available, and that
> ensures the value of SPEC_CTRL will get toggled between guest and Xen
> values on exit/entry to guest."
> 
> But I wonder, we already allow guests the play with other SPEC_CTRL
> bits, and Xen toggles the SPEC_CTRL values as required on entry/exit
> to Xen, so I'm unsure why adding more bits needs so much
> justification.

Well, yes, I'm sorry, it was me forgetting the open-coded effect
SC_MSR_{PV,HVM} has on exposing of the MSR. I guess I'd be happy with
extending the last sentence a little, maybe "Note that those controls
are not used by the hypervisor, and they're cleared on entry to Xen."
If you're okay with that, I'd be happy to adjust while committing
(and assuming no other concerns are raised):
Reviewed-by: Jan Beulich <jbeulich@suse.com>
for all three patches.

Jan


From xen-devel-bounces@lists.xenproject.org Tue Jan 30 14:48:57 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 30 Jan 2024 14:48:57 +0000
Received: from list by lists.xenproject.org with outflank-mailman.673486.1047825 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUpQ0-00047i-De; Tue, 30 Jan 2024 14:48:56 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 673486.1047825; Tue, 30 Jan 2024 14:48:56 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUpQ0-00047b-B4; Tue, 30 Jan 2024 14:48:56 +0000
Received: by outflank-mailman (input) for mailman id 673486;
 Tue, 30 Jan 2024 14:48:54 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=Trk4=JI=citrix.com=prvs=75271d196=Andrew.Cooper3@srs-se1.protection.inumbo.net>)
 id 1rUpPy-0003zv-Jm
 for xen-devel@lists.xenproject.org; Tue, 30 Jan 2024 14:48:54 +0000
Received: from esa6.hc3370-68.iphmx.com (esa6.hc3370-68.iphmx.com
 [216.71.155.175]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id ae581324-bf7e-11ee-98f5-efadbce2ee36;
 Tue, 30 Jan 2024 15:48:52 +0100 (CET)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: ae581324-bf7e-11ee-98f5-efadbce2ee36
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple;
  d=citrix.com; s=securemail; t=1706626131;
  h=from:to:cc:subject:date:message-id:mime-version:
   content-transfer-encoding;
  bh=PE5mAhJYnlI3g+aj3+hmUQ3PXxetuYZDIFwjnEku6zA=;
  b=bkDOCrYt4rxX3HR85xA+SjnQxVeKNcS3gv2W3mvvDqOxpbitWFe1iKeO
   Mre5SnPuKok7nSLaB6vSqAu2/9XNs4NX4yiKKhd6A34jHe0QusD0f3Jw/
   pLLr0qb1ja+1mlHMcrzXYawgVLFAca7LS+5fOp9lX6FGVPgY9sCgNvSUn
   4=;
X-CSE-ConnectionGUID: M/SXR7M5QgGvx5/u1jjOpQ==
X-CSE-MsgGUID: 0J3Gdn1CRLCmi+r+SAeRXA==
Authentication-Results: esa6.hc3370-68.iphmx.com; dkim=none (message not signed) header.i=none
X-SBRS: 4.0
X-MesageID: 128982911
X-Ironport-Server: esa6.hc3370-68.iphmx.com
X-Remote-IP: 162.221.159.70
X-Policy: $RELAYED
X-ThreatScanner-Verdict: Negative
IronPort-Data: A9a23:tydG/q5mIuDBknvFX2cN1QxRtHXHchMFZxGqfqrLsTDasY5as4F+v
 jBKUW7UPfuCYGr9cowgYIux9UkP7MTUydMyTQU9ri1nHi5G8cbLO4+Ufxz6V8+wwm8vb2o8t
 plDNYOQRCwQZiWBzvt4GuG59RGQ7YnRG/ykTraCY3gtLeNdYH9JoQp5nOIkiZJfj9G8Agec0
 fv/uMSaM1K+s9JOGjt8B5mr9lU34ZwehBtC5gZiPakR7QeE/5UoJMl3yZ+ZfiOQrrZ8RoZWd
 86bpJml82XQ+QsaC9/Nut4XpWVTH9Y+lSDX4pZnc/DKbipq/0Te4Y5iXBYoUm9Fii3hojxE4
 I4lWapc6+seFvakdOw1C3G0GszlVEFM0OevzXOX6aR/w6BaGpdFLjoH4EweZOUlFuhL7W5m0
 LsjGApSS026iM2o0O/8V7BuhOM7FZy+VG8fkikIITDxCP8nRdbIQrnQ5M8e1zA17ixMNa+AP
 YxDM2MpNUmRJUIXUrsUIMtWcOOAr3/zaTBH7nmSorI6+TP7xw1tyrn9dtHSf7RmQO0MxBbJ9
 jiXpj2R7hcybP7E5jaDq1mWosTKnGDhG7k7GYeI36s/6LGU7jNKU0BHPbehmtGph0j7V99BJ
 kg8/is1sbN05EGtVsP6XRCzvDiDpBF0c/h6HvA+6QqN4rHJ+AvfDW8BJhZebPQ2uclwQiYlv
 mJlhPuwW2Yp6ufMDyvAp/HL9VteJBT5M0cnIhQ0d1QgvuDsj58j01XSF9RhN7aM24id9S7L/
 9yakMQvr+xM1ZBVjvTqogyvvt66mnTeoucICuTrsoGNtFoRiHaNPdDA1LQixa8owHylZleAp
 mMYvMOV8foDC5qA/ATUH71TQezyu6vZYGyC6bKKI3XH327xk5JEVdkOiAyS2W8zappUEdMXS
 BG7VfxtCG97YyLxMP4fj3OZAMU216nwfenYugTvRoMWOPBZLVbXlByCkGbMhwgBZmBwy/BgU
 XpaGO7wZUsn5VNPlWDuF7pNjOF0mEjTBwr7HPjG8vhu6pLGDFb9dFvPGALXBgzlxMtoeDnoz
 us=
IronPort-HdrOrdr: A9a23:hX3n/qiLvUrX15STy1h7W7HC/3BQXtYji2hC6mlwRA09TySZ//
 rBoB19726StN9xYgBFpTnuAsm9qB/nmaKdgrNhWItKPjOW21dARbsKheCJrgEIcxeOkNK1vp
 0AT0ERMrLN5CBB/KTH3DU=
X-Talos-CUID: =?us-ascii?q?9a23=3AW/SzmGvlW7FfYPdEVoIKhsme6IsANUbt9ij1fna?=
 =?us-ascii?q?3Jnh5FfqIEF2S37tdxp8=3D?=
X-Talos-MUID: 9a23:94ORSwa7aiZFIOBT7x23qz1kbexSx4+rCQMX0q4vtvO0HHkl
X-IronPort-AV: E=Sophos;i="6.05,707,1701147600"; 
   d="scan'208";a="128982911"
From: Andrew Cooper <andrew.cooper3@citrix.com>
To: Xen-devel <xen-devel@lists.xenproject.org>
CC: Andrew Cooper <andrew.cooper3@citrix.com>, Jan Beulich
	<JBeulich@suse.com>, =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?=
	<roger.pau@citrix.com>, Wei Liu <wl@xen.org>
Subject: [PATCH] x86/boot: Add braces in reloc.c
Date: Tue, 30 Jan 2024 14:48:38 +0000
Message-ID: <20240130144838.4119329-1-andrew.cooper3@citrix.com>
X-Mailer: git-send-email 2.30.2
MIME-Version: 1.0
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit

107 lines is an unreasonably large switch statement to live inside a
brace-less for loop.  Drop the comment that's clumsily trying to cover the
fact that this logic has wrong-looking indentation.

No functional change.

Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
---
CC: Jan Beulich <JBeulich@suse.com>
CC: Roger Pau Monné <roger.pau@citrix.com>
CC: Wei Liu <wl@xen.org>
---
 xen/arch/x86/boot/reloc.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/xen/arch/x86/boot/reloc.c b/xen/arch/x86/boot/reloc.c
index 77fdb2be0573..4033557481e8 100644
--- a/xen/arch/x86/boot/reloc.c
+++ b/xen/arch/x86/boot/reloc.c
@@ -230,6 +230,7 @@ static multiboot_info_t *mbi2_reloc(uint32_t mbi_in, uint32_t video_out)
     /* Put all needed data into mbi_out. */
     for ( tag = _p(ptr); (u32)tag - mbi_in < mbi_fix->total_size;
           tag = _p(ALIGN_UP((u32)tag + tag->size, MULTIBOOT2_TAG_ALIGN)) )
+    {
         switch ( tag->type )
         {
         case MULTIBOOT2_TAG_TYPE_BOOT_LOADER_NAME:
@@ -332,11 +333,12 @@ static multiboot_info_t *mbi2_reloc(uint32_t mbi_in, uint32_t video_out)
 #endif /* CONFIG_VIDEO */
 
         case MULTIBOOT2_TAG_TYPE_END:
-            goto end; /* Cannot "break;" here. */
+            goto end;
 
         default:
             break;
         }
+    }
 
  end:
 

base-commit: 4a7e71aa085170f1a13976507c8e248f8715f116
-- 
2.30.2



From xen-devel-bounces@lists.xenproject.org Tue Jan 30 14:51:13 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 30 Jan 2024 14:51:13 +0000
Received: from list by lists.xenproject.org with outflank-mailman.673489.1047836 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUpSB-0005g6-PX; Tue, 30 Jan 2024 14:51:11 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 673489.1047836; Tue, 30 Jan 2024 14:51:11 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUpSB-0005fz-MI; Tue, 30 Jan 2024 14:51:11 +0000
Received: by outflank-mailman (input) for mailman id 673489;
 Tue, 30 Jan 2024 14:51:10 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=5/A0=JI=cloud.com=kelly.choi@srs-se1.protection.inumbo.net>)
 id 1rUpSA-0005fk-7H
 for xen-devel@lists.xenproject.org; Tue, 30 Jan 2024 14:51:10 +0000
Received: from mail-ed1-x543.google.com (mail-ed1-x543.google.com
 [2a00:1450:4864:20::543])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id ffd56700-bf7e-11ee-8a43-1f161083a0e0;
 Tue, 30 Jan 2024 15:51:07 +0100 (CET)
Received: by mail-ed1-x543.google.com with SMTP id
 4fb4d7f45d1cf-55783b7b47aso4862725a12.0
 for <xen-devel@lists.xenproject.org>; Tue, 30 Jan 2024 06:51:07 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: ffd56700-bf7e-11ee-8a43-1f161083a0e0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1706626267; x=1707231067; darn=lists.xenproject.org;
        h=to:subject:message-id:date:from:mime-version:from:to:cc:subject
         :date:message-id:reply-to;
        bh=8lbpZAkXPHV7sHf+a2gF2ahdAgO1gk75VTx+qXCQrXo=;
        b=YiR9XvSdCUeoGJx6G/IRfcjTY/VgdIsIpzSbyWrTThThtcepfWJk+MHQ+PUuA4lx36
         l8Ml8BeXKNjvX4BIx7lUDLYO1LCnYzkkxXVAdIqs6iEGOcSh0/JOrAVwBpBPFySiD/mn
         ZlPHqoKGbfeuVi9ldg6AI3aiZoKR5k2X3Y784=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706626267; x=1707231067;
        h=to:subject:message-id:date:from:mime-version:x-gm-message-state
         :from:to:cc:subject:date:message-id:reply-to;
        bh=8lbpZAkXPHV7sHf+a2gF2ahdAgO1gk75VTx+qXCQrXo=;
        b=lcC703JDIP5aGV2i4Xe8WjcN0CQmWkTyQDmwAio6P7dcSxmA6Q/PkjqCW91OiCeMXZ
         JK4GVTQ5g2Sa0itQeMYcmIJcjItfcf2MdYSNKt4buRC8ilwO7kzBxFbcv82GqbcIqNYh
         Rt7NOCVbhKUF7kPxJXmBXoizgDcRrrnTWNEvVXUN+dkg0L48m6lACCoZIdnJBqqA8x+8
         ypRtOHmHlka/tEhkemHqgHjLrcWLh0/AqT+s/jbfZOd68uyUnkJhjkfWkCh2r0NTEMna
         NOdO1bVrhaV+z5hO/hnLYBPUAONe7l0PKU/sYkijbITvumuJ2c4dXARBBeDa9qZAuPsw
         yDrQ==
X-Gm-Message-State: AOJu0YzoEpBdyU9k/sfMhmmer8T2xpeGmmldoti7vy8Ibip6c1Jg11CS
	eiHAKn2E5sKnKB6pAaBUcKVSz/L04cS+LF7iJf2ZHfXfDPZIl42tb/Ovq/kZi/HX0ZAzJeriMcp
	lkjeCXnNXIGBJuYvGCyg2h4GlYc3ih5hYwkGu7tSPTgtpBdHYB/mHytpV
X-Google-Smtp-Source: AGHT+IH4ro+9W0neN2FBQqIi1aav1yRSbZCmCLC85qCEP+MeMkhyBVeb0rwnmYpMWHdCwNZ6lmoeFHPqxjM0WNAeXaQ=
X-Received: by 2002:a05:6402:13cc:b0:55e:f9c4:129 with SMTP id
 a12-20020a05640213cc00b0055ef9c40129mr3809575edx.40.1706626266695; Tue, 30
 Jan 2024 06:51:06 -0800 (PST)
MIME-Version: 1.0
From: Kelly Choi <kelly.choi@cloud.com>
Date: Tue, 30 Jan 2024 14:50:30 +0000
Message-ID: <CAO-mL=y4Li8i3Zu6egm4JfPuh39HzwqQy84V4+j8vkediM=2TA@mail.gmail.com>
Subject: [ANNOUNCE] Agenda for next community call
To: xen-devel@lists.xenproject.org, xen-users@lists.xenproject.org, 
	xen-announce@lists.xenproject.org
Content-Type: multipart/alternative; boundary="00000000000064289006102ae497"

--00000000000064289006102ae497
Content-Type: text/plain; charset="UTF-8"

Hi all,

Please add your proposed agenda items below.

https://cryptpad.fr/pad/#/2/pad/edit/mc3pbD9Wghw16Gq1MGyn7mbe/

If any action items are missing or have been resolved, please add/remove
them from the sheet.

*CALL LINK: https://meet.jit.si/XenProjectCommunityCall
<https://www.google.com/url?q=https://meet.jit.si/XenProjectCommunityCall&sa=D&source=calendar&ust=1699196661201312&usg=AOvVaw1FcogEsMjFSd1Pmi7V0cBc>*

*DATE: Thursday 1st February 2024*

*TIME: 1600 UTC (4 pm UK time)*
Note the following administrative conventions for the call:

* To allow time to switch between meetings, we plan on starting the
agenda at 16:05 UTC sharp.  Aim to join by 16:03 UTC if possible to allocate
time to sort out technical difficulties.

* If you want to be CC'ed please add or remove yourself from the
sign-up-sheet at
https://cryptpad.fr/pad/#/2/pad/edit/D9vGzihPxxAOe6RFPz0sRCf+/

== Dial-in Information ==
## Meeting time
16:00 - 17:00 British time
Further International meeting times:
https://www.timeanddate.com/worldclock/meetingdetails.html?year=2024&month=2&day=1&hour=16&min=0&sec=0&p1=1234&p2=37&p3=224&p4=179


## Dial in details
https://meet.jit.si/static/dialInInfo.html?room=XenProjectCommunityCall

Many thanks,
Kelly Choi

Community Manager
Xen Project

--00000000000064289006102ae497
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><div>Hi all,<br><p>Please add your proposed agenda items b=
elow.</p><p><a href=3D"https://cryptpad.fr/pad/#/2/pad/edit/mc3pbD9Wghw16Gq=
1MGyn7mbe/" target=3D"_blank">https://cryptpad.fr/pad/#/2/pad/edit/mc3pbD9W=
ghw16Gq1MGyn7mbe/</a><br></p><p>If any action items are missing or have bee=
n resolved, please add/remove them from the sheet.=C2=A0</p><p><b><span>CAL=
L</span>=C2=A0LINK:=C2=A0<a href=3D"https://www.google.com/url?q=3Dhttps://=
meet.jit.si/XenProjectCommunityCall&amp;sa=3DD&amp;source=3Dcalendar&amp;us=
t=3D1699196661201312&amp;usg=3DAOvVaw1FcogEsMjFSd1Pmi7V0cBc" target=3D"_bla=
nk">https://meet.jit.si/XenProjectCommunityCall</a></b></p><p><b>DATE: Thur=
sday 1st February 2024</b></p><p><b>TIME: 1600 UTC (4 pm UK time)</b></p>No=
te the following administrative conventions for the=C2=A0<span>call</span>:=
</div><div><br><div>* To allow time to switch between meetings, we plan on =
starting the<br>agenda at 16:05 UTC sharp.=C2=A0 Aim to join by 16:03 UTC i=
f possible to allocate<br>time to sort out technical difficulties.<br><br>*=
 If you want to be CC&#39;ed please add or remove yourself from the<br>sign=
-up-sheet at=C2=A0<a href=3D"https://cryptpad.fr/pad/#/2/pad/edit/D9vGzihPx=
xAOe6RFPz0sRCf+/" rel=3D"noreferrer" target=3D"_blank">https://cryptpad.fr/=
pad/#/2/pad/edit/D9vGzihPxxAOe6RFPz0sRCf+/</a><br><br>=3D=3D=C2=A0<span>Dia=
l</span>-in Information =3D=3D<br>## Meeting time<br>16:00 - 17:00 British =
time<br>Further International meeting times:<br><a href=3D"https://www.time=
anddate.com/worldclock/meetingdetails.html?year=3D2024&amp;month=3D2&amp;da=
y=3D1&amp;hour=3D16&amp;min=3D0&amp;sec=3D0&amp;p1=3D1234&amp;p2=3D37&amp;p=
3=3D224&amp;p4=3D179" target=3D"_blank">https://www.timeanddate.com/worldcl=
ock/meetingdetails.html?year=3D2024&amp;month=3D2&amp;day=3D1&amp;hour=3D16=
&amp;min=3D0&amp;sec=3D0&amp;p1=3D1234&amp;p2=3D37&amp;p3=3D224&amp;p4=3D17=
9</a>=C2=A0=C2=A0=C2=A0<br><br>##=C2=A0<span>Dial</span>=C2=A0in details<br=
><a href=3D"https://meet.jit.si/static/dialInInfo.html?room=3DXenProjectCom=
munityCall" rel=3D"noreferrer" target=3D"_blank">https://meet.jit.si/static=
/dialInInfo.html?room=3DXenProjectCommunityCall</a><div></div></div></div><=
div><br></div><div><div dir=3D"ltr" class=3D"gmail_signature" data-smartmai=
l=3D"gmail_signature"><div dir=3D"ltr"><div>Many thanks,</div><div>Kelly Ch=
oi</div><div><br></div><div><div style=3D"color:rgb(136,136,136)">Community=
 Manager</div><div style=3D"color:rgb(136,136,136)">Xen Project=C2=A0<br></=
div></div></div></div></div></div>

--00000000000064289006102ae497--


From xen-devel-bounces@lists.xenproject.org Tue Jan 30 14:57:53 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 30 Jan 2024 14:57:53 +0000
Received: from list by lists.xenproject.org with outflank-mailman.673527.1047861 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUpYZ-0007Sb-RC; Tue, 30 Jan 2024 14:57:47 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 673527.1047861; Tue, 30 Jan 2024 14:57:47 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUpYZ-0007SU-Od; Tue, 30 Jan 2024 14:57:47 +0000
Received: by outflank-mailman (input) for mailman id 673527;
 Tue, 30 Jan 2024 14:57:46 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=xawb=JI=gmail.com=oleksii.kurochko@srs-se1.protection.inumbo.net>)
 id 1rUpYY-0007FH-Kq
 for xen-devel@lists.xenproject.org; Tue, 30 Jan 2024 14:57:46 +0000
Received: from mail-ej1-x634.google.com (mail-ej1-x634.google.com
 [2a00:1450:4864:20::634])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id ed64b76e-bf7f-11ee-8a43-1f161083a0e0;
 Tue, 30 Jan 2024 15:57:46 +0100 (CET)
Received: by mail-ej1-x634.google.com with SMTP id
 a640c23a62f3a-a3122b70439so547765466b.3
 for <xen-devel@lists.xenproject.org>; Tue, 30 Jan 2024 06:57:46 -0800 (PST)
Received: from [192.168.206.239] ([94.75.70.14])
 by smtp.gmail.com with ESMTPSA id
 cu2-20020a170906ba8200b00a35757cbd9esm3331613ejd.4.2024.01.30.06.57.44
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 30 Jan 2024 06:57:45 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: ed64b76e-bf7f-11ee-8a43-1f161083a0e0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1706626665; x=1707231465; darn=lists.xenproject.org;
        h=mime-version:user-agent:content-transfer-encoding:references
         :in-reply-to:date:cc:to:from:subject:message-id:from:to:cc:subject
         :date:message-id:reply-to;
        bh=3/7JW6L2cOCYfZhizXaaaEuBXeXUt8b1aV6vYrwFjG0=;
        b=cNo2fvxQllZQolyjI21l9rkbCWz4genWxuG5YS/jmvDd0OoyElPDnP+IoX/FScaZLd
         U4XUHL8Ff//irwkyN9aDHe4IeGrZhtw6SaXHjF7tmsah6Q+kXjxcS7/71CnXP7POg0yY
         Gfd5F0dzpOkWJ4DdMUmP8+k30IVtSCdAeYlqqHtE8HhsZ3+mLPzwqdZUNfp1vMAQKqH0
         Hgz6d8TBxgrElehZYn0Tpszy6DZtUsQzWQEVA52IO5SJXGDquhEziM+yV5zNJp5ENCyj
         e698AUT92FZT+Lw3wUNwML5acppmjLVrDykgfZr3hibXKCeaHs0rjRy7MZhEVRQRWn0E
         apZw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706626665; x=1707231465;
        h=mime-version:user-agent:content-transfer-encoding:references
         :in-reply-to:date:cc:to:from:subject:message-id:x-gm-message-state
         :from:to:cc:subject:date:message-id:reply-to;
        bh=3/7JW6L2cOCYfZhizXaaaEuBXeXUt8b1aV6vYrwFjG0=;
        b=GD5zxXGoPwCEaPW8ToPCaSVLcH0uFKcanXFMowfToudWmV0EdM84v6Gpjj2o/HNO0Z
         sA3yj7OLMuGKnmH+fjew1QcwaO3mgSQxpMUkoFn81Nm81hRb7J0GYIYXlB5Japse98Py
         EOejbW8z+sU/ORAFAGhyU9Sf/J3E+1n+EZWB/wZgGITr1O4HdUFQhVwaD+DtS5q3Gy/c
         Chxvrhe02q8zLqW+itJZlELAQ98ZjWJdV73FyRYzuEsjyVpMEgKJsqdPqEkDzh0x6Wl2
         EkohRKqbxLp9gR23/PmtxpmWFp9tS9V8JgKgua7Bi35wy1VmOwlvgdvbKC9IC9iIYTtY
         RxPw==
X-Gm-Message-State: AOJu0YxfGrO+TbYmzA2iSYYv+ZJMSae2n+JwwSJVuQrxR+J3mRTMUp8K
	vtukpqIC1sz/gj0WE4S53CNNKwERnlH9TX+PGDnXua0EMZATopgc
X-Google-Smtp-Source: AGHT+IGlEO7X+RDZJa4IXzxoTTBftIvievzZTEAax6QUoq2b02G1gOm0CrtRj31sxQqiAURnCQ+SPw==
X-Received: by 2002:a17:906:3642:b0:a31:2119:90d7 with SMTP id r2-20020a170906364200b00a31211990d7mr7395736ejb.38.1706626665364;
        Tue, 30 Jan 2024 06:57:45 -0800 (PST)
Message-ID: <848bcb2d7e5357ca6d3672bef52ac57c5b1f7f95.camel@gmail.com>
Subject: Re: [PATCH v3 13/34] xen/riscv: introduce cmpxchg.h
From: Oleksii <oleksii.kurochko@gmail.com>
To: Jan Beulich <jbeulich@suse.com>
Cc: Alistair Francis <alistair.francis@wdc.com>, Bob Eshleman
 <bobbyeshleman@gmail.com>, Connor Davis <connojdavis@gmail.com>, Andrew
 Cooper <andrew.cooper3@citrix.com>, George Dunlap
 <george.dunlap@citrix.com>,  Julien Grall <julien@xen.org>, Stefano
 Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>, 
 xen-devel@lists.xenproject.org
Date: Tue, 30 Jan 2024 16:57:43 +0200
In-Reply-To: <8ee35a76-f3ef-4143-93ef-8e6089f82a80@suse.com>
References: <cover.1703255175.git.oleksii.kurochko@gmail.com>
	 <214bfd61c8ccf2a5b2c640b815ebfa6a705f6234.1703255175.git.oleksii.kurochko@gmail.com>
	 <8ee35a76-f3ef-4143-93ef-8e6089f82a80@suse.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: base64
User-Agent: Evolution 3.50.2 (3.50.2-1.fc39) 
MIME-Version: 1.0

T24gTW9uLCAyMDI0LTAxLTIyIGF0IDE3OjI3ICswMTAwLCBKYW4gQmV1bGljaCB3cm90ZToKPiA+
ICsjZGVmaW5lIF9feGNoZ19hY3F1aXJlKHB0ciwgbmV3LCBzaXplKSBcCj4gPiArKHsgXAo+ID4g
K8KgwqDCoCBfX3R5cGVvZl9fKHB0cikgcHRyX18gPSAocHRyKTsgXAo+ID4gK8KgwqDCoCBfX3R5
cGVvZl9fKG5ldykgbmV3X18gPSAobmV3KTsgXAo+ID4gK8KgwqDCoCBfX3R5cGVvZl9fKCoocHRy
KSkgcmV0X187IFwKPiA+ICvCoMKgwqAgc3dpdGNoIChzaXplKSBcCj4gPiArCXsgXAo+ID4gK8Kg
wqDCoCBjYXNlIDQ6IFwKPiA+ICvCoMKgwqDCoMKgwqDCoCBhc20gdm9sYXRpbGUoIFwKPiA+ICvC
oMKgwqDCoMKgwqDCoMKgwqDCoMKgICIJYW1vc3dhcC53ICUwLCAlMiwgJTFcbiIgXAo+ID4gK8Kg
wqDCoMKgwqDCoMKgwqDCoMKgwqAgUklTQ1ZfQUNRVUlSRV9CQVJSSUVSIFwKPiA+ICvCoMKgwqDC
oMKgwqDCoMKgwqDCoMKgIDogIj1yIiAocmV0X18pLCAiK0EiICgqcHRyX18pIFwKPiA+ICvCoMKg
wqDCoMKgwqDCoMKgwqDCoMKgIDogInIiIChuZXdfXykgXAo+ID4gK8KgwqDCoMKgwqDCoMKgwqDC
oMKgwqAgOiAibWVtb3J5IiApOyBcCj4gPiArwqDCoMKgwqDCoMKgwqAgYnJlYWs7IFwKPiA+ICvC
oMKgwqAgY2FzZSA4OiBcCj4gPiArwqDCoMKgwqDCoMKgwqAgYXNtIHZvbGF0aWxlKCBcCj4gPiAr
wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAiCWFtb3N3YXAuZCAlMCwgJTIsICUxXG4iIFwKPiA+ICvC
oMKgwqDCoMKgwqDCoMKgwqDCoMKgIFJJU0NWX0FDUVVJUkVfQkFSUklFUiBcCj4gPiArwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoCA6ICI9ciIgKHJldF9fKSwgIitBIiAoKnB0cl9fKSBcCj4gPiArwqDC
oMKgwqDCoMKgwqDCoMKgwqDCoCA6ICJyIiAobmV3X18pIFwKPiA+ICvCoMKgwqDCoMKgwqDCoMKg
wqDCoMKgIDogIm1lbW9yeSIgKTsgXAo+ID4gK8KgwqDCoMKgwqDCoMKgIGJyZWFrOyBcCj4gPiAr
wqDCoMKgIGRlZmF1bHQ6IFwKPiA+ICvCoMKgwqDCoMKgwqDCoCBBU1NFUlRfVU5SRUFDSEFCTEUo
KTsgXAo+ID4gK8KgwqDCoCB9IFwKPiA+ICvCoMKgwqAgcmV0X187IFwKPiA+ICt9KQo+IAo+IElm
IEknbSBub3QgbWlzdGFrZW4gdGhpcyBkaWZmZXJzIGZyb20gX194Y2hnX3JlbGF4ZWQoKSBvbmx5
IGluIHRoZQo+IHVzZQo+IG9mIFJJU0NWX0FDUVVJUkVfQkFSUklFUiwgYW5kIC4uLgo+IAo+ID4g
KyNkZWZpbmUgeGNoZ19hY3F1aXJlKHB0ciwgeCkgXAo+ID4gKyh7IFwKPiA+ICvCoMKgwqAgX190
eXBlb2ZfXygqKHB0cikpIHhfID0gKHgpOyBcCj4gPiArwqDCoMKgIChfX3R5cGVvZl9fKCoocHRy
KSkpIF9feGNoZ19hY3F1aXJlKChwdHIpLCB4XywKPiA+IHNpemVvZigqKHB0cikpKTsgXAo+ID4g
K30pCj4gPiArCj4gPiArI2RlZmluZSBfX3hjaGdfcmVsZWFzZShwdHIsIG5ldywgc2l6ZSkgXAo+
ID4gKyh7IFwKPiA+ICvCoMKgwqAgX190eXBlb2ZfXyhwdHIpIHB0cl9fID0gKHB0cik7IFwKPiA+
ICvCoMKgwqAgX190eXBlb2ZfXyhuZXcpIG5ld19fID0gKG5ldyk7IFwKPiA+ICvCoMKgwqAgX190
eXBlb2ZfXygqKHB0cikpIHJldF9fOyBcCj4gPiArwqDCoMKgIHN3aXRjaCAoc2l6ZSkgXAo+ID4g
Kwl7IFwKPiA+ICvCoMKgwqAgY2FzZSA0OiBcCj4gPiArwqDCoMKgwqDCoMKgwqAgYXNtIHZvbGF0
aWxlICggXAo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgUklTQ1ZfUkVMRUFTRV9CQVJSSUVS
IFwKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICIJYW1vc3dhcC53ICUwLCAlMiwgJTFcbiIg
XAo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgOiAiPXIiIChyZXRfXyksICIrQSIgKCpwdHJf
XykgXAo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgOiAiciIgKG5ld19fKSBcCj4gPiArwqDC
oMKgwqDCoMKgwqDCoMKgwqDCoCA6ICJtZW1vcnkiKTsgXAo+ID4gK8KgwqDCoMKgwqDCoMKgIGJy
ZWFrOyBcCj4gPiArwqDCoMKgIGNhc2UgODogXAo+ID4gK8KgwqDCoMKgwqDCoMKgIGFzbSB2b2xh
dGlsZSAoIFwKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFJJU0NWX1JFTEVBU0VfQkFSUklF
UiBcCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAiCWFtb3N3YXAuZCAlMCwgJTIsICUxXG4i
IFwKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDogIj1yIiAocmV0X18pLCAiK0EiICgqcHRy
X18pIFwKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDogInIiIChuZXdfXykgXAo+ID4gK8Kg
wqDCoMKgwqDCoMKgwqDCoMKgwqAgOiAibWVtb3J5Iik7IFwKPiA+ICvCoMKgwqDCoMKgwqDCoCBi
cmVhazsgXAo+ID4gK8KgwqDCoCBkZWZhdWx0OiBcCj4gPiArwqDCoMKgwqDCoMKgwqAgQVNTRVJU
X1VOUkVBQ0hBQkxFKCk7IFwKPiA+ICvCoMKgwqAgfSBcCj4gPiArwqDCoMKgIHJldF9fOyBcCj4g
PiArfSkKPiAKPiB0aGlzIG9ubHkgaW4gdGhlIHVzZSBvZiBSSVNDVl9SRUxFQVNFX0JBUlJJRVIu
IElmIHNvIHRoZXkgbGlrZWx5IHdhbnQKPiBmb2xkaW5nLCB0byBsaW1pdCByZWR1bmRhbmN5IGFu
ZCBtYWtlIGV2ZW50dWFsIHVwZGF0aW5nIGVhc2llci4gKFNhbWUKPiBmb3IgdGhlIGNtcHhjaGcg
aGVscGVyIGZ1cnRoZXIgZG93biwgYXMgaXQgc2VlbXMuKQpBbHNvIHRoZSBkaWZmZXJlbmNlIGlz
IGluIHdoZXJlIHRvIHBsYWNlIGJhcnJpZXIgYmVmb3JlIG9yIGFmdGVyIGF0b21pYwppbnN0cnVj
dGlvbi4gSSBhbSBub3Qgc3VyZSB0aGF0IHdlIGNhbiBlYXNpbHkgZm9sZGVkIHRoaXMgbWFjcm9z
LgoKfiBPbGVrc2lpCg==



From xen-devel-bounces@lists.xenproject.org Tue Jan 30 15:00:21 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 30 Jan 2024 15:00:21 +0000
Received: from list by lists.xenproject.org with outflank-mailman.673533.1047871 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUpb2-0001Tt-C1; Tue, 30 Jan 2024 15:00:20 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 673533.1047871; Tue, 30 Jan 2024 15:00:20 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUpb2-0001Tm-9A; Tue, 30 Jan 2024 15:00:20 +0000
Received: by outflank-mailman (input) for mailman id 673533;
 Tue, 30 Jan 2024 15:00:18 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=cYm+=JI=amd.com=Stewart.Hildebrand@srs-se1.protection.inumbo.net>)
 id 1rUpb0-0001Tb-SI
 for xen-devel@lists.xenproject.org; Tue, 30 Jan 2024 15:00:18 +0000
Received: from NAM12-DM6-obe.outbound.protection.outlook.com
 (mail-dm6nam12on20600.outbound.protection.outlook.com
 [2a01:111:f403:2417::600])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 4682e6b6-bf80-11ee-98f5-efadbce2ee36;
 Tue, 30 Jan 2024 16:00:16 +0100 (CET)
Received: from SJ0PR03CA0107.namprd03.prod.outlook.com (2603:10b6:a03:333::22)
 by IA0PR12MB8254.namprd12.prod.outlook.com (2603:10b6:208:408::8)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7228.32; Tue, 30 Jan
 2024 15:00:12 +0000
Received: from SJ1PEPF00001CDE.namprd05.prod.outlook.com
 (2603:10b6:a03:333:cafe::92) by SJ0PR03CA0107.outlook.office365.com
 (2603:10b6:a03:333::22) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7228.34 via Frontend
 Transport; Tue, 30 Jan 2024 15:00:12 +0000
Received: from SATLEXMB04.amd.com (165.204.84.17) by
 SJ1PEPF00001CDE.mail.protection.outlook.com (10.167.242.6) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.7249.19 via Frontend Transport; Tue, 30 Jan 2024 15:00:12 +0000
Received: from SATLEXMB05.amd.com (10.181.40.146) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.34; Tue, 30 Jan
 2024 09:00:07 -0600
Received: from SATLEXMB04.amd.com (10.181.40.145) by SATLEXMB05.amd.com
 (10.181.40.146) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.34; Tue, 30 Jan
 2024 08:59:51 -0600
Received: from [172.23.114.18] (10.180.168.240) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server id 15.1.2507.34 via Frontend
 Transport; Tue, 30 Jan 2024 08:59:50 -0600
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 4682e6b6-bf80-11ee-98f5-efadbce2ee36
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=aLcxriRrHAsu7JlCqyVU2f3MCOsb4JOI4S5RV6G05W9U8p6UlusI+4t08FacYwZLU1xWmJOZWoayxQR1+7rISzm/90PpuGAh1GjyYxNZN/H4fz0wrs2JRSJqb9hGFr3ygIlkK+/p1585y3YJbn6Va/cNuVQv17QPIOzRZYhIodlhNhIFz8eWQR7lPT+PCebbR0feotGUolpvp0qikvyICn+RCl7iJd1YE0QIo0GoYNUMBEfqqHoe10hGb6Gk+x3Nkzg8m3CLfba7kEtxJuEsMTynkn2nVIAr7D1wta3RIiVc5FWsnc8dhevXX5QKayONTAiG8XvFrpN/P9kMvd0bSQ==
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=u6ON6/VbrVMQALM5lG/NOPJDuBJFzRAmmCfxKkR2QkQ=;
 b=JKT5/6eI5KOKJnW8Pr/R5Hc7JCULN1Ub1IPuqeF2axd7hq1DaBOaVjMhij6SsKWS4RzOGt+mGW4tadhKQfajtOdIjXbfjy38BZfJstILLmv72B9Hx7oaq+otXQqE1EFaWZGb5D1RT855DiI0IFobgBeTUePc/0mBL/dci3OfHwv/KcuSTS3+bG4JqjSCIZurZSgrFGamdSADVjJjZgDeH+jtsyUkK+sDibEJZjEr6hr0lWWi1tK2mDYLlnpJWO3aHDzlC1fGHYCAvnwsbxnrlwJmj7rE7VRUXP5jUHTi4OBB4LweFF0weFsLAfz1GD84N4c3oNDq22t9V6LIuqQYWQ==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=citrix.com 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)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=u6ON6/VbrVMQALM5lG/NOPJDuBJFzRAmmCfxKkR2QkQ=;
 b=iTvfJhef4nyolUJ4I/Ljt1X+3QXaX7f22I3+BbpSxqfk96XPLjggakbGq//7+L6K4K6AbJgmDQ5Y6rYvVUY5QoRLY4SUbogqBwKU2Ko2ZuaR8gQqOzMjxd1WGfQQIgOQy8ZIsiBBhdhoMkSll/Fhw+4eSNkzLQzKbRITBlv1OPw=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C
Message-ID: <3c1023c4-25fb-41f1-83eb-03cbc1c3720e@amd.com>
Date: Tue, 30 Jan 2024 09:59:49 -0500
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v12.2 01/15] vpci: use per-domain PCI lock to protect vpci
 structure
Content-Language: en-US
From: Stewart Hildebrand <stewart.hildebrand@amd.com>
To: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>, Jan Beulich
	<jbeulich@suse.com>
CC: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>, Andrew Cooper
	<andrew.cooper3@citrix.com>, Wei Liu <wl@xen.org>, George Dunlap
	<george.dunlap@citrix.com>, Julien Grall <julien@xen.org>, Stefano Stabellini
	<sstabellini@kernel.org>, Jun Nakajima <jun.nakajima@intel.com>, Kevin Tian
	<kevin.tian@intel.com>, Paul Durrant <paul@xen.org>, Volodymyr Babchuk
	<volodymyr_babchuk@epam.com>, <xen-devel@lists.xenproject.org>
References: <20240109215145.430207-1-stewart.hildebrand@amd.com>
 <20240109215145.430207-2-stewart.hildebrand@amd.com>
 <20240115194309.45683-1-stewart.hildebrand@amd.com>
 <715e40c9-1776-4677-9565-dac1565a2aa8@suse.com> <Za_WGzS14Eqt8yZF@macbook>
 <2df1ffd4-827f-4e28-9547-293a60f590b0@amd.com>
In-Reply-To: <2df1ffd4-827f-4e28-9547-293a60f590b0@amd.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: SJ1PEPF00001CDE:EE_|IA0PR12MB8254:EE_
X-MS-Office365-Filtering-Correlation-Id: b7096efc-e4ab-4d92-3939-08dc21a428cc
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam: BCL:0;
X-Microsoft-Antispam-Message-Info:
	7OSnUCt0OdrMp6jYN8DHfP9DQhfROT1wMTiCosr54+1e2GrdWQxuPfyrQk94UbSgHHazAuZD6otpd9RlxHk5LrlFmHFKmfib58z53oQ2Kkm9lV39uukb7oo5kIpZ4oOKpzu/e0coJqzQWYV9GTClF0H0fZgQ3J+jc/MP2+c2cZRPihrvhJMjxnL//2o70YrgCuFBrIs93wOt2ZXl3DvR2Xbh/8D2LoiQKtKJ6HwWu6fNKtnkdheyXFVLuw3JDYJepU0IJ4jy2dGdvcWduPv/A2vPipUPfsfRTq/2AHijfSRQFdJSNUuN9H4qQ2GvyrKWluPRbYTgRHhsXLjiS+KMFUeKK4yOcV9HmzBilh4wpK78vRuSfB5f9D+Hv9WBCOIPqvdb85qvGxvmDNySdFYPRAHLS+JmNVaK+QH2HCnVxXw22pb/EcZy65GvrqofS/p+kr9sA8FTLmUQ46bfrXMQldqw7ghJGmm5GEPEZOqmR1iCQ6nI/XbWoM7vY1tPhR62EI/DoAOnkp1JPc5slVawHBB51Bno9bTYOmOLOuPv/yzuVHcan/XSco6AHNGxGoZYmSvmD7IucjdYJINYrtL+XupvqN7K0u18mvQnNPx8TJlInh35FL5mf04209wkGWHFAgQgz8gMwWSh1yZSCAvi2LhdKZ6gsqL/1oIHrgXKXSdiis4/MGrOqPs1PSN9Utz+//soofFFrKEplxEjX5theh8ytxDlKT3roS2uDXEjiPWFAQm3Z7dkNUFUBlubzAPP1pPAnqpnqOwsPqtqlASGGtN5xA46jStAY7cU0ycJzF8=
X-Forefront-Antispam-Report:
	CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230031)(4636009)(346002)(396003)(136003)(376002)(39860400002)(230922051799003)(186009)(64100799003)(1800799012)(451199024)(82310400011)(36840700001)(46966006)(40470700004)(41300700001)(31696002)(478600001)(86362001)(2616005)(54906003)(53546011)(5660300002)(44832011)(2906002)(7416002)(8936002)(4326008)(110136005)(16576012)(8676002)(70586007)(316002)(36860700001)(70206006)(31686004)(83380400001)(47076005)(426003)(356005)(26005)(336012)(36756003)(81166007)(40480700001)(82740400003)(40460700003)(36900700001)(43740500002);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Jan 2024 15:00:12.1187
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: b7096efc-e4ab-4d92-3939-08dc21a428cc
X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com]
X-MS-Exchange-CrossTenant-AuthSource:
	SJ1PEPF00001CDE.namprd05.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA0PR12MB8254

On 1/24/24 00:00, Stewart Hildebrand wrote:
> On 1/23/24 10:07, Roger Pau Monné wrote:
>> On Tue, Jan 23, 2024 at 03:32:12PM +0100, Jan Beulich wrote:
>>> On 15.01.2024 20:43, Stewart Hildebrand wrote:
>>>> @@ -2888,6 +2888,8 @@ int allocate_and_map_msi_pirq(struct domain *d, int index, int *pirq_p,
>>>>  {
>>>>      int irq, pirq, ret;
>>>>  
>>>> +    ASSERT(pcidevs_locked() || rw_is_locked(&d->pci_lock));
>>>
>>> If either lock is sufficient to hold here, ...
>>>
>>>> --- a/xen/arch/x86/physdev.c
>>>> +++ b/xen/arch/x86/physdev.c
>>>> @@ -123,7 +123,9 @@ int physdev_map_pirq(domid_t domid, int type, int *index, int *pirq_p,
>>>>  
>>>>      case MAP_PIRQ_TYPE_MSI:
>>>>      case MAP_PIRQ_TYPE_MULTI_MSI:
>>>> +        pcidevs_lock();
>>>>          ret = allocate_and_map_msi_pirq(d, *index, pirq_p, type, msi);
>>>> +        pcidevs_unlock();
>>>>          break;
>>>
>>> ... why is it the global lock that's being acquired here?
>>>
>>
>> IIRC (Stewart can further comment) this is done holding the pcidevs
>> lock to keep the path unmodified, as there's no need to hold the
>> per-domain rwlock.
>>
> 
> Although allocate_and_map_msi_pirq() was itself acquiring the global pcidevs_lock() before this patch, we could just as well use read_lock(&d->pci_lock) here instead now. It seems like a good optimization to make, so if there aren't any objections I'll change it to read_lock(&d->pci_lock).
> 

Actually, I take this back. As mentioned in the cover letter of this series, and has been reiterated in recent discussions, the goal with this is to keep existing (non-vPCI) code paths as unmodified as possible. So I'll keep it as pcidevs_lock() here.


From xen-devel-bounces@lists.xenproject.org Tue Jan 30 15:01:22 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 30 Jan 2024 15:01:22 +0000
Received: from list by lists.xenproject.org with outflank-mailman.673534.1047882 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUpc1-00023b-LY; Tue, 30 Jan 2024 15:01:21 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 673534.1047882; Tue, 30 Jan 2024 15:01:21 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUpc1-00023U-IE; Tue, 30 Jan 2024 15:01:21 +0000
Received: by outflank-mailman (input) for mailman id 673534;
 Tue, 30 Jan 2024 15:01:20 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=BUgQ=JI=cloud.com=roger.pau@srs-se1.protection.inumbo.net>)
 id 1rUpc0-00023K-3X
 for xen-devel@lists.xenproject.org; Tue, 30 Jan 2024 15:01:20 +0000
Received: from mail-wm1-x335.google.com (mail-wm1-x335.google.com
 [2a00:1450:4864:20::335])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 6c589bda-bf80-11ee-8a43-1f161083a0e0;
 Tue, 30 Jan 2024 16:01:19 +0100 (CET)
Received: by mail-wm1-x335.google.com with SMTP id
 5b1f17b1804b1-40ef3f351d2so13829465e9.1
 for <xen-devel@lists.xenproject.org>; Tue, 30 Jan 2024 07:01:19 -0800 (PST)
Received: from localhost ([213.195.118.74]) by smtp.gmail.com with ESMTPSA id
 ex8-20020a056000248800b0033af81d6dc8sm2372534wrb.87.2024.01.30.07.01.18
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 30 Jan 2024 07:01:18 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 6c589bda-bf80-11ee-8a43-1f161083a0e0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1706626878; x=1707231678; darn=lists.xenproject.org;
        h=in-reply-to:content-transfer-encoding:content-disposition
         :mime-version:references:message-id:subject:cc:to:from:date:from:to
         :cc:subject:date:message-id:reply-to;
        bh=Wugvr1Zk+TrZrcEP0DGARJNvrmslIQ2A3EAIZaKBGDo=;
        b=HWBUm+hzPLLRZupXBtsL0xF4gzXpNR4sVdFGh9cx7bmACq3unCUM/trkxgRFeDuh/X
         ZkDT4d9T8c50eZOIxFZBbF9hCcZL3hJiZl+o8xeO878h8dPNnsoabOBGaEM/+9sqAfUe
         Bo3v4b5FH0nERuKqkzI5Nesx/t08SRBmMRix8=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706626878; x=1707231678;
        h=in-reply-to:content-transfer-encoding:content-disposition
         :mime-version:references:message-id:subject:cc:to:from:date
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=Wugvr1Zk+TrZrcEP0DGARJNvrmslIQ2A3EAIZaKBGDo=;
        b=kRKh49roji9Q9l7A2jZXXu0ngI6Fk8gb6xdYRQAdC97vs7ykHabMxTEc4/ahI/r/cq
         i3ZYLsjZzn5BIml0lciRrkd8ZMVreUZI2kTDtMQ3cgLyZYG8hyexTreOVCzcsZH3VJCP
         f5ZJaz0hKduxMso1t4rB4Z6XTA+AboFk7TiKP0Rjgt/AQVaEpSySUo6m4+m9AOpSyKA5
         mC5f5sNY235bASKc7yuU49E6sLd4wVM8s2Rppo7oJPYDjI5OnS7axU2pXDZvqbGAAYKa
         sKl71hi8YOhuvf1dht0xhFCZ2oQF4YIAuKd5WK/nuHwh/lXicXepPy4lqfuiKhDjJoI2
         Blnw==
X-Gm-Message-State: AOJu0YyAyK4kqiwaI3l5wjNCM3VZyj5vOQczKFgU6X2d6A3kuFujq5cj
	5dHYEBJvBHVWbMRA59xdSWSzMWCyyObQfXOtpgvniqWvnaLQ2D2lJyEFgKLDDYk=
X-Google-Smtp-Source: AGHT+IFn0KbRvCiTUxTBRtk91iX5tU1uLWpJ2Mc2tMcavPfK/pLGlNgnD3nA/Il81IVc7oMwU7oNjA==
X-Received: by 2002:adf:e452:0:b0:33a:e4a9:a21f with SMTP id t18-20020adfe452000000b0033ae4a9a21fmr1826024wrm.10.1706626878553;
        Tue, 30 Jan 2024 07:01:18 -0800 (PST)
Date: Tue, 30 Jan 2024 16:01:16 +0100
From: Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
To: Jan Beulich <jbeulich@suse.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>, Wei Liu <wl@xen.org>,
	xen-devel@lists.xenproject.org
Subject: Re: [PATCH 1/3] x86/intel: expose IPRED_CTRL to guests
Message-ID: <ZbkPPG2Wcmw4zKbp@macbook>
References: <20240130091400.50622-1-roger.pau@citrix.com>
 <20240130091400.50622-2-roger.pau@citrix.com>
 <3959f556-6177-473e-a052-bec11b5a8a9b@suse.com>
 <ZbjmS2oLAV7Fyqdn@macbook>
 <0ad880e8-0f2b-4519-971e-c98b3411fba5@suse.com>
 <ZbkJH6qhCa1GjTES@macbook>
 <9f117de7-a729-46d8-ad09-30b1f2bb7580@suse.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <9f117de7-a729-46d8-ad09-30b1f2bb7580@suse.com>

On Tue, Jan 30, 2024 at 03:47:37PM +0100, Jan Beulich wrote:
> On 30.01.2024 15:35, Roger Pau Monné wrote:
> > On Tue, Jan 30, 2024 at 01:59:14PM +0100, Jan Beulich wrote:
> >> On 30.01.2024 13:06, Roger Pau Monné wrote:
> >>> On Tue, Jan 30, 2024 at 11:57:17AM +0100, Jan Beulich wrote:
> >>>> On 30.01.2024 10:13, Roger Pau Monne wrote:
> >>>>> The CPUID feature bit signals the presence of the IPRED_DIS_{U,S} controls in
> >>>>> SPEC_CTRL MSR.
> >>>>>
> >>>>> Note that those controls are not used by the hypervisor.
> >>>>
> >>>> Despite this, ...
> >>>>
> >>>>> --- a/xen/arch/x86/msr.c
> >>>>> +++ b/xen/arch/x86/msr.c
> >>>>> @@ -324,6 +324,9 @@ uint64_t msr_spec_ctrl_valid_bits(const struct cpu_policy *cp)
> >>>>>      return (SPEC_CTRL_IBRS | SPEC_CTRL_STIBP |
> >>>>>              (ssbd       ? SPEC_CTRL_SSBD       : 0) |
> >>>>>              (psfd       ? SPEC_CTRL_PSFD       : 0) |
> >>>>> +            (cp->feat.ipred_ctrl ? (SPEC_CTRL_IPRED_DIS_U |
> >>>>> +                                    SPEC_CTRL_IPRED_DIS_S)
> >>>>> +                                 : 0) |
> >>>>>              0);
> >>>>>  }
> >>>>
> >>>> ... if I'm not mistaken exposing SPEC_CTRL bits to guests is independent
> >>>> of whether we write SPEC_CTRL on entry to Xen. Therefore I think in the
> >>>> description it wants clarifying why it is acceptable to run Xen with the
> >>>> guest chosen settings for at least the DIS_S bit (assuming that it is
> >>>> okay to do so). Likely (didn't look there yet) also applicable to the
> >>>> further two patches.
> >>>
> >>> "The added feature is made dependent on IBRSB, which ensures it will
> >>> only be exposed if X86_FEATURE_SC_MSR_{PV,HVM} is available, and that
> >>> ensures the value of SPEC_CTRL will get context switched on exit/entry
> >>> to guest."
> >>>
> >>> Would adding the above to the commit message clarify the intended
> >>> implementation?
> >>
> >> It would improve things, at least hinting towards there being a connection
> >> between exposure and updating on entry to Xen. I'd like to ask though to
> >> avoid "context switch" when talking about entry from guest context. While
> >> in a way technically correct, our normal meaning of the term is the
> >> process of switching vCPU-s out/in on a pCPU.
> > 
> > "The added feature is made dependent on IBRSB, which ensures it will
> > only be exposed if X86_FEATURE_SC_MSR_{PV,HVM} is available, and that
> > ensures the value of SPEC_CTRL will get toggled between guest and Xen
> > values on exit/entry to guest."
> > 
> > But I wonder, we already allow guests the play with other SPEC_CTRL
> > bits, and Xen toggles the SPEC_CTRL values as required on entry/exit
> > to Xen, so I'm unsure why adding more bits needs so much
> > justification.
> 
> Well, yes, I'm sorry, it was me forgetting the open-coded effect
> SC_MSR_{PV,HVM} has on exposing of the MSR. I guess I'd be happy with
> extending the last sentence a little, maybe "Note that those controls
> are not used by the hypervisor, and they're cleared on entry to Xen."
> If you're okay with that, I'd be happy to adjust while committing

Sure.

> (and assuming no other concerns are raised):
> Reviewed-by: Jan Beulich <jbeulich@suse.com>
> for all three patches.

Thanks.


From xen-devel-bounces@lists.xenproject.org Tue Jan 30 15:02:30 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 30 Jan 2024 15:02:30 +0000
Received: from list by lists.xenproject.org with outflank-mailman.673537.1047891 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUpd6-0002dO-UY; Tue, 30 Jan 2024 15:02:28 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 673537.1047891; Tue, 30 Jan 2024 15:02:28 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUpd6-0002dH-Rw; Tue, 30 Jan 2024 15:02:28 +0000
Received: by outflank-mailman (input) for mailman id 673537;
 Tue, 30 Jan 2024 15:02:27 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=BUgQ=JI=cloud.com=roger.pau@srs-se1.protection.inumbo.net>)
 id 1rUpd5-0002d7-LO
 for xen-devel@lists.xenproject.org; Tue, 30 Jan 2024 15:02:27 +0000
Received: from mail-wm1-x334.google.com (mail-wm1-x334.google.com
 [2a00:1450:4864:20::334])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 93a339d9-bf80-11ee-98f5-efadbce2ee36;
 Tue, 30 Jan 2024 16:02:25 +0100 (CET)
Received: by mail-wm1-x334.google.com with SMTP id
 5b1f17b1804b1-40ef64d8955so19837535e9.3
 for <xen-devel@lists.xenproject.org>; Tue, 30 Jan 2024 07:02:25 -0800 (PST)
Received: from localhost ([213.195.118.74]) by smtp.gmail.com with ESMTPSA id
 n21-20020a05600c4f9500b0040efb503d58sm4444424wmq.28.2024.01.30.07.02.24
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 30 Jan 2024 07:02:24 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 93a339d9-bf80-11ee-98f5-efadbce2ee36
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1706626944; x=1707231744; darn=lists.xenproject.org;
        h=in-reply-to:content-transfer-encoding:content-disposition
         :mime-version:references:message-id:subject:cc:to:from:date:from:to
         :cc:subject:date:message-id:reply-to;
        bh=Nvr2p5Ov0mwYAE6lMhzUJeKVmyCqEFoaHrSzCAcpdYU=;
        b=QivncVq1HP5MkrSKoXkoKolcApcpVL775B9/wx9aZ1X8YfnFF0Dmv8jHXiS71sL/AO
         ICXpaPu6NFwsTl1cqpoEBwM8zZbLS4CcpuKvzrzRNYa69BhMtiHJx+fHN9tRSw8kaG5I
         fp0KASQfl4dLH90MAYteww2BxRW5ANBYzWyTI=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706626944; x=1707231744;
        h=in-reply-to:content-transfer-encoding:content-disposition
         :mime-version:references:message-id:subject:cc:to:from:date
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=Nvr2p5Ov0mwYAE6lMhzUJeKVmyCqEFoaHrSzCAcpdYU=;
        b=qipBhFQfBFnc/ue0gGUjIfd/wVpk0MlOVoKK8gF9Pu8vT7OpZ7P6aZeYWCSOMFdekI
         A4FXurmd9thNp+e9vsxE7ueZAW94TuioDlYhxrag78L0Jv8LltTFEX3ISnXNtBMh7emy
         jsJTsXYpPdTmuMzsqG+aPNqj03JyRi5XRMYA8/f/ryaK90l8eV8NmgNVo1icxB9+5i5A
         nXSlB8y3X9jY8PIYonbYwYyhqTVMTl8PE54XNFlU2bcFW1a/BYnlawsqsINjTXr5PZ/3
         ttqlxtXkCF+v1c0mLBcJD5Uq5/R/xMDaGMPzFqfUr54e2lrhgCNzqdasXNOAeBpV0WSr
         gK0A==
X-Gm-Message-State: AOJu0Yyf8JHikQLM4syS0nNGROzKLYThutOeBnJIRW8eEvZvJp6zzCiY
	114FkeUo70B+kQSph7IQzUcSXpgvKvnltFW2ZoH+UzgFtTWVe/GjsMdZuv3JohQ=
X-Google-Smtp-Source: AGHT+IGjwqKJxlsXNLfuXGS5gZcoNxMFyxqmlMmTPQN8ryzVCK93VkRFw0AYXDhFJKACduVk51YCYA==
X-Received: by 2002:a05:600c:46d0:b0:40f:afdc:7477 with SMTP id q16-20020a05600c46d000b0040fafdc7477mr538797wmo.20.1706626944471;
        Tue, 30 Jan 2024 07:02:24 -0800 (PST)
Date: Tue, 30 Jan 2024 16:02:23 +0100
From: Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
To: Jan Beulich <jbeulich@suse.com>
Cc: xen-devel@lists.xenproject.org
Subject: Re: [PATCH] XTF: tests SPEC_CTRL added bits
Message-ID: <ZbkPf0Ji4LRHBwOz@macbook>
References: <20240130091400.50622-1-roger.pau@citrix.com>
 <20240130102719.51150-1-roger.pau@citrix.com>
 <7f514c59-dbf1-44ea-a589-dbc43f0b4ee4@suse.com>
 <Zbjhica05LIMB9zX@macbook>
 <2ded2ffa-70cb-4d91-8c52-d36bc2ee3705@suse.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <2ded2ffa-70cb-4d91-8c52-d36bc2ee3705@suse.com>

On Tue, Jan 30, 2024 at 01:55:56PM +0100, Jan Beulich wrote:
> On 30.01.2024 12:46, Roger Pau Monné wrote:
> > On Tue, Jan 30, 2024 at 11:42:43AM +0100, Jan Beulich wrote:
> >> On 30.01.2024 11:27, Roger Pau Monne wrote:
> >>> Dummy set/clear tests for additional spec_ctrl bits.
> >>> ---
> >>>  docs/all-tests.dox  |   2 +
> >>>  tests/test/Makefile |   9 ++++
> >>>  tests/test/main.c   | 100 ++++++++++++++++++++++++++++++++++++++++++++
> >>>  3 files changed, 111 insertions(+)
> >>>  create mode 100644 tests/test/Makefile
> >>>  create mode 100644 tests/test/main.c
> >>
> >> I'm puzzled: Why "test"? That doesn't describe in any way what this test
> >> is about.
> > 
> > That's just my place holder for random XTF stuff.  I don't intend this
> > to be committed.
> 
> Could have been said then one way or another.

Yes, realized later when speaking with Andrew that I had forgot to send
the test I've used, and then didn't adjust the message when sending to
note this wasn't supposed to be applied.

Regards, Roger.


From xen-devel-bounces@lists.xenproject.org Tue Jan 30 15:04:52 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 30 Jan 2024 15:04:52 +0000
Received: from list by lists.xenproject.org with outflank-mailman.673540.1047901 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUpfM-0003JI-9h; Tue, 30 Jan 2024 15:04:48 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 673540.1047901; Tue, 30 Jan 2024 15:04:48 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUpfM-0003JB-73; Tue, 30 Jan 2024 15:04:48 +0000
Received: by outflank-mailman (input) for mailman id 673540;
 Tue, 30 Jan 2024 15:04:47 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=M5qC=JI=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1rUpfL-0003Gj-3D
 for xen-devel@lists.xenproject.org; Tue, 30 Jan 2024 15:04:47 +0000
Received: from mail-wm1-x330.google.com (mail-wm1-x330.google.com
 [2a00:1450:4864:20::330])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id e80f19d9-bf80-11ee-8a43-1f161083a0e0;
 Tue, 30 Jan 2024 16:04:46 +0100 (CET)
Received: by mail-wm1-x330.google.com with SMTP id
 5b1f17b1804b1-40eacb6067dso54107005e9.1
 for <xen-devel@lists.xenproject.org>; Tue, 30 Jan 2024 07:04:46 -0800 (PST)
Received: from [10.80.67.30] (default-46-102-197-194.interdsl.co.uk.
 [46.102.197.194]) by smtp.gmail.com with ESMTPSA id
 ay26-20020a05600c1e1a00b0040f22171920sm1861532wmb.0.2024.01.30.07.04.44
 for <xen-devel@lists.xenproject.org>
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 30 Jan 2024 07:04:45 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: e80f19d9-bf80-11ee-8a43-1f161083a0e0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1706627085; x=1707231885; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:to
         :content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=srBUpj5mtWKVMwhfQnmolZbYFz8tBY3OlYTrbe6JAZg=;
        b=W6r2OVhOeAjEZ3kIUwIpya1JPyJbkF/8SaJ9h/qJmbwNHTV4Q6bPLCWnJmPbypmhg+
         uUntXsSXw+mKMzFll5gU2aRan2Ae9GS4BBZg5yk3KhxBsX2jkDqHN1wKSaUELE3Pt8Q3
         z8olZe3udCywhZv+sCmGn48FQ5RAB14TsE7fk=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706627085; x=1707231885;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:to
         :content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=srBUpj5mtWKVMwhfQnmolZbYFz8tBY3OlYTrbe6JAZg=;
        b=HNAgoXgK+y68JyXN+11PDV1hSdkeRntoKBSviI3Nk+P6YlIbPVO6yOGOixRLAFz6PA
         WFTOITgNEPEKJSGgSQ6euDtc0hLiKE0vxRoN4IjcfknxcwpPKuYa4i7Qp1O/7prbX0D8
         22yHX4NvtiBO1oP0cV2xY4wLAMo7pqoUdBy29cElNYeqwfL3PE2mP8yTNQfml/7Ho8H7
         sDLgDUnitmpMEBHpUcqWgtf3CYHcUBoOAR50SVtS38UhrT7R0T0TiHRM0nQsZGYUeKAI
         8WxkY8EKIkcpr9qT/hsPJdDgTrkvomFL3XjYVQ+LS855sxNKVZouu10KP6ZbhgbNCFBh
         1isA==
X-Gm-Message-State: AOJu0YyU9b7Brm/1fhc58wHB21UMAzt6z3SOLsA0QAHET9L0aOSlXeT5
	z0zzu1536XXhxkYBrHtj02zw8pzTvr+bdoEyzQADBEXtSuhqUKdcxrSJh7jrZlSlG3E8IcBTdcK
	n
X-Google-Smtp-Source: AGHT+IHJPAwG02DcThrP0vdVGu36kwthxF0lZKZel5bj7o2OHG5qlLHkOT4eOrLdYD3j+Te+qjMC2A==
X-Received: by 2002:a05:600c:1d1b:b0:40e:d332:bb8f with SMTP id l27-20020a05600c1d1b00b0040ed332bb8fmr6878229wms.5.1706627085458;
        Tue, 30 Jan 2024 07:04:45 -0800 (PST)
Message-ID: <505377d7-e105-4a76-b24a-a52698185836@citrix.com>
Date: Tue, 30 Jan 2024 15:04:44 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] XTF: tests SPEC_CTRL added bits
Content-Language: en-GB
To: xen-devel@lists.xenproject.org
References: <20240130091400.50622-1-roger.pau@citrix.com>
 <20240130102719.51150-1-roger.pau@citrix.com>
 <7f514c59-dbf1-44ea-a589-dbc43f0b4ee4@suse.com> <Zbjhica05LIMB9zX@macbook>
 <2ded2ffa-70cb-4d91-8c52-d36bc2ee3705@suse.com> <ZbkPf0Ji4LRHBwOz@macbook>
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 xsFNBFLhNn8BEADVhE+Hb8i0GV6mihnnr/uiQQdPF8kUoFzCOPXkf7jQ5sLYeJa0cQi6Penp
 VtiFYznTairnVsN5J+ujSTIb+OlMSJUWV4opS7WVNnxHbFTPYZVQ3erv7NKc2iVizCRZ2Kxn
 srM1oPXWRic8BIAdYOKOloF2300SL/bIpeD+x7h3w9B/qez7nOin5NzkxgFoaUeIal12pXSR
 Q354FKFoy6Vh96gc4VRqte3jw8mPuJQpfws+Pb+swvSf/i1q1+1I4jsRQQh2m6OTADHIqg2E
 ofTYAEh7R5HfPx0EXoEDMdRjOeKn8+vvkAwhviWXTHlG3R1QkbE5M/oywnZ83udJmi+lxjJ5
 YhQ5IzomvJ16H0Bq+TLyVLO/VRksp1VR9HxCzItLNCS8PdpYYz5TC204ViycobYU65WMpzWe
 LFAGn8jSS25XIpqv0Y9k87dLbctKKA14Ifw2kq5OIVu2FuX+3i446JOa2vpCI9GcjCzi3oHV
 e00bzYiHMIl0FICrNJU0Kjho8pdo0m2uxkn6SYEpogAy9pnatUlO+erL4LqFUO7GXSdBRbw5
 gNt25XTLdSFuZtMxkY3tq8MFss5QnjhehCVPEpE6y9ZjI4XB8ad1G4oBHVGK5LMsvg22PfMJ
 ISWFSHoF/B5+lHkCKWkFxZ0gZn33ju5n6/FOdEx4B8cMJt+cWwARAQABzSlBbmRyZXcgQ29v
 cGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPsLBegQTAQgAJAIbAwULCQgHAwUVCgkI
 CwUWAgMBAAIeAQIXgAUCWKD95wIZAQAKCRBlw/kGpdefoHbdD/9AIoR3k6fKl+RFiFpyAhvO
 59ttDFI7nIAnlYngev2XUR3acFElJATHSDO0ju+hqWqAb8kVijXLops0gOfqt3VPZq9cuHlh
 IMDquatGLzAadfFx2eQYIYT+FYuMoPZy/aTUazmJIDVxP7L383grjIkn+7tAv+qeDfE+txL4
 SAm1UHNvmdfgL2/lcmL3xRh7sub3nJilM93RWX1Pe5LBSDXO45uzCGEdst6uSlzYR/MEr+5Z
 JQQ32JV64zwvf/aKaagSQSQMYNX9JFgfZ3TKWC1KJQbX5ssoX/5hNLqxMcZV3TN7kU8I3kjK
 mPec9+1nECOjjJSO/h4P0sBZyIUGfguwzhEeGf4sMCuSEM4xjCnwiBwftR17sr0spYcOpqET
 ZGcAmyYcNjy6CYadNCnfR40vhhWuCfNCBzWnUW0lFoo12wb0YnzoOLjvfD6OL3JjIUJNOmJy
 RCsJ5IA/Iz33RhSVRmROu+TztwuThClw63g7+hoyewv7BemKyuU6FTVhjjW+XUWmS/FzknSi
 dAG+insr0746cTPpSkGl3KAXeWDGJzve7/SBBfyznWCMGaf8E2P1oOdIZRxHgWj0zNr1+ooF
 /PzgLPiCI4OMUttTlEKChgbUTQ+5o0P080JojqfXwbPAyumbaYcQNiH1/xYbJdOFSiBv9rpt
 TQTBLzDKXok86M7BTQRS4TZ/ARAAkgqudHsp+hd82UVkvgnlqZjzz2vyrYfz7bkPtXaGb9H4
 Rfo7mQsEQavEBdWWjbga6eMnDqtu+FC+qeTGYebToxEyp2lKDSoAsvt8w82tIlP/EbmRbDVn
 7bhjBlfRcFjVYw8uVDPptT0TV47vpoCVkTwcyb6OltJrvg/QzV9f07DJswuda1JH3/qvYu0p
 vjPnYvCq4NsqY2XSdAJ02HrdYPFtNyPEntu1n1KK+gJrstjtw7KsZ4ygXYrsm/oCBiVW/OgU
 g/XIlGErkrxe4vQvJyVwg6YH653YTX5hLLUEL1NS4TCo47RP+wi6y+TnuAL36UtK/uFyEuPy
 wwrDVcC4cIFhYSfsO0BumEI65yu7a8aHbGfq2lW251UcoU48Z27ZUUZd2Dr6O/n8poQHbaTd
 6bJJSjzGGHZVbRP9UQ3lkmkmc0+XCHmj5WhwNNYjgbbmML7y0fsJT5RgvefAIFfHBg7fTY/i
 kBEimoUsTEQz+N4hbKwo1hULfVxDJStE4sbPhjbsPCrlXf6W9CxSyQ0qmZ2bXsLQYRj2xqd1
 bpA+1o1j2N4/au1R/uSiUFjewJdT/LX1EklKDcQwpk06Af/N7VZtSfEJeRV04unbsKVXWZAk
 uAJyDDKN99ziC0Wz5kcPyVD1HNf8bgaqGDzrv3TfYjwqayRFcMf7xJaL9xXedMcAEQEAAcLB
 XwQYAQgACQUCUuE2fwIbDAAKCRBlw/kGpdefoG4XEACD1Qf/er8EA7g23HMxYWd3FXHThrVQ
 HgiGdk5Yh632vjOm9L4sd/GCEACVQKjsu98e8o3ysitFlznEns5EAAXEbITrgKWXDDUWGYxd
 pnjj2u+GkVdsOAGk0kxczX6s+VRBhpbBI2PWnOsRJgU2n10PZ3mZD4Xu9kU2IXYmuW+e5KCA
 vTArRUdCrAtIa1k01sPipPPw6dfxx2e5asy21YOytzxuWFfJTGnVxZZSCyLUO83sh6OZhJkk
 b9rxL9wPmpN/t2IPaEKoAc0FTQZS36wAMOXkBh24PQ9gaLJvfPKpNzGD8XWR5HHF0NLIJhgg
 4ZlEXQ2fVp3XrtocHqhu4UZR4koCijgB8sB7Tb0GCpwK+C4UePdFLfhKyRdSXuvY3AHJd4CP
 4JzW0Bzq/WXY3XMOzUTYApGQpnUpdOmuQSfpV9MQO+/jo7r6yPbxT7CwRS5dcQPzUiuHLK9i
 nvjREdh84qycnx0/6dDroYhp0DFv4udxuAvt1h4wGwTPRQZerSm4xaYegEFusyhbZrI0U9tJ
 B8WrhBLXDiYlyJT6zOV2yZFuW47VrLsjYnHwn27hmxTC/7tvG3euCklmkn9Sl9IAKFu29RSo
 d5bD8kMSCYsTqtTfT6W4A3qHGvIDta3ptLYpIAOD2sY3GYq2nf3Bbzx81wZK14JdDDHUX2Rs
 6+ahAA==
In-Reply-To: <ZbkPf0Ji4LRHBwOz@macbook>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 30/01/2024 3:02 pm, Roger Pau Monné wrote:
> On Tue, Jan 30, 2024 at 01:55:56PM +0100, Jan Beulich wrote:
>> On 30.01.2024 12:46, Roger Pau Monné wrote:
>>> On Tue, Jan 30, 2024 at 11:42:43AM +0100, Jan Beulich wrote:
>>>> On 30.01.2024 11:27, Roger Pau Monne wrote:
>>>>> Dummy set/clear tests for additional spec_ctrl bits.
>>>>> ---
>>>>>  docs/all-tests.dox  |   2 +
>>>>>  tests/test/Makefile |   9 ++++
>>>>>  tests/test/main.c   | 100 ++++++++++++++++++++++++++++++++++++++++++++
>>>>>  3 files changed, 111 insertions(+)
>>>>>  create mode 100644 tests/test/Makefile
>>>>>  create mode 100644 tests/test/main.c
>>>> I'm puzzled: Why "test"? That doesn't describe in any way what this test
>>>> is about.
>>> That's just my place holder for random XTF stuff.  I don't intend this
>>> to be committed.
>> Could have been said then one way or another.
> Yes, realized later when speaking with Andrew that I had forgot to send
> the test I've used, and then didn't adjust the message when sending to
> note this wasn't supposed to be applied.

I've got a local test with some of this in, which I'll extend.

But as with many other things, it's waiting on fixing the test-revision
build infrastructure so the OSSTest Bisector doesn't break when adding
new content to an existing test.

~Andrew


From xen-devel-bounces@lists.xenproject.org Tue Jan 30 15:05:09 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 30 Jan 2024 15:05:09 +0000
Received: from list by lists.xenproject.org with outflank-mailman.673541.1047912 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUpfh-0003g8-MA; Tue, 30 Jan 2024 15:05:09 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 673541.1047912; Tue, 30 Jan 2024 15:05:09 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUpfh-0003g1-Ii; Tue, 30 Jan 2024 15:05:09 +0000
Received: by outflank-mailman (input) for mailman id 673541;
 Tue, 30 Jan 2024 15:05:08 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=cYm+=JI=amd.com=Stewart.Hildebrand@srs-se1.protection.inumbo.net>)
 id 1rUpfg-0003fN-1t
 for xen-devel@lists.xenproject.org; Tue, 30 Jan 2024 15:05:08 +0000
Received: from NAM12-DM6-obe.outbound.protection.outlook.com
 (mail-dm6nam12on20600.outbound.protection.outlook.com
 [2a01:111:f403:2417::600])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id f2f5a384-bf80-11ee-98f5-efadbce2ee36;
 Tue, 30 Jan 2024 16:05:06 +0100 (CET)
Received: from BN9PR03CA0524.namprd03.prod.outlook.com (2603:10b6:408:131::19)
 by SJ2PR12MB9116.namprd12.prod.outlook.com (2603:10b6:a03:557::18)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7228.32; Tue, 30 Jan
 2024 15:05:02 +0000
Received: from BN3PEPF0000B078.namprd04.prod.outlook.com
 (2603:10b6:408:131:cafe::f6) by BN9PR03CA0524.outlook.office365.com
 (2603:10b6:408:131::19) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7228.34 via Frontend
 Transport; Tue, 30 Jan 2024 15:05:02 +0000
Received: from SATLEXMB03.amd.com (165.204.84.17) by
 BN3PEPF0000B078.mail.protection.outlook.com (10.167.243.123) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.7249.19 via Frontend Transport; Tue, 30 Jan 2024 15:05:01 +0000
Received: from SATLEXMB04.amd.com (10.181.40.145) by SATLEXMB03.amd.com
 (10.181.40.144) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.34; Tue, 30 Jan
 2024 09:04:59 -0600
Received: from [172.23.114.18] (10.180.168.240) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server id 15.1.2507.34 via Frontend
 Transport; Tue, 30 Jan 2024 09:04:58 -0600
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: f2f5a384-bf80-11ee-98f5-efadbce2ee36
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=ew6UIdRM6DpUbVH1lZGJMzlFZv5pm6GR+T6jqDPfN3CEaWq0wvCYKZDnyut0o8Q9hAviUOCWCN3Mj8CJomCg8t3LRrVHx283JjC39jx8m/B0avemifuzayEETApp6Qb2ULQYil0ZO2d2lBwAI0z24+hZRPRJkYF6TnzjHXB/FvlUsA3z67RAtBm7i4qlV9+d6GTaxyhV13S/yz83S5MLfma3hPQ3Hh8T8bbHuWmniNiDEBQQsB5CKy7/rooCIL/rUgqz/QZL5KndbvU6QOnO5z92ZSA8R4VgrjOzu5xieqTywtQLCDeBHGuW+haiZZ2K8K27Ke7g1XVx3kA62o115w==
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=kQTpddNwzURPcDGIxeQ2sWtSlB7qpOv0tLPkRvkcjL4=;
 b=MLQ1qJ+dAwkwvoykw0qWeZnzWrN4Ol5AK1PZ478AyhsYnBSn3PwA5Y/x9T77bV7w1FcSq5iwo99brAkSInodEfH0o3C0u6rC54o7wRTMHHW6KUnAxPz26T0TgE+4PnFK1TH2718lLJ/3dm6UuN26kGL9u9E7bJoJMtLZ/NSG0ZlpYbr/sUJiKtg3VSFsJDUZBHel4WTzEqEy7jCKQWTF/IbkWxk7zFuAw9JBXRKaZSPJMLu6POU+QkB8yyX9UDi8Z/WdtqNaLCMIM0FWVpiWAosN4XphctEvjRb4YwR4xnFO0/sgGBFLHiyDI6kB/3c5WLRBqgGxHrmONNC6gEiM7Q==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=citrix.com 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)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=kQTpddNwzURPcDGIxeQ2sWtSlB7qpOv0tLPkRvkcjL4=;
 b=mgf5tgqT3nYrJwIrWkFNthpL8ul1tJwwMV38FO0jWIxpYe4974iIMaHEMtk8+MP1OKlx+VGfRa98aY5MV1jmowAX+q3/VVjoq75ImLjT/weSi3kw60RDFckFWqKGYnxBn2rSzfVxrM5sOYEB2pCJVXzcMfLCF/e2FQb71QCISEU=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=SATLEXMB03.amd.com; pr=C
Message-ID: <2ac68097-a497-46fb-8d77-1b6a5ef78a77@amd.com>
Date: Tue, 30 Jan 2024 10:04:57 -0500
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v12.2 01/15] vpci: use per-domain PCI lock to protect vpci
 structure
Content-Language: en-US
To: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>, Jan Beulich
	<jbeulich@suse.com>
CC: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>, Andrew Cooper
	<andrew.cooper3@citrix.com>, Wei Liu <wl@xen.org>, George Dunlap
	<george.dunlap@citrix.com>, Julien Grall <julien@xen.org>, Stefano Stabellini
	<sstabellini@kernel.org>, Jun Nakajima <jun.nakajima@intel.com>, Kevin Tian
	<kevin.tian@intel.com>, Paul Durrant <paul@xen.org>, Volodymyr Babchuk
	<volodymyr_babchuk@epam.com>, <xen-devel@lists.xenproject.org>
References: <20240115194309.45683-1-stewart.hildebrand@amd.com>
 <715e40c9-1776-4677-9565-dac1565a2aa8@suse.com> <Za_WGzS14Eqt8yZF@macbook>
 <ae7a57f2-2433-4b75-ab45-c8be55d489c9@suse.com> <ZbDXXyucJhLJ4u9H@macbook>
 <a3233487-965b-49ae-bebe-e5476fcda29c@suse.com> <ZbFOE6kV7NXFrNjb@macbook>
 <fa7df700-06f1-4110-bc76-c59d59e5d887@suse.com> <ZbIkVcYkcuT2iF8e@macbook>
 <247df339-e631-4c50-85e4-b6a486235564@suse.com> <ZbJU_PuYo9EEzyac@macbook>
From: Stewart Hildebrand <stewart.hildebrand@amd.com>
In-Reply-To: <ZbJU_PuYo9EEzyac@macbook>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: BN3PEPF0000B078:EE_|SJ2PR12MB9116:EE_
X-MS-Office365-Filtering-Correlation-Id: 15889b35-6b4e-459b-63a5-08dc21a4d57d
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam: BCL:0;
X-Microsoft-Antispam-Message-Info:
	jYHx2uC9uXKkyA/YeqlaMlsGQ+y6cI8D8l7G3ERjQK1uRlUntg9XO+WYiy9luIlWjgaJCOcohYQjwMQwKuORqU8GVEdzMFvac2gDyETa75elzJ0ExWcIunv8cQ2TSxCUBxxE5PGx+mpCdi1subBapoUqcmcnUXAtWC9elEz3qBo7vYj1CyjWOw5IxDilA8KNqvI+nCCGE+XiNOCpjIRRKj9IEVzdNhybIRtNwxhg1zYu7Ekagb/e+KrEg+YV9FPwGrukSsrohBl2uYUyIVlRVDjqYcD99Gr5pnfNGXed2cYn3qcxswoXKVzujqwgSFtk+mG5hOBu2nMohUjPaiSI/smX6rR3nxseJvbFQsb0MBlJltr0XhrgpW0geb3Xb9vK1izxzBrpeNU8Nza6uN33sdLMUOIXGdhQvWQtZPRc4nx5PxHppa3Lq/eJdVD0EZp/hDcAzokMGvPYGd5Gw9gcpROMSHLOjVlPcN34gVV0MuLm8ZQWfE9rbbEbwNsyV58u/UrUo43tVbhYfk74Z5A3m8W9nAlR6HdoJyUnh6rr+mA7W38XpRKRe1iJe6M76LXUT3ZhqcW1sgK+0j5xEPdGyRv1Jw4QCNjf0TxzEy3c5Ekcl3HJQasXpwckt4DTApNzcuPDLE/p6CSL+fya7gX+LGxfCs49fthb3RNZuXY0YvEF1QFe+KHFpnO+Ba26QxzbVDQle/rYUrIO0If2fDb2/96gi+mo/4yIh68UTmyKZw27rk23qKFKYvg0MlkPWpNMwqFnaSajuxGN0Ei8u5eTPwMq4XqD4y9fMTTmPLHYCmY5fhtySHpqGO0iRESdQpZv
X-Forefront-Antispam-Report:
	CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB03.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230031)(4636009)(39860400002)(136003)(396003)(346002)(376002)(230922051799003)(451199024)(1800799012)(82310400011)(64100799003)(186009)(36840700001)(46966006)(40470700004)(70586007)(316002)(4326008)(8936002)(7416002)(8676002)(16576012)(110136005)(83380400001)(70206006)(36860700001)(31686004)(478600001)(86362001)(31696002)(5660300002)(2906002)(44832011)(54906003)(2616005)(53546011)(36756003)(81166007)(336012)(82740400003)(40460700003)(40480700001)(426003)(47076005)(356005)(26005)(41300700001)(36900700001)(43740500002);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Jan 2024 15:05:01.9416
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 15889b35-6b4e-459b-63a5-08dc21a4d57d
X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB03.amd.com]
X-MS-Exchange-CrossTenant-AuthSource:
	BN3PEPF0000B078.namprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ2PR12MB9116

On 1/25/24 07:33, Roger Pau Monné wrote:
> On Thu, Jan 25, 2024 at 12:23:05PM +0100, Jan Beulich wrote:
>> On 25.01.2024 10:05, Roger Pau Monné wrote:
>>> On Thu, Jan 25, 2024 at 08:43:05AM +0100, Jan Beulich wrote:
>>>> On 24.01.2024 18:51, Roger Pau Monné wrote:
>>>>> On Wed, Jan 24, 2024 at 12:34:10PM +0100, Jan Beulich wrote:
>>>>>> On 24.01.2024 10:24, Roger Pau Monné wrote:
>>>>>>> On Wed, Jan 24, 2024 at 09:48:35AM +0100, Jan Beulich wrote:
>>>>>>>> On 23.01.2024 16:07, Roger Pau Monné wrote:
>>>>>>>>> On Tue, Jan 23, 2024 at 03:32:12PM +0100, Jan Beulich wrote:
>>>>>>>>>> On 15.01.2024 20:43, Stewart Hildebrand wrote:
>>>>>>>>>>> @@ -2888,6 +2888,8 @@ int allocate_and_map_msi_pirq(struct domain *d, int index, int *pirq_p,
>>>>>>>>>>>  {
>>>>>>>>>>>      int irq, pirq, ret;
>>>>>>>>>>>  
>>>>>>>>>>> +    ASSERT(pcidevs_locked() || rw_is_locked(&d->pci_lock));
>>>>>>>>>>
>>>>>>>>>> If either lock is sufficient to hold here, ...
>>>>>>>>>>
>>>>>>>>>>> --- a/xen/arch/x86/physdev.c
>>>>>>>>>>> +++ b/xen/arch/x86/physdev.c
>>>>>>>>>>> @@ -123,7 +123,9 @@ int physdev_map_pirq(domid_t domid, int type, int *index, int *pirq_p,
>>>>>>>>>>>  
>>>>>>>>>>>      case MAP_PIRQ_TYPE_MSI:
>>>>>>>>>>>      case MAP_PIRQ_TYPE_MULTI_MSI:
>>>>>>>>>>> +        pcidevs_lock();
>>>>>>>>>>>          ret = allocate_and_map_msi_pirq(d, *index, pirq_p, type, msi);
>>>>>>>>>>> +        pcidevs_unlock();
>>>>>>>>>>>          break;
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>> IIRC (Stewart can further comment) this is done holding the pcidevs
>>>>>>>>> lock to keep the path unmodified, as there's no need to hold the
>>>>>>>>> per-domain rwlock.
>>>>>>>>
>>>>>>>> Yet why would we prefer to acquire a global lock when a per-domain one
>>>>>>>> suffices?
>>>>>>>
>>>>>>> I was hoping to introduce less changes, specially if they are not
>>>>>>> strictly required, as it's less risk.  I'm always quite worry of
>>>>>>> locking changes.
>>>>>>
>>>>>> In which case more description / code commenting is needed. The pattern
>>>>>> of the assertions looks dangerous.
>>>>>
>>>>> Is such dangerousness perception because you fear some of the pcidevs
>>>>> lock usage might be there not just for preventing the pdev from going
>>>>> away, but also to guarantee exclusive access to certain state?
>>>>
>>>> Indeed. In my view the main purpose of locks is to guard state. Their
>>>> use here to guard against devices here is imo rather an abuse; as
>>>> mentioned before this should instead be achieved e.g via refcounting.
>>>> And it's bad enough already that pcidevs_lock() alone has been abused
>>>> this way, without proper marking (leaving us to guess in many places).
>>>> It gets worse when a second lock can now also serve this same
>>>> purpose.
>>>
>>> The new lock is taken in read mode in most contexts, and hence can't
>>> be used to indirectly gain exclusive access to domain related
>>> structures in a safe way.
>>
>> Oh, right - I keep being misled by rw_is_locked(). This is a fair
>> argument. Irrespective it would feel better to me if an abstraction
>> construct was introduced; but seeing you don't like the idea I guess
>> I won't insist.
> 
> TBH I'm not going to argue against it if you and Stewart think it's
> clearer, but I also won't request the addition of such wrapper myself.
> 
> Thanks, Roger.

Overall, I think there are two sources of confusion:

    1. This patch is using the odd-looking ASSERTs to verify that it is safe to *read* d->pdev_list, and/or ensure a pdev does not go away or get reassigned. The purpose of these ASSERTs is not immediately obvious due to inadequate description.

    2. At first glance, the patch appears to be doing two things: using d->pci_lock for d->pdev_list/pdev protection, and using d->pci_lock for pdev->vpci protection.

Regarding #1, while the review experience could have been improved by introducing a wrapper construct, I think it would also (more importantly) be valuable to have such a wrapper for the sake of code readability. I think it is important to get this right and hopefully avoid/reduce potential future confusion. I'll add something like this in v13, e.g. in sched.h:

/* Ensure pdevs do not go away or get assigned to other domains. */
#define pdev_list_is_read_locked(d) ({                           \

        struct domain *d_ = (d);                                 \

        pcidevs_locked() || (d_ && rw_is_locked(&d_->pci_lock)); \

    })

Example use:

    ASSERT(pdev_list_is_read_locked(d));

Regarding #2, the patch description primarily talks about protecting the pdev->vpci field, and the d->pdev_list read / pdev reassignment protection seems an afterthought. However, the use of pcidevs_lock() for pdev protection is pre-existing. Now that vPCI callers are going to use d->pci_lock (instead of pcidevs_lock()), we are simultaneously changing the allowable mechanism for protecting d->pdev_list reads and pdevs going away or getting reassigned. I briefly experimented with splitting this into two separate patches, but I chose not to pursue this further because then we'd have a brief odd intermediate state, not to mention the additional test/review burden of evaluating each separate change independently. Keep in mind this patch as a whole has already been through much test/review, and at this point my primary focus is to improve readability and avoid confusion. I will plan to add appropriate description and rationale for v13.

Since I will be changing to use a wrapper construct and updating the descriptions, I will plan to drop Roger's R-b tag on this patch for v13.

Lastly, as has already been mentioned in the cover letter and reiterated in discussions here, for the non-vPCI code paths already using pcidevs_lock() I will plan to keep them using pcidevs_lock().


From xen-devel-bounces@lists.xenproject.org Tue Jan 30 15:05:17 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 30 Jan 2024 15:05:17 +0000
Received: from list by lists.xenproject.org with outflank-mailman.673542.1047922 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUpfo-00044C-W4; Tue, 30 Jan 2024 15:05:16 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 673542.1047922; Tue, 30 Jan 2024 15:05:16 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUpfo-000445-Sp; Tue, 30 Jan 2024 15:05:16 +0000
Received: by outflank-mailman (input) for mailman id 673542;
 Tue, 30 Jan 2024 15:05:15 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=XFHt=JI=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rUpfn-0003Gj-AX
 for xen-devel@lists.xenproject.org; Tue, 30 Jan 2024 15:05:15 +0000
Received: from mail-wr1-x42f.google.com (mail-wr1-x42f.google.com
 [2a00:1450:4864:20::42f])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id f87d09b9-bf80-11ee-8a43-1f161083a0e0;
 Tue, 30 Jan 2024 16:05:14 +0100 (CET)
Received: by mail-wr1-x42f.google.com with SMTP id
 ffacd0b85a97d-33ae6dfa923so1743369f8f.1
 for <xen-devel@lists.xenproject.org>; Tue, 30 Jan 2024 07:05:14 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 cw7-20020a056000090700b0033afcb5b5d2sm1523155wrb.80.2024.01.30.07.05.12
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 30 Jan 2024 07:05:13 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: f87d09b9-bf80-11ee-8a43-1f161083a0e0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1706627114; x=1707231914; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=cLG0RfwlMKwrfS+NMbvHMbiGZR989lBlU3VKUG3C9Aw=;
        b=ZDRRoiW/HAt9AfWvcKHwra0vEFKhEWdlsY1/xlczFmIYQwaxjJ8BJsbBsn3TFcQhAr
         BERXnZGVlEY1YfSgdjYn0E2pBuvBGDNcla/teYsCc7KDg6uYSDwxtJp4wU1x7tRnnDns
         28dRiJCWQSOw6N0WCdKcfM9dmLt5WEsFZvmGhKNw2F0fEm8AISWMiYAnjil37s4ExVjd
         ReAzebPNmvqkQVhOgN2VTwWsFK6JsoJ5exwKajFd3G1tRvuIdZSMOkiz49lUDxQCY3jr
         WFZAXlEIvMcYSYISKYnmorkwikUbuovRfCPOstq+YC81nk8p17Go2n3AQT3wxpYTFRtU
         4u7Q==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706627114; x=1707231914;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=cLG0RfwlMKwrfS+NMbvHMbiGZR989lBlU3VKUG3C9Aw=;
        b=PEWaeKf4YS6hAQFxlQoK+k6lcyLog6TsekW+wEcskThAP8bn6zx/BEUKEfFDRC8pCu
         L/PsULMp0th+iyTDWj9pDO5O9S/dBICgLglaWkC5TpVKi341bXAcJOVWl+BtQIDHAgii
         JdNwJqa1L98z+jU/TGltkJSaq7kdRKw3/sz0+mUlNi0EQUAFYsfwh0EflPKAjgqip1FM
         bN8HKoil8vFrC71iNHgHY6+PQ5q/XQ5uZTVGg2Gi9tSx1HoNZnhEButF2lDcBzPTMDUl
         N91V6Pb/Y460Awls8ksWm19Rj7GQ2qFz/XgNpeAH3sg5r48FkRBYDbg0rqkb0r+xxVq6
         eIdg==
X-Gm-Message-State: AOJu0YydA8wveqlB9U8gWp2paMRcZxe8GcSnbXQn27wSu1Ta4SEL3gxU
	tkmmu7gIJXwU1YnA+ouBfOLiwrLFVpxKOu4ADLgLMGqnywhzUzLPQ9Jtihu0lg==
X-Google-Smtp-Source: AGHT+IFAp5kXLF/q/5Z5piri9DuA+Hqcl8glhuByjpY81wbSf/dr1mfOsZK2iNre9GAYgDsftf9eZA==
X-Received: by 2002:a5d:64c9:0:b0:337:2e16:218d with SMTP id f9-20020a5d64c9000000b003372e16218dmr6999587wri.68.1706627113694;
        Tue, 30 Jan 2024 07:05:13 -0800 (PST)
X-Forwarded-Encrypted: i=0; AJvYcCW1B/MDq15HNKaHCDX49ZYacTtEZL5BSRQoSDHcd4jXWHFxLv18uybrJFBlGkrGGhBwCEca7ncHLKowpM315OZVlzWAK6pnJzvaoMimTE+bNqcldUZZU0/YQFMoGiSb3ly84yZ4L++O9sbcYVTpsvNiykpuJK+Ic9ERex9g1ALgR4DcWE5vkFqD4iYWxF2zSinjGTRe7v/QFpAAumbk5BRk5kZiamnxg80+4CZ4pAdRt0LpXmX6qp6yazyCzDWWDMX2f+JtIoVUoQ/VEaFLwCny+nI1xwR2po1GmD/wcu7YqCu27GNHO34=
Message-ID: <9e604a3e-fac7-49dd-8f84-744e72ba71b7@suse.com>
Date: Tue, 30 Jan 2024 16:05:11 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 13/34] xen/riscv: introduce cmpxchg.h
Content-Language: en-US
To: Oleksii <oleksii.kurochko@gmail.com>
Cc: Alistair Francis <alistair.francis@wdc.com>,
 Bob Eshleman <bobbyeshleman@gmail.com>, Connor Davis
 <connojdavis@gmail.com>, Andrew Cooper <andrew.cooper3@citrix.com>,
 George Dunlap <george.dunlap@citrix.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>,
 xen-devel@lists.xenproject.org
References: <cover.1703255175.git.oleksii.kurochko@gmail.com>
 <214bfd61c8ccf2a5b2c640b815ebfa6a705f6234.1703255175.git.oleksii.kurochko@gmail.com>
 <8ee35a76-f3ef-4143-93ef-8e6089f82a80@suse.com>
 <848bcb2d7e5357ca6d3672bef52ac57c5b1f7f95.camel@gmail.com>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <848bcb2d7e5357ca6d3672bef52ac57c5b1f7f95.camel@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 30.01.2024 15:57, Oleksii wrote:
> On Mon, 2024-01-22 at 17:27 +0100, Jan Beulich wrote:
>>> +#define __xchg_acquire(ptr, new, size) \
>>> +({ \
>>> +    __typeof__(ptr) ptr__ = (ptr); \
>>> +    __typeof__(new) new__ = (new); \
>>> +    __typeof__(*(ptr)) ret__; \
>>> +    switch (size) \
>>> +	{ \
>>> +    case 4: \
>>> +        asm volatile( \
>>> +            "	amoswap.w %0, %2, %1\n" \
>>> +            RISCV_ACQUIRE_BARRIER \
>>> +            : "=r" (ret__), "+A" (*ptr__) \
>>> +            : "r" (new__) \
>>> +            : "memory" ); \
>>> +        break; \
>>> +    case 8: \
>>> +        asm volatile( \
>>> +            "	amoswap.d %0, %2, %1\n" \
>>> +            RISCV_ACQUIRE_BARRIER \
>>> +            : "=r" (ret__), "+A" (*ptr__) \
>>> +            : "r" (new__) \
>>> +            : "memory" ); \
>>> +        break; \
>>> +    default: \
>>> +        ASSERT_UNREACHABLE(); \
>>> +    } \
>>> +    ret__; \
>>> +})
>>
>> If I'm not mistaken this differs from __xchg_relaxed() only in the
>> use
>> of RISCV_ACQUIRE_BARRIER, and ...
>>
>>> +#define xchg_acquire(ptr, x) \
>>> +({ \
>>> +    __typeof__(*(ptr)) x_ = (x); \
>>> +    (__typeof__(*(ptr))) __xchg_acquire((ptr), x_,
>>> sizeof(*(ptr))); \
>>> +})
>>> +
>>> +#define __xchg_release(ptr, new, size) \
>>> +({ \
>>> +    __typeof__(ptr) ptr__ = (ptr); \
>>> +    __typeof__(new) new__ = (new); \
>>> +    __typeof__(*(ptr)) ret__; \
>>> +    switch (size) \
>>> +	{ \
>>> +    case 4: \
>>> +        asm volatile ( \
>>> +            RISCV_RELEASE_BARRIER \
>>> +            "	amoswap.w %0, %2, %1\n" \
>>> +            : "=r" (ret__), "+A" (*ptr__) \
>>> +            : "r" (new__) \
>>> +            : "memory"); \
>>> +        break; \
>>> +    case 8: \
>>> +        asm volatile ( \
>>> +            RISCV_RELEASE_BARRIER \
>>> +            "	amoswap.d %0, %2, %1\n" \
>>> +            : "=r" (ret__), "+A" (*ptr__) \
>>> +            : "r" (new__) \
>>> +            : "memory"); \
>>> +        break; \
>>> +    default: \
>>> +        ASSERT_UNREACHABLE(); \
>>> +    } \
>>> +    ret__; \
>>> +})
>>
>> this only in the use of RISCV_RELEASE_BARRIER. If so they likely want
>> folding, to limit redundancy and make eventual updating easier. (Same
>> for the cmpxchg helper further down, as it seems.)
> Also the difference is in where to place barrier before or after atomic
> instruction. I am not sure that we can easily folded this macros.

The folded macro would have two barrier parameters - on for acquire, one
for release.

Jan


From xen-devel-bounces@lists.xenproject.org Tue Jan 30 15:08:57 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 30 Jan 2024 15:08:57 +0000
Received: from list by lists.xenproject.org with outflank-mailman.673553.1047931 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUpjK-0005Pn-EY; Tue, 30 Jan 2024 15:08:54 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 673553.1047931; Tue, 30 Jan 2024 15:08:54 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUpjK-0005Pg-Bo; Tue, 30 Jan 2024 15:08:54 +0000
Received: by outflank-mailman (input) for mailman id 673553;
 Tue, 30 Jan 2024 15:08:52 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=Trk4=JI=citrix.com=prvs=75271d196=Andrew.Cooper3@srs-se1.protection.inumbo.net>)
 id 1rUpjI-0005Pa-Aw
 for xen-devel@lists.xenproject.org; Tue, 30 Jan 2024 15:08:52 +0000
Received: from esa3.hc3370-68.iphmx.com (esa3.hc3370-68.iphmx.com
 [216.71.145.155]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 7832b688-bf81-11ee-8a43-1f161083a0e0;
 Tue, 30 Jan 2024 16:08:50 +0100 (CET)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 7832b688-bf81-11ee-8a43-1f161083a0e0
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple;
  d=citrix.com; s=securemail; t=1706627330;
  h=from:to:cc:subject:date:message-id:mime-version:
   content-transfer-encoding;
  bh=HLMHriK7qQditz7wIGUQwiX09MROSVEgwt/tnEvoGNs=;
  b=IdYtof/yO/czqYmVeJcDBxVxT94Ou1eTBxVUgvN/qviO1ksL8PINnPgs
   nalBfSS2/AZc0+E2Ofm6ikonC9GBzXNX/V2uXeoqJeOlTEI8SylJfe+2a
   mP5POqLclAuH+GaNDoqed0aO5TqvAUIJaVQ3Fictl8kvLEZ0cEAetuI2m
   s=;
X-CSE-ConnectionGUID: HPWD20hBTe24NlJXhTOTnA==
X-CSE-MsgGUID: 1k5kzd2fS120ImIHKwuh9w==
Authentication-Results: esa3.hc3370-68.iphmx.com; dkim=none (message not signed) header.i=none
X-SBRS: 4.0
X-MesageID: 129761972
X-Ironport-Server: esa3.hc3370-68.iphmx.com
X-Remote-IP: 162.221.159.70
X-Policy: $RELAYED
X-ThreatScanner-Verdict: Negative
IronPort-Data: A9a23:IjC88Kl9mX/XCVkIIK6SOc3o5gzDJkRdPkR7XQ2eYbSJt1+Wr1Gzt
 xJODz2GP6reNjehKogkao6/8kIBuZTVzdRrHFdor381QSMWpZLJC+rCIxarNUt+DCFhoGFPt
 JxCN4aafKjYaleG+39B55C49SEUOZmgH+e6UKicfHkpGWeIcQ954Tp7gek1n4V0ttawBgKJq
 LvartbWfVSowFaYCEpNg064gE0p5KmaVA8w5ARkOagS5g6GzRH5MbpETU2PByqgKmVrNrbSq
 9brlNmR4m7f9hExPdKp+p6TnpoiG+O60aCm0xK6aoD66vRwjnVaPpUTbZLwXXx/mTSR9+2d/
 f0W3XCGpaXFCYWX8AgVe0Ew/yiTpsSq8pefSZS0mZT7I0Er7xIAahihZa07FdRwxwp5PY1B3
 dwgFxxXNhCpu+/snJS/aNlsuuMfKuC+aevzulk4pd3YJfMvQJSFSKTW/95Imjw3g6iiH96HO
 ZBfM2A2Kk2dMlsQYj/7C7pn9AusrlD5fydVtxS+oq0v7nKI5AdwzKLsIJzefdniqcB9xxzJ+
 Tyfrjujav0cHIWclDmX/iiivbaVxQL+eaIxC6C4p+E/1TV/wURMUUZLBDNXu8KRmkO4Ht5SN
 UEQ0i4vtrQpslymSMHnWB+1q2LCuQQTM/JyOeAn7ACGyoLP/h2UQGMDS1Zpd9gOpMIwAzsw2
 Te0c8jBXGI19ufPEDTEq+bS8mva1TUpwXEqRRc7YVFd4/PfrdtvqBbtftZfN5Kzp4igcd3v+
 AxmvBTSlp1K0pZVifzqrA+b6w9AsKQlWeLc2+k2Yo5GxlkgDGJdT9b0gWU3FN4ZRGpjcnGPv
 WIfh++V5/0UAJeGmUSlGbpVQuz0vKrYbG2N3zaD+qXNERz3pxZPmqgJvllDyLpBaJ5YKVcFn
 meN0e+u2HOjFCTzNvImC25AI88r0bLhBbzYaxwgVfIXOsIZXFberElTibu4gziFfL4EzftuZ
 v92sK+EUR4nNEiQ5GPsH7dAgeJ1mX5WKKG6bcmT8ilLGIG2PBa9IYrp+nPVBgzlxMtoeDnoz
 us=
IronPort-HdrOrdr: A9a23:48OeaK7Bw+FYnrJu5APXwMTXdLJyesId70hD6qhwISY6TiX+rb
 HIoB17726RtN9/YhEdcLy7VJVoIkmskKKdg7NhXotKNTOO0ADDQb2KhbGSpQEIcBeeygcy78
 hdmtBFeb/NMWQ=
X-Talos-CUID: 9a23:SvHkM2xCyd5Y9pN2MeZmBgU0Iv8JKCXd5kvdeROeDURZSIGydVm5rfY=
X-Talos-MUID: 9a23:9Fa4XgTbIlu+4b0+RXS1h2xhJssy7Z/3UhgslLQmmNaZNX1vbmI=
X-IronPort-AV: E=Sophos;i="6.05,707,1701147600"; 
   d="scan'208";a="129761972"
From: Andrew Cooper <andrew.cooper3@citrix.com>
To: Xen-devel <xen-devel@lists.xenproject.org>
CC: Andrew Cooper <andrew.cooper3@citrix.com>, Jan Beulich
	<JBeulich@suse.com>, =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?=
	<roger.pau@citrix.com>, Wei Liu <wl@xen.org>
Subject: [PATCH] x86/traps: Annotate {l,c}star_enter() as nocall
Date: Tue, 30 Jan 2024 15:08:39 +0000
Message-ID: <20240130150839.4130909-1-andrew.cooper3@citrix.com>
X-Mailer: git-send-email 2.30.2
MIME-Version: 1.0
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit

... as with other declarations which aren't legal to call from C.

Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
---
CC: Jan Beulich <JBeulich@suse.com>
CC: Roger Pau Monné <roger.pau@citrix.com>
CC: Wei Liu <wl@xen.org>
---
 xen/arch/x86/x86_64/traps.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/xen/arch/x86/x86_64/traps.c b/xen/arch/x86/x86_64/traps.c
index 668605e5bc67..02fdb3637d09 100644
--- a/xen/arch/x86/x86_64/traps.c
+++ b/xen/arch/x86/x86_64/traps.c
@@ -333,8 +333,8 @@ static unsigned int write_stub_trampoline(
 
 DEFINE_PER_CPU(struct stubs, stubs);
 
-void lstar_enter(void);
-void cstar_enter(void);
+void nocall lstar_enter(void);
+void nocall cstar_enter(void);
 
 void subarch_percpu_traps_init(void)
 {

base-commit: 4a7e71aa085170f1a13976507c8e248f8715f116
prerequisite-patch-id: 897f8a9f53b9c95c7961be1793b2685c11dc6e50
-- 
2.30.2



From xen-devel-bounces@lists.xenproject.org Tue Jan 30 15:14:55 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 30 Jan 2024 15:14:55 +0000
Received: from list by lists.xenproject.org with outflank-mailman.673560.1047941 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUpp5-0007ct-1V; Tue, 30 Jan 2024 15:14:51 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 673560.1047941; Tue, 30 Jan 2024 15:14:51 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUpp4-0007cm-VF; Tue, 30 Jan 2024 15:14:50 +0000
Received: by outflank-mailman (input) for mailman id 673560;
 Tue, 30 Jan 2024 15:14:50 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=XFHt=JI=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rUpp4-0007cg-An
 for xen-devel@lists.xenproject.org; Tue, 30 Jan 2024 15:14:50 +0000
Received: from mail-lf1-x135.google.com (mail-lf1-x135.google.com
 [2a00:1450:4864:20::135])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 4f6c1003-bf82-11ee-8a43-1f161083a0e0;
 Tue, 30 Jan 2024 16:14:49 +0100 (CET)
Received: by mail-lf1-x135.google.com with SMTP id
 2adb3069b0e04-5111ef545bfso972153e87.1
 for <xen-devel@lists.xenproject.org>; Tue, 30 Jan 2024 07:14:49 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 l22-20020a05600c1d1600b0040ef95e1c78sm5374679wms.3.2024.01.30.07.14.48
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 30 Jan 2024 07:14:48 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 4f6c1003-bf82-11ee-8a43-1f161083a0e0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1706627689; x=1707232489; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=H5qKpPPyT2bHgLKzcgC0ndj7WAiMHlxSTR3Qvxg11KY=;
        b=C26t13S8pfNCLjQ90mYO4mxqiUDEzejn2JjfQRihGQnPYSnu8IU5S8O0aPzOBHk7Xi
         B1CZejqb0ODhI4aEy5njB61cz/wLw9UpSvg3SyDVVwaL8zn3iNcf39bVT9n3yUphhRoq
         5ns4aA7w1mTOkxcRRPMW7rn18H2oqlLoNLX13GPWTVf2hd3R0cUQGeuPzlHvoIYmcjeS
         4D1iXwt9TN9VX6If/5Gop4AyQB4MSRwlXsUbEcprLIJsQD9fAl34xi2YPwFeO0DSEoti
         mq9bFzzwlN4LVYN+OkqUH5/cRdtifk6RZEfkuPuGOx9ukUsV261a/EyE0Ty1BQIqj8g0
         XwSA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706627689; x=1707232489;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=H5qKpPPyT2bHgLKzcgC0ndj7WAiMHlxSTR3Qvxg11KY=;
        b=k5e9Jd+J5JNwMmyyR6OiSWQ+T9UKPuRunY0m6EPLevFY2XcEm+W22J6HLApVK4XkUD
         +nZeU+QU+mk+Cmt515ejCIp16D03bAK2hdd3Zz90Hm6tOa2/zB4bhxGgqlqJIPEqD4NU
         wYk6mEwfxTA8YBIIEBevNmWifUdJfe7kI2O6FAIE2eU2rnkwox/TxTBT407OkOm3+dnN
         cm5J6ViWs7MYJmPGP/T2p93Qkc6Q2ibRfGlHNGr6usKexvAZ/P+9/A1HR43ForonmZVC
         5FoZxBpii7sopwvlv6Sp0tz07h0Zk1s2Qnwgcb+nY6qnmmlZKaCI9blulV1XHq/ZnRsn
         ArOA==
X-Gm-Message-State: AOJu0Yz3DM1UAg2+YxrgqCC6o7FQd7JJERHbhCfv/3+nkX2PRhsJzH5d
	jWJ4Paq0l5ndTr2uOvmnPPBdHPch440edZ7vip5OFzqBSPOA6ciDasYefek/Iw==
X-Google-Smtp-Source: AGHT+IHdsw4vRTsvm0uN9cptYYIqbBiAKrlsD0Qkih3iY9Fe0MeLsuYRUga1RxXZjTEk+wglUj5HHQ==
X-Received: by 2002:a05:6512:3f8:b0:50e:76d1:b9c5 with SMTP id n24-20020a05651203f800b0050e76d1b9c5mr5433212lfq.60.1706627689044;
        Tue, 30 Jan 2024 07:14:49 -0800 (PST)
X-Forwarded-Encrypted: i=0; AJvYcCUoUmhPUOegRKBfEEb/Us8ZKqL3n8JKxN8x+TxSbHTalXEwnJKsAmyrpiseKDcZS5pF+yDtOsboU1fFgJKZO/rU31bOO9ImUhkngCc8gimgcFUTW7KB2I77wMc=
Message-ID: <05d63a0e-d3e3-407a-bf9a-4179f57a8a53@suse.com>
Date: Tue, 30 Jan 2024 16:14:47 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] x86/boot: Add braces in reloc.c
Content-Language: en-US
To: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Wei Liu <wl@xen.org>, Xen-devel <xen-devel@lists.xenproject.org>
References: <20240130144838.4119329-1-andrew.cooper3@citrix.com>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <20240130144838.4119329-1-andrew.cooper3@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 30.01.2024 15:48, Andrew Cooper wrote:
> 107 lines is an unreasonably large switch statement to live inside a
> brace-less for loop.  Drop the comment that's clumsily trying to cover the
> fact that this logic has wrong-looking indentation.
> 
> No functional change.
> 
> Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>

Acked-by: Jan Beulich <jbeulich@suse.com>




From xen-devel-bounces@lists.xenproject.org Tue Jan 30 15:15:40 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 30 Jan 2024 15:15:40 +0000
Received: from list by lists.xenproject.org with outflank-mailman.673561.1047951 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUpps-0008Ik-Dv; Tue, 30 Jan 2024 15:15:40 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 673561.1047951; Tue, 30 Jan 2024 15:15:40 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUpps-0008Id-BF; Tue, 30 Jan 2024 15:15:40 +0000
Received: by outflank-mailman (input) for mailman id 673561;
 Tue, 30 Jan 2024 15:15:39 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=XFHt=JI=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rUppq-0008H3-Vv
 for xen-devel@lists.xenproject.org; Tue, 30 Jan 2024 15:15:38 +0000
Received: from mail-wm1-x333.google.com (mail-wm1-x333.google.com
 [2a00:1450:4864:20::333])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 6babd1b0-bf82-11ee-98f5-efadbce2ee36;
 Tue, 30 Jan 2024 16:15:37 +0100 (CET)
Received: by mail-wm1-x333.google.com with SMTP id
 5b1f17b1804b1-40ef64d8955so19980275e9.3
 for <xen-devel@lists.xenproject.org>; Tue, 30 Jan 2024 07:15:36 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 l22-20020a05600c1d1600b0040ef95e1c78sm5374679wms.3.2024.01.30.07.15.35
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 30 Jan 2024 07:15:36 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 6babd1b0-bf82-11ee-98f5-efadbce2ee36
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1706627736; x=1707232536; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=w+/TPHNAo5PpoFzjzPS+oeE0GdaVdCIMlqzzJjCizIo=;
        b=acA2oq4YVOYHaam2evKd1dIL1RRhT4Jg7F6Aev97F57AxEi6gZcOEdr4r4GpgowuZ9
         69DpNXatHEdJvv8e8HpL+XErErT1W8ayokivzlEhO/0z9Zm8/IFG3muDykpMZTxuGW3Z
         AUjfdczz7wSnwc9d3W+7aM+x5WXzrIbcEEjBQ3ISoqPh79E9UgdOFtQfUXIXHiJ/ELQP
         47sMwROf2J3BSjvSDLJfEI4AUkjG4eIXH8/4ET8+sQWogumls3B112ZOcnq5bMyQ6moU
         dTOrSkfbIlfLCTo4k38kpBmpbVo+YBxlI4VzXMXqgUnM4qstxU4Hcpb9UIduLP/sqLu3
         uExg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706627736; x=1707232536;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=w+/TPHNAo5PpoFzjzPS+oeE0GdaVdCIMlqzzJjCizIo=;
        b=LgPpedVwNAumSIp0jTjtWnL3HVvXxs0XdZ74YwwtFA8/nGL2al4SWybfUgp45CqYgw
         grjfLNo4KrIhzSj2FMYzZrJIAoQ1yDkwTA8dvlejr406tbyufxGLOTZh2uiHVzLssjvF
         QU2jYMAod7a1by+l/1T9F73fTgrEcbDVIFtWv6uiNcjv0LyBeQNzOX2QMIxs9TIxQ1kn
         E9y6AGYTT1R5t1ZCHWxK9oukrvNc8gzhKs12z6oh3PYECX5ErDL49eGqGRkqBUjthk+L
         LmJSnyaBp2syM2gDWqE617OXkX5ZkX/hX5teBgpCmAaqyXuxmFYLJNRSlQzdVb6gDRwz
         JEIQ==
X-Gm-Message-State: AOJu0Yzc0dpkYfZXLMPRaYVSwvcuKQKzIhDqqjDKBZCcjJ5CpmA3+mZE
	KjURjLHjGwZnjNrABjKSKp372zt1S/PyLnMaSjl1LpUiVK7ewfaOzOqxUTh3Qw==
X-Google-Smtp-Source: AGHT+IFYHXXQiqVJ4T2LQCGyn55ByMmy8igPHJ1SMKkI9ikMtWew+RvuBvmlYiwNOM3Dpb9C7xYXSQ==
X-Received: by 2002:a05:600c:3511:b0:40e:fbdd:23a4 with SMTP id h17-20020a05600c351100b0040efbdd23a4mr3426472wmq.26.1706627736444;
        Tue, 30 Jan 2024 07:15:36 -0800 (PST)
X-Forwarded-Encrypted: i=0; AJvYcCX25Nc+CRSTazqwoINvvEOXhFC3dgW3SKTMZOzAaln/be39FA496uE1ha7i8rzxAGJB2rkHXWHteOHcMXmtV8J79MdJZH5+LrsRTj/Cx/f9HEQqULKg5EQVQyI=
Message-ID: <1ca6bd31-41e8-4a81-9fac-49d2fbd5f089@suse.com>
Date: Tue, 30 Jan 2024 16:15:35 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] x86/traps: Annotate {l,c}star_enter() as nocall
Content-Language: en-US
To: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Wei Liu <wl@xen.org>, Xen-devel <xen-devel@lists.xenproject.org>
References: <20240130150839.4130909-1-andrew.cooper3@citrix.com>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <20240130150839.4130909-1-andrew.cooper3@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 30.01.2024 16:08, Andrew Cooper wrote:
> ... as with other declarations which aren't legal to call from C.
> 
> Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>

Acked-by: Jan Beulich <jbeulich@suse.com>




From xen-devel-bounces@lists.xenproject.org Tue Jan 30 15:16:44 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 30 Jan 2024 15:16:44 +0000
Received: from list by lists.xenproject.org with outflank-mailman.673564.1047961 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUpqt-0000Xj-Mm; Tue, 30 Jan 2024 15:16:43 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 673564.1047961; Tue, 30 Jan 2024 15:16:43 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUpqt-0000Xc-Ju; Tue, 30 Jan 2024 15:16:43 +0000
Received: by outflank-mailman (input) for mailman id 673564;
 Tue, 30 Jan 2024 15:16:42 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=xawb=JI=gmail.com=oleksii.kurochko@srs-se1.protection.inumbo.net>)
 id 1rUpqs-0000XK-2T
 for xen-devel@lists.xenproject.org; Tue, 30 Jan 2024 15:16:42 +0000
Received: from mail-lf1-x12d.google.com (mail-lf1-x12d.google.com
 [2a00:1450:4864:20::12d])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 915420ef-bf82-11ee-98f5-efadbce2ee36;
 Tue, 30 Jan 2024 16:16:40 +0100 (CET)
Received: by mail-lf1-x12d.google.com with SMTP id
 2adb3069b0e04-5111e3b03dfso555827e87.0
 for <xen-devel@lists.xenproject.org>; Tue, 30 Jan 2024 07:16:40 -0800 (PST)
Received: from [192.168.206.239] ([94.75.70.14])
 by smtp.gmail.com with ESMTPSA id
 k3-20020a05651210c300b0050e6df07728sm1495012lfg.180.2024.01.30.07.16.38
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 30 Jan 2024 07:16:39 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 915420ef-bf82-11ee-98f5-efadbce2ee36
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1706627799; x=1707232599; darn=lists.xenproject.org;
        h=mime-version:user-agent:content-transfer-encoding:references
         :in-reply-to:date:cc:to:from:subject:message-id:from:to:cc:subject
         :date:message-id:reply-to;
        bh=zT48tCWBHP/qFtXAZcXm0Ce52oAyaABbhemGgw8xV54=;
        b=gvVT2CnX1MIKZL+4dfo/YL1cN6+8gz48HS0Ih1fGCFi0VSRJVxQUSBnXrZJ1keU0mJ
         aI8UMdLgva5zRW0nM356xfD1k2fpLFQ2RbHzHPeaMqvpsLzaToc8MSopkqtJWMW6v9dt
         /SMVLXtQk3mJNuYP80Um9sjt4e91CZ4Vyd4964VGL14ishAksMK5QzXFDNaDfnUn8+jh
         PBuQTVAmIZkre2jATLjgcoi1G4wRRvDaIkcIMR9gUKek6Wd6T+o4K1pJzcD6+vtBfWGj
         D9Y2gbzHPa7lKbuBJuq7WP6Jl+yLGQQ1HZ4UX2GkdSIyu030N3kneVWtlgsG/PzijwCu
         snrg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706627799; x=1707232599;
        h=mime-version:user-agent:content-transfer-encoding:references
         :in-reply-to:date:cc:to:from:subject:message-id:x-gm-message-state
         :from:to:cc:subject:date:message-id:reply-to;
        bh=zT48tCWBHP/qFtXAZcXm0Ce52oAyaABbhemGgw8xV54=;
        b=Vxcmik0VseUqOn3pw1W8YMvEECD5Ch/iHSPX8lz59ae6L5cKzDbwQ/FBJaqHUk2Jdl
         Q35LyMVRam4qMRydcyqm448FVk1ECwE+cF+zkIC+HvC63HTibenfRfVR1pXC2xPPzMjS
         uhS43gjh/ww5VospUaHUnFOJrm9F7uNysy/A7zmE95aEP4EBcmNODp6IOBYkHSF9z219
         D2DEGqNWJwPib0oVm1cs1A3OuwKSWzZ8JyG7T0rexrElb/uFpfbkzOYLOPy2gF0VltOn
         RXwM/vTaY+EpHNMW/PmbUdnkpDDpsRjO1sd66gmolCAqYdKM39Gu1UQ3xO85hsler0+o
         Ndzw==
X-Gm-Message-State: AOJu0YwPG4P5FMNX3l5/LV0IFPZZmz7KRoa5xyTuXjPPDvKuUP6T2pe9
	CK9Rd7zbj6CccKiTfm6HNqMwlnG42c/wQtFoAttP78PJ9qhaJEFc
X-Google-Smtp-Source: AGHT+IHF/oDMpPWTqnI5U0fnjkxh0ZgAX2e8o9n6HVYLa5l9upW1NX1wcmKVWMcYOVG+YFn6KT6DLg==
X-Received: by 2002:a05:6512:138d:b0:510:b5c:a79a with SMTP id fc13-20020a056512138d00b005100b5ca79amr820164lfb.10.1706627799385;
        Tue, 30 Jan 2024 07:16:39 -0800 (PST)
Message-ID: <c589ba26c0b57856723a1463cc9807408301886d.camel@gmail.com>
Subject: Re: [PATCH v3 13/34] xen/riscv: introduce cmpxchg.h
From: Oleksii <oleksii.kurochko@gmail.com>
To: Jan Beulich <jbeulich@suse.com>
Cc: Alistair Francis <alistair.francis@wdc.com>, Bob Eshleman
 <bobbyeshleman@gmail.com>, Connor Davis <connojdavis@gmail.com>, Andrew
 Cooper <andrew.cooper3@citrix.com>, George Dunlap
 <george.dunlap@citrix.com>,  Julien Grall <julien@xen.org>, Stefano
 Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>, 
 xen-devel@lists.xenproject.org
Date: Tue, 30 Jan 2024 17:16:38 +0200
In-Reply-To: <9e604a3e-fac7-49dd-8f84-744e72ba71b7@suse.com>
References: <cover.1703255175.git.oleksii.kurochko@gmail.com>
	 <214bfd61c8ccf2a5b2c640b815ebfa6a705f6234.1703255175.git.oleksii.kurochko@gmail.com>
	 <8ee35a76-f3ef-4143-93ef-8e6089f82a80@suse.com>
	 <848bcb2d7e5357ca6d3672bef52ac57c5b1f7f95.camel@gmail.com>
	 <9e604a3e-fac7-49dd-8f84-744e72ba71b7@suse.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: base64
User-Agent: Evolution 3.50.2 (3.50.2-1.fc39) 
MIME-Version: 1.0

T24gVHVlLCAyMDI0LTAxLTMwIGF0IDE2OjA1ICswMTAwLCBKYW4gQmV1bGljaCB3cm90ZToKPiBP
biAzMC4wMS4yMDI0IDE1OjU3LCBPbGVrc2lpIHdyb3RlOgo+ID4gT24gTW9uLCAyMDI0LTAxLTIy
IGF0IDE3OjI3ICswMTAwLCBKYW4gQmV1bGljaCB3cm90ZToKPiA+ID4gPiArI2RlZmluZSBfX3hj
aGdfYWNxdWlyZShwdHIsIG5ldywgc2l6ZSkgXAo+ID4gPiA+ICsoeyBcCj4gPiA+ID4gK8KgwqDC
oCBfX3R5cGVvZl9fKHB0cikgcHRyX18gPSAocHRyKTsgXAo+ID4gPiA+ICvCoMKgwqAgX190eXBl
b2ZfXyhuZXcpIG5ld19fID0gKG5ldyk7IFwKPiA+ID4gPiArwqDCoMKgIF9fdHlwZW9mX18oKihw
dHIpKSByZXRfXzsgXAo+ID4gPiA+ICvCoMKgwqAgc3dpdGNoIChzaXplKSBcCj4gPiA+ID4gKwl7
IFwKPiA+ID4gPiArwqDCoMKgIGNhc2UgNDogXAo+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoCBhc20g
dm9sYXRpbGUoIFwKPiA+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAiCWFtb3N3YXAudyAl
MCwgJTIsICUxXG4iIFwKPiA+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBSSVNDVl9BQ1FV
SVJFX0JBUlJJRVIgXAo+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDogIj1yIiAocmV0
X18pLCAiK0EiICgqcHRyX18pIFwKPiA+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCA6ICJy
IiAobmV3X18pIFwKPiA+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCA6ICJtZW1vcnkiICk7
IFwKPiA+ID4gPiArwqDCoMKgwqDCoMKgwqAgYnJlYWs7IFwKPiA+ID4gPiArwqDCoMKgIGNhc2Ug
ODogXAo+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoCBhc20gdm9sYXRpbGUoIFwKPiA+ID4gPiArwqDC
oMKgwqDCoMKgwqDCoMKgwqDCoCAiCWFtb3N3YXAuZCAlMCwgJTIsICUxXG4iIFwKPiA+ID4gPiAr
wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBSSVNDVl9BQ1FVSVJFX0JBUlJJRVIgXAo+ID4gPiA+ICvC
oMKgwqDCoMKgwqDCoMKgwqDCoMKgIDogIj1yIiAocmV0X18pLCAiK0EiICgqcHRyX18pIFwKPiA+
ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCA6ICJyIiAobmV3X18pIFwKPiA+ID4gPiArwqDC
oMKgwqDCoMKgwqDCoMKgwqDCoCA6ICJtZW1vcnkiICk7IFwKPiA+ID4gPiArwqDCoMKgwqDCoMKg
wqAgYnJlYWs7IFwKPiA+ID4gPiArwqDCoMKgIGRlZmF1bHQ6IFwKPiA+ID4gPiArwqDCoMKgwqDC
oMKgwqAgQVNTRVJUX1VOUkVBQ0hBQkxFKCk7IFwKPiA+ID4gPiArwqDCoMKgIH0gXAo+ID4gPiA+
ICvCoMKgwqAgcmV0X187IFwKPiA+ID4gPiArfSkKPiA+ID4gCj4gPiA+IElmIEknbSBub3QgbWlz
dGFrZW4gdGhpcyBkaWZmZXJzIGZyb20gX194Y2hnX3JlbGF4ZWQoKSBvbmx5IGluCj4gPiA+IHRo
ZQo+ID4gPiB1c2UKPiA+ID4gb2YgUklTQ1ZfQUNRVUlSRV9CQVJSSUVSLCBhbmQgLi4uCj4gPiA+
IAo+ID4gPiA+ICsjZGVmaW5lIHhjaGdfYWNxdWlyZShwdHIsIHgpIFwKPiA+ID4gPiArKHsgXAo+
ID4gPiA+ICvCoMKgwqAgX190eXBlb2ZfXygqKHB0cikpIHhfID0gKHgpOyBcCj4gPiA+ID4gK8Kg
wqDCoCAoX190eXBlb2ZfXygqKHB0cikpKSBfX3hjaGdfYWNxdWlyZSgocHRyKSwgeF8sCj4gPiA+
ID4gc2l6ZW9mKCoocHRyKSkpOyBcCj4gPiA+ID4gK30pCj4gPiA+ID4gKwo+ID4gPiA+ICsjZGVm
aW5lIF9feGNoZ19yZWxlYXNlKHB0ciwgbmV3LCBzaXplKSBcCj4gPiA+ID4gKyh7IFwKPiA+ID4g
PiArwqDCoMKgIF9fdHlwZW9mX18ocHRyKSBwdHJfXyA9IChwdHIpOyBcCj4gPiA+ID4gK8KgwqDC
oCBfX3R5cGVvZl9fKG5ldykgbmV3X18gPSAobmV3KTsgXAo+ID4gPiA+ICvCoMKgwqAgX190eXBl
b2ZfXygqKHB0cikpIHJldF9fOyBcCj4gPiA+ID4gK8KgwqDCoCBzd2l0Y2ggKHNpemUpIFwKPiA+
ID4gPiArCXsgXAo+ID4gPiA+ICvCoMKgwqAgY2FzZSA0OiBcCj4gPiA+ID4gK8KgwqDCoMKgwqDC
oMKgIGFzbSB2b2xhdGlsZSAoIFwKPiA+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBSSVND
Vl9SRUxFQVNFX0JBUlJJRVIgXAo+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICIJYW1v
c3dhcC53ICUwLCAlMiwgJTFcbiIgXAo+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDog
Ij1yIiAocmV0X18pLCAiK0EiICgqcHRyX18pIFwKPiA+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKg
wqDCoCA6ICJyIiAobmV3X18pIFwKPiA+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCA6ICJt
ZW1vcnkiKTsgXAo+ID4gPiA+ICvCoMKgwqDCoMKgwqDCoCBicmVhazsgXAo+ID4gPiA+ICvCoMKg
wqAgY2FzZSA4OiBcCj4gPiA+ID4gK8KgwqDCoMKgwqDCoMKgIGFzbSB2b2xhdGlsZSAoIFwKPiA+
ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBSSVNDVl9SRUxFQVNFX0JBUlJJRVIgXAo+ID4g
PiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICIJYW1vc3dhcC5kICUwLCAlMiwgJTFcbiIgXAo+
ID4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDogIj1yIiAocmV0X18pLCAiK0EiICgqcHRy
X18pIFwKPiA+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCA6ICJyIiAobmV3X18pIFwKPiA+
ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCA6ICJtZW1vcnkiKTsgXAo+ID4gPiA+ICvCoMKg
wqDCoMKgwqDCoCBicmVhazsgXAo+ID4gPiA+ICvCoMKgwqAgZGVmYXVsdDogXAo+ID4gPiA+ICvC
oMKgwqDCoMKgwqDCoCBBU1NFUlRfVU5SRUFDSEFCTEUoKTsgXAo+ID4gPiA+ICvCoMKgwqAgfSBc
Cj4gPiA+ID4gK8KgwqDCoCByZXRfXzsgXAo+ID4gPiA+ICt9KQo+ID4gPiAKPiA+ID4gdGhpcyBv
bmx5IGluIHRoZSB1c2Ugb2YgUklTQ1ZfUkVMRUFTRV9CQVJSSUVSLiBJZiBzbyB0aGV5IGxpa2Vs
eQo+ID4gPiB3YW50Cj4gPiA+IGZvbGRpbmcsIHRvIGxpbWl0IHJlZHVuZGFuY3kgYW5kIG1ha2Ug
ZXZlbnR1YWwgdXBkYXRpbmcgZWFzaWVyLgo+ID4gPiAoU2FtZQo+ID4gPiBmb3IgdGhlIGNtcHhj
aGcgaGVscGVyIGZ1cnRoZXIgZG93biwgYXMgaXQgc2VlbXMuKQo+ID4gQWxzbyB0aGUgZGlmZmVy
ZW5jZSBpcyBpbiB3aGVyZSB0byBwbGFjZSBiYXJyaWVyIGJlZm9yZSBvciBhZnRlcgo+ID4gYXRv
bWljCj4gPiBpbnN0cnVjdGlvbi4gSSBhbSBub3Qgc3VyZSB0aGF0IHdlIGNhbiBlYXNpbHkgZm9s
ZGVkIHRoaXMgbWFjcm9zLgo+IAo+IFRoZSBmb2xkZWQgbWFjcm8gd291bGQgaGF2ZSB0d28gYmFy
cmllciBwYXJhbWV0ZXJzIC0gb24gZm9yIGFjcXVpcmUsCj4gb25lCj4gZm9yIHJlbGVhc2UuClll
cywgaW4gc3VjaCBjYXNlIGl0IHdpbGwgd29yay4KClRoYW5rcy4KCn4gT2xla3NpaQo=



From xen-devel-bounces@lists.xenproject.org Tue Jan 30 15:33:49 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 30 Jan 2024 15:33:49 +0000
Received: from list by lists.xenproject.org with outflank-mailman.673576.1047971 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUq7K-00077G-3g; Tue, 30 Jan 2024 15:33:42 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 673576.1047971; Tue, 30 Jan 2024 15:33:42 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUq7K-000779-1A; Tue, 30 Jan 2024 15:33:42 +0000
Received: by outflank-mailman (input) for mailman id 673576;
 Tue, 30 Jan 2024 15:33:40 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=rmC/=JI=bounce.vates.tech=bounce-md_30504962.65b916d0.v1-6e5fce633a274c1eafd97dcf402857bc@srs-se1.protection.inumbo.net>)
 id 1rUq7I-000770-2H
 for xen-devel@lists.xenproject.org; Tue, 30 Jan 2024 15:33:40 +0000
Received: from mail133-13.atl131.mandrillapp.com
 (mail133-13.atl131.mandrillapp.com [198.2.133.13])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id ef5de662-bf84-11ee-98f5-efadbce2ee36;
 Tue, 30 Jan 2024 16:33:37 +0100 (CET)
Received: from pmta13.mandrill.prod.atl01.rsglab.com (localhost [127.0.0.1])
 by mail133-13.atl131.mandrillapp.com (Mailchimp) with ESMTP id
 4TPThw26fjzNCd9DZ
 for <xen-devel@lists.xenproject.org>; Tue, 30 Jan 2024 15:33:36 +0000 (GMT)
Received: from [37.26.189.201] by mandrillapp.com id
 6e5fce633a274c1eafd97dcf402857bc; Tue, 30 Jan 2024 15:33:36 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: ef5de662-bf84-11ee-98f5-efadbce2ee36
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mandrillapp.com;
	s=mte1; t=1706628816; x=1706889316;
	bh=mSam6B+xwtzVmw0y4+wx3N8oXaIFj7LqpE7cntKN0Vg=;
	h=From:Subject:Message-Id:To:Feedback-ID:Date:MIME-Version:
	 Content-Type:Content-Transfer-Encoding:CC:Date:Subject:From;
	b=dZ8o82ZxrYCDLHHF24dIZ+kA9NFT6QWb+HV3DTg6yDt69epqcIT2SLXBp0QMahCwt
	 0Duq+iF8g5wa+IKL2Ef058su/gbTRaKxIkruBv6tPKdgOW7yBHGhmZ4bAdpr1xaCWN
	 KoAchapGUxUHvPyWLPevR3CTlR/xH4HvzSZAGwW27oDnz2zhZYw8VorEigveXQUKw6
	 zndVnG/0G2L63nevLf7H7saay2fWhfEEVP+LpUAXHAFlQx39PUjfPvvOYs65785gZu
	 B7oiWVUB81mEWBHIAiMLDEPz33BuxzYrq+l17hhPpTDBp4GpQ/r4QDVQ+8v/Hrwkqj
	 gikUwQXfsmHkQ==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vates.tech; s=mte1;
	t=1706628816; x=1706889316; i=yann.dirson@vates.tech;
	bh=mSam6B+xwtzVmw0y4+wx3N8oXaIFj7LqpE7cntKN0Vg=;
	h=From:Subject:Message-Id:To:Feedback-ID:Date:MIME-Version:
	 Content-Type:Content-Transfer-Encoding:CC:Date:Subject:From;
	b=tQdhvImIwVUOwKQulMVZBbK7tynv+g8Yugmox8vFOv2dByLGXCLZk0HCCOUa57jIN
	 ZPjocz137c6ljHvQKO5Lw7/GdOYWZUgx9/OBQrX/BG5V6t1IUl12ZWXOenOJG99lXT
	 2B/EoGrJ4chGMPc13zfv1OQof4RXS2z4V2h5vnIGnpEHx4afDI0CrFBu+bVzw3WZTQ
	 I4495Bm6AdBZiQ84bHDWTHY+d3NhkQqRqyE0jHSsFQvj2iLQosa4CE3LGEQdnSkJrC
	 ctDSYzOnigtfAZB2cSJuWDSzWoJIAhewatOgFCNwgNK7psA8sC/LIKbEXJO4QEEmUk
	 D7uvOm5LOjrIA==
From: Yann Dirson <yann.dirson@vates.tech>
Subject: =?utf-8?Q?Mirroring=20git=20repositories=20to=20gitlab?=
X-Bm-Disclaimer: Yes
X-Bm-Milter-Handled: 4ffbd6c1-ee69-4e1b-aabd-f977039bd3e2
X-Bm-Transport-Timestamp: 1706628815555
Message-Id: <edcb2078-0039-49a6-a93b-e35d7ffccde8@vates.tech>
To: xen-devel@lists.xenproject.org
X-Native-Encoded: 1
X-Report-Abuse: =?UTF-8?Q?Please=20forward=20a=20copy=20of=20this=20message,=20including=20all=20headers,=20to=20abuse@mandrill.com.=20You=20can=20also=20report=20abuse=20here:=20https://mandrillapp.com/contact/abuse=3Fid=3D30504962.6e5fce633a274c1eafd97dcf402857bc?=
X-Mandrill-User: md_30504962
Feedback-ID: 30504962:30504962.20240130:md
Date: Tue, 30 Jan 2024 15:33:36 +0000
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 7bit

Hello all,

The official project git repositories on https://xenbits.xen.org/ do not 
let people subscribe to get eg. notifications on push.  A few repos are 
mirrored in https://gitlab.com/xen-project/ but it does not look like 
there are that many of them, aside from xen.git.

I would love to have all repositories publicly mirrored there, maybe in 
a "xenbits-mirror" subgroub.  Could we do that, or would there be any 
problem with it?

Best regards,
-- 
Yann


Yann Dirson | Vates Platform Developer

XCP-ng & Xen Orchestra - Vates solutions

web: https://vates.tech


From xen-devel-bounces@lists.xenproject.org Tue Jan 30 15:47:12 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 30 Jan 2024 15:47:12 +0000
Received: from list by lists.xenproject.org with outflank-mailman.673582.1047982 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUqKC-0004Tj-8Z; Tue, 30 Jan 2024 15:47:00 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 673582.1047982; Tue, 30 Jan 2024 15:47:00 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUqKC-0004Tc-4d; Tue, 30 Jan 2024 15:47:00 +0000
Received: by outflank-mailman (input) for mailman id 673582;
 Tue, 30 Jan 2024 15:46:58 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=M5qC=JI=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1rUqKA-0004TW-R0
 for xen-devel@lists.xenproject.org; Tue, 30 Jan 2024 15:46:58 +0000
Received: from mail-wm1-x32e.google.com (mail-wm1-x32e.google.com
 [2a00:1450:4864:20::32e])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id cb18b0f4-bf86-11ee-98f5-efadbce2ee36;
 Tue, 30 Jan 2024 16:46:55 +0100 (CET)
Received: by mail-wm1-x32e.google.com with SMTP id
 5b1f17b1804b1-40ef6da20feso13427715e9.0
 for <xen-devel@lists.xenproject.org>; Tue, 30 Jan 2024 07:46:55 -0800 (PST)
Received: from [10.80.67.30] (default-46-102-197-194.interdsl.co.uk.
 [46.102.197.194]) by smtp.gmail.com with ESMTPSA id
 n6-20020a05600c500600b0040e3488f16dsm13446984wmr.12.2024.01.30.07.46.53
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 30 Jan 2024 07:46:54 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: cb18b0f4-bf86-11ee-98f5-efadbce2ee36
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1706629614; x=1707234414; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=H4jHPpjCElDfwWmewj4NBK7BMEReCe1vgLpl7mZotfY=;
        b=mNVu8oYbuhU1WiBOpNRK88HMeF9PwR2FPrzKUYoo7JMryhURJ3R48WwBB1AZFG0F9F
         Ka/ECokSyc6YGX/GLbksYlajAMo4yMRS2/j21bpZmOarsyj/+3h3rDcG89SREMJbusEI
         x18aidyKoCzv1yI/BCHX5vkaNUB4ufheMIjlc=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706629614; x=1707234414;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=H4jHPpjCElDfwWmewj4NBK7BMEReCe1vgLpl7mZotfY=;
        b=B42PlCNm2ePxO0RMuheBM3Bd8NFBX/oF37n9HswYG4yCbG4viUIeXlEDqog74x5aMW
         WiADEhtlzAH2YaSHu59QrYcwJq82gkBhzjnjsAHI2ROWPjGZ+BfaJOww8Qn4er5VMFZP
         nqYp3t5rjsF2Uglq3QUiyGnAnbtNbmsAvYVIWY2hxjnYCgP0K9tOMY1n9OfEoassatyK
         FlorEcQYtTZJ5UutMEJ57K57WdZ7Y9osbA/HwUZD2RO3icQOvJjpL8Sq/HoPPPwXaxJ6
         LjhuvMcwusBeFCx4epURx5x8ZAKRgG+J/UwV/QGpKdtWzRoievu07ll83ErOouISpNS1
         IQhw==
X-Gm-Message-State: AOJu0YwoCanmICDp8ibrvd7extUwoEyNibRJeiSkZGM4t5wwfqPFNkGN
	eXl/E1HrA7o4UKgsHiZqP5P6BjvepvL7Zl2prTLFJ67WANohz1FRD2wx9qAN9DsaeyRNgg8pXyN
	i
X-Google-Smtp-Source: AGHT+IFazJfdusIhCpaaf8e5HYO2Ertsg+9Bj9zUZ2cHtfQFiu/R+ZInGSnKQsIhWMPBOJX/zL96jg==
X-Received: by 2002:a05:600c:4f08:b0:40f:993e:3594 with SMTP id l8-20020a05600c4f0800b0040f993e3594mr1278607wmq.7.1706629614453;
        Tue, 30 Jan 2024 07:46:54 -0800 (PST)
X-Forwarded-Encrypted: i=0; AJvYcCWIQL0MmF0IcfNWtas2zBzqOTgPU5xiApF8Eb0YK4WqGhMFDQrPupdGtBBHfYVqCTuAaHPSC51qUJpw5W55IHkLzxZ2JxmaV/mLA6nttM3NRVGg/26VWcnGckLUOHT+/B751/94
Message-ID: <ef0f98b2-f06a-4afc-b338-ef0c7fedcf36@citrix.com>
Date: Tue, 30 Jan 2024 15:46:53 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 1/3] x86/intel: expose IPRED_CTRL to guests
Content-Language: en-GB
To: Jan Beulich <jbeulich@suse.com>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger.pau@citrix.com>
Cc: Wei Liu <wl@xen.org>, xen-devel@lists.xenproject.org
References: <20240130091400.50622-1-roger.pau@citrix.com>
 <20240130091400.50622-2-roger.pau@citrix.com>
 <3959f556-6177-473e-a052-bec11b5a8a9b@suse.com> <ZbjmS2oLAV7Fyqdn@macbook>
 <0ad880e8-0f2b-4519-971e-c98b3411fba5@suse.com>
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 xsFNBFLhNn8BEADVhE+Hb8i0GV6mihnnr/uiQQdPF8kUoFzCOPXkf7jQ5sLYeJa0cQi6Penp
 VtiFYznTairnVsN5J+ujSTIb+OlMSJUWV4opS7WVNnxHbFTPYZVQ3erv7NKc2iVizCRZ2Kxn
 srM1oPXWRic8BIAdYOKOloF2300SL/bIpeD+x7h3w9B/qez7nOin5NzkxgFoaUeIal12pXSR
 Q354FKFoy6Vh96gc4VRqte3jw8mPuJQpfws+Pb+swvSf/i1q1+1I4jsRQQh2m6OTADHIqg2E
 ofTYAEh7R5HfPx0EXoEDMdRjOeKn8+vvkAwhviWXTHlG3R1QkbE5M/oywnZ83udJmi+lxjJ5
 YhQ5IzomvJ16H0Bq+TLyVLO/VRksp1VR9HxCzItLNCS8PdpYYz5TC204ViycobYU65WMpzWe
 LFAGn8jSS25XIpqv0Y9k87dLbctKKA14Ifw2kq5OIVu2FuX+3i446JOa2vpCI9GcjCzi3oHV
 e00bzYiHMIl0FICrNJU0Kjho8pdo0m2uxkn6SYEpogAy9pnatUlO+erL4LqFUO7GXSdBRbw5
 gNt25XTLdSFuZtMxkY3tq8MFss5QnjhehCVPEpE6y9ZjI4XB8ad1G4oBHVGK5LMsvg22PfMJ
 ISWFSHoF/B5+lHkCKWkFxZ0gZn33ju5n6/FOdEx4B8cMJt+cWwARAQABzSlBbmRyZXcgQ29v
 cGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPsLBegQTAQgAJAIbAwULCQgHAwUVCgkI
 CwUWAgMBAAIeAQIXgAUCWKD95wIZAQAKCRBlw/kGpdefoHbdD/9AIoR3k6fKl+RFiFpyAhvO
 59ttDFI7nIAnlYngev2XUR3acFElJATHSDO0ju+hqWqAb8kVijXLops0gOfqt3VPZq9cuHlh
 IMDquatGLzAadfFx2eQYIYT+FYuMoPZy/aTUazmJIDVxP7L383grjIkn+7tAv+qeDfE+txL4
 SAm1UHNvmdfgL2/lcmL3xRh7sub3nJilM93RWX1Pe5LBSDXO45uzCGEdst6uSlzYR/MEr+5Z
 JQQ32JV64zwvf/aKaagSQSQMYNX9JFgfZ3TKWC1KJQbX5ssoX/5hNLqxMcZV3TN7kU8I3kjK
 mPec9+1nECOjjJSO/h4P0sBZyIUGfguwzhEeGf4sMCuSEM4xjCnwiBwftR17sr0spYcOpqET
 ZGcAmyYcNjy6CYadNCnfR40vhhWuCfNCBzWnUW0lFoo12wb0YnzoOLjvfD6OL3JjIUJNOmJy
 RCsJ5IA/Iz33RhSVRmROu+TztwuThClw63g7+hoyewv7BemKyuU6FTVhjjW+XUWmS/FzknSi
 dAG+insr0746cTPpSkGl3KAXeWDGJzve7/SBBfyznWCMGaf8E2P1oOdIZRxHgWj0zNr1+ooF
 /PzgLPiCI4OMUttTlEKChgbUTQ+5o0P080JojqfXwbPAyumbaYcQNiH1/xYbJdOFSiBv9rpt
 TQTBLzDKXok86M7BTQRS4TZ/ARAAkgqudHsp+hd82UVkvgnlqZjzz2vyrYfz7bkPtXaGb9H4
 Rfo7mQsEQavEBdWWjbga6eMnDqtu+FC+qeTGYebToxEyp2lKDSoAsvt8w82tIlP/EbmRbDVn
 7bhjBlfRcFjVYw8uVDPptT0TV47vpoCVkTwcyb6OltJrvg/QzV9f07DJswuda1JH3/qvYu0p
 vjPnYvCq4NsqY2XSdAJ02HrdYPFtNyPEntu1n1KK+gJrstjtw7KsZ4ygXYrsm/oCBiVW/OgU
 g/XIlGErkrxe4vQvJyVwg6YH653YTX5hLLUEL1NS4TCo47RP+wi6y+TnuAL36UtK/uFyEuPy
 wwrDVcC4cIFhYSfsO0BumEI65yu7a8aHbGfq2lW251UcoU48Z27ZUUZd2Dr6O/n8poQHbaTd
 6bJJSjzGGHZVbRP9UQ3lkmkmc0+XCHmj5WhwNNYjgbbmML7y0fsJT5RgvefAIFfHBg7fTY/i
 kBEimoUsTEQz+N4hbKwo1hULfVxDJStE4sbPhjbsPCrlXf6W9CxSyQ0qmZ2bXsLQYRj2xqd1
 bpA+1o1j2N4/au1R/uSiUFjewJdT/LX1EklKDcQwpk06Af/N7VZtSfEJeRV04unbsKVXWZAk
 uAJyDDKN99ziC0Wz5kcPyVD1HNf8bgaqGDzrv3TfYjwqayRFcMf7xJaL9xXedMcAEQEAAcLB
 XwQYAQgACQUCUuE2fwIbDAAKCRBlw/kGpdefoG4XEACD1Qf/er8EA7g23HMxYWd3FXHThrVQ
 HgiGdk5Yh632vjOm9L4sd/GCEACVQKjsu98e8o3ysitFlznEns5EAAXEbITrgKWXDDUWGYxd
 pnjj2u+GkVdsOAGk0kxczX6s+VRBhpbBI2PWnOsRJgU2n10PZ3mZD4Xu9kU2IXYmuW+e5KCA
 vTArRUdCrAtIa1k01sPipPPw6dfxx2e5asy21YOytzxuWFfJTGnVxZZSCyLUO83sh6OZhJkk
 b9rxL9wPmpN/t2IPaEKoAc0FTQZS36wAMOXkBh24PQ9gaLJvfPKpNzGD8XWR5HHF0NLIJhgg
 4ZlEXQ2fVp3XrtocHqhu4UZR4koCijgB8sB7Tb0GCpwK+C4UePdFLfhKyRdSXuvY3AHJd4CP
 4JzW0Bzq/WXY3XMOzUTYApGQpnUpdOmuQSfpV9MQO+/jo7r6yPbxT7CwRS5dcQPzUiuHLK9i
 nvjREdh84qycnx0/6dDroYhp0DFv4udxuAvt1h4wGwTPRQZerSm4xaYegEFusyhbZrI0U9tJ
 B8WrhBLXDiYlyJT6zOV2yZFuW47VrLsjYnHwn27hmxTC/7tvG3euCklmkn9Sl9IAKFu29RSo
 d5bD8kMSCYsTqtTfT6W4A3qHGvIDta3ptLYpIAOD2sY3GYq2nf3Bbzx81wZK14JdDDHUX2Rs
 6+ahAA==
In-Reply-To: <0ad880e8-0f2b-4519-971e-c98b3411fba5@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 30/01/2024 12:59 pm, Jan Beulich wrote:
> On 30.01.2024 13:06, Roger Pau Monné wrote:
>> On Tue, Jan 30, 2024 at 11:57:17AM +0100, Jan Beulich wrote:
>>> On 30.01.2024 10:13, Roger Pau Monne wrote:
>>>> The CPUID feature bit signals the presence of the IPRED_DIS_{U,S} controls in
>>>> SPEC_CTRL MSR.
>>>>
>>>> Note that those controls are not used by the hypervisor.
>>> Despite this, ...
>>>
>>>> --- a/xen/arch/x86/msr.c
>>>> +++ b/xen/arch/x86/msr.c
>>>> @@ -324,6 +324,9 @@ uint64_t msr_spec_ctrl_valid_bits(const struct cpu_policy *cp)
>>>>      return (SPEC_CTRL_IBRS | SPEC_CTRL_STIBP |
>>>>              (ssbd       ? SPEC_CTRL_SSBD       : 0) |
>>>>              (psfd       ? SPEC_CTRL_PSFD       : 0) |
>>>> +            (cp->feat.ipred_ctrl ? (SPEC_CTRL_IPRED_DIS_U |
>>>> +                                    SPEC_CTRL_IPRED_DIS_S)
>>>> +                                 : 0) |
>>>>              0);
>>>>  }
>>> ... if I'm not mistaken exposing SPEC_CTRL bits to guests is independent
>>> of whether we write SPEC_CTRL on entry to Xen. Therefore I think in the
>>> description it wants clarifying why it is acceptable to run Xen with the
>>> guest chosen settings for at least the DIS_S bit (assuming that it is
>>> okay to do so). Likely (didn't look there yet) also applicable to the
>>> further two patches.
>> "The added feature is made dependent on IBRSB, which ensures it will
>> only be exposed if X86_FEATURE_SC_MSR_{PV,HVM} is available, and that
>> ensures the value of SPEC_CTRL will get context switched on exit/entry
>> to guest."
>>
>> Would adding the above to the commit message clarify the intended
>> implementation?
> It would improve things, at least hinting towards there being a connection
> between exposure and updating on entry to Xen. I'd like to ask though to
> avoid "context switch" when talking about entry from guest context. While
> in a way technically correct, our normal meaning of the term is the
> process of switching vCPU-s out/in on a pCPU.

The guests can only see MSR_SPEC_CTRL when Xen knows (and is) context
switching them properly.

The logic is weird for legacy IBRS reasons, but I don't think any
further justification is necessary.

~Andrew


From xen-devel-bounces@lists.xenproject.org Tue Jan 30 16:07:11 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 30 Jan 2024 16:07:11 +0000
Received: from list by lists.xenproject.org with outflank-mailman.673587.1047993 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUqdc-0002K7-So; Tue, 30 Jan 2024 16:07:04 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 673587.1047993; Tue, 30 Jan 2024 16:07:04 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUqdc-0002K0-OV; Tue, 30 Jan 2024 16:07:04 +0000
Received: by outflank-mailman (input) for mailman id 673587;
 Tue, 30 Jan 2024 16:07:03 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=+6ME=JI=intel.com=zhao1.liu@srs-se1.protection.inumbo.net>)
 id 1rUqdb-0002Ib-4e
 for xen-devel@lists.xenproject.org; Tue, 30 Jan 2024 16:07:03 +0000
Received: from mgamail.intel.com (mgamail.intel.com [134.134.136.20])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 9829d33e-bf89-11ee-8a43-1f161083a0e0;
 Tue, 30 Jan 2024 17:06:59 +0100 (CET)
Received: from orviesa002.jf.intel.com ([10.64.159.142])
 by orsmga101.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;
 30 Jan 2024 08:06:53 -0800
Received: from liuzhao-optiplex-7080.sh.intel.com (HELO localhost)
 ([10.239.160.36])
 by orviesa002.jf.intel.com with ESMTP; 30 Jan 2024 08:06:48 -0800
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 9829d33e-bf89-11ee-8a43-1f161083a0e0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple;
  d=intel.com; i=@intel.com; q=dns/txt; s=Intel;
  t=1706630820; x=1738166820;
  h=date:from:to:cc:subject:message-id:references:
   mime-version:content-transfer-encoding:in-reply-to;
  bh=d078j57A5IFL8Q6Ix3bl+QIPh1qyiuI6nx/+m2oYaAc=;
  b=c5inkL0KgXxB3jZiBgsamd4cdJZfu3Qvh1+lHyjpXGpwRvpFB5F3BCzU
   DbTv9v4Y/sNRcBpUZx7xg/4BCA/Cnd1IWR8xetegvhnl34G43hfgukd6e
   FxNCcmBVkPAVQgScviky7tINcEZITnHfzO8Q9AtrNue7nWoRIYdBf0jeq
   VlywLHaQ6lN2VsrkSKW4+9gKV+QwLuL29vsjKvo5r/QIpMUl3SHecrkFa
   JRbl4Xt/cFG/VWRTdspNy7rvK7TyWpii6AieiLkU1rk29Zpn83ctBcpEL
   hZSFSWDaOI7GXNKMGZM7WKPH2+LWMEKUM+Ylteu3uA6zHFiZ/fapUkxKM
   g==;
X-IronPort-AV: E=McAfee;i="6600,9927,10969"; a="393768796"
X-IronPort-AV: E=Sophos;i="6.05,230,1701158400"; 
   d="scan'208";a="393768796"
X-ExtLoop1: 1
X-IronPort-AV: E=Sophos;i="6.05,230,1701158400"; 
   d="scan'208";a="29943534"
Date: Wed, 31 Jan 2024 00:20:17 +0800
From: Zhao Liu <zhao1.liu@intel.com>
To: Philippe =?iso-8859-1?Q?Mathieu-Daud=E9?= <philmd@linaro.org>
Cc: qemu-devel@nongnu.org, qemu-riscv@nongnu.org, qemu-s390x@nongnu.org,
	Paolo Bonzini <pbonzini@redhat.com>, kvm@vger.kernel.org,
	qemu-ppc@nongnu.org, qemu-arm@nongnu.org,
	Richard Henderson <richard.henderson@linaro.org>,
	"Michael S. Tsirkin" <mst@redhat.com>,
	Marcel Apfelbaum <marcel.apfelbaum@gmail.com>,
	Eduardo Habkost <eduardo@habkost.net>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Anthony Perard <anthony.perard@citrix.com>,
	Paul Durrant <paul@xen.org>, Cameron Esfahani <dirty@apple.com>,
	Roman Bolshakov <rbolshakov@ddn.com>,
	Marcelo Tosatti <mtosatti@redhat.com>,
	David Woodhouse <dwmw2@infradead.org>,
	xen-devel@lists.xenproject.org
Subject: Re: [PATCH v3 14/29] target/i386: Prefer fast cpu_env() over slower
 CPU QOM cast macro
Message-ID: <ZbkhwXUK39hnH9EN@intel.com>
References: <20240129164514.73104-1-philmd@linaro.org>
 <20240129164514.73104-15-philmd@linaro.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=iso-8859-1
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <20240129164514.73104-15-philmd@linaro.org>

On Mon, Jan 29, 2024 at 05:44:56PM +0100, Philippe Mathieu-Daud wrote:
> Date: Mon, 29 Jan 2024 17:44:56 +0100
> From: Philippe Mathieu-Daud <philmd@linaro.org>
> Subject: [PATCH v3 14/29] target/i386: Prefer fast cpu_env() over slower
>  CPU QOM cast macro
> X-Mailer: git-send-email 2.41.0
> 
> Mechanical patch produced running the command documented
> in scripts/coccinelle/cpu_env.cocci_template header.
> 
> Signed-off-by: Philippe Mathieu-Daud <philmd@linaro.org>
> ---
>  target/i386/hvf/vmx.h                | 13 ++-------
>  hw/i386/fw_cfg.c                     |  3 +-
>  hw/i386/vmmouse.c                    |  6 ++--
>  hw/i386/xen/xen-hvm.c                |  3 +-
>  target/i386/arch_dump.c              | 11 ++------
>  target/i386/arch_memory_mapping.c    |  3 +-
>  target/i386/cpu-dump.c               |  3 +-
>  target/i386/cpu.c                    | 37 ++++++++----------------
>  target/i386/helper.c                 | 42 ++++++++--------------------
>  target/i386/hvf/hvf.c                |  8 ++----
>  target/i386/hvf/x86.c                |  4 +--
>  target/i386/hvf/x86_emu.c            |  6 ++--
>  target/i386/hvf/x86_task.c           | 10 ++-----
>  target/i386/hvf/x86hvf.c             |  9 ++----
>  target/i386/kvm/kvm.c                |  6 ++--
>  target/i386/kvm/xen-emu.c            | 32 +++++++--------------
>  target/i386/tcg/sysemu/bpt_helper.c  |  3 +-
>  target/i386/tcg/sysemu/excp_helper.c |  3 +-
>  target/i386/tcg/tcg-cpu.c            | 14 +++-------
>  target/i386/tcg/user/excp_helper.c   |  6 ++--
>  target/i386/tcg/user/seg_helper.c    |  3 +-
>  21 files changed, 67 insertions(+), 158 deletions(-)

Reviewed-by: Zhao Liu <zhao1.liu@intel.com>

> 
> diff --git a/target/i386/hvf/vmx.h b/target/i386/hvf/vmx.h
> index 0fffcfa46c..1ad042269b 100644
> --- a/target/i386/hvf/vmx.h
> +++ b/target/i386/hvf/vmx.h
> @@ -175,8 +175,7 @@ static inline void macvm_set_cr4(hv_vcpuid_t vcpu, uint64_t cr4)
>  
>  static inline void macvm_set_rip(CPUState *cpu, uint64_t rip)
>  {
> -    X86CPU *x86_cpu = X86_CPU(cpu);
> -    CPUX86State *env = &x86_cpu->env;
> +    CPUX86State *env = cpu_env(cpu);
>      uint64_t val;
>  
>      /* BUG, should take considering overlap.. */
> @@ -196,10 +195,7 @@ static inline void macvm_set_rip(CPUState *cpu, uint64_t rip)
>  
>  static inline void vmx_clear_nmi_blocking(CPUState *cpu)
>  {
> -    X86CPU *x86_cpu = X86_CPU(cpu);
> -    CPUX86State *env = &x86_cpu->env;
> -
> -    env->hflags2 &= ~HF2_NMI_MASK;
> +    cpu_env(cpu)->hflags2 &= ~HF2_NMI_MASK;
>      uint32_t gi = (uint32_t) rvmcs(cpu->accel->fd, VMCS_GUEST_INTERRUPTIBILITY);
>      gi &= ~VMCS_INTERRUPTIBILITY_NMI_BLOCKING;
>      wvmcs(cpu->accel->fd, VMCS_GUEST_INTERRUPTIBILITY, gi);
> @@ -207,10 +203,7 @@ static inline void vmx_clear_nmi_blocking(CPUState *cpu)
>  
>  static inline void vmx_set_nmi_blocking(CPUState *cpu)
>  {
> -    X86CPU *x86_cpu = X86_CPU(cpu);
> -    CPUX86State *env = &x86_cpu->env;
> -
> -    env->hflags2 |= HF2_NMI_MASK;
> +    cpu_env(cpu)->hflags2 |= HF2_NMI_MASK;
>      uint32_t gi = (uint32_t)rvmcs(cpu->accel->fd, VMCS_GUEST_INTERRUPTIBILITY);
>      gi |= VMCS_INTERRUPTIBILITY_NMI_BLOCKING;
>      wvmcs(cpu->accel->fd, VMCS_GUEST_INTERRUPTIBILITY, gi);
> diff --git a/hw/i386/fw_cfg.c b/hw/i386/fw_cfg.c
> index 7362daa45a..5239cd40fa 100644
> --- a/hw/i386/fw_cfg.c
> +++ b/hw/i386/fw_cfg.c
> @@ -155,8 +155,7 @@ FWCfgState *fw_cfg_arch_create(MachineState *ms,
>  
>  void fw_cfg_build_feature_control(MachineState *ms, FWCfgState *fw_cfg)
>  {
> -    X86CPU *cpu = X86_CPU(ms->possible_cpus->cpus[0].cpu);
> -    CPUX86State *env = &cpu->env;
> +    CPUX86State *env = cpu_env(ms->possible_cpus->cpus[0].cpu);
>      uint32_t unused, ebx, ecx, edx;
>      uint64_t feature_control_bits = 0;
>      uint64_t *val;
> diff --git a/hw/i386/vmmouse.c b/hw/i386/vmmouse.c
> index a8d014d09a..f292a14a15 100644
> --- a/hw/i386/vmmouse.c
> +++ b/hw/i386/vmmouse.c
> @@ -74,8 +74,7 @@ struct VMMouseState {
>  
>  static void vmmouse_get_data(uint32_t *data)
>  {
> -    X86CPU *cpu = X86_CPU(current_cpu);
> -    CPUX86State *env = &cpu->env;
> +    CPUX86State *env = cpu_env(current_cpu);
>  
>      data[0] = env->regs[R_EAX]; data[1] = env->regs[R_EBX];
>      data[2] = env->regs[R_ECX]; data[3] = env->regs[R_EDX];
> @@ -84,8 +83,7 @@ static void vmmouse_get_data(uint32_t *data)
>  
>  static void vmmouse_set_data(const uint32_t *data)
>  {
> -    X86CPU *cpu = X86_CPU(current_cpu);
> -    CPUX86State *env = &cpu->env;
> +    CPUX86State *env = cpu_env(current_cpu);
>  
>      env->regs[R_EAX] = data[0]; env->regs[R_EBX] = data[1];
>      env->regs[R_ECX] = data[2]; env->regs[R_EDX] = data[3];
> diff --git a/hw/i386/xen/xen-hvm.c b/hw/i386/xen/xen-hvm.c
> index f42621e674..61e5060117 100644
> --- a/hw/i386/xen/xen-hvm.c
> +++ b/hw/i386/xen/xen-hvm.c
> @@ -487,8 +487,7 @@ static void regs_to_cpu(vmware_regs_t *vmport_regs, ioreq_t *req)
>  
>  static void regs_from_cpu(vmware_regs_t *vmport_regs)
>  {
> -    X86CPU *cpu = X86_CPU(current_cpu);
> -    CPUX86State *env = &cpu->env;
> +    CPUX86State *env = cpu_env(current_cpu);
>  
>      vmport_regs->ebx = env->regs[R_EBX];
>      vmport_regs->ecx = env->regs[R_ECX];
> diff --git a/target/i386/arch_dump.c b/target/i386/arch_dump.c
> index c290910a04..8939ff9fa9 100644
> --- a/target/i386/arch_dump.c
> +++ b/target/i386/arch_dump.c
> @@ -203,7 +203,6 @@ int x86_cpu_write_elf64_note(WriteCoreDumpFunction f, CPUState *cs,
>  int x86_cpu_write_elf32_note(WriteCoreDumpFunction f, CPUState *cs,
>                               int cpuid, DumpState *s)
>  {
> -    X86CPU *cpu = X86_CPU(cs);
>      x86_elf_prstatus prstatus;
>      Elf32_Nhdr *note;
>      char *buf;
> @@ -211,7 +210,7 @@ int x86_cpu_write_elf32_note(WriteCoreDumpFunction f, CPUState *cs,
>      const char *name = "CORE";
>      int ret;
>  
> -    x86_fill_elf_prstatus(&prstatus, &cpu->env, cpuid);
> +    x86_fill_elf_prstatus(&prstatus, cpu_env(cs), cpuid);
>      descsz = sizeof(x86_elf_prstatus);
>      note_size = ELF_NOTE_SIZE(sizeof(Elf32_Nhdr), name_size, descsz);
>      note = g_malloc0(note_size);
> @@ -381,17 +380,13 @@ static inline int cpu_write_qemu_note(WriteCoreDumpFunction f,
>  int x86_cpu_write_elf64_qemunote(WriteCoreDumpFunction f, CPUState *cs,
>                                   DumpState *s)
>  {
> -    X86CPU *cpu = X86_CPU(cs);
> -
> -    return cpu_write_qemu_note(f, &cpu->env, s, 1);
> +    return cpu_write_qemu_note(f, cpu_env(cs), s, 1);
>  }
>  
>  int x86_cpu_write_elf32_qemunote(WriteCoreDumpFunction f, CPUState *cs,
>                                   DumpState *s)
>  {
> -    X86CPU *cpu = X86_CPU(cs);
> -
> -    return cpu_write_qemu_note(f, &cpu->env, s, 0);
> +    return cpu_write_qemu_note(f, cpu_env(cs), s, 0);
>  }
>  
>  int cpu_get_dump_info(ArchDumpInfo *info,
> diff --git a/target/i386/arch_memory_mapping.c b/target/i386/arch_memory_mapping.c
> index d1ff659128..c0604d5956 100644
> --- a/target/i386/arch_memory_mapping.c
> +++ b/target/i386/arch_memory_mapping.c
> @@ -269,8 +269,7 @@ static void walk_pml5e(MemoryMappingList *list, AddressSpace *as,
>  bool x86_cpu_get_memory_mapping(CPUState *cs, MemoryMappingList *list,
>                                  Error **errp)
>  {
> -    X86CPU *cpu = X86_CPU(cs);
> -    CPUX86State *env = &cpu->env;
> +    CPUX86State *env = cpu_env(cs);
>      int32_t a20_mask;
>  
>      if (!cpu_paging_enabled(cs)) {
> diff --git a/target/i386/cpu-dump.c b/target/i386/cpu-dump.c
> index 40697064d9..5459d84abd 100644
> --- a/target/i386/cpu-dump.c
> +++ b/target/i386/cpu-dump.c
> @@ -343,8 +343,7 @@ void x86_cpu_dump_local_apic_state(CPUState *cs, int flags)
>  
>  void x86_cpu_dump_state(CPUState *cs, FILE *f, int flags)
>  {
> -    X86CPU *cpu = X86_CPU(cs);
> -    CPUX86State *env = &cpu->env;
> +    CPUX86State *env = cpu_env(cs);
>      int eflags, i, nb;
>      char cc_op_name[32];
>      static const char *seg_name[6] = { "ES", "CS", "SS", "DS", "FS", "GS" };
> diff --git a/target/i386/cpu.c b/target/i386/cpu.c
> index 66345c204a..5d7a266d27 100644
> --- a/target/i386/cpu.c
> +++ b/target/i386/cpu.c
> @@ -5062,8 +5062,7 @@ static void x86_cpuid_version_get_family(Object *obj, Visitor *v,
>                                           const char *name, void *opaque,
>                                           Error **errp)
>  {
> -    X86CPU *cpu = X86_CPU(obj);
> -    CPUX86State *env = &cpu->env;
> +    CPUX86State *env = cpu_env(CPU(obj));
>      int64_t value;
>  
>      value = (env->cpuid_version >> 8) & 0xf;
> @@ -5077,8 +5076,7 @@ static void x86_cpuid_version_set_family(Object *obj, Visitor *v,
>                                           const char *name, void *opaque,
>                                           Error **errp)
>  {
> -    X86CPU *cpu = X86_CPU(obj);
> -    CPUX86State *env = &cpu->env;
> +    CPUX86State *env = cpu_env(CPU(obj));
>      const int64_t min = 0;
>      const int64_t max = 0xff + 0xf;
>      int64_t value;
> @@ -5104,8 +5102,7 @@ static void x86_cpuid_version_get_model(Object *obj, Visitor *v,
>                                          const char *name, void *opaque,
>                                          Error **errp)
>  {
> -    X86CPU *cpu = X86_CPU(obj);
> -    CPUX86State *env = &cpu->env;
> +    CPUX86State *env = cpu_env(CPU(obj));
>      int64_t value;
>  
>      value = (env->cpuid_version >> 4) & 0xf;
> @@ -5117,8 +5114,7 @@ static void x86_cpuid_version_set_model(Object *obj, Visitor *v,
>                                          const char *name, void *opaque,
>                                          Error **errp)
>  {
> -    X86CPU *cpu = X86_CPU(obj);
> -    CPUX86State *env = &cpu->env;
> +    CPUX86State *env = cpu_env(CPU(obj));
>      const int64_t min = 0;
>      const int64_t max = 0xff;
>      int64_t value;
> @@ -5140,11 +5136,9 @@ static void x86_cpuid_version_get_stepping(Object *obj, Visitor *v,
>                                             const char *name, void *opaque,
>                                             Error **errp)
>  {
> -    X86CPU *cpu = X86_CPU(obj);
> -    CPUX86State *env = &cpu->env;
>      int64_t value;
>  
> -    value = env->cpuid_version & 0xf;
> +    value = cpu_env(CPU(obj))->cpuid_version & 0xf;
>      visit_type_int(v, name, &value, errp);
>  }
>  
> @@ -5152,8 +5146,7 @@ static void x86_cpuid_version_set_stepping(Object *obj, Visitor *v,
>                                             const char *name, void *opaque,
>                                             Error **errp)
>  {
> -    X86CPU *cpu = X86_CPU(obj);
> -    CPUX86State *env = &cpu->env;
> +    CPUX86State *env = cpu_env(CPU(obj));
>      const int64_t min = 0;
>      const int64_t max = 0xf;
>      int64_t value;
> @@ -5173,8 +5166,7 @@ static void x86_cpuid_version_set_stepping(Object *obj, Visitor *v,
>  
>  static char *x86_cpuid_get_vendor(Object *obj, Error **errp)
>  {
> -    X86CPU *cpu = X86_CPU(obj);
> -    CPUX86State *env = &cpu->env;
> +    CPUX86State *env = cpu_env(CPU(obj));
>      char *value;
>  
>      value = g_malloc(CPUID_VENDOR_SZ + 1);
> @@ -5186,8 +5178,7 @@ static char *x86_cpuid_get_vendor(Object *obj, Error **errp)
>  static void x86_cpuid_set_vendor(Object *obj, const char *value,
>                                   Error **errp)
>  {
> -    X86CPU *cpu = X86_CPU(obj);
> -    CPUX86State *env = &cpu->env;
> +    CPUX86State *env = cpu_env(CPU(obj));
>      int i;
>  
>      if (strlen(value) != CPUID_VENDOR_SZ) {
> @@ -5208,8 +5199,7 @@ static void x86_cpuid_set_vendor(Object *obj, const char *value,
>  
>  static char *x86_cpuid_get_model_id(Object *obj, Error **errp)
>  {
> -    X86CPU *cpu = X86_CPU(obj);
> -    CPUX86State *env = &cpu->env;
> +    CPUX86State *env = cpu_env(CPU(obj));
>      char *value;
>      int i;
>  
> @@ -5224,8 +5214,7 @@ static char *x86_cpuid_get_model_id(Object *obj, Error **errp)
>  static void x86_cpuid_set_model_id(Object *obj, const char *model_id,
>                                     Error **errp)
>  {
> -    X86CPU *cpu = X86_CPU(obj);
> -    CPUX86State *env = &cpu->env;
> +    CPUX86State *env = cpu_env(CPU(obj));
>      int c, len, i;
>  
>      if (model_id == NULL) {
> @@ -7673,8 +7662,7 @@ static vaddr x86_cpu_get_pc(CPUState *cs)
>  
>  int x86_cpu_pending_interrupt(CPUState *cs, int interrupt_request)
>  {
> -    X86CPU *cpu = X86_CPU(cs);
> -    CPUX86State *env = &cpu->env;
> +    CPUX86State *env = cpu_env(cs);
>  
>  #if !defined(CONFIG_USER_ONLY)
>      if (interrupt_request & CPU_INTERRUPT_POLL) {
> @@ -7722,8 +7710,7 @@ static bool x86_cpu_has_work(CPUState *cs)
>  
>  static void x86_disas_set_info(CPUState *cs, disassemble_info *info)
>  {
> -    X86CPU *cpu = X86_CPU(cs);
> -    CPUX86State *env = &cpu->env;
> +    CPUX86State *env = cpu_env(cs);
>  
>      info->mach = (env->hflags & HF_CS64_MASK ? bfd_mach_x86_64
>                    : env->hflags & HF_CS32_MASK ? bfd_mach_i386_i386
> diff --git a/target/i386/helper.c b/target/i386/helper.c
> index 2070dd0dda..4c11ef70f0 100644
> --- a/target/i386/helper.c
> +++ b/target/i386/helper.c
> @@ -230,8 +230,7 @@ void cpu_x86_update_cr4(CPUX86State *env, uint32_t new_cr4)
>  hwaddr x86_cpu_get_phys_page_attrs_debug(CPUState *cs, vaddr addr,
>                                           MemTxAttrs *attrs)
>  {
> -    X86CPU *cpu = X86_CPU(cs);
> -    CPUX86State *env = &cpu->env;
> +    CPUX86State *env = cpu_env(cs);
>      target_ulong pde_addr, pte_addr;
>      uint64_t pte;
>      int32_t a20_mask;
> @@ -373,8 +372,7 @@ static void emit_guest_memory_failure(MemoryFailureAction action, bool ar,
>  static void do_inject_x86_mce(CPUState *cs, run_on_cpu_data data)
>  {
>      MCEInjectionParams *params = data.host_ptr;
> -    X86CPU *cpu = X86_CPU(cs);
> -    CPUX86State *cenv = &cpu->env;
> +    CPUX86State *cenv = cpu_env(cs);
>      uint64_t *banks = cenv->mce_banks + 4 * params->bank;
>      g_autofree char *msg = NULL;
>      bool need_reset = false;
> @@ -625,9 +623,7 @@ void cpu_load_efer(CPUX86State *env, uint64_t val)
>  
>  uint8_t x86_ldub_phys(CPUState *cs, hwaddr addr)
>  {
> -    X86CPU *cpu = X86_CPU(cs);
> -    CPUX86State *env = &cpu->env;
> -    MemTxAttrs attrs = cpu_get_mem_attrs(env);
> +    MemTxAttrs attrs = cpu_get_mem_attrs(cpu_env(cs));
>      AddressSpace *as = cpu_addressspace(cs, attrs);
>  
>      return address_space_ldub(as, addr, attrs, NULL);
> @@ -635,9 +631,7 @@ uint8_t x86_ldub_phys(CPUState *cs, hwaddr addr)
>  
>  uint32_t x86_lduw_phys(CPUState *cs, hwaddr addr)
>  {
> -    X86CPU *cpu = X86_CPU(cs);
> -    CPUX86State *env = &cpu->env;
> -    MemTxAttrs attrs = cpu_get_mem_attrs(env);
> +    MemTxAttrs attrs = cpu_get_mem_attrs(cpu_env(cs));
>      AddressSpace *as = cpu_addressspace(cs, attrs);
>  
>      return address_space_lduw(as, addr, attrs, NULL);
> @@ -645,9 +639,7 @@ uint32_t x86_lduw_phys(CPUState *cs, hwaddr addr)
>  
>  uint32_t x86_ldl_phys(CPUState *cs, hwaddr addr)
>  {
> -    X86CPU *cpu = X86_CPU(cs);
> -    CPUX86State *env = &cpu->env;
> -    MemTxAttrs attrs = cpu_get_mem_attrs(env);
> +    MemTxAttrs attrs = cpu_get_mem_attrs(cpu_env(cs));
>      AddressSpace *as = cpu_addressspace(cs, attrs);
>  
>      return address_space_ldl(as, addr, attrs, NULL);
> @@ -655,9 +647,7 @@ uint32_t x86_ldl_phys(CPUState *cs, hwaddr addr)
>  
>  uint64_t x86_ldq_phys(CPUState *cs, hwaddr addr)
>  {
> -    X86CPU *cpu = X86_CPU(cs);
> -    CPUX86State *env = &cpu->env;
> -    MemTxAttrs attrs = cpu_get_mem_attrs(env);
> +    MemTxAttrs attrs = cpu_get_mem_attrs(cpu_env(cs));
>      AddressSpace *as = cpu_addressspace(cs, attrs);
>  
>      return address_space_ldq(as, addr, attrs, NULL);
> @@ -665,9 +655,7 @@ uint64_t x86_ldq_phys(CPUState *cs, hwaddr addr)
>  
>  void x86_stb_phys(CPUState *cs, hwaddr addr, uint8_t val)
>  {
> -    X86CPU *cpu = X86_CPU(cs);
> -    CPUX86State *env = &cpu->env;
> -    MemTxAttrs attrs = cpu_get_mem_attrs(env);
> +    MemTxAttrs attrs = cpu_get_mem_attrs(cpu_env(cs));
>      AddressSpace *as = cpu_addressspace(cs, attrs);
>  
>      address_space_stb(as, addr, val, attrs, NULL);
> @@ -675,9 +663,7 @@ void x86_stb_phys(CPUState *cs, hwaddr addr, uint8_t val)
>  
>  void x86_stl_phys_notdirty(CPUState *cs, hwaddr addr, uint32_t val)
>  {
> -    X86CPU *cpu = X86_CPU(cs);
> -    CPUX86State *env = &cpu->env;
> -    MemTxAttrs attrs = cpu_get_mem_attrs(env);
> +    MemTxAttrs attrs = cpu_get_mem_attrs(cpu_env(cs));
>      AddressSpace *as = cpu_addressspace(cs, attrs);
>  
>      address_space_stl_notdirty(as, addr, val, attrs, NULL);
> @@ -685,9 +671,7 @@ void x86_stl_phys_notdirty(CPUState *cs, hwaddr addr, uint32_t val)
>  
>  void x86_stw_phys(CPUState *cs, hwaddr addr, uint32_t val)
>  {
> -    X86CPU *cpu = X86_CPU(cs);
> -    CPUX86State *env = &cpu->env;
> -    MemTxAttrs attrs = cpu_get_mem_attrs(env);
> +    MemTxAttrs attrs = cpu_get_mem_attrs(cpu_env(cs));
>      AddressSpace *as = cpu_addressspace(cs, attrs);
>  
>      address_space_stw(as, addr, val, attrs, NULL);
> @@ -695,9 +679,7 @@ void x86_stw_phys(CPUState *cs, hwaddr addr, uint32_t val)
>  
>  void x86_stl_phys(CPUState *cs, hwaddr addr, uint32_t val)
>  {
> -    X86CPU *cpu = X86_CPU(cs);
> -    CPUX86State *env = &cpu->env;
> -    MemTxAttrs attrs = cpu_get_mem_attrs(env);
> +    MemTxAttrs attrs = cpu_get_mem_attrs(cpu_env(cs));
>      AddressSpace *as = cpu_addressspace(cs, attrs);
>  
>      address_space_stl(as, addr, val, attrs, NULL);
> @@ -705,9 +687,7 @@ void x86_stl_phys(CPUState *cs, hwaddr addr, uint32_t val)
>  
>  void x86_stq_phys(CPUState *cs, hwaddr addr, uint64_t val)
>  {
> -    X86CPU *cpu = X86_CPU(cs);
> -    CPUX86State *env = &cpu->env;
> -    MemTxAttrs attrs = cpu_get_mem_attrs(env);
> +    MemTxAttrs attrs = cpu_get_mem_attrs(cpu_env(cs));
>      AddressSpace *as = cpu_addressspace(cs, attrs);
>  
>      address_space_stq(as, addr, val, attrs, NULL);
> diff --git a/target/i386/hvf/hvf.c b/target/i386/hvf/hvf.c
> index 11ffdd4c69..772578e3f4 100644
> --- a/target/i386/hvf/hvf.c
> +++ b/target/i386/hvf/hvf.c
> @@ -159,10 +159,7 @@ static bool ept_emulation_fault(hvf_slot *slot, uint64_t gpa, uint64_t ept_qual)
>  
>  void hvf_arch_vcpu_destroy(CPUState *cpu)
>  {
> -    X86CPU *x86_cpu = X86_CPU(cpu);
> -    CPUX86State *env = &x86_cpu->env;
> -
> -    g_free(env->hvf_mmio_buf);
> +    g_free(cpu_env(cpu)->hvf_mmio_buf);
>  }
>  
>  static void init_tsc_freq(CPUX86State *env)
> @@ -313,8 +310,7 @@ int hvf_arch_init_vcpu(CPUState *cpu)
>  
>  static void hvf_store_events(CPUState *cpu, uint32_t ins_len, uint64_t idtvec_info)
>  {
> -    X86CPU *x86_cpu = X86_CPU(cpu);
> -    CPUX86State *env = &x86_cpu->env;
> +    CPUX86State *env = cpu_env(cpu);
>  
>      env->exception_nr = -1;
>      env->exception_pending = 0;
> diff --git a/target/i386/hvf/x86.c b/target/i386/hvf/x86.c
> index 80e36136d0..932635232b 100644
> --- a/target/i386/hvf/x86.c
> +++ b/target/i386/hvf/x86.c
> @@ -128,9 +128,7 @@ bool x86_is_real(CPUState *cpu)
>  
>  bool x86_is_v8086(CPUState *cpu)
>  {
> -    X86CPU *x86_cpu = X86_CPU(cpu);
> -    CPUX86State *env = &x86_cpu->env;
> -    return x86_is_protected(cpu) && (env->eflags & VM_MASK);
> +    return x86_is_protected(cpu) && (cpu_env(cpu)->eflags & VM_MASK);
>  }
>  
>  bool x86_is_long_mode(CPUState *cpu)
> diff --git a/target/i386/hvf/x86_emu.c b/target/i386/hvf/x86_emu.c
> index 3a3f0a50d0..0d13b32f91 100644
> --- a/target/i386/hvf/x86_emu.c
> +++ b/target/i386/hvf/x86_emu.c
> @@ -1419,8 +1419,7 @@ static void init_cmd_handler()
>  
>  void load_regs(CPUState *cs)
>  {
> -    X86CPU *cpu = X86_CPU(cs);
> -    CPUX86State *env = &cpu->env;
> +    CPUX86State *env = cpu_env(cs);
>  
>      int i = 0;
>      RRX(env, R_EAX) = rreg(cs->accel->fd, HV_X86_RAX);
> @@ -1442,8 +1441,7 @@ void load_regs(CPUState *cs)
>  
>  void store_regs(CPUState *cs)
>  {
> -    X86CPU *cpu = X86_CPU(cs);
> -    CPUX86State *env = &cpu->env;
> +    CPUX86State *env = cpu_env(cs);
>  
>      int i = 0;
>      wreg(cs->accel->fd, HV_X86_RAX, RAX(env));
> diff --git a/target/i386/hvf/x86_task.c b/target/i386/hvf/x86_task.c
> index f09bfbdda5..c173e9d883 100644
> --- a/target/i386/hvf/x86_task.c
> +++ b/target/i386/hvf/x86_task.c
> @@ -33,8 +33,7 @@
>  // TODO: taskswitch handling
>  static void save_state_to_tss32(CPUState *cpu, struct x86_tss_segment32 *tss)
>  {
> -    X86CPU *x86_cpu = X86_CPU(cpu);
> -    CPUX86State *env = &x86_cpu->env;
> +    CPUX86State *env = cpu_env(cpu);
>  
>      /* CR3 and ldt selector are not saved intentionally */
>      tss->eip = (uint32_t)env->eip;
> @@ -58,8 +57,7 @@ static void save_state_to_tss32(CPUState *cpu, struct x86_tss_segment32 *tss)
>  
>  static void load_state_from_tss32(CPUState *cpu, struct x86_tss_segment32 *tss)
>  {
> -    X86CPU *x86_cpu = X86_CPU(cpu);
> -    CPUX86State *env = &x86_cpu->env;
> +    CPUX86State *env = cpu_env(cpu);
>  
>      wvmcs(cpu->accel->fd, VMCS_GUEST_CR3, tss->cr3);
>  
> @@ -128,9 +126,7 @@ void vmx_handle_task_switch(CPUState *cpu, x68_segment_selector tss_sel, int rea
>      uint32_t desc_limit;
>      struct x86_call_gate task_gate_desc;
>      struct vmx_segment vmx_seg;
> -
> -    X86CPU *x86_cpu = X86_CPU(cpu);
> -    CPUX86State *env = &x86_cpu->env;
> +    CPUX86State *env = cpu_env(cpu);
>  
>      x86_read_segment_descriptor(cpu, &next_tss_desc, tss_sel);
>      x86_read_segment_descriptor(cpu, &curr_tss_desc, old_tss_sel);
> diff --git a/target/i386/hvf/x86hvf.c b/target/i386/hvf/x86hvf.c
> index be2c46246e..10f79849b3 100644
> --- a/target/i386/hvf/x86hvf.c
> +++ b/target/i386/hvf/x86hvf.c
> @@ -238,8 +238,7 @@ void hvf_get_msrs(CPUState *cs)
>  
>  int hvf_put_registers(CPUState *cs)
>  {
> -    X86CPU *x86cpu = X86_CPU(cs);
> -    CPUX86State *env = &x86cpu->env;
> +    CPUX86State *env = cpu_env(cs);
>  
>      wreg(cs->accel->fd, HV_X86_RAX, env->regs[R_EAX]);
>      wreg(cs->accel->fd, HV_X86_RBX, env->regs[R_EBX]);
> @@ -282,8 +281,7 @@ int hvf_put_registers(CPUState *cs)
>  
>  int hvf_get_registers(CPUState *cs)
>  {
> -    X86CPU *x86cpu = X86_CPU(cs);
> -    CPUX86State *env = &x86cpu->env;
> +    CPUX86State *env = cpu_env(cs);
>  
>      env->regs[R_EAX] = rreg(cs->accel->fd, HV_X86_RAX);
>      env->regs[R_EBX] = rreg(cs->accel->fd, HV_X86_RBX);
> @@ -342,8 +340,7 @@ void vmx_clear_int_window_exiting(CPUState *cs)
>  
>  bool hvf_inject_interrupts(CPUState *cs)
>  {
> -    X86CPU *x86cpu = X86_CPU(cs);
> -    CPUX86State *env = &x86cpu->env;
> +    CPUX86State *env = cpu_env(cs);
>  
>      uint8_t vector;
>      uint64_t intr_type;
> diff --git a/target/i386/kvm/kvm.c b/target/i386/kvm/kvm.c
> index 76a66246eb..e4f1c62888 100644
> --- a/target/i386/kvm/kvm.c
> +++ b/target/i386/kvm/kvm.c
> @@ -754,8 +754,7 @@ static inline bool freq_within_bounds(int freq, int target_freq)
>  
>  static int kvm_arch_set_tsc_khz(CPUState *cs)
>  {
> -    X86CPU *cpu = X86_CPU(cs);
> -    CPUX86State *env = &cpu->env;
> +    CPUX86State *env = cpu_env(cs);
>      int r, cur_freq;
>      bool set_ioctl = false;
>  
> @@ -5369,8 +5368,7 @@ int kvm_arch_handle_exit(CPUState *cs, struct kvm_run *run)
>  
>  bool kvm_arch_stop_on_emulation_error(CPUState *cs)
>  {
> -    X86CPU *cpu = X86_CPU(cs);
> -    CPUX86State *env = &cpu->env;
> +    CPUX86State *env = cpu_env(cs);
>  
>      kvm_cpu_synchronize_state(cs);
>      return !(env->cr[0] & CR0_PE_MASK) ||
> diff --git a/target/i386/kvm/xen-emu.c b/target/i386/kvm/xen-emu.c
> index fc2c2321ac..10350a22d1 100644
> --- a/target/i386/kvm/xen-emu.c
> +++ b/target/i386/kvm/xen-emu.c
> @@ -313,10 +313,7 @@ static int kvm_xen_set_vcpu_callback_vector(CPUState *cs)
>  
>  static void do_set_vcpu_callback_vector(CPUState *cs, run_on_cpu_data data)
>  {
> -    X86CPU *cpu = X86_CPU(cs);
> -    CPUX86State *env = &cpu->env;
> -
> -    env->xen_vcpu_callback_vector = data.host_int;
> +    cpu_env(cs)->xen_vcpu_callback_vector = data.host_int;
>  
>      if (kvm_xen_has_cap(EVTCHN_SEND)) {
>          kvm_xen_set_vcpu_callback_vector(cs);
> @@ -325,8 +322,7 @@ static void do_set_vcpu_callback_vector(CPUState *cs, run_on_cpu_data data)
>  
>  static int set_vcpu_info(CPUState *cs, uint64_t gpa)
>  {
> -    X86CPU *cpu = X86_CPU(cs);
> -    CPUX86State *env = &cpu->env;
> +    CPUX86State *env = cpu_env(cs);
>      MemoryRegionSection mrs = { .mr = NULL };
>      void *vcpu_info_hva = NULL;
>      int ret;
> @@ -362,8 +358,7 @@ static int set_vcpu_info(CPUState *cs, uint64_t gpa)
>  
>  static void do_set_vcpu_info_default_gpa(CPUState *cs, run_on_cpu_data data)
>  {
> -    X86CPU *cpu = X86_CPU(cs);
> -    CPUX86State *env = &cpu->env;
> +    CPUX86State *env = cpu_env(cs);
>  
>      env->xen_vcpu_info_default_gpa = data.host_ulong;
>  
> @@ -375,8 +370,7 @@ static void do_set_vcpu_info_default_gpa(CPUState *cs, run_on_cpu_data data)
>  
>  static void do_set_vcpu_info_gpa(CPUState *cs, run_on_cpu_data data)
>  {
> -    X86CPU *cpu = X86_CPU(cs);
> -    CPUX86State *env = &cpu->env;
> +    CPUX86State *env = cpu_env(cs);
>  
>      env->xen_vcpu_info_gpa = data.host_ulong;
>  
> @@ -479,8 +473,7 @@ void kvm_xen_inject_vcpu_callback_vector(uint32_t vcpu_id, int type)
>  /* Must always be called with xen_timers_lock held */
>  static int kvm_xen_set_vcpu_timer(CPUState *cs)
>  {
> -    X86CPU *cpu = X86_CPU(cs);
> -    CPUX86State *env = &cpu->env;
> +    CPUX86State *env = cpu_env(cs);
>  
>      struct kvm_xen_vcpu_attr va = {
>          .type = KVM_XEN_VCPU_ATTR_TYPE_TIMER,
> @@ -527,8 +520,7 @@ int kvm_xen_set_vcpu_virq(uint32_t vcpu_id, uint16_t virq, uint16_t port)
>  
>  static void do_set_vcpu_time_info_gpa(CPUState *cs, run_on_cpu_data data)
>  {
> -    X86CPU *cpu = X86_CPU(cs);
> -    CPUX86State *env = &cpu->env;
> +    CPUX86State *env = cpu_env(cs);
>  
>      env->xen_vcpu_time_info_gpa = data.host_ulong;
>  
> @@ -538,8 +530,7 @@ static void do_set_vcpu_time_info_gpa(CPUState *cs, run_on_cpu_data data)
>  
>  static void do_set_vcpu_runstate_gpa(CPUState *cs, run_on_cpu_data data)
>  {
> -    X86CPU *cpu = X86_CPU(cs);
> -    CPUX86State *env = &cpu->env;
> +    CPUX86State *env = cpu_env(cs);
>  
>      env->xen_vcpu_runstate_gpa = data.host_ulong;
>  
> @@ -549,8 +540,7 @@ static void do_set_vcpu_runstate_gpa(CPUState *cs, run_on_cpu_data data)
>  
>  static void do_vcpu_soft_reset(CPUState *cs, run_on_cpu_data data)
>  {
> -    X86CPU *cpu = X86_CPU(cs);
> -    CPUX86State *env = &cpu->env;
> +    CPUX86State *env = cpu_env(cs);
>  
>      env->xen_vcpu_info_gpa = INVALID_GPA;
>      env->xen_vcpu_info_default_gpa = INVALID_GPA;
> @@ -1813,8 +1803,7 @@ uint16_t kvm_xen_get_evtchn_max_pirq(void)
>  
>  int kvm_put_xen_state(CPUState *cs)
>  {
> -    X86CPU *cpu = X86_CPU(cs);
> -    CPUX86State *env = &cpu->env;
> +    CPUX86State *env = cpu_env(cs);
>      uint64_t gpa;
>      int ret;
>  
> @@ -1887,8 +1876,7 @@ int kvm_put_xen_state(CPUState *cs)
>  
>  int kvm_get_xen_state(CPUState *cs)
>  {
> -    X86CPU *cpu = X86_CPU(cs);
> -    CPUX86State *env = &cpu->env;
> +    CPUX86State *env = cpu_env(cs);
>      uint64_t gpa;
>      int ret;
>  
> diff --git a/target/i386/tcg/sysemu/bpt_helper.c b/target/i386/tcg/sysemu/bpt_helper.c
> index 4d96a48a3c..90d6117497 100644
> --- a/target/i386/tcg/sysemu/bpt_helper.c
> +++ b/target/i386/tcg/sysemu/bpt_helper.c
> @@ -208,8 +208,7 @@ bool check_hw_breakpoints(CPUX86State *env, bool force_dr6_update)
>  
>  void breakpoint_handler(CPUState *cs)
>  {
> -    X86CPU *cpu = X86_CPU(cs);
> -    CPUX86State *env = &cpu->env;
> +    CPUX86State *env = cpu_env(cs);
>  
>      if (cs->watchpoint_hit) {
>          if (cs->watchpoint_hit->flags & BP_CPU) {
> diff --git a/target/i386/tcg/sysemu/excp_helper.c b/target/i386/tcg/sysemu/excp_helper.c
> index 5b86f439ad..1afa177551 100644
> --- a/target/i386/tcg/sysemu/excp_helper.c
> +++ b/target/i386/tcg/sysemu/excp_helper.c
> @@ -639,6 +639,5 @@ G_NORETURN void x86_cpu_do_unaligned_access(CPUState *cs, vaddr vaddr,
>                                              MMUAccessType access_type,
>                                              int mmu_idx, uintptr_t retaddr)
>  {
> -    X86CPU *cpu = X86_CPU(cs);
> -    handle_unaligned_access(&cpu->env, vaddr, access_type, retaddr);
> +    handle_unaligned_access(cpu_env(cs), vaddr, access_type, retaddr);
>  }
> diff --git a/target/i386/tcg/tcg-cpu.c b/target/i386/tcg/tcg-cpu.c
> index e1405b7be9..8f8fd6529d 100644
> --- a/target/i386/tcg/tcg-cpu.c
> +++ b/target/i386/tcg/tcg-cpu.c
> @@ -29,8 +29,7 @@
>  
>  static void x86_cpu_exec_enter(CPUState *cs)
>  {
> -    X86CPU *cpu = X86_CPU(cs);
> -    CPUX86State *env = &cpu->env;
> +    CPUX86State *env = cpu_env(cs);
>  
>      CC_SRC = env->eflags & (CC_O | CC_S | CC_Z | CC_A | CC_P | CC_C);
>      env->df = 1 - (2 * ((env->eflags >> 10) & 1));
> @@ -40,8 +39,7 @@ static void x86_cpu_exec_enter(CPUState *cs)
>  
>  static void x86_cpu_exec_exit(CPUState *cs)
>  {
> -    X86CPU *cpu = X86_CPU(cs);
> -    CPUX86State *env = &cpu->env;
> +    CPUX86State *env = cpu_env(cs);
>  
>      env->eflags = cpu_compute_eflags(env);
>  }
> @@ -65,8 +63,7 @@ static void x86_restore_state_to_opc(CPUState *cs,
>                                       const TranslationBlock *tb,
>                                       const uint64_t *data)
>  {
> -    X86CPU *cpu = X86_CPU(cs);
> -    CPUX86State *env = &cpu->env;
> +    CPUX86State *env = cpu_env(cs);
>      int cc_op = data[1];
>      uint64_t new_pc;
>  
> @@ -96,11 +93,8 @@ static void x86_restore_state_to_opc(CPUState *cs,
>  #ifndef CONFIG_USER_ONLY
>  static bool x86_debug_check_breakpoint(CPUState *cs)
>  {
> -    X86CPU *cpu = X86_CPU(cs);
> -    CPUX86State *env = &cpu->env;
> -
>      /* RF disables all architectural breakpoints. */
> -    return !(env->eflags & RF_MASK);
> +    return !(cpu_env(cs)->eflags & RF_MASK);
>  }
>  #endif
>  
> diff --git a/target/i386/tcg/user/excp_helper.c b/target/i386/tcg/user/excp_helper.c
> index b3bdb7831a..9ea5566149 100644
> --- a/target/i386/tcg/user/excp_helper.c
> +++ b/target/i386/tcg/user/excp_helper.c
> @@ -26,8 +26,7 @@ void x86_cpu_record_sigsegv(CPUState *cs, vaddr addr,
>                              MMUAccessType access_type,
>                              bool maperr, uintptr_t ra)
>  {
> -    X86CPU *cpu = X86_CPU(cs);
> -    CPUX86State *env = &cpu->env;
> +    CPUX86State *env = cpu_env(cs);
>  
>      /*
>       * The error_code that hw reports as part of the exception frame
> @@ -52,6 +51,5 @@ void x86_cpu_record_sigsegv(CPUState *cs, vaddr addr,
>  void x86_cpu_record_sigbus(CPUState *cs, vaddr addr,
>                             MMUAccessType access_type, uintptr_t ra)
>  {
> -    X86CPU *cpu = X86_CPU(cs);
> -    handle_unaligned_access(&cpu->env, addr, access_type, ra);
> +    handle_unaligned_access(cpu_env(cs), addr, access_type, ra);
>  }
> diff --git a/target/i386/tcg/user/seg_helper.c b/target/i386/tcg/user/seg_helper.c
> index c45f2ac2ba..2f89dbb51e 100644
> --- a/target/i386/tcg/user/seg_helper.c
> +++ b/target/i386/tcg/user/seg_helper.c
> @@ -78,8 +78,7 @@ static void do_interrupt_user(CPUX86State *env, int intno, int is_int,
>  
>  void x86_cpu_do_interrupt(CPUState *cs)
>  {
> -    X86CPU *cpu = X86_CPU(cs);
> -    CPUX86State *env = &cpu->env;
> +    CPUX86State *env = cpu_env(cs);
>  
>      /* if user mode only, we simulate a fake exception
>         which will be handled outside the cpu execution
> -- 
> 2.41.0
> 
> 


From xen-devel-bounces@lists.xenproject.org Tue Jan 30 16:25:50 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 30 Jan 2024 16:25:50 +0000
Received: from list by lists.xenproject.org with outflank-mailman.673593.1048002 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUqvf-0002AB-Eo; Tue, 30 Jan 2024 16:25:43 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 673593.1048002; Tue, 30 Jan 2024 16:25:43 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUqvf-0002A4-Br; Tue, 30 Jan 2024 16:25:43 +0000
Received: by outflank-mailman (input) for mailman id 673593;
 Tue, 30 Jan 2024 16:25:42 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=M5qC=JI=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1rUqve-00029y-Cu
 for xen-devel@lists.xenproject.org; Tue, 30 Jan 2024 16:25:42 +0000
Received: from mail-lf1-x12f.google.com (mail-lf1-x12f.google.com
 [2a00:1450:4864:20::12f])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 35bf1cdf-bf8c-11ee-8a43-1f161083a0e0;
 Tue, 30 Jan 2024 17:25:41 +0100 (CET)
Received: by mail-lf1-x12f.google.com with SMTP id
 2adb3069b0e04-51121637524so297870e87.1
 for <xen-devel@lists.xenproject.org>; Tue, 30 Jan 2024 08:25:41 -0800 (PST)
Received: from [10.80.67.30] (default-46-102-197-194.interdsl.co.uk.
 [46.102.197.194]) by smtp.gmail.com with ESMTPSA id
 w7-20020a05600c474700b0040ef622799fsm7250439wmo.37.2024.01.30.08.25.40
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 30 Jan 2024 08:25:40 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 35bf1cdf-bf8c-11ee-8a43-1f161083a0e0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1706631941; x=1707236741; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=FWPkMTKmwB9IHV2ZgZrKBqk47ZOdkHbfP0MDNgUStlo=;
        b=gGfnYJ0t8Cftbc3EzdsMHJlESyERNLH56LPdGz3lf0aBRAmG0azPqrcX4Bq0y9dA82
         UuRiNjHDQPHvrYstV83Wr5KuX1MqZQsreKE/WPuzyQz1EA2sf+ILfhdSSQYgMcdP/B5b
         HEIobIDBoB7K9bGFY25ozDZ9o8wheD08wO3j0=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706631941; x=1707236741;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=FWPkMTKmwB9IHV2ZgZrKBqk47ZOdkHbfP0MDNgUStlo=;
        b=NNIAxUb1VVfP/DNVPbQOqMZJQ1BgCX4UztQSjqXwlz0cizfH4VYL9AJceXvNFum4aK
         TXzwFIk2X9gNNQ3UNPxxVwtaNUKNHrc53mz5fXEbfvzqzT2a7021eqXPqpmyQcJQlgXn
         CWBPAH58SvtxyjkHRHAyy5SkxNIAJllijjv9XQgHeKTRzc0geav/buszJTSRac3Cih0q
         61JoRvTgpEm1ejGbJiGBIYMbLkitgFCikQDb3IUwF51R0QTMENYzjIPiHFAR+YhR/0R/
         4Cli7LxZuql8rL8nlWnUWwgwsNTAFL0gu0uchOgrZGKaLQFq4Ec/93igIxaF9fZwpL1b
         EczQ==
X-Gm-Message-State: AOJu0Yx63wyzAasj7QadnWDZTh/p5qTHY8CHz40thXpw8AUuhBXjvC2R
	AyNSmo3z7g3BgkOd7uSj9J9hBl3RQnYLBYYIz79W2FU6EWMbXmRQW2xQwBLGOEA=
X-Google-Smtp-Source: AGHT+IHNEYM93lVmM7w4twwTPgqBkj1/2QjSgwjq339xR4D/QV6pWbD7LuCfc2e5iulEfU3ay/SofQ==
X-Received: by 2002:a05:6512:3133:b0:50e:4598:b836 with SMTP id p19-20020a056512313300b0050e4598b836mr7218966lfd.15.1706631940832;
        Tue, 30 Jan 2024 08:25:40 -0800 (PST)
X-Forwarded-Encrypted: i=0; AJvYcCWuqe6johRCcdtKv1L6N95ft4aY6Xvt9AsUUV8D+JrQwENj1gzmwnbaSq58rZ83KKBCvqy5giqHEkmqM3o506qaXM2loafuhxkqHK9SzEsWpBNDl3hHl0vJkoE=
Message-ID: <85794e25-03bd-47b8-90b4-c08fbbd5a756@citrix.com>
Date: Tue, 30 Jan 2024 16:25:40 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 0/3] x86/intel: expose additional SPEC_CTRL MSR controls
Content-Language: en-GB
To: Roger Pau Monne <roger.pau@citrix.com>, xen-devel@lists.xenproject.org
Cc: Jan Beulich <jbeulich@suse.com>, Wei Liu <wl@xen.org>
References: <20240130091400.50622-1-roger.pau@citrix.com>
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 xsFNBFLhNn8BEADVhE+Hb8i0GV6mihnnr/uiQQdPF8kUoFzCOPXkf7jQ5sLYeJa0cQi6Penp
 VtiFYznTairnVsN5J+ujSTIb+OlMSJUWV4opS7WVNnxHbFTPYZVQ3erv7NKc2iVizCRZ2Kxn
 srM1oPXWRic8BIAdYOKOloF2300SL/bIpeD+x7h3w9B/qez7nOin5NzkxgFoaUeIal12pXSR
 Q354FKFoy6Vh96gc4VRqte3jw8mPuJQpfws+Pb+swvSf/i1q1+1I4jsRQQh2m6OTADHIqg2E
 ofTYAEh7R5HfPx0EXoEDMdRjOeKn8+vvkAwhviWXTHlG3R1QkbE5M/oywnZ83udJmi+lxjJ5
 YhQ5IzomvJ16H0Bq+TLyVLO/VRksp1VR9HxCzItLNCS8PdpYYz5TC204ViycobYU65WMpzWe
 LFAGn8jSS25XIpqv0Y9k87dLbctKKA14Ifw2kq5OIVu2FuX+3i446JOa2vpCI9GcjCzi3oHV
 e00bzYiHMIl0FICrNJU0Kjho8pdo0m2uxkn6SYEpogAy9pnatUlO+erL4LqFUO7GXSdBRbw5
 gNt25XTLdSFuZtMxkY3tq8MFss5QnjhehCVPEpE6y9ZjI4XB8ad1G4oBHVGK5LMsvg22PfMJ
 ISWFSHoF/B5+lHkCKWkFxZ0gZn33ju5n6/FOdEx4B8cMJt+cWwARAQABzSlBbmRyZXcgQ29v
 cGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPsLBegQTAQgAJAIbAwULCQgHAwUVCgkI
 CwUWAgMBAAIeAQIXgAUCWKD95wIZAQAKCRBlw/kGpdefoHbdD/9AIoR3k6fKl+RFiFpyAhvO
 59ttDFI7nIAnlYngev2XUR3acFElJATHSDO0ju+hqWqAb8kVijXLops0gOfqt3VPZq9cuHlh
 IMDquatGLzAadfFx2eQYIYT+FYuMoPZy/aTUazmJIDVxP7L383grjIkn+7tAv+qeDfE+txL4
 SAm1UHNvmdfgL2/lcmL3xRh7sub3nJilM93RWX1Pe5LBSDXO45uzCGEdst6uSlzYR/MEr+5Z
 JQQ32JV64zwvf/aKaagSQSQMYNX9JFgfZ3TKWC1KJQbX5ssoX/5hNLqxMcZV3TN7kU8I3kjK
 mPec9+1nECOjjJSO/h4P0sBZyIUGfguwzhEeGf4sMCuSEM4xjCnwiBwftR17sr0spYcOpqET
 ZGcAmyYcNjy6CYadNCnfR40vhhWuCfNCBzWnUW0lFoo12wb0YnzoOLjvfD6OL3JjIUJNOmJy
 RCsJ5IA/Iz33RhSVRmROu+TztwuThClw63g7+hoyewv7BemKyuU6FTVhjjW+XUWmS/FzknSi
 dAG+insr0746cTPpSkGl3KAXeWDGJzve7/SBBfyznWCMGaf8E2P1oOdIZRxHgWj0zNr1+ooF
 /PzgLPiCI4OMUttTlEKChgbUTQ+5o0P080JojqfXwbPAyumbaYcQNiH1/xYbJdOFSiBv9rpt
 TQTBLzDKXok86M7BTQRS4TZ/ARAAkgqudHsp+hd82UVkvgnlqZjzz2vyrYfz7bkPtXaGb9H4
 Rfo7mQsEQavEBdWWjbga6eMnDqtu+FC+qeTGYebToxEyp2lKDSoAsvt8w82tIlP/EbmRbDVn
 7bhjBlfRcFjVYw8uVDPptT0TV47vpoCVkTwcyb6OltJrvg/QzV9f07DJswuda1JH3/qvYu0p
 vjPnYvCq4NsqY2XSdAJ02HrdYPFtNyPEntu1n1KK+gJrstjtw7KsZ4ygXYrsm/oCBiVW/OgU
 g/XIlGErkrxe4vQvJyVwg6YH653YTX5hLLUEL1NS4TCo47RP+wi6y+TnuAL36UtK/uFyEuPy
 wwrDVcC4cIFhYSfsO0BumEI65yu7a8aHbGfq2lW251UcoU48Z27ZUUZd2Dr6O/n8poQHbaTd
 6bJJSjzGGHZVbRP9UQ3lkmkmc0+XCHmj5WhwNNYjgbbmML7y0fsJT5RgvefAIFfHBg7fTY/i
 kBEimoUsTEQz+N4hbKwo1hULfVxDJStE4sbPhjbsPCrlXf6W9CxSyQ0qmZ2bXsLQYRj2xqd1
 bpA+1o1j2N4/au1R/uSiUFjewJdT/LX1EklKDcQwpk06Af/N7VZtSfEJeRV04unbsKVXWZAk
 uAJyDDKN99ziC0Wz5kcPyVD1HNf8bgaqGDzrv3TfYjwqayRFcMf7xJaL9xXedMcAEQEAAcLB
 XwQYAQgACQUCUuE2fwIbDAAKCRBlw/kGpdefoG4XEACD1Qf/er8EA7g23HMxYWd3FXHThrVQ
 HgiGdk5Yh632vjOm9L4sd/GCEACVQKjsu98e8o3ysitFlznEns5EAAXEbITrgKWXDDUWGYxd
 pnjj2u+GkVdsOAGk0kxczX6s+VRBhpbBI2PWnOsRJgU2n10PZ3mZD4Xu9kU2IXYmuW+e5KCA
 vTArRUdCrAtIa1k01sPipPPw6dfxx2e5asy21YOytzxuWFfJTGnVxZZSCyLUO83sh6OZhJkk
 b9rxL9wPmpN/t2IPaEKoAc0FTQZS36wAMOXkBh24PQ9gaLJvfPKpNzGD8XWR5HHF0NLIJhgg
 4ZlEXQ2fVp3XrtocHqhu4UZR4koCijgB8sB7Tb0GCpwK+C4UePdFLfhKyRdSXuvY3AHJd4CP
 4JzW0Bzq/WXY3XMOzUTYApGQpnUpdOmuQSfpV9MQO+/jo7r6yPbxT7CwRS5dcQPzUiuHLK9i
 nvjREdh84qycnx0/6dDroYhp0DFv4udxuAvt1h4wGwTPRQZerSm4xaYegEFusyhbZrI0U9tJ
 B8WrhBLXDiYlyJT6zOV2yZFuW47VrLsjYnHwn27hmxTC/7tvG3euCklmkn9Sl9IAKFu29RSo
 d5bD8kMSCYsTqtTfT6W4A3qHGvIDta3ptLYpIAOD2sY3GYq2nf3Bbzx81wZK14JdDDHUX2Rs
 6+ahAA==
In-Reply-To: <20240130091400.50622-1-roger.pau@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 30/01/2024 9:13 am, Roger Pau Monne wrote:
> Roger Pau Monne (3):
>   x86/intel: expose IPRED_CTRL to guests
>   x86/intel: expose RRSBA_CTRL to guests
>   x86/intel: expose BHI_CTRL to guests

A couple of things.  First,

diff --git a/xen/arch/x86/msr.c b/xen/arch/x86/msr.c
index a04a11858045..382bc07785d0 100644
--- a/xen/arch/x86/msr.c
+++ b/xen/arch/x86/msr.c
@@ -309,8 +309,8 @@ int guest_rdmsr(struct vcpu *v, uint32_t msr,
uint64_t *val)
 
 /*
  * Caller to confirm that MSR_SPEC_CTRL is available.  Intel and AMD have
- * separate CPUID features for this functionality, but only set will be
- * active.
+ * separate CPUID features for some of this functionality, but only one set
+ * will be active on a single host.
  */
 uint64_t msr_spec_ctrl_valid_bits(const struct cpu_policy *cp)
 {


There was a typo (missing the one in "but only one set"), but you're
also adding bits now which are Intel-only and very likely to stay that way.

IPRED_CTRL finally gives Intel CPUs a control with a similar security
property to AMD IBRS;  i.e. I doubt AMD are going to gain support for
these bits when they already guarantee that property and have done for
years already.


Next, I can't say that I particularly love that indentation.  This seems
marginally less bad

    return (SPEC_CTRL_IBRS | SPEC_CTRL_STIBP |
            (ssbd       ? SPEC_CTRL_SSBD       : 0) |
            (psfd       ? SPEC_CTRL_PSFD       : 0) |
            (cp->feat.ipred_ctrl
             ? (SPEC_CTRL_IPRED_DIS_U | SPEC_CTRL_IPRED_DIS_S) : 0) |
            (cp->feat.rrsba_ctrl
             ? (SPEC_CTRL_RRSBA_DIS_U | SPEC_CTRL_RRSBA_DIS_S) : 0) |
            (cp->feat.bhi_ctrl ? SPEC_CTRL_BHI_DIS_S : 0) |
            0);

insofar as at least it's fewer lines.  Given the length of these new
constants, I can't think of anything better.

Happy to fix both on commit.

~Andrew


From xen-devel-bounces@lists.xenproject.org Tue Jan 30 16:34:16 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 30 Jan 2024 16:34:16 +0000
Received: from list by lists.xenproject.org with outflank-mailman.673598.1048012 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUr3s-0005Cx-8k; Tue, 30 Jan 2024 16:34:12 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 673598.1048012; Tue, 30 Jan 2024 16:34:12 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUr3s-0005Cq-5N; Tue, 30 Jan 2024 16:34:12 +0000
Received: by outflank-mailman (input) for mailman id 673598;
 Tue, 30 Jan 2024 16:34:11 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rUr3r-0005Cg-2u; Tue, 30 Jan 2024 16:34:11 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rUr3q-0003iD-T7; Tue, 30 Jan 2024 16:34:10 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rUr3q-00074x-FQ; Tue, 30 Jan 2024 16:34:10 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rUr3q-00041y-F4; Tue, 30 Jan 2024 16:34:10 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=YcC6ahaw8O5626rr79aGtZazuu/v8ZO7KGV7hkWJNnM=; b=2YO8g8DD1zFX+5b/Fk1WJvr/7U
	a/r4a1QfUpofXS4dkzwwi4Dz962vno4mOWV4OLnjSM65kS9CxPAEzWVTAK74EHb53synizvrkMOiS
	d7Ij+5tUmpKMiUIdZRlz8aCupe8oRXHLafTl9V28scpmdyveV3BFs4Xnax67LSDl8NaU=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184528-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [xen-unstable-smoke test] 184528: tolerable all pass - PUSHED
X-Osstest-Failures:
    xen-unstable-smoke:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    xen-unstable-smoke:test-arm64-arm64-xl-xsm:migrate-support-check:fail:nonblocking
    xen-unstable-smoke:test-arm64-arm64-xl-xsm:saverestore-support-check:fail:nonblocking
    xen-unstable-smoke:test-armhf-armhf-xl:migrate-support-check:fail:nonblocking
    xen-unstable-smoke:test-armhf-armhf-xl:saverestore-support-check:fail:nonblocking
X-Osstest-Versions-This:
    xen=cc6ba68edf6dcd18c3865e7d7c0f1ed822796426
X-Osstest-Versions-That:
    xen=4a7e71aa085170f1a13976507c8e248f8715f116
From: osstest service owner <osstest-admin@xenproject.org>
Date: Tue, 30 Jan 2024 16:34:10 +0000

flight 184528 xen-unstable-smoke real [real]
http://logs.test-lab.xenproject.org/osstest/logs/184528/

Failures :-/ but no regressions.

Tests which did not succeed, but are not blocking:
 test-amd64-amd64-libvirt     15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-xsm      15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-xsm      16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl          15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          16 saverestore-support-check    fail   never pass

version targeted for testing:
 xen                  cc6ba68edf6dcd18c3865e7d7c0f1ed822796426
baseline version:
 xen                  4a7e71aa085170f1a13976507c8e248f8715f116

Last test of basis   184520  2024-01-29 18:00:26 Z    0 days
Testing same since   184528  2024-01-30 14:03:48 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Andrew Cooper <andrew.cooper3@citrix.com>
  Roger Pau Monné <roger.pau@citrix.com>

jobs:
 build-arm64-xsm                                              pass    
 build-amd64                                                  pass    
 build-armhf                                                  pass    
 build-amd64-libvirt                                          pass    
 test-armhf-armhf-xl                                          pass    
 test-arm64-arm64-xl-xsm                                      pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64                    pass    
 test-amd64-amd64-libvirt                                     pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Pushing revision :

To xenbits.xen.org:/home/xen/git/xen.git
   4a7e71aa08..cc6ba68edf  cc6ba68edf6dcd18c3865e7d7c0f1ed822796426 -> smoke


From xen-devel-bounces@lists.xenproject.org Tue Jan 30 16:36:41 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 30 Jan 2024 16:36:41 +0000
Received: from list by lists.xenproject.org with outflank-mailman.673601.1048022 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUr6E-0006BF-L8; Tue, 30 Jan 2024 16:36:38 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 673601.1048022; Tue, 30 Jan 2024 16:36:38 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUr6E-0006B8-Hy; Tue, 30 Jan 2024 16:36:38 +0000
Received: by outflank-mailman (input) for mailman id 673601;
 Tue, 30 Jan 2024 16:36:37 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=+6ME=JI=intel.com=zhao1.liu@srs-se1.protection.inumbo.net>)
 id 1rUr6C-0006B0-Ou
 for xen-devel@lists.xenproject.org; Tue, 30 Jan 2024 16:36:37 +0000
Received: from mgamail.intel.com (mgamail.intel.com [192.55.52.93])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id b9d457bf-bf8d-11ee-8a43-1f161083a0e0;
 Tue, 30 Jan 2024 17:36:34 +0100 (CET)
Received: from orviesa001.jf.intel.com ([10.64.159.141])
 by fmsmga102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;
 30 Jan 2024 08:35:28 -0800
Received: from liuzhao-optiplex-7080.sh.intel.com (HELO localhost)
 ([10.239.160.36])
 by orviesa001.jf.intel.com with ESMTP; 30 Jan 2024 08:35:20 -0800
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: b9d457bf-bf8d-11ee-8a43-1f161083a0e0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple;
  d=intel.com; i=@intel.com; q=dns/txt; s=Intel;
  t=1706632594; x=1738168594;
  h=date:from:to:cc:subject:message-id:references:
   mime-version:content-transfer-encoding:in-reply-to;
  bh=NyAFEG3jjquojKvDEjnB8WqEC2E/nWK7KwvTxbNqhZo=;
  b=OfqtO+z5s4evfySRJfc7ujCATsBPi+F/AQvewDBbrLXtRBrNnLDA4bhw
   6/IAfMHQzyrXjxYeCM8UO2q6ymaFZt8gIvV92TfDMLhRFKBRTdbhfrLrk
   /M9cQ1yk5N/vCYCZlIujk3+xDcpS0MifWViN+2dAkROqWSRO5M/Kx4Oiu
   lB8negDYMOBROZ7x5FzOa9DF3o0Sxwa76mPyXQwvhu91EsFRdv7qipfTq
   3bUuNP+OV6wUuKnjw4Q6TM754IKNLV3Xrapt6NQ2EC8zVcu+6YpWMj0hf
   aTzTycvFu0aHZ35C5Uel4giadrvLaI72UzaSmfMkjnzFBzgPOmgJeq2uZ
   w==;
X-IronPort-AV: E=McAfee;i="6600,9927,10969"; a="400474519"
X-IronPort-AV: E=Sophos;i="6.05,230,1701158400"; 
   d="scan'208";a="400474519"
X-ExtLoop1: 1
X-IronPort-AV: E=Sophos;i="6.05,230,1701158400"; 
   d="scan'208";a="36550287"
Date: Wed, 31 Jan 2024 00:48:49 +0800
From: Zhao Liu <zhao1.liu@intel.com>
To: Philippe =?iso-8859-1?Q?Mathieu-Daud=E9?= <philmd@linaro.org>
Cc: qemu-devel@nongnu.org, qemu-riscv@nongnu.org, qemu-s390x@nongnu.org,
	Paolo Bonzini <pbonzini@redhat.com>, kvm@vger.kernel.org,
	qemu-ppc@nongnu.org, qemu-arm@nongnu.org,
	Richard Henderson <richard.henderson@linaro.org>,
	Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>,
	"Michael S. Tsirkin" <mst@redhat.com>,
	Marcel Apfelbaum <marcel.apfelbaum@gmail.com>,
	=?iso-8859-1?Q?C=E9dric?= Le Goater <clg@kaod.org>,
	Nicholas Piggin <npiggin@gmail.com>,
	=?iso-8859-1?Q?Fr=E9d=E9ric?= Barrat <fbarrat@linux.ibm.com>,
	Alex =?iso-8859-1?Q?Benn=E9e?= <alex.bennee@linaro.org>,
	Viresh Kumar <viresh.kumar@linaro.org>, mzamazal@redhat.com,
	Stefano Stabellini <sstabellini@kernel.org>,
	Anthony Perard <anthony.perard@citrix.com>,
	Paul Durrant <paul@xen.org>, Peter Xu <peterx@redhat.com>,
	Fabiano Rosas <farosas@suse.de>,
	Peter Maydell <peter.maydell@linaro.org>,
	Cameron Esfahani <dirty@apple.com>,
	Roman Bolshakov <rbolshakov@ddn.com>,
	Laurent Vivier <laurent@vivier.eu>,
	Daniel Henrique Barboza <danielhb413@gmail.com>,
	Palmer Dabbelt <palmer@dabbelt.com>,
	Alistair Francis <alistair.francis@wdc.com>,
	Bin Meng <bin.meng@windriver.com>, Weiwei Li <liwei1518@gmail.com>,
	Liu Zhiwei <zhiwei_liu@linux.alibaba.com>,
	xen-devel@lists.xenproject.org
Subject: Re: [PATCH v3 01/29] bulk: Access existing variables initialized to
 &S->F when available
Message-ID: <Zbkocf5XDOCsXWp6@intel.com>
References: <20240129164514.73104-1-philmd@linaro.org>
 <20240129164514.73104-2-philmd@linaro.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=iso-8859-1
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <20240129164514.73104-2-philmd@linaro.org>

On Mon, Jan 29, 2024 at 05:44:43PM +0100, Philippe Mathieu-Daud wrote:
> Date: Mon, 29 Jan 2024 17:44:43 +0100
> From: Philippe Mathieu-Daud <philmd@linaro.org>
> Subject: [PATCH v3 01/29] bulk: Access existing variables initialized to
>  &S->F when available
> X-Mailer: git-send-email 2.41.0
> 
> When a variable is initialized to &struct->field, use it
> in place. Rationale: while this makes the code more concise,
> this also helps static analyzers.
> 
> Mechanical change using the following Coccinelle spatch script:
> 
>  @@
>  type S, F;
>  identifier s, m, v;
>  @@
>       S *s;
>       ...
>       F *v = &s->m;
>       <+...
>  -    &s->m
>  +    v
>       ...+>
> 
> Inspired-by: Zhao Liu <zhao1.liu@intel.com>

Thanks!

> Signed-off-by: Philippe Mathieu-Daud <philmd@linaro.org>
> ---
>  hw/display/ati.c              |  2 +-
>  hw/misc/macio/pmu.c           |  2 +-
>  hw/misc/pvpanic-pci.c         |  2 +-
>  hw/pci-bridge/cxl_root_port.c |  2 +-
>  hw/ppc/pnv.c                  | 20 ++++++++++----------
>  hw/virtio/vhost-user-gpio.c   |  8 ++++----
>  hw/virtio/vhost-user-scmi.c   |  6 +++---
>  hw/virtio/virtio-pci.c        |  2 +-
>  hw/xen/xen_pt.c               |  6 +++---
>  migration/multifd-zlib.c      |  2 +-
>  target/arm/cpu.c              |  4 ++--
>  target/arm/kvm.c              |  2 +-
>  target/arm/machine.c          |  6 +++---
>  target/i386/hvf/x86hvf.c      |  2 +-
>  target/m68k/helper.c          |  2 +-
>  target/ppc/kvm.c              |  8 ++++----
>  target/riscv/cpu_helper.c     |  2 +-
>  17 files changed, 39 insertions(+), 39 deletions(-)
> 
> diff --git a/hw/display/ati.c b/hw/display/ati.c
> index 569b8f6165..8d2501bd82 100644
> --- a/hw/display/ati.c
> +++ b/hw/display/ati.c
> @@ -991,7 +991,7 @@ static void ati_vga_realize(PCIDevice *dev, Error **errp)
>      }
>      vga_init(vga, OBJECT(s), pci_address_space(dev),
>               pci_address_space_io(dev), true);
> -    vga->con = graphic_console_init(DEVICE(s), 0, s->vga.hw_ops, &s->vga);
> +    vga->con = graphic_console_init(DEVICE(s), 0, s->vga.hw_ops, vga);
>      if (s->cursor_guest_mode) {
>          vga->cursor_invalidate = ati_cursor_invalidate;
>          vga->cursor_draw_line = ati_cursor_draw_line;
> diff --git a/hw/misc/macio/pmu.c b/hw/misc/macio/pmu.c
> index e9a90da88f..7fe1c4e517 100644
> --- a/hw/misc/macio/pmu.c
> +++ b/hw/misc/macio/pmu.c
> @@ -737,7 +737,7 @@ static void pmu_realize(DeviceState *dev, Error **errp)
>      timer_mod(s->one_sec_timer, s->one_sec_target);
>  
>      if (s->has_adb) {
> -        qbus_init(&s->adb_bus, sizeof(s->adb_bus), TYPE_ADB_BUS,
> +        qbus_init(adb_bus, sizeof(s->adb_bus), TYPE_ADB_BUS,
>                    dev, "adb.0");
>          adb_register_autopoll_callback(adb_bus, pmu_adb_poll, s);
>      }

I just have the similar comment as BALATON here.

But I feel like it's not easy to cover this case by script, and further
manual cleanup for "sizeof(s->adb_bus)" is okay.

Others are also okay for me.

Reviewed-by: Zhao Liu <zhao1.liu@intel.com>

> diff --git a/hw/misc/pvpanic-pci.c b/hw/misc/pvpanic-pci.c
> index c01e4ce864..83be95d0d2 100644
> --- a/hw/misc/pvpanic-pci.c
> +++ b/hw/misc/pvpanic-pci.c
> @@ -48,7 +48,7 @@ static void pvpanic_pci_realizefn(PCIDevice *dev, Error **errp)
>      PVPanicPCIState *s = PVPANIC_PCI_DEVICE(dev);
>      PVPanicState *ps = &s->pvpanic;
>  
> -    pvpanic_setup_io(&s->pvpanic, DEVICE(s), 2);
> +    pvpanic_setup_io(ps, DEVICE(s), 2);
>  
>      pci_register_bar(dev, 0, PCI_BASE_ADDRESS_SPACE_MEMORY, &ps->mr);
>  }
> diff --git a/hw/pci-bridge/cxl_root_port.c b/hw/pci-bridge/cxl_root_port.c
> index 8f97697631..2cf2f7bf5f 100644
> --- a/hw/pci-bridge/cxl_root_port.c
> +++ b/hw/pci-bridge/cxl_root_port.c
> @@ -175,7 +175,7 @@ static void cxl_rp_realize(DeviceState *dev, Error **errp)
>  
>      cxl_cstate->dvsec_offset = CXL_ROOT_PORT_DVSEC_OFFSET;
>      cxl_cstate->pdev = pci_dev;
> -    build_dvsecs(&crp->cxl_cstate);
> +    build_dvsecs(cxl_cstate);
>  
>      cxl_component_register_block_init(OBJECT(pci_dev), cxl_cstate,
>                                        TYPE_CXL_ROOT_PORT);
> diff --git a/hw/ppc/pnv.c b/hw/ppc/pnv.c
> index 0297871bdd..202a569e27 100644
> --- a/hw/ppc/pnv.c
> +++ b/hw/ppc/pnv.c
> @@ -1257,11 +1257,11 @@ static void pnv_chip_power8_realize(DeviceState *dev, Error **errp)
>      }
>  
>      /* Processor Service Interface (PSI) Host Bridge */
> -    object_property_set_int(OBJECT(&chip8->psi), "bar", PNV_PSIHB_BASE(chip),
> +    object_property_set_int(OBJECT(psi8), "bar", PNV_PSIHB_BASE(chip),
>                              &error_fatal);
> -    object_property_set_link(OBJECT(&chip8->psi), ICS_PROP_XICS,
> +    object_property_set_link(OBJECT(psi8), ICS_PROP_XICS,
>                               OBJECT(chip8->xics), &error_abort);
> -    if (!qdev_realize(DEVICE(&chip8->psi), NULL, errp)) {
> +    if (!qdev_realize(DEVICE(psi8), NULL, errp)) {
>          return;
>      }
>      pnv_xscom_add_subregion(chip, PNV_XSCOM_PSIHB_BASE,
> @@ -1292,7 +1292,7 @@ static void pnv_chip_power8_realize(DeviceState *dev, Error **errp)
>      }
>      pnv_xscom_add_subregion(chip, PNV_XSCOM_OCC_BASE, &chip8->occ.xscom_regs);
>      qdev_connect_gpio_out(DEVICE(&chip8->occ), 0,
> -                          qdev_get_gpio_in(DEVICE(&chip8->psi), PSIHB_IRQ_OCC));
> +                          qdev_get_gpio_in(DEVICE(psi8), PSIHB_IRQ_OCC));
>  
>      /* OCC SRAM model */
>      memory_region_add_subregion(get_system_memory(), PNV_OCC_SENSOR_BASE(chip),
> @@ -1543,12 +1543,12 @@ static void pnv_chip_power9_realize(DeviceState *dev, Error **errp)
>                              &chip9->xive.xscom_regs);
>  
>      /* Processor Service Interface (PSI) Host Bridge */
> -    object_property_set_int(OBJECT(&chip9->psi), "bar", PNV9_PSIHB_BASE(chip),
> +    object_property_set_int(OBJECT(psi9), "bar", PNV9_PSIHB_BASE(chip),
>                              &error_fatal);
>      /* This is the only device with 4k ESB pages */
> -    object_property_set_int(OBJECT(&chip9->psi), "shift", XIVE_ESB_4K,
> +    object_property_set_int(OBJECT(psi9), "shift", XIVE_ESB_4K,
>                              &error_fatal);
> -    if (!qdev_realize(DEVICE(&chip9->psi), NULL, errp)) {
> +    if (!qdev_realize(DEVICE(psi9), NULL, errp)) {
>          return;
>      }
>      pnv_xscom_add_subregion(chip, PNV9_XSCOM_PSIHB_BASE,
> @@ -1571,7 +1571,7 @@ static void pnv_chip_power9_realize(DeviceState *dev, Error **errp)
>      }
>      pnv_xscom_add_subregion(chip, PNV9_XSCOM_OCC_BASE, &chip9->occ.xscom_regs);
>      qdev_connect_gpio_out(DEVICE(&chip9->occ), 0, qdev_get_gpio_in(
> -                              DEVICE(&chip9->psi), PSIHB9_IRQ_OCC));
> +                              DEVICE(psi9), PSIHB9_IRQ_OCC));
>  
>      /* OCC SRAM model */
>      memory_region_add_subregion(get_system_memory(), PNV9_OCC_SENSOR_BASE(chip),
> @@ -1586,7 +1586,7 @@ static void pnv_chip_power9_realize(DeviceState *dev, Error **errp)
>      pnv_xscom_add_subregion(chip, PNV9_XSCOM_SBE_MBOX_BASE,
>                              &chip9->sbe.xscom_mbox_regs);
>      qdev_connect_gpio_out(DEVICE(&chip9->sbe), 0, qdev_get_gpio_in(
> -                              DEVICE(&chip9->psi), PSIHB9_IRQ_PSU));
> +                              DEVICE(psi9), PSIHB9_IRQ_PSU));
>  
>      /* HOMER */
>      object_property_set_link(OBJECT(&chip9->homer), "chip", OBJECT(chip),
> @@ -1627,7 +1627,7 @@ static void pnv_chip_power9_realize(DeviceState *dev, Error **errp)
>                                          PNV9_XSCOM_I2CM_SIZE,
>                                  &chip9->i2c[i].xscom_regs);
>          qdev_connect_gpio_out(DEVICE(&chip9->i2c[i]), 0,
> -                              qdev_get_gpio_in(DEVICE(&chip9->psi),
> +                              qdev_get_gpio_in(DEVICE(psi9),
>                                                 PSIHB9_IRQ_SBE_I2C));
>      }
>  }
> diff --git a/hw/virtio/vhost-user-gpio.c b/hw/virtio/vhost-user-gpio.c
> index a83437a5da..6d4e9200ff 100644
> --- a/hw/virtio/vhost-user-gpio.c
> +++ b/hw/virtio/vhost-user-gpio.c
> @@ -79,9 +79,9 @@ static int vu_gpio_start(VirtIODevice *vdev)
>       * set needed for the vhost configuration. The backend may also
>       * apply backend_features when the feature set is sent.
>       */
> -    vhost_ack_features(&gpio->vhost_dev, feature_bits, vdev->guest_features);
> +    vhost_ack_features(vhost_dev, feature_bits, vdev->guest_features);
>  
> -    ret = vhost_dev_start(&gpio->vhost_dev, vdev, false);
> +    ret = vhost_dev_start(vhost_dev, vdev, false);
>      if (ret < 0) {
>          error_report("Error starting vhost-user-gpio: %d", ret);
>          goto err_guest_notifiers;
> @@ -94,7 +94,7 @@ static int vu_gpio_start(VirtIODevice *vdev)
>       * enabling/disabling irqfd.
>       */
>      for (i = 0; i < gpio->vhost_dev.nvqs; i++) {
> -        vhost_virtqueue_mask(&gpio->vhost_dev, vdev, i, false);
> +        vhost_virtqueue_mask(vhost_dev, vdev, i, false);
>      }
>  
>      /*
> @@ -114,7 +114,7 @@ static int vu_gpio_start(VirtIODevice *vdev)
>  err_guest_notifiers:
>      k->set_guest_notifiers(qbus->parent, gpio->vhost_dev.nvqs, false);
>  err_host_notifiers:
> -    vhost_dev_disable_notifiers(&gpio->vhost_dev, vdev);
> +    vhost_dev_disable_notifiers(vhost_dev, vdev);
>  
>      return ret;
>  }
> diff --git a/hw/virtio/vhost-user-scmi.c b/hw/virtio/vhost-user-scmi.c
> index 918bb7dcf7..300847e672 100644
> --- a/hw/virtio/vhost-user-scmi.c
> +++ b/hw/virtio/vhost-user-scmi.c
> @@ -56,9 +56,9 @@ static int vu_scmi_start(VirtIODevice *vdev)
>          goto err_host_notifiers;
>      }
>  
> -    vhost_ack_features(&scmi->vhost_dev, feature_bits, vdev->guest_features);
> +    vhost_ack_features(vhost_dev, feature_bits, vdev->guest_features);
>  
> -    ret = vhost_dev_start(&scmi->vhost_dev, vdev, true);
> +    ret = vhost_dev_start(vhost_dev, vdev, true);
>      if (ret < 0) {
>          error_report("Error starting vhost-user-scmi: %d", ret);
>          goto err_guest_notifiers;
> @@ -71,7 +71,7 @@ static int vu_scmi_start(VirtIODevice *vdev)
>       * enabling/disabling irqfd.
>       */
>      for (i = 0; i < scmi->vhost_dev.nvqs; i++) {
> -        vhost_virtqueue_mask(&scmi->vhost_dev, vdev, i, false);
> +        vhost_virtqueue_mask(vhost_dev, vdev, i, false);
>      }
>      return 0;
>  
> diff --git a/hw/virtio/virtio-pci.c b/hw/virtio/virtio-pci.c
> index 1a7039fb0c..cb6940fc0e 100644
> --- a/hw/virtio/virtio-pci.c
> +++ b/hw/virtio/virtio-pci.c
> @@ -1929,7 +1929,7 @@ static void virtio_pci_device_plugged(DeviceState *d, Error **errp)
>      bool modern_pio = proxy->flags & VIRTIO_PCI_FLAG_MODERN_PIO_NOTIFY;
>      uint8_t *config;
>      uint32_t size;
> -    VirtIODevice *vdev = virtio_bus_get_device(&proxy->bus);
> +    VirtIODevice *vdev = virtio_bus_get_device(bus);
>  
>      /*
>       * Virtio capabilities present without
> diff --git a/hw/xen/xen_pt.c b/hw/xen/xen_pt.c
> index 36e6f93c37..10ddf6bc91 100644
> --- a/hw/xen/xen_pt.c
> +++ b/hw/xen/xen_pt.c
> @@ -710,7 +710,7 @@ static void xen_pt_destroy(PCIDevice *d) {
>      uint8_t intx;
>      int rc;
>  
> -    if (machine_irq && !xen_host_pci_device_closed(&s->real_device)) {
> +    if (machine_irq && !xen_host_pci_device_closed(host_dev)) {
>          intx = xen_pt_pci_intx(s);
>          rc = xc_domain_unbind_pt_irq(xen_xc, xen_domid, machine_irq,
>                                       PT_IRQ_TYPE_PCI,
> @@ -759,8 +759,8 @@ static void xen_pt_destroy(PCIDevice *d) {
>          memory_listener_unregister(&s->io_listener);
>          s->listener_set = false;
>      }
> -    if (!xen_host_pci_device_closed(&s->real_device)) {
> -        xen_host_pci_device_put(&s->real_device);
> +    if (!xen_host_pci_device_closed(host_dev)) {
> +        xen_host_pci_device_put(host_dev);
>      }
>  }
>  /* init */
> diff --git a/migration/multifd-zlib.c b/migration/multifd-zlib.c
> index 37ce48621e..237ee49928 100644
> --- a/migration/multifd-zlib.c
> +++ b/migration/multifd-zlib.c
> @@ -75,7 +75,7 @@ static int zlib_send_setup(MultiFDSendParams *p, Error **errp)
>  err_free_zbuff:
>      g_free(z->zbuff);
>  err_deflate_end:
> -    deflateEnd(&z->zs);
> +    deflateEnd(zs);
>  err_free_z:
>      g_free(z);
>      error_setg(errp, "multifd %u: %s", p->id, err_msg);
> diff --git a/target/arm/cpu.c b/target/arm/cpu.c
> index b60e103046..60ab8f3242 100644
> --- a/target/arm/cpu.c
> +++ b/target/arm/cpu.c
> @@ -2087,7 +2087,7 @@ static void arm_cpu_realizefn(DeviceState *dev, Error **errp)
>       * We rely on no XScale CPU having VFP so we can use the same bits in the
>       * TB flags field for VECSTRIDE and XSCALE_CPAR.
>       */
> -    assert(arm_feature(&cpu->env, ARM_FEATURE_AARCH64) ||
> +    assert(arm_feature(env, ARM_FEATURE_AARCH64) ||
>             !cpu_isar_feature(aa32_vfp_simd, cpu) ||
>             !arm_feature(env, ARM_FEATURE_XSCALE));
>  
> @@ -2129,7 +2129,7 @@ static void arm_cpu_realizefn(DeviceState *dev, Error **errp)
>      }
>  
>      if (cpu->cfgend) {
> -        if (arm_feature(&cpu->env, ARM_FEATURE_V7)) {
> +        if (arm_feature(env, ARM_FEATURE_V7)) {
>              cpu->reset_sctlr |= SCTLR_EE;
>          } else {
>              cpu->reset_sctlr |= SCTLR_B;
> diff --git a/target/arm/kvm.c b/target/arm/kvm.c
> index 81813030a5..ab85d628a8 100644
> --- a/target/arm/kvm.c
> +++ b/target/arm/kvm.c
> @@ -1888,7 +1888,7 @@ int kvm_arch_init_vcpu(CPUState *cs)
>          cpu->psci_version = QEMU_PSCI_VERSION_0_2;
>          cpu->kvm_init_features[0] |= 1 << KVM_ARM_VCPU_PSCI_0_2;
>      }
> -    if (!arm_feature(&cpu->env, ARM_FEATURE_AARCH64)) {
> +    if (!arm_feature(env, ARM_FEATURE_AARCH64)) {
>          cpu->kvm_init_features[0] |= 1 << KVM_ARM_VCPU_EL1_32BIT;
>      }
>      if (!kvm_check_extension(cs->kvm_state, KVM_CAP_ARM_PMU_V3)) {
> diff --git a/target/arm/machine.c b/target/arm/machine.c
> index 9d7dbaea54..b2b39b2475 100644
> --- a/target/arm/machine.c
> +++ b/target/arm/machine.c
> @@ -773,7 +773,7 @@ static int cpu_pre_load(void *opaque)
>      env->irq_line_state = UINT32_MAX;
>  
>      if (!kvm_enabled()) {
> -        pmu_op_start(&cpu->env);
> +        pmu_op_start(env);
>      }
>  
>      return 0;
> @@ -871,11 +871,11 @@ static int cpu_post_load(void *opaque, int version_id)
>      }
>  
>      if (!kvm_enabled()) {
> -        pmu_op_finish(&cpu->env);
> +        pmu_op_finish(env);
>      }
>  
>      if (tcg_enabled()) {
> -        arm_rebuild_hflags(&cpu->env);
> +        arm_rebuild_hflags(env);
>      }
>  
>      return 0;
> diff --git a/target/i386/hvf/x86hvf.c b/target/i386/hvf/x86hvf.c
> index 3b1ef5f49a..be2c46246e 100644
> --- a/target/i386/hvf/x86hvf.c
> +++ b/target/i386/hvf/x86hvf.c
> @@ -408,7 +408,7 @@ bool hvf_inject_interrupts(CPUState *cs)
>      if (!(env->hflags & HF_INHIBIT_IRQ_MASK) &&
>          (cs->interrupt_request & CPU_INTERRUPT_HARD) &&
>          (env->eflags & IF_MASK) && !(info & VMCS_INTR_VALID)) {
> -        int line = cpu_get_pic_interrupt(&x86cpu->env);
> +        int line = cpu_get_pic_interrupt(env);
>          cs->interrupt_request &= ~CPU_INTERRUPT_HARD;
>          if (line >= 0) {
>              wvmcs(cs->accel->fd, VMCS_ENTRY_INTR_INFO, line |
> diff --git a/target/m68k/helper.c b/target/m68k/helper.c
> index 14508dfa11..a812f328a1 100644
> --- a/target/m68k/helper.c
> +++ b/target/m68k/helper.c
> @@ -972,7 +972,7 @@ bool m68k_cpu_tlb_fill(CPUState *cs, vaddr address, int size,
>          access_type |= ACCESS_SUPER;
>      }
>  
> -    ret = get_physical_address(&cpu->env, &physical, &prot,
> +    ret = get_physical_address(env, &physical, &prot,
>                                 address, access_type, &page_size);
>      if (likely(ret == 0)) {
>          tlb_set_page(cs, address & TARGET_PAGE_MASK,
> diff --git a/target/ppc/kvm.c b/target/ppc/kvm.c
> index 26fa9d0575..b95a0b4928 100644
> --- a/target/ppc/kvm.c
> +++ b/target/ppc/kvm.c
> @@ -635,8 +635,8 @@ static int kvm_put_fp(CPUState *cs)
>  
>          for (i = 0; i < 32; i++) {
>              uint64_t vsr[2];
> -            uint64_t *fpr = cpu_fpr_ptr(&cpu->env, i);
> -            uint64_t *vsrl = cpu_vsrl_ptr(&cpu->env, i);
> +            uint64_t *fpr = cpu_fpr_ptr(env, i);
> +            uint64_t *vsrl = cpu_vsrl_ptr(env, i);
>  
>  #if HOST_BIG_ENDIAN
>              vsr[0] = float64_val(*fpr);
> @@ -704,8 +704,8 @@ static int kvm_get_fp(CPUState *cs)
>  
>          for (i = 0; i < 32; i++) {
>              uint64_t vsr[2];
> -            uint64_t *fpr = cpu_fpr_ptr(&cpu->env, i);
> -            uint64_t *vsrl = cpu_vsrl_ptr(&cpu->env, i);
> +            uint64_t *fpr = cpu_fpr_ptr(env, i);
> +            uint64_t *vsrl = cpu_vsrl_ptr(env, i);
>  
>              reg.addr = (uintptr_t) &vsr;
>              reg.id = vsx ? KVM_REG_PPC_VSR(i) : KVM_REG_PPC_FPR(i);
> diff --git a/target/riscv/cpu_helper.c b/target/riscv/cpu_helper.c
> index c7cc7eb423..791435d628 100644
> --- a/target/riscv/cpu_helper.c
> +++ b/target/riscv/cpu_helper.c
> @@ -1200,7 +1200,7 @@ hwaddr riscv_cpu_get_phys_page_debug(CPUState *cs, vaddr addr)
>      CPURISCVState *env = &cpu->env;
>      hwaddr phys_addr;
>      int prot;
> -    int mmu_idx = cpu_mmu_index(&cpu->env, false);
> +    int mmu_idx = cpu_mmu_index(env, false);
>  
>      if (get_physical_address(env, &phys_addr, &prot, addr, NULL, 0, mmu_idx,
>                               true, env->virt_enabled, true)) {
> -- 
> 2.41.0
> 
> 


From xen-devel-bounces@lists.xenproject.org Tue Jan 30 17:18:44 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 30 Jan 2024 17:18:44 +0000
Received: from list by lists.xenproject.org with outflank-mailman.673643.1048044 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUrki-0002zZ-Ke; Tue, 30 Jan 2024 17:18:28 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 673643.1048044; Tue, 30 Jan 2024 17:18:28 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUrki-0002zS-I7; Tue, 30 Jan 2024 17:18:28 +0000
Received: by outflank-mailman (input) for mailman id 673643;
 Tue, 30 Jan 2024 17:18:27 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=BUgQ=JI=cloud.com=roger.pau@srs-se1.protection.inumbo.net>)
 id 1rUrkh-0002zF-MY
 for xen-devel@lists.xenproject.org; Tue, 30 Jan 2024 17:18:27 +0000
Received: from mail-ej1-x629.google.com (mail-ej1-x629.google.com
 [2a00:1450:4864:20::629])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 93a54be3-bf93-11ee-98f5-efadbce2ee36;
 Tue, 30 Jan 2024 18:18:25 +0100 (CET)
Received: by mail-ej1-x629.google.com with SMTP id
 a640c23a62f3a-a26ed1e05c7so510947266b.2
 for <xen-devel@lists.xenproject.org>; Tue, 30 Jan 2024 09:18:25 -0800 (PST)
Received: from localhost ([213.195.118.74]) by smtp.gmail.com with ESMTPSA id
 9-20020a170906300900b00a3612edf0c6sm1074438ejz.58.2024.01.30.09.18.24
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 30 Jan 2024 09:18:24 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 93a54be3-bf93-11ee-98f5-efadbce2ee36
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1706635105; x=1707239905; darn=lists.xenproject.org;
        h=in-reply-to:content-transfer-encoding:content-disposition
         :mime-version:references:message-id:subject:cc:to:from:date:from:to
         :cc:subject:date:message-id:reply-to;
        bh=enU0Ye7SHtlyw1NrjLHGA8ItVUlKWV6AWYyZgNbTKk4=;
        b=sdZf5gCJmt0hQN7Spw3hfzJ6J1j/8HCuaFca5D+qD5OFAx5lj3bQC+/yXlo/BbzGlV
         Rgbr9hatI3tkcGphCnuKk/TwJHDirg3lyBGYWkupabcO4UMX0KBU6uvBmqpzqIZy0o78
         IANyoiDeznEs8XaTWHiBid3hSYss9TDo0nKAg=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706635105; x=1707239905;
        h=in-reply-to:content-transfer-encoding:content-disposition
         :mime-version:references:message-id:subject:cc:to:from:date
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=enU0Ye7SHtlyw1NrjLHGA8ItVUlKWV6AWYyZgNbTKk4=;
        b=w0Km8CiJbjK1VVwq+SB+Mrc0LnnImCY1aZNMimWjUu6wEmkfSa6PfGULAoQ1CY/xRn
         7EA1k91PLWhlU9m3CNjpaF/PocGeaCwUffgzclL1/727TjibOEhXR3vg1RSkn6+fD+FA
         /jrvmUD+tO+gIk09meMxbFi0UCLLG3I7GclrbrUpthauRBsKKODCceq7Z5xhl9idfycN
         elLcjO/I9QoJ6w1GxHIWtaES7kZT36JQdYNSksTWvX8r0/DkoiE4FIVHa3qAMZzK5+9p
         CuStoInUYFiQx18/x0veuf6Hx+7Oy5H0EqMO//uNegx8oTFhkb2C5x3fvPmF2svscH+7
         WLbg==
X-Gm-Message-State: AOJu0Yx3vLLNWFPx9gC6fixJJ44bgNM8BHvJvwKqcazsdSY9piFaLdIf
	pfvMWBrpzYESOp5IQSF/cE8xHmNQVkHVYw8s1DxpzodgTK8NkoufBCgXjDV5i6Q=
X-Google-Smtp-Source: AGHT+IF3T8xRQFk7vJAqcF088RF6o552JYgyrRXRhA2UTBYGTFOs2QRFoc0vg9lTOUeGwJ9ITPsXcQ==
X-Received: by 2002:a17:906:3c5b:b0:a31:818d:4927 with SMTP id i27-20020a1709063c5b00b00a31818d4927mr6558929ejg.42.1706635104953;
        Tue, 30 Jan 2024 09:18:24 -0800 (PST)
Date: Tue, 30 Jan 2024 18:18:23 +0100
From: Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
To: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: xen-devel@lists.xenproject.org, Jan Beulich <jbeulich@suse.com>,
	Wei Liu <wl@xen.org>
Subject: Re: [PATCH 0/3] x86/intel: expose additional SPEC_CTRL MSR controls
Message-ID: <ZbkvX857u0lESr21@macbook>
References: <20240130091400.50622-1-roger.pau@citrix.com>
 <85794e25-03bd-47b8-90b4-c08fbbd5a756@citrix.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <85794e25-03bd-47b8-90b4-c08fbbd5a756@citrix.com>

On Tue, Jan 30, 2024 at 04:25:40PM +0000, Andrew Cooper wrote:
> On 30/01/2024 9:13 am, Roger Pau Monne wrote:
> > Roger Pau Monne (3):
> >   x86/intel: expose IPRED_CTRL to guests
> >   x86/intel: expose RRSBA_CTRL to guests
> >   x86/intel: expose BHI_CTRL to guests
> 
> A couple of things.  First,
> 
> diff --git a/xen/arch/x86/msr.c b/xen/arch/x86/msr.c
> index a04a11858045..382bc07785d0 100644
> --- a/xen/arch/x86/msr.c
> +++ b/xen/arch/x86/msr.c
> @@ -309,8 +309,8 @@ int guest_rdmsr(struct vcpu *v, uint32_t msr,
> uint64_t *val)
>  
>  /*
>   * Caller to confirm that MSR_SPEC_CTRL is available.  Intel and AMD have
> - * separate CPUID features for this functionality, but only set will be
> - * active.
> + * separate CPUID features for some of this functionality, but only one set
> + * will be active on a single host.
>   */
>  uint64_t msr_spec_ctrl_valid_bits(const struct cpu_policy *cp)
>  {
> 
> 
> There was a typo (missing the one in "but only one set"), but you're
> also adding bits now which are Intel-only and very likely to stay that way.

Oh, didn't realize the existing typo.

> IPRED_CTRL finally gives Intel CPUs a control with a similar security
> property to AMD IBRS;  i.e. I doubt AMD are going to gain support for
> these bits when they already guarantee that property and have done for
> years already.
> 
> 
> Next, I can't say that I particularly love that indentation.  This seems
> marginally less bad
> 
>     return (SPEC_CTRL_IBRS | SPEC_CTRL_STIBP |
>             (ssbd       ? SPEC_CTRL_SSBD       : 0) |
>             (psfd       ? SPEC_CTRL_PSFD       : 0) |
>             (cp->feat.ipred_ctrl
>              ? (SPEC_CTRL_IPRED_DIS_U | SPEC_CTRL_IPRED_DIS_S) : 0) |
>             (cp->feat.rrsba_ctrl
>              ? (SPEC_CTRL_RRSBA_DIS_U | SPEC_CTRL_RRSBA_DIS_S) : 0) |
>             (cp->feat.bhi_ctrl ? SPEC_CTRL_BHI_DIS_S : 0) |
>             0);
> 
> insofar as at least it's fewer lines.  Given the length of these new
> constants, I can't think of anything better.

I prefer my indentation, but it adds an extra line which might not be
desirable.

Feel free to adjust on commit.

Regards, Roger.


From xen-devel-bounces@lists.xenproject.org Tue Jan 30 17:29:55 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 30 Jan 2024 17:29:55 +0000
Received: from list by lists.xenproject.org with outflank-mailman.673651.1048054 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUrvh-0006bg-Ka; Tue, 30 Jan 2024 17:29:49 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 673651.1048054; Tue, 30 Jan 2024 17:29:49 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUrvh-0006bZ-I0; Tue, 30 Jan 2024 17:29:49 +0000
Received: by outflank-mailman (input) for mailman id 673651;
 Tue, 30 Jan 2024 17:29:48 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>) id 1rUrvg-0006bR-0v
 for xen-devel@lists.xenproject.org; Tue, 30 Jan 2024 17:29:48 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rUrvf-0004fN-Jx; Tue, 30 Jan 2024 17:29:47 +0000
Received: from 54-240-197-224.amazon.com ([54.240.197.224]
 helo=dev-dsk-jgrall-1b-035652ec.eu-west-1.amazon.com)
 by xenbits.xenproject.org with esmtpsa
 (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rUrvf-0008Ft-9w; Tue, 30 Jan 2024 17:29:47 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
	s=20200302mail; h=Content-Transfer-Encoding:MIME-Version:Message-Id:Date:
	Subject:Cc:To:From; bh=YUsBRa33zDNhna1IY2kSXXVWAQohLzBiuT+6OdS+yss=; b=1Qf15y
	EUEA2XgnFY4Ync8YizcwsKjNMMUZGcvOtLCGzvPVE55uqjyISYe8L04jt4qHz8fKfKDoc9EIL6gaF
	cyNRnT/yXta3IK7VLyufamHvnEbi2CQaexcRllEUzMSAZNTsUFkDWsNa1xjmeFMfejV1Ui4TXxnwf
	4Go9C6VaE0c=;
From: Julien Grall <julien@xen.org>
To: xen-devel@lists.xenproject.org
Cc: julien@xen.org,
	Julien Grall <jgrall@amazon.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Bertrand Marquis <bertrand.marquis@arm.com>,
	Michal Orzel <michal.orzel@amd.com>,
	Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
	Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>
Subject: [PATCH] xen/arm: Properly clean update to init_ttbr and smp_up_cpu
Date: Tue, 30 Jan 2024 17:29:42 +0000
Message-Id: <20240130172942.52175-1-julien@xen.org>
X-Mailer: git-send-email 2.40.1
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

From: Julien Grall <jgrall@amazon.com>

Recent rework to the secondary boot code modified how init_ttbr and
smp_up_cpu are accessed. Rather than directly accessing them, we
are using a pointer to them.

The helper clean_dcache() is expected to take the variable in parameter
and then clean its content. As we now pass a pointer to the variable,
we will clean the area storing the address rather than the content itself.

Switch to use clean_dcache_va_range() to avoid casting the pointer.

Fixes: a5ed59e62c6f ("arm/mmu: Move init_ttbr to a new section .data.idmap")
Fixes: 9a5114074b04 ("arm/smpboot: Move smp_up_cpu to a new section .data.idmap)

Reported-by: Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>
Signed-off-by: Julien Grall <jgrall@amazon.com>
---
 xen/arch/arm/mmu/smpboot.c | 2 +-
 xen/arch/arm/smpboot.c     | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/xen/arch/arm/mmu/smpboot.c b/xen/arch/arm/mmu/smpboot.c
index bc91fdfe3331..4ffc8254a44b 100644
--- a/xen/arch/arm/mmu/smpboot.c
+++ b/xen/arch/arm/mmu/smpboot.c
@@ -88,7 +88,7 @@ static void set_init_ttbr(lpae_t *root)
      * init_ttbr will be accessed with the MMU off, so ensure the update
      * is visible by cleaning the cache.
      */
-    clean_dcache(ptr);
+    clean_dcache_va_range(ptr, sizeof(uint64_t));
 
     unmap_domain_page(ptr);
 }
diff --git a/xen/arch/arm/smpboot.c b/xen/arch/arm/smpboot.c
index 119bfa3160ad..a84e706d77da 100644
--- a/xen/arch/arm/smpboot.c
+++ b/xen/arch/arm/smpboot.c
@@ -449,7 +449,7 @@ static void set_smp_up_cpu(unsigned long mpidr)
      * smp_up_cpu will be accessed with the MMU off, so ensure the update
      * is visible by cleaning the cache.
      */
-    clean_dcache(ptr);
+    clean_dcache_va_range(ptr, sizeof(unsigned long));
 
     unmap_domain_page(ptr);
 
-- 
2.40.1



From xen-devel-bounces@lists.xenproject.org Tue Jan 30 17:51:09 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 30 Jan 2024 17:51:09 +0000
Received: from list by lists.xenproject.org with outflank-mailman.673656.1048064 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUsGF-00046F-8m; Tue, 30 Jan 2024 17:51:03 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 673656.1048064; Tue, 30 Jan 2024 17:51:03 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUsGF-000468-6D; Tue, 30 Jan 2024 17:51:03 +0000
Received: by outflank-mailman (input) for mailman id 673656;
 Tue, 30 Jan 2024 17:51:01 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rUsGD-00045y-LS; Tue, 30 Jan 2024 17:51:01 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rUsGD-00050y-I5; Tue, 30 Jan 2024 17:51:01 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rUsGD-0003ml-7B; Tue, 30 Jan 2024 17:51:01 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rUsGD-00063K-4Y; Tue, 30 Jan 2024 17:51:01 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=j0w8aH33Bwt6HaE0mma1lXPwy5CGqkoMVhmBtdebjsU=; b=bj3AnW5H1QTZHYuqD0CcibT7Ds
	UFze6G0Cb9JGhj1sVFNEHCc9d8NoUMaD8DSn2bCq/BvNEGo4Kj3Z8X+mAK386H5HcolYrwyBj6MKW
	5Kw6Bb7eQ1b2oEh8YpI2hx1EKCI9Zb8/2JU9OmM4LlFUzlNYM+Egi6pb1R1DrcMSlDmU=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184525-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [linux-linus test] 184525: tolerable FAIL - PUSHED
X-Osstest-Failures:
    linux-linus:test-amd64-amd64-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    linux-linus:test-amd64-amd64-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    linux-linus:test-amd64-amd64-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-qcow2:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-raw:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    linux-linus:test-amd64-amd64-qemuu-nested-amd:debian-hvm-install/l1/l2:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-xsm:migrate-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-thunderx:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-thunderx:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-credit2:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-credit2:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-libvirt-xsm:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-libvirt-xsm:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-credit1:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-xsm:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-credit1:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-xsm:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-arndale:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-arndale:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-multivcpu:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-multivcpu:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-qcow2:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-libvirt-raw:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-vhd:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-vhd:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-qcow2:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-vhd:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-vhd:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-rtds:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-rtds:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit1:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit1:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit2:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit2:saverestore-support-check:fail:nonblocking
X-Osstest-Versions-This:
    linux=861c0981648f5b64c86fd028ee622096eb7af05a
X-Osstest-Versions-That:
    linux=41bccc98fb7931d63d03f326a746ac4d429c1dd3
From: osstest service owner <osstest-admin@xenproject.org>
Date: Tue, 30 Jan 2024 17:51:01 +0000

flight 184525 linux-linus real [real]
http://logs.test-lab.xenproject.org/osstest/logs/184525/

Failures :-/ but no regressions.

Tests which did not succeed, but are not blocking:
 test-amd64-amd64-xl-qemut-win7-amd64 19 guest-stop            fail like 184517
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 184517
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 184517
 test-armhf-armhf-libvirt-qcow2 15 saverestore-support-check   fail like 184517
 test-armhf-armhf-libvirt-raw 15 saverestore-support-check    fail  like 184517
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 184517
 test-amd64-amd64-xl-qemut-ws16-amd64 19 guest-stop            fail like 184517
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 184517
 test-amd64-amd64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt     15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl          15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl          16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-thunderx 15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-thunderx 16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-credit2  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit2  16 saverestore-support-check    fail   never pass
 test-arm64-arm64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-xsm 16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-credit1  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-xsm      15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit1  16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-xsm      16 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-armhf-armhf-xl-arndale  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-arndale  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-multivcpu 15 migrate-support-check        fail  never pass
 test-armhf-armhf-xl-multivcpu 16 saverestore-support-check    fail  never pass
 test-armhf-armhf-xl          15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          16 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-qcow2 14 migrate-support-check        fail never pass
 test-arm64-arm64-libvirt-raw 14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 15 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-raw 14 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-vhd      14 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-vhd      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-qcow2 14 migrate-support-check        fail never pass
 test-armhf-armhf-libvirt-raw 14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-rtds     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-rtds     16 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit1  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit1  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-credit2  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit2  16 saverestore-support-check    fail   never pass

version targeted for testing:
 linux                861c0981648f5b64c86fd028ee622096eb7af05a
baseline version:
 linux                41bccc98fb7931d63d03f326a746ac4d429c1dd3

Last test of basis   184517  2024-01-29 12:55:37 Z    1 days
Testing same since   184525  2024-01-30 04:10:43 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Alexander Potapenko <glider@google.com>
  Andrew Morton <akpm@linux-foundation.org>
  Audra Mitchell <audra@redhat.com>
  Dan Streetman <ddstreet@ieee.org>
  Dave Kleikamp <dave.kleikamp@oracle.com>
  David Hildenbrand <david@redhat.com>
  Jan Kara <jack@suse.cz>
  Jiri Olsa <jolsa@kernel.org>
  Jiri Slaby <jirislaby@kernel.org>
  Johannes Weiner <hannes@cmpxchg.org>
  Linus Torvalds <torvalds@linux-foundation.org>
  Lokesh Gidra <lokeshgidra@google.com>
  Marco Elver <elver@google.com>
  Masami Hiramatsu (Google) <mhiramat@kernel.org>
  Miaohe Lin <linmiaohe@huawei.com>
  Muchun Song <muchun.song@linux.dev>
  Muhammad Usama Anjum <usama.anjum@collabora.com>
  Nhat Pham <nphamcs@gmail.com>
  Nico Pache <npache@redhat.com>
  Oleg Nesterov <oleg@redhat.com>
  Oliver Sang <oliver.sang@intel.com>
  Petr Vorel <pvorel@suse.cz>
  Roman Gushchin <roman.gushchin@linux.dev>
  Ryan Roberts <ryan.roberts@arm.com>
  Samuel Holland <samuel.holland@sifive.com>
  Seth Jennings <sjenning@redhat.com>
  Shakeel Butt <shakeelb@google.com>
  Sidhartha Kumar <sidhartha.kumar@oracle.com>
  Steven Rostedt (Google) <rostedt@goodmis.org>
  Suren Baghdasaryan <surenb@google.com>
  Yang Shi <yang@os.amperecomputing.com>
  Yosry Ahmed <yosryahmed@google.com>
  Zach O'Keefe <zokeefe@google.com>

jobs:
 build-amd64-xsm                                              pass    
 build-arm64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64                                                  pass    
 build-arm64                                                  pass    
 build-armhf                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-arm64-libvirt                                          pass    
 build-armhf-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-pvops                                            pass    
 build-arm64-pvops                                            pass    
 build-armhf-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-amd64-amd64-xl                                          pass    
 test-amd64-coresched-amd64-xl                                pass    
 test-arm64-arm64-xl                                          pass    
 test-armhf-armhf-xl                                          pass    
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm           pass    
 test-amd64-amd64-xl-qemut-stubdom-debianhvm-amd64-xsm        pass    
 test-amd64-amd64-xl-qemut-debianhvm-i386-xsm                 pass    
 test-amd64-amd64-xl-qemuu-debianhvm-i386-xsm                 pass    
 test-amd64-amd64-libvirt-xsm                                 pass    
 test-arm64-arm64-libvirt-xsm                                 pass    
 test-amd64-amd64-xl-xsm                                      pass    
 test-arm64-arm64-xl-xsm                                      pass    
 test-amd64-amd64-qemuu-nested-amd                            fail    
 test-amd64-amd64-xl-pvhv2-amd                                pass    
 test-amd64-amd64-dom0pvh-xl-amd                              pass    
 test-amd64-amd64-xl-qemut-debianhvm-amd64                    pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64                    pass    
 test-amd64-amd64-freebsd11-amd64                             pass    
 test-amd64-amd64-freebsd12-amd64                             pass    
 test-amd64-amd64-xl-qemuu-ovmf-amd64                         pass    
 test-amd64-amd64-xl-qemut-win7-amd64                         fail    
 test-amd64-amd64-xl-qemuu-win7-amd64                         fail    
 test-amd64-amd64-xl-qemut-ws16-amd64                         fail    
 test-amd64-amd64-xl-qemuu-ws16-amd64                         fail    
 test-armhf-armhf-xl-arndale                                  pass    
 test-amd64-amd64-examine-bios                                pass    
 test-amd64-amd64-xl-credit1                                  pass    
 test-arm64-arm64-xl-credit1                                  pass    
 test-armhf-armhf-xl-credit1                                  pass    
 test-amd64-amd64-xl-credit2                                  pass    
 test-arm64-arm64-xl-credit2                                  pass    
 test-armhf-armhf-xl-credit2                                  pass    
 test-amd64-amd64-xl-qemuu-dmrestrict-amd64-dmrestrict        pass    
 test-amd64-amd64-examine                                     pass    
 test-arm64-arm64-examine                                     pass    
 test-armhf-armhf-examine                                     pass    
 test-amd64-amd64-qemuu-nested-intel                          pass    
 test-amd64-amd64-xl-pvhv2-intel                              pass    
 test-amd64-amd64-dom0pvh-xl-intel                            pass    
 test-amd64-amd64-libvirt                                     pass    
 test-armhf-armhf-libvirt                                     pass    
 test-amd64-amd64-xl-multivcpu                                pass    
 test-armhf-armhf-xl-multivcpu                                pass    
 test-amd64-amd64-pair                                        pass    
 test-amd64-amd64-libvirt-pair                                pass    
 test-amd64-amd64-xl-pvshim                                   pass    
 test-amd64-amd64-pygrub                                      pass    
 test-amd64-amd64-libvirt-qcow2                               pass    
 test-armhf-armhf-libvirt-qcow2                               pass    
 test-amd64-amd64-libvirt-raw                                 pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-armhf-armhf-libvirt-raw                                 pass    
 test-amd64-amd64-xl-rtds                                     pass    
 test-armhf-armhf-xl-rtds                                     pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64-shadow             pass    
 test-amd64-amd64-xl-shadow                                   pass    
 test-arm64-arm64-xl-thunderx                                 pass    
 test-amd64-amd64-examine-uefi                                pass    
 test-amd64-amd64-xl-vhd                                      pass    
 test-arm64-arm64-xl-vhd                                      pass    
 test-armhf-armhf-xl-vhd                                      pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Pushing revision :

hint: The 'hooks/update' hook was ignored because it's not set as executable.
hint: You can disable this warning with `git config advice.ignoredHook false`.
hint: The 'hooks/post-receive' hook was ignored because it's not set as executable.
hint: You can disable this warning with `git config advice.ignoredHook false`.
hint: The 'hooks/post-update' hook was ignored because it's not set as executable.
hint: You can disable this warning with `git config advice.ignoredHook false`.
To xenbits.xen.org:/home/xen/git/linux-pvops.git
   41bccc98fb79..861c0981648f  861c0981648f5b64c86fd028ee622096eb7af05a -> tested/linux-linus


From xen-devel-bounces@lists.xenproject.org Tue Jan 30 18:10:36 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 30 Jan 2024 18:10:36 +0000
Received: from list by lists.xenproject.org with outflank-mailman.673662.1048075 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUsZ1-0002VP-Rp; Tue, 30 Jan 2024 18:10:27 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 673662.1048075; Tue, 30 Jan 2024 18:10:27 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUsZ1-0002VI-P0; Tue, 30 Jan 2024 18:10:27 +0000
Received: by outflank-mailman (input) for mailman id 673662;
 Tue, 30 Jan 2024 18:10:26 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=nelp=JI=epam.com=prvs=875913d1c2=oleksandr_tyshchenko@srs-se1.protection.inumbo.net>)
 id 1rUsZ0-0002VC-CC
 for xen-devel@lists.xenproject.org; Tue, 30 Jan 2024 18:10:26 +0000
Received: from mx0a-0039f301.pphosted.com (mx0a-0039f301.pphosted.com
 [148.163.133.242]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id d6721a53-bf9a-11ee-8a43-1f161083a0e0;
 Tue, 30 Jan 2024 19:10:25 +0100 (CET)
Received: from pps.filterd (m0174676.ppops.net [127.0.0.1])
 by mx0a-0039f301.pphosted.com (8.17.1.24/8.17.1.24) with ESMTP id
 40UGJPXL022894; Tue, 30 Jan 2024 18:10:10 GMT
Received: from eur04-db3-obe.outbound.protection.outlook.com
 (mail-db3eur04lp2050.outbound.protection.outlook.com [104.47.12.50])
 by mx0a-0039f301.pphosted.com (PPS) with ESMTPS id 3vy4hj8umn-1
 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT);
 Tue, 30 Jan 2024 18:10:09 +0000 (GMT)
Received: from DB8PR03MB6108.eurprd03.prod.outlook.com (2603:10a6:10:ed::15)
 by DBBPR03MB10440.eurprd03.prod.outlook.com (2603:10a6:10:53c::17) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7228.34; Tue, 30 Jan
 2024 18:10:06 +0000
Received: from DB8PR03MB6108.eurprd03.prod.outlook.com
 ([fe80::82af:59a5:4446:9167]) by DB8PR03MB6108.eurprd03.prod.outlook.com
 ([fe80::82af:59a5:4446:9167%4]) with mapi id 15.20.7249.017; Tue, 30 Jan 2024
 18:10:06 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: d6721a53-bf9a-11ee-8a43-1f161083a0e0
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=DrtR6DRvW5HyFvQEVSadSeP6xTufYtMHulsTyU0NymdpIW9DCMgMiuQyO20+bXEabRtaq9F30iUMta8BK4GFrP4mV7HKaHme2kqEN/bbBoGN0oOKiYBvVCA5ZQ5c+MixzTaDg3aYPpqAccwgAWYvNJ4VC7DS7qK+mJDXGSdScX3hLoevwanQV7tTjX3482wmw/yix5KXKuZ6Bmu95du5Sz/Gf9OCUm7uV2NUuW3zd0PDFPRiqsoF9boYsYyJAAs6Cek9jsdd/q8kf3I1ZMyvHzQHoSDofS7Kkoj2vGVHPiQV+Nm1kSCdaf4VVrgWe4uzhIrAOIaDnO3lw1ZHFBCu4Q==
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=+YVpvWJmtnyfvFJRT7vIoRtVvt0hhVd9rXB4SJedm2E=;
 b=PLOR8fVQzS99uLgaul+y5fWkBhp1tB2QxK9avUmFpNlIE+t0Gw+iyKryAtEqzdU5/FESKy5LGtmLs2RQtDH6zWDt4VJRzvUZCReOqBTmv6KcEkBxLAot4XmWfLdx8Wu98y5rbUIunjREHgrp1bDQfpVjq0KcIGdu6kmV6PLZpeqddlgW4JXmSIe0XzAtR614dUXEtuJLMtVRujWmnMd0IEeyr7zisnSecXLceRMDx699qt6eUmgk46HOKHrpCF3hgeLuD5o6t4VZgAb1QPnn8p83PHF3Rxcvk/h6c/CDSkuaodvufjPGFl2sEUZple1fuAKfZJicU/8uROrrbjG18Q==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=epam.com; dmarc=pass action=none header.from=epam.com;
 dkim=pass header.d=epam.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=epam.com; s=selector2;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=+YVpvWJmtnyfvFJRT7vIoRtVvt0hhVd9rXB4SJedm2E=;
 b=Yr+jsfREyBSUSy26YfsxvkuWz+Tvwckyi67zRYpxzUdH3sXi3zdxXL1K91msJj9sJ1p6QSuQnD8tArEToqLj63xbW8x6uywoolgmsUZ4msUoNV7R3tCy/KormNndq3mvPy2RzA2/bOiy0ahnRC4psgWJGlD3tE43P/vgGkMz7UuwQo+a9DRLSenxUeI6ypkqBbiRcAOObnz0iH8FlO0KrJv5yMV33FmZAFwvluNhv25bAGh67s9HnKiToxaFb+1Oqi8DiBnfwyoWF1XDD5K9z5tMpAXG57Kzn5B5Y8zUHl8LuOuh1mW+K3evFzs2EWLUnGnDn4c1Oz3d1iuY6AWyNg==
From: Oleksandr Tyshchenko <Oleksandr_Tyshchenko@epam.com>
To: Julien Grall <julien@xen.org>,
        "xen-devel@lists.xenproject.org"
	<xen-devel@lists.xenproject.org>
CC: Julien Grall <jgrall@amazon.com>,
        Stefano Stabellini
	<sstabellini@kernel.org>,
        Bertrand Marquis <bertrand.marquis@arm.com>,
        Michal
 Orzel <michal.orzel@amd.com>,
        Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>
Subject: Re: [PATCH] xen/arm: Properly clean update to init_ttbr and
 smp_up_cpu
Thread-Topic: [PATCH] xen/arm: Properly clean update to init_ttbr and
 smp_up_cpu
Thread-Index: AQHaU6HyUyltufp+KE2Jtz4dElFoO7Dyp8CA
Date: Tue, 30 Jan 2024 18:10:05 +0000
Message-ID: <0e1c942e-0a1a-4e1f-887e-d3e777a8855d@epam.com>
References: <20240130172942.52175-1-julien@xen.org>
In-Reply-To: <20240130172942.52175-1-julien@xen.org>
Accept-Language: en-US, ru-RU
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: DB8PR03MB6108:EE_|DBBPR03MB10440:EE_
x-ms-office365-filtering-correlation-id: 4c1e9b10-2bea-4412-d968-08dc21beafd3
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam: BCL:0;
x-microsoft-antispam-message-info: 
 Hdpm1j9mZXyEVo5LaOMZ/EJAkQ6vypFeR0LuCsSPW2IwWeTcjYRkFsbx3PVRWUbRaoQfw0fI4e+REkpAYWSoDLyJDdCDqKXupNuoU2Xsj70d5FfevdUOwfL00Ta6X5BuPK0ZZIQjE3N1WScnDdF+IKy/Nc5ynWGUIBRLM+IoxSV/TFJeOyqBDWKIaLmc2jYEZ+748ZCyJ7UuMS3wTl5acD/BB+J0VOqe6iejg8qmtXoHcinOupKdyxJSiGZUmNE1SiAgetGGZfYc4W3WJJ2thB538uQzIFXd6jVqCRf4hXbO2ryNqYMwjvZrF7+NvEK7pv1frcB5sGKV/912n6sxSkAevRCfKhVaAtyWDzYy7YTblDCG1+riYPrvPq7oogCyddvyMYjZgAnjrZ7f99CoHPEdf7kittBDf+amMCLaeMng/N14WvDreuPT0jGRnNFsJEEAhQt4NZBj0pprsRgb9GQP+Jt3ZSx9PVyx97cVFoMAo41ir4z9D9FI0ZJd7z851wCHNeO45sN2+SLd9GGK+PiVN3qzm/jGbWVLfjdXp3EHcRLNwRrCSng9vjickkJvFWUGAPmqRPlleQh67xjTcZiEHqq0mKAmamWtK5G30bedLvNxuYx20xJwPY19S0Vtd7Nmh88aVL5TNM1Cxg2pNg==
x-forefront-antispam-report: 
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DB8PR03MB6108.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230031)(396003)(366004)(136003)(346002)(376002)(39860400002)(230922051799003)(64100799003)(451199024)(1800799012)(186009)(110136005)(36756003)(83380400001)(6512007)(38070700009)(76116006)(107886003)(6486002)(6506007)(53546011)(478600001)(71200400001)(86362001)(31696002)(2906002)(15650500001)(54906003)(66446008)(66556008)(26005)(8936002)(66476007)(316002)(64756008)(5660300002)(4326008)(2616005)(66946007)(8676002)(41300700001)(122000001)(38100700002)(31686004)(45980500001);DIR:OUT;SFP:1101;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0: 
 =?utf-8?B?bVpKdkxlSG9mNjUyNlBvUHhWb2lLVCtuLzlBY3BuSlo2S1V3SjlEUXNTK2hu?=
 =?utf-8?B?czZnVWdrZTdNTnlERktyaDN5blVNd1lsZGJqbC9SdVpWRk44Sms2dzB5b0tW?=
 =?utf-8?B?Nm50WGVnU2MxR2NnTlIxSDIybHc5M3hnYUZDY1JUc2tocndPWlZHOXZxb1JW?=
 =?utf-8?B?ZWxWcjlSaTVDQnF5S1JaZUlzM1lvY2R5VkJ3UlB0VXVJZ0RUakp1TDM1Vkpx?=
 =?utf-8?B?L3hBaHI4ODI5STRXazEydWVSUXRnSTZ6ak9Nd2NWRGIzeW1NdlZLdXN5ODNV?=
 =?utf-8?B?UkNUNlZGUjJUZTlXemp4WXNtM3BlVVo2RkJXcUZMVWErVGs5L29QbUZTd1hv?=
 =?utf-8?B?cGJUV3poU2JqUEYzUWhzRnpGdmFlbUtTVG5jSG5vSlRpTG5qaFkwS2tEYU83?=
 =?utf-8?B?WUtjSkpxcHZIRjYrY1NqRzJRZXdNMlljaFlqQmNGLy92RFdtZlN3cXhYczVU?=
 =?utf-8?B?eEUrZUppZFFhbHRoN3RQVzl0YlZuQ2NnNDhaeVNacjRrV0pVTnIwbVFHWUth?=
 =?utf-8?B?TjI4QzBhVkRYZmN3WE9SM0ZROXpleGhRc1VoZ2tibXNBYyttY0x0Tmc5QkhT?=
 =?utf-8?B?ZTlCeGVheUkrYzF3Zjc4Y2hQdlk5OXBaTzEwOEFKZUozeDdTR0lJRGNWWHd2?=
 =?utf-8?B?V0ptSkNkREQ2ZU5adXljV0FadlRmR1pWaDNUclJHUzQvWVhhczByQm1INS9L?=
 =?utf-8?B?RTFhTWkxMVB5TU5FUWZhRXpLVDBlZHBWTHI1V2VMN2FGazFXMGQ1UGxlZUJu?=
 =?utf-8?B?OGVCd29HNzdubUFOUFpFWUd0Z1ZCMWQwdlRUbHB0ak1XcEczNUh5UWI1Wk5U?=
 =?utf-8?B?M000eXV1TnU2N3Jtb1owNkpOblRmVmhFQTliYmQ4bXdpZFRsWGRIcnpiZytj?=
 =?utf-8?B?eDVad0oxQ0xRQnM5TmRGZ2dzWkQ1RkFNWHhyMFRNbVYzU0l0VVgwano2RUJH?=
 =?utf-8?B?ejk2QVEwOHZyRzhrYUY3aWM4N09uZEVqMmpiamNvNGtUcTc4dDN5RW1zSzgx?=
 =?utf-8?B?d3pBRUFqdGlROWJJbWhrcXJnUzN2VERkTCtLY0Z0RGxBdk1HU0dUM01Kbzlx?=
 =?utf-8?B?TVRwbFVvWllSempXbnRSbWpZMGlUUndKekZHejFwM0FEaEFnZFRwWUlaOGpS?=
 =?utf-8?B?N3QyVGl4K0t4ZE9TUGo4MGNydVJnSDF1Q3pHTWlwNXJGelE2WTVTREpnYXl3?=
 =?utf-8?B?anVWc0dTWXhmUXRhNERCU0dOMkk4VXgrWE12OXczL09tUXRBUit4RUo5M2tn?=
 =?utf-8?B?Z3RtUFI4bWpsOEdJTEFBYmdkS1JScWdRUXlJbHJJei9rTGQzM0ZONk9EUlhH?=
 =?utf-8?B?U0xIK3NaaUtTeDNkT1c0S2lQWE42cWVRWHg4cnlLZ2lEMzQ4SmgxSWd4T0Q5?=
 =?utf-8?B?V3hucDBLOFBMVmk5dWE2QlRPTWhXM0NmejVEUGt1Z3o1SDIvRncxUG1rdU03?=
 =?utf-8?B?ZExtNmpReEJKT3lnV2E2VTg0MGIyc0QyR2pxZlp3Z1Q2b2h0YjZiRU9SWUgz?=
 =?utf-8?B?VTBsZGgvQ0xLYmV1RU50MjhUQ3p3NzFhL1ZJMDhPK0E5ZmMyamRaTzhkT3Rw?=
 =?utf-8?B?Vk5UWmJ3VDZPeGJxcUI3R2RJbDA1ZEl3alVGNUdCWWI3R09UbTAzeUJSOFAv?=
 =?utf-8?B?a0ozQnA3NzNMRTN6Si8wR1dzU2hTME1SWE9xT2h6OFZoaU93SXFuNGxMZDAy?=
 =?utf-8?B?WU8rOVlzd2grUi9kYjNKT2JqU05zSGltd0tPVmE3eWNaWTYxK1QzRFlzMGRB?=
 =?utf-8?B?REVVK1loUWx6UzZ1d2kyMWVMZmMzamJRdlpuUkIyNW9LVk81SWlRdGxGM3ps?=
 =?utf-8?B?R1dxTFRHZEgyKzQ1U0lYYXcrQ2RyeS9pV2xVTkdKdlFVc3lnTGptOFBZa0RB?=
 =?utf-8?B?ZXpKS1FzVG0yOWZ4Rjk2WngwdHk4QlpEaFkwTmhyOGc0a0xvSDM0bUhkSlZY?=
 =?utf-8?B?VkN1ZlFVbnpCUTdkL2tSQWFRYkdQNGRJOEp4cDFOQklZczFTWFhBbnp2Mkpp?=
 =?utf-8?B?WVp6TCsxUzFmTk1VbkQ0SkhaZ2lsbVVVVEFmQ3VVQmU0SkljZGVzYnB6cURF?=
 =?utf-8?B?MkMzdmNSN0d5UFlqNUoyZ0JVVkdjZ01waVpUaFFjWll3MWxzOVlRalNMRlY1?=
 =?utf-8?B?MVhyaXE5YWdnWEswbFNKRm5ic1VvSlRoOXE1cklOK2xOTjFPZVo0L2tvSmtW?=
 =?utf-8?Q?Ixip/bCR2XgiWRklEu3znZo=3D?=
Content-Type: text/plain; charset="utf-8"
Content-ID: <F7596EE5B3A32743A9D752A80B3499F8@eurprd03.prod.outlook.com>
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-OriginatorOrg: epam.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: DB8PR03MB6108.eurprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 4c1e9b10-2bea-4412-d968-08dc21beafd3
X-MS-Exchange-CrossTenant-originalarrivaltime: 30 Jan 2024 18:10:05.6865
 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: b41b72d0-4e9f-4c26-8a69-f949f367c91d
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: TF8KQ4aQjTWoxbUiLp7pLiOaQlWzqdrlvkyYIiibGC4Layl9VtiA8s0cx5jr3RugQco4GHWcNFf7KYlWW+PgjVHUcpA+vbA4jU70rTXec8o=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DBBPR03MB10440
X-Proofpoint-GUID: ObZjWdr3_tRDbqGDZl56FPHWgs_3n_wt
X-Proofpoint-ORIG-GUID: ObZjWdr3_tRDbqGDZl56FPHWgs_3n_wt
X-Proofpoint-Virus-Version: vendor=baseguard
 engine=ICAP:2.0.272,Aquarius:18.0.1011,Hydra:6.0.619,FMLib:17.11.176.26
 definitions=2024-01-30_09,2024-01-30_01,2023-05-22_02
X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 lowpriorityscore=0
 mlxlogscore=618 phishscore=0 bulkscore=0 priorityscore=1501 mlxscore=0
 malwarescore=0 suspectscore=0 impostorscore=0 clxscore=1011 adultscore=0
 spamscore=0 classifier=spam adjust=0 reason=mlx scancount=1
 engine=8.19.0-2401190000 definitions=main-2401300135

DQoNCk9uIDMwLjAxLjI0IDE5OjI5LCBKdWxpZW4gR3JhbGwgd3JvdGU6DQoNCkhlbGxvIEp1bGll
bg0KDQoNCj4gRnJvbTogSnVsaWVuIEdyYWxsIDxqZ3JhbGxAYW1hem9uLmNvbT4NCj4gDQo+IFJl
Y2VudCByZXdvcmsgdG8gdGhlIHNlY29uZGFyeSBib290IGNvZGUgbW9kaWZpZWQgaG93IGluaXRf
dHRiciBhbmQNCj4gc21wX3VwX2NwdSBhcmUgYWNjZXNzZWQuIFJhdGhlciB0aGFuIGRpcmVjdGx5
IGFjY2Vzc2luZyB0aGVtLCB3ZQ0KPiBhcmUgdXNpbmcgYSBwb2ludGVyIHRvIHRoZW0uDQo+IA0K
PiBUaGUgaGVscGVyIGNsZWFuX2RjYWNoZSgpIGlzIGV4cGVjdGVkIHRvIHRha2UgdGhlIHZhcmlh
YmxlIGluIHBhcmFtZXRlcg0KPiBhbmQgdGhlbiBjbGVhbiBpdHMgY29udGVudC4gQXMgd2Ugbm93
IHBhc3MgYSBwb2ludGVyIHRvIHRoZSB2YXJpYWJsZSwNCj4gd2Ugd2lsbCBjbGVhbiB0aGUgYXJl
YSBzdG9yaW5nIHRoZSBhZGRyZXNzIHJhdGhlciB0aGFuIHRoZSBjb250ZW50IGl0c2VsZi4NCj4g
DQo+IFN3aXRjaCB0byB1c2UgY2xlYW5fZGNhY2hlX3ZhX3JhbmdlKCkgdG8gYXZvaWQgY2FzdGlu
ZyB0aGUgcG9pbnRlci4NCj4gDQo+IEZpeGVzOiBhNWVkNTllNjJjNmYgKCJhcm0vbW11OiBNb3Zl
IGluaXRfdHRiciB0byBhIG5ldyBzZWN0aW9uIC5kYXRhLmlkbWFwIikNCj4gRml4ZXM6IDlhNTEx
NDA3NGIwNCAoImFybS9zbXBib290OiBNb3ZlIHNtcF91cF9jcHUgdG8gYSBuZXcgc2VjdGlvbiAu
ZGF0YS5pZG1hcCkNCj4gDQo+IFJlcG9ydGVkLWJ5OiBPbGVrc2FuZHIgVHlzaGNoZW5rbyA8b2xl
a3NhbmRyX3R5c2hjaGVua29AZXBhbS5jb20+DQo+IFNpZ25lZC1vZmYtYnk6IEp1bGllbiBHcmFs
bCA8amdyYWxsQGFtYXpvbi5jb20+DQoNCg0KW29uIFJlbmVzYXMgUi1DYXIgR2VuMyBTb0Mgd2l0
aCA4IGNvcmVzIChBcm02NCldDQpUZXN0ZWQtYnk6IE9sZWtzYW5kciBUeXNoY2hlbmtvIDxvbGVr
c2FuZHJfdHlzaGNoZW5rb0BlcGFtLmNvbT4NCg0KDQo+IC0tLQ0KPiAgIHhlbi9hcmNoL2FybS9t
bXUvc21wYm9vdC5jIHwgMiArLQ0KPiAgIHhlbi9hcmNoL2FybS9zbXBib290LmMgICAgIHwgMiAr
LQ0KPiAgIDIgZmlsZXMgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQ0K
PiANCj4gZGlmZiAtLWdpdCBhL3hlbi9hcmNoL2FybS9tbXUvc21wYm9vdC5jIGIveGVuL2FyY2gv
YXJtL21tdS9zbXBib290LmMNCj4gaW5kZXggYmM5MWZkZmUzMzMxLi40ZmZjODI1NGE0NGIgMTAw
NjQ0DQo+IC0tLSBhL3hlbi9hcmNoL2FybS9tbXUvc21wYm9vdC5jDQo+ICsrKyBiL3hlbi9hcmNo
L2FybS9tbXUvc21wYm9vdC5jDQo+IEBAIC04OCw3ICs4OCw3IEBAIHN0YXRpYyB2b2lkIHNldF9p
bml0X3R0YnIobHBhZV90ICpyb290KQ0KPiAgICAgICAgKiBpbml0X3R0YnIgd2lsbCBiZSBhY2Nl
c3NlZCB3aXRoIHRoZSBNTVUgb2ZmLCBzbyBlbnN1cmUgdGhlIHVwZGF0ZQ0KPiAgICAgICAgKiBp
cyB2aXNpYmxlIGJ5IGNsZWFuaW5nIHRoZSBjYWNoZS4NCj4gICAgICAgICovDQo+IC0gICAgY2xl
YW5fZGNhY2hlKHB0cik7DQo+ICsgICAgY2xlYW5fZGNhY2hlX3ZhX3JhbmdlKHB0ciwgc2l6ZW9m
KHVpbnQ2NF90KSk7DQo+ICAgDQo+ICAgICAgIHVubWFwX2RvbWFpbl9wYWdlKHB0cik7DQo+ICAg
fQ0KPiBkaWZmIC0tZ2l0IGEveGVuL2FyY2gvYXJtL3NtcGJvb3QuYyBiL3hlbi9hcmNoL2FybS9z
bXBib290LmMNCj4gaW5kZXggMTE5YmZhMzE2MGFkLi5hODRlNzA2ZDc3ZGEgMTAwNjQ0DQo+IC0t
LSBhL3hlbi9hcmNoL2FybS9zbXBib290LmMNCj4gKysrIGIveGVuL2FyY2gvYXJtL3NtcGJvb3Qu
Yw0KPiBAQCAtNDQ5LDcgKzQ0OSw3IEBAIHN0YXRpYyB2b2lkIHNldF9zbXBfdXBfY3B1KHVuc2ln
bmVkIGxvbmcgbXBpZHIpDQo+ICAgICAgICAqIHNtcF91cF9jcHUgd2lsbCBiZSBhY2Nlc3NlZCB3
aXRoIHRoZSBNTVUgb2ZmLCBzbyBlbnN1cmUgdGhlIHVwZGF0ZQ0KPiAgICAgICAgKiBpcyB2aXNp
YmxlIGJ5IGNsZWFuaW5nIHRoZSBjYWNoZS4NCj4gICAgICAgICovDQo+IC0gICAgY2xlYW5fZGNh
Y2hlKHB0cik7DQo+ICsgICAgY2xlYW5fZGNhY2hlX3ZhX3JhbmdlKHB0ciwgc2l6ZW9mKHVuc2ln
bmVkIGxvbmcpKTsNCj4gICANCj4gICAgICAgdW5tYXBfZG9tYWluX3BhZ2UocHRyKTsNCj4gICA=


From xen-devel-bounces@lists.xenproject.org Tue Jan 30 18:37:39 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 30 Jan 2024 18:37:39 +0000
Received: from list by lists.xenproject.org with outflank-mailman.673667.1048085 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUszA-0007ss-33; Tue, 30 Jan 2024 18:37:28 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 673667.1048085; Tue, 30 Jan 2024 18:37:28 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUsz9-0007sl-VN; Tue, 30 Jan 2024 18:37:27 +0000
Received: by outflank-mailman (input) for mailman id 673667;
 Tue, 30 Jan 2024 18:37:27 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=Trk4=JI=citrix.com=prvs=75271d196=Andrew.Cooper3@srs-se1.protection.inumbo.net>)
 id 1rUsz8-0007rI-Us
 for xen-devel@lists.xenproject.org; Tue, 30 Jan 2024 18:37:26 +0000
Received: from esa5.hc3370-68.iphmx.com (esa5.hc3370-68.iphmx.com
 [216.71.155.168]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 9b613398-bf9e-11ee-8a43-1f161083a0e0;
 Tue, 30 Jan 2024 19:37:25 +0100 (CET)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 9b613398-bf9e-11ee-8a43-1f161083a0e0
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple;
  d=citrix.com; s=securemail; t=1706639844;
  h=from:to:cc:subject:date:message-id:mime-version:
   content-transfer-encoding;
  bh=HMH+BivxFKYscevT7fYuoktw2y/QdoOonEZ5XNa0xAo=;
  b=ZEJ7oAd7hf0cY3bS6qEU5WPiNdswQ1CDhoAAtPGMBlQpHXuM3eyFYjsH
   MId5csI++GEANOgVuVoVZS+jOpPp2eVRCzBnizUgj7Qbspiqj3uzArFBj
   XB9AW+Ke7tKaL44hpiksVT/hmHVYZGBcih48WC0flLfujt1O3j39dn7lC
   0=;
X-CSE-ConnectionGUID: SEPfN7VOSgqNqTsPueHzUw==
X-CSE-MsgGUID: W78XkaAPQqOu/nhq8N1O6w==
Authentication-Results: esa5.hc3370-68.iphmx.com; dkim=none (message not signed) header.i=none
X-SBRS: 4.0
X-MesageID: 128344464
X-Ironport-Server: esa5.hc3370-68.iphmx.com
X-Remote-IP: 162.221.159.70
X-Policy: $RELAYED
X-ThreatScanner-Verdict: Negative
IronPort-Data: A9a23:ef9EQ6hoA1c53XO3YvV1OKeTX161ORAKZh0ujC45NGQN5FlHY01je
 htvWzyFPK2KZmHxKIxxYISxpx4HupPUm9VjGQFpqylgF3gb9cadCdqndUqhZCn6wu8v7q5Ex
 55HNoSfdpBcolv0/ErF3m3J9CEkvU2wbuOhTraCYmYoHVMMpB4J0XpLg/Q+jpNjne+3CgaMv
 cKai8DEMRqu1iUc3lg8sspvkzsx+qyv0N8klgZmP6wT5QSGzyN94K83fsldEVOpGuG4IcbiL
 wrz5OnR1n/U+R4rFuSknt7TGqHdauePVeQmoiM+t5mK2nCulARrukoIHKN0hXNsoyeIh7hMJ
 OBl7vRcf+uL0prkw4zxWzEAe8130DYvFLXveRBTuuTLp6HKnueFL1yDwyjaMKVBktubD12i+
 tQjBQgDSE+9oNm52ZSidvJUm8kDPvT0adZ3VnFIlVk1DN4jSJHHBa7L+cVZzHE7gcUm8fT2P
 pRDL2A1NVKZPkwJZQ9/5JEWxY9EglHWdTFCpU3Tjq0w+2XJlyR60aT3McqTcduPLSlQth/C9
 jmaozinXnn2MvSglmq18XuFvtbWuj68XoILRJvh0aB11Qj7Kms7V0RNCArTTeOCol6zXZdTJ
 lIZ/gIqrLMu7wq7Q9/lRRq6rXWY+BkGVLJ4D+Q/4Rql1qnQ7gCWF2UACDVGbbQOluU7WDgr3
 V+hhM7yCHpkt7j9YW2Z3qeZq3W1Iyd9EIMZTXZaF01fuYCl+dxiyE2XJjp+LEKrpubYIT/Wn
 A6tlycnoawvlvYW2oWpwE+S1lpAuaP1oh4JChT/Bz39sF0gNd/6O+SVBU7nAeGsxbt1r2VtX
 1BewqByFMhUUfmweNWlGY3h5o2B6fefKyH7ilVyBZQn/DnF0yf8Jd4NvWoieRs5Y5hsldrVj
 Kn74185CHh7ZSXCUEOKS9jpV5RCIVbIS7wJqcw4nvIRO8MsJWdrDQllZFKK3nCFrXXAZZoXY
 M/BGe71VCZyNEiS5GbuLwvr+eNxl39WKKK6bcyT8ilLJpLEOCLJFOtVbQHSBg37hYvdyDjoH
 x9kH5Pi431ivCfWO0E7LaZ7wYg2EEUG
IronPort-HdrOrdr: A9a23:xldJAKmUikwP14sVfeysM6R25r7pDfIg3DAbv31ZSRFFG/Fxl6
 iV8sjzsiWE7wr5OUtQ/exoV5PhfZqxz/JICOoqTNKftWvdyQiVxehZhOOIqVDd8kXFh4hgPM
 xbEpSWZueeMbEDt7eZ3DWF
X-Talos-CUID: =?us-ascii?q?9a23=3AM3Ccf2pOmi+Pv2WrBMH4RcrmUfsISnP7k0n3GEC?=
 =?us-ascii?q?hL39VU4WIRH+Cxbwxxg=3D=3D?=
X-Talos-MUID: 9a23:1FKoywXTlBfyMFLq/ACz1AFhPe5Q2r2JFQcLkYxWnZCjazMlbg==
X-IronPort-AV: E=Sophos;i="6.05,230,1701147600"; 
   d="scan'208";a="128344464"
From: Andrew Cooper <andrew.cooper3@citrix.com>
To: Xen-devel <xen-devel@lists.xenproject.org>
CC: Andrew Cooper <andrew.cooper3@citrix.com>, Tamas K Lengyel
	<tamas@tklengyel.com>, Jan Beulich <JBeulich@suse.com>,
	=?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= <roger.pau@citrix.com>, Wei Liu
	<wl@xen.org>
Subject: [PATCH] x86/hvm: Fix UBSAN failure in do_hvm_op() printk
Date: Tue, 30 Jan 2024 18:37:13 +0000
Message-ID: <20240130183713.24680-1-andrew.cooper3@citrix.com>
X-Mailer: git-send-email 2.30.2
MIME-Version: 1.0
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit

Tamas reported this UBSAN failure from fuzzing:

  (XEN) ================================================================================
  (XEN) UBSAN: Undefined behaviour in common/vsprintf.c:64:19
  (XEN) negation of -9223372036854775808 cannot be represented in type 'long long int':
  (XEN) ----[ Xen-4.19-unstable  x86_64  debug=y ubsan=y  Not tainted ]----
  ...
  (XEN) Xen call trace:
  (XEN)    [<ffff82d040307c1c>] R ubsan.c#ubsan_epilogue+0xa/0xd9
  (XEN)    [<ffff82d04030805d>] F __ubsan_handle_negate_overflow+0x99/0xce
  (XEN)    [<ffff82d04028868f>] F vsprintf.c#number+0x10a/0x93e
  (XEN)    [<ffff82d04028ac74>] F vsnprintf+0x19e2/0x1c56
  (XEN)    [<ffff82d04030a47a>] F console.c#vprintk_common+0x76/0x34d
  (XEN)    [<ffff82d04030a79e>] F printk+0x4d/0x4f
  (XEN)    [<ffff82d04040c42b>] F do_hvm_op+0x288e/0x28f5
  (XEN)    [<ffff82d04040d385>] F hvm_hypercall+0xad2/0x149a
  (XEN)    [<ffff82d0403cd072>] F vmx_vmexit_handler+0x1596/0x279c
  (XEN)    [<ffff82d0403d909b>] F vmx_asm_vmexit_handler+0xdb/0x200

The problem is an unsigned -> signed converstion because of a bad
formatter (%ld trying to format an unsigned long).

We could fix it by swapping to %lu, but this is a useless printk() even in
debug builds, so just drop it completely.

Reported-by: Tamas K Lengyel <tamas@tklengyel.com>
Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
---
CC: Jan Beulich <JBeulich@suse.com>
CC: Roger Pau Monné <roger.pau@citrix.com>
CC: Wei Liu <wl@xen.org>
CC: Tamas K Lengyel <tamas@tklengyel.com>

-Wformat-signedness would catch this, but Xen isn't remotely close to being
able to have this warning enabled.
---
 xen/arch/x86/hvm/hvm.c | 3 ---
 1 file changed, 3 deletions(-)

diff --git a/xen/arch/x86/hvm/hvm.c b/xen/arch/x86/hvm/hvm.c
index e3bd9157d761..e8deeb022216 100644
--- a/xen/arch/x86/hvm/hvm.c
+++ b/xen/arch/x86/hvm/hvm.c
@@ -5147,12 +5147,9 @@ long do_hvm_op(unsigned long op, XEN_GUEST_HANDLE_PARAM(void) arg)
         break;
 
     default:
-    {
-        gdprintk(XENLOG_DEBUG, "Bad HVM op %ld.\n", op);
         rc = -ENOSYS;
         break;
     }
-    }
 
     if ( rc == -ERESTART )
         rc = hypercall_create_continuation(__HYPERVISOR_hvm_op, "lh",

base-commit: cc6ba68edf6dcd18c3865e7d7c0f1ed822796426
-- 
2.30.2



From xen-devel-bounces@lists.xenproject.org Tue Jan 30 19:22:40 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 30 Jan 2024 19:22:40 +0000
Received: from list by lists.xenproject.org with outflank-mailman.673672.1048095 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUtgn-00029Q-9I; Tue, 30 Jan 2024 19:22:33 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 673672.1048095; Tue, 30 Jan 2024 19:22:33 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUtgn-00029J-5m; Tue, 30 Jan 2024 19:22:33 +0000
Received: by outflank-mailman (input) for mailman id 673672;
 Tue, 30 Jan 2024 19:22:31 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=cYm+=JI=amd.com=Stewart.Hildebrand@srs-se1.protection.inumbo.net>)
 id 1rUtgl-00029D-2l
 for xen-devel@lists.xenproject.org; Tue, 30 Jan 2024 19:22:31 +0000
Received: from NAM12-MW2-obe.outbound.protection.outlook.com
 (mail-mw2nam12on20601.outbound.protection.outlook.com
 [2a01:111:f403:200a::601])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id e7cc35f6-bfa4-11ee-8a43-1f161083a0e0;
 Tue, 30 Jan 2024 20:22:29 +0100 (CET)
Received: from SA9PR13CA0053.namprd13.prod.outlook.com (2603:10b6:806:22::28)
 by MW5PR12MB5650.namprd12.prod.outlook.com (2603:10b6:303:19e::12)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7249.22; Tue, 30 Jan
 2024 19:22:25 +0000
Received: from SA2PEPF000015C8.namprd03.prod.outlook.com
 (2603:10b6:806:22:cafe::c4) by SA9PR13CA0053.outlook.office365.com
 (2603:10b6:806:22::28) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7249.23 via Frontend
 Transport; Tue, 30 Jan 2024 19:22:24 +0000
Received: from SATLEXMB03.amd.com (165.204.84.17) by
 SA2PEPF000015C8.mail.protection.outlook.com (10.167.241.198) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.7249.19 via Frontend Transport; Tue, 30 Jan 2024 19:22:24 +0000
Received: from SATLEXMB04.amd.com (10.181.40.145) by SATLEXMB03.amd.com
 (10.181.40.144) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.34; Tue, 30 Jan
 2024 13:22:23 -0600
Received: from [172.23.114.18] (10.180.168.240) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server id 15.1.2507.34 via Frontend
 Transport; Tue, 30 Jan 2024 13:22:22 -0600
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: e7cc35f6-bfa4-11ee-8a43-1f161083a0e0
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=RlqDCtbbMtDYnC3SMvH2xIE0jl20RhGbxSLyTnnateyAbi/yGM/aMlcCGePZWVnjgsEWZERAXFm4ZRTL3Bxr5j+or7ALCmYcGZcWSUWWUY3bA0Ed3hzwH6SrbaQeSFTnVzoh/8aVNHsdVMKK2YjIyFp+mrYrfLZyZ6LQAquoj5LXpN0+5mswdyFHfUYFRnXA9YX4/81tIXP6WGzJJbOHSmxjmhY6wU0jdVKcB1WTpUY0+qqJRfuGVEurBT+Mxi9Ke11hX7U/ZMwdoIAJKGw72toOcy20xrRHblbiUfvn/GFnzi+3k4ZFtiVzyZYeDOBarNKhy3ZXorFKaVOGkYXaTQ==
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=ah8CIUwZJc7goXQMzhYwyrjTJbEHcnfYTGCSG2LcS4w=;
 b=AyyyRTriTHVIECumLN6PubOI9whhMJ5TA2mQcSJzBP44p1dftcra0HZ+yOx7+PIOTh3bWrm2Um3bAWGFROkCI/mQR/Qt+S5j4rMgxPic3YLJQuQbNPf6D3AXKsR1zJlHGsxDZYgMN8DzU8vWTjXQ/eUpUvYSPvzxzTJRpGVHP5ZbmI9WOi3iND0QI1dyexw246ossvVdlLadZdVuEQBUORk6Dk8RPTJ7k51bAqfo6nbDwtiX4hMlESIwxYscvuIeYoxkRD9xSxa5+8BaL/iK6jjSNJUP5t+D87cTNc6mRp6Qh8P+2GlmGpPA6MauzsmHWf5GCO9EIIE4BmZ7CiHKKA==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=lists.xenproject.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)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=ah8CIUwZJc7goXQMzhYwyrjTJbEHcnfYTGCSG2LcS4w=;
 b=JnsaCXHGELEPejNqdgqD7IvwssD18U9rhRFmshtyOLNmMagUzkFgAJgBOzNYtRXCwaPDIFWy7PiN0IsKFx7b3wuWv55+D3xW+BvrA9y5mL06LdiPxQlPMqryv5k0xbytu+YhXR17m+tqYkoCdCCCGYaOWwUXYSEh4BxVx4fd8bg=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=SATLEXMB03.amd.com; pr=C
Message-ID: <7b80f55b-2eef-4186-a86b-09d715bdc79d@amd.com>
Date: Tue, 30 Jan 2024 14:22:22 -0500
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v12 03/15] vpci: add hooks for PCI device assign/de-assign
Content-Language: en-US
To: <xen-devel@lists.xenproject.org>
CC: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>, Jan Beulich
	<jbeulich@suse.com>, Paul Durrant <paul@xen.org>,
	=?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>, Volodymyr Babchuk
	<volodymyr_babchuk@epam.com>
References: <20240109215145.430207-1-stewart.hildebrand@amd.com>
 <20240109215145.430207-4-stewart.hildebrand@amd.com>
From: Stewart Hildebrand <stewart.hildebrand@amd.com>
In-Reply-To: <20240109215145.430207-4-stewart.hildebrand@amd.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 7bit
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: SA2PEPF000015C8:EE_|MW5PR12MB5650:EE_
X-MS-Office365-Filtering-Correlation-Id: 0da89c23-d07d-4239-ab4e-08dc21c8c9e8
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam: BCL:0;
X-Microsoft-Antispam-Message-Info:
	nq12/5fyo+eGFEtkuy/Wx21UEEEhLc+Rvhs92+8EEk+CGjfiN9hwsLpUhkqs+70l5W4KF70XytFTSOYy7XHJ2Ud909KQPE4frpllvYYWWBv0MYIIyYaU90KPhbYQGnPsYBdrpvNsI5ktLk9695/12ePqNsqVuuAuJF/lyV2IX8ZE7cWhYkURQMunu6HlJ8FyCEtLHow1U9bGVNqM77C11lhRUgZ+DlumSX/ZPPlP5YMKmARHtymnfNVvsjEGrxLqNrFyNA2qMKh6E9xQTln5YVZoQ5nqhTAZt7yDOl6nwzxHrwb06OSfOMDl/ThwQI/FkEvOL0SEip2xySQMU6GocswnTrmd/piT4SwSdCb8RU9ZS14YvuRRaAs1Bvn6q7rg1OznfWVBgA+7KIyBIk+4A/pNhuFp1B8MrL6/Pa0FEUZgn3bu3W78TbFQ8qN5yjzDsJauYp+ms2TlwCt1t+22ZWoMTTPupXXxBEIJqfEVe/HFm9s/uwioaSIUWW1xdTiTiRF9NrXjGWo3aCkRQlGaynol7AZGoQuHIyT5imOvUSWYjjwrKrlzWgONe/bckzswekga/yYvNM42C3PLwuh9pjFvenuM5HDX1YRVW4pRfls7ld3VOq11CFifhM1fxGyKiYacH9niOC6m6YTRWmaLjrxEW4cnqYKiQ85UTGsvjuw3TVRcl4LspEm7YLOd8JGNbxv+hpH3nAQ4EBgN2jEoc2ANBb8jBWSbw/9vqjnMSrOgUktxsbEHD/5d26aexrD2fBCn0pq6y6hoaI0qMP31xEqQm0p2Z17UWccvi2nMNSCn7mmfEiZdtOoFoVD1AvWdSN1dm+vGo90dAisB08tnguug7WrSaKFQiQzZNRsCs9U=
X-Forefront-Antispam-Report:
	CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB03.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230031)(4636009)(136003)(376002)(396003)(39860400002)(346002)(230173577357003)(230273577357003)(230922051799003)(82310400011)(451199024)(1800799012)(64100799003)(186009)(40470700004)(46966006)(36840700001)(5660300002)(4326008)(8676002)(44832011)(2906002)(8936002)(31696002)(70206006)(70586007)(47076005)(86362001)(316002)(54906003)(16576012)(36756003)(36860700001)(82740400003)(356005)(81166007)(6916009)(53546011)(478600001)(83380400001)(26005)(426003)(2616005)(336012)(41300700001)(31686004)(40460700003)(40480700001)(43740500002)(36900700001);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Jan 2024 19:22:24.3162
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 0da89c23-d07d-4239-ab4e-08dc21c8c9e8
X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB03.amd.com]
X-MS-Exchange-CrossTenant-AuthSource:
	SA2PEPF000015C8.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW5PR12MB5650

On 1/9/24 16:51, Stewart Hildebrand wrote:
> diff --git a/xen/drivers/passthrough/pci.c b/xen/drivers/passthrough/pci.c
> index 3a973324bca1..a902de6a8693 100644
> --- a/xen/drivers/passthrough/pci.c
> +++ b/xen/drivers/passthrough/pci.c
> @@ -1476,6 +1485,10 @@ static int assign_device(struct domain *d, u16 seg, u8 bus, u8 devfn, u32 flag)
>      if ( pdev->broken && d != hardware_domain && d != dom_io )
>          goto done;
>  
> +    write_lock(&pdev->domain->pci_lock);
> +    vpci_deassign_device(pdev);
> +    write_unlock(&pdev->domain->pci_lock);
> +
>      rc = pdev_msix_assign(d, pdev);
>      if ( rc )
>          goto done;
> @@ -1502,6 +1515,10 @@ static int assign_device(struct domain *d, u16 seg, u8 bus, u8 devfn, u32 flag)
>                          pci_to_dev(pdev), flag);
>      }
>  

After rebasing this on the following commit:

  cb4ecb3cc17b ("pci: fail device assignment if phantom functions cannot be assigned")

I'll add this here:

    if ( rc )
        goto done;

I'll plan on retaining Roger's R-b tag and and Jan's A-b tags for v13.

> +    write_lock(&d->pci_lock);
> +    rc = vpci_assign_device(pdev);
> +    write_unlock(&d->pci_lock);
> +
>   done:
>      if ( rc )
>          printk(XENLOG_G_WARNING "%pd: assign (%pp) failed (%d)\n",


From xen-devel-bounces@lists.xenproject.org Tue Jan 30 19:51:56 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 30 Jan 2024 19:51:56 +0000
Received: from list by lists.xenproject.org with outflank-mailman.673676.1048106 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUu92-0000GR-Jx; Tue, 30 Jan 2024 19:51:44 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 673676.1048106; Tue, 30 Jan 2024 19:51:44 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUu92-0000GK-Eo; Tue, 30 Jan 2024 19:51:44 +0000
Received: by outflank-mailman (input) for mailman id 673676;
 Tue, 30 Jan 2024 19:51:43 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rUu91-0000CX-R6; Tue, 30 Jan 2024 19:51:43 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rUu91-00075Q-Mq; Tue, 30 Jan 2024 19:51:43 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rUu91-0000ne-8k; Tue, 30 Jan 2024 19:51:43 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rUu91-0001Jb-8G; Tue, 30 Jan 2024 19:51:43 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=BV5qSGdWzWtyA/wGboNcsZUgHW3dZbovITfTNvBf0ec=; b=qr5kE2wTN9XiLKhBvwGFF4IOJd
	4AmR2AovnrqXXmp5oZN2WcdYWNheWHuHgGrAO7cOBHFANl5xJrs+oYt/AehULhy3Enw9CfQ+lVcBB
	1VTlTY9+vYIVEn1O/EVX93szvB+mLwgwoI20Pd42K6pdyhxYb61aWGvwPxvHCXVFX2kE=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184526-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [libvirt test] 184526: tolerable all pass - PUSHED
X-Osstest-Failures:
    libvirt:test-armhf-armhf-libvirt:saverestore-support-check:fail:nonblocking
    libvirt:test-armhf-armhf-libvirt-qcow2:saverestore-support-check:fail:nonblocking
    libvirt:test-armhf-armhf-libvirt-raw:saverestore-support-check:fail:nonblocking
    libvirt:test-amd64-amd64-libvirt-xsm:migrate-support-check:fail:nonblocking
    libvirt:test-amd64-i386-libvirt-xsm:migrate-support-check:fail:nonblocking
    libvirt:test-amd64-i386-libvirt:migrate-support-check:fail:nonblocking
    libvirt:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    libvirt:test-arm64-arm64-libvirt-xsm:migrate-support-check:fail:nonblocking
    libvirt:test-arm64-arm64-libvirt-xsm:saverestore-support-check:fail:nonblocking
    libvirt:test-arm64-arm64-libvirt:migrate-support-check:fail:nonblocking
    libvirt:test-arm64-arm64-libvirt:saverestore-support-check:fail:nonblocking
    libvirt:test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    libvirt:test-armhf-armhf-libvirt:migrate-support-check:fail:nonblocking
    libvirt:test-arm64-arm64-libvirt-qcow2:migrate-support-check:fail:nonblocking
    libvirt:test-arm64-arm64-libvirt-qcow2:saverestore-support-check:fail:nonblocking
    libvirt:test-amd64-amd64-libvirt-vhd:migrate-support-check:fail:nonblocking
    libvirt:test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    libvirt:test-amd64-i386-libvirt-raw:migrate-support-check:fail:nonblocking
    libvirt:test-arm64-arm64-libvirt-raw:migrate-support-check:fail:nonblocking
    libvirt:test-arm64-arm64-libvirt-raw:saverestore-support-check:fail:nonblocking
    libvirt:test-armhf-armhf-libvirt-qcow2:migrate-support-check:fail:nonblocking
    libvirt:test-armhf-armhf-libvirt-raw:migrate-support-check:fail:nonblocking
X-Osstest-Versions-This:
    libvirt=3a3f73ea9f1925ca5e256fa54c5aa451ddeaa19e
X-Osstest-Versions-That:
    libvirt=7d9fe3a637795ef23d6c7152b57cd64f9f2894c7
From: osstest service owner <osstest-admin@xenproject.org>
Date: Tue, 30 Jan 2024 19:51:43 +0000

flight 184526 libvirt real [real]
http://logs.test-lab.xenproject.org/osstest/logs/184526/

Failures :-/ but no regressions.

Tests which did not succeed, but are not blocking:
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 184488
 test-armhf-armhf-libvirt-qcow2 15 saverestore-support-check   fail like 184488
 test-armhf-armhf-libvirt-raw 15 saverestore-support-check    fail  like 184488
 test-amd64-amd64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-amd64-i386-libvirt-xsm  15 migrate-support-check        fail   never pass
 test-amd64-i386-libvirt      15 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt     15 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-xsm 16 saverestore-support-check    fail   never pass
 test-arm64-arm64-libvirt     15 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt     16 saverestore-support-check    fail   never pass
 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-armhf-armhf-libvirt     15 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-qcow2 14 migrate-support-check        fail never pass
 test-arm64-arm64-libvirt-qcow2 15 saverestore-support-check    fail never pass
 test-amd64-amd64-libvirt-vhd 14 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-amd64-i386-libvirt-raw  14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 15 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-qcow2 14 migrate-support-check        fail never pass
 test-armhf-armhf-libvirt-raw 14 migrate-support-check        fail   never pass

version targeted for testing:
 libvirt              3a3f73ea9f1925ca5e256fa54c5aa451ddeaa19e
baseline version:
 libvirt              7d9fe3a637795ef23d6c7152b57cd64f9f2894c7

Last test of basis   184488  2024-01-27 04:20:30 Z    3 days
Testing same since   184526  2024-01-30 04:18:50 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Michal Privoznik <mprivozn@redhat.com>

jobs:
 build-amd64-xsm                                              pass    
 build-arm64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64                                                  pass    
 build-arm64                                                  pass    
 build-armhf                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-arm64-libvirt                                          pass    
 build-armhf-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-pvops                                            pass    
 build-arm64-pvops                                            pass    
 build-armhf-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm           pass    
 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm            pass    
 test-amd64-amd64-libvirt-xsm                                 pass    
 test-arm64-arm64-libvirt-xsm                                 pass    
 test-amd64-i386-libvirt-xsm                                  pass    
 test-amd64-amd64-libvirt                                     pass    
 test-arm64-arm64-libvirt                                     pass    
 test-armhf-armhf-libvirt                                     pass    
 test-amd64-i386-libvirt                                      pass    
 test-amd64-amd64-libvirt-pair                                pass    
 test-amd64-i386-libvirt-pair                                 pass    
 test-arm64-arm64-libvirt-qcow2                               pass    
 test-armhf-armhf-libvirt-qcow2                               pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-armhf-armhf-libvirt-raw                                 pass    
 test-amd64-i386-libvirt-raw                                  pass    
 test-amd64-amd64-libvirt-vhd                                 pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Pushing revision :

To xenbits.xen.org:/home/xen/git/libvirt.git
   7d9fe3a637..3a3f73ea9f  3a3f73ea9f1925ca5e256fa54c5aa451ddeaa19e -> xen-tested-master


From xen-devel-bounces@lists.xenproject.org Tue Jan 30 20:44:22 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 30 Jan 2024 20:44:22 +0000
Received: from list by lists.xenproject.org with outflank-mailman.673683.1048115 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUuxs-00029u-Aq; Tue, 30 Jan 2024 20:44:16 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 673683.1048115; Tue, 30 Jan 2024 20:44:16 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUuxs-00029n-88; Tue, 30 Jan 2024 20:44:16 +0000
Received: by outflank-mailman (input) for mailman id 673683;
 Tue, 30 Jan 2024 20:44:15 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=UYGG=JI=kernel.org=helgaas@srs-se1.protection.inumbo.net>)
 id 1rUuxr-00029f-Ex
 for xen-devel@lists.xenproject.org; Tue, 30 Jan 2024 20:44:15 +0000
Received: from sin.source.kernel.org (sin.source.kernel.org [145.40.73.55])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 5164ea99-bfb0-11ee-98f5-efadbce2ee36;
 Tue, 30 Jan 2024 21:44:11 +0100 (CET)
Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58])
 by sin.source.kernel.org (Postfix) with ESMTP id B8CB5CE1B44;
 Tue, 30 Jan 2024 20:44:05 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 94EBFC433F1;
 Tue, 30 Jan 2024 20:44:04 +0000 (UTC)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 5164ea99-bfb0-11ee-98f5-efadbce2ee36
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
	s=k20201202; t=1706647444;
	bh=bPw6ruebyasCXorT1LdxWx1GajiUvbLKrTDw9DFK5FA=;
	h=Date:From:To:Cc:Subject:In-Reply-To:From;
	b=r3Am/ZUFJ5LvciFl7LpCgQQZ28jpBwPyRmGVj9C9/vS9yk40Aa7U+KC6hq/oO2B7n
	 wDQJ8uK7Ltr51lQF8BQiAA8Skty5QBeFsH0/3E1VTaUey75oUEjjsZccrwn+o0MZeE
	 Miv8UzxNckXMSMLvDHFGUgNXH0sZypZ7xRpaMpeTurT916gRzkt54hEEq2RxhsCyxH
	 s9nK0ukGPiRl9D3B/hcIKbaI2t/XGCd1zfkzJo3hNN89BP3waa48nxA5jOnij4C3r2
	 kY5KfQ5U4IsSneu4O25TjKls3lCrZLcTzm7OdlZZdjiu5xgCsOncdeDuXSXJQsxfgP
	 3wdiZdO2KG//w==
Date: Tue, 30 Jan 2024 14:44:03 -0600
From: Bjorn Helgaas <helgaas@kernel.org>
To: Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
Cc: "Chen, Jiqian" <Jiqian.Chen@amd.com>,
	"Rafael J . Wysocki" <rafael@kernel.org>,
	Len Brown <lenb@kernel.org>, Juergen Gross <jgross@suse.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>,
	Boris Ostrovsky <boris.ostrovsky@oracle.com>,
	Bjorn Helgaas <bhelgaas@google.com>,
	"xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>,
	"linux-pci@vger.kernel.org" <linux-pci@vger.kernel.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"linux-acpi@vger.kernel.org" <linux-acpi@vger.kernel.org>,
	"Hildebrand, Stewart" <Stewart.Hildebrand@amd.com>,
	"Huang, Ray" <Ray.Huang@amd.com>,
	"Ragiadakou, Xenia" <Xenia.Ragiadakou@amd.com>
Subject: Re: [RFC KERNEL PATCH v4 3/3] PCI/sysfs: Add gsi sysfs for pci_dev
Message-ID: <20240130204403.GA562912@bhelgaas>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <Zbi8WJPEUSMgjuVY@macbook>

On Tue, Jan 30, 2024 at 10:07:36AM +0100, Roger Pau Monné wrote:
> On Mon, Jan 29, 2024 at 04:01:13PM -0600, Bjorn Helgaas wrote:
> > On Thu, Jan 25, 2024 at 07:17:24AM +0000, Chen, Jiqian wrote:
> > > On 2024/1/24 00:02, Bjorn Helgaas wrote:
> > > > On Tue, Jan 23, 2024 at 10:13:52AM +0000, Chen, Jiqian wrote:
> > > >> On 2024/1/23 07:37, Bjorn Helgaas wrote:
> > > >>> On Fri, Jan 05, 2024 at 02:22:17PM +0800, Jiqian Chen wrote:
> > > >>>> There is a need for some scenarios to use gsi sysfs.
> > > >>>> For example, when xen passthrough a device to dumU, it will
> > > >>>> use gsi to map pirq, but currently userspace can't get gsi
> > > >>>> number.
> > > >>>> So, add gsi sysfs for that and for other potential scenarios.
> > > >> ...
> > > > 
> > > >>> I don't know enough about Xen to know why it needs the GSI in
> > > >>> userspace.  Is this passthrough brand new functionality that can't be
> > > >>> done today because we don't expose the GSI yet?
> > 
> > I assume this must be new functionality, i.e., this kind of
> > passthrough does not work today, right?
> > 
> > > >> has ACPI support and is responsible for detecting and controlling
> > > >> the hardware, also it performs privileged operations such as the
> > > >> creation of normal (unprivileged) domains DomUs. When we give to a
> > > >> DomU direct access to a device, we need also to route the physical
> > > >> interrupts to the DomU. In order to do so Xen needs to setup and map
> > > >> the interrupts appropriately.
> > > > 
> > > > What kernel interfaces are used for this setup and mapping?
> > >
> > > For passthrough devices, the setup and mapping of routing physical
> > > interrupts to DomU are done on Xen hypervisor side, hypervisor only
> > > need userspace to provide the GSI info, see Xen code:
> > > xc_physdev_map_pirq require GSI and then will call hypercall to pass
> > > GSI into hypervisor and then hypervisor will do the mapping and
> > > routing, kernel doesn't do the setup and mapping.
> > 
> > So we have to expose the GSI to userspace not because userspace itself
> > uses it, but so userspace can turn around and pass it back into the
> > kernel?
> 
> No, the point is to pass it back to Xen, which doesn't know the
> mapping between GSIs and PCI devices because it can't execute the ACPI
> AML resource methods that provide such information.
> 
> The (Linux) kernel is just a proxy that forwards the hypercalls from
> user-space tools into Xen.

But I guess Xen knows how to interpret a GSI even though it doesn't
have access to AML?

> > It seems like it would be better for userspace to pass an identifier
> > of the PCI device itself back into the hypervisor.  Then the interface
> > could be generic and potentially work even on non-ACPI systems where
> > the GSI concept doesn't apply.
> 
> We would still need a way to pass the GSI to PCI device relation to
> the hypervisor, and then cache such data in the hypervisor.
> 
> I don't think we have any preference of where such information should
> be exposed, but given GSIs are an ACPI concept not specific to Xen
> they should be exposed by a non-Xen specific interface.

AFAIK Linux doesn't expose GSIs directly to userspace yet.  The GSI
concept relies on ACPI MADT, _MAT, _PRT, etc.  A GSI is associated
with some device (PCI in this case) and some interrupt controller
entry.  I don't understand how a GSI value is useful without knowing
something about that framework in which GSIs exist.

Obviously I know less than nothing about Xen, so I apologize for
asking all these stupid questions, but it just doesn't all make sense
to me yet.

Bjorn


From xen-devel-bounces@lists.xenproject.org Tue Jan 30 21:27:30 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 30 Jan 2024 21:27:30 +0000
Received: from list by lists.xenproject.org with outflank-mailman.673690.1048125 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUvdT-0001ep-Ji; Tue, 30 Jan 2024 21:27:15 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 673690.1048125; Tue, 30 Jan 2024 21:27:15 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUvdT-0001ei-Gd; Tue, 30 Jan 2024 21:27:15 +0000
Received: by outflank-mailman (input) for mailman id 673690;
 Tue, 30 Jan 2024 21:27:14 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=Trk4=JI=citrix.com=prvs=75271d196=Andrew.Cooper3@srs-se1.protection.inumbo.net>)
 id 1rUvdS-0001ea-2p
 for xen-devel@lists.xenproject.org; Tue, 30 Jan 2024 21:27:14 +0000
Received: from esa1.hc3370-68.iphmx.com (esa1.hc3370-68.iphmx.com
 [216.71.145.142]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 52f8477b-bfb6-11ee-8a43-1f161083a0e0;
 Tue, 30 Jan 2024 22:27:11 +0100 (CET)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 52f8477b-bfb6-11ee-8a43-1f161083a0e0
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple;
  d=citrix.com; s=securemail; t=1706650031;
  h=from:to:cc:subject:date:message-id:mime-version:
   content-transfer-encoding;
  bh=8y0bRSy0+N/o2vbhG8udrGq58MblxfpHPx6TknWZBpE=;
  b=dJHfP8GlZA6/DnU+qfXceJZ1gN+AsDliVziE9gOWzyWHwUT7tST1EyDg
   NYIv+qcEH5x/p5LhlLoMhbLILqXpzYl3zjWX4KOKGZy6nlj0zaYmIhFOH
   fBJK41nt9pQsnZkgDrfJyxJc6GSkHsTGPynMpuq4q9dgkOkFtxbugXGTI
   Q=;
X-CSE-ConnectionGUID: KQ4cbhfqRrSN6M/d6A1Y/Q==
X-CSE-MsgGUID: apOJKLZQTQSLxtle0/aegA==
Authentication-Results: esa1.hc3370-68.iphmx.com; dkim=none (message not signed) header.i=none
X-SBRS: 4.0
X-MesageID: 130226928
X-Ironport-Server: esa1.hc3370-68.iphmx.com
X-Remote-IP: 162.221.159.70
X-Policy: $RELAYED
X-ThreatScanner-Verdict: Negative
IronPort-Data: A9a23:dg8OEatce/cKYMngfwnTtSUcYefnVC1eMUV32f8akzHdYApBsoF/q
 tZmKWrVaauJZTajfth+bYu/pEkPsJ7cytE3HFE4r31mHy4b+JbJXdiXEBz9bniYRiHhoOCLz
 O1FM4Wdc5pkJpP4jk3wWlQ0hSAkjclkfpKlVaicfHg3HFc4IMsYoUoLs/YjhYJ1isSODQqIu
 Nfjy+XSI1bg0DNvWo4uw/vrRChH4rKq5Vv0gnRkPaoX5AaFzyFPZH4iDfrZw0XQE9E88tGSH
 44v/JnhlkvF8hEkDM+Sk7qTWiXmlZaLYGBiIlIPM0STqkAqSh4ai87XB9JFAatjsB2bnsgZ9
 Tl4ncfYpTHFnEH7sL91vxFwS0mSNEDdkVPNCSDXXce7lyUqf5ZwqhnH4Y5f0YAwo45K7W9yG
 fMwCwlRZRqDifuM2omdFMwripoKdfisBdZK0p1g5Wmx4fcORJnCR+PB5MNC3Sd2jcdLdRrcT
 5NHM3w1Nk2GOkAefAhPYH49tL7Aan3XWjtUsl+K44Ew5HDe1ldZ27nxKtvFPNeNQK25m27B/
 TqcpTqoWEFy2Nq3wCKi0FGItNbzpBjfSJ4WGeX///NlqQjGroAUIEJPDgbqyRWjsWauVtQaJ
 0EK9y4Gqakp6FftXtT7Rwe/onOPolgbQdU4O/Ez7QiW4rbX5wufCXkJSnhKb9lOnO0cSCEu1
 1SJt8j0HjEpu7qQIVqG7audpz62PSkTLEcBaDUCQA9D5MPsyKksijrfQ9AlF7S65vX3BDXxz
 jaivCU4wbIJgqY2O76TpA6dxWj2/96QE19zuV2/sn+ZAh1RR7f5bIao50Hh981mcqPeQgeo5
 UlDop3LhAwRNq1hhBBhUc1UQ+n3ua/UYWKA6WODCaXN4NhExpJCQWyzyGsnTKuRGpxYEQIFm
 WeK0e+r2LddPWGxcYh8aJ+rBsIhwMDITIu9CK6INoIVPMQpKmdrGR2CgmbJgQjQfLUEy/lja
 f93j+7yZZrlNUiX5GXvHLpMuVPa7is/2XnSVfjG8vhT6pLHPCT9Ye5cYDOzghURsPvsTPP9r
 4wOaKNnCnx3DIXDX8Ug2dVOcQhVfCJnXMCeRg4+XrfrHzeK0VoJU5f5qY7NsaQ890iJvo8kJ
 k2AZ3I=
IronPort-HdrOrdr: A9a23:3zu1oazKIrJCmTgXm5Q8KrPwIL1zdoMgy1knxilNoRw8SKKlfq
 eV7ZAmPH7P+VAssR4b+exoVJPtfZq+z+8R3WByB8bAYOCOggLBR+sO0WKL+UyGJ8SUzI9gPM
 lbHJSWcOeAb2RHsQ==
X-Talos-CUID: 9a23:myqF2G4MyPKkP7wWutss13dIEcolfGTn1kz2fWr/BThAEYzScArF
X-Talos-MUID: =?us-ascii?q?9a23=3Aob/xeAzwSNpeV0KCbHqk2wovw/qaqK22L2Iutac?=
 =?us-ascii?q?/h/C/ETxsPzrFyz26TaZyfw=3D=3D?=
X-IronPort-AV: E=Sophos;i="6.05,230,1701147600"; 
   d="scan'208";a="130226928"
From: Andrew Cooper <andrew.cooper3@citrix.com>
To: Xen-devel <xen-devel@lists.xenproject.org>
CC: Andrew Cooper <andrew.cooper3@citrix.com>, Tamas K Lengyel
	<tamas@tklengyel.com>, George Dunlap <George.Dunlap@citrix.com>, Jan Beulich
	<JBeulich@suse.com>, Stefano Stabellini <sstabellini@kernel.org>, Wei Liu
	<wl@xen.org>, Julien Grall <julien@xen.org>
Subject: [PATCH] xen/sched: Fix UB shift in compat_set_timer_op()
Date: Tue, 30 Jan 2024 21:27:05 +0000
Message-ID: <20240130212706.74303-1-andrew.cooper3@citrix.com>
X-Mailer: git-send-email 2.30.2
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain

Tamas reported this UBSAN failure from fuzzing:

  (XEN) ================================================================================
  (XEN) UBSAN: Undefined behaviour in common/sched/compat.c:48:37
  (XEN) left shift of negative value -2147425536
  (XEN) ----[ Xen-4.19-unstable  x86_64  debug=y ubsan=y  Not tainted ]----
  ...
  (XEN) Xen call trace:
  (XEN)    [<ffff82d040307c1c>] R ubsan.c#ubsan_epilogue+0xa/0xd9
  (XEN)    [<ffff82d040308afb>] F __ubsan_handle_shift_out_of_bounds+0x11a/0x1c5
  (XEN)    [<ffff82d040307758>] F compat_set_timer_op+0x41/0x43
  (XEN)    [<ffff82d04040e4cc>] F hvm_do_multicall_call+0x77f/0xa75
  (XEN)    [<ffff82d040519462>] F arch_do_multicall_call+0xec/0xf1
  (XEN)    [<ffff82d040261567>] F do_multicall+0x1dc/0xde3
  (XEN)    [<ffff82d04040d2b3>] F hvm_hypercall+0xa00/0x149a
  (XEN)    [<ffff82d0403cd072>] F vmx_vmexit_handler+0x1596/0x279c
  (XEN)    [<ffff82d0403d909b>] F vmx_asm_vmexit_handler+0xdb/0x200

Left-shifting any negative value is strictly undefined behaviour in C, and
the two parameters here come straight from the guest.

The fuzzer happened to choose lo 0xf, hi 0x8000e300.

Switch everything to be unsigned values, making the shift well defined.

As GCC documents:

  As an extension to the C language, GCC does not use the latitude given in
  C99 and C11 only to treat certain aspects of signed '<<' as undefined.
  However, -fsanitize=shift (and -fsanitize=undefined) will diagnose such
  cases.

this was deemed not to need an XSA.

Fixes: 2942f45e09fb ("Enable compatibility mode operation for HYPERVISOR_sched_op and HYPERVISOR_set_timer_op.")
Reported-by: Tamas K Lengyel <tamas@tklengyel.com>
Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
---
CC: George Dunlap <George.Dunlap@citrix.com>
CC: Jan Beulich <JBeulich@suse.com>
CC: Stefano Stabellini <sstabellini@kernel.org>
CC: Wei Liu <wl@xen.org>
CC: Julien Grall <julien@xen.org>
---
 xen/common/sched/compat.c    | 4 ++--
 xen/include/hypercall-defs.c | 2 +-
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/xen/common/sched/compat.c b/xen/common/sched/compat.c
index d718e450d40b..dd97593630ee 100644
--- a/xen/common/sched/compat.c
+++ b/xen/common/sched/compat.c
@@ -43,9 +43,9 @@ static int compat_poll(struct compat_sched_poll *compat)
 
 #include "core.c"
 
-int compat_set_timer_op(uint32_t lo, int32_t hi)
+int compat_set_timer_op(uint32_t lo, uint32_t hi)
 {
-    return do_set_timer_op(((s64)hi << 32) | lo);
+    return do_set_timer_op(((uint64_t)hi << 32) | lo);
 }
 
 #endif /* __COMMON_SCHED_COMPAT_C__ */
diff --git a/xen/include/hypercall-defs.c b/xen/include/hypercall-defs.c
index 6d361ddfce1b..47c093acc84d 100644
--- a/xen/include/hypercall-defs.c
+++ b/xen/include/hypercall-defs.c
@@ -134,7 +134,7 @@ xenoprof_op(int op, void *arg)
 
 #ifdef CONFIG_COMPAT
 prefix: compat
-set_timer_op(uint32_t lo, int32_t hi)
+set_timer_op(uint32_t lo, uint32_t hi)
 multicall(multicall_entry_compat_t *call_list, uint32_t nr_calls)
 memory_op(unsigned int cmd, void *arg)
 #ifdef CONFIG_IOREQ_SERVER

base-commit: cc6ba68edf6dcd18c3865e7d7c0f1ed822796426
prerequisite-patch-id: de9234b4d0488be5b3be5e2ec23e85789086debc
-- 
2.30.2



From xen-devel-bounces@lists.xenproject.org Tue Jan 30 22:18:24 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 30 Jan 2024 22:18:24 +0000
Received: from list by lists.xenproject.org with outflank-mailman.673696.1048134 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUwQs-0003Lo-8n; Tue, 30 Jan 2024 22:18:18 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 673696.1048134; Tue, 30 Jan 2024 22:18:18 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUwQs-0003Lh-6F; Tue, 30 Jan 2024 22:18:18 +0000
Received: by outflank-mailman (input) for mailman id 673696;
 Tue, 30 Jan 2024 22:18:17 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=Trk4=JI=citrix.com=prvs=75271d196=Andrew.Cooper3@srs-se1.protection.inumbo.net>)
 id 1rUwQq-0003Lb-Uc
 for xen-devel@lists.xenproject.org; Tue, 30 Jan 2024 22:18:16 +0000
Received: from esa1.hc3370-68.iphmx.com (esa1.hc3370-68.iphmx.com
 [216.71.145.142]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 74b0984a-bfbd-11ee-98f5-efadbce2ee36;
 Tue, 30 Jan 2024 23:18:13 +0100 (CET)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 74b0984a-bfbd-11ee-98f5-efadbce2ee36
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple;
  d=citrix.com; s=securemail; t=1706653093;
  h=from:to:cc:subject:date:message-id:mime-version:
   content-transfer-encoding;
  bh=b6JzBp0ijsWohe5bXoiNSSWryp89VhusQYLaQCrfiZM=;
  b=RONGl+RZ17p9SRdujxRUtFtkvGRPsYwZBdI2yfcEKzMqeYnK4YhlcL2f
   P+n6UIRxL59EgD8KEvVG82l8qDp5m3B97fVVLS2VR/4v2WhRfHjUsQHDt
   ELSJQCB+fDzkGrmsgncJ1gVbQeFKMYvZVQXuFZaZ6UV42YSOgS9rBhhrG
   s=;
X-CSE-ConnectionGUID: T8jdLx1VTmCye2qZV38ruw==
X-CSE-MsgGUID: /AjM7Ju+SJeLhzy1CVBo5w==
Authentication-Results: esa1.hc3370-68.iphmx.com; dkim=none (message not signed) header.i=none
X-SBRS: 4.0
X-MesageID: 130227922
X-Ironport-Server: esa1.hc3370-68.iphmx.com
X-Remote-IP: 162.221.159.70
X-Policy: $RELAYED
X-ThreatScanner-Verdict: Negative
IronPort-Data: A9a23:0/LZ/6rElsCd8ypcHu5EfJ6Y3x5eBmJ0ZRIvgKrLsJaIsI4StFCzt
 garIBnTaf+LZ2PzKotxO4TiphkCusDVmNZiSAZqpXw0RiIQpZuZCYyVIHmrMnLJJKUvbq7FA
 +Y2MYCccZ9uHhcwgj/3b9ANeFEljfngqoLUUbOCYmYpA1Y8FE/NsDo788YhmIlknNOlNA2Ev
 NL2sqX3NUSsnjV5KQr40YrawP9UlKq04G5wUmAWP6gR4AeHzCFNVvrzGInqR5fGatgMdgKFb
 76rIIGRpgvx4xorA9W5pbf3GmVirmn6ZFXmZtJ+AsBOszAazsAA+v9T2Mk0MC+7vw6hjdFpo
 OihgLTrIesf0g8gr8xGO/VQO3kW0aSrY9YrK1Dn2SCY5xWun3cBX5yCpaz5VGEV0r8fPI1Ay
 RAXAAxdbBynl7uI/LeQW+Q2n/Ydd5nxIZxK7xmMzRmBZRonaZXKQqGM7t5ExjYgwMtJGJ4yZ
 eJAN2ApNk6ZJUQSaxFIUPrSn8/x7pX7WxRepEiYuuwc5G/LwRYq+LPsLMDUapqBQsA9ckOw/
 zmepT6mU0tAXDCZ4X2s8FfzpPKMpgH2fIIABeSTyNRt3ULGkwT/DzVJDADm8JFVkHWWS99Zb
 kAZ5Ccqhawz71CwCMnwWQWip3yJtQJaXMBfe8UYwgyQzqvf4y6CG3MJCDVGbbQOr9QqTDYn0
 luImdLBBjF1trCRD3WH+d+8sjeaKSUTa2gYakcsTxYB4tTliJE+iFTIVNkLLUKupoSrQ3eqm
 WnM9XVvwepL5SIW60ml1WyXgT6ItsH3cgse9wiNR1CbtVNjeZHwMuRE9mPnAeZ8wJexFwbZ4
 iZdypnBsIgz4YexeDthqdjh/Y1FBN7faVUweXY1Q/EcG82FohZPh7x47jBkP1tOOc0ZYzLva
 0K7kVoOvMENYCPyNvErO9zZ5yEWIU/ITIqNaxwpRoAWPsgZmPGvokmCmnJ8L0iyyRNxwMnTy
 L+QcNq2DGZyNJmLOAGeHr9HuZdyn3BW+I8mbcyjp/hR+ebENSH9pHZsGAfmU93VG4vf/VmNr
 IcFa5Lao/idOcWnChTqHUcoBQhiBRAG6Vre8qS7qsbrztJaJVwc
IronPort-HdrOrdr: A9a23:afRh/a90nIPQwn/6MhZuk+DUI+orL9Y04lQ7vn2YSXRuHPBw8P
 re+MjztCWE7gr5N0tBpTntAsW9qBDnhPtICOsqTNSftWDd0QPCRuxfBOPZslrd8kbFl9K1u5
 0OT0EHMqyTMWRH
X-Talos-CUID: 9a23:9eiTnmz9CcaljFKJL2BEBgUoSsIpVm2E8kvVCF61U39bdubFU0KPrfY=
X-Talos-MUID: 9a23:/3tFagvJV7+vaEX8y82nwxhgEZhK/ueVKk0pkYcX4uK6HystJGLI
X-IronPort-AV: E=Sophos;i="6.05,230,1701147600"; 
   d="scan'208";a="130227922"
From: Andrew Cooper <andrew.cooper3@citrix.com>
To: Xen-devel <xen-devel@lists.xenproject.org>
CC: Andrew Cooper <andrew.cooper3@citrix.com>, George Dunlap
	<George.Dunlap@citrix.com>, Jan Beulich <JBeulich@suse.com>, "Stefano
 Stabellini" <sstabellini@kernel.org>, Wei Liu <wl@xen.org>, Julien Grall
	<julien@xen.org>
Subject: [PATCH] xen: Drop superfluous semi-colons
Date: Tue, 30 Jan 2024 22:18:08 +0000
Message-ID: <20240130221808.104878-1-andrew.cooper3@citrix.com>
X-Mailer: git-send-email 2.30.2
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain

All these cases happen to be benign, but drop them anyway.  This is one step
towards making -Wextra-semi work.

Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
---
CC: George Dunlap <George.Dunlap@citrix.com>
CC: Jan Beulich <JBeulich@suse.com>
CC: Stefano Stabellini <sstabellini@kernel.org>
CC: Wei Liu <wl@xen.org>
CC: Julien Grall <julien@xen.org>
---
 xen/common/sched/private.h   | 2 +-
 xen/drivers/acpi/apei/hest.c | 2 +-
 xen/include/xen/livepatch.h  | 2 +-
 xen/include/xen/serial.h     | 2 +-
 4 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/xen/common/sched/private.h b/xen/common/sched/private.h
index 79e3f56c5a08..26a196f4283b 100644
--- a/xen/common/sched/private.h
+++ b/xen/common/sched/private.h
@@ -518,7 +518,7 @@ static inline void sched_unit_unpause(const struct sched_unit *unit)
 }
 
 #define REGISTER_SCHEDULER(x) static const struct scheduler *x##_entry \
-  __used_section(".data.schedulers") = &x;
+  __used_section(".data.schedulers") = &x
 
 struct cpupool
 {
diff --git a/xen/drivers/acpi/apei/hest.c b/xen/drivers/acpi/apei/hest.c
index 4ec28c3c11ba..34b376bc2d74 100644
--- a/xen/drivers/acpi/apei/hest.c
+++ b/xen/drivers/acpi/apei/hest.c
@@ -86,7 +86,7 @@ static int hest_esrc_len(const struct acpi_hest_header *hest_hdr)
 	BUG_ON(len == -1);
 
 	return len;
-};
+}
 
 int apei_hest_parse(apei_hest_func_t func, void *data)
 {
diff --git a/xen/include/xen/livepatch.h b/xen/include/xen/livepatch.h
index df339a134e40..45df4bba4f45 100644
--- a/xen/include/xen/livepatch.h
+++ b/xen/include/xen/livepatch.h
@@ -182,7 +182,7 @@ static inline int livepatch_op(struct xen_sysctl_livepatch_op *op)
     return -ENOSYS;
 }
 
-static inline void check_for_livepatch_work(void) { };
+static inline void check_for_livepatch_work(void) {}
 static inline bool is_patch(const void *addr)
 {
     return 0;
diff --git a/xen/include/xen/serial.h b/xen/include/xen/serial.h
index 870ca2f6eb03..12ef24351d0f 100644
--- a/xen/include/xen/serial.h
+++ b/xen/include/xen/serial.h
@@ -175,7 +175,7 @@ void ehci_dbgp_init(void);
 #ifdef CONFIG_XHCI
 void xhci_dbc_uart_init(void);
 #else
-static void inline xhci_dbc_uart_init(void) {};
+static void inline xhci_dbc_uart_init(void) {}
 #endif
 
 void arm_uart_init(void);
-- 
2.30.2



From xen-devel-bounces@lists.xenproject.org Tue Jan 30 22:28:37 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 30 Jan 2024 22:28:37 +0000
Received: from list by lists.xenproject.org with outflank-mailman.673701.1048145 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUwag-0005HO-8z; Tue, 30 Jan 2024 22:28:26 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 673701.1048145; Tue, 30 Jan 2024 22:28:26 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUwag-0005HH-4H; Tue, 30 Jan 2024 22:28:26 +0000
Received: by outflank-mailman (input) for mailman id 673701;
 Tue, 30 Jan 2024 22:28:24 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=Trk4=JI=citrix.com=prvs=75271d196=Andrew.Cooper3@srs-se1.protection.inumbo.net>)
 id 1rUwae-00052C-QC
 for xen-devel@lists.xenproject.org; Tue, 30 Jan 2024 22:28:24 +0000
Received: from esa4.hc3370-68.iphmx.com (esa4.hc3370-68.iphmx.com
 [216.71.155.144]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id df8d247e-bfbe-11ee-98f5-efadbce2ee36;
 Tue, 30 Jan 2024 23:28:22 +0100 (CET)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: df8d247e-bfbe-11ee-98f5-efadbce2ee36
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple;
  d=citrix.com; s=securemail; t=1706653702;
  h=from:to:cc:subject:date:message-id:mime-version:
   content-transfer-encoding;
  bh=bxThfDoIJYYf/WUb/HpXil0IxNtiXP9us+MkCQrsKWI=;
  b=Gj/8xa+eF4W9Fw0GbdC4FPLqEg1a+GLBoLxTeEXD+sxQ+nC0wNI3DL61
   gwwmfWyHfD4+2Xv/y43OpPbCSccFUbZ4eCa6zYkGjAfkciD34FsV3gldr
   7yK5EbBe8RIPdezUYgsv1FyXvaaqpeSh0RV43vzOPuVBPn9vi+ly0qDG+
   8=;
X-CSE-ConnectionGUID: 8bC+uzs5RFebPMbp/NHfJw==
X-CSE-MsgGUID: faFS1O21T0m4er0q9ijryQ==
Authentication-Results: esa4.hc3370-68.iphmx.com; dkim=none (message not signed) header.i=none
X-SBRS: 4.0
X-MesageID: 132570056
X-Ironport-Server: esa4.hc3370-68.iphmx.com
X-Remote-IP: 162.221.159.70
X-Policy: $RELAYED
X-ThreatScanner-Verdict: Negative
IronPort-Data: A9a23:WNFBra7SyXPCNSrfcZmO/AxRtJ3HchMFZxGqfqrLsTDasY5as4F+v
 jQcUWyBOPyOYzP0cotybIy+oU0BsZaGxoJkSgE6pC5hHi5G8cbLO4+Ufxz6V8+wwm8vb2o8t
 plDNYOQRCwQZiWBzvt4GuG59RGQ7YnRG/ykTraCY3gtLeNdYH9JoQp5nOIkiZJfj9G8Agec0
 fv/uMSaM1K+s9JOGjt8B5mr9lU34ZwehBtC5gZiPakQ5AeE/5UoJMl3yZ+ZfiOQrrZ8RoZWd
 86bpJml82XQ+QsaC9/Nut4XpWVTH9Y+lSDX4pZnc/DKbipq/0Te4Y5iXBYoUm9Fii3hojxE4
 I4lWapc6+seFvakdOw1C3G0GszlVEFM0OevzXOX6aR/w6BaGpdFLjoH4EweZOUlFuhL7W5mp
 fYzay0fdU25qe+8+JexUq5KpsoBM5y+VG8fkikIITDxCP8nRdbIQrnQ5M8e1zA17ixMNa+AP
 YxDM2MpNUmRJUIXUrsUIMtWcOOAr3/zaTBH7nmSorI6+TP7xw1tyrn9dtHSf7RmQO0MxRzF+
 TqeojqR7hcyOtWx8mOiqCuQ3uqTkDmjQdMTFqepz6s/6LGU7jNKU0BHPbehmtGph0j7V99BJ
 kg8/is1sbN05EGtVsP6XRCzvDiDpBF0c/h6HvA+6QqN4rHJ+AvfDW8BJhZac8AvvsIyQT0s1
 3eKksnvCDgpt6eaIVqC8p+EoDX0PjIaRUcAeCsFQA0t89Tl5oYpgXrncNFnF6Kki8zvLhv5y
 TuKsSsWiq0aiIgA0KDT1VrKmS62r57FCAs8/BzKX3mN5xl8IoWiYuSA7FnQ7f9EaoGDXFSFl
 HEBl46V6+VmJZiJlTeRSeQXWr+z7vCOMSb0nlJkWZIm8lyF8Xmpd5Fd+zF6KUJgNO4LfDboZ
 AnYvgY5zJRUOn2tb6N+fYOqI8svxKnkU9/iU5j8ddNIa4NtfRSG+wl0bFaM2Hrglkctl6wyI
 5adfoCnCnNyNEh85GPoHaFHi+Ztn31vgzyLLXzm8/i5+eqUTz2IW6xYCnWDZNgc5rvDhiXb0
 ckKYqNm1C5jvP3Cjjj/qNFLcw5TfClkWfjLR9prmvlvyzeK+V3N6NeLmNvNg6Q/w8xoeh7gp
 xlRoHNwxlvlnmHgIg6XcH1lY76Hdc8g9SxlYXR0Zgj0gyZLjWOTAEA3LsVfQFXa3LY7ka4co
 wctJa1s/cijuhyYom9APPERXaRpdQixhBLmAhdJlAMXJsY6LySQo4+MQ+ca3HVWZsZBnZdk8
 uLIO8KyacZrejmO++6MMaz/kAjv5Cl1dSAbdxKgH+S/sX7EqOBCQxEdRNdtSy3QAX0vHgen6
 js=
IronPort-HdrOrdr: A9a23:zdpurarB/drJ2P7HQz+7058aV5oneYIsimQD101hICG8cqSj+f
 xG+85rsiMc6QxhPE3I9urhBEDtex/hHP1OkOws1NWZLWrbUQKTRekIh+bfKlXbakvDH4VmtJ
 uIHZIQNDSJNykZsfrH
X-Talos-CUID: =?us-ascii?q?9a23=3AlrEi82uJzxAJL1w9XFVUGc6G6It1eFae0WXLfnW?=
 =?us-ascii?q?WBGxRbbeNDnmw9oF7xp8=3D?=
X-Talos-MUID: 9a23:byE9KgoiuEcu6S05KKwezz9rGvwxxP73NBgIzZgc49DVNC5qKg7I2Q==
X-IronPort-AV: E=Sophos;i="6.05,230,1701147600"; 
   d="scan'208";a="132570056"
From: Andrew Cooper <andrew.cooper3@citrix.com>
To: Xen-devel <xen-devel@lists.xenproject.org>
CC: Andrew Cooper <andrew.cooper3@citrix.com>, Jan Beulich
	<JBeulich@suse.com>, =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?=
	<roger.pau@citrix.com>, Wei Liu <wl@xen.org>, Stefano Stabellini
	<sstabellini@kernel.org>, Julien Grall <julien@xen.org>, Volodymyr Babchuk
	<Volodymyr_Babchuk@epam.com>, Bertrand Marquis <bertrand.marquis@arm.com>,
	Michal Orzel <michal.orzel@amd.com>, Bob Eshleman <bobbyeshleman@gmail.com>,
	Alistair Francis <alistair.francis@wdc.com>, Connor Davis
	<connojdavis@gmail.com>, Shawn Anastasio <sanastasio@raptorengineering.com>
Subject: [PATCH] xen/*/asm-offset: Fix bad copy&paste from x86
Date: Tue, 30 Jan 2024 22:28:08 +0000
Message-ID: <20240130222808.106006-1-andrew.cooper3@citrix.com>
X-Mailer: git-send-email 2.30.2
MIME-Version: 1.0
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit

All architectures have copy&pasted bad logic from x86.

OFFSET() having a trailing semi-colon within the macro expansion can be a
problematic pattern.  It's benign in this case, but fix it anyway.

Perform style fixes for the other macros, and tame the mess of BLANK()
position to be consistent (one BLANK() after each block) so the intermediate
form is legible too.

No functional change.

Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
---
CC: Jan Beulich <JBeulich@suse.com>
CC: Roger Pau Monné <roger.pau@citrix.com>
CC: Wei Liu <wl@xen.org>
CC: Stefano Stabellini <sstabellini@kernel.org>
CC: Julien Grall <julien@xen.org>
CC: Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>
CC: Bertrand Marquis <bertrand.marquis@arm.com>
CC: Michal Orzel <michal.orzel@amd.com>
CC: Bob Eshleman <bobbyeshleman@gmail.com>
CC: Alistair Francis <alistair.francis@wdc.com>
CC: Connor Davis <connojdavis@gmail.com>
CC: Shawn Anastasio <sanastasio@raptorengineering.com>

Why does PPC have a local copy of ilog2() here?  Especially as it's not used,
and there's a perfectly good one in <xen/bitops.h>
---
 xen/arch/arm/arm32/asm-offsets.c     | 13 +++++++------
 xen/arch/arm/arm64/asm-offsets.c     | 12 +++++++-----
 xen/arch/ppc/ppc64/asm-offsets.c     | 11 +++++++----
 xen/arch/riscv/riscv64/asm-offsets.c |  8 ++++----
 xen/arch/x86/x86_64/asm-offsets.c    |  7 ++++---
 5 files changed, 29 insertions(+), 22 deletions(-)

diff --git a/xen/arch/arm/arm32/asm-offsets.c b/xen/arch/arm/arm32/asm-offsets.c
index 05c692bb2822..f19523d741af 100644
--- a/xen/arch/arm/arm32/asm-offsets.c
+++ b/xen/arch/arm/arm32/asm-offsets.c
@@ -15,11 +15,11 @@
 
 #define DEFINE(_sym, _val)                                                 \
     asm volatile ("\n.ascii\"==>#define " #_sym " %0 /* " #_val " */<==\"" \
-                  : : "i" (_val) )
+                  :: "i" (_val))
 #define BLANK()                                                            \
-    asm volatile ( "\n.ascii\"==><==\"" : : )
+    asm volatile ("\n.ascii\"==><==\"")
 #define OFFSET(_sym, _str, _mem)                                           \
-    DEFINE(_sym, offsetof(_str, _mem));
+    DEFINE(_sym, offsetof(_str, _mem))
 
 void __dummy__(void)
 {
@@ -62,18 +62,19 @@ void __dummy__(void)
    BLANK();
 
    DEFINE(CPUINFO_sizeof, sizeof(struct cpu_info));
+   BLANK();
 
    OFFSET(VCPU_arch_saved_context, struct vcpu, arch.saved_context);
-
    BLANK();
+
    DEFINE(PROCINFO_sizeof, sizeof(struct proc_info_list));
    OFFSET(PROCINFO_cpu_val, struct proc_info_list, cpu_val);
    OFFSET(PROCINFO_cpu_mask, struct proc_info_list, cpu_mask);
    OFFSET(PROCINFO_cpu_init, struct proc_info_list, cpu_init);
-
    BLANK();
-   OFFSET(INITINFO_stack, struct init_info, stack);
 
+   OFFSET(INITINFO_stack, struct init_info, stack);
+   BLANK();
 }
 
 /*
diff --git a/xen/arch/arm/arm64/asm-offsets.c b/xen/arch/arm/arm64/asm-offsets.c
index 7adb67a1b81a..8112b9243d39 100644
--- a/xen/arch/arm/arm64/asm-offsets.c
+++ b/xen/arch/arm/arm64/asm-offsets.c
@@ -15,11 +15,11 @@
 
 #define DEFINE(_sym, _val)                                                 \
     asm volatile ("\n.ascii\"==>#define " #_sym " %0 /* " #_val " */<==\"" \
-                  : : "i" (_val) )
+                  :: "i" (_val))
 #define BLANK()                                                            \
-    asm volatile ( "\n.ascii\"==><==\"" : : )
+    asm volatile ("\n.ascii\"==><==\"")
 #define OFFSET(_sym, _str, _mem)                                           \
-    DEFINE(_sym, offsetof(_str, _mem));
+    DEFINE(_sym, offsetof(_str, _mem))
 
 void __dummy__(void)
 {
@@ -48,13 +48,14 @@ void __dummy__(void)
 
    DEFINE(CPUINFO_sizeof, sizeof(struct cpu_info));
    OFFSET(CPUINFO_flags, struct cpu_info, flags);
+   BLANK();
 
    OFFSET(VCPU_arch_saved_context, struct vcpu, arch.saved_context);
-
    BLANK();
-   OFFSET(INITINFO_stack, struct init_info, stack);
 
+   OFFSET(INITINFO_stack, struct init_info, stack);
    BLANK();
+
    OFFSET(SMCCC_RES_a0, struct arm_smccc_res, a0);
    OFFSET(SMCCC_RES_a2, struct arm_smccc_res, a2);
    OFFSET(ARM_SMCCC_1_2_REGS_X0_OFFS, struct arm_smccc_1_2_regs, a0);
@@ -66,6 +67,7 @@ void __dummy__(void)
    OFFSET(ARM_SMCCC_1_2_REGS_X12_OFFS, struct arm_smccc_1_2_regs, a12);
    OFFSET(ARM_SMCCC_1_2_REGS_X14_OFFS, struct arm_smccc_1_2_regs, a14);
    OFFSET(ARM_SMCCC_1_2_REGS_X16_OFFS, struct arm_smccc_1_2_regs, a16);
+   BLANK();
 }
 
 /*
diff --git a/xen/arch/ppc/ppc64/asm-offsets.c b/xen/arch/ppc/ppc64/asm-offsets.c
index 634d7260e3a4..24065578cbdb 100644
--- a/xen/arch/ppc/ppc64/asm-offsets.c
+++ b/xen/arch/ppc/ppc64/asm-offsets.c
@@ -9,12 +9,12 @@
 #include <asm/boot.h>
 
 #define DEFINE(_sym, _val)                                                  \
-    asm volatile ( "\n.ascii\"==>#define " #_sym " %0 /* " #_val " */<==\"" \
-                   : : "i" (_val) )
+    asm volatile ("\n.ascii\"==>#define " #_sym " %0 /* " #_val " */<==\""  \
+                  : : "i" (_val))
 #define BLANK()                                                             \
-    asm volatile ( "\n.ascii\"==><==\"" : : )
+    asm volatile ("\n.ascii\"==><==\"")
 #define OFFSET(_sym, _str, _mem)                                            \
-    DEFINE(_sym, offsetof(_str, _mem));
+    DEFINE(_sym, offsetof(_str, _mem))
 
 /* base-2 logarithm */
 #define __L2(_x)  (((_x) & 0x00000002) ?   1 : 0)
@@ -29,6 +29,7 @@ void __dummy__(void)
 
     DEFINE(GPR_WIDTH, sizeof(unsigned long));
     DEFINE(FPR_WIDTH, sizeof(double));
+    BLANK();
 
     OFFSET(UREGS_gprs, struct cpu_user_regs, gprs);
     OFFSET(UREGS_r0, struct cpu_user_regs, gprs[0]);
@@ -48,9 +49,11 @@ void __dummy__(void)
     OFFSET(UREGS_fpscr, struct cpu_user_regs, fpscr);
     OFFSET(UREGS_entry_vector, struct cpu_user_regs, entry_vector);
     DEFINE(UREGS_sizeof, sizeof(struct cpu_user_regs));
+    BLANK();
 
     OFFSET(OPAL_base, struct opal, base);
     OFFSET(OPAL_entry, struct opal, entry);
+    BLANK();
 }
 
 /*
diff --git a/xen/arch/riscv/riscv64/asm-offsets.c b/xen/arch/riscv/riscv64/asm-offsets.c
index d632b75c2acb..ed74b11bf654 100644
--- a/xen/arch/riscv/riscv64/asm-offsets.c
+++ b/xen/arch/riscv/riscv64/asm-offsets.c
@@ -5,15 +5,14 @@
 
 #define DEFINE(_sym, _val)                                                 \
     asm volatile ("\n.ascii\"==>#define " #_sym " %0 /* " #_val " */<==\"" \
-                  : : "i" (_val) )
+                  :: "i" (_val))
 #define BLANK()                                                            \
-    asm volatile ( "\n.ascii\"==><==\"" : : )
+    asm volatile ("\n.ascii\"==><==\"")
 #define OFFSET(_sym, _str, _mem)                                           \
-    DEFINE(_sym, offsetof(_str, _mem));
+    DEFINE(_sym, offsetof(_str, _mem))
 
 void asm_offsets(void)
 {
-    BLANK();
     DEFINE(CPU_USER_REGS_SIZE, sizeof(struct cpu_user_regs));
     OFFSET(CPU_USER_REGS_ZERO, struct cpu_user_regs, zero);
     OFFSET(CPU_USER_REGS_RA, struct cpu_user_regs, ra);
@@ -50,4 +49,5 @@ void asm_offsets(void)
     OFFSET(CPU_USER_REGS_SEPC, struct cpu_user_regs, sepc);
     OFFSET(CPU_USER_REGS_SSTATUS, struct cpu_user_regs, sstatus);
     OFFSET(CPU_USER_REGS_PREGS, struct cpu_user_regs, pregs);
+    BLANK();
 }
diff --git a/xen/arch/x86/x86_64/asm-offsets.c b/xen/arch/x86/x86_64/asm-offsets.c
index f9546ec60b60..a4931c4f7eb2 100644
--- a/xen/arch/x86/x86_64/asm-offsets.c
+++ b/xen/arch/x86/x86_64/asm-offsets.c
@@ -18,11 +18,11 @@
 
 #define DEFINE(_sym, _val)                                                 \
     asm volatile ("\n.ascii\"==>#define " #_sym " %0 /* " #_val " */<==\"" \
-                  : : "i" (_val) )
+                  :: "i" (_val))
 #define BLANK()                                                            \
-    asm volatile ( "\n.ascii\"==><==\"" : : )
+    asm volatile ("\n.ascii\"==><==\"")
 #define OFFSET(_sym, _str, _mem)                                           \
-    DEFINE(_sym, offsetof(_str, _mem));
+    DEFINE(_sym, offsetof(_str, _mem))
 
 void __dummy__(void)
 {
@@ -180,4 +180,5 @@ void __dummy__(void)
     BLANK();
 
     OFFSET(DOMAIN_vm_assist, struct domain, vm_assist);
+    BLANK();
 }
-- 
2.30.2



From xen-devel-bounces@lists.xenproject.org Tue Jan 30 23:00:28 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 30 Jan 2024 23:00:28 +0000
Received: from list by lists.xenproject.org with outflank-mailman.673707.1048154 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUx5a-0003kf-Jy; Tue, 30 Jan 2024 23:00:22 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 673707.1048154; Tue, 30 Jan 2024 23:00:22 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUx5a-0003kY-HQ; Tue, 30 Jan 2024 23:00:22 +0000
Received: by outflank-mailman (input) for mailman id 673707;
 Tue, 30 Jan 2024 23:00:20 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=8aAt=JI=raptorengineering.com=sanastasio@srs-se1.protection.inumbo.net>)
 id 1rUx5Y-0003kS-DB
 for xen-devel@lists.xenproject.org; Tue, 30 Jan 2024 23:00:20 +0000
Received: from raptorengineering.com (mail.raptorengineering.com
 [23.155.224.40]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 5579fbf7-bfc3-11ee-8a43-1f161083a0e0;
 Wed, 31 Jan 2024 00:00:18 +0100 (CET)
Received: from localhost (localhost [127.0.0.1])
 by mail.rptsys.com (Postfix) with ESMTP id 3E1B48285880;
 Tue, 30 Jan 2024 17:00:16 -0600 (CST)
Received: from mail.rptsys.com ([127.0.0.1])
 by localhost (vali.starlink.edu [127.0.0.1]) (amavisd-new, port 10032)
 with ESMTP id 4106HUw3K3Tz; Tue, 30 Jan 2024 17:00:14 -0600 (CST)
Received: from localhost (localhost [127.0.0.1])
 by mail.rptsys.com (Postfix) with ESMTP id B47F8828588F;
 Tue, 30 Jan 2024 17:00:14 -0600 (CST)
Received: from mail.rptsys.com ([127.0.0.1])
 by localhost (vali.starlink.edu [127.0.0.1]) (amavisd-new, port 10026)
 with ESMTP id KqSWhrrzHuNC; Tue, 30 Jan 2024 17:00:14 -0600 (CST)
Received: from [10.11.0.2] (5.edge.rptsys.com [23.155.224.38])
 by mail.rptsys.com (Postfix) with ESMTPSA id 0ED9B8285880;
 Tue, 30 Jan 2024 17:00:14 -0600 (CST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 5579fbf7-bfc3-11ee-8a43-1f161083a0e0
DKIM-Filter: OpenDKIM Filter v2.10.3 mail.rptsys.com B47F8828588F
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
	d=raptorengineering.com; s=B8E824E6-0BE2-11E6-931D-288C65937AAD;
	t=1706655614; bh=BReTFiOijXdQ7jIG/pD8I1ddhBj07jT2TqmAAQmbyM8=;
	h=Message-ID:Date:MIME-Version:To:From;
	b=SbcLShTPoba8b8oaRCGox8y/md3bEugv6e5U/Uh3Ud4yRaN2jelSoV/0tOHk9wzT/
	 Ms04xXwvMPYcnz2jkStCzdhMeEBkhu6L9Y4USo2Va8pVOB1PS8ORfZQlKq3SDpgAre
	 XJVzyf5t41U1KAweh7POIfNDCvdH8UnWrS/z9z74=
X-Virus-Scanned: amavisd-new at rptsys.com
Message-ID: <08a1328c-92c7-486f-9134-00aef1c5c1c2@raptorengineering.com>
Date: Tue, 30 Jan 2024 17:00:13 -0600
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] xen/*/asm-offset: Fix bad copy&paste from x86
Content-Language: en-US
To: Andrew Cooper <andrew.cooper3@citrix.com>,
 Xen-devel <xen-devel@lists.xenproject.org>
Cc: Jan Beulich <JBeulich@suse.com>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger.pau@citrix.com>, Wei Liu <wl@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>, Julien Grall <julien@xen.org>,
 Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
 Bertrand Marquis <bertrand.marquis@arm.com>,
 Michal Orzel <michal.orzel@amd.com>, Bob Eshleman <bobbyeshleman@gmail.com>,
 Alistair Francis <alistair.francis@wdc.com>,
 Connor Davis <connojdavis@gmail.com>
References: <20240130222808.106006-1-andrew.cooper3@citrix.com>
From: Shawn Anastasio <sanastasio@raptorengineering.com>
In-Reply-To: <20240130222808.106006-1-andrew.cooper3@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

Hi Andrew,

On 1/30/24 4:28 PM, Andrew Cooper wrote:
> All architectures have copy&pasted bad logic from x86.
>=20
> OFFSET() having a trailing semi-colon within the macro expansion can be=
 a
> problematic pattern.  It's benign in this case, but fix it anyway.
>=20
> Perform style fixes for the other macros, and tame the mess of BLANK()
> position to be consistent (one BLANK() after each block) so the interme=
diate
> form is legible too.
>=20
> No functional change.
>=20
> Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
> ---
> CC: Jan Beulich <JBeulich@suse.com>
> CC: Roger Pau Monn=C3=A9 <roger.pau@citrix.com>
> CC: Wei Liu <wl@xen.org>
> CC: Stefano Stabellini <sstabellini@kernel.org>
> CC: Julien Grall <julien@xen.org>
> CC: Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>
> CC: Bertrand Marquis <bertrand.marquis@arm.com>
> CC: Michal Orzel <michal.orzel@amd.com>
> CC: Bob Eshleman <bobbyeshleman@gmail.com>
> CC: Alistair Francis <alistair.francis@wdc.com>
> CC: Connor Davis <connojdavis@gmail.com>
> CC: Shawn Anastasio <sanastasio@raptorengineering.com>
>=20
> Why does PPC have a local copy of ilog2() here?  Especially as it's not=
 used,
> and there's a perfectly good one in <xen/bitops.h>

I believe this was a carryover from before we had asm/bitops.h
implemented on PPC. Now that we have bitops implemented (and we don't
define any offsets that use log2 anymore anyways), this is fine to
remove. Will submit a patch to do so.

As for the actual contents of this patch,

Acked-by: Shawn Anastasio <sanastasio@raptorengineering.com>

Thanks,
Shawn


From xen-devel-bounces@lists.xenproject.org Tue Jan 30 23:01:20 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 30 Jan 2024 23:01:20 +0000
Received: from list by lists.xenproject.org with outflank-mailman.673710.1048164 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUx6W-0004IR-2J; Tue, 30 Jan 2024 23:01:20 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 673710.1048164; Tue, 30 Jan 2024 23:01:20 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUx6V-0004IK-VS; Tue, 30 Jan 2024 23:01:19 +0000
Received: by outflank-mailman (input) for mailman id 673710;
 Tue, 30 Jan 2024 23:01:19 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=M5qC=JI=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1rUx6V-0004HA-DD
 for xen-devel@lists.xenproject.org; Tue, 30 Jan 2024 23:01:19 +0000
Received: from mail-wm1-x32d.google.com (mail-wm1-x32d.google.com
 [2a00:1450:4864:20::32d])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 79725164-bfc3-11ee-98f5-efadbce2ee36;
 Wed, 31 Jan 2024 00:01:17 +0100 (CET)
Received: by mail-wm1-x32d.google.com with SMTP id
 5b1f17b1804b1-40eac352733so50648475e9.0
 for <xen-devel@lists.xenproject.org>; Tue, 30 Jan 2024 15:01:17 -0800 (PST)
Received: from [192.168.1.10] (host-92-3-248-192.as13285.net. [92.3.248.192])
 by smtp.gmail.com with ESMTPSA id
 q15-20020a05600c46cf00b0040fb0c84c64sm942658wmo.14.2024.01.30.15.01.16
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 30 Jan 2024 15:01:16 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 79725164-bfc3-11ee-98f5-efadbce2ee36
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1706655677; x=1707260477; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=th5lMOKS3E7cYz5VLCWL8IVqBYQmofzNDiTHnNrqxfg=;
        b=u5Q46zYmOtO1t96ScYzweInCeX4KbIeza5jhoZLyv8hf6HVqYo3mFKRFeQ7LTMIpLN
         J08DeENF1rYq47bTw3VKhvyt2u9z1ecR43iloVxiEw6xk3edsXSDkmCH7cuHX4nIznD6
         eI+zRDF1nTtN26LQs4Sa5jXphYy/sRn6wGQYE=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706655677; x=1707260477;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=th5lMOKS3E7cYz5VLCWL8IVqBYQmofzNDiTHnNrqxfg=;
        b=bY3jpe3wLblo+qjrm/EG7fuU4+rjNARH+Kj0viOoAcpkUTVN5iDYj87Zhwzjpi0ZMc
         JkyrUbM1OsRFnWUerdK/Bpob10CXAtApEbMAlSzHhzurOqk/TvJeVuucAtMkABDj7nAX
         HrAPnB94Tb1+gvpyewk5KIgm54a7ur3aoOj/CpctwZrwwGP97Y6skpZ3gZ8UiJztyx4V
         JyI199pde29e2V6+Q4mF+HBowkujaWF6y9164UBX58ysp2eFa1q9KZgiiUtRGcUUVis5
         kccJS+fZcTzzWTyvlORcW3m7SzQ4dsrLeGt0rxzcrMG+pfrs3XZrC9eFBz9FNmdmCGWr
         Ue3w==
X-Gm-Message-State: AOJu0Yz6k/A5p2f6T9Lmaekgzl3GRd9AlaYeJ9AYJdS2iA9Lc0ALJz9u
	QtD01dVkYIlh7bvDtbJpfIGdpBfknUSnEluZRIXjKLl+yHZFB4T08K4dzaIMYgM=
X-Google-Smtp-Source: AGHT+IFdQtyaDQvMkjzLkxYhe+u9q/p07V6BpakM4hvtEzKiMhZ1j4AftNTAmq3apAKRT1UshRXdaQ==
X-Received: by 2002:a05:600c:4fce:b0:40e:fc23:4010 with SMTP id o14-20020a05600c4fce00b0040efc234010mr3553461wmq.12.1706655676833;
        Tue, 30 Jan 2024 15:01:16 -0800 (PST)
X-Forwarded-Encrypted: i=0; AJvYcCX07HBbmIwnOmfw258JLKvbr2TBDlie5f2oPNvr22ruXGpDaZMEd+aj9QuOFCzmc56mdwwnC1JMxJ/p2WVoLjd11bi8yULsYItjnju29dolkP4G5p/ci/swJcTBP+4shKQfSbQqQcXqNnQMhuT9Y27CuJa3x7hdYVK7ZT8EeiKmm1gt3Hp/gAPpCm4QtCy2VRuJ6hqFvCAAitauFvmfOTmnnbg3IosD7jPJDskwnflXHRCJ8/opeajYA/ChiYgVvaAKku3TDLSUo5DvmOynD8rAzM7p38AzbMDmzs2WQlwFI4fsNsaZtlc4VUW+M12mQ6j8Zsk3tuqmBDV8NPYys8zy1EeqyEeVD/B9oavRDa2M0G5P2ZGnGEU9mHEYbN+xC0zDS3lcpjrvRqlL9zIAWQ==
Message-ID: <fd912d70-d84c-4515-a421-7c00dcbd8d4c@citrix.com>
Date: Tue, 30 Jan 2024 23:01:16 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] xen/*/asm-offset: Fix bad copy&paste from x86
Content-Language: en-GB
To: Shawn Anastasio <sanastasio@raptorengineering.com>,
 Xen-devel <xen-devel@lists.xenproject.org>
Cc: Jan Beulich <JBeulich@suse.com>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger.pau@citrix.com>, Wei Liu <wl@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>, Julien Grall <julien@xen.org>,
 Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
 Bertrand Marquis <bertrand.marquis@arm.com>,
 Michal Orzel <michal.orzel@amd.com>, Bob Eshleman <bobbyeshleman@gmail.com>,
 Alistair Francis <alistair.francis@wdc.com>,
 Connor Davis <connojdavis@gmail.com>
References: <20240130222808.106006-1-andrew.cooper3@citrix.com>
 <08a1328c-92c7-486f-9134-00aef1c5c1c2@raptorengineering.com>
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 xsFNBFLhNn8BEADVhE+Hb8i0GV6mihnnr/uiQQdPF8kUoFzCOPXkf7jQ5sLYeJa0cQi6Penp
 VtiFYznTairnVsN5J+ujSTIb+OlMSJUWV4opS7WVNnxHbFTPYZVQ3erv7NKc2iVizCRZ2Kxn
 srM1oPXWRic8BIAdYOKOloF2300SL/bIpeD+x7h3w9B/qez7nOin5NzkxgFoaUeIal12pXSR
 Q354FKFoy6Vh96gc4VRqte3jw8mPuJQpfws+Pb+swvSf/i1q1+1I4jsRQQh2m6OTADHIqg2E
 ofTYAEh7R5HfPx0EXoEDMdRjOeKn8+vvkAwhviWXTHlG3R1QkbE5M/oywnZ83udJmi+lxjJ5
 YhQ5IzomvJ16H0Bq+TLyVLO/VRksp1VR9HxCzItLNCS8PdpYYz5TC204ViycobYU65WMpzWe
 LFAGn8jSS25XIpqv0Y9k87dLbctKKA14Ifw2kq5OIVu2FuX+3i446JOa2vpCI9GcjCzi3oHV
 e00bzYiHMIl0FICrNJU0Kjho8pdo0m2uxkn6SYEpogAy9pnatUlO+erL4LqFUO7GXSdBRbw5
 gNt25XTLdSFuZtMxkY3tq8MFss5QnjhehCVPEpE6y9ZjI4XB8ad1G4oBHVGK5LMsvg22PfMJ
 ISWFSHoF/B5+lHkCKWkFxZ0gZn33ju5n6/FOdEx4B8cMJt+cWwARAQABzSlBbmRyZXcgQ29v
 cGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPsLBegQTAQgAJAIbAwULCQgHAwUVCgkI
 CwUWAgMBAAIeAQIXgAUCWKD95wIZAQAKCRBlw/kGpdefoHbdD/9AIoR3k6fKl+RFiFpyAhvO
 59ttDFI7nIAnlYngev2XUR3acFElJATHSDO0ju+hqWqAb8kVijXLops0gOfqt3VPZq9cuHlh
 IMDquatGLzAadfFx2eQYIYT+FYuMoPZy/aTUazmJIDVxP7L383grjIkn+7tAv+qeDfE+txL4
 SAm1UHNvmdfgL2/lcmL3xRh7sub3nJilM93RWX1Pe5LBSDXO45uzCGEdst6uSlzYR/MEr+5Z
 JQQ32JV64zwvf/aKaagSQSQMYNX9JFgfZ3TKWC1KJQbX5ssoX/5hNLqxMcZV3TN7kU8I3kjK
 mPec9+1nECOjjJSO/h4P0sBZyIUGfguwzhEeGf4sMCuSEM4xjCnwiBwftR17sr0spYcOpqET
 ZGcAmyYcNjy6CYadNCnfR40vhhWuCfNCBzWnUW0lFoo12wb0YnzoOLjvfD6OL3JjIUJNOmJy
 RCsJ5IA/Iz33RhSVRmROu+TztwuThClw63g7+hoyewv7BemKyuU6FTVhjjW+XUWmS/FzknSi
 dAG+insr0746cTPpSkGl3KAXeWDGJzve7/SBBfyznWCMGaf8E2P1oOdIZRxHgWj0zNr1+ooF
 /PzgLPiCI4OMUttTlEKChgbUTQ+5o0P080JojqfXwbPAyumbaYcQNiH1/xYbJdOFSiBv9rpt
 TQTBLzDKXok86M7BTQRS4TZ/ARAAkgqudHsp+hd82UVkvgnlqZjzz2vyrYfz7bkPtXaGb9H4
 Rfo7mQsEQavEBdWWjbga6eMnDqtu+FC+qeTGYebToxEyp2lKDSoAsvt8w82tIlP/EbmRbDVn
 7bhjBlfRcFjVYw8uVDPptT0TV47vpoCVkTwcyb6OltJrvg/QzV9f07DJswuda1JH3/qvYu0p
 vjPnYvCq4NsqY2XSdAJ02HrdYPFtNyPEntu1n1KK+gJrstjtw7KsZ4ygXYrsm/oCBiVW/OgU
 g/XIlGErkrxe4vQvJyVwg6YH653YTX5hLLUEL1NS4TCo47RP+wi6y+TnuAL36UtK/uFyEuPy
 wwrDVcC4cIFhYSfsO0BumEI65yu7a8aHbGfq2lW251UcoU48Z27ZUUZd2Dr6O/n8poQHbaTd
 6bJJSjzGGHZVbRP9UQ3lkmkmc0+XCHmj5WhwNNYjgbbmML7y0fsJT5RgvefAIFfHBg7fTY/i
 kBEimoUsTEQz+N4hbKwo1hULfVxDJStE4sbPhjbsPCrlXf6W9CxSyQ0qmZ2bXsLQYRj2xqd1
 bpA+1o1j2N4/au1R/uSiUFjewJdT/LX1EklKDcQwpk06Af/N7VZtSfEJeRV04unbsKVXWZAk
 uAJyDDKN99ziC0Wz5kcPyVD1HNf8bgaqGDzrv3TfYjwqayRFcMf7xJaL9xXedMcAEQEAAcLB
 XwQYAQgACQUCUuE2fwIbDAAKCRBlw/kGpdefoG4XEACD1Qf/er8EA7g23HMxYWd3FXHThrVQ
 HgiGdk5Yh632vjOm9L4sd/GCEACVQKjsu98e8o3ysitFlznEns5EAAXEbITrgKWXDDUWGYxd
 pnjj2u+GkVdsOAGk0kxczX6s+VRBhpbBI2PWnOsRJgU2n10PZ3mZD4Xu9kU2IXYmuW+e5KCA
 vTArRUdCrAtIa1k01sPipPPw6dfxx2e5asy21YOytzxuWFfJTGnVxZZSCyLUO83sh6OZhJkk
 b9rxL9wPmpN/t2IPaEKoAc0FTQZS36wAMOXkBh24PQ9gaLJvfPKpNzGD8XWR5HHF0NLIJhgg
 4ZlEXQ2fVp3XrtocHqhu4UZR4koCijgB8sB7Tb0GCpwK+C4UePdFLfhKyRdSXuvY3AHJd4CP
 4JzW0Bzq/WXY3XMOzUTYApGQpnUpdOmuQSfpV9MQO+/jo7r6yPbxT7CwRS5dcQPzUiuHLK9i
 nvjREdh84qycnx0/6dDroYhp0DFv4udxuAvt1h4wGwTPRQZerSm4xaYegEFusyhbZrI0U9tJ
 B8WrhBLXDiYlyJT6zOV2yZFuW47VrLsjYnHwn27hmxTC/7tvG3euCklmkn9Sl9IAKFu29RSo
 d5bD8kMSCYsTqtTfT6W4A3qHGvIDta3ptLYpIAOD2sY3GYq2nf3Bbzx81wZK14JdDDHUX2Rs
 6+ahAA==
In-Reply-To: <08a1328c-92c7-486f-9134-00aef1c5c1c2@raptorengineering.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 30/01/2024 11:00 pm, Shawn Anastasio wrote:
> Hi Andrew,
>
> On 1/30/24 4:28 PM, Andrew Cooper wrote:
>> All architectures have copy&pasted bad logic from x86.
>>
>> OFFSET() having a trailing semi-colon within the macro expansion can be a
>> problematic pattern.  It's benign in this case, but fix it anyway.
>>
>> Perform style fixes for the other macros, and tame the mess of BLANK()
>> position to be consistent (one BLANK() after each block) so the intermediate
>> form is legible too.
>>
>> No functional change.
>>
>> Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
>> ---
>> CC: Jan Beulich <JBeulich@suse.com>
>> CC: Roger Pau Monné <roger.pau@citrix.com>
>> CC: Wei Liu <wl@xen.org>
>> CC: Stefano Stabellini <sstabellini@kernel.org>
>> CC: Julien Grall <julien@xen.org>
>> CC: Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>
>> CC: Bertrand Marquis <bertrand.marquis@arm.com>
>> CC: Michal Orzel <michal.orzel@amd.com>
>> CC: Bob Eshleman <bobbyeshleman@gmail.com>
>> CC: Alistair Francis <alistair.francis@wdc.com>
>> CC: Connor Davis <connojdavis@gmail.com>
>> CC: Shawn Anastasio <sanastasio@raptorengineering.com>
>>
>> Why does PPC have a local copy of ilog2() here?  Especially as it's not used,
>> and there's a perfectly good one in <xen/bitops.h>
> I believe this was a carryover from before we had asm/bitops.h
> implemented on PPC. Now that we have bitops implemented (and we don't
> define any offsets that use log2 anymore anyways), this is fine to
> remove. Will submit a patch to do so.

Ah - good to know.  Thanks.

> As for the actual contents of this patch,
>
> Acked-by: Shawn Anastasio <sanastasio@raptorengineering.com>

and thanks also.

~Andrew


From xen-devel-bounces@lists.xenproject.org Tue Jan 30 23:41:01 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Tue, 30 Jan 2024 23:41:01 +0000
Received: from list by lists.xenproject.org with outflank-mailman.673716.1048174 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUxig-0003WK-Vb; Tue, 30 Jan 2024 23:40:46 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 673716.1048174; Tue, 30 Jan 2024 23:40:46 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rUxig-0003WD-Sd; Tue, 30 Jan 2024 23:40:46 +0000
Received: by outflank-mailman (input) for mailman id 673716;
 Tue, 30 Jan 2024 23:40:46 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rUxig-0003W2-1l; Tue, 30 Jan 2024 23:40:46 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rUxif-00033V-U7; Tue, 30 Jan 2024 23:40:45 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rUxif-0007GQ-Dj; Tue, 30 Jan 2024 23:40:45 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rUxif-0005AR-BM; Tue, 30 Jan 2024 23:40:45 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=Suzo2mrzmidniNvc4G/IttnwR/fylKz1E4tPHW9BVKs=; b=U8Y0R/GodkfLMMiUKt0sS8Dhw0
	jwDSJym/1D2fwo+u+QZ2jiTv6ot7RFZ6zC3RQnKWQeDP+H9k35EDieQ8zMiN/OEywu7gNE2SVVrdR
	Rbm6rknVoMhKgPcUiO5EGfcm7GLOFjJ8cbO/AxsVrXUZ3M6sD2jeOmz02XsMV4NwqJis=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184527-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [xen-unstable test] 184527: tolerable FAIL - PUSHED
X-Osstest-Failures:
    xen-unstable:test-armhf-armhf-libvirt:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-amd64-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-qcow2:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-raw:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-amd64-qemuu-nested-amd:debian-hvm-install/l1/l2:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-amd64-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    xen-unstable:test-amd64-i386-xl-pvshim:guest-start:fail:nonblocking
    xen-unstable:test-amd64-i386-libvirt-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-libvirt:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-credit2:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-credit2:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-thunderx:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-thunderx:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-credit1:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-credit1:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-libvirt-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-libvirt-xsm:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-xsm:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-arndale:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-arndale:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-multivcpu:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-multivcpu:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-rtds:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-rtds:saverestore-support-check:fail:nonblocking
    xen-unstable:test-amd64-i386-libvirt-raw:migrate-support-check:fail:nonblocking
    xen-unstable:test-amd64-amd64-libvirt-vhd:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-libvirt-raw:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-libvirt-raw:saverestore-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-vhd:migrate-support-check:fail:nonblocking
    xen-unstable:test-arm64-arm64-xl-vhd:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-qcow2:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-libvirt-raw:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-vhd:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-vhd:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit1:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit1:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl:saverestore-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit2:migrate-support-check:fail:nonblocking
    xen-unstable:test-armhf-armhf-xl-credit2:saverestore-support-check:fail:nonblocking
X-Osstest-Versions-This:
    xen=4a7e71aa085170f1a13976507c8e248f8715f116
X-Osstest-Versions-That:
    xen=40a74677023a5eb20d7bbc09def37884f80919bd
From: osstest service owner <osstest-admin@xenproject.org>
Date: Tue, 30 Jan 2024 23:40:45 +0000

flight 184527 xen-unstable real [real]
http://logs.test-lab.xenproject.org/osstest/logs/184527/

Failures :-/ but no regressions.

Tests which did not succeed, but are not blocking:
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 184518
 test-amd64-amd64-xl-qemut-win7-amd64 19 guest-stop            fail like 184518
 test-amd64-i386-xl-qemuu-win7-amd64 19 guest-stop             fail like 184518
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 184518
 test-amd64-i386-xl-qemut-ws16-amd64 19 guest-stop             fail like 184518
 test-amd64-i386-xl-qemut-win7-amd64 19 guest-stop             fail like 184518
 test-armhf-armhf-libvirt-qcow2 15 saverestore-support-check   fail like 184518
 test-armhf-armhf-libvirt-raw 15 saverestore-support-check    fail  like 184518
 test-amd64-amd64-xl-qemut-ws16-amd64 19 guest-stop            fail like 184518
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 184518
 test-amd64-i386-xl-qemuu-ws16-amd64 19 guest-stop             fail like 184518
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 184518
 test-amd64-i386-xl-pvshim    14 guest-start                  fail   never pass
 test-amd64-i386-libvirt-xsm  15 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt     15 migrate-support-check        fail   never pass
 test-amd64-i386-libvirt      15 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit2  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit2  16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-thunderx 15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl          15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl          16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-thunderx 16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-credit1  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit1  16 saverestore-support-check    fail   never pass
 test-arm64-arm64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-xsm 16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-xsm      15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-xsm      16 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-armhf-armhf-xl-arndale  15 migrate-support-check        fail   never pass
 test-armhf-armhf-libvirt     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-arndale  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-multivcpu 15 migrate-support-check        fail  never pass
 test-armhf-armhf-xl-multivcpu 16 saverestore-support-check    fail  never pass
 test-armhf-armhf-xl-rtds     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-rtds     16 saverestore-support-check    fail   never pass
 test-amd64-i386-libvirt-raw  14 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt-vhd 14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 15 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-vhd      14 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-vhd      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-qcow2 14 migrate-support-check        fail never pass
 test-armhf-armhf-libvirt-raw 14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-credit1  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit1  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl          15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-credit2  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit2  16 saverestore-support-check    fail   never pass

version targeted for testing:
 xen                  4a7e71aa085170f1a13976507c8e248f8715f116
baseline version:
 xen                  40a74677023a5eb20d7bbc09def37884f80919bd

Last test of basis   184518  2024-01-29 15:11:13 Z    1 days
Testing same since   184527  2024-01-30 06:02:22 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Roger Pau Monne <roger.pau@citrix.com>
  Roger Pau Monné <roger.pau@citrix.com>

jobs:
 build-amd64-xsm                                              pass    
 build-arm64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64-xtf                                              pass    
 build-amd64                                                  pass    
 build-arm64                                                  pass    
 build-armhf                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-arm64-libvirt                                          pass    
 build-armhf-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-prev                                             pass    
 build-i386-prev                                              pass    
 build-amd64-pvops                                            pass    
 build-arm64-pvops                                            pass    
 build-armhf-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-xtf-amd64-amd64-1                                       pass    
 test-xtf-amd64-amd64-2                                       pass    
 test-xtf-amd64-amd64-3                                       pass    
 test-xtf-amd64-amd64-4                                       pass    
 test-xtf-amd64-amd64-5                                       pass    
 test-amd64-amd64-xl                                          pass    
 test-amd64-coresched-amd64-xl                                pass    
 test-arm64-arm64-xl                                          pass    
 test-armhf-armhf-xl                                          pass    
 test-amd64-i386-xl                                           pass    
 test-amd64-coresched-i386-xl                                 pass    
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm           pass    
 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm            pass    
 test-amd64-amd64-xl-qemut-stubdom-debianhvm-amd64-xsm        pass    
 test-amd64-i386-xl-qemut-stubdom-debianhvm-amd64-xsm         pass    
 test-amd64-amd64-xl-qemut-debianhvm-i386-xsm                 pass    
 test-amd64-i386-xl-qemut-debianhvm-i386-xsm                  pass    
 test-amd64-amd64-xl-qemuu-debianhvm-i386-xsm                 pass    
 test-amd64-i386-xl-qemuu-debianhvm-i386-xsm                  pass    
 test-amd64-amd64-libvirt-xsm                                 pass    
 test-arm64-arm64-libvirt-xsm                                 pass    
 test-amd64-i386-libvirt-xsm                                  pass    
 test-amd64-amd64-xl-xsm                                      pass    
 test-arm64-arm64-xl-xsm                                      pass    
 test-amd64-i386-xl-xsm                                       pass    
 test-amd64-amd64-qemuu-nested-amd                            fail    
 test-amd64-amd64-xl-pvhv2-amd                                pass    
 test-amd64-i386-qemut-rhel6hvm-amd                           pass    
 test-amd64-i386-qemuu-rhel6hvm-amd                           pass    
 test-amd64-amd64-dom0pvh-xl-amd                              pass    
 test-amd64-amd64-xl-qemut-debianhvm-amd64                    pass    
 test-amd64-i386-xl-qemut-debianhvm-amd64                     pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64                    pass    
 test-amd64-i386-xl-qemuu-debianhvm-amd64                     pass    
 test-amd64-i386-freebsd10-amd64                              pass    
 test-amd64-amd64-qemuu-freebsd11-amd64                       pass    
 test-amd64-amd64-qemuu-freebsd12-amd64                       pass    
 test-amd64-amd64-xl-qemuu-ovmf-amd64                         pass    
 test-amd64-i386-xl-qemuu-ovmf-amd64                          pass    
 test-amd64-amd64-xl-qemut-win7-amd64                         fail    
 test-amd64-i386-xl-qemut-win7-amd64                          fail    
 test-amd64-amd64-xl-qemuu-win7-amd64                         fail    
 test-amd64-i386-xl-qemuu-win7-amd64                          fail    
 test-amd64-amd64-xl-qemut-ws16-amd64                         fail    
 test-amd64-i386-xl-qemut-ws16-amd64                          fail    
 test-amd64-amd64-xl-qemuu-ws16-amd64                         fail    
 test-amd64-i386-xl-qemuu-ws16-amd64                          fail    
 test-armhf-armhf-xl-arndale                                  pass    
 test-amd64-amd64-examine-bios                                pass    
 test-amd64-i386-examine-bios                                 pass    
 test-amd64-amd64-xl-credit1                                  pass    
 test-arm64-arm64-xl-credit1                                  pass    
 test-armhf-armhf-xl-credit1                                  pass    
 test-amd64-amd64-xl-credit2                                  pass    
 test-arm64-arm64-xl-credit2                                  pass    
 test-armhf-armhf-xl-credit2                                  pass    
 test-amd64-amd64-xl-qemuu-dmrestrict-amd64-dmrestrict        pass    
 test-amd64-i386-xl-qemuu-dmrestrict-amd64-dmrestrict         pass    
 test-amd64-amd64-examine                                     pass    
 test-arm64-arm64-examine                                     pass    
 test-armhf-armhf-examine                                     pass    
 test-amd64-i386-examine                                      pass    
 test-amd64-i386-freebsd10-i386                               pass    
 test-amd64-amd64-qemuu-nested-intel                          pass    
 test-amd64-amd64-xl-pvhv2-intel                              pass    
 test-amd64-i386-qemut-rhel6hvm-intel                         pass    
 test-amd64-i386-qemuu-rhel6hvm-intel                         pass    
 test-amd64-amd64-dom0pvh-xl-intel                            pass    
 test-amd64-amd64-libvirt                                     pass    
 test-armhf-armhf-libvirt                                     pass    
 test-amd64-i386-libvirt                                      pass    
 test-amd64-amd64-livepatch                                   pass    
 test-amd64-i386-livepatch                                    pass    
 test-amd64-amd64-migrupgrade                                 pass    
 test-amd64-i386-migrupgrade                                  pass    
 test-amd64-amd64-xl-multivcpu                                pass    
 test-armhf-armhf-xl-multivcpu                                pass    
 test-amd64-amd64-pair                                        pass    
 test-amd64-i386-pair                                         pass    
 test-amd64-amd64-libvirt-pair                                pass    
 test-amd64-i386-libvirt-pair                                 pass    
 test-amd64-amd64-xl-pvshim                                   pass    
 test-amd64-i386-xl-pvshim                                    fail    
 test-amd64-amd64-pygrub                                      pass    
 test-armhf-armhf-libvirt-qcow2                               pass    
 test-amd64-amd64-xl-qcow2                                    pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-armhf-armhf-libvirt-raw                                 pass    
 test-amd64-i386-libvirt-raw                                  pass    
 test-amd64-amd64-xl-rtds                                     pass    
 test-armhf-armhf-xl-rtds                                     pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64-shadow             pass    
 test-amd64-i386-xl-qemuu-debianhvm-amd64-shadow              pass    
 test-amd64-amd64-xl-shadow                                   pass    
 test-amd64-i386-xl-shadow                                    pass    
 test-arm64-arm64-xl-thunderx                                 pass    
 test-amd64-amd64-examine-uefi                                pass    
 test-amd64-i386-examine-uefi                                 pass    
 test-amd64-amd64-libvirt-vhd                                 pass    
 test-arm64-arm64-xl-vhd                                      pass    
 test-armhf-armhf-xl-vhd                                      pass    
 test-amd64-i386-xl-vhd                                       pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Pushing revision :

To xenbits.xen.org:/home/xen/git/xen.git
   40a7467702..4a7e71aa08  4a7e71aa085170f1a13976507c8e248f8715f116 -> master


From xen-devel-bounces@lists.xenproject.org Wed Jan 31 04:20:05 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 31 Jan 2024 04:20:05 +0000
Received: from list by lists.xenproject.org with outflank-mailman.673727.1048198 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rV24h-00035c-DE; Wed, 31 Jan 2024 04:19:47 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 673727.1048198; Wed, 31 Jan 2024 04:19:47 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rV24h-00035V-7W; Wed, 31 Jan 2024 04:19:47 +0000
Received: by outflank-mailman (input) for mailman id 673727;
 Wed, 31 Jan 2024 04:19:46 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rV24f-00035L-Ur; Wed, 31 Jan 2024 04:19:45 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rV24f-0002kR-SJ; Wed, 31 Jan 2024 04:19:45 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rV24e-0007Lj-UY; Wed, 31 Jan 2024 04:19:45 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rV24e-0007Db-ST; Wed, 31 Jan 2024 04:19:44 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=dwVTHiPhu8WEVgQEG345px2C88QVOZ2P7smrHk1xli8=; b=XIK4biq1aCblxzFSRA5jZhrbId
	DeYA9a11R51j7UaedVh/7keO8ozZPf9nJf7qIAIwjzPO9nUwVQn0vBca6VzRgxkkXFTuIhL5Z7CZb
	RdV866Z6nMjrsWiJOAkYrJUBc9F6C5J8gBVr8Lg+MaiPQJ8HrqNZsCE/zEJE20fatStM=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184530-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [xen-4.16-testing test] 184530: tolerable trouble: fail/pass/starved - PUSHED
X-Osstest-Failures:
    xen-4.16-testing:test-amd64-i386-xl-xsm:debian-fixup:fail:heisenbug
    xen-4.16-testing:test-amd64-amd64-xl:guest-localmigrate/x10:fail:heisenbug
    xen-4.16-testing:test-amd64-amd64-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    xen-4.16-testing:test-amd64-amd64-qemuu-nested-amd:debian-hvm-install/l1/l2:fail:nonblocking
    xen-4.16-testing:test-armhf-armhf-libvirt:saverestore-support-check:fail:nonblocking
    xen-4.16-testing:test-amd64-amd64-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    xen-4.16-testing:test-amd64-i386-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    xen-4.16-testing:test-amd64-i386-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    xen-4.16-testing:test-amd64-amd64-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    xen-4.16-testing:test-armhf-armhf-libvirt-qcow2:saverestore-support-check:fail:nonblocking
    xen-4.16-testing:test-armhf-armhf-libvirt-raw:saverestore-support-check:fail:nonblocking
    xen-4.16-testing:test-amd64-i386-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    xen-4.16-testing:test-amd64-amd64-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    xen-4.16-testing:test-amd64-i386-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    xen-4.16-testing:test-amd64-i386-libvirt-xsm:migrate-support-check:fail:nonblocking
    xen-4.16-testing:test-amd64-i386-libvirt:migrate-support-check:fail:nonblocking
    xen-4.16-testing:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    xen-4.16-testing:test-amd64-amd64-libvirt-xsm:migrate-support-check:fail:nonblocking
    xen-4.16-testing:test-amd64-i386-xl-pvshim:guest-start:fail:nonblocking
    xen-4.16-testing:test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    xen-4.16-testing:test-amd64-i386-libvirt-raw:migrate-support-check:fail:nonblocking
    xen-4.16-testing:test-armhf-armhf-xl-vhd:migrate-support-check:fail:nonblocking
    xen-4.16-testing:test-armhf-armhf-xl-vhd:saverestore-support-check:fail:nonblocking
    xen-4.16-testing:test-armhf-armhf-xl-credit2:migrate-support-check:fail:nonblocking
    xen-4.16-testing:test-armhf-armhf-xl-credit2:saverestore-support-check:fail:nonblocking
    xen-4.16-testing:test-armhf-armhf-xl-arndale:migrate-support-check:fail:nonblocking
    xen-4.16-testing:test-armhf-armhf-xl-arndale:saverestore-support-check:fail:nonblocking
    xen-4.16-testing:test-armhf-armhf-xl-multivcpu:migrate-support-check:fail:nonblocking
    xen-4.16-testing:test-armhf-armhf-xl-multivcpu:saverestore-support-check:fail:nonblocking
    xen-4.16-testing:test-armhf-armhf-xl:migrate-support-check:fail:nonblocking
    xen-4.16-testing:test-armhf-armhf-xl:saverestore-support-check:fail:nonblocking
    xen-4.16-testing:test-armhf-armhf-xl-credit1:migrate-support-check:fail:nonblocking
    xen-4.16-testing:test-armhf-armhf-xl-credit1:saverestore-support-check:fail:nonblocking
    xen-4.16-testing:test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    xen-4.16-testing:test-armhf-armhf-xl-rtds:migrate-support-check:fail:nonblocking
    xen-4.16-testing:test-armhf-armhf-xl-rtds:saverestore-support-check:fail:nonblocking
    xen-4.16-testing:test-armhf-armhf-libvirt:migrate-support-check:fail:nonblocking
    xen-4.16-testing:test-amd64-amd64-libvirt-vhd:migrate-support-check:fail:nonblocking
    xen-4.16-testing:test-armhf-armhf-libvirt-qcow2:migrate-support-check:fail:nonblocking
    xen-4.16-testing:test-armhf-armhf-libvirt-raw:migrate-support-check:fail:nonblocking
    xen-4.16-testing:test-arm64-arm64-libvirt-raw:hosts-allocate:starved:nonblocking
    xen-4.16-testing:test-arm64-arm64-libvirt-xsm:hosts-allocate:starved:nonblocking
    xen-4.16-testing:test-arm64-arm64-xl-credit1:hosts-allocate:starved:nonblocking
    xen-4.16-testing:test-arm64-arm64-xl-credit2:hosts-allocate:starved:nonblocking
    xen-4.16-testing:test-arm64-arm64-xl:hosts-allocate:starved:nonblocking
    xen-4.16-testing:test-arm64-arm64-xl-xsm:hosts-allocate:starved:nonblocking
    xen-4.16-testing:test-arm64-arm64-xl-vhd:hosts-allocate:starved:nonblocking
    xen-4.16-testing:test-arm64-arm64-xl-thunderx:hosts-allocate:starved:nonblocking
X-Osstest-Versions-This:
    xen=e481fc9f32339ebf9ddd171a3995a3e44527d148
X-Osstest-Versions-That:
    xen=e7c3d6ceaf73120098f9213fd12f79fd50e8e588
From: osstest service owner <osstest-admin@xenproject.org>
Date: Wed, 31 Jan 2024 04:19:44 +0000

flight 184530 xen-4.16-testing real [real]
flight 184536 xen-4.16-testing real-retest [real]
http://logs.test-lab.xenproject.org/osstest/logs/184530/
http://logs.test-lab.xenproject.org/osstest/logs/184536/

Failures :-/ but no regressions.

Tests which are failing intermittently (not blocking):
 test-amd64-i386-xl-xsm       13 debian-fixup        fail pass in 184536-retest
 test-amd64-amd64-xl       20 guest-localmigrate/x10 fail pass in 184536-retest

Tests which did not succeed, but are not blocking:
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 184108
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 184108
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 184108
 test-amd64-amd64-xl-qemut-win7-amd64 19 guest-stop            fail like 184108
 test-amd64-i386-xl-qemuu-win7-amd64 19 guest-stop             fail like 184108
 test-amd64-i386-xl-qemut-win7-amd64 19 guest-stop             fail like 184108
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 184108
 test-armhf-armhf-libvirt-qcow2 15 saverestore-support-check   fail like 184108
 test-armhf-armhf-libvirt-raw 15 saverestore-support-check    fail  like 184108
 test-amd64-i386-xl-qemuu-ws16-amd64 19 guest-stop             fail like 184108
 test-amd64-amd64-xl-qemut-ws16-amd64 19 guest-stop            fail like 184108
 test-amd64-i386-xl-qemut-ws16-amd64 19 guest-stop             fail like 184108
 test-amd64-i386-libvirt-xsm  15 migrate-support-check        fail   never pass
 test-amd64-i386-libvirt      15 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt     15 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-amd64-i386-xl-pvshim    14 guest-start                  fail   never pass
 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-amd64-i386-libvirt-raw  14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-credit2  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit2  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-arndale  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-arndale  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-multivcpu 15 migrate-support-check        fail  never pass
 test-armhf-armhf-xl-multivcpu 16 saverestore-support-check    fail  never pass
 test-armhf-armhf-xl          15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-credit1  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit1  16 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-armhf-armhf-xl-rtds     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-rtds     16 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt     15 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt-vhd 14 migrate-support-check        fail   never pass
 test-armhf-armhf-libvirt-qcow2 14 migrate-support-check        fail never pass
 test-armhf-armhf-libvirt-raw 14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw  3 hosts-allocate               starved  n/a
 test-arm64-arm64-libvirt-xsm  3 hosts-allocate               starved  n/a
 test-arm64-arm64-xl-credit1   3 hosts-allocate               starved  n/a
 test-arm64-arm64-xl-credit2   3 hosts-allocate               starved  n/a
 test-arm64-arm64-xl           3 hosts-allocate               starved  n/a
 test-arm64-arm64-xl-xsm       3 hosts-allocate               starved  n/a
 test-arm64-arm64-xl-vhd       3 hosts-allocate               starved  n/a
 test-arm64-arm64-xl-thunderx  3 hosts-allocate               starved  n/a

version targeted for testing:
 xen                  e481fc9f32339ebf9ddd171a3995a3e44527d148
baseline version:
 xen                  e7c3d6ceaf73120098f9213fd12f79fd50e8e588

Last test of basis   184108  2023-12-12 14:07:04 Z   49 days
Testing same since   184530  2024-01-30 14:07:07 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Roger Pau Monné <roger.pau@citrix.com>

jobs:
 build-amd64-xsm                                              pass    
 build-arm64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64-xtf                                              pass    
 build-amd64                                                  pass    
 build-arm64                                                  pass    
 build-armhf                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-arm64-libvirt                                          pass    
 build-armhf-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-prev                                             pass    
 build-i386-prev                                              pass    
 build-amd64-pvops                                            pass    
 build-arm64-pvops                                            pass    
 build-armhf-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-xtf-amd64-amd64-1                                       pass    
 test-xtf-amd64-amd64-2                                       pass    
 test-xtf-amd64-amd64-3                                       pass    
 test-xtf-amd64-amd64-4                                       pass    
 test-xtf-amd64-amd64-5                                       pass    
 test-amd64-amd64-xl                                          fail    
 test-amd64-coresched-amd64-xl                                pass    
 test-arm64-arm64-xl                                          starved 
 test-armhf-armhf-xl                                          pass    
 test-amd64-i386-xl                                           pass    
 test-amd64-coresched-i386-xl                                 pass    
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm           pass    
 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm            pass    
 test-amd64-amd64-xl-qemut-stubdom-debianhvm-amd64-xsm        pass    
 test-amd64-i386-xl-qemut-stubdom-debianhvm-amd64-xsm         pass    
 test-amd64-amd64-xl-qemut-debianhvm-i386-xsm                 pass    
 test-amd64-i386-xl-qemut-debianhvm-i386-xsm                  pass    
 test-amd64-amd64-xl-qemuu-debianhvm-i386-xsm                 pass    
 test-amd64-i386-xl-qemuu-debianhvm-i386-xsm                  pass    
 test-amd64-amd64-libvirt-xsm                                 pass    
 test-arm64-arm64-libvirt-xsm                                 starved 
 test-amd64-i386-libvirt-xsm                                  pass    
 test-amd64-amd64-xl-xsm                                      pass    
 test-arm64-arm64-xl-xsm                                      starved 
 test-amd64-i386-xl-xsm                                       fail    
 test-amd64-amd64-qemuu-nested-amd                            fail    
 test-amd64-amd64-xl-pvhv2-amd                                pass    
 test-amd64-i386-qemut-rhel6hvm-amd                           pass    
 test-amd64-i386-qemuu-rhel6hvm-amd                           pass    
 test-amd64-amd64-dom0pvh-xl-amd                              pass    
 test-amd64-amd64-xl-qemut-debianhvm-amd64                    pass    
 test-amd64-i386-xl-qemut-debianhvm-amd64                     pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64                    pass    
 test-amd64-i386-xl-qemuu-debianhvm-amd64                     pass    
 test-amd64-i386-freebsd10-amd64                              pass    
 test-amd64-amd64-qemuu-freebsd11-amd64                       pass    
 test-amd64-amd64-qemuu-freebsd12-amd64                       pass    
 test-amd64-amd64-xl-qemuu-ovmf-amd64                         pass    
 test-amd64-i386-xl-qemuu-ovmf-amd64                          pass    
 test-amd64-amd64-xl-qemut-win7-amd64                         fail    
 test-amd64-i386-xl-qemut-win7-amd64                          fail    
 test-amd64-amd64-xl-qemuu-win7-amd64                         fail    
 test-amd64-i386-xl-qemuu-win7-amd64                          fail    
 test-amd64-amd64-xl-qemut-ws16-amd64                         fail    
 test-amd64-i386-xl-qemut-ws16-amd64                          fail    
 test-amd64-amd64-xl-qemuu-ws16-amd64                         fail    
 test-amd64-i386-xl-qemuu-ws16-amd64                          fail    
 test-armhf-armhf-xl-arndale                                  pass    
 test-amd64-amd64-xl-credit1                                  pass    
 test-arm64-arm64-xl-credit1                                  starved 
 test-armhf-armhf-xl-credit1                                  pass    
 test-amd64-amd64-xl-credit2                                  pass    
 test-arm64-arm64-xl-credit2                                  starved 
 test-armhf-armhf-xl-credit2                                  pass    
 test-amd64-amd64-xl-qemuu-dmrestrict-amd64-dmrestrict        pass    
 test-amd64-i386-xl-qemuu-dmrestrict-amd64-dmrestrict         pass    
 test-amd64-i386-freebsd10-i386                               pass    
 test-amd64-amd64-qemuu-nested-intel                          pass    
 test-amd64-amd64-xl-pvhv2-intel                              pass    
 test-amd64-i386-qemut-rhel6hvm-intel                         pass    
 test-amd64-i386-qemuu-rhel6hvm-intel                         pass    
 test-amd64-amd64-dom0pvh-xl-intel                            pass    
 test-amd64-amd64-libvirt                                     pass    
 test-armhf-armhf-libvirt                                     pass    
 test-amd64-i386-libvirt                                      pass    
 test-amd64-amd64-livepatch                                   pass    
 test-amd64-i386-livepatch                                    pass    
 test-amd64-amd64-migrupgrade                                 pass    
 test-amd64-i386-migrupgrade                                  pass    
 test-amd64-amd64-xl-multivcpu                                pass    
 test-armhf-armhf-xl-multivcpu                                pass    
 test-amd64-amd64-pair                                        pass    
 test-amd64-i386-pair                                         pass    
 test-amd64-amd64-libvirt-pair                                pass    
 test-amd64-i386-libvirt-pair                                 pass    
 test-amd64-amd64-xl-pvshim                                   pass    
 test-amd64-i386-xl-pvshim                                    fail    
 test-amd64-amd64-pygrub                                      pass    
 test-armhf-armhf-libvirt-qcow2                               pass    
 test-amd64-amd64-xl-qcow2                                    pass    
 test-arm64-arm64-libvirt-raw                                 starved 
 test-armhf-armhf-libvirt-raw                                 pass    
 test-amd64-i386-libvirt-raw                                  pass    
 test-amd64-amd64-xl-rtds                                     pass    
 test-armhf-armhf-xl-rtds                                     pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64-shadow             pass    
 test-amd64-i386-xl-qemuu-debianhvm-amd64-shadow              pass    
 test-amd64-amd64-xl-shadow                                   pass    
 test-amd64-i386-xl-shadow                                    pass    
 test-arm64-arm64-xl-thunderx                                 starved 
 test-amd64-amd64-libvirt-vhd                                 pass    
 test-arm64-arm64-xl-vhd                                      starved 
 test-armhf-armhf-xl-vhd                                      pass    
 test-amd64-i386-xl-vhd                                       pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Pushing revision :

To xenbits.xen.org:/home/xen/git/xen.git
   e7c3d6ceaf..e481fc9f32  e481fc9f32339ebf9ddd171a3995a3e44527d148 -> stable-4.16


From xen-devel-bounces@lists.xenproject.org Wed Jan 31 04:35:24 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 31 Jan 2024 04:35:24 +0000
Received: from list by lists.xenproject.org with outflank-mailman.673734.1048210 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rV2Ji-0005jv-Jg; Wed, 31 Jan 2024 04:35:18 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 673734.1048210; Wed, 31 Jan 2024 04:35:18 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rV2Ji-0005jo-H9; Wed, 31 Jan 2024 04:35:18 +0000
Received: by outflank-mailman (input) for mailman id 673734;
 Wed, 31 Jan 2024 04:35:17 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rV2Jh-0005je-1I; Wed, 31 Jan 2024 04:35:17 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rV2Jg-0002zs-UI; Wed, 31 Jan 2024 04:35:16 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rV2Jg-00083S-FO; Wed, 31 Jan 2024 04:35:16 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rV2Jg-0005Vo-Ej; Wed, 31 Jan 2024 04:35:16 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=Zg3PDA/SHKN5qSC6oXvK/roDPedg3tNxdjmL8IvuA+A=; b=zly8w6HzfI5XsGZW3EdBgdU64Q
	t1EqzQOz9XuPPe6AAM35XQHRm62WLNvdqluqbJyBTGsMFxkw3PO6prUy41SW2HJY7yDL4Qp/RFvth
	UZKhiGGgdAU+G/mehAFELZIK0SSvVCITdF1kQXkD+T+17LoKcgrX6aCPQKXc+gIMrmx8=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184533-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [ovmf test] 184533: all pass - PUSHED
X-Osstest-Versions-This:
    ovmf=909a9a5ae4b8236c1ca7cad7f214c752a579bd67
X-Osstest-Versions-That:
    ovmf=98c7cb3be73d0f15151133abe91bc880a4400794
From: osstest service owner <osstest-admin@xenproject.org>
Date: Wed, 31 Jan 2024 04:35:16 +0000

flight 184533 ovmf real [real]
http://logs.test-lab.xenproject.org/osstest/logs/184533/

Perfect :-)
All tests in this flight passed as required
version targeted for testing:
 ovmf                 909a9a5ae4b8236c1ca7cad7f214c752a579bd67
baseline version:
 ovmf                 98c7cb3be73d0f15151133abe91bc880a4400794

Last test of basis   184522  2024-01-29 22:12:44 Z    1 days
Testing same since   184533  2024-01-30 15:12:47 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Rebecca Cran <rebecca@os.amperecomputing.com>

jobs:
 build-amd64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-amd64-amd64-xl-qemuu-ovmf-amd64                         pass    
 test-amd64-i386-xl-qemuu-ovmf-amd64                          pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Pushing revision :

To xenbits.xen.org:/home/xen/git/osstest/ovmf.git
   98c7cb3be7..909a9a5ae4  909a9a5ae4b8236c1ca7cad7f214c752a579bd67 -> xen-tested-master


From xen-devel-bounces@lists.xenproject.org Wed Jan 31 06:03:03 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 31 Jan 2024 06:03:03 +0000
Received: from list by lists.xenproject.org with outflank-mailman.673743.1048225 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rV3gQ-0000XT-Uf; Wed, 31 Jan 2024 06:02:50 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 673743.1048225; Wed, 31 Jan 2024 06:02:50 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rV3gQ-0000XM-Rr; Wed, 31 Jan 2024 06:02:50 +0000
Received: by outflank-mailman (input) for mailman id 673743;
 Wed, 31 Jan 2024 06:02:48 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rV3gO-0000XA-U6; Wed, 31 Jan 2024 06:02:48 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rV3gO-0005MP-S6; Wed, 31 Jan 2024 06:02:48 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rV3gO-0005xd-G0; Wed, 31 Jan 2024 06:02:48 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rV3gO-0007eS-Ei; Wed, 31 Jan 2024 06:02:48 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=2D340JMNvHJJ0P6fqbiERq2yBQIT4iWoikmYJc8YSsA=; b=3Y9CmzzWeX8XhRlrF8hHs+1cyV
	UuphCVqmY+cmM5O5H22qTrouLGf3MG80m2wxTq3Ecxb9ptSzyFgmjpxhN+r7wzsmuIRUUrKhm1cxa
	jIabvUbPJzBBRgD8SaJ6J/OKgtxXmiHHJ6NuOESk97+vOV24PQRh/b/XYkq+LrsdXsC0=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184529-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [xen-4.15-testing test] 184529: tolerable FAIL - PUSHED
X-Osstest-Failures:
    xen-4.15-testing:test-armhf-armhf-libvirt:saverestore-support-check:fail:nonblocking
    xen-4.15-testing:test-amd64-amd64-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    xen-4.15-testing:test-amd64-amd64-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    xen-4.15-testing:test-amd64-i386-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    xen-4.15-testing:test-armhf-armhf-libvirt-qcow2:saverestore-support-check:fail:nonblocking
    xen-4.15-testing:test-amd64-amd64-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    xen-4.15-testing:test-amd64-amd64-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    xen-4.15-testing:test-amd64-i386-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    xen-4.15-testing:test-armhf-armhf-libvirt-raw:saverestore-support-check:fail:nonblocking
    xen-4.15-testing:test-amd64-amd64-qemuu-nested-amd:debian-hvm-install/l1/l2:fail:nonblocking
    xen-4.15-testing:test-amd64-i386-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    xen-4.15-testing:test-amd64-i386-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    xen-4.15-testing:test-amd64-i386-xl-pvshim:guest-start:fail:nonblocking
    xen-4.15-testing:test-arm64-arm64-xl:migrate-support-check:fail:nonblocking
    xen-4.15-testing:test-arm64-arm64-xl:saverestore-support-check:fail:nonblocking
    xen-4.15-testing:test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    xen-4.15-testing:test-amd64-i386-libvirt-xsm:migrate-support-check:fail:nonblocking
    xen-4.15-testing:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    xen-4.15-testing:test-amd64-amd64-libvirt-xsm:migrate-support-check:fail:nonblocking
    xen-4.15-testing:test-amd64-i386-libvirt:migrate-support-check:fail:nonblocking
    xen-4.15-testing:test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    xen-4.15-testing:test-arm64-arm64-xl-credit1:migrate-support-check:fail:nonblocking
    xen-4.15-testing:test-arm64-arm64-xl-credit1:saverestore-support-check:fail:nonblocking
    xen-4.15-testing:test-arm64-arm64-xl-credit2:migrate-support-check:fail:nonblocking
    xen-4.15-testing:test-arm64-arm64-xl-credit2:saverestore-support-check:fail:nonblocking
    xen-4.15-testing:test-arm64-arm64-xl-thunderx:migrate-support-check:fail:nonblocking
    xen-4.15-testing:test-arm64-arm64-xl-thunderx:saverestore-support-check:fail:nonblocking
    xen-4.15-testing:test-arm64-arm64-xl-xsm:migrate-support-check:fail:nonblocking
    xen-4.15-testing:test-arm64-arm64-xl-xsm:saverestore-support-check:fail:nonblocking
    xen-4.15-testing:test-arm64-arm64-libvirt-xsm:migrate-support-check:fail:nonblocking
    xen-4.15-testing:test-arm64-arm64-libvirt-xsm:saverestore-support-check:fail:nonblocking
    xen-4.15-testing:test-amd64-i386-libvirt-raw:migrate-support-check:fail:nonblocking
    xen-4.15-testing:test-armhf-armhf-xl:migrate-support-check:fail:nonblocking
    xen-4.15-testing:test-armhf-armhf-xl:saverestore-support-check:fail:nonblocking
    xen-4.15-testing:test-armhf-armhf-xl-arndale:migrate-support-check:fail:nonblocking
    xen-4.15-testing:test-armhf-armhf-xl-credit2:migrate-support-check:fail:nonblocking
    xen-4.15-testing:test-armhf-armhf-xl-arndale:saverestore-support-check:fail:nonblocking
    xen-4.15-testing:test-armhf-armhf-xl-credit2:saverestore-support-check:fail:nonblocking
    xen-4.15-testing:test-armhf-armhf-xl-multivcpu:migrate-support-check:fail:nonblocking
    xen-4.15-testing:test-armhf-armhf-xl-multivcpu:saverestore-support-check:fail:nonblocking
    xen-4.15-testing:test-armhf-armhf-xl-vhd:migrate-support-check:fail:nonblocking
    xen-4.15-testing:test-armhf-armhf-xl-vhd:saverestore-support-check:fail:nonblocking
    xen-4.15-testing:test-armhf-armhf-libvirt:migrate-support-check:fail:nonblocking
    xen-4.15-testing:test-armhf-armhf-xl-rtds:migrate-support-check:fail:nonblocking
    xen-4.15-testing:test-armhf-armhf-xl-rtds:saverestore-support-check:fail:nonblocking
    xen-4.15-testing:test-amd64-amd64-libvirt-vhd:migrate-support-check:fail:nonblocking
    xen-4.15-testing:test-armhf-armhf-xl-credit1:migrate-support-check:fail:nonblocking
    xen-4.15-testing:test-armhf-armhf-xl-credit1:saverestore-support-check:fail:nonblocking
    xen-4.15-testing:test-arm64-arm64-libvirt-raw:migrate-support-check:fail:nonblocking
    xen-4.15-testing:test-arm64-arm64-libvirt-raw:saverestore-support-check:fail:nonblocking
    xen-4.15-testing:test-arm64-arm64-xl-vhd:migrate-support-check:fail:nonblocking
    xen-4.15-testing:test-arm64-arm64-xl-vhd:saverestore-support-check:fail:nonblocking
    xen-4.15-testing:test-armhf-armhf-libvirt-qcow2:migrate-support-check:fail:nonblocking
    xen-4.15-testing:test-armhf-armhf-libvirt-raw:migrate-support-check:fail:nonblocking
X-Osstest-Versions-This:
    xen=dfafb3ec959b20307d4c640a48b3b55a2896ac30
X-Osstest-Versions-That:
    xen=6400013f07e5c7fec9f68821755aed94683b663c
From: osstest service owner <osstest-admin@xenproject.org>
Date: Wed, 31 Jan 2024 06:02:48 +0000

flight 184529 xen-4.15-testing real [real]
http://logs.test-lab.xenproject.org/osstest/logs/184529/

Failures :-/ but no regressions.

Tests which did not succeed, but are not blocking:
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 184107
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 184107
 test-amd64-amd64-xl-qemut-win7-amd64 19 guest-stop            fail like 184107
 test-amd64-i386-xl-qemut-win7-amd64 19 guest-stop             fail like 184107
 test-armhf-armhf-libvirt-qcow2 15 saverestore-support-check   fail like 184107
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 184107
 test-amd64-amd64-xl-qemut-ws16-amd64 19 guest-stop            fail like 184107
 test-amd64-i386-xl-qemuu-ws16-amd64 19 guest-stop             fail like 184107
 test-armhf-armhf-libvirt-raw 15 saverestore-support-check    fail  like 184107
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 184107
 test-amd64-i386-xl-qemuu-win7-amd64 19 guest-stop             fail like 184107
 test-amd64-i386-xl-qemut-ws16-amd64 19 guest-stop             fail like 184107
 test-amd64-i386-xl-pvshim    14 guest-start                  fail   never pass
 test-arm64-arm64-xl          15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl          16 saverestore-support-check    fail   never pass
 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-amd64-i386-libvirt-xsm  15 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt     15 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-amd64-i386-libvirt      15 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-arm64-arm64-xl-credit1  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit1  16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-credit2  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit2  16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-thunderx 15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-thunderx 16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-xsm      15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-xsm      16 saverestore-support-check    fail   never pass
 test-arm64-arm64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-xsm 16 saverestore-support-check    fail   never pass
 test-amd64-i386-libvirt-raw  14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-arndale  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit2  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-arndale  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-credit2  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-multivcpu 15 migrate-support-check        fail  never pass
 test-armhf-armhf-xl-multivcpu 16 saverestore-support-check    fail  never pass
 test-armhf-armhf-xl-vhd      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-rtds     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-rtds     16 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-vhd 14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit1  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit1  16 saverestore-support-check    fail   never pass
 test-arm64-arm64-libvirt-raw 14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 15 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-vhd      14 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-vhd      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-qcow2 14 migrate-support-check        fail never pass
 test-armhf-armhf-libvirt-raw 14 migrate-support-check        fail   never pass

version targeted for testing:
 xen                  dfafb3ec959b20307d4c640a48b3b55a2896ac30
baseline version:
 xen                  6400013f07e5c7fec9f68821755aed94683b663c

Last test of basis   184107  2023-12-12 14:06:52 Z   49 days
Testing same since   184529  2024-01-30 14:06:47 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Roger Pau Monné <roger.pau@citrix.com>

jobs:
 build-amd64-xsm                                              pass    
 build-arm64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64-xtf                                              pass    
 build-amd64                                                  pass    
 build-arm64                                                  pass    
 build-armhf                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-arm64-libvirt                                          pass    
 build-armhf-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-prev                                             pass    
 build-i386-prev                                              pass    
 build-amd64-pvops                                            pass    
 build-arm64-pvops                                            pass    
 build-armhf-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-xtf-amd64-amd64-1                                       pass    
 test-xtf-amd64-amd64-2                                       pass    
 test-xtf-amd64-amd64-3                                       pass    
 test-xtf-amd64-amd64-4                                       pass    
 test-xtf-amd64-amd64-5                                       pass    
 test-amd64-amd64-xl                                          pass    
 test-amd64-coresched-amd64-xl                                pass    
 test-arm64-arm64-xl                                          pass    
 test-armhf-armhf-xl                                          pass    
 test-amd64-i386-xl                                           pass    
 test-amd64-coresched-i386-xl                                 pass    
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm           pass    
 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm            pass    
 test-amd64-amd64-xl-qemut-stubdom-debianhvm-amd64-xsm        pass    
 test-amd64-i386-xl-qemut-stubdom-debianhvm-amd64-xsm         pass    
 test-amd64-amd64-xl-qemut-debianhvm-i386-xsm                 pass    
 test-amd64-i386-xl-qemut-debianhvm-i386-xsm                  pass    
 test-amd64-amd64-xl-qemuu-debianhvm-i386-xsm                 pass    
 test-amd64-i386-xl-qemuu-debianhvm-i386-xsm                  pass    
 test-amd64-amd64-libvirt-xsm                                 pass    
 test-arm64-arm64-libvirt-xsm                                 pass    
 test-amd64-i386-libvirt-xsm                                  pass    
 test-amd64-amd64-xl-xsm                                      pass    
 test-arm64-arm64-xl-xsm                                      pass    
 test-amd64-i386-xl-xsm                                       pass    
 test-amd64-amd64-qemuu-nested-amd                            fail    
 test-amd64-amd64-xl-pvhv2-amd                                pass    
 test-amd64-i386-qemut-rhel6hvm-amd                           pass    
 test-amd64-i386-qemuu-rhel6hvm-amd                           pass    
 test-amd64-amd64-dom0pvh-xl-amd                              pass    
 test-amd64-amd64-xl-qemut-debianhvm-amd64                    pass    
 test-amd64-i386-xl-qemut-debianhvm-amd64                     pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64                    pass    
 test-amd64-i386-xl-qemuu-debianhvm-amd64                     pass    
 test-amd64-i386-freebsd10-amd64                              pass    
 test-amd64-amd64-qemuu-freebsd11-amd64                       pass    
 test-amd64-amd64-qemuu-freebsd12-amd64                       pass    
 test-amd64-amd64-xl-qemuu-ovmf-amd64                         pass    
 test-amd64-i386-xl-qemuu-ovmf-amd64                          pass    
 test-amd64-amd64-xl-qemut-win7-amd64                         fail    
 test-amd64-i386-xl-qemut-win7-amd64                          fail    
 test-amd64-amd64-xl-qemuu-win7-amd64                         fail    
 test-amd64-i386-xl-qemuu-win7-amd64                          fail    
 test-amd64-amd64-xl-qemut-ws16-amd64                         fail    
 test-amd64-i386-xl-qemut-ws16-amd64                          fail    
 test-amd64-amd64-xl-qemuu-ws16-amd64                         fail    
 test-amd64-i386-xl-qemuu-ws16-amd64                          fail    
 test-armhf-armhf-xl-arndale                                  pass    
 test-amd64-amd64-xl-credit1                                  pass    
 test-arm64-arm64-xl-credit1                                  pass    
 test-armhf-armhf-xl-credit1                                  pass    
 test-amd64-amd64-xl-credit2                                  pass    
 test-arm64-arm64-xl-credit2                                  pass    
 test-armhf-armhf-xl-credit2                                  pass    
 test-amd64-amd64-xl-qemuu-dmrestrict-amd64-dmrestrict        pass    
 test-amd64-i386-xl-qemuu-dmrestrict-amd64-dmrestrict         pass    
 test-amd64-i386-freebsd10-i386                               pass    
 test-amd64-amd64-qemuu-nested-intel                          pass    
 test-amd64-amd64-xl-pvhv2-intel                              pass    
 test-amd64-i386-qemut-rhel6hvm-intel                         pass    
 test-amd64-i386-qemuu-rhel6hvm-intel                         pass    
 test-amd64-amd64-dom0pvh-xl-intel                            pass    
 test-amd64-amd64-libvirt                                     pass    
 test-armhf-armhf-libvirt                                     pass    
 test-amd64-i386-libvirt                                      pass    
 test-amd64-amd64-livepatch                                   pass    
 test-amd64-i386-livepatch                                    pass    
 test-amd64-amd64-migrupgrade                                 pass    
 test-amd64-i386-migrupgrade                                  pass    
 test-amd64-amd64-xl-multivcpu                                pass    
 test-armhf-armhf-xl-multivcpu                                pass    
 test-amd64-amd64-pair                                        pass    
 test-amd64-i386-pair                                         pass    
 test-amd64-amd64-libvirt-pair                                pass    
 test-amd64-i386-libvirt-pair                                 pass    
 test-amd64-amd64-xl-pvshim                                   pass    
 test-amd64-i386-xl-pvshim                                    fail    
 test-amd64-amd64-pygrub                                      pass    
 test-armhf-armhf-libvirt-qcow2                               pass    
 test-amd64-amd64-xl-qcow2                                    pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-armhf-armhf-libvirt-raw                                 pass    
 test-amd64-i386-libvirt-raw                                  pass    
 test-amd64-amd64-xl-rtds                                     pass    
 test-armhf-armhf-xl-rtds                                     pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64-shadow             pass    
 test-amd64-i386-xl-qemuu-debianhvm-amd64-shadow              pass    
 test-amd64-amd64-xl-shadow                                   pass    
 test-amd64-i386-xl-shadow                                    pass    
 test-arm64-arm64-xl-thunderx                                 pass    
 test-amd64-amd64-libvirt-vhd                                 pass    
 test-arm64-arm64-xl-vhd                                      pass    
 test-armhf-armhf-xl-vhd                                      pass    
 test-amd64-i386-xl-vhd                                       pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Pushing revision :

To xenbits.xen.org:/home/xen/git/xen.git
   6400013f07..dfafb3ec95  dfafb3ec959b20307d4c640a48b3b55a2896ac30 -> stable-4.15


From xen-devel-bounces@lists.xenproject.org Wed Jan 31 07:58:26 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 31 Jan 2024 07:58:26 +0000
Received: from list by lists.xenproject.org with outflank-mailman.673785.1048251 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rV5U3-0006Sw-Ls; Wed, 31 Jan 2024 07:58:11 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 673785.1048251; Wed, 31 Jan 2024 07:58:11 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rV5U3-0006Sp-JG; Wed, 31 Jan 2024 07:58:11 +0000
Received: by outflank-mailman (input) for mailman id 673785;
 Wed, 31 Jan 2024 07:58:10 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=6ZVD=JJ=arm.com=Bertrand.Marquis@srs-se1.protection.inumbo.net>)
 id 1rV5U2-0006Sj-RR
 for xen-devel@lists.xenproject.org; Wed, 31 Jan 2024 07:58:10 +0000
Received: from EUR03-AM7-obe.outbound.protection.outlook.com
 (mail-am7eur03on20601.outbound.protection.outlook.com
 [2a01:111:f403:260e::601])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 79659d50-c00e-11ee-8a43-1f161083a0e0;
 Wed, 31 Jan 2024 08:58:09 +0100 (CET)
Received: from AM8P191CA0027.EURP191.PROD.OUTLOOK.COM (2603:10a6:20b:21a::32)
 by GV1PR08MB10502.eurprd08.prod.outlook.com (2603:10a6:150:16b::8)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7249.23; Wed, 31 Jan
 2024 07:58:05 +0000
Received: from AMS0EPF000001A9.eurprd05.prod.outlook.com
 (2603:10a6:20b:21a:cafe::47) by AM8P191CA0027.outlook.office365.com
 (2603:10a6:20b:21a::32) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7228.34 via Frontend
 Transport; Wed, 31 Jan 2024 07:58:05 +0000
Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by
 AMS0EPF000001A9.mail.protection.outlook.com (10.167.16.149) with
 Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.7249.19 via Frontend Transport; Wed, 31 Jan 2024 07:58:05 +0000
Received: ("Tessian outbound a064b9944658:v228");
 Wed, 31 Jan 2024 07:58:04 +0000
Received: from e7fc7dd6f6c5.1
 by 64aa7808-outbound-1.mta.getcheckrecipient.com id
 6008D822-EBC1-4630-899A-1D6DE885607F.1; 
 Wed, 31 Jan 2024 07:57:57 +0000
Received: from EUR02-VI1-obe.outbound.protection.outlook.com
 by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id e7fc7dd6f6c5.1
 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384);
 Wed, 31 Jan 2024 07:57:57 +0000
Received: from DB9PR08MB6588.eurprd08.prod.outlook.com (2603:10a6:10:25a::24)
 by GV2PR08MB9399.eurprd08.prod.outlook.com (2603:10a6:150:df::13)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7249.24; Wed, 31 Jan
 2024 07:57:41 +0000
Received: from DB9PR08MB6588.eurprd08.prod.outlook.com
 ([fe80::2257:5fcb:b449:fff0]) by DB9PR08MB6588.eurprd08.prod.outlook.com
 ([fe80::2257:5fcb:b449:fff0%7]) with mapi id 15.20.7228.029; Wed, 31 Jan 2024
 07:57:41 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 79659d50-c00e-11ee-8a43-1f161083a0e0
ARC-Seal: i=2; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=pass;
 b=MRT34i6NzN5Z/Ysi25Pgjne6frJNPeaFo8D7lRMOjvmSScxeqv99BOiYvVSdUKXO+Owz1yhGyeEpdtNmg1qC+6fJolKUgVe7MlnCqICW8m+jXCSgZODMj+PPoLEYEhpEjvXKRb11+fQsBfx2C1ZIQoS2Z3k/ARO6PB2QJ0TP8aGQhsTy/pNvrVySW2mWn6syV6GfLuZLB4lG2MmeVSnlt/Ur/spVZE/X4W6f6R7WkN1Vcs863j4NhIUeSfZTWJhPLHV9kH518ETR6gkm0KgnS9N/bBPrVLf+RfHiQbmNzcl4Nz0N0U4kqz6GOieA80w0ieE2rPx783vsh2xJZl0Baw==
ARC-Message-Signature: i=2; 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=iyg6TwBFORyPI49bh74f6ruCgePYH00SbmdfUiNfFSQ=;
 b=CK3sRGmgrB5JeMRM5/r6nxJbFzB5pHS09A9weM881coUMKY4RNDqmpgtdL9H/fKEYbZkkQyskEQanwShjrttpE8OKUvCuRKB6xGXwsFKtGd0j5IVW+xEQprjV+Ym8bSaok/chihJhl9pHUqcMVbVoYAri4VaEGU/GoGpYdu43gMd40OL2KibiP/2FZdSn2IWn9nHmOcPnpVcckg+KhZzqnpnuH3vXKDqyKne0ENOphvOzW9C1WDVkR2wT83fBQ6rEjOgos7nIV1rY8gdFLEl9jrFfdSEFnIntvwzs7JZj80+ct0N+WvZc6AoteSdpelRpD740uHSpqYTzlcKzBvvIg==
ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is
 63.35.35.123) smtp.rcpttodomain=lists.xenproject.org smtp.mailfrom=arm.com;
 dmarc=pass (p=none sp=none pct=100) action=none header.from=arm.com;
 dkim=pass (signature was verified) header.d=armh.onmicrosoft.com; arc=pass (0
 oda=1 ltdi=1 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com]
 dmarc=[1,1,header.from=arm.com])
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com;
 s=selector2-armh-onmicrosoft-com;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=iyg6TwBFORyPI49bh74f6ruCgePYH00SbmdfUiNfFSQ=;
 b=G7ExOFDyJ3w/bc2mA2wRT/rs0PBt6b83OL5kA4XuUSBSnH70gHIrNOcECF6N3qXEjqbTbWoY+Q9ihBMMPFfSf+gC/WTmhySdOXbjiV42k604v62UikTnqcZR5a6waQfFiI/pLeASM3VVs5yndomDF6ZQyKPNPb2RJjPv2VJettw=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 63.35.35.123)
 smtp.mailfrom=arm.com; dkim=pass (signature was verified)
 header.d=armh.onmicrosoft.com;dmarc=pass action=none header.from=arm.com;
Received-SPF: Pass (protection.outlook.com: domain of arm.com designates
 63.35.35.123 as permitted sender) receiver=protection.outlook.com;
 client-ip=63.35.35.123; helo=64aa7808-outbound-1.mta.getcheckrecipient.com;
 pr=C
X-CheckRecipientChecked: true
X-CR-MTA-CID: 11dc0bd2db39e170
X-CR-MTA-TID: 64aa7808
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=CgSsVTm8x1IeW2VHK0HWmODPBkljxfjXcI5955n59U+77u8YlHpSzVTAJ38Gxtm9o24bwr2Wykmq+QR7OFOng5RqiSutZYJRtGOxu6UJLzRUvNTIPibTi6jhze30DxkyRlUmL24w3oFmM9hhqN/tbsfI+uf1IpvyJvwXgpDTC3uGetpjbx3K6UVyS6oIzQ3zVoSec24rf0pt6EGHHtEoAuZpew2PMNHpsgEGxGnEyRr6Y/tNQLS7sr5Xr02aD1UXwP6cP1weP1So8ElEzZnuszO+TRwrZ+SlQQKryKR5YKWgaYN0+02mL1mdT0S8ezdyKQ8Lp8UOy+Yul6MEByO1dw==
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=iyg6TwBFORyPI49bh74f6ruCgePYH00SbmdfUiNfFSQ=;
 b=ercjPNM/hrE/KaZksGmYOIM5S4GjnkphQT45Hu9cRC/Nu1ishAtnSc916v50qUR0FdGKItam76l9VjbvlI9aKJUGOWgvR1uzKn+3UroJq4nam1rnKN+Gq7x+iNopjrEb6+3UD7QEJxWqixhB+5oqeMF8/TN5ZhpOoovAYI808gcY9oo7Eh42twVz6M2FZKlMuk7qx5ND6tP6jvJw0ZOdj2mkazQgd6y5vlFbLQ8/6aKXDHqq65oMnCIneP1QTAjmj1JT/RbtQx5bYroxQDJyfqJUovvqlvxVB73nPOwmXDY1nnFHEaB4G8qNPchkdHj5EGp90ph+MPr/MpznlGwZAw==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass
 header.d=arm.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com;
 s=selector2-armh-onmicrosoft-com;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=iyg6TwBFORyPI49bh74f6ruCgePYH00SbmdfUiNfFSQ=;
 b=G7ExOFDyJ3w/bc2mA2wRT/rs0PBt6b83OL5kA4XuUSBSnH70gHIrNOcECF6N3qXEjqbTbWoY+Q9ihBMMPFfSf+gC/WTmhySdOXbjiV42k604v62UikTnqcZR5a6waQfFiI/pLeASM3VVs5yndomDF6ZQyKPNPb2RJjPv2VJettw=
From: Bertrand Marquis <Bertrand.Marquis@arm.com>
To: Julien Grall <julien@xen.org>
CC: Xen-devel <xen-devel@lists.xenproject.org>, Julien Grall
	<jgrall@amazon.com>, Stefano Stabellini <sstabellini@kernel.org>, Michal
 Orzel <michal.orzel@amd.com>, Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
	Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>
Subject: Re: [PATCH] xen/arm: Properly clean update to init_ttbr and
 smp_up_cpu
Thread-Topic: [PATCH] xen/arm: Properly clean update to init_ttbr and
 smp_up_cpu
Thread-Index: AQHaU6HzSvigBwHs9EiZEUauSjpcEbDzjwMA
Date: Wed, 31 Jan 2024 07:57:41 +0000
Message-ID: <0D96C966-8DC4-43C5-9F61-0C54A2DC796C@arm.com>
References: <20240130172942.52175-1-julien@xen.org>
In-Reply-To: <20240130172942.52175-1-julien@xen.org>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-mailer: Apple Mail (2.3774.200.91.1.1)
Authentication-Results-Original: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=arm.com;
x-ms-traffictypediagnostic:
	DB9PR08MB6588:EE_|GV2PR08MB9399:EE_|AMS0EPF000001A9:EE_|GV1PR08MB10502:EE_
X-MS-Office365-Filtering-Correlation-Id: 323e06da-7aaa-472a-9e6d-08dc22325b1c
x-checkrecipientrouted: true
nodisclaimer: true
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam-Untrusted: BCL:0;
X-Microsoft-Antispam-Message-Info-Original:
 3mMeELIbXMvO672GkHHGukdh42/FbYe3cg67QWUWl8TOgGM/mpb/nclPOLV92tA5OPSpay6oj4oPguZ1CdPjfU8RphwKP+Va/CB++/dM8RC+3EhKep7YXgBREMgDu/RIChOztggqSrkW68b82a1PPKK9vjX2dDc8QydOYuBXWRxhey3yHQsO4ns/cG/xrK1c/gCx1EsJIgXIVDbmh0AD3Rd1Ymhi983NiexlIGdOT+1yxiUo6NdwwOzBh8wc8q2yPDEXGPGJPBsjCVKWe5R7/TBqZV+kuDSkv0ISkW8f0/DcWxIp0zXLUpkYi4PipMKJY5WcL5o/vCHi8xHWW05YpFdliTlX6oxL/0uPfMs+frm5rg+Qf5oXACfu+BrNbF81ympgGFxMpZ066pXl+wty+MCrWNyS8LEyMRCknGjTCjFiL2uUdyY2RwEWc1oa8Dx/1nlr2hRaO4lls9ChMEEm3dUvlVD2l/AWIe6igTYuPvNKGBQUKf5beHUzwrn0dHHl3b18Ls6OI0KowZpkHRm7OBKK6zBchX3l8+lZ1BmVH+fLYxHG/0+q7lO1Ks1NNhGK7JJO8TJ+y84TWKF41Wnews8sZePWO27jAhFxx5Zj3lxvmwlXMNVagy/uLgC+0DM2Q5oq8mlhJJEnK9016rbMHA==
X-Forefront-Antispam-Report-Untrusted:
 CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DB9PR08MB6588.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230031)(39860400002)(346002)(396003)(136003)(366004)(376002)(230922051799003)(451199024)(64100799003)(1800799012)(186009)(316002)(66556008)(66446008)(66476007)(66946007)(6916009)(64756008)(122000001)(15650500001)(2906002)(54906003)(8936002)(36756003)(4326008)(8676002)(6512007)(38070700009)(86362001)(76116006)(5660300002)(33656002)(38100700002)(83380400001)(2616005)(71200400001)(6486002)(6506007)(41300700001)(478600001)(53546011)(45980500001);DIR:OUT;SFP:1101;
Content-Type: text/plain; charset="us-ascii"
Content-ID: <69E8FA110D5B054795E5DD3CCD97F649@eurprd08.prod.outlook.com>
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-MS-Exchange-Transport-CrossTenantHeadersStamped: GV2PR08MB9399
Original-Authentication-Results: dkim=none (message not signed)
 header.d=none;dmarc=none action=none header.from=arm.com;
X-EOPAttributedMessage: 0
X-MS-Exchange-Transport-CrossTenantHeadersStripped:
 AMS0EPF000001A9.eurprd05.prod.outlook.com
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id-Prvs:
	d49f4b2a-4797-4d5b-0d01-08dc22324cb4
X-Microsoft-Antispam: BCL:0;
X-Microsoft-Antispam-Message-Info:
	jyXrX1pW6s/hz4X2l+WHMb/ShSEPeKJt97P25As1ozTxIJGg5HzWQLRgIGMI0Ni/uPAYyd+2cBTIgPk5kh/cY+hcIzYdv6ZU0FQNmjdUDyfjxAHJgYp3d4jfkMfjWpJAdTYTBgIerJSR1L6ViT6Rg5Ibmyg/eO1eKw6FBj02RiPIFhidlT9ECbwp2s8G8O+tJvHixedYyDOgLcjRL6XjYqaWjDIJ6nuNVpm/OltdFWlOGr+cmhrwVYCnpSU/N1p7DuDyugeQwY36pSPylcCd4CAkIhXRcprp33QtALGPLqpG1IRqxCsUA9Aau0JV2150G7ib8Rxtmbsd24Pq9OF7WHNhrRYk+dNNM4uOPgtszhBKynBvHfcQnyivdDBayeuKnMRr6E36vC8Q87ediICW3N9v/TuQXb8Ih0Sv0hQFebSN1DuiRiRIxNCi06+4J4s6DdtX7QX2asM9sANx07IjNKB0gtB11B+D2asqcaggo1NoiDl+ZakPmN7ZW9u/67JM5xZxWlHfoK3xhrpUVY1sW4XCD9JNehwnAjFpxnE/chItaA2fH3u8oIHeh21Pz9rTxdl9Q3B4mfMVAyr6I/y6h9ALLFqib5qFPe+PswkUaUM9YG315P1w2duTPB+0RXjZfX3AaZbgtfbZOLPxzP/EomOBAyqyC9zPvTW+Uf8MEie3/lGMq4U9gYfQaAJMJy999Lg0k+iIhw033o+RsIfa5qIJ8Mj10UAgNwh2IXJ7P9/4/2xi6LbuaFNwzpd/VY3p
X-Forefront-Antispam-Report:
	CIP:63.35.35.123;CTRY:IE;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:64aa7808-outbound-1.mta.getcheckrecipient.com;PTR:ec2-63-35-35-123.eu-west-1.compute.amazonaws.com;CAT:NONE;SFS:(13230031)(4636009)(346002)(39860400002)(396003)(376002)(136003)(230922051799003)(186009)(64100799003)(82310400011)(1800799012)(451199024)(40470700004)(46966006)(36840700001)(336012)(107886003)(26005)(2616005)(40460700003)(40480700001)(41300700001)(36860700001)(316002)(36756003)(54906003)(478600001)(6512007)(6506007)(53546011)(83380400001)(6486002)(47076005)(356005)(82740400003)(81166007)(8936002)(5660300002)(33656002)(15650500001)(2906002)(70206006)(70586007)(86362001)(4326008)(8676002)(6862004);DIR:OUT;SFP:1101;
X-OriginatorOrg: arm.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 31 Jan 2024 07:58:05.1610
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 323e06da-7aaa-472a-9e6d-08dc22325b1c
X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[63.35.35.123];Helo=[64aa7808-outbound-1.mta.getcheckrecipient.com]
X-MS-Exchange-CrossTenant-AuthSource:
	AMS0EPF000001A9.eurprd05.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: GV1PR08MB10502

Hi Julien,

Nice finding :-)

> On 30 Jan 2024, at 18:29, Julien Grall <julien@xen.org> wrote:
>=20
> From: Julien Grall <jgrall@amazon.com>
>=20
> Recent rework to the secondary boot code modified how init_ttbr and
> smp_up_cpu are accessed. Rather than directly accessing them, we
> are using a pointer to them.
>=20
> The helper clean_dcache() is expected to take the variable in parameter
> and then clean its content. As we now pass a pointer to the variable,
> we will clean the area storing the address rather than the content itself=
.
>=20
> Switch to use clean_dcache_va_range() to avoid casting the pointer.
>=20
> Fixes: a5ed59e62c6f ("arm/mmu: Move init_ttbr to a new section .data.idma=
p")
> Fixes: 9a5114074b04 ("arm/smpboot: Move smp_up_cpu to a new section .data=
.idmap)
>=20
> Reported-by: Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>
> Signed-off-by: Julien Grall <jgrall@amazon.com>

Reviewed-by: Bertrand Marquis <bertrand.marquis@arm.com>

Cheers
Bertrand

> ---
> xen/arch/arm/mmu/smpboot.c | 2 +-
> xen/arch/arm/smpboot.c     | 2 +-
> 2 files changed, 2 insertions(+), 2 deletions(-)
>=20
> diff --git a/xen/arch/arm/mmu/smpboot.c b/xen/arch/arm/mmu/smpboot.c
> index bc91fdfe3331..4ffc8254a44b 100644
> --- a/xen/arch/arm/mmu/smpboot.c
> +++ b/xen/arch/arm/mmu/smpboot.c
> @@ -88,7 +88,7 @@ static void set_init_ttbr(lpae_t *root)
>      * init_ttbr will be accessed with the MMU off, so ensure the update
>      * is visible by cleaning the cache.
>      */
> -    clean_dcache(ptr);
> +    clean_dcache_va_range(ptr, sizeof(uint64_t));
>=20
>     unmap_domain_page(ptr);
> }
> diff --git a/xen/arch/arm/smpboot.c b/xen/arch/arm/smpboot.c
> index 119bfa3160ad..a84e706d77da 100644
> --- a/xen/arch/arm/smpboot.c
> +++ b/xen/arch/arm/smpboot.c
> @@ -449,7 +449,7 @@ static void set_smp_up_cpu(unsigned long mpidr)
>      * smp_up_cpu will be accessed with the MMU off, so ensure the update
>      * is visible by cleaning the cache.
>      */
> -    clean_dcache(ptr);
> +    clean_dcache_va_range(ptr, sizeof(unsigned long));
>=20
>     unmap_domain_page(ptr);
>=20
> --=20
> 2.40.1
>=20



From xen-devel-bounces@lists.xenproject.org Wed Jan 31 08:19:32 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 31 Jan 2024 08:19:32 +0000
Received: from list by lists.xenproject.org with outflank-mailman.673821.1048278 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rV5od-0002pg-2U; Wed, 31 Jan 2024 08:19:27 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 673821.1048278; Wed, 31 Jan 2024 08:19:27 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rV5oc-0002pZ-UR; Wed, 31 Jan 2024 08:19:26 +0000
Received: by outflank-mailman (input) for mailman id 673821;
 Wed, 31 Jan 2024 08:19:25 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=Rz60=JJ=bugseng.com=federico.serafini@srs-se1.protection.inumbo.net>)
 id 1rV5ob-0002pL-Gr
 for xen-devel@lists.xenproject.org; Wed, 31 Jan 2024 08:19:25 +0000
Received: from support.bugseng.com (mail.bugseng.com [162.55.131.47])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 708f46f9-c011-11ee-98f5-efadbce2ee36;
 Wed, 31 Jan 2024 09:19:23 +0100 (CET)
Received: from [192.168.1.27] (unknown [79.43.49.110])
 by support.bugseng.com (Postfix) with ESMTPSA id 6E7164EE0737;
 Wed, 31 Jan 2024 09:19:22 +0100 (CET)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 708f46f9-c011-11ee-98f5-efadbce2ee36
Message-ID: <e980ede6-b6bd-4ce8-acf3-ecee2698b0ee@bugseng.com>
Date: Wed, 31 Jan 2024 09:19:21 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [XEN PATCH v2 0/3] Introduce and use STATIC_ASSERT_UNREACHABLE()
To: xen-devel@lists.xenproject.org
Cc: consulting@bugseng.com, Andrew Cooper <andrew.cooper3@citrix.com>,
 George Dunlap <george.dunlap@citrix.com>, Jan Beulich <jbeulich@suse.com>,
 Julien Grall <julien@xen.org>, Stefano Stabellini <sstabellini@kernel.org>,
 Wei Liu <wl@xen.org>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger.pau@citrix.com>, Simone Ballarin <simone.ballarin@bugseng.com>,
 Doug Goldstein <cardoe@cardoe.com>
References: <cover.1706259490.git.federico.serafini@bugseng.com>
Content-Language: en-US, it
From: Federico Serafini <federico.serafini@bugseng.com>
Organization: BUGSENG srl
In-Reply-To: <cover.1706259490.git.federico.serafini@bugseng.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

On 26/01/24 11:05, Federico Serafini wrote:
> Introduce macro STATIC_ASSERT_UNREACHABLE(),
> use it to replace __{get,put}_user_bad(),
> update ECLAIR configuration to allow the use of such macro at the end of
> switch-caluses.
> 
> Federico Serafini (3):
>    xen: introduce STATIC_ASSERT_UNREACHABLE()
>    x86/uaccess: replace __{get,put}_user_bad() with
>      STATIC_ASSERT_UNREACHABLE()
>    automation/eclair: add deviation for MISRA C:2012 Rule 16.3
> 
>   automation/eclair_analysis/ECLAIR/deviations.ecl | 4 ++++
>   docs/misra/deviations.rst                        | 5 +++++
>   xen/arch/x86/include/asm/uaccess.h               | 7 ++-----
>   xen/include/xen/compiler.h                       | 7 +++++++
>   4 files changed, 18 insertions(+), 5 deletions(-)
> 

Hello everyone,

do you have any comments on this series?

-- 
Federico Serafini, M.Sc.

Software Engineer, BUGSENG (http://bugseng.com)


From xen-devel-bounces@lists.xenproject.org Wed Jan 31 08:58:36 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 31 Jan 2024 08:58:36 +0000
Received: from list by lists.xenproject.org with outflank-mailman.673827.1048287 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rV6QI-0002J8-VS; Wed, 31 Jan 2024 08:58:22 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 673827.1048287; Wed, 31 Jan 2024 08:58:22 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rV6QI-0002J1-Sj; Wed, 31 Jan 2024 08:58:22 +0000
Received: by outflank-mailman (input) for mailman id 673827;
 Wed, 31 Jan 2024 08:58:22 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=CJWf=JJ=cloud.com=roger.pau@srs-se1.protection.inumbo.net>)
 id 1rV6QH-0002It-Vw
 for xen-devel@lists.xenproject.org; Wed, 31 Jan 2024 08:58:22 +0000
Received: from mail-wr1-x436.google.com (mail-wr1-x436.google.com
 [2a00:1450:4864:20::436])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id e1de8cac-c016-11ee-8a43-1f161083a0e0;
 Wed, 31 Jan 2024 09:58:20 +0100 (CET)
Received: by mail-wr1-x436.google.com with SMTP id
 ffacd0b85a97d-33b029a1c8aso230101f8f.1
 for <xen-devel@lists.xenproject.org>; Wed, 31 Jan 2024 00:58:20 -0800 (PST)
Received: from localhost ([213.195.118.74]) by smtp.gmail.com with ESMTPSA id
 d15-20020adfa34f000000b0033ae9f1fb82sm8527367wrb.48.2024.01.31.00.58.19
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 31 Jan 2024 00:58:20 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: e1de8cac-c016-11ee-8a43-1f161083a0e0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1706691500; x=1707296300; darn=lists.xenproject.org;
        h=in-reply-to:content-transfer-encoding:content-disposition
         :mime-version:references:message-id:subject:cc:to:from:date:from:to
         :cc:subject:date:message-id:reply-to;
        bh=qh9fV0VJ5xXDNHxQ7wqQ2X7g1MNe9pqa0fEzuyTcdc4=;
        b=G7XD2aEF6v3l31i1zXnJLOt3BPK6n1ILEARinnOKHLYZx2ZErjIa7ZJxHbnIqrhfXm
         eW0pB0W/f3OpYMuPl8lNpzzJrhBGRIU0j9htxIJ0Z3i40fYqq/6RYqqx6OlCv3pOzj4j
         uv7QS6zx/IbZ59EnzhKx5ID+ecbkmAqOhL7mw=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706691500; x=1707296300;
        h=in-reply-to:content-transfer-encoding:content-disposition
         :mime-version:references:message-id:subject:cc:to:from:date
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=qh9fV0VJ5xXDNHxQ7wqQ2X7g1MNe9pqa0fEzuyTcdc4=;
        b=it6iC9eEf3yqnwOqeR5iWvUAPGomL5b0J41dTgZxkXkHNQ1E8/1R79JnermZxNhOaD
         Y36/Ip+dqM+Z9oXnbxKp+eQUjJW9NOmD1lLzLZ1jA2aQ4JLdO9840AVNL3dTwytoD0cL
         5vNejAAsW7CHsEnhXGhTLNMWINwcAzJn/jVQLCdVhzcC/NdV1QRqwRv6dLhJdbLDCVg1
         O/N2G80jqOuLYAhWplVexsD6iKI6ZnxUj6i960GvT7xJk3/9hXYm1xtxT4E05jKkjguY
         m3DzCT2+oalJB7qLQEfGf1OnqiK0ei+XNJPrMpObyEEAGJHNJCkmxlYeU741SyM8MpCu
         LNVw==
X-Gm-Message-State: AOJu0Yy4U6L/T5QB52RhTtp3WdA5QFq/9/Ka/TbTyaxcpfj9Zc57OLHv
	RtqpKewIDqyTfZaJocs5RRedlsoWy0hLEufmQ6EFJjZc0xGQ7voopUNIiSMOYvM=
X-Google-Smtp-Source: AGHT+IEoDFw3DguH17mowGdEzig1sXO01pO7xO+LXaUUAIS/5x+ESHIRsiCl4RQiIC4BMyQA8aoC/Q==
X-Received: by 2002:adf:ea92:0:b0:33a:ded1:b01 with SMTP id s18-20020adfea92000000b0033aded10b01mr3594397wrm.28.1706691500269;
        Wed, 31 Jan 2024 00:58:20 -0800 (PST)
Date: Wed, 31 Jan 2024 09:58:19 +0100
From: Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
To: Bjorn Helgaas <helgaas@kernel.org>
Cc: "Chen, Jiqian" <Jiqian.Chen@amd.com>,
	"Rafael J . Wysocki" <rafael@kernel.org>,
	Len Brown <lenb@kernel.org>, Juergen Gross <jgross@suse.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>,
	Boris Ostrovsky <boris.ostrovsky@oracle.com>,
	Bjorn Helgaas <bhelgaas@google.com>,
	"xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>,
	"linux-pci@vger.kernel.org" <linux-pci@vger.kernel.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"linux-acpi@vger.kernel.org" <linux-acpi@vger.kernel.org>,
	"Hildebrand, Stewart" <Stewart.Hildebrand@amd.com>,
	"Huang, Ray" <Ray.Huang@amd.com>,
	"Ragiadakou, Xenia" <Xenia.Ragiadakou@amd.com>
Subject: Re: [RFC KERNEL PATCH v4 3/3] PCI/sysfs: Add gsi sysfs for pci_dev
Message-ID: <ZboLq6kZhwpUC_c3@macbook>
References: <Zbi8WJPEUSMgjuVY@macbook>
 <20240130204403.GA562912@bhelgaas>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <20240130204403.GA562912@bhelgaas>

On Tue, Jan 30, 2024 at 02:44:03PM -0600, Bjorn Helgaas wrote:
> On Tue, Jan 30, 2024 at 10:07:36AM +0100, Roger Pau Monné wrote:
> > On Mon, Jan 29, 2024 at 04:01:13PM -0600, Bjorn Helgaas wrote:
> > > On Thu, Jan 25, 2024 at 07:17:24AM +0000, Chen, Jiqian wrote:
> > > > On 2024/1/24 00:02, Bjorn Helgaas wrote:
> > > > > On Tue, Jan 23, 2024 at 10:13:52AM +0000, Chen, Jiqian wrote:
> > > > >> On 2024/1/23 07:37, Bjorn Helgaas wrote:
> > > > >>> On Fri, Jan 05, 2024 at 02:22:17PM +0800, Jiqian Chen wrote:
> > > > >>>> There is a need for some scenarios to use gsi sysfs.
> > > > >>>> For example, when xen passthrough a device to dumU, it will
> > > > >>>> use gsi to map pirq, but currently userspace can't get gsi
> > > > >>>> number.
> > > > >>>> So, add gsi sysfs for that and for other potential scenarios.
> > > > >> ...
> > > > > 
> > > > >>> I don't know enough about Xen to know why it needs the GSI in
> > > > >>> userspace.  Is this passthrough brand new functionality that can't be
> > > > >>> done today because we don't expose the GSI yet?
> > > 
> > > I assume this must be new functionality, i.e., this kind of
> > > passthrough does not work today, right?
> > > 
> > > > >> has ACPI support and is responsible for detecting and controlling
> > > > >> the hardware, also it performs privileged operations such as the
> > > > >> creation of normal (unprivileged) domains DomUs. When we give to a
> > > > >> DomU direct access to a device, we need also to route the physical
> > > > >> interrupts to the DomU. In order to do so Xen needs to setup and map
> > > > >> the interrupts appropriately.
> > > > > 
> > > > > What kernel interfaces are used for this setup and mapping?
> > > >
> > > > For passthrough devices, the setup and mapping of routing physical
> > > > interrupts to DomU are done on Xen hypervisor side, hypervisor only
> > > > need userspace to provide the GSI info, see Xen code:
> > > > xc_physdev_map_pirq require GSI and then will call hypercall to pass
> > > > GSI into hypervisor and then hypervisor will do the mapping and
> > > > routing, kernel doesn't do the setup and mapping.
> > > 
> > > So we have to expose the GSI to userspace not because userspace itself
> > > uses it, but so userspace can turn around and pass it back into the
> > > kernel?
> > 
> > No, the point is to pass it back to Xen, which doesn't know the
> > mapping between GSIs and PCI devices because it can't execute the ACPI
> > AML resource methods that provide such information.
> > 
> > The (Linux) kernel is just a proxy that forwards the hypercalls from
> > user-space tools into Xen.
> 
> But I guess Xen knows how to interpret a GSI even though it doesn't
> have access to AML?

On x86 Xen does know how to map a GSI into an IO-APIC pin, in order
configure the RTE as requested.

> > > It seems like it would be better for userspace to pass an identifier
> > > of the PCI device itself back into the hypervisor.  Then the interface
> > > could be generic and potentially work even on non-ACPI systems where
> > > the GSI concept doesn't apply.
> > 
> > We would still need a way to pass the GSI to PCI device relation to
> > the hypervisor, and then cache such data in the hypervisor.
> > 
> > I don't think we have any preference of where such information should
> > be exposed, but given GSIs are an ACPI concept not specific to Xen
> > they should be exposed by a non-Xen specific interface.
> 
> AFAIK Linux doesn't expose GSIs directly to userspace yet.  The GSI
> concept relies on ACPI MADT, _MAT, _PRT, etc.  A GSI is associated
> with some device (PCI in this case) and some interrupt controller
> entry.  I don't understand how a GSI value is useful without knowing
> something about that framework in which GSIs exist.

I wouldn't say it's strictly associated with PCI.  A GSI is a way for
ACPI to have a single space that unifies all possible IO-APICs pins in
the system in a flat way.  A GSI is useful in itself because there's
a single GSI space for the whole host.

> Obviously I know less than nothing about Xen, so I apologize for
> asking all these stupid questions, but it just doesn't all make sense
> to me yet.

That's all fine, maybe there's a better path or way to expose this ACPI
information.  Maybe introduce a per-device acpi directory and expose
it there?  Or rename the entry to acpi_gsi?

Thanks, Roger.


From xen-devel-bounces@lists.xenproject.org Wed Jan 31 09:04:48 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 31 Jan 2024 09:04:48 +0000
Received: from list by lists.xenproject.org with outflank-mailman.673830.1048297 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rV6WR-0003zQ-M1; Wed, 31 Jan 2024 09:04:43 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 673830.1048297; Wed, 31 Jan 2024 09:04:43 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rV6WR-0003zJ-IB; Wed, 31 Jan 2024 09:04:43 +0000
Received: by outflank-mailman (input) for mailman id 673830;
 Wed, 31 Jan 2024 09:04:42 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=q596=JJ=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rV6WQ-0003zD-RF
 for xen-devel@lists.xenproject.org; Wed, 31 Jan 2024 09:04:42 +0000
Received: from mail-lf1-x12c.google.com (mail-lf1-x12c.google.com
 [2a00:1450:4864:20::12c])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id c44d4de4-c017-11ee-98f5-efadbce2ee36;
 Wed, 31 Jan 2024 10:04:40 +0100 (CET)
Received: by mail-lf1-x12c.google.com with SMTP id
 2adb3069b0e04-51032058f17so4269794e87.3
 for <xen-devel@lists.xenproject.org>; Wed, 31 Jan 2024 01:04:40 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 fj5-20020a05600c0c8500b0040f44b5c847sm961153wmb.45.2024.01.31.01.04.39
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 31 Jan 2024 01:04:39 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: c44d4de4-c017-11ee-98f5-efadbce2ee36
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1706691880; x=1707296680; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=Qc+RGf1LyKvayKXqnKK5idMfxaJ4W1meb94FOtQR5Ug=;
        b=GrDUltWIbnSsi1groVq1hL97eV79jk6b/S9pLPvvSEiavA8MDOW1rG6X47jSXHs6ah
         mq9BzLZH+y9WtbnQv55lGjRcjWueXab7ItCPAy93xLjfQdrcNstMTi17OiMCl4pT2Z1o
         rxjvmkWAWyE0jtLOjLen4+KJ1f4mZlXBW3Oem+NQy2CYbZdgdDJ80aQodkFJerzfa3KP
         hfopwCdY5eLFIvPlEu5AYr4zRk6DW5P3kpxnyItdw4VcsKtgSsvGAUusSRzFP1gAJpiY
         njHfHjOTJ1xI2CkQyWWCXS7/dEUZUnrFkFplOGIH/PKOTKQckNGgryqZOfe1AsRNAVMi
         3D8w==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706691880; x=1707296680;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=Qc+RGf1LyKvayKXqnKK5idMfxaJ4W1meb94FOtQR5Ug=;
        b=I4OGmtSoz9mHgMuVbOzcXqsvOO+agH2VYEU2Wv2InZSnvQAwg02QvZZGSUFnsPol6F
         bR5tl232+NtvMFyNGBAsPLRKV9DaAa76o91H0fx1AxuMmZvqW6Safb3u5FrR0IghmImL
         7/2t9+0faIsCqZTEgxWPAELqQjErpoAiDTyBLJ/cfuTG8HOB0bOJ2KiVBmetZTzzJRRw
         C7XzKaWCoknVOtgYsV3g8fZ+WDCyEoQyuACUOTkW+jhKnngfefD5iX7Pp7EMEwINvi55
         qijL9brRpLcqyV/wFrtwb8fCnEBCbWqAT/EuPNzB7LyFxuyIDubwTIu0fUd+u69FsEsy
         yRIA==
X-Gm-Message-State: AOJu0YzXkZmsBeVXy2PhdxtRdOo7CDTk4XNHNSue2rgl5A3Yl0VJZwIE
	v/w5TeMknFfdYJqc6N8NRGoAuQf1Gh4pxmDR4CMZh0QYoONmly2WjiPcrHRH9Q==
X-Google-Smtp-Source: AGHT+IHtND/kBBheO/qpf0VjyAymK/cId7QUs2K5yotIoaJaj0YZ1cX7KWwb84slX7J/zU2OPtrSnQ==
X-Received: by 2002:a19:690a:0:b0:510:153a:6bdc with SMTP id e10-20020a19690a000000b00510153a6bdcmr650435lfc.19.1706691880131;
        Wed, 31 Jan 2024 01:04:40 -0800 (PST)
X-Forwarded-Encrypted: i=0; AJvYcCXbdrZSd3/Eij/J/F3iYMFt3RqqzIgqG7WjdRaOUrdOhsqZjZqi3xlSgt6CaDrc2m57FjaN3QaYi1IHRfXZ6CJWAZMCzrppc4MFR8sF3406xJduyWViTU1vwo6rUZgj7gU8zTwjDRjOkZjtpbrYE6hjha4RQTsJGAMHFjrbP4rmWQtNsmnTqKFBV6oII8znTpPI/Y9gnzsVXQJJWOflcKzMsxvJYzUULtdUSpgsXR7g5lCW2Qf/ul1IPlz218Mc/Yww+IO0VGKljQwht2ruPsEac81AoitiqiP7qPO9KQ9ArcPG9Y2OseMPExxgTPHDkQcvj3w53Bf6kCStPXjC
Message-ID: <2eb905da-138e-4e0f-ba93-0780258e1142@suse.com>
Date: Wed, 31 Jan 2024 10:04:38 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [XEN PATCH v2 0/3] Introduce and use STATIC_ASSERT_UNREACHABLE()
Content-Language: en-US
To: Federico Serafini <federico.serafini@bugseng.com>
Cc: consulting@bugseng.com, Andrew Cooper <andrew.cooper3@citrix.com>,
 George Dunlap <george.dunlap@citrix.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Simone Ballarin <simone.ballarin@bugseng.com>,
 Doug Goldstein <cardoe@cardoe.com>, xen-devel@lists.xenproject.org
References: <cover.1706259490.git.federico.serafini@bugseng.com>
 <e980ede6-b6bd-4ce8-acf3-ecee2698b0ee@bugseng.com>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <e980ede6-b6bd-4ce8-acf3-ecee2698b0ee@bugseng.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 31.01.2024 09:19, Federico Serafini wrote:
> On 26/01/24 11:05, Federico Serafini wrote:
>> Introduce macro STATIC_ASSERT_UNREACHABLE(),
>> use it to replace __{get,put}_user_bad(),
>> update ECLAIR configuration to allow the use of such macro at the end of
>> switch-caluses.
>>
>> Federico Serafini (3):
>>    xen: introduce STATIC_ASSERT_UNREACHABLE()
>>    x86/uaccess: replace __{get,put}_user_bad() with
>>      STATIC_ASSERT_UNREACHABLE()
>>    automation/eclair: add deviation for MISRA C:2012 Rule 16.3
>>
>>   automation/eclair_analysis/ECLAIR/deviations.ecl | 4 ++++
>>   docs/misra/deviations.rst                        | 5 +++++
>>   xen/arch/x86/include/asm/uaccess.h               | 7 ++-----
>>   xen/include/xen/compiler.h                       | 7 +++++++
>>   4 files changed, 18 insertions(+), 5 deletions(-)
>>
> 
> Hello everyone,
> 
> do you have any comments on this series?

Yes, but in due course.

Jan


From xen-devel-bounces@lists.xenproject.org Wed Jan 31 09:06:11 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 31 Jan 2024 09:06:11 +0000
Received: from list by lists.xenproject.org with outflank-mailman.673834.1048306 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rV6Xr-0004YK-2J; Wed, 31 Jan 2024 09:06:11 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 673834.1048306; Wed, 31 Jan 2024 09:06:11 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rV6Xq-0004YD-Vy; Wed, 31 Jan 2024 09:06:10 +0000
Received: by outflank-mailman (input) for mailman id 673834;
 Wed, 31 Jan 2024 09:06:09 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=q596=JJ=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rV6Xp-0004Y3-FP
 for xen-devel@lists.xenproject.org; Wed, 31 Jan 2024 09:06:09 +0000
Received: from mail-wm1-x32f.google.com (mail-wm1-x32f.google.com
 [2a00:1450:4864:20::32f])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id f8010727-c017-11ee-98f5-efadbce2ee36;
 Wed, 31 Jan 2024 10:06:07 +0100 (CET)
Received: by mail-wm1-x32f.google.com with SMTP id
 5b1f17b1804b1-40faff092a2so9182575e9.2
 for <xen-devel@lists.xenproject.org>; Wed, 31 Jan 2024 01:06:07 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 fj5-20020a05600c0c8500b0040f44b5c847sm961153wmb.45.2024.01.31.01.06.06
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 31 Jan 2024 01:06:06 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: f8010727-c017-11ee-98f5-efadbce2ee36
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1706691967; x=1707296767; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=ztPObBMvm2jHeKYmDPmPd33ggMPo7dFXuG+6CAB2Vqc=;
        b=FO04rgxHJKDJgHFf9S177sMjfU110FhFqge/zL7S4VGHdGJOj6i91IxoBv2SL08dxm
         x6vH5IxSo4/pVGxboqy7olHxKgpjipTSB6jk86W5JBrWUnzsw/JJKaEThV+3xW+98Wz0
         VKUZWgUAVgEuLIi/PjphT/22WQOUSh39YWltiA1G7mSnAxYdAS0NdsiAPuHuj0zr4GrG
         7kpfJVzHQ8z4zI9uZPHZffUspPNI7DtIPzunZWz1RG4tHoF2bldKWUp73fXRsb8aNkIX
         3wmQA4Foi7VRDw4zeMedmG6YNFS2Nf9xr1NLwwczxM5ShzaFNyE0gnakFQTBJBWcp6AY
         W2iQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706691967; x=1707296767;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=ztPObBMvm2jHeKYmDPmPd33ggMPo7dFXuG+6CAB2Vqc=;
        b=YNj0F0S6+EqfVi/8GI0j8PjbJWF8RzQN1c4h90SlvkRSB+b6Fw0oMni1/YsYXN//IU
         Zoq3eMSOrUu9a00BF6X3hB5VylDnUndbjvTDyH4kBA4g4H7YkpKA+3YtwmH0YhUV0n32
         R+NJGim8WYGgcjRMbtknWrgSQpgupTZZ7ASmQcuUbyP7lGQCYTEmcwkH9D3535NnxHVZ
         d0PFviNXC5+LR99PvnDWLHO5MIrKl3gwj0+jxSRcWZmyi3JnhYQYplfZ8ccKV93vDxbb
         5rIAWb4NrE0lUKVTFdGgBxPvYoAzNvLYH++D1yzNPKM5ZLTSHRkBd0ShYqo86balO1fd
         D1Aw==
X-Gm-Message-State: AOJu0YxaRm1iViQjLzXXgErLfZR2NSXlB8rjEqMBpenThDdLYnMRqcz/
	KHP+yLkb+v8qOSm/kw4tb078cjjpBI4lqCiDj/sd20yTjmt+Sr7jtptsU+l28A==
X-Google-Smtp-Source: AGHT+IFxmq7MHkoCXYW6NsF/eJrCkYZbFH7dlmmxHTRSVXaL+w86S81ReRdVmh5fuKKLkcqCX0cRuw==
X-Received: by 2002:a05:600c:241:b0:40e:a7cf:10e0 with SMTP id 1-20020a05600c024100b0040ea7cf10e0mr892891wmj.20.1706691966909;
        Wed, 31 Jan 2024 01:06:06 -0800 (PST)
X-Forwarded-Encrypted: i=0; AJvYcCUR1YZ/8a7A35JMUXU+Hx3RTFeS3YcWhl83hBuy3gB2ybGFce3fhMDx138M1ib2zb15ZLM1BbPZFWQoxGmgu92p8iHrDcNAdUoVCUHxnp5bSWGqKlB+YBZ4l7wlJEs0Xi6vXyVD7pNWX0yD4KaW76BlU7gqRPsHV5YSlX8s2ISKtBgv
Message-ID: <25b705d0-76e1-4328-bd5f-7204d08ffb86@suse.com>
Date: Wed, 31 Jan 2024 10:06:06 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] xen: Drop superfluous semi-colons
Content-Language: en-US
To: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: George Dunlap <George.Dunlap@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>,
 Julien Grall <julien@xen.org>, Xen-devel <xen-devel@lists.xenproject.org>
References: <20240130221808.104878-1-andrew.cooper3@citrix.com>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <20240130221808.104878-1-andrew.cooper3@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 30.01.2024 23:18, Andrew Cooper wrote:
> All these cases happen to be benign, but drop them anyway.  This is one step
> towards making -Wextra-semi work.
> 
> Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>

Reviewed-by: Jan Beulich <jbeulich@suse.com>




From xen-devel-bounces@lists.xenproject.org Wed Jan 31 09:10:58 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 31 Jan 2024 09:10:58 +0000
Received: from list by lists.xenproject.org with outflank-mailman.673839.1048316 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rV6cP-0006Vg-In; Wed, 31 Jan 2024 09:10:53 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 673839.1048316; Wed, 31 Jan 2024 09:10:53 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rV6cP-0006VZ-GB; Wed, 31 Jan 2024 09:10:53 +0000
Received: by outflank-mailman (input) for mailman id 673839;
 Wed, 31 Jan 2024 09:10:52 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=q596=JJ=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rV6cO-0006VT-8D
 for xen-devel@lists.xenproject.org; Wed, 31 Jan 2024 09:10:52 +0000
Received: from mail-wr1-x429.google.com (mail-wr1-x429.google.com
 [2a00:1450:4864:20::429])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id a062dbda-c018-11ee-98f5-efadbce2ee36;
 Wed, 31 Jan 2024 10:10:50 +0100 (CET)
Received: by mail-wr1-x429.google.com with SMTP id
 ffacd0b85a97d-3394ca0c874so3965422f8f.2
 for <xen-devel@lists.xenproject.org>; Wed, 31 Jan 2024 01:10:49 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 cl1-20020a5d5f01000000b0033afcc899c1sm3400247wrb.13.2024.01.31.01.10.48
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 31 Jan 2024 01:10:49 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: a062dbda-c018-11ee-98f5-efadbce2ee36
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1706692249; x=1707297049; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=9p39soEk6ArgSnnhDao33UTSRr0AyyVIhT0eOH58YhQ=;
        b=EHf4ne0hK6gqSMI4rGV5s09QXXF5Pj7c/isS164s5hC03M+b6Bq9hPv0C+ZQIpOvSC
         vhPOhAfQuuepk5SUi5zQ3+jZ65wyM2XGQveMfkFNOqkf83n50F6WZEoG4YaHuK1SY+nk
         dhplDUUKzFo+I0xUc9fwCO0kzNCh10fgHndEvIw4WzpYEm+8wy+5HNz58kwjDeTY/V34
         qKI65gShe62ihT5F05/NBZoyE6w5ShLs42IuFj1l1IKaL8y60Gl+Pj0Ok0jfyUjF57N4
         KLJlhraFEtu0gQh5kN9wjtn2rCYuPYSXNN2Sjl7Aj4+4m6LKCf1TgCFWt+XyafrqLwe7
         6CTw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706692249; x=1707297049;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=9p39soEk6ArgSnnhDao33UTSRr0AyyVIhT0eOH58YhQ=;
        b=YMbVK9OV5KaV5+W3kfj+bYTSiuOUOzvgZKkJxL2ivzWecOlcP4PnjClRDqlpF68Kzj
         mJnDqmwCiPwj9KJE4eoF7fbA53p2KmSOOo5OR0LPaAZxnAk3mZQvyPY0apkPH47PEurH
         2gXieZ6fAdsRDqJJfenV90zUOv0oGTEETcU0PNvD88MvYNArXnDvdwjysN/kpi7SUYJI
         UWyfDuuXmqsyvlkybGlez4BcblxnxHMMTD5hPgl70fLg5aK227yJye404Oe95TDcZPVz
         t+TctwU6Rn8NOn3lwv3LqxHb1El+r0/LTicxkaXovrfm0ekje9DqmDMB/iDpEM9FiYid
         NfJA==
X-Gm-Message-State: AOJu0Yx2NqfCMVSBoQ/qibH8r5myZzAnHG/u2rFgnweYTYpuQlN9gEV8
	lRwwpw/3G0Yp8KHKxEHLLF0Z4P6AEjZURZPxXiRjEhA+z38g4quq0v2F9uGEXA==
X-Google-Smtp-Source: AGHT+IE+MMEYtp/hiMQ/8pK/ifPMCBZ6P93wY3VQNqAQtVPFVELZh+6Pu2uP2kW9bUjIEq78zSY0aA==
X-Received: by 2002:adf:ec45:0:b0:33a:e73b:b0d0 with SMTP id w5-20020adfec45000000b0033ae73bb0d0mr801433wrn.32.1706692249291;
        Wed, 31 Jan 2024 01:10:49 -0800 (PST)
X-Forwarded-Encrypted: i=0; AJvYcCWxQ+kLz2F3bJwDBt3h2XTbC8jx+sXu0jwvIY+/NswatyPFwJsK/p8oQs3CahmF5HU/hLREEZqFo1xpyTc0POA44TMjN3/CDwItayOpxFPRLItHMS5g/W/N+83MvJ32B0mdC4c3eMLm5Z6XpFFs28DdGbHXD82hc+ac5DyuKEHNM5sUv6mtYWRNNUD67GlBC+2v/cSXx+SvbpzzeEpwAqvSPYstbtxdVqE1gVldCT1oIKngYnOh2Qb1WMKx2pNFbr2UIZr9TIHzqGz/EH1Ltzt4U5utfwP+q7fyWnYoxP4za7pTvzmlfGOdJBVMYDrA8VuGUinhNJ2dykbM61DdGwqSBvYhWMR1x1CpgXj4ehFDlcYJakqM4zNK6rrloT29zffgiqpjiNEW03dhabXjhiCbFSvru/46RXWMmA==
Message-ID: <4ac2f9e6-8fa7-4446-8af3-29de4028c7a6@suse.com>
Date: Wed, 31 Jan 2024 10:10:47 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] xen/*/asm-offset: Fix bad copy&paste from x86
Content-Language: en-US
To: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>,
 Wei Liu <wl@xen.org>, Stefano Stabellini <sstabellini@kernel.org>,
 Julien Grall <julien@xen.org>, Volodymyr Babchuk
 <Volodymyr_Babchuk@epam.com>, Bertrand Marquis <bertrand.marquis@arm.com>,
 Michal Orzel <michal.orzel@amd.com>, Bob Eshleman <bobbyeshleman@gmail.com>,
 Alistair Francis <alistair.francis@wdc.com>,
 Connor Davis <connojdavis@gmail.com>,
 Shawn Anastasio <sanastasio@raptorengineering.com>,
 Xen-devel <xen-devel@lists.xenproject.org>
References: <20240130222808.106006-1-andrew.cooper3@citrix.com>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <20240130222808.106006-1-andrew.cooper3@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 30.01.2024 23:28, Andrew Cooper wrote:
> --- a/xen/arch/x86/x86_64/asm-offsets.c
> +++ b/xen/arch/x86/x86_64/asm-offsets.c
> @@ -18,11 +18,11 @@
>  
>  #define DEFINE(_sym, _val)                                                 \
>      asm volatile ("\n.ascii\"==>#define " #_sym " %0 /* " #_val " */<==\"" \
> -                  : : "i" (_val) )
> +                  :: "i" (_val))

The removal of the last blank is against our style; instead a blank wants
insertion after the opening parenthesis.

>  #define BLANK()                                                            \
> -    asm volatile ( "\n.ascii\"==><==\"" : : )
> +    asm volatile ("\n.ascii\"==><==\"")

Similarly here while dropping the colons is fine, the blanks next to the
parentheses want keeping.

With that adjusted throughout
Reviewed-by: Jan Beulich <jbeulich@suse.com>

Jan


From xen-devel-bounces@lists.xenproject.org Wed Jan 31 09:12:49 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 31 Jan 2024 09:12:49 +0000
Received: from list by lists.xenproject.org with outflank-mailman.673844.1048327 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rV6eF-00071I-VX; Wed, 31 Jan 2024 09:12:47 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 673844.1048327; Wed, 31 Jan 2024 09:12:47 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rV6eF-00071B-Rm; Wed, 31 Jan 2024 09:12:47 +0000
Received: by outflank-mailman (input) for mailman id 673844;
 Wed, 31 Jan 2024 09:12:46 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=q596=JJ=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rV6eE-000713-Rl
 for xen-devel@lists.xenproject.org; Wed, 31 Jan 2024 09:12:46 +0000
Received: from mail-wm1-x32f.google.com (mail-wm1-x32f.google.com
 [2a00:1450:4864:20::32f])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id e4fca485-c018-11ee-98f5-efadbce2ee36;
 Wed, 31 Jan 2024 10:12:45 +0100 (CET)
Received: by mail-wm1-x32f.google.com with SMTP id
 5b1f17b1804b1-40e80046246so3522655e9.1
 for <xen-devel@lists.xenproject.org>; Wed, 31 Jan 2024 01:12:45 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 l2-20020a05600c4f0200b0040ebfbff33csm979376wmq.36.2024.01.31.01.12.44
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 31 Jan 2024 01:12:44 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: e4fca485-c018-11ee-98f5-efadbce2ee36
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1706692364; x=1707297164; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=LJ44NbYDDCT/+Y/+x5YTp0Iz0ab+1broxKOD1oGv1dA=;
        b=YBs2hhghGbXzsQcU92QKbRq0gd0eCjI8nqgq0/GzpSJ3xyFwPJYUEBkS+umXyykcjG
         KX6Rk5H159sJQAu0YtdG3XAZdmQCbQPwhgUOIm9gA1DByIUqYhe7cZbf/TlCTL6erDEK
         IarVDxKlRHwaHp2GoFGl8dzazvHC/+ARjbiACd1qvKyPlU5REqMUR114IyXd+uStaMd6
         k9Xoqg5xisS+KkTu5SYVnw14/8zXYD7ypqahePd8qhVj35aYH8ABgzVXog0mL/NBuViU
         Yb0SvHpJXFF/CXU3RHYYg66+Ztdnun7TzsbhUuHyG3SWYFZPuLCJT+rpQVc4Yjcs+/GD
         AwFg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706692364; x=1707297164;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=LJ44NbYDDCT/+Y/+x5YTp0Iz0ab+1broxKOD1oGv1dA=;
        b=PuvG6gCwCV3MLVFmhFQhvqFTwumFFh/M11ncyHOF8dUl0r/RlDOTxOniHUmVjwoP0d
         m8koO4m+kEoZi0gvb65JlvikMctGatps1H0JlUHHmCQs1MADuWp6LN3tGhxK6DZkxtvt
         cmDg37f1IbJMY4IANYkGBwvf8QN3l459FYOtV51v3rIkJwEIQowaPUBzDTbrdIgU4Jtp
         zZnBz6kmOAAT5lQmISgp2pVcz/3yq+muOCnUNPra28C+FZvEXt/KVIyfRVyPk7RvJg7j
         kIuH8dzRTAt/lt0d/WKEm8fl55cs8W72G4gv+gpbJvv7WhG6/sJKDemJrSt2Cf9/ddt8
         /7Ig==
X-Gm-Message-State: AOJu0Yz08rdSVroKPCr6cIUC/CdtloJRk5HKfbLxgZ3BgZIh24YPg0RE
	t4GUG5MwoivZ8z9ZoXyXuSasacAK9Zwq+ynnYyWKGN1ARVBGZgPCouNq3YEHRA==
X-Google-Smtp-Source: AGHT+IHdSSgx9sgICJOjEIU043LZ2O2s4tBe1boEWLHMB/3sVHYw2OAurdPoQGigk5zsBYhsNidGZQ==
X-Received: by 2002:a05:600c:3516:b0:40f:25be:e811 with SMTP id h22-20020a05600c351600b0040f25bee811mr3562034wmq.8.1706692364520;
        Wed, 31 Jan 2024 01:12:44 -0800 (PST)
X-Forwarded-Encrypted: i=0; AJvYcCWqEfKzQPkAlY9lwifuGuPwEfOdIFcMRoQfYrT+kRoNwIJsWkeBL9C4UkfY/fQQ3S7b8/2TZUo4lDdXVdkXGmaHnmhr/T6hJFUvaY7Ss9aXbYUpmVsBTLVZOABcuVRMZVzgDRvW3jMmVdByMnKoXcGq
Message-ID: <07f5e482-deca-4c63-963e-f55029001778@suse.com>
Date: Wed, 31 Jan 2024 10:12:43 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] x86/hvm: Fix UBSAN failure in do_hvm_op() printk
Content-Language: en-US
To: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: Tamas K Lengyel <tamas@tklengyel.com>,
 =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= <roger.pau@citrix.com>, Wei Liu
 <wl@xen.org>, Xen-devel <xen-devel@lists.xenproject.org>
References: <20240130183713.24680-1-andrew.cooper3@citrix.com>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <20240130183713.24680-1-andrew.cooper3@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 30.01.2024 19:37, Andrew Cooper wrote:
> Tamas reported this UBSAN failure from fuzzing:
> 
>   (XEN) ================================================================================
>   (XEN) UBSAN: Undefined behaviour in common/vsprintf.c:64:19
>   (XEN) negation of -9223372036854775808 cannot be represented in type 'long long int':
>   (XEN) ----[ Xen-4.19-unstable  x86_64  debug=y ubsan=y  Not tainted ]----
>   ...
>   (XEN) Xen call trace:
>   (XEN)    [<ffff82d040307c1c>] R ubsan.c#ubsan_epilogue+0xa/0xd9
>   (XEN)    [<ffff82d04030805d>] F __ubsan_handle_negate_overflow+0x99/0xce
>   (XEN)    [<ffff82d04028868f>] F vsprintf.c#number+0x10a/0x93e
>   (XEN)    [<ffff82d04028ac74>] F vsnprintf+0x19e2/0x1c56
>   (XEN)    [<ffff82d04030a47a>] F console.c#vprintk_common+0x76/0x34d
>   (XEN)    [<ffff82d04030a79e>] F printk+0x4d/0x4f
>   (XEN)    [<ffff82d04040c42b>] F do_hvm_op+0x288e/0x28f5
>   (XEN)    [<ffff82d04040d385>] F hvm_hypercall+0xad2/0x149a
>   (XEN)    [<ffff82d0403cd072>] F vmx_vmexit_handler+0x1596/0x279c
>   (XEN)    [<ffff82d0403d909b>] F vmx_asm_vmexit_handler+0xdb/0x200
> 
> The problem is an unsigned -> signed converstion because of a bad
> formatter (%ld trying to format an unsigned long).
> 
> We could fix it by swapping to %lu, but this is a useless printk() even in
> debug builds, so just drop it completely.
> 
> Reported-by: Tamas K Lengyel <tamas@tklengyel.com>
> Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>

Acked-by: Jan Beulich <jbeulich@suse.com>




From xen-devel-bounces@lists.xenproject.org Wed Jan 31 09:16:26 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 31 Jan 2024 09:16:26 +0000
Received: from list by lists.xenproject.org with outflank-mailman.673847.1048337 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rV6hh-0007cg-En; Wed, 31 Jan 2024 09:16:21 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 673847.1048337; Wed, 31 Jan 2024 09:16:21 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rV6hh-0007cZ-A6; Wed, 31 Jan 2024 09:16:21 +0000
Received: by outflank-mailman (input) for mailman id 673847;
 Wed, 31 Jan 2024 09:16:20 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rV6hg-0007cP-DT; Wed, 31 Jan 2024 09:16:20 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rV6hg-0000wG-Ax; Wed, 31 Jan 2024 09:16:20 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rV6hg-000859-05; Wed, 31 Jan 2024 09:16:20 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rV6hf-0000GD-Vt; Wed, 31 Jan 2024 09:16:19 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=9x0/231TFddFz+ZeWMnWzdxJx/5eLu2uKyddzJcUf/g=; b=fQxiQ79OqYt/JydCmsNyMu6BxT
	XoEagp4Ke6MCAtR2O5X22E5Gir9jx3/0uJKS0DXE0MUxflsESinGpt5WLVEyW4VauqXMqpmI2Hsnh
	SGCBj7GD7ewOYyAeJ7ueX7EsB/l6ddbkA6an4vVvq8uVYqHsiXYKFaNyvL+1iiVyMdF4=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184538-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [ovmf test] 184538: all pass - PUSHED
X-Osstest-Versions-This:
    ovmf=af6e0e728f652f496a6fb1e659617c9662f774ac
X-Osstest-Versions-That:
    ovmf=909a9a5ae4b8236c1ca7cad7f214c752a579bd67
From: osstest service owner <osstest-admin@xenproject.org>
Date: Wed, 31 Jan 2024 09:16:19 +0000

flight 184538 ovmf real [real]
http://logs.test-lab.xenproject.org/osstest/logs/184538/

Perfect :-)
All tests in this flight passed as required
version targeted for testing:
 ovmf                 af6e0e728f652f496a6fb1e659617c9662f774ac
baseline version:
 ovmf                 909a9a5ae4b8236c1ca7cad7f214c752a579bd67

Last test of basis   184533  2024-01-30 15:12:47 Z    0 days
Testing same since   184538  2024-01-31 04:36:38 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Michael D Kinney <michael.d.kinney@intel.com>

jobs:
 build-amd64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-amd64-amd64-xl-qemuu-ovmf-amd64                         pass    
 test-amd64-i386-xl-qemuu-ovmf-amd64                          pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Pushing revision :

To xenbits.xen.org:/home/xen/git/osstest/ovmf.git
   909a9a5ae4..af6e0e728f  af6e0e728f652f496a6fb1e659617c9662f774ac -> xen-tested-master


From xen-devel-bounces@lists.xenproject.org Wed Jan 31 09:17:39 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 31 Jan 2024 09:17:39 +0000
Received: from list by lists.xenproject.org with outflank-mailman.673853.1048346 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rV6iv-0008Iz-Nl; Wed, 31 Jan 2024 09:17:37 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 673853.1048346; Wed, 31 Jan 2024 09:17:37 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rV6iv-0008Is-Ky; Wed, 31 Jan 2024 09:17:37 +0000
Received: by outflank-mailman (input) for mailman id 673853;
 Wed, 31 Jan 2024 09:17:37 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=q596=JJ=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rV6iv-0008Im-0G
 for xen-devel@lists.xenproject.org; Wed, 31 Jan 2024 09:17:37 +0000
Received: from mail-wm1-x332.google.com (mail-wm1-x332.google.com
 [2a00:1450:4864:20::332])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 91b81e24-c019-11ee-98f5-efadbce2ee36;
 Wed, 31 Jan 2024 10:17:34 +0100 (CET)
Received: by mail-wm1-x332.google.com with SMTP id
 5b1f17b1804b1-40fb3b5893eso3838285e9.0
 for <xen-devel@lists.xenproject.org>; Wed, 31 Jan 2024 01:17:34 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 y11-20020adffa4b000000b0033aee139e26sm7165851wrr.63.2024.01.31.01.17.33
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 31 Jan 2024 01:17:34 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 91b81e24-c019-11ee-98f5-efadbce2ee36
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1706692654; x=1707297454; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=xYMNFlU13+XV8F4CNTSo+812t0vA1DzqgE7qK91iXuk=;
        b=bqgEA1BLfkXy8vzpNyy6AiVogsIMOZHps0+w2aMXqcfvERO8ObjPIUv+xpQ7s5X5Zd
         MFiIaC6dJdZNgEOQjb0ECE9EJgbOXhTPjSNZbyR3veCAyT7b4Rl2RTCGd+6eSmRi/crw
         6RuKgalPzE3YYN8fVC3QcR5dP74ZkFvfxVaPDKw4mCHC1ujGWxSiK3esJHh6E8f0L0GU
         H944IqYSzTIav59ZnKEa0EVj87sFxG4UbfaYU+nsTcQX/05tR3o1AjoFzFo17EQOnQN8
         e0+AGZ2Sx59GgpjtT2bBN4KiN6RYnc4x8tz4UqjDF/GKjhHhs5Nes6RZS+ssh0V/ShkC
         cSdg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706692654; x=1707297454;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=xYMNFlU13+XV8F4CNTSo+812t0vA1DzqgE7qK91iXuk=;
        b=aLJbucvXbOQR9QDopVeNDXHO/xxmxzZz8grDfs6YsZ07tDe6Ljd6DE7khW2aPsSyRR
         +tEwwUDMD1HfmePKTHQaIPct8itYby3BVN8SBnlowb6ZPGvbYyBIBn2fTMxw2jQgEsyY
         XE+MOEdoiAVITG8ssnLp+6rrObjyH5he3iP4uMbgQmqfTxurVYenmM0vU7srbjTsypCw
         tiu9+4y6LqjWQRdo/jnDBhQhNYSJUvbaYvTpmp74T2aGcN4SL5oVSHqyqVV8pWKkSqUN
         hmxOy4qiJoZ+sXv04v6GoTIAk6YNcbnJBB/aSNM6t36zFyQ1G58/BCRcqhV0P8kIZxxC
         qwyQ==
X-Gm-Message-State: AOJu0YwAW29Xfn0YUj78Y+OWFzCpSJ3iKqbjbewGE0ymLDRuA07aEDkH
	yzP86upMhRocg+hX0ZfOWPzzRtdSPn4VOvUnKAem4xaGH+KMuwN+ydmRQnJiDA==
X-Google-Smtp-Source: AGHT+IF9s/G2RdvLkcZsXxPYvGEpyOFO896ejVnf/vDXyyEWcPPuOaZZRo6A5BAFasGShy9VKozy+A==
X-Received: by 2002:a5d:49d2:0:b0:33a:ff90:77ca with SMTP id t18-20020a5d49d2000000b0033aff9077camr688239wrs.29.1706692654326;
        Wed, 31 Jan 2024 01:17:34 -0800 (PST)
X-Forwarded-Encrypted: i=0; AJvYcCWyfQfcPeiViwY6tGqAi7p3NTG0PmZUOMsdfF0nFYeRRuSFXZHNpsEGBR7Rej3ierkwfHLtLAhHZ4RiyfVLEX1BCcstuHJ2ypyL4aNA6V4+vdr7cCUVVqp0d3cnyxdi+NA1tIc99HWOvL+ZGvfl+uPdQXVuiRRl+GcRV22UmPd7CiXBb3NGmqow8wPi8fdLLJa8n74GfsUeNx42pk8=
Message-ID: <17bb5775-6a1a-43fb-b73f-6ff1c0665852@suse.com>
Date: Wed, 31 Jan 2024 10:17:33 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] xen/sched: Fix UB shift in compat_set_timer_op()
Content-Language: en-US
To: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: Tamas K Lengyel <tamas@tklengyel.com>,
 George Dunlap <George.Dunlap@citrix.com>,
 Stefano Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>,
 Julien Grall <julien@xen.org>, Xen-devel <xen-devel@lists.xenproject.org>
References: <20240130212706.74303-1-andrew.cooper3@citrix.com>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <20240130212706.74303-1-andrew.cooper3@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 30.01.2024 22:27, Andrew Cooper wrote:
> Tamas reported this UBSAN failure from fuzzing:
> 
>   (XEN) ================================================================================
>   (XEN) UBSAN: Undefined behaviour in common/sched/compat.c:48:37
>   (XEN) left shift of negative value -2147425536
>   (XEN) ----[ Xen-4.19-unstable  x86_64  debug=y ubsan=y  Not tainted ]----
>   ...
>   (XEN) Xen call trace:
>   (XEN)    [<ffff82d040307c1c>] R ubsan.c#ubsan_epilogue+0xa/0xd9
>   (XEN)    [<ffff82d040308afb>] F __ubsan_handle_shift_out_of_bounds+0x11a/0x1c5
>   (XEN)    [<ffff82d040307758>] F compat_set_timer_op+0x41/0x43
>   (XEN)    [<ffff82d04040e4cc>] F hvm_do_multicall_call+0x77f/0xa75
>   (XEN)    [<ffff82d040519462>] F arch_do_multicall_call+0xec/0xf1
>   (XEN)    [<ffff82d040261567>] F do_multicall+0x1dc/0xde3
>   (XEN)    [<ffff82d04040d2b3>] F hvm_hypercall+0xa00/0x149a
>   (XEN)    [<ffff82d0403cd072>] F vmx_vmexit_handler+0x1596/0x279c
>   (XEN)    [<ffff82d0403d909b>] F vmx_asm_vmexit_handler+0xdb/0x200
> 
> Left-shifting any negative value is strictly undefined behaviour in C, and
> the two parameters here come straight from the guest.
> 
> The fuzzer happened to choose lo 0xf, hi 0x8000e300.
> 
> Switch everything to be unsigned values, making the shift well defined.
> 
> As GCC documents:
> 
>   As an extension to the C language, GCC does not use the latitude given in
>   C99 and C11 only to treat certain aspects of signed '<<' as undefined.
>   However, -fsanitize=shift (and -fsanitize=undefined) will diagnose such
>   cases.
> 
> this was deemed not to need an XSA.
> 
> Fixes: 2942f45e09fb ("Enable compatibility mode operation for HYPERVISOR_sched_op and HYPERVISOR_set_timer_op.")
> Reported-by: Tamas K Lengyel <tamas@tklengyel.com>
> Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>

Reviewed-by: Jan Beulich <jbeulich@suse.com>
with the additional observation that the subsequent unsigned->signed conversion
then exercises implementation defined behavior, i.e. is also fine given what
gcc doc states in this regard. Not sure whether that's worth mentioning, seeing
that we have such conversions all over the place (albeit I think it would be
nice if we could reduce their amount some).

Jan


From xen-devel-bounces@lists.xenproject.org Wed Jan 31 09:18:43 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 31 Jan 2024 09:18:43 +0000
Received: from list by lists.xenproject.org with outflank-mailman.673857.1048357 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rV6jy-0000ut-40; Wed, 31 Jan 2024 09:18:42 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 673857.1048357; Wed, 31 Jan 2024 09:18:42 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rV6jy-0000um-0w; Wed, 31 Jan 2024 09:18:42 +0000
Received: by outflank-mailman (input) for mailman id 673857;
 Wed, 31 Jan 2024 09:18:40 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>) id 1rV6jw-0000ue-Rp
 for xen-devel@lists.xenproject.org; Wed, 31 Jan 2024 09:18:40 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rV6jv-00010Y-La; Wed, 31 Jan 2024 09:18:39 +0000
Received: from gw1.octic.net ([88.97.20.152] helo=[10.0.1.102])
 by xenbits.xenproject.org with esmtpsa
 (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rV6jv-0002JS-EI; Wed, 31 Jan 2024 09:18:39 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
	s=20200302mail; h=Content-Transfer-Encoding:Content-Type:In-Reply-To:From:
	References:Cc:To:Subject:MIME-Version:Date:Message-ID;
	bh=2A4dInAeKY4pI4uVLsSq9t6AkulXf1MnA3dt7v6K63A=; b=m3ulKwn/x4gxKuFlFbbBqGrJVm
	U55FDWATwq9TS+txQyYMyMCEbIG2bRkdcAND6hizxdZxSru9YLKqQJ704/fEnBFF6tmJGpsk1SeHV
	rSvzED3YSTYz4bu5+KDn0x3oW629ccbeX9usMha0QX8tg44acNTk5CHleF28dEGK+x/0=;
Message-ID: <c42df9e7-37ec-4835-b10e-307eefbe28fc@xen.org>
Date: Wed, 31 Jan 2024 09:18:36 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] xen/*/asm-offset: Fix bad copy&paste from x86
To: Andrew Cooper <andrew.cooper3@citrix.com>,
 Xen-devel <xen-devel@lists.xenproject.org>
Cc: Jan Beulich <JBeulich@suse.com>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger.pau@citrix.com>, Wei Liu <wl@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>,
 Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
 Bertrand Marquis <bertrand.marquis@arm.com>,
 Michal Orzel <michal.orzel@amd.com>, Bob Eshleman <bobbyeshleman@gmail.com>,
 Alistair Francis <alistair.francis@wdc.com>,
 Connor Davis <connojdavis@gmail.com>,
 Shawn Anastasio <sanastasio@raptorengineering.com>
References: <20240130222808.106006-1-andrew.cooper3@citrix.com>
Content-Language: en-GB
From: Julien Grall <julien@xen.org>
In-Reply-To: <20240130222808.106006-1-andrew.cooper3@citrix.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

Hi Andrew,

On 30/01/2024 22:28, Andrew Cooper wrote:
> All architectures have copy&pasted bad logic from x86.
> 
> OFFSET() having a trailing semi-colon within the macro expansion can be a
> problematic pattern.  It's benign in this case, but fix it anyway.
> 
> Perform style fixes for the other macros, and tame the mess of BLANK()
> position to be consistent (one BLANK() after each block) so the intermediate
> form is legible too.
> 
> No functional change.
> 
> Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>

With Jan's comments addressed on the Arm side as well:

Acked-by: Julien Grall <jgrall@amazon.com>

Cheers,

-- 
Julien Grall


From xen-devel-bounces@lists.xenproject.org Wed Jan 31 09:21:02 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 31 Jan 2024 09:21:02 +0000
Received: from list by lists.xenproject.org with outflank-mailman.673860.1048367 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rV6mB-0002PO-H5; Wed, 31 Jan 2024 09:20:59 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 673860.1048367; Wed, 31 Jan 2024 09:20:59 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rV6mB-0002PH-DE; Wed, 31 Jan 2024 09:20:59 +0000
Received: by outflank-mailman (input) for mailman id 673860;
 Wed, 31 Jan 2024 09:20:58 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=q596=JJ=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rV6mA-0002P9-4h
 for xen-devel@lists.xenproject.org; Wed, 31 Jan 2024 09:20:58 +0000
Received: from mail-lf1-x12d.google.com (mail-lf1-x12d.google.com
 [2a00:1450:4864:20::12d])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 0a69ef3f-c01a-11ee-8a43-1f161083a0e0;
 Wed, 31 Jan 2024 10:20:57 +0100 (CET)
Received: by mail-lf1-x12d.google.com with SMTP id
 2adb3069b0e04-51032e62171so5542720e87.3
 for <xen-devel@lists.xenproject.org>; Wed, 31 Jan 2024 01:20:57 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 18-20020a05600c025200b0040d4e1393dcsm997520wmj.20.2024.01.31.01.20.56
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 31 Jan 2024 01:20:56 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 0a69ef3f-c01a-11ee-8a43-1f161083a0e0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1706692857; x=1707297657; darn=lists.xenproject.org;
        h=content-transfer-encoding:autocrypt:subject:from:cc:to
         :content-language:user-agent:mime-version:date:message-id:from:to:cc
         :subject:date:message-id:reply-to;
        bh=peipOnmfsgo0+TF6VdaI5c/UVx4GFyUKQ1LO5LDyhJ4=;
        b=Hk0HIoeaAic7btuOXG3fiqb5oI/EfXwIJcFAIVzmF6ujOI1d/ZPNGgrupLgY+bftXQ
         MfXTJWhyZhLf+OEwt6E8d6Tq10b6OpD89TJZGr+oWEq9Ff+PLjH5VnK5AU6dJb8+sEOQ
         3I5HBpNyq6D9eMzmwBRwyMeEt/zQKRrPVHUhRjH02iA5D5HlCvw4nRPZMlZBcRY7Chjq
         QAYs2AIBJc0BNa4dpAP+hN5mIR9HIa/6pxGQ6ESLvJbxUI+DnMgjg55D54QII/AgmepI
         1aceEGEfQIzWmx+IkZYv+vMjAI3ZjffMhVULW857KGNjMCc0rhYV3+I5morFy3IxvBvm
         UhVw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706692857; x=1707297657;
        h=content-transfer-encoding:autocrypt:subject:from:cc:to
         :content-language:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=peipOnmfsgo0+TF6VdaI5c/UVx4GFyUKQ1LO5LDyhJ4=;
        b=BKUjZRl3sb2V2jfKo7aJQ0pWpwJxsPU/lyF3vwbmr3IDYT7EW8RSNFqx6TeAcdqa0F
         ge8PmuPy023gAJlVjkS5I3FkXdAQwPWIEI6NJaf5uga2h/nTyYmtqjh75WxngKYvAO7T
         tsIHT9qOe87j9Po8XCNhImxKjGJr8MeFlfhaMJ1CeyThelxcWfWD1H//1tHwlKIWXJ0B
         JFGjcxQ05OpZ8/uma3O8BbGIjfAwIhjPGrRrFeLdMNIwXD3LnB6XyUHAa3xhRmCnDJkC
         1tBU4yZxQLipenV0ovj3WIQNMLOEDEUgxqSP28fGJVYpk0ADpLnBR9vJ/Uk9lqZ5T6O5
         dG0w==
X-Gm-Message-State: AOJu0YzKfcuyMwnSyy6IOeJUtAKrX638WguMqnClp+rz+lSHqklcfMis
	joCcFO1eKcCyLmvJnlfcH/vA7dl3uq0dgE0/h6521sznR4PqrNz9I1U0c5X9akn9+kR7hd07BYI
	=
X-Google-Smtp-Source: AGHT+IHmA+6BwXm8UfwSIEdIyjxrhyckaB1PxHK2gCJUzOHXFJaLUsCx6Ha3STFSi4tqOCxhI7HdfA==
X-Received: by 2002:a05:6512:214a:b0:50e:9d0e:85f0 with SMTP id s10-20020a056512214a00b0050e9d0e85f0mr813017lfr.69.1706692856721;
        Wed, 31 Jan 2024 01:20:56 -0800 (PST)
X-Forwarded-Encrypted: i=0; AJvYcCWQxYowxiJQuSV+3Mr0/yfZSzwwUPp0V/wAYAkFh7dgZnLoG9ptmgTDaRE+nSPKAiR8zauP/CP45eHXiGsK04zsincK5NdR7AMOzUFAjeac/oNO62azQiK5eIw=
Message-ID: <61084180-d44a-4664-be13-462706587668@suse.com>
Date: Wed, 31 Jan 2024 10:20:55 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Content-Language: en-US
To: "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Paul Durrant <paul@xen.org>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger.pau@citrix.com>, Kevin Tian <kevin.tian@intel.com>
From: Jan Beulich <jbeulich@suse.com>
Subject: [PATCH] IOMMU: iommu_use_hap_pt() implies CONFIG_HVM
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

Allow the compiler a little more room on DCE by moving the compile-time-
constant condition into the predicate (from the one place where it was
added in an open-coded fashion for XSA-450).

Signed-off-by: Jan Beulich <jbeulich@suse.com>

--- a/xen/drivers/passthrough/vtd/iommu.c
+++ b/xen/drivers/passthrough/vtd/iommu.c
@@ -438,7 +438,7 @@ static paddr_t domain_pgd_maddr(struct d
 
     if ( pgd_maddr )
         /* nothing */;
-    else if ( IS_ENABLED(CONFIG_HVM) && iommu_use_hap_pt(d) )
+    else if ( iommu_use_hap_pt(d) )
     {
         pagetable_t pgt = p2m_get_pagetable(p2m_get_hostp2m(d));
 
--- a/xen/include/xen/iommu.h
+++ b/xen/include/xen/iommu.h
@@ -381,7 +381,8 @@ struct domain_iommu {
 #define iommu_clear_feature(d, f) clear_bit(f, dom_iommu(d)->features)
 
 /* Are we using the domain P2M table as its IOMMU pagetable? */
-#define iommu_use_hap_pt(d)       (dom_iommu(d)->hap_pt_share)
+#define iommu_use_hap_pt(d)       (IS_ENABLED(CONFIG_HVM) && \
+                                   dom_iommu(d)->hap_pt_share)
 
 /* Does the IOMMU pagetable need to be kept synchronized with the P2M */
 #ifdef CONFIG_HAS_PASSTHROUGH


From xen-devel-bounces@lists.xenproject.org Wed Jan 31 10:26:15 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 31 Jan 2024 10:26:15 +0000
Received: from list by lists.xenproject.org with outflank-mailman.673873.1048390 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rV7n5-0005er-BM; Wed, 31 Jan 2024 10:25:59 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 673873.1048390; Wed, 31 Jan 2024 10:25:59 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rV7n5-0005ek-6d; Wed, 31 Jan 2024 10:25:59 +0000
Received: by outflank-mailman (input) for mailman id 673873;
 Wed, 31 Jan 2024 10:25:57 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rV7n3-0005ea-Oi; Wed, 31 Jan 2024 10:25:57 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rV7n3-0002Lh-Mw; Wed, 31 Jan 2024 10:25:57 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rV7n3-0002xI-6B; Wed, 31 Jan 2024 10:25:57 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rV7n3-0003NF-5j; Wed, 31 Jan 2024 10:25:57 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=nZaC7mAil8x1RCjSa/dELeeZVBrDU3PZAMGj4YF9Ow0=; b=CLBezp4l1L+5JOaqRt3jFI0Z1u
	Sk30QUfY7ttDey35omfhmajZjy/qJRjJQKQPGhsC3fcTOZc4IChvfoaKtZwJV+twO/Olux5lVUhIM
	SD+nka8tqy8meFHMe9408cKz1GN8g6u6UU8eDrCBGsvsdXz38t8SiU7Wf8RIFhNNwxXo=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184531-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [xen-4.17-testing test] 184531: tolerable FAIL - PUSHED
X-Osstest-Failures:
    xen-4.17-testing:test-amd64-amd64-xl-shadow:guest-localmigrate/x10:fail:heisenbug
    xen-4.17-testing:test-armhf-armhf-libvirt:saverestore-support-check:fail:nonblocking
    xen-4.17-testing:test-amd64-i386-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    xen-4.17-testing:test-amd64-i386-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    xen-4.17-testing:test-amd64-i386-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    xen-4.17-testing:test-amd64-amd64-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    xen-4.17-testing:test-amd64-amd64-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    xen-4.17-testing:test-armhf-armhf-libvirt-qcow2:saverestore-support-check:fail:nonblocking
    xen-4.17-testing:test-amd64-i386-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    xen-4.17-testing:test-armhf-armhf-libvirt-raw:saverestore-support-check:fail:nonblocking
    xen-4.17-testing:test-amd64-amd64-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    xen-4.17-testing:test-amd64-amd64-qemuu-nested-amd:debian-hvm-install/l1/l2:fail:nonblocking
    xen-4.17-testing:test-amd64-amd64-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    xen-4.17-testing:test-arm64-arm64-xl:migrate-support-check:fail:nonblocking
    xen-4.17-testing:test-arm64-arm64-xl:saverestore-support-check:fail:nonblocking
    xen-4.17-testing:test-amd64-i386-xl-pvshim:guest-start:fail:nonblocking
    xen-4.17-testing:test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    xen-4.17-testing:test-amd64-i386-libvirt:migrate-support-check:fail:nonblocking
    xen-4.17-testing:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    xen-4.17-testing:test-amd64-amd64-libvirt-xsm:migrate-support-check:fail:nonblocking
    xen-4.17-testing:test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    xen-4.17-testing:test-amd64-i386-libvirt-xsm:migrate-support-check:fail:nonblocking
    xen-4.17-testing:test-amd64-i386-libvirt-raw:migrate-support-check:fail:nonblocking
    xen-4.17-testing:test-armhf-armhf-xl-vhd:migrate-support-check:fail:nonblocking
    xen-4.17-testing:test-armhf-armhf-xl-vhd:saverestore-support-check:fail:nonblocking
    xen-4.17-testing:test-arm64-arm64-xl-credit2:migrate-support-check:fail:nonblocking
    xen-4.17-testing:test-arm64-arm64-xl-credit2:saverestore-support-check:fail:nonblocking
    xen-4.17-testing:test-arm64-arm64-libvirt-xsm:migrate-support-check:fail:nonblocking
    xen-4.17-testing:test-arm64-arm64-xl-credit1:migrate-support-check:fail:nonblocking
    xen-4.17-testing:test-arm64-arm64-libvirt-xsm:saverestore-support-check:fail:nonblocking
    xen-4.17-testing:test-arm64-arm64-xl-credit1:saverestore-support-check:fail:nonblocking
    xen-4.17-testing:test-arm64-arm64-xl-xsm:migrate-support-check:fail:nonblocking
    xen-4.17-testing:test-arm64-arm64-xl-xsm:saverestore-support-check:fail:nonblocking
    xen-4.17-testing:test-arm64-arm64-xl-thunderx:migrate-support-check:fail:nonblocking
    xen-4.17-testing:test-arm64-arm64-xl-thunderx:saverestore-support-check:fail:nonblocking
    xen-4.17-testing:test-armhf-armhf-xl-credit2:migrate-support-check:fail:nonblocking
    xen-4.17-testing:test-armhf-armhf-xl-credit2:saverestore-support-check:fail:nonblocking
    xen-4.17-testing:test-armhf-armhf-xl-rtds:migrate-support-check:fail:nonblocking
    xen-4.17-testing:test-armhf-armhf-xl-rtds:saverestore-support-check:fail:nonblocking
    xen-4.17-testing:test-armhf-armhf-xl:migrate-support-check:fail:nonblocking
    xen-4.17-testing:test-armhf-armhf-xl:saverestore-support-check:fail:nonblocking
    xen-4.17-testing:test-armhf-armhf-xl-credit1:migrate-support-check:fail:nonblocking
    xen-4.17-testing:test-armhf-armhf-xl-credit1:saverestore-support-check:fail:nonblocking
    xen-4.17-testing:test-armhf-armhf-libvirt:migrate-support-check:fail:nonblocking
    xen-4.17-testing:test-armhf-armhf-xl-multivcpu:migrate-support-check:fail:nonblocking
    xen-4.17-testing:test-armhf-armhf-xl-multivcpu:saverestore-support-check:fail:nonblocking
    xen-4.17-testing:test-amd64-amd64-libvirt-vhd:migrate-support-check:fail:nonblocking
    xen-4.17-testing:test-armhf-armhf-xl-arndale:migrate-support-check:fail:nonblocking
    xen-4.17-testing:test-armhf-armhf-xl-arndale:saverestore-support-check:fail:nonblocking
    xen-4.17-testing:test-arm64-arm64-libvirt-raw:migrate-support-check:fail:nonblocking
    xen-4.17-testing:test-arm64-arm64-libvirt-raw:saverestore-support-check:fail:nonblocking
    xen-4.17-testing:test-arm64-arm64-xl-vhd:migrate-support-check:fail:nonblocking
    xen-4.17-testing:test-arm64-arm64-xl-vhd:saverestore-support-check:fail:nonblocking
    xen-4.17-testing:test-armhf-armhf-libvirt-qcow2:migrate-support-check:fail:nonblocking
    xen-4.17-testing:test-armhf-armhf-libvirt-raw:migrate-support-check:fail:nonblocking
X-Osstest-Versions-This:
    xen=6b1864afc14d484cdbc9754ce3172ac3dc189846
X-Osstest-Versions-That:
    xen=949a4aad417621638231e4cf9f1b35e8e0328463
From: osstest service owner <osstest-admin@xenproject.org>
Date: Wed, 31 Jan 2024 10:25:57 +0000

flight 184531 xen-4.17-testing real [real]
flight 184539 xen-4.17-testing real-retest [real]
http://logs.test-lab.xenproject.org/osstest/logs/184531/
http://logs.test-lab.xenproject.org/osstest/logs/184539/

Failures :-/ but no regressions.

Tests which are failing intermittently (not blocking):
 test-amd64-amd64-xl-shadow 20 guest-localmigrate/x10 fail pass in 184539-retest

Tests which did not succeed, but are not blocking:
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 184165
 test-amd64-i386-xl-qemuu-win7-amd64 19 guest-stop             fail like 184165
 test-amd64-i386-xl-qemut-ws16-amd64 19 guest-stop             fail like 184165
 test-amd64-i386-xl-qemut-win7-amd64 19 guest-stop             fail like 184165
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 184165
 test-amd64-amd64-xl-qemut-win7-amd64 19 guest-stop            fail like 184165
 test-armhf-armhf-libvirt-qcow2 15 saverestore-support-check   fail like 184165
 test-amd64-i386-xl-qemuu-ws16-amd64 19 guest-stop             fail like 184165
 test-armhf-armhf-libvirt-raw 15 saverestore-support-check    fail  like 184165
 test-amd64-amd64-xl-qemut-ws16-amd64 19 guest-stop            fail like 184165
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 184165
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 184165
 test-arm64-arm64-xl          15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl          16 saverestore-support-check    fail   never pass
 test-amd64-i386-xl-pvshim    14 guest-start                  fail   never pass
 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-amd64-i386-libvirt      15 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt     15 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-amd64-i386-libvirt-xsm  15 migrate-support-check        fail   never pass
 test-amd64-i386-libvirt-raw  14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      15 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-credit2  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit2  16 saverestore-support-check    fail   never pass
 test-arm64-arm64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit1  15 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-xsm 16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-credit1  16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-xsm      15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-xsm      16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-thunderx 15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-thunderx 16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-credit2  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit2  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-rtds     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-rtds     16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl          15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-credit1  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit1  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-multivcpu 15 migrate-support-check        fail  never pass
 test-armhf-armhf-xl-multivcpu 16 saverestore-support-check    fail  never pass
 test-amd64-amd64-libvirt-vhd 14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-arndale  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-arndale  16 saverestore-support-check    fail   never pass
 test-arm64-arm64-libvirt-raw 14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 15 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-vhd      14 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-vhd      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-qcow2 14 migrate-support-check        fail never pass
 test-armhf-armhf-libvirt-raw 14 migrate-support-check        fail   never pass

version targeted for testing:
 xen                  6b1864afc14d484cdbc9754ce3172ac3dc189846
baseline version:
 xen                  949a4aad417621638231e4cf9f1b35e8e0328463

Last test of basis   184165  2023-12-18 12:38:50 Z   43 days
Testing same since   184531  2024-01-30 14:07:13 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Andrew Cooper <andrew.cooper3@citrix.com>
  Jan Beulich <jbeulich@suse.com>
  Roger Pau Monné <roger.pau@citrix.com>

jobs:
 build-amd64-xsm                                              pass    
 build-arm64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64-xtf                                              pass    
 build-amd64                                                  pass    
 build-arm64                                                  pass    
 build-armhf                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-arm64-libvirt                                          pass    
 build-armhf-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-prev                                             pass    
 build-i386-prev                                              pass    
 build-amd64-pvops                                            pass    
 build-arm64-pvops                                            pass    
 build-armhf-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-xtf-amd64-amd64-1                                       pass    
 test-xtf-amd64-amd64-2                                       pass    
 test-xtf-amd64-amd64-3                                       pass    
 test-xtf-amd64-amd64-4                                       pass    
 test-xtf-amd64-amd64-5                                       pass    
 test-amd64-amd64-xl                                          pass    
 test-amd64-coresched-amd64-xl                                pass    
 test-arm64-arm64-xl                                          pass    
 test-armhf-armhf-xl                                          pass    
 test-amd64-i386-xl                                           pass    
 test-amd64-coresched-i386-xl                                 pass    
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm           pass    
 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm            pass    
 test-amd64-amd64-xl-qemut-stubdom-debianhvm-amd64-xsm        pass    
 test-amd64-i386-xl-qemut-stubdom-debianhvm-amd64-xsm         pass    
 test-amd64-amd64-xl-qemut-debianhvm-i386-xsm                 pass    
 test-amd64-i386-xl-qemut-debianhvm-i386-xsm                  pass    
 test-amd64-amd64-xl-qemuu-debianhvm-i386-xsm                 pass    
 test-amd64-i386-xl-qemuu-debianhvm-i386-xsm                  pass    
 test-amd64-amd64-libvirt-xsm                                 pass    
 test-arm64-arm64-libvirt-xsm                                 pass    
 test-amd64-i386-libvirt-xsm                                  pass    
 test-amd64-amd64-xl-xsm                                      pass    
 test-arm64-arm64-xl-xsm                                      pass    
 test-amd64-i386-xl-xsm                                       pass    
 test-amd64-amd64-qemuu-nested-amd                            fail    
 test-amd64-amd64-xl-pvhv2-amd                                pass    
 test-amd64-i386-qemut-rhel6hvm-amd                           pass    
 test-amd64-i386-qemuu-rhel6hvm-amd                           pass    
 test-amd64-amd64-dom0pvh-xl-amd                              pass    
 test-amd64-amd64-xl-qemut-debianhvm-amd64                    pass    
 test-amd64-i386-xl-qemut-debianhvm-amd64                     pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64                    pass    
 test-amd64-i386-xl-qemuu-debianhvm-amd64                     pass    
 test-amd64-i386-freebsd10-amd64                              pass    
 test-amd64-amd64-qemuu-freebsd11-amd64                       pass    
 test-amd64-amd64-qemuu-freebsd12-amd64                       pass    
 test-amd64-amd64-xl-qemuu-ovmf-amd64                         pass    
 test-amd64-i386-xl-qemuu-ovmf-amd64                          pass    
 test-amd64-amd64-xl-qemut-win7-amd64                         fail    
 test-amd64-i386-xl-qemut-win7-amd64                          fail    
 test-amd64-amd64-xl-qemuu-win7-amd64                         fail    
 test-amd64-i386-xl-qemuu-win7-amd64                          fail    
 test-amd64-amd64-xl-qemut-ws16-amd64                         fail    
 test-amd64-i386-xl-qemut-ws16-amd64                          fail    
 test-amd64-amd64-xl-qemuu-ws16-amd64                         fail    
 test-amd64-i386-xl-qemuu-ws16-amd64                          fail    
 test-armhf-armhf-xl-arndale                                  pass    
 test-amd64-amd64-xl-credit1                                  pass    
 test-arm64-arm64-xl-credit1                                  pass    
 test-armhf-armhf-xl-credit1                                  pass    
 test-amd64-amd64-xl-credit2                                  pass    
 test-arm64-arm64-xl-credit2                                  pass    
 test-armhf-armhf-xl-credit2                                  pass    
 test-amd64-amd64-xl-qemuu-dmrestrict-amd64-dmrestrict        pass    
 test-amd64-i386-xl-qemuu-dmrestrict-amd64-dmrestrict         pass    
 test-amd64-i386-freebsd10-i386                               pass    
 test-amd64-amd64-qemuu-nested-intel                          pass    
 test-amd64-amd64-xl-pvhv2-intel                              pass    
 test-amd64-i386-qemut-rhel6hvm-intel                         pass    
 test-amd64-i386-qemuu-rhel6hvm-intel                         pass    
 test-amd64-amd64-dom0pvh-xl-intel                            pass    
 test-amd64-amd64-libvirt                                     pass    
 test-armhf-armhf-libvirt                                     pass    
 test-amd64-i386-libvirt                                      pass    
 test-amd64-amd64-livepatch                                   pass    
 test-amd64-i386-livepatch                                    pass    
 test-amd64-amd64-migrupgrade                                 pass    
 test-amd64-i386-migrupgrade                                  pass    
 test-amd64-amd64-xl-multivcpu                                pass    
 test-armhf-armhf-xl-multivcpu                                pass    
 test-amd64-amd64-pair                                        pass    
 test-amd64-i386-pair                                         pass    
 test-amd64-amd64-libvirt-pair                                pass    
 test-amd64-i386-libvirt-pair                                 pass    
 test-amd64-amd64-xl-pvshim                                   pass    
 test-amd64-i386-xl-pvshim                                    fail    
 test-amd64-amd64-pygrub                                      pass    
 test-armhf-armhf-libvirt-qcow2                               pass    
 test-amd64-amd64-xl-qcow2                                    pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-armhf-armhf-libvirt-raw                                 pass    
 test-amd64-i386-libvirt-raw                                  pass    
 test-amd64-amd64-xl-rtds                                     pass    
 test-armhf-armhf-xl-rtds                                     pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64-shadow             pass    
 test-amd64-i386-xl-qemuu-debianhvm-amd64-shadow              pass    
 test-amd64-amd64-xl-shadow                                   fail    
 test-amd64-i386-xl-shadow                                    pass    
 test-arm64-arm64-xl-thunderx                                 pass    
 test-amd64-amd64-libvirt-vhd                                 pass    
 test-arm64-arm64-xl-vhd                                      pass    
 test-armhf-armhf-xl-vhd                                      pass    
 test-amd64-i386-xl-vhd                                       pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Pushing revision :

To xenbits.xen.org:/home/xen/git/xen.git
   949a4aad41..6b1864afc1  6b1864afc14d484cdbc9754ce3172ac3dc189846 -> stable-4.17


From xen-devel-bounces@lists.xenproject.org Wed Jan 31 10:40:33 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 31 Jan 2024 10:40:33 +0000
Received: from list by lists.xenproject.org with outflank-mailman.673880.1048398 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rV815-0000nj-Jk; Wed, 31 Jan 2024 10:40:27 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 673880.1048398; Wed, 31 Jan 2024 10:40:27 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rV815-0000nc-HD; Wed, 31 Jan 2024 10:40:27 +0000
Received: by outflank-mailman (input) for mailman id 673880;
 Wed, 31 Jan 2024 10:40:26 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=6GWq=JJ=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1rV813-0000nW-VS
 for xen-devel@lists.xenproject.org; Wed, 31 Jan 2024 10:40:25 +0000
Received: from mail-lf1-x131.google.com (mail-lf1-x131.google.com
 [2a00:1450:4864:20::131])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 23a1d82a-c025-11ee-98f5-efadbce2ee36;
 Wed, 31 Jan 2024 11:40:24 +0100 (CET)
Received: by mail-lf1-x131.google.com with SMTP id
 2adb3069b0e04-51120e285f6so1447054e87.2
 for <xen-devel@lists.xenproject.org>; Wed, 31 Jan 2024 02:40:24 -0800 (PST)
Received: from [10.80.67.30] (default-46-102-197-194.interdsl.co.uk.
 [46.102.197.194]) by smtp.gmail.com with ESMTPSA id
 p23-20020a05600c1d9700b0040e9d507424sm1231608wms.5.2024.01.31.02.40.23
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 31 Jan 2024 02:40:23 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 23a1d82a-c025-11ee-98f5-efadbce2ee36
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1706697623; x=1707302423; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=lrYy/EKGjcVbpMiiSuqmpjew2o/meco3MR/8y6Er69w=;
        b=Gk5VMvSexUct2htMxrrejqXs6Y9mxF369W3ZR9OT2Gs1v+7/yr2bERlleKmA8O+aGj
         F+IfIobIZ0amf6sJK/VRY/Grv26sdPzBho9hSpQShp+TjS3e0D46W2+TcTCxUpbok+81
         BDLqRZdd0Tvr+wA+0C8XsyuoiZ0KBtgg5NYWA=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706697623; x=1707302423;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=lrYy/EKGjcVbpMiiSuqmpjew2o/meco3MR/8y6Er69w=;
        b=mX7rh4Z/jZeZKeBt4VEdHMPhoss4xcKyKBam2aQ+PULyxZ5nk1mf+IgzgNePZ92wav
         b7RaWKMAGit5joxjn5GnRHhZHmqu21AC7IjvTAL9NADRB9Wzym7jyc/Yg/TcUB3uKATi
         Vu6NIXP2UwDYvPHML7O01Jv7XM5nrAMAGIrJWq+iNZ6XAMcK+0HoJTYpOtjczIV42B/3
         9dYuJCj7ZXiopX75+qztJ5rkL+GvnVhrr95L9a+axD7ig8cQmdwv82l5Xl5xzAtpkYCm
         2K0UJ5Yvj2ptDxd17J9sTfFyGmbGQK/yJIYWncdbN92oKcj8Lia0OyzDhhEqcVQ5upN5
         j5xw==
X-Gm-Message-State: AOJu0YwQnlgAILVwCTXSqLoVa9A7GwdOwLtH0DYzwO94O5ojJh5lUlv+
	BjuLT1UgdcBcJ5rr7o+89l6X9rbuV96iLKsZW/+lWprZNfTWoupVFDkWWUd4Z6s=
X-Google-Smtp-Source: AGHT+IEqa7UpLy/YzfYblh4Yl33bu1uP9OndEQcjvExKzkU0V17sTvKi+eMd3LjrTyXfLC+CYdrcUQ==
X-Received: by 2002:a05:6512:2306:b0:50e:aa1f:4427 with SMTP id o6-20020a056512230600b0050eaa1f4427mr1066142lfu.51.1706697623499;
        Wed, 31 Jan 2024 02:40:23 -0800 (PST)
X-Forwarded-Encrypted: i=0; AJvYcCUkVwgdSetcLkoo0zdysQkAyNjr8ne/OuGtV8rg9w3hJaJLFUrsjbdjLUe7CooOMOCHm8GpnFqZCOx+eT/q3z0ksBGrDK31PHre7OcYHASiaFzbK0StvnXJJG2M59WXhq+s1wiQ7MLU1J5ToTi71Xzu8cTNDhMHt8Zsaw==
Message-ID: <c9f2d1ae-6793-4c0c-a1b9-ea12a4b63132@citrix.com>
Date: Wed, 31 Jan 2024 10:40:22 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] IOMMU: iommu_use_hap_pt() implies CONFIG_HVM
Content-Language: en-GB
To: Jan Beulich <jbeulich@suse.com>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Cc: Paul Durrant <paul@xen.org>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger.pau@citrix.com>, Kevin Tian <kevin.tian@intel.com>
References: <61084180-d44a-4664-be13-462706587668@suse.com>
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 xsFNBFLhNn8BEADVhE+Hb8i0GV6mihnnr/uiQQdPF8kUoFzCOPXkf7jQ5sLYeJa0cQi6Penp
 VtiFYznTairnVsN5J+ujSTIb+OlMSJUWV4opS7WVNnxHbFTPYZVQ3erv7NKc2iVizCRZ2Kxn
 srM1oPXWRic8BIAdYOKOloF2300SL/bIpeD+x7h3w9B/qez7nOin5NzkxgFoaUeIal12pXSR
 Q354FKFoy6Vh96gc4VRqte3jw8mPuJQpfws+Pb+swvSf/i1q1+1I4jsRQQh2m6OTADHIqg2E
 ofTYAEh7R5HfPx0EXoEDMdRjOeKn8+vvkAwhviWXTHlG3R1QkbE5M/oywnZ83udJmi+lxjJ5
 YhQ5IzomvJ16H0Bq+TLyVLO/VRksp1VR9HxCzItLNCS8PdpYYz5TC204ViycobYU65WMpzWe
 LFAGn8jSS25XIpqv0Y9k87dLbctKKA14Ifw2kq5OIVu2FuX+3i446JOa2vpCI9GcjCzi3oHV
 e00bzYiHMIl0FICrNJU0Kjho8pdo0m2uxkn6SYEpogAy9pnatUlO+erL4LqFUO7GXSdBRbw5
 gNt25XTLdSFuZtMxkY3tq8MFss5QnjhehCVPEpE6y9ZjI4XB8ad1G4oBHVGK5LMsvg22PfMJ
 ISWFSHoF/B5+lHkCKWkFxZ0gZn33ju5n6/FOdEx4B8cMJt+cWwARAQABzSlBbmRyZXcgQ29v
 cGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPsLBegQTAQgAJAIbAwULCQgHAwUVCgkI
 CwUWAgMBAAIeAQIXgAUCWKD95wIZAQAKCRBlw/kGpdefoHbdD/9AIoR3k6fKl+RFiFpyAhvO
 59ttDFI7nIAnlYngev2XUR3acFElJATHSDO0ju+hqWqAb8kVijXLops0gOfqt3VPZq9cuHlh
 IMDquatGLzAadfFx2eQYIYT+FYuMoPZy/aTUazmJIDVxP7L383grjIkn+7tAv+qeDfE+txL4
 SAm1UHNvmdfgL2/lcmL3xRh7sub3nJilM93RWX1Pe5LBSDXO45uzCGEdst6uSlzYR/MEr+5Z
 JQQ32JV64zwvf/aKaagSQSQMYNX9JFgfZ3TKWC1KJQbX5ssoX/5hNLqxMcZV3TN7kU8I3kjK
 mPec9+1nECOjjJSO/h4P0sBZyIUGfguwzhEeGf4sMCuSEM4xjCnwiBwftR17sr0spYcOpqET
 ZGcAmyYcNjy6CYadNCnfR40vhhWuCfNCBzWnUW0lFoo12wb0YnzoOLjvfD6OL3JjIUJNOmJy
 RCsJ5IA/Iz33RhSVRmROu+TztwuThClw63g7+hoyewv7BemKyuU6FTVhjjW+XUWmS/FzknSi
 dAG+insr0746cTPpSkGl3KAXeWDGJzve7/SBBfyznWCMGaf8E2P1oOdIZRxHgWj0zNr1+ooF
 /PzgLPiCI4OMUttTlEKChgbUTQ+5o0P080JojqfXwbPAyumbaYcQNiH1/xYbJdOFSiBv9rpt
 TQTBLzDKXok86M7BTQRS4TZ/ARAAkgqudHsp+hd82UVkvgnlqZjzz2vyrYfz7bkPtXaGb9H4
 Rfo7mQsEQavEBdWWjbga6eMnDqtu+FC+qeTGYebToxEyp2lKDSoAsvt8w82tIlP/EbmRbDVn
 7bhjBlfRcFjVYw8uVDPptT0TV47vpoCVkTwcyb6OltJrvg/QzV9f07DJswuda1JH3/qvYu0p
 vjPnYvCq4NsqY2XSdAJ02HrdYPFtNyPEntu1n1KK+gJrstjtw7KsZ4ygXYrsm/oCBiVW/OgU
 g/XIlGErkrxe4vQvJyVwg6YH653YTX5hLLUEL1NS4TCo47RP+wi6y+TnuAL36UtK/uFyEuPy
 wwrDVcC4cIFhYSfsO0BumEI65yu7a8aHbGfq2lW251UcoU48Z27ZUUZd2Dr6O/n8poQHbaTd
 6bJJSjzGGHZVbRP9UQ3lkmkmc0+XCHmj5WhwNNYjgbbmML7y0fsJT5RgvefAIFfHBg7fTY/i
 kBEimoUsTEQz+N4hbKwo1hULfVxDJStE4sbPhjbsPCrlXf6W9CxSyQ0qmZ2bXsLQYRj2xqd1
 bpA+1o1j2N4/au1R/uSiUFjewJdT/LX1EklKDcQwpk06Af/N7VZtSfEJeRV04unbsKVXWZAk
 uAJyDDKN99ziC0Wz5kcPyVD1HNf8bgaqGDzrv3TfYjwqayRFcMf7xJaL9xXedMcAEQEAAcLB
 XwQYAQgACQUCUuE2fwIbDAAKCRBlw/kGpdefoG4XEACD1Qf/er8EA7g23HMxYWd3FXHThrVQ
 HgiGdk5Yh632vjOm9L4sd/GCEACVQKjsu98e8o3ysitFlznEns5EAAXEbITrgKWXDDUWGYxd
 pnjj2u+GkVdsOAGk0kxczX6s+VRBhpbBI2PWnOsRJgU2n10PZ3mZD4Xu9kU2IXYmuW+e5KCA
 vTArRUdCrAtIa1k01sPipPPw6dfxx2e5asy21YOytzxuWFfJTGnVxZZSCyLUO83sh6OZhJkk
 b9rxL9wPmpN/t2IPaEKoAc0FTQZS36wAMOXkBh24PQ9gaLJvfPKpNzGD8XWR5HHF0NLIJhgg
 4ZlEXQ2fVp3XrtocHqhu4UZR4koCijgB8sB7Tb0GCpwK+C4UePdFLfhKyRdSXuvY3AHJd4CP
 4JzW0Bzq/WXY3XMOzUTYApGQpnUpdOmuQSfpV9MQO+/jo7r6yPbxT7CwRS5dcQPzUiuHLK9i
 nvjREdh84qycnx0/6dDroYhp0DFv4udxuAvt1h4wGwTPRQZerSm4xaYegEFusyhbZrI0U9tJ
 B8WrhBLXDiYlyJT6zOV2yZFuW47VrLsjYnHwn27hmxTC/7tvG3euCklmkn9Sl9IAKFu29RSo
 d5bD8kMSCYsTqtTfT6W4A3qHGvIDta3ptLYpIAOD2sY3GYq2nf3Bbzx81wZK14JdDDHUX2Rs
 6+ahAA==
In-Reply-To: <61084180-d44a-4664-be13-462706587668@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 31/01/2024 9:20 am, Jan Beulich wrote:
> Allow the compiler a little more room on DCE by moving the compile-time-
> constant condition into the predicate (from the one place where it was
> added in an open-coded fashion for XSA-450).
>
> Signed-off-by: Jan Beulich <jbeulich@suse.com>

Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>

I'm surprised that's happy compiling if it's actually doing anything at
all, given that it's an unguarded variable reference.


From xen-devel-bounces@lists.xenproject.org Wed Jan 31 10:42:57 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 31 Jan 2024 10:42:57 +0000
Received: from list by lists.xenproject.org with outflank-mailman.673884.1048415 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rV83U-0001MO-8m; Wed, 31 Jan 2024 10:42:56 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 673884.1048415; Wed, 31 Jan 2024 10:42:56 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rV83U-0001M4-3G; Wed, 31 Jan 2024 10:42:56 +0000
Received: by outflank-mailman (input) for mailman id 673884;
 Wed, 31 Jan 2024 10:42:54 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=/tZP=JJ=cloud.com=edwin.torok@srs-se1.protection.inumbo.net>)
 id 1rV83S-0001KI-KH
 for xen-devel@lists.xenproject.org; Wed, 31 Jan 2024 10:42:54 +0000
Received: from mail-wr1-x433.google.com (mail-wr1-x433.google.com
 [2a00:1450:4864:20::433])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 7d08452e-c025-11ee-8a43-1f161083a0e0;
 Wed, 31 Jan 2024 11:42:54 +0100 (CET)
Received: by mail-wr1-x433.google.com with SMTP id
 ffacd0b85a97d-33ae3be1c37so435100f8f.0
 for <xen-devel@lists.xenproject.org>; Wed, 31 Jan 2024 02:42:54 -0800 (PST)
Received: from fedora39.edvint-x-u ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 bk24-20020a0560001d9800b0033add8aa1d2sm12678460wrb.44.2024.01.31.02.42.53
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 31 Jan 2024 02:42:53 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 7d08452e-c025-11ee-8a43-1f161083a0e0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1706697773; x=1707302573; darn=lists.xenproject.org;
        h=content-transfer-encoding:mime-version:references:in-reply-to
         :message-id:date:subject:cc:to:from:from:to:cc:subject:date
         :message-id:reply-to;
        bh=MlDvwn/xwDXSCmMe/kTB137wQ3seg5CSZJxIiCw9FZo=;
        b=j1sd6Mzi5UQALwEyeHj+zbX+aRiZE35shJBgvILgYF0Wkyqp6txXJvCxpS3M3ThgoG
         nuuHAdsr9UHpQ5ZfhV9LvVYmOxCKpOIcoKghy5wIylGy+yHr3RnMgbl2SfxURzax5tWO
         Nby4/25tzLwuOOjo2JkDyw3bCP/GAcmOTHEhY=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706697773; x=1707302573;
        h=content-transfer-encoding:mime-version:references:in-reply-to
         :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to;
        bh=MlDvwn/xwDXSCmMe/kTB137wQ3seg5CSZJxIiCw9FZo=;
        b=q9gx4wHO83XB8GX+hlMHyyU9xMlXQMi7UghmfCppWQ8tu//+pL85KV+N2sh3iNeXjC
         e/6AN4yFel3NeLmj25kf87xiSMrpLJ6rawpUXREBpKhLZYlJgX+A4cAcNBcSDzKdsWjx
         fGtZzvsFDVOvn3cOD99imzZk6sO+XDgXArgWYETGrRxcFhXZt6PjWbezyk1xgpCAEu27
         VCLEnXMzACtVul5z7Azu1cnuEp1SFD4//ZJWzdiqdPVaAs6R+cKfC46Ks3zpB+5tFivR
         G9ct1mlFbqdIIgqxwFdMopMVrPl7s4pQFC4uKuPIvyxqPYquIu59N2+1/Uf7KbJ0S3eW
         pCuQ==
X-Gm-Message-State: AOJu0YxIyHD1QHOg1ga1ux9XMtV4o4ViIESh7w0pCoZE0mgzf9jYdbPg
	bCS+jXE9DVhdLoi40TNeBUj5OUtoyZn8DqlpVdjL0LoKdlEhXE0zHdbXCzhFLCadxcoH/bYi7ds
	W910Ulw==
X-Google-Smtp-Source: AGHT+IHPOLG0f2wML2y1vEWWVQlreaVZFlkpTOFcDLELLu7QDtb5Y/usbHBFd0fIOHfswto+nNh0Wg==
X-Received: by 2002:a5d:664d:0:b0:33b:147:7c61 with SMTP id f13-20020a5d664d000000b0033b01477c61mr1301751wrw.5.1706697773360;
        Wed, 31 Jan 2024 02:42:53 -0800 (PST)
From: =?UTF-8?q?Edwin=20T=C3=B6r=C3=B6k?= <edwin.torok@cloud.com>
To: xen-devel@lists.xenproject.org
Cc: =?UTF-8?q?Edwin=20T=C3=B6r=C3=B6k?= <edwin.torok@cloud.com>,
	Wei Liu <wl@xen.org>,
	Anthony PERARD <anthony.perard@citrix.com>,
	Christian Lindig <christian.lindig@citrix.com>,
	David Scott <dave@recoil.org>
Subject: [PATCH v1 1/2] oxenstored: fix build on OCaml 5.x
Date: Wed, 31 Jan 2024 10:42:48 +0000
Message-ID: <e3a8e4361f7e06b61660a4eeeb17f16555a07c6e.1706697216.git.edwin.torok@cloud.com>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <cover.1706697216.git.edwin.torok@cloud.com>
References: <cover.1706697216.git.edwin.torok@cloud.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Char.lowercase got removed in OCaml 5.0 (it has been deprecated since 2014).

Char.lowercase_ascii has existed since OCaml 4.03, so that is the new
minimum version for oxenstored.

(Given the choice between supporting a new release and dropping support
for an 8y+ old release, we drop support for OCaml <4.03)

Signed-off-by: Edwin Török <edwin.torok@cloud.com>
---
 tools/configure               | 2 +-
 tools/configure.ac            | 2 +-
 tools/ocaml/xenstored/disk.ml | 2 +-
 3 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/tools/configure b/tools/configure
index 0135a0059a..5723efaa56 100755
--- a/tools/configure
+++ b/tools/configure
@@ -6836,7 +6836,7 @@ else
                      -e 's/[^0-9]//g'`
 
 
-  ax_compare_version_B=`echo "4.02.0" | sed -e 's/\([0-9]*\)/Z\1Z/g' \
+  ax_compare_version_B=`echo "4.03.0" | sed -e 's/\([0-9]*\)/Z\1Z/g' \
                      -e 's/Z\([0-9]\)Z/Z0\1Z/g' \
                      -e 's/Z\([0-9][0-9]\)Z/Z0\1Z/g' \
                      -e 's/Z\([0-9][0-9][0-9]\)Z/Z0\1Z/g' \
diff --git a/tools/configure.ac b/tools/configure.ac
index 618ef8c63f..c979c3de7c 100644
--- a/tools/configure.ac
+++ b/tools/configure.ac
@@ -336,7 +336,7 @@ AS_IF([test "x$ocamltools" = "xy"], [
             AC_MSG_ERROR([Ocaml tools enabled, but missing ocamlopt or ocamlfind])])
         ocamltools="n"
     ], [
-        AX_COMPARE_VERSION([$OCAMLVERSION], [lt], [4.02.0], [
+        AX_COMPARE_VERSION([$OCAMLVERSION], [lt], [4.03.0], [
             AS_IF([test "x$enable_ocamltools" = "xyes"], [
                 AC_MSG_ERROR([Your version of OCaml: $OCAMLVERSION is not supported])])
             ocamltools="n"
diff --git a/tools/ocaml/xenstored/disk.ml b/tools/ocaml/xenstored/disk.ml
index 91f945f2bd..ccaa048faf 100644
--- a/tools/ocaml/xenstored/disk.ml
+++ b/tools/ocaml/xenstored/disk.ml
@@ -30,7 +30,7 @@ let undec c =
   | _          -> raise (Failure "undecify")
 
 let unhex c =
-  let c = Char.lowercase c in
+  let c = Char.lowercase_ascii c in
   match c with
   | '0' .. '9' -> (Char.code c) - (Char.code '0')
   | 'a' .. 'f' -> (Char.code c) - (Char.code 'a') + 10
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Wed Jan 31 10:42:57 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 31 Jan 2024 10:42:57 +0000
Received: from list by lists.xenproject.org with outflank-mailman.673885.1048429 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rV83V-0001nh-DF; Wed, 31 Jan 2024 10:42:57 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 673885.1048429; Wed, 31 Jan 2024 10:42:57 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rV83V-0001nW-AU; Wed, 31 Jan 2024 10:42:57 +0000
Received: by outflank-mailman (input) for mailman id 673885;
 Wed, 31 Jan 2024 10:42:56 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=/tZP=JJ=cloud.com=edwin.torok@srs-se1.protection.inumbo.net>)
 id 1rV83U-0001KI-Dg
 for xen-devel@lists.xenproject.org; Wed, 31 Jan 2024 10:42:56 +0000
Received: from mail-wm1-x331.google.com (mail-wm1-x331.google.com
 [2a00:1450:4864:20::331])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 7e16cc59-c025-11ee-8a43-1f161083a0e0;
 Wed, 31 Jan 2024 11:42:55 +0100 (CET)
Received: by mail-wm1-x331.google.com with SMTP id
 5b1f17b1804b1-40e76626170so52544845e9.2
 for <xen-devel@lists.xenproject.org>; Wed, 31 Jan 2024 02:42:55 -0800 (PST)
Received: from fedora39.edvint-x-u ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 bk24-20020a0560001d9800b0033add8aa1d2sm12678460wrb.44.2024.01.31.02.42.54
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 31 Jan 2024 02:42:54 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 7e16cc59-c025-11ee-8a43-1f161083a0e0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1706697774; x=1707302574; darn=lists.xenproject.org;
        h=content-transfer-encoding:mime-version:references:in-reply-to
         :message-id:date:subject:cc:to:from:from:to:cc:subject:date
         :message-id:reply-to;
        bh=J5AH9yHn3ohWU9F4UULaCJq3ZsnSjizKQQi0XdMgt7A=;
        b=NhSs4QxeeF70Cr5d1VRqSOH3yWnT/jOtnagTQpFXN7j9mtR1vsEhF/AVd9DDTrXiLe
         ETejUMv0TdOiLG3JnyRJOVKVTH8ocVuyWNrT7TlEtTzarv5Z4xJW5NKf1wZl2hmM5qq4
         Een2Q5mZNTdK4GY3XF3b46RUTJNvsWMckYJiY=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706697774; x=1707302574;
        h=content-transfer-encoding:mime-version:references:in-reply-to
         :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to;
        bh=J5AH9yHn3ohWU9F4UULaCJq3ZsnSjizKQQi0XdMgt7A=;
        b=KkBlCxagrDVVLsXhWrEtHIN77EnmdPil/RFxIm80ZDv/kc+RCgcvy7zHDXfspl5ET+
         ZITTHTBAwNx63WUUUanLzgY27E8bGOq/LwaWHEG2yon25Gk2g/XClViyJTj60TfKjwy4
         aiLmL2oZQtZVrD9yFbJGesHA1/wZI1rYvjFbz0E1kB9kBBo5dVh8HyjpDqKftTzu5FSW
         zLeYZUIu+KtM3a1JDJ3rIEF0+2GtPb2syDpBh8LGFxWFg6GIxYwQpKMj4vpKyMK5DWwE
         dJuYoXbN5YQ7fjZ380KdROzl+O7mWh1z3i6dL915rp+TdASFpytdJs10clmrSYj4Fs3+
         3eNA==
X-Gm-Message-State: AOJu0Yzrz5USWeiPwwe+htQptu/qKLaVQoP0e0a90c87K3q9PAvfjpf6
	1ToFzl1q5sySDV2fHxKlDbSB1SGD5Ins/l9MovrH+P1h0D1qfQoIYr/KBX7YaCOgN9wOJ2p+AsT
	BnY4rrw==
X-Google-Smtp-Source: AGHT+IEEsFlkTWM9bjXW8ZddseJCsuSD+k9xFDx5fKoCcVlcaS1LOuyezQzpDd11BH6oZjgM7PYrxw==
X-Received: by 2002:adf:fb12:0:b0:33a:e950:58fb with SMTP id c18-20020adffb12000000b0033ae95058fbmr773837wrr.57.1706697774482;
        Wed, 31 Jan 2024 02:42:54 -0800 (PST)
From: =?UTF-8?q?Edwin=20T=C3=B6r=C3=B6k?= <edwin.torok@cloud.com>
To: xen-devel@lists.xenproject.org
Cc: =?UTF-8?q?Edwin=20T=C3=B6r=C3=B6k?= <edwin.torok@cloud.com>,
	Wei Liu <wl@xen.org>,
	Anthony PERARD <anthony.perard@citrix.com>
Subject: [PATCH v1 2/2] tools/ocaml: bump minimum version to OCaml 4.05
Date: Wed, 31 Jan 2024 10:42:49 +0000
Message-ID: <11cc8480e6e52d5c2dccc7d8d65e1362c7fba685.1706697216.git.edwin.torok@cloud.com>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <cover.1706697216.git.edwin.torok@cloud.com>
References: <cover.1706697216.git.edwin.torok@cloud.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

We tried bumping to 4.06.1 [1] previously, but OSSTest was holding us
back.
So bump to OCaml 4.05 instead, which should match the version on
OSSTest?

[1]: https://patchwork.kernel.org/project/xen-devel/patch/ac885ce2b63159d26d857dc3e53cf8aa63ae3646.1659118200.git.edvin.torok@citrix.com/

Signed-off-by: Edwin Török <edwin.torok@cloud.com>
---
 tools/configure    | 2 +-
 tools/configure.ac | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/tools/configure b/tools/configure
index 5723efaa56..3d557234b3 100755
--- a/tools/configure
+++ b/tools/configure
@@ -6836,7 +6836,7 @@ else
                      -e 's/[^0-9]//g'`
 
 
-  ax_compare_version_B=`echo "4.03.0" | sed -e 's/\([0-9]*\)/Z\1Z/g' \
+  ax_compare_version_B=`echo "4.05.0" | sed -e 's/\([0-9]*\)/Z\1Z/g' \
                      -e 's/Z\([0-9]\)Z/Z0\1Z/g' \
                      -e 's/Z\([0-9][0-9]\)Z/Z0\1Z/g' \
                      -e 's/Z\([0-9][0-9][0-9]\)Z/Z0\1Z/g' \
diff --git a/tools/configure.ac b/tools/configure.ac
index c979c3de7c..851887080c 100644
--- a/tools/configure.ac
+++ b/tools/configure.ac
@@ -336,7 +336,7 @@ AS_IF([test "x$ocamltools" = "xy"], [
             AC_MSG_ERROR([Ocaml tools enabled, but missing ocamlopt or ocamlfind])])
         ocamltools="n"
     ], [
-        AX_COMPARE_VERSION([$OCAMLVERSION], [lt], [4.03.0], [
+        AX_COMPARE_VERSION([$OCAMLVERSION], [lt], [4.05.0], [
             AS_IF([test "x$enable_ocamltools" = "xyes"], [
                 AC_MSG_ERROR([Your version of OCaml: $OCAMLVERSION is not supported])])
             ocamltools="n"
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Wed Jan 31 10:42:57 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 31 Jan 2024 10:42:57 +0000
Received: from list by lists.xenproject.org with outflank-mailman.673883.1048409 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rV83T-0001Ka-Vw; Wed, 31 Jan 2024 10:42:55 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 673883.1048409; Wed, 31 Jan 2024 10:42:55 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rV83T-0001KT-Sj; Wed, 31 Jan 2024 10:42:55 +0000
Received: by outflank-mailman (input) for mailman id 673883;
 Wed, 31 Jan 2024 10:42:53 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=/tZP=JJ=cloud.com=edwin.torok@srs-se1.protection.inumbo.net>)
 id 1rV83R-0001KI-QM
 for xen-devel@lists.xenproject.org; Wed, 31 Jan 2024 10:42:53 +0000
Received: from mail-wr1-x42d.google.com (mail-wr1-x42d.google.com
 [2a00:1450:4864:20::42d])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 7c44744f-c025-11ee-8a43-1f161083a0e0;
 Wed, 31 Jan 2024 11:42:52 +0100 (CET)
Received: by mail-wr1-x42d.google.com with SMTP id
 ffacd0b85a97d-33ae38df9d2so2827077f8f.3
 for <xen-devel@lists.xenproject.org>; Wed, 31 Jan 2024 02:42:52 -0800 (PST)
Received: from fedora39.edvint-x-u ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 bk24-20020a0560001d9800b0033add8aa1d2sm12678460wrb.44.2024.01.31.02.42.51
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 31 Jan 2024 02:42:51 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 7c44744f-c025-11ee-8a43-1f161083a0e0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1706697771; x=1707302571; darn=lists.xenproject.org;
        h=content-transfer-encoding:mime-version:message-id:date:subject:cc
         :to:from:from:to:cc:subject:date:message-id:reply-to;
        bh=G9G6lN19S7UuH82NSIIjIF9gI4HbSZalaDbkGSamEmE=;
        b=N1pqHJkEdrHW9tT5PKMI93Ige+eFrvjVslGq73VbWaFMDSgqVsUIvHcuh1CSPS8uDa
         0Z+sOeRzbpqJL1KhRO5ufI4nq9RXpfBvq3qRqK5N5L6NsRUxTBimNUCYethWT+pMu0Za
         P3cCtOEMaBvzOf4r8Ciiq1m9M8ofNnssgA5CE=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706697771; x=1707302571;
        h=content-transfer-encoding:mime-version:message-id:date:subject:cc
         :to:from:x-gm-message-state:from:to:cc:subject:date:message-id
         :reply-to;
        bh=G9G6lN19S7UuH82NSIIjIF9gI4HbSZalaDbkGSamEmE=;
        b=WryxZCnMqCTtju7afTdE7WnvatLAwfOD7hydX0pT3k30W3iIE8i3ls0Cka/nhPcoWU
         0W+I6DxVdAuRTpIbFSYM0hCJG5KcwLp8lP/CP1LOYCTiYnwWRs0z4KNXi6dYnHapv7wP
         q/QSwcp2FE4fpRN9gBTwmux3jGhd3SczBYgx2nak7cUi8VfBsJKbTZALxrZ4XxhcSMtt
         1bF+bSvyPmo/3Lnmw86omVHlGy5gBIiYVAc+7FDrqt9JMAXD72G+OxhKyda9CyLQmeiv
         2/0gxSs1jePgkcI1bL/uOaTJVcUlNwiiTWFruluzC1L28kAMAPadpQUTsL0VZHtzksiN
         phzg==
X-Gm-Message-State: AOJu0YzVaBxOYHvw5wpOvy86pFO5TvbV0nK/O71lmVeItAtFd3XfgM5Q
	t7Vnj/OH8v/YNwn/l88dhbIamBKzad9w5WOSJOQsu765xIWVLCj9bcByFGrmRsKj/zntCPoCIf/
	48iP9jQ==
X-Google-Smtp-Source: AGHT+IHdCD1CtDyCS9WTiqcitTydGCpHq8MQl7L4ZxcFKWR8lHK6/+1TO1K/oYAIfjEMHz2+7IUrtQ==
X-Received: by 2002:a5d:684a:0:b0:33b:3b5:39b6 with SMTP id o10-20020a5d684a000000b0033b03b539b6mr880639wrw.30.1706697771482;
        Wed, 31 Jan 2024 02:42:51 -0800 (PST)
From: =?UTF-8?q?Edwin=20T=C3=B6r=C3=B6k?= <edwin.torok@cloud.com>
To: xen-devel@lists.xenproject.org
Cc: =?UTF-8?q?Edwin=20T=C3=B6r=C3=B6k?= <edwin.torok@cloud.com>,
	Wei Liu <wl@xen.org>,
	Anthony PERARD <anthony.perard@citrix.com>,
	Christian Lindig <christian.lindig@citrix.com>,
	David Scott <dave@recoil.org>
Subject: [PATCH v1 0/2] tools/ocaml: support OCaml 5.x, drop support for <=4.05
Date: Wed, 31 Jan 2024 10:42:47 +0000
Message-ID: <cover.1706697216.git.edwin.torok@cloud.com>
X-Mailer: git-send-email 2.43.0
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Fix building oxenstored with OCaml 5.x.
OCaml 5.x has removed some functions that have been deprecated for many years,
in order to support OCaml 5.x we need to drop support for OCaml 4.02.

Tested in gitlab CI (together with my other series):
https://gitlab.com/xen-project/people/edwintorok/xen/-/pipelines/1158302827

Edwin Török (2):
  oxenstored: fix build on OCaml 5.x
  tools/ocaml: bump minimum version to OCaml 4.05

 tools/configure               | 2 +-
 tools/configure.ac            | 2 +-
 tools/ocaml/xenstored/disk.ml | 2 +-
 3 files changed, 3 insertions(+), 3 deletions(-)

-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Wed Jan 31 10:44:31 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 31 Jan 2024 10:44:31 +0000
Received: from list by lists.xenproject.org with outflank-mailman.673892.1048439 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rV84z-0002tj-Nf; Wed, 31 Jan 2024 10:44:29 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 673892.1048439; Wed, 31 Jan 2024 10:44:29 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rV84z-0002tc-K6; Wed, 31 Jan 2024 10:44:29 +0000
Received: by outflank-mailman (input) for mailman id 673892;
 Wed, 31 Jan 2024 10:44:28 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=UyAi=JJ=cloud.com=christian.lindig@srs-se1.protection.inumbo.net>)
 id 1rV84y-0002tS-JS
 for xen-devel@lists.xenproject.org; Wed, 31 Jan 2024 10:44:28 +0000
Received: from mail-ej1-x629.google.com (mail-ej1-x629.google.com
 [2a00:1450:4864:20::629])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id b4ec2b61-c025-11ee-8a43-1f161083a0e0;
 Wed, 31 Jan 2024 11:44:27 +0100 (CET)
Received: by mail-ej1-x629.google.com with SMTP id
 a640c23a62f3a-a26ed1e05c7so628240266b.2
 for <xen-devel@lists.xenproject.org>; Wed, 31 Jan 2024 02:44:27 -0800 (PST)
Received: from smtpclient.apple ([160.101.139.1])
 by smtp.gmail.com with ESMTPSA id
 hw20-20020a170907a0d400b00a2b1a20e662sm6051072ejc.34.2024.01.31.02.44.26
 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128);
 Wed, 31 Jan 2024 02:44:27 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: b4ec2b61-c025-11ee-8a43-1f161083a0e0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1706697867; x=1707302667; darn=lists.xenproject.org;
        h=to:references:message-id:content-transfer-encoding:cc:date
         :in-reply-to:from:subject:mime-version:from:to:cc:subject:date
         :message-id:reply-to;
        bh=L9xYwjpFTBl2Zy2qetzGXiASmifk2rE7lsmZclrwvaA=;
        b=AnqmVZX83iYDmcBmnXC/g7IC1bdG3AUpGg/VCw0tqfqxH84mvOx2+JiRfGMgeyFK9v
         Yncre/SNk16YZ6UNY1kIImI8SkXykUitAQcDXJXHLgGeYOVWlfctzKUCA4jzUAx8/9J2
         i+vfFSIlg63Q6eO6JslyBmyI1I34Kz21aUIGI=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706697867; x=1707302667;
        h=to:references:message-id:content-transfer-encoding:cc:date
         :in-reply-to:from:subject:mime-version:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to;
        bh=L9xYwjpFTBl2Zy2qetzGXiASmifk2rE7lsmZclrwvaA=;
        b=Vj0+BnunJwjrgQLFA0ai43HKIgG66NLZvuREaKWlH+mRVyeJ9VuKgoZ9RtDjpzZrfb
         cBXWjeeVItPi3qBPtGefTuaCqquoyuamGXt1069P8JbdGl11BXNy204UxRbr5ZV2BUBi
         03AarfftG+flaSV7EmFauB3z2hGmW1/wXNn/YdNv2hW6aLuTSCEvh4U25ELpIR3poYUz
         vowHJuQBJ7a/+4LnguJIBKBGADAaY4+Wn0p8ZZqWllt6ngUxVizqJZv8Y6/7AXBmk3E8
         MR1miB2ZuhITaoZrNQXaYTvFm4HuOEZEwydCDMQgCyCSTxRxaZ0Iag+2I8yQm/nIGFTM
         oehw==
X-Gm-Message-State: AOJu0YwI7rOV66ZsQLgcT7OvdmC0GIxR3u0Sh8k58mJlH/MqxspAoNxA
	XkSpR/KWtQWI+T/2Jmi6xdR/UZJwc4SXa17tBp1+Y86Nh1e8FTt4r9PyUgs0mLI=
X-Google-Smtp-Source: AGHT+IF8JUacnjeqbcVtvg6IBhr3Kn9OLU2/DFgoAcwslBGGjnduPvvAwdsnzD/Iow7nTFyzj9J37Q==
X-Received: by 2002:a17:906:7fc2:b0:a35:6601:e401 with SMTP id r2-20020a1709067fc200b00a356601e401mr864196ejs.5.1706697867257;
        Wed, 31 Jan 2024 02:44:27 -0800 (PST)
Content-Type: text/plain;
	charset=utf-8
Mime-Version: 1.0 (Mac OS X Mail 16.0 \(3774.200.91.1.1\))
Subject: Re: [PATCH v1 0/2] tools/ocaml: support OCaml 5.x, drop support for
 <=4.05
From: Christian Lindig <christian.lindig@cloud.com>
In-Reply-To: <cover.1706697216.git.edwin.torok@cloud.com>
Date: Wed, 31 Jan 2024 10:44:16 +0000
Cc: Xen-devel <xen-devel@lists.xenproject.org>,
 Wei Liu <wl@xen.org>,
 Anthony PERARD <anthony.perard@citrix.com>,
 Christian Lindig <christian.lindig@citrix.com>,
 David Scott <dave@recoil.org>
Content-Transfer-Encoding: quoted-printable
Message-Id: <4E9A23AB-5745-4A71-9013-156B6648025A@cloud.com>
References: <cover.1706697216.git.edwin.torok@cloud.com>
To: =?utf-8?B?RWR3aW4gVMO2csO2aw==?= <edwin.torok@cloud.com>
X-Mailer: Apple Mail (2.3774.200.91.1.1)



> On 31 Jan 2024, at 10:42, Edwin T=C3=B6r=C3=B6k =
<edwin.torok@cloud.com> wrote:
>=20
> Fix building oxenstored with OCaml 5.x.
> OCaml 5.x has removed some functions that have been deprecated for =
many years,
> in order to support OCaml 5.x we need to drop support for OCaml 4.02.
>=20
> Tested in gitlab CI (together with my other series):
> =
https://gitlab.com/xen-project/people/edwintorok/xen/-/pipelines/115830282=
7
>=20
> Edwin T=C3=B6r=C3=B6k (2):
>  oxenstored: fix build on OCaml 5.x
>  tools/ocaml: bump minimum version to OCaml 4.05
>=20
> tools/configure               | 2 +-
> tools/configure.ac            | 2 +-
> tools/ocaml/xenstored/disk.ml | 2 +-
> 3 files changed, 3 insertions(+), 3 deletions(-)
>=20
> --=20
> 2.43.0
>=20

Acked-by: Christian Lindig <christian.lindig@cloud.com>



From xen-devel-bounces@lists.xenproject.org Wed Jan 31 10:53:09 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 31 Jan 2024 10:53:09 +0000
Received: from list by lists.xenproject.org with outflank-mailman.673902.1048463 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rV8DM-0005cr-5X; Wed, 31 Jan 2024 10:53:08 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 673902.1048463; Wed, 31 Jan 2024 10:53:08 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rV8DM-0005bg-0I; Wed, 31 Jan 2024 10:53:08 +0000
Received: by outflank-mailman (input) for mailman id 673902;
 Wed, 31 Jan 2024 10:53:06 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=/tZP=JJ=cloud.com=edwin.torok@srs-se1.protection.inumbo.net>)
 id 1rV8DK-0005ZD-M6
 for xen-devel@lists.xenproject.org; Wed, 31 Jan 2024 10:53:06 +0000
Received: from mail-wr1-x431.google.com (mail-wr1-x431.google.com
 [2a00:1450:4864:20::431])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id e87c9b25-c026-11ee-98f5-efadbce2ee36;
 Wed, 31 Jan 2024 11:53:03 +0100 (CET)
Received: by mail-wr1-x431.google.com with SMTP id
 ffacd0b85a97d-337d05b8942so3977363f8f.3
 for <xen-devel@lists.xenproject.org>; Wed, 31 Jan 2024 02:53:03 -0800 (PST)
Received: from fedora39.edvint-x-u ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 o1-20020a5d4081000000b0033ae50e2c6asm10585757wrp.83.2024.01.31.02.53.02
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 31 Jan 2024 02:53:02 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: e87c9b25-c026-11ee-98f5-efadbce2ee36
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1706698382; x=1707303182; darn=lists.xenproject.org;
        h=content-transfer-encoding:mime-version:references:in-reply-to
         :message-id:date:subject:cc:to:from:from:to:cc:subject:date
         :message-id:reply-to;
        bh=pEOJ3dKfDa3jEbqZ0msr8PUUdDA4TmMKdDalOhPmKw4=;
        b=bUydjSuXSmCol8BThYnEUKsS+x8gOHcyovnHC4oZ6urjMt49XLhzNp2IkklEwL2zfo
         DELrWWuhLdX13YdZdmmcnTZJ3wQozt92+PUvlUSjzqmg8UTJzkW6MB6HtPxyX84Bbm2M
         DG9+xlLCx38Jdj3qtIW64VFdbM5d/GHpxGGxQ=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706698382; x=1707303182;
        h=content-transfer-encoding:mime-version:references:in-reply-to
         :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to;
        bh=pEOJ3dKfDa3jEbqZ0msr8PUUdDA4TmMKdDalOhPmKw4=;
        b=NFgwotV3CmXICNzuM9KRzOGfJ93HiC1RAzGCnhQ5mX7zzkYnFvKKXV5juNEh9NqU7H
         Yfj0EyUhsf9ddiaDjQZZ1rQdUtXp/SQV1aeuRHv22gLt64FOOHZ6silgN7IBuhezHoxb
         oTvFkyoGNzTK+X7oWMYq5grAPPNQOrm3GWbGFMxf/8goLlaGZmEtp7dguilVXKyjnthh
         v5aQtfU+a9BebikcuWJJrz9svjRXKXxzBTnAtkxJxZA77R4qXKWghUz3QdwHpFUI0uBO
         paNBm+c6GpMg41XRT9D0kl7m8Z6lwa2w7PsX6NXPv1YEWpyE90qLwhWV9IYwpNZ1XTMI
         WP3w==
X-Gm-Message-State: AOJu0Yw5h8f8q3jkNaoO0g7NB94D/jVuDaEOH5q9j6OkvEPjzw9aTT+n
	shaCOCfQJsnyU/K5l2Y7tQy/zavHkuOq3PzuQP+/DsmzLm799c6m+Y4cE89kNUi4OZy1VKg1DUD
	ttc87ew==
X-Google-Smtp-Source: AGHT+IErnvggzIIJIqkmJKISVmMAepy9lUitEB9v6/O/w4NFnemd6oGnJwTS6QTKsDxkkGRS0NjoYA==
X-Received: by 2002:a5d:630f:0:b0:33a:eb24:8383 with SMTP id i15-20020a5d630f000000b0033aeb248383mr891032wru.13.1706698382705;
        Wed, 31 Jan 2024 02:53:02 -0800 (PST)
From: =?UTF-8?q?Edwin=20T=C3=B6r=C3=B6k?= <edwin.torok@cloud.com>
To: xen-devel@lists.xenproject.org
Cc: =?UTF-8?q?Edwin=20T=C3=B6r=C3=B6k?= <edwin.torok@cloud.com>,
	Christian Lindig <christian.lindig@citrix.com>,
	David Scott <dave@recoil.org>,
	Wei Liu <wl@xen.org>,
	Anthony PERARD <anthony.perard@citrix.com>
Subject: [PATCH v1 2/2] oxenstored: make Quota.t pure
Date: Wed, 31 Jan 2024 10:52:56 +0000
Message-ID: <f98edc633527b6d9a6855af0aff4fb77970454cc.1706697858.git.edwin.torok@cloud.com>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <cover.1706697858.git.edwin.torok@cloud.com>
References: <cover.1706697858.git.edwin.torok@cloud.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Now that we no longer have a hashtable inside we can make Quota.t pure,
and push the mutable update to its callers.
Store.t already had a mutable Quota.t field.

No functional change.

Signed-off-by: Edwin Török <edwin.torok@cloud.com>
---
 tools/ocaml/xenstored/quota.ml |  8 ++++----
 tools/ocaml/xenstored/store.ml | 17 ++++++++++-------
 2 files changed, 14 insertions(+), 11 deletions(-)

diff --git a/tools/ocaml/xenstored/quota.ml b/tools/ocaml/xenstored/quota.ml
index f6e28ecc6a..1f652040d8 100644
--- a/tools/ocaml/xenstored/quota.ml
+++ b/tools/ocaml/xenstored/quota.ml
@@ -33,7 +33,7 @@ module DomidMap = Map.Make(Domid)
 type t = {
   maxent: int;               (* max entities per domU *)
   maxsize: int;              (* max size of data store in one node *)
-  mutable cur: int DomidMap.t; (* current domains quota *)
+  cur: int DomidMap.t; (* current domains quota *)
 }
 
 let to_string quota domid =
@@ -76,10 +76,10 @@ let update_entry quota_cur id diff =
   else DomidMap.add id nb quota_cur
 
 let del_entry quota id =
-  quota.cur <- update_entry quota.cur id (-1)
+  {quota with cur = update_entry quota.cur id (-1)}
 
 let add_entry quota id =
-  quota.cur <- update_entry quota.cur id (+1)
+  {quota with cur = update_entry quota.cur id (+1)}
 
 let merge orig_quota mod_quota dest_quota =
   let fold_merge id nb dest =
@@ -87,5 +87,5 @@ let merge orig_quota mod_quota dest_quota =
     | 0 -> dest (* not modified *)
     | diff -> update_entry dest id diff (* update with [x=x+diff] *)
   in
-  dest_quota.cur <- DomidMap.fold fold_merge mod_quota.cur dest_quota.cur
+  {dest_quota with cur = DomidMap.fold fold_merge mod_quota.cur dest_quota.cur}
   (* dest_quota = dest_quota + (mod_quota - orig_quota) *)
diff --git a/tools/ocaml/xenstored/store.ml b/tools/ocaml/xenstored/store.ml
index 38a4945372..9b8dd2812d 100644
--- a/tools/ocaml/xenstored/store.ml
+++ b/tools/ocaml/xenstored/store.ml
@@ -85,7 +85,9 @@ module Node = struct
       raise Define.Permission_denied;
     end
 
-  let rec recurse fct node = fct node; SymbolMap.iter (fun _ -> recurse fct) node.children
+  let rec recurse fct node acc =
+    let acc = fct node acc in
+    SymbolMap.fold (fun _ -> recurse fct) node.children acc
 
   (** [recurse_filter_map f tree] applies [f] on each node in the tree recursively,
       possibly removing some nodes.
@@ -408,7 +410,7 @@ let dump_buffer store = dump_store_buf store.root
 let set_node store path node orig_quota mod_quota =
   let root = Path.set_node store.root path node in
   store.root <- root;
-  Quota.merge orig_quota mod_quota store.quota
+  store.quota <- Quota.merge orig_quota mod_quota store.quota
 
 let write store perm path value =
   let node, existing = get_deepest_existing_node store path in
@@ -422,7 +424,7 @@ let write store perm path value =
   let root, node_created = path_write store perm path value in
   store.root <- root;
   if node_created
-  then Quota.add_entry store.quota owner
+  then store.quota <- Quota.add_entry store.quota owner
 
 let mkdir store perm path =
   let node, existing = get_deepest_existing_node store path in
@@ -431,7 +433,7 @@ let mkdir store perm path =
   if not (existing || (Perms.Connection.is_dom0 perm)) then Quota.check store.quota owner 0;
   store.root <- path_mkdir store perm path;
   if not existing then
-    Quota.add_entry store.quota owner
+    store.quota <- Quota.add_entry store.quota owner
 
 let rm store perm path =
   let rmed_node = Path.get_node store.root path in
@@ -439,7 +441,7 @@ let rm store perm path =
   | None -> raise Define.Doesnt_exist
   | Some rmed_node ->
     store.root <- path_rm store perm path;
-    Node.recurse (fun node -> Quota.del_entry store.quota (Node.get_owner node)) rmed_node
+    store.quota <- Node.recurse (fun node quota -> Quota.del_entry quota (Node.get_owner node)) rmed_node store.quota
 
 let setperms store perm path nperms =
   match Path.get_node store.root path with
@@ -450,8 +452,9 @@ let setperms store perm path nperms =
     if not ((old_owner = new_owner) || (Perms.Connection.is_dom0 perm)) then
       raise Define.Permission_denied;
     store.root <- path_setperms store perm path nperms;
-    Quota.del_entry store.quota old_owner;
-    Quota.add_entry store.quota new_owner
+    store.quota <-
+      let quota = Quota.del_entry store.quota old_owner in
+      Quota.add_entry quota new_owner
 
 let reset_permissions store domid =
   Logging.info "store|node" "Cleaning up xenstore ACLs for domid %d" domid;
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Wed Jan 31 10:53:09 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 31 Jan 2024 10:53:09 +0000
Received: from list by lists.xenproject.org with outflank-mailman.673901.1048460 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rV8DL-0005aC-UV; Wed, 31 Jan 2024 10:53:07 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 673901.1048460; Wed, 31 Jan 2024 10:53:07 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rV8DL-0005a5-Ph; Wed, 31 Jan 2024 10:53:07 +0000
Received: by outflank-mailman (input) for mailman id 673901;
 Wed, 31 Jan 2024 10:53:06 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=/tZP=JJ=cloud.com=edwin.torok@srs-se1.protection.inumbo.net>)
 id 1rV8DK-0005ZD-0X
 for xen-devel@lists.xenproject.org; Wed, 31 Jan 2024 10:53:06 +0000
Received: from mail-wr1-x42f.google.com (mail-wr1-x42f.google.com
 [2a00:1450:4864:20::42f])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id e7d22e4e-c026-11ee-98f5-efadbce2ee36;
 Wed, 31 Jan 2024 11:53:02 +0100 (CET)
Received: by mail-wr1-x42f.google.com with SMTP id
 ffacd0b85a97d-33ae3cc8a6aso2914616f8f.2
 for <xen-devel@lists.xenproject.org>; Wed, 31 Jan 2024 02:53:02 -0800 (PST)
Received: from fedora39.edvint-x-u ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 o1-20020a5d4081000000b0033ae50e2c6asm10585757wrp.83.2024.01.31.02.53.01
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 31 Jan 2024 02:53:01 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: e7d22e4e-c026-11ee-98f5-efadbce2ee36
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1706698381; x=1707303181; darn=lists.xenproject.org;
        h=content-transfer-encoding:mime-version:references:in-reply-to
         :message-id:date:subject:cc:to:from:from:to:cc:subject:date
         :message-id:reply-to;
        bh=Sa9A5+QxE9tVCCZct9IISsR+fFT6zN3g0plaGL+J3O8=;
        b=OMcTVKm0LZorrgC2o8RBZfd2GFfPGjVE+7YKvqAif0jRnaA2JdsIM8sMTOqFRMfiDQ
         70sZQQdcLeOJa8bW8wUQK3x2Pt+56Oa3QeytVTrIH1x57T5UbBiAEWi7n+S4wi6ZEj1/
         ySgcOzyToAcxLT+9b2uzMIVO6TDWmXuAfJwUA=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706698381; x=1707303181;
        h=content-transfer-encoding:mime-version:references:in-reply-to
         :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to;
        bh=Sa9A5+QxE9tVCCZct9IISsR+fFT6zN3g0plaGL+J3O8=;
        b=dcUt1vQ73H7FGd+nz93zMAJEy10vnxbweiDUzD7aki2UPbVnu+/qLi0y/pR69+GKWS
         rfJTync64vzDZXwwH+XW0b0w0TQs2REiuana3Bd92IAVHTHLeTV7VtMwURovKKSvOxXz
         UyUpUOEkEIQNAt7XbQANY8SjexaJgR5EHph0+8wGCfG3tbAiR+tPqdUVfnMUYWGUVs0X
         TN00d9aw6I9bkK6R4mzrZ+9wiCfZLiUPaEPPP6+v+rVYYvFXHjnlxGkv0I+bm1qF11/c
         SNrNojlytFYjeezIbddKHUPkP7EFeE9YMwduUyak6JLUUR32Q1qgqZ4Jt7Ynm5/YhdXS
         I1fQ==
X-Gm-Message-State: AOJu0Yx6cl1bsrHrg0D4podKEMU+03eE2WXiNmTaF6myYkSTvf22qOKz
	YtuiVYlrdKqXpEWvpAa0vVfHiaEz2jz3jaW2zl2VOzE707u3dxFQfxUskaT9YXq45dUcOMoKCC3
	hPOf4HA==
X-Google-Smtp-Source: AGHT+IHj2ZpYl1siq/JnQdl8XUH43iMpNaE3SW4WBMxK/9aEO8opZUdsBx1VkvGgbtOsUpBOLM0Zgg==
X-Received: by 2002:a5d:498d:0:b0:33a:ec23:1a22 with SMTP id r13-20020a5d498d000000b0033aec231a22mr895144wrq.32.1706698381427;
        Wed, 31 Jan 2024 02:53:01 -0800 (PST)
From: =?UTF-8?q?Edwin=20T=C3=B6r=C3=B6k?= <edwin.torok@cloud.com>
To: xen-devel@lists.xenproject.org
Cc: =?UTF-8?q?Edwin=20T=C3=B6r=C3=B6k?= <edwin.torok@cloud.com>,
	Christian Lindig <christian.lindig@citrix.com>,
	David Scott <dave@recoil.org>,
	Wei Liu <wl@xen.org>,
	Anthony PERARD <anthony.perard@citrix.com>
Subject: [PATCH v1 1/2] oxenstored: use Map instead of Hashtbl for quotas
Date: Wed, 31 Jan 2024 10:52:55 +0000
Message-ID: <513931c932fa8d088acefdfc2d3b73d4c3070002.1706697858.git.edwin.torok@cloud.com>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <cover.1706697858.git.edwin.torok@cloud.com>
References: <cover.1706697858.git.edwin.torok@cloud.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On a stress test running 1000 VMs flamegraphs have shown that
`oxenstored` spends a large amount of time in `Hashtbl.copy` and the GC.

Hashtable complexity:
 * read/write: O(1) average
 * copy: O(domains) -- copying the entire table

Map complexity:
 * read/write: O(log n) worst case
 * copy: O(1) -- a word copy

We always perform at least one 'copy' when processing each xenstore
packet (regardless whether it is a readonly operation or inside a
transaction or not), so the actual complexity per packet is:
  * Hashtbl: O(domains)
  * Map: O(log domains)

Maps are the clear winner, and a better fit for the immutable xenstore
tree.

Signed-off-by: Edwin Török <edwin.torok@cloud.com>
---
 tools/ocaml/xenstored/quota.ml | 65 ++++++++++++++++++----------------
 1 file changed, 34 insertions(+), 31 deletions(-)

diff --git a/tools/ocaml/xenstored/quota.ml b/tools/ocaml/xenstored/quota.ml
index 300d78a50b..f6e28ecc6a 100644
--- a/tools/ocaml/xenstored/quota.ml
+++ b/tools/ocaml/xenstored/quota.ml
@@ -23,66 +23,69 @@ let activate = ref true
 let maxent = ref (1000)
 let maxsize = ref (2048)
 
+module Domid = struct
+  type t = Xenctrl.domid
+  let compare (a:t) (b:t) = compare a b
+end
+
+module DomidMap = Map.Make(Domid)
+
 type t = {
   maxent: int;               (* max entities per domU *)
   maxsize: int;              (* max size of data store in one node *)
-  cur: (Xenctrl.domid, int) Hashtbl.t; (* current domains quota *)
+  mutable cur: int DomidMap.t; (* current domains quota *)
 }
 
 let to_string quota domid =
-  if Hashtbl.mem quota.cur domid
-  then Printf.sprintf "dom%i quota: %i/%i" domid (Hashtbl.find quota.cur domid) quota.maxent
-  else Printf.sprintf "dom%i quota: not set" domid
+  try
+    Printf.sprintf "dom%i quota: %i/%i" domid (DomidMap.find domid quota.cur) quota.maxent
+  with Not_found ->
+    Printf.sprintf "dom%i quota: not set" domid
 
 let create () =
-  { maxent = !maxent; maxsize = !maxsize; cur = Hashtbl.create 100; }
+  { maxent = !maxent; maxsize = !maxsize; cur = DomidMap.empty; }
 
-let copy quota = { quota with cur = (Hashtbl.copy quota.cur) }
+let copy quota = { quota with cur = quota.cur }
 
-let del quota id = Hashtbl.remove quota.cur id
+let del quota id = { quota with cur = DomidMap.remove id quota.cur }
 
 let _check quota id size =
   if size > quota.maxsize then (
     warn "domain %u err create entry: data too big %d" id size;
     raise Data_too_big
   );
-  if id > 0 && Hashtbl.mem quota.cur id then
-    let entry = Hashtbl.find quota.cur id in
+  if id > 0 then
+  try
+    let entry = DomidMap.find id quota.cur in
     if entry >= quota.maxent then (
       warn "domain %u cannot create entry: quota reached" id;
       raise Limit_reached
     )
+  with Not_found -> ()
 
 let check quota id size =
   if !activate then
     _check quota id size
 
-let get_entry quota id = Hashtbl.find quota.cur id
+let find_or_zero quota_cur id =
+  try DomidMap.find id quota_cur with Not_found -> 0
 
-let set_entry quota id nb =
-  if nb = 0
-  then Hashtbl.remove quota.cur id
-  else begin
-    if Hashtbl.mem quota.cur id then
-      Hashtbl.replace quota.cur id nb
-    else
-      Hashtbl.add quota.cur id nb
-  end
+let update_entry quota_cur id diff =
+  let nb = diff + find_or_zero quota_cur id in
+  if nb = 0 then DomidMap.remove id quota_cur
+  else DomidMap.add id nb quota_cur
 
 let del_entry quota id =
-  try
-    let nb = get_entry quota id in
-    set_entry quota id (nb - 1)
-  with Not_found -> ()
+  quota.cur <- update_entry quota.cur id (-1)
 
 let add_entry quota id =
-  let nb = try get_entry quota id with Not_found -> 0 in
-  set_entry quota id (nb + 1)
-
-let add quota diff =
-  Hashtbl.iter (fun id nb -> set_entry quota id (get_entry quota id + nb)) diff.cur
+  quota.cur <- update_entry quota.cur id (+1)
 
 let merge orig_quota mod_quota dest_quota =
-  Hashtbl.iter (fun id nb -> let diff = nb - (try get_entry orig_quota id with Not_found -> 0) in
-      if diff <> 0 then
-        set_entry dest_quota id ((try get_entry dest_quota id with Not_found -> 0) + diff)) mod_quota.cur
+  let fold_merge id nb dest =
+    match nb - find_or_zero orig_quota.cur id with
+    | 0 -> dest (* not modified *)
+    | diff -> update_entry dest id diff (* update with [x=x+diff] *)
+  in
+  dest_quota.cur <- DomidMap.fold fold_merge mod_quota.cur dest_quota.cur
+  (* dest_quota = dest_quota + (mod_quota - orig_quota) *)
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Wed Jan 31 10:53:10 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 31 Jan 2024 10:53:10 +0000
Received: from list by lists.xenproject.org with outflank-mailman.673900.1048449 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rV8DH-0005Kn-HR; Wed, 31 Jan 2024 10:53:03 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 673900.1048449; Wed, 31 Jan 2024 10:53:03 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rV8DH-0005Kg-EQ; Wed, 31 Jan 2024 10:53:03 +0000
Received: by outflank-mailman (input) for mailman id 673900;
 Wed, 31 Jan 2024 10:53:01 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=/tZP=JJ=cloud.com=edwin.torok@srs-se1.protection.inumbo.net>)
 id 1rV8DF-0005Ka-NH
 for xen-devel@lists.xenproject.org; Wed, 31 Jan 2024 10:53:01 +0000
Received: from mail-wr1-x435.google.com (mail-wr1-x435.google.com
 [2a00:1450:4864:20::435])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id e6a618e9-c026-11ee-8a43-1f161083a0e0;
 Wed, 31 Jan 2024 11:53:00 +0100 (CET)
Received: by mail-wr1-x435.google.com with SMTP id
 ffacd0b85a97d-337d05b8942so3977332f8f.3
 for <xen-devel@lists.xenproject.org>; Wed, 31 Jan 2024 02:53:00 -0800 (PST)
Received: from fedora39.edvint-x-u ([185.25.67.249])
 by smtp.gmail.com with ESMTPSA id
 o1-20020a5d4081000000b0033ae50e2c6asm10585757wrp.83.2024.01.31.02.52.59
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 31 Jan 2024 02:52:59 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: e6a618e9-c026-11ee-8a43-1f161083a0e0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1706698379; x=1707303179; darn=lists.xenproject.org;
        h=content-transfer-encoding:mime-version:message-id:date:subject:cc
         :to:from:from:to:cc:subject:date:message-id:reply-to;
        bh=sqcpMyubNBGDxVa/kmnrdlCvdP0FKIm2OllKjlPoGbY=;
        b=iWJSez+57xzL+9WM6KfJ41eFys2+InThLWHIrJ0X6ydoqC60gxD16IELDkxL0kcSLj
         1axjNTaQIyj/xgG40Xv1wSmE7U1zeOwVg4CgdvMXYgm41nakhSjUO/keRKPxxemkLada
         SI5x8n/xOzdlNrPUofT8mxWwpmbQoDN/ZAAE4=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706698379; x=1707303179;
        h=content-transfer-encoding:mime-version:message-id:date:subject:cc
         :to:from:x-gm-message-state:from:to:cc:subject:date:message-id
         :reply-to;
        bh=sqcpMyubNBGDxVa/kmnrdlCvdP0FKIm2OllKjlPoGbY=;
        b=DazpKtfMFXpsIINZ8ScVzBSLtuf8WCvjJ48DOnVzNM8MmWepLCv+VlvZsXWZ1xYAzi
         9MTSww0Y8Ji9MsDEFNKeJgmaccC94wgVH2bvaC//XhqeyiyYu0kA82MkbmOHJeaf6ffH
         Mvv533kgqqxJMosTeQS50euUPi94QkuripMa/Bf8fr+XPqBLnFQJ8497X7EQLO5w8p0x
         /X1jVG2aDvy02XkzdbDZJ5H1axNhlYd4vLJQniL/vkEAbYIWcpzzmvjkQiAY+H5ZU9uv
         nskfFlhFz+T83m9HlllBYSsm7CKJmORt+CJu3W3zMtMOfVUVt+/INI7shBnszJQZLOnD
         gsUA==
X-Gm-Message-State: AOJu0YwYrNMY7tHg1z8NoaXm7xWXucTpVRhLJFhRfXBB/8Lp4SgqMJfb
	iDI/XaCnl8Ct+GPn/balel3OTJjmTZxh5Z6StQD+BBUtSyuKq6782voHkzynRdO0HxPdeG9jDDT
	5AnQwNQ==
X-Google-Smtp-Source: AGHT+IFzRNHUP+siVc5t0N/Wc3YlJ+R+nyJtDIkictnRmYrLygi+7k5x6DEXWzeg2+RxAsx4+HurXA==
X-Received: by 2002:a5d:6b89:0:b0:33a:eda1:e68b with SMTP id n9-20020a5d6b89000000b0033aeda1e68bmr773755wrx.24.1706698379430;
        Wed, 31 Jan 2024 02:52:59 -0800 (PST)
From: =?UTF-8?q?Edwin=20T=C3=B6r=C3=B6k?= <edwin.torok@cloud.com>
To: xen-devel@lists.xenproject.org
Cc: =?UTF-8?q?Edwin=20T=C3=B6r=C3=B6k?= <edwin.torok@cloud.com>,
	Christian Lindig <christian.lindig@citrix.com>,
	David Scott <dave@recoil.org>,
	Wei Liu <wl@xen.org>,
	Anthony PERARD <anthony.perard@citrix.com>
Subject: [PATCH v1 0/2] reduce oxenstored quota processing overhead under load
Date: Wed, 31 Jan 2024 10:52:54 +0000
Message-ID: <cover.1706697858.git.edwin.torok@cloud.com>
X-Mailer: git-send-email 2.43.0
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

A recent stress test with 1000 VMs has shown that oxenstored spends ~40% of time in Quota.copy,
even when processing read-only xenstore commands.
Use an immutable data structure instead.

I have tested this in the gitlab CI here: https://gitlab.com/xen-project/people/edwintorok/xen/-/pipelines/1158302827
For convenience the changes in this (and the other series I sent out) are also available as a git repository:
https://gitlab.com/xen-project/people/edwintorok/xen/-/compare/private%2Fedvint%2Fdune1x...private%2Fedvint%2Fno-hashtbl-dev?from_project_id=47263871&straight=false

I haven't yet measured the speedup, but thought to send out the patch for review early.

Edwin Török (2):
  oxenstored: use Map instead of Hashtbl for quotas
  oxenstored: make Quota.t pure

 tools/ocaml/xenstored/quota.ml | 65 ++++++++++++++++++----------------
 tools/ocaml/xenstored/store.ml | 17 +++++----
 2 files changed, 44 insertions(+), 38 deletions(-)

-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Wed Jan 31 10:55:33 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 31 Jan 2024 10:55:33 +0000
Received: from list by lists.xenproject.org with outflank-mailman.673910.1048479 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rV8Fg-0006yG-Hr; Wed, 31 Jan 2024 10:55:32 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 673910.1048479; Wed, 31 Jan 2024 10:55:32 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rV8Fg-0006y9-Eo; Wed, 31 Jan 2024 10:55:32 +0000
Received: by outflank-mailman (input) for mailman id 673910;
 Wed, 31 Jan 2024 10:55:31 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=6GWq=JJ=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1rV8Ff-0006y3-4L
 for xen-devel@lists.xenproject.org; Wed, 31 Jan 2024 10:55:31 +0000
Received: from mail-lf1-x135.google.com (mail-lf1-x135.google.com
 [2a00:1450:4864:20::135])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 3f2db21d-c027-11ee-98f5-efadbce2ee36;
 Wed, 31 Jan 2024 11:55:29 +0100 (CET)
Received: by mail-lf1-x135.google.com with SMTP id
 2adb3069b0e04-5101cd91017so5602563e87.2
 for <xen-devel@lists.xenproject.org>; Wed, 31 Jan 2024 02:55:29 -0800 (PST)
Received: from [10.80.67.30] (default-46-102-197-194.interdsl.co.uk.
 [46.102.197.194]) by smtp.gmail.com with ESMTPSA id
 l18-20020a05600c1d1200b0040e89ade84bsm1267435wms.4.2024.01.31.02.55.28
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 31 Jan 2024 02:55:28 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 3f2db21d-c027-11ee-98f5-efadbce2ee36
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1706698529; x=1707303329; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=D+2Nmg0tjrdfbzuhgXQpNM5nYFF8Dz4aRdAKB1FuMxs=;
        b=ZZLq//rSBebahvYB6aBygO4EEmeoBEDI+7rBHEe65t+wnnzPBGBxq62AV18A+uR/6d
         XcCgWOPgVwgbaoe3dneqOssII/aD9A0vrobHk4I/TnZ4faDZm8qzIRFi6To+b5qkW6T1
         2qotrLu6eiOFNt0Sn9JQ8mnIKZ80c0Oeazc78=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706698529; x=1707303329;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=D+2Nmg0tjrdfbzuhgXQpNM5nYFF8Dz4aRdAKB1FuMxs=;
        b=Geg1i3IKpbHSQtYn65kTY97Ljo//FgpcWPxxntEX9g3tt6PUF0/B+zQWTtLrxduvo6
         Wrwuph0Wv5KOpSdWULnNIR+BwyS7fjcglgJWZgxhz6/wmeMYqQjqtFrQjHyxMV6iAhQM
         nypuyPb2bhIGf2EqfwD7i82STCtAaNYqvQkYXW513bemEyAs434AvPmKBEaVt8ze5EfP
         uHCl3rTuZQn+Yh2Ane6ih732e88j8oOkCYvxfp0O6BjYzvU724GwNtCPpu7a/2+iWhzq
         RiZw40w0VDccCavVP4EXB5UEpzuC5axFO9ldhuUKvE1FuVNtaFkIt5MjopAtxnv6uHzq
         6jAA==
X-Gm-Message-State: AOJu0YzsXX/5c0Pv6e0L9but/KaQ1EMtAbJHkiTZbsU8Z/g78qwmuZ1V
	aJXZnn8uzaGbdPCNP2KEo6w5/GjrS4RhZZXv+1KJHUmFF7rP0xR9IF+VQqqgOUI=
X-Google-Smtp-Source: AGHT+IGrhiebKyi1diFxjIRuiKa0enx9+McOlZMy8uXONr3Q+o0ycFresYLE+z6p3vZeQYro47mPvw==
X-Received: by 2002:a05:6512:3b0d:b0:511:1b24:9c29 with SMTP id f13-20020a0565123b0d00b005111b249c29mr1130478lfv.5.1706698528665;
        Wed, 31 Jan 2024 02:55:28 -0800 (PST)
X-Forwarded-Encrypted: i=0; AJvYcCU4p3M/ovQS/auBdi9q5W+Yd0m1G9+pv4ZS+8X2iDxQrnd0v+HQgYb7fDt8k8owDlzYHR8y/yt77gbJEr6Z6YKVjq6IatBms2xglVZo5e1Y+yTqUsmIdmH+ZRxXgzG8B7ZqACsBzXHmhIUdSqwBKxQo0M4syTB6WL3hFwpZx0VvJEifYesOXpwkxZW4K+46l46igfjG5UmUNPZk
Message-ID: <b88df473-9a3e-4c83-8629-3b65c6a6190b@citrix.com>
Date: Wed, 31 Jan 2024 10:55:28 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v1 0/2] tools/ocaml: support OCaml 5.x, drop support for
 <=4.05
Content-Language: en-GB
To: Christian Lindig <christian.lindig@cloud.com>,
 =?UTF-8?B?RWR3aW4gVMO2csO2aw==?= <edwin.torok@cloud.com>
Cc: Xen-devel <xen-devel@lists.xenproject.org>, Wei Liu <wl@xen.org>,
 Anthony PERARD <anthony.perard@citrix.com>,
 Christian Lindig <christian.lindig@citrix.com>, David Scott <dave@recoil.org>
References: <cover.1706697216.git.edwin.torok@cloud.com>
 <4E9A23AB-5745-4A71-9013-156B6648025A@cloud.com>
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 xsFNBFLhNn8BEADVhE+Hb8i0GV6mihnnr/uiQQdPF8kUoFzCOPXkf7jQ5sLYeJa0cQi6Penp
 VtiFYznTairnVsN5J+ujSTIb+OlMSJUWV4opS7WVNnxHbFTPYZVQ3erv7NKc2iVizCRZ2Kxn
 srM1oPXWRic8BIAdYOKOloF2300SL/bIpeD+x7h3w9B/qez7nOin5NzkxgFoaUeIal12pXSR
 Q354FKFoy6Vh96gc4VRqte3jw8mPuJQpfws+Pb+swvSf/i1q1+1I4jsRQQh2m6OTADHIqg2E
 ofTYAEh7R5HfPx0EXoEDMdRjOeKn8+vvkAwhviWXTHlG3R1QkbE5M/oywnZ83udJmi+lxjJ5
 YhQ5IzomvJ16H0Bq+TLyVLO/VRksp1VR9HxCzItLNCS8PdpYYz5TC204ViycobYU65WMpzWe
 LFAGn8jSS25XIpqv0Y9k87dLbctKKA14Ifw2kq5OIVu2FuX+3i446JOa2vpCI9GcjCzi3oHV
 e00bzYiHMIl0FICrNJU0Kjho8pdo0m2uxkn6SYEpogAy9pnatUlO+erL4LqFUO7GXSdBRbw5
 gNt25XTLdSFuZtMxkY3tq8MFss5QnjhehCVPEpE6y9ZjI4XB8ad1G4oBHVGK5LMsvg22PfMJ
 ISWFSHoF/B5+lHkCKWkFxZ0gZn33ju5n6/FOdEx4B8cMJt+cWwARAQABzSlBbmRyZXcgQ29v
 cGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPsLBegQTAQgAJAIbAwULCQgHAwUVCgkI
 CwUWAgMBAAIeAQIXgAUCWKD95wIZAQAKCRBlw/kGpdefoHbdD/9AIoR3k6fKl+RFiFpyAhvO
 59ttDFI7nIAnlYngev2XUR3acFElJATHSDO0ju+hqWqAb8kVijXLops0gOfqt3VPZq9cuHlh
 IMDquatGLzAadfFx2eQYIYT+FYuMoPZy/aTUazmJIDVxP7L383grjIkn+7tAv+qeDfE+txL4
 SAm1UHNvmdfgL2/lcmL3xRh7sub3nJilM93RWX1Pe5LBSDXO45uzCGEdst6uSlzYR/MEr+5Z
 JQQ32JV64zwvf/aKaagSQSQMYNX9JFgfZ3TKWC1KJQbX5ssoX/5hNLqxMcZV3TN7kU8I3kjK
 mPec9+1nECOjjJSO/h4P0sBZyIUGfguwzhEeGf4sMCuSEM4xjCnwiBwftR17sr0spYcOpqET
 ZGcAmyYcNjy6CYadNCnfR40vhhWuCfNCBzWnUW0lFoo12wb0YnzoOLjvfD6OL3JjIUJNOmJy
 RCsJ5IA/Iz33RhSVRmROu+TztwuThClw63g7+hoyewv7BemKyuU6FTVhjjW+XUWmS/FzknSi
 dAG+insr0746cTPpSkGl3KAXeWDGJzve7/SBBfyznWCMGaf8E2P1oOdIZRxHgWj0zNr1+ooF
 /PzgLPiCI4OMUttTlEKChgbUTQ+5o0P080JojqfXwbPAyumbaYcQNiH1/xYbJdOFSiBv9rpt
 TQTBLzDKXok86M7BTQRS4TZ/ARAAkgqudHsp+hd82UVkvgnlqZjzz2vyrYfz7bkPtXaGb9H4
 Rfo7mQsEQavEBdWWjbga6eMnDqtu+FC+qeTGYebToxEyp2lKDSoAsvt8w82tIlP/EbmRbDVn
 7bhjBlfRcFjVYw8uVDPptT0TV47vpoCVkTwcyb6OltJrvg/QzV9f07DJswuda1JH3/qvYu0p
 vjPnYvCq4NsqY2XSdAJ02HrdYPFtNyPEntu1n1KK+gJrstjtw7KsZ4ygXYrsm/oCBiVW/OgU
 g/XIlGErkrxe4vQvJyVwg6YH653YTX5hLLUEL1NS4TCo47RP+wi6y+TnuAL36UtK/uFyEuPy
 wwrDVcC4cIFhYSfsO0BumEI65yu7a8aHbGfq2lW251UcoU48Z27ZUUZd2Dr6O/n8poQHbaTd
 6bJJSjzGGHZVbRP9UQ3lkmkmc0+XCHmj5WhwNNYjgbbmML7y0fsJT5RgvefAIFfHBg7fTY/i
 kBEimoUsTEQz+N4hbKwo1hULfVxDJStE4sbPhjbsPCrlXf6W9CxSyQ0qmZ2bXsLQYRj2xqd1
 bpA+1o1j2N4/au1R/uSiUFjewJdT/LX1EklKDcQwpk06Af/N7VZtSfEJeRV04unbsKVXWZAk
 uAJyDDKN99ziC0Wz5kcPyVD1HNf8bgaqGDzrv3TfYjwqayRFcMf7xJaL9xXedMcAEQEAAcLB
 XwQYAQgACQUCUuE2fwIbDAAKCRBlw/kGpdefoG4XEACD1Qf/er8EA7g23HMxYWd3FXHThrVQ
 HgiGdk5Yh632vjOm9L4sd/GCEACVQKjsu98e8o3ysitFlznEns5EAAXEbITrgKWXDDUWGYxd
 pnjj2u+GkVdsOAGk0kxczX6s+VRBhpbBI2PWnOsRJgU2n10PZ3mZD4Xu9kU2IXYmuW+e5KCA
 vTArRUdCrAtIa1k01sPipPPw6dfxx2e5asy21YOytzxuWFfJTGnVxZZSCyLUO83sh6OZhJkk
 b9rxL9wPmpN/t2IPaEKoAc0FTQZS36wAMOXkBh24PQ9gaLJvfPKpNzGD8XWR5HHF0NLIJhgg
 4ZlEXQ2fVp3XrtocHqhu4UZR4koCijgB8sB7Tb0GCpwK+C4UePdFLfhKyRdSXuvY3AHJd4CP
 4JzW0Bzq/WXY3XMOzUTYApGQpnUpdOmuQSfpV9MQO+/jo7r6yPbxT7CwRS5dcQPzUiuHLK9i
 nvjREdh84qycnx0/6dDroYhp0DFv4udxuAvt1h4wGwTPRQZerSm4xaYegEFusyhbZrI0U9tJ
 B8WrhBLXDiYlyJT6zOV2yZFuW47VrLsjYnHwn27hmxTC/7tvG3euCklmkn9Sl9IAKFu29RSo
 d5bD8kMSCYsTqtTfT6W4A3qHGvIDta3ptLYpIAOD2sY3GYq2nf3Bbzx81wZK14JdDDHUX2Rs
 6+ahAA==
In-Reply-To: <4E9A23AB-5745-4A71-9013-156B6648025A@cloud.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 31/01/2024 10:44 am, Christian Lindig wrote:
>> On 31 Jan 2024, at 10:42, Edwin Török <edwin.torok@cloud.com> wrote:
>>
>> Fix building oxenstored with OCaml 5.x.
>> OCaml 5.x has removed some functions that have been deprecated for many years,
>> in order to support OCaml 5.x we need to drop support for OCaml 4.02.
>>
>> Tested in gitlab CI (together with my other series):
>> https://gitlab.com/xen-project/people/edwintorok/xen/-/pipelines/1158302827
>>
>> Edwin Török (2):
>>  oxenstored: fix build on OCaml 5.x
>>  tools/ocaml: bump minimum version to OCaml 4.05
>>
>> tools/configure               | 2 +-
>> tools/configure.ac            | 2 +-
>> tools/ocaml/xenstored/disk.ml | 2 +-
>> 3 files changed, 3 insertions(+), 3 deletions(-)
>>
>> -- 
>> 2.43.0
>>
> Acked-by: Christian Lindig <christian.lindig@cloud.com>

It occurs to me that this is the kind of thing which should get a
CHANGELOG.md entry these days.  Something like:

diff --git a/CHANGELOG.md b/CHANGELOG.md
index 1f55c9c72d10..fd7c8f5c6b82 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -9,6 +9,7 @@ The format is based on [Keep a
Changelog](https://keepachangelog.com/en/1.0.0/)
 ### Changed
  - Changed flexible array definitions in public I/O interface headers
to not
    use "1" as the number of array elements.
+ - The minimum supported Ocaml toolchain version is now 4.05
  - On x86:
    - HVM PIRQs are disabled by default.
    - Reduce IOMMU setup time for hardware domain.


ought to do.

Have we checked to see whether this drops Ocaml from any of the build
containers ?

~Andrew


From xen-devel-bounces@lists.xenproject.org Wed Jan 31 11:03:13 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 31 Jan 2024 11:03:13 +0000
Received: from list by lists.xenproject.org with outflank-mailman.673920.1048515 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rV8N5-0001tp-4d; Wed, 31 Jan 2024 11:03:11 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 673920.1048515; Wed, 31 Jan 2024 11:03:11 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rV8N4-0001t9-Vc; Wed, 31 Jan 2024 11:03:10 +0000
Received: by outflank-mailman (input) for mailman id 673920;
 Wed, 31 Jan 2024 11:03:10 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=VKKJ=JJ=arm.com=luca.fancellu@srs-se1.protection.inumbo.net>)
 id 1rV8N4-0001NU-5G
 for xen-devel@lists.xenproject.org; Wed, 31 Jan 2024 11:03:10 +0000
Received: from foss.arm.com (foss.arm.com [217.140.110.172])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTP
 id 50b4dbc4-c028-11ee-98f5-efadbce2ee36;
 Wed, 31 Jan 2024 12:03:08 +0100 (CET)
Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14])
 by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 0D7F61480;
 Wed, 31 Jan 2024 03:03:51 -0800 (PST)
Received: from e125770.cambridge.arm.com (e125770.arm.com [10.1.199.1])
 by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 91AFD3F762;
 Wed, 31 Jan 2024 03:03:06 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 50b4dbc4-c028-11ee-98f5-efadbce2ee36
From: Luca Fancellu <luca.fancellu@arm.com>
To: xen-devel@lists.xenproject.org
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
	George Dunlap <george.dunlap@citrix.com>,
	Jan Beulich <jbeulich@suse.com>,
	Julien Grall <julien@xen.org>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Wei Liu <wl@xen.org>
Subject: [PATCH 3/3] xen-analysis.py: Accept deviation comment at the end of the line
Date: Wed, 31 Jan 2024 11:02:41 +0000
Message-Id: <20240131110241.3951995-4-luca.fancellu@arm.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20240131110241.3951995-1-luca.fancellu@arm.com>
References: <20240131110241.3951995-1-luca.fancellu@arm.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Implement the in-code suppression comment at the end of the line.
Now it is possible to add a Xen deviaiton comment with the syntax
described in the docs at the end of the line affected by the
violation, to deviate it.

Eclair natively supports it, so the translation for the tool will
be straighforward, but the other tool needs to translate an
occurrence of the tag into a suppressino comment at the end of the
previous line, this will have a corner case where the line number
1 of the file can't be deviated in this way for such tools.

Updated documentation.

Signed-off-by: Luca Fancellu <luca.fancellu@arm.com>
---
 docs/misra/documenting-violations.rst         | 10 ++++++++
 xen/scripts/xen_analysis/cppcheck_analysis.py |  2 +-
 xen/scripts/xen_analysis/generic_analysis.py  | 14 +++++++----
 xen/scripts/xen_analysis/tag_database.py      | 25 ++++++++++++++++++-
 4 files changed, 44 insertions(+), 7 deletions(-)

diff --git a/docs/misra/documenting-violations.rst b/docs/misra/documenting-violations.rst
index 0d02a8e6f905..8f1cbd83b859 100644
--- a/docs/misra/documenting-violations.rst
+++ b/docs/misra/documenting-violations.rst
@@ -210,3 +210,13 @@ will be an entry like the following and the violation id will be in the column
 
 Given the violation id "misra-c2012-20.7", the procedure above can be followed
 to justify this finding.
+
+Another way to justify the above violation is to put the in-code comment tag
+at the end of the affected line::
+
+| extern char _start[], _end[], start[]; /* SAF-1-safe [...] */
+
+This way of deviating violations needs however to be used only when placing the
+tag above the line can't be done. This option suffers from some limitation on
+cppcheck and coverity tool that don't support natively the suppression comment
+at the end of the line.
diff --git a/xen/scripts/xen_analysis/cppcheck_analysis.py b/xen/scripts/xen_analysis/cppcheck_analysis.py
index 919eb153ce9c..850335c998a3 100644
--- a/xen/scripts/xen_analysis/cppcheck_analysis.py
+++ b/xen/scripts/xen_analysis/cppcheck_analysis.py
@@ -41,7 +41,7 @@ def __generate_suppression_list(out_file):
     # The following lambda function will return a file if it contains lines with
     # a comment containing "cppcheck-suppress[*]" on a single line.
     grep_action = lambda x: utils.grep(x,
-                    r'^[ \t]*/\* cppcheck-suppress\[(?P<id>.*)\] \*/$')
+                    r'^.*/\* cppcheck-suppress\[(?P<id>.*)\] \*/$')
     # Look for a list of .h files that matches the condition above
     headers = utils.recursive_find_file(settings.xen_dir, r'.*\.h$',
                                         grep_action)
diff --git a/xen/scripts/xen_analysis/generic_analysis.py b/xen/scripts/xen_analysis/generic_analysis.py
index 94122aebace0..9e0cfc1bbc08 100644
--- a/xen/scripts/xen_analysis/generic_analysis.py
+++ b/xen/scripts/xen_analysis/generic_analysis.py
@@ -52,11 +52,15 @@ def parse_xen_tags():
         os.rename(file, bkp_file)
         time_bkp_file = os.stat(bkp_file)
         # Create <file> from <file>.safparse but with the Xen tag parsed
-        tag_database.substitute_tags(settings.analysis_tool, bkp_file, entry,
-                                     subs_list)
-        # Set timestamp for file equal to bkp_file, so that if the file is
-        # modified during the process by the user, we can catch it
-        os.utime(file, (time_bkp_file.st_atime, time_bkp_file.st_mtime))
+        try:
+            tag_database.substitute_tags(settings.analysis_tool, bkp_file, entry,
+                                         subs_list)
+        except Exception as e:
+            raise ParseTagPhaseError("{}".format(e))
+        finally:
+            # Set timestamp for file equal to bkp_file, so that if the file is
+            # modified during the process by the user, we can catch it
+            os.utime(file, (time_bkp_file.st_atime, time_bkp_file.st_mtime))
 
 
 def build_xen():
diff --git a/xen/scripts/xen_analysis/tag_database.py b/xen/scripts/xen_analysis/tag_database.py
index dc0558a46ed6..57746ca0ddb6 100644
--- a/xen/scripts/xen_analysis/tag_database.py
+++ b/xen/scripts/xen_analysis/tag_database.py
@@ -25,7 +25,7 @@ def get_xen_tag_index_type_regex(tool):
 
 
 def get_xen_tag_comment_regex(tool):
-    before_comment = r'(?P<before>[ \t]*)'
+    before_comment = r'(?P<before>.*)'
     comment = rf'(?P<comment>/\* +{get_xen_tag_regex(tool)}.*\*/)'
     return rf'^(?P<full_line>{before_comment}{comment})$'
 
@@ -106,7 +106,30 @@ def substitute_tags(tool, input_file, grep_struct, subs_rules):
                 key = xen_tag_regex_obj.group('type')
                 if id_number in subs_rules[key]:
                     comment_in = grep_struct["matches"][line_number]['comment']
+                    before = grep_struct["matches"][line_number]['before']
                     comment_out = subs_rules[key][id_number]
+                    if before != '' and not re.match(r'^[ \t]+$', before):
+                        # The comment is at the end of some line with some code
+                        if tool == "eclair":
+                            # Eclair supports comment at the end of the line, so
+                            # the only thing to do is use the right syntax in
+                            # the comment, the default version of it is
+                            # deviating the current line and the next one
+                            comment_out = re.sub(r'\d+ ""', '0 ""', comment_out)
+                        else:
+                            # Other tool does not support deviating the same
+                            # line of the comment, so we use a trick and we use
+                            # the comment at the end of the previous line
+                            if line_number-2 < 0:
+                                raise TagDatabaseError(
+                                    "The comment {} using the tool '{}' can't "
+                                    "stay at the end of the line 1."
+                                    .format(comment_in, tool)
+                                )
+                            parsed_content[line_number-2] = \
+                                parsed_content[line_number-2].replace("\n",
+                                    comment_out + '\n')
+                            comment_out = ''
                     parsed_content[line_number-1] = re.sub(
                         re.escape(comment_in), comment_out,
                         parsed_content[line_number-1])
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Wed Jan 31 11:03:13 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 31 Jan 2024 11:03:13 +0000
Received: from list by lists.xenproject.org with outflank-mailman.673919.1048509 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rV8N4-0001qU-Rh; Wed, 31 Jan 2024 11:03:10 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 673919.1048509; Wed, 31 Jan 2024 11:03:10 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rV8N4-0001qN-O5; Wed, 31 Jan 2024 11:03:10 +0000
Received: by outflank-mailman (input) for mailman id 673919;
 Wed, 31 Jan 2024 11:03:08 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=VKKJ=JJ=arm.com=luca.fancellu@srs-se1.protection.inumbo.net>)
 id 1rV8N2-0001NU-KK
 for xen-devel@lists.xenproject.org; Wed, 31 Jan 2024 11:03:08 +0000
Received: from foss.arm.com (foss.arm.com [217.140.110.172])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTP
 id 4f869515-c028-11ee-98f5-efadbce2ee36;
 Wed, 31 Jan 2024 12:03:06 +0100 (CET)
Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14])
 by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 3894311FB;
 Wed, 31 Jan 2024 03:03:49 -0800 (PST)
Received: from e125770.cambridge.arm.com (e125770.arm.com [10.1.199.1])
 by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 4A2883F762;
 Wed, 31 Jan 2024 03:03:05 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 4f869515-c028-11ee-98f5-efadbce2ee36
From: Luca Fancellu <luca.fancellu@arm.com>
To: xen-devel@lists.xenproject.org
Cc: Stefano Stabellini <sstabellini@kernel.org>
Subject: [PATCH 1/3] xen-analysis.py: Use named group for tag regex
Date: Wed, 31 Jan 2024 11:02:39 +0000
Message-Id: <20240131110241.3951995-2-luca.fancellu@arm.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20240131110241.3951995-1-luca.fancellu@arm.com>
References: <20240131110241.3951995-1-luca.fancellu@arm.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Use named group for the regex matching a tag identifier, this
is done to ease retrieving the matching group instead of using
an index.

Signed-off-by: Luca Fancellu <luca.fancellu@arm.com>
---
 xen/scripts/xen_analysis/cppcheck_analysis.py |  4 ++--
 xen/scripts/xen_analysis/tag_database.py      | 24 +++++++++----------
 xen/scripts/xen_analysis/utils.py             |  2 +-
 3 files changed, 15 insertions(+), 15 deletions(-)

diff --git a/xen/scripts/xen_analysis/cppcheck_analysis.py b/xen/scripts/xen_analysis/cppcheck_analysis.py
index e54848aa5339..919eb153ce9c 100644
--- a/xen/scripts/xen_analysis/cppcheck_analysis.py
+++ b/xen/scripts/xen_analysis/cppcheck_analysis.py
@@ -41,7 +41,7 @@ def __generate_suppression_list(out_file):
     # The following lambda function will return a file if it contains lines with
     # a comment containing "cppcheck-suppress[*]" on a single line.
     grep_action = lambda x: utils.grep(x,
-                    r'^[ \t]*/\* cppcheck-suppress\[(.*)\] \*/$')
+                    r'^[ \t]*/\* cppcheck-suppress\[(?P<id>.*)\] \*/$')
     # Look for a list of .h files that matches the condition above
     headers = utils.recursive_find_file(settings.xen_dir, r'.*\.h$',
                                         grep_action)
@@ -97,7 +97,7 @@ def __generate_suppression_list(out_file):
                         if (not comment_section) and comment_line_starts:
                             comment_section = True
                         if (len(line.strip()) != 0) and (not comment_section):
-                            cppcheck_violation_id = entry["matches"][line_num][0]
+                            cppcheck_violation_id = entry["matches"][line_num]['id']
                             break
                         if comment_section and comment_line_stops:
                             comment_section = False
diff --git a/xen/scripts/xen_analysis/tag_database.py b/xen/scripts/xen_analysis/tag_database.py
index ca374bbb62dd..abba163aec71 100644
--- a/xen/scripts/xen_analysis/tag_database.py
+++ b/xen/scripts/xen_analysis/tag_database.py
@@ -18,11 +18,12 @@ tool_syntax = {
 
 
 def get_xen_tag_index_type_regex(tool):
-    return r'^SAF-(\d+)-(safe|false-positive-' + tool + ')$'
+    return rf'^SAF-(?P<id>\d+)-(?P<type>safe|false-positive-{tool})$'
 
 
 def get_xen_tag_comment_regex(tool):
-    return r'^[ \t]*/\* +(SAF-\d+-(?:safe|false-positive-' + tool + ')).*\*/$'
+    tag=rf'(?P<tag>SAF-\d+-(?:safe|false-positive-{tool}))'
+    return rf'^[ \t]*/\* +{tag}.*\*/$'
 
 
 # Returns a data structure containing dictionaries for safe and false-positive-*
@@ -60,12 +61,11 @@ def load_tag_database(tool, input_files, data_struct = None, schema = "safe"):
         if proprietary_id != "":
             comment=tool_syntax[tool].replace("VID",proprietary_id)
             # Regex to capture the index of the Xen tag and the schema
-            xen_tag = re.compile(get_xen_tag_index_type_regex(tool))\
-                            .match(entry["id"])
-            if xen_tag and xen_tag.group(1) and xen_tag.group(2):
+            xen_tag = re.match(get_xen_tag_index_type_regex(tool), entry["id"])
+            if xen_tag and xen_tag.group('id') and xen_tag.group('type'):
                 # Save in safe or false-positive-* the key {#id: "comment"}
-                id_number = int(xen_tag.group(1))
-                key = xen_tag.group(2)
+                id_number = int(xen_tag.group('id'))
+                key = xen_tag.group('type')
                 ret[key][id_number] = "/* {} */\n".format(comment)
             else:
                 raise TagDatabaseError(
@@ -95,11 +95,11 @@ def substitute_tags(tool, input_file, grep_struct, subs_rules):
             # information access the subs_rules dictionary to see if there is
             # a match
             for line_number in grep_struct["matches"]:
-                xen_tag = grep_struct["matches"][line_number][0]
-                xen_tag_regex_obj = re.compile(
-                            get_xen_tag_index_type_regex(tool)).match(xen_tag)
-                id_number = int(xen_tag_regex_obj.group(1))
-                key = xen_tag_regex_obj.group(2)
+                xen_tag = grep_struct["matches"][line_number]['tag']
+                xen_tag_regex_obj = re.match(get_xen_tag_index_type_regex(tool),
+                                             xen_tag)
+                id_number = int(xen_tag_regex_obj.group('id'))
+                key = xen_tag_regex_obj.group('type')
                 if id_number in subs_rules[key]:
                     parsed_content[line_number-1] = subs_rules[key][id_number]
 
diff --git a/xen/scripts/xen_analysis/utils.py b/xen/scripts/xen_analysis/utils.py
index 1193e3f4631e..eef48eeb7e87 100644
--- a/xen/scripts/xen_analysis/utils.py
+++ b/xen/scripts/xen_analysis/utils.py
@@ -12,7 +12,7 @@ def grep(filepath, regex):
             for line in f:
                 match = regObj.match(line)
                 if match:
-                    res["matches"][line_number] = match.groups()
+                    res["matches"][line_number] = match
                 line_number = line_number + 1
     except Exception as e:
         print("WARNING: Can't open {}: {}".format(filepath, e))
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Wed Jan 31 11:03:13 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 31 Jan 2024 11:03:13 +0000
Received: from list by lists.xenproject.org with outflank-mailman.673917.1048489 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rV8N3-0001Nm-9U; Wed, 31 Jan 2024 11:03:09 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 673917.1048489; Wed, 31 Jan 2024 11:03:09 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rV8N3-0001Nf-6p; Wed, 31 Jan 2024 11:03:09 +0000
Received: by outflank-mailman (input) for mailman id 673917;
 Wed, 31 Jan 2024 11:03:07 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=VKKJ=JJ=arm.com=luca.fancellu@srs-se1.protection.inumbo.net>)
 id 1rV8N1-0001NO-Mq
 for xen-devel@lists.xenproject.org; Wed, 31 Jan 2024 11:03:07 +0000
Received: from foss.arm.com (foss.arm.com [217.140.110.172])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTP
 id 4f363231-c028-11ee-8a43-1f161083a0e0;
 Wed, 31 Jan 2024 12:03:06 +0100 (CET)
Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14])
 by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 90B00DA7;
 Wed, 31 Jan 2024 03:03:48 -0800 (PST)
Received: from e125770.cambridge.arm.com (e125770.arm.com [10.1.199.1])
 by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 1ED513F762;
 Wed, 31 Jan 2024 03:03:04 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 4f363231-c028-11ee-8a43-1f161083a0e0
From: Luca Fancellu <luca.fancellu@arm.com>
To: xen-devel@lists.xenproject.org
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
	George Dunlap <george.dunlap@citrix.com>,
	Jan Beulich <jbeulich@suse.com>,
	Julien Grall <julien@xen.org>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Wei Liu <wl@xen.org>
Subject: [PATCH 0/3] xen-analysis.py: Enable Xen deviation tag at the end of the line
Date: Wed, 31 Jan 2024 11:02:38 +0000
Message-Id: <20240131110241.3951995-1-luca.fancellu@arm.com>
X-Mailer: git-send-email 2.34.1
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

This serie is enabling the xen-analysis tool to parse and substitute correctly
a deviation tag put at the end of the line containing a deviation to be deviated.

Before this serie the only way to deviate a violation was to put the tag in the
line above:

/* SAF-<id>-safe deviate the bla bla bla */
<line containing the violation>

But there are places in the code base where using the tag in the line above is
not convinient, for example:

if ( (expression) &&
     ((expression with violation) ||
     (expression) )
{
  [...]
}

In the above example is better to have the suppression comment at the end of the
line:

if ( (expression) &&
     ((expression with violation) || /* SAF-<id>-safe deviate the bla bla bla */
     (expression) )
{
  [...]
}

This clearly brings up the question about the code style line length, which in
this case needs to be amended for Xen deviation tags that goes above the limit.

Luca Fancellu (3):
  xen-analysis.py: Use named group for tag regex
  xen-analysis.py: Substitute only the comment instead of the line
  xen-analysis.py: Accept deviation comment at the end of the line

 docs/misra/documenting-violations.rst         | 10 ++++
 xen/scripts/xen_analysis/cppcheck_analysis.py |  4 +-
 xen/scripts/xen_analysis/generic_analysis.py  | 14 +++--
 xen/scripts/xen_analysis/tag_database.py      | 59 ++++++++++++++-----
 xen/scripts/xen_analysis/utils.py             |  2 +-
 5 files changed, 67 insertions(+), 22 deletions(-)

-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Wed Jan 31 11:03:13 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 31 Jan 2024 11:03:13 +0000
Received: from list by lists.xenproject.org with outflank-mailman.673918.1048494 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rV8N3-0001R3-Ia; Wed, 31 Jan 2024 11:03:09 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 673918.1048494; Wed, 31 Jan 2024 11:03:09 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rV8N3-0001QO-Di; Wed, 31 Jan 2024 11:03:09 +0000
Received: by outflank-mailman (input) for mailman id 673918;
 Wed, 31 Jan 2024 11:03:08 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=VKKJ=JJ=arm.com=luca.fancellu@srs-se1.protection.inumbo.net>)
 id 1rV8N2-0001NO-BK
 for xen-devel@lists.xenproject.org; Wed, 31 Jan 2024 11:03:08 +0000
Received: from foss.arm.com (foss.arm.com [217.140.110.172])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTP
 id 4ff0d39e-c028-11ee-8a43-1f161083a0e0;
 Wed, 31 Jan 2024 12:03:07 +0100 (CET)
Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14])
 by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id D5AE71477;
 Wed, 31 Jan 2024 03:03:49 -0800 (PST)
Received: from e125770.cambridge.arm.com (e125770.arm.com [10.1.199.1])
 by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id E71183F762;
 Wed, 31 Jan 2024 03:03:05 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 4ff0d39e-c028-11ee-8a43-1f161083a0e0
From: Luca Fancellu <luca.fancellu@arm.com>
To: xen-devel@lists.xenproject.org
Cc: Stefano Stabellini <sstabellini@kernel.org>
Subject: [PATCH 2/3] xen-analysis.py: Substitute only the comment instead of the line
Date: Wed, 31 Jan 2024 11:02:40 +0000
Message-Id: <20240131110241.3951995-3-luca.fancellu@arm.com>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20240131110241.3951995-1-luca.fancellu@arm.com>
References: <20240131110241.3951995-1-luca.fancellu@arm.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit

Change the code in tag_database.py to substitute only the SAF-*
comment instead of replacing the line.

Signed-off-by: Luca Fancellu <luca.fancellu@arm.com>
---
 xen/scripts/xen_analysis/tag_database.py | 18 +++++++++++++-----
 1 file changed, 13 insertions(+), 5 deletions(-)

diff --git a/xen/scripts/xen_analysis/tag_database.py b/xen/scripts/xen_analysis/tag_database.py
index abba163aec71..dc0558a46ed6 100644
--- a/xen/scripts/xen_analysis/tag_database.py
+++ b/xen/scripts/xen_analysis/tag_database.py
@@ -16,14 +16,18 @@ tool_syntax = {
     "eclair":"-E> hide VID 1 \"\""
 }
 
+def get_xen_tag_regex(tool):
+    return rf'(?P<tag>SAF-(?P<id>\d+)-(?P<type>safe|false-positive-{tool}))'
+
 
 def get_xen_tag_index_type_regex(tool):
-    return rf'^SAF-(?P<id>\d+)-(?P<type>safe|false-positive-{tool})$'
+    return rf'^{get_xen_tag_regex(tool)}$'
 
 
 def get_xen_tag_comment_regex(tool):
-    tag=rf'(?P<tag>SAF-\d+-(?:safe|false-positive-{tool}))'
-    return rf'^[ \t]*/\* +{tag}.*\*/$'
+    before_comment = r'(?P<before>[ \t]*)'
+    comment = rf'(?P<comment>/\* +{get_xen_tag_regex(tool)}.*\*/)'
+    return rf'^(?P<full_line>{before_comment}{comment})$'
 
 
 # Returns a data structure containing dictionaries for safe and false-positive-*
@@ -66,7 +70,7 @@ def load_tag_database(tool, input_files, data_struct = None, schema = "safe"):
                 # Save in safe or false-positive-* the key {#id: "comment"}
                 id_number = int(xen_tag.group('id'))
                 key = xen_tag.group('type')
-                ret[key][id_number] = "/* {} */\n".format(comment)
+                ret[key][id_number] = "/* {} */".format(comment)
             else:
                 raise TagDatabaseError(
                         "Error in database file, entry {} has unexpected "
@@ -101,7 +105,11 @@ def substitute_tags(tool, input_file, grep_struct, subs_rules):
                 id_number = int(xen_tag_regex_obj.group('id'))
                 key = xen_tag_regex_obj.group('type')
                 if id_number in subs_rules[key]:
-                    parsed_content[line_number-1] = subs_rules[key][id_number]
+                    comment_in = grep_struct["matches"][line_number]['comment']
+                    comment_out = subs_rules[key][id_number]
+                    parsed_content[line_number-1] = re.sub(
+                        re.escape(comment_in), comment_out,
+                        parsed_content[line_number-1])
 
             outfile.writelines(parsed_content)
     except Exception as e:
-- 
2.34.1



From xen-devel-bounces@lists.xenproject.org Wed Jan 31 11:09:49 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 31 Jan 2024 11:09:49 +0000
Received: from list by lists.xenproject.org with outflank-mailman.673934.1048529 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rV8TQ-0004lY-NU; Wed, 31 Jan 2024 11:09:44 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 673934.1048529; Wed, 31 Jan 2024 11:09:44 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rV8TQ-0004lR-Kh; Wed, 31 Jan 2024 11:09:44 +0000
Received: by outflank-mailman (input) for mailman id 673934;
 Wed, 31 Jan 2024 11:09:43 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=q596=JJ=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rV8TP-0004kO-J8
 for xen-devel@lists.xenproject.org; Wed, 31 Jan 2024 11:09:43 +0000
Received: from mail-lj1-x229.google.com (mail-lj1-x229.google.com
 [2a00:1450:4864:20::229])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 3bbcbef8-c029-11ee-8a43-1f161083a0e0;
 Wed, 31 Jan 2024 12:09:42 +0100 (CET)
Received: by mail-lj1-x229.google.com with SMTP id
 38308e7fff4ca-2d04fb2f36bso31247041fa.2
 for <xen-devel@lists.xenproject.org>; Wed, 31 Jan 2024 03:09:42 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 bp20-20020a5d5a94000000b0033afa93c2acsm4352900wrb.62.2024.01.31.03.09.41
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 31 Jan 2024 03:09:41 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 3bbcbef8-c029-11ee-8a43-1f161083a0e0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1706699382; x=1707304182; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=YHywtMK3dRTqor7SVO7Tfa7v0h4uIkmQM2EDjbMfjRo=;
        b=gjbSE9WCXebnXaC5OD0a71M7ctLZjpGv73f/ChkXMmN3D/SEj/oDRxpDcUxP7lp3go
         kN4LIbmxRGMTyAWuVoQEDIiqJrKS7NE9jDQ9T1nF7HKpdpApeQAWKMlibmJARrqCPV4n
         nKBcV1o1NGYCwP4PccXoGwKZDHNop0/+MFGKXiRQI2GBqUBhLLT8txi1gKnFBRdhv8OZ
         pJW2mFnzKZiQT5kK/woL3/uSU9XxxJaDJxtTIXApC3eGxRQVuZLs7xgCCwEmBD5FdvnS
         zMdf6Zaesz+kqHEvwJ/DQLz1HLG2cXByteSBZegzvWfm5v0jmgTeh27MNRRs37bj28ve
         KHTA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706699382; x=1707304182;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=YHywtMK3dRTqor7SVO7Tfa7v0h4uIkmQM2EDjbMfjRo=;
        b=IBlDpy5UQkyPytbYGqk8ZxHutoCbqPABzjDkC5ZUzN2/HTX5SCdNukyYLyapTr3HRf
         O3bXWoADmOrvSwjiPGkvgU5Ckp+JgT0l+2vuauVU2G7zV55XnvGtqY+C0fqp0BtOLToF
         Ot+hc0TZ9QBG8iHB9YaLGadFwBV+xUxobOzXp4Y0J/WZpuezrMEDehZW+Or1F0An+uO+
         wwAwtFAq0vtgBhbrLHeO/2xWLxxukAsKnOwbyxiPXgUobxcv72I8Fe+gOY+7uBNIzURd
         XCP6slTiePr5AqZlmxPJULH4ngOuKrscMzikuua2w1nnjjysvWSy2RuB1eWJlSdbECle
         pwsA==
X-Gm-Message-State: AOJu0YwVQLI1sIaCuY7crVgO4vhlzxdwmvf8B4jdH3ILP/1CDdvZ915W
	CFnxAD/Ycq7V473MlNkvQ1LS+FsQG4SRWOQB6MBSbYmHQACtWTv8PO3BFr+dJA==
X-Google-Smtp-Source: AGHT+IGaZHD8BsEfxDJA/2opbsbVLKJf5aa5Gi4xXKG1KBpLLC13llNbqtNhD2duBfDDlfWG9G4kHQ==
X-Received: by 2002:a2e:7d02:0:b0:2cf:2499:b94a with SMTP id y2-20020a2e7d02000000b002cf2499b94amr895121ljc.43.1706699381906;
        Wed, 31 Jan 2024 03:09:41 -0800 (PST)
X-Forwarded-Encrypted: i=0; AJvYcCVpogwH1wdDp/w5EG+WJZSpgRmAuxL4JZSlBblFN8y5w5wVyBRngnPTO303lR+35CwPUW4qDn+4CQCNbbCi1nzPiq4VOWIggxMqrbFyG9C6AA4/5cS2A5jtzqt5ldcV8SSus9vdt5D4UmSRAsAHys+td8Wk4esI/M0XUQ==
Message-ID: <e8859e7a-d6f6-4146-95d0-fc7a70919ff0@suse.com>
Date: Wed, 31 Jan 2024 12:09:40 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] IOMMU: iommu_use_hap_pt() implies CONFIG_HVM
Content-Language: en-US
To: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: Paul Durrant <paul@xen.org>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger.pau@citrix.com>, Kevin Tian <kevin.tian@intel.com>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
References: <61084180-d44a-4664-be13-462706587668@suse.com>
 <c9f2d1ae-6793-4c0c-a1b9-ea12a4b63132@citrix.com>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <c9f2d1ae-6793-4c0c-a1b9-ea12a4b63132@citrix.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 31.01.2024 11:40, Andrew Cooper wrote:
> On 31/01/2024 9:20 am, Jan Beulich wrote:
>> Allow the compiler a little more room on DCE by moving the compile-time-
>> constant condition into the predicate (from the one place where it was
>> added in an open-coded fashion for XSA-450).
>>
>> Signed-off-by: Jan Beulich <jbeulich@suse.com>
> 
> Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>

Thanks, but ...

> I'm surprised that's happy compiling if it's actually doing anything at
> all, given that it's an unguarded variable reference.

... I'm afraid I don't understand: What "unguarded variable reference"
are you seeing me add? Even if you were talking about the hap_pt_share
struct field (which was accessed before as well) - that's part of
struct domain_iommu no matter what .config has.

Jan


From xen-devel-bounces@lists.xenproject.org Wed Jan 31 11:17:51 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 31 Jan 2024 11:17:51 +0000
Received: from list by lists.xenproject.org with outflank-mailman.673938.1048538 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rV8bC-0006S8-HE; Wed, 31 Jan 2024 11:17:46 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 673938.1048538; Wed, 31 Jan 2024 11:17:46 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rV8bC-0006S1-Dn; Wed, 31 Jan 2024 11:17:46 +0000
Received: by outflank-mailman (input) for mailman id 673938;
 Wed, 31 Jan 2024 11:17:45 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=UyAi=JJ=cloud.com=christian.lindig@srs-se1.protection.inumbo.net>)
 id 1rV8bB-0006Rs-5V
 for xen-devel@lists.xenproject.org; Wed, 31 Jan 2024 11:17:45 +0000
Received: from mail-lf1-x129.google.com (mail-lf1-x129.google.com
 [2a00:1450:4864:20::129])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 59d950f9-c02a-11ee-98f5-efadbce2ee36;
 Wed, 31 Jan 2024 12:17:42 +0100 (CET)
Received: by mail-lf1-x129.google.com with SMTP id
 2adb3069b0e04-510faac8c57so785233e87.1
 for <xen-devel@lists.xenproject.org>; Wed, 31 Jan 2024 03:17:42 -0800 (PST)
Received: from smtpclient.apple ([160.101.139.1])
 by smtp.gmail.com with ESMTPSA id
 f30-20020a19381e000000b0050e741c0c29sm1823697lfa.156.2024.01.31.03.17.41
 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128);
 Wed, 31 Jan 2024 03:17:41 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 59d950f9-c02a-11ee-98f5-efadbce2ee36
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1706699862; x=1707304662; darn=lists.xenproject.org;
        h=to:references:message-id:content-transfer-encoding:cc:date
         :in-reply-to:from:subject:mime-version:from:to:cc:subject:date
         :message-id:reply-to;
        bh=GFtUHxjmtJZ/bhnH4zOEE9wKHR9JTKkbMIyhjgPXS3k=;
        b=MNcjqsNPVLiZy4xm78SmPbMj+mBE7YJjsTdr7t3uGP4nOqu8Zd7+lR8cpSWmmWsxQG
         qJxbAKIzxXolMK9ZERKz4Tcs+7hvMNobqEadPdCCYuY/WW+WeEtWrntBqihRxWCoEN8F
         Smu2UYP5ZiAucE3967EzjX/9tR0V5zHfxyELg=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706699862; x=1707304662;
        h=to:references:message-id:content-transfer-encoding:cc:date
         :in-reply-to:from:subject:mime-version:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to;
        bh=GFtUHxjmtJZ/bhnH4zOEE9wKHR9JTKkbMIyhjgPXS3k=;
        b=s5c5Q1h8q6EmSZSIyyqlnb8RFpI0lnyVuxd7KVbQTeizYGkCZESggSEASMzWvmgFqz
         rMV6FgXlmS4WDFUqVlWRuWF/xTZ10o7Xt5I2N7KCocASxKQKm6Q/uxLc57IzRCd16wcd
         w/rC93yZq3JBCz8vOtMftKVdyxIQpf/aFiLNC9Lji78/dUa541os30ag/qA1i4A9h98v
         iYCFeU8wNciR56XRnPQTTI33n6JUZWR+Cwed8XVeYtehy9ooRO6KKVjAr0guwxCitYnc
         +KGqIwHTG7RqRkVZ+CVvepUtk/rPMR0/KebyI3ASPxMmPkn0hT78xmacDNqS2e6BoKO4
         3G5w==
X-Gm-Message-State: AOJu0YzQHFiHxEm7gXur7ZPvdTmqMaetF7P0MtQOe755YZTnNJU09rP8
	oetxmXGKGmq5xqEv/Qd2O+A/A1gerOfLf8SL3XWH5qzFs0H/OxWE6AJdznyeQAM=
X-Google-Smtp-Source: AGHT+IEEvM5AwuM4ibqXh8G3YaRY03V1guAtmI7lZ6zPyE11ncPgccTL9i/eQxw/CZLuMY8585Bf9w==
X-Received: by 2002:a05:6512:447:b0:510:15e3:1cb1 with SMTP id y7-20020a056512044700b0051015e31cb1mr1509772lfk.9.1706699862000;
        Wed, 31 Jan 2024 03:17:42 -0800 (PST)
Content-Type: text/plain;
	charset=utf-8
Mime-Version: 1.0 (Mac OS X Mail 16.0 \(3774.200.91.1.1\))
Subject: Re: [PATCH v1 2/2] oxenstored: make Quota.t pure
From: Christian Lindig <christian.lindig@cloud.com>
In-Reply-To: <f98edc633527b6d9a6855af0aff4fb77970454cc.1706697858.git.edwin.torok@cloud.com>
Date: Wed, 31 Jan 2024 11:17:30 +0000
Cc: Xen-devel <xen-devel@lists.xenproject.org>,
 Christian Lindig <christian.lindig@citrix.com>,
 David Scott <dave@recoil.org>,
 Wei Liu <wl@xen.org>,
 Anthony PERARD <anthony.perard@citrix.com>
Content-Transfer-Encoding: quoted-printable
Message-Id: <5879EE8F-6FAB-4026-BEDB-1AEEA7BF23DB@cloud.com>
References: <cover.1706697858.git.edwin.torok@cloud.com>
 <f98edc633527b6d9a6855af0aff4fb77970454cc.1706697858.git.edwin.torok@cloud.com>
To: =?utf-8?B?RWR3aW4gVMO2csO2aw==?= <edwin.torok@cloud.com>
X-Mailer: Apple Mail (2.3774.200.91.1.1)



> On 31 Jan 2024, at 10:52, Edwin T=C3=B6r=C3=B6k =
<edwin.torok@cloud.com> wrote:
>=20
> Now that we no longer have a hashtable inside we can make Quota.t =
pure,
> and push the mutable update to its callers.
> Store.t already had a mutable Quota.t field.
>=20
> No functional change.

Acked-by: Christian Lindig <christian.lindig@cloud.com>

This is shifting copying working to GC work, at least potentially. I =
would agree that this is a good trade-off and the code looks correct to =
me. But I think we should see more testing and benchmarking before =
merging this unless we are fine merging speculative improvements.

=E2=80=94 C




From xen-devel-bounces@lists.xenproject.org Wed Jan 31 11:51:21 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 31 Jan 2024 11:51:21 +0000
Received: from list by lists.xenproject.org with outflank-mailman.673957.1048563 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rV97Y-0007d2-Lg; Wed, 31 Jan 2024 11:51:12 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 673957.1048563; Wed, 31 Jan 2024 11:51:12 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rV97Y-0007cf-FL; Wed, 31 Jan 2024 11:51:12 +0000
Received: by outflank-mailman (input) for mailman id 673957;
 Wed, 31 Jan 2024 11:50:23 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=L+aY=JJ=actia.se=john.ernberg@srs-se1.protection.inumbo.net>)
 id 1rV96l-0007Xr-E3
 for xen-devel@lists.xenproject.org; Wed, 31 Jan 2024 11:50:23 +0000
Received: from mail.actia.se (mail.actia.se [212.181.117.226])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id e968e46c-c02e-11ee-98f5-efadbce2ee36;
 Wed, 31 Jan 2024 12:50:21 +0100 (CET)
Received: from S036ANL.actianordic.se (10.12.31.117) by S036ANL.actianordic.se
 (10.12.31.117) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.35; Wed, 31 Jan
 2024 12:50:20 +0100
Received: from S036ANL.actianordic.se ([fe80::e13e:1feb:4ea6:ec69]) by
 S036ANL.actianordic.se ([fe80::e13e:1feb:4ea6:ec69%4]) with mapi id
 15.01.2507.035; Wed, 31 Jan 2024 12:50:20 +0100
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: e968e46c-c02e-11ee-98f5-efadbce2ee36
From: John Ernberg <john.ernberg@actia.se>
To: Stefano Stabellini <sstabellini@kernel.org>, Julien Grall
	<julien@xen.org>, Bertrand Marquis <bertrand.marquis@arm.com>, Michal Orzel
	<michal.orzel@amd.com>, Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>
CC: Peng Fan <peng.fan@nxp.com>, Jonas Blixt <jonas.blixt@actia.se>,
	"xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>, "John
 Ernberg" <john.ernberg@actia.se>
Subject: [PATCH 1/2] xen/arm: Add imx8q{m,x} platform glue
Thread-Topic: [PATCH 1/2] xen/arm: Add imx8q{m,x} platform glue
Thread-Index: AQHaVDuqVQ/kgxLZgUK/m8/hE0ez5Q==
Date: Wed, 31 Jan 2024 11:50:20 +0000
Message-ID: <20240131114952.305805-2-john.ernberg@actia.se>
References: <20240131114952.305805-1-john.ernberg@actia.se>
In-Reply-To: <20240131114952.305805-1-john.ernberg@actia.se>
Accept-Language: en-US, sv-SE
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-mailer: git-send-email 2.43.0
x-originating-ip: [10.12.12.30]
x-esetresult: clean, is OK
x-esetid: 37303A2958D72955667360
Content-Type: text/plain; charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0

When using Linux for dom0 there are a bunch of drivers that need to do SMC
SIP calls into the PSCI provider to enable certain hardware bits like the
watchdog.

Provide a basic platform glue that implements the needed SMC forwarding.

Signed-off-by: John Ernberg <john.ernberg@actia.se>
---
NOTE: This is based on code found in NXP Xen tree located here:
https://github.com/nxp-imx/imx-xen/blob/lf-5.10.y_4.13/xen/arch/arm/platfor=
ms/imx8qm.c

 xen/arch/arm/platforms/Makefile |  1 +
 xen/arch/arm/platforms/imx8qm.c | 65 +++++++++++++++++++++++++++++++++
 2 files changed, 66 insertions(+)
 create mode 100644 xen/arch/arm/platforms/imx8qm.c

diff --git a/xen/arch/arm/platforms/Makefile b/xen/arch/arm/platforms/Makef=
ile
index 8632f4115f..bec6e55d1f 100644
--- a/xen/arch/arm/platforms/Makefile
+++ b/xen/arch/arm/platforms/Makefile
@@ -9,5 +9,6 @@ obj-$(CONFIG_ALL_PLAT)   +=3D sunxi.o
 obj-$(CONFIG_ALL64_PLAT) +=3D thunderx.o
 obj-$(CONFIG_ALL64_PLAT) +=3D xgene-storm.o
 obj-$(CONFIG_ALL64_PLAT) +=3D brcm-raspberry-pi.o
+obj-$(CONFIG_ALL64_PLAT) +=3D imx8qm.o
 obj-$(CONFIG_MPSOC_PLATFORM)  +=3D xilinx-zynqmp.o
 obj-$(CONFIG_MPSOC_PLATFORM)  +=3D xilinx-zynqmp-eemi.o
diff --git a/xen/arch/arm/platforms/imx8qm.c b/xen/arch/arm/platforms/imx8q=
m.c
new file mode 100644
index 0000000000..a9cd9c3615
--- /dev/null
+++ b/xen/arch/arm/platforms/imx8qm.c
@@ -0,0 +1,65 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+/*
+ * xen/arch/arm/platforms/imx8qm.c
+ *
+ * i.MX 8QM setup
+ *
+ * Copyright (c) 2016 Freescale Inc.
+ * Copyright 2018-2019 NXP
+ *
+ *
+ * Peng Fan <peng.fan@nxp.com>
+ */
+
+#include <asm/platform.h>
+#include <asm/smccc.h>
+
+static const char * const imx8qm_dt_compat[] __initconst =3D
+{
+    "fsl,imx8qm",
+    "fsl,imx8qxp",
+    NULL
+};
+
+static bool imx8qm_smc(struct cpu_user_regs *regs)
+{
+    struct arm_smccc_res res;
+
+    if ( !cpus_have_const_cap(ARM_SMCCC_1_1) )
+    {
+        printk_once(XENLOG_WARNING "no SMCCC 1.1 support. Disabling firmwa=
re calls\n");
+
+        return false;
+    }
+
+    arm_smccc_1_1_smc(get_user_reg(regs, 0),
+                      get_user_reg(regs, 1),
+                      get_user_reg(regs, 2),
+                      get_user_reg(regs, 3),
+                      get_user_reg(regs, 4),
+                      get_user_reg(regs, 5),
+                      get_user_reg(regs, 6),
+                      get_user_reg(regs, 7),
+                      &res);
+
+    set_user_reg(regs, 0, res.a0);
+    set_user_reg(regs, 1, res.a1);
+    set_user_reg(regs, 2, res.a2);
+    set_user_reg(regs, 3, res.a3);
+
+    return true;
+}
+
+PLATFORM_START(imx8qm, "i.MX 8")
+    .compatible =3D imx8qm_dt_compat,
+    .smc =3D imx8qm_smc,
+PLATFORM_END
+
+/*
+ * Local variables:
+ * mode: C
+ * c-file-style: "BSD"
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
--=20
2.43.0


From xen-devel-bounces@lists.xenproject.org Wed Jan 31 11:51:21 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 31 Jan 2024 11:51:21 +0000
Received: from list by lists.xenproject.org with outflank-mailman.673956.1048556 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rV97Y-0007Zl-Aj; Wed, 31 Jan 2024 11:51:12 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 673956.1048556; Wed, 31 Jan 2024 11:51:12 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rV97Y-0007Ze-7v; Wed, 31 Jan 2024 11:51:12 +0000
Received: by outflank-mailman (input) for mailman id 673956;
 Wed, 31 Jan 2024 11:50:22 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=L+aY=JJ=actia.se=john.ernberg@srs-se1.protection.inumbo.net>)
 id 1rV96k-0007Xl-Qb
 for xen-devel@lists.xenproject.org; Wed, 31 Jan 2024 11:50:22 +0000
Received: from mail.actia.se (mail.actia.se [212.181.117.226])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id e967574e-c02e-11ee-8a43-1f161083a0e0;
 Wed, 31 Jan 2024 12:50:21 +0100 (CET)
Received: from S036ANL.actianordic.se (10.12.31.117) by S035ANL.actianordic.se
 (10.12.31.116) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.35; Wed, 31 Jan
 2024 12:50:20 +0100
Received: from S036ANL.actianordic.se ([fe80::e13e:1feb:4ea6:ec69]) by
 S036ANL.actianordic.se ([fe80::e13e:1feb:4ea6:ec69%4]) with mapi id
 15.01.2507.035; Wed, 31 Jan 2024 12:50:20 +0100
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: e967574e-c02e-11ee-8a43-1f161083a0e0
From: John Ernberg <john.ernberg@actia.se>
To: Stefano Stabellini <sstabellini@kernel.org>, Julien Grall
	<julien@xen.org>, Bertrand Marquis <bertrand.marquis@arm.com>, Michal Orzel
	<michal.orzel@amd.com>, Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>
CC: Peng Fan <peng.fan@nxp.com>, Jonas Blixt <jonas.blixt@actia.se>,
	"xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>, "John
 Ernberg" <john.ernberg@actia.se>
Subject: [PATCH 0/2] Xen: ARM: Improved NXP iMX8 platform support
Thread-Topic: [PATCH 0/2] Xen: ARM: Improved NXP iMX8 platform support
Thread-Index: AQHaVDuq5roL8FqoG0Ku2MrU1zzMKA==
Date: Wed, 31 Jan 2024 11:50:20 +0000
Message-ID: <20240131114952.305805-1-john.ernberg@actia.se>
Accept-Language: en-US, sv-SE
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-mailer: git-send-email 2.43.0
x-originating-ip: [10.12.12.30]
x-esetresult: clean, is OK
x-esetid: 37303A2921D72955667360
Content-Type: text/plain; charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0

The iMX lpuart driver added at 44e17aa60d47 ("xen/arm: Add i.MX lpuart driv=
er")
is not enough to boot a Linux based dom0 when certain drivers, such as the
watchdog driver, are enabled.

We're also adding iMX8QXP compatibles to allow Xen to use the UART on the
QXP variant as well.

John Ernberg (2):
  xen/arm: Add imx8q{m,x} platform glue
  xen/drivers: imx-lpuart: Add iMX8QXP compatible

 xen/arch/arm/platforms/Makefile |  1 +
 xen/arch/arm/platforms/imx8qm.c | 65 +++++++++++++++++++++++++++++++++
 xen/drivers/char/imx-lpuart.c   |  1 +
 3 files changed, 67 insertions(+)
 create mode 100644 xen/arch/arm/platforms/imx8qm.c

--=20
2.43.0


From xen-devel-bounces@lists.xenproject.org Wed Jan 31 11:51:21 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 31 Jan 2024 11:51:21 +0000
Received: from list by lists.xenproject.org with outflank-mailman.673958.1048566 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rV97Y-0007ic-Rp; Wed, 31 Jan 2024 11:51:12 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 673958.1048566; Wed, 31 Jan 2024 11:51:12 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rV97Y-0007h2-Nx; Wed, 31 Jan 2024 11:51:12 +0000
Received: by outflank-mailman (input) for mailman id 673958;
 Wed, 31 Jan 2024 11:50:24 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=L+aY=JJ=actia.se=john.ernberg@srs-se1.protection.inumbo.net>)
 id 1rV96m-0007Xr-A9
 for xen-devel@lists.xenproject.org; Wed, 31 Jan 2024 11:50:24 +0000
Received: from mail.actia.se (mail.actia.se [212.181.117.226])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id ea699cf4-c02e-11ee-98f5-efadbce2ee36;
 Wed, 31 Jan 2024 12:50:22 +0100 (CET)
Received: from S036ANL.actianordic.se (10.12.31.117) by S036ANL.actianordic.se
 (10.12.31.117) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.35; Wed, 31 Jan
 2024 12:50:20 +0100
Received: from S036ANL.actianordic.se ([fe80::e13e:1feb:4ea6:ec69]) by
 S036ANL.actianordic.se ([fe80::e13e:1feb:4ea6:ec69%4]) with mapi id
 15.01.2507.035; Wed, 31 Jan 2024 12:50:20 +0100
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: ea699cf4-c02e-11ee-98f5-efadbce2ee36
From: John Ernberg <john.ernberg@actia.se>
To: Stefano Stabellini <sstabellini@kernel.org>, Julien Grall
	<julien@xen.org>, Bertrand Marquis <bertrand.marquis@arm.com>, Michal Orzel
	<michal.orzel@amd.com>, Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>
CC: Peng Fan <peng.fan@nxp.com>, Jonas Blixt <jonas.blixt@actia.se>,
	"xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>, "John
 Ernberg" <john.ernberg@actia.se>
Subject: [PATCH 2/2] xen/drivers: imx-lpuart: Add iMX8QXP compatible
Thread-Topic: [PATCH 2/2] xen/drivers: imx-lpuart: Add iMX8QXP compatible
Thread-Index: AQHaVDuqVZ6MA3Rd4EaFO4eTM5QUaw==
Date: Wed, 31 Jan 2024 11:50:20 +0000
Message-ID: <20240131114952.305805-3-john.ernberg@actia.se>
References: <20240131114952.305805-1-john.ernberg@actia.se>
In-Reply-To: <20240131114952.305805-1-john.ernberg@actia.se>
Accept-Language: en-US, sv-SE
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-mailer: git-send-email 2.43.0
x-originating-ip: [10.12.12.30]
x-esetresult: clean, is OK
x-esetid: 37303A2958D72955667360
Content-Type: text/plain; charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0

Allow the uart to probe also with iMX8QXP. The ip-block is the same as in t=
he QM,
only the compatible is needed.

Signed-off-by: John Ernberg <john.ernberg@actia.se>
---
 xen/drivers/char/imx-lpuart.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/xen/drivers/char/imx-lpuart.c b/xen/drivers/char/imx-lpuart.c
index 77f70c2719..c85e81109a 100644
--- a/xen/drivers/char/imx-lpuart.c
+++ b/xen/drivers/char/imx-lpuart.c
@@ -257,6 +257,7 @@ static int __init imx_lpuart_init(struct dt_device_node=
 *dev,
 static const struct dt_device_match imx_lpuart_dt_compat[] __initconst =3D
 {
     DT_MATCH_COMPATIBLE("fsl,imx8qm-lpuart"),
+    DT_MATCH_COMPATIBLE("fsl,imx8qxp-lpuart"),
     { /* sentinel */ },
 };
=20
--=20
2.43.0


From xen-devel-bounces@lists.xenproject.org Wed Jan 31 11:52:46 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 31 Jan 2024 11:52:46 +0000
Received: from list by lists.xenproject.org with outflank-mailman.673969.1048587 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rV992-0000i0-Ay; Wed, 31 Jan 2024 11:52:44 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 673969.1048587; Wed, 31 Jan 2024 11:52:44 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rV992-0000ht-8E; Wed, 31 Jan 2024 11:52:44 +0000
Received: by outflank-mailman (input) for mailman id 673969;
 Wed, 31 Jan 2024 11:52:43 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=6GWq=JJ=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1rV991-0000hl-BQ
 for xen-devel@lists.xenproject.org; Wed, 31 Jan 2024 11:52:43 +0000
Received: from mail-wr1-x431.google.com (mail-wr1-x431.google.com
 [2a00:1450:4864:20::431])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 3cc19edb-c02f-11ee-98f5-efadbce2ee36;
 Wed, 31 Jan 2024 12:52:41 +0100 (CET)
Received: by mail-wr1-x431.google.com with SMTP id
 ffacd0b85a97d-3394ca0c874so4084787f8f.2
 for <xen-devel@lists.xenproject.org>; Wed, 31 Jan 2024 03:52:41 -0800 (PST)
Received: from [10.80.67.30] (default-46-102-197-194.interdsl.co.uk.
 [46.102.197.194]) by smtp.gmail.com with ESMTPSA id
 ci10-20020a5d5d8a000000b00339281d98c9sm13454583wrb.72.2024.01.31.03.52.40
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 31 Jan 2024 03:52:40 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 3cc19edb-c02f-11ee-98f5-efadbce2ee36
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1706701960; x=1707306760; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=eYPho3cpWD/mpEnmeET3iJxZtHGXuxTitF/5XOuaRmc=;
        b=KExcmcfoBLnZMcw0iQwicMpZ0CUzyhDxavCBPNMi9qqHZa8DjVM9NFz8K+0OKjtVjg
         WgG8ojkZTcY2x+CVEW58HMYFmf2rA8yWX6XQ8iIW5QcnKEDePB3lUNsAVLF3zaSpT3UX
         BSZE8RnYxAVBNbZmRIQBtq/BB9BFsUbWTyvAg=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706701960; x=1707306760;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=eYPho3cpWD/mpEnmeET3iJxZtHGXuxTitF/5XOuaRmc=;
        b=oMB/hzpfoVpQ7cg/2tUcnl9VrDlB2VPt9ZpibSlOQCf05vVb82Mvutege2DfgzivJr
         8JgO7dMlghlhWCcOy31GTmFo/AeIpe2mkQmZDnxjrPLLMu6g2o+kfVrU4LzfViAyg+j/
         Ao9GesbcLt3vZ2LQ3Dwoe+lcMNZSyQMm+6xBWXo3L16FDJw9dCMU6TnZHAlWpsulNzwO
         jacyOOmmZnDmOezSLoO4EPOe4sZOZlcKWEwNrYuLf4lhcjM+h+UfYWQ2033tnVwDlvQd
         CLfHZqMwuNY9Ucv8/Y/3bqLaXii4gLEU+oH+XlzR9AjpyiiSxj/2gGxKKOprIrll0VFq
         KqRQ==
X-Gm-Message-State: AOJu0YzGMt/wzsT0P8+pIMPNsp4iRoG26HoVyP0WXwVALJpVbRAh79+J
	JxeKa507KxkrAQvncOcxwNWGj422J+9O3NHxSR2u6PDm0aZjyU7TgIBR6/dT6B8=
X-Google-Smtp-Source: AGHT+IHkZrjTGOds60ksWs54WvoK7SMm9W2eMTkQNswHuA8dkxB4mn0x3WKKVq2J5AaTcZ3SdqDt8w==
X-Received: by 2002:a5d:47a2:0:b0:33a:febd:f1bb with SMTP id 2-20020a5d47a2000000b0033afebdf1bbmr1121160wrb.33.1706701960654;
        Wed, 31 Jan 2024 03:52:40 -0800 (PST)
X-Forwarded-Encrypted: i=0; AJvYcCVtzf8329BdRyDhXMk+n1JxYG/mrn5mPBam/TMhMaYWV/DA80m3pGGuZf9WVxtw3y/0qiRcqkrg69pbfGx4wP+mihTQP33qfvgJu+bDOXtHuJGXJAVdhST5SAp0nMFm/JLn7Olaa1v6i1+WXRfQRAo3A63dpsq6tEdtBA==
Message-ID: <415e33c5-a9ef-43bd-87a2-1da3f3577a4b@citrix.com>
Date: Wed, 31 Jan 2024 11:52:39 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] IOMMU: iommu_use_hap_pt() implies CONFIG_HVM
Content-Language: en-GB
To: Jan Beulich <jbeulich@suse.com>
Cc: Paul Durrant <paul@xen.org>, =?UTF-8?Q?Roger_Pau_Monn=C3=A9?=
 <roger.pau@citrix.com>, Kevin Tian <kevin.tian@intel.com>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
References: <61084180-d44a-4664-be13-462706587668@suse.com>
 <c9f2d1ae-6793-4c0c-a1b9-ea12a4b63132@citrix.com>
 <e8859e7a-d6f6-4146-95d0-fc7a70919ff0@suse.com>
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 xsFNBFLhNn8BEADVhE+Hb8i0GV6mihnnr/uiQQdPF8kUoFzCOPXkf7jQ5sLYeJa0cQi6Penp
 VtiFYznTairnVsN5J+ujSTIb+OlMSJUWV4opS7WVNnxHbFTPYZVQ3erv7NKc2iVizCRZ2Kxn
 srM1oPXWRic8BIAdYOKOloF2300SL/bIpeD+x7h3w9B/qez7nOin5NzkxgFoaUeIal12pXSR
 Q354FKFoy6Vh96gc4VRqte3jw8mPuJQpfws+Pb+swvSf/i1q1+1I4jsRQQh2m6OTADHIqg2E
 ofTYAEh7R5HfPx0EXoEDMdRjOeKn8+vvkAwhviWXTHlG3R1QkbE5M/oywnZ83udJmi+lxjJ5
 YhQ5IzomvJ16H0Bq+TLyVLO/VRksp1VR9HxCzItLNCS8PdpYYz5TC204ViycobYU65WMpzWe
 LFAGn8jSS25XIpqv0Y9k87dLbctKKA14Ifw2kq5OIVu2FuX+3i446JOa2vpCI9GcjCzi3oHV
 e00bzYiHMIl0FICrNJU0Kjho8pdo0m2uxkn6SYEpogAy9pnatUlO+erL4LqFUO7GXSdBRbw5
 gNt25XTLdSFuZtMxkY3tq8MFss5QnjhehCVPEpE6y9ZjI4XB8ad1G4oBHVGK5LMsvg22PfMJ
 ISWFSHoF/B5+lHkCKWkFxZ0gZn33ju5n6/FOdEx4B8cMJt+cWwARAQABzSlBbmRyZXcgQ29v
 cGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPsLBegQTAQgAJAIbAwULCQgHAwUVCgkI
 CwUWAgMBAAIeAQIXgAUCWKD95wIZAQAKCRBlw/kGpdefoHbdD/9AIoR3k6fKl+RFiFpyAhvO
 59ttDFI7nIAnlYngev2XUR3acFElJATHSDO0ju+hqWqAb8kVijXLops0gOfqt3VPZq9cuHlh
 IMDquatGLzAadfFx2eQYIYT+FYuMoPZy/aTUazmJIDVxP7L383grjIkn+7tAv+qeDfE+txL4
 SAm1UHNvmdfgL2/lcmL3xRh7sub3nJilM93RWX1Pe5LBSDXO45uzCGEdst6uSlzYR/MEr+5Z
 JQQ32JV64zwvf/aKaagSQSQMYNX9JFgfZ3TKWC1KJQbX5ssoX/5hNLqxMcZV3TN7kU8I3kjK
 mPec9+1nECOjjJSO/h4P0sBZyIUGfguwzhEeGf4sMCuSEM4xjCnwiBwftR17sr0spYcOpqET
 ZGcAmyYcNjy6CYadNCnfR40vhhWuCfNCBzWnUW0lFoo12wb0YnzoOLjvfD6OL3JjIUJNOmJy
 RCsJ5IA/Iz33RhSVRmROu+TztwuThClw63g7+hoyewv7BemKyuU6FTVhjjW+XUWmS/FzknSi
 dAG+insr0746cTPpSkGl3KAXeWDGJzve7/SBBfyznWCMGaf8E2P1oOdIZRxHgWj0zNr1+ooF
 /PzgLPiCI4OMUttTlEKChgbUTQ+5o0P080JojqfXwbPAyumbaYcQNiH1/xYbJdOFSiBv9rpt
 TQTBLzDKXok86M7BTQRS4TZ/ARAAkgqudHsp+hd82UVkvgnlqZjzz2vyrYfz7bkPtXaGb9H4
 Rfo7mQsEQavEBdWWjbga6eMnDqtu+FC+qeTGYebToxEyp2lKDSoAsvt8w82tIlP/EbmRbDVn
 7bhjBlfRcFjVYw8uVDPptT0TV47vpoCVkTwcyb6OltJrvg/QzV9f07DJswuda1JH3/qvYu0p
 vjPnYvCq4NsqY2XSdAJ02HrdYPFtNyPEntu1n1KK+gJrstjtw7KsZ4ygXYrsm/oCBiVW/OgU
 g/XIlGErkrxe4vQvJyVwg6YH653YTX5hLLUEL1NS4TCo47RP+wi6y+TnuAL36UtK/uFyEuPy
 wwrDVcC4cIFhYSfsO0BumEI65yu7a8aHbGfq2lW251UcoU48Z27ZUUZd2Dr6O/n8poQHbaTd
 6bJJSjzGGHZVbRP9UQ3lkmkmc0+XCHmj5WhwNNYjgbbmML7y0fsJT5RgvefAIFfHBg7fTY/i
 kBEimoUsTEQz+N4hbKwo1hULfVxDJStE4sbPhjbsPCrlXf6W9CxSyQ0qmZ2bXsLQYRj2xqd1
 bpA+1o1j2N4/au1R/uSiUFjewJdT/LX1EklKDcQwpk06Af/N7VZtSfEJeRV04unbsKVXWZAk
 uAJyDDKN99ziC0Wz5kcPyVD1HNf8bgaqGDzrv3TfYjwqayRFcMf7xJaL9xXedMcAEQEAAcLB
 XwQYAQgACQUCUuE2fwIbDAAKCRBlw/kGpdefoG4XEACD1Qf/er8EA7g23HMxYWd3FXHThrVQ
 HgiGdk5Yh632vjOm9L4sd/GCEACVQKjsu98e8o3ysitFlznEns5EAAXEbITrgKWXDDUWGYxd
 pnjj2u+GkVdsOAGk0kxczX6s+VRBhpbBI2PWnOsRJgU2n10PZ3mZD4Xu9kU2IXYmuW+e5KCA
 vTArRUdCrAtIa1k01sPipPPw6dfxx2e5asy21YOytzxuWFfJTGnVxZZSCyLUO83sh6OZhJkk
 b9rxL9wPmpN/t2IPaEKoAc0FTQZS36wAMOXkBh24PQ9gaLJvfPKpNzGD8XWR5HHF0NLIJhgg
 4ZlEXQ2fVp3XrtocHqhu4UZR4koCijgB8sB7Tb0GCpwK+C4UePdFLfhKyRdSXuvY3AHJd4CP
 4JzW0Bzq/WXY3XMOzUTYApGQpnUpdOmuQSfpV9MQO+/jo7r6yPbxT7CwRS5dcQPzUiuHLK9i
 nvjREdh84qycnx0/6dDroYhp0DFv4udxuAvt1h4wGwTPRQZerSm4xaYegEFusyhbZrI0U9tJ
 B8WrhBLXDiYlyJT6zOV2yZFuW47VrLsjYnHwn27hmxTC/7tvG3euCklmkn9Sl9IAKFu29RSo
 d5bD8kMSCYsTqtTfT6W4A3qHGvIDta3ptLYpIAOD2sY3GYq2nf3Bbzx81wZK14JdDDHUX2Rs
 6+ahAA==
In-Reply-To: <e8859e7a-d6f6-4146-95d0-fc7a70919ff0@suse.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 31/01/2024 11:09 am, Jan Beulich wrote:
> On 31.01.2024 11:40, Andrew Cooper wrote:
>> On 31/01/2024 9:20 am, Jan Beulich wrote:
>>> Allow the compiler a little more room on DCE by moving the compile-time-
>>> constant condition into the predicate (from the one place where it was
>>> added in an open-coded fashion for XSA-450).
>>>
>>> Signed-off-by: Jan Beulich <jbeulich@suse.com>
>> Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>
> Thanks, but ...
>
>> I'm surprised that's happy compiling if it's actually doing anything at
>> all, given that it's an unguarded variable reference.
> ... I'm afraid I don't understand: What "unguarded variable reference"
> are you seeing me add? Even if you were talking about the hap_pt_share
> struct field (which was accessed before as well) - that's part of
> struct domain_iommu no matter what .config has.

Ah.  That will be why it compiles.

Fine.

~Andrew


From xen-devel-bounces@lists.xenproject.org Wed Jan 31 12:09:16 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 31 Jan 2024 12:09:16 +0000
Received: from list by lists.xenproject.org with outflank-mailman.673984.1048598 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rV9Ot-0004FX-Un; Wed, 31 Jan 2024 12:09:07 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 673984.1048598; Wed, 31 Jan 2024 12:09:07 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rV9Ot-0004FQ-Q5; Wed, 31 Jan 2024 12:09:07 +0000
Received: by outflank-mailman (input) for mailman id 673984;
 Wed, 31 Jan 2024 12:09:07 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=oSjc=JJ=suse.com=jgross@srs-se1.protection.inumbo.net>)
 id 1rV9Ot-0004FK-4y
 for xen-devel@lists.xenproject.org; Wed, 31 Jan 2024 12:09:07 +0000
Received: from smtp-out2.suse.de (smtp-out2.suse.de
 [2a07:de40:b251:101:10:150:64:2])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 87c21f50-c031-11ee-8a43-1f161083a0e0;
 Wed, 31 Jan 2024 13:09:06 +0100 (CET)
Received: from imap1.dmz-prg2.suse.org (imap1.dmz-prg2.suse.org [10.150.64.97])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
 (No client certificate requested)
 by smtp-out2.suse.de (Postfix) with ESMTPS id 2E57A1FB7D;
 Wed, 31 Jan 2024 12:09:05 +0000 (UTC)
Received: from imap1.dmz-prg2.suse.org (localhost [127.0.0.1])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
 (No client certificate requested)
 by imap1.dmz-prg2.suse.org (Postfix) with ESMTPS id 083C2139B1;
 Wed, 31 Jan 2024 12:09:05 +0000 (UTC)
Received: from dovecot-director2.suse.de ([10.150.64.162])
 by imap1.dmz-prg2.suse.org with ESMTPSA id 5441AGE4umUMcwAAD6G6ig
 (envelope-from <jgross@suse.com>); Wed, 31 Jan 2024 12:09:05 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 87c21f50-c031-11ee-8a43-1f161083a0e0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1706702945; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:content-type:content-type:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=qakM2Pbp9sQJBnouiJ8gyM+QUJks9kkHuou94F+crM8=;
	b=tSuXKi6mHPee5eOPC2ZzzZpKtEuNFPvhZ3gC3Oj5H0HrIo/rj6OgdAVRawpBLuPnwVNbnY
	I4AF7RRmfmFPVDmBcSN77ozO7MLUDS6SKDQ8sAd9vJnDCscXtDav/tcDbMJU9JT23ZAH04
	ZY1ZT2/xVKkwAax5qUaqJlKkZYF5J7U=
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1706702945; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:content-type:content-type:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=qakM2Pbp9sQJBnouiJ8gyM+QUJks9kkHuou94F+crM8=;
	b=tSuXKi6mHPee5eOPC2ZzzZpKtEuNFPvhZ3gC3Oj5H0HrIo/rj6OgdAVRawpBLuPnwVNbnY
	I4AF7RRmfmFPVDmBcSN77ozO7MLUDS6SKDQ8sAd9vJnDCscXtDav/tcDbMJU9JT23ZAH04
	ZY1ZT2/xVKkwAax5qUaqJlKkZYF5J7U=
Message-ID: <0628eca5-1183-445d-b688-6c85d21423c0@suse.com>
Date: Wed, 31 Jan 2024 13:09:04 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 08/33] tools/xenlogd: add 9pfs attach request support
Content-Language: en-US
To: Jason Andryuk <jandryuk@gmail.com>
Cc: xen-devel@lists.xenproject.org, Wei Liu <wl@xen.org>,
 Anthony PERARD <anthony.perard@citrix.com>
References: <20240104090055.27323-1-jgross@suse.com>
 <20240104090055.27323-9-jgross@suse.com>
 <CAKf6xpv2BHy_8qomwfFJq2dePFf8bB19NZQ4dmw-eFDj5+hdng@mail.gmail.com>
From: =?UTF-8?B?SsO8cmdlbiBHcm/Dnw==?= <jgross@suse.com>
In-Reply-To: <CAKf6xpv2BHy_8qomwfFJq2dePFf8bB19NZQ4dmw-eFDj5+hdng@mail.gmail.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
Authentication-Results: smtp-out2.suse.de;
	none
X-Spamd-Result: default: False [0.62 / 50.00];
	 ARC_NA(0.00)[];
	 RCVD_VIA_SMTP_AUTH(0.00)[];
	 XM_UA_NO_VERSION(0.01)[];
	 FROM_HAS_DN(0.00)[];
	 RCPT_COUNT_THREE(0.00)[4];
	 FREEMAIL_ENVRCPT(0.00)[gmail.com];
	 TO_MATCH_ENVRCPT_ALL(0.00)[];
	 MIME_GOOD(-0.10)[text/plain];
	 TO_DN_SOME(0.00)[];
	 BAYES_HAM(-0.00)[33.39%];
	 RCVD_COUNT_THREE(0.00)[3];
	 DKIM_SIGNED(0.00)[suse.com:s=susede1];
	 DBL_BLOCKED_OPENRESOLVER(0.00)[suse.com:email];
	 FREEMAIL_TO(0.00)[gmail.com];
	 FUZZY_BLOCKED(0.00)[rspamd.com];
	 FROM_EQ_ENVFROM(0.00)[];
	 MIME_TRACE(0.00)[0:+];
	 R_MIXED_CHARSET(0.71)[subject];
	 RCVD_TLS_ALL(0.00)[];
	 MID_RHS_MATCH_FROM(0.00)[]
X-Spam-Level: 
X-Spam-Flag: NO
X-Spam-Score: 0.62

On 09.01.24 19:48, Jason Andryuk wrote:
> On Thu, Jan 4, 2024 at 4:12 AM Juergen Gross <jgross@suse.com> wrote:
>>
>> Add the attach request of the 9pfs protocol. This introduces the "fid"
>> scheme of the 9pfs protocol.
>>
>> As this will be needed later, use a dedicated memory allocation
>> function in alloc_fid() and prepare a fid reference count.
>>
>> For filling the qid data take the approach from the qemu 9pfs backend
>> implementation.
>>
>> Signed-off-by: Juergen Gross <jgross@suse.com>
>> ---
>> V2:
>> - make fill_qid() parameter stbuf const (Jason Andryuk)
>> - free fids after disconnecting guest (Jason Andryuk)
>> V3:
>> - only store relative path in fid (Jason Andryuk)
> 
> The code looks good.  I did have a thought though.
> 
>> +static struct p9_fid *alloc_fid_mem(device *device, unsigned int fid,
>> +                                    const char *path)
>> +{
>> +    struct p9_fid *fidp;
>> +    size_t pathlen;
>> +
>> +    /* Paths always start with "/" as they are starting at the mount point. */
>> +    assert(path[0] == '/');
>> +
> 
> ...
> 
>> +
>> +static const char *relpath_from_path(const char *path)
>> +{
>> +    if (!strcmp(path, "/"))
>> +        return ".";
>> +
>> +    return (path[0] == '/') ? path + 1 : path;
>> +}
> 
> You've carefully written the code to ensure the *at() functions are
> not called with paths starting with "/".  What do you think about
> storing the converted paths when storing into the p9_fid?  That way
> the code doesn't have to worry about always going through
> relpath_from_path() before use.  Another option beside performing the
> relpath_from_path() conversion, would be to save fidp->path with "./"
> at the start to eliminate absolute paths that way.  My thinking is
> it's more robust to not have any absolute paths that could be passed
> to a *at() function.

I've had a thorough look at the code at the end of the series and I agree
this is a good idea.

I'll change the related patches accordingly.


Juergen


From xen-devel-bounces@lists.xenproject.org Wed Jan 31 12:10:08 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 31 Jan 2024 12:10:08 +0000
Received: from list by lists.xenproject.org with outflank-mailman.673987.1048607 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rV9Ps-0005og-7C; Wed, 31 Jan 2024 12:10:08 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 673987.1048607; Wed, 31 Jan 2024 12:10:08 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rV9Ps-0005oZ-3i; Wed, 31 Jan 2024 12:10:08 +0000
Received: by outflank-mailman (input) for mailman id 673987;
 Wed, 31 Jan 2024 12:10:06 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=oSjc=JJ=suse.com=jgross@srs-se1.protection.inumbo.net>)
 id 1rV9Pq-0004o4-Sw
 for xen-devel@lists.xenproject.org; Wed, 31 Jan 2024 12:10:06 +0000
Received: from smtp-out1.suse.de (smtp-out1.suse.de [195.135.223.130])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id abafcbd0-c031-11ee-8a43-1f161083a0e0;
 Wed, 31 Jan 2024 13:10:06 +0100 (CET)
Received: from imap1.dmz-prg2.suse.org (imap1.dmz-prg2.suse.org [10.150.64.97])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
 (No client certificate requested)
 by smtp-out1.suse.de (Postfix) with ESMTPS id 0084521E7D;
 Wed, 31 Jan 2024 12:10:05 +0000 (UTC)
Received: from imap1.dmz-prg2.suse.org (localhost [127.0.0.1])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
 (No client certificate requested)
 by imap1.dmz-prg2.suse.org (Postfix) with ESMTPS id CF00F139B1;
 Wed, 31 Jan 2024 12:10:04 +0000 (UTC)
Received: from dovecot-director2.suse.de ([10.150.64.162])
 by imap1.dmz-prg2.suse.org with ESMTPSA id sGdAL5w4umUMcwAAD6G6ig
 (envelope-from <jgross@suse.com>); Wed, 31 Jan 2024 12:10:04 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: abafcbd0-c031-11ee-8a43-1f161083a0e0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1706703006; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:content-type:content-type:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=DICoyufxGX0SqHHSPwn5sg2GvztwFyJT1WSfXZRF3TA=;
	b=hc2nORqCtrQGsS96lZhgYrvkT2due9lr1PTtorvvqVGiKrTuH/8oWQiR0SUvY+dnjXR1h8
	HgigbR9PnvH/pGypzuLXj3nhISMx/ZxrHtEHyiN2ElHsnMyxkz+tztKF3Njgjx2q4bSzXV
	DbduA4CYoeCggUehxVIxz6vaqprYpaw=
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1706703005; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:content-type:content-type:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=DICoyufxGX0SqHHSPwn5sg2GvztwFyJT1WSfXZRF3TA=;
	b=eiqrD/kaWqRLbLeI1BOOnPA9oCWYkW4YKNNkBAeolb6pIfEZQwJ70ZMLzZaxXyyBo14hZq
	HzxQR7uzbjiRxkV6QkPxdgakXoznvQe2kNj8HBZXcVk9vmzKTLsb+Smiy/ygWD1Rai5A63
	OtWWTjBqnheR1+C0NRXG60+vHinb/qw=
Message-ID: <43af39ae-7aca-4085-b375-76567febde4f@suse.com>
Date: Wed, 31 Jan 2024 13:10:04 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 09/33] tools/xenlogd: add 9pfs walk request support
Content-Language: en-US
To: Jason Andryuk <jandryuk@gmail.com>
Cc: xen-devel@lists.xenproject.org, Wei Liu <wl@xen.org>,
 Anthony PERARD <anthony.perard@citrix.com>
References: <20240104090055.27323-1-jgross@suse.com>
 <20240104090055.27323-10-jgross@suse.com>
 <CAKf6xpu-P5pmL6Nk2Zvu3Va1fgzTUPnTgrdk0wgszAb3WoBgtg@mail.gmail.com>
From: =?UTF-8?B?SsO8cmdlbiBHcm/Dnw==?= <jgross@suse.com>
In-Reply-To: <CAKf6xpu-P5pmL6Nk2Zvu3Va1fgzTUPnTgrdk0wgszAb3WoBgtg@mail.gmail.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
Authentication-Results: smtp-out1.suse.de;
	none
X-Spam-Level: 
X-Spam-Score: -0.66
X-Spamd-Result: default: False [-0.66 / 50.00];
	 ARC_NA(0.00)[];
	 RCVD_VIA_SMTP_AUTH(0.00)[];
	 XM_UA_NO_VERSION(0.01)[];
	 FROM_HAS_DN(0.00)[];
	 RCPT_COUNT_THREE(0.00)[4];
	 FREEMAIL_ENVRCPT(0.00)[gmail.com];
	 TO_MATCH_ENVRCPT_ALL(0.00)[];
	 MIME_GOOD(-0.10)[text/plain];
	 NEURAL_HAM_LONG(-1.00)[-1.000];
	 TO_DN_SOME(0.00)[];
	 BAYES_HAM(-0.09)[64.18%];
	 RCVD_COUNT_THREE(0.00)[3];
	 DKIM_SIGNED(0.00)[suse.com:s=susede1];
	 NEURAL_HAM_SHORT(-0.20)[-1.000];
	 DBL_BLOCKED_OPENRESOLVER(0.00)[suse.com:email];
	 FREEMAIL_TO(0.00)[gmail.com];
	 FUZZY_BLOCKED(0.00)[rspamd.com];
	 FROM_EQ_ENVFROM(0.00)[];
	 MIME_TRACE(0.00)[0:+];
	 R_MIXED_CHARSET(0.71)[subject];
	 RCVD_TLS_ALL(0.00)[];
	 MID_RHS_MATCH_FROM(0.00)[]
X-Spam-Flag: NO

On 09.01.24 20:19, Jason Andryuk wrote:
> On Thu, Jan 4, 2024 at 4:10 AM Juergen Gross <jgross@suse.com> wrote:
>>
>> Add the walk request of the 9pfs protocol.
>>
>> Signed-off-by: Juergen Gross <jgross@suse.com>
> 
> Reviewed-by: Jason Andryuk <jandryuk@gmail.com>
> 
> With one minor comment.
> 
>> +    path = calloc(path_len + 1, 1);
>> +    if ( !path )
>> +    {
>> +        p9_error(ring, hdr->tag, ENOMEM);
>> +        goto out;
>> +    }
>> +    strcpy(path, fidp->path);
>> +
>> +    if ( n_names )
>> +    {
>> +        qids = calloc(n_names, sizeof(*qids));
>> +        if ( !qids )
>> +        {
>> +            p9_error(ring, hdr->tag, ENOMEM);
>> +            goto out;
>> +        }
>> +        for ( i = 0; i < n_names; i++ )
>> +        {
>> +            if (strcmp(path, "/"))
>> +                strcat(path, "/");
> 
> strcmp() can only return 0 on the first iteration, so it seems
> inefficient to have it inside this loop.  But the added complexity to
> avoid calling it doesn't seem worthwhile.

With storing the relative path in fidp->path this call can be dropped.


Juergen


From xen-devel-bounces@lists.xenproject.org Wed Jan 31 12:11:09 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 31 Jan 2024 12:11:09 +0000
Received: from list by lists.xenproject.org with outflank-mailman.673989.1048617 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rV9Qq-0006V6-GQ; Wed, 31 Jan 2024 12:11:08 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 673989.1048617; Wed, 31 Jan 2024 12:11:08 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rV9Qq-0006Uz-Dg; Wed, 31 Jan 2024 12:11:08 +0000
Received: by outflank-mailman (input) for mailman id 673989;
 Wed, 31 Jan 2024 12:11:07 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=HwTD=JJ=amd.com=ayan.kumar.halder@srs-se1.protection.inumbo.net>)
 id 1rV9Qo-0006Ur-Td
 for xen-devel@lists.xenproject.org; Wed, 31 Jan 2024 12:11:06 +0000
Received: from NAM12-MW2-obe.outbound.protection.outlook.com
 (mail-mw2nam12on20600.outbound.protection.outlook.com
 [2a01:111:f403:200a::600])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id cca31343-c031-11ee-98f5-efadbce2ee36;
 Wed, 31 Jan 2024 13:11:02 +0100 (CET)
Received: from PA7P264CA0466.FRAP264.PROD.OUTLOOK.COM (2603:10a6:102:398::13)
 by IA0PR12MB7749.namprd12.prod.outlook.com (2603:10b6:208:432::22)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7249.23; Wed, 31 Jan
 2024 12:10:58 +0000
Received: from SA2PEPF000015CC.namprd03.prod.outlook.com
 (2603:10a6:102:398:cafe::96) by PA7P264CA0466.outlook.office365.com
 (2603:10a6:102:398::13) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7249.23 via Frontend
 Transport; Wed, 31 Jan 2024 12:10:57 +0000
Received: from SATLEXMB03.amd.com (165.204.84.17) by
 SA2PEPF000015CC.mail.protection.outlook.com (10.167.241.202) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.7249.19 via Frontend Transport; Wed, 31 Jan 2024 12:10:56 +0000
Received: from SATLEXMB06.amd.com (10.181.40.147) by SATLEXMB03.amd.com
 (10.181.40.144) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.34; Wed, 31 Jan
 2024 06:10:55 -0600
Received: from SATLEXMB04.amd.com (10.181.40.145) by SATLEXMB06.amd.com
 (10.181.40.147) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.34; Wed, 31 Jan
 2024 06:10:55 -0600
Received: from xcbayankuma40.xilinx.com (10.180.168.240) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server id 15.1.2507.34 via
 Frontend Transport; Wed, 31 Jan 2024 06:10:53 -0600
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: cca31343-c031-11ee-98f5-efadbce2ee36
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=fI7tUB19kHaHENmh7TRH9P/sf+ZPQ6rUkg0JHNryAb/gJV2R7eGGitkCtySV+3ZF6XbeVzbMr9L/S1OxZkMDXfsa4WWbk+e719q4Cn66xSQxnf2Po4I+91L2sWX2ZZp/EYaJNteaJInohL8Vr9rTlIfq3H5cQyiS7eCWnoKixIGQ8Fkp1u6oDL5SE0xB09b0Pta3UXXovMrzApLxP6p+OSp80SybsTCgWksYS1P0IY7ARTrJ+Ddu9VwtY+8jYEoHE5hEGCfJzLTuLu60Zyg7awsdC+sxDuYHrdDpaPXurMaWp/6dzI3s7dvlLvAIYylDBIacPB02pOejhaRZGk4fbg==
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=h4IU52043n4hrCs2lfQJAorch0baE4ObCW9937YyEiI=;
 b=DugiQ1+wUDt2+ZyVvPiENDEJmML2Pmh7FgIy5ErxMzrkAF5tZ+m5MBy8DREWsX56qmdJFSdQDdjDJ6dlSTe+Ykf4MQ8ZqqrWyjoPNbuUjFHDqpo3X47gsUuJprwnsCygheRqR4mio5BZwrgQBH5OANTxEpLE/646b1qbZXuqljxoX9v1agJPnLuL+oX27pgOMR3B9Mga00BRpNi0wexaGWc3hqiIDBFAv7ZMWvNMcirTi2pmwj1ZjwYRq04q0jJgJ8wYdbxm5I0NB9FDe1dgbx4TT1vOaQp943KqopDl1G08MjhW1wFgQfOP1+1acKzo5rvcshS8ZO+6C6VZA8xyug==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=lists.xenproject.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)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=h4IU52043n4hrCs2lfQJAorch0baE4ObCW9937YyEiI=;
 b=ropRc4cXCk/M0nZ3XyhQ/PUqXU6xs7+FA2icr7ldV9nVMF8bgZuTwbJQxF4/KRAq6P6adRDe/giNkPR73rJa5zkhftaQSyU/IdAuF/dGVEUcX/Ld8pHSSqkNOvKU1rhZL9J0RVm/n5hge5Tl73nQb5VmCAdujfXuTdtbh+JOTjM=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=SATLEXMB03.amd.com; pr=C
From: Ayan Kumar Halder <ayan.kumar.halder@amd.com>
To: <xen-devel@lists.xenproject.org>
CC: <sstabellini@kernel.org>, <stefano.stabellini@amd.com>, <julien@xen.org>,
	<Volodymyr_Babchuk@epam.com>, <bertrand.marquis@arm.com>,
	<michal.orzel@amd.com>, <luca.fancellu@arm.com>, Ayan Kumar Halder
	<ayan.kumar.halder@amd.com>
Subject: [XEN v4 0/3] xen/arm: Add emulation of Debug Data Transfer Registers
Date: Wed, 31 Jan 2024 12:10:46 +0000
Message-ID: <20240131121049.225044-1-ayan.kumar.halder@amd.com>
X-Mailer: git-send-email 2.25.1
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: SA2PEPF000015CC:EE_|IA0PR12MB7749:EE_
X-MS-Office365-Filtering-Correlation-Id: 97cf3d9e-7f5f-406c-0461-08dc2255ae15
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam: BCL:0;
X-Microsoft-Antispam-Message-Info:
	Elb4cqEU/EmmkEylBPEQ6N0j/HjRpjolBybsTTgxZBjKnFJ72eO8BOl+FOdDHZxlmxaZ7hMMZPKdn86dJfeY40JyL2xLvyxuvEoYFbuodFHDTvT72nHrVmI3/Rr7FkJWL4tPzk7DQIUJWHsOUc7MvREVMu+47Km44whr413wWFln287UX7ofoBfvzg37g9NtTrNa/U2tvXtMB4Eyq6BTBsZmGjCqvPR6ItkOXdbfzDhq4ck7kVx7wy3bxxkrr52dDLA2lRwBFGo05SIoVjWLI2TDj9USGLB6ytxzXxMYhwpg270RwFOAHu3ilC5d00bWQUScN/1wXubWePY+aRUe6m6tEeD//TblYPkcR6wckGRoHHd9/QGXeMGi5lvZGqVfhioAB/B5Xc9pGcgKcpjORVWYT5tKYp920iIK1xtIdOQYADocIqObsetxllGUKTRjwM+TVmIeQacvI34xLmSSiYUlbopQ4OoK/Dji5yhCAJHCNyUDdRr2P18g2ko2I8pYN7zsBlpW8nAqSIrP0JA6MXfefgn5KOJkAlfXy4xIm4jXea+Bi2UpRB2OlG6haDpjINtYLgNJV29vKJRlMUSvmxS2YnGw5Tj1nb6EV4gsmMYWpBdvlbyqm1SIS/vI+2WdZ8t3n9ORewMS6ZDRWbg8KOwUNqSvdDX3uIZslT5JVEtmozNm5PV3v+0y5xKP4hYyJ40Pq+jbdDizFyIky1o/pBh1zFuvfqzNNhuo8VFHxO+OEXPIZJ3G+/qmBf/b0JDKSvjBx49JBdH7Vn0VfSN6Y+nbBpjR+2qw237WBGyucT8=
X-Forefront-Antispam-Report:
	CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB03.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230031)(4636009)(346002)(136003)(39860400002)(396003)(376002)(230922051799003)(186009)(64100799003)(82310400011)(451199024)(1800799012)(46966006)(40470700004)(36840700001)(336012)(426003)(26005)(1076003)(2616005)(40480700001)(40460700003)(41300700001)(54906003)(36860700001)(966005)(316002)(6916009)(478600001)(36756003)(6666004)(83380400001)(82740400003)(356005)(47076005)(81166007)(5660300002)(8936002)(103116003)(2906002)(70586007)(86362001)(70206006)(8676002)(4326008)(36900700001);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 31 Jan 2024 12:10:56.7476
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 97cf3d9e-7f5f-406c-0461-08dc2255ae15
X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB03.amd.com]
X-MS-Exchange-CrossTenant-AuthSource:
	SA2PEPF000015CC.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA0PR12MB7749

Hi,

Refer https://lore.kernel.org/all/alpine.DEB.2.22.394.2312071341540.1265976@ubuntu-linux-20-04-desktop/T/
for the previous discussion on this issue.

Also, the linux earlycon hvc driver has been fixed.
See https://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty.git/commit/?h=tty-next&id=0ec058ece2f933aed66b76bd5cb9b5e6764853c3

Changes from v1:-
1. Split the change across 3 patches as per the design consensus.

v2 :-
1. Reordered the patches.

v3 :- 
1. Change mentioned in individual patches.

Ayan Kumar Halder (2):
  xen/arm: Introduce CONFIG_PARTIAL_EMULATION and "partial-emulation"
    cmd option
  xen/arm: arm32: Add emulation of Debug Data Transfer Registers

Michal Orzel (1):
  xen/arm: arm64: Add emulation of Debug Data Transfer Registers

 docs/misc/xen-command-line.pandoc    | 11 +++++++++
 xen/arch/arm/Kconfig                 |  9 +++++++
 xen/arch/arm/arm64/vsysreg.c         | 28 ++++++++++++++++++----
 xen/arch/arm/include/asm/arm64/hsr.h |  3 +++
 xen/arch/arm/include/asm/cpregs.h    |  2 ++
 xen/arch/arm/include/asm/traps.h     |  6 +++++
 xen/arch/arm/traps.c                 |  9 +++++++
 xen/arch/arm/vcpreg.c                | 35 ++++++++++++++++++++--------
 8 files changed, 89 insertions(+), 14 deletions(-)

-- 
2.25.1



From xen-devel-bounces@lists.xenproject.org Wed Jan 31 12:11:18 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 31 Jan 2024 12:11:18 +0000
Received: from list by lists.xenproject.org with outflank-mailman.673990.1048627 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rV9Qz-0006qU-PU; Wed, 31 Jan 2024 12:11:17 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 673990.1048627; Wed, 31 Jan 2024 12:11:17 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rV9Qz-0006qJ-M7; Wed, 31 Jan 2024 12:11:17 +0000
Received: by outflank-mailman (input) for mailman id 673990;
 Wed, 31 Jan 2024 12:11:16 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=HwTD=JJ=amd.com=ayan.kumar.halder@srs-se1.protection.inumbo.net>)
 id 1rV9Qy-0006Ur-PA
 for xen-devel@lists.xenproject.org; Wed, 31 Jan 2024 12:11:16 +0000
Received: from NAM10-MW2-obe.outbound.protection.outlook.com
 (mail-mw2nam10on20600.outbound.protection.outlook.com
 [2a01:111:f403:2412::600])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id d3f7b16e-c031-11ee-98f5-efadbce2ee36;
 Wed, 31 Jan 2024 13:11:15 +0100 (CET)
Received: from PA7P264CA0289.FRAP264.PROD.OUTLOOK.COM (2603:10a6:102:370::6)
 by PH7PR12MB7793.namprd12.prod.outlook.com (2603:10b6:510:270::19) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7228.34; Wed, 31 Jan
 2024 12:11:10 +0000
Received: from SA2PEPF000015C8.namprd03.prod.outlook.com
 (2603:10a6:102:370:cafe::54) by PA7P264CA0289.outlook.office365.com
 (2603:10a6:102:370::6) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7228.32 via Frontend
 Transport; Wed, 31 Jan 2024 12:11:09 +0000
Received: from SATLEXMB03.amd.com (165.204.84.17) by
 SA2PEPF000015C8.mail.protection.outlook.com (10.167.241.198) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.7249.19 via Frontend Transport; Wed, 31 Jan 2024 12:11:08 +0000
Received: from SATLEXMB04.amd.com (10.181.40.145) by SATLEXMB03.amd.com
 (10.181.40.144) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.34; Wed, 31 Jan
 2024 06:11:04 -0600
Received: from xcbayankuma40.xilinx.com (10.180.168.240) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server id 15.1.2507.34 via
 Frontend Transport; Wed, 31 Jan 2024 06:11:03 -0600
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: d3f7b16e-c031-11ee-98f5-efadbce2ee36
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=VIF5jzEZSC9rqRYnowSpYkC33zrExhFS7J6fJxQ0hPz3goYkjZpllFcMVGJro2Sr/yWIiksURzmJvXQCarUG0qwuWQ/seIz3v7rKw+V7nfVeJ2owygfbqIvtlVW2E4PnjYs0m8HAVnuq62Wnny6httsGWy5SbppgGRix0OEl4wRDxWXRFF7DJ4dj1kzXnyAQSWB0BVNnhl4I2f4eDDZv0lqq/f5dvWlZlSIeHt6IVLNPcKwTBb6R2qrnOd/TEFem3cmK/gPU4SLFqm9IOxv+u19ZfLEmVGep0DrsLIsh5BDTpa9zEpR07yOauY15T8HUoTAHs7bnhG+6Oz4Q/PPQrw==
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=fVnAE3Sk2Vh8GnJN0eIurwnYEGeWl1AfkF0U3da74B4=;
 b=BgWB6w8CVhsH+zNVZG+ht64a6M5i17Qn9AXqnAr9agSZW4KQVS86I8lZnO9NlGn6BLF9K8axBWJygIdJbIcjn8Rs0wf0Ez+uVlUrvIJ5HKOHQru+nDX1ymQXO+4NTJIvY2Cp202mtpWA4dqsxM1wt4vAoIaYC00OX0JO1oMGl+No5YRTOhHwyGGEMumBRHounplGsfytO5kzIfKwbL6ks5EhOeXLYfWw442kXvZOQA8TwujrK1xPZKftKh7AHXRPdlogU4wFSh55HOKuteXU3QJUnogu4G64c5KkkzWBnFGeuFyd4y6FHnCN4TtiYqzRanl1a3y99TN8O5mt6PcLJg==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=lists.xenproject.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)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=fVnAE3Sk2Vh8GnJN0eIurwnYEGeWl1AfkF0U3da74B4=;
 b=Gvc/bx5L2mj3tmhhh8sKBJF/IiSTzDcFcsqvUT10lZuYqrRlYtOx9nq6j/pGfDWfuOhFJ06C5afS+GKXnX8UojdMGZizzs98tx2Pax4VhsmXiXv1h9cIhPK+kdjGfWhVs8Ab+ptz7iuYc7rQKgtwKOxiajGO+PSKTIx0wr4JHaI=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=SATLEXMB03.amd.com; pr=C
From: Ayan Kumar Halder <ayan.kumar.halder@amd.com>
To: <xen-devel@lists.xenproject.org>
CC: <sstabellini@kernel.org>, <stefano.stabellini@amd.com>, <julien@xen.org>,
	<Volodymyr_Babchuk@epam.com>, <bertrand.marquis@arm.com>,
	<michal.orzel@amd.com>, <luca.fancellu@arm.com>, Ayan Kumar Halder
	<ayan.kumar.halder@amd.com>
Subject: [XEN v4 1/3] xen/arm: Introduce CONFIG_PARTIAL_EMULATION and "partial-emulation" cmd option
Date: Wed, 31 Jan 2024 12:10:47 +0000
Message-ID: <20240131121049.225044-2-ayan.kumar.halder@amd.com>
X-Mailer: git-send-email 2.25.1
In-Reply-To: <20240131121049.225044-1-ayan.kumar.halder@amd.com>
References: <20240131121049.225044-1-ayan.kumar.halder@amd.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: SA2PEPF000015C8:EE_|PH7PR12MB7793:EE_
X-MS-Office365-Filtering-Correlation-Id: e7fe2a37-613e-424b-7572-08dc2255b541
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam: BCL:0;
X-Microsoft-Antispam-Message-Info:
	HwoELydrYRFq+x9h7FaTjtBWWIUO4eRUuR4fOvupvxVVh4HjZR+xcWCLnIUomiVf22cXxNSTm9MUYuUmfnHucTrzL3ZMwHyKs0gqDXJRgKSO2bf7qYp/TTyhOYp5dGOYxbXgEof4VvSSm0RyXzPYrxs4iB/Jt2Fs05mjI6s4GukR4TZlMHIN9vo0wmPp2gKapFHt+/m3NKOTaorG1bY6bKIKdIKyR0HHjUvMv/ee2gjnqgqAJ7TZ7DmDPyo0DMku8stv7ZAxu145uNZSMNd59J3r0SrQ3gbkXcBLPc3PbFsdy4bV3JZiFihIdJgC+srGC3L8m0by1W3JBzXk7fs0k2AYI9zosyo7gEBYK738uNKodwKIgmNP9e7atNVqOsRpqckrU0DiHO3EBfr2dYT0NcYNUrV2+j/Z8WTTDtJeYW/CyXODkf98yFNN6sPiLLsZ4iEKLnYDN56rS9Vm43qJdEtlzWUwcL1X+lKtavZXuNczqGiz0WVuiTk/Ci6Dw8k07Zmq4oFzWmnA00TYw3bregodg4RPeqXYiv+p4ZEly1kbsSwmlH1Q8SJgV1/C6cHxfZeGI+F3ElYtzZOeN58YP0QExbbNYi2jgugOKLWWFLyeqTCLrNRZAwOMV553ZcCDMU37gaOUWsWekvWrZZQlAYEGNNKPYs7pP75ovE/ttAdrDO0RRPX36X1fkypICj9YDweZ3gR5ATY1JQyq+2fUz2mRYWnDpXd1SCBIFQZezL1118gtV/RLclcpkAFmSFw6mJOWlYiouBj1Hd6xQNe1YyJhNiejd78s8XB1Ve7ia6tYFkNeOKD15WruTFsTSG9J
X-Forefront-Antispam-Report:
	CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB03.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230031)(4636009)(396003)(136003)(376002)(346002)(39860400002)(230273577357003)(230173577357003)(230922051799003)(451199024)(64100799003)(1800799012)(82310400011)(186009)(40470700004)(46966006)(36840700001)(316002)(6916009)(356005)(2906002)(40460700003)(40480700001)(54906003)(36860700001)(8936002)(36756003)(8676002)(4326008)(47076005)(86362001)(5660300002)(70206006)(81166007)(103116003)(70586007)(82740400003)(83380400001)(26005)(426003)(336012)(1076003)(2616005)(6666004)(41300700001)(478600001)(36900700001);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 31 Jan 2024 12:11:08.7829
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: e7fe2a37-613e-424b-7572-08dc2255b541
X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB03.amd.com]
X-MS-Exchange-CrossTenant-AuthSource:
	SA2PEPF000015C8.namprd03.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR12MB7793

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.

Signed-off-by: Ayan Kumar Halder <ayan.kumar.halder@amd.com>
---
Changes from v1 :-
1. New patch introduced in v2.

v2 :-
1. Reordered the patches so that the config and command line option is
introduced in the first patch.

v3 :-
1. Defined a macro 'partial_emulation' to reduce if-defs.
2. Fixed style issues.

 docs/misc/xen-command-line.pandoc | 11 +++++++++++
 xen/arch/arm/Kconfig              |  9 +++++++++
 xen/arch/arm/include/asm/traps.h  |  6 ++++++
 xen/arch/arm/traps.c              |  9 +++++++++
 4 files changed, 35 insertions(+)

diff --git a/docs/misc/xen-command-line.pandoc b/docs/misc/xen-command-line.pandoc
index 8e65f8bd18..22c0d7c9f6 100644
--- a/docs/misc/xen-command-line.pandoc
+++ b/docs/misc/xen-command-line.pandoc
@@ -1949,6 +1949,17 @@ This option is ignored in **pv-shim** mode.
 
 > Default: `on`
 
+### partial-emulation (arm)
+> `= <boolean>`
+
+> Default: `false`
+
+Flag to enable or disable partial emulation of system/coprocessor registers.
+Only effective if CONFIG_PARTIAL_EMULATION is enabled.
+
+**WARNING: Enabling this option might result in unwanted/non-spec compliant
+behavior.**
+
 ### pci
     = List of [ serr=<bool>, perr=<bool> ]
 
diff --git a/xen/arch/arm/Kconfig b/xen/arch/arm/Kconfig
index 50e9bfae1a..8d8f668e7f 100644
--- a/xen/arch/arm/Kconfig
+++ b/xen/arch/arm/Kconfig
@@ -225,6 +225,15 @@ config STATIC_EVTCHN
 	  This option enables establishing static event channel communication
 	  between domains on a dom0less system (domU-domU as well as domU-dom0).
 
+config PARTIAL_EMULATION
+	bool "Enable partial emulation of system/coprocessor registers"
+	default y
+	help
+	  This option enables partial emulation of registers to prevent guests
+	  crashing when accessing registers which are not optional but have not been
+	  emulated to its complete functionality. Enabling this might result in
+	  unwanted/non-spec compliant behavior.
+
 endmenu
 
 menu "ARM errata workaround via the alternative framework"
diff --git a/xen/arch/arm/include/asm/traps.h b/xen/arch/arm/include/asm/traps.h
index 883dae368e..9a60dbf70e 100644
--- a/xen/arch/arm/include/asm/traps.h
+++ b/xen/arch/arm/include/asm/traps.h
@@ -10,6 +10,12 @@
 # include <asm/arm64/traps.h>
 #endif
 
+#ifdef CONFIG_PARTIAL_EMULATION
+extern bool partial_emulation;
+#else
+#define partial_emulation false
+#endif
+
 /*
  * GUEST_BUG_ON is intended for checking that the guest state has not been
  * corrupted in hardware and/or that the hardware behaves as we
diff --git a/xen/arch/arm/traps.c b/xen/arch/arm/traps.c
index 9c10e8f78c..d1c7a6c516 100644
--- a/xen/arch/arm/traps.c
+++ b/xen/arch/arm/traps.c
@@ -42,6 +42,15 @@
 #include <asm/vgic.h>
 #include <asm/vtimer.h>
 
+/*
+ * partial_emulation: If true, partial emulation for system/coprocessor
+ * registers will be enabled.
+ */
+#ifdef CONFIG_PARTIAL_EMULATION
+bool __ro_after_init partial_emulation = false;
+boolean_param("partial-emulation", partial_emulation);
+#endif
+
 /* The base of the stack must always be double-word aligned, which means
  * that both the kernel half of struct cpu_user_regs (which is pushed in
  * entry.S) and struct cpu_info (which lives at the bottom of a Xen
-- 
2.25.1



From xen-devel-bounces@lists.xenproject.org Wed Jan 31 12:14:31 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 31 Jan 2024 12:14:31 +0000
Received: from list by lists.xenproject.org with outflank-mailman.673998.1048636 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rV9U2-00083M-AZ; Wed, 31 Jan 2024 12:14:26 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 673998.1048636; Wed, 31 Jan 2024 12:14:26 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rV9U2-00083F-7u; Wed, 31 Jan 2024 12:14:26 +0000
Received: by outflank-mailman (input) for mailman id 673998;
 Wed, 31 Jan 2024 12:14:24 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=HwTD=JJ=amd.com=ayan.kumar.halder@srs-se1.protection.inumbo.net>)
 id 1rV9U0-000834-7y
 for xen-devel@lists.xenproject.org; Wed, 31 Jan 2024 12:14:24 +0000
Received: from NAM12-MW2-obe.outbound.protection.outlook.com
 (mail-mw2nam12on20600.outbound.protection.outlook.com
 [2a01:111:f403:200a::600])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 441759fa-c032-11ee-8a43-1f161083a0e0;
 Wed, 31 Jan 2024 13:14:23 +0100 (CET)
Received: from BYAPR07CA0028.namprd07.prod.outlook.com (2603:10b6:a02:bc::41)
 by CH0PR12MB8551.namprd12.prod.outlook.com (2603:10b6:610:186::21)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7228.34; Wed, 31 Jan
 2024 12:14:19 +0000
Received: from SJ5PEPF000001D6.namprd05.prod.outlook.com
 (2603:10b6:a02:bc:cafe::23) by BYAPR07CA0028.outlook.office365.com
 (2603:10b6:a02:bc::41) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7249.24 via Frontend
 Transport; Wed, 31 Jan 2024 12:14:19 +0000
Received: from SATLEXMB03.amd.com (165.204.84.17) by
 SJ5PEPF000001D6.mail.protection.outlook.com (10.167.242.58) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.7249.19 via Frontend Transport; Wed, 31 Jan 2024 12:14:18 +0000
Received: from SATLEXMB08.amd.com (10.181.40.132) by SATLEXMB03.amd.com
 (10.181.40.144) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.34; Wed, 31 Jan
 2024 06:14:17 -0600
Received: from SATLEXMB04.amd.com (10.181.40.145) by SATLEXMB08.amd.com
 (10.181.40.132) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.32; Wed, 31 Jan
 2024 04:14:17 -0800
Received: from xcbayankuma40.xilinx.com (10.180.168.240) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server id 15.1.2507.34 via
 Frontend Transport; Wed, 31 Jan 2024 06:14:16 -0600
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 441759fa-c032-11ee-8a43-1f161083a0e0
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=khbnwKU42Meo9RYKtHbiYZZEYD0rmS2YYxCEqJ3LRp0fdNJsxTKip7WJ6oHreCxtXanwk8GSWp2GTIQDQHV3PECdACXJ936KDQNfSGZ2o6pp0V9CPGxyjGrWMTlBhLXhHVspSPjUShc6tkNTUdNgHMyQT2kzmPhXB7Ho9CrR3F3RfUFo5WqiP5P3TLmz48XqjhTJrco8wicYORYLfg8cXRBoylvQ536AmJCfUCcbsNi2WLqWatV/fT1QJZHa7RVUWauIUWrTOtuP+HI89h2ldzSrCjiptZqzBmEnJTCDaG+grJLzheT9ql0yVL7USldfHIEaR7JCa63azuVl0fEQ0g==
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=fKVsyO8xIRiExnyh4ryfpCBXOBzr72XwASsT+kuql3k=;
 b=YZGmoEHBavFux0pKAY0A1lDBVyNzAyACYP476AN6rRvz+NEh4UTxwMPpA9l3MERpap7RrOVGTyToWe7GiqxzEnmIzCo6CAgg/xoyAkMPVcbAFjpiPGgR8efSshSNcFdZ+GeeygBTjNRO+Liung4/DkbW3Kj4QxP9IkHv07FS4z7UYO/YCgmkzZn30o25/FKtISZInAYlLI1b0VHmKItrZq+Xun1FuCI8Zusk87/fT6OIZEt6XImxC62TcUI5ERZUt9gz40At5rmFIWyTAeXhopFMKn/p9vYN2iXDcbOxxzo7sBL1ghkKDa0GG9qkIIwOOs3O2OJB81l+IByvJ0xCMg==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=lists.xenproject.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)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=fKVsyO8xIRiExnyh4ryfpCBXOBzr72XwASsT+kuql3k=;
 b=PHO6cn73u4XXCKOllRjdIFMXjbBoA+G2/O7KNpfGmERLR7o5AFJjUgEQIvRvg6+jEBmtVJhVW270G9ymP/Vvs3sef7icpegql/GgbYBpnez7PHLhG+6AW9Yk1xgw0/EJ814Bvcg0Pd66SQUa48MkBpcl4d9HHhrOGNNdXQXrrvU=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=SATLEXMB03.amd.com; pr=C
From: Ayan Kumar Halder <ayan.kumar.halder@amd.com>
To: <xen-devel@lists.xenproject.org>
CC: <sstabellini@kernel.org>, <stefano.stabellini@amd.com>, <julien@xen.org>,
	<Volodymyr_Babchuk@epam.com>, <bertrand.marquis@arm.com>,
	<michal.orzel@amd.com>, <luca.fancellu@arm.com>, Ayan Kumar Halder
	<ayan.kumar.halder@amd.com>
Subject: [XEN v4 2/3] xen/arm: arm64: Add emulation of Debug Data Transfer Registers
Date: Wed, 31 Jan 2024 12:10:48 +0000
Message-ID: <20240131121049.225044-3-ayan.kumar.halder@amd.com>
X-Mailer: git-send-email 2.25.1
In-Reply-To: <20240131121049.225044-1-ayan.kumar.halder@amd.com>
References: <20240131121049.225044-1-ayan.kumar.halder@amd.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: SJ5PEPF000001D6:EE_|CH0PR12MB8551:EE_
X-MS-Office365-Filtering-Correlation-Id: ad937851-3f65-4330-8dbe-08dc22562672
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam: BCL:0;
X-Microsoft-Antispam-Message-Info:
	i6EgjIQDpl29VgWpO5SNz8tRbuXyDKXaOcheGEHwR+Y2GHKYABO5SXyfUTBqBrCoeX6PrwYk9YlwAi4umnjmgDBpRnNQkQah/lsmeqJUSsJx3cG4lGMH8nAlFIqbT6M5yCjwCJq05LPC9z6NQB1L1hPwsIEx5Av5riL6PWjuw+n9SzElqtqAvNLVbf8OGOW7XZ8oXuUeSg17aENVwPyI0ztdFtG7n5kSs+dUzTyRgqEKbmTMlfBeIrdBjG5i1Sa+xQ/EIqxdLhJDvpCKKBlP4zoQPjBUV/EBQlI1zgEhWV15AqTVDSzRlzX3KgdmSrwDWn31zUHIFmVAgvmPXP52e3CXMFUrZBAxytClAZpYzZl/1GkXOJaTPeGvmSmvBl/jJHG7G3ISXFfI/MZsAyZCjQDtaGX8SYEKkqlwoQSEFSgwscBmdpRCSJ/cSI/Ho+FqcznQE94VRldJwHn5JHkXGvVQGIsH8QOjTaq5RKmXUW8jkf0imKWEurVTeVfAG46ANqTCY6wJa88nxJA37R/BK6pBlV/8x6IOXrHOW44PHnlWtXhJBG4wtVRablwMN6k5xKuTEVslGY6mGOIZ6NI19jywgeJtReqosA7pHsJfTAF/dQ0lkSPMxY3UdDJZESZlpcQYZUy9DjescWUjezZave7IsAv2NKzp/Jddoxy/hfh2oh8BpyTqnmHhcPdM0RPaNL7k3/uXTVvo+NwZx4Kgy7aaVdhcjnNDdTD2JpNaC7+vbU5/RmkdyOte2vT/zxHWchHWYdu5s+scsAMuwjTEJA==
X-Forefront-Antispam-Report:
	CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB03.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230031)(4636009)(39860400002)(396003)(346002)(376002)(136003)(230922051799003)(64100799003)(186009)(82310400011)(1800799012)(451199024)(46966006)(36840700001)(40470700004)(6916009)(316002)(70206006)(54906003)(478600001)(70586007)(6666004)(8936002)(8676002)(4326008)(1076003)(5660300002)(26005)(426003)(2616005)(336012)(2906002)(83380400001)(47076005)(81166007)(40460700003)(82740400003)(86362001)(40480700001)(41300700001)(36756003)(103116003)(36860700001)(356005)(36900700001);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 31 Jan 2024 12:14:18.5934
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: ad937851-3f65-4330-8dbe-08dc22562672
X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB03.amd.com]
X-MS-Exchange-CrossTenant-AuthSource:
	SJ5PEPF000001D6.namprd05.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH0PR12MB8551

From: Michal Orzel <michal.orzel@amd.com>

Currently, if user enables HVC_DCC config option in Linux, it invokes access
to debug data transfer registers (i.e. DBGDTRTX_EL0 on arm64, DBGDTRTXINT on
arm32). As these registers are not emulated, Xen injects an undefined
exception to the guest and Linux crashes.

To prevent this crash, introduce a partial emulation of DBGDTR[TR]X_EL0
(these registers share the same encoding) as RAZ/WI and MDCCSR_EL0 as TXfull.

Refer ARM DDI 0487J.a ID042523, D19.3.8, DBGDTRTX_EL0
"If TXfull is set to 1, set DTRRX and DTRTX to UNKNOWN".

Thus, any OS is expected to read MDCCSR_EL0 and check for TXfull before
using DBGDTRTX_EL0. Linux does it via hvc_dcc_init() ---> hvc_dcc_check(),
and returns -ENODEV in case TXfull bit is still set after writing a test
character. This way we prevent the guest from making use of HVC DCC as a
console.

Signed-off-by: Michal Orzel <michal.orzel@amd.com>
Signed-off-by: Ayan Kumar Halder <ayan.kumar.halder@amd.com>
---
Changes from

v1 :- 1. DBGDTR_EL0 does not emulate RXfull. This is to avoid giving the OS any
indication that the RX buffer is full and is waiting to be read.

2. In Arm32, DBGOSLSR is emulated. Also DBGDTRTXINT is emulated at EL0 only.

3. Fixed the commit message and inline code comments.

v2 :- 1. Split the patch into two (separate patches for arm64 and arm32).
2. Removed the "fail" label.
3. Fixed the commit message.

v3 :- 1. "HSR_SYSREG_MDCCSR_EL0" emulation differs based on whether 
partial_emulation_enabled is true or not.

2. If partial_emulation_enabled is false, then access to HSR_SYSREG_DBGDTR_EL0,
HSR_SYSREG_DBGDTRTX_EL0 would lead to undefined exception. 

 xen/arch/arm/arm64/vsysreg.c         | 28 ++++++++++++++++++++++++----
 xen/arch/arm/include/asm/arm64/hsr.h |  3 +++
 2 files changed, 27 insertions(+), 4 deletions(-)

diff --git a/xen/arch/arm/arm64/vsysreg.c b/xen/arch/arm/arm64/vsysreg.c
index b5d54c569b..94f0a6c384 100644
--- a/xen/arch/arm/arm64/vsysreg.c
+++ b/xen/arch/arm/arm64/vsysreg.c
@@ -159,9 +159,6 @@ void do_sysreg(struct cpu_user_regs *regs,
      *
      * Unhandled:
      *    MDCCINT_EL1
-     *    DBGDTR_EL0
-     *    DBGDTRRX_EL0
-     *    DBGDTRTX_EL0
      *    OSDTRRX_EL1
      *    OSDTRTX_EL1
      *    OSECCR_EL1
@@ -173,10 +170,32 @@ void do_sysreg(struct cpu_user_regs *regs,
         return handle_raz_wi(regs, regidx, hsr.sysreg.read, hsr, 1);
     case HSR_SYSREG_MDCCSR_EL0:
         /*
+         * Xen doesn't expose a real (or emulated) Debug Communications Channel
+         * (DCC) to a domain. Yet the Arm ARM implies this is not an optional
+         * feature. So some domains may start to probe it. For instance, the
+         * HVC_DCC driver in Linux (since f377775dc083 and at least up to v6.7),
+         * will try to write some characters and check if the transmit buffer
+         * has emptied.
+         *
+         * By setting TX status bit (only if partial emulation is enabled) to
+         * indicate the transmit buffer is full, we would hint the OS that the
+         * DCC is probably not working.
+         *
+         * Bit 29: TX full
+         *
          * Accessible at EL0 only if MDSCR_EL1.TDCC is set to 0. We emulate that
          * register as RAZ/WI above. So RO at both EL0 and EL1.
          */
-        return handle_ro_raz(regs, regidx, hsr.sysreg.read, hsr, 0);
+        return handle_ro_read_val(regs, regidx, hsr.sysreg.read, hsr, 0,
+                                  partial_emulation ? (1U << 29) : 0);
+
+    case HSR_SYSREG_DBGDTR_EL0:
+    /* DBGDTR[TR]X_EL0 share the same encoding */
+    case HSR_SYSREG_DBGDTRTX_EL0:
+        if ( !partial_emulation )
+            goto fail;
+        return handle_raz_wi(regs, regidx, hsr.sysreg.read, hsr, 0);
+
     HSR_SYSREG_DBG_CASES(DBGBVR):
     HSR_SYSREG_DBG_CASES(DBGBCR):
     HSR_SYSREG_DBG_CASES(DBGWVR):
@@ -394,6 +413,7 @@ void do_sysreg(struct cpu_user_regs *regs,
      * And all other unknown registers.
      */
     default:
+ fail:
         {
             const struct hsr_sysreg sysreg = hsr.sysreg;
 
diff --git a/xen/arch/arm/include/asm/arm64/hsr.h b/xen/arch/arm/include/asm/arm64/hsr.h
index e691d41c17..1495ccddea 100644
--- a/xen/arch/arm/include/asm/arm64/hsr.h
+++ b/xen/arch/arm/include/asm/arm64/hsr.h
@@ -47,6 +47,9 @@
 #define HSR_SYSREG_OSDLR_EL1      HSR_SYSREG(2,0,c1,c3,4)
 #define HSR_SYSREG_DBGPRCR_EL1    HSR_SYSREG(2,0,c1,c4,4)
 #define HSR_SYSREG_MDCCSR_EL0     HSR_SYSREG(2,3,c0,c1,0)
+#define HSR_SYSREG_DBGDTR_EL0     HSR_SYSREG(2,3,c0,c4,0)
+#define HSR_SYSREG_DBGDTRTX_EL0   HSR_SYSREG(2,3,c0,c5,0)
+#define HSR_SYSREG_DBGDTRRX_EL0   HSR_SYSREG(2,3,c0,c5,0)
 
 #define HSR_SYSREG_DBGBVRn_EL1(n) HSR_SYSREG(2,0,c0,c##n,4)
 #define HSR_SYSREG_DBGBCRn_EL1(n) HSR_SYSREG(2,0,c0,c##n,5)
-- 
2.25.1



From xen-devel-bounces@lists.xenproject.org Wed Jan 31 12:14:31 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 31 Jan 2024 12:14:31 +0000
Received: from list by lists.xenproject.org with outflank-mailman.673999.1048647 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rV9U6-0008JF-II; Wed, 31 Jan 2024 12:14:30 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 673999.1048647; Wed, 31 Jan 2024 12:14:30 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rV9U6-0008J8-FT; Wed, 31 Jan 2024 12:14:30 +0000
Received: by outflank-mailman (input) for mailman id 673999;
 Wed, 31 Jan 2024 12:14:29 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=HwTD=JJ=amd.com=ayan.kumar.halder@srs-se1.protection.inumbo.net>)
 id 1rV9U5-000834-F8
 for xen-devel@lists.xenproject.org; Wed, 31 Jan 2024 12:14:29 +0000
Received: from NAM10-BN7-obe.outbound.protection.outlook.com
 (mail-bn7nam10on20600.outbound.protection.outlook.com
 [2a01:111:f403:2009::600])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 482d427c-c032-11ee-8a43-1f161083a0e0;
 Wed, 31 Jan 2024 13:14:28 +0100 (CET)
Received: from PA7P264CA0371.FRAP264.PROD.OUTLOOK.COM (2603:10a6:102:37c::12)
 by MN2PR12MB4080.namprd12.prod.outlook.com (2603:10b6:208:1d9::16)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7249.22; Wed, 31 Jan
 2024 12:14:25 +0000
Received: from SN1PEPF000252A4.namprd05.prod.outlook.com
 (2603:10a6:102:37c:cafe::57) by PA7P264CA0371.outlook.office365.com
 (2603:10a6:102:37c::12) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7228.34 via Frontend
 Transport; Wed, 31 Jan 2024 12:14:24 +0000
Received: from SATLEXMB04.amd.com (165.204.84.17) by
 SN1PEPF000252A4.mail.protection.outlook.com (10.167.242.11) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.7249.19 via Frontend Transport; Wed, 31 Jan 2024 12:14:23 +0000
Received: from SATLEXMB06.amd.com (10.181.40.147) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.34; Wed, 31 Jan
 2024 06:14:23 -0600
Received: from SATLEXMB04.amd.com (10.181.40.145) by SATLEXMB06.amd.com
 (10.181.40.147) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.34; Wed, 31 Jan
 2024 06:14:22 -0600
Received: from xcbayankuma40.xilinx.com (10.180.168.240) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server id 15.1.2507.34 via
 Frontend Transport; Wed, 31 Jan 2024 06:14:21 -0600
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 482d427c-c032-11ee-8a43-1f161083a0e0
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=i4Vu+XK72uXA4D/ubeboL8vudYH23k0zoTjwNMAwhLBm+elh2hVjfrCYAbAJ/RhWF2aaCd2HtLTcILE90q+rV2US7WGdnNZyvMFq/wG66lDCNKGXhTeinLzELlvod/bGIP96ubCwnUjBtps8WUiXgGEpLqezvIRoxTxqfwBWVBiZBIhB4xej9etqqheTJLaqv/+89zjgd9GuP93cTnvVZ0jIFyWd4Z6xz0AVfvzlg0CWeZ13XMEzBPuV3yPf7VSSuwfCsgUrQjv2izDZg1on1J+y00TxDCp24tj2bBQ51wlu/41xXDndDLqOZvMo6ZOmmX9zKDCyEZK8FKuILrk9Dw==
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=bWN5n85Dx3hu7zn/5LPwLV3qgP3PSpBmLZ4KywQ45kA=;
 b=KgWpVDxJMEO2YQa3VUqUaiRmim2WU6MYJCl4/vtVnBoB2qyECPo7u0SYoVxq9CfWW5PPM4IS3IjshJ5YVsrU/vkVWO2bOlOAktxCTRkHBS6iXF+AkvWRkLu3VGqc1FwS+JgCHEWuu6ezlr35iqk0evyvalx2T3S39QaIhxNlt0VShnUmzxKm5SEH50FNpe6u6vQdQnhj4ci/nU6wQ9PatSbEj5vIrJrP9MsY7tgbEkSGS/inJXaS4v+1qKRNfP9xYJiHbJzQdyztd1R9lQAnbopNnvkYgJD+pmiEYPtboGJfEHkiAJ+aUEouZhv4AZrPJ3ctr8yL1T0VKwga6u778g==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=lists.xenproject.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)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=bWN5n85Dx3hu7zn/5LPwLV3qgP3PSpBmLZ4KywQ45kA=;
 b=dVwUyM3aWq443cgKnZPjmkLVJF9zp/2oet7hnvgJMp6SqNOFscL3+ey2E1gDj5QHTGlgQLJCyV80+QFQo5blr5xZs5zULg4AqZKSu7I+YpWy2d/Wbj41ilsESMO+VK44nC2hPm/3bfJrrUbVDdpa8U9TfJoilU8+tFz/0d3jGH8=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C
From: Ayan Kumar Halder <ayan.kumar.halder@amd.com>
To: <xen-devel@lists.xenproject.org>
CC: <sstabellini@kernel.org>, <stefano.stabellini@amd.com>, <julien@xen.org>,
	<Volodymyr_Babchuk@epam.com>, <bertrand.marquis@arm.com>,
	<michal.orzel@amd.com>, <luca.fancellu@arm.com>, Ayan Kumar Halder
	<ayan.kumar.halder@amd.com>
Subject: [XEN v4 3/3] xen/arm: arm32: Add emulation of Debug Data Transfer Registers
Date: Wed, 31 Jan 2024 12:10:49 +0000
Message-ID: <20240131121049.225044-4-ayan.kumar.halder@amd.com>
X-Mailer: git-send-email 2.25.1
In-Reply-To: <20240131121049.225044-1-ayan.kumar.halder@amd.com>
References: <20240131121049.225044-1-ayan.kumar.halder@amd.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: SN1PEPF000252A4:EE_|MN2PR12MB4080:EE_
X-MS-Office365-Filtering-Correlation-Id: 37afa499-6c6f-43a9-6e3e-08dc2256295d
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam: BCL:0;
X-Microsoft-Antispam-Message-Info:
	GgKKE7MgDDokxtKY1pIa1Xe66vunda2GsUik9y+U1UwTusTRwiesDyNwA0dmpmETFSAZl0TGdqgd7Tiu1KUafmRfJE3sx2Yu5ATaYTiqikkk1PkPLUhlJQ13qT4NttNM/GaSWl7N7vLVfAeOJY+e5soup8YKUN1DPHd3PrMQ9Fe1eiyiP5TzIaYLtRwOXlIEvFwBD7I22s+++Cpbul72ELBh/XleXIlb0Kf+/g/c8EJjRflCSEarRFyjT1lNu8XGqkWcGOlT0UslELQLmemV61YYR8u+Y2K/8vgcYm3JdqrjKMKtin6hyiwoVOmHofrJVxBLeKOcodKbZBsoNpGx6Bo6BB4Gb/a9j8Xp+Clc5wronDz1+0ujf/m5gHKvSWOMbPfnrWntlTkf6zcFwdTJrpRwRfH62dMngha6KfiN0OpPHut/wGanWpcR9kxnmi7ddLWsBwVBPeIq4Zp3mqOmMEI8CYEiwjF4XKszJ0PXEueTnkpGee1J5RzPHxPXdKtOj9/M43PgyYtce27KRcNHCC/i9popsN5AGONzauemvI3jkdQIWulirzq2TRma8vNQXE9uW7b8JrFK/ii260r/5DIwbccU9lI2s/CDW5YOlpUlmQDClj3kj+/hDhr8ukqAtkQfHeZeyjSRuEizomA4a2nekKggXjn3dGO7EZ+IHhnkOh/DM9ZiYCsmUW52Kp3dMouInFRrrtUyv4fKha1jHZLnY7Q6p9J1wNd7MeMF3MtQegeN6Z171iRiiPouweg/A23SFxo5MPV3iQdnueaA5qkBtPi2EN/t9wlhb9Er+vcD7qXdjhOjsyxvr+zdNihj
X-Forefront-Antispam-Report:
	CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230031)(4636009)(39860400002)(396003)(346002)(376002)(136003)(230273577357003)(230173577357003)(230922051799003)(64100799003)(186009)(82310400011)(1800799012)(451199024)(46966006)(36840700001)(40470700004)(6916009)(316002)(70206006)(54906003)(478600001)(70586007)(6666004)(8936002)(8676002)(4326008)(1076003)(5660300002)(26005)(426003)(2616005)(336012)(2906002)(83380400001)(47076005)(81166007)(40460700003)(82740400003)(86362001)(40480700001)(41300700001)(36756003)(103116003)(36860700001)(356005)(36900700001);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 31 Jan 2024 12:14:23.5507
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 37afa499-6c6f-43a9-6e3e-08dc2256295d
X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com]
X-MS-Exchange-CrossTenant-AuthSource:
	SN1PEPF000252A4.namprd05.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR12MB4080

When user enables HVC_DCC config option in Linux, it invokes access to debug
transfer register (i.e. DBGDTRTXINT). As this register is not emulated, Xen
injects an undefined exception to the guest and Linux crashes.
To prevent this crash, introduce a partial emulation of DBGDTRTXINT as RAZ/WI
and TXfull should be set to 1. So that Linux will see that TXfull is set, and
it will not access DBGDTRTXINT.

As a pre-requisite, DBGOSLSR should be emulated in the same way as its AArch64
variant (ie OSLSR_EL1).
This is to ensure that DBGOSLSR.OSLK is 0, thus MDSCR_EL1.TXfull is treated
as UNK/SBZP.
Only MDCCSR_EL0 can be emulated (which is DBGDSCRINT on arm32). DBGDSCRINT
can be accessed at EL0 as DBGDSCREXT is emulated as RAZ (as DBGOSLSR.OSLK
== 0). So, we tool the opportunity to fix the minimum EL for DBGDSCRINT.
 DBGDSCRINT.TXfull is set to 1.

Refer ARM DDI 0487J.a ID042523, G8.3.19, DBGDTRTXint
"If TXfull is set to 1, set DTRTX to UNKNOWN".
So, DBGDTR[TR]XINT is emulated as RAZ/WI.

Thus, any OS is expected to read DBGDSCRINT and check for TXfull before using
DBGDTRTXINT.

Signed-off-by: Ayan Kumar Halder <ayan.kumar.halder@amd.com>
---
Changes from

v1 :- 1. DBGDTR_EL0 does not emulate RXfull. This is to avoid giving the OS any
indication that the RX buffer is full and is waiting to be read.

2. In Arm32, DBGOSLSR is emulated. Also DBGDTRTXINT is emulated at EL0 only.

3. Fixed the commit message and inline code comments.

v2 :- 1. Split the patch into two (separate patches for arm64 and arm32).
2. Fixed in line comments and style related issues.
3. Updated commit message to mention DBGDSCRINT handling.

v3 :- 1. The original emulation of DBGDSCRINT is retained when
'partial_emulation' is false.

2. If 'partial_emulation' is false, then access to DBGDTRTXINT will
lead to undefined exception.

 xen/arch/arm/include/asm/cpregs.h |  2 ++
 xen/arch/arm/vcpreg.c             | 35 ++++++++++++++++++++++---------
 2 files changed, 27 insertions(+), 10 deletions(-)

diff --git a/xen/arch/arm/include/asm/cpregs.h b/xen/arch/arm/include/asm/cpregs.h
index 6b083de204..aec9e8f329 100644
--- a/xen/arch/arm/include/asm/cpregs.h
+++ b/xen/arch/arm/include/asm/cpregs.h
@@ -75,6 +75,8 @@
 #define DBGDIDR         p14,0,c0,c0,0   /* Debug ID Register */
 #define DBGDSCRINT      p14,0,c0,c1,0   /* Debug Status and Control Internal */
 #define DBGDSCREXT      p14,0,c0,c2,2   /* Debug Status and Control External */
+#define DBGDTRRXINT     p14,0,c0,c5,0   /* Debug Data Transfer Register, Receive */
+#define DBGDTRTXINT     p14,0,c0,c5,0   /* Debug Data Transfer Register, Transmit */
 #define DBGVCR          p14,0,c0,c7,0   /* Vector Catch */
 #define DBGBVR0         p14,0,c0,c0,4   /* Breakpoint Value 0 */
 #define DBGBCR0         p14,0,c0,c0,5   /* Breakpoint Control 0 */
diff --git a/xen/arch/arm/vcpreg.c b/xen/arch/arm/vcpreg.c
index a2d0500704..87df4bd238 100644
--- a/xen/arch/arm/vcpreg.c
+++ b/xen/arch/arm/vcpreg.c
@@ -493,11 +493,12 @@ void do_cp14_32(struct cpu_user_regs *regs, const union hsr hsr)
      * ARMv8 (DDI 0487A.d): D1-1509 Table D1-58
      *
      * Unhandled:
-     *    DBGOSLSR
      *    DBGPRCR
      */
     case HSR_CPREG32(DBGOSLAR):
         return handle_wo_wi(regs, regidx, cp32.read, hsr, 1);
+    case HSR_CPREG32(DBGOSLSR):
+        return handle_ro_read_val(regs, regidx, cp32.read, hsr, 1, 1U << 3);
     case HSR_CPREG32(DBGOSDLR):
         return handle_raz_wi(regs, regidx, cp32.read, hsr, 1);
 
@@ -509,8 +510,6 @@ void do_cp14_32(struct cpu_user_regs *regs, const union hsr hsr)
      *
      * Unhandled:
      *    DBGDCCINT
-     *    DBGDTRRXint
-     *    DBGDTRTXint
      *    DBGWFAR
      *    DBGDTRTXext
      *    DBGDTRRXext,
@@ -550,10 +549,22 @@ void do_cp14_32(struct cpu_user_regs *regs, const union hsr hsr)
 
     case HSR_CPREG32(DBGDSCRINT):
         /*
-         * Read-only register. Accessible by EL0 if DBGDSCRext.UDCCdis
-         * is set to 0, which we emulated below.
+         * Xen doesn't expose a real (or emulated) Debug Communications
+         * Channel (DCC) to a domain. Yet the Arm ARM implies this is not an
+         * optional feature. So some domains may start to probe it. For
+         * instance, the HVC_DCC driver in Linux (since f377775dc083 and at
+         * least up to v6.7), will try to write some characters and check if
+         * the transmit buffer has emptied. By setting TX status bit to
+         * indicate the transmit buffer is full. This we would hint the OS
+         * that the DCC is probably not working.
+         *
+         * Bit 29: TX full
+         *
+         * Accessible by EL0 if DBGDSCRext.UDCCdis is set to 0, which we
+         * emulate as RAZ/WI in the next case.
          */
-        return handle_ro_raz(regs, regidx, cp32.read, hsr, 1);
+        return handle_ro_read_val(regs, regidx, cp32.read, hsr, 0,
+                                  partial_emulation ? (1U << 29) : 0);
 
     case HSR_CPREG32(DBGDSCREXT):
         /*
@@ -562,6 +573,12 @@ void do_cp14_32(struct cpu_user_regs *regs, const union hsr hsr)
          */
         return handle_raz_wi(regs, regidx, cp32.read, hsr, 1);
 
+    /* DBGDTR[TR]XINT share the same encoding */
+    case HSR_CPREG32(DBGDTRTXINT):
+        if ( !partial_emulation )
+            goto fail;
+        return handle_raz_wi(regs, regidx, cp32.read, hsr, 0);
+
     case HSR_CPREG32(DBGVCR):
     case HSR_CPREG32(DBGBVR0):
     case HSR_CPREG32(DBGBCR0):
@@ -591,6 +608,7 @@ void do_cp14_32(struct cpu_user_regs *regs, const union hsr hsr)
      * And all other unknown registers.
      */
     default:
+ fail:
         gdprintk(XENLOG_ERR,
                  "%s p14, %d, r%d, cr%d, cr%d, %d @ 0x%"PRIregister"\n",
                   cp32.read ? "mrc" : "mcr",
@@ -659,10 +677,7 @@ void do_cp14_dbg(struct cpu_user_regs *regs, const union hsr hsr)
      * ARMv8 (DDI 0487A.d): D1-1509 Table D1-58
      *
      * Unhandled:
-     *    DBGDTRTXint
-     *    DBGDTRRXint
-     *
-     * And all other unknown registers.
+     * All unknown registers.
      */
     gdprintk(XENLOG_ERR,
              "%s p14, %d, r%d, r%d, cr%d @ 0x%"PRIregister"\n",
-- 
2.25.1



From xen-devel-bounces@lists.xenproject.org Wed Jan 31 12:22:50 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 31 Jan 2024 12:22:50 +0000
Received: from list by lists.xenproject.org with outflank-mailman.674010.1048656 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rV9c3-0002n6-AI; Wed, 31 Jan 2024 12:22:43 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 674010.1048656; Wed, 31 Jan 2024 12:22:43 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rV9c3-0002mz-7R; Wed, 31 Jan 2024 12:22:43 +0000
Received: by outflank-mailman (input) for mailman id 674010;
 Wed, 31 Jan 2024 12:22:42 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>) id 1rV9c2-0002mr-KJ
 for xen-devel@lists.xenproject.org; Wed, 31 Jan 2024 12:22:42 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rV9bw-0004Xf-SV; Wed, 31 Jan 2024 12:22:36 +0000
Received: from gw1.octic.net ([88.97.20.152] helo=[10.0.1.240])
 by xenbits.xenproject.org with esmtpsa
 (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rV9bw-00040K-L0; Wed, 31 Jan 2024 12:22:36 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
	s=20200302mail; h=Content-Transfer-Encoding:Content-Type:In-Reply-To:From:
	References:Cc:To:Subject:MIME-Version:Date:Message-ID;
	bh=2X3H3P5KppJ9rWeCU4MFgLVbFjBgS7ty9gGS7a8EL/E=; b=T1H646wJ6jEQAPh84DvFOyx3KX
	jNWGvEezGucPcva94yP019VJrWxLA35OLPf01anK/umR0PmNUHuLC9nUzpk/pSQACeFRAqDQnPE31
	X89gogZWgMseOjIjsvGfE1AA63IJfWmRweln8JobG4eTYmlxLn0vpCLzuMekWoExTDBI=;
Message-ID: <a2f726f5-df4c-4d15-90af-7d59c0f1f513@xen.org>
Date: Wed, 31 Jan 2024 12:22:34 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 1/2] xen/arm: Add imx8q{m,x} platform glue
To: John Ernberg <john.ernberg@actia.se>,
 Stefano Stabellini <sstabellini@kernel.org>,
 Bertrand Marquis <bertrand.marquis@arm.com>,
 Michal Orzel <michal.orzel@amd.com>,
 Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>
Cc: Peng Fan <peng.fan@nxp.com>, Jonas Blixt <jonas.blixt@actia.se>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
References: <20240131114952.305805-1-john.ernberg@actia.se>
 <20240131114952.305805-2-john.ernberg@actia.se>
Content-Language: en-GB
From: Julien Grall <julien@xen.org>
In-Reply-To: <20240131114952.305805-2-john.ernberg@actia.se>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

Hi,

On 31/01/2024 11:50, John Ernberg wrote:
> When using Linux for dom0 there are a bunch of drivers that need to do SMC
> SIP calls into the PSCI provider to enable certain hardware bits like the
> watchdog.

Do you know which protocol this is under the hood. Is this SCMI?

> 
> Provide a basic platform glue that implements the needed SMC forwarding.
> 
> Signed-off-by: John Ernberg <john.ernberg@actia.se>
> ---
> NOTE: This is based on code found in NXP Xen tree located here:
> https://github.com/nxp-imx/imx-xen/blob/lf-5.10.y_4.13/xen/arch/arm/platforms/imx8qm.c

Anything after --- will be removed while applied to the three. I think 
this NOTE should be written down in the commit message.

You also possibly want a signed-off-by from Peng as this is his code.

> 
>   xen/arch/arm/platforms/Makefile |  1 +
>   xen/arch/arm/platforms/imx8qm.c | 65 +++++++++++++++++++++++++++++++++
>   2 files changed, 66 insertions(+)
>   create mode 100644 xen/arch/arm/platforms/imx8qm.c
> 
> diff --git a/xen/arch/arm/platforms/Makefile b/xen/arch/arm/platforms/Makefile
> index 8632f4115f..bec6e55d1f 100644
> --- a/xen/arch/arm/platforms/Makefile
> +++ b/xen/arch/arm/platforms/Makefile
> @@ -9,5 +9,6 @@ obj-$(CONFIG_ALL_PLAT)   += sunxi.o
>   obj-$(CONFIG_ALL64_PLAT) += thunderx.o
>   obj-$(CONFIG_ALL64_PLAT) += xgene-storm.o
>   obj-$(CONFIG_ALL64_PLAT) += brcm-raspberry-pi.o
> +obj-$(CONFIG_ALL64_PLAT) += imx8qm.o
>   obj-$(CONFIG_MPSOC_PLATFORM)  += xilinx-zynqmp.o
>   obj-$(CONFIG_MPSOC_PLATFORM)  += xilinx-zynqmp-eemi.o
> diff --git a/xen/arch/arm/platforms/imx8qm.c b/xen/arch/arm/platforms/imx8qm.c
> new file mode 100644
> index 0000000000..a9cd9c3615
> --- /dev/null
> +++ b/xen/arch/arm/platforms/imx8qm.c
> @@ -0,0 +1,65 @@
> +/* SPDX-License-Identifier: GPL-2.0-or-later */
> +/*
> + * xen/arch/arm/platforms/imx8qm.c
> + *
> + * i.MX 8QM setup
> + *
> + * Copyright (c) 2016 Freescale Inc.
> + * Copyright 2018-2019 NXP
> + *
> + *
> + * Peng Fan <peng.fan@nxp.com>
> + */
> +
> +#include <asm/platform.h>
> +#include <asm/smccc.h>
> +
> +static const char * const imx8qm_dt_compat[] __initconst =
> +{
> +    "fsl,imx8qm",
> +    "fsl,imx8qxp",
> +    NULL
> +};
> +
> +static bool imx8qm_smc(struct cpu_user_regs *regs)
> +{

Your implementation below will not only forward SMC for dom0 but also 
for any non-trusted domains. Have you investigated that all the SIP 
calls are safe to be called by anyone?

But even if we restrict to dom0, have you checked that none of the SMCs 
use buffers?

Rather than providing a blanket forward, to me it sounds more like you 
want to provide an allowlist of the SMCs. This is more futureproof and 
avoid the risk to expose unsafe SMCs to any domain.

For an example, you can have a look at the EEMI mediator for Xilinx.

Cheers,

-- 
Julien Grall


From xen-devel-bounces@lists.xenproject.org Wed Jan 31 12:30:07 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 31 Jan 2024 12:30:07 +0000
Received: from list by lists.xenproject.org with outflank-mailman.674016.1048666 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rV9j6-0004q1-18; Wed, 31 Jan 2024 12:30:00 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 674016.1048666; Wed, 31 Jan 2024 12:30:00 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rV9j5-0004pu-Ug; Wed, 31 Jan 2024 12:29:59 +0000
Received: by outflank-mailman (input) for mailman id 674016;
 Wed, 31 Jan 2024 12:29:58 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>) id 1rV9j4-0004oU-I2
 for xen-devel@lists.xenproject.org; Wed, 31 Jan 2024 12:29:58 +0000
Received: from xenbits.xenproject.org ([104.239.192.120])
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rV9iy-0004fz-Hd; Wed, 31 Jan 2024 12:29:52 +0000
Received: from gw1.octic.net ([88.97.20.152] helo=[10.0.1.240])
 by xenbits.xenproject.org with esmtpsa
 (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92)
 (envelope-from <julien@xen.org>)
 id 1rV9iy-0004EH-9q; Wed, 31 Jan 2024 12:29:52 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org;
	s=20200302mail; h=Content-Transfer-Encoding:Content-Type:In-Reply-To:From:
	References:Cc:To:Subject:MIME-Version:Date:Message-ID;
	bh=Pqsq+F6BtqshjlmZpexArMn64gGrl9JSDX8n/8YyMiQ=; b=2QLWK999Pt/PkT7rdha0PaI8oW
	QdgC21KmpMgFcSGNNn42EJZM69p89lNeiBu5hwxl/F3Gv0jWmjJEoLOpSWAEggSRAR1hawWVfuaLY
	EyvimbVeOV+Yoaxn6quw1S5l93FeBzmDmzd3QYIP6qDs2ULf/RCEeDhZxa8CNBrABDac=;
Message-ID: <04bd90d9-4cfd-4f76-a2fc-26a432b4c1c9@xen.org>
Date: Wed, 31 Jan 2024 12:29:50 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 2/2] xen/drivers: imx-lpuart: Add iMX8QXP compatible
Content-Language: en-GB
To: John Ernberg <john.ernberg@actia.se>,
 Stefano Stabellini <sstabellini@kernel.org>,
 Bertrand Marquis <bertrand.marquis@arm.com>,
 Michal Orzel <michal.orzel@amd.com>,
 Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>
Cc: Peng Fan <peng.fan@nxp.com>, Jonas Blixt <jonas.blixt@actia.se>,
 "xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
References: <20240131114952.305805-1-john.ernberg@actia.se>
 <20240131114952.305805-3-john.ernberg@actia.se>
From: Julien Grall <julien@xen.org>
In-Reply-To: <20240131114952.305805-3-john.ernberg@actia.se>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

Hi John,

On 31/01/2024 11:50, John Ernberg wrote:
> Allow the uart to probe also with iMX8QXP. The ip-block is the same as in the QM,
> only the compatible is needed.
> 
> Signed-off-by: John Ernberg <john.ernberg@actia.se>

With one remark below:

Acked-by: Julien Grall <jgrall@amazon.com>

> ---
>   xen/drivers/char/imx-lpuart.c | 1 +
>   1 file changed, 1 insertion(+)
> 
> diff --git a/xen/drivers/char/imx-lpuart.c b/xen/drivers/char/imx-lpuart.c
> index 77f70c2719..c85e81109a 100644
> --- a/xen/drivers/char/imx-lpuart.c
> +++ b/xen/drivers/char/imx-lpuart.c
> @@ -257,6 +257,7 @@ static int __init imx_lpuart_init(struct dt_device_node *dev,
>   static const struct dt_device_match imx_lpuart_dt_compat[] __initconst =
>   {
>       DT_MATCH_COMPATIBLE("fsl,imx8qm-lpuart"),
> +    DT_MATCH_COMPATIBLE("fsl,imx8qxp-lpuart"),

IIUC the binding, the Device-Tree node compatible should have both 
fsl,imx8qm-lpuart and fsl,imx8qxp-lpuart. In fact, the Linux driver 
doesn't recognize the first compatible.

So maybe we can remove the first one.

Cheers,

-- 
Julien Grall


From xen-devel-bounces@lists.xenproject.org Wed Jan 31 12:43:20 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 31 Jan 2024 12:43:20 +0000
Received: from list by lists.xenproject.org with outflank-mailman.674020.1048677 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rV9vt-0000uv-50; Wed, 31 Jan 2024 12:43:13 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 674020.1048677; Wed, 31 Jan 2024 12:43:13 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rV9vt-0000uo-2A; Wed, 31 Jan 2024 12:43:13 +0000
Received: by outflank-mailman (input) for mailman id 674020;
 Wed, 31 Jan 2024 12:43:12 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=vX7o=JJ=amd.com=Michal.Orzel@srs-se1.protection.inumbo.net>)
 id 1rV9vs-0000ui-1V
 for xen-devel@lists.xenproject.org; Wed, 31 Jan 2024 12:43:12 +0000
Received: from NAM11-BN8-obe.outbound.protection.outlook.com
 (mail-bn8nam11on20600.outbound.protection.outlook.com
 [2a01:111:f400:7eae::600])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 49fa37ca-c036-11ee-8a43-1f161083a0e0;
 Wed, 31 Jan 2024 13:43:10 +0100 (CET)
Received: from BLAPR03CA0086.namprd03.prod.outlook.com (2603:10b6:208:329::31)
 by CH2PR12MB4261.namprd12.prod.outlook.com (2603:10b6:610:a9::8) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7228.37; Wed, 31 Jan
 2024 12:43:06 +0000
Received: from MN1PEPF0000F0E5.namprd04.prod.outlook.com
 (2603:10b6:208:329:cafe::67) by BLAPR03CA0086.outlook.office365.com
 (2603:10b6:208:329::31) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7249.22 via Frontend
 Transport; Wed, 31 Jan 2024 12:43:06 +0000
Received: from SATLEXMB03.amd.com (165.204.84.17) by
 MN1PEPF0000F0E5.mail.protection.outlook.com (10.167.242.43) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.7249.19 via Frontend Transport; Wed, 31 Jan 2024 12:43:04 +0000
Received: from SATLEXMB08.amd.com (10.181.40.132) by SATLEXMB03.amd.com
 (10.181.40.144) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.34; Wed, 31 Jan
 2024 06:43:04 -0600
Received: from SATLEXMB04.amd.com (10.181.40.145) by SATLEXMB08.amd.com
 (10.181.40.132) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.32; Wed, 31 Jan
 2024 04:43:04 -0800
Received: from [10.252.147.188] (10.180.168.240) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server id 15.1.2507.34 via Frontend
 Transport; Wed, 31 Jan 2024 06:43:02 -0600
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 49fa37ca-c036-11ee-8a43-1f161083a0e0
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=oQdZsN5l6WlGx3lYVp7+JSppFP9W520946lPQ0Gwz72+eEOhg8xnlfjft/W0wW/XhaI4S6bU9H6wiSWH45kGBKd1XKzfNUHMalYhbTBpHyvm5VKkSpFASRPFTM4chEDtFK83wkxN4ndUCMCV1tCZMFeg0oCGZKKYcb49mdmGyddMni5KC9ry06FJanxS92JDsY3bfHfrjSBI2f2NLEnDK3mCxp86ervLXYXjeHLQTdRIWH86lgJnwZJCXe/lhv6NQQ5ql077A4mpfbuR2MXcvRKSDNmO2TkOrsdxdB18bPkdAzVTIzNycGoC+yZJiLdg/ae8ducVJx/LvR+wPlTslw==
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=oAAwLouGsxv8hR1ylp4tn+X91JS9RJNCjxgIsTPoptE=;
 b=Ij2ZjxBxv2+r+g6G1W4CoEmUm0SCgCPvOEsJchNdyJVnKzqRSTafvRivegGJi3ImpT/p0wLT4waT9nlqBoDcwLGJkvi9EdhRt+HGm6yA5ARKhKt0SCF6WS6klLSfPdJzx30myHvJwRjBAOU3L1kWGnfzjr8mYm8ZEzE1iNFS7D/CLeBlXyGBOKC6QAeEllRKeT7pW9xBLgqLY3eJut/YK2jTmhwWXMlGEOqQ4yvuEE8BWve/cqog664c7zKLaYtyQPbcM1n/eMD/bBIxd8S1ShISoVsuNOztVD20HsbAGy1nwT51UZwGDmjwiGcFf0BIJwpj5l+TNFM8E9ai32Yn7A==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=lists.xenproject.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)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=oAAwLouGsxv8hR1ylp4tn+X91JS9RJNCjxgIsTPoptE=;
 b=PK3N0UZOJwzy7yyP/uFEJGaVBdvMM2UQgh1HzMPQVbKQ1CpX6jd+ALAloWJkyoD13XUefgZ4gZN35MBV78or5X+bzlUiPTbfkiUdNlsoi9pj0y5Z4spAhi90cVbE5pNfskHrtbl3I2bHbCYi4BIRmolB1encjpyogR7GdAK1M9Y=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=SATLEXMB03.amd.com; pr=C
Message-ID: <13858d36-a7e5-4c74-ac6a-859125b8e92e@amd.com>
Date: Wed, 31 Jan 2024 13:43:02 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [XEN v4 1/3] xen/arm: Introduce CONFIG_PARTIAL_EMULATION and
 "partial-emulation" cmd option
Content-Language: en-US
To: Ayan Kumar Halder <ayan.kumar.halder@amd.com>,
	<xen-devel@lists.xenproject.org>
CC: <sstabellini@kernel.org>, <stefano.stabellini@amd.com>, <julien@xen.org>,
	<Volodymyr_Babchuk@epam.com>, <bertrand.marquis@arm.com>,
	<luca.fancellu@arm.com>
References: <20240131121049.225044-1-ayan.kumar.halder@amd.com>
 <20240131121049.225044-2-ayan.kumar.halder@amd.com>
From: Michal Orzel <michal.orzel@amd.com>
In-Reply-To: <20240131121049.225044-2-ayan.kumar.halder@amd.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 7bit
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: MN1PEPF0000F0E5:EE_|CH2PR12MB4261:EE_
X-MS-Office365-Filtering-Correlation-Id: 3e176b4d-04b9-4921-f943-08dc225a2b47
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam: BCL:0;
X-Microsoft-Antispam-Message-Info:
	tvxAU3UI/HBUFc2MdN4JW8afmcMew0522cIA+dhV22TbgrrK13wkdC9UrfctIcXRCkNaKNK8rBH95BD6ZlHT/AWMTWWPUtu6tDTgdsJIKRV3vqrH45NfHOvYtPZLmVKgSshzgrroi5aYbxQjg5WltoMjl8qiUdp9DDUovHnDngKsBluradSEPEgHUDuH6ZK3EHoO5iTUY97UsuPss7WSfzJCuLV1NjQJJND+ULqaimHFJyVqDzou8Lspsv4EJpXVH28GW7txFhi8ErGuG2/4mXDH2IwEeT0MVwi7cNnSDGbHrPmj5WZ946jgH01ZHPGUSE9H0r1WJJWGhu33HZ7R7siS4NBk0KeJff8eAbCsewmJUAys/4AsvVcWflD/RLrqa7NUhwQWwe7ed80kbJwcjRQ/W6WbHDj0KAz0T86ooTEsB2yenF9jsWlZrBBCEnFyEsO+47b4NNUQ68xYsOBsIPmZfnbibWlIX8Hk+CT5GCn8m8+l59gqkWl5YFJ/v0YK8ZtXqS2MjrGt0GfiOysNqIzGp4uvdV9jumomxoUYIxhfkk0qnpLKpaU+7BqxqYmTw+GYYMNik2izIQVCOxhW0HRJznArUd4Vb51q8D/eu4XuVjdyAtW1OwKT8ArfzE9QbFfO18fu7qAyuRXM7I1VgzpeGD7pNZ+FFpZwYa8Jr+NT+8Uz/xzKbpdIqCj+2UH6lkVKHImCnbjSpJj4E3OZxkXmAAvuqtFPM4yAB7UIhvvVWL19D/szymBRFFS8uLBhd6yaZ7ztv/Y++EHuZi9ZkgvnNFt1Pl1PMluMHzz7K4RBBGfbAk/9YPOHNFsvflWyjTbU30PuJKDKP/Qi/JUugK2G6FJNSV1lrXiru6ltxVA=
X-Forefront-Antispam-Report:
	CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB03.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230031)(4636009)(39860400002)(346002)(136003)(396003)(376002)(230273577357003)(230173577357003)(230922051799003)(451199024)(186009)(64100799003)(82310400011)(1800799012)(36840700001)(46966006)(40470700004)(26005)(2616005)(83380400001)(336012)(426003)(478600001)(41300700001)(53546011)(8676002)(36756003)(8936002)(4326008)(356005)(44832011)(316002)(16576012)(54906003)(40460700003)(40480700001)(36860700001)(2906002)(31686004)(81166007)(70206006)(5660300002)(82740400003)(70586007)(47076005)(110136005)(31696002)(86362001)(36900700001)(43740500002);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 31 Jan 2024 12:43:04.7993
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 3e176b4d-04b9-4921-f943-08dc225a2b47
X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB03.amd.com]
X-MS-Exchange-CrossTenant-AuthSource:
	MN1PEPF0000F0E5.namprd04.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH2PR12MB4261

Hi Ayan,

On 31/01/2024 13: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
NIT: given that the option is false by default, it would make more sense to give example
with setting it to true to enable it.

> 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.
> 
> Signed-off-by: Ayan Kumar Halder <ayan.kumar.halder@amd.com>
> ---
> Changes from v1 :-
> 1. New patch introduced in v2.
> 
> v2 :-
> 1. Reordered the patches so that the config and command line option is
> introduced in the first patch.
> 
> v3 :-
> 1. Defined a macro 'partial_emulation' to reduce if-defs.
> 2. Fixed style issues.
> 
>  docs/misc/xen-command-line.pandoc | 11 +++++++++++
>  xen/arch/arm/Kconfig              |  9 +++++++++
>  xen/arch/arm/include/asm/traps.h  |  6 ++++++
>  xen/arch/arm/traps.c              |  9 +++++++++
>  4 files changed, 35 insertions(+)
> 
> diff --git a/docs/misc/xen-command-line.pandoc b/docs/misc/xen-command-line.pandoc
> index 8e65f8bd18..22c0d7c9f6 100644
> --- a/docs/misc/xen-command-line.pandoc
> +++ b/docs/misc/xen-command-line.pandoc
> @@ -1949,6 +1949,17 @@ This option is ignored in **pv-shim** mode.
>  
>  > Default: `on`
>  
> +### partial-emulation (arm)
> +> `= <boolean>`
> +
> +> Default: `false`
> +
> +Flag to enable or disable partial emulation of system/coprocessor registers.
> +Only effective if CONFIG_PARTIAL_EMULATION is enabled.
> +
> +**WARNING: Enabling this option might result in unwanted/non-spec compliant
> +behavior.**
> +
>  ### pci
>      = List of [ serr=<bool>, perr=<bool> ]
>  
> diff --git a/xen/arch/arm/Kconfig b/xen/arch/arm/Kconfig
> index 50e9bfae1a..8d8f668e7f 100644
> --- a/xen/arch/arm/Kconfig
> +++ b/xen/arch/arm/Kconfig
> @@ -225,6 +225,15 @@ config STATIC_EVTCHN
>  	  This option enables establishing static event channel communication
>  	  between domains on a dom0less system (domU-domU as well as domU-dom0).
>  
> +config PARTIAL_EMULATION
> +	bool "Enable partial emulation of system/coprocessor registers"
> +	default y
> +	help
> +	  This option enables partial emulation of registers to prevent guests
> +	  crashing when accessing registers which are not optional but have not been
> +	  emulated to its complete functionality. Enabling this might result in
NIT: s/its/their

Other than that:
Reviewed-by: Michal Orzel <michal.orzel@amd.com>

~Michal



From xen-devel-bounces@lists.xenproject.org Wed Jan 31 12:58:48 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 31 Jan 2024 12:58:48 +0000
Received: from list by lists.xenproject.org with outflank-mailman.674024.1048686 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rVAAk-0004vP-DM; Wed, 31 Jan 2024 12:58:34 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 674024.1048686; Wed, 31 Jan 2024 12:58:34 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rVAAk-0004vI-Ae; Wed, 31 Jan 2024 12:58:34 +0000
Received: by outflank-mailman (input) for mailman id 674024;
 Wed, 31 Jan 2024 12:58:32 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=vX7o=JJ=amd.com=Michal.Orzel@srs-se1.protection.inumbo.net>)
 id 1rVAAi-0004vC-Tz
 for xen-devel@lists.xenproject.org; Wed, 31 Jan 2024 12:58:32 +0000
Received: from NAM11-CO1-obe.outbound.protection.outlook.com
 (mail-co1nam11on20600.outbound.protection.outlook.com
 [2a01:111:f403:2416::600])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 6e902f4e-c038-11ee-98f5-efadbce2ee36;
 Wed, 31 Jan 2024 13:58:30 +0100 (CET)
Received: from PH0P220CA0008.NAMP220.PROD.OUTLOOK.COM (2603:10b6:510:d3::8) by
 LV8PR12MB9336.namprd12.prod.outlook.com (2603:10b6:408:208::12) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7249.24; Wed, 31 Jan
 2024 12:58:24 +0000
Received: from SN1PEPF0002529D.namprd05.prod.outlook.com
 (2603:10b6:510:d3:cafe::37) by PH0P220CA0008.outlook.office365.com
 (2603:10b6:510:d3::8) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7249.24 via Frontend
 Transport; Wed, 31 Jan 2024 12:58:24 +0000
Received: from SATLEXMB03.amd.com (165.204.84.17) by
 SN1PEPF0002529D.mail.protection.outlook.com (10.167.242.4) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.7249.19 via Frontend Transport; Wed, 31 Jan 2024 12:58:23 +0000
Received: from SATLEXMB08.amd.com (10.181.40.132) by SATLEXMB03.amd.com
 (10.181.40.144) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.34; Wed, 31 Jan
 2024 06:58:23 -0600
Received: from SATLEXMB04.amd.com (10.181.40.145) by SATLEXMB08.amd.com
 (10.181.40.132) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.32; Wed, 31 Jan
 2024 04:58:22 -0800
Received: from [10.252.147.188] (10.180.168.240) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server id 15.1.2507.34 via Frontend
 Transport; Wed, 31 Jan 2024 06:58:21 -0600
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 6e902f4e-c038-11ee-98f5-efadbce2ee36
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=QFfKNLm+vdK0t7k/CRKEfuwuwLMcHXbOjDpfx5xSbch7Cq49BJfYsH6Tw4OFkGPOayeOcV/5Ym/B3WjGbdWAuJTUPKkGV4rfxzRfJX+yy3uPAsyidmv1CIWQxFxtgmcwxWqjVL9YFiXnrFOxkHOprC4WBtNx3gu3gojcShIrokyLuf/fxebardp8yAHHiA9F3EzFgjCo7H1X7HyG1b2Z4ydtRSB4NUc0KA6xgX85rX5paeSe7B4JQZAUavQAmAogmfWqbn36nORinaEh2/a0Fu2987Fl3H65iaex8n3ftMJ9O2wQ0vsIYy77w/6w4wpYF//sQ/BetYCm4OlpsI6FgA==
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=SOs0RA9iZStVkQsMH3cUqJBay5MIUiLHOpqUtU7/R1A=;
 b=MoFpIrc3n9FBd0i023wva6oNMC9VJRt8h5iEw/uopChQ1yLlTrC4irIkbp92XNGSTiUfW2Cx9vThD9wXdwknFBOU9piCEiFApChrFkjO1Zj4NcZlwZUAmDBS0p4uC6dI7rDqhcCwB4pBPMcf1ODDyyCz7eqpV9i4/tjiLSSgFTC+5JS+P0dKLvPb5ZhISESYiH6PiXMbCXH1i1wzqS/GekQHVV9N+61pLQ0YxH9HvbW6Vnm9o9chKlYgamZRGkeWU5+WlHtIalU/dAihryGKbOQYuO44oTaoZKskF6CP5sfgiuxuUocza5+dUSMwtY7kOeVczkZq9BKlvOWbu770cA==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=lists.xenproject.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)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=SOs0RA9iZStVkQsMH3cUqJBay5MIUiLHOpqUtU7/R1A=;
 b=PMYL7FrtLdqQ5fakknj0VSmbfVH4yCRxDtJYQ3YZIB1aQSIVhF5ZKwrtdG6+EqOKG0ECRlhwOyT6Ig9AVdd8u3oK+v1CU9bNk6VOc3swJvED9Z6JzQHv8KwlsdJ5t6uN3g3xKLgPD7fxr/nb3bkXOym/WBg2736FXp8stx5ISNo=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=SATLEXMB03.amd.com; pr=C
Message-ID: <44afb871-8a00-4781-82c9-115ea40a8e03@amd.com>
Date: Wed, 31 Jan 2024 13:58:20 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [XEN v4 2/3] xen/arm: arm64: Add emulation of Debug Data Transfer
 Registers
Content-Language: en-US
To: Ayan Kumar Halder <ayan.kumar.halder@amd.com>,
	<xen-devel@lists.xenproject.org>
CC: <sstabellini@kernel.org>, <stefano.stabellini@amd.com>, <julien@xen.org>,
	<Volodymyr_Babchuk@epam.com>, <bertrand.marquis@arm.com>,
	<luca.fancellu@arm.com>
References: <20240131121049.225044-1-ayan.kumar.halder@amd.com>
 <20240131121049.225044-3-ayan.kumar.halder@amd.com>
From: Michal Orzel <michal.orzel@amd.com>
In-Reply-To: <20240131121049.225044-3-ayan.kumar.halder@amd.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 7bit
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: SN1PEPF0002529D:EE_|LV8PR12MB9336:EE_
X-MS-Office365-Filtering-Correlation-Id: 7d7f2850-08df-4c44-7347-08dc225c4ee6
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam: BCL:0;
X-Microsoft-Antispam-Message-Info:
	Aa2Xq4HYp68xwpU+6Mv7SxP4/IPbYy7j2d0hiRQ2FoY483uLPKEtJ/2vYVK079cu5MqambLIdTh+LyfNqWdPIvSkG1pOrIChAMzKfvGO1NsmoNxsRQvXSv/Nno/cMoqPPmRYFynEor36WVgTUd/Ipy1FYyy0s+bMdeB97Laziss6hN2PWqHcZ/qrcgdOy63Og9UN0qRf7ZQ0jUfchGyTOt2wft1kUxH3uDAU5Kb3pSleWG218qePP3vL+pjG8LK7SewTkaQD8xgm0lthKmBknxyzCare0E2Sc/vi46jc+toNDG3HLuPf2oJWsK+2GeB/yhxZwg1h+2CEc1PAMDL5WvARYyLyMnkJRhSzYEO2b7qcbTYlyNA75MugCCAHNzbAYqeMK50133pq+68fKwnCsE68CcZ6A9riNOc6JneEQaZH8q5zhfyJURq1QhgkrJHvKg//hk5l1VmVUFbEZ7TX5lynyyNOsDtBIy/beVcHauWmlB668QBA7Rxrvbq/+hAgmarw/lCbLE16HyGery1dGm/vIRSR8tjcOyxLaAzqhWRT1Zil/5cOoMtuaganzfvXdpyxn8P9f/DybZjux9pSkXJnhf8fFCD//Qn5WJGgtrl2nA/4Yelo8dhASouY3s87h8T6JG8tTO2I1WRqlvmyzEXfiQIW3JpNSIck07oCh2VYWyg3TKH0rv90L1h32TEJg5HYnQ2m1blBaP3hYdiH4gMiEzTpdlTry3cLvUAASzTIRrH/Sw6jcYL62lwTHuiF7ZImGM2EkUkNalR2aS69B0motGPUkCgWM9UyNy92eY276JMNEtHZMYwifU7iJ+tc
X-Forefront-Antispam-Report:
	CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB03.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230031)(4636009)(396003)(136003)(376002)(346002)(39860400002)(230922051799003)(451199024)(64100799003)(1800799012)(82310400011)(186009)(40470700004)(46966006)(36840700001)(44832011)(316002)(16576012)(356005)(2906002)(40460700003)(40480700001)(54906003)(36860700001)(8936002)(36756003)(8676002)(4326008)(47076005)(86362001)(31696002)(110136005)(31686004)(5660300002)(70206006)(81166007)(70586007)(82740400003)(83380400001)(26005)(426003)(336012)(2616005)(41300700001)(478600001)(53546011)(43740500002)(36900700001);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 31 Jan 2024 12:58:23.5047
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: 7d7f2850-08df-4c44-7347-08dc225c4ee6
X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB03.amd.com]
X-MS-Exchange-CrossTenant-AuthSource:
	SN1PEPF0002529D.namprd05.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: LV8PR12MB9336

Hi Ayan,

On 31/01/2024 13:10, Ayan Kumar Halder wrote:
> From: Michal Orzel <michal.orzel@amd.com>
> 
> Currently, if user enables HVC_DCC config option in Linux, it invokes access
> to debug data transfer registers (i.e. DBGDTRTX_EL0 on arm64, DBGDTRTXINT on
> arm32). As these registers are not emulated, Xen injects an undefined
> exception to the guest and Linux crashes.
> 
> To prevent this crash, introduce a partial emulation of DBGDTR[TR]X_EL0
> (these registers share the same encoding) as RAZ/WI and MDCCSR_EL0 as TXfull.
> 
> Refer ARM DDI 0487J.a ID042523, D19.3.8, DBGDTRTX_EL0
> "If TXfull is set to 1, set DTRRX and DTRTX to UNKNOWN".
> 
> Thus, any OS is expected to read MDCCSR_EL0 and check for TXfull before
> using DBGDTRTX_EL0. Linux does it via hvc_dcc_init() ---> hvc_dcc_check(),
> and returns -ENODEV in case TXfull bit is still set after writing a test
> character. This way we prevent the guest from making use of HVC DCC as a
> console.
> 
> Signed-off-by: Michal Orzel <michal.orzel@amd.com>
> Signed-off-by: Ayan Kumar Halder <ayan.kumar.halder@amd.com>
Reviewed-by: Michal Orzel <michal.orzel@amd.com>

~Michal



From xen-devel-bounces@lists.xenproject.org Wed Jan 31 13:04:48 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 31 Jan 2024 13:04:48 +0000
Received: from list by lists.xenproject.org with outflank-mailman.674027.1048696 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rVAGh-0006lK-2C; Wed, 31 Jan 2024 13:04:43 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 674027.1048696; Wed, 31 Jan 2024 13:04:43 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rVAGg-0006lD-Vw; Wed, 31 Jan 2024 13:04:42 +0000
Received: by outflank-mailman (input) for mailman id 674027;
 Wed, 31 Jan 2024 13:04:42 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rVAGg-0006l3-6V; Wed, 31 Jan 2024 13:04:42 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rVAGg-0005PN-38; Wed, 31 Jan 2024 13:04:42 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rVAGf-00085U-PT; Wed, 31 Jan 2024 13:04:41 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rVAGf-0004rT-Oy; Wed, 31 Jan 2024 13:04:41 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=Oew3u+gRbyMnQvlRCWB/bbg+Ywtw57Ki1YWafJ0++aQ=; b=SHHjTbAl6wQy4mBxBFacee47sk
	VjMJeE5v40PDEYt5GJNBgJsz7QNh51pDUhNesAuFdoL7CFaNZP4UFdvdBllqSB7u/DijvBY4HrO7W
	VkzLRrO2HrJ3H7hgISMTpo4LYPZWlQ7nmXhZJt64TgFxofdrXap4X9/iwCLmm/ewcdv8=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184540-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [ovmf test] 184540: all pass - PUSHED
X-Osstest-Versions-This:
    ovmf=40a45b5a2be3bf886ff481d4b538d20624d02589
X-Osstest-Versions-That:
    ovmf=af6e0e728f652f496a6fb1e659617c9662f774ac
From: osstest service owner <osstest-admin@xenproject.org>
Date: Wed, 31 Jan 2024 13:04:41 +0000

flight 184540 ovmf real [real]
http://logs.test-lab.xenproject.org/osstest/logs/184540/

Perfect :-)
All tests in this flight passed as required
version targeted for testing:
 ovmf                 40a45b5a2be3bf886ff481d4b538d20624d02589
baseline version:
 ovmf                 af6e0e728f652f496a6fb1e659617c9662f774ac

Last test of basis   184538  2024-01-31 04:36:38 Z    0 days
Testing same since   184540  2024-01-31 11:12:46 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  levi.yun <yeoreum.yun@arm.com>
  Pierre Gondois <pierre.gondois@arm.com>

jobs:
 build-amd64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-amd64-amd64-xl-qemuu-ovmf-amd64                         pass    
 test-amd64-i386-xl-qemuu-ovmf-amd64                          pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Pushing revision :

To xenbits.xen.org:/home/xen/git/osstest/ovmf.git
   af6e0e728f..40a45b5a2b  40a45b5a2be3bf886ff481d4b538d20624d02589 -> xen-tested-master


From xen-devel-bounces@lists.xenproject.org Wed Jan 31 13:18:26 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 31 Jan 2024 13:18:26 +0000
Received: from list by lists.xenproject.org with outflank-mailman.674037.1048706 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rVATq-00025O-6I; Wed, 31 Jan 2024 13:18:18 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 674037.1048706; Wed, 31 Jan 2024 13:18:18 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rVATq-00025H-3M; Wed, 31 Jan 2024 13:18:18 +0000
Received: by outflank-mailman (input) for mailman id 674037;
 Wed, 31 Jan 2024 13:18:16 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=vX7o=JJ=amd.com=Michal.Orzel@srs-se1.protection.inumbo.net>)
 id 1rVATo-00025B-R5
 for xen-devel@lists.xenproject.org; Wed, 31 Jan 2024 13:18:16 +0000
Received: from NAM10-MW2-obe.outbound.protection.outlook.com
 (mail-mw2nam10on20600.outbound.protection.outlook.com
 [2a01:111:f403:2412::600])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 301e485b-c03b-11ee-8a43-1f161083a0e0;
 Wed, 31 Jan 2024 14:18:15 +0100 (CET)
Received: from MW4P221CA0015.NAMP221.PROD.OUTLOOK.COM (2603:10b6:303:8b::20)
 by MN0PR12MB6004.namprd12.prod.outlook.com (2603:10b6:208:380::17) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7249.24; Wed, 31 Jan
 2024 13:18:07 +0000
Received: from MWH0EPF000989E7.namprd02.prod.outlook.com
 (2603:10b6:303:8b:cafe::55) by MW4P221CA0015.outlook.office365.com
 (2603:10b6:303:8b::20) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7249.22 via Frontend
 Transport; Wed, 31 Jan 2024 13:18:07 +0000
Received: from SATLEXMB03.amd.com (165.204.84.17) by
 MWH0EPF000989E7.mail.protection.outlook.com (10.167.241.134) with Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.20.7249.19 via Frontend Transport; Wed, 31 Jan 2024 13:18:07 +0000
Received: from SATLEXMB04.amd.com (10.181.40.145) by SATLEXMB03.amd.com
 (10.181.40.144) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.34; Wed, 31 Jan
 2024 07:18:05 -0600
Received: from [10.252.147.188] (10.180.168.240) by SATLEXMB04.amd.com
 (10.181.40.145) with Microsoft SMTP Server id 15.1.2507.34 via Frontend
 Transport; Wed, 31 Jan 2024 07:18:03 -0600
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 301e485b-c03b-11ee-8a43-1f161083a0e0
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=b3x8H73TRcISdLm7Yj1R6uEtfLfveEOO0rSQ1XJJFU2xhGT5KEGYprLEYmDi9AROtj/e2QUfgSBGR7UhNoGJX0VL46QEtV7TK1NEiJBclmNL96wPz/uHLHpi+D+HUijeLYu0voJraFPaEegDHRIZRpKfVzw33WSwzvBiFuz/rsytnZvFLA1p0WBizDTpDdiGRBCtQvJ249b4Ob6PgASt3lh7/NKVwSgukBW4zRpF7OeJhZtvx4TGu6n7CKlA4zl6IxqGMcDHVAqK4a+X3Y4NAw6udey9ZF/vijwT2viIBcfXMP9pd5PR/9zQhdWRT+9tlr/vje7AZBjkydaFFXC8Cg==
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=9gn+7AQhiApRSVpoA8alJnK3XeP5n2uTg0s2vjdv05E=;
 b=FdcrCaLLJGkC0ZJFydTl6G10xZR9rpS7kBQUb2lzye8snW01OdyPLmLIe4Jad7neTHBoJKyPgRlOg3I3jPHUZUqLs/AhJUODxIyKMpBugdliIzLRjE52JIu6rJBR3KiikGrw7TknR5wwtVnWay0/Q/Ll3Bv5WRutUsc8iVMfx1hd9UWM3eYZj8Hn7gP06Vfy/A6yxVD0WRViHjt6d3sOvS4OA1Nk0xRdEsFNS03QnHwHVZCnwc48uWxPF3fpgwY4MJ0rjuIpPgMt8jVJtDo28hixAzeNA05GzSrs/LOYGOg2/UVcEMz5z4YsBH5+gE6RPsj8EoDx8U4T9IbFZ6VMdg==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is
 165.204.84.17) smtp.rcpttodomain=lists.xenproject.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)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=9gn+7AQhiApRSVpoA8alJnK3XeP5n2uTg0s2vjdv05E=;
 b=17GmjPzJ6p9MZ5afPFu+GkR7jDZKNheHp8UItQ3+0zZxxUxffiMFslnylWYr4misBhpOAnKh0JPRAEXu1b8SDS1sa4MZvprDtAjChLPLNLhUlHZllXbDz2CYshLGwfSB001FgZxwiQALGc/18FdDmJF+AkLYEbjbQM8urT3NcGI=
X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17)
 smtp.mailfrom=amd.com; dkim=none (message not signed)
 header.d=none;dmarc=pass action=none header.from=amd.com;
Received-SPF: Pass (protection.outlook.com: domain of amd.com designates
 165.204.84.17 as permitted sender) receiver=protection.outlook.com;
 client-ip=165.204.84.17; helo=SATLEXMB03.amd.com; pr=C
Message-ID: <7149dce0-3247-493f-8544-6a24ffd212b9@amd.com>
Date: Wed, 31 Jan 2024 14:17:57 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [XEN v4 3/3] xen/arm: arm32: Add emulation of Debug Data Transfer
 Registers
Content-Language: en-US
To: Ayan Kumar Halder <ayan.kumar.halder@amd.com>,
	<xen-devel@lists.xenproject.org>
CC: <sstabellini@kernel.org>, <stefano.stabellini@amd.com>, <julien@xen.org>,
	<Volodymyr_Babchuk@epam.com>, <bertrand.marquis@arm.com>,
	<luca.fancellu@arm.com>
References: <20240131121049.225044-1-ayan.kumar.halder@amd.com>
 <20240131121049.225044-4-ayan.kumar.halder@amd.com>
From: Michal Orzel <michal.orzel@amd.com>
In-Reply-To: <20240131121049.225044-4-ayan.kumar.halder@amd.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 7bit
X-EOPAttributedMessage: 0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: MWH0EPF000989E7:EE_|MN0PR12MB6004:EE_
X-MS-Office365-Filtering-Correlation-Id: a7da42c4-7a99-4599-e637-08dc225f1087
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam: BCL:0;
X-Microsoft-Antispam-Message-Info:
	KYtf2bpzxeM5o4EvjddMydPrjFET3yikK1ipIFrRQYLtx8NultUd9//TnD6D3KtC+4/c+DMHksxUZ7glRngPH3CMDdkYcYUcsGOv4Xa2hY6c4vwUHp3eewEBWATVBdaIooxvuDK2QbcpkckDt06/Vgd1doZDufRpe/Laez8RAvKludywqhcvnRPKnKeDUk/W0OTH4jt9KSUD4meWW/VK0LMjITI54bGQxwGEboVXek4H6qk+Go3ehDZpCav95J+bl1DT1U2MnGfr3BEZbW91+llGds0krkHzifDAkfPBQO2ngluxxIG9he/WwhGKbFu6bgHii8MrX/5KPik7EKGbUJiV+p3Pc9JGYfUk6/jpUgEKpZdPYCHQ0ser2SvL9ZXDxKO2FO3QPfvcLFzlfotDO+q+I2fdjmFR348EsMKPGLHbERBZExEN1KAWk1QpxPMwOtv+NAfGwaCH+vp1fb1oMzQldLL+kKdtSW0UUcvwex1FOzppML9M1lw53cviXn/ijjfvaZAjzhYpnJji+tPNGqmBvxjI4BUTpBuOdGaM+PPK7XbsPAtsnYLhuj5vu0htUrqW9Ik6/hxeEtj6TJW/vIryWmeFB07XguSX72O2iGYn59yHUvGykQ4d+ulI8VcbDjrLxpOHeNqtXI662TjntksaHNhXQbDKBwe2IcEG9lQ5rdTBs05cYMZT//En8oktr453+tNlcLvQDj+EumDzf8s2OOX3136JpxU6ziHO6QVTx8+IeWhay9HAOuWdim8kuhueC6fTM7kX9XKsA+3Gs28I2dO2c2IjOchpXBLXEWtH5RHNMriclClvlgUfrewD
X-Forefront-Antispam-Report:
	CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB03.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230031)(4636009)(230273577357003)(230922051799003)(230173577357003)(186009)(1800799012)(451199024)(82310400011)(40470700004)(46966006)(36840700001)(5660300002)(8676002)(4326008)(44832011)(8936002)(2906002)(31696002)(86362001)(110136005)(70586007)(70206006)(316002)(508600001)(83380400001)(36756003)(16576012)(47076005)(54906003)(36860700001)(356005)(81166007)(53546011)(6666004)(26005)(2616005)(426003)(336012)(31686004)(40460700003)(43740500002)(36900700001);DIR:OUT;SFP:1101;
X-OriginatorOrg: amd.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 31 Jan 2024 13:18:07.2784
 (UTC)
X-MS-Exchange-CrossTenant-Network-Message-Id: a7da42c4-7a99-4599-e637-08dc225f1087
X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB03.amd.com]
X-MS-Exchange-CrossTenant-AuthSource:
	MWH0EPF000989E7.namprd02.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Anonymous
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN0PR12MB6004

Hi Ayan,

On 31/01/2024 13:10, Ayan Kumar Halder wrote:
> When user enables HVC_DCC config option in Linux, it invokes access to debug
> transfer register (i.e. DBGDTRTXINT). As this register is not emulated, Xen
> injects an undefined exception to the guest and Linux crashes.
> To prevent this crash, introduce a partial emulation of DBGDTRTXINT as RAZ/WI
> and TXfull should be set to 1. So that Linux will see that TXfull is set, and
> it will not access DBGDTRTXINT.
It will access it at least once to later check if TXfull is set.

> 
> As a pre-requisite, DBGOSLSR should be emulated in the same way as its AArch64
> variant (ie OSLSR_EL1).
> This is to ensure that DBGOSLSR.OSLK is 0, thus MDSCR_EL1.TXfull is treated
> as UNK/SBZP.
For that you could just emulate it as RAZ. Instead you also set OSLM[1]. So at least
I would make it clear that you do that for consistency.

> Only MDCCSR_EL0 can be emulated (which is DBGDSCRINT on arm32). DBGDSCRINT
I would write: This way, we only need to emulate DBGDSCRINT.

> can be accessed at EL0 as DBGDSCREXT is emulated as RAZ (as DBGOSLSR.OSLK
> == 0). So, we tool the opportunity to fix the minimum EL for DBGDSCRINT.
>  DBGDSCRINT.TXfull is set to 1.
I'm not sure why you are mixing AArch64 names with AArch32 ones. It reads a bit difficult.
Furthermore, fixing lowest EL deserves a separate section.
Also s/tool/took.

> 
> Refer ARM DDI 0487J.a ID042523, G8.3.19, DBGDTRTXint
> "If TXfull is set to 1, set DTRTX to UNKNOWN".
> So, DBGDTR[TR]XINT is emulated as RAZ/WI.
> 
> Thus, any OS is expected to read DBGDSCRINT and check for TXfull before using
> DBGDTRTXINT.
> 
> Signed-off-by: Ayan Kumar Halder <ayan.kumar.halder@amd.com>
> ---
> Changes from
> 
> v1 :- 1. DBGDTR_EL0 does not emulate RXfull. This is to avoid giving the OS any
> indication that the RX buffer is full and is waiting to be read.
> 
> 2. In Arm32, DBGOSLSR is emulated. Also DBGDTRTXINT is emulated at EL0 only.
> 
> 3. Fixed the commit message and inline code comments.
> 
> v2 :- 1. Split the patch into two (separate patches for arm64 and arm32).
> 2. Fixed in line comments and style related issues.
> 3. Updated commit message to mention DBGDSCRINT handling.
> 
> v3 :- 1. The original emulation of DBGDSCRINT is retained when
> 'partial_emulation' is false.
> 
> 2. If 'partial_emulation' is false, then access to DBGDTRTXINT will
> lead to undefined exception.
> 
>  xen/arch/arm/include/asm/cpregs.h |  2 ++
>  xen/arch/arm/vcpreg.c             | 35 ++++++++++++++++++++++---------
>  2 files changed, 27 insertions(+), 10 deletions(-)
> 
> diff --git a/xen/arch/arm/include/asm/cpregs.h b/xen/arch/arm/include/asm/cpregs.h
> index 6b083de204..aec9e8f329 100644
> --- a/xen/arch/arm/include/asm/cpregs.h
> +++ b/xen/arch/arm/include/asm/cpregs.h
> @@ -75,6 +75,8 @@
>  #define DBGDIDR         p14,0,c0,c0,0   /* Debug ID Register */
>  #define DBGDSCRINT      p14,0,c0,c1,0   /* Debug Status and Control Internal */
>  #define DBGDSCREXT      p14,0,c0,c2,2   /* Debug Status and Control External */
> +#define DBGDTRRXINT     p14,0,c0,c5,0   /* Debug Data Transfer Register, Receive */
> +#define DBGDTRTXINT     p14,0,c0,c5,0   /* Debug Data Transfer Register, Transmit */
>  #define DBGVCR          p14,0,c0,c7,0   /* Vector Catch */
>  #define DBGBVR0         p14,0,c0,c0,4   /* Breakpoint Value 0 */
>  #define DBGBCR0         p14,0,c0,c0,5   /* Breakpoint Control 0 */
> diff --git a/xen/arch/arm/vcpreg.c b/xen/arch/arm/vcpreg.c
> index a2d0500704..87df4bd238 100644
> --- a/xen/arch/arm/vcpreg.c
> +++ b/xen/arch/arm/vcpreg.c
> @@ -493,11 +493,12 @@ void do_cp14_32(struct cpu_user_regs *regs, const union hsr hsr)
>       * ARMv8 (DDI 0487A.d): D1-1509 Table D1-58
>       *
>       * Unhandled:
> -     *    DBGOSLSR
>       *    DBGPRCR
>       */
>      case HSR_CPREG32(DBGOSLAR):
>          return handle_wo_wi(regs, regidx, cp32.read, hsr, 1);
> +    case HSR_CPREG32(DBGOSLSR):
> +        return handle_ro_read_val(regs, regidx, cp32.read, hsr, 1, 1U << 3);
>      case HSR_CPREG32(DBGOSDLR):
>          return handle_raz_wi(regs, regidx, cp32.read, hsr, 1);
>  
> @@ -509,8 +510,6 @@ void do_cp14_32(struct cpu_user_regs *regs, const union hsr hsr)
>       *
>       * Unhandled:
>       *    DBGDCCINT
> -     *    DBGDTRRXint
> -     *    DBGDTRTXint
>       *    DBGWFAR
>       *    DBGDTRTXext
>       *    DBGDTRRXext,
> @@ -550,10 +549,22 @@ void do_cp14_32(struct cpu_user_regs *regs, const union hsr hsr)
>  
>      case HSR_CPREG32(DBGDSCRINT):
>          /*
> -         * Read-only register. Accessible by EL0 if DBGDSCRext.UDCCdis
> -         * is set to 0, which we emulated below.
> +         * Xen doesn't expose a real (or emulated) Debug Communications
> +         * Channel (DCC) to a domain. Yet the Arm ARM implies this is not an
> +         * optional feature. So some domains may start to probe it. For
> +         * instance, the HVC_DCC driver in Linux (since f377775dc083 and at
> +         * least up to v6.7), will try to write some characters and check if
> +         * the transmit buffer has emptied. By setting TX status bit to
> +         * indicate the transmit buffer is full. This we would hint the OS
> +         * that the DCC is probably not working.
I'm a bit suprised that these messages differ. Why not to use the same text as arm64 but with
register names updated?

Other than that:
Reviewed-by: Michal Orzel <michal.orzel@amd.com>

~Michal


From xen-devel-bounces@lists.xenproject.org Wed Jan 31 14:54:32 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 31 Jan 2024 14:54:32 +0000
Received: from list by lists.xenproject.org with outflank-mailman.674062.1048729 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rVByj-00066e-83; Wed, 31 Jan 2024 14:54:17 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 674062.1048729; Wed, 31 Jan 2024 14:54:17 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rVByj-00066X-3s; Wed, 31 Jan 2024 14:54:17 +0000
Received: by outflank-mailman (input) for mailman id 674062;
 Wed, 31 Jan 2024 14:54:16 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=q596=JJ=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rVByh-00066R-VY
 for xen-devel@lists.xenproject.org; Wed, 31 Jan 2024 14:54:16 +0000
Received: from mail-wm1-x32c.google.com (mail-wm1-x32c.google.com
 [2a00:1450:4864:20::32c])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 99156081-c048-11ee-8a43-1f161083a0e0;
 Wed, 31 Jan 2024 15:54:13 +0100 (CET)
Received: by mail-wm1-x32c.google.com with SMTP id
 5b1f17b1804b1-40fafced243so13053805e9.0
 for <xen-devel@lists.xenproject.org>; Wed, 31 Jan 2024 06:54:13 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 l2-20020a05600c4f0200b0040ebfbff33csm1832617wmq.36.2024.01.31.06.54.12
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 31 Jan 2024 06:54:12 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 99156081-c048-11ee-8a43-1f161083a0e0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1706712853; x=1707317653; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=DzTqN1m7ZLlfGb8HuWhZyM4OgtgLBJGoLectBaavm4M=;
        b=Bp29OaZsD19pIanU0KIiKUiT3wEz47CPtMjKdfHR/FvnYC1++rYxaPw02HW9+b5NI7
         ICIWtUkS3xWCy5zWCsU7M0bsMiQGJRXKGDr47V6AZfiMOLkRdg4M29ZMdeOwAtYJgR8R
         u7lqbS2+suhrn3p161j3XZXr2sH+heLEcgCWu+07L8NGaLDWCbhf8E4bfTUddHCb7vC5
         qYY18kvQRfYHtz4kurj4P6ombak9J12LaGBB9zxgG+Da9v1Xn1hWaXnO7XD9JyC2XTn2
         2uZVyJw5nkS9tINwFH/es1hRsvKLMX/dCczQAIcglERK9oCyx1CmUU+bLy9y/RWpPxDA
         /Iww==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706712853; x=1707317653;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=DzTqN1m7ZLlfGb8HuWhZyM4OgtgLBJGoLectBaavm4M=;
        b=Ruq392wt4GZzYVpiT7GOKqxMkiXQPS7xEJfmfy9hpwV6CCNuill9g2XHoI7IAWuVXF
         P02UBgzqBcHthvFgNNeuCyNoCVDTdK0X0ZK2TtBJopqIgbO3QT5GGl6O+ZPq8iVN7i45
         LjJuGA4vayV1dnR8KbuRBZ2V8Mf/+2bu2MjAOKNGsSPpwoRdxHqbjiLbs9UUyuF4i734
         qhmfKqdqk2RG7RrJqqVYAxqYg9Bl+YsEU+L/3rsgKsCxmuzADIxyKxghIB0kuWl0voUn
         bEnv1aqVhvr39IeeBNya01WuO/TN5RYKSvWbjquziHphtTbCguJXzbheaeX15UszGbJ0
         YRow==
X-Gm-Message-State: AOJu0YxrOt4/13m8jJ3lY7yLa9sPxipd79uYkFw3aI/QrSvHO8yqDpTT
	aZr8b6GmtPP2rk8iGIYqpiShHPtijcxyQk4VZ+6RY4kWhw3E8kPah/AAvU/IUA==
X-Google-Smtp-Source: AGHT+IFutC55kQydBv1kZRK/PDDI7B9DI1tFsl43zkwNY6h88JV9uadZwUkAPqUKEtjVInE6F09kxA==
X-Received: by 2002:a05:600c:3b20:b0:40f:af67:5275 with SMTP id m32-20020a05600c3b2000b0040faf675275mr1589223wms.4.1706712852963;
        Wed, 31 Jan 2024 06:54:12 -0800 (PST)
X-Forwarded-Encrypted: i=0; AJvYcCVAxkZLbqkQRh3YFSPELGgcGSIS7gTzNAxeNPps0al+vYsmNRXAZaHkhfOPcG9eIdJV7tTwt5+Cqp5M8U1p1TkftycdKp+n39MUiC9HpBr3px+6cMIG/A1UIHEijNk+AVpXP6WWuTZf9K7/bYar5s9mcriAnMANlKR3/+zinj9h7xf44L8HVwdxrtIVNpep2y9LmXkKHktjT744y7s=
Message-ID: <392e3c39-e984-4e4c-8ca9-f4a2f2ea86cf@suse.com>
Date: Wed, 31 Jan 2024 15:54:11 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v7 5/7] xen/asm-generic: introduce generic device.h
Content-Language: en-US
To: Oleksii Kurochko <oleksii.kurochko@gmail.com>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>,
 George Dunlap <george.dunlap@citrix.com>, Julien Grall <julien@xen.org>,
 Stefano Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>,
 xen-devel@lists.xenproject.org
References: <cover.1706281994.git.oleksii.kurochko@gmail.com>
 <621ff5bd992ea8e6202ec03fa52c0e09aacd8f83.1706281994.git.oleksii.kurochko@gmail.com>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <621ff5bd992ea8e6202ec03fa52c0e09aacd8f83.1706281994.git.oleksii.kurochko@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 26.01.2024 16:42, Oleksii Kurochko wrote:
> Arm, PPC and RISC-V use the same device.h thereby device.h
> was moved to asm-generic.

It's not "move" anymore with the splitting off of the Arm and PPC
parts. For reasons mentioned before, I'm not exactly happy with
it not being a move anymore, but I expect you were asked to split.

> Arm's device.h was taken as a base with
> the following changes:
>  - #ifdef PCI related things.

Well, not really, with ...

>  - #ifdef ACPI related things.
>  - Rename #ifdef guards.
>  - Add SPDX tag.
>  - #ifdef CONFIG_HAS_DEVICE_TREE related things.
>  - #ifdef-ing iommu related things with CONFIG_HAS_PASSTHROUGH.
> 
> Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>
> ---
> Changes in V7:
>  - keeping DEVICE_PCI_HOSTBRIDGE available for every build based on the reply:
>     https://lore.kernel.org/xen-devel/926a5c12-7f02-42ec-92a8-1c82d060c710@xen.org/

... this. Specifically ...

> --- /dev/null
> +++ b/xen/include/asm-generic/device.h
> @@ -0,0 +1,162 @@
> +/* SPDX-License-Identifier: GPL-2.0-only */
> +#ifndef __ASM_GENERIC_DEVICE_H__
> +#define __ASM_GENERIC_DEVICE_H__
> +
> +#include <xen/stdbool.h>
> +
> +/*
> + * DEV_TYPE_MAX is currently not in use, but it was added because the enum may
> + * be empty when !HAS_DEVICE_TREE and !HAS_PCI, which could lead to
> + * a compilation error.
> + */
> +enum device_type
> +{
> +#ifdef CONFIG_HAS_DEVICE_TREE
> +    DEV_DT,
> +#endif
> +
> +#ifdef CONFIG_HAS_PCI
> +    DEV_PCI,
> +#endif

... this is now inconsistent with ...

> +    DEV_TYPE_MAX,
> +};
> +
> +enum device_class
> +{
> +    DEVICE_SERIAL,
> +    DEVICE_IOMMU,
> +    DEVICE_INTERRUPT_CONTROLLER,
> +    DEVICE_PCI_HOSTBRIDGE,

... this. Either we want PCI-related #ifdef-ary, or we don't. There
shouldn't be a mix (unless there's a good reason).

Also the use of blank lines inside the earlier enum would better be
consistent.

> +    /* Use for error */
> +    DEVICE_UNKNOWN,
> +};
> +
> +struct dev_archdata {
> +#ifdef CONFIG_HAS_PASSTHROUGH
> +    void *iommu;    /* IOMMU private data */
> +#endif
> +};
> +
> +/* struct device - The basic device structure */
> +struct device
> +{
> +    enum device_type type;
> +#ifdef CONFIG_HAS_DEVICE_TREE
> +    struct dt_device_node *of_node; /* Used by drivers imported from Linux */
> +#endif
> +    struct dev_archdata archdata;
> +#ifdef CONFIG_HAS_PASSTHROUGH
> +    struct iommu_fwspec *iommu_fwspec; /* per-device IOMMU instance data */
> +#endif
> +};
> +
> +typedef struct device device_t;
> +
> +#ifdef CONFIG_HAS_DEVICE_TREE
> +
> +#include <xen/device_tree.h>
> +
> +#define dev_is_dt(dev)  ((dev)->type == DEV_DT)
> +
> +/**
> + *  device_init - Initialize a device
> + *  @dev: device to initialize
> + *  @class: class of the device (serial, network...)
> + *  @data: specific data for initializing the device
> + *
> + *  Return 0 on success.
> + */
> +int device_init(struct dt_device_node *dev, enum device_class class,
> +                const void *data);
> +
> +/**
> + * device_get_type - Get the type of the device
> + * @dev: device to match
> + *
> + * Return the device type on success or DEVICE_ANY on failure
> + */
> +enum device_class device_get_class(const struct dt_device_node *dev);
> +
> +#define DT_DEVICE_START(_name, _namestr, _class)                    \

Would be really nice if in the course of generalization these leading
underscores would also disappear. Yes, that'll require changing two
of the names more than just to drop the underscores, to account for ...

> +static const struct device_desc __dev_desc_##_name __used           \
> +__section(".dev.info") = {                                          \
> +    .name = _namestr,                                               \
> +    .class = _class,                                                \

... these field names.

Also there's a strack backslash on the last line above.

Both comments similarly apply to the ACPI stuff further down.

> +#define DT_DEVICE_END                                               \
> +};
> +
> +#else /* !CONFIG_HAS_DEVICE_TREE */
> +#define dev_is_dt(dev) ((void)(dev), false)
> +#endif /* CONFIG_HAS_DEVICE_TREE */
> +
> +#ifdef CONFIG_HAS_PCI
> +#define dev_is_pci(dev) ((dev)->type == DEV_PCI)
> +#else
> +#define dev_is_pci(dev) ((void)(dev), false)
> +#endif
> +
> +struct device_desc {
> +    /* Device name */
> +    const char *name;
> +    /* Device class */
> +    enum device_class class;
> +
> +#ifdef CONFIG_HAS_DEVICE_TREE
> +
> +    /* List of devices supported by this driver */
> +    const struct dt_device_match *dt_match;
> +    /*
> +     * Device initialization.
> +     *
> +     * -EAGAIN is used to indicate that device probing is deferred.
> +     */
> +    int (*init)(struct dt_device_node *dev, const void *data);
> +
> +#endif
> +};
> +
> +#ifdef CONFIG_ACPI
> +
> +struct acpi_device_desc {
> +    /* Device name */
> +    const char *name;
> +    /* Device class */
> +    enum device_class class;

I understand it's this way on Arm right now, and I'm also not going
to insist that you do anything about it right here, but it's still
odd that struct device_desc doesn't simply have a union to cover for
both DT and ACPI.

Jan


From xen-devel-bounces@lists.xenproject.org Wed Jan 31 14:56:53 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 31 Jan 2024 14:56:53 +0000
Received: from list by lists.xenproject.org with outflank-mailman.674065.1048738 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rVC1E-0006dQ-J2; Wed, 31 Jan 2024 14:56:52 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 674065.1048738; Wed, 31 Jan 2024 14:56:52 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rVC1E-0006dJ-GR; Wed, 31 Jan 2024 14:56:52 +0000
Received: by outflank-mailman (input) for mailman id 674065;
 Wed, 31 Jan 2024 14:56:51 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=q596=JJ=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rVC1D-0006dB-9F
 for xen-devel@lists.xenproject.org; Wed, 31 Jan 2024 14:56:51 +0000
Received: from mail-wr1-x434.google.com (mail-wr1-x434.google.com
 [2a00:1450:4864:20::434])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id f5a71743-c048-11ee-98f5-efadbce2ee36;
 Wed, 31 Jan 2024 15:56:48 +0100 (CET)
Received: by mail-wr1-x434.google.com with SMTP id
 ffacd0b85a97d-33ae4205ad8so3018950f8f.2
 for <xen-devel@lists.xenproject.org>; Wed, 31 Jan 2024 06:56:48 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 v2-20020a5d6b02000000b0033ae7d768b2sm9918523wrw.117.2024.01.31.06.56.47
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 31 Jan 2024 06:56:47 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: f5a71743-c048-11ee-98f5-efadbce2ee36
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1706713008; x=1707317808; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=IyJ6ZLYSM83Rh1dcoTjIKCMTlK7oARSpY4Q5iYBd5AA=;
        b=GPvy34zteg0uWKfHWdyyC6A+ordM04CVBT+M12pK5CvUJAHJ5UPDLtnlUYFCCW+ZAk
         iNjqJm+zpfy7nW07OmPy4X8Ur3+fdqGVgQbTHDmlzDpcCjnmAlqkZIgQb6AfrSwA9qGC
         BgBykHEH2m31Xgr2VEwqRdkITBPePYLdOcJrUHhHYzJfHeES/qYHoXj2ysfyLAbT0YGw
         nD8ekjx07OPMlEIPRV+x+1yFVDS/xgeAVWX1Y+tm/DnsXh9L8wvpfUZgzJI6BI6Kfypw
         IjXYg+UpYxa1d1Vi10NmxK6Ipw8SROT/BXEh6UT2XeFHu9ld+Y6CkLzmTsBiAHtRN0ly
         mLxA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706713008; x=1707317808;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=IyJ6ZLYSM83Rh1dcoTjIKCMTlK7oARSpY4Q5iYBd5AA=;
        b=kzgvVZDdJJw8y+Q8mh+aoLaIWYBSX8eZcOF50HNSBa4ouG6pUm0C9lHdHsHPQ88HOI
         OVwW8kl3yXL6Belfuy8HBfn8C7BGPzYq/5az/Ihb+spS5lIH2xUCN3BB4218XsXVYVn4
         HIUE+rfwE89usRWn5l61tzMuqU9zdlsRAvE0//wWfvwjX0FSbxaIw2W30BppqE7hX/sm
         Ifg0yTLwJcJj3OQ2BctYV+ozp1MR0jApivQjU47S+a/Tm4qYS0yGe0oNa1AVyWTY/XAq
         B5QAle2/hjtPJpkmr0Y7ovx+pFoz/5peDyhzxmU8euUH4siwe/bLqGKWALP89RpwFu6w
         RiBA==
X-Gm-Message-State: AOJu0Yy+bPaf4l5tVpBpL5XhgmquYXUBC86WxR/bjcOtSHzKeFHTc5On
	mLnWPobOGtqm8b5OuIQ9oyeoZGqlfVKlJysccbZAVlWqCqctf4A6YQ7yMm9BJQ==
X-Google-Smtp-Source: AGHT+IHshHuNXNHu3vhGy6mtGAiAaF0zVZop0Hk7EJWE0XMAfmXFk5DTFVz8l0fTBr32VRRXILdGNg==
X-Received: by 2002:a5d:5150:0:b0:33a:e8be:51bd with SMTP id u16-20020a5d5150000000b0033ae8be51bdmr1318078wrt.51.1706713008199;
        Wed, 31 Jan 2024 06:56:48 -0800 (PST)
X-Forwarded-Encrypted: i=0; AJvYcCU+mQtfjcLs0VmznGCNzmEI7ECP0SrDFiqu5X2vhfJZGXXOJpi/cQNZ1pjF5kagJ4jmPEsQ/EZqFJnIVFtLOFP7jF9z6M5chnvBwlyvDK3bHZkEuyH0VobHEjmpy5jRVWxtil6Y8juYpUaCZi6KGSuAW08jQHFRHUqYto2KCAaHAXLUxkzSbWOKmRKw8QR+0p5kzchIMJbk7rNOD5DpCgbbuk07p8TGBKJE8g==
Message-ID: <fdbfe86f-3b7c-4e35-90dc-ac64ee94fcd1@suse.com>
Date: Wed, 31 Jan 2024 15:56:46 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v7 6/7] xen/arm: switch Arm to use asm-generic/device.h
Content-Language: en-US
To: Oleksii Kurochko <oleksii.kurochko@gmail.com>
Cc: Stefano Stabellini <sstabellini@kernel.org>, Julien Grall
 <julien@xen.org>, Bertrand Marquis <bertrand.marquis@arm.com>,
 Michal Orzel <michal.orzel@amd.com>,
 Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>,
 xen-devel@lists.xenproject.org
References: <cover.1706281994.git.oleksii.kurochko@gmail.com>
 <d5d2b0515516f0554a0532ff4d4fbd9c704e0a1b.1706281994.git.oleksii.kurochko@gmail.com>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <d5d2b0515516f0554a0532ff4d4fbd9c704e0a1b.1706281994.git.oleksii.kurochko@gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 26.01.2024 16:42, Oleksii Kurochko wrote:
> Signed-off-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>

I'm not an Arm maintainer, but if I was I wouldn't let you get away with
an empty description here. Specifically at least ...

> --- a/xen/arch/arm/device.c
> +++ b/xen/arch/arm/device.c
> @@ -16,7 +16,10 @@
>  #include <xen/lib.h>
>  
>  extern const struct device_desc _sdevice[], _edevice[];
> +
> +#ifdef CONFIG_ACPI
>  extern const struct acpi_device_desc _asdevice[], _aedevice[];
> +#endif
>  
>  int __init device_init(struct dt_device_node *dev, enum device_class class,
>                         const void *data)
> @@ -45,6 +48,7 @@ int __init device_init(struct dt_device_node *dev, enum device_class class,
>      return -EBADF;
>  }
>  
> +#ifdef CONFIG_ACPI
>  int __init acpi_device_init(enum device_class class, const void *data, int class_type)
>  {
>      const struct acpi_device_desc *desc;
> @@ -61,6 +65,7 @@ int __init acpi_device_init(enum device_class class, const void *data, int class
>  
>      return -EBADF;
>  }
> +#endif

... this new #ifdef-ary would want justifying, imo.

Jan


From xen-devel-bounces@lists.xenproject.org Wed Jan 31 15:18:52 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 31 Jan 2024 15:18:52 +0000
Received: from list by lists.xenproject.org with outflank-mailman.674073.1048748 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rVCMR-0002Yv-BH; Wed, 31 Jan 2024 15:18:47 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 674073.1048748; Wed, 31 Jan 2024 15:18:47 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rVCMR-0002Yo-8i; Wed, 31 Jan 2024 15:18:47 +0000
Received: by outflank-mailman (input) for mailman id 674073;
 Wed, 31 Jan 2024 15:18:46 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=oSjc=JJ=suse.com=jgross@srs-se1.protection.inumbo.net>)
 id 1rVCMQ-0002Yi-84
 for xen-devel@lists.xenproject.org; Wed, 31 Jan 2024 15:18:46 +0000
Received: from smtp-out1.suse.de (smtp-out1.suse.de [195.135.223.130])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 061e7cb4-c04c-11ee-8a43-1f161083a0e0;
 Wed, 31 Jan 2024 16:18:45 +0100 (CET)
Received: from imap1.dmz-prg2.suse.org (imap1.dmz-prg2.suse.org [10.150.64.97])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
 (No client certificate requested)
 by smtp-out1.suse.de (Postfix) with ESMTPS id 673F022020;
 Wed, 31 Jan 2024 15:18:44 +0000 (UTC)
Received: from imap1.dmz-prg2.suse.org (localhost [127.0.0.1])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
 (No client certificate requested)
 by imap1.dmz-prg2.suse.org (Postfix) with ESMTPS id 2637E1347F;
 Wed, 31 Jan 2024 15:18:44 +0000 (UTC)
Received: from dovecot-director2.suse.de ([10.150.64.162])
 by imap1.dmz-prg2.suse.org with ESMTPSA id ASmJB9RkumV7IAAAD6G6ig
 (envelope-from <jgross@suse.com>); Wed, 31 Jan 2024 15:18:44 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 061e7cb4-c04c-11ee-8a43-1f161083a0e0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1706714324; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:content-type:content-type:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=da7q3omMJZdg7zQAbipKjTn0BkqeSkCKqBqcjkiOk0Y=;
	b=XMiOIyawMxg1uzYHEkP3LN2WgdXQImhzTh0mv+cwSvIoSt+Z8Zg2Flooc0Ho/RGVY0kPRD
	qxzEOb0NFwSC4/p1sxuSvgwXMUw4O7idGnM2tZNTJxHBIDTIgAdb54jyDkG6JBiaKGGTTu
	9PQlls4rNvjkoqdLtLW8vlgKZz0fHUs=
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1706714324; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:content-type:content-type:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=da7q3omMJZdg7zQAbipKjTn0BkqeSkCKqBqcjkiOk0Y=;
	b=XMiOIyawMxg1uzYHEkP3LN2WgdXQImhzTh0mv+cwSvIoSt+Z8Zg2Flooc0Ho/RGVY0kPRD
	qxzEOb0NFwSC4/p1sxuSvgwXMUw4O7idGnM2tZNTJxHBIDTIgAdb54jyDkG6JBiaKGGTTu
	9PQlls4rNvjkoqdLtLW8vlgKZz0fHUs=
Message-ID: <b44e2775-c396-428f-91d2-427691509a37@suse.com>
Date: Wed, 31 Jan 2024 16:18:43 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 16/33] tools/libs/light: add backend type for 9pfs PV
 devices
Content-Language: en-US
To: Anthony PERARD <anthony.perard@citrix.com>
Cc: xen-devel@lists.xenproject.org, George Dunlap <george.dunlap@citrix.com>,
 Nick Rosbrook <rosbrookn@gmail.com>, Wei Liu <wl@xen.org>,
 Jason Andryuk <jandryuk@gmail.com>
References: <20240104090055.27323-1-jgross@suse.com>
 <20240104090055.27323-17-jgross@suse.com>
 <2a2f50d3-f065-4b03-b75d-401a40fcb6fd@perard>
From: =?UTF-8?B?SsO8cmdlbiBHcm/Dnw==?= <jgross@suse.com>
In-Reply-To: <2a2f50d3-f065-4b03-b75d-401a40fcb6fd@perard>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
Authentication-Results: smtp-out1.suse.de;
	none
X-Spam-Level: 
X-Spam-Score: -3.70
X-Spamd-Result: default: False [-3.70 / 50.00];
	 ARC_NA(0.00)[];
	 RCVD_VIA_SMTP_AUTH(0.00)[];
	 XM_UA_NO_VERSION(0.01)[];
	 FROM_HAS_DN(0.00)[];
	 TO_DN_SOME(0.00)[];
	 FREEMAIL_ENVRCPT(0.00)[gmail.com];
	 TO_MATCH_ENVRCPT_ALL(0.00)[];
	 MIME_GOOD(-0.10)[text/plain];
	 NEURAL_HAM_LONG(-1.00)[-1.000];
	 RCPT_COUNT_FIVE(0.00)[6];
	 RCVD_COUNT_THREE(0.00)[3];
	 DKIM_SIGNED(0.00)[suse.com:s=susede1];
	 NEURAL_HAM_SHORT(-0.20)[-1.000];
	 BAYES_HAM(-3.00)[100.00%];
	 FUZZY_BLOCKED(0.00)[rspamd.com];
	 FROM_EQ_ENVFROM(0.00)[];
	 MIME_TRACE(0.00)[0:+];
	 R_MIXED_CHARSET(0.59)[subject];
	 FREEMAIL_CC(0.00)[lists.xenproject.org,citrix.com,gmail.com,xen.org];
	 RCVD_TLS_ALL(0.00)[];
	 MID_RHS_MATCH_FROM(0.00)[]
X-Spam-Flag: NO

On 12.01.24 17:55, Anthony PERARD wrote:
> On Thu, Jan 04, 2024 at 10:00:38AM +0100, Juergen Gross wrote:
>> diff --git a/tools/libs/light/libxl_9pfs.c b/tools/libs/light/libxl_9pfs.c
>> index 5ab0d3aa21..486bc4326e 100644
>> --- a/tools/libs/light/libxl_9pfs.c
>> +++ b/tools/libs/light/libxl_9pfs.c
>> @@ -33,20 +33,159 @@ static int libxl__set_xenstore_p9(libxl__gc *gc, uint32_t domid,
>>   
>>       flexarray_append_pair(front, "tag", p9->tag);
>>   
>> +    if (p9->type == LIBXL_P9_TYPE_XEN_9PFSD) {
>> +        flexarray_append_pair(back, "max-space",
>> +                              GCSPRINTF("%u", p9->max_space));
>> +        flexarray_append_pair(back, "max-files",
>> +                              GCSPRINTF("%u", p9->max_files));
>> +        flexarray_append_pair(back, "max-open-files",
>> +                              GCSPRINTF("%u", p9->max_open_files));
>> +        flexarray_append_pair(back, "auto-delete",
>> +                              p9->auto_delete ? "1" : "0");
>> +    }
>> +
>> +    return 0;
>> +}
>> +
>> +static int libxl__device_from_p9(libxl__gc *gc, uint32_t domid,
>> +                                 libxl_device_p9 *type, libxl__device *device)
>> +{
>> +    device->backend_devid   = type->devid;
>> +    device->backend_domid   = type->backend_domid;
>> +    device->backend_kind    = type->type == LIBXL_P9_TYPE_QEMU
>> +                              ? LIBXL__DEVICE_KIND_9PFS
>> +                              : LIBXL__DEVICE_KIND_XEN_9PFS;
>> +    device->devid           = type->devid;
>> +    device->domid           = domid;
>> +    device->kind            = LIBXL__DEVICE_KIND_9PFS;
>> +
>>       return 0;
>>   }
>>   
>> -#define libxl__add_p9s NULL
>> +static int libxl_device_p9_dm_needed(void *e, unsigned domid)
> 
> Prefix of the function should be "libxl__" as it's only internal to
> libxl.

Okay.

> 
>> +{
>> +    libxl_device_p9 *elem = e;
>> +
>> +    return elem->type == LIBXL_P9_TYPE_QEMU && elem->backend_domid == domid;
>> +}
>> +
>> +typedef struct libxl__aop9_state libxl__aop9_state;
>> +
>> +struct libxl__aop9_state {
>> +    libxl__spawn_state spawn;
>> +    libxl__ao_device *aodev;
>> +    libxl_device_p9 *p9;
>> +    uint32_t domid;
>> +    void (*callback)(libxl__egc *, libxl__aop9_state *, int);
>> +};
>> +
>> +static void xen9pfsd_spawn_outcome(libxl__egc *egc, libxl__aop9_state *aop9,
>> +                                   int rc)
>> +{
>> +    aop9->aodev->rc = rc;
>> +    if (rc)
>> +        aop9->aodev->callback(egc, aop9->aodev);
>> +    else
>> +        libxl__device_add_async(egc, aop9->domid, &libxl__p9_devtype,
>> +                                aop9->p9, aop9->aodev);
>> +}
>> +
>> +static void xen9pfsd_confirm(libxl__egc *egc, libxl__spawn_state *spawn,
>> +                             const char *xsdata)
>> +{
>> +    STATE_AO_GC(spawn->ao);
>> +
>> +    if (!xsdata)
>> +        return;
>> +
>> +    if (strcmp(xsdata, "running"))
>> +        return;
>> +
>> +    libxl__spawn_initiate_detach(gc, spawn);
>> +}
>> +
>> +static void xen9pfsd_failed(libxl__egc *egc, libxl__spawn_state *spawn, int rc)
>> +{
>> +    libxl__aop9_state *aop9 = CONTAINER_OF(spawn, *aop9, spawn);
>> +
>> +    xen9pfsd_spawn_outcome(egc, aop9, rc);
>> +}
>> +
>> +static void xen9pfsd_detached(libxl__egc *egc, libxl__spawn_state *spawn)
>> +{
>> +    libxl__aop9_state *aop9 = CONTAINER_OF(spawn, *aop9, spawn);
>> +
>> +    xen9pfsd_spawn_outcome(egc, aop9, 0);
>> +}
>> +
>> +static int xen9pfsd_spawn(libxl__egc *egc, uint32_t domid, libxl_device_p9 *p9,
>> +                         libxl__ao_device *aodev)
>> +{
>> +    STATE_AO_GC(aodev->ao);
>> +    struct libxl__aop9_state *aop9;
>> +    int rc;
>> +    char *args[] = { "xen-9pfsd", NULL };
>> +    char *path = GCSPRINTF("/local/domain/%u/libxl/xen-9pfs",
>> +                           p9->backend_domid);
>> +
>> +    if (p9->type != LIBXL_P9_TYPE_XEN_9PFSD ||
>> +        libxl__xs_read(gc, XBT_NULL, GCSPRINTF("%s/state", path)))
> 
> I feel like this check and this function might not work as expected.
> What happen if we try to add more than one 9pfs "device"? libxl I think
> is going to try to start several xen-9pfs daemon before the first one
> have had time to write the "*/state" path.

I don't think so. The path is specific for the _backend_ domid.

> What about two different libxl process trying to spawn that daemon? Is
> xen-9pfs going to behave well and have one giveup? But that would
> probably mean that libxl is going to have an error due to the process
> exiting early, maybe.

I think I need to handle this case gracefully in the daemon by exiting with
a 0 exit code.

> 
>> +        return 0;
>> +
>> +    GCNEW(aop9);
>> +    aop9->aodev = aodev;
>> +    aop9->p9 = p9;
>> +    aop9->domid = domid;
>> +    aop9->callback = xen9pfsd_spawn_outcome;
>> +
>> +    aop9->spawn.ao = aodev->ao;
>> +    aop9->spawn.what = "xen-9pfs daemon";
>> +    aop9->spawn.xspath = GCSPRINTF("%s/state", path);
>> +    aop9->spawn.timeout_ms = LIBXL_DEVICE_MODEL_START_TIMEOUT * 1000;
>> +    aop9->spawn.pidpath = GCSPRINTF("%s/pid", path);
>> +    aop9->spawn.midproc_cb = libxl__spawn_record_pid;
>> +    aop9->spawn.confirm_cb = xen9pfsd_confirm;
>> +    aop9->spawn.failure_cb = xen9pfsd_failed;
>> +    aop9->spawn.detached_cb = xen9pfsd_detached;
>> +    rc = libxl__spawn_spawn(egc, &aop9->spawn);
>> +    if (rc < 0)
>> +        return rc;
>> +    if (!rc) {
>> +        setsid();
>> +        libxl__exec(gc, -1, -1, -1, LIBEXEC_BIN "/xen-9pfsd", args, NULL);
>> +    }
>> +
>> +    return 1;
>> +}
> 
> Could you reorder the file, to make it easier to follow the code of
> the async style? "xen9pfsd_spawn()" should be first, followed by
> _confirm() _failed and _detached() and finally xen9pfsd_spawn_outcome().

This would need to add some forward declarations. If you really are fine with
that, I can do the reordering.

> 
>> +
>> +static void libxl__device_p9_add(libxl__egc *egc, uint32_t domid,
>> +                                 libxl_device_p9 *p9,
>> +                                 libxl__ao_device *aodev)
>> +{
>> +    int rc;
>> +
>> +    rc = xen9pfsd_spawn(egc, domid, p9, aodev);
>> +    if (rc == 1)
> 
> I'd like a comment about what's different about rc==1 vs rc==0, here or
> in the function xen9pfsd_spawn. These functions that sometime setup a
> callback (or actually call it) and sometime don't, make things harder to
> follow.

Okay.

> 
> Or maybe we could rewrite things a bit so that there's only one function
> that calls libxl__device_add_async(). But the current
> libxl__device_p9_add() is kind of ok, with additional comments.
> 
>> +        return;
>> +
>> +    if (rc == 0)
>> +        libxl__device_add_async(egc, domid, &libxl__p9_devtype, p9, aodev);
>> +
>> +    aodev->rc = rc;
>> +    if (rc)
>> +        aodev->callback(egc, aodev);
>> +}
>> +
>>   #define libxl_device_p9_list NULL
>>   #define libxl_device_p9_compare NULL
>>   
>>   static LIBXL_DEFINE_UPDATE_DEVID(p9)
>> -static LIBXL_DEFINE_DEVICE_FROM_TYPE(p9)
>> +static LIBXL_DEFINE_DEVICES_ADD(p9)
>>   
>>   LIBXL_DEFINE_DEVICE_REMOVE(p9)
>>   
>>   DEFINE_DEVICE_TYPE_STRUCT(p9, 9PFS, p9s,
>> -    .skip_attach = 1,
>>       .set_xenstore_config = (device_set_xenstore_config_fn_t)
>>                              libxl__set_xenstore_p9,
>> +    .dm_needed = libxl_device_p9_dm_needed,
>>   );
>> diff --git a/tools/libs/light/libxl_types.idl b/tools/libs/light/libxl_types.idl
>> index 7d8bd5d216..82565c4c10 100644
>> --- a/tools/libs/light/libxl_types.idl
>> +++ b/tools/libs/light/libxl_types.idl
>> @@ -150,6 +150,12 @@ libxl_nic_type = Enumeration("nic_type", [
>>       (2, "VIF"),
>>       ])
>>   
>> +libxl_p9_type = Enumeration("p9_type", [
>> +    (0, "unknown"),
>> +    (1, "qemu"),
>> +    (2, "xen_9pfsd"),
>> +    ])
>> +
>>   libxl_action_on_shutdown = Enumeration("action_on_shutdown", [
>>       (1, "DESTROY"),
>>   
>> @@ -942,6 +948,11 @@ libxl_device_p9 = Struct("device_p9", [
>>       ("path",             string),
>>       ("security_model",   string),
>>       ("devid",            libxl_devid),
>> +    ("type",             libxl_p9_type),
>> +    ("max_space",        integer),
>> +    ("max_files",        integer),
>> +    ("max_open_files",   integer),
>> +    ("auto_delete",      bool),
> 
> These additional fields and options probably a
> LIBXL_HAVE_XEN_9PFS macro in libxl.h.

Okay, I'll add it.


Juergen


From xen-devel-bounces@lists.xenproject.org Wed Jan 31 15:19:59 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 31 Jan 2024 15:19:59 +0000
Received: from list by lists.xenproject.org with outflank-mailman.674075.1048759 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rVCNZ-0003Ph-Pf; Wed, 31 Jan 2024 15:19:57 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 674075.1048759; Wed, 31 Jan 2024 15:19:57 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rVCNZ-0003PW-Ll; Wed, 31 Jan 2024 15:19:57 +0000
Received: by outflank-mailman (input) for mailman id 674075;
 Wed, 31 Jan 2024 15:19:55 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=oSjc=JJ=suse.com=jgross@srs-se1.protection.inumbo.net>)
 id 1rVCNX-0003Ng-Tb
 for xen-devel@lists.xenproject.org; Wed, 31 Jan 2024 15:19:55 +0000
Received: from smtp-out1.suse.de (smtp-out1.suse.de [195.135.223.130])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 2f0b45d9-c04c-11ee-98f5-efadbce2ee36;
 Wed, 31 Jan 2024 16:19:53 +0100 (CET)
Received: from imap1.dmz-prg2.suse.org (imap1.dmz-prg2.suse.org [10.150.64.97])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
 (No client certificate requested)
 by smtp-out1.suse.de (Postfix) with ESMTPS id 3FBE121A56;
 Wed, 31 Jan 2024 15:19:53 +0000 (UTC)
Received: from imap1.dmz-prg2.suse.org (localhost [127.0.0.1])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
 (No client certificate requested)
 by imap1.dmz-prg2.suse.org (Postfix) with ESMTPS id 055831347F;
 Wed, 31 Jan 2024 15:19:52 +0000 (UTC)
Received: from dovecot-director2.suse.de ([10.150.64.162])
 by imap1.dmz-prg2.suse.org with ESMTPSA id wM6gORhlumV7IAAAD6G6ig
 (envelope-from <jgross@suse.com>); Wed, 31 Jan 2024 15:19:52 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 2f0b45d9-c04c-11ee-98f5-efadbce2ee36
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1706714393; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:content-type:content-type:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=EPL7nyA7nFtEaIFktwT7WMryMbyLSJf90f+aEhtF5jI=;
	b=pmqsUJmosiLNelqChUYplkqg+9h6th7ZF+s+58qid7Wtlj5Ami5I56BsYzGw8hMBd4bdg6
	a12sGOGJ1c1cTbYCNkdoMcn2bkT2enxyvfehVWZSTX0XJu37998KGdUhuQtphG6FlsoIA7
	C/EQXNwteSS9YXnVNhzbIBbvElzY19c=
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1706714393; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:content-type:content-type:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=EPL7nyA7nFtEaIFktwT7WMryMbyLSJf90f+aEhtF5jI=;
	b=pmqsUJmosiLNelqChUYplkqg+9h6th7ZF+s+58qid7Wtlj5Ami5I56BsYzGw8hMBd4bdg6
	a12sGOGJ1c1cTbYCNkdoMcn2bkT2enxyvfehVWZSTX0XJu37998KGdUhuQtphG6FlsoIA7
	C/EQXNwteSS9YXnVNhzbIBbvElzY19c=
Message-ID: <aeb56f66-c80b-468b-82cf-3576af65b8c0@suse.com>
Date: Wed, 31 Jan 2024 16:19:52 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 16/33] tools/libs/light: add backend type for 9pfs PV
 devices
Content-Language: en-US
To: Anthony PERARD <anthony.perard@citrix.com>
Cc: xen-devel@lists.xenproject.org, George Dunlap <george.dunlap@citrix.com>,
 Nick Rosbrook <rosbrookn@gmail.com>, Wei Liu <wl@xen.org>,
 Jason Andryuk <jandryuk@gmail.com>
References: <20240104090055.27323-1-jgross@suse.com>
 <20240104090055.27323-17-jgross@suse.com>
 <cfecc01a-b4c7-4b21-833f-d9ebcea8a89e@perard>
From: =?UTF-8?B?SsO8cmdlbiBHcm/Dnw==?= <jgross@suse.com>
In-Reply-To: <cfecc01a-b4c7-4b21-833f-d9ebcea8a89e@perard>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
Authentication-Results: smtp-out1.suse.de;
	none
X-Spamd-Result: default: False [-0.63 / 50.00];
	 ARC_NA(0.00)[];
	 RCVD_VIA_SMTP_AUTH(0.00)[];
	 XM_UA_NO_VERSION(0.01)[];
	 FROM_HAS_DN(0.00)[];
	 TO_DN_SOME(0.00)[];
	 FREEMAIL_ENVRCPT(0.00)[gmail.com];
	 TO_MATCH_ENVRCPT_ALL(0.00)[];
	 MIME_GOOD(-0.10)[text/plain];
	 RCPT_COUNT_FIVE(0.00)[6];
	 RCVD_COUNT_THREE(0.00)[3];
	 DKIM_SIGNED(0.00)[suse.com:s=susede1];
	 BAYES_HAM(-1.12)[88.45%];
	 FUZZY_BLOCKED(0.00)[rspamd.com];
	 FROM_EQ_ENVFROM(0.00)[];
	 MIME_TRACE(0.00)[0:+];
	 R_MIXED_CHARSET(0.59)[subject];
	 FREEMAIL_CC(0.00)[lists.xenproject.org,citrix.com,gmail.com,xen.org];
	 RCVD_TLS_ALL(0.00)[];
	 MID_RHS_MATCH_FROM(0.00)[]
X-Spam-Level: 
X-Spam-Flag: NO
X-Spam-Score: -0.63

On 15.01.24 16:38, Anthony PERARD wrote:
> On Thu, Jan 04, 2024 at 10:00:38AM +0100, Juergen Gross wrote:
>> +static void libxl__device_p9_add(libxl__egc *egc, uint32_t domid,
>> +                                 libxl_device_p9 *p9,
>> +                                 libxl__ao_device *aodev)
>> +{
>> +    int rc;
> 
> Can you make a copy of `p9` here, or maybe in xen9pfsd_spawn? There's no
> guaranty that `p9` will still be around by the time
> xen9pfsd_spawn_outcome() is executed.
> 
> (with libxl_device_p9_copy())

Okay.

> 
>> +    rc = xen9pfsd_spawn(egc, domid, p9, aodev);
>> +    if (rc == 1)
>> +        return;
>> +
>> +    if (rc == 0)
>> +        libxl__device_add_async(egc, domid, &libxl__p9_devtype, p9, aodev);
>> +
>> +    aodev->rc = rc;
>> +    if (rc)
>> +        aodev->callback(egc, aodev);
>> +}
>> +


Juergen



From xen-devel-bounces@lists.xenproject.org Wed Jan 31 15:20:42 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 31 Jan 2024 15:20:42 +0000
Received: from list by lists.xenproject.org with outflank-mailman.674076.1048768 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rVCOI-0004oG-2J; Wed, 31 Jan 2024 15:20:42 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 674076.1048768; Wed, 31 Jan 2024 15:20:42 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rVCOH-0004o9-Vc; Wed, 31 Jan 2024 15:20:41 +0000
Received: by outflank-mailman (input) for mailman id 674076;
 Wed, 31 Jan 2024 15:20:41 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=oSjc=JJ=suse.com=jgross@srs-se1.protection.inumbo.net>)
 id 1rVCOH-0004ny-D7
 for xen-devel@lists.xenproject.org; Wed, 31 Jan 2024 15:20:41 +0000
Received: from smtp-out1.suse.de (smtp-out1.suse.de [195.135.223.130])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 4b01f6fa-c04c-11ee-8a43-1f161083a0e0;
 Wed, 31 Jan 2024 16:20:40 +0100 (CET)
Received: from imap1.dmz-prg2.suse.org (imap1.dmz-prg2.suse.org
 [IPv6:2a07:de40:b281:104:10:150:64:97])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
 (No client certificate requested)
 by smtp-out1.suse.de (Postfix) with ESMTPS id 24FD021A5C;
 Wed, 31 Jan 2024 15:20:40 +0000 (UTC)
Received: from imap1.dmz-prg2.suse.org (localhost [127.0.0.1])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
 (No client certificate requested)
 by imap1.dmz-prg2.suse.org (Postfix) with ESMTPS id EAF6A1347F;
 Wed, 31 Jan 2024 15:20:39 +0000 (UTC)
Received: from dovecot-director2.suse.de ([10.150.64.162])
 by imap1.dmz-prg2.suse.org with ESMTPSA id 6M07NkdlumV7IAAAD6G6ig
 (envelope-from <jgross@suse.com>); Wed, 31 Jan 2024 15:20:39 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 4b01f6fa-c04c-11ee-8a43-1f161083a0e0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1706714440; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:content-type:content-type:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=M/LRVMX5IE5IqJkFCbeIi3EdRR7kyRiKJSQ+VftHkTE=;
	b=Q7NcVH+toiLY+5GUaPF1GwCAUbzKAxpU7HOMi8K7920IKYVY/Wz2hp/6JZzs7B8kQolUzE
	rA+nYSRTHoa0tpc4VPnnsFaPzd0Zvufh/vhGegwNgbRYAquPCbOmgjMgrTz9FBWR333mvc
	mp3CE0vddMyoSTB2f75ZhxkQTez1oME=
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1;
	t=1706714440; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:
	 mime-version:mime-version:content-type:content-type:
	 content-transfer-encoding:content-transfer-encoding:
	 in-reply-to:in-reply-to:references:references;
	bh=M/LRVMX5IE5IqJkFCbeIi3EdRR7kyRiKJSQ+VftHkTE=;
	b=Q7NcVH+toiLY+5GUaPF1GwCAUbzKAxpU7HOMi8K7920IKYVY/Wz2hp/6JZzs7B8kQolUzE
	rA+nYSRTHoa0tpc4VPnnsFaPzd0Zvufh/vhGegwNgbRYAquPCbOmgjMgrTz9FBWR333mvc
	mp3CE0vddMyoSTB2f75ZhxkQTez1oME=
Message-ID: <3ce7fa13-fb64-438d-ba7d-455e2b42854b@suse.com>
Date: Wed, 31 Jan 2024 16:20:39 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 17/33] tools/xl: support new 9pfs backend xen-9pfsd
Content-Language: en-US
To: Anthony PERARD <anthony.perard@citrix.com>
Cc: xen-devel@lists.xenproject.org, Wei Liu <wl@xen.org>,
 Jason Andryuk <jandryuk@gmail.com>
References: <20240104090055.27323-1-jgross@suse.com>
 <20240104090055.27323-18-jgross@suse.com>
 <43cb6d28-34da-47b9-b61f-0be8298f9d8b@perard>
From: =?UTF-8?B?SsO8cmdlbiBHcm/Dnw==?= <jgross@suse.com>
In-Reply-To: <43cb6d28-34da-47b9-b61f-0be8298f9d8b@perard>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-Spam-Level: 
Authentication-Results: smtp-out1.suse.de;
	dkim=pass header.d=suse.com header.s=susede1 header.b=Q7NcVH+t
X-Rspamd-Server: rspamd2.dmz-prg2.suse.org
X-Spamd-Result: default: False [-5.32 / 50.00];
	 RCVD_VIA_SMTP_AUTH(0.00)[];
	 XM_UA_NO_VERSION(0.01)[];
	 SPAMHAUS_XBL(0.00)[2a07:de40:b281:104:10:150:64:97:from];
	 TO_DN_SOME(0.00)[];
	 RCVD_COUNT_THREE(0.00)[3];
	 DKIM_TRACE(0.00)[suse.com:+];
	 MX_GOOD(-0.01)[];
	 NEURAL_HAM_SHORT(-0.20)[-1.000];
	 FROM_EQ_ENVFROM(0.00)[];
	 MIME_TRACE(0.00)[0:+];
	 R_MIXED_CHARSET(0.67)[subject];
	 BAYES_HAM(-2.49)[97.69%];
	 MID_RHS_MATCH_FROM(0.00)[];
	 ARC_NA(0.00)[];
	 R_DKIM_ALLOW(-0.20)[suse.com:s=susede1];
	 FROM_HAS_DN(0.00)[];
	 RCPT_COUNT_THREE(0.00)[4];
	 FREEMAIL_ENVRCPT(0.00)[gmail.com];
	 TO_MATCH_ENVRCPT_ALL(0.00)[];
	 MIME_GOOD(-0.10)[text/plain];
	 NEURAL_HAM_LONG(-1.00)[-1.000];
	 DWL_DNSWL_MED(-2.00)[suse.com:dkim];
	 DKIM_SIGNED(0.00)[suse.com:s=susede1];
	 DBL_BLOCKED_OPENRESOLVER(0.00)[suse.com:dkim];
	 FUZZY_BLOCKED(0.00)[rspamd.com];
	 FREEMAIL_CC(0.00)[lists.xenproject.org,xen.org,gmail.com];
	 RCVD_TLS_ALL(0.00)[]
X-Spam-Score: -5.32
X-Rspamd-Queue-Id: 24FD021A5C
X-Spam-Flag: NO

On 15.01.24 16:14, Anthony PERARD wrote:
> On Thu, Jan 04, 2024 at 10:00:39AM +0100, Juergen Gross wrote:
>> @@ -2242,6 +2256,28 @@ void parse_config_data(const char *config_source,
>>   
>>               libxl_string_list_dispose(&pairs);
>>   
>> +            if (p9->type == LIBXL_P9_TYPE_UNKNOWN) {
>> +                p9->type = LIBXL_P9_TYPE_QEMU;
> 
> The defaulting is normally done in libxl, so that it works for all users
> of libxl. Can this be done instead in libxl? Hopefully, it's enough to
> do it in libxl__device_p9_setdefault().
> 
> Same question for the followup checks and default values.

I'll look into it.


Juergen


From xen-devel-bounces@lists.xenproject.org Wed Jan 31 15:31:39 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 31 Jan 2024 15:31:39 +0000
Received: from list by lists.xenproject.org with outflank-mailman.674089.1048779 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rVCYo-0007Ns-08; Wed, 31 Jan 2024 15:31:34 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 674089.1048779; Wed, 31 Jan 2024 15:31:33 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rVCYn-0007Nl-TW; Wed, 31 Jan 2024 15:31:33 +0000
Received: by outflank-mailman (input) for mailman id 674089;
 Wed, 31 Jan 2024 15:31:33 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=L+aY=JJ=actia.se=john.ernberg@srs-se1.protection.inumbo.net>)
 id 1rVCYm-0007NU-Vi
 for xen-devel@lists.xenproject.org; Wed, 31 Jan 2024 15:31:32 +0000
Received: from mail.actia.se (mail.actia.se [212.181.117.226])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id cf98e0e2-c04d-11ee-8a43-1f161083a0e0;
 Wed, 31 Jan 2024 16:31:32 +0100 (CET)
Received: from S036ANL.actianordic.se (10.12.31.117) by S035ANL.actianordic.se
 (10.12.31.116) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.35; Wed, 31 Jan
 2024 16:31:31 +0100
Received: from S036ANL.actianordic.se ([fe80::e13e:1feb:4ea6:ec69]) by
 S036ANL.actianordic.se ([fe80::e13e:1feb:4ea6:ec69%4]) with mapi id
 15.01.2507.035; Wed, 31 Jan 2024 16:31:31 +0100
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: cf98e0e2-c04d-11ee-8a43-1f161083a0e0
From: John Ernberg <john.ernberg@actia.se>
To: Julien Grall <julien@xen.org>, Stefano Stabellini
	<sstabellini@kernel.org>, Bertrand Marquis <bertrand.marquis@arm.com>,
	"Michal Orzel" <michal.orzel@amd.com>, Volodymyr Babchuk
	<Volodymyr_Babchuk@epam.com>
CC: Peng Fan <peng.fan@nxp.com>, Jonas Blixt <jonas.blixt@actia.se>,
	"xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>
Subject: Re: [PATCH 2/2] xen/drivers: imx-lpuart: Add iMX8QXP compatible
Thread-Topic: [PATCH 2/2] xen/drivers: imx-lpuart: Add iMX8QXP compatible
Thread-Index: AQHaVDuqVZ6MA3Rd4EaFO4eTM5QUa7DzySMAgAAyuAA=
Date: Wed, 31 Jan 2024 15:31:31 +0000
Message-ID: <9ad6f8ff-8db4-4132-99a4-bfa3bf82f587@actia.se>
References: <20240131114952.305805-1-john.ernberg@actia.se>
 <20240131114952.305805-3-john.ernberg@actia.se>
 <04bd90d9-4cfd-4f76-a2fc-26a432b4c1c9@xen.org>
In-Reply-To: <04bd90d9-4cfd-4f76-a2fc-26a432b4c1c9@xen.org>
Accept-Language: en-US, sv-SE
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-originating-ip: [10.12.12.30]
x-esetresult: clean, is OK
x-esetid: 37303A2921D72955667366
Content-Type: text/plain; charset="utf-8"
Content-ID: <E259449C1CBF814887ABFE623E9FCA74@actia.se>
Content-Transfer-Encoding: base64
MIME-Version: 1.0

SGkgSnVsaWVuLA0KDQpPbiAxLzMxLzI0IDEzOjI5LCBKdWxpZW4gR3JhbGwgd3JvdGU6DQo+IEhp
IEpvaG4sDQo+IA0KPiBPbiAzMS8wMS8yMDI0IDExOjUwLCBKb2huIEVybmJlcmcgd3JvdGU6DQo+
PiBBbGxvdyB0aGUgdWFydCB0byBwcm9iZSBhbHNvIHdpdGggaU1YOFFYUC4gVGhlIGlwLWJsb2Nr
IGlzIHRoZSBzYW1lIGFzIA0KPj4gaW4gdGhlIFFNLA0KPj4gb25seSB0aGUgY29tcGF0aWJsZSBp
cyBuZWVkZWQuDQo+Pg0KPj4gU2lnbmVkLW9mZi1ieTogSm9obiBFcm5iZXJnIDxqb2huLmVybmJl
cmdAYWN0aWEuc2U+DQo+IA0KPiBXaXRoIG9uZSByZW1hcmsgYmVsb3c6DQo+IA0KPiBBY2tlZC1i
eTogSnVsaWVuIEdyYWxsIDxqZ3JhbGxAYW1hem9uLmNvbT4NCj4gDQo+PiAtLS0NCj4+IMKgIHhl
bi9kcml2ZXJzL2NoYXIvaW14LWxwdWFydC5jIHwgMSArDQo+PiDCoCAxIGZpbGUgY2hhbmdlZCwg
MSBpbnNlcnRpb24oKykNCj4+DQo+PiBkaWZmIC0tZ2l0IGEveGVuL2RyaXZlcnMvY2hhci9pbXgt
bHB1YXJ0LmMgDQo+PiBiL3hlbi9kcml2ZXJzL2NoYXIvaW14LWxwdWFydC5jDQo+PiBpbmRleCA3
N2Y3MGMyNzE5Li5jODVlODExMDlhIDEwMDY0NA0KPj4gLS0tIGEveGVuL2RyaXZlcnMvY2hhci9p
bXgtbHB1YXJ0LmMNCj4+ICsrKyBiL3hlbi9kcml2ZXJzL2NoYXIvaW14LWxwdWFydC5jDQo+PiBA
QCAtMjU3LDYgKzI1Nyw3IEBAIHN0YXRpYyBpbnQgX19pbml0IGlteF9scHVhcnRfaW5pdChzdHJ1
Y3QgDQo+PiBkdF9kZXZpY2Vfbm9kZSAqZGV2LA0KPj4gwqAgc3RhdGljIGNvbnN0IHN0cnVjdCBk
dF9kZXZpY2VfbWF0Y2ggaW14X2xwdWFydF9kdF9jb21wYXRbXSANCj4+IF9faW5pdGNvbnN0ID0N
Cj4+IMKgIHsNCj4+IMKgwqDCoMKgwqAgRFRfTUFUQ0hfQ09NUEFUSUJMRSgiZnNsLGlteDhxbS1s
cHVhcnQiKSwNCj4+ICvCoMKgwqAgRFRfTUFUQ0hfQ09NUEFUSUJMRSgiZnNsLGlteDhxeHAtbHB1
YXJ0IiksDQo+IA0KPiBJSVVDIHRoZSBiaW5kaW5nLCB0aGUgRGV2aWNlLVRyZWUgbm9kZSBjb21w
YXRpYmxlIHNob3VsZCBoYXZlIGJvdGggDQo+IGZzbCxpbXg4cW0tbHB1YXJ0IGFuZCBmc2wsaW14
OHF4cC1scHVhcnQuIEluIGZhY3QsIHRoZSBMaW51eCBkcml2ZXIgDQo+IGRvZXNuJ3QgcmVjb2du
aXplIHRoZSBmaXJzdCBjb21wYXRpYmxlLg0KPiANCj4gU28gbWF5YmUgd2UgY2FuIHJlbW92ZSB0
aGUgZmlyc3Qgb25lLg0KDQpJdCdzIGxpc3RlZCBpbiB0aGUgYmluZGluZ3MgYnV0IHRoZSBMaW51
eCBkcml2ZXIgaW5kZWVkIG5ldmVyIGxvb2tzIGZvciANCnFtLCBpdCBzaG91bGQgYmUgc2FmZSB0
byBkcm9wLiBJJ2xsIGRyb3AgdGhpcyBpbiBWMi4NCg0KPiANCj4gQ2hlZXJzLA0KPiANCg0KVGhh
bmtzISAvLyBKb2huIEVybmJlcmc=


From xen-devel-bounces@lists.xenproject.org Wed Jan 31 15:32:57 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 31 Jan 2024 15:32:57 +0000
Received: from list by lists.xenproject.org with outflank-mailman.674092.1048788 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rVCa8-0007sZ-9L; Wed, 31 Jan 2024 15:32:56 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 674092.1048788; Wed, 31 Jan 2024 15:32:56 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rVCa8-0007sS-6Q; Wed, 31 Jan 2024 15:32:56 +0000
Received: by outflank-mailman (input) for mailman id 674092;
 Wed, 31 Jan 2024 15:32:54 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=L+aY=JJ=actia.se=john.ernberg@srs-se1.protection.inumbo.net>)
 id 1rVCa6-0007sK-KT
 for xen-devel@lists.xenproject.org; Wed, 31 Jan 2024 15:32:54 +0000
Received: from mail.actia.se (mail.actia.se [212.181.117.226])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 001876a6-c04e-11ee-8a43-1f161083a0e0;
 Wed, 31 Jan 2024 16:32:53 +0100 (CET)
Received: from S036ANL.actianordic.se (10.12.31.117) by S035ANL.actianordic.se
 (10.12.31.116) with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.35; Wed, 31 Jan
 2024 16:32:53 +0100
Received: from S036ANL.actianordic.se ([fe80::e13e:1feb:4ea6:ec69]) by
 S036ANL.actianordic.se ([fe80::e13e:1feb:4ea6:ec69%4]) with mapi id
 15.01.2507.035; Wed, 31 Jan 2024 16:32:53 +0100
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 001876a6-c04e-11ee-8a43-1f161083a0e0
From: John Ernberg <john.ernberg@actia.se>
To: Julien Grall <julien@xen.org>, Stefano Stabellini
	<sstabellini@kernel.org>, Bertrand Marquis <bertrand.marquis@arm.com>,
	"Michal Orzel" <michal.orzel@amd.com>, Volodymyr Babchuk
	<Volodymyr_Babchuk@epam.com>, Peng Fan <peng.fan@nxp.com>
CC: Jonas Blixt <jonas.blixt@actia.se>, "xen-devel@lists.xenproject.org"
	<xen-devel@lists.xenproject.org>
Subject: Re: [PATCH 1/2] xen/arm: Add imx8q{m,x} platform glue
Thread-Topic: [PATCH 1/2] xen/arm: Add imx8q{m,x} platform glue
Thread-Index: AQHaVDuqVQ/kgxLZgUK/m8/hE0ez5bDzxxsAgAA1KwA=
Date: Wed, 31 Jan 2024 15:32:53 +0000
Message-ID: <494d4961-ad8a-4d1d-aaa6-d1bfb9d6a137@actia.se>
References: <20240131114952.305805-1-john.ernberg@actia.se>
 <20240131114952.305805-2-john.ernberg@actia.se>
 <a2f726f5-df4c-4d15-90af-7d59c0f1f513@xen.org>
In-Reply-To: <a2f726f5-df4c-4d15-90af-7d59c0f1f513@xen.org>
Accept-Language: en-US, sv-SE
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-originating-ip: [10.12.12.30]
x-esetresult: clean, is OK
x-esetid: 37303A2921D72955667366
Content-Type: text/plain; charset="utf-8"
Content-ID: <667B3B982CD7E44988611C7E880C82AA@actia.se>
Content-Transfer-Encoding: base64
MIME-Version: 1.0

SGkgSnVsaWVuLA0KDQpPbiAxLzMxLzI0IDEzOjIyLCBKdWxpZW4gR3JhbGwgd3JvdGU6DQo+IEhp
LA0KPiANCj4gT24gMzEvMDEvMjAyNCAxMTo1MCwgSm9obiBFcm5iZXJnIHdyb3RlOg0KPj4gV2hl
biB1c2luZyBMaW51eCBmb3IgZG9tMCB0aGVyZSBhcmUgYSBidW5jaCBvZiBkcml2ZXJzIHRoYXQg
bmVlZCB0byBkbyANCj4+IFNNQw0KPj4gU0lQIGNhbGxzIGludG8gdGhlIFBTQ0kgcHJvdmlkZXIg
dG8gZW5hYmxlIGNlcnRhaW4gaGFyZHdhcmUgYml0cyBsaWtlIHRoZQ0KPj4gd2F0Y2hkb2cuDQo+
IA0KPiBEbyB5b3Uga25vdyB3aGljaCBwcm90b2NvbCB0aGlzIGlzIHVuZGVyIHRoZSBob29kLiBJ
cyB0aGlzIFNDTUk/DQoNCkkgdGhpbmsgSSBjb25mdXNlZCBteXNlbGYgaGVyZSB3aGVuIEkgd3Jv
dGUgdGhlIGNvbW1pdCBsb2cuDQoNClRoZSBFTDMgY29kZSBpbiBvdXIgY2FzZSBpcyBBVEYsIGFu
ZCBpdCBkb2VzIG5vdCBhcHBlYXIgdG8gYmUgU0NNSSwgbm9yIA0KUFNDSS4gVGhlIHJlZ2lzdGVy
IHVzYWdlIG9mIHRoZXNlIFNNQyBTSVAgY2FsbHMgYXJlIGFzIGZvbGxvd3M6DQphMCAtIHNlcnZp
Y2UNCmExIC0gZnVuY3Rpb24NCmEyLWE3IC0gYXJncw0KDQpJbiBBVEYgdGhlIGhhbmRsZXIgaXMg
ZGVjbGFyZWQgYXMgYSBydW50aW1lIHNlcnZpY2UuDQoNCldvdWxkIHRoZSBhcHByb3ByaWF0ZSBj
b21tbWl0IG1lc3NhZ2UgaGVyZSBiZSBzb21ldGhpbmcgYWxvbmcgdGhlIGxpbmVzIA0Kb2YgYmVs
b3c/DQoiIiINCldoZW4gdXNpbmcgTGludXggZm9yIGRvbTAgdGhlcmUgYXJlIGEgYnVuY2ggb2Yg
ZHJpdmVycyB0aGF0IG5lZWQgdG8gZG8gICBTTUMNClNJUCBjYWxscyBpbnRvIHRoZSBmaXJtd2Fy
ZSB0byBlbmFibGUgY2VydGFpbiBoYXJkd2FyZSBiaXRzIGxpa2UgdGhlDQp3YXRjaGRvZy4NCiIi
Ig0KPiANCj4+DQo+PiBQcm92aWRlIGEgYmFzaWMgcGxhdGZvcm0gZ2x1ZSB0aGF0IGltcGxlbWVu
dHMgdGhlIG5lZWRlZCBTTUMgZm9yd2FyZGluZy4NCj4+DQo+PiBTaWduZWQtb2ZmLWJ5OiBKb2hu
IEVybmJlcmcgPGpvaG4uZXJuYmVyZ0BhY3RpYS5zZT4NCj4+IC0tLQ0KPj4gTk9URTogVGhpcyBp
cyBiYXNlZCBvbiBjb2RlIGZvdW5kIGluIE5YUCBYZW4gdHJlZSBsb2NhdGVkIGhlcmU6DQo+PiBo
dHRwczovL2dpdGh1Yi5jb20vbnhwLWlteC9pbXgteGVuL2Jsb2IvbGYtNS4xMC55XzQuMTMveGVu
L2FyY2gvYXJtL3BsYXRmb3Jtcy9pbXg4cW0uYw0KPiANCj4gQW55dGhpbmcgYWZ0ZXIgLS0tIHdp
bGwgYmUgcmVtb3ZlZCB3aGlsZSBhcHBsaWVkIHRvIHRoZSB0aHJlZS4gSSB0aGluayANCj4gdGhp
cyBOT1RFIHNob3VsZCBiZSB3cml0dGVuIGRvd24gaW4gdGhlIGNvbW1pdCBtZXNzYWdlLg0KDQpB
Y2suDQo+IA0KPiBZb3UgYWxzbyBwb3NzaWJseSB3YW50IGEgc2lnbmVkLW9mZi1ieSBmcm9tIFBl
bmcgYXMgdGhpcyBpcyBoaXMgY29kZS4NCg0KQFBlbmc6IE1heSBJIGFkZCBhIHNpZ24tb2ZmIGZy
b20geW91Pw0KPiANCj4+DQo+PiDCoCB4ZW4vYXJjaC9hcm0vcGxhdGZvcm1zL01ha2VmaWxlIHzC
oCAxICsNCj4+IMKgIHhlbi9hcmNoL2FybS9wbGF0Zm9ybXMvaW14OHFtLmMgfCA2NSArKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysNCj4+IMKgIDIgZmlsZXMgY2hhbmdlZCwgNjYgaW5z
ZXJ0aW9ucygrKQ0KPj4gwqAgY3JlYXRlIG1vZGUgMTAwNjQ0IHhlbi9hcmNoL2FybS9wbGF0Zm9y
bXMvaW14OHFtLmMNCj4+DQo+PiBkaWZmIC0tZ2l0IGEveGVuL2FyY2gvYXJtL3BsYXRmb3Jtcy9N
YWtlZmlsZSANCj4+IGIveGVuL2FyY2gvYXJtL3BsYXRmb3Jtcy9NYWtlZmlsZQ0KPj4gaW5kZXgg
ODYzMmY0MTE1Zi4uYmVjNmU1NWQxZiAxMDA2NDQNCj4+IC0tLSBhL3hlbi9hcmNoL2FybS9wbGF0
Zm9ybXMvTWFrZWZpbGUNCj4+ICsrKyBiL3hlbi9hcmNoL2FybS9wbGF0Zm9ybXMvTWFrZWZpbGUN
Cj4+IEBAIC05LDUgKzksNiBAQCBvYmotJChDT05GSUdfQUxMX1BMQVQpwqDCoCArPSBzdW54aS5v
DQo+PiDCoCBvYmotJChDT05GSUdfQUxMNjRfUExBVCkgKz0gdGh1bmRlcngubw0KPj4gwqAgb2Jq
LSQoQ09ORklHX0FMTDY0X1BMQVQpICs9IHhnZW5lLXN0b3JtLm8NCj4+IMKgIG9iai0kKENPTkZJ
R19BTEw2NF9QTEFUKSArPSBicmNtLXJhc3BiZXJyeS1waS5vDQo+PiArb2JqLSQoQ09ORklHX0FM
TDY0X1BMQVQpICs9IGlteDhxbS5vDQo+PiDCoCBvYmotJChDT05GSUdfTVBTT0NfUExBVEZPUk0p
wqAgKz0geGlsaW54LXp5bnFtcC5vDQo+PiDCoCBvYmotJChDT05GSUdfTVBTT0NfUExBVEZPUk0p
wqAgKz0geGlsaW54LXp5bnFtcC1lZW1pLm8NCj4+IGRpZmYgLS1naXQgYS94ZW4vYXJjaC9hcm0v
cGxhdGZvcm1zL2lteDhxbS5jIA0KPj4gYi94ZW4vYXJjaC9hcm0vcGxhdGZvcm1zL2lteDhxbS5j
DQo+PiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPj4gaW5kZXggMDAwMDAwMDAwMC4uYTljZDljMzYx
NQ0KPj4gLS0tIC9kZXYvbnVsbA0KPj4gKysrIGIveGVuL2FyY2gvYXJtL3BsYXRmb3Jtcy9pbXg4
cW0uYw0KPj4gQEAgLTAsMCArMSw2NSBAQA0KPj4gKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVy
OiBHUEwtMi4wLW9yLWxhdGVyICovDQo+PiArLyoNCj4+ICsgKiB4ZW4vYXJjaC9hcm0vcGxhdGZv
cm1zL2lteDhxbS5jDQo+PiArICoNCj4+ICsgKiBpLk1YIDhRTSBzZXR1cA0KPj4gKyAqDQo+PiAr
ICogQ29weXJpZ2h0IChjKSAyMDE2IEZyZWVzY2FsZSBJbmMuDQo+PiArICogQ29weXJpZ2h0IDIw
MTgtMjAxOSBOWFANCj4+ICsgKg0KPj4gKyAqDQo+PiArICogUGVuZyBGYW4gPHBlbmcuZmFuQG54
cC5jb20+DQo+PiArICovDQo+PiArDQo+PiArI2luY2x1ZGUgPGFzbS9wbGF0Zm9ybS5oPg0KPj4g
KyNpbmNsdWRlIDxhc20vc21jY2MuaD4NCj4+ICsNCj4+ICtzdGF0aWMgY29uc3QgY2hhciAqIGNv
bnN0IGlteDhxbV9kdF9jb21wYXRbXSBfX2luaXRjb25zdCA9DQo+PiArew0KPj4gK8KgwqDCoCAi
ZnNsLGlteDhxbSIsDQo+PiArwqDCoMKgICJmc2wsaW14OHF4cCIsDQo+PiArwqDCoMKgIE5VTEwN
Cj4+ICt9Ow0KPj4gKw0KPj4gK3N0YXRpYyBib29sIGlteDhxbV9zbWMoc3RydWN0IGNwdV91c2Vy
X3JlZ3MgKnJlZ3MpDQo+PiArew0KPiANCj4gWW91ciBpbXBsZW1lbnRhdGlvbiBiZWxvdyB3aWxs
IG5vdCBvbmx5IGZvcndhcmQgU01DIGZvciBkb20wIGJ1dCBhbHNvIA0KPiBmb3IgYW55IG5vbi10
cnVzdGVkIGRvbWFpbnMuIEhhdmUgeW91IGludmVzdGlnYXRlZCB0aGF0IGFsbCB0aGUgU0lQIA0K
PiBjYWxscyBhcmUgc2FmZSB0byBiZSBjYWxsZWQgYnkgYW55b25lPw0KDQpXZSB1c2UgcHVyZSB2
aXJ0dWFsaXplZCBkb21Vcywgc28gd2UgZG8gbm90IGV4cGVjdCBhbnkgY2FsbHMgdG8gdGhpcyBT
TUMgDQppbnRlcmZhY2UgZnJvbSB0aGUgZ3Vlc3QuIEknbGwgbGltaXQgaXQgdG8gZG9tMC4NCj4g
DQo+IEJ1dCBldmVuIGlmIHdlIHJlc3RyaWN0IHRvIGRvbTAsIGhhdmUgeW91IGNoZWNrZWQgdGhh
dCBub25lIG9mIHRoZSBTTUNzIA0KPiB1c2UgYnVmZmVycz8NCkkgaGF2ZW4ndCBmb3VuZCBhbnkg
c3VjaCBpbnN0YW5jZXMgaW4gdGhlIExpbnV4IGtlcm5lbCB3aGVyZSBhIGJ1ZmZlciBpcyANCnVz
ZWQuIEFkZGluZyBhIGNhbGwgZmlsdGVyaW5nIGxpa2Ugc3VnZ2VzdGVkIGJlbG93IGFkZGl0aW9u
cyBvZiBzdWNoIA0KZnVuY3Rpb25zIGNhbiBiZSBkaXNjb3ZlcmVkIGFuZCBhZGFwdGVkIGZvciBp
ZiB0aGV5IHdvdWxkIHNob3cgdXAgbGF0ZXIuDQo+IA0KPiBSYXRoZXIgdGhhbiBwcm92aWRpbmcg
YSBibGFua2V0IGZvcndhcmQsIHRvIG1lIGl0IHNvdW5kcyBtb3JlIGxpa2UgeW91IA0KPiB3YW50
IHRvIHByb3ZpZGUgYW4gYWxsb3dsaXN0IG9mIHRoZSBTTUNzLiBUaGlzIGlzIG1vcmUgZnV0dXJl
cHJvb2YgYW5kIA0KPiBhdm9pZCB0aGUgcmlzayB0byBleHBvc2UgdW5zYWZlIFNNQ3MgdG8gYW55
IGRvbWFpbi4NCj4gDQo+IEZvciBhbiBleGFtcGxlLCB5b3UgY2FuIGhhdmUgYSBsb29rIGF0IHRo
ZSBFRU1JIG1lZGlhdG9yIGZvciBYaWxpbnguDQoNCkFjay4gRG8geW91IHByZWZlciB0byBzZWUg
b25seSBvbiBTTUNDQyBzZXJ2aWNlIGxldmVsIG9yIGFsc28gb24gDQpmdW5jdGlvbiBsZXZlbD8g
KGExIHJlZ2lzdGVyLCBwZXIgZGVzY3JpcHRpb24gZWFybGllcikNCj4gDQo+IENoZWVycywNCj4g
DQoNClRoYW5rcyEgLy8gSm9obiBFcm5iZXJn


From xen-devel-bounces@lists.xenproject.org Wed Jan 31 15:58:08 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 31 Jan 2024 15:58:08 +0000
Received: from list by lists.xenproject.org with outflank-mailman.674098.1048799 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rVCyH-0003vE-7E; Wed, 31 Jan 2024 15:57:53 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 674098.1048799; Wed, 31 Jan 2024 15:57:53 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rVCyH-0003v7-3H; Wed, 31 Jan 2024 15:57:53 +0000
Received: by outflank-mailman (input) for mailman id 674098;
 Wed, 31 Jan 2024 15:57:51 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=q596=JJ=suse.com=jbeulich@srs-se1.protection.inumbo.net>)
 id 1rVCyF-0003v1-LI
 for xen-devel@lists.xenproject.org; Wed, 31 Jan 2024 15:57:51 +0000
Received: from mail-wr1-x42d.google.com (mail-wr1-x42d.google.com
 [2a00:1450:4864:20::42d])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 7ac4816f-c051-11ee-98f5-efadbce2ee36;
 Wed, 31 Jan 2024 16:57:48 +0100 (CET)
Received: by mail-wr1-x42d.google.com with SMTP id
 ffacd0b85a97d-33ae74e5394so2233441f8f.3
 for <xen-devel@lists.xenproject.org>; Wed, 31 Jan 2024 07:57:48 -0800 (PST)
Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de.
 [37.24.206.209]) by smtp.gmail.com with ESMTPSA id
 bj12-20020a0560001e0c00b00337d6f0013esm10453006wrb.107.2024.01.31.07.57.46
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 31 Jan 2024 07:57:47 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 7ac4816f-c051-11ee-98f5-efadbce2ee36
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=suse.com; s=google; t=1706716667; x=1707321467; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=Y0wiqQQMfWO4JHT5/WmmU32IHcJ3aZ5LAcAlOufcPwQ=;
        b=JvCLf1BGjGqU5xFRJlcsOV/Ni0/1XoS9+y5jjADlAa56p3/XYwMKiLOHqhG3lJS2HJ
         +j9AJ0/PYcZDhj/9NkvB7KJryXBcrp/hb6cxurkXwl4vv5K2CamNZM8RcV6cnc4WiFhY
         DNgyv/fhQWk3DcyqkSXQ6Vvv4lFPIKe/exqbkX4xxFsVv6tIDuMfB6tpLir6m4yYFUhd
         P8EZfk9V1hoDYp+J+Ggaeb8duKWEm/uKKV/Ubp4/x/dZ0+iAPIN5dfGTK7T2EcrloopL
         Lixb3++90CL+E0azFvEZ1Enicn+GmUZvYOEiyFC4K3/L8egYhSmKTdvtLfLUuyEcmCYj
         pU8w==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706716667; x=1707321467;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=Y0wiqQQMfWO4JHT5/WmmU32IHcJ3aZ5LAcAlOufcPwQ=;
        b=B3WPRpp2fODEPJ+WBVvHTYIgrr5Gtk4S2B307RDR/djI6E+QHqxlYyCxw2oN7VYenV
         xvVSmRayjS5NRKI6eUANhygEWEVI5IpjxW3iSEPLb77w7T2jYVeByXgkBA7yx8lnofmg
         Xp5fWctpGThIIkTi62NXlPIpD9QGaju9aYshXXy2JD5MhiD2ab4CZTYmP7B34+nx/c7/
         4lK+U8tLU7TZTUVipMLBJEuUSnGy/gGdZZD7nn8Yvh6uKEqALV32uDWCSCflXuh8F+A0
         Wyf77crnsdwLvVGpsdnHUCKvIxBRgDJk1XJJfchWZ8hN1gBV3qUwpxyYCuEST6UGERwJ
         9d2A==
X-Gm-Message-State: AOJu0YxxVv1q1OCJMOcU96KPdNIMYFmRtgsxooNBClDKQNc9OgHAEZ78
	4ep5lGUlNHwyLqLdDhXzoM+n/jdYkvLbpFez34pmVhoMaUUd432VCrJZncfexA==
X-Google-Smtp-Source: AGHT+IGjQt9Y4LRPuyR8mGYnYf6NxY2c7aA3nC0MB7NydLW0eHbleLZtA5juAifK4A3LTqq5902Y9Q==
X-Received: by 2002:a5d:408e:0:b0:33a:fcc2:d84b with SMTP id o14-20020a5d408e000000b0033afcc2d84bmr1468510wrp.7.1706716667522;
        Wed, 31 Jan 2024 07:57:47 -0800 (PST)
X-Forwarded-Encrypted: i=0; AJvYcCUJfm8AwwMVmiEm1CC/DDrekHDjL9IcYfQSBOEZ2Ga4U77AkaXKhr9PnSOCtEvCDGovmCxUuqZ50qG5ku6nZYNOa/PElx/i1rJFa+rHqceDj/FkX/QIpjxm5O20h+IT+7hGlq2rqS9i9WI/4KkWGRIxV+3+UnNPAUw9ASZ47K89Mz44sPYxinuEut23kLz+vRXisi62rlQocsS1AL6V0ib3kQ5ma17WlV4pgulIEJA9ybJPbAkvNSfx9smtsJRZ5L6BXdTeb25qp5RG1e09+8DVbJ7zXMjf
Message-ID: <42eabd87-b245-44e3-9945-40b1a5c5eaf5@suse.com>
Date: Wed, 31 Jan 2024 16:57:45 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v6 01/15] xen/common: add cache coloring common code
Content-Language: en-US
To: Carlo Nonato <carlo.nonato@minervasys.tech>
Cc: andrea.bastoni@minervasys.tech, Andrew Cooper
 <andrew.cooper3@citrix.com>, George Dunlap <george.dunlap@citrix.com>,
 Julien Grall <julien@xen.org>, Stefano Stabellini <sstabellini@kernel.org>,
 Wei Liu <wl@xen.org>, Marco Solieri <marco.solieri@minervasys.tech>,
 xen-devel@lists.xenproject.org
References: <20240129171811.21382-1-carlo.nonato@minervasys.tech>
 <20240129171811.21382-2-carlo.nonato@minervasys.tech>
From: Jan Beulich <jbeulich@suse.com>
Autocrypt: addr=jbeulich@suse.com; keydata=
 xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk
 hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK
 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD
 /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py
 O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl
 MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP
 nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo
 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp
 Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC
 AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee
 e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF
 hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l
 IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS
 FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj
 t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8
 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3
 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9
 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V
 m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM
 EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr
 wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A
 nAuWpQkjM1ASeQwSHEeAWPgskBQL
In-Reply-To: <20240129171811.21382-2-carlo.nonato@minervasys.tech>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit

On 29.01.2024 18:17, Carlo Nonato wrote:
> Last Level Cache (LLC) coloring allows to partition the cache in smaller
> chunks called cache colors. Since not all architectures can actually
> implement it, add a HAS_LLC_COLORING Kconfig and put other options under
> xen/arch.
> 
> LLC colors are a property of the domain, so the domain struct has to be
> extended.
> 
> Based on original work from: Luca Miccio <lucmiccio@gmail.com>
> 
> Signed-off-by: Carlo Nonato <carlo.nonato@minervasys.tech>
> Signed-off-by: Marco Solieri <marco.solieri@minervasys.tech>
> ---
> v6:
> - moved almost all code in common
> - moved documentation in this patch
> - reintroduced range for CONFIG_NR_LLC_COLORS
> - reintroduced some stub functions to reduce the number of checks on
>   llc_coloring_enabled
> - moved domain_llc_coloring_free() in same patch where allocation happens
> - turned "d->llc_colors" to pointer-to-const
> - llc_coloring_init() now returns void and panics if errors are found
> v5:
> - used - instead of _ for filenames
> - removed domain_create_llc_colored()
> - removed stub functions
> - coloring domain fields are now #ifdef protected
> v4:
> - Kconfig options moved to xen/arch
> - removed range for CONFIG_NR_LLC_COLORS
> - added "llc_coloring_enabled" global to later implement the boot-time
>   switch
> - added domain_create_llc_colored() to be able to pass colors
> - added is_domain_llc_colored() macro
> ---
>  docs/misc/cache-coloring.rst      | 87 +++++++++++++++++++++++++++++++
>  docs/misc/xen-command-line.pandoc | 27 ++++++++++
>  xen/arch/Kconfig                  | 17 ++++++
>  xen/common/Kconfig                |  3 ++
>  xen/common/Makefile               |  1 +
>  xen/common/keyhandler.c           |  3 ++
>  xen/common/llc-coloring.c         | 87 +++++++++++++++++++++++++++++++
>  xen/include/xen/llc-coloring.h    | 38 ++++++++++++++
>  xen/include/xen/sched.h           |  5 ++
>  9 files changed, 268 insertions(+)
>  create mode 100644 docs/misc/cache-coloring.rst
>  create mode 100644 xen/common/llc-coloring.c
>  create mode 100644 xen/include/xen/llc-coloring.h
> 
> diff --git a/docs/misc/cache-coloring.rst b/docs/misc/cache-coloring.rst
> new file mode 100644
> index 0000000000..9fe01e99e1
> --- /dev/null
> +++ b/docs/misc/cache-coloring.rst
> @@ -0,0 +1,87 @@
> +Xen cache coloring user guide
> +=============================
> +
> +The cache coloring support in Xen allows to reserve Last Level Cache (LLC)
> +partitions for Dom0, DomUs and Xen itself. Currently only ARM64 is supported.
> +
> +To compile LLC coloring support set ``CONFIG_LLC_COLORING=y``.
> +
> +If needed, change the maximum number of colors with
> +``CONFIG_NR_LLC_COLORS=<n>``.
> +
> +Compile Xen and the toolstack and then configure it via
> +`Command line parameters`_.
> +
> +Background
> +**********
> +
> +Cache hierarchy of a modern multi-core CPU typically has first levels dedicated
> +to each core (hence using multiple cache units), while the last level is shared
> +among all of them. Such configuration implies that memory operations on one
> +core (e.g. running a DomU) are able to generate interference on another core
> +(e.g .hosting another DomU). Cache coloring allows eliminating this
> +mutual interference, and thus guaranteeing higher and more predictable
> +performances for memory accesses.
> +The key concept underlying cache coloring is a fragmentation of the memory
> +space into a set of sub-spaces called colors that are mapped to disjoint cache
> +partitions. Technically, the whole memory space is first divided into a number
> +of subsequent regions. Then each region is in turn divided into a number of
> +subsequent sub-colors. The generic i-th color is then obtained by all the
> +i-th sub-colors in each region.
> +
> +::
> +
> +                            Region j            Region j+1
> +                .....................   ............
> +                .                     . .
> +                .                       .
> +            _ _ _______________ _ _____________________ _ _
> +                |     |     |     |     |     |     |
> +                | c_0 | c_1 |     | c_n | c_0 | c_1 |
> +           _ _ _|_____|_____|_ _ _|_____|_____|_____|_ _ _
> +                    :                       :
> +                    :                       :...         ... .
> +                    :                            color 0
> +                    :...........................         ... .
> +                                                :
> +          . . ..................................:
> +
> +There are two pragmatic lesson to be learnt.
> +
> +1. If one wants to avoid cache interference between two domains, different
> +   colors needs to be used for their memory.
> +
> +2. Color assignment must privilege contiguity in the partitioning. E.g.,
> +   assigning colors (0,1) to domain I  and (2,3) to domain  J is better than
> +   assigning colors (0,2) to I and (1,3) to J.

I can't connect this 2nd point with any of what was said above.

> +How to compute the number of colors
> +***********************************
> +
> +To compute the number of available colors for a specific platform, the size of
> +an LLC way and the page size used by Xen must be known. The first parameter can
> +be found in the processor manual or can be also computed dividing the total
> +cache size by the number of its ways. The second parameter is the minimum
> +amount of memory that can be mapped by the hypervisor,

I find "amount of memory that can be mapped" quite confusing here. Don't you
really mean the granularity at which memory can be mapped?

> thus dividing the way
> +size by the page size, the number of total cache partitions is found. So for
> +example, an Arm Cortex-A53 with a 16-ways associative 1 MiB LLC, can isolate up
> +to 16 colors when pages are 4 KiB in size.

I guess it's a matter of what one's use to, but to me talking of "way size"
and how the calculation is described is, well, unusual. What I would start
from is the smallest entity, i.e. a cache line. Then it would be relevant
to describe how, after removing the low so many bits to cover for cache line
size, the remaining address bits are used to map to a particular set. It
looks to me as if you're assuming that this mapping is linear, using the
next so many bits from the address. Afaik this isn't true on various modern
CPUs; instead hash functions are used. Without knowing at least certain
properties of such a hash function, I'm afraid your mapping from address to
color isn't necessarily guaranteeing the promised isolation. The guarantee
may hold for processors you specifically target, but then I think in this
description it would help if you would fully spell out any assumptions you
make on how hardware maps addresses to elements of the cache.

> +Cache layout is probed automatically by looking at the CLIDR_EL1 arm register.
> +This means that other system caches that aren't visible there, are ignored.
> +The possibility of manually setting the way size is left to the user to overcome
> +failing situations or for debugging/testing purposes. See
> +`Command line parameters`_ for more information on that.
> +
> +Command line parameters
> +***********************
> +
> +More specific documentation is available at `docs/misc/xen-command-line.pandoc`.
> +
> ++----------------------+-------------------------------+
> +| **Parameter**        | **Description**               |
> ++----------------------+-------------------------------+
> +| ``llc-coloring``     | enable coloring at runtime    |
> ++----------------------+-------------------------------+
> +| ``llc-way-size``     | set the LLC way size          |
> ++----------------------+-------------------------------+

As a result of the above, I also find it confusing to specify "way size"
as a command line option. Cache size, number of ways, and cache line size
would seem more natural to me.

I'll get to looking nat the actual code later.

Jan


From xen-devel-bounces@lists.xenproject.org Wed Jan 31 16:28:05 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 31 Jan 2024 16:28:05 +0000
Received: from list by lists.xenproject.org with outflank-mailman.674104.1048809 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rVDRP-0002Z8-JB; Wed, 31 Jan 2024 16:27:59 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 674104.1048809; Wed, 31 Jan 2024 16:27:59 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rVDRP-0002Z1-G8; Wed, 31 Jan 2024 16:27:59 +0000
Received: by outflank-mailman (input) for mailman id 674104;
 Wed, 31 Jan 2024 16:27:58 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=/tZP=JJ=cloud.com=edwin.torok@srs-se1.protection.inumbo.net>)
 id 1rVDRO-0002Yv-B4
 for xen-devel@lists.xenproject.org; Wed, 31 Jan 2024 16:27:58 +0000
Received: from mail-wr1-x42f.google.com (mail-wr1-x42f.google.com
 [2a00:1450:4864:20::42f])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id b0ebf7b3-c055-11ee-8a43-1f161083a0e0;
 Wed, 31 Jan 2024 17:27:57 +0100 (CET)
Received: by mail-wr1-x42f.google.com with SMTP id
 ffacd0b85a97d-3394bec856fso730840f8f.0
 for <xen-devel@lists.xenproject.org>; Wed, 31 Jan 2024 08:27:56 -0800 (PST)
Received: from smtpclient.apple (default-46-102-197-194.interdsl.co.uk.
 [46.102.197.194]) by smtp.gmail.com with ESMTPSA id
 e13-20020a5d4e8d000000b0033b08b9cd9dsm965539wru.79.2024.01.31.08.27.55
 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128);
 Wed, 31 Jan 2024 08:27:56 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: b0ebf7b3-c055-11ee-8a43-1f161083a0e0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1706718476; x=1707323276; darn=lists.xenproject.org;
        h=references:to:cc:in-reply-to:date:subject:mime-version:message-id
         :from:from:to:cc:subject:date:message-id:reply-to;
        bh=aFU6KAw+hV3dbKXZYJpAAw+sm6jvFtfNbcbn3FNVYvE=;
        b=XAesKMKPrxc/pR8FccQlT2lS6DT++l1IYwGMOzb6W5L9aKCf6lRgdMXsJTVa8NwRsE
         Uz94xsbF7jUOMz5el7/VGAUHuT51NJe4QuTxHQqrGE02EKncjpbGV5lY4OGYvxQTij4C
         OB8YIuwTwFecOglcKoZzO4Fam3Zt+NnBOlWtQ=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706718476; x=1707323276;
        h=references:to:cc:in-reply-to:date:subject:mime-version:message-id
         :from:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=aFU6KAw+hV3dbKXZYJpAAw+sm6jvFtfNbcbn3FNVYvE=;
        b=WA8IKZ2+imsv3bjoAXNcRHyU/X7uIlP8ki74GLFcvImNbvgiHN01QpRW06U1A2Xihs
         bilj3am6g9NCX3fUHx40EmbL5dI+8ZJTGupaIs4MzS395/u1YSIlXJabZ2w6EgNwG7sd
         /LBI6ZA0vRsaS6k/Jkc3OFxp0WAspUaGcUCgjhtUielwgkeC1DRmOfPWJ9lWLLmzh1/k
         ViPYGMhgLbQRxCNPd+QdrGeoproJcpPOPocM29qrNU6Ii5PaprBGIhsETIksA+GBot/s
         h/oVqVPRLcUQZaaWcylZQXozp3yU/Azy0egYOHXQtnD6nMSg/szFxRlVlHzSiubvT2ra
         tTIA==
X-Gm-Message-State: AOJu0Yx7cXv/gEGwsfQVV0ra91KOrLPWxzVWLcn5dfMVzzqKnG2hk2Ia
	jV5PKnIyuF+Pv3HmQ3zxGiLnpJg5tunF60cNCo7Xu2IxjyJBZi5B9ikeJLMmkNA=
X-Google-Smtp-Source: AGHT+IEi8DL8zOvaPwlZrgbAncnz+UwXRBQIcwDcXFFTBpnZTLifvkgod0DlV/1HTcH4Xztob3WbPQ==
X-Received: by 2002:a5d:484c:0:b0:336:58e8:d444 with SMTP id n12-20020a5d484c000000b0033658e8d444mr4757158wrs.30.1706718476322;
        Wed, 31 Jan 2024 08:27:56 -0800 (PST)
From: Edwin Torok <edwin.torok@cloud.com>
Message-Id: <400C98F1-A3C6-4E14-90DE-91E314C48697@cloud.com>
Content-Type: multipart/alternative;
	boundary="Apple-Mail=_754EC7EE-2916-4CAC-B8D9-6D02BB2A2568"
Mime-Version: 1.0 (Mac OS X Mail 16.0 \(3774.300.61.1.2\))
Subject: Re: [PATCH v1 2/2] oxenstored: make Quota.t pure
Date: Wed, 31 Jan 2024 16:27:45 +0000
In-Reply-To: <5879EE8F-6FAB-4026-BEDB-1AEEA7BF23DB@cloud.com>
Cc: Xen-devel <xen-devel@lists.xenproject.org>,
 Christian Lindig <christian.lindig@citrix.com>,
 David Scott <dave@recoil.org>,
 Wei Liu <wl@xen.org>,
 Anthony PERARD <anthony.perard@citrix.com>
To: Christian Lindig <christian.lindig@cloud.com>
References: <cover.1706697858.git.edwin.torok@cloud.com>
 <f98edc633527b6d9a6855af0aff4fb77970454cc.1706697858.git.edwin.torok@cloud.com>
 <5879EE8F-6FAB-4026-BEDB-1AEEA7BF23DB@cloud.com>
X-Mailer: Apple Mail (2.3774.300.61.1.2)


--Apple-Mail=_754EC7EE-2916-4CAC-B8D9-6D02BB2A2568
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain;
	charset=utf-8



> On 31 Jan 2024, at 11:17, Christian Lindig =
<christian.lindig@cloud.com> wrote:
>=20
>=20
>=20
>> On 31 Jan 2024, at 10:52, Edwin T=C3=B6r=C3=B6k =
<edwin.torok@cloud.com> wrote:
>>=20
>> Now that we no longer have a hashtable inside we can make Quota.t =
pure,
>> and push the mutable update to its callers.
>> Store.t already had a mutable Quota.t field.
>>=20
>> No functional change.
>=20
> Acked-by: Christian Lindig <christian.lindig@cloud.com>
>=20
> This is shifting copying working to GC work, at least potentially. I =
would agree that this is a good trade-off and the code looks correct to =
me. But I think we should see more testing and benchmarking before =
merging this unless we are fine merging speculative improvements.
>=20
> =E2=80=94 C
>=20
>=20


I=E2=80=99ve written this [1] microbenchmark which creates ~300_000 =
entries in xenstore, assigns quota to 1000 domains and then measure how =
long it takes to list xenstore
(It doesn=E2=80=99t matter whether these domains exist or not).
It shows a measurable improvement with this patch, once I=E2=80=99ve run =
a more realistic test on the original machine with 1000 real VMs I=E2=80=99=
ll post those results too:

On an Intel Xeon Gold 6354 @ 3.0 Ghz:
* without my patch: 12.756 +- 0.152 seconds time elapsed  ( +-  1.19% )
* with my patch: 5.6051 +- 0.0467 seconds time elapsed  ( +-  0.83% )

[1]
# cat >create.py <<EOF
#!/usr/bin/env python3
from xen.lowlevel.xs import xs

xenstore =3D xs()

for i in range(1,1000):
  txn =3D xenstore.transaction_start()
  for j in range(1,10):
    for k in range(1,30):
        path=3Df"/quotatest/{i}/{j}/{k}/x"
        xenstore.write(txn, path, "val")
        # assign quota to domid i
        xenstore.set_permissions(txn, path, [{"dom": i}])
  xenstore.transaction_end(txn)
EOF
# python3 create.py
# perf stat -r 10 sh -c 'xenstore-ls $(for i in $(seq 1 100); do echo =
"/quotatest/$i"; done) >/dev/null=E2=80=99

Best regards,
=E2=80=94Edwin=

--Apple-Mail=_754EC7EE-2916-4CAC-B8D9-6D02BB2A2568
Content-Transfer-Encoding: quoted-printable
Content-Type: text/html;
	charset=utf-8

<html><head><meta http-equiv=3D"content-type" content=3D"text/html; =
charset=3Dutf-8"></head><body style=3D"overflow-wrap: break-word; =
-webkit-nbsp-mode: space; line-break: after-white-space;"><br =
id=3D"lineBreakAtBeginningOfMessage"><div><br><blockquote =
type=3D"cite"><div>On 31 Jan 2024, at 11:17, Christian Lindig =
&lt;christian.lindig@cloud.com&gt; wrote:</div><br =
class=3D"Apple-interchange-newline"><div><div><br><br><blockquote =
type=3D"cite">On 31 Jan 2024, at 10:52, Edwin T=C3=B6r=C3=B6k =
&lt;edwin.torok@cloud.com&gt; wrote:<br><br>Now that we no longer have a =
hashtable inside we can make Quota.t pure,<br>and push the mutable =
update to its callers.<br>Store.t already had a mutable Quota.t =
field.<br><br>No functional change.<br></blockquote><br>Acked-by: =
Christian Lindig &lt;christian.lindig@cloud.com&gt;<br><br>This is =
shifting copying working to GC work, at least potentially. I would agree =
that this is a good trade-off and the code looks correct to me. But I =
think we should see more testing and benchmarking before merging this =
unless we are fine merging speculative improvements.<br><br>=E2=80=94 =
C<br><br><br></div></div></blockquote></div><br><div><br></div><div>I=E2=80=
=99ve written this [1] microbenchmark which creates ~300_000 entries in =
xenstore, assigns quota to 1000 domains and then measure how long it =
takes to list xenstore</div><div>(It doesn=E2=80=99t matter whether =
these domains exist or not).</div><div>It shows a measurable improvement =
with this patch, once I=E2=80=99ve run a more realistic test on the =
original machine with 1000 real VMs I=E2=80=99ll post those results =
too:</div><div><br></div><div>On an Intel Xeon Gold 6354 @ 3.0 =
Ghz:</div><div>* without my patch:&nbsp;12.756 +- 0.152 seconds time =
elapsed &nbsp;( +- &nbsp;1.19% )</div><div>* with my patch:&nbsp;5.6051 =
+- 0.0467 seconds time elapsed &nbsp;( +- &nbsp;0.83% =
)</div><div><br></div><div>[1]</div><div># cat &gt;create.py =
&lt;&lt;EOF</div><div><div>#!/usr/bin/env python3</div><div>from =
xen.lowlevel.xs import xs</div><div><br></div><div>xenstore =3D =
xs()</div><div><br></div><div>for i in range(1,1000):</div><div>&nbsp; =
txn =3D xenstore.transaction_start()</div><div>&nbsp; for j in =
range(1,10):</div><div>&nbsp; &nbsp; for k in =
range(1,30):</div><div>&nbsp; &nbsp; &nbsp; &nbsp; =
path=3Df"/quotatest/{i}/{j}/{k}/x"</div><div>&nbsp; &nbsp; &nbsp; &nbsp; =
xenstore.write(txn, path, "val")</div><div>&nbsp; &nbsp; &nbsp; &nbsp; # =
assign quota to domid i</div><div>&nbsp; &nbsp; &nbsp; &nbsp; =
xenstore.set_permissions(txn, path, [{"dom": i}])</div><div>&nbsp; =
xenstore.transaction_end(txn)</div></div><div>EOF</div><div># python3 =
create.py</div><div>#&nbsp;<span style=3D"caret-color: rgb(0, 0, 0); =
color: rgb(0, 0, 0);">perf stat -r 10 sh -c 'xenstore-ls $(for i in =
$(seq 1 100); do echo "/quotatest/$i"; done) &gt;/dev/null</span><font =
color=3D"#000000"><span style=3D"caret-color: rgb(0, 0, =
0);">=E2=80=99</span></font></div><div><span style=3D"caret-color: =
rgb(0, 0, 0); color: rgb(0, 0, 0);"><br></span></div><div><span =
style=3D"caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0);">Best =
regards,</span></div><div><font color=3D"#000000"><span =
style=3D"caret-color: rgb(0, 0, =
0);">=E2=80=94Edwin</span></font></div></body></html>=

--Apple-Mail=_754EC7EE-2916-4CAC-B8D9-6D02BB2A2568--


From xen-devel-bounces@lists.xenproject.org Wed Jan 31 16:36:22 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 31 Jan 2024 16:36:22 +0000
Received: from list by lists.xenproject.org with outflank-mailman.674107.1048819 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rVDZR-0004XW-C5; Wed, 31 Jan 2024 16:36:17 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 674107.1048819; Wed, 31 Jan 2024 16:36:17 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rVDZR-0004XP-8O; Wed, 31 Jan 2024 16:36:17 +0000
Received: by outflank-mailman (input) for mailman id 674107;
 Wed, 31 Jan 2024 16:36:16 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=tWvt=JJ=cloud.com=anthony.perard@srs-se1.protection.inumbo.net>)
 id 1rVDZQ-0004XJ-He
 for xen-devel@lists.xenproject.org; Wed, 31 Jan 2024 16:36:16 +0000
Received: from mail-wr1-x430.google.com (mail-wr1-x430.google.com
 [2a00:1450:4864:20::430])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id da05eb39-c056-11ee-8a43-1f161083a0e0;
 Wed, 31 Jan 2024 17:36:15 +0100 (CET)
Received: by mail-wr1-x430.google.com with SMTP id
 ffacd0b85a97d-337cc8e72f5so3955303f8f.1
 for <xen-devel@lists.xenproject.org>; Wed, 31 Jan 2024 08:36:15 -0800 (PST)
Received: from perard.uk.xensource.com (default-46-102-197-194.interdsl.co.uk.
 [46.102.197.194]) by smtp.gmail.com with ESMTPSA id
 ba15-20020a0560001c0f00b0033ae54cdd97sm11536140wrb.100.2024.01.31.08.36.14
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 31 Jan 2024 08:36:14 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: da05eb39-c056-11ee-8a43-1f161083a0e0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1706718975; x=1707323775; darn=lists.xenproject.org;
        h=in-reply-to:content-transfer-encoding:content-disposition
         :mime-version:references:message-id:subject:cc:to:from:date:from:to
         :cc:subject:date:message-id:reply-to;
        bh=9ll4CZisg4FhwwEIyaAZ532RjUCd9UNnDz267Gs8xv0=;
        b=AvbHxJyEm00NcooiqhWUy3X3bMADOAJfgpfuJmf/gRCL1KrKQeRg2WACLeASvEzd8Q
         XScO1Gj8v3Kf0fRJ/YL0GExddm0/WbZZhJz0+hYAdL7chmbJUNArWtZqRRHZhtqSK4RJ
         xij6NdsZ1sfL1ylQ720cdWI0KRf68FKrer9HI=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706718975; x=1707323775;
        h=in-reply-to:content-transfer-encoding:content-disposition
         :mime-version:references:message-id:subject:cc:to:from:date
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=9ll4CZisg4FhwwEIyaAZ532RjUCd9UNnDz267Gs8xv0=;
        b=OjpY6nFMEFidCupwR4eKTIX85WyrZPvCh/7r3XBvD/Re8gixPpckmBY31Ddof+S40P
         Eq0cZyRxYgXnHXJ5/GHhg64eYSNRN1BnS9Qq7tIhCjuIT1JKsnAFCzlWHVroz9xGeQZb
         Bh01+OKZar/Ph+BD60ymdWaAGPo5DlzH/dE/M3rTv6QRDnRJOiYZC0SJRiAGFqpbb5JH
         2Zk9ab+EbTraOo/9Eds+hxxNzxQSYqvgP6CpaRl+d5czYGFUttqj6GDIEUZuKLfO2m60
         QNpku8pZnZbA94zg71j9APQA1trmz0kxF7bElIy3pInHwXnvSaDi4MOOQTJ0lvrzlEIr
         hH/A==
X-Gm-Message-State: AOJu0YwrMEYERKrmMHK9YYkf8aZBLXdwpIecAik1ASoVtNg3IDyBxPwj
	HXasD2hPNjFKftfKArLPUhm1wFootemXc346oWixMTnKsafVx7vOrCYAEr0j1uI3p8BmfqQEtG9
	r
X-Google-Smtp-Source: AGHT+IEReKV+3M16m3BevrFtr1yT5ZuRKBgmlXvlFIVGQj6BodUyF3arJ+JeJn79de7dduQ0Mq1P/g==
X-Received: by 2002:a05:6000:2ac:b0:33a:e6f0:ee05 with SMTP id l12-20020a05600002ac00b0033ae6f0ee05mr1892693wry.45.1706718974798;
        Wed, 31 Jan 2024 08:36:14 -0800 (PST)
Date: Wed, 31 Jan 2024 16:36:13 +0000
From: Anthony PERARD <anthony.perard@citrix.com>
To: Edwin =?iso-8859-1?B?VPZy9ms=?= <edwin.torok@cloud.com>
Cc: xen-devel@lists.xenproject.org, Wei Liu <wl@xen.org>
Subject: Re: [PATCH v1 2/2] tools/ocaml: bump minimum version to OCaml 4.05
Message-ID: <6cf32d7b-043e-458e-b73b-68899b6303a8@perard>
References: <cover.1706697216.git.edwin.torok@cloud.com>
 <11cc8480e6e52d5c2dccc7d8d65e1362c7fba685.1706697216.git.edwin.torok@cloud.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=iso-8859-1
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <11cc8480e6e52d5c2dccc7d8d65e1362c7fba685.1706697216.git.edwin.torok@cloud.com>

On Wed, Jan 31, 2024 at 10:42:49AM +0000, Edwin Trk wrote:
> We tried bumping to 4.06.1 [1] previously, but OSSTest was holding us
> back.
> So bump to OCaml 4.05 instead, which should match the version on
> OSSTest?

Yes, it's looks that's the version osstest can currently use.
I've started an osstest flight with this patch series and your other
ocaml patch series, and so far osstest seems happy with it. The flight
isn't finished but all build jobs succeed, and a lot of the tests jobs
as well.

So:
Acked-by: Anthony PERARD <anthony.perard@citrix.com>

Thanks,

-- 
Anthony PERARD


From xen-devel-bounces@lists.xenproject.org Wed Jan 31 16:56:03 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 31 Jan 2024 16:56:03 +0000
Received: from list by lists.xenproject.org with outflank-mailman.674113.1048829 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rVDsR-0000V3-UX; Wed, 31 Jan 2024 16:55:55 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 674113.1048829; Wed, 31 Jan 2024 16:55:55 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rVDsR-0000Uw-R7; Wed, 31 Jan 2024 16:55:55 +0000
Received: by outflank-mailman (input) for mailman id 674113;
 Wed, 31 Jan 2024 16:55:55 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=tWvt=JJ=cloud.com=anthony.perard@srs-se1.protection.inumbo.net>)
 id 1rVDsR-0000Uq-2c
 for xen-devel@lists.xenproject.org; Wed, 31 Jan 2024 16:55:55 +0000
Received: from mail-wr1-x434.google.com (mail-wr1-x434.google.com
 [2a00:1450:4864:20::434])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 9873bcac-c059-11ee-8a43-1f161083a0e0;
 Wed, 31 Jan 2024 17:55:53 +0100 (CET)
Received: by mail-wr1-x434.google.com with SMTP id
 ffacd0b85a97d-33adec41b55so4749428f8f.0
 for <xen-devel@lists.xenproject.org>; Wed, 31 Jan 2024 08:55:53 -0800 (PST)
Received: from perard.uk.xensource.com (default-46-102-197-194.interdsl.co.uk.
 [46.102.197.194]) by smtp.gmail.com with ESMTPSA id
 bp20-20020a5d5a94000000b0033af280ec84sm7772902wrb.26.2024.01.31.08.55.52
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 31 Jan 2024 08:55:52 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 9873bcac-c059-11ee-8a43-1f161083a0e0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1706720153; x=1707324953; darn=lists.xenproject.org;
        h=in-reply-to:content-transfer-encoding:content-disposition
         :mime-version:references:message-id:subject:cc:to:from:date:from:to
         :cc:subject:date:message-id:reply-to;
        bh=qtiCewdJcL+iYRfp9BUBhMJSzmg0j8GbbSxzPkR/NIA=;
        b=Esh3fhcE6+4d1uBvtw3RTHdPKMl2TQxuKnE1XsOPfr8UEyLuDceZKbrTJJ2QonwCg7
         1irYJVsFwD+MhH2jZfHTFzvqV0jk2uhbG7FDF+iqHQ5MILpi4XTXntHciFpFjdCPB0jZ
         UeRv7IaF0f0PPF4cfLZFv916b6uidiWCgpM7o=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706720153; x=1707324953;
        h=in-reply-to:content-transfer-encoding:content-disposition
         :mime-version:references:message-id:subject:cc:to:from:date
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=qtiCewdJcL+iYRfp9BUBhMJSzmg0j8GbbSxzPkR/NIA=;
        b=JgSOeFvuLwhitGp9iTC37wtr2Ux+YcS/Mj3QMWnLsdIKwGh8Lj/zNbgmFrjlNJIuKv
         QH4rfBaQWROdkIgft8FvHWQudxezDaE8ycpUEmvPSw8vhqcwfy9hK4NlM4kqu5ErpNLi
         TbFfqN4Z0ZuzrBspil9a9xYouVPxOwKx2uMjBuOkitC9jmfVAqyFURI0WBTL7jE6wjWG
         TVURNQLJi6Shn3YyQcQ1fYABqIEVtsoJ02w80X0mrz29M7L/9tX0nCTXbkheNEaV9yFo
         X6jnXHzuMrLfzrRstH12wJVrSZSIRFFUAffb3XOuuy1Tg640zthwpQzu5qpnugoDgwXM
         qEDg==
X-Gm-Message-State: AOJu0Yy3reWLVNmKh9iJu/spPWqIoN/KrzYjQBDOStwQdAtqvyNo3SsF
	itWUCSoKXc0XJrljYo6ObhYvGr3XUwwtkepVxWjKJSQGBqablcV8Ab9iTSE8vuk=
X-Google-Smtp-Source: AGHT+IF4jeGvlT/0bzrqX76DJgE5M5cIkunl7qtpEaVJaCFmHugkgo2wNiXe6uQXCfd9acpbMXiDvQ==
X-Received: by 2002:a5d:4a44:0:b0:33a:f5b6:a462 with SMTP id v4-20020a5d4a44000000b0033af5b6a462mr1500836wrs.44.1706720153348;
        Wed, 31 Jan 2024 08:55:53 -0800 (PST)
Date: Wed, 31 Jan 2024 16:55:52 +0000
From: Anthony PERARD <anthony.perard@citrix.com>
To: =?iso-8859-1?Q?J=FCrgen_Gro=DF?= <jgross@suse.com>
Cc: xen-devel@lists.xenproject.org,
	George Dunlap <george.dunlap@citrix.com>,
	Nick Rosbrook <rosbrookn@gmail.com>, Wei Liu <wl@xen.org>,
	Jason Andryuk <jandryuk@gmail.com>
Subject: Re: [PATCH v3 16/33] tools/libs/light: add backend type for 9pfs PV
 devices
Message-ID: <6b2e85b2-9e2b-4d0f-be76-36c7d85826a2@perard>
References: <20240104090055.27323-1-jgross@suse.com>
 <20240104090055.27323-17-jgross@suse.com>
 <2a2f50d3-f065-4b03-b75d-401a40fcb6fd@perard>
 <b44e2775-c396-428f-91d2-427691509a37@suse.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=iso-8859-1
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <b44e2775-c396-428f-91d2-427691509a37@suse.com>

On Wed, Jan 31, 2024 at 04:18:43PM +0100, Jrgen Gro wrote:
> On 12.01.24 17:55, Anthony PERARD wrote:
> > On Thu, Jan 04, 2024 at 10:00:38AM +0100, Juergen Gross wrote:
> > > +static int xen9pfsd_spawn(libxl__egc *egc, uint32_t domid, libxl_device_p9 *p9,
> > > +                         libxl__ao_device *aodev)
> > > +{
> > > +    STATE_AO_GC(aodev->ao);
> > > +    struct libxl__aop9_state *aop9;
> > > +    int rc;
> > > +    char *args[] = { "xen-9pfsd", NULL };
> > > +    char *path = GCSPRINTF("/local/domain/%u/libxl/xen-9pfs",
> > > +                           p9->backend_domid);
> > > +
> > > +    if (p9->type != LIBXL_P9_TYPE_XEN_9PFSD ||
> > > +        libxl__xs_read(gc, XBT_NULL, GCSPRINTF("%s/state", path)))
> > 
> > I feel like this check and this function might not work as expected.
> > What happen if we try to add more than one 9pfs "device"? libxl I think
> > is going to try to start several xen-9pfs daemon before the first one
> > have had time to write the "*/state" path.
> 
> I don't think so. The path is specific for the _backend_ domid.
> 
> > What about two different libxl process trying to spawn that daemon? Is
> > xen-9pfs going to behave well and have one giveup? But that would
> > probably mean that libxl is going to have an error due to the process
> > exiting early, maybe.
> 
> I think I need to handle this case gracefully in the daemon by exiting with
> a 0 exit code.

As long as the scenario is handle somehow, I'm happy.

> > Could you reorder the file, to make it easier to follow the code of
> > the async style? "xen9pfsd_spawn()" should be first, followed by
> > _confirm() _failed and _detached() and finally xen9pfsd_spawn_outcome().
> 
> This would need to add some forward declarations. If you really are fine with
> that, I can do the reordering.

What's wrong with forward declarations?

When you write a bunch of function that are supposed to be called one by
one, but the next one to be called is above the current function in the
source file, isn't that a bit like top-posting?
Anyway, writing function in the source code in a chronological order,
with forward declaration, is part of the libxl CODING_STYLE.

Cheers,

-- 
Anthony PERARD


From xen-devel-bounces@lists.xenproject.org Wed Jan 31 16:58:40 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 31 Jan 2024 16:58:40 +0000
Received: from list by lists.xenproject.org with outflank-mailman.674115.1048838 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rVDuy-00021O-9x; Wed, 31 Jan 2024 16:58:32 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 674115.1048838; Wed, 31 Jan 2024 16:58:32 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rVDuy-00021H-7M; Wed, 31 Jan 2024 16:58:32 +0000
Received: by outflank-mailman (input) for mailman id 674115;
 Wed, 31 Jan 2024 16:58:31 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=CJWf=JJ=cloud.com=roger.pau@srs-se1.protection.inumbo.net>)
 id 1rVDux-000216-2W
 for xen-devel@lists.xenproject.org; Wed, 31 Jan 2024 16:58:31 +0000
Received: from mail-wm1-x32b.google.com (mail-wm1-x32b.google.com
 [2a00:1450:4864:20::32b])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id f57b8f5b-c059-11ee-8a43-1f161083a0e0;
 Wed, 31 Jan 2024 17:58:30 +0100 (CET)
Received: by mail-wm1-x32b.google.com with SMTP id
 5b1f17b1804b1-40f02b8d176so314895e9.1
 for <xen-devel@lists.xenproject.org>; Wed, 31 Jan 2024 08:58:30 -0800 (PST)
Received: from localhost ([213.195.118.74]) by smtp.gmail.com with ESMTPSA id
 iv18-20020a05600c549200b0040e76b60235sm2104561wmb.8.2024.01.31.08.58.28
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 31 Jan 2024 08:58:28 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: f57b8f5b-c059-11ee-8a43-1f161083a0e0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1706720309; x=1707325109; darn=lists.xenproject.org;
        h=content-transfer-encoding:mime-version:message-id:date:subject:cc
         :to:from:from:to:cc:subject:date:message-id:reply-to;
        bh=h59ApctZWLjlHgNeWfCSIG9Kk1HlpU6022xu/02Cxk4=;
        b=H+WuLflp/1z962xnHU7znkTwAhQH5QgEfO9xDL5QKcWMsayYvcv/+gBA+YUOROHctH
         6NvMk2v1CgSwiL1GbrvsfgRNZ3iiI+hDu5UWcvIXU6tmsTrQS0uQkLZQuUMeRT2P0iAF
         ekEYaV069lmQPYctpotaDmZTT3ZkX3cDAX5aE=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706720309; x=1707325109;
        h=content-transfer-encoding:mime-version:message-id:date:subject:cc
         :to:from:x-gm-message-state:from:to:cc:subject:date:message-id
         :reply-to;
        bh=h59ApctZWLjlHgNeWfCSIG9Kk1HlpU6022xu/02Cxk4=;
        b=pSryypvspTKdPE2bhzJJT8T+uFFqPQOKGzsHTy17VXN/yQoh7c1dzumKGNYhPLRThm
         6mmVWf5tReVyxizFmqie0IewQ6XvkS1xc2+KHuS9yFw/ApnflY8Or9OBnMiualcLFY9Z
         Bb5rH1ResyuXe9+JekcrbUo4itVxXckZYedvjLPSopQMfiHNmuMrho2QejqbJjvp9nvj
         Szbi8RMapiWiZvoI9/iRFKA9/gvy6bEmBlGAm9JFm8rOVS/Z5iJ5GGD7BFgweXIwKTw5
         cI1ElD/WpF+a3Q+brsHICTJDLGj0MOxDugSZpE0i128wsQAXnvqlxZCfN6Nnmck57Qj2
         eI/Q==
X-Gm-Message-State: AOJu0YzMsgT+r3vfz4G98hVLBtit+YI+tK034VUKsVkvJYVoW4LBvPrE
	V/jz0GKd5gV9Q3YyLkk6zyRYLWmlJmadaBL1e1jWEUb2NZ+Z1CGdU25xBoyRlJwq+SokhOjD32w
	q
X-Google-Smtp-Source: AGHT+IE480PcOCdh1BzJbJghbkYESbUbt1zKksyuLQUoJlgJ5YlAjDKuYOp9yrv6pS2+wbxZujfOUw==
X-Received: by 2002:a05:600c:3b0d:b0:40e:f6f5:9398 with SMTP id m13-20020a05600c3b0d00b0040ef6f59398mr1751840wms.24.1706720309120;
        Wed, 31 Jan 2024 08:58:29 -0800 (PST)
From: Roger Pau Monne <roger.pau@citrix.com>
To: xen-devel@lists.xenproject.org
Cc: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>,
	Ross Lagerwall <ross.lagerwall@citrix.com>,
	Roger Pau Monne <roger.pau@citrix.com>
Subject: [PATCH] livepatch-build-tools: allow patch file name sizes up to 128 characters
Date: Wed, 31 Jan 2024 17:58:16 +0100
Message-ID: <20240131165816.58762-1-roger.pau@citrix.com>
X-Mailer: git-send-email 2.43.0
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

XenServer uses quite long Xen version names, and encode such in the livepatch
filename, and it's currently running out of space in the file name.

Bump max filename size to 128, so it also matches the patch name length in the
hypervisor interface.

Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
---
 livepatch-build | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/livepatch-build b/livepatch-build
index cdb852cc7fea..78dd2d801048 100755
--- a/livepatch-build
+++ b/livepatch-build
@@ -72,8 +72,8 @@ function make_patch_name()
     fi
 
     # Only allow alphanumerics and '_' and '-' in the patch name.  Everything
-    # else is replaced with '-'.  Truncate to 48 chars.
-    echo ${PATCHNAME//[^a-zA-Z0-9_-]/-} |cut -c 1-48
+    # else is replaced with '-'.  Truncate to 128 chars.
+    echo ${PATCHNAME//[^a-zA-Z0-9_-]/-} |cut -c -128
 }
 
 # Do a full normal build
-- 
2.43.0



From xen-devel-bounces@lists.xenproject.org Wed Jan 31 17:18:02 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 31 Jan 2024 17:18:02 +0000
Received: from list by lists.xenproject.org with outflank-mailman.674121.1048848 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rVEDk-0005lt-SM; Wed, 31 Jan 2024 17:17:56 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 674121.1048848; Wed, 31 Jan 2024 17:17:56 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rVEDk-0005lm-Pq; Wed, 31 Jan 2024 17:17:56 +0000
Received: by outflank-mailman (input) for mailman id 674121;
 Wed, 31 Jan 2024 17:17:55 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=6GWq=JJ=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1rVEDj-0005lg-4Z
 for xen-devel@lists.xenproject.org; Wed, 31 Jan 2024 17:17:55 +0000
Received: from mail-wm1-x32a.google.com (mail-wm1-x32a.google.com
 [2a00:1450:4864:20::32a])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id ab3c5897-c05c-11ee-8a43-1f161083a0e0;
 Wed, 31 Jan 2024 18:17:54 +0100 (CET)
Received: by mail-wm1-x32a.google.com with SMTP id
 5b1f17b1804b1-40fb804e4deso290485e9.0
 for <xen-devel@lists.xenproject.org>; Wed, 31 Jan 2024 09:17:53 -0800 (PST)
Received: from [10.80.67.30] (default-46-102-197-194.interdsl.co.uk.
 [46.102.197.194]) by smtp.gmail.com with ESMTPSA id
 j38-20020a05600c1c2600b0040ee8765901sm2128985wms.43.2024.01.31.09.17.52
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 31 Jan 2024 09:17:53 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: ab3c5897-c05c-11ee-8a43-1f161083a0e0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1706721473; x=1707326273; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=FcFkuI7zGF0EPNfPUj20h0jehmcy6uMUzMm53BQ3VP0=;
        b=P9gKixSdCLabrjpFmRitx/bxfr5yDovQ6y26bJqjauw3QpWHe/4QdnMRmKCpFEDAaL
         fXxEc9d02uOV16v87ApMHljUMRqrNEblpdi08X1DfNhDDMGhHO/SC9AvhKwPZ6IloOcm
         tMPtuQ7/sEJ/a5GIE/LgXbsr0MGFMBxT8IZAI=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706721473; x=1707326273;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=FcFkuI7zGF0EPNfPUj20h0jehmcy6uMUzMm53BQ3VP0=;
        b=afspuzrZI05ANIn0nMBrlg+lr5/gjLl6R1KNDhLfkKf3iYHYpRO+rdBqVIRkemimeT
         V0I3Q26e1mV5l24bmQaXL1WInLxwA7VJHcbveEXf2/q/zxcuD7nWHmo1rjAvFeItUtCJ
         wwFg/bcpgw+x1035hTJj7bxrCoVzIj+nHeGU+GRDrCSGlZV8HaEDZOERJckvsazDnzTk
         UYitEKE8iBS+lPjdlETDfiQjisFd4k5B8xU1LGerzVzlLqcOR718oQSkJv06PM8C7YcT
         H2hFB9lFWicbgINfH+fgCUoE6WoiHkVtiHItlY2gvWmOFy1yORBeKLFtsymwTux5LvRS
         AZOg==
X-Gm-Message-State: AOJu0YxA93z84diNkqvI9yRmKN3K9x3ZJlkM1FExmyCG4yiuS0TTRKlx
	XZPwiNyqWVJ+O/etvlnpXBaVSGLeldDaV6WGu49mQrpWsv6hF91qqk8oSe7h5eI=
X-Google-Smtp-Source: AGHT+IH0KhfzjFkmcK0swx/Yp6gV9nHY10dSDYIXgccXgrtiq2pigZuSd1EWwxiur5gub6THwd6Big==
X-Received: by 2002:a05:600c:a39e:b0:40f:b680:3e84 with SMTP id hn30-20020a05600ca39e00b0040fb6803e84mr985982wmb.2.1706721473221;
        Wed, 31 Jan 2024 09:17:53 -0800 (PST)
X-Forwarded-Encrypted: i=0; AJvYcCXaYUWftrvMOihUnuNrZUT+q7yNLT8r1+A3dzg4YtTw/4wxSfxAlMnB3t3wMRmB+p2ZuC7VcrvLDRm8DKQjz1V297Qwrma8mqUivjhsqTBKO0k=
Message-ID: <2b912ae7-b102-4d05-9095-9505c869d1d0@citrix.com>
Date: Wed, 31 Jan 2024 17:17:52 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v1 2/2] tools/ocaml: bump minimum version to OCaml 4.05
Content-Language: en-GB
To: Anthony PERARD <anthony.perard@citrix.com>,
 =?UTF-8?B?RWR3aW4gVMO2csO2aw==?= <edwin.torok@cloud.com>
Cc: xen-devel@lists.xenproject.org, Wei Liu <wl@xen.org>
References: <cover.1706697216.git.edwin.torok@cloud.com>
 <11cc8480e6e52d5c2dccc7d8d65e1362c7fba685.1706697216.git.edwin.torok@cloud.com>
 <6cf32d7b-043e-458e-b73b-68899b6303a8@perard>
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 xsFNBFLhNn8BEADVhE+Hb8i0GV6mihnnr/uiQQdPF8kUoFzCOPXkf7jQ5sLYeJa0cQi6Penp
 VtiFYznTairnVsN5J+ujSTIb+OlMSJUWV4opS7WVNnxHbFTPYZVQ3erv7NKc2iVizCRZ2Kxn
 srM1oPXWRic8BIAdYOKOloF2300SL/bIpeD+x7h3w9B/qez7nOin5NzkxgFoaUeIal12pXSR
 Q354FKFoy6Vh96gc4VRqte3jw8mPuJQpfws+Pb+swvSf/i1q1+1I4jsRQQh2m6OTADHIqg2E
 ofTYAEh7R5HfPx0EXoEDMdRjOeKn8+vvkAwhviWXTHlG3R1QkbE5M/oywnZ83udJmi+lxjJ5
 YhQ5IzomvJ16H0Bq+TLyVLO/VRksp1VR9HxCzItLNCS8PdpYYz5TC204ViycobYU65WMpzWe
 LFAGn8jSS25XIpqv0Y9k87dLbctKKA14Ifw2kq5OIVu2FuX+3i446JOa2vpCI9GcjCzi3oHV
 e00bzYiHMIl0FICrNJU0Kjho8pdo0m2uxkn6SYEpogAy9pnatUlO+erL4LqFUO7GXSdBRbw5
 gNt25XTLdSFuZtMxkY3tq8MFss5QnjhehCVPEpE6y9ZjI4XB8ad1G4oBHVGK5LMsvg22PfMJ
 ISWFSHoF/B5+lHkCKWkFxZ0gZn33ju5n6/FOdEx4B8cMJt+cWwARAQABzSlBbmRyZXcgQ29v
 cGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPsLBegQTAQgAJAIbAwULCQgHAwUVCgkI
 CwUWAgMBAAIeAQIXgAUCWKD95wIZAQAKCRBlw/kGpdefoHbdD/9AIoR3k6fKl+RFiFpyAhvO
 59ttDFI7nIAnlYngev2XUR3acFElJATHSDO0ju+hqWqAb8kVijXLops0gOfqt3VPZq9cuHlh
 IMDquatGLzAadfFx2eQYIYT+FYuMoPZy/aTUazmJIDVxP7L383grjIkn+7tAv+qeDfE+txL4
 SAm1UHNvmdfgL2/lcmL3xRh7sub3nJilM93RWX1Pe5LBSDXO45uzCGEdst6uSlzYR/MEr+5Z
 JQQ32JV64zwvf/aKaagSQSQMYNX9JFgfZ3TKWC1KJQbX5ssoX/5hNLqxMcZV3TN7kU8I3kjK
 mPec9+1nECOjjJSO/h4P0sBZyIUGfguwzhEeGf4sMCuSEM4xjCnwiBwftR17sr0spYcOpqET
 ZGcAmyYcNjy6CYadNCnfR40vhhWuCfNCBzWnUW0lFoo12wb0YnzoOLjvfD6OL3JjIUJNOmJy
 RCsJ5IA/Iz33RhSVRmROu+TztwuThClw63g7+hoyewv7BemKyuU6FTVhjjW+XUWmS/FzknSi
 dAG+insr0746cTPpSkGl3KAXeWDGJzve7/SBBfyznWCMGaf8E2P1oOdIZRxHgWj0zNr1+ooF
 /PzgLPiCI4OMUttTlEKChgbUTQ+5o0P080JojqfXwbPAyumbaYcQNiH1/xYbJdOFSiBv9rpt
 TQTBLzDKXok86M7BTQRS4TZ/ARAAkgqudHsp+hd82UVkvgnlqZjzz2vyrYfz7bkPtXaGb9H4
 Rfo7mQsEQavEBdWWjbga6eMnDqtu+FC+qeTGYebToxEyp2lKDSoAsvt8w82tIlP/EbmRbDVn
 7bhjBlfRcFjVYw8uVDPptT0TV47vpoCVkTwcyb6OltJrvg/QzV9f07DJswuda1JH3/qvYu0p
 vjPnYvCq4NsqY2XSdAJ02HrdYPFtNyPEntu1n1KK+gJrstjtw7KsZ4ygXYrsm/oCBiVW/OgU
 g/XIlGErkrxe4vQvJyVwg6YH653YTX5hLLUEL1NS4TCo47RP+wi6y+TnuAL36UtK/uFyEuPy
 wwrDVcC4cIFhYSfsO0BumEI65yu7a8aHbGfq2lW251UcoU48Z27ZUUZd2Dr6O/n8poQHbaTd
 6bJJSjzGGHZVbRP9UQ3lkmkmc0+XCHmj5WhwNNYjgbbmML7y0fsJT5RgvefAIFfHBg7fTY/i
 kBEimoUsTEQz+N4hbKwo1hULfVxDJStE4sbPhjbsPCrlXf6W9CxSyQ0qmZ2bXsLQYRj2xqd1
 bpA+1o1j2N4/au1R/uSiUFjewJdT/LX1EklKDcQwpk06Af/N7VZtSfEJeRV04unbsKVXWZAk
 uAJyDDKN99ziC0Wz5kcPyVD1HNf8bgaqGDzrv3TfYjwqayRFcMf7xJaL9xXedMcAEQEAAcLB
 XwQYAQgACQUCUuE2fwIbDAAKCRBlw/kGpdefoG4XEACD1Qf/er8EA7g23HMxYWd3FXHThrVQ
 HgiGdk5Yh632vjOm9L4sd/GCEACVQKjsu98e8o3ysitFlznEns5EAAXEbITrgKWXDDUWGYxd
 pnjj2u+GkVdsOAGk0kxczX6s+VRBhpbBI2PWnOsRJgU2n10PZ3mZD4Xu9kU2IXYmuW+e5KCA
 vTArRUdCrAtIa1k01sPipPPw6dfxx2e5asy21YOytzxuWFfJTGnVxZZSCyLUO83sh6OZhJkk
 b9rxL9wPmpN/t2IPaEKoAc0FTQZS36wAMOXkBh24PQ9gaLJvfPKpNzGD8XWR5HHF0NLIJhgg
 4ZlEXQ2fVp3XrtocHqhu4UZR4koCijgB8sB7Tb0GCpwK+C4UePdFLfhKyRdSXuvY3AHJd4CP
 4JzW0Bzq/WXY3XMOzUTYApGQpnUpdOmuQSfpV9MQO+/jo7r6yPbxT7CwRS5dcQPzUiuHLK9i
 nvjREdh84qycnx0/6dDroYhp0DFv4udxuAvt1h4wGwTPRQZerSm4xaYegEFusyhbZrI0U9tJ
 B8WrhBLXDiYlyJT6zOV2yZFuW47VrLsjYnHwn27hmxTC/7tvG3euCklmkn9Sl9IAKFu29RSo
 d5bD8kMSCYsTqtTfT6W4A3qHGvIDta3ptLYpIAOD2sY3GYq2nf3Bbzx81wZK14JdDDHUX2Rs
 6+ahAA==
In-Reply-To: <6cf32d7b-043e-458e-b73b-68899b6303a8@perard>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 31/01/2024 4:36 pm, Anthony PERARD wrote:
> On Wed, Jan 31, 2024 at 10:42:49AM +0000, Edwin Török wrote:
>> We tried bumping to 4.06.1 [1] previously, but OSSTest was holding us
>> back.
>> So bump to OCaml 4.05 instead, which should match the version on
>> OSSTest?
> Yes, it's looks that's the version osstest can currently use.
> I've started an osstest flight with this patch series and your other
> ocaml patch series, and so far osstest seems happy with it. The flight
> isn't finished but all build jobs succeed, and a lot of the tests jobs
> as well.
>
> So:
> Acked-by: Anthony PERARD <anthony.perard@citrix.com>

A question, while I think about it.

I understand why we want patch 1.  The 4.02 -> 4.03 bump is necessary to
also compile with 5.0

But why this 4.03 -> 4.05 bump?  There is no other change in this patch.

If it's "just because", then why should we take it?  All it's doing is
moving a baseline which doesn't need appear to need to move.

~Andrew


From xen-devel-bounces@lists.xenproject.org Wed Jan 31 17:30:41 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 31 Jan 2024 17:30:41 +0000
Received: from list by lists.xenproject.org with outflank-mailman.674126.1048859 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rVEPy-0000tQ-2C; Wed, 31 Jan 2024 17:30:34 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 674126.1048859; Wed, 31 Jan 2024 17:30:34 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rVEPx-0000tJ-VQ; Wed, 31 Jan 2024 17:30:33 +0000
Received: by outflank-mailman (input) for mailman id 674126;
 Wed, 31 Jan 2024 17:30:32 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=oHYx=JJ=gmail.com=oleksii.kurochko@srs-se1.protection.inumbo.net>)
 id 1rVEPv-0000tC-Uq
 for xen-devel@lists.xenproject.org; Wed, 31 Jan 2024 17:30:32 +0000
Received: from mail-lj1-x231.google.com (mail-lj1-x231.google.com
 [2a00:1450:4864:20::231])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id 6defef74-c05e-11ee-98f5-efadbce2ee36;
 Wed, 31 Jan 2024 18:30:30 +0100 (CET)
Received: by mail-lj1-x231.google.com with SMTP id
 38308e7fff4ca-2cf1288097aso1100951fa.0
 for <xen-devel@lists.xenproject.org>; Wed, 31 Jan 2024 09:30:30 -0800 (PST)
Received: from [192.168.206.239] ([94.75.70.14])
 by smtp.gmail.com with ESMTPSA id
 y29-20020a2ebb9d000000b002d0524ec71asm1017649lje.43.2024.01.31.09.30.28
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 31 Jan 2024 09:30:28 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 6defef74-c05e-11ee-98f5-efadbce2ee36
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1706722229; x=1707327029; darn=lists.xenproject.org;
        h=mime-version:user-agent:content-transfer-encoding:references
         :in-reply-to:date:cc:to:from:subject:message-id:from:to:cc:subject
         :date:message-id:reply-to;
        bh=5NRpAYNkcmI6zfM+1+lknVIORzgtVzHVuv2kmSJBoUA=;
        b=LEWZVGkBPW2/O6x1hBKmffigFKALZLo74eJaq8xZMsXQCRE/CGsJVDuaBxQ0ZX9vH+
         F2rXCqeBEIfMvL6avcX5ZuSYetfraU2uWiJ0rVCp0V+5VJ1IxvjbQuH9HaSPCNjLkhCQ
         IU5L+bH6NbrBoVSO5XU5ulwZ2LR+aIL/5yhDRFdimTaeuM6Gdi2u81DRYDh+SjVo18YW
         rzw17ZrNvLyXM86Ogs2H2JY/hy8KtoSHn6q5PhWs+X+J5x+twBrwwKA+bY7DmPWlD7Ah
         lhIOiJpbylC8M4RNIPqxOSlB1wn1bu647uunkxX/LcXMNZrh7ZZbzOwvILD49XYH4SXo
         mF8A==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706722229; x=1707327029;
        h=mime-version:user-agent:content-transfer-encoding:references
         :in-reply-to:date:cc:to:from:subject:message-id:x-gm-message-state
         :from:to:cc:subject:date:message-id:reply-to;
        bh=5NRpAYNkcmI6zfM+1+lknVIORzgtVzHVuv2kmSJBoUA=;
        b=vD0Y+2nBYNdwfqbMp+lyhwRmwDYDF3y0KJFhOAOfKeyGhiWS9F/kyezydfUqEBvIz7
         wWaPNl6JLZv8XrgJWvai2A44SrAW5l8tSDpxAzjX+RsJxohIHMvEUbMAfm389GPKZFD7
         myp/8nOzwOM49TdIMdZua3EF9iG/hsTHD/xrKX9ycDFnRagXvxvhUa3LH1jsVNUUM9by
         3IIy68FU+/2KrGw6nusrQA3GIDrsUKJrUOAdedDUOUe2laoaz2WmDHaZicWBeL7pa/uH
         IPRJnAp/fHUwSqj5EbpcTkL74/moocw4ADRjv9Qu5QAHlDebP7piTpcmtKdy6gFJT+8Q
         Y10w==
X-Gm-Message-State: AOJu0Yy632IwCglgSzKUx4kOziJ0Y7COCA2P5CJtebEJojmv/GyjkTbY
	n4Qo1bRMgtO5bFIGNpkyQNZDXb0Sn28qEeNAeMbLucCbY6gDVzqq
X-Google-Smtp-Source: AGHT+IH49fMXlowlRm7E/E9NCh/WCMaYDQNKBIYcMb7tL6xL+I0bv7IClIUzEeGzBCsf1KjYUCyjnw==
X-Received: by 2002:a2e:934c:0:b0:2cf:12af:dc09 with SMTP id m12-20020a2e934c000000b002cf12afdc09mr1720751ljh.43.1706722229076;
        Wed, 31 Jan 2024 09:30:29 -0800 (PST)
Message-ID: <2b64af14620135893720bcdb036b9e2656101407.camel@gmail.com>
Subject: Re: [PATCH v3 14/34] xen/riscv: introduce io.h
From: Oleksii <oleksii.kurochko@gmail.com>
To: Jan Beulich <jbeulich@suse.com>
Cc: Alistair Francis <alistair.francis@wdc.com>, Bob Eshleman
 <bobbyeshleman@gmail.com>, Connor Davis <connojdavis@gmail.com>, Andrew
 Cooper <andrew.cooper3@citrix.com>, George Dunlap
 <george.dunlap@citrix.com>,  Julien Grall <julien@xen.org>, Stefano
 Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>, 
 xen-devel@lists.xenproject.org
Date: Wed, 31 Jan 2024 19:30:27 +0200
In-Reply-To: <39c97d1e-05f5-46b1-a242-7fc8d5639af5@suse.com>
References: <cover.1703255175.git.oleksii.kurochko@gmail.com>
	 <5d2c032481792a3fe5bd5f1cae42d95f6e9b54b1.1703255175.git.oleksii.kurochko@gmail.com>
	 <895a60ba-547c-4064-9e4b-4ebf07dea5fb@suse.com>
	 <c9977188e834f15e84d785e6cc1dc51d49da63d2.camel@gmail.com>
	 <39c97d1e-05f5-46b1-a242-7fc8d5639af5@suse.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
User-Agent: Evolution 3.50.2 (3.50.2-1.fc39) 
MIME-Version: 1.0

On Tue, 2024-01-16 at 17:09 +0100, Jan Beulich wrote:
> On 16.01.2024 16:20, Oleksii wrote:
> > On Mon, 2024-01-15 at 17:57 +0100, Jan Beulich wrote:
> > > On 22.12.2023 16:12, Oleksii Kurochko wrote:
> > > > +/*
> > > > + * Unordered I/O memory access primitives.=C2=A0 These are even
> > > > more
> > > > relaxed than
> > > > + * the relaxed versions, as they don't even order accesses
> > > > between
> > > > successive
> > > > + * operations to the I/O regions.
> > > > + */
> > > > +#define readb_cpu(c)		({ u8=C2=A0 __r =3D __raw_readb(c);
> > > > __r;
> > > > })
> > > > +#define readw_cpu(c)		({ u16 __r =3D
> > > > le16_to_cpu((__force
> > > > __le16)__raw_readw(c)); __r; })
> > > > +#define readl_cpu(c)		({ u32 __r =3D
> > > > le32_to_cpu((__force
> > > > __le32)__raw_readl(c)); __r; })
> > > > +
> > > > +#define
> > > > writeb_cpu(v,c)		((void)__raw_writeb((v),(c)))
> > > > +#define
> > > > writew_cpu(v,c)		((void)__raw_writew((__force
> > > > u16)cpu_to_le16(v),(c)))
> > > > +#define
> > > > writel_cpu(v,c)		((void)__raw_writel((__force
> > > > u32)cpu_to_le32(v),(c)))
> > > > +
> > > > +#ifdef CONFIG_64BIT
> > > > +#define readq_cpu(c)		({ u64 __r =3D
> > > > le64_to_cpu((__force
> > > > __le64)__raw_readq(c)); __r; })
> > > > +#define
> > > > writeq_cpu(v,c)		((void)__raw_writeq((__force
> > > > u64)cpu_to_le64(v),(c)))
> > > > +#endif
> > >=20
> > > How come there are endianness assumptions here on the MMIO
> > > accessed?
> > It is a hard story.
> >=20
> > As you might expect it was copy from Linux Kernel where it was
> > decided
> > to follow only LE way:
> > https://patchwork.kernel.org/project/linux-riscv/patch/20190411115623.5=
749-3-hch@lst.de/
> > One of the answers of the author of the commit:
> > =C2=A0=C2=A0=C2=A0 And we don't know if Linux will be around if that ev=
er changes.
> > =C2=A0=C2=A0=C2=A0 The point is:
> > =C2=A0=C2=A0=C2=A0=C2=A0 a) the current RISC-V spec is LE only
> > =C2=A0=C2=A0=C2=A0=C2=A0 b) the current linux port is LE only except fo=
r this little
> > bit
> > =C2=A0=C2=A0=C2=A0 There is no point in leaving just this bitrotting co=
de around.=C2=A0
> > It
> > =C2=A0=C2=A0=C2=A0 just confuses developers, (very very slightly) slows=
 down
> > compiles
> > =C2=A0=C2=A0=C2=A0 and will bitrot.=C2=A0 It also won't be any signific=
ant help to a
> > future
> > =C2=A0=C2=A0=C2=A0 developer down the road doing a hypothetical BE RISC=
-V Linux
> > port.
>=20
> Reads to me like a justification to _omit_ the cpu_to_le<N>().
Looks like we can omit cpu_to_le<N>(). Even docs say that memory system
is little-endian except:
   However, certain application areas, such as IP networking, operate
   on big-endian data structures, and certain legacy code bases have
   been built assuming big-endian
   processors, so we expect that future specifications will describe
   big-endian or bi-endian variants
   of RISC-V.
  =20
~ Oleksii


From xen-devel-bounces@lists.xenproject.org Wed Jan 31 17:34:48 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 31 Jan 2024 17:34:48 +0000
Received: from list by lists.xenproject.org with outflank-mailman.674131.1048868 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rVEU2-0001yL-Ht; Wed, 31 Jan 2024 17:34:46 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 674131.1048868; Wed, 31 Jan 2024 17:34:46 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rVEU2-0001yE-F9; Wed, 31 Jan 2024 17:34:46 +0000
Received: by outflank-mailman (input) for mailman id 674131;
 Wed, 31 Jan 2024 17:34:45 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=/tZP=JJ=cloud.com=edwin.torok@srs-se1.protection.inumbo.net>)
 id 1rVEU1-0001ws-Ly
 for xen-devel@lists.xenproject.org; Wed, 31 Jan 2024 17:34:45 +0000
Received: from mail-wm1-x32e.google.com (mail-wm1-x32e.google.com
 [2a00:1450:4864:20::32e])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 0589fceb-c05f-11ee-8a43-1f161083a0e0;
 Wed, 31 Jan 2024 18:34:44 +0100 (CET)
Received: by mail-wm1-x32e.google.com with SMTP id
 5b1f17b1804b1-40e80046264so762175e9.0
 for <xen-devel@lists.xenproject.org>; Wed, 31 Jan 2024 09:34:44 -0800 (PST)
Received: from smtpclient.apple (default-46-102-197-194.interdsl.co.uk.
 [46.102.197.194]) by smtp.gmail.com with ESMTPSA id
 x11-20020adfec0b000000b0033afc875fd5sm4556792wrn.49.2024.01.31.09.34.43
 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128);
 Wed, 31 Jan 2024 09:34:43 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 0589fceb-c05f-11ee-8a43-1f161083a0e0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=cloud.com; s=cloud; t=1706722484; x=1707327284; darn=lists.xenproject.org;
        h=references:to:cc:in-reply-to:date:subject:mime-version:message-id
         :from:from:to:cc:subject:date:message-id:reply-to;
        bh=NFsG06WBJ19relCA7Ipnolb0+7wfirOJFSz8AcOWcL8=;
        b=flfvWzLNgpf8Y27ImtNsuXM3O5Id8g4Gn5erRUS1UIZzUk+QQLxHmYNZ/hy87J1ogk
         9jmjflpLk06jaF4u6jdp3C7CjpWZdA2xO/TW8SoR7mm//TnFYhdefXRpOX8i4LP1bzPb
         jizPQKtzGmErxLvbuOUvAtAHTNhqNDeYHyAWE=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706722484; x=1707327284;
        h=references:to:cc:in-reply-to:date:subject:mime-version:message-id
         :from:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=NFsG06WBJ19relCA7Ipnolb0+7wfirOJFSz8AcOWcL8=;
        b=qKjTVAHFYlUAApKpHCmzjftn8lCpEX9b/slW4wB4rYJ5C1CaePPrAKd+7xB7v55HiX
         Spx5z7Hzn2D5bR0xasMtdSQ+CU0mJSN5rQk2Svm2EV5S0CAqFyyu8aPGqA2FDG3PjYXO
         ZR96YWTTYS0MzuvjIz83PxxEVciIWkC9CSqD93kkw2cWj5zsoQxIanUZFjEUJHibQL4q
         8YNLzSxjsLJoS8Fu6QHu5AcsNNsZZd1S3VNJKQF04O/5+2tLnCJvTQc6wTSAG245c/oQ
         mrFiJudeHYIvLEWf2RxoODbyAziUDQA4VuzeWmPVFScXcPhZ/xWbekTRD5aUfIOq2RhC
         AaSg==
X-Gm-Message-State: AOJu0YxiMRLLRi9oK90Ea+Ue2CDOQY8vj4Bfh4b9ZTxKzaqRARd7DAQ/
	jUkKdqxEppIrbVLUJABvzUFoEniGqZzA4yiLOUyi+brQdUPgs9jQ7sWsyXP17y0=
X-Google-Smtp-Source: AGHT+IF56Kwoy0IDgdEkIW5zpeWezgMpiyMWYBRDnz4fEnhJORuAcxPGVm9kYFE/vTYnjJZQm2UQOA==
X-Received: by 2002:a05:6000:5:b0:33a:e6e9:5044 with SMTP id h5-20020a056000000500b0033ae6e95044mr1376403wrx.41.1706722483683;
        Wed, 31 Jan 2024 09:34:43 -0800 (PST)
From: Edwin Torok <edwin.torok@cloud.com>
Message-Id: <9A7DEFE3-5F71-41FF-9F9C-A3863B553FDC@cloud.com>
Content-Type: multipart/alternative;
	boundary="Apple-Mail=_6A1CB514-CD49-4EE8-8582-B80352F1AD00"
Mime-Version: 1.0 (Mac OS X Mail 16.0 \(3774.300.61.1.2\))
Subject: Re: [PATCH v1 2/2] tools/ocaml: bump minimum version to OCaml 4.05
Date: Wed, 31 Jan 2024 17:34:32 +0000
In-Reply-To: <2b912ae7-b102-4d05-9095-9505c869d1d0@citrix.com>
Cc: Anthony PERARD <anthony.perard@citrix.com>,
 Xen-devel <xen-devel@lists.xenproject.org>,
 Wei Liu <wl@xen.org>
To: Andrew Cooper <andrew.cooper3@citrix.com>
References: <cover.1706697216.git.edwin.torok@cloud.com>
 <11cc8480e6e52d5c2dccc7d8d65e1362c7fba685.1706697216.git.edwin.torok@cloud.com>
 <6cf32d7b-043e-458e-b73b-68899b6303a8@perard>
 <2b912ae7-b102-4d05-9095-9505c869d1d0@citrix.com>
X-Mailer: Apple Mail (2.3774.300.61.1.2)


--Apple-Mail=_6A1CB514-CD49-4EE8-8582-B80352F1AD00
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain;
	charset=utf-8



> On 31 Jan 2024, at 17:17, Andrew Cooper <andrew.cooper3@citrix.com> =
wrote:
>=20
> On 31/01/2024 4:36 pm, Anthony PERARD wrote:
>> On Wed, Jan 31, 2024 at 10:42:49AM +0000, Edwin T=C3=B6r=C3=B6k =
wrote:
>>> We tried bumping to 4.06.1 [1] previously, but OSSTest was holding =
us
>>> back.
>>> So bump to OCaml 4.05 instead, which should match the version on
>>> OSSTest?
>> Yes, it's looks that's the version osstest can currently use.
>> I've started an osstest flight with this patch series and your other
>> ocaml patch series, and so far osstest seems happy with it. The =
flight
>> isn't finished but all build jobs succeed, and a lot of the tests =
jobs
>> as well.
>>=20
>> So:
>> Acked-by: Anthony PERARD <anthony.perard@citrix.com>
>=20
> A question, while I think about it.
>=20
> I understand why we want patch 1.  The 4.02 -> 4.03 bump is necessary =
to
> also compile with 5.0
>=20
> But why this 4.03 -> 4.05 bump?  There is no other change in this =
patch.


The oldest supported Debian has 4.05, and I can=E2=80=99t find a non-EOL =
distro with 4.03 or 4.04 here: =
https://repology.org/project/ocaml/versions
I also have another series (that I haven=E2=80=99t sent out yet) which =
would use Dune 1.x in an attempt to use Dune in a way that works on =
OSSTest, and the oldest release I can test this on is Debian 10.

We could keep the minimum at 4.03, but would anything in the CI actually =
be able to test that?=20

Best regards,
=E2=80=94Edwin

>=20
> If it's "just because", then why should we take it?  All it's doing is
> moving a baseline which doesn't need appear to need to move.
>=20
> ~Andrew


--Apple-Mail=_6A1CB514-CD49-4EE8-8582-B80352F1AD00
Content-Transfer-Encoding: quoted-printable
Content-Type: text/html;
	charset=utf-8

<html><head><meta http-equiv=3D"content-type" content=3D"text/html; =
charset=3Dutf-8"></head><body style=3D"overflow-wrap: break-word; =
-webkit-nbsp-mode: space; line-break: after-white-space;"><br =
id=3D"lineBreakAtBeginningOfMessage"><div><br><blockquote =
type=3D"cite"><div>On 31 Jan 2024, at 17:17, Andrew Cooper =
&lt;andrew.cooper3@citrix.com&gt; wrote:</div><br =
class=3D"Apple-interchange-newline"><div><div>On 31/01/2024 4:36 pm, =
Anthony PERARD wrote:<br><blockquote type=3D"cite">On Wed, Jan 31, 2024 =
at 10:42:49AM +0000, Edwin T=C3=B6r=C3=B6k wrote:<br><blockquote =
type=3D"cite">We tried bumping to 4.06.1 [1] previously, but OSSTest was =
holding us<br>back.<br>So bump to OCaml 4.05 instead, which should match =
the version on<br>OSSTest?<br></blockquote>Yes, it's looks that's the =
version osstest can currently use.<br>I've started an osstest flight =
with this patch series and your other<br>ocaml patch series, and so far =
osstest seems happy with it. The flight<br>isn't finished but all build =
jobs succeed, and a lot of the tests jobs<br>as =
well.<br><br>So:<br>Acked-by: Anthony PERARD =
&lt;anthony.perard@citrix.com&gt;<br></blockquote><br>A question, while =
I think about it.<br><br>I understand why we want patch 1.&nbsp; The =
4.02 -&gt; 4.03 bump is necessary to<br>also compile with 5.0<br><br>But =
why this 4.03 -&gt; 4.05 bump?&nbsp; There is no other change in this =
patch.<br></div></div></blockquote><div><br></div><div><br></div><div>The =
oldest supported Debian has 4.05, and I can=E2=80=99t find a non-EOL =
distro with 4.03 or 4.04 here:&nbsp;<a =
href=3D"https://repology.org/project/ocaml/versions">https://repology.org/=
project/ocaml/versions</a></div><div>I also have another series (that I =
haven=E2=80=99t sent out yet) which would use Dune 1.x in an attempt to =
use Dune in a way that works on OSSTest, and the oldest release I can =
test this on is Debian 10.</div><div><br></div><div>We could keep the =
minimum at 4.03, but would anything in the CI actually be able to test =
that?&nbsp;</div><div><br></div><div>Best =
regards,</div><div>=E2=80=94Edwin</div><br><blockquote =
type=3D"cite"><div><div><br>If it's "just because", then why should we =
take it?&nbsp; All it's doing is<br>moving a baseline which doesn't need =
appear to need to =
move.<br><br>~Andrew<br></div></div></blockquote></div><br></body></html>=

--Apple-Mail=_6A1CB514-CD49-4EE8-8582-B80352F1AD00--


From xen-devel-bounces@lists.xenproject.org Wed Jan 31 17:45:36 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 31 Jan 2024 17:45:36 +0000
Received: from list by lists.xenproject.org with outflank-mailman.674137.1048887 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rVEeR-0004qZ-L0; Wed, 31 Jan 2024 17:45:31 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 674137.1048887; Wed, 31 Jan 2024 17:45:31 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rVEeR-0004qS-GT; Wed, 31 Jan 2024 17:45:31 +0000
Received: by outflank-mailman (input) for mailman id 674137;
 Wed, 31 Jan 2024 17:45:30 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rVEeQ-0004qI-PF; Wed, 31 Jan 2024 17:45:30 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rVEeQ-0003Tq-Nb; Wed, 31 Jan 2024 17:45:30 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rVEeQ-0006HN-9w; Wed, 31 Jan 2024 17:45:30 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rVEeQ-00019d-9R; Wed, 31 Jan 2024 17:45:30 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=rN4skA0VC5wnf8jJ8BFRxqhJuDLrMQXmdbZfq3WtaGo=; b=V9Zc851OQaFmu4+V0ca5zTW+9W
	x/E6jfpI6kyOx76Ax5sogCtALP+8qBBH9+80eV0RQvOIEj7n61dMcHU6CfRA7/U/ghybXg/+PPWXq
	eSseOBCWwuDqlD2O8tQHQE7bk2qK7dh2uCpUOn6rz7uG1OqT7wAXKT0phjAh4pAgwYnM=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184532-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [xen-4.18-testing test] 184532: tolerable FAIL - PUSHED
X-Osstest-Failures:
    xen-4.18-testing:test-amd64-i386-xl-qemuu-debianhvm-i386-xsm:guest-localmigrate/x10:fail:heisenbug
    xen-4.18-testing:test-armhf-armhf-libvirt:saverestore-support-check:fail:nonblocking
    xen-4.18-testing:test-amd64-amd64-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    xen-4.18-testing:test-amd64-amd64-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    xen-4.18-testing:test-armhf-armhf-libvirt-qcow2:saverestore-support-check:fail:nonblocking
    xen-4.18-testing:test-amd64-amd64-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    xen-4.18-testing:test-armhf-armhf-libvirt-raw:saverestore-support-check:fail:nonblocking
    xen-4.18-testing:test-amd64-amd64-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    xen-4.18-testing:test-amd64-i386-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    xen-4.18-testing:test-amd64-i386-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    xen-4.18-testing:test-amd64-amd64-qemuu-nested-amd:debian-hvm-install/l1/l2:fail:nonblocking
    xen-4.18-testing:test-amd64-i386-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    xen-4.18-testing:test-amd64-i386-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    xen-4.18-testing:test-amd64-i386-libvirt-xsm:migrate-support-check:fail:nonblocking
    xen-4.18-testing:test-arm64-arm64-xl:migrate-support-check:fail:nonblocking
    xen-4.18-testing:test-arm64-arm64-xl:saverestore-support-check:fail:nonblocking
    xen-4.18-testing:test-amd64-amd64-libvirt-xsm:migrate-support-check:fail:nonblocking
    xen-4.18-testing:test-amd64-i386-libvirt:migrate-support-check:fail:nonblocking
    xen-4.18-testing:test-amd64-i386-xl-pvshim:guest-start:fail:nonblocking
    xen-4.18-testing:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    xen-4.18-testing:test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    xen-4.18-testing:test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    xen-4.18-testing:test-arm64-arm64-xl-credit1:migrate-support-check:fail:nonblocking
    xen-4.18-testing:test-arm64-arm64-xl-credit1:saverestore-support-check:fail:nonblocking
    xen-4.18-testing:test-arm64-arm64-xl-credit2:migrate-support-check:fail:nonblocking
    xen-4.18-testing:test-arm64-arm64-xl-credit2:saverestore-support-check:fail:nonblocking
    xen-4.18-testing:test-arm64-arm64-xl-thunderx:migrate-support-check:fail:nonblocking
    xen-4.18-testing:test-arm64-arm64-xl-thunderx:saverestore-support-check:fail:nonblocking
    xen-4.18-testing:test-arm64-arm64-xl-xsm:migrate-support-check:fail:nonblocking
    xen-4.18-testing:test-arm64-arm64-xl-xsm:saverestore-support-check:fail:nonblocking
    xen-4.18-testing:test-armhf-armhf-xl-vhd:migrate-support-check:fail:nonblocking
    xen-4.18-testing:test-armhf-armhf-xl-vhd:saverestore-support-check:fail:nonblocking
    xen-4.18-testing:test-arm64-arm64-libvirt-xsm:migrate-support-check:fail:nonblocking
    xen-4.18-testing:test-arm64-arm64-libvirt-xsm:saverestore-support-check:fail:nonblocking
    xen-4.18-testing:test-armhf-armhf-xl-rtds:migrate-support-check:fail:nonblocking
    xen-4.18-testing:test-armhf-armhf-xl-rtds:saverestore-support-check:fail:nonblocking
    xen-4.18-testing:test-armhf-armhf-libvirt:migrate-support-check:fail:nonblocking
    xen-4.18-testing:test-armhf-armhf-xl-credit1:migrate-support-check:fail:nonblocking
    xen-4.18-testing:test-armhf-armhf-xl:migrate-support-check:fail:nonblocking
    xen-4.18-testing:test-armhf-armhf-xl-credit1:saverestore-support-check:fail:nonblocking
    xen-4.18-testing:test-armhf-armhf-xl:saverestore-support-check:fail:nonblocking
    xen-4.18-testing:test-armhf-armhf-xl-credit2:migrate-support-check:fail:nonblocking
    xen-4.18-testing:test-armhf-armhf-xl-credit2:saverestore-support-check:fail:nonblocking
    xen-4.18-testing:test-armhf-armhf-xl-arndale:migrate-support-check:fail:nonblocking
    xen-4.18-testing:test-armhf-armhf-xl-arndale:saverestore-support-check:fail:nonblocking
    xen-4.18-testing:test-amd64-amd64-libvirt-vhd:migrate-support-check:fail:nonblocking
    xen-4.18-testing:test-armhf-armhf-xl-multivcpu:migrate-support-check:fail:nonblocking
    xen-4.18-testing:test-armhf-armhf-xl-multivcpu:saverestore-support-check:fail:nonblocking
    xen-4.18-testing:test-amd64-i386-libvirt-raw:migrate-support-check:fail:nonblocking
    xen-4.18-testing:test-arm64-arm64-libvirt-raw:migrate-support-check:fail:nonblocking
    xen-4.18-testing:test-arm64-arm64-libvirt-raw:saverestore-support-check:fail:nonblocking
    xen-4.18-testing:test-arm64-arm64-xl-vhd:migrate-support-check:fail:nonblocking
    xen-4.18-testing:test-arm64-arm64-xl-vhd:saverestore-support-check:fail:nonblocking
    xen-4.18-testing:test-armhf-armhf-libvirt-qcow2:migrate-support-check:fail:nonblocking
    xen-4.18-testing:test-armhf-armhf-libvirt-raw:migrate-support-check:fail:nonblocking
X-Osstest-Versions-This:
    xen=c7ac596a575a05d6ff1e35c3ff98bc4d143712d2
X-Osstest-Versions-That:
    xen=1792d1723b7fb45a20b145d2de4d233913b22c09
From: osstest service owner <osstest-admin@xenproject.org>
Date: Wed, 31 Jan 2024 17:45:30 +0000

flight 184532 xen-4.18-testing real [real]
flight 184543 xen-4.18-testing real-retest [real]
http://logs.test-lab.xenproject.org/osstest/logs/184532/
http://logs.test-lab.xenproject.org/osstest/logs/184543/

Failures :-/ but no regressions.

Tests which are failing intermittently (not blocking):
 test-amd64-i386-xl-qemuu-debianhvm-i386-xsm 18 guest-localmigrate/x10 fail pass in 184543-retest

Tests which did not succeed, but are not blocking:
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 184133
 test-amd64-amd64-xl-qemut-win7-amd64 19 guest-stop            fail like 184133
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 184133
 test-armhf-armhf-libvirt-qcow2 15 saverestore-support-check   fail like 184133
 test-amd64-amd64-xl-qemut-ws16-amd64 19 guest-stop            fail like 184133
 test-armhf-armhf-libvirt-raw 15 saverestore-support-check    fail  like 184133
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 184133
 test-amd64-i386-xl-qemuu-ws16-amd64 19 guest-stop             fail like 184133
 test-amd64-i386-xl-qemut-win7-amd64 19 guest-stop             fail like 184133
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 184133
 test-amd64-i386-xl-qemut-ws16-amd64 19 guest-stop             fail like 184133
 test-amd64-i386-xl-qemuu-win7-amd64 19 guest-stop             fail like 184133
 test-amd64-i386-libvirt-xsm  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl          15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl          16 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-amd64-i386-libvirt      15 migrate-support-check        fail   never pass
 test-amd64-i386-xl-pvshim    14 guest-start                  fail   never pass
 test-amd64-amd64-libvirt     15 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-arm64-arm64-xl-credit1  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit1  16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-credit2  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit2  16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-thunderx 15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-thunderx 16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-xsm      15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-xsm      16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-vhd      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      15 saverestore-support-check    fail   never pass
 test-arm64-arm64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-xsm 16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-rtds     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-rtds     16 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit1  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit1  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl          16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-credit2  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit2  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-arndale  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-arndale  16 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-vhd 14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-multivcpu 15 migrate-support-check        fail  never pass
 test-armhf-armhf-xl-multivcpu 16 saverestore-support-check    fail  never pass
 test-amd64-i386-libvirt-raw  14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 14 migrate-support-check        fail   never pass
 test-arm64-arm64-libvirt-raw 15 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-vhd      14 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-vhd      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-qcow2 14 migrate-support-check        fail never pass
 test-armhf-armhf-libvirt-raw 14 migrate-support-check        fail   never pass

version targeted for testing:
 xen                  c7ac596a575a05d6ff1e35c3ff98bc4d143712d2
baseline version:
 xen                  1792d1723b7fb45a20b145d2de4d233913b22c09

Last test of basis   184133  2023-12-14 02:10:36 Z   48 days
Testing same since   184532  2024-01-30 14:07:14 Z    1 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Andrew Cooper <andrew.cooper3@citrix.com>
  Roger Pau Monné <roger.pau@citrix.com>

jobs:
 build-amd64-xsm                                              pass    
 build-arm64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64-xtf                                              pass    
 build-amd64                                                  pass    
 build-arm64                                                  pass    
 build-armhf                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-arm64-libvirt                                          pass    
 build-armhf-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-prev                                             pass    
 build-i386-prev                                              pass    
 build-amd64-pvops                                            pass    
 build-arm64-pvops                                            pass    
 build-armhf-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-xtf-amd64-amd64-1                                       pass    
 test-xtf-amd64-amd64-2                                       pass    
 test-xtf-amd64-amd64-3                                       pass    
 test-xtf-amd64-amd64-4                                       pass    
 test-xtf-amd64-amd64-5                                       pass    
 test-amd64-amd64-xl                                          pass    
 test-amd64-coresched-amd64-xl                                pass    
 test-arm64-arm64-xl                                          pass    
 test-armhf-armhf-xl                                          pass    
 test-amd64-i386-xl                                           pass    
 test-amd64-coresched-i386-xl                                 pass    
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm           pass    
 test-amd64-i386-libvirt-qemuu-debianhvm-amd64-xsm            pass    
 test-amd64-amd64-xl-qemut-stubdom-debianhvm-amd64-xsm        pass    
 test-amd64-i386-xl-qemut-stubdom-debianhvm-amd64-xsm         pass    
 test-amd64-amd64-xl-qemut-debianhvm-i386-xsm                 pass    
 test-amd64-i386-xl-qemut-debianhvm-i386-xsm                  pass    
 test-amd64-amd64-xl-qemuu-debianhvm-i386-xsm                 pass    
 test-amd64-i386-xl-qemuu-debianhvm-i386-xsm                  fail    
 test-amd64-amd64-libvirt-xsm                                 pass    
 test-arm64-arm64-libvirt-xsm                                 pass    
 test-amd64-i386-libvirt-xsm                                  pass    
 test-amd64-amd64-xl-xsm                                      pass    
 test-arm64-arm64-xl-xsm                                      pass    
 test-amd64-i386-xl-xsm                                       pass    
 test-amd64-amd64-qemuu-nested-amd                            fail    
 test-amd64-amd64-xl-pvhv2-amd                                pass    
 test-amd64-i386-qemut-rhel6hvm-amd                           pass    
 test-amd64-i386-qemuu-rhel6hvm-amd                           pass    
 test-amd64-amd64-dom0pvh-xl-amd                              pass    
 test-amd64-amd64-xl-qemut-debianhvm-amd64                    pass    
 test-amd64-i386-xl-qemut-debianhvm-amd64                     pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64                    pass    
 test-amd64-i386-xl-qemuu-debianhvm-amd64                     pass    
 test-amd64-i386-freebsd10-amd64                              pass    
 test-amd64-amd64-qemuu-freebsd11-amd64                       pass    
 test-amd64-amd64-qemuu-freebsd12-amd64                       pass    
 test-amd64-amd64-xl-qemuu-ovmf-amd64                         pass    
 test-amd64-i386-xl-qemuu-ovmf-amd64                          pass    
 test-amd64-amd64-xl-qemut-win7-amd64                         fail    
 test-amd64-i386-xl-qemut-win7-amd64                          fail    
 test-amd64-amd64-xl-qemuu-win7-amd64                         fail    
 test-amd64-i386-xl-qemuu-win7-amd64                          fail    
 test-amd64-amd64-xl-qemut-ws16-amd64                         fail    
 test-amd64-i386-xl-qemut-ws16-amd64                          fail    
 test-amd64-amd64-xl-qemuu-ws16-amd64                         fail    
 test-amd64-i386-xl-qemuu-ws16-amd64                          fail    
 test-armhf-armhf-xl-arndale                                  pass    
 test-amd64-amd64-xl-credit1                                  pass    
 test-arm64-arm64-xl-credit1                                  pass    
 test-armhf-armhf-xl-credit1                                  pass    
 test-amd64-amd64-xl-credit2                                  pass    
 test-arm64-arm64-xl-credit2                                  pass    
 test-armhf-armhf-xl-credit2                                  pass    
 test-amd64-amd64-xl-qemuu-dmrestrict-amd64-dmrestrict        pass    
 test-amd64-i386-xl-qemuu-dmrestrict-amd64-dmrestrict         pass    
 test-amd64-i386-freebsd10-i386                               pass    
 test-amd64-amd64-qemuu-nested-intel                          pass    
 test-amd64-amd64-xl-pvhv2-intel                              pass    
 test-amd64-i386-qemut-rhel6hvm-intel                         pass    
 test-amd64-i386-qemuu-rhel6hvm-intel                         pass    
 test-amd64-amd64-dom0pvh-xl-intel                            pass    
 test-amd64-amd64-libvirt                                     pass    
 test-armhf-armhf-libvirt                                     pass    
 test-amd64-i386-libvirt                                      pass    
 test-amd64-amd64-livepatch                                   pass    
 test-amd64-i386-livepatch                                    pass    
 test-amd64-amd64-migrupgrade                                 pass    
 test-amd64-i386-migrupgrade                                  pass    
 test-amd64-amd64-xl-multivcpu                                pass    
 test-armhf-armhf-xl-multivcpu                                pass    
 test-amd64-amd64-pair                                        pass    
 test-amd64-i386-pair                                         pass    
 test-amd64-amd64-libvirt-pair                                pass    
 test-amd64-i386-libvirt-pair                                 pass    
 test-amd64-amd64-xl-pvshim                                   pass    
 test-amd64-i386-xl-pvshim                                    fail    
 test-amd64-amd64-pygrub                                      pass    
 test-armhf-armhf-libvirt-qcow2                               pass    
 test-amd64-amd64-xl-qcow2                                    pass    
 test-arm64-arm64-libvirt-raw                                 pass    
 test-armhf-armhf-libvirt-raw                                 pass    
 test-amd64-i386-libvirt-raw                                  pass    
 test-amd64-amd64-xl-rtds                                     pass    
 test-armhf-armhf-xl-rtds                                     pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64-shadow             pass    
 test-amd64-i386-xl-qemuu-debianhvm-amd64-shadow              pass    
 test-amd64-amd64-xl-shadow                                   pass    
 test-amd64-i386-xl-shadow                                    pass    
 test-arm64-arm64-xl-thunderx                                 pass    
 test-amd64-amd64-libvirt-vhd                                 pass    
 test-arm64-arm64-xl-vhd                                      pass    
 test-armhf-armhf-xl-vhd                                      pass    
 test-amd64-i386-xl-vhd                                       pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Pushing revision :

To xenbits.xen.org:/home/xen/git/xen.git
   1792d1723b..c7ac596a57  c7ac596a575a05d6ff1e35c3ff98bc4d143712d2 -> stable-4.18


From xen-devel-bounces@lists.xenproject.org Wed Jan 31 17:51:03 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 31 Jan 2024 17:51:03 +0000
Received: from list by lists.xenproject.org with outflank-mailman.674144.1048897 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rVEji-0007NX-By; Wed, 31 Jan 2024 17:50:58 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 674144.1048897; Wed, 31 Jan 2024 17:50:58 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rVEji-0007NQ-7i; Wed, 31 Jan 2024 17:50:58 +0000
Received: by outflank-mailman (input) for mailman id 674144;
 Wed, 31 Jan 2024 17:50:57 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=L0zX=JJ=linaro.org=alex.bennee@srs-se1.protection.inumbo.net>)
 id 1rVEjg-0007NK-Uo
 for xen-devel@lists.xenproject.org; Wed, 31 Jan 2024 17:50:57 +0000
Received: from mail-lf1-x12d.google.com (mail-lf1-x12d.google.com
 [2a00:1450:4864:20::12d])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 4890c095-c061-11ee-8a43-1f161083a0e0;
 Wed, 31 Jan 2024 18:50:55 +0100 (CET)
Received: by mail-lf1-x12d.google.com with SMTP id
 2adb3069b0e04-51121c08535so2098831e87.3
 for <xen-devel@lists.xenproject.org>; Wed, 31 Jan 2024 09:50:55 -0800 (PST)
Received: from draig.lan ([85.9.250.243]) by smtp.gmail.com with ESMTPSA id
 x3-20020a05600c2d0300b0040fb0c84c64sm2144891wmf.14.2024.01.31.09.50.54
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 31 Jan 2024 09:50:55 -0800 (PST)
Received: from draig.lan (localhost [IPv6:::1])
 by draig.lan (Postfix) with ESMTP id 5B5AA5F7A8;
 Wed, 31 Jan 2024 17:50:54 +0000 (GMT)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 4890c095-c061-11ee-8a43-1f161083a0e0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=linaro.org; s=google; t=1706723455; x=1707328255; darn=lists.xenproject.org;
        h=content-transfer-encoding:mime-version:message-id:date:subject:cc
         :to:from:from:to:cc:subject:date:message-id:reply-to;
        bh=UYhl5BgNrSittXccLvyhY2byvB1ghpoW9pMQL6HzhQ0=;
        b=inf+7aznLI4jkJLh+z/XTRFqkCI5i54no4579ajAkmEw7l27nnUxgPSaYBs5vNIZ5K
         kAIo0voGr+v4j1Jd6DwqsnMgL9Z06fVdxiYYBXDZJUoAcZSplu187BuyqJStdaT4Bi2e
         ocvqY/DF8DLivzvBaqE3VM6Q8JH0WZtnWSRDI0RrGf5L0KPfQ7g0E11/iR54UhYBK0IO
         ExtQ84nsYfnx+SYlR4OZU/QwW7a0Y357psjNsVcCmESH7o7rFSpwZETNbNZkwvrmxdYM
         xqPJlq6fnY26KrXoVy74eJaiO0N7NQafdOCulvZSBBz41NeibcvVN8VyZR4ZRylGQ4eN
         gB5g==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706723455; x=1707328255;
        h=content-transfer-encoding:mime-version:message-id:date:subject:cc
         :to:from:x-gm-message-state:from:to:cc:subject:date:message-id
         :reply-to;
        bh=UYhl5BgNrSittXccLvyhY2byvB1ghpoW9pMQL6HzhQ0=;
        b=LAMUmQKoRuooVoBkiHe0Knqtg5Kmpii2ebpl/6hdpHR1R7e8w43Whe3kDE0bTcvivQ
         VpEHdBF9/IZs5Ih+/DnFMXCcChcbvN+libqfJNLaXhD2fvr12eZMB7WkBjcW3B/iDTff
         QiY2hTyEbuc2jZKtLTn2z4xMj7g8O7yt0XgOrL6OBEhomnRav/K1h5Se+OmURoQgAcQT
         /liFz5pvAjUWSiyA+aOGquy/AD6we7r4sXFbqKPcOfQKb2MOWjO+ZIalWH6CcKBDwwWu
         ddXeNUj56rwt03j6+PhJoSWMA99daHGjHHaLqL+6lqspsGJ8slytyO9f/in5I8vwNIPo
         AsZQ==
X-Gm-Message-State: AOJu0Yw0j/4F5BbCjGV1zv8tQCvtADnYXyFB4r+rNa/9rEfFxMUb0fN3
	bmseldaNLAaWzIFiIJS9z/m7xembURXx7jgGsOB57CLMCNKXhTnxS5z9hvmHFxI=
X-Google-Smtp-Source: AGHT+IG/NAnFraKtzJg1gKLYNXRIOrWU6Lhrh7OVd7ORbWUPl43521LoS88c8Bw7+IhLvI/8uHnnRg==
X-Received: by 2002:ac2:4187:0:b0:511:2bd4:d987 with SMTP id z7-20020ac24187000000b005112bd4d987mr68378lfh.58.1706723455248;
        Wed, 31 Jan 2024 09:50:55 -0800 (PST)
From: =?UTF-8?q?Alex=20Benn=C3=A9e?= <alex.bennee@linaro.org>
To: xen-devel@lists.xenproject.org
Cc: julien@xen.org,
	sstabellini@kernel.org,
	bertrand.marquis@arm.com,
	=?UTF-8?q?Alex=20Benn=C3=A9e?= <alex.bennee@linaro.org>,
	Manos Pitsidianakis <manos.pitsidianakis@linaro.org>
Subject: [RFC PATCH] xen/arm: improve handling of load/store instruction decoding
Date: Wed, 31 Jan 2024 17:50:43 +0000
Message-Id: <20240131175043.1488886-1-alex.bennee@linaro.org>
X-Mailer: git-send-email 2.39.2
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

While debugging VirtIO on Arm we ran into a warning due to memory
being memcpy'd across MMIO space. While the bug was in the mappings
the warning was a little confusing:

  (XEN) d47v2 Rn should not be equal to Rt except for r31
  (XEN) d47v2 unhandled Arm instruction 0x3d800000
  (XEN) d47v2 Unable to decode instruction

The Rn == Rt warning is only applicable to single register load/stores
so add some verification steps before to weed out unexpected accesses.

I updated the Arm ARM reference to the online instruction decoding
table which will hopefully be more stable than the Arm ARM section
numbers.

Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
Cc: Manos Pitsidianakis <manos.pitsidianakis@linaro.org>
---
 xen/arch/arm/decode.c | 20 ++++++++++++++++++++
 xen/arch/arm/decode.h | 38 +++++++++++++++++++++++++++++++++++---
 2 files changed, 55 insertions(+), 3 deletions(-)

diff --git a/xen/arch/arm/decode.c b/xen/arch/arm/decode.c
index 2537dbebc1..824025c24c 100644
--- a/xen/arch/arm/decode.c
+++ b/xen/arch/arm/decode.c
@@ -87,6 +87,26 @@ static int decode_arm64(register_t pc, mmio_info_t *info)
         return 1;
     }
 
+    /*
+     * Check this is a load/store of some sort
+     */
+    if ( (opcode.top_level.op1 & 0b0101) != 0b0100 )
+    {
+        gprintk(XENLOG_ERR, "Not a load/store instruction op1=%d",
+                opcode.top_level.op1);
+        goto bad_loadstore;
+    }
+
+    /*
+     * We are only expecting single register load/stores
+     */
+    if ( (opcode.ld_st.op0 & 0b0011) != 0b0011 )
+    {
+        gprintk(XENLOG_ERR, "Not single register load/store op0=%d",
+                opcode.ld_st.op0);
+        goto bad_loadstore;
+    }
+
     /*
      * Refer Arm v8 ARM DDI 0487G.b, Page - C6-1107
      * "Shared decode for all encodings" (under ldr immediate)
diff --git a/xen/arch/arm/decode.h b/xen/arch/arm/decode.h
index 13db8ac968..b1580178eb 100644
--- a/xen/arch/arm/decode.h
+++ b/xen/arch/arm/decode.h
@@ -24,9 +24,27 @@
 #include <asm/processor.h>
 
 /*
- * Refer to the ARMv8 ARM (DDI 0487G.b), Section C4.1.4 Loads and Stores
- * Page 318 specifies the following bit pattern for
- * "load/store register (immediate post-indexed)".
+ * From:
+ * https://developer.arm.com/documentation/ddi0602/2023-12/Index-by-Encoding
+ *
+ * Top level encoding:
+ *
+ *   31  30  29 28  25 24                                             0
+ * ___________________________________________________________________
+ * |op0 | x  x |  op1 |                                               |
+ * |____|______|______|_______________________________________________|
+ *
+ * op0 = 0 is reserved
+ * op1 = x1x0 for Loads and Stores
+ *
+ * Loads and Stores
+ *
+ *  31    28 27   26   25  24             9 8                        0
+ * ___________________________________________________________________
+ * |  op0   | 1 | op1 | 0 |       op2      |                          |
+ * |________|___|_____|___|________________|__________________________|
+ *
+ * Load/store register (immediate post-indexed)
  *
  * 31 30 29  27 26 25  23   21 20              11   9         4       0
  * ___________________________________________________________________
@@ -35,6 +53,20 @@
  */
 union instr {
     uint32_t value;
+    struct {
+        unsigned int ign2:25;
+        unsigned int op1:4;     /* instruction class */
+        unsigned int ign1:2;
+        unsigned int op0:1;     /* value = 1b */
+    } top_level;
+    struct {
+        unsigned int ign1:9;
+        unsigned int op2:15;
+        unsigned int fixed1:1; /* value = 0b */
+        unsigned int op1:1;
+        unsigned int fixed2:1; /* value = 1b */
+        unsigned int op0:4;
+    } ld_st;
     struct {
         unsigned int rt:5;     /* Rt register */
         unsigned int rn:5;     /* Rn register */
-- 
2.39.2



From xen-devel-bounces@lists.xenproject.org Wed Jan 31 17:51:55 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 31 Jan 2024 17:51:55 +0000
Received: from list by lists.xenproject.org with outflank-mailman.674145.1048907 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rVEkd-0007ru-KJ; Wed, 31 Jan 2024 17:51:55 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 674145.1048907; Wed, 31 Jan 2024 17:51:55 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rVEkd-0007rn-H0; Wed, 31 Jan 2024 17:51:55 +0000
Received: by outflank-mailman (input) for mailman id 674145;
 Wed, 31 Jan 2024 17:51:54 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <SRS0=qP3Y=JJ=rabbit.lu=slack@srs-se1.protection.inumbo.net>)
 id 1rVEkc-0007rf-9A
 for xen-devel@lists.xenproject.org; Wed, 31 Jan 2024 17:51:54 +0000
Received: from mail-lf1-x131.google.com (mail-lf1-x131.google.com
 [2a00:1450:4864:20::131])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 6ad6abe7-c061-11ee-8a43-1f161083a0e0;
 Wed, 31 Jan 2024 18:51:53 +0100 (CET)
Received: by mail-lf1-x131.google.com with SMTP id
 2adb3069b0e04-51117bfd452so4350335e87.3
 for <xen-devel@lists.xenproject.org>; Wed, 31 Jan 2024 09:51:53 -0800 (PST)
Received: from localhost.localdomain (82-64-138-184.subs.proxad.net.
 [82.64.138.184]) by smtp.googlemail.com with ESMTPSA id
 18-20020a05600c025200b0040d4e1393dcsm2202014wmj.20.2024.01.31.09.51.52
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 31 Jan 2024 09:51:52 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 6ad6abe7-c061-11ee-8a43-1f161083a0e0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=rabbit-lu.20230601.gappssmtp.com; s=20230601; t=1706723513; x=1707328313; darn=lists.xenproject.org;
        h=content-transfer-encoding:mime-version:message-id:date:subject:cc
         :to:from:from:to:cc:subject:date:message-id:reply-to;
        bh=Pr+XZeL59/ULvCtUWLkROAH0Yyo92CQbvVTj7VVhUqA=;
        b=Y/ovmtSEeuZrzozgZaqGHLwvWHX20FIkUiUYg7Sj/iSAHclxijOXbEQXSsrbHP5Dvh
         gsu5m6Ias6jWEU+gMrVAcyeEATbm311jUjdiVSnd7i8soQldM/baAGNoAipJKajBnuLd
         6qRpUWoy0+lhgSF9cjeLeU8Hy4qMk1s8F6gpg+dAq9fA/6AG2mUGRTZRgHgaJh1zAknb
         9vbOYyhLGenZbXvewbyzgnOt7FwphSMf3xJ+wjDQWovTpsIcu2ah5xmEKr75vNz4csbQ
         qHEjzkBYungUz2lIh6ch+c9TzI0Fxx40i/0lnt2BbyPlsstA1chZxUZzTy4uUCIUqU09
         OaFQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706723513; x=1707328313;
        h=content-transfer-encoding:mime-version:message-id:date:subject:cc
         :to:from:x-gm-message-state:from:to:cc:subject:date:message-id
         :reply-to;
        bh=Pr+XZeL59/ULvCtUWLkROAH0Yyo92CQbvVTj7VVhUqA=;
        b=E6cGAe7QbVsRSLr/MEV/QJYISHGWNe4Ud+9VE6ccrnU+grghH8KCZJOQ33s8K614vr
         GnX0tBTLdCkBJ/IlUGdpcAVmAoFYD0YTUWDt3M9oNifxYlsXZRLn/W2r+kajRvSZUkav
         +/N40qXCNqQJ2v2fzq94eV6cu1CbkdSWAd5QW9OFkBlXVJI8uewxK4um9eklQ93i8OpT
         K6txBnV3nUdNIUigeePa7RkKoqhFgPserpyiVT7T5Ksa5BuT+K1+ZTCUKO/E4yDbjFM3
         uNNNXTZvm6wFt97aFyrqbBgRE+tkAZ2pOCsPg4/3qTSzVi9/C+jpz7n/Dui+pm5z/68P
         EYlQ==
X-Gm-Message-State: AOJu0YzXcxBDRa2aNpF4SbvMB++riGuKnkqmoJ40sjjypTlpYK3len2p
	w3D5KNlFmaHvCfGa69vgz4HxfH6Jdz8ZFBMMMCGyH7RbWAiyzeRUeHW9O9vCmLqke835Wp0ZsjP
	P
X-Google-Smtp-Source: AGHT+IFeAqpG/JV+ntc6HGPNu0pS034ko1aPLuX6cqVhzAK0zOC7vgHGR1gw3hZmwBHVEXSS9NDBTQ==
X-Received: by 2002:ac2:5a0c:0:b0:50e:504e:6c34 with SMTP id q12-20020ac25a0c000000b0050e504e6c34mr148354lfn.3.1706723512707;
        Wed, 31 Jan 2024 09:51:52 -0800 (PST)
From: =?UTF-8?q?Cyril=20R=C3=A9bert?= <slack@rabbit.lu>
To: xen-devel@lists.xenproject.org
Cc: =?UTF-8?q?Cyril=20R=C3=A9bert?= <slack@rabbit.lu>,
	Wei Liu <wl@xen.org>,
	Anthony PERARD <anthony.perard@citrix.com>
Subject: [PATCH] tools/xentop: add option to display dom0 first
Date: Wed, 31 Jan 2024 18:51:34 +0100
Message-Id: <87846acd5b31991e38561c9765eb97730c79d0f3.1706723494.git.slack@rabbit.lu>
X-Mailer: git-send-email 2.39.2
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Add a command line option to xentop to be able to display dom0 first, on top of the list.
This is unconditional, so sorting domains with the S option will also ignore dom0.

Signed-off-by: Cyril Rébert (zithro) <slack@rabbit.lu>
---
 tools/xentop/xentop.c | 31 +++++++++++++++++++++++++++----
 1 file changed, 27 insertions(+), 4 deletions(-)

diff --git a/tools/xentop/xentop.c b/tools/xentop/xentop.c
index 950e8935c4..9068c53fd2 100644
--- a/tools/xentop/xentop.c
+++ b/tools/xentop/xentop.c
@@ -211,6 +211,7 @@ int show_networks = 0;
 int show_vbds = 0;
 int repeat_header = 0;
 int show_full_name = 0;
+int dom0_first = -1;
 #define PROMPT_VAL_LEN 80
 const char *prompt = NULL;
 char prompt_val[PROMPT_VAL_LEN];
@@ -240,6 +241,7 @@ static void usage(const char *program)
 	       "-b, --batch	     output in batch mode, no user input accepted\n"
 	       "-i, --iterations     number of iterations before exiting\n"
 	       "-f, --full-name      output the full domain name (not truncated)\n"
+	       "-z, --dom0-first     display dom0 first (ignore sorting)\n"
 	       "\n" XENTOP_BUGSTO,
 	       program);
 	return;
@@ -1162,7 +1164,8 @@ void do_vbd(xenstat_domain *domain)
 static void top(void)
 {
 	xenstat_domain **domains;
-	unsigned int i, num_domains = 0;
+	unsigned int i, num_domains, sort_start, sort_count = 0;
+	int dom0_index = -1;
 
 	/* Now get the node information */
 	if (prev_node != NULL)
@@ -1183,11 +1186,27 @@ static void top(void)
 	if(domains == NULL)
 		fail("Failed to allocate memory\n");
 
-	for (i=0; i < num_domains; i++)
+	for (i=0; i < num_domains; i++) {
 		domains[i] = xenstat_node_domain_by_index(cur_node, i);
+		if ( strcmp(xenstat_domain_name(domains[i]), "Domain-0") == 0 )
+			dom0_index = i;
+	}
+
+	/* Handle dom0 position, not for dom0-less */
+	if ( dom0_first == 1 && dom0_index != -1 ){
+		/* if dom0 is not first in domains, swap it there */
+		if ( dom0_index != 0 ){
+			xenstat_domain *tmp;
+			tmp = domains[0];
+			domains[0] = domains[dom0_index];
+			domains[dom0_index] = tmp;
+		}
+		sort_start = 1;
+		sort_count = 1;
+	}
 
 	/* Sort */
-	qsort(domains, num_domains, sizeof(xenstat_domain *),
+	qsort((domains+sort_start), (num_domains-sort_count), sizeof(xenstat_domain *),
 	      (int(*)(const void *, const void *))compare_domains);
 
 	if(first_domain_index >= num_domains)
@@ -1242,9 +1261,10 @@ int main(int argc, char **argv)
 		{ "batch",	   no_argument,	      NULL, 'b' },
 		{ "iterations",	   required_argument, NULL, 'i' },
 		{ "full-name",     no_argument,       NULL, 'f' },
+		{ "dom0-first",    no_argument,       NULL, 'z' },
 		{ 0, 0, 0, 0 },
 	};
-	const char *sopts = "hVnxrvd:bi:f";
+	const char *sopts = "hVnxrvd:bi:fz";
 
 	if (atexit(cleanup) != 0)
 		fail("Failed to install cleanup handler.\n");
@@ -1286,6 +1306,9 @@ int main(int argc, char **argv)
 		case 'f':
 			show_full_name = 1;
 			break;
+		case 'z':
+			dom0_first = 1;
+			break;
 		}
 	}
 
-- 
2.39.2



From xen-devel-bounces@lists.xenproject.org Wed Jan 31 19:00:39 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 31 Jan 2024 19:00:39 +0000
Received: from list by lists.xenproject.org with outflank-mailman.674154.1048916 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rVFot-0005j6-E9; Wed, 31 Jan 2024 19:00:23 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 674154.1048916; Wed, 31 Jan 2024 19:00:23 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rVFot-0005iz-BV; Wed, 31 Jan 2024 19:00:23 +0000
Received: by outflank-mailman (input) for mailman id 674154;
 Wed, 31 Jan 2024 19:00:21 +0000
Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50]
 helo=se1-gles-flk1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=Prnq=JJ=kernel.org=helgaas@srs-se1.protection.inumbo.net>)
 id 1rVFor-0005is-KY
 for xen-devel@lists.xenproject.org; Wed, 31 Jan 2024 19:00:21 +0000
Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217])
 by se1-gles-flk1.inumbo.com (Halon) with ESMTPS
 id f8e7f8e8-c06a-11ee-98f5-efadbce2ee36;
 Wed, 31 Jan 2024 20:00:17 +0100 (CET)
Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58])
 by dfw.source.kernel.org (Postfix) with ESMTP id 9B52161938;
 Wed, 31 Jan 2024 19:00:16 +0000 (UTC)
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 02AACC433C7;
 Wed, 31 Jan 2024 19:00:15 +0000 (UTC)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: f8e7f8e8-c06a-11ee-98f5-efadbce2ee36
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
	s=k20201202; t=1706727616;
	bh=RZdHkRM3P7+WME/mIEGs7U7h1w50IFiQNWO97QIu6Z4=;
	h=Date:From:To:Cc:Subject:In-Reply-To:From;
	b=SIRJHCGNDMqwVTzRAiLrMLdW+dkYsjK+l0LHXCGERVCfoMi4e2t93JIYx850Va7QT
	 BGvQ2bGkqPTQRCl08dsckmMG7/8X12XOBXbK/ovMyyVPfJWNUVnHe4dp7gy6ykv8CN
	 bbmRt1hMy9UMLho79aKU5ClxkjxcbodVDj4H68/s0G4OCEb5EFsiQ6G/TjsjcS9XwS
	 0JDjS+avkmcF/DbbTUZyvaT110hm0lLajDCvJQVQb3ZcwFKSKf215b+9OYbl+q+WsI
	 O7PdE1/KIhQ2AvACX37JV3KKiBwj+QSeRJjr5YGhPc8ajcZCnRUiVvuGrGs5L+oyeo
	 DyWkc5iLaAjQg==
Date: Wed, 31 Jan 2024 13:00:14 -0600
From: Bjorn Helgaas <helgaas@kernel.org>
To: Roger Pau =?utf-8?B?TW9ubsOp?= <roger.pau@citrix.com>
Cc: "Chen, Jiqian" <Jiqian.Chen@amd.com>,
	"Rafael J . Wysocki" <rafael@kernel.org>,
	Len Brown <lenb@kernel.org>, Juergen Gross <jgross@suse.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>,
	Boris Ostrovsky <boris.ostrovsky@oracle.com>,
	Bjorn Helgaas <bhelgaas@google.com>,
	"xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>,
	"linux-pci@vger.kernel.org" <linux-pci@vger.kernel.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"linux-acpi@vger.kernel.org" <linux-acpi@vger.kernel.org>,
	"Hildebrand, Stewart" <Stewart.Hildebrand@amd.com>,
	"Huang, Ray" <Ray.Huang@amd.com>,
	"Ragiadakou, Xenia" <Xenia.Ragiadakou@amd.com>
Subject: Re: [RFC KERNEL PATCH v4 3/3] PCI/sysfs: Add gsi sysfs for pci_dev
Message-ID: <20240131190014.GA593286@bhelgaas>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <ZboLq6kZhwpUC_c3@macbook>

On Wed, Jan 31, 2024 at 09:58:19AM +0100, Roger Pau Monné wrote:
> On Tue, Jan 30, 2024 at 02:44:03PM -0600, Bjorn Helgaas wrote:
> > On Tue, Jan 30, 2024 at 10:07:36AM +0100, Roger Pau Monné wrote:
> > > On Mon, Jan 29, 2024 at 04:01:13PM -0600, Bjorn Helgaas wrote:
> > > > On Thu, Jan 25, 2024 at 07:17:24AM +0000, Chen, Jiqian wrote:
> > > > > On 2024/1/24 00:02, Bjorn Helgaas wrote:
> > > > > > On Tue, Jan 23, 2024 at 10:13:52AM +0000, Chen, Jiqian wrote:
> > > > > >> On 2024/1/23 07:37, Bjorn Helgaas wrote:
> > > > > >>> On Fri, Jan 05, 2024 at 02:22:17PM +0800, Jiqian Chen wrote:
> > > > > >>>> There is a need for some scenarios to use gsi sysfs.
> > > > > >>>> For example, when xen passthrough a device to dumU, it will
> > > > > >>>> use gsi to map pirq, but currently userspace can't get gsi
> > > > > >>>> number.
> > > > > >>>> So, add gsi sysfs for that and for other potential scenarios.
> > > > > >> ...
> > > > > > 
> > > > > >>> I don't know enough about Xen to know why it needs the GSI in
> > > > > >>> userspace.  Is this passthrough brand new functionality that can't be
> > > > > >>> done today because we don't expose the GSI yet?
> > > > 
> > > > I assume this must be new functionality, i.e., this kind of
> > > > passthrough does not work today, right?
> > > > 
> > > > > >> has ACPI support and is responsible for detecting and controlling
> > > > > >> the hardware, also it performs privileged operations such as the
> > > > > >> creation of normal (unprivileged) domains DomUs. When we give to a
> > > > > >> DomU direct access to a device, we need also to route the physical
> > > > > >> interrupts to the DomU. In order to do so Xen needs to setup and map
> > > > > >> the interrupts appropriately.
> > > > > > 
> > > > > > What kernel interfaces are used for this setup and mapping?
> > > > >
> > > > > For passthrough devices, the setup and mapping of routing physical
> > > > > interrupts to DomU are done on Xen hypervisor side, hypervisor only
> > > > > need userspace to provide the GSI info, see Xen code:
> > > > > xc_physdev_map_pirq require GSI and then will call hypercall to pass
> > > > > GSI into hypervisor and then hypervisor will do the mapping and
> > > > > routing, kernel doesn't do the setup and mapping.
> > > > 
> > > > So we have to expose the GSI to userspace not because userspace itself
> > > > uses it, but so userspace can turn around and pass it back into the
> > > > kernel?
> > > 
> > > No, the point is to pass it back to Xen, which doesn't know the
> > > mapping between GSIs and PCI devices because it can't execute the ACPI
> > > AML resource methods that provide such information.
> > > 
> > > The (Linux) kernel is just a proxy that forwards the hypercalls from
> > > user-space tools into Xen.
> > 
> > But I guess Xen knows how to interpret a GSI even though it doesn't
> > have access to AML?
> 
> On x86 Xen does know how to map a GSI into an IO-APIC pin, in order
> configure the RTE as requested.

IIUC, mapping a GSI to an IO-APIC pin requires information from the
MADT.  So I guess Xen does use the static ACPI tables, but not the AML
_PRT methods that would connect a GSI with a PCI device?

I guess this means Xen would not be able to deal with _MAT methods,
which also contains MADT entries?  I don't know the implications of
this -- maybe it means Xen might not be able to use with hot-added
devices?

The tables (including DSDT and SSDTS that contain the AML) are exposed
to userspace via /sys/firmware/acpi/tables/, but of course that
doesn't mean Xen knows how to interpret the AML, and even if it did,
Xen probably wouldn't be able to *evaluate* it since that could
conflict with the host kernel's use of AML.

Bjorn


From xen-devel-bounces@lists.xenproject.org Wed Jan 31 19:10:55 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 31 Jan 2024 19:10:55 +0000
Received: from list by lists.xenproject.org with outflank-mailman.674158.1048927 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rVFyy-0007wg-Bn; Wed, 31 Jan 2024 19:10:48 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 674158.1048927; Wed, 31 Jan 2024 19:10:48 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rVFyy-0007wZ-8y; Wed, 31 Jan 2024 19:10:48 +0000
Received: by outflank-mailman (input) for mailman id 674158;
 Wed, 31 Jan 2024 19:10:47 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rVFyx-0007tD-7R; Wed, 31 Jan 2024 19:10:47 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rVFyw-0005EJ-Uw; Wed, 31 Jan 2024 19:10:46 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rVFyw-0002XZ-H6; Wed, 31 Jan 2024 19:10:46 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rVFyw-0006Bg-GV; Wed, 31 Jan 2024 19:10:46 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=vs70z+xHza0bVDoq9JJ75yFSkiG4y3T3D/TsHsBjAxw=; b=t2rYARS7wQMJ6MYAslecoNX/uQ
	nIMPtYnEU5/5Y9TP9jTajXxlUlhZhLwVLxbrQ9VkEvC/5ab4YsJEKUrI4LIt2R/FOBDqqCpDu+lDK
	nDPHcZM4W1uwG0M4NQiWFKGYFAptUv9eE+bvVap0qeAJ6fXe86d40MvO94qNPXsQWgWg=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184542-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [ovmf test] 184542: all pass - PUSHED
X-Osstest-Versions-This:
    ovmf=97c3f5b8d27230acfc20f479adea64c348750612
X-Osstest-Versions-That:
    ovmf=40a45b5a2be3bf886ff481d4b538d20624d02589
From: osstest service owner <osstest-admin@xenproject.org>
Date: Wed, 31 Jan 2024 19:10:46 +0000

flight 184542 ovmf real [real]
http://logs.test-lab.xenproject.org/osstest/logs/184542/

Perfect :-)
All tests in this flight passed as required
version targeted for testing:
 ovmf                 97c3f5b8d27230acfc20f479adea64c348750612
baseline version:
 ovmf                 40a45b5a2be3bf886ff481d4b538d20624d02589

Last test of basis   184540  2024-01-31 11:12:46 Z    0 days
Testing same since   184542  2024-01-31 13:12:38 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Abdul Lateef Attar <AbdulLateef.Attar@amd.com>
  Michael D Kinney <michael.d.kinney@intel.com>
  Min Xu <min.m.xu@intel.com>
  Ray Ni <ray.ni@intel.com>
  Tom Lendacky <thomas.lendacky@amd.com>

jobs:
 build-amd64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-amd64-amd64-xl-qemuu-ovmf-amd64                         pass    
 test-amd64-i386-xl-qemuu-ovmf-amd64                          pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Pushing revision :

To xenbits.xen.org:/home/xen/git/osstest/ovmf.git
   40a45b5a2b..97c3f5b8d2  97c3f5b8d27230acfc20f479adea64c348750612 -> xen-tested-master


From xen-devel-bounces@lists.xenproject.org Wed Jan 31 19:43:47 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 31 Jan 2024 19:43:47 +0000
Received: from list by lists.xenproject.org with outflank-mailman.674164.1048937 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rVGUl-0005Db-Te; Wed, 31 Jan 2024 19:43:39 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 674164.1048937; Wed, 31 Jan 2024 19:43:39 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rVGUl-0005DU-PO; Wed, 31 Jan 2024 19:43:39 +0000
Received: by outflank-mailman (input) for mailman id 674164;
 Wed, 31 Jan 2024 19:43:38 +0000
Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254]
 helo=se1-gles-sth1.inumbo.com)
 by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from
 <SRS0=6GWq=JJ=cloud.com=andrew.cooper@srs-se1.protection.inumbo.net>)
 id 1rVGUk-0005DN-R9
 for xen-devel@lists.xenproject.org; Wed, 31 Jan 2024 19:43:38 +0000
Received: from mail-wr1-x433.google.com (mail-wr1-x433.google.com
 [2a00:1450:4864:20::433])
 by se1-gles-sth1.inumbo.com (Halon) with ESMTPS
 id 06d7e220-c071-11ee-8a43-1f161083a0e0;
 Wed, 31 Jan 2024 20:43:37 +0100 (CET)
Received: by mail-wr1-x433.google.com with SMTP id
 ffacd0b85a97d-33ae3cc8a6aso91983f8f.2
 for <xen-devel@lists.xenproject.org>; Wed, 31 Jan 2024 11:43:37 -0800 (PST)
Received: from [10.80.67.30] (default-46-102-197-194.interdsl.co.uk.
 [46.102.197.194]) by smtp.gmail.com with ESMTPSA id
 en8-20020a056000420800b0033940016d6esm10205361wrb.93.2024.01.31.11.43.36
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 31 Jan 2024 11:43:36 -0800 (PST)
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
X-Inumbo-ID: 06d7e220-c071-11ee-8a43-1f161083a0e0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=citrix.com; s=google; t=1706730217; x=1707335017; darn=lists.xenproject.org;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=52O2QyJWuFfL2IsIXIU/w45voWI8oNAVU8X56yO2Hv8=;
        b=KgaXlDzrEtny7k0uOCsTosu13jeQmvIHP9jee6n/2Nj0IqaWz1g1lamc4ndOCS9XCJ
         Fsts6/dRP/rIAEVXM2CkVPH85yT4pdTxaEb6OlWhADTbwt2qREGuFa0S30AIf/Zv0QB+
         X+R8DiW7C3mmrtjdnxsye6GheE1dLfAJfauOI=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1706730217; x=1707335017;
        h=content-transfer-encoding:in-reply-to:autocrypt:from:references:cc
         :to:content-language:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=52O2QyJWuFfL2IsIXIU/w45voWI8oNAVU8X56yO2Hv8=;
        b=oag02WM3+hczs1qAkw8h4kjx5detLeXOfFehZPkCVzlQElIrZi2pfDgg7Jm30w0OuA
         f+BMqlg4YEeI8hLHCJlrNPQTWHLrsVH+HrBIQ9A3ajC3DJxJODC4bFG6BqIn/P2le77l
         rnk6CgJOuY9IXuIF8KhL64oPZm8ynVeQgGS/FgZx6drlRsIMy2uu5he4UxigYS2H+aFq
         HEkiJHgINHc0yS0GdL7f0tSn/infgghpAMj7XFfnDI8Plb0euhyu1lGVvFXegkQrh/Nl
         mMmg/fTv4d9Rp8SE63cAuUCtEGWaHEZBmL3qNSaMbPvjEKaBDcUkh2R+pR/NE9zMfN5V
         5keQ==
X-Gm-Message-State: AOJu0Yykrap3F5Y/cnlSydc+LVkoUCWnnzsbbJXBphUAkO5fgxgCki5b
	8DOMFjsLjTI43Km0KuKUrCYmXe4Y4Ot7tA3yDtpxUO50cupWczo1YMPUzC8MXoc=
X-Google-Smtp-Source: AGHT+IEkW9clUFKzilZxpJsWDU6bdxXb/oM9klOtc5N8VM/0fA1yX6KxqkHDu7dLz6YPZoidG3uC/w==
X-Received: by 2002:a5d:6a8a:0:b0:33a:e8b5:28f3 with SMTP id s10-20020a5d6a8a000000b0033ae8b528f3mr93552wru.24.1706730216884;
        Wed, 31 Jan 2024 11:43:36 -0800 (PST)
X-Forwarded-Encrypted: i=0; AJvYcCUUrEdBRziq//ZHpMIxa2ae9h88V+F+AxrDt76TMBKlXHa+U0JYH5fGRdp8pvfnUT+LiizStgax6NZNW6Gal2V3E+zl8YPInsR2cwVrsCxWrczQuhsy/Qenpeg=
Message-ID: <1b65f692-1112-4c7c-a4f8-116b7116ef53@citrix.com>
Date: Wed, 31 Jan 2024 19:43:36 +0000
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v1 2/2] tools/ocaml: bump minimum version to OCaml 4.05
Content-Language: en-GB
To: Edwin Torok <edwin.torok@cloud.com>
Cc: Anthony PERARD <anthony.perard@citrix.com>,
 Xen-devel <xen-devel@lists.xenproject.org>, Wei Liu <wl@xen.org>
References: <cover.1706697216.git.edwin.torok@cloud.com>
 <11cc8480e6e52d5c2dccc7d8d65e1362c7fba685.1706697216.git.edwin.torok@cloud.com>
 <6cf32d7b-043e-458e-b73b-68899b6303a8@perard>
 <2b912ae7-b102-4d05-9095-9505c869d1d0@citrix.com>
 <9A7DEFE3-5F71-41FF-9F9C-A3863B553FDC@cloud.com>
From: Andrew Cooper <andrew.cooper3@citrix.com>
Autocrypt: addr=andrew.cooper3@citrix.com; keydata=
 xsFNBFLhNn8BEADVhE+Hb8i0GV6mihnnr/uiQQdPF8kUoFzCOPXkf7jQ5sLYeJa0cQi6Penp
 VtiFYznTairnVsN5J+ujSTIb+OlMSJUWV4opS7WVNnxHbFTPYZVQ3erv7NKc2iVizCRZ2Kxn
 srM1oPXWRic8BIAdYOKOloF2300SL/bIpeD+x7h3w9B/qez7nOin5NzkxgFoaUeIal12pXSR
 Q354FKFoy6Vh96gc4VRqte3jw8mPuJQpfws+Pb+swvSf/i1q1+1I4jsRQQh2m6OTADHIqg2E
 ofTYAEh7R5HfPx0EXoEDMdRjOeKn8+vvkAwhviWXTHlG3R1QkbE5M/oywnZ83udJmi+lxjJ5
 YhQ5IzomvJ16H0Bq+TLyVLO/VRksp1VR9HxCzItLNCS8PdpYYz5TC204ViycobYU65WMpzWe
 LFAGn8jSS25XIpqv0Y9k87dLbctKKA14Ifw2kq5OIVu2FuX+3i446JOa2vpCI9GcjCzi3oHV
 e00bzYiHMIl0FICrNJU0Kjho8pdo0m2uxkn6SYEpogAy9pnatUlO+erL4LqFUO7GXSdBRbw5
 gNt25XTLdSFuZtMxkY3tq8MFss5QnjhehCVPEpE6y9ZjI4XB8ad1G4oBHVGK5LMsvg22PfMJ
 ISWFSHoF/B5+lHkCKWkFxZ0gZn33ju5n6/FOdEx4B8cMJt+cWwARAQABzSlBbmRyZXcgQ29v
 cGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPsLBegQTAQgAJAIbAwULCQgHAwUVCgkI
 CwUWAgMBAAIeAQIXgAUCWKD95wIZAQAKCRBlw/kGpdefoHbdD/9AIoR3k6fKl+RFiFpyAhvO
 59ttDFI7nIAnlYngev2XUR3acFElJATHSDO0ju+hqWqAb8kVijXLops0gOfqt3VPZq9cuHlh
 IMDquatGLzAadfFx2eQYIYT+FYuMoPZy/aTUazmJIDVxP7L383grjIkn+7tAv+qeDfE+txL4
 SAm1UHNvmdfgL2/lcmL3xRh7sub3nJilM93RWX1Pe5LBSDXO45uzCGEdst6uSlzYR/MEr+5Z
 JQQ32JV64zwvf/aKaagSQSQMYNX9JFgfZ3TKWC1KJQbX5ssoX/5hNLqxMcZV3TN7kU8I3kjK
 mPec9+1nECOjjJSO/h4P0sBZyIUGfguwzhEeGf4sMCuSEM4xjCnwiBwftR17sr0spYcOpqET
 ZGcAmyYcNjy6CYadNCnfR40vhhWuCfNCBzWnUW0lFoo12wb0YnzoOLjvfD6OL3JjIUJNOmJy
 RCsJ5IA/Iz33RhSVRmROu+TztwuThClw63g7+hoyewv7BemKyuU6FTVhjjW+XUWmS/FzknSi
 dAG+insr0746cTPpSkGl3KAXeWDGJzve7/SBBfyznWCMGaf8E2P1oOdIZRxHgWj0zNr1+ooF
 /PzgLPiCI4OMUttTlEKChgbUTQ+5o0P080JojqfXwbPAyumbaYcQNiH1/xYbJdOFSiBv9rpt
 TQTBLzDKXok86M7BTQRS4TZ/ARAAkgqudHsp+hd82UVkvgnlqZjzz2vyrYfz7bkPtXaGb9H4
 Rfo7mQsEQavEBdWWjbga6eMnDqtu+FC+qeTGYebToxEyp2lKDSoAsvt8w82tIlP/EbmRbDVn
 7bhjBlfRcFjVYw8uVDPptT0TV47vpoCVkTwcyb6OltJrvg/QzV9f07DJswuda1JH3/qvYu0p
 vjPnYvCq4NsqY2XSdAJ02HrdYPFtNyPEntu1n1KK+gJrstjtw7KsZ4ygXYrsm/oCBiVW/OgU
 g/XIlGErkrxe4vQvJyVwg6YH653YTX5hLLUEL1NS4TCo47RP+wi6y+TnuAL36UtK/uFyEuPy
 wwrDVcC4cIFhYSfsO0BumEI65yu7a8aHbGfq2lW251UcoU48Z27ZUUZd2Dr6O/n8poQHbaTd
 6bJJSjzGGHZVbRP9UQ3lkmkmc0+XCHmj5WhwNNYjgbbmML7y0fsJT5RgvefAIFfHBg7fTY/i
 kBEimoUsTEQz+N4hbKwo1hULfVxDJStE4sbPhjbsPCrlXf6W9CxSyQ0qmZ2bXsLQYRj2xqd1
 bpA+1o1j2N4/au1R/uSiUFjewJdT/LX1EklKDcQwpk06Af/N7VZtSfEJeRV04unbsKVXWZAk
 uAJyDDKN99ziC0Wz5kcPyVD1HNf8bgaqGDzrv3TfYjwqayRFcMf7xJaL9xXedMcAEQEAAcLB
 XwQYAQgACQUCUuE2fwIbDAAKCRBlw/kGpdefoG4XEACD1Qf/er8EA7g23HMxYWd3FXHThrVQ
 HgiGdk5Yh632vjOm9L4sd/GCEACVQKjsu98e8o3ysitFlznEns5EAAXEbITrgKWXDDUWGYxd
 pnjj2u+GkVdsOAGk0kxczX6s+VRBhpbBI2PWnOsRJgU2n10PZ3mZD4Xu9kU2IXYmuW+e5KCA
 vTArRUdCrAtIa1k01sPipPPw6dfxx2e5asy21YOytzxuWFfJTGnVxZZSCyLUO83sh6OZhJkk
 b9rxL9wPmpN/t2IPaEKoAc0FTQZS36wAMOXkBh24PQ9gaLJvfPKpNzGD8XWR5HHF0NLIJhgg
 4ZlEXQ2fVp3XrtocHqhu4UZR4koCijgB8sB7Tb0GCpwK+C4UePdFLfhKyRdSXuvY3AHJd4CP
 4JzW0Bzq/WXY3XMOzUTYApGQpnUpdOmuQSfpV9MQO+/jo7r6yPbxT7CwRS5dcQPzUiuHLK9i
 nvjREdh84qycnx0/6dDroYhp0DFv4udxuAvt1h4wGwTPRQZerSm4xaYegEFusyhbZrI0U9tJ
 B8WrhBLXDiYlyJT6zOV2yZFuW47VrLsjYnHwn27hmxTC/7tvG3euCklmkn9Sl9IAKFu29RSo
 d5bD8kMSCYsTqtTfT6W4A3qHGvIDta3ptLYpIAOD2sY3GYq2nf3Bbzx81wZK14JdDDHUX2Rs
 6+ahAA==
In-Reply-To: <9A7DEFE3-5F71-41FF-9F9C-A3863B553FDC@cloud.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

On 31/01/2024 5:34 pm, Edwin Torok wrote:
>
>
>> On 31 Jan 2024, at 17:17, Andrew Cooper <andrew.cooper3@citrix.com>
>> wrote:
>>
>> On 31/01/2024 4:36 pm, Anthony PERARD wrote:
>>> On Wed, Jan 31, 2024 at 10:42:49AM +0000, Edwin Török wrote:
>>>> We tried bumping to 4.06.1 [1] previously, but OSSTest was holding us
>>>> back.
>>>> So bump to OCaml 4.05 instead, which should match the version on
>>>> OSSTest?
>>> Yes, it's looks that's the version osstest can currently use.
>>> I've started an osstest flight with this patch series and your other
>>> ocaml patch series, and so far osstest seems happy with it. The flight
>>> isn't finished but all build jobs succeed, and a lot of the tests jobs
>>> as well.
>>>
>>> So:
>>> Acked-by: Anthony PERARD <anthony.perard@citrix.com>
>>
>> A question, while I think about it.
>>
>> I understand why we want patch 1.  The 4.02 -> 4.03 bump is necessary to
>> also compile with 5.0
>>
>> But why this 4.03 -> 4.05 bump?  There is no other change in this patch.
>
>
> The oldest supported Debian has 4.05, and I can’t find a non-EOL
> distro with 4.03 or 4.04 here: https://repology.org/project/ocaml/versions
> I also have another series (that I haven’t sent out yet) which would
> use Dune 1.x in an attempt to use Dune in a way that works on OSSTest,
> and the oldest release I can test this on is Debian 10.
>
> We could keep the minimum at 4.03, but would anything in the CI
> actually be able to test that?

Nah - that's a good enough reason to go to 4.05.

However, the two patches ought to be folded together, with both parts of
the justification given in one commit message.

Otherwise to anyone doing git blame, you've entirely hidden the 5.0
build fix with something that just looks like 4.03->4.05

I can sort this out on commit.

~Andrew


From xen-devel-bounces@lists.xenproject.org Wed Jan 31 22:32:35 2024
Return-path: <xen-devel-bounces@lists.xenproject.org>
Envelope-to: archives@lists.xen.org
Delivery-date: Wed, 31 Jan 2024 22:32:35 +0000
Received: from list by lists.xenproject.org with outflank-mailman.674173.1048946 (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rVJ81-0004cA-Ta; Wed, 31 Jan 2024 22:32:21 +0000
X-Outflank-Mailman: Message body and most headers restored to incoming version
Received: by outflank-mailman (output) from mailman id 674173.1048946; Wed, 31 Jan 2024 22:32:21 +0000
Received: from localhost ([127.0.0.1] helo=lists.xenproject.org)
	by lists.xenproject.org with esmtp (Exim 4.92)
	(envelope-from <xen-devel-bounces@lists.xenproject.org>)
	id 1rVJ81-0004c3-Qj; Wed, 31 Jan 2024 22:32:21 +0000
Received: by outflank-mailman (input) for mailman id 674173;
 Wed, 31 Jan 2024 22:32:20 +0000
Received: from mail.xenproject.org ([104.130.215.37])
 by lists.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rVJ80-0004bt-Hs; Wed, 31 Jan 2024 22:32:20 +0000
Received: from host146.205.237.98.conversent.net ([205.237.98.146]
 helo=infra.test-lab.xenproject.org)
 by mail.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rVJ80-0000Qn-BA; Wed, 31 Jan 2024 22:32:20 +0000
Received: from [172.16.148.1] (helo=osstest.test-lab.xenproject.org)
 by infra.test-lab.xenproject.org with esmtp (Exim 4.92)
 (envelope-from <osstest-admin@xenproject.org>)
 id 1rVJ7z-0002oK-Pk; Wed, 31 Jan 2024 22:32:19 +0000
Received: from osstest by osstest.test-lab.xenproject.org with local (Exim
 4.92) (envelope-from <osstest-admin@xenproject.org>)
 id 1rVJ7z-0007Yg-P5; Wed, 31 Jan 2024 22:32:19 +0000
X-BeenThere: xen-devel@lists.xenproject.org
List-Id: Xen developer discussion <xen-devel.lists.xenproject.org>
List-Unsubscribe: <https://lists.xenproject.org/mailman/options/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=unsubscribe>
List-Post: <mailto:xen-devel@lists.xenproject.org>
List-Help: <mailto:xen-devel-request@lists.xenproject.org?subject=help>
List-Subscribe: <https://lists.xenproject.org/mailman/listinfo/xen-devel>,
 <mailto:xen-devel-request@lists.xenproject.org?subject=subscribe>
Errors-To: xen-devel-bounces@lists.xenproject.org
Precedence: list
Sender: "Xen-devel" <xen-devel-bounces@lists.xenproject.org>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
	d=xenproject.org; s=20200302mail; h=Date:From:Subject:MIME-Version:
	Content-Transfer-Encoding:Content-Type:Message-ID:To;
	bh=pPe79iqXFww669OKbvRzesGl2s3QejyWUBrHvcWQGAw=; b=qbWTQsZ1+ippoBJIyZ1ewZbRIE
	2kp6f9Bu7g9280QL+b3eWlww4sVRuxruG60Ldu0tD6xXdmpy0T+GCDF5iL2PnO1GVjdbg3Yx9it9T
	ApDJvhYH2UkwbwPCgZsSjRcG+kjR5ea934wly61fApQUeVKPyRl2b0DbJ1zDi8YVbNqQ=;
To: xen-devel@lists.xenproject.org
Message-ID: <osstest-184534-mainreport@xen.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0
Subject: [linux-linus test] 184534: regressions - FAIL
X-Osstest-Failures:
    linux-linus:build-arm64-libvirt:libvirt-build:fail:regression
    linux-linus:test-arm64-arm64-libvirt-raw:build-check(1):blocked:nonblocking
    linux-linus:test-arm64-arm64-libvirt-xsm:build-check(1):blocked:nonblocking
    linux-linus:test-amd64-amd64-xl-qemut-win7-amd64:guest-stop:fail:nonblocking
    linux-linus:test-amd64-amd64-xl-qemuu-win7-amd64:guest-stop:fail:nonblocking
    linux-linus:test-amd64-amd64-xl-qemuu-ws16-amd64:guest-stop:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-qcow2:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-raw:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-xl-qemut-ws16-amd64:guest-stop:fail:nonblocking
    linux-linus:test-amd64-amd64-qemuu-nested-amd:debian-hvm-install/l1/l2:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-xsm:migrate-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-thunderx:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-thunderx:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-credit2:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-credit2:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-xsm:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-xsm:saverestore-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-credit1:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-credit1:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-arndale:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-arndale:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-multivcpu:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-multivcpu:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl:saverestore-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-qcow2:migrate-support-check:fail:nonblocking
    linux-linus:test-amd64-amd64-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-vhd:migrate-support-check:fail:nonblocking
    linux-linus:test-arm64-arm64-xl-vhd:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-qcow2:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt-raw:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-vhd:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-vhd:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-rtds:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-rtds:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-libvirt:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit1:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit1:saverestore-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit2:migrate-support-check:fail:nonblocking
    linux-linus:test-armhf-armhf-xl-credit2:saverestore-support-check:fail:nonblocking
X-Osstest-Versions-This:
    linux=2a6526c4f389bb741e511be11721b3d1cbf1034a
X-Osstest-Versions-That:
    linux=861c0981648f5b64c86fd028ee622096eb7af05a
From: osstest service owner <osstest-admin@xenproject.org>
Date: Wed, 31 Jan 2024 22:32:19 +0000

flight 184534 linux-linus real [real]
http://logs.test-lab.xenproject.org/osstest/logs/184534/

Regressions :-(

Tests which did not succeed and are blocking,
including tests which could not be run:
 build-arm64-libvirt           6 libvirt-build            fail REGR. vs. 184525

Tests which did not succeed, but are not blocking:
 test-arm64-arm64-libvirt-raw  1 build-check(1)               blocked  n/a
 test-arm64-arm64-libvirt-xsm  1 build-check(1)               blocked  n/a
 test-amd64-amd64-xl-qemut-win7-amd64 19 guest-stop            fail like 184525
 test-amd64-amd64-xl-qemuu-win7-amd64 19 guest-stop            fail like 184525
 test-amd64-amd64-xl-qemuu-ws16-amd64 19 guest-stop            fail like 184525
 test-armhf-armhf-libvirt-qcow2 15 saverestore-support-check   fail like 184525
 test-armhf-armhf-libvirt-raw 15 saverestore-support-check    fail  like 184525
 test-armhf-armhf-libvirt     16 saverestore-support-check    fail  like 184525
 test-amd64-amd64-xl-qemut-ws16-amd64 19 guest-stop            fail like 184525
 test-amd64-amd64-qemuu-nested-amd 20 debian-hvm-install/l1/l2 fail like 184525
 test-amd64-amd64-libvirt-xsm 15 migrate-support-check        fail   never pass
 test-amd64-amd64-libvirt     15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl          15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl          16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-thunderx 15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-thunderx 16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-credit2  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit2  16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-xsm      15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-xsm      16 saverestore-support-check    fail   never pass
 test-arm64-arm64-xl-credit1  15 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-credit1  16 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm 13 migrate-support-check fail never pass
 test-armhf-armhf-xl-arndale  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-arndale  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-multivcpu 15 migrate-support-check        fail  never pass
 test-armhf-armhf-xl-multivcpu 16 saverestore-support-check    fail  never pass
 test-armhf-armhf-xl          15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl          16 saverestore-support-check    fail   never pass
 test-amd64-amd64-libvirt-qcow2 14 migrate-support-check        fail never pass
 test-amd64-amd64-libvirt-raw 14 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-vhd      14 migrate-support-check        fail   never pass
 test-arm64-arm64-xl-vhd      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt-qcow2 14 migrate-support-check        fail never pass
 test-armhf-armhf-libvirt-raw 14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      14 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-vhd      15 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-rtds     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-rtds     16 saverestore-support-check    fail   never pass
 test-armhf-armhf-libvirt     15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit1  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit1  16 saverestore-support-check    fail   never pass
 test-armhf-armhf-xl-credit2  15 migrate-support-check        fail   never pass
 test-armhf-armhf-xl-credit2  16 saverestore-support-check    fail   never pass

version targeted for testing:
 linux                2a6526c4f389bb741e511be11721b3d1cbf1034a
baseline version:
 linux                861c0981648f5b64c86fd028ee622096eb7af05a

Last test of basis   184525  2024-01-30 04:10:43 Z    1 days
Testing same since   184534  2024-01-30 23:45:05 Z    0 days    1 attempts

------------------------------------------------------------
People who touched revisions under test:
  Alexander Gordeev <agordeev@linux.ibm.com>
  Anders Roxell <anders.roxell@linaro.org>
  Arthur Grillo <arthurgrillo@riseup.net>
  Dan Carpenter <dan.carpenter@linaro.org>
  David Gow <davidgow@google.com>
  Joe Lawrence <joe.lawrence@redhat.com>
  Kees Cook <keescook@chromium.org>
  Linus Torvalds <torvalds@linux-foundation.org>
  Marco Pagani <marpagan@redhat.com>
  Marcos Paulo de Souza <mpdesouza@suse.com>
  Mark Brown <broonie@kernel.org>
  Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
  Miroslav Benes <mbenes@suse.cz>
  Rae Moar <rmoar@google.com>
  Richard Fitzgerald <rf@opensource.cirrus.com>
  Shuah Khan <skhan@linuxfoundation.org>

jobs:
 build-amd64-xsm                                              pass    
 build-arm64-xsm                                              pass    
 build-i386-xsm                                               pass    
 build-amd64                                                  pass    
 build-arm64                                                  pass    
 build-armhf                                                  pass    
 build-i386                                                   pass    
 build-amd64-libvirt                                          pass    
 build-arm64-libvirt                                          fail    
 build-armhf-libvirt                                          pass    
 build-i386-libvirt                                           pass    
 build-amd64-pvops                                            pass    
 build-arm64-pvops                                            pass    
 build-armhf-pvops                                            pass    
 build-i386-pvops                                             pass    
 test-amd64-amd64-xl                                          pass    
 test-amd64-coresched-amd64-xl                                pass    
 test-arm64-arm64-xl                                          pass    
 test-armhf-armhf-xl                                          pass    
 test-amd64-amd64-libvirt-qemuu-debianhvm-amd64-xsm           pass    
 test-amd64-amd64-xl-qemut-stubdom-debianhvm-amd64-xsm        pass    
 test-amd64-amd64-xl-qemut-debianhvm-i386-xsm                 pass    
 test-amd64-amd64-xl-qemuu-debianhvm-i386-xsm                 pass    
 test-amd64-amd64-libvirt-xsm                                 pass    
 test-arm64-arm64-libvirt-xsm                                 blocked 
 test-amd64-amd64-xl-xsm                                      pass    
 test-arm64-arm64-xl-xsm                                      pass    
 test-amd64-amd64-qemuu-nested-amd                            fail    
 test-amd64-amd64-xl-pvhv2-amd                                pass    
 test-amd64-amd64-dom0pvh-xl-amd                              pass    
 test-amd64-amd64-xl-qemut-debianhvm-amd64                    pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64                    pass    
 test-amd64-amd64-freebsd11-amd64                             pass    
 test-amd64-amd64-freebsd12-amd64                             pass    
 test-amd64-amd64-xl-qemuu-ovmf-amd64                         pass    
 test-amd64-amd64-xl-qemut-win7-amd64                         fail    
 test-amd64-amd64-xl-qemuu-win7-amd64                         fail    
 test-amd64-amd64-xl-qemut-ws16-amd64                         fail    
 test-amd64-amd64-xl-qemuu-ws16-amd64                         fail    
 test-armhf-armhf-xl-arndale                                  pass    
 test-amd64-amd64-examine-bios                                pass    
 test-amd64-amd64-xl-credit1                                  pass    
 test-arm64-arm64-xl-credit1                                  pass    
 test-armhf-armhf-xl-credit1                                  pass    
 test-amd64-amd64-xl-credit2                                  pass    
 test-arm64-arm64-xl-credit2                                  pass    
 test-armhf-armhf-xl-credit2                                  pass    
 test-amd64-amd64-xl-qemuu-dmrestrict-amd64-dmrestrict        pass    
 test-amd64-amd64-examine                                     pass    
 test-arm64-arm64-examine                                     pass    
 test-armhf-armhf-examine                                     pass    
 test-amd64-amd64-qemuu-nested-intel                          pass    
 test-amd64-amd64-xl-pvhv2-intel                              pass    
 test-amd64-amd64-dom0pvh-xl-intel                            pass    
 test-amd64-amd64-libvirt                                     pass    
 test-armhf-armhf-libvirt                                     pass    
 test-amd64-amd64-xl-multivcpu                                pass    
 test-armhf-armhf-xl-multivcpu                                pass    
 test-amd64-amd64-pair                                        pass    
 test-amd64-amd64-libvirt-pair                                pass    
 test-amd64-amd64-xl-pvshim                                   pass    
 test-amd64-amd64-pygrub                                      pass    
 test-amd64-amd64-libvirt-qcow2                               pass    
 test-armhf-armhf-libvirt-qcow2                               pass    
 test-amd64-amd64-libvirt-raw                                 pass    
 test-arm64-arm64-libvirt-raw                                 blocked 
 test-armhf-armhf-libvirt-raw                                 pass    
 test-amd64-amd64-xl-rtds                                     pass    
 test-armhf-armhf-xl-rtds                                     pass    
 test-amd64-amd64-xl-qemuu-debianhvm-amd64-shadow             pass    
 test-amd64-amd64-xl-shadow                                   pass    
 test-arm64-arm64-xl-thunderx                                 pass    
 test-amd64-amd64-examine-uefi                                pass    
 test-amd64-amd64-xl-vhd                                      pass    
 test-arm64-arm64-xl-vhd                                      pass    
 test-armhf-armhf-xl-vhd                                      pass    


------------------------------------------------------------
sg-report-flight on osstest.test-lab.xenproject.org
logs: /home/logs/logs
images: /home/logs/images

Logs, config files, etc. are available at
    http://logs.test-lab.xenproject.org/osstest/logs

Explanation of these reports, and of osstest in general, is at
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README.email;hb=master
    http://xenbits.xen.org/gitweb/?p=osstest.git;a=blob;f=README;hb=master

Test harness code can be found at
    http://xenbits.xen.org/gitweb?p=osstest.git;a=summary


Not pushing.

------------------------------------------------------------
commit 2a6526c4f389bb741e511be11721b3d1cbf1034a
Merge: d1d873a9bfac 1a9f2c776d14
Author: Linus Torvalds <torvalds@linux-foundation.org>
Date:   Tue Jan 30 15:12:58 2024 -0800

    Merge tag 'linux_kselftest-kunit-fixes-6.8-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/shuah/linux-kselftest
    
    Pull kunit fixes from Shuah Khan:
     "NULL vs IS_ERR() bug fixes, documentation update, MAINTAINERS file
      update to add Rae Moar as a reviewer, and a fix to run test suites
      only after module initialization completes"
    
    * tag 'linux_kselftest-kunit-fixes-6.8-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/shuah/linux-kselftest:
      Documentation: KUnit: Update the instructions on how to test static functions
      kunit: run test suites only after module initialization completes
      MAINTAINERS: kunit: Add Rae Moar as a reviewer
      kunit: device: Fix a NULL vs IS_ERR() check in init()
      kunit: Fix a NULL vs IS_ERR() bug

commit d1d873a9bfac44a9a455d2ec47b85ea66f7888b9
Merge: 53ed2ac8fc1d b54761f6e977
Author: Linus Torvalds <torvalds@linux-foundation.org>
Date:   Tue Jan 30 15:10:17 2024 -0800

    Merge tag 'linux_kselftest-fixes-6.8-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/shuah/linux-kselftest
    
    Pull kselftest fixes from Shuah Khan:
     "Three fixes to livepatch, rseq, and seccomp tests"
    
    * tag 'linux_kselftest-fixes-6.8-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/shuah/linux-kselftest:
      kselftest/seccomp: Report each expectation we assert as a KTAP test
      kselftest/seccomp: Use kselftest output functions for benchmark
      selftests/livepatch: fix and refactor new dmesg message code
      selftests/rseq: Do not skip !allowed_cpus for mm_cid

commit 53ed2ac8fc1de6658aadae5714627ac99b9dddb0
Author: Linus Torvalds <torvalds@linux-foundation.org>
Date:   Tue Jan 30 11:34:49 2024 -0800

    soc: apple: mailbox: error pointers are negative integers
    
    In an entirely unrelated discussion where I pointed out a stupid thinko
    of mine, Rasmus piped up and noted that that obvious mistake already
    existed elsewhere in the kernel tree.
    
    An "error pointer" is the negative error value encoded as a pointer,
    making the whole "return error or valid pointer" use-case simple and
    straightforward.  We use it all over the kernel.
    
    But the key here is that errors are _negative_ error numbers, not the
    horrid UNIX user-level model of "-1 and the value of 'errno'".
    
    The Apple mailbox driver used the positive error values, and thus just
    returned invalid normal pointers instead of actual errors.
    
    Of course, the reason nobody ever noticed is that the errors presumably
    never actually happen, so this is fixing a conceptual bug rather than an
    actual one.
    
    Reported-by: Rasmus Villemoes <rasmus.villemoes@prevas.dk>
    Link: https://lore.kernel.org/all/5c30afe0-f9fb-45d5-9333-dd914a1ea93a@prevas.dk/
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>

commit b54761f6e9773350c0d1fb8e1e5aacaba7769d0f
Author: Mark Brown <broonie@kernel.org>
Date:   Wed Jan 24 13:00:19 2024 +0000

    kselftest/seccomp: Report each expectation we assert as a KTAP test
    
    The seccomp benchmark test makes a number of checks on the performance it
    measures and logs them to the output but does so in a custom format which
    none of the automated test runners understand meaning that the chances that
    anyone is paying attention are slim. Let's additionally log each result in
    KTAP format so that automated systems parsing the test output will see each
    comparison as a test case. The original logs are left in place since they
    provide the actual numbers for analysis.
    
    As part of this rework the flow for the main program so that when we skip
    tests we still log all the tests we skip, this is because the standard KTAP
    headers and footers include counts of the number of expected and run tests.
    
    Tested-by: Anders Roxell <anders.roxell@linaro.org>
    Acked-by: Kees Cook <keescook@chromium.org>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Shuah Khan <skhan@linuxfoundation.org>

commit 5820cfee443f8a90ea3eb9f99f57f2049a4a93c3
Author: Mark Brown <broonie@kernel.org>
Date:   Wed Jan 24 13:00:18 2024 +0000

    kselftest/seccomp: Use kselftest output functions for benchmark
    
    In preparation for trying to output the test results themselves in TAP
    format rework all the prints in the benchmark to use the kselftest output
    functions. The uses of system() all produce single line output so we can
    avoid having to deal with fully managing the child process and continue to
    use system() by simply printing an empty message before we invoke system().
    We also leave one printf() used to complete a line of output in place.
    
    Tested-by: Anders Roxell <anders.roxell@linaro.org>
    Acked-by: Kees Cook <keescook@chromium.org>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Shuah Khan <skhan@linuxfoundation.org>

commit f1fea725cc93fcc3c5af9a2af63ffdc40dd2259e
Author: Joe Lawrence <joe.lawrence@redhat.com>
Date:   Wed Dec 20 10:11:51 2023 -0500

    selftests/livepatch: fix and refactor new dmesg message code
    
    The livepatching kselftests rely on comparing expected vs. observed
    dmesg output.  After each test, new dmesg entries are determined by the
    'comm' utility comparing a saved, pre-test copy of dmesg to post-test
    dmesg output.
    
    Alexander reports that the 'comm --nocheck-order -13' invocation used by
    the tests can be confused when dmesg entry timestamps vary in magnitude
    (ie, "[   98.820331]" vs. "[  100.031067]"), in which case, additional
    messages are reported as new.  The unexpected entries then spoil the
    test results.
    
    Instead of relying on 'comm' or 'diff' to determine new testing dmesg
    entries, refactor the code:
    
      - pre-test  : log a unique canary dmesg entry
      - test      : run tests, log messages
      - post-test : filter dmesg starting from pre-test message
    
    Reported-by: Alexander Gordeev <agordeev@linux.ibm.com>
    Closes: https://lore.kernel.org/live-patching/ZYAimyPYhxVA9wKg@li-008a6a4c-3549-11b2-a85c-c5cc2836eea2.ibm.com/
    Signed-off-by: Joe Lawrence <joe.lawrence@redhat.com>
    Acked-by: Alexander Gordeev <agordeev@linux.ibm.com>
    Tested-by: Marcos Paulo de Souza <mpdesouza@suse.com>
    Reviewed-by: Marcos Paulo de Souza <mpdesouza@suse.com>
    Acked-by: Miroslav Benes <mbenes@suse.cz>
    Signed-off-by: Shuah Khan <skhan@linuxfoundation.org>

commit d53271c05965b4469c57a18c66585075df81c504
Author: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Date:   Thu Jan 11 10:49:22 2024 -0500

    selftests/rseq: Do not skip !allowed_cpus for mm_cid
    
    Indexing with mm_cid is incompatible with skipping disallowed cpumask,
    because concurrency IDs are based on a virtual ID allocation which is
    unrelated to the physical CPU mask.
    
    These issues can be reproduced by running the rseq selftests under a
    taskset which excludes CPU 0, e.g.
    
      taskset -c 10-20 ./run_param_test.sh
    
    Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
    Cc: Shuah Khan <shuah@kernel.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: "Paul E. McKenney" <paulmck@kernel.org>
    Cc: Boqun Feng <boqun.feng@gmail.com>
    Signed-off-by: Shuah Khan <skhan@linuxfoundation.org>

commit 1a9f2c776d1416c4ea6cb0d0b9917778c41a1a7d
Author: Arthur Grillo <arthurgrillo@riseup.net>
Date:   Wed Jan 10 14:39:28 2024 -0300

    Documentation: KUnit: Update the instructions on how to test static functions
    
    Now that we have the VISIBLE_IF_KUNIT and EXPORT_SYMBOL_IF_KUNIT macros,
    update the instructions to recommend this way of testing static
    functions.
    
    Signed-off-by: Arthur Grillo <arthurgrillo@riseup.net>
    Reviewed-by: David Gow <davidgow@google.com>
    Signed-off-by: Shuah Khan <skhan@linuxfoundation.org>

commit a1af6a2bfa0cb46d70b7df5352993e750da6c79b
Author: Marco Pagani <marpagan@redhat.com>
Date:   Wed Jan 10 16:59:47 2024 +0100

    kunit: run test suites only after module initialization completes
    
    Commit 2810c1e99867 ("kunit: Fix wild-memory-access bug in
    kunit_free_suite_set()") fixed a wild-memory-access bug that could have
    happened during the loading phase of test suites built and executed as
    loadable modules. However, it also introduced a problematic side effect
    that causes test suites modules to crash when they attempt to register
    fake devices.
    
    When a module is loaded, it traverses the MODULE_STATE_UNFORMED and
    MODULE_STATE_COMING states before reaching the normal operating state
    MODULE_STATE_LIVE. Finally, when the module is removed, it moves to
    MODULE_STATE_GOING before being released. However, if the loading
    function load_module() fails between complete_formation() and
    do_init_module(), the module goes directly from MODULE_STATE_COMING to
    MODULE_STATE_GOING without passing through MODULE_STATE_LIVE.
    
    This behavior was causing kunit_module_exit() to be called without
    having first executed kunit_module_init(). Since kunit_module_exit() is
    responsible for freeing the memory allocated by kunit_module_init()
    through kunit_filter_suites(), this behavior was resulting in a
    wild-memory-access bug.
    
    Commit 2810c1e99867 ("kunit: Fix wild-memory-access bug in
    kunit_free_suite_set()") fixed this issue by running the tests when the
    module is still in MODULE_STATE_COMING. However, modules in that state
    are not fully initialized, lacking sysfs kobjects. Therefore, if a test
    module attempts to register a fake device, it will inevitably crash.
    
    This patch proposes a different approach to fix the original
    wild-memory-access bug while restoring the normal module execution flow
    by making kunit_module_exit() able to detect if kunit_module_init() has
    previously initialized the tests suite set. In this way, test modules
    can once again register fake devices without crashing.
    
    This behavior is achieved by checking whether mod->kunit_suites is a
    virtual or direct mapping address. If it is a virtual address, then
    kunit_module_init() has allocated the suite_set in kunit_filter_suites()
    using kmalloc_array(). On the contrary, if mod->kunit_suites is still
    pointing to the original address that was set when looking up the
    .kunit_test_suites section of the module, then the loading phase has
    failed and there's no memory to be freed.
    
    v4:
    - rebased on 6.8
    - noted that kunit_filter_suites() must return a virtual address
    v3:
    - add a comment to clarify why the start address is checked
    v2:
    - add include <linux/mm.h>
    
    Fixes: 2810c1e99867 ("kunit: Fix wild-memory-access bug in kunit_free_suite_set()")
    Reviewed-by: David Gow <davidgow@google.com>
    Tested-by: Rae Moar <rmoar@google.com>
    Tested-by: Richard Fitzgerald <rf@opensource.cirrus.com>
    Reviewed-by: Javier Martinez Canillas <javierm@redhat.com>
    Signed-off-by: Marco Pagani <marpagan@redhat.com>
    Signed-off-by: Shuah Khan <skhan@linuxfoundation.org>

commit 57e39086fb868a84f772cf097004f4715d8aaccb
Author: David Gow <davidgow@google.com>
Date:   Fri Jan 12 07:49:47 2024 +0800

    MAINTAINERS: kunit: Add Rae Moar as a reviewer
    
    Rae has been shouldering a lot of the KUnit review burden for the last
    year, and will continue to do so in the future. Thanks!
    
    Signed-off-by: David Gow <davidgow@google.com>
    Reviewed-by: Rae Moar <rmoar@google.com>
    Signed-off-by: Shuah Khan <skhan@linuxfoundation.org>

commit 083974ebb8fc65978d6cacd1bcfe9158d6234b98
Author: Dan Carpenter <dan.carpenter@linaro.org>
Date:   Wed Jan 10 21:55:14 2024 +0300

    kunit: device: Fix a NULL vs IS_ERR() check in init()
    
    The root_device_register() function does not return NULL, it returns
    error pointers.  Fix the check to match.
    
    Fixes: d03c720e03bd ("kunit: Add APIs for managing devices")
    Signed-off-by: Dan Carpenter <dan.carpenter@linaro.org>
    Reviewed-by: Rae Moar <rmoar@google.com>
    Reviewed-by: David Gow <davidgow@google.com>
    Signed-off-by: Shuah Khan <skhan@linuxfoundation.org>

commit ed1a72fb0d646c983c85b62144fb1d134a8edb71
Author: Dan Carpenter <dan.carpenter@linaro.org>
Date:   Wed Jan 10 21:55:22 2024 +0300

    kunit: Fix a NULL vs IS_ERR() bug
    
    The kunit_device_register() function doesn't return NULL, it returns
    error pointers.  Change the KUNIT_ASSERT_NOT_NULL() to check for
    ERR_OR_NULL().
    
    Fixes: d03c720e03bd ("kunit: Add APIs for managing devices")
    Signed-off-by: Dan Carpenter <dan.carpenter@linaro.org>
    Reviewed-by: Rae Moar <rmoar@google.com>
    Reviewed-by: David Gow <davidgow@google.com>
    Signed-off-by: Shuah Khan <skhan@linuxfoundation.org>


